Sunteți pe pagina 1din 56

CAP. 2.

TIPURI DE ARHITECTURI

A. Clasificarea Flynn

Fig. 2.1. Structura arhitecturii SISD (arhitectura Von Neumann).

Fig. 2.2. Structura arhitecturii SIMD.

1
Exemplu: nucleul SIMD la GPU Fermi (Nvidia)
2
Fig. 2.3. Structura arhitecturii MISD.

Fig. 2.4. Structura arhitecturii MIMD.

3
Exemple de sisteme MIMD cu cuplaj strâns/slab:
(a) paralelism pe cip
(b) coprocesor
(c) multiprocesor/multinucleu
(d) multicalculator/reţea
(e) grid
4
Fig. 2.5. Arhitectura sistemelor shared memory.

Fig. 2.6. Limitări ale maşinilor shared memory.


5
Arhitecturi cu memorie partajată sau globală – GSM (Global Shared Memory)

Fig. 2.7. Arhitectura UMA (Uniform Memory Access).

Fig. 2.8. Arhitectura UMA cu memorii cache locale LC-UMA (Local Cache UMA).
6
Arhitecturi cu memorie distribuită – DSM (Distributed Shared Memory)

Fig. 2.9. Arhitectura NUMA (Non-Uniform Memory Access).

Fig. 2.10. Arhitectura COMA (Cache-Only Memory Access).


7
Fig. 2.11. Arhitectura CC-NUMA (Cache-Coherent NUMA).

Fig. 2.12. a. Arhitectura sistemelor multiprocesor. b. Arhitectura reţelei crossbar (multistage).


8
Fig. 2.13. Arhitectura sistemelor shared nothing.
B. Clasificarea Wang

Fig. 2.14. Organizarea datelor într-o matrice (m = nr. cuvinte, n = nr. biţi/cuvânt):
WSBS (m = 1, n = 1);
WSBP (m = 1, n > 1);
WPBS (m > 1, n = 1);
WPBP (m > 1, n > 1).
9
C. Clasificarea Tanenbaum

Clasificarea calculatoarelor paralele (Tanenbaum)


MPP = procesoare masiv paralele (Massive Parallel Processors)
COW = cluster de staţii de lucru (Cluster Of Workstations)
10
Structura fizică a unui calculator secvenţial

Fig. 2.15. Maşina Von Neumann.

Fig. 2.16. Etapele execuţiei secvenţiale a unei instrucţiuni.


11
Structuri de calculatoare paralele
Paralelism: A. spaţial/temporal; B. sincron/asincron
1. Calculatoare pipeline

Fig. 2.17. Structura funcţională a unui calculator pipeline.


12
Tehnica pipeline

Fig. 2.18. a. Exemplu de şir de procese la execuţia unei instrucţiuni.

P1 1 2 3 4 5 6 7
P2 1 2 3 4 5 6
P3 1 2 3 4 5
P4 1 2 3 4
P5 1 2 3
t (număr impulsuri de ceas)

Fig. 2.18. b. Desfăşurarea celor 5 procese în timp

13
2. Calculatoare matriceale

Fig. 2.19. Structura funcţională a unui calculator matriceal.

14
3. Calculatoare multiprocesor

Fig. 2.20. Structura funcţională a unui calculator multiprocesor.


Temă. Din care categorie a clasificării arhitecturilor GSM/DSM fac parte structurile funcţionale
ale calculatoarelor pipeline, matriceale şi multiprocesor? Identificaţi paralelismul spaţial/temporal.
15
Mecanisme de prelucrare paralelă

A. Soluţii HW

Fig. 2.21. (1) Multiplicarea şi specializarea ALU pe operaţii.

Condiţia de eficienţă:

tEX(ALU) >> tIF + tID


16
(2) Paralelism şi structură pipeline în CPU (flux de 8, 16, 32 sau 64 biţi)

Fig. 2.22. (3) Arhitectura superscalară.

Exemplu de structură superscalară cu pipeline dual (5 stagii cu unitate IF comună).


17
Fig. 2.23. Arhitectura superscalară cu tehnică de burst (citire în rafale): p Intel 486.

Exemplu de procesor superscalar cu 5 unităţi funcţionale şi 5 blocuri pipeline (S4).


