Sunteți pe pagina 1din 16

Cap 2: Paralelism la nivelul instruciunilor - fundamente

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

SCHEM BLOC SIMPLIFICAT PENTRU O CONDUCT CU 4 ETAJE


Clock

Intrare R1 CLC1 R2 CLC2 R3 CLC3 R4 CLC4

Ieire

etaj 1

Registru de memorare

Circuit de prelucrare (Circuit Logic Combinaional

etaj 4

MAIN FR PIPELINE

MAIN PIPELINE

Dou instruciuni executate n 8 cicluri

Dou instruciuni executate n 5 cicluri

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

scderea timpului mediu pentru o perioad de ceas


referina este un procesor (non-pipeline) care execut fiecare instruciune ntr-un ciclu (lung) de ceas.

o combinaie a celor dou anterioare


7 8

PERFORMANELE PIPELINING

EXEMPLU - performane pipelining


Pentru un procesor non-pipeline se consider:
Durat ciclu de ceas 1 ns Operaii ALU i ramificri 4 cicluri Operaii cu memoria 5 cicluri Frecvena relativ operaii:
ALU: 40%, Ramificri: 20% Op. cu memoria: 40%.

Pipelining crete viteza de execuie a unui numr de instruciuni


nu reduce timpul de execuie al fiecrei instruciuni individuale

Limitri ale lungimii conductei de execuie (k)


1. 2. Echilibrarea dificil a timpului de execuie pentru un numr mare de etaje Timp suplimentar pentru controlul transferului prin conduct la execuia unei instruciuni (perioad minim a ceasului):
set-up time pentru registre timp de propagare ceas la diferite registre
9

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

EXEMPLU - performane pipelining


Timpul mediu de execuie al instruciunii n procesorul non-pipeline (unpip) :
Timp mediu instruciuneunpip = Ciclu_ceasunpip CPImediu = 1 ns ((40% + 20%) 4 + 40% 5) = 1 ns 4.4

EXEMPLU - performane pipelining


La implementarea pipeline ceasul funcioneaz la viteza celui mai lent etaj, plus timpul suplimentar, adic 1 + 0,2 = 1,2 ns, ca timp mediu de execuie al instruciunii Rezult creterea n vitez pentru pipelining (S = speedup):

S=

Timp _ mediu unpip Timp _ mediu pip

4.4 ns = 3 .7 1.2 ns

= 4.4 ns

11

12

Principalele probleme ale conductei - hazarduri


Hazardul este o situaie care face ca urmtoarea instruciune a fluxului de instruciuni s nu poat fi executat pe durata ciclului de ceas care i-a fost alocat Hazardul reduce performanele conductei, fa de creterea n vitez calculat anterior. Evenimentele de hazard produc blocri temporare ale conductei de execuie, prin ntrzierea unor faze de execuie Dac o instruciune este ntrziat n conduct, toate celelalte instruciuni care urmeaz sunt ntrziate
13

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

Performanele conductei cu blocri (stalls)


S= Timp mediu instruciuneunpip Timp mediu instruciunepip Tehnica pipelining poate fi vzut ca o scdere a CPI, sau a timpului ciclului de ceas

Performanele conductei cu blocri (stalls)

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 Ciclu ceasunpip CPIpip Ciclu ceaspip

CPIunpip CPIpip

Ciclu ceasunpip Ciclu ceaspip

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

Dac nu exist blocri ale conductei


putem crete performanele prin creterea adncimii conductei

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

Exemplificare RISC MIPS64


Ca arhitectur RISC tipic n exemple se va considera MIPS64 (extensia pe 64 bii a setului de instruciuni MIPS) Pentru extensia MIPS 64, mnemonica instruciunilor are un D la nceput sau sfrit. De exemplu DADD este versiunea pe 64 bii a instruciunii de adunare, iar LD este versiunea pe 64 bii a instruciunii de load. Setul de instruciuni MIPS poate lucra cu 32 de registre

Trei clase de instruciuni pentru arhitectura MIPS


1. 2. 3. Instruciuni ALU Instruciuni Load i Store Salturi i ramificri

23

24

MIPS Instruciuni ALU


Operanzi:
dou registre un registru i o valoare imediat cu semn

MIPS Instruciuni de transfer cu memoria


Doar instruciuni Load i Store Utilizeaz, ca prim operand un registru surs (base register) i un cmp imediat cu semn de 16 bii (offset). Suma lor formeaz adresa efectiv pentru memorie. Pentru load, al doilea registru operand este destinaia informaiei aduse din memorie. Pentru store, al doilea registru operand este sursa datelor ce se vor stoca n memorie. Instruciunile LD (load word) i SD (store word) ncarc sau stocheaz coninutul ntreg al unui registru de 64 bii
25 26

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).

