You are on page 1of 64

Organizao de Computadores B 1

Universidade Federal do Rio Grande do Sul


Instituto de Informtica

Organizao de Computadores

Aulas 11 e 12

Dependncias
Organizao de Computadores B 2

Pipeline no MIPS
O que faz isto ser difcil?
Dependncias estruturais Instrues diferentes, em estgios
diferentes do pipeline, querem utilizar o mesmo recurso de hardware
Dependncias de controle A prxima instruo que ir ao pipeline
depende da sada de uma instruo de desvio, que j est no pipeline
Dependncias de dado Uma instruo que entrou no pipeline precisa
de um dado que est sendo computado por uma instruo que entrara
no pipeline.
Organizao de Computadores B 3

Sumrio
Dependncias Estruturais
Dependncias de Controle
Dependncias de Dados
Exerccios
Organizao de Computadores B 4

Sumrio
Dependncias Estruturais
Dependncias de Controle
Dependncias de Dados
Exerccios
Organizao de Computadores B 5

Dependncias Estruturais
No h recursos de hardware suficientes para suportar
todas as instrues no pipeline ao mesmo tempo
e.g.: Suponha uma memria pra instrues e dados no pipeline
com uma porta de leitura
H uma dependncia estrutural entre o primeiro e quarto lw

Program
execution 2 4 6 8 10 12 14
Time
order
(in instructions)
Instruction Data
lw $1, 100($0) Reg ALU Reg
fetch access
Pipeline
Instruction Data
lw $2, 200($0) 2 ns Reg ALU Reg
fetch access
Dependncia estrutural
Instruction Data
lw $3, 300($0) 2 ns Reg ALU Reg
fetch access
Instruction Data
lw $4, 400($0) Reg ALU Reg
2 ns fetch access

2 ns 2 ns 2 ns 2 ns 2 ns
Organizao de Computadores B 6

Sumrio
Dependncias Estruturais
Dependncias de Controle
Dependncias de Dados
Exerccios
Organizao de Computadores B 7

Dependncias de Controle
Uma deciso precisa ser feita baseada em uma instruo
que ainda est sendo executada no pipeline
No MIPS, no sabemos qual a deciso do desvio
condicional at o 4 estgio
O que fazer com as instrues seguintes?
Organizao de Computadores B 8

Dependncias de Controle
Soluo 1 Pare o pipeline (Stall)

Program
execution 2 4 6 8 10 12 14 16
order Time
(in instructions)
Instruction Data
add $4, $5, $6 fetch
Reg ALU
access
Reg Note que o branch computado
no segundo estgio (mais tarde)
Instruction Data
beq $1, $2, 40 Reg ALU Reg
2ns fetch access

Instruction Data
lw $3, 300($0) bubble Reg ALU Reg
fetch access

4 ns 2ns

Pipeline stall
Organizao de Computadores B 9

Dependncias de Controle
Soluo 1 Pare o pipeline (Stall)

Program
execution 2 4 6 8 10 12 14 16
order Deve-se procurar antecipar a deciso sobre o desvio
Time
(in instructions)
para Instruction
o estgio mais cedo
Data possvel
Note que o branch computado
add $4, $5, $6 Reg ALU Reg
fetch access
no segundo estgio (mais tarde)
Instruction Data
beq $1, $2, 40 Reg ALU Reg
2ns fetch access

Instruction Data
lw $3, 300($0) bubble Reg ALU Reg
fetch access

4 ns 2ns

Pipeline stall
Organizao de Computadores B 10

Dependncias de Controle (2)


Soluo 2 Delayed Branch
Sempre execute sequencialmente a prxima instruo
Como?
Achando uma instruo que seria executada de certeza antes do desvio
Colocando esta instruo aps o desvio no programa
Trabalho do Compilador

Exemplo:
Mquina com um delayed branch de apenas um ciclo:
Antes de aplicar a tcnica (cdigo original):
ADD R1, R2, R3
if R2 = 0 then
Delay slot

Aps aplicar a tcnica:

if R2 = 0 then
ADD R1, R2, R3
Organizao de Computadores B 11

Dependncias de Controle (2)


Soluo 2 Delayed Branch
Sempre execute sequencialmente a prxima instruo
Como?
Achando uma instruo que seria executada de certeza antes do desvio
Colocando esta instruo aps o desvio no programa
Trabalho do Compilador

