stringtranslate.com

Paginación Intel de 5 niveles

La paginación de 5 niveles de Intel , a la que se hace referencia simplemente como paginación de 5 niveles en los documentos de Intel , es una extensión de procesador para la línea de procesadores x86-64 . [1] : 11  Amplía el tamaño de las direcciones virtuales de 48 bits a 57 bits añadiendo un nivel adicional a las tablas de páginas multinivel de x86-64, aumentando la memoria virtual direccionable de 256  TB a 128  PB . La extensión se implementó por primera vez en los procesadores Ice Lake . [2]

Tecnología

Paginación de 4 niveles del modo de 64 bits
Paginación de 4 niveles del modo de 64 bits

En el esquema de paginación de 4 niveles (anteriormente conocido como paginación IA-32e ), la dirección de memoria virtual de 64 bits se divide en cinco partes. Los 12 bits más bajos contienen el desplazamiento dentro de la página de memoria de 4 KiB, y los 36 bits siguientes se dividen uniformemente entre los cuatro descriptores de 9 bits, cada uno de los cuales se vincula a una entrada de la tabla de páginas de 64 bits en una tabla de páginas de 512 entradas para cada uno de los cuatro niveles de paginación. Esto hace posible utilizar los bits 0 a 47 en la dirección virtual, para un total de 256 TB. [3] : 4-2 

Diagrama de cinco niveles de paginación.

La paginación de 5 niveles agrega otro descriptor de tabla de página de 9 bits, lo que hace posible utilizar los bits 0 a 56. Esto multiplica el espacio de direcciones por 512 y aumenta el límite a 128 PB.

Con la paginación de 5 niveles habilitada, los bits 57 a 63 deben ser copias del bit 56. [1] : 17  Esto es lo mismo que con la paginación de 4 niveles, donde los bits de orden superior de una dirección virtual que no participan en la traducción de direcciones deben ser los mismos que el bit implementado más significativo.

La paginación de 5 niveles se habilita configurando el bit 12 del registro CR4 (conocido como LA57). [1] : 16  Esto solo se usa cuando el procesador está operando en modo de 64 bits, y solo se puede modificar cuando no lo está. [1] : 16  Si el bit no está configurado, o no se admite la función de paginación de 5 niveles, el procesador usa la estructura de tabla de páginas de 4 niveles cuando opera en modo de 64 bits. [3] : 4-22  Esto es similar a la Extensión de Dirección Física (PAE), donde el tercer nivel de tablas de paginación para permitir el direccionamiento de 36 bits se habilitó configurando un bit en el registro CR4 . [4] [3] : 4-14 

Los procesadores futuros pueden permitir un espacio de direcciones virtuales completo de 64 bits al extender el tamaño de los descriptores de la tabla de páginas a 12 bits (4096 entradas de la tabla de páginas) y el desplazamiento de memoria a 16 bits (tamaño de página de 64 KiB) en el esquema de paginación de 4 niveles o 21 bits (tamaño de página de 2 MiB) en el esquema de 5 niveles. [5] Extender el tamaño de la entrada de la tabla de páginas de 64 a 128 bits permitiría tamaños de página arbitrarios, ya que los indicadores de hardware adicionales cambiarían el tamaño y el funcionamiento de los descriptores en niveles de paginación inferiores. [5]

Desventajas

Añadir otro nivel de indirección hace que los "recorridos" por la tabla de páginas sean más largos. [6] Un recorrido por la tabla de páginas ocurre cuando la unidad de administración de memoria del procesador o el código de administración de memoria en el sistema operativo navega por el árbol de tablas de páginas para encontrar la entrada de la tabla de páginas correspondiente a una dirección virtual. [7] [3] : 4-22  Esto significa que, en el peor de los casos, el procesador o el administrador de memoria tiene que acceder a la memoria física seis veces para un solo acceso a la memoria virtual, en lugar de cinco para la iteración anterior de los procesadores x86-64. Esto da como resultado una velocidad de acceso a la memoria ligeramente reducida. [8] En la práctica, este costo se mitiga en gran medida con cachés como el buffer de búsqueda de traducción (TLB). [8] Las extensiones futuras pueden reducir los recorridos de página al limitar el espacio de direcciones virtuales por aplicación, con indicadores de hardware dedicados en una entrada de tabla de páginas extendida de 128 bits, y permitiendo tamaños de página más grandes de 64 KiB o 2 MiB y compatibilidad con versiones anteriores con operaciones de página de 4 KB. [5]

Implementación

La paginación de 5 niveles se implementa mediante la microarquitectura Ice Lake , [2] procesadores de las series EPYC 9004 y 8004 [9] [10] y la serie Storm Peak Ryzen Threadripper PRO 7900WX. [11]

