Procesoare Superscalare

Previzualizare curs:

Extras din curs:

Procesoarele superscalare, exploatând paralelismul arhitecturii, pot executa mai multe instrucţiuni într-un ciclu maşină. Metodele superscalare, rezultat al extinderii principiilor ce stau la baza procesoarelor RISC, au fost aplicate începând din anii 1990 unei game largi de arhitecturi, de la cele specifice RISC (DEC Alpha), până la unele evident non-RISC (Intel x86).

Arhitectura internă

Elementele (unităţile) principale ale arhitecturii, prezentate în figura 4.1, realizează, în ordinea în care sunt parcurse de fluxul de instrucţiuni, următoarele operaţii: citirea instrucţiunilor (fetch) şi predicţia salturilor, decodificarea instrucţiunilor şi analiza depen¬dentelor de date, alocarea unităţilor de execuţie, analiza şi execuţia operaţiilor cu memoria, reordonarea instrucţiunilor şi înscrierea rezultatelor. La baza acestei arhitecturi stă o implementare a unei „benzi de asamblare" (pipeline), ale cărei etape se suprapun, într-o oarecare măsură, peste fazele de procesare.

Fig.4.1 Organizarea hardware a unui procesor superscalar

Un procesor superscalar aduce din memorie şi decodifică, în mod obişnuit, mai multe instrucţiuni simultan. Ca parte a acestui proces, efectele salturilor condiţionate sunt anticipate pentru a asigura un flux neîntrerupt de instrucţiuni. Fluxul de instrucţiuni, adus anticipat în bufferul de prefetch (citire anticipată a instrucţiunilor), este analizat pentru determinarea dependenţelor de date, iar instrucţiunile independente sunt distri¬buite unităţilor funcţionale, în conformitate cu tipul lor. Aici începe, în paralel, execuţia instrucţiunilor, în funcţie, mai ales, de disponibilitatea operanzilor şi mai puţin de ordinea în care se află aceştia în programul secvenţial. Terminarea execuţiei instrucţiu¬nilor şi înscrierea rezultatelor are loc în aşa fel încât starea logică a procesului este actualizată în ordinea secvenţială a programului, pentru a da posibilitatea tratării precise a unei eventuale întreruperi.

Dependenţele de date apar între instrucţiuni care obţin acces la acelaşi registru sau locaţie de memorie. în acest moment se spune că există un hazard datorat posibilităţii ca instrucţiunile să se execute într-o ordine incorectă. Aceste hazarduri pot fi de tipurile WAR,WAW şi RAW.

Hazardul WAR (Write After Read), adică „scriere după citire", apare când instruc¬ţiunile trebuie să modifice o locaţie de memorie, dar trebuie să aştepte ca toate instruc¬ţiunile anterioare ce necesită vechea valoare să o citească.

Hazardul WAW (Write After Write), adică „scriere după scriere", apare când mai multe instrucţiuni modifică aceeaşi locaţie; modificările trebuie realizate în ordinea preci¬zată de programul secvenţial, pentru ca la locaţia respectivă să rămână, în final, valoarea corectă.

Aceste două tipuri de hazarduri sunt artificiale, fiind cauzate de un cod neoptimizat, de numărul limitat de registre, de necesitatea de a economisi memorie sau de ciclurile programului (în care o instrucţiune poate fi dependentă de ea însăşi). în general, aceste dependenţe pot fi eliminate prin redenumirea resurselor respective.

Hazardurile RAW (Read After Write), adică „citire după scriere" sunt cele mai frec¬vente, deoarece o instrucţiune poate citi o valoare numai după ce valoarea a fost furnizată de instrucţiunea care o scrie.

Mai toate procesoarele superscalare utilizează o memorie rapidă, de mici dimen¬siuni, de tip cache, care conţine instrucţiunile cel mai recent executate, pentru a reduce întârzierile, datorate accesului la memoria principală, care este mai lentă, şi pentru a mări numărul de instrucţiuni aflate, la un moment dat, la dispoziţia procesorului. Cache-ul de instrucţiuni este organizat în blocuri conţinând instrucţiuni consecutive. Dacă instruc¬ţiunea ce urmează a fi executată nu este în cache, atunci blocul care o conţine este adus, în întregime, din memoria principală, şi scris în cache.

Pentru a executa mai multe instrucţiuni în paralel, faza fetch trebuie să aducă, din memoria cache, mai multe instrucţiuni într-un ciclu. Din acest motiv, există două cache-uri: unul pentru date şi unul pentru instrucţiuni. Numărul maxim de instrucţiuni adus într-un ciclu ar trebui să fie egal cu rata de decodificare şi execuţie; el este, însă, ceva mai mare, pentru a compensa „miss"-urile în cache (adică lipsa acelei instrucţiuni din cache) şi situaţiile în care se pot aduce doar un număr limitat de instrucţiuni (de exemplu, dacă o instrucţiune transferă controlul unei alte instrucţiuni, aflate în interiorul unui bloc din cache, instrucţiunile ce o preced în bloc sunt inutile).

Observații:

Univeristatea Constantin Brancusi . Ingineria Sistemelor

Download gratuit

Documentul este oferit gratuit,
trebuie doar să te autentifici in contul tău.

Structură de fișiere:
  • Procesoare Superscalare.doc
Alte informații:
Tipuri fișiere:
doc
Nota:
9/10 (2 voturi)
Nr fișiere:
1 fisier
Pagini (total):
9 pagini
Imagini extrase:
9 imagini
Nr cuvinte:
4 401 cuvinte
Nr caractere:
23 446 caractere
Marime:
157.39KB (arhivat)
Publicat de:
NNT 1 P.
Nivel studiu:
Facultate
Tip document:
Curs
Domeniu:
Automatică
Predat:
la facultate
Materie:
Automatică
Profesorului:
Marian Popescu
Sus!