Un registro de control es un registro de procesador que cambia o controla el comportamiento general de una CPU u otro dispositivo digital. Las tareas comunes que realizan los registros de control incluyen el control de interrupciones , el cambio del modo de direccionamiento , el control de paginación y el control del coprocesador .
Historia
Las primeras CPU carecían de registros de control dedicados y dependían de un conjunto limitado de señales y banderas internas. [1] Cuando IBM desarrolló una versión de paginación [nota 1] del System/360 , agregaron 16 registros de control [2] [3] al diseño de lo que se convirtió en el 360/67 . IBM no proporcionó registros de control en otros modelos S/360, pero los convirtió en una parte estándar [4] del System/370 , aunque con diferentes asignaciones de registros y bits. A medida que IBM agregó nuevas características a la arquitectura, por ejemplo, DAS , S/370-XA , S/370-ESA , ESA/390 , agregaron campos adicionales a los registros de control. Con z/Architecture , IBM duplicó el tamaño del registro de control a 64 bits.
Registros de control en IBM 360/67
En el 360/67 , CR0 y CR2 se utilizan para la traducción de direcciones, CR 4-6 contienen indicadores diversos que incluyen máscaras de interrupción y modo de control extendido, [3] y CR 8-14 [5] contienen las configuraciones del interruptor en la unidad de configuración 2167.
M67 CR0
El registro de control 0 contiene la dirección de la tabla de segmentos para la traducción de direcciones dinámicas.
M67 CR2
El registro de control 2 es el registro de dirección de excepción de reubicación.
M67 CR4
CR4 es el registro de máscara extendida para los canales 0 a 31. Cada bit es la máscara de canal 1/0 para el canal correspondiente.
M67 CR5
CR5 está reservado para el registro de máscara extendida de los canales 32 a 63. Cada bit es la máscara de canal 1/0 para el canal correspondiente.
M67 CR6
CR6 contiene dos indicadores de modo más extensiones a los bits de máscara PSW.
M67 CR8
El registro de control 8 contiene las asignaciones de las unidades de almacenamiento del procesador 1 a 4 a las unidades centrales de procesamiento (CPU) y a los controladores de canal (CC).
M67 CR9
El registro de control 9 contiene las asignaciones de las unidades de almacenamiento del procesador 5 a 8 a las unidades centrales de procesamiento (CPU) y a los controladores de canal (CC).
M67 CR10
El registro de control 10 contiene los códigos de asignación de dirección de almacenamiento del procesador.
M67 CR11
El registro de control 11 contiene las asignaciones del controlador de canal (CC).
M67 CR12
CR12 contiene particiones de unidad de control de E/S.
M67 CR13
CR13 contiene particiones de unidad de control de E/S.
M67 CR14
CR14 contiene indicadores.
Registros de control en IBM S/390
Los registros de control de ESA/390 [6] en el IBM S/390 son una mejora evolutiva de los registros de control de los procesadores ESA/370 [7] , S/370-XA [8] y S/370 [9] anteriores . Para obtener detalles sobre qué campos dependen de características específicas, consulte los Principios de funcionamiento. [10]
Registros de control en IBM z/Architecture
Los registros de control de z/Architecture [11] son una mejora evolutiva de los registros de control del ESA/390 anterior en los procesadores IBM S/390 . Para obtener detalles sobre qué campos dependen de características específicas, consulte los Principios de funcionamiento. [12] Debido a que z/Architecture amplía los registros de control de 32 bits a 64, la numeración de bits difiere de la de ESA/390.
Registros de control en Intelx86serie
CR0
El registro CR0 tiene una longitud de 32 bits en los procesadores 386 y superiores. En los procesadores x64 en modo largo , este registro (y los demás registros de control) tiene una longitud de 64 bits. CR0 tiene varios indicadores de control que modifican el funcionamiento básico del procesador. El registro CR0 es la versión de 32 bits del antiguo registro de palabra de estado de la máquina (MSW). El registro MSW se amplió al registro de control con la aparición del procesador i386.
CR1
Reservado, la CPU lanzará una excepción #UD al intentar acceder a él.
CR2
Contiene un valor denominado Dirección lineal de fallo de página (PFLA). Cuando se produce un fallo de página, la dirección a la que el programa intentó acceder se almacena en el registro CR2.
CR3

