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]
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
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]
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]
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]