US 12,340,259 B2
Thread synchronization across memory synchronization domains
Michael Allen Parker, San Jose, CA (US); Debajit Bhattacharya, San Jose, CA (US); David Fontaine, Mountain View, CA (US); Shirish Gadre, Fremont, CA (US); Wishwesh Anil Gandhi, Sunnyvale, CA (US); Olivier Giroux, Santa Clara, CA (US); Hemayet Hossain, San Jose, CA (US); Ronny M. Krashinsky, San Francisco, CA (US); Ze Long, Santa Clara, CA (US); and Raymond Hoi Man Wong, Unionville (CA)
Assigned to NVIDIA CORPORATION, Santa Clara, CA (US)
Filed by NVIDIA CORPORATION, Santa Clara, CA (US)
Filed on Jul. 20, 2021, as Appl. No. 17/380,424.
Prior Publication US 2023/0021678 A1, Jan. 26, 2023
Int. Cl. G06F 9/46 (2006.01); G06F 9/30 (2018.01); G06F 9/38 (2018.01); G06F 9/52 (2006.01)
CPC G06F 9/522 (2013.01) [G06F 9/30087 (2013.01); G06F 9/3851 (2013.01); G06F 9/3888 (2023.08)] 20 Claims
OG exemplary drawing
 
1. A computer-implemented method for synchronizing threads executing in a processor, the method comprising:
determining that a first thread has executed a first memory barrier instruction, wherein the first thread is included in a first set of threads associated with a first domain representing a first set of resources included in the processor that synchronize with one another;
determining a set of memory apertures associated with the first domain that have been accessed by at least one thread included in the first set of threads;
generating a memory barrier command that:
specifies references to the set of memory apertures associated with the first domain to flush in response to the memory barrier command, and
excludes references to other memory apertures that are excluded from being flushed in response to the memory barrier command, wherein the other memory apertures are accessed by threads associated with a second domain representing a second set of resources included in the processor that synchronize with one another, and wherein the second set of resources is different from the first set of resources; and
transmitting the memory barrier command to the set of memory apertures.