Documente Academic
Documente Profesional
Documente Cultură
Introducere 1.1. Definirea Calculului Paralel: Scalability, Programability", Mcgraw-Hill, New York, 1993 P.13.
Introducere 1.1. Definirea Calculului Paralel: Scalability, Programability", Mcgraw-Hill, New York, 1993 P.13.
Creterea continu a complexitii aplicaiilor executate de sistemele de calcul a impus cutarea unor soluii adecvate pentru asigurarea unor performante corespunztoare. Reducerea timpului de execuie s-ar putea realiza prin folosirea unei tehnologii mai rapide, a unei arhitecturi paralele, a unor algoritmi mai performani (paraleli) sau o combinaie a tuturor acestor elemente [5]. Limitele tehnologiei sunt puse n evident de observaia c pe parcursul a 25 ani, dintr-un factor de cretere a performantelor de 106, contribuia tehnologiei este de numai 160 (lund ca referin supercalculatorul CRAY-1) [13]. Conceptul de paralelism aplicat la un sistem de calcul se refer la execuia a ct mai multor operaii n acelai timp. Iniial implementat la nivel aritmetic, prin execuia operaiilor aritmetice cu toi biii operanzilor simultan, paralelismul s-a extins continuu. O prim etap a fost marcat de introducerea paralelismului funcional, prin apariia coprocesoarelor (de I/E, de calcul n virgul mobil etc.). La nivel aritmetic, paralelismul a fost extins prin proiectarea unitilor de calcul pipeline, cte una pentru fiecare operaie aritmetic elementar [14]. Conceptul de prelucrare pipeline a fost aplicat si pentru accelerarea fazelor de extragere, decodificare i execuie a instruciunilor. Urmtorul nivel de paralelism a fost atins prin multiplicarea unor procesoare elementare, fie simple uniti RALU bit-slice, fie uniti centrale complete care coopereaz la rezolvarea aceleai probleme.
12
Conceptul de paralelism presupune n general: mprirea unui task n mai multe subtask-uri de dimensiuni mai reduse; asignarea subtask-urilor la mai muli executani care vor lucra n paralel; coordonarea executanilor;
evitarea descompunerii task-ului iniial n subtask-uri de dimensiuni prea mici, pentru ca nu cumva timpul n care li se comunic executanilor ce au de fcut, s devin mai mare dect timpul pe care-l consum acetia lucrnd efectiv. Exemple: construirea imobilelor, fabricarea de automobile, activitatea din cadrul unor organizaii mari, etc. Calculul paralel constituie o modalitate atractiv de rezolvare rapid a unor probleme de complexitate ridicat (volum mare de date i de calcule necesare), ca de exemplu: modelarea i simularea diferitelor fenomene (planificarea economic, fizic nuclear, chimie molecular, meteorologie, astronomie, seismologie); proiectarea asistat de calculator: construcii de automobile, de avioane; proiectarea automata a circuitelor integrate probleme de optimizare; prelucrarea imaginilor. recunoaterea vorbirii.
1. NOIUNI INTRODUCTIVE
13
14
Un program paralel presupune: descompunerea algoritmului sau a datelor n mai multe pri; distribuirea acestora la mai multe procesoare care vor opera simultan; coordonarea activitii i comunicrii ntre procesoare. Programele paralele au o portabilitate sczut deoarece ele depind direct de caracteristicile constructive i de organizarea hardware a maini. Programe eficiente nu pot fi obinute dac se ignor aceste caracteristici. Activitatea de programare paralel trebuie s in cont de: caracteristicile arhitecturii paralele utilizate; caracteristicile reelei de interconectare a procesoarelor.
Sarcina proiectantului unui sistem de calcul paralel este mult mai dificil dect cea a unui realizator de sistem secvenial. El are de-a face cu un model complex, ce prezint cel puin patru nivele. Acestea corespund etapelor parcurse n rezolvarea unei aplicaii: nivelul algoritmului; nivelul limbajului de nivel nalt; nivelul sistemului de operare; nivelul masinii propriu-zise. Eficiena de ansamblu depinde de corespondena ntre aceste nivele (modele), de ct de bine reprezint un model de calcul, la un anumit nivel, actiunile vecinilor. n plus, proiectantul trebuie s stabileasc momentul la care sunt precizate toate detaliile de implementare, de la toate nivelele, urmat de verificarea consistenei lor.
1. NOIUNI INTRODUCTIVE
15
I/O PROCESOR
CPU
Figura 1.1.
MEMORIE
b) Memorii ntreesute Memoria ntreesut este memoria construit din mai multe module, fiecare cu hardware-ul su de adresare. Unitatea de memorie poate fi fr memorie cache (figura 1.2) sau cu memorie cache (figura 1.3), iar modulele de memorie pot fi accesate simultan. De exemplu, calculatorul Cray-2, conine 256 blocuri de memorie i are o vitez de civa Gflops.
Modul de MEMORIE 1 UNITATE de PROCESARE Modul de MEMORIE 2
16
Modul de MEMORIE
1
UNITATE de PROCESARE MEMORIE CACHE Modul de MEMORIE
2 ....
Modul de MEMORIE N
Figura 1.3.
La acest tip de memorie i ndeosebi la ultima categorie dotat cu memorii cache, timpul de acces scade considerabil. c) Uniti funcionale multiple - mai multe uniti funcionale independente pentru nmulire, adunare, etc. ce pot lucra simultan asupra unor operanzi distinci. De exemplu, calculatoarele CDC 6600 (figura 1.4).
FETCH OPERANZI MPRIRE FETCH OPERANZI NMULIRE Memorie de date
REGISTRE
INCREMENTARE ADUNARE
MULTIPLICARE MPRIRE LOGIC DE CONTROL
Memorie de instruciuni
BUFFER INSTRUCIUNI
Figura 1.4.
1. NOIUNI INTRODUCTIVE
17
d) Procesoare pipeline Sistemul de tip pipeline este compus din mai multe etaje (faze) care pot executa concurent pri (subtask-uri) diferite dintr-un task. Un procesor pipeline este format dintr-o linie de procesoare care i transmit informaia de la unul la altul ntr-o singur direcie (figura 1.5). Structura general a unui calculator secvenial cu procesor pipeline, memorie ntreesut i memorie cache este prezentat n figura 1.5. Un sistem pipeline P este o pereche ordonata <T, S>, unde T este un set de procese sau task-uri, iar S este un set de etaje sau stagii, astfel nct: a. Fiecare task Ti din mulimea T este format din subtask-urile ti1, ti2, , tin care trebuie sa fie procesate secvenial (ieirea calculat de tij reprezint intrarea pentru tij+1): Ti = <ti1; ti2;; tin> (1.1) b. Pentru fiecare task Ti, fiecare subtask tij este procesat de un etaj Sj a lui S, astfel nct subtask-urile ti1, ti2, .., tin ale lui Ti snt procesate, respectiv, de etajele S1, S2, , Sn ale lui S; n aceste condiii, ieirea etajului Sj trebuie s reprezinte intrarea pentru etajul Sj+1. Aceste etaje sau segmente Sj sunt conectate ntre ele formnd o conduct (pipeline) de execuie a fiecrei instruciuni. c. La un moment dat, dou sau mai multe task-uri din mulimea T pot fi procesate simultan n pipeline (etaje diferite pot procesa subtask-uri aparinnd unor task-uri distincte). Memorie Modul 1 Memorie cache Memorie Modul 2 ... SM-1 ... S1 S0 Memorie Modul N
18
ntr-un procesor pot exista mai multe nivele de pipelining: A. Pipeline al instruciunilor (la nivel de instruciune) pentru execuia paralel a instruciunilor. De exemplu, un pipeline cu 5 etaje pentru procesarea instruciunilor memorate n memoria principal. Structura de acest tip const n faptul c, faze diferite ale aceleai instruciuni se execut simultan n uniti specializate diferite ale aceleai uniti centrale de procesare. In acest scop trebuie luate n consideraie i analizate principalele faze de execuie ale instruciunilor. O structur pipeline simplificat cu 5 uniti de procesare se prezint n figura 1.6. Pentru a nelege modul de execuie pipeline a instruciunilor se consider urmtoarele uniti: FI AO EI unitatea de ncrcare (fetch) instruciune din memorie; unitatea de calcul a adreselor operanzilor; unitatea de execuie a instruciunii. DI unitatea de decodificare a instruciunii; FO unitatea de ncrcare (fetch) operanzi din memorie; Simultan, mai multe instruciuni se afl n mai multe stadii de execuie n unitile pipeline ale procesorului (figura 1.6). Fluxul de execuie a instruciunilor este urmtorul (figura 1.7): Unitate de ncrcare instruciune - FI Unit. de decodificare instruciune - DI Unitate de calcul adrese operanzi - AO Unitate de ncrcare operanzi - FO Unitate de execuie instruciune - EI
Memoria
Principal
Figura 1.6.
1. NOIUNI INTRODUCTIVE
19
9 10 Timp
I1 I2 I3 I4 I5 I6
FI
DI FI
A O DI FI
FO A O DI FI
EI FO A O DI FI EI FO A O DI FI EI FO A O DI EI FO A O EI FO EI
Instruciuni
Figura 1.7.
FI aduce prima instruciune din memorie i o ncarc n registrele de instruciuni RI; DI ncepe decodificarea instruciunii din RI, iar FI ncarc urmtoarea instruciune; dup decodificare, AO analizeaz prima instruciune pentru a determina adresele operanzilor, n timp ce DI decodific cea de a doua instruciune, iar FI citete urmtoarea instruciune, .a.m.d. Numrul de instruciuni ce se execut n paralel depinde de numrul unitilor specializate ale procesorului. Instruciunile se execut n paralel dar se afl n stadii diferite de execuie. B. Pipeline aritmetic (la nivel de cuvnt) pentru faza de execuie a unei instruciuni. Acest tip descrie segmentarea operaiilor aritmetice, astfel nct, diferite pri ale unei operaii sunt executate de procesoare distincte. De exemplu, pentru adunarea n virgul mobil a dou numere se fac operaiile din figura 1.8.
operanzi
Comparare operanzi
Aliniere virgul operanzi testare rez. ZERO
ADD
Figura 1.8.
Normalizare
20
C. Macro-pipeline (la nivel de program). Cunoate dou moduri de abordare ce se pot prezenta astfel: 1. Un numr de procesoare asemntoare sau identice sunt conectate astfel nct informaia este transmis ntr-o singur direcie. Arhitecturile de acest tip sunt destinate rezolvrii unor probleme de interes general. 2. Un numr de procesoare diferite sunt conectate astfel nct informaia este transmis ntr-o singur direcie, fiecare procesor rezolvnd o parte diferit a problemei. Este posibil ca procesoare din pipeline s fie compuse, la rndul lor, din mai multe procesoare care lucreaz n paralel. Arhitecturile de acest tip sunt destinate rezolvrii unor probleme specifice, particulare. Utiliznd tehnica pipeline se reduce timpul mediu de execuie a instruciunilor rezultnd o accelerare a calculelor, numit accelerare pipeline (pipeline speedup). Accelerarea pipeline este dat de raportul dintre timpul mediu de execuie a instruciunilor fr pipeline i timpul mediu de execuie a instruciunilor cu pipeline. Pentru a exemplifica, s considerm un procesor pipeline cu m segmente pipeline, fiecare segment avnd o durat de execuie egal cu unitatea de timp. Fie: timpul de execuie secvenial a n instruciuni (Ts); timpul de execuie pipeline (Tp) pentru acelai numr de instruciuni i accelerarea pipeline (Ap). ntre aceste mrimi exist urmtoarele relaii: T s = nm
= n + m 1 = Ts nm = m Tp n + m 1
(1.2)
Din relaiile de mai sus, se poate observa c, teoretic, dac n >> m, accelerarea maxim pipeline ce se poate obine, ignornd eventualele conflicte de execuie, tinde asimptotic ctre numrul de segmente pipeline ale procesorului. Conceptul de arhitectur pipeline superscalar a fost introdus odat cu procesorul Pentium. Astfel, la varianta de baz au fost introduse dou linii, una pentru ntregi i una pentru aritmetica n virgul mobil (liniile U i V). La versiunile Pentium Pro, II i III se utilizeaz 3 uniti autonome pipeline.
1. NOIUNI INTRODUCTIVE
21
Prima unitate - de extragere i decodificare instruciune - efectueaz extragerea n avans a instruciunilor i apoi transformarea lor n microoperaii. A doua unitate - de dispecerizare i execuie - selecteaz microoperaiile care pot fi executate i le distribuie unei uniti specializate (vezi structura de procesor cu uniti aritmetice specializate). A treia unitate unitatea de retragere - asambleaz rezultatele pariale n ordinea stabilit de program. Un alt tip de structur de procesare paralel se refer la utilizarea procesoarelor specializate care posed un set propriu de instruciuni pentru gestionarea operaiilor de intrare-ieire, de procesare grafic, etc. e) Procesoare vectoriale. n procesoarele vectoriale, aceeai operaie se aplic n paralel unor seturi distincte de operanzi. De exemplu, nmulirea a doi vectori A si B de dimensiune n poate fi organizat ca un pipeline cu m etaje. La un moment dat, diferite etaje execut faze diferite ale aceleiai operaii asupra unor seturi diferite de operanzi (figura 1.9).
Unitate de procesare
faza 1
faza 2
...
faza m
A[m+1] B[m+1]
...
22
ntr-un sistem paralel exist mai multe procesoare care colaboreaz pentru a rezolva o anumit problem. Componentele din cadrul sistemului (procesoare, memorii, procesoare de I/O) comunic printr-o reea de interconectare (figura 1.10).
Modul 1 de memorie
Modul 2 de memorie
...
Modul m de memorie
...
PROCESOR n
Strategii de interconectare:
a) Cu magistral comun, ieftin, dar lent (figura 1.11).
P0
P2
...
Pn-1
Figura 1.11.
b) Sistem complet conectat (figura 1.12). Acesta permite comunicarea instantanee ntre orice pereche de procesoare, multe perechi de procesoare putnd comunica simultan. Pentru interconectarea a n n(n 1) procesoare sunt necesare linii de interconectare. Topologia reelei 2
1. NOIUNI INTRODUCTIVE
23
de interconectare n acest caz este static. Pentru valori mari ale lui n, preul reelei devine foarte ridicat. P0 P4
P1
P2
P3
Figura 1.12. Exemplu de sistem complet conectat cu 5 uniti de procesare. c) Reea crossbar (figura 1.13). Are o topologie dinamic i necesit n m puncte de comutare pentru a conecta n + m procesoare. Astfel de reele au un pre foarte ridicat. P0 P1 P2 P3 P4 P5 P6 P7
Figura 1.13. Reea crossbar cu n + m = 8 procesoare. d) Tabloul liniar. Fiecare procesor Pi este conectat cu vecinii si Pi-1 i Pi+1 printr-o legtur bidirecional (figura 1.14).
24
P0
P1
P2
Figura 1.14.
...
Pn-1
e) Tablou bidimensional (figura 1.15. Fiecare nod interior este conectat cu cei 4 vecini ai si printr-o linie de comunicaie bidirecional. La fel ca i la tabloul liniar, reeaua are o structur regulat care poate fi extins utiliznd alte noi noduri. De asemenea, se consider c toate liniile de legtur au aceeai lungime i timpi identici de propagare a informaiei ntre nodurile vecine.
P0,3 P1,3
P2,2 P3,3
Figura 1.15. Tablou bidimensional pentru n = 4 4 procesoare. f) Reeaua arborescent (figura 1.16). Are structur de arbore binar. Procesoarele formeaz un arbore binar complet. Fiecare procesor de pe nivelul i al arborelui, cu excepia rdcinii i a nodurilor frunz, este conectat printr-o legtur bidirecional cu nodul su printe i cu cei doi fii ai si.
1. NOIUNI INTRODUCTIVE
25
Figura 1.16. Reea arborescent cu 4 nivele. g) Conexiunea shuffle-exchange (amestec i schimb), figura 1.17. Se consider date n procesoare P0 , P1 ,. . ., Pn-1 , n fiind o putere a lui 2 astfel nct n=2q procesoare. In conexiunea shuffle procesorul Pi este conectat unidirecional cu Pj, n care:
n dac 0 i 1 2 i 2 j= 2 i + 1 n dac n i n 1 2
(1.3)
n conexiunea shuffle-exchange, fiecare procesor par este conectat bidirecional cu succesorul su (figura 1.17).
P0
P1
P2
P3
P4
P5
P6
P7
Figura 1.17. h) Conexiunea hipercub (figurile 1.18 i 1.19). Are n = 2q procesoare. Fiecare procesor Pi este conectat cu q vecini Pj, astfel nct j n reprezentare binar difer printr-un singur bit de reprezentarea binar a lui i. Dac q = 3 se obine o reea hipercub.
26
P111
P101
n anul 1966, Flynn a fcut o clasificare a arhitecturilor de calculatoare dup natura fluxului de instruciuni (FI) i a fluxului de date
1. NOIUNI INTRODUCTIVE
27
(FD). Clasificarea cuprinde 4 tipuri de calculatoare ce vor fi prezentate n continuare. a) Calculatoare SISD (Single Instruction stream, Single Data stream), figura 1.20. Sunt calculatoare secveniale cu arhitectur clasic von Newmann. Este format dintr-o singur unitate de procesare (P) care primete un flux de instruciuni (FI), de la unitatea de control (C). La fiecare pas de execuie, unitatea de control lanseaz o instruciune care opereaz asupra unei date din fluxul de date (FD) obinut de la unitatea de memorie (M). Avnd un singur procesor, el poate efectua o singur instruciune la un moment dat. Algoritmii ce se execut pe aceste calculatoare sunt algoritmi secveniali. Totui, ele nu exclud paralelismul n totalitate (vezi organizrile de tip look-ahead, pipeline sau n blocuri funcionale ale microprocesoarelor moderne). Modelul tablou de procesoare (conine o mulime de procesoare coordonate de un procesor principal) i modele de arhitecturi pipeline fac parte din clasa SIMD. FD
Figura 1.20.
Calculatoare MISD (Multiple Instruction stream, Single Data stream), figura 1.21. Structura acestor calculatoare este format din n procesare (P), fiecare cu propria lui unitate de control (C), opereaz cu n fluxuri de instruciuni (FI) i primesc un flux unic de date (FD) de la o unitate de memorie (M). La fiecare pas de execuie, asupra unei date primite din memorie, sunt executate simultan operaii diferite, de ctre toate cele n procesoare, n funcie de instruciunea pe care o primete fiecare de la propria sa unitate de control. Aceast clas pare a fi vid, cu toate c n ea ar
28
putea fi cuprinse structuri specializate de procesare. Execuia simultan a mai multor operaii asupra aceleiai date este dificil de definit: poate fi stabilit o ordine de execuie a operaiilor i care este rezultatul final ? P0 FD P1 ... Pn-1 Figura 1.21. b) Calculatoare SIMD (Single Instruction stream, Multiple Data stream), figura 1.22. n aceast structur exist n procesoare (P) identice, fiecare cu memoria sa local n care se pot memora date sau programe. Procesoarele opereaz sincron sub controlul unui singur flux de instruciuni (FI) i a unei singure uniti de control (C), procesoarele executnd aceeai instruciune asupra unor date diferite din fluxul de date multiple (FD). Procesoarele pot comunica prin intermediul unei memorii comune i/sau a unei reele de interconectare. P0 P1 ... Pn-1 Figura 1.22. FD0 FD1 ... FDn-1 Memorie partajat i /sau Reea de interconectare FIn-1 FI0 FI1 C0 C1 ... Cn-1
FI
1. NOIUNI INTRODUCTIVE
29
n aceast clas se pot ncadra att calculatoarele vectoriale, ct si masivele de procesoare. Un masiv de procesoare (MPP, CM-2, ICL DAP etc.) este format dintr-o unitate de control care decodific instruciunile i lanseaz semnale de control ctre procesoare (PE - processing elements), care opereaz asupra datelor locale. Sistemul mai include scheme de mascare ce autorizeaz funcionarea unor submulimi de procesoare i funcii de rutare realizate pe reeaua de interconectare a procesoarelor. d) Calculatoare MIMD (Multiple Instruction stream, Multiple Data stream), figura 1.23. n aceast structur sunt n procesoare (P), n fluxuri de instruciuni (FI) i n fluxuri de date (FD). Fiecare procesor are propria sa unitate de control (C) i propria sa memorie local (M), astfel nct, fiecare procesor opereaz sub controlul unui flux de instruciuni furnizat de unitatea sa de control (procesoarele opereaz n mod tipic asincron), executnd, n general, programe diferite (proprii) asupra unor date diferite (proprii). Procesoarele pot comunica prin intermediul unei memorii partajate i reea de interconectare sau numai a unei reele de interconectare. Aceast clas include toate formele de configuraii multiprocesor, de la reelele de calcul de uz general pn la masivele de procesoare. FI0 FD0 Memorie partajat FD1 i /sau Reea de interconectare FDN-1
C0
P0
C1 ... Cn-1
Figura 1.23.
30
Clasificarea de tip Hockney se refer numai la calculatoarele de tip MIMD. Conform acesteia, calculatoarele MIMD se mpart n dou clase (figura 1.24): conectate; reele. n calculatorul MIMD conectat, procesoarele i memoria sunt legate printr-un ntreruptor prin care fiecare procesor poate comunica cu un alt procesor avnd acces la datele din memorie. Din punct de vedere arhitectural, o problem care se ridic n acest caz este aceea de a gsi un comutator rapid i ieftin. n calculatorul MIMD de tip reea, memoria este distribuit, iar maina este format dintr-un numr de procesoare identice care comunic prin mesaje. Procesoarele sunt conectate ntre ele conform modelelor de reele regulate (ierarhic, gril, cub, reconfigurabil). La acest tip de calculator trebuie gsit acea arhitectur care este cel mai uor de implementat, cel mai uor de programat i care este capabil s echilibreze cel mai bine performana procesoarelor cu viteza de comunicare a mesajelor.
MIMD
CONECTATE
PIPLINE
REELE
IERARHIC
GRIL CU
RECONFIGURABIL
(oricare)
1. NOIUNI INTRODUCTIVE
31
n clasificarea Schwartz se utilizeaz noiunea de granularitate se refer la numrul de procesoare care intr n structura unui calculator paralel. Din acest punct de vedere, calculatoarele paralele se pot mpri n trei categorii principale ce vor fi prezentate n continuare. 1. Calculatoare cu granularitate mare, grosier (coarse-grain) dac acestea sunt compuse dintr-un numr mic de procesoare foarte puternice. Un exemplu de astfel de calculator este calculatorul CRAY Y-MP care conine 8 16 procesoare puternice cu o vitez de procesare de circa 10 GFlops. 2. Calculatoare cu granularitate mic, fin (fine-grain) dac acestea sunt compuse dintr-un numr mare de procesoare mici. Ca exemple se pot aminti: calculatorul Connection Machine 2 (CM-2) care este format din 65536 procesoare de un bit; calculatorul MasPar (MP-1) format din 16484 procesoare de patru bii. 3. Calculatoare cu granularitate medie (medium-grain) dac acestea sunt compuse din cteva sute, cteva mii sau zeci de mii de procesoare de putere medie. Astfel, calculatorul iPSC/860 conine 128 procesoare I860, calculatorul nCUBE-2 conine 8192 procesoare RISC specializate, calculatorul Connection Machine 5 (CM-5) conine 16384 procesoare SPARC. Diferite tipuri de aplicaii sunt adecvate pentru calculatoare paralel cu diferite grade de granularitate. Astfel, aplicaiile cu grad redus de paralelism trebuie executate pe calculatoare cu granularitate, de asemenea, redus, i invers. Cu alte cuvinte, trebuie s se realizeze un optim ntre gradul de paralelism al unui algoritm paralel i granularitatea calculatorului paralel pe care va fi implementat i executat.
1.4.4. Clasificarea Hndler
Clasificarea Hndler are la baz o notaie propus de Hndler n anul 1977 pentru reprezentarea pipeline-ului i paralelismului. Conform acesteia, pipeline-ul i paralelismul poate apare pe trei nivele ale unui sistem de calcul, astfel: Unitatea de Control a Procesorului UCP; Unitatea de Calcul Aritmetic i Logic UAL;
32
Un PCL corespunde unui procesor, un ALU corespunde unei uniti funcionale sau unui element de procesare dintr-un procesor tablou, iar CLB corespunde execuiei operaiilor la nivel de bit n UAL. Conform acestei notaii, un calculator se poate descrie prin intermediul a trei perechi de ntregi, astfel: T(C) = < K*K, D*D, W*W > (1.4) n care: K reprezint numrul de UCP; K numrul de UCP care pot fi legate prin pipeline; D numrul de UAL controlate de fiecare UCP; D numrul de UAL care pot fi legate prin pipeline; W numrul de bii ntr-un UAL sau un cuvnt al unui element de procesare; W numrul de segmente legate prin pipeline n toate UAL sau ntr-un singur procesor. Dac valoarea celui de-al doilea element din fiecare pereche este egal cu 1, el este omis. Operatorul * este folosit pentru a descrie un sistem de calcul care conine diferite tipuri de procesoare. Cu ajutorul acestei notaii poate fi descris ntr-un formalism matematic orice structur de calculator.
Categoria MIMD include o larg clas de calculatoare. n anul 1988, E.E. Johnson a propus o clasificare suplimentar a acestor maini bazat pe structura memoriei (global sau distribuit) i mecanismul utilizat pentru comunicare / sincronizare (variabile partajate sau comunicare de mesaje). Clasificarea Flynn-Johnson este prezentat n figura 1.25. El a mprit clasa calculatoarelor MIMD n 4 subclase: GMSV(Global Memory and Shared Variables) memorie global i variabile partajate; GMMP(Global Memory and Message Passing) memorie global i comunicare de mesaje; DMSV(Distributed Memory and Shared Variables) memorie distribuit i variabile partajate; DMMP(Distributed Memory and Message Passing) memorie distribuit i comunicare de mesaje. Dintre acestea subclasa GMMP nu este larg utilizat.
1. NOIUNI INTRODUCTIVE
33
SISD
(uniprocesor)
SIMD
(arie de procesoare)
MISD
Comunicare / Sincronizare
Distribuit
DMSV
MIMD
DMMP
Memorie
Global
GMSV
GMMP
34
Multiprocesoarele puternic cuplate (figura 1.26) au spaiu de adrese comun realizat printr-o memorie global unic la care este conectat fiecare procesor (cu acelai timp de acces). Fiecare procesor poate avea n plus i propria sa memorie local. Un exemplu din aceast categorie este calculatorul Cedar, Cray, C.mmp (16 procesoare conectate printr-o reea de tipul crossbar la o memorie global). Multiprocesoarele slab cuplate nu au o memorie global unic. Fiecare procesor are o memorie local care poate fi accesast i de celelalte procesoare prin intermediul reelei de interconectare. Timpul de acces la o dat depinde de localizarea acesteia (n memoria proprie procesorului sau n memoria altui procesor). Programarea acestor calculatoare trebuie s in seama de principiul localizrii datelor. MEMORIE PARTAJAT
SISTEM DE INTERCONECTARE
P0
P1 Figura 1.26.
...
Pn-1
c) Multicalculatoarele. Sunt calculatoare MIMD la care procesoarele nu partajeaz un spaiu comun de adrese. Comunicarea ntre procesoare se realizeaz prin mesaje transmise printr-o reea de interconectare. Un exemplu de astfel de calculatoare este calculatorul Intel iPSC/2, NCUBE. d) Calculatoarele vectoriale (figura 2.27) includ n setul de lor instruciuni, pe lng instruciunile scalare, instruciuni care opereaz asupra vectorilor (un vector se consider un set ordonat de elemente scalare omogene: ntregi, caractere, numere reale, etc.). Aceste calculatoare pot avea o structur bazat pe masive de procesoare (SIMD), sau calculatoare SISD avnd UAL cu pipeline. Arhitectura acestor calculatoare se bazeaz pe prezena unor regitri vectoriali.
1. NOIUNI INTRODUCTIVE
35
instruciuni
Unitate scalar instruciuni procesare scalari Regitri scalari date scalare Unitate de procesare l Unitate de control Memorie date vectoriale
Unitate vectorial
Regitri vectoriali
instruciuni procesare vectori
ALU
Figura 1.27. Unitatea vectoriala are n componena sa: n regitri vectoriali Ri, 0 i n 1 , caracterizai prin lungimea maxim a vectorului cu care se poate opera; un registru VL care conine lungimea l a vectorului curent ( 0 l s ); un registru de masca M cu s bii care permite realizarea instruciunilor vectoriale n mod mascat (doar pentru acele elemente ale vectorului pentru care bitul corespondent din M este 1). Instruciunile tipice pentru aceste calculatoare sunt:
36
LOAD STORE R A(x1:x2:incr) LOAD A(x1:x2:incr) R STORE R MASKED_LOAD (A) A MASKED_STORE (R) R INDIRECT_LOAD (A(X)) A(X) INDIRECT_STORE (R) Aritmetice i logice R R op_b R R S op_b R R op_u R M R op_rel R WHERE (M) R
nlnuire (chaining). Operaiile vectoriale se lanseaz nainte ca cele anterioare s fie complet terminate. Deci, se executa n paralel: R2 R0 + R1 (dup ce primul element din R2 s-a calculat, R3 R2 * R4 se nmulete cu elementul corespunztor din R4)
e) Arhitecturi non von Neumann: - calculatoare dataflow - ex: Manchester DataFlow Machine; - maini de inferen - ex: PIM-R; - arhitecturi sistolice.
n arhitecturile cu spaiul de adres partajat al memoriei (sharedaddress-space architectures), procesoarele comunic ntre ele prin date memorate ntr-un spaiu unic i partajat al memoriei.
1. NOIUNI INTRODUCTIVE
37
Calculatoarele MIMD cu memorie partajat, cunoscute i sub numele de multiprocesoare sau sisteme puternic cuplate datorit gradului ridicat de partajare a resurselor. Se cunosc mai multe modele de sisteme cu memorie partajat care difer ntre ele prin modul n care memoria i resursele periferice sunt partajate i distribuite. Aceste modele vor fi prezentate n continuare.
A. Modelul cu acces uniform la memorie (UMA)
n modelul cu acces uniform la memorie (Uniform Memory Access UMA), spaiul memoriei fizice este partajat uniform de toate procesoarele (P) pentru citire i scriere, i de asemenea, timpul de acces al tuturor procesoarelor la toate cuvintele de memorie partajat (MP) este acelai. Arhitectura general a modelului este prezentat n figura 1.28. Un sistem multiprocesor n care toate procesoarele au timp de acces egal la resurse (memorie i echipamente periferice) i toate pot executa programe, funcii de intrare-ieire i funcii ale sistemului de operare, poart numele de multiprocesor simetric. P0 P1 ... Pn-1
REEA DE INTERCONECTARE
MP0
MP1
...
MPm-1
1.28. Modelul cu acces uniform la memorie (UMA) Un multiprocesor n care numai unul sau o parte din procesoare (procesoare master) sunt capabile s execute funcii de intrare-ieire i funcii ale sistemului de operare, poart numele de multiprocesor asimetric. Celelalte procesoare (procesoare ataate) pot executa numai programe utilizator sub controlul procesoarelor master. Un dezavantaj major al acestor modele, care este cu att mai suprtor cu ct numrul de procesoare crete, este legat de faptul c n fiecare ciclu de memorie, fiecare procesor poate solicita accesul la o locaie
38
din memoria partajat, prin intermediul reelei de interconectare, ceea ce impune ca banda de comunicaie a reelei s fie foarte mare. De asemenea, datorit faptului c datele citite, respectiv scrise n memorie trebuie s traverseze unul sau mai multe etaje din reeaua de interconectare, timpul de acces este mai mare i poate afecta serios performanele sistemului.
B. Modelul cu acces neuniform la memorie (NUMA)
n modelul cu acces neuniform la memorie (NonUniform Memory Access NUMA), timpul de acces nu este constant. El depinde de localizarea cuvntului de memorie la care se solicit accesul. Acest model are dou variante: a) Modelul cu memorie local nepartajat i memorie global partajat ce este prezentat n figura 1.29. n acest model, fiecare procesor (P) are ataat un modul de memorie local (ML) n care sunt memorate programele i datele locale ale fiecrui procesor, n timp ce memoria global partajat este format dintr-un numr de module (MGP) n care sunt memorate datele partajate ce pot fi accesate de toate procesoarele sistemului prin reeaua de interconectare. b) Modelul cu memorie partajat distribuit ce este prezentat n figura 1.30. Acest model are memoria distribuit fizic procesoarelor sub forma unor module de memorie partajat (MPD) care formeaz un spaiu unic de adrese accesat de toate procesoarele. Timpul de acces la modulul propriu, ataat procesorului, este mai redus dect timpul de acces la modulele de memorie din alte noduri deoarece, n aceste cazuri, este nevoie de traversarea reelei de interconectare. P0 ML0 P1 ML1 ... Pn-1 MLn-1
REEA DE INTERCONECTARE
MGP0
MGP1
...
MGPm-1
1. NOIUNI INTRODUCTIVE
39
P0
MPD0
P1
MPD1
...
Pn-1
MPDn-1
REEA DE INTERCONECTARE 1.30. Modelul cu acces neuniform la memorie (NUMA). Sistem cu memorie partajat distribuit (MPD)
C. Modelul cu acces partajat prin memoria cache (COMA)
n acest model (Cache-Only Memory Access - COMA), prezentat n figura 1.31., memoria ataat fiecrui procesor este un modul de memorie local cache (C) dar, toate aceste module formeaz mpreun un spaiu global de adrese. Accesul oricrui procesor la oricare modul nelocal de memorie cache se face prin reeaua de interconectare i este asistat de un bloc de memorie cu rol de director (D), avnd funcia de a menine consistena datelor n memoria cache. REEA DE INTERCONECTARE
D0 C0 P0
D1 C1 P1 ...
n arhitecturile cu transfer de mesaje (message-passing architectures), a cror arhitectur tipic este prezentat n figura 1.32, procesoarele (P) sunt conectate ntre ele tot printr-o reea de interconectare
40
ca la modelele prezentate anterior. Este o arhitectur cu memorie distribuit i spaii multiple de adres. Fiecare procesor are propria sa memorie local (M) care nu poate fi accesat de nici unul din celelalte procesoare. REEA DE INTERCONECTARE
P0 M0
P1 M1
...
Pn-1 Mn-1
1.32. Arhitectura cu transfer prin mesaje Procesoarele interacioneaz ntre ele numai prin intermediul mesajelor transmise prin reeaua de interconectare. Calculatoarele MIMD cu transfer prin mesaje poart numele de multicalculatoare sau sisteme slab cuplate (loosely-coupled systems), ntru-ct, gradul de partajare al resurselor este redus.
1. NOIUNI INTRODUCTIVE
41
conectate ntr-o reea local LAN, iar calculatoarele MIMD sunt tot sisteme distribuite. Se constat c este foarte dificil s se fac o distincie clar ntre categoriile de sistem paralel i sistem distribuit avnd n vedere aspectul constructiv i modul de utilizare. Noiunile de sistem paralel i sistem distribuit sunt strns legate una de alta, chiar dac se poate considera c, n general, noiunea de sistem distribuit este mai cuprinztoare nglobnd i pe aceea de sistem paralel.
Multiprocesoare cu memorie partajat centralizat (UMA)
Calculatoare MIMD
Slab cuplate Multicalculatoare Memorie cu spaii multiple de adres i transfer de mesaje
42
implementare sau constrngerile fizice. Se vor prezenta n continuare dou modele teoretice de calculatoare. A. Modelul RAM de calculator secvenial. Sheperdson i Sturgis au modelat calculatoarele secveniale (1963) convenionale ca maini cu acces aleator (Random Access Machine RAM). In figura 1.34 se prezint structura unui astfel de model. Dup cum se observ, el este constituit dintr-o unitate de band de intrare avnd acces numai pentru citire (read-only), o unitate de band de ieire avnd acces numai pentru scriere (write-only) i un program ce nu poate fi modificat. Structura i modul de lucru se prezint pe scurt n continuare. Banda de intrare conine un ir de numere ntregi i de fiecare dat cnd se citete o valoare de intrare, banda avanseaz cu o poziie. Similar, banda de ieire avanseaz cu o poziie dup fiecare operaie de scriere. Memoria este format dintr-un numr foarte mare de registre (r0, r1, r2, ...) n care sunt memorate numere ntregi, r0 fiind registrul acumulator n care se efectueaz calcule. Tipurile de instruciuni ale programului RAM sunt similare celor din calculatoarele convenionale (ncrcare, memorare, citire, scriere, adunare, scdere, nmulire, mprire, testare, salt, oprire). x0 x0 ... xn-1 Banda de intrare (read-only)
PROGRAM
r0 r1 r2 r3 ....... Memorie
Acumulator
y0
y1
x0
1. NOIUNI INTRODUCTIVE
43
Timpul mediu de execuie a unui program este dat de timpul mediu de execuie a programului pentru toate cele n date de intrare. Timpul de execuie n cazul cel mai defavorabil a unui program este o funcie f(n), dat de timpul maxim de execuie a programului pentru toate cele n date de intrare. B. Modelul PRAM de calculator paralel. Fortune i Wyllie au dezvoltat modelul PRAM (Parallel Random Access Machine) pentru modelarea unui calculator paralel idealizat considernd costul suplimentar (overhead) de sincronizare i acces la memorie ca fiind nul. Acest model este utilizat pentru analiza principalilor parametri de performan a calculului paralel: timp de execuie, accelerare, eficien i scalabilitate. Modemul PRAM, a crui structur general este prezentat n figura 1.35, conine p procesoare (P0, P1, ..., Pp-1), o memorie partajat (MP) ce poate fi centralizat sau distribuit. Procesoarele opereaz sincron ntr-o secven de cicluri de citire din memorie, calcule, scriere n memorie. Trebuie remarcat faptul c modelul PRAM este ndeprtat de realitate, dar el este creat nu pentru a modela o main real, ci pentru ai permite proiectantului unui algoritm paralel s se concentreze ndeosebi asupra aspectelor legate de concuren. Modelul PRAM are urmtoarele opiuni de acces concurent al procesoarelor la memoria partajat: ER (Exclusive Read) citire exclusiv, prin care, ntr-un ciclu, cel mult un procesor are dreptul s citeasc dintr-o anumit locaie de memorie; EW (Exclusive Write) scriere exclusiv, prin care, ntr-un ciclu, cel mult un procesor are dreptul s scrie ntr-o anumit locaie de memorie; CR (Concurrent Read) citire concurent, prin care, n acelai ciclu, mai multe procesoare au dreptul s citeasc dintr-o anumit locaie de memorie; CW (Concurrent Write) scriere concurent, prin care, n acelai ciclu, mai multe procesoare au dreptul s scrie ntr-o anumit locaie de memorie.
44
P0
... Pp-1
1.35. Modelul PRAM cu p procesoare i memorie partajat Combinnd opiunile prezentate mai sus, rezult mai multe variante ale modelului PRAM. Importante sunt variantele care se deosebesc ntre ele prin modul n care ele rezolv conflictele de acces la scriere concurent (accesul concurent la citire nu creeaz conflicte). Aceste variante sunt: EREW -PRAM (Exclusive Read and Write) citire i scriere exclusiv, prin care, este interzis ca mai mult de un procesor s aib dreptul s acceseze pentru citire sau scriere, simultan, aceeai locaie de memorie (este cel mai restrictiv model PRAM); CREW -PRAM (Concurrent Read and Exclusive Write) citire concurent i scriere exclusiv, prin care, conflictele de scriere n memoria partajat sunt evitate prin excludere mutual, iar accesele concurente de citire ale mai multor procesoare la aceeai locaie de memorie sunt permise; ERCW -PRAM (Exclusive Read and Concurrent Write) citire exclusiv i scriere concurent, care se permit accese exclusive la citire i accese concurente la scriere; CRCW (Concurrent Read and Concurrent Write) citire i scriere concurent, prin care sunt permise accese concurente de citire i de scriere la aceeai locaie de memorie. Aceast variant poate fi clasificat n funcie de modul de rezolvare a scrierilor concurente, astfel:
1. NOIUNI INTRODUCTIVE
45
Modul comun (Common - PRAM) operaiile de scriere memoreaz aceeai valoare la locaia accesat simultan (permit scrieri concurente doar ale aceleiai valori); Modul arbitrar (Arbitrary - PRAM) una, oricare din valori ce se ncearc a se scrie concurent, este memorat, iar toate celelalte sunt ignorate; Modul minimal (Minimum - PRAM) numai procesorul cu indexul cel mai mic are dreptul de acces la scriere; Modul prioritar (Priority - PRAM) se memoreaz o valoare obinut prin aplicarea unei funcii asociative (o combinaie cum ar fi nsumarea) a tuturor valorilor ce se ncearc a se nscrie concurent n aceeai locaie de memorie. Pornind de la cele prezentate mai sus, se poate remarca urmtoarele: modelul EREW este cel mai slab; modelul prioritar este cel mai puternic i ofer timpul de execuie cel mai scurt; orice algoritm EREW se poate executa cu acelai timp de execuie ntr-un model CREW, prin simpla ignorare a facilitii de acces concurent de citire i ntr-un model CRCW, prin simpla ignorare a facilitii de acces concurent pentru citire i scriere; modelul prioritar cu p procesoare poate fi simulat printr-un model EREW cu p procesoare, iar timpul de execuie crete cu un factor egal cu log p.