stringtranslate.com

Barrera de 3 GB

En informática , el término barrera de 3 GB se refiere a una limitación de algunos sistemas operativos de 32 bits que se ejecutan en microprocesadores x86 . Impide que los sistemas operativos utilicen los 4  GiB ( 4 × 1024 3 bytes ) de memoria principal. [1] La barrera exacta varía según la placa base y la configuración del dispositivo de E/S, en particular el tamaño de la RAM de vídeo ; puede estar en el rango de 2,75 GB a 3,5 GB. [2] La barrera no está presente con un procesador de 64 bits y un sistema operativo de 64 bits , o con cierto hardware x86 y un sistema operativo como Linux o ciertas versiones de Windows Server y macOS que permiten el uso del modo de extensión de dirección física (PAE) en x86 para acceder a más de 4 GiB de RAM.

Cualquiera que sea la posición real de la "barrera", no hay código en el software del sistema operativo ni ningún límite arquitectónico del hardware que la imponga directamente. Más bien, la "barrera" es el resultado de interacciones entre varios aspectos de ambos.

Límites de dirección física

Muchos ordenadores de 32 bits tienen 32 bits de dirección física y, por tanto, están limitados a 4 GiB (2 32 palabras ) de memoria . [3] [4] Los procesadores x86 anteriores al Pentium Pro tienen 32 bits de dirección física o menos; sin embargo, la mayoría de los procesadores x86 desde el Pentium Pro, que se vendió por primera vez en 1995, tienen el mecanismo de extensión de dirección física (PAE), [5] : 445  que permite direccionar hasta 64 GiB (2 36 palabras) de memoria. PAE es una modificación del esquema de traducción de direcciones en modo protegido que permite traducir direcciones virtuales o lineales a direcciones físicas de 36 bits , en lugar de las direcciones de 32 bits disponibles sin PAE. [6] : 3-15  Los pines de la CPU también proporcionan 36 bits de líneas de dirección física a la placa base. [7]

Muchos sistemas operativos x86, incluida cualquier versión de Linux con un kernel PAE y algunas versiones de Windows Server y macOS , pueden usar PAE para direccionar hasta 64 GiB de memoria en un sistema x86. [8] [9] [10]

Existen otros factores que pueden limitar esta capacidad de utilizar hasta 64 GiB de memoria y dar lugar a la "barrera de los 3 GB" en determinadas circunstancias, incluso en procesadores que implementan PAE. Estos factores se describen en las siguientes secciones.

Problemas con el chipset y otras placas base

Aunque, como se ha señalado anteriormente, la mayoría de los procesadores x86 a partir del Pentium Pro son capaces de generar direcciones físicas de hasta 64 GiB, el resto de la placa base debe participar para permitir que la CPU acceda a la memoria RAM por encima del punto de 4 GiB. Existen chipsets y placas base que permiten más de 4 GiB de RAM con procesadores x86, pero en el pasado, la mayoría de los destinados a un mercado distinto del de servidores de gama alta sólo podían acceder a 4 GiB de RAM. [11]

Sin embargo, esto no es suficiente para explicar la "barrera de los 3 GB" que aparece incluso cuando se ejecutan algunas versiones x86 de Microsoft Windows en plataformas que pueden acceder a más de 4 GiB de RAM.

E/S mapeada en memoria y RAM deshabilitada

Las computadoras personales modernas se construyen en torno a un conjunto de estándares que dependen, entre otras cosas, de las características del bus PCI original . El bus PCI original implementó direcciones físicas de 32 bits y transferencias de datos de 32 bits de ancho. Los dispositivos PCI (y PCI Express y AGP ) presentan al menos algunas, si no todas, de sus interfaces de control de host a través de un conjunto de ubicaciones de E/S mapeadas en memoria (MMIO). El espacio de direcciones en el que aparecen estas ubicaciones MMIO es el mismo espacio de direcciones que utiliza la RAM, y mientras que la RAM puede existir y ser direccionable por encima del punto de 4 GiB, estas ubicaciones MMIO decodificadas por dispositivos de E/S no pueden serlo. Están limitadas por las especificaciones del bus PCI a direcciones de 0xFFFFFFFF (2 32  − 1) y menores. Con 4 GiB o más de RAM instalada, y con RAM ocupando un rango contiguo de direcciones comenzando en 0, algunas de las ubicaciones MMIO se superpondrán con las direcciones de RAM. En máquinas con grandes cantidades de memoria de video, se ha descubierto que las ubicaciones MMIO ocupan hasta 1,8 GB del espacio de direcciones de 32 bits. [12] Otras ubicaciones que podrían superponerse con las direcciones RAM podrían incluir aquellas para APIC , SMRAM e iGPU .

El BIOS y el chipset son responsables de detectar estos conflictos de direcciones y deshabilitar el acceso a la RAM en esas ubicaciones. [13] Debido a la forma en que se determinan los rangos de direcciones de bus en el bus PCI, esta deshabilitación suele tener una granularidad relativamente grande, lo que da como resultado la deshabilitación de cantidades relativamente grandes de RAM. [14]

Reasignación de direcciones

