computer—it’s a computer in
and of itself. Once you understand how this tiny computer works, you’ll have
a thorough grasp of the fundamental concepts that underlie all of modern
computing, from the aforementioned air traffic control system to the silicon
brain that controls the brakes on a luxury car.
This chapter will introduce you to the microprocessor, and you’ll begin
to get a feel for just how straightforward computers really are. You need
master only a few fundamental concepts before you explore the micro-
processor technologies detailed in the later chapters of this book.
To that end, this chapter builds the general conceptual framework on
which I’ll hang the technical details covered in the rest of the book. Both
newcomers to the study of computer architecture and more advanced readers
are encouraged to read this chapter all the way through, because its abstrac-
tions and generalizations furnish the large conceptual “boxes” in which I’ll
later place the specifics of particular architectures.
The Calculator Model of Computing
Figure 1-1 is an abstract graphical representation of what a computer does.
In a nutshell, a computer takes a stream of instructions (code) and a stream
of data as input, and it produces a stream of results as output. For the pur-
poses of our initial discussion, we can generalize by saying that the code stream consists of different types of arithmetic operations and the data stream consists of the data on which those operations operate. The results stream , then, is made up of the results of these operations. You could also say that the results
stream begins to flow when the operators in the code stream are carried out
on the operands in the data stream.
Instructions
Data
Results
Figure 1-1: A simple representation of
a general-purpose computer
NOTE
Figure 1-1 is my own variation on the traditional way of representing a processor’s arithmetic logic unit (ALU) , which is the part of the processor that does the addition, subtraction, and so on, of numbers. However, instead of showing two operands entering the top ports and a result exiting the bottom port (as is the custom in the literature), I’ve depicted code and data streams entering the top ports and a results stream leaving the bottom port.
2
Chapter 1
To illustrate this point, imagine that one of those little black boxes in the
code stream of Figure 1-1 is an addition operator (a + sign) and that two of
the white data boxes contain two integers to be added together, as shown in
Figure 1-2.
2
+
3
=
5
Figure 1-2: Instructions are combined
with data to produce results
You might think of these black-and-white boxes as the keys on a
calculator—with the white keys being numbers and the black keys being
operators—the gray boxes are the results that appear on the calculator’s
screen. Thus the two input streams (the code stream and the data stream)
represent sequences of key presses (arithmetic operator keys and number
keys), while the output stream represents the resulting sequence of numbers
displayed on the calculator’s screen.
The kind of simple calculation described above represents the sort of
thing that we intuitively think computers do: like a pocket calculator, the
computer takes numbers and arithmetic operators (such as +, –, ÷, ×, etc.) as
input, performs the requested operation, and then displays the results. These
results might be in the form of pixel values that make up a rendered scene in a
computer game, or they might be dollar values in a financial spreadsheet.
The File-Clerk Model of Computing
The “calculator” model of computing, while useful in many respects, isn’t the
only or even the best way to think about what computers do. As an alterna-
tive, consider the following definition of a computer:
A computer is a device that shuffles numbers around from place to
place, reading, writing, erasing, and rewriting different numbers