Computer Architecture 計算機結構: Scoreboard
Computer Architecture 計算機結構: Scoreboard
Lecture 4
Scoreboard
(Appendix A in textbook)
Ping-Liang Lai ( )
Scoreboard: a Bookkeeping
Technique
Out-of-order execution divides ID stage
No forwarding!
Imprecise interrupt/exception model for now.
Registers
FP
FPMult
Mult
FP
FPMult
Mult
FP
FPDivide
Divide
FP
FPAdd
Add
Integer
Integer
SCOREBOARD
SCOREBOARD
Functional Units
Memory
Computer Architecture Ch4-3
Scoreboard Implications
Out-of-order completion WAR, WAW hazards?
Solutions for WAR
Detect hazard and stall issue of new instruction until other instruction
completes.
No register renaming!
Need to have multiple instructions in execution phase multiple
(ID2)
All real dependencies (RAW hazards) resolved in this stage, since we wait
for instructions to write back data;
No forwarding of data in this model!
The functional unit begins execution upon receiving operands. When the
result is ready, it notifies the scoreboard that it has completed execution.
CDC 6600 scoreboard would stall SUBD until ADDD reads operands.
Busy:
Op:
Fi:
Destination register
Fj,Fk:
Source-register numbers
Qj,Qk:
Rj,Rk:
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
S1
Fj
S2
Fk
F2
F4
F6
F8
FU
Qj
FU
Qk
Fj?
Rj
Fk?
Rk
...
F30
No
No
No
No
No
Op
dest
Fi
F10 F12
j
34+
45+
F2
F6
F0
F8
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
Integer
F8 F10 F12
Fk?
Rk
Yes
...
F30
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
Integer
F8 F10 F12
Fk?
Rk
Yes
...
F30
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
Issue MULT?
FU
S1
Fj
S2
Fk
FU
Qj
FU
Qk
Fj?
Rj
R2
F6
Integer
F8 F10 F12
Fk?
Rk
No
...
F30
j
34+
45+
F2
F6
F0
F8
k
R2
R3
F4
F2
F6
F2
Op
dest
Fi
S1
Fj
S2
Fk
FU
Qk
Fj?
Rj
Fk?
Rk
F2
F4
F6
F8 F10 F12
...
F30
Busy
No
No
No
No
No
FU
FU
Qj
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
Integer
S2
Fk
FU
Qj
FU
Qk
Fj?
Rj
R3
F6
F8 F10 F12
Fk?
Rk
Yes
...
F30
j
34+
45+
F2
F6
F0
F8
k
R2
R3
F4
F2
F6
F2
2
6
S1
Fj
S2
Fk
R3
F4
Busy
Op
dest
Fi
Yes
Yes
No
No
No
Load
Mult
F2
F0
F2
F2
F4
F6
FU Mult1 Integer
FU
Qj
FU
Qk
Fj?
Rj
Fk?
Rk
Integer
No
Yes
Yes
F8 F10 F12
...
F30
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
Yes
Yes
No
Yes
No
Load
Mult
F2
F0
F2
R3
F4
Sub
F8
F6
F2
F2
F4
F6
FU Mult1 Integer
FU
Qj
FU
Qk
Integer
Integer
F8 F10 F12
Add
Fj?
Rj
Fk?
Rk
No
No
Yes
Yes
No
...
F30
(First half
of CC)
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
2
6
3
7
Busy
Op
dest
Fi
S1
Fj
S2
Fk
Yes
Yes
No
Yes
Yes
Load
Mult
F2
F0
F2
R3
F4
Sub
Div
F8
F10
F6
F0
F2
F6
F2
F4
F6
FU Mult1 Integer
FU
Qj
FU
Qk
Fj?
Rj
Fk?
Rk
No
No
Yes
Mult1
Yes
No
No
Yes
F8 F10 F12
...
F30
Integer
Integer
Add Divide
(Second
half of CC)
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
2
6
3
7
4
8
Op
dest
Fi
S1
Fj
S2
Fk
Mult
F0
F2
Sub
Div
F8
F10
F6
F0
F2
F4
F6
Busy
No
Yes
No
Yes
Yes
FU Mult1
FU
Qj
Fj?
Rj
Fk?
Rk
F4
Yes
Yes
F2
F6
Mult1
Yes
No
Yes
Yes
F8 F10 F12
...
F30
Add Divide
FU
Qk
j
34+
45+
F2
F6
F0
F8
k
R2
R3
F4
F2
F6
F2
2
6
9
9
3
7
4
8
Op
dest
Fi
S1
Fj
S2
Fk
Mult
F0
F2
Sub
Div
F8
F10
F6
F0
F2
F4
F6
Note
Remaining
Busy
No
Yes
No
Yes
Yes
FU Mult1
FU
Qj
FU
Qk
Fj?
Rj
Fk?
Rk
F4
Yes
Yes
F2
F6
Mult1
Yes
No
Yes
Yes
F8 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
Op
dest
Fi
S1
Fj
S2
Fk
Mult
F0
F2
Sub
Div
F8
F10
F6
F0
F2
F4
F6
Busy
No
Yes
No
Yes
Yes
FU Mult1
FU
Qj
Fj?
Rj
Fk?
Rk
F4
No
No
F2
F6
Mult1
No
No
No
Yes
F8 F10 F12
...
F30
Add Divide
FU
Qk
j
34+
45+
F2
F6
F0
F8
k
R2
R3
F4
F2
F6
F2
2
6
9
9
11
Op
dest
Fi
S1
Fj
S2
Fk
Mult
F0
F2
Sub
Div
F8
F10
F6
F0
F2
F4
F6
Busy
No
Yes
No
Yes
Yes
FU Mult1
3
7
4
8
FU
Qj
Fj?
Rj
Fk?
Rk
F4
No
No
F2
F6
Mult1
No
No
No
Yes
F8 F10 F12
...
F30
Add Divide
FU
Qk
j
34+
45+
F2
F6
F0
F8
k
R2
R3
F4
F2
F6
F2
2
6
9
9
3
7
4
8
11
12
Op
dest
Fi
S1
Fj
S2
Fk
Mult
F0
F2
F4
Div
F10
F0
F6
F2
F4
F6
Busy
No
Yes
No
No
Yes
FU Mult1
FU
Qj
Fj?
Rj
Fk?
Rk
No
No
Mult1
No
Yes
F8 F10 F12
...
F30
Divide
FU
Qk
j
34+
45+
F2
F6
F0
F8
k
R2
R3
F4
F2
F6
F2
2
6
9
9
3
7
4
8
11
12
Op
dest
Fi
S1
Fj
S2
Fk
Mult
F0
F2
Add
Div
F6
F10
F8
F0
F2
F4
Busy
No
Yes
No
Yes
Yes
FU Mult1
FU
Qj
FU
Qk
Fj?
Rj
Fk?
Rk
F4
No
No
F2
F6
Mult1
Yes
No
Yes
Yes
F6
F8 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
Op
dest
Fi
S1
Fj
S2
Fk
Mult
F0
F2
Add
Div
F6
F10
F8
F0
F2
F4
14
Busy
No
Yes
No
Yes
Yes
FU Mult1
FU
Qj
FU
Qk
Fj?
Rj
Fk?
Rk
F4
No
No
F2
F6
Mult1
Yes
No
Yes
Yes
F6
F8 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
Op
dest
Fi
S1
Fj
S2
Fk
Mult
F0
F2
Add
Div
F6
F10
F8
F0
F2
F4
14
Busy
No
Yes
No
Yes
Yes
FU Mult1
FU
Qj
FU
Qk
Fj?
Rj
Fk?
Rk
F4
No
No
F2
F6
Mult1
No
No
No
Yes
F6
F8 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
14
16
Op
dest
Fi
S1
Fj
S2
Fk
Mult
F0
F2
Add
Div
F6
F10
F8
F0
F2
F4
Busy
No
Yes
No
Yes
Yes
FU Mult1
FU
Qj
FU
Qk
Fj?
Rj
Fk?
Rk
F4
No
No
F2
F6
Mult1
No
No
No
Yes
F6
F8 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
14
16
Op
dest
Fi
S1
Fj
S2
Fk
Mult
F0
F2
Add
Div
F6
F10
F8
F0
F2
F4
Busy
No
Yes
No
Yes
Yes
FU Mult1
WAR Hazard!
Fj?
Rj
Fk?
Rk
F4
No
No
F2
F6
Mult1
No
No
No
Yes
F6
F8 F10 F12
...
F30
Add
Divide
FU
Qj
FU
Qk
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
Op
dest
Fi
S1
Fj
S2
Fk
Mult
F0
F2
Add
Div
F6
F10
F8
F0
F2
F4
Busy
No
Yes
No
Yes
Yes
FU Mult1
FU
Qj
FU
Qk
Fj?
Rj
Fk?
Rk
F4
No
No
F2
F6
Mult1
No
No
No
Yes
F6
F8 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
19
11
14
16
Op
dest
Fi
S1
Fj
S2
Fk
Mult
F0
F2
Add
Div
F6
F10
F8
F0
F2
F4
Busy
No
Yes
No
Yes
Yes
FU Mult1
4
8
12
FU
Qj
FU
Qk
Fj?
Rj
Fk?
Rk
F4
No
No
F2
F6
Mult1
No
No
No
Yes
F6
F8 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
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 F10 F12
Add
Divide
20
FU
4
8
20
12
FU
Qj
FU
Qk
Fj?
Rj
Fk?
Rk
No
Yes
No
Yes
...
F30
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
Busy
Op
dest
Fi
No
No
No
Yes
Yes
Add
Div
F6
F10
F8
F0
F2
F4
F6
F8 F10 F12
Add
Divide
Time Name
Integer
Mult1
Mult2
Add
Divide
21
FU
S1
Fj
S2
Fk
F2
F6
FU
Qj
FU
Qk
Fj?
Rj
Fk?
Rk
No
Yes
No
Yes
...
F30
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
S1
Fj
S2
Fk
F6
Busy
Op
dest
Fi
No
No
No
No
Yes
Div
F10
F0
F2
F4
F6
Time Name
Integer
Mult1
Mult2
Add
39 Divide
22
FU
FU
Qj
FU
Qk
F8 F10 F12
Divide
Fj?
Rj
Fk?
Rk
No
No
...
F30
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
Busy
Op
dest
Fi
S1
Fj
S2
Fk
No
No
No
No
Yes
Div
F10
F0
F6
F2
F4
F6
61
FU
22
FU
Qj
FU
Qk
F8 F10 F12
Divide
Fj?
Rj
Fk?
Rk
No
No
...
F30
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
Op
dest
Fi
S1
Fj
S2
Fk
FU
Qk
Fj?
Rj
Fk?
Rk
F2
F4
F6
F8 F10 F12
...
F30
Busy
No
No
No
No
No
FU
FU
Qj
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
Op
dest
Fi
S1
Fj
S2
Fk
FU
Qk
Fj?
Rj
Fk?
Rk
F2
F4
F6
F8 F10 F12
...
F30
Busy
No
No
No
No
No
FU
Qj
FU
No forwarding hardware;
Limited to instructions in basic block (small window);
Small number of functional units (structural hazards), especially;
;integer/load store units;
Do not issue on structural hazards;
Wait for WAR hazards;
Prevent WAW hazards.