82
M. C. Felipe Santiago Espinosa Abril/2018 Segmentación del Path de Datos (Parte II) Maestría en Electrónica Arquitectura de Computadoras Unidad 5

Maestría en Electrónica Arquitectura de Computadoras Unidad 5fsantiag/ArqComputadoras/05_El_Procesador (Parte 2).pdf · Segmentación del Path de Datos (Parte II) Maestría en Electrónica

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Maestría en Electrónica Arquitectura de Computadoras Unidad 5fsantiag/ArqComputadoras/05_El_Procesador (Parte 2).pdf · Segmentación del Path de Datos (Parte II) Maestría en Electrónica

M. C. Felipe Santiago Espinosa Abril/2018

Segmentación del Path de Datos

(Parte II)

Maestría en ElectrónicaArquitectura de Computadoras

Unidad 5

Page 2: Maestría en Electrónica Arquitectura de Computadoras Unidad 5fsantiag/ArqComputadoras/05_El_Procesador (Parte 2).pdf · Segmentación del Path de Datos (Parte II) Maestría en Electrónica

Pipelining Analogy

Segmentación del Path de Datos2

Pipelined laundry: overlapping execution Parallelism improves performance

Four loads: Speedup = 8/3.5 = 2.3

Non-stop: Speedup

= 2*n/0.5 + 1.5 ≈ 4= number of stages

Page 3: Maestría en Electrónica Arquitectura de Computadoras Unidad 5fsantiag/ArqComputadoras/05_El_Procesador (Parte 2).pdf · Segmentación del Path de Datos (Parte II) Maestría en Electrónica

MIPS Pipeline

Segmentación del Path de Datos3

Five stages, one step per stage1. IF: Instruction fetch from memory2. ID: Instruction decode & register read3. EX: Execute operation or calculate address4. MEM: Access memory operand5. WB: Write result back to register

Page 4: Maestría en Electrónica Arquitectura de Computadoras Unidad 5fsantiag/ArqComputadoras/05_El_Procesador (Parte 2).pdf · Segmentación del Path de Datos (Parte II) Maestría en Electrónica

Pipeline Performance

Segmentación del Path de Datos4

Assume time for stages is 100ps for register read or write 200ps for other stages

Compare pipelined datapath with single-cycle datapath

Instr Instr fetch Register read

ALU op Memory access

Register write

Total time

lw 200ps 100 ps 200ps 200ps 100 ps 800ps

sw 200ps 100 ps 200ps 200ps 700ps

R-format 200ps 100 ps 200ps 100 ps 600ps

beq 200ps 100 ps 200ps 500ps

Page 5: Maestría en Electrónica Arquitectura de Computadoras Unidad 5fsantiag/ArqComputadoras/05_El_Procesador (Parte 2).pdf · Segmentación del Path de Datos (Parte II) Maestría en Electrónica

Pipeline Performance

Segmentación del Path de Datos

Single-cycle (Tc= 800ps)

Pipelined (Tc= 200ps)

5

Page 6: Maestría en Electrónica Arquitectura de Computadoras Unidad 5fsantiag/ArqComputadoras/05_El_Procesador (Parte 2).pdf · Segmentación del Path de Datos (Parte II) Maestría en Electrónica

Pipeline Speedup

Segmentación del Path de Datos6

If all stages are balanced i.e., all take the same time Time between instructionspipelined =

Time between instructionsnonpipelined

Number of stages If not balanced, speedup is less Speedup due to increased throughput Latency (time for each instruction) does not decrease

Page 7: Maestría en Electrónica Arquitectura de Computadoras Unidad 5fsantiag/ArqComputadoras/05_El_Procesador (Parte 2).pdf · Segmentación del Path de Datos (Parte II) Maestría en Electrónica

Pipelining and ISA Design

Segmentación del Path de Datos7

MIPS ISA designed for pipeliningAll instructions are 32-bits Easier to fetch and decode in one cycle c.f. x86: 1- to 17-byte instructions

Few and regular instruction formats Can decode and read registers in one step

Load/store addressing Can calculate address in 3rd stage, access memory in 4th stage

Alignment of memory operands Memory access takes only one cycle

Page 8: Maestría en Electrónica Arquitectura de Computadoras Unidad 5fsantiag/ArqComputadoras/05_El_Procesador (Parte 2).pdf · Segmentación del Path de Datos (Parte II) Maestría en Electrónica

Hazards

Segmentación del Path de Datos

Situations that prevent starting the next instruction in the next cycle

Structure hazardsA required resource is busy

Data hazardNeed to wait for previous instruction to complete its

data read/write Control hazardDeciding on control action depends on previous

instruction

8

Page 9: Maestría en Electrónica Arquitectura de Computadoras Unidad 5fsantiag/ArqComputadoras/05_El_Procesador (Parte 2).pdf · Segmentación del Path de Datos (Parte II) Maestría en Electrónica

