Sunteți pe pagina 1din 11

ARHITECTURA CALCULATOARELOR 2006/2007 CURSUL 6

2.4 Alte arhitecturi


Pentru a avea o perspectiv mai larg, s studiem alte alternative la arhitectura de calculator prezentat n capitolele anterioare.

2.4.1 Arhitecturi CISC i arhitecturi RISC


Proiectarea unui limbaj main implic luarea multor decizii, una din ele fiind dac s construim o structur complex, care sa poat decodifica i executa o larg varietate de instruciuni, sau o main mai simpl, care s dispun de un set limitat de instruciuni. Ceea ce se obine in primul caz poarta numele de calculator cu set de complex de instruciuni (complex instruction set computer CISC); a doua opiune conduce la realizarea unui calculator cu un set restrns de instruciuni (reduced instruction set computer RISC). Cu ct structura procesorului este mai complex cu att este mai simpl efectuarea programrii, deoarece poate fi utilizat o singur instruciune pentru execuia unei operai, n timp ce n cazul calculatorului mai simplu aceeai operaie ar necesita o secven de mai multe instruciuni. Dar structurile complexe sunt mai greu i mai scump de realizat, iar realizarea lor poate fi mai costisitoare. n plus o mare parte dintre instruciunile complexe sunt destinate unor aplicaii particulare, ceea ce poate duce la o cretere nejustificat a preurilor. Pentru a minimiza numrul de circuite necesare, procesoarele CISC sunt adesea realizate ntro arhitectur pe dou niveluri n care fiecare instruciune main este executat de fapt ca o succesiune de instruciuni simple. n cadrul acestor arhitecturi, unitatea central de prelucrare dispune de o memorie interna special denumit micromemorie (micromemory), n care este stocat un microprogram un program care controleaz ciclul de extragere - decodificare - execuie al unitii centrale de prelucrare. ntr-un anumit sens unitatea central de prelucrare este de fapt un mic calculator programat s extrag, s decodifice i s execute instruciunile din memoria principal a calculatorului. Pe lng faptul c utilizeaz o arhitectur CISC care nu utilizeaz circuite extrem de complexe care altfel ar fi necesare pentru a suporta un set bogat de instruciuni, soluia cu utilizarea unui microprogram permite adaptarea unei uniti centrale de prelucrare pentru a include in limbajul main unele instruciuni speciale prin simpla modificare a microprogramului. Totui susintorii arhitecturii RISC argumenteaz ca aceste avantaje nu justific dezavantajul complexitii suplimentare care se datoreaz existentei microprogramului. Ei susin c o soluie mai bun o reprezint proiectarea unei maini simple care sa dispun de un set mic, dar bine ales, de instruciuni. Aceast abordare elimin complexitatea datorat existenei unei micromemorii i conduce la obinerea unei uniti centrale de prelucrare cu o structur mai simpl. Pe de alt parte, ns, programele reprezentate sunt mai lungi dect cele corespunztoare unei arhitecturi CISC, deoarece trebuie executate mai multe instruciuni pentru realizarea operaiilor complexe, codificate printr-o singur instruciune n cadrul arhitecturii CISC.
CURS 6 AC 2006/2007 1/11

