Expanded Memory Specification

from Wikipedia, the free encyclopedia

The Expanded Memory Specification ( EMS for short , often unhappily translated into “expansion memory ”) is an interface for accessing so-called expanded memory on an x86 -compatible PC in real mode .

It was intended for PCs based on processors of types 8088, 8086, 80186 and possibly also 80286. With the 8088, 8086 and 80186, only a maximum of 1  MiB address space was available in direct addressing (i.e. without memory management functions = so-called real mode ). This restriction also applied to successor processors when they were operated in real mode.

With EMS, the limitation of 1 MiB physical memory could be circumvented by displaying additional memory in small pages at a specific location (usually not stored with RAM) in the 1 MiB address space.

Nowadays EMS is no longer of any practical importance, since modern protected-mode operating systems are no longer dependent on this memory expansion and because modern processors can use more memory and also offer the protected-mode operating systems the necessary hardware support for flexible memory management. Virtual expanded memory, which is emulated with the memory management methods of Protected Mode, is very popular because it is easier to use than other methods (e.g. XMS , DPMIs or switching to Protected Mode yourself) → see the EMS section from 386s .

History of origin

Emulex Persyst 16 bit ISA card with 4 MiB RAM

In the mid-1980s, when the MS-DOS operating system dominated the PC market, the 640 KB of conventional memory that it made available for programs was no longer sufficient for many larger programs. Various solutions have been implemented to access more memory. So special plug-in cards were sold that contained additional memory. These cards hidden part of their memory at a particular point in 1 MB - address space , so that a program could access it. Special commands could be used to control which part of the card memory (which was often between 512 KiB and 2 MiB in size) should be displayed in the address space of the processor ( memory bank switching ). As a result, a program could never use the entire map memory at once, but only the part that was currently displayed. These cards were called memory expanders , and the memory on them was called expanded memory .

These cards were incompatible with each other and a program that wanted to use these memory expanders had to have separate program functions for each of these cards. In 1985 the companies Lotus (as the manufacturer of the spreadsheet system Lotus 1-2-3), Intel and Microsoft agreed on a standard called LIM-EMS. Most of the time, this standard is meant when speaking of expanded memory .


LIM-EMS prescribes a so-called "expanded memory manager" (EMM). This is a device driver that makes its functions available via a software interrupt . The expanded memory is in pages (ger .: pages split) of 16 KB. A 64 KB window ( page frame or page window ) is reserved in the address space , in which 4 EMS memory pages are then displayed. The EMS window usually occupies the addresses D0000 hex to DFFFF hex ; the 4 displayed EMS pages begin at addresses D0000 hex , D4000 hex , D8000 hex and DC000 hex .

The EMS driver supplied by the card manufacturer (often referred to emm.sysas) offers a standardized set of functions, for example for querying the size of the entire expanded memory , the number of free pages, occupying and releasing memory pages and of course showing and hiding certain ones Pages in the EMS window.

The functions of the EMS driver are available at software interrupt 67 hex .

EMS from the 386

The EMS memory cards were not widely used because they were quite expensive. From the 80386 onwards , however, the processors were able to use a special operating mode called the Virtual 8086 Mode . With this mode a real mode environment (as used by DOS) can be emulated within a protected mode environment. In protected mode , the x86 -compatible processors from the 80386 onwards also master what is known as paging technology , with which the (virtual) program addresses can be mapped to different real (physical) memory addresses.

Both of these techniques enable a storage driver that provides an EMS window and redirects access to it to other storage areas (beyond the 1 MB limit). The EMS driver emm386.exethat is included with MS-DOS from version 4.00, or corresponding counterparts from third-party qemm386.exeproviders such as Quarterdeck, enables EMS memory to be provided without an EMS card being present in the computer.

See also