Structure Hazards

Segmentación del Path de Datos9

Conflict for use of a resource In MIPS pipeline with a single memory Load/store requires data access Instruction fetch would have to stall for that cycle Would cause a pipeline “bubble”

Hence, pipelined datapaths require separate instruction/data memoriesOr separate instruction/data caches

Page 10: Maestría en Electrónica Arquitectura de Computadoras Unidad 5fsantiag/ArqComputadoras/05_El_Procesador (Parte 2).pdf · Segmentación del Path de Datos (Parte II) Maestría en Electrónica

Data Hazards

Segmentación del Path de Datos

An instruction depends on completion of data access by a previous instruction add $s0, $t0, $t1sub $t2, $s0, $t3

10

Page 11: Maestría en Electrónica Arquitectura de Computadoras Unidad 5fsantiag/ArqComputadoras/05_El_Procesador (Parte 2).pdf · Segmentación del Path de Datos (Parte II) Maestría en Electrónica

Forwarding (aka Bypassing)

Segmentación del Path de Datos

Use result when it is computed Don’t wait for it to be stored in a register Requires extra connections in the datapath

11

Page 12: Maestría en Electrónica Arquitectura de Computadoras Unidad 5fsantiag/ArqComputadoras/05_El_Procesador (Parte 2).pdf · Segmentación del Path de Datos (Parte II) Maestría en Electrónica

Load-Use Data Hazard

Segmentación del Path de Datos

Can’t always avoid stalls by forwarding If value not computed when needed Can’t forward backward in time!

12

Page 13: Maestría en Electrónica Arquitectura de Computadoras Unidad 5fsantiag/ArqComputadoras/05_El_Procesador (Parte 2).pdf · Segmentación del Path de Datos (Parte II) Maestría en Electrónica

Code Scheduling to Avoid Stalls

Segmentación del Path de Datos

Reorder code to avoid use of load result in the next instruction C code for A = B + E; C = B + F;

lw $t1, 0($t0)

lw $t2, 4($t0)

add $t3, $t1, $t2

sw $t3, 12($t0)

lw $t4, 8($t0)

add $t5, $t1, $t4

sw $t5, 16($t0)

stall

stall

lw $t1, 0($t0)

lw $t2, 4($t0)

lw $t4, 8($t0)

add $t3, $t1, $t2

sw $t3, 12($t0)

add $t5, $t1, $t4

sw $t5, 16($t0)

11 cycles13 cycles

13

Page 14: Maestría en Electrónica Arquitectura de Computadoras Unidad 5fsantiag/ArqComputadoras/05_El_Procesador (Parte 2).pdf · Segmentación del Path de Datos (Parte II) Maestría en Electrónica

Control Hazards

Segmentación del Path de Datos14

Branch determines flow of control Fetching next instruction depends on branch outcome Pipeline can’t always fetch correct instruction Still working on ID stage of branch

In MIPS pipelineNeed to compare registers and compute target early in

the pipelineAdd hardware to do it in ID stage

Page 15: Maestría en Electrónica Arquitectura de Computadoras Unidad 5fsantiag/ArqComputadoras/05_El_Procesador (Parte 2).pdf · Segmentación del Path de Datos (Parte II) Maestría en Electrónica

Stall on Branch

Segmentación del Path de Datos

Wait until branch outcome determined before fetching next instruction

15

Page 16: Maestría en Electrónica Arquitectura de Computadoras Unidad 5fsantiag/ArqComputadoras/05_El_Procesador (Parte 2).pdf · Segmentación del Path de Datos (Parte II) Maestría en Electrónica

Branch Prediction

Segmentación del Path de Datos

Longer pipelines can’t readily determine branch outcome early Stall penalty becomes unacceptable

Predict outcome of branchOnly stall if prediction is wrong

In MIPS pipelineCan predict branches not taken Fetch instruction after branch, with no delay

16

Page 17: Maestría en Electrónica Arquitectura de Computadoras Unidad 5fsantiag/ArqComputadoras/05_El_Procesador (Parte 2).pdf · Segmentación del Path de Datos (Parte II) Maestría en Electrónica

MIPS with Predict Not Taken

Segmentación del Path de Datos

Prediction correct

Prediction incorrect

17

Page 18: Maestría en Electrónica Arquitectura de Computadoras Unidad 5fsantiag/ArqComputadoras/05_El_Procesador (Parte 2).pdf · Segmentación del Path de Datos (Parte II) Maestría en Electrónica

More-Realistic Branch Prediction

Segmentación del Path de Datos

Static branch prediction Based on typical branch behavior Example: loop and if-statement branches Predict backward branches taken Predict forward branches not taken

