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
In DOS memory management, conventional memory, also called base memory, is the first 640 kilobytes of the memory on IBM PC or compatible systems. It is the read-write memory directly addressable by the processor for use by the operating system ...
).
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
In IBM PC compatible computing, DOS memory management refers to software and techniques employed to give applications access to more than 640 kibibytes (640*1024 bytes) (KiB) of "conventional memory". The 640 KiB limit was specific to the IBM P ...
. Similar successive restrictions in size have been imposed and overcome on
hard drives
A hard disk drive (HDD), hard disk, hard drive, or fixed disk is an electro-mechanical data storage device that stores and retrieves digital data using magnetic storage with one or more rigid rapidly rotating platters coated with magne ...
.
Unavailable memory
The loss of usable memory caused by the PCI hole, when using
memory-mapped I/O
Memory-mapped I/O (MMIO) and port-mapped I/O (PMIO) are two complementary methods of performing input/output (I/O) between the central processing unit (CPU) and peripheral devices in a computer. An alternative approach is using dedicated I/O pr ...
, 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
Dual-ported video RAM, or VRAM, is a dual-ported variant of dynamic RAM (DRAM), which was once commonly used to store the framebuffer in graphics adapters. Note that most computers and game consoles do not use this form of memory, and dual-porte ...
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 card
In computing, an expansion card (also called an expansion board, adapter card, peripheral card or accessory card) is a printed circuit board that can be inserted into an electrical connector, or expansion slot (also referred to as a bus sl ...
s.
Physical address extension
A workaround first developed in the Pentium Pro, known as
Physical Address Extension
In computing, Physical Address Extension (PAE), sometimes referred to as Page Address Extension,
is a memory management feature for the x86 architecture. PAE was first introduced by Intel in the Pentium Pro, and later by AMD in the Athlon proces ...
(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. Provided there is enough memory installed, each program can have its own four-gigabyte addressing space, together utilizing up to 64 gigabytes of memory across all programs.
But PAE alone is not enough to address the PCI hole issue, as memory addresses and I/O PCI addresses are still overlapping somewhere between the 3rd and 4th gigabyte. A PAE compatible operating system together with a PAE compatible CPU cannot do better than accessing memory from the 1st to the 3rd gigabyte, then from the 5th to the 64th gigabyte. The PCI hole is still there. On a 4GB host, and in the absence of one or another additional workaround, PAE does nothing for accessing the ~1GB memory overlapped by the PCI I/O.
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
Windows Server 2003 is the sixth version of Windows Server operating system produced by Microsoft. It is part of the Windows NT family of operating systems and was released to manufacturing on March 28, 2003 and generally available on April 24, 2 ...
and earlier; as of 2014, it is mainly in use by 32-bit
Linux
Linux ( or ) is a family of open-source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991, by Linus Torvalds. Linux is typically packaged as a Linux distribution, w ...
distributions;
Ubuntu
Ubuntu ( ) is a Linux distribution based on Debian and composed mostly of free and open-source software. Ubuntu is officially released in three editions: '' Desktop'', ''Server'', and ''Core'' for Internet of things devices and robots. All ...
has made it mandatory for its 32-bit version since 2013. 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.
Dansdata: What's with the 3Gb memory barrier?
/ref> Many versions of MS Windows can activate what is still called PAE for the purpose of using the NX bit
The NX bit (no-execute) is a technology used in CPUs to segregate areas of memory for use by either storage of processor instructions or for storage of data, a feature normally only found in Harvard architecture processors. However, the NX bit i ...
, but this no longer extends the address space.
Filling the memory hole
As stated earlier, in a 32-bit PAE-enabled and even in 64-bit systems, memory below and above the "memory hole" is available, but 512 MB to 1.5 GB of RAM is unavailable, around the 3rd gigabyte, because it uses there memory addresses required for devices. With the decreasing cost of memory this may not be a serious issue, but there are ways to regain access to the missing memory.
Mapping devices to addresses above 4 GB
The limitations of the 32-bit PCI hole can affect purely 64-bit operating systems as the system BIOS must cater for all operating systems which are supported by the hardware (16-, 32-, and 64-bit operating systems all run on the same hardware). The BIOS must be able to boot mapping all devices below four gigabytes, although a 64-bit system does not require this. Many BIOSes can be configured by the user to fill the memory hole by mapping devices high up in the 64-bit address space, so long as the devices, their drivers, and the chipset
In a computer system, a chipset is a set of electronic components in one or more integrated circuits known as a "Data Flow Management System" that manages the data flow between the processor, memory and peripherals. It is usually found on the mo ...
all support this. A machine configured this way cannot boot into a 16- or 32-bit operating system; if a machine is set up this way, the BIOS setup must be temporarily changed to boot into a 16- or 32-bit operating system, e.g. from a bootable CD or USB storage device.
Mapping memory to addresses above 4 GB
Another way to remove the PCI hole, which is only useful for 64-bit operating systems and those 32-bit systems that support the Physical Address Extension method described above, is to "remap" some or all of the memory between the two- and four-gigabyte limits to addresses above four gigabytes. This needs to be supported by the chipset of the computer and can usually be activated in the BIOS Setup. This remapping works on the level of physical address
In computing, a physical address (also real address, or binary address), is a memory address that is represented in the form of a binary number on the address bus circuitry in order to enable the data bus to access a ''particular'' storage cell ...
es, unlike the higher-level remapping of virtual to physical addresses that happens inside the CPU core. Activating this for traditional 32-bit operating systems does more harm than good, as the remapped memory (often larger than the PCI hole itself) is unusable to such operating systems, even though e.g. Windows Vista
Windows Vista is a major release of the Windows NT operating system developed by Microsoft. It was the direct successor to Windows XP, which was released five years before, at the time being the longest time span between successive releases of ...
will show such memory to physically exist on the "System Properties" page.
See also
* AGP aperture
Accelerated Graphics Port (AGP) is a parallel expansion card standard, designed for attaching a video card to a computer system to assist in the acceleration of 3D computer graphics. It was originally designed as a successor to PCI-type connec ...
* 3 GB barrier
* Expanded memory
In DOS memory management, expanded memory is a system of bank switching that provided additional memory to DOS programs beyond the limit of conventional memory (640 KiB).
''Expanded memory'' is an umbrella term for several incompatible tec ...
* PSE-36 In computing, PSE-36 (36-bit Page Size Extension) refers to a feature of x86 processors that extends the physical memory addressing capabilities from 32 bits to 36 bits, allowing addressing to up to 64 GB of memory. Compared to the Physical ...
an alternative to PAE on x86 processors to extend the physical memory addressing capabilities from 32 bits to 36 bits
* RAM limit
Ram, ram, or RAM may refer to:
Animals
* A male sheep
* Ram cichlid, a freshwater tropical fish
People
* Ram (given name)
* Ram (surname)
* Ram (director) (Ramsubramaniam), an Indian Tamil film director
* RAM (musician) (born 1974), Dutch
* Ra ...
Notes
References
{{reflist
X86 architecture
Virtual memory
X86 memory management
Peripheral Component Interconnect