US 11,947,457 B2
Scalable cache coherency protocol
James Vash, San Ramon, CA (US); Gaurav Garg, San Jose, CA (US); Brian P. Lilly, San Francisco, CA (US); Ramesh B. Gunna, San Jose, CA (US); Steven R. Hutsell, San Jose, CA (US); Lital Levy-Rubin, Tel Aviv (IL); Per H. Hammarlund, Sunnyvale, CA (US); and Harshavardhan Kaushikkar, Santa Clara, CA (US)
Assigned to Apple Inc., Cupertino, CA (US)
Filed by Apple Inc., Cupertino, CA (US)
Filed on Nov. 22, 2022, as Appl. No. 18/058,105.
Application 18/058,105 is a continuation of application No. 17/315,725, filed on May 10, 2021, granted, now 11,544,193.
Claims priority of provisional application 63/077,371, filed on Sep. 11, 2020.
Prior Publication US 2023/0083397 A1, Mar. 16, 2023
Int. Cl. G06F 12/0815 (2016.01); G06F 12/0831 (2016.01)
CPC G06F 12/0815 (2013.01) [G06F 12/0831 (2013.01); G06F 2212/1032 (2013.01)] 19 Claims
OG exemplary drawing
 
1. A system comprising:
a plurality of coherent agents, wherein a given agent of the plurality of coherent agents comprises one or more caches to cache memory data; and
a memory controller coupled to one or more memory devices, wherein the memory controller includes a directory configured to track which of the plurality of coherent agents is caching copies of a plurality of cache blocks in the memory devices and states of the cached copies in the plurality of coherent agents, wherein
the directory supports at least the following states: owned, primary shared, and secondary shared; and
wherein, based on a first request for a first cache block by a first agent of the plurality of coherent agents, the memory controller is configured to:
read an entry corresponding to the first cache block from the directory, and
in response to a second coherent agent of the plurality of coherent agents having a cached copy of the first cache block in a primary shared state, issue a snoop to the second agent of the plurality of coherent agents, wherein the snoop indicates that the second agent is to transmit the first cache block to the first agent;
in response to none of the plurality of coherent agents having a cached copy of the first cache block in the primary shared state, issue a snoop to a coherent agent of the plurality of coherent agents that has a cached copy of the first cache block in a secondary shared state, wherein the snoop indicates to transmit the first cache block to the first agent.