Branch instructions are recognized as a major impediment to exploiting instruction level parallelism. Even with sophisticated branch prediction techniques, many frequently executed branches remain di cult to predict. An architecture supporting predicated execution may allow the compiler to remove many of these hard-to-predict branches, reducing the number of branch mispredictions and thereby improving performance. We present an in-depth analysis of the characteristics of those branches which are frequently mispredicted and examine the e ectiveness of an advanced compiler to eliminate these branches. Over the benchmarks studied, an average of 27 of the dynamic branches and 56 of the dynamic branch mispredictions are eliminated with predicated execution support.
Scott A. Mahlke, Richard E. Hank, Roger A. Bringma