Los chipsets x86 que pueden direccionar más de 4 GiB de RAM normalmente también permiten la reasignación de memoria (denominada en algunas pantallas de configuración del BIOS como " reasignación de huecos de memoria "). En este esquema, el BIOS detecta el conflicto de direcciones de memoria y, en efecto, reubica la RAM que interfiere para que el procesador pueda direccionarla en una nueva dirección física que no entre en conflicto con MMIO. [ cita requerida ] En el lado de Intel, esta característica alguna vez estuvo limitada a los chipsets de servidor; sin embargo, los chipsets de escritorio más nuevos como el Intel 955X y 965 y posteriores también la tienen (consulte "Recuperación de memoria" en la hoja de datos del chipset [15] ). En el lado de AMD , el controlador de memoria integrado de los procesadores AMD K8 y posteriores la tenía desde el principio. [ cita requerida ]

Como las nuevas direcciones físicas están por encima del punto de 4 GiB, para acceder a esta RAM es necesario que el sistema operativo pueda usar direcciones físicas mayores a 2 32 . [16] Esta capacidad la proporciona PAE. Tenga en cuenta que no existe necesariamente un requisito para que el sistema operativo admita más de 4 GiB en total de RAM, ya que la RAM total podría ser solo de 4 GiB; es solo que una parte de ella aparece en la CPU en direcciones en el rango de 4 GiB y más. [16]

Esta forma de la barrera de los 3 GB afecta a una generación de MacBooks , [17] con una duración de 1 año (Core2Duo (Merom) – noviembre de 2006 a octubre de 2007): la generación anterior estaba limitada a 2 GiB, mientras que las generaciones posteriores (noviembre de 2007 – octubre de 2009) permitieron 4 GiB mediante el uso de PAE y reasignación de agujeros de memoria, y las generaciones posteriores (finales de 2009 en adelante) usan procesadores de 64 bits y, por lo tanto, pueden abordar más de 4 GiB.

Dependencias de la versión de Windows

Los SKU x86 "no servidor" o "cliente" de Windows XP y posteriores operan procesadores x86 en modo PAE de manera predeterminada cuando la CPU presente implementa el bit NX . Sin embargo, estos sistemas operativos no permiten el direccionamiento de memoria física por encima del límite de direcciones de 4 GiB. Esto no es un límite arquitectónico; es un límite impuesto por Microsoft como una solución temporal para los problemas de compatibilidad de controladores de dispositivos que se descubrieron durante las pruebas. [18]

Por lo tanto, la "barrera de los 3 GB" en los sistemas operativos "cliente" de Windows x86 puede surgir en dos escenarios ligeramente diferentes. En ambos, la RAM cerca del punto de 4 GiB entra en conflicto con el espacio de E/S asignado a la memoria. O bien el BIOS simplemente desactiva la RAM conflictiva; o bien, el BIOS reasigna la RAM conflictiva a direcciones físicas por encima del punto de 4 GiB, [ cita requerida ] pero las ediciones de cliente de Windows x86 se niegan a utilizar direcciones físicas superiores a esa, aunque se ejecuten con PAE habilitado. Por lo tanto, la RAM conflictiva no está disponible para el sistema operativo, ya sea que se reasigne o no.

Véase también

