Lloyd Robert Borrett

Follow Lloyd on Twitter Friend Lloyd on Facebook Connect with Lloyd on LinkedIn Follow Lloyd on Pinterest

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: Saturday, 15 October 2011


home | about | weird mob | computing | interests | insight
Copyright © 1995-2024 Lloyd Borrett. All rights reserved.  ::  www.borrett.id.au
mob 0418 170 044  ::  tel +61 3 5904 9005  ::  email lloyd@borrett.id.au  ::  skype lloyd_borrett
twitter @borrett  ::  facebook lloyd.borrett  ::  linkedin lloydborrett