74
Advanced Topics on Heterogeneous System Architectures Politecnico di Milano Seminar Room A. Alario 16 November, 2015 Antonio R. Miele Marco D. Santambrogio Politecnico di Milano Pipelining

Pipelining - Intranet DEIBhome.deib.polimi.it › santambr › dida › phd › hsa › 2015 › doc › PDF › 3...Pipelining! 2 Outline! • Processors and Instruction Sets! •

  • Upload
    others

  • View
    8

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Pipelining - Intranet DEIBhome.deib.polimi.it › santambr › dida › phd › hsa › 2015 › doc › PDF › 3...Pipelining! 2 Outline! • Processors and Instruction Sets! •

AdvancedTopicsonHeterogeneousSystemArchitectures

Politecnico di Milano!Seminar Room A. Alario!

16 November, 2015!

Antonio R. Miele!Marco D. Santambrogio!

Politecnico di Milano!

Pipelining!

Page 2: Pipelining - Intranet DEIBhome.deib.polimi.it › santambr › dida › phd › hsa › 2015 › doc › PDF › 3...Pipelining! 2 Outline! • Processors and Instruction Sets! •

2

Outline!•  Processors and Instruction Sets!

•  Review of pipelining!

•  MIPS!– Reduced Instruction Set of MIPS™ Processor!–  Implementation of MIPS Processor Pipeline!–  The Problem of Pipeline Hazards!– Performance Issues in Pipelining!

2

Page 3: Pipelining - Intranet DEIBhome.deib.polimi.it › santambr › dida › phd › hsa › 2015 › doc › PDF › 3...Pipelining! 2 Outline! • Processors and Instruction Sets! •

Main Characteristics of MIPS™ Architecture!

•  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 Architecture!ALU 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 registers!–  store 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 - Intranet DEIBhome.deib.polimi.it › santambr › dida › phd › hsa › 2015 › doc › PDF › 3...Pipelining! 2 Outline! • Processors and Instruction Sets! •

A Typical RISC ISA!•  32-bit fixed format instruction (3 formats)!•  32 32-bit GPR (R0 contains zero, DP take pair)!•  3-address, reg-reg arithmetic instruction!•  Single address mode for load/store: !

base + displacement!–  no indirection!

•  Simple branch conditions!•  Delayed branch!

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

4

Page 5: Pipelining - Intranet DEIBhome.deib.polimi.it › santambr › dida › phd › hsa › 2015 › doc › PDF › 3...Pipelining! 2 Outline! • Processors and Instruction Sets! •

Approaching an ISA!•  Instruction Set Architecture!

–  Defines 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 memory!

•  Given technology constraints assemble adequate datapath!–  Architected storage mapped to actual storage!–  Function units to do all the required operations!–  Possible additional storage (eg. MAR, MBR, …)!–  Interconnect to move information among regs and FUs!

•  Map each instruction to sequence of RTLs!•  Collate sequences into symbolic controller state transition

diagram (STD)!•  Implement controller!

5

Page 6: Pipelining - Intranet DEIBhome.deib.polimi.it › santambr › dida › phd › hsa › 2015 › doc › PDF › 3...Pipelining! 2 Outline! • Processors and Instruction Sets! •

Example: MIPS!6

Op 31 26 0 15 16 20 21 25

Rs1 Rd immediate

Op 31 26 0 25

Op 31 26 0 15 16 20 21 25

Rs1 Rs2

target

Rd Opx

Register-Register 5 6 10 11

Register-Immediate

Op 31 26 0 15 16 20 21 25

Rs1 Rs2/Opx immediate

Branch

Jump / Call

Page 7: Pipelining - Intranet DEIBhome.deib.polimi.it › santambr › dida › phd › hsa › 2015 › doc › PDF › 3...Pipelining! 2 Outline! • Processors and Instruction Sets! •

Datapath vs Control!

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

–  Inputs are Control Points –  Outputs 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 - Intranet DEIBhome.deib.polimi.it › santambr › dida › phd › hsa › 2015 › doc › PDF › 3...Pipelining! 2 Outline! • Processors and Instruction Sets! •

Datapath vs Control!

Memory Da

taBUS

AddressB

US

ControlBUS

PC

PSW

Datapath ControlUnit CPU

IR Registri

ALU

Data

Control

InstrucBon

8

Page 9: Pipelining - Intranet DEIBhome.deib.polimi.it › santambr › dida › phd › hsa › 2015 › doc › PDF › 3...Pipelining! 2 Outline! • Processors and Instruction Sets! •

The code…!

9

…… ………

0789 loadR02,4000

0790 loadR03,4004

0791 addR01,R02,R03

0792 loadR02,4008

0793 addR01,R01,R02

0794 storeR01,4000

…… ………

Page 10: Pipelining - Intranet DEIBhome.deib.polimi.it › santambr › dida › phd › hsa › 2015 › doc › PDF › 3...Pipelining! 2 Outline! • Processors and Instruction Sets! •

Starting scenario!

0789Da

taBUS

AddressB

US

ControBUS

…… ………

0789 loadR02,4000

0790 loadR03,4004

0791 addR01,R02,R03

0792 loadR02,4008

0793 addR01,R01,R02

0794 storeR01,4000

…… ………

…… ………

4000 1492

4004 1918

4008 2006

…… ………

PSW

Datapath ControlUnit CPU

Register

ALU

IR

