Sunteți pe pagina 1din 48

2.

TIPURI DE ARHITECTURI

2.1. Clasificarea arhitecturii sistemelor de calcul

2.1.1. Clasificarea Flynn

Clasificarea Flynn se face după gradul de multiplicitate al şirurilor formate


din secvenţe de instrucţiuni şi secvenţe de date care pot fi tratate simultan din punct
de vedere hardware. Prin secvenţă de date se înţelege un şir de date de intrare,
rezultate parţiale sau rezultate temporare care sunt apelate de către o secvenţă de
instrucţiuni.
Conform acestei clasificări există patru tipuri de arhitecturi:
 SISD (Single Instruction Stream – Single Data Stream);
 SIMD (Single Instruction Stream – Multiple Data Stream);
 MISD (Multiple Instruction Stream – Single Data Stream);
 MIMD (Multiple Instruction Stream – Multiple Data Stream).
Pentru aceste arhitecturi există trei tipuri de componente de sistem: UC
(unitatea centrală), UP (unitatea de prelucrare) şi MM (modulul de memorie).
Deşi sunt diferite între ele, toate schemele următoare respectă succesiunea
evenimentelor din arhitectura Von Neumann: instrucţiunile şi datele sunt extrase
din memorie, instrucţiunile sunt decodate de UC care trimite secvenţa de
instrucţiuni către UP pentru execuţie, datele circulă între memorie şi procesor pe o
cale bidirecţională.
În continuare se va nota şirul de date cu SD şi cel de instrucţiuni cu SI.

2.1.1.1. Arhitectura SISD

Fig. 2.1. Structura arhitecturii SISD.

Caracteristici:
 instrucţiunile sunt executate serial, însă pot exista suprapuneri în
execuţie (pipeline). Majoritatea structurilor SISD rămase astăzi în uz
folosesc structuri pipeline.
22 ARHITECTURA SISTEMELOR DE CALCUL

 un calculator cu structură SISD poate avea mai multe elemente de


prelucrare (funcţii definite), toate găsindu-se sub supervizarea aceleiaşi
unice UC.
Exemple: IBM 7090, VAX 11/780, CDC 6600, IBM 360/91, CRAY.
Limitările arhitecturii SISD
La acest tip de arhitecturi, viteza calculatorului este determinată de perioada
ceasului. Dacă perioada ceasului scade, calculatorul devine în consecinţă mai rapid.
Pentru a obţine un ceas mai rapid există două posibilităţi:
 calea de semnal să fie mai scurtă;
 tranzistoarele folosite să fie mai rapide.
Din nefericire, se pare că ambele au atins o anumită limitare din punct de
vedere tehnologic.
Scurtarea căii de semnal ar costa foarte mult. Creşterea numărului de
tranzistori pe unitatea de arie ar duce la creşterea dramatică a căldurii disipate în
exterior. Sistemele suplimentare de răcire ar costa şi ele foarte mult.
Se lucrează în prezent la fabricarea unor cipuri de joasă putere (Low Power
Chips) care ar duce la scăderea căldurii generate. Aceasta se poate realiza prin
menţinerea constantă a densităţii de energie în timp ce numărul de tranzistori pe
unitatea de arie a cipurilor ar creşte.
Realizarea de tranzistori mai rapizi este, de asemenea, foarte costisitoare. În
acest scop se lucrează la scăderea rezistenţei firelor prin care trece curentul.
Aluminiul este elementul folosit în 1998, dar recent s-a reuşit construcţia unui cip
cu fire din cupru. Concomitent cu scăderea rezistenţei firelor se lucrează şi la
îmbunătăţirea izolaţiei dintre fire.
Este evident că perioada ceasului nu poate fi făcută egală cu 0. În consecinţă,
modul secvenţial de tratare a operaţiilor impus de arhitectura von Neumann
distruge orice speranţă într-o viitoare creştere a vitezei calculatoarelor. Această
situaţie este cunoscută sub denumirea de gâtul sticlei lui Neumann (Neumann
bottleneck). Pentru a sparge această limitare, trebuie introdusă o arhitectură de tip
neserial. Alternativa este reprezentată de arhitecturile de calcul paralele.

2.1.1.2. Arhitectura SIMD


Caracteristici:
 există mai multe UP datorită şirului de date multiplu, preluat din
memoria partajată (memoria împărţită în mai multe memorii);
 corespunde matricelor de microprocesoare: UP identice şi supervizate
de o singură UC;
 toate UP primesc instrucţiunile (setul unic de instrucţiuni) care acţionează
asupra unor seturi de date diferite, provenite din şiruri diferite de date
SD1, ..., SDn;
 maşinile SIMD pot efectua două tipuri de prelucrări: pe cuvânt (word-
slice) şi pe bit (bit-slice).
Tipuri de arhitecturi 23

Fig. 2.2. Structura arhitecturii SIMD.

Aceste tipuri de maşini lucrează foarte bine pe seturi de date formate de


matrice de dimensiuni foarte mari atunci când este necesar să se execute asupra lor
aceeaşi operaţie. Maşinile SIMD sunt eficiente şi în cazul procesării reţelelor neurale.
Exemplu: CM (Connection Machine) fabricată de Thinking Machines
Company din Cambridge (Massachusetts).
Limitările arhitecturii SIMD
Aceste tipuri de maşini sunt destul de scumpe în ceea ce priveşte costurile de
producţie, deoarece bancurile de procesoare nu sunt componente standard. Chiar
dacă numărul celor care au nevoie de astfel de maşini este în continuă creştere,
aceştia nu sunt destul de numeroşi pentru a justifica existenţa unor fabrici dedicate
exclusiv producţiei de SIMD-uri. În consecinţă, aceste maşini sunt în general
făcute la comandă şi costă foarte mult.

2.1.1.3. Arhitectura MISD


Deşi această maşină este posibil de realizat din punct de vedere teoretic, nu a
fost niciodată fabricată în scop comercial. A fost construită în laboratoare de
cercetare, dar nu au existat clienţi dornici să investească într-o astfel de arhitectură,
deoarece nu se adresează nici uneia dintre aplicaţiile de bază.

Fig. 2.3. Structura arhitecturii MISD.

Caracteristici:
 fiecare UC lucrează cu şirul de instrucţiuni propriu SI1, ..., SIn;
 fiecare UP lucrează cu acelaşi şir de date, care suportă mai multe prelucrări;
 partajare pe orizontală (un singur şir de date, mai multe şiruri de instrucţiuni);
24 ARHITECTURA SISTEMELOR DE CALCUL

 ieşirea de la UP1 devine intrare pentru UP2 ş.a.m.d.


Structura se numeşte macro-pipeline (are doar o valoare teoretică).

2.1.1.4. Arhitectura MIMD


Aceste tipuri de calculatoare sunt cunoscute sub denumirea de
multiprocesoare, chiar dacă şi maşinile SIMD sunt tot multiprocesor. În
calculatoarele MIMD paralelismul este realizat prin lansarea în execuţie a mai
multor instrucţiuni în acelaşi timp pe diferite seturi de date. Este evident că sunt
necesare elemente adiţionale de control pentru a trimite instrucţiunea corectă şi
data care trebuie la procesorul ales, toate în acelaşi timp. Cele mai multe sisteme
multiprocesor intră în această clasă.

Fig. 2.4. Structura arhitecturii MIMD.

Avantajele arhitecturii MIMD sunt:


 viteză mare de prelucrare, dacă prelucrarea poate fi descompusă în fire
paralele, toate procesoarele prelucrând simultan;
 întrucât procesoarele şi blocurile de memorie sunt resurse de tip general,
defectarea unei unităţi se poate compensa prin alocarea sarcinii de
prelucrare altei unităţi (grad ridicat de toleranţă la defectări);
 se poate utiliza reconfigurarea dinamică pentru a face faţă gradelor
variabile de încărcare a procesoarelor.
Exemple de sisteme MIMD: C.mmp, Cm* (Carnegie Mellon University),
Ultracomputer (New York University), Cedar (University of Illinois), BBN
Butterfly, Alliant FX, CM-5 (Thinking Machine Corporation), seria Intel iPSc etc.
Sistemele MIMD se mai numesc intrinseci sau propriu-zise dacă au UP
interactive: toate şirurile de date provin din acelaşi spaţiu de memorie adresat de
cele n procesoare (dacă nu se întâmplă acest lucru – spaţii disjuncte ale memoriei –
se spune că există un set de n sisteme SISD independente).
Cele două tipuri de sisteme prezentate mai sus se mai numesc shared
memory (memoria este accesată de toate procesoarele) şi shared nothing (fiecare
procesor are propria memorie, propriul disc şi propriul sistem de comunicaţii).
Dacă la un sistem MIMD intrinsec interacţiunea între microprocesoare este
puternică, sistemul se numeşte cu cuplaj strâns. Legătura procesor – memorie se
face prin intermediul unor magistrale de interconectare. Comunicaţia şi sincronizarea
între procesoare se realizează prin zone comune de memorie. Avantaj: comoditate
de programare oferită de spaţiul comun de adrese (shared address space).
Tipuri de arhitecturi 25

În caz contrar, sistemul se numeşte cu cuplaj slab. Legătura procesor –


memorie se face prin conexiuni seriale punct-la-punct (de tip reţea). Comunicaţia
între procesoare se face prin mesaje (message passing). Fiecare procesor dispune
de memorie proprie (private memory). Avantaj: scalabilitate (posibilitate comodă
de expandare). Cele mai multe sisteme comerciale sunt cu cuplaj slab.
Exemple: IBM 370/168 – cuplaj slab, CRAY 2 – cuplaj strâns.

2.1.1.5. Sisteme cu memorie partajată (shared memory)


În cazul maşinilor cu memorie partajată, maşina originală von Neumann a
fost extinsă prin includerea a ceea ce se numeşte memorie cache. Aceasta este o
memorie locală ataşată fiecărui procesor în parte, care îi permite procesorului să
aibă acces rapid la propriile seturi de instrucţiuni şi date, dar să poată accesa în
continuare memoria principală prin magistrala de memorie. Acest tip de maşină se
mai numeşte arhitectură cu multiprocesare simetrică şi este prezentat în figura 2.5.

Fig. 2.5. Arhitectura sistemelor shared memory.

Dintre sistemele mai vechi, în această categorie se înscrie seria IBM


RS/6000: J40, J50, R40 şi R50. Modelul J40 are două nivele de cache în loc de
unul singur. În loc să folosească o magistrală pentru a lega diferitele procesoare cu
memoria principală, IBM a dezvoltat un aşa-numit crossbar care, spre deosebire de
magistrala convenţională, permite până la patru transferuri simultane cu memoria.
Limitările arhitecturilor MIMD cu memorie partajată

Fig. 2.6. Limitările calculatoarelor cu memorie partajată.


26 ARHITECTURA SISTEMELOR DE CALCUL

La aceste arhitecturi, „gâtul sticlei” (bottleneck) îl reprezintă magistrala de


memorie. Toate instrucţiunile şi datele fiecărui procesor trebuie să treacă prin
această magistrală. Când procesoarele care folosesc aceeaşi memorie sunt puţine,
performanţele depind liniar de numărul procesoarelor. Pe măsură ce acesta creşte,
mărirea performanţelor este din ce în ce mai slabă, aşa cum rezultă din figura 2.6.
Există două tipuri de sisteme MIMD cu memorie partajată:
 cu resurse globale (Global Shared Memory):
o arhitectura UMA (Uniform Memory Access);
o arhitectura UMA cu memorii cache locale;
 cu resurse distribuite (Distributed Shared Memory):
o arhitectura NUMA (Non-Uniform Memory Access);
o arhitectura COMA (Cache-Only Memory Access);
o arhitectura CC-NUMA (Cache Coherent Non-Uniform Memory Access).
A. Arhitecturile GSM (Global Shared Memory)
Calculatoarele MIMD cu spaţiu unic de memorie au un cost relativ scăzut şi, din
acest motiv, se bucură de o popularitate ridicată. Acestea sunt considerate a fi sisteme
cu cuplaj strâns, datorită gradului ridicat de partajare a resurselor. Funcţionarea
întregului sistem paralel este coordonată de către un singur sistem de operare, care
se ocupă de planificarea în execuţie a proceselor pe procesoarele disponibile în
sistem, în condiţiile în care se doreşte o încărcare cât mai echilibrată a acestora.
Arhitectura UMA (Uniform Memory Access)
Memoria fizică a calculatoarelor de tip UMA este compusă din mai multe
blocuri care formează un spaţiu unic de adresare. Procesoarele accesează blocurile
de memorie prin intermediul reţelei de interconectare (vezi figura 2.7), care poate fi
statică (formată din conexiuni fixe, punct-la-punct, între nodurile reţelei) sau
dinamică (formată din conexiuni variabile în timp, de tip crossbar).

