Presentation is loading. Please wait.

Presentation is loading. Please wait.

ECS 154B Computer Architecture II Spring 2009

Similar presentations


Presentation on theme: "ECS 154B Computer Architecture II Spring 2009"— Presentation transcript:

1 ECS 154B Computer Architecture II Spring 2009
Pipelining Datapath and Control § Partially adapted from slides by Mary Jane Irwin, Penn State And Kurtis Kredo, UCD

2 Pipelined CPU Break execution into five stages
Corresponds to the five instruction cycles Fetch from instruction memory (IM) Decode and fetch registers (Reg) Execute the operation in the ALU Access data memory (DM) Write result back to register (Reg) ALU IM Reg DM

3 State Registers How do we store values across pipeline stages?
Multi-cycle MIPS introduced state registers IR, MDR, B, A introduced Sufficient for a pipelined CPU? IR Address Memory Read Addr 1 Read Data 1 PC A Register File Read Data (Instr. or Data) Read Addr 2 ALUOut ALU Write Data Write Addr Read Data 2 B Write Data MDR

4 Pipelined State Registers
Each instruction must maintain its own state Any information needed by a later stage must be passed along Consider PC + 4 Computed during Fetch stage (why?) Needed by Execute stage (why?)

5 Pipelined State Registers
More registers necessary for a pipelined CPU Add IF/ID ID/EX EX/MEM Add 4 Shift left 2 MEM/WB Addr 1 Instruction Memory Data Memory Register File Read Data 1 ALU PC Addr 2 Address Read Data Address Write Addr Read Data 2 Write Data Write Data Sign Extend 16 32

6 Load Word Example (Fetch)
Add IF/ID ID/EX EX/MEM Add 4 Shift left 2 MEM/WB Addr 1 Instruction Memory Data Memory Register File Read Data 1 ALU PC Addr 2 Address Read Data Address Write Addr Read Data 2 Write Data Write Data Sign Extend 16 32

7 Load Word Example (Decode)
Add IF/ID ID/EX EX/MEM Add 4 Shift left 2 MEM/WB Addr 1 Instruction Memory Data Memory Register File Read Data 1 ALU PC Addr 2 Address Read Data Address Write Addr Read Data 2 Write Data Write Data Sign Extend 16 32

8 Load Word Example (Execute)
Add IF/ID ID/EX EX/MEM Add 4 Shift left 2 MEM/WB Addr 1 Instruction Memory Data Memory Register File Read Data 1 ALU PC Addr 2 Address Read Data Address Write Addr Read Data 2 Write Data Write Data Sign Extend 16 32

9 Load Word Example (Memory)
Add IF/ID ID/EX EX/MEM Add 4 Shift left 2 MEM/WB Addr 1 Instruction Memory Data Memory Register File Read Data 1 ALU PC Addr 2 Address Read Data Address Write Addr Read Data 2 Write Data Write Data Sign Extend 16 32

10 Load Word Example (Write Back)
Add IF/ID ID/EX EX/MEM Add 4 Shift left 2 MEM/WB Addr 1 Instruction Memory Data Memory Register File Read Data 1 ALU PC Addr 2 Address Read Data Address Write Addr Read Data 2 Write Data Write Data Sign Extend 16 32

11 Load Word Example (Write Back)
All required values must pass through registers Add IF/ID ID/EX EX/MEM Add 4 Shift left 2 MEM/WB Addr 1 Instruction Memory Data Memory Register File Read Data 1 ALU PC Addr 2 Address Read Data Address Write Addr Read Data 2 Write Data Write Data Sign Extend 16 32

12 Pipelined Instructions
With the multi-cycle CPU, instructions could take a different number of cycles to complete Can we do this with a pipelined CPU? R-type sw Jump

13 Pipelined Instructions
Add IF/ID ID/EX EX/MEM Add 4 Shift left 2 MEM/WB Addr 1 Instruction Memory Data Memory Register File Read Data 1 ALU PC Addr 2 Address Read Data Address Write Addr Read Data 2 Write Data Write Data Sign Extend 16 32

14 Pipeline Control What about control signals?
Different for each instruction Required at different stages Where does the control unit go?

15 Pipeline Control Pass control signals using the state registers
No need to pass after they are used Control IF/ID ID/EX EX/MEM MEM/WB

16 Pipeline Control Signals
Execute signals RegDst ALUOp[1..0] ALUSrc Branch Memory access signals MemRead MemWrite Write back signals RegWrite MemtoReg

17 The Pipelined CPU So Far
PCSrc ID/EX Control EX/MEM MEM/WB IF/ID Add Add Branch 4 RegWrite Shift left 2 Read Addr 1 DM Read Data 1 ALU Read Addr 2 MemtoReg Read Address Register File ALUSrc PC Read Data Address Read Data 2 Write Addr Write Data IM Write Data ALU Cntrl MemWrite MemRead Sign Extend ALUOp RegDst

18 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 ALU IM Reg DM ALU IM Reg DM

