pipelining

43
POLITECNICO DI MILANO Parallelism in wonderland: are you ready to see how deep the rabbit hole goes? Pipelining Ver. Jan 14, 2014 Marco D. Santambrogio: [email protected] Simone Campanoni: [email protected]

Upload: baruch

Post on 13-Jan-2016

25 views

Category:

Documents


0 download

DESCRIPTION

Pipelining. Ver. Jan 14, 2014. Marco D. Santambrogio: [email protected] Simone Campanoni: [email protected]. Outline. Processors and Instruction Sets Review of pipelining MIPS Reduced Instruction Set of MIPS  Processor Implementation of MIPS Processor Pipeline. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Pipelining

POLITECNICO DI MILANOParallelism in wonderland:

are you ready to see how deep the rabbit hole goes?

PipeliningVer. Jan 14, 2014

Marco D. Santambrogio: [email protected] Campanoni: [email protected]

Page 2: Pipelining

2

OutlineOutline

Processors and Instruction Sets

Review of pipelining

MIPSReduced Instruction Set of MIPS ProcessorImplementation of MIPS Processor Pipeline

Page 3: Pipelining

Main Characteristics of MIPSMain Characteristics of MIPS ArchitectureArchitecture

RISC (Reduced Instruction Set Computer) Architecture Based on the concept of executing only simple instructions in a reduced basic cycle to optimize the performance of CISC CPUs.LOAD/STORE ArchitectureALU operands come from the CPU general purpose registers and they cannot directly come from the memory. Dedicated instructions are necessary to:

load data from memory to registersstore data from registers to memory

Pipeline Architecture: Performance optimization technique based on the overlapping of the execution of multiple instructions derived from a sequential execution flow.3

Page 4: Pipelining

A Typical RISC ISAA Typical RISC ISA

4

32-bit fixed format instruction (3 formats)32 32-bit GPR (R0 contains zero, DP take pair)3-address, reg-reg arithmetic instructionSingle address mode for load/store: base + displacement

no indirection

Simple branch conditionsDelayed branch

Example: SPARC, MIPS, HP PA-Risc, DEC Alpha, IBM PowerPC, CDC 6600, CDC 7600, Cray-1, Cray-2, Cray-3

Page 5: Pipelining

Approaching an ISAApproaching an ISA

5

Instruction Set ArchitectureDefines set of operations, instruction format, hardware supported data types, named storage, addressing modes, sequencing

Meaning of each instruction is described by RTL on architected registers and memoryGiven technology constraints assemble adequate datapath

Architected storage mapped to actual storageFunction units to do all the required operationsPossible additional storage (eg. MAR, MBR, …)Interconnect to move information among regs and FUs

Map each instruction to sequence of RTLsCollate sequences into symbolic controller state transition diagram (STD)Implement controller

Page 6: Pipelining

6

Example: MIPSExample: MIPS

Op

31 26 01516202125

Rs1 Rd immediate

Op

31 26 025

Op

31 26 01516202125

Rs1 Rs2

target

Rd Opx

Register-Register

561011

Register-Immediate

Op

31 26 01516202125

Rs1 Rs2/Opx immediate

Branch

Jump / Call

Page 7: Pipelining

Datapath vs ControlDatapath vs Control

Datapath: Storage, FU, interconnect sufficient to perform the desired functions

Inputs are Control PointsOutputs are signals

Controller: State machine to orchestrate operation on the data path

Based on desired function and signals

Datapath Controller

Control Points

signals

7

Page 8: Pipelining

Datapath vs ControlDatapath vs Control

MemoryPC

PSW

Data pathControl Unit

CPU

IR

Registri

ALU

Data

Control

Instruction

8

Page 9: Pipelining

Starting scenarioStarting scenario

0789

… … … … …

0789 load R02,4000

0790 load R03,4004

0791 add R01,R02,R03

0792 load R02,4008

0793 add R01,R01,R02

0794 store R01,4000

… … … … …

… … … … …

4000 1492

4004 1918

4008 2006

… … … … …

PSW

