En informática , Page Size Extension ( PSE ) se refiere a una característica de los procesadores x86 que permite páginas más grandes que el tamaño tradicional de 4 KiB . Se introdujo en el procesador Pentium original , pero Intel solo lo documentó públicamente con el lanzamiento del Pentium Pro . [1] La instrucción CPUID se puede utilizar para identificar la disponibilidad de PSE en CPU x86 . [2]
Motivación
Imagina el siguiente escenario. Un programa de aplicación solicita un bloque de memoria de 1 MiB . Para cumplir con esta solicitud, un sistema operativo que admita la paginación y que se ejecute en CPU x86 más antiguas tendrá que asignar 256 páginas de 4 KiB cada una. Se requiere una sobrecarga de 1 KiB de memoria para mantener los directorios de páginas y las tablas de páginas.
Al acceder a esta memoria de 1 MiB, cada una de las 256 entradas de página se almacenaría en caché en el búfer de búsqueda de traducción (TLB; un caché que recuerda las traducciones de direcciones virtuales a direcciones físicas para una búsqueda más rápida en solicitudes de memoria posteriores). Abarrotar el TLB es posiblemente una de las mayores desventajas de tener varias entradas de página para lo que podría haberse asignado en un solo bloque de memoria. Si la TLB se llena, entonces se tendría que liberar una entrada de TLB, el directorio de páginas y las tablas de páginas tendrían que ser "recorridas" en la memoria y, finalmente, se accedería a la memoria y la nueva entrada se introduciría en la TLB. . Esta es una grave penalización del rendimiento y posiblemente fue la mayor motivación para aumentar la arquitectura x86 con tamaños de página más grandes.
El PSE permite que existan tamaños de página de 4 MiB junto con páginas de 4 KiB. La solicitud de 1 MiB descrita anteriormente se cumpliría fácilmente con una sola página de 4 MiB y solo requeriría una entrada de TLB. Sin embargo, la desventaja de utilizar tamaños de página más grandes es la fragmentación interna .
Operación
En el modo protegido tradicional de 32 bits , los procesadores x86 utilizan un esquema de traducción de página de dos niveles, donde el registro de control CR3
apunta a un único directorio de página de 4 KiB , que se divide en entradas de 1024 × 4 bytes que apuntan a 4 KiB- tablas de páginas largas , que también constan de entradas de 1024 × 4 bytes que apuntan a páginas de 4 KiB.
Habilitar PSE (estableciendo el bit 4, PSE , del registro del sistema CR4
) cambia este esquema. Las entradas en el directorio de páginas tienen un indicador adicional, en el bit 7, denominado PS
(para el tamaño de la página ). Este indicador se ignoró sin PSE, pero ahora, la entrada del directorio de páginas con PS establecido en 1 no apunta a una tabla de páginas, sino a una única página grande de 4 MiB. La entrada del directorio de páginas con PS establecido en 0 se comporta como sin PSE.
Si la capacidad de PSE-36 más nueva está disponible en la CPU, como se verificó usando la instrucción CPUID , entonces se usan 4 bits más, además de los 10 bits normales, dentro de una entrada de directorio de página que apunta a una página grande. Esto permite ubicar una página grande en un espacio de direcciones de 36 bits.
Si se usa la Extensión de dirección física (PAE), el tamaño de las páginas grandes se reduce de 4 MiB a 2 MiB, y PSE siempre está habilitado, independientemente del bit de PSE en CR4
.