**38 Part 1 The structure of computers
**

from the viewpoint of a computer system with remote terminals, these are structural parameters.

Typically, design proceeds in a context in which the function of the to-be-developed system is taken as given and certain structures are available; the problem is to construct a structure that achieves adequate performance.

These terms apply to any designed system. For example, consider automotive vehicles. Function is a classification by use: cars to carry people, trucks to carry goods, racers to win competitions, antiques to satisfy nostalgia and collectors' pride. Performance is those aspects of behavior relevant to function: maximum speed, power-to-weight ratio, cargo capacity, run versus not run for an antique, and so on. Structure is such things as number of wheels, shape of the vehicle, stroke volume, and gear ratios. Structure determines performance, although from the standpoint of design, of course, causality runs the other way: from function to performance to structure.

There are, then, three main ways to classify or describe a computer system: according to its function, its performance, or its structure. Each consists in turn of a number of dimensions. It is useful to think of all these dimensions as making up a large space in which any computer system can be located as a point. In such a space all the thousand computer types built to date constitute a sparse scatter, clustering (it is to be hoped) in various regions that make sense functionally and economically. The 40 computer types in this book sample this larger scatter in some way, to give a picture both of the entire space and of the part already explored.

How many dimensions are there in this computer space? Indefinitely many, if one wants to locate a computer with ultimate precision. In fact, if one wants to go all the way, one might as well give the PMS and ISP descriptions (and down through the RT, logic, circuit, and device levels). The virtue of thinking of such a space is to abstract to a small number of dimensions, and to select those that are most relevant. Of the functions, one wants those that most influence the design; of the performance, one wants those that make the largest difference; of structure those that not only affect performance but represent possible design choices by the computer engineer. In addition, one wants dimensions along which there is significant variation. Those aspects of computer systems which are common to all, such as the use of binary devices, though of supreme interest are not part of the computer space.

What are the dimensions of the computer space? As we remarked earlier, there is no sufficiently comprehensive theory of computer systems to tell us. Considerable lore has grown up from experience to date in designing machines. But at some point one must simply propose a set of dimensions and let them justify themselves after the fact. Table 1 gives our set for function and structure. Table 3 (page *52) *gives our set for performance. Table 1 gives only a single dimension for computer system function and 19 for computer structure; Table 3 gives 8 for performance. However, the dimensions are not all independent. Many of the structure dimensions are highly (though not perfectly) correlated. Thus, in Table 1 we have put the structure dimensions in seven horizontal groups, with the one at the left-hand side being the most relevant. (In the first structure group, we have also added two temporal dimensions, since a strong correlation with time exists.) For performance, the dimensions form a tree structure, where the higher dimensions are essentially aggregate summaries of the lower ones. Finally, there is a general correlation between overall performance and the various structure dimensions, in Table 1, with increasing performance as one moves down the dimensions. We have left off two important dimensions because we do not have values; these are reliability (mean time between failures per operation) and physical size density (e.g., bits/ft^{3}), both of which increase with generation.

With each dimension we have indicated the range of possible values. For some (Pc.speed, for example) this is a numerical quantity. However, for most, the range is a discrete set of design choices, which may or may not have a simple ordering. Clearly, these discrete values are selections from a meaningful subspace of design choices, but mostly we do not know how to construct that subspace. The values given are those that have arisen in practice, and they serve to classify the computers in the book. Obtaining a more rational subspace is a task for future research.

The body of the chapter will be taken up with a discussion of each of these dimensions, where we will discuss further their definition, the basis for their selection, and the reasons behind the arrangements of Tables 1 and 3. We give the entire set of dimensions here at the beginning, both for later reference and to emphasize the view of a single computer space in which computer systems can be located. We will refer to Tables 1 and 3 from now on simply as the computer space or, more narrowly, as the computer structure space, the computer performance space, etc.

History

Like all systems subject to variation and selection, computers have evolved through time. So striking and rapid has been this evolution that the concept of "generation" has become firmly embedded in the computer engineering culture (to say nothing of the marketing culture and the view of the lay public). It is at best an ambiguous term, having none of the sharpness of its root term in biological evolution, where it is possible to draw a strict genealogical tree.