Datorteknik DataHazard bild 1 Data Hazards 0x30 sub $6 $0 $1 0x34 add $7 $6 $
Datorteknik DataHazard bild 2 IM Reg DMReg Step 3, we calculate $0 - $1 IM Reg DMReg 0x30 sub $6 $0 $1 0x34 add $7 $6 $1 ! ! ! HAZARD ! ! ! OLD VALUE OF $6
Datorteknik DataHazard bild 3 IM Reg DMReg Step 4, we calculate $1 + $6 IM Reg DMReg 0x30 sub $6 $0 $1 0x34 add $7 $6 $1
Datorteknik DataHazard bild 4 IM Reg DMReg Step 5, Now we write $6 IM Reg DMReg 0x30 sub $6 $0 $1 0x34 add $7 $6 $1 HAZARD OVER NEW VALUE OF $6 WRITTEN TO REGFILE
Datorteknik DataHazard bild 5 IM Reg DMReg Step 2, nop IM Reg DMReg 0x30 sub $6 $0 $1 0x34 nop IM Reg DMReg IM Reg DMReg
Datorteknik DataHazard bild 6 IM Reg DMReg Step 3, nop IM Reg DMReg IM Reg DMReg IM Reg DMReg 0x30 sub $6 $0 $1 0x34 nop 0x38 nop
Datorteknik DataHazard bild 7 IM Reg DMReg Step 4, add $7 $6 $1 IM Reg DMReg IM Reg DMReg IM Reg DMReg 0x3C add $7 $6 $1 0x30 sub $6 $0 $1 0x34 nop 0x38 nop
Datorteknik DataHazard bild 8 IM Reg DMReg Step 5, new $6 used IM Reg DMReg IM Reg DMReg IM Reg DMReg 0x3C add $7 $6 $1 0x30 sub $6 $0 $1 0x34 nop 0x38 nop
Datorteknik DataHazard bild 9 Data Hazards Read After Write Solved by inserting “nop” operations (bubbles) or by hardware “stalling” the pipe
Datorteknik DataHazard bild 10 Cost? + Hardware inexpensive - Performance (throughput)
Datorteknik DataHazard bild 11 Data Hazards sub $6 $0 $1 add $7 $6 $1 add $7 $7 $6...
Datorteknik DataHazard bild 12 IM Reg DMReg We calculate $0 - $1 IM Reg DMReg 0x30 sub $6 $0 $1 0x34 add $7 $6 $1 ! ! ! HAZARD ! ! ! OLD VALUE OF $6
Datorteknik DataHazard bild 13 IM Reg DMReg We “forward” the new result IM Reg DMReg 0x30 sub $6 $0 $1 0x34 add $7 $6 $1 HAZARD SOLVED BY “FORWARDING”
Datorteknik DataHazard bild 14 Branch logic Sgn/Ze extend Zero ext. ALU A B HERE IS THE RESULT 0x30 sub $6 $0 $1 0x34 add $7 $6 $1 > 0x38 add $7 $7 $1.....
Datorteknik DataHazard bild 15 Branch logic Sgn/Ze extend Zero ext. ALU A B WE NEED IT HERE 0x30 sub $6 $0 $1 0x34 add $7 $6 $1 > 0x38 add $7 $7 $1.....
Datorteknik DataHazard bild 16 A B 0 DATA WORD 0x30 sub $6 $0 $1 > 0x34 add $7 $6 $ sub $6 $0 $1 add $7 $6 $1
Datorteknik DataHazard bild 17 = A B 0 REG NR sub $6 $0 $1 add $7 $6 $1 0x30 sub $6 $0 $1 > 0x34 add $7 $6 $1.....
Datorteknik DataHazard bild 18 Branch logic Sgn/Ze extend Zero ext. ALU A B x30 sub $6 $0 $1 0x34 add $7 $6 $1 0x38 add $7 $7 $6 > 0x3C sw $5 4($0)
Datorteknik DataHazard bild 19 ALU A B 0 = = 0x30 sub $6 $0 $1 0x34 add $7 $6 $1 > 0x38 add $7 $7 $ sub $6 $0 $1 add $7 $6 $1add $7 $7 $6
Datorteknik DataHazard bild 20 ALU A B 0 = = = = 0x30 sub $6 $0 $1 0x34 add $7 $6 $1 > 0x38 add $7 $7 $ sub $6 $0 $1 add $7 $6 $1add $7 $7 $6
Datorteknik DataHazard bild 21 Data Hazards sub $6 $0 $1 add $6 $6 $1 add $7 $6 $1...
Datorteknik DataHazard bild 22 ALU A B 0 = = = = 0x30 sub $6 $0 $1 0x34 add $6 $6 $1 > 0x38 add $7 $6 $ sub $6 $0 $1 add $6 $6 $1add $7 $6 $1
Datorteknik DataHazard bild 23 Performance No “Bubbles” or “Stalls” –increased throughput But did we change the critical path? –Topological sort –Static timing analysis
Datorteknik DataHazard bild 24 Branch logic Sgn/Ze extend Zero ext. ALU A B = = = =
Datorteknik DataHazard bild 25 = = Forwarding Logic & W Reg # & >=1 W DRD/DWT DATA
Datorteknik DataHazard bild 26 Branch logic Sgn/Ze extend Zero ext. ALU A B = = = = Critical path ALU?
Datorteknik DataHazard bild 27 Branch logic Sgn/Ze extend Zero ext. ALU A B = = = = Critical path DATA MEMORY?
Datorteknik DataHazard bild 28 All problems solved? NO, what will happen if lw $6 $0($1) add $4 $6 $1 add $7 $6 $2
Datorteknik DataHazard bild 29 IM Reg DMReg OK, “DM” to “DE” IM Reg DMReg IM Reg DMReg 0x30 lw $6 $0($1) 0x34 add $4 $6 $1 0x38 add $7 $6 $2
Datorteknik DataHazard bild 30 IM Reg DMReg “DM” to “EX” ? IM Reg DMReg IM Reg DMReg 0x30 lw $6 $0($1) 0x34 add $4 $6 $1 0x38 add $7 $6 $2