Gestione degli hazard - Dipartimento di Ingegneria Informatica e ...
Gestione degli hazard - Dipartimento di Ingegneria Informatica e ...
Gestione degli hazard - Dipartimento di Ingegneria Informatica e ...
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