De Wikipedia, la enciclopedia libre
Ir a navegaciónSaltar a buscar

Un registro de procesador es una ubicación de acceso rápido disponible para el procesador de una computadora . Los registros suelen constar 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 la computadora , los registros generalmente se direccionan 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 .

Casi todas las computadoras, ya sea con arquitectura de carga / almacenamiento o no, cargan datos de una memoria más grande en registros donde se utilizan para operaciones aritméticas y se manipulan o prueban mediante instrucciones de la máquina . Los datos manipulados a menudo se almacenan nuevamente en la memoria principal, ya sea por la misma instrucción o por una posterior. Los procesadores modernos utilizan RAM estática o dinámica como memoria principal, y generalmente se accede a esta última 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 memoria y proporcionan la forma más rápida de acceder a los datos. El término normalmente se refiere solo al grupo de registros que se codifican 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 registros , lo que permite la ejecución paralela y especulativa . El diseño moderno x86 adquirió estas técnicas alrededor de 1995 con los lanzamientos de Pentium Pro , Cyrix 6x86 , Nx586 y AMD K5 .

Cuando un programa de computadora accede a los mismos datos repetidamente, esto se llama localidad de referencia . Mantener los valores de uso frecuente en los 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 se miden normalmente por la cantidad de bits que pueden contener, por ejemplo, un " registro de 8 bits ", un " registro de 32 bits " o 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 otras más pequeñas (32 bits en cuatro de 8 bits, por ejemplo) en las que se pueden cargar múltiples datos (vector o matriz de datos unidimensional ). y operado al mismo tiempo. Por lo general, se implementa agregando registros adicionales que mapean su memoria en una más grande. Los procesadores que tienen la capacidad de ejecutar una sola instrucción en varios datos se denominan procesadores vectoriales .

Tipos

Un procesador suele contener varios tipos de registros, que pueden clasificarse según su contenido o las instrucciones que operan sobre ellos:

  • Los registros accesibles para el usuario pueden leerse o escribirse mediante las instrucciones de la máquina. La división más común de registros accesibles por el usuario es en registros de datos y registros de direcciones.
    • Registro de datos spuede contenervalores de datos numéricos, tales comonúmero enteroy, en algunas arquitecturas, valores de coma flotante, así como lospersonajes, pequeñasmatrices de bitsy otros datos. En algunas CPU más antiguas y de gama baja, un registro de datos especial, conocido comoacumulador, se usa implícitamente para muchas operaciones.
    • Registro de direcciones sde retencióndireccionesy son utilizados por las instrucciones que acceden indirectamentememoria primaria.
      • Algunos procesadores contienen registros que solo pueden usarse para contener una dirección o solo para contener valores numéricos (en algunos casos se usan como un registro de índice cuyo valor se agrega como un desplazamiento de alguna dirección); otros permiten que los registros contengan cualquier tipo de cantidad. Existe una amplia variedad de posibles modos de direccionamiento , que se utilizan para especificar la dirección efectiva de un operando.
      • El puntero de pila se utiliza para administrar la pila en tiempo de ejecución . En raras ocasiones, otras pilas de datos se direccionan mediante registros de direcciones dedicados, consulte la máquina de pila .
    • Los registros de propósito general ( GPR ) pueden almacenar tanto datos como direcciones, es decir, son registros combinados de datos / direcciones; en algunas arquitecturas, el archivo de registro está unificado para que los GPR también puedan almacenar números de punto flotante .
    • Los registros de estado contienenvalores de verdad quese utilizan a menudo para determinar si alguna instrucción debe o no ejecutarse.
    • De punto flotante registro s(FPRs) tienda denúmeros de punto flotanteen muchas arquitecturas.
    • Los registros constantes contienen valores de solo lectura como cero, uno opi.
    • Los registros vectoriales contienen datos parael procesamiento vectorialrealizado porinstruccionesSIMD(instrucción única, datos múltiples).
    • Los registros de propósito especial ( SPR ) mantienen el estado del programa; generalmente incluyen el contador de programa , también llamado puntero de instrucción, y el registro de estado ; el contador de programa y el registro de estado pueden combinarse en unregistro de palabra de estado de programa (PSW). El puntero de pila antes mencionado a veces también se incluye en este grupo. Los microprocesadores integrados también pueden tener registros correspondientes a elementos de hardware especializados.
    • En algunas arquitecturas, los registros específicos del modelo (también llamados registros específicos de la máquina ) almacenan datos y configuraciones relacionadas con el propio procesador. Debido a que sus significados están asociados al diseño de un procesador específico, no se puede esperar que sigan siendo estándar entre generaciones de procesadores.
    • Registros de rango de tipo de memoria (MTRRs)
  • Registros internos : registros a los que no se puede acceder mediante instrucciones, que se utilizan internamente para las operaciones del procesador.
    • Registro de instrucciones , que contiene la instrucción que se está ejecutando actualmente.
    • Registros relacionados con la obtención de información de la RAM , una colección de registros de almacenamiento ubicados en chips separados de la CPU:
      • Registro de búfer de memoria (MBR), también conocido comoregistro de datos de memoria(MDR)
      • Registro de direcciones de memoria (MAR)
  • Registro arquitectónico- Los registros visibles para el software definido por una arquitectura pueden no corresponder al hardware físico, si el hardware subyacente está cambiando el nombre de los registros .

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 de una manera que está programado para devolver siempre cero cuando se lee (principalmente para simplificar los modos de indexación), y no puede ser sobrescrito. En Alpha, esto también se hace para el archivo de registro de punto flotante. Como resultado de esto, los archivos de registro comúnmente se citan como si tuvieran un registro más que cuántos de ellos son realmente utilizables; por ejemplo, se cotizan 32 registros cuando solo 31 de ellos se ajustan a la definición anterior de registro.

