Page 155 - A Practical Guide from Design Planning to Manufacturing
P. 155

128   Chapter Five

        Introduction

        Although a processor’s architecture defines the instructions it can exe-
        cute, its microarchitecture determines the way in which those instruc-
        tions are executed. Of all the choices made in a processor design flow,
        microarchitectural decisions will have the greatest impact on the proces-
        sor’s performance and die area. Chapter 4 discussed how changes in
        architecture affect performance, but it is possible to build multiple
        processors that all support the same architecture with enormously dif-
        ferent levels of performance. The difference between such implementa-
        tions is their microarchitectures.
          By definition, architectural changes are visible to the programmer
        and require new software to be utilized. New architectural registers or
        SIMD instructions improve performance for programs that use them
        but will have no impact on legacy software. Microarchitectural changes
        are not visible to the programmer and can improve performance with no
        change in software.
          Because microarchitectural changes maintain software compatibility,
        processor microarchitectures have changed much more quickly than
        architectures. Like almost all other changes in the semiconductor indus-
        try, Moore’s law has driven this progress. The microarchitectural con-
        cepts in use today were not totally unknown to past designers; they
        were simply impractical. As Moore’s law allows larger and larger tran-
        sistor budgets, old microarchitectural ideas that were too complex to be
        implemented become possible.
          Imagine writing a word processing program. The program should pro-
        vide as much functionality and ease of use as possible, but must be lim-
        ited to 10,000 lines of code. With this restriction, this word processor will
        be a very crude program indeed. If after two years, a new word proces-
        sor is created using twice as many lines of code, there could be signifi-
        cant added functionality. If this pattern were to repeat, in 10 years a
        word processor written using over 300,000 lines of code might be dra-
        matically more sophisticated. This does not mean that the earliest ver-
        sion was poorly designed; merely that it had different design constraints.
          Growing transistor budgets allow microarchitects more resources to imple-
        ment higher performance processors. An early design might include a single
        adder whereas a later design might include two, allowing more processing
        to occur in parallel. Inevitably other changes are needed to make efficient
        use of the ability to execute more instructions in parallel. The most successful
        way of performing more work in parallel has been through pipelining.

        Pipelining

        Most microarchitectural improvements have focused on exploiting
        instruction level parallelism (ILP) within programs. The architecture
   150   151   152   153   154   155   156   157   158   159   160