Introduction
Department of Computer Science
The University of Chicago
Last modified: Fri Jan 22 10:09:06 CST 1999
Course topic, goals
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:
- just to know stuff, because you're an intellectual;
- to get a job designing and building computers;
- to get a job designing and building circuitry that resembles
computers;
- to make more intelligent use of computers;
- to understand better the impact of continuing improvement in computers.
This course will certainly not prepare you to compete with the major
computer manufacturers, or to take leadership jobs with them. But, you
will learn the basic principles behind good computer architecture, and
follow the application of those principles in a few of the components
of design that are particularly important today. This should provide a
foundation of understanding allowing you to achieve any of the goals
above with (lots of) additional reading and experience. In particular,
after this course, you should be able to read and understand the large
amount of material in the textbook on your own, even though we can
only study less than half of it in class (roughly, Chapters 1, 2, 3, 5
and some of 6, 8).
Why are computer systems peculiar?
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.
- Organizational qualities of computer systems:
- Although computers are made of electronic material, their
complexity is comparable to a detailed map of the whole USA, and
their structure is more like a huge bureaucracy than a mechanical
device, such as a bulldozer.
- Dynamic qualities of computer systems:
- The tools and components available to create computers and their
applications, and the context in which the final products must act,
change so rapidly that the economics of computing are determined
more by the rate of change than by the current state of the
art.
For example, the performance of a radiant element for a microwave oven
can be characterized pretty well by 2 or 3 numbers, giving its power
output and some indication of how that power is distributed around the
oven. These 2 or 3 numbers determine pretty well how lots of different
dishes will cook. By contrast, the performance of a computer varies
radically according to the program that it is running, and the other
things that it is doing at the same time, so the number of parameters
of performance is immense. When you buy a microwave oven, you pay for
its cooking performance, plus some fuzzier qualities having to do with
how it fits in your kitchen, aesthetics, convenience. When you buy a
computer, you are paying for a window in time. You can get the same
performance by paying more now, or less in a few months, so in essence
a higher price buys early delivery more than better performance. And,
the context in which you determine performance requirements changes
rapidly (newer releases of software require more performance), so a
higher price buys a greater scope of compatibility.
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.
Levels of organization and abstraction in computing systems
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 |
Application software, compiler, and operating system are various sorts
of computer programs. The machine instruction set is, in effect,
software also, but not necessarily realized in a specific programming
language. The VLSI design tools are computer programs again, and for a
specific set of design tools the instruction set is expressed in the
silicon programming language used by those tools. Only the last two
levels, fabrication tools and the machine implementation, are material
devices. The table above has a natural order to it, but the relation
between each adjacent pair involves a different conceptual
dimension.
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 |
Programming languages, compilers, and operating systems deal with the
functional specification of a computer: on such an input it produces
such a result. This course focuses on control/dataflow design, which
organizes a computer into functional units (arithmetic unit, cache,
memory, bus, etc.), because that's where most of the computationally
interesting action is today. Boolean arithmetic and abstract circuits
take computer design to the level of detail of individual wires and
components, but ignore the specific electronic qualities of the wires
and components. Electronics is the deepest level of detail that we
will look at. I listed particle physics to remind you that every stopping point is arbitrary.
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.
Maintained by Michael J. O'Donnell, email:
odonnell@cs.uchicago.edu