EC 513 - ascslab.orgascslab.org/courses/ec513/lectures/L04.pdf · Central Processing Unit (CPU) §...

57
Department of Electrical & Computer Engineering EC 513 Computer Architecture Prof. Michel A. Kinsy Pipelining & Hazards

Transcript of EC 513 - ascslab.orgascslab.org/courses/ec513/lectures/L04.pdf · Central Processing Unit (CPU) §...

Department of Electrical & Computer Engineering

EC 513Computer Architecture

Prof. Michel A. Kinsy

Pipelining & Hazards

Department of Electrical & Computer Engineering

Single Cycle RISC-V CPU

ReadAddress Inst[31-0]

ADD

PC

4

WriteData

ReadAddr1

ReadAddr2

WriteAddr

RegisterFile

ReadData1

ReadData2

ALU

Overflow

zero

RegWrite

Address

WriteData

ReadData

MemWrite

MemRead

SignExtend

32 64

MemtoReg

ALUSrc

Shiftleft1

ADD

PCSrc

ALUControl

1

1

00

0

1

ALUOp

Instr[30,14-12]

Instr[19-15]

Instr[24-20]

Instr[11-7]

ControlUnit

Instr[31-21]

Branch

DataMemory

InstructionMemory

Department of Electrical & Computer Engineering

Central Processing Unit (CPU)

§ Central Processing Unit (CPU) Organization

§ CPU Execution Process 1. Fetch Instruction 2. Decode Instruction 3. Execute Operation 4. Memory Operation 5. Register Writeback Operation

Fetch Instruction

Decode Increment PCRead registers

ALU Operation Or

Branch Address

Data Memory Operation

Write Back

Department of Electrical & Computer Engineering

Single Cycle RISC-V CPU

ReadAddress Inst[31-0]

ADD

PC

4

WriteData

ReadAddr1

ReadAddr2

WriteAddr

RegisterFile

ReadData1

ReadData2

ALU

Overflow

zero

RegWrite

Address

WriteData

ReadData

MemWrite

MemRead

SignExtend

32 64

MemtoReg

ALUSrc

Shiftleft1

ADD

PCSrc

ALUControl

1

1

00

0

1

ALUOp

Instr[30,14-12]

Instr[19-15]

Instr[24-20]

Instr[11-7]

ControlUnit

Instr[31-21]

Branch

DataMemory

InstructionMemory

Department of Electrical & Computer Engineering

ReadAddress Inst[31-0]

ADD

PC

4

WriteData

ReadAddr1

ReadAddr2

WriteAddr

RegisterFile

ReadData1

ReadData2

ALU

Overflow

zero

RegWrite

Address

WriteData

ReadData

MemWrite

MemRead

SignExtend

32 64

MemtoReg

ALUSrc

Shiftleft1

ADD

PCSrc

ALUControl

1

1

00

0

1

ALUOp

Instr[30,14-12]

Instr[19-15]

Instr[24-20]

Instr[11-7]

ControlUnit

Instr[31-21]

Branch

DataMemory

InstructionMemory

Single Cycle RISC-V CPU

IDIF EXE MEM WB

Department of Electrical & Computer Engineering

ReadAddress Inst[31-0]

ADD

PC

4

WriteData

ReadAddr1

ReadAddr2

WriteAddr

RegisterFile

ReadData1

ReadData2

ALU

Overflow

zero

RegWrite

Address

WriteData

ReadData

MemWrite

MemRead

SignExtend

32 64

MemtoReg

ALUSrc

Shiftleft1

ADD

PCSrc

ALUControl

1

1

00

0

1

ALUOp

Instr[30,14-12]

Instr[19-15]

Instr[24-20]

Instr[11-7]

ControlUnit

Instr[31-21]

Branch

DataMemory

InstructionMemory

Single Cycle RISC-V CPU

IDIF EXE MEM WB

Department of Electrical & Computer Engineering

ReadAddress Inst[31-0]

ADD

PC

4

WriteData

ReadAddr1

ReadAddr2

WriteAddr

RegisterFile

ReadData1

ReadData2

ALU

Overflow

zero

RegWrite

Address

WriteData

ReadData

MemWrite

MemRead

SignExtend

32 64

MemtoReg

ALUSrc

Shiftleft1

ADD

PCSrc

ALUControl

1

1

00

0

1