PC

R00 R01 R02 R03 R04 R05 …

Memory

InstrucBon

Da

ta

10

Page 11: Pipelining - Intranet DEIBhome.deib.polimi.it › santambr › dida › phd › hsa › 2015 › doc › PDF › 3...Pipelining! 2 Outline! • Processors and Instruction Sets! •

0789

Read Instruction 0789!

0789

…… ………

0789 loadR02,4000

0790 loadR03,4004

0791 addR01,R02,R03

0792 loadR02,4008

0793 addR01,R01,R02

0794 storeR01,4000

…… ………

…… ………

4000 1492

4004 1918

4008 2006

…… ………

PSW

Datapath ControlUnit

CPU

Registri

ALU

IR

PC

R00 R01 R02 R03 R04 R05 …

loadR02,4000

+10790

Reading

Memory

InstrucBon

Da

ta

DataBus

AddressB

us

Controbus

11

Page 12: Pipelining - Intranet DEIBhome.deib.polimi.it › santambr › dida › phd › hsa › 2015 › doc › PDF › 3...Pipelining! 2 Outline! • Processors and Instruction Sets! •

0790

Exe Instruction 0789!…… ………

0789 loadR02,4000

0790 loadR03,4004

0791 addR01,R02,R03

0792 loadR02,4008

0793 addR01,R01,R02

0794 storeR01,4000

…… ………

…… ………

4000 1492

4004 1918

4008 2006

…… ………

PSW

Datapath ControlUnit

CPU

Registri

ALU

IR

PC

R00 R01 R02 R03 R04 R05 … loadR02,40004000

1492

Reading

Memory

InstrucBon

Da

ta

DataBus

AddressB

us

Controbus

12

Page 13: Pipelining - Intranet DEIBhome.deib.polimi.it › santambr › dida › phd › hsa › 2015 › doc › PDF › 3...Pipelining! 2 Outline! • Processors and Instruction Sets! •

0790

Read instruction 0790!

0790

…… ………

0789 loadR02,4000

0790 loadR03,4004

0791 addR01,R02,R03

0792 loadR02,4008

0793 addR01,R01,R02

0794 storeR01,4000

…… ………

…… ………

4000 1492

4004 1918

4008 2006

…… ………

PSW

Datapath ControlUnit

CPU

Registri

ALU

IR

PC

R00 R01 R02 R03 R04 R05 …

loadR03,4004

+10791

loadR02,4000

1492

Reading

Memory

InstrucBon

Da

ta

DataBus

AddressB

us

Controbus

13

Page 14: Pipelining - Intranet DEIBhome.deib.polimi.it › santambr › dida › phd › hsa › 2015 › doc › PDF › 3...Pipelining! 2 Outline! • Processors and Instruction Sets! •

0791

Exe Instruction 0790!…… ………

0789 loadR02,4000

0790 loadR03,4004

0791 addR01,R02,R03

0792 loadR02,4008

0793 addR01,R01,R02

0794 storeR01,4000

…… ………

…… ………

4000 1492

4004 1918

4008 2006

…… ………

PSW

Datapath ControlUnit

CPU

Registri

ALU

IR

PC

R00 R01 R02 R03 R04 R05 … loadR03,40044004

1918

Reading

1492

Memory

InstrucBon

Da

ta

DataBus

AddressB

us

Controbus

14

Page 15: Pipelining - Intranet DEIBhome.deib.polimi.it › santambr › dida › phd › hsa › 2015 › doc › PDF › 3...Pipelining! 2 Outline! • Processors and Instruction Sets! •

0791

Read Instruction 0791!

0791

…… ………

0789 loadR02,4000

0790 loadR03,4004

0791 addR01,R02,R03

0792 loadR02,4008

0793 addR01,R01,R02

0794 storeR01,4000

…… ………

…… ………

4000 1492

4004 1918

4008 2006

…… ………

PSW

Datapath ControlUnit

CPU

Registri

ALU

IR

PC

R00 R01 R02 R03 R04 R05 …

addR01,R02,R03

+10792

loadR03,4004

1492

Reading

1918

Memory

InstrucBon

Da

ta

DataBus

AddressB

us

Controbus

15

Page 16: Pipelining - Intranet DEIBhome.deib.polimi.it › santambr › dida › phd › hsa › 2015 › doc › PDF › 3...Pipelining! 2 Outline! • Processors and Instruction Sets! •

0792

Exe Instruction 0791!…… ………

0789 loadR02,4000

0790 loadR03,4004

0791 addR01,R02,R03

0792 loadR02,4008

0793 addR01,R01,R02

0794 storeR01,4000

…… ………

…… ………

4000 1492

4004 1918

4008 2006

…… ………

PSW

Datapath ControlUnit

CPU

Registri

ALU

IR

PC

R00 R01 R02 R03 R04 R05 … addR01,R02,R03

1492

1918

1492

1918

add

ackt3410

Memory

InstrucBon

Da

ta

DataBus

AddressB

us

Controbus

16

Page 17: Pipelining - Intranet DEIBhome.deib.polimi.it › santambr › dida › phd › hsa › 2015 › doc › PDF › 3...Pipelining! 2 Outline! • Processors and Instruction Sets! •

0792

Read Instruction 0792!

0792

…… ………

0789 loadR02,4000

0790 loadR03,4004

0791 addR01,R02,R03

0792 loadR02,4008

