Direct Instruction Wakeup for Out-Of-Order Processors En los procesadores con ejecución desordenada de instrucciones, la lógica de activación (wake-up en inglés) tiene problemas de escalabilidad y de consumo eléctrico cuando aumentamos el tamaño de la cola de instrucciones. Ocurre esto tanto procesadores basados en colas de instrucciones con memoria direccionable por contenido (CAM, del inglés Content Adress Memory) como en aquellos que utilizan una matriz de dependencias. Otro tipo de solución para la activación de instrucciones es el uso de punteros. Se almacena un puntero (o varios) para cada instrucción, que apunta a la instrucción o instrucciones (varios punteros) que dependen de la primera. De esta forma el procesador puede despertar directamente las instrucciones dependientes de una instrucción cuando finaliza. El problema de esta solución es la limitación de sucesores que podemos almacenar, determinada por el número de punteros, y la cancelación de instrucciones por error en la predicción de saltos, que hace necesaria la existencia de un procedimiento de limpieza de punteros de las instrucciones válidas que apuntaban a las canceladas. La solución propuesta en el artículo analizado se basa en el uso punteros combinados con una pequeña matriz de dependencias. Como se afirma en el artículo, en la mayoría de los casos las instrucciones en ejecución tienen una o dos instrucciones dependientes. Suponiendo la estructura más simple en la que consideramos únicamente las instrucciones con único sucesor, en una estructura llamada Tabla de Correspondencia (MT, de Mapping Table) se guarda un puntero a la cola de instrucciones que indica qué instrucción es dependiente o sucesora. Para las instrucciones con más de un sucesor, se utiliza una matriz de dependencias a la que se llama Tabla de Activación Múltiple (MWT, de Multiple Wake-Up Table), en la que se guardan las dependencias adicionales. En la Tabla de Correspondencia se guarda un puntero adicional que indica qué fila de la matriz guarda la información de dependencias. Cada bit en una fila, indica qué instrucciones de la cola son sucesoras de la guardada en la Tabla de Correspondencia. Esta estructura permite usar para la cola de instrucciones un memoria RAM en lugar de una CAM.
En la Tabla de Correspondencia, además de los dos punteros mencionados (llamados C-Pointer y M-Pointer, para el sucesor y la entrada en la matriz respectivamente) se guarda un campo de estado (Status) con los siguientes valores:
-
Status Significado 00 Instrucción sin dependencias. 01 Una dependiente. 10 Más de una dependiente. 11 Completada.
En la cola de instrucciones disponemos de un contador para cada instrucción que nos permite conocer cuál es su estado, es decir: cuántos de sus operandos están disponibles. Cuando una instrucción es introducida en la cola de instrucciones, se actualiza tanto la información de ésta como la necesaria en la Tabla de Correspondencias (El campo Status es puesto a “00”). Cuando la primera instrucción dependiente de la anterior llega, se actualiza el estado en la Tabla de Correspondencias de la anterior, identificada por su registro de destino, al valor “01” y se introduce en C-Pointer la posición en la cola que ocupa la nueva instrucción. Si llega una instrucción dependiente de la primera adicional, se actualiza el estado a “10”, se ocupa y configura una fila en la MWT y se guarda su posición en el M-Pointer. Cuando una instrucción es procesada, se utilizan los punteros para actualizar la información del contador de la/s entrada/s correspondiente de la cola de instrucciones que se mencionó más arriba. Cuando ocurre una predicción errónea de salto, las instrucciones posteriores a ese salto en la bifurcación tomada, han de ser eliminadas. Eso implica que hay que actualizar los punteros y el estado de la MT, así como marcar como libres las entradas de la MWT que ya no sean válidas y actualizar los contadores de la cola de instrucciones. El objetivo finalmente conseguido con esta propuesta es la reducción del consumo eléctrico frente a soluciones del tipo CAM o Matriz de Dependencias.
Resumen del artículo Direct Instruction Wakeup for Out-of-Order Processors de Marco A. Ramírez (U.P.C., Barcelona Spain; National Polytechnic Institute, México), Adrian Cristal (U.P.C., Barcelona Spain), Alexander V. Veidenbaum (University of California Irvine, USA), Luis Villa (Mexican Petroleum Institute, Mexico) y Mateo Valero (U.P.C., Barcelona Spain).