20.06.2013 Views

Gestione degli hazard - Dipartimento di Ingegneria Informatica e ...

Gestione degli hazard - Dipartimento di Ingegneria Informatica e ...

Gestione degli hazard - Dipartimento di Ingegneria Informatica e ...

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

<strong>Gestione</strong> <strong>degli</strong> <strong>hazard</strong><br />

Metodologie <strong>di</strong> progettazione Hardware/Software- LS Ing. <strong>Informatica</strong><br />

Limiti alla esecuzione pipeline: i conflitti<br />

(Hazard)‏<br />

•I conflitti (Hazard) impe<strong>di</strong>scono che una istruzione<br />

venga eseguita nel ciclo <strong>di</strong> clock atteso<br />

-Structural <strong>hazard</strong>s: Le risorse HW non supportano alcune<br />

combinazioni <strong>di</strong> istruzioni<br />

-Data <strong>hazard</strong>s: Un’istruzione <strong>di</strong>pende dal risultato <strong>di</strong> una<br />

istruzione che è ancora nella pipeline<br />

-Control <strong>hazard</strong>s: Pipelining <strong>di</strong> branch e altre istruzioni che<br />

cambiano il PC<br />

•La soluzione più semplice è introdurre dei cicli <strong>di</strong><br />

clck <strong>di</strong> stallo nella pipeline fino a quando l’ <strong>hazard</strong><br />

non è risolto, inserendo una o più “bolle” nella<br />

pipeline.<br />

Metodologie <strong>di</strong> progettazione Hardware/Software- LS Ing. <strong>Informatica</strong><br />

1<br />

2<br />

1


Structural Hazard<br />

Esempio <strong>di</strong> structural <strong>hazard</strong> quando è presente un’unica<br />

memoria per le istruzioni e i dati<br />

Soluzioni<br />

•Introdurre una bolla, una nop (not operation):<br />

– Viene bloccata l'istruzione nella fase IF impedendo<br />

l'aggiornamento del PC;<br />

– Viene scritto sul registro IF/ID una NOP<br />

•Duplicare le risorse hardware<br />

Metodologie <strong>di</strong> progettazione Hardware/Software- LS Ing. <strong>Informatica</strong><br />

Time (in clock cycles)‏<br />

Value of<br />

register $2:<br />

Program<br />

execution<br />

order<br />

(in instructions)‏<br />

sub $2, $1, $3<br />

and $12, $2, $5<br />

or $13, $6, $2<br />

add $14, $2, $2<br />

sw $15, 100($2)‏<br />

IM Reg<br />

Data Hazard<br />

CC 1 CC 2 CC 3 CC 4 CC 5 CC 6<br />

IM Reg<br />

DM<br />

Reg<br />

Metodologie <strong>di</strong> progettazione Hardware/Software- LS Ing. <strong>Informatica</strong><br />

IM Reg DM Reg<br />

CC 7 CC 8 CC 9<br />

10 10 10 10 10/– 20 – 20 – 20 – 20 – 20<br />

DM<br />

Reg<br />

IM Reg<br />

DM Reg<br />

IM Reg<br />

DM Reg<br />

3<br />

4<br />

2


Data Hazard: introduzione <strong>degli</strong> stalli<br />

Una soluzione ai data <strong>hazard</strong> è l'introduzione <strong>di</strong> cicli <strong>di</strong> clock <strong>di</strong> stallo.<br />

Poichè il data <strong>hazard</strong> viene scoperto nella fase ID, quando viene<br />

introdotto uno stallo per i data <strong>hazard</strong>:<br />

• Viene bloccata l'istruzione nella fase ID impedendo l'aggiornamento del<br />

registro IF/ID;<br />

• Viene bloccata l'istruzione nella fase IF non aggiornando il PC<br />

• Vengono scritti sul registro ID/EX i segnali <strong>di</strong> controllo relativi a una nop<br />

I cicli <strong>di</strong> stallo vengono ripetuti fino a quando non viene<br />

aggiornato il registro destinazione<br />

Il numero <strong>di</strong> cicli <strong>di</strong> clock <strong>di</strong> stallo <strong>di</strong>pende dalla <strong>di</strong>stanza tra le<br />

istruzioni<br />

Metodologie <strong>di</strong> progettazione Hardware/Software- LS Ing. <strong>Informatica</strong><br />

add r1, r2, r3<br />

sub r4, r1, r2<br />

add r1, r2, r3<br />

