Sunteți pe pagina 1din 80

PROCESOARE SUPERSCALARE SI VLIW

1. Ce este arhitectura superscalara?


3. Caracteristicile arhitecturilor superscalare
4. Dependente de date
5. Politici pentru executia paralela a instructiunilor
6. Redenumirea registrilor
7. Procesoare VLIW

Ce este arhitectura superscalara

Intr-o arhitectur superscalar mai multe instruciuni pot fi iniiate


simultan i executate independent.
unitatile pipeline permiteau prelucrarea mai multor instruciuni n acelai timp, dar acestea
trebuiau s fie la un moment dat n diferite etape de executie.
arhitecturile superscalare includ toate caracteristicile de pipelining dar, n plus, pot exista
mai multe instruciuni care executa simultan aceai etap n pipeline exista mai multe
pipeline, care lucreaza simultan.

Ce este arhitectura superscalara

Arhitecturi superscalare
O arhitectura superscalara consta intr-un numar de pipeline care lucreaza in
paralel

Intr-un ciclu de ceas sunt lansate sau terminate mai multe instructiuni, al caror
numar depinde, evident, de numarul unitatilor de tratare disponibile.
In exemplul urmator, pot fi executate simultan o instructiune in virgula flotanta si doua cu numere
intregi; fiecare unitate de executie este de tip pipeline cu mai multe segmente

Arhitecturi superscalare

Limitari in executia paralela

Situatiile care impiedica executia in paralel a instructiunilor intr-o arhitectura


superscalara sunt foarte asemanatoare cu cele care apar intr-o arhitectura
pipeline (vezi hazarduri in pipeline).
Totusi, consecintele acestor situatii sunt mult mai severe in arhitecturile
superscalare fata de unitatile pipeline simple, datorita faptului ca potentialul
de paralelism fiind mult mai mare si pierderea de oportunitate este mai mare.

Limitari in executia paralela


Pot aparea trei categorii de limitari:
1. Conflicte de resurse:
- apar in cazul in care doua sau mai multe instructiuni concureaza simultan pentru aceeasi
resursa (registru, memorie, unitate functionala) sunt similare cu hazardurile structurale din
pipeline. Prin introducerea in arhitectura superscalara a mai multor unitati pipeline care lucreaza
in paralel, se incearca reducerea partiala a acestor conflicte.

2. Dependente de control (procedurale)


- prezenta salturilor creaza probleme majore in asigurarea paralelismului optim. Penalitatile
de salt se pot reduce conform celor discutate la arhit. pipeline.
- daca instructiunile au lungimi variabile, ele nu pot fi descarcate si tratate in paralel; o
instructiune trebuie sa fie decodificata pentru a o identifica pe urmatoarea si a o descarca
(fetch). In consecinta, tehnicile superscalare sunt aplicabile eficient la arhit. RISC, pentru ca aici
formatul instructiunilor si lungimea lor sunt fixe.

3. Conflicte de date
- sunt rezultatul dependentelor de date aparute intre instructiunile din program. Datorita
faptului ca arhit. superscalare permit o mare libertate privind ordinea executiei instructiunilor,
aceste dependente trebuie tratate cu multa atentie.

Programarea dinamica a executiei - conceptul out of order


Arhit. superscalare urmaresc executia a cat mai multor instructiuni in paralel, pentru a
exploata la maxim potentialul de paralelism al programului

O caracteristica a acestor arhit., ce permite cresterea paralelismului tratarii, este


programarea dinamica a executiei instructiunilor:
- instructiunile sunt reordonate pentru executia dinamica, in paralel si out of order (diferit
fata de ordinea lor initiala din program);
- executia out of order consta in tratarea instructiunilor independent de ordinea lor
secventiala din program, avand in vedere numai dependentele de date si disponibilitatea
resurselor de tratare

Rezultatul trebuie sa fie identic cu cel produs de executia strict in ordinea


secventiala a programului!
Principala problema: dependentele de date

Dependentele de date

Principiu:
Se lanseaza in executie (paralela) toate instructiunile cuprinse intr-o fereastra de
instructiuni, sub rezerva aparitiei constrangerilor produse de dependentele de date si resurse.

Tipuri de dependente de date:


1. Dependenta de date propriu-zisa
2. Dependente de iesire
3. Antidependente

dependente artificiale

Dependentele de date propriu-zise


Apar atunci cand iesirea unei instructiuni este ceruta ca intrare pentru o instructiune
subsecventa:

