PipeliningPeligros de control
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.
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.
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.
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.
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.
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.
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.
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.
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%.
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.
Universidad de Sonora Arquitectura de Computadoras 12
Tabla de 2 bits
Fuente: COD 5, p. 322.
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.
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.
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.
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.
Universidad de Sonora Arquitectura de Computadoras 17
Decisión retrasada
Fuente: COD 5, p. 323.
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.
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.
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