stringtranslate.com

Registro del procesador

Una descripción del nivel de transferencia de registro (RTL) de un registro de 8 bits con implementación detallada, que muestra cómo se pueden almacenar 8 bits de datos.

Un registro de procesador es una ubicación de rápido acceso disponible para el procesador de una computadora . [1] Los registros generalmente constan de una pequeña cantidad de almacenamiento rápido , aunque algunos registros tienen funciones de hardware específicas y pueden ser de solo lectura o de solo escritura. En la arquitectura de computadoras , los registros generalmente se abordan mediante mecanismos distintos a la memoria principal , pero en algunos casos se les puede asignar una dirección de memoria, por ejemplo, DEC PDP-10 , ICT 1900 . [2]

Casi todas las computadoras, ya sea con arquitectura de carga/almacenamiento o no, cargan elementos de datos desde una memoria más grande en registros donde se usan para operaciones aritméticas , operaciones bit a bit y otras operaciones, y son manipulados o probados mediante instrucciones de máquina . Los elementos manipulados a menudo se almacenan en la memoria principal, ya sea mediante la misma instrucción o mediante una posterior. Los procesadores modernos utilizan RAM estática o dinámica como memoria principal, a la que normalmente se accede a través de uno o más niveles de caché .

Los registros del procesador normalmente se encuentran en la parte superior de la jerarquía de la memoria y proporcionan la forma más rápida de acceder a los datos. El término normalmente se refiere sólo al grupo de registros que están codificados directamente como parte de una instrucción, según lo definido por el conjunto de instrucciones . Sin embargo, las CPU modernas de alto rendimiento a menudo tienen duplicados de estos "registros arquitectónicos" para mejorar el rendimiento mediante el cambio de nombre de los registros , lo que permite la ejecución paralela y especulativa . El diseño x86 moderno adquirió estas técnicas alrededor de 1995 con los lanzamientos de Pentium Pro , Cyrix 6x86 , Nx586 y AMD K5 .

Cuando un programa informático accede a los mismos datos repetidamente, a esto se le llama localidad de referencia . Mantener valores utilizados con frecuencia en registros puede ser fundamental para el rendimiento de un programa. La asignación de registros la realiza un compilador en la fase de generación de código o manualmente un programador en lenguaje ensamblador .

Tamaño

Los registros normalmente se miden por la cantidad de bits que pueden contener, por ejemplo, un " registro de 8 bits ", un " registro de 32 bits ", un "registro de 64 bits " o incluso más. En algunos conjuntos de instrucciones , los registros pueden operar en varios modos, dividiendo su memoria de almacenamiento en partes más pequeñas (de 32 bits en cuatro de 8 bits, por ejemplo) a las que se agregan múltiples datos (vectoriales o una matriz unidimensional de datos). Se puede cargar y operar al mismo tiempo. Normalmente se implementa agregando registros adicionales que asignan su memoria a un registro más grande. Los procesadores que tienen la capacidad de ejecutar instrucciones únicas sobre múltiples datos se denominan procesadores vectoriales .

Tipos

Un procesador suele contener varios tipos de registros, que se pueden clasificar según los tipos de valores que pueden almacenar o las instrucciones que operan sobre ellos:

Los registros de hardware son similares, pero ocurren fuera de las CPU.

En algunas arquitecturas (como SPARC y MIPS ), el primer o último registro en el archivo de registro de enteros es un pseudo-registro en el sentido de que está programado para devolver siempre cero cuando se lee (principalmente para simplificar los modos de indexación) y no se puede sobrescribir. . En Alpha , esto también se hace para el archivo de registro de punto flotante. Como resultado de esto, se suele decir que los archivos de registro tienen un registro más que el número de ellos que realmente se pueden utilizar; por ejemplo, se citan 32 registros cuando sólo 31 de ellos encajan dentro de la definición anterior de registro.

Ejemplos

La siguiente tabla muestra la cantidad de registros en varias arquitecturas de CPU convencionales. Tenga en cuenta que en los procesadores compatibles con x86 , el puntero de pila ( ESP) se cuenta como un registro entero, aunque hay un número limitado de instrucciones que pueden usarse para operar con su contenido. Se aplican advertencias similares a la mayoría de las arquitecturas.

Aunque todas las arquitecturas que se enumeran a continuación son diferentes, casi todas tienen una disposición básica conocida como arquitectura von Neumann , propuesta por primera vez por el matemático húngaro-estadounidense John von Neumann . También es digno de mención que la cantidad de registros en las GPU es mucho mayor que en las CPU.