Dynamic branch predictionHardware measures actual branch behavior e.g., record recent history of each branch

Assume future behavior will continue the trend When wrong, stall while re-fetching, and update history

18

Page 19: Maestría en Electrónica Arquitectura de Computadoras Unidad 5fsantiag/ArqComputadoras/05_El_Procesador (Parte 2).pdf · Segmentación del Path de Datos (Parte II) Maestría en Electrónica

Pipeline Summary

Segmentación del Path de Datos

Pipelining improves performance by increasing instruction throughput Executes multiple instructions in parallel Each instruction has the same latency

Subject to hazards Structure, data, control

Instruction set design affects complexity of pipeline implementation

The BIG Picture

19

Page 20: Maestría en Electrónica Arquitectura de Computadoras Unidad 5fsantiag/ArqComputadoras/05_El_Procesador (Parte 2).pdf · Segmentación del Path de Datos (Parte II) Maestría en Electrónica

MIPS Pipelined Datapath

Segmentación del Path de Datos

WB

MEM

Right-to-left flow leads to hazards

20

Page 21: Maestría en Electrónica Arquitectura de Computadoras Unidad 5fsantiag/ArqComputadoras/05_El_Procesador (Parte 2).pdf · Segmentación del Path de Datos (Parte II) Maestría en Electrónica

Pipeline registers

Segmentación del Path de Datos

Need registers between stages To hold information produced in previous cycle

21

Page 22: Maestría en Electrónica Arquitectura de Computadoras Unidad 5fsantiag/ArqComputadoras/05_El_Procesador (Parte 2).pdf · Segmentación del Path de Datos (Parte II) Maestría en Electrónica

Pipeline Operation

Segmentación del Path de Datos

Cycle-by-cycle flow of instructions through the pipelined datapath “Single-clock-cycle” pipeline diagram Shows pipeline usage in a single cycle Highlight resources used

c.f. “multi-clock-cycle” diagram Graph of operation over time

We’ll look at “single-clock-cycle” diagrams for load & store

22

Page 23: Maestría en Electrónica Arquitectura de Computadoras Unidad 5fsantiag/ArqComputadoras/05_El_Procesador (Parte 2).pdf · Segmentación del Path de Datos (Parte II) Maestría en Electrónica

IF for Load, Store, …

Segmentación del Path de Datos23

Page 24: Maestría en Electrónica Arquitectura de Computadoras Unidad 5fsantiag/ArqComputadoras/05_El_Procesador (Parte 2).pdf · Segmentación del Path de Datos (Parte II) Maestría en Electrónica

ID for Load, Store, …

Segmentación del Path de Datos24

Page 25: Maestría en Electrónica Arquitectura de Computadoras Unidad 5fsantiag/ArqComputadoras/05_El_Procesador (Parte 2).pdf · Segmentación del Path de Datos (Parte II) Maestría en Electrónica

EX for Load

Segmentación del Path de Datos25

Page 26: Maestría en Electrónica Arquitectura de Computadoras Unidad 5fsantiag/ArqComputadoras/05_El_Procesador (Parte 2).pdf · Segmentación del Path de Datos (Parte II) Maestría en Electrónica

MEM for Load

Segmentación del Path de Datos26

Page 27: Maestría en Electrónica Arquitectura de Computadoras Unidad 5fsantiag/ArqComputadoras/05_El_Procesador (Parte 2).pdf · Segmentación del Path de Datos (Parte II) Maestría en Electrónica

WB for Load

Segmentación del Path de Datos

Wrongregisternumber

27

Page 28: Maestría en Electrónica Arquitectura de Computadoras Unidad 5fsantiag/ArqComputadoras/05_El_Procesador (Parte 2).pdf · Segmentación del Path de Datos (Parte II) Maestría en Electrónica

Corrected Datapath for Load

Segmentación del Path de Datos28

Page 29: Maestría en Electrónica Arquitectura de Computadoras Unidad 5fsantiag/ArqComputadoras/05_El_Procesador (Parte 2).pdf · Segmentación del Path de Datos (Parte II) Maestría en Electrónica

EX for Store

Segmentación del Path de Datos29

Page 30: Maestría en Electrónica Arquitectura de Computadoras Unidad 5fsantiag/ArqComputadoras/05_El_Procesador (Parte 2).pdf · Segmentación del Path de Datos (Parte II) Maestría en Electrónica

MEM for Store

Segmentación del Path de Datos30

Page 31: Maestría en Electrónica Arquitectura de Computadoras Unidad 5fsantiag/ArqComputadoras/05_El_Procesador (Parte 2).pdf · Segmentación del Path de Datos (Parte II) Maestría en Electrónica

WB for Store

Segmentación del Path de Datos31