Se utiliza cuando se habilita el direccionamiento virtual , es decir, cuando el bit PG está establecido en CR0. CR3 permite que el procesador traduzca direcciones lineales en direcciones físicas ubicando el directorio de páginas y las tablas de páginas para la tarea actual. Normalmente, los 20 bits superiores de CR3 se convierten en el registro base del directorio de páginas (PDBR), que almacena la dirección física del primer directorio de páginas. Si el bit PCIDE en CR4 está establecido, los 12 bits inferiores se utilizan para el identificador de contexto de proceso (PCID). [13]
CR4
Se utiliza en modo protegido para controlar operaciones como compatibilidad con virtual-8086, habilitación de puntos de interrupción de E/S, extensión del tamaño de página y excepciones de verificación de máquina .
- ^ En los primeros borradores de la especificación Intel SGX , el bit 15 de CR4 se denominaba "CR4.SEE" y se describía como un bit de habilitación de instrucción de enclave SGX. [17] Las revisiones posteriores de esta especificación eliminaron las referencias a este bit. [18]
CR5–7
Reservado, mismo caso que CR1.
Registros de control adicionales en Intelx86-64serie
EFER
El registro de habilitación de funciones extendidas (EFER) es un registro específico del modelo que se agregó en el procesador AMD K6 para permitir la habilitación de la instrucción SYSCALL /SYSRET y, posteriormente, para ingresar y salir del modo largo . Este registro se vuelve arquitectónico en AMD64 y ha sido adoptado por Intel como IA32_EFER. Su número MSR es 0xC0000080.
CR8
CR8 es un nuevo registro accesible en modo de 64 bits mediante el prefijo REX. CR8 se utiliza para priorizar interrupciones externas y se lo conoce como registro de prioridad de tareas (TPR). [14]
La arquitectura AMD64 permite que el software defina hasta 15 clases de prioridad de interrupción externa. Las clases de prioridad se numeran del 1 al 15, siendo la clase de prioridad 1 la más baja y la clase de prioridad 15 la más alta. CR8 utiliza los cuatro bits de orden inferior para especificar una prioridad de tarea y los 60 bits restantes están reservados y deben escribirse con ceros.
El software del sistema puede utilizar el registro TPR para bloquear temporalmente las interrupciones de baja prioridad y evitar que interrumpan una tarea de alta prioridad. Esto se logra cargando TPR con un valor correspondiente a la interrupción de mayor prioridad que se va a bloquear. Por ejemplo, cargar TPR con un valor de 9 (1001b) bloquea todas las interrupciones con una clase de prioridad de 9 o menos, mientras que permite que se reconozcan todas las interrupciones con una clase de prioridad de 10 o más. Cargar TPR con 0 habilita todas las interrupciones externas. Cargar TPR con 15 (1111b) deshabilita todas las interrupciones externas.
El TPR se pone a 0 al reiniciarse.
XCR0 y XSS
XCR0, o Registro de Control Extendido 0, es un registro de control que se utiliza para alternar el almacenamiento o la carga de registros relacionados con funciones específicas de la CPU mediante las instrucciones XSAVE/XRSTOR. También se utiliza con algunas funciones para habilitar o deshabilitar la capacidad del procesador para ejecutar sus instrucciones correspondientes. Se puede cambiar mediante la lectura privilegiada XSETBV mediante las instrucciones no privilegiadas XGETBV. [21]
- ^ Los 128 bits inferiores de todos los registros YMM se almacenan en el estado SSE.
- ^ Los 256 bits inferiores de los registros ZMM ZMM0 a ZMM15 se almacenan en los estados SSE y AVX.
- ^ Aunque Intel APX se indica a través del bit 19 de XCR0, en realidad se escribe, a través de XSAVE (la forma no compactada), en el espacio no utilizado de 128 bytes que quedó donde se encontraba Intel MPX.
También existe el MSR IA32_XSS, que se encuentra en la dirección DA0h. El MSR IA32_XSS controla bits de XCR0 que se consideran estado de "supervisor" y deberían ser invisibles para los programas regulares. Opera con las instrucciones XSAVES y XRSTORS privilegiadas agregando el estado de supervisor a los datos con los que operan. En pocas palabras, si el estado X87 estuviera habilitado en XCR0 y el estado PT estuviera habilitado en IA32_XSS, la instrucción XSAVE solo almacenaría el estado X87, mientras que el XSAVES privilegiado almacenaría los estados X87 y PT. Debido a que es un MSR, se puede acceder a él mediante las instrucciones RDMSR y WRMSR.
Véase también
- Registro de propósito general
- Registro de prueba
- Registro específico del modelo
- Registro de depuración
- Byte de bandera
- Registro de estado
Notas
- ^ IBM nunca envió el 360/64 o el 360/66, sólo el 360/67.
Referencias
- Manuales de IBM
-
- M67 preliminar
- Sistema/360 Modelo 67 - Sistema de tiempo compartido - Resumen técnico preliminar (PDF) . Biblioteca de referencia de sistemas (primera edición). IBM . C20-1647-0 . Consultado el 8 de mayo de 2023 .
- M67
- IBM System/360 Model 67 - Características funcionales (PDF) . Biblioteca de referencia de sistemas (tercera edición). IBM . Febrero de 1972. A27-2719-0 . Consultado el 8 de mayo de 2023 .
- S/370
- IBM System/370 - Principles of Operation (PDF) (Undécima edición). IBM . Septiembre de 1987. GA22-7000-10 . Consultado el 8 de mayo de 2023 .
- S/370-XA
- Principios de funcionamiento de la arquitectura extendida IBM System/370 (PDF) (segunda edición). IBM . Enero de 1987. SA22-7085-1 . Consultado el 8 de mayo de 2023 .
- S/370-ESA
- IBM Enterprise Systems Architecture/370 Principles of Operation (PDF) (Primera edición). IBM . Agosto de 1988. SA22-7200-0 . Consultado el 8 de mayo de 2023 .
- S/390-ESA
- IBM Enterprise Systems Architecture/390 Principles of Operation (PDF) (novena edición). IBM . Junio de 2003. SA22-7201-08 . Consultado el 8 de mayo de 2023 .
- z/Arquitectura
- z/Architecture - Principles of Operation (PDF) (Decimocuarta edición). IBM . Mayo de 2022. SA22-7832-13 . Consultado el 8 de mayo de 2023 .
- ^ "lab4.pdf" (PDF) . Universidad de Uppsala . 17 de marzo de 2024. Archivado (PDF) del original el 17 de enero de 2021. Consultado el 16 de marzo de 2024 .
- ^ M67prelim, págs. 25-26, Registros de control.
- ^ ab M67, p. 16, Tabla 4. Registros de control.
- ^ S/370, págs. 4-8-4-11, Registros de control.
- ^ M67, págs. 31-35, Asignaciones de bits del registro de control para detección.
- ^ S/390-ESA.
- ^ S/370-ESA.
- ^ S/370-XA.
- ^ S/370.
- ^ S/390-ESA, págs. 4-6-4-10, Registros de control.
- ^ z/Arquitectura.
- ^ z/Architecture, pp. 4-9–4-12, Registros de control.
- ^ ab Intel Corporation (2016). "4.10.1 Identificadores de contexto de proceso (PCID)". Manual del desarrollador de software de arquitecturas Intel 64 e IA-32 (PDF) . Vol. 3A: Guía de programación del sistema, parte 1.
- ^ ab "Manual del programador de la arquitectura AMD64, volumen 2: programación del sistema" (PDF) . AMD . Septiembre de 2012. págs. 127 y 130 . Consultado el 4 de agosto de 2017 .
- ^ "Paginación de 5 niveles y EPT de 5 niveles" (PDF) . Intel . Mayo de 2017. p. 16 . Consultado el 23 de enero de 2018 .
- ^ abc "Manual del desarrollador de software de arquitecturas Intel 64 e IA-32" (PDF) . Intel® Corporation. 28 de junio de 2021 . Consultado el 21 de septiembre de 2021 .
- ^ Intel, Referencia de programación de extensiones de Software Guard, ref. n.° 329298-001, sep. 2013: los capítulos 1.7 y 6.5.2 describen CR4.SEE.
- ^ Intel, Referencia de programación de extensiones de Software Guard, ref. n.° 329298-002, octubre de 2014: no menciona CR4.SEE.
- ^ Fischer, Stephen (21 de septiembre de 2011). "Supervisor Mode Execution Protection" (PDF) . Conferencia de computación confiable de la NSA de 2011. National Conference Services, Inc. Archivado desde el original (PDF) el 3 de agosto de 2016. Consultado el 4 de agosto de 2017 .
- ^ Anvin, H. Peter (21 de septiembre de 2012). «x86: Prevención de acceso en modo supervisor». LWN.net . Consultado el 4 de agosto de 2017 .
- ^ "Capítulo 13, Administración del estado mediante el conjunto de funciones Xsave" (PDF) . Manual del desarrollador de software de arquitecturas Intel(R) 64 e IA-32, volumen 1: Arquitectura básica . Intel Corporation (2019) . Consultado el 23 de marzo de 2019 .
Enlaces externos
- Manual del desarrollador de arquitecturas Intel 64 e IA-32: vol. 3A
- Manuales para desarrolladores de software de arquitecturas Intel 64 e IA-32
- Documentación técnica: AMD64
- El mundo de Wyatt: cómo abrir el Pentium III (28 de mayo de 1999)