Il pipelining: criticità sul controllo ed eccezioni Lucidi fatti in collaborazione con lIng....

28
Il pipelining: criticità Il pipelining: criticità sul controllo ed sul controllo ed eccezioni eccezioni Lucidi fatti in collaborazione con l’Ing. Valeria Cardellini

Transcript of Il pipelining: criticità sul controllo ed eccezioni Lucidi fatti in collaborazione con lIng....

Page 1: Il pipelining: criticità sul controllo ed eccezioni Lucidi fatti in collaborazione con lIng. Valeria Cardellini.

Il pipelining: criticità sul controllo Il pipelining: criticità sul controllo ed eccezionied eccezioni

Lucidi fatti in collaborazione con l’Ing. Valeria Cardellini

Page 2: Il pipelining: criticità sul controllo ed eccezioni Lucidi fatti in collaborazione con lIng. Valeria Cardellini.

2

Criticità sul controlloCriticità sul controllo

• Criticità sul controllo: tentativo di prendere una decisione sulla prossima istruzione da caricare prima che sia stata valutata la condizione di salto

• Determinata dal pipelining di:– istruzioni di salto condizionato

• criticità anche detta conflitto di salto condizionato• caso più frequente

– altre istruzioni che modificano il PC• salti incondizionati, …

• Statisticamente meno frequente della criticità sui dati• Degrada le prestazioni rispetto allo speedup ideale

ottenibile con il pipelining poiché può rendere necessario lo stallo della pipeline

Page 3: Il pipelining: criticità sul controllo ed eccezioni Lucidi fatti in collaborazione con lIng. Valeria Cardellini.

3

Salto condizionato nel MIPSSalto condizionato nel MIPS

• Implementazione vista finora dell’istruzione beq:– La decisione sul salto avviene nello stadio MEM

Salto eseguito: dopo l’esecuzione di beq, salto all’istruzione di indirizzo 72 (40+4+7*4)

Salto eseguito (taken): il salto causa il trasferimento del controllo alla destinazione del salto

Salto non eseguito (not taken): al salto seguono le istruzioni successive del programma (fall-through)

40 beq, $1, $3, 7

Page 4: Il pipelining: criticità sul controllo ed eccezioni Lucidi fatti in collaborazione con lIng. Valeria Cardellini.
Page 5: Il pipelining: criticità sul controllo ed eccezioni Lucidi fatti in collaborazione con lIng. Valeria Cardellini.

5

Salto condizionato nel MIPS (2)Salto condizionato nel MIPS (2)

Decisione sul salto

Indirizzo di destinazione del

salto (da EX/MEM)

Page 6: Il pipelining: criticità sul controllo ed eccezioni Lucidi fatti in collaborazione con lIng. Valeria Cardellini.

6

Soluzioni possibiliSoluzioni possibili

• Pessimistica: stallo della pipeline

• Ottimistica: ipotizzare che il salto condizionato non sia eseguito (branch not taken)

• Ridurre i ritardi associati ai salti

• Predizione (probabilistica) dei salti (non verrà trattato)

Page 7: Il pipelining: criticità sul controllo ed eccezioni Lucidi fatti in collaborazione con lIng. Valeria Cardellini.

7

Soluz. pessimistica: stallo della pipelineSoluz. pessimistica: stallo della pipeline

• Si blocca la pipeline finché non viene presa la decisione sul salto e poi si carica la pipeline con l’istruzione corretta (stalling until resolution)

• Decisione sul salto nello stadio MEM– E’ necessario inserire tre stalli

• Anticipando la decisione sul salto nello stadio EX– E’ comunque necessario inserire due stalli

IDIF EX MEM WB

IDIF EX MEM WB

IDIF EX MEM WB

IDIF EX MEM WB

beq $1, $3, L1

and $12, $2, $5

or $13, $6, $2

add $14, $2, $2

bollabolla

Page 8: Il pipelining: criticità sul controllo ed eccezioni Lucidi fatti in collaborazione con lIng. Valeria Cardellini.
Page 9: Il pipelining: criticità sul controllo ed eccezioni Lucidi fatti in collaborazione con lIng. Valeria Cardellini.

