Sunteți pe pagina 1din 59

Calculatoare Numerice

-Cursul 8

Banda de asamblare
Dan Tudose
Facultatea de Automatic i Calculatoare
Universitatea Politehnica Bucureti

20.02.2013

http://xkcd.com/619/

Comic of the day

25-Apr-13

Calculatoare Numerice

slide 2

Din cursurile anterioare


Microcodificarea a devenit din ce n ce mai puin folosit pe
msur ce diferenele de performan dintre RAM i ROM s-au
micorat
Seturile complexe de instruciuni sunt dificil de executat n
pipeline, aa c este foarte dificil s mreti performana odat
cu creterea numrului de pori per procesor.
ISA RISC Load-Store proiectate pentru eficien maxim i
execuie pipeline
Foarte similar cu microcod verticalizat
Inspirat de mainile Cray (vom vorbi despre ele mai trziu)

Legea de fier a performanei descrie destul de eficient spaiul


de lucru
Echilibru ntre instruciuni/program, cicli/instruciune i timp/ciclu
25-Apr-13

Calculatoare Numerice

slide 3

O band de asamblare ideal


stage
1

stage
2

stage
3

stage
4

Toate obiectele trec prin acelai nivele


Fr resurse partajate ntre oricare dou nivele
ntrzierea de proapagare prin toate etapele benzii de
asamblare este egal
Planificarea intrrii unui obiect n pipeline nu este afectat
de obiectele din alte etape

Aceste condiii sunt valabile pentru liniile de


asamblare industriale, dar instruciunile depind unele
de celalalte!
25-Apr-13

Calculatoare Numerice

slide 4

RISC-V n band de asamblare

Pentru a implementa RISC-V n band de


asamblare:
nti construim RISC-V fr pipeline cu
CPI=1
Pe urm, adaugm registre pentru pipeline
pentru a reduce timpul de execuie,
meninnd CPI=1
25-Apr-13

Calculatoare Numerice

slide 5

Cursul anterior: implementare fr


band de asamblare pentru RISC-V
PCSel
br
rind
jabs
pc+4

RegWriteEn

MemWrite

WBSel

0x4
Add
Add
clk

Br Logic

we
PC
clk

clk

rs1
rs2

addr

Bcomp?

rd1
wa
wd rd2

inst

Inst.
Memory

ALU

GPRs

we
addr
rdata

Data
Memory

Imm
Select

wdata
ALU
Control

OpCode
25-Apr-13

WASel

ImmSel

FuncSel

Op2Sel
Calculatoare Numerice

slide 6

Cursul anterior: Tabela de semnale


pentru unitatea de control a RISC-V
Opcode

ImmSel

ALU

SW

*
IType12
IType12
BsType12

BEQtrue

BrType12

BEQfalse

ALUi
LW

J
JAL
JALR

Op2Sel

Reg
Imm
Imm
Imm

FuncSel

MemWr

RFWen

WBSel

PCSel

rd
rd
rd
*

pc+4
pc+4
pc+4
pc+4

Func
Op
+
+

no
no
no
yes

yes
yes
yes
no

no

no

br

BrType12
*
*

*
*
*

*
*
*

no
no
no

no
no

*
*

*
*

pc+4
jabs

no

yes
yes

PC
PC

X1
rd

jabs
rind

Op2Sel= Reg / Imm


WASel = rd / X1

25-Apr-13

ALU
ALU
Mem
*

WASel

WBSel = ALU / Mem / PC


PCSel = pc+4 / br / rind / jabs

Calculatoare Numerice

slide 7

25-Apr-13

Calculatoare Numerice

slide 8

Magistral n band de asamblare


0x4
Add

PC

addr

rdata

IR

Inst.
Memory

fetch
phase

we
rs1
rs2
rd1
wa
wd rd2
GPRs

ALU

Data
Memory
wdata

Imm
Select

decode & Reg-fetch


phase

we
addr
rdata

execute
phase

write
-back
phase

memory
phase

Perioada ceasului poate fi redus prin mprirea execuiei unei


instruciuni n mai multe etape
tC > max {tIM, tRF, tALU, tDM, tRW} ( = tDM probabil)
Cu toate acestea, CPI va crete dac instruciunile nu sunt executate n pipeline
25-Apr-13

Calculatoare Numerice

slide 9

Legea de fier a performanei


procesoarelor

Time = Instructions
Cycles
Time
Program
Program * Instruction * Cycle
Instructions per program depinde de codul surs,
compilator i ISA
Cycles per instructions (CPI) depinde de ISA i
architectur
Time per cycle depinde de architectur i tehnologia de
baz n care e implementat procesorul
Microarchitectur
Microcodificat
Single-cycle unpipelined
Pipelined
25-Apr-13

CPI
>1
1
1

