Ventana de registro

La versión actual de la página aún no ha sido revisada por colaboradores experimentados y puede diferir significativamente de la versión revisada el 2 de septiembre de 2016; las comprobaciones requieren 5 ediciones .

Ventana de registro  : uno de los métodos para organizar el trabajo con los registros del procesador , que se utiliza para reducir la sobrecarga de trabajo con la pila al llamar a las subrutinas .

Historia

El paradigma de la ventana de registro se desarrolló durante el proyecto de microprocesador RISC en UC Berkeley en 1980-1984.

Principios de funcionamiento

La gran mayoría de los procesadores contienen una cantidad limitada de registros  : celdas de memoria ultrarrápidas que se utilizan para almacenar información de servicio (registros de servicio) y resultados intermedios de la operación del programa (registros de propósito general). En el paradigma tradicional, en el momento en que se llama a la subrutina, el procesador debe guardar su estado actual (el contenido de la mayoría de los registros de servicio y algunos registros de propósito general), transferir el control al comienzo del procedimiento y, una vez completado, restaurar los valores de registro previamente guardados. En la práctica, esto significa la necesidad de escribir decenas o cientos de bytes de información en la RAM con cada llamada a procedimiento.

En el paradigma de la ventana de registro, los registros del procesador de uso general se dividen en registros globales (para almacenar variables globales ) y un archivo de registro , que no es totalmente visible para ningún programa.

Deje que el archivo de registro consista en K registros dispuestos en un círculo. Cada programa tiene acceso solo a los registros L = L 1 + L 2 + L 3 (L < K) que componen la ventana de registro actual. La ventana se divide en tres partes:

Antes de llamar a la subrutina, el programa actual escribe en los registros de salida los valores de los parámetros que deben pasarse a la subrutina. Cuando el control se transfiere a una subrutina, la ventana de registro cambia y los registros de salida del programa activo anterior se convierten en registros de entrada para la subrutina. Antes de devolver el control, la rutina escribe los resultados (valores devueltos) en sus registros de entrada. El programa que lo llamó después del cambio inverso de la ventana de registro tendrá acceso a ellos. [1] [2]

El puntero al comienzo de la ventana de registro actual se almacena en un registro especial CWP (Puntero de ventana actual) y se cambia por hardware. [3]

En el caso de que todos los registros estén involucrados, para llamar a la siguiente subrutina, los valores de los primeros registros deben almacenarse en la RAM (una acción similar a la paginación ).

El modelo clásico asume que el tamaño de la ventana de registro es fijo. Algunas implementaciones (como AMD Am29000 ) usan ventanas de registro de tamaño variable.

Implementaciones

Las ventanas de registro se utilizan en los procesadores SPARC , Elbrus , Intel i960 y AMD Am29000 .

Ventajas y desventajas

La principal ventaja de las ventanas de registro es la falta de trabajo con la pila al llamar a las subrutinas. Además, las ventanas de registro implementan protección de memoria: una subrutina no puede cambiar los valores de la mayoría de los registros del programa que la llamó. Entre las desventajas de este enfoque, se puede notar la presencia de una profundidad máxima de anidamiento de subrutinas, por encima de la cual los costos generales al llamar a las subrutinas aumentan considerablemente. John Hennessy , diseñador jefe de la arquitectura RISC MIPS de la competencia, pensó que el compilador podría hacer un mejor trabajo al encontrar registros libres para pasar parámetros a una subrutina . Realizar este trabajo a nivel de hardware, consideró injustificado.

Notas

  1. Arquitectura del procesador. MIPS , Sparc, ARM y PowerPC
  2. Organización de memoria de registro de CPU Archivado el 1 de marzo de 2016 en las páginas Wiki de Wayback Machine /eSyr
  3. E. A. EREMIN, Stack Copia de archivo con fecha del 20 de enero de 2017 en Wayback Machine , parte 2 Copia de archivo con fecha del 4 de marzo de 2016 en Wayback Machine // Informatics Magazine - Into the World of Informatics # 102 (16 al 31 de enero), No 4/2008 "Windows se puede cambiar por hardware a otros registros usando el registro especial CWP (Current Window Pointer)"