IP Library › Granted Patent US 12,436,890
Granted Patent B2
US 12,436,890 · App. 18/336,694 · Granted Oct 7, 2025

Snoop filter with disaggregated vector table

Inventors: Jason Lawrence Panavich (Raleigh, NC); Eric Francis Robinson (Raleigh, NC)
Assignee: Microsoft Technology Licensing, LLC
G06F12/0828G06F2212/621
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,436,890
App. No.
18/336,694
Granted
Oct 7, 2025
Kind
B2
Abstract

The described technology provides a method including receiving a request from an agent for accessing a cogran and for allocating an agent ID to one of a plurality of SFT entries in a snoop filter (SFT), performing a tag lookup function for a tag of the cogran in the SFT to find a matched SFT entry, wherein the matched SFT entry is tracking the tag of the cogran, determining the number n of agents being tracked by the matched SFT entry, and in response to determining that the number n of agents being tracked by the matched entry is above a threshold, storing a DVT index in the tracking_info field of the matched SFT entry, wherein the DVT index selects a DVT entry in a disaggregated vector table (DVT), wherein the selected DVT entry is configured to hold a tracking vector for tracking the agents that have cached the cogran for the matched SFT entry.

Claims (63)

1. A method, comprising:

receiving a request from an agent for accessing a coherence granule (cogran) and for allocating an agent ID to one of a plurality of SFT entries in a snoop filter (SFT);

performing a tag lookup function for a tag of the cogran in the SFT to find a matched SFT entry, wherein the matched SFT entry is tracking the tag of the cogran;

determining the number n of agents being tracked by the matched SFT entry;

in response to determining that the number n of agents being tracked by the matched entry is above a threshold, storing a DVT index in the tracking_info field of the matched SFT entry, wherein the DVT index selects a DVT entry in a disaggregated vector table (DVT), wherein the selected DVT entry is configured to hold a tracking vector for tracking the agents that have cached the cogran for the matched SFT entry;

and in response to storing a DVT index in the tracking_info field of the matched SFT entry changing a value of a tracking_mode field of the matched SFT entry to DVT.

2. The method of claim 1 , further comprising:

in response to determining that the number n of agents being tracked by the matched SFT is below a threshold, storing an agent ID (AID) of the agent accessing the cogran in the tracking_info field of the matched SFT entry.

3. The method of claim 1 , further comprising changing a valid bit corresponding to the agent accessing the cogran in the DVT entry's tracking vector to valid.

4. The method of claim 1 , further comprising:

calculating an error correction code (ECC) of a DVT entry;

comparing the calculated ECC with the matching a value of a protection field of the DVT entry; and

in response to determining that the calculated ECC does not match the value of a protection field of the DVT entry, changing a value the tracking_mode field of the matched SFT entry to IMPRECISE.

5. The method of claim 1 , further comprising:

in response to determining that the number n of agents being tracked by the matched entry is above a threshold, determining if a DVT entry is available;

in response to determining that a DVT entry is not available, setting the SFT entry's tracking_mode to IMPRECISE; and

in response to determining that a DVT entry is available, setting the SFT entry's tracking_mode to DVT.

6. The method of claim 1 , further comprising:

in response to determining that the number n of agents being tracked by the matched entry is above a threshold, determining if a DVT entry is available; and

in response to determining that a DVT entry is available:

setting the SFT entry's tracking mode to DVT, and

replacing one or more AIDs of the tracking_info field with the DVT index.

7. The method of claim 1 , further comprising:

determining that an agent needs to be removed from an SFT entry;

in response to determining that an agent needs to be removed from an SFT entry, determining if the SFT entry's tracking mode is DVT;

in response to determining that the SFT entry's tracking mode is DVT:

reading a precise tracking vector from a DVT entry associated with the SFT entry, and

clearing the read DVT entry's tracking vector bit position corresponding to the agent being removed from the SFT entry.

8. The method of claim 7 , further comprising determining if any precise tracking vector bit is still set in the DVT entry associated with the SFT entry and if no precise tracking vector bit is still set in the DVT entry associated with the SFT entry returning the DVT entry to a free-list of available DVT entries.

9. One or more tangible physically manufactured computer-readable storage media, encoding computer-executable instructions for executing on a computer system a computer process, the computer process comprising:

receiving a request from an agent for accessing a coherence granule (cogran) and for allocating an agent ID to one of a plurality of SFT entries in a snoop filter (SFT);

performing a tag lookup function for a tag of the cogran in the SFT to find a matched SFT entry, wherein the matched SFT entry is tracking the tag of the cogran;

determining the number n of agents being tracked by the matched SFT entry;