Fig. 2.7. Arhitectura UMA.

Principala caracteristică a calculatoarelor UMA este că toate procesoarele au


timp de acces egal la memoria partajată. Însă, tocmai de aceea, numărul
procesoarelor utilizate în cadrul sistemului paralel nu poate fi foarte mare, deoarece
creşterea numărului de procesoare din sistem atrage după sine o probabilitate mai
mare de conflict în ceea ce priveşte accesarea concurentă a aceleiaşi zone de
memorie. Într-un astfel de caz, se vor înregistra timpi de aşteptare care vor conduce
la o utilizare ineficientă a procesoarelor şi la o încărcare neechilibrată a acestora.
Tipuri de arhitecturi 27

În plus, pentru obţinerea unor performanţe deosebite, reţeaua de comunicaţie


va trebui să ofere o lărgime de bandă suficient de mare, deoarece fiecare procesor
poate necesita accesul la memoria partajată, ceea ce presupune transportul datelor
solicitate din memoria comună către procesorul care a formulat cererea.
Arhitectura UMA cu memorii cache locale
O îmbunătăţire adusă modelului UMA o reprezintă utilizarea memoriilor
cache la nivelul elementelor de procesare (vezi figura 2.8). Fiecare procesor va
avea asociată o astfel de memorie. Atunci când un procesor solicită date, mai întâi
se verifică dacă aceste date se găsesc deja în memoria cache locală. În caz
afirmativ, acestea se transferă foarte rapid procesorului, fără a accesa memoria
partajată. Astfel, problema conflictelor de acces concurent la spaţiul unic de
memorie se rezolvă, cel puţin, parţial. Mult mai puţine cereri vor ajunge să
acceseze memoria partajată şi, din acest motiv, probabilitatea de apariţie a
conflictelor devine mult mai mică.

Fig. 2.8. Arhitectura UMA cu memorii cache locale.

Utilizarea memoriilor cache presupune însă şi asigurarea consistenţei


acestora. În momentul în care anumite date stocate în memoria globală se modifică,
aceste modificări trebuie să fie semnalate tuturor memoriilor cache care stochează
cópii ale datelor respective. Mai mult chiar, atunci când se schimbă conţinutul
datelor de la nivelul unei memorii cache este nevoie ca modificările să fie efectuate
în toate memoriile cache care conţin cópii ale datelor actualizate. Menţinerea
coerenţei memoriei cache se poate realiza atât prin mecanisme software, cât şi prin
mecanisme hardware. Modelele cu acces neuniform la memorie încearcă să evite
dezavantajele întâlnite la calculatoarele de tip UMA.
B. Arhitecturile DSM (Distributed Shared Memory)
Reprezintă sisteme cu memorie partajată, dar care este distribuită din punct
de vedere fizic. Astfel, procesoarele au asociate memorii locale care formează
împreună o memorie globală care poate fi accesată direct de către toate elementele
de procesare. Timpul de acces la locaţiile de memorie nu mai este uniform, el
depinzând de localizarea fizică a datelor care se doresc a fi transferate.
28 ARHITECTURA SISTEMELOR DE CALCUL

Arhitectura NUMA (Non-Uniform Memory Access)


În cazul acestui model, memoria partajată este distribuită fizic procesoarelor
din sistem (vezi figura 2.9). Astfel, fiecare element de procesare are asociată o
memorie locală. Toate aceste memorii locale formează un spaţiu unic de adresă şi,
din acest motiv, timpul de acces la memorie este neuniform. Explicaţia este aceasta:
accesul la datele aflate în memoria locală este foarte rapid, în timp ce accesul la
datele aflate în memoria locală a altor elemente de procesare va fi mult mai lent, din
cauza faptului că datele respective vor fi transportate prin reţeaua de comunicaţie.

Fig. 2.9. Arhitectura NUMA.

Observaţie. Sistemele NUMA sunt foarte asemănătoare sistemelor distribuite,


din moment ce fiecare procesor dispune de o memorie locală, iar toate aceste
module locale formează un spaţiu unic de adresare.
O caracteristică importantă pentru maşinile NUMA este factorul NUMA.
Acest factor arată diferenţele de latenţă pentru accesarea datelor din memoria
locală comparativ cu accesarea dintr-o zonă care nu este locală. În funcţie de
conexiunile sistemului, factorul NUMA poate diferi pentru diverse părţi ale
maşinii: accesarea datelor dintr-un nod vecin este mai rapidă decât accesarea
datelor dintr-un nod mai îndepărtat pentru care este necesară traversarea unui
număr mai mare de etaje crossbar. Aşadar, atunci când este menţionat, factorul
NUMA se referă de obicei la cele mai îndepărtate două procesoare ale unei reţele.
Arhitectura COMA (Cache-Only Memory Access)
În cazul modelului COMA, spaţiul global de adrese este format din memorii
cache locale fiecărui procesor. Atunci când un procesor are nevoie de anumite date,
acestea sunt mai întâi aduse în memoria cache de către controlerul de memorie,
după care acestea vor fi accesate foarte rapid (vezi figura 2.10).

Fig. 2.10. Arhitectura COMA.


Tipuri de arhitecturi 29

Observaţie. Dispare conceptul de memorie globală, controlerul de memorie


având responsabilitatea de a încărca în memoriile cache locale datele ce urmează a
fi accesate de către procesoare. Încărcarea datelor presupune localizarea şi
transportul acestora prin intermediul reţelei de interconectare. Prin folosirea
memoriilor cache locale, probabilitatea ca un procesor să acceseze majoritar date
numai din memoria locală creste foarte mult.
Totuşi, folosirea memoriilor cache pe post de memorii locale atrage după
sine şi o serie de probleme. Atunci când se încearcă aducerea unui bloc de date
într-o memorie cache integral ocupată, apare necesitatea mutării unui alt bloc de
date pentru a se crea spaţiul necesar memorării noului bloc care va fi accesat de
către procesor. Însă, din cauza faptului că nu mai există o memorie globală în care
să se scrie acest bloc, va fi nevoie ca datele conţinute să fie mutate în memoria
cache a unui alt procesor. Aceste date însă nu vor fi niciodată accesate de către
procesorul care foloseşte memoria respectivă, ceea ce conduce la o scădere a
eficienţei de utilizare a sistemului.
În plus, operaţia de transfer a blocului de date dintr-o memorie cache în alta
este şi ea consumatoare de timpi de procesare, din moment ce datele trebuie să
circule prin reţeaua de interconectare. Aceşti timpi morţi atrag după sine o utilizare
ineficientă şi o încărcare neechilibrată a procesoarelor.
O altă problemă o reprezintă asigurarea coerenţei memoriilor cache, în
contextul în care operaţiile de mutare a blocurilor devin din ce în ce mai
complicate, atunci când numărul de procesoare din sistem este din ce în ce mai
mare. Controlerul de memorie trebuie să asigure gestiunea nu numai a datelor care
vor fi aduse în memoriile cache, ci şi a blocurilor care au fost mutate dintr-o memorie
locală în alta. Din aceste motive, arhitectura COMA este tot mai rar folosită.
Arhitectura CC-NUMA (Coherent Cache NUMA)
Modelul CC-NUMA combină modul în care este construit spaţiul unic de
adresă la calculatoarele de tip NUMA şi la cele de tip COMA. Fiecare element de
procesare al unui calculator de tip CC-NUMA dispune atât de o memorie locală.
cât şi de o memorie cache asociată (vezi figura 2.11).

Fig. 2.11. Arhitectura CC-NUMA.


30 ARHITECTURA SISTEMELOR DE CALCUL

Ca şi în cazul modelului NUMA, accesul la datele stocate în memoria locală


proprie este foarte rapid. Accesarea unor date aflate în memoria locală a unui alt
procesor implică aducerea acestora în memoria locală proprie. Transferul de date
folosind reţeaua de comunicaţie atrage după sine întârzieri, deoarece nu este la fel
de rapid precum accesarea memoriilor locale.
Existenţa memoriilor cache are ca efect reducerea traficului prin reţeaua de
comunicaţie. Datele solicitate de către un procesor sunt mai întâi căutate în
memoriile locale, după care sunt aduse în memoria cache, în cazul în care acestea
se găsesc în memoria locală a unui alt procesor. La accesările ulterioare, se va
folosi copia datelor respective stocată în memoria cache, deci nu va mai fi nevoie
ca datele să fie din nou transferate prin reţeaua de interconectare.
Utilizarea memoriile cache implică necesitatea implementării unor
mecanisme software sau hardware care să asigure consistenţa memoriilor cache. La
modificarea unor date aflate în memoria locală a unui procesor, este nevoie să se
actualizeze toate copiile acestor date aflate în memoriile cache. Aceste mecanisme
care asigură coerenţa memoriilor cache contribuie la creşterea traficului efectuat în
cadrul reţelei de interconectare.
Arhitectura CC-NUMA este utilizată de o serie de supercalculatoare foarte
cunoscute: Bull NovaScale, HP Superdome şi SGI Altix.
Dezavantajele arhitecturilor DSM
Principalul dezavantaj al arhitecturilor MIMD cu memorie distribuită şi cu
spaţiu individual de adresare (NUMA, COMA, CC-NUMA) îl reprezintă
întârzierile care pot să apară atunci când un procesor doreşte să acceseze date aflate
în memoria locală a unui alt element de procesare. Aceste întârzieri sunt cauzate de
faptul că procesorul respectiv va aştepta ca datele solicitate să fie transportate în
memoria sa locală. Pentru minimizarea timpilor de inactivitate, procesorul în cauză
poate efectua o comutare de procese, atunci când procesul activ este blocat în
aşteptarea datelor solicitate. În general comutarea proceselor este o operaţiune
complexă, implicând costuri importante, ce pot influenţa performanţele sistemului.
Eficienţa operaţiei de comutare poate fi substanţial îmbunătăţită prin
utilizarea firelor de execuţie (thread-uri). Un proces poate fi împărţit în mai multe
fire de execuţie, care comunică între ele prin accesul la spaţiul de adresă alocat
procesului, pe care îl partajează. Din acest motiv, firele de execuţie reprezintă un
mecanism eficient de exploatare a concurenţei programelor.
Un fir de execuţie reprezintă cea mai mică entitate de planificare în sistemele
bazate pe thread-uri. Comutarea între două fire de execuţie care aparţin aceluiaşi
proces este o operaţie foarte rapidă, care nu atrage după sine costuri suplimentare
semnificative. Astfel, procesul activ este suspendat până în momentul în care datele
solicitate au fost aduse în memoria locală. În acest timp, este executat un alt fir de
execuţie al aceluiaşi proces. Această comutare între fire de execuţie aparţinând
aceluiaşi proces conduce la scăderea timpilor de inactivitate şi, implicit, la creşterea
eficienţei cu care este utilizat sistemul paralel.
Calculatoarele MIMD cu memorie distribuită se numesc multicalculatoare şi
reprezintă sisteme cu cuplaj slab, din cauza gradului redus de partajare a resurselor.
Tipuri de arhitecturi 31

Principalul avantaj al acestor sisteme îl reprezintă scalabilitatea, adică,


