stringtranslate.com

Extensión de dirección física

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 posteriormente 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 direcciones físicas superior a 4  gigabytes (2 32 bytes).

La estructura de la tabla de páginas utilizada por las CPU x86-64 cuando funcionan en modo largo extiende aún más la jerarquía de la tabla de páginas a cuatro o más 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 físico. espacio de dirección. También utiliza el bit superior de la entrada de la tabla de páginas de 64 bits como 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 el 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 admiten PAE; sin embargo, no muestran el indicador 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 conjuntos de chips están limitados a direccionamiento de 32 bits [8] ) y modelos de procesador 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 mejoró el sistema de paginación en " modo largo " basado en PAE. [9] Admite direcciones virtuales de 64 bits [10] : 24  (a partir de julio de 2023, se implementan 48 bits en algunos procesadores y 57 bits en otros [10] : 139, 141–143  [11] ), 52 Direcciones físicas de bits, [10] : 24  e incluye funcionalidad de bits 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 deja 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 del número de marco 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, la compatibilidad con 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 iban 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 dedicada, por lo que esta relación es menos evidente.

El tamaño de 32 bits de la dirección virtual no cambia, por lo que el software de aplicación normal 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 tener un tamaño de hasta 64 GB. El mapeo generalmente se aplica por separado para cada proceso , de modo que la RAM adicional es útil aunque ningún proceso pueda acceder a todo simultáneamente.

El trabajo posterior asociado con el desarrollo de la arquitectura x86-64 por parte de AMD amplió el tamaño teórico posible de las direcciones físicas a 52 bits. [10] : 24 

Estructuras de tablas de páginas

Paginación de 32 bits, páginas de 4 KiB, sin PAE

Sin PAE, páginas de 4 KB

En modo protegido con paginación habilitada (el bit 31, PG, del registro de control CR0está configurado), 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 con la página de un único 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 con las páginas de las tablas de páginas , cada una de 4 KB de tamaño. Estos también constan de 1024 entradas de tabla de páginas de cuatro bytes que, si son válidas, contienen las direcciones físicas alineadas con páginas de páginas de memoria física (RAM) de 4 KB de largo.

Paginación de 32 bits, páginas de 4 MiB, sin PAE

Sin PAE, páginas de 4 MB

Las entradas en el 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 configurado 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 4 MB ( Extensión de tamaño de página ).

Paginación de 32 bits, páginas de 4 KiB, con PAE

Con PAE; páginas de 4 KB

Habilitar PAE (al configurar el bit 5, PAEdel 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 en el directorio de páginas tiene 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 sólo la mitad de las entradas del esquema original, se ha agregado un nivel adicional de jerarquía, por lo que el registro del sistema CR3ahora 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.

La compatibilidad con 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 asistente de 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. Desde CR3, el administrador de tablas de páginas puede acceder a directorios de páginas y tablas que están más allá del rango de 32 bits. En segundo lugar, la dirección física de 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 datos accedan a regiones de memoria física más allá del rango de 32 bits. [13]

Paginación de 32 bits, páginas de 2 MiB, con PAE

Con PAE; 2 MB de páginas

Las entradas en el 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 configurado 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 ).

Resumen de paginación de 32 bits

En todos los formatos de tabla de páginas admitidos por 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 uso del sistema operativo. En los procesadores que implementan la función "no ejecutar" o "desactivar 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 según 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 inferior y 12 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 ).

paginación x86-64

En los procesadores x86-64 en modo largo nativo , el esquema de traducción de direcciones utiliza PAE pero agrega una cuarta tabla, la tabla de nivel 4 del mapa de páginas de 512 entradas , y extiende la tabla de punteros del directorio de páginas a 512 entradas en lugar de las 4 entradas originales. tiene en modo protegido. Esto significa que se traducen 48 bits del número de página virtual, lo que proporciona un espacio de direcciones virtuales de hasta 256 TB. Para algunos procesadores, se puede habilitar un modo con una quinta tabla, la tabla de nivel 5 del mapa de páginas de 512 entradas ; esto significa que se traducen 57 bits del número de página virtual, lo que proporciona un espacio de direcciones virtuales 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.

Soporte de hardware

El software puede identificar mediante la CPUIDbandera PAEsi una CPU admite el modo PAE o no. Hay disponible un programa gratuito para Microsoft Windows que enumerará muchas capacidades del procesador, incluida la compatibilidad con PAE. [14] En Linux, comandos como cat /proc/cpuinfopueden enumerar el paeindicador cuando está presente, [15] así como otras herramientas como la herramienta de detección de hardware SYSLINUX .