18
Fig. 2.24. Exemplu de arhitectură superscalară cu trei unităţi pipeline în paralel.

Temă: identificaţi zonele din schemă în care se aplică paralelismul spaţial şi temporal.

19
a

c
Fig. 2.25. Modul de operare al tehnicilor: a. pipeline, b. (4) superpipeline şi c. superscalară.
20
(5) Suprapunerea operaţiilor CPU cu operaţiile I/O
(controlere DMA, canale IRQ, procesoare I/O etc.)

Fig. 2.26. (6) Arhitectură SIMD cu unitate ALU vectorială.

21
(7) Utilizarea unui sistem ierarhizat de memorie (fizică şi virtuală)

Sistem ierarhizat de memorie fizică: 5 niveluri (capacitatea şi timpul de acces cresc de sus în jos).

22
B. Soluţii SW

Fig. 2.27. a. (1) Prelucrarea pe loturi (batch processing); b. (2) Multiprogramarea.


23
Fig. 2.28. (3) Repartizarea sau diviziunea în timp a desfăşurării proceselor (time sharing).

Temă. Refaceţi diagramele de timp ale soluţiilor software din fig. 2.27ab şi 2.28, pentru un număr
de 4 procese în paralel, cu următoarele valori ale duratelor etapelor de intrare, calcul şi ieşire
(exprimate în ms): i1 = i3 = 2, i2 = i4 = 1, c1 = 15, c2 = 5, c3 = 10, c4 = 20, o1 = o2 = 1, o3 = o4 = 2.
Rezolvaţi diviziunea în timp în două variante: cu şi fără proces dominant.

24
Noţiunea de multithreading

Thread = un set de instrucţiuni / o parte a aplicaţiei, care se execută independent în cadrul programului/sistemului.
Thread-urile răspund de multitasking-ul în cadrul unei singure aplicaţii.
Multithreading-ul presupune execuţia în paralel a mai multor procese, pentru a îmbunătăţi eficienţa sistemului.
Avantajele threading-ului:
 sarcinile care cer mai mult timp de execuţie pot fi rulate în background;
 interfaţa aplicaţiei este mai atrăgătoare şi mai simplă (se poate folosi o bară de progresie);
 viteza aplicaţiei poate creşte;
 thread-urile sunt utile dacă există decalaje între evenimente, eliberându-se resurse inactive la un moment dat.
Modelele de threading suportate de sistemele win32 sunt:
1. Modelul thread-ului unic (Single Thread Model)
Presupune rularea unui singur thread la un moment dat, iar restul thread-urilor aşteaptă.
Corespunde prelucrării pe loturi (batch processing).
2. Modelul Apartment Thread (Single Thread Apartment Model – STA)
Pot exista mai multe thread-uri execută în cadrul aplicaţiei, fiecare thread fiind izolat într-un „apartament”
separat în cadrul procesului. Fiecare proces poate avea mai multe apartamente, care pot partaja date între ele.
Cererile sunt ordonate prin Windows Message Queue, astfel încât doar un apartament poate fi accesat la un
moment dat. Corespunde multiprogramării.
3. Modelul Multithread Apartment (Free Thread Apartment Model – FTA)
Presupune existenţa unui singur apartament, în care nu este nevoie de ordonare, deoarece toate thread-urile
aparţin aceluiaşi apartament şi pot partaja resursele. Funcţionează pe principiul pipe-line. Corespunde
diviziunii în timp (time sharing). Ex.: mediul de programare Microsoft .NET Framework este de tip multithreading.
25
Evaluarea performanţelor multithreading

Utilizând de n ori mai multe resurse în paralel, un algoritm nu va rula de n ori mai repede, datorită
fenomenului de timp suplimentar (overhead), indus prin aplicarea paralelismului. Cauzele apariţiei acestuia:
 interacţiunea între procese (transmiterea rezultatelor intermediare sau parţiale) şi sincronizarea proceselor;
 inactivitatea temporară (idling), care înseamnă că există procesoare inactive pe anumite perioade de
timp, datorită încărcării inegale şi a aşteptării sincronizării;
 calculele suplimentare, care nu apar în formularea serială a algoritmului.

