The Potential of Thread-Level Speculation based on Value Profiling

A.DeWitt and T. Gross


As processors continue to provide more and more parallelism, compilers have to keep up to identify operations that can execute independently, e.g. by exploiting program properties like independent loop iterations or independent operations. Lately, various researchers have identified {\em value locality} as a potentially interesting program property: many operations produce predictable values for each execution of a program. We are interested in taking advantage of this property when compiling for a processor with thread-level parallelism. The key idea is to use predictable values to relax dependence constraints: either possible memory conflicts that rarely occur or true register dependences whose values are highly predictable. In this paper we describe our approach and present preliminary results for a partitioner that uses value profiling to group the operations of a loop body into independent threads for parallel execution.