Registro del procesador

format_list_bulleted Contenido keyboard_arrow_down
ImprimirCitar
Almacenamiento de trabajo de fácil acceso disponible como parte de un procesador digital

Un registro de procesador es una ubicación de rápido acceso disponible para el procesador de una computadora. Los registros suelen consistir en una pequeña cantidad de almacenamiento rápido, aunque algunos registros tienen funciones de hardware específicas y pueden ser de sólo lectura o de sólo 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, p. DIC PDP-10, TIC 1900.

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 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 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 suelen tener duplicados de estos "registros arquitectónicos" para mejorar el rendimiento mediante el cambio de nombre de los registros, permitiendo 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 de computadora accede a los mismos datos repetidamente, esto se 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 el número de bits que pueden contener, por ejemplo, un "registro de 8 bits", un "registro de 32 bits", un "64- registro de 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:

  • Registros accesibles al usuario puede ser leído o escrito por instrucciones de la máquina. La división más común de registros accesibles a los usuarios es una división en registros de datos y registros de direcciones.
    • Registro de datoss puede mantener valores numéricos de datos como enteros y, en algunas arquitecturas, valores de punto flotante, así como caracteres, pequeños conjuntos de bits y otros datos. En algunas arquitecturas antiguas, como el IBM 704, el IBM 709 y los sucesores, el PDP-1, el PDP-4/PDP-7/PDP-9/PDP-15, el PDP-5/PDP-8, y el HP 2100, un registro especial de datos conocido como el acumulador se utiliza implícitamente para muchas operaciones.
    • Registro de direccioness mantener direcciones y son utilizados por instrucciones que acceso indirectamente a la memoria primaria.
      • Algunos procesadores contienen registros que sólo pueden utilizarse para mantener un dirección o sólo para mantener valores numéricos (en algunos casos utilizados como registro de índices cuyo valor se añade como compensación de alguna dirección); otros permiten que los registros mantengan cualquier tipo de cantidad. Existen una amplia variedad de posibles modos de tratamiento, utilizados para especificar la dirección efectiva de un operand.
      • El apilador se utiliza para administrar la pila de tiempo de ejecución. Raramente, otras pilas de datos son tratadas por registros de direcciones dedicados (ver máquina de pila).
    • Registros para fines generales ()GPRs) puede almacenar datos y direcciones, es decir, son registros combinados de datos / direcciones; en algunas arquitecturas, el archivo de registro es unificado para que los GPR también puedan almacenar números de puntos flotantes.
    • Registros de situación mantener valores de verdad a menudo utilizados para determinar si alguna instrucción debe o no ser ejecutada.
    • Registro de punto flotantes ()FPRs) almacenar números de puntos flotantes en muchas arquitecturas.
    • Registros constantes Mantenga valores de sólo lectura como cero, uno o pi.
    • Registros vectoriales Mantener datos para el procesamiento de vectores realizados por instrucciones SIMD (Instrucción del sistema, múltiples datos).
    • Registros para fines especiales ()SPRs) mantener algunos elementos del estado del programa; generalmente incluyen el contador del programa, también llamado el puntero de instrucción, y el registro de estado; el contador del programa y registro de estado puede combinarse en un registro de estado del programa (PSW). El puntero apilado mencionado anteriormente también se incluye en este grupo. Los microprocesadores embebidos también pueden tener registros correspondientes a elementos de hardware especializados.
    • En algunas arquitecturas, registro de modelos específicos (también llamado Registros específicos de máquina) almacenar datos y ajustes relacionados con el procesador mismo. Debido a que sus significados están unidos al diseño de un procesador específico, no se puede esperar que permanezcan estándar entre las generaciones procesadoras.
    • Registros de tipo de memoria ()MTRRs)
  • Registros internos no son accesibles por instrucciones y se utilizan internamente para operaciones de procesadores.
    • El registro de instrucciones mantiene la instrucción actualmente en ejecución.
    • Registros relacionados con la búsqueda de información de RAM, una colección de registros de almacenamiento ubicados en fichas separadas de la CPU:
      • Registro de amortiguación ()MBR), también conocido como registro de datos de memoria ()MDR)
      • Registro de dirección de memoria ()MAR)
  • Registros arquitectónicos son los registros visibles al software y se definen por una arquitectura. Puede que no correspondan al hardware físico si la renombración de registro está siendo realizada por el hardware subyacente.
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 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 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 enumeradas a continuación son diferentes, casi todas están en 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.

