IP Library › Granted Patent US 12,517,669
Granted Patent B2
US 12,517,669 · App. 17/954,784 · Granted Jan 6, 2026

Scheduling processing-in-memory requests and memory requests

Inventors: Niti Madan (Bee Cave, TX); Johnathan Robert Alsop (Seattle, WA); Alexandru Dutu (Kirkland, WA); Mahzabeen Islam (Dripping Springs, TX); Yasuko Eckert (Redmond, WA); Nuwan S Jayasena (Cupertino, CA)
Assignee: Advanced Micro Devices, Inc.
G06F3/064G06F3/0613G06F3/0659G06F3/0604G06F3/0679
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,517,669
App. No.
17/954,784
Granted
Jan 6, 2026
Kind
B2
Abstract

A memory controller coupled to a memory module receives both processing-in-memory (PIM) requests and memory requests from a host (e.g., a host processor). The memory controller issues PIM requests to one group of memory banks and concurrently issues memory requests to one or more other groups of memory banks. Accordingly, memory requests are performed on groups of memory banks that would otherwise be idle while PIM requests are performed on the one group of memory banks. Optionally, the memory controller coupled to the memory module also takes various actions when switching between operating in a PIM mode and a non-processing-in-memory mode to reduce or hide overhead when switching between the two modes.

Claims (48)

1 . A method comprising:

switching into a processing-in-memory mode which interleaves processing-in-memory requests and memory requests; and

in the processing-in-memory mode:

identifying one or more groups of memory banks of a processing-in-memory block that are idle while one or more processing-in-memory requests are being performed on the processing-in-memory block; and

issuing one or more memory requests on the one or more groups of memory banks that are idle while the one or more processing-in-memory requests are being performed on the processing-in-memory block.

2 . The method of claim 1 , further comprising:

determining a length of a processing-in-memory sequence that includes the one or more processing-in-memory requests; and

issuing, based at least in part on the length, one or more memory requests to the one or more groups of memory banks that are idle.

3 . The method of claim 1 , wherein the switching into the processing-in-memory mode is in response to determining that the one or more memory requests have a priority level above a predetermined threshold.

4 . The method of claim 1 , wherein the switching into the processing-in-memory mode is in response to determining that memory command latency restrictions allow for higher command bandwidth when processing-in-memory requests and memory requests are interleaved than when processing-in-memory requests alone are issued.

5 . The method of claim 1 , wherein the switching into the processing-in-memory mode is in response to determining that the one or more processing-in-memory requests are unable to fully utilize a memory command bus.

6 . The method of claim 1 , wherein the switching into the processing-in-memory mode is in response to determining that the one or more processing-in-memory requests will result in a first number of row buffer conflicts and a second number of row buffer hits, no more than the first number of memory requests that result in row buffer conflicts in the one or more groups of memory banks that are idle, and no more than the second number of memory requests that result in row buffer hits in the one or more groups of memory banks that are idle.

7 . The method of claim 1 , further comprising:

determining to switch from the processing-in-memory mode to a non-processing-in-memory mode; and

while a last one or more processing-in-memory requests are being performed, closing one or more rows in the one or more groups of memory banks that are idle and opening a row targeted by a next memory request to be executed in the non-processing-in-memory mode.

8 . The method of claim 7 , further comprising:

determining to switch from the non-processing-in-memory mode to the processing-in-memory mode; and

delaying closing one or more rows in the one or more groups of memory banks that are idle while at least one processing-in-memory request is performed on another one or more groups of memory banks of the processing-in-memory block.

9 . The method of claim 1 , wherein the method is implemented in a memory controller coupled to the processing-in-memory block.

10 . A system comprising:

a processing-in-memory block; and

a memory controller configured to:

switch into a processing-in-memory mode which interleaves processing-in-memory requests and memory requests; and

in the processing-in-memory mode:

identify one or more groups of memory banks of the processing-in-memory block that are idle while one or more processing-in-memory requests are being performed on the processing-in-memory block; and

issue one or more memory requests to the one or more groups of memory banks that are idle while the one or more processing-in-memory requests are being performed on the processing-in-memory block.

11 . The system of claim 10 , wherein the memory controller is further configured to:

determine a length of a processing-in-memory sequence that includes the one or more processing-in-memory requests; and

issue, based at least in part on the length, one or more memory requests to the one or more groups of memory banks that are idle.

12 . The system of claim 10 , wherein the memory controller is further configured to switch into the processing-in-memory mode in response to determining that the one or more memory requests have a priority level above a predetermined threshold.

13 . The system of claim 10 , wherein the memory controller is further configured to switch into the processing-in-memory mode in response to determining that memory command latency restrictions allow for higher command bandwidth when processing-in-memory requests and memory requests are interleaved than when processing-in-memory requests alone are issued.

14 . The system of claim 10 , wherein the memory controller is further configured to:

determine that the one or more processing-in-memory requests are unable to fully utilize a memory command bus; and

issue, in response to the one or more processing-in-memory requests being unable to fully utilize a memory command bus, the one or more memory requests to the one or more groups of memory banks that are idle.