subi r3, r2, 10<br />

ad<strong>di</strong> r4, r1, 5<br />

Data Hazard: introduzione <strong>degli</strong> stalli<br />

IF<br />

IF<br />

IF<br />

ID<br />

IF<br />

ID<br />

EX<br />

stall<br />

stall<br />

Metodologie <strong>di</strong> progettazione Hardware/Software- LS Ing. <strong>Informatica</strong><br />

ID<br />

EX<br />

ID<br />

IF<br />

MEM<br />

MEM<br />

EX<br />

WB<br />

WB<br />

MEM<br />

EX<br />

WB<br />

ID stall EX<br />

MEM<br />

MEM<br />

WB<br />

WB<br />

5<br />

6<br />

3


Program<br />

execution order<br />

(in instructions)‏<br />

sub $2, $1, $3<br />

and $12, $2, $5<br />

Time (in clock cycles)‏<br />

IM Reg<br />

Data Forwar<strong>di</strong>ng<br />

CC 1 CC 2 CC 3 CC 4 CC 5 CC 6<br />

IM Reg<br />

DM Reg<br />

Metodologie <strong>di</strong> progettazione Hardware/Software- LS Ing. <strong>Informatica</strong><br />

IM Reg DM Reg<br />

CC 7 CC 8 CC 9<br />

Value of register $2 : 10 10 10 10 10/– 20 – 20 – 20 – 20 – 20<br />

Value of EX/MEM : X X X – 20 X X X X X<br />

Value of MEM/WB : X X X X – 20 X X X X<br />

or $13, $6, $2<br />

add $14, $2, $2<br />

sw $15, 100($2)‏<br />

R e g is t e rs<br />

b . W i th fo rw a rd in g<br />

DM Reg<br />

Metodologie <strong>di</strong> progettazione Hardware/Software- LS Ing. <strong>Informatica</strong><br />

IM Reg<br />

DM Reg<br />

IM Reg<br />

DM Reg<br />

Implementazione del forwar<strong>di</strong>ng<br />

ID / E X E X / M E M<br />

M E M /W B<br />

R s<br />

R t<br />

R t<br />

R d<br />

M<br />

u<br />

x<br />

M<br />

u<br />

x<br />

F o rw a r d B<br />

M<br />

u<br />

x<br />

F o r w a r d A<br />

A L U<br />

F o rw a r d in g<br />

u n it<br />

D a ta<br />

m e m o ry<br />

E X /M E M .R e g is te rR d<br />

M E M /W B .R e g is t e rR d<br />

M<br />

u<br />

x<br />

7<br />

8<br />

4


PC<br />

Instruc tion<br />

m em ory<br />

IF/ID<br />

Implementazione del forwar<strong>di</strong>ng<br />

Registers<br />

Metodologie <strong>di</strong> progettazione Hardware/Software- LS Ing. <strong>Informatica</strong><br />

o r $ 4 , $ 4 , $ 2<br />

P C<br />

C lo c k 3<br />

I n s tr u c tio n<br />

I n s t r u c t io n<br />

m e m o r y<br />

IF / ID<br />

C ontrol<br />

IF /ID.R egis terR s<br />

IF /ID.R egis terRt<br />

IF /ID.R egis terRt<br />

IF /ID.R egis terR d<br />

ID/EX<br />

W B<br />

M<br />

EX<br />

R s<br />

R t<br />

R t<br />

R d<br />

M<br />

u<br />

x<br />

M<br />

u<br />

x<br />

M<br />

u<br />

x<br />

ALU<br />

Forwar<strong>di</strong>ng<br />

unit<br />

E X/M EM<br />

Control+Forwar<strong>di</strong>ng<br />

a n d $ 4 , $ 2 , $ 5 s u b $ 2 , $ 1 , $ 3<br />

In s t ru c t io n<br />

2<br />

5<br />

C o n tro l<br />

R e g is te r s<br />

1 0 1 0<br />

W B<br />

Metodologie <strong>di</strong> progettazione Hardware/Software- LS Ing. <strong>Informatica</strong><br />

$ 2<br />

$ 5<br />

2<br />

5<br />

4<br />

ID / E X<br />

M<br />

E X<br />

$ 1<br />

$ 3<br />

1<br />

3<br />

2<br />

M<br />

u<br />

x<br />

M<br />

u<br />

x<br />

M<br />

u<br />

x<br />

W B<br />

M<br />