n prezent pe pia exist att procesoare CISC, ct i procesoare RISC. Procesorul Pentium dezvoltat de firma Intel Corporation, reprezint un exemplu de arhitectur CISC; seriile de procesoare PowerPC, dezvoltate de Apple Computer, IBM i Motorola, urmeaz arhitectura RISC. n anii 1970 au fost multe experimente cu instruciuni foarte complexe, posibile datorit interpretrii. Proiectanii au ncercat s inchid golul semantic ntre ceea ce pot s fac mainile i ceea ce limbajele de programare de nivel nalt cer. Cu greu cineva s-a gndit la proiectarea unor maini mai simple, dup cum puini cercettori caut azi s dezvolte sisteme de operare, reele, procesoare de text mai simple (poate din nefericire). n 1980 un grup la Berkeley condus de David Patterson i Carlo Sequin a nceput proiectarea cipurilor pentru VLSI CPU care nu au folosit interpretarea. Ei au inventat termenul RISC pentru acest concept. Puin mai trziu n 1981, la Stanford, John Hennessy a proiectat i fabricat un cip cumva diferit pe care el l-a numit MIPS. Aceste cipuri au evoluat n produse comerciale importante, respectiv SPARC i MIPS. Aceste procesoare noi au fost semnificativ diferite fa de procesoarele comerciale ale zilei. Pentru ca acestor noi CPU - uri nu li s-a impus s fie compatibile cu produsele existente, proiectanii lor au fost liberi s aleag noile seturi de instruciuni care s maximizeze perormana sistemului n ansamblu. n timp ce accentul iniial a fost pus pe instruciunile simple care au putut fi executate repede, i-au dat curnd seama c proiectarea instruciunilor care s fie rapid lansate n execuie este cheia spre o bun performan. Ct timp dureaz o instruciune este acum mai puin important dect cte instruciuni pot fi lansate pe secund. n acest timp, caracteristica care a atras atenia fiecruia a fost numrul mic de instruciuni, tipic in jur de 50. Acest numr a fost mai mic dect 200 i 300 stabilit de companii ca DEC VAX i IBM pentru main frames. Suporterii RISC - ului au poclamat cea mai bun metod de a proiecta un computer era s se obina un numr mic de instruciuni simple care se execut ntr-un ciclu al cii de date. Argumentul lor a fost c dei maina RISC folosete 4 sau 5 instruciuni pentru a face ceea ce maina CISC face ntr-o instruciune, pentru c instruciunile RISC sunt de 10 ori mai rapide, deoarece nu sunt interpretate, atunci RISC este n avantaj. Deasemenea merit artat c n acelai timp viteza memoriei principale a ajuns la viteza memoriei ROM contol stores, favorizand puternic mainile RISC. S-ar putea crede c datorit avantajelor performanei oferite de tehnologia RISC, mainile RISC (cum este DEC Alpha) au ctig de cauz asupra mainilor CISC (cum este Pentium Intel) pe pia. Nimic de felul acesta nu s-a ntmplat. De ce nu? Mai inti de toate, exist cerina compatibilitii cu variantele anterioare i faptul c s-au investit multe miliarde de dolari n software pentru linia Intel. n al doilea rnd, surprinztor Intel a fost capabil s foloseasc aceleai idei chiar n arhitectura CISC. ncepnd cu 486, CPU-urile Intel conin un nucleu RISC care execut cele mai simple (i tipic cele mai frecvente) instruciuni ntr-un singur ciclu al cii de date, n timp ce interpretarea instruciunuilor mai complicate se face ntr-un mod uzual CISC. Rezultatul net este c instruciunile simple sunt rapide i instruciunile mai puin simple sunt lente. n timp ce aceast abordare hibrid nu este aa de rapid ca proiectarea pura RISC este global competitiv i pentru c permite nc programelor vechi s ruleze nemodificate.

2.4.2 Principiile proiectarii calculatoarelor moderne


Acum, mai mult dect atunci cnd primele maini RISC au fost introduse, anumite principii de proiectare au fost acceptate ca o bun cale pentru a proiecta computere n concordan cu
CURS 6 AC 2006/2007 2/11

nivelul tehnologic hardware disponibil. Exist un set de principii de proiectare, numite uneori principiile de proiectare RISC, pe care proiectanii fac tot posibilul pentru a le urma. Constrngerile externe, cum ar fi i cerina de a pstra compatibilitatea cu unele arhitecturi existente, cer uneori compromisuri. Toate instruciunile sunt direct executate de hardware: Toate instruciunile uzuale sunt direct executate de hardware. Ele nu sunt interpretate de microinstruciuni. Eliminarea nivelului interpretrii se dovedete o surs de cretere a vitezei. Pentru calculatoarele care implementeaz setul de instruciuni CISC, instruciunile complexe pot fi sparte n instruciuni mai mici care sunt executate ca o secven de microinstruciuni. Acest pas n plus poate micora viteza, dar dac aceste instruciuni complexe sunt intlnite mai rar atunci pierderea poate fi acceptabil. Maximizarea ratei la care instruciunile sunt executate: Calculatoarele moderne recurg la diferite trucuri pentru a maximiza performanele, cea mai impotant soluie este de a executa ct mai multe instruciuni pe secund. Deci, dac se pot lansa 500 de milioane de instruciuni pe secund atunci am obinut un procesor 500 MIPS, nu conteaz ct de mult dureaz n total execuia unei instruciuni. Acest principiu sugereaz c metoda paralelismului joac un rol important n creterea vitezei de execuie, deci executarea unui numr mare de instruciuni lente ntr-un timp scurt este posibil numai dac se execut mai multe instruciuni n acelai timp. Instruciunile sunt ntotdeauna ncrcate n ordinea programului, dar nu sunt executate n aceeai ordine pentru c unele instruciuni necesit resurse care momentan pot fi ocupate. Desigur dac instruciunea 1 seteaz un registru, iar instruciunea 2 utilizeaz acest registru trebuie avut grij ca instruciunea 2 s nu citeasc registrul pn cnd acesta nu va conine date valide. Pentru a ine totul n ordine e nevoie de multe inregistrri, dar se obine o performan mare prin executarea unui numr mare de instruciuni n acelai timp. Instruciunile trebuie s fie uor de decodificat: Un loc foarte important n rata de execuie a instruciunilor il reprezint decodarea instruciunilor, operaie care determin ce resurse sunt necesare. Orice mijloc care poate ajuta acest proces este folositor. Aceasta impune construirea instruciunilor n aa fel nct s difere ct mai puin, adic lungime fix, cu un numr mic de parametri. Cu ct diferenele sunt mai mici cu att mai bine. Numai LOAD i STORE trebuie s se refere la memorie: Calea cea mai simpl de a impri operaiile n pai separai necesit ca operanzii pentru majoritatea instruciunilor s vin de la regitri i s se duc la regitri. Operaia de a muta operanzi din memorie n regitri poate fi facut cu instruciuni distincte. Deoarece acesul la memorie poate s dureze mult i durata este imprevizibil, aceste instruciuni pot fi suprapuse cu alte instruciuni dac ele nu fac altceva dect s mute operanzi ntre memorie i regitri. Aceasta observatie nseamn c doar LOAD i STORE trebuie s se refere la memorie. Existena unui numr mare de regitrii: Deoarece accesarea memoriei este lent, este necesar un numr mare de regitri, astfel nct odat un cuvnt extras el s poat fi pstrat acolo pn cnd nu mai este nevoie de el. Stocarea informaiei din regitri n memorie, nseamn i rencrcarea ei din memorie atunci cnd este nevoie de ea, ceea ce trebuie evitat pentru ca nseamn pierdere de timp. Acest lucru poate fi ocolit dac avem destui regitri.

