Professional Documents
Culture Documents
Modified Algorithm
Get the next instruction from the head of the instruction queue,
which is maintained in FIFO order
If the operands are not in the registers, keep track of the functional
units that will produce the operands.
CKV
Tomasulo’s Algorithm
Execute
When all the operands are available, the operation can be executed at
the corresponding functional unit.
When the result is available, write it on the CDB and from there into
the registers and into any reservation stations (including store buffers)
waiting for this result.
Stores are buffered in the store buffer until both the value to be
stored and the store address are available, then the result is written
as soon as the memory unit is free.
CKV
Instruction Status
Instruction j k Issue Execution Write Result
L.D F6, 34 (R2)
L.D F2, 45 (R3)
MUL.D F0, F2, F4
SUB.D F8, F6, F2
DIV.D F10, F0, F6
ADD.D F6, F8, F2
Reservation Stations Vk Qj
Busy Op Vj Qk A
Time Name
Load1
Load2
Add1
Add2
Add3
Mult1
Mult2
Register Status
F0 F2 F4 F6 F8 F10 F30
Qi
ADD.D F6, F8, F2 CKV
FP Registers
DIV.D F10, F0, F6
Instruction F0
SUB.D F8, F6, F2
Queue F2
MUL.D F0, F2, F4
L.D F2, 45 (R3) F4
L.D F6, 34 (R2) F6
Load-store
Operations F8
Store
Buffers Address Unit Floating Point F10
Load
Operations Operand
Buffers
Buses
Data Address
Memory Unit
Reservation
Stations
FP Adders FP Multipliers
Data Address
Memory Unit
Busy Op Vj Vk Qj Qk Busy Op Vj Vk Qj Qk
Reservation
Stations
FP Adders FP Multipliers
Data Address
Memory Unit
Busy Op Vj Vk Qj Qk Busy Op Vj Vk Qj Qk
Reservation
Stations
FP Adders FP Multipliers
Data Address
Memory Unit
Busy Op Vj Vk Qj Qk Busy Op Vj Vk Qj Qk
Reservation
Stations
FP Adders FP Multipliers
Data Address
Memory Unit
Busy Op Vj Vk Qj Qk Busy Op Vj Vk Qj Qk
Reservation
Stations
FP Adders FP Multipliers
Data Address
Memory Unit
Busy Op Vj Vk Qj Qk Busy Op Vj Vk Qj Qk
Reservation
Stations
FP Adders FP Multipliers
Data Address
Memory Unit
Busy Op Vj Vk Qj Qk Busy Op Vj Vk Qj Qk
Reservation
Stations
FP Adders FP Multipliers
Data Address
Memory Unit
Busy Op Vj Vk Qj Qk Busy Op Vj Vk Qj Qk
1 ML 2.5 LD2
Reservation
Stations
FP Adders FP Multipliers
Data Address
Memory Unit
LD1, 0.5 Busy Op Vj Vk Qj Qk Busy Op Vj Vk Qj Qk
1 ML 2.5 LD2
Reservation
Stations
FP Adders FP Multipliers
Data Address
Memory Unit
LD1, 0.5 Busy Op Vj Vk Qj Qk Busy Op Vj Vk Qj Qk
1 ML 2.5 LD2
Reservation
Stations
FP Adders FP Multipliers
Data Address
Memory Unit
Busy Op Vj Vk Qj Qk Busy Op Vj Vk Qj Qk
1 Sub 0.5 LD2 1 ML 2.5 LD2
Reservation
Stations
FP Adders FP Multipliers
Data Address
Memory Unit
LD2, 1.5 Busy Op Vj Vk Qj Qk Busy Op Vj Vk Qj Qk
1 Sub 0.5 LD2 1 ML 2.5 LD2
Reservation
Stations
FP Adders FP Multipliers
Data Address
Memory Unit
LD2, 1.5 Busy Op Vj Vk Qj Qk Busy Op Vj Vk Qj Qk
1 Sub 0.5 LD2 1 ML 2.5 LD2
Reservation
Stations
FP Adders FP Multipliers
Data Address
Memory Unit
LD2, 1.5 Busy Op Vj Vk Qj Qk Busy Op Vj Vk Qj Qk
1 Sub 0.5 1.5 1 ML 1.5 2.5
Reservation
Stations
FP Adders FP Multipliers
Data Address
Memory Unit
Busy Op Vj Vk Qj Qk Busy Op Vj Vk Qj Qk
1 Sub 0.5 1.5 1 ML 1.5 2.5
1 Div 0.5 ML1
Reservation
Stations
FP Adders FP Multipliers
Data Address
Memory Unit
Busy Op Vj Vk Qj Qk Busy Op Vj Vk Qj Qk
2 1 Sub 0.5 1.5 1 ML 1.5 2.5 10
1 Add 1.5 AD1 1 Div 0.5 ML1
Reservation
Stations
FP Adders FP Multipliers
Data Address
Memory Unit
Busy Op Vj Vk Qj Qk Busy Op Vj Vk Qj Qk
1 1 Sub 0.5 1.5 1 ML 1.5 2.5 9
1 Add 1.5 AD1 1 Div 0.5 ML1
Reservation
Stations
FP Adders FP Multipliers
Data Address
Memory Unit
Busy Op Vj Vk Qj Qk Busy Op Vj Vk Qj Qk
0 1 Sub 0.5 1.5 1 ML 1.5 2.5 8
1 Add 1.5 AD1 1 Div 0.5 ML1
Reservation
Stations
FP Adders FP Multipliers
AD1, -1.0
Common Data Bus (CDB)
CKV
FP Registers
8 IS ADD.D F6, F8, F2
Qi
ML1 F0
R2=100
IS DIV.D F10, F0, F6 1.5 F2
W
E
IS SUB.D F8, F6, F2 2.5 F4
R3=200 Load-store
E
IS MUL.D F0, F2, F4 AD2 0.5 F6
Operations AD1 -1.0 F8
Store ML2
Buffers Address Unit Floating Point F10
Load
Operations Operand
Buffers
Buses
Data Address
Memory Unit
Busy Op Vj Vk Qj Qk Busy Op Vj Vk Qj Qk
1 Sub 0.5 1.5 1 ML 1.5 2.5 8
1 Add -1.0 1.5 AD1 1 Div 0.5 ML1
Reservation
Stations
FP Adders FP Multipliers
AD1, -1.0
Common Data Bus (CDB)
CKV
FP Registers
9 Qi
ML1 F0
E
IS ADD.D F6, F8, F2
R2=100 1.5 F2
IS DIV.D F10, F0, F6
2.5 F4
R3=200 Load-store
E
IS MUL.D F0, F2, F4 AD2 0.5 F6
Operations -1.0 F8
Store ML2
Buffers Address Unit Floating Point F10
Load
Operations Operand
Buffers
Buses
Data Address
Memory Unit
Busy Op Vj Vk Qj Qk Busy Op Vj Vk Qj Qk
1 ML 1.5 2.5 7
2 1 Add -1.0 1.5 1 Div 0.5 ML1
Reservation
Stations
FP Adders FP Multipliers
Data Address
Memory Unit
Busy Op Vj Vk Qj Qk Busy Op Vj Vk Qj Qk
1 ML 1.5 2.5 6
1 1 Add -1.0 1.5 1 Div 0.5 ML1
Reservation
Stations
FP Adders FP Multipliers
Data Address
Memory Unit
Busy Op Vj Vk Qj Qk Busy Op Vj Vk Qj Qk
1 ML 1.5 2.5 5
0 1 Add -1.0 1.5 1 Div 0.5 ML1
Reservation
Stations
FP Adders FP Multipliers
AD2, 0.5 Common Data Bus (CDB)
CKV
FP Registers
11 Qi
ML1 F0
W
IS ADD.D F6, F8, F2
R2=100 1.5 F2
IS DIV.D F10, F0, F6
2.5 F4
R3=200 Load-store
E
IS MUL.D F0, F2, F4 AD2 0.5 F6
Operations -1.0 F8
Store ML2
Buffers Address Unit Floating Point F10
Load
Operations Operand
Buffers
Buses
Data Address
Memory Unit
Busy Op Vj Vk Qj Qk Busy Op Vj Vk Qj Qk
1 ML 1.5 2.5 5
1 Add -1.0 1.5 1 Div 0.5 ML1
Reservation
Stations
FP Adders FP Multipliers
AD2, 0.5 Common Data Bus (CDB)
CKV
14
13
15
12 Qi
ML1
FP Registers
F0
R2=100 1.5 F2
IS DIV.D F10, F0, F6
2.5 F4
R3=200 Load-store
E
IS MUL.D F0, F2, F4 0.5 F6
Operations -1.0 F8
Store ML2
Buffers Address Unit Floating Point F10
Load
Operations Operand
Buffers
Buses
Data Address
Memory Unit
Busy Op Vj Vk Qj Qk Busy Op Vj Vk Qj Qk
1 ML 1.5 2.5 123
4
1 Div 0.5 ML1
Reservation
Stations
FP Adders FP Multipliers
Data Address
Memory Unit
Busy Op Vj Vk Qj Qk Busy Op Vj Vk Qj Qk
1 ML 1.5 2.5 0
1 Div 0.5 ML1
Reservation
Stations
FP Adders FP Multipliers
ML1, 3.75
Common Data Bus (CDB)
CKV
FP Registers
16 Qi
ML1 3.75 F0
R2=100 1.5 F2
IS DIV.D F10, F0, F6
2.5 F4
R3=200 Load-store
W
E
IS MUL.D F0, F2, F4 0.5 F6
Operations -1.0 F8
Store ML2
Buffers Address Unit Floating Point F10
Load
Operations Operand
Buffers
Buses
Data Address
Memory Unit
Busy Op Vj Vk Qj Qk Busy Op Vj Vk Qj Qk
1 ML 1.5 2.5
1 Div 3.75 0.5 ML1
Reservation
Stations
FP Adders FP Multipliers
ML1, 3.75
Common Data Bus (CDB)
CKV
FP Registers
17 Qi
3.75 F0
R2=100 1.5 F2
2.5 F4
R3=200 E
IS DIV.D F10, F0, F6
Load-store 0.5 F6
Operations -1.0 F8
Store ML2
Buffers Address Unit Floating Point F10
Load
Operations Operand
Buffers
Buses
Data Address
Memory Unit
Busy Op Vj Vk Qj Qk Busy Op Vj Vk Qj Qk
FP Adders FP Multipliers
Data Address
Memory Unit
Busy Op Vj Vk Qj Qk Busy Op Vj Vk Qj Qk
FP Adders FP Multipliers
Data Address
Memory Unit
Busy Op Vj Vk Qj Qk Busy Op Vj Vk Qj Qk
FP Adders FP Multipliers
ML2, 7.5
Common Data Bus (CDB)
CKV
FP Registers
57 Qi
3.75 F0
R2=100 1.5 F2
2.5 F4
R3=200 WE
IS DIV.D F10, F0, F6
Load-store 0.5 F6
Operations -1.0 F8
Store ML2 7.5 F10
Buffers Address Unit Floating Point
Load
Operations Operand
Buffers
Buses
Data Address
Memory Unit
Busy Op Vj Vk Qj Qk Busy Op Vj Vk Qj Qk
FP Adders FP Multipliers
ML2, 7.5
Common Data Bus (CDB)
CKV
Qi FP Registers
3.75 F0
1.5 F2
2.5 F4
Load-store 0.5 F6
Operations -1.0 F8
Store 7.5 F10
Buffers Address Unit Floating Point
Load
Operations Operand
Buffers
Buses
Data Address
Memory Unit
Busy Op Vj Vk Qj Qk Busy Op Vj Vk Qj Qk
Reservation
Stations
FP Adders FP Multipliers