A L U<br />

F o r w a r d in g<br />

u n it<br />

Ex/MEM.RegWrite<br />

Data<br />

m em ory<br />

EX/M EM.RegisterRd<br />

M EM /W B.R egisterRd<br />

E X /M E M<br />

W B<br />

M<br />

b e f o re < 1 ><br />

M EM /W B<br />

D a t a<br />

W B<br />

m e m o ry<br />

Mem/WB.RegWrite<br />

M E M /W B<br />

W B<br />

M<br />

u<br />

x<br />

b e fo re < 2 ><br />

M<br />

u<br />

x<br />

9<br />

10<br />

5


a d d $ 9 , $ 4 , $ 2<br />

P C<br />

C lo c k 4<br />

I n s t r uc tio n<br />

m e m o ry<br />

Control+Forwar<strong>di</strong>ng<br />

R e g is te r s<br />

1 0 1 0<br />

W B<br />

Metodologie <strong>di</strong> progettazione Hardware/Software- LS Ing. <strong>Informatica</strong><br />

a fte r < 1 ><br />

P C<br />

C lo c k 5<br />

I n s t r uc tio n<br />

m e m o r y<br />

IF /I D<br />

I F /I D<br />

o r $ 4 , $ 4 , $ 2 a n d $ 4 , $ 2 , $ 5<br />

I n s t ru c t io n<br />

4<br />

6<br />

C o n tro l<br />

$ 4<br />

$ 2<br />

2<br />

6<br />

4<br />

ID /E X<br />

M<br />

E X<br />

$ 2<br />

$ 5<br />

2<br />

5<br />

4<br />

M<br />

u<br />

x<br />

M<br />

u<br />

x<br />

M<br />

u<br />

x<br />

F o r w a r d in g<br />

Control+Forwar<strong>di</strong>ng<br />

a d d $ 9 , $ 4 , $ 2 o r $ 4 , $ 4 , $ 2<br />

In s t ru c t io n<br />

4<br />

2<br />

Metodologie <strong>di</strong> progettazione Hardware/Software- LS Ing. <strong>Informatica</strong><br />

2<br />

C o n tro l<br />

R e g is t e r s<br />

1 0 1 0<br />

W B<br />

$ 4<br />

$ 2<br />

4<br />

2<br />

9<br />

ID /E X<br />

M<br />

E X<br />

$ 4<br />

$ 2<br />

4<br />

2<br />

4<br />

M<br />

u<br />

x<br />

M<br />

u<br />

x<br />

M<br />

u<br />

x<br />

A L U<br />

u n it<br />

A L U<br />

F o r w a r d in g<br />

u n it<br />

E X /M E M<br />

1 0<br />

W B<br />

M<br />

M<br />

s u b $ 2 , . . .<br />

2<br />

E X /M E M<br />

a n d $ 4 , . . .<br />

1 0<br />

W B<br />

4<br />

D a t a<br />

m e m o r y<br />

D a t a<br />

m e m o r y<br />

M E M /W B<br />

W B<br />

M E M /W B<br />

1<br />

W B<br />

b e fo r e < 1 ><br />

M<br />

u<br />

x<br />

s u b $ 2 , . . .<br />

2<br />

M<br />

u<br />

x<br />

11<br />

12<br />

6


P C<br />

I n s t r u c t io n<br />

m e m o r y<br />

Control+Forwar<strong>di</strong>ng<br />

a f te r < 2 > a f te r< 1 ><br />

a d d $ 9 , $ 4 , $ 2 o r $ 4 , . . .<br />

C lo c k 6<br />

1 0<br />

W B<br />

Metodologie <strong>di</strong> progettazione Hardware/Software- LS Ing. <strong>Informatica</strong><br />

P r o g ra m<br />

e x e c u tio n<br />

o rd e r<br />

(in in s tr u c tio n s )‏<br />

lw $ 2 , 2 0 ($ 1 )‏<br />

a n d $ 4 , $ 2 , $ 5<br />

o r $ 8 , $ 2 , $ 6<br />

a d d $ 9 , $ 4 , $ 2<br />

s l t $ 1 , $ 6 , $ 7<br />

IF / ID<br />

I n s t r u c t io n<br />

T im e (in c lo c k c y c le s )‏<br />

4<br />

C o n tr o l<br />

R e g is t e r s<br />

ID / E X<br />

M<br />

E X<br />

$ 4<br />

$ 2<br />

4<br />

