IP Library › Granted Patent US 12,236,120
Granted Patent B2
US 12,236,120 · App. 17/870,254 · Granted Feb 25, 2025

Method of organizing a programmable atomic unit instruction memory

Inventor: Tony Brewer (Plano, TX)
Assignee: Micron Technology, Inc.
G06F3/0644G06F3/061G06F3/0679G06F12/0253G06F13/1668G06F2212/7205G06F2213/16
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,236,120
App. No.
17/870,254
Granted
Feb 25, 2025
Kind
B2
Abstract

Disclosed in some examples, are methods, systems, devices, and machine readable mediums that store instructions for programmable atomic transactions in a memory of the programmable atomic unit prior to execution of the programmable atomic transaction. The memory in some examples may be an instruction RAM. The memory in some examples may be partitioned into partitions of a fixed size that stores a same number of instructions. Each programmable atomic transaction may use one or more contiguously located instruction partitions. By loading the instructions ahead of time, the instructions are ready for execution when the transaction is requested.

Claims (51)

1. An apparatus comprising:

a memory controller comprising a programmable atomic unit, the programmable atomic unit comprising:

a memory partitioned into multiple partitions;

a processor, the processor configured to:

store instructions of a programmable atomic operation in multiple contiguous partitions of the memory;

update a control structure to identify a number of the multiple contiguous partitions in which the instructions are stored;

receive, at the programmable atomic unit, a request from a requesting processor to execute the programmable atomic operation, the request specifying the programmable atomic operation by specifying a first partition on which the instructions are stored, the first partition one of the multiple contiguous partitions;

execute the instructions of the programmable atomic operation to modify a value of a memory controlled by the memory controller, the execution of the instructions starting at instructions stored in the first partition in the memory and, for each current instruction executed, verifying that the current instruction is within one of the multiple contiguous partitions; and

responsive to reaching a last instruction, send a response to the requesting processor.

2. The apparatus of claim 1 , wherein the processor is further configured to:

receive a message identifying the instructions of the programmable atomic operation; and

responsive to receipt of the message, store the instructions in the multiple contiguous partitions.

3. The apparatus of claim 2 , wherein the message is received from the requesting processor over a packet-based network.

4. The apparatus of claim 1 , wherein the processor is further configured to:

receive a second request to execute a second programmable atomic transaction, the request specifying a second partition;

determine that the second partition does not have any instructions based upon a value of a validity flag of the control structure corresponding to the second partition; and

send a second response to the requesting processor indicating that the second programmable atomic transaction failed.

5. The apparatus of claim 1 , wherein the control structure includes a maximum number of instructions to execute and wherein the processor is configured to execute the instructions by comparing a number of instructions executed within the maximum number of instructions.

6. The apparatus of claim 1 , wherein the response includes a status code.

7. A method comprising:

storing instructions of a programmable atomic operation in multiple contiguous partitions of a memory of a programmable atomic unit, the programmable atomic unit part of a memory controller;

updating a control structure to identify a number of the multiple contiguous partitions in which the instructions are stored;

receiving, at the programmable atomic unit, a request from a requesting processor to execute the programmable atomic operation, the request specifying the programmable atomic operation by specifying a first partition on which the instructions are stored, the first partition one of the multiple contiguous partitions;

executing the instructions of the programmable atomic operation to modify a value of a memory controlled by the memory controller, the execution of the instructions starting at instructions stored in the first partition in the memory and, for each current instruction executed, verifying that the current instruction is within one of the multiple contiguous partitions; and

responsive to reaching a last instruction, sending a response to the requesting processor.

8. The method of claim 7 , further comprising:

receiving a message identifying the instructions of the programmable atomic operation; and

responsive to receiving the message, storing the instructions in the multiple contiguous partitions.

9. The method of claim 8 , wherein the message is received from the requesting processor over a packet-based network.

10. The method of claim 7 , comprising:

receiving a second request to execute a second programmable atomic transaction, the request specifying a second partition;

determining that the second partition does not have any instructions based upon a value of a validity flag of the control structure corresponding to the second partition; and

sending a second response to the requesting processor indicating that the second programmable atomic transaction failed.

11. The method of claim 7 , wherein the control structure includes a maximum number of instructions to execute and wherein executing the instructions comprises comparing a number of instructions executed within the maximum number of instructions.

12. The method of claim 7 , wherein the response includes a status code.