Aceste dependente sunt caracteristici intrinseci ale programului utilizator. Ele nu pot fi eliminate
de compilator sau prin tehnici hardware.
Depententele de date trebuie sa fie detectate si tratate:
- solutia simpla este blocarea temporara a unitatii de excutie (in ex., sumatorul intra in starea
stall, pana la terminarea inmultirii);
- pentru a evita blocarea, trebuie cautata (prin compilator sau hard) o alta instructiune care sa fie
executata pana se finalizeaza instructiunea in cauza (in ex., rezultatul inmultirii).

Dependentele de date de iesire, antidependenta


Dependenta de date de iesire apare atunci cand doua instructiuni scriu in aceeasi locatie.
Daca executia celei de-a doua se termina inaintea primeia, secventa este incorecta:

Antidependenta apare atunci cand o instructiune foloseste o locatie ca operand, in timp ce


o alta urmatoare scrie in aceasta locatie. Daca a doua instructiune se termina in timp ce
prima nu s-a finalizat , apare o eroare:

Dependentele de date natura dependentelor de iesire si a


antidependentelor
Dependentele de iesire si antidependentele nu sunt caracteristici intrinseci ale programului
ce se executa. Ele nu sunt dependente de date reale, ci conflicte de stocare.
Ele sunt pur si simplu consecinte ale manierei in care programatorul sau compilatorul
utilizeaza registrele si locatiile de memorie.
In exemplele anterioare, dependentele apar, in primul caz, pentru ca R4 este utilizat de
ambele instructiuni pentru stocarea rezultatului, iar in al doilea, pentru ca R3 este utilizat de a
doua instructiune pentru stocarea rezultatului.
Secventele din exemple pot fi rescrise fara dependente, utilizand registri suplimentari:

Politici pentru executia paralela a instructiunilor (1)


Capacitatea procesorului superscalar de a executa instructiuni in paralel este determinata de:
numarul si natura unitatilor pipeline paralele (acestea determina numarul si natura instructiunilor
care pot fi tratate in acelasi timp)
mecanismul utilizat de procesor pentru gasirea instructiunilor independente (cele care pot fi executate
in paralel)

Politicile utilizate pentru executia instructiunilor sunt caracterizate prin doi factori:

ordinea in care instructiunile sunt ordonate pentru executie;


ordinea in care instructiunile sunt finalizate (adica in care scriu rezultatele in registre si locatii de memorie).

Cea mai simpla politica consta in executia si finalizarea instructiunilor in ordinea lor secventiala . Aceasta
insa diminueaza sansele de a gasi instructiuni care sa se execute in paralel.
Pentru a inbunatati paralelismul, procesorul trebuie sa priveasca inainte ca sa gaseasca instructiuni
independente, ce pot fi executate in paralel. Acestea vor fi executate intr-o ordine diferita decat cea strict
secventiala, cu singura restrictie ca rezultatul final trebuie sa fie cel corect!

Politici de executie:

1. In-order issue with in- order completion


2. In-order issue with out-of- order completion
3. Out-of-order issue with out-of- order completion

Politici pentru executia paralela a instructiunilor (2)


Exemplu:

consideram o arhitectura superscalara care poate citi si decodifica simultan doua instruct., are 3
unitati functionale care lucreaza in paralel (sumator si multiplicator intregi, unitate virgula flotanta) si poate scrie
simultan rezultatele a doua instruct.).

Consideram secventa:

I1 necesita doua cicluri pentru executie;


I3 si I4 sunt in conflict pentru aceeasi unitate functionala;
I5 depinde de valoarea produsa de I4 (dependenta de date propriu-zisa);
I2, I5 si I6 sunt in conflict pentru aceeasi unitate functionala.

In-order issue with in-order completion (1)


Instructiunile sunt lansate in executie exact in ordinea care corespunde executiei secventiale.
In consecinta:
o instructiune nu poate fi tratata decat dupa ce a fost tratata cea anterioara;
o instructiune nu poate fi terminata decat dupa ce s-a terminat cea anterioara.

Pentru garantarea finalizarii in ordine, tratare secventei se blocheaza atunci cand apar
conflicte sau atunci cand unitatea cere pentru executie mai mult decat un ciclu de ceas.

In-order issue with in-order completion (2)


Procesorul detecteaza si rezolva (prin blocare) situatiile de dependenta de
date si conflicte de resurse.
Deoarece instructiunile sunt tratate in ordine stricta, paralelismul rezultant este foarte mult
dependent de modul in care programul a fost scris si compilat.