Arquitectura GPRs/data+address registersRegistros FPNotas
AT Pulido000pila de 7Todas las instrucciones de manipulación de datos funcionan únicamente dentro de los registros, y los datos deben ser trasladados a un registro antes del procesamiento.
Cray-18 datos de escalar, 8 dirección8 escalar, 8 vector

(64 elementos)

Los registros de datos de escalar pueden ser integer o punto flotante; también 64 registros de T de arañazo de escalar y 64 registros de arañazo de dirección B
40041 acumulador, 16 otros000
80081 acumulador, 6 otros000El registro A es un acumulador al que se hace todo aritmético; los registros H y L se pueden utilizar en combinación como registro de direcciones; todos los registros se pueden utilizar como operandos en instrucciones de carga/store/move/increment/decrement y como el otro operado en instrucciones aritméticas. No hay unidad de punto flotante (FPU) disponible.
80801 acumulador, 1 puntero de pila, 6 otros000El registro A es un acumulador al que se realiza todo aritmético; los pares de registro B+C, D+E y H+L se pueden utilizar como registros de direcciones en algunas instrucciones; todos los registros se pueden utilizar como operandos en instrucciones de carga/tienda/incremento/decremento/deterioro y como el otro operado en instrucciones aritméticas. Algunas instrucciones sólo usan H+L; otra instrucción intercambia H+L y D+E. Los procesadores de punto flotante destinados a los 8080 fueron Intel 8231, AMD Am9511 e Intel 8232. También eran fácilmente utilizables con los procesadores Z80 y similares.
iAPX432000pila de 6Máquina de apilamiento
16-bit x86006pila de 8

(si FP presente)

Los procesadores 8086/8088, 80186/80188, y 80286, si proporcionan un coprocesador de 8087, 80187 o 80287 para operaciones de punto flotante, soportan una pila de registro de 80 bits de ancho, 8 de profundidad con algunas instrucciones capaces de utilizar registros relativos a la parte superior de la pila como operandos; sin un coprocesador, no se admiten registros de puntos flotantes.
IA-32008pila de 8 (si FP presente),

8 (si el SSE/MMX está presente)

El procesador 80386 requiere un 80387 para operaciones de punto flotante, procesadores posteriores habían incorporado punto flotante, con ambos tener una pila de registro profundo de 80 bits de ancho, 8 con algunas instrucciones capaces de utilizar registros relativos a la parte superior de la pila como operands. El Pentium III y más tarde tuvo el SSE con registros XMM adicionales de 128 bits.
x86-6401616 o 32

(si AVX-512 está disponible)

