Effective padding of multidimensional arrays to avoid cache conflict misses
Abstract
Caches are used to significantly improve performance. Even with high
degrees of set associativity, the number of accessed data elements mapping
to the same set in a cache
can easily exceed the degree of associativity. This can cause
conflict misses and lower performance, even if the working set
is much smaller than cache capacity.
Array padding (increasing the size of array dimensions)
is a well-known optimization technique that can reduce conflict misses.
In this paper, we develop the first algorithms for optimal padding of
arrays aimed at a set-associative cache for arbitrary tile sizes. In
addition, we
develop the first solution to padding for nested tiles and
multi-level caches.
Experimental results with multiple benchmarks
demonstrate a significant performance improvement from padding.