Hi, Rich. Thanks for broaching an interesting topic of which I'm rather
fond... :-)
On 2010-10-27 00:16, Rich Alderson<RichA at vulcan.com> wrote:
From: Johnny Billquist
Sent: Monday, October 25, 2010 9:08 AM
1.> The PDP-11 was in architectural ways more important than the VAX, if
nothing else than just because the VAX was
basically just extending the
PDP-11.
2.> However, I also object to the discussion about "Virtual memory" as
something new the VAX brought to the table.
3.> Virtual memory worked just fine on a PDP-11 as well, thank you very
much, as it also worked fine on a bunch of other
machines, and had been
doing for quite a while.
4.> VAX stands for "Virtual Address eXtension", note the
"extension".
Extension normally means that you modify/extend
something that already
exists, in this case the virtual address. On a PDP-11, the virtual
address is 16 bits, the VAX extended it to 32 bits, which is a huge
improvement (and the biggest bottleneck of the PDP-11, as I'm sure all
people know). The physical address on a PDP-11 is 22 bits, while the
physical address on a VAX varies, but on the 11/780 I only think it was
something like 24 bits.
5.> The VAX also introduced demand pageing, compared to the PDP-11, where
you normally didn't do that (and not all
models could even possibly do
it), but demand pageing as such wasn't new either. DEC was already doing
it with the PDP-10 running TOPS-20 (and other companies had also done it).
Addressing 1, 2, 4, and 5:
The "Extension" in 'Virtual Address Extension" does not refer to
extending
the virtual address in the PDP-11, but rather to extending the PDP-11
architecture with virtual addressing. The PDP-11's 16-bit address is real,
not virtual in the usual definition; the use of memory management to select
from within an 18- or 22-bit memory space does not make it virtual.
Sorry, but I'll have to totally disagree with you, and so does all the
processor handbooks for the PDP-11. :-)
Virtual addressing have nothing to do with demand paging, or even paging
(even though I know Wikipedia uses that very broken definition (or
atleast used to)).
A virtual address is... Well... Virtual. It does not match a physical
address. Instead it is an address into an imagined memory space, virtual
memory. This virtual memory space would appear as just your own in a
system. Another process in the same system have another virtual address
space, using the same virtual addresses you are, but you are not
actually referring to the same memory. It's virtual. :-)
A virtual address gets translated into a physical address by an MMU.
The "Virtual Adress eXtension" (aka. VAX) was a virtual address
extension to the PDP-11, nothing more.
The PDP-11 already have virtual addressing. Pick up any PDP-11 processor
handbook and read about it yourself. Or check
http://www.google.ch/url?sa=t&source=web&cd=2&ved=0CB4QFjAB&…
, for the (arguably) yucky PDP-11/40 online. Look at chapter 6 - Memory
Management.
On a PDP-11, an address can either be physical, in case the MMU is
turned off, or else virtual. The virtual address gets translated to a
physical address by the MMU, by using the page table and some simple adders.
In case you run on a PDP-11 with the MMU turned off, the 16-bit address
just gets extended to 18 (or 22) bits by using zeroes for the high bits
of the physical address. if the MMU is turned on, the virtual 16-bit
address is translated into a 18 or 22-bit physical address.
The VAX-11 (note that "-11" in the names of
the first models!) added the
use of demand-paged virtual memory (that is to say, disk-based storage) to
the PDP-11, then expanded the instruction set into the new 32-bit word size.
VMS added demand paged virtual memory. There is nothing preventing you
from writing an OS on the VAX which don't use
demand paging, just as
there is nothing preventing you from writing an OS for the
PDP-11 which
would do demand paging (assuming you have a PDP-11 model with the
neccesary features implemented in the MMU, which not all have).
Addressing 2 and 5:
Burroughs introduced the B5000, the first computer with virtual memory
(segmented rather than paged) in 1961; the British brought out the Atlas in
1962. Multics used both segmentation and paging on the GE-645, beginning
in 1964. DEC provided a segmented memory model in the PDP-6 (1964) and
PDP-10 (1967); BB&N created a pager for the PDP-10 and brought TENEX, with
demand paging, to the world c. 1970. When DEC licensed TENEX and modified
it for the KL-10 processor (born at the Stanford AI Lab as the SuperFoonly!),
they added the working-set concept which had been discovered by (IIRC)
Denning in his research on demand-paged memory systems, and christened the
result "TOPS-20".
No additional comments. And you know the PDP-10 much better than I do. :-)
Addressing 3:
I don't believe that there was ever demand-paged virtual memory on the
PDP-11, but I'm willing to be shown the error of my ways. Please point me
at documentation for an operating system which did that.
Sorry, just as with you, I don't know of anyone who did that. But I can
tell you how you should do it, in case you'd be interested in actually
doing it. There is nothing in the hardware that prevents you.
The biggest reasons why noone did it are that:
1) The physical memory is much larger than the virtual memory on a
PDP-11, meaning that it's normally not a big problem to actually have
all virtual memory always paged in when a process is running. You will
never see working sets that are larger than what can be held in memory
at one time, thus one big reason for demand paged memory is lost.
2) The page size of the PDP-11 is 8K, which at the time was pretty big.
With that size, you actually only have eight pages for a process. Now,
why do demand paging, when you can at the most get 8 page misses before
everything is paged in? You might as well preload them, and skip the
whole demand paging mechanism.
3) Not all models of the PDP-11 MMUs support all the fancy stuff you
need. People weren't that interested in writing software that only
worked on some models (that did eventually happen in other ways anyway,
but only by slower evolution at a later stage).
So, no, I cannot point you to any system that implemented demand paging.
Maybe someone did it without us knowing about it. The fact still stands,
though. The PDP-11 allows you to do it. Is it then relevant if someone
actually did it or not?
Johnny
--
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