Parametri de intrare:
timpul de execuţie secvenţial/serial: TS
(măsurat de la începutul şi până la sfârşitul execuţiei algoritmului pe un calculator secvenţial);
timpul de execuţie paralel: TP
(măsurat de la începutul execuţiei şi până la terminarea ultimului subtask în paralel);
numărul de procesoare: p.

Parametri de ieşire:
suprasarcina: TO (Total Parallel Overhead) = diferenţa dintre timpul total de lucru însumat al tuturor
procesoarelor şi timpul necesar celui mai rapid algoritm secvenţial: TO = Σi Ti – mini Ti, i = 1, 2, ..., p;
accelerarea: S (Speedup) = raportul dintre timpul necesar rezolvării unei probleme pe un procesor şi
timpul necesar rezolvării aceleiaşi probleme în paralel pe p procesoare (identice): Si = Ti / TP, i = 1, 2, ..., p
 S = media aritmetică a valorilor Si; dacă cele p procesoare sunt identice în funcţionare  S1 = S2 = ... = Sp = S;
eficienţa utilizării calculatorului paralel: E = S/p (mărime intensivă şi adimensională, care exprimă aportul
în accelerare adus pe un singur procesor, pentru orice valoare a lui p);
costul: C = TP p.
26
Exemplu de aplicare: multithreading on-chip.
(a)(c) trei thread-uri; (d) multithreading de granulaţie fină; (e) multithreading de granulaţie brută.

Thread-urile/firele de execuţie (A, B, C) conţin cicluri de aşteptare, din cauza întârzierilor


memoriei, a dependenţei de rezultatele anterioare sau a salturilor condiţionate. Noţiunea de
multithreading on-chip permite CPU să gestioneze mai multe fire simultan, în încercarea de a
masca aceste pauze. Pe scurt, dacă firul 1 este blocat, CPU are posibilitatea de a rula firul 2, în
scopul de a menţine resursele hardware complet ocupate.
Granulaţia fină maschează pauzele prin rularea circulară a firelor, cu fire diferite în cicluri
succesive. Dacă numărul ciclurilor de aşteptare din fiecare fir este mai mic decât numărul firelor
în paralel, atunci pauzele sunt eliminate (în acest exemplu, pauzele din fire nu durează mai mult
de două cicluri, iar numărul firelor în paralel este trei, deci execuţia are loc întotdeauna la timp).
Granulaţia brută rulează un fir până apare un ciclu de aşteptare, după care comută la firul
următor. Este mai puţin eficientă decât granulaţia fină (poate admite un ciclu de pauză înainte de
comutarea între fire), dar funcţionează mai bine decât aceasta atunci când condiţia anterioară nu mai
este îndeplinită (numărul ciclurilor de aşteptare din fire este mai mare decât numărul firelor în paralel).
27
Exemplu de multithreading on-chip pe un CPU superscalar dual (cu două pipeline-uri).
(a) multithreading de granulaţie fină; (b) multithreading de granulaţie brută; (c) multithreading simultan

Folosind procesoare superscalare, apare şi o a treia soluţie posibilă: multithreading simultan,


văzut ca un rafinament al multithreading-ului de granulaţie brută, în care unui
singur fir (thread) i se permite să ruleze două instrucţiuni pe ciclu, atât timp cât este posibil, dar
atunci când apare o pauză, instrucţiunile sunt imediat preluate din următorul fir din secvenţă,
pentru a menţine procesorul complet ocupat. Multithreading-ul simultan poate ajuta, de
asemenea, să se păstreze ocupate toate blocurile hardware. Atunci când o instrucţiune nu poate fi
rulată, deoarece un bloc de care aceasta are nevoie momentan este ocupat, se alege o instrucţiune
dintr-un alt fir. În figura de mai sus, se presupune că B8 din ciclul 11 se blochează şi, ca urmare,
în ciclul 12 porneşte C7.
28
Exemplu de hyperthreading (Intel) cu partajarea resurselor între thread-uri în microarhitectura Core i7
(Sandy Bridge)

