IP Library Granted Patent US 12,536,103
Granted Patent B1
US 12,536,103 · App. 18/623,464 · Granted Jan 27, 2026

Dynamic snoop-filter allocation for large-scale memory coherent system

Inventors: Liran Fishel (Ra'Anana, IL); David Dayan (Kfar Vitkin, IL)
Assignee: Google LLC
G06F12/0822G06F12/0831
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 12,536,103
App. No.
18/623,464
Granted
Jan 27, 2026
Kind
B1
Abstract

Aspects of the disclosed technology include techniques and mechanisms for dynamic snoop-filter allocation for large-scale memory coherent systems. A coherency manager on an interconnect manages a directory storing data that indicates a current state of each cache line stored within each caching agent on the interconnect and a number of caching agents that share a cache line. Based on receiving a request from a caching agent to access to a cache line, the coherency manager uses a capacity of the directory, such as the number of caching agents that share a cache line, to determine whether to change an operation mode of a memory from a first mode to a second mode.

Claims (63)

1 . A method for switching between modes of memory, the method comprising:

operating the memory in a first mode, wherein the first mode maintains a current state of a cache line in a directory using indices, an index of the directory corresponding to a caching agent storing a copy of the cache line;

comparing a count of caching agents sharing the cache line to a threshold directory capacity, wherein the threshold directory capacity indicates a maximum number of caching agents that can be tracked in the directory;

determining that the count is greater than the threshold directory capacity;

based on determining that the count is greater than the threshold directory capacity, dynamically changing operation of the memory from the first mode to a second mode by generating a bitmap, wherein a bit of the bitmap indicates at least one caching agent within a group of caching agents stores a copy of the cache line; and

operating the memory in the second mode using the bitmap.

2 . The method of claim 1 , further comprising:

receiving, from a first caching agent, a request to access the cache line; and

increasing the count.

3 . The method of claim 2 , further comprising:

determining that the count is less than or equal to the threshold directory capacity; and;

based on determining that the count is less than or equal to the threshold directory capacity, querying the directory using a cache line address to identify a second index of a second caching agent storing the copy of the cache line.

4 . The method of claim 3 , further comprising transmitting a snoop to the second caching agent, the snoop comprising instructions to:

transmit the copy of the cache line to the first caching agent;

invalidate the copy of the cache line; or

change a state of the cache line.

5 . The method of claim 3 , further comprising:

determining, based on querying the directory, none of the caching agents in the directory store the copy of the cache line;

retrieving, in response to determining none of the caching agents in the directory store the copy of the cache line, the copy of the cache line from a main memory; and

transmitting the copy of the cache line to the first caching agent.

6 . The method of claim 5 , further comprising:

assigning the index to the first caching agent; and

generating a record in the directory, the record indicating that the first caching agent stores a copy of the cache line.

7 . The method of claim 1 , further comprising:

receiving, from a first caching agent, a request to remove the cache line from a memory associated with the first caching agent; and

decreasing the count.

8 . The method of claim 1 , further comprising, based on receiving a request to access the cache line, transmitting multicast snoops to one or more groups to identify the caching agent storing the copy of the cache line.

9 . A system for switching between modes of memory, the system comprising:

a first caching agent;

a second caching agent;

an interconnect configured to connect the first caching agent, the second caching agent, and a caching agent manager; and

the caching agent manager comprising one or more processors configured to:

operate the memory in a first mode, wherein the first mode maintains a current state of a cache line in a directory using indices, an index of the directory corresponding to a caching agent storing a copy of the cache line;

compare a count of caching agents sharing the cache line to a threshold directory capacity, wherein the threshold directory capacity indicates a maximum number of caching agents that can be tracked in the directory;

determine that the count is greater than the threshold directory capacity;

based on determining that the count is greater than the threshold directory capacity, dynamically change operation of the memory from the first mode to a second mode by generating a bitmap, wherein a bit of the bitmap indicates at least one caching agent within a group of caching agents stores a copy of the cache line; and

operate the memory in the second mode using the bitmap.

10 . The system of claim 9 , wherein the one or more processors are further configured to:

receive, from the first caching agent, a request to access the cache line;

increase the count;

determine that the count is less than or equal to the threshold directory capacity; and

based on determining that the count is less than or equal to the threshold directory capacity, query the directory using a cache line address to identify a second index of the second caching agent storing the copy of the cache line.

11 . The system of claim 10 , wherein the one or more processors are further configured to:

determine, based on querying the directory, none of the caching agents in the directory store the copy of the cache line;

retrieve the copy of the cache line from a main memory based on determining none of the caching agents in the directory store the copy of the cache line; and

transmit the copy of the cache line to the first caching agent.

12 . The system of claim 9 , wherein the one or more processors are further configured to, based on receiving a request to access the cache line, transmit multicast snoops to one or more groups to identify a caching agent storing the copy of the cache line.

13 . A non-transitory computer readable storage medium storing instructions that, when executed by one or more processors for switching between modes of memory, cause the one or more processors to:

operate the memory in a first mode, wherein the first mode maintains a current state of a cache line in a directory using indices, an index of the directory corresponding to a caching agent storing a copy of the cache line;

compare a count of caching agents sharing the cache line to a threshold directory capacity, wherein the threshold directory capacity indicates a maximum number of caching agents that can be tracked in the directory;

determine that the count is greater than the threshold directory capacity;

based on determining the count is greater than the threshold directory capacity, dynamically change operation of the memory from the first mode to a second mode by generating a bitmap, wherein a bit of the bitmap indicates at least one caching agent within a group of caching agents stores a copy of the cache line; and

operate the memory in the second mode using the bitmap.

14 . The non-transitory computer readable storage medium of claim 13 , wherein the one or more processors are further configured to:

receive, from a first caching agent, a request to access the cache line;

increase the count;

determine that the count is less than or equal to the threshold directory capacity; and

based on determining the count is less than or equal to the threshold directory capacity, query the directory using a cache line address to identify a second index of a second caching agent storing the copy of the cache line.

15 . The transitory computer readable storage medium of claim 14 , wherein the one or more processors are further configured to:

determine, based on querying the directory, none of the caching agents in the directory store the copy of the cache line;

retrieve the copy of the cache line from a main memory; and

transmit the copy of the cache line to the first caching agent.

16 . The non-transitory computer readable storage medium of claim 13 , wherein the one or more processors are further configured to, based on receiving a request to access the cache line, transmit multicast snoops to one or more groups to identify a caching agent storing the copy of the cache line.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 2, 2024
From: FISHEL, LIRAN; DAYAN, DAVID
To: GOOGLE LLC
Reel/Frame 066974/0678 →
References Cited (11)
US 6405322B1 · Gaither · 2002 [cited by examiner]
US 10339059B1 · Mattina · 2019 [cited by examiner]
US 11237965B2 · Forrest et al. · 2022 [cited by applicant]
US 11734177B2 · Robinson · 2023 [cited by examiner]
US 20070233932A1 · Collier · 2007 [cited by examiner]
US 20080005338A1 · Yin · 2008 [cited by applicant]
US 20170286299A1 · Sury · 2017 [cited by examiner]
US 20200042446A1 · Mittal et al. · 2020 [cited by applicant]
S. Shukla and M. Chaudhuri, “Tiny Directory: Efficient Shared Memory in Many-Core Systems with Ultra-Low-Overhead Coherence Tracking,” 2017 IEEE International Symposium on High Performance Computer Architecture (HPCA), … [cited by examiner]
Counting Stream Registers: an Efficient and Effective Snoop Filter Architecture; Ranganathan, Aanjhan, et al; pp. 120-127. [cited by applicant]
Formal Analysis of the ACE Specification for Cache Coherent Systems-on-Chip Abderahman Kriouile, Wendelin Serwe, Sep. 2013; 16 pgs. [cited by applicant]