I do not doubt that emulators can be useful for some things.  Indeed, I
use them myself when real hardware isn't available.

but emulators have limits -- invariably they are written to emulate certain
things accurately (albeit imperfectly, because all programmers make
mistakes) while other things deemed less important are emulated less
accurately, or simply substituted with ideal mathematical constructs.
lately, I've been running a PDP-11 emulator that doesn't even bother to
simulate memory errors -- every byte of memory in the simulated system
is error-free, and therefore parity error traps are never generated (and the
parity trap handler in the operating system is therefore never exercised).

you are not going to track down a cache coherency bug using an emulator
that doesn't attempt to emulate cache *incoherency*.  really, in order to
know whether emulation is going to be useful, you need to consult an
expert in the particular part of the system you're trying to emulate.  this
means, if you're looking for bugs in an operating system, you need to talk
to people who write operating systems, because they are the experts on
the hardware behaviors that actually matter.  some things that an emulator
faithfully reproduces probably aren't that important to an operating system,
while other things the emulator doesn't bother to accurately simulate may
be critically important.  how can we tell the difference?

if only we had someone with years of experience doing this type of work
who could tell us whether emulation is adequate in this situation or not.

-ken

Reply via email to