Temă. Fie un număr de p = 5 procesoare (care NU sunt identice), cu timpii de execuţie secvenţiali
sau seriali (în ordine): 12, 8, 16, 4, 20 [ms] şi timpul de execuţie paralel: TP = 24 [ms]. Calculaţi:
a) suprasarcina: TO
b) accelerarea: Si şi S
c) eficienţa: E
d) costul: C
Cum se modifică valorile calculate anterior dacă: 1) TP = 20 [ms]; 2) timpii de execuţie seriali sunt
toţi egali cu 10 [ms] (procesoarele sunt identice); 3) p   (numărul de procesoare este foarte mare)?
29
Exemple de arhitecturi

A. Arhitecturi uniprocesor

Fig. 2.30. Schema arhitecturii generale pentru VAX 11/780.

30
Fig. 2.31. Schema arhitecturii generale pentru IBM 370/168.

Fig. 2.32. Schema arhitecturii generale IBM RS/6000-250.


31
B. Arhitecturi bi/multiprocesor

Fig. 2.33. Schema arhitecturii generale IBM RS/6000-F50.


32
Fig. 2.34. Schema arhitecturii Intel multiprocesor.
BSP = Bootstrap Processor, AP = Application Processor
APIC = Advanced Programmable Integrated Circuit, ICC Bus = Interrupt Controller Communications Bus
33
Fig. 2.35. Arhitectura unui sistem biprocesor cu Pentium II.
Magistrala privată de date permite transferuri bidirecţionale rapide între cele două cip-seturi 440 FX.
34
Fig. 2.36. Arhitectura unui sistem biprocesor cu AMD Athlon.
LPC = magistrala Low Pin Count, FLASH = memorie externă, SIO = Serial Input/Output
Modul snoop pe magistrala Point-to-Point permite citirea datelor de către un procesor din celălalt procesor
(prin Northbridge), nemaifiind necesară accesarea memoriei.
35
Fig. 2.37. Arhitectura unui sistem biprocesor cu AMD K7 pe magistrala EV6.
Magistrala EV6 gestionează transferurile cu sistemul, cu DRAM, AGP şi PCI, având liniile de date şi de
adrese decuplate, procesorul putând să emită cereri în timp ce primeşte date şi comenzi de la logica de sistem.
36
Fig. 2.38. Arhitectura Sun SPARC IV biprocesor.
ECC = Error Checking/Correction Code, DCDS = Dual Chip Data Switch,
SIU = System Interface Unit, MCU = Memory Control Unit
37
Fig. 2.39. Arhitectura sistemului Xeon biprocesor.
Cip-setul i860 (gri): P64H = PCI 64 Hub, MCH = Memory Controller Hub şi ICH2 = I/O Controller Hub.
LPC = magistrala Low Pin Count, FWH = FirmWare Hub, CNR = Communication and Network Riser
38
Fig. 2.40. Arhitectura sistemului AMD Opteron biprocesor
HyperTransport = magistrală de mare viteză de interconectare între cele două CPU, fără legătură cu memoria
39
Fig. 2.29. Arhitectura IBM BlueGene/L (supercalculator masiv paralel; CPU1 – calcule, CPU2 – comunicaţie).
40
C. Arhitecturi multinucleu

Avantajele sistemelor cu procesoare multinucleu:


 Nucleele sunt apropiate fizic  calea de semnal este mai scurtă  procesoarele pot
interacţiona cu o frecvenţă mai mare decât dacă ele ar fi fost separate pe placa de bază.
 Plăcile de bază pot fi proiectate mai mici decât pentru două sau mai multe procesoare.
 Consumă mai puţină putere decât două procesoare mononucleu (nu se transmit semnale în
afara cipului).
 Preţul este mai redus, pachetul fizic fiind de un singur procesor în loc de mai multe.

Dezavantajele sistemelor cu procesoare multinucleu:


 Software-ul trebuie optimizat pentru a dubla viteza de calcul, în funcţie de posibilitatea
aplicaţiilor şi a SO de a crea fire de execuţie (thread-uri) paralele şi independente.
 Un singur pachet fizic trebuie să disipeze de două ori mai multă putere  probleme
deosebite din punct de vedere termic. Soluţie (Intel): integrarea a două nuclee dual-core şi a
unui cache unificat în locul unui nucleu quad-core cu memorii cache separate (se forţează
lucrul numai al unuia dintre cele două nuclee, în loc de toate patru simultan).
 Procesoarele mononucleu folosesc mai eficient resursele de tranzistori de pe cip 
