GeeksforGeeks
pentru a îmbunătăți performanța unui procesor avem două opțiuni:
1) îmbunătățirea hardware-ul prin introducerea circuite mai rapide.2) aranjați hardware-ul astfel încât să poată fi efectuate mai multe operații în același timp.
deoarece există o limită a vitezei hardware și costul circuitelor mai rapide este destul de mare, trebuie să adoptăm a 2-A opțiune.
conducte : Pipelining este un proces de aranjare a elementelor hardware ale procesorului, astfel încât performanța sa generală să crească. Executarea simultană a mai multor instrucțiuni are loc într-un procesor cu conducte.
să vedem un exemplu din viața reală care funcționează pe conceptul de funcționare prin conducte. Luați în considerare o instalație de ambalare a sticlelor de apă. Să existe 3 etape prin care ar trebui să treacă o sticlă, introducând sticla(I), umplând apă în sticlă(F) și sigilând sticla(sticlele). Să considerăm aceste etape ca etapa 1, Etapa 2 și, respectiv, Etapa 3. Lăsați fiecare etapă să dureze 1 minut pentru a-și finaliza funcționarea.
acum, într-o operație fără conducte, o sticlă este introdusă mai întâi în instalație, după 1 minut este mutată în etapa 2 Unde se umple apa. Acum, în etapa 1 nu se întâmplă nimic. În mod similar, atunci când sticla se deplasează în etapa 3, atât etapa 1, cât și Etapa 2 sunt inactive. Dar în funcționarea cu conducte, când sticla se află în etapa 2, o altă sticlă poate fi încărcată în etapa 1. În mod similar, atunci când sticla este în etapa 3, poate exista câte o sticlă în etapa 1 și Etapa 2. Deci, după fiecare minut, obținem o sticlă nouă la sfârșitul etapei 3. Prin urmare, timpul mediu necesar pentru fabricarea 1 flacon este :
fără pipelining = 9/3 minute = 3M
I F S | | | | | || | | I F S | | || | | | | | I F S (9 minutes)
cu pipelining = 5/3 minute = 1,67 m
I F S | || I F S || | I F S (5 minutes)
astfel, funcționarea pipelined crește eficiența unui sistem.
proiectarea unei conducte de bază
- într-un procesor cu conducte, o conductă are două capete, capătul de intrare și capătul de ieșire. Între aceste capete, există mai multe etape/segmente, astfel încât ieșirea unei etape este conectată la intrarea etapei următoare și fiecare etapă efectuează o operație specifică.
- registrele de interfață sunt utilizate pentru a menține ieșirea intermediară între două etape. Aceste registre de interfață se mai numesc zăvor sau tampon.
- toate etapele din conductă împreună cu registrele de interfață sunt controlate de un ceas comun.
executarea într-un procesor cu conducte
secvența de execuție a instrucțiunilor într-un procesor cu conducte poate fi vizualizată folosind o diagramă spațiu-timp. De exemplu, luați în considerare un procesor care are 4 etape și lăsați să fie executate 2 instrucțiuni. Putem vizualiza secvența de execuție prin următoarele diagrame spațiu-timp:
execuție non-suprapusă:
Stage / Cycle | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
---|---|---|---|---|---|---|---|---|
S1 | I1 | I2 | ||||||
S2 | I1 | I2 | ||||||
S3 | I1 | I2 | ||||||
S4 | I1 | I2 |
Total time = 8 Cycle
Overlapped execution:
Stage / Cycle | 1 | 2 | 3 | 4 | 5 |
---|---|---|---|---|---|
S1 | I1 | I2 | |||
S2 | I1 | I2 | |||
S3 | I1 | I2 | |||
S4 | I1 | I2 |
Total time = 5 Ciclul
etapele conductei
procesorul RISC are o conductă de instrucțiuni în 5 etape pentru a executa toate instrucțiunile din setul de instrucțiuni RISC. Următoarele sunt cele 5 etape ale conductei RISC cu operațiunile lor respective:
- Etapa 1 (preluarea instrucțiunilor)
în această etapă CPU citește instrucțiuni de la adresa din memorie a cărei valoare este prezentă în contorul programului. - Etapa 2 (decodare instrucțiuni)
în această etapă, instrucțiunea este decodat și fișierul registru este accesat pentru a obține valorile din registrele utilizate în instrucțiunea. - Etapa 3 (Instrucțiuni executa)
în această etapă, operațiunile ALU sunt efectuate. - Etapa 4 (acces la memorie)
în această etapă, operanzi de memorie sunt citite și scrise de la / la memoria care este prezent în instrucțiunea. - Etapa 5 (scrieți înapoi)
în această etapă, valoarea calculată / preluată este scrisă înapoi în registrul prezent în instrucțiuni.
performanța unui procesor cu conducte
luați în considerare o conductă de segment ‘k’ cu timpul ciclului de ceas ca ‘Tp’. Să fie ‘ n ‘ sarcini care urmează să fie finalizate în procesorul pipeline. Acum, prima instrucțiune va lua cicluri ‘ k ‘pentru a ieși din conductă, dar celelalte instrucțiuni’ n – 1 ‘vor lua doar’ 1 ‘ciclu fiecare, adică un total de cicluri’ n – 1′. Deci, timpul necesar pentru a executa instrucțiunile ‘n’ într-un procesor cu conducte:
ETpipeline = k + n – 1 cycles = (k + n – 1) Tp
în același caz, pentru un procesor fără conducte, timpul de execuție al instrucțiunilor ‘n’ va fi:
ETnon-pipeline = n * k * Tp
deci, accelerarea (accelerațiile) procesorului cu conducte față de procesorul fără conducte, când sarcinile ‘n’ executat pe același procesor este:
S = Performance of pipelined processor / Performance of Non-pipelined processor
deoarece performanța unui procesor este invers proporțională cu timpul de execuție, avem,
S = ETnon-pipeline / ETpipeline => S = / S = /
când numărul de sarcini ‘n’ sunt semnificativ mai mari decât k, adică n >> k
S = n * k / n S = k
unde ‘k’ reprezintă numărul de etape din conductă.
De asemenea, Efficiency = Given speed up / max speed up = s / Smax
știm că, Smax = k
So, Efficiency = s / k
Throughput = Numărul de instrucțiuni / timpul Total pentru a finaliza instrucțiunile
So, Throughput = n / (k + n – 1) * TP
notă: valoarea ciclurilor pe instrucțiune (CPI) a unui procesor ideal cu conducte este de 1
a se vedea setul 2 pentru dependențe și pericol de date și setul 3 pentru tipurile de conducte și de blocare.