cycle time
short
long
short

Calculatoare Numerice

slide 10

Concepte de pipelining
Strategii pentru mbuntirea performanei
1 Folosim ci de date independente care accept citirea mai multor
instruciuni n paralel: multiple-instruction-issue sau superscalar
2 Suprapunem execuia diferitelor instruciuni prin pornirea urmtoarei
instruciuni nainte de terminarea celei n curs de execuie:(super)pipelined
Approval
1

Cashier
2
2

Registrar
3

ID photo
4

Pickup
5

Start
here

Exit

Banda de asamblare aplicat unui proces de nregistrare


persoane
25-Apr-13

Calculatoare Numerice

slide 11

Execuia instruciunilor n banda de


asamblare
Cycle 2

Instr
cache

Cycle 4

Cycle 5

Cycle 6

Cycle 7

Cycle 8

ALU

Data
cache

Reg
file

Instr
cache

Reg
file

ALU

Data
cache

Reg
file

Instr
cache

Reg
file

ALU

Data
cache

Reg
file

Instr
cache

Reg
file

ALU

Data
cache

Reg
file

Instr
cache

Reg
file

ALU

Data
cache

Instr 3

Reg
file

Instr 4
Instr 5

Cycle 3

Cycle 9

Time dimension

Instr 2

Instr 1

Cycle 1

Task
dimension

Reg
file

Exemplu de execuie n b.a. pentru un procesor general


25-Apr-13

Calculatoare Numerice

slide 12

Reprezentri alternative ale benzii de


asamblare
O band de asamblare poate s execute de obicei o instruciune pe front
de ceas. IPS este dictat de frecvena ceasului sistemului.
1
2

f
f = Fetch
r = Reg read
a = ALU op
d = Data access
w = Writeback

3
4
5
6
7

10

11

Cycle

1
2

3
4
5

Start-up
region

10

Cycle
Drainage
region

Pipeline
stage

Instruction
(a) Task-time diagram

(b) Space-time diagram

Dou reprezentri grafice abstracte a unei benzi de


asamblare n cinci etape ce execut apte instruciuni.
25-Apr-13

Calculatoare Numerice

11

slide 13

Exemplu de b.a. ntr-un fotocopiator


Un fotocopiator cu o tav de x foi de hrtie copiaz prima foaie n 4s
i apoi celelalte foi n cte 1s. Calea pentru copiator este o b.a. n
4 etape, n care fiecare etap are o laten de 1s. Prima pagin
trece prin toate cele 4 etape ale b.a. i iese dup 4s. Fiecare
pagin urmtoare iese la 1s dup anterioar. Cum variaz
productivitatea copiatorului n funcie de x, presupunnd c
ncrcarea i descrcarea copiatorului dureaz 15s.
Soluie
Fiecare teanc de x foi este copiat n 15 + 4 + (x 1) = 18 + x secunde.
Un copiator fr b.a. necesit 4x secunde ca s copieze x foi.
Pentru x > 6, versiunea cu b.a. are o performan mai bun.
Dac x = 50, mbuntirea de performan este
(4 50) / (18 + 50) = 2.94.

25-Apr-13

Calculatoare Numerice

slide 14

Exemple CPI
Main cu microcod
7 cicli
5 cicli
Inst 1

Inst 2

Main fr pipeline
Inst 1
Main cu pipeline
Inst 1
Inst 2
Inst 3
25-Apr-13

10 cicli

Timp

Inst 3

3 instruciuni, 22 cicli, CPI=7.33


Inst 2

Inst 3

3 instruciuni, 3 cicli, CPI=1

3 instruciuni, 3 cicli, CPI=1


5 niveluri de pipeline CPI5!!!
Calculatoare Numerice

slide 15

Presupuneri legate de tehnologie


Memorie mic dar foarte rapid (cache)
susinut de o memorie lent dar semnificativ
mai mare
UAL rapid (cel puin pentru calcul pe ntregi)
Tabele de registre multiport (mai lente!)
Prin urmare, urmtoarea presupunere este rezonabil

tIM tRF tALU tDM tRW


Vom proiecta o band de asamblare n 5 etape
- unele design-uri comerciale de procesor au
peste 30 de etape pentru a face o singur adunare de
ntregi!
25-Apr-13

Calculatoare Numerice

slide 16

Execuie n band de asamblare cu 5


niveluri
0x4
Add

PC

addr
rdata

we
rs1
rs2
rd1
wa
wd rd2
GPRs

IR

Inst.
Memory

I-Fetch
(IF)

we
addr
rdata

ALU

Data
Memory
wdata

Imm
Select

Decode, Reg. Fetch Execute


(EX)
(ID)

timp
instruction1
instruction2
instruction3
instruction4
instruction5
25-Apr-13

t0
IF1

t1
ID1
IF2

