Phase Tracking and Prediction

Authors: Tim Sherwood, Suleyman Sair, Brad Calder
Venue:    ISCA 2003
The primary goal of this paper is to develop a phase detection and prediction mechanism that can guide optimizations for large-scale program behavior. The phases are detected based on the code being executed. Unlike Dhodapkar and Smith's work, their technique uses a basic block vector approach that also encapsulates time spent executing each code block. This paper also uses branch IP's to build basic block vectors, but, hashes them rather than using random projection. They show that a relatively small hash (32 buckets) is sufficient. Additionally, most of the programs execution can be captured using just 20 unique phase ID/signatures. To determine is a new vector is a new phase, they use the L1 distance set to an emperically determined threshold value. To determine the quality of phases, they look at the standard deviation of various counters on the global scale and for individual phases, showing that each phase is far more stable for a variety of metrics. This is nearly identical to our CV Ratio. For phase prediction, they use a Run Length Encoded (RLE) Markov Predictor. For more details, see the paper on how this works. They then go on to show some potential dynamic adjustments such as variable cache size, frequent values, and dynamic processor width.

Full Text

Comments

Popular posts from this blog

Fundamental Latency Trade-offs in Architecting DRAM Caches (Alloy Cache)

ZCOMP: Reducing DNN Cross-Layer Memory Footprint Using Vector Extensions

AutoFDO: Automatic Feedback-Directed Optimization for Warehouse-Scale Applications