ALUOp

Instr[30,14-12]

Instr[19-15]

Instr[24-20]

Instr[11-7]

ControlUnit

Instr[31-21]

Branch

DataMemory

InstructionMemory

Multi-Cycle RISC-V CPU

IDIF EXE MEM WB

Department of Electrical & Computer Engineering

Multi-Cycle RISC-V Processor § Single cycle processor

§ The cycle time has to be long enough for the slowest instruction to complete

§ CPI = 1

§ Multi-cycle Implementation§ Instructions are broken into smaller steps§ Execute each step (instead of the entire

instruction) in one cycle§ The cycle time has to be long enough for the

slowest step to complete

Department of Electrical & Computer Engineering

Multi-Cycle RISC-V Processor § The advantages of the multiple cycle processor

§ Cycle time is much shorter§ Different instructions take different number of

cycles to complete§ Load takes five cycles§ Jump only takes three cycles§ CPI is between 3 and 5

addi x10,x10,513j label

Department of Electrical & Computer Engineering

Multi-Cycle RISC-V Processor addi x10,x10,513jlabelIDIF EXE MEM WB

5ps 5ps 5ps 5ps 5ps

25psaddi x10,x10,513 jlabel

50ps

40ps

Department of Electrical & Computer Engineering

Multi-Cycle RISC-V Processor addi x10,x10,513jlabelIDIF EXE MEM WB

5ps 5ps 5ps 5ps 5ps

25psaddi x10,x10,513 jlabel

50ps

40ps

Department of Electrical & Computer Engineering

Multi-Cycle RISC-V Processor § Although CPI increased overall execution time is

shortened, so performance is improved!

§ Performance can be improved even more with pipelining!

Time =Instructions Cycles TimeProgramProgram*Instruction*Cycle

Department of Electrical & Computer Engineering

Task Pipelining § How to move from stage to stage?

§ Buffers/ Registers

stage1

stage2

stage3

stage4

stage1

stage2

stage3

stage4

Department of Electrical & Computer Engineering

Ideal Pipeline

§ All objects go through the same stages§ No sharing of resources between any two stages§ Propagation delay through all pipeline stages is

equal

stage1

stage2

stage3

stage4

Department of Electrical & Computer Engineering

5-Stage RISC-V Pipelining

Instruction Fetch Execute

Instruction Decode WriteBackMemory

InstructionFetch

Instruction Decode

Execute Memory Writeback

Department of Electrical & Computer Engineering

Multi-Stage RISC-V CPU

ReadAddress Inst[31-0]

ADD

PC

4

WriteData

ReadAddr1

ReadAddr2

WriteAddrRegisterFile

ReadData1

ReadData2

ALU

Overflow

zero

RegWrite

Address

WriteData

ReadData

MemWrite

MemRead

SignExtend

32 64

MemtoReg

ALUSrc

Shiftleft1

ADD

PCSrc

ALUControl

1

1

00

0

1

ALUOp

ControlUnit

Branch

DataMemory

InstructionMemory

RegWrite

Instr[30,14-12]

Instr[19-15]

Instr[24-20]

Instr[11-7]

Instr[31-21]

Department of Electrical & Computer Engineering

Pipelined Datapath

Write-backStage

FetchStage

ExecuteStage

Decode Stage

MemoryStage

IDIF EXE MEM WB

ReadAddress Inst[31-0]

ADD

PC

4

WriteData

Read Addr 1

Read Addr 2

WriteAddrRegisterFile

ReadData1

ReadData2

ALU

Overflow

zero

RegWrite

Address

WriteData

Read Data

MemWrite

MemRead

SignExtend

32 64

MemtoReg

ALUSrc

Shiftleft1

ADD

PCSrc

ALUControl

1

1

00

0

1

ALUOp

ControlUnit

Branch

DataMemory

InstructionMemory

RegWrite

Instr[30, 14-12]

Instr[19-15]

Instr[24-20]

Instr[11-7]

Instr[31-21]

Department of Electrical & Computer Engineering

5-Stage Pipelined

Time t0 t1 t2 t3 t4 t5 t6 t7 . . . .Instruction1 IF1

Write-backStage

FetchStage

ExecuteStage

Decode Stage

MemoryStage

ReadAddress Inst[31-0]

ADD

PC

4

WriteData

Read Addr 1

Read Addr 2

