IP Library Granted Patent US 12,360,824
Granted Patent B2
US 12,360,824 · App. 17/485,102 · Granted Jul 15, 2025

Return value storage for atomic functions

Inventors: Robert Pawlowski (Beaverton, OR); Fabio Checconi (Santa Clara, CA); Fabrizio Petrini (Menlo Park, CA)
Assignee: Intel Corporation
G06F9/52G06F13/28
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 12,360,824
App. No.
17/485,102
Granted
Jul 15, 2025
Kind
B2
Abstract

A memory architecture may provide support for any number of direct memory access (DMA) operations at least partially independent of the CPU coupled to the memory. DMA operations may involve data movement between two or more memory locations and may involve minor computations. At least some DMA operations may include any number of atomic functions, and at least some of the atomic functions may include a corresponding return value. A system includes a first direct memory access (DMA) engine to request a DMA operation. The DMA operation includes an atomic operation. The system also includes a second DMA engine to receive a return value associated with the atomic operation and store the return value at a source memory.

Claims (42)

1. A system comprising:

a first direct memory access (DMA) engine configured to request a DMA operation, wherein the DMA operation comprises an atomic operation; and

a second DMA engine configured to:

receive a return value associated with the atomic operation;

store the return value at a source memory associated with the second DMA engine; and

send an acknowledgement to the first DMA engine in response to storing the return value.

2. The system of claim 1 , comprising a third DMA engine configured to receive the request and configured to perform the atomic operation.

3. The system of claim 2 , wherein the atomic operation comprises a compare-exchange operation.

4. The system of claim 2 , wherein the third DMA engine is configured to:

retrieve the return value from a destination memory associated with the third DMA engine; and

send the return value to the second DMA engine.

5. The system of claim 1 , wherein the first DMA engine is configured to receive an instruction associated with the DMA operation comprising a first register field indicative of a number of data elements associated with a destination memory.

6. The system of claim 5 , wherein the number of data elements associated with the destination memory is based on a number of locations associated with the destination memory and a corresponding number of elements associated with at least one location.

7. The system of claim 5 , wherein the instruction comprises a third register field indicative of a return value storage enable field.

8. The system of claim 1 , wherein the request comprises a request to load the source value from the second DMA engine, a request to load a pointer from a third DMA engine, or a combination thereof.

9. The system of claim 1 , wherein the first DMA engine is configured to receive an instruction associated with the DMA operation, wherein the instruction comprises a plurality of register fields.

10. The system of claim 9 , wherein the plurality of register fields comprises a first register field, wherein the first register field is indicative of a plurality of base addresses corresponding to a plurality of source values and a plurality of return values.

11. The system of claim 9 , wherein the plurality of register fields comprises a second register field, wherein the second register field comprises a compare value associated with the atomic operation.

12. The system of claim 11 , comprising a third DMA engine configured to compare the return value with the compare value.

13. The system of claim 9 , wherein the plurality of register fields comprises a third register field, wherein the third register field is indicative of a number of elements associated with the DMA operation and a destination count associated with the DMA operation.

14. The system of claim 13 , wherein the second DMA engine is configured to retrieve a number of source values from the source memory, the number of source values corresponding to the number of elements.

15. A method comprising:

receiving, from a first direct memory access (DMA) engine at second DMA engine, a request to perform a direct memory access (DMA) operation, the DMA operation comprising an atomic operation;

obtaining a source value from a source memory via the second DMA engine;

performing the atomic operation in a destination memory using a third DMA engine;

storing the source value in the destination memory using the third DMA engine;

retrieving, from the destination memory using the third DMA engine, a return value associated with the atomic operation; and

sending, from the third DMA engine to the second DMA engine, the return value for storage in the source memory.

16. The method of claim 15 , comprising storing the return value at a previous location of the source value at the source memory.

17. The method of claim 16 , comprising receiving an instruction associated with the DMA operation, wherein the instruction comprises a first register field indicative of the previous location of the source value.

18. The method of claim 17 , wherein the instruction comprises a second register field indicative of a compare value associated with the atomic operation.

19. The method of claim 15 comprising:

receiving a plurality of source values from the source memory, wherein the plurality of source values comprises the source value; and

storing the plurality of source values at a plurality of random locations at the destination memory.

20. A system comprising:

a first direct memory access (DMA) engine configured to request a DMA operation, wherein the DMA operation comprises an atomic operation;

a second DMA engine configured to retrieve a source value from a location of a source memory associated with the second DMA engine; and

a third DMA engine configured to:

perform the atomic operation;

retrieve a return value associated with the atomic operation;

store the source value at a destination memory associated with the third DMA engine; and

send the return value to the second DMA engine using an address specified in a register field of the request, wherein the second DMA engine is configured to store the return value at the location of the source memory.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 15, 2026
From: INTEL CORPORATION
To: INTEL PRODUCTS IP LLC
Reel/Frame 076025/0681 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 31, 2025
From: PAWLOWSKI, ROBERT; CHECCONI, FABIO; PETRINI, FABRIZIO
To: INTEL CORPORATION
Reel/Frame 070687/0045 →
Continuity (1)
Related Publication 20230095207A1 · Mar 30, 2023
References Cited (2)
US 11474961B2 · Master · 2022 [cited by examiner]
US 20150212759A1 · Jo · 2015 [cited by examiner]