2<br />

9<br />

M<br />

u<br />

x<br />

M<br />

u<br />

x<br />

M<br />

u<br />

x<br />

A L U<br />

F o rw a rd in g<br />

Forwar<strong>di</strong>ng per lw<br />

C C 1 C C 2 C C 3 C C 4 C C 5 C C 6<br />

IM<br />

R e g<br />

IM<br />

R e g<br />

D M R e g<br />

D M<br />

Metodologie <strong>di</strong> progettazione Hardware/Software- LS Ing. <strong>Informatica</strong><br />

u n it<br />

R e g<br />

E X /M E M<br />

1 0<br />

W B<br />

IM R e g D M R e g<br />

M<br />

4<br />

D a t a<br />

m e m o r y<br />

I M R e g<br />

D M R e g<br />

M E M /W B<br />

1<br />

W B<br />

a n d $ 4 , . . .<br />

I M R e g<br />

D M R e g<br />

4<br />

M<br />

u<br />

x<br />

C C 7 C C 8 C C 9<br />

13<br />

14<br />

7


P ro gr am<br />

e xecu tion<br />

o rd e r<br />

(in in stru ctio n s )‏<br />

P C W r ite<br />

lw $ 2 , 2 0 ($ 1 )‏<br />

a n d $ 4, $ 2 , $ 5<br />

o r $ 8 , $ 2 , $ 6<br />

a d d $ 9, $ 4 , $ 2<br />

slt $ 1 , $ 6, $ 7<br />

IM<br />

Introduzione <strong>di</strong> uno stallo per lw<br />

Tim e (in c lo ck cycle s)‏<br />

C C 1 C C 2 C C 3 C C 4 C C 5 C C 6<br />

R e g<br />

IM R e g R e g<br />

D M<br />

Metodologie <strong>di</strong> progettazione Hardware/Software- LS Ing. <strong>Informatica</strong><br />

P C<br />

Instruction<br />

m em ory<br />

IF /ID W r ite<br />

IF/ID<br />

In s tr u c tio n<br />

Ha zard<br />

detec tion<br />

unit<br />

IM<br />

D M R e g<br />

R e g<br />

IM R e g D M R e g<br />

bubble<br />

Metodologie <strong>di</strong> progettazione Hardware/Software- LS Ing. <strong>Informatica</strong><br />

C C 7 C C 8 C C 9 C C 1 0<br />

IM R e g<br />

D M R eg<br />

Hazard detection unit<br />

C ontrol<br />

0<br />

Registers<br />

IF /ID.RegisterR s<br />

IF /ID.RegisterR t<br />

IF /ID.RegisterR t<br />

IF /ID.RegisterR d<br />

ID /EX.R egisterRt<br />

ID /EX.Me mR ead<br />

M<br />

u<br />

x<br />

ID/EX<br />

W B<br />

M<br />

EX<br />

Rt<br />

R d<br />

R s<br />

Rt<br />

M<br />

u<br />

x<br />

M<br />

u<br />

x<br />

M<br />

u<br />

x<br />

IM R eg<br />

D M R e g<br />

ALU<br />

Forw ar<strong>di</strong>ng<br />

unit<br />

EX/M EM<br />

W B<br />

M<br />

D ata<br />

memory<br />

EX/M EM.RegisterRd<br />

ME M/W B.RegisterRd<br />

M EM /WB<br />

W B<br />

M<br />

u<br />

x<br />

15<br />

16<br />

8


Hazard detection unit<br />

a n d $ 4 , $ 2 , $ 5 lw $ 2 , 2 0 ($ 1 )‏ b e fo re < 1 > b e fo r e < 2 ><br />

P C W r it e<br />

P C<br />

C lo c k 2<br />

I n s t r uc tio n<br />

I F /I D W ri te<br />

H a z a rd<br />

d e te c t io n<br />

u n it<br />

I D /E X .M e m R e a d<br />

Metodologie <strong>di</strong> progettazione Hardware/Software- LS Ing. <strong>Informatica</strong><br />

o r $ 4 , $ 4 , $ 2<br />

P C W r ite<br />

P C<br />

C lo c k 3<br />

m e m o ry<br />

I n s tr u c tio n<br />

m e m o r y<br />

IF / ID W r i te<br />

IF /I D<br />

IF /I D<br />

In s t ru c t io n<br />

1<br />

X<br />

1<br />

X<br />

a n d $ 4 , $ 2 , $ 5<br />