0793 addR01,R01,R02

0794 storeR01,4000

…… ………

…… ………

4000 1492

4004 1918

4008 2006

…… ………

PSW

Datapath ControlUnit

CPU

Registri

ALU

IR

PC

R00 R01 R02 R03 R04 R05 …

loadR02,4008

+10793

addR01,R02,R03

1492

Reading

1918

3410

Memory

InstrucBon

Da

ta

DataBus

AddressB

us

Controbus

17

Page 18: Pipelining - Intranet DEIBhome.deib.polimi.it › santambr › dida › phd › hsa › 2015 › doc › PDF › 3...Pipelining! 2 Outline! • Processors and Instruction Sets! •

0793

Exe Instruction 0792!…… ………

0789 loadR02,4000

0790 loadR03,4004

0791 addR01,R02,R03

0792 loadR02,4008

0793 addR01,R01,R02

0794 storeR01,4000

…… ………

…… ………

4000 1492

4004 1918

4008 2006

…… ………

PSW

Datapath ControlUnit

CPU

Registri

ALU

IR

PC

R00 R01 R02 R03 R04 R05 … loadR02,40084008

2006

Reading

1492

1918

3410

Memory

InstrucBon

Da

ta

DataBus

AddressB

us

Controbus

18

Page 19: Pipelining - Intranet DEIBhome.deib.polimi.it › santambr › dida › phd › hsa › 2015 › doc › PDF › 3...Pipelining! 2 Outline! • Processors and Instruction Sets! •

0793

Read Instruction 0793!

0793

…… ………

0789 loadR02,4000

0790 loadR03,4004

0791 addR01,R02,R03

0792 loadR02,4008

0793 addR01,R01,R02

0794 storeR01,4000

…… ………

…… ………

4000 1492

4004 1918

4008 2006

…… ………

PSW

Datapath ControlUnit

CPU

Registri

ALU

IR

PC

R00 R01 R02 R03 R04 R05 …

addR01,R01,R02

+10794

loadR02,4008

2006

Reading

1918

3410

Memory

InstrucBon

Da

ta

DataBus

AddressB

us

Controbus

19

Page 20: Pipelining - Intranet DEIBhome.deib.polimi.it › santambr › dida › phd › hsa › 2015 › doc › PDF › 3...Pipelining! 2 Outline! • Processors and Instruction Sets! •

0794

Exe Instruction 0793!…… ………

0789 loadR02,4000

0790 loadR03,4004

0791 addR01,R02,R03

0792 loadR02,4008

0793 addR01,R01,R02

0794 storeR01,4000

…… ………

…… ………

4000 1492

4004 1918

4008 2006

…… ………

PSW

Datapath ControlUnit

CPU

Registri

ALU

IR

PC

R00 R01 R02 R03 R04 R05 … addR01,R01,R02

2006

1918

2006

3410

add

ack5416

3410

Memory

InstrucBon

Da

ta

DataBus

AddressB

us

Controbus

20

Page 21: Pipelining - Intranet DEIBhome.deib.polimi.it › santambr › dida › phd › hsa › 2015 › doc › PDF › 3...Pipelining! 2 Outline! • Processors and Instruction Sets! •

0794

Read Instruction 0794!

0794

…… ………

0789 loadR02,4000

0790 loadR03,4004

0791 addR01,R02,R03

0792 loadR02,4008

0793 addR01,R01,R02

0794 storeR01,4000

…… ………

…… ………

4000 1492

4004 1918

4008 2006

…… ………

PSW

Datapath ControlUnit CPU

Registri

ALU

IR

PC

R00 R01 R02 R03 R04 R05 …

storeR01,4000

+10795

addR01,R01,R02

2006

Reading

1918

5416

Memory

InstrucBon

Da

ta

DataBus

AddressB

us

Controbus

21

Page 22: Pipelining - Intranet DEIBhome.deib.polimi.it › santambr › dida › phd › hsa › 2015 › doc › PDF › 3...Pipelining! 2 Outline! • Processors and Instruction Sets! •

…… ………

4000 1492

4004 1918

4008 2006

…… ………5416

0795

Exe Instruction 0794!…… ………

0789 loadR02,4000

0790 loadR03,4004

0791 addR01,R02,R03

0792 loadR02,4008

0793 addR01,R01,R02

0794 storeR01,4000

…… ………

PSW

Datapath ControlUnit CPU

Registri

ALU

IR

PC

R00 R01 R02 R03 R04 R05 … storeR01,40004000

writing

2006

1918

5416

Memory

InstrucBon

Da

ta

DataBus

AddressB

us

Controbus

22

Page 23: Pipelining - Intranet DEIBhome.deib.polimi.it › santambr › dida › phd › hsa › 2015 › doc › PDF › 3...Pipelining! 2 Outline! • Processors and Instruction Sets! •

Reduced Instruction Set of MIPS Processor!

•  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 L1!jr $s1 # go to add. contained in $s1!

23

Page 24: Pipelining - Intranet DEIBhome.deib.polimi.it › santambr › dida › phd › hsa › 2015 › doc › PDF › 3...Pipelining! 2 Outline! • Processors and Instruction Sets! •

Execution of MIPS Instructions! 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 Cycle!–  Decode 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.!

24

Page 25: Pipelining - Intranet DEIBhome.deib.polimi.it › santambr › dida › phd › hsa › 2015 › doc › PDF › 3...Pipelining! 2 Outline! • Processors and Instruction Sets! •

