PDP-11 pages/segments/etc (Was: PDP-12 at the RICM)

Johnny Billquist bqt at update.uu.se
Tue Jul 14 21:17:08 CDT 2015

On 2015-07-15 03:13, Noel Chiappa wrote:
>      > From: Johnny Billquist
>      > While the pages are variable in length, each page starts at an 8K
>      > virtual address boundary.
> Which is another difference between PDP-11 'pages', and real pages as used on
> every other machine of the period which had virtual memory: normally, page
> sizes were small, ranging from 512 bytes to 1K words. No other machine was
> even _close_ to 8KB.

Ugh. When people start using arguments like "real pages", I see things 
going ugly real fast...

To argue more, the page size of the PDP-10 is 512 36-bit words, which is 
5KB in size. I'd say that is not so far from 8K.
And if people actually start digging around, I'm sure you'll find that 
8K was not at all extreme. 512 byte pages were way more radical when the 
VAX was introduced.

> In other machines, the page was the fundamental unit of memory allocation; on
> PDP-11's, that unit is the click (0100 bytes).

I fail to see the relevance in that with regards to a pages vs. a 
segmented design. And actually, the size or variable size of a page is 
also of little relevance.

>      > If you only had one page, and that page covered the full virtual
>      > address space, then I would agree that it was a segment model.
> That's only true in the brain-damaged x86 model, in which 'segments' were
> added as a kludge to expand the address space.
> If you study _real_ segmented architecture machines, like the GE645, NS32K,
> etc you will discover that in them, a segment is a fixed-size chunk of the
> total (much larger) address space, and they start at fixed offsets in that
> space. A segment which is less than full-sized leaves a gap in the address
> space before the (fixed) start of the next segment.
> All of which sounds just like the 'pages' in the PDP-11...

Uh? When did the NS32K become a segmented architecture???
But I see your point. If you designate that CPU as having a segmented 
memory, then I guess I can see why also put the PDP-11 in there. But 
then I don't understand why you don't also include the VAX.

Yes, there are some things in segmented memory management that maps well 
with the PDP-11, but other parts do not. You normally do not write code 
to exist as a segment, using even the implicit reference you get from 
being in a specific page as a segment register (apart from being very 
hard to actually do on a PDP-11, it would also restrict your code to max 
8K, which is rather limited). You also do not normally have holes in 
your memory, even if it is technically possible.
That would just be an insane way to look at your memory.

On a PDP-11, you look at memory as a flat address space. Have the 16-bit 
virtual address space, and the 18/22 bit physical address space. You do 
not treat it as segments that somehow is related to, and describes, 
segments of code.


Johnny Billquist                  || "I'm on a bus
                                   ||  on a psychedelic trip
email: bqt at softjar.se             ||  Reading murder books
pdp is alive!                     ||  tryin' to stay hip" - B. Idol

More information about the cctalk mailing list