Never miss a story from Breakfast Bytes. Subscribe for in-depth analysis and articles.
As part of the RISC-V workshop, Dave Patterson gave a talk on computer architecture. He recently retired from UC Berkeley, and in another sense it was a career retrospective. He did let drop that he is working with Google so his retirement doesn’t seem to involve the traditional golf course.
Instruction set architecture (ISA) began in some ways with the IBM 360 in 1964. This was the first ISA defined as the interface between hardware and software. Of course, all earlier computers had instruction sets, but there was no real differentiation between the instruction set and the implementation, and in many cases the bits of the instruction word directly controlled muxes and other aspects of the hardware. In fact, that was part of the problem IBM had. They had built up four lines of computers for different markets, with different hardware architectures, and different peripherals, and so had ended up with four different instruction sets, too.
A couple of years earlier, Maurice Wilkes at Cambridge had come up with the idea of microcode. He had gone on to be the head of the Computer Laboratory by the time I was an undergraduate there—he gave the first course I ever took on networking. The idea of microcode was that RAM was really slow (ferrite core), ROM was really fast, and gates were expensive and hard to design. So why not design the control unit with what Wilkes called “microprogramming”? Wilkes never built a microprogrammed computer, it was just a technical paper, but he had some authority since he was one of the few people in the world who had built a computer by 1958, being the lead of the team that had earlier built EDSAC. See my post ENIAC, EDSAC...and the Difference Engine.
However, microprogramming caught the attention of the IBM designers and they decided implement this unproven academic idea. They decided to replace their entire range of all four product lines with a single instruction set across the range, with a single new set of peripherals. A program that ran on any of the computers would run on any other. Nobody had thought to do that before. Tom Watson Jr, the CEO of IBM at the time, bet the company on the idea.
Luckily, the bet paid off and the 360 range was a huge success financially for IBM. It was a huge success from a technical point of view, too. All mainframes that IBM produced for decades had that same ISA, and today, 70 years later, there is still a line descended from it. It is also why bytes are 8 bits long, since until then they had been 6 bits (nobody used lower case, why would you need more bits for a character?).
The initial range was huge. The lowest performance entry didn’t even have registers, they were just held in memory, and it had an 8-bit datapath with 30nsec/level logic implementation. The high end had transistor registers, a 64-bit datapath and 5 nsec/level logic. The price, which was actually an annual rental fee since you couldn’t buy one outright, varied across a big range too, from $48K per year at the low end up to $270K per year at the high end (about $0.5/y to $3M/y in todays dollars).
So that day, April 7, 1964, was the creation of “binary compatibility”, where a program written in a particular ISA would run on any implementation of that ISA. But it was very brave. Nobody since has ever announced six compatible computers on the same day.
Then integrated circuits came along which changed the cost equation. ROM no longer had a different performance from RAM, and every year there were more and more transistors. So what everyone did was to build bigger and bigger microprograms which allowed more and more complicated instruction sets. This was the age of the complex instruction set computer (CISC) perhaps best exemplified by DEC’s Vax 11/780 in 1978.
Microprocessors got invented. At first they were little more than toys, but Moore’s Law was in full swing. What the microprocessor people did was to imitate what the minicomputer and mainframe architects had done before them. Gordon Bell, the chief architect of DEC, was a friend of Gordon Moore, then president of Intel, and the two of them realized things were quickly going to go from 8- to 16- to 32-bit microprocessors.
Gordon Moore realized that Intel’s “next” microprocessor ISA would last the life of the company and essentially live forever, like the IBM 360 ISA was doing. So Intel created a skunkworks in Oregon, away from corporate headquarters, and hired a lot of computer architects to come up with the architecture in a similar way to what IBM had done to come up with the 360 ISA. They went with the flavor of the day with big microprograms, but the architecture was so big and ambitious it wouldn’t fit on one chip.
By 1978, it was clear it would not be ready by the time Moore’s Law had reached the point at which the next Intel microprocessor had to be 16 bits, and it had to have an ISA. So they threw a group together, and in 10 weeks they had created a stopgap ISA so that they could get that chip out while the architecture of the future was finalized up in Oregon. It was an awful instruction set, but it was just temporary until Oregon delivered.
But Gordon Moore’s prediction that the next microprocessor’s ISA would last the life of the company turned out to be correct, not just in quite the way that he had envisaged.
The ISA wasn’t even that popular in 1978, it was so awful, and Motorola had a much better ISA. But that chip design was late and was not shipping. However, the group in Florida that IBM had put together to build what would be the PC needed a chip right then, so they picked the 8088. It was a stopgap solution too, since IBM expected to sell just 200,000 PCs. But they sold hundreds of millions. All running Gordon Moore’s “emergency instruction set.”
Meanwhile, back at IBM, John Cocke had developed a compiler for a processor called the IBM 801 that only had register operations, plus a pair of load and store from memory instructions. He ported the compiler to the IBM 360 ISA. It didn’t/couldn’t use most of the instruction set, only the subset that matched the 801, but to everyone's surprise, the code it produced ran three times faster than using all the complicated microcoded instructions.
DEC found something similar with the Vax, that 20% of the instructions required 60% of the microcode but only occupied 0.2% of the execution time. Microcode started to look like the answer to the wrong question.
Dave Patterson, still at this point an untenured associate professor, took a sabbatical at DEC in 1979. He knew the basic direction of development and knew that the microprocessor people would imitate the mainframe people and use a lot of microcode, as the Intel group in Oregon had been doing. But bugs were always being discovered in microcode and so all mainframes had field upgradable microcode. Dave realized that they would need to find a way to build field-repairable microprocessors. Being an academic, he wrote a paper on it…but it was rejected.
But, rejected paper or not, it was still true: if they imitated the mainframe people and built complex microcoded instruction sets, then they would need to be fixed. Plus, microcode wasn't looking so good anyway compared with simpler ISAs.
Tomorrow, Dave realizes how to solve this problem. See Fifty Years of Computer Architecture: The Last 30 Years.