Accurate microprocessor simulation via performance profiling
MetadataShow full item record
Fast and accurate microprocessor simulation has long remained a challenge in the design and evaluation of new microprocessors. This problem only continues to exacerbate as underlying microarchitectures become more complicated and slow down simulation speed further, while the code size of popular benchmark suites continues to explode exponentially. Many techniques have been proposed and put into use to reduce simulation cost while maintaining a high degree of accuracy, but no technique is perfect and even the most popular and accurate approaches suffer from severe drawbacks. In this thesis, I propose a different approach by a simulation methodology, which I call PerfPoint, that profiles the performance of benchmarks running on existing hardware, and using those performance profiles to extract small intervals of instructions from the code stream. Simulating these instruction segments, or perfpoints, and weighting the results by the amount of the benchmark that each is intended to represent results in very accurate results at a minimal simulation cost. The collected performance data is dependent on the microarchitecture and susceptible to various sources of noise. The reliance of the simulation methodology on this data as a foundation is a grave concern. Much of this thesis is dedicated to quantifying the negative effects present in this data as well as building a case for the acceptable use of this data as a basis for a simulation methodology. The PerfPoint methodology is validated using multiple architectures, a large array of benchmarks, and a substantial number of configuration parameters for PerfPoint. I report that for the SPEC CPU 2000 integer benchmark suite, using my methodology results in less than [plus or minus]1% CPI error for all configurations of PerfPoint and all datasets used. These CPI percent error margins are obtained by simulating between 0.076% and 2.425% of the entire benchmark suite, depending on the PerfPoint configuration parameters that are used.