WriteAddrRegisterFile

ReadData1

ReadData2

ALU

Overflow

zero

RegWrite

Address

WriteData

Read Data

MemWrite

MemRead

SignExtend

32 64

MemtoReg

ALUSrc

Shiftleft1

ADD

PCSrc

ALUControl

1

1

00

0

1

ALUOp

ControlUnit

Branch

DataMemory

InstructionMemory

RegWrite

Instr[30, 14-12]

Instr[19-15]

Instr[24-20]

Instr[11-7]

Instr[31-21]

Department of Electrical & Computer Engineering

Time t0 t1 t2 t3 t4 t5 t6 t7 . . . .Instruction1 IF1 ID1

Instruction2 IF2

5-Stage Pipelined

Write-backStage

FetchStage

ExecuteStage

Decode Stage

MemoryStage

ReadAddress Inst[31-0]

ADD

PC

4

WriteData

Read Addr 1

Read Addr 2

WriteAddrRegisterFile

ReadData1

ReadData2

ALU

Overflow

zero

RegWrite

Address

WriteData

Read Data

MemWrite

MemRead

SignExtend

32 64

MemtoReg

ALUSrc

Shiftleft1

ADD

PCSrc

ALUControl

1

1

00

0

1

ALUOp

ControlUnit

Branch

DataMemory

InstructionMemory

RegWrite

Instr[30, 14-12]

Instr[19-15]

Instr[24-20]

Instr[11-7]

Instr[31-21]

Department of Electrical & Computer Engineering

Time t0 t1 t2 t3 t4 t5 t6 t7 . . . .Instruction1 IF1 ID1 EX1

Instruction2 IF2 ID2

Instruction3 IF3

5-Stage Pipelined

Write-backStage

FetchStage

ExecuteStage

Decode Stage

MemoryStage

ReadAddress Inst[31-0]

ADD

PC

4

WriteData

Read Addr 1

Read Addr 2

WriteAddrRegisterFile

ReadData1

ReadData2

ALU

Overflow

zero

RegWrite

Address

WriteData

Read Data

MemWrite

MemRead

SignExtend

32 64

MemtoReg

ALUSrc

Shiftleft1

ADD

PCSrc

ALUControl

1

1

00

0

1

ALUOp

ControlUnit

Branch

DataMemory

InstructionMemory

RegWrite

Instr[30, 14-12]

Instr[19-15]

Instr[24-20]

Instr[11-7]

Instr[31-21]

Department of Electrical & Computer Engineering

Time t0 t1 t2 t3 t4 t5 t6 t7 . . . .Instruction1 IF1 ID1 EX1 MA1

Instruction2 IF2 ID2 EX2

Instruction3 IF3 ID3

Instruction4 IF4

5-Stage Pipelined

Write-backStage

FetchStage

ExecuteStage

Decode Stage

MemoryStage

ReadAddress Inst[31-0]

ADD

PC

4

WriteData

Read Addr 1

Read Addr 2

WriteAddrRegisterFile

ReadData1

ReadData2

ALU

Overflow

zero

RegWrite

Address

WriteData

Read Data

MemWrite

MemRead

SignExtend

32 64

MemtoReg

ALUSrc

Shiftleft1

ADD

PCSrc

ALUControl

1

1

00

0

1

ALUOp

ControlUnit

Branch

DataMemory

InstructionMemory

RegWrite

Instr[30, 14-12]

Instr[19-15]

Instr[24-20]

Instr[11-7]

Instr[31-21]

Department of Electrical & Computer Engineering

Time t0 t1 t2 t3 t4 t5 t6 t7 . . . .Instruction1 IF1 ID1 EX1 MA1 WB1

Instruction2 IF2 ID2 EX2 MA2

Instruction3 IF3 ID3 EX3

Instruction4 IF4 ID4Instruction5 IF5

5-Stage Pipelined

Write-backStage

FetchStage

ExecuteStage

Decode Stage

MemoryStage

ReadAddress Inst[31-0]

ADD

PC

4

WriteData

Read Addr 1

Read Addr 2

WriteAddrRegisterFile

ReadData1

ReadData2

ALU

Overflow

zero

RegWrite

Address

WriteData

Read Data

MemWrite

MemRead

SignExtend

32 64

MemtoReg

ALUSrc

Shiftleft1

ADD

PCSrc

