Professional Documents
Culture Documents
de Computadores
Prof. Alexandro Baldassin
1o semestre/2017
Personagem da Semana
Alguns prmios
1996 IEEE/ACM Eckert-Mauchly Award "for
important contribu.ons to instruc.on level
parallelism and superscalar processor
design"
2005 IEEE Computer Society Charles
Babbage Award "for fundamental
contribu.ons to high performance
Yale Pa; processor design
Arquitetura de Computadores 2
Conitos de controle
Qual deve ser o PC buscado no prximo ciclo?
O endereo da prxima instruo
Todas as instrues possuem uma dependncia de controle das
anteriores (por qu?)
s er f eit o s e
Poderia
RegWriteD RegWriteE RegWriteM RegWriteW
Control MemtoRegE MemtoRegM MemtoRegW
MemtoRegD
Unit
MemWriteD MemWriteE MemWriteM
ALUControlD2:0 ALUControlE2:0
31:26
Op ALUSrcD ALUSrcE
5:0
Funct RegDstD RegDstE
PCSrcM
BranchD BranchE BranchM
ALU
1 10 ALUOutM ReadDataW
EN
A RD
Instruction 20:16
A2 RD2 00 0 SrcBE Data
Memory 01
A3 10 1 Memory
Register WriteDataE WriteDataM
WD3 WD
File 1
25:21
RsD RsE ALUOutW
0
20:16
RtD RtE
0 WriteRegE4:0 WriteRegM4:0 WriteRegW 4:0
15:11
RdD RdE
1
SignImmD SignImmE
Sign
+
15:0
Extend
4
<<2
+
PCPlus4F PCPlus4D PCPlus4E
CLR
EN
PCBranchM
ResultW
MemtoRegE
RegWriteW
ForwardBE
ForwardAE
RegWriteM
FlushE
StallD
StallF
Hazard Unit
Arquitetura de Computadores 4
Tipos de desvios
Arquitetura de Computadores 5
Como resolver conitos de controle
crpco manter o pipeline cheio com a sequncia
correta de instrues
Instrues de desvios no pipeline adicionam incerteza com
relao prxima instruo a ser buscada
Solues
Parar o pipeline at sabermos o endereo da prxima instruo
Usar salto tardio (branch delay slot)
Adivinhar prximo endereo (predio de desvios)
Fazer outra coisa (ne-grained mul5threading)
Eliminar instrues de desvio (execuo com predicados)
Buscar instrues de ambos caminhos possveis
Arquitetura de Computadores 6
Parar at obter prximo endereo
Assumindo que desvio condicional seja resolvido no 3o estgio Salto no tomado!
t0 t1 t2 t3 t4 t5 t6 t7 t8 t9 t10 t11
16 add $t3, $t0, $0 IF ID EX MEM WB
20 beq $t1, $t2, 40 -- IF ID EX MEM WB
24 and $t0, $s0, $s1 -- -- IF ID EX MEM
28 or $t1, $s4, $s0 -- IF ID
2C sub $t2, $s0, $s5 --
30 ...
...
64 slt $t3, $s2, $s3
endereos de memria
Arquitetura de Computadores 7
Soluo usando parada
Qual o desempenho da abordagem do exemplo
anterior?
Independente da instruo, o pipeline ca parado por pelo
menos um ciclo
Se a instruo for de desvio, necessrio parar o pipeline por
dois ciclos
Resoluo feita no terceiro estgio
Como melhorar?
Arquitetura de Computadores 8
Como resolver conitos de controle
crpco manter o pipeline cheio com a sequncia correta de
instrues
Instrues de desvios no pipeline adicionam incerteza com relao
prxima instruo a ser buscada
Solues
Parar o pipeline at sabermos o endereo da prxima instruo
Usar salto tardio (branch delay slot)
Adivinhar prximo endereo (predio de desvios)
Fazer outra coisa (ne-grained mul5threading)
Eliminar instrues de desvio (execuo com predicados)
Buscar instrues de ambos caminhos possveis
Arquitetura de Computadores 9
Delayed branching
Mudar a semnpca da instruo de desvio
Saltar aps N ciclos (ou instrues)
Arquitetura de Computadores 10
Exemplo com saltos tardios
A sequncia de cdigo ao lado foi gerada para or $8, $9, $10
uma mquina que trata conitos de controle add $1, $2, $3
em hardware. Como voc mudaria essa sub $4, $5, $6
sequncia para que ela possa ser executada beq $1, $4, Exit
em uma mquina com saltos tardios de 1 ciclo xor $8, $1, $11
...
(a semnpca do cdigo no pode ser
Exit:
alterada)?
Desvantagens
No fcil preencher os slots de atraso
Sempre possvel preencher com NOPS, mas desempenho no aumentar
Nmero de slots pode ser grande dependendo do nmero de estgios do
pipeline
Expe detalhe da microarquitetura para o ISA
Semnpca da instruo foi redenida
E se a microarquitetura mudar na prxima implementao?
Arquitetura de Computadores 12
Exerccio de xao
Assuma MIPS com CPI = 1, desvios tardios de 1 ciclo,
pipeline de 5 estgios, com adiantamentos e paradas
em conitos de leitura (lw)
Solues
Parar o pipeline at sabermos o endereo da prxima instruo
Usar salto tardio (branch delay slot)
Adivinhar prximo endereo (predio de desvios)
Fazer outra coisa (ne-grained mul5threading)
Eliminar instrues de desvio (execuo com predicados)
Buscar instrues de ambos caminhos possveis
Arquitetura de Computadores 14
Predio de desvios
O que podemos melhorar em relao primeira ideia
de parar o pipeline at o endereo do PC ser conhecido?
Arquitetura de Computadores 15
Predio: salto no tomado no MIPS
Lembre-se que na lpma verso do MIPS que projetamos o salto decidido no 4o estgio.
Arquitetura de Computadores 16
Anlise de desempenho (caso anterior)
Custo da predio (desvio no tomado)
Correta: nenhum custo
Incorreta: 3 ciclos
Assuma
Nenhum conito por dados (todas outras instrues tem CPI=1)
20% de todas as instrues so de desvio
Em 70% das instrues de desvio o salto tomado
Qual o CPI do programa?
CPI = [1 + 3*(0.7*0.2)] = 1 + 0.42 = 1.42
Comparador rpido
Mover clculo do
endereo de salto para
ID (estava em EX)
Se desvio tomado,
bolha inserida
Arquitetura de Computadores 19
Ganho com reduo da penalidade
Apenas um ciclo perdido em caso de falha na predio
1 2 3 4 5 6 7 8 9
Time (cycles)
$t1
lw DM
20 beq $t1, $t2, 40 IM RF $t2 - RF
$s0 Flush
and DM
24 and $t0, $s0, $s1 IM RF $s1 & RF this
instruction
30 ...
...
$s2
slt DM $t3
64 slt $t3, $s2, $s3 IM RF $s3 slt RF
Arquitetura de Computadores 21
Predic5on is dicult, especially about the future.
Neils Bohr (1885-1962)
PREDIO DE SALTOS
Predio estpca: tomado, no tomado, BTFN, Perlamento
Predio dinmica: bimodal, global, local e hbrida
P&H: 4.8
H&H: 7.8.2
Ver Combining Branch Predictors no Moodle
Arquitetura de Computadores 22
Predio de saltos: avanado
Reduzir a penalidade pela falha na predio se torna
dicil
Adiantar deciso pode desbalancear o tempo dos estgios e
introduzir novos conitos por dados
Arquitetura de Computadores 23
Importncia da predio
Instrues de controle de uxo so frequentes
15% a 25%
Arquitetura de Computadores 24
Requerimentos
Predio de saltos em geral requer que 3 coisas sejam
resolvidas no primeiro estgio (IF)
A instruo buscada de desvio?
Qual a direo do salto (tomado ou no tomado)?
Qual o endereo alvo do salto (se tomado)?
Arquitetura de Computadores 25
Estgio de busca com predio
Memria instruo
PC de
Instruo
prximo PC
PC + 4
+
4
Arquitetura de Computadores 26
Estgio de busca com predio
Memria instruo
PC de
Instruo
prximo PC
PC + 4
+
4
endereo alvo
Preditor tomado ou no 1 0
tomado
Arquitetura de Computadores 27
Tipos de predio
Predio estpca
Predio de salto determinada uma vez e manpda constante
Alteraes mais modestas no hardware (ou nenhuma)
Pode requerer suporte do ISA (e compilador)
Acerto de predio relapvamente baixo: 60-70%
Predio dinmica
Determinada em tempo de execuo
Requer hardware mais complexo
Acerto de predio alto: mais que 80%
Arquitetura de Computadores 28
Predies estpcas (1)
Sempre no tomado (visto anteriormente)
Fcil de implementar
No h necessidade de BTB e preditor em hardware
Baixa taxa de sucesso (~30-40%)
Sempre tomado
BTB geralmente necessrio
Taxa de sucesso geralmente mais alta (60-70%) Por qu?
Arquitetura de Computadores 29
Predies estpcas (2)
Guiadas por perlamento (prole based)
Compilador determina, aps algumas rodadas de execuo, a
direo de cada salto
Direo codicada na instruo de salto (hint bit)
Vantagens
A predio especca para cada salto
Desvantagens
Acurcia depende dos parmetros de entrada usados no
perlamento (que podem mudar de execuo para execuo)
Suporte do ISA
Arquitetura de Computadores 30
Predies estpcas (3)
Baseada na anlise do programa
Ideia: usar heurspcas baseadas na anlise do programa para
determinar direo do salto
Exemplos de heurspcas
Comparao de ponteiros: predizer que no so iguais
Igualdade de ponteiros rara
Ponteiros geralmente no so nulos
Valores negapvos so usados como condio de erro em muitos
programas
Ver Branch Predic5on For Free. Thomas Ball & Jim Larus. PLDI
Predizer que instrues do ppo BLEZ no so tomadas
1993. (Leituras - Moodle)
Embora essa abordagem no necessite de perlamento,
o sucesso depende do quo efepvas so as heurspcas
Arquitetura de Computadores 31
Predies estpcas (4)
Baseada em dicas do programador
Programador anota o cdigo fornecendo dicas sobre a direo
do salto
Exemplo: if (likely (var))!
if (unlikely (var))!
Vantagens
Programador geralmente conhece a probabilidade dos saltos
No h necessidade de perlamento
Desvantagens
Requer suporte da linguagem/compilador e do ISA
Sobrecarrega o programador?
Arquitetura de Computadores 32
Predio dinmica
Considere a seguinte sequncia para um dado salto:
T tomado
T T T T T N N N N N N no tomado
Arquitetura de Computadores 33
Predio dinmica: 1a abordagem (1)
Como melhorar a acurcia para a sequncia a seguir
usando predio dinmica?
T T T T T T T T T T N N N N N N N N N N
T T T T T T T T T T N N N N N N N N N N
Assumindo que
direo inicial seja
no tomada
Acurcia de 90%!
Arquitetura de Computadores 34
Predio dinmica: 1a abordagem (2)
Implementao
PHT
K bits
PC
2k entradas
de 1 bit
Arquitetura de Computadores 36
Predio dinmica: 2a abordagem
Como melhorar a abordagem anterior?
O problema apontado pelo lpmo exemplo mostra que o preditor
muda de T->N (ou N->T) muito rapidamente
NT no tomado NN
no tomado
Arquitetura de Computadores 37
Preditor bimodal
A abordagem anterior conhecida na literatura como
bimodal
Arquitetura de Computadores 38
Preditor bimodal
Qual a acurcia do preditor bimodal para o padro
abaixo?
T N T N T N T N T N T N T N T N T N T N 50%
Arquitetura de Computadores 39
Melhorando ainda mais a predio
O preditor bimodal ainda no sucientemente
poderoso para processadores modernos
Arquitetura de Computadores 41
Preditor global operao
Armazenar a correlao em um registrador global (k bits)
lpmos k saltos so correlacionados
Um registrador de deslocamento global usado (GHR Global
History Register)
Valor 1 inserido direita se o salto tomado; 0 caso contrrio
Arquitetura de Computadores 42
Preditor global implementao
Primeiro nvel
Direo dos lpmos k saltos
Segundo nvel
Direo que o salto tomou a lpma vez que a mesma histria
foi vista
PHT
K bits
GHR
2k entradas
de 2 bits
Arquitetura de Computadores 43
Funcionamento da correlao global
GHR com 4 bits GHR 0 0 0 0
PHT
i= 0
NT 0
j= 0 1
NT
NT 2
for (i=0; i<100; i++) {!
NT 3
!! 4
NT
!for (j=0; j<3; j++) {! NT 5
! !! NT 6
!}! NT 7
!! NT 8
}! NT 9
NT 10
NT 11
NT 12
NT 13
NT 14
NT 15
Arquitetura de Computadores 44
Funcionamento da correlao global
GHR com 4 bits GHR 0 0 0 0
PHT
i= 0
NT 0
j= 1 1
NT
NT 2
for (i=0; i<100; i++) {!
NT 3
!! 4
NT
!for (j=0; j<3; j++) {! NT 5
! !! NT 6
!}! NT 7
!! NT 8
}! NT 9
NT 10
NT 11
NT 12
NT 13
NT 14
NT 15
Arquitetura de Computadores 45
Funcionamento da correlao global
GHR com 4 bits GHR 0 0 0 1
PHT
i= 0
TT 0
j= 1 1
NT
NT 2
for (i=0; i<100; i++) {!
NT 3
!! 4
NT
!for (j=0; j<3; j++) {! NT 5
! !! NT 6
!}! NT 7
!! NT 8
}! NT 9
NT 10
NT 11
NT 12
NT 13
NT 14
NT 15
Arquitetura de Computadores 46
Funcionamento da correlao global
GHR com 4 bits GHR 0 0 0 1
PHT
i= 0
TT 0
j= 2
NT 1
NT 2
for (i=0; i<100; i++) {!
NT 3
!! 4
NT
!for (j=0; j<3; j++) {! NT 5
! !! NT 6
!}! NT 7
!! NT 8
}! NT 9
NT 10
NT 11
NT 12
NT 13
NT 14
NT 15
Arquitetura de Computadores 47
Funcionamento da correlao global
GHR com 4 bits GHR 0 0 1 1
PHT
i= 0
TT 0
j= 2 1
TT
NT 2
for (i=0; i<100; i++) {!
NT 3
!! 4
NT
!for (j=0; j<3; j++) {! NT 5
! !! NT 6
!}! NT 7
!! NT 8
}! NT 9
NT 10
NT 11
NT 12
NT 13
NT 14
NT 15
Arquitetura de Computadores 48
Funcionamento da correlao global
GHR com 4 bits GHR 0 0 1 1
PHT
i= 0
TT 0
j= 3 1
TT
NT 2
for (i=0; i<100; i++) {!
NT 3
!! 4
NT
!for (j=0; j<3; j++) {! NT 5
! !! NT 6
!}! NT 7
!! NT 8
}! NT 9
NT 10
NT 11
NT 12
NT 13
NT 14
NT 15
Arquitetura de Computadores 49
Funcionamento da correlao global
GHR com 4 bits GHR 0 1 1 0
PHT
i= 0
TT 0
j= 3 1
TT
NT 2
for (i=0; i<100; i++) {!
NN 3
!! 4
NT
!for (j=0; j<3; j++) {! NT 5
! !! NT 6
!}! NT 7
!! NT 8
}! NT 9
NT 10
NT 11
NT 12
NT 13
NT 14
NT 15
Arquitetura de Computadores 50
Funcionamento da correlao global
GHR com 4 bits GHR 0 1 1 0
PHT
i= 1
TT 0
j= 3 1
TT
NT 2
for (i=0; i<100; i++) {!
NN 3
!! 4
NT
!for (j=0; j<3; j++) {! NT 5
! !! NT 6
!}! NT 7
!! NT 8
}! NT 9
NT 10
NT 11
NT 12
NT 13
NT 14
NT 15
Arquitetura de Computadores 51
Funcionamento da correlao global
GHR com 4 bits GHR 1 1 0 1
PHT
i= 1
TT 0
j= 3 1
TT
NT 2
for (i=0; i<100; i++) {!
NN 3
!! 4
NT
!for (j=0; j<3; j++) {! NT 5
! !! TT 6
!}! NT 7
!! NT 8
}! NT 9
NT 10
NT 11
NT 12
NT 13
NT 14
NT 15
Arquitetura de Computadores 52
Funcionamento da correlao global
GHR com 4 bits GHR 1 1 0 1
PHT
i= 1
TT 0
j= 1 1
TT
NT 2
for (i=0; i<100; i++) {!
NN 3
!! 4
NT
!for (j=0; j<3; j++) {! NT 5
! !! TT 6
!}! NT 7
!! NT 8
}! NT 9
NT 10
NT 11
NT 12
NT 13
NT 14
NT 15
Arquitetura de Computadores 53
Funcionamento da correlao global
GHR com 4 bits GHR 1 0 1 1
PHT
i= 1
TT 0
j= 1 1
TT
NT 2
for (i=0; i<100; i++) {!
NN 3
!! 4
NT
!for (j=0; j<3; j++) {! NT 5
! !! TT 6
!}! NT 7
!! NT 8
}! NT 9
NT 10
NT 11
NT 12
TT 13
NT 14
NT 15
Arquitetura de Computadores 54
Funcionamento da correlao global
GHR com 4 bits GHR 1 0 1 1
PHT
i= 1
TT 0
j= 2 1
TT
NT 2
for (i=0; i<100; i++) {!
NN 3
!! 4
NT
!for (j=0; j<3; j++) {! NT 5
! !! TT 6
!}! NT 7
!! NT 8
}! NT 9
NT 10
NT 11
NT 12
TT 13
NT 14
NT 15
Arquitetura de Computadores 55
Funcionamento da correlao global
GHR com 4 bits GHR 0 1 1 1
PHT
i= 1
TT 0
j= 2 1
TT
NT 2
for (i=0; i<100; i++) {!
NN 3
!! 4
NT
!for (j=0; j<3; j++) {! NT 5
! !! TT 6
!}! NT 7
!! NT 8
}! NT 9
NT 10
TT 11
NT 12
TT 13
NT 14
NT 15
Arquitetura de Computadores 56
Funcionamento da correlao global
GHR com 4 bits GHR 0 1 1 1
PHT
i= 1
TT 0
j= 3 1
TT
NT 2
for (i=0; i<100; i++) {!
NN 3
!! 4
NT
!for (j=0; j<3; j++) {! NT 5
! !! TT 6
!}! NT 7
!! NT 8
}! NT 9
NT 10
TT 11
NT 12
TT 13
NT 14
NT 15
Arquitetura de Computadores 57
Funcionamento da correlao global
GHR com 4 bits GHR 1 1 1 0
PHT
i= 1
TT 0
j= 3 1
TT
NT 2
for (i=0; i<100; i++) {!
NN 3
!! 4
NT
!for (j=0; j<3; j++) {! NT 5
! !! TT 6
!}! NN 7
!! NT 8
}! NT 9
NT 10
TT 11
NT 12
TT 13
NT 14
NT 15
Arquitetura de Computadores 58
Funcionamento da correlao global
GHR com 4 bits GHR 1 1 1 0
PHT
i= 2
TT 0
j= 3 1
TT
NT 2
for (i=0; i<100; i++) {!
NN 3
!! 4
NT
!for (j=0; j<3; j++) {! NT 5
! !! TT 6
!}! NN 7
!! NT 8
}! NT 9
NT 10
TT 11
NT 12
TT 13
NT 14
NT 15
Arquitetura de Computadores 59
Funcionamento da correlao global
GHR com 4 bits GHR 1 1 0 1
PHT
i= 2
TT 0
j= 3 1
TT
NT 2
for (i=0; i<100; i++) {!
NN 3
!! 4
NT
!for (j=0; j<3; j++) {! NT 5
! !! TT 6
!}! NN 7
!! NT 8
}! NT 9
NT 10
TT 11
NT 12
TT 13
TT 14
NT 15
Arquitetura de Computadores 60
Funcionamento da correlao global
GHR com 4 bits GHR 1 1 0 1
PHT
i= 2
TT 0
j= 1 1
TT
NT 2
for (i=0; i<100; i++) {!
NN 3
!! 4
NT
!for (j=0; j<3; j++) {! NT 5
! !! TT 6
!}! NN 7
!! NT 8
}! NT 9
NT 10
TT 11
NT 12
TT 13
TT 14
NT 15
Arquitetura de Computadores 61
Funcionamento da correlao global
GHR com 4 bits GHR 1 0 1 1
PHT
i= 2
TT 0
j= 2 1
TT
NT 2
for (i=0; i<100; i++) {!
NN 3
!! 4
NT
!for (j=0; j<3; j++) {! NT 5
! !! TT 6
!}! NN 7
!! NT 8
}! NT 9
NT 10
TT 11
NT 12
TT 13
TT 14
NT 15
Arquitetura de Computadores 62
Funcionamento da correlao global
GHR com 4 bits GHR 0 1 1 1
PHT
i= 2
TT 0
j= 3 1
TT
NT 2
for (i=0; i<100; i++) {!
NN 3
!! 4
NT
!for (j=0; j<3; j++) {! NT 5
! !! TT 6
!}! NN 7
!! NT 8
}! NT 9
NT 10
TT 11
NT 12
TT 13
TT 14
NT 15
Arquitetura de Computadores 63
Funcionamento da correlao global
GHR com 4 bits GHR 1 1 1 0
PHT
i= 3
TT 0
j= 3 1
TT
NT 2
for (i=0; i<100; i++) {!
NN 3
!! 4
NT
!for (j=0; j<3; j++) {! NT 5
! !! TT 6
!}! NN 7
!! NT 8
}! NT 9
NT 10
TT 11
NT 12
TT 13
TT 14
NT 15
Arquitetura de Computadores 64
Preditor Gshare
A preditor global mostrado perdeu um importante
componente presente no preditor bimodal
A posio do salto sendo predito dentro do programa
Arquitetura de Computadores 65
Preditor Gshare Implementao
PHT
PC
2k entradas de 2 bits
Hash
(XOR)
GHR
Arquitetura de Computadores 66
Outra abordagem para predio
Repare que a predio usando o preditor global pode falhar
de 0 a 5 vezes, dependendo do nmero de saltos e seus
resultados dentro do lao interno
for (i=0; i<100; i++) {!
!!
Dependendo da quanpdade
!for (j=0; j<5; j++) {!
! !! de saltos, um nico GHR
!}! pode no capturar toda a
!! histria de forma precisa
}!
PC
Arquitetura de Computadores 68
Preditores hbridos
Note que diferentes preditores podem ser bons para
diferentes ppos de saltos e programas
Considere global versus local
1 0
nal predicpon
Arquitetura de Computadores 70
Acurcia de alguns preditores
Arquitetura de Computadores 71