Dynamic Snoop Filter Partitioning for Multi-Socket Cache Coherency
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
As core counts grow in modern processors, the trend towards multiple cache domains per processor socket necessitates fully on-die snoop filter solutions, which face challenges in state storage capacity and cost, limiting the effectiveness of snoop filters.
Innovation Solution
Implementing dynamic snoop filter partitioning techniques that optimize snoop filter storage capacity by using sectoring, implicit owner associations, and coarse grain vectors to reduce the number of bits required for tracking caches, while maintaining performance.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Reliability
If snoop filter storage capacity is increased to track every cache line in multi-socket systems, then snoop filter effectiveness is improved, but silicon cost becomes prohibitively expensive
Solution Approach 1:
The snoop filter is divided into multiple independent partitions, each tracking a subset of caches. This segmentation allows the total snoop filter capacity to be distributed across multiple smaller units, enabling multi-socket system coverage without requiring a single excessively large filter that would be prohibitively expensive in silicon area.
Solution Approach 2:
The patent introduces a time dimension by dynamically reconfiguring partition assignments across different time periods. Partitions are not statically assigned to specific sockets or caches but can be reassigned based on observed access patterns, allowing the same physical filter capacity to effectively track more caches over time.
2Area of stationary object
If snoop filter state storage is hidden in memory ECC bits, then silicon area is reduced, but this option is eliminated in multi-socket systems with multiple cache domains
Solution Approach 1:
The snoop filter is segmented into multiple partitions that can be independently configured and allocated. This segmentation enables the filter to adapt to multi-socket architectures by distributing tracking responsibilities across partitions, making the filter versatile enough to handle multiple cache domains while maintaining a compact on-die implementation.
Solution Approach 2:
The partition assignments and configurations are made dynamic rather than static, allowing the snoop filter to reconfigure itself based on the specific multi-socket system topology and cache access patterns. This dynamic adaptability enables the filter to work effectively in various multi-socket configurations without requiring dedicated hardware for each socket combination.
3Quantity of substance
If fewer, smaller snoop filter entries are used to cover more address space, then silicon cost is reduced, but tracking precision decreases
Solution Approach 1:
The patent adds a time dimension to cache tracking by dynamically reassigning partitions to different cache sets at different times. This temporal multiplexing allows a smaller number of physical filter entries to effectively track a larger number of caches across time, maintaining precision without requiring proportionally more filter capacity.
Solution Approach 2:
The snoop filter employs dynamic partition assignment where the mapping between filter partitions and cache sets changes based on observed access patterns. This dynamic behavior allows the filter to concentrate its limited capacity on the most actively accessed caches at any given time, maintaining high tracking precision with fewer entries than would be needed for a static approach.
Data Source
AI summary
An apparatus and method for dynamic snoop filter partitioning. One embodiment of a processor is coupled to a socket, the processor comprising: a plurality of cores; a plurality of caches to store cache lines read from memory by the plurality of cores; cache management circuitry to manage coherency of the cache lines; snoop handling circuitry comprising a snoop filter, the snoop handling circuitry to: track snoop filter allocations for local requests and remote requests to at least a first sub-partition of a first snoop filter over one or more time windows, the local requests comprising requests from the plurality of cores or other circuit blocks of the processor and the remote requests comprising requests from a different processor in a different socket; determine a victim snoop filter entry in the first snoop filter based, at least in part, on the tracked snoop filter allocations over the time windows.


