Control Hazards
1
Control Hazards 1 Today Quiz 5 Mini project #1 solution Mini - - PowerPoint PPT Presentation
Control Hazards 1 Today Quiz 5 Mini project #1 solution Mini project #2 assigned Stalling recap Branches! 2 Key Points: Control Hazards Control hazards occur when we dont know which instruction to execute next
1
2
3
4
EX
Deco de Fetch Mem Write back
EX
Deco de Fetch Mem Write back
Cycles
EX
Deco de Fetch Mem Write back
EX
Deco de Fetch Mem Write back
EX
Deco de Fetch Mem Write back
EX
Deco de Fetch Mem Write back
EX
Deco de Fetch Mem Write back
5
EX
Deco de Fetch Mem Write back
EX
Deco de Fetch Mem Write back
Cycles
EX
Deco de Fetch Mem Write back
EX
Deco de Fetch Mem Write back
EX
Deco de Fetch Mem Write back
EX
Deco de Fetch Mem
Load $s1, 0($s1) Addi $t1, $s1, 4
EX
Deco de Fetch Mem Write back
EX
Deco de Fetch
To “stall” we insert a noop in place of the instruction and freeze the earlier stages of the pipeline
6
To “stall” we insert a noop in place of the instruction and freeze the earlier stages of the pipeline
EX
Deco de Fetch Mem Write back
EX
Deco de Fetch Mem Write back
Cycles
EX
Deco de Fetch Mem Write back
EX
Deco de Fetch Mem Write back
EX
Deco de Fetch Mem
Load $s1, 0($s1) Addi $t1, $s1, 4
EX
Deco de Fetch Mem Write back
EX
Deco de Fetch Mem Write back
Noop inserted
7 add $s1, $s3, $s2 sub $s6, $s5, $s2 beq $s6, $s7, somewhere and $s2, $s3, $s1
EX
Deco de Fetch Mem Write back
8
EX
Deco de Fetch Mem Write back
9
EX
Deco de Fetch Mem Write back
EX
Deco de Fetch Mem Write back
11
high order bits are zero, it’s a control instruction
12
EX
Deco de Fetch Mem Write back
add $s0, $t0, $t1
EX
Deco de Fetch Mem Write back
sub $t2, $s0, $t3
Cycles
EX
Deco de Fetch Mem Write back
EX
Deco de Fetch Mem Write back
sub $t2, $s0, $t3 sub $t2, $s0, $t3
13
EX
Deco de Fetch Mem Write back
bne $t2, $s0, somewhere
Cycles
EX
Deco de Fetch Mem
EX
Deco de Fetch Mem Write back
EX
Deco de Fetch Mem Write back
sll $s4, $t6, $t5 and $s4, $t0, $t1 add $s0, $t0, $t1
Fetch Fetch
Stall
No instructions in Decode or Execute
14
15
16
EX
Deco de Fetch Mem
EX
Deco de Fetch Mem Write back
bne $t2, $s0, somewhere
Cycles
EX
Deco de Fetch Mem Write back
add $t2, $s4, $t1 ... somewhere: sub $t2, $s0, $t3
EX
Deco de Fetch Mem Write back
Taken
add $s0, $t0, $t1
Branch Delay
17
the branch outcome, we “squash” them.
18
EX
Deco de Fetch
EX
Deco de Fetch Mem Write back
bne $t2, $s0, somewhere
Cycles
EX
Deco de Fetch Mem W back
bne $t2, $s4, else ... else: sub $t2, $s0, $t3
EX
Deco de Fetch Mem Write back
add $s0, $t0, $t1
EX
Deco de Fetch Mem Write back
sll $s4, $t6, $t5
Deco de Fetch
and $s4, $t0, $t1
Squash Squash
19
!"#$ %$$&"''
!"#$%&'()" *+,)%-
.// 01 2 (&)*"+,#*# !"#$+%$$&+- !"#$+%$$&+. (&)*"+%$$&
3+45#$+% 657+
!"#$ +,#*#+- !"#$ +,#*#+.
0. .89 :;5< 7+<=> .//
?@$@ *+,)%-
%$$&"'' (&)*"+,#*# !"#$ ,#*# !6+$';A?+' ?+'ABC+' BC+'A*+, *+,ADE :54" BC$+"/
Read Address
Instruc(on Memory
Add PC 4 Write ¡Data Read ¡Addr ¡1 Read ¡Addr ¡2 Write ¡Addr
Register File
Read ¡Data ¡1 Read ¡Data ¡2 16 32 ALU Shi< le< ¡2
Data Memory
Address Write ¡Data Read Data IFetch/Dec Dec/Exec Exec/Mem Mem/WB Sign Extend Add Sign Extend Add Shi< le< ¡2
sign bit comparison result
22
23
branch?
24
identify a branch (in our case, this is less than 1)
25
1.Branches take 19 cycles to resolve 2.Identifying a branch takes 4 cycles. 1.The P4 fetches 3 instructions per cycle 3.Stalling is not an option.
branch?
27
branch?
28
29
30
branch behavior.
taken branch. All 10 are pretty predictable.
it’s always the same.
31
32
33
It can differentiate between branches. Bad behavior by one won’t mess up others.... mostly (why not always?)
Infinite! Bigger is better, but don’t mess with the cycle
Accuracy is still not great.
34
for(i = 0; i < 10; i++) { for(j = 0; j < 4; j++) { } }
iteration Actual prediction new prediction 1 taken not taken taken 2 taken taken taken 3 taken taken taken 4 not taken taken not taken 1 taken not taken take 2 taken taken taken 3 taken taken taken
35
State
00 -- strongly not taken 01 -- weakly not taken 10 -- weakly taken 11 -- strongly taken
Predicti
not taken not taken taken taken
36
for(i = 0; i < 10; i++) { for(j = 0; j < 4; j++) { } }
iteration Actual state prediction new state 1 taken weakly taken taken strongly taken 2 taken strongly taken taken strongly taken 3 taken strongly taken taken strongly taken 4 not taken strongly taken taken weakly taken 1 taken weakly taken taken strongly taken 2 taken strongly taken taken strongly taken 3 taken strongly taken taken strongly taken
dynamic branch
prediction.
37
taken branch. All 10 are pretty predictable.
it’s always the same.
38
39
for(i = 0; i < 10; i++) { for(j = 0; j < 4; j++) { } }
iteration Actual 1 taken 2 taken 3 taken 4 not taken 1 taken 2 taken 3 taken 4 not taken 1 taken 2 taken 3 taken 4 not taken
40
iteration Actual Branch history Steady state prediction 1 taken 11111 2 taken 11111 3 taken 11111 4 not taken 11111
taken 11110 taken 1 taken 11101 taken 2 taken 11011 taken 3 taken 10111 taken 4 not taken , 01111 not taken
taken 11110 taken 1 taken 11101 taken 2 taken 11011 taken 3 taken 10111 taken 4 not taken , 01111 not taken
taken 11110 taken 1 taken 11101 taken 2 taken 11011 taken 3 taken 10111 taken 4 not taken , 01111 not taken
41
taken branch. All 10 are pretty predictable.
it’s always the same.
42
Pretty good, as long as the history is not too long