Una unidad de predicción de bifurcación ( branch predict unit ) es un dispositivo que forma parte de microprocesadores con una arquitectura de tubería que predice si se realizará un salto condicional en un programa ejecutable. La predicción de bifurcación reduce el tiempo de inactividad de la canalización mediante la carga previa y la ejecución de instrucciones que deben ejecutarse después de ejecutar una instrucción de bifurcación condicional. La predicción de bifurcaciones juega un papel fundamental, ya que en la mayoría de los casos (la precisión de la predicción de bifurcaciones en los procesadores modernos supera el 90%) permite utilizar de forma óptima los recursos informáticos del procesador [1] .
Sin predicción de bifurcación, la canalización debe esperar hasta que se ejecute la instrucción de bifurcación condicional para realizar la siguiente búsqueda. El predictor de ramas evita perder el tiempo tratando de averiguar una rama. La rama se selecciona en función de los resultados anteriores de la verificación de condición. A continuación, la rama deseada se carga y se ejecuta parcialmente. Si luego se descubre que la predicción fue incorrecta, los resultados de la bifurcación incorrecta se descartan y la bifurcación correcta se carga en la canalización, lo que provoca un retraso. La cantidad de retraso depende de la longitud del transportador. Para el procesador Intel Core i7 , la profundidad de canalización es de 14 etapas.
La "predicción de salto" debe distinguirse de la "predicción de dirección de salto" . El propósito de la predicción de direcciones de bifurcación es seleccionar la dirección de una bifurcación condicional o incondicional antes de decodificar y ejecutar la instrucción de bifurcación.
Hay dos métodos principales para la predicción de ramas:
Los métodos de predicción de rama estática son los más simples. La esencia de estos métodos es que los diferentes tipos de transiciones:
En los procesadores modernos, los métodos estáticos se usan solo cuando no se pueden usar métodos dinámicos.
Un ejemplo de predicción estática trivial implementada en los primeros procesadores de las arquitecturas SPARC y MIPS .
En este caso, se asume que la bifurcación condicional nunca se ejecutará.
Un ejemplo de predicción estática implementada en procesadores modernos.
En este caso, se supone que se realizará cualquier transición hacia atrás y no hacia adelante. El método se utiliza como una "red de seguridad".
2a tatuaje ISIP
Se analiza la tabla del historial de navegación. La tabla contiene:
La tabla se actualiza después de cada transición. El algoritmo cambia la elección de ramificación si el resultado de la condición se desvía dos veces de los resultados anteriores. El uso de los bits menos significativos de la dirección de la instrucción permite predecir varias instrucciones antes de que se decodifiquen.
Para el primer nivel se realiza el histórico de las últimas k ramas, para el segundo nivel k apunta a la tabla template.
Cada rama condicional en un ámbito tiene su propio historial de ramas. Los patrones de transición pueden ser compartidos o específicos.
La predicción de bifurcación global no almacena un historial separado para cada transición, sino que utiliza el historial general. Cualquier patrón en las transiciones afecta este historial, pero los registros irrelevantes pueden contaminar el historial.
Un predictor híbrido puede elegir los resultados de los predictores más exitosos en función del historial o utilizar la función de mayoría de un número impar de predictores.
El predictor de bucles puede utilizar el contador de bucles para contar el número de saltos hasta el comienzo del bucle. Este predictor se puede utilizar en un predictor híbrido.
Una rama indirecta puede tener más de dos ramas. Los últimos procesadores tienen la capacidad de seleccionar más de dos condiciones mediante un predictor adaptativo de dos niveles. Los procesadores sin compatibilidad con la predicción de bifurcación indirecta pueden usar la predicción estática o tomar el valor anterior.
Tecnologías de procesadores digitales | |||||||||
---|---|---|---|---|---|---|---|---|---|
Arquitectura | |||||||||
Set de instrucciones arquitectura | |||||||||
palabra maquina | |||||||||
Paralelismo |
| ||||||||
Implementaciones | |||||||||
Componentes | |||||||||
Administración de energía |