5. PREDICCIÓN DINÁMICA DE
SALTOS
1
PREDICCIÓN DINÁMICA DE SALTOS
1. Introducción
2. Buffer de Predicción de Saltos (BPB)
3. Buffer de Destinos de Saltos (BTB)
4. Predictores Globales
5. Predictores Adaptativos
2
PREDICCIÓN DINÁMICA DE SALTOS
1. Introducción
3
Introducción
Los riesgos de
control se dan
más a menudo
que los de datos
Mucha influencia
en el tiempo de
ejecución
Vamos a estudiar técnicas que permitan
determinar si se va a saltar o no
La predicción se hará en la etapa IF
Predicción dinámica de saltos
4
PREDICCIÓN DINÁMICA DE SALTOS
2. Buffer de Predicción de Saltos (BPB)
5
Buffer de Predicción de Saltos (BPB)
Predice el salto atendiendo a la historia.
BPB
.. .. .. .. ..
ETQ2 . . . . .
.. .. .. .. ..
ETQ1
Bcc
ETQ2
20156
Bcc
ETQ1
34056
.. .. .. .. ..
Bcc ETQ3
.. .. .. .. ..
1
56
0
....
.. .. .. .. ..
32
....
20032
Salto
No
Salto
¡OJO!
¡Puede haber colisiones!
Predicción dinámica de saltos
6
Buffer de Predicción de Saltos (BPB)
SI
¿Se predice
saltar?
Ejecutar la
instrucción del salto
SI
NO
Ejecutar la
instrucción siguiente
¿Predicción
fallada?
NO
Buscar la instrucción
adecuada
Invertir la predicción
del buffer
Continuar la
ejecución
Predicción dinámica de saltos
7
Buffer de Predicción de Saltos (BPB)
A veces, un solo bit de predicción no da buen resultado.
ETQ1
ETQ2
.. .. .. .. ..
.. .. .. .. ..
.....
Bcc
ETQ2
Bcc
ETQ1
El bucle interior salta en 99 ocasiones
(y no lo hace en 1) de cada 100.
x 99
x 1000
.. .. .. .. ..
Sin embargo, la predicción no sólo
fallará la vez que no salta sino también
la siguiente vez que se vuelva a
ejecutar la instrucción de salto.
¡Habrá 2000 fallos en vez de los 1000 que cabría esperar!
Predicción dinámica de saltos
8
Buffer de Predicción de Saltos (BPB)
Solución: aumentar la “memoria histórica”.
Se aumenta a dos el número de bits de predicción del BPB y
se actúa según el siguiente diagrama de estados:
Fallo
Acierto
Predicción de
11
SALTO
Predicción de
10
SALTO
Acierto
Fallo
Fallo
Acierto
Predicción de
01
NO SALTO
Predicción de
00
NO SALTO
Acierto
Fallo
Pueden implementarse predictores de más de 2 bits aunque
la práctica ha demostrado que no merecen la pena.
Predicción dinámica de saltos
9
Buffer de Predicción de Saltos (BPB)
• No Saltar.
Se continúa con la siguiente
instrucción y no hay retardo.
Predicción en MIPS
• Saltar.
Hasta la fase ID no se conoce la
dirección de salto (cuando éste
ya se ha resuelto). No se puede
evitar el retardo.
Para este tipo de procesadores el BPB no tiene utilidad.
Solución: Predecir también la dirección a la que saltar.
Predicción dinámica de saltos
10
PREDICCIÓN DINÁMICA DE SALTOS
3. Buffer de Destinos de Saltos (BTB)
11
Buffer de Destinos de Saltos (BTB)
Predice el salto y la dirección destino.
.. .. .. .. ..
ETQ2 . . . . .
.. .. .. .. ..
BTB
ETQ1
34056
ETQ3
20156
19800
ETQ2
.. .. .. .. ..
Bcc ETQ1
.. .. .. .. ..
Bcc
19850
ETQ3
.. .. .. .. ..
.....
....
20156
Bcc
20032
....
20032
Dirección de la
última vez que saltó
Predictor
de 1 bit
No está  Predicción de NO salto
Predicción dinámica de saltos
12
Buffer de Destinos de Saltos (BTB)
IF
Enviar PC a memoria y BTB
NO
ID
SI
Enviar el PC predicho
NO
¿Es un salto
y se toma?
SI
Ejecución
normal
EX
¿Entrada en
el BTB?
•Abortar la ejecución errónea y
reiniciar lectura de instrucción.
•Introducir en BTB la dirección
del salto y de la instrucción.
Predicción dinámica de saltos
NO
¿Se realiza
el salto?
•Abortar la ejecución errónea y
reiniciar lectura de instrucción.
•Eliminar entrada en BTB
SI
Ejecución
normal
13
Buffer de Destinos de Saltos (BTB)
Usando el BTB con MIPS, si se acierta no hay retardo.
Si se predice NO SALTO y se ACIERTA:
BNE
XOR
ETQ
R1,R2,R3
AND
R1,R2,R3
.. .. ..
ETQ
IF
ID
IF
EX
ID
MEM WB
EX
MEM WB
ID
EX
MEM WB
IF
ID
EX
Si se predice SALTO y se ACIERTA:
BNE
XOR
ETQ
R1,R2,R3
AND
R1,R2,R3
.. .. ..
ETQ
Predicción dinámica de saltos
IF
MEM WB
14
Buffer de Destinos de Saltos (BTB)
Si se falla la predicción habrá 2 ciclos de retardo.
Si se predice NO SALTO y se FALLA:
Se conoce el error
de predicción
Se predice “no salto”
BNE
XOR
ETQ
R1,R2,R3
AND
R1,R2,R3
.. .. ..
ETQ
IF
Se aborta la
ejecución
Predicción dinámica de saltos
ID
IF
EX
MEM WB
IF
ID
EX
MEM WB
No se puede extraer la
siguiente instrucción porque
hay que actualizar el BTB
15
Buffer de Destinos de Saltos (BTB)
Si la predicción es de SALTO y se FALLA, el proceso es similar.
Se puede ahorrar un ciclo de retardo si se consigue consultar el
BTB y modificarlo en un solo ciclo. Dos posibles formas son:
• Dotar al BTB de un puerto de lectura y otro de escritura
para poder superponer ambas operaciones.
• Dividir la etapa IF en 2 subciclos de forma que en uno se
consulte la dirección en el BTB (Lectura) y en otro se
actualice (escritura).
Predicción dinámica de saltos
16
Buffer de Destinos de Saltos (BTB)
Se puede añadir un bit de predicción.
BTB
20156
0
19800
Permite utilizarlo como si fuera
un predictor de 2 bits.
....
19850
....
1
....
20032
Bit de predicción
Predicción dinámica de saltos
17
Buffer de Destinos de Saltos (BTB)
Para los saltos incondicionales se puede utilizar la técnica
denominada Branch Folding. En este caso el BTB contiene la
instrucción destino del salto en vez de su dirección.
BTB
20032 AND ...
ETQ
.. .. ..
ETQ
AND
R1,R2,R3
IF
ID
EX
MEM WB
....
....
20156 ADD ...
J
Se ahorra la
etapa IF
Predicción dinámica de saltos
18
PREDICCIÓN DINÁMICA DE SALTOS
4. Predictores Globales
19
Predictores Globales
BNE
ETQ1
BEQ
ETQ3
BNE
ETQ1
.. .. ..
BEQ ETQ2
.. .. ..
.. .. ..
BEQ ETQ2
.. .. ..
BEQ
Los predictores vistos hasta ahora son
locales ya que sólo tienen en cuenta
información referente a la instrucción de
salto objeto de la predicción.
Los predictores globales, además tienen en
cuenta
la
información
sobre
otras
instrucciones de salto del programa.
ETQ3
Predicción dinámica de saltos
20
Predictores Globales
Se describen mediante el par
(G, L)
Donde G indica el número saltos globales a evaluar y
L el número de bits del predictor local.
Los predictores locales que hemos visto hasta ahora se
pueden considerar:
(0, 1)  predictor de 1 bit
(0, 2)  predictor de 2 bits
Predicción dinámica de saltos
21
Predictores Globales
Predictor (1, 1)
.. .. .. .. ..
ETQ2 . . . . .
.. .. .. .. ..
¿El último salto
global se tomo?
SI
NO
ETQ1
20156
1
1
20156
34088
Bcc
ETQ3
.. .. .. .. ..
.....
Predicción dinámica de saltos
34088
....
ETQ2
.. .. .. .. ..
Bcc ETQ1
.. .. .. .. ..
ETQ3
0
....
Bcc
1
....
20032
20032
0
1
Predicción
de 1 bit
22
Predictores Globales
Predictor (1, 2)
.. .. .. .. ..
ETQ2 . . . . .
.. .. .. .. ..
¿El último salto
global se tomo?
SI
NO
ETQ1
20156
11
01
20156
34088
Bcc
ETQ3
.. .. .. .. ..
.....
Predicción dinámica de saltos
34088
....
ETQ2
.. .. .. .. ..
Bcc ETQ1
.. .. .. .. ..
ETQ3
00
....
Bcc
10
....
20032
20032
01
10
Predicción
de 2 bits
23
Predictores Globales
Predictor (2, 2)
¿Se tomaron los 2 últimos saltos
globales?
.. .. .. .. ..
ETQ2 . . . . .
.. .. .. .. ..
NO NO
NO SI
SI NO
SI SI
00
00
20156
10
00
11
10
....
....
00
10
01
10
ETQ2
20156
.. .. .. .. ..
Bcc ETQ1
.. .. .. .. ..
34088
Bcc
ETQ3
01
....
Bcc
11
ETQ3
.. .. .. .. ..
.....
Predicción dinámica de saltos
....
20032
20032
....
ETQ1
34088
24
PREDICCIÓN DINÁMICA DE SALTOS
5. Predictores Adaptativos
25
Predictores Adaptativos
Dependiendo de los programas a ejecutar, habrá veces en las
que funcionará mejor un predictor que otro.
Los predictores adaptativos tienen la capacidad de “adaptarse”
a la situación eligiendo el tipo de predictor más adecuado a
cada situación, por ejemplo, local o global.
Se hace implementando un diagrama de estados como el del
ejemplo que se muestra a continuación. Las transiciones se
muestran con pares con el siguiente significado:
A  Acierto
( X, Y )
Evento del
predictor A
Predicción dinámica de saltos
Evento del
predictor B
F  Fallo
26
Predictores Adaptativos
( F, F ) ( A, F ) ( A, A )
( F, F ) ( F, A ) ( A, A )
Utilizar
Predictor A
( A, F )
Utilizar
Predictor B
( F, A )
( A, F )
( F, A )
( F, A )
Utilizar
Predictor A
( F, F ) ( A, A )
Predicción dinámica de saltos
( A, F )
Utilizar
Predictor B
( F, F ) ( A, A )
27
Descargar

predicción dinámica de saltos