Page 64 -
P. 64
2.2 / DESIGNING FOR PERFORMANCE 39
Workstation systems now support highly sophisticated engineering and scien-
tific applications, as well as simulation systems, and have the ability to support
image and video applications. In addition, businesses are relying on increasingly
powerful servers to handle transaction and database processing and to support
massive client/server networks that have replaced the huge mainframe computer
centers of yesteryear.
What is fascinating about all this from the perspective of computer organiza-
tion and architecture is that, on the one hand, the basic building blocks for today’s
computer miracles are virtually the same as those of the IAS computer from over
50 years ago, while on the other hand, the techniques for squeezing the last iota of
performance out of the materials at hand have become increasingly sophisticated.
This observation serves as a guiding principle for the presentation in this book.
As we progress through the various elements and components of a computer, two
objectives are pursued. First, the book explains the fundamental functionality in
each area under consideration, and second, the book explores those techniques re-
quired to achieve maximum performance. In the remainder of this section, we high-
light some of the driving factors behind the need to design for performance.
Microprocessor Speed
What gives Intel x86 processors or IBM mainframe computers such mind-boggling
power is the relentless pursuit of speed by processor chip manufacturers.The evolu-
tion of these machines continues to bear out Moore’s law, mentioned previously. So
long as this law holds, chipmakers can unleash a new generation of chips every three
years—with four times as many transistors. In memory chips, this has quadrupled
the capacity of dynamic random-access memory (DRAM), still the basic technology
for computer main memory, every three years. In microprocessors, the addition of
new circuits, and the speed boost that comes from reducing the distances between
them, has improved performance four- or fivefold every three years or so since Intel
launched its x86 family in 1978.
But the raw speed of the microprocessor will not achieve its potential unless it
is fed a constant stream of work to do in the form of computer instructions. Any-
thing that gets in the way of that smooth flow undermines the power of the proces-
sor. Accordingly, while the chipmakers have been busy learning how to fabricate
chips of greater and greater density, the processor designers must come up with ever
more elaborate techniques for feeding the monster. Among the techniques built
into contemporary processors are the following:
• Branch prediction: The processor looks ahead in the instruction code fetched
from memory and predicts which branches, or groups of instructions, are likely
to be processed next. If the processor guesses right most of the time, it can
prefetch the correct instructions and buffer them so that the processor is kept
busy.The more sophisticated examples of this strategy predict not just the next
branch but multiple branches ahead. Thus, branch prediction increases the
amount of work available for the processor to execute.
• Data flow analysis: The processor analyzes which instructions are dependent
on each other’s results, or data, to create an optimized schedule of instructions.