The historical significance of DEC and the PDP-7, -8, -11 and VAX
liam-on-linux.livejournal.com
liam-on-linux.livejournal.com
The irony here is that MS-DOS was routinely derided for having "stolen" from CP/M. Having used the PDP-10 and PDP-11 before CP/M, I knew that CP/M was based on DEC's ideas.
DOS 1.0 could probably be fairly described as a CP/M clone -- it was intended to be binary compatible basically, such that translated (perhaps automatically - the 8086 had similar compatibility goals) 8080 CP/M programs would run directly on DOS without much if any change.
The lineage is more like OS-8 -> TOPS-10 -> CP/M -> DOS, although TOPS-10 did a lot more than CP/M etc because it was running on a small mainframe and not a micro.
PDP-10s were also one of the foundations of ARPANET. And also used in early AI research. And also an influence on RMS.
There was also a separate TOPS-20 lineage. TOPS-20 was the successor to TOPS-10 and (more or less) the anti-UNIX. It was designed to be as friendly as possible with command completion and other niceties like versioning and a kind of trash can - although it was quite verbose and had some strange command names of its own. (Like EXPUNGE.)
Some of the philosophy of TOPS-20 made it into VMS. Cutler famously hated UNIX, but by the time he was done with NT the remains of VMS had been thoroughly Microsofted and it was hard to see any of the TOPS-20 lineage left in the UX.
DEC shot itself in the kneecaps when it killed the PDP-10 line in 1983 and went all-in on the VAX. The VAX was a perfectly fine computer, but culturally it wasn't in the same space. PDP-10s were almost proto-Macs in the mainframe market - very popular with academics and creative researchers.
The VAX felt more like a functional but unexciting proto-PC product. A lot of PDP-10 customers - and not a few PDP-10 engineers and developers - never forgave DEC for the move.
Gary Kildall had experience with a bunch of different DEC systems, definitely PDP-8s running OS/8 and PDP-11s running RT-11, he may have had some experience with PDP-10s as well. I would say he more took ideas from DEC operating systems in general rather than copying any one of them in particular, but if people want to cite particular ones, OS/8 and RT-11 are mentioned more often than TOPS-10.
He also used IBM VM/CMS at the Naval Postgraduate School, which is arguably where CP/M gets drive letters from – CMS uses single letters to identify disks, DEC operating systems generally used multi-character device names like DL0: or RKA0: instead.
> Some of the philosophy of TOPS-20 made it into VMS.
Can you give a specific example of this? VMS was mainly influenced by RSX-11. What did it get from TOPS-20 that it didn't get from RSX-11?
TOPS-10 predates OS-8
The auto post-increment/pre-decrement addressing modes of the 6809, 68000 and ARM exist on the PDP-11.
The set of 2's complement branch instructions and related flags for all of them is pretty much exactly the same (well 6502 does not implement the full set).
It didn't have to be this way- for example, the instruction mnemonics could have been the IBM 360 ones..
This is the start of a decompression routine for LZSA compression for both architectures. (I don't think the PDP-11 code was even modelled after the 8086. Just convergent implementation?) Source here: https://github.com/emmanuel-marty/lzsa
The only difference of note is the PDP-11 doesn't have string array operations (but it doesn't really need them with addressing modes like (r1)+) and so does an explicit check for end of input, that is implicit on the x86 before it loops back to ReadToken. Otherwise there is a near one-to-one translation of each instruction, often with the same mnemonics.
ReadToken: .decode_token:
movb (r1)+,r0 mov ax,cx
mov r0,r5 lodsb
mov dx,cx
bic #177617,r0
beq NoLiterals
asr r0 mov cl,4
asr r0 shr al,cl
asr r0
asr r0
cmp #7,r0 cmp al,07H
bne m1 jne .got_literals
... ...
With that said, they had similar design goals. Minimal (but not minimalist) hardware requirements, compact and expressive instruction set suitable both for direct assembly programming (as that was still dominant in the 70s) as well as a tolerably clean target for simple compilers. System/360 did not really have these design goals. So while even if designers had drawn inspiration from the System/360 instead, the architecture of minis like the PDP-11 in the 70s, and microprocessors of the the 80s, would probably still have been different from System/360. Folks wanted a hardware stack in 1978! Of course... maybe they only wanted it because they'd gotten used to having it on machines like the PDP-11.I disagree w/ the claim that the PDP-8 directly inspired x86. At the operating system level, maybe: OS/8 -> CP/M -> DOS. At the architecture level, no: PDP-8 -> 8080?
The x86 architecture is _nothing_ if not a slavish progression from 8080, 8085, 8086, 80186, 80286, 80386, ...
I would definitely agree the 8080 itself was not inspired or influenced by the PDP-11. The timing is just wrong for that, if nothing else. The earliest ancestor to the 8080 was designed in the late 60s, before the PDP-11 came out. And of course the 8086 was designed in the 8080's lineage, even source level compatible somewhat. I think you just misread me, but since I thought more about it I'll outline my argument more clearly. Nearly all the changes from the 8080 to the 8086 were changes that, in practice, made it more like the PDP-11s:
* The 8080 was an accumulator machine. While the 8086 retains some specialized registers and the superficial register file of the 8080, it's largely a general register machine. It can, for example add any two registers together, or add any register and memory together. It can use any of several registers for an index register.
* Segmentation is basically a poor man's split I/D + paging on the PDP-11. While there's no protection, it's similar enough that the 8086 was the first microcomputer UNIX was ported to.
* The 8080 had a single stack intended pretty much just for subroutine call/returns. Annoyingly it limited what you could push. The 8086 has a general stack, and a second stack pointer too. This is mimicking a common programming model on the PDP-11. As such, C is easy to implement on the 8086 and rather hard on the 8080. (Though Intel explicitly cited Pascal as the intent there at release, so this isn't that strong of a point, I suppose.)
* Similar orthogonal byte and word operations for most instructions.
* Even the 8086 assembly mnemonics were very similar to the PDP-11 (or VAX) mov/movb/bne/beq/cmp/inc/dec compared to mov/mov.b/jne/jeq/cmp/inc/dec.
Also, modern people should realize that electrical interfaces on old 1960s-70s mainframes were almost always locked down by license agreements (as in "touch the backplane in an 'unapproved way' and your institution could be charged thousands of dollars in 'service' fees.”) With mainframes locked down and costing so much money to operate, one couldn't exactly do anything particularly exciting with them beyond mundane information management tasks. ALL of the real action, including creation of UNIX, C-Language, controlling the public phone system switches, aerospace platforms, laboratory c&c, numerical control, industrial process automation, etc. was happening on "mini" computers that were relatively cheap, could be electrically interfaced to almost anything, impacted less users during system-level operations and (usually) were pretty easy to fix.
But IBM, CDC, Burroughs, Sperry, etc. had no real financial interest in creating "mini" computers, so employee spin-outs like DEC and, in turn, Data General happened. In DEC's case, they grew so successful they even tried to produce a couple of their own "sub-mainframes" like the PDP-6/10/20 (aka DECsystem10/20 series), but their core competency was hardware-level computer science until the VAX.
The VAX (and DG Eclipse) came in as the 1970s were ending, because IBM and other mainframe manufacturers were flying “too high” on sales that supported "information technology" needs, but DEC and DG were seeing erosion from VLSI-based microprocessors sold by Motorola, RCA and Mostek. DEC responded with LSI-11 but also divestiture to a new class of computers, decentralized systems that would ultimately be called "departmental computers" that could network with each other and thereby eliminate (or at least supplement) the need for expensive big iron mainframes. With newer and better PDPs in tow, DEC began to tear into IBM's mainframe market with cheaper and cheaper VAXen.
(Unfortunately, a kid named Bill Gates was dedicating himself to enable microprocessor-based computers to do the same to the VAX that VAX had done to mainframes, ironically using an old PDP-10 at Harvard to prototype his code…a decade or so later leading to DEC being acquired by Compaq and then destroyed by the mismanagement of Carly Fiorina.)
I was a longtime hardware product manager at DG starting a few years after the events of "the book" as it was called. I knew a lot of the people involved and even dotted-lined into Tom West for a while when the first x86-based NUMA servers were rolling out.
In what sense was DEC an employee spin-out from any of the mainframe outfits?
From my perspective, Ken and his Pinto were the antithesis of everything IBM and we loved him for it.
Edit: my mistake, yes Compaq was bought my HP and therefore it fell under the control of Fiorina, in the end.
But then the college that I attended (starting 1982) had a very traditional and conservative computer science department that revolved around the campus mainframe computer. It seemed boring. I also had a summer internship at a computer facility with a big mainframe. Boring.
The people who were doing what seemed like cool stuff with computers were in the physics department, hooking computers up to experiments and actually doing things. The math department went along for the ride, getting personal computers on the recommendation of the physics profs. I ended up majoring in math and physics as a result of this.
Of course computer science has come a long way, but that was how I saw it from my tiny isolated vantage point so many years ago. I missed out on the huge market growth for CS, though I've had a pretty good career anyway.
IMO it's more interesting just how dated the technology is. DEC and SGI made huge super-expensive machines (by modern standards) and I'm typing this on an iMac Pro which is somewhere between 1000 and 10000 times faster than a VAX 11/780 and would easily leave an SGI Octane in the dust.
Even knowing Moore's Law, I don't know how many people expected that kind of progress back in the 80s or 90s.
Now just imagine what a modern SGI Octane with all its custom silicon implemented in 10nm, with a modern MIPS processor built with modern technologies could be, every component finely tuned to work with all others into perfect coordination.
How would it compare to a PC assembled from generic components?
I suppose when '7nm' and smaller processes are economic enough for non-primary CPUs, hopefully also with rad hardened designs ready for use in the new space age, there will be interest in making both basic compute SoCs already optimized like this, and supercomputers constructed from variations on the same components.
And a 'byte' on a pdp-10 was anywhere between 1 and 36 bits. We've lost some important ideas from the Olden Days.
It still works today.
[1] https://www.amazon.com/Lions-Commentary-Unix-John/dp/1573980...
It persisted until at least 1982 where you could get one on a desktop. https://en.wikipedia.org/wiki/DEC_Professional_(computer)
I used the LSI-11 and LSI-11/23, but never saw one of those.
Edit - Oh and I think this was one of the machine families DEC would sell where the difference between models was only the glue in some of the expansion slots of the cheap models.
I'd not done much C programming, but the environment on the VAX and the profiler was and felt so far ahead of anything I'd used before. This was the days when Borland C (think was turbo C back then) was a thing.
Fond memories and since then having touched many different systems, for me, was the one that stood out a the biggest wow, how brilliant is this moment.
This was in the days before GUI's saturated development environments and for me, even today, multiple shells and vi, still my comfort zone.
Sad that VAX never prevailed further, fond memories, as with many systems/environments that have come and gone, but when you start out programming with punched cards, much time passes and much has changed and those wow moments - well, been a while since I had one of those epiphany moments, though finding these forums I would rank up there as one of those.
Small thing, but to have that finally explained after all these years… I never knew the explicit difference between a minicomputer and microcomputer for some reason.
So, yes, it was "single chip CPU", but that correlated with a bunch of other things...
It was a big challenge getting an entire CPU on a single chip back then. Arguably, every single microprocessor from the 4004 to the 386 was just restoring features that the minicomputers originally had.
The distinction is probably more around Andy Grove's horizontal stack of "commodity" microprocessors, OSs, etc. vs. the vertical stack of the micros where one company mostly made everything.
Memory management didn't make it into micros until the 386 generation. (At least on-chip memory management didn't.) In terms of this discussion, that's pretty late.
No. The Alpha was a RISC machine. The Pentium Pro was a demonstration that, with 3000 engineers at peak, you could actually get several instructions per clock out of x86. It was the first real superscalar microprocessor, one where what the CPU is doing inside is very different from what the programmer sees as the instruction set.
The VAX was a classic CISC machine. Way too complex an instruction set.
Amusingly, x86 turned out to be a good instruction set for superscalar machines. Not too many registers, so context switches were not so bad. Variable length instructions, so you didn't get "RISC bloat", which tended to double the size of code and cause cache misses. The fast but dumb one-instruction-per-clock RISC CPUs were outclassed by superscalar x86. You can build superscalar RISC machines, but once you've added a few hundred million transistors of superscalar logic, you've lost any simplicity advantage RISC offered.
The Pentium Pro came out in 1995. To say the x86 architecture was "all but dead" at that point is not supported by the historical record.
It's okay, Linux and guys like Mad Dog eventually got 'em (with license-free hardware-neutral software), though Apple (and the M1) are getting the last laugh.
SPARC had nothing to do with ARM, but was entirely Sun's own RISC project, and an attempt to find a way off Motorola CPUs (which powered Sun's earlier workstations).
VAX was the "Virtual Address eXtension" to PDP-11, which was released right around 1979/1980, was a 32-bit architecture, and additional processor instructions. VAX ended up being a much different beast, but you could still see that it was extended from the PDP-11 platform. DEC made a lot of tooling to make the transition from PDP-11 to VAX as smooth as possible for developers- they provided compilers that were source-compatible, etc., for FORTRAN, COBOL, C, BASIC, etc.
So the PDP-7, PDP-8 and PDP-11 directly influenced the
development of CP/M, MS-DOS, OS/2, Windows 1 through to ME.
A different line of PDPs directly led to UNIX and C.
It is well known that Unix was written on a PDP-7, then PDP-11. In fact a few paragraphs above the post states the same thing. So, not a different line, unless you count a subset as that?And, sadly, the living computer museum had preserved pretty much all the important machines mentioned, running live (TOPS-20 on a Dec20, v7 on an 11/55, etc). But now it's closed.