ALUControl

1

1

00

0

1

ALUOp

ControlUnit

Branch

DataMemory

InstructionMemory

RegWrite

Instr[30, 14-12]

Instr[19-15]

Instr[24-20]

Instr[11-7]

Instr[31-21]

Department of Electrical & Computer Engineering

Time t0 t1 t2 t3 t4 t5 t6 t7 . . . .Instruction1 IF1 ID1 EX1 MA1 WB1

Instruction2 IF2 ID2 EX2 MA2 WB2

Instruction3 IF3 ID3 EX3 MA3

Instruction4 IF4 ID4 EX4Instruction5 IF5 ID5

5-Stage Pipelined

Write-backStage

FetchStage

ExecuteStage

Decode Stage

MemoryStage

ReadAddress Inst[31-0]

ADD

PC

4

WriteData

Read Addr 1

Read Addr 2

WriteAddrRegisterFile

ReadData1

ReadData2

ALU

Overflow

zero

RegWrite

Address

WriteData

Read Data

MemWrite

MemRead

SignExtend

32 64

MemtoReg

ALUSrc

Shiftleft1

ADD

PCSrc

ALUControl

1

1

00

0

1

ALUOp

ControlUnit

Branch

DataMemory

InstructionMemory

RegWrite

Instr[30, 14-12]

Instr[19-15]

Instr[24-20]

Instr[11-7]

Instr[31-21]

Department of Electrical & Computer Engineering

Time t0 t1 t2 t3 t4 t5 t6 t7 . . . .Instruction1 IF1 ID1 EX1 MA1 WB1

Instruction2 IF2 ID2 EX2 MA2 WB2

Instruction3 IF3 ID3 EX3 MA3 WB3

Instruction4 IF4 ID4 EX4 MA4Instruction5 IF5 ID5 EX5

5-Stage Pipelined

Write-backStage

FetchStage

ExecuteStage

Decode Stage

MemoryStage

ReadAddress Inst[31-0]

ADD

PC

4

WriteData

Read Addr 1

Read Addr 2

WriteAddrRegisterFile

ReadData1

ReadData2

ALU

Overflow

zero

RegWrite

Address

WriteData

Read Data

MemWrite

MemRead

SignExtend

32 64

MemtoReg

ALUSrc

Shiftleft1

ADD

PCSrc

ALUControl

1

1

00

0

1

ALUOp

ControlUnit

Branch

DataMemory

InstructionMemory

RegWrite

Instr[30, 14-12]

Instr[19-15]

Instr[24-20]

Instr[11-7]

Instr[31-21]

Department of Electrical & Computer Engineering

Time t0 t1 t2 t3 t4 t5 t6 t7 . . . .Instruction1 IF1 ID1 EX1 MA1 WB1

Instruction2 IF2 ID2 EX2 MA2 WB2

Instruction3 IF3 ID3 EX3 MA3 WB3

Instruction4 IF4 ID4 EX4 MA4 WB4Instruction5 IF5 ID5 EX5 MA5

5-Stage Pipelined

Write-backStage

FetchStage

ExecuteStage

Decode Stage

MemoryStage

ReadAddress Inst[31-0]

ADD

PC

4

WriteData

Read Addr 1

Read Addr 2

WriteAddrRegisterFile

ReadData1

ReadData2

ALU

Overflow

zero

RegWrite

Address

WriteData

Read Data

MemWrite

MemRead

SignExtend

32 64

MemtoReg

ALUSrc

Shiftleft1

ADD

PCSrc

ALUControl

1

1

00

0

1

ALUOp

ControlUnit

Branch

DataMemory

InstructionMemory

RegWrite

Instr[30, 14-12]

Instr[19-15]

Instr[24-20]

Instr[11-7]

Instr[31-21]

Department of Electrical & Computer Engineering

Time t0 t1 t2 t3 t4 t5 t6 t7 . . . .Instruction1 IF1 ID1 EX1 MA1 WB1

Instruction2 IF2 ID2 EX2 MA2 WB2

Instruction3 IF3 ID3 EX3 MA3 WB3

Instruction4 IF4 ID4 EX4 MA4 WB4Instruction5 IF5 ID5 EX5 MA5 WB5

5-Stage Pipelined

Write-backStage

FetchStage

ExecuteStage

Decode Stage

MemoryStage

