Dynamic Approach Hardware Based Speculation
Dynamic Approach Hardware Based Speculation
(CS2354)
ILP– Speculation
Outline
• Speculation to Greater ILP
• Speculative Tomasulo Example
Reorder
FP Buffer
Op
Queue FP Regs
Registers To
Memory
Dest from
Dest
Memory
Dest
Reservation 11 10+R2
10+R2
Stations
FP
FPadders
adders FP
FPmultipliers
multipliers
Registers To
Memory
Dest from
Dest
22 ADDD
ADDD R(F4),ROB1
R(F4),ROB1 Memory
Dest
Reservation 11 10+R2
10+R2
Stations
FP
FPadders
adders FP
FPmultipliers
multipliers
15
Tomasulo With Reorder buffer:
Done?
FP Op ROB7 Newest
Queue ROB6
ROB5
F2 DIVD F2,F10,F6
F2,F10,F6 NN ROB3
F10
F10 ADDD
ADDD F10,F4,F0
F10,F4,F0 NN ROB2 Oldest
F0
F0 LD
LD F0,10(R2)
F0,10(R2) NN ROB1
Registers To
Memory
Dest from
Dest
22 ADDD
ADDD R(F4),ROB1
R(F4),ROB1 Memory
33 DIVD
DIVD ROB2,R(F6)
ROB2,R(F6)
Dest
Reservation 11 10+R2
10+R2
Stations
FP
FPadders
adders FP
FPmultipliers
multipliers
Reorder Buffer --
--
F2
BNE
BNE F2,<…>
DIVD
F2,<…> NN ROB4
F2 DIVD F2,F10,F6
F2,F10,F6 NN ROB3
F10
F10 ADDD
ADDD F10,F4,F0
F10,F4,F0 NN ROB2 Oldest
F0
F0 LD
LD F0,10(R2)
F0,10(R2) NN ROB1
Registers To
Memory
Dest from
Dest
22 ADDD
ADDD R(F4),ROB1
R(F4),ROB1 Memory
66 ADDD 33 DIVD
DIVD ROB2,R(F6)
ADDD ROB5, R(F6)
ROB5, R(F6) ROB2,R(F6)
Dest
Reservation 11 10+R2
10+R2
Stations 55 0+R3
0+R3
FP
FPadders
adders FP
FPmultipliers
multipliers
Reorder Buffer --
--
F2
BNE
BNE F2,<…>
DIVD
F2,<…> NN ROB4
F2 DIVD F2,F10,F6
F2,F10,F6 NN ROB3
F10
F10 ADDD
ADDD F10,F4,F0
F10,F4,F0 NN ROB2 Oldest
F0
F0 LD
LD F0,10(R2)
F0,10(R2) NN ROB1
Registers To
Memory
Dest from
Dest
22 ADDD
ADDD R(F4),ROB1
R(F4),ROB1 Memory
66 ADDD 33 DIVD
DIVD ROB2,R(F6)
ADDD ROB5, R(F6)
ROB5, R(F6) ROB2,R(F6)
Dest
Reservation 11 10+R2
10+R2
Stations 55 0+R3
0+R3
FP
FPadders
adders FP
FPmultipliers
multipliers
Reorder Buffer --
--
F2
BNE
BNE F2,<…>
DIVD
F2,<…> NN ROB4
F2 DIVD F2,F10,F6
F2,F10,F6 NN ROB3
F10
F10 ADDD
ADDD F10,F4,F0
F10,F4,F0 NN ROB2 Oldest
F0
F0 LD
LD F0,10(R2)
F0,10(R2) NN ROB1
Registers To
Memory
Dest from
Dest
22 ADDD
ADDD R(F4),ROB1
R(F4),ROB1 Memory
66 ADDD M[10],R(F6) 33 DIVD
DIVD ROB2,R(F6)
ROB2,R(F6)
ADDD M[10],R(F6)
Dest
Reservation 11 10+R2
10+R2
Stations
FP
FPadders
adders FP
FPmultipliers
multipliers
Reorder Buffer --
--
F2
BNE
BNE F2,<…>
DIVD
F2,<…> NN ROB4
F2 DIVD F2,F10,F6
F2,F10,F6 NN ROB3
F10
F10 ADDD
ADDD F10,F4,F0
F10,F4,F0 NN ROB2 Oldest
F0
F0 LD
LD F0,10(R2)
F0,10(R2) NN ROB1
Registers To
Memory
Dest from
Dest
22 ADDD
ADDD R(F4),ROB1
R(F4),ROB1 Memory
33 DIVD
DIVD ROB2,R(F6)
ROB2,R(F6)
Dest
Reservation 11 10+R2
10+R2
Stations
FP
FPadders
adders FP
FPmultipliers
multipliers
Reorder Buffer --
--
F2
BNE
BNE F2,<…>
DIVD
F2,<…> NN ROB4
F2 DIVD F2,F10,F6
F2,F10,F6 NN ROB3
F10
F10 ADDD
ADDD F10,F4,F0
F10,F4,F0 NN ROB2 Oldest
F0
F0 M[20]
M[20] LD
LD F0,10(R2)
F0,10(R2) YY ROB1
Registers To
Memory
Dest from
Dest
22 ADDD
ADDD R(F4),M[20]
R(F4),M[20] Memory
33 DIVD
DIVD ROB2,R(F6)
ROB2,R(F6)
Dest
Reservation
Stations
FP
FPadders
adders FP
FPmultipliers
multipliers
Reorder Buffer --
--
F2
BNE
BNE F2,<…>
DIVD
F2,<…> NN ROB4
F2 DIVD F2,F10,F6
F2,F10,F6 NN ROB3
F10
F10 ADDD
ADDD F10,F4,F0
F10,F4,F0 NN ROB2 Oldest
ROB1
Registers To
Memory
Dest from
Dest
22 ADDD
ADDD R(F4),M[20]
R(F4),M[20] Memory
33 DIVD
DIVD ROB2,R(F6)
ROB2,R(F6)
Dest
Reservation
Stations
FP
FPadders
adders FP
FPmultipliers
multipliers
Reorder Buffer --
--
F2
BNE
BNE F2,<…>
DIVD
F2,<…> NN ROB4
F2 DIVD F2,F10,F6
F2,F10,F6 NN ROB3
F10
F10<val3>
<val3> ADDD
ADDD F10,F4,F0
F10,F4,F0 YY ROB2 Oldest
ROB1
Registers To
Memory
Dest from
Dest
Memory
33 DIVD
DIVD val3,R(F6)
val3,R(F6)
Dest
Reservation
Stations
FP
FPadders
adders FP
FPmultipliers
multipliers
F2 <val4>
<val4> DIVD
DIVD F2,F10,F6
F2,F10,F6 YY ROB3
ROB2 Oldest
ROB1
Registers To
Memory
Dest from
Dest
Memory
Dest
Reservation
Stations
FP
FPadders
adders FP
FPmultipliers
multipliers
Registers To
Memory
Dest from
Dest
Memory
Dest
Reservation
Stations
FP
FPadders
adders FP
FPmultipliers
multipliers
F2 DIVD F2,F10,F6
F2,F10,F6 NN ROB3
F10
F10 ADDD
ADDD F10,F4,F0
F10,F4,F0 NN ROB2 Oldest
What about memory F0
F0 LD
LD F0,10(R2)
F0,10(R2) NN ROB1
hazards???
Registers To
Memory
Dest from
Dest
22 ADDD
ADDD R(F4),ROB1
R(F4),ROB1 Memory
33 DIVD
DIVD ROB2,R(F6)
ROB2,R(F6)
Dest
Reservation 11 10+R2
10+R2
Stations
FP
FPadders
adders FP
FPmultipliers
multipliers