Articulo de referencia

Registro de control

Un registro de control es un registro del procesador que modifica o controla el comportamiento general de una CPU u otro dispositivo digital. Entre las tareas comunes que realiz...

Un registro de control es un registro del procesador que modifica o controla el comportamiento general de una CPU u otro dispositivo digital. Entre las tareas comunes que realizan los registros de control se incluyen el control de interrupciones , el cambio del modo de direccionamiento , el control de paginación y el control del coprocesador .

Historia

La CPU inicial carecía de registros de control dedicados y dependía 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 para lo que se convertiría en el 360/67 . IBM no proporcionó registros de control en otros modelos S/360, pero los hizo 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 varios, incluidas máscaras de interrupción y modo de control extendido, [ 3 ] y CR 8-14 [ 5 ] contienen la configuración 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 dinámica de direcciones.

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-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 para los canales 32–63. Cada bit es la máscara de canal 1/0 para el canal correspondiente.

M67 CR6

CR6 contiene dos indicadores de modo, además de 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 direcciones de almacenamiento del procesador.

M67 CR11

El registro de control 11 contiene las asignaciones del controlador de canal (CC).

M67 CR12

CR12 contiene particionamiento de la unidad de control de E/S.

M67 CR13

CR13 contiene particionamiento de la unidad de control de E/S.

M67 CR14

CR14 contiene indicadores.

Registros de control en IBM S/390

Los registros de control del ESA/390 [ 6 ] en el IBM S/390 representan una mejora evolutiva con respecto a los registros de control de los procesadores anteriores ESA/370 , [ 7 ] S/370-XA [ 8 ] y S/370 [ 9 ] . Para obtener detalles sobre qué campos dependen de características específicas, consulte los Principios de Operación. [ 10 ]

Registros de control en la arquitectura IBM z/Architecture

Los registros de control de z/Architecture [ 11 ] representan una mejora evolutiva de los registros de control de la arquitectura 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 Operación [ 12 ] . Dado que z/Architecture amplía los registros de control de 32 a 64 bits, la numeración de bits difiere de la de ESA/390.

Registros de control en la serie Intel x86

CR0

El registro CR0 tiene una longitud de 32 bits en los procesadores 386 y superiores. En los procesadores x64 en modo largo , tiene una longitud de 64 bits (al igual que los demás registros de control). CR0 contiene 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 generará una excepción # UD al intentar acceder a él.

CR2

Contiene un valor llamado 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 traducción de direcciones con páginas de 4 KiB 

Se utiliza cuando el direccionamiento virtual está habilitado, es decir, cuando el bit PG está activado en CR0. CR3 permite al procesador traducir direcciones lineales a direcciones físicas localizando 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á activado, los 12  bits inferiores se utilizan para el identificador de contexto de proceso (PCID). [ 14 ]

CR4

Se utiliza en modo protegido para controlar operaciones como la compatibilidad con virtual-8086, la habilitación de puntos de interrupción de E/S, la extensión del tamaño de página y las excepciones de comprobació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 instrucciones de enclave SGX. [ 18 ] Las revisiones posteriores de esta especificación eliminaron las referencias a este bit. [ 19 ]

CR5–7

Reservado, mismo caso que CR1.

Registros de control adicionales en la serie Intel x86-64

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 habilitar la instrucción SYSCALL /SYSRET y, posteriormente, para entrar y salir del modo largo . Este registro se convierte en 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 las interrupciones externas y se denomina registro de prioridad de tarea (TPR). [ 15 ]

La arquitectura AMD64 permite definir por software hasta 15 clases de prioridad de interrupción externas. Estas clases se numeran del 1 al 15, siendo la clase 1 la de menor prioridad y la clase 15 la de mayor prioridad. El registro CR8 utiliza los cuatro bits de menor prioridad para especificar la prioridad de la tarea , mientras que los 60 bits restantes están reservados y deben escribirse con ceros.

El software del sistema puede usar el registro TPR para bloquear temporalmente las interrupciones de baja prioridad que afectan a tareas de alta prioridad. Esto se logra asignando a TPR un valor que corresponde a la interrupción de mayor prioridad que se desea bloquear. Por ejemplo, asignar a TPR el valor 9 (1001b) bloquea todas las interrupciones con una clase de prioridad de 9 o inferior, mientras que permite que se reconozcan todas las interrupciones con una clase de prioridad de 10 o superior. Asignar a TPR el valor 0 habilita todas las interrupciones externas. Asignar a TPR el valor 15 (1111b) deshabilita todas las interrupciones externas.

