Conventional memory

From Wikipedia, the free encyclopedia

Conventional memory is the first 640 kibibytes of an IBM PC's memory.

Contents

[edit] 640 KiB barrier

The 640 KiB barrier is an aspect of the IBM PC and compatibles when running under MS-DOS, which could only address up to 640 KiB of memory for running applications. This is due to an architectural limitation of the Intel 8088 CPU, used in the original IBM PC.The 8088 and 8086 were only capable of addressing 1024 KiB of memory (220 bytes), since the chip offered only 20 address lines; of these 1024 KiB, IBM reserved the upper 384 KiB for system purposes — the Upper Memory Area. This left only the lower 640 KiB for user programs and data.

At the time of the PCs release in 1981, 640 KiB would have seemed more than plenty for the typical user, and it took a few years until most new PCs had even that much memory installed. The most popular existing microcomputer when the PC appeared, the Apple II+, had only 64 KiB in the most common configuration and could not be easily expanded beyond this; the value of compatibility of succeeding generations of microcomputers was not yet perceived as clearly back then as it was in the mid-1980s, so that probably few people at IBM or elsewhere expected the IBM PC architecture to last more than a few years in the market.

To maintain compatibility with older OSes, the 640 KiB 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 MiB of memory. 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 kibibytes, which however is invisible to application programs thanks to paging and virtual memory[citation needed].

[edit] Additional memory

One technique used on early IBM XT computers with Monochrome Display Adapter (MDA) or Color Graphics Adapter (CGA) displays was to add more memory to the motherboard and use a custom address decoder programmable read-only memory (PROM) chip to make it appear at 640 KiB; this moved the barrier to 704 KiB[1].

Memory managers on 386-based systems (such as QEMM or MemoryMax in DR-DOS) could achieve the same effect, adding conventional memory at 640 KiB and moving the barrier to 704 kiB or 736 KiB. Only CGA could be used in this situation, because Enhanced Graphics Adapter (EGA) used this memory for itself.

The AllCard, an add-on memory management unit (MMU) for XT-class computers, allowed normal memory to be mapped into the A0000-EFFFF (hex) address range, giving up to 952 KiB for DOS programs. Programs such as Lotus 1-2-3, which accessed video memory directly, needed to be patched to handle this memory layout. Therefore, the 640 KiB barrier was removed at the cost of hardware compatibility.

[edit] Memory optimisation

As DOS applications grew larger and more complex in the late 1980s, it became common practice to free up conventional memory, by moving device drivers and Terminate and Stay Resident programs into Upper Memory Blocks in the Upper Memory Area at boot, in order to maximize the conventional memory available for applications. This had the advantage of not requiring hardware changes, and preserved application compatibility.

Most users used the free emm386 driver provided in DOS 5 by Microsoft, but third party products from companies such as QEMM, also proved popular. The process of optimisation was eccentric, in the sense that because the sizes of the UMBs would vary, getting best results required moving equivalent sized drivers, into equivalent sized blocks. To this end, manual tuning of the process typically produced best results, in the sense of greatest free conventional memory.

In DOS 6 Microsoft introduced memmaker, which automated this process of block matching, matching the functionality third party memory managers offered.

[edit] DOS extenders

The barrier was only overcome with the arrival of DOS extenders, which allowed DOS applications to run in Extended Memory, but these were not very widely used outside the computer game area. The first PC operating systems to integrate such technology were Compaq DOS 3.31 (via CEMM) and Windows/386 2.1, both released in 1988. Windows applications did not suffer from the 640 KiB barrier.

Prior to DOS extenders, if a user installed additional memory and wished to use it under DOS, they would first have to install and configure drivers to support either Expanded Memory Specification (EMS) or Extended Memory Specification (XMS) random access memory (RAM), and in most cases applications could only move data into and out of the additional space, but not use it in-place; this made memory beyond the 640 KiB barrier slow and cumbersome to use.

[edit] Windows

With modern operating systems and 32-bit machines the distinction between conventional and extended memory is rarely relevant, since all memory can be accessed uniformly in protected mode. Most users are therefore unaware of the special significance the first 640 KiB of PC memory has in the history of the development personal computers.

[edit] See also

[edit] References

This article was originally based on material from the Free On-line Dictionary of Computing, which is licensed under the GFDL.

In other languages