Execution of MIPS instructions!•  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.!

25

Page 26: Pipelining - Intranet DEIBhome.deib.polimi.it › santambr › dida › phd › hsa › 2015 › doc › PDF › 3...Pipelining! 2 Outline! • Processors and Instruction Sets! •

Execution of MIPS instructions!•  Memory Access (ME)!

–  Load instructions require a read access to the Data Memory using the effective address!

–  Store 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 RF!–  ALU instructions write the ALU results into the

destination register of the RF.!

26

Page 27: Pipelining - Intranet DEIBhome.deib.polimi.it › santambr › dida › phd › hsa › 2015 › doc › PDF › 3...Pipelining! 2 Outline! • Processors and Instruction Sets! •

Execution of MIPS Instructions!

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)

27

Page 28: Pipelining - Intranet DEIBhome.deib.polimi.it › santambr › dida › phd › hsa › 2015 › doc › PDF › 3...Pipelining! 2 Outline! • Processors and Instruction Sets! •

Memory Access

Write Back

Instruction Fetch

Instr. Decode Reg. Fetch

Execute Addr. Calc

L M D

ALU

MU

X

Mem

ory

Reg File

MU

X

MU

X

Data

Mem

ory

MU

X

Sign Extend

4

Adder Zero?

Next SEQ PC

Address

Next PC

WB Data

Inst

RD

RS1 RS2

Imm IR <= mem[PC]

PC <= PC + 4

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

MIPS Data path!28

Page 29: Pipelining - Intranet DEIBhome.deib.polimi.it › santambr › dida › phd › hsa › 2015 › doc › PDF › 3...Pipelining! 2 Outline! • Processors and Instruction Sets! •

Instructions Latency!

Instruction Type

Instruct. Mem.

Register Read

ALU Op.

Data Memory

Write Back

Total Latency

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

29

Page 30: Pipelining - Intranet DEIBhome.deib.polimi.it › santambr › dida › phd › hsa › 2015 › doc › PDF › 3...Pipelining! 2 Outline! • Processors and Instruction Sets! •

Single-cycle Implementation of 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 cycle!–  The 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 flows!•  To 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.!

30

Page 31: Pipelining - Intranet DEIBhome.deib.polimi.it › santambr › dida › phd › hsa › 2015 › doc › PDF › 3...Pipelining! 2 Outline! • Processors and Instruction Sets! •

Implementation of MIPS data path with Control Unit!

C ontentR eg.2

C ontentR eg.1

[15-0]

[25-21]

[20-16]

[15-11]

R eadData

WriteData

R agis terR ead2

R egis terR ead1

WriteR egis ter

Z ero

32bit16bit

MUX

MUX R esult

AL U Reg is terF ile

WriteData

WriteAddress

R eadAddress

DataMemory

S ignE xtens ion

Ins truc tionMemory

Ins truction

R eadAddress

+4Adder

PC

2-bitL eftS hifter

Adder MUX

MUX

R egWR

MemWR MemRD

OP

[31-26] C ontrolUnit

DestinationR egis ter B ranch

MemToR eg

ALU_opB

A

B

ALUC ontrolUnit

ALU_op

[5-0]

31

Page 32: Pipelining - Intranet DEIBhome.deib.polimi.it › santambr › dida › phd › hsa › 2015 › doc › PDF › 3...Pipelining! 2 Outline! • Processors and Instruction Sets! •

Multi-cycle Implementation!•  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 cycle!

–  Each module can be used more than once per instruction in different clock cycles: possible sharing of modules!

–  We need internal registers to store the values to be used in the next clock cycles.!

32

Page 33: Pipelining - Intranet DEIBhome.deib.polimi.it › santambr › dida › phd › hsa › 2015 › doc › PDF › 3...Pipelining! 2 Outline! • Processors and Instruction Sets! •

Pipelining !•  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.

33

Page 34: Pipelining - Intranet DEIBhome.deib.polimi.it › santambr › dida › phd › hsa › 2015 › doc › PDF › 3...Pipelining! 2 Outline! • Processors and Instruction Sets! •

Pipelining!•  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.!

34

Page 35: Pipelining - Intranet DEIBhome.deib.polimi.it › santambr › dida › phd › hsa › 2015 › doc › PDF › 3...Pipelining! 2 Outline! • Processors and Instruction Sets! •

Sequential vs. Pipelining Execution!

35

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

Page 36: Pipelining - Intranet DEIBhome.deib.polimi.it › santambr › dida › phd › hsa › 2015 › doc › PDF › 3...Pipelining! 2 Outline! • Processors and Instruction Sets! •

Pipelining!•  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. !

36

Page 37: Pipelining - Intranet DEIBhome.deib.polimi.it › santambr › dida › phd › hsa › 2015 › doc › PDF › 3...Pipelining! 2 Outline! • Processors and Instruction Sets! •

Performance 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 ns!–  The 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)!

37

Page 38: Pipelining - Intranet DEIBhome.deib.polimi.it › santambr › dida › phd › hsa › 2015 › doc › PDF › 3...Pipelining! 2 Outline! • Processors and Instruction Sets! •

Performance 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)!

38

Page 39: Pipelining - Intranet DEIBhome.deib.polimi.it › santambr › dida › phd › hsa › 2015 › doc › PDF › 3...Pipelining! 2 Outline! • Processors and Instruction Sets! •