Program
execution 2 4 6 8 10 12 14
order Time
(in instructions)
Instruction Data
beq $1, $2, 40 Reg ALU Reg
fetch access

Instruction Data
add $4, $5, $6 fetch
Reg ALU
access
Reg
(delayed branch slot) 2ns
Instruction Data
lw $3, 300($0) fetch
Reg ALU
access
Reg
2ns
2ns

O beq seguido por um add que independente


Organizao de Computadores B 12

Dependncias de Controle (3)


Soluo 3 Prever o resultado do desvio
e.g.: prever o desvio como not-taken.
Program
execution 2 4 6 8 10 12 14
order Time
(in instructions)
Instruction Data
add $4, $5, $6 fetch
Reg ALU
access
Reg

Instruction Data
beq $1, $2, 40 Reg ALU Reg
2 ns fetch access

Instruction Data
lw $3, 300($0) Reg ALU Reg
2 ns fetch access

Sucesso!
Program
execution 2 4 6 8 10 12 14
order Time
(in instructions)
Instruction Data
add $4, $5 ,$6 Reg ALU Reg
fetch access

Instruction Data
beq $1, $2, 40 Reg ALU Reg
fetch access
2 ns
bubble bubble bubble bubble bubble

Instruction Data
or $7, $8, $9 Reg ALU Reg
fetch access
4 ns
Falha: Desfazer (=flush) lw
Organizao de Computadores B 13

Dependncias de Controle (3)


Soluo 3 Prever o resultado do desvio
e.g.: prever o desvio como not-taken.
Program
execution 2 4 6 8 10 12 14
order Time
(in instructions)
Instruction Data
add $4, $5, $6 fetch
Reg ALU
access
Reg

Instruction Data
beq $1, $2, 40 Reg ALU Reg
2 ns fetch access

Instruction Data
lw $3, 300($0) Reg ALU Reg
2 ns fetch access

Instrues abandonadas Sucesso!


no podem ter afetado contedo de
registradores
Program e memrias 14
execution 2 4 6 8 10 12
order Isto usualmente automtico, porque escrita de valores
Time
(in instructions)
sempre feita
add $4, $5 ,$6
nos
Instruction
Reg
ltimosALU
estgios
Data
Reg
do pipeline
fetch access

Instruction Data
beq $1, $2, 40 Reg ALU Reg
fetch access
2 ns
bubble bubble bubble bubble bubble

Instruction Data
or $7, $8, $9 Reg ALU Reg
fetch access
4 ns
Falha: Desfazer (=flush) lw
Custo da Predio errada
Depende de onde o Branch resolvido!

Program Time (in clock cycles)


execution CC 1 CC 2 CC 3 CC 4 CC 5 CC 6 CC 7 CC 8 CC 9
order
(in instructions)

40 beq $1, $3, 7 IM Reg DM Reg

44 and $12, $2, $5 IM Reg DM Reg

48 or $13, $6, $2 IM Reg DM Reg

52 add $14, $2, $2 IM Reg DM Reg

72 lw $4, 50($7) IM Reg DM Reg


15

Predio Esttica
Supor sempre mesma direo para o desvio
desvio sempre ocorre
desvio nunca ocorre

Compilador define direo mais provvel


instruo de desvio contm bit de predio, ligado / desligado
pelo compilador
incio de lao (ou desvio para frente): desvio improvvel
final de lao (ou desvio para trs): desvio provvel

At 85% de acerto possvel


16

Predio Dinmica
tabela look-up associativa
endereo endereo bit de validade
instruo desvio

carga do endereo
de desvio

PC

endereo
fetch
instruo
Organizao de Computadores B 17

Predio Dinmica (2)


tabela look-up associativa armazena triplas
endereos das instrues de desvio condicional mais recentemente
executadas
endereos de destino destes desvios
bit de validade, indicando se desvio foi tomado na ltima execuo

quando instruo de desvio condicional buscada na


memria
feita comparao associativa na tabela, procura do endereo desta
instruo
se endereo encontrado e bit de validade est ligado, o endereo de
desvio armazenado na tabela usado
ao final da execuo da instruo, endereo efetivo de destino do desvio e
bit de validade so atualizados na tabela
tabela pode utilizar diversos mapeamentos e algoritmos
de substituio
Predio de 1 bit
uma previso baseada em histria (utiliza as informaes sobre
os desvios anteriores)

Previso de 1 bit de histria


T taken, N not taken

