Professional Documents
Culture Documents
Computer Science 146 Computer Architecture
Computer Science 146 Computer Architecture
Computer Science 146 Computer Architecture
Computer Architecture
Spring 2004
Harvard University
Instructor: Prof. David Brooks
dbrooks@eecs.harvard.edu
Lecture 6: Scoreboarding Example,
Tomasulos Algorithm
Computer Science 146
David Brooks
Lecture Outline
Scoreboarding Review (A.8)
Tomasulos Algorithm (3.1-3.3)
Dynamic Scheduling + Register Renaming
Example 1: Same code as last time
Example 2: Hardware Loop Unrolling
An aside
Interested in the real-world, business side of computer
architecture?
Bob Colwell (Chief Architect of Intel P6-core, used in
PentiumPro, PII, PIII) gave a talk at Stanford recently.
Technical architecture vs. marketing/management, many
anecdotes
http://stanford-online.stanford.edu/courses/ee380/040218-ee380-100.asx
Scoreboarding
Centralized scheme
No bypassing
WAR/WAW hazards
are a problem
Originally proposed
in CDC6600 (S. Cray,
1964)
Scoreboarding Stages
Read Operands (Or Issue!)
Read Operands (Check Data Hazards)
Check scoreboard for whether source operands are
available
Available?
No earlier issued active instructions will write register
No currently active FU is going to write it
Scoreboarding Stages
Execution/Write Result
Execution
Execute/Update scoreboard
Write Result
Scoreboard checks for WAR stalls and stalls completing
instruction, if necessary
Before, stalls only occur at the beginning of instructions,
now it can be at the end as well
Can happen if:
Completing instruction destination register matches an older
instruction that has not yet read its source operands
Computer Science 146
David Brooks
Scoreboard Example
Instruction status:
Instruction
LD
F6
LD
F2
MULTD F0
SUBD
F8
DIVD
F10
ADDD
F6
j
34+
45+
F2
F6
F0
F8
k
R2
R3
F4
F2
F6
F2
Busy
Op
dest
Fi
S1
Fj
S2
Fk
F2
F4
F6
F8
FU
Qj
FU
Qk
Fj?
Rj
Fk?
Rk
...
F30
No
No
No
No
No
F10 F12
FU
Example courtesy of Prof. Broderson, CS152, UCB, Copyright (C) 2001 UCB
Computer Science 146
David Brooks
j
34+
45+
F2
F6
F0
F8
k
R2
R3
F4
F2
F6
F2
Busy
Op
dest
Fi
Yes
No
No
No
No
Load
F6
F2
F4
FU
S1
Fj
S2
Fk
FU
Qj
FU
Qk
Fj?
Rj
R2
F6
F8
Fk?
Rk
Yes
F10 F12
...
F30
Integer
j
34+
45+
F2
F6
F0
F8
k
R2
R3
F4
F2
F6
F2
Busy
Op
dest
Fi
Yes
No
No
No
No
Load
F6
F2
F4
S1
Fj
S2
Fk
FU
Qj
FU
Qk
Fj?
Rj
R2
F6
F8
Fk?
Rk
Yes
F10 F12
...
F30
Fj?
Rj
Fk?
Rk
Integer
j
34+
45+
F2
F6
F0
F8
k
R2
R3
F4
F2
F6
F2
Busy
Op
dest
Fi
Yes
No
No
No
No
Load
F6
F2
F4
FU
Issue MULT?
S1
Fj
S2
Fk
FU
Qj
FU
Qk
R2
F6
F8
No
F10 F12
...
F30
Integer
j
34+
45+
F2
F6
F0
F8
k
R2
R3
F4
F2
F6
F2
Busy
Op
dest
Fi
S1
Fj
S2
Fk
F2
F4
F6
F8
FU
Qk
Fj?
Rj
Fk?
Rk
...
F30
Fj?
Rj
Fk?
Rk
No
No
No
No
No
FU
Qj
F10 F12
Integer
j
34+
45+
F2
F6
F0
F8
k
R2
R3
F4
F2
F6
F2
Busy
Op
dest
Fi
S1
Fj
Yes
No
No
No
No
Load
F2
F2
F4
FU
S2
Fk
FU
Qj
FU
Qk
R3
F6
F8
Yes
F10 F12
...
F30
Integer
j
34+
45+
F2
F6
F0
F8
k
R2
R3
F4
F2
F6
F2
2
6
Busy
Op
dest
Fi
S1
Fj
S2
Fk
FU
Qj
Yes
Yes
No
No
No
Load
Mult
F2
F0
F2
R3
F4
F2
F4
F6
F8
FU
Qk
Fj?
Rj
Fk?
Rk
Integer
No
Yes
Yes
F10 F12
...
F30
Fj?
Rj
Fk?
Rk
No
No
Yes
Yes
No
...
F30
FU Mult1 Integer
j
34+
45+
F2
F6
F0
F8
k
R2
R3
F4
F2
F6
F2
2
6
3
7
Busy
Op
dest
Fi
S1
Fj
S2
Fk
FU
Qj
Yes
Yes
No
Yes
No
Load
Mult
F2
F0
F2
R3
F4
Integer
Sub
F8
F6
F2
F2
F4
F6
FU Mult1 Integer
F8
FU
Qk
Integer
F10 F12
Add
j
34+
45+
F2
F6
F0
F8
k
R2
R3
F4
F2
F6
F2
2
6
3
7
Busy
Op
dest
Fi
S1
Fj
S2
Fk
FU
Qj
Yes
Yes
No
Yes
Yes
Load
Mult
F2
F0
F2
R3
F4
Integer
Sub
Div
F8
F10
F6
F0
F2
F6
F2
F4
F6
FU Mult1 Integer
F8
FU
Qk
Fj?
Rj
Fk?
Rk
No
No
Yes
Mult1
Yes
No
No
Yes
F10 F12
...
F30
Integer
Add Divide
j
34+
45+
F2
F6
F0
F8
k
R2
R3
F4
F2
F6
F2
2
6
3
7
4
8
Busy
Op
dest
Fi
S1
Fj
S2
Fk
Mult
F0
F2
F4
Sub
Div
F8
F10
F6
F0
F2
F6
F2
F4
F6
No
Yes
No
Yes
Yes
FU Mult1
F8
FU
Qj
FU
Qk
Fj?
Rj
Fk?
Rk
Yes
Yes
Mult1
Yes
No
Yes
Yes
F10 F12
...
F30
Add Divide
j
34+
45+
F2
F6
F0
F8
k
R2
R3
F4
F2
F6
F2
2
6
9
9
3
7
4
8
Busy
Op
dest
Fi
S1
Fj
S2
Fk
Mult
F0
F2
F4
Sub
Div
F8
F10
F6
F0
F2
F6
F2
F4
F6
Time Name
Integer
10 Mult1
Mult2
2 Add
Divide
No
Yes
No
Yes
Yes
F8
FU
Qj
FU
Qk
Fj?
Rj
Fk?
Rk
Yes
Yes
Mult1
Yes
No
Yes
Yes
F10 F12
...
F30
Add Divide
j
34+
45+
F2
F6
F0
F8
k
R2
R3
F4
F2
F6
F2
2
6
9
9
3
7
4
8
Busy
Op
dest
Fi
S1
Fj
S2
Fk
Mult
F0
F2
F4
Sub
Div
F8
F10
F6
F0
F2
F6
F2
F4
F6
No
Yes
No
Yes
Yes
FU Mult1
F8
FU
Qj
FU
Qk
Fj?
Rj
Fk?
Rk
No
No
Mult1
No
No
No
Yes
F10 F12
...
F30
Add Divide
10
j
34+
45+
F2
F6
F0
F8
k
R2
R3
F4
F2
F6
F2
2
6
9
9
11
Busy
Op
dest
Fi
S1
Fj
S2
Fk
Mult
F0
F2
F4
Sub
Div
F8
F10
F6
F0
F2
F6
F2
F4
F6
No
Yes
No
Yes
Yes
3
7
4
8
FU Mult1
11
F8
FU
Qj
FU
Qk
Fj?
Rj
Fk?
Rk
No
No
Mult1
No
No
No
Yes
F10 F12
...
F30
Fj?
Rj
Fk?
Rk
No
No
Mult1
No
Yes
F10 F12
...
F30
Add Divide
j
34+
45+
F2
F6
F0
F8
k
R2
R3
F4
F2
F6
F2
2
6
9
9
3
7
4
8
11
12
Busy
Op
dest
Fi
S1
Fj
S2
Fk
Mult
F0
F2
F4
Div
F10
F0
F6
F2
F4
F6
F8
No
Yes
No
No
Yes
FU Mult1
FU
Qj
FU
Qk
Divide
11
j
34+
45+
F2
F6
F0
F8
k
R2
R3
F4
F2
F6
F2
2
6
9
9
3
7
4
8
11
12
Busy
Op
dest
Fi
S1
Fj
S2
Fk
Mult
F0
F2
F4
Add
Div
F6
F10
F8
F0
F2
F6
F2
F4
F6
F8
No
Yes
No
Yes
Yes
13
Add
FU
Qj
FU
Qk
Fj?
Rj
Fk?
Rk
No
No
Mult1
Yes
No
Yes
Yes
F10 F12
...
F30
Fj?
Rj
Fk?
Rk
No
No
Mult1
Yes
No
Yes
Yes
F10 F12
...
F30
Divide
j
34+
45+
F2
F6
F0
F8
k
R2
R3
F4
F2
F6
F2
2
6
9
9
3
7
4
8
11
12
14
Busy
Op
dest
Fi
S1
Fj
S2
Fk
Mult
F0
F2
F4
Add
Div
F6
F10
F8
F0
F2
F6
F2
F4
F6
F8
No
Yes
No
Yes
Yes
FU Mult1
Add
FU
Qj
FU
Qk
Divide
12
j
34+
45+
F2
F6
F0
F8
k
R2
R3
F4
F2
F6
F2
2
6
9
9
3
7
4
8
11
12
14
Busy
Op
dest
Fi
S1
Fj
S2
Fk
Mult
F0
F2
F4
Add
Div
F6
F10
F8
F0
F2
F6
F2
F4
F6
F8
No
Yes
No
Yes
Yes
15
Add
FU
Qj
FU
Qk
Fj?
Rj
Fk?
Rk
No
No
Mult1
No
No
No
Yes
F10 F12
...
F30
Fj?
Rj
Fk?
Rk
No
No
Mult1
No
No
No
Yes
F10 F12
...
F30
Divide
j
34+
45+
F2
F6
F0
F8
k
R2
R3
F4
F2
F6
F2
2
6
9
9
3
7
4
8
11
12
14
16
Busy
Op
dest
Fi
S1
Fj
S2
Fk
Mult
F0
F2
F4
Add
Div
F6
F10
F8
F0
F2
F6
F2
F4
F6
F8
No
Yes
No
Yes
Yes
FU Mult1
Add
FU
Qj
FU
Qk
Divide
13
j
34+
45+
F2
F6
F0
F8
k
R2
R3
F4
F2
F6
F2
2
6
9
9
3
7
4
8
11
12
14
16
Busy
Op
dest
Fi
S1
Fj
S2
Fk
Mult
F0
F2
F4
Add
Div
F6
F10
F8
F0
F2
F6
F2
F4
F6
F8
No
Yes
No
Yes
Yes
17
WAR Hazard!
Add
FU
Qj
FU
Qk
Fj?
Rj
Fk?
Rk
No
No
Mult1
No
No
No
Yes
F10 F12
...
F30
Fj?
Rj
Fk?
Rk
No
No
Mult1
No
No
No
Yes
F10 F12
...
F30
Divide
j
34+
45+
F2
F6
F0
F8
k
R2
R3
F4
F2
F6
F2
2
6
9
9
3
7
4
8
11
12
14
16
Busy
Op
dest
Fi
S1
Fj
S2
Fk
Mult
F0
F2
F4
Add
Div
F6
F10
F8
F0
F2
F6
F2
F4
F6
F8
No
Yes
No
Yes
Yes
FU Mult1
Add
FU
Qj
FU
Qk
Divide
14
j
34+
45+
F2
F6
F0
F8
k
R2
R3
F4
F2
F6
F2
2
6
9
9
3
7
19
11
14
16
Busy
Op
dest
Fi
S1
Fj
S2
Fk
Mult
F0
F2
F4
Add
Div
F6
F10
F8
F0
F2
F6
F2
F4
F6
F8
No
Yes
No
Yes
Yes
19
4
8
12
Add
FU
Qj
FU
Qk
Fj?
Rj
Fk?
Rk
No
No
Mult1
No
No
No
Yes
F10 F12
...
F30
Fj?
Rj
Fk?
Rk
No
Yes
No
Yes
...
F30
Divide
j
34+
45+
F2
F6
F0
F8
k
R2
R3
F4
F2
F6
F2
2
6
9
9
3
7
19
11
14
16
Busy
Op
dest
Fi
S1
Fj
S2
Fk
No
No
No
Yes
Yes
Add
Div
F6
F10
F8
F0
F2
F6
F2
F4
F6
F8
20
FU
4
8
20
12
Add
FU
Qj
FU
Qk
F10 F12
Divide
15
j
34+
45+
F2
F6
F0
F8
k
R2
R3
F4
F2
F6
F2
2
6
9
9
21
14
16
Busy
Op
dest
Fi
S1
Fj
S2
Fk
No
No
No
Yes
Yes
Add
Div
F6
F10
F8
F0
F2
F6
F2
F4
F6
F8
3
7
19
11
FU
21
4
8
20
12
Add
FU
Qj
FU
Qk
F10 F12
Fj?
Rj
Fk?
Rk
No
Yes
No
Yes
...
F30
Fj?
Rj
Fk?
Rk
No
No
...
F30
Divide
j
34+
45+
F2
F6
F0
F8
k
R2
R3
F4
F2
F6
F2
2
6
9
9
21
14
3
7
19
11
4
8
20
12
16
22
Busy
Op
dest
Fi
S1
Fj
S2
Fk
No
No
No
No
Yes
Div
F10
F0
F6
F2
F4
F6
F8
22
FU
FU
Qj
FU
Qk
F10 F12
Divide
16
j
34+
45+
F2
F6
F0
F8
k
R2
R3
F4
F2
F6
F2
2
6
9
9
21
14
3
7
19
11
61
16
22
Busy
Op
dest
Fi
S1
Fj
S2
Fk
No
No
No
No
Yes
Div
F10
F0
F6
F2
F4
F6
F8
61
4
8
20
12
FU
FU
Qj
FU
Qk
F10 F12
Fj?
Rj
Fk?
Rk
No
No
...
F30
Divide
17
j
34+
45+
F2
F6
F0
F8
k
R2
R3
F4
F2
F6
F2
2
6
9
9
21
14
3
7
19
11
61
16
4
8
20
12
62
22
Busy
Op
dest
Fi
S1
Fj
S2
Fk
F2
F4
F6
F8
FU
Qj
FU
Qk
Fj?
Rj
Fk?
Rk
...
F30
No
No
No
No
No
F10 F12
FU
62
j
34+
45+
F2
F6
F0
F8
k
R2
R3
F4
F2
F6
F2
2
6
9
9
21
14
3
7
19
11
61
16
4
8
20
12
62
22
Busy
Op
dest
Fi
S1
Fj
S2
Fk
F2
F4
F6
F8
FU
Qk
Fj?
Rj
Fk?
Rk
...
F30
No
No
No
No
No
FU
Qj
F10 F12
FU
18
Scoreboarding Review
LD
LD
MULTD
SUBD
DIVD
ADDD
LD F6, 34(R2)
F6
F2
F0
F8
F10
F6
Iss
Rd
Ex
Wb
LD F2, 45(R3)
34+
45+
F2
F6
F0
F8
R2
R3
F4
F2
F6
F2
Iss
Rd
Ex
Wb
Iss
Iss
Iss
10
11
12
13
Iss
Rd
M1
M2
M3
M4
Iss
Rd
A1
A2
Wb
Iss
Iss
Iss
Iss
Iss
Iss
Iss
Scoreboarding Review
LD
LD
MULTD
SUBD
DIVD
ADDD
F6
F2
F0
F8
F10
F6
34+
45+
F2
F6
F0
F8
R2
R3
F4
F2
F6
F2
11
12
13
14
15
16
17
18
19
20
21
22 . 62
M2
M3
M4
M5
M6
M7
M8
M9
M10
Wb
A2
Wb
Iss
Iss
Iss
Iss
Iss
Iss
Iss
Iss
Iss
Iss
Rd
A1
A2
A2
A2
A2
Iss
Rd
D1
A2
A2
Wb
LD F6, 34(R2)
LD F2, 45(R3)
Wb
19
Scoreboarding Limitations
Number and type of functional units
Number of instruction buffer entries (scoreboard
size)
Amount of application ILP (RAW hazards)
Presence of antidependencies (WAR) and output
dependencies (WAW)
Inorder issue for WAW/Structural Hazards limits
scheduler
WAR stalls are critical for loops (hardware loop
unrolling)
Computer Science 146
David Brooks
Tomasulos Approach
Used in IBM 360/91 Machines (Late 60s)
Similar to scoreboarding, but added renaming
Key concept: Reservation Stations
Very Important Topic
Scheduling ideas led to Alpha 21264, HP PA-8000,
MIPS R10K, Pentium III, Pentium 4, PowerPC 604,
etc
20
Register Renaming
Compiler can eliminate some WAW/WAR false
hazards, but not all
Not enough registers
Hazards across branches (common!) can eliminate on
taken, or fall through but not both
Hazards with itself -- dynamic loops (example later)
ADD
SW
SUB
R3, R1, R2
R3, 0(R4)
R3, R1, R2
21
Register Renaming
Dynamically change register names to eliminate
false dependencies (WAR/WAW hazards)
Architectural registers: Names not Locations
Many more locations (reservation stations or physical
registers) than names (logical or architectural registers)
Dynamically map names to locations
DIV
ADD
SW
SUB
MUL
F0, F2, F4
F6, F0, F8
F6, 0(R1)
F8, F10, F14
F6, F10, F8
DIV
ADD
SW
SUB
MUL
F0, F2, F4
S, F0, F8
S, 0(R1)
T, F10, F14
F6, F10, T
22
23
24
Tomasulo Organization
FP Registers
FP Op
Queue
Load Buffers
From Mem
Load1
Load2
Load3
Load4
Load5
Load6
Store
Buffers
Add1
Add2
Add3
Mult1
Mult2
FP
FP adders
adders
Reservation
Stations
To Mem
FP
FP multipliers
multipliers
Tomasulo Example
Instruction status:
Instruction
LD
F6
LD
F2
MULTD F0
SUBD
F8
DIVD
F10
ADDD
F6
j
34+
45+
F2
F6
F0
F8
k
R2
R3
F4
F2
F6
F2
Exec Write
Issue Comp Result
Reservation Stations:
Time Name Busy
Add1 No
Add2 No
Add3 No
Mult1 No
Mult2 No
Busy Address
Load1
Load2
Load3
Op
S1
Vj
S2
Vk
RS
Qj
RS
Qk
F0
F2
F4
F6
F8
No
No
No
F10
F12
...
F30
FU
25
j
34+
45+
F2
F6
F0
F8
k
R2
R3
F4
F2
F6
F2
Exec Write
Issue Comp Result
Reservation Stations:
Time Name Busy
Add1 No
Add2 No
Add3 No
Mult1 No
Mult2 No
Load1
Load2
Load3
Op
S1
Vj
S2
Vk
F0
F2
F4
FU
Busy Address
RS
Qj
RS
Qk
F6
F8
Yes
No
No
34+R2
F10
F12
...
F30
...
F30
Load1
j
34+
45+
F2
F6
F0
F8
k
R2
R3
F4
F2
F6
F2
Exec Write
Issue Comp Result
Reservation Stations:
Time Name Busy
Add1 No
Add2 No
Add3 No
Mult1 No
Mult2 No
FU
Busy Address
1
2
Op
F0
Load1
Load2
Load3
S1
Vj
S2
Vk
F2
F4
Load2
RS
Qj
RS
Qk
F6
F8
Yes
Yes
No
34+R2
45+R3
F10
F12
Load1
26
j
34+
45+
F2
F6
F0
F8
k
R2
R3
F4
F2
F6
F2
Exec Write
Issue Comp Result
1
2
3
Reservation Stations:
Time Name Busy Op
Add1 No
Add2 No
Add3 No
Mult1 Yes MULTD
Mult2 No
F0
FU
Busy Address
S1
Vj
Load1
Load2
Load3
S2
Vk
RS
Qj
Yes
Yes
No
34+R2
45+R3
F10
F12
RS
Qk
R(F4) Load2
F2
F4
Mult1 Load2
F6
F8
...
F30
Load1
j
34+
45+
F2
F6
F0
F8
k
R2
R3
F4
F2
F6
F2
Exec Write
Issue Comp Result
1
2
3
4
Reservation Stations:
3
4
S1
S2
Busy Address
Load1
Load2
Load3
RS
No
Yes
No
45+R3
F10
F12
RS
Vj
Vk
Qj
Qk
Time Name Busy Op
Add1 Yes SUBD M(A1)
Load2
Add2 No
Add3 No
Mult1 Yes MULTD
R(F4) Load2
Mult2 No
FU
F0
F2
Mult1 Load2
F4
F6
F8
...
F30
M(A1) Add1
27
j
34+
45+
F2
F6
F0
F8
k
R2
R3
F4
F2
F6
F2
Exec Write
Issue Comp Result
1
2
3
4
5
Reservation Stations:
3
4
4
5
S1
S2
Busy Address
Load1
Load2
Load3
RS
RS
Qk
Vj
Vk
Qj
Time Name Busy Op
2 Add1 Yes SUBD M(A1) M(A2)
Add2 No
Add3 No
10 Mult1 Yes MULTD M(A2) R(F4)
Mult2 Yes DIVD
M(A1) Mult1
F0
FU
F2
F4
Mult1 M(A2)
No
No
No
F6
F8
F10
F12
...
F30
...
F30
j
34+
45+
F2
F6
F0
F8
k
R2
R3
F4
F2
F6
F2
Exec Write
Issue Comp Result
1
2
3
4
5
6
Reservation Stations:
3
4
4
5
S1
S2
Busy Address
Load1
Load2
Load3
RS
Vj
Vk
Qj
Time Name Busy Op
1 Add1 Yes SUBD M(A1) M(A2)
Add2 Yes ADDD
M(A2) Add1
Add3 No
9 Mult1 Yes MULTD M(A2) R(F4)
Mult2 Yes DIVD
M(A1) Mult1
FU
F0
F2
Mult1 M(A2)
F4
F6
Add2
No
No
No
RS
Qk
F8
F10
F12
Add1 Mult2
28
j
34+
45+
F2
F6
F0
F8
k
R2
R3
F4
F2
F6
F2
Exec Write
Issue Comp Result
1
2
3
4
5
6
Reservation Stations:
3
4
Busy Address
4
5
Load1
Load2
Load3
S1
S2
RS
Vj
Vk
Qj
Time Name Busy Op
0 Add1 Yes SUBD M(A1) M(A2)
Add2 Yes ADDD
M(A2) Add1
Add3 No
8 Mult1 Yes MULTD M(A2) R(F4)
Mult2 Yes DIVD
M(A1) Mult1
F0
FU
No
No
No
F2
F4
Mult1 M(A2)
F6
Add2
RS
Qk
F8
F10
F12
...
F30
...
F30
Add1 Mult2
j
34+
45+
F2
F6
F0
F8
k
R2
R3
F4
F2
F6
F2
Exec Write
Issue Comp Result
1
2
3
4
5
6
Reservation Stations:
3
4
4
5
S1
S2
Busy Address
Load1
Load2
Load3
RS
Vj
Vk
Qj
Time Name Busy Op
Add1 No
2 Add2 Yes ADDD (M-M) M(A2)
Add3 No
7 Mult1 Yes MULTD M(A2) R(F4)
Mult2 Yes DIVD
M(A1) Mult1
FU
F0
F2
Mult1 M(A2)
F4
F6
No
No
No
RS
Qk
F8
F10
F12
29
j
34+
45+
F2
F6
F0
F8
k
R2
R3
F4
F2
F6
F2
Exec Write
Issue Comp Result
1
2
3
4
5
6
Reservation Stations:
3
4
4
5
S1
S2
Busy Address
Load1
Load2
Load3
RS
Vj
Vk
Qj
Time Name Busy Op
Add1 No
1 Add2 Yes ADDD (M-M) M(A2)
Add3 No
6 Mult1 Yes MULTD M(A2) R(F4)
Mult2 Yes DIVD
M(A1) Mult1
F0
FU
F2
F4
Mult1 M(A2)
F6
No
No
No
RS
Qk
F8
F10
F12
...
F30
...
F30
j
34+
45+
F2
F6
F0
F8
k
R2
R3
F4
F2
F6
F2
Exec Write
Issue Comp Result
1
2
3
4
5
6
Reservation Stations:
3
4
4
5
Busy Address
Load1
Load2
Load3
10
S1
S2
RS
Vj
Vk
Qj
Time Name Busy Op
Add1 No
0 Add2 Yes ADDD (M-M) M(A2)
Add3 No
5 Mult1 Yes MULTD M(A2) R(F4)
Mult2 Yes DIVD
M(A1) Mult1
FU
F0
No
No
No
F2
Mult1 M(A2)
F4
F6
RS
Qk
F8
F10
F12
30
j
34+
45+
F2
F6
F0
F8
k
R2
R3
F4
F2
F6
F2
Exec Write
Issue Comp Result
1
2
3
4
5
6
Reservation Stations:
3
4
4
5
10
11
S1
S2
Busy Address
Load1
Load2
Load3
RS
Vj
Vk
Qj
Time Name Busy Op
Add1 No
Add2 No
Add3 No
4 Mult1 Yes MULTD M(A2) R(F4)
Mult2 Yes DIVD
M(A1) Mult1
F0
FU
11
F2
F4
F6
No
No
No
RS
Qk
F8
F10
F12
...
F30
...
F30
(M-M+M(M-M) Mult2
Mult1 M(A2)
j
34+
45+
F2
F6
F0
F8
k
R2
R3
F4
F2
F6
F2
Exec Write
Issue Comp Result
1
2
3
4
5
6
Reservation Stations:
3
4
4
5
10
11
S1
S2
Busy Address
Load1
Load2
Load3
RS
Vj
Vk
Qj
Time Name Busy Op
Add1 No
Add2 No
Add3 No
3 Mult1 Yes MULTD M(A2) R(F4)
Mult2 Yes DIVD
M(A1) Mult1
FU
F0
F2
Mult1 M(A2)
F4
F6
No
No
No
RS
Qk
F8
F10
F12
(M-M+M(M-M) Mult2
31
j
34+
45+
F2
F6
F0
F8
k
R2
R3
F4
F2
F6
F2
Exec Write
Issue Comp Result
1
2
3
4
5
6
Reservation Stations:
3
4
4
5
10
11
S1
S2
Busy Address
Load1
Load2
Load3
RS
Vj
Vk
Qj
Time Name Busy Op
Add1 No
Add2 No
Add3 No
2 Mult1 Yes MULTD M(A2) R(F4)
Mult2 Yes DIVD
M(A1) Mult1
F0
FU
13
F2
F4
F6
No
No
No
RS
Qk
F8
F10
F12
...
F30
...
F30
(M-M+M(M-M) Mult2
Mult1 M(A2)
j
34+
45+
F2
F6
F0
F8
k
R2
R3
F4
F2
F6
F2
Exec Write
Issue Comp Result
1
2
3
4
5
6
Reservation Stations:
3
4
4
5
10
11
S1
S2
Busy Address
Load1
Load2
Load3
RS
Vj
Vk
Qj
Time Name Busy Op
Add1 No
Add2 No
Add3 No
1 Mult1 Yes MULTD M(A2) R(F4)
Mult2 Yes DIVD
M(A1) Mult1
FU
F0
F2
Mult1 M(A2)
F4
F6
No
No
No
RS
Qk
F8
F10
F12
(M-M+M(M-M) Mult2
32
j
34+
45+
F2
F6
F0
F8
k
R2
R3
F4
F2
F6
F2
Exec Write
Issue Comp Result
1
2
3
4
5
6
Reservation Stations:
3
4
15
7
4
5
10
11
S1
S2
Busy Address
Load1
Load2
Load3
RS
RS
Qk
Vj
Vk
Qj
Time Name Busy Op
Add1 No
Add2 No
Add3 No
0 Mult1 Yes MULTD M(A2) R(F4)
Mult2 Yes DIVD
M(A1) Mult1
F0
FU
15
F2
No
No
No
F4
F6
F8
F10
F12
...
F30
...
F30
(M-M+M(M-M) Mult2
Mult1 M(A2)
j
34+
45+
F2
F6
F0
F8
k
R2
R3
F4
F2
F6
F2
Exec Write
Issue Comp Result
1
2
3
4
5
6
Reservation Stations:
3
4
15
7
4
5
16
8
10
11
S1
S2
Vj
Vk
Time Name Busy Op
Add1 No
Add2 No
Add3 No
Mult1 No
40 Mult2 Yes DIVD M*F4 M(A1)
FU
F0
F2
M*F4 M(A2)
F4
Busy Address
Load1
Load2
Load3
RS
Qj
RS
Qk
F6
F8
No
No
No
F10
F12
(M-M+M(M-M) Mult2
33
j
34+
45+
F2
F6
F0
F8
k
R2
R3
F4
F2
F6
F2
Exec Write
Issue Comp Result
1
2
3
4
5
6
Reservation Stations:
3
4
15
7
4
5
16
8
10
11
S1
S2
Vj
Vk
Time Name Busy Op
Add1 No
Add2 No
Add3 No
Mult1 No
1 Mult2 Yes DIVD M*F4 M(A1)
F0
FU
55
F2
Busy Address
Load1
Load2
Load3
F4
RS
Qj
RS
Qk
F6
F8
No
No
No
F10
F12
...
F30
...
F30
(M-M+M(M-M) Mult2
M*F4 M(A2)
j
34+
45+
F2
F6
F0
F8
k
R2
R3
F4
F2
F6
F2
Exec Write
Issue Comp Result
1
2
3
4
5
6
Reservation Stations:
3
4
15
7
56
10
11
S1
S2
Load1
Load2
Load3
Vj
Vk
Time Name Busy Op
Add1 No
Add2 No
Add3 No
Mult1 No
0 Mult2 Yes DIVD M*F4 M(A1)
FU
F0
F2
M*F4 M(A2)
Busy Address
4
5
16
8
F4
RS
Qj
RS
Qk
F6
F8
No
No
No
F10
F12
(M-M+M(M-M) Mult2
34
j
34+
45+
F2
F6
F0
F8
k
R2
R3
F4
F2
F6
F2
Exec Write
Issue Comp Result
1
2
3
4
5
6
Reservation Stations:
3
4
15
7
56
10
4
5
16
8
57
11
S1
S2
Vj
Vk
Time Name Busy Op
Add1 No
Add2 No
Add3 No
Mult1 No
0 Mult2 Yes DIVD M*F4 M(A1)
56
F0
F2
M*F4 M(A2)
Busy Address
Load1
Load2
Load3
F4
RS
Qj
RS
Qk
F6
F8
No
No
No
F10
F12
...
F30
(M-M+M(M-M) Mult2
j
34+
45+
F2
F6
F0
F8
Exec Write
Issue ComplResult
1
2
3
4
5
6
3
4
15
7
56
10
4
5
16
8
57
11
35
Tomasulo Review
LD
LD
MULTD
SUBD
DIVD
ADDD
1
LD F6, 34(R2)
Iss
LD F2, 45(R3)
F6
F2
F0
F8
F10
F6
5
34+
45+
F2
F6
F0
F8
R2
R3
F4
F2
F6
F2
10
11
12
13
M4
M5
M6
M7
M8
Iss
Iss
Ex
Wb
Iss
Ex
Wb
Iss
Iss
Iss
M1
M2
M3
Iss
Iss
A1
A2
Wb
Iss
Iss
Iss
Iss
Iss
Iss
Iss
Iss
Iss
Iss
A1
A2
Wb
Tomasulo Review
LD
LD
MULTD
SUBD
DIVD
ADDD
F6
F2
F0
F8
F10
F6
34+
45+
F2
F6
F0
F8
11
12
13
14
15
16
M6
M7
M8
M9
M10
Wb
Iss
Iss
Iss
Iss
Iss
Iss
R2
R3
F4
F2
F6
F2
17
18
19
20
21
22 . 57
D1
D2
D3
D4
D5
D6
LD F6, 34(R2)
LD F2, 45(R3)
MULTD F0, F2, F4
SUBD F8, F6, F2
DIVD F10, F0, F6
Wb
36
F0
F4
F4
R1
R1
0
F0
0
R1
Loop
R1
F2
R1
#8
37
Loop Example
Instruction status:
ITER Instruction
1
1
1
2
2
2
LD
MULTD
SD
LD
MULTD
SD
F0
F4
F4
F0
F4
F4
0
F0
0
0
F0
0
R1
F2
R1
R1
F2
R1
Op
Vj
Reservation Stations:
Time
Name Busy
Add1
No
Add2
No
Add3
No
Mult1 No
Mult2 No
Exec Write
Issue CompResult
S1
Vk
S2
Qj
RS
Qk
Busy Addr
Load1
Load2
Load3
Store1
Store2
Store3
No
No
No
No
No
No
Code:
LD
MULTD
SD
SUBI
BNEZ
F0
F4
F4
R1
R1
Fu
0
F0
0
R1
Loop
R1
F2
R1
#8
...
F30
Clock
0
F0
R1
80
F2
F4
F6
F8
F10 F12
Fu
Computer Science 146
David Brooks
LD
MULTD
SD
LD
MULTD
SD
F0
F4
F4
F0
F4
F4
0
F0
0
0
F0
0
R1
F2
R1
R1
F2
R1
Op
Vj
Reservation Stations:
Time
Name Busy
Add1
No
Add2
No
Add3
No
Mult1 No
Mult2 No
Exec Write
Issue CompResult
1
S1
Vk
S2
Qj
RS
Qk
Busy Addr
Fu
Load1
Load2
Load3
Store1
Store2
Store3
Yes
No
No
No
No
No
80
Code:
LD
MULTD
SD
SUBI
BNEZ
F0
F4
F4
R1
R1
0
F0
0
R1
Loop
R1
F2
R1
#8
...
F30
Clock
1
R1
80
F0
F2
F4
F6
F8
F10 F12
Fu Load1
Computer Science 146
David Brooks
38
LD
MULTD
SD
LD
MULTD
SD
F0
F4
F4
F0
F4
F4
0
F0
0
0
F0
0
R1
F2
R1
R1
F2
R1
Reservation Stations:
Time
Name Busy Op
Add1
No
Add2
No
Add3
No
Mult1 Yes Multd
Mult2 No
Vj
Exec Write
Issue CompResult
1
2
S1
Vk
S2
Qj
RS
Qk
R(F2) Load1
Busy Addr
Fu
Load1
Load2
Load3
Store1
Store2
Store3
Yes
No
No
No
No
No
80
Code:
LD
MULTD
SD
SUBI
BNEZ
F0
F4
F4
R1
R1
0
F0
0
R1
Loop
R1
F2
R1
#8
...
F30
Clock
2
F0
R1
80
F2
Fu Load1
F4
F6
F8
F10 F12
Mult1
Computer Science 146
David Brooks
LD
MULTD
SD
LD
MULTD
SD
F0
F4
F4
F0
F4
F4
0
F0
0
0
F0
0
R1
F2
R1
R1
F2
R1
Reservation Stations:
Time
Name Busy Op
Add1
No
Add2
No
Add3
No
Mult1 Yes Multd
Mult2 No
Vj
Exec Write
Issue CompResult
1
2
3
S1
Vk
S2
Qj
RS
Qk
R(F2) Load1
Busy Addr
Fu
Load1
Load2
Load3
Store1
Store2
Store3
Yes
No
No
Yes
No
No
80
80
Mult1
Code:
LD
MULTD
SD
SUBI
BNEZ
F0
F4
F4
R1
R1
0
F0
0
R1
Loop
R1
F2
R1
#8
...
F30
Clock
3
R1
80
F0
Fu Load1
F2
F4
F6
F8
F10 F12
Mult1
39
FP Op
Queue
Load Buffers
From Mem
Load1
Load2
Load3
Load4
Load5
Load6
F0:
F0:Load
Load11
F4:
F4:Mult1
Mult1
addr:
addr:80
80
Store
Buffers
Addr:
Mult1
Addr:80
80 Mult1
Add1
Add2
Add3
Reservation
Stations
FP
FP adders
adders
Load1
To Mem
FP
FP multipliers
multipliers
LD
MULTD
SD
LD
MULTD
SD
F0
F4
F4
F0
F4
F4
0
F0
0
0
F0
0
R1
F2
R1
R1
F2
R1
Reservation Stations:
Time
Name Busy Op
Add1
No
Add2
No
Add3
No
Mult1 Yes Multd
Mult2 No
Vj
Exec Write
Issue CompResult
1
2
3
S1
Vk
S2
Qj
RS
Qk
R(F2) Load1
Busy Addr
Fu
Load1
Load2
Load3
Store1
Store2
Store3
Yes
No
No
Yes
No
No
80
80
Mult1
Code:
LD
MULTD
SD
SUBI
BNEZ
F0
F4
F4
R1
R1
0
F0
0
R1
Loop
R1
F2
R1
#8
...
F30
Clock
4
R1
80
F0
Fu Load1
F2
F4
F6
F8
F10 F12
Mult1
40
LD
MULTD
SD
LD
MULTD
SD
F0
F4
F4
F0
F4
F4
0
F0
0
0
F0
0
R1
F2
R1
R1
F2
R1
Reservation Stations:
Time
Name Busy Op
Add1
No
Add2
No
Add3
No
Mult1 Yes Multd
Mult2 No
Vj
Exec Write
Issue CompResult
1
2
3
S1
Vk
S2
Qj
RS
Qk
R(F2) Load1
Busy Addr
Fu
Load1
Load2
Load3
Store1
Store2
Store3
Yes
No
No
Yes
No
No
80
80
Mult1
Code:
LD
MULTD
SD
SUBI
BNEZ
F0
F4
F4
R1
R1
0
F0
0
R1
Loop
R1
F2
R1
#8
...
F30
Clock
5
F0
R1
72
F2
Fu Load1
F4
F6
F8
F10 F12
Mult1
LD
MULTD
SD
LD
MULTD
SD
F0
F4
F4
F0
F4
F4
0
F0
0
0
F0
0
R1
F2
R1
R1
F2
R1
Reservation Stations:
Time
Name Busy Op
Add1
No
Add2
No
Add3
No
Mult1 Yes Multd
Mult2 No
Vj
Exec Write
Issue CompResult
1
2
3
6
S1
Vk
S2
Qj
RS
Qk
R(F2) Load1
Busy Addr
Fu
Load1
Load2
Load3
Store1
Store2
Store3
Yes
Yes
No
Yes
No
No
80
72
80
Mult1
Code:
LD
MULTD
SD
SUBI
BNEZ
F0
F4
F4
R1
R1
0
F0
0
R1
Loop
R1
F2
R1
#8
...
F30
Clock
6
R1
72
F0
Fu Load2
F2
F4
F6
F8
F10 F12
Mult1
41
LD
MULTD
SD
LD
MULTD
SD
F0
F4
F4
F0
F4
F4
0
F0
0
0
F0
0
R1
F2
R1
R1
F2
R1
Reservation Stations:
Time
Name Busy Op
Add1
No
Add2
No
Add3
No
Mult1 Yes Multd
Mult2 Yes Multd
Vj
Exec Write
Issue CompResult
1
2
3
6
7
S1
Vk
S2
Qj
RS
Qk
R(F2) Load1
R(F2) Load2
Fu
Busy Addr
Load1
Load2
Load3
Store1
Store2
Store3
Yes
Yes
No
Yes
No
No
80
72
80
Mult1
Code:
LD
MULTD
SD
SUBI
BNEZ
F0
F4
F4
R1
R1
0
F0
0
R1
Loop
R1
F2
R1
#8
...
F30
Clock
7
F0
R1
72
F2
Fu Load2
F4
F6
F8
F10 F12
Mult2
LD
MULTD
SD
LD
MULTD
SD
F0
F4
F4
F0
F4
F4
0
F0
0
0
F0
0
R1
F2
R1
R1
F2
R1
1
2
3
6
7
8
Vj
S1
Vk
Reservation Stations:
Time
Exec Write
Issue CompResult
Name Busy Op
Add1
No
Add2
No
Add3
No
Mult1 Yes Multd
Mult2 Yes Multd
S2
Qj
RS
Qk
R(F2) Load1
R(F2) Load2
Fu
Busy Addr
Load1
Load2
Load3
Store1
Store2
Store3
Yes
Yes
No
Yes
Yes
No
80
72
80
72
Mult1
Mult2
Code:
LD
MULTD
SD
SUBI
BNEZ
F0
F4
F4
R1
R1
0
F0
0
R1
Loop
R1
F2
R1
#8
...
F30
Clock
8
R1
72
F0
Fu Load2
F2
F4
F6
F8
F10 F12
Mult2
42
FP Op
Queue
Load Buffers
From Mem
F0:
F0:Load2
Load2
F4:
F4:Mult2
Mult2
Load1 addr:
addr:80
80
Load2 addr:
addr:72
72
Load3
Load4
Load5
Load6
Store
Buffers
Addr:
Mult1
Addr:80
80 Mult1
Addr:
Mult2
Addr:72
72 Mult2
Add1
Add2
Add3
Reservation
Stations
FP
FP adders
adders
Load1
Load2
To Mem
FP
FP multipliers
multipliers
LD
MULTD
SD
LD
MULTD
SD
F0
F4
F4
F0
F4
F4
0
F0
0
0
F0
0
R1
F2
R1
R1
F2
R1
1
2
3
6
7
8
Vj
S1
Vk
S2
Qj
Reservation Stations:
Time
Exec Write
Issue CompResult
Name Busy Op
Add1
No
Add2
No
Add3
No
Mult1 Yes Multd
Mult2 Yes Multd
RS
Qk
R(F2) Load1
R(F2) Load2
Busy Addr
Fu
Load1
Load2
Load3
Store1
Store2
Store3
Yes
Yes
No
Yes
Yes
No
80
72
80
72
Mult1
Mult2
Code:
LD
MULTD
SD
SUBI
BNEZ
F0
F4
F4
R1
R1
0
F0
0
R1
Loop
R1
F2
R1
#8
...
F30
Clock
9
R1
72
F0
Fu Load2
F2
F4
F6
F8
F10 F12
Mult2
43
LD
MULTD
SD
LD
MULTD
SD
F0
F4
F4
F0
F4
F4
0
F0
0
0
F0
0
R1
F2
R1
R1
F2
R1
Exec Write
Issue CompResult
1
2
3
6
7
8
10
10
Busy Addr
Load1
Load2
Load3
Store1
Store2
Store3
No
Yes
No
Yes
Yes
No
Code:
LD
MULTD
SD
SUBI
BNEZ
F0
F4
F4
R1
R1
Fu
72
80
72
Mult1
Mult2
0
F0
0
R1
Loop
R1
F2
R1
#8
...
F30
Reservation Stations:
Time
S1
S2
RS
Name Busy Op
Vj
Vk
Qj
Qk
Add1
No
Add2
No
Add3
No
Mult1 Yes Multd M[80] R(F2)
Mult2 Yes Multd
R(F2) Load2
Clock
10
F0
R1
64
F2
Fu Load2
F4
F6
F8
F10 F12
Mult2
LD
MULTD
SD
LD
MULTD
SD
F0
F4
F4
F0
F4
F4
0
F0
0
0
F0
0
R1
F2
R1
R1
F2
R1
Exec Write
Issue CompResult
1
2
3
6
7
8
Reservation Stations:
Time
3
4
S1
Name Busy Op
Vj
Vk
Add1
No
Add2
No
Add3
No
Mult1 Yes Multd M[80] R(F2)
Mult2 Yes Multd M[72] R(F2)
10
10
11
S2
Qj
RS
Qk
Busy Addr
Load1
Load2
Load3
Store1
Store2
Store3
No
No
Yes
Yes
Yes
No
Code:
LD
MULTD
SD
SUBI
BNEZ
F0
F4
F4
R1
R1
64
80
72
Fu
Mult1
Mult2
0
F0
0
R1
Loop
R1
F2
R1
#8
...
F30
Clock
11
R1
64
F0
Fu Load3
F2
F4
F6
F8
F10 F12
Mult2
44
LD
MULTD
SD
LD
MULTD
SD
F0
F4
F4
F0
F4
F4
0
F0
0
0
F0
0
R1
F2
R1
R1
F2
R1
Exec Write
Issue CompResult
1
2
3
6
7
8
Reservation Stations:
Time
2
3
S1
Name Busy Op
Vj
Vk
Add1
No
Add2
No
Add3
No
Mult1 Yes Multd M[80] R(F2)
Mult2 Yes Multd M[72] R(F2)
10
10
11
S2
Qj
RS
Qk
Busy Addr
Load1
Load2
Load3
Store1
Store2
Store3
No
No
Yes
Yes
Yes
No
Code:
LD
MULTD
SD
SUBI
BNEZ
F0
F4
F4
R1
R1
64
80
72
Fu
Mult1
Mult2
0
F0
0
R1
Loop
R1
F2
R1
#8
...
F30
Clock
12
F0
R1
64
F2
Fu Load3
F4
F6
F8
F10 F12
Mult2
LD
MULTD
SD
LD
MULTD
SD
F0
F4
F4
F0
F4
F4
0
F0
0
0
F0
0
R1
F2
R1
R1
F2
R1
Exec Write
Issue CompResult
1
2
3
6
7
8
Reservation Stations:
Time
1
2
S1
Name Busy Op
Vj
Vk
Add1
No
Add2
No
Add3
No
Mult1 Yes Multd M[80] R(F2)
Mult2 Yes Multd M[72] R(F2)
10
10
11
S2
Qj
RS
Qk
Busy Addr
Load1
Load2
Load3
Store1
Store2
Store3
No
No
Yes
Yes
Yes
No
Code:
LD
MULTD
SD
SUBI
BNEZ
F0
F4
F4
R1
R1
64
80
72
Fu
Mult1
Mult2
0
F0
0
R1
Loop
R1
F2
R1
#8
...
F30
Clock
13
R1
64
F0
Fu Load3
F2
F4
F6
F8
F10 F12
Mult2
Computer Science 146
David Brooks
45
LD
MULTD
SD
LD
MULTD
SD
F0
F4
F4
F0
F4
F4
0
F0
0
0
F0
0
R1
F2
R1
R1
F2
R1
Exec Write
Issue CompResult
1
2
3
6
7
8
Reservation Stations:
Time
0
1
S1
Name Busy Op
Vj
Vk
Add1
No
Add2
No
Add3
No
Mult1 Yes Multd M[80] R(F2)
Mult2 Yes Multd M[72] R(F2)
9
14
10
10
11
S2
Qj
RS
Qk
Busy Addr
Load1
Load2
Load3
Store1
Store2
Store3
No
No
Yes
Yes
Yes
No
Code:
LD
MULTD
SD
SUBI
BNEZ
F0
F4
F4
R1
R1
64
80
72
Fu
Mult1
Mult2
0
F0
0
R1
Loop
R1
F2
R1
#8
...
F30
Clock
14
F0
R1
64
F2
Fu Load3
F4
F6
F8
F10 F12
Mult2
LD
MULTD
SD
LD
MULTD
SD
F0
F4
F4
F0
F4
F4
0
F0
0
0
F0
0
R1
F2
R1
R1
F2
R1
Exec Write
Issue CompResult
1
2
3
6
7
8
Reservation Stations:
Time
S1
Name Busy Op
Vj
Vk
Add1
No
Add2
No
Add3
No
Mult1 No
Mult2 Yes Multd M[72] R(F2)
9
14
10
15
10
15
11
S2
Qj
RS
Qk
Busy Addr
Load1
Load2
Load3
Store1
Store2
Store3
No
No
Yes
Yes
Yes
No
Code:
LD
MULTD
SD
SUBI
BNEZ
F0
F4
F4
R1
R1
64
80
72
Fu
[80]*R2
Mult2
0
F0
0
R1
Loop
R1
F2
R1
#8
...
F30
Clock
15
R1
64
F0
Fu Load3
F2
F4
F6
F8
F10 F12
Mult2
46
LD
MULTD
SD
LD
MULTD
SD
F0
F4
F4
F0
F4
F4
0
F0
0
0
F0
0
R1
F2
R1
R1
F2
R1
1
2
3
6
7
8
Vj
S1
Vk
Reservation Stations:
Time
Exec Write
Issue CompResult
Name Busy Op
Add1
No
Add2
No
Add3
No
Mult1 Yes Multd
Mult2 No
9
14
10
15
10
15
11
16
S2
Qj
RS
Qk
R(F2) Load3
Busy Addr
Load1
Load2
Load3
Store1
Store2
Store3
No
No
Yes
Yes
Yes
No
Code:
LD
MULTD
SD
SUBI
BNEZ
F0
F4
F4
R1
R1
64
80
72
Fu
[80]*R2
[72]*R2
0
F0
0
R1
Loop
R1
F2
R1
#8
...
F30
Clock
16
F0
R1
64
F2
Fu Load3
F4
F6
F8
F10 F12
Mult1
Computer Science 146
David Brooks
LD
MULTD
SD
LD
MULTD
SD
F0
F4
F4
F0
F4
F4
0
F0
0
0
F0
0
R1
F2
R1
R1
F2
R1
1
2
3
6
7
8
Vj
S1
Vk
Reservation Stations:
Time
Exec Write
Issue CompResult
Name Busy Op
Add1
No
Add2
No
Add3
No
Mult1 Yes Multd
Mult2 No
9
14
10
15
10
15
11
16
S2
Qj
RS
Qk
R(F2) Load3
Busy Addr
Fu
Load1
Load2
Load3
Store1
Store2
Store3
No
No
Yes
Yes
Yes
Yes
64
80
72
64
Code:
LD
MULTD
SD
SUBI
BNEZ
F0
F4
F4
R1
R1
0
F0
0
R1
Loop
R1
F2
R1
#8
...
F30
[80]*R2
[72]*R2
Mult1
Clock
17
R1
64
F0
Fu Load3
F2
F4
F6
F8
F10 F12
Mult1
Computer Science 146
David Brooks
47
LD
MULTD
SD
LD
MULTD
SD
F0
F4
F4
F0
F4
F4
0
F0
0
0
F0
0
R1
F2
R1
R1
F2
R1
1
2
3
6
7
8
9
14
18
10
15
11
16
Vj
S1
Vk
S2
Qj
RS
Qk
Reservation Stations:
Time
Exec Write
Issue CompResult
Name Busy Op
Add1
No
Add2
No
Add3
No
Mult1 Yes Multd
Mult2 No
10
15
R(F2) Load3
Busy Addr
Fu
Load1
Load2
Load3
Store1
Store2
Store3
No
No
Yes
Yes
Yes
Yes
64
80
72
64
Code:
LD
MULTD
SD
SUBI
BNEZ
F0
F4
F4
R1
R1
0
F0
0
R1
Loop
R1
F2
R1
#8
...
F30
[80]*R2
[72]*R2
Mult1
Clock
18
F0
R1
64
F2
Fu Load3
F4
F6
F8
F10 F12
Mult1
Computer Science 146
David Brooks
LD
MULTD
SD
LD
MULTD
SD
F0
F4
F4
F0
F4
F4
0
F0
0
0
F0
0
R1
F2
R1
R1
F2
R1
1
2
3
6
7
8
9
14
18
10
15
19
10
15
19
11
16
Vj
S1
Vk
S2
Qj
RS
Qk
Reservation Stations:
Time
Exec Write
Issue CompResult
Name Busy Op
Add1
No
Add2
No
Add3
No
Mult1 Yes Multd
Mult2 No
R(F2) Load3
Busy Addr
Fu
Load1
Load2
Load3
Store1
Store2
Store3
No
No
Yes
No
Yes
Yes
72
64
[72]*R2
Mult1
Code:
LD
MULTD
SD
SUBI
BNEZ
F0
F4
F4
R1
R1
0
F0
0
R1
Loop
R1
F2
R1
#8
...
F30
64
Clock
19
R1
64
F0
Fu Load3
F2
F4
F6
F8
F10 F12
Mult1
Computer Science 146
David Brooks
48
LD
MULTD
SD
LD
MULTD
SD
F0
F4
F4
F0
F4
F4
Exec Write
Issue CompResult
0
F0
0
0
F0
0
R1
F2
R1
R1
F2
R1
1
2
3
6
7
8
9
14
18
10
15
19
10
15
19
11
16
20
Vj
S1
Vk
S2
Qj
RS
Qk
Reservation Stations:
Time
Name Busy Op
Add1
No
Add2
No
Add3
No
Mult1 Yes Multd
Mult2 No
R(F2) Load3
Busy Addr
Fu
Load1
Load2
Load3
Store1
Store2
Store3
No
No
Yes
No
No
Yes
64
Mult1
Code:
LD
MULTD
SD
SUBI
BNEZ
F0
F4
F4
R1
R1
0
F0
0
R1
Loop
R1
F2
R1
#8
...
F30
64
Clock
20
R1
64
F0
F2
Fu Load3
F4
F6
F8
F10 F12
Mult1
Computer Science 146
David Brooks
Tomasulo Review
Reservation Stations
Load/Store reordering
Load address compared with store address in store buffer
Computer Science 146
David Brooks
49
50
Assume
4 Architected/Logical Registers (F1,F2,F3,F4) names
8 Physical/Rename Registers (P1P8) locations
R1, R2, R4
R4, R1, R2
R3, R1, R3
R1, R3, R2
R1, R2, R4
R4, R1, R2
R3, R1, R3
R1, R3, R2
Map Table
R1
R2
R3
R4
P1
P2
P3
P4
P5
P2
P3
P4
P5
P2
P3
P6
P5
P2
P7
P6
P8
P2
P7
P6
ADD
SUB
ADD
ADD
P5, P2, P4
P6, P5, P2
P7, P5, P3
P8, P7, P2
51
52