On 10/28/2017 9:09 PM, Eric Smith wrote:
IBM invented computer emulation and introduced it with
System/360 in
1964. They defined it as using special-purpose hardware and/or microcode
on a computer to simulate a different computer.
Anything you run on your x86 (or ARM, MIPS, SPARC, Alpha, etc) does not
meet that definition, and is a simulator, since those processors have
only general-purpose hardware and microcode.
Lots of people have other definitions of "emulator" which they've just
pulled out of their a**, but since the System/360 architects invented
it, I see no good reason to prefer anyone else's definition.
Well, I can think of a few. From spending some time today with the IBM
360 catalog of programs for Model 25 and above (GC20-1619-8), IBM was
not entirely consistent with their terminology.
First of all, a lot of the products/applications that they called
emulators were in fact a *combination* of software with some microcode
hardware assist. But they chose to call those emulators as well. In
some of those cases, the emulated application could run side-by-side
with other S/360 programs, and in some cases not.
The ones I have spend the most time investigating over the years are
360C-EU-736 and 360-EU-738 - the 1410/7010 emulators. I actually
tracked down the source code for one of those at one point (though I
don't remember which of the two, and where I stuck it at present). I
think it was on one of the 360 DOS distributions available for use under
Hercules. What I found was that it was almost all software, but with
hardware assist for the move and compare instructions.
From the description in the catalog:
"DESCRIPTION - The 1710[sic]/7010 Emulator program is a stand-alone
program which, with the 1410/7010 Compatibility Feature (No. 4478) [ed.
- the microcode assist] executes 1410/7010 programs on a System/360
Model 50. The Emulator program is an interpreter simulator that uses
both standard System/360 instructions ans special instructions provided
by the Compatibility feature..."
Secondly, your preferred use of the terms emulator and simulator seems
to go rather against the grain of how those terms are commonly applied
in English in general. In ordinary English, the term emulation is
typically applied to observed *behavior*, whereas simulation is
typically applied to a more fine-grained reproduction of how that
behavior comes to be. That is what led me down the exact opposite path
that you have gone down. It was absolutely not, as you say, pulled out
of anyone's a**. I and many others came to whatever definitions we use
with a fair amount of thought.
Finally, this was IBM's use of these terms of art from a long long time
ago, and to borrow from your words, I "see no good reason" to be
particularly bound by them.
The reality is that without some kind of body which would provide
specific definitions, such as those in the legal and medical
professions, this discussion is endless and the waters sufficiently
muddy as to be opaque.
JRJ