posibilitatea extinderii prin conectarea unor noi procesoare. Creşterea numărului de
procesoare nu atrage după sine probleme legate de accesul concurent la memorie,
deoarece majoritatea apelurilor sunt către memoria locală. Însă transferul de mesaje
presupune schimburi de date care pot aglomera reţeaua. Transferul de date între
două procesoare este o operaţie mare consumatoare de timp. Din acest motiv,
performanţele reţelei de interconectare pot influenţa în mod hotărâtor eficienţa cu
care este utilizat sistemul paralel. În plus, este foarte greu ca sarcina de calcul
distribuită procesoarelor să fie echilibrată. Sistemul de operare rulează în fiecare
nod şi, din acest motiv, întregul sistem poate fi văzut ca fiind format din staţii de
lucru care comunică prin transfer de mesaje. Complexitatea acestor sisteme este
foarte mare, datorită faptului că într-un nod de procesare individual se poate găsi
un simplu procesor sau un întreg sistem de tip UMA.
Exemple de arhitecturi MIMD cu memorie partajată
Din perspectivă istorică, maşinile paralele cu memorie partajată sunt de trei
categorii: bazate pe magistrală (Pentium SMP, nodul IBM SP), bazate pe directoare
de tip CC-NUMA (Origin 2000) şi cu spaţiu de adresare global (Cray T3D, T3E).
Maşinile multiprocesor din anii '60 ai secolului trecut aveau structura din
figura 2.12.a. Capacitatea de memorare sau posibilitatea de comunicare I/O se
puteau ameliora prin adăugarea de module de memorie şi de dispozitive I/O.

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

Creşterea capacităţii de procesare se putea realiza prin adăugarea de


procesoare. Apărea deja necesitatea unei interconectări a modulelor de memorie, a
procesoarelor şi a legăturilor cu canalele I/O. Se foloseau reţele multietajate de tip
crossbar sau multistage (vezi figura 2.12.b). Memoriile cache, marea lovitură a
anilor '70, au fost de natură a influenţa puternic structurile de memorare. Sistemele
de memorie scalate prin adăugarea de module suplimentare aveau nevoie de
capacitate, dar şi de viteză ridicată. Memoria era o sursă de strangulări (bottleneck).
Introducerea memoriilor cache a schimbat aproape radical datele problemei.

2.1.1.6. Sisteme fără memorie partajată (shared nothing)


În acest caz, fiecare procesor are propria lui memorie. Aceste maşini sunt
practic calculatoare independente legate într-o reţea. Fiecare calculator se mai
numeşte şi nod (al reţelei). Arhitectura shared nothing se mai numeşte cu
multiprocesare asimetrică şi este prezentată în figura 2.13.
32 ARHITECTURA SISTEMELOR DE CALCUL

Fig. 2.13. Arhitectura sistemelor shared nothing.

Pentru ca aceste calculatoare să lucreze bine trebuie să existe un protocol


bun de transmitere a mesajelor între ele. Acest protocol trebuie să fie foarte rapid şi
fără erori. IBM foloseşte în acest scop protocolul Message Passing Interface (MPI)
şi mai multe căi redundante care formează un switch de mare viteză.
Aceste noduri sunt conectate şi printr-o reţea convenţională Ethernet din
motive de management al sistemului.

2.1.2. Clasificarea Wang

Criteriul de clasificare este în acest caz gradul de paralelism în procesarea


cuvintelor, respectiv biţilor de date. Datele pot fi configurate într-o matrice (vezi
figura 2.14).
Se notează cu m numărul de cuvinte procesate la un moment dat şi cu n
lungimea unui cuvânt.

Fig. 2.14. Organizarea datelor într-o matrice.

Conform acestei clasificări, există patru tipuri de arhitecturi:


 WSBS (Word Serial – Bit Serial). Se lucrează pe un singur cuvânt,
fiecare cuvânt fiind prelucrat bit cu bit: m = 1, n = 1;
 WSBP (Word Serial – Bit Parallel): m = 1, n > 1;
 WPBS (Word Parallel – Bit Serial): m > 1, n = 1;
 WPBP (Word Parallel – Bit Parallel): m > 1, n > 1.
În cazul tipului WPBP, structura paralelă este completă, corespunzătoare
prelucrării pe matrice m  n.
În cazul tipului WSBP, prelucrarea este pe orizontală, iar în cazul tipului
WPBS, prelucrarea este pe verticală.
Tipuri de arhitecturi 33

2.2. Structura fizică a unui calculator secvenţial

Calculatorul numeric este un sistem fizic de prelucrare automată a


informaţiei codificate sub formă de valori discrete, conform unui program, care
indică o succesiune determinată de operaţii aritmetice şi logice. Sistemul de calcul
este compus din două subsisteme principale:
 subsistemul hardware (echipamente fizice componente);
 subsistemul software (programele şi structurile de date).
Structura de bază a calculatorului secvenţial, cu program memorat, stabilită
de von Neumann în 1945, este reprezentată în figura 2.15 şi cuprinde cinci unităţi
funcţionale: unitatea de intrare (UI), unitatea de memorare (M), unitatea de ieşire
(UE), unitatea aritmetico-logică (UAL) şi unitatea de comandă (UCd).

Fig. 2.15. Maşina von Neumann.

Linia continuă reprezintă fluxul de date şi instrucţiuni, iar linia întreruptă,


fluxul de comenzi şi stări.
Unitatea de comandă (UCda) controlează activitatea tuturor componentelor
din sistem pe baza unei secvenţe de instrucţiuni, reprezentând programul memorat.
Caracterul secvenţial al calculatorului rezultă din modul de execuţie al
programului. Sunt necesare următoarele etape majore (vezi figura 2.16):
 încărcarea instrucţiunii IF (instruction fetch);
 decodificarea instrucţiunii ID (instruction decoding);
 încărcarea (din memorie) a operanzilor OF (operand fetch);
 execuţia operaţiilor impuse de instrucţiune EX (execution).
După terminarea unei instrucţiuni, se trece la următoarea instrucţiune. Astfel,
programul este executat secvenţial, instrucţiune cu instrucţiune.
34 ARHITECTURA SISTEMELOR DE CALCUL

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

Unitatea aritmetico-logică (ALU) realizează prelucrarea informaţiei preluate


din memorie, iar rezultatele se depun din nou în memorie sau sunt furnizate în
exterior. ALU realizează două categorii de operaţii:
 aritmetice: adunare, scădere, înmulţire, împărţire;
 logice: ŞI, SAU, SAU-EXCLUSIV, NEGAŢIE.
Unitatea de comandă şi cea aritmetico-logică, împreună cu memoria,
formează unitatea centrală (UC sau CPU) a calculatorului.
Datele şi programele sunt introduse în calculator prin intermediul unităţii de
intrare, fiind apoi depuse în memorie.

2.2.1. Structuri de calculatoare paralele

Calculatoarele paralele se clasifică în trei configuraţii arhitecturale:


 calculatoare pipeline (CPL);
 calculatoare (procesoare) matriceale (CM);
 calculatoare (sisteme) multiprocesor (CMP).
Un calculator pipeline utilizează paralelismul temporar. Procesoarele
matriceale se bazează pe mai multe unităţi ALU sincronizate pentru a atinge
paralelismul spaţial. Un sistem multiprocesor este caracterizat de paralelism
asincron, în sensul că setul de procesoare din structura sa interacţionează şi îşi
împart resursele (memorii, baze de date). În acelaşi timp, procesoarele matriceale
apelează la paralelism sincron (blocuri comandate printr-un unic semnal de ceas).
Cele patru tipuri de paralelism enunţate nu se exclud reciproc. Cele mai
multe dintre procesoarele actuale au structura internă bazată pe tehnologia pipeline
şi multe dintre acestea pot fi organizate în sisteme matriceale sau multiprocesor.
Diferenţa de bază dintre un procesor matriceal şi un sistem multiprocesor este
aceea că unităţile funcţionale din procesorul matriceal operează sincron, în timp ce
procesoarele sistemului multiprocesor funcţionează asincron. Tendinţele indică
utilizarea calculatoarelor controlate prin flux de date cu procesoare
algoritmice VLSI. Aceste tipuri de calculatoare sunt caracterizate printr-o creştere
masivă a hardware-ului pentru a atinge paralelismul.
Tipuri de arhitecturi 35

2.2.1.1. Calculatoare pipeline


Execuţia unei instrucţiuni presupune patru faze majore: încărcarea
instrucţiunii – IF, decodarea instrucţiunii – ID, încărcarea operanzilor – OF şi
execuţia efectivă – EX. În procesoarele non-pipeline, aceste faze se desfăşoară
secvenţial, iar în procesoarele pipeline se desfăşoară cu paralelism temporal.
Pentru procesoare complexe, faza de execuţie a instrucţiunii poate fi
partajată în suboperaţii organizate după principiul pipeline. Problemele care apar în
calculatoarele pipeline sunt datorate conflictelor de acces la memorie, salturilor şi
întreruperilor.
Datorită suprapunerii operaţiilor, calculatoarele pipeline (CPL) sunt
optimizate pentru a efectua operaţii de acelaşi tip. Ori de câte ori se modifică tipul
operaţiei (instrucţiunii), registrele pipeline trebuie şterse şi reîncărcate şi, ca
urmare, se consumă timp suplimentar. Proiectarea CPL include: secvenţializarea
sarcinilor (task-urilor), prevenirea conflictelor de acces (coliziunilor), controlul
congestiei şi controlul salturilor în program.
O schemă funcţională a unui CPL este ilustrată în figura 2.17.

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

În schema de mai sus, există două structuri pipeline: una pentru date scalare
şi una pentru date vectoriale. Faza de încărcare a operaţiilor este împărţită în două
subfaze independente, corespunzătoare operării cu scalari sau cu vectori. Faza de
execuţie se desfăşoară în două procesoare distincte, asociate scalarilor sau
vectorilor.
36 ARHITECTURA SISTEMELOR DE CALCUL

Tehnica pipeline
Execuţia unei instrucţiuni este privită ca fiind alcătuită din mai multe faze
(sau stagii), care se succed una după alta şi care pot fi tratate de unităţi specializate,
într-un mod asemănător funcţionării unei linii de asamblare (de ex.: de automobile).
Exemplu. Fie un şir de procese care are loc la execuţia unei instrucţiuni.

Fig. 2.18. Exemplu de şir de procese la execuţia unei instrucţiuni şi desfăşurarea lor în timp.

Se presupune că de fiecare din aceste procese se ocupă o unitate specializată.


Când se atinge al cincilea impuls de ceas, la toate cele cinci procese se lucrează în
paralel; astfel se măreşte de cinci ori viteza de execuţie. În faza încadrată,
instrucţiunea 5 este în faza de încărcare, instrucţiunea 4 în faza de decodare etc.
Problema este că începând din momentul de timp încadrat poate să apară
fenomenul de strangulare, pentru că una sau mai multe instrucţiuni aflate între P1
şi P5 pot să nu fie instrucţiuni utile (de exemplu, instrucţiuni de salt). Deşi există un
paralelism în execuţia instrucţiunilor, aceasta este o maşină pipeline de tip SISD.

2.2.1.2. Calculatoare matriceale


Un procesor matriceal tipic este prezentat în figura 2.19. Există două unităţi
funcţionale distincte: o unitate de control şi sincronizare a elementelor de procesare
(care are ca sarcină suplimentară efectuarea operaţiilor cu scalari) şi o unitate de
prelucrare matriceală. Fiecare element de prelucrare (EP) reprezintă un element
pasiv, adică, fără posibilitatea de a decodifica instrucţiuni.
Încărcarea instrucţiunilor şi decodarea lor (fazele IF şi ID) pentru unitatea de
prelucrare matriceală este efectuată de către unitatea de control, prin intermediul
unei reţele de interconectare între EP. Fiecare element de prelucrare este alcătuit
dintr-o unitate ALU, registre şi memorie locală, iar conexiunea dintre elemente este
realizată într-o arhitectură de tip NUMA.
Pentru o sesiune de lucru specifică, unitatea de control stabileşte funcţia
ALU pentru fiecare EP, după care transferă operanzi din exterior către memoriile
locale ale EP şi rezultatele de la un EP spre alt EP (utilizând reţeaua de
interconectare). Programarea CM este mult mai dificilă decât programarea CPL.
Tipuri de arhitecturi 37

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

2.2.1.3. Calculatoare multiprocesor


Structură de bază a unui CMP este prezentată în figura 2.20.

Fig. 2.20. Calculator multiprocesor.


38 ARHITECTURA SISTEMELOR DE CALCUL

Notaţiile din figura 2.20 sunt următoarele:


 P1 … Pn – procesoare;
 ML1 … MLn – memorii locale.