Pipeline Execution of MIPS Instructions

39

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

Page 40: Pipelining - Intranet DEIBhome.deib.polimi.it › santambr › dida › phd › hsa › 2015 › doc › PDF › 3...Pipelining! 2 Outline! • Processors and Instruction Sets! •

Implementation of MIPS pipeline!

40

C ontentregis ter2

C ontentregis ter1

[15-0]

[25-21]

[20-16]

[15-11]

R eadData

WriteData

R egis terR ead2

R egis terR ead1

R egis terWrite

Z ero

32bit16bit

MUX

MUX R esult

AL U

R F

WriteData

WriteAddress

R eadAddress

DataMemory

S ignextens ion

Ins truc tionMemory

Ins truction

R eadAddress

+4Adder

PC

2-bitL eftS hifter

MUX

MUX

ID/E X IF /ID MEM/WB E X/MEM

IF — Instruction Fetch

ID — Instruction Decode EX — Execution WB — Write Back

MEM — Memory Access

WR

WR RD OP

Adder

Page 41: Pipelining - Intranet DEIBhome.deib.polimi.it › santambr › dida › phd › hsa › 2015 › doc › PDF › 3...Pipelining! 2 Outline! • Processors and Instruction Sets! •

Visualizing Pipelining

41

I n s t r. O r d e r

Time (clock cycles)

Reg ALU

DMem Ifetch Reg

Reg ALU

DMem Ifetch Reg

Reg ALU

DMem Ifetch Reg

Reg ALU

DMem Ifetch Reg

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

Page 42: Pipelining - Intranet DEIBhome.deib.polimi.it › santambr › dida › phd › hsa › 2015 › doc › PDF › 3...Pipelining! 2 Outline! • Processors and Instruction Sets! •

Note: 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!

42

42

Page 43: Pipelining - Intranet DEIBhome.deib.polimi.it › santambr › dida › phd › hsa › 2015 › doc › PDF › 3...Pipelining! 2 Outline! • Processors and Instruction Sets! •

Note: 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!

43

Fromnowon,

thisisthePipelin

e

wearegoingto

use

43

Page 44: Pipelining - Intranet DEIBhome.deib.polimi.it › santambr › dida › phd › hsa › 2015 › doc › PDF › 3...Pipelining! 2 Outline! • Processors and Instruction Sets! •

Memory Access

Write Back

Instruction Fetch

Instr. Decode Reg. Fetch

Execute Addr. Calc

ALU

Mem

ory

Reg File

MU

X

MU

X

Data

Mem

ory

MU

X

Sign Extend

Zero?

IF/ID

ID/EX

MEM

/WB

EX/M

EM

4

Adder

Next SEQ PC Next SEQ PC

RD RD RD WB

Dat

a

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

Next PC

Address

RS1 RS2

Imm

MU

X

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

A <= Reg[IRrs]; B <= Reg[IRrt]

rslt <= A opIRop B

Reg[IRrd] <= WB

WB <= rslt

5 Steps of MIPS Datapath!Figure A.3, Page A-9!

44

Page 45: Pipelining - Intranet DEIBhome.deib.polimi.it › santambr › dida › phd › hsa › 2015 › doc › PDF › 3...Pipelining! 2 Outline! • Processors and Instruction Sets! •

The Problem of Hazards!

45

Page 46: Pipelining - Intranet DEIBhome.deib.polimi.it › santambr › dida › phd › hsa › 2015 › doc › PDF › 3...Pipelining! 2 Outline! • Processors and Instruction Sets! •

The Problem of Hazards!•  A hazard is created whenever there is a

dependence between instructions, and instructions are close enough that the overlap caused by pipelining would change the order of access to the operands involved in the dependence.!

•  Hazards prevent the next instruction in the pipeline from executing during its designated clock cycle.!

•  Hazards reduce the performance from the ideal speedup gained by pipelining.!

46

Page 47: Pipelining - Intranet DEIBhome.deib.polimi.it › santambr › dida › phd › hsa › 2015 › doc › PDF › 3...Pipelining! 2 Outline! • Processors and Instruction Sets! •

Three Classes of Hazards!•  Structural Hazards: Attempt to use the same

resource from different instructions simultaneously!–  Example: Single memory for instructions and data!

•  Data Hazards: Attempt to use a result before it is ready!–  Example: Instruction depending on a result of a

previous instruction still in the pipeline!•  Control Hazards: Attempt to make a decision on the

next instruction to execute before the condition is evaluated!–  Example: Conditional branch execution!

47

Page 48: Pipelining - Intranet DEIBhome.deib.polimi.it › santambr › dida › phd › hsa › 2015 › doc › PDF › 3...Pipelining! 2 Outline! • Processors and Instruction Sets! •

Structural Hazards !•  No structural hazards in MIPS architecture:!

–  Instruction Memory separated from Data Memory!–  Register File used in the same clock cycle: Read

access by an instruction and write access by another instruction!

48

2 ns

Time

I2

I3

I1

2 ns

2 ns

2 ns

I4

I5

IM REG DM REG A L U

IM REG DM REG A L U

IM REG DM REG A L U

IM REG DM REG A L U

IM REG DM REG A L U

Page 49: Pipelining - Intranet DEIBhome.deib.polimi.it › santambr › dida › phd › hsa › 2015 › doc › PDF › 3...Pipelining! 2 Outline! • Processors and Instruction Sets! •