ReadAddress Inst[31-0]

ADD

PC

4

WriteData

Read Addr 1

Read Addr 2

WriteAddrRegisterFile

ReadData1

ReadData2

ALU

Overflow

zero

RegWrite

Address

WriteData

Read Data

MemWrite

MemRead

SignExtend

32 64

MemtoReg

ALUSrc

Shiftleft1

ADD

PCSrc

ALUControl

1

1

00

0

1

ALUOp

ControlUnit

Branch

DataMemory

InstructionMemory

RegWrite

Instr[30, 14-12]

Instr[19-15]

Instr[24-20]

Instr[11-7]

Instr[31-21]

Department of Electrical & Computer Engineering

Time t0 t1 t2 t3 t4 t5 t6 t7 . . . .instruction1 IF1 ID1 EX1 MA1 WB1

instruction2 IF2 ID2 EX2 MA2 WB2

instruction3 IF3 ID3 EX3 MA3 WB3

instruction4 IF4 ID4 EX4 MA4 WB4instruction5 IF5 ID5 EX5 MA5 WB5

5-Stage Pipelined

Write-backStage

FetchStage

ExecuteStage

Decode Stage

MemoryStage

ReadAddress Inst[31-0]

ADD

PC

4

WriteData

Read Addr 1

Read Addr 2

WriteAddrRegisterFile

ReadData1

ReadData2

ALU

Overflow

zero

RegWrite

Address

WriteData

Read Data

MemWrite

MemRead

SignExtend

32 64

MemtoReg

ALUSrc

Shiftleft1

ADD

PCSrc

ALUControl

1

1

00

0

1

ALUOp

ControlUnit

Branch

DataMemory

InstructionMemory

RegWrite

Instr[30, 14-12]

Instr[19-15]

Instr[24-20]

Instr[11-7]

Instr[31-21]

Department of Electrical & Computer Engineering

time t0 t1 t2 t3 t4 t5 t6 t7 . . . IF I1 I2 I3 I4 I5ID I1 I2 I3 I4 I5EX I1 I2 I3 I4 I5MA I1 I2 I3 I4 I5WB I1 I2 I3 I4 I5

Reso

urce

s

5-Stage Pipelined

Write-backStage

FetchStage

ExecuteStage

Decode Stage

MemoryStage

ReadAddress Inst[31-0]

ADD

PC

4

WriteData

Read Addr 1

Read Addr 2

WriteAddrRegisterFile

ReadData1

ReadData2

ALU

Overflow

zero

RegWrite

Address

WriteData

Read Data

MemWrite

MemRead

SignExtend

32 64

MemtoReg

ALUSrc

Shiftleft1

ADD

PCSrc

ALUControl

1

1

00

0

1

ALUOp

ControlUnit

Branch

DataMemory

InstructionMemory

RegWrite

Instr[30, 14-12]

Instr[19-15]

Instr[24-20]

Instr[11-7]

Instr[31-21]

Department of Electrical & Computer Engineering

Multi-Stage & Control Signals

ReadAddress Inst[31-0]

ADD

PC

4

WriteData

ReadAddr1

ReadAddr2

WriteAddrRegisterFile

ReadData1

ReadData2

ALU

Overflow

zero

RegWrite

Address

WriteData

ReadData

MemWrite

MemRead

SignExtend

32 64

MemtoReg

ALUSrc

Shiftleft1

ADD

PCSrc

ALUControl

1

1

00

0

1

ALUOp

ControlUnit

Branch

DataMemory

InstructionMemory

RegWrite

Instr[30,14-12]

Instr[19-15]

Instr[24-20]

Instr[11-7]

Instr[31-21]

WB

MA

EX

WB

MA

WB

Department of Electrical & Computer Engineering

Execution Simulation§ Consider the following instruction sequence

lw x1, 8(x2)

sw x3, 24(x4)

add x5, x6, x7sub x8, x6, x7

lw x1, 4(x2)

Department of Electrical & Computer Engineering

Execution Simulation: Cycle 1lw x1, 8(x2)

ReadAddress Inst[31-0]

ADD

PC

4

WriteData

ReadAddr1

ReadAddr2

WriteAddrRegisterFile

ReadData1

ReadData2

ALU

Overflow

zero

RegWrite

Address

WriteData

ReadData

MemWrite

MemRead

SignExtend

