Programmable atomic operator resource locking
AssigneeMicron Technology, Inc.
InventorTony Brewer
Life of this patent
Estimating the term…
Abstract
Devices and techniques for programmable atomic operator resource locking are described herein. A request for a programmable atomic operator (PAO) can be received at a memory controller that includes a programmable atomic unit (PAU). Here, the request includes an identifier for the PAO and a memory address. The memory addressed is processed to identify a lock value. A verification can be performed to determine that the lock value indicates that there is no lock corresponding to the memory address. Then, the lock value is set to indicate that there is now a lock corresponding to the memory address and the PAO is invoked based on the identifier for the PAO. In response to completion of the PAO, the lock value is set to indicate that there is no longer a lock corresponding to the memory address.
Claims27
An apparatus comprising:
- an interface couplable to a host or a chiplet in a chiplet system and configured to:
- receive a request for a programmable atomic operator, the request sent to a memory controller and including an identifier for the programmable atomic operator and a memory address;
- and
- to receive a second request for the programmable atomic operator, the second request including the memory address and the identifier for the programmable atomic operator, the second request arriving before completion of the programmable atomic operator invoked from the request;
- a memory arranged to hold a data structure configured to hold a lock value;
- hazard circuitry configured to:
- process the memory address to identify the lock value;
- verify that the lock value indicates that there is no lock corresponding to the memory address;
- set, in response to receipt of the request and verification that the lock value indicates that there is no lock corresponding to the memory address, the lock value to indicate that there is a lock corresponding to the memory address;
- process the memory address of the second request to identify the lock value;
- verify that the lock value indicates that there is a lock corresponding to the memory address;
- pause, in response to the verification that the lock value indicates that there is a lock corresponding to the memory address, the second request, wherein, to pause the second request, the hazard circuitry is configured to link the second request to an entry in a data structure that corresponds to the lock value for the memory address;
- set, in response to completion of the programmable atomic operator, the lock value to indicate that there is no lock corresponding to the memory address;
- and
- resume the second request when the lock value indicates that there is no lock corresponding to the memory address;
- and
- a programmable atomic unit configured to invoke the programmable atomic operator based on the identifier for the programmable atomic operator.
A method comprising:
- receiving, at a memory controller that includes a programmable atomic unit (PAU), a request for a programmable atomic operator, the request including an identifier for the programmable atomic operator and a memory address;
- processing the memory address to identify a lock value;
- verifying that the lock value indicates that there is no lock corresponding to the memory address;
- setting, in response to receipt of the request and verification that the lock value indicates that there is no lock corresponding to the memory address, the lock value to indicate that there is a lock corresponding to the memory address;
- invoking the programmable atomic operator based on the identifier for the programmable atomic operator;
- receiving a second request for the programmable atomic operator, the second request including the memory address and the identifier for the programmable atomic operator, the second request arriving before completion of the programmable atomic operator invoked from the request;
- processing the memory address of the second request to identify the lock value;
- verifying that the lock value indicates that there is a lock corresponding to the memory address;
- pausing, in response to the verification that the lock value indicates that there is a lock corresponding to the memory address, the second request, wherein pausing the second request includes linking the second request to an entry in a data structure that corresponds to the lock value for the memory address;
- setting, in response to completion of the programmable atomic operator, the lock value to indicate that there is no lock corresponding to the memory address;
- and
- resuming the second request when the lock value indicates that there is no lock corresponding to the memory address.
A non-transitory machine-readable medium including instructions that, when executed by circuitry of a memory controller, cause the memory controller to perform operations:
- receiving a request for a programmable atomic operator, the request including an identifier for the programmable atomic operator and a memory address;
- processing the memory address to identify a lock value;
- verifying that the lock value indicates that there is no lock corresponding to the memory address;
- setting, in response to receipt of the request and verification that the lock value indicates that there is no lock corresponding to the memory address, the lock value to indicate that there is a lock corresponding to the memory address;
- invoking the programmable atomic operator based on the identifier for the programmable atomic operator;
- receiving a second request for the programmable atomic operator, the second request including the memory address and the identifier for the programmable atomic operator, the second request arriving before completion of the programmable atomic operator invoked from the request;
- processing the memory address of the second request to identify the lock value;
- verifying that the lock value indicates that there is a lock corresponding to the memory address;
- pausing, in response to the verification that the lock value indicates that there is a lock corresponding to the memory address, the second request, wherein pausing the second request includes linking the second request to an entry in a data structure that corresponds to the lock value for the memory address;
- setting, in response to completion of the programmable atomic operator, the lock value to indicate that there is no lock corresponding to the memory address;
- and
- resuming the second request when the lock value indicates that there is no lock corresponding to the memory address.
Dependencies are inferred from the claim text.