Data pathData path Control UnitControl Unit

CPU

RegisterRegister

ALUALU

IR

PC

R00

R01

R02

R03

R04

R05

Memory

9

Page 10: Pipelining

0789

Read Instruction 0789Read Instruction 0789

0789

… … … … …

0789 load R02,4000

0790 load R03,4004

0791 add R01,R02,R03

0792 load R02,4008

0793 add R01,R01,R02

0794 store R01,4000

… … … … …

… … … … …

4000 1492

4004 1918

4008 2006

… … … … …

PSW

Data pathData path Control UnitControl Unit

CPU

RegistriRegistri

ALUALU

IR

PC

R00

R01

R02

R03

R04

R05

load R02,4000

+10790

Reading

Memory

10

Page 11: Pipelining

0790

Exe Instruction 0789Exe Instruction 0789

… … … … …

0789 load R02,4000

0790 load R03,4004

0791 add R01,R02,R03

0792 load R02,4008

0793 add R01,R01,R02

0794 store R01,4000

… … … … …

… … … … …

4000 1492

4004 1918

4008 2006

… … … … …

PSW

Data pathData path Control UnitControl Unit

CPU

RegistriRegistri

ALUALU

IR

PC

R00

R01

R02

R03

R04

R05

… load R02,4000

4000

1492

Reading

Memory

11

Page 12: Pipelining

0790

Read instruction 0790Read instruction 0790

0790

… … … … …

0789 load R02,4000

0790 load R03,4004

0791 add R01,R02,R03

0792 load R02,4008

0793 add R01,R01,R02

0794 store R01,4000

… … … … …

… … … … …

4000 1492

4004 1918

4008 2006

… … … … …

PSW

Data pathData path Control UnitControl Unit

CPU

RegistriRegistri

ALUALU

IR

PC

R00

R01

R02

R03

R04

R05

load R03,4004

+10791

load R02,4000

1492

Reading

Memory

12

Page 13: Pipelining

0791

Exe Instruction 0790Exe Instruction 0790

… … … … …

0789 load R02,4000

0790 load R03,4004

0791 add R01,R02,R03

0792 load R02,4008

0793 add R01,R01,R02

0794 store R01,4000

… … … … …

… … … … …

4000 1492

4004 1918

4008 2006

… … … … …

PSW

Data pathData path Control UnitControl Unit

CPU

RegistriRegistri

ALUALU

IR

PC

R00

R01

R02

R03

R04

R05

… load R03,4004

4004

1918

Reading

1492

Memory

13

Page 14: Pipelining

0791

Read Instruction 0791Read Instruction 0791

0791

… … … … …

0789 load R02,4000

0790 load R03,4004

0791 add R01,R02,R03

0792 load R02,4008

0793 add R01,R01,R02

0794 store R01,4000

… … … … …

… … … … …

4000 1492

4004 1918

4008 2006

… … … … …

PSW

Data pathData path Control UnitControl Unit

CPU

RegistriRegistri

ALUALU

IR

PC

R00

R01

R02

R03

R04

R05

add R01,R02,R03

+10792

load R03,4004

1492

Reading

1918

Memory

14

Page 15: Pipelining

0792

Exe Instruction 0791Exe Instruction 0791

… … … … …

0789 load R02,4000

0790 load R03,4004

0791 add R01,R02,R03

0792 load R02,4008

0793 add R01,R01,R02

0794 store R01,4000

… … … … …

… … … … …

4000 1492

4004 1918

4008 2006

… … … … …

PSW

Data pathData path Control UnitControl Unit

CPU

RegistriRegistri

ALUALU

IR

PC

R00

R01

R02

R03

R04

R05

… add R01,R02,R03

1492

1918

1492

1918

add

ackt

3410

Memory

15

Page 16: Pipelining

0792

Read Instruction 0792Read Instruction 0792

0792

… … … … …

0789 load R02,4000

0790 load R03,4004

0791 add R01,R02,R03

0792 load R02,4008

0793 add R01,R01,R02

0794 store R01,4000

… … … … …

… … … … …