Referencias

  1. ^ Microsoft Corporation. "Límites de memoria para versiones de Windows" . Consultado el 7 de agosto de 2017. Los dispositivos deben asignar su memoria por debajo de los 4 GB para que sean compatibles con versiones de Windows que no sean compatibles con PAE. Por lo tanto, si el sistema tiene 4 GB de RAM, parte de ella se desactiva o se reasigna por encima de los 4 GB mediante el BIOS. Si se reasigna la memoria, Windows X64 puede usar esta memoria. Las versiones de cliente X86 de Windows no admiten memoria física por encima de la marca de 4 GB, por lo que no pueden acceder a estas regiones reasignadas.
  2. ^ Russinovich, Mark (21 de julio de 2008). "Superando los límites de Windows: memoria física". Microsoft TechNet . Microsoft . Archivado desde el original el 8 de agosto de 2019 . Consultado el 14 de diciembre de 2022 .
  3. ^ Murray, Matthew (27 de octubre de 2009). "Windows 7: La cuestión de los 64 bits". PCMag . Consultado el 7 de agosto de 2017. Un sistema de 32 bits está limitado a utilizar 4 GB de RAM (2 direcciones de 32 bits )
  4. ^ Patrizio, Andy (22 de julio de 2002). "AMD responde a la pregunta sobre los 64 bits". Wired . Archivado desde el original el 16 de diciembre de 2008 . Consultado el 7 de agosto de 2017 . Los procesadores de 32 bits, como el Pentium III/IV de Intel y el Athlon de AMD, tienen un límite de memoria de 4 GB por CPU. No se puede acceder a más memoria.
  5. ^ Shanley, Tom (1998). Arquitectura de sistemas Pentium Pro y Pentium II . Serie de arquitectura de sistemas de PC (segunda edición). Addison-Wesley . pág. 445. ISBN 0-201-30973-4.
  6. ^ "Volumen 1: Especificaciones" (PDF) . Manual del desarrollador de la familia Pentium Pro . Intel Corporation . Enero de 1996. pág. 3–15 . Consultado el 12 de diciembre de 2018 . El espacio de dirección física del procesador Pentium Pro es de 236 bytes o 64 gigabytes (64 Gbyte).
  7. ^ "Volumen 1: Especificaciones" (PDF) . Manual del desarrollador de la familia Pentium Pro . Intel Corporation . Enero de 1996. pág. 15–5 . Consultado el 12 de diciembre de 2018 . Pin #: C1; Nombre de señal: A35#
  8. ^ Microsoft Corporation. «Límites de memoria para las versiones de Windows» . Consultado el 7 de agosto de 2017. Windows Server 2008 Enterprise; límite en Windows de 32 bits: 64 GB
  9. ^ "Habilitación de PAE". Documentación de Ubuntu . 2010-05-19 . Consultado el 2010-06-07 . La extensión de dirección física es una tecnología que permite que los sistemas operativos de 32 bits utilicen hasta 64 GB de memoria... La mayoría de las computadoras actuales admiten PAE y es un procedimiento sencillo habilitarlo en Ubuntu, si aún no lo está.
  10. ^ "Núcleo de Linux". Documentación de Fedora . 2010-05-18 . Consultado el 2010-06-07 . Fedora 8 incluye las siguientes compilaciones de núcleo: ... El kernel-PAE, para su uso en sistemas x86 de 32 bits con más de 4 GB de RAM o con CPU que tengan una función NX (No eXecute).
  11. ^ Intel Corporation (febrero de 2005). "Compatibilidad con memoria de sistema de 4 GB para chipset Intel" (PDF) . Manual del desarrollador de la familia Pentium Pro . p. 7. Archivado desde el original (PDF) el 2007-03-06 . Consultado el 2017-08-07 . En sistemas basados ​​en un solo procesador para servidores móviles, de escritorio, estaciones de trabajo y de nivel básico, los chipsets pueden estar limitados a 4 GB de memoria máxima. En los chipsets y estaciones de trabajo para servidores Intel de doble procesador actuales, el tamaño máximo de la memoria del sistema puede ser de más de 16 GB.
  12. ^ Russinovich, Mark Eugene (21 de julio de 2008). "Superando los límites de Windows: memoria física". Archivado desde el original el 8 de agosto de 2019. Consultado el 7 de agosto de 2017. Windows XP SP2 también habilitó la compatibilidad con extensiones de dirección física (PAE) de forma predeterminada en el hardware que implementa memoria sin ejecución porque es necesaria para la prevención de ejecución de datos (DEP), pero también habilita la compatibilidad con más de 4 GB de memoria.
  13. ^ Intel Corporation (febrero de 2005). "Compatibilidad con memoria de sistema de 4 GB para chipset Intel" (PDF) . Archivado desde el original (PDF) el 2007-03-06 . Consultado el 2017-08-07 . En plataformas con tamaños de memoria física que se acercan a los 4 GB y más, es probable que los requisitos de recursos del sistema integrado no permitan que el sistema operativo aproveche toda la memoria física ocupada debido a los requisitos de especificación PCI y otros recursos de E/S asignados a la memoria. Es posible que partes de la memoria física se superpongan con el espacio de memoria dedicado a otros subsistemas y no estén disponibles para el sistema operativo.
  14. ^ Intel Corporation (febrero de 2005). "Compatibilidad con memoria de sistema de 4 GB para chipset Intel" (PDF) . Manual del desarrollador de la familia Pentium Pro . p. 8. Archivado desde el original (PDF) el 2007-03-06 . Consultado el 2017-08-07 .
  15. ^ Familia de chipsets Intel 965 Express
  16. ^ ab Intel Corporation (febrero de 2005). "Compatibilidad con memoria de sistema de 4 GB para chipset Intel" (PDF) . Manual del desarrollador de la familia Pentium Pro . pág. 13, 14. Archivado desde el original (PDF) el 2007-03-06 . Consultado el 2017-08-07 . Para poder utilizar la reasignación, el sistema operativo debe poder abordar rangos superiores a 4 GB de memoria.
  17. ^ "Entender la RAM Intel Mac". Archivado desde el original el 2010-03-02 . Consultado el 2010-03-11 .
  18. ^ Russinovich, Mark Eugene (21 de julio de 2008). "Ampliando los límites de Windows: memoria física". Archivado desde el original el 8 de agosto de 2019. Consultado el 7 de agosto de 2017. Windows XP SP2 también habilitó la compatibilidad con extensiones de dirección física (PAE) de forma predeterminada en el hardware que implementa memoria sin ejecución porque es necesaria para la prevención de ejecución de datos (DEP), pero que también permite la compatibilidad con más de 4 GB de memoria. […] El problemático ecosistema de controladores de cliente llevó a la decisión de que los SKU de cliente ignoraran la memoria física que se encuentra por encima de los 4 GB, aunque teóricamente pueden abordarla. […] 4 GB es el límite autorizado para los SKU de cliente de 32 bits.

Enlaces externos