La traducción de direcciones de segundo nivel (SLAT) , también conocida como paginación anidada , es una tecnología de virtualización asistida por hardware que permite evitar la sobrecarga asociada con las tablas de páginas sombra administradas por software .
AMD ha respaldado SLAT a través de la tecnología Rapid Virtualization Indexing (RVI) desde la introducción de sus procesadores Opteron de tercera generación (nombre en código Barcelona). La implementación de SLAT de Intel , conocida como Extended Page Table (EPT), se introdujo en la microarquitectura Nehalem que se encuentra en ciertos procesadores Core i7 , Core i5 y Core i3 .
Las extensiones de virtualización de ARM admiten SLAT, conocidas como tablas de páginas de etapa 2 proporcionadas por una MMU de etapa 2. El invitado utiliza la MMU de etapa 1. La compatibilidad se agregó como opcional en la arquitectura ARMv7ve y también se admite en las arquitecturas ARMv8 (32 bits y 64 bits).
Descripción general
La introducción del modo protegido en la arquitectura x86 con el procesador Intel 80286 trajo los conceptos de memoria física y memoria virtual a las arquitecturas convencionales. Cuando los procesos utilizan direcciones virtuales y una instrucción solicita acceso a la memoria, el procesador traduce la dirección virtual a una dirección física utilizando una tabla de páginas o un buffer de traducción (TLB). Cuando se ejecuta un sistema virtual, tiene memoria virtual asignada del sistema host que sirve como memoria física para el sistema invitado, y el mismo proceso de traducción de direcciones se lleva a cabo también dentro del sistema invitado. Esto aumenta el costo del acceso a la memoria, ya que la traducción de direcciones debe realizarse dos veces: una dentro del sistema invitado (utilizando una tabla de páginas de invitados emulada por software) y otra dentro del sistema host (utilizando un mapa físico [pmap]).
Para que esta traducción sea eficiente, los ingenieros de software implementaron una tabla de páginas ocultas basada en software. La tabla de páginas ocultas traducirá la memoria virtual del invitado directamente a la dirección de memoria física del host. Cada máquina virtual tiene una tabla de páginas ocultas independiente y el hipervisor se encarga de administrarlas. Pero el costo es muy alto ya que cada vez que un invitado actualiza su tabla de páginas, activará el hipervisor para administrar la asignación de la tabla de páginas y sus cambios.
Para que esta traducción sea más eficiente, los proveedores de procesadores implementaron tecnologías comúnmente llamadas SLAT. Al tratar cada dirección física del invitado como una dirección virtual del host, una pequeña extensión del hardware utilizado para recorrer una tabla de páginas no virtualizada (ahora la tabla de páginas del invitado) puede recorrer la tabla de páginas del host. Con tablas de páginas de varios niveles, la tabla de páginas del host se puede ver conceptualmente como anidada dentro de la tabla de páginas del invitado. Un caminante de tablas de páginas de hardware puede tratar la capa de traducción adicional casi como si estuviera agregando niveles a la tabla de páginas.
Al utilizar SLAT y tablas de páginas multinivel, la cantidad de niveles que se deben recorrer para encontrar la traducción se duplica cuando la dirección física del invitado tiene el mismo tamaño que la dirección virtual del invitado y se utilizan páginas del mismo tamaño. Esto aumenta la importancia de almacenar en caché los valores de los niveles intermedios de las tablas de páginas del host y del invitado. También resulta útil utilizar páginas grandes en las tablas de páginas del host para reducir la cantidad de niveles (por ejemplo, en x86-64, el uso de páginas de 2 MB elimina un nivel en la tabla de páginas). Dado que la memoria generalmente se asigna a las máquinas virtuales con una granularidad gruesa, el uso de páginas grandes para la traducción física del invitado es una optimización obvia, que reduce la profundidad de las búsquedas y la memoria requerida para las tablas de páginas del host.
Implementaciones
Indexación rápida de virtualización
Rapid Virtualization Indexing (RVI), conocido como Nested Page Tables (NPT) durante su desarrollo, es una tecnología de virtualización asistida por hardware de segunda generación de AMD para la unidad de gestión de memoria (MMU) del procesador. [1] [2] RVI se introdujo en la tercera generación de procesadores Opteron , nombre en código Barcelona . [3]
Un artículo de investigación de VMware concluyó que RVI ofrece hasta un 42 % de aumento en el rendimiento en comparación con la implementación solo por software (tabla de páginas ocultas). [4] Las pruebas realizadas por Red Hat mostraron una duplicación del rendimiento en los puntos de referencia de OLTP . [5]
Tablas de páginas extendidas
Extended Page Tables (EPT) es una tecnología de virtualización x86 de segunda generación de Intel para la unidad de administración de memoria (MMU). La compatibilidad con EPT se encuentra en las CPU Core i3 , Core i5 , Core i7 y Core i9 de Intel , entre otras. [6] También se encuentra en algunas CPU VIA más nuevas . EPT es necesaria para iniciar un procesador lógico directamente en modo real , una característica llamada "huésped sin restricciones" en la jerga de Intel, e introducida en la microarquitectura Westmere . [7] [8]
Según un documento de evaluación de VMware, "EPT proporciona ganancias de rendimiento de hasta un 48% para pruebas comparativas intensivas en MMU y hasta un 600% para micropruebas comparativas intensivas en MMU", aunque en realidad puede provocar que el código se ejecute más lento que una implementación de software en algunos casos especiales . [9]
Tablas de páginas de la etapa 2
El soporte de la tabla de páginas de etapa 2 está presente en los procesadores ARM que implementan el nivel de excepción 2 (EL2).
Extensiones
Control de ejecución basado en modos
El control de ejecución basado en modos ( MBEC ) es una extensión de las implementaciones de SLAT x86 disponibles por primera vez en las CPU Intel Kaby Lake y AMD Zen+ (conocida en este último como Guest Mode Execute Trap o GMET ). [10] La extensión extiende el bit de ejecución en la tabla de páginas extendidas (tabla de páginas de invitados) en 2 bits: uno para la ejecución del usuario y otro para la ejecución del supervisor. [11]
MBE se introdujo para acelerar la ejecución de código sin firmar en modo de usuario invitado con la aplicación de la integridad del código en modo kernel. Con esta configuración, las páginas de código sin firmar se pueden marcar como de ejecución en modo usuario, pero se deben marcar como de no ejecución en modo kernel. Para mantener la integridad al garantizar que todo el código ejecutable en modo kernel invitado esté firmado incluso cuando el kernel invitado esté comprometido, el kernel invitado no tiene permiso para modificar el bit de ejecución de ninguna página de memoria. La modificación del bit de ejecución, o el cambio de la tabla de páginas de invitado que contiene el bit de ejecución, se delega a una entidad con privilegios superiores, en este caso el hipervisor del host . Sin MBE, cada entrada desde la ejecución en modo usuario sin firmar a la ejecución en modo kernel firmado debe ir acompañada de una salida de VM al hipervisor para realizar un cambio a la tabla de páginas en modo kernel. En la operación inversa, una salida del modo kernel firmado al modo usuario sin firmar debe ir acompañada de una salida de VM para realizar otro cambio de tabla de páginas. Las salidas de VM afectan significativamente el rendimiento de la ejecución del código. [12] [13] Con MBE, la misma tabla de páginas se puede compartir entre código de modo de usuario sin firmar y código de modo kernel firmado, con dos conjuntos de permisos de ejecución según el contexto de ejecución. Las salidas de VM ya no son necesarias cuando el contexto de ejecución cambia entre el modo de usuario sin firmar y el modo kernel firmado.
Soporte en software
Los hipervisores que admiten SLAT incluyen los siguientes:
- Hyper-V para Windows Server 2008 R2 , Windows 8 y versiones posteriores. [14] Hyper-V para Windows 8 (y versiones posteriores de Microsoft Windows) requiere SLAT. [15] [16]
- Hypervisor.framework, un hipervisor nativo de macOS , disponible desde macOS 10.10 [17]
- KVM , desde la versión 2.6.26 de la línea principal del kernel de Linux [18] [19]
- Parallels Desktop para Mac , desde la versión 5 [20]
- VirtualBox , desde la versión 2.0.0 [21]
- VMware ESX , desde la versión 3.5 [4]
- VMware Workstation . VMware Workstation 14 (y versiones posteriores de VMware Workstation) requiere SLAT. [22]
- Xen , desde la versión 3.2.0 [23]
- Qubes OS : SLAT obligatorio [24]
- bhyve [25] [26] — SLAT obligatorio y programado para seguir siendo obligatorio
- vmm, un hipervisor nativo en OpenBSD — SLAT obligatorio [27] [28]
- ACRN, un hipervisor liviano de código abierto, creado teniendo en mente el tiempo real y la criticidad de seguridad, optimizado para usos de IoT y Edge . [29]
- QEMU : un hipervisor integrable de código abierto y un emulador de chipset. [30] [31] [32] [33] [34]
Algunos de los hipervisores anteriores requieren SLAT para funcionar (no solo más rápido) ya que no implementan una tabla de páginas de sombra de software; la lista no está completamente actualizada para reflejar eso.
Véase también
- AMD-V (nombre en código Pacifica): soporte de virtualización de hardware AMD de primera generación
- Tabla de páginas
- VT-x
Referencias
- ^ "Rapid Virtualization Indexing with Windows Server 2008 R2 Hyper-V | The Virtualization Blog" (Indexación rápida de virtualización con Windows Server 2008 R2 Hyper-V | El blog de virtualización). Blogs.amd.com. 23 de marzo de 2009. Consultado el 16 de mayo de 2010 .
- ^ "Paginación anidada de AMD-V" (PDF) . Julio de 2008. Archivado desde el original (PDF) el 5 de septiembre de 2012. Consultado el 11 de diciembre de 2013 .
- ^ "Un ingeniero de VMware elogia las tablas de páginas anidadas de AMD". Searchservervirtualization.techtarget.com. 2008-07-21 . Consultado el 2010-05-16 .
- ^ ab "Evaluación del rendimiento de AMD RVI Hardware Assist" (PDF) . Consultado el 16 de mayo de 2010 .
- ^ "Red Hat Magazine | Red Hat Enterprise Linux 5.1 utiliza paginación anidada en el procesador AMD Barcelona para mejorar el rendimiento de los huéspedes virtualizados". Magazine.redhat.com. 20 de noviembre de 2007. Consultado el 16 de mayo de 2010 .
- ^ "Lista de tecnologías de virtualización de Intel". Ark.intel.com . Consultado el 17 de febrero de 2014 .
- ^ "Intel agregó un modo de invitado sin restricciones en la microarquitectura Westmere y en las CPU Intel posteriores. Utiliza EPT para traducir el acceso a la dirección física del invitado a la dirección física del host. Con este modo, se permite VMEter sin paginación habilitada".
- ^ "Manual del desarrollador de arquitecturas Intel 64 e IA-32, vol. 3C" (PDF) . Intel . Consultado el 13 de diciembre de 2015 .
Si el control de ejecución de VM "huésped sin restricciones" es 1, el control de ejecución de VM "habilitar EPT" también debe ser 1.
- ^ Evaluación del rendimiento de Intel EPT Hardware Assist
- ^ Cunningham, Andrew (27 de agosto de 2021). «Por qué Windows 11 tiene requisitos de hardware tan estrictos, según Microsoft». Ars Technica . Consultado el 18 de marzo de 2024 .
- ^ Mulnix, David L. "Descripción técnica de la familia de procesadores escalables Intel Xeon". intel . Consultado el 3 de septiembre de 2021 .
- ^ Análisis de la superficie de ataque de la seguridad basada en virtualización de Windows 10
- ^ Arkley, Brent. "El impacto potencial en el rendimiento de Device Guard (HVCI)". Blog sobre el legado de Borec y la gestión moderna de dispositivos . Consultado el 3 de septiembre de 2021 .
- ^ "Indexación de virtualización rápida AMD-V y traducción de direcciones de segundo nivel de Hyper-V en Windows Server 2008 R2". Doing IT Virtual . Consultado el 16 de mayo de 2010 .
- ^ Bott, Ed (8 de diciembre de 2011). "¿Tiene su PC lo necesario para ejecutar Hyper-V de Windows 8?". ZDNet . Consultado el 17 de febrero de 2014 .
- ^ "Soporte y controladores" . Consultado el 13 de diciembre de 2015 .
- ^ "Hipervisor | Documentación para desarrolladores de Apple".
- ^ "Principiantes del kernel: Linux 2 6 26".
- ^ Sheng Yang (12 de junio de 2008). "Extensión de KVM con la nueva tecnología de virtualización de Intel" (PDF) . linux-kvm.org . Foro KVM. Archivado desde el original (PDF) el 27 de marzo de 2014 . Consultado el 17 de marzo de 2013 .
- ^ Inc, Parallels. "KB Parallels: Novedades de Parallels Desktop 5 para Mac". kb.parallels.com . Consultado el 12 de abril de 2016 .
{{cite web}}:|last=tiene nombre genérico ( ayuda ) - ^ "Registro de cambios de VirtualBox 2.0". Archivado desde el original el 22 de octubre de 2014.
- ^ liz. "Notas de la versión de VMware Workstation 14 Pro". docs.vmware.com . Consultado el 19 de noviembre de 2020 .
- ^ "Puntos de referencia: Xen 3.2.0 en AMD Quad-Core Opteron con RVI". 2008-06-15 . Consultado el 2011-05-13 .
- ^ "Lista de compatibilidad de hardware (HCL)". Qubes OS . Consultado el 6 de enero de 2020 .
- ^ Implementación de un soporte de emulación de BIOS para BHyVe: un hipervisor BSD
- ^ "21.7. FreeBSD como host con bhyve" . Consultado el 13 de diciembre de 2015 .
- ^ Próximamente en OpenBSD/amd64: un hipervisor nativo
- ^ vmm(4) — monitor de máquina virtual
- ^ Diseño de alto nivel de gestión de memoria ACRN
- ^ "Características/VT-d - QEMU". wiki.qemu.org . Consultado el 12 de noviembre de 2023 .
- ^ "Iluminaciones de Hyper-V: documentación de QEMU". www.qemu.org . Consultado el 12 de noviembre de 2023 .
- ^ "Añadir traducción anidada de Intel VT-d [LWN.net]". lwn.net . Consultado el 12 de noviembre de 2023 .
- ^ "Virtualización de Intel: cómo trabajan juntos VT-x, KVM y QEMU". Deuda binaria . 2018-10-14 . Consultado el 2023-11-12 .
- ^ "Características/KVMNestedVirtualizationTestsuite - QEMU". wiki.qemu.org . Consultado el 12 de noviembre de 2023 .
Enlaces externos
- Método y sistema para la traducción de direcciones de segundo nivel en un entorno de máquina virtual (patente)
- Beneficios de la traducción de direcciones de segundo nivel en Hyper-V R2
- Virtualización en Linux KVM + QEMU (PDF)