El registro del procesador es un campo de una longitud determinada en la memoria de acceso aleatorio ultrarrápida(SRAM) del procesador. Es utilizado por el propio procesador, puede ser accesible o inaccesible por software. Por ejemplo, al obtener la siguiente instrucción de la memoria, se coloca en el registro de instrucciones , al que el programador no puede acceder.
Los registros inaccesibles mediante programación son todos los registros del procesador a los que no se puede acceder de una forma u otra desde el programa en ejecución. Un ejemplo de tales registros es el ya mencionado registro de instrucciones .
Los registros accesibles mediante programación son registros a los que se puede acceder de una forma u otra desde el programa en ejecución. Casi cada uno de estos registros se designa por su identificador de nombre en el nivel del lenguaje ensamblador y el código identificador numérico correspondiente en el nivel del lenguaje máquina. En términos de accesibilidad, los registros accesibles mediante programación no son lo mismo y se dividen prácticamente en dos grandes subgrupos:
Los registros especiales [3] contienen datos necesarios para el funcionamiento del procesador: compensaciones de la tabla base, niveles de acceso, etc.
Parte de los registros especiales pertenecen al dispositivo de control , que controla el procesador generando una secuencia de microinstrucciones .
El acceso a los valores almacenados en los registros se realiza directamente a la frecuencia del reloj del procesador y, por regla general, varias veces más rápido que el acceso a los campos en la RAM (incluso si la memoria caché contiene los datos necesarios), pero la cantidad de RAM mucho supera la cantidad total de registros del procesador, la "capacidad" total de registros de uso general/datos para procesadores x86 (por ejemplo, Intel 80386 y posteriores) 8 registros de 4 bytes = 32 bytes (en procesadores x86-64 - 16 de 8 bytes = 128 bytes y algunos registros vectoriales).
La tabla muestra el número de registros de propósito general en varias arquitecturas de microprocesadores comunes. Vale la pena señalar que en algunas arquitecturas, el uso de registros individuales puede ser complicado. Entonces, en SPARC y MIPS, el registro número 0 no almacena información y siempre se lee como 0, y en los procesadores x86 con un registro ESP(puntero a la pila), solo pueden funcionar algunos comandos.
Arquitectura | registros enteros |
FP - registros |
notas |
---|---|---|---|
x86-32 | ocho | ocho | |
x86-64 | dieciséis | dieciséis | |
Sistema IBM/360 | dieciséis | cuatro | |
z/Arquitectura | dieciséis | dieciséis | |
Itanio | 128 | 128 | |
SPARC | 31 | 32 | El registro 0 (global) siempre se está ejecutando |
Célula de IBM | 4~16 | 1~4 | |
ENERGÍA DE IBM | 32 | 32 | |
arquitectura de poder | 32 | 32 | |
Alfa | 32 | 32 | |
6502 | 3 | 0 | |
W65C816S | 5 | 0 | |
FOTO | una | 0 | |
AVR | 32 | 0 | |
BRAZO de 32 bits [4] | dieciséis | varios | |
BRAZO de 64 bits [5] | 31 | 32 | |
MIPS | 31 | 32 | El registro 0 es siempre cero |
RISC-V | 31 | 32 | Además, existe el registro 0 que siempre devuelve cero |
Elbrús 2000 | 256 | alineado con
entero |
32 registros de dos dígitos,
256 = 32 registros globales + 224 registros de pila de procedimientos [6] |
IP ( Puntero de instrucciones en inglés ) - un registro que indica el desplazamiento (dirección) de las instrucciones en el segmento de código (1234: 0100h segmento / desplazamiento).
IP - 16 bits (parte inferior de EIP)
EIP: analógico de 32 bits (parte inferior de RIP)
RIP: analógico de 64 bits
Los registros de segmento son registros que apuntan a segmentos.
Todos los registros de segmento son de 16 bits.
CS ( segmento de código ) , DS ( segmento de datos ) , SS ( segmento de pila ) , ES ( segmento adicional ) , FS, GS
En el modo real del procesador, los registros de segmento contienen la dirección del comienzo del segmento de 64 Kb, desplazada a la derecha 4 bits.
En el modo protegido del procesador, los registros de segmento contienen el selector del segmento de memoria asignado por el sistema operativo.
CS es un puntero a un segmento de código. El enlace CS:IP (CS:EIP/CS:RIP - en modo seguro/64 bits) apunta a la dirección de memoria de la siguiente instrucción.
En el modo de 64 bits, los registros de segmento CS, DS, ES y SS no participan en la formación de una dirección lineal (continua), ya que en este modo no se admite la segmentación.
Los registros de datos se utilizan para almacenar cálculos intermedios.
RAX, RCX, RDX, RBX, RSP, RBP, RSI, RDI, R8 - R15 - 64 bits (registro AX)
EAX, ECX, EDX, EBX, ESP, EBP, ESI, EDI, R8D - R15D - 32 bits (AX ampliado)
AX ( acumulador ) , CX ( registro de conteo ) , DX ( registro de datos ) , BX ( registro base ) , SP ( puntero de pila ) , BP ( puntero base ) SI (, índice de origen ), DI ( índice de destino ), R8W - R15W - 16 bits
AH, AL, CH, CL, DH, DL, BH, BL, SPL, BPL, SIL, DIL, R8B - R15B - 8 bits (mitades de registros de 16 bits)
por ejemplo, AH - AX alto - mitad alta de 8 bits
AL - AX bajo - mitad baja de 8 bits
RAX | RCX | RDX | RBX | ||||||||||||||||||||||||||||
EAX | ECX | EDX | EBX | ||||||||||||||||||||||||||||
HACHA | CX | DX | BX | ||||||||||||||||||||||||||||
Ah | Alabama | CH | CL | D. H. | DL | BH | licenciado en Derecho |
RSP | RBP | RSI | RDI | Rx | |||||||||||||||||||||||||||||||||||
ESP | PBE | ESI | EDI | RxD | |||||||||||||||||||||||||||||||||||
SP | PA | SI | DI | RxA | |||||||||||||||||||||||||||||||||||
SPL | BPL | SIL | DIL | RxB |
donde x es 8..15.
Los registros RAX, RCX, RDX, RBX, RSP, RBP, RSI, RDI, Rx, RxD, RxW, RxB, SPL, BPL, SIL, DIL solo están disponibles en el modo de procesador de 64 bits.
Registro de banderas FLAGS (16 bits) / EFLAGS (32 bits) / RFLAGS (64 bits) - contiene el estado actual del procesador.
Los registros del sistema GDTR, LDTR e IDTR se introdujeron en los procesadores a partir de Intel286 y están diseñados para almacenar las direcciones base de las tablas de descriptores , los componentes más importantes de la arquitectura del sistema cuando se trabaja en modo protegido.
El registro GDTR contiene una dirección base de 32 bits (24 bits para Intel286) y un límite de tabla de descriptores globales ( GDT ) de 16 bits.
La parte visible del registro LDTR contiene solo el selector de descriptores de la tabla de descriptores locales (LDT). El propio descriptor LDT se carga automáticamente en la parte oculta LDTR de la tabla de descriptores globales.
El registro IDTR contiene una dirección base de 32 bits (24 bits para Intel286) y un límite de tabla de descripción de interrupción ( IDT ) de 16 bits. En modo real, se puede usar para cambiar la ubicación de la tabla de vectores de interrupción.
La parte visible del registro TR contiene el selector del descriptor de segmento de estado de tarea ( TSS ). El propio descriptor TSS se carga automáticamente en la parte oculta del TR desde la tabla de descriptores globales.
Un registro es una unidad funcional que recibe, almacena y transmite información. Los registros están formados por un grupo de disparadores , normalmente D. Según el tipo de recepción y emisión de la información, se distinguen 2 tipos de registros:
Los registros de desplazamiento son una cadena de flip- flops conectados en serie . El principal modo de operación es el cambio de los bits del código de un disparador a otro para cada pulso de la señal del reloj.
Por finalidad, los registros se diferencian en:
IP ( Puntero de instrucción en inglés ) : un registro que contiene el desplazamiento de dirección de la siguiente instrucción que se ejecutará en relación con el segmento de código CS en los procesadores de la familia x86 .
El registro de IP está asociado con CS como CS:IP, donde CS es el segmento de código actual e IP es el desplazamiento actual de ese segmento.
El registro IP es un registro puntero de 16 bits. Además, este tipo de registros incluye SP ( English Stack Pointer - puntero de pila) y BP ( English Base Pointer - puntero base).
Principio de funcionamientoPor ejemplo, CS contiene el valor , el registro de IP almacena el desplazamiento . 2CB5[0]H123H
La dirección de la siguiente instrucción a ejecutar se calcula sumando la dirección en el CS (Segmento de Código) al desplazamiento en el registro IP:
2CB50H + 123H = 2CC73HAsí, la dirección de la siguiente instrucción a ejecutar es 2CC73H.
Cuando se ejecuta la instrucción actual, el procesador cambia automáticamente el valor en el registro IP, de manera que el par de registros CS:IP siempre apunta a la siguiente instrucción a ejecutar.
PIEComenzando con el procesador 80386 , se introdujo una versión de 32 bits del registro de puntero: EIP ( Puntero de instrucción extendida ) . En este caso, IP es el extremo inferior de este registro (los primeros 16 bits). El principio de funcionamiento de EIP es generalmente similar al funcionamiento del registro de IP. La principal diferencia es que en el modo protegido, a diferencia del modo real, el registro CS es un selector (el selector no apunta al segmento en sí en la memoria, sino al descriptor del segmento en la tabla de descriptores).
DEPLos procesadores de 64 bits usan su propio registro de puntero de instrucción: RIP .
La parte inferior de este registro es el registro EIP.
Basado en RIP, se ha introducido un nuevo método de direccionamiento relativo a RIP en los procesadores de 64 bits. El resto del trabajo de RIP es similar al trabajo del registro EIP.
Tecnologías de procesadores digitales | |||||||||
---|---|---|---|---|---|---|---|---|---|
Arquitectura | |||||||||
Set de instrucciones arquitectura | |||||||||
palabra maquina | |||||||||
Paralelismo |
| ||||||||
Implementaciones | |||||||||
Componentes | |||||||||
Administración de energía |
Microcontroladores | ||||||||
---|---|---|---|---|---|---|---|---|
Arquitectura |
| |||||||
Fabricantes |
| |||||||
Componentes | ||||||||
Periferia | ||||||||
Interfaces | ||||||||
sistema operativo | ||||||||
Programación |
|