Conducte: arhitectură, avantaje și dezavantaje

Încercați Instrumentul Nostru Pentru Eliminarea Problemelor





Creșterea vitezei de execuție a programului crește în consecință viteza de procesorul. Există multe modalități inventate, atât implementarea hardware, cât și arhitectura software, pentru a crește viteza de execuție. S-a observat că prin executarea simultană a instrucțiunilor se poate reduce timpul necesar pentru execuție. Conceptul de paralelism în programare a fost propus. În conformitate cu aceasta, pot fi executate mai multe instrucțiuni pe ciclu de ceas. Acest concept poate fi practicat de un programator prin diferite tehnici precum Conducte de conducte, mai multe unități de execuție și mai multe nuclee . Dintre toate aceste metode de paralelism, pipelining-ul este cel mai frecvent practicat. Deci, cum se poate executa o instrucțiune în metoda de pipelining? Cum crește viteza de execuție?

Ce este Pipelining?

Pentru a înțelege conceptul de pipelining să ne uităm la nivelul rădăcină al modului în care este executat programul. Instrucțiunea este cel mai mic pachet de execuție al unui program. Fiecare instrucțiune conține una sau mai multe operații. Procesoarele scalare simple execută una sau mai multe instrucțiuni pe ciclu de ceas, fiecare instrucțiune conținând o singură operație. Instrucțiunile sunt executate ca o succesiune de faze, pentru a produce rezultatele așteptate. Această secvență este dată mai jos




Secvența de executare a instrucțiunilor

Secvența de executare a instrucțiunilor

  • IF: Prinde instrucțiunea în registrul de instrucțiuni.
  • ID: Decodare instrucțiuni, decodează instrucțiunile pentru codul opțional.
  • AG: Generator de adrese, generează adresa.
  • DF: Data Fetch, preia operanzii în registrul de date.
  • EX: Executare, execută operațiunea specificată.
  • WB: scrieți înapoi, scrie înapoi rezultatul Registrul.

Nu toate instrucțiunile necesită toți pașii de mai sus, dar majoritatea o fac. Acești pași utilizează diferite funcții hardware. În conducte, aceste diferite faze sunt efectuate concomitent. În conducte, aceste faze sunt considerate independente între diferite operațiuni și pot fi suprapuse. Astfel, mai multe operații pot fi efectuate simultan, fiecare operațiune fiind în propria sa fază independentă.



Instrucțiuni de conducte

Să ne uităm la modul în care sunt procesate instrucțiunile în conducte. Acest lucru poate fi ușor de înțeles prin diagrama de mai jos.

Instrucțiuni de conducte

Instrucțiuni de conducte

Să presupunem că instrucțiunile sunt independente. În procesorul simplu de conducte, la un moment dat, există o singură operație în fiecare fază. Faza inițială este faza IF. Deci, la primul ciclu de ceas, este preluată o operație. Când urmează următorul impuls de ceas, prima operație intră în faza ID, lăsând faza IF goală. Acum, această fază goală este alocată următoarei operații. Deci, în timpul celui de-al doilea impuls de ceas, prima operație este în faza ID și a doua operație este în faza IF.

Pentru al treilea ciclu, prima operație va fi în faza AG, a doua operație va fi în faza ID și a treia operație va fi în faza IF. În acest fel, instrucțiunile sunt executate simultan și după șase cicluri procesorul va emite o instrucțiune complet executată pe ciclu de ceas.


Această instrucțiune a fost executată secvențial, inițial prima instrucțiune trebuie să parcurgă toate fazele, apoi următoarea instrucțiune ar fi preluată? Deci, pentru executarea fiecărei instrucțiuni, procesorul ar necesita șase cicluri de ceas. Dar într-un procesor cu conducte, deoarece execuția instrucțiunilor are loc simultan, doar instrucțiunea inițială necesită șase cicluri și toate instrucțiunile rămase sunt executate ca câte unul pe fiecare ciclu, reducând astfel timpul de execuție și mărind viteza procesorului.

Arhitectura conductelor

Paralelismul poate fi realizat cu hardware, compilator și tehnici software. Pentru a exploata conceptul de conducte în arhitectura calculatorului multe unități de procesor sunt interconectate și funcționează simultan. În arhitectura procesorului în linie, există unități de procesare separate prevăzute pentru instrucțiuni întregi și în virgulă mobilă. În timp ce în arhitectura secvențială, este furnizată o singură unitate funcțională.

