Articulo de referencia

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 característica de administración de memoria para la...

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 característica de administración de memoria para la arquitectura x86. La PAE fue introducida 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 mayor de 4  gigabytes ( 2³² bytes).

La estructura de tabla de páginas que utilizan 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 o más niveles, ampliando el espacio de direcciones virtuales, y utiliza bits de dirección física adicionales en todos los niveles de la tabla de páginas, ampliando también el espacio de direcciones físicas. Además, utiliza el bit más significativo 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 tenga habilitada la ejecución de entradas de página (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 necesarios. [ 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 compatibilidad con PAE en su información CPUID . [ 5 ] Esto se solucionó en una revisión posterior del núcleo "Dothan" en 2005. También estaba disponible en procesadores AMD, incluidos el AMD Athlon [ 2 ] [ 6 ] (aunque los chipsets están limitados a direccionamiento de 32 bits [ 7 ] ) 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 mejoró el sistema de paginación en " modo largo " basado en PAE. [ 8 ] : 139 Admite direcciones virtuales de 64 bits [ 8 ] : 24 (a partir de julio de 2023, se implementan 48 bits en algunos procesadores y 57 bits en otros [ 8 ] : 139, 141–143 [ 9 ] ), direcciones físicas de 52 bits, [ 8 ] : 24 e incluye la funcionalidad del 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. [ 8 ] : 139

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 proporciona 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 del número de marco de página se amplió de 20 a 24 bits. El tamaño del "desplazamiento de byte" 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 puede direccionar 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 su distribución de pines, con designaciones de pines de dirección que llegan hasta A35 en lugar de detenerse en A31. [ 10 ] 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 cambia, 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 direcciones virtuales. Los sistemas operativos que admiten este modo utilizan tablas de páginas para asignar el espacio de direcciones virtuales habitual 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. La asignación se aplica normalmente por separado para cada proceso , de modo que la RAM adicional resulta útil aunque ningún proceso pueda acceder a ella simultáneamente.

Trabajos posteriores relacionados con el desarrollo de la arquitectura x86-64 de AMD ampliaron el tamaño teórico posible de las direcciones físicas a 52 bits. [ 8 ] : 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 PGdel registro de control CR0está activado), pero sin PAE, los procesadores x86 utilizan un esquema de traducción de páginas de dos niveles. El registro de controlCR3 almacena la dirección física alineada a la página de un único directorio de páginas de 4 KB de longitud . Este se divide en 1024 entradas de directorio de páginas de cuatro bytes que, a su vez, si son válidas, almacenan las direcciones físicas alineadas a la página de las tablas de páginas , cada una de 4 KB de tamaño. Estas consisten de manera similar en 1024 entradas de tabla de páginas de cuatro bytes que, si son válidas, almacenan las direcciones físicas alineadas a la página de páginas de 4 KB de longitud de memoria física (RAM).

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, llamado 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 ú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

La activación de PAE (al establecer el bit 5 PAEdel registro del sistema CR4) provoca cambios importantes en este esquema. Por defecto, 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 pasa a tener 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. Dado que esto permite solo la mitad de las entradas del esquema original, se ha añadido un nivel adicional de jerarquía, por lo que el registro del sistema CR3ahora apunta físicamente a una tabla de punteros al 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 supone un cambio significativo, ya que permite dos modificaciones en el direccionamiento del procesador. En primer lugar, el explorador de la tabla de páginas, que utiliza direcciones físicas para acceder a la tabla y al directorio de páginas, ahora puede acceder a direcciones físicas mayores que las de 32 bits admitidas en sistemas sin PAE. A partir de este punto CR3, el explorador de la tabla de páginas puede acceder a directorios y tablas de páginas que superan el 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) puede representarse como una dirección física mayor que las de 32 bits admitidas en un sistema sin PAE. Esto permite, de nuevo, que los accesos a datos accedan a regiones de memoria física que superan el rango de 32 bits. [ 11 ]

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

