CEMM

Last updated
Compaq Expanded Memory Manager (CEMM)
Developer(s) Compaq
Initial releaseSeptember 1986;35 years ago (1986-09)
Operating system Compaq DOS
Platform Intel 80386
Type Expanded memory manager

CEMM, for Compaq Expanded Memory Manager was the first so-called PC "memory manager" for Intel 80386 CPUs, able to provide expanded memory (EMS) emulation by using the virtual memory features and the virtual 8086 mode of the CPU.

Contents

It was present in Compaq DOS 3.10, shipping with the Compaq Deskpro 386 in September 1986. [1] [2]

Overview

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.

The implementation was not without its 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 extenders ) 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.

See also

Related Research Articles

i386 32-bit microprocessor by Intel

The Intel 386, originally released as 80386 and later renamed i386, is a 32-bit microprocessor introduced in 1985. The first versions had 275,000 transistors and were the CPU of many workstations and high-end personal computers of the time. As the original implementation of the 32-bit extension of the 80286 architecture, the i386 instruction set, programming model, and binary encodings are still the common denominator for all 32-bit x86 processors, which is termed the i386-architecture, x86, or IA-32, depending on context.

Real mode, also called real address mode, is an operating mode of all x86-compatible CPUs. The mode gets its name from the fact that addresses in real mode always correspond to real locations in memory. Real mode is characterized by a 20-bit segmented memory address space and unlimited direct software access to all addressable memory, I/O addresses and peripheral hardware. Real mode provides no support for memory protection, multitasking, or code privilege levels.

DESQview

DESQview (DV) is a text mode multitasking operating environment developed by Quarterdeck Office Systems which enjoyed modest popularity in the late 1980s and early 1990s. Running on top of DOS, it allows users to run multiple programs concurrently in multiple windows.

DOS memory management

In IBM PC compatible computing, DOS memory management refers to software and techniques employed to give applications access to more than 640 kibibytes (kiB) of "conventional memory". The 640 KiB limit was specific to the IBM PC and close compatibles; other machines running MS-DOS had different limits, for example the Apricot PC could have up to 768 KiB and the Sirius Victor 9000, 896 KiB. Memory management on the IBM family was made complex by the need to maintain backward compatibility to the original PC design and real-mode DOS, while allowing computer users to take advantage of large amounts of low-cost memory and new generations of processors. Since DOS has given way to Microsoft Windows and other 32-bit operating systems not restricted by the original arbitrary 640 KiB limit of the IBM PC, managing the memory of a personal computer no longer requires the user to manually manipulate internal settings and parameters of the system.

Extended memory

In DOS memory management, extended memory refers to memory above the first megabyte (220 bytes) 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. DOS programs, running in real mode or virtual x86 mode, cannot directly access this memory, but are able to do so through an application programming interface called the Extended Memory Specification (XMS). This API is implemented by a driver (such as HIMEM.SYS) or the operating system, which takes care of memory management and copying memory between conventional and extended memory, by temporarily switching the processor into protected mode. In this context, the term "extended memory" may refer to either the whole of the extended memory or only the portion available through this API.

Expanded memory

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).

Conventional memory

In 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 directly addressable by the processor for use by the operating system and application programs. As memory prices rapidly declined, this design decision became a limitation in the use of large memory capacities until the introduction of operating systems and processors that made it irrelevant.

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. It is a hardware virtualization technique that allowed multiple 8086 processors to be emulated by the 386 chip; it emerged from the painful experiences with the 80286 protected mode, which by itself was not suitable to run concurrent real mode applications well.

Quarterdeck Expanded Memory Manager (QEMM) is a memory manager produced by Quarterdeck Office Systems in the late 1980s through late 1990s. It was the most popular third-party memory manager for the MS-DOS and other DOS operating systems.

Virtual DOS machines (VDM) refer to a technology that allows running 16-bit/32-bit DOS and 16-bit Windows programs when there is already another operating system running and controlling the hardware.

Phar Lap was a software company specializing in software development tools for DOS operating systems. The company was named after the champion Australian racehorse Phar Lap. They were most noted for their software allowing developers to access memory beyond the 640 KiB limit of DOS and were an author of the VCPI standard.

EMM386 is the expanded memory manager of Microsoft's MS-DOS, IBM's PC DOS, Digital Research's DR-DOS, and Datalight's ROM-DOS which is used to create expanded memory using extended memory on Intel 80386 CPUs. There also is an EMM386.EXE available in FreeDOS.

PMODE is a DOS extender used in several IBM PC compatible DOS applications in the mid and late 1990s. It was created by Thomas "Tran" Pytel, and the first version became publicly available in 1994. The original PMODE was written to be used with programs written in x86 assembler, specifically using Borland's TASM. It was later expanded for use as a drop-in replacement for DOS/4GW under the name PMODE/W.

Upper memory area

In DOS memory management, the upper memory area (UMA) refers to memory between the addresses of 640 KB and 1024 KB (0xA0000–0xFFFFF) in an IBM PC or compatible. IBM reserved the uppermost 384 KB of the 8088 CPU's 1024 KB address space for BIOS ROM, Video BIOS, Option ROMs, video RAM, RAM on peripherals, memory-mapped I/O, and obsoleted ROM BASIC.

Protection ring Layer of protection in computer systems

In computer science, hierarchical protection domains, often called protection rings, are mechanisms to protect data and functionality from faults and malicious behavior.

In computing, the Virtual Control Program Interface (VCPI) is a specification published in 1989 by Phar Lap Software that allows a DOS program to run in protected mode, granting access to many features of the processor not available in real mode. It was supplanted by DOS Protected Mode Interface (DPMI) shortly after being introduced, due in large part to VCPI's inability to work in Windows 3.0's protected mode.

Windows 2.0x 16-bit Microsoft Windows GUI-based operating environment

Windows 2.0 is a 16-bit Microsoft Windows GUI-based operating environment that was released on December 9, 1987, and the successor to Windows 1.0.

The maximum random access memory (RAM) installed in any computer system is limited by hardware, software and economic factors. The hardware may have a limited number of address bus bits, limited by the processor package or design of the system. Some of the address space may be shared between RAM, peripherals, and read-only memory. In the case of a microcontroller with no external RAM, the size of the RAM array is limited by the size of the integrated circuit die. In a packaged system, only enough RAM may be provided for the system's required functions, with no provision for addition of memory after manufacture.

DOS Protected Mode Services (DPMS) is a set of extended DOS memory management services to allow DPMS-enabled DOS drivers to load and execute in extended memory and protected mode.

Compaq Portable 386

The Compaq Portable 386 was a computer released by Compaq Computer Corporation in 1987. Its street price upon its release was US$12,000–14,000 for a model equipped with an 20 MHz Intel 80386 CPU, 2 MB RAM, 16 kB ROM, 1.2 MB 5¼-inch floppy, 40 or 100 MB hard disk, priced at US$7,999 or US$9,999 respectively, and a 10" amber colored gas-plasma display.

References

  1. https://www.pcjs.org/disks/pcx86/diags/compaq/utilities/1986/
  2. "Original CEMM Unearthed | OS/2 Museum".