13. The method of claim 7 , wherein the programmable atomic unit is part of a memory controller, and wherein the instructions of the programmable atomic transaction comprise instructions to modify a value of a memory location controlled by the memory controller.

14. A non-transitory, machine-readable medium storing instructions, which when executed by a machine, cause the machine to perform operations comprising:

storing instructions of a programmable atomic operation in multiple contiguous partitions of a memory of a programmable atomic unit, the programmable atomic unit part of a memory controller;

updating a control structure to identify a number of the multiple contiguous partitions in which the instructions are stored;

receiving, at the programmable atomic unit, a request from a requesting processor to execute the programmable atomic operation, the request specifying the programmable atomic operation by specifying a first partition on which the instructions are stored, the first partition one of the multiple contiguous partitions;

executing the instructions of the programmable atomic operation to modify a value of a memory controlled by the memory controller, the execution of the instructions starting at instructions stored in the first partition in the memory and, for each current instruction executed, verifying that the current instruction is within one of the multiple contiguous partitions; and

responsive to reaching a last instruction, sending a response to the requesting processor.

15. The non-transitory, machine-readable medium of claim 14 , wherein the operations further comprise:

receiving a message identifying the instructions of the programmable atomic operation; and

responsive to receiving the message, storing the instructions in the multiple contiguous partitions.

16. The non-transitory, machine-readable medium of claim 15 , wherein the message is received from the requesting processor over a packet-based network.

17. The non-transitory, machine-readable medium of claim 14 , wherein the operations further comprise:

receiving a second request to execute a second programmable atomic transaction, the request specifying a second partition;

determining that the second partition does not have any instructions based upon a value of a validity flag of the control structure corresponding to the second partition; and

sending a second response to the requesting processor indicating that the second programmable atomic transaction failed.

18. The non-transitory, machine-readable medium of claim 14 , wherein the control structure includes a maximum number of instructions to execute and wherein executing the instructions comprises comparing a number of instructions executed within the maximum number of instructions.

