[comp.sys.ibm.pc.misc] EMS hardware vs. software emulation

mmm@cup.portal.com (Mark Robert Thorson) (01/08/91)

It seems to me that anyone who designs a system with a 286, 386, or 486
with more than 1M of memory should include hardware EMS registers and mapping
logic, unless he only plans to run Unix.  At first, I thought maybe only
the 286 needs it, because the other chips have paging.  But then I remembered
that all the DOS people run in real-address mode, so the paging mechanism
is disabled.  The only way around this would be to run your DOS applications
in virtual-8086 mode, but I don't think anybody does that, do they?

Am I right?  Is omission of the EMS hardware in a 2/3/486 >1M system
a cardinal sin?  The reason I ask is that there are chipsets on the
market for building PC-compatible system boards with for example
a 386 and 16M but don't have hardware EMS.  Does that mean any memory
above 1M is mostly useless (i.e. real slow due to software EMS emulation)?

mlord@bwdls58.bnr.ca (Mark Lord) (01/09/91)

In article <37694@cup.portal.com> mmm@cup.portal.com (Mark Robert Thorson) writes:
<It seems to me that anyone who designs a system with a 286, 386, or 486
<with more than 1M of memory should include hardware EMS registers and mapping
<logic, unless he only plans to run Unix.  At first, I thought maybe only
<the 286 needs it, because the other chips have paging.  But then I remembered
<that all the DOS people run in real-address mode, so the paging mechanism
<is disabled.  The only way around this would be to run your DOS applications
<in virtual-8086 mode, but I don't think anybody does that, do they?

Thousands and thousands of us do this all of the time, with no problems other
than slightly greater interrupt latencies due to the V86 mode.

How, you ask?  

We run QEMM386, or 386^MAX, or EMM386.SYS, or..

And with far greater flexibility than specialized EMS hardware could possibly
provide.  Especially with things like QEMM, which support ALL past/current
memory standards simultaneously:  VCPI, DPMI, LIM3.2, EMS4.0, XMS ...     
-- 
 ___Mark S. Lord__________________________________________
| ..uunet!bnrgate!mlord%bmerh724 | Climb Free Or Die (NH) |
| MLORD@BNR.CA   Ottawa, Ontario | Personal views only.   |
|________________________________|________________________|

kls30@duts.ccc.amdahl.com (Kent L Shephard) (01/09/91)

In article <37694@cup.portal.com> mmm@cup.portal.com (Mark Robert Thorson) writes:
>It seems to me that anyone who designs a system with a 286, 386, or 486
>with more than 1M of memory should include hardware EMS registers and mapping
>logic, unless he only plans to run Unix.  At first, I thought maybe only
>the 286 needs it, because the other chips have paging.  But then I remembered
>that all the DOS people run in real-address mode, so the paging mechanism
>is disabled.  The only way around this would be to run your DOS applications
>in virtual-8086 mode, but I don't think anybody does that, do they?

Any good multitasking env. does.  ie - Windows and DESQview.  There is no
need for those registers on a 386 only on a 286 or less.

>
>Am I right?  Is omission of the EMS hardware in a 2/3/486 >1M system
>a cardinal sin?  The reason I ask is that there are chipsets on the
>market for building PC-compatible system boards with for example
>a 386 and 16M but don't have hardware EMS.  Does that mean any memory
>above 1M is mostly useless (i.e. real slow due to software EMS emulation)?

Don't worry about it being supported in the chipset or bios.  Qemm will
do fine on 386s - memory management is in the hardware.
--
/*  -The opinions expressed are my own, not my employers.    */
/*      For I can only express my own opinions.              */
/*                                                           */
/*   Kent L. Shephard  : email - kls30@DUTS.ccc.amdahl.com   */

scjones@thor.UUCP (Larry Jones) (01/09/91)

