IP Library Granted Patent US 10,452,287
Granted Patent B2
US 10,452,287 · App. 15/192,453 · Granted Oct 22, 2019

System and method for shared memory ownership using context

Inventors: Sushma Wokhlu (Frisco, TX); Lee Dobson Mcfearin (Plano, TX); Alan Gatherer (Richardson, TX); Hao Luan (Plano, TX)
Assignee: FUTUREWEI TECHNOLOGIES, INC.
G06F3/0619G06F3/0637G06F3/0673G06F9/50G06F9/5016G06F12/084G06F12/0888G06F12/1466G06F12/0815G06F2212/621
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,452,287
App. No.
15/192,453
Granted
Oct 22, 2019
Kind
B2
Abstract

It is possible to reduce the latency attributable to memory protection in shared memory systems by performing access protection at a central Data Ownership Manager (DOM), rather than at distributed memory management units in the central processing unit (CPU) elements (CEs) responsible for parallel thread processing. In particular, the DOM may monitor read requests communicated over a data plane between the CEs and a memory controller, and perform access protection verification in parallel with the memory controller's generation of the data response. The DOM may be separate and distinct from both the CEs and the memory controller, and therefore may generally be able to make the access determination without interfering with data plane processing/generation of the read requests and data responses exchanged between the memory controller and the CEs.

Claims (42)

1. An apparatus comprising:

a data plane;

a plurality of central processing unit (CPU) elements (CEs) coupled to the data plane, the plurality of CEs including a CE configured to send a read request to a memory controller over the data plane, the read request requesting access to a shared memory resource;

a centralized Data Ownership Manager (DOM) coupled to the data plane, wherein the centralized DOM is common to each of the CEs, and wherein the centralized DOM is configured to:

detect the read request,

determine whether a thread assigned to the CE is permitted to access the shared memory resource based on one or more identifiers (IDs) in the read request, and

send a control signal to the memory controller indicating whether the thread being executed by the CE is permitted to access the shared memory resource; and

the memory controller, coupled to the data plane and configured to send a data response to the CE, the data response including a response code that indicates whether the thread being executed by the CE is permitted to access the shared memory resource;

wherein the CE includes a local control block that is configured to process the data response based on the response code in the data response without independently verifying that the thread is permitted to access the shared memory resource.

2. The apparatus of claim 1 , wherein the DOM determines whether the thread assigned to the CE is permitted to access the shared memory resource by:

comparing both a context ID and a job ID in the read request with a context ID and a job ID in a data ownership table in response to the read request being a read/write (RW) request; or

comparing the context ID in the read request with the context ID in the data ownership table without comparing the job ID in the read request with the job ID in the data ownership table in response to the read request being a read-only (RO) request.

3. The apparatus of claim 1 , wherein the DOM is separate and distinct from the memory controller, and wherein the memory controller and the DOM process the read request in parallel such that the DOM determines whether the thread is permitted to access the shared memory resource without delaying generation of the data response by the memory controller.

4. The apparatus of claim 3 , wherein the DOM operates at a higher clock speed than the memory controller such that the DOM determines whether the thread is permitted to access the shared memory resource prior to the memory controller generating the data response.

5. The apparatus of claim 1 , wherein the local control block in the CE is configured to store data, carried by the data response, into a local cache of the CE without independently verifying that the thread is permitted to access the shared memory resource in response to the response code in the data response indicating that the thread is permitted to access the shared memory resource.

6. The apparatus of claim 1 , wherein the local control block in the CE is configured to generate an exception without independently verifying that the thread is not permitted to access the shared memory resource in response to the response code in the data response indicating that the thread is not permitted to access the shared memory resource.

7. The apparatus of claim 1 , wherein the local control block in the CE is configured to perform a self-correction without independently verifying that the thread is not permitted to access the shared memory resource in response to the response code in the data response indicating that the thread is not permitted to access the shared memory resource.