T T N N

T
19

Predio de 2 bits

N
T TT TN
T
T N
N
NT NN N
T
Organizao de Computadores B 20

Predio de 2 bits Contador Saturado

N
T TT TN
T
T N
T
N NN NT
N
21

Predio Dinmica (3)


variao: branch history table
contador associado a cada posio da tabela
a cada vez que uma instruo de desvio contida na tabela
executada ...
contador incrementado se desvio ocorre
contador decrementado se desvio no ocorre

valor do contador utilizado para a predio


Organizao de Computadores B 22

Tcnicas mais Avanadas


Two-level adaptive predictor
Guarda uma sequncia de takens e not-takens para um branch, e
decide a partir disto
Correlating Branches
Baseado na idia que o comportamento do branch atual
relacionado com os dos branches anteriores (pense em um IF-
ELSE)
H bits de predio locais e globais
Tournament Prediction
H dois histricos separados: um global e um local. Usa um seletor
para decidir qual usar
Redes Neurais...
Preditores de desvio de 2 bits
(Quantitative Approach)
Pentium 4 Dados Reais
Organizao de Computadores B 25

Ou ainda, executar os dois caminhos possveis!

buffer para
instrues seqenciais

fetch restante do pipeline

MEM branch

buffer para
instrues no-seqenciais
Organizao de Computadores B 26

Sumrio
Dependncias Estruturais
Dependncias de Controle
Dependncias de Dados
Exerccios
Dependncia de Dados
problema: instrues consecutivas podem fazer acesso
aos mesmos operandos
execuo da instruo seguinte pode depender de operando
calculado pela instruo anterior
caso particular: instruo precisa de resultado anterior
(p.ex. registrador) para clculo de endereo efetivo de
operando
tipos de dependncias de dados
dependncia verdadeira
antidependncia
dependncia de sada
Dependncia de dados e diagrama de
ciclos
Dependncias de dados viajam para trs no tempo

Time (in clock cycles)


$2 = 10 antes do sub; Value of CC 1 CC 2 CC 3 CC 4 CC 5 CC 6 CC 7 CC 8 CC 9
$2 = -20 depois do sub register $2: 10 10 10 10 10/ 20 20 20 20 20
Program
execution
order
(in instructions)
sub $2, $1, $3 IM Reg DM Reg

and $12, $2, $5 IM Reg DM Reg

sub $2, $1, $3


or $13, $6, $2 IM Reg DM Reg
and $12, $2, $5
or $13, $6, $2
add $14, $2, $2 add $14, $2, $2 IM Reg DM Reg

sw $15, 100($2)
sw $15, 100($2) IM Reg DM Reg
Dependncias Verdadeiras
exemplo
1. ADD R3, R2, R1 ; R3 = R2 + R1
2. SUB R4, R3, 1 ; R4 = R3 1
instruo 2 depende de valor de R3 calculado pela instruo 1
instruo 1 precisa atualizar valor de R3 antes que instruo 2
busque os seus operandos
read-after-write hazard
pipeline precisa ser parado durante certo nmero de
ciclos
Dependncias Falsas
Antidependncia
exemplo
1. ADD R3, R2, R1 ; R3 = R2 + R1
2. SUB R2, R4, 1 ; R2 = R4 1
instruo 1 utiliza operando em R2 que escrito pela instruo 2
instruo 2 no pode salvar resultado em R2 antes que instruo
1 tenha lido seus operandos
write-after-read hazard
no um problema em pipelines onde a ordem de
execuo das instrues mantida
escrita do resultado sempre o ltimo estgio
problema em processadores super-escalares
Dependncias Falsas (2)
Dependncia de sada
exemplo
1. ADD R3, R2, R1 ; R3 = R2 + R1
2. SUB R2, R3, 1 ; R2 = R3 1
3. ADD R3, R2, R5 ; R3 = R2 + R5
instrues 1 e 3 escrevem no mesmo R3
instruo 1 tem que escrever seu resultado em R3 antes do que a
instruo 3, seno valor final de R3 ficar errado
write-after-write hazard
tambm s problema em processadores super-
escalares
Organizao de Computadores B 32

Solues para dependncias verdadeiras


Para falsas, veremos mais tarde, neste mesmo semestre.
Soluo 1: Pipeline Interlock

mtodo para manter seqncia correta de leituras e