CURS 6 AC 2006/2007

3/11

2.4.3 Prelucrare paralel


ntr-un subcapitol anterior am precizat c exist o limit n ceea ce privete dezvoltarea de calculatoare mai rapide. Motivul este acela c semnalele electrice se propag printr-un cablu cu o viteza care nu poate depi viteza luminii.(Calculatoarele optice, dei sunt in prezent un domeniu promitor de cercetare, sunt i ele afectate de aceast limitare). Cum lumina parcurge o distan de aproximativ 30 de centimetri ntr-o nanosecund (o miliardime de secund) nseamn c este necesar de un interval de cel puin dou nanosecunde pentru ca unitatea de comand din unitatea central de prelucrare sa extrag o instruciune dintr-o celul de memorie aflat la o distanta de 30 de centimetri.(Cererea de citire care trebuie trimis memoriei solicit cel puin o nanosecund, iar trimiterea instruciunii din memorie la unitatea de comand are nevoie i ea de cel puin o nanosecund). n consecin extragerea, decodificarea i execuia unei instruciuni ntr-un asemenea calculator consum mai multe nanoscunde. De aceea, creterea vitezei de execuie a unui calculator devine in ultim instan o problema de miniaturizare i, dei s-a avansat extrem de mult n acest domeniu, exist o limit care nu poate fi depit. ntr-un efort de rezolvare a acestei dileme, cercettorii i-au ndreptat atenia de la viteza de execuie ctre conceptul de capacitate de transfer (troughput). n loc s msoare timpul consumat pentru realizarea unei anumite operaii, capacitatea de transfer se refer la cantitatea total de operaii pe care le poate efectua calculatorul ntr-u anumit interval de timp. Un exemplu privind modul n care poate fi mbuntit capacitatea de transfer a unui calculator, fr ca acest fapt s necesite creterea vitezei de execuie, l reprezint tehnica denumit prelucrare simultan (pipelining). Acest termen provine din analogia cu introducerea de obiecte - in cazul nostru instruciuni - intr-o conduct la unul dintre capete i scoaterea lor pe la cellalt capt. n orice moment, n conducta (pipe) exist mai multe instruciuni, fiecare dintre ele aflndu-se ntr-un alt stadiu de prelucrare. n particular, n timp ce se execut o instruciune, alt instruciune este decodificat i nc o alt instruciune este extras din memorie. Utiliznd un astfel de sistem, dei fiecare instruciune necesit aceeai cantitate de timp pentru a fi extras din memorie, decodificat i executat, capacitatea total de transfer a calculatorului crete de trei ori, deoarece simultan sunt prelucrate trei instruciuni. (n realitate, un factor egal cu trei este arareori atins datorit existenei instruciunilor de salt JUMP. De exemplu, dac apare o instruciune de salt, conducta trebuie golit deoarece n ultim instan, nu instruciunile pe care le conine sunt necesare. Astfel, orice ctig care s-a obinut prin prencrcarea instruciunilor respective se pierde.) 2.4.3.1 Paralelismul la nivelul instruciunilor Proiectanii de calculatoare sunt constant preocupai de a nbunti performanele mainii pe care o creaz. Creterea frecvenei de ceas este o cale, dar pentru orice proiect nou exist o limit n ceea ce reprezint aceast posibilitate n acel moment tehnologic. Frecvent, majoritatea proiectanilor iau n considerare paralelismul pentru a mbunti i mai mult performant pentru o frecven de ceas dat. Paralelismul se manifest n dou forme generale: paralelism la nivelul instruciunilor i paralelism la nivelul procesorului. n primul caz paralelismul este exploatat cu instruciuni individuale pentru a obine un raport instruciuni / secund ct mai mare. n a doua vaariant paralelismul se refer la mai multe procesoare care lucreaz n paralel la aceeai problem. Fiecare abordare are avantajele ei.
CURS 6 AC 2006/2007 4/11

