Conductă de date

De la Wikipedia, enciclopedia liberă.
Salt la navigare Salt la căutare
Executarea instrucțiunilor într-un microprocesor fără conductă

În informatică, conducta de date este o tehnologie utilizată în arhitectura hardware a microprocesoarelor de computer pentru a crește randamentul , adică cantitatea de instrucțiuni executate într-o anumită perioadă de timp, prin paralelizarea fluxurilor de procesare a instrucțiunilor multiple.

Istorie

Conceptul de conductă a fost dezvoltat de cercetătorul Robert Tomasulo de la IBM , primul sistem echipat cu o conductă a fost supercomputerul IBM System 360/91 prezentat în 1966 care datorită conductei a obținut o creștere de până la 33% a performanței. Conducta s-a răspândit rapid la supercalculatoare și servere. Primul microprocesor care a folosit o conductă a fost MOS Technology 6502 care, printr-o conductă simplă, a oferit performanțe superioare celor ale concurenței la o fracțiune din costul lor. În sectorul microprocesorului, conductele au devenit obișnuite cu procesoarele RISC, care, având în vedere simplitatea lor, au permis implementarea unei arhitecturi complete de conducte de la primele lor implementări în anii 1980. Proiectele Berkeley RISC și MIPS aveau deja o conductă. Procesoarele CISC au folosit o arhitectură completă a conductelor doar la sfârșitul anilor 1980 datorită dificultăților sporite de implementare. În prezent, toate microprocesoarele folosesc o structură de conducte pentru a-și îmbunătăți performanța.

Descriere

Procesarea unei instrucțiuni de către un procesor constă din cinci pași de bază:

  1. IF ( preluare instrucțiuni ): citirea instrucțiunii din memorie ;
  2. ID ( decodare a instrucțiunilor ): decodarea instrucțiunilor și citirea operanzilor din registre ;
  3. EX ( executare ): executarea instrucțiunii;
  4. MEM ( memorie ): activarea memoriei (numai pentru anumite instrucțiuni);
  5. WB ( scrie înapoi ): scrierea rezultatului în registrul corespunzător;

Practic, fiecare procesor de pe piață este gestionat de un ceas central și fiecare operație elementară necesită cel puțin un ciclu de ceas pentru a fi efectuat. Primele procesoare au constat dintr-o unitate multifuncțională care a efectuat toate cele cinci etape legate de procesarea instrucțiunilor într-o secvență rigidă. Prin urmare, un procesor clasic a necesitat cel puțin cinci cicluri de ceas pentru a executa o singură instrucțiune. Odată cu progresul tehnologiei a fost posibilă integrarea unui număr mai mare de tranzistoare într-un microprocesor și, prin urmare, a fost posibilă paralelizarea unor operații, reducând timpii de execuție. Conducta de date reprezintă paralelizarea maximă a activității unui microprocesor.

Executarea instrucțiunilor într-un microprocesor cu conductă

Un procesor pipeline este compus din cinci etape specializate, fiecare capabil să execute o operație elementară a celor descrise mai sus. CPU funcționează ca într-o linie de asamblare, adică în fiecare etapă efectuează secvențial o singură sarcină specifică pentru procesarea unei anumite instrucțiuni. Când lanțul este în stare stabilă, o instrucțiune completă iese din ultima etapă la fiecare ciclu de ceas. Cu toate acestea, în același moment, fiecare unitate procesează diferitele etape ale celorlalte instrucțiuni ulterioare în paralel. Prin urmare, în esență, se obține o viteză de execuție mai mare la prețul unei complexități mai mari a circuitului microprocesorului, care nu mai trebuie să fie compus dintr-o singură unitate, ci din cinci unități care trebuie să colaboreze între ele.

Probleme

Implementarea unei conducte nu înmulțește întotdeauna randamentul final. Analiza problemelor legate de gestionarea conductelor pentru a obține cea mai bună performanță teoretică se încadrează în căutarea paralelismului la nivel de instrucțiuni , adică instrucțiuni care pot fi executate în paralel fără a crea conflicte sau erori de execuție. Cu toate acestea, conductele individuale abordează două probleme principale; problema legată de prezența instrucțiunilor care pot necesita utilizarea resurselor (date sau registre) care nu sunt încă disponibile și problema legată de prezența salturilor condiționate.

  • Prima problemă apare din activitatea paralelă a unităților.

Să presupunem că CPU-ul cu linie trebuie să execute următorul fragment de cod:

  1. C = A + B
  2. D = C-1