escritas em registradores
tag de 1 bit associado a cada registrador
tag = 0 indica valor no vlido, = 1 indica valor vlido
se instruo que buscada e decodificada escreve num
registrador, o tag do mesmo zerado
tag ligado quando instruo escreve o valor no
registrador
outras instrues que sejam executadas enquanto tag
est zerado devem esperar tag = 1 para ler valor deste
registrador
Soluo 1: Pipeline Interlock (2)
ADD R3, R4, 4 tag

SUB R5, R3, 8 banco de registradores

R3
ligar tag de R3
desligar
tag de R3
ler tag de R3
esperar, se tag = 0
ADD IF OF EX OS ler operando, se tag = 1

SUB IF OF OF OF EX OS
Soluo 2: Forwarding
exemplo
ADD R3, R2, R0
SUB R4, R3, 8
instruo SUB precisa do valor de R3, calculado pela
instruo ADD
valor escrito em R3 por ADD no ltimo estgio WB (write-back)
valor necessrio em SUB no terceiro estgio
instruo SUB ficar presa por 2 ciclos no 2 estgio do pipeline

IF OF EX MEM WB

IF stall stall OF EX

supe-se escrita no banco de registradores na primeira metade do ciclo e leitura na


segunda metade
Forwarding (2)
caminho interno dentro do pipeline entre a sada da ALU
e a entrada da ALU
evita stall do pipeline

IF OF EX MEM WB

forwarding

IF OF EX MEM WB

IF OF EX MEM WB
Forwarding (3)
exemplo 2
LOAD R3, 100 (R0)
ADD R1, R2, R3
forwarding: caminho interno dentro do pipeline entre a
sada da memria de dados e a entrada da ALU
IF OF EX MEM WB

forwarding

IF OF EX MEM WB

IF OF stall EX MEM
Forwarding (4)
Como feito:
As entradas da ALU no vem apenas do ID/EX, mas tambm de
registradores de pipeline posteriores
Usar multiplexadores e mais sinais de controle para escolher o valor correto
Time (in clock cycles)
CC 1 CC 2 CC 3 CC 4 CC 5 CC 6 CC 7 CC 8 CC 9
Value of register $2 : 10 10 10 10 10/ 20 20 20 20 20
Value of EX/MEM : X X X 20 X X X X X
Value of MEM/WB : X X X X 20 X X X X

Program
execution order
(in instructions)
sub $2, $1, $3 IM Reg DM Reg

sub $2, $1, $3


and $12, $2, $5 and $12, $2, $5 IM Reg DM Reg
or $13, $6, $2
add $14, $2, $2
or $13, $6, $2 IM Reg DM Reg
sw $15, 100($2)

add $14, $2, $2 IM Reg DM Reg

sw $15, 100($2) IM Reg DM Reg


Forwarding (5)
Forwarding pode no ser suficiente
e.g., uma instruo tipo R que precisa do resultado de um load que
comeou a ser executado no ciclo anterior load-use data hazard
2 4 6 8 10 12 14
Program Time
execution
order
(in instructions)

lw $s0, 20($t1) IF ID EX MEM WB Sem stall impossvel entregar


o dado a tempo
sub $t2, $s0, $t3 IF ID EX MEM WB

2 4 6 8 10 12 14
Program Time
execution
order
(in instructions)

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


Uma bolha suficiente

bubble bubble bubble bubble bubble

sub $t2, $s0, $t3 IF ID EX MEM WB


Soluo 3 Software
Exemplo:
lw $t0, 0($t1)
lw $t2, 4($t1)
Dependncia de Dados
sw $t2, 0($t1)
sw $t0, 4($t1)

Cdigo Reordenado:
lw $t0, 0($t1)
lw $t2, 4($t1)
sw $t0, 4($t1) Trocado
sw $t2, 0($t1)
Software (2)
Soluo mais radical: o compilador garante que nunca haver
dependncia de dados!
Reordenando as instrues
Ou simplesmente colocando bolhas (nops)
Que atrasa a execuo do programa
Organizao de Computadores B 42

Sumrio
Dependncias Estruturais
Dependncias de Controle
Dependncias de Dados
Projeto para deteco em Hardware
Exerccios
Bloco Operativo com controle
PCSrc

ID/EX
0
M
u WB
x EX/MEM
1
Control M WB
MEM/WB

EX M WB
IF/ID

Add

Add
4 Add result

RegWrite
Branch
Shift
left 2