Pipelining S-a tiut de mult c prencrcarea instruciunilor din memorie este un element important pentru vitez de execuie a instruciunilor. Pentru a evidenia aceast problem ne intoarcem n istorie la IBM Stretch (1959) care avea capacitate de a prencrca din memorie n avans instruciunile, aa nct ele s fie acolo cnd este nevoie de ele. Instruciunile erau ncrcate ntr-un set de regitri denumii 'prefetch buffer'. n acest fel cnd era nevoie de o instruciune, aceasta era luat din aceast memorie tampon dect s se atepte completarea unui ciclu de citire din memorie. De fapt prencrcarea mparte execuia instruciunilor n dou faze: prencrcarea i executarea lor. Conceptul de pipeline ofer o strategie mult mai avantajoas. Dect s mpart execuia n dou pari, o mparte n multiple pri, fiecrei pri fiindu-i dedicat o component hardware, acestea executndu-se n paralel. Figura 2.8a ilustreaz un pipeline cu 5 uniti denumite stagii. Stagiul 1 prencarc instruciunea din memorie i o pune ntr-o memorie tampon pn cnd este cerut. Stagiul 2 decodeaz instruciunea, determin tipul ei i ce operanzi necesit. Stagiul 3 localizeaz i prencarc operanzii din regitri sau din memorie. Stagiul 4 face operaia de a executa instruciunea. Stagiul 5 scrie rezultatul instruciuni n registru. S1 Unitatea de prencrcare a instruciunilor S2 Unitatea de decodare a instruciunilor S3 Unitatea de prencrcare a operanzilor S4 Unitatea de execuie a instruciunilor S5 Unitatea de scriere a rezultatului

a) O conduct (pipe) cu cinci stagii S1: 1 2 3 4 5 6 7 8 S2: S3: S4: S5: 1 2 3 4 5 6 7 1 2 3 4 5 6 1 2 3 4 5 1 2 3 4 1 2 3 4 5 6 7 8 Timp 9 8 7 6 5 9 .

b) Starea fiecrui stagiu n timp. Sunt ilustrate nou perioade de ceas. Figura 2.8 Pipeling In figura 2.8b se vede cum funcioneaz un pipeline n timp. n primul ciclu, stagiul 1 lucreaz la instruciunea 1, prencrcnd-o n memorie. n ciclul 2 al ceasului, stagiul 2 decodeaz instruciunea 1 n timp ce stagiul 1 prencarc instruciunea 2. n ciclul 3, stagiul 3 prencarc operanzi pentru instruciunea 1, stagiul 2 decodeaz instruciunea 2 i stagiul 1
CURS 6 AC 2006/2007 5/11