4000 1492

4004 1918

4008 2006

… … … … …

PSW

Data pathData path Control UnitControl Unit

CPU

RegistriRegistri

ALUALU

IR

PC

R00

R01

R02

R03

R04

R05

load R02,4008

+10793

add R01,R02,R03

1492

Reading

1918

3410

Memory

16

Page 17: Pipelining

0793

Exe Instruction 0792Exe Instruction 0792

… … … … …

0789 load R02,4000

0790 load R03,4004

0791 add R01,R02,R03

0792 load R02,4008

0793 add R01,R01,R02

0794 store R01,4000

… … … … …

… … … … …

4000 1492

4004 1918

4008 2006

… … … … …

PSW

Data pathData path Control UnitControl Unit

CPU

RegistriRegistri

ALUALU

IR

PC

R00

R01

R02

R03

R04

R05

… load R02,4008

4008

2006

Reading

1492

1918

3410

Memory

17

Page 18: Pipelining

0793

Read Instruction 0793Read Instruction 0793

0793

… … … … …

0789 load R02,4000

0790 load R03,4004

0791 add R01,R02,R03

0792 load R02,4008

0793 add R01,R01,R02

0794 store R01,4000

… … … … …

… … … … …

4000 1492

4004 1918

4008 2006

… … … … …

PSW

Data pathData path Control UnitControl Unit

CPU

RegistriRegistri

ALUALU

IR

PC

R00

R01

R02

R03

R04

R05

add R01,R01,R02

+10794

load R02,4008

2006

Reading

1918

3410

Memory

18

Page 19: Pipelining

0794

Exe Instruction 0793Exe Instruction 0793

… … … … …

0789 load R02,4000

0790 load R03,4004

0791 add R01,R02,R03

0792 load R02,4008

0793 add R01,R01,R02

0794 store R01,4000

… … … … …

… … … … …

4000 1492

4004 1918

4008 2006

… … … … …

PSW

Data pathData path Control UnitControl Unit

CPU

RegistriRegistri

ALUALU

IR

PC

R00

R01

R02

R03

R04

R05

… add R01,R01,R02

2006

1918

2006

3410

add

ack5416

3410

Memory

19

Page 20: Pipelining

0794

Read Instruction 0794Read Instruction 0794

0794

… … … … …

0789 load R02,4000

0790 load R03,4004

0791 add R01,R02,R03

0792 load R02,4008

0793 add R01,R01,R02

0794 store R01,4000

… … … … …

… … … … …

4000 1492

4004 1918

4008 2006

… … … … …

PSW

Data pathData path Control UnitControl Unit

CPU

RegistriRegistri

ALUALU

IR

PC

R00

R01

R02

R03

R04

R05

store R01,4000

+10795

add R01,R01,R02

2006

Reading

1918

5416

Memory

20

Page 21: Pipelining

… … … … …

4000 1492

4004 1918

4008 2006

… … … … …5416

0795

Exe Instruction 0794Exe Instruction 0794

… … … … …

0789 load R02,4000

0790 load R03,4004

0791 add R01,R02,R03

0792 load R02,4008

0793 add R01,R01,R02

0794 store R01,4000

… … … … …

PSW

Data pathData path Control UnitControl Unit

CPU

RegistriRegistri

ALUALU

IR

PC

R00

R01

R02

R03

R04

R05

… store R01,4000

4000

writing

2006

1918

5416

Memory

21

Page 22: Pipelining

Reduced Instruction Set of MIPSReduced Instruction Set of MIPS ProcessorProcessor

ALU instructions:add $s1, $s2, $s3 # $s1 $s2 + $s3

addi $s1, $s1, 4 # $s1 $s1 + 4

Load/store instructions: lw $s1, offset ($s2) # $s1

M[$s2+offset]

sw $s1, offset ($s2) M[$s2+offset] $s1

Branch instructions to control the control flow of the program:

Conditional branches: the branch is taken only if the condition is satisfied. Examples: beq (branch on equal) and bne (branch on not equal) beq $s1, $s2, L1 # go to L1 if ($s1 == $s2)bne $s1, $s2, L1 # go to L1 if ($s1 != $s2)Unconditional jumps: the branch is always taken. Examples: j (jump) and jr (jump register) j L1 # go to L1jr $s1 # go to add. contained in $s1

22

Page 23: Pipelining

Execution of MIPS Execution of MIPS InstructionsInstructions

Every instruction in the MIPS subset can be implemented in at most 5 clock cycles as follows:Instruction Fetch Cycle:

Send the content of Program Counter register to Instruction Memory and fetch the current instruction from Instruction Memory. Update the PC to the next sequential address by adding 4 to the PC (since each instruction is 4 bytes).

Instruction Decode and Register Read CycleDecode the current instruction (fixed-field decoding) and read from the Register File of one or two registers corresponding to the registers specified in the instruction fields.Sign-extension of the offset field of the instruction in case it is needed.23

Page 24: Pipelining

Execution of MIPS Execution of MIPS instructionsinstructions

Execution Cycle The ALU operates on the operands prepared in the previous cycle depending on the instruction type:

Register-Register ALU Instructions: ALU executes the specified operation on the operands read from the RF

Register-Immediate ALU Instructions: ALU executes the specified operation on the first operand read from the RF and the sign-extended immediate operand

Memory Reference: ALU adds the base register and the offset to calculate the effective address.

Conditional branches:Compare the two registers read from RF and compute the possible branch target address by adding the sign-extended offset to the incremented PC.

24

Page 25: Pipelining

Execution of MIPS Execution of MIPS instructionsinstructions

Memory Access (ME)Load instructions require a read access to the Data Memory using the effective addressStore instructions require a write access to the Data Memory using the effective address to write the data from the source register read from the RF Conditional branches can update the content of the PC with the branch target address, if the conditional test yielded true.

Write-Back Cycle (WB)Load instructions write the data read from memory in the destination register of the RFALU instructions write the ALU results into the destination register of the RF.

25

Page 26: Pipelining

Execution of MIPS Execution of MIPS InstructionsInstructions

ALU Instructions: op $x,$y,$z

Read of Source Regs. $y and $z

Instr. Fetch &. PC Increm.

ALU OP ($y op $z)

Write Back of Destinat. Reg. $x

Conditional Branch: beq $x,$y,offset

Read of Source Regs. $x and $y

Instr. Fetch & PC Increm.

ALU Op. ($x-$y) & (PC+4+offset)

Write PC

Load Instructions: lw $x,offset($y)

Read of Base Reg. $y

Instr. Fetch & PC Increm.

ALU Op. ($y+offset)

Read Mem. M($y+offset)

Write Back of Destinat. Reg. $x

Store Instructions: sw $x,offset($y)

Read of Base Reg. $y & Source $x

Instr. Fetch & PC Increm.

ALU Op. ($y+offset)

Write Mem. M($y+offset)

26

Page 27: Pipelining

MemoryAccess

Write

Back

InstructionFetch

Instr. DecodeReg. Fetch

ExecuteAddr. Calc

LMD

ALU

MUX

Memory

Reg File

MUX

MUX

Data

Memory

MUX

SignExtend

4

Adder

Zero?

Next SEQ PC

Address

Next PC

WB Data

Inst

RD

RS1

RS2

ImmIR <= mem[PC]

PC <= PC + 4

Reg[IRrd] <= Reg[IRrs] opIRop Reg[IRrt]

MIPS Data pathMIPS Data path

27

Page 28: Pipelining

Instructions LatencyInstructions Latency

Instruction Type

Instruct.Mem.

RegisterRead

ALUOp.

DataMemory

WriteBack

TotalLatency

ALU Instr. 2 1 2 0 1 6 ns

Load 2 1 2 2 1 8 ns

Store 2 1 2 2 0 7 ns

Cond. Branch 2 1 2 0 0 5 ns

Jump 2 0 0 0 0 2 ns

28

Page 29: Pipelining

Single-cycle Implementation Single-cycle Implementation of MIPSof MIPS