Con PAE; páginas de 2 MB

Las entradas en el directorio de páginas tienen un indicador adicional en el bit 7, llamado 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 única página grande de 2 MB ( extensión de tamaño de página ).

Resumen de la paginación de 32 bits

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 gestión de memoria o están reservados para el sistema operativo. En los procesadores que implementan la función "no-execute" o "execution disable", 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 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" desde la dirección lineal, se dispone de un máximo de 52 bits para direccionar la memoria física. Esto permite una configuración máxima de RAM de 2⁵² bytes  , o 4 petabytes (aproximadamente 4,5 × 10¹⁵ bytes ).

Paginación x86-64

En los procesadores x86-64 en modo nativo largo , 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 que tiene en modo protegido. Esto significa que se traducen 48 bits del número de página virtual, lo que da 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 da un espacio de direcciones virtuales de hasta 128 PB. [ 8 ] : 141–153 En las entradas de la tabla de páginas, en la especificación original, se implementan 40 bits del número de página físico.

Soporte de hardware

El software puede identificar mediante el CPUIDindicador PAEsi una CPU admite el modo PAE o no. Existe un programa gratuito para Microsoft Windows que muestra muchas capacidades del procesador, incluido el soporte para PAE. [ 12 ] En Linux, comandos como cat /proc/cpuinfopueden mostrar el paeindicador cuando está presente, [ 13 ] 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 y acceder a más de 4 GB de RAM, se requiere compatibilidad adicional en el sistema operativo, el chipset y 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 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 al encontrar direcciones físicas superiores a 4 GB. [ 14 ]

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 utilizaban el modo PAE para permitir que la RAM se extendiera más allá del límite de direcciones de 4 GB. Sin embargo, esto provocó 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 versiones posteriores, de forma 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. [ 18 ] 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 solo tienen 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 versiones posteriores, Windows Vista, Windows 7) limitan el espacio de direcciones físicas a los primeros 4 GB para la compatibilidad de controladores [ 14 ] 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 . [ 19 ] [ 20 ]

macOS

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 en admitir 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 memoria superior a 4 GB. Los sistemas Mac Pro y Xserve pueden usar hasta 64 GB de RAM. [ 21 ]

Linux

El kernel de Linux incluye soporte completo para el modo PAE a partir de la versión 2.3.23, [ 22 ] en 1999, lo que permite el acceso a hasta 64 GB de memoria en máquinas de 32 bits. Un kernel de Linux con PAE habilitado requiere que la CPU también lo admita. El kernel de Linux admite PAE como una opción de compilación y las principales distribuciones proporcionan un kernel PAE, ya sea por defecto o como una opción.

La función del bit NX requiere un kernel compilado con soporte PAE. [ 23 ]

Las distribuciones de Linux ahora usan comúnmente un kernel habilitado para PAE como predeterminado, una tendencia que comenzó en 2009. [ 24 ] A partir de 2012, muchas, incluyendo Ubuntu (y derivados como Xubuntu y Linux Mint ), [ 25 ] [ 5 ] Red Hat Enterprise Linux 6.0, [ 26 ] y CentOS , dejaron de distribuir kernels no PAE, haciendo que el hardware compatible con PAE sea obligatorio. Las distribuciones de Linux que requieren PAE pueden negarse a arrancar en procesadores de la familia Pentium M porque no muestran la bandera de soporte PAE en su información CPUID (aunque sea compatible internamente). [ 5 ] Sin embargo, esto se puede evitar fácilmente con la forcepaeopción. [ 27 ]

Las distribuciones que aún ofrecen una opción sin PAE, incluidas Debian (y derivados como LMDE 2 (Linux Mint Debian Edition) [ 28 ] ), Slackware y LXLE , normalmente lo hacen con etiquetas "i386", "i486" o "retro". [ 29 ] [ 30 ] El artículo Distribución ligera de Linux enumera algunas otras, que permiten instalar Linux en ordenadores antiguos.

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 la versión 4.9, en la serie 5.x a partir de la versión 5.1 y en todas las versiones 6.x y posteriores. La compatibilidad 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 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 kernels 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. [ 31 ]

