predicciÓn dinÁmica de saltos

27
5. PREDICCIÓN DINÁMICA DE SALTOS 1

Upload: corbin

Post on 04-Feb-2016

44 views

Category:

Documents


0 download

DESCRIPTION

PREDICCIÓN DINÁMICA DE SALTOS. 1. PREDICCIÓN DINÁMICA DE SALTOS. 2. Introducción Buffer de Predicción de Saltos (BPB) Buffer de Destinos de Saltos (BTB) Predictores Globales Predictores Adaptativos. PREDICCIÓN DINÁMICA DE SALTOS. 3. Introducción. Introducción. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: PREDICCIÓN  DINÁMICA DE SALTOS

5. PREDICCIÓN DINÁMICA DE SALTOS

1

Page 2: PREDICCIÓN  DINÁMICA DE SALTOS

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

Page 3: PREDICCIÓN  DINÁMICA DE SALTOS

PREDICCIÓN DINÁMICA DE SALTOS

1. Introducción

3

Page 4: PREDICCIÓN  DINÁMICA DE SALTOS

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

Page 5: PREDICCIÓN  DINÁMICA DE SALTOS

PREDICCIÓN DINÁMICA DE SALTOS

2. Buffer de Predicción de Saltos (BPB)

5

Page 6: PREDICCIÓN  DINÁMICA DE SALTOS

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

Page 7: PREDICCIÓN  DINÁMICA DE SALTOS

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

Page 8: PREDICCIÓN  DINÁMICA DE SALTOS

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

Page 9: PREDICCIÓN  DINÁMICA DE SALTOS

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

Page 10: PREDICCIÓN  DINÁMICA DE SALTOS

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

Page 11: PREDICCIÓN  DINÁMICA DE SALTOS

PREDICCIÓN DINÁMICA DE SALTOS

3. Buffer de Destinos de Saltos (BTB)

11

Page 12: PREDICCIÓN  DINÁMICA DE SALTOS

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

Page 13: PREDICCIÓN  DINÁMICA DE SALTOS

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

Page 14: PREDICCIÓN  DINÁMICA DE SALTOS

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

Page 15: PREDICCIÓN  DINÁMICA DE SALTOS

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

Page 16: PREDICCIÓN  DINÁMICA DE SALTOS

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

Page 17: PREDICCIÓN  DINÁMICA DE SALTOS

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

Page 18: PREDICCIÓN  DINÁMICA DE SALTOS

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

Page 19: PREDICCIÓN  DINÁMICA DE SALTOS

PREDICCIÓN DINÁMICA DE SALTOS

4. Predictores Globales

19

Page 20: PREDICCIÓN  DINÁMICA DE SALTOS

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

Page 21: PREDICCIÓN  DINÁMICA DE SALTOS

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

Page 22: PREDICCIÓN  DINÁMICA DE SALTOS

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

Page 23: PREDICCIÓN  DINÁMICA DE SALTOS

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

Page 24: PREDICCIÓN  DINÁMICA DE SALTOS

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

Page 25: PREDICCIÓN  DINÁMICA DE SALTOS

PREDICCIÓN DINÁMICA DE SALTOS

5. Predictores Adaptativos

25

Page 26: PREDICCIÓN  DINÁMICA DE SALTOS

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

Page 27: PREDICCIÓN  DINÁMICA DE SALTOS

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