language-icon Old Web
English
Sign In

PCI hole

The PCI hole or PCI memory hole is a limitation of 32-bit hardware and 32-bit operating systems that causes a computer to appear to have less memory available than is physically installed. This memory addressing limitation and the later workarounds necessary to overcome it are functionally similar to the memory limits of the early 8088 IBM PC memory architecture (see Conventional memory). The PCI hole or PCI memory hole is a limitation of 32-bit hardware and 32-bit operating systems that causes a computer to appear to have less memory available than is physically installed. This memory addressing limitation and the later workarounds necessary to overcome it are functionally similar to the memory limits of the early 8088 IBM PC memory architecture (see Conventional memory). Similar situations have often arisen in the history of computing, when hardware intended to have up to a certain level of resources is designed to handle several times the maximum expected amount, which eventually becomes a severe restriction as Moore's law increases resources economically available. The original IBM PC was typically supplied with 64 KB of memory or less; it was designed to take a maximum of 640 KB, far more than it was thought would ever be needed. This rapidly became a restriction that had to be handled by complex DOS memory management. Similar successive restrictions in size have been imposed and overcome on hard drives. The loss of usable memory caused by the PCI hole, when using memory-mapped I/O, is caused by using the same address space for both physical memory and to communicate with hardware devices. Thus, installed hardware devices need some of the address space in order to communicate with the processor and system software. As 32-bit hardware has a total of four gigabytes of addressable memory, some of the real physical memory of a 32-bit machine, when enough memory is installed, needs to be sacrificed by making it hidden so the devices have room to communicate. Which part of physical memory becomes replaced with the device communication space depends upon the machine, but it is usually anything above 2.5 to 3.5 GB. The amount of system memory that is hidden and unavailable varies widely with the actual mainboard and chipset, the BIOS, the amount of physical memory, the amount of video RAM installed on graphics cards, and the number and type of PCI cards installed in the system. More than a gigabyte of 32-bit system memory can be unavailable when four gigabytes of physical memory and multiple 3D cards with large amounts of video memory are installed; on some mainboards, the hole is always at least one gigabyte in size regardless of the installed expansion cards. A workaround first developed in the Pentium Pro, known as Physical Address Extension (PAE), allows certain 32-bit operating systems to access up to 36-bit memory addresses, even though individual programs are still limited to operating within 32 bits of address space. Each program can have its own four-gigabyte addressing space, together utilizing up to 64 gigabytes of memory across all programs. PAE was fully supported in Windows XP up to the Service Pack 1 (SP1) release, but then withdrawn for SP2; the only 32-bit versions of Microsoft Windows to fully support this are certain high-end server versions of Windows Server 2003 and earlier; as of 2014, it remains in use by some 32-bit Linux distributions. Microsoft disabled the support in Windows XP SP2 and later operating systems because there were many compatibility problems with graphics card and other devices, which needed PAE-aware drivers, distinct from both standard 32-bit and later 64-bit drivers. Many versions of MS Windows can activate what is still called PAE for the purpose of using the NX bit, but this no longer extends the address space.

[ "Conventional PCI", "PCI Express", "Local bus", "pci interface", "PCI configuration space" ]
Parent Topic
Child Topic
    No Parent Topic