stringtranslate.com

Traducción de direcciones de segundo nivel

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 ocultas 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 clave Barcelona). La implementación de SLAT de Intel , conocida como tabla de páginas extendida (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 Stage-2 proporcionadas por una MMU Stage-2 . El invitado utiliza la MMU Stage-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 llevó los conceptos de memoria física y memoria virtual a las arquitecturas convencionales. Cuando los procesos usan 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 búfer de traducción (TLB). Cuando se ejecuta un sistema virtual, se le asigna memoria virtual del sistema host que sirve como memoria física para el sistema invitado, y el mismo proceso de traducción de direcciones también ocurre 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 vez dentro del sistema invitado (usando una tabla de páginas de invitados emulada por software) y otra dentro del sistema host (usando el 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 VM tiene una tabla de páginas ocultas separada y el hipervisor está a cargo de administrarlas. Pero el costo es muy elevado ya que cada vez que un invitado actualiza su tabla de páginas, hará que el hipervisor administre la asignación de la tabla de páginas y sus cambios.

Para hacer esta traducción más eficiente, los proveedores de procesadores implementaron tecnologías comúnmente llamadas SLAT. Al tratar cada dirección física de invitado como una dirección virtual de host, una ligera extensión del hardware utilizado para recorrer una tabla de páginas no virtualizada (ahora la tabla de páginas de invitado) puede recorrer la tabla de páginas de host. Con las 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 tabla de páginas de hardware puede tratar la capa de traducción adicional casi como agregar niveles a la tabla de páginas.

Al utilizar SLAT y tablas de páginas multinivel, el número de niveles necesarios para recorrer para encontrar la traducción se duplica cuando la dirección física del invitado es del 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 el número 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 máquinas virtuales con granularidad gruesa, el uso de páginas grandes para la traducción física del huésped 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), conocida 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 administración de memoria del procesador (MMU). [1] [2] RVI se introdujo en la tercera generación de procesadores Opteron , nombre en clave Barcelona . [3]

Un artículo de investigación de VMware encontró que RVI ofrece hasta un 42% de ganancias en rendimiento en comparación con la implementación de software únicamente (tabla de páginas ocultas). [4] Las pruebas realizadas por Red Hat mostraron una duplicación del rendimiento para los puntos de referencia OLTP . [5]

Tablas de páginas extendidas

Extended Page Tables (EPT) es una tecnología de virtualización Intel x86 de segunda generación para la unidad de administración de memoria (MMU). La compatibilidad con EPT se encuentra en las CPU Intel Core i3 , Core i5 , Core i7 y Core i9 , entre otras. [6] También se encuentra en algunas CPU VIA más nuevas . Se requiere EPT para poder lanzar un procesador lógico directamente en modo real , una característica llamada "invitado sin restricciones" en la jerga de Intel e introducida en la microarquitectura de Westmere . [7] [8]

Según un documento de evaluación de VMware, "EPT proporciona ganancias de rendimiento de hasta un 48% para pruebas comparativas con uso intensivo de MMU y hasta un 600% para pruebas de microcomprobación con uso intensivo de MMU", aunque en realidad puede hacer que el código se ejecute más lento que una implementación de software en algún rincón. casos . [9]

Tablas de páginas de la etapa 2

La compatibilidad con la tabla de páginas de la etapa 2 está presente en los procesadores ARM que implementan el nivel de excepción 2 (EL2).

Extensiones

Control de ejecución basado en modo

El control de ejecución basado en modo ( MBEC ) es una extensión de las implementaciones SLAT x86 que estuvo disponible por primera vez en las CPU Intel Kaby Lake y AMD Zen+ (conocidas en esta última como Guest Mode Execute Trap o GMET ). [10] La extensión extiende el bit de ejecución en la tabla de páginas extendida (tabla de páginas invitadas) a 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 aplicación de la integridad del código en modo kernel. Bajo esta configuración, las páginas de códigos sin firmar se pueden marcar como ejecutadas en modo de usuario, pero deben marcarse como no ejecutadas en modo kernel. Para mantener la integridad garantizando 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 la página invitada que contiene el bit de ejecución se delega a una entidad con mayores privilegios, en este caso el hipervisor del host . Sin MBE, cada entrada desde la ejecución en modo de usuario sin firmar a la ejecución en modo kernel firmada 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 ejecución del código. [12] [13] Con MBE, la misma tabla de páginas se puede compartir entre el código en modo de usuario sin firmar y el código en modo kernel firmado, con dos conjuntos de permisos de ejecución dependiendo del 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 de kernel firmado.

Soporte en software

Los hipervisores que admiten SLAT incluyen los siguientes:

Algunos de los hipervisores anteriores requieren SLAT para funcionar (no solo más rápido), ya que no implementan una tabla de páginas ocultas de software; la lista no está completamente actualizada para reflejar eso.

Ver también

Referencias

  1. ^ "Indexación rápida de virtualización con Windows Server 2008 R2 Hyper-V | El blog de virtualización". Blogs.amd.com. 2009-03-23 . Consultado el 16 de mayo de 2010 .
  2. ^ "Paginación anidada AMD-V" (PDF) . Julio de 2008. Archivado desde el original (PDF) el 5 de septiembre de 2012 . Consultado el 11 de diciembre de 2013 .
  3. ^ "El ingeniero de VMware elogia las tablas de páginas anidadas de AMD". Searchservervirtualization.techtarget.com. 2008-07-21 . Consultado el 16 de mayo de 2010 .
  4. ^ ab "Evaluación del rendimiento de AMD RVI Hardware Assist" (PDF) . Consultado el 16 de mayo de 2010 .
  5. ^ "Revista Red Hat | Red Hat Enterprise Linux 5.1 utiliza paginación anidada en el procesador AMD Barcelona para mejorar el rendimiento de los invitados virtualizados". Revista.redhat.com. 2007-11-20 . Consultado el 16 de mayo de 2010 .
  6. ^ "Lista de tecnologías de virtualización Intel". Ark.intel.com . Consultado el 17 de febrero de 2014 .
  7. ^ "Intel agregó el modo de invitado sin restricciones en la microarquitectura Westmere y en 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 VMEnter sin habilitar la paginación".
  8. ^ "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 'invitado sin restricciones' es 1, el control de ejecución de VM 'habilitar EPT' también debe ser 1.
  9. ^ Evaluación del rendimiento de Intel EPT Hardware Assist
  10. ^ Cunningham, Andrew (27 de agosto de 2021). "Por qué Windows 11 tiene requisitos de hardware tan estrictos, según Microsoft". Ars Técnica . Consultado el 18 de marzo de 2024 .
  11. ^ Mulnix, David L. "Descripción técnica de la familia escalable de procesadores Intel Xeon". inteligencia . Consultado el 3 de septiembre de 2021 .
  12. ^ Análisis de la superficie de ataque de la seguridad basada en virtualización de Windows 10
  13. ^ Arkley, Brent. "El impacto potencial en el rendimiento de Device Guard (HVCI)". "El legado de Borec se encuentra con el blog de administración de dispositivos modernos" . Consultado el 3 de septiembre de 2021 .
  14. ^ "Indización de virtualización rápida de AMD-V y traducción de direcciones de segundo nivel de Windows Server 2008 R2 Hyper-V". Haciendo TI virtual . Consultado el 16 de mayo de 2010 .
  15. ^ Bott, Ed (8 de diciembre de 2011). "¿Su PC tiene lo necesario para ejecutar Hyper-V de Windows 8?". ZDNet . Consultado el 17 de febrero de 2014 .
  16. ^ "Soporte y controladores" . Consultado el 13 de diciembre de 2015 .
  17. ^ "Hipervisor | Documentación para desarrolladores de Apple".
  18. ^ "Novatos del kernel: Linux 2 6 26".
  19. ^ Sheng Yang (12 de junio de 2008). "Ampliación de KVM con la nueva tecnología de virtualización 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 .
  20. ^ Inc, paralelos. "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 )
  21. ^ "Registro de cambios para VirtualBox 2.0". Archivado desde el original el 22 de octubre de 2014.
  22. ^ Liz. "Notas de la versión de VMware Workstation 14 Pro". docs.vmware.com . Consultado el 19 de noviembre de 2020 .
  23. ^ "Puntos de referencia: Xen 3.2.0 en AMD Quad-Core Opteron con RVI". 2008-06-15 . Consultado el 13 de mayo de 2011 .
  24. ^ "Lista de compatibilidad de hardware (HCL)". Sistema operativo Qubes . Consultado el 6 de enero de 2020 .
  25. ^ Implementación de un soporte de emulación de BIOS para BHYVe: un hipervisor BSD
  26. ^ "21.7. FreeBSD como anfitrión con bhyve" . Consultado el 13 de diciembre de 2015 .
  27. ^ Próximamente en OpenBSD/amd64: un hipervisor nativo
  28. ^ vmm(4) — monitor de máquina virtual
  29. ^ Diseño de alto nivel de gestión de memoria ACRN
  30. ^ "Características/VT-d - QEMU". wiki.qemu.org . Consultado el 12 de noviembre de 2023 .
  31. ^ "Ilustraciones de Hyper-V: documentación de QEMU". www.qemu.org . Consultado el 12 de noviembre de 2023 .
  32. ^ "Agregar traducción anidada Intel VT-d [LWN.net]". lwn.net . Consultado el 12 de noviembre de 2023 .
  33. ^ "Virtualización Intel: cómo funcionan juntos VT-x, KVM y QEMU". Deuda binaria . 2018-10-14 . Consultado el 12 de noviembre de 2023 .
  34. ^ "Características/KVMNestedVirtualizationTestsuite - QEMU". wiki.qemu.org . Consultado el 12 de noviembre de 2023 .

enlaces externos