t2
EX1
ID2
IF3

t3
MA1
EX2
ID3
IF4

t4
WB1
MA2
EX3
ID4
IF5

Write
-Back
(WB)

Memory
(MA)
t5

t6

t7

....

WB2
MA3 WB3
EX4 MA4 WB4
ID5 EX5 MA5 WB5

Calculatoare Numerice

slide 17

Execuie n band de asamblare cu 5


niveluri (folosirea resurselor)
0x4

Add
addr
rdata IR

Inst.
Memory

Imm
Selec
t

ALU

we
addr
rdata

Data
Memory
wdata

I-Fetch Decode, Reg. Fetch Execute Memory


(IF)
(ID)
(EX)
(MA)
timp
t0 t1 t2 t3 t4 t5 t6 t7 . .
IF
I1 I2 I3 I4 I5
ID
I1 I2 I3 I4 I5
EX
I1 I2 I3 I4 I5
MA
I1 I2 I3 I4 I5
WB
I1 I2 I3 I4 I5

Write
-Back
(WB)

Resurse

PC

we
rs1
rs2
rd
ws
1
wd rd2
GPRs

25-Apr-13

Calculatoare Numerice

slide 18

Execuie n pipeline:
Instruciuni UAL
0x4

IR

Add

IR

IR

PC

addr

inst IR

Inst
Memory

we
rs1
rs2
rd1
wa
wd rd2

GPRs

A
Y

ALU

we
addr
rdata

Data
Memory
wdata

Imm
Select

wdata
MD1

MD2

Nu e foarte corect!
Avem nevoie de un Instruction Reg (IR) pentru fiecare etap
25-Apr-13

Calculatoare Numerice

slide 19

Magistrala n b.a. Pentru RISC-V


fr instruciuni de jump

IR

IR

W
IR
1

0x4
Add

WASel
RegWriteEn

PC

addr

inst IR

Inst
Memory

we
rs1
rs2
rd1
wa
wd rd2

FuncSel
A
ALU

GPRs

Op2Sel

we
addr

Data
Memory
wdata
wdata

Imm
Select

ImmSel

WBSel

rdata

MD1

25-Apr-13

MemWrite

MD2

Punctele de control
trebuie s fie conectate

Calculatoare Numerice

slide 20

Instruciunile interacioneaz unele cu


celalalte n pipeline

O instruciune din b.a. Poate avea nevoie de o


resurs folosit de alt instruciune din b.a.
Hazard structural

O instruciune poate s depind de rezultatul unei


instruciuni anterioare
Dependena poate s fie pentru valoarea unei variabile

hazard de date
Dependena poate s fie pentru adresa urmtoarei
instruciuni
hazard de control (branch-uri, excepii)

25-Apr-13

Calculatoare Numerice

slide 21

Soluionarea hazardurilor structurale


Hazardurile structurale apar atunci cnd dou instruciuni
necesit aceeai resurs hardware n acelai timp
Poate fi rezolvat n hardware prin oprirea execuiei noii instruciuni pn
cnd instruciunea mai veche a eliberat resursa folosit

Un hazard hardware structural poate fi ntotdeauna evitat prin


adugarea de mai mult hardware n design
E.g., dac dou instruciuni au nevoie de acces la memorie n acelai timp,
se poate soluiona prin folosirea unei memorii bi- sau multi-port

Implementarea noastr n 5 etape nu are hazarduri structurale de


la bun nceput
Datorit RISC-V ISA, care a fost proiectat pentru execuia n b.a.

25-Apr-13

Calculatoare Numerice

slide 22

Hazarduri de date
x1

x4 x1
0x4

IR

Add

PC

addr

inst IR

Inst
Memory

we
rs1
rs2
rd1
wa
wd rd2

GPRs

A
Y

ALU

25-Apr-13

we
addr
rdata

Data
Memory

Imm
Select

...
x1 x0 + 10
x4 x1 + 17
...

IR

IR

wdata

wdata
MD1

MD2

x1 este nvechit. Oops!


Calculatoare Numerice

slide 23

Soluionarea hazardurilor de date (1)

Strategia 1:
Atept ca rezultatul s fie disponibil prin
nghearea tuturor etapelor anterioare ale b.a.
interlocking

25-Apr-13

Calculatoare Numerice

slide 24

Feedback pentru soluionarea


hazardurilor

FB1

FB2

stage
1

FB3

stage
2

FB4

stage
3

stage
4

Etapele superioare furnizeaz informaii legate de dependen


stagiilor inferioare, care pot ncetini sau opri instruciunile
Controlul unei b.a. n acest fel funcioneaz dac instruciunea
de la nivelul i+1 poate s comepleteze execuia fr nici o
interferen cu instruciunile din nivelele 1..i (altfel pot apare
deadlock-uri)
25-Apr-13