The length of the clock cycle is defined by the critical path given by the load instruction: T = 8 ns (f = 125 MHz).We assume each instruction is executed in a single clock cycle

Each module must be used once in a clock cycleThe modules used more than once in a cycle must be duplicated.

We need an Instruction Memory separated from the Data Memory.Some modules must be duplicated, while other modules must be shared from different instruction flowsTo share a module between two different instructions, we need a multiplexer to enable multiple inputs to a module and select one of different inputs based on the configuration of control lines.

29

Page 30: Pipelining

Implementation of MIPS data path with Implementation of MIPS data path with Control UnitControl Unit

Content Reg. 2

Content Reg. 1

[15-0]

[25-21]

[20-16]

[15-11]

Read Data

Write Data

RagisterRead 2

Register Read 1

Write Register

Zero

32 bit 16 bit

M U X

M U X Result

ALU Register File

Write Data

Write Address

Read Address

Data Memory

Sign Extension

Instruction Memory

Instruction

Read Address

+4 Adder

PC

2-bit Left Shifter

Adder M U X

M U X

RegWR

MemWR MemRD

OP

[31-26] Control Unit

Destination Register Branch

MemToReg

ALU_opB

A

B

ALU Control

Unit ALU_op

[5-0]

30

Page 31: Pipelining

Multi-cycle Multi-cycle ImplementationImplementation

The instruction execution is distributed on multiple cycles (5 cycles for MIPS)The basic cycle is smaller (2 ns instruction latency = 10 ns)Implementation of multi-cycle CPU:

Each phase of the instruction execution requires a clock cycleEach module can be used more than once per instruction in different clock cycles: possible sharing of modulesWe need internal registers to store the values to be used in the next clock cycles.

31

Page 32: Pipelining

PipeliningPipelining Performance optimization technique based on the overlap of the execution of multiple instructions deriving from a sequential execution flow.Pipelining exploits the parallelism among instructions in a sequential instruction stream.Basic idea: The execution of an instruction is divided into different phases (pipelines stages), requiring a fraction of the time necessary to complete the instruction.The stages are connected one to the next to form the pipeline: instructions enter in the pipeline at one end, progress through the stages, and exit from the other end, as in an assembly line.

32

Page 33: Pipelining

PipeliningPipelining

Advantage: technique transparent for the programmer.Technique similar to a assembly line: a new car exits from the assembly line in the time necessary to complete one of the phases.An assembly line does not reduce the time necessary to complete a car, but increases the number of cars produced simultaneously and the frequency to complete cars.

33

Page 34: Pipelining

Sequential vs. PipeliningSequential vs. Pipelining ExecutionExecution

2 ns

Time

I2

I3

I1 WB MEM EX ID IF

2 ns

2 ns

WB MEM EX ID IF

WB MEM EX ID IF

WB MEM EX ID IF

WB MEM EX ID IF 2 ns

I4

I5

I2

I1

WB MEM EX ID IF WB MEM EX ID IF

10 ns 10 ns

34

Page 35: Pipelining

PipeliningPipelining

The time to advance the instruction of one stage in the pipeline corresponds to a clock cycle.The pipeline stages must be synchronized: the duration of a clock cycle is defined by the time requested by the slower stage of the pipeline (i.e. 2 ns).The goal is to balance the length of each pipeline stage If the stages are perfectly balanced, the ideal speedup due to pipelining is equal to the number of pipeline stages.

35

Page 36: Pipelining

Performance ImprovementPerformance Improvement

Ideal case (asymptotically):If we consider the single-cycle unpipelined CPU1 with clock cycle of 8 ns and the pipelined CPU2 with 5 stages of 2 ns :

The latency (total execution time) of each instruction is worsened: from 8 ns to 10 nsThe throughput (number of instructions completed in the time unit) is improved of 4 times: (1 instruction completed each 8 ns) vs.

(1 instruction completed each 2 ns)

36

Page 37: Pipelining

Performance ImprovementPerformance Improvement

