IP Library › Granted Patent US 12,360,912
Granted Patent B2
US 12,360,912 · App. 17/561,406 · Granted Jul 15, 2025

Approach for providing indirect addressing in memory modules

Inventors: Matthew R. Poremba (Bellevue, WA); Alexandru Dutu (Bellevue, WA); Sooraj Puthoor (Austin, TX)
Assignee: Advanced Micro Devices, Inc.
G06F12/10
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,360,912
App. No.
17/561,406
Granted
Jul 15, 2025
Kind
B2
Abstract

An approach provides indirect addressing support for PIM. Indirect PIM commands include address translation information that allows memory modules to perform indirect addressing. Processing logic in a memory module processes an indirect PIM command and retrieves, from a first memory location, a virtual address of a second memory location. The processing logic calculates a corresponding physical address for the virtual address using the address translation information included with the indirect PIM command and retrieves, from the second memory location, a virtual address of a third memory location. This process is repeated any number of times until one or more indirection stop criteria are satisfied. The indirection stop criteria stop the process when work has been completed normally or to prevent errors. Implementations include the processing logic in the memory module working in cooperation with a memory controller to perform indirect addressing.

Claims (46)

1. A memory module configured to:

retrieve, from a first memory location in the memory module, an address of a second memory location in the memory module, and

in response to determining that a maximum indirection has not been reached, based upon at least a portion of the address of the second memory location, retrieve data from the second memory location.

2. The memory module of claim 1 , wherein:

the address of the second memory location is a virtual address of the second memory location, and

the memory module is further configured to use at least a portion of the virtual address of the second memory location to determine a physical address of the second memory location.

3. The memory module of claim 1 , wherein:

the address of the second memory location is a virtual address of the second memory location, and

the memory module is further configured to determine a physical address of the second memory location using:

a) at least a portion of the virtual address of the second memory location and

b) included in a memory command, physical address information for the first memory location.

4. The memory module of claim 3 , wherein the physical address of the second memory location is a sum of:

a) a physical address of the first memory location and

b) a subtractive difference between the virtual address of the second memory location and a virtual address of the first memory location.

5. The memory module of claim 1 , wherein:

the address of the second memory location is a virtual address of the second memory location, and

the memory module is further configured to in response to the data from the second memory location matching data in a memory command, send the virtual address of the second memory location to a memory controller.

6. The memory module of claim 1 , wherein:

the address of the second memory location is a virtual address of the second memory location,

the memory module is further configured to in response to determining that the virtual address of the second memory location is not within a same virtual page as a virtual address for the first memory location, generating and sending an error to a memory controller.

7. The memory module of claim 1 , further configured to generate and send an error to a memory controller in response to determining that the maximum indirection has been reached.

8. The memory module of claim 1 , further configured to perform the retrieving steps in response to a processing in memory (PIM) command.

9. The memory module of claim 1 , further configured to retrieve data from a third memory location that is determined based upon a physical address of the first memory location and a data structure size specified by a memory command.

10. A memory module configured to:

retrieve, from a first memory location in the memory module, a virtual address of a second memory location in the memory module,

determine, in response to determining that a maximum indirection has not been reached, using at least a portion of the virtual address of the second memory location, a physical address of the second memory location,

send the physical address of the second memory location to a memory controller, and

receive, from the memory controller, data from the second memory location.

11. The memory module of claim 10 , further configured to determine the physical address of the second memory location using the at least a portion of the virtual address of the second memory location and physical address information for the first memory location.

12. The memory module of claim 10 , wherein the physical address of the second memory location is a sum of:

a) a physical address of the first memory location and

b) a subtractive difference between the virtual address of the second memory location and a virtual address of the first memory location.

13. The memory module of claim 10 , further configured to in response to the data from the second memory location matching data in a memory command, send the virtual address of the second memory location to a memory controller.

14. The memory module of claim 10 , further configured to in response to determining that the virtual address of the second memory location is not within a same virtual page as a virtual address for the first memory location, generating and sending an error to a memory controller.

15. The memory module of claim 10 , further configured to generate and send an error to a memory controller in response to determining that the maximum indirection has been reached.

16. The memory module of claim 10 , wherein:

the data from the second memory location is a virtual address of a third memory location, and

the memory module is further configured to:

determine a physical address of the third memory location using at least a portion of the virtual address of the third memory location and physical address information for the second memory location.

17. A memory controller configured to:

receive, from a first memory location in a memory module, a data value and a physical address of a second memory location in the memory module,

in response to detecting that a processing in memory (PIM) command does not contain the data value issue a memory command to read data from the second memory location, and

send the data read from the second memory location to processing logic in the memory module.

18. The memory controller of claim 17 , wherein the physical address of the second memory location is determined by the memory module based upon at least a portion of a virtual address of the second memory location.

19. The memory module of claim 18 , wherein the virtual address of the second memory location is stored in another memory location.

20. The memory controller of claim 17 , further configured to receive, from the memory module, a virtual address that is a result of a binary tree search.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 10, 2022
From: POREMBA, MATTHEW R.; DUTU, ALEXANDRU; PUTHOOR, SOORAJ
To: ADVANCED MICRO DEVICES, INC.
Reel/Frame 058589/0735 →
Continuity (1)
Related Publication 20230205705A1 · Jun 29, 2023
References Cited (15)
US 20020144001A1 · Collins · 2002 [cited by examiner]
US 20040123068A1 · Hashimoto · 2004 [cited by examiner]
US 20060149919A1 · Arizpe · 2006 [cited by examiner]
US 20070226450A1 · Engbersen · 2007 [cited by examiner]
US 20110029842A1 · Grube · 2011 [cited by examiner]
US 20140040592A1 · Fleischer et al. · 2014 [cited by applicant]
US 20150248355A1 · Levenglick · 2015 [cited by examiner]
US 20160062911A1 · Kegel et al. · 2016 [cited by applicant]
US 20160071608A1 · Bronner · 2016 [cited by examiner]
US 20180025768A1 · Hush · 2018 [cited by examiner]
US 20210055864A1 · Noh · 2021 [cited by examiner]
US 20210294746A1 · Yudanov · 2021 [cited by examiner]
US 20210373951A1 · Malladi · 2021 [cited by examiner]
US 20220114118A1 · Lee · 2022 [cited by examiner]
US 20220237112A1 · Martin · 2022 [cited by examiner]