Calculatoare Numerice

slide 25

Hazarduri n b.a. Stalls & Bubbles


Generate din cauza dependenelor de date

$5 = $6 + $7

Cycle 1

Cycle 2

Instr
cache

Reg
file

Instr
cache

$8 = $8 + $6

$9 = $8 + $2

sw $9, 0($3)

Cycle 3

Cycle 4

Cycle 5

Cycle 6

Cycle 7

ALU

Data
cache

Reg
file

Reg
file

ALU

Data
cache

Reg
file

Instr
cache

Reg
file

ALU

Data
cache

Reg
file

Instr
cache

Reg
file

ALU

Data
cache

Cycle 8

Data
forwarding

Reg
file

Dependen Read-After-Write i soluionarea ei prin data forwarding

25-Apr-13

Calculatoare Numerice

slide 26

Cycle 1

Cycle 2

Cycle 3

Cycle 4

Cycle 5

Instr
cache

Reg
file

ALU

Data
cache

Reg
file

Instr
cache

Reg
file

Instr 3

Instr 2

Instr 1

Inserarea de bule ntr-o b.a.

Instr 5

Instr 4

Instr
cache

Instr
cache

Instr 3

Cycle 2

Cycle 3

Reg
file

ALU

Instr
cache

Reg
file

Instr 4

Instr
cache

Cycle 4
Data
cache

Task
dimension

25-Apr-13

Data
cache

Instr
cache

Reg
file

Cycle 5

Cycle 6

Data
cache

Cycle 9

Fr data forwarding avem


nevoie de aceste trei bule
pentru a soluiona
dependena read-after-write

Time dimension

Reg
file

Data
cache

Reg
file

ALU

Data
cache

Reg
file

Cycle 8

Cycle 9

Cycle 7

Scrie la $8

Citete de la $8

Time dimension

Doar dou bule dac


presupunem c un registru
poate fi scris i citit ntr-un
singur ciclu de ceas.

Reg
file

Data
cache

Reg
file

Reg
file

ALU

Data
cache

Reg
file

Instr
cache

Reg
file

ALU

Data
cache

ALU
Bubble

Instr
cache

Cycle 8

Reg
file

Bubble
ALU

Reg
file

ALU
Bubble
Reg
file

Data
cache

Reg
file

Cycle 7

Scrie la $8

ALU
Bubble

Task
dimension

Instr 2

Instr 1

Reg
file

Instr
cache

Cycle 1

Instr 5

ALU
Bubble

Cycle 6

Citete de la $8
Reg
file

Calculatoare Numerice

slide 27

Al doilea tip de dependen de date


C ycle 1

C ycle 2

Instr
mem

Reg
file

sw $6, . . .

C ycle 3

ALU

C ycle 4

C ycle 5

Data
mem

Reg
file

C ycle 6

C ycle 7

C ycle 8

Reorder?
lw $8, . . .

Instr
mem

Insert bubble?
$9 = $8 + $2

Reg
file

ALU

Data
mem

Reg
file

Instr
mem

Reg
file

ALU

Data
mem

Reg
file

Instr
mem

Reg
file

ALU

Data
mem

Reg
file

Fr data forwarding, este nevoie de trei (dou) bule


pentru a rezolva un conflict read-after-load.

Dependena Read-After-Load i soluionarea ei prin inserarea de bule i


data forwarding
25-Apr-13

Calculatoare Numerice

slide 28

Interlocking pentru a rezolva


hazardurile de date
Condiie de stall

bubble

0x4
Add

PC

addr

IR

IR

IR
1

inst IR

Inst
Memory

...
x1 x0 + 10
x4 x1 + 17
...
25-Apr-13

we
rs1
rs2
rd1
wa
wd rd2

GPRs

A
ALU

we
addr
rdata

Data
Memory

Imm
Select

wdata

wdata
MD1

MD2

Calculatoare Numerice

slide 29

Stalled Stages & Pipeline Bubbles


timp
t0 t1 t2 t3 t4 t5
(I1) x1 (x0) + 10 IF1 ID1 EX1 MA1 WB1
(I2) x4 (x1) + 17
IF2 ID2 ID2 ID2 ID2
(I3)
IF3 IF3 IF3 IF3
(I4)
stalled stages
(I5)

Resource
Usage

IF
ID
EX
MA
WB

timp
t0 t1
I1
I2
I1

t2
I3
I2
I1

t3
I3
I2
I1

t4
I3
I2
I1

t5
I3
I2
-

t6

....

EX2 MA2 WB2


ID3 EX3 MA3 WB3
IF4 ID4 EX4 MA4 WB4
IF5 ID5 EX5 MA5 WB5

t6
I4
I3
I2
-

-
25-Apr-13

t7