Sistemul este alcătuit din mai multe procesoare care împart resurse comune
(memorie), dar posedă şi resurse proprii (private), într-o arhitectură de tip UMA cu
memorii (cache) locale. Procesoarele funcţionează independent (asincron), dar
trebuie să comunice între ele.
Structura de interconectare între procesoare şi între procesoare şi resursele
comune determină organizarea sistemului multiprocesor. Există trei mari categorii
de interconectări:
1. partajarea unei magistrale comune (bus);
2. utilizarea unei reţele de interconectare totală (crossbar);
3. utilizarea unei memorii multiport (ca memorie comună, duală).
CMP pot fi centralizate sau distribuite. Sistemele centralizate conţin toate
procesoarele în acelaşi sistem de calcul, spre deosebire de sistemele distribuite, în
care procesoarele pot fi fizic plasate în subsisteme diferite. Pentru sistemele
distribuite este necesară o reţea de comunicaţie rapidă, flexibilă (adaptabilă) şi
fiabilă.

2.2.2. Mecanisme de prelucrare paralelă

Aceste soluţii de implementare a prelucrării paralele sunt corelate cu


arhitecturile clasificării Flynn în privinţa soluţiilor hardware, soluţiile software
fiind specifice sistemelor de operare care gestionează intervalele de timp alocate
diferitelor aplicaţii şi speculând astfel posibilitatea prelucrărilor paralele.

2.2.2.1. Soluţii hardware de prelucrare paralelă


Multiplicarea şi specializarea unităţilor aritmetico-logice (ALU)
Procesoarele clasice aveau o singură unitate de tip ALU. În acest fel, nu se
efectua decât o singură operaţie la un moment dat. Prin multiplicarea ALU,
majoritatea funcţiilor pot fi distribuite între unităţile specializate pe o anumită
funcţie aritmetică sau logică şi pot funcţiona în paralel. În unele procesoare există
două ALU care pot lucra în paralel (o unitate pentru aritmetica în virgulă fixă şi
alta pentru aritmetica în virgulă mobilă). Ideea specializării funcţionale şi a
distribuirii şi multiplicării ALU (numite şi unităţi funcţionale) poate fi extinsă atât
la sistemele multiprocesor, cât şi la cele matriceale. Acest mecanism constituie, de
fapt, implementarea paralelismului la sistemele SISD.
În figura 2.21 se prezintă un exemplu de schemă pentru figurarea acestei
soluţii. Unitatea centrală conţine 5 unităţi ALU specializate pe diferite operaţii,
care pot lucra în paralel.
În timp ce o instrucţiune este executată de o anumită unitate ALU, unitatea
de comandă încarcă şi decodifică o altă instrucţiune pe care o încredinţează unei
alte unităţi ALU ş.a.m.d.
Tipuri de arhitecturi 39

Fig. 2.21. Multiplicarea ALU prin specializarea pe operaţii.

Sistemul este eficient dacă timpul de execuţie de către ALU a unei operaţii
este mult mai mare decât timpul de încărcare şi decodificare a unei instrucţiuni.
Această condiţie este, în general, îndeplinită.
Exprimarea algebrică a condiţiei de eficienţă pentru multiplicarea şi
specializarea ALU este:

tEX(ALU) >> tIF + tID.

Paralelism şi structură pipeline în CPU


Primele generaţii de microprocesoare utilizau ALU (în special, sumatoare)
care operau cu flux de biţi (serial).
Introducerea unui ALU care operează în paralel, pe flux de 8, 16, 32 sau 64
biţi simultan (cu sumatoare, cu transport anticipat sau multiplicatoare matriceale)
duce la creşterea vitezei de prelucrare.
Arhitectura superscalară
În arhitectura superscalară, şiruri de instrucţiuni diferite (de obicei două,
eventual mai multe), utilizează resurse diferite în aceleaşi stadii de execuţie a
instrucţiunilor de pe fiecare şir.
Un exemplu particular de arhitectură superscalară este prezentat în figura 2.22.
40 ARHITECTURA SISTEMELOR DE CALCUL

Fig. 2.22. Arhitectura superscalară.

Structura superscalară cu tehnică de burst (citire în rafale) este folosită


începând cu microprocesorul 80486 şi este corelată cu momentul introducerii în
capsula procesorului a memoriei cache de nivel 1.
Tehnica burst foloseşte această memorie pentru a citi blocuri de instrucţiuni
din memoria cache, instrucţiuni care au fost încărcate acolo din memoria principală
(MP) în mod secvenţial (vezi figura 2.23). În acest mod, se citesc dintr-o dată fie
două, fie patru cuvinte, în funcţie de dimensiunea instrucţiunii (pe 32 sau 16 biţi).
S-a folosit iniţial o magistrală internă între cache şi decodificatorul de instrucţiuni
de 64 biţi, ajungându-se în prezent la 128 de biţi.

Fig. 2.23. Arhitectura superscalară cu tehnică de burst (citire în rafale).


Tipuri de arhitecturi 41

Exemplu. Schema din figura 2.24 reprezintă o arhitectură superscalară cu


trei şiruri de instrucţiuni diferite. Se execută în acelaşi timp o operaţie cu numere
reale şi două operaţii cu numere întregi. Fiecare unitate este de tip pipeline şi poate
executa câteva operaţii în diferite stagii pipeline.

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

Arhitectura superpipeline
Se bazează pe divizarea stagiului pipeline în substagii şi, deci, pe creşterea
numărul de instrucţiuni care sunt procesate de pipeline la un moment dat. Divizând
fiecare stagiu în două substagii, perioada ciclului de ceas τ va fi redusă la jumătate:
τ/2.
La capacitate maximă, structura pipeline produce un rezultat la fiecare τ/2
secunde. Pentru o arhitectură dată şi setul de instrucţiuni aferent ei, există un număr
optim de stagii pipeline. Dacă numărul de stagii pipeline creşte peste această limită,
se va reduce performanţa globală. O soluţie pentru a creşte viteza fără a face
compromisuri este arhitectura superscalară, prezentată anterior.
În figura 2.25, este prezentat un exemplu de execuţie pipeline (a),
superpipeline (b) şi superscalară (c) a unei instrucţiuni.
Suprapunerea operaţiilor CPU cu operaţiile I/O
Utilizarea unor controlere I/O separate permite efectuarea în paralel a
operaţiilor interne ale CPU cu operaţii de transfer de date pe canalele I/O.
Exemple de controlere I/O:
 controlere DMA (Direct Memory Access), care permit transferul direct de
date: memorie – memorie sau memorie – canale I/O, bazat pe principiul
cererii de magistrală (aceasta reprezintă una dintre tehnicile evoluate de
transfer de date, vezi paragraful 3.4.4.2);
 procesoare specializate I/O, care lucrează pe canale I/O cu sarcini specifice.
42 ARHITECTURA SISTEMELOR DE CALCUL

Fig. 2.25. Modul de operare al tehnicilor pipeline (a), superpipeline (b) şi superscalară (c).

Unitate ALU vectorială

Fig. 2.26. Arhitectură SIMD cu unitate ALU vectorială.

Este o soluţie de paralelism pentru sistemele SIMD, prezentată în figura 2.26.


Tipuri de arhitecturi 43

Utilizarea unui sistem ierarhizat de memorie


Memoria unui sistem de calcul trebuie să satisfacă mai multe cerinţe, adesea
contradictorii: capacitate mare, timp de acces mic, cost rezonabil şi dimensiuni
reduse. Aceste cerinţe nu pot fi îndeplinite simultan de un singur tip de memorie.
Cu tehnologia actuală se pot realiza memorii de mare viteză, dar de capacitate mică
(RAM static), memorii de capacitate mare, dar de viteză medie (variante de
memorii DRAM) sau memorii de capacitate foarte mare, dar cu timp de acces
ridicat (memorii externe pe suport magnetic sau optic).
În sistemele de calcul performante, spaţiul de memorare este ierarhizat pe
mai multe nivele, cu scopul de a beneficia de avantajele oferite de diverse tipuri de
memorii. Un sistem de calcul cu memorie organizată ierarhizat poate echilibra
diferenţele de viteză între componentele sistemului (CPU, memorie, discuri) .
Într-o astfel de arhitectură, memoria este organizată pe patru niveluri:
 registrele CPU;
 memoria cache (MC);
 memoria principală sau operativă (MP);
 memoria virtuală (MV).
Registrele CPU sunt direct adresabile de către ALU.
Memoria cache (rapidă) este cea mai apropiată de CPU, ceea ce impune ca
timpul de acces să fie mic, capacitatea fiind limitată. Aici sunt păstrate instrucţiunile
şi datele cu probabilitatea cea mai mare de a fi utilizate într-o proximitate de timp.
Memoria cache reprezintă un tampon între memoria principală şi CPU.
Memoria principală sau operativă păstrează programele şi datele aferente
în curs de execuţie. Ea poate fi adresată în mod aleatoriu de un program utilizator.
Are o capacitate medie-mare şi un timp de acces mediu. Este un tampon între
memoria virtuală şi CPU.
Memoria virtuală este un concept arhitectural prin care memoria operativă
este extinsă peste spaţiul de adresare al memoriei externe (hard disk, bandă
magnetică). Prin tehnicile de implementare, numite segmentare şi paginare (vezi
capitolul 6), se urmăresc două aspecte esenţiale:
 creşterea resurselor de memorare disponibile pentru programele utilizator;
 protejarea zonelor de memorie alocate modulelor de program.
Memoria virtuală este utilă în cazul sistemelor de operare multitasking şi
multiuser (Windows, Unix).
În general, tehnicile de implementare a MC şi a MV sunt transparente pentru
programele utilizator. Aparent, programele de aplicaţie lucrează numai cu memoria
principală. Transferul de informaţii între diferitele nivele de memorie se realizează
în mod automat, fie de către componente hardware specializate (unitatea de gestiune
a memoriei, MMU), fie de către sistemul de operare. Procesoarele recente oferă
suport hardware pentru implementarea memoriei cache şi a memoriei virtuale.
Eficienţa utilizării unei arhitecturi ierarhizate de memorie se bazează pe
câteva principii legate de modul de utilizare a informaţiilor conţinute în memorie.
Astfel, conform principiului localizării referinţei, adresarea locaţiilor de
memorie se realizează într-o secvenţă repetitivă. Există o probabilitate mare ca o
44 ARHITECTURA SISTEMELOR DE CALCUL

locaţie adresată de curând să fie adresată şi într-un timp imediat – localizare


temporară – şi, similar, este previzibil ca şi locaţiile adiacente să fie accesate în
curând – localizare spaţială. Principiile localizării temporale şi spaţiale sunt o
consecinţă a modului uzual de execuţie a secvenţelor de program.
Exemple:
 un program conţine bucle care presupun execuţia repetitivă a aceleiaşi
secvenţe de instrucţiuni;
 execuţia instrucţiunilor este, în majoritatea cazurilor, secvenţială
(succesiunea în execuţie), excepţie făcând instrucţiunile de salt;
 secvenţa de program (procedura) utilizează repetitiv aceeaşi variabilă sau
adresează repetat elemente ale unei structuri de date (tablouri, înregistrări).
Concluzie. Statistic s-a constatat că pentru majoritatea programelor este
valabilă următoarea regulă: 90% din timpul afectat unui program este utilizat
pentru execuţia a numai 10% din codul acestuia. Pe baza acestor observaţii,
informaţiile pot fi amplasate în mod dinamic pe diferite niveluri ierarhice ale
memoriei, în funcţie de probabilitatea de a fi utilizate.

2.2.2.2. Soluţii software de prelucrare paralelă


Prelucrarea pe loturi
Prelucrarea pe loturi (batch processing) presupune formarea unui fişier cu
extensia .bat şi lansarea lui. Procesele au loc succesiv, iar CPU (care execută
operaţiile de calcul) nu este folosită în mod eficient.

Fig. 2.27. a. Prelucrarea pe loturi. b. Multiprogramarea.


Tipuri de arhitecturi 45

