Extending data prefetching to co-operative caching
Recently, cache designers have been turning to highly selective prefetching (HighSP) for significant breakthrough in cache performance. These schemes are all very accurate, but their effectiveness is always limited to their selected reference sets — array accesses with constant strides. To enhance HighSP performance, the coverage of their selected reference set needs to be expanded without sacrificing the prefetch accuracy. Also, the working set of the highly temporal, non-selected data in cache should not be disturbed by the prefetched data even if the prefetching is correct. In this paper, we propose three co-operative cache techniques to improve the performance of current HighSP schemes:  default prefetching to increase the overall prefetch coverage,  block concept to perform additional accurate prefetching in the presence of free bus cycles, and  a separate data buffer with load balancing to reduce interference between the spatial selected data and the temporal non-selected data. Trace driven simulation showed that cache performance can be improved significantly with some extra co-operative cache hardware.