IP Library › Granted Patent US 12,743,205
Granted Patent B2
US 12,743,205 · App. 18/211,544 · Granted Sep 22, 2026

Atomic execution of processing-in-memory operations

Inventors: Alexandru Dutu (Kirkland, WA); Sooraj Puthoor (Austin, TX)
Assignee: Advanced Micro Devices, Inc.
G06F3/061G06F3/0659G06F3/0685G06F15/7821
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,743,205
App. No.
18/211,544
Granted
Sep 22, 2026
Kind
B2
Abstract

Scheduling processing-in-memory transactions in systems with multiple memory controllers is described. In accordance with the described techniques, an addressing system segments operations of a transaction into multiple microtransactions, where each microtransaction includes a subset of the transaction operations that are scheduled by a corresponding one of the multiple memory controllers. Each transaction, and its associated microtransactions, is assigned a transaction identifier based on a current counter value maintained at the multiple memory controllers, and the multiple memory controllers schedule execution of microtransactions based on associated transaction identifiers to ensure atomic execution of operations for a transaction without interruption by operations of a different transaction.

Claims (32)

1 . A system comprising:

multiple memory segments;

multiple processing-in-memory components that are each associated with a corresponding one of the multiple memory segments; and

multiple memory controllers that are each responsible for scheduling operations of a transaction to be executed by a corresponding one of the multiple processing-in-memory components, each of the multiple memory controllers configured to:

receive a microtransaction request from a source that includes a transaction identifier for the transaction; and

send an acknowledgement message for the microtransaction request to the source responsive to a counter value, of a counter maintained at the memory controller, specifying the transaction identifier; or

send a negative acknowledgment message for the microtransaction request to the source.

2 . The system of claim 1 , wherein the microtransaction request received by each of the multiple memory controllers comprises one or more operations of the transaction to be executed by a corresponding one of the multiple memory controllers using data stored in a corresponding one of the multiple memory segments.

3 . The system of claim 2 , wherein the transaction requires executing the one or more operations included in the microtransaction request by a corresponding one of the multiple processing-in-memory components sequentially and without interruption.

4 . The system of claim 1 , further comprising an addressing system configured to generate a plurality of microtransaction requests for the transaction.

5 . The system of claim 4 , wherein the addressing system is configured to generate the plurality of microtransaction requests by translating virtual address information included in a transaction header for the transaction to physical address information describing addresses in the multiple memory segments at which data involved in executing the transaction is stored.

6 . The system of claim 4 , wherein the addressing system is configured to assign the transaction identifier for the transaction to each of the plurality of microtransaction requests.

7 . The system of claim 6 , wherein the transaction identifier is assigned based on an additional counter value maintained at an additional counter of at least one of the multiple memory controllers.

8 . The system of claim 7 , wherein the at least one of the multiple memory controllers is configured to transmit the additional counter value to the addressing system in response to receiving a transaction header for the transaction.

9 . The system of claim 1 , wherein the acknowledgement message causes the source to send one or more operations of the microtransaction request to a corresponding one of the multiple memory controllers for routing to a corresponding one of the multiple processing-in-memory components.

10 . The system of claim 1 , wherein the acknowledgement message causes the source to send one or more operations of the microtransaction request directly to a corresponding one of the multiple processing-in-memory components.

11 . The system of claim 1 , wherein the acknowledgement message is sent in response to identifying that an operation queue of a corresponding one of the multiple processing-in-memory components has space to queue operations of the microtransaction request.

12 . The system of claim 1 , wherein the negative acknowledgement message is sent in response to the counter value being different from the transaction identifier for the transaction.

13 . The system of claim 1 , wherein the negative acknowledgement message is sent to the source with a retry interval that indicates an amount of time to wait before subsequently sending the microtransaction request.

14 . The system of claim 13 , wherein the retry interval is computed based on a load described by one or more transaction identifiers buffered in buffer of a corresponding one of the multiple memory controllers.

15 . The system of claim 1 , wherein each of the multiple memory controllers is implemented in a host and the source comprises a core of the host.

16 . The system of claim 1 , wherein the negative acknowledgement message causes the source to refrain from sending operations of the microtransaction request for execution by a corresponding one of the multiple processing-in-memory components until receiving a subsequent acknowledgement message from a corresponding one of the multiple memory controllers.

17 . The system of claim 1 , wherein the acknowledgement message causes the source to send operations of the microtransaction request for execution by a corresponding one of the multiple processing-in-memory components without locking one or more locations in memory of a corresponding one of the multiple memory segments.

18 . A method comprising:

receiving, at a memory controller and from a host processing device, a request for a processing-in-memory component to execute at least one operation of a microtransaction that defines a subset of operations for a transaction identified by a transaction identifier;

maintaining, by the memory controller, a current counter and updating a value of the current counter in response to the processing-in-memory component completing execution of a prior transaction; and

causing, by the memory controller, the processing-in-memory component to execute the at least one operation of the microtransaction by sending an acknowledgment message to the host processing device responsive to identifying that the value of the current counter maintained at the memory controller equals the transaction identifier.

19 . A device comprising:

a processing-in-memory component configured to:

receive, from a memory controller associated with the processing-in-memory component, a request to execute at least one operation of a microtransaction that defines a subset of operations for a transaction identified by a transaction identifier; and

execute the at least one operation of the microtransaction in response to a counter value, of a current counter maintained at the memory controller, being equal to the transaction identifier.

