Renombrado de Registros y Especulación Dinámica

Register Renaming and Dynamic Speculation: an Alternative Approach

El renombrado de registros es una de las técnicas utilizadas para aumentar el paralelismo de instrucciones. Consiste básicamente en tener un número de registro físicos mayor que el expuesto por la arquitectura, llamados normalmente registros lógicos, de usuario o públicos . De esta forma, y siguiendo determinadas reglas, un mismo registro lógico puede ser renombrado a como distintos registros físicos en distintas instrucciones. Veámoslo con un ejemplo: Continue reading “Renombrado de Registros y Especulación Dinámica”

Planificación de Instrucciones en Fallo de Caché

MPS: Miss-Path Schedulling for Multiple-Issue Processors

En este artículo los autores proponen trasladar el hardware de planificación de instrucciones desde la ruta del procesador hacia la ruta entre la memoria principal y la caché de instrucciones. La planificación de instrucciones se hace cuando se produce un fallo de caché y es necesario traer desde la memoria principal un nuevo bloque. Este nuevo bloque se planifica y se introduce en la cache organizando las instrucciones en grupos sin dependencias. Estos grupos de instrucciones pueden ser enviados en paralelo a las distintas unidades funcionales del procesador, en cierta forma como si se tratara de una instrucción VLIW (Very Long Instruction Word). El algoritmo utilizado para la construcción dinámica de estas instrucciones tipo VLIW se apoya en dos elementos:
a) Una Tabla de Definición y Uso de Registros: Para cada registro almacena la información del último ciclo (más reciente) en el que fue escrito (definido) y leído (usado). Estos datos reciben respectivamente los nombres de def-time y last-used, y la tabla el de def-table.
b) Una Tabla de Reserva (Reservation Table): Tabla en la que anotamos para cada ciclo que instrucción hace uso de las distintas unidades funcionales del procesador. Continue reading “Planificación de Instrucciones en Fallo de Caché”

Activación directa de instrucciones

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. Continue reading “Activación directa de instrucciones”

La Tabla de Planificación

La tabla de planificación (TP) es una estructura en la que se va almacenando de forma secuencial las instrucciones que van a ser ejecutadas. Tiene el funcionamiento de una cola (FIFO). Para controlar el funcionamiento de la cola se usan dos punteros: uno indica la posición libre (puntero de cola, denominado aquí newp) donde se insertará la próxima instrucción enviada por la fase IS; el segundo puntero (de cabecera, llamado oldp) indica la próxima instrucción que va ser retirada la TP.

Tabla de planificación Continue reading “La Tabla de Planificación”