Table of Contents
Comprender la virtualización de hardware y el papel crítico de los registros de la CPU
La virtualización ha transformado el cálculo moderno, permitiendo a los proveedores de nube, las empresas y los centros de datos para maximizar la utilización de hardware mediante la ejecución de múltiples sistemas operativos y aplicaciones en un solo servidor físico. En el corazón de esta tecnología se encuentra el hipervisor, una capa de software que administra máquinas virtuales (VMs). Sin embargo, la capacidad del hipervisor para controlar eficientemente la ejecución de VM, los entornos de invitados aislados y cambiar entre ellos depende en gran medida de un componente fundamental de la ultraculación de los pequeños usuarios.
¿Cuáles son los registros de la CPU? Los bloques de construcción del estado del procesador
Los registros son los lugares de memoria más rápidos dentro de un procesador. Viven directamente en la CPU muere y pueden leerse o escribirse dentro de un solo ciclo de relojes —ordenes de magnitud más rápido que memoria de caché o RAM. Típicamente medido en bits (32-bit, 64-bit), registros almacenan datos críticos como la siguiente dirección de instrucción (contador de programas o puntero de instrucciones), el puntero de la pieza actual, resultados aritméticos, y los resultados de memoria aritméticos severamente de control.
Clasificación de los registros
- Registros generales (GPRs): Se utiliza para operaciones aritméticas, lógicas y movimiento de datos. En arquitecturas x86-64, se registran como RAX, RBX, RCX, RDX, RDX, RSI, RDI, R8-R15.
- Registros de uso especial: Incluya el puntero de instrucción (RIP en x86-64), puntero de pila (RSP), y registro de banderas (RFLAGS). Estos controlan el flujo de ejecución y estado.
- Registros de control: En x86, registra CR0, CR2, CR3, CR4, y CR8 funciones de control del sistema de control como extensiones de paging, protección y virtualización.
- Registros de segmentos : CS, DS, ES, FS, GS, SS administran la segmentación de memoria, aunque ahora en gran medida vestigial en modo de 64 bits, siguen siendo importantes para la compatibilidad heredada y algunos escenarios de VM.
- Registros de estilo moderno (MSRs): Registros de procesamiento específicos que controlan características como contadores de rendimiento, temperatura y extensiones de virtualización. No forman parte del conjunto de registro estándar y deben ser accedidos a través de instrucciones RDMSR/WRMSR.
- Registros de depuración: DR0-DR7 usados para puntos de ruptura de hardware y depuración.
Cada VM que se ejecuta en un hipervisor necesita su propia copia de estos registros para mantener un contexto de ejecución independiente. Cuando el hipervisor cambia de un VM a otro, ahorra el estado de registro de VM saliente y restaura el estado de VM entrante. Este interruptor de contexto debe ser extremadamente rápido para evitar la sobrecarga de rendimiento notable.
Función central de los registros en la virtualización
El hipervisor (a menudo llamado Monitor de Máquina Virtual, VMM) actúa como árbitro de recursos de hardware. Los registros son el mecanismo primario a través del cual el VMM mantiene el estado de VMM, impone el aislamiento e intercepta operaciones privilegiadas. Aquí están las formas clave de registro permiten la virtualización:
Conservación y conmutación de contexto
Cada VM se asigna un conjunto virtualizado de registros. Cuando el hipervisor realiza un interruptor de contexto (por ejemplo, el tiempo compartido entre dos VM), guarda los valores de registro actuales en una estructura de memoria llamada el bloque de control de máquinas virtuales (VMCB en AMD) o la estructura de control de máquinas virtuales (VMCS en Intel). Luego carga el siguiente estado de registro guardado de VMUN, este proceso incluye decenas de registros y debe ser optimizado.
Virtualización de la enseñanza-Nivel
Los sistemas operativos de los huéspedes esperan ejecutar instrucciones privilegiadas (por ejemplo, cambiando tablas de página, actualizando descriptores de interrumpir). En la virtualización clásica de trampa y aislamiento, cuando el invitado intenta modificar un registro privilegiado, la CPU levanta una trampa, y el hipervisor intercepta la instrucción, emula su efecto en el registro virtual, y devuelve el control al huésped. Esto garantiza que el huésped no puede alterar el estado de hardware real.
Solución mediante protección del registro
Registros como CR3 (página base) y CR0 (imágenes de control) afectan directamente la memoria y la protección. Si un sistema operativo de invitados puede modificar CR3, podría mapear la memoria física perteneciente a otro VM. El hipervisor lo impide estableciendo una tabla de páginas sombra o utilizando tablas de páginas anidadas (EPT/NPT) donde el hipervisor controla la traducción de la dirección de segundo nivel.
Manualización de registros modelo-específicos (MSRs)
MSRs control funciones como extensiones de depuración, monitoreo de rendimiento y gestión de potencia. Muchos MSR son per-core y afectan a toda la CPU física. Virtualizarlos es complicado porque no se guardan/restorsionan automáticamente durante los conmutadores de contexto VM. El hipervisor debe utilizar una combinación de acceso de captura (a través de mapas de bits MSR) y emular lecturas/es de MSR para presentar cada rastros de VM
Tipos de Registros específicamente utilizados en la virtualización
Registros generales de población
Los GPR son los registros más a menudo accedidos. Cada VM obtiene su propio conjunto de valores para RAX a través de R15. Durante el cambio de contexto, todos los GPRs se guardan y restauran. Los hipervisores críticos de rendimiento pueden utilizar características de CPU como segmentación de memoria (FS, GS) para almacenar punteros per-VM para evitar la contaminación de caché.
Registros de control (CR0, CR2, CR3, CR4, CR8)
- CR0: Controles de los modos de funcionamiento del procesador (Pintura de PE para modo protegido, PG bit para paging). Los intentos de los huéspedes de modificar PE o PG deben ser interceptados.
- CR2: Contiene la última dirección lineal de fallas de página. Los hipervisores confían en esto para implementar la paging de demanda y manejar fallas de página anidadas.
- CR3: Mantiene la dirección base de la jerarquía de tablas de página. La virtualización asistida por hardware utiliza Tablas de página extendidas (EPT) en tablas de página de Intel o Nested (NPT) en AMD, por lo que el CR3 de invitados apunta a páginas físicas de invitados, y las tablas de segundo nivel del hipervisor mapean de invitado físico a máquina.
- CR4: Permite características como Extensión de Dirección Física (PAE), SMEP, SMAP y extensiones de virtualización ( bit VMXE). Las modificaciones de los clientes son interceptadas y validadas.
- CR8: Registro de prioridad de la tarea, utilizado para la gestión de la interrupción. El hipervisor virtualiza esto para controlar la interrupción de la entrega a los VMs.
Registros de segmentos
Aunque la segmentación no se utiliza en modo de 64 bits, los registros de segmentos (CS, DS, SS, ES, FS, GS) todavía contienen caches ocultos descriptores que almacenan base, límite y atributos. En la virtualización, el hipervisor debe virtualizar estos valores caché porque afectan los permisos de acceso a la memoria. La segmentación de los clientes puede ser emulada por el hipervisor utilizando limitaciones de paging.
Registros de modelos (MSR) en virtualización
El sistema de control de la base de MLT SP es muy importante para la virtualización. Por ejemplo: - IA32 VMX BASIC y Idiox VMX MISC describen las capacidades de la CPU para el hipermetro Intel VMX.
Registros de depuración (DR0–DR7)
Los registros de depuración son per-core y pueden ser establecidos por el sistema operativo invitado para depurar. El hipervisor debe guardar y restaurarlos en los interruptores de contexto. Además, el software malicioso podría utilizar los registros de depuración para salir de la VM si no se virtualiza adecuadamente.
Extensiones de virtualización de hardware: Cómo se aumentan los registros
Antes de las extensiones de hardware, la virtualización de software puro (traducción binaria) sufrió importantes sanciones de rendimiento. Intel introdujo VT-x (Tecnología de la virtualización) y AMD introdujo AMD-V (Pacifica) para añadir nuevos modos de CPU y estructuras de registro dedicadas que simplifican la virtualización.
Intel VT-x: VMCS y Guest/Host State Fields
La estructura de control de máquinas virtuales (VMCS) es una estructura de datos de memoria que contiene todo el estado de registro para un VM. Incluye: - Área de estado de invitados: copias de CR0, CR3, RSP, RIP, RFLAGS, registros de segmentos, y más. - Área de estado anfitrión: guarda el estado de registro del hipervisor para ser restaurado en salidas VM. - Campos de control: especificar qué eventos causa de salidas.
El VMCS se carga en el procesador a través de la instrucción VMPTRLD, y el cambio de contexto entre VMs es rápido porque el procesador ahorra /restores todo el estado invitado en una operación. La instrucción VMXON activa el modo de virtualización; el modo raíz VMX (hipervisor) y el modo no raíz (invitado) cada uno tiene sus propios niveles de privilegio.
AMD-V: VMCB
AMD utiliza el bloque de control de máquinas virtuales (VMCB), almacenado en memoria física. La instrucción VMRUN carga el VMCB y se conmuta al modo de invitado. Como VMCS, VMCB contiene estado de registro de invitados y anfitriones y controles para interceptar eventos. AMD también utiliza tablas de página anidadas (NPT) que dependen de un conjunto separado de registros de páginas controlados por el hipervisor.
Extensiones de virtualización ARMv8
Los procesadores ARM tienen sus propias extensiones de virtualización (VHE) que proporcionan EL2 (nivel de privilegios de Hypervisor). Registros como HCR EL2 control de la virtualización del comportamiento, y el VTTBR EL2 tiene la dirección base para la tabla de traducción de segunda etapa. ARM no requiere una estructura similar a VMCS, sino que se basa en bancos de registro que se intercambian en el interruptor de contexto usando el VMPIDR, VPIDR, y el VPIDR.
Consideraciones de la actuación profesional en la gestión del registro
El costo de guardar y restaurar registros durante las transiciones de VM es un factor de rendimiento crítico. Cada salida y entrada de VM implica docenas de cargas y tiendas de registro. La virtualización asistida por hardware reduce esta sobrecarga porque el procesador en sí realiza ahorro/restore a granel utilizando microcódigo, pero las salidas son todavía costosas (cientos de ciclos).
Minimización de salidas VM
El hipervisor puede configurar el VMCS/VMCB para evitar salidas frecuentes. Por ejemplo, muchos accesos MSR pueden manejarse sin una salida VM si el hipervisor prepobla los bitmaps MSR para permitir el acceso directo de los huéspedes (para MSR benignas como contador de tiempo). Además, las CPU modernas soportan funciones APICv y IOMMU que reducen las salidas para la interrupción y las operaciones I/O.
Registro Caching y Shadowing
Algunos hipervisores cache de invitados registran valores en la estructura de datos VCPU para evitar cargas redundantes. Por ejemplo, el CR3 invitado es a menudo sombreado: el hipervisor mantiene una copia y sólo actualiza el CR3 real cuando el huésped cambia sus tablas de página. De manera similar, los valores de MSR del huésped pueden ser caché y perezoso.
Impacto de la virtualización anidada
Cuando un hipervisor se ejecuta dentro de una VM ( virtualización digitalizada), el hipervisor externo debe virtualizar las estructuras VMCS/VMCB mismas. Esto requiere cuidado adicional con registros, por ejemplo, la instrucción VMLAUNCH del hipervisor interno debe ser interceptada y emulada por el hipervisor externo, causando ahorros/resistencias de registro extra. Soporte de hardware para la virtualización anidad (SVM en AMD, VMX en Intel).
Implicaciones de seguridad de la virtualización del registro
Los registros son un objetivo principal para ataques de canal lateral y escalada de privilegios. Un hipervisor comprometido podría filtrar valores de registro entre VMs si el cambio de contexto no es minucioso. Por ejemplo, durante un interruptor de contexto, los datos de residuos en registros que no son sobrescritos pueden ser observados por el próximo VM. Hypervisors deben eliminar registros sensibles (como registros de depuración y MSR que tienen claves secretas) antes de cargar el nuevo VM.
Vulnerabilidades de ejecución especulativa
Los ataques de fusión y espectro explotan el hecho de que la ejecución especulativa puede acceder a valores de registro que no son arquitectónicamente visibles. En la virtualización, el estado de registro del hipervisor podría filtrarse a un huésped malicioso a través de canales laterales microarquitecturales. Las mitigación incluyen los búferes de destino de la rama de lavado (IBRS, IBPB) y el uso de MSR especiales que controlan la predicción.
Registros y seguridad inmutables
Algunos MSR (como los números de serie de depuración de control o procesador) nunca deben ser accedidos por los huéspedes. El hipervisor establece los bitmaps MSR para causar una salida VM en cualquier acceso, luego devuelve un error o un valor falso. Esto evita fuga de información o daño de hardware.
Desafíos y futuras orientaciones
Si bien las CPU modernas proporcionan un soporte de virtualización de registro rico, quedan desafíos. Un problema importante es el número creciente de MSRs a medida que las CPU añaden características: cada nueva MSR puede tener que virtualizarse, lo que puede llevar a estructuras VMCS/VMCB más grandes y conmutadores de contexto más lentos. Otro reto es computación heterogénea: Los núcleos de CPU pueden presentar funciones en una configuración de una interfaz muy frecuente.
El hardware futuro puede incluir registros de hardware dedicados para la virtualización, como un archivo de registro de virtualización por núcleo que se conmuta automáticamente en la entrada/salida de VM sin guardar/restore explícito. Adicionalmente, computación accidental tecnologías como Intel TDX y AMD SEV dependen de la encriptación de memoria e integridad, pero registran el estado dentro del sistema de control de la unidad de datos.
Conclusión
Los registros de la CPU son los héroes de virtualización de hardware. Almacenan el estado crítico de cada máquina virtual, imponen el aislamiento a través del acceso controlado, y permiten que el hipervisor cambie entre VMs con una sobrecarga mínima. Desde registros de uso general hasta controlar registros y MSRs, cada tipo juega un papel específico en mantener la ilusión de hardware dedicado para cada huésped.