El TPR se restablece a 0 al reiniciar.

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 modificar mediante la lectura privilegiada XSETBV utilizando las instrucciones no privilegiadas XGETBV. [ 22 ]

  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, desde ZMM0 hasta ZMM15, se almacenan en los estados SSE y AVX.
  3. Aunque el AMX clásico viene con 64 bytes, el ancho real, que se recomienda encarecidamente que el software verifique, se informa mediante el registro EAX de la subhoja 17 de la hoja 0xD de CPUID.
  4. Si bien el AMX clásico viene con ocho mosaicos, cada uno compuesto por columnas de 64 bytes y 16 filas, son posibles otras cantidades y dimensiones de mosaicos; el software debe consultar las hojas 0x1D y 0x1E de CPUID para obtener más detalles.
  5. Aunque Intel APX se indica mediante el bit 19 de XCR0, en realidad se escribe, a través de XSAVE (la forma sin compactar), en el espacio no utilizado de 128 bytes que quedó donde iba Intel MPX.

También está el MSR IA32_XSS, ubicado en la dirección DA0h. El MSR IA32_XSS controla los bits de XCR0 que se consideran estado de "supervisor" y deberían ser invisibles para los programas normales. Opera con las instrucciones privilegiadas XSAVES y XRSTORS agregando estado de supervisor a los datos con los que operan. En resumen, si el estado X87 está habilitado en XCR0 y el estado PT está habilitado en IA32_XSS, la instrucción XSAVE solo almacenará el estado X87, mientras que la instrucción privilegiada XSAVES almacenará ambos estados, X87 y PT. Debido a que es un MSR, se puede acceder a él usando las instrucciones RDMSR y WRMSR.

Véase también

Notas

  1. IBM nunca comercializó los modelos 360/64 ni 360/66, solo el 360/67.

Referencias

Manuales de IBM
M67prelim
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 Modelo 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 - Principios de funcionamiento (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 del IBM System/370 (PDF) (Segunda edición). IBM . Enero de 1987. SA22-7085-1 . Consultado el 8 de mayo de 2023 .
S/370-ESA
Principios de funcionamiento de IBM Enterprise Systems Architecture/370 (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 - Principios de funcionamiento (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. Recuperado el 16 de marzo de 2024 .
  2. M67prelim , págs. 25-26 , Registros de control. 
  3. 1 2 M67 , pág. 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 , págs. 4-9–4-12 , Registros de control. 
  13. ↑ Manual de referencia del programador de la familia de microprocesadores Intel486 (PDF) . Intel. 1992. págs. 4-7 . 
  14. 1 2 Intel Corporation (2016). "4.10.1 Identificadores de contexto de proceso (PCID)". Manual del desarrollador de software de las arquitecturas Intel 64 e IA-32 (PDF) . Vol. 3A: Guía de programación del sistema, parte 1. Archivado (PDF) del original el 16 de febrero de 2018. Recuperado el 5 de enero de 2018 . 
  15. 1 2 "Manual del programador de la arquitectura AMD64 Volumen 2: Programación del sistema" (PDF) . AMD . Septiembre de 2012. págs. 127 y 130. Archivado (PDF) del original el 22 de febrero de 2014. Recuperado el 4 de agosto de 2017 . 
  16. "Paginación de 5 niveles y EPT de 5 niveles" (PDF) . Intel . Mayo de 2017. pág. 16. Archivado (PDF) del original el 5 de diciembre de 2018. Recuperado el 23 de enero de 2018 . 
  17. 1 2 3 "Manual del desarrollador de software para arquitecturas Intel 64 e IA-32" (PDF) . Intel® Corporation. 28 de junio de 2021. Consultado el 21 de septiembre de 2021 .
  18. Referencia de programación de extensiones de Software Guard (PDF) . Intel. Septiembre de 2013. 329298-001.Los capítulos 1.7 y 6.5.2 describen CR4.SEE.
  19. Referencia de programación de extensiones de Software Guard (PDF) . Intel. Octubre de 2014. 329298-002.No hace mención de CR4.SEE.
  20. Fischer, Stephen (21 de septiembre de 2011). "Protección de ejecución en modo supervisor" (PDF) . Conferencia de Computación Confiable de la NSA 2011. National Conference Services, Inc. Archivado del original (PDF) el 3 de agosto de 2016. Recuperado el 4 de agosto de 2017 .
  21. Anvin, H. Peter (21-09-2012). "x86: Prevención de acceso en modo supervisor" . LWN.net . Archivado del original el 05-08-2017 . Recuperado el 04-08-2017 .
  22. "Capítulo 13, Gestión del estado mediante el conjunto de funciones Xsave" (PDF) . Manual del desarrollador de software para las arquitecturas Intel(R) 64 e IA-32, Volumen 1: Arquitectura básica . Intel Corporation (2019). Archivado (PDF) del original el 23 de marzo de 2019. Consultado el 23 de marzo de 2019 .
  • Manual del desarrollador de las arquitecturas Intel 64 e IA-32: Vol. 3A
  • Manuales para desarrolladores de software de las arquitecturas Intel 64 e IA-32
  • Documentación técnica: AMD64
  • El mundo de Wyatt: Descifrando el Pentium III (28 de mayo de 1999)