Professional Documents
Culture Documents
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
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
if R2 = 0 then
ADD R1, R2, R3
Organizao de Computadores B 11
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
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
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
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!
Predio Esttica
Supor sempre mesma direo para o desvio
desvio sempre ocorre
desvio nunca ocorre
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
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
N
T TT TN
T
T N
T
N NN NT
N
21
buffer para
instrues seqenciais
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
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
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
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
2 4 6 8 10 12 14
Program Time
execution
order
(in instructions)
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)
Forwarding Data
memory M
u
x
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
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
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
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
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
Neste caso,
or $8, $2, $6 IM Reg DM Reg
forwarding no ir
resolver
add $9, $4, $2 IM Reg DM Reg
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
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
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.
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
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
IF.Flush
44 and $12 $2, $5 Hazard
detection
48 or $13 $2, $6 M
u
unit
ID/EX
76 x WB
WB
MEM/WB
x
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.