|
Abstract : |
The performance of cache memories relies on the locality exhibited by programs. Traditionally this locality has been divided into temporal and spatial, and conventional caches exploit both types of locality. For the sake of simplicity, cache memories manage all memory references in the same way regardless of their locality. This homogeneous treatment has an important drawback: references either with only temporal locality or without locality bring useless data into cache. This results in an unnecessary increase in memory access time and memory bandwidth, in addition to the penalties introduced by potentially removing useful data from the cache. In a previous paper, we proposed two novel organizations called Selective Cache and Dual Data Cache as an attempt to avoid this loss of performance by managing each memory reference in a different way depending on its type of locality. In those proposals, the locality of each reference was dynamically estimated at run-time based on its history. In this paper, we present a novel design of the Selective and Dual Data Caches in which the locality estimation is based on a locality analysis performed at compile-time. We show that previous proposals on locality analysis are not appropriate when the programs have a high conflict miss ratio. This paper extends this locality analysis by introducing a compile-time interference analysis that significantly improve the performance of the system. 1., |