prencarc instruciunea 3. n ciclul 4, stagiul S4 execut instruciunea 1, S3 prencarc operanzii pentru instruciunea 2, S2 decodeaz instruciunea 3 i S1 prencarc instruciunea 4. n final n timpul ciclului 5, S5 scrie rezultatul instruciunii 1, n timp ce celelalte stagii lucreaz asupra urmtoarei instruciuni. S gsim o analogie pentru a face conceptul de pipeline mai clar. Imaginaiv o fabric de prjituri care are o band de npachetat iar de-a lungul acesteia se afl cinci lucrtori. La fiecare 10 secunde, muncitorul 1 pune o cutie goal pe band, aceasta este crat pn la muncitorul 2 care pune o prajitur n ea. Puin mai trziu cutia ajunge la muncitorul 3 unde este inchis i sigilat. Apoi ajunge la muncitorul 4 care pune o etichet pe ea. n final muncitorul 5 ia cutia de pe band i o pune ntr-un container care apoi va fi transportat la magazin. Aceasta este metoda n care lucreaz pipeline-urile n calculatoare: fiecare instruciune trece prin diferite stagii pn la comletarea execuiei. S ne ntoarcem la pipeline-urile noastre din figura 2.8, s presupunem c ciclul acestei maini este de 2ns. Atunci pentru ca o instruciune s se execute complet dureaz 10ns. La prima execuie cu durata de 10ns pe instruciune d impresia c viteza mainii este de 100 MIPS, dar de fapt este mai bun. La fiecare 2ns o nou instruciune este completat, deci viteza este de 500 MIPS-uri nu 100 MIPS. Pipeline-urile permite un raport ntre laten latency (ct de mult dureaz executarea unei instruciuni) i banda de frecven a procesorului - processor bandwidth (ct de multe MIPS-uri face un CPU). Cu un ciclu de T nsec i n stagi n pipeline, latency este n x T nsec i limea de band de 1000/T MIPS-uri. Arhitectura superscalara Dac un pipeline este bun atunci dou pipeline-uri sunt foarte bune. Un proiect posibil cu dou pipeline-uri pentru un CPU, bazat pe figura 2.8 este prezentat n figura 2.9. Aici, o singur unitate de prencrcare prencarc instruciunile i le repartizeaz ctre celelalte pipeline-uri care au propriul ALU pentru a opera n paralel. Pentru a fi posibul ca cele dou instruciuni s se execute n paralel trebuie ca ele s nu utilizeze aceleai resurse i nu trebuie s depind de rezultatul celeilalte. Ca i cu un singur pipeline, fie compilatorul trebuie s garanteze acest lucru (de exemplu hardware-ul nu verific i d rezultate incorecte n cazul n care instruciunile sunt incorecte) sau conflictele trebuie detectate i eliminate n timpul execuiei de o componenta hardware suplimentar. S1 S2 S3 S4 S5

Unitatea de decodare a instructiunilor Unitatea de prencrcare a instruciunilor Unitatea de decodare a instructiunilor

Unitatea de preincarcare a operanzilor Unitatea de preincarcare a operanzilor

Unitatea de executie a instructiunilor Unitatea de executie a instructiunilor

Unitatea de scriere a rezultatului Unitatea de scriere a rezultatului

Figura 2.9 Cinci stagii pe dou lini cu o unitate de prencrcare a instruciunilor


CURS 6 AC 2006/2007 6/11

Pipeline-urile simple sau duble sunt utilizate n general de mainile RISC iar ncepnd cu 486 Intel a introdus pipeline-urile n propriile procesoare. 486 are un pipeline, iar Pentium are doua pipeline-uri cu cte 5 stagi ca n figura 2.9. Diviziunea exact a sarcinilor ntre stagiile 2 i 3 (numite decode 1 i decode 2) este uor diferit dect aceea din exemplul nostru. Principalul pipeline denumit u pipeline poate executa instruciuni arbitrare, iar pipeline-ul secundar denumit v pipeline poate executa numai instruciuni simple cu ntregi (i o instruciune simpl n virgul mobile FXCH). Reguli complexe stabilesc dac un grup de instruciuni sunt compatibile i pot fi executate n paralel. Dac instruciunile din pereche nu sunt suficient de simple sau sunt incompatibile atunci dect una se execut n u pipeline. Instruciunea incompatibil este pstrat i grupat u urmtoarea instruciune. Instruciunile sunt ntotdeauna executate n ordine. Compilatoare adaptate pentru Pentium care genereaz instruciuni compatibile fac ca programele generate s se execute mai repede dect cele obinute cu compilatoare mai vechi. Msurrile arat c un program optimizat pentru Pentium se execut de dou ori mai repede dect unul executat pe un 486 la aceeai frecven de ceas. Cstigul este datorat n ntregime celui de al doilea pipiline. Mergnd la 4 pipeline-uri ideea este bun, dar necesit prea mult hardware.

S4 ALU

ALU S1 Unitatea de Prencrcare a instruciunilor S2 Unitatea de decodare a instruciunilor S3 Unitatea de prencrcare a operanzilor LOAD STORE Floating point S5 Unitatea de scriere a rezultatului

