74
Lecture 5: Pipelining Implementation Kai Bu [email protected] http://list.zju.edu.cn/kaibu/comparch

Lecture 5: Pipelining Implementation Kai Bu [email protected]

Embed Size (px)

Citation preview

Page 1: Lecture 5: Pipelining Implementation Kai Bu kaibu@zju.edu.cn

Lecture 5: PipeliningImplementation

Kai [email protected]

http://list.zju.edu.cn/kaibu/comparch

Page 2: Lecture 5: Pipelining Implementation Kai Bu kaibu@zju.edu.cn

Lab 1 Report Submissionhttp://10.78.18.200:8080/Platform/ Register with @zju.edu.cn email addrReport Due Date: March 28

Demo 70% + Report 30%

report template: http://list.zju.edu.cn/kaibu/comparch/Lab_report_template.doc

Page 3: Lecture 5: Pipelining Implementation Kai Bu kaibu@zju.edu.cn

Appendix C.3-C.4

Page 4: Lecture 5: Pipelining Implementation Kai Bu kaibu@zju.edu.cn

Data PathUnderneath Pipelining

IF ID EX MEM WB

Page 5: Lecture 5: Pipelining Implementation Kai Bu kaibu@zju.edu.cn

Outline

• Unpipelined MIPS• Pipelined MIPS• Other Pipelining Challenges

Page 6: Lecture 5: Pipelining Implementation Kai Bu kaibu@zju.edu.cn

Outline

• Unpipelined MIPS• Pipelined MIPS• Other Pipelining Challenges

Page 7: Lecture 5: Pipelining Implementation Kai Bu kaibu@zju.edu.cn

MIPS Instruction

• at most 5 clock cycles per instruction• IF ID EX MEM WB

Page 8: Lecture 5: Pipelining Implementation Kai Bu kaibu@zju.edu.cn

MIPS Instruction

IF ID EX MEM WB• Instruction Fetch cycle

IR ← Mem[PC];NPC ← PC + 4;

IR: instruction registerNPC: next sequential PC

Page 9: Lecture 5: Pipelining Implementation Kai Bu kaibu@zju.edu.cn

MIPS Instruction

IF ID EX MEM WB• Instruction Decode/register fetch

A ← Regs[rs];B ← Regs[rt];Imm ← sign-extended

immediate field of IR (lower 16 bits)

Page 10: Lecture 5: Pipelining Implementation Kai Bu kaibu@zju.edu.cn

MIPS Instruction

IF ID EX MEM WB• Execution/effective address cycle

ALU operates on the operands from ID:4 functions depending on the instr type -MMemory referenceemory reference-Register-register ALU instructionRegister-register ALU instruction-Register-immediate ALU instructionRegister-immediate ALU instruction-BranchBranch

Page 11: Lecture 5: Pipelining Implementation Kai Bu kaibu@zju.edu.cn

MIPS Instruction

IF ID EX MEM WB• Execution/effective address cycle

-Memory referenceMemory referenceALUOutput ← A + Imm;

ALU adds the operands

Page 12: Lecture 5: Pipelining Implementation Kai Bu kaibu@zju.edu.cn

MIPS Instruction

IF ID EX MEM WB• Execution/effective address cycle

-Register-register ALU instrRegister-register ALU instrALUOutput ← A func B;

ALU performs the operationspecified by function code on the value in register Aand on the value in register B

Page 13: Lecture 5: Pipelining Implementation Kai Bu kaibu@zju.edu.cn

MIPS Instruction

IF ID EX MEM WB• Execution/effective address cycle

-Register-Immediate ALU InstrRegister-Immediate ALU InstrALUOutput ← A op Imm;

ALU performs the operationspecified by opcode on the value in register Aand on the value in register Imm

Page 14: Lecture 5: Pipelining Implementation Kai Bu kaibu@zju.edu.cn

MIPS Instruction

IF ID EX MEM WB• Execution/effective address cycle

-BranchBranchALUOutput ← NPC + (Imm<<2);Cond ← (A == 0);

ALUOutput -> branch targetBEQZ: comparison against 0

Page 15: Lecture 5: Pipelining Implementation Kai Bu kaibu@zju.edu.cn

MIPS Instruction

IF ID EX MEM WB• MEMory access/branch completion

update PC for all instr: PC ← NPC;-Memory AccessMemory AccessLMD ← Mem[ALUOutput]; loadMem[ALUOutput] ← B; store-BranchBranchif (cond) PC ← ALUOutput;

Page 16: Lecture 5: Pipelining Implementation Kai Bu kaibu@zju.edu.cn

MIPS Instruction

IF ID EX MEM WB• Write-Back cycle

-Register-register ALU instructionRegister-register ALU instructionRegs[rd] ← ALUOutput;

-Register-immediate ALU instructionRegister-immediate ALU instructionRegs[rt] ← ALUOutput;

- Load instructionLoad instructionRegs[rt] ← LMD; LLoad MMemory DData reg

Page 17: Lecture 5: Pipelining Implementation Kai Bu kaibu@zju.edu.cn

Put It All Together