Ideal case (asymptotically): If we consider the multi-cycle unpipelined CPU3 composed of 5 cycles of 2 ns and the pipelined CPU2 with 5 stages of 2 ns :

The latency (total execution time) of each instruction is not varied (10 ns)The throughput (number of instructions completed in the time unit) is improved of 5 times: (1 instruction completed every 10 ns) vs. (1 instruction completed every 2 ns)

37

Page 38: Pipelining

Pipeline Execution of MIPS Pipeline Execution of MIPS InstructionsInstructions

ALU Instructions: op $x,$y,$z

Conditional Branches: beq $x,$y,offset

Load Instructions: lw $x,offset($y)

Read of Base Reg. $y

Instr. Fetch & PC Increm.

ALU Op. ($y+offset)

Read Mem. M($y+offset)

Write Back Destinat. Reg. $x

Read of Source Regs. $y and $z

Instr. Fetch & PC Increm.

ALU Op. ($y op $z)

Write Back Destinat. Reg. $x

Store Instructions: sw $x,offset($y) Read of Base Reg. $y & Source $x

Instr. Fetch & PC Increm.

ALU Op. ($y+offset)

Write Mem. M($y+offset)

Read of Source Regs. $x and $y

Instr. Fetch & PC Increm.

ALU Op. ($x-$y) & (PC+4+offset)

Write PC

ID Instruction Decode

IF Instruction Fetch

EX Execution

ME Memory Access

WB Write Back

38

Page 39: Pipelining

Implementation of MIPS Implementation of MIPS pipelinepipeline

Content register 2

Content register 1

[15-0]

[25-21]

[20-16]

[15-11]

Read Data

Write Data

Register Read 2

Register Read 1

Register Write

Zero

32 bit 16 bit

M U X

M U X Result

ALU

RF

Write Data

Write Address

Read Address

Data Memory

Sign extension

Instruction Memory

Instruction

Read Address

+4 Adder

PC

2-bit Left Shifter

M U X

M U X

ID/EX IF/ID MEM/WB EX/MEM

IF — Instruction Fetch

ID — Instruction Decode EX — Execution WB — Write Back

MEM — Memory Access

WR

WR RD OP

Adder

39

Page 40: Pipelining

Visualizing PipeliningVisualizing Pipelining

Instr.

Order

Time (clock cycles)

Reg ALU

DMemIfetch Reg

Reg ALU

DMemIfetch Reg

Reg ALU

DMemIfetch Reg

Reg ALU

DMemIfetch Reg

Cycle 1Cycle 2Cycle 3Cycle 4 Cycle 6Cycle 7Cycle 5

40

Page 41: Pipelining

Note: Optimized PipelineNote: Optimized Pipeline

Register File used in 2 stages: Read access during ID and write access during WB

What happens if read and write refer to the same register in the same clock cycle?

It is necessary to insert one stall

Optimized Pipeline: the RF read occurs in the second half of clock cycle and the RF write in the first half of clock cycle

What happens if read and write refer to the same register in the same clock cycle?

It is not necessary to insert one stall

41

From now o

n, From

now on,

this is th

e this

is the Pipe

line Pipeline

we are goi

ng to use

we are goi

ng to use

Page 42: Pipelining

42

5 Steps of MIPS Datapath5 Steps of MIPS DatapathFigure A.3, Page A-9Figure A.3, Page A-9

MemoryAccess

Write

Back

InstructionFetch

Instr. DecodeReg. Fetch

ExecuteAddr. Calc

ALU

Memory

Reg File

MUX

MUX

Data

Memory

MUX

SignExtend

Zero?

IF/ID

ID/EX

MEM/WB

EX/MEM

4

Adder

Next SEQ PC Next SEQ PC

RD RD RD

WB Data

Data stationary control local decode for each instruction phase / pipeline stage

Next PC

Address

RS1

RS2

Imm

MUX

IR <= mem[PC]; PC <= PC + 4

A <= Reg[IRrs];

B <= Reg[IRrt]

rslt <= A opIRop B

Reg[IRrd] <= WB

WB <= rslt

42

Page 43: Pipelining

Questions

43