stringtranslate.com

Registro de control

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

Uso típico de CR3 en la traducción de direcciones con  páginas de 4 KiB

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 .

  1. ^ 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]

  1. ^ Los 128 bits inferiores de todos los registros YMM se almacenan en el estado SSE.
  2. ^ Los 256 bits inferiores de los registros ZMM ZMM0 a ZMM15 se almacenan en los estados SSE y AVX.
  3. ^ 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

Notas

  1. ^ 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 .
  1. ^ "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 .
  2. ^ M67prelim, págs. 25-26, Registros de control.
  3. ^ ab M67, p. 16, Tabla 4. Registros de control.
  4. ^ S/370, págs. 4-8-4-11, Registros de control.
  5. ^ M67, págs. 31-35, Asignaciones de bits del registro de control para detección.
  6. ^ S/390-ESA.
  7. ^ S/370-ESA.
  8. ^ S/370-XA.
  9. ^ S/370.
  10. ^ S/390-ESA, págs. 4-6-4-10, Registros de control.
  11. ^ z/Arquitectura.
  12. ^ z/Architecture, pp. 4-9–4-12, Registros de control.
  13. ^ 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.
  14. ^ 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 .
  15. ^ "Paginación de 5 niveles y EPT de 5 niveles" (PDF) . Intel . Mayo de 2017. p. 16 . Consultado el 23 de enero de 2018 .
  16. ^ 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 .
  17. ^ 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.
  18. ^ Intel, Referencia de programación de extensiones de Software Guard, ref. n.° 329298-002, octubre de 2014: no menciona CR4.SEE.
  19. ^ 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 .
  20. ^ 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 .
  21. ^ "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