9

Soluz. ottimist.: ipotesi salto non eseguitoSoluz. ottimist.: ipotesi salto non eseguito

• Si assume che il salto non venga eseguito (branch not taken)– Si continuano a caricare nella pipeline le istruzioni successive a

quella di salto condizionato

• Se il salto non è effettivamente eseguito– Non c’è nessuna penalizzazione

• Se invece il salto viene eseguito (la predizione è errata) (vedi lucido succ.)

Page 10: Il pipelining: criticità sul controllo ed eccezioni Lucidi fatti in collaborazione con lIng. Valeria Cardellini.

•Se invece il salto viene eseguito (la predizione è errata)

–Si scartano le istruzioni che sono state nel frattempo caricate nella pipeline

•Nell’esempio del lucido 2, 3 istruz. (and, or, add) sono da scartare

–Si puliscono gli stadi IF, ID, EX

•Flushing (annullamento) delle istruzioni

–La pipeline viene caricata a partire dall’istruzione di destinazione del salto (nell’esempio del lucido 2 l’istruzione lw)

–Non è stato modificato nessun registro del banco reg. perché nessuna istruzione successiva al salto ha raggiunto lo stadio WB

–Necessità di ripristinare lo Status Register al valore relativo all’istruzione precedente il salto – NORMALMENTE VIENE FATTO USANDO UNA COPPIA DI REGISTRI, di cui uno memorizza il valore del secondo quando si è sicuri che tale valore non verrà mai annullato – Richiami al checkpointing

Page 11: Il pipelining: criticità sul controllo ed eccezioni Lucidi fatti in collaborazione con lIng. Valeria Cardellini.

Soluzione ottimistica ( caso con salto - 1)

• Annullamento delle tre istruzioni successive alla beq• Necessità di riportare lo status register in una condizione

precedente all’esecuzione dell’istruzione successiva al brench (ROLL-BACK)

Page 12: Il pipelining: criticità sul controllo ed eccezioni Lucidi fatti in collaborazione con lIng. Valeria Cardellini.

Soluzione ottimistica (con salto - 2)

• Annullamento delle tre istruzioni successive• Riportare lo status register in una condizione precedente

all’esecuzione dell’istruzione sucessiva al brench (ROLL-BACK)

Page 13: Il pipelining: criticità sul controllo ed eccezioni Lucidi fatti in collaborazione con lIng. Valeria Cardellini.

13

Terza soluzione: Riduzione dei tempi Terza soluzione: Riduzione dei tempi

• Si anticipa la decisione sul salto ad uno stadio precedente a MEM

• Occorre anticipare tre azioni1. Calcolare l’indirizzo di salto2. Valutare la decisione del salto

• per beq e bne occorre confrontare i registri3. Aggiornare il PC

• Occorre aggiungere delle risorse hardware

1. Per il calcolo dell’indirizzo di salto– Se l’indirizzo di salto è calcolato

• alla fine dello stadio EX: due stalli• alla fine dello stadio ID: uno stallo – quindi più conveniente

– Si sposta l’addizionatore per l’indirizzo di salto nello stadio ID

Page 14: Il pipelining: criticità sul controllo ed eccezioni Lucidi fatti in collaborazione con lIng. Valeria Cardellini.

14

Riduzione dei tempi (2)Riduzione dei tempi (2)

2. Per confrontare i registri– Nel caso di beq: l’unità di confronto posta nello stadio ID

esegue lo XOR bit a bit dei due registri e poi l’OR del risultato dello XOR

– Può essere necessario uno stallo per risolvere una criticità sui dati• Es.: l’istruzione immediatamente precedente beq produce uno dei

due operandi confrontati add $6, $6, $4beq $6, $7, Loop

• Occorre gestire la propagazione all’ingresso dell’unità di confronto– gli operandi sorgente possono provenire dai registri di

pipeline EX/MEM o MEM/WB(PER NON INGARBUGLIARE I DISEGNI NON E’ PREVISTO

NELLE FIGURE SUCCESSIVI)

Page 15: Il pipelining: criticità sul controllo ed eccezioni Lucidi fatti in collaborazione con lIng. Valeria Cardellini.

