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.
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.
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.
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]
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.
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.
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.
Un sistema de 32 bits está limitado a utilizar 4 GB de RAM (2 direcciones
de 32 bits
)
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.
El espacio de dirección física del procesador Pentium Pro es de
236
bytes o 64 gigabytes (64 Gbyte).
Pin #: C1; Nombre de señal: A35#
Windows Server 2008 Enterprise; límite en Windows de 32 bits: 64 GB
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á.
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).
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.
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.
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.
Para poder utilizar la reasignación, el sistema operativo debe poder abordar rangos superiores a 4 GB de memoria.
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.