El kernel de Linux 4.14 agrega soporte para ello. [12] El soporte para la extensión se envió como un conjunto de parches al kernel de Linux el 8 de diciembre de 2016. [13] Como se informó en la lista de correo del kernel de Linux , consistía en extender el modelo de memoria de Linux para usar cinco niveles en lugar de cuatro. [14] Esto se debe a que, aunque Linux abstrae los detalles de las tablas de páginas, aún depende de tener una cantidad de niveles en su propia representación. Cuando una arquitectura admite menos niveles, Linux emula niveles adicionales que no hacen nada. [15] Anteriormente se realizó un cambio similar para extender de tres niveles a cuatro. [16]

Windows 10 y 11 con versiones de servidor también admiten esta extensión en sus últimas actualizaciones, donde se proporciona mediante una imagen de kernel separada llamada ntkrla57.exe . [17]

Referencias

  1. ^ abcd "Paginación de 5 niveles y EPT de 5 niveles". Intel Corporation. Mayo de 2017.
  2. ^ ab Cutress, Ian. "Microarquitectura Sunny Cove: un vistazo al back end". Intel's Architecture Day 2018: El futuro de los núcleos, las GPU Intel, los 10 nm y los x86 híbridos . Consultado el 15 de octubre de 2019 .
  3. ^ abcd Manual del desarrollador de software de arquitecturas Intel® 64 e IA-32. Vol. 3A. Intel Corporation .
  4. ^ Hudek, Ted (junio de 2017). "Sistemas operativos y compatibilidad con PAE: desarrollo de hardware de Windows 10". Microsoft Learn . Consultado el 27 de enero de 2024 .
  5. ^ abc Patente estadounidense 9858198, Larry Seiler, "Sistema de página de 64 KB que admite operación de página de 4 KB", publicada el 29 de diciembre de 2016, emitida el 2 de enero de 2018, asignada a Intel Corp. 
  6. ^ "CSALT: Context Switch Aware Large TLB". MICRO-50: el 50.º Simposio Internacional Anual IEEE/ACM sobre Microarquitectura: actas . Cambridge, MA: Instituto de Ingenieros Eléctricos y Electrónicos, IEEE Computer Society, Grupo de Interés Especial de ACM sobre Microprogramación. 14 de octubre de 2017. p. 450. doi :10.1145/3123939.3124549. ISBN 978-1-4503-4952-9.OCLC 1032337814  .
  7. ^ "Centro de información ARM". infocenter.arm.com . Consultado el 26 de abril de 2018 .
  8. ^ ab Levy, Hank (otoño de 2008). «CSE 451: Sistemas operativos: paginación y TLB» (PDF) . Universidad de Washington . Consultado el 26 de abril de 2018 .
  9. ^ "Guía de ajuste para procesadores AMD EPYC™ 9004" (PDF) . AMD . Septiembre de 2023.
  10. ^ "ARQUITECTURA DEL PROCESADOR AMD EPYC™ DE 4.ª GENERACIÓN" (PDF) . AMD . Mayo de 2024.
  11. ^ "Volcado de CPUID para AMD Ryzen Threadripper PRO 7995WX (Storm Peak) Zen4 de 96 núcleos". GitHub . 19 de octubre de 2023.
  12. ^ Tung, Liam. "La primera versión de Linux 4.14 agrega características "muy importantes" y llega a tiempo para el 26.° aniversario del núcleo". ZDNet . Consultado el 25 de abril de 2018 .
  13. ^ Michael Larabel (9 de diciembre de 2016). "Intel trabaja en paginación de 5 niveles para aumentar el espacio de direcciones virtuales y físicas de Linux - Phoronix". Phoronix . Consultado el 26 de abril de 2018 .
  14. ^ Shutemov, Kirill A. (8 de diciembre de 2016). «[RFC, PATCHv1 00/28] Paginación de 5 niveles». Lista de correo del kernel de Linux (Mailing list) . Consultado el 26 de abril de 2018 .
  15. ^ "Gestión de tablas de páginas". www.kernel.org . Consultado el 26 de abril de 2018 .
  16. ^ "Tablas de páginas de cuatro niveles [LWN.net]". lwn.net . 12 de octubre de 2004 . Consultado el 26 de abril de 2018 .
  17. ^ @aionescu (23 de junio de 2019). "Los viejos como yo recordarán los días de ntoskrnl.exe, ntkrnlpa.exe, ntkrnlmp.exe y ntkrpamp.exe" ( Tweet ) – vía Twitter .