IP Library › Granted Patent US 10,795,815
Granted Patent B2
US 10,795,815 · App. 15/166,458 · Granted Oct 6, 2020

Method and apparatus for maintaining data coherence in a non-uniform compute device

Inventors: Jonathan Curtis Beard (Austin, TX); Wendy Elsasser (Austin, TX); Stephan Diestelhorst (Austin, TX)
Assignee: ARM Limited
G06F12/0815G06F12/08G06F12/084G06F12/0811G06F15/7821G06F9/3842
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 10,795,815
App. No.
15/166,458
Granted
Oct 6, 2020
Kind
B2
Abstract

A data processing apparatus includes one or more host processors with first processing units, one or more caches with second processing unit, a non-cache memory having a third processing unit and a reorder buffer operable to maintain data order during execution of a program of instructions. An instruction scheduler routes instructions to the processing units. Data coherence is maintained by control logic that blocks access to data locations in use by a selected processing unit other than the selected processing unit until data associated with the data locations are released from the reorder buffer. Data stored in the cache is written to the memory if it is already in a modified state, otherwise the state is set to the modified state. A memory controller may be used to restrict access to memory locations to be operated on.

Claims (42)

1. A method for maintaining data coherence in an apparatus comprising a host processor having a first processing unit, one or more near memory processing units, and a multi-level memory system having a plurality of logical levels, where a highest level of the memory system comprises an L1 cache accessible by the first processing unit, where a second level of the memory system, at a lower logical level of the multi-level memory system than the first level, comprises a second cache tightly coupled with a processing unit of the one or more near memory processing units, and where a third level of the memory system comprises a non-cache memory, the method comprising:

loading a block of instructions to operate on first data;

selecting, as a target processing unit, the first processing unit or a processing unit of the one or more near memory processing units, where the first data is stored at first data locations in a cache tightly coupled to the target processing unit and is associated with first memory addresses in the non-cache memory;

issuing the block of instructions to the target processing unit;

prior to executing the block of instructions by the target processing unit:

backing up the first data to second data locations;

blocking access to data associated with the first memory addresses by processing units other than the target processing unit;

writing the first data having a modified state in the cache tightly coupled to the target processing unit to the non-cache memory; and

setting the first data having an unmodified state in the cache tightly coupled to the target processing unit to a modified state; and

executing, by the target processing unit, the block of instructions to:

read the first data from the first data locations in the cache tightly coupled to the target processing unit;

operate on the first data to produce second data; and

write the second data to the cache tightly coupled to the target processing unit.

2. The method of claim 1 , where a processing unit of the one or more near memory processing units is tightly coupled with the non-cache memory.

3. The method of claim 1 , where backing up the first data comprises:

allocating a scratch pad memory; and

writing the first data to the scratch pad memory.

4. The method of claim 3 , where the scratch pad memory is allocated in memory other than the the L1 cache or the second cache.

5. The method of claim 3 , where the scratch pad memory is allocated in L1 cache or the second cache.

6. The method of claim 5 , further comprising:

invalidating any lines corresponding to the scratch pad memory at cache levels other than the level of the allocated scratch pad memory.

7. The method of claim 5 , further comprising, when the second data are valid,

storing the second data;

unblocking access to data associated with the first memory addresses; and

enabling access to the scratch pad memory.

8. The method of claim 1 , further comprising, when the second data are valid, storing the second data; and

unblocking access to data associated with the first memory addresses.

9. The method of claim 1 , further comprising,

determining the second data to be invalid responsive to a signal from the host processor indicating an incorrectly predicted program branch.

10. The method of claim 1 , further comprising,

determining the second data to be invalid responsive to an exception thrown by the target processing unit; and

signaling the host processor to indicate the exception.

11. The method of claim 1 , where said operating on the first data by the target processing unit to produce second data comprises speculative execution of one or more instructions of a predicted program branch, the method further comprising:

determining the second data to be invalid when the program branch is predicted in error.

12. The method of claim 1 , further comprising, when the second data are determined to be invalid:

copying the back-up first data from the second data locations to the first data locations.

13. The method of claim 1 , further comprising, when the second data are determined to be invalid and the first data locations are in the cache tightly coupled to the target processing unit:

invalidating data stored at the first data locations.

14. The method of claim 1 , where, when the first data locations are in the cache tightly coupled to the target processing unit, blocking access to the data associated with first memory addresses comprises:

a cache controller blocking access to the first data locations.

15. The method of claim 1 , where the L1 cache and the second cache are parts of a multi-level inclusive cache and where blocking access to the data associated with first memory addresses comprises:

a cache controller blocking access to all levels of the multi-level inclusive cache that hold copies of the data associated with first memory addresses.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 19, 2016
From: BEARD, JONATHAN CURTIS; ELSASSER, WENDY; DIESTELHORST, STEPHAN
To: ARM LIMITED
Reel/Frame 039390/0085 →
Continuity (1)
Related Publication 20170344480A1 · Nov 30, 2017
Cited By (1)
US 12,387,766