20 . The method of claim 18 , wherein the acknowledgement message is sent by the memory controller in response to identifying that an operation queue of the processing-in-memory component has space to queue operations of the request.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 19, 2023
From: DUTU, ALEXANDRU; PUTHOOR, SOORAJ
To: ADVANCED MICRO DEVICES, INC
Reel/Frame 063987/0651 →
Continuity (1)
Related Publication 20240419330A1 · Dec 19, 2024
References Cited (39)
US 6734862B1 · Chapple et al. · 2004 [cited by applicant]
US 11086815B1 · Santan et al. · 2021 [cited by applicant]
US 11429315B1 · Pream et al. · 2022 [cited by applicant]
US 11934827B2 · Puthoor et al. · 2024 [cited by applicant]
US 12041179B2 · Shaw · 2024 [cited by examiner]
US 12461684B2 · Dutu et al. · 2025 [cited by applicant]
US 20120020371A1 · Nemawarkar et al. · 2012 [cited by applicant]
US 20130318280A1 · Dalal et al. · 2013 [cited by applicant]
US 20160026571A1 · Fukuyama · 2016 [cited by examiner]
US 20160276002A1 · Lee · 2016 [cited by examiner]
US 20170060588A1 · Choi · 2017 [cited by applicant]
US 20190041952A1 · Alameldeen et al. · 2019 [cited by applicant]
US 20200389402A1 · Goyal · 2020 [cited by applicant]
US 20220011939A1 · Singh · 2022 [cited by examiner]
US 20220114270A1 · Wang et al. · 2022 [cited by applicant]
US 20220206869A1 · Ramachandran et al. · 2022 [cited by applicant]
US 20220342551A1 · Bora · 2022 [cited by examiner]
US 20230099163A1 · Chu · 2023 [cited by examiner]
US 20230418474A1 · Kim et al. · 2023 [cited by applicant]
US 20240211256A1 · Puthoor et al. · 2024 [cited by applicant]
US 20240220160A1 · Dutu et al. · 2024 [cited by applicant]
U.S. Appl. No. 17/135,209 , “Non-Final Office Action”, U.S. Appl. No. 17/135,209, Jul. 7, 2023, 34 pages. [cited by applicant]
Aguilera, Paula , et al., “Fine-Grained Task Migration for Graph Algorithms Using Processing in Memory”, 2016 IEEE International Parallel and Distributed Processing Symposium Workshops (IPDPSW) [retrieved Aug. 10, 2023]… [cited by applicant]
Chu, Michael , et al., “High-level Programming Model Abstractions for Processing in Memory”, [retrieved Oct. 16, 2022]. Retrieved from the Internet <https://www.cs.utah.edu/wondp/wondp-pim-hlm-final.pdf>., 2013, 4 Pages. [cited by applicant]
Draper, Jeff , et al., “The Architecture of the DIVA Processing-In-Memory Chip”, ICS '02: Proceedings of the 16th international conference on Supercomputing [retrieved Aug. 10, 2023]. Retrieved from the Internet <https:… [cited by applicant]
Dutu, Alexandru , et al., “US Application as Filed”, U.S. Appl. No. 18/148,000, filed Dec. 29, 2022, 50 pages. [cited by applicant]
Lockerman, Elliot , et al., “Livia: Data-Centric Computing Throughout the Memory Hierarchy”, Proceedings of the Twenty-Fifth International Conference on Architectural Support for Programming Languages and Operating Syst… [cited by applicant]
Pattnaik, Ashutosh , et al., “Scheduling techniques for GPU architectures with processing-in-memory capabilities”, PACT '16: Proceedings of the 2016 International Conference on Parallel Architectures and Compilation [re… [cited by applicant]
Zois, Vasileios , et al., “Massively Parallel Skyline Computation for Processing-In-Memory Architectures”, PACT 18: Proceedings of the 27th International Conference on Parallel Architectures and Compilation Techniques [… [cited by applicant]
“Final Office Action”, U.S. Appl. No. 18/148,000, Dec. 12, 2024, 12 pages. [cited by applicant]
“Non-Final Office Action”, U.S. Appl. No. 18/148,000, Mar. 4, 2025, 11 pages. [cited by applicant]
U.S. Appl. No. 17/135,209, “Final Office Action”, U.S. Appl. No. 17/135,209, Feb. 1, 2024, 44 pages. [cited by applicant]
U.S. Appl. No. 17/135,209, “Non-Final Office Action”, U.S. Appl. No. 17/135,209, Sep. 10, 2024, 35 pages. [cited by applicant]
U.S. Appl. No. 18/148,000, “Non-Final Office Action”, U.S. Appl. No. 18/148,000, Jul. 18, 2024, 9 pages. [cited by applicant]
Hall, Mary W, et al., “Memory Management in a PIM-Based Architecture”, IMS '00: Revised Papers from the Second International Workshop on Intelligent Memory Systems, Nov. 2000, 18 pages. [cited by applicant]
Puthoor, Sooraj , et al., “US Application as Filed”, U.S. Appl. No. 18/601,006, filed Mar. 11, 2024, 30 pages. [cited by applicant]
“Final Office Action”, U.S. Appl. No. 17/135,209, Apr. 24, 2025, 40 pages. [cited by applicant]
“Corrected Notice of Allowability”, U.S. Appl. No. 18/148,000, Oct. 16, 2025, 2 pages. [cited by applicant]
“Notice of Allowance”, U.S. Appl. No. 18/148,000, Jul. 31, 2025, 7 pages. [cited by applicant]