Title: WAW Hazards In FP MIPS Pipeline
1Time 1
Issue first load
Instruction status
Issue Read operands Execution complete
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
Functional unit status
Busy Op Fi Fj Fk
Qj Qk Rj Rk
Integer ALU
Yes
Load
F6
R2
Yes
FP Mult1
FP Mult2
FP Add
FP Div
Register result status
F0 F2 F4 F6
F8 F10 F12
Functional unit
Integer
2Time 2
First load reads operands
Second load cannot be issued due to structural
hazard
Instruction status
Issue Read operands Execution complete
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
Functional unit status
Busy Op Fi Fj Fk
Qj Qk Rj Rk
Integer ALU
Yes
Load
F6
R2
Yes
No
FP Mult1
FP Mult2
FP Add
FP Div
Register result status
F0 F2 F4 F6
F8 F10 F12
Functional unit
Integer
3Time 3
First load completes execution
Second load cannot be issued due to structural
hazard
Instruction status
Issue Read operands Execution complete
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
Functional unit status
Busy Op Fi Fj Fk
Qj Qk Rj Rk
Integer ALU
Yes
Load
F6
R2
No
FP Mult1
FP Mult2
FP Add
FP Div
Register result status
F0 F2 F4 F6
F8 F10 F12
Functional unit
Integer
4Time 4
First load writes the result and frees ALU
Second load cannot be issued due to structural
hazard
Instruction status
Issue Read operands Execution complete
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
Functional unit status
Busy Op Fi Fj Fk
Qj Qk Rj Rk
Integer ALU
Yes
Load
F6
R2
No
FP Mult1
FP Mult2
FP Add
FP Div
Register result status
F0 F2 F4 F6
F8 F10 F12
Functional unit
Integer
5Time 5
Second load is issued
Instruction status
Issue Read operands Execution complete
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
Functional unit status
Busy Op Fi Fj Fk
Qj Qk Rj Rk
Integer ALU
Yes
Load
F2
R3
Yes
FP Mult1
FP Mult2
FP Add
FP Div
Register result status
F0 F2 F4 F6
F8 F10 F12
Functional unit
Integer
6Time 6
Second load reads operands
Mult is issued
Instruction status
Issue Read operands Execution complete
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
Functional unit status
Busy Op Fi Fj Fk
Qj Qk Rj Rk
Integer ALU
Yes
Load
F2
R3
Yes
No
FP Mult1
No
Yes
Integer
Yes
Mult
F0
F2
F4
FP Mult2
FP Add
FP Div
Register result status
F0 F2 F4 F6
F8 F10 F12
Functional unit
Integer
Mult1
7Time 7
Second load completes execution
Mult is stalled waiting for F2
Instruction status
Sub is issued
Issue Read operands Execution complete
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
Functional unit status
Busy Op Fi Fj Fk
Qj Qk Rj Rk
Integer ALU
Yes
Load
F2
R3
No
FP Mult1
No
Yes
Integer
Yes
Mult
F0
F2
F4
FP Mult2
FP Add
Yes
Integer
No
Sub
F8
F6
F2
Yes
FP Div
Register result status
F0 F2 F4 F6
F8 F10 F12
Functional unit
Add
Integer
Mult1
8Time 8
Second load writes result
Mult is stalled waiting for F2
Sub is stalled waiting for F2
Instruction status
Div is issued
Issue Read operands Execution complete
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
Functional unit status
Busy Op Fi Fj Fk
Qj Qk Rj Rk
Integer ALU
Yes
Load
F2
R3
No
FP Mult1
No
Yes
Yes
Integer
Yes
Mult
F0
F2
F4
FP Mult2
FP Add
Yes
Integer
No
Sub
F8
F6
F2
Yes
Yes
FP Div
Div
F10
F0
Yes
Mult1
Yes
F6
No
Register result status
F0 F2 F4 F6
F8 F10 F12
Functional unit
Mult1
Add
Divide
Integer
9Time 9
Mult reads operands
Sub reads operands
Div is stalled waiting for F0
Instruction status
Add cannot be issueddue to structural hazard
Issue Read operands Execution complete
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
Functional unit status
Busy Op Fi Fj Fk
Qj Qk Rj Rk
Integer ALU
Yes
Yes
FP Mult1
No
No
Yes
Mult
F0
F2
F4
FP Mult2
FP Add
Yes
No
Yes
Yes
Sub
F8
F6
F2
No
FP Div
Div
F10
F0
Yes
Mult1
Yes
F6
No
Register result status
F0 F2 F4 F6
F8 F10 F12
Functional unit
Mult1
Add
Divide
10Time 10
Mult in execution (1 out of 10)
Sub in execution (1 out of 2)
Div is stalled waiting for F0
Instruction status
Add cannot be issueddue to structural hazard
Issue Read operands Execution complete
Write result
L.D F6, 34(R2)
?
?
?
?
L.D F2, 45(R3)
?
?
?
?
MUL.D F0, F2, F4
?
?
19
SUB.D F8, F6, F2
11
?
?
DIV.D F10, F0, F6
?
ADD.D F6, F8, F2
Functional unit status
Busy Op Fi Fj Fk
Qj Qk Rj Rk
Integer ALU
FP Mult1
No
No
Yes
Mult
F0
F2
F4
FP Mult2
FP Add
Yes
No
Sub
F8
F6
F2
No
FP Div
Div
F10
F0
Yes
Mult1
Yes
F6
No
Register result status
F0 F2 F4 F6
F8 F10 F12
Functional unit
Mult1
Add
Divide
11Time 11
Mult in execution (2 out of 10)
Sub completes execution
Div is stalled waiting for F0
Instruction status
Add cannot be issueddue to structural hazard
Issue Read operands Execution complete
Write result
L.D F6, 34(R2)
?
?
?
?
L.D F2, 45(R3)
?
?
?
?
MUL.D F0, F2, F4
?
?
19
SUB.D F8, F6, F2
11
?
?
?
DIV.D F10, F0, F6
?
ADD.D F6, F8, F2
Functional unit status
Busy Op Fi Fj Fk
Qj Qk Rj Rk
Integer ALU
FP Mult1
No
No
Yes
Mult
F0
F2
F4
FP Mult2
FP Add
Yes
No
Sub
F8
F6
F2
No
FP Div
Div
F10
F0
Yes
Mult1
Yes
F6
No
Register result status
F0 F2 F4 F6
F8 F10 F12
Functional unit
Mult1
Add
Divide
12Time 12
Mult in execution (3 out of 10)
Sub writes result, frees adder
Div is stalled waiting for F0
Instruction status
Add cannot be issueddue to structural hazard
Issue Read operands Execution complete
Write result
L.D F6, 34(R2)
?
?
?
?
L.D F2, 45(R3)
?
?
?
?
MUL.D F0, F2, F4
?
?
19
SUB.D F8, F6, F2
?
?
?
?
DIV.D F10, F0, F6
?
ADD.D F6, F8, F2
Functional unit status
Busy Op Fi Fj Fk
Qj Qk Rj Rk
Integer ALU
FP Mult1
No
No
Yes
Mult
F0
F2
F4
FP Mult2
FP Add
Yes
No
Sub
F8
F6
F2
No
FP Div
Div
F10
F0
Yes
Mult1
Yes
F6
No
Register result status
F0 F2 F4 F6
F8 F10 F12
Functional unit
Mult1
Divide
Add
13Time 13
Add is issued
Mult in execution (4 out of 10)
Div is stalled waiting for F0
Instruction status
Issue Read operands Execution complete
Write result
L.D F6, 34(R2)
?
?
?
?
L.D F2, 45(R3)
?
?
?
?
MUL.D F0, F2, F4
?
?
19
SUB.D F8, F6, F2
?
?
?
?
DIV.D F10, F0, F6
?
ADD.D F6, F8, F2
?
Functional unit status
Busy Op Fi Fj Fk
Qj Qk Rj Rk
Integer ALU
FP Mult1
No
No
Yes
Mult
F0
F2
F4
FP Mult2
Add
F6
F8
F2
FP Add
Yes
Yes
Yes
FP Div
Div
F10
F0
Yes
Mult1
Yes
F6
No
Register result status
F0 F2 F4 F6
F8 F10 F12
Functional unit
Mult1
Add
Divide
14Time 14
Mult in execution (5 out of 10)
Div is stalled waiting for F0
Add reads operands
Instruction status
Issue Read operands Execution complete
Write result
L.D F6, 34(R2)
?
?
?
?
L.D F2, 45(R3)
?
?
?
?
MUL.D F0, F2, F4
?
?
19
SUB.D F8, F6, F2
?
?
?
?
DIV.D F10, F0, F6
?
ADD.D F6, F8, F2
?
?
Functional unit status
Busy Op Fi Fj Fk
Qj Qk Rj Rk
Integer ALU
FP Mult1
No
No
Yes
Mult
F0
F2
F4
FP Mult2
Add
F6
F8
F2
FP Add
Yes
No
Yes
Yes
No
FP Div
Div
F10
F0
Yes
Mult1
Yes
F6
No
Register result status
F0 F2 F4 F6
F8 F10 F12
Functional unit
Mult1
Add
Divide
15Time 15
Mult in execution (6 out of 10)
Div is stalled waiting for F0
Add in execution (1 out of 2)
Instruction status
Issue Read operands Execution complete
Write result
L.D F6, 34(R2)
?
?
?
?
L.D F2, 45(R3)
?
?
?
?
MUL.D F0, F2, F4
?
?
19
SUB.D F8, F6, F2
?
?
?
?
DIV.D F10, F0, F6
?
ADD.D F6, F8, F2
?
16
?
Functional unit status
Busy Op Fi Fj Fk
Qj Qk Rj Rk
Integer ALU
FP Mult1
No
No
Yes
Mult
F0
F2
F4
FP Mult2
Add
F6
F8
F2
FP Add
Yes
No
No
FP Div
Div
F10
F0
Yes
Mult1
Yes
F6
No
Register result status
F0 F2 F4 F6
F8 F10 F12
Functional unit
Mult1
Add
Divide
16Time 16
Mult in execution (7 out of 10)
Div is stalled waiting for F0
Add completes execution
Instruction status
Issue Read operands Execution complete
Write result
L.D F6, 34(R2)
?
?
?
?
L.D F2, 45(R3)
?
?
?
?
MUL.D F0, F2, F4
?
?
19
SUB.D F8, F6, F2
?
?
?
?
DIV.D F10, F0, F6
?
ADD.D F6, F8, F2
?
?
16
?
Functional unit status
Busy Op Fi Fj Fk
Qj Qk Rj Rk
Integer ALU
FP Mult1
No
No
Yes
Mult
F0
F2
F4
FP Mult2
Add
F6
F8
F2
FP Add
Yes
No
No
FP Div
Div
F10
F0
Yes
Mult1
Yes
F6
No
Register result status
F0 F2 F4 F6
F8 F10 F12
Functional unit
Mult1
Add
Divide
17Time 17
Mult in execution (8 out of 10)
Div is stalled waiting for F0
Add is stalled, WAR hazard
Instruction status
Issue Read operands Execution complete
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
?
?
?
Functional unit status
Busy Op Fi Fj Fk
Qj Qk Rj Rk
Integer ALU
FP Mult1
No
No
Yes
Mult
F0
F2
F4
FP Mult2
Add
F6
F8
F2
FP Add
Yes
No
No
FP Div
Div
F10
F0
Yes
Mult1
Yes
F6
No
Register result status
F0 F2 F4 F6
F8 F10 F12
Functional unit
Mult1
Add
Divide
18Time 19
Mult completes execution
Div is stalled waiting for F0
Add is stalled, WAR hazard
Instruction status
Issue Read operands Execution complete
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
?
?
?
Functional unit status
Busy Op Fi Fj Fk
Qj Qk Rj Rk
Integer ALU
FP Mult1
No
No
Yes
Mult
F0
F2
F4
FP Mult2
Add
F6
F8
F2
FP Add
Yes
No
No
FP Div
Div
F10
F0
Yes
Mult1
Yes
F6
No
Register result status
F0 F2 F4 F6
F8 F10 F12
Functional unit
Mult1
Add
Divide
19Time 20
Mult writes result
Div is stalled waiting for F0
Add is stalled, WAR hazard
Instruction status
Issue Read operands Execution complete
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
?
?
?
Functional unit status
Busy Op Fi Fj Fk
Qj Qk Rj Rk
Integer ALU
FP Mult1
No
No
Yes
Mult
F0
F2
F4
FP Mult2
Add
F6
F8
F2
FP Add
Yes
No
No
FP Div
Div
F10
F0
Yes
Mult1
No
Yes
F6
Yes
Register result status
F0 F2 F4 F6
F8 F10 F12
Functional unit
Mult1
Divide
Add
20Time 21
Div reads operands
Add is stalled, WAR hazard
Instruction status
Issue Read operands Execution complete
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
?
?
?
Functional unit status
Busy Op Fi Fj Fk
Qj Qk Rj Rk
Integer ALU
FP Mult1
FP Mult2
Add
F6
F8
F2
FP Add
Yes
No
No
FP Div
Div
F10
F0
Yes
No
Yes
F6
Yes
No
Register result status
F0 F2 F4 F6
F8 F10 F12
Functional unit
Divide
Add
21Time 22
Div in execution (1 out of 40)
Add writes result
Instruction status
Issue Read operands Execution complete
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
61
?
?
ADD.D F6, F8, F2
?
?
?
?
Functional unit status
Busy Op Fi Fj Fk
Qj Qk Rj Rk
Integer ALU
FP Mult1
FP Mult2
Add
F6
F8
F2
FP Add
Yes
No
No
FP Div
Div
F10
F0
No
Yes
F6
No
Register result status
F0 F2 F4 F6
F8 F10 F12
Functional unit
Add
Divide
22Time 61
Div completes execution
Instruction status
Issue Read operands Execution complete
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
?
?
?
?
Functional unit status
Busy Op Fi Fj Fk
Qj Qk Rj Rk
Integer ALU
FP Mult1
FP Mult2
FP Add
FP Div
Div
F10
F0
No
Yes
F6
No
Register result status
F0 F2 F4 F6
F8 F10 F12
Functional unit
Divide
23Time 62
Div writes result
Instruction status
Issue Read operands Execution complete
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
?
?
?
?
Functional unit status
Busy Op Fi Fj Fk
Qj Qk Rj Rk
Integer ALU
FP Mult1
FP Mult2
FP Add
FP Div
Div
F10
F0
No
Yes
F6
No
Register result status
F0 F2 F4 F6
F8 F10 F12
Functional unit
Divide
24Tomasulos Algorithm
- Use reservation stations that will hold operands
for instructions waiting to issue - Reservation station fetches the operand as soon
as it is available - Pending instructions read operands from
reservation stations - When writes overlap in execution, only the last
write actually updates the register
25Tomasulos Algorithm
Frominstruction unit
Common data bus
Instructionqueue
FP registers
LOAD-STOREOPERATIONS
Store buffers
FPOPERATIONS
Load buffers
Address unit
4 3 2 1
4 3 2 1
Reservationstations
Data
Address
Memory unit
FP adders
FP multipliers
26Tomasulos Algorithm
- Each reservation station holds the opcode for the
pending instruction and either operand values or
names of reservation stations that will provide
them - Load and store buffers hold data and addresses
for memory access - Transfer of all data goes over the common data bus
27Tomasulos Algorithm
- Each reservation station has seven fields
- Op operation to perform
- Qj, Qk reservation station tags that will
produce operands (0 indicates the operand is
ready) - Vj, Vk operand values
- A immediate field and later effective address
of load/store instruction - Busy this reservation station and its
functional unit are occupied - Register file has a field
- Qi tag of reservation station computing the
result
28Time 1
First load is issued
Instruction status
Issue Execute Write result
L.D F6, 34(R2)
?
L.D F2, 45(R3)
MUL.D F0, F2, F4
SUB.D F8, F2, F6
DIV.D F10, F0, F6
ADD.D F6, F8, F2
Reservation stations
Busy Op Vj Vk
Qj Qk A
yes
Load1
Load
RegsR2
34
Load2
Add1
Add2
Add3
Mult1
Mult2
Register result status
F0 F2 F4 F6
F8 F10 F12
Qi
Load1
29Time 2
First load calculates address
Second load is issued
Instruction status
Issue Execute Write result
L.D F6, 34(R2)
?
?
L.D F2, 45(R3)
?
MUL.D F0, F2, F4
SUB.D F8, F2, F6
DIV.D F10, F0, F6
ADD.D F6, F8, F2
Reservation stations
Busy Op Vj Vk
Qj Qk A
yes
Load1
Load
34
RegsR2
yes
Load2
RegsR3
45
Load
Add1
Add2
Add3
Mult1
Mult2
Register result status
F0 F2 F4 F6
F8 F10 F12
Qi
Load1
Load2
30Time 3
First load reads from memory
Second load calculates address
Instruction status
Mult is issued
Issue Execute Write result
L.D F6, 34(R2)
?
?
L.D F2, 45(R3)
?
?
MUL.D F0, F2, F4
?
SUB.D F8, F2, F6
DIV.D F10, F0, F6
ADD.D F6, F8, F2
Reservation stations
Busy Op Vj Vk
Qj Qk A
yes
Load1
Load
RegsR234
yes
Load2
RegsR3
45
Load
Add1
Add2
Add3
RegsF4
Mult1
yes
Load2
Mult
Mult2
Register result status
F0 F2 F4 F6
F8 F10 F12
Qi
Load1
Load2
Mult1
31Time 4
First load writes result
Second load reads from memory
Instruction status
Mul is stalled
Sub is issued
Issue Execute Write result
L.D F6, 34(R2)
?
?
?
L.D F2, 45(R3)
?
?
MUL.D F0, F2, F4
?
SUB.D F8, F2, F6
?
DIV.D F10, F0, F6
ADD.D F6, F8, F2
Reservation stations
Busy Op Vj Vk
Qj Qk A
yes
Load1
Load
RegsR234
yes
Load2
RegsR345
Load
Load2
Add1
yes
Sub
Mem34RegsR2
Add2
Add3
RegsF4
Mult1
yes
Load2
Mult
Mult2
Register result status
F0 F2 F4 F6
F8 F10 F12
Qi
Load2
Mult1
Add1
Load1
32Time 5
Second load writes result
Mult is stalled
Sub is stalled
Instruction status
Div is issued
Issue Execute Write result
L.D F6, 34(R2)
?
?
?
L.D F2, 45(R3)
?
?
?
MUL.D F0, F2, F4
?
SUB.D F8, F2, F6
?
DIV.D F10, F0, F6
?
ADD.D F6, F8, F2
Reservation stations
Busy Op Vj Vk
Qj Qk A
Load1
yes
Load2
RegsR345
Load
Add1
yes
Sub
Load2
Mem45RegsR3
Mem34RegsR2
Add2
Add3
RegsF4
Mult1
yes
Load2
Mult
Mem45RegsR3
yes
Mult1
Mult2
Div
Mem34RegsR2
Register result status
F0 F2 F4 F6
F8 F10 F12
Qi
Mult1
Add1
Mult2
Load2
33Time 6
Mult is executed (1 out of 10)
Sub is executed (1 out of 2)
Div is stalled
Instruction status
Add is issued
Issue Execute Write result
L.D F6, 34(R2)
?
?
?
L.D F2, 45(R3)
?
?
?
MUL.D F0, F2, F4
?
?
15
SUB.D F8, F2, F6
?
?
7
DIV.D F10, F0, F6
?
ADD.D F6, F8, F2
?
Reservation stations
Busy Op Vj Vk
Qj Qk A
Load1
Load2
Add1
yes
Sub
Mem45RegsR3
Mem34RegsR2
Add2
Add
Add1
yes
Mem45RegsR3
Add3
Mult1
yes
Mult
RegsF4
Mem45RegsR3
yes
Mult1
Mult2
Div
Mem34RegsR2
Register result status
Register result status
F0 F2 F4 F6
F8 F10 F12
Qi
Mult1
Add1
Mult2
Add2
34Time 7
Mult is executed (2 out of 10)
Sub is executed (2 out of 2)
Div is stalled
Instruction status
Add is stalled
Issue Execute Write result
L.D F6, 34(R2)
?
?
?
L.D F2, 45(R3)
?
?
?
MUL.D F0, F2, F4
?
?
15
SUB.D F8, F2, F6
?
?
7
DIV.D F10, F0, F6
?
ADD.D F6, F8, F2
?
Reservation stations
Busy Op Vj Vk
Qj Qk A
Load1
Load2
Add1
yes
Sub
Mem45RegsR3
Mem34RegsR2
Add2
Add
Add1
yes
Mem45RegsR3
Add3
Mult1
yes
Mult
RegsF4
Mem45RegsR3
yes
Mult1
Mult2
Div
Mem34RegsR2
Register result status
F0 F2 F4 F6
F8 F10 F12
Qi
Mult1
Add1
Mult2
Add2
35Time 8
Mult is executed (3 out of 10)
XMem34RegsR2-Mem45RegsR3
Sub writes result
Div is stalled
Instruction status
Add is stalled
Issue Execute Write result
L.D F6, 34(R2)
?
?
?
L.D F2, 45(R3)
?
?
?
MUL.D F0, F2, F4
?
?
15
SUB.D F8, F2, F6
?
?
?
DIV.D F10, F0, F6
?
ADD.D F6, F8, F2
?
Reservation stations
Busy Op Vj Vk
Qj Qk A
Load1
Load2
Add1
yes
Sub
Mem45RegsR3
Mem34RegsR2
Add2
Add
Add1
yes
X
Mem45RegsR3
Add3
Mult1
yes
Mult
RegsF4
Mem45RegsR3
yes
Mult1
Mult2
Div
Mem34RegsR2
Register result status
F0 F2 F4 F6
F8 F10 F12
Qi
Mult1
Mult2
Add2
Add1
36Time 9
Mult is executed (4 out of 10)
Div is stalled
Add is executed (1 out of 2)
Instruction status
Issue Execute Write result
L.D F6, 34(R2)
?
?
?
L.D F2, 45(R3)
?
?
?
MUL.D F0, F2, F4
?
?
15
SUB.D F8, F2, F6
?
?
?
DIV.D F10, F0, F6
?
ADD.D F6, F8, F2
?
?
Reservation stations
Busy Op Vj Vk
Qj Qk A
Load1
Load2
Add1
Add2
Add
yes
X
Mem45RegsR3
Add3
Mult1
yes
Mult
RegsF4
Mem45RegsR3
yes
Mult1
Mult2
Div
Mem34RegsR2
Register result status
F0 F2 F4 F6
F8 F10 F12
Qi
Mult1
Mult2
Add2
37Time 10
Mult is executed (5 out of 10)
Div is stalled
Add is executed (2 out of 2)
Instruction status
Issue Execute Write result
L.D F6, 34(R2)
?
?
?
L.D F2, 45(R3)
?
?
?
MUL.D F0, F2, F4
?
?
15
SUB.D F8, F2, F6
?
?
?
DIV.D F10, F0, F6
?
ADD.D F6, F8, F2
?
?
Reservation stations
Busy Op Vj Vk
Qj Qk A
Load1
Load2
Add1
Add2
Add
yes
X
Mem45RegsR3
Add3
Mult1
yes
Mult
RegsF4
Mem45RegsR3
yes
Mult1
Mult2
Div
Mem34RegsR2
Register result status
F0 F2 F4 F6
F8 F10 F12
Qi
Mult1
Mult2
Add2
38Time 11
Mult is executed (6 out of 10)
Div is stalled
Add writes result
Instruction status
Issue Execute Write result
L.D F6, 34(R2)
?
?
?
L.D F2, 45(R3)
?
?
?
MUL.D F0, F2, F4
?
?
15
SUB.D F8, F2, F6
?
?
?
DIV.D F10, F0, F6
?
ADD.D F6, F8, F2
?
?
?
Reservation stations
Busy Op Vj Vk
Qj Qk A
Load1
Load2
Add1
Add2
Add
yes
X
Mem45RegsR3
Add3
Mult1
yes
Mult
RegsF4
Mem45RegsR3
yes
Mult2
Div
Mult1
Mem34RegsR2
Register result status
F0 F2 F4 F6
F8 F10 F12
Qi
Mult1
Mult2
Add2
39Time 16
Mult writes result
YMem45RegsR3RegsF4
Div is stalled
Instruction status
Issue Execute Write result
L.D F6, 34(R2)
?
?
?
L.D F2, 45(R3)
?
?
?
MUL.D F0, F2, F4
?
?
?
SUB.D F8, F2, F6
?
?
?
DIV.D F10, F0, F6
?
ADD.D F6, F8, F2
?
?
?
Reservation stations
Busy Op Vj Vk
Qj Qk A
Load1
Load2
Add1
Add2
Add3
Mult1
yes
Mult
RegsF4
Mem45RegsR3
yes
Y
Mult2
Div
Mult1
Mem34RegsR2
Register result status
F0 F2 F4 F6
F8 F10 F12
Qi
Mult2
Mult1
40Time 17
Div is executed (1 out of 40)
Instruction status
Issue Execute Write result
L.D F6, 34(R2)
?
?
?
L.D F2, 45(R3)
?
?
?
MUL.D F0, F2, F4
?
?
?
SUB.D F8, F2, F6
?
?
?
DIV.D F10, F0, F6
?
?
56
ADD.D F6, F8, F2
?
?
?
Reservation stations
Busy Op Vj Vk
Qj Qk A
Load1
Load2
Add1
Add2
Add3
Mult1
yes
Y
Mult2
Div
Mem34RegsR2
Register result status
F0 F2 F4 F6
F8 F10 F12
Qi
Mult2
41Time 57
Div writes result
Instruction status
Issue Execute Write result
L.D F6, 34(R2)
?
?
?
L.D F2, 45(R3)
?
?
?
MUL.D F0, F2, F4
?
?
?
SUB.D F8, F2, F6
?
?
?
DIV.D F10, F0, F6
?
?
?
ADD.D F6, F8, F2
?
?
?
Reservation stations
Busy Op Vj Vk
Qj Qk A
Load1
Load2
Add1
Add2
Add3
Mult1
yes
Y
Mult2
Div
Mem34RegsR2
Register result status
F0 F2 F4 F6
F8 F10 F12
Qi
Mult2