t7
I5
I4
I3
I2
-

....
I5
I4
I3
I2

I5
I4
I3

I5
I4

pipeline bubble

Calculatoare Numerice

slide 30

I5

Logica de control pentru interlocking


stall

wa
Cstall
rs2 ?
rs1

bubble

0x4
Add

PC

addr

IR

IR

IR
1

inst IR

Inst
Memory

we
rs1
rs2
rd1
wa
wd rd2

GPRs

A
ALU

we
addr
rdata

Data
Memory

Imm
Select

wdata

wdata
MD1

MD2

Compar registrele surs ale instruciunii din faza de decode


cu registrul destinaie al instruciunilor n curs de execuie
25-Apr-13

Calculatoare Numerice

slide 31

Logica de control pentru interlocking


fr jumps & branches
stall

Cstall
rs1 ?
rs2
re1
re2
Cre

0x4
Add

PC

wa
we

addr

Cdest

Cdest

bubble

wa

wa we

we

IR

IR

IR
1

inst IR

Inst
Memory

we
rs1
rs2
rd1
wa
wd rd2

GPRs

Cdest
A
ALU

we
addr
rdata

Data
Memory
wdata

Imm
Select

wdata
MD1

MD2

Trebuie s stagnm ntotdeauna cnd adresa unui rs este egal cu a unui rd?
nu orice instruciune scrie un registru -> we
nu orice instruciune citete un registru -> re
25-Apr-13

Calculatoare Numerice

slide 32

Registrele surs i destinaie


rd

rs1

rd

rs1
Imm[11:0]
func3 opcode ALUI/LW/JALR
rs1
rs2 Imm[6:0] func3 opcode SW/Bcond
Jump offset[24:0]
opcode

Imm[11:7]

rs2

ALU
rd <- rs1 func10 rs2
ALUI
rd <- rs1 op imm
LW
rd <-M [rs1 + imm]
SW
M [rs1 + imm] <- rs2
Bcond rs1,rs2
true:
PC <- PC + imm
false: PC <- PC + 4
J
PC <- PC + imm
JAL
x1 <- PC, PC <- PC + imm
JALR
rd <- PC, PC <- rs1 + imm
25-Apr-13

func10

opcode

source(s)
rs1, rs2
rs1
rs1
rs1, rs2
rs1, rs2

rs1
Calculatoare Numerice

ALU

destination
rd
rd
rd
-

x1
rd
slide 33

Determinarea semnalului de stall


pentru b.a.
Cre

Cdest
ws = Case opcode
JAL
else

-> X1
-> rd

we = Case opcode
ALU, ALUi, LW,JALR ->(ws != 0)
JAL
->on
...
->off

Cstall

re1 = Case opcode


ALU, ALUi,
LW, SW, Bcond,
->on
JALR
->off
J, JAL
re2 = Case opcode
ALU, SW,Bcond ->on
->off
...

stall = ((rs1D =wsE).weE +


(rs1D =wsM).weM +
(rs1D =wsW).weW) . re1D +
((rs2D =wsE).weE +
(rs2D =wsM).weM +
(rs2D =wsW).weW) . re2D
25-Apr-13

Calculatoare Numerice

slide 34

Hazarduri determinate de instruciuni


Load & Store
Dar dac
x1+7 = x3+5 ?

Condiie de stall
0x4

bubble

Add

PC

addr

IR

IR

IR
1

inst IR

Inst
Memory

...
M[x1+7] <- x2
x4 <- M[x3+5]
...
25-Apr-13

we
rs1
rs2
rd1
wa
wd rd2

GPRs

A
ALU

we
addr

rdata

Data
Memory
wdata

Imm
Select

wdata
MD1

MD2

Este posibil vreun hazard de date n cadrul


acestei secvene de instruciuni?
Calculatoare Numerice

slide 35

Hazarduri Load & Store


...
M[x1+7] <- x2
x4 <- M[x3+5]
...

x1+7 = x3+5 -> hazard de date

Cu toate acestea, hazardul este evitat pentru c sistemul


de memorie face un write ntr-un singur ciclu de ceas!
Hazardurile Load/Store sunt cteodat soluionate n
pipeline i cteodat n sistemul de memorii.
Vom vorbi mai multe despre asta n curs.
25-Apr-13

Calculatoare Numerice

slide 36

Soluionarea hazardurilor de date(2)

Strategia 2:
Ruteaz datele imediat ce ele sunt calculate ctre
nivelurile inferioare din banda de asamblare
bypass

25-Apr-13

Calculatoare Numerice

slide 37

Bypassing
timp
(I1) x1 x0 + 10
(I2) x4 x1 + 17
(I3)
(I4)
(I5)

t0
IF1

t1 t2 t3 t4 t5
ID1 EX1 MA1 WB1
IF2 ID2 ID2 ID2 ID2
IF3 IF3 IF3 IF3
stalled stages

