# Extensión de dirección física

En informática, extensión de dirección física (en inglés, Physical Address Extension o PAE) se refiere a una característica de los procesadores x86 que permite a los sistemas de 32-bit utilizar hasta 64 gigabytes (64 GB) de memoria física, suponiendo que el sistema operativo proporcione el adecuado soporte. PAE está disponible en las CPU Intel Pentium Pro y superiores (incluyendo todos los procesadores de la serie Pentium posteriores excepto las versiones con bus de 400 MHz del Pentium M), además de ciertos procesadores compatibles como los de AMD. El flag CPUID PAE se utiliza para identificar a las CPU con esta habilidad.
El hardware del procesador está ampliado con más líneas de direcciones utilizadas para seleccionar la memoria adicional, y tablas de páginas de 36 bit, pese a que las aplicaciones software normales continúan utilizando instrucciones con direcciones de 32 bit y un modelo de memoria plano limitado a 4 GiB. El sistema operativo utiliza PAE para mapear este espacio de direcciones de 32 bit en el total de 64 gigabytes de memoria, el mapa puede ser, y normalmente lo es, diferente para cada proceso. De esta manera la memoria adicional puede ser útil aunque las aplicaciones normales no puedan acceder a toda ella de forma simultánea.
Para las aplicaciones de software que necesitan acceso a más de 4 GiB de memoria, el sistema operativo puede ofrecer algún mecanismo especial además del soporte PAE básico. En Microsoft Windows este mecanismo se llama Address Windowing Extensions (AWE), mientras que en los sistemas Unix se utilizan diferentes trucos, como utilizar mmap para mapear regiones de un fichero en un espacio de direcciones cuando se necesita, sin considerarse ninguna técnica como estándar.
AMD presentó el bit NX como una característica adicional del modo PAE en su microarquitectura AMD64. Windows XP SP2 y posteriores se ejecutan en modo PAE por defecto en aquellos sistemas con soporte NX para hacer uso de esta característica.

## Estructuras de la tabla de páginas

En el tradicional modo protegido de 32 bit, los procesadores x86 utilizan un esquema de traducción de páginas de dos niveles, en el que el registro CR3 apunta a un directorio de páginas de 4K, que está dividido en 1024 entradas de 4 bytes que apuntan a una tabla de páginas de 4 KiB, que de forma similar está formada por 1024 entradas de 4 bytes que apuntan a las páginas de 4 KiB.
Activar PAE (al fijar el bit 5, PAE, del registro de control del sistema CR4) provoca importantes cambios en este esquema. Por defecto, el tamaño de cada página se mantiene en 4 KiB. Cada entrada en la tabla de páginas y en el directorio de páginas se extiende a 64 bits (8 bytes) en lugar de 32 para permitir los bits de direcciones adicionales. El tamaño de la tabla no cambia, sin embargo cada tabla ahora solo contiene 512 entradas. Ya que se han reducido a un cuarto el número de entradas del esquema original, se añade un nuevo nivel en la jerarquía, de manera que CR3 ahora apunta al Page Directory Pointer Table, una pequeña tabla que contiene punteros a los directorios de 4 páginas.
De forma adicional, las entradas en el directorio de páginas tienen un nuevo flag, llamado 'PS' (Page Size). Si este bit (bit 7) tiene por valor 1, la entrada en el directorio de páginas no apunta a una tabla de páginas, sino a una sola página grande (de 2 MiB).
El bit NX es otro flag en el directorio de páginas que marca las páginas como "no ejecutables".