Atomic execution of processing-in-memory operations
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.
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.