producătorii păstrează o linie de procesoare mononucleu în paralel cu cele multinucleu.
 Limitări de performanţă reală: magistralele de sistem şi de memorie sunt partajate  apare
fenomenul de gâtuire (Neumann bottleneck)  limitarea fluxului de date spre nucleele multiple.
41
Fig. 2.41. Nucleul de execuţie al procesorului Intel Core 2.
BPU = Branch Prediction Unit, CIU = Complex Integer Unit, SIU = Simple Integer Unit, BEU = Branch Execution Unit
42
Fig. 2.42. Configuraţia de procesare vectorială reală pe 128 biţi la Intel Core 2.
43
Fig. 2.43. Structura hardware pentru decodarea instrucţiunilor din arhitectura Intel Core 2.
Fereastra de instrucţiuni = ROB (Reorder Buffer) + RS (Reservation Station) a fost mărită fizic şi virtual
44
Fig. 2.44. Arhitectura AMD Opteron Fig. 2.45. Arhitectura AMD Phenom
dual-core. triple-core.

45
Fig. 2.46. Arhitectura Intel Quad-core.
46
Fig. 2.47. Arhitectura AMD Quad FX.
47
Arhitectura AMD FX 8-core cu 4 module, bazată pe nucleul Bulldozer
FMAC = Fused Multiply–Add Capability (contopirea operaţiilor de  şi  pe 128 de biţi),
FP = Floating Point, NB = Northbridge, Scheduler = planificator de operaţii (Integer/FP)

48
D. Multiprocesare omogenă vs. multiprocesare eterogenă

Arhitectura (stânga) şi cipul (dreapta) Intel Core i7 cu 6 sau 8 nuclee (multiprocesare omogenă)

49
Arhitectura unui DVD-player, cu nuclee multiple şi funcţii diverse (multiprocesare eterogenă)

Arhitectura IBM CoreConnect (multiprocesare eterogenă) cu trei magistrale:


(a) magistrala procesorului: sincronă, rapidă, pipeline pe 32/64/128 linii de date
(b) magistrala I/O: sincronă, de viteză medie, pentru periferice pe 8/16/32 de biţi
(c) magistrala pentru registrele perifericelor: asincronă, de viteză mică, transferuri reduse
50
E. Arhitecturi multiprocesoare/multinuclee (GSM) vs. multicalculatoare/reţele (DSM)

(a) Arhitectură multiprocesor cu 16 CPU şi memorie globală (GSM)


(b) Imagine partiţionată în 16 secţiuni, analizate de CPU diferite

(a) Arhitectură multicalculator cu 16 CPU şi memorie distribuită (DSM)


(b) Imagine divizată între cele 16 memorii asociate CPU
51
F. Arhitecturi de procesoare masiv paralele (MPP)

Arhitectura IBM BlueGene/P


52
IBM BlueGene/P:
(a) cip
(b) card
(c) placă
(d) cabinet
(e) sistem
53
Arhitectura pachetului IBM Red Storm (Seastar = procesor de reţea)

Sistemul IBM Red Storm


54
G. Arhitecturi cluster

Cluster Google tipic


55
H. Arhitecturi grid

(a) sistem de tip magistrală comună (b MB/s) cu 4 CPU: b/4 MB/s


(b) sistem de tip magistrală comună cu 16 CPU: b/16 MB/s
(c) sistem de tip grid cu 4 CPU şi 4 conexiuni: b MB/s
(d) sistem de tip grid cu 16 CPU şi 24 de conexiuni: 1,5b MB/s
Dezavantajul arhitecturii grid: latenţa. Tehnici de reducere a latenţei: replicarea datelor & prefetching.
Temă: recalculaţi valorile de bandă de la sist. magistrală comună şi grid dacă se folosesc 64 CPU.
Legea lui Amdahl
Defineşte limitările fundamentale ale
programării paralele, evaluând performanţele
arhitecturilor care folosesc procesoare multiple:
dacă îmbunătăţirea obţinută prin paralelizare
este utilizată doar pentru o fracţiune F dintr-o
operaţie, nu se poate accelera acea operaţie
mai mult de (factorul de accelerare): 1/(1 – F).
Structura grid stratificată (layer-e) Ex.: F = 20%  factorul de accelerare = 1,25.
56

S-ar putea să vă placă și