¿Qué es un Registro?

click fraud protection

Si no está particularmente interesado en las computadoras, se le perdonará que suponga que las únicas formas de memoria en una computadora son el disco duro y la RAM. Aquellos de ustedes que estén interesados ​​en las computadoras probablemente sabrán que este no es el caso, y que el La CPU también tiene un conjunto de cachés que se utilizan para almacenar en caché los datos de la RAM para que la CPU pueda acceder a ellos. más rápido. Todas estas son características anunciadas, principalmente porque la velocidad y/o la capacidad son un punto de venta decente y generalmente afectan los niveles de rendimiento.

Sin embargo, en realidad hay otra capa de memoria. Por mucho que pueda pensar que la caché L1 está lo más cerca posible del núcleo de procesamiento real, hay otra capa más alta en la jerarquía de la memoria. Estos son los registros de la CPU. La razón por la que estos no se anuncian o mencionan realmente es que en realidad no se modifican en absoluto. Técnicamente, podrían serlo, sin embargo, el número y tamaño de los registros es realmente fundamental para la arquitectura. Esto significa que todas las CPU x86-64 tienen la misma cantidad de registros. No se comercializan porque no son un punto de competencia.

¿Qué hace un registro?

Un registro es una ubicación de almacenamiento rápidamente disponible para el procesador. El acceso a un registro es inmediato con latencia cero, mientras que incluso el caché L1 tiene una latencia de aproximadamente 4-5 ciclos en las CPU modernas. Esta inmediatez de acceso sugiere el caso de uso de los registros. Los registros se utilizan para almacenar las instrucciones en las que opera activamente la CPU. También almacenan puntos de datos que se van a procesar. Algunos registros son de propósito general, mientras que otros tienen un propósito muy específico. Un ejemplo de un registro de propósito especial sería el contador de programa, que es donde el procesador rastrea su posición en la secuencia de su programa.

Muchos registros se consideran accesibles para el usuario. Sin embargo, esto no significa que el usuario de una computadora pueda elegir qué valor poner en ellos. Significa que el software en ejecución puede especificar los datos que se cargarán en estos registros. Un número menor de registros son internos, lo que significa que el software no puede abordarlos en absoluto. El registro de instrucciones, que almacena la instrucción que se está ejecutando actualmente, es un ejemplo de un registro interno.

Registro de cambio de nombre

Si bien una arquitectura de CPU solo puede permitir una única configuración de registros, en realidad hay algunos matices en eso. Todas las CPU modernas utilizan el cambio de nombre de registro. Esta es una técnica en la que puede tener más registros físicos y usarlos para precargar datos o almacenar datos relacionados con una instrucción fuera de orden que, de lo contrario, se habrían sobrescrito. Cuando la CPU llega al punto en que necesita los datos en los registros adicionales, simplemente los renombra para que sean direccionables, al mismo tiempo que hace que un registro anteriormente direccionable no sea direccionable.

El proceso de cambio de nombre de registro puede ser muy útil para la ejecución desordenada. Por ejemplo, si una ubicación de memoria está programada para ser leída y luego escrita, y las instrucciones se ejecutaron en ese orden, está bien. Sin embargo, si las instrucciones se reordenan para realizar primero la escritura, la instrucción de lectura obtendrá el valor incorrecto. Para evitar esto, el valor original que se va a leer se almacena en un registro no utilizado que luego se renombra cuando se procesa la instrucción relevante.

Conclusión

Los registros son el nivel más alto en la jerarquía de memoria. Son la única parte directamente direccionable por la CPU y no tienen latencia. Los registros se utilizan para almacenar los datos que la CPU ejecuta activamente. También se utilizan para almacenar otros puntos de datos, como el contador del programa, que realiza un seguimiento de qué instrucción es la siguiente en ejecutarse. Hay un número muy limitado de registros disponibles con la arquitectura x86-64 que tiene 16 registros de uso general y 16 o 32 registros de punto flotante dependiendo de si se admite AVX-512.