Expanded memory
|
Expanded Memory is memory on an IBM PC compatible computer that is used through the Expanded Memory Specification ("EMS") memory paging scheme, enabling access to extra RAM above the 1MB conventional memory area while the processor is in real mode. (This was critically important because MS-DOS ran in real mode.) This is accomplished either through an add-on peripheral holding the additional memory, or, in later 386-based computers, through Expanded Memory Manager (EMM) software.
Before Intel's 286 processor was introduced, PCs used either the 8088 or 8086 CPU, either of which could only address 1 megabyte of RAM. EMS was a bank switching scheme which was the only way these computers could use more than 1 megabyte. A 64K block of memory called a page frame could be set to "point" to any block of memory above the 1 megabyte mark; software would utilize this 64K block as desired, and then when a different block was desired, the EMS driver would point the page frame to a different 64K block.
Since software could only read from or write to a single 64K block at a time, utilizing expanded memory was onerous, and the task was feared and hated by all PC programmers. All data needed to be stored in chunks smaller than 64K, and only one of these chunks was actually accessible at a time. Still, it was a way to use more memory, and for memory-demanding software, using it in a grueling way was better than not using it at all. A constant design challenge was determining what data should be stored in the easy-to-use lower 640K of memory, and what data should be stored in expanded memory with its awful management overhead.
EMS was developed jointly by Lotus, Intel, and Microsoft prior to 1988, so this specification was sometimes referred to as "LIM EMS". The technique of expanded memory access continued to be used by software through the early 1990s, when DOS extenders became mature and allowed the far simpler XMS scheme to be used.
PCs based on the 80286 or better processors could have memory above the 1MB mark in the memory map, termed Extended memory. However, this was not directly accessible to real mode applications until the development of the Extended Memory Specification standard. Thus, EMS remained more commonly-used.
After the introduction of systems based on the Intel 80386 processor, a new type of program appeared, the Expanded Memory Manager. This used the memory-management hardware of the 386 chip to remap extended or XMS memory into the Upper Memory Area (UMA), effectively transforming XMS RAM into EMS. The most popular program in this genre was Quarterdeck's QEMM, but the functionality was later incorporated into DOS, first by DR-DOS 5.0 in 1990 and later by MS-DOS 5.0 in 1991. In both these operating systems, this mapping was controlled by the Expanded Memory Manager (EMM) software, called "EMM386.EXE". In earlier systems, a dedicated EMS hardware adaptor is needed to map memory into the page frame. In both cases, an appropriate device driver is needed for the proper communication between hardware and EMM.
EEMS, a competing expanded memory management standard, was developed by AST Research, Quadram and Ashton-Tate.
See also
- Unreal mode
- Conventional memory
- Upper Memory Area
- High Memory Area
- Extended memory
- Extended Memory Specification
Reference
A complete discussion of EMS and programming examples can be found in ["PC System Programming for developers", 1989, ISBN 1-55755-035-2 (Book only) and ISBN 1-55755-036-0 (Book and diskette)].
- This article was originally based on material from the Free On-line Dictionary of Computing, which is licensed under the GFDL.