You are on page 1of 71

Arquitetura

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

Uma das contribuies veremos hoje!


Leitura no Moodle: Two-level adap.ve
training branch predic.on, Yeh and PaX,
MICRO91

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?)

Se a instruo buscada no for de controle de uxo


O prximo PC o endereo da prxima instruo na sequncia
Fcil de determinar se o tamanho da instruo buscada
conhecido

Se a instruo buscada for de controle de uxo


Como determinar o endereo da prxima instruo a ser
buscada?
Como ao menos saber se a instruo buscada de desvio?
Arquitetura de Computadores 3
Resoluo de desvios condicionais
a ra o es t gio MEM.
o p es s imis t a ao deixar p
st send io EX.
Este projeto e m problem a s n o es t g CLK CLK CLK

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

CLK CLK CLK


CLK
25:21
WE3 SrcAE ZeroM WE
0 PC' PCF InstrD A1 RD1 00
A RD 01

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

Nmero de Quando o endereo da


Direo no
Tipo prximos endereos prxima instruo
momento da busca
possveis? resolvido?
Execuo (depende de
Condicional Desconhecido 2
registrador)
Incondicional Sempre tomado 1 Decodicao (PC+oset)
Chamada
Sempre tomado 1 Decodicao (PC+oset)
procedimento
Retorno de Execuo (depende de
Sempre tomado Muitos
procedimento registrador)
Execuo (depende de
Indireto Sempre tomado Muitos
registrador)

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

Nesse momento ainda no Instruo no de Instruo de desvio,


possvel saber o prximo desvio, ento busca ainda no sabemos
PC pipeline parado PC+4 prximo PC

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

Essa soluo no mantm o pipeline cheio nunca!

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)

As N instrues aps o desvio (delay slots) so sempre


executadas, independentemente da direo do desvio

Soxware (compilador) responsvel por preencher os


slots de atraso com instrues teis

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)?

add $1, $2, $3


delay slot sub $4, $5, $6
beq $1, $4, Exit
or $8, $9, $10
xor $8, $1, $11
...
Exit:
Arquitetura de Computadores 11
Soluo usando desvios tardios
Vantagens
Potencialmente mantm o pipeline cheio com instrues teis
Nenhum mecanismo em hardware necessrio para lidar com
conitos de controle

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)

Aps o seguinte lao ter sido executado 1000 vezes,


quantos ciclos de relgio por iterao so gastos?
loop:
lw $t0, 0($s1)
addu $t0, $t0, $s2
sw $t0, 0($s1)
addiu $s1, $s1, -4
bne $s1, $zero, loop
nop
Arquitetura de Computadores 13
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 14
Predio de desvios
O que podemos melhorar em relao primeira ideia
de parar o pipeline at o endereo do PC ser conhecido?

Assumir que o desvio no tomado


Se a instruo no for de desvio ou o desvio no for tomado, o
pipeline conpnua cheio e sem paradas

E se o desvio for tomado?


H uma penalidade pela falha na predio (branch
mispredic5on penalty)
Descartar todas as instrues no pipeline anteriores ao desvio
e recomear a executar a parpr do endereo tomado (ush)

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

Penalidade da falha Probabilidade de falha na predio


Arquitetura de Computadores 17
Como melhorar o CPI?
A equao anterior mostra duas formas de melhorar o
CPI de instrues de desvios
Reduzir a penalidade pela falha na predio
Reduzir a probabilidade de falha na predio

Como reduzir a penalidade pela falha na predio?


Trazer a resoluo do desvio para o estgio de decodicao
Somente 1 ciclo de penalidade
Boa ideia?
Modicao precisa manter balanceamento do pipeline
Note que instrues de desvio no usaro estgios EX, MEM e WB
Novos conitos por dados introduzidos?
Arquitetura de Computadores 18
Reduzindo penalidade
Modicaes necessrias

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

28 or $t1, $s4, $s0

2C sub $t2, $s0, $s5

30 ...
...
$s2
slt DM $t3
64 slt $t3, $s2, $s3 IM RF $s3 slt RF

Qual o CPI usando o exemplo anterior (70% do saltos so tomados)?


CPI = [1 + 1*(0.7*0.2)] = 1 + 0.14 = 1.14
Arquitetura de Computadores 20
Problemas com a opmizao
A alterao anterior introduz novos conitos por dados

Alguns podem ser resolvidos com novo hardware de


adiantamento do estgio de MEM para ID
add $8, $7, $6
add $5, $4, $3
beq $8, $9, exit

No entanto, alguns conitos vo necessitar de paradas


add $8, $7, $6 lw $8, 12($4)
beq $8, $9, exit beq $8, $9, exit
Parada de 1 Parada de 2
ciclo ciclos

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

Alternapva: reduzir probabilidade de falha na predio


Usar tcnicas para predio de saltos
Se predio falhar, desconsiderar instrues buscadas e
reiniciar

Vimos um ppo de predio: salto no tomado


Por que no predizer salto tomado? Muda alguma coisa?

Arquitetura de Computadores 23
Importncia da predio
Instrues de controle de uxo so frequentes
15% a 25%

Um preditor ruim permite ciclos de processamento com


instrues que no sero efepvadas

Problema ainda mais grave em processadores


