> On Oct 27, 2017, at 4:54 AM, Dave Wade via cctalk <[email protected]> 
> wrote:
> 
> Kip,
> I think "emulation" and "simulation" get used pretty much interchangeable.
> SIMH is touted a simulator, Hercules/390 as an emulator yet they are both
> programs that provide a "bare metal" machine via software on which an
> operating system can be installed. Neither make any attempt to reproduce the
> speed of the original CPU.

True.  And by some argument, an FPGA implementation (from an HDL behavioral 
model) is also a software implementation, just written in a different 
programming language.

Recently I commented to an old colleague that there are many different levels 
of emulation possible, and any one of those may make sense -- it's just a 
question of what you're after.  So you can emulate in a conventional 
programming language, as SIMH does, reproducing the programmer-visible behavior 
of the machine but not its timing.  Bugs from the original might appear if 
those bugs are known to be important, but probably not otherwise.  This kind is 
(nowadays) likely to run faster than the original; certainly it won't usually 
mimic the original timing, neither for computation nor I/O.

You can make timing-accurate software emulators, with lots of work.  SIMH, in 
paced mode, and provided the I/O waits are reasonably accurately expressed in 
units of machine cycles, isn't quite timing accurate but is somewhat similar.

You can build a behavioral simulator (SIMH style, basically) in an FPGA.  That 
isn't necessarily any more capable or accurate than a software simulator.  
PDP-2011 is an example I know of, and I've see articles about other PDP 
emulations of this kind.  Since the design is new, created from a behavioral 
description (data book, functional spec, architecture spec) it will be about as 
accurate as SIMH.

You can also, if the data exists, build a lower level (gate level or 
thereabouts) FPGA model.  Given schematics and wire lists, it should be 
possible to build an implementation that's an exact copy of how the original 
machine worked (assuming of course the documentation is accurate, which is not 
necessarily the case).  Such an emulation would replicate strange and 
undocumented behavior of the original -- and allow you to find out where that 
came from.  I've been working on such a thing for the CDC 6600, which is 
surprisingly hard given that the design lives right on the hairy edge of not 
working at all timing-wise.  But it does accuarately model the peripheral 
processors right now, and indeed it shows and explains some undocumented 
oddities that are part of that machine's folklore.

So it's a question of what you're after.  If you want to run the software, or 
teach the machine at the programmer level, SIMH or equivalent is quite 
adequate.  If you want to teach FPGA skills, an FPGA behavioral model emulation 
is a good project, especially for a small machine like a PDP-8.  As for the 
gate level model, I'm not sure what argument to make for that other than "paul 
is a bit crazy" and "because the data exists to do it".  :-)

        paul

Reply via email to