Understanding EMS 4.0
by Lloyd Borrett
Technical Cornucopia, January–February 1989
In the summer of 1986 expanded memory was an idea whose
time had come. Quite simply, it provided users with the long
sought after capacity to exceed the DOS memory addressing
limitation of 640 KBytes.
What the PC industry wasn't ready for, were two
competing, though not entirely incompatible, expanded memory
standards. These were the Expanded Memory Specification
(EMS) endorsed and expounded by Lotus, Intel and Microsoft
(LIM) and the Enhanced Expanded Memory Specification (EEMS)
advanced by AST.
Today, after two years of waging the EMS marketing wars,
all parties are united behind a single, functional and
universally accepted expanded memory standard — EMS 4.0.
Basically, this new version of EMS incorporated all the
salient features of EEMS: an enlarged page-frame size, the
ability to map directly into the lower 640 KBytes of memory
and alternate sets of mapping registers. In order to
incorporate the functionality inherent in EEMS, EMS 4.0 had
to adopt the more sophisticated design of AST's enhanced
expanded memory standard. The result is a specification that
satisfies user's growing demands for larger programs and
multitasking capabilities.
One problem remains however — and that is the lack of
hardware compatibility between plain EMS boards and the new
EMS 4.0 standard. As we shall see, this incompatibility,
while not affecting EEMS products, will have a great impact
on those trying to utilise EMS 3.2 boards with new EMS 4.0
drivers.
The need for Expanded Memory
Limitations in personal computer architecture
necessitated some form of expanded memory. While these
systems had grown remarkably in power and capability,
software applications were becoming increasingly complex,
utilising more and more memory.
The 8088 microprocessor used in the original IBM PC could
only access 1 MByte of memory. Accordingly, IBM and
Microsoft had developed the DOS operating system to divide
that 1 MByte of addressable space into two partitions -
between 0 and 640 KBytes was utilised by application
programs, while 640 KBytes to 1 MByte was reserved for
system functions.
The introduction of the 80286 microprocessor, and its
utilisation by IBM in its PC AT computer, increased
addressable memory to 16 MBytes. However, DOS and DOS
application programs continued to maintain the 1 MByte space
limitation, ensuring software compatibility among all DOS
systems. The idea behind expanded memory was to provide
application programs with a method to access more than the
available 640 KBytes.
For example, Lotus 1-2-3 requires that both the
application program and its worksheet be stored entirely in
memory. Therefore, the DOS 640 KByte memory limitation
restricted the size of the worksheet. However, with expanded
memory circumventing this DOS limitation, users could
suddenly create larger spreadsheets.
The technique
All three specifications (EMS, EEMS, and EMS 4.0) define
a similar method of organising expanded memory: the memory
map. The specifications partition expanded memory into 16
KByte logical pages that are swapped in and out of the PC's
addressing space.
To allow maximum flexibility in the manner in which these
pages are mapped into the PC addressing space, both EEMS and
EMS 4.0 define a 1 MByte page frame that corresponds to the
operating system 1 MByte address space.
Consequently, both EEMS and EMS 4.0 hardware compatible
memory boards are capable of mapping 64 expanded memory
pages anywhere into that 1 MByte frame at any given time. It
is precisely this memory mapping capability that offers the
versatility to perform multitasking operations <196> the
concurrent execution of multiple applications.
EMS 3.2 memory boards limit the expanded memory's page
frame to a specified 64 KBytes of space. This space is
located in the section of upper memory above the DOS 640
KByte limit.
Using EMS 3.2 hardware, a maximum of four 16 KByte
expanded memory pages can be mapped into this page frame at
any one time. Because most current application programs
require at least 256 KBytes to run, this 64 KByte page frame
is not large enough for them to execute within expanded
memory.
So, while the original EMS standard could store data, it
could not store actual program code. This is the primary
reason why EMS 3.2 memory boards can not, even with new EMS
4.0 software drivers, perform true multitasking operations.
Multiple memory maps
Another important EEMS hardware feature implemented in
EMS 4.0 is the concept of multiple sets of mapping
registers. These allow operating environments, such as
Windows and DESQview, to efficiently perform multitasking
operations. Because this is a hardware feature not designed
into the original EMS 3.2, such boards can not offer this
functionality even with EMS 4.0 software drivers.
With multiple sets of registers, application programs
running concurrently under the control of an operating
environment, can each have their own map. Each time the
operating environment switches from one program to another,
the newly active program can access its map almost
instantly. The result is that switching from one application
to another is much faster and becomes a viable means of
increasing PC productivity by reducing the amount of time
spent moving between applications.
EEMS memory boards manufactured by AST include two sets
of mapping registers. EMS 4.0 provides for as many as 32
alternate sets of registers <196> further enhancing AST's
design.
Again, EMS 3.2 memory boards can not implement this
feature of the new EMS 4.0 standard. Such boards simply are
not designed for multiple sets of registers. So, without the
alternate registers, an operating environment must save and
restore mapping information to memory. This save and restore
process must occur every time the operating environment
needs to access an expanded memory page not in the present
memory map, and hinders the performance of multitasking
operating environments.
EMS 4.0 — What's available now
Intel now has available EMS 4.0 memory boards which can
support 8 MBytes in one slot. The Above Board 2 Plus for IBM
PS/2 Models 50, 50Z and 60. Also the Above Boad Plus for IBM
PC AT and compatibles running up to 12.5 MHz, and IBM PC,
XT, PS/2 Model 30 and compatibles running up to 8 MHz, as
well 386-based systems.
AST also offers EMS 4.0 memory boards and an EMS 4.0
software driver for its line of EEMS products. Owing to the
similarity in design between the EEMS and EMS 4.0 standards,
EEMS boards will offer almost complete EMS 4.0 hardware
functionality.
Most other PC enhancement manufacturers (e.g. Hypertec,
Orchid, Quadram, etc...) also now offer EMS 4.0 memory
boards. Most also offer EMS 4.0 software drivers for their
original EMS 3.2 expanded memory boards. However, due to
basic hardware incompatibilities between EMS 3.2 memory
boards and the new EMS 4.0 hardware standard, such drivers
can only simulate EMS 4.0 features in software.
It is vital to keep in mind that software-simulated EMS
4.0 will not offer the level of performance necessary to
host operating environments such as Windows or DESQview.
Although using such operating environments with an EMS 3.2
memory board and EMS 4.0 driver may be possible, it isn't
practical for any type of serious productive business
application.
Last modified: 6:59 am Thursday 25 September 2025
Local time: 3:35 pm Friday 17 October 2025
|