superescalares
Largura 5 com penalidade de 20 ciclos e 20% de saltos
99% de preciso: 20% de ciclos extras gastos
98% de preciso: 40% de ciclos extras gastos
95% de preciso: 100% de ciclos extras gastos!

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)?

Note que o endereo alvo do salto (condicional) no


muda
Ideia: quando encontramos o endereo pela primeira vez, o
armazenamos em uma estrutura (hardware) indexada pelo PC
Estrutura chamada de Branch Target Buer (BTB) ou Branch
Target Cache (BTC)

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

BTB BTB vlida

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?

Backard taken, forward not taken (BTFN)


Laos geralmente saltam para endereos anteriores

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

No importa quo bom o preditor estpco, ele sempre vai


ter uma taxa de sucesso mxima de 50%

Todas as abordagens anteriores falham ao no prover


adaptao do comportamento dos saltos em tempo de
execuo

Precisamos de uma abordagem dinmica


Predio baseada no comportamento dinmico da aplicao

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

Associar um bit a cada salto, armazendo a direo


tomada na lpma vez que foi executado

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

PHT PaXern History Table

Parte do PC usado para indexar a PHT, que contm a


predio do respecpvo salto
PHT pode ser armazenada junto ao BTB

PHT atualizada com a nova predio se salto falhar


Arquitetura de Computadores 35
Problemas com a 1a abordagem
Qual a acurcia do lpmo salto do lao interno?
for (i=0; i<m; i++) {!
!!
!for (j=0; j<n; j++) {!
! !! Qual a taxa de sucesso?
!}!
!! (N-2)/N
}!

Saltos da primeira e lpma iterao falham


Para N pequeno, a acurcia ser baixa!
Considere: T N T N T N T N T N T N T N T N T N T N
Acurcia de 0%!!!

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

Soluo: adicionar um certo atraso, de forma que a


mudana de T para N (ou vice-versa) no seja imediata
Usar 2 bits na PHT para as predies (ao invs de apenas 1)
Teremos dois estados para T e dois para N
tomado TT fortemente tomado
tomado
TN fracamente tomado
TT no tomado TN
NN fortemente no tomado
no tomado
NT fracamente no tomado
tomado
tomado

NT no tomado NN
no tomado

Arquitetura de Computadores 37
Preditor bimodal
A abordagem anterior conhecida na literatura como
bimodal

Qual a melhora agora?


for (i=0; i<m; i++) {!
!!
!for (j=0; j<n; j++) {!
! !! Qual a taxa de sucesso?
!}!
!!
(N-1)/N
}!
1a passada 2a passada 3a passada
T T T T T T T T T T N T T T T T T T T T T N T T T T T T T T T T N

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%

Em geral o preditor bimodal tem uma acurcia melhor


do que o de 1 bit (aproximadamente 85-90%)
No entanto, o custo do hardware ligeiramente maior

Usado por muitos processadores do incio dos anos 90


Sun SPARC 64, MIPS R10000, IBM PowerPC 620 e Intel
Penpum

Arquitetura de Computadores 39
Melhorando ainda mais a predio
O preditor bimodal ainda no sucientemente
poderoso para processadores modernos

Como melhorar ainda mais?


Usar 3 bits ao invs de 2?

Quais os pontos fracos do bimodal?


Leva em considerao apenas histria recente de um salto

Considere uma abordagem global que consiga


correlacionar os saltos
Arquitetura de Computadores 40
Correlao global de saltos
O resultado de um determinado salto pode estar
correlacionado com outros em seu caminho de
execuo
Exemplo 2 (eqnto; SPEC92)
Exemplo 1 if (aa == 2) /* b1 */!
aa=0;!
if (cond1) /* b1 */!
if (bb == 2) /* b2 */!
!
bb=0;!
if (cond1 && cond2) /* b2 */!
if (aa != bb) { /* b3 */!
!
!
}!

Se b1 no for tomado, com certeza b2 Se b1 e b2 foram tomados, b3 com


tambm no ser certeza no ser

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

Para um determinado salto, fazer uma predio com base na


correlao dos k lpmos saltos
GHR usado para indexar a PHT
PHT contm um preditor bimodal

Note que dois nveis de histria so usados (GHR + PHT)

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

Podemos melhorar a acurcia ao reintroduzir o PC


Mais informao do contexto adicionada
Melhor uplizao da PHT (reduo de colises)

Operao XOR aplicada entre parte do PC e o GHR

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
}!

Uma outra ideia armazenar a histria de cada salto


individualmente
Manter um registrador de histria por salto
Mtodo chamado de preditor local
Arquitetura de Computadores 67
Preditor local implementao
Primeiro nvel
Selecionar registrador com a histria do salto usando o PC
Segundo nvel
Registrador local de histria na BHT (Branch History Table)
aponta para predio na PHT
BHT PHT

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

Alguns preditores tambm demoram mais para


aquecer
Seria interessante usar um com tempo de aquecimento mais
rpido enquanto o lento se aquece

As duas observaes anteriores deram origem aos


preditores hbridos ou tournament predictors
Arquitetura de Computadores 69
Exemplo: Alpha 21264
GHR
12 bits

PC BHT Local PHT Global PHT Choice predict

1024x10 bits 1024x3 bits 4096x2 bits


4096x2 bits

1 0

nal predicpon

Arquitetura de Computadores 70
Acurcia de alguns preditores

Arquitetura de Computadores 71