En informática , la extensión de dirección física ( PAE ), a veces denominada extensión de dirección de página , [1] es una función de gestión de memoria para la arquitectura x86. PAE fue introducida por primera vez por Intel en el Pentium Pro , y más tarde por AMD en el procesador Athlon . [2] Define una jerarquía de tabla de páginas de tres niveles (en lugar de dos), con entradas de tabla de 64 bits cada una en lugar de 32, lo que permite a estas CPU acceder directamente a un espacio de dirección física mayor a 4 gigabytes (2 32 bytes).
La estructura de la tabla de páginas que utilizan las CPU x86-64 cuando funcionan en modo largo amplía aún más la jerarquía de la tabla de páginas a cuatro o más niveles, lo que amplía el espacio de direcciones virtuales, y utiliza bits de direcciones físicas adicionales en todos los niveles de la tabla de páginas, lo que amplía el espacio de direcciones físicas. También utiliza el bit superior de la entrada de la tabla de páginas de 64 bits como un bit de no ejecución o "NX" , lo que indica que no se puede ejecutar código desde la página asociada. La función NX también está disponible en modo protegido cuando estas CPU ejecutan un sistema operativo de 32 bits, siempre que el sistema operativo habilite PAE.
PAE se implementó por primera vez en el Intel Pentium Pro en 1995, [3] aunque los chipsets que lo acompañaban generalmente carecían de soporte para los bits de dirección adicionales requeridos. [4]
PAE es compatible con los procesadores Pentium Pro, Pentium II , Pentium III y Pentium 4. Los primeros procesadores de la familia Pentium M ("Banias") introducidos en 2003 también son compatibles con PAE; sin embargo, no muestran la bandera de compatibilidad con PAE en su información de CPUID . [5] Esto se solucionó en una revisión posterior del núcleo "Dothan" en 2005. También estaba disponible en procesadores AMD, incluido el AMD Athlon [6] [7] (aunque los chipsets están limitados a direccionamiento de 32 bits [8] ) y modelos de procesadores AMD posteriores.
Cuando AMD definió su extensión de 64 bits de la arquitectura x86 estándar de la industria, AMD64 o x86-64, también mejoraron el sistema de paginación en " modo largo " basado en PAE. [9] Admite direcciones virtuales de 64 bits [10] : 24 (a julio de 2023, [update]se implementan 48 bits en algunos procesadores y 57 bits en otros [10] : 139, 141–143 [11] ), direcciones físicas de 52 bits, [10] : 24 e incluye la funcionalidad de bits NX . Cuando se inicializa el procesador x86-64, se requiere habilitar la función PAE antes de que el procesador cambie del modo heredado al modo largo. [9]
Con PAE, la entrada de la tabla de páginas de la arquitectura x86 se amplía de 32 a 64 bits. Esto permite más espacio para la dirección de página física, o campo de "número de marco de página", en la entrada de la tabla de páginas. En las implementaciones iniciales de PAE, el campo de número de marco de página se amplió de 20 a 24 bits. El tamaño del "desplazamiento de bytes" desde la dirección que se está traduciendo sigue siendo de 12 bits, por lo que el tamaño total de la dirección física aumenta de 32 bits a 36 bits (es decir, de 20+12 a 24+12). Esto aumentó la memoria física que teóricamente es direccionable por la CPU de 4 GB a 64 GB.
En los primeros procesadores que admitían PAE, el soporte para direcciones físicas más grandes es evidente en la distribución de pines de su paquete, con designaciones de pines de dirección que llegan hasta A35 en lugar de detenerse en A31. [12] Las familias de procesadores posteriores utilizan interconexiones como Hypertransport o QuickPath Interconnect , que carecen de señales de dirección de memoria dedicadas, por lo que esta relación es menos evidente.
El tamaño de 32 bits de la dirección virtual no se modifica, por lo que el software de aplicación habitual sigue utilizando instrucciones con direcciones de 32 bits y (en un modelo de memoria plana ) está limitado a 4 gigabytes de espacio de dirección virtual. Los sistemas operativos que admiten este modo utilizan tablas de páginas para asignar el espacio de dirección virtual habitual de 4 GB a la memoria física, que, según el sistema operativo y el resto de la plataforma de hardware, puede ser de hasta 64 GB. La asignación se aplica normalmente por separado para cada proceso , de modo que la RAM adicional es útil aunque ningún proceso pueda acceder a toda ella simultáneamente.
El trabajo posterior asociado con el desarrollo de la arquitectura x86-64 de AMD amplió el tamaño teórico posible de las direcciones físicas a 52 bits. [10] : 24
En modo protegido con paginación habilitada (el bit 31, PG
, del registro de control CR0
está establecido), pero sin PAE, los procesadores x86 utilizan un esquema de traducción de páginas de dos niveles. El registro de control CR3
contiene la dirección física alineada a la página de un solo directorio de páginas de 4 KB de longitud . Esto se divide en 1024 entradas de directorio de páginas de cuatro bytes que, a su vez, si son válidas, contienen las direcciones físicas alineadas a la página de las tablas de páginas , cada una de 4 KB de tamaño. Estas, de manera similar, consisten en 1024 entradas de tabla de páginas de cuatro bytes que, si son válidas, contienen las direcciones físicas alineadas a la página de páginas de 4 KB de memoria física (RAM).
Las entradas del directorio de páginas tienen un indicador adicional en el bit 7, denominado PS
(para el tamaño de página ). Si el sistema ha establecido este bit en 1
, la entrada del directorio de páginas no apunta a una tabla de páginas, sino a una sola página grande de 4 MB ( Extensión de tamaño de página ).
La habilitación de PAE (mediante la configuración del bit 5, PAE
, del registro del sistema CR4
) provoca cambios importantes en este esquema. De manera predeterminada, el tamaño de cada página permanece en 4 KB. Cada entrada en la tabla de páginas y el directorio de páginas pasa a tener una longitud de 64 bits (8 bytes), en lugar de 32 bits, para permitir bits de dirección adicionales. Sin embargo, el tamaño de cada tabla no cambia, por lo que tanto la tabla como el directorio ahora tienen solo 512 entradas. Debido a que esto permite solo la mitad de las entradas del esquema original, se ha agregado un nivel adicional de jerarquía, por lo que el registro del sistema CR3
ahora apunta físicamente a una tabla de punteros de directorio de páginas , una tabla corta que contiene cuatro punteros a directorios de páginas.
El soporte de direcciones de 64 bits en la tabla de páginas es un cambio significativo, ya que permite dos cambios en el direccionamiento del procesador. En primer lugar, el caminador de la tabla de páginas, que utiliza direcciones físicas para acceder a la tabla de páginas y al directorio, ahora puede acceder a direcciones físicas mayores que las direcciones físicas de 32 bits admitidas en sistemas sin PAE. A partir de CR3
, el caminador de la tabla de páginas puede acceder a directorios y tablas de páginas que están más allá del rango de 32 bits. En segundo lugar, la dirección física para los datos a los que se accede (almacenados en la tabla de páginas) se puede representar como una dirección física mayor que las direcciones de 32 bits admitidas en un sistema sin PAE. Nuevamente, esto permite que los accesos a los datos accedan a regiones de memoria física más allá del rango de 32 bits. [13]
Las entradas del directorio de páginas tienen un indicador adicional en el bit 7, denominado PS
(para el tamaño de página ). Si el sistema ha establecido este bit en 1
, la entrada del directorio de páginas no apunta a una tabla de páginas, sino a una sola página grande de 2 MB ( Extensión de tamaño de página ).
En todos los formatos de tabla de páginas compatibles con IA-32 y x86-64 , los 12 bits menos significativos de la entrada de la tabla de páginas son interpretados por la unidad de administración de memoria o están reservados para el uso del sistema operativo. En los procesadores que implementan la función de "no ejecución" o "deshabilitación de ejecución", el bit más significativo (bit 63) es el bit NX . Los siguientes once bits más significativos (bits 52 a 62) están reservados para el uso del sistema operativo por las especificaciones de arquitectura de Intel y AMD. Por lo tanto, de los 64 bits de la entrada de la tabla de páginas, 12 bits de orden bajo y 12 bits de orden alto tienen otros usos, dejando 40 bits (bits 12 a 51) para el número de página física. Combinados con 12 bits de "desplazamiento dentro de la página" desde la dirección lineal, hay un máximo de 52 bits disponibles para direccionar la memoria física. Esto permite una configuración de RAM máxima de 2,52 bytes , o 4 petabytes (aproximadamente 4,5×1015 bytes ).
En los procesadores x86-64 en modo largo nativo , el esquema de traducción de direcciones utiliza PAE pero añade una cuarta tabla, la tabla de nivel 4 de mapa de páginas de 512 entradas , y extiende la tabla de punteros de directorio de páginas a 512 entradas en lugar de las 4 entradas originales que tiene en modo protegido. Esto significa que se traducen 48 bits de número de página virtual, lo que da un espacio de dirección virtual de hasta 256 TB. Para algunos procesadores, se puede habilitar un modo con una quinta tabla, la tabla de nivel 5 de mapa de páginas de 512 entradas ; esto significa que se traducen 57 bits de número de página virtual, lo que da un espacio de dirección virtual de hasta 128 PB. [10] : 141–153 En las entradas de la tabla de páginas, en la especificación original, se implementan 40 bits de número de página física.
El software puede identificar mediante el CPUID
indicador PAE
si una CPU admite el modo PAE o no. Existe un programa gratuito para Microsoft Windows que enumera muchas capacidades del procesador, incluida la compatibilidad con PAE. [14] En Linux, comandos como cat /proc/cpuinfo
pueden enumerar el pae
indicador cuando está presente, [15] así como otras herramientas como la herramienta de detección de hardware SYSLINUX .
Para que el procesador funcione en modo PAE, se requiere que el sistema operativo lo admita. Para utilizar PAE para acceder a más de 4 GB de RAM, se requiere más compatibilidad en el sistema operativo, en el chipset y en la placa base. Algunos chipsets no admiten direcciones de memoria física superiores a 4 GB (FFFFFFFF en hexadecimal) y algunas placas base simplemente no tienen suficientes zócalos de RAM para permitir la instalación de más de 4 GB de RAM. Sin embargo, incluso si no hay más de 4 GB de RAM disponibles y accesibles, una CPU compatible con PAE se puede ejecutar en modo PAE, por ejemplo, para permitir el uso de la función No ejecutar .
Las versiones de 32 bits de Microsoft Windows admiten PAE si se inician con la opción adecuada. Según Mark Russinovich , miembro técnico de Microsoft , se descubrió que algunos controladores eran inestables cuando se encontraban con direcciones físicas superiores a 4 GB. [16]
La siguiente tabla muestra los límites de memoria para las versiones de 32 bits de Microsoft Windows:
Las versiones originales de Windows XP y Windows XP SP1 usaban el modo PAE para permitir que la RAM se extendiera más allá del límite de direcciones de 4 GB. Sin embargo, esto generó problemas de compatibilidad con controladores de terceros, lo que llevó a Microsoft a eliminar esta capacidad en Windows XP Service Pack 2. Windows XP SP2 y posteriores, de manera predeterminada, en procesadores con la función de no ejecución (NX) o deshabilitación de ejecución (XD) , se ejecuta en modo PAE para permitir NX. [20] El bit NX reside en el bit 63 de la entrada de la tabla de páginas y, sin PAE, las entradas de la tabla de páginas en sistemas de 32 bits tienen solo 32 bits; por lo tanto, se requiere el modo PAE para aprovechar la función NX. Sin embargo, las versiones "cliente" de Windows de 32 bits (Windows XP SP2 y posteriores, Windows Vista, Windows 7) limitan el espacio de direcciones físicas a los primeros 4 GB para la compatibilidad con el controlador [16], aunque estas versiones se ejecutan en modo PAE si está habilitado el soporte NX.
Windows 8 y versiones posteriores solo se ejecutarán en procesadores que admitan PAE, además de NX y SSE2 . [21] [22]
Desde Mac OS X Tiger hasta Mac OS X Snow Leopard admiten PAE y el bit NX en procesadores IA-32; Snow Leopard fue la última versión que admitió procesadores IA-32. En procesadores x86-64, todas las versiones de macOS utilizan paginación de 4 niveles (paginación IA-32e en lugar de PAE) para direccionar la memoria por encima de los 4 GB. Los sistemas Mac Pro y Xserve pueden utilizar hasta 64 GB de RAM. [23]
El núcleo Linux incluye soporte completo para el modo PAE a partir de la versión 2.3.23, [24] en 1999, lo que permite el acceso a hasta 64 GB de memoria en máquinas de 32 bits. Un núcleo Linux compatible con PAE requiere que la CPU también sea compatible con PAE. El núcleo Linux admite PAE como una opción de compilación y las principales distribuciones proporcionan un núcleo PAE como opción o como opción predeterminada.
La función de bit NX requiere un kernel creado con soporte PAE. [25]
Las distribuciones Linux ahora usan comúnmente un kernel habilitado para PAE como predeterminado, una tendencia que comenzó en 2009. [26] A partir de 2012 [update], muchas, incluyendo Ubuntu (y derivados como Xubuntu y Linux Mint ), [27] [28] Red Hat Enterprise Linux 6.0, [29] y CentOS , han dejado de distribuir kernels que no sean PAE, lo que hace obligatorio el hardware compatible con PAE. Las distribuciones Linux que requieren PAE pueden negarse a arrancar en procesadores de la familia Pentium M porque no muestran el indicador de compatibilidad con PAE en su información de CPUID (aunque se admita internamente). [5] Sin embargo, esto se puede evitar fácilmente con la forcepae
opción. [30]
Las distribuciones que aún ofrecen una opción no PAE, incluyendo Debian (y derivados como LMDE 2 (Linux Mint Debian Edition) [31] ), Slackware y LXLE , normalmente lo hacen con etiquetas "i386", "i486" o "retro". [32] [33] El artículo Distribución ligera de Linux sí enumera algunas otras, que permiten instalar Linux en computadoras antiguas.
FreeBSD y NetBSD también admiten PAE como una opción de compilación del núcleo. FreeBSD admite PAE en la serie 4.x a partir de la 4.9, en la serie 5.x a partir de la 5.1 y en todas las versiones 6.x y posteriores. Para que sea compatible, se requiere la PAE
opción de configuración del núcleo. Los módulos del núcleo cargables solo se pueden cargar en un núcleo con PAE habilitado si los módulos se compilaron con PAE habilitado; los módulos binarios en las distribuciones de FreeBSD no se compilan con PAE habilitado y, por lo tanto, no se pueden cargar en núcleos con PAE. No todos los controladores admiten más de 4 GB de memoria física; esos controladores no funcionarán correctamente en un sistema con PAE. [34]
OpenBSD ha brindado soporte para PAE desde 2006 con el kernel estándar GENERIC i386. GeNUA mbH brindó soporte para la implementación inicial. [35] Desde la versión 5.0, PAE ha tenido una serie de cambios, en particular cambios en el procesamiento MMU i386 para PMAP, consulte pmap(9). [36] [ verificación fallida ]
Solaris admite PAE a partir de la versión 7 de Solaris. Sin embargo, los controladores de terceros utilizados con la versión 7 que no incluyen específicamente compatibilidad con PAE pueden funcionar de manera errática o fallar directamente en un sistema con PAE. [37]
Haiku agregó soporte inicial para PAE algún tiempo después del lanzamiento de R1 Alpha 2. Con el lanzamiento de R1 Alpha 3, PAE ahora cuenta con soporte oficial.
ArcaOS tiene soporte limitado para PAE con el propósito de crear discos RAM por encima del límite de 4 GB. [38]
Se utiliza un índice de 2 bits que consta de bits PCD y PWT de la entrada de la tabla de páginas para seleccionar uno de los cuatro campos de registro PAT cuando se habilita PAE (extensiones de dirección de página) o cuando la PDE no describe una página grande.
Se utiliza un índice de 2 bits que consta de bits PCD y PWT de la entrada de la tabla de páginas para seleccionar uno de los cuatro campos de registro PAT cuando se habilita PAE (extensiones de dirección de página) o cuando la PDE no describe una página grande.
Admite hasta 4 Gbytes de memoria
La traducción de páginas en modo largo requiere el uso de extensiones de dirección física (PAE). Antes de activar el modo largo, se debe habilitar PAE configurando CR4.PAE en 1. Activar el modo largo antes de habilitar PAE hace que se produzca una excepción de protección general (#GP).
A[35:03]# (E/S): Las señales A[35:3]# (Dirección) definen un espacio de dirección de memoria física de 2 a 36 bytes.
{{cite web}}
: CS1 maint: unfit URL (link)también está habilitada si el procesador la admite y si el kernel se compiló con soporte PAE; desafortunadamente, la función no está disponible en otros casos.
El kernel no PAE no estará disponible en futuras versiones de Xubuntu.
Para garantizar la compatibilidad con procesadores que no sean PAE, las versiones de 32 bits de Linux Mint Debian vienen con un núcleo 486 por defecto.