t6

t7

....

EX2 MA2 WB2


ID3 EX3 MA3
IF4 ID4 EX4
IF5 ID5

Fiecare stall sau kill introduce o bul n banda de asamblare


=> CPI > 1

O nou cale de date, i.e., un bypass, poate aduce datele de la


ieirea UAL la intrarea acesteia
timp
t0
(I1) x1 x0 + 10
(I2) x4 x1 + 17
(I3)
(I4)
(I5)
25-Apr-13

t1
IF1

t2 t3
ID1 EX1
IF2 ID2
IF3

t4
MA1
EX2
ID3
IF4

t5
WB1
MA2
EX3
ID4
IF5

Calculatoare Numerice

t6

t7

....

WB2
MA3 WB3
EX4 MA4 WB4
ID5 EX5 MA5 WB5
slide 38

Adugarea unui bypass


stall

x4 x1...
0x4

x1 ...
E

bubble

Add

IR

IR

IR
1

ASrc

PC

addr

inst IR

Inst
Memory

we
rs1
rs2
rd1
wa
wd rd2

GPRs

A
ALU

rdata

Data
Memory
wdata

Imm
Select
MD2

Cnd ajut acest bypass?


...
x1 <- x0 + 10
x1 <- M[x0 + 10]
x4 <- x1 + 17
x4 <- x1 + 17
da
nu
25-Apr-13

wdata
MD1

(I1)
(I2)

we
addr

Calculatoare Numerice

JAL 500
x4 <- x1 + 17
nu
slide 39

Semnalul de bypass
Derivarea semnalului din cel pentru Stall
stall = ( ((rs1D =wsE).weE + (rs1D =wsM).weM + (rs1D =wsW).weW).re1D
+((rs2D =wsE).weE + (rs2D =wsM).weM + (rs2D =wsW).weW).re2D )
ws = Case opcode
JAL ->X1
else ->rd

ASrc = (rs1D=wsE).weE.re1D

we = Case opcode
ALU, ALUi, LW, JALR ->(ws != 0)
JAL
->on
...
->off

Este corect?

Nu, pentru c doar instruciunile tip ALU i ALUi pot beneficia de un


astfel de bypass
mprim weE n dou componente: we-bypass, we-stall

25-Apr-13

Calculatoare Numerice

slide 40

Semnalele Bypass i Stall


mprim weE n dou componente: we-bypass, we-stall
we-bypassE = Case opcodeE
ALU, ALUi -> (ws != 0)
...
->off
ASrc

we-stallE = Case opcodeE


LW, JALR -> (ws != 0)
JAL
->on
...
->off

= (rs1D =wsE).we-bypassE . re1D

stall = ((rs1D =wsE).we-stallE +


(rs1D=wsM).weM + (rs1D=wsW).weW). re1D
+((rs2D = wsE).weE + (rs2D = wsM).weM + (rs2D = wsW).weW). re2D

25-Apr-13

Calculatoare Numerice

slide 41

Ci de date complet separate


PC for JAL, ...

stall

0x4

bubble

Add

PC

addr

ASrc

inst IR

Inst
Memory

Mai este
nevoie de un
semnal de
stall ?

IR

IR

IR
1

we
rs1
rs2
rd1
wa
wd rd2

A
ALU

GPRs

Imm
Select

BSrc

we
addr
rdata

Data
Memory
wdata

wdata
MD1

MD2

stall = (rs1D=wsE). (opcodeE=LWE).(wsE!=0 ).re1D


+ (rs2D=wsE). (opcodeE=LWE).(wsE!=0 ).re2D
25-Apr-13

Calculatoare Numerice

slide 42

Exemple de CPI pentru b.a.


Timp

Inst 1
Inst 2
Inst 3
Inst 1
Inst 2
Bubble
Inst 3

Msurm din momentul n care termin prima


instruciune pn cnd ultima instruciune i
incheie execuia.
3 instruciuni termin n 3 cicli
CPI = 3/3 =1

3 instruciuni termin n 4 cicli


CPI = 4/3 = 1.33

Inst 1
Bubble 1
Inst 2
Inst
Bubble
3 2
Inst 3
25-Apr-13

3 instruciuni termin n 5 cicli


CPI = 5/3 = 1.67

Calculatoare Numerice

slide 43

Soluionarea hazardurilor de date (3)

Strategia 3: Speculeaz legat de dependen!


Dou cazuri:
Am ghicit corect nu face nimic
Am ghicit incorect kill i restart
. Vom vedea mai trziu exemple de astfel de
comportament n procesoare mai complexe.

25-Apr-13

Calculatoare Numerice

slide 44

Speculm ca valoarea pentru


load=zero
PC for JAL, ...

