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

142   Chapter Five

        for extremely specific sequences of instructions that happen to appear
        in important benchmarks. These optimizations may not help real appli-
        cations at all or may even be detrimental for most programs. There
        have even been stories of compilers that turn on different optimizations
        depending on whether the program file being compiled has the same
        name as particular benchmark programs. To provide consistent results,
        each benchmark must choose which compiler optimizations are allowed
        by trying to pick those that could be used to achieve similar perform-
        ance improvements for real programs.
          Ultimately any benchmark measures not only processor performance
        but also computer performance. It is impossible for the processor to run
        any program at all without the support of the chipset and main memory,
        but these components are also important in the overall computer per-
        formance. A processor design that dedicates a large amount of die area to
        cache may suffer relatively little performance loss when used with a slower
        chip set or memory. Another processor that uses the same die area for more
        functional units could potentially achieve higher IPC, but it is more
        dependent upon the performance of the memory system. The computer
        system used for the benchmarking could end up determining which of
        these processors is rated as the fastest.
          Huge sums of money are at stake when well-known benchmark results
        are reported. There is enormous pressure on every company to make its
        processors appear in the best possible light. To try and regain some con-
        trol of how their products are measured, some companies create their own
        benchmarks. Inevitably every company’s benchmarks seem to show their
        own processors with higher relative performance than the benchmarks
        created by any of their competitors. Unrealistic choices of benchmark
        programs, complier optimizations, and system configurations are all pos-
        sible ways to “cheat” benchmarks. Truly fair comparisons of performance
        require a great deal of effort and continued vigilance to keep up with the
        changing world of hardware and software.


        Microarchitectural Concepts

        Modern processors have used pipelining and increased issue width to exe-
        cute more instructions in parallel. Microarchitectures have evolved to deal
        with the data and control dependencies, which prevent pipelined proces-
        sors from reaching their maximum theoretically performance. Reducing
        instruction latencies is the most straightforward way of easing dependen-
        cies. If results are available sooner, fewer independent instructions must
        be found to keep the processor busy while waiting. Microarchitectures can
        also be designed to distinguish between true dependencies, when one
        instruction must use the results of another, and false dependencies,
   164   165   166   167   168   169   170   171   172   173   174