John Wilson wrote:
From: Brian Hechinger <wonko at 4amlunch.net>
I wonder how hard/impossible it would be to implement this entirely in an
FPGA of some sort. That would be a LOT of work, but extremely cool.
This could be a really neat project -- much easier with J11s than PDP-11/70s
though. The J11 has the TSTSET and WRTLCK interlocked instructions which
are obviously intended to take the place of the ASRB kludge on the PDP-11/74
(which is used by RSX11M+ to implement spinlocks). So you'd need some kind
of shared memory (doesn't have to emulate the MKA11 at all, shouldn't be
complicated enough to need an FPGA), and some kind of IIST emulation (which
could be mostly done with microcontrollers), and that's it. Somewhere on
the web there's a quote from one of the RSX guys which basically says that
all of this has already been done, but never released, and it was no sweat
at all.
The TSTSET and WRTLCK instructions are obviously for possible mP implementations using the
J11. Also, the J11 already have the cache bypass bit implemented in the PDR.
So, in short, the J11 was already designed to be used in mP systems. All you need is just
shared memory. Since early J11 machines used normal Qbus memory, the only thing you
actually needed was CPU cards that didn't assume to do bus arbitration. Qbus memory is
already shared.
Modifying RSX to use the TSTSET instead of ASRB for spin locks would be easy. It's
just a macro in the sources. Not sure what WRTLCK would be used for, though. But it's
been a while since I looked at these instructions, so I don't remember the details of
them.
The quote was something like (from a DECUS session, about possible performance of
multiprocessor PDP-11s):
Q: If you were to build a multiprocessor system based on J11 CPUs, how long would it take
to perform a SYSGEN on such a machine?
A: It took about two hours.
I might remember the time wrong, and there might possibly also be other quotes out there,
but this out implicitly admitted that they had already done it, and had a machine
operational.
Johnny