IP Library Patent Application 19273531
Patent Application
App. No. 19/273,531

DELAYED SNOOP FOR MULTI-CACHE SYSTEMS

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 None
App. No.
19/273,531
Abstract

Techniques for maintaining cache coherency comprising storing data blocks associated with a main process in a cache line of a main cache memory, storing a first local copy of the data blocks in a first local cache memory of a first processor, storing a second local copy of the set of data blocks in a second local cache memory of a second processor executing a first child process of the main process to generate first output data, writing the first output data to the first data block of the first local copy as a write through, writing the first output data to the first data block of the main cache memory as a part of the write through, transmitting an invalidate request to the second local cache memory, marking the second local copy of the set of data blocks as delayed, and transmitting an acknowledgment to the invalidate request.

Claims (67)

1 . A method comprising:

storing a data block to a first cache while executing a child thread;

receiving a cache message to evict the data block from the first cache after storing the data block;

waiting until execution of the child thread is finished before invalidating the data block stored in the first cache;

finishing the execution of the child thread after storing the data block; and

invalidating the data block in the first cache after finishing the execution of the child thread and in response to the cache message.

2 . The method of claim 1 , further comprising marking the data block stored in the first cache as shared and not as owned.

3 . The method of claim 1 , further comprising:

receiving the data block from a main cache while executing the child thread;

writing an updated value to the first cache after storing the data block; and

writing the updated value to the main cache after receiving the cache message.

4 . The method of claim 1 , wherein the first cache is a local cache.

5 . The method of claim 1 , further comprising executing a first diverge instruction to enter a child threading mode, and

wherein the child threading mode includes an indication that the data block is assigned to processing circuitry executing the child thread.

6 . The method of claim 5 , further comprising writing an updated value to the data block in the first cache after storing the data block and before finishing the execution of the child thread.

7 . The method of claim 1 , further comprising:

marking the data block stored in the first cache as delayed snoop in response to the cache message; and

invalidating the data block in the first cache after finishing the execution of the child thread and in response to the data block being marked as delayed snoop.

8 . The method of claim 7 , further comprising refraining from invalidating the data block stored in the first cache in response to the cache message until after finishing the execution of the child thread.

9 . A system comprising:

a first cache; and

processing circuitry coupled to the first cache and configurable to:

store a data block to the first cache while executing a child thread;

receive a cache message to evict the data block from the first cache after storing the data block;

wait until the processing circuitry has finished executing the child thread before invalidating the data block stored in the first cache;

finish executing the child thread after storing the data block; and

invalidate the data block in the first cache after finishing executing the child thread and in response to the cache message.

10 . The system of claim 9 , wherein the processing circuitry is configurable to mark the data block stored in the first cache as shared and not as owned.

11 . The system of claim 9 , wherein the processing circuitry is configurable to:

receive the data block from a main cache while executing the child thread;

write an updated value to the first cache after storing the data block; and

write the updated value to the main cache after receiving the cache message.

12 . The system of claim 9 , wherein the first cache is local to the processing circuitry.

13 . The system of claim 9 ,

wherein the processing circuitry is configurable to execute a first diverge instruction to enter a child threading mode, and

wherein the child threading mode includes an indication that the data block is assigned to the processing circuitry.

14 . The system of claim 13 , wherein the processing circuitry is configurable to write an updated value to the data block in the first cache after storing the data block and before the processing circuitry has finished executing of the child thread.

15 . The system of claim 9 , wherein the processing circuitry is configurable to:

mark the data block stored in the first cache as delayed snoop in response to the cache message; and

invalidate the data block in the first cache after the processing circuitry has finished executing the child thread and in response to the data block being marked as delayed snoop.

16 . The system of claim 15 , wherein the processing circuitry is configurable to refrain from invalidating the data block stored in the first cache in response to the cache message until the processing circuitry has finished executing the child thread.

17 . The system of claim 9 ,

wherein the processing circuitry is first processing circuitry,

wherein the child thread is a first child thread,

wherein the cache message is a first cache message, and

wherein the system further comprises:

a second cache; and

second processing circuitry coupled to the second cache and configurable to:

store the data block to the second cache while executing a second child thread;

write a second updated value to the second cache after storing the data block to the second cache;

finish executing the second child thread before the first processing circuitry receives the first cache message;

receive a second cache message after the first processing circuitry finishes executing the first child thread; and

invalidate the data block in the second cache in response to the second cache message.

18 . The system of claim 17 ,

wherein the second processing circuitry is configurable to execute a diverge instruction to enter a child threading mode, and

wherein the child threading mode includes an indication that the data block stored in the second cache is assigned to the second processing circuitry.

19 . The system of claim 17 , further comprising:

a third cache; and

third processing circuitry coupled to the third cache and configurable to:

store the data block to the third cache while executing a third child thread;

receive the first cache message to evict the data block from the third cache after storing the data block to the third cache;

wait until the third processing circuitry has finished executing the third child thread before invalidating the data block stored in the third cache;

finish executing the third child thread after storing the data block in the third cache; and

invalidate the data block in the third cache in response to the first cache message.

20 . The system of claim 19 ,

wherein the third processing circuitry is configurable to execute a diverge instruction to enter a child threading mode, and

wherein the child threading mode includes an indication that the data block stored in the third cache is assigned to the third processing circuitry.