Pipelining Peligros de control Peligros de control No

  • Slides: 27
Download presentation
Pipelining Peligros de control

Pipelining Peligros de control

Peligros de control No se sabe que instrucción sigue a un brinco. Ejemplo: beq

Peligros de control No se sabe que instrucción sigue a un brinco. Ejemplo: beq $t 0, $t 1, etiqueta instrucción_1 … etiqueta: instrucción_2 Universidad de Sonora Arquitectura de Computadoras 2

Peligros de control 1. 2. 3. 4. Detener (stall) el pipeline no es práctico.

Peligros de control 1. 2. 3. 4. Detener (stall) el pipeline no es práctico. Soluciones: Suponer que el brinco no será tomado. Reducir el retraso de los brincos. Especulación (predicción) dinámica de brincos. 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

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. Para descartar una instrucción se cambian sus señales de control a 0. Al siguiente ciclo se saca la instrucción del lugar correcto. Universidad de Sonora Arquitectura de Computadoras 4

Brinco no tomado Si los brincos se toman el 50% de las veces, esta

Brinco no tomado 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 5

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

Reducir el retraso de los brincos El resultado de un brinco se conoce al final de la etapa EX. La ideas es agregar hardware extra para conocer el resultado al final de la etapa ID. Si el brinco es independiente a la instrucción anterior, solo se pierde un ciclo después del brinco. Universidad de Sonora Arquitectura de Computadoras 6

Reducir el retraso en los brincos Para mover la decisión del brinco a la

Reducir el retraso en los brincos Para mover la decisión del brinco a la etapa ID se necesita: 1. Decodificar y leer los registros fuente. 2. Evaluar la condición. 3. Calcular la dirección a dónde va a brincar si se cumple la condición: PC + offset << 2 Universidad de Sonora Arquitectura de Computadoras 7

Reducir el retraso en los brincos Calcular la dirección en la etapa ID es

Reducir el retraso en los brincos Calcular la dirección en la etapa ID es fácil, solo se mueven el sumador y la unidad de shift de la etapa EX a ID. Evaluar algunas condiciones es fácil. Por ejemplo, una instrucción tipo: bltz $r, etiqueta # brinca si r < 0 Sólo se necesita checar el signo del registro. Universidad de Sonora Arquitectura de Computadoras 8

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

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. Un problema es que es posible que el brinco dependa de una instrucción que todavía está adentro del pipeline. En este caso se necesita detener el pipeline. Se pierden ciclos que con la evaluación del brinco en la etapa EX no se pierden. Universidad de Sonora Arquitectura de Computadoras 9

Reducir el retraso de los brincos Por ejemplo, en la siguiente secuencia: add $t

Reducir el retraso de los brincos Por ejemplo, en la siguiente secuencia: add $t 0, $t 1, $t 2 beq $t 0, $s 0, etiqueta El pipeline se tiene que detener 1 ciclo. Para la siguiente secuencia: lw $t 0, 0($t 1) beq $t 0, $s 0, 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 10

Reducir el retraso de los brincos Además del hardware extra para evaluar condiciones se

Reducir el retraso de los brincos Además del hardware extra para evaluar condiciones se requiere agregar un bypass extra y hardware de detección de peligros. En conclusión, reducir el retraso de los brincos incrementa el costo de la CPU y no garantiza un mejor rendimiento. Universidad de Sonora Arquitectura de Computadoras 11

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

Especulació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 más 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 12

Tabla de 1 bit Cada entrada de la tabla almacena un bit que indica

Tabla de 1 bit Cada entrada de la tabla almacena un bit que indica si la última vez el brinco fue tomado o no. Si el bit está en 1, el algoritmo predice que el brinco va a ser tomado. Si la predicción es correcta, el bit se queda en 1. Si la predicción es incorrecta, el bit se pone en 0. Universidad de Sonora Arquitectura de Computadoras 13

Tabla de 1 bit Si el bit está en 0, el algoritmo predice que

Tabla de 1 bit Si el bit está en 0, el algoritmo predice que el brinco no va a ser tomado. Si la predicción es correcta, el bit se queda en 0. Si la predicción es incorrecta, el bit se pone en 1. Universidad de Sonora Arquitectura de Computadoras 14

Tabla de 1 bit Desventaja: mala precisión aun con brincos que son casi siempre

Tabla de 1 bit 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 algoritmo de la tabla de 1 bit se equivoca dos veces. Universidad de Sonora Arquitectura de Computadoras 15

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

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 16

Tabla de 2 bits Cada entrada de la tabla almacena un número de 2

Tabla de 2 bits Cada entrada de la tabla almacena un número de 2 bits que guarda la historia reciente del brinco. 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 17

Tabla de 2 bits Fuente: COD 5, p. 322. Universidad de Sonora Arquitectura de

Tabla de 2 bits Fuente: COD 5, p. 322. Universidad de Sonora Arquitectura de Computadoras 18

Tabla de 2 bits Los estados en azul predicen que el brinco va a

Tabla de 2 bits Los estados en azul predicen que el brinco va a ser tomado. Los estados en gris predicen que el brinco no va a ser tomado. Si el estado actual es azul fuerte o gris fuerte, el algoritmo se debe equivocar dos veces seguidas antes de cambiar de predicción. Si el estado actual es azul claro o gris claro, basta con que el algoritmo se equivoque una vez para cambiar de predicción. Universidad de Sonora Arquitectura de Computadoras 19

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

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 20

Otras mejoras Buffer de destinos de brincos. Memoria cache para guardar el destino de

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 21

Otras mejoras Un predictor estilo torneo típico tiene dos predicciones para cada brinco, uno

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 22

Decisión retrasada Se utiliza en MIPS. Consiste en poner después del brinco una instrucción

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 23

Decisión retrasada Fuente: COD 5, p. 323. Universidad de Sonora Arquitectura de Computadoras 24

Decisión retrasada Fuente: COD 5, p. 323. Universidad de Sonora Arquitectura de Computadoras 24

Decisión retrasada La opción a) es la preferida. Las opciones b) y c) se

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 25

Conclusión Detener el pipeline no es opción. Suponer que el brinco no será tomado

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 26

Conclusión Más información en: Smith, J. E. A Study of Branch Prediction Techniques. IEEE

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 Universidad de Sonora Arquitectura de Computadoras 27