Data Hazards !•  If the instructions executed in the pipeline are

dependent, data hazards can arise when instructions are too close !

!•  Example:! sub $2, $1, $3 # Reg. $2 written by sub and $12, $2, $5 # 1° operand ($2) depends on sub or $13, $6, $2 # 2° operand ($2) depend on sub add $14, $2, $2 # 1° ($2) & 2° ($2) depend on sub sw $15,100($2) # Base reg. ($2) depends on sub

49

Page 50: Pipelining - Intranet DEIBhome.deib.polimi.it › santambr › dida › phd › hsa › 2015 › doc › PDF › 3...Pipelining! 2 Outline! • Processors and Instruction Sets! •

Data Hazards in the Optimized Pipeline: Example!

50

• 

2 ns

2 ns

2 ns

2 ns

IM REG DM REG A L U

IM REG DM REG A L U

IM REG DM REG A L U

IM REG DM REG A L U

IM REG DM REG A L U

It is necessary to insert two stalls!

sub $2, $1, $3

and $12, $2, $5

or $13, $6, $2

add $14, $2, $2

sw $15,100($2)

Time

Instruction order

Page 51: Pipelining - Intranet DEIBhome.deib.polimi.it › santambr › dida › phd › hsa › 2015 › doc › PDF › 3...Pipelining! 2 Outline! • Processors and Instruction Sets! •

Type of Data Hazard!•  Read After Write (RAW) !

InstrJ tries to read operand before InstrI writes it!!!!

•  Caused by a “Dependence” (in compiler nomenclature). This hazard results from an actual need for communication.!

51

I: add r1,r2,r3 J: sub r4,r1,r3

Page 52: Pipelining - Intranet DEIBhome.deib.polimi.it › santambr › dida › phd › hsa › 2015 › doc › PDF › 3...Pipelining! 2 Outline! • Processors and Instruction Sets! •

Data Hazards: Possible Solutions!•  Compilation Techniques:!

–  Insertion of nop (no operation) instructions!–  Instructions Scheduling to avoid that correlating

instructions are too close!•  The compiler tries to insert independent instructions

among correlating instructions!•  When the compiler does not find independent

instructions, it insert nops.!•  Hardware Techniques:!

–  Insertion of “bubbles” or stalls in the pipeline!–  Data Forwarding or Bypassing!

52

Page 53: Pipelining - Intranet DEIBhome.deib.polimi.it › santambr › dida › phd › hsa › 2015 › doc › PDF › 3...Pipelining! 2 Outline! • Processors and Instruction Sets! •

Just an example... !53

2 ns

Tempo

Ordine di esecuzione delle istruzioni

and

or

sub

2 ns

2 ns

2 ns

add

sw

IM REG DM REG A L U

IM REG DM REG A L U

IM REG DM REG A L U

IM REG DM REG A L U

IM REG DM REG A L U

I need to insert 2 bubbles or 2 stalls!

Page 54: Pipelining - Intranet DEIBhome.deib.polimi.it › santambr › dida › phd › hsa › 2015 › doc › PDF › 3...Pipelining! 2 Outline! • Processors and Instruction Sets! •

Insertion of nops!54

IF ID EX ME WB

IF ID EX ME WB

IF ID EX ME WB

IF ID EX ME WB

sub $2, $1, $3

and $12, $2, $5

or $13, $6, $2

add $14, $2, $2

sw $15,100($2)

IF ID EX ME WB IF ID EX ME WB

IF ID EX ME WB

nop

nop

Page 55: Pipelining - Intranet DEIBhome.deib.polimi.it › santambr › dida › phd › hsa › 2015 › doc › PDF › 3...Pipelining! 2 Outline! • Processors and Instruction Sets! •

Insertion of bubbles and stalls!55

CK2 CK1 Time

Contenuto di $2

sub $2 , $1, $3 ID IF MEM EX and $12, $2 , $5 bubble IF or $13, $6, $2

add $14, $2 , $2

sw $15,100( $2 )

(clock cycles) WB

ID WB MEM EX

ID IF WB MEM EX

ID IF WB MEM EX

ID IF WB MEM EX

CK4 CK3 CK6 CK5 CK9 CK8 CK7

10 10 10 10 - 20 -20 - 20 - 20 - 20

CK12 CK11 CK10

- 20 - 20 - 20

bubble

Page 56: Pipelining - Intranet DEIBhome.deib.polimi.it › santambr › dida › phd › hsa › 2015 › doc › PDF › 3...Pipelining! 2 Outline! • Processors and Instruction Sets! •

Scheduling: Example!56

sub $2, $1, $3 sub $2, $1, $3

and $12, $2, $5 add $4, $10, $11

or $13, $6, $2 and $7, $8, $9 add $14, $2, $2 lw $16, 100($18) sw $15,100($2) lw $17, 200($19)

add $4, $10, $11 and $12, $2, $5

and $7, $8, $9 or $13, $6, $2

lw $16, 100($18) add $14, $2, $2

lw $17, 200($19) sw $15,100($2)

Page 57: Pipelining - Intranet DEIBhome.deib.polimi.it › santambr › dida › phd › hsa › 2015 › doc › PDF › 3...Pipelining! 2 Outline! • Processors and Instruction Sets! •

Forwarding!•  Data forwarding uses temporary results stored