In article <37694@cup.portal.com>, mmm@cup.portal.com (Mark Robert Thorson) writes:
> It seems to me that anyone who designs a system with a 286, 386, or 486
> with more than 1M of memory should include hardware EMS registers and mapping
> logic, unless he only plans to run Unix.  At first, I thought maybe only
> the 286 needs it, because the other chips have paging.  But then I remembered
> that all the DOS people run in real-address mode, so the paging mechanism
> is disabled.  The only way around this would be to run your DOS applications
> in virtual-8086 mode, but I don't think anybody does that, do they?

You were right the first time -- the 386 and 486 paging mechanism works
quite well for doing EMS.  Both 386^Max and QEMM provide EMS memory by
running DOS in virtual-86 mode and using the paging registers.  That's
why none of the chipsets have EMS registers.
----
Larry Jones                         UUCP: uunet!sdrc!thor!scjones
SDRC                                      scjones@thor.UUCP
2000 Eastman Dr.                    BIX:  ltl
Milford, OH  45150-2789             AT&T: (513) 576-2070
But Mom, frogs are our FRIENDS! -- Calvin

amichiel@rodan.acs.syr.edu (Allen J Michielsen) (01/10/91)

In article <5182@bwdls58.UUCP> mlord@bwdls58.bnr.ca (Mark Lord) writes:
>In article <37694@cup.portal.com> mmm@cup.portal.com (Mark Robert Thorson)
><It seems to me that anyone who designs a system with a 286, 386, or 486
><with more than 1M of memory should include hardware EMS registers and mapping
><logic, unless he only plans to run Unix.  At first, I thought maybe only
><the 286 needs it, because the other chips have paging.  But then I remembered
><that all the DOS people run in real-address mode, so the paging mechanism
><is disabled.  The only way around this would be to run your DOS applications
><in virtual-8086 mode, but I don't think anybody does that, do they?
>
>Thousands and thousands of us do this all of the time, with no problems other
>than slightly greater interrupt latencies due to the V86 mode
>We run QEMM386, or 386^MAX, or EMM386.SYS, or..

   Expecting or even asking mfg's to include EMS in hardware is stupid.  First
of all, EMS is dead.  In several years little or nothing will support it.  EXT
is much better, faster, and usable to software that is coming out.  Look at all
large packages (in price & function/not poplarity), autocad, mathmatica, Splus
(statistics package which clones a major IBM mainframe package), lotus 3.1.
All support extended directly, else support extended better than expanded,
else support extended exclusively.  LArger and more complex packages become
even more complex, and slower using expanded memory.
   Then there's the problem of ems version compatability.  WHat happens when
you have a application that requires a newer or older ems version compatability
or for some odd reason, requires a different (non-standard) address mapping.
Or what happens when you buy a system to network and can't integrate into your
network because the ems emulator uses the address range of you already site
and network standard interface card.  Then should be bang on these mfg's to
have untold switches or software interfaces & programming in order to change
or select the remapped address range and compatability as needed ?
   Extended memory is the best thing under all circumstances.  It is completely
linear and available to anybody that writes software that isn't xt specific.
Expanded memory is the next best thing, and the only game in town for old
software and limited cpu's (like the 8088/8086/80186).
al

-- 
Al. Michielsen, Mechanical & Aerospace Engineering, Syracuse University
 InterNet: amichiel@rodan.acs.syr.edu  amichiel@sunrise.acs.syr.edu
 Bitnet: AMICHIEL@SUNRISE 

phil@brahms.amd.com (Phil Ngai) (01/10/91)

In article <37694@cup.portal.com> mmm@cup.portal.com (Mark Robert Thorson) writes:
|It seems to me that anyone who designs a system with a 286, 386, or 486
|with more than 1M of memory should include hardware EMS registers and mapping
|logic, unless he only plans to run Unix.  At first, I thought maybe only

386 and 486 need only a software package like 386Max or QEMM because
they already have an MMU.

Generic 286s do need external hardware help to implement EMS.
AMD's Lonestar PC/AT on a chip has an on-chip MMU, similar
in flavor to the 386 MMU, for exactly the reasons you give.