32 64

MemtoReg

ALUSrc

Shiftleft1

ADD

PCSrc

ALUControl

1

1

00

0

1

ALUOp

ControlUnit

Branch

DataMemory

InstructionMemory

RegWrite

Instr[30,14-12]

Instr[19-15]

Instr[24-20]

Instr[11-7]

Instr[31-21]

Department of Electrical & Computer Engineering

Execution Simulation: Cycle 2sw x3, 24(x4) lw x1, 8(x2)

ReadAddress Inst[31-0]

ADD

PC

4

WriteData

ReadAddr1

ReadAddr2

WriteAddrRegisterFile

ReadData1

ReadData2

ALU

Overflow

zero

RegWrite

Address

WriteData

ReadData

MemWrite

MemRead

SignExtend

32 64

MemtoReg

ALUSrc

Shiftleft1

ADD

PCSrc

ALUControl

1

1

00

0

1

ALUOp

ControlUnit

Branch

DataMemory

InstructionMemory

RegWrite

Instr[30,14-12]

Instr[19-15]

Instr[24-20]

Instr[11-7]

Instr[31-21]

Department of Electrical & Computer Engineering

Execution Simulation: Cycle 3Add x5,x6, x7 lw x1, 8(x2)sw x3, 24(x4)

ReadAddress Inst[31-0]

ADD

PC

4

WriteData

ReadAddr1

ReadAddr2

WriteAddrRegisterFile

ReadData1

ReadData2

ALU

Overflow

zero

RegWrite

Address

WriteData

ReadData

MemWrite

MemRead

SignExtend

32 64

MemtoReg

ALUSrc

Shiftleft1

ADD

PCSrc

ALUControl

1

1

00

0

1

ALUOp

ControlUnit

Branch

DataMemory

InstructionMemory

RegWrite

Instr[30,14-12]

Instr[19-15]

Instr[24-20]

Instr[11-7]

Instr[31-21]

Department of Electrical & Computer Engineering

Execution Simulation: Cycle 4sub x8, x6, x7 lw x1, 8(x2)Add x5,x6,x7 sw x3, 24(x4)

ReadAddress Inst[31-0]

ADD

PC

4

WriteData

ReadAddr1

ReadAddr2

WriteAddrRegisterFile

ReadData1

ReadData2

ALU

Overflow

zero

RegWrite

Address

WriteData

ReadData

MemWrite

MemRead

SignExtend

32 64

MemtoReg

ALUSrc

Shiftleft1

ADD

PCSrc

ALUControl

1

1

00

0

1

ALUOp

ControlUnit

Branch

DataMemory

InstructionMemory

RegWrite

Instr[30,14-12]

Instr[19-15]

Instr[24-20]

Instr[11-7]

Instr[31-21]

Department of Electrical & Computer Engineering

Execution Simulation: Cycle 5lw x1, 4(x2) sub x8, x6, x7 lw x1, 8(x2)Add x5,x6,x7 sw x3, 24(x4)

ReadAddress Inst[31-0]

ADD

PC

4

WriteData

ReadAddr1

ReadAddr2

WriteAddrRegisterFile

ReadData1

ReadData2

ALU

Overflow

zero

RegWrite

Address

WriteData

ReadData

MemWrite

MemRead

SignExtend

32 64

MemtoReg

ALUSrc

Shiftleft1

ADD

PCSrc

ALUControl

1

1

00

0

1

ALUOp

ControlUnit

Branch

DataMemory

InstructionMemory

RegWrite

Instr[30,14-12]

Instr[19-15]

Instr[24-20]

Instr[11-7]

Instr[31-21]

Department of Electrical & Computer Engineering

Instruction Interactions § An instruction in the pipeline may need a

resource being used by another instruction in the pipeline § Structural hazard

§ An instruction may depend on something produced by an earlier instruction§ Dependence may be for a data calculation

§ Data hazard§ Dependence may be for calculating the next

address§ Control hazard (branches, interrupts)

Department of Electrical & Computer Engineering

Multi-Stage RISC-V CPU

Address

Inst[31-0]

PC

WriteData

ReadAddr1

ReadAddr2

WriteAddrRegisterFile

ReadData1

ReadData2

ALU

Overflow

zero

Address

WriteData

ReadData

MemWrite

MemRead

SignExtend

32 64

MemtoReg