Uso

La cantidad de registros disponibles en un procesador y las operaciones que se pueden realizar usando esos registros tienen un impacto significativo en la eficiencia del código generado mediante la optimización de los compiladores . El número de Strahler de un árbol de expresión proporciona el número mínimo de registros necesarios para evaluar ese árbol de expresión.

Ver también

Referencias

  1. ^ "¿Qué es un registro de procesador?". Educativo: Cursos interactivos para desarrolladores de software . Consultado el 12 de agosto de 2022 .
  2. ^ "Un estudio de técnicas para diseñar y gestionar archivos de registro de CPU".
  3. ^ "Manual de referencia del hardware del sistema informático Cray-1" (PDF) . Investigación de Cray . Noviembre de 1977. Archivado (PDF) desde el original el 7 de noviembre de 2021 . Consultado el 23 de diciembre de 2022 .
  4. ^ "Manual de usuario del microordenador MCS-4" (PDF) . Intel. Febrero de 1973.
  5. ^ "Manual de usuario de la unidad de procesador central paralelo 8008 de 8 bits" (PDF) . Intel. Noviembre de 1973 . Consultado el 23 de enero de 2014 .
  6. ^ "Manual del usuario de los sistemas de microcomputadora Intel 8080" (PDF) . Intel. Septiembre de 1975 . Consultado el 23 de enero de 2014 .
  7. ^ "Manual de referencia del programador 80286 y 80287" (PDF) . Intel. 1987.
  8. ^ ab "Manuales para desarrolladores de software de arquitecturas Intel 64 e IA-32". Intel. 4 de diciembre de 2019.
  9. ^ "Manual del programador de arquitectura AMD64 Volumen 1: Programación de aplicaciones" (PDF) . AMD . Octubre 2013.
  10. ^ "Referencia de programación de funciones futuras y extensiones del conjunto de instrucciones de la arquitectura Intel" (PDF) . Intel . Enero de 2018.
  11. ^ Guía de programación F8 (PDF) . División de microcomputadoras Fairchild MOS. 1977.
  12. ^ "Guía de referencia del procesador Nios II Classic" (PDF) . Altera . 2 de abril de 2015.
  13. ^ "Guía de referencia del procesador Nios II Gen2" (PDF) . Altera. 2 de abril de 2015.
  14. ^ "Manual de referencia de programación del M6800" (PDF) . Motorola . Noviembre de 1976 . Consultado el 18 de mayo de 2015 .
  15. ^ "Manual de referencia del programador familiar Motorola M68000" (PDF) . Motorola. 1992 . Consultado el 13 de junio de 2015 .
  16. ^ "Guía de programación CUDA C". NVIDIA. 2019 . Consultado el 9 de enero de 2020 .
  17. ^ Jia, Zhe; Maggioni, Marco; Staiger, Benjamín; Scarpazza, Daniele P. (2018). "Disección de la arquitectura de la GPU NVIDIA Volta mediante microbenchmarking". arXiv : 1804.06826 [cs.DC].
  18. ^ "IBM Enterprise Systems Architecture/370 y System/370 - Operaciones vectoriales" (PDF) . IBM. SA22-7125-3 . Consultado el 11 de mayo de 2020 .
  19. ^ "Microprocesador IBM S/390 G5" (PDF) .
  20. ^ "Página de inicio de MMIX".
  21. ^ "Libro de datos de la serie 32000" (PDF) . Semiconductor Nacional .
  22. ^ "Arquitectura del conjunto de instrucciones de la unidad de procesador sinérgico versión 1.2" (PDF) . IBM. 27 de enero de 2007.
  23. ^ "Asamblea de aprendizaje 65816". Wiki de desarrollo de Super Famicom . Consultado el 14 de noviembre de 2019 .
  24. ^ "Estándar de llamada de procedimiento para la arquitectura ARM" (PDF) . Participaciones ARM . 30 de noviembre de 2013 . Consultado el 27 de mayo de 2013 .
  25. ^ "2.6.2. Conjunto de registros de estado del pulgar". Manual de referencia técnica ARM7TDMI . Participaciones ARM .
  26. ^ "Estándar de llamada de procedimiento para la arquitectura ARM de 64 bits" (PDF) . Participaciones ARM. 22 de mayo de 2013 . Consultado el 27 de mayo de 2013 .
  27. ^ "Referencia de la arquitectura de la Epifanía" (PDF) .