In s t r u c t io n<br />

2<br />

5<br />

2<br />

5<br />

H a z a r d<br />

d e te c ti o n<br />

u n it<br />

C o n tro l<br />

0<br />

R e g i ste r s<br />

M<br />

u<br />

x<br />

I D /E X .R e g is te rR t<br />

Metodologie <strong>di</strong> progettazione Hardware/Software- LS Ing. <strong>Informatica</strong><br />

1 1<br />

$ 1<br />

$ X<br />

1<br />

X<br />

2<br />

ID /E X<br />

W B<br />

M<br />

E X M<br />

W B<br />

M<br />

u<br />

x<br />

M<br />

u<br />

x<br />

M<br />

u<br />

x<br />

A L U<br />

F o r w a r d in g<br />

u n it<br />

E X /M E M<br />

Hazard detection unit<br />

C o n tr o l<br />

0<br />

R e gi s te r s<br />

ID /E X .M e m R e a d<br />

M<br />

u<br />

x<br />

I D /E X .R e g ist e rR t<br />

0 0<br />

$ 2<br />

$ 5<br />

2<br />

5<br />

4<br />

ID / E X<br />

W B<br />

M<br />

E X<br />

lw $ 2 , 2 0 ($ 1 )‏<br />

2<br />

$ 1<br />

$ X<br />

1<br />

X<br />

1 1<br />

M<br />

u<br />

x<br />

M<br />

u<br />

x<br />

M<br />

u<br />

x<br />

A L U<br />

F o rw a r d in g<br />

u n it<br />

W B<br />

E X /M E M<br />

W B<br />

M<br />

b e fo r e < 1 ><br />

D a t a<br />

m e m o r y<br />

D a t a<br />

m e m o r y<br />

M E M /W B<br />

M E M /W B<br />

W B<br />

b e fo r e < 3 ><br />

M<br />

u<br />

x<br />

b e fo r e < 2 ><br />

M<br />

u<br />

x<br />

17<br />

18<br />

9


P C W r it e<br />

P C W r it e<br />

P C<br />

o r $ 4 , $ 4 , $ 2<br />

C lo c k 4<br />

I n s tr u c tio n<br />

m e m o r y<br />

IF /ID W r it e<br />

H a z a r d<br />

d e te c tio n<br />

u n it<br />

Hazard detection unit<br />

Metodologie <strong>di</strong> progettazione Hardware/Software- LS Ing. <strong>Informatica</strong><br />

a d d $ 9 , $ 4 , $ 2<br />

P C<br />

C lo c k 5<br />

In s tr u c ti o n<br />

m e m o r y<br />

IF / ID W r i te<br />

I F /ID<br />

I F /ID<br />

a n d $ 4 , $ 2 , $ 5 b u b b le<br />

I n s tr u c tio n<br />

2<br />

5<br />

2<br />

5<br />

o r $ 4 , $ 4 , $ 2<br />

In s tr u c t io n<br />

4<br />

2<br />

4<br />

2<br />

H a z a r d<br />

d e t e c tio n<br />

u n it<br />

C o n t r o l<br />

0<br />

R e g is t e r s<br />

ID / E X .M e m R e a d<br />

M<br />

u<br />

x<br />

ID / E X . R e g is te r R t<br />

ID / E X<br />

1 0 0 0<br />

W B<br />

Metodologie <strong>di</strong> progettazione Hardware/Software- LS Ing. <strong>Informatica</strong><br />

$ 2<br />

$ 5<br />

2<br />

5<br />

4<br />

M<br />

E X<br />

$ 2<br />

$ 5<br />

2<br />

5<br />

4<br />

M<br />

u<br />

x<br />

M<br />

u<br />

x<br />

M<br />

u<br />

x<br />

A L U<br />

F o r w a r d in g<br />

u n it<br />

E X / M E M<br />

1 1<br />

W B<br />

Hazard detection unit<br />

2<br />

C o n t ro l<br />

0<br />

R e g is t e rs<br />

ID /E X .M e m R e a d<br />

M<br />

u<br />

x<br />

I D /E X . R e g is t e r R t<br />

1 0 1 0<br />

W B<br />

$ 4<br />

$ 2<br />

4<br />

2<br />

4<br />

ID / E X<br />

M<br />

E X<br />

a n d $ 4 , $ 2 , $ 5<br />

$ 2<br />

$ 5<br />

2<br />

5<br />

4<br />

