Superscalar

Proiectarea unui procesor superscalar realizează o formă de calcul paralel numit paralelism la nivel de instrucțiuni în interiorul unui singur procesor, ceea ce permite efectuarea mai multor lucrări la aceeași frecvență de ceas. Acest lucru înseamnă că unitatea centrală execută mai mult de o instrucțiune în timpul unui ciclu de ceas prin rularea mai multor instrucțiuni în același timp (numită dispecerizare a instrucțiunilor) pe unități funcționale duplicate. Fiecare unitate funcțională este doar o resursă de execuție în interiorul nucleului CPU, cum ar fi o unitate logică aritmetică (ALU), o unitate de virgulă mobilă (FPU), un schimbător de biți sau un multiplicator.

Majoritatea procesoarelor superscalare sunt, de asemenea, cu conducte, dar este posibil să existe un procesor superscalar fără conducte sau un procesor non-superscalar cu conducte.

Tehnica superscalară este susținută de mai multe caracteristici ale nucleului CPU:

  1. Instrucțiunile provin dintr-o listă ordonată de instrucțiuni.
  2. Hardware-ul procesorului poate afla ce instrucțiuni au ce dependențe de date.
  3. Poate citi mai multe instrucțiuni pe ciclu de ceas

Fiecare instrucțiune executată de un procesor scalar modifică unul sau două elemente de date la un moment dat, dar fiecare instrucțiune executată de un procesor vectorial gestionează mai multe elemente de date deodată. Un procesor superscalar este un amestec dintre cele două:

  1. Fiecare instrucțiune procesează un element de date.
  2. Există mai multe unități funcționale duplicate în interiorul fiecărui nucleu de procesor, astfel încât mai multe instrucțiuni gestionează elemente de date independente în același timp.

Într-un procesor superscalar, un dispecer de instrucțiuni citește instrucțiunile din memorie și decide care dintre ele pot fi executate în paralel, distribuindu-le pe multiplele unități funcționale duplicate disponibile în cadrul procesorului.

Proiectarea procesorului superscalar este preocupată de îmbunătățirea acurateței dispecerului de instrucțiuni, permițându-i acestuia să mențină ocupate în permanență mai multe unități funcționale. Începând din 2008, toate procesoarele de uz general sunt superscalare, un procesor superscalar tipic poate include până la 4 ALU, 2 FPU și două unități SIMD. Dacă dispecerul nu poate menține toate unitățile ocupate, performanța CPU va fi mai mică.

O conductă superscalară simplă. Prin preluarea și expedierea a două instrucțiuni pe rând, se poate realiza un maxim de două instrucțiuni pe ciclu.Zoom
O conductă superscalară simplă. Prin preluarea și expedierea a două instrucțiuni pe rând, se poate realiza un maxim de două instrucțiuni pe ciclu.

Placa de procesor a unui calculator paralel CRAY T3e cu patru procesoare Alpha superscalareZoom
Placa de procesor a unui calculator paralel CRAY T3e cu patru procesoare Alpha superscalare

Limitări

Îmbunătățirea performanțelor în designul CPU Superscalar este limitată de două lucruri:

  1. Nivelul de paralelism încorporat în lista de instrucțiuni
  2. Complexitatea și costul în timp al dispecerului și al verificării dependenței datelor.

Chiar și în condițiile unei verificări a dependențelor infinit de rapide în interiorul unui procesor superscalar normal, dacă lista de instrucțiuni în sine are multe dependențe, acest lucru ar limita, de asemenea, posibila îmbunătățire a performanțelor, astfel încât cantitatea de paralelism încorporat în cod este o altă limitare.

Indiferent cât de rapidă este viteza dispecerului, există o limită practică a numărului de instrucțiuni care pot fi expediate simultan. În timp ce progresele hardware vor permite realizarea mai multor unități funcționale (de exemplu, ALU) pe nucleu de procesor, problema verificării dependențelor de instrucțiuni crește până la o limită care face ca limita de dispecerizare superscalară realizabilă să fie oarecum mică. -- Probabil de ordinul a cinci-șase instrucțiuni distribuite simultan.

Alternative

  • Simultaneous multithreading: abreviat adesea ca SMT, este o tehnică de îmbunătățire a vitezei generale a procesoarelor superscalare. SMT permite executarea mai multor fire de execuție independente pentru a utiliza mai bine resursele disponibile în interiorul unui procesor superscalar modern.
  • Procesoare multi-core: procesoarele superscalare diferă de procesoarele multi-core prin faptul că unitățile funcționale multiple redundante nu sunt procesoare întregi. Un singur procesor superscalar este compus din unități funcționale avansate, cum ar fi ALU, multiplicatorul de numere întregi, schimbătorul de numere întregi, unitatea de virgulă mobilă (FPU) etc. Pot exista mai multe versiuni ale fiecărei unități funcționale pentru a permite executarea mai multor instrucțiuni în paralel. Acest lucru diferă de procesoarele cu mai multe nuclee, care procesează simultan instrucțiuni de la mai multe fire, câte un fir pe nucleu.
  • Procesoarele pipeline: procesoarele superscalare diferă, de asemenea, de o unitate centrală de procesare pipeline, în care mai multe instrucțiuni pot fi simultan în diferite stadii de execuție.

Diferitele tehnici alternative nu se exclud reciproc - ele pot fi (și sunt frecvent) combinate într-un singur procesor, astfel încât este posibil să se proiecteze o unitate centrală de procesare multicore în care fiecare nucleu este un procesor independent cu mai multe conducte paralele superscalare. Unele procesoare multicore includ, de asemenea, capacitatea vectorială.

Pagini conexe

Întrebări și răspunsuri

Î: Ce este tehnologia superscalară?


R: Tehnologia superscalară este o formă de calcul paralel de bază care permite procesarea a mai mult de o instrucțiune în fiecare ciclu de ceas prin utilizarea simultană a mai multor unități de execuție.

Î: Cum funcționează tehnologia superscalară?


R: Tehnologia superscalară implică instrucțiuni care intră în procesor în ordine, căutarea dependențelor de date în timpul rulării și încărcarea mai multor instrucțiuni în fiecare ciclu de ceas.

Î: Care este diferența dintre procesoarele scalare și cele vectoriale?


R: Pe un procesor scalar, instrucțiunile lucrează de obicei cu unul sau două elemente de date deodată, în timp ce pe un procesor vectorial, instrucțiunile lucrează de obicei cu mai multe elemente de date deodată. Un procesor superscalar este o combinație între cele două, deoarece fiecare instrucțiune procesează un singur element de date, dar mai multe instrucțiuni se execută simultan, astfel încât procesorul tratează mai multe elemente de date în același timp.

Î: Ce rol joacă un dispecer de instrucțiuni precise într-un procesor superscalar?


R: Un dispecerat de instrucțiuni precis este foarte important pentru un procesor superscalar, deoarece asigură că unitățile de execuție sunt întotdeauna ocupate cu sarcini care vor fi probabil necesare. Dacă dispecerul de instrucțiuni nu este precis, este posibil ca o parte din muncă să fie aruncată la gunoi, ceea ce ar face ca procesorul să nu fie mai rapid decât un procesor scalar.

Î: În ce an au devenit toate procesoarele normale superscalare?


R: Toate procesoarele normale au devenit superscalare în 2008.

Î: Câte ALU, FPU și unități SIMD pot exista pe un CPU normal?


R: Pe un CPU normal pot exista până la 4 ALU, 2 FPU și 2 unități SIMD.

AlegsaOnline.com - 2020 / 2023 - License CC3