To simplify the benchmark characterization and clustering, we have grouped the 109 AbOps into 13 "reduced parameters," each of which represents some aspect of machine implementation; these parameters are listed in Table XIII.
Note that since the machine characterizer measures the run-time for all AbOps, it is possible to accurately estimate the performance of any characterized machine for any AbOp distribution, without having to run any benchmarks.
What this means is that if two benchmarks differ widely in the AbOps that they use most frequently, the chances are that they will give inconsistent performance comparisons between pairs of machines (relative to other benchmarks), and conversely.
We do not successfully capture aspects of machine architecture which are manifested only by the performance of certain sequences of AbOps, and not by a single AbOp in isolation--e.g., the IBM RS/6000 multiply-add instruction; we discuss this further below.
A special benchmark called a machine characterizer is used to measure experimentally the time it takes to execute each abstract operation (AbOp).
It does this by, in most cases, timing a loop both with and without the AbOp of interest; the change in the run-time is due to that operation.
In the static phase, we count the number of occurrences of each AbOp in each line of source code.
Each line gives the number of times that a particular AbOp is executed and the fraction of the total that it represents.
Portion of AbOp Executions Accounted for by 2 Most Frequent, 5 Most Frequent, etc.