TEMA 3 ILP, Panificación dinámica, Predicción de saltos, Especulación
PREDICCIÓN DINÁMICA DE SALTOS
description
Transcript of PREDICCIÓN DINÁMICA DE SALTOS
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
Predicción dinámica de saltos
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
4
PREDICCIÓN DINÁMICA DE SALTOS
2. Buffer de Predicción de Saltos (BPB)
5
Buffer de Predicción de Saltos (BPB)
Predicción dinámica de saltos
Predice el salto atendiendo a la historia.
ETQ1 . . . . .. . . . .ETQ2 . . . . .. . . . .. . . . .
20032 Bcc ETQ2. . . . .. . . . .20156 Bcc ETQ1
. . .
.
. . .
.
56 0
1
Salto
NoSalto
32
¡OJO!¡Puede haber colisiones!
. . . . .. . . . .34056 Bcc ETQ3. . . . .. . . . .
BPB
6
Buffer de Predicción de Saltos (BPB)
Predicción dinámica de saltos
¿Se predicesaltar?
NOSI
Ejecutar la instrucción del salto
Ejecutar la instrucción siguiente
¿Predicciónfallada?
Invertir la predicción del buffer
Continuar la ejecución
Buscar la instrucción adecuada
SI NO
7
Buffer de Predicción de Saltos (BPB)
Predicción dinámica de saltos
A veces, un solo bit de predicción no da buen resultado.
x 99x 1000
ETQ1 . . . . .. . . . .ETQ2 . . . . .. . . . .. . . . .
Bcc ETQ2. . . . .. . . . .Bcc ETQ1
El bucle interior salta en 99 ocasiones (y no lo hace en 1) de cada 100.
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!
8
Buffer de Predicción de Saltos (BPB)
Predicción dinámica de saltos
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:
Predicción deSALTO
Predicción deSALTO
Predicción deNO SALTO
Predicción deNO SALTO
11 10
0001
Acierto
Fallo
Acierto
Fallo
Fallo
Fallo
Acierto
Acierto
Pueden implementarse predictores de más de 2 bits aunque la práctica ha demostrado que no merecen la pena.
9
Buffer de Predicción de Saltos (BPB)
Predicción dinámica de saltos
• No Saltar.
Se continúa con la siguiente instrucción y no hay retardo.
• 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.
Predicción en MIPS
Para este tipo de procesadores el BPB no tiene utilidad.
Solución: Predecir también la dirección a la que saltar.
10
PREDICCIÓN DINÁMICA DE SALTOS
3. Buffer de Destinos de Saltos (BTB)
11
Predicción dinámica de saltos
Predice el salto y la dirección destino.
ETQ1 . . . . .. . . . .ETQ2 . . . . .. . . . .. . . . .
20032 Bcc ETQ2. . . . .. . . . .20156 Bcc ETQ1. . . . .. . . . .34056 Bcc ETQ3. . . . .
ETQ3 . . . . .. . . . .
Buffer de Destinos de Saltos (BTB)
. . .
.
BTB
20156
20032
. . .
.
19850
19800
Dirección de la última vez que saltó
No está Predicción de NO salto
Predictor de 1 bit
12
ID
IF
EX
Buffer de Destinos de Saltos (BTB)
Predicción dinámica de saltos
Enviar el PC predicho
Enviar PC a memoria y 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.
Ejecución normal
Ejecución normal
•Abortar la ejecución errónea y
reiniciar lectura de instrucción.•Eliminar entrada en BTB
¿Entrada enel BTB?
SINO
¿Se realizael salto?
SINO
¿Es un salto y se toma?
SINO
13
Buffer de Destinos de Saltos (BTB)
Predicción dinámica de saltos
Usando el BTB con MIPS, si se acierta no hay retardo.
BNE ETQ IF ID EX MEM WBXOR R1,R2,R3 IF ID EX MEM WB. . .. . .
ETQ AND R1,R2,R3
Si se predice NO SALTO y se ACIERTA:
Si se predice SALTO y se ACIERTA:
BNE ETQ IF ID EX MEM WBXOR R1,R2,R3. . .. . .
ETQ AND R1,R2,R3 IF ID EX MEM WB
14
Buffer de Destinos de Saltos (BTB)
Predicción dinámica de saltos
Si se falla la predicción habrá 2 ciclos de retardo.
BNE ETQXOR R1,R2,R3. . .. . .
ETQ AND R1,R2,R3
Si se predice NO SALTO y se FALLA:
IF EX MEM
IF
WB
ID EX MEM WB
ID
IF
Se predice “no salto”
Se conoce el error de predicción
Se aborta la ejecución No se puede extraer la
siguiente instrucción porque hay que actualizar el BTB
15
Buffer de Destinos de Saltos (BTB)
Predicción dinámica de saltos
Si la predicción es de SALTO y se FALLA, el proceso es similar.
• 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).
Se puede ahorrar un ciclo de retardo si se consigue consultar el BTB y modificarlo en un solo ciclo. Dos posibles formas son:
16
Predicción dinámica de saltos
Buffer de Destinos de Saltos (BTB)
Se puede añadir un bit de predicción.. .
. .
. . .
.BTB
20156 0
120032. .
. .
19850
19800
Bit de predicción
Permite utilizarlo como si fuera un predictor de 2 bits.
17
Buffer de Destinos de Saltos (BTB)
Predicción dinámica de saltos
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.
J ETQ IF. . .. . .ETQ AND R1,R2,R3 ID EX MEM WB
Se ahorra la etapa IF
. . .
.
BTB
20156
20032
. . .
.
AND ...
ADD ...
18
PREDICCIÓN DINÁMICA DE SALTOS
4. Predictores Globales
19
Predictores Globales
Predicción dinámica de saltos
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.
BNE ETQ1. . .. . .BEQ ETQ2. . .. . .BEQ ETQ3
Los predictores globales, además tienen en cuenta la información sobre otras instrucciones de salto del programa.
BNE ETQ1. . .. . .BEQ ETQ2. . .. . .BEQ ETQ3
20
Predictores Globales
Predicción dinámica de saltos
Los predictores locales que hemos visto hasta ahora se pueden considerar:
(0, 1) predictor de 1 bit
(0, 2) predictor de 2 bits
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.
21
Predictores Globales
Predicción dinámica de saltos
Predictor (1, 1)
. . .
.
1
. . .
.
¿El último salto global se tomo?
SI NO
1
1 0
Predicciónde 1 bit
ETQ1 . . . . .. . . . .ETQ2 . . . . .. . . . .. . . . .
20032 Bcc ETQ2. . . . .. . . . .20156 Bcc ETQ1. . . . .. . . . .34088 Bcc ETQ3. . . . .
ETQ3 . . . . .. . . . .. .
. .
20156
20032
34088 0 1
22
Predictores Globales
Predicción dinámica de saltos
Predictor (1, 2)
. . .
.
11
. . .
.
¿El último salto global se tomo?
SI NO
01
10 00
ETQ1 . . . . .. . . . .ETQ2 . . . . .. . . . .. . . . .
20032 Bcc ETQ2. . . . .. . . . .20156 Bcc ETQ1. . . . .. . . . .34088 Bcc ETQ3. . . . .
ETQ3 . . . . .. . . . .. .
. .
20156
20032
34088 01 10
Predicciónde 2 bits
23
Predictores Globales
Predicción dinámica de saltos
Predictor (2, 2)
ETQ1 . . . . .. . . . .ETQ2 . . . . .. . . . .. . . . .
20032 Bcc ETQ2. . . . .. . . . .20156 Bcc ETQ1. . . . .. . . . .34088 Bcc ETQ3. . . . .
ETQ3 . . . . .. . . . .
. . .
.
20156
20032
34088
. . .
.
10
. . .
.
¿Se tomaron los 2 últimos saltos globales?
NO NO NO SI SI NO SI SI
00
11 01
00 10
. . .
.
11
. . .
.
10
00 00
01 10
24
PREDICCIÓN DINÁMICA DE SALTOS
5. Predictores Adaptativos
25
Predictores Adaptativos
Predicción dinámica de saltos
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:
Evento del predictor A
A Acierto
F Fallo
( X, Y )
Evento del predictor B
26
Predictores Adaptativos
Predicción dinámica de saltos
UtilizarPredictor A
UtilizarPredictor B
UtilizarPredictor A
UtilizarPredictor B
( F, F ) ( A, F ) ( A, A ) ( F, F ) ( F, A ) ( A, A )
( F, F ) ( A, A ) ( F, F ) ( A, A )
( A, F ) ( F, A ) ( A, F ) ( F, A )
( F, A )
( A, F )
27