ARCHIVED: On a PC, what are the differences between various kinds of memory?

This content has been archived, and is no longer maintained by Indiana University. Information here may no longer be accurate, and links may no longer be available or reliable.

Conventional memory

Conventional memory is contiguous memory directly used by applications running on any Intel 80x86 microprocessor that is running in real mode under unaugmented MS-DOS. Addressed from 0 to 640KB (up to 736KB with special device drivers and hardware). The original 8088 processor could address up to 1MB (220, 20 being the number of address lines which come out of the CPU) of memory directly; however, IBM chose to reserve the upper 384KB for ROM and other uses.

Expanded memory

Expanded memory is memory that conforms to the Lotus-Intel-Microsoft Expanded-Memory-Standard (LIM EMS); currently this is at 4.0 and unlikely to change much more. Expanded memory works with any 80x86 CPU and permits up to 32MB of memory expansion on any machine. CPUs below the 386 require additional support hardware, usually on the motherboard or on a memory expansion board. Special memory paging hardware built into 386 chips and up permit implementation of EMS in software, so that extended memory can look like expanded memory to your applications. Applications must be written to take advantage of EMS. Because of its longevity, EMS has the widest application support.

Expanded memory is divided into 16KB pages, which are mapped into a predetermined area in the first megabytes of address space (the page frame) as the application requests. EMS 4.0 usually requires loading a device driver to manage application requests. Code can be executed from the page frame, which can be much larger than 64KB with some hardware configurations. Multitasking software takes advantage of this, as do programs which load their overlays into EMS.

Extended memory

Extended memory is memory located past the first megabyte of the address space. Only 286s and up support extended memory. With the minor exception of the HMA (see below), it is only addressable by applications run in real mode. DOS applications make use of this memory to store data, but not to execute code. XMS (eXtended Memory Standard, set by Microsoft) permits applications to allocate extended memory. It also copies data to and from extended memory and conventional memory so that the application does not need to switch between modes. Like EMS, XMS usually requires loading a device driver.

Extended memory is limited to 15MB on 286 and 386SX models. (15MB extended memory, plus 1MB conventional and upper memory equals 16MB, or 224, 24 being the number of address lines coming out of the CPU); limited to 4 gigabytes (232) for 386DX chips and up.

Upper memory blocks

Upper memory blocks refers to memory found between A0000-FFFFFh (640KB to 1024KB) in the CPU address space. Upper memory blocks are not connected with conventional memory, and cannot be directly used by applications which have not been made aware of its existance. Most likely this memory is mapped into a region using 386 memory management hardware and software or special chipsets on the motherboard, rather than physically existing there. Ordinary applications cannot use this memory easily. Using special utilities (e.g., LOADHIGH, etc.), you can place device drivers, TSRs, and certain DOS data areas (e.g., BUFFERS, FILES, FCBS) into upper memory blocks. This helps free up conventional memory.

High memory area

High memory area is an area slightly smaller than 64Kb starting at the 1024Kb boundary, available only on 286 or higher computers. Due to the design of the memory addressing of Intel microprocessors, you can address this space in real mode without switching to protected mode. With appropriate software, you can load device drivers and TSRs into this region as well. Quaterdeck's Desqview uses the high memory area, as does Windows 3.x and DOS 5.0 and up.

VCPI (Virtual Control Program Interface) and DPMI (DOS Protected Mode Interface)

VCPI (Virtual Control Program Interface) and DPMI (DOS Protected Mode Interface) are API's (Application Programming Interfaces) that make it possible for software to take advantage of the special capabilities of the 386 chips and up without getting in each other's way. The domain for these standards go beyond simple memory management, but they often include EMS and XMS support as well. VCPI services are provided by QEMM/Desqview and most of the DOS extenders currently on the market; DMPI is somewhat newer (and more capable) and currently is supported primarily in Microsoft Windows.

Shadow ram

Shadow ram is memory that is used to "shadow" ROM chips. Because ROM chips are typically very slow to access, many system operations (i.e., cases where the applications call the system BIOS or other ROMs) can be sped up by copying their contents to RAM, and then using special hardware (like the C&T chipset, or the abilities of the 386 chips and up) to make the memory appear where the ROM's should be. This strategy is being used less often, as the speed-up is sometimes not worth the extra memory-management hassles for the end-user.

Cache ram

Cache ram is very high-speed RAM chips which sit between the CPU and main memory. It stores (i.e., caches) memory accesses by the CPU. Cache ram helps to alleviate the gap between the speed of a CPU's megahertz rating and the ability of RAM to respond and deliver data. It reduces the frequency that the CPU must wait for data from the main memory.

This is document abka in the Knowledge Base.
Last modified on 2018-01-18 08:57:13.