Esercitazione Pipeline n°2 - Università degli Studi di Salerno

Report
Università degli Studi di Salerno
Corso di Calcolatori Elettronici
Anno 2013/14
Unità di elaborazione dati con
Pipeline : Data Hazard e Unità
di propagazione
Ing. Rosa Senatore
[email protected]
Argomenti
 Data

Hazard
EX Hazard, MEM Hazard
 Unità
di Propagazione
 Unità
di Rilevamento degli Hazard
Data Hazard
sub $2,$1,$3
and $12,$2,$5
or $13,$6,$2
add $14,$2,$2
sw $15,100($2)
RAW
($2) I1 to I2,I3,I4,I5
and $12,$2,$5
(EX hazard)
ID/EX.Reg_Rs=EX/MEM.Reg_Rd
or $13,$6,$2
(MEM hazard)
ID/EX.Reg_Rt=MEM/WB.Reg_Rd
IF/ID
ID/EX
EX/MEM
MEM/WB
IF/ID
ID/EX
EX/MEM
MEM/WB
IF/ID
ID/EX
EX/MEM
MEM/WB
add $14,$2,$2 (NO hazard)
sw $15,100($2) (NO hazard)
EX Hazard
sub $2,$1,$3
and $12,$2,$5
or $13,$6,$2
add $14,$2,$2
sw $15,100($2)
IF/ID
and $12,$2,$5
(EX hazard)
ID/EX.Reg_Rs=EX/MEM.Reg_Rd
ID/EX
IF/ID
EX/MEM
MEM/WB
ID/EX
EX/MEM
MEM/WB
EX hazard
if (EX/MEM.RegWrite
and EX/MEM.Reg_Rd≠0
and ID/EX.Reg_Rs=EX/MEM.Reg_Rd or ID/EX.Reg_Rt=EX/MEM.Reg_Rd)
then {Rs o Rt deve provenire dal registro EX/MEM}
MEM Hazard
sub $2,$1,$3
and $12,$2,$5
or $13,$6,$2
add $14,$2,$2
sw $15,100($2)
IF/ID
or $13,$6,$2
(MEM hazard)
ID/EX.Reg_Rt=MEM/WB.Reg_Rd
ID/EX
EX/MEM
MEM/WB
IF/ID
ID/EX
EX/MEM
MEM hazard
if (MEM/WB.RegWrite
and MEM/WB.Reg_Rd≠0
and ID/EX.Reg_Rt=MEM/WB.Reg_Rd or ID/EX.Reg_Rt=MEM/WB.Reg_Rd)
then {Rs o Rt deve provenire dal registro MEM/WB}
MEM/WB
MEM Hazard
add $1,$1,$2
add $1,$1,$3
add $1,$1,$4
add $1,$1,$2
IF/ID
add $1,$1,$3
add $1,$1,$4
ID/EX
IF/ID
EX/MEM MEM/WB
ID/EX
EX/MEM
IF/ID
ID/EX
MEM/WB
EX/MEM MEM/WB
MEM hazard
if (MEM/WB.RegWrite
and MEM/WB.Reg_Rd≠0
and not (EX/MEM.RegWrite and EX/MEM.Reg_Rd≠0 and ID/EX.Reg_Rs≠EX/MEM.Reg_Rd)
and ID/EX.Reg_Rs=MEM/WB.Reg_Rd)
then {Rs deve provenire dal registro MEM/WB}
Unità di propagazione
EX hazard
if (EX/MEM.RegWrite
and EX/MEM.Reg_Rd≠0
and ID/EX.Reg_Rs=EX/MEM.Reg_Rd)
then {Rs deve provenire dal registro EX/MEM
→ PropagA=10}
if (EX/MEM.RegWrite
and EX/MEM.Reg_Rd≠0
and ID/EX.Reg_Rt=EX/MEM.Reg_Rd)
then {Rt deve provenire dal registro EX/MEM
→ PropagB=10}
PropagB
PropagA
MEM hazard
if (MEM/WB.RegWrite
and MEM/WB.Reg_Rd≠0
and not (EX/MEM.RegWrite and EX/MEM.Reg_Rd≠0 and ID/EX.Reg_Rs≠EX/MEM.Reg_Rd)
and ID/EX.Reg_Rs=MEM/WB.Reg_Rd)
then {Rs deve provenire dal registro MEM/WB → PropagA=01}
if (MEM/WB.RegWrite
and MEM/WB.Reg_Rd≠0
and not (EX/MEM.RegWrite and EX/MEM.Reg_Rd≠0 and ID/EX.Reg_Rt≠EX/MEM.Reg_Rd)
and ID/EX.Reg_Rt=MEM/WB.Reg_Rd)
then {Rt deve provenire dal registro MEM/WB → PropagB=01}
Stallo della Pipe
lw $2,20($1)
and $4,$2,$5
or $8,$2,$6
add $9,$4,$2
slt $1,$6,$7
IF/ID
ID/EX
IF/ID
lw $2,20($1)
and $4,$2,$5
if (ID/EX.MemRead
and (IF/ID.Reg_Rs=ID/EX.Reg_Rt
or IF/ID.Reg_Rt=ID/EX.Reg_Rt))
then {stall the pipeline → NOP}
EX/MEM
MEM/WB
ID/EX
EX/MEM
MEM/WB
Unità di rilevamento degli hazard
if (ID/EX.MemRead
and (IF/ID.Reg_Rs=ID/EX.Reg_Rt
or IF/ID.Reg_Rt=ID/EX.Reg_Rt))
then {stall the pipeline}
• Forza a zero tutti i segnali di controllo (NOP)
nota: occorrerebbe forzare a zero solo RegWrite e MemWrite
• Disabilita la scrittura in PC e nel registro di pipeline IF/ID
ESERCIZIO 1:
Considerando le seguenti istruzioni in codice MIPS:
Codice 1
Codice 2
lw $s1,40($s6)
add $s2,$s3,$s1
add $s1,$s6,$s4
sw $s2,20($s4)
add $s1,$s1,$s4
add $s1,$s5,$s3
sw $s1,0($s2)
lw $s1,4($s2)
add $s5,$s5,$s1
sw $s1,0($s2)
Calcolare quanti colpi di clock sono necessari sulla pipeline
1. senza propagazione;
2. con propagazione dal registro EX/MEM ;
3. con propagazione dal registro MEM/WB;
4. con propagazione completa;
SOLUZIONE ESERCIZIO 2:
CODICE 1:
lw $s1,40($s6)
add $s2,$s3,$s1
add $s1,$s6,$s4
sw $s2,20($s4)
add $s1,$s1,$s4
CODICE 2:
add $s1,$s5,$s3
sw $s1,0($s2)
lw $s1,4($s2)
add $s5,$s5,$s1
sw $s1,0($s2)
RAW ($s1) I1 to I2
RAW ($s2) I2 to I4
RAW ($s1) I3 to I5
RAW ($s1) I1 to I2
RAW ($s1) I3 to I4,I5
CODICE 1:
lw $s1,40($s6)
nop
nop
add $s2,$s3,$s1
add $s1,$s6,$s4
nop
sw $s2,20($s4)
add $s1,$s1,$s4
t= 12T
CODICE 2:
add $s1,$s5,$s3
nop
nop
sw $s1,0($s2)
lw $s1,4($s2)
nop
nop
add $s5,$s5,$s1
sw $s1,0($s2)
t= 13T
CON PROPAGAZIONE
DAL REGISTRO EX/MEM
CODICE 1:
lw $s1,40($s6)
nop
nop
add $s2,$s3,$s1
add $s1,$s6,$s4
nop
sw $s2,20($s4)
add $s1,$s1,$s4
CODICE 2:
add $s1,$s5,$s3
sw $s1,0($s2)
lw $s1,4($s2)
nop
nop
add $s5,$s5,$s1
sw $s1,0($s2)
CON PROPAGAZIONE
DAL REGISTRO MEM/WB
CODICE 1:
lw $s1,40($s6)
nop
add $s2,$s3,$s1
add $s1,$s6,$s4
sw $s2,20($s4)
add $s1,$s1,$s4
CODICE 1:
lw $s1,40($s6)
nop
add $s2,$s3,$s1
add $s1,$s6,$s4
sw $s2,20($s4)
add $s1,$s1,$s4
t= 12T
t= 11T
CON PROPAGAZIONE
COMPLETA
t=10T
CODICE 2:
add $s1,$s5,$s3
nop
sw $s1,0($s2)
lw $s1,4($s2)
nop
add $s5,$s5,$s1
sw $s1,0($s2)
t=10T
CODICE 2:
add $s1,$s5,$s3
sw $s1,0($s2)
lw $s1,4($s2)
nop
add $s5,$s5,$s1
sw $s1,0($s2)
t=11T
t=10T
Università degli Studi di Salerno
Corso di Calcolatori Elettronici
Anno 2013/14
Unità di elaborazione dati con
Pipeline : Data Hazard e Unità
di Propagazione
Ing. Rosa Senatore
[email protected]

similar documents