20
Pipelining Peligros de control

22 Pipelining control hazards shorteuler.mat.uson.mx/~havillam/ca/Slides/22-Pipelining-control-hazards-short.pdf · Universidad de Sonora Arquitectura de Computadoras 3 Brinco no

  • Upload
    vokiet

  • View
    219

  • Download
    0

Embed Size (px)

Citation preview

Page 1: 22 Pipelining control hazards shorteuler.mat.uson.mx/~havillam/ca/Slides/22-Pipelining-control-hazards-short.pdf · Universidad de Sonora Arquitectura de Computadoras 3 Brinco no

PipeliningPeligros de control

Page 2: 22 Pipelining control hazards shorteuler.mat.uson.mx/~havillam/ca/Slides/22-Pipelining-control-hazards-short.pdf · Universidad de Sonora Arquitectura de Computadoras 3 Brinco no

Universidad de Sonora Arquitectura de Computadoras 2

Peligros de control� Detener (stall) el pipeline no es práctico.

� Soluciones:

1. Suponer que el brinco no será tomado.

2. Reducir el retraso de los brincos.

3. Predicción dinámica de brincos.

4. Decisión retrasada.

Page 3: 22 Pipelining control hazards shorteuler.mat.uson.mx/~havillam/ca/Slides/22-Pipelining-control-hazards-short.pdf · Universidad de Sonora Arquitectura de Computadoras 3 Brinco no

Universidad de Sonora Arquitectura de Computadoras 3

Brinco no tomado� Si el brinco no se toma, el pipeline continúa a toda

velocidad.

� Si el brinco se toma, se descartan las instrucciones

que hayan entrado después del brinco y se comienzan a tomar del destino del brinco.

� Si los brincos se toman el 50% de las veces, esta estrategia reduce el costo de los peligros de control

a la mitad.

Page 4: 22 Pipelining control hazards shorteuler.mat.uson.mx/~havillam/ca/Slides/22-Pipelining-control-hazards-short.pdf · Universidad de Sonora Arquitectura de Computadoras 3 Brinco no

Universidad de Sonora Arquitectura de Computadoras 4

Brinco no tomado� Para descartar las instrucciones se cambian las

señales de control a 0.

� Al siguiente ciclo se saca la instrucción del lugar

correcto.

Page 5: 22 Pipelining control hazards shorteuler.mat.uson.mx/~havillam/ca/Slides/22-Pipelining-control-hazards-short.pdf · Universidad de Sonora Arquitectura de Computadoras 3 Brinco no

Universidad de Sonora Arquitectura de Computadoras 5

Reducir el retraso de los brincos� El resultado de un brinco se conoce al final de la

etapa EX.

� Se puede agregar hardware para conocer el

resultado al final de la etapa ID.

� Por ejemplo, una instrucción tipo:

bltz $r, etiqueta # brinca si r < 0

� Sólo necesita checar el signo del registro y se podría

hacer en la etapa ID.

Page 6: 22 Pipelining control hazards shorteuler.mat.uson.mx/~havillam/ca/Slides/22-Pipelining-control-hazards-short.pdf · Universidad de Sonora Arquitectura de Computadoras 3 Brinco no

Universidad de Sonora Arquitectura de Computadoras 6

Reducir el retraso de los brincos� Si la condición es igual (beq) se puede sacar un XOR

de los dos registros y luego un OR al resultado.

� Otras condiciones son más complicadas.

� De todos modos, hay que agregar hardware de bypass y de detección de peligros.

� Es posible que el brinco dependa de un resultado que todavía está dentro del pipeline.

Page 7: 22 Pipelining control hazards shorteuler.mat.uson.mx/~havillam/ca/Slides/22-Pipelining-control-hazards-short.pdf · Universidad de Sonora Arquitectura de Computadoras 3 Brinco no

Universidad de Sonora Arquitectura de Computadoras 7

Reducir el retraso de los brincos� Por ejemplo, en la siguiente secuencia:

add $t0, $t1, $t2

beq $t0, $s0, etiqueta

� El pipeline se tiene que detener 1 ciclo.

� Para la siguiente secuencia:

lw $t0, 0($t1)

beq $t0, $s0, etiqueta

� El pipeline se tiene que detener 2 ciclos.

� Conclusión: no es práctico intentar reducir el retraso.

Page 8: 22 Pipelining control hazards shorteuler.mat.uson.mx/~havillam/ca/Slides/22-Pipelining-control-hazards-short.pdf · Universidad de Sonora Arquitectura de Computadoras 3 Brinco no

Universidad de Sonora Arquitectura de Computadoras 8

Predicción dinámica de brincos� En base a la historia de la instrucción, predecir si

habrá o no brinco.

� Se necesita una tabla de historia de brincos, llamada

también buffer de predicción de brincos.

� La tabla es una memoria pequeña indexada por la

parte baja de la dirección de la instrucción de brinco.

� La tabla contiene uno o mas bits indicando si el

brinco fue recientemente tomado o no.

� La predicción se hace en la etapa IF del brinco.

Page 9: 22 Pipelining control hazards shorteuler.mat.uson.mx/~havillam/ca/Slides/22-Pipelining-control-hazards-short.pdf · Universidad de Sonora Arquitectura de Computadoras 3 Brinco no

Universidad de Sonora Arquitectura de Computadoras 9

Tabla de 1 bit� Un bit que indica si la última vez el brinco fue

tomado o no.

� Desventaja: mala precisión aun con brincos que son

casi siempre tomados.

� Ejemplo: suponer la segunda vez que se ejecuta un

brinco de un ciclo. El brinco se toma 9 veces seguidas y luego no se toma.

� El sistema de 1 bit se equivoca dos veces.

Page 10: 22 Pipelining control hazards shorteuler.mat.uson.mx/~havillam/ca/Slides/22-Pipelining-control-hazards-short.pdf · Universidad de Sonora Arquitectura de Computadoras 3 Brinco no

Universidad de Sonora Arquitectura de Computadoras 10

Tabla de 1 bit� Se equivoca en la primera iteración. El bit se quedó

en 0 al final de la primera ejecución y predice no tomado, pero el brinco se toma.

� Se equivoca en la última iteración. El bit está en 1 porque el brinco se ha tomado 9 veces consecutivas

y predice tomado, pero el brinco no se toma.

� Precisión: 80% en un brinco que se toma el 90%.

Page 11: 22 Pipelining control hazards shorteuler.mat.uson.mx/~havillam/ca/Slides/22-Pipelining-control-hazards-short.pdf · Universidad de Sonora Arquitectura de Computadoras 3 Brinco no

Universidad de Sonora Arquitectura de Computadoras 11

Tabla de 2 bits� La predicción debe estar mal dos veces antes de

cambiarla.

� Se modela usando una máquina de estados finitos.

� Hay dos estados que predicen que el brinco serátomado.

� Hay dos estados que predicen que el brinco no serátomado.

Page 12: 22 Pipelining control hazards shorteuler.mat.uson.mx/~havillam/ca/Slides/22-Pipelining-control-hazards-short.pdf · Universidad de Sonora Arquitectura de Computadoras 3 Brinco no

Universidad de Sonora Arquitectura de Computadoras 12

Tabla de 2 bits

Fuente: COD 5, p. 322.

Page 13: 22 Pipelining control hazards shorteuler.mat.uson.mx/~havillam/ca/Slides/22-Pipelining-control-hazards-short.pdf · Universidad de Sonora Arquitectura de Computadoras 3 Brinco no

Universidad de Sonora Arquitectura de Computadoras 13

Tabla de 2 bits� Se puede programar como un contador de 0 a 3.

� 0 y 1 son los estados que predicen que el brinco se toma.

� 2 y 3 predicen que el brinco no se toma.

� Cada vez que el brinco no se toma, el contador se incrementa en 1.

� Cada vez que el brinco se toma, el contador se decrementa en 1.

� En el ejemplo anterior, este método tiene precisión del 90%, solo se equivoca en la última iteración.

Page 14: 22 Pipelining control hazards shorteuler.mat.uson.mx/~havillam/ca/Slides/22-Pipelining-control-hazards-short.pdf · Universidad de Sonora Arquitectura de Computadoras 3 Brinco no

