IP Library Granted Patent US 12,236,239
Granted Patent B2
US 12,236,239 · App. 18/368,515 · Granted Feb 25, 2025

Systems and methods for data placement for in-memory-compute

Inventors: Krishna T. Malladi (San Jose, CA); Wenqin Huangfu (San Jose, CA)
Assignee: Samsung Electronics Co., Ltd.
G06F9/3001G06F7/5318G06F7/57G06F9/30036G06F9/30098G06F9/3016
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,239
App. No.
18/368,515
Granted
Feb 25, 2025
Kind
B2
Abstract

According to one embodiment, a memory module includes: a memory die including a dynamic random access memory (DRAM) banks, each including: an array of DRAM cells arranged in pages; a row buffer to store values of one of the pages; an input/output (IO) module; and an in-memory compute (IMC) module including: an arithmetic logic unit (ALU) to receive operands from the row buffer or the IO module and to compute an output based on the operands and one of a plurality of ALU operations; and a result register to store the output of the ALU; and a controller to: receive, from a host processor, operands and an instruction; determine, based on the instruction, a data layout; supply the operands to the DRAM banks in accordance with the data layout; and control an IMC module to perform one of the ALU operations on the operands in accordance with the instruction.

Claims (64)

1. A memory module comprising:

a dynamic random access memory (DRAM) device comprising:

an array of DRAM rows; and

an in-memory compute (IMC) module; and

a memory controller configured to:

receive, from a host processor, an input data and an instruction; and

supply the input data to the DRAM device in a data arrangement selected based on the instruction, the data arrangement specifying placement of an operand among the array of DRAM rows and the IMC module,

wherein the IMC module is configured to perform an operation on the input data based on the instruction.

2. The memory module of claim 1 , wherein the data arrangement specifies:

a first input data is read from the array of DRAM rows and the input data comprises a second input data, the second input data being supplied from the host processor to the IMC module.

3. The memory module of claim 2 , wherein the IMC module comprises an input buffer, and

wherein the memory controller is further configured to:

store a first portion of the first input data in the input buffer; and

perform the operation on the first input data stored in the input buffer and second portions of the second input data.

4. The memory module of claim 1 , wherein the input data is divided into first portions and second portions, a portion comprising values, and

wherein the data arrangement controls the memory controller to store one or more of the first portions and one or more of the second portions in a row of the array of DRAM rows.

5. The memory module of claim 1 , wherein the IMC module comprises an input buffer, and

wherein the memory controller is further configured to:

store a first portion of first portions of the input data in the input buffer, the first portions being stored in a first row of the array of DRAM rows; and

perform the operation on the first portion stored in the input buffer and second portions of the input data stored in the first row of the array of DRAM rows.

6. The memory module of claim 1 , wherein the IMC module comprises an accumulator configured to store an accumulated value, the accumulator being configured to:

receive an output of the operation; and

update the accumulator with a sum of the accumulated value and the output.

7. The memory module of claim 1 , wherein a first portion of the input data has a first number of values and a second portion of the input data has a second number of values,

wherein the IMC module comprises an output buffer configured to store an outer product of the first portion and the second portion.

8. The memory module of claim 1 , wherein a first portion of the input data has a first number of values and a second portion of the input data has a second number of values,

wherein the IMC module comprises an output buffer configured to store a tensor product of the first portion and the second portion.

9. The memory module of claim 1 , wherein the input data comprises first portions and second portions, a portion comprising values, and

wherein the data arrangement controls the memory controller to store a subset of the first portions in a first row of the array of DRAM rows and a subset of the second portions in a second row of the array of DRAM rows.

10. The memory module of claim 1 , wherein the IMC module further comprises an input buffer, and

wherein the memory controller is further configured to:

store a first portion of input data from a first row of the array of DRAM rows in the input buffer; and

perform the operation on the first portion stored in the input buffer and second portions of the input data stored in a second row of the array of DRAM rows.

11. The memory module of claim 1 , wherein the IMC module comprises a hardware buffer configured to buffer an output of the operation.

12. The memory module of claim 1 , wherein the IMC module comprises an accumulator configured to store an accumulated value, the accumulator being configured to:

receive an output of the operation, the operation comprising an inner product operation; and

update the accumulator with a sum of the accumulated value and the output.

13. The memory module of claim 1 , wherein the memory module is a high bandwidth memory (HBM) module comprising a stack of memory dies connected by through silicon vias.

14. A method for performing computations in-memory comprising:

receiving, by a memory controller of a memory module, an input data and an instruction;

determining, by the memory controller, based on the instruction, a data arrangement;

supplying the input data to a dynamic random access memory (DRAM) device in the data arrangement, the DRAM device comprising:

an array of DRAM rows; and

an in-memory compute (IMC) module,

