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 administración de memoria para la arquitectura x86. PAE fue introducido por primera vez por Intel en el Pentium Pro , y luego 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 que estas CPU accedan directamente a un espacio de direcciones físicas de más de 4 gigabytes (2 32 bytes).
La estructura de la tabla de páginas utilizada por las CPU x86-64 cuando operan en modo largo extiende aún más la jerarquía de la tabla de páginas a cuatro niveles, ampliando el espacio de direcciones virtuales y utiliza bits de direcciones físicas adicionales en todos los niveles de la tabla de páginas, ampliando 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 el código no se puede ejecutar 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.
Historia
PAE se implementó por primera vez en Intel Pentium Pro en 1995, [3] aunque los conjuntos de chips 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 el indicador de soporte PAE en su información de CPUID . [5] También estaba disponible en procesadores AMD, incluido el AMD Athlon [6] [7] (aunque los conjuntos de chips están limitados al 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 localización en " modo largo " basado en PAE. [9] Admite direcciones virtuales de 64 bits [10] ( p24 ) (a partir de noviembre de 2018,[actualizar]Se implementan 48 bits [10] ( p120 ) [11] ), direcciones físicas de 52 bits, [10] ( p24 ) e incluye funcionalidad de bit NX . Cuando se inicializa el procesador x86-64, es necesario habilitar la función PAE antes de que el procesador cambie del modo heredado al modo largo. [9]
Diseño
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 la página física, o el campo "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 trama de página se amplió de 20 a 24 bits. El tamaño del "desplazamiento de bytes" de 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 teóricamente 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 van 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 cambia, por lo que el software de aplicación regular continúa usando instrucciones con direcciones de 32 bits y (en un modelo de memoria plana ) está limitado a 4 gigabytes de espacio de direcciones virtuales. Los sistemas operativos que admiten este modo utilizan tablas de páginas para asignar el espacio de direcciones virtuales normal de 4 GB a la memoria física, que, según el sistema operativo y el resto de la plataforma de hardware, puede llegar a ser de hasta 64 GB. El mapeo generalmente se aplica por separado para cada proceso , por lo que la RAM adicional es útil aunque ningún proceso pueda acceder a todo simultáneamente.
El trabajo posterior asociado con el desarrollo de AMD de la arquitectura x86-64 expandió el tamaño teórico posible de las direcciones físicas a 52 bits. [ cita requerida ]
Estructuras de tabla de páginas
En el modo protegido con la 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ágina de dos niveles. El registro de control CR3
contiene la dirección física alineada con la página de un único directorio de página 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 con la página de las tablas de páginas , cada una de 4 KB de tamaño. De manera similar, constan de 1024 entradas de tabla de páginas de cuatro bytes que, si son válidas, contienen las direcciones físicas alineadas por página de páginas de memoria física (RAM) de 4 KB de longitud .
La habilitación de PAE (estableciendo el bit 5, PAE
del registro del sistema CR4
) provoca cambios importantes en este esquema. De forma predeterminada, el tamaño de cada página sigue siendo de 4 KB. Cada entrada en la tabla de páginas y el directorio de páginas se convierte en 64 bits de longitud (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 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.
Las entradas en el directorio de páginas tienen un indicador adicional en el bit 7, denominado PS
(para 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 única página grande de 2 MB ( Extensión de tamaño de página ).
En todos los formatos de tabla de página admitidos por x86 y x86-64 , los 12 bits menos significativos de la entrada de la tabla de página son interpretados por la unidad de administración de memoria o están reservados para uso del sistema operativo. En los procesadores que implementan la función de "no ejecución" o "desactivació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 64 bits en la entrada de la tabla de páginas, 12 bits de orden inferior y 12 bits de orden superior tienen otros usos, dejando 40 bits (bits 12 a 51) para el número de página física. Combinado con 12 bits de "desplazamiento dentro de la página" de 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 × 10 15 bytes).
En procesadores x86-64 en modo largo nativo , el esquema de traducción de direcciones usa PAE pero agrega una cuarta tabla, la tabla de nivel 4 de mapa de página de 512 entradas, y extiende la tabla de puntero del directorio de página a 512 entradas en lugar de las 4 entradas originales tiene en modo protegido. Actualmente se traducen 48 bits del número de página virtual, lo que proporciona un espacio de direcciones virtuales de hasta 256 TB. [10] ( p148 ) 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.
Sin PAE, páginas de 4 KB
Sin PAE, páginas de 4 MB
Con PAE; 4 KB páginas
Con PAE; 2 MB de páginas
Soporte de hardware
El software puede identificar a través de la CPUID
bandera PAE
si una CPU admite el modo PAE o no. Está disponible un programa gratuito para Microsoft Windows que enumerará muchas capacidades del procesador, incluida la compatibilidad con PAE. [13] En Linux, los comandos como cat /proc/cpuinfo
pueden enumerar la pae
bandera cuando está presente, [14] así como otras herramientas como la herramienta de detección de hardware SYSLINUX .
Para ejecutar el procesador en modo PAE, se requiere compatibilidad con el sistema operativo . Para usar PAE para acceder a más de 4 GB de RAM, se requiere más soporte en el sistema operativo, en el chipset y en la placa base. Algunos conjuntos de chips no admiten direcciones de memoria física superiores a 4 GB (FFFFFFFF en hexadecimal) y algunas placas base simplemente no tienen suficientes sockets 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 .
Soporte del sistema operativo
Microsoft Windows
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 al encontrar direcciones físicas por encima de 4 GB. [15]
La siguiente tabla muestra los límites de memoria para las versiones de 32 bits de Microsoft Windows:
Versión de Windows | Limite de memoria |
---|---|
Windows 2000 Professional, servidor | 4 GB |
Servidor avanzado de Windows 2000 | 8 GB |
Centro de datos de Windows 2000 | 32 GB |
Windows XP de arranque | 0,5 GB |
Windows XP (otras ediciones) | 4 GB |
Windows Server 2003 Web SP2 | 2 GB |
Windows Server 2003 Standard SP2 | 4 GB |
Windows Server 2003 Enterprise / Datacenter SP2 | 64 GB |
Windows Storage Server 2003 Enterprise | 8 GB |
Windows Storage Server 2003 (otras ediciones) | 4 GB |
Servidor doméstico de Windows | 4 GB |
Windows Vista de inicio | 1 GB |
Windows Vista (otras ediciones) | 4 GB |
Windows Server 2008 Standard, Web | 4 GB |
Windows Server 2008 Enterprise, centro de datos | 64 GB |
Windows 7 arranque | 2 GB |
Windows 7 (otras ediciones) | 4 GB |
Windows 8 (todas las ediciones) | 4 GB |
Windows 10 (todas las ediciones) | 4 GB |
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, generó problemas de compatibilidad con controladores de terceros que llevaron a Microsoft a eliminar esta capacidad en Windows XP Service Pack 2. Windows XP SP2 y versiones posteriores, de forma predeterminada, en procesadores con no ejecutar (NX) o ejecutar-deshabilitar (XD ) , se ejecuta en modo PAE para permitir NX. [19] 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 sólo 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 del controlador [15] mediante el mecanismo de limitación de licencias, [20] aunque estas versiones se ejecutan en modo PAE si la compatibilidad con NX está habilitada.
Windows 8 y versiones posteriores solo se ejecutarán en procesadores que admitan PAE, además de NX y SSE2 . [21]
Mac OS
Mac OS X Tiger a través de Mac OS X Snow Leopard son compatibles con PAE y el bit NX en procesadores IA-32; Snow Leopard fue la última versión compatible con procesadores IA-32. En los procesadores x86-64, todas las versiones de macOS utilizan paginación de 4 niveles (paginación IA-32e en lugar de PAE) para abordar la memoria por encima de 4 GB. Los sistemas Mac Pro y Xserve pueden usar hasta 64 GB de RAM. [22]
Linux
El kernel de Linux incluye soporte completo para el modo PAE a partir de la versión 2.3.23, [23] en 1999 que permite el acceso de hasta 64 GB de memoria en máquinas de 32 bits. Un kernel de Linux habilitado para PAE requiere que la CPU también admita PAE. El kernel de Linux admite PAE como una opción de compilación y las principales distribuciones proporcionan un kernel PAE como opción predeterminada o como opción.
La función de bits NX requiere un kernel construido con soporte PAE. [24]
Las distribuciones de Linux ahora usan comúnmente un kernel habilitado para PAE como predeterminado, una tendencia que comenzó en 2009. [25] A partir de 2012[actualizar]muchos, incluidos Ubuntu (y derivados como Xubuntu y Linux Mint ), [26] [27] Red Hat Enterprise Linux 6.0, [28] y CentOS , han dejado de distribuir kernels que no son PAE, por lo que el hardware compatible con PAE es obligatorio. Las distribuciones de Linux que requieren PAE pueden negarse a arrancar en los procesadores de la familia Pentium M porque no muestran el indicador de soporte PAE en su información de CPUID (aunque es compatible internamente). [5] Sin embargo, esto se puede omitir fácilmente, al menos en Ubuntu , con la forcepae
opción. [29]
Las distribuciones que aún ofrecen una opción que no es PAE, incluido Debian (y derivados como LMDE 2 (Linux Mint Debian Edition) [30] ), Slackware y LXLE , suelen hacerlo con "i386", "i486" o "retro" etiquetas. [31] [32] El artículo Distribución ligera de Linux enumera algunos otros, lo que permite instalar Linux en computadoras antiguas.
Otros
FreeBSD y NetBSD también admiten PAE como opción de compilación del kernel. FreeBSD soporta PAE en la serie 4.x comenzando con 4.9, en la serie 5.x comenzando con 5.1, y en todas las versiones 6.xy posteriores. El soporte requiere la PAE
opción de configuración del kernel . Los módulos de kernel cargables solo se pueden cargar en un kernel con PAE habilitado si los módulos se compilaron con PAE habilitado; los módulos binarios en las distribuciones de FreeBSD no se construyen con PAE habilitado y, por lo tanto, no se pueden cargar en los kernels de 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. [33]
OpenBSD ha tenido soporte para PAE desde 2006 con el kernel estándar GENERIC i386. GeNUA mbH apoyó la implementación inicial. [34] Desde la versión 5.0, PAE ha tenido una serie de cambios, en particular cambios en el procesamiento de i386 MMU para PMAP, consulte pmap (9). [35]
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 el soporte PAE pueden funcionar de forma errática o fallar por completo en un sistema con PAE. [36]
Haiku agregó soporte inicial para PAE en algún momento después del lanzamiento de R1 Alpha 2. Con el lanzamiento de R1, Alpha 3 PAE ahora es oficialmente compatible.
ArcaOS tiene soporte limitado para PAE con el propósito de crear discos RAM por encima del límite de 4 GB. [37]
Ver también
- Extensión de tamaño de página
- Agujero PCI
- PSE-36
- Arquitectura de Windows NT
- Barrera de 3 GB
- Ampliación de dirección física grande (LPAE): en la arquitectura ARM
Referencias
- ^ Actualización de la especificación del procesador Intel® Xeon® de doble núcleo a 2,80 GHz (PDF) . Corporación Intel. Octubre de 2006. p. 18.
- ^ AMD, Inc. (febrero de 2002). "Apéndice E". Guía de optimización de código x86 del procesador AMD Athlon ™ (PDF) (Revisión K ed.). pag. 250 . Consultado el 13 de abril de 2017 .
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 PAE (extensiones de dirección de página) está habilitado o cuando el PDE no describe una página grande.
- ^ T. Shanley (1998). Arquitectura del sistema Pentium Pro y Pentium II . Addison-Wesley Professional. pag. 439. ISBN 978-0-201-30973-7.
- ^ "Sistemas operativos y soporte PAE" . Centro de desarrolladores de hardware . 14 de julio de 2006 . Consultado el 20 de abril de 2014 .
- ^ a b PAE - Wiki de ayuda de la comunidad de Ubuntu
- ^ AMD, Inc. (febrero de 2002). "Apéndice E". Guía de optimización de código x86 del procesador AMD Athlon ™ (PDF) (Revisión K ed.). pag. 250 . Consultado el 13 de abril de 2017 .
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 PAE (extensiones de dirección de página) está habilitado o cuando el PDE no describe una página grande.
- ^ "AMD Athlon 500 - AMD-K7500MTR51B C" . Cpu-world.com . 26 de marzo de 2014 . Consultado el 20 de abril de 2014 .
- ^ Controlador del sistema AMD-762 (p. 2): "Admite hasta 4 Gbytes de memoria"
- ^ a b AMD Corporation (marzo de 2017). "Volumen 2: Programación del sistema" (PDF) . Manual del programador de la arquitectura AMD64 . AMD Corporation. pag. 130 . Consultado el 23 de mayo de 2017 .
La traducción de páginas en modo largo requiere el uso de extensiones de direcciones físicas (PAE). Antes de activar el modo largo, PAE debe habilitarse estableciendo CR4.PAE en 1. La activación del modo largo antes de habilitar PAE provoca que se produzca una excepción de protección general (#GP).
- ^ a b c d AMD Corporation (septiembre de 2018). "Volumen 2: Programación del sistema" (PDF) . Manual del programador de la arquitectura AMD64 . AMD Corporation . Consultado el 19 de diciembre de 2018 .
- ^ "Volumen 3 (3A, 3B, 3C y 3D): Guía de programación del sistema" . Manual del desarrollador de software de arquitecturas Intel 64 e IA-32 . Intel. Noviembre de 2018. p. 4-6 . Consultado el 19 de diciembre de 2018 .
- ^ Ficha técnica del procesador Pentium® III Xeon ™ a 500 y 550 MHz . Corporación Intel. Febrero de 2000. p. 86. 245094-002.
A [35:03] # (E / S): Las señales A [35: 3] # (Dirección) definen un espacio de direcciones de memoria física de 2 a 36 bytes.
- ^ "Microsoft Sysinternals: Coreinfo" . Sysinternals de Windows . Microsoft. 19 de diciembre de 2013 . Consultado el 20 de abril de 2014 .
- ^ "Detectando su hardware" . Gentoo. 8 de octubre de 2008 . Consultado el 28 de abril de 2013 .
- ^ a b Mark Russinovich (21 de julio de 2008). "Empujando los límites de Windows: memoria física" . Consultado el 11 de julio de 2010 .
- ^ "Límites de memoria para versiones de Windows" . MSDN . Microsoft . 5 de diciembre de 2007. Archivado desde el original el 17 de diciembre de 2007 . Consultado el 16 de noviembre de 2015 .
- ^ "Extensiones de direccionamiento físico Intel (PAE) en Windows 2000" . Soporte . Microsoft . 26 de octubre de 2007 . Consultado el 29 de diciembre de 2007 .
- ^ "Descripción general de Windows Server 2003 R2 Datacenter Edition" . TechNet . Microsoft . Consultado el 15 de mayo de 2009 .
- ^ "La RAM indicada por el cuadro de diálogo Propiedades del sistema y la herramienta Información del sistema es menor de lo esperado en Windows Vista o en Windows XP Service Pack 2 o una versión posterior (MSKB 888137)" . Base de conocimientos . Microsoft . Consultado el 30 de enero de 2009 .
- ^ Chappell, Geoff. "Memoria con licencia en Windows Vista de 32 bits" . geoffchappell.com . WP: SPS . Consultado el 20 de abril de 2014 .
- ^ Khurshid, Usman (2 de noviembre de 2012). "Cómo comprobar si su procesador admite la instalación de PAE, NX y SSE2 para Windows 8" . technize.net . Tecnizar . Consultado el 20 de abril de 2014 .
- ^ "Camino a Mac OS X 10.6 Snow Leopard: 64 bits" . 2008-09-26 . Consultado el 26 de septiembre de 2008 .
- ^ "2.3.23-pre4 x86 64 GB cambios de RAM [parche HIGHMEM] explicado un poco" .
- ^ Arquitectura profesional del kernel de Linux , Figura 3.16 Flujo de código para paging_init, "Execute Disable Protection también está habilitado si el procesador lo admite y si el kernel se compiló con soporte PAE; desafortunadamente, la función no está disponible".
- ^ "Especificaciones de x86 para Fedora 11" .
- ^ "Xubuntu 12.04 lanzado" . Xubuntu.org . 26 de abril de 2012 . Consultado el 24 de octubre de 2015 .
El kernel que no es PAE no estará disponible en futuras versiones de Xubuntu.
- ^ "Habilitación de PAE" . Consultado el 28 de abril de 2013 .
- ^ "Notas de la versión de RHEL 6, 12.6. Actualizaciones generales del kernel 12.6.1. Extensión de dirección física (PAE)" . RedHat . Consultado el 27 de noviembre de 2013 .
- ^ PAE, Extensión de dirección física , Wiki de ayuda de la comunidad de Ubuntu.
- ^ "Problemas conocidos en Linux Mint Debian" .
Para garantizar la compatibilidad con procesadores que no son PAE, las versiones de 32 bits de Linux Mint Debian vienen con un kernel 486 por defecto.
- ^ "Cachorro Preciso" . puppylinux.org . PuppyLinux . Consultado el 20 de abril de 2014 .
- ^ "2.1. Hardware compatible" . Guía de instalación de Debian GNU / Linux . SPI . Consultado el 20 de abril de 2014 .
- ^ "Página de manual de FreeBSD PAE (4)" . 2003-04-08 . Consultado el 26 de noviembre de 2007 .
- ^ "PAE para OpenBSD / i386 por Michael Shalayeff, NYC" . 2006 . Consultado el 3 de febrero de 2018 .
- ^ - Manual del desarrollador del kernel de OpenBSD
- ^ "Se agregó soporte para el modo de extensión de dirección física (PAE)" . Notas de la versión de Solaris 7 5/99 (Intel Platform Edition), Apéndice B: Lista de compatibilidad de hardware y guía de configuración de dispositivos (Intel Platform Edition) 5/99 . 1999 . Consultado el 23 de marzo de 2018 .
- ^ "ArcaOS 5.0 de Arca Noae es la nueva versión de OS / 2 para el siglo XXI" . 2017 . Consultado el 16 de diciembre de 2019 .
Otras lecturas
- "Manual del desarrollador de software de arquitecturas Intel 64 e IA-32, volumen 3A: Guía de programación del sistema, parte 1" . Intel . 11 de febrero de 2014.
- "Extensión de dirección física" . MSDN . Microsoft . Consultado el 6 de mayo de 2020 .