Also, x86 is totally "split I/D" by any
relevant definition, and has a 20-bit physical address space.
The physical address space isn't the issue. The PDP-11's (well the later
ones) had 22 bits of address space.
Even the amount of virtual address space wasn't the problem. The problem was really
the lack of segments The PDP11, only had 8 for code and 8 for the combined stack/data
(on the split I/D) machine.
While we were able to "thunk" in a code overlay system without any real hardware
support, there's no way to do that practically for data.
As I stated earlier, using the BSD networking code, we ran out of the combined code/data
registers when it came to having ot have one to map the mbufs. I supposed you could have
added more magic (and perhaps th is is what the later Ultrix did), to carefully unmap one
of the data segements to get to the network data, but boy, we never figured out a good way
to do that when we tried. We retired all but the 11/70's (which we had three of)
at the time as the Vaxes and other machines were beginning to roll in. In fact, I did
eventually also turn one of the 11/70's into a router using my LOS (little operating
system...no time for sharing, uniprocessor system) gateway OS. Each driver ran in
it's own little program so it was a lot easier.