University of Teramo
Static compilers use profiling to predict run-time program behavior. Generally, this requires multiple input sets to capture wide variations in run-time behavior. This is expensive in terms of resources and compilation time. The authors introduce a new mechanism, 2D-proling, which proles with only one input set and predict whether the result of the profile would change significantly across multiple input sets. They use 2D-proling to predict whether a branch's prediction accuracy varies across input sets. The key insight is that if the prediction accuracy of an individual branch varies significantly over a profiling run with one input set, then it is more likely that the prediction accuracy of that branch varies across input sets.