MIPS Instruciuni de salt


Ramificrile sunt instruciuni de control condiionale Exist 2 moduri de specificare a condiiei n arhitecturile RISC
Cu un set de bii de condiie Comparaie ntre o pereche de registre, sau un registru i zero (la MIPS)

Etape n execuia instruciunilor MIPS


Se consider o arhitectur non-pipelining Se consider c fiecare instruciune dureaz maxim 5 impulsuri de ceas. Pentru execuie vor fi necesare cteva registre temporare ce nu fac parte din arhitectur Cele 5 impulsuri de ceas se refer la:
1. 2. 3. 4. 5. Instruction fetch cycle (IF) Instruction decode/register fetch cycle (ID) Execution/'effective address cycle (EX) Memory access (MEM) Write-back cycle (WB)
28

Adresa target pentru ramificare (la toate mainile RISC) se obine prin adunarea unui offset cu semn (16 bii la MIPS) la valoarea PC

27

Etape n execuia instruciunilor MIPS


IF ID EX MEM WB

Etape n execuia instruciunilor MIPS


IF ID EX MEM WB

Fetch instruction din Mem[PC] PC=PC+4

INSTRUCTION FETCH CYCLE

Fetch instruction din Mem[PC] PC=PC+4

INSTRUCTION DECODE / REGISTER FETCH CYCLE

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

Etape n execuia instruciunilor MIPS


IF ID EX MEM WB

Etape n execuia instruciunilor MIPS


IF ID EX MEM WB

Fetch instruction din Mem[PC] PC=PC+4

EXECUTION / EFFECTIVE ADDRESS CYCLE

Fetch instruction din Mem[PC] PC=PC+4

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

Etape n execuia instruciunilor MIPS


IF ID EX MEM WB

Etape MIPS (un-pipelined)


IF ID EX MEM WB

Fetch instruction din Mem[PC] PC=PC+4

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)

Fetch instruction din Mem[PC] PC=PC+4

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

Reprezentare conduct prin cale de date


Se folosesc memorii separate pentru date-DM i instruciuni-IM (implementarea se face prin memorii cache separate)
Se elimin astfel conflictul / hazardul structural dintre instruction fetch i acces memorie date

Reprezentare conduct prin cale de date


IF ID REG EX ALU MEM DM WB REG

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

Versiune simplificat a unei ci de date RISC, organizate ca pipeline


Fiecare din ciclurile de ceas din exemplul anterior devine un etaj de conduct
Numr impuls ceas 4 5 6 MEM WB EX MEM WB ID EX MEM IF ID EX IF ID

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

Reprezentare pipeline inclusiv registre

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

Diagrama spaiu timp pentru hazard structural (memorie cu un singur port)

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

Toate instruciunile dup DADD utilizeaz rezultatul acesteia.


45 46

Eliminarea hazardului de date prin forwarding


Problema anterioar (DSUB i AND afectate de hazard de date) poate fi eliminat prin tehnica hardware numit forwarding (numit adesea i bypassing, sau short-circuiting) Cheia rezolvrii const n faptul c rezultatul instruciunii DSUB nu este ntr-adevr necesar pn cnd DSUB nu va realiza execuia. Dac rezultatul poate fi mutat din registrul pipeline unde DADD stocheaz rezultatul la intrarea etajului unde DSUB are nevoie de acesta, problema blocrii poate fi rezolvat.

Eliminarea hazardului de date prin forwarding


