thumb|Several expanded-memory [[page (computer memory)|pages are bank-switched in the page frame, part of the upper memory area.]]
In DOS memory management, expanded memory is a system of bank switching that provided additional memory to DOS programs beyond the limit of conventional memory (640 KiB).
Expanded memory is an umbrella term for several incompatible technology variants. The most widely used variant was the Expanded Memory Specification (EMS), which was developed jointly by Lotus Development, Intel, and Microsoft, so that this specification was sometimes referred to as "LIM EMS". LIM EMS had three versions: 3.0, 3.2, and 4.0. The first widely implemented version was EMS 3.2, which supported up to 8 MiB of expanded memory and uses parts of the address space normally dedicated to communication with peripherals (upper memory) to map portions of the expanded memory. EEMS, an expanded-memory management standard competing with LIM EMS 3.x, was developed by AST Research, Quadram and Ashton-Tate ("AQA"); it could map any area of the lower 1 MiB. EEMS ultimately was incorporated in LIM EMS 4.0, which supported up to 32 MiB of expanded memory and provided some support for DOS multitasking as well. IBM, however, created its own expanded-memory standard called XMA.
The use of expanded memory became common with games and business programs such as Lotus 1-2-3 in the late 1980s through the mid-1990s, but its use declined as users switched from DOS to protected-mode operating systems such as Linux, IBM OS/2, and Microsoft Windows.
Background
right|150px|thumb|A section of the lower 1 MiB address space provides a "window" into several megabytes of Expanded Memory
The 8088 processor of the IBM PC and IBM PC/XT can address one megabyte (MiB, or 2<sup>20</sup> bytes) of memory. It inherited this limit from the 20-bit external address bus (and overall memory addressing architecture) of the Intel 8086. The designers of the PC allocated the lower 640 KiB ( bytes) of address space for read-write program memory (RAM), called conventional memory, and the remaining 384 KiB of memory space is reserved for uses such as the system BIOS, video memory, and memory on expansion peripheral boards.
Even though the IBM PC AT, introduced in 1984, uses the 80286 chip that can address up to 16 MiB of RAM as extended memory, it can only do so in protected mode. The scarcity of software compatible with protected mode (no standard DOS applications can run in it) meant that the market was still open for another solution. AST Research, STB Systems, Persyst, Quadram, and Tecmar quickly designed EMS-compliant cards to compete with Intel's own Above Board expansion card. By mid-1985 some already called EMS a de facto standard.
The first public version of the EMS standard, called EMS 3.0 was released in 1985; EMS 3.0, however, saw almost no hardware implementations before being superseded by EMS 3.2. EMS 3.2 uses a 64 KiB region in the upper 384 KiB (upper memory area) divided into four 16 KiB pages, which can be used to map portions of the expanded memory. The company developed its own memory standard called Expanded Memory Adapter (XMA); the IBM DOS driver for it is XMAEM.SYS. Unlike EMS, the IBM expansion boards can be addressed both using an expanded memory model and as extended memory. Expanded storage could not be directly addressed by applications; an MVS feature known as "window services" enabled applications to allocate movable windows to expanded storage within their own address space. There was also a "data mover" feature which could be invoked to move data between main memory (central storage) and expanded storage; later, an "Asynchronous Data Mover Facility" (ADMF) was introduced, which enabled applications to request data to be moved between the two in the background, while they performed other processing. By the mid-1990s, expanded storage had ceased to be a physically separate memory, and had become merely a logical division within the system memory enforced by firmware; but it was not until the November 2016 release of z/VM 6.4 that IBM finally removed all support for expanded storage from its mainframe operating systems.
- Address Windowing Extensions (AWE) is a conceptually similar feature in Microsoft Windows, used to enable 32-bit applications to access more memory than the 2–4GB that can fit in a 32-bit address space. Although still supported by current versions of Windows, its use has been superseded by 64-bit applications, which can access >4GB of memory directly.
- Virtual memory creates the illusion of available memory using, for instance, disk storage.
See also
- Conventional memory
- DOS memory management
- Extended memory (XMS)
- High memory area (HMA)
- Overlay (programming)
- Upper memory area (UMA)
- Global EMM Import Specification (GEMMIS)
- x86 memory segmentation
- Address Windowing Extensions (AWE)
- Physical Address Extension (PAE)
- Sideways address space on the Acorn BBC Micro home computer
References
<!-- Not in use
Not in use-->
</references>