M<br />

u<br />

x<br />

M<br />

u<br />

x<br />

M<br />

u<br />

x<br />

A L U<br />

F o r w a rd in g<br />

u n it<br />

M<br />

E X / M E M<br />

M<br />

lw $ 2 , . . .<br />

2<br />

0<br />

W B<br />

D a t a<br />

m e m o r y<br />

M E M /W B<br />

W B<br />

b e fo re < 1 ><br />

2<br />

M<br />

u<br />

x<br />

b u b b l e lw $ 2 , . . .<br />

D a ta<br />

m e m o r y<br />

M E M /W B<br />

1 1<br />

W B<br />

M<br />

u<br />

x<br />

19<br />

20<br />

10


a f te r< 1 ><br />

P C W r it e<br />

P C<br />

C lo c k 6<br />

I n s t r uc tio n<br />

m e m o r y<br />

IF /ID W r ite<br />

IF /I D<br />

a d d $ 9 , $ 4 , $ 2<br />

H a z a r d<br />

d e te c tio n<br />

u n it<br />

Hazard detection unit<br />

Metodologie <strong>di</strong> progettazione Hardware/Software- LS Ing. <strong>Informatica</strong><br />

a f te r< 2 > a ft e r< 1 ><br />

P C W r i te<br />

P C<br />

C lo c k 7<br />

I n s t r u c tio n<br />

m e m o r y<br />

IF / ID W r i te<br />

IF / ID<br />

I n s t ru c t io n<br />

In s tr u c t io n<br />

4<br />

2<br />

4<br />

2<br />

H a z a rd<br />

d e t e c t io n<br />

u n it<br />

C o n tro l<br />

0<br />

R e g i st e r s<br />

I D /E X .M e m R e a d<br />

M<br />

u<br />

x<br />

I D /E X .R e g is te r R t<br />

ID /E X<br />

1 0 1 0<br />

W B<br />

$ 4<br />

$ 2<br />

4<br />

2<br />

9<br />

M<br />

E X<br />

$ 4<br />

$ 2<br />

4<br />

2<br />

4<br />

o r $ 4 , $ 4 , $ 2<br />

Metodologie <strong>di</strong> progettazione Hardware/Software- LS Ing. <strong>Informatica</strong><br />

M<br />

u<br />

x<br />

M<br />

u<br />

x<br />

M<br />

u<br />

x<br />

A L U<br />

F o rw a r d in g<br />

u n it<br />

E X /M E M<br />

1 0<br />

W B<br />

Hazard detection unit<br />

4<br />

C o n tr o l<br />

R e g is te r s<br />

I D /E X .M e m R e a d<br />

0<br />

M<br />

u<br />

x<br />

I D /E X .R e g i st e r R t<br />

ID /E X<br />

1 0 1 0<br />

W B<br />

M<br />

E X<br />

M<br />

a n d $ 4 , . . .<br />

4<br />

D a t a<br />

m e m o ry<br />

M E M /W B<br />

0<br />

W B<br />

b u b b l e<br />

a d d $ 9 , $ 4 , $ 2 o r $ 4 , . . . a n d $ 4 , . . .<br />

$ 4<br />

$ 2<br />

4<br />

2<br />

9<br />

M<br />

u<br />

x<br />

M<br />

u<br />

x<br />

M<br />

u<br />

x<br />

A L U<br />

F o r w a r d in g<br />

u n it<br />

E X /M E M<br />

1 0<br />

W B<br />

M<br />

4<br />

D a ta<br />

m e m o ry<br />

M E M /W B<br />

1<br />

W B<br />

4<br />

M<br />

u<br />

x<br />

M<br />

u<br />

x<br />

21<br />

22<br />

11


Program<br />

execution<br />

order<br />

(in instructions)<br />

40 beq $1, $3, 7<br />

44 and $12, $2, $5<br />

48 or $13, $6, $2<br />

52 add $14, $2, $2<br />

72 lw $4, 50($7)<br />

Time (in clock cycles)<br />

CC 1<br />

IM Reg<br />

Branch<br />

DM Reg<br />

IM Reg DM Reg<br />

IM Reg<br />

DM<br />

Metodologie <strong>di</strong> progettazione Hardware/Software- LS Ing. <strong>Informatica</strong><br />

CC 2 CC 3 CC 4 CC 5 CC 6 CC 7 CC 8 CC 9<br />

IM Reg<br />

DM<br />

