El agujero de PCI o agujero de la memoria PCI es una limitación de 32 bits de hardware y sistemas operativos de 32 bits que hace que un ordenador parecen tener menos memoria disponible que se instala físicamente. [1] Esta limitación de direccionamiento de memoria y las soluciones posteriores necesarias para superarla son funcionalmente similares a los límites de memoria de la arquitectura de memoria de la PC IBM 8088 temprana (consulte Memoria convencional ).
A menudo, han surgido situaciones similares en la historia de la informática, cuando el hardware destinado a tener hasta un cierto nivel de recursos está diseñado para manejar varias veces la cantidad máxima esperada, lo que eventualmente se convierte en una restricción severa a medida que la ley de Moore aumenta los recursos disponibles económicamente. El IBM PC original generalmente se suministró con 64 KB de memoria o menos; fue diseñado para ocupar un máximo de 640 KB, mucho más de lo que se pensó que alguna vez se necesitaría. Esto se convirtió rápidamente en una restricción que tuvo que ser manejada por una compleja administración de memoria DOS . Se han impuesto y superado restricciones sucesivas similares de tamaño en los discos duros .
La pérdida de memoria utilizable causada por el agujero PCI, cuando se utilizan E / S asignadas en memoria , se debe al uso del mismo espacio de direcciones tanto para la memoria física como para comunicarse con los dispositivos de hardware. Por lo tanto, los dispositivos de hardware instalados necesitan parte del espacio de direcciones para comunicarse con el procesador y el software del sistema. Como el hardware de 32 bits tiene un total de cuatro gigabytes de memoria direccionable, [a] parte de la memoria física real de una máquina de 32 bits, cuando se instala suficiente memoria, debe sacrificarse ocultándola para que los dispositivos tengan espacio. comunicar. La parte de la memoria física que se reemplaza con el espacio de comunicación del dispositivo depende de la máquina, pero por lo general está por encima de 2,5 a 3,5 GB.
La cantidad de memoria del sistema que está oculta y no disponible varía ampliamente con la placa base y el chipset reales, el BIOS, la cantidad de memoria física, la cantidad de RAM de video instalada en las tarjetas gráficas y la cantidad y tipo de tarjetas PCI instaladas en el sistema. . Más de un gigabyte de memoria del sistema de 32 bits puede no estar disponible cuando se instalan cuatro gigabytes de memoria física y varias tarjetas 3D con grandes cantidades de memoria de video; en algunas placas base, el orificio siempre tiene un tamaño de al menos un gigabyte, independientemente de las tarjetas de expansión instaladas .
Extensión de dirección física
Una solución alternativa desarrollada por primera vez en Pentium Pro, conocida como Physical Address Extension (PAE), permite que ciertos sistemas operativos de 32 bits accedan a direcciones de memoria de hasta 36 bits, aunque los programas individuales todavía están limitados a operar dentro de 32 bits de espacio de direcciones. . Siempre que haya suficiente memoria instalada, cada programa puede tener su propio espacio de direccionamiento de cuatro gigabytes, utilizando juntos hasta 64 gigabytes de memoria en todos los programas.
Pero PAE por sí solo no es suficiente para abordar el problema del agujero PCI, ya que las direcciones de memoria y las direcciones PCI de E / S todavía se superponen en algún lugar entre el tercer y cuarto gigabyte. Un sistema operativo compatible con PAE junto con una CPU compatible con PAE no puede funcionar mejor que acceder a la memoria desde el 1º al 3º gigabyte, luego desde el 5º al 64º gigabyte. El agujero PCI sigue ahí. En un host de 4 GB, y en ausencia de una u otra solución alternativa, PAE no hace nada para acceder a la memoria de ~ 1 GB superpuesta por la E / S PCI.
PAE fue totalmente compatible con Windows XP hasta la versión Service Pack 1 (SP1), pero luego se retiró para SP2; las únicas versiones de 32 bits de Microsoft Windows que son totalmente compatibles con esto son ciertas versiones de servidor de alta gama de Windows Server 2003 y anteriores; a partir de 2014, se utiliza principalmente en distribuciones de Linux de 32 bits ; Ubuntu lo ha hecho obligatorio para su versión de 32 bits desde 2013. Microsoft deshabilitó el soporte en Windows XP SP2 y sistemas operativos posteriores porque había muchos problemas de compatibilidad con la tarjeta gráfica y otros dispositivos, que necesitaban controladores compatibles con PAE, distintos de ambos estándares. Controladores de 32 bits y posteriores de 64 bits. [2] Muchas versiones de MS Windows pueden activar lo que todavía se llama PAE con el propósito de usar el bit NX , pero esto ya no extiende el espacio de direcciones.
Llenar el agujero de la memoria
Como se indicó anteriormente, en un sistema PAE de 32 bits habilitado e incluso en sistemas de 64 bits, la memoria por debajo y por encima del "agujero de memoria" está disponible, pero de 512 MB a 1,5 GB de RAM no está disponible, alrededor del tercer gigabyte, porque utiliza las direcciones de memoria necesarias para los dispositivos. Con el costo decreciente de la memoria, esto puede no ser un problema serio, pero hay formas de recuperar el acceso a la memoria faltante.
Asignación de dispositivos a direcciones superiores a 4 GB
Las limitaciones del orificio PCI de 32 bits pueden afectar a los sistemas operativos puramente de 64 bits, ya que el BIOS del sistema debe adaptarse a todos los sistemas operativos que son compatibles con el hardware (todos los sistemas operativos de 16, 32 y 64 bits se ejecutan en el mismo hardware). El BIOS debe poder iniciar el mapeo de todos los dispositivos por debajo de cuatro gigabytes, aunque un sistema de 64 bits no lo requiere. Muchos BIOS pueden ser configurados por el usuario para llenar el hueco de la memoria mapeando dispositivos en lo alto del espacio de direcciones de 64 bits, siempre que los dispositivos, sus controladores y el conjunto de chips lo admitan. Una máquina configurada de esta manera no puede arrancar en un sistema operativo de 16 o 32 bits; Si una máquina está configurada de esta manera, la configuración del BIOS debe cambiarse temporalmente para arrancar en un sistema operativo de 16 o 32 bits, por ejemplo, desde un CD de arranque o un dispositivo de almacenamiento USB.
Asignación de memoria a direcciones superiores a 4 GB
Otra forma de eliminar el orificio PCI, que solo es útil para sistemas operativos de 64 bits y aquellos sistemas de 32 bits que admiten el método de extensión de dirección física descrito anteriormente, es "reasignar" parte o toda la memoria entre los dos y límites de cuatro gigabytes a direcciones superiores a cuatro gigabytes. Esto debe ser compatible con el conjunto de chips de la computadora y, por lo general, se puede activar en la configuración del BIOS. Esta reasignación funciona en el nivel de direcciones físicas , a diferencia de la reasignación de nivel superior de direcciones virtuales a físicas que ocurre dentro del núcleo de la CPU . Activar esto para los sistemas operativos tradicionales de 32 bits hace más daño que bien, ya que la memoria reasignada (a menudo más grande que el orificio PCI en sí) no se puede utilizar para dichos sistemas operativos, aunque, por ejemplo, Windows Vista mostrará que dicha memoria existe físicamente en el " "Propiedades del sistema".
Ver también
- Apertura AGP
- Barrera de 3 GB
- Memoria expandida
- PSE-36 : una alternativa a PAE en procesadores x86 para ampliar las capacidades de direccionamiento de la memoria física de 32 bits a 36 bits
- Límite de RAM
Notas
- ^ Con 16 bits, dos elevado a 16 equivalen a 65.536 ubicaciones diferentes que se pueden direccionar; con 32 bits es 4.294.967.296 ubicaciones, mientras que con 64 bits es 18.446.744.073.709.551.616.
Referencias
- ^ "Agujero de memoria en sistemas basados en memoria grande X86" (PDF) . techfiles.de . Sun Microsystems. 19 de mayo de 2014. Archivado desde el original (PDF) el 19 de julio de 2011 . Consultado el 7 de noviembre de 2014 .
- ^ Dansdata: ¿Qué pasa con la barrera de memoria de 3Gb?