Ejecución fuera de orden
La ejecución fuera de orden permite que un procesador ejecute instrucciones tan pronto como sus operandos estén listos, en lugar de hacerlo estrictamente en el orden del programa, utilizando el renombramiento de registros y el almacenamiento en búfer para exponer el paralelismo mientras se siguen produciendo resultados en orden.
Definition
La ejecución fuera de orden es una técnica microarquitectónica en la que un procesador reordena dinámicamente la ejecución de instrucciones para ejecutar instrucciones independientes siempre que sus operandos estén disponibles, mientras utiliza el almacenamiento en búfer y el renombramiento para preservar la apariencia de una finalización secuencial y en orden.
Scope
Este tema cubre la planificación dinámica: estaciones de reserva, renombramiento de registros para eliminar dependencias falsas, el búfer de reordenamiento que impone la confirmación en orden y la recuperación de la ejecución especulativa. Se basa directamente en el algoritmo de Tomasulo. Excluye la predicción de la dirección de las bifurcaciones (predicción de bifurcaciones) y la noción más amplia de cuánto paralelismo existe (paralelismo a nivel de instrucción), centrándose en la propia maquinaria de reordenamiento.
Core questions
- ¿Cómo puede un procesador ejecutar instrucciones fuera del orden del programa y aun así producir resultados correctos y en orden?
- ¿Cómo elimina el renombramiento de registros las dependencias de escritura después de lectura y escritura después de escritura?
- ¿Qué aportan las estaciones de reserva y el búfer de reordenamiento?
- ¿Cómo se recuperan las excepciones y las predicciones erróneas con precisión en un núcleo fuera de orden?
Key concepts
- planificación dinámica
- estaciones de reserva
- renombramiento de registros
- bus de datos común
- búfer de reordenamiento
- confirmación en orden
- excepciones precisas
- recuperación de ejecución especulativa
Key theories
- Algoritmo de Tomasulo
- El esquema de Tomasulo utiliza estaciones de reserva y un bus de datos común para renombrar registros y enviar instrucciones a unidades funcionales a medida que sus operandos están disponibles, permitiendo la ejecución fuera de orden que respeta solo las verdaderas dependencias de datos.
- Excepciones precisas mediante confirmación en orden
- Un búfer de reordenamiento almacena los resultados de las instrucciones fuera de orden y los confirma en el orden del programa, de modo que las excepciones y las predicciones erróneas puedan manejarse con precisión como si la ejecución hubiera sido estrictamente secuencial.
Mechanisms
Las instrucciones decodificadas se renombran a registros físicos y se colocan en estaciones de reserva o en una cola de emisión, donde esperan los operandos transmitidos en un bus de resultados. Cuando están listas, se ejecutan en unidades funcionales disponibles en cualquier orden. Un búfer de reordenamiento rastrea el orden original del programa y confirma los resultados secuencialmente, descartando los resultados especulativos en caso de una predicción errónea o una excepción para que el estado arquitectónico sea siempre preciso.
Clinical relevance
La ejecución fuera de orden es el motor principal de las CPU de alto rendimiento, ocultando las latencias de memoria y ejecución al encontrar trabajo independiente que realizar. También tiene implicaciones de seguridad: debido a que el trabajo especulativo y fuera de orden puede acceder transitoriamente a los datos antes de ser descartado, permitió las clases de ataques de canal lateral microarquitectónicos Spectre y Meltdown.
History
Tomasulo introdujo la planificación dinámica en el IBM System/360 Modelo 91 en 1967. La combinación con el búfer de reordenamiento para excepciones precisas, desarrollada en la década de 1980, hizo que la ejecución fuera de orden fuera práctica para los procesadores de propósito general, y se convirtió en estándar en los diseños de alto rendimiento a partir de mediados de la década de 1990.
Debates
- Rendimiento versus complejidad, potencia y seguridad
- La ejecución fuera de orden ofrece un sólido rendimiento de un solo hilo, pero a un costo significativo en complejidad de hardware y potencia, y su especulación ha demostrado ser explotable; esto alimenta el debate sobre cuán agresivamente especular frente a favorecer diseños más simples, eficientes o seguros.
Key figures
- Robert Tomasulo
- Yale Patt
- James E. Smith
- John L. Hennessy
Related topics
Seminal works
- tomasulo1967
- hennessy2019
Frequently asked questions
- ¿Si las instrucciones se ejecutan fuera de orden, cómo sigue siendo correcto el programa?
- El procesador solo reordena la ejecución, no los resultados. El renombramiento de registros asegura que respeta las verdaderas dependencias de datos, y un búfer de reordenamiento confirma los resultados en el orden original del programa, por lo que el estado arquitectónico visible es exactamente lo que produciría la ejecución secuencial.
- ¿Qué es el renombramiento de registros?
- El renombramiento de registros mapea los registros arquitectónicos nombrados en las instrucciones a un conjunto más grande de registros físicos. Esto elimina las dependencias falsas (de nombre) que surgen del reuso de nombres de registros, permitiendo que más instrucciones independientes se ejecuten en paralelo sin conflictos por el almacenamiento de registros.