Abstract
Cache coherence is very important in modern heterogeneous computing systems as well as multicore systems to ensure all processors, or bus masters in the system maintain the consistent data in their local cache memory. The simplest mechanism of cache coherency is to broadcast a snoop request to all processor caches and then each cache receiving the snoop request performs a cache tag lookup to determine whether it has the data. Because for most workloads the majority of cache tag lookups performed as a result of snoop requests will miss and waste power, Snoop filters have been widely adopted to reduce power consumption by filtering out unnecessary cache tag lookup for cache coherence. However, snoop filters also suffer the same problem that huge amount of power is consumed by false positive predictions of snoop filters. Substantially, designing an efficient snoop filter has to make tradeoff decisions between filter rate and hardware overhead. Traditionally, snoop filter rate can be enhanced by increasing memory capacity, but the burden caused by the hardware overhead. In this paper, we propose an efficient adaptive mechanism which can be applied to snoop filters to improve snoop filter rate with low hardware overhead. The basic idea of the adaptive mechanism is to duplicate multiple copies of small snoop filters and distribute cache tags evenly to the duplicated copies according to the analytics of operating systems. The adaptive mechanism can effectively improve filter rate by reducing false positive predictions. Experimental results show that applying the adaptive mechanism to JETTY snoop filters achieves an average of 19.17% and 76.1% improvement on filter rate and memory reduction, respectively for Splash 2 benchmarks.