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.
paul