Exemplu (slide urmator): daca I3 si I6 isi schimba pozitiile, perechile I6-I4 si I5-I3 pot fi
executate in paralel

In consecinta, au fost cautate tehnici care sa faca hardul capabil sa detecteze


in avans instructiunile executabile in paralel si sa le ordoneze pentru executie
(fara apel la compilator)

In-order issue with in-order completion (3)


Daca compilatorul genereaza secventa modificata de mai jos, I6-I4 si I5-I3 se pot executa in
paralel si secventa necesita numai 6 cicli in loc de 8:

In-order issue with in-order completion (4)

Procesorul detecteaza numai dependentele reale de date, nu si


dependentele de iesire si antidependentele. Niciuna dintre aceste tipuri de
dependente nu vor fi violate prin executia in ordine!

Dependenta de iesire

Antidependenta

Out-of-order issue with out-of-order completion (1)

La executia in ordine, nicio instructiune noua nu poate fi lansata, atunci cand


procesorul a detectat un conflict si este blocat. Procesorul nu poate explora in
avans, pentru a depista noi instructiuni ce pot fi executate in paralel cu cele
actuale.
Executia in afara ordinii incearca sa rezolve problema de mai sus, adaugand
grupului de instructiuni care sunt tratate la un moment dat si altele, selectate in
avans si in orice ordine, cu singura conditie ca rezultatul programului sa fie cel
corect.

Out-of-order issue with out-of-order completion (2)


Daca vom consideram secventa de instructiuni din slideul anterior:
- I6 poate fi acum tratata inaintea lui I5 si in paralel cu I4. seventa se executa in 6 cicli (fata
de 8, la executia in ordine)

Out-of-order issue with out-of-order completion (3)

Aceasta tehnica poate sa rezolve toate cele trei tipuri de dependente, putand
fi astfel rezolvate atat
dependente de iesire:

cat si antidependente:

Redenumirea registrilor

Dependentele de iesire si antidependentele pot fi tratate ca si conflicte normale, la fel ca si


dependentele de date.

Paralelismul poate fi imbunatatit eliminand aceste dependente, care nu sunt dependente de date reale.
Eliminarea celor doua dependente se poate face prin alocarea automata de noi registri pentru
stocarea valorilor care pot provoca aceste dependente.
Tehnica se numeste redenumirea registrilor.
Exemple:
Dependenta de iesire se elimina prin alocarea, de exemplu, a registrului R6 pentru valoarea R2+R5.

Similar se procedeaza si in antidependenta de mai jos:

Arhitecturi superscalare comentarii finale


Procesoarelor superscalare le sunt caracteristice urmatoarele tehnici:
- unitati pipeline suplimentare care lucreaza in paralel;
- executia instructiunilor altfel decat ordinea secventiala din program a acestora (out-oforder issue/out-of-order completion);
- redenumirea registrilor
Toate tehnicile de mai sus sunt capabile de a spori performanta procesorului

Experimentele au demonstat ca:


fara utilizarea altor tehnici, simpla adaugare de noi unitati nu este eficienta;
tratarea out-of-order este foarte importanta, pentru ca permite identificarea in avans a instructiunilor
cu executie independenta;
redenumirea registrilor poate creste performanta cu peste 30%; in acest caz penalitatile se
datoreaza numai dependentelor propriu-zise de date (adevarate);
este importanta asigurarea unei capacitati de fetch/decodificare pentru circa 16 istructiuni simultan,
in vederea identificarii celor independente.

Exemple de arhitecturi superscalare


Power PC 604
- sase unitati independente de executie:
- unitate de executie salturi
- unitate Load/Store
- 3 unitati de calcul cu intregi
- o unitate vigula flotanta
- tratare in-order

Power PC 620
- suplimentar fata de PC 604, tratare out-of-order

Pentium
- trei unitati de executie independente:
- 2 unitati de calcul cu intregi
- o unitate virgula flotanta
- tratare in-order, doua instructiuni simultan pe ciclul de ceas

Pentium II-IV
- suplimentar fata de Pentium, tratare out-of-order
- cinci instructiuni pot fi tratate intr-un ciclu de ceas

Puncte tari si puncte slabe in arhitecturi superscalare


Bun:
hardul rezolva totul:
detecteaza potentialul de paralelism;
incearca sa trateze in paralel cat mai multe instructiuni posibile;
rezolva redenumirea registrilor.

