The 640 KB barrier is an architectural limitation of IBM and IBM PC compatible PCs. The Intel 8088 CPU, used in the original IBM PC, was able to address 1 MB (220 bytes), as the chip offered 20 address lines.
0-block | 1st 64 KB | Ordinary user memory to 64 KB |
1-block | 2nd 64 KB | Ordinary user memory to 128 KB |
2-block | 3rd 64 KB | Ordinary user memory to 192 KB |
3-block | 4th 64 KB | Ordinary user memory to 256 KB |
4-block | 5th 64 KB | Ordinary user memory to 320 KB |
5-block | 6th 64 KB | Ordinary user memory to 384 KB |
6-block | 7th 64 KB | Ordinary user memory to 448 KB |
7-block | 8th 64 KB | Ordinary user memory to 512 KB |
8-block | 9th 64 KB | Ordinary user memory to 576 KB |
9-block | 10th 64 KB | Ordinary user memory to 640 KB |
A-block | 11th 64 KB | Extended video memory (EGA) |
B-block | 12th 64 KB | Standard video memory (MDA/CGA) |
C-block | 13th 64 KB | ROM expansion (XT, EGA, 3270 PC) |
D-block | 14th 64 KB | other use (PCjr cartridges, LIM EMS) |
E-block | 15th 64 KB | other use (PCjr cartridges, LIM EMS) |
F-block | 16th 64 KB | System ROM-BIOS and ROM-BASIC |
In the design of the PC, the memory below 640 KB was for random-access memory on the motherboard or on expansion boards. The 384 KB above was reserved for system use and optional devices. This upper portion of the 8088 address space was used for the ROM BIOS, additional read-only memory, BIOS extensions for fixed disk drives and video adapters, video adapter memory, and other memory-mapped input and output devices.
The design of the original IBM PC placed the Color Graphics Adapter (CGA) memory map and other hardware in the 384 KB upper memory area (UMA). The need for more RAM grew faster than the needs of hardware to utilize the reserved addresses, which resulted in RAM eventually being mapped into these unused upper areas to utilize all available addressable space. This introduced a reserved "hole" (or several holes) into the set of addresses occupied by hardware that could be used for arbitrary data. Avoiding such a hole was difficult and ugly and not supported by MS-DOS or most programs that could run on it. Later, space between the holes would be used as upper memory blocks (UMBs).
To maintain compatibility with older operating systems and applications, the 640 KB barrier remained part of the PC design even after the 8088 had been replaced with the Intel 286 processor, which could address up to 16 MB of memory. The 1 MB barrier also remained as long as the 286 was running in compatibility mode, as MS-DOS forced assumptions about how the segment and offset registers overlapped such that addresses with more than 20 bits were unsupported. It is still present in IBM PC compatibles today if they are running MS-DOS, and even in the most modern Windows-based PCs the RAM still has a "hole" in the area between 640 and 1024 KBs, which however is invisible to application programs thanks to paging and virtual memory.
A similar 3 GB barrier exists, which reduces 32-bit addressing from 4 GB to ~3 GB on motherboards that use memory mapped I/O. However, due to applications not assuming that the 3–4 GB range is reserved, there is no need to retain this addressing for compatibility, and thus the barrier is easily removed by using a separate address bus for hardware, and only affects a relatively small number of computers of the 386 era as contemporary Memory Controllers and Buses (e.g. Industry Standard Architecture) could only reach 16 Megabytes. (Some motherboards feature a "Memory Hole at 15 Megabytes" option required for certain VGA video cards that require exclusive access to one particular megabyte for video memory.) Newer Video cards on AGP (PCI memory space) bus can have 256MB memory with 1GB aperture size.
Read more about this topic: Conventional Memory
Famous quotes containing the word barrier:
“Clearly, some time ago makers and consumers of American junk food passed jointly through some kind of sensibility barrier in the endless quest for new taste sensations. Now they are a little like those desperate junkies who have tried every known drug and are finally reduced to mainlining toilet bowl cleanser in an effort to get still higher.”
—Bill Bryson (b. 1951)