Los registros FP son registros XMM de 128 bits, más tarde extendidos a 256 bits registros YMM con AVX/AVX2 y 512 bits ZMM0-ZMM31 registros con AVX-512.
Fairchild F81 acumulador, 64 registros de arañazos, 1 registro indirecto de arañazos (ISAR)Las instrucciones pueden referirse directamente a los primeros 16 registros de arañazos y pueden acceder a todos los registros de arañazos indirectamente a través del ISAR
Geode GX1 datos, 1 dirección008Geode GX/Media GX/4x86/5x86 es la emulación del procesador compatible con 486/Pentium realizado por Cyrix/National Semiconductor. Como Transmeta, el procesador tenía una capa de traducción que tradujo código x86 al código nativo y lo ejecutó. No admite registros SSE de 128 bits, sólo la pila 80387 de ocho registros flotantes de 80 bits, y admite parcialmente 3DNow! de AMD. El procesador nativo sólo contiene 1 datos y 1 dirección registro para todos los fines y se traduce en 4 caminos de registros de nombres de 32 bits r1 (base), r2 (data), r3 (back pointer), y r4 (estack pointer) dentro de scratchpad SRAM para operaciones de entero.
SunPlus SPG0006 pilas + 4 SIMDUn procesador de máquina de pilas de espacio de 16 bits de ancho y 32 bits de la compañía taiwanesa Sunplus Technology, se puede encontrar en la línea Vtech para propósitos educativos y consolas de videojuegos como el Wireless 60, Mattel HyperScan y XaviXPORT. No tiene ningún registro de uso general o registro interno para nombrar/reparar, pero su unidad de punto flotante tiene una pila de 6 etapas de 80 bits y cuatro registros VLIW SIMD de 128 bits en un co-procesador de sombra de vértice.
VM Labs Nuon000001Un procesador de máquina de 32 bits desarrollado por VM Labs y especializado en multimedia. Se puede encontrar en la propia línea de consola de reproductor de DVD Nuon de la empresa y en el Game Wave Family Entertainment System de juegos de ZaPit. El diseño estaba fuertemente influenciado por la tecnología MMX de Intel; contenía un caché unificado de 128 bytes para instrucciones vectoriales y escalar. La caché unificada se puede dividir como ocho registros vectoriales de 128 bits o treinta y dos registros de escalar SIMD de 32 bits a través de la renombración bancaria; no hay registro entero en esta arquitectura.
Nios II031008Nios II se basa en el conjunto de instrucciones MIPS IV y tiene 31 GPRs de 32 bits, con el registro 0 siendo duramente arrastrado a cero, y ocho registros de 64 bits de punto flotante
Motorola 68002 datos, 1 índice, 1 pila000
Motorola 68k8 datos (d0–d7), 8 dirección (a0–a7)008

(si FP presente)

Dirección registro 8 (a7) es el puntero apilador. 68000, 68010, 68012, 68020 y 68030 requieren una FPU para el punto flotante; 68040 han construido FPU. Los registros FP son de 80 bits.
SH 16-bit001006
Motor de Emoción3(VU0)+ 32(VU1)32 SIMD (integrado en UV1)

+ 2 × 32 Vector (coprocesador vectorial dedicado cerca de su GPU)

El núcleo principal del motor Emotion (VU0) es un núcleo general DSP muy modificado destinado a tareas generales de fondo y contiene un acumulador de 64 bits, dos registros generales de datos y un contador de programas de 32 bits. Un núcleo ejecutable MIPS III modificado (VU1) es para el control de datos de juego y protocolo, y contiene treinta y dos registros de propósito general de 32 bits para computación de enteros y treinta y dos registros SIMD de 128 bits para almacenar instrucciones SIMD, streaming de valor de datos y algún valor de cálculo de enteros, y un registro acumulador para conectar la computación general de puntos flotantes al archivo de procesamiento vectores en el coor. El coprocesador se construye a través de un archivo de registro vectorial de 128 bits de 32 entradas (sólo puede almacenar valores vectoriales que pasan del acumulador en la CPU) y no se construyen registros enteros. Tanto el coprocesador vectorial (VPU 0/1) como el módulo principal del procesador Emotion Engine (VU0 + VU1 + VPU0 + VPU1) se construyen sobre la base de un conjunto de instrucciones MIPS modificadas. El acumulador en este caso no es de uso general sino de control.
CUDAconfigurable, hasta 255 por hiloLas generaciones anteriores permitieron hasta 127/63 registros por hilo (Tesla/Fermi). Los más registros están configurados por hilo, los menos hilos pueden funcionar al mismo tiempo. Los registros son de 32 bits de ancho; los números flotantes de doble precisión y los punteros de 64 bits requieren por lo tanto dos registros. Además tiene hasta 8 registros predicados por hilo.
CDC Serie 60000160088 'A' registra, A0–A7, mantiene direcciones de 18 bits; 8 'B' registra, B0–B7, mantiene valores enteros de 18 bits (con B0 permanentemente fijados a cero); 8 'X' registra, X0–X7, contiene 60 bits de datos enteros o de puntos flotantes. Siete de los ocho registros de 18 bits A se unieron a sus registros X correspondientes: establecer cualquiera de los registros A1–A5 a un valor causó una carga de memoria de los contenidos de esa dirección en el registro X correspondiente. Asimismo, establecer una dirección en los registros A6 o A7 causó una tienda de memoria en esa ubicación en memoria de X6 o X7. (Los registros A0 y X0 no fueron emparejados así).
System/360, System/370, System/390, z/Architecture0164 (si la FP está presente);