Unitate de procesor conductată

Unitate de procesor conductată

În conductele statice, procesorul ar trebui să transmită instrucțiunile prin toate fazele conductei, indiferent de cerința instrucțiunii. Într-un procesor de conducte dinamic, o instrucțiune poate ocoli fazele în funcție de cerința sa, dar trebuie să se deplaseze în ordine secvențială. Într-un procesor de conducte dinamic complex, instrucțiunea poate ocoli fazele, precum și alege fazele din ordine.

Conducte de conducte în procesoare RISC

Cel mai popular RISC architecture Procesorul ARM urmărește conducte în 3 etape și 5 etape. În conducte în 3 etape, etapele sunt: ​​Preluare, Decodare și Executare. Această conductă are o latență de 3 cicluri, deoarece o instrucțiune individuală durează 3 cicluri de ceas pentru a se finaliza.

ARM 3 etape Pipelining

ARM 3 etape Pipelining

Pentru implementarea corectă a liniei de conducte Arhitectura hardware ar trebui, de asemenea, actualizată. Hardware-ul pentru conducte în 3 trepte include o bancă de registre, ALU, schimbător de butoaie, generator de adrese, un incrementator, decodor de instrucțiuni și registre de date.

ARM 3 Etap Pipelining Datapath

ARM 3 Etap Pipelining Datapath

În 5 etape pipelining etapele sunt: ​​Fetch, Decode, Execute, Buffer / data și Write back.

Pericole de conducte

Într-un program de computer tipic, pe lângă instrucțiunile simple, există instrucțiuni de ramificare, operații de întrerupere, instrucțiuni de citire și scriere. Conductele nu sunt potrivite pentru toate tipurile de instrucțiuni. Când unele instrucțiuni sunt executate în linii de conducte, acestea pot bloca conducta sau o pot spăla complet. Acest tip de probleme cauzate în timpul conductei se numește Riscuri de conducte.

În majoritatea programelor de computer, rezultatul unei instrucțiuni este folosit ca operand de cealaltă instrucțiune. Când astfel de instrucțiuni sunt executate în linii de conducte, descompunerea are loc deoarece rezultatul primei instrucțiuni nu este disponibil atunci când instrucțiunea doi începe să colecteze operanzi. Deci, instrucțiunea doi trebuie să se oprească până când instrucțiunea unu este executată și rezultatul este generat. Acest tip de pericol se numește Citește - după-scriere pericol de conducte.

Citiți după Scrierea pericolului de conducte

Citiți după Scrierea pericolului de conducte

Executarea instrucțiunilor de sucursală provoacă, de asemenea, un pericol de conducte. Instrucțiuni de ramificare în timp ce sunt executate în conducte efectuează etapele de preluare a următoarelor instrucțiuni.

Comportamentul ramurii conductate

Comportamentul ramurii conductate

Avantajele conductelor

  • Volumul de instrucțiuni crește.
  • Creșterea numărului de etape ale conductei crește numărul de instrucțiuni executate simultan.
  • ALU mai rapid poate fi proiectat atunci când se utilizează conducte.
  • Procesorul Pipelined funcționează la frecvențe de ceas mai mari decât memoria RAM.
  • Pipelining crește performanța generală a procesorului.

Dezavantaje ale conductelor

  • Proiectarea procesorului conductat este complexă.
  • Latența instrucțiunilor crește la procesoarele cu conductă.
  • Randamentul unui procesor cu conductă este dificil de prezis.
  • Cu cât conducta este mai lungă, cu atât este mai gravă problema pericolului pentru instrucțiunile sucursalei.

Pipelining beneficiază de toate instrucțiunile care urmează o secvență similară de pași pentru execuție. Procesoarele care au instrucțiuni complexe în care fiecare instrucțiune se comportă diferit de celelalte sunt greu de realizat. Procesoarele au unelte rezonabile cu 3 sau 5 etape ale conductei, deoarece odată cu creșterea adâncimii conductei crește pericolele legate de aceasta. Numiți unii dintre procesoarele cu conductă cu etapa lor de conducte?