in the pipeline registers instead of waiting for the write back of results in the RF.!

•  We need to add multiplexers at the inputs of ALU to fetch inputs from pipeline registers to avoid the insertion of stalls in the pipeline.!

57

Page 58: Pipelining - Intranet DEIBhome.deib.polimi.it › santambr › dida › phd › hsa › 2015 › doc › PDF › 3...Pipelining! 2 Outline! • Processors and Instruction Sets! •

Forwarding: Example!58

IF ID EX ME WB

IF ID EX ME WB

IF ID EX ME WB

IF ID EX ME WB

IF ID EX ME WB

sub $2, $1, $3

and $12, $2, $5

or $13, $6, $2

add $14, $2, $2

sw $15,100($2)

MEM/EX path EX/EX path

MEM/ID path

Page 59: Pipelining - Intranet DEIBhome.deib.polimi.it › santambr › dida › phd › hsa › 2015 › doc › PDF › 3...Pipelining! 2 Outline! • Processors and Instruction Sets! •

PCMux

Mux

ALU

Mux

Forwardingunit

I nstr ucti on

MuxRd EX/MEM.RegisterRd

MEM/WB.RegisterRd

RtRtRs

IF/ID.RegisterRdIF/ID.RegisterRtIF/ID.RegisterRtIF/ID.RegisterRs

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

Instr

Memory

Reg. Data Memory

Mux

Mux

EX/EX path MEM/EX path

MEM/ID path

WB path

Implementation of MIPS with Forwarding Unit!

59

Page 60: Pipelining - Intranet DEIBhome.deib.polimi.it › santambr › dida › phd › hsa › 2015 › doc › PDF › 3...Pipelining! 2 Outline! • Processors and Instruction Sets! •

Data Hazards: Load/Use Hazard! L1: lw $s0, 4($t1) # $s0 <- M [4 + $t1] L2: add $s5, $s0, $s1 # 1° operand depends from L1

60

CK2 CK1

lw $s0, 4($t1) ID IF WB MEM EX

ID IF WB MEM EX

CK4 CK3 CK6 CK5 CK7

add $s5,$s0,$s1

Page 61: Pipelining - Intranet DEIBhome.deib.polimi.it › santambr › dida › phd › hsa › 2015 › doc › PDF › 3...Pipelining! 2 Outline! • Processors and Instruction Sets! •

Data Hazards: Load/Use Hazard!•  With forwarding using the MEM/EX path: 1 stall!

61

CK2 CK1

lw $s0, 4($t1) ID IF WB MEM EX

ID IF WB MEM EX

CK4 CK3 CK6 CK5 CK7

add $s5,$s0,$s1

Page 62: Pipelining - Intranet DEIBhome.deib.polimi.it › santambr › dida › phd › hsa › 2015 › doc › PDF › 3...Pipelining! 2 Outline! • Processors and Instruction Sets! •

Data Hazards: Load/Store! L1: lw $s0, 4($t1) # $s0 <- M [4 + $t1] L2: sw $s0, 4($t2) # M[4 + $t2] <- $s0

62

CK2 CK1

Contenuto di $s0

lw $s0, 4($t1) ID IF WB MEM EX

ID IF WB MEM EX

CK4 CK3 CK6 CK5 CK7

10 10 10 10 20 10/20 20

sw $s0, 4($t2)

Without forwarding : 3 stalls!

Page 63: Pipelining - Intranet DEIBhome.deib.polimi.it › santambr › dida › phd › hsa › 2015 › doc › PDF › 3...Pipelining! 2 Outline! • Processors and Instruction Sets! •

Data Hazards: Load/Store!•  Forwarding: Stall = 0 •  We need a forwarding path to bring the load result from the

memory (in MEM/WB) to the memory’s input for the store.

63

CK2 CK1

lw $s0, 4($t1) ID IF WB MEM EX

ID IF WB MEM EX

CK4 CK3 CK6 CK5 CK7

sw $s0, 4($t2)

Page 64: Pipelining - Intranet DEIBhome.deib.polimi.it › santambr › dida › phd › hsa › 2015 › doc › PDF › 3...Pipelining! 2 Outline! • Processors and Instruction Sets! •

P C M u x

M u x

A L U

M u x

F o r w a r d i n g u n i t

I n s t r u c t

i o n

M u x R d E X / M E M . R e g i s t e r R d

M E M / W B . R e g i s t e r R d

R t R t R s

I F / I D . R e g i s t e r R d I F / I D . R e g i s t e r R t I F / I D . R e g i s t e r R t I F / I D . R e g i s t e r R s

ID/EX

IF/ID EX/MEM MEM/WB

Memoria Istruzioni

Reg. Mem. Dati

M u x

M u x

EX/EX path MEM/EX path

MEM/ID path

WB path

M u x

MEM/MEM path

Ø  EX/EXpathØ  MEM/EXpathØ  MEM/IDpathØ  MEM/MEMpath

Implementation of MIPS with Forwarding Unit!

64

Page 65: Pipelining - Intranet DEIBhome.deib.polimi.it › santambr › dida › phd › hsa › 2015 › doc › PDF › 3...Pipelining! 2 Outline! • Processors and Instruction Sets! •

Data Hazards!•  Data hazards analyzed up to now are:!

–  RAW (READ AFTER WRITE) hazards: instruction n+1 tries to read a source register before the previous instruction n has written it in the RF. !