16 en G5 y posteriores modelos S/390 y z/Arquitectura

FP era opcional en System/360, y siempre presente en S/370 y más tarde. En procesadores con el Vector Facility, hay 16 registros vectoriales que contienen un número de elementos de 32 bits dependientes de la máquina. Algunos registros se asignan un propósito fijo llamando a convenciones; por ejemplo, el registro 14 se utiliza para direcciones de retorno de la subrutina y, para ELF ABIs, el registro 15 se utiliza como puntero de la pila. El procesador S/390 G5 aumentó el número de registros de puntos flotantes a 16.
MMIX256256Una instrucción diseñada por Donald Knuth a finales del decenio de 1990 para fines pedagógicos.
NS320xx008008

(si FP presente)

Xelerated X10001032Un procesador de red basado en máquina de 32/40 bits con un conjunto de instrucciones MIPS modificado y una unidad flotante de 128 bits.
Parallax Propeller000002Un controlador de máquina rebanada de 8/16-bit con un circuito lógico simple dentro, tiene 8 contadores de cog (cores), cada uno con tres registros de control especiales de 8/16 bits con 32 bits x 512 pila RAM. Sin embargo, no contiene ningún registro general para fines enteros. A diferencia de la mayoría de los archivos de registro de sombras en procesadores modernos y sistemas multi-core, toda la RAM de pila en cog se puede acceder a nivel de instrucción, lo que permite que todos estos cogs actúen como un solo núcleo de uso general si es necesario. La unidad de punto flotante es externa y contiene dos registros vectoriales de 80 bits.
Itanium128128Y 64 registros predicados de 1 bit y 8 registros de ramas. Los registros FP son de 82 bits.
SPARC031032Global register 0 es hardwired a 0. Usa ventanas de registro.
IBM POWER032032También se incluye un registro de enlace, un registro de cuenta y un registro de cociente multiplicado.
PowerPC/Power ISA032032También se incluye un registro de enlace y un registro de cuenta. Los procesadores que apoyan la instalación Vector también tienen 32 registros vectoriales de 128 bits.
Blackfin8 datos, 2 acumuladores, 6 direcciones000También se incluye un puntero de pila y un puntero de marco. Se utilizan registros adicionales para implementar bucles de cabeza cero y buffer circular DAGs (generadores de dirección de datos).
IBM Cell SPE128128 registros de propósito general, que pueden contener valores enteros, de dirección o de punto flotante
PDP-10016Todos los registros se pueden utilizar generalmente (integer, flotador, apilador, salto, indexación, etc.). Cada palabra de memoria de 36 bits (o registro) también se puede manipular como una palabra media, que puede considerarse una dirección (18-bit). Otras interpretaciones de palabras son utilizadas por ciertas instrucciones. En los procesadores PDP-10 originales, estos 16 GPRs también correspondieron a las principales ubicaciones de memoria (es decir, núcleo) 0-15; una opción de hardware llamada "recuperación rápida" implementó los registros como ICs separados, y referencias a ubicaciones de memoria 0-15 referidos a los registros IC. Más tarde los modelos implementaron los registros como "recuperación rápida" y continuaron haciendo ubicaciones de memoria 0–15 se refieren a ellos. Instrucciones de movimiento tomar (Registro, memoria) operands: MOVE 1,2 es registro, y MOVE 1,1000 es memoria a registro.
PDP-11007006