Exemplu. Fie trei procese paralele, P1, P2 şi P3, fiecare fiind văzut în timp
ca o succesiune de trei etape: intrare (i), calcul (c), ieşire (o) (vezi figura 2.27.a).
Multiprogramarea
În acelaşi interval de timp pot exista mai multe programe (procese) active în
sistemul de calcul, concurând pentru memorie, I/O şi CPU. Totuşi, unele programe
sunt orientate către calcule (utilizând intens CPU), în timp ce altele sunt orientate
către citirea/scrierea dispozitivelor I/O. Se pot astfel organiza (intercala) cele două
clase de programe pentru a obţine un timp de prelucrare global cât mai bun. În
figura 2.27.b, câştigul de timp este notat cu Δ.
Intercalarea programelor permite utilizarea mai eficientă a resurselor
calculatorului prin suprapunerea operaţiilor I/O cu operaţiile CPU. Acest mod de
organizare este gestionat de sistemul de operare (programul de supervizare). Astfel,
multiprogramarea se poate defini ca intercalarea operaţiilor CPU cu operaţii I/O
pentru mai multe programe.
Observaţii.
1. P1, P2 şi P3 pot aparţine aceluiaşi program sau unor programe diferite.
2. În cadrul multiprogramării, se poate întâmpla ca un proces cu prioritate
mare să ocupe CPU un timp îndelungat şi în acest fel se împiedică
execuţia altor procese. Neajunsul se poate înlătura folosind un sistem de
operare cu divizare în timp.
Diviziunea în timp (time sharing)
Diviziunea în timp reprezintă împărţirea timpului de execuţie al CPU între
toate procesele (task-urile) active din sistemul de calcul. Cuantele de timp alocate
fiecărui proces pot fi inegale de la un proces la altul. Dacă există proces dominant,
viteza de prelucrare poate creşte astfel mai mult decât în cazul multiprogramării,
pentru procesele care urmează celui dominant (vezi cazul particular din figura 2.28).

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


46 ARHITECTURA SISTEMELOR DE CALCUL

Procesul de calcul se împarte în mai multe etape. În funcţie de divizarea în


intervale de timp, se poate face ca procesele să se termine aproximativ în acelaşi
interval de timp (nu există un proces dominant).
Diviziunea în timp constituie o atribuţie a sistemului de operare (numit, în
acest caz, sistem de operare cu diviziune în timp). Utilizarea diviziunii în timp a
programelor (sau a proceselor) în sistemele uniprocesor creează conceptul de
procesor virtual.
Exemplu: sisteme de calcul cu un singur procesor şi mai multe terminale.
Pentru subiectul uman, răspunsul unicului procesor este suficient de rapid astfel
încât să se considere că fiecare terminal operează independent, ca şi cum ar poseda
el însuşi procesor (utilizatorul are impresia că lucrează singur pe calculator).
Conceptul de diviziune în timp poate fi extins în mod similar la sistemele
multiprocesor.
Observaţii.
1. În cazul multiprogramării, procesele îşi termină faza de calcul (în CPU),
apărând suprapunere doar între operaţii CPU şi operaţii I/O.
2. În cazul diviziunii în timp, procesele nu îşi termină faza de calcul înainte
de a se executa alt proces; procesele pot fi intercalate, astfel încât să se
câştige timp de execuţie în raport cu multiprogramarea (suprapuneri între
operaţii CPU şi operaţii I/O, respectiv între diferite operaţii I/O).
Noţiunea de multithreading
Termenul de multithreading reprezintă un aspect important al proiectării
software, care necesită atenţie specială în construcţia sistemelor mari şi, în deosebi,
atunci când se pune problema eficienţei (exprimate în termeni de viteză a
sistemului) şi a performanţei (exprimate în termeni de corectitudine în funcţionare
a sistemului). Folosind adecvat instrucţiunile de multithreading, se pot realiza
aplicaţii optimizate.
Fiecare aplicaţie sau program care rulează pe sistemul de operare este un
proces alcătuit din unul sau mai multe fire (thread-uri). Un thread este un set de
instrucţiuni sau o parte anume a aplicaţiei, care se execută independent în cadrul
programului sau sistemului. Thread-urile sunt entităţi responsabile cu multitasking-ul
în cadrul unei singure aplicaţii. De obicei, sistemul de operare (SO) se ocupă cu
programarea şi executarea thread-urilor.
Multithreading-ul presupune execuţia în paralel a mai multor procese, pentru
a îmbunătăţi eficienţa sistemului. Thread-urile sunt implementate în situaţiile în
care trebuie îndeplinite mai multe sarcini simultan.
Avantajele threading-ului sunt următoarele:
 sarcinile care cer mai mult timp de execuţie pot fi rulate în background;
 interfaţa aplicaţiei poate fi realizată mai atrăgător şi mai simplu de
utilizat (de ex.: după apăsarea unui buton se afişează o bară de progres);
 viteza aplicaţiei poate creşte;
 thread-urile pot fi folositoare în situaţiile în care există decalaje între
anumite evenimente, putându-se astfel elibera anumite resurse care nu
sunt necesare la un moment dat.
Tipuri de arhitecturi 47

Modelele de threading suportate de sistemele win32 sunt:


1. Modelul thread-ului unic (Single Thread Model). Acest tip de thread
presupune rularea unui singur thread la un moment dat. Restul thread-urilor trebuie
să aştepte. Principalul dezavantaj al acestui tip de thread îl reprezintă timpii lungi
de execuţie pentru sarcini mici. Corespunde din punct de vedere conceptual
prelucrării pe loturi (batch processing).
2. Modelul Apartment Thread (Single Thread Apartment Model – STA). În
acest model, pot exista mai multe thread-uri care se execută în cadrul aplicaţiei. În
STA, fiecare thread este izolat într-un „apartament” separat în cadrul procesului.
Fiecare proces poate avea mai multe apartamente, care pot partaja date între ele. În
acest caz, aplicaţia este răspunzătoare pentru stabilirea duratei fiecărui thread din
cadrul fiecărui apartament. Toate cererile sunt ordonate folosind Windows Message
Queue, astfel încât un singur apartament poate fi accesat la un moment dat.
Avantajul acestui model fată de modelul thread-ului unic este că se pot procesa
simultan mai multe cereri ale utilizatorului. Totuşi, nu este atinsă încă eficienţa
maximă, deoarece sarcinile se vor executa una după alta. Corespunde din punct de
vedere conceptual multiprogramării.
3. Modelul Multithread Apartment (Free Thread Apartment Model – FTA).
Modelul Multithread Apartment presupune existenţa unui singur apartament. Nu
este nevoie de ordonare, deoarece toate thread-urile aparţin aceluiaşi apartament şi
pot partaje resursele. Aceste aplicaţii se execută mai rapid decât cele care
implementează modelul unic sau STA, deoarece sistemul este mai puţin solicitat şi
poate fi optimizat să elimine timpii morţi. Corespunde din punct de vedere
conceptual diviziunii în timp (time sharing).Aceste tipuri de aplicaţii sunt foarte
complexe, deoarece trebuie să se asigure că thread-urile nu accesează simultan
aceleaşi resurse (principiul pipeline). Este, astfel, absolut necesar să se furnizeze un
sistem de blocare a resurselor. Acesta trebuie implementat cu atenţie, deoarece
poate conduce la blocarea totală a sistemului.
Prin natura şi arhitectura sa, mediul de programare Microsoft .NET
Framework este un mediu de tip multithreading.
Evaluarea performanţelor. Utilizând de n ori mai multe resurse în paralel,
un algoritm nu va rula de n ori mai repede, din cauza fenomenului de timp
suplimentar (overhead), indus prin aplicarea paralelismului. Acest timp
suplimentar apare din următoarele cauze:
 interacţiunea între procese (transmiterea rezultatelor intermediare sau
parţiale) şi sincronizarea proceselor;
 inactivitatea temporară (idling), care înseamnă că există procese 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.
Parametrii de intrare care contribuie la calculul performanţelor sunt:
 timpul de execuţie secvenţial sau serial, TS (timpul măsurat de la
începutul şi până la sfârşitul execuţiei algoritmului pe un calculator
secvenţial);
48 ARHITECTURA SISTEMELOR DE CALCUL

 timpul de execuţie paralel, TP (timpul măsurat de la începutul execuţiei


şi până la terminarea ultimului subtask paralel);
 numărul de procesoare, p.
Cu ajutorul acestora, se pot calcula următorii 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;
 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;
 eficienţa utilizării calculatorului paralel, E = S / p;
 costul, C = TP  p, care reflectă timpul total de lucru însumat al
procesoarelor.

2.3. Categorii de calculatoare

Calculatoarele pot fi grupate în 5 categorii, în funcţie de structură,


dimensiuni, viteză, putere de calcul şi destinaţie:
 microcalculatoare (ex.: computerele Apple şi toate modelele de PC);
 minicalculatoare (ex.: serverele IBM, SGI, Sun Microsystems etc.);
 superminicalculatoare (ex.: Norsk Data Nord, Interdata, DEC VAX etc.);
 mainframe-uri;
 supercalculatoare.

2.3.1. Mainframe-uri

Un mainframe este un computer mare, folosit de instituţii guvernamentale şi


companii pentru procesarea datelor importante în statistică, recensăminte, cercetare
şi dezvoltare, proiectare, prognoză, planificarea producţiei, tranzacţii financiare etc.
Ca aspect exterior, primele mainframe-uri arătau ca nişte dulapuri uriaşe de metal.
Cu trecerea anilor, tehnologiile de fabricaţie s-au dezvoltat, mărimea fizică a
mainframe-urilor a scăzut, iar viteza lor de calcul a crescut foarte mult.
La nivelul anului 2008, prin mainframe se înţelege un calculator compatibil
cu modelele de tip IBM System/360 (1965). Actualmente, cel mai modern model
de la IBM este System z10. Sunt considerate mainframe-uri calculatoarele actuale
de tip: Nova (Fujitsu-Siemens), DPS (Groupe Bull), NonStop (Hewlett-Packard),
ClearPath (Unisys) şi cele compatibile IBM System z9 (Hitachi, Platform Solutions).
Un mainframe poate rula sau găzdui mai multe sisteme de operare simultan,
funcţionând ca mai multe maşini virtuale. Un mainframe poate înlocui astfel chiar
şi câteva sute de servere de dimensiuni mici (de exemplu, în aplicaţii web),
reducând costurile de întreţinere, dar menţinând un nivel ridicat de siguranţă.
Tipuri de arhitecturi 49

2.3.2. Supercalculatoare

Un supercalculator este un calculator complex cu destinaţie specială, compus


din mai multe procesoare care accesează aceeaşi memorie centrală şi care
funcţionează concomitent şi coordonat, în cooperare strânsă, astfel încât
supercalculatorul poate atinge o performanţă totală de calcul foarte ridicată. Modul
de operare al supercalculatoarelor este calculul paralel. Numărul de procesoare
interconectate ale unui supercalculator depăşeşte la anumite modele chiar şi
100.000.
Pentru a menţine costul unui asemenea supercalculator la un nivel rezonabil,
există arhitecturi care fac uz de procesoare mai ieftine şi mai lente, dar foarte
numeroase, grupate în aşa-numite cluster-e.
Printre primele firme care au produs supercalculatoare pe piaţă s-a numărat
firma Cray (modelul Cray-1 din 1976 a atins viteza de calcul de 130 Mflops). În
acest domeniu, există o listă (actualizată de două ori de an) a celor mai rapide 500
de supercalculatoare din lume (Top 500), care se bazează pe testul standardizat
numit Linpack. Pe lângă supercalculatoarele comerciale, există şi linia
supercalculatoarelor militare.
Exemplu: arhitectura supercalculatorului bazat pe IBM BlueGene/L.
Modelele IBM BlueGene deţin momentan (2008) primele două locuri în Top
500. Calculatorul se bazează pe un nou concept, care renunţă la creşterea frecvenţei
de ceas în favoarea micşorării componentelor, creşterii densităţii acestora şi
reducerii consumului de putere. Reducerea frecvenţei de ceas este compensată prin
mărirea gradului de paralelism, folosind un număr mai ridicat de procesoare.
Procesorul de bază este un PowerPC 440 la 700 MHz. Două astfel de
procesoare sunt amplasate pe un cip împreună cu o memorie cache L3 de 4 MB
partajată şi 2 KB memorie cache L2 pentru fiecare procesor. Fiecare procesor are
două porturi de încărcare şi unul de stocare către memoriile cache L2, funcţionând
cu 8 biţi/ciclu. Aceasta este jumătate din banda necesară celor două unităţi de
virgulă mobilă (FPU). Procesoarele au o memorie cache L1 de 32 KB pentru
instrucţiuni şi date, în situaţii favorabile atingând performanţe de 2,8 Gflops/2. Se
observă că memoria cache L1 este mai mare decât L2, un lucru neobişnuit, care
permite însă atingerea unor viteze de procesare mai mari.
Arhitectura modelului IBM BlueGene/L este reprezentată în figura 2.29.
Sistemul este alcătuit astfel: sunt introduse două cipuri pe o placă cu o
memorie de 512 MB, şaisprezece asemenea plăci sunt plasate pe o altă placă nod,
iar 32 de plăci nod sunt introduse într-un aşa-numit cabinet. Aşadar, un cabinet
conţine 1024 cipuri (2048 CPU). Pentru configuraţia maximă, se folosesc 64 de
cabinete cuplate, care formează un sistem cu 65.356 cipuri şi 130.712 CPU.
În modul normal de operare, o unitate de procesare a unui cip este folosită
pentru calcule, iar cealaltă, pentru sarcinile de comunicare. În acest fel,
performanţa de vârf teoretică a sistemului este de 183,5 Tflops. Dacă necesităţile
de comunicare sunt mici, se pot folosi ambele procesoare pentru calcule, dublând
viteza de vârf, ajungând la 360 Tflops.
50 ARHITECTURA SISTEMELOR DE CALCUL