stall

0x4

bubble

Add

PC

addr

ASrc

inst IR

Inst
Memory

we
rs1
rs2
rd1
wa
wd rd2

IR

IR

IR
1

Guess_zero

A
ALU

GPRs

Imm
Select

BSrc

we
addr
rdata

Data
Memory
wdata

wdata
MD1

MD2

Guess_zero= (rs1D=wsE). (opcodeE=LWE).(wsE!=0 ).re1D


De asemenea, avem nevoie de circuite adiionale pentru a ne aduce aminte c a fost o
presupunere i s golom b.a. dac load != zero!
Nu este indicat o astfel de implementare n practic de ce?
25-Apr-13

Calculatoare Numerice

slide 45

Hazarduri de control
De ce avem nevoie pentru a calcula urmtorul PC?
Pentru Jump-uri
Opcode, PC i offset

Pentru Jump Register


Opcode, Register value i PC

Pentru Branch-uri Condiionale


Opcode, Register (pentru condiie), PC i offset

Pentru toate celalalte instruciuni


Opcode i PC ( i trebuie s tim dinainte c nu este una dintre cele de
mai sus )

25-Apr-13

Calculatoare Numerice

slide 46

Hazarduri de control ntr-o b.a.


C ycle 1

C ycle 2

Instr
mem

Reg
file

Instr
mem

$6 = $3 + $5

beq $1, $2, . . .

Insert bubble?

C ycle 3

C ycle 4

C ycle 5

ALU

Data
mem

Reg
file

Reg
file

ALU

Data
mem

Reg
file

Instr
mem

Reg
file

ALU

Data
mem

Reg
file

Instr
mem

Reg
file

ALU

Data
mem

$9 = $8 + $2

Assume branch
resolved here

C ycle 6

C ycle 7

C ycle 8

Reorder?
(delayed
branch)

Reg
file

Here would need


1-2 more bubbles

Hazard de control datorat unui branch condiional.


25-Apr-13

Calculatoare Numerice

slide 47

Bule n calculul PC
(I1) x1 x0 + 10
(I2) x3 x2 + 17
(I3)
(I4)

Resource
Usage

IF
ID
EX
MA
WB

timp
t0 t1 t2 t3
IF1 ID1 EX1 MA1
IF2 IF2 ID2
IF3

time
t0 t1
I1
I1

t2
I2

I1

t3

I2
I1

t4 t5
WB1
EX2 MA2
IF3 ID3
IF4

t6

t4
I3

t6
I4

I2
I1

t5

I3
I2
-

....

WB2
EX3 MA3 WB3
IF4 ID4 EX4 MA4 WB4

I3
I2

-
25-Apr-13

t7

t7

....

I4
I3
-

I4
I3

I4
-

I4

pipeline bubble

Calculatoare Numerice

slide 48

Speculm c urmtoarea adres e


PC+4PCSrc (pc+4 / jabs / rind/ br) stall
Add

bubble

0x4
Add

Jump?

PC
104

I1
I2
I3
I4

addr

inst

IR

IR

I1

IR

Inst
Memory

096
100
104
304

I2

ADD
J 304
ADD
ADD

25-Apr-13

kill

O instruciune de jump omoar


(nu stagneaz) urmtoarea
instruciune
Cum?
Calculatoare Numerice

slide 49

Implementarea salturilor n b.a.


PCSrc (pc+4 / jabs / rind/ br)

stall

Pentru a invalida o
instruciune la care s-a
fcut fetch -- inserm un
MUX nainte de IR

Add

bubble

0x4
Add

Jump?

304
104

I1
I2
I3
I4

addr

inst

bubble

Inst
Memory

096
100
104
304

IR
bubble
I2

ADD
J 304
ADD
ADD

25-Apr-13

kill

IR

IR

II21

I1

Exist
vreo
interaciun
e ntre
stall i
jump?

IRSrcD
PC

IRSrcD = Case opcodeD


J, JAL
bubble
...
IM

Calculatoare Numerice

slide 50

Diagrame pipeline pentru Jump


(I1)
(I2)
(I3)
(I4)

096:
100:
104:
304:

ADD
J 304
ADD
ADD

Resource
Usage

IF
ID
EX
MA
WB

timp
t0 t1 t2
IF1 ID1 EX1
IF2 ID2
IF3

timp
t0 t1
I1
I2
I1

t2
I3
I2
I1

t3
MA1
EX2
IF4

t4
WB1
MA2
ID4

t5

t6

....

t3
I4
I2
I1

t4
I5
I4
I2
I1

t5

t6

t7

....

I5
I4
I2

I5
I4
-

I5
I4

I5

WB2
EX4 MA4 WB4

-
25-Apr-13

t7

Calculatoare Numerice

pipeline bubble
slide 51

