A Retrospective on What We Have Learned From the PDP-11:
What Else Did We Need to Know That Could Have Been Useful in the Design of the VAX-11 to Make Alpha Easier?

Gordon Bell
Senior Researcher, Microsoft Corp.
Bay Area Research Center, San Francisco, CA

Introduction

This retrospective describes the evolution of the PDP-11 (16 and 18-bit user address    space with RSX-11), to VAX-11 (31-bit user address space with VMS), and to Alpha (64-bit user data address space with VMS support).  It first describes the evolution of the architectures used to implement the common, evolving run time environment, VMS. Second, we give our understanding of Moore’s Law that was the basis for planning VAX.  Third, it explains why were we so dumb as to not invent RISC?  And finally, it explains that we now understand that VMS is the architecture, not VAX.

The VAX-11 aka VAX aka Virtual Address Extension to the PDP-11 project was started April 1, 1975 when the PDP-11 was roughly five years old.  The first VAX model (780) was introduced in early 1978.  The VAX architecture was specified before the paper on the PDP-11 by us (1975) was written, hence the paper really was the constraints for VAX.

The VAX-11 was designed to extend the PDP-11 in a “culturally compatible fashion” (Strecker,1978).  In late 1978, when it was clear that the market was responding to VAX,  the VAX Strategy (Bell, 1986) was developed and adopted.  The strategy was to make VAX and VMS the single computing environment for all of Digital Equipment Corporation’s future products.   It dictated that: (1) all future architecture would be based on a hierarchy of VAX models including structures;  (2) PDP-11 would only be used in very small systems until VAX on a chip was developed; and (3) the PDP-8 and 10 environments would continue to a limited degree for existing users.   A PDP-11 mode was included in the VAX / VMS so that applications running on an RSX-11 executed at twice the speed of the fastest PDP-11. 

TheBell and Strecker paper (1975) has been often quoted because of this statement:

“There is only one mistake that can be made in a computer design that is difficult to recover from – not providing enough address bits for memory addressing and memory management.  The PDP-11 followed the unbroken tradition of nearly every known computer.  Of course, there is a fundamental rule of computer (and perhaps other) designs which helps to alleviate this problem: any well-designed machine can be evolved through at least one major change.  It is extremely embarrassing that the 11 had to be evolved with memory management only two years after the paper was written outlining the goal of proving increased address space.  All predecessor DEC designs have suffered the same problem and only the PDP-10 evolved over a ten year period before a change was made to increase its address space.”

The Evolution from PDP-11 to VAX-11 to Alpha

The PDP-11/20 introduced in 1970 (Bell et al, 1970) with a 16 bit program address space.  It was immediately extended to address 256K bytes (18-bits) of physical memory.  With the introduction of the 11/70 in 1975, physical memory was increased to 4 Mbytes and a program’s address space was extended to 18-bits, but with substantial software overhead.  Numerous models of the PDP-11 were introduced including one chip versions.  The last PDP-11 was introduced in 1985, giving it a lifetime of  about 18 years.

VAX ameliorated the 11’s design limits by extending the user’s address space from 18 bits to 31 bits.  The final model of the VAX-only architecture was introduced in 1994. The PDP-11 architecture peaked 8 years after introduction when VAX was introduced and continued to live for 10 more years.  VAX peaked at 12 years and continued to be shipped for 8.  The key technology that eased program migration from the 18-bit  RSX-11 environment  to run on 32-bit VAX was the inclusion of the 11 ISA mode, together with VMS’s ability  emulate the RSTS operating system.

Alpha was announced in 1991 based on the PRISM architecture created by VMS architect Dave Cutler. PRISM was to replace VAX.  Unfortunately, Digital took various architecture detours including the user of MIPS processors for UNIX workstations.    Digital delivered the first Alpha, in 1993 as a 64-bit “RISC” architecture designed to execute VAX code written for the VMS environment.  The critical technology that allowed VAX/VMS applications to migrate to Alpha/VMS was the ability to cross-compile VAX binary code to run on the Alpha architecture.   Alpha also contains a special facility similar to Atlas’ Extracode to interpret = complex VAX instructions. Without this ability to do both static and dynamic compilation of binary programs, the migration to Alpha would certainly have come to an end.

The evolution of the VAX address space can be compared to the evolution of the IBM System 360 and Intel X86 architectures that were created in 1964 and 1980 respectively.  All three are likely to evolve well into the middle of the 21st century.  In contrast to the X86 and the IBM/360, the PDP-11/VAX/Alpha evolution has been quite straight-forward.  The fact that Alpha is less likely to be around as long as the other two is really an issue of corporate competence, not the efficacy of the architecture.

We Understood Moore’s Law, But Didn’t Believe Its Implications

We had a basic understanding of Moore’s Law, but unfortunately when we examined the implications for the future, the results were too radical to believe.  It was hard to believe that the 780 timeshared system selling for  $250,000 would sell for a maximum of $5,000 in less than 20 years

Moore’s Law suggests that one additional address bit is required every 18 months.   It predicts that DRAM chip capacity increases 4x every 3 years. Thus, if memory chip prices are constant, and if users pay a constant amount for computers, then the memory capacity will grow by one address bit each18 months.  This argument ignores the workstation market for the lower priced constant-capacity computers that appeared under the $100K -$250K price umbrella that VAX initially targeted.   In the paper we stated:

“In retrospect, it is clear that since memory prices decline at 26% to 41% per year, and since many users tend to buy constant dollar systems, then every two or three years another bit is required for the physical address space.”


 The planning model for VAX was based on predicting that systems of a given memory size that determines functionality would decline at 80% per year shown in the figure.

System price = .6 x .8 (t-1972) x No. of Bytes in the system

This is an evolution rate of ½ Moore’s Law, i.e. one more bit is required to address memory every 3 years.  How various systems actually grew over time is beyond the scope of this paper. 

By extending the curves to 2000, one should note that a large timesharing system of 8 Mbytes costing $1 million in 1978 cost less than $5,000 in 1998 and has substantially more primary and secondary memory with comparable high processor performance.

Based on these models, 8 to 16 more bits were required for physical addresses between  1975 and 2000.  Since the VAX 780s shipped  in 1978 with roughly a megabyte of DRAM requiring 20 address bits, the pinch for more memory would occur between 1994 and 2010, depending on how rapidly memory prices declined.   However, given that the address space was used to map files, the address space crunch was immanent by 1990.   It took a long time to alleviate this limit. The transition to 64-bit addressing will occur by 2000 for all server architectures.

Why VAX Was the Ultimate CISC and Not RISC

The VAX was designed to run programs using the same amount of memory as they occupied in a PDP-11.  The VAX-11/780 memory range was 256 Kbytes to 2 Mbytes.  Thus, the pressure on the design was to have very efficient encoding of programs. Very efficient encoding of programs was achieved by having a large number of instructions, including those for decimal arithmetic, string handling, queue manipulation, and procedure calls.  In essence, any frequent operation, such as the instruction address calculations, was put into the instruction-set. VAX became known as the ultimate, Complex (Complete) Instruction Set Computer .  The Intel x86 architecture  followed a similar evolution through various address sizes and architectural fads.

RISC didn’t cross over CISC until 1985.  This occurred with the availability of large SRAMs that could be used for caches.   It should be noted at the time the VAX-11/780 was introduced, DRAMs were 4 Kbits and the 8 Kbyte cache used 1 Kbits SRAMs.  Memory sizes continued to improve following Moore’s Law, but it wasn’t till 1985, that Reduced Instruction Set Computers could be built in a cost-effective fashion using SRAM caches.  In essence RISC traded off cache memories built from SRAMs for the considerably faster, and less expensive Read Only Memories that held the more complex instructions of VAX (Bell, 1986).

VMS is the Architecture That Mattered… not PDP-11, VAX, or Alpha

We did not realize  importance of VMS over VAX . VMS was implemented mostly in a  systems programming language, BLISS that came to Digital from Carnegie-Mellon University. In 1975 when the project was started, C was not yet established as the dominant system programming language. BLISS was chosen because of the need to have very small, efficient programs.  BLISS could compile code that was comparable to very tightly coded, machine language programs.

Over the next few decades, VMS may be implemented on architectures other than Alpha. This will preserve investments in application software and data comparable to the hundred-plus billion dollars of VAX/Alpha hardware.  Thus, our real oversight was not understanding that VMS should have been built on the C machine for portability across any architecture.

The chaotic evolution of the Intel architecture to track the need for a larger memory address space demonstrates that architectural elegance and simplicity are irrelevant as long as software continues to provide a common environment for executing legacy programs. We respect our colleagues at IBM, and Microsoft who build and evolve software that preserve these old programs and data. 

In retrospect, standardizing on VMS rather than VAX could have changed Digital’s role in the computer industry.  But, that would have required Digital to make the transition from a hardware company to a software company.  No hardware company has ever done this, so this may be a moot point. An architecture independent operating system would have been an alternative to the process that created the plethora of UNIX dialects that are similar, but incompatible.   

Summary

The retrospective on “What Have We Learned from the PDP-11” could have been sub-titled “Design Considerations for the VAX Architecture”.  Both architectures were competitive and cost-effective for roughly 20 years.  Both hit the “not enough address bits” wall without being expandable in a cost-effective fashion.  The Alpha architecture was developed in order to interpret the VAX architecture and preserve the VMS operating environment.  With a 64 bit architecture, the computing environment should easily last another 50 years… long after the current way we compute and undoubtedly the programs and data that it need so support, disappear.

Acknowledgement

The author is indebted to Jim Gray and Catharine van Ingen for helping improve the content and form of the paper.

References

Bell, C. G., R. Cady, H. McFarland, B. Delagi, J. O'Laughlin, R. Noonan and W. Wulf, "A New Architecture for Mini-Computers -- The DEC PDP-11, Sprint Joint Computer Conference, pp. 657-675 (1970).

Bell, G., and W. Strecker, "Computer Structures:  What have we learned from the PDP-11 "  IEEE Computer Conference Proceedings, Florida (November 1975).

Bell, C. G., C. Mudge, and J. McNamara, “Computer Engineering: A DEC View of Hardware Systems Design”, Digital Press, (1978).

Bell, G.,  "RISC: Back to the Future?",  Datamation,  pp 96-108 (June 1, 1986).

Bell, C. G., "Toward a History of (Personal) Workstations", ACM Conference on the History of Personal Workstations, January 9, 1986, published in Goldberg, A.,
A History of Personal Workstations, Addison-Wesley, Reading, Mass. (1988).

Strecker, W. D, “VAX-11/780: A Virtual Address Extension to the DEC PDP-11 Family”, in Computer Engineering, Digital Press, (1978).