Fig. 2.29. Arhitectura IBM BlueGene/L.

Din punct de vedere al interconectării, BlueGene/L posedă mai multe reţele:


două reţele pentru conectarea procesoarelor, o reţea inel 3D şi o reţea arbore.
Reţeaua inel este folosită pentru comunicaţii generale, iar cea arbore pentru
comunicaţii colective: broadcast, operaţii de reducere etc. Lărgimea de bandă a
reţelei arbore este de două ori mai mare decât a reţelei inel, ajungând la 350 MB/s
(faţă de 175 MB/s).
Performanţele sistemului ajung la 280,6 Tflops pentru testul Linpack. În
urma testului, s-a efectuat rezolvarea unui sistem liniar de N = 1.769.471 ecuaţii.
Eficienţa rezultată a fost de 76%.
Supercalculatoarele care au la bază modelul IBM BlueGene/L
implementează arhitectura masiv paralelă.
Aceasta constă într-un număr de procesoare (de obicei, foarte mare – de
ordinul miilor) interconectate şi controlate de un singur computer central. Fiecare
CPU are memoria sa şi spaţiul de date propriu, care conţine şi o copie a sistemului
de operare. Toate blocurile CPU comunică între ele cu ajutorul unor interconectări
de foarte mare viteză.
Tipuri de arhitecturi 51

2.4. Exemple de arhitecturi

2.4.1. Arhitecturi uniprocesor

Se bazează pe cele trei componente majore: UCP, memoria, subsistemul I/O.


VAX 11/780 (superminicalculator)
Sistemul a fost produs de firma DEC. Schema de arhitectură generală este
prezentată în figura 2.30. Aceasta conţine:
 CPU – unitatea centrală de prelucrare, care include:
o R0, ..., R15 = 16 registre generale a câte 32 biţi fiecare;
o PC = contorul de program (program counter);
o ALU = unitatea aritmetică şi logică;
o ML = memoria locală;
 MD = memorie de diagnoză;
 CVM = coprocesor de virgulă mobilă;
 MP = memoria principală (maxim 232 cuvinte);
 C = consolă;
 F = floppy disk;
 SBI = interfaţa cu magistrala sincronă (Synchronous Bus Interface);
 AU = adaptor unibus, cu (U) = magistrală unibus;
 AMB = adaptor masterbus, cu (M) = magistrală masterbus.
CPU mai conţine un registru de stare, care indică starea curentă a
microprocesorului, a programului care se execută şi a memoriei cache.

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


52 ARHITECTURA SISTEMELOR DE CALCUL

IBM 370/168

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

Schema de principiu (vezi figura 2.31) conţine:


 MP = memoria principală;
 LSU = local storage unit (unitate de memorie locală);
 CM = controller memory (legătură multiport CPU – memorie);
 SS I/O = subsisteme de intrare-ieşire (mai multe canale asincrone).
IBM RS/6000 model 250
Arhitectura simplificată este prezentată în figura 2.32.

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

Schema de principiu conţine:


 PPC = PowerPC – Processor Optimized With Enhanced RISC
Performance Chip;
 SIMM = Small In-line Memory Modules (module de memorie);
 CTRL = controler;
 MCA = magistrală de control şi adresă;
 Ethernet = controler de reţea.
Tipuri de arhitecturi 53

2.4.2. Arhitecturi multiprocesor

Arhitecturile multiprocesor sunt cel mai bun exemplu al tentativei de a


paraleliza un sistem de calcul. Acestea sunt de două tipuri: cele care folosesc
procesoare multiple, discrete, pe o placă de bază sau sisteme hardware speciale şi
cele care folosesc mai multe nuclee în interiorul unui singur procesor fizic.

2.4.2.1. Arhitecturi cu procesoare multiple


Arhitecturile cu procesoare multiple pot fi de două feluri:
 cu multiprocesare simetrică;
 cu multiprocesare asimetrică.
Multiprocesarea simetrică utilizează mai multe procesoare fizice legate
printr-o magistrală de memorie partajată şi suportul magnetic aferent (vezi
paragrafele 2.1.1.4 şi 2.2.1.3, referitoare la sisteme cu memorie partajată – shared
memory şi calculatoare multiprocesor).
În cazul sistemelor cu arhitecturi de multiprocesare asimetrică, fiecare
procesor are alt task. Exemple: cipseturile 3D din plăcile grafice moderne şi
cluster-ele de calculatoare personale (Beowulf), în care fiecare procesor are acces
numai la memoria calculatorului din care face parte (vezi paragraful 2.1.1.5,
referitor la sisteme fără memorie partajată – shared nothing).
IBM RS/6000 model F50
Sistemul cuprinde între 1 şi 4 procesoare Power PC cu cache extern şi are o
magistrală de 64 de biţi. Memoria cache se numeşte 8-way (cu 8 căi) pentru că datele
sunt grupate în seturi de câte 8  64 biţi. Memoria foloseşte date de 72 biţi: 64 pentru
date şi 8 pentru codul corector de erori (ECC = Erorr Correction Code). Procesorul
are o arhitectură de tip superscalar şi poate executa până la 4 instrucţiuni pe ciclu.
Caracteristici (vezi figura 2.33):
 frecvenţa de tact: 166–332 MHz, 87 MHz pentru magistrala de memorie;
 32 KB cache de date, 32 KB cache de instrucţiuni;
 magistrală de date de 64 de biţi şi magistrală de adrese de 32 de biţi;
 memorie de până la 4 GB şi memorie virtuală de până la 4 PB (1P = 252).
Arhitectura Intel multiprocesor
Arhitectura multiprocesor propusă de firma Intel este reprezentată prin
schema din figura 2.34.
Notaţiile din schemă au următoarele semnificaţii: BSP = Bootstrap Processor,
AP = Application Processor, APIC = Advanced Programmable Integrated Circuit,
ICC Bus = Interrupt Controller Communications Bus.

2.4.2.2. Arhitecturi biprocesor


Un sistem care suportă două procesoare trebuie să aibă o placă de bază
adaptată pentru a servi două CPU. În acest scop, placa de bază este dotată cu o
magistrală specială, a cărei construcţii depinde de la producător la producător, dar
care se conformează unor reguli generale.
54 ARHITECTURA SISTEMELOR DE CALCUL

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

Fig. 2.34. Schema arhitecturii Intel multiprocesor.

Astfel, cele două CPU sunt servite de două interfeţe paralele cu magistrala
principală a sistemului, iar arbitrarea traficului pe aceasta este efectuată de un
controler specializat. Accesul la magistrală este multiplexat, astfel că la un anumit
moment de timp şi pentru o durată bine stabilită (fixă sau adaptată sarcinii curente)
accesul la magistrală îl are doar un singur procesor. Aceste tipuri de scheme pot
cuprinde zone de memorie cache comune (integral sau parţial), iar magistrala poate
fi cu lăţime variabilă sau cu adaptare dinamică la cereri.
Tipuri de arhitecturi 55

Pentium II biprocesor

Fig. 2.35. Arhitectura unui sistem biprocesor cu Pentium II.

AMD Athlon biprocesor


Este un exemplu de arhitectură biprocesor construit pe baza cipsetului 760 al
firmei AMD (vezi figura 2.36).

Fig. 2.36. Arhitectura unui sistem biprocesor cu AMD Athlon.


56 ARHITECTURA SISTEMELOR DE CALCUL

Creşterea performanţelor este realizată prin utilizarea magistralei punct-la-


punct (Point-to-Point) şi a modului snoop. Modul snoop permite citirea datelor de
către un procesor din celălalt procesor (prin intermediul northbridge-ului),
nemaifiind necesară accesarea memoriei. Acest mod elimină tehnica prin care
datele necesare unuia din cele două procesoare erau înscrise în memorie de către
primul procesor şi apoi citite de către al doilea.
AMD K7 biprocesor
Microprocesorul AMD K7 lucrează pe magistrala ultrarapidă EV6 la
frecvenţa de 200 MHz. Astfel, K7 poate folosi memorii foarte rapide şi cu lărgime
de bandă mare, cum este Rambus DRAM. Datorită suportului multiprocesor al
protocolului de magistrală EV6, sistemele AMD pot fi folosite în domeniul staţiilor
de lucru şi al serverelor. Arhitectura EV6 permite o flexibilitate ridicată, cu
facilităţi de tipul topologiei punct-la-punct şi clock-forwarding. Magistralele de
date şi de adrese sunt decuplate, procesorul putând să emită cereri în timp ce
primeşte date şi comenzi de la logica de sistem. Tot aici sunt gestionate
transferurile cu sistemul, către memorie sau către magistralele AGP şi PCI.
Schema bloc a acestei arhitecturi este prezentată în figura 2.37.

Fig. 2.37. Arhitectura unui sistem biprocesor cu AMD K7 pe magistrala EV6.

Sun SPARC IV biprocesor


Arhitectura biprocesor Sun SPARC IV este prezentată în figura 2.38.
Notaţiile din schemă au următoarele semnificaţii: ECC = Error Checking/Correction
Code (cod de verificare/corecţie de erori), DCSS = Dual Chip Data Switch (bloc de
alegere a cipului), SIU = System Interface Unit (unitatea de interfaţă cu sistemul),
MCU = Memory Control Unit (unitate de comandă a memoriei).
Tipuri de arhitecturi 57

Fig. 2.38. Arhitectura Sun SPARC IV biprocesor.

Se observă că cele două procesoare au atât memorie cache comună, cât şi


individuală. Accesul la memoria comună se realizează prin intermediul unui
multiplexor, care nu permite lucrul simultan celor două CPU cu aceasta, pentru a
preveni blocajele şi erorile ce pot apărea în urma unor accesări simultane. Schema
este capabilă să ruleze două fire de execuţie (thread-uri) cu latenţe foarte mici de
scriere a cache-ului. De asemenea, accesul la magistrala principală este multiplexat,
pentru a preveni congestiile şi erorile de transmisie. Strategia de gestiune a
memoriei cache este de tipul LRU (Least Recently Used – cel mai puţin recent
utilizat), ceea ce duce la mai multe şanse de a găsi în cache informaţia necesară la
următoarea procesare (cache hit). Memoria acestui sistem este de tipul SDRAM.
Există scheme care aduc îmbunătăţiri suplimentare legate de administrarea
eficientă a magistralei (prin repartizarea dinamică a duratelor de acces bazată pe
predicţii şi pe comportări anterioare ale proceselor care se repetă la fiecare CPU etc.).
Intel Xeon biprocesor
Sistemul este echipat cu două procesoare Intel Xeon instalate pe o placă de
bază de tipul Supermicro P4DC6+. Această placă de bază este dotată cu cipsetul
i860, constituit din trei componente principale: Intel 82806AA PCI 64 Hub (Intel
P64H din figura 2.39), Intel 82860 Memory Controller Hub (MCH din figura 2.39)
şi Intel 82801BA I/O Controller Hub (ICH2 din figura 2.39). Aceste blocuri
asigură un transfer foarte rapid de date atât între procesoare, cât şi între acestea şi
memorie sau dispozitive periferice.
58 ARHITECTURA SISTEMELOR DE CALCUL

