Discussion:
[Simh] DMA to IO space
Bob Supnik
2018-09-07 00:31:10 UTC
Permalink
It's not a quirk, it's a design feature.

The PDP11 simulator didn't start out as a generalized, all-singing,
all-dancing emulation of all possible PDP11 models; it started as a J11
and PDP-11/73 simulator - one processor type, one system, Qbus only. In
the same way, the VAX didn't start out as a generalized emulation of all
possible VAX models; it started as a CVAX and MV3900 simulator - one
processor type, one system, Qbus only. These simulator targets were
chosen because I managed both chip projects and had all the design
documents, including microcode, for chips and systems.

Both the PDP11 and the VAX got extended for entirely legitimate reasons
- to run a broader range of software. Getting to early versions of Unix
meant supporting the PDP-11/45. Getting to early versions of VMS and BSD
meant supporting the VAX-11/780. In both cases, the peculiarities of the
Unibus versus the Qbus were not considered. The Unibus was treated as an
18b version of the Qbus.

As the simulators have been generalized, detailed divergences from how
the hardware worked - particularly model by model variances - have
surfaced repeatedly, and the simulators have been refactored
accordingly. For example, the discovery that the VAXstation code in
Ultrix violated the SRM but nonetheless worked on a MicroVAX II required
major surgery on the handling of unaligned references. Unibus DMA to the
IO page is just another example of model-specific differences that must
now be accommodated in order to run more code.

Except for models that have been written with complete design
documentation in hand, simulation of a model always has limits to its
fidelity. Within the PDP11 family, I'll vouch for the J11. Many of the
other models are just sketches (think 11/60), really. Within the VAX
family, I'll vouch for the CVAX/MV3900 and the 11/780. The others are
adaptations from one of those two bases and may be incomplete or
incorrect on details.

Mark has a good understanding of what needs to be done. In theory, the
same modifications need to be retrofitted to the 11/780 and other Unibus
VAX models, as well as to the KS10, although I don't think they have the
internal register shielding problem that the PDP-11 does.

/Bob
It seems like a rather unfortunate design quirk in simh.
A real Unibus don't distinguish between the I/O page any anything else.
In fact, from the Unibus point of view, there is no "I/O page". It's a
flat 18-bit address space where everything works the same.
Mark Pizzolato
2018-09-07 01:00:05 UTC
Permalink
Post by Bob Supnik
It's not a quirk, it's a design feature.
The PDP11 simulator didn't start out as a generalized, all-singing, all-dancing
emulation of all possible PDP11 models; it started as a J11 and PDP-11/73
simulator - one processor type, one system, Qbus only. In the same way, the
VAX didn't start out as a generalized emulation of all possible VAX models; it
started as a CVAX and MV3900 simulator - one processor type, one system,
Qbus only. These simulator targets were chosen because I managed both chip
projects and had all the design documents, including microcode, for chips and
systems.
Both the PDP11 and the VAX got extended for entirely legitimate reasons
- to run a broader range of software. Getting to early versions of Unix meant
supporting the PDP-11/45. Getting to early versions of VMS and BSD meant
supporting the VAX-11/780. In both cases, the peculiarities of the Unibus
versus the Qbus were not considered. The Unibus was treated as an 18b
version of the Qbus.
As the simulators have been generalized, detailed divergences from how the
hardware worked - particularly model by model variances - have surfaced
repeatedly, and the simulators have been refactored accordingly. For example,
the discovery that the VAXstation code in Ultrix violated the SRM but
nonetheless worked on a MicroVAX II required major surgery on the handling
of unaligned references. Unibus DMA to the IO page is just another example of
model-specific differences that must now be accommodated in order to run
more code.
Except for models that have been written with complete design
documentation in hand, simulation of a model always has limits to its fidelity.
Within the PDP11 family, I'll vouch for the J11. Many of the other models are
just sketches (think 11/60), really. Within the VAX family, I'll vouch for the
CVAX/MV3900 and the 11/780. The others are adaptations from one of those
two bases and may be incomplete or incorrect on details.
Mark has a good understanding of what needs to be done. In theory, the same
modifications need to be retrofitted to the 11/780 and other Unibus VAX
models, as well as to the KS10, although I don't think they have the internal
register shielding problem that the PDP-11 does.
I'm going to leave that as a theory until a use case actually comes along that
wants to do this. None of the few examples of devices that want to do NPR
to the I/O Page have related software that runs on any VAX OS.

When Tim added the initial NPR I/O page support some 5 years ago, that was
limited to the PDP11. A refinement example has come along now, but not a
peep on the VAX Unibus side of things.

I looked at it and it's not just cut and paste, so without a test case I'd rather
implement something that actually works rather than might work.

- Mark

Loading...