Para ejecutar el procesador en modo PAE, se requiere soporte del sistema operativo . Para utilizar PAE para acceder a más de 4 GB de RAM, se requiere soporte adicional 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 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 puede ejecutarse 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 cuando encontraban direcciones físicas superiores a 4 GB. [dieciséis]

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, 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 forma predeterminada, en procesadores con la opción de no ejecución (NX) o ejecución deshabilitada (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 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 compatibilidad de controladores [16] aunque estas versiones se ejecutan en modo PAE si NX el soporte está habilitado.

Windows 8 y versiones posteriores solo se ejecutarán en procesadores que admitan PAE, además de NX y SSE2 . [21] [22]

Mac OS

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 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 direccionar la memoria superior a 4 GB. Los sistemas Mac Pro y Xserve pueden utilizar hasta 64 GB de RAM. [23]

linux

El kernel de Linux incluye soporte completo en modo PAE a partir de la versión 2.3.23, [24] en 1999, lo 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 opción de compilación y las principales distribuciones proporcionan un kernel PAE de forma predeterminada o como opción.

La función de bits NX requiere un kernel creado con soporte PAE. [25]

Las distribuciones de Linux ahora comúnmente usan un kernel habilitado para PAE como predeterminado, una tendencia que comenzó en 2009. [26] A partir de 2012, muchas, incluidas 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 son PAE, por lo que el hardware compatible con PAE es obligatorio. Las distribuciones de 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 sea compatible internamente). [5] Sin embargo, esto se puede evitar fácilmente con la forcepaeopción. [30]

Las distribuciones que aún ofrecen una opción que no es PAE, incluido Debian (y derivados como LMDE 2 (Linux Mint Debian Edition) [31] ), Slackware y LXLE , normalmente lo hacen con "i386", "i486" o "retro". etiquetas. [32] [33] El artículo Distribución ligera de Linux enumera algunas otras, que permiten instalar Linux en computadoras antiguas.

Otros

FreeBSD y NetBSD también admiten PAE como opción de compilación del kernel. FreeBSD admite PAE en la serie 4.x a partir de 4.9, en la serie 5.x a partir de 5.1 y en todas las versiones 6.x y posteriores. El soporte requiere la PAEopción de configuración del kernel. Los módulos del kernel cargables solo se pueden cargar en un kernel con PAE habilitado si los módulos se crearon con PAE habilitado; Los módulos binarios en las distribuciones FreeBSD no se crean con PAE habilitado y, por lo tanto, no se pueden cargar en los núcleos 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 tenido soporte para PAE desde 2006 con el kernel estándar GENERIC i386. GeNUA mbH apoyó la implementación inicial. [35] Desde la versión 5.0, PAE ha tenido una serie de cambios, en particular cambios en el procesamiento de 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 completamente en un sistema con PAE. [37]

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 fin de crear discos RAM por encima del límite de 4 GB. [38]

Ver también

