Expansion boards This insertion of a memory window into the peripheral address space could originally be accomplished only through specific expansion boards, plugged into the
ISA expansion bus of the computer. Famous 1980s expanded memory boards were
AST RAMpage, IBM PS/2 80286 Memory Expansion Option,
AT&T Expanded Memory Adapter and the
Intel Above Board. Given the price of RAM during the period, up to several hundred dollars per MiB, and the quality and reputation of the above brand names, an expanded memory board was very expensive.
Motherboard chipsets Later, some
motherboard chipsets of
Intel 80286-based computers implemented an expanded memory scheme that did not require add-on boards, notably the
NEAT chipset. Typically, software switches determined how much memory should be used as
expanded memory and how much should be used as
extended memory.
Device drivers An expanded-memory board, being a hardware peripheral, needed a software
device driver, which exported its services. Such a device driver was called
expanded-memory manager. Its name was variable; the previously mentioned boards used REMM.SYS (AST), PS2EMM.SYS (IBM), AEMM.SYS (AT&T) and EMM.SYS (Intel) respectively. Later, the expression became associated with software-only solutions requiring the
Intel 80386 processor, for example
Quarterdeck's
QEMM,
Qualitas'
386MAX or the default
EMM386 in MS-DOS, PC DOS and
DR-DOS.
Software emulation Beginning in 1986, the built-in memory management features of
Intel 80386 processor freely modeled the address space when running legacy real-mode software, making hardware solutions unnecessary. Expanded memory could be simulated in software. The first software expanded-memory
management (emulation) program was
CEMM, available in September 1986 as a utility for the
Compaq Deskpro 386. A popular and well-featured commercial solution was Quarterdeck's QEMM. A contender was Qualitas'
386MAX. Functionality was later incorporated into
MS-DOS 4.01 in 1989 and into
DR DOS 5.0 in 1990, as
EMM386. Software expanded-memory managers in general offered additional, but closely related functionality. Notably, they allowed using parts of the
upper memory area (UMA) (the upper 384 KiB of real-mode address space) called
upper memory blocks (UMBs) and provided tools for loading small programs, typically
terminate-and-stay-resident programs inside ("LOADHI" or "LOADHIGH"). Interaction between
extended memory, expanded-memory emulation and DOS extenders ended up being regulated by the XMS,
Virtual Control Program Interface (VCPI),
DOS Protected Mode Interface (DPMI) and
DOS Protected Mode Services (DPMS) specifications. Certain emulation programs, colloquially known as LIMulators, did not rely on motherboard or 80386 features at all. Instead, they reserved 64 KiB of the base RAM for the expanded memory window, where they copied data to and from either extended memory or the hard disk when application programs requested page switches. This was programmatically easy to implement, but performance was low. This technique was offered by AboveDisk from Above Software and by several
shareware programs. It is also possible to emulate EMS by using XMS memory on 286 CPUs using 3rd party utilities like EMM286 (.SYS driver). ==Decline==