Figura 2.10 Un procesor superscalar cu cinci uniti CPU mai recente abordeaz altfel ideea. Adic ideea de baz ar fi de a avea un singur pipeline, dar care include mai multe uniti funcionale 2.10. De exemplu Pentium 2 are o structur similar cu aceea din figura 2.10. Termenul de arhitectur superscalar a existat din 1987. Rdcinile ei se gsesc ns mai devreme cu 30 ani pe vremea calculatorului CDC 6600. 6600 ncrca o instruciune la fiecare 100 nsec i o pasa la una din cele 10 uniti pentru executare n paralel n timp ce CPU lua urmtoarea instruciune. Ideea implicit ar fi c un procesor superscalar poate prelucra instruciuni n stagiul S3 mult mai repede dect n stagiul s4. Dac stagiul S3 poate executa o instruciune n 10 nsec i toate unitile din S4 pot de asemenea executa o instruciune n 10 nsec, atunci nu mai mult de o unitate din S4 poate fi ocupat la un moment dat, ceea ce ar nega ntreaga idee. n realitate majoritatea unitilor din stagiul S4 au nevoie de mai mult de un ciclu de ceas pentru o execuie, cum sunt cele care acceseaz memoria sau fac operaii n virgul mobil. Aa cum se vede n figura 2.10 pot exista multiple ALU n stagiul S4.
CURS 6 AC 2006/2007 7/11

2.4.3.2 Paralelism la nivel de procesor Cererea pentru calculatoare din ce n ce mai rapide pare a fi de nesatisfacut. Astronomii vor s simuleze ce s-a ntmplat n primele microsecunde dup Bing Bang, economitii vor un model al economiei mondiale, iar tinerii vor s joace jocuri interactive 3D multimedia pe internet cu prieteni lor virtuali. n timp ce CPU este din ce n ce mai rapid, eventual vor ajunge s intre n curs cu viteza lumini, care este de 20 cm/ns n fir de cupru sau n fibra optic orict de inteligeni ar fi inginerii de la Intel. Procesoare mai rapide genereaz caldura mai mare a crei disipare este o problem. Paralelismul la nivel de instruciune ajut un pic, dar pipeline-urile i superscalarea ctig cu adevrat un factor de 5 sau 10. Pentru a obine un factor de 50, 100 sau mai mult, singura cale este de a crea calculatoare cu mai multe procesoare. Alte soluii pentru creterea capacitii de transfer sunt cele din categoria prelucrrii paralele (paralel procesing) n care sunt utilizate mai multe procesoare pentru execuia operaiei curente. Un argument n favoarea acestei abordri l reprezint modelul creierului uman. Tehnologia prezentului se aproprie de posibilitatea realizrii de circuite electronice cu aproape la fel de multe circuite de comutare ci neuroni exist n creierul uman (se crede c neuronii sunt echivalentul natural al circuitelor de comutare), dar n ciuda acestui fapt capacitatea calculatoarelor din zilele noastre reprezint nc doar o fraciune din cea a minii umane. Se consider c acest fapt este rezultatul utilizrii ineficiente a componentelor calculatorului datorita arhitecturii acestuia . La urma urmei dac un calculator are o memorie foarte mare, dar o singur unitate de prelucrare, o mare parte din circuite vor fi inactive n majoritatea timpului. Din acest motiv, susintorii prelucrrii paralele se pronun n favoarea calculatoarelor multiprocesor, care constituie n opinia lor configuraii cu un factor de utilizare mult mai ridicat. n prezent exist diferite tipuri de calculatoare realizate conform acestui principiu. Una din abordri o reprezint cuplarea mai multor uniti de prelucrare, fiecare dintre ele fiind similar unei entiti centrale de prelucrare dintr-un calculator cu un singur microprosesor, la o memorie principal unic. n aceast configuraie fiecare procesor poate lucra independent de celelalte, coordonarea eforturilor realizndu-se prin transmiterea de mesaje stocate n celulele din memoria comuna. De exemplu, atunci cnd un procesor trebuie s execute o activitate complex, el poate stoca n memoria comun un program referitor la o parte a acelei activiti i apoi s ceara altui procesor s execute programul. Se obine un calculator n care diferite secvene de instruciuni sunt executate cu diferite seturi de date, arhitectura care poart numele de MIMD (multiple - instruction stream, multiple - data stream - flux multiplu de instruciuni, flux multiplu de date ) spre deosebire de arhitectura uzuala SISD (singleinstruction stream, single - data stream flux simplu de instruciuni, flux simplu de date ). O alt variant de arhitectur multiprocesor o reprezint conectarea procesoarelor n aa fel nct s execute la unison aceeai secven de instruciuni, fiecare cu un set propriu de date; ceea ce rezult o arhitectura SIMD (single - instruction stream multiple - data stream). Asemenea calculatoare sunt utile n aplicaii n care aceeai operaie trebuie efectuat asupra fiecrei mulimi de elemente similare dintr-un bloc mare de date. Alt abordare a conceptului de prelucrare paralel o reprezint construirea de sisteme de mari dimensiuni alctuite din conglomerate de calculatoare mai mici fiecare dintre ele avnd propria memorie i propria unitate de prelucrare. n cadrul unei asemenea arhitecturi, fiecare dintre calculatoarele mici este conectat la vecinii si, astfel nct sarcinile repartizate ntregului sistem pot fi mprite ntre calculatoarele care-l compun. n acest fel, dac o
CURS 6 AC 2006/2007 8/11