ALUSrc

Shiftleft1

ADD

PCSrc

ALUControl

1

1

00

0

1

ALUOp

ControlUnit

Branch

Memory

RegWrite

RegWrite

Instr[30,14-12]

Instr[19-15]

Instr[24-20]

Instr[11-7]

Instr[31-21]

ADD

4

0

Department of Electrical & Computer Engineering

Structural Hazard§ Consider the following instruction sequence

lw x1, 8(x2)

sw x3, 24(x4)

add x5, x6, x7sub x8, x6, x7

lw x1, 4(x2)

Department of Electrical & Computer Engineering

Structural Hazardsub x8, x6, x7 lw x1, 8(x2)add x5,x6,x7 sw x3, 24(x4)

Address

Inst[31-0]

PC

WriteData

ReadAddr1

ReadAddr2

WriteAddrRegisterFile

ReadData1

ReadData2

ALU

Overflow

zero

Address

WriteData

ReadData

MemWrite

MemRead

SignExtend32 64

MemtoReg

ALUSrc

Shiftleft1

ADD

PCSrc

ALUControl

1

1

00

0

1

ALUOp

ControlUnit

Branch

Memory

RegWrite

RegWrite

Instr[30,14-12]

Instr[19-15]

Instr[24-20]

Instr[11-7]

Instr[31-21]

ADD

4

0

Department of Electrical & Computer Engineering

Instruction Interactions subt0,t1,t2addt3,t4,t5addt6,s2,s3subt1,s3,s2lw t2,16(t4)addt5,t5,s2sw t0,16(s3)

subt0,t1,t2 Decode ALU DMemIFetch WB

Department of Electrical & Computer Engineering

Instruction Interactions

Decode ALU DMemIFetch WB

addt3,t4,t5 Decode ALU DMemIFetch WB

subt0,t1,t2subt0,t1,t2addt3,t4,t5addt6,s2,s3subt1,s3,s2lw t2,16(t4)addt5,t5,s2sw t0,16(s3)

Department of Electrical & Computer Engineering

Instruction Interactions

Decode ALU DMemIFetch WB

Decode ALU DMemIFetch WB

subt0,t1,t2

addt3,t4,t5

addt6,s2,s3 Decode ALU DMemIFetch WB

subt0,t1,t2addt3,t4,t5addt6,s2,s3subt1,s3,s2lw t2,16(t4)addt5,t5,s2sw t0,16(s3)

Department of Electrical & Computer Engineering

Instruction Interactions

Decode ALU DMemIFetch WB

Decode ALU DMemIFetch WB

subt0,t1,t2

addt3,t4,t5

Decode ALU DMemIFetch WB

subt1,s3,s2 Decode ALU DMemIFetch WB

addt6,s2,s3

subt0,t1,t2addt3,t4,t5addt6,s2,s3subt1,s3,s2lw t2,16(t4)addt5,t5,s2sw t0,16(s3)

Department of Electrical & Computer Engineering

Instruction Interactions § Supposed that we have the following set of

instructions:

subt0,t1,t2addt3,t0,t4addt5,t0,t6subs2,s3,t0lw s4,16(t0)adds4,s4,s2sw s4,16(t0)

Department of Electrical & Computer Engineering

Instruction Interactions subt0,t1,t2addt3,t0,t4addt5,t0,t6subs2,s3,t0lw s4,16(t0)adds4,s4,t7sw s4,16(t0)

subt0,t1,t2 Decode ALU DMemIFetch WB

Department of Electrical & Computer Engineering

Instruction Interactions

Decode ALU DMemIFetch WB

addt3,t0,t4 Decode ALU DMemIFetch WB

subt0,t1,t2subt0,t1,t2addt3,t0,t4addt5,t0,t6subs2,s3,t0lw s4,16(t0)adds4,s4,t7sw s4,16(t0)

Department of Electrical & Computer Engineering

Instruction Interactions

Decode ALU DMemIFetch WB

Decode ALU DMemIFetch WB

subt0,t1,t2

addt3,t0,t4

addt5,t0,t6 Decode ALU DMemIFetch WB

subt0,t1,t2addt3,t0,t4addt5,t0,t6subs2,s3,t0lw s4,16(t0)adds4,s4,t7sw s4,16(t0)

Department of Electrical & Computer Engineering

Instruction Interactions