Page 32: Maestría en Electrónica Arquitectura de Computadoras Unidad 5fsantiag/ArqComputadoras/05_El_Procesador (Parte 2).pdf · Segmentación del Path de Datos (Parte II) Maestría en Electrónica

Multi-Cycle Pipeline Diagram

Segmentación del Path de Datos32

Traditional form

Page 33: Maestría en Electrónica Arquitectura de Computadoras Unidad 5fsantiag/ArqComputadoras/05_El_Procesador (Parte 2).pdf · Segmentación del Path de Datos (Parte II) Maestría en Electrónica

Multi-Cycle Pipeline Diagram

Segmentación del Path de Datos

Form showing resource usage

33

Page 34: Maestría en Electrónica Arquitectura de Computadoras Unidad 5fsantiag/ArqComputadoras/05_El_Procesador (Parte 2).pdf · Segmentación del Path de Datos (Parte II) Maestría en Electrónica

Single-Cycle Pipeline Diagram

Segmentación del Path de Datos

State of pipeline in a given cycle

34

Page 35: Maestría en Electrónica Arquitectura de Computadoras Unidad 5fsantiag/ArqComputadoras/05_El_Procesador (Parte 2).pdf · Segmentación del Path de Datos (Parte II) Maestría en Electrónica

Pipelined Control (Simplified)

Segmentación del Path de Datos35

Page 36: Maestría en Electrónica Arquitectura de Computadoras Unidad 5fsantiag/ArqComputadoras/05_El_Procesador (Parte 2).pdf · Segmentación del Path de Datos (Parte II) Maestría en Electrónica

Pipelined Control

Segmentación del Path de Datos

Control signals derived from instruction As in single-cycle implementation

36

Page 37: Maestría en Electrónica Arquitectura de Computadoras Unidad 5fsantiag/ArqComputadoras/05_El_Procesador (Parte 2).pdf · Segmentación del Path de Datos (Parte II) Maestría en Electrónica

Pipelined Control

Segmentación del Path de Datos37

Page 38: Maestría en Electrónica Arquitectura de Computadoras Unidad 5fsantiag/ArqComputadoras/05_El_Procesador (Parte 2).pdf · Segmentación del Path de Datos (Parte II) Maestría en Electrónica

Ejemplo:

Segmentación del Path de Datos38

Evaluar la ejecución de las instrucciones siguientes a través de un procesador segmentado:

lw $10, 20 ($1)sub $11, $2, $3 and $12, $4, $5 or $13, $6, $7 add $14, $8, $9

Respuesta: Se requieren 5 ciclos de reloj para concluir con la instrucción lw Cuando lw termina su ejecución, las siguientes instrucciones se

producen una por ciclo de reloj. En total se requiere de 9 ciclos para la ejecución de las cinco

instrucciones.

Page 39: Maestría en Electrónica Arquitectura de Computadoras Unidad 5fsantiag/ArqComputadoras/05_El_Procesador (Parte 2).pdf · Segmentación del Path de Datos (Parte II) Maestría en Electrónica

Ciclo de reloj no. 1

Segmentación del Path de Datos39

Page 40: Maestría en Electrónica Arquitectura de Computadoras Unidad 5fsantiag/ArqComputadoras/05_El_Procesador (Parte 2).pdf · Segmentación del Path de Datos (Parte II) Maestría en Electrónica

Ciclo de reloj no. 2

Segmentación del Path de Datos40

Page 41: Maestría en Electrónica Arquitectura de Computadoras Unidad 5fsantiag/ArqComputadoras/05_El_Procesador (Parte 2).pdf · Segmentación del Path de Datos (Parte II) Maestría en Electrónica

Ciclo de reloj no. 3

Segmentación del Path de Datos41

Page 42: Maestría en Electrónica Arquitectura de Computadoras Unidad 5fsantiag/ArqComputadoras/05_El_Procesador (Parte 2).pdf · Segmentación del Path de Datos (Parte II) Maestría en Electrónica

Ciclo de reloj no. 4

Segmentación del Path de Datos42

Page 43: Maestría en Electrónica Arquitectura de Computadoras Unidad 5fsantiag/ArqComputadoras/05_El_Procesador (Parte 2).pdf · Segmentación del Path de Datos (Parte II) Maestría en Electrónica

Ciclo de reloj no. 5

Segmentación del Path de Datos43

Page 44: Maestría en Electrónica Arquitectura de Computadoras Unidad 5fsantiag/ArqComputadoras/05_El_Procesador (Parte 2).pdf · Segmentación del Path de Datos (Parte II) Maestría en Electrónica

Ciclo de reloj no. 6

Segmentación del Path de Datos44

Page 45: Maestría en Electrónica Arquitectura de Computadoras Unidad 5fsantiag/ArqComputadoras/05_El_Procesador (Parte 2).pdf · Segmentación del Path de Datos (Parte II) Maestría en Electrónica