15 . The system of claim 10 , wherein the memory controller is further configured switch into the processing-in-memory mode in response to determining that the one or more processing-in-memory requests will result in a first number of row buffer conflicts and a second number of row buffer hits, no more than the first number of memory requests that result in row buffer conflicts in the one or more groups of memory banks that are idle, and no more than the second number of memory requests that result in row buffer hits in the one or more groups of memory banks that are idle.

16 . The system of claim 10 , wherein the memory controller is further configured to:

determine to switch from the processing-in-memory mode to a non-processing-in-memory mode; and

while a last one or more processing-in-memory requests are being performed, close one or more rows in the one or more groups of memory banks that are idle and open a row targeted by a next memory request to be executed in the non-processing-in-memory mode.

17 . The system of claim 16 , wherein the memory controller is further configured to:

determine to switch from the non-processing-in-memory mode to the processing-in-memory mode; and

delay closing one or more rows in the one or more groups of memory banks that are idle while at least one processing-in-memory request is performed on another one or more groups of memory banks of the processing-in-memory block.

18 . A computing device comprising:

a memory controller configured to:

switch into a processing-in-memory mode which interleaves processing-in-memory request and memory requests by issuing one or more memory requests to one or more groups of memory banks that are idle while one or more processing-in-memory requests are being performed on a processing-in-memory block; and

switch from the processing-in-memory mode to a non-processing-in-memory mode; and

while a last one or more processing-in-memory requests are being performed, close one or more rows in one or more groups of memory banks that are idle and open a row targeted by a next memory request to be executed in the non-processing-in-memory mode.

19 . The computing device of claim 18 , wherein the memory controller is configured to switch between the processing-in-memory mode and a non-processing-in-memory mode based on priority levels of processing-in-memory requests and memory requests.