MemWrite
ALUSrc
Read

MemtoReg
Instruction

PC Address register 1
Read
data 1
Read
register 2 Zero
Instruction
Registers Read ALU ALU
memory Write 0 Read
data 2 result Address 1
register M data
u Data M
Write x memory u
data x
1
0
Write
data

Precisamos de Instruction 16
[15 0] Sign
32 6
ALU MemRead
extend control
hardware para Instruction
DETECTAR e [20 16]
0 ALUOp
M
FAZER Instruction
[15 11]
u
x
1
Forwarding! RegDst
Deteco
Condies:
1a. EX/MEM.RegistradorRd = ID/EX.RegistradorRs
1b. EX/MEM.RegistradorRd = ID/EX.RegistradorRt
2a. MEM/WB.RegistradorRd = ID/EX.RegistradorRs
2b. MEM/WB.RegistradorRd = ID/EX.RegistradorRt
Eg., no exemplo anterior, a primeira dependncia entre
sub $2, $1, $3 e
and $12, $2, $5 detectada quando o and est no estgio EX stage e o sub
no estgio MEM, j que
EX/MEM.RegistradorRd = ID/EX. RegistradorRs = $2 (1a)

H tambm as seguintes condies:


Se a instruo posterior vai gravar em um registrador se no, no h a
necessidade de forward, mesmo que algumas das condies acima seja
verdadeira
Se o registrador de destino da instruo posterior no for $0 neste caso,
no h necessidade de forward de $0, que sempre tem valor zero por
conveno
ID/EX EX/MEM MEM/WB

Projeto do Registers ALU

Forwarding Data
memory M
u
x

a. No forwarding Sem forward


ID/EX EX/MEM MEM/WB

M
u
x
Registers
ForwardA ALU

M Data
u memory
x M
u
x

Rs ForwardB
Rt
Rt M
u EX/MEM.RegisterRd
Rd
x
Forwarding MEM/WB.RegisterRd
unit

b. With forwarding Com forward


Controle do Multiplexador
Mux control Source Explanation
ForwardA = 00 ID/EX The first ALU operand comes from the register file
ForwardA = 10 EX/MEM The first ALU operand is forwarded from prior ALU result
ForwardA = 01 MEM/WB The first ALU operand is forwarded from data memory
or an earlier ALU result
ForwardB = 00 ID/EX The second ALU operand comes from the register file
ForwardB = 10 EX/MEM The second ALU operand is forwarded from prior ALU result
ForwardB = 01 MEM/WB The second ALU operand is forwarded from data memory
or an earlier ALU result
Lgica para deteco de forward
1. EX hazard
if ( EX/MEM.RegWrite // if there is a write
and ( EX/MEM.RegisterRd 0 ) // to a non-$0 register
and ( EX/MEM.RegisterRd = ID/EX.RegisterRs ) ) // which matches, then
ForwardA = 10

if ( EX/MEM.RegWrite // if there is a write


and ( EX/MEM.RegisterRd 0 ) // to a non-$0 register
and ( EX/MEM.RegisterRd = ID/EX.RegisterRt ) ) // which matches, then
ForwardB = 10
Lgica para deteco de forward (2)
2. MEM hazard
if ( MEM/WB.RegWrite // if there is a write
and ( MEM/WB.RegisterRd 0 ) // to a non-$0 register
and ( EX/MEM.RegisterRd ID/EX.RegisterRs ) // and not already a register match
// with earlier pipeline register
and ( MEM/WB.RegisterRd = ID/EX.RegisterRs ) ) // but match with later pipeline
register, then
ForwardA = 01

if ( MEM/WB.RegWrite // if there is a write


and ( MEM/WB.RegisterRd 0 ) // to a non-$0 register
and ( EX/MEM.RegisterRd ID/EX.RegisterRt ) // and not already a register match
// with earlier pipeline register
and ( MEM/WB.RegisterRd = ID/EX.RegisterRt ) ) // but match with later pipeline
register, then
ForwardB = 01

necessrio para sequncias como add $1, $1, $2; add $1, $1, $3; add $1, $1, $4; onde um estgio
esquerda do pipeline (anterior) (EX/MEM) tem um dado mais recente
Forwarding Hardware with Control
ID/EX

WB
EX/MEM

Control M WB
MEM/WB

IF/ID EX M WB

M
Instruction

u
x
Registers
Instruction Data
PC ALU
memory memory M
u
M x
u
x