Page 18: Lecture 5: Pipelining Implementation Kai Bu kaibu@zju.edu.cn

MIPS Instruction

IF ID EX MEM WB

IR ← Mem[PC];NPC ← PC + 4;

Page 19: Lecture 5: Pipelining Implementation Kai Bu kaibu@zju.edu.cn

MIPS Instruction

IF ID EX MEM WB

A ← Regs[rs];B ← Regs[rt];Imm ← sign-extended immediate field of IR (lower 16 bits)

Page 20: Lecture 5: Pipelining Implementation Kai Bu kaibu@zju.edu.cn

MIPS Instruction

IF ID EX MEM WB

ALUOutput ← A + Imm;

ALUOutput ← A func B;

ALUOutput ← A op Imm;

ALUOutput ← NPC + (Imm<<2);Cond ← (A == 0);

Page 21: Lecture 5: Pipelining Implementation Kai Bu kaibu@zju.edu.cn

MIPS Instruction

IF ID EX MEM WB

LMD ← Mem[ALUOutput]; Mem[ALUOutput] ← B;

if (cond) PC ← ALUOutput;

Page 22: Lecture 5: Pipelining Implementation Kai Bu kaibu@zju.edu.cn

MIPS Instruction

IF ID EX MEM WB

Regs[rd] ← ALUOutput;

Regs[rt] ← ALUOutput;

Regs[rt] ← LMD;

Page 23: Lecture 5: Pipelining Implementation Kai Bu kaibu@zju.edu.cn

MIPS Instruction Demo

• Prof. Gurpur Prabhu, Iowa State Univ http://www.cs.iastate.edu/~prabhu/Tutorial/PIPELINE/DLXimplem.html

• Load, Store• Register-register ALU• Register-immediate ALU• Branch

Page 24: Lecture 5: Pipelining Implementation Kai Bu kaibu@zju.edu.cn

Load

Page 25: Lecture 5: Pipelining Implementation Kai Bu kaibu@zju.edu.cn

Load

Page 26: Lecture 5: Pipelining Implementation Kai Bu kaibu@zju.edu.cn

Load

Page 27: Lecture 5: Pipelining Implementation Kai Bu kaibu@zju.edu.cn

Load

Page 28: Lecture 5: Pipelining Implementation Kai Bu kaibu@zju.edu.cn

Load

Page 29: Lecture 5: Pipelining Implementation Kai Bu kaibu@zju.edu.cn

Load

Page 30: Lecture 5: Pipelining Implementation Kai Bu kaibu@zju.edu.cn

Store

Page 31: Lecture 5: Pipelining Implementation Kai Bu kaibu@zju.edu.cn

Store

Page 32: Lecture 5: Pipelining Implementation Kai Bu kaibu@zju.edu.cn

Store

Page 33: Lecture 5: Pipelining Implementation Kai Bu kaibu@zju.edu.cn

Store

Page 34: Lecture 5: Pipelining Implementation Kai Bu kaibu@zju.edu.cn

Store

Page 35: Lecture 5: Pipelining Implementation Kai Bu kaibu@zju.edu.cn

Store

Page 36: Lecture 5: Pipelining Implementation Kai Bu kaibu@zju.edu.cn

Register-Register ALU

Page 37: Lecture 5: Pipelining Implementation Kai Bu kaibu@zju.edu.cn

Register-Register ALU

Page 38: Lecture 5: Pipelining Implementation Kai Bu kaibu@zju.edu.cn

Register-Register ALU

Page 39: Lecture 5: Pipelining Implementation Kai Bu kaibu@zju.edu.cn

Register-Register ALU

Page 40: Lecture 5: Pipelining Implementation Kai Bu kaibu@zju.edu.cn

Register-Register ALU

Page 41: Lecture 5: Pipelining Implementation Kai Bu kaibu@zju.edu.cn

Register-Register ALU

Page 42: Lecture 5: Pipelining Implementation Kai Bu kaibu@zju.edu.cn

Register-Immediate ALU

Page 43: Lecture 5: Pipelining Implementation Kai Bu kaibu@zju.edu.cn

Register-Immediate ALU

Page 44: Lecture 5: Pipelining Implementation Kai Bu kaibu@zju.edu.cn

Register-Immediate ALU

Page 45: Lecture 5: Pipelining Implementation Kai Bu kaibu@zju.edu.cn

Register-Immediate ALU

Page 46: Lecture 5: Pipelining Implementation Kai Bu kaibu@zju.edu.cn

Register-Immediate ALU

Page 47: Lecture 5: Pipelining Implementation Kai Bu kaibu@zju.edu.cn

Register-Immediate ALU

Page 48: Lecture 5: Pipelining Implementation Kai Bu kaibu@zju.edu.cn

Branch

Page 49: Lecture 5: Pipelining Implementation Kai Bu kaibu@zju.edu.cn

Branch

Page 50: Lecture 5: Pipelining Implementation Kai Bu kaibu@zju.edu.cn

Branch

Page 51: Lecture 5: Pipelining Implementation Kai Bu kaibu@zju.edu.cn