(si FPP presente)

R7 es el contador del programa. Cualquier registro puede ser un puntero de pila, pero R6 se utiliza para interrumpir hardware y trampas.
VAX016Los registros de propósito general se utilizan también para valores de punto flotante. Tres de los registros tienen usos especiales: R12 (Argument Pointer), R13 (Frame Pointer), y R14 (Stack Pointer), mientras que R15 se refiere a la contadora del programa.
Alfa031031Los registros R31 (integer) y F31 (punto flotante) son duros a cero.
65021 datos, 2 índice000El contenido de 6502 A (Accumulador) se registra para almacenar datos de propósito principal y dirección de memoria (8-bit data/16-bit address), X y Y son registros de índices indirectos y directos (respectivamente) y los registros SP son índices específicos solamente.
W65C816S00100065c816 es el sucesor de 16 bits del 6502. X, Y y D (Registro de Páginas Direct) son registros de afección y el registro SP son sólo índice específico. El acumulador principal se extendió a 16 bits (C) mientras mantiene 8 bits (A) para la compatibilidad y los registros principales ahora pueden abordar hasta 24 bits (dirección de memoria 24 bits de 16 bits).
MeP004008Media-embedded processor was a 32-bit processor developed by Toshiba with a modded 8080 instruction set. Sólo los registros A, B, C y D están disponibles a través de todos los modos (8/16/32-bit). Es incompatible con x86; sin embargo, contiene una unidad flotante de 80 bits que es compatible con x87.
Microcontrolador PIC001000
Microcontrolador AVR032000
ARM 32-bit (ARM/A32, Thumb-2/T32)014Variaciones

(hasta 32)

r15 es el contador de programa, y no utilizable como registro de propósito general; r13 es el puntero de pila; r8–r13 se puede apagar para otros (bancado) en un interruptor de modo de procesador. Las versiones más antiguas tenían 26 bits de dirección, y utilizaron los bits superiores del contador del programa (r15) para banderas de estado, haciendo que el registro 32-bit.
ARM 32-bit (Thumb)008016Versión 1 de Thumb, que sólo apoyó el acceso a los registros r0 a través de r7
ARM 64-bit (A64)031032Registrarse r31 es el puntero de pila o hardwired a 0, dependiendo del contexto.
MIPS031032Integer register 0 es hardwired a 0.
RISC-V031032Integer register 0 es hardwired a 0. La variante RV32E, destinada a sistemas con recursos muy limitados, tiene 15 registros enteros.
Epifanía64 (por núcleo)Cada instrucción controla si los registros se interpretan como enteros o punto flotante de precisión única. La arquitectura es escalable a 4096 núcleos con 16 y 64 implementaciones básicas disponibles actualmente.

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.

Contenido relacionado

Telecomunicaciones en Mauricio

En 1883, se introdujo la telefonía básica en Mauricio, solo siete años después de la invención del teléfono. Se instaló la primera línea telefónica...

Comunicaciones en Malaui

Comunicaciones en Malawi incluye los servicios postales, telefónicos, de televisión, radio e Internet del...

Telecomunicaciones en Georgia (país)

Las telecomunicaciones en Georgia incluyen radio, televisión, teléfonos fijos y móviles e...
Más resultados...
Tamaño del texto:
undoredo
format_boldformat_italicformat_underlinedstrikethrough_ssuperscriptsubscriptlink
save