Continuity (2)
Continuation 17074802 · Oct 20, 2020
Related Publication 20230195348A1 · Jun 22, 2023
References Cited (171)
US 7197445B1 · Deepak et al. · 2007 [cited by applicant]
US 7447794B1 · Miller et al. · 2008 [cited by applicant]
US 7941641B1 · Jung · 2011 [cited by applicant]
US 8122229B2 · Wallach et al. · 2012 [cited by applicant]
US 8156307B2 · Wallach et al. · 2012 [cited by applicant]
US 8205066B2 · Brewer et al. · 2012 [cited by applicant]
US 8423745B1 · Brewer · 2013 [cited by applicant]
US 8560816B2 · Goodman et al. · 2013 [cited by applicant]
US 8561037B2 · Brewer et al. · 2013 [cited by applicant]
US 8739164B2 · Chung et al. · 2014 [cited by applicant]
US 9355109B2 · Archak · 2016 [cited by examiner]
US 9710384B2 · Wallach et al. · 2017 [cited by applicant]
US 10007520B1 · Ross · 2018 [cited by applicant]
US 10642538B1 · MacLaren et al. · 2020 [cited by applicant]
US 10733171B2 · Park · 2020 [cited by applicant]
US 10783295B1 · Dong et al. · 2020 [cited by applicant]
US 10896001B1 · Volpe et al. · 2021 [cited by applicant]
US 10990391B2 · Brewer · 2021 [cited by applicant]
US 10990392B2 · Brewer · 2021 [cited by applicant]
US 11436187B2 · Brewer · 2022 [cited by applicant]
US 11586439B2 · Brewer · 2023 [cited by applicant]
US 11693690B2 · Brewer · 2023 [cited by applicant]
US 11740929B2 · Brewer · 2023 [cited by applicant]
US 11829323B2 · Brewer · 2023 [cited by applicant]
US 11989556B2 · Brewer · 2024 [cited by applicant]
US 12020062B2 · Brewer · 2024 [cited by applicant]
US 20060004882A1 · Itikarlapalli et al. · 2006 [cited by applicant]
US 20080040587A1 · Burke et al. · 2008 [cited by applicant]
US 20080270708A1 · Warner et al. · 2008 [cited by applicant]
US 20090198920A1 · Arimilli et al. · 2009 [cited by applicant]
US 20090282410A1 · Moir et al. · 2009 [cited by applicant]
US 20100106934A1 · Calder · 2010 [cited by examiner]
US 20100205408A1 · Chung et al. · 2010 [cited by applicant]
US 20100218049A1 · Mostow · 2010 [cited by applicant]
US 20110246724A1 · Marathe et al. · 2011 [cited by applicant]
US 20120066457A1 · Hertzberg et al. · 2012 [cited by applicant]
US 20120079177A1 · Brewer et al. · 2012 [cited by applicant]
US 20120159127A1 · Spradlin · 2012 [cited by applicant]
US 20120198205A1 · Eilert · 2012 [cited by applicant]
US 20120311544A1 · Higgs et al. · 2012 [cited by applicant]
US 20120323972A1 · Ostrovsky · 2012 [cited by applicant]
US 20130332711A1 · Leidel et al. · 2013 [cited by applicant]
US 20140089635A1 · Shifer et al. · 2014 [cited by applicant]
US 20140136799A1 · Fortin · 2014 [cited by applicant]
US 20140164677A1 · Borchers et al. · 2014 [cited by applicant]
US 20140195784A1 · Ivanov · 2014 [cited by applicant]
US 20140281442A1 · O'Sullivan et al. · 2014 [cited by applicant]
US 20140325126A1 · Choi et al. · 2014 [cited by applicant]
US 20140344236A1 · Xiao · 2014 [cited by examiner]
US 20150089173A1 · Chhabra et al. · 2015 [cited by applicant]
US 20150095600A1 · Bahnsen et al. · 2015 [cited by applicant]
US 20150106595A1 · Khot · 2015 [cited by examiner]
US 20150143350A1 · Brewer · 2015 [cited by applicant]
US 20150178187A1 · Sheffler et al. · 2015 [cited by applicant]
US 20150188816A1 · Snyder, II · 2015 [cited by examiner]
US 20150206561A1 · Brewer et al. · 2015 [cited by applicant]
US 20150278097A1 · Kelm et al. · 2015 [cited by applicant]
US 20150293835A1 · Park et al. · 2015 [cited by applicant]
US 20160283237A1 · Pardo et al. · 2016 [cited by applicant]
US 20170083257A1 · Jain et al. · 2017 [cited by applicant]
US 20170177365A1 · Doshi et al. · 2017 [cited by applicant]
US 20170185354A1 · Doshi et al. · 2017 [cited by applicant]
US 20180173625A1 · Moudgill et al. · 2018 [cited by applicant]
US 20180203783A1 · Ishizaki · 2018 [cited by applicant]
US 20180357065A1 · Bhartia et al. · 2018 [cited by applicant]
US 20190004810A1 · Jayasimha et al. · 2019 [cited by applicant]
US 20190004851A1 · Doshi et al. · 2019 [cited by applicant]
US 20190042214A1 · Brewer · 2019 [cited by applicant]
US 20190065188A1 · Shippy et al. · 2019 [cited by applicant]
US 20190171604A1 · Brewer · 2019 [cited by applicant]
US 20190243700A1 · Brewer · 2019 [cited by applicant]
US 20190272119A1 · Brewer · 2019 [cited by applicant]
US 20190303154A1 · Brewer · 2019 [cited by applicant]
US 20190303328A1 · Balski et al. · 2019 [cited by applicant]
US 20190324928A1 · Brewer · 2019 [cited by applicant]
US 20190340019A1 · Brewer · 2019 [cited by applicant]
US 20190340020A1 · Brewer · 2019 [cited by applicant]
US 20190340023A1 · Brewer · 2019 [cited by applicant]
US 20190340024A1 · Brewer · 2019 [cited by applicant]
US 20190340027A1 · Brewer · 2019 [cited by applicant]
US 20190340035A1 · Brewer · 2019 [cited by applicant]
US 20190340154A1 · Brewer · 2019 [cited by applicant]
US 20190340155A1 · Brewer · 2019 [cited by applicant]
US 20200026461A1 · Tune · 2020 [cited by applicant]
US 20200310684A1 · Fowler · 2020 [cited by applicant]
US 20210055964A1 · Brewer · 2021 [cited by applicant]
US 20210064374A1 · Brewer · 2021 [cited by applicant]
US 20210064435A1 · Brewer · 2021 [cited by applicant]
US 20210149600A1 · Brewer · 2021 [cited by applicant]
US 20210326255A1 · Gu et al. · 2021 [cited by applicant]
US 20220121381A1 · Brewer · 2022 [cited by applicant]
US 20220121474A1 · Brewer · 2022 [cited by applicant]
US 20220121476A1 · Brewer · 2022 [cited by applicant]
US 20220121617A1 · Brewer · 2022 [cited by applicant]
US 20230004524A1 · Brewer · 2023 [cited by applicant]
US 20230027534A1 · Brewer · 2023 [cited by applicant]
US 20230205524A1 · Brewer · 2023 [cited by applicant]
US 20230251894A1 · Brewer · 2023 [cited by applicant]
US 20240054100A1 · Brewer · 2024 [cited by applicant]
CN 103299272A · 2013 [cited by applicant]
CN 103473181A · 2013 [cited by applicant]
CN 105359099A · 2016 [cited by applicant]
CN 105550126A · 2016 [cited by applicant]
CN 108027804A · 2018 [cited by applicant]
CN 110168500A · 2019 [cited by applicant]
CN 111656334A · 2020 [cited by applicant]
CN 111656335 · 2020 [cited by applicant]
CN 114385240A · 2022 [cited by applicant]
CN 114385241A · 2022 [cited by applicant]
CN 114388040A · 2022 [cited by applicant]
CN 114388040B · 2023 [cited by applicant]
CN 116547644A · 2023 [cited by applicant]
CN 116583831A · 2023 [cited by applicant]
CN 116601601A · 2023 [cited by applicant]
EP 0217168A2 · 1987 [cited by applicant]
WO WO2010051167A1 · 2010 [cited by applicant]
WO WO2010151813A1 · 2010 [cited by applicant]
WO WO2013184380A2 · 2013 [cited by applicant]
WO WO2019191740A1 · 2019 [cited by applicant]
WO WO2019191742A1 · 2019 [cited by applicant]
WO WO2019191744A1 · 2019 [cited by applicant]
WO WO2019197811A1 · 2019 [cited by applicant]
WO WO2019217287A1 · 2019 [cited by applicant]
WO WO2019217295A1 · 2019 [cited by applicant]
WO WO2019217324A1 · 2019 [cited by applicant]
WO WO2019217326A1 · 2019 [cited by applicant]
WO WO2019217329A1 · 2019 [cited by applicant]
WO WO2019089816A3 · 2020 [cited by applicant]
WO WO2022086789A1 · 2022 [cited by applicant]
WO WO2022086791A1 · 2022 [cited by applicant]
WO WO2022115166A2 · 2022 [cited by applicant]
WO WO2022115166A3 · 2022 [cited by applicant]
“International Application Serial No. PCT/US2021/055038, International Search Report mailed Jan. 28, 2022”, 3 pgs. [cited by applicant]
“International Application Serial No. PCT/US2021/055038, Written Opinion mailed Jan. 28, 2022”, 3 pgs. [cited by applicant]
“International Application Serial No. PCT/US2021/055050, International Search Report mailed Feb. 3, 2022”, 3 pgs. [cited by applicant]
“International Application Serial No. PCT/US2021/055050, Written Opinion mailed Feb. 3, 2022”, 3 pgs. [cited by applicant]
Hennessy, John L, et al., “Computer Architecture—A Quantitative Approach (4th Edition)”, Elsevier, <https://app.knovel.com/hotlink/toc/id:kpCAAQAE02/computer-architecture/computer-architecture>, (2007), 107 pgs. [cited by applicant]
“Chinese Application Serial No. 202111215429.9, Voluntary Amendment filed Aug. 12, 2022”, with English claims, 26 pages. [cited by applicant]
“Chinese Application Serial No. 202111222969.X, Voluntary Amendment filed Aug. 11, 2022”, with English claims, 18 pages. [cited by applicant]
“Chinese Application Serial No. 202111215429.9, Decision of Rejection mailed Mar. 25, 2023”, with WIPO machine English translation, 17 pages. [cited by applicant]
“Chinese Application Serial No. 202111215429.9, Office Action mailed Oct. 26, 2022”, with English translation, 16 pages. [cited by applicant]
“Chinese Application Serial No. 202111222969.X, Office Action mailed Nov. 22, 2022”, with English translation, 9 pages. [cited by applicant]
“International Application Serial No. PCT/US2021/053792, International Preliminary Report on Patentability mailed May 4, 2023”, 6 pgs. [cited by applicant]
“International Application Serial No. PCT/US2021/053792, International Search Report mailed Jul. 28, 2022”, 4 pgs. [cited by applicant]
“International Application Serial No. PCT/US2021/053792, Written Opinion mailed Jul. 28, 2022”, 4 pgs. [cited by applicant]
“International Application Serial No. PCT/US2021/055038, International Preliminary Report on Patentability mailed May 4, 2023”, 5 pgs. [cited by applicant]
“International Application Serial No. PCT/US2021/055050, International Preliminary Report on Patentability mailed May 4, 2023”, 5 pgs. [cited by applicant]
Wang, H, et al., “An Enhanced HyperTransport Controller with Cache Coherence Support or Multiple-CMP”, 2009 IEEE International Conference on Networking, Architecture, and Storage, doi: 10.1109/NAS.2009.46, (2009), 215-2… [cited by applicant]
U.S. Appl. No. 17/901,480 U.S. Pat. No. 11,829,323, filed Sep. 1, 2022, Method of Notifying a Process or Programmable Atomic Operation Traps. [cited by applicant]
U.S. Appl. No. 18/383,311, filed Oct. 24, 2023, Method of Notifying a Process or Programmable Atomic Operation Traps. [cited by applicant]
U.S. Appl. No. 18/748,957, filed Jun. 20, 2024, Method of Executing Programmable Atomic Unit Resources Within a Mutil-Process System. [cited by applicant]
U.S. Appl. No. 18/111,744 U.S. Pat. No. 11,989,556, filed Feb. 20, 2023, Detecting Infinite Loops in a Programmable Atomic Transaction. [cited by applicant]
U.S. Appl. No. 18/669,104, filed May 20, 2024, Detecting Infinite Loops in a Programmable Atomic Transaction. [cited by applicant]
U.S. Appl. No. 17/074,770, Non Final Office Action mailed Aug. 24, 2022, 15 pgs. [cited by applicant]
U.S. Appl. No. 17/074,770, Response filed Nov. 23, 2022 to Non Final Office Action mailed Aug. 24, 2022, 12 pgs. [cited by applicant]
U.S. Appl. No. 17/074,770, Notice of Allowance mailed Feb. 21, 2023, 8 pgs. [cited by applicant]
U.S. Appl. No. 17/074,811, Ex Parte Quayle Action mailed Aug. 1, 2023, 6 pgs. [cited by applicant]
U.S. Appl. No. 17/074,811, Response filed Oct. 2, 2023 to Ex Parte Quayle Action mailed Aug. 1, 2023, 10 pgs. [cited by applicant]
U.S. Appl. No. 17/074,811, Notice of Allowance mailed Oct. 25, 2023, 7 pgs. [cited by applicant]
U.S. Appl. No. 17/074,811, Supplemental Notice of Allowability mailed Dec. 4, 2023, 4 pgs. [cited by applicant]
U.S. Appl. No. 17/074,779, 312 Amendment filed Jul. 22, 2022, 6 pgs. [cited by applicant]
U.S. Appl. No. 17/074,779, PTO Response to Rule 312 Communication mailed Aug. 1, 2022, 2 pgs. [cited by applicant]
U.S. Appl. No. 17/074,823, Ex Parte Quayle Action mailed Sep. 1, 2022, 8 pgs. [cited by applicant]
U.S. Appl. No. 17/074,823, Response filed Nov. 1, 2022 to Ex Parte Quayle Action mailed Sep. 1, 2022, 9 pgs. [cited by applicant]
U.S. Appl. No. 17/074,823, Notice of Allowance mailed Jan. 5, 2023, 9 pgs. [cited by applicant]
U.S. Appl. No. 17/074,823, Notice of Allowance mailed Apr. 17, 2023, 11 pgs. [cited by applicant]
U.S. Appl. No. 17/074,834, Notice of Allowance mailed Oct. 20, 2022, 8 pgs. [cited by applicant]
U.S. Appl. No. 17/901,480, Notice of Allowance mailed Jul. 19, 2023, 12 pgs. [cited by applicant]
U.S. Appl. No. 18/111,744, Notice of Allowance mailed Sep. 15, 2023, 7 pgs. [cited by applicant]
U.S. Appl. No. 18/111,744, Notice of Allowance mailed Jan. 18, 2024, 7 pgs. [cited by applicant]
“Chinese Application Serial No. 202111224820.5, Office Action mailed Aug. 14, 2024”, with English translation, 12 pages. [cited by applicant]