compatibilitatea binara:
atunci cand sunt adaugate noi unitati functionale intr-o npua versiune arhitecturala (fara a se
modifica setul de instructiuni!), vechile programe pot beneficia si ele de potentialul suplimentar
de paralelism

Rau:
foarte complexe
- este nevoie de mult hard pentru investigarea in avans a instructiunilor in timpul executiei
programului si exista limite in aplicarea acestei tehnici.
- consumul de energie creste foarte mult

fereastra de instructiuni este limitata rezulta limitari in detectarea potentialului de


paralelism al instructiunilor.

Procesoarele VLIW - alternativa la superscalare

Arhitecturile VLIW permit detectarea potentialului de paralelism in timpul


compilarii programului:
dupa ce instructiunea a fost citita (fetch), toate operatiile corespunzatoare sunt tratate
in paralel;
nu mai este necesar hardul suplimentar destinat detectarii paralelismului in timpul
executiei;
este rezolvata problema ferestrei de instructiuni: compilatorul poate analiza intregul
program pentru a detecta operatiile paralele.

Procesoarele VLIW

Detectarea paralelismului si impachetarea operatiilor in instructiuni se face offline, de catre


compilator

Procesoarele VLIW

Avantajele si problemele procesoarelor VLIW


Avantaje:
- hardware simplificat numarul unitatilor functionale (FU) poate fi crescut oricat de mult, fara a
mai fi nevoie de hardul sofisticat suplimentar, pentru detectarea paralelismului
- compilatoarele performante pot detecta paralelismul pe baza analizei globale a programului
se elimina problema ferestrei de instructiuni

Probleme:
- necesitatea unui mare numar de registre care sa pastreze operanzi si rezultate pentru toate FU
active
- capacitate mare de transport intre FU, registre si memorie
- magistrala cu banda larga intre memoria cache si unitatea fetch (ex.: o instructiune cu 7
operatii, fiecare pe 24 de biti, rezulta 168 biti/instructiune)
- cod de program de mari dimensiuni, in special datorita operatiilor neutilizate (se irosesc biti din
codul instructiunii)
- cod binar nereutilizabil daca in noua versiune de procesor se introduce o FU noua, numarul
operatiilor posibil a fi executate in paralel creste, cuvantul (formatul) instructiunii se schimba si
astfel vechiul cod de program nu va mai putea fi executat.

ARHITECTURI PENTRU CALCUL PARALEL


1. De ce calcul paralel
2. Programe paralele
3. Clasificarea Flynn a arhitecturilor de calculator
4. Executia arhitecturilor paralele
5. Retele de intercomunicatie
6. Masinile celulare
7. Multiprocesoare
8. Multicomputere
9. Procesoare vectoriale
10. Extensiile multimedia ale microprocesoarelor

De ce calcul paralel?
Nevoia de calcul mai performat
La cresterea randamentului de calcul al procesoarelor moderne contribuie doi factori
principali:
1. Tehnologiile pentru realizarea circuitelor
2. Caracteristicile arhitecturale:
- memorii cache de mari dimensiuni
- magistrale multiple rapide
- prelucrare pipeline
- Arhitecturi superscalare (unitati functionale multiple)
Totusi:
calculatoarele dotate cu UC relativ simple, ca si cele de mai sus, nu sunt frecvent capabile
de a satisface nevoile de executie pentru o serie de aplicatii, ca, de ex.:
- analize aerodinamice sau a fluxurilor de curgere a lichidelor;
- simularea sistemelor complexe, in fizica, economie, biologie, tehnica;
- proiectarea si simularea asistata de calc;
- multimdia.

Aplicatiile de mai sus sunt caracterizate printr-un volum foarte mare de calcule
numerice si/sau cantitati foarte mari de date de intrare

O solutie: calculatoarele paralele


Solutie pentru nevoia de randament ridicat: arhitecturi in care mai multe UC
functioneaza impreuna pentru a rezolva anumite aplicatii.

Caracteristici principale ale calculatoarelor paralele:


- numarul si complexitatea unitatilor centrale;
- disponibilitatile comune (memoria partajata);
- topologia de interconectare;
- performanta retelei de interconectare;
- resursele de I/E.
- altele
Astfel de calculatoare pot fi organizate in trei modalitati (clasificarea Flynn)

Programele paralele (1)

Programele paralele (2)

Programele paralele (3)

Programele paralele (4)

Programele paralele (5)

Programele paralele (6)

Programele paralele (7)

Clasificarea Flynn a arhitecturilor de calculatoare


