
Un registro de procesador es una ubicación de almacenamiento de acceso rápido disponible para el procesador de una computadora . [ 1 ] Los registros generalmente consisten en una pequeña cantidad de almacenamiento rápido , aunque algunos registros tienen funciones de hardware específicas y pueden ser de solo lectura o solo escritura. En la arquitectura de computadoras , 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, en el DEC PDP-6 / PDP-10 y el ICT 1900. [ 2 ]
Casi todos los ordenadores, independientemente de su arquitectura (carga/almacenamiento o no), cargan datos desde una memoria principal en registros, donde se utilizan para operaciones aritméticas , operaciones bit a bit y otras operaciones, y se manipulan o comprueban mediante instrucciones de máquina . Los datos manipulados suelen almacenarse de nuevo en la memoria principal, ya sea mediante la misma instrucción o mediante una posterior. Los procesadores modernos utilizan memoria de acceso aleatorio (RAM) estática o dinámica como memoria principal, accediéndose esta última generalmente a través de uno o más niveles de caché .
Los registros del procesador suelen estar 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 define 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 incorporó estas técnicas alrededor de 1995 con los lanzamientos de Pentium Pro , Cyrix 6x86 , Nx586 y AMD K5 .
Cuando un programa informático accede repetidamente a los mismos datos, se habla de localidad de referencia . Almacenar valores de uso frecuente en registros puede ser fundamental para el rendimiento del programa. La asignación de registros la realiza un compilador durante la fase de generación de código o, de forma manual, un programador de lenguaje ensamblador .
Tamaño
Los registros se miden normalmente por la cantidad de bits que pueden almacenar; por ejemplo, un registro de 8 bits , 32 bits , 64 bits , 128 bits o 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 (por ejemplo, un registro de 32 bits en cuatro de 8 bits) en las que se pueden cargar y procesar múltiples datos (vectores o matrices unidimensionales ) simultáneamente. Normalmente, esto se implementa añadiendo registros adicionales que mapean su memoria a un registro de mayor capacidad. Los procesadores que tienen la capacidad de ejecutar instrucciones individuales sobre múltiples datos se denominan procesadores SIMD .
Tipos
Un procesador suele contener varios tipos de registros, que pueden clasificarse según los tipos de valores que pueden almacenar o las instrucciones que operan sobre ellos:
- Los registros accesibles por el usuario pueden leerse o escribirse mediante instrucciones de máquina. La división más común de los registros accesibles por el usuario es la que se da entre registros de datos y registros de direcciones.
- Los registros de datos pueden almacenarvalores numéricoscomonúmeros enterosy, en algunas arquitecturas,números de coma flotante, así comocaracteres, pequeñasmatrices de bitsy otros datos.
- En algunos ordenadores antiguos, se utiliza implícitamente un registro de datos especial conocido como acumulador para muchas operaciones. Algunos ejemplos son el IBM 704 , el IBM 709 y sus sucesores, el PDP-1 , el PDP-4 / PDP-7 / PDP-9 / PDP-15 , el PDP-5 / PDP-8 , el HP 2100 y el Intel 8080 .
- Los registros de direcciones almacenandireccionesy son utilizados por instrucciones que acceden indirectamentea la memoria principal.
- Algunos procesadores contienen registros que solo pueden almacenar una dirección o solo valores numéricos (en algunos casos, se utilizan como registro índice cuyo valor se suma como desplazamiento a partir de una dirección); otros permiten que los registros almacenen cualquiera de los dos tipos de cantidad. Existe una amplia variedad de modos de direccionamiento posibles , que se utilizan para especificar la dirección efectiva de un operando.
- Los punteros de pila y de marco se utilizan para gestionar la pila de llamadas . En raras ocasiones, otras pilas de datos se direccionan mediante registros de direcciones dedicados (véase máquina de pila ).
- Registros de uso general (Los registros GPR pueden almacenar tanto datos como direcciones, es decir, son registros combinados de datos y direcciones; en algunas arquitecturas, elarchivo de registrosestáunificadopara que los GPR también puedan almacenar números de punto flotante.
- Los registros de punto flotante (FPR) almacenan números de punto flotante en muchas arquitecturas.
- Los registros constantes almacenan valores de solo lectura, como cero, uno opi.
- Los registros vectoriales almacenan datos parael procesamiento vectorialrealizado porSIMD(Instrucción Única, Datos Múltiples).
- Los registros de estado contienenvalores de verdadque se utilizan a menudo para determinar si una instrucción debe o no ejecutarse.
- Los registros de propósito especial ( SPR ) almacenan algunos elementos del 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 un registro de palabra de estado del programa (PSW). El puntero de pila mencionado anteriormente también se incluye a veces en este grupo. Los microprocesadores integrados, como los microcontroladores , también pueden tener registros de funciones especiales que corresponden a elementos de hardware especializados.
- Los registros de control se utilizan para establecer el comportamiento de los componentes del sistema, como laCPU.
- Los registros específicos del modelo (también llamadosregistros específicos de la máquina) almacenan datos y configuraciones relacionados con el procesador. Dado que su significado está ligado al diseño de un procesador específico, no se espera que se mantengan estándar entre las distintas generaciones de procesadores.
- Registros de rango de tipo de memoria (MTRR)
- Los registros de datos pueden almacenarvalores numéricoscomonúmeros enterosy, en algunas arquitecturas,números de coma flotante, así comocaracteres, pequeñasmatrices de bitsy otros datos.
- Los registros internos no son accesibles mediante instrucciones y se utilizan internamente para las operaciones del procesador.
- El registro de instrucciones almacena la instrucción que se está ejecutando en ese momento.
- Registros relacionados con la obtención de información de la RAM , un conjunto 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)
- Registros arquitectónicosLos registros son visibles para el software y están definidos por una arquitectura. Es posible que no se correspondan con el hardware físico si el hardware subyacente realiza un cambio de nombre de los registros .
Los registros de hardware son similares, pero se encuentran fuera de las CPU.
En algunas arquitecturas (como SPARC y MIPS ), el primer o último registro del banco de registros de enteros es un pseudoregistro, ya que está configurado para devolver siempre cero al leerse (principalmente para simplificar los modos de indexación) y no se puede sobrescribir. En Alpha , esto también se aplica al banco de registros de punto flotante. Como resultado, es común que se indique que los bancos de registros tienen un registro más de los que realmente son utilizables; por ejemplo, se indican 32 registros cuando solo 31 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. Si bien todas las arquitecturas que se enumeran a continuación son diferentes, casi todas se basan en una disposición conocida como arquitectura von Neumann , propuesta por primera vez por el matemático húngaro-estadounidense John von Neumann . Cabe destacar también que el número 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 con ellos influyen significativamente en la eficiencia del código generado por los compiladores optimizadores . El número de Strahler de un árbol de expresiones indica el número mínimo de registros necesarios para evaluar dicho árbol.
Véase también
Referencias
- ↑ "¿Qué es un registro de procesador?" . Educativo: Cursos interactivos para desarrolladores de software . Consultado el 12 de agosto de 2022 .
- ↑ "Un estudio de las técnicas para diseñar y gestionar el archivo de registros de la CPU" .
- ↑ "Manual de referencia de hardware del sistema informático Cray-1" (PDF) . Cray Research . Noviembre de 1977. Archivado (PDF) del original el 7 de noviembre de 2021. Consultado el 23 de diciembre de 2022 .
- ↑ "Manual de usuario del conjunto de microcomputadoras MCS-4" (PDF) . Intel. Febrero de 1973. Archivado (PDF) del original el 24 de febrero de 2005.
- ↑ "Manual del usuario de la unidad central de procesamiento paralelo de 8 bits 8008" (PDF) . Intel. Noviembre de 1973. Archivado (PDF) del original el 4 de octubre de 2007. Consultado el 23 de enero de 2014 .
- ↑ "Manual del usuario del sistema de microcomputadoras Intel 8080" (PDF) . Intel. Septiembre de 1975. Archivado (PDF) del original el 6 de diciembre de 2010. Consultado el 23 de enero de 2014 .
- ↑ Manual de usuario de la CPU de la familia Z80 (PDF) . Zilog . 2016. pág. 3. UM008011-0816. Archivado (PDF) del original el 26 de diciembre de 2023. Consultado el 5 de enero de 2024 .
- ↑ "Manual de referencia del programador de 80286 y 80287" (PDF) . Intel. 1987. Archivado (PDF) del original el 23 de julio de 2015.
- 1 2 "Manuales para desarrolladores de software de las arquitecturas Intel 64 e IA-32" . Intel. 4 de diciembre de 2019.
- ↑ "Manual del programador de la arquitectura AMD64, volumen 1: Programación de aplicaciones" (PDF) . AMD . Octubre de 2013.
- ↑ "Referencia de programación de extensiones del conjunto de instrucciones y funciones futuras de la arquitectura Intel" (PDF) . Intel . Enero de 2018.
- ↑ F8, Manual preliminar del usuario del microprocesador (PDF) . Fairchild. Enero de 1975.
- ↑ Guía de programación F8 (PDF) . División de microcomputadoras Fairchild MOS. 1977.
- ↑ Guía del usuario de la familia de microcontroladores COP400 COPS . National Semiconductor . Consultado el 23 de junio de 2025 .
- ↑ "Guía de referencia del procesador Nios II Classic" (PDF) . Altera . 2 de abril de 2015.
- ↑ "Guía de referencia del procesador Nios II Gen2" (PDF) . Altera. 2 de abril de 2015.
- ↑ "Manual de referencia de programación M6800" (PDF) . Motorola . Noviembre de 1976. Archivado (PDF) del original el 14 de octubre de 2011. Consultado el 18 de mayo de 2015 .
- ↑ "Manual de referencia del programador de la familia Motorola M68000" (PDF) . Motorola. 1992. Consultado el 10 de noviembre de 2024 .
- ↑ "Microcontroladores de señal mixta MSP430F552x, MSP430F551x" (PDF) . Texas Instruments . Consultado el 10 de noviembre de 2025 .
- ↑ "Guía de programación CUDA C" . Nvidia. 2019. Consultado el 9 de enero de 2020 .
- ^ 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 ].
- ↑ Sistemas informáticos de la serie Control Data 6000, manual de referencia (PDF) . Control Data Corporation. Julio de 1965.
- ↑ Principios de funcionamiento del sistema IBM/360 (PDF) . IBM.
- ↑ IBM System/370, Principios de funcionamiento (PDF) . IBM. 1 de septiembre de 1975.
- ↑ z/Architecture, Principios de funcionamiento (PDF) (Séptima ed.). IBM. 2008.
- ↑ "Arquitectura de sistemas empresariales de IBM/370 y System/370 - Operaciones vectoriales" (PDF) . IBM. SA22-7125-3 . Consultado el 11 de mayo de 2020 .
- ↑ "Microprocesador IBM S/390 G5" (PDF) .
- ↑ "Página principal de MMIX" .
- ↑ "Series 32000 Databook" (PDF) . National Semiconductor . Archivado (PDF) del original el 25/11/2017.
- ↑ Arquitectura Intel Itanium, Manual del desarrollador de software, Volumen 3: Referencia del conjunto de instrucciones Intel Itanium (PDF) . Intel. Mayo de 2010.
- ↑ Weaver, David L.; Germond, Tom (eds.). Manual de arquitectura SPARC, versión 9 (PDF) . Santa Clara, California: SPARC International, Inc.
- ↑ Power ISA Versión 3.1B (PDF) . Fundación OpenPOWER. 14 de septiembre de 2021.
- ↑ Procesador Blackfin, Referencia de programación, Revisión 2.2 (PDF) . Analog Devices. Febrero de 2013.
- ↑ "Arquitectura del conjunto de instrucciones de la unidad de procesamiento sinérgica, versión 1.2" (PDF) . IBM. 27 de enero de 2007.
- ↑ Leonard, Timothy E., ed. (1987). VAX Architecture, Reference Manual (PDF) . DEC books.
- ↑ Manual de referencia de la arquitectura Alpha (PDF) (Cuarta edición). Compaq Computer Corporation. Enero de 2002.
- ↑ "Aprendiendo el lenguaje ensamblador 65816" . Wiki de desarrollo de Super Famicom . Consultado el 14 de noviembre de 2019 .
- ↑ "Estándar de llamada a procedimiento para la arquitectura ARM" (PDF) . ARM Holdings . 30 de noviembre de 2013. Consultado el 27 de mayo de 2013 .
- ↑ "2.6.2. El conjunto de registros de estado Thumb" . Manual de referencia técnica ARM7TDMI . ARM Holdings .
- ↑ Arquitectura del conjunto de instrucciones Arm A64, Armv8, para el perfil de arquitectura Armv8-A (PDF) . Arm. 2021.
- ↑ Arquitectura MIPS64 para programadores, volumen II: El conjunto de instrucciones MIPS64 (PDF) . Fundación RISC-V. 12 de marzo de 2001. Consultado el 6 de octubre de 2024 .
- ↑ Waterman, Andrew; Asanovi, Krste, eds. (mayo de 2017). The RISC-V, Instruction Set Manual, Volume I: User-Level ISA, Document Version 2.2 (PDF) . RISC-V Foundation.
- ↑ "Referencia de la arquitectura Epiphany" (PDF) .
- Arquitectura de computadoras
- Registros digitales
- unidad central de procesamiento