Referencias

  1. ^ Actualización de la especificación del procesador Intel® Xeon® de doble núcleo de 2,80 GHz (PDF) . Corporación Intel. Octubre de 2006. p. 18.
  2. ^ "Apéndice E". Guía de optimización de código del procesador AMD Athlon ™ x86 (PDF) (Revisión K ed.). AMD, Inc. Febrero de 2002. p. 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.
  3. ^ T. Shanley (1998). Arquitectura del sistema Pentium Pro y Pentium II. Profesional de Addison-Wesley. pag. 439.ISBN 978-0-201-30973-7.
  4. ^ "Soporte de Sistemas Operativos y PAE". Centro de desarrolladores de hardware . 1 de junio de 2017 . Consultado el 11 de julio de 2023 .
  5. ^ ab "PAE - Wiki de ayuda de la comunidad Ubuntu".
  6. ^ "Apéndice E". Guía de optimización de código del procesador AMD Athlon ™ x86 (PDF) (Revisión K ed.). AMD, Inc. Febrero de 2002. p. 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.
  7. ^ "AMD Athlon 500 - AMD-K7500MTR51B C". CPU-world.com . 26 de marzo de 2014 . Consultado el 11 de julio de 2023 .
  8. ^ "Controlador del sistema AMD-762" (PDF) . pag. 2. Admite hasta 4 Gbytes de memoria
  9. ^ ab AMD Corporation (junio de 2023). "Volumen 2: Programación del sistema" (PDF) . Manual del programador de arquitectura AMD64 . Corporación AMD. pag. 139 . Consultado el 11 de julio de 2023 . 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. La activación del modo largo antes de habilitar PAE provoca que se produzca una excepción de protección general (#GP).
  10. ^ abcde AMD Corporation (junio de 2023). "Volumen 2: Programación del sistema" (PDF) . Manual del programador de arquitectura AMD64 . Corporación AMD . Consultado el 11 de julio de 2023 .
  11. ^ "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. Junio ​​de 2023. pág. 4-7 . Consultado el 11 de julio de 2023 .
  12. ^ Ficha técnica del procesador Pentium® III Xeon ™ a 500 y 550 MHz . Corporación Intel. Febrero de 2000. pág. 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.
  13. ^ "4.4 Paginación". Manual del desarrollador de software de arquitecturas Intel® 64 e IA-32, volumen 3A. Intel . Consultado el 28 de octubre de 2023 .
  14. ^ "Coreinfo - Sysinternals". Componentes internos del sistema Windows . Microsoft. 7 de junio de 2023 . Consultado el 11 de julio de 2023 .
  15. ^ "Detección de su hardware". Gentoo. 8 de octubre de 2008. Archivado desde el original el 3 de mayo de 2013 . Consultado el 28 de abril de 2013 .{{cite web}}: CS1 maint: unfit URL (link)
  16. ^ ab Mark Russinovich (21 de julio de 2008). "Superando los límites de Windows: memoria física". Archivado desde el original el 25 de julio de 2008 . Consultado el 11 de julio de 2010 .
  17. ^ "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 .
  18. ^ "Extensiones de direccionamiento físico Intel (PAE) en Windows 2000". Apoyo . Microsoft . 26 de octubre de 2007. Archivado desde el original el 1 de enero de 2008 . Consultado el 29 de diciembre de 2007 .
  19. ^ "Descripción general de Windows Server 2003 R2 Datacenter Edition". Technet . Microsoft . Archivado desde el original el 28 de noviembre de 2011 . Consultado el 15 de mayo de 2009 .
  20. ^ "La RAM informada 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 Windows XP Service Pack 2 o versión posterior (MSKB 888137)". Base de conocimientos . Microsoft. Archivado desde el original el 4 de febrero de 2009 . Consultado el 30 de enero de 2009 .
  21. ^ Khurshid, Usman (2 de noviembre de 2012). "Cómo comprobar si su procesador es compatible con PAE, NX y SSE2 para la instalación de Windows 8". technize.net . Tecnificar . Consultado el 20 de abril de 2014 .
  22. ^ "Guía de requisitos de compatibilidad con PAE/NX/SSE2 para Windows 8". Documentos de Microsoft. 10 de febrero de 2014 . Consultado el 11 de julio de 2023 .
  23. ^ "Camino a Mac OS X 10.6 Snow Leopard: 64 bits". 2008-09-26 . Consultado el 26 de septiembre de 2008 .
  24. ^ Molnar, Ingo (20 de octubre de 1999). "Los cambios en 2.3.23-pre4 x86 64 GB RAM [parche HIGHMEM] se explican un poco". kernel-linux (lista de correo).
  25. ^ Mauerer, Wolfgang (11 de marzo de 2010). Arquitectura profesional del kernel de Linux. Figura 3.16 Flujo de código para paging_init. ISBN 978-1-118-07991-1. Ejecutar Desactivar Protección también está habilitado si el procesador lo admite y si el kernel fue compilado con soporte PAE; desafortunadamente, la función no está disponible de otra manera.
  26. ^ "Especificaciones de x86 para Fedora 11". Archivado desde el original el 4 de julio de 2010.
  27. ^ "Lanzamiento de Xubuntu 12.04". 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.
  28. ^ "PAE". Wiki de ayuda de la comunidad de Ubuntu . Consultado el 11 de julio de 2023 .
  29. ^ "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)". Sombrero rojo . Consultado el 27 de noviembre de 2013 .
  30. ^ "Los parámetros de la línea de comandos del kernel". La documentación del kernel de Linux .
  31. ^ "Problemas conocidos en Linux Mint Debian". Archivado desde el original el 16 de octubre de 2015 . Consultado el 24 de octubre de 2015 . 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.
  32. ^ "Cachorro preciso". puppilinux.org . CachorroLinux. Archivado desde el original el 13 de agosto de 2014 . Consultado el 20 de abril de 2014 .
  33. ^ "2.1. Hardware compatible". Guía de instalación de Debian GNU/Linux . SPI. Archivado desde el original el 13 de mayo de 2014 . Consultado el 20 de abril de 2014 .
  34. ^ "Página de manual de FreeBSD i386 5.5-RELEASE PAE (4)". 2003-04-08 . Consultado el 11 de julio de 2023 .
  35. ^ "PAE para OpenBSD/i386 por Michael Shalayeff, Nueva York". 2006 . Consultado el 3 de febrero de 2018 .
  36. ^ pmap(9)  -  Manual del desarrollador del kernel OpenBSD
  37. ^ "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 (Edición de plataforma Intel), Apéndice B: Lista de compatibilidad de hardware y guía de configuración de dispositivos (Edición de plataforma Intel) 5/99 . 1999 . Consultado el 23 de marzo de 2018 .
  38. ^ "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