GIT-CERCS-07-03
    Subramanian Ramaswamy, Sudhakar Yalamanchili,
    Adaptive Cache Placement for Scientific Computation

    The central data structures for many applications in scientific computing are large multidimensional arrays. These arrays dominate memory accesses and are often accessed with strides that vary across orthogonal dimensions posing a central and critical challenge to develop effective caching strategies. We propose a novel technique to optimize cache placement for multidimensional arrays with the focus on minimizing conflict misses in the cache hierarchy. We propose architectural extensions for adaptive cache placement that are exercised under software control to reduce conflict misses for various access patterns to array data structures. Adaptive cache placement complements existing compiler optimizations, offering a new degree of freedom in optimizing the memory system performance and can be used by dynamic optimizers. Our implementation is compared to traditional caches for a range of common scientific loop based kernels and applications, and is observed to reduce, and in some cases, eliminate conflict misses in the L2 cache to array data structures. We explore the effect of cache parameters such as cache size and associativity on global miss rates, average memory access time, area and power for these benchmarks.