Writing emulators [Was: Re: VCF PNW 2018: Pictures!]

Paul Koning paulkoning at comcast.net
Thu Feb 22 11:34:42 CST 2018

> On Feb 22, 2018, at 3:09 AM, Chris Hanson via cctalk <cctalk at classiccmp.org> wrote:
> On Feb 21, 2018, at 11:09 AM, Al Kossow via cctalk <cctalk at classiccmp.org> wrote:
>> That is tricky to cleanly and efficiently implement where each component is modeled independently and
>> glued together with a higher-level framework.
> This is why I wonder if multithreaded emulation might be a reasonable future approach: Model more components of a system as operating independently as they produce and react to signals, have them block when not reacting (either to a clock pulse or a signal), and let the operating system manage scheduling.

It depends on the machine being emulated.  In some cases, multiple components that seem to be independent actually have tightly coupled timing, and software relies on that.

For example, a CDC 6000 series mainframe has 10 or 20 PPUs plus one or two CPUs.  With a bit of care, you can model the two CPUs using two threads.  But all the PPUs have to be done in one thread because they run in lockstep.  If you make them each a thread, the OS won't boot.  I tried it and gave up.  It would have been nice, it might have opened a path to a power-efficient emulation, but it didn't appear doable.

Processors vs. I/O devices might work, but again the devil is in the details.


More information about the cctalk mailing list