in response to determining that the number n of agents being tracked by the matched entry is above a threshold, storing a DVT index in the tracking_info field of the matched SFT entry, wherein the DVT index selects a DVT entry in a disaggregated vector table (DVT), wherein the selected DVT entry is configured to hold a tracking vector for tracking the agents that have cached the cogran for the matched SFT entry;

and in response to storing a DVT index in the tracking_info field of the matched SFT entry changing a value of a tracking_mode field of the matched SFT entry to DVT.

10. The one or more tangible physically manufactured computer-readable storage media of claim 9 , wherein the computer process further comprising:

in response to determining that the number n of agents being tracked by the matched SFT is below a threshold, storing an agent ID (AID) of the agent accessing the cogran in the tracking_info field of the matched SFT entry.

11. The one or more tangible physically manufactured computer-readable storage media of claim 9 , wherein the computer process further comprising changing a valid bit corresponding to the agent accessing the cogran in the DVT entry's tracking vector to valid.

12. The one or more tangible physically manufactured computer-readable storage media of claim 9 , wherein the computer process further comprising:

calculating an error correction code (ECC) of a DVT entry;

comparing the calculated ECC with the matching a value of a protection field of the DVT entry; and

in response to determining that the calculated ECC does not match the value of a protection field of the DVT entry, changing a value the tracking_mode field of the matched SFT entry to IMPRECISE.

13. The one or more tangible physically manufactured computer-readable storage media of claim 9 , wherein the computer process further comprising:

in response to determining that the number n of agents being tracked by the matched entry is above a threshold, determining if a DVT entry is available;

in response to determining that a DVT entry is not available, setting the SFT entry's tracking_mode to IMPRECISE; and

in response to determining that a DVT entry is available, setting the SFT entry's tracking_mode to DVT.

14. The one or more tangible physically manufactured computer-readable storage media of claim 9 , wherein the computer process further comprising:

in response to determining that the number n of agents being tracked by the matched entry is above a threshold, determining if a DVT entry is available; and

in response to determining that a DVT entry is available:

setting the SFT entry's tracking mode to DVT, and

replacing one or more AIDs of the tracking_info field with the DVT index.

15. A system comprising:

memory;

one or more processor units; and

a cache coherence system stored in the memory and executable by the one or more processor units, the cache coherence system encoding computer-executable instructions on the memory for executing on the one or more processor units a computer process, the computer process comprising:

receiving a request from an agent for accessing a coherence granule (cogran) and for allocating an agent ID to one of a plurality of SFT entries in a snoop filter (SFT);

performing a tag lookup function for a tag of the cogran in the SFT to find a matched SFT entry, wherein the matched SFT entry is tracking the tag of the cogran;

determining the number n of agents being tracked by the matched SFT entry;

in response to determining that the number n of agents being tracked by the matched entry is above a threshold, storing a DVT index in the tracking_info field of the matched SFT entry, wherein the DVT index selects a DVT entry in a disaggregated vector table (DVT), wherein the selected DVT entry is configured to hold a tracking vector for tracking the agents that have cached the cogran for the matched SFT entry;

and in response to storing a DVT index in the tracking_info field of the matched SFT entry changing a value of a tracking_mode field of the matched SFT entry to DVT.

16. The system of claim 15 , wherein the computer process further comprising:

in response to determining that the number n of agents being tracked by the matched SFT is below a threshold, storing an agent ID (AID) of the agent accessing the cogran in the tracking_info field of the matched SFT entry.