Prima instrucțiune trebuie să ia numerele conținute în variabilele A și B, să le adauge și să le plaseze în variabila C. A doua instrucțiune trebuie să ia valoarea conținută în variabila C, să o scadă cu una și să salveze rezultatul în D. Dar a doua instrucțiune nu poate fi procesată (EX) până când datele primei operații nu sunt disponibile în memorie (MEM) și apoi a doua operație va trebui să se blocheze pentru a aștepta finalizarea primei și, prin urmare, aceasta va reduce debitul total. Această problemă poate fi atenuată asigurându-vă că datele procesate de prima instrucțiune sunt puse la dispoziția celei de-a doua instrucțiuni înainte de salvarea finală numai în memorie. Acest lucru se realizează prin inserarea registrelor temporare în unitatea de execuție unde se vor salva datele care vor fi utilizate pentru următoarea instrucțiune. O problemă similară este atunci când două instrucțiuni folosesc aceleași registre pentru a funcționa. În acest caz, se folosește redenumirea registrelor , o tehnică care elimină majoritatea tarabelor.

  • A doua problemă constă în salturile condiționate.

Programele conțin instrucțiuni condiționale care, dacă este îndeplinită o condiție logică specifică, întrerupe fluxul secvențial al programului și execută o altă bucată de program indicată de instrucțiunea de salt . De fiecare dată când acest lucru se întâmplă, microprocesorul trebuie să efectueze un nou flux de operații și, prin urmare, trebuie să golească conducta fluxului anterior și să încarce noul flux. Evident, aceste operații risipesc ciclurile de ceas și, prin urmare, reduc debitul. Pentru a reduce această problemă, procesoarele adoptă unități de predicție a ramurilor care fac predicții despre fluxul programului . Aceste unități reduc foarte mult buclele pierdute pentru salturi.

Evoluții

CPU suprascalar cu dublă conductă

Pentru a crea procesoare cu performanțe mai bune în timp, strategia de integrare a mai multor conducte care funcționează în paralel într-un singur microprocesor a fost stabilită, aceste microprocesoare sunt definite ca superscalare, deoarece sunt capabile să efectueze în medie mai mult de o operație pe ciclu de ceas. Aceste conducte fac în mod evident gestionarea problemelor de consistență și a salturilor condiționate și mai complexă. În procesoarele produse la începutul mileniului al treilea, conductele nu sunt compuse din doar cinci etape, dar în realitate folosesc multe altele ( Pentium 4 folosește de la 20 la 31), în timp ce procesoarele ulterioare au fost produse cu un număr mediu de 14 -15 etape pe conductă.

Creșterea etapelor conductei conduce sau permite o creștere a frecvenței ceasului, de fapt prin împărțirea operațiilor unice necesare pentru a finaliza o instrucțiune în multe sub-operații, frecvența CPU poate fi mărită, deoarece fiecare unitate trebuie să efectueze o operație mai simplă și, prin urmare, poate dura mai puțin timp pentru a-și finaliza operațiunea. Această alegere de proiectare mărește de fapt frecvența de funcționare a procesorului, dar face critică problema hameiului condiționat. În cazul unui salt condiționat neașteptat, de exemplu, Pentium 4 poate fi forțat să golească și să reîncarce o conductă de 30 de trepte, pierzând până la 30 de cicluri de ceas împotriva unui CPU clasic de 5 trepte de conducte care ar fi irosit 5 cicluri în cel mai rău scenariu de caz.ceas.
Mai mult, creșterea frecvenței ceasului nu este întotdeauna proporțională cu creșterea performanței, deoarece trebuie asociată cu lungimea conductei: cu aceeași conductă, o creștere a frecvenței duce la o creștere a performanței; cu aceeași frecvență, conductele mai scurte conduc la o creștere a performanței. Cu toate acestea, creșterea frecvenței duce, de asemenea, la o creștere a consumului de energie și la o eficiență mai mică de calcul.

Cererea tot mai mare de putere de calcul a împins industriile producătoare de microprocesoare să integreze mai multe microprocesoare într-un singur cip (arhitecturi multiprocesor ). Această strategie permite computerului să aibă două procesoare logice separate, dar care locuiesc fizic pe același cip. Această strategie de proiectare ameliorează problemele de coerență și de predicție a săriturilor. De fapt, fiecare procesor logic execută un program separat și, prin urmare, între diferite programe nu pot exista probleme de coerență între instrucțiuni. Această alegere de proiectare mărește performanța numai dacă sistemul de operare este capabil să gestioneze / să utilizeze mai multe programe în același timp sau în cazul unui singur program activ dacă acest lucru este scris pentru a putea utiliza toate procesoarele disponibile, adică dacă programele sunt paralelizabile .

Elemente conexe

Alte proiecte

linkuri externe

Informatică Portal IT : accesați intrările Wikipedia care se ocupă cu IT