Reordenar el búfer - Enciclopedia

Un buffer de reordenación (ROB) es una unidad de hardware utilizada en una extensión del algoritmo de Tomasulo para soportar la ejecución de instruccionesFuera de orden y especulativa. La extensión fuerza a que las instrucciones se comprometan en orden.

El buffer es un buffer circular (para proporcionar una cola de orden de instrucciones FIFO) implementado como un array/vecctor (lo que permite registrar los resultados contra instrucciones a medida que se completanFuera de orden).

Hay tres etapas en el algoritmo de Tomasulo: "Emitir", "Ejecutar", "Escribir Resultado". En una extensión del algoritmo, hay una etapa adicional de "Compromiso". Durante la etapa de Compromiso, los resultados de las instrucciones se almacenan en un registro o memoria. La etapa "Escribir Resultado" se modifica para放置 resultados en el buffer de reordenación. Cada instrucción se etiqueta en la estación de reserva con su índice en el ROB para este propósito.

El contenido del buffer se utiliza para las dependencias de datos de otras instrucciones programadas en el buffer. La cabeza del buffer se comprometerá una vez que su resultado sea válido. Sus dependencias ya habrán sido calculadas y comprometidas, ya que deben estar antes de la instrucción en el buffer, aunque no necesariamente adyacentes. Las dependencias de datos entre instrucciones suelen ralentizar el pipeline mientras una instrucción espera sus valores dependientes. El ROB permite que el pipeline continúe procesando otras instrucciones mientras asegura que los resultados se comprometan en orden para evitar riesgos de datos como la lectura antes de la escritura (RAW), la escritura antes de la lectura (WAR) y la escritura antes de la escritura (WAW).

Hay campos adicionales en cada entrada del buffer para soportar el algoritmo extendido:

Tipo de instrucción (salto, almacenamiento en memoria, almacenamiento en registro)
Destino (dirección de memoria o número de registro)
Resultado (valor que va al destino o indicación de un salto (in)exitoso)
Validez (¿ya existe el resultado?)
Las consecuencias del buffer de reordenación incluyen excepciones precisas y un control de rollback fácil de la predicción incorrecta de la dirección de destino (rama o salto). Cuando la predicción de salto no es correcta o se encuentra una excepción no recuperable en el flujo de instrucciones, el ROB se limpia de todas las instrucciones (configurando la cola circular de cola en la cabeza) y las estaciones de reserva se reinicializan.


Referencias


Enlaces externos
Speculación basada en hardware - Prof. Dr. Ben H. Juurlink
Buffer de reordenación