Clasificarea Flynn este bazata pe natura fluxurilor de instructiuni executate de
calculator si a fluxurilor de date care sunt tratate de aceste instructiuni.
Clasificarea Flynn:
1. Flux simplu de instructiuni, flux simplu de date (SISD).
2. Flux simplu de instructiuni, flux multiplu de date (SIMD)
3. Flux multiplu de instructiuni, flux simplu de date (MISD)
4. Flux multiplu de instructiuni, flux multiplu de date (MIMD)

Clasificarea arhitecturala Flynn (2)

Clasificarea arhitecturala Flynn (3)

Clasificarea arhitecturala Flynn (4)

Clasificarea arhitecturala Flynn (5)

Performantele arhitecturilor paralele

Intrebari importante:
Cum trebuie sa functioneze un calculator paralel pentru a dispune de
potentialul sau maxim?
Ce viteza de executie se poate obtine intr-un calculator paralel, pentru o
aplicatie concreta ?
Cum masuram performanta unui calculator paralel ?

Metrici de executie
Viteza maximala: volumul maxim de calcul care poate fi teoretic atins, atunci cand
toate modulele sunt integral utilizate.
Aceasta valoare nu are semnificatie practica pentru utilizatori, fiind utilizat de producatori
pentru a-si face publicitate produselor.

Sporul de viteza (speedup): masoara castigul obtinut utilizand un anumit calculator


paralel pentru executia unui program paralel dat.

Ts - timpul de executie necesar, utilizand cal mai bun algoritm secvential;


Tp - timpul de executie necesar cu un algoritm paralele.

Metrici de executie
Eficacitatea: aceasta metrica leaga speedup cu numarul de procesoare utilizate;
ea furnizeaza o masura a eficacitatii de care sunt capabile procesoarele .

S: speedup;
p: numarul de procesoare.

Pentru situatia ideala, in teorie:

Practic, eficacitatea reala cu valoarea 1 nu poate fi atinsa!

Legea lui Amdahl


Fie f partea de calcule care, conform algoritmului, trebuie executate
secvential (f intre 0 si 1). Fie p numarul de procesoare.

Legea lui Amdahl (2)


Legea lui Amdahl: nu se poate obtine un speedup mai mare de 1/f ,
indiferent de numarul de procesoare. La procesoarele paralele, oricat de
mica ar fi partea de calcul secvential, aceasta impune o anumita limitare in
speedup

Pentru exploatarea la maxim a numarului mare de procesoare, f trebuie sa fie


mic (algoritmul trebuie sa fie puternic paralel).

Alte aspecte care limiteaza speedup


in afara de secventialitatea intrinseca a anumitor parti ale unui algoritm,
exista si alti factori care limiteaza speedup-ul:
- costul comunicatiilor;
- echilibrarea sarcinilor pe procesoare;
- costul programarii paralele a proceselor de calcul;
- operatiile de I/E
Exista numerosi algoritmi cu un grad ridicat de paralelism; pentru acestia, valoarea
lui f este foarte mica si poate fi ignorata. Ei sunt potriviti pentru sistemele masiv
paralele. In aceste situatii, alti factori produc limitari ca, de exemplu, costul
comunicatiilor, care poate deveni critic.

Eficacitatea si costurile de comunicatie


Sa consideram un calcul masiv paralel, in asa fel incat f (proportia calculelor secventiale)
poate fi neglijat.
Notam cu:
fc - costurile generale de comunicatie ale procesorului;
Tcalc - timpul in care procesorul executa calcule;
Tcomm timpul in care procesorul este inactiv, datorita comunicatiilor;

Cu algoritmii avand un grad ridicat de paralelism, calculatoarele masiv paralele, cu cu un mare numar
de procesoare, pot fi utilizate eficace daca si fc este mic; asta inseamna ca timpul necesar procesorului
pentru comunicatii trebuie sa fie mic, comparabil cu timpul sau util dedicat calculelor.
Pentru a mentine fc rezonabil mic, numarul de procesoare nu trebuie sa depaseasca o anumita limita
superioara .

Reteaua de intercomunicatii

Reteaua de intercomunicatii (RI) este o componenta cheie a arhitecturii, care


are o influenta decisiva asupra executiei si a costurilor globale ale acesteia.
Traficul in RI se compune din transferul datelor, comenzi si cereri.
Parametrii principali ai RI sunt:
- largimea totala de banda : biti/seconda transferati;
- costul.

Reteaua de intercomunicatii (2)