|the 286 needs it, because the other chips have paging.  But then I remembered
|that all the DOS people run in real-address mode, so the paging mechanism
|is disabled.  The only way around this would be to run your DOS applications
|in virtual-8086 mode, but I don't think anybody does that, do they?

I believe you can turn on the 386 MMU without going all the way to virtual
8086 mode. In any case, I personally use QEMM and it works just fine.

|Am I right?  Is omission of the EMS hardware in a 2/3/486 >1M system
|a cardinal sin?  The reason I ask is that there are chipsets on the
|market for building PC-compatible system boards with for example
|a 386 and 16M but don't have hardware EMS.  Does that mean any memory
|above 1M is mostly useless (i.e. real slow due to software EMS emulation)?

Aside from the issues mentioned already, you're also assuming EMS is much
more useful than extended memory which is not true. Most of the time I use
Windows 3 which uses extended memory. (but almost all of the time I use QEMM
to load network device drivers high)

--
seifert@asylum.sf.ca.us is responsible for the
Ethernet slide latch.

jwbirdsa@amc-gw.amc.com (James Birdsall) (01/11/91)

In article <1991Jan9.163046.25355@rodan.acs.syr.edu> amichiel@rodan.acs.syr.edu (Allen J Michielsen) writes:
>>In article <37694@cup.portal.com> mmm@cup.portal.com (Mark Robert Thorson)
><It seems to me that anyone who designs a system with a 286, 386, or 486
><with more than 1M of memory should include hardware EMS registers and mapping
><logic, unless he only plans to run Unix.
>
> [...] First 
>of all, EMS is dead.  In several years little or nothing will support it. 

   Very doubtful. History is not so easily discarded. Look at how many
programs still support DOS 2.0. 

> [...] Look at all
>large packages (in price & function/not poplarity), autocad, mathmatica, Splus
>(statistics package which clones a major IBM mainframe package), lotus 3.1.
>All support extended directly, else support extended better than expanded,
>else support extended exclusively.  LArger and more complex packages become
>even more complex, and slower using expanded memory.

   This is true. Part of the reason is that more and more of the very large
packages are running under DOS extenders -- i.e. running in protected mode,
so that there is no more "extended" memory, it's just memory. The memory
requirement is expressed as "extended", because most people will understand
it better when put that way.
   Also, the appearance and rapid spread of the XMS specification is
helping. For all its faults, EMS has had a well-documented and reasonably
uniform interface. Until the XMS specification came along, extended memory
allocation was a howling nightmare with at least two different ways of
doing it, both of which might be in use at the same time! And there was
always the possibility of running afoul of a program which completely
ignored both and did whatever it pleased with extended memory.

>   Extended memory is the best thing under all circumstances.  

   Wrong. There are at least two areas where EMS beats extended memory.
Which is not to say EMS is better overall, but just to raise the point that
nothing is perfect.

1) The most common way of accessing extended memory is to switch into
protected mode briefly, copy bytes to/from conventional memory, and switch
back. On a 386 and up, this is no problem. On a 286, the switch back
involves halting the processor and getting the keyboard to wake it up
again, a process which may take milliseconds and cause lost interrupts.
EMS doesn't have this problem.
   The undocumented LOADALL instruction may be used to access extended
memory from real mode, but that has its own problems. For one, it's
undocumented. Big deal. But I also understand that the descriptor tables
are reset whenever an interrupt is received -- so use of LOADALL requires
that interrupts be turned off for significant amounts of time, too.

2) Space. Unless quite a bit of effort is expended on more sophisticated
methods, extended memory is accessed by copying data to/from it. 
Hence, in order to use data stored in extended memory, it must be
copied down into conventional memory. And if there is no space left in
conventional memory, then something must be swapped out first... etc. Since
the page frame of EMS is totally unrelated to conventional memory (except
for being below the 1M line, except in some pure-software EMS emulators
which are painful to contemplate), EMS does not have a gridlock problem.