19 Read After Write Hazard Solution
Stalling always an option Forwarding data improves CPI over stalling ALU IM Reg DM add $4, $5, $6 ALU IM Reg DM add $8, $4, $6 ALU IM Reg DM add $10, $9, $4

20 Data Forwarding Take the result from the earliest point that it exists in any of the pipeline state registers and forward it to the functional units (e.g., the ALU) that need it that cycle For ALU functional unit: the inputs can come from any pipeline register rather than just from ID/EX by adding multiplexors to the inputs of the ALU connecting the Rd write data in EX/MEM or MEM/WB to either (or both) of the EX’s stage Rs and Rt ALU mux inputs adding the proper control hardware to control the new muxes Other functional units may need similar forwarding logic With forwarding, the CPU can achieve a CPI of 1 even in the presence of data dependencies

21 Data Forwarding Conditions
Only forward when state changes Use RegWrite control signal Don’t forward if destination is $0 Forward if previous destination current source Forwarding unnecessary in other cases Forward if either source register needs it

22 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 add $4, $5, $6 add $8, $4, $7 or add $8, $7, $4 ALU IM Reg DM

23 EX/MEM Forwarding R[Rs] R[Rt] Immediate Rd Rt ID/EX EX/MEM MEM/WB
RegWrite R[Rs] ALU MemWrite MemtoReg R[Rt] ALU Cntrl Immediate Rd Rt RegDst

24 EX/MEM Forwarding R[Rs] R[Rt] Immediate Rd Rt Rs ID/EX EX/MEM MEM/WB
RegWrite ALU MemWrite MemtoReg R[Rt] ALU Cntrl Immediate Rd Rt Rs RegDst Forward Unit

25 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 add $4, $5, $6 ALU IM Reg DM Unrelated Instruction add $8, $4, $7 or add $8, $7, $4 ALU IM Reg DM

26 MEM/WB Forwarding R[Rs] R[Rt] Immediate Rd Rt Rs ID/EX EX/MEM MEM/WB
RegWrite ALU MemWrite MemtoReg R[Rt] ALU Cntrl Immediate Rd Rt Rs RegDst Forward Unit

27 MEM/WB Forwarding R[Rs] R[Rt] Immediate Rd Rt Rs ID/EX EX/MEM MEM/WB
RegWrite ALU MemWrite MemtoReg R[Rt] ALU Cntrl Immediate Rd Rt Rs RegDst Forward Unit

28 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 add $4, $5, $6 ALU IM Reg DM add $4, $4, $13 ALU IM Reg DM add $8, $4, $7

29 Complete ALU Input Forwarding
ID/EX EX/MEM MEM/WB R[Rs] RegWrite ALU MemWrite MemtoReg R[Rt] ALU Cntrl Immediate Rd Rt Rs RegDst Forward Unit

30 Register Definition How can we specify a particular signal?
Each state register has a copy May vary across stages Reference the register that contains the value RegWrite value in EX/MEM state register EX/MEM.RegWrite RegWrite value in MEM/WB state register MEM/WB.RegWrite

31 Forwarding Conditions
We want to forward when Previous instruction updates state Previous destination used as current source Previous destination not $0 Data Hazard code add $4, $5, $6 sub $8, $4, $9 How do we do this in hardware?

32 Forwarding Unit R[Rs] R[Rt] Immediate Rd Rt Rs ID/EX EX/MEM MEM/WB
RegWrite ALU MemWrite MemtoReg R[Rt] ALU Cntrl Immediate Rd Rt Rs RegDst Forward Unit

33 Forwarding Unit Details
EX/MEM.RegWrite Forward EX/MEM.RegisterRd[4] ID/EX.RegisterRs[4] EX/MEM.RegisterRd = ID/EX.RegisterRs EX/MEM.RegisterRd[0] ID/EX.RegisterRs[0] EX/MEM.RegisterRd[4] EX/MEM.RegisterRd[0] EX/MEM.RegisterRd ≠ 0

34 Other Forwarding Possible
Forwarding to Data Memory Data memory to data memory copy ALU IM Reg DM add $4, $5, $6 ALU IM Reg DM sw $4, 40($7) ALU IM Reg DM lw $4, 16($7) ALU IM Reg DM sw $4, 40($7)

35 Forwarding to Memory What happens here?
add $5, $6, $7 sw $5, 8($10) Forwarding must occur, but not through ALU

36 Forwarding to Memory R[Rs] R[Rt] Immediate Rd Rt Rs ID/EX EX/MEM
MEM/WB MemWrite R[Rs] RegWrite ALU MemtoReg R[Rt] ALU Cntrl Immediate Rd Rt Rs Forward Unit

37 Forwarding to Memory R[Rs] R[Rt] Immediate Rd Rt Rs ID/EX EX/MEM
MEM/WB MemWrite R[Rs] RegWrite ALU MemtoReg R[Rt] ALU Cntrl Immediate Rd Rt Rs Forward Unit


Download ppt "ECS 154B Computer Architecture II Spring 2009"

Similar presentations


Ads by Google