15

Riduzione dei tempi (3)Riduzione dei tempi (3)

3. Per aggiornare il PC– Si sposta nello stadio IF la porta AND con ingressi il segnale

di controllo Branch e l’uscita dell’unità di confronto– Se il salto è eseguito, il PC è scritto con l’indirizzo di

destinazione del salto al termine del ciclo di clock dello stadio ID di beq

• Anticipando la decisione sul salto allo stadio ID si riducono i ritardi associati ai salti (branch penalty)

– occorre inserire un solo stallo dopo ogni salto– oppure svuotare la pipeline di una sola istruzione

Page 16: Il pipelining: criticità sul controllo ed eccezioni Lucidi fatti in collaborazione con lIng. Valeria Cardellini.

16

Modifica dell’unità di elaborazioneModifica dell’unità di elaborazione

IF.Flush: segnale per azzerare i campi dell’istruzione nel registro di pipeline IF/ID

(si simula il fetch di una istruzione nop)

Unità di confronto

Addizionatore

Page 17: Il pipelining: criticità sul controllo ed eccezioni Lucidi fatti in collaborazione con lIng. Valeria Cardellini.

17

EsempioEsempio

• Consideriamo la sequenza di istruzioni MIPS36 sub $10, $4, $840 beq $1, $3, 7 # 40+4+4*7=7244 and $12, $2, $548 or $13, $2, $652 add $14, $4, $256 add $15, $6, $7

…72 lw $4, 50($7)

• Assumiamo che:– la pipeline sia ottimizzata per SOLUZIONE OTTIMISTICA

(salti non eseguiti) – l’esecuzione del salto sia stata anticipata allo stadio ID

Page 18: Il pipelining: criticità sul controllo ed eccezioni Lucidi fatti in collaborazione con lIng. Valeria Cardellini.

18

Esempio: cicli di clock 3 e 4Esempio: cicli di clock 3 e 4• L’istruzione and entra nella

pipeline (branch not taken)

• Nello stadio ID si determina che il salto deve essere eseguito (predizione errata)

• Viene selezionato 72 come prossimo valore del PC

• Viene azzerato il caricamento di and nella pipeline (segnale IF.Flush)

• L’istruzione lw (corrispondente alla destinazione del salto) viene caricata nella pipeline

Page 19: Il pipelining: criticità sul controllo ed eccezioni Lucidi fatti in collaborazione con lIng. Valeria Cardellini.
Page 20: Il pipelining: criticità sul controllo ed eccezioni Lucidi fatti in collaborazione con lIng. Valeria Cardellini.
Page 21: Il pipelining: criticità sul controllo ed eccezioni Lucidi fatti in collaborazione con lIng. Valeria Cardellini.

21

Influenza sulle prestazioni Influenza sulle prestazioni delle criticità sul controllodelle criticità sul controllo

Speeduppipeline = Profondità pipeline

1 + cicli stallo pipeline per salto

• Dato che cicli stallo pipeline per salto = frequenza salto penalizzazione salto

• Si ottiene

Speeduppipeline = Profondità pipeline

1 + frequenza salto penalizzazione salto

Page 22: Il pipelining: criticità sul controllo ed eccezioni Lucidi fatti in collaborazione con lIng. Valeria Cardellini.

Interruzioni ed eccezioni nel MIPSInterruzioni ed eccezioni nel MIPS• Gergo MIPS (ma abbastanza usato come terminologia anche

da altri costruttori)

• Interruzioni (interrupts)• eventi esterni (come PD32)

• Eccezioni (exceptions)• eventi interni, p.e:

– overflow– esecuzione di istruzioni illegali

Page 23: Il pipelining: criticità sul controllo ed eccezioni Lucidi fatti in collaborazione con lIng. Valeria Cardellini.

23

Eccezioni nel MIPSEccezioni nel MIPS• E’ un’altra forma di criticità sul controllo

• Azioni da intraprendere caso eccezione overflow– Caricare il PC con l’indirizzo di gestione dell’eccezione

• Serve per eseguire il driver (indirizzo: 40000040hex )

