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.
   59   60   61   62   63   64   65   66   67   68   69