Documente Academic
Documente Profesional
Documente Cultură
CALCULATOARELOR
Motivatie
Pentru ce studiem arhitectura calculatoarelor?
"Calculatorul se gaseste in centrul tuturor sistemelor de calcul. Fara el,
majoritatea disciplinelor de calcul actuale nu ar fi decat ramuri ale matematicilor
teoretice. Pentru a fi astazi un profesionist al calculului, nu trebuie in nici un caz sa
consideri calculatorul ca o simpla cutie neagra, care executa programele prin
magie.
Toti studentii care abordeaza aspecte ale calculului - inclusiv cel ingineresc trebuie sa cunoasca in detaliu un sistem informatic si componentele sale
functionale, cu toate caracteristicile, performantele si interactiunile lor specifice.
Implicatiile practice ale acestor cunostinte sunt foarte importante.
Este necesar ca studentii sa inteleaga arhitectura calculatorului pentru ca
ei sa poata sa-si structureze un program astfel incat el sa functioneze cat mai
eficient pe o masina reala.
Alegand sa foloseasca un anumit sistem, utilizatorul trebuie sa poata fi in
masura de a intelege diferentele intre diferitele sale componente, cum a fi - de
exemplu - frecventa ceasului UC in raport cu capacitatea memoriei interne"
Continutul cursului
Arhitectura sau organizare
Arhitectura - este suma atributelor vizibile pentru programator:
- setul de instructiuni, numarul de biti utilizati pentru reprezentarea datelor,
mecanismele de I/E, tehnicile de adresare;
Continutul cursului
Functie sau structura
Structura reprezinta maniera prin care sunt conectate componentele.
Functia evidentiaza rolul diferitelor componente care sunt parti ale unei
structuri
Prelegerea 2
Sistemul de memorie: ierarhia memoriei, memoriile cache, memoria virtuala,
gestiunea memoriei.
Prelegerea 3
Tehnica pipeline (canalul de instructiuni): organizarea unitatilor pipeline, hazardurile
in pipeline, reducerea penalitatilor de salt, strategii pentru predictia salturilor.
Prelegerea 4
Arhitecturi RISC: analiza executiei instructiunilor din codul provenit din programele
scrise in limbaje de nivel inalt, compilatoare pentru arhitecturile RISC, caracteristicile
principale ale arhitecturilor RISC, o comparatie RISC-CISC.
Prelegerile 7 et 8
Arhitecturi VLIW: conceptul VLIW - avantaje si limite, compilatoare pentru arhitecturi
VLIW, arhitectura Merced (Itanium).
Prelegerile 9, 10,11
Arhitecturi pentru calculul paralel: programe paralele, performantele
calculatoarelor paralele, clasificarea arhitecturilor de calculatoare, retele de procesoare,
multiprocesoare, multicomputere, procesoare vectoriale, concordanta cache in
arhitecturile paralele.
Prelegerea 12
Arhitecturi de joasa putere: consumul de energie in circuitele CMOS, baza
conceptuala pentru joasa putere, procesorul Crusoe.
Calculatorul electronic
Chestiuni fundamentale:
1. Ce este un calculator/sistem de calcul?
2. Arhitectura Von Neumann
3. Aplicatii specifice sau uz universal
4. Reprezentarea datelor si a instructiunilor
5. Executia unei instructiuni
6. Unitatea de comanda
7. Sistemul informatic
8. Memoria principala si secundara
Ce este un calculator?
Principii de implementare
Calculator cu program extern
Input Dev
Output
Dev
Arithmetic
Unit
Temporary
Storage
Sequencer
Calculator cu program
memorat
CPU
Input Dev
Output
Dev
Memory
Unit
Arithmetic
Logic Unit
Control
Unit
Calculator
cu program extern
Capacitate redusa
Stocare temporara pentru operanzi si rezultate
Lipsa memoriei principale pentru stocarea
programului si a datelor. Consecinte:
- Datele nu pot fi reutilizate. Ele trebuie citite de
fiecare data.
- Anumite operatii nu pot lucra cu date diferite.
Instructiunile respective trebuie citite de fiecare data.
- Nu se pot executa instructiuni de salt absolut sau
conditionat.
- Subprogramele sunt imposibile sau dificil de
implementat
Calculator
cu program memorat
Introduce memoria principala de tip RAM
RAM (Random Access Memory)
Functia principala a unei UC este executia instructiunilor, citite din memoria centrala.
Instructiunile indica UC ce operatii de baza trebuie sa execute (o operatie aritmetica sau logica, un
transfer de date, etc.).
Instructiunile sunt decodificate de CU (unitatea de comanda - UCd), care activeaza diferite
componente pentru actiuni specifice.
Ansamblul de registre al UC reprezinta dispozitive de memorare temporare, utilizate pentru stocarea
datelor utilizate temporar sau a rezultatelor intermediare.
Reprezentarea datelor
In interiorul calculatorului, datele si informatiile de comanda (instructiunile)
sunt reprezentate in format binar (sau digital, numeric), prin cele doua
cifre: " 0 " et " 1 ".
Cele doua simboluri de baza sunt reprezentate prin semnale electrice.
Pentru datele numerice reprezentate in sistem binar, valorile pozitionale
sunt puteri ale lui 2:
100101 = 1*2 **0 + 0*2 **1 + 1*2 **2 + 0*2 **3 + 0*2 **4 + 1*2 **5
10110 = 0*2 **0 + 1*2 **1 + 1*2 **2 + 0*2 **3 + 1*2 **4
Numerele binare sunt adunate, scazute inmultite sau impartite direct de catre ALU; nu
este necesara conversia preliminara a acestora in numere zecimale.
Instructiunile masina
UC poate executa numai instructiuni masina.
Fiecare calculator are un set de instructiuni specifice, care pot fi
recunoscute si executate de unitatea sa centrala.
O instructiune masina este reprezentata printr-o secventa de biti.
Aceasta secventa trebuie sa defineasca:
- ceea ce trebuie facut (codul operatiei);
-cui i se aplica operatia (adrese operanzi sursa);
- unde merg rezultatele (adresa rezultatului);
- cum se continua programul dupa terminarea operatiei.
Instructiunile masina
Reprezentarea unei instructiuni masina:
- codul binar este divizat in campuri, organizate in conformitate cu
formatului instructiunii;
- fiecare camp contine o specificatie de instructiune (codop, adrese
operanzi etc.);
ctre UCd:
Sistemul de calcul
Trasaturi tipice:
- memoria centrala este rapida si de talie redusa;
- memoria secundara este relativ lenta si cu o dimensiune foarte
mare.
Caracteristicile cele mai importante ale unei memorii sunt viteza,
talia (dimensiunea) si costul - ele sunt principalele constrangeri impuse
tehnologiilor untilizate pentru implementare.
ta = timpul (n [ms] sau [ns]) de cnd o unitate master lanseaz o comand pn cnd
[cuvinte/sec]
Obs: tc ta , de obicei inecuaia este strict; in general t a este mai restrictiv ca tc pentru c
timpul ct unitatea master atept dup lansarea unei comenzi ctre unitatea de memorie
este un timp mort pentru unitatea master. n intervalul de timp rmas t c-ta , unitatea master
poate lucra n paralel cu unitatea de memorie (poate iniia un nou acces la o alt unitate de
memorie).
Dac locaiile de memorie pot fi accesate n orice ordine, iar timpul de acces este
independent de locaia accesat memoria se numete memorie cu acces aleator
(ex. toate CI de memorie fie ele ROM, RAM, SRAM, DRAM).
Dac locaiile de memorie pot fi accesate doar ntr-o secven predeterminat, iar
timpii de acces nu mai sunt independeni de locaia accesat, memoria se numete
Memoria principala
Memoria principala
Tehnologia cea mai larg raspandita pentru implementarea memoriilor
centrale este memoria cu semiconductori.
Tipul comun de memorie cu semiconductori este memoria cu acces
selectiv (Random Acces Memory - RAM).
Informatia stocata intr-o memorie cu semiconductori de tip RAM se
pierde la intreruperea alimentarii cu energie electrica.
Memoria secundara
Harddisk (HDD - discul dur):
Datele sunt inregistrate pe suprafata unui disc metalic rigid, acoperit cu
material magnetic.
Discurile si circuitele de comanda sunt de obicei montate impreuna in interiorul unei incinte
inchisa ermetic (pentru protectia discurilor contra factorilor poluanti, cum ar fi particulele de
praf sau fum).
Mai multe discuri (platane) sunt montate de obicei pe un ax de antrenare comun. Fiecare
platan are propriile sale capete de citire/scriere (cate unul pentru fiecare fata).
Caracteristici principale:
- acces direct;
- acces rapid: timpi de pozitionare - 10 ms (? actualizare), debit de transfer 5 MB/s (? actualizare)
Memoria secundara
Memoriile optice
Discul compact (CD-ROM): cu ajutorul unui fascicul laser de mare putere, pe suprafata discului
sunt imprimate santuri microscopice care inregistreaza informatia numerica. Cand un alt fascicul
laser, de mica putere, baleiaza suprafata, intensitatea luminii reflectate se modifica la intalnirea unui
sant. Modificarea este detectata de un element fotosensibil si este convertita in semnal numeric.
Caracteristici principale:.
- capacitate mare de stocare (sute MB cativa GB);
- demontabil;
- inalterabil;
- timp de acces mare (pana la 1/2 secunda).
Discul CD-WORM (Write-Once Read-Many): pentru imprimarea modelului retelei de santuri se
utilizeaza un fascicul laser de intensitate modesta, plasata in unitatea de comanda a discului.
- recomandat pentru arhivarea unor volume mari de date.
Resursele de intrare/iesire
Dispozitivele de intrare si de iesire furnizeaza utilizatorilor mijloace de
acces la calculator.
Anumite dispozitive de I/E functioneaza de asemenea ca interfete ale
sistemului de calcul cu alte sisteme. O astfel de interfata se compune
in mod obisnuit din convertoare de semnale (analog-numerice sau
numeric-analogice)
Advanced Architectures
Sa facem calculatoare
mai bune
Memoria principala
Circuite mai rapide
Bank-uri de memorie
Memorii cache
Otimizarea fluxurilor de I/E
(eliminarea gap-urilor):
Procesorul
Sistemul de memorie
Sistemul de I/E
System Parameters
CPU
ALU
Instruction Interpreter
Instruction
Registers Execution Unit
[E/B Ratio]
[C/E Ratio]
Memory
Program/data
Work Area
I/O Buffer
Capacity(C): [MB]
Cycle Time
I/O Bus
Data Rate(B)
[MB/Sec]
Secondary Storage
Files
Program Library
Capacity: [MB]
Memory
Bandwidth(BW): [MB/Sec]
Memory Bus
Parametrii sistem
CPU unitatea centrala
Viteza de executie a instructiunilor - MIPS/MFLOPS
MIPS poate fi inselatoare:
8-bit 1 MIPS
versus
32-bit 1 MIPS
Memoria
Latimea de banda (bandwich - BW) = cicli/sec x bytes/acces
Pentru un ciclu de acces dat, dublarea BW implica dublarea
dimensiunii cuvantului de memorie
Memoria secundara
Rata de transfer - nu reprezinta complet performanta dispozitivului
Tehnologia, latenta, timpul de pozitionare etc.
Concluzie
Pentru a creste viteza de executie MIPS (E), trebuie crescuta corespunzator
si capacitatea memoriei (C) raportul C/E trebuie sa ramana constant!
Ex: Pentru a face de 10 ori mai rapid un sistem cu 1MIPS CPU si 1MB memorie, acesta va
trebui sa aiba 10MB memorie (la 10 MIPS!)
Nevoia de a mari C
Utilizarea multiprogramarii pentru a reduce timpii de asteptare ai CPU pentru
efectuarea acceselor la memorie
Nevoia de a mari C
Concluzie
Pentru a obtine o viteza MIPS ridicata(E), este nevoie de
echilibrarea rapoartelor C/E si E/B .
procesorului
cea a CPU
Limiteaza viteza CPU
Limiteaza viteza sistemului
Capacitatea memoriei principale nu este totdeauna suficienta
Creste traficul intre memoria principala si cea secundara
Limiteaza si mai mult viteza sistemului
Cache
Memorie de mare viteza, cu capacitate redusa, plasata intre CPU
si memoria principala
Informatiile (instructiuni si date) cerute pentru executie de CPU sunt
transferate mult mai rapid din cache decat din memoria principala
Sunt necesare anumite mecanisme de predictie
sistemul de calcul
In sistemele cele mai simple, CPU asteapta pur si simplu ca
limitata de:
dimensiunea registrilor de adresa
largimea magistralei de adrese
Costuri
Solutie:
Stocarea alternativa alimenteaza iluzia unei capacitati de stocare mare, dar accesul la
date este lent.
Solutie:
Compilare facila
Usurinta compilatorului de a genera codul masina echivalent
Rezumat
Calculator = Unitate centrala + Memorie centrala
Sistem de calcul = Calculator + Periferice
Unitatea centrala executa instructiuni (stocate impreuna cu datele
in memoria centrala).
Calculatoarele Von Neumann sunt calculatoare programabile, de
uz universal.
Datele si instructiunile sunt reprezentate in format binar.
Un set de instructiuni masina este specific fiecarui tip de
calculator. Instructiunile sunt organizate dupa un anumit format.
O instructiune este executata printr-o succesiune de pasi, numita
ciclul instructiunii.
Programele si datele care sunt tratate la un moment dat sunt stocate
in memoria principala (centrala). Aceasta este organizata ca un
ansamblu de celule de stocare - locatiile, fiecare avand o adresa
numerica unica.
Memoria secundara poate fi discul dur, discheta, banda magnetica
sau discul optic.
Dispozitivele de intrare/iesire furnizeaza mijloacele pentru
schimbul de informatii intre calculator si utilizatori.
Program
ADD X, Y
Add two numbers stored in the memory at the locations addressed by
X and Y, and stored the sum in the register.
MBR
AC
Memory
Load
ADD
Y
Read memory location Y into MBR and add it with AC
and store the result into AC
M icroprogram
A
C
Gates for
control signal
G
MAR
MBR
F
Memory
AC
E
B
F,G
F,G
A, C, E
Logic Circuit
MBR
F
Memory
C
D
AC
E
B
Com parison of
Im plem entation M ethods
Software
Speed
slow
Cost
low
Modification
Firmware Hardware
moderate fast
medium
cheap
Expandability easy
high
medium
expensive
medium
difficult
Generatii de
calculatoare
Prehistoric
0
9
3
6
Punched Card
Electronic Computer
G enerations of
Com puters(1951~ 1958):
Fi
r
st
G
ener
at
i
on
Com
put
er
s
Vacuum tubes are used to build circuits
Magnetic drum is used for main memory
Stored Program Computer
Sequential storage of programs
PC(Program Address Counter)
Development of Machine Language, Symbolic Assembly
G enerations of
Com puters(1959~ 1964):
G enerations of
Com puters(1964~ 1969):
Minicomputers
Job 1
CPU time
P1 P2 P3 Pn P1 P2 P3 Pn P1 P2 P3 ...
Time-Sharing
Job 2
CPU
Job 3
Job 4
...
Multiprogramming
Generations of Computers:
SISTEMUL DE
MEMORIE
1. Componentele sistemului de memorie
2. Ierarhia memoriei
3. Memoria cache
4. Organizarea memoriei cache
5. Algoritmi de inlocuire
6. Strategii de scriere
7. Memoria virtuala
Introducere
Performanta calculatorului depinde:
de performanta procesorului
de performanta sistemului de memorie
Memory Interface
CLK
MemWrite
Processor
Address
WriteData
CLK
WE
Memory
ReadData
(in biti);
Timpul de acces - intervalul de timp dintre cererea de
citire/scriere si disponibilitatea datelor;
Durata ciclului (ciclul de acces) intervalul de timp minim
intre doua accese succesive (Tc =1/f, f - frecventa ceasului
procesorului);
Debitul volumul de informatii schimbate in unitatea de timp
(biti/secunda);
Nonvolatilitatea aptitudinea memoriei de a conserva datele
atunci cand ea nu mai este alimentata electric.
Latenta timpul de intarziere in adresarea unui bit (intersectia
unei row cu o column) :Ta =Tc +Tl
Ex: Tadram = 60 ns = 35ns Tc + 25 ns Tl.
Daca frecventa procesorului este ridicata si Ta este mare, se introduc cicli de
asteptare Tw (wait state). Ex.: daca f = 200 MHz si Tadram = 60 ns, atunci Tc = 5
ns si se introduc 11 cicli Tw. Performanta sistemului scade.
DDR2- SDRAM
Tehnologia QDR (Quadruple Data Rate sau quad-pumped) canale distincte pentru citire/scriere
240 conectori (184 la DDR)
DDR3 SDRAM
Consum de energie diminuat cu 40% fata de DDR2, debit teoretic >10Go/s, latenta mare (comparabila cu
DDR2)
Probleme de performanta ?
memoriile sunt cu mult mai lente decat
(micro)procesoarele !
Constrangeri:
- daca memoria este mai mare, atunci este mai lenta;
- daca memoria este mai rapida, atunci costul pe bit
este mai mare.
Solutia I:
Constructia unui sistem care combina in memoria centrala o prima componenta
de capacitate mica, dar rapida, cu o a doua, de mare capacitate, dar lenta. Acest sistem
sa se comporte (in majoritatea timpului) ca o memorie rapida de mare capacitate.
Solutia 2:
Extinderea sistemul pe doua nivele de mai sus intr-o ierarhie pe mai multe
nivele, incluzand si memoria secundara (in special discurile).
Principiul localitatii
In timpul executiei unui program, referintele la memorie efectuate de
procesor, atat pentru instructiuni cat si pentru date, au tendinta de a se
grupa
Localitatea temporala
Daca un articol de memorie este referit, el va fi foarte probabil referit si in viitorul
apropiat.
Localitatea spatiala
Daca un articol de memorie este referit, este foarte probabil ca si articolele situate la
adrese apropiate sa fie referite in viitorul apropiat.
Ierarhia memoriei
Speed
Cache
Main Memory
Technology Price / GB
Access
Time (ns)
Bandwidth
(GB/s)
SRAM
$10,000
25+
DRAM
$10
10 - 50
10
SSD
$1
100,000
0.5
HDD
$0.1
10,000,000
0.1
Virtual Memory
Capacity
Adapted from Hennessy and Patterson, Computer
Architecture: A Quantitative Approach, 5th ed., Morgan
Kaufmann, 2012.
Ierarhia memoriei
1. Registrele procesorului:
- capacitate 32 registre de 32 biti fiecare = 128 B
- timpi de acces = cateva ns
4. Memoria centrala:
- capacitate = cativa Gbytes
- timpi de acces = ~100 ns
5. Disc dur:
- capacitate = sute de Gbytes
- timpi de acces = zeci de ms
Se pastreaza cat mai aproape de procesor cele mai recent accesate date
Localitatea spatiala
Daca un articol de memorie este referit, este foarte probabil ca si articolele situate la
adrese apropiate sa fie referite in viitorul apropiat. Deci:
Timpul per hit: timpul de acces pe nivelul inalt, constand in timpul de acces la
SRAM + timpul de determinare a unui hit/miss
Miss: gasirea datei intr-un bloc de pe nivelul inferior (ex: blocul Y)
Rata missurilor = 1 - (rata hiturilor)
Penalitatea de miss = timpul necesar pentru a transfera un bloc pe nivelul
superior + timpul de furnizare al blocului catre procesor
Timpul per hit << Penalitatea de miss
Tendinte tehnologice
Circuit logic:
DRAM:
Disk:
Capacitatea
2x in 3 ani
4x in 3 ani
2x in 3 ani
Viteza
2x in 3 ani
1.4x in 10 ani
1.4x in 10 ani
Memoria cache
Memoria cache este o memorie rapida (de tip SRAM), de capacitate mica,
care pastreaza copii ale informatiilor din memoria centrala recent utilizate .
Ea functioneaza intr-o maniera transparenta pentru programator, deciziile
privind ce valori vor fi alese pentru a fi conservate sau inlocuite fiind luate automat.
Memoria cache
Procesorul functioneaza la frecventa sa de baza (ridicata) numai
atunci cand piesele (datele) din memorie de care are nevoie se gasesc
in memoria cache.
Memoria cache
Spatiul memoriei cache (~ zeci, sute KBytes) este cu mult mai mic
decat cel al memoriei principale (~ sute, mii MBytes);
Articolele de memorie trebuie sa fie plasate in cache pentru a fi
disponibile cand (si preferabil numai atunci cand) ele sunt necesare.
Cum poate fi satisfacuta aceasta cerinta?
Raspunsul este: localitatea
In timpul executiei unui program, referintele la memorie efectuate
de procesor, atat pentru instructiuni cat si pentru date, au tendinta
de a se grupa.
transferul de date intre cache si memoria centrala se face prin blocuri de 4 bytes;
memoria cache este organizata in linii de 4 bytes;
memoria centrala are 16 Mbytes; fiecare byte este accesibil printr-o adresa de 24 de
biti (2**24 = 16M).
Rezultate:
- memoria cache se compune din 2**14 linii (16K)
- memoria centrala se compune din 2**22 blocuri (de 4B).
Intrebari:
- cand se introduce un bloc din memoria centrala in cache, unde (pe ce linie) trebuie
el plasat?
- cand cautam continutul unei anumite adrese de memorie:
Solutii:
Organizarea directa
Organizarea asociativa
Organizarea integral asociativa
Partea mai putin semnificativa (2 biti in exemplul nostru) identifica byteul in bloc;
2. Restul adresei (22 biti in exemplul nostru) identifica adresa blocului in memoria
centrala; pentru logica de control cache, aceasta parte este interpretata ca avand
doua campuri:
2a. Partea mai putin semnificativa (14 biti in exemplul nostru) indica linia din
cache;
2b. Partea cea mai semnificativa (8 biti in exemplul nostru) reprezinta o
eticheta (tag), care va fi stocata in cache pe linia selectata. Etichetele
permit a face distinctia intre blocurile care se potrivesc pentru stocare pe
aceeasi linie cache.
Daca avem un miss, blocul va fi plasat pe linia cache care are adresa indicata de
campul de 14 biti ai adresei de memorie respective:
Dezavantaje:
- datele unui bloc sunt plasate intr-o locatie fixa din cache. Rezulta ca o linie
din cache va trebui inlocuita de fiecare data cand este referit un alt bloc de
memorie care se potriveste pe acesta linie, fara a mai verifica statutul altor
linii din cache (care pot fi libere).
Acest lucru poate produce o rata scazuta a hit-urilor, in timp ce numai o
mica parte a modului cache este utilizata eficace.
La aparitia unui miss, blocul va fi plasat pe una din cele doua linii cache apartinand
unui ansamblu indicat printr-un camp de 13 biti din adresa de memorie interna.
Decizia privind care dintre linii va fi utilizata este luata de un algoritm de inlocuire.
Pentru a verifica daca avem un hit sau un miss, trebuie verificate toate
etichetele, corespunzand fiecarei linii din memoria cache. In cazul unui hit,
logica de comanda pointeaza linia actuala din cache.
Cautarea liniei din cache se bazeaza mai ales pe o parte din continutul
acesteia (campul eticheta) decat pe adresa ei. O asemenea structura de
memorie se numeste memorie asociativa.
In cazul unui miss, blocul va fi plasat pe una din oricare cele 2**14 linii din cache.
Alogoritmul de inlocuire decide ce linie va fi utilizata.
Avantaje:
tehnica furnizeaza o flexibilitate mai ridicata atunci cand un bloc nou este
plasat in cache.
Dezavantaje:
complexitatea
campul eticheta este lung;
un acces rapid poate fi realizat numai utilizand pentru cache memorii
asociative de inalta performanta, dificil de fabricat si scumpe.
Algoritmi de inlocuire
Cand un nou bloc trebuie plasat in cache, un alt bloc, stocat pe una
din liniile din cache, trebuie inlocuit.
Solutii de inlocuire:
- in tehnica organizarii directe, nu exista alternativa de alegere;
- in celelalte doua tehnici, este nevoie de algoritmul de inlocuire, care determina
blocul ce va fi inlocuit (si - implicit - pe ce linie cache va fi plasat noul bloc):
in cadrul tehnicii multimii asociative, liniile candidate sunt cele care fac
parte din ansamblul ales;
-in cadrul tehnicii integral asociative, toate liniile din cache reprezinta
potentiali candidati.
Algoritmi de inlocuire
Inlocuirea aleatoare:
- este aleasa aleator oricare din liniile candidate.
Toate celelalte politici sunt bazate pe informatia privind istoria utilizarii blocurilor
din cache:
Cel mai putin recent utilizata (Least Recently Used - LRU): se alege
linia candidat unde se gaseste blocul care a stat in cache cel mai lung timp, fara a fi
referit.
Algoritmi de inlocuire
Strategii de scriere
Problema:
Cum sa se pastreze coerenta intre cache si continutul memoriei
principale, dupa o operatie de scriere?
Tehnicile solutie:
Scrierea dubla
Toate operatiile de scriere sunt efectuate in memoria centrala; daca adresa a fost
transferata anterior in cache, este actualizata de asemenea si linia corespunzatoare din cache,
pentru asigurarea coerentei.
Pentru efectuarea acestei duble scrieri, procesorul va lucra la viteza scazuta a memoriei
centrale.
similara cu scrierea dubla, dar evitand incetinirea lucrului procesorului datorata scrierii
directe in memorie;
adresa de scriere si datele sunt stocate intr-un buffer de scriere de mare viteza;
transferurile din buffer in memoria centrala se vor face in timp ce procesorul executa
alte sarcini.
Performanta: viteza mai mare, dar un hard mai complex.
Strategii de scriere
Tehnicile solutie:
Scrierea intarziata (copy back)
Scrierea se face numai in memoria cache. In consecinta, coerenta logica cu memoria
centrala nu se mai mentine;
Cand o linie marcata este inlocuita in cache, mai intai continutul ei este copiat in
memoria principala (se reface coerenta).
Performanta: viteza de executie (de obicei pe o linie cache se efectueaza mai multe scrieri
inainte ca ea sa fie inlocuita si sa fie necesara copierea in memoria centrala); hardware
complex.
Observatie:
Pentru sistemele multiprocesor, problemele de coerenta in cache sunt foarte complexe si dificil
de rezolvat.
Pentium
- doua cache on-chip, una pentru date, alta pentru instructiuni;
- fiecare cache: 8 KB;
- marimea liniei: 32 bytes
- organizare asociativa cu doua cai.
PowerPC 601
- un cache simplu on-chip de 32 KB;
- marimea liniei: 32 bytes;
- organizare asociativa cu opt cai.
PowerPC 604
- doua cache on-chip, una pentru date, alta pentru instructiuni;
- fiecare cache: 16 KB;
- lungimea liniei: 32 bytes
- organizare asociativa cu patru cai.
PowerPC 620
- doua cache on-chip, una pentru date, alta pentru instructiuni;
- fiecare cache: 32 K bytes
- lungimea liniei : 64 bytes
- organizare asociativa cu opt cai.
Memoria virtuala
Spatiul de adrese cerut si vazut de catre programe este de obicei mult
mai mare decat spatiul fizic disponibil in memoria centrala.
Solutia:
In memoria centrala este stocata numai o parte din program;
restul este stocat in memoria secundara (hard disk).
Atunci cand procesorul solicita ca un anumit segment de program sa fie incarcat in
memoria centrala, va fi nevoie sa fie inlocuit un alt segment, care se gaseste plasat
deja anterior acolo.
Deplasarea programelor si a datelor intre memoria principala si cea secundara este
executata automat de catre sistemul de operare, iar tehnicile utilizate se numesc
tehnici de memorie virtuala.
Memoria virtuala
Daca o adresa virtuala se raporteaza la o parte de program sau de date care sunt
actualmente in memoria fizica (cache, memoria centrala), locatia respectiva este
imediat consultata (adresa fizica respectiva este identica cu adresa virtuala). In caz
contrar, respectiva parte de program/data trebuie transferata mai intai din memoria
secundara in cea centrala.
Adresele virtuale sunt tranlatate in adrese fizice de catre o componenta hard unitatea de gestiune a memoriei (Memory Management Unit - MMU).
Paginarea la cerere
Un program se compune dintr-o mare cantitate de pagini, majoritatea stocate pe
disc si doar cateva in memoria centrala.
Responsabil de incarcarea/inlocuirea paginilor in memoria centrala, in asa fel incat
numarul defectelor de pagina (page fault) detectate sa fie redus la minim este
sistemul de operare.
Un defect de pagina apare atunci cand unitatea centrala se refera la o locatie dintro pagina care nu este in memoria centrala; aceasta pagina va trebui incarcata si daca nu este nici un cadru disponibil - ea va trebui sa inlocuiasca pe o alta,
Paginarea la cerere
Translatarea adreselor
Accesarea unui cuvant din memorie implica translatarea unei adresa
virtuale intr-alta fizica:
- adresa virtuala: numarul paginii + deplasament (offset);
- adresa fizica: numarul cadrului + deplasament.
Translatarea adresei este efectuata de MMU, utilizand o tabela de
pagini.
Exemplu:
- spatiul de memorie virtuala: 2 GB (31 biti de adresa; 2 **31 = 2 GB)
- spatiul de memorie fizica: 16 MB (24 biti de adresa; 2 **24 = 16MB)
- dimensiunea paginii: 2KB (2 **11 = 2KB)
Rezulta:
Numarul total de pagini: 2 **20 = 1MB
Numarul total de cadre: 2 **13 = 8KB
Translatarea adreselor
Tabela de pagini are cate o intrare pentru fiecare pagina din spatiul
memoriei virtuale.
Fiecare intrare din tabela retine adresa cadrului din memorie care
stocheaza pagina respectiva, daca aceasta pagina este in memoria centrala.
Tabela de pagini
Probleme:
tabela de pagini este foarte mare (numarulpaginilor din spatiul memoriei virtuale
este foarte mare).
accesul la tabela de pagini trebuie sa fie foarte rapid; tabela de pagini trebuie
stocata intr-o memorie foarte rapida, on-chip.
Solutii:
Pentru intrarile tabelei de pagini este utilizat un cache special, buffer de translatie
(Translation Lookaside Buffer - TLB); acesta functioneaza similar ca o memorie cache
ordinara si contine intrarile din tabela de pagini care au fost cel mai recent utilizate.
Tabela de pagini este adeseori prea mare pentru a fi stocata in memoria centrala. De
aceea, pentru stocarea tabelei sunt utilizate chiar tehnicile memoriei virtuale:
- la un moment dat, numai o parte din tabela de pagini este stocata in memoria centrala;
- tabela de pagini este distribuita ea insasi de-a lungul ierarhiei memoriei:
- TLB (cache)
- memoria centrala
- discul
Inlocuirea paginii
Cand o noua pagina trebuie incarcata in memoria centrala si in
aceasta nu se mai gaseste nici un cadru liber, trebuie inlocuita o
pagina deja incarcata.
Decizia privind pagina care va fi inlocuita este bazata pe aceleasi
speculatii utilizate pentru inlocuirea blocurilor in memoria cache (a se
vedea slide-ul corespunzator).
Frecvent, pentru selectia paginii care va fi inlocuita, se utilizeaza strategia
LRU.
Rezumat
Sistemul de memorie trebuie sa stocheze date multe, programe foarte mari si sa
permita in acelasi timp un acces rapid.
Un sistem ierarhic de memorie, bazat pe localitatea referintelor. poate asigura
necesarul de performanta
Memoria cache este o componenta esentiala a sistemului de memorie; ea poate
fi organizata comun sau separat, pentru date si instructiuni.
Memoria cache poate fi organizata direct, cu multimi asociative sau integral
asociativa.
Cand un nou bloc este introdus in cache, trebuie inlocuit un altul; pentru a
decide ce bloc va fi inlocuit, se pot utiliza diferite strategii: aleatorie, LRU,
FIFO, LFU etc.
Pentru mentinerea coerentei logice intre cache si memoria centrala, sunt utilizate
cateva strategii de scriere: scrierea dubla, scrierea dubla cu buffer, scrierea
intarziata.
Spatiul de adrese vazut de programe este virtual si este mult mai mare decat
spatiul fizic disponibil.
Paginarea la cerere se bazeaza pe ideea ca numai o parte din pagini se gaseste in
memoria centrala la un moment dat; sistemul de operare incarca paginile in
memorie, atunci cand acestea sunt necesare prelucrarii.
Unitatea MMU traduce o adresa virtuala intr-una fizica, utilizand o tabela de
OPERATII DE INTRARE/IESIRE
1. Dispozitive de intrare/iesire si magistralele sistemului
2. Arbitrajul magistralei
3. Sincronizarea magistralei
4. Module de I/E
5. Decodificarea adreselor de I/E
6. I/E programate si gestionate prin intreruperi
7. Accesul direct la memorie (DMA)
Resurse de intrare/iesire
Dispozitivele de intrare si de iesire
memoria secundara:
Magistralele sistemului
Resurse de intrare/iesire
Magistrala este utilizata:
- de controlere, pentru comunicatia spre/de la UC sau memorie;
- de UC, pentru a citi sau stoca instructiuni si date de la/spre
memorie
(rezulta posibilitatea de aparitie a conflictelor intre controlerele de I/E si UC).
prioritatea de acces.
arbitru de magistrala,
Pinii UC pot fi impartiti in: pini de adrese, pini de date si pini de comanda.
Pinii de adresa: pe aici, adresele sunt trimise catre magistrala sistemului, pentru
operatii de citire/scriere in memoria interna
- cu m pini de adresa, pot fi adresate 2** m locatii.
Pinii de date: pe aici, bitii de informatii sunt trimisi/receptionati pe/de pe magistrale.
- cu n pini de date, pprintr-o operatie simpla poate fi citit/scris un cuvant de n biti.
Magistralele sistemului
O magistrala de sistem se compune in mod tipic din 50-100 linii separate.
Ele pot fi clasificate in trei grupe functionale:
1. Linii de date: furnizeaza o cale pentru a transporta datele intre
componentele sistemului. Largimea magistralei: 8, 16, 32 linii.
2. Linii de adresa: sunt utilizate pentru a indica sursa sau destinatia datelor.
Largimea ei determina capacitatea maxima de adresare directa a memoriei.
3. Linii de comanda: sunt utilizate pentru comanda accesului la magistrala,
pentru sincronizarea operatiilor si pentru propagarea comenzilor in intregul sistem.
solutia pentru a obtine magistrale foarte largi: multiplexarea: in loc de a mentine - de
exemplu - 16 linii separate de adrese si 16 de date, se poate opta pentru 32 linii comune de
adrese si date, multiplexate (la debutul operatiei, liniile magistralei sunt utilizate mai intai
pentru adrese; mai tarziu, aceleasi linii vor fi utilizate pentru date).
pretul utilizarii unei magistrale cu largime redusa este incetinirea vitezei de lucru a
sistemului (la citire/scriere, adresa si datele nu pot fi puse pe linii simultan).
Arbitrarea magistralei
Dispozitivele legate la o magistrala pot fi de doua feluri:
Arbitrarea magistralei
Ce se intampla daca doua sau mai multe dispozitive doresc sa lucreze simultan
ca master?
Deoarece numai o unitate poate transmite la un moment dat pe magistrala, este
necesar un
arbitraj.
Mecanismul de arbitraj:
- centralizat: exista un singur dispozitiv, arbitrul de magistrala. El determina ce
acces va urma.
descentralizat (distribuit): arbitrul nu mai este prezent. dar sunt necesare mai
multe linii de magistrala.
Exemplu: pe magistrala exista atatea linii de cerere, cate dispozitive sunt legate; fiecare dispozitiv
urmareste fiecare linie de cerere. Dupa fiecare ciclu, fiecare dispozitiv stie daca el are prioritatea cea mai
mare. In caz afirmativ, el ocupa magistrala.
Sincronizarea magistralei
pe magistrala:
1. Sincronizarea sincrona: aparitia evenimentelor pe magistrala este
determinata de un orologiu.
2. Sincronizarea asincrona: aparitia evenimentelor pe magistrala urmeaza
si depind de aparitia unor evenimente precedente.
Exemple:
- magistralele PCI si ISA utilizeaza sincronizrea sincrona;
-.magistrala SCSI utilizeaza sincronizarea asincrona;
Sincronizarea sincrona
Magistrala include o linie de ceas; toate dispozitivele legate la magistrala pot citi linia de
ceas.
Toate evenimentele pe magistrala incep la debutul ciclului de ceas.
Secventa de magistrala pentru un ordin sincron citire din memorie:
- UC (master) lanseaza un semnal de start pentru a marca prezenta adresei si a parametrilor de
comanda pe magistrala: semnalul citire (read) este lansat pe linia de comanda respectiva, iar
adresa de memorie este plasata pe liniile de adresa.
- dupa o intarziere de doi cili de magistrala, memoria (slave) plaseaza datele pe linii si lanseaza
un semnal acknowledge (cererea a fost achitata) pe linia de comanda respectiva.
Sincronizarea sincrona
Avantajele sincronizarii sincrone:
- simplu de implementat si testat;
Dezavantajele sincronizarii sincrone:
- nu este flexibila:
- timpii de executie ai unei operatii trebuie sa fie multipli ai
ciclului de ceas (daca o operatie are nevoie de 3,1 cicli, ea va
dura 4 cicli).
- frecventa magistralei trebuie sa fie adaptata la dispozitivele
mai lente, deci dispozitivele rapide nu pot fi valorificate pe
deplin.
Sincronizarea asincrona
Sincronizarea asincrona
Module de I/E
Modulele de I/E indeplinesc de obicei sarcina
Module de I/E
Buffering-ul datelor este esential pentru modulele de I/E; el permite sa se faca
transferuri cu memoria la viteza memoriei si nu la viteza dispozitivului de I/E, care
este cu mult inferioara. Structura unui modul de I/E:
Modulele de I/E ascund mai multe detalii de manipulare a unui dispozitiv de catre UC.
In consecinta, UC poate vedea dispozitivele ca pe simple operatii:
- modulele sofisticate, numite canale de I/E, dispun de o interfata la nivel elevat cu
unitatea centrala; ele sunt utilizate pentru mainfrmames si cateva minicalculatoare;
- modulele mai simple, numite controlere de periferic, sunt utilizate pe PC-uri si
statii de lucru.
adrese.
UC trateaza registrele modulelor de I/E (de stare si de date) ca locatii de
memorie.
Acelasi set de instructiuni masina este utilizat ca mijloc de a accede la
memorie si la dispozitivele de I/E.
I/E izolate
I/E izolate
Tratamentul intrarilor/iesirilor
I/E programate
Unitatea centrala executa o secventa de instructiuni, care reprezinta comenzi
directe ale operatiilor de I/E (citire stare dispozitiv, comenzi de citire/scriere
etc.).
Cand UC lanseaza o comanda pentru un modul de I/E, ea trebuie sa astepte
pana cand operatia de I/E va fi terminata. Deoarece UC este mai rapida decat
dispozitivele, rezulta o pierdere de timp.
Problema:
UC
DMA
Cand modulul DMA si-a terminat treaba, el lanseaza un semnal de intrerupere catre
UC.
Rezumat
SETUL DE INSTRUCTIUNI
1. Instructiunile masina
2. Tipuri de instructiuni masina
3. Salturi conditionate si neconditionate
4. Instructiuni de salt pentru subprograme
5. Stiva
6. Operatii de baza pentru I/E
7. Moduri de adresare - alternative
8. Prezentarea modurilor de adresare
9. Formatul instructiunilor
Instructiunile masina
Una din caracteristicile principale ale unei UC este reprezentata de setul de instructiuni
camp contine o specificatie de instructiune (cod operatie, operanzi etc.); campurile sunt
organizate conform unui format al instructiunii.
Adresele operanzilor sursa si destinatie, ca si adresa instructiunii urmatoare care trebuie
executata, pot fi indicate in mai multe moduri, numite moduri de adresare.
Implicit, urmatoarea instructiune care se va executa este cea care urmeaza imediat celei
curente.
Saltul conditionat provoaca un salt numai daca este satisfacuta o conditie (aritmetica
sau logica) indicata.
salturile conditionale se bazeaza pe informatia stocata in bitii de conditie (condition code flags);
de obicei acesti biti sunt grupati impreuna in registrul de stare al UC (status register).
Exemple de salturi conditionale: BEZ (salt daca egal cu zero), BLZ (salt daca mai mic ca zero) etc.
Bitii de conditie sunt modificati de anumite instructiuni (de obicei aritmetice sau logice, insa N si Z pot
fi de asemenea afectati de instructiuni pentru transfer de date); instructiunile care ii modifica sunt
precedente instructiunilor de salt (cele care le verifica valorile).
Cea mai simpla solutie o reprezinta utilizarea unei instructiuni speciale de salt neconditionat
(numita CALL), care va salva adresa de retur intr-o locatie specifica, de obicei un registru (link
registre - LR).
Aceasta solutie simpla este adoptata de exemplu de PowerPC.
Solutia CALL nu functioneza insa pentru anumite subprograme (numite imbricate sau recursive,
adica se apeleaza unele din altele), decat daca adresele de retur sunt salvate de catre
programator.
Operatii cu stiva
parametrilor.
transferul
SIN, DATAIN, SOUT, DATAOUT sunt adresele registrilor respectiv ai flagurilor dispozitivului . Ele sunt
parte a spatiului de adrese utilizat pentru a accesa dispozitivele de I/E; acesta este considerat
independent de spatiul de adrese al memoriei (interne).
Atunci cand sunt utilizate instructiunile speciale de I/E, adresa este considerata ca apartinand unui
dispozitiv de I/E si este activata comanda corespunzatoare de acces la dispozitiv pentru magistrala
(vezi capitolul respectiv).
Moduri de adresare
Diferitele solutii alese pentru a indica adresa operanzilor sau a rezultatelor determina o mai
mare flexibilitate, care simplifica programarea;
Numarul de biti rezervati pentru reprezentarea adresei in cuvantul instructiunii este limitat:
Exemplu: cu o zona de adrese de 8 biti, intr-o instructiune pot fi referite numai 2**8 locatii de memorie.
Daca insa, in zona de adrese a instructiunii de mai jos, vom indica in locul adresei propriu-zise un
numar de registru care contine adresa operandului, vor putea fi referite 2**16 locatii (considerand ca
registrul are 16 biti):
Moduri de adresare
Imediata
Directa
La registru
Indirecta
Cu deplasament
Indexata
Relativa
Cu stiva
Moduri de adresare
Adresarea imediata
ADD R4, #3:
efect: R4 - R4+3
Adresarea directa
ADD R4,X
efect: R4 - R4+[x ]
Adresa reala a operandului este plasata intr-un camp din cuvantul instructiunii.
Moduri de adresare
Adresarea la registru
ADD R4, R3:
efect: R4 - R4+R3
Adresarea indirecta
a) Adresarea indirecta la memorie
ADD R4, (X):
efect: R4 - R4+[[X]]
Cuvantul instructiunii contine adresa unei locatii de memorie care contine adresa reala a
operandului.
Prin adresare indirecta, poate fi referit un numar mult mai mare de cuvinte de memorie decat prin adresarea
directa: 2 **N > 2 **K (N - lungimea cuvantului de memorie, K - lungimea zonei de adresa in cuvantul instructiunii.
Moduri de adresare
Adresarea indirecta la registru este adesea combinata cu auto-incrementarea sau autodecrementarea: dupa fiecare executie a unei instructiuni, continutul registrului de adresa este
incrementat (decrementat) automat:
ADD R4, (R1)+:
efect: R4 - R4+[R1]
R1 - R1+1
Exemplu (Motorola 68000):
Moduri de adresare
Adresarea cu deplasament
ADD R4, R1, X:
efect: R4 - R4+[R1+X]
Un registru de baza (care poate fi un registru general) contine o adresa reala - adresa de baza;
deplasamentul (X) este stocat in cuvantul instructiunii si este considerat ca un supliment (offset)
al adresei de baza.
Adresarea indexata
ADD R4, X[R1]:
efect: R4 - R4+[X+R1]
Adresarea indexata seamana cu adresarea cu deplasament si registru de baza. Totusi, se
considera o adresare indexata atunci cand campul de adresa din cuvantul instructiunii contine o
adresa efectiva, iar registrul de index (special) contine un deplasament.
Moduri de adresare
Exemplu de adresare indexata:
Calculul sumei elementelor dintr-o tabela continand N numere
intregi:
Indexarea este adeseori combinata cu auto-incrementarea sau autodecrementarea: dupa fiecare executie a unei instructiuni, continutul registrului de
index este incrementat (decrementat) automat:
ADD R4, X[R1]+:
effect: R4 - R4+[X+R1]
R1 - R1+1
Moduri de adresare
Adresarea combinata: indirecta si indexata
Moduri de adresare
Adresarea relativa
Este o varianta a adresarii cu deplasament, dar adresa de baza este plasata implicit in
registrul contor de program PC. Cuvantul instructiunii contine un deplasament care poate fi
pozitiv sau negativ.
Adresarea relativa este utilizata de catre instructiunile de salt. Tinta unui salt este de
obicei o adresa apropiata de cea a instructiunii care executa saltul, astfel ca sunt
necesari doar cativa biti pentru a stoca un deplasament al adresei reale, in raport cu
adresa instructiunii de salt.
Adresarea cu stiva
Operatiile speciale care lucreaza cu stiva (PUSH, POP, CALL, RETURN) refera implicit varful
stivei. Deci, adresa reala este aceea stocata in registrul indicator al stivei (SP).
Formatul instructiunilor
Formatul instructiunii reprezinta maniera de plasare a campurilor
intr-un cuvant al instructiunii si modul in care acestea codifica
operatiile si operanzii.
Formatul instructiunilor
Unele coduri de operatii impun implicit anumite moduri de adresare. Alte coduri de operatii
permit diferite moduri de adresare pentru operanzi. In acest caz, un anumit numar de biti
trebuie sa indice modul real de adresare; pentru moduri de adresare diferite, campul operand
este organizat diferit si poate avea lungimi diferite.
Rezumat
Una din caracteristicile principale a unei UC de calculator este setul sau de instructiuni. Instructiunile
sunt reprezentate ca structuri binare, conform unui anumit format al instructiunii.
Instructiunile din set sunt de mai multe tipuri: transfer de date, aritmetice/logice, de comanda a
programului, pentru transfer de I/E. Seturile de instructiuni ale calculatoarelor sunt foarte diferite
(numar de adrese, moduri de adresare etc.).
Pentru comanda programului sunt prevazute instructiuni de salt - conditionat sau neconditionat.
Salturile conditionate sunt bazate pe biti (flags) de conditie.
Apelurile la subprograme sunt efectuate frecvent in timpul executiei programelor. Un apel la
subprogram se poate bazat pe hardware (stivele).
Pentru rezolvarea transferurilor de I/E, pot fi utilizate operatii particulare. Daca accesul la dispozitiv
este de tip memory-mapped, pentru I/E sunt utilizate operatii de transfer de date obisnuite.
Adresele operanzilor si ale instructiunilor pot fi indicate in diferite maniere. Modurile de adresare
evoluate ofera o flexibilitate mai mare a programarii si o mai mare accesibilitate la memorie.
Moduri de adresare:
- adresare imediata
- directa + adresare la registru
- adresare indirecta (cu auto-incrementare si auto-decrementare)
- adresare cu deplasament, relativa et indexata (cu auto-incrementare si auto-decrementare)
- adresare su stiva
1. Ciclul instructiunii
2. Prelucrarea pipeline a instructiunulor
3. Riscurile (hazarduri) pipeline
4. Hazarduri structurale
5. Hazarduri de date
6. Minimizarea hazardurilor
Ciclul instructiunii
Timpul necesar pentru a transporta o instructiune de la un segment la altul reprezinta un ciclu masina
(ciclu de ceas, clock cycle). Executia unei instructiuni necesita mai multi cicli masina, pana cand aceasta
traverseaza intreaga pipeline.
Daca vom considera ca fiecare instructiune cere un timp de executie Tex, atunci timpul total de
executie Tt pentru cele 7 instructiuni, prin tehnica pipeline, este:
Tt = (T ex / 2)*8 = 4*Tex
Dupa un anumit timp (N-1 cicli), toate cele N segmente pipeline functioneaza: UC pipeline este plina.
Acum, teoretic, unitatea pipeline furmizeaza paralelismul maximal (cele N instructiuni sunt tratate
simultan de cele N segmente pipeline active in cazul exemplului, N=6).
S-ar parea ca un numar mai mare de segmente in pipeline poate furniza o performanta mai
buna. Fals, pentru ca trebuie tinut seama de:
un numar mai mare de etape amplifica procesul de transfer de date intre segmente si
face dificila sincronizarea dintre acestea.
este dificil de a construi o pipeline larga si in acelasi timp de mare viteza, din cauza
hazardurilor inevitabile.
Exemple:
80486 si Pentium: o pipeline cu cinci segmente pentru instructiuni cu numere intregi si o pipeline cu
opt segmente pentru instructiunile in virgula flotanta (float point).
PowerPC: o pipeline cu patru segmente pentru instructiuni cu numere intregi si o alta cu sase
segmente pentru instructiunile in virgula flotanta.
Hazarduri in pipeline
Hazardurile (riscurile) din pipeline sunt acele situatii care
impiedic executia urmatoarei instruciuni din lanul de prelucrare
n cadrul ciclului su normal de timp. In acest caz, instructiunea va
fi blocata (stalled).
Timpul in care instructiunea este blocata se numeste
penalitate si se masoara in cicli masina.
Cand o instructiune este blocata, toate instructiunile din pipeline situate in aval fata de ea vor
fi de asemenea blocate, putand continua numai tratarea instructiunilor din amonte.
Hazarduri structurale
Riscurile structurale se produc atunci cand o anumita resursa (memorie, unitate
functionala) este solicitata simultan de mai mult de o instructiune.
Exemplu:
Instructiunea ADD R4, X fetch in etapa FO operandul X din memorie. In timpul acestui
ciclu, memoria nu accepta alte cereri.
Hazarduri de date
Cand avem in pipeline doua instructiuni, I1 si I2, executia lui I2 poate
incepe inainte de terminarea lui I1. Daca intr-un anumit segment
pipeline, I2 are nevoie de un rezultat produs de I1, dar acest rezultat
nu a fost inca produs, apare un hazard de date.
Exemplu:
Inaintea executiei etapei sale FO, instructiunea ADD este blocata pana cand instructiunea MUL va
scrie rezultatul in R2.
Penalitatea: 2 cicli !
O parte din penalitatea produsa de hazardurile de date poate fi evitata utilizand o tehnica numita
deviere (bypassing, forwarding).
Rezultatul operatiei din UAL este transmis totdeauna i ca feedback catre intrarea sa. Daca hardul
detecteaza ca valoarea necesara pentru operatia curenta este cea produsa de operatia precedenta
(dar care inca nu a fost transmisa pe reactie) UAL alege sa expedieze acest rezultat la intrarea sa,
in loc sa citeasca valoarea ceruta dintr-un registru sau din memorie.
Dupa etapa EI a instructiunii MUL, rezultatul este disponibil pentru forwarding. Penalitatea este redusa la un ciclu.
Hazarduri de comanda
Riscurile de comanda sunt produse de instructiunile de salt.
Hazarduri de comanda
Hazarduri de comanda
Ideea saltului intarziat este de a lasa UC sa efectueze o activitate utila pe durata celor cativa cicli
stall (ca in exemplul de mai sus).
UC va executa totdeauna instructiunea care urmeaza imediat dupa salt si va schimba decizia
numai in cazul in care saltul se executa. In acest fel ordinea de executie este modificata.
Instructiunea urmatoare celei de salt se spune ca este in branch delay slot.
Predictia salturilor
Daca, dupa ce conditia de salt a fost calculata, se va confirma ca predictia a fost corecta, executia
continua.
Dimpotriva, daca predictia nu a fost corecta, instructiunile cu fetch-ul efectuat vor fi abandonate si va trebui
facut fetch-ul pentru instructiunea corecta.
....................................................................................................................................................................................................................................................................................................
..........
Pentru a profita din plin de predictia salturilor, se poate face nu numai fetch-ul in
avans al instructiunilor, ci se poate incepe si executia acestora. Aceasta este tehnica
cunoscuta cu numele de executie speculativa.
Variante implementate:
Este utilizat un bit pentru a inregistra daca ultima executie a avut loc pe o ramura sau nu. Sistemul va
predicta acelasi comportament ca si ultima oara.
Imperfectie:
Cand o ramura se executa aproape intotdeauna, atunci cand nu se va executa, se va face o predictie
inexacta de doua ori, in loc de o data:
----------BOUCLE - - - - - - - - - - ----------BNZ BOUCLE
----------- dupa ce bucla a fost executata pentru prima oara, se va considera ca BNZ nu se executa.
Acum, cand bucla se va executa inca odata, dupa prima iteratie se va face o predictie
falsa; predictiile urmatoare sunt OK pana la ultima iteratie, cand va avea loc a doua falsa
predictie? In acest caz predictia este mai proasta decat in cazul predictiei statice, care
considera ca salturile inapoi sunt totdeauna executate (solutia PowerPC 601).
cu o combinatie de doi biti, predictiile se pot face in functie de ultimele doua exemple de executie.
Un enunt tipic recomanda ca trebuie sa schimbam predictia numai daca intr-o linie se gasesc doua
predictii incorecte
Rezumat
Instructiunile sunt executate de UC ca o secventa de etape.
Executia instructiunii poate fi accelerata sensibil prin tehnica
pipeline.
O pipeline este organizata ca o succesiune de N segmente. La un
moment dat, in interiorul unei pipeline pot fi active N instructiuni.
Lucrul la viteza ei maximala in pipeline este impiedicat de
hazarduri. Hazardurile structurale sunt determinate de conflictele
de resurse. Hazardurile de date sunt produse de dependentele de
date intre instructiuni. Hazardurile de comanda se produc ca o
consecinta a instructiunilor de salt.
Instructiunile de salt pot afecta radical performanta executiei
pipeline. Este foarte important de a reduce penalitatile provocate
de salturi.
Rezumat
Pentru salturile neconditionate, exista posibilitatea de a reduce
penalitatea la 0, executand fetch-ul instructiunilor (stocate in cache) la
o viteza ridicata si mentinand incarcata coada de asteptare pentru
executie a instructiunilor.
Pentru salturile conditionate, penalitatea 0 nu este posibila, pentru ca
trebuie asteptat rezultatul conditiei de salt.
Saltul intarziat este o tehnica bazata pe compilator, care vizeaza
reducerea penalitatii de salt prin transferul unor instructiuni in branch
delay slot.
Reducerea eficace a penalitatii de salt pentru salturile conditionale
are nevoie de o strategie inteligenta de predictie a salturilor. Predictia
statica a salturilor nu ia in considerare istoricul executiei. Predictia
dinamica a unui salt conditionat este bazata pe o tabela de istoric.
Tabelele de istoric al salturilor sunt folosite pentrua stoca doua
Ce este RISC?
Decalajul semantic
Decalajul semantic
Problema:
Cum trebuie compilate si executate eficace noile programe de
nivel inalt (high level language - HLL) pe o arhitectura data de
procesor ?
Doua raspunsuri posibile:
1. Abordarea CISC:
2. Abordarea RISC:
Tipurile de operanzi:
- 74 pana la 80% din operanzi sunt valori scalare (numere intregi, reale, caractere etc.) care
pot fi depuse in registri;
- - 80% din valorile scalare sunt variabile locale;
- restul (20-26%) sunt date structurate (arrays); 90% dintre ele sunt variabile globale;
Concluzie:
Majoritatea operanzilor sunt variabile locale de tip scalar, care
- instructiunile RISC, fiind simple, sunt cablate, in timp ce arhitecturile CISC trebuie sa
utilizeze microprogramarea pentru implementarea instructiunilor complexe .
- avand numai instructiuni simple, se obtine reducerea complexitatii unitatii de comanda si a
circulatiei datelor; in consecinta, procesorul poate lucra la o frecventa de baza ridicata.
- daca instructiunile sunt simple si cu timpi de executie asemanatori, unitatile pipeline sunt
utilizate eficace.
- operatiile complexe pe calculatoarele RISC sunt executate ca o secventa de instructiuni
simple RISC. In cazul CISC, ele sunt executate printr-una sau mai multe instructiuni complexe.
Operatiile complexe iau mai mult timp pe RISC, dar numarul lor este mic;
Datorita simplitatii sale, RISC functioneaza la cea mai mica durata a ciclului; cu
CISC, instructiunile simple sunt incetinite datorita lungimii lor, circulatiei datelor
si a complexitatii comenzilor.
- aceasta face ca incarcarea si decodificarea instructiunilor sa fie simpla si rapida; nu este necesar sa se
astepte pana va fi cunoscuta lungimea unei instructiuni, pentru a putea incepe decodificarea urmatoarei;
- decodificarea este simplificata deoarece codul operatiei si campurile de adresa sunt situate in aceeasi
pozitie pentru toate instructiunile.
valorile variabilelor si
parametrii pentru procedura care a facut apelul); la returul in procedura de apel, valorile
trebuie restaurate din memorie. Acest lucru ia foarte mult timp.
- daca este disponibil un mare numar de registri, cand este apelata o noua procedura,
poate fi asignat un nou ansamblu de registri, astfel incat ansamblul de registri asignat
apelantului sa ramana intact.
Alt ex.: Pentru secventa urmatoare, compilatorul a produs un NOP dupa instructiunea LOAD, deoarece
nu a avut nici o instructiune pe care sa o incarce in load delay slot:
Compararea executiilor a aratat ca programele ruleaza intradevar mai rapid pe procesoarele RISC decat pe procesoarele
CISC.
Totusi, este dificil sa identificam care caracteristica a unui
procesor produce performanta cea mai ridicata. Unii fani CISC
spun ca viteza mai mare a procesoarelor RISC nu este data de
arhitectura. Ea este obtinuta, printre altele, prin tehnologie si
compilatoare mai bune.
Exemple de procesoare
Arhitecturi CISC
VAX 11/780
Pentium
Lungimea instructiunii : 1 - 11
Formatul instructiunii : nefixat
Moduri de adresare : 11
Nr. registrelor de uz universal : 8
Arhitecturi RISC
Sun Sparc
Nr. de instructiuni : 52
Lungimea instructiunii : 4
Formatul instructiunii : fixat
Moduri de adresare : 2
Nr. registrelor de uz universal : pana la 520
PowerPC
Lungimea instructiunii : 4
Formatul instructiunii : nefixat (dar mici diferente)
Moduri de adresare : 2
Nr. registrelor de uz universal : 32
Rezumat
Arhitecturile RISC et CISC incearca, in maniere diferite, sa
rezolve aceeasi problema: decalajul semantic.
CISC utilizeaza maniera traditionala de implementare a
instructiunilor din ce in ce mai complexe.
Arhitectura RISC incearca sa simplifice setul de instructiuni.
Inovatiile in arhitecturile RISC sunt bazate pe o analiza a unui
mare numar de programe utilizate extensiv.
Caracteristicile principale ale arhitecturilor RISC sunt: numarul
redus de instructiuni simple, putine moduri de adresare,
arhitectura load-store, instructiunile sunt de format si lungime fixe,
este disponibil un mare numar de registre.
Una din problemele principale ale proiectantilor RISC este sa
maximizeze eficacitatea unitatii pipeline.
Arhitecturile actuale include adesea la un loc dispozitive RISC et
Arhitecturi superscalare
O arhitectura superscalara consta intr-un numar de pipeline care
lucreaza in paralel
Arhitecturi superscalare
3. Conflicte de date
- sunt rezultatul dependentelor de date aparute intre instructiunile din program. Datorita
faptului ca arhit. superscalare permit o mare libertate privind ordinea executiei instructiunilor,
aceste dependente trebuie tratate cu multa atentie.
Arhit. superscalare urmaresc executia a cat mai multor instructiuni in paralel, pentru a
exploata la maxim potentialul de paralelism al programului
Dependentele de date
Principiu:
Se lanseaza in executie (paralela) toate instructiunile cuprinse intr-o fereastra de
instructiuni, sub rezerva aparitiei constrangerilor produse de dependentele de date si resurse.
dependente artificiale
Apar atunci cand iesirea unei instructiuni este ceruta ca intrare pentru o instructiune
subsecventa:
Aceste dependente sunt caracteristici intrinseci ale programului utilizator. Ele nu pot fi eliminate
de compilator sau prin tehnici hardware.
Depententele de date trebuie sa fie detectate si tratate:
- solutia simpla este blocarea temporara a unitatii de excutie (in ex., sumatorul intra in starea
stall, pana la terminarea inmultirii);
- pentru a evita blocarea, trebuie cautata (prin compilator sau hard) o alta instructiune care sa
fie executata pana se finalizeaza instructiunea in cauza (in ex., rezultatul inmultirii).
Politicile utilizate pentru executia instructiunilor sunt caracterizate prin doi factori:
Cea mai simpla politica consta in executia si finalizarea instructiunilor in ordinea lor secventiala .
Aceasta insa diminueaza sansele de a gasi instructiuni care sa se execute in paralel.
Pentru a inbunatati paralelismul, procesorul trebuie sa priveasca inainte ca sa gaseasca instructiuni
independente, ce pot fi executate in paralel. Acestea vor fi executate intr-o ordine diferita decat cea strict
secventiala, cu singura restrictie ca rezultatul final trebuie sa fie cel corect!
Politici de executie:
Consideram secventa:
Pentru garantarea finalizarii in ordine, tratare secventei se blocheaza atunci cand apar
conflicte sau atunci cand unitatea cere pentru executie mai mult decat un ciclu de ceas.
Deoarece instructiunile sunt tratate in ordine stricta, paralelismul rezultant este foarte mult
dependent de modul in care programul a fost scris si compilat.
Exemplu (slide urmator): daca I3 si I6 isi schimba pozitiile, perechile I6-I4 si I5-I3
pot fi executate in paralel
Antidependenta
cat si antidependente:
Redenumirea registrilor
Paralelismul poate fi imbunatatit eliminand aceste dependente, care nu sunt dependente de date
reale.
Eliminarea celor doua dependente se poate face prin alocarea automata de noi registri pentru
stocarea valorilor care pot provoca aceste dependente.
Tehnica se numeste redenumirea registrilor.
Exemple:
Dependenta de iesire se elimina prin alocarea, de exemplu, a registrului R6 pentru valoarea R2+R5.
Power PC 620
- suplimentar fata de PC 604, tratare out-of-order
Pentium
- trei unitati de executie independente:
- 2 unitati de calcul cu intregi
- o unitate virgula flotanta
- tratare in-order, doua instructiuni simultan pe ciclul de ceas
Pentium II-IV
- suplimentar fata de Pentium, tratare out-of-order
- cinci instructiuni pot fi tratate intr-un ciclu de ceas
compatibilitatea binara:
atunci cand sunt adaugate noi unitati functionale intr-o npua versiune arhitecturala (fara a se
modifica setul de instructiuni!), vechile programe pot beneficia si ele de potentialul suplimentar
de paralelism
Rau:
foarte complexe
- este nevoie de mult hard pentru investigarea in avans a instructiunilor in timpul executiei
programului si exista limite in aplicarea acestei tehnici.
- consumul de energie creste foarte mult
dupa ce instructiunea a fost citita (fetch), toate operatiile corespunzatoare sunt tratate
in paralel;
nu mai este necesar hardul suplimentar destinat detectarii paralelismului in timpul
executiei;
este rezolvata problema ferestrei de instructiuni: compilatorul poate analiza intregul
program pentru a detecta operatiile paralele.
Procesoarele VLIW
Procesoarele VLIW
Probleme:
- necesitatea unui mare numar de registre care sa pastreze operanzi si rezultate pentru toate FU
active
- capacitate mare de transport intre FU, registre si memorie
- magistrala cu banda larga intre memoria cache si unitatea fetch (ex.: o instructiune cu 7
operatii, fiecare pe 24 de biti, rezulta 168 biti/instructiune)
- cod de program de mari dimensiuni, in special datorita operatiilor neutilizate (se irosesc biti din
codul instructiunii)
- cod binar nereutilizabil daca in noua versiune de procesor se introduce o FU noua, numarul
operatiilor posibil a fi executate in paralel creste, cuvantul (formatul) instructiunii se schimba si
astfel vechiul cod de program nu va mai putea fi executat.
De ce calcul paralel?
Aplicatiile de mai sus sunt caracterizate printr-un volum foarte mare de calcule
numerice si/sau cantitati foarte mari de date de intrare
Intrebari importante:
Cum trebuie sa functioneze un calculator paralel pentru a
dispune de potentialul sau maxim?
Ce viteza de executie se poate obtine intr-un calculator paralel,
pentru o aplicatie concreta ?
Cum masuram performanta unui calculator paralel ?
Metrici de executie
Viteza maximala: volumul maxim de calcul care poate fi teoretic atins, atunci cand
toate modulele sunt integral utilizate.
Aceasta valoare nu are semnificatie practica pentru utilizatori, fiind utilizat de
producatori pentru a-si face publicitate produselor.
Metrici de executie
Eficacitatea:
S: speedup;
p: numarul de procesoare.
Cu algoritmii avand un grad ridicat de paralelism, calculatoarele masiv paralele, cu cu un mare numar
de procesoare, pot fi utilizate eficace daca si fc este mic; asta inseamna ca timpul necesar
procesorului pentru comunicatii trebuie sa fie mic, comparabil cu timpul sau util dedicat calculelor.
Pentru a mentine fc rezonabil mic, numarul de procesoare nu trebuie sa depaseasca o anumita limita
superioara .
Reteaua de intercomunicatii
retelele mash (plasa) sunt mai ieftine decat cele integral conectate si furnizeaza o
performanta relativ buna .
pentru a transmite o informatie intre anumite noduri este necesara o rutare prin
noduri intermediare (maximum 2*(n-1) intermediare pentru o plasa cu n x n noduri).
Sunt posibile racordari pentru buclarea informatiei: ex. intre nodurile 1 si 13, 2 si 14,
etc.
au fost realizate si mash-uri tridimensionale.
cele 2**n noduri ale retelei hypercub sunt aranjate intr-un cub n-dimensional.
Fiecare nod este racordat la cele n vecine.
pentru a transmite o informatie intre noduri, este necesara rutarea prin noduri
intermediare (maxim n intermediari).
Calculatoarele SIMD
Multiprocesoarele
Calculatoarele MIMD cu memorie partajata se numesc
multiprocesoare.
Multiprocesoarele
Comunicatia intre procesoare se face prin intermediul memoriei
partajate. Daca un procesor schimba o valoare intr-o locatie a
acestea, toate celelalte procesoare pot citi aceasta noua valoare.
Din punct de vedere al programatorului, comunicatia este realizata
prin variabile partajate, adica variabile care pot fi accesate de catre
oricare dintre procesele (activitatile) paralelele:
Ex.:- tabela t in slide 5;
- matricele a, b,si c in slide 7;
Exemple de multiprocesoare
Multicomputerele
Multicomputerele sunt calculatoare MIMD cu un spatiu de adrese
distribuit, astfel incat fiecare procesor are propria sa memorie, care
nu poate fi accesata de alte procesoare.
Multicomputerele (2)
Comunicatia intre procesoare se face numai prin passing
messages, lansate in reteaua de intercomunicatie.
Din punct de vedere al programatorului, consecinta este ca nu
are disponibila nicio variabila partajata (o variabila poate fi
consultata numai de un proces simplu).
Pentru comunicatia intre procese (activitati paralele)
programatorul utilizeaza canale si operatii send/receive (ex. in
slide 10).
Nu exista concurenta intre procesoare pentru memoria
partajata. In consecinta, numarul de procesoare nu mai este
limitat de conflictele de memorie.
Viteza retelei de intercomunicatie este un parametru important
al executiei globale.
Exemple de multicomputere
Intel iPSC/2 (1989): 128 UC de tip 80386 conectate printr-un
hypercube 7-dimensional (2 **7 = 128).
Intel Paragon (1991): peste 2000 procesoare de tip i860
(randement ridicat RISC) conectate printr-o retea mash
bidimensionala.
KSR-1 (1992): 1088 procesoare conectate printr-o retea ring
(inel); fabricat de Kendal Square Research.
nCUBE/2S (1992): 8192 procesoare conectate printr-un
hypercube 10-dimensional; fabricat de nCUBE.
Cray T3E MC512 (1995): 512 UC legate printr-un mash
tridimensional; fiecare unitate centrala este un DEC Alpha RISC.
Retele de posturi de lucru:
Un grup de posturi de lucru este conectat printr-o retea locala (LAN) si poate fi angajat
pentru un calcul paralel, ca un multicomputer.
Performantele sunt de obicei inferioare celor ale multicomputerelor specializate, din cauza
Procesoarele vectoriale
Procesoarele vectoriale includ in setul lor atat instructiuni
scalare, cat si instructiuni pentru operatii asupra vectorilor.
Masinile celulare SIMD pot opera asupra vectorilor executand simultan aceeasi
operatie asupra fiecarui element al vectorului. Fiecare element va fi prelucrat de un
element de tratament separat.
Procesoarele vectoriale au de obicei registre de vector, care pot stoca fiecare 64 pana la
128 cuvinte.
Unitatea vectoriala
O unitate vectoriala se compune tipic din:
- unitati functionale pipeline;
- registri de vector;
Registrii de vector:
Instructiunile vectoriale
Executia inmultirii vectorului nu se poate face pana cand nu s-a terminat adunarea
vectorului; elementele sumei sunt produse printr-o pipeline sumatoaresi intra intr-o pipeline
multiplicatoare; astfel, adunarea si inmultirea sunt executate (partial) in paralel.
Instructiunile vectoriale
Extensiile multimedia
Extensiile multimedia
Se foloseste intreaga largime a canalului de date al procesorului (32 sau 64 bits), numai
ca se trateaza date de tip redus (utilizate in tratamentul semnalelor - 8, 12, sau 16 bits).
Extensiile multimedia
Pentru operatiile multimedia sunt definite trei tipuri de date
impachetate: byte impachetat, semicuvant impachetat, cuvant
impachetat.
Extensiile multimedia
Un exemplu de aritmetica SIMD cu setul de instructiuni MMX:
Extensiile multimedia
Cum sa obtinem datele gata pregatite pentru calcul?
Cum sa obtinem rezultatele intr-un format adecvat?
Solutia: impachetarea si despachetarea datelor
Rezumat
Nevoile crescande de randament ridicat in prelucrare nu pot fi
satisfacute totdeauna de calculatoarele uzuale, dotate cu o
singura UC.
La calculatoarele paralele, mai multe UC functioneaza impreuna
pentru a rasounde unei aplicatii date.
Pentru a utiliza calculatoare paralele, trebuie sa avem disponibile
programe paralele.
Calculatoarele pot fi clasificate pe baza modului de tratare a
fluxurilor de instructiuni si de date asociate acestora. Clasificarea
Flynn propune SISD, SIMD, MIMD.
Performanta in executie obtinuta prin utilizarea calculatoarelor
paralele depinde nu numai de numarul de procesoare disponibile,
ci poate fi limitata de caracteristicile programelor executate.
Eficacitatea utilizarii unui ordinator paralel este influentata de
Rezumat
O componenta cheie a unei arhitecturi
paralele este reteaua de intercomunicatie.
Masinile celulare executa aceleasi operatii ,
ca un ansamblu de unitati de tratare
conectate impreuna.Ele sunt specializate
pentru probleme numerice exprimate in
format matriceal sau vectorial.
Multiprocesoarele sunt calculatoare MIMD
in care toate UC-urile au acces la un spatiu
de adrese partajate comune. Numarul de
uc este limitat.
Multicomputerele au un spatiu de adrese
distribuit. Comunicatia intre UC se face
numai prin lansarea unor mesaje in reteaua
de intercomunicatie. Numarul de UC
conectate poate fi mare.
Procesoarele vectoriale sunt de tip SISD si