Ejemplos

La siguiente tabla muestra el número 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 de números enteros, aunque hay un número limitado de instrucciones que pueden usarse para operar en su contenido. Se aplican advertencias similares a la mayoría de las arquitecturas.

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

Uso

El número de registros disponibles en un procesador y las operaciones que se pueden realizar utilizando esos registros tiene un impacto significativo en la eficiencia del código generado al optimizar 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

  • Caché de la CPU
  • Asignación de registros
  • Registrar archivo
  • Registro de turnos

Referencias

  1. ^ "Manual de referencia de hardware del sistema informático Cray-1" (PDF) . Investigación de Cray . Noviembre de 1977.
  2. ^ "Manual de usuario del conjunto de microcomputadoras MCS-4" (PDF) . Intel. Febrero de 1973.
  3. ^ "Manual de uso de la unidad central de procesador paralelo de 8 bits 8008" (PDF) . Intel. Noviembre de 1973 . Consultado el 23 de enero de 2014 .
  4. ^ "Manual del usuario de sistemas de microordenador Intel 8080" (PDF) . Intel. Septiembre de 1975 . Consultado el 23 de enero de 2014 .
  5. ^ "Manual de referencia del programador 80286 y 80287" (PDF) . Intel. 1987.
  6. ^ a b "Manuales para desarrolladores de software de arquitecturas Intel 64 e IA-32" . Intel. 4 de diciembre de 2019.
  7. ^ "Volumen 1 del manual del programador de la arquitectura AMD64: Programación de aplicaciones" (PDF) . AMD . Octubre 2013.
  8. ^ "Extensiones del conjunto de instrucciones de la arquitectura Intel y referencia de programación de funciones futuras" (PDF) . Intel . Enero de 2018.
  9. ^ "Manual de referencia de la arquitectura del conjunto de instrucciones del coprocesador Intel Xeon Phi" (PDF) . Intel. 7 de septiembre de 2012.
  10. ^ Guía de programación de F8 (PDF) . División de microcomputadoras Fairchild MOS. 1977.
  11. ^ "Guía de referencia del procesador Nios II Classic" (PDF) . Altera . 2 de abril de 2015.
  12. ^ "Guía de referencia del procesador Nios II Gen2" (PDF) . Altera. 2 de abril de 2015.
  13. ^ "Manual de referencia de programación de M6800" (PDF) . Motorola . Noviembre de 1976 . Consultado el 18 de mayo de 2015 .
  14. ^ "Manual de referencia del programador de la familia Motorola M68000" (PDF) . Motorola. 1992 . Consultado el 13 de junio de 2015 .
  15. ^ "Guía de programación CUDA C" . Nvidia. 2019 . Consultado el 9 de enero de 2020 .
  16. ^ Jia, Zhe; Maggioni, Marco; Staiger, Benjamin; Scarpazza, Daniele P. (2018). "Disección de la arquitectura de GPU NVIDIA Volta a través de Microbenchmarking". arXiv : 1804.06826 [ cs.DC ].
  17. ^ "Arquitectura de sistemas empresariales IBM / 370 y System / 370 - Operaciones vectoriales" (PDF) . IBM. SA22-7125-3 . Consultado el 11 de mayo de 2020 .
  18. ^ "Microprocesador IBM S / 390 G5" (PDF) .
  19. ^ "Página de inicio de MMIX" .
  20. ^ "Libro de datos de la serie 32000" (PDF) . Semiconductor Nacional .
  21. ^ "Arquitectura de conjunto de instrucciones de unidad de procesador sinérgico versión 1.2" (PDF) . IBM. 27 de enero de 2007.
  22. ^ "Aprendizaje de la asamblea 65816" . Wiki de desarrollo de Super Famicom . Consultado el 14 de noviembre de 2019 .
  23. ^ "Estándar de llamada de procedimiento para la arquitectura ARM" (PDF) . ARM Holdings . 30 de noviembre de 2013 . Consultado el 27 de mayo de 2013 .
  24. ^ "2.6.2. El conjunto de registros de estado del pulgar" . ARM7TDMI Manual de referencia técnica . ARM Holdings .
  25. ^ "Estándar de llamada de procedimiento para la arquitectura ARM de 64 bits" (PDF) . ARM Holdings. 22 de mayo de 2013 . Consultado el 27 de mayo de 2013 .
  26. ^ "Referencia de la arquitectura de la epifanía" (PDF) .