IF/ID.RegisterRs Rs
IF/ID.RegisterRt Rt
IF/ID.RegisterRt Rt
M EX/MEM.RegisterRd
IF/ID.RegisterRd Rd u
x
Forwarding MEM/WB.RegisterRd
unit

Alguns detalhes foram omitidos para facilitar a visualizao (ex. Controle do PC)
or $4, $4, $2 and $4, $2, $5 sub $2, $1, $3 before<1> before<2>

ID/EX
10 10
WB
EX/MEM

Forwarding IF/ID
Control M

EX
WB

M
MEM/WB

WB

2 $2 $1
M

Instruction
5 u
x
Registers
Instruction Data
PC ALU
memory memory M
$5 $3
u
M x
u
x

2 1
5 3
M
4 2 u
x
Forwarding

Ciclo 3 unit

Exemplo: Clock 3

add $9, $4, $2 or $4, $4, $2 and $4, $2, $5 sub $2, . . . before<1>

ID/EX
10 10
WB
sub $2, $1, $3 EX/MEM
10
Control M WB
MEM/WB
and $4, $2, $5 EX M WB
IF/ID
or $4, $4, $2
4 $4 $2

add $9, $4, $2 M


Instruction

6 u
x
Registers
Instruction Data
PC ALU
memory memory M
$2 $5
u
M x
u
x

2 2
6 5

M 2
4 4 u
x
Forwarding

Ciclo 4 unit

Clock 4
after<1> add $9, $4, $2 or $4, $4, $2 and $4, . . . sub $2, . . .

ID/EX
10 10
WB
EX/MEM

Forwarding
10
Control M WB
MEM/WB
1
IF/ID EX M WB

4 $4 $4
M

Instruction
2 u
x
Registers
Instruction 2 Data
PC ALU
memory memory M
$2 $2
u
M x
u
x

4 4
2 2
M 4 2
9 4 u
x

Exemplo: Forwarding

Ciclo 5 unit

Clock 5

after<2> after<1> add $9, $4, $2 or $4, . . . and $4, . . .

ID/EX
10
WB
sub $2, $1, $3 EX/MEM
10
Control M WB
MEM/WB
and $4, $2, $5 EX M WB
1
IF/ID
or $4, $4, $2
$4

add $9, $4, $2 M


Instruction

u
x
Registers
Instruction 4 Data
PC ALU
memory memory M
$2
u
M x
u
x

4
2

M 4 4
9 u
x
Forwarding

Ciclo 6 unit

Clock 6
Dependncia de dados e Paradas
Instruo Load ainda pode causar uma dependncia no resolvida:
Uma instruo tenta ler um registrador, cujo o lw anterior vai escrever

lw $2, 20($1) Time (in clock cycles)


Program CC 1 CC 2 CC 3 CC 4 CC 5 CC 6 CC 7 CC 8 CC 9
and $4, $2, $5 execution
order
or $8, $2, $6 (in instructions)
lw $2, 20($1) IM Reg DM Reg
add $9, $4, $2
Slt $1, $6, $7
and $4, $2, $5 IM Reg DM Reg

Neste caso,
or $8, $2, $6 IM Reg DM Reg
forwarding no ir
resolver
add $9, $4, $2 IM Reg DM Reg

slt $1, $6, $7 IM Reg DM Reg

A unidade de deteco de dependncia tem de parar (Stall) o pipeline


depois da instruo de load
Lgica para parar
Lgica de deteco da parada (stall)

if ( ID/EX.MemRead // if the instruction in the EX stage is a load


and ( ( ID/EX.RegisterRt = IF/ID.RegisterRs ) // and the destination register
or ( ID/EX.RegisterRt = IF/ID.RegisterRt ) ) ) // matches either source register
// of the instruction in the ID stage, then
stall the pipeline
Mecanismos para parada
Se a parada (stall) precisa acontecer, o pipeline precisa parar por
apenas 1 ciclo. Depois disto, a unidade de forwarding consegue
resolver a dependncia.
O que necessrio para parar por 1 ciclo:
O registrador IF/ID no muda (desabilita seu sinal de write) A instruo
no estgio ID ir se repetir
A instruo que vem logo aps, no estgio IF, precisa sofrer a parada
tambm O PC no pode mudar (desabilita seu sinal de write)
Mudar temporariamente os bits de controle EX, MEM e WB dos campos de
controle no registrador de pipeline ID/EX para zero nada ir acontecer,
uma bolha inserida.
Pipeline com lgica de forwarding e stall
Hazard ID/EX.MemRead
detection
unit ID/EX