8. The apparatus of claim 1 , wherein the DOM is further configured to store faulty access information corresponding to the read request in debug registers of the DOM in response to the thread not being permitted to access the shared memory resource.

9. The apparatus of claim 8 , wherein the faulty access information includes one or more of a CE ID, a physical address, a time stamp, and access attributes carried by the read request in the debug registers.

10. The apparatus of claim 8 , wherein the control signal includes cache attributes specifying that the shared memory resource is un-cacheable, read-only cacheable, or read-write cacheable.

11. A method for providing memory protection for shared memory, the method comprising:

detecting, by a centralized Data Ownership Manager (DOM), a read request communicated from a central processing unit (CPU) element (CE) to a memory controller, the read request requesting access to a shared memory resource, the CE being one of a plurality of CEs, and the centralized DOM being common to each of the CEs; and

determining, by the centralized DOM, whether a thread assigned to the CE is permitted to access the shared memory resource based on one or more identifiers (IDs) in the read request; and

sending, by the centralized DOM, a control signal to the memory controller, the control signal indicating whether the thread being executed by the CE is permitted to access the shared memory resource,

the control signal prompting the memory controller to set a response code in a data response sent from the memory controller to the CE, the response code indicating whether the thread being executed by the CE is permitted to access the shared memory resource, and

the response code in the data response prompting a local control block in the CE to process the data response without independently verifying that the thread is permitted to access the shared memory resource.

12. The method of claim 1 , wherein determining whether the thread assigned to the CE is permitted to access the shared memory resource based on the one or more IDs in the read request comprises:

comparing both a context ID and a job ID in the read request with a context ID and a job ID in a data ownership table in response to the read request being a read/write (RW) request; being a read-only (RO) request.

13. The method of claim 11 , wherein the response code in the data response prompts the local control block in the CE to store data, carried by the data response, into a local cache of the CE in response to the response code indicating that the thread is permitted to access the shared memory resource.

14. The method of claim 11 , wherein the response code in the data response prompts the local control block in the CE to generate an exception or to perform a self-correction in response to the response code indicating that the thread is not permitted to access the shared memory resource.

15. The method of claim 11 , further comprising:

storing, by the DOM, faulty access information corresponding to the read request in debug registers of the DOM in response to the thread not being permitted to access the shared memory resource, the faulty access information including one or more of a CE ID, a physical address, a time stamp, and access attributes carried by the read request in the debug registers.

16. A method for managing a cache, the method comprising:

sending, by a central processing unit (CPU) element (CE), a read request to a memory controller without independently verifying whether a thread being processed by the CE is permitted to access a shared memory resource, the read request requesting access to the shared memory resource, the CE being one of a plurality of CEs, and the plurality of CEs having a common centralized Data Ownership Manager (DOM) providing memory access protection verification;

receiving, by the CE, a data response from the memory controller, the data response including a response code that indicates whether the thread being processed by the CE is permitted, by the centralized DOM, to access the shared memory resource; and

in response to the response code in the data response indicating whether the thread is permitted to access the shared memory resource, processing, by the CE, the data response based on the response code without independently verifying whether the thread is permitted to access the shared memory resource.

17. The method of claim 16 , wherein the response code in the data response indicates that the thread is permitted to access the shared memory resource; and

wherein processing the data response comprises storing data, carried by the data response, into a local cache of the CE.

18. The method of claim 16 , wherein the response code in the data response indicates that the thread is not permitted to access the shared memory resource; and

wherein processing the data response comprises generating an exception.

19. The method of claim 16 , wherein the response code in the data response indicates that the thread is not permitted to access the shared memory resource; and

wherein processing the data response comprises performing a self-correction.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 28, 2016
From: WOKHLU, SUSHMA; MCFEARIN, LEE DOBSON; GATHERER, ALAN; LUAN, HAO
To: FUTUREWEI TECHNOLOGIES, INC.
Reel/Frame 039031/0460 →
Continuity (1)
Related Publication 20170371570A1 · Dec 28, 2017