Documente Academic
Documente Profesional
Documente Cultură
Unele figuri din prezentare sunt adaptri dup: D.A. Petterson and J. L. Hennessy, Computer Architecture A Quantitative Approach, 4th ed., Morgan Kaufmann, 2007
CE ESTE PIPELINING?
Pipelining este tehnica de suprapunere n timp a execuiei mai multor instruciuni Pipeline este ca o band de execuie de ex: industria automobilelor (linie de asamblare) Fiecare dintre etaje lucreaz n paralel cu altele, fiecare etaj prelucrnd o etap dintr-o alt instruciune Fiecare etap este numit etaj (pipe stage) sau segment (pipe segment).
STRUCTUR PIPELINE
Etajele sunt cascadate unul dup altul, astfel c instruciunile intr printr-un capt i ies prin cellalt. Cerin: toate etajele trebuie s termine prelucrarea n acelai interval de timp. Timpul cerut pentru transferul unei instruciuni de la un etaj la cellalt este numit timp de ciclu al conductei (procesorului) / ciclu main al conductei Timpul de ciclu al conductei este determinat de cel mai lent etaj
Ieire
etaj 1
Registru de memorare
etaj 4
MAIN FR PIPELINE
MAIN PIPELINE
t+1
t+2
t+3
t+4
t+5
t+6
t+7
t+8
t+1
t+2
t+3
t+4
t+5
t+6
t+7
CTIG N TIMP
La automobile productivitatea liniei de asamblare (throughput) este definit prin numrul de maini asamblate pe unitatea de timp La calculator throughput reprezint numrul de instruciuni executate (care ies din conduct) n unitatea de timp De obicei timpul de ciclu al conductei este msurat n impulsuri de ceas (cel mai adesea 1 impuls de ceas)
CRETERE N VITEZ
Tehnica pipelining conduce la o reducere a timpului mediu de execuie pe instruciune n funcie de referina pe care o considerm, reducerea poate fi vzut ca:
scderea numrului mediu de CPI
referina este un procesor (non-pipeline) care cere mai multe cicluri de ceas pentru o instruciune
PERFORMANELE PIPELINING
Pentru un procesor pipelined presupunem c timpul de ciclu e mai mare cu 0,2 ns. Timp suplimentar datorat: ntrzieri de propagare a ceasului (clock skew) timpi de prestabilire la registre Ignornd alte influene asupra latenei, s se determine creterea n vitez pentru pipeline (S = speedup)
10
S=
4.4 ns = 3 .7 1.2 ns
= 4.4 ns
11
12
PIPELINE HAZARDS
Exist 3 clase de hazard (conflict):
Hazard structural: se produce la un conflict de resurse hardware, accesate simultan de mai multe etaje (instruciuni) ale conductei Hazard de date: se produce cnd o instruciune depinde de rezultatul unei instruciuni anterioare, care nc nu a fost executat complet. Hazard de control: se produce datorit instruciunilor de ramificare, care afecteaz coninutul PC.
14
Valoarea ideal pentru CPI la un procesor cu pipeline este 1. CPIpip = CPIideal + Nr_cicluri_ceas_de_blocare_pe_instruciune = 1 + Nr_cicluri_ceas_de_blocare_pe_instruciune Dac neglijm timpul suplimentar pierdut, de exemplu prin faptul c nu exist o echilibrare perfect a etajelor conductei, atunci timpul de ciclu al celor dou procesoare poate fi egal i rezult:
S= CPIunpip 1 + Nr_cicluri_ceas_de_blocare_pe_instruciune
16
CPIunpip CPIpip
15
Conduct cu blocri
Caz frecvent: toate instruciunile se execut n acelai numr de cicluri de ceas = numrul de etaje al conductei (adncimea conductei = k) n acest caz CPIunpip este egal cu k, conducnd la:
S= k 1 + Nr_cicluri_ceas_de_blocare_pe_instruciune
Conduct cu blocri
Dac privim conducta ca scznd timpul mediu al perioadei de ceas, atunci dac presupunem c CPIunpip este 1 i de asemenea CPIpip ideal este 1, putem scrie:
Ciclu ceasunpip Ciclu ceaspip = 1 1 + Nr_cicluri_ceas_de_blocare_pe_instruciune Ciclu ceasunpip Ciclu ceaspip
S=
CPIunpip CPIpip
n cazul echilibrrii perfecte a etajelor conductei i neglijnd timpii suplimentari pentru transferul n interiorul conductei, ciclul de ceas al procesorului pipelined este mai mic dect ciclul de ceas al procesorului non-pipeline, cu un factor egal cu adncimea conductei:
Ciclu ceaspip = Ciclu ceasunpip k
18
17
Conduct cu blocri
Creterea n vitez:
S= 1 1 + Nr_cicluri_ceas_de_blocare_pe_instruciune 1 1 + Nr_cicluri_ceas_de_blocare_pe_instruciune Ciclu ceasunpip Ciclu ceaspip k
CRETERE N VITEZ
Creterea n vitez egal cu numrul de etaje al conductei (k) este doar o limit teoretic, pentru c: cu ct crete numrul de etaje cu att mai greu este s echilibreze timpii de execuie pe fiecare etaj n plus apar probleme de care nu s-a inut cont n relaia calculului de cretere n vitez: salturile n program dependena de date inter-instruciuni dependena de resursele hardware inter-instruciuni aceste din urm elemente creeaz ceea ce se numete hazardul structurii de tip conduct.
S=
n cazul ideal, cnd nu exist blocri, creterea n vitez datorit pipeline este egal cu numrul de etaje al conductei (adncimea conductei)
19
20
CONDUCT DE INSTRUCIUNI
Funcionarea este explicat cu ajutorul unei diagrame timp-spaiu Timpul exprimat n multiplii de impulsuri de ceas iar axa vertical indic numrul segmentului
1 IF ID Etaje conduct EX MEM WB I1 2 I2 I1 3 I3 I2 I1 4 I4 I3 I2 I1 5 I5 I4 I3 I2 I1 6 I6 I5 I4 I3 I2 I6 I5 I4 I3 I6 I5 I4 I6 I5 I6 7 8 9 Impulsuri de ceas
Exemplificare RISC
Arhitectur cu set redus de instruciuni, sau arhitectur load store Arhitecturile RISC au cteva caracteristici care simplific implementarea unei conducte de execuie:
Toate operaiile se efectueaz cu operanzi stocai n registrele interne (de obicei pe 16, 32 sau 64 bii) Singurele operaii de transfer cu memoria sunt load i store Numrul de instruciuni este redus, iar acestea au aceeai lungime (lungime fix)
21
22
23
24
Instrucini tipice:
Add (DADD), Subtract (DSUB), Operaii logice (cum sunt AND i OR)
Variantele care lucreaz cu date imediate au aceeai mnemonic i n plus sufixul I Pentru operaii aritmetice se poate lucra i cu valori fr semn sufix U pentru ambele variante, pe 32 i 64 bii. Exemple: DADDU, DSUBU, DADDIU).
Adresa target pentru ramificare (la toate mainile RISC) se obine prin adunarea unui offset cu semn (16 bii la MIPS) la valoarea PC
27
Decodific instruciune Citete registre surs; compar registrele pentru ramificare posibil Extensie de semn offset (dac e necesar); Calculeaz int pentru ramificare posibil (offset + PC+4) Obs: 2 opiuni pentru calcul int: ID sau EX!
29
Decodificarea se poate face n paralel cu citirea registrelor, pentru c la RISC specificatorii de registru au o poziie fix. Tehnica este numit fixed30 field decoding
MEMORY ACCESS
ncarc (load) sau stocheaz (store) data din/n memorie n/din Registru AE: Adun registrul baz cu offset (dac este referire la memorie) Operaie ALU (R-R, sau R-Imediat)
Decodific instruciune Citete registre surs; compar registrele pentru ramificare posibil Extensie de semn offset (dac e necesar); Calculeaz int pentru ramificare posibil (offset + PC+4) Obs: 2 opiuni pentru calcul int: ID sau EX!
31
Decodific instruciune Citete registre surs; compar registrele pentru ramificare posibil Extensie de semn offset (dac e necesar); Calculeaz int pentru ramificare posibil (offset + PC+4) Obs: 2 opiuni pentru calcul int: ID sau EX!
AE: Adun registrul baz cu offset (dac este referire la memorie) Operaie ALU (R-R, sau R-Imediat)
32
Scrie data n registru (pentru Load i operaie ALU de tip R-R) ncarc (load) sau stocheaz (store) data din/n memorie n/din Registru AE: Adun registrul baz cu offset (dac este referire la memorie) Operaie ALU (R-R, sau R-Imediat)
Scrie data n registru (pentru Load i operaie ALU) ncarc (load) sau stocheaz (store) data din/n memorie n/din Registru AE: Adun registrul baz cu offset (dac este referire la memorie) Operaie ALU
Decodific instruciune Citete registre surs; compar registrele pentru ramificare posibil Extensie de semn offset (dac e necesar); Calculeaz int pentru ramificare posibil (offset + PC+4) Obs: 2 opiuni pentru calcul int: ID sau EX!
Decodific instruciune Citete registre surs; compar registrele pentru ramificare posibil Extensie de semn offset (dac e necesar); calculeaz int pentru ramificare posibil (offset + PC+4) Obs: 2 opiuni pentru calcul int: ID sau EX!
33
WRITE-BACK CYCLE
34
Load/store
IM
EX efectuare n ALU Banca de registre este utilizat n dou etaje: unul pentru citire n ID, unul pentru scriere n WB.
Trebuie s efectum dou citiri i o scriere pentru fiecare ciclu de ceas Scrierea registrului se face n prima jumtate a perioadei de ceas Citirea registrului se face n cea de-a doua jumtate a perioadei de ceas
IF
ID REG
EX ALU
MEM DM
WB REG
ALU reg-reg
IM
IF
ID REG
EX ALU
MEM DM
WB REG
Salt
REG REG
35
IM
36
Reprezentare pipeline
Conducta poate fi reprezentat ca o serie de ci de date deplasate n timp CC = clock cycle
Numr instruciune: Instriciunea i Instriciunea i+1 Instriciunea i+2 Instriciunea i+3 Instriciunea i+4
1 IF
2 ID IF
3 EX ID IF
7 WB MEM EX
WB MEM WB
37
38
Hazard structural
Acces la aceeai resurs hardware de ctre dou etaje ale conductei Exemple de hardware ce poate duce la hazard structural:
Exist o singur unitate funcional din respectivul tip Acces la resurs hardware printr-un singur port de citire / scriere (ex: o banc de registre cu port unic de citire / scriere, memorie unic de date i instruciuni) o unitate funcional ce nu este construit ca o conduct de execuie
39 40
Hazard structural
Hazard structural
Doar pentru load i store
41
42
Hazard structural
Exemple de soluii ale hazardului structural:
memorii separate de date i instruciuni (sau mcar nivelul de cache) introducerea unui buffer suplimentar de instruciuni multiplicarea unor uniti funcionale (ex: ALU) acces simultan la 2 sau mai multe registre din banca de registre
Este un hazard relativ rar ntlnit n microprocesoarele moderne Penalitatea de timp este de obicei 1 ciclu de ceas.
43 44
Hazardul de date
Poate aprea dac rezultatul unei instruciuni din conduct este operand pentru o instruciune ulterioar Se produce din cauza ordinii n care se fac operaiile read i write n conduct, care uneori poate fi diferit fa de ordinea secvenial vzut pe un processor non-pipeline Se consider succesiunea de instruciuni executate n conduct (atenie pe prima poziie este registrul destinaie):
DADD DSUB AND OR XOR R1,R2,R3 R4,R1,R5 R6,R1,R7 R8,R1,R9 R10,R1,R11
Hazardul de date
De observat c dac, cu forwarding, DSUB este blocat, DADD va fi terminat i bypass nu va fi activat. Aceast relaie este adevrat i n cazul n care ntre cele 2 instruciuni apare o ntrerupere recunoscut.
48
47
Pentru a preveni blocarea n aceast secven va trebui s introducem forward pentru valorile de la ieirea ALU i de la ieirea unitii de memorie, prin registrele pipeline de ieire, ctre intrrile ALU i ale memoriei de date.
50
49
51
n figura urmtoare instruciunea LD nu are datele dect la sfritul ciclului de ceas 4 (ciclu MEM), n timp ce instruciunea DSUB are nevoie de date la nceputul acestui ciclu de ceas Astfel c, hazardul de date produs de utilizarea imediat a rezultatului unei instruciuni de LD, nu poate fi eliminat complet prin hardware, printr-o cale care s aduc informaie napoi n timp (!) Putem ns face bypass ctre ALU pentru a ajuta instruciunile AND i OR
52
Hazardul de date
Instruciunea de load are o ntrziere, sau laten, ce nu poate fi eliminat doar prin tehnica forwarding. Este nevoie de hardware suplimentar, numit pipeline interlock (antiblocare pipeline), pentru a pstra modelul execuiei corecte n general circuitul hardware oprete conducta, ncepnd cu instruciunea care vrea s utilizeze datele, nainte ca acestea s fie disponibile Se introduce o stare de blocare (stall, sau bubble), la fel cum se face i la hazard structural.
53
54
Hazardul de date
57
58
59
stall
60
61
Urmeaz
Eficiena tehniciilor de pipelining la RISC Planificare dinamic a instruciunilor Reducerea costurilor prin predicia ramificrilor
Predicie static a ramificrii Predicie dinamic a ramificrii