Ciclo de reloj no. 7

Segmentación del Path de Datos45

Page 46: Maestría en Electrónica Arquitectura de Computadoras Unidad 5fsantiag/ArqComputadoras/05_El_Procesador (Parte 2).pdf · Segmentación del Path de Datos (Parte II) Maestría en Electrónica

Ciclo de reloj no. 8

Segmentación del Path de Datos46

Page 47: Maestría en Electrónica Arquitectura de Computadoras Unidad 5fsantiag/ArqComputadoras/05_El_Procesador (Parte 2).pdf · Segmentación del Path de Datos (Parte II) Maestría en Electrónica

Ciclo de reloj no. 9

Segmentación del Path de Datos47

Page 48: Maestría en Electrónica Arquitectura de Computadoras Unidad 5fsantiag/ArqComputadoras/05_El_Procesador (Parte 2).pdf · Segmentación del Path de Datos (Parte II) Maestría en Electrónica

Data Hazards in ALU Instructions

Segmentación del Path de Datos48

Consider this sequence:sub $2, $1,$3and $12,$2,$5or $13,$6,$2add $14,$2,$2sw $15,100($2)

We can resolve hazards with forwarding How do we detect when to forward?

Page 49: Maestría en Electrónica Arquitectura de Computadoras Unidad 5fsantiag/ArqComputadoras/05_El_Procesador (Parte 2).pdf · Segmentación del Path de Datos (Parte II) Maestría en Electrónica

Dependencies & Forwarding

Segmentación del Path de Datos49

Page 50: Maestría en Electrónica Arquitectura de Computadoras Unidad 5fsantiag/ArqComputadoras/05_El_Procesador (Parte 2).pdf · Segmentación del Path de Datos (Parte II) Maestría en Electrónica

Detecting the Need to Forward

Segmentación del Path de Datos

ALU operand register numbers in EX stage are given by ID/EX.RegisterRs, ID/EX.RegisterRt

Data hazards when1a. EX/MEM.RegisterRd = ID/EX.RegisterRs1b. EX/MEM.RegisterRd = ID/EX.RegisterRt2a. MEM/WB.RegisterRd = ID/EX.RegisterRs2b. MEM/WB.RegisterRd = ID/EX.RegisterRt

Fwd fromEX/MEMpipeline reg

Fwd fromMEM/WBpipeline reg

50

Page 51: Maestría en Electrónica Arquitectura de Computadoras Unidad 5fsantiag/ArqComputadoras/05_El_Procesador (Parte 2).pdf · Segmentación del Path de Datos (Parte II) Maestría en Electrónica

Detecting the Need to Forward

Segmentación del Path de Datos

But only if forwarding instruction will write to a register! EX/MEM.RegWrite, MEM/WB.RegWrite

And only if Rd for that instruction is not $zero EX/MEM.RegisterRd ≠ 0,

MEM/WB.RegisterRd ≠ 0

51

Page 52: Maestría en Electrónica Arquitectura de Computadoras Unidad 5fsantiag/ArqComputadoras/05_El_Procesador (Parte 2).pdf · Segmentación del Path de Datos (Parte II) Maestría en Electrónica

Forwarding Paths

Segmentación del Path de Datos52

Page 53: Maestría en Electrónica Arquitectura de Computadoras Unidad 5fsantiag/ArqComputadoras/05_El_Procesador (Parte 2).pdf · Segmentación del Path de Datos (Parte II) Maestría en Electrónica

Forwarding Conditions

Segmentación del Path de Datos

EX hazard if (EX/MEM.RegWrite and (EX/MEM.RegisterRd ≠ 0)

and (EX/MEM.RegisterRd = ID/EX.RegisterRs)) ForwardA = 10

if (EX/MEM.RegWrite and (EX/MEM.RegisterRd ≠ 0) and (EX/MEM.RegisterRd = ID/EX.RegisterRt)) ForwardB = 10

MEM hazard if (MEM/WB.RegWrite and (MEM/WB.RegisterRd ≠ 0)

and (MEM/WB.RegisterRd = ID/EX.RegisterRs)) ForwardA = 01

if (MEM/WB.RegWrite and (MEM/WB.RegisterRd ≠ 0) and (MEM/WB.RegisterRd = ID/EX.RegisterRt)) ForwardB = 01

53

Page 54: Maestría en Electrónica Arquitectura de Computadoras Unidad 5fsantiag/ArqComputadoras/05_El_Procesador (Parte 2).pdf · Segmentación del Path de Datos (Parte II) Maestría en Electrónica

Double Data Hazard

Segmentación del Path de Datos

Consider the sequence:add $1,$1,$2add $1,$1,$3add $1,$1,$4

Both hazards occur Want to use the most recent

