US 11,669,454 B2
Hybrid directory and snoopy-based coherency to reduce directory update overhead in two-level memory
Vedaraman Geetha, Fremont, CA (US); Jeffrey Baxter, Cupertino, CA (US); Sai Prashanth Muralidhara, Portland, OR (US); Sharada Venkateswaran, San Francisco, CA (US); Daniel Liu, Walnut Creek, CA (US); Nishant Singh, Bengaluru (IN); Bahaa Fahim, Santa Clara, CA (US); and Samuel D. Strom, Folsom, CA (US)
Assigned to Intel Corporation, Santa Clara, CA (US)
Filed by Intel Corporation, Santa Clara, CA (US)
Filed on May 7, 2019, as Appl. No. 16/405,691.
Prior Publication US 2020/0356482 A1, Nov. 12, 2020
Int. Cl. G06F 12/0817 (2016.01)
CPC G06F 12/0817 (2013.01) [G06F 2212/1021 (2013.01); G06F 2212/608 (2013.01)] 24 Claims
OG exemplary drawing
 
1. A processor comprising: one or more cores, each comprising cache; a cache home agent (CHA) coupled to the cache; and a near memory controller coupled to the CHA, to near memory, and to a far memory controller, wherein the near memory controller is to: receive a first memory read operation from the CHA directed at a memory address; detect a miss for the memory address at the near memory; issue, in response to detection of the miss, a second memory read operation to the far memory controller to retrieve a cache line, comprising first data, from the memory address of far memory; receive the cache line from the far memory controller in response to completion of the second memory read operation; and in response to the cache line being retrieved from the far memory, send the cache line to the CHA with a change to a directory state of the cache line at the CHA, the changed directory state to cause the CHA to snoop remote sockets to maintain data coherence for the cache line, and write the cache line to the near memory with a set of metadata bits indicating that the cache line is clean and directory bits in the cache line are dirty, wherein based on the set of metadata bits, the cache line is not written to the far memory in response to the cache line being selected to be evicted from the near memory, wherein the near memory maintains the data coherence using directory state in an absence of directory state in the far memory.