Branch

Page 52: Lecture 5: Pipelining Implementation Kai Bu kaibu@zju.edu.cn

Branch

Page 53: Lecture 5: Pipelining Implementation Kai Bu kaibu@zju.edu.cn

Branch

Page 54: Lecture 5: Pipelining Implementation Kai Bu kaibu@zju.edu.cn

Outline

• Unpipelined MIPS• Pipelined MIPS• Other Pipelining Challenges

Page 55: Lecture 5: Pipelining Implementation Kai Bu kaibu@zju.edu.cn

Pipelined MIPS

NPCIR

ABIMM

CondALUOutput

LMDPipelineRegisters/Latches

Page 56: Lecture 5: Pipelining Implementation Kai Bu kaibu@zju.edu.cn

Instruction Type decidesactions on a pipeline stage

Page 57: Lecture 5: Pipelining Implementation Kai Bu kaibu@zju.edu.cn

Pipelined MIPS: IF, ID

• The first two stages are independent of instruction type because the instruction is not decoded until the end of ID;

• PC update

Page 58: Lecture 5: Pipelining Implementation Kai Bu kaibu@zju.edu.cn

Pipelined MIPS: EX, MEM, WB

Any value needed on a later pipeline stage must be placed in a pipeline register,and copied from one pipeline register to the next,until it is no longer needed.

Page 59: Lecture 5: Pipelining Implementation Kai Bu kaibu@zju.edu.cn

Data Hazard

• Instruction Issue: ID -> EX• If a data hazard exists, the instruction

is stalled before it is issued.• For integer pipeline, data hazards and

forwarding can be checked during ID• Detect hazards by comparing the

destination and sources of adjacent instruction

Page 60: Lecture 5: Pipelining Implementation Kai Bu kaibu@zju.edu.cn

Data Hazard Example

• Data hazards from LoadComparison between the destination of Loadand the sources on the following two instr

Page 61: Lecture 5: Pipelining Implementation Kai Bu kaibu@zju.edu.cn

Stall

• Prevent instructions in IF and ID from advancing

• Change the control portion of ID/EX to be a no-op

• Recirculate the contents of IF/ID registers to hold the stalled instr

Page 62: Lecture 5: Pipelining Implementation Kai Bu kaibu@zju.edu.cn

Forwarding

• Data path: from the ALU or data memory output to the ALU input, the data memory input, or the zero detection unit.

• Compare the destination registers of EX/MEM.IR and MEM/WB.IR against the source registers of ID/EX.IR and EX/MEM.IR

Page 63: Lecture 5: Pipelining Implementation Kai Bu kaibu@zju.edu.cn

Example: forwarding result is an ALU input

Page 64: Lecture 5: Pipelining Implementation Kai Bu kaibu@zju.edu.cn

MEM

/WR

ID/E

X

EX

/MEM

DataMemory

ALU

mux

mux

Registe

rs

NextPC

Immediate

mux

Source sinkEX/Mem.ALUoutput ALU inputMEM/WB.ALUoutput ALU inputMEM/WB.LMD ALU input

Forwarding: hw change

Page 65: Lecture 5: Pipelining Implementation Kai Bu kaibu@zju.edu.cn

store

loadMEM/WB.LMD DM input

Forwarding: hw change

?

Page 66: Lecture 5: Pipelining Implementation Kai Bu kaibu@zju.edu.cn

Branch

• Move zero test to the ID stagewith an additional ADDer computing target address

Page 67: Lecture 5: Pipelining Implementation Kai Bu kaibu@zju.edu.cn

Outline

• Unpipelined MIPS• Pipelined MIPS• Other Pipelining Challenges

Page 68: Lecture 5: Pipelining Implementation Kai Bu kaibu@zju.edu.cn

Exceptions: Instruction Execution Order

• interrupt/fault/exception• When the normal execution order of

instruction is changed• May force CPU to abort the instructions

in the pipeline before they complete

Page 69: Lecture 5: Pipelining Implementation Kai Bu kaibu@zju.edu.cn

Exceptions

• TypeI/O device requestinvoking os service from user programtracing instruction executionbreakpointinteger arithmetic overflowFP arithmetic anomalypage faultmisaligned memory addressmemory protection violationusing undefined/unimplemented instructionhardware malfunctionspower failure

Page 70: Lecture 5: Pipelining Implementation Kai Bu kaibu@zju.edu.cn

Exceptions: Requirements

• Synchronous vs asynchronous• User requested vs coerced• User maskable vs user nonmaskable• Within vs between instructions• Resume vs terminate

Page 71: Lecture 5: Pipelining Implementation Kai Bu kaibu@zju.edu.cn
Page 72: Lecture 5: Pipelining Implementation Kai Bu kaibu@zju.edu.cn
Page 73: Lecture 5: Pipelining Implementation Kai Bu kaibu@zju.edu.cn

Instruction Set Complications

• Instruction set specific factors that make pipelining harder to implement

• PP. C-49 – C.51

Page 74: Lecture 5: Pipelining Implementation Kai Bu kaibu@zju.edu.cn

?