Вы находитесь на странице: 1из 68

Arquitetura

de Computadores
Prof. Alexandro Baldassin
1o semestre/2014

Cien@sta da semana Yale Pa;


Professor da Univ. do Texas (Aus@n)
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 processor design

Uma das contribuies veremos hoje!


Leitura no TelEduc: Two-level adap.ve training branch predic.on,
Yeh and Pa\, MICRO91
Arquitetura de Computadores

Na aula passada
Conitos de controle

Tipo

Nmero de
Quando o endereo da
Direo no
prximos endereos prxima instruo
momento da busca
possveis?
resolvido?

Condicional

Desconhecido

Execuo (depende de
registrador)

Incondicional

Sempre tomado

Decodicao (PC+oset)

Chamada
Sempre tomado
procedimento

Decodicao (PC+oset)

Retorno de
Sempre tomado
procedimento

Muitos

Execuo (depende de
registrador)

Indireto

Muitos

Execuo (depende de
registrador)

Sempre tomado

Arquitetura de Computadores

Como resolver conitos de controle


cr@co 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

Soluo usando parada


Qual o desempenho da abordagem (aula 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

Como resolver conitos de controle


cr@co 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

Delayed branching
Mudar a semn@ca 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
Souware (compilador) responsvel por preencher os
slots de atraso com instrues teis

Arquitetura de Computadores

Exemplo com saltos tardios


A sequncia de cdigo ao lado foi gerada para
uma mquina que trata conitos de controle
em hardware. Como voc mudaria essa
sequncia para que ela possa ser executada
em uma mquina com saltos tardios de 1 ciclo
(a semn@ca do cdigo no pode ser
alterada)?

delay slot

or $8, $9, $10


add $1, $2, $3
sub $4, $5, $6
beq $1, $4, Exit
xor $8, $1, $11
...
Exit:

add $1, $2, $3


sub $4, $5, $6
beq $1, $4, Exit
or $8, $9, $10
xor $8, $1, $11
...
Exit:

Arquitetura de Computadores

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


Semn@ca da instruo foi redenida
E se a microarquitetura mudar na prxima implementao?

Arquitetura de Computadores

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
addu
sw
addiu
bne
nop

$t0, 0($s1)
$t0, $t0, $s2
$t0, 0($s1)
$s1, $s1, -4
$s1, $zero, loop

Arquitetura de Computadores

10

Como resolver conitos de controle


cr@co 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

11

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 con@nua 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 par@r do endereo tomado (ush)
Arquitetura de Computadores

12

Predio: salto no tomado no MIPS


Lembre-se que na l@ma verso do MIPS que projetamos o salto decidido no 4o estgio.

Arquitetura de Computadores

13

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

14

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

15

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

16

Ganho com reduo da penalidade


Apenas um ciclo perdido em caso de falha na predio
1

9
Time (cycles)

20

beq $t1, $t2, 40

24

and $t0, $s0, $s1

28

or

2C

sub $t2, $s0, $s5

30

...

IM

lw

$t1
RF $t2

IM

and

DM

$s0
RF $s1

DM

Flush
this
instruction

RF

$t1, $s4, $s0

...
slt $t3, $s2, $s3

IM

slt

$s2
RF $s3

slt

64

&

RF

DM

$t3

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

17

Problemas com a o@mizao


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
beq $8, $9, exit

lw $8, 12($4)
beq $8, $9, exit
Parada de 2
ciclos

Parada de 1
ciclo

Arquitetura de Computadores

18

Predic5on is dicult, especially about the future.


Neils Bohr (1885-1962)

PREDIO DE SALTOS
Predio est@ca: 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 TelEduc (A@vidade 06)
Arquitetura de Computadores

19

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

Alterna@va: reduzir probabilidade de falha na predio


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

Vimos um @po de predio: salto no tomado


Por que no predizer salto tomado? Muda alguma coisa?
Arquitetura de Computadores

20

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 efe@vadas
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

21

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

22

Estgio de busca com predio


PC

Memria
de
Instruo

prximo PC
4

Arquitetura de Computadores

instruo

PC + 4

23

Estgio de busca com predio


PC

Memria
de
Instruo

instruo

prximo PC
4

PC + 4

endereo alvo

BTB

Preditor

BTB vlida

tomado ou no
tomado

Arquitetura de Computadores

1 0

24

Tipos de predio
Predio est@ca
Predio de salto determinada uma vez e man@da constante
Alteraes mais modestas no hardware (ou nenhuma)
Pode requerer suporte do ISA (e compilador)

Acerto de predio rela@vamente baixo: 60-70%

Predio dinmica
Determinada em tempo de execuo
Requer hardware mais complexo
Acerto de predio alto: mais que 80%

Arquitetura de Computadores

25

Predies est@cas (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

26

Predies est@cas (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

27

Predies est@cas (3)


Baseada na anlise do programa
Ideia: usar heurs@cas baseadas na anlise do programa para
determinar direo do salto
Exemplos de heurs@cas
Comparao de ponteiros: predizer que no so iguais
Igualdade de ponteiros rara
Ponteiros geralmente no so nulos

Valores nega@vos so usados como condio de erro em muitos


programas

Predizer
que instrues
o @po TBLEZ
no B
so
Ver Branch
Predic5on
For Fdree.
homas
all tomadas
& Jim Larus. PLDI
1993. (Leituras - TelEduc)

Embora essa abordagem no necessite de perlamento,


o sucesso depende do quo efe@vas so as heurs@cas
Arquitetura de Computadores

28

Predies est@cas (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

29

Predio dinmica
Considere a seguinte sequncia para um dado salto:
T T T T T N N N N N

T tomado
N no tomado

No importa quo bom o preditor est@co, 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

30

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 l@ma 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

31

Predio dinmica: 1a abordagem (2)


Implementao
PHT
K bits

PC
2k entradas
de 1 bit
PHT Pa\ern History Table

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


predio do respec@vo salto
PHT pode ser armazenada junto ao BTB

PHT atualizada com a nova predio se salto falhar


Arquitetura de Computadores

32

Problemas com a 1a abordagem


Qual a acurcia do l@mo 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 l@ma 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

33

Predio dinmica: 2a abordagem


Como melhorar a abordagem anterior?
O problema apontado pelo l@mo 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

tomado

TT

no tomado

TN
no tomado

tomado

TT fortemente tomado
TN fracamente tomado
NN fortemente no tomado
NT fracamente no tomado

tomado

NT

no tomado

NN
no tomado

Arquitetura de Computadores

34

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++) {!
! !!
!}!
!!
}!
1a passada

Qual a taxa de sucesso?

(N-1)/N

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


35

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
Pen@um
Arquitetura de Computadores

36

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

37

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 (cond1)
/* b1 */!
!
if (cond1 && cond2) /* b2 */!
!

Se b1 no for tomado, com certeza b2


tambm no ser

if (aa == 2)
/* b1 */!
aa=0;!
if (bb == 2)
/* b2 */!
bb=0;!
if (aa != bb) { /* b3 */!
!
}!

Se b1 e b2 foram tomados, b3 com


certeza no ser

Arquitetura de Computadores

38

Preditor global operao


Armazenar a correlao em um registrador global (k bits)
l@mos 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 l@mos 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

39

Preditor global implementao


Primeiro nvel
Direo dos l@mos k saltos

Segundo nvel
Direo que o salto tomou a l@ma vez que a mesma histria
foi vista
PHT
K bits

GHR
2k entradas
de 2 bits

Arquitetura de Computadores

40

Funcionamento da correlao global


GHR com 4 bits

GHR

i= 0
j= 0
for (i=0; i<100; i++) {!
!!
!for (j=0; j<3; j++) {!
! !!
!}!
!!
}!

Arquitetura de Computadores

0 0 0 0

PHT
NT
NT
NT
NT
NT
NT
NT
NT
NT
NT
NT
NT
NT
NT
NT
NT

0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
41

Funcionamento da correlao global


GHR com 4 bits

GHR

i= 0
j= 1
for (i=0; i<100; i++) {!
!!
!for (j=0; j<3; j++) {!
! !!
!}!
!!
}!

Arquitetura de Computadores

0 0 0 0

PHT
NT
NT
NT
NT
NT
NT
NT
NT
NT
NT
NT
NT
NT
NT
NT
NT

0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
42

Funcionamento da correlao global


GHR com 4 bits

GHR

i= 0
j= 1
for (i=0; i<100; i++) {!
!!
!for (j=0; j<3; j++) {!
! !!
!}!
!!
}!

Arquitetura de Computadores

0 0 0 1

PHT
TT
NT
NT
NT
NT
NT
NT
NT
NT
NT
NT
NT
NT
NT
NT
NT

0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
43

Funcionamento da correlao global


GHR com 4 bits

GHR

i= 0
j= 2
for (i=0; i<100; i++) {!
!!
!for (j=0; j<3; j++) {!
! !!
!}!
!!
}!

Arquitetura de Computadores

0 0 0 1

PHT
TT
NT
NT
NT
NT
NT
NT
NT
NT
NT
NT
NT
NT
NT
NT
NT

0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
44

Funcionamento da correlao global


GHR com 4 bits

GHR

i= 0
j= 2
for (i=0; i<100; i++) {!
!!
!for (j=0; j<3; j++) {!
! !!
!}!
!!
}!

Arquitetura de Computadores

0 0 1 1

PHT
TT
TT
NT
NT
NT
NT
NT
NT
NT
NT
NT
NT
NT
NT
NT
NT

0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
45

Funcionamento da correlao global


GHR com 4 bits

GHR

i= 0
j= 3
for (i=0; i<100; i++) {!
!!
!for (j=0; j<3; j++) {!
! !!
!}!
!!
}!

Arquitetura de Computadores

0 0 1 1

PHT
TT
TT
NT
NT
NT
NT
NT
NT
NT
NT
NT
NT
NT
NT
NT
NT

0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
46

Funcionamento da correlao global


GHR com 4 bits

GHR

i= 0
j= 3
for (i=0; i<100; i++) {!
!!
!for (j=0; j<3; j++) {!
! !!
!}!
!!
}!

Arquitetura de Computadores

0 1 1 0

PHT
TT
TT
NT
NN
NT
NT
NT
NT
NT
NT
NT
NT
NT
NT
NT
NT

0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
47

Funcionamento da correlao global


GHR com 4 bits

GHR

i= 1
j= 3
for (i=0; i<100; i++) {!
!!
!for (j=0; j<3; j++) {!
! !!
!}!
!!
}!

Arquitetura de Computadores

0 1 1 0

PHT
TT
TT
NT
NN
NT
NT
NT
NT
NT
NT
NT
NT
NT
NT
NT
NT

0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
48

Funcionamento da correlao global


GHR com 4 bits

GHR

i= 1
j= 3
for (i=0; i<100; i++) {!
!!
!for (j=0; j<3; j++) {!
! !!
!}!
!!
}!

Arquitetura de Computadores

1 1 0 1

PHT
TT
TT
NT
NN
NT
NT
TT
NT
NT
NT
NT
NT
NT
NT
NT
NT

0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
49

Funcionamento da correlao global


GHR com 4 bits

GHR

i= 1
j= 1
for (i=0; i<100; i++) {!
!!
!for (j=0; j<3; j++) {!
! !!
!}!
!!
}!

Arquitetura de Computadores

1 1 0 1

PHT
TT
TT
NT
NN
NT
NT
TT
NT
NT
NT
NT
NT
NT
NT
NT
NT

0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
50

Funcionamento da correlao global


GHR com 4 bits

GHR

i= 1
j= 1
for (i=0; i<100; i++) {!
!!
!for (j=0; j<3; j++) {!
! !!
!}!
!!
}!

Arquitetura de Computadores

1 0 1 1

PHT
TT
TT
NT
NN
NT
NT
TT
NT
NT
NT
NT
NT
NT
TT
NT
NT

0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
51

Funcionamento da correlao global


GHR com 4 bits

GHR

i= 1
j= 2
for (i=0; i<100; i++) {!
!!
!for (j=0; j<3; j++) {!
! !!
!}!
!!
}!

Arquitetura de Computadores

1 0 1 1

PHT
TT
TT
NT
NN
NT
NT
TT
NT
NT
NT
NT
NT
NT
TT
NT
NT

0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
52

Funcionamento da correlao global


GHR com 4 bits

GHR

i= 1
j= 2
for (i=0; i<100; i++) {!
!!
!for (j=0; j<3; j++) {!
! !!
!}!
!!
}!

Arquitetura de Computadores

0 1 1 1

PHT
TT
TT
NT
NN
NT
NT
TT
NT
NT
NT
NT
TT
NT
TT
NT
NT

0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
53

Funcionamento da correlao global


GHR com 4 bits

GHR

i= 1
j= 3
for (i=0; i<100; i++) {!
!!
!for (j=0; j<3; j++) {!
! !!
!}!
!!
}!

Arquitetura de Computadores

0 1 1 1

PHT
TT
TT
NT
NN
NT
NT
TT
NT
NT
NT
NT
TT
NT
TT
NT
NT

0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
54

Funcionamento da correlao global


GHR com 4 bits

GHR

i= 1
j= 3
for (i=0; i<100; i++) {!
!!
!for (j=0; j<3; j++) {!
! !!
!}!
!!
}!

Arquitetura de Computadores

1 1 1 0

PHT
TT
TT
NT
NN
NT
NT
TT
NN
NT
NT
NT
TT
NT
TT
NT
NT

0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
55

Funcionamento da correlao global


GHR com 4 bits

GHR

i= 2
j= 3
for (i=0; i<100; i++) {!
!!
!for (j=0; j<3; j++) {!
! !!
!}!
!!
}!

Arquitetura de Computadores

1 1 1 0

PHT
TT
TT
NT
NN
NT
NT
TT
NN
NT
NT
NT
TT
NT
TT
NT
NT

0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
56

Funcionamento da correlao global


GHR com 4 bits

GHR

i= 2
j= 3
for (i=0; i<100; i++) {!
!!
!for (j=0; j<3; j++) {!
! !!
!}!
!!
}!

Arquitetura de Computadores

1 1 0 1

PHT
TT
TT
NT
NN
NT
NT
TT
NN
NT
NT
NT
TT
NT
TT
TT
NT

0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
57

Funcionamento da correlao global


GHR com 4 bits

GHR

i= 2
j= 1
for (i=0; i<100; i++) {!
!!
!for (j=0; j<3; j++) {!
! !!
!}!
!!
}!

Arquitetura de Computadores

1 1 0 1

PHT
TT
TT
NT
NN
NT
NT
TT
NN
NT
NT
NT
TT
NT
TT
TT
NT

0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
58

Funcionamento da correlao global


GHR com 4 bits

GHR

i= 2
j= 2
for (i=0; i<100; i++) {!
!!
!for (j=0; j<3; j++) {!
! !!
!}!
!!
}!

Arquitetura de Computadores

1 0 1 1

PHT
TT
TT
NT
NN
NT
NT
TT
NN
NT
NT
NT
TT
NT
TT
TT
NT

0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
59

Funcionamento da correlao global


GHR com 4 bits

GHR

i= 2
j= 3
for (i=0; i<100; i++) {!
!!
!for (j=0; j<3; j++) {!
! !!
!}!
!!
}!

Arquitetura de Computadores

0 1 1 1

PHT
TT
TT
NT
NN
NT
NT
TT
NN
NT
NT
NT
TT
NT
TT
TT
NT

0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
60

Funcionamento da correlao global


GHR com 4 bits

GHR

i= 3
j= 3
for (i=0; i<100; i++) {!
!!
!for (j=0; j<3; j++) {!
! !!
!}!
!!
}!

Arquitetura de Computadores

1 1 1 0

PHT
TT
TT
NT
NN
NT
NT
TT
NN
NT
NT
NT
TT
NT
TT
TT
NT

0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
61

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 u@lizao da PHT (reduo de colises)

Operao XOR aplicada entre parte do PC e o GHR

Arquitetura de Computadores

62

Preditor Gshare Implementao


PHT

PC

GHR

Hash
(XOR)

Arquitetura de Computadores

2k entradas de 2 bits

63

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++) {!
!!
!for (j=0; j<5; j++) {!
!
!!
!}!
!!
}!

Dependendo da quan@dade
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

64

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

65

Preditores hbridos
Note que diferentes preditores podem ser bons para
diferentes @pos 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

66

Exemplo: Alpha 21264


GHR
12 bits

PC

BHT

Local PHT

Global PHT

1024x10 bits

1024x3 bits

4096x2 bits

Choice predict

4096x2 bits

1 0

nal predic@on

Arquitetura de Computadores

67

Acurcia de alguns preditores

Arquitetura de Computadores

68

Вам также может понравиться