retelele tip magistrala sunt simple si ieftine.


ele permit o singura comunicatie simpla pe unitatea de timp; largimea de banda este
partajata de toate nodurile.
performanta este relativ slaba.
pentru mentinerea la o anumita performanta, numarul de noduri este limitat (16 - 20).

Reteaua de intercomunicatii (3)

fiecare nod este legat cu toate celelalte.


comunicatiile pot fi efectuate in paralel intre toate perechile de noduri.
executia e rapida, dar costurile sunt ridicate.
costul creste rapid cu numarul de noduri.

Reteaua de intercomunicatii (4)

reteaua crossbar este o retea dinamica: topologia de intercomunicare poate fi


modificata prin pozitionarea unor comutatoare.
reteaua este integral conectata: orice nod poate fi direct legat la oricare altul.
sunt necesare mai putine intercomunicatii decat la reteaua statica integral
conectata; totusi, este necesar un mare numar de comutatoare.
un mare numar de comunicatii pot fi executate in paralel (un anumit nod poate
primi sau transmite simultan date).

Reteaua de intercomunicatii (5)

retelele mash (plasa) sunt mai ieftine decat cele integral conectate si furnizeaza o
performanta relativ buna .
pentru a transmite o informatie intre anumite noduri este necesara o rutare prin noduri
intermediare (maximum 2*(n-1) intermediare pentru o plasa cu n x n noduri).
Sunt posibile racordari pentru buclarea informatiei: ex. intre nodurile 1 si 13, 2 si 14,
etc.
au fost realizate si mash-uri tridimensionale.

Reteaua de intercomunicatii (6)

cele 2**n noduri ale retelei hypercub sunt aranjate intr-un cub n-dimensional.
Fiecare nod este racordat la cele n vecine.
pentru a transmite o informatie intre noduri, este necesara rutarea prin noduri
intermediare (maxim n intermediari).

Calculatoarele SIMD

Calculatoarele SIMD se numesc in mod obisnuit masini celulare (array processors).


Unitatile paralele (PU) sunt de obicei foarte simple: un ALU care executa sirul de instructiuni lansat de
CU, cateva registre si o memorie locala.
Primul calculator SIMD - ILLIAC IV (anii 70): 64 procesoare relativ puternice relativement puissants, in
retea mash (ca in figura)
Calculatoare comerciale recente:
- CM2 (Connection Machine) fabricat de Thinking Machine Company: 65 536 procesoare foarte
simple (legate in hypercube).
masinile celulare sunt puternic specializate pentru probleme numerice cu date care pot fi
exprimate in format matriceal sau vectorial. Fiecare unitate centrala calculeaza un element al

Multiprocesoarele
Calculatoarele MIMD cu memorie partajata se numesc multiprocesoare.

Unele multiprocesoare nu au niciun fel de memorie partajata. Memoria centrala a


sistemului este accesibila in mod egal tuturor procesoarelor. Intreaga memorie este
distribuita ca si memorie locala pentru procesoare.
Totusi, fiecare procesor are acces la memoria locala a celorlalte si este disponibil
si un spatiu de adrese fizice global.
Acest tip de organizare se numeste memorie partajata distribuita.

Multiprocesoarele
Comunicatia intre procesoare se face prin intermediul memoriei partajate.
Daca un procesor schimba o valoare intr-o locatie a acestea, toate celelalte
procesoare pot citi aceasta noua valoare.
Din punct de vedere al programatorului, comunicatia este realizata prin
variabile partajate, adica variabile care pot fi accesate de catre oricare dintre
procesele (activitatile) paralelele:
Ex.:- tabela t in slide 5;
- matricele a, b,si c in slide 7;

Conflictele de memorie pot degrada serios performanta


multiprocesorului. Este si motivul pentru care aceste arhitecturi nu
suporta un numar ridicat de procesoare.

