The peLIFO interface class (written in C++) is provided below. This interface should be used with the main LLC simulator. The LLC simulator has to make the appropriate calls to the peLIFO class methods. Please see peLIFO.h for details on the methods and the expected interface with the LLC. Before using this code, one should read the MICRO'09 paper and the brief note on the extended results. The set sampling technique explained in the extended note is useful for understanding the code. The code for set sampling is designed specifically for sixteen set samples per policy in a bank-pair. For a different number of samples, the code should be modified appropriately. From my experience, this is where the major tuning is needed. Too many set samples usually degrade the performance of workloads that are not peLIFO-friendly.

The code provides two possible ways of approximating the escape probabilities. The default is the one discussed in MICRO'09 paper. This technique approximates the hit counts by the next power of two. A second technique provided in the code approximates a hit count h in (2^(k-1), 2^k] to the next power of two 2^k if h is bigger than or equal to (2^k + 2^(k-1))/2; otherwise h is approximated to 2^(k-1). This second approximation technique can be enabled by adding MIDPOINT_EP_APPROX to the define list at compilation time.

The README file details the expected interface with the LLC and shows an example.

README
peLIFO.h
peLIFO.cc (Note on tuning here)

Updated: 06-MAR-2010