17. The system of claim 15 , wherein the computer process further comprising changing a valid bit corresponding to the agent accessing the cogran in the DVT entry's tracking vector to valid.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 2, 2023
From: PANAVICH, JASON LAWRENCE; ROBINSON, ERIC FRANCIS
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 064470/0504 →
Continuity (1)
Related Publication 20240419594A1 · Dec 19, 2024
References Cited (50)
US 6631447B1 · Morioka et al. · 2003 [cited by applicant]
US 9223711B2 · Philip · 2015 [cited by applicant]
US 10592424B2 · Beard · 2020 [cited by applicant]
US 10657055B1 · Jalal · 2020 [cited by applicant]
US 11550720B2 · Ramagiri · 2023 [cited by examiner]
US 20020124144A1 · Gharachorloo · 2002 [cited by applicant]
US 20080147988A1 · Heller et al. · 2008 [cited by applicant]
US 20080209133A1 · Ozer · 2008 [cited by applicant]
US 20140052905A1 · Lih · 2014 [cited by applicant]
US 20150012719A1 · Tune · 2015 [cited by applicant]
US 20160062890A1 · Salisbury · 2016 [cited by applicant]
US 20160062893A1 · Tune · 2016 [cited by applicant]
US 20160117249A1 · Lin · 2016 [cited by applicant]
US 20170255557A1 · Robinson · 2017 [cited by applicant]
US 20170286299A1 · Sury · 2017 [cited by applicant]
US 20190073304A1 · Jiang · 2019 [cited by applicant]
US 20200042446A1 · Mittal · 2020 [cited by applicant]
US 20200218657A1 · Forrest · 2020 [cited by applicant]
US 20200250098A1 · Ma · 2020 [cited by applicant]
US 20210294743A1 · Randall · 2021 [cited by applicant]
US 20220100672A1 · Apte · 2022 [cited by applicant]
US 20220164288A1 · Ramagiri · 2022 [cited by applicant]
US 20220308999A1 · Randall · 2022 [cited by applicant]
US 20230100746A1 · Loison · 2023 [cited by applicant]
US 20230139212A1 · Randall · 2023 [cited by applicant]
US 20240403218A1 · Robinson · 2024 [cited by applicant]
US 20240403219A1 · Kaseridis · 2024 [cited by applicant]
US 20240419593A1 · Ramakrishna · 2024 [cited by applicant]
US 20240427703A1 · Robinson · 2024 [cited by applicant]
WO 2017155659A1 · 2017 [cited by applicant]
Final Office Action mailed on Dec. 11, 2024, in U.S. Appl. No. 18/325,863, 13 pages. [cited by applicant]
A. Moshovos, “RegionScout: Exploiting Coarse Grain Sharing in Snoop-Based Coherence”, 32nd International Symposium on Computer Architecture (ISCA'05)—IEEE, Jun. 4, 2005, pp. 234-245. [cited by applicant]
Ehsan Atoofian, “Adaptive Snoop Granularity and Transactional Snoop Filtering in Hardware Transactional Memory”, Canadian Journal of Electrical and Computer Engineering—IEEE, vol. 37, Issue 2, 2014, pp. 76-85. [cited by applicant]
International Search Report and Written Opinion received for PCT Application No. PCT/US2024/029558, Aug. 30, 2024, 15 pages. [cited by applicant]
International Search Report and Written Opinion received for PCT Application No. PCT/US2024/030161, Jul. 24, 2024, 12 pages. [cited by applicant]
Moshovos, et al., “JETTY: filtering snoops for reduced energy consumption in SMP servers”, Proceedings HPCA Seventh International Symposium on High-Performance Computer Architecture—IEEE, Jan. 19, 2001, pp. 85-96. [cited by applicant]
Non-Final Office Action mailed on Jul. 8, 2024, in U.S. Appl. No. 18/326,147, 12 pages. [cited by applicant]
Non-Final Office Action mailed on Jun. 10, 2024, in U.S. Appl. No. 18/325,863, 13 pages. [cited by applicant]
Notice of Allowance mailed on Aug. 27, 2024, in U.S. Appl. No. 18/340,359, 08 pages. [cited by applicant]
Zebchuk, et al., “Multi-grain coherence directories”, MICRO-46: Proceedings of the 46th Annual IEEE/ACM International Symposium on Microarchitecture, Dec. 7, 2013, pp. 359-370. [cited by applicant]
International Search Report and Written Opinion received for PCT Application No. PCT/US2024/033323, Oct. 11, 2024, 11 pages. [cited by applicant]
International Search Report and Written Opinion received for PCT Application No. PCT/US2024/033480, Sep. 10, 2024, 15 pages. [cited by applicant]
International Search Report and Written Opinion received for PCT Application No. PCT/US2024/034880, Oct. 14, 2024, 14 pages. [cited by applicant]
Non Final Office Action mailed on Sep. 26, 2024, in U.S. Appl. No. 18/336,637, 09 pages. [cited by applicant]
Notice of Allowance mailed on Dec. 5, 2024, in U.S. Appl. No. 18/340,359, 2 pages. [cited by applicant]
Notice of Allowance mailed on Oct. 23, 2024, in U.S. Appl. No. 18/326,147, 9 pages. [cited by applicant]
Notice of Allowance mailed on Feb. 14, 2025, in U.S. Appl. No. 18/336,637 10 pages. [cited by applicant]
Notice of Allowance mailed on Apr. 28, 2025, in U.S. Appl. No. 18/325,863, 8 pages. [cited by applicant]
Notice of Allowance mailed on Feb. 10, 2025, in U.S. Appl. No. 18/326,147, 05 pages. [cited by applicant]
Notice of Allowance mailed on Feb. 13, 2025, in U.S. Appl. No. 18/340,359, 05 pages. [cited by applicant]