wherein the IMC module is configured to perform an operation on the input data based on the instruction,

wherein the data arrangement specifies placement of the input data in the array of DRAM rows and the IMC module.

15. The method of claim 14 , wherein the data arrangement specifies:

a first input data is read from the DRAM rows and the input data comprises a second input data supplied from a host processor to the IMC module.

16. The method of claim 14 , wherein the IMC module further comprises an input buffer, and

wherein the memory controller is further configured to:

store a first portion of a first input data in the input buffer; and

perform the operation on the first input data stored in the input buffer and second portions of a second operand stored in the array of DRAM rows.

17. The method of claim 14 , wherein the input data is divided into first portions and second portions, a portion comprising values, and

wherein the data arrangement controls the memory controller to store one or more of the first portions and one or more of the second portions in a first row of the DRAM rows.

18. The method of claim 14 , wherein the IMC module comprises an input buffer, and

wherein the memory controller is further configured to:

store a first portion of one or more of the first portions of the input data in the input buffer, the first portions of the input data being stored in a first row of the array of DRAM rows; and

perform the operation on the first portion stored in the input buffer and second tiles stored in the first row of the array of DRAM rows.

19. The method of claim 14 , wherein the input data comprises first portions and second portions, a portion comprising values, and

wherein the data arrangement controls the memory controller to store a subset of the first portion in a first row of the array of DRAM rows and a subset of the second portions in a second row of the array of DRAM rows.

20. The method of claim 14 , wherein the IMC module further comprises an input buffer, and

wherein the memory controller is further configured to:

store a first portion of the input data from a first row of the array of DRAM rows in the input buffer; and

perform the operation on the first portion stored in the input buffer and second portions of the input data stored in a second row of the array of DRAM rows.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 9, 2023
From: MALLADI, KRISHNA T.; HUANGFU, WENQIN
To: SAMSUNG ELECTRONICS CO., LTD.
Reel/Frame 065159/0247 →
Continuity (4)
Continuation 17548220 · Dec 10, 2021
Continuation 16859829 · Apr 27, 2020
Provisional Application 62975577 · Feb 12, 2020
Related Publication 20240004646A1 · Jan 4, 2024
References Cited (37)
US 5678021A · Pawate et al. · 1997 [cited by applicant]
US 5953738A · Rao · 1999 [cited by applicant]
US 6295586B1 · Novak et al. · 2001 [cited by applicant]
US 7725641B2 · Park et al. · 2010 [cited by applicant]
US 9542101B2 · Simionescu et al. · 2017 [cited by applicant]
US 9922696B1 · Li et al. · 2018 [cited by applicant]
US 10185499B1 · Wang · 2019 [cited by examiner]
US 10242728B2 · Li et al. · 2019 [cited by applicant]
US 10664287B2 · Hughes et al. · 2020 [cited by applicant]
US 10691182B2 · Steely, Jr. et al. · 2020 [cited by applicant]
US 10866900B2 · Chang et al. · 2020 [cited by applicant]
US 11416281B2 · Sankaran et al. · 2022 [cited by applicant]
US 20100026697A1 · Xiang et al. · 2010 [cited by applicant]
US 20100312999A1 · Walker · 2010 [cited by applicant]
US 20140331014A1 · Liao · 2014 [cited by examiner]
US 20160224465A1 · Morad et al. · 2016 [cited by applicant]
US 20160306566A1 · Lu · 2016 [cited by examiner]
US 20160378351A1 · Colgrove et al. · 2016 [cited by applicant]
US 20170255390A1 · Chang et al. · 2017 [cited by applicant]
US 20180032437A1 · Stocksdale · 2018 [cited by examiner]
US 20190034121A1 · Kuwamura · 2019 [cited by applicant]
US 20190042542A1 · Narayanamoorthy et al. · 2019 [cited by applicant]
US 20190130291A1 · Nicol · 2019 [cited by examiner]
US 20190205737A1 · Bleiweiss et al. · 2019 [cited by applicant]
US 20190213005A1 · Teman et al. · 2019 [cited by applicant]
US 20190310911A1 · Sundaram et al. · 2019 [cited by applicant]
US 20210223996A1 · Song · 2021 [cited by examiner]
CN 109669887A · 2019 [cited by applicant]
JP H06215160A · 1994 [cited by applicant]
JP 2003272384A · 2003 [cited by applicant]
JP 2008123479A · 2008 [cited by applicant]
JP 2019028572A · 2019 [cited by applicant]
JP 2019075101A · 2019 [cited by applicant]
KR 1020180046345A · 2018 [cited by applicant]
KR 1020190093568A · 2019 [cited by applicant]
KR 1020190114745A · 2019 [cited by applicant]
TW 201816785A · 2018 [cited by applicant]