1 The Pipelined CPU With Control Read Address IM Add PC 4 Write Data Read Addr 1 Read Addr 2 Write Addr Register File Read Data 1 Read Data 2 ALU Shift left 2 DM Address Write Data Read Data IF/ID Sign Extend ID/EX EX/MEM MEM/WB ALU Cntrl RegWrite MemWrite MemRead MemtoReg RegDst ALUOp ALUSrc Branch PCSrc Control Add
29
Embed
The Pipelined CPU With Control - University of California ...american.cs.ucdavis.edu/academic/ecs154b/154bpdf/hazardsplus.pdf · The Pipelined CPU With Control Read Address IM Add
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
1
The Pipelined CPU With Control
Read Address
IM
Add
PC
4
Write Data
Read Addr 1 Read Addr 2
Write Addr
Register File
Read Data 1
Read Data 2
ALU
Shift left 2
DM
Address
Write Data
Read Data
IF/ID
Sign Extend
ID/EX EX/MEM
MEM/WB
ALU Cntrl
RegWrite
MemWrite MemRead
MemtoReg
RegDst
ALUOp
ALUSrc
Branch
PCSrc
Control
Add
2
Data Hazard Review • Caused when data is needed before it is ready
– Read before write: Result of previous instruction needed by later instruction
– Load use: Value in data memory needed by later instruction
ALU IM Reg DM Reg
ALU IM Reg DM Reg
ALU IM Reg DM Reg
3
Read After Write Hazard Solution • Forwarding data improves CPI
ALU IM Reg DM Reg
ALU IM Reg DM Reg
ALU IM Reg DM Reg
add $4, $5, $6
add $8, $4, $6
add $10, $9, $4
4
EX/MEM Forwarding • Register value needed by next instruction
– Calculated by ALU this clock cycle – Needed as input to ALU on next clock cycle
ALU IM Reg DM Reg
ALU IM Reg DM Reg
add $4, $5, $6
add $8, $4, $7 or
add $8, $7, $4
5
EX/MEM Forwarding
ALU
ID/EX
ALU Cntrl
RegDst
EX/MEM
MemtoReg
MEM/WB
Rd Rt
MemWrite
RegWrite R[Rs]
R[Rt]
Immediate
6
EX/MEM Forwarding
ALU
ID/EX
ALU Cntrl
RegDst
EX/MEM
Forward Unit
MemtoReg
MEM/WB
Rd Rt Rs
MemWrite
RegWrite R[Rs]
R[Rt]
Immediate
7
Forwarding Unit Details
EX/MEM.RegWrite
EX/MEM.RegisterRd[4] ID/EX.RegisterRs[4]
EX/MEM.RegisterRd[0] ID/EX.RegisterRs[0]
…
EX/MEM.RegisterRd[4] 0
EX/MEM.RegisterRd[0] 0
…
Forward
EX/MEM.RegisterRd ≠ 0
EX/MEM.RegisterRd = ID/EX.RegisterRs
8
MEM/WB Forwarding • Register value needed two instructions later
– Calculated by ALU this clock cycle – Needed as input to ALU in two clock cycles
ALU IM Reg DM Reg
ALU IM Reg DM Reg
add $4, $5, $6
add $8, $4, $7 or
add $8, $7, $4
ALU IM Reg DM Reg
Unrelated Instruction
9
MEM/WB Forwarding
ALU
ID/EX
ALU Cntrl
RegDst
EX/MEM
Forward Unit
MemtoReg
MEM/WB
Rd Rt Rs
MemWrite
RegWrite R[Rs]
R[Rt]
Immediate
10
MEM/WB Forwarding
ALU
ID/EX
ALU Cntrl
RegDst
EX/MEM
Forward Unit
MemtoReg
MEM/WB
Rd Rt Rs
MemWrite
RegWrite R[Rs]
R[Rt]
Immediate
11
Forwarding Complication • Forward unit must forward most recent value
– It may appear necessary to do MEM/WB and EX/MEM forwarding simultaneously
– Only do EX/MEM forwarding this cycle – Do EX/MEM forwarding again next cycle
ALU IM Reg DM Reg
ALU IM Reg DM Reg
add $4, $5, $6
add $8, $4, $7 ALU IM Reg DM Reg
add $4, $4, $13
12
Complete ALU Input Forwarding
ALU
ID/EX
ALU Cntrl
RegDst
EX/MEM
Forward Unit
MemtoReg
MEM/WB
Rd Rt Rs
MemWrite
RegWrite R[Rs]
R[Rt]
Immediate
13
Other Forwarding Possible • Forwarding to Data Memory
• Data memory to data memory copy
ALU IM Reg DM Reg
ALU IM Reg DM Reg
add $4, $5, $6
sw $4, 40($7)
ALU IM Reg DM Reg
ALU IM Reg DM Reg
lw $4, 16($7)
sw $4, 40($7)
14
Forwarding to Memory
ALU
ID/EX
ALU Cntrl
EX/MEM
Forward Unit
MemtoReg
MEM/WB
Rd Rt Rs
MemWrite RegWrite R[Rs]
R[Rt]
Immediate
15
Forwarding to Memory
ALU
ID/EX
ALU Cntrl
EX/MEM
Forward Unit
MemtoReg
MEM/WB
Rd Rt Rs
MemWrite RegWrite R[Rs]
R[Rt]
Immediate
16
Load Use Hazards Require Stalls No forwarding can help
Requires a Hazard Detection Unit Detects hazards Inserts pipeline bubble
ALU IM Reg DM Reg lw $4, 16($5)
add $8, $4, $7
ALU IM Reg DM Reg
nop
17
Stalling The Pipeline Stalls occur by inserting pipeline bubble
Hold some state registers (stage repeats) Allow other stages to continue processing
ALU IM Reg DM Reg lw $4, 16($5)
add $8, $4, $7 ALU IM Reg DM Reg
add becomes nop ALU IM Reg DM Reg
Repeats
18
Stalling The Pipeline Load Use Hazard code
lw $4, 16($5)
add $8, $4, $7
ALU IM Reg DM Reg
add lw
19
Stalling The Pipeline Load Use Hazard code
lw $4, 16($5)
add $8, $4, $7
ALU IM Reg DM Reg
add lw
Hazard Detected
20
Stalling The Pipeline Load Use Hazard code
lw $4, 16($5)
add $8, $4, $7
IM Reg DM Reg
add lw nop
Bubble Inserted
Stage Repeated
21
Stalling The Pipeline Load Use Hazard code
lw $4, 16($5)
add $8, $4, $7
ALU IM Reg Reg
add lw nop
Data Forwarded
22
Stalling The Pipeline Load Use Hazard code
lw $4, 16($5)
add $8, $4, $7
ALU IM Reg DM
add nop
No Register Written
23
How To Stall The Pipeline
Read Address
IM
PC
Write Data
Read Addr 1 Read Addr 2
Write Addr
Register File
Read Data 1
Read Data 2
IF/ID
ID/EX
Control
Hazard Detection
0 MemRead
Rt
PCWrite
IF/IDWrite
24
Hazard Detection Details Stall pipeline when all of the following occur