Академический Документы
Профессиональный Документы
Культура Документы
2002-4-3
ECE4680 Pipeline.1
Rt
RegDst
<11:15>
Instruction
Fetch Unit
<21:25>
<16:20>
Jump
Zero
Clk
<31:26>
op
ALUop
Rd
Imm16
Rd
<5:0>
1 Mux 0
RegWr 5
func
Rs
5
Rt
ALU
Control
ALUctr 3
5
32
0
1
32
MemtoReg
MemWr
0
32
32
WrEn Adr
Data In 32
Clk
Mux
16
Extender
imm16
Instr<15:0>
Zero
ALU
Rw Ra Rb
32 32-bit
Registers
busB
32
Mux
32
Clk
busA
busW
RegDst
ALUSrc
Main
Control
Data
Memory
ALUSrc
ExtOp
ECE4680 Pipeline.2
2002-4-3
Clock Skew
Cycle time is much longer than needed for all other instructions.
Examples:
R-type instructions do not require data memory access
Jump does not require ALU operation nor data memory access
2002-4-3
ECE4680 Pipeline.3
ECE4680 Pipeline.4
2002-4-3
PCWr
ALUSelA
WrAdr
32
Din Dout
32
32
32
Rt
Rt 0
Rd
Mux
Ideal
Memory
Ra
Rb
busA
Reg File
busW busB 32
Imm 16
1
32
Rw
1 Mux 0
<< 2
Extend
ExtOp
Zero
32
ALU
RAdr
0
1
32
32
2
3
32
MemtoReg
ECE4680 Pipeline.5
Target
32
Rs
BrWr
Mux
RegWr
Mux
Mux
Instruction Reg
32
32
RegDst
32
PC
32
PCSrc
ALU
Control
ALUOp
ALUSelB
2002-4-3
ECE4680 Pipeline.6
2002-4-3
Instr Decode /
Reg. Fetch
Address
Data Memory
Reg Wr
Clk
Old Value
PC
Clk-to-Q
New Value
Instruction Memory Access Time
New Value
Old Value
ALUctr
Old Value
ExtOp
Old Value
New Value
ALUSrc
Old Value
New Value
RegWr
Old Value
busA
Old Value
Delay through Extender & Mux
Old Value
busB
New Value
Address
Old Value
busW
Old Value
3
New Value
ALU Delay
New Value
ECE4680 Pipeline.7
Load Ifetch
Reg/Dec
Exec
Mem
Wr
ECE4680 Pipeline.8
2002-4-3
2002-4-3
ECE4680 Pipeline.9
Clock
1st lw Ifetch
Reg/Dec
2nd lw Ifetch
3rd lw
Exec
Mem
Wr
Reg/Dec
Exec
Mem
Wr
Ifetch
Reg/Dec
Exec
Mem
Wr
2002-4-3
R-type Ifetch
Cycle 3 Cycle 4
Reg/Dec
Exec
Wr
2002-4-3
ECE4680 Pipeline.11
Clock
R-type Ifetch
R-type
Reg/Dec
Exec
Ifetch
Reg/Dec
Exec
Ifetch
Reg/Dec
Load
Wr
R-type Ifetch
Wr
Exec
Mem
Wr
Reg/Dec
Exec
Wr
R-type Ifetch
Reg/Dec
Exec
Wr
Ideal Case
each functional unit is used once per instruction AND
all instructions are the same, just as discussed in the previous 2 slides.
We have a problem:
Two instructions try to write to the register file at the same time!
We will see many other problems involved in pipelining.
ECE4680 Pipeline.12
2002-4-3
Important Observation
Each functional unit can only be used once per instruction:
necessary but not sufficient.
Each functional unit must be used at the same stage for all instructions:
Load uses Register Files Write Port during its 5th stage
Load
1
Ifetch
2
Reg/Dec
3
Exec
4
Mem
5
Wr
R-type uses Register Files Write Port during its 4th stage
1
R-type Ifetch
2
Reg/Dec
3
Exec
4
Wr
Problem !
2002-4-3
ECE4680 Pipeline.13
Clock
Ifetch
Load
Reg/Dec
Exec
Ifetch
Reg/Dec
R-type Ifetch
Wr
Exec
Mem
Wr
Reg/Dec
Exec
Wr
Wr
Exec
Exec
Wr
R-type Ifetch Reg/Dec Pipeline
Bubble
R-type Ifetch Reg/Dec Reg/Dec
Exec
Ifetch
Wr
Exec
Wr
Ifetch Reg/Dec
Reg/Dec
Exec
Wr
Exec
Insert a bubble into the pipeline to prevent 2 writes at the same cycle
The control logic can be complex
No instruction is completed during Cycle 5:
The Effective CPI for load is 2
ECE4680 Pipeline.14
2002-4-3
Cycle 1 Cycle 2
2
Reg/Dec
3
Exec
4
Mem
5
Wr
Clock
R-type Ifetch
Reg/Dec
Exec
Mem
Wr
Ifetch
Reg/Dec
Exec
Mem
Wr
Ifetch
Reg/Dec
Exec
Mem
Wr
Reg/Dec
Exec
Mem
Wr
Reg/Dec
Exec
Mem
R-type
Load
R-type Ifetch
R-type Ifetch
Wr
2002-4-3
ECE4680 Pipeline.15
Store
Ifetch
Reg/Dec
Cycle 3 Cycle 4
Exec
Mem
Wr
ECE4680 Pipeline.16
2002-4-3
Cycle 3 Cycle 4
NOOP!
Beq
Ifetch
Reg/Dec
Exec
Mem
Wr
Mem: If the registers we compared in the Exec stage are the same,
Write the branch target address into the PC
2002-4-3
ECE4680 Pipeline.17
A Pipelined Datapath
Clock-to-Q delay
Clk
Ifetch
Reg/Dec
Exec
ExtOp
RegWr
Mem
Wr
Branch
ALUOp
No datapath
uder Wr ?
1
0
Ra
Rt
Rb
RFile
Rw Di
Rd
Exec
Unit
0
Zero
Data
Me
mDo
RA
WA
Di
Mux
Rt
Imm16
busA
busB
Mem/Wr Register
Rs
ID/Ex Register
IF/ID Register
IUnit
I
PC+4
Imm16
Ex/Mem Register
PC+4
PC
ECE4680 Pipeline.18
PC+4
RegDst
ALUSrc
MemWr
MemtoReg
2002-4-3
Reg/Dec
Exec
ExtOp
RegWr
Mem
Branch
ALUOp
1
0
PC+4
Imm16
Rb
RFile
Rw Di
Rt
Rd
Exec
Unit
0
Data
Me
mDo
RA
WA
Di
Mux
Rt
Zero
Mem/Wr Register
Ra
Imm16
busA
busB
Ex/Mem Register
Rs
ID/Ex Register
IUnit
I
PC+4
PC = 14
PC+4
ALUSrc
RegDst
MemWr
MemtoReg
2002-4-3
ECE4680 Pipeline.19
Reg/Dec
1
0
Address
Instruction
Memory
Instruction
ECE4680 Pipeline.20
Adder
PC = 14
PC new value old output?
10
2002-4-3
Clk
Ifetch
Reg/Dec
Exec
ExtOp
RegWr
Mem
Branch
ALUOp
1
0
Imm16
Rt
Rb
RFile
Rw Di
Rd
Exec
Unit
0
Data
Me
mDo
RA
WA
Di
Mux
IUnit
Rt
Zero
Mem/Wr Register
Ra
Imm16
busA
busB
Ex/Mem Register
Rs
PC+4
IF/ID:
PC+4
PC
PC+4
ALUSrc
RegDst
MemWr
MemtoReg
2002-4-3
ECE4680 Pipeline.21
Clk
Ifetch
Reg/Dec
Exec
ALUOp=Add
ExtOp=1
RegWr
Mem
Branch
1
0
Rd
Rw Di
Exec
Unit
0
1
RegDst=0
Data
Me
mDo
RA
WA
Di
ALUSrc=1 MemWr
Mux
Rt
Rb
RFile
Zero
Mem/Wr Register
IUnit
Remember Rt/Rd was
connected to Rfile before?
Rt
Imm16
busA
busB
Rs
Ra
ECE4680 Pipeline.22
PC+4
Imm16
ID/Ex Register
IF/ID:
PC+4
PC
PC+4
MemtoReg
2002-4-3
Mem
Adder
32
busA 32
32
Zero
busB
ALU
ID/Ex Register
PC+4
Target
0
Extender
imm16
16
32
Mux
32
32
ALUctr
ALU
Control
ALUSrc=1
ExtOp=1
ALUout
<< 2
ALUOp=Add
2002-4-3
ECE4680 Pipeline.23
Clk
Ifetch
Reg/Dec
Exec
ExtOp
RegWr
Mem
Branch=0
ALUOp
1
0
Ra
Rt
Rb
RFile
Rw Di
Rd
Data
Mem
RA Do
WA
Di
RegDst
ECE4680 Pipeline.24
Exec
Unit
Zero
ALUSrc
MemWr=0
Mux
IUnit
I
Rt
Imm16
busA
busB
Ex/Mem Register
Rs
PC+4
Imm16
ID/Ex Register
IF/ID:
PC+4
PC
PC+4
MemtoReg
2002-4-3
Clk
Ifetch
Reg/Dec
Exec
ExtOp
RegWr=1
Mem
Wr
Branch
ALUOp
1
0
PC+4
Imm16
Rt
Rb
RFile
Rw Di
Exec
Unit
0
Rd
Data
Mem
RA Do
WA
Di
Mux
IUnit
Rt
Zero
Mem/Wr Register
Ra
Imm16
busA
busB
Ex/Mem Register
Rs
ID/Ex Register
IF/ID:
PC+4
PC
PC+4
ALUSrc
RegDst
MemWr
MemtoReg=1
2002-4-3
ECE4680 Pipeline.25
Reg/Dec
Wr
RegWr
Exec
ALUOp=Add
ExtOp=1
Mem
Branch
1
0
Rd
Rw Di
Exec
Unit
0
1
RegDst=0
Zero
Data
Mem
RA Do
WA
Di
ALUSrc=1 MemWr
Mux
Rt
Rb
RFile
Imm16
busA
busB
Mem/Wr Register
IUnit
Why no control signals
at 1st and 2nd stages?
Rt
ID/Ex Register
Rs
PC+4
Imm16
Ra
ECE4680 Pipeline.26
IF/ID:
PC+4
PC
PC+4
MemtoReg
2002-4-3
Pipeline Control
The Main Control generates the control signals during Reg/Dec
Control signals for Exec (ExtOp, ALUSrc, ...) are used 1 cycle later
Control signals for Mem (MemWr Branch) are used 2 cycles later
Control signals for Wr (MemtoReg MemWr) are used 3 cycles later
Reg/Dec
Exec
MemW
r
Branch
RegDst
MemtoReg
RegWr
MemW
r
Branch
Wr
Mem/Wr Register
RegDst
ExtOp
ALUSrc
ALUOp
Ex/Mem Register
Main
Control
ID/Ex Register
IF/ID Register
ExtOp
ALUSrc
ALUOp
Mem
MemW
rBranch
MemtoReg
RegWr
MemtoReg
RegWr
MemtoReg
RegWr
2002-4-3
ECE4680 Pipeline.27
Clk
RegAdr
WrAdr
RegWr
MemWr
RegWrs Clk-to-Q
MemWrs Clk-to-Q
RegAdrs Clk-to-Q
RegAdr
Data
Reg
File
Ex/Mem
Mem/Wr
RegWr
WrAdrs Clk-to-Q
MemWr
WrAdr
Data
Data
Memory
ECE4680 Pipeline.28
2002-4-3
Clock
Store Ifetch
Reg/Dec
Store Ifetch
Exec
Mem
Wr
Reg/Dec
Exec
Mem
Wr
Reg/Dec
Exec
Mem
Wr
Reg/Dec
Exec
Mem
R-type Ifetch
R-type Ifetch
Wr
ECE4680 Pipeline.29
Clk
I_Addr
I_WrEn
C_WrEn
Actual write
C_WrEn
WrEn
I_WrEn
Address
Data
ECE4680 Pipeline.30
I_Addr
I_Data
Reg File
or
Memory
Address
Data
Clk
Reg File
or
Memory
2002-4-3
Clock
0: Load Ifetch
Reg/Dec
4: R-type Ifetch
Exec
Mem
Wr
Reg/Dec
Exec
Mem
Wr
Reg/Dec
Exec
Mem
Wr
Ifetch
Reg/Dec
Exec
Mem
8: Store Ifetch
12: Beq (target is 1000)
End of
Cycle 4
End of
Cycle 5
Wr
End of End of
Cycle 6 Cycle 7
End of Cycle 4: Loads Mem, R-types Exec, Stores Reg, Beqs Ifetch
End of Cycle 5: Loads Wr,
End of Cycle 6:
R-types Wr,
End of Cycle 7:
Beqs Mem
2002-4-3
ECE4680 Pipeline.31
4: R-types Exec
8: Stores Reg
8: Stores Reg
4: R-types Exec
ALUOp=R-type
ExtOp=x
RegWr=0
0: Loads Mem
Branch=0
Clk
1
0
Ra
Rt
Rd
Rb
RFile
Rw Di
Exec
Unit
0
1
RegDst=1 ALUSrc=0
Zero
Clk
MemWr=0
Data
Mem
RA Do
WA
Di
Mux
IUnit
Rt
Imm16
busA
busB
Rs
PC+4
Imm16
PC+4
PC+4
PC = 16
ECE4680 Pipeline.32
MemtoReg=x
2002-4-3
8: Stores Exec
0: Loads Wr
16: Rs Ifet
4: R-types Mem
ALUOp=Add
ExtOp=1
RegWr=1
Branch=0
Clk
1
0
Ra
Rb
RFile
Rw Di
Rt
Rd
Exec
Unit
0
1
RegDst=x ALUSrc=1
Zero
Data
Me
mDo
RA
WA
Di
Clk
MemWr=0
Mux
Rt
Imm16
busA
busB
Rs
PC+4
Imm16
IUnit
I
IF/ID: Instruction @ 16
PC+4
PC = 20
PC+4
MemtoReg=1
2002-4-3
ECE4680 Pipeline.33
4: R-types Wr
RegWr=1
8: Stores Mem
ALUOp=Sub
ExtOp=1
Branch=0
Clk
1
0
Ra
Rt
Rd
Rb
RFile
Rw Di
Exec
Unit
0
1
RegDst=x ALUSrc=0
ECE4680 Pipeline.34
Zero
Clk
MemWr=1
Data
Me
mDo
RA
WA
Di
Mux
Rt
Imm16
busA
busB
Rs
PC+4
Imm16
IUnit
I
IF/ID: Instruction @ 20
PC+4
PC = 24
PC+4
MemtoReg=0
2002-4-3
8: Stores Wr
ALUOp=R-type
ExtOp=x
RegWr=0
Branch=1
Clk
1
0
Ra
Rt
Rb
RFile
Rw Di
Rd
Exec
Unit
0
1
RegDst=1 ALUSrc=0
Zero
Data
Me
mDo
RA
WA
Di
Clk
MemWr=0
Mux
Rt
Imm16
busA
busB
Rs
PC+4
Imm16
IUnit
I
IF/ID: Instruction @ 24
PC+4
PC = 1000
PC+4
MemtoReg=x
2002-4-3
ECE4680 Pipeline.35
Clk
12: Beq Ifetch Reg/Dec Exec
(target is 1000)
16: R-type Ifetch Reg/Dec
20: R-type
Ifetch
24: R-type
Mem
Wr
Exec
Mem
Wr
Reg/Dec
Exec
Mem
Wr
Ifetch
Reg/Dec
Exec
Mem
Wr
Ifetch
Reg/Dec
Exec
Mem
1000: Target of Br
Wr
2002-4-3
Clock
I0: Load Ifetch
Plus 1
Reg/Dec
Exec
Mem
Wr
Ifetch
Reg/Dec
Exec
Mem
Wr
Ifetch
Reg/Dec
Exec
Mem
Wr
Ifetch
Reg/Dec
Exec
Mem
Wr
Ifetch
Reg/Dec
Exec
Mem
Plus 2
Plus 3
Plus 4
Wr
2002-4-3
Summary
Disadvantages of the Single Cycle Processor
Long cycle time
Cycle time is too long for all instructions except the Load
Multiple Clock Cycle Processor:
Divide the instructions into smaller steps
Execute each step (instead of the entire instruction) in one cycle
Pipeline Processor:
Natural enhancement of the multiple clock cycle processor
Each functional unit can only be used once per instruction
If a instruction is going to use a functional unit:
- it must use it at the same stage as all other instructions
Pipeline Control:
- Each stages control signal depends ONLY on the instruction
that is currently in that stage
ECE4680 Pipeline.38
2002-4-3
Cycle 2
Clk
Single Cycle Implementation:
Load
Store
Waste
Cycle 1 Cycle 2 Cycle 3 Cycle 4 Cycle 5 Cycle 6 Cycle 7 Cycle 8 Cycle 9 Cycle 10
Clk
Multiple Cycle Implementation:
Load
Ifetch
Reg
Exec
Mem
Wr
Store
Ifetch
Reg
Exec
Mem
R-type
Ifetch
Pipeline Implementation:
Load Ifetch
Reg
Store Ifetch
Exec
Mem
Wr
Reg
Exec
Mem
R-type Ifetch
ECE4680 Pipeline.39
Reg
Exec
Wr
Mem
Wr
2002-4-3