"Toward a Compiler Framework for Thread-Level Speculation"

Dr. Marcelo Cintra

University of Edinburgh (Scotland, UK)

Modern architectures and compilers rely on a portfolio of optimizations to achieve high performance. Use of many of such optimizations requires a complete knowledge of the program's control and data flow graphs to ensure correct execution. Unfortunately, exclusive use of such safe optimizations is providing diminishing returns. In many cases, apparently unsafe optimizations may turn out to be correct most of the times. Based on these observations, we advocate the use of speculative optimizations, both in the architecture and in the compiler.

In the first part of this talk we present some of our recent work on a compiler framework for quantitatively estimating the overheads associated with one particular speculative optimization, namely speculative parallelization. We show that our framework, one of the first to provide a quantitative cost-driven analysis, accurately estimates the load imbalance overhead and provides better overall performance than previous compiler heuristics.

In the second part of this talk we discuss some other research directions we are pursuing in the context of compiler and architectural speculative optimizations. These include probabilistic compile-time memory disambiguation and the use of "helper threads" to allow speculative scalar and loop optimizations.