Dynamic Code Value Specialization Using the Trace Cache Fill Unit

Weifeng Zhang, Steve Checkoway, Brad Calder and Dean Tullsen

International Conference on Computer Design (ICCD), Oct 2006


Value specialization is a technique which can improve a program's performance when its code frequently takes the same values. In this paper, speculative value specialization is applied dynamically by utilizing the trace cache hardware. We implement a small, efficient hardware profiler to identify loads that have semi-invariant runtime values. A specialization engine off the program's critical path generates highly optimized traces using these values, which reside in the trace cache. Specialized traces are dynamically verified during execution, and mis-specialization is recovered automatically without new hardware overhead. Our simulation shows that dynamic value specialization in the trace cache achieves a 17% speedup, even over a system with support for hardware value prediction. When combined with other techniques aimed at tolerating memory latencies, this technique still performs well -- this technique combined with an aggressive hardware prefetcher achieves 24% better performance than prefetching alone.