Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
La interfaz de máquina virtual expuesta por cada partición incluye una unidad de administración de memoria (MMU). La MMU virtual expuesta por particiones de hipervisor suele ser compatible con mmus existentes.
Introducción a MMU virtual
Los procesadores virtuales exponen memoria virtual y un TLB virtual (búfer de búsqueda de traducción), que almacena en caché las traducciones de direcciones virtuales a direcciones físicas (invitadas). Al igual que con el TLB en un procesador lógico, el TLB virtual es una caché no coherente y esta no coherencia es visible para los invitados. El hipervisor expone las operaciones para vaciar el TLB. Los invitados pueden usar estas operaciones para quitar entradas potencialmente incoherentes y hacer que las traducciones de direcciones virtuales sean predecibles.
Compatibilidad
La MMU virtual expuesta por el hipervisor es generalmente compatible con la MMU física que se encuentra en un procesador x64. Existen las siguientes diferencias observables por invitado:
- The CR3. PWT y CR3. Es posible que los bits pcD no se admita en algunas implementaciones del hipervisor. En estas implementaciones, cualquier intento por parte del invitado de establecer estas marcas a través de una instrucción MOV a CR3 o se omitirá un modificador de puerta de tareas. Los intentos de establecer estos bits mediante programación a través de HvSetVpRegisters o HvSwitchVirtualAddressSpace pueden producir un error.
- Los bits PWT y PCD dentro de una entrada de tabla de página hoja (por ejemplo, un PTE para páginas de 4 K y un PDE para páginas grandes) especifican la capacidad de caché de la página que se asigna. Los bits PAT, PWT y PCD dentro de las entradas de tabla de páginas no hoja indican la capacidad de caché de la tabla de páginas siguiente de la jerarquía. Es posible que algunas implementaciones de hipervisor no admitan estas marcas. En estas implementaciones, todos los accesos a la tabla de páginas realizados por el hipervisor se realizan mediante atributos de caché de reescritura. Esto afecta, en particular, a los bits de acceso y desfasado escritos en las entradas de la tabla de páginas. Si el invitado establece los bits PAT, PWT o PCD dentro de entradas de tabla de páginas no hoja, se puede generar un mensaje de "característica no admitida" cuando un procesador virtual accede a una página asignada por esa tabla de páginas.
- Es posible que el bit de CR0.CD (deshabilitación de caché) no se admita en algunas implementaciones de hipervisor. En estas implementaciones, el bit de CR0.CD debe establecerse en 0. Cualquier intento por parte del invitado de establecer esta marca a través de una instrucción MOV a CR0 se omitirá. Los intentos de establecer este bit mediante programación a través de HvSetVpRegisters producirán un error.
- MSR de PAT (tipo de dirección de página) es un registro por VP. Sin embargo, cuando todos los procesadores virtuales de una partición establecen el MSR pat en el mismo valor, el nuevo efecto se convierte en un efecto de toda la partición.
- Por motivos de seguridad y aislamiento, la instrucción INVD se virtualizará para actuar como una instrucción WBINVD, con algunas diferencias. Para fines de seguridad, se debe usar CLFLUSH en su lugar.
Operaciones de administración de TLB heredadas
La arquitectura x64 proporciona varias maneras de administrar los TLB del procesador. El hipervisor virtualiza los siguientes mecanismos:
- La instrucción INVLPG invalida la traducción de una sola página del TLB del procesador. Si la dirección virtual especificada se asignó originalmente como página de 4 K, la traducción de esta página se quita del TLB. Si la dirección virtual especificada se asignó originalmente como una "página grande" (ya sea de 2 MB o 4 MB, según el modo MMU), la traducción de toda la página grande se quita del TLB. La instrucción INVLPG vacía las traducciones globales y no globales. Las traducciones globales se definen como las que tienen el bit "global" establecido dentro de la entrada de tabla de páginas.
- Las instrucciones MOV a CR3 y modificadores de tareas que modifican las traducciones cr3 invalidan las traducciones de todas las páginas no globales dentro del TLB del procesador.
- Instrucción MOV a CR4 que modifica la CR4. Bit PGE (habilitación de página global), CR4. Bit PSE (extensiones de tamaño de página) o CR4. PAE (extensiones de dirección de página) invalida todas las traducciones (globales y no globales) dentro del TLB del procesador.
Tenga en cuenta que todas estas operaciones de invalidación solo afectan a un procesador. Para invalidar las traducciones en otros procesadores, el software debe usar un mecanismo de reducción de TLB basado en software (normalmente implementado mediante interrupciones entre procesos).
Mejoras de TLB virtual
Además de admitir los mecanismos de administración de TLB heredados descritos anteriormente, el hipervisor también admite un conjunto de mejoras que permiten a un invitado administrar el TLB virtual de forma más eficaz. Estas operaciones mejoradas se pueden usar indistintamente con las operaciones de administración de TLB heredadas.
El hipervisor admite las siguientes hiperllamadas para invalidar los TLB:
Hypercall | Descripción |
---|---|
HvCallFlushVirtualAddressSpace | Invalida todas las entradas de TLB virtuales que pertenecen a un espacio de direcciones especificado. |
HvCallFlushVirtualAddressSpaceEx | Al igual que HvCallFlushVirtualAddressSpace, toma un VP disperso establecido como entrada. |
HvCallFlushVirtualAddressList | Invalida una parte del espacio de direcciones especificado. |
HvCallFlushVirtualAddressListEx | Al igual que HvCallFlushVirtualAddressList, toma un VP disperso establecido como entrada. |
En algunos sistemas (aquellos con compatibilidad de virtualización suficiente en hardware), las instrucciones de administración de TLB heredadas pueden ser más rápidas para la invalidación de TLB local o remota (entre procesadores). Los invitados interesados en un rendimiento óptimo deben usar el 0x40000004 hoja CPUID para determinar qué comportamientos implementar mediante hiperllamadas:
- UseHypercallForAddressSpaceSwitch: si se establece esta marca, el autor de la llamada debe suponer que es más rápido usar HvCallSwitchAddressSpace para cambiar entre espacios de direcciones. Si esta marca está clara, se recomienda una instrucción MOV a CR3.
- UseHypercallForLocalFlush: si se establece esta marca, el autor de la llamada debe suponer que es más rápido usar hiperllamadas (en lugar de INVLPG o MOV a CR3) para vaciar una o varias páginas del TLB virtual.
- UseHypercallForRemoteFlushAndLocalFlushEntire: si se establece esta marca, el autor de la llamada debe suponer que es más rápido usar hiperllamadas (en lugar de usar interrupciones entre procesadores generadas por invitados) para vaciar una o varias páginas del TLB virtual.
Introducción al control de caché de memoria
El hipervisor admite la configuración de caché definida por el invitado para las páginas asignadas dentro del espacio de GVA del invitado. Para obtener una descripción detallada de la configuración de capacidad de caché disponible y sus significados, consulte la documentación de Intel o AMD.
Cuando un procesador virtual accede a una página a través de su espacio de GVA, el hipervisor respeta los bits de atributo de caché (PAT, PWT y PCD) dentro de la entrada de tabla de páginas invitadas usada para asignar la página. Estos tres bits se usan como un índice en el registro PAT (tipo de dirección de página) de la partición para buscar la configuración de caché final de la página.
Las páginas a las que se accede directamente a través del espacio GPA (por ejemplo, cuando la paginación está deshabilitada porque se borra CR0.PG) usan una capacidad de caché definida por los MTR. Si la implementación del hipervisor no admite MTR virtuales, se asume la capacidad de caché del EDT.
Mezcla de tipos de caché entre una partición y el hipervisor
Los invitados deben tener en cuenta que el hipervisor puede acceder a algunas páginas dentro de su espacio de GPA. En la lista siguiente, aunque no exhaustiva, se proporcionan varios ejemplos:
- página que contiene parámetros de entrada o salida para una hiperllamada
- Todas las páginas superpuestas, incluidas la página de hypercall, las páginas SIEF y SIM de SynIC, y las páginas de estadísticas
El hipervisor siempre realiza accesos a los parámetros de hiperllamada y las páginas de superposición mediante la configuración de capacidad de caché wb.