John L. Hennessy and David A. Patterson's new book, Computer Architecture:
A Quantitative Approach, is a uniquely lucid and accessible presentation
of the theory and practice of computer design and implementation. First,
the authors explain basic principles of computer performance measurement
and cost/benefit analysis. They then apply these principles to instruction-set
design, processor implementation, pipelining, vectorization, memory-hierarchy
design, and input and output. Each chapter contains real-life examples drawn
from four computer architectures -- the IBM 360/370, the DEC VAX, the Intel
8086, and the "DLX" (a sort of hypothetical composite of the currently
popular RISC machines) -- and each chapter concludes with three entertaining
sections entitled "Putting It All Together," "Fallacies and
Pitfalls," and "Historical Perspective."
It's almost impossible to convey the authority, scope, and vigor of this
book in a brief review. The book is highly technical, of course; nevertheless,
it's as engrossing as a novel because of the incredible depth and breadth
of the authors' knowledge and experience. It's literally packed with fascinating
architectural vignettes, on topics as diverse as the use and misuse of benchmarks,
interrupts, microcode, silicon die yields, cache strategies and trade-offs,
and the IBM 3990 I/O subsystem.
In addition, virtually every point in the book is supported and clarified
by historical anecdotes which reveal how the important features of modern
computer architectures were invented and refined. For example:
IBM brought microprogramming into the spotlight in 1964 with the IBM 360 family. Before this event, IBM saw itself as many small businesses selling different machines with their own price and performance levels, but also with their own instruction sets. (Recall that little programming was done in high-level languages, so that programs written for one IBM machine would not run on another.)In spite of such diversions, the book is so well-organized, and the material is developed so logically, that each conclusion as it is reached seems self-evident -- even inevitable.
Gene Amdahl, one of the chief architects of the IBM 360, said that managers of each subsidiary agreed to the 360 family of computers only because they were convinced that microcoding made it feasible -- if you could take the same hardware and microprogram it with several different instruction sets, they reasoned, then you must also be able to take different hardware and microprogram them to run the same instruction set. To be sure of the viability of microprogramming, the IBM vice president of engineering even visited Wilkes [who built the first microprogrammed CPU in 1958] surreptitiously and had a "theoretical" discussion of the pros and cons of microcode. IBM believed the idea was so important to their plans that they pushed the memory technology inside the company to make microprogramming feasible.
Stewart Tucker of IBM was saddled with the responsibility of porting software from the IBM 7090 to the new IBM 360. Thinking about the possibilities of microcode, he suggested expanding the control store to include simulators, or interpreters, for older machines. Tucker coined the term emulation for this, meaning full simulation at the microprogrammed level. Occasionally, emulation on the 360 was actually faster than the original hardware. Emulation became so popular with customers in the early years of the 360 that it was sometimes hard to tell which instruction set ran more programs.
Suppose we could improve the speed of the CPU in our machine by a factor of five (without affecting I/O performance) for five times the cost. Also assume that the CPU is used 50% of the time, and the rest of the time the CPU is waiting for I/O. If the CPU is one-third of the total cost of the computer, is increasing the CPU speed by a factor of five a good investment from a cost/performance standpoint?
The speedup obtained is:
1 1
Speedup = ------------- = ------ = 1.67
0.5 0.6
0.5 + ---
5
The new machine will cost:
At this point, the thoughtful reader might be inclined to reflect on the application of Amdahl's Law to more mundane, practical matters, such as the installation of 80386 accelerator boards into classic IBM PCs with 4.77 MHz, 8-bit I/O buses.2 1 --- * 1 + --- * 5 = 2.33 times the original machine 3 3Since the cost increase is larger than the performance improvement, this change does not improve cost/performance.