PDP-11 addressing question and a model round-up

Paul Koning pkoning at equallogic.com
Mon Feb 14 11:42:33 CST 2005


>>>>> "Vintage" == Vintage Computer Festival <vcf at siconic.com> writes:

 Vintage> On Mon, 14 Feb 2005, Paul Koning wrote:
 >> Addresses that appear on memory and I/O buses are either 18 or 22
 >> bits.  Originally they were 18 bits.  Also, at first (11/20, 10,
 >> 05) the relationship between program and physical address was
 >> fixed: for program addresses 176000 and up, you'd get physical
 >> 776000 and up.  All addresses below 176000 would come across
 >> unchanged.

 Vintage> So your programs access 176xxx ranges but they are
 Vintage> physically mapped to 776xxx by the processor?

Correct.  Or 17776xxx in the 22 bit case.

More precisely, that's a fixed mapping for machines without MMU
(memory management unit -- the address map and protection machinery).
If you have an MMU, it's the mapping you get when the MMU is disabled,
as it is at boot.

With MMU enabled, each 4 kW chunk of program address space is mapped
to a physical address of your choice (possibly two separate ones, in
MMUs that support separate instruction and data space maps).  In that
case, I/O space might not be accessible.  For user mode programs, it
normally would not be.  The kernel would have to have it mapped, of
course.  In principle you could map I/O space to any of the 8 virtual
address blocks; in practice, I think it was always mapped to the top
block, matching the default mapping.

 >> Life gets more complicated in 22-bit unibus machines, because
 >> there you have 22 bit physical (memory) addresses, yet 18 bit
 >> addresses on the I/O bus (the Unibus).  So those 18 bit addresses
 >> are virtual, they are mapped to physical addresses via the Unibus
 >> map.  Q-bus systems avoid this hassle by using full 22 bit
 >> physical addresses on the I/O bus.  (And Unibus systems do that
 >> partway -- Massbus adapters hook right into the memory so they
 >> handle 22 bit addresses directly, not via the Unibus map.)

 Vintage> So then basically, the difference is the 11/23 I was using
 Vintage> before had 18-bit addressable memory, and the 11/23+ I'm
 Vintage> using now has 22-bit.

Right, and a bus that carries full 22 bit addresses, and DMA devices
that know how to generate 22 bit addresses.

     paul





More information about the cctalk mailing list