We present a new methodology for CPU performance evaluation based on the concept of an abstract machine model and contrast it with benchmarking. The model consists of a set of abstract parameters representing the basic operations and constructs supported by a particular programming language. The model is machine-independent, and is thus a convenient medium for comparing machines with different instruction sets. A special program, called the machine characterizer, is used to measure the execution times of all abstract parameters. Frequency counts of parameter executions are obtained by instrumenting and running programs of interest. By combining the machine and program characterizations we can and do obtain accurate execution time predictions. This abstract model also permits us to formalize concepts like machine and program similarity.
A wide variety of computers, from low-end workstations to high-end supercomputers, have been analyzed, as have a large number of standard benchmark programs, including the SPEC scientific benchmarks. We present many of these results, and use them to discuss variations in machine performance and weaknesses in individual benchmarks. We also present some of our results in evaluating optimizing compilers.