This book presents many examples of computer systems. It presents them in enough \detail so that meaningful engineering study and analysis are possible. Most of these examples are presented by using the original descriptions of them in the technical literature. Others have been redescribed by us, especially where the original descriptions existed only in technical manuals. In both cases there are considerable discussion and analysis of the computer structures: what problems they were intended to solve, what solutions were adopted, and how these solutions have fared. Yet the emphasis has remained on detailed descriptions precise enough so that the systems themselves are available for independent study.
Why should one want to produce such a book? Collections of reprintings from the technical literature are common in many science and engineering fields, e.g., "Programming Systems and Languages [Rosen, 1967]. We have departed from this traditional exercise in two ways, both of which seem important to us. First, we have presented substantial amounts of detail: in effect, block diagrams of computer structures and the equivalents of programming manuals. These constitute neither good reading nor a way of communicating the "essential ideas" in the field. Second, we have introduced a system of notation and have used it not only in the parts we ourselves have written but also to provide additional (sometimes redundant) descriptions of computer systems in the reprinted articles. Why should there be a book like this? The reasons are several and require some background discussion.
Computer systems are one example of man's more complex artificial systems.1 They have existed as successful engineering products long enough to undergo radical evolution and to give rise to a number of basic, unique technologies. They are sufficiently complex that they have given rise to a science, that is, to a continuing, institutionalized endeavor to understand what sort of beast has been brought forth.2 Our fundamental interest is in the development of this science and technology of computers (one of us also likes to build computers). To understand why this particular book seems to us to be the right way to push this development at this particular time requires characterizing the current state of computer-systems technology.
A computer system is complex in several ways. Figure 1 shows the most important. There are at least four levels of system description, possibly five, that can be used for a computer. These are not alternative descriptions in the sense that anything said one way can be said another. On the contrary, each level arises from abstraction of the levels below it. Each does a job that the lower levels could not perform because of the unnecessary detail they would be forced to carry around.
A system (at any level) is characterized by a set of components, of which certain properties are posited, and a set of ways of combining components to produce systems. When formalized appropriately, the behavior of the systems is determined by the behavior of its components and the specific modes of combination used.
Fig. 1. Hierarchy of levels: computer structure.
1 We need not argue that they are his most complex system. That view is myopic. Setting aside quasi-natural systems, such as cities and economies, it is still the case that a modern aircraft carrier is more complex than a modern computer by any reasonable measure.
2Here uniqueness can be claimed, perhaps, since few other artifactual systems (again, excluding the quasi-natural ones) provide new phenomena that require sustained scientific investigation to understand them. There certainly is no science of aircraft carriers. But there is a computer science.