Forwarding lucreaz astfel:
1. 2. Rezultatul ALU din registrele EX/MEM i MEM/WB este adus la intrarea ALU. Dac un hardware specializat pe forwarding detecteaz c operaia ALU anterioar a scris ntr-un registru care este surs pentru operaia curent ALU, logica de control selecteaz aducerea rezultatului la intrarea ALU, astfel nct operandul nu mai este citit din blocul de registre.

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

Hazardul de date ci de forward

Hazardul de date exemplu forwarding

Presupunem secvena de instruciuni DADD R1,R2,R3 LD R4,0(R1) SD R4,12(R1)

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

Hazardul de date exemplu forwarding


Hazardul de date blocri obligatorii


Nu toate hazardurile posibile de date pot fi rezolvate prin bypass Se consider secvena:
LD DSUB AND OR R1,0(R2) R4,R1,R5 R6,R1,R7 R8,R1,R9


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 blocri obligatorii

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

Hazardul de control (ramificare)


Hazardul de control poate determina pierderea important de performan a conductei (ntr-o msur mai mare dect hazardul de date) Dac instruciunea de salt condiionat produce saltul, (condiia testat este true), iar coninutul PC, de obicei, nu este modificat pn la sfritul fazei ID, dup calculul adresei i comparaie. Figura urmtoare indic cea mai simpl metod de ntrziere, pentru a preveni blocarea conductei Dac saltul se efectueaz se face repetarea fazei IF, ca urmarea detectrii ramificrii n faza ID
55 56

Hazardul de control (ramificare)

Hazardul de control introducere n metodele de tratare


1. Discutm doar 4 metode simple ce pot fi introduse la momentul compilrii. n aceste 4 scheme aciunile pentru o anumit ramificare sunt statice ele sunt fixate pe ntreaga durat a execuiei. Cea mai simpl schem este s se nghee sau s se curee conducta, pstrnd / tergnd din conduct orice instruciune dup cea de ramificare, pn se calculeaz destinaia ramificrii. Soluia este foarte simpl att pentru Hw ct i pentru Sw. Introduce o ntrziere fix ce nu poate fi redus prin software

57

58

Hazardul de control introducere n metodele de tratare


2. O alt tehnic, mai complex, dar i cu performane mai bune trateaz ca ne-efectuate (condiie false) toate ramificrile (predicted untaken) Astfel execuia n conduct continu ca i cum instruciunea de ramificare nu ar fi fost executat Atenie: starea procesorului nu are voie s se schimbe pn cnd rezultatul ramificrii nu este complet cunoscut. Complexitatea schemei provine din necesitatea de a ti cnd o instruciune ncearc s schimbe starea i din modul n care se revine dintr-o asemenea schimbare.

Hazardul de control introducere n metodele de tratare

59

stall

60

Hazardul de control introducere n metodele de tratare


3. O alt alternativ este s se considere c oricare ramificare se va executa. Imediat dup decodificarea instruciunii de ramificare i calculul adresei de salt (adresa int) se continu umplerea conductei cu instruciuni ncepnd cu adresa de salt. Pentru exemplul nostru de conduct cu 5 etaje, nu tim adresa intei mai devreme dect rezultatul execuiei instruciunii de ramificare, nu exist nici un avantaj al abordrii acestei metode La unele procesoare, la care testarea condiiilor se face pe baza unui set de coduri de condiii, adresa de ramificare este cunoscut nainte de terminarea instruciunii de ramificare, iar tehnica ce prezice c saltul se va efectua are sens.

Hazardul de control introducere n metodele de tratare


4. O a patra tehnic utilizat n multe procesoare, este numit salt ntrziat (delayed branch) Tehnica a fost utilizat cu succes nc de la primele RISC-uri Prin instruciunea de salt ntrziat, introdus n conduct, se d timp pentru calcularea adresei de salt, iar ciclul de execuie poate fi descris ca:
instruciune de salt ntrziat set instruciuni succesoare executate efectuare / sau de salt
62

61

Hazardul de control delayed branch

Urmeaz
Eficiena tehniciilor de pipelining la RISC Planificare dinamic a instruciunilor Reducerea costurilor prin predicia ramificrilor
Predicie static a ramificrii Predicie dinamic a ramificrii

Depirea hazardului de date prin planificare dinamic


Algoritmul lui Tomasulo

Exemple i studii de caz


63 64

S-ar putea să vă placă și