>It is completely
>linear and available to anybody that writes software that isn't xt specific.

   Wrong. The 286 still has 64K segments, even in protected mode. Linearity 
(in the form of 4G segments) didn't happen until the 386.

   Actually, this is boiling down to the statement that the 386 is better
than the 286. For the 386, there's no point in doing EMS in hardware since
it can be done so easily in software using any extended memory, and
extended memory is the thing to have since it can be used both as itself
and as EMS. For the 286, extended memory has some serious shortcomings due
to shortcomings in the chip itself. And for anything below that, EMS is
what there is...

-- 
James W. Birdsall   WORK: jwbirdsa@amc.com   {uunet,uw-coco}!amc-gw!jwbirdsa
HOME: {uunet,uw-coco}!amc-gw!picarefy!jwbirdsa OTHER: 71261.1731@compuserve.com
========== "Think of an animal that's small and fuzzy." "Mold." -- RM =========
=========== "For it is the doom of men that they forget." -- Merlin ===========

dlow@pollux.HP.COM (Danny Low) (01/12/91)

>(Allen J Michielsen) 
>   Expecting or even asking mfg's to include EMS in hardware is stupid.  First
>of all, EMS is dead.  In several years little or nothing will support it.  

I see more programs supporting EMS than XMS. XMS restricts you to AT or above
systems. EMS allows a program to run on XT class machines as well. Programs
intended for Megacorporate suits (123) or number crunching academics 
(Mathematica) can ignore the huge install base of XTs but most software
companies cannot do that if they want to make decent sales. They can't 
afford to ignore the people who do not have big budgets or big grants.

Walk into a software retail store and typically you will NOT find Mathematica
or Bene Nota on the shelves. You will find 123 but also you will also find
Quattro Pro which is designed to run on small systems. Borland makes a big
deal about how Quattro Pro does not require a super expensive super large super
fast system to run. Quattro Pro has made significant in roads into the
123 market as a result.

The situation is even more tilted towards EMS when you consider that the
286 has very poor XMS capabilities and works better with EMS. As a result,
the "XT" market includes the 286 ATs as well.

			   Danny Low
    "Question Authority and the Authorities will question You"
	   Valley of Hearts Delight, Silicon Valley
	     HP CPCD   dlow@pollux.svale.hp.com

silver@xrtll.uucp (Hi Ho Silver) (01/13/91)

In comp.sys.ibm.pc.misc, amichiel@rodan.acs.syr.edu (Allen J Michielsen) typed:
$   Expecting or even asking mfg's to include EMS in hardware is stupid.  First
$of all, EMS is dead.  In several years little or nothing will support it.  EXT

   Do you buy your computers based on what you'll be doing in several years?
If so, you need your head examined.  With the rapid rate at which computer
technology becomes obsolete, even the best machines available now will be
has-beens in several years.  Remember when a 6 MHz AT was the best PC on
the market?  That was several years ago, and these days a 12 MHZ AT is
considered underpowered for a lot of applications.

$is much better, faster, and usable to software that is coming out.  Look at all

   For programs that run in 286 or 386 protected mode, extended memory is
obviously far superior to expanded memory, yes.  But don't forget that there
is still a market for software that doesn't require a 286 or higher.

   Also, with the exception of Lotus 1-2-3 R3.1, the software you mentioned
is targeted towards fairly small markets and is of a nature that requires a
lot of CPU power.  Hardly representative of what most people are using, is
it?  Go into a computer store and look through their software.  Count how
many packages use expanded memory and how many use extended.  There's no
contest ... expanded will win hands down.  If you want to use your computer
today, chances are you'll want expanded memory.
-- 
 __            __  _  | ...!nexus.yorku.edu!xrtll!silver |  always
(__  | | |  | |_  |_) >----------------------------------< searching
 __) | |_ \/  |__ | \ | if you don't like my posts, type |    for
_____________________/  find / -print|xargs cat|compress |   SNTF