Department of Computer Science
  
    The University of Chicago
  Last modified: Fri Jan 22 10:09:06 CST 1999
The word ``computer'' refers simultaneously to a completely abstract mathematical system, and to an electronic device that you can buy in the store. The precision, power, flexibility, and durability of computer software rely on the computer as a formal mathematical definition; the usefulness relies on the electronic realization. In Com Sci 222 and 322 we investigate the engineering organizational principles that connect abstract mathematical computers to commercially viable electronic realizations. In order to appreciate the value of these organizational principles, we must learn how the qualities of an electronic implementation determine the performance of a computer, and some rudimentary economic issues as well.
The principles of organization in electronic computers are often called ``computer architecture,'' although they bear little resemblance to the principles of architecture relating to buildings. There are several good reasons to study computer architecture:
People have been creating and using tools for millenia, but computing systems have such a different structure, and particularly such a different economic context, that attempts to deal with them by analogy to other engineering projects have failed miserably. The material with which we build computers is electronic, and aside from the tininess of the components, the material issues are fairly conventional. But, the qualities that drive the design of computer systems are not material so much as organizational and dynamic.
The peculiarity of decision-making in computing systems is illustrated by some amusing data in More Programming Pearls by Jon Bentley (Addison-Wesley, 1988, pp. 157-158). Imagine yourself in 1969, and you need to solve the 1024x1024x1024 Poisson's equation (a particular 3-dimensional system of elliptic partial differential equations). The best numerical method that you can find is called SOR Iteration, and the fastest computer is the CDC 7600 at 5 megaflops. Obviously, your best course is to run SOR on the 7600, right? Well, you will still be less than half done in 1976. I will wait until 1976, use a Cray-1 at 50 megaflops and the Cyclic Reduction method, solving the problem in a matter of hours and winning the race by a long margin.
To deal with the great complexity of computer systems, we consider
them in pieces, each of which is somewhat more manageable than the
whole. Some of these pieces are material, and some of them purely
conceptual. The creation of a useful computer application involves the
following pieces, which are usually created by completely different
groups of people.
| Application software | 
| Compiler | 
| Operating system | 
| Machine instruction set | 
| VLSI design tools | 
| VLSI fabrication tools | 
| Machine implementation | 
For a specific computer, there is also a hierarchy of
organizational levels in the design and implementation of the
computer
| Functional specification | 
| Control/dataflow design | 
| Boolean arithmetic | 
| Abstract circuit | 
| Electronics | 
| Particle physics | 
It's tempting to assign a greater degree of ``reality'' to the electronic level (particularly tempting to electrical engineers). Strangely, the more abstract levels of the organizational hierarchy are often more durable, and arguably more real. The application programs and compilers written for a given functional specification often survive when a particular electronic realization becomes obsolete. Also, consider what happens when an electronic realization fails to agree with a functional specification. We take the computer back and demand a repair or replacement. So, it appears that we often give priority to the abstraction, and in a sense it is more real than the material implementation.
Although most of this course is concerned with control/dataflow design, it is important to appreciate how all of the levels fit together. So, we will first survey the organizational hierarchy, from functional specification down to electronics. we will anchor this discussion in the middle, with a study of boolean artithmetic and abstract circuits.
  odonnell@cs.uchicago.edu