Barrera de 3 GB - 3 GB barrier

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 . Evita que los sistemas operativos utilicen los 4  GiB ( 4 × 1024 3 bytes ) de la memoria principal. La barrera exacta varía según la configuración de la placa base y del dispositivo de E / S, particularmente el tamaño de la RAM de video ; puede estar en el rango de 2,75 GB a 3,5 GB. La barrera no está presente con un procesador de 64 bits y sistema operativo de 64 bits , o con cierto hardware x86 y un sistema operativo tal como Linux o ciertas versiones de Windows Server y macOS que permiten el uso de extensión de direcciones físicas modo (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 de hardware que lo imponga directamente. Más bien, la "barrera" es el resultado de interacciones entre varios aspectos de ambos.

Límites de direcciones físicas

Muchas computadoras de 32 bits tienen 32 bits de dirección física y, por lo tanto, están limitadas a 4 GiB (2 32 palabras ) de memoria . 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), 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. Los pines de la CPU también proporcionan 36 bits de líneas de direcciones físicas a la placa base.

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.

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

Chipset y otros problemas de la placa base

Aunque, como se señaló anteriormente, la mayoría de los procesadores x86 desde Pentium Pro en adelante pueden generar direcciones físicas de hasta 64 GiB, el resto de la placa base debe participar para permitir que la CPU se dirija a la 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 que estaban destinados al mercado de servidores de gama alta solo podían acceder a 4 GiB de RAM.

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 mapeadas en memoria y RAM deshabilitada

Las computadoras personales modernas se basan en 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, sus interfaces de control de host a través de un conjunto de ubicaciones de E / S asignadas 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 aunque 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 limitados por las especificaciones del bus PCI a direcciones de 0xFFFFFFFF (2 32  - 1) e inferiores. Con 4 GiB o más de RAM instalados, y con RAM ocupando un rango contiguo de direcciones a partir de 0, algunas de las ubicaciones de MMIO se superpondrán con las direcciones de RAM. En máquinas con grandes cantidades de memoria de video, se ha encontrado que las ubicaciones MMIO ocupan hasta 1.8 GB del espacio de direcciones de 32 bits.

El BIOS y el chipset son responsables de detectar estos conflictos de direcciones y deshabilitar el acceso a la RAM en esas ubicaciones. Debido a la forma en que se determinan los rangos de direcciones del bus en el bus PCI, esta deshabilitación a menudo tiene una granularidad relativamente grande, lo que resulta en la deshabilitación de cantidades relativamente grandes de RAM.

Reasignación de direcciones

Los conjuntos de chips x86 que pueden abordar 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 " reasignación de agujeros 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 abordarla en una nueva dirección física que no entre en conflicto con MMIO. En el lado de Intel, esta característica alguna vez se limitó a los conjuntos de chips de servidor; sin embargo, los conjuntos de chips de escritorio más nuevos como Intel 955X y 965 y posteriores también lo tienen. En el lado de AMD , el controlador de memoria incorporado de los procesadores AMD K8 y posteriores lo tenía desde el principio.

Como las nuevas direcciones físicas están por encima del punto de 4 GiB, el direccionamiento de esta RAM requiere que el sistema operativo pueda utilizar direcciones físicas mayores de 2 32 . PAE proporciona esta capacidad. Tenga en cuenta que no es necesario que el sistema operativo admita más de 4 GiB de RAM en total , ya que la RAM total puede ser de solo 4 GiB; es solo que una parte aparece a la CPU en direcciones en el rango de 4 GiB en adelante.

Esta forma de la barrera de los 3 GB afecta a una generación de MacBooks , con una duración de 1 año (Core2Duo (Merom) - noviembre de 2006 a octubre de 2007): la generación anterior se limitó a 2 GiB, mientras que las generaciones posteriores (noviembre de 2007 a octubre de 2009) permitieron 4 GiB mediante el uso de PAE y la 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 forma predeterminada cuando la CPU presente implementa el bit NX . Sin embargo, estos sistemas operativos no permiten el direccionamiento de la memoria física por encima del límite de direcciones de 4 GiB. Este no es un límite arquitectónico; es un límite impuesto por Microsoft a través de rutinas de aplicación de licencias como solución para los problemas de compatibilidad de controladores de dispositivos que supuestamente se descubrieron durante las pruebas.

Por lo tanto, la "barrera de los 3 GB" en los sistemas operativos de "cliente" 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 el BIOS simplemente desactiva la RAM en conflicto; o bien, el BIOS reasigna la RAM en conflicto a direcciones físicas por encima del punto de 4 GiB, pero las ediciones de cliente de Windows x86 se niegan a utilizar direcciones físicas superiores a esa, aunque se ejecutan con PAE habilitado. Por lo tanto, la RAM en conflicto no está disponible para el sistema operativo, ya sea que esté reasignada o no.

Ver también

Referencias

enlaces externos