The Potential of Thread-Level Speculation based on Value Profiling
A.DeWitt and T. Gross
Abstract
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.