WB
IF/IDWrite

EX/MEM
M
Control u M WB
x MEM/WB
0
IF/ID EX M WB
PCWrite

M
Instruction

u
x
Registers
Instruction Data
PC ALU
memory memory M
u
M x
u
x

IF/ID.RegisterRs
IF/ID.RegisterRt
IF/ID.RegisterRt Rt M EX/MEM.RegisterRd
IF/ID.RegisterRd Rd u
x
ID/EX.RegisterRt Rs Forwarding MEM/WB.RegisterRd
Rt unit
and $4, $2, $5 lw $2, 20($1) before<1> before<2> before<3>
Hazard
ID/EX.MemRead
detection
1 unit ID/EX
X
11
WB

IF/IDWrite
EX/MEM

Stalling IF/ID
Control
0
M
u
x
M

EX
WB

M
MEM/WB

WB

PCWrite
1 $1
M

Instruction
X u
x
Registers
Instruction Data
PC ALU
memory memory M
$X
u
M x
u
x

Exemplo: 1
X
2
M
u
x
ID/EX.RegisterRt Forwarding
unit

CicloClock
2 2
lw $2, 20($1) or $4, $4, $2 and $4, $2, $5 lw $2, 20($1) before<1> before<2>
Hazard
and $4, $2, $5 2
detection
unit
ID/EX.MemRead
ID/EX
5
or $4, $4, $2 00
WB
11

IF/IDWrite
EX/MEM
M
add $9, $4, $2 Control u
x
M WB
MEM/WB
0
IF/ID EX M WB

$2 $1
PCWrite

2
M
Instruction

5 u
x
Registers
Instruction Data
PC ALU
memory memory M
$5 $X
u
M x
u
x

2 1
5 X
2 M
4 u
x
ID/EX.RegisterRt Forwarding
unit

Ciclo 3
Clock 3
or $4, $4, $2 and $4, $2, $5 bubble lw $2, . . . before<1>
Hazard
ID/EX.MemRead
detection
2 unit ID/EX
5
10 00

IF/IDWrite
WB
EX/MEM

Stalling
M 11
Control u M WB
x MEM/WB
0
IF/ID EX M WB

PCWrite
2 $2 $2
M

Instruction
5 u
x
Registers
Instruction Data
PC ALU
memory memory M
$5 $5
u
M x
u
x

2 2

Exemplo: 5 5

M 2
4 4 u
x
ID/EX.RegisterRt Forwarding
unit

Ciclo 4
Clock 4

add $9, $4, $2 or $4, $4, $2 and $4, $2, $5 bubble lw $2, . . .
Hazard
ID/EX.MemRead
detection
4
lw $2, 20($1) 2
unit
10
ID/EX
10
IF/IDWrite
WB
EX/MEM
and $4, $2, $5 Control
M
u M WB
0
x MEM/WB
or $4, $4, $2 IF/ID
0
EX M WB
11

add $9, $4, $2


PCWrite

4 $4 $2
M
Instruction

2 u
x
Registers
Instruction 2 Data
PC ALU
memory memory M
$2 $5
u
M x
u
x

4 2
2 5
M 2
4 4 u
x
ID/EX.RegisterRt Forwarding
unit

Ciclo 5
Clock 5
after<1> add $9, $4, $2 or $4, $4, $2 and $4, . . . bubble
Hazard ID/EX.MemRead
detection
4
unit ID/EX
2
10 10
WB

IF/IDWrite
EX/MEM

Stalling
M 10
Control u M WB
x MEM/WB
0
0
IF/ID EX M WB

PCWrite
4 $4 $4
M

Instruction
2 u
x
Registers
Instruction Data
PC ALU
memory memory M
$2 $2
u
M x
u
x

4 4

Exemplo:
2 2

M 4
9 4 u
x
ID/EX.RegisterRt Forwarding
unit

Ciclo 6
Clock 6

after<2> after<1> add $9, $4, $2 or $4, . . . and $4, . . .


Hazard
detection ID/EX.MemRead

lw $2, 20($1) unit ID/EX


10 10

IF/IDWrite
WB
and $4, $2, $5 M
EX/MEM
10
Control u M WB
or $4, $4, $2 0
x MEM/WB
1
IF/ID EX M WB
add $9, $4, $2
$4
PCWrite