Decode ALU DMemIFetch WB

Decode ALU DMemIFetch WB

subt0,t1,t2

addt3,t0,t4

addt5,t0,t6 Decode ALU DMemIFetch WB

subt0,t1,t2addt3,t0,t4addt5,t0,t6subs2,s3,t0lw s4,16(t0)adds4,s4,t7sw s4,16(t0)

Department of Electrical & Computer Engineering

Instruction Interactions

Decode ALU DMemIFetch WB

Decode ALU DMemIFetch WB

subt0,t1,t2

addt3,t0,t4

addt5,t0,t6 Decode ALU DMemIFetch WB

X

subt0,t1,t2addt3,t0,t4addt5,t0,t6subs2,s3,t0lw s4,16(t0)adds4,s4,t7sw s4,16(t0)

Department of Electrical & Computer Engineering

Instruction Interactions

Decode ALU DMemIFetch WB

Decode ALU DMemIFetch WB

subt0,t1,t2

addt3,t0,t4

addt5,t0,t6 Decode ALU DMemIFetch WB

Bubble

subt0,t1,t2addt3,t0,t4addt5,t0,t6subs2,s3,t0lw s4,16(t0)adds4,s4,t7sw s4,16(t0)

Department of Electrical & Computer Engineering

Instruction Interactions

Decode ALU DMemIFetch WB

Decode ALU DMemIFetch WB

subt0,t1,t2

addt3,t0,t4

addt5,t0,t6 Decode ALU DMemIFetch WB

Bubble

Bubble

subt0,t1,t2addt3,t0,t4addt5,t0,t6subs2,s3,t0lw s4,16(t0)adds4,s4,t7sw s4,16(t0)

Department of Electrical & Computer Engineering

Instruction Interactions

Decode ALU DMemIFetch WB

Decode ALU DMemIFetch WB

subt0,t1,t2

addt3,t0,t4

addt5,t0,t6 Decode ALU DMemIFetch WB

Bubble

Bubble

Bubble

Bubble

subt0,t1,t2addt3,t0,t4addt5,t0,t6subs2,s3,t0lw s4,16(t0)adds4,s4,t7sw s4,16(t0)

Department of Electrical & Computer Engineering

Instruction Interactions

Decode ALU DMemIFetch WB

Decode ALU DMemIFetch WB

subt0,t1,t2

addt3,t0,t4

addt5,t0,t6 Decode ALU DMemIFetch WB

Bubble

Bubble

Bubble

Bubble

Bubble

Bubble

subt0,t1,t2addt3,t0,t4addt5,t0,t6subs2,s3,t0lw s4,16(t0)adds4,s4,t7sw s4,16(t0)

Department of Electrical & Computer Engineering

Instruction Interactions

Decode ALU DMemIFetch WB

Decode ALU DMemIFetch WB

addt3,t0,t4

Decode ALU DMemIFetch WB

subs2,s3,t0 Decode ALU DMemIFetch WB

addt5,t0,t6

Bubble Bubble

Bubble Bubble Bubble

subt0,t1,t2addt3,t0,t4addt5,t0,t6subs2,s3,t0lw s4,16(t0)adds4,s4,t7sw s4,16(t0)

Department of Electrical & Computer Engineering

timet0 t1 t2 t3 t4 t5 t6 t7 . . .

IF I1 I2 I3 I3 I3 I3 I4 I5ID I1 I2 I2 I2 I2 I3 I4EX I1 nop nop nop I2 I3MA I1 nop nop nop I2WB I1 nop nop nop

Stalled Stages and Pipeline

timet0 t1 t2 t3 t4 t5 t6 t7 . .

(I1) r1 ß (r0) + 10 IF1 ID1 EX1 MA1 WB1

(I2) r4 ß (r1) + 17 IF2 ID2 ID2 ID2 ID2 EX2 MA2

(I3) IF3 IF3 IF3 IF3 ID3 EX3(I4) IF4 ID4

(I5) IF5stalled stages

Resource Usage

Department of Electrical & Computer Engineering

Stalled Stages and Pipeline§ Pipelining was introduced to improve

performance

§ But with stalling, CPI will go up§ So we need a way to reduce stalling cycles!

Time =Instructions Cycles TimeProgramProgram*Instruction*Cycle

Department of Electrical & Computer Engineering

Next Class§ Hazard Resolution