Fig. 2.39. Arhitectura sistemului Xeon biprocesor.

Pentru aceasta, arhitectura pune la dispoziţie componentelor sistemului


(controlerul SCSI, sloturile PCI pe 32 sau 64 de biţi) magistrale distincte, care
asigură separarea fluxurilor de date. Acest lucru este vital într-un server în care
schimbul de date dintre componente este realizat în flux continuu. Tot pentru o
sporire a vitezei de lucru, s-a recurs la utilizarea memoriei de tip RDRAM.
AMD Opteron biprocesor
Sistemul cu două procesoare AMD Opteron 250 la 2,4 GHz foloseşte o placă
de bază dotată cu cipsetul NVIDIA nForce Professional 2200. Noutatea acestei
configuraţii este că procesoarele nu împart aceeaşi magistrală pentru a accesa
memoria, ca la sistemele tradiţionale. În acel caz, magistrala reprezenta „gâtul
sticlei” (bottleneck) sistemului, fiind un obstacol în calea procesării la potenţialul
maxim al CPU-urilor. Pentru a evita această limitare, AMD a recurs la o arhitectură
cu memorie cache neuniformă, de tip ccNUMA (vezi figura 2.40).
Fiecare procesor dispune de un controler de memorie, care poate accesa o
porţiune de memorie rezervată doar lui. Sunt evitate astfel suprapunerile de date şi
alterarea reciprocă a datelor provenite de la procesoare diferite. În plus, cele două
CPU sunt interconectate printr-o magistrală de mare viteză, de tipul HyperTransport
(tehnologie patentată de AMD), care nu are legătură directă cu memoria (spre
deosebire de un sistem clasic) şi care asigură un dialog eficient între componente.
Cele două procesoare pot accesa memoriile proprii cu latenţe foarte mici (mult
mai mici decât la sisteme tradiţionale), precum şi memoria care nu le aparţine direct,
dar cu latenţe mari. Aceasta nu constituie un dezavantaj, deoarece un CPU lucrează
în mod normal doar în zona de memorie care îi este repartizată. Totuşi această
tehnologie are şi un punct slab: organizarea corectă a memoriei este crucială. Astfel,
arhitectura NUMA trebuie suportată atât de sistemul de operare, cât şi de aplicaţii.
Tipuri de arhitecturi 59

Fig. 2.40. Arhitectura sistemului AMD Opteron biprocesor.

Sistemele de operare Windows XP şi Windows server 2003 suportă în


întregime această tehnologie, opţiunea activându-se automat la detectarea unui
sistem de acest tip.
Calculatoarele biprocesor se pretează pentru diverse aplicaţii complexe, care
necesită putere de calcul. Aici intră aplicaţiile grafice de modelare 3D, aplicaţiile
de reţea (mai ales dacă sistemul este unul de tip nod coordonator de trafic sau
server pentru subreţele de diverse dimensiuni) şi aplicaţiile specifice de prelucrare
a semnalelor în timp real. Tot ce au acestea în comun este faptul că sunt create
astfel încât să lucreze cu mai multe fire de execuţie simultan, conform principiilor
de calcul paralel. Aceste tipuri de algoritmi sunt create pentru a minimiza timpul de
execuţie foarte mare pe care îl implică acele aplicaţii în situaţii normale.
În ultima vreme, câştigă popularitate un nou tip de aplicaţii care pot folosi
arhitectura biprcocesor, anume sistemele embedded. În esenţă, este vorba despre
conectarea în paralel, pe aceeaşi placă, a două (sau mai multe) procesoare
specializate, cu un scop bine definit, spre deosebire de calculatoarele personale,
care au scopuri multiple. De exemplu: prelucrarea unui semnal audio (codare şi
decodare) şi, eventual, transmiterea lui mai departe. Din această clasă fac parte
procesoarele DSP de la firma Texas Instruments. Premisa acestor aplicaţii este că
procesorul este adaptat să realizeze un număr restrâns de operaţii cu scopuri bine
determinate. În plus, DSP-ul este capabil să ruleze aplicaţii de sine stătătoare, care
să ofere interfaţă cu utilizatorul şi suport pentru memorare şi transmitere către alte
componente conectate la acesta. De exemplu: un subsistem care, conectat la un PC,
să codeze/decodeze fişiere audio în format mp3.
60 ARHITECTURA SISTEMELOR DE CALCUL

2.4.2.3. Arhitecturi multinucleu


Un procesor multinucleu combină două sau mai multe nuclee într-un singur
cip fizic, care conţine fie un circuit integrat cu toate nucleele, fie mai multe circuite
integrate interconectate. Un procesor cu mai multe nuclee implementează o
arhitectură de multiprocesare într-un singur pachet fizic. Un procesor cu toate
nucleele pe acelaşi circuit integrat se numeşte procesor multinucleu monolitic.
Nucleele pot partaja un singur cache de nivel înalt (de ex.: cache-ul L2
pentru procesoarele Core 2 de la Intel) sau pot avea câte un cache separat pentru
fiecare nucleu (de ex.: linia de procesoare dual-core de la AMD). Fiecare nucleu
implementează separat optimizări hardware, cum sunt: sisteme pipeline, execuţie
superscalară, extensii SSE, multithreading etc.
Un sistem cu n nuclee este eficient atunci când pe acesta se rulează n procese
(sau fire de execuţie) concurente şi independente. Cele mai cunoscute procesoare
multinucleu sunt cele de pe piaţa calculatoarelor personale (Intel şi AMD), precum
şi cele folosite în consolele de jocuri pe televizor (de ex.: procesorul Cell folosit la
PlayStation 3 are 8 nuclee, iar Xenon folosit la Xbox360 are 3 nuclee).
Avantajele sistemelor cu procesoare multinucleu sunt:
 Nucleele sunt apropiate fizic, ceea ce înseamnă că semnalele trebuie să
parcurgă o distanţă mai mică. Acestea permit procesoarelor să
interacţioneze cu o frecvenţă mai mare decât dacă ele ar fi fost separate
(două procesoare pe o placa de bază).
 Procesoarele multinucleu oferă designerilor posibilitatea de a face plăcile
de bază mai mici decât pentru două sau mai multe procesoare.
 Un procesor cu două nuclee consumă mai puţin decât două procesoare
cu câte un singur nucleu, deoarece acestea necesită mai multă putere să
transmită aceleaşi semnale în afara cipului,
 Preţul produsului este mai redus, pachetul fizic fiind de un singur
procesor în loc de mai multe.
Dezavantajele sistemelor cu procesoare multinucleu sunt:
 Deşi, teoretic, două procesoare pot dubla viteza de calcul, software-ul
trebuie optimizat pentru a beneficia de acest lucru, în funcţie de
posibilitatea aplicaţiilor şi a sistemului de operare de a crea fire de
execuţie (thread-uri) paralele şi independente.
 Integrarea a încă unui nucleu în acelaşi circuit integrat pune probleme
deosebite din punct de vedere termic, deoarece, practic, acelaşi pachet
fizic trebuie să disipeze de două ori mai multă putere. Intel a rezolvat
această problemă prin integrarea a două nuclee dual-core şi a unui cache
unificat în locul unui nucleu quad-core cu memorii cache separate. Astfel,
se forţează lucrul numai al unuia dintre cele două nuclee, în loc de toate
patru deodată, micşorând puterea instantanee disipată de întregul procesor.
 Din punct de vedere al arhitecturii, procesoarele cu un singur nucleu
folosesc mai eficient resursele de tranzistori de pe cip. Astfel, o
companie care produce procesoare trebuie tot timpul să aibă o linie de
procesoare cu un singur nucleu în paralel cu cele multinucleu.
Tipuri de arhitecturi 61

 Există mai mulţi factori care limitează performanţa reală a unui sistem
multinucleu. În primul rând, magistralele de sistem şi de memorie sunt
partajate, astfel încât devin „gâtuiri” (bottlenecks) care limitează fluxul
de date către nucleele multiple ale procesoarelor, în acelaşi mod în care o
şosea cu prea puţine benzi de circulaţie produce uneori blocaje.
Intel Core 2
Procesoarele Intel Core 2 Duo sunt produse folosind tehnologia de fabricare
Intel pe 65 nm. Versiunea pentru desktop-uri a procesoarelor furnizează o creştere
de 40% a performanţei şi este cu peste 40% mai eficientă din punct de vedere al
consumului de energie, în comparaţie cu cel mai bun procesor Intel anterior.
Potrivit analiştilor independenţi, procesoarele câştigă 9 din cele 10 teste majore de
performanţă pentru desktop-uri, servere şi calculatoare destinate jocurilor.
Familia de procesoare Intel Core 2 Duo este formată din 5 procesoare pentru
platforme desktop destinate afacerilor, utilizării individuale şi entuziaştilor pentru
tehnologie, precum şi din 5 procesoare pentru notebook-uri.
Familia de procesoare Intel Core 2 Duo este bazată pe micro-arhitectura Intel
Core. Prin intermediul celor două nuclee de execuţie, procesoarele pot executa cu
viteză un număr mai mare de instrucţiuni. De asemenea, procesoarele pot opera
mai rapid la lansarea simultană în execuţie a mai multor aplicaţii, de exemplu,
scrierea unui e-mail în acelaşi timp cu descărcarea de muzică şi scanarea antivirus.
Procesoarele dual-core contribuie la îmbunătăţirea execuţiei programelor, de
exemplu, în cazul vizionării unor clipuri high-definition sau al protejării PC-ului în
timpul tranzacţiilor financiare pe Internet, crescând, de asemenea, autonomia
bateriei în cazul notebook-urilor, care pot deveni astfel mai subţiri şi mai uşoare.
Inovaţiile aduse de Intel prin introducerea arhitecturii Intel Core 2 (Duo şi
Exteme) sunt următoarele:
Intel Wide Dynamic Execution – îmbunătăţeşte performanţa şi eficienţa,
întrucât fiecare nucleu de execuţie poate realiza până la 4 instrucţiuni simultan,
folosind un pipeline eficient în 14 stagii.
Intel Smart Memory Access – îmbunătăţeşte performanţa sistemului,
diminuând latenţa cipurilor de memorie şi optimizând astfel utilizarea lărgimii de
bandă disponibile pentru furnizarea datelor către procesor când şi unde este nevoie.
Intel Advanced Smart Cache – include o memorie cache L2 comună,
proiectată pentru a reduce consumul de energie prin micşorarea traficului de
memorie, şi măreşte performanţa, permiţând unui nucleu de execuţie să utilizeze
întreg cahe-ul atunci când celălalt nucleu nu este folosit. Această funcţie este
asigurată pentru toate segmentele de piaţă: server, desktop şi notebook.
Intel Advanced Digital Media Boost – dublează efectiv viteza de execuţie a
instrucţiunilor folosite cu precădere în aplicaţiile grafice şi multimedia.
Intel 64 Technology – această îmbunătăţire adusă arhitecturii Intel pe 32 de
biţi oferă suport pentru procesarea pe 64 de biţi şi permite procesorului să acceseze
o cantitate mai mare de memorie.
Nucleul de execuţie al procesorului Intel Core este reprezentat în figura 2.41.
Caracteristicile funcţionale ale acestei arhitecturi sunt expuse în cele ce urmează.
62 ARHITECTURA SISTEMELOR DE CALCUL

Fig. 2.41. Nucleul de execuţie al procesorului Intel Core.

Unităţile de execuţie cu numere întregi. Intel Core are trei asemenea