20 . The computing device of claim 18 , wherein the memory controller is configured to switch between the processing-in-memory mode and a non-processing-in-memory mode based on a number of processing-in-memory requests and memory requests.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 1, 2022
From: MADAN, NITI; ALSOP, JOHNATHAN ROBERT; DUTU, ALEXANDRU; ISLAM, MAHZABEEN; ECKERT, YASUKO; JAYASENA, NUWAN S
To: ADVANCED MICRO DEVICES, INC.
Reel/Frame 061616/0680 →
Continuity (1)
Related Publication 20240103745A1 · Mar 28, 2024
References Cited (77)
US 5101485A · Perazzoli, Jr. · 1992 [cited by applicant]
US 6694400B1 · Lai · 2004 [cited by examiner]
US 9836232B1 · Vasquez · 2017 [cited by examiner]
US 9892803B2 · Reed · 2018 [cited by examiner]
US 10768859B1 · Kim et al. · 2020 [cited by applicant]
US 10891228B2 · Steinmacher-Burow · 2021 [cited by examiner]
US 12032925B1 · Kim et al. · 2024 [cited by applicant]
US 12033710B2 · Wong et al. · 2024 [cited by applicant]
US 12066950B2 · Madan et al. · 2024 [cited by applicant]
US 12131026B2 · Dutu et al. · 2024 [cited by applicant]
US 12204774B2 · Dutu et al. · 2025 [cited by applicant]
US 12236134B2 · Islam et al. · 2025 [cited by applicant]
US 20110161784A1 · Selinger · 2011 [cited by examiner]
US 20120069034A1 · Biswas et al. · 2012 [cited by applicant]
US 20140325148A1 · Choi · 2014 [cited by examiner]
US 20140365719A1 · Kuzmin · 2014 [cited by examiner]
US 20150187043A1 · Shebanow et al. · 2015 [cited by applicant]
US 20160246713A1 · Choi · 2016 [cited by examiner]
US 20170300422A1 · Szubbocsev · 2017 [cited by examiner]
US 20180188970A1 · Liu et al. · 2018 [cited by applicant]
US 20190034097A1 · Chang et al. · 2019 [cited by applicant]
US 20190065115A1 · Kwon · 2019 [cited by examiner]
US 20190079678A1 · Malladi · 2019 [cited by examiner]
US 20190392886A1 · Cox et al. · 2019 [cited by applicant]
US 20200050397A1 · Meyerowitz · 2020 [cited by examiner]
US 20200174749A1 · Kang et al. · 2020 [cited by applicant]
US 20200294558A1 · Yu et al. · 2020 [cited by applicant]
US 20200356305A1 · Kim et al. · 2020 [cited by applicant]
US 20210110876A1 · Seo et al. · 2021 [cited by applicant]
US 20210150311A1 · Zhou et al. · 2021 [cited by applicant]
US 20210182190A1 · Gao et al. · 2021 [cited by applicant]
US 20210271599A1 · Sharovar · 2021 [cited by applicant]
US 20210311634A1 · Chang et al. · 2021 [cited by applicant]
US 20210382828A1 · Li · 2021 [cited by examiner]
US 20220076717A1 · Mathew et al. · 2022 [cited by applicant]
US 20220121398A1 · Nale · 2022 [cited by examiner]
US 20220164251A1 · He · 2022 [cited by examiner]
US 20220164297A1 · Sity · 2022 [cited by examiner]
US 20220206855A1 · Challapalle · 2022 [cited by examiner]
US 20220229575A1 · Chen · 2022 [cited by examiner]
US 20220253247A1 · Kim et al. · 2022 [cited by applicant]
US 20220253248A1 · Yoon et al. · 2022 [cited by applicant]
US 20220283719A1 · Eyerman · 2022 [cited by examiner]
US 20220292033A1 · Yu et al. · 2022 [cited by applicant]
US 20220374166A1 · La Fratta et al. · 2022 [cited by applicant]
US 20230115296A1 · Jaser et al. · 2023 [cited by applicant]
US 20230205705A1 · Poremba et al. · 2023 [cited by applicant]
US 20230205706A1 · Madan · 2023 [cited by examiner]
US 20230409238A1 · Aga et al. · 2023 [cited by applicant]
US 20240004585A1 · Ibrahim · 2024 [cited by examiner]
US 20240103763A1 · Islam · 2024 [cited by examiner]
US 20240160364A1 · Dutu et al. · 2024 [cited by applicant]
US 20240168639A1 · Aga et al. · 2024 [cited by applicant]
US 20240184702A1 · Gouldey · 2024 [cited by examiner]
US 20240220107A1 · Dutu · 2024 [cited by examiner]
US 20240220127A1 · Lee et al. · 2024 [cited by applicant]
WO 2024072862A1 · 2024 [cited by applicant]
U.S. Appl. No. 17/953,723 , “Non-Final Office Action”, U.S. Appl. No. 17/953,723, Jun. 11, 2024, 13 pages. [cited by applicant]
U.S. Appl. No. 17/986,623 , “Non-Final Office Action”, U.S. Appl. No. 17/986,623, Feb. 14, 2024, 12 pages. [cited by applicant]
Aga, Shaizeen , et al., “Co-ML: a Case for Collaborative ML Acceleration using Near-data Processing”, Proceedings of the International Symposium on Memory Systems [retrieved May 27, 2022]. Retrieved from the Internet <h… [cited by applicant]
Dutu, A , et al., “US Application as Filed”, U.S. Appl. No. 17/986,623, filed Nov. 14, 2022, 37 pages. [cited by applicant]
Islam, Mahzabeen , et al., “US Application as Filed”, U.S. Appl. No. 17/953,723, filed Sep. 27, 2022, 52 pages. [cited by applicant]
Madan, Niti , et al., “US Application as Filed”, U.S. Appl. No. 17/855,109, filed Jun. 30, 2022, 44 pages. [cited by applicant]
Madan, Niti , et al., “US Application as Filed”, U.S. Appl. No. 17/561,454, filed Dec. 23, 2021, 35 pages. [cited by applicant]
U.S. Appl. No. 17/953,723 , “Restriction Requirement”, U.S. Appl. No. 17/953,723, Feb. 20, 2024, 6 pages. [cited by applicant]
PCT/US2023/033820 , “International Seach Report and Written Opinion”, PCT Application No. PCT/US2023/033820, Jan. 18, 2024, 7 pages. [cited by applicant]
U.S. Appl. No. 17/561,454 , “Final Office Action”, U.S. Appl. No. 17/561,454, Apr. 12, 2023, 13 pages. [cited by applicant]
U.S. Appl. No. 17/561,454 , “Non-Final Office Action”, U.S. Appl. No. 17/561,454, Oct. 13, 2023, 11 pages. [cited by applicant]
U.S. Appl. No. 17/561,454 , “Non-Final Office Action”, U.S. Appl. No. 17/561,454, Oct. 19, 2022, 11 pages. [cited by applicant]
U.S. Appl. No. 18/090,916 , “Notice of Allowance”, U.S. Appl. No. 18/090,916, Jul. 23, 2024, 9 pages. [cited by applicant]
U.S. Appl. No. 17/953,723 , “Corrected Notice of Allowability”, U.S. Appl. No. 17/953,723, Nov. 1, 2024, 2 pages. [cited by applicant]
U.S. Appl. No. 17/953,723 , “Corrected Notice of Allowability”, U.S. Appl. No. 17/953,723, Dec. 10, 2024, 3 pages. [cited by applicant]
U.S. Appl. No. 17/953,723 , “Notice of Allowance”, U.S. Appl. No. 17/953,723, Oct. 22, 2024, 5 pages. [cited by applicant]
U.S. Appl. No. 17/954,784 , “Notice of Allowance”, U.S. Appl. No. 17/954,784, Sep. 24, 2024, 8 pages. [cited by applicant]
U.S. Appl. No. 17/986,623 , “Notice of Allowance”, U.S. Appl. No. 17/986,623, Sep. 24, 2024, 8 pages. [cited by applicant]
U.S. Appl. No. 18/090,916 , “Supplemental Notice of Allowability”, U.S. Appl. No. 18/090,916, Sep. 30, 2024, 4 pages. [cited by applicant]
“Corrected Notice of Allowability”, U.S. Appl. No. 17/953,723, Jan. 13, 2025, 3 pages. [cited by applicant]