Exemple de multiprocesoare
IBM System/370 (anii 70): doua UC IBM conectate la memoria partajata.
IBM System370/XA (1981): la memoria partajata pot fi conectate UC multiple.
IBM System/390 (lanii 90): caracteristici asemanatoare cu S370/XA, performanta
ameliorata. Posibilitatea de a lega intre ele mai multe sisteme multiprocesor prin conexiuni
rapide pe fibre optice.
CRAY X-MP (jumatatea anilor 80): patru procesoare vectoriale conectate la o memorie
partaja (durata ciclului: 8,5 ns).
CRAY Y-MP (1988): opt procesoare vectoriale conectate la o memorie partaja; de 3 ori mai
puternic decat un 8 processeurs vectoriels reli la mmoire partage; CRAY X-MP
(durata ciclului: 4 ns).
C90 (inceputul anilor 90): dezvoltarea lui CRAY Y-MP; 16 procesoare vectoriale.
CRAY 3 (1993): maxim 16 procesoare vectoriale (durata ciclului 2ns).
Butterfly multiprocesseur systeme, fabricat de BBN Advanced Ordinateurs (1985/87):
maxim 256 procesoare Motorola 68020, conectate impreuna printr-o retea dinamica de
comutatie sofisticata; organizare distribuita a memoriei partajate.
BBN TC2000 (1990): versiunea ameliorata a lui Butterfly , utilizand procesoare Motorola
88100 RISC.

Multicomputerele
Multicomputerele sunt calculatoare MIMD cu un spatiu de adrese distribuit,
astfel incat fiecare procesor are propria sa memorie, care nu poate fi accesata
de alte procesoare.

Multicomputerele (2)
Comunicatia intre procesoare se face numai prin passing messages,
lansate in reteaua de intercomunicatie.
Din punct de vedere al programatorului, consecinta este ca nu are
disponibila nicio variabila partajata (o variabila poate fi consultata numai de
un proces simplu).
Pentru comunicatia intre procese (activitati paralele) programatorul
utilizeaza canale si operatii send/receive (ex. in slide 10).
Nu exista concurenta intre procesoare pentru memoria partajata. In
consecinta, numarul de procesoare nu mai este limitat de conflictele de
memorie.
Viteza retelei de intercomunicatie este un parametru important al executiei
globale.

Exemple de multicomputere
Intel iPSC/2 (1989): 128 UC de tip 80386 conectate printr-un hypercube 7dimensional (2 **7 = 128).
Intel Paragon (1991): peste 2000 procesoare de tip i860 (randement ridicat
RISC) conectate printr-o retea mash bidimensionala.
KSR-1 (1992): 1088 procesoare conectate printr-o retea ring (inel); fabricat
de Kendal Square Research.
nCUBE/2S (1992): 8192 procesoare conectate printr-un hypercube 10dimensional; fabricat de nCUBE.
Cray T3E MC512 (1995): 512 UC legate printr-un mash tridimensional;
fiecare unitate centrala este un DEC Alpha RISC.
Retele de posturi de lucru:
Un grup de posturi de lucru este conectat printr-o retea locala (LAN) si poate fi angajat
pentru un calcul paralel, ca un multicomputer.
Performantele sunt de obicei inferioare celor ale multicomputerelor specializate, din cauza
vitezei de comunicatie in LAN. Totusi, aceasta poate fi o solutie ieftina.

Procesoarele vectoriale
Procesoarele vectoriale includ in setul lor atat instructiuni scalare, cat si
instructiuni pentru operatii asupra vectorilor.
Masinile celulare SIMD pot opera asupra vectorilor executand simultan aceeasi
operatie asupra fiecarui element al vectorului. Fiecare element va fi prelucrat de un
element de tratament separat.

Procesoare vectoriale sunt calculatoare cu arhitecturi care dispun de facilitati


de executie a instructiunilor vectoriale, valorificand paralelismul furnizat de de
unitatile functionale pipeline.

Procesoarele vectoriale (2)


Procesoarele vectoriale nu sunt procesoare paralele propriu-zise: ele nu au mai
multe UC care sa functioneze in paralel. Ele sunt procesoare SISD care au implementat
instructiuni pentru vectori, puse in aplicatie de unitati functionale pipeline.

Procesoarele vectoriale au de obicei registre de vector, care pot stoca fiecare 64 pana la
128 cuvinte.

Instructiunile vectoriale permit:


- incarcarea unui vector din memorie in registrul de vector;
- stocarea vectorului in memorie;
- operatii aritmetice si logice intre vectori;
- operatii intre vectori si marimi scalare;
- Altele

Din punct de vedere al programatorului, acest lucru ii permite sa utilizeze direct


in program operatii asupra vectorilor (ex slide 8); compilatorul le va traduce in
instructiuni vectoriale la nivel masina.

Procesoarele vectoriale (3)

