Documente Academic
Documente Profesional
Documente Cultură
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
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.
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.
dependente artificiale
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).
Politicile utilizate pentru executia instructiunilor sunt caracterizate prin doi factori:
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:
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:
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.
Exemplu (slide urmator): daca I3 si I6 isi schimba pozitiile, perechile I6-I4 si I5-I3 pot fi
executate in paralel
Dependenta de iesire
Antidependenta
Aceasta tehnica poate sa rezolve toate cele trei tipuri de dependente, putand
fi astfel rezolvate atat
dependente de iesire:
cat si antidependente:
Redenumirea registrilor
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.
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
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
Procesoarele VLIW
Procesoarele VLIW
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.
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
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.
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.
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
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.
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
Multiprocesoarele
Calculatoarele MIMD cu memorie partajata se numesc multiprocesoare.
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;
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.
Procesoarele vectoriale au de obicei registre de vector, care pot stoca fiecare 64 pana la
128 cuvinte.
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
Extensiile multimedia
Extensiile multimedia
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.