Upload
yovela
View
29
Download
0
Tags:
Embed Size (px)
DESCRIPTION
MS108 Computer System I. Lecture 6 Scoreboarding Prof. Xiaoyao Liang 2014/3/17. Complex Pipeline. Floating Point ISA. FPU. Pipeline FPU. FP Multiplier Pipeline. Memory Timing. Pipeline Timing. Structure Hazard. Data Hazards. Detecting the Hazards. Memory Hazards. - PowerPoint PPT Presentation
Citation preview
MS108 Computer System I
Lecture 6
Scoreboarding
Prof. Xiaoyao Liang
2015/4/31
Complex PipelineComplex Pipeline
2
3
Floating Point ISAFloating Point ISA
4
FPUFPU
5
Pipeline FPUPipeline FPU
FP Multiplier PipelineFP Multiplier Pipeline
6
Memory TimingMemory Timing
7
Pipeline TimingPipeline Timing
8
Structure HazardStructure Hazard
9
Data HazardsData Hazards
10
11
Detecting the HazardsDetecting the Hazards
12
Memory HazardsMemory Hazards
13
Instruction SchedulingInstruction Scheduling
14
Dynamic PipelineDynamic Pipeline
15
Dynamic SchedulingDynamic Scheduling
Two SolutionsTwo Solutions
16
CDC 6600, Seymour Cray, CDC 6600, Seymour Cray, 1963 1963
17
ScoreboardScoreboard
18
Hazards for Dynamic Hazards for Dynamic PipelinePipeline
19
20
ScoreboardScoreboard
21
MIPS ScoreboardMIPS Scoreboard
22
Pipeline with ScoreboardPipeline with Scoreboard
23
Scoreboard ComponentsScoreboard Components
24
ExampleExample
25
Dependency GraphDependency Graph
26
Scoreboard Example: Cycle 1Scoreboard Example: Cycle 1
Instruction status Read Execution Write
Instruction j k Issue operandscompleteResult
L.D F6 34+ R2 1L.D F2 45+ R3MUL.DF0 F2 F4SUB.DF8 F6 F2DIV.DF10 F0 F6ADD.DF6 F8 F2
Functional unit status dest S1 S2 FU for j FU for k Fj? Fk?Time Name Busy Op Fi Fj Fk Qj Qk Rj Rk
Integer Yes Load F6 R2 YesMult1 NoMult2 NoAdd NoDivide No
Register result status
Clock F0 F2 F4 F6 F8 F10 F12 ... F301 FU Integer
FP Latency: Add = 2 cycles, Multiply = 10, Divide = 40
27
Scoreboard Example: Cycle 2Scoreboard Example: Cycle 2
FP Latency: Add = 2 cycles, Multiply = 10, Divide = 40
Instruction status Read ExecutionWrite
Instruction j k Issue operandscompleteResult
L.D F6 34+ R2 1L.D F2 45+ R3MUL.DF0 F2 F4SUB.DF8 F6 F2DIV.DF10 F0 F6ADD.DF6 F8 F2
Functional unit status dest S1 S2 FU for j FU for k Fj? Fk?Time Name Busy Op Fi Fj Fk Qj Qk Rj Rk
Integer Yes Load F6 R2 YesMult1 NoMult2 NoAdd NoDivide No
Register result status
Clock F0 F2 F4 F6 F8 F10 F12 ... F302 FU Integer
2
• Issue second L.D? No, stall on structural hazard
28
Scoreboard Example: Cycle 3Scoreboard Example: Cycle 3
• Issue MUL.D? In-order issue !!!
Instruction status Read ExecutionWrite
Instruction j k Issue operandscompleteResult
L.D F6 34+ R2 1 2 3L.D F2 45+ R3MUL.DF0 F2 F4SUB.DF8 F6 F2DIV.DF10 F0 F6ADD.DF6 F8 F2
Functional unit status dest S1 S2 FU for j FU for k Fj? Fk?Time Name Busy Op Fi Fj Fk Qj Qk Rj Rk
Integer Yes Load F6 R2 YesMult1 NoMult2 NoAdd NoDivide No
Register result status
Clock F0 F2 F4 F6 F8 F10 F12 ... F303 FU Integer
?
29
Scoreboard Example: Cycle 4Scoreboard Example: Cycle 4
Instruction status Read ExecutionWrite
Instruction j k Issue operandscompleteResult
L.D F6 34+ R2 1 2 3 4L.D F2 45+ R3MUL.DF0 F2 F4SUB.DF8 F6 F2DIV.DF10 F0 F6ADD.DF6 F8 F2
Functional unit status dest S1 S2 FU for j FU for k Fj? Fk?Time Name Busy Op Fi Fj Fk Qj Qk Rj Rk
Integer Yes Load F6 R2 YesMult1 NoMult2 NoAdd NoDivide No
Register result status
Clock F0 F2 F4 F6 F8 F10 F12 ... F304 FU Integer
30
Instruction status Read ExecutionWrite
Instruction j k Issue operandscompleteResult
F6 34+ R2 1 2 3 4F2 45+ R3F0 F2 F4F8 F6 F2F10 F0 F6
L.DL.DMUL.DSUB.DDIV.DADD.DF6 F8 F2
Functional unit status dest S1 S2 FU for j FU for k Fj? Fk?Time Name Busy Op Fi Fj Fk Qj Qk Rj Rk
Integer Yes Load F2 R3 YesMult1 NoMult2 NoAdd NoDivide No
Register result status
Clock F0 F2 F4 F6 F8 F10 F12 ... F305 FU Integer
5
Scoreboard Example: Cycle 5Scoreboard Example: Cycle 5
31
Instruction status Read ExecutionWrite
Instruction j k Issue operandscompleteResult
F6 34+ R2 1 2 3 4F2 45+ R3F0 F2 F4F8 F6 F2F10 F0 F6F6 F8 F2
Functional unit status dest S1 S2 FU for j FU for k Fj? Fk?Time Name Busy Op Fi Fj Fk Qj Qk Rj Rk
Integer Yes Load F2 R3 YesMult1Mult2 NoAdd NoDivide No
Register result status
Clock F0 F2 F4 F6 F8 F10 F12 ... F306 FU Integer
Yes Mult F0 F2 F4 Integer No Yes
5 6 6
Mult1
L.DL.DMUL.DSUB.DDIV.DADD.D
Scoreboard Example: Cycle 6Scoreboard Example: Cycle 6
32
Scoreboard Example: Cycle 7Scoreboard Example: Cycle 7
Instruction status Read ExecutionWrite
Instruction j k Issue operandscompleteResult
F6 34+ R2 1 2 3 4F2 45+ R3F0 F2 F4F8 F6 F2F10 F0 F6F6 F8 F2
Functional unit status dest S1 S2 FU for j FU for k Fj? Fk?Time Name Busy Op Fi Fj Fk Qj Qk Rj Rk
Integer Yes Load F2 R3 YesMult1Mult2 NoAddDivide No
Register result status
Clock F0 F2 F4 F6 F8 F10 F12 ... F307 FU Integer
5 6 76
Yes Mult F0 F2 F4 Integer No Yes
Yes Sub F8 F6 F2 Integer Yes No
Mult1 Add
7
• Read multiply operands?
L.DL.DMUL.DSUB.DDIV.DADD.D
33
Scoreboard Example: Cycle Scoreboard Example: Cycle 8a8a(First half of cycle 8)(First half of cycle 8)Instruction status Read ExecutionWrite
Instruction j k Issue operandscompleteResult
F6 34+ R2 1 2 3 4F2 45+ R3F0 F2 F4F8 F6 F2F10 F0 F6F6 F8 F2
Functional unit status dest S1 S2 FU for j FU for k Fj? Fk?Time Name Busy Op Fi Fj Fk Qj Qk Rj Rk
Integer Yes Load F2 R3 YesMult1Mult2 NoAddDivide
Register result status
Clock F0 F2 F4 F6 F8 F10 F12 ... F308 FU Integer
5 6 76
Yes Mult F0 F2 F4 Integer No Yes
Yes Sub F8 F6 F2 Integer Yes No
Mult1 Add Divide
78
Yes Div F10 F0 F6 Mult1 No Yes
L.DL.DMUL.DSUB.DDIV.DADD.D
34
Scoreboard Example: Cycle Scoreboard Example: Cycle 8b8b(Second half of cycle 8)(Second half of cycle 8)
Instruction status Read ExecutionWrite
Instruction j k Issue operandscompleteResult
F6 34+ R2 1 2 3 4F2 45+ R3F0 F2 F4F8 F6 F2F10 F0 F6F6 F8 F2
Functional unit status dest S1 S2 FU for j FU for k Fj? Fk?Time Name Busy Op Fi Fj Fk Qj Qk Rj Rk
Integer NoMult1Mult2 NoAddDivide
Register result status
Clock F0 F2 F4 F6 F8 F10 F12 ... F308 FU
5 6 7 86
Yes Mult F0 F2 F4 Yes Yes
Yes Sub F8 F6 F2 Yes Yes
Mult1 Add Divide
78
Yes Div F10 F0 F6 Mult1 No Yes
L.DL.DMUL.DSUB.DDIV.DADD.D
35
Scoreboard Example: Cycle 9Scoreboard Example: Cycle 9FP Latency: Add = 2 cycles, Multiply = 10, Divide = 40
Instruction status Read ExecutionWrite
Instruction j k Issue operandscompleteResult
F6 34+ R2 1 2 3 4F2 45+ R3F0 F2 F4F8 F6 F2F10 F0 F6F6 F8 F2
Functional unit status dest S1 S2 FU for j FU for k Fj? Fk?Time Name Busy Op Fi Fj Fk Qj Qk Rj Rk
Integer No10 Mult1
Mult2 No2 Add
DivideRegister result status
Clock F0 F2 F4 F6 F8 F10 F12 ... F309 FU
5 6 7 86 9
Yes Mult F0 F2 F4 Yes Yes
Yes Sub F8 F6 F2 Yes Yes
Mult1 Add Divide
7 98
Yes Div F10 F0 F6 Mult1 No Yes
• Read operands for MUL.D & SUB.D? Issue ADD.D?
?
L.DL.DMUL.DSUB.DDIV.DADD.D
36
Scoreboard Example: Cycle Scoreboard Example: Cycle 1111
Instruction status Read ExecutionWrite
Instruction j k Issue operandscompleteResult
F6 34+ R2 1 2 3 4F2 45+ R3F0 F2 F4F8 F6 F2F10 F0 F6F6 F8 F2
Functional unit status dest S1 S2 FU for j FU for k Fj? Fk?Time Name Busy Op Fi Fj Fk Qj Qk Rj Rk
Integer No8 Mult1
Mult2 No0 Add
DivideRegister result status
Clock F0 F2 F4 F6 F8 F10 F12 ... F3011 FU
5 6 7 86 9
Yes Mulu F0 F2 F4 Yes Yes
Yes Sub F8 F6 F2 Yes Yes
Mult1 Add Divide
7 9 118
Yes Div F10 F0 F6 Mult1 No Yes
L.DL.DMUL.DSUB.DDIV.DADD.D
37
Scoreboard Example: Cycle Scoreboard Example: Cycle 1212
Instruction status Read ExecutionWrite
Instruction j k Issue operandscompleteResult
F6 34+ R2 1 2 3 4F2 45+ R3F0 F2 F4F8 F6 F2F10 F0 F6F6 F8 F2
Functional unit status dest S1 S2 FU for j FU for k Fj? Fk?Time Name Busy Op Fi Fj Fk Qj Qk Rj Rk
Integer No7 Mult1
Mult2 NoAddDivide
Register result status
Clock F0 F2 F4 F6 F8 F10 F12 ... F3012 FU
5 6 7 86 9
Yes Mult F0 F2 F4 Yes Yes
No
Mult1 Divide
7 9 11 128
Yes Div F10 F0 F6 Mult1 No Yes
• Read operands for DIV.D?
L.DL.DMUL.DSUB.DDIV.DADD.D
38
Scoreboard Example: Cycle Scoreboard Example: Cycle 1313
Instruction status Read ExecutionWrite
Instruction j k Issue operandscompleteResult
F6 34+ R2 1 2 3 4F2 45+ R3F0 F2 F4F8 F6 F2F10 F0 F6F6 F8 F2
Functional unit status dest S1 S2 FU for j FU for k Fj? Fk?Time Name Busy Op Fi Fj Fk Qj Qk Rj Rk
Integer No6 Mult1
Mult2 NoAddDivide
Register result status
Clock F0 F2 F4 F6 F8 F10 F12 ... F3013 FU
5 6 7 86 9
Yes Mult F0 F2 F4 Yes Yes
Mult1 Add Divide
7 9 11 128
Yes Div F10 F0 F6 Mult1 No YesYes Add F6 F8 F2 Yes Yes
13
L.DL.DMUL.DSUB.DDIV.DADD.D
39
Scoreboard Example: Cycle Scoreboard Example: Cycle 1717
Instruction status Read ExecutionWrite
Instruction j k Issue operandscompleteResult
F6 34+ R2 1 2 3 4F2 45+ R3 5 6 7 8F0 F2 F4 6 9F8 F6 F2 7 9 11 12F10 F0 F6 8F6 F8 F2 13 14 16
Functional unit status dest S1 S2 FU for j FU for k Fj? Fk?Time Name Busy Op Fi Fj Fk Qj Qk Rj Rk
Integer No2 Mult1 Yes Mult F0 F2 F4 Yes Yes
Mult2 NoAdd Yes Add F6 F8 F2 Yes YesDivide Yes Div F10 F0 F6 Mult1 No Yes
Register result status
Clock F0 F2 F4 F6 F8 F10 F12 ... F3017 FU Mult1 Add Divide
• Write result of ADD.D? No, WAR hazard
L.DL.DMUL.DSUB.DDIV.DADD.D ?
40
Scoreboard Example: Cycle Scoreboard Example: Cycle 2020
Instruction status Read ExecutionWrite
Instruction j k Issue operandscompleteResult
F6 34+ R2 1 2 3 4F2 45+ R3 5 6 7 8F0 F2 F4 6 9 19 20F8 F6 F2 7 9 11 12F10 F0 F6 8F6 F8 F2 13 14 16
Functional unit status dest S1 S2 FU for j FU for k Fj? Fk?Time Name Busy Op Fi Fj Fk Qj Qk Rj Rk
Integer NoMult1Mult2 NoAdd Yes Add F6 F8 F2 Yes YesDivide Yes Div F10 F0 F6 Yes Yes
Register result status
Clock F0 F2 F4 F6 F8 F10 F12 ... F3020 FU Add Divide
No
L.DL.DMUL.DSUB.DDIV.DADD.D
41
Scoreboard Example: Scoreboard Example: Cycle 21Cycle 21
Instruction status Read ExecutionWrite
Instruction j k Issue operandscompleteResult
F6 34+ R2 1 2 3 4F2 45+ R3 5 6 7 8F0 F2 F4 6 9 19 20F8 F6 F2 7 9 11 12F10 F0 F6 8 21F6 F8 F2 13 14 16
Functional unit status dest S1 S2 FU for j FU for k Fj? Fk?Time Name Busy Op Fi Fj Fk Qj Qk Rj Rk
Integer NoMult1Mult2 NoAdd Yes Add F6 F8 F2 Yes YesDivide Yes Div F10 F0 F6 Yes Yes
Register result status
Clock F0 F2 F4 F6 F8 F10 F12 ... F3021 FU Add Divide
No
L.DL.DMUL.DSUB.DDIV.DADD.D
42
Scoreboard Example: Cycle Scoreboard Example: Cycle 2222
Instruction status Read ExecutionWrite
Instruction j k Issue operandscompleteResult
F6 34+ R2 1 2 3 4F2 45+ R3 5 6 7 8F0 F2 F4 6 9 19 20F8 F6 F2 7 9 11 12F10 F0 F6 8 21 F6 F8 F2 13 14 16 22
Functional unit status dest S1 S2 FU for j FU for k Fj? Fk?
Time Name Busy Op Fi Fj Fk Qj Qk Rj Rk
Integer NoMult1Mult2 NoAdd No
40 Divide Yes Div F10 F0 F6 Yes YesRegister result status
Clock F0 F2 F4 F6 F8 F10 F12 ... F3022 FU Divide
No
L.DL.DMUL.DSUB.DDIV.DADD.D
43
Scoreboard Example: Cycle Scoreboard Example: Cycle 6161
Instruction status Read Execution Write
Instruction j k Issue operandscompleteResult
F6 34+ R2 1 2 3 4F2 45+ R3 5 6 7 8F0 F2 F4 6 9 19 20F8 F6 F2 7 9 11 12F10 F0 F6 8 21 61 F6 F8 F2 13 14 16 22
Functional unit status dest S1 S2 FU for j FU for k Fj? Fk?
Time Name Busy Op Fi Fj Fk Qj Qk Rj Rk
Integer NoMult1Mult2 NoAdd No
0 Divide Yes Div F10 F0 F6 Yes YesRegister result status
Clock F0 F2 F4 F6 F8 F10 F12 ... F3061 FU Divide
No
L.DL.DMUL.DSUB.DDIV.DADD.D
44
Scoreboard Example: Scoreboard Example: Cycle 62Cycle 62Instruction status Read ExecutionWrite
Instruction j k Issue operandscompleteResult
F6 34+ R2 1 2 3 4F2 45+ R3 5 6 7 8F0 F2 F4 6 9 19 20F8 F6 F2 7 9 11 12F10 F0 F6 8 21 61 62F6 F8 F2 13 14 16 22
Functional unit status dest S1 S2 FU for j FU for k Fj? Fk?
Time Name Busy Op Fi Fj Fk Qj Qk Rj Rk
Integer NoMult1 NoMult2 NoAdd No
0 Divide NoRegister result status
Clock F0 F2 F4 F6 F8 F10 F12 ... F3062 FU
Instruction Block done
• We have:• In-oder issue,
• Out-of-order execute and commit
L.DL.DMUL.DSUB.DDIV.DADD.D