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 de sombra administradas por software .
AMD ha brindado soporte a SLAT mediante la tecnología Rapid Virtualization Indexing (RVI) desde la introducción de sus procesadores Opteron de tercera generación (nombre en clave Barcelona). La implementación de SLAT de Intel , conocida como Extended Page Table (EPT), se introdujo en la microarquitectura Nehalem presente 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 sistema invitado utiliza la MMU de etapa 1. Esta compatibilidad se añadió como opcional en la arquitectura ARMv7ve y también es compatible con las arquitecturas ARMv8 (de 32 y 64 bits).
Descripción general
La introducción del modo protegido en la arquitectura x86 con el procesador Intel 80286 llevó los conceptos de memoria física y 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 mediante una tabla de páginas o un búfer de traducción anticipada (TLB). Al ejecutar un sistema virtual, se asigna memoria virtual del sistema anfitrión que actúa 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 coste del acceso a la memoria, ya que la traducción de direcciones debe realizarse dos veces : una dentro del sistema invitado (mediante una tabla de páginas emulada por software) y otra dentro del sistema anfitrión (mediante un mapa físico [pmap]).
Una tabla de páginas de sombra basada en software es una solución común para reducir la sobrecarga de traducción en comparación con la doble traducción. Las tablas de páginas de sombra traducen las direcciones virtuales del sistema invitado directamente a direcciones físicas del sistema anfitrión. Cada máquina virtual tiene una tabla de páginas de sombra independiente y el hipervisor se encarga de gestionarlas. Si bien las tablas de páginas de sombra son más rápidas que la doble traducción, siguen siendo costosas en comparación con no ejecutarse en una máquina virtual : cada vez que un sistema invitado actualiza sus tablas de páginas, requiere que el hipervisor también gestione los cambios en las tablas de sombra.
Para optimizar esta traducción, los fabricantes de procesadores implementaron tecnologías conocidas como SLAT. Al tratar cada dirección física del sistema invitado como una dirección virtual del sistema anfitrión, una ligera extensión del hardware utilizado para recorrer una tabla de páginas no virtualizada (ahora la tabla de páginas del sistema invitado) puede recorrer la tabla de páginas del sistema anfitrión. Con tablas de páginas multinivel, la tabla de páginas del sistema anfitrión puede considerarse conceptualmente como anidada dentro de la tabla de páginas del sistema invitado. Un analizador de tablas de páginas de hardware puede tratar la capa de traducción adicional prácticamente como si añadiera niveles a la tabla de páginas.
Al usar SLAT y tablas de páginas multinivel, el número 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 usan 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 anfitrión y del invitado. También es útil usar páginas grandes en las tablas de páginas del anfitrión para reducir el número de niveles (por ejemplo, en x86-64 , usar páginas de 2 MB elimina un nivel en la tabla de páginas). Dado que la memoria se asigna normalmente a las máquinas virtuales con una granularidad gruesa, usar páginas grandes para la traducción de direcciones físicas al 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 anfitrión.
Implementaciones
Indexación de virtualización rápida
La indexación de virtualización rápida (RVI), conocida como tablas de páginas anidadas (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 clave Barcelona . [ 3 ]
Un documento de investigación de VMware encontró que RVI ofrece hasta un 42 % de mejora en el rendimiento en comparación con la implementación solo por software (tabla de páginas en la sombra). [ 4 ] Las pruebas realizadas por Red Hat mostraron una duplicación del rendimiento para los benchmarks OLTP . [ 5 ]
Tablas de página extendidas
Las tablas de páginas extendidas (EPT) son una tecnología de virtualización x86 de segunda generación de Intel para la unidad de gestió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 recientes . EPT es necesaria para iniciar un procesador lógico directamente en modo real , una característica denominada "invitado 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 mejoras de rendimiento de hasta un 48 % para pruebas de rendimiento intensivas en MMU y de hasta un 600 % para micropruebas de rendimiento intensivas en MMU", aunque en algunos casos extremos puede provocar que el código se ejecute más lentamente que una implementación de software . [ 9 ]
Tablas de páginas de la etapa 2
La compatibilidad con tablas 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 disponible por primera vez en las CPU Intel Kaby Lake y AMD Zen 2 (conocida en esta última como Guest Mode Execute Trap o GMET ). [ 10 ] La extensión amplía el bit de ejecución en la tabla de páginas extendida (tabla de páginas de invitado) a 2 bits: uno para la ejecución del usuario y otro para la ejecución del supervisor. [ 11 ]
MBEC se introdujo para acelerar la ejecución de código no firmado en modo usuario invitado con aplicación de la integridad del código en modo kernel. Bajo esta configuración, las páginas de código no firmado pueden marcarse como ejecutables en modo usuario, pero deben marcarse como no ejecutables en modo kernel. Para mantener la integridad asegurando 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 del 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 de la ejecución en modo usuario no firmado a la ejecución en modo kernel firmado debe ir acompañada de una salida de la máquina virtual 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 no firmado debe ir acompañada de una salida de la máquina virtual para realizar otro cambio de tabla de páginas. Las salidas de la máquina virtual impactan significativamente el rendimiento de la ejecución del código. [ 12 ] [ 13 ] Con MBE, la misma tabla de páginas puede ser compartida entre código en modo usuario sin firmar y código en modo kernel firmado, con dos conjuntos de permisos de ejecución dependiendo del contexto de ejecución. Las salidas de la máquina virtual ya no son necesarias cuando el contexto de ejecución cambia entre el modo usuario sin firmar y el modo kernel firmado.
Soporte de software
Los hipervisores que admiten SLAT incluyen los siguientes:
- Hyper-V para Windows Server 2008 R2 , Windows 8 y versiones posteriores. [ 14 ] Hyper-V de 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 del kernel principal 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 siéndolo.
- vmm, un hipervisor nativo en OpenBSD — SLAT obligatorio [ 27 ] [ 28 ]
- ACRN , un hipervisor ligero de código abierto, construido teniendo en cuenta el tiempo real y la criticidad de seguridad, optimizado para usos de IoT y Edge . [ 29 ]
- QEMU : un hipervisor y emulador de chipset integrable de código abierto. [ 30 ] [ 31 ] [ 32 ] [ 33 ] [ 34 ]
Algunos de los hipervisores mencionados anteriormente requieren SLAT para funcionar correctamente (no solo para ser más rápidos), ya que no implementan una tabla de páginas de sombra de software; la lista no está completamente actualizada para reflejar esto.
Véase también
- AMD-V (nombre en clave Pacifica) : la primera generación de soporte de virtualización de hardware de AMD.
- Tabla de páginas
- VT-x
Referencias
- ↑ "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 .
- ↑ "AMD-V Nested Paging" (PDF) . Julio de 2008. Archivado del original (PDF) el 5 de septiembre de 2012. Consultado el 11 de diciembre de 2013 .
- ↑ "Ingeniero de VMware elogia las tablas de páginas anidadas de AMD" . Searchservervirtualization.techtarget.com. 21 de julio de 2008. Consultado el 16 de mayo de 2010 .
- 1 2 "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 las máquinas virtuales invitadas" . Magazine.redhat.com. 2007-11-20 . Consultado el 2010-05-16 .
- ↑ "Lista de tecnologías de virtualización de Intel" . Ark.intel.com . Consultado el 17 de febrero de 2014 .
- ↑ "Intel añadió un modo de invitado sin restricciones en la microarquitectura Westmere y en las CPU Intel posteriores. Este modo 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 ejecutar VMEnter sin habilitar la paginación."
- ↑ "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 la máquina virtual 'invitado sin restricciones' es 1, el control de ejecución de la máquina virtual '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 Intel Xeon Scalable" . 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 de Borec: La gestión de dispositivos tradicionales se encuentra con la gestión moderna . Consultado el 3 de septiembre de 2021 .
- ↑ "Indexación de virtualización rápida de 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 en el kernel: Linux 2 6 26" .
- ↑ Sheng Yang (12 de junio de 2008). "Ampliando KVM con la nueva tecnología de virtualización de Intel" (PDF) . linux-kvm.org . Foro KVM. Archivado del 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 del original el 22/10/2014.
- ↑ liz. "Notas de la versión de VMware Workstation 14 Pro" . docs.vmware.com . Consultado el 19 de noviembre de 2020 .
- ↑ "Benchmarks: Xen 3.2.0 en AMD Quad-Core Opteron con RVI" . 15 de junio de 2008. Archivado del original el 1 de septiembre de 2011. Consultado el 13 de mayo de 2011 .
- ↑ "Lista de compatibilidad de hardware (HCL)" . Qubes OS . Consultado el 6 de enero de 2020 .
- ↑ Implementación de 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 la gestión de memoria de ACRN
- ↑ "Características/VT-d - QEMU" . wiki.qemu.org . Consultado el 12 de noviembre de 2023 .
- ↑ "Información sobre Hyper-V: documentación de QEMU" . www.qemu.org . Consultado el 12 de noviembre de 2023 .
- ↑ "Agregar traducción anidada Intel VT-d [ LWN.net ] " . lwn.net . Consultado el 12/11/2023 .
- ↑ "Virtualización de Intel: cómo VT-x, KVM y QEMU trabajan juntos" . Binary Debt . 14 de octubre de 2018. Consultado el 12 de noviembre de 2023 .
- ↑ "Features/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)
- Ventajas de la traducción de direcciones de segundo nivel en Hyper-V R2. Archivado el 18/11/2016 en Wayback Machine.
- Virtualización en Linux KVM + QEMU (PDF)
- Microprocesadores Intel x86
- Virtualización de hardware