OpenBSD ha tenido soporte para PAE desde 2006 con el kernel estándar GENERIC i386. GeNUA mbH brindó soporte a la implementación inicial. [ 32 ] Desde la versión 5.0, PAE ha tenido una serie de cambios, en particular cambios en el procesamiento de MMU i386 para PMAP, ver pmap(9). [ 33 ]

Solaris admite PAE a partir de la versión 7. Sin embargo, los controladores de terceros utilizados con la versión 7 que no incluyen específicamente compatibilidad con PAE pueden funcionar de forma errática o fallar por completo en un sistema con PAE. [ 34 ]

Haiku añadió 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. [ 35 ]

Véase también

Referencias

  1. ^ Actualización de especificaciones del procesador Intel® Xeon® de doble núcleo a 2,80 GHz (PDF) . Intel Corporation. Octubre de 2006. pág. 18.
  2. ^ a b "Apéndice E". Guía de optimización de código del procesador AMD Athlon™ x86 (PDF) (Edición de revisión K). AMD, Inc. Febrero de 2002. pág. 250. Recuperado el 13 de abril de 2017. Se utiliza un índice de 2 bits que consta de los bits PCD y PWT de la entrada de la tabla de páginas para seleccionar uno de los cuatro campos del registro PAT cuando se habilita PAE (extensiones de dirección de página) o cuando PDE no describe una página grande.
  3. ^ T. Shanley (1998). Arquitectura del sistema Pentium Pro y Pentium II . Addison-Wesley Professional. pág. 439. ISBN 978-0-201-30973-7.
  4. ^ "Soporte para sistemas operativos y PAE" . Centro de desarrolladores de hardware . 1 de junio de 2017. Consultado el 11 de julio de 2023 .
  5. ^ a b c "PAE" . Wiki de ayuda de la comunidad Ubuntu . Consultado el 11 de julio de 2023 .
  6. ^ "AMD Athlon 500 – AMD-K7500MTR51B C" . Cpu-world.com . 26 de marzo de 2014. Consultado el 11 de julio de 2023 .
  7. ^ "Controlador del sistema AMD-762" (PDF) . pág. 2. Admite hasta 4 GB de memoria.
  8. ^ a b c d e f g AMD Corporation (junio de 2023). "Volumen 2: Programación del sistema" (PDF) . Manual del programador de la arquitectura AMD64 . AMD Corporation . Consultado el 11 de julio de 2023 .
  9. ^ "Volumen 3 (3A, 3B, 3C y 3D): Guía de programación del sistema" . Manual del desarrollador de software para arquitecturas Intel 64 e IA-32 . Intel. Junio ​​de 2023. págs. 4-7 . Consultado el 11 de julio de 2023 .
  10. ^ Hoja de datos del procesador Pentium® III Xeon™ a 500 y 550 MHz . Intel Corporation. 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.
  11. ^ "4.4 Paginación". Manual del desarrollador de software para arquitecturas Intel® 64 e IA-32, volumen 3A . Intel . Consultado el 28 de octubre de 2023 .
  12. ^ "Coreinfo – Sysinternals" . Windows Sysinternals . Microsoft. 7 de junio de 2023. Consultado el 11 de julio de 2023 .
  13. ^ "Detección de su hardware" . Gentoo. 8 de octubre de 2008. Archivado del original el 3 de mayo de 2013. Recuperado el 28 de abril de 2013 .
  14. ^ a b Mark Russinovich (21 de julio de 2008). "Llevando al límite las capacidades de Windows: memoria física" . Archivado del original el 25 de julio de 2008. Recuperado el 11 de julio de 2010 .
  15. ^ "Límites de memoria para versiones de Windows" . MSDN . Microsoft . 5 de diciembre de 2007. Archivado del original el 17 de diciembre de 2007. Consultado el 16 de noviembre de 2015 .
  16. ^ "Extensiones de direccionamiento físico (PAE) de Intel en Windows 2000" . Soporte . Microsoft . 26 de octubre de 2007. Archivado del original el 1 de enero de 2008. Consultado el 29 de diciembre de 2007 .
  17. ^ "Descripción general de Windows Server 2003 R2 Datacenter Edition" . TechNet . Microsoft . Archivado del original el 28 de noviembre de 2011. Consultado el 15 de mayo de 2009 .
  18. ^ "La RAM que muestran 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 versiones posteriores (MSKB 888137)" . Base de conocimientos . Microsoft. Archivado del original el 4 de febrero de 2009. Consultado el 30 de enero de 2009 .
  19. ^ Khurshid, Usman (2 de noviembre de 2012). "Cómo comprobar si su procesador admite PAE, NX y SSE2 para la instalación de Windows 8" . technize.net . Technize . Consultado el 20 de abril de 2014 .
  20. ^ "Guía de requisitos de compatibilidad de PAE/NX/SSE2 para Windows 8" . Microsoft Docs. 10 de febrero de 2014. Consultado el 11 de julio de 2023 .
  21. ^ "Camino a Mac OS X 10.6 Snow Leopard: 64 bits" . 26 de septiembre de 2008. Consultado el 26 de septiembre de 2008 .
  22. ^ Molnar, Ingo (20 de octubre de 1999). "2.3.23-pre4 x86 64 GB RAM cambios [parche HIGHMEM] explicados brevemente" . linux-kernel (Lista de correo).
  23. ^ Mauerer, Wolfgang (11 de marzo de 2010). Arquitectura profesional del kernel de Linux . John Wiley e hijos. Figura 3.16 Flujo de código para paging_init. ISBN 978-1-118-07991-1La opción Execute Disable Protection también está habilitada si el procesador la admite y si el kernel se compiló con soporte para PAE; desafortunadamente, en caso contrario, esta función no está disponible.
  24. ^ "Especificaciones x86 para Fedora 11" . Archivado del original el 4 de julio de 2010.
  25. ^ "Xubuntu 12.04 lanzado" . Xubuntu.org . 26 de abril de 2012. Consultado el 24 de octubre de 2015. El kernel sin PAE no estará disponible en futuras versiones de Xubuntu.
  26. ^ "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 .
  27. ^ "Los parámetros de la línea de comandos del kernel" . La documentación del kernel de Linux .
  28. ^ "Problemas conocidos en Linux Mint Debian" . Archivado del 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.
  29. ^ "Precise Puppy" . puppylinux.org . PuppyLinux. Archivado del original el 13 de agosto de 2014. Consultado el 20 de abril de 2014 .
  30. ^ "2.1. Hardware compatible" . Guía de instalación de Debian GNU/Linux . SPI. Archivado del original el 13 de mayo de 2014. Consultado el 20 de abril de 2014 .
  31. ^ "Página man de FreeBSD i386 5.5-RELEASE PAE(4)" . 8 de abril de 2003. Consultado el 11 de julio de 2023 .
  32. ^ "PAE para OpenBSD/i386 por Michael Shalayeff, NYC" . 2006. Consultado el 3 de febrero de 2018 .
  33. ^pmap(9)  –  Manual del desarrollador del kernel de OpenBSD
  34. ^ "Se agregó compatibilidad con 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 .
  35. ^ "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 .

Lecturas adicionales

  • "Manual del desarrollador de software para 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" . Microsoft Docs . 7 de enero de 2021. Consultado el 11 de julio de 2023 .
Obtenido de " https://en.wikipedia.org/w/index.php?title=Physical_Address_Extension&oldid=1352196203 "