Unitatea vectoriala
O unitate vectoriala se compune tipic din:
- unitati functionale pipeline;
- registri de vector;
Registrii de vector:
n registri de vector generali Rj;
registrul VL al lungimii vectorului; stocheaza lungimea l du vectorilor tratati la
momentul respectiv;
registrul masca M; stocheaza un ansamblu de l biti, cate unul pentru fiecare element
din registrul de vector, interpretat ca valori booleeane; instructiunile vectoriale pot fi
executate in mod masca, adica elementele registrului de vector care au asociate in M
valoarea 0 vor fi ignorate (netratate).

Instructiunile vectoriale

Executia inmultirii vectorului nu se poate face pana cand nu s-a terminat adunarea
vectorului; elementele sumei sunt produse printr-o pipeline sumatoaresi intra intr-o pipeline
multiplicatoare; astfel, adunarea si inmultirea sunt executate (partial) in paralel.

Instructiunile vectoriale

Intr-un limbaj asemanator Pascal, cu calcul vectorial:

Un compilator pentru un procesor vectorial produce aceasta secventa:

Extensiile multimedia la microprocesoarele


de uz general
Aplicatiile video si audio solicita frecvent operatii cu date de mici
dimensiuni (8 sau 16 bits).
Aceste operatii valorifica potentialul important de paralelism SIMD
(vectorial).
Noile generatii de microprocesoare pentru uz general au fost echipate
cu instructiuni speciale, pentru exploatarea acestui potential de
paralelism.
Instructiunile specializate pentru multimedia executa calcule vectoriale
la nivel de bit, semicuvant sau cuvant.

Extensiile multimedia

Mai multi constructori au extins setul de instructiuni al procesoarelor pentru


a ameliora executia aplicatiilor multimedia:
- MMX pentru Intel x86;
- VIS pentru UltraSparc;
- MDMX pentru MIPS;
- MAX - 2 pentru Hewlett-Packard PA-RISC.
Linia Pentium furnizeaza 57 instructiuni MMX. Ele trateaza datele in
mod SIMD.

Extensiile multimedia

Ideea fundamentala: executia unor subcuvinte (subword) :


Se foloseste intreaga largime a canalului de date al procesorului (32 sau 64 bits), numai
ca se trateaza date de tip redus (utilizate in tratamentul semnalelor - 8, 12, sau 16 bits).
Cu un cuvant de 64 bits, sumatoarele pot fi utilizate pentru a efectua in paralel 8 adunari,
fiecare pe 8 biti.
Metoda reprezinta practic un tip de paralelismSIMD, dar practicat la scara redusa.

Extensiile multimedia
Pentru operatiile multimedia sunt definite trei tipuri de date impachetate:
byte impachetat, semicuvant impachetat, cuvant impachetat.

Extensiile multimedia
Un exemplu de aritmetica SIMD cu setul de instructiuni MMX:

Extensiile multimedia
Cum sa obtinem datele gata pregatite pentru calcul?
Cum sa obtinem rezultatele intr-un format adecvat?
Solutia: impachetarea si despachetarea datelor

Rezumat
Nevoile crescande de randament ridicat in prelucrare nu pot fi satisfacute
totdeauna de calculatoarele uzuale, dotate cu o singura UC.
La calculatoarele paralele, mai multe UC functioneaza impreuna pentru a
rasounde unei aplicatii date.
Pentru a utiliza calculatoare paralele, trebuie sa avem disponibile programe
paralele.
Calculatoarele pot fi clasificate pe baza modului de tratare a fluxurilor de
instructiuni si de date asociate acestora. Clasificarea Flynn propune SISD,
SIMD, MIMD.
Performanta in executie obtinuta prin utilizarea calculatoarelor paralele
depinde nu numai de numarul de procesoare disponibile, ci poate fi limitata
de caracteristicile programelor executate.
Eficacitatea utilizarii unui ordinator paralel este influentata de caracteristici ale
programului paralel, ca: gradul de paralelism, intensitatea comunicarii
interprocesoare, etc.

Rezumat
O componenta cheie a unei arhitecturi
paralele este reteaua de intercomunicatie.
Masinile celulare executa aceleasi operatii , ca
un ansamblu de unitati de tratare conectate
impreuna.Ele sunt specializate pentru
probleme numerice exprimate in format
matriceal sau vectorial.
Multiprocesoarele sunt calculatoare MIMD in
care toate UC-urile au acces la un spatiu de
adrese partajate comune. Numarul de UC
este limitat.
Multicomputerele au un spatiu de adrese
distribuit. Comunicatia intre UC se face numai
prin lansarea unor mesaje in reteaua de
intercomunicatie. Numarul de UC conectate
poate fi mare.

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