• No se han encontrado resultados

5. PREDICCIÓN DINÁMICA DE SALTOS

N/A
N/A
Protected

Academic year: 2021

Share "5. PREDICCIÓN DINÁMICA DE SALTOS"

Copied!
27
0
0

Texto completo

(1)

5.

PREDICCIÓN DINÁMICA DE

(2)

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

(3)

PREDICCIÓN DINÁMICA DE SALTOS

1.

Introducción

(4)

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

(5)

PREDICCIÓN DINÁMICA DE SALTOS

2.

Buffer de Predicción de Saltos (BPB)

(6)

Buffer de Predicción de Saltos (BPB)

Predice el salto atendiendo a la historia.

ETQ1

. . .

. . .

ETQ2

. . .

. . .

. . .

20032 Bcc ETQ2

. . .

. . .

20156 Bcc ETQ1

. . . .

. . . .

56 0 1 Salto No Salto 32

¡OJO!

¡Puede haber colisiones!

. . .

. . .

34056 Bcc ETQ3

. . .

. . .

BPB

(7)

Buffer de Predicción de Saltos (BPB)

Predicción dinámica de saltos

¿Se predice saltar?

NO SI

Ejecutar la

instrucción del salto

Ejecutar la instrucción siguiente ¿Predicción fallada? Invertir la predicción del buffer Continuar la ejecución Buscar la instrucción adecuada SI NO 7

(8)

Buffer de Predicción de Saltos (BPB)

A veces, un solo bit de predicción no da buen resultado.

x 99 x 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.

(9)

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 de SALTO Predicción de SALTO Predicción de NO SALTO Predicción de NO SALTO 11 10 00 01 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.

(10)

Buffer de Predicción de Saltos (BPB)

•  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.

(11)

PREDICCIÓN DINÁMICA DE SALTOS

3.

Buffer de Destinos de Saltos (BTB)

(12)

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ó

Predictor

de 1 bit

(13)

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 en el BTB? SI NO ¿Se realiza el salto? SI NO ¿Es un salto y se toma? SI NO 13

(14)

Buffer de Destinos de Saltos (BTB)

Usando el BTB con MIPS, si se acierta no hay retardo.

BNE ETQ IF ID EX MEM WB

XOR 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 WB

XOR R1,R2,R3

. . .

. . .

(15)

Buffer de Destinos de Saltos (BTB)

Predicción dinámica de saltos

Si se falla la predicción habrá 2 ciclos de retardo.

BNE ETQ

XOR 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

(16)

Buffer de Destinos de Saltos (BTB)

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:

(17)

Predicción dinámica de saltos

Buffer de Destinos de Saltos (BTB)

Se puede añadir un bit de predicción.

. . . .

. . . .

BTB 20156 0 1 20032

. . . .

19850 19800 Bit de predicción

Permite utilizarlo como si fuera un predictor de 2 bits.

(18)

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.

J ETQ IF

. . .

. . .

ETQ AND R1,R2,R3 ID EX MEM WB

Se ahorra la

. . . .

BTB 20156 20032

. . . .

AND ... ADD ...

(19)

PREDICCIÓN DINÁMICA DE SALTOS

4.

Predictores Globales

(20)

Predictores Globales

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

(21)

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.

(22)

Predictores Globales

Predictor (1, 1)

. . . .

1

. . . .

¿El último salto global se tomo? SI NO 1 1 0 Predicción de 1 bit ETQ1

. . .

. . .

ETQ2

. . .

. . .

. . .

20032 Bcc ETQ2

. . .

. . .

20156 Bcc ETQ1

. . .

. . .

34088 Bcc ETQ3

. . .

ETQ3

. . .

. . .

. . . .

20156 20032 34088 0 1

(23)

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ón de 2 bits 23

(24)

Predictores Globales 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

(25)

PREDICCIÓN DINÁMICA DE SALTOS

5.

Predictores Adaptativos

(26)

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 F à Fallo ( X, Y )

(27)

Predictores Adaptativos

Predicción dinámica de saltos Utilizar Predictor A Utilizar Predictor B Utilizar Predictor A Utilizar Predictor 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

Referencias

Documento similar