On Monday, May 14, 2012 06:55:45 PM David Riley wrote:
On May 14, 2012, at 12:26 PM, Chuck Guzis wrote:
On 14 May 2012 at 17:05, Andriy Romanenko wrote:
...have
three of them and some VM2 too. I where interested in such a
project. Currently I'm trying to build ans SBC out of an VM2 with
some old Tesla MVB1012 Chips (AY5-1013?) and a CPLD...
could you share some schematics/soft/vhdl you have done for this
project?
Since we're talking VHDL here, how does the performance of the old
USSR chips differ from the performance of a modern FPGA
implementation, say, the W11A version of the PDP 11/70 on opencores?
I don't know about specific implementations, but I do know FPGAs pretty
well. I'd feel pretty safe saying you should be able to get them to
the 10s of MHz fairly easily, even on low-cost FPGAs, if you do your
homework right. If you're trying to duplicate the internal workings
of the older chips (i.e. to pass CPU-specific diagnostics), it might
wind up a bit slower because you'll have to force some design trade-
offs. Among other things, there are no real tristate buffers inside
the FPGA, something which a lot of processors rely on for internal
buses.
I'm pretty sure the PDP2011 project winds up pretty close to the real
chips, even on low-end FPGAs.
- Dave
PDP2011 runs at 10Mhz cpu speed on most boards - it can be tweaked to run
faster, but I haven't really tried to make it as fast as possible. Anyway,
those Mhz don't compare easily to 'real' PDP Mhz - the amount of cycles per
instruction are not the same. 'Real' PDP's tend to use microcode, and very
clever memory interfacing including cache in some models. I'm using a state
machine, and a simplistic memory interface. That difference causes very
different instruction timing behavior - it depends a lot on which instructions
you would use, and how much memory access would be involved.
With a lot of exceptions, an instruction needs a minimum of 2 cycles, one
extra if the destination is a register, two extra if the destination is a
memory location, and one for each memory reference needed for src or dst
modes. So, a clr r0 would need 3 cycles; a clr mode 7 would need 7 cycles. EIS
instructions need some more overhead cycles, but mul comes for free (it uses
the FPGA multipliers). The other EIS, particularly div however take a lot of
cycles. As do all the FP11 instructions - all of those are multiple precision;
setting single precision limits what is returned, not what is calculated.
Anyway, I've run a lot of maindecs. For some of those, the source is available
from Bitsavers, and in some cases there is a
description in them that say how
quickly the test should run. In all cases I
found, pdp2011 is faster than the
original model, but in the same league - I mean, maybe 3 to 10 times faster,
but not a hundred times.
Another take on the subject is the way Walter compared w11's speed to real
hardware using the benchmarks of the early '90. I ran one of the benchmarks
some time ago; where w11 reaches 160-252 Hanoi?s per second, pdp2011 reaches
about 38 with the CPU running at 10 Mhz. In comparison, a 11/53+ does 12.