The structures that we call computer systems continue to grow in complexity, in size, and in diversity. This book is linked firmly to the nature of this growth. The book is about the upper levels of computer structure: about instruction sets, which define a computer system at the programming level; and about organizations of processors, memories, switches, input-output devices, controllers, and communication links, which provide the ultimate functioning system. These levels are just emerging into well-defined systems levels-with developed symbolic techniques of analysis and synthesis and accumulated engineering know-how, all expressed in a crystallized representation. These aspects of computer systems have always existed, of course, but only in rudimentary form. The classical four-box picture of a computer (arithmetic unit, memory, input-output, and control) is certainly an effective organization of components to process information. But multiple-processors hierarchies of memories and remote communications force the top level of organization into a distinct level, requiring analysis and rational design. Similarly, the 25 instructions of the IBM 701 computer (developed around 1953) is certainly an instruction set-indeed one worthy of study. But processors with dozens of registers and almost unlimited logical circuitry, again force the instruction set to become a topic of rational analysis and design.
This book is tied to the emergence of these upper levels of organization: eight years ago (a computer engineer's half dozen) would have been too early to write this book; eight years hence would be too late. Eight years ago the diversity and complexity of computer structures was not sufficient to justify the attention this book provides. This book would have been too thin. Eight years hence textbooks will exist that treat these levels systematically. This book will then appear too descriptive.
But right now, as these aspects of computer structure are emerging, and with systematic treatment still precluded, there is a need to make available material on these levels for systematic reference and study. Our choice has been to present a large set of examples, which illustrate the various design options and structural possibilities, both in instruction sets and in overall configurations- These examples are descriptions of actual computer systems, taken from the technical literature or from technical reports and manuals. Descriptions of actual systems are to be much preferred over idealized abstractions. The latter can reflect the real issues only after successful systematization.
Not only are the chapters about actual computers, they present much detail. The complexity of computers resides in part in their size and the multiplicity of their parts-e.g., to their having 200 instructions rather than 20, or having to service 50 Teletypes rather than 2. It seems essential to describe computer systems in their entirety, rather than via simplified vignettes. Again, this view stems from the existing state of the art. Eight years hence, it will not necessarily hold.
We fall from grace on all the above principles, providing occasionally descriptions of paper machines and partial descriptions of partial systems. But our feeling that detail and reality is important remains. This is why this book is so large; and fit for study rather than for reading.