Revise MEM hazard condition Only fwd if EX hazard condition isn’t true

54

Page 55: Maestría en Electrónica Arquitectura de Computadoras Unidad 5fsantiag/ArqComputadoras/05_El_Procesador (Parte 2).pdf · Segmentación del Path de Datos (Parte II) Maestría en Electrónica

Revised Forwarding Condition

Segmentación del Path de Datos

MEM hazard if (MEM/WB.RegWrite and (MEM/WB.RegisterRd ≠ 0)

and not (EX/MEM.RegWrite and (EX/MEM.RegisterRd ≠ 0) and (EX/MEM.RegisterRd = ID/EX.RegisterRs)) and (MEM/WB.RegisterRd = ID/EX.RegisterRs)) ForwardA = 01

if (MEM/WB.RegWrite and (MEM/WB.RegisterRd ≠ 0) and not (EX/MEM.RegWrite and (EX/MEM.RegisterRd ≠ 0) and (EX/MEM.RegisterRd = ID/EX.RegisterRt)) and (MEM/WB.RegisterRd = ID/EX.RegisterRt)) ForwardB = 01

55

Page 56: Maestría en Electrónica Arquitectura de Computadoras Unidad 5fsantiag/ArqComputadoras/05_El_Procesador (Parte 2).pdf · Segmentación del Path de Datos (Parte II) Maestría en Electrónica

Datapath with Forwarding

Segmentación del Path de Datos56

Page 57: Maestría en Electrónica Arquitectura de Computadoras Unidad 5fsantiag/ArqComputadoras/05_El_Procesador (Parte 2).pdf · Segmentación del Path de Datos (Parte II) Maestría en Electrónica

Load-Use Data Hazard

Segmentación del Path de Datos

Need to stall for one cycle

57

Page 58: Maestría en Electrónica Arquitectura de Computadoras Unidad 5fsantiag/ArqComputadoras/05_El_Procesador (Parte 2).pdf · Segmentación del Path de Datos (Parte II) Maestría en Electrónica

Load-Use Hazard Detection

Segmentación del Path de Datos

Check when using instruction is decoded in ID stage ALU operand register numbers in ID stage are given by IF/ID.RegisterRs, IF/ID.RegisterRt

Load-use hazard when ID/EX.MemRead and

((ID/EX.RegisterRt = IF/ID.RegisterRs) or (ID/EX.RegisterRt = IF/ID.RegisterRt))

If detected, stall and insert bubble

58

Page 59: Maestría en Electrónica Arquitectura de Computadoras Unidad 5fsantiag/ArqComputadoras/05_El_Procesador (Parte 2).pdf · Segmentación del Path de Datos (Parte II) Maestría en Electrónica

How to Stall the Pipeline

Segmentación del Path de Datos

Force control values in ID/EX registerto 0 EX, MEM and WB do nop (no-operation)

Prevent update of PC and IF/ID register Using instruction is decoded again Following instruction is fetched again 1-cycle stall allows MEM to read data for lw Can subsequently forward to EX stage

59

Page 60: Maestría en Electrónica Arquitectura de Computadoras Unidad 5fsantiag/ArqComputadoras/05_El_Procesador (Parte 2).pdf · Segmentación del Path de Datos (Parte II) Maestría en Electrónica

Stall/Bubble in the Pipeline

Segmentación del Path de Datos

Stall inserted here

60

Page 61: Maestría en Electrónica Arquitectura de Computadoras Unidad 5fsantiag/ArqComputadoras/05_El_Procesador (Parte 2).pdf · Segmentación del Path de Datos (Parte II) Maestría en Electrónica

Stall/Bubble in the Pipeline

Segmentación del Path de Datos

Or, more accurately…

61

Page 62: Maestría en Electrónica Arquitectura de Computadoras Unidad 5fsantiag/ArqComputadoras/05_El_Procesador (Parte 2).pdf · Segmentación del Path de Datos (Parte II) Maestría en Electrónica

Datapath with Hazard Detection

Segmentación del Path de Datos62

Page 63: Maestría en Electrónica Arquitectura de Computadoras Unidad 5fsantiag/ArqComputadoras/05_El_Procesador (Parte 2).pdf · Segmentación del Path de Datos (Parte II) Maestría en Electrónica

Ejemplo:

Segmentación del Path de Datos63

Con la unidad de anticipación y la unidad de detección de riesgos incorporadas en el procesador segmentando, analice su comportamiento ciclo a ciclo durante la ejecución del código:

lw $2, 20($1) and $4, $2, $5 or $4, $4, $2 add $9, $4, $2

Se revisarán los ciclos del 2 al 7 para observar cómo se inserta la burbuja y cómo avanza sin afectar la ejecución del programa. También se notará que no hay conflictos entre ambas unidades.