–  Example:! add $r1, $r2, $r3 sub $r4, $r1, $r5

•  By using forwarding, it is always possible to solve this conflict without introducing stalls, except for the load/use hazards where it is necessary to add one stall!

65

Page 66: Pipelining - Intranet DEIBhome.deib.polimi.it › santambr › dida › phd › hsa › 2015 › doc › PDF › 3...Pipelining! 2 Outline! • Processors and Instruction Sets! •

Data Hazards!•  Other types of data hazards in the pipeline:!

–  WAW (WRITE AFTER WRITE)!–  WAR (WRITE AFTER READ)!

66

Page 67: Pipelining - Intranet DEIBhome.deib.polimi.it › santambr › dida › phd › hsa › 2015 › doc › PDF › 3...Pipelining! 2 Outline! • Processors and Instruction Sets! •

Data Hazards: WAW!•  Instruction n+1 tries to write a destination

operand before it has been written by the previous instruction n !⇒ write operations executed in the wrong order!

•  This type of hazards could not occur in the MIPS pipeline because all the register write operations occur in the WB stage!

67

Page 68: Pipelining - Intranet DEIBhome.deib.polimi.it › santambr › dida › phd › hsa › 2015 › doc › PDF › 3...Pipelining! 2 Outline! • Processors and Instruction Sets! •

Data Hazards: WAW!•  Example: If we assume the register write in the

ALU instructions occurs in the fourth stage and that load instructions require two stages (MEM1 and MEM2) to access the data memory, we can have:!

68

CK2 CK1

lw $r1, 0($r2) ID IF MEM2 MEM1 EX

IF ID WB EX

CK4 CK3 CK6 CK5 CK7

add $r1,$r2,$r3

WB

Page 69: Pipelining - Intranet DEIBhome.deib.polimi.it › santambr › dida › phd › hsa › 2015 › doc › PDF › 3...Pipelining! 2 Outline! • Processors and Instruction Sets! •

Data Hazards: WAW!•  Example: If we assume the floating point ALU

operations require a multi-cycle execution, we can have:!

69

CK2 CK1

mul $f6,$f2,$f2 ID IF MUL3 MUL2MUL1

IF ID AD2 AD1

CK4 CK3 CK6 CK5 CK7

add $f6,$f2,$f2

MUL4 MEM WB

CK8

MEM WB

Page 70: Pipelining - Intranet DEIBhome.deib.polimi.it › santambr › dida › phd › hsa › 2015 › doc › PDF › 3...Pipelining! 2 Outline! • Processors and Instruction Sets! •

WAW Data Hazards!!•  Write After Write (WAW) !

InstrJ writes operand before InstrI writes it.!!!!!

•  Called an “output dependence” by compiler writers!This also results from the reuse of name “r1”.!

•  Can’t happen in MIPS 5 stage pipeline because: !–  All instructions take 5 stages, and !–  Writes are always in stage 5!

•  Will see WAR and WAW in more complicated pipes!

70

I: sub r1,r4,r3 J: add r1,r2,r3 K: mul r6,r1,r7

Page 71: Pipelining - Intranet DEIBhome.deib.polimi.it › santambr › dida › phd › hsa › 2015 › doc › PDF › 3...Pipelining! 2 Outline! • Processors and Instruction Sets! •

Data Hazards: WAR!•  Instruction n+1 tries to write a destination operand

before it has been read from the previous instruction n !⇒ instruction n reads the wrong value.!

•  This type of hazards could not occur in the MIPS pipeline because the operand read operations occur in the ID stage and the write operations in the WB stage.!

•  As before, if we assume the register write in the ALU instructions occurs in the fourth stage and that we need two stages to access the data memory, some instructions could read operands too late in the pipeline!

71

Page 72: Pipelining - Intranet DEIBhome.deib.polimi.it › santambr › dida › phd › hsa › 2015 › doc › PDF › 3...Pipelining! 2 Outline! • Processors and Instruction Sets! •

Data Hazards: WAR!•  Example: Instruction sw reads $r2 in the second

half of MEM2 stage and instruction add writes $r2 in the first half of WB stage ⇒ sw reads the new value of $r2!

72

CK2 CK1

sw $r1, 0($r2) ID IF MEM2 MEM1 EX

IF ID WB EX

CK4 CK3 CK6 CK5 CK7

add $r2, $r3, $r4

WB

Page 73: Pipelining - Intranet DEIBhome.deib.polimi.it › santambr › dida › phd › hsa › 2015 › doc › PDF › 3...Pipelining! 2 Outline! • Processors and Instruction Sets! •

WAR Data Hazards •  Write After Read (WAR) !

InstrJ writes operand before InstrI reads it!!!!!

•  Called an “anti-dependence” by compiler writers.!This results from reuse of the name “r1”.!!

•  Can’t happen in MIPS 5 stage pipeline because:!–  All instructions take 5 stages, and!–  Reads are always in stage 2, and !–  Writes are always in stage 5!

73

I: sub r4,r1,r3 J: add r1,r2,r3 K: mul r6,r1,r7

Page 74: Pipelining - Intranet DEIBhome.deib.polimi.it › santambr › dida › phd › hsa › 2015 › doc › PDF › 3...Pipelining! 2 Outline! • Processors and Instruction Sets! •

THANK YOU !FOR YOUR ATTENTION!

74