unităţi pe 64 biţi, fiecare dintre ele putând realiza operaţii pe 64 biţi într-un singur
ciclu. Există şi o unitate pe 64 biţi de numere complexe (CIU – Complex Integer
Unit), care realizează în mare parte aceeaşi muncă precum cea din P6, şi două
unităţi simple de numere întregi (SIU – Simple Integer Unit), pentru operaţiile
uzuale, cum ar fi adunarea. Una din unităţile SIU împarte portul 2 cu BEU (Branch
Execution Unit), pe care Intel o numeşte unitatea de salt în execuţie). Pe acest port,
SIU este capabil să lucreze în tandem cu BEU pentru a executa instrucţiuni macro
(comparaţii sau teste +jcc).
Posibilitatea de a realiza calcule pe 64 biţi într-un singur ciclu este o
premieră în arhitectura Intel 86 şi aceasta îl pune înaintea IBM, cu al său Power
PC970, care are o latenţă de două cicluri pentru operaţii cu numere întregi. În plus,
datorită unităţilor ALU pe 64 biţi care sunt pe porturi separate, Intel Core poate
menţine un total de trei operaţii pe 64 biţi per ciclu.
Unităţile de execuţie în virgulă mobilă. Intel Core are două unităţi de
execuţie în virgulă mobilă, care se ocupă de ambele tipuri de operaţii aritmetice:
scalare şi vectoriale.
Unitatea de execuţie de pe portul 1 se ocupă cu adunări sau cu alte operaţii
simple în virgulă mobilă, după cum urmează:
 scalar: simplă precizie (32 biţi) şi dublă precizie (64 biţi);
 vector: simplă precizie (4) şi dublă precizie (2).
Tipuri de arhitecturi 63

Unitatea de execuţie în virgulă mobilă de pe portul 2 se ocupă cu înmulţiri şi


împărţiri cu vectori şi scalari în formatele listate mai sus.
Procesarea vectorială reală pe 128 biţi. Arhitectura Intel Core asigură
latenţa de un ciclu pentru operaţiile vectoriale pe 128 biţi. Intel realizează acest
lucru făcând magistrala pentru virgulă mobilă şi cea internă de date cu lăţimea de
128 biţi, facilitate care înseamnă că este necesară doar o singură micro-operaţie
(care trebuie generată, trimisă, programată şi realizată) pentru fiecare operaţie
vectorială pe 128 biţi. De aceea, noul design nu numai că elimină dezavantajul
generat de latenţă, dar în acelaşi timp îmbunătăţeşte decodarea şi programarea
lărgimii de bandă, pentru că jumătate din micro-operaţii sunt generate pentru
instrucţiuni vectoriale de 128 biţi (vezi figura 2.42).

Fig. 2.42. Configuraţia de procesare vectorială reală pe 128 biţi.

Pipeline-ul. Intel Core are un pipeline realizat în 14 stagii, la fel de lung ca la


Power PC 970, aproximativ jumătate din cel de la Pentium 4 Prescott (~ 30 etape) şi
puţin mai lung decât cel de la P6 (12 etape). Aceasta înseamnă că Intel Core este
proiectat pentru o creştere lentă a vitezei de ceas şi nu scalează la fel de rapid ca
Pentium 4.
Fereastra de instrucţiuni. Deoarece partea din spate este mult mai lată
decât a predecesorilor, buffer-ul de reorganizare (Reorder Buffer, ROB) a crescut la
96 de intrări, de la 40 cât avea Pentium M, iar staţia de rezervare (Reservation
Station, RS) a fost mărită.
Fereastra de instrucţiuni din Intel Core a fost mărită nu numai fizic (ROB +
RS), ci şi virtual. Macro-fuziunea şi micro-operaţiile (descrise anterior), permit lui
Intel Core să reţină mai multe instrucţiuni cu un număr mai mic de resurse hardware.
64 ARHITECTURA SISTEMELOR DE CALCUL

Deoarece lăţimea execuţiei a fost mărită considerabil, vechiul hardware de


decodare al lui P6 ar fi fost inadecvat pentru a ţine restul procesorului ocupat cu
micro-operaţii. Intel a trebuit să mărească rata de decodare, în aşa fel încât mai multe
micro-operaţii/ciclu să ajungă la final. Primul lucru pe care l-a făcut a fost să adauge
încă un decodor simplu şi rapid, ceea ce înseamnă că decodorul hardware poate
trimite până la 7 instrucţiuni pe ciclu în coada de aşteptare ROB (vezi figura 2.43).

Fig. 2.43. Structura hardware pentru decodarea instrucţiunilor din arhitectura Intel Core.

AMD Opteron Dual-core


În figura 2.44 este reprezentată arhitectura simplificată a procesorului
Opteron dual-core.

Fig. 2.44. Arhitectura AMD Opteron dual-core.


Tipuri de arhitecturi 65

Tehnologic vorbind, AMD nu a realizat doar o simplă alipire a unei perechi


de nuclee K8 pe o bucată de siliciu, ci a efectuat o integrare la nivelul de bază,
astfel încât cele două nuclee să poată acţiona împreună mai eficient. Fiecare dintre
nucleele K8 are propriul său cache L2, independent, încorporat, dar cele două
nuclee împart o coadă comună a cererilor de sistem, un controler de memorie DDR
de tip dual-channel şi un set de legături HyperTransport cu mediul exterior.
Accesul la resursele I/O este adjudecat printr-o reţea crossbar sau printr-un
switch, astfel încât fiecare CPU poate comunica direct şi eficient cu memoria sau
cu dispozitivele I/O. În unele privinţe, Opteron dual-core se comportă foarte
asemănător unui sistem cu multiprocesare simetrică on-chip, transferând date intern
între cele două nuclee. Cu toate acestea, pentru restul infrastructurii I/O a
sistemului, Opteron dual-core pare asemenea versiunii mononucleu.
Arhitectura de sistem pentru Opteron este foarte diferită de cea a
competitorului său principal, Intel Xeon. Arhitectura AMD Direct Connect a fost
supra-dimensionată pentru procesorul Opteron mononucleu, anticipând viitorul
dual-core. Fiecare procesor (mono- sau binucleu) are propriul său controler de
memorie DDR local de tip dual-channel, iar procesoarele comunică între ele şi cu
cipurile I/O prin legături HyperTransport punct-la-punct, la frecvenţa de 1 GHz.
Lărgimea totală de bandă posibilă prin cei 940 de pini ai procesorului Opteron 875
este de 30,4 GB/s. Cu o legătură HyperTransport mai puţin, procesorul Opteron
275 poate atinge, teoretic, viteza de 22,4 GB/s.
Prin contrast, procesoarele Xeon actuale au o magistrală front-side (FSB)
partajată, pe care lucrează cipul northbridge (cu controler de memorie) şi ambele
procesoare. La frecvenţa de 800 MHz, lărgimea totală de bandă este de 6,4 GB/s,
ceea ce poate fi un bottleneck în anumite situaţii.
AMD Phenom Triple-core
AMD are în producţie un procesor cu trei motoare de procesare, proiectul
numindu-se AMD Phenom 3 chip (vezi figura 2.45).

Fig. 2.45. Arhitectura AMD Phenom Triple-core.


66 ARHITECTURA SISTEMELOR DE CALCUL

Noul microprocesor triple-core prezintă propriul design şi nu este un cip


quad-core cu un core dezactivat. Totuşi, cipurile includ 2 MB de cache L3 partajat
şi beneficiază de caracteristicile micro-arhitecturii K10, cum sunt setul de
instrucţiuni SSE4A şi unităţile de prelucrare în virgulă mobilă (FPU) de 128 biţi.
Evident, cipurile dispun de posibilităţi avansate de gestiune a puterii.
Potrivit unor estimări ale laboratoarelor X-bit, fiecare motor al procesoarelor
quad-core AMD Opteron/Phenom ocupă aproximativ 13% din aria fizică a
capsulei. Date fiind întreaga dimensiune de 285 mm² şi numărul de aproximativ
218 cipuri candidate obţinute din fiecare bucată de 300 mm, este neobişnuit faptul
că AMD a decis dezvoltarea unui design triple-core cu aria fizică de 247 mm² şi
250 de cipuri candidate obţinute de pe o bucată de 300 mm. Tehnic, AMD poate
realiza uşor microprocesoare cu un număr impar de motoare de procesare datorită
arhitecturii sale Direct Connect. Cu versiunile sale Phenom şi Athlon 64 2, AMD
are de combătut procesoarele Intel Core 2 (dual-core şi quad-core).
Intel şi AMD Quad-core
Ca replică la lansarea CPU-urilor quad-core de la Intel, AMD a lansat
propria platformă, Quad FX. Această platformă este un sistem de multiprocesare
simetrică, utilizând două CPU-uri Athlon 64 FX dual-core. De aceea, un calculator
personal Quad FX are două procesoare fizice dual-core care lucrează în paralel,
având în total, în sistem, patru nuclee CPU. Aceste două CPU-uri sunt
interconectate printr-o magistrală coerentă dedicată tehnologiei HyperTransport.
În CPU-urile quad-core de la Intel, nucleele sunt organizate în perechi.
Nucleele fiecărei perechi pot interschimba informaţii direct (la fel se întâmplă la
AMD dual-core şi la Intel Core 2 Duo), dar pentru a schimba informaţii cu unul
dintre nucleele localizate în cealaltă pereche trebuie să acceseze magistrala externă
a CPU, ceea ce se întâmplă pe platforma Quad FX, unde CPU-urile comunică între
ele folosind magistrala externă coerentă HyperTransport.
Diferenţa dintre platforma Quad FX şi arhitectura utilizată de către
procesoarele Intel quad-core se poate remarca în figurile 2.46 şi 2.47
Comparând cele două arhitecturi, se poate observa că platforma Quad FX
deţine un avantaj în ceea ce priveşte accesul la memorie. Magistrala externă a
CPU-ului Intel quad-core (Front Side Bus, FSB) este utilizată pentru a accesa
memoria RAM şi alte dispozitive prezente pe PC, precum şi pentru comunicarea
între perechile de nuclee, cu viteze de până la 8 GB/s.
Pe platforma Quad FX, CPU-urile folosesc un canal de comunicaţie dedicat
(magistrala coerentă HyperTransport), care transferă date cu până la 4 GB/s în
fiecare direcţie. Magistrala HyperTransport oferă două canale de comunicaţie, câte
unul pentru fiecare direcţie. În procesoarele AMD, controlerul de memorie este
încorporat în CPU şi, ca urmare, memoria este accesată utilizând o magistrală
dedicată, separat de canalul folosit de către CPU pentru a accesa restul PC-ului.
Datorită faptului că platforma Quad FX foloseşte o arhitectură de
multiprocesare simetrică, fiecare CPU îşi accesează propria memorie RAM.
Procesoarele utilizate pe platforma Quad FX pot accesa, de asemenea, memoria
controlată de un alt CPU.
Tipuri de arhitecturi 67

Fig. 2.46 Arhitectura Intel Quad-core.

Fig. 2.47 Arhitectura AMD Quad FX.

În ultima vreme, câştigă popularitate sistemele de tip embedded. Este vorba


despre conectarea în paralel a mai multor procesoare specializate, pe aceeaşi placă,
cu un scop bine definit. De exemplu, prelucrarea unui semnal audio (codare şi
decodare) în format mp3. Procesorul este adaptat să realizeze un număr restrâns de
operaţii specifice, iar DSP-urile sunt capabile să ruleze aplicaţii de sine stătătoare,
care să ofere interfaţă cu utilizatorul, suport pentru memorare şi transmitere.
68 ARHITECTURA SISTEMELOR DE CALCUL

Intel Core i7
Seria Intel Core a continuat să evolueze, cu variantele i3, i5, i7, acestea fiind
microprocesoarele multinucleu pentru calculatoare de performanţă redusă, medie
şi, respectiv, înaltă. Fără îndoială că vor urma mai multe alte variante superioare. O
imagine a variantei i7 (2011) este prezentată în figura 2.48. De fapt, aici există
integrate opt nuclee, dar – cu excepţia versiunii Xeon –, doar şase dintre acestea
sunt activate, ceea ce înseamnă că un cip cu unul sau două nuclee defecte din
fabricaţie poate fi vândut prin dezactivarea celui/celor defect(e). Fiecare nucleu are
propriile sale memorii cache de nivel 1 şi 2, dar există, de asemenea, o memorie
cache comună de nivel 3 (L3), utilizată de toate nucleele.

Fig. 2.48. Arhitectura Intel Core i7-3960X, de 21×21 mm, cu 2,27 miliarde tranzistori.

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