Branch<br />

• I control <strong>hazard</strong> può essere gestiti me<strong>di</strong>ante stalli impedendo il<br />

completamento della fase <strong>di</strong> fetch dell’istruzione successiva fino<br />

a quando non si conosce l’esito del branch<br />

– Disabilitando l’incremento del PC<br />

– Scrivendo su registro IF/ID una NOP<br />

Metodologie <strong>di</strong> progettazione Hardware/Software- LS Ing. <strong>Informatica</strong><br />

IM<br />

Reg<br />

Reg<br />

Reg<br />

DM<br />

Reg<br />

23<br />

24<br />

12


IF.Flush<br />

PC<br />

4<br />

M<br />

u<br />

x<br />

Instruction<br />

memory<br />

IF/ID<br />

Hazard<br />

detection<br />

unit<br />

Control<br />

Shift<br />

left 2<br />

Sign<br />

extend<br />

Registers<br />

Branch<br />

Metodologie <strong>di</strong> progettazione Hardware/Software- LS Ing. <strong>Informatica</strong><br />

0<br />

M u<br />

x<br />

=<br />

ID/EX<br />

WB<br />

M<br />

EX<br />

Branch<br />

a n d $ 1 2 , $ 2 , $ 5 b e q $ 1 , $ 3 , 7 s u b $ 1 0 , $ 4 , $ 8<br />

IF.Flush<br />

P C<br />

7 2 4 4<br />

C l o c k 3<br />

4<br />

7 2<br />

4 8<br />

M<br />

u<br />

x<br />

In s tr u c ti o n<br />

m e m o r y<br />

I F / ID<br />

4 8 4 4<br />

C o n tr o l<br />

H a z a r d<br />

d e t e c ti o n<br />

Metodologie <strong>di</strong> progettazione Hardware/Software- LS Ing. <strong>Informatica</strong><br />

u n it<br />

2 8<br />

S h if t<br />

l e f t 2<br />

7<br />

S ig n<br />

e x t e n d<br />

7 2<br />

0<br />

R e g is t e r s<br />

M<br />

u<br />

x<br />

=<br />

$ 1<br />

$ 3<br />

ID /E X<br />

W B<br />

M<br />

E X<br />

1 0<br />

M<br />

u<br />

x<br />

M<br />

u<br />

x<br />

M u<br />

x<br />

M<br />

u<br />

x<br />

M<br />

u<br />

x<br />

$ 4<br />

$ 8<br />

ALU<br />

Forwar<strong>di</strong>ng<br />

unit<br />

A L U<br />

F o r w a rd in g<br />

u n it<br />

EX/MEM<br />

WB<br />

M<br />

E X / M E M<br />

W B<br />

M<br />

Data<br />

memory<br />

D a t a<br />

m e m o r y<br />

MEM/WB<br />

WB<br />

M E M /W B<br />

W B<br />

M<br />

u<br />

x<br />

b e f o r e < 1 > b e f o r e < 2 ><br />

M<br />

u<br />

x<br />

25<br />

26<br />

13


lw $ 4 , 5 0 ( $ 7 )‏<br />

IF.Flush<br />

C l o c k 4<br />

P C<br />

7 6 7 2<br />

4<br />

7 6<br />

M<br />

u<br />

x<br />

In s tr u c ti o n<br />

m e m o r y<br />

IF / I D<br />

b u b b l e ( n o p )‏<br />

7 6 7 2<br />

C o n tr o l<br />

H a z a rd<br />

d e te c ti o n<br />

Branch<br />

Metodologie <strong>di</strong> progettazione Hardware/Software- LS Ing. <strong>Informatica</strong><br />

u n it<br />

S h if t<br />

l e f t 2<br />

S ig n<br />

e x t e n d<br />

0<br />

R e g i s t e rs<br />

M<br />

u<br />

x<br />

=<br />

ID /E X<br />

W B<br />

M<br />

E X<br />

b e q $ 1 , $ 3 , 7 s u b $ 1 0 , . . . b e f o r e < 1 ><br />

M<br />

u<br />

x<br />

M<br />

u<br />

x<br />

$ 1<br />

$ 3<br />

A L U<br />

F o r w a r d in g<br />

u n it<br />

E X / M E M<br />

W B<br />

M<br />

1 0<br />

D a t a<br />

m e m o r y<br />

M E M /W B<br />

W B<br />

M<br />

u<br />

x<br />

27<br />

14

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!