Processor for the DEC VAX

The VAX-11 systems were quite popular in the 80's, especially in higher education. They could emulate the popular PDP-11. Now it is difficult to understand some of the concepts described in books from those years, without knowing the features of the architecture of those systems.

The VAX-11 was more expensive than the PDP-11. However it was more oriented towards universal programming than the PDP-11. Additionally the VAX-11 was significantly cheaper than the IBM/370 systems.

The V-11 processor that was produced by the mid-80s for the VAX architecture, before that time processor assemblies were the only option.

The VAX-11 architecture is 32-bit, it uses 16 registers, among which, like the PDP-11, there is a program counter. It assumes the use of two stacks, one of which is used to store frames of subroutines. In addition one of the registers is assigned to work with the arguments of called functions. Thus, 3 of 16 registers are allocated for stacks.

The instruction system of the VAX-11 cannot fail to amaze with its vastness and the presence of very rare and often unique commands. For example it has commands for working with bit fields, for working with several types of queues, for calculating CRC, for multiplying decimal strings, etc. Many instructions have both three-address variants (like the ARM) and two-address variants (like the x86), but there are also four-address instructions, for example, the extended division – EDIV. Hardware floating point support is optional and is not available on some VAX models.

The VAX instruction system is distinguished by perhaps the most complete implementation of the orthogonality concept – any addressing mode can be used at any operand position. At the same time, unlike the PDP-11, strange commands like MOVB #11,#12 are prohibited. The addressing methods themselves expand those available on the PDP-11 by using 32-bit addressing and by making it possible to use an optional index register with scaling in the address – the latter was later repeated in the 68020 and 80386. Consider an example of the VAX instructions.

ADDL3 (R1)+,(R2)+[R3],@(R4)+[R5]

This addition command is equivalent to the following sequence of commands for the 80386.

LODSD ;ESI - R1
ADD EAX,[EDI+EBX*4] ;EDI - R2, EBX - R3
ADD EDI,4
MOV EDX,[ECX+EBP*4] ;ECX - R4, EBP - R5
MOV [EDX],EAX
ADD ECX,4

Or the following sequence of commands for the ARM.

LDR R0,[R1],4
LDR R6,[R2,R3,LSL 2]
ADD R2,4
LDR R7,[R4,R5,LSL 2]
ADD R4,4
LDR R7,[R7]
ADD R0,R6
STR R0,[R7]

However, it is worth noting that the VAX instruction has most likely never been used in any program. This example well illustrates the problem of having too large a set of instructions and addressing methods – most instruction variants are simply almost never used. This problem became critical when by the 90s there was a transition from the microcode implementation of instructions to the fast, without delays implementation. And the further transition to the superscalar architecture with such a problem became almost impossible.

Unlike the IBM/370, PDP-11 or 68k, the VAX instructions are not required to have an even length and can, like the x86 instructions, be from one byte long. This, the ability to use offsets of different sizes (8, 16, or 32 bits) and the presence of a large variety of different commands and addressing methods allow VAX codes to be among the best in density.

However the VAX-11 is a very slow system for its class and price. Even the super-simple 6502 at 4 MHz could outrun the slowest family member VAX-11/730. The fastest VAX-11 systems – huge cabinets and "whole furniture sets" – was at the same level of speed as the first PC AT's. When the 80286 appeared it became clear that the days of the VAX-11 were numbered and even the slowdown of the development of systems based on the 80286 could not change anything fundamentally. The straightforward people from Acorn having made the ARM in 1985 without hiding anything, said that the ARM is much cheaper and much faster. The VAX-11 however remained relevant until the early 90's, while still having some advantages over the PC, in particular faster systems for working with disks.

There were known compatibility issues among the cheapest VAX-11s. In particular, it was problematic to port Unix to the first VAX-11/730's due to the peculiarities of the implementation of privileged instructions on them.

The VAX is probably the last mass computer system in which the convenience of working in assembly language was considered more important than its performance. In a sense this approach has moved to modern popular scripting languages.

The VAX-11/785 is also a computer (1984) – the fastest among the VAX-11 series, with its processor speed comparable to the IBM PC AT or ARM Evaluation System

Surprisingly there is very little literature available on the VAX systems in open access, as if there is some strange law of oblivion. Interestingly, the VAX trademark is now used by the manufacturer of vacuum cleaners and, in addition, this word has become a synonym for the word vaccine during the powerful mass vaccination trend, especially when applied to those who doubt the vaccination. Several episodes close to politics and correlated with the history of the USSR have been associated with the history of the VAX architecture. It is possible that the actual rejection of the development of the PDP-11 architecture was caused by its low cost and the success of its cloning in the Soviet Union. The cloning of the VAX cost a higher order of magnitude in resources and led to a dead end. Interest in the VAX was created using for example, hoaxes like the famous Kremvax on April 1 1984, in which the then USSR leader Konstantin Chernenko offered to drink vodka on the occasion of connecting to the Usenet network. Another joke was that some VAX-11 chips were impressed with a message in broken Russian about how good the VAX was. This is also accompanied by the fact that the performance of the first VAX was overestimated, the claimed performance was actually twice as high as the real one. It can also be noted that, unlike the PDP-11, where the execution time of instructions was always thoroughly documented, this information was never officially published for the VAX.

Some first models of the VAX were cloned in the USSR by the end of the 80's, but such clones were produced in very little numbers and they almost did not find a use. Some VAX models were also cloned in the UK, China, GDR, Hungary and Czechoslovakia.

The latest VAX-11 models were made in the mid-80s. Of course, you need to keep in mind that with the VAX-11 the history of VAX computers in DEC did not end there, they were replaced by the VAX 8000 models some of which belonged to the VAX-11 family. In parallel, the development of the MicroVax, VAXstation and VAXserver lines was underway. The VAX 8000 was replaced by the cheaper and somewhat faster VAX 6000. Subsequently in the early 90's MicroVax was replaced by the VAX 4000 models. The VAX processors from the early 90's showed performance at the level of the 80486, but had slightly higher clock speeds. I can assume that the 80486DX4 at 100 MHz and the first Pentium processors began to overtake the best VAX 7000 models in performance. After that, DEC had to abandon support for the VAX instruction system and switch to emulating it in the DEC Alpha systems. There were also VAX 9000 supercomputers and multiprocessor variants, such as the VAX 7000, but these were very expensive systems. We can also mention the high-reliability VAXft systems, in which the processor functions were duplicated, which allowed overcoming any failure of one of the processors. After the V11, there were the CVAX, Rigel, NVAX, and NVAX+ processors. The Vaxen after the VAX-11 no longer had hardware support for the PDP-11 emulation.

Several VAX systems are available for use over the network and this distinguishes them favorably from the IBM/370 systems with which they competed.

Edited by Ralph Kernbach and Richard BN


mirror