M
Instruction

u
x
Registers
Instruction 4 Data
PC ALU
memory memory M
$2
u
M x
u
x

4
2

M 4 4
9 u
x
ID/EX.RegisterRt Forwarding
unit

Ciclo 7
Clock 7
Otimizando o pipeline para diminuir o
delay do Branch
Mover a deciso do branch do estgio MEM para o ID
preciso mover o somador para o ID para calcular o endereo alvo
preciso ter um comparador para comparar os valores para tomar a deciso, j que a
ALU no vai ser utilizada para este fim, mais.
Desta maneira, possvel adicionar recursos sem efetivamente
aumentar o caminho crtico
O controle de forward e stall precisam ser mudados para prever a
instruo de branch no incio.

Na predio errada, todos os bits de controle da instruo so


transformados para zero
As instrues seguintes ao branch se tornam NOPs na prtica

Como nosso pipeline modificado, apenas o IF precisa sofrer com o


flushing
Caminho de dados otimizado para branch
IF.Flush

Hazard
detection
unit
M ID/EX
u
x
WB
EX/MEM
M
Control u M WB
x MEM/WB
0

IF/ID EX M WB

4 Shift
left 2
M
u
x
Registers =
Instruction Data
PC ALU
memory memory M
u
M x
u
x

Sign
extend

M
u
x
Forwarding
unit

Controle IF.Flush zera a instruo


no registrador de pipeline IF/ID
and $12, $2, $5 beq $1, $3, 7 sub $10, $4, $8 before<1> before<2>

IF.Flush

Pipelined
Hazard
detection
unit
72 ID/EX
M
u
48 x WB
EX/MEM
M
Control u M WB
MEM/WB

Branch
28 x
0
IF/ID EX M WB
48 44 72

4
$1
Shift M $4
left 2 u
x
=
Registers
Instruction Data
PC ALU
memory memory M
72 44 $3
u
M $8 x
7 u
x

Exemplo: Sign
extend

10

Forwarding
unit

Ciclo 3
36 sub $10, $4, $8 Clock 3

lw $4, 50($7) bubble (nop) beq $1, $3, 7 sub $10, . . .


40 beq $1, $3, 7 before<1>

IF.Flush
44 and $12 $2, $5 Hazard
detection

48 or $13 $2, $6 M
u
unit
ID/EX

76 x WB

52 add $14, $4, $2 Control


M
u M
EX/MEM

WB
MEM/WB
x

56 slt $15, $6, $7 76


IF/ID
72
0
EX M WB

Shift M $1
left 2 u

72 lw $4, 50($7) PC
Instruction
Registers
= x

ALU
Data
memory memory M
76 72
u
M $3 x
u
x

Sign
extend

10

Forwarding
unit

Ciclo 4 Clock 4
Organizao de Computadores B 62

Sumrio
Dependncias Estruturais
Dependncias de Controle
Dependncias de Dados
Exerccios
Exerccios
Dados os seguintes tempos e assuma M0 single cycle:
IM=4ns, Reg=1ns, ALU=3ns, DM=3ns, RegW=1ns
Qual o tempo para executar 1B de instrues?
Qual a MELHOR partio para o pipeline de 3 estgios, assumindo blocos
indivisveis? (M1) Compare o desempenho com M0
Qual a MELHOR partio para o pipeline de 5 estgios, assumindo blocos
indivisveis? (M2) Compare o desempenho com M0
Qual a MELHOR partio, assumindo blocos divisveis? (M3)
Qual o desempenho de M0..3 se a taxa de branches de 30%, sem preditor?
Qual o desempenho de M0..3 se a taxa de branches de 30%, com preditor que
acerta 90%?
t0 t1 t2 t3 t4
ALU

IM Reg DM RegW
64

Execcios
O pipe de 5 estgios (MIPS) disponibiliza o endereo
de salto no quarto estgio. A poltica usada
esvaziar o pipe. Qual a penalidade paga, se 30% das
instrues forem branches? Assuma todos errados.
Qual o CPI?
Melhorou-se o processador com uma poltica de
predio de saltos com 85% de acertos. Qual a
melhoria em desempenho? Qual CPI se tem?
Repita o problema para um pipe de 7 estgios, onde
a deciso sobre saltos acontece no 5o estgio.

You might also like