Universidad de Sonora Arquitectura de Computadoras 14

Otras mejoras� Buffer de destinos de brincos. Memoria cache para

guardar el destino de los últimos brincos.

� Predictor de correlación. Combina comportamiento

local de un brinco en particular con información global acerca del comportamiento de algunos

brincos recientemente ejecutados.

� Predictor de brincos estilo torneo. Tiene varias

predicciones para un mismo brinco y un mecanismo para seleccionar que predictor usar para un brinco en particular.

Page 15: 22 Pipelining control hazards shorteuler.mat.uson.mx/~havillam/ca/Slides/22-Pipelining-control-hazards-short.pdf · Universidad de Sonora Arquitectura de Computadoras 3 Brinco no

Universidad de Sonora Arquitectura de Computadoras 15

Otras mejoras� Un predictor estilo torneo típico tiene dos

predicciones para cada brinco, uno basado en información global de brincos y otro en información

local. El selector escoge que predictor usar para un brinco en particular. El selector se puede

implementar parecido a las tablas de 1 y 2 bits, favoreciendo al predictor que haya sido mas preciso.

Page 16: 22 Pipelining control hazards shorteuler.mat.uson.mx/~havillam/ca/Slides/22-Pipelining-control-hazards-short.pdf · Universidad de Sonora Arquitectura de Computadoras 3 Brinco no

Universidad de Sonora Arquitectura de Computadoras 16

Decisión retrasada� Se utiliza en MIPS.

� Consiste en poner después del brinco una instrucción independiente.

� Hay 3 formas de escoger la instrucción:

a) De antes del brinco.

b) Del destino del brinco.

c) Del else del brinco.

Page 17: 22 Pipelining control hazards shorteuler.mat.uson.mx/~havillam/ca/Slides/22-Pipelining-control-hazards-short.pdf · Universidad de Sonora Arquitectura de Computadoras 3 Brinco no

Universidad de Sonora Arquitectura de Computadoras 17

Decisión retrasada

Fuente: COD 5, p. 323.

Page 18: 22 Pipelining control hazards shorteuler.mat.uson.mx/~havillam/ca/Slides/22-Pipelining-control-hazards-short.pdf · Universidad de Sonora Arquitectura de Computadoras 3 Brinco no

Universidad de Sonora Arquitectura de Computadoras 18

Decisión retrasada� La opción a) es la preferida.

� Las opciones b) y c) se usan si a) no se puede emplear.

� La opción b) puede preferirse para brincos con alta probabilidad de ser tomados.

� Para que b) y c) funcionen la instrucción no debe afectar en caso de que no haberse debido

ejecutado.

Page 19: 22 Pipelining control hazards shorteuler.mat.uson.mx/~havillam/ca/Slides/22-Pipelining-control-hazards-short.pdf · Universidad de Sonora Arquitectura de Computadoras 3 Brinco no

Universidad de Sonora Arquitectura de Computadoras 19

Conclusión� Detener el pipeline no es opción.

� Suponer que el brinco no será tomado tiene una mala precisión.

� Decisión retrasada es práctica en MIPS que tiene un pipeline de solo 5 etapas.

� Las CPUs modernas pueden tener pipelines de 20 o 30 etapas.

� La opción preferida en la actualidad es la predicción dinámica de brincos.

Page 20: 22 Pipelining control hazards shorteuler.mat.uson.mx/~havillam/ca/Slides/22-Pipelining-control-hazards-short.pdf · Universidad de Sonora Arquitectura de Computadoras 3 Brinco no

Universidad de Sonora Arquitectura de Computadoras 20

Conclusión� Más información en:

� Smith, J. E. A Study of Branch Prediction Techniques. IEEE (1981)

http://euler.mat.uson.mx/~havillam/ca/Common/JSmith.pdf

� Michaud, P., Seznec, André. A Comprehensive

Study of Dynamic Global History Branch Prediction. INRIA (2001)

http://euler.mat.uson.mx/~havillam/ca/Common/RR-4219.pdf