operaie alocat unuia dintre calculatoarele interne poate fi mprit n operaii mai mici independente, acel calculator poate cere vecinilor si s efectueze operaii n paralel. n consecin, operaia iniial se poate realiza ntr-un timp mai scurt dect ar fi fost necesar n cazul n care s-ar fi utilizat un calculator cu un singur procesor. Problemele curente care apar la dezvoltarea i utilizarea calculatoarelor multiprocesor se refer la echilibrarea ncrcrii (load balancing) procesoarelor, adic la alocarea dinamic a operaiilor solicitate la diverse procese astfel nct toate procesoarele sa fie utilizate n mod eficient. Strns legat de aceasta este i problema scalrii, respectiv mpririi operaiei curente ntr-un numr de suboperaii corespunztor numrului de procesoare disponibile. O alt problem o reprezint complexitatea ridicat a alocrii operaiilor distribuite . ntr-adevr, pe msur ce coordonarea interaciunilor dintre diferite operaii crete exponenial. Dac avem 4 operaii atunci exista 6 perechi poteniale de operaii care s-ar putea s comunice ntre ele. Dac numrul de operaii este 5, numrul de ci de comunicaie posibile creste la 10; n cazul a 6 operaii, numrul respectiv crete la 15. Calculatoare matriciale Multe probleme din tiin i inginerie implic matrice sau date care au o structur regulat de organizare. Se efectueaz aceleai calcule asupra multor date diferite n acelasi timp. Regularitatea i structura acestor programe le face ideale pentru creterea vitezei de execuie prin paralelism. Sunt dou metode prin care s-au putut executa mari programe tincifice n timp scurt. Un procesor matriceal (array processor) este alctuit dintr-un numr foarte mare de procesoare identice care execut acelai cod pentru diferite date. Primul calculator matriceal din lume a fost proiectat la Universitatea din Illinois i a fost numit ILLIAC 4 (vezi figura 2.11). Planul original a fost de a construi o main alctuit din 4 cuadrani fiecare cuadrant avand 8x8 zone de elemente procesor/memorie. Cte o unitate de control pe fiecare cuadrant vehiculeaz instruciunile, fiecare procesor execut instruciunile n secven fix utiliznd
Unitatea de control Instruciune unic

8x8 perechi Procesor/Memorie Procesor Memorie Procesor matriceal din categoria ILLIAC IV

Figura 2.11 Calculator matriceal

CURS 6 AC 2006/2007

9/11

Memorie local Memorie Partajat CPU CPU CPU CPU CPU CPU CPU CPU Memorie Partajat

bus (A) (A) Arhitectura multiprocesor cu o singur magistral (B) Arhitectura multicalculator cu memorie local (B)

bus

