DEC PRISM

PRISM (Parallel Reduced Instruction Set Machine) was a 32-bit RISC instruction set architecture (ISA) developed by Digital Equipment Corporation (DEC). It was the final outcome of a number of DEC research projects from the 1982–85 time-frame, and the project was subject to continually changing requirements and planned uses that delayed its introduction. This process eventually decided to use the design for a new line of Unix workstations. The arithmetic logic unit (ALU) of the microPrism version had completed design in April 1988 and samples were fabricated, but the design of other components like the floating point unit (FPU) and memory management unit (MMU) were still not complete in the summer when DEC management decided to cancel the project in favor of MIPS-based systems.
PRISM's cancellation had significant effects within DEC. Many of the team members left the company over the next year, notably Dave Cutler who moved to Microsoft and led the development of Windows NT. The MIPS-based workstations were moderately successful among DEC's existing Ultrix users but had little success competing against companies like Sun Microsystems. Meanwhile, DEC's cash-cow VAX line grew increasingly less performant as new RISC designs outperformed even the top of the line VAX 9000. As the company explored the future of the VAX they concluded that a PRISM-like processor with a few additional changes could address all of these markets. Starting where PRISM left off, the DEC Alpha program started in 1989.
History.
Background.
Introduced in 1977, the VAX was a runaway success for DEC, cementing its place as the world's #2 computer vendor behind IBM. The VAX was noted for its rich instruction set architecture (ISA), which was implemented in complex microcode. The VAX/VMS operating system was layered on top of this ISA, which drove it to have certain requirements for interrupt handling and the memory model used for memory paging. By the early 1980s, VAX systems had become "the computing hub of many technology-driven companies, sending spokes of RS-232 cables out to a rim of VT-100 terminals that kept the science and engineering departments rolling."
This happy situation was upset by the relentless improvement of semiconductor manufacturing as encoded by Moore's Law; by the early 1980s there were a number of capable 32-bit single-chip microprocessors with performance similar to early VAX machines yet able to fit into a desktop pizza box form factor. Companies like Sun Microsystems introduced Motorola 68000 series-based Unix workstations that could replace a huge multi-user VAX machine with one that provided even more performance but was inexpensive enough to be purchased for every user that required one. While DEC's own microprocessor teams were introducing a series of VAX implementations at lower price-points, the price-performance ratio of their systems continued to be eroded. By the later half of the 1980s, DEC found itself being locked out of the technical market.
RISC.
During the 1970s, IBM had been carrying out studies of the performance of their computer systems and found, to their surprise, that 80% of the computer's time was spent performing only five operations. The hundreds of other instructions in their ISAs, implemented using microcode, went almost entirely unused. The presence of the microcode introduced a delay when the instructions were decoded, so even when one called one of those five instructions directly, it ran slower than it could if there was no microcode. This led to the IBM 801 design, the first modern RISC processor.
Around the same time, in 1979, Dave Patterson was sent on a sabbatical from Berkeley University to help DEC's west-coast team improve the VAX microcode. Patterson was struck by the complexity of the coding process and concluded it was untenable. He first wrote a paper on ways to improve microcoding, but later changed his mind and decided microcode itself was the problem. He soon started the Berkeley RISC project. The emergence of RISC sparked off a long-running debate within the computer industry about its merits; when Patterson first outlined his arguments for the concept in 1980, a dismissive dissenting opinion was published by DEC.
By the mid-1980s practically every company with a processor design arm began exploring the RISC approach. In spite of any official disinterest, DEC was no exception. In the period from 1982 to 1985, no fewer than four attempts were made to create a RISC chip at different DEC divisions. Titan from DEC's Western Research Laboratory (WRL) in Palo Alto, California was a high-performance ECL based design that started in 1982, intended to run Unix. SAFE ("Streamlined Architecture for Fast Execution") was a 64-bit design that started the same year, designed by Alan Kotok (of Spacewar! fame) and Dave Orbits and intended to run VMS. HR-32 ("Hudson, RISC, 32-bit") started in 1984 by Rich Witek and Dan Dobberpuhl at the Hudson, MA fab, intended to be used as a co-processor in VAX machine. The same year Dave Cutler started the CASCADE project at DECwest in Bellevue, Washington.
PRISM.
Eventually, Cutler was asked to define a single RISC project in 1985, selecting Rich Witek as the chief architect. In August 1985 the first draft of a high-level design was delivered, and work began on the detailed design. The PRISM specification was developed over a period of many months by a five-person team: Dave Cutler, Dave Orbits, Rich Witek, Dileep Bhandarkar, and Wayne Cardoza. Through this early period, there were constant changes in the design as debates within the company argued over whether it should be 32- or 64-bit, aimed at a commercial or technical workload, and so forth. These constant changes meant the final ISA specification was not complete until September 1986. At the time, the decision was made to produce two versions of the basic concept, DECwest worked on a "high-end" ECL implementation known as Crystal, while the Semiconductor Advanced Development team worked on microPRISM, a CMOS version. This work was 98% done 1985–86 and was heavily supported by simulations by Pete Benoit on a large VAXcluster.
In the middle of 1987, the decision was made that both designs be 64-bit, although this lasted only a few weeks. In October 1987, Sun introduced the Sun-4. Powered by a 16 MHz SPARC, a commercial version of Patterson's RISC design, it ran four times as fast as their previous top-end Sun-3 using a 20 MHz Motorola 68020. With this release, DEC once again changed the target for PRISM, aiming it solely at the workstation space. This resulted in the microPRISM being respecified as a 32-bit system while the Crystal project was canceled. This introduced more delays, putting the project far behind schedule. 
By early 1988 the system was still not complete; the CPU design was nearly complete, but the FPU and MMU, both based on the contemporary Rigel chipset for the VAX, were still being designed. The team decided to stop work on those parts of the design and focus entirely on the CPU. Design was completed in March 1988 and taped out by April.
Cancellation.
Throughout the PRISM period, DEC was involved in a major debate over the future direction of the company. As newer RISC-based workstations were introduced, the performance benefit of the VAX was constantly eroded, and the price/performance ratio completely undermined. Different groups within the company debated how to best respond. Some advocated moving the VAX into the high-end, abandoning the low-end to the workstation vendors like Sun. This led to the VAX 9000 program, which was referred to internally as the "IBM killer". Others suggested moving into the workstation market using PRISM or a commodity processor. Still others suggested re-implementing the VAX on a RISC processor.
Frustrated with the growing number of losses to cheaper faster competitive machines, independently, a small skunkworks group in Palo Alto, outside of Central Engineering, focused on workstations and UNIX/Ultrix, entertained the idea of using an off-the-shelf RISC processor to build a new family of workstations. The group carried out due diligence, eventually choosing the MIPS R2000. This group acquired a development machine and prototyped a port of Ultrix to the system. From the initial meetings with MIPS to a prototype machine took only 90 days. Full production of a DEC version could begin as early as January 1989, whereas it would be at least another year before a PRISM based machine would be ready.
When the matter was raised at DEC headquarters the company was split on which approach was better. Bob Supnik was asked to consider the issue for an upcoming project review. He concluded that while the PRISM system appeared to be faster, the MIPS approach would be less expensive and much earlier to market. At the acrimonious review meeting by the company's Executive Committee in July 1988, the company decided to cancel Prism, and continue with the MIPS workstations and high-end VAX products. The workstation emerged as the DECstation 3100.
By this time samples of the microPRISM had been returned and were found to be mostly working. They also proved capable of running at speeds of 50 to 80 MHz, compared to the R2000's 16 to 20. This would have offered a significant performance improvement over the MIPS systems.
Legacy.
By the time of the July 1988 meeting, the company had swung almost entirely into the position that the RISC approach was a workstation play. But PRISM's performance was similar to that of the latest VAX machines and the RISC concept had considerable room for growth. As the meeting broke up, Ken Olsen asked Supnik to investigate ways that Digital could keep the performance of VAX/VMS systems competitive with RISC-based Unix systems.
A group of engineers formed a team, variously referred to as the "RISCy VAX" or "Extended VAX" (EVAX) task force, to explore this issue. By late summer, the group had explored three concepts, a subset of the VAX ISA with a RISC-like core, a translated VAX that ran native VAX code and translated it on-the-fly to RISC code and stored in a cache, and the ultrapipelined VAX, a much higher-performance CISC implementation. All of these approaches had issues that meant they would not be competitive with a simple RISC machine.
The group next considered systems that combined both an existing VAX single-chip solution as well as a RISC chip for performance needs. These studies suggested that the system would inevitably be hamstrung by the lower-performance part and would offer no compelling advantage. It was at this point that Nancy Kronenberg pointed out that people ran VMS, not VAX, and that VMS only had a few hardware dependencies based on its modelling of interrupts and memory paging. There appeared to be no compelling reason why VMS could not be ported to a RISC chip as long as these small bits of the model were preserved. Further work on this concept suggested this was a workable approach.
Supnik took the resulting report to the Strategy Task Force in February 1989. Two questions were raised: could the resulting RISC design also be a performance leader in the Unix market, and should the machine be an open standard? And with that, the decision was made to adopt the PRISM architecture with the appropriate modifications, eventually becoming the Alpha, and began the port of VMS to the new architecture.
When PRISM and MICA were cancelled, Dave Cutler left Digital for Microsoft, where he was put in charge of the development of what became known as Windows NT. Cutler's architecture for NT was heavily inspired by many aspects of MICA. In addition to the implementation of multiple operating system APIs on top of a common kernel (Win32, OS/2 and POSIX in NT's case) MICA and NT shared the separation of the kernel from the executive, the use of an Object Manager as the abstraction for interfacing with operating system data structures, and support for multithreading and symmetric multiprocessing.
Design.
In terms of integer operations, the PRISM architecture was similar to the MIPS designs. Of the 32-bits in the instructions, the 6 highest and 5 lowest bits were the instruction, leaving the other 21 bits of the word for encoding either a constant or register locations. Sixty-four 32-bit registers were included, as opposed to thirty-two in the MIPS, but usage was otherwise similar. PRISM and MIPS both lack the register windows that were a hallmark of the other major RISC design, Berkeley RISC.
The PRISM design was notable for several aspects of its instruction set. Notably, PRISM included Epicode ("extended processor instruction code"), which defined a number of "special" instructions intended to offer the operating system a stable ABI across multiple implementations. Epicode was given its own set of 22 32-bit registers to use. A set of vector processing instructions were later added as well, supported by an additional sixteen 64-bit vector registers that could be used in a variety of ways.
MICA.
MICA was the codename of the operating system developed for the PRISM architecture. MICA's design was driven by Digital's need to provide a migration path to PRISM for Digital's VAX/VMS customers, as well as allowing PRISM systems to compete in the increasingly important Unix market. MICA attempted to address these requirements by implementing VMS and ULTRIX "user interfaces" on top of a common kernel that could support the system calls (or "system services" in VMS parlance), libraries and utilities needed for both environments.
The original goal for MICA was that all applications would have full and interchangeable access to both the VMS and ULTRIX interfaces, and that a user could choose to log in to a ULTRIX or VMS environment, and run any MICA application from either environment. However, it proved to be impossible to provide both full ULTRIX and full VMS compatibility to the same application at the same time, and Digital scrapped this plan in favour of having a separate Unix operating system based on OSF/1 (this was variously referred to as "PRISM ULTRIX" or "OZIX"). As a result, MICA would have served as a portable implementation of a VMS-like operating system, with compatible implementations of DCL, RMS, Files-11, VAXclusters, and the VAX/VMS RTLs and system services. Proposals were made for reinstating Unix compatibility in MICA on a per-application basis so that a MICA application could be compiled and linked against the VMS interfaces, or the ULTRIX interfaces, but not both simultaneously.
Due to scheduling concerns, Digital planned to deliver certain PRISM systems with restricted subsets of the full MICA operating system. This included systems such as "Cheyenne" and "Glacier" which were dedicated to running specific applications, and where direct interaction with the operating system by customers would be limited.
MICA was to be written almost entirely in a high-level programming language named "PILLAR". PILLAR evolved from EPascal (the VAXELN-specific dialect of Pascal) via an interim language called the Systems Implementation Language (SIL). PILLAR would have been backported to VAX/VMS, allowing applications to be developed that could be compiled for both VAX/VMS and MICA. A common set of high-level runtime libraries named "ARUS" (Application Runtime Utility Services) would have further facilitated portability between MICA, OSF/1, VAX/VMS and ULTRIX. As part of the PRISM project, a common optimizing compiler backend named "GEM" was developed (this survived and became the compiler backend for the Alpha and Itanium ports of VMS).
In addition to PILLAR, Mica provided first-class support for ANSI C in order to support Unix applications. An assembler named "SPASM" (Simplified PRISM Assembler) was intended for the small amount of assembly code needed for the operating system, and would not have been made generally available in order to dissuade customers from developing non-portable software. Similarly, an implementation of BLISS was developed for internal use only, in order to allow pre-existing VAX/VMS applications to be ported to MICA. MICA would have featured ports or rewrites of many VAX/VMS layered products, including Rdb, VAXset, DECwindows, and most of the compilers available for VAX/VMS.