IP Library Granted Patent US 11,809,321
Granted Patent B2
US 11,809,321 · App. 17/806,419 · Granted Nov 7, 2023

Memory management in a multiple processor system

Inventors: Wael Noureddine (Santa Clara, CA); Jean-Marc Frailong (Rancho Mirage, CA); Pradeep Sindhu (Los Altos Hills, CA); Bertrand Serlet (Palo Alto, CA)
Assignee: Microsoft Technology Licensing, LLC
G06F12/0815G06F12/0804G06F15/17325G06F2212/1016G06F2212/1032
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 11,809,321
App. No.
17/806,419
Granted
Nov 7, 2023
Kind
B2
Abstract

Methods and apparatus for memory management are described. In one example, this disclosure describes a method that includes executing, by a first processing unit, first work unit operations specified by a first work unit message, wherein execution of the first work unit operations includes accessing data from shared memory included within the computing system, modifying the data, and storing the modified data in a first cache associated with the first processing unit; identifying, by the computing system, a second work unit message that specifies second work unit operations that access the shared memory; updating, by the computing system, the shared memory by storing the modified data in the shared memory; receiving, by the computing system, an indication that updating the shared memory with the modified data is complete; and enabling the second processing unit to execute the second work unit operations.

Claims (63)

1. A computing system comprising a first processing unit, a second processing unit, and shared memory, and wherein the computing system is configured to:

enable the first processing unit to modify data in the shared memory, including:

accessing the data in the shared memory,

storing the data in a cache associated with the first processing unit,

modifying the data in the cache to yield updated data, and

flushing the cache to store the updated data in the shared memory;

receive an indication that modifying data in the shared memory is complete;

after receiving the indication that modifying the shared memory is complete, deliver a message to the second processing unit, wherein the message specifies operations that access the shared memory; and

enable, after delivering the message, the second processing unit to execute the operations that access the shared memory.

2. The computing system of claim 1 , wherein to enable the second processing unit to execute the operations, the computing system is configured to:

gate the delivery of the message by the first processing unit flushing the cache.

3. The computing system of claim 1 , wherein to execute the operations that access the shared memory, the second processing unit is configured to:

access the updated data from the shared memory;

store the updated data in a cache associated with the second processing unit;

modify the updated data in the cache; and

flush the cache to store further updated data in the shared memory.

4. The computing system of claim 1 , wherein the computing system is further configured to:

transfer ownership of at least a portion of the shared memory to the second processing unit through the delivery of the message to the second processing unit.

5. The computing system of claim 1 , wherein to deliver a message to the second processing unit, the computing system is further configured to:

delay delivery of the message to the second processing unit while the first processing unit flushes the cache associated with the first processing unit.

6. The computing system of claim 1 , wherein the message is a work unit message, and wherein the computing system is further configured to:

identify the work unit message; and

determine that the work unit message designates the second processing unit to execute the operations that access the shared memory.

7. The computing system of claim 1 , wherein to enable the second processing unit to execute the operations, the computing system is configured to:

release the message to the second processing unit.

8. The computing system of claim 1 , wherein to modify the data in the shared memory, the first processing unit is configured to:

process data included within a network packet.

9. A storage device for storing computer-readable instructions that, when executed, configure processing circuitry of a computing system to:

enable a first processing unit included within the computing system to modify data in shared memory included within the computing system, including:

accessing the data from the shared memory,

storing the data in a cache associated with the first processing unit,

modifying the data in the cache, and

flushing the cache to store updated data in the shared memory;

receive an indication that modifying data in the shared memory is complete;

after receiving the indication that modifying the shared memory is complete, deliver a message to a second processing unit included within the computing system, wherein the message specifies operations that access the shared memory; and

enable, after delivering the message, the second processing unit to execute the operations that access the shared memory.

10. The storage device of claim 9 , wherein the instructions that enable the second processing unit to execute the operations further include instructions that configure the processing circuitry to:

gate the delivery of the message by flushing the cache.

11. The storage device of claim 9 , wherein the instructions that enable the second processing unit to execute the operations that access the shared memory include instructions that configure the second processing unit to:

access the updated data from the shared memory;

store the updated data in a cache associated with the second processing unit;

modify the updated data in the cache; and

flush the cache to store further updated data in the shared memory.

12. The storage device of claim 9 , further comprising instructions that configure the processing circuitry to:

transfer ownership of at least a portion of the shared memory to the second processing unit through the delivery of the message to the second processing unit.

13. The storage device of claim 9 , wherein the instructions that deliver a message to the second processing unit further include instructions that configure the processing circuitry to:

delay delivery of the message to the second processing unit while the first processing unit flushes the cache associated with the first processing unit.

14. The storage device of claim 9 , wherein the message is a work unit message, and wherein the computer-readable storage medium further comprises instructions that configure the processing circuitry to:

identify the work unit message; and

determine that the work unit message designates the second processing unit to execute the operations that access the shared memory.

15. The storage device of claim 9 , wherein the instructions that enable the second processing unit to execute the operations further include instructions that configure the processing circuitry to:

release the message to the second processing unit.

16. The storage device claim 9 , wherein the instructions that modify the data in the shared memory further include instructions that configure the first processing unit to:

process data included within a network packet.

17. A computing system comprising shared memory and a memory management system, wherein the memory management system is configured to:

enable a first processing unit to modify data in the shared memory;

receive an indication that modifying data in the shared memory is complete;

after receiving the indication that modifying the shared memory is complete, deliver a message to a second processing unit, wherein the message specifies operations that access the shared memory;

transfer ownership of at least a portion of the shared memory to the second processing unit through the delivery of the message to the second processing unit; and

enable, after delivering the message, the second processing unit to execute the operations that access the shared memory.

18. The computing system of claim 17 , wherein the memory management system is further configured to store the data in a cache associated with the first processing unit.

19. The computing system of claim 18 , wherein the memory management system is further configured to modify the data in the cache to yield updated data.

20. The computing system of claim 19 , wherein the memory management system is further configured to flush the cache to store the updated data in the shared memory.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 31, 2023
From: FUNGIBLE, INC.
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 064434/0430 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 26, 2023
From: NOUREDDINE, WAEL; FRAILONG, JEAN-MARC; SINDHU, PRADEEP; SERLET, BERTRAND
To: FUNGIBLE, INC.
Reel/Frame 063453/0246 →
Continuity (5)
Continuation 16791957 · Feb 14, 2020
Continuation 15949892 · Apr 10, 2018
Provisional Application 62483844 · Apr 10, 2017
Provisional Application 62625518 · Feb 2, 2018
Related Publication 20220300423A1 · Sep 22, 2022