– Memorizzare l’indirizzo dell’istr. che ha causato l’eccez.• Si usa un registro ad hoc (EPC), serve per diagnostica

– Svuotare immediatamente la pipeline dalle istruzioni caricate successivamente a quella che ha generato l’eccezione

• Segnali IF.Flush, ID.Flush, EX.Flush

– Permettere di identificare lo stato dei registri• Es.: se l’istruzione add $1, $2, $1 causa overflow occorre preservare il

vecchio valore di $1 e quello dello Status Register

– Memorizzare la causa dell’eccezione• Si usa un registro ad hoc (cause)

Page 24: Il pipelining: criticità sul controllo ed eccezioni Lucidi fatti in collaborazione con lIng. Valeria Cardellini.

24

Unità di elaborazione con pipelining e Unità di elaborazione con pipelining e gestione delle eccezionigestione delle eccezioni

Page 25: Il pipelining: criticità sul controllo ed eccezioni Lucidi fatti in collaborazione con lIng. Valeria Cardellini.

25

EsempioEsempio

• Consideriamo la sequenza di istruzioni MIPS40hex sub $11, $2, $4

44hex and $12, $2, $5

48hex or $13, $2, $6

4Chex add $1, $2, $1

50hex slt $15, $6, $7

54hex lw $16, 4($7)

• Assumiamo che le istruzioni eseguite in caso di eccezione siano

40000040hex sw $25, 1000($0)

40000044hex sw $25, 1004($0)

• Analizziamo cosa succede se l’istruzione add genera un’eccezione (nel suo stadio EX: ciclo di clock 6)

Page 26: Il pipelining: criticità sul controllo ed eccezioni Lucidi fatti in collaborazione con lIng. Valeria Cardellini.

26

Esempio: cicli di clock 6 e 7Esempio: cicli di clock 6 e 7

• In EPC 4Chex+4=50hex

• Vengono asseriti tutti i segnali di flushing (IF.Flush, ID.Flush e EX.Flush)

• I segnali di controllo per add vengono messi a 0

• L’istruzione and termina

• Viene caricata nella pipeline la prima istruzione della routine di gestione delle eccezioni

• L’istruzione or termina

Page 27: Il pipelining: criticità sul controllo ed eccezioni Lucidi fatti in collaborazione con lIng. Valeria Cardellini.

27

Eccezioni impreciseEccezioni imprecise

• In un calcolatore con pipelining è difficile associare sempre in modo corretto un’eccezione all’istruzione che l’ha provocata (ci sono in esecuzione un numero di istruzioni pari al numero degli stadi)

• Eccezione imprecisa: non è associata all’istruzione esatta che ha causato l’eccezione– Esempio con eccezione imprecisa: in EPC 58hex anche se

l’istruzione che ha provocato l’eccezione è all’indirizzo 4Chex

• Eccezione precisa: è sempre associata all’istruzione esatta che ha causato l’eccezione – L’istruzione che solleva l’eccezione è anche l’istruzione interrotta

Page 28: Il pipelining: criticità sul controllo ed eccezioni Lucidi fatti in collaborazione con lIng. Valeria Cardellini.

28

L’unità completa di elaborazione e di L’unità completa di elaborazione e di controllo del processore MIPS con pipelinecontrollo del processore MIPS con pipeline

PC

Instructionmemory

4

Registers

Signextend

Mux

Mux

Mux

Control

ALU

EX

M

WB

M

WB

WB

ID/EX

EX/MEM

MEM/WB

Mux

Datamemory

Mux

Hazarddetection

unit

Forwardingunit

IF.Flush

IF/ID

Mux

ExceptPC

40000040

0

Mux

0

Mux

0

Mux

ID.Flush EX.Flush

Cause

Shiftleft 2

Writedata

Readdata

Address

Readdata

Address Writeregister

Writedata

Readdata 1

Readdata 2

Readregister 1Readregister 2

ALUcontrol

3216

Inst

ruct

ion

Instruction [15– 11]

Instruction [20– 16]

Instruction [20– 16]

Instruction [25– 21]

Re

gW

rite

ALUOp

ALUSrc

RegDst

Me

mW

rite

MemRead

Me

mto

Re

g

Branch

=