La programación de seguimiento es una técnica de optimización desarrollada por Josh Fisher que se utiliza en compiladores de programas informáticos . [1]
Un compilador puede, a menudo, reorganizar las instrucciones de máquina generadas para una ejecución más rápida, mejorar el rendimiento del programa. Aumenta el paralelismo a nivel de instrucción (ILP ) a lo largo de la ruta de ejecución importante al predecir estáticamente la ruta de ejecución frecuente. La programación de seguimiento es una de las muchas técnicas conocidas para hacerlo. [2]
Un rastro es una secuencia de instrucciones, que incluye ramificaciones pero no bucles, que se ejecuta para algunos datos de entrada. La programación de rastros utiliza un método básico de programación de bloques para programar las instrucciones en cada rastro completo, comenzando con el rastro con la frecuencia más alta. Luego agrega un código de compensación en la entrada y la salida de cada rastro para compensar cualquier efecto que pueda haber tenido la ejecución fuera de orden .
Esto puede generar grandes aumentos en el tamaño del código y un rendimiento deficiente o errático si el comportamiento del programa varía significativamente con la entrada.
La programación de seguimiento se desarrolló originalmente para máquinas de palabras de instrucción muy largas ( VLIW , por sus siglas en inglés) y es una forma de movimiento de código global. Funciona convirtiendo un bucle en una secuencia de código de línea recta larga mediante el desenrollado de bucles y la predicción de ramificaciones estáticas . Este proceso separa el código "poco probable" y agrega controladores para las salidas del seguimiento. El objetivo es ejecutar el caso más común como un conjunto secuencial de instrucciones sin ramificaciones.
Programación de seguimiento.