Desarrolle la representación Multi-ciclos para observar el comportamiento global de la ejecución.

Page 64: Maestría en Electrónica Arquitectura de Computadoras Unidad 5fsantiag/ArqComputadoras/05_El_Procesador (Parte 2).pdf · Segmentación del Path de Datos (Parte II) Maestría en Electrónica

Segmentación del Path de Datos64

Page 65: Maestría en Electrónica Arquitectura de Computadoras Unidad 5fsantiag/ArqComputadoras/05_El_Procesador (Parte 2).pdf · Segmentación del Path de Datos (Parte II) Maestría en Electrónica

Segmentación del Path de Datos65

Page 66: Maestría en Electrónica Arquitectura de Computadoras Unidad 5fsantiag/ArqComputadoras/05_El_Procesador (Parte 2).pdf · Segmentación del Path de Datos (Parte II) Maestría en Electrónica

Segmentación del Path de Datos66

Page 67: Maestría en Electrónica Arquitectura de Computadoras Unidad 5fsantiag/ArqComputadoras/05_El_Procesador (Parte 2).pdf · Segmentación del Path de Datos (Parte II) Maestría en Electrónica

Segmentación del Path de Datos67

Page 68: Maestría en Electrónica Arquitectura de Computadoras Unidad 5fsantiag/ArqComputadoras/05_El_Procesador (Parte 2).pdf · Segmentación del Path de Datos (Parte II) Maestría en Electrónica

Segmentación del Path de Datos68

Page 69: Maestría en Electrónica Arquitectura de Computadoras Unidad 5fsantiag/ArqComputadoras/05_El_Procesador (Parte 2).pdf · Segmentación del Path de Datos (Parte II) Maestría en Electrónica

Segmentación del Path de Datos69

Page 70: Maestría en Electrónica Arquitectura de Computadoras Unidad 5fsantiag/ArqComputadoras/05_El_Procesador (Parte 2).pdf · Segmentación del Path de Datos (Parte II) Maestría en Electrónica

Stalls and Performance

Segmentación del Path de Datos

Stalls reduce performance But are required to get correct results

Compiler can arrange code to avoid hazards and stalls Requires knowledge of the pipeline structure

The BIG Picture

70

Page 71: Maestría en Electrónica Arquitectura de Computadoras Unidad 5fsantiag/ArqComputadoras/05_El_Procesador (Parte 2).pdf · Segmentación del Path de Datos (Parte II) Maestría en Electrónica

Branch Hazards

Segmentación del Path de Datos

If branch outcome determined in MEM

PC

Flush theseinstructions(Set controlvalues to 0)

71

Page 72: Maestría en Electrónica Arquitectura de Computadoras Unidad 5fsantiag/ArqComputadoras/05_El_Procesador (Parte 2).pdf · Segmentación del Path de Datos (Parte II) Maestría en Electrónica

Incorporando Saltos Incondicionales

Segmentación del Path de Datos72

Los saltos incondicionales (J) se pueden ejecutar tan pronto se identifica a la instrucción.

Esto se hace en la etapa ID. Dos acciones deben realizarse: Anular la instrucción que está en la etapa IF limpiando el

registro IF/ID. Remplazar el valor del PC por el destino del salto.

Page 73: Maestría en Electrónica Arquitectura de Computadoras Unidad 5fsantiag/ArqComputadoras/05_El_Procesador (Parte 2).pdf · Segmentación del Path de Datos (Parte II) Maestría en Electrónica

Segmentación del Path de Datos73

Implementación que resuelve a BEQ en la etapa MEM y a J en la etapa ID

Page 74: Maestría en Electrónica Arquitectura de Computadoras Unidad 5fsantiag/ArqComputadoras/05_El_Procesador (Parte 2).pdf · Segmentación del Path de Datos (Parte II) Maestría en Electrónica

Reducing Branch Delay

Segmentación del Path de Datos

Move hardware to determine outcome to ID stage Target address adder Register comparator

Example: branch taken36: sub $10, $4, $840: beq $1, $3, 744: and $12, $2, $548: or $13, $2, $652: add $14, $4, $256: slt $15, $6, $7 ...72: lw $4, 50($7)

74

Page 75: Maestría en Electrónica Arquitectura de Computadoras Unidad 5fsantiag/ArqComputadoras/05_El_Procesador (Parte 2).pdf · Segmentación del Path de Datos (Parte II) Maestría en Electrónica

Example: Branch Taken

Segmentación del Path de Datos75

Page 76: Maestría en Electrónica Arquitectura de Computadoras Unidad 5fsantiag/ArqComputadoras/05_El_Procesador (Parte 2).pdf · Segmentación del Path de Datos (Parte II) Maestría en Electrónica

Example: Branch Taken

Segmentación del Path de Datos76