Implementarea n b.a. a salturilor


condiionale
PCSrc (pc+4 / jabs / rind / br)

stall

Add
0x4

bubble

Add

IR

IR

I1

BEQ?

Taken?

IRSrcD
PC

104

I1
I2
I3
I4

096
100
104
304

addr

inst

bubble

Inst
Memory

ADD
BEQ x1,x2 +200
ADD
ADD
25-Apr-13

IR

A
ALU

I2

Condiia de brach nu e cunoscut pn la faza


de execute
Ce aciuni putem ntreprinde n faza de
decode?
Calculatoare Numerice

slide 52

Implementarea n b.a. a salturilor


condiionale
PCSrc (pc+4 / jabs / rind / br)

stall

?
Add

bubble

0x4

Bcond?

Add

IR

IR

I2

I1

Taken?
IRSrcD
PC
108

I1
I2
I3
I4

096
100
104
304

addr

inst

bubble

Inst
Memory

IR

A
ALU

I3

Dac branch-ul este valid


ADD
BEQ x1,x2 +200 - Invalideaz urmtoarele 2 instruciuni
- Instruciunea din faza de decode nu este valid
ADD
semnalul stall nu este valid
ADD
25-Apr-13

Calculatoare Numerice

slide 53

Implementarea n b.a. a salturilor


condiionale
stall

Add

PCSrc (pc+4/jabs/rind/br)

bubble

0x4

Bcond?

IRSrcE

Add

Jump?

IR

IR

I2

I1

Taken?
PC

PC
108

I1:
I2:
I3:
I4:

096
100
104
304

IRSrcD

addr

inst

bubble

Inst
Memory

IR

A
ALU

I3

Dac branch-ul este valid


ADD
BEQ x1,x2 +200 - Omoar urmtoarele 2 instruciuni
- Instruciunea din faza de decode nu este valid
ADD
semnalul stall nu este valid
ADD
25-Apr-13

Calculatoare Numerice

slide 54

Diagrame pentru execuia n b.a. a


branch-urilor
(I1)
(I2)
(I3)
(I4)
(I5)

timp
t0 t1 t2
096: ADD
IF1 ID1 EX1
100: BEQ +200
IF2 ID2
104: ADD
IF3
108:
304: ADD

Resource
Usage

IF
ID
EX
MA
WB

timp
t0 t1
I1
I2
I1

t2
I3
I2
I1

t3
MA1
EX2
ID3
IF4

t4
WB1
MA2
IF5

t5

t6

....

t3
I4
I3
I2
I1

t4
I5
I2
I1

t5

t6

t7

....

I5
I2

I5
-

I5
-

I5

WB2
ID5 EX5 MA5 WB5

-
25-Apr-13

t7

Calculatoare Numerice

pipeline bubble
slide 55

Temporizarea i performana unei b.a.

Latching
of results

t
Function unit

Stage
1
t/q

Stage
2

Stage
3

.. .

Stage
q1

Stage
q

Forma n b.a. a unei uniti funcionale cu ntrzierile introduse de latchuri


25-Apr-13

Calculatoare Numerice

slide 56

Creterea de productivitate a unei b.a.


cu q stagii
Throughput improvement factor

8
7

t
t/q +

Ideal:
/t = 0

/t = 0.05

sau

5
4

q
1 + q / t

/t = 0.1

3
2
1

4
5
6
Number q of pipeline stages

Creterea n productivitate n funcie de numrul de etape din b.a. i de


ntrzierile datorate propagrii semnalelor prin diferitele latch-uri ale b.a.
25-Apr-13

Calculatoare Numerice

slide 57

Productivitatea b.a. afectat de


hazarduri
Presupunem c o bul trebuie s fie inserat din cauza unei
dependene read-after-load i dup un branch.
Notm cu procentul de instruciuni care sunt urmate de o bul.
Pipeline speedup =

q
(1 + q / t)(1 + )

R-type
Load
Store
Branch
Jump

44%
24%
12%
18%
2%

Exemplu:

Calculai CPI efectiv pentru un procesor MIPS, presupunnd ca un


sfert din toate instruciunile de branch i load sunt urmate de
bule
Soluie Procent de bule: = 0.25(0.24 + 0.18) = 0.105
CPI = 1 + = 1.105 (foarte aproape de valoarea ideal 1)

25-Apr-13

Calculatoare Numerice

slide 58

Acknowledgements
These slides contain material developed and
copyright by:

Arvind (MIT)
Krste Asanovic (MIT/UCB)
Joel Emer (Intel/MIT)
James Hoe (CMU)
John Kubiatowicz (UCB)
David Patterson (UCB)

MIT material derived from course 6.823


UCB material derived from course CS252
25-Apr-13

Calculatoare Numerice

slide 59

S-ar putea să vă placă și