CEMM
Encyclopedia
CEMM, for Compaq
Expanded Memory Manager was the first so-called PC "memory manager
" for Intel 80386
CPUs, able to transform "XMS" extended memory
into "EMS" expanded memory
by using the virtual memory
features and the virtual 8086 mode
of the CPU.
It was present in Compaq DOS 3.31, in 1987.
In 1986, Compaq was the first vendor to ship a PC compatible computer with a 386 CPU, the Deskpro 386, and it was natural for them to develop solutions leveraging the specific features of their new hardware and in this case allowing existing EMS-compatible DOS programs to access all the memory.
Alas, interesting features often come with less interesting drawbacks. Although CEMM was called an "expanded memory manager", it was really a tiny, protected mode
, single tasking operating system kernel, also called a virtual machine monitor (VMM). It had to catch all the interrupts and all the exceptions, and to reflect them to the virtual machine
where DOS ran. This slowed the machine down a little, increased the latency of interrupts and changed the behavior of DOS programs trying to execute invalid machine instructions. Implementing a VMM was not CEMM's raison d'etre, but EMS emulation required paging, and paging required protected mode. The only way to run existing real-mode DOS and BIOS code was therefore through a VMM.
Because CEMM put the CPU into protected mode, other programs (DOS extender
s) could not do this anymore by themselves. A special API, the VCPI, had to be developed to allow running DOS extender programs. The first CEMM compatible with VCPI was 4.0, provided with Compaq DOS 4.01.
Compaq filed for a patent on the technology in 1987. The patent was granted in 1990 and probably expired in 2007. Compaq was the creator of this technology and the first company to use it. However, over time, QEMM
and 386MAX
became the standard packages. Windows/386 and later releases contained a built-in expanded memory manager (EMM386
) available during Windows sessions and otherwise used for running multiple DOS virtual machines. MS-DOS
4.01 (in 1989) and DR-DOS
5.0 (in 1990) popularized the technology outside of the Windows context. Microsoft's EMM386 implementation was based on CEMM.
Compaq
Compaq Computer Corporation is a personal computer company founded in 1982. Once the largest supplier of personal computing systems in the world, Compaq existed as an independent corporation until 2002, when it was acquired for US$25 billion by Hewlett-Packard....
Expanded Memory Manager was the first so-called PC "memory manager
Memory manager
In IBM PC compatible computing, DOS memory management refers to software and techniques employed to give applications access to more than 640K of "conventional memory". The 640kB limit was specific to the IBM PC and close compatibles; other machines running MS-DOS had different limits, for example...
" for Intel 80386
Intel 80386
The Intel 80386, also known as the i386, or just 386, was a 32-bit microprocessor introduced by Intel in 1985. The first versions had 275,000 transistors and were used as the central processing unit of many workstations and high-end personal computers of the time...
CPUs, able to transform "XMS" extended memory
Extended memory
In DOS memory management, extended memory refers to memory above the first megabyte of address space in an IBM PC or compatible with an 80286 or later processor. The term is mainly used under the DOS and Windows operating systems...
into "EMS" expanded memory
Expanded memory
In DOS memory management, expanded memory is a system of bank switching introduced April 24, 1985 that provided additional memory to DOS programs beyond the limit of conventional memory. Expanded memory uses parts of the address space normally dedicated to communication with peripherals for program...
by using the virtual memory
Virtual memory
In computing, virtual memory is a memory management technique developed for multitasking kernels. This technique virtualizes a computer architecture's various forms of computer data storage , allowing a program to be designed as though there is only one kind of memory, "virtual" memory, which...
features and the virtual 8086 mode
Virtual 8086 mode
In the 80386 microprocessor and later, virtual 8086 mode allows the execution of real mode applications that are incapable of running directly in protected mode while the processor is running a protected mode operating system.VM86 mode uses a segmentation scheme identical to that of real mode In...
of the CPU.
It was present in Compaq DOS 3.31, in 1987.
In 1986, Compaq was the first vendor to ship a PC compatible computer with a 386 CPU, the Deskpro 386, and it was natural for them to develop solutions leveraging the specific features of their new hardware and in this case allowing existing EMS-compatible DOS programs to access all the memory.
Alas, interesting features often come with less interesting drawbacks. Although CEMM was called an "expanded memory manager", it was really a tiny, protected mode
Protected mode
In computing, protected mode, also called protected virtual address mode, is an operational mode of x86-compatible central processing units...
, single tasking operating system kernel, also called a virtual machine monitor (VMM). It had to catch all the interrupts and all the exceptions, and to reflect them to the virtual machine
Virtual machine
A virtual machine is a "completely isolated guest operating system installation within a normal host operating system". Modern virtual machines are implemented with either software emulation or hardware virtualization or both together.-VM Definitions:A virtual machine is a software...
where DOS ran. This slowed the machine down a little, increased the latency of interrupts and changed the behavior of DOS programs trying to execute invalid machine instructions. Implementing a VMM was not CEMM's raison d'etre, but EMS emulation required paging, and paging required protected mode. The only way to run existing real-mode DOS and BIOS code was therefore through a VMM.
Because CEMM put the CPU into protected mode, other programs (DOS extender
DOS extender
A DOS extender is a computer software program which enables software to run under a protected mode environment even though the host operating system is only capable of operating in real mode....
s) could not do this anymore by themselves. A special API, the VCPI, had to be developed to allow running DOS extender programs. The first CEMM compatible with VCPI was 4.0, provided with Compaq DOS 4.01.
Compaq filed for a patent on the technology in 1987. The patent was granted in 1990 and probably expired in 2007. Compaq was the creator of this technology and the first company to use it. However, over time, QEMM
QEMM
Quarterdeck Expanded Memory Manager , was a memory manager produced by Quarterdeck Office Systems in the late 1980s through late 1990s. It was the most popular memory manager for the MS-DOS and other DOS operating systems.-QEMM product ranges:QRAM: A memory manager for 286 or higher CPU. It...
and 386MAX
386MAX
386MAX was a computer memory manager for DOS-based personal computers. It competed with Quarterdeck's QEMM memory manager. It was manufactured by Qualitas....
became the standard packages. Windows/386 and later releases contained a built-in expanded memory manager (EMM386
EMM386
The name EMM386 was used for the expanded memory managers of both Microsoft's MS-DOS and Digital Research's DR-DOS, which created expanded memory using extended memory on Intel 80386 CPUs. There also is an EMM386.EXE available in FreeDOS....
) available during Windows sessions and otherwise used for running multiple DOS virtual machines. MS-DOS
MS-DOS
MS-DOS is an operating system for x86-based personal computers. It was the most commonly used member of the DOS family of operating systems, and was the main operating system for IBM PC compatible personal computers during the 1980s to the mid 1990s, until it was gradually superseded by operating...
4.01 (in 1989) and DR-DOS
DR-DOS
DR-DOS is an MS-DOS-compatible operating system for IBM PC-compatible personal computers, originally developed by Gary Kildall's Digital Research and derived from Concurrent PC DOS 6.0, which was an advanced successor of CP/M-86...
5.0 (in 1990) popularized the technology outside of the Windows context. Microsoft's EMM386 implementation was based on CEMM.
See also
- QEMMQEMMQuarterdeck Expanded Memory Manager , was a memory manager produced by Quarterdeck Office Systems in the late 1980s through late 1990s. It was the most popular memory manager for the MS-DOS and other DOS operating systems.-QEMM product ranges:QRAM: A memory manager for 286 or higher CPU. It...
- EMM386EMM386The name EMM386 was used for the expanded memory managers of both Microsoft's MS-DOS and Digital Research's DR-DOS, which created expanded memory using extended memory on Intel 80386 CPUs. There also is an EMM386.EXE available in FreeDOS....
- Unreal modeUnreal modeIn x86 computing, unreal mode, also big real mode, huge real mode, or flat real mode, is a variant of real mode , in which one or more data segment registers have been loaded with 32-bit addresses and limits. Contrary to its name, it is not a separate addressing mode that the x86-32 and x86-64...
- Real modeReal modeReal mode, also called real address mode, is an operating mode of 80286 and later x86-compatible CPUs. Real mode is characterized by a 20 bit segmented memory address space and unlimited direct software access to all memory, I/O addresses and peripheral hardware...
- Protected modeProtected modeIn computing, protected mode, also called protected virtual address mode, is an operational mode of x86-compatible central processing units...
- Conventional memoryConventional memoryIn DOS memory management, conventional memory, also called base memory, is the first 640 kilobytes of the memory on IBM PC or compatible systems. It is the read-write memory usable by the operating system and application programs...
- Extended memoryExtended memoryIn DOS memory management, extended memory refers to memory above the first megabyte of address space in an IBM PC or compatible with an 80286 or later processor. The term is mainly used under the DOS and Windows operating systems...
(XMS) - Expanded memoryExpanded memoryIn DOS memory management, expanded memory is a system of bank switching introduced April 24, 1985 that provided additional memory to DOS programs beyond the limit of conventional memory. Expanded memory uses parts of the address space normally dedicated to communication with peripherals for program...
(EMS) - High Memory Area (HMA)
- Upper Memory AreaUpper Memory AreaIn DOS memory management, the upper memory area refers to memory between the addresses of 640 KB and 1024 KB in an IBM PC or compatible. IBM reserved the uppermost 384 KB of the 8088 CPU's 1024 KB address space for ROM, RAM on peripherals, and memory-mapped input/output...
(UMA)