Predição 3

Propaganda
PR3 [[adaptado
p
de AQA3e
Q
– 3.15,, pág.
p g 294]]
z
Enunciado
•
Considere um BTB (Branch Target Buffer) com penalizações de 0, 2
e 2 ciclos de relógio respectivamente para uma predição correcta
de um branch, para uma predição errada e para uma falta (“miss”)
no buffer. Considere um projecto para o BTB que distingue entre
dois tipos de saltos
saltos, saltos condicionados (branches) e
incondicionais, que guardam o endereço alvo no caso dos primeiros e
a instrução alvo no caso do segundo
•
Carlos Sê
C
êrro
•
A) Qual é penalização, em número de ciclos de relógio, quando um salto
incondicional é encontrado no BTB?
B) Determine a melhoria que resulta de guardar a instrução alvo em vez
do endereço alvo (esta operação designa-se por branch folding). Admita
uma taxa de acerto ((“hit rate”)) de 90%,, uma frequência
q
de saltos de
5%, e uma penalização de 2 ciclos de relógio no caso de uma falta
(“miss”) no acesso ao BTB. Qual deve ser o valor da taxa de acerto (o
“hit rate”) para que esta alternativa dê origem a uma melhoria de
desempenho?
p
PR2
1
7-Mai-07
Arquitectura de Computadores 2004/05
PR3 [[adaptado
p
de AQA3e
Q
– 3.15,, pág.
p g 294]]
Carlos Sê
C
êrro
z
Resolução
•
•
•
Relembremos a arquitectura de um Branch Target Buffer
Dos n bits do PC, p deles (os de menor peso) vão endereçar uma
entrada do BTB
Os restantes n-p bits são comparados com outros tantos bits
existentes numa etiqueta (“tag”) da entrada do BTB
PR2
2
7-Mai-07
Arquitectura de Computadores 2004/05
PR3 [[adaptado
p
de AQA3e
Q
– 3.15,, pág.
p g 294]]
Carlos Sê
C
êrro
z
Resolução
•
•
•
PR2
3
7-Mai-07
S hou
Se
houverr igualdade
gua a
na comparação, a entrada
ntra a foi
fo previamente
pr am nt
preenchida com o endereço alvo de um branch (ou com a instrução
alvo de um salto incondicional) e com bits de predição (como
existem numa arquitectura BPB pura)
Isso quer dizer (quando há igualdade) que já tínhamos passado
anteriormente pelo salto incondicional (localidade espacial)
Tudo isto ocorre no andar IF do pipeline, antes de a CPU sequer
saber que vai descodificar uma instrução de salto
Arquitectura de Computadores 2004/05
PR3 [[adaptado
p
de AQA3e
Q
– 3.15,, pág.
p g 294]]
Resolução
•
A) Guardar a instrução de salto de um JMP em vez do endereço de
salto de um Branch permite ganhar uma instrução no pipeline. Com
efeito, se houver acerto (“hit”) no BTB durante o andar IF e a
instrução alvo estiver disponível, podemos inserir essa instrução no
andara ID,
ID no lugar da instrução de branch
branch. A penalização é,
é nesse
caso, igual a -1, ou seja, ganhamos 1 ciclo de relógio
Carlos Sê
C
êrro
z
PR2
4
7-Mai-07
Arquitectura de Computadores 2004/05
PR3 [[adaptado
p
de AQA3e
Q
– 3.15,, pág.
p g 294]]
z
Resolução
•
B) Se o BTB guardar o endereço alvo, o fetch tem de ir buscar a
instrução nesse endereço. Isso dá-nos um CPI de
5% x (90% x 0 + 10% x 2) = 0,01
•
Este valor é o CPI para branches, ponderado pelas suas frequências
(5%)
Se o BTB guardar a instrução alvo, o CPI é de
5% x (90% x (-1) + 10% x 2) = -0,035
Carlos Sê
C
êrro
O valor negativo deste CPI significa que esta opção diminui o CPI
global do processador
A percentagem de acertos que começam a dar origem a uma
melhoria de desempenho é de 60%
5% x (X% x (-1) + (1-X)% x 2) = 0,01 Æ X = 0,6
Ou seja, com hit rates acima de 60% começamos a ganhar ao
implementar
p
esta solução
ç
PR2
5
7-Mai-07
Arquitectura de Computadores 2004/05
Download