Figura 2.12 Arhitecturi multiprocesor datele din propria memorie, date care erau nmagazinate la iniializare. Costul fiind prea mare s-a realizat doar un singur quadrant, dar care avea performana de 50 megaflops (milioane de operati n virgul mobil pe secunda). Se spune c dac s-ar fi construit n ntregime ar fi ajuns la performana de 1 gigaflop, ar fi dublat puterea de calcul pe intregul glob. Un procesor vectorial (vector processor) apare pentru un programator ca i unul matriceal. Ca i procesorul matriceal, acesta este eficient n executarea unor secvene de operaii asupra unor perechi de date. Dar, spre deosebire de procesorul matriceal, aici toate operaiile adiionale se se execut ntr-un unic sumator bazat pe tehnica pipeline. Compania Seymour Cray a produs foarte multe procesoare vectoriale, ncepnd cu Cray-1 n 1974 i continund cu modelele actuale. Procesorul matriceal i cel vectorial lucreaz ambele asupra unei matrice de date. Amndou execut o singur instruciune, care de exemplu adun elementele dintr-o pereche vector. Dar, n timp ce procesorul matriceal face acest lucru prin attea sumatoare cte elemente sunt n vector, procesorul vectorial lucreaz cu conceptul de registru vectorial (vector register) care const ntr-un set de regitri convenionali care pot fi ncrcai printr-o singur instruciune din memorie, care de fapt i ncarc din memorie serial. Apoi o instruciune pentru adunare vectorial realizeaz adunarea perechilor cu elemente din doi astfel de vectori prin utilizarea unui sumator pipeline. Rezultatul este tot un vector care va fi nregistrat ntr-un registru vectorial. Procesoarele matriceale se mai fabric, dar foarte rar, pentru c ele necesit execuia unui singur cod asupra diferitelor date de intrare. Acestea pot executa anumite calcule mai repede dect procesoarele vectoriale, dar necesit foarte mult hardware i sunt greu de programat. Procesoarele vectoriale, pe de alt parte, pot fi adugate la procesoarele convenionale. Rezultatul este c partea de program care poate fi vectorizat poate fi executat mai rapid folosindu-se de avantajele unitii vectoriale, iar celelalte pot fi executate convenional pe un singur procesor. Multiprocesoare Elementele de procesare ntr-un procesor matriceal nu sunt CPU independente deoarece exist o singura unitate de control n tot sistemul. Primul sistem paralel cu multiple procesoare este un multiprocessor, un sistem cu mai mult de un processor mprind acesul la o singur memorie (precum oamenii dintr-o sal mpart o singur tabl). Pentru c fiecare CPU poate
CURS 6 AC 2006/2007 10/11

citi i scrie orice parte a memoriei ele trebuie s coopereze (prin program) pentru a nu se ncurca reciproc. Diferite mplementri schematice sunt posibile. Cel mai simplu este s avem o singur magistral i mai multe CPU precum i o singur memorie. O asemenea structur bazat pe o magistrala este prezentat n figura urmtoare. Multe companii produc astfel de sisteme Nu trebuie mult imaginaie pentru a ne da seama c avnd multe procesoare care acceseaz aceeai memorie vor apare conflicte. Proiectanii de sisteme multiprocesr au venit cu diferite soluii pentru aceast problem. O variant este prezentat in figura 2.12, care d fiecrui procesor ceva memorie local care nu este acesibil celorlalte procesoare. Aceast memorie poate fi folosit pentru instruciuni sau pentru date care nu trebuie partajate. Accesul la aceast memorie privat nu se face prin magistrala comun astfel micorndu-se traficul. Multiprocesoarele au avantajul, n comparaie cu alte calculatoare paralele, c modul de programare pentru sisteme cu o singur memorie comun este uor de utilizat. De exemplu, imaginai-v un program care caut o celul de cancer ntr-o fotografie luat prin microscop. Fotografia digitizat este pstrat n memoria la care fiecare procesor are acces. Astfel fiecare procesor poate studia o parte din fotografie n timp ce alt parte este studiat de alt procesor. Multicalculatoare Cu toate c multiprocesoarele cu un numar mic de procesoare (<=64 ) sunt relativ uor de construit, cele mai mari sunt surprinztor de greu de construit. Dificultatea const n a conecta toate procesoarele la o aceeai memorie. Pentru a ocoli aceste probleme, muli proiectani au abandonat ideea de a avea memorii partajate i construiesc doar sisteme constnd dintr-un numr mare de calculatoare conectate, fiecare avnd memoria sa proprie, dar fr memorie comun. Aceste sisteme se numesc multicalculatoare. CPU este un sistem multicalculator care comunic prin trimiterea de mesaje de la un calculator la altul, ceva de genul unui e-meil, dar mult mai rapid. Pentru sistemele mai mari, conectarea fiecrui calculator la celelalte este ineficient, deci sunt folosite topologii ca reele 2D, reele 3D, arborescente i inelare. Ca rezultat, mesajele de la un calculator la altul trebuie de obicei s treac prin unul sau mai multe calculatoare intermediere (switches) pentru a ajunge de la surs la destinaie. Cu toate acestea timpul de transmitere de cteva microsecunde poate fi atins fr mare dificultate. Multicalculatoarele cu aproape 10.000 CPU, au fost construite i puse n aciune. Pe cnd multiprocesoarele sunt mai uor de programat, multicalculatoarele sunt mai uor de construit. Ca urmare s-a intensificat cercetarea n domeniul sistemelor hibrid care combin proprietile bune ale fiecrei variante. Asemenea calculatoare ncearc s prezinte iluzia de memorie mprit, fr a trece prin chinul de a o chiar construi.

CURS 6 AC 2006/2007

11/11

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