Page 77: Maestría en Electrónica Arquitectura de Computadoras Unidad 5fsantiag/ArqComputadoras/05_El_Procesador (Parte 2).pdf · Segmentación del Path de Datos (Parte II) Maestría en Electrónica

Data Hazards for Branches

Segmentación del Path de Datos

If a comparison register is a destination of 2nd or 3rd preceding ALU instruction

IF ID EX MEM WB

IF ID EX MEM WB

IF ID EX MEM WB

IF ID EX MEM WB

add $4, $5, $6

add $1, $2, $3

beq $1, $4, target

n Can resolve using forwarding

77

Page 78: Maestría en Electrónica Arquitectura de Computadoras Unidad 5fsantiag/ArqComputadoras/05_El_Procesador (Parte 2).pdf · Segmentación del Path de Datos (Parte II) Maestría en Electrónica

Data Hazards for Branches

Segmentación del Path de Datos

If a comparison register is a destination of preceding ALU instruction or 2nd preceding load instruction Need 1 stall cycle

beq stalled

IF ID EX MEM WB

IF ID EX MEM WB

IF ID

ID EX MEM WB

add $4, $5, $6

lw $1, addr

beq $1, $4, target

78

Page 79: Maestría en Electrónica Arquitectura de Computadoras Unidad 5fsantiag/ArqComputadoras/05_El_Procesador (Parte 2).pdf · Segmentación del Path de Datos (Parte II) Maestría en Electrónica

Data Hazards for Branches

Segmentación del Path de Datos

If a comparison register is a destination of immediately preceding load instruction Need 2 stall cycles

beq stalled

IF ID EX MEM WB

IF ID

ID

ID EX MEM WB

beq stalled

lw $1, addr

beq $1, $0, target

79

Page 80: Maestría en Electrónica Arquitectura de Computadoras Unidad 5fsantiag/ArqComputadoras/05_El_Procesador (Parte 2).pdf · Segmentación del Path de Datos (Parte II) Maestría en Electrónica

Ejercicio: Comparación de Implementaciones

Segmentación del Path de Datos80

Comparar el rendimiento de una implementación de un solo ciclo de reloj (PSC) con una implementación segmentada (PSEG). Considerando un programa de prueba con la siguiente distribución de instrucciones:

Tiempos de operación para las unidades funcionales: 2 ns - acceso a memoria, 2 ns - operación de la ALU, 1 ns – acceso a registros.

Para la implementación segmentada suponer que: la mitad de las instrucciones de carga están inmediatamente seguidas por una instrucción que usará el valor obtenido de la memoria, que una cuarta parte de los brincos condicionales si se realizan y sólo producen un retraso de 1 ciclo de reloj y que los saltos incondicionales también requieren de 1 ciclo de reloj adicional.

Tipo Frecuencia

Cargas 20 %

Almacenamientos 15 %

Brincos 20 %

Saltos 5 %

Aritmético – Lógicas 40 %

Page 81: Maestría en Electrónica Arquitectura de Computadoras Unidad 5fsantiag/ArqComputadoras/05_El_Procesador (Parte 2).pdf · Segmentación del Path de Datos (Parte II) Maestría en Electrónica

Ejercicios:

Segmentación del Path de Datos81

1. Por medio de una representación de múltiples ciclos de la segmentación, representar la ejecución de las siguientes instrucciones:

Add $2, $5, $4 Add $4, $2, $5 Lw $5, 100($2) Add $3, $5, $4 Beq $8, $8, s1 And $1, $2, $3 Or $4, $5, $6

s1: Sub $7, $8, $9

Mostrar las líneas por medio de las cuales se resuelven las dependencias de datos y/o mostrar la inserción de burbujas si es que se requieren. Suponga que los brincos se resuelven en la etapa ID.

Page 82: Maestría en Electrónica Arquitectura de Computadoras Unidad 5fsantiag/ArqComputadoras/05_El_Procesador (Parte 2).pdf · Segmentación del Path de Datos (Parte II) Maestría en Electrónica

Ejercicios (Comprensión y ampliación de la implementación).

Segmentación del Path de Datos82

Utilizando como base la figura de la diapositiva 73, analice como avanzan las instrucciones durante su ejecución:

add $t5, $t1, $t0 beq $t2, $t3, et1

Suponga que están ubicadas en la dirección 4000diez, que los registros $t0 y $t1 tienen los valores 30 y 40 respectivamente, que $t2 y $t3 tienen el dato 33 y que la etiqueta está ubicada 10 instrucciones después de la que se está evaluando. Resalte las líneas que estarán activas durante la ejecución y escriba el valor de cada una de esas líneas.

A la misma figura, agregue el hardware necesario (camino de datos y control) para que soporte la instrucción addi.

De manera similar, agregue el hardware necesario para que el procesador soporte la instrucción jal.