IP Library Granted Patent US 11,043,259
Granted Patent B2
US 11,043,259 · App. 16/845,644 · Granted Jun 22, 2021

System and method for in-memory compute

Inventors: David Wentzlaff (Princeton Junction, NJ); Fei Gao (Princeton, NJ); Georgios Tziantzioulis (Princeton, NJ)
Assignee: THE TRUSTEES OF PRINCETON UNIVERSITY
G11C11/4094G11C11/4076G11C11/4085G11C11/4091G11C29/88H03K19/20H03K19/21H03K19/23
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 11,043,259
App. No.
16/845,644
Granted
Jun 22, 2021
Kind
B2
Abstract

According to various embodiments, an in-memory computation system is disclosed. The system includes a dynamic random access memory (DRAM) module. The system further includes a memory controller configured to violate a timing specification for the DRAM module and activate multiple rows of the DRAM module in rapid succession to enable bit-line charge sharing.

Claims (68)

1. An in-memory computation system, comprising:

a dynamic random access memory (DRAM) module; and

a memory controller configured to violate a timing specification for the DRAM module and activate multiple rows of the DRAM module in rapid succession to enable bit-line charge sharing.

2. The system of claim 1 , wherein the DRAM module comprises a hierarchical system organization of channels, ranks, banks, and rows and columns.

3. The system of claim 2 , wherein each bank comprises a plurality of sub-arrays containing a plurality of rows.

4. The system of claim 3 , wherein each sub-array comprises a plurality of bit-lines configured to connect all cells in one bit of column to a sense amplifier of a local row buffer.

5. The system of claim 1 , wherein the memory controller is coupled to at least one of a processor and input/output device.

6. The system of claim 1 , wherein the memory controller is configured to send PRECHARGE, ACTIVATE, READ, and WRITE commands to the DRAM module.

7. The system of claim 1 , wherein the DRAM module is configured to perform at least one of row copy, logical AND, logical OR, and multi-input majority operations based on commands received from the memory controller.

8. The system of claim 7 , wherein the DRAM module is configured to perform at least one of logical XOR, logical SHIFT, subtract, multiply, divide, and arithmetic ADD operations using the row copy, logical AND, logical OR, and multi-input majority operations.

9. The system of claim 7 , wherein for performing row copy, the memory controller is configured to:

send a first ACTIVATE command to a first row of the DRAM module;

send a PRECHARGE command to the DRAM module; and

send a second ACTIVATE command to a second row of the DRAM module;

a timing interval between the PRECHARGE command and the second ACTIVATE command being shorter than a minimum time required for a bit-line voltage to reach its precharge value but being long enough so that a third row is not activated.

10. The system of claim 7 , wherein for performing at least one of logical AND and logical OR, the memory controller is configured to:

send a first ACTIVATE command to a first row of the DRAM module;

send a PRECHARGE command to the DRAM module; and

send a second ACTIVATE command to a second row of the DRAM module;

a first timing interval between the first ACTIVATE command and the PRECHARGE command and a second timing interval between the PRECHARGE command and the second ACTIVATE command both being set to a minimum value such that no idle cycles are between the first ACTIVATE command, PRECHARGE command, and second ACTIVATE command.

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

scan the DRAM module for rows and columns that fail to perform an operation; and

compile an error table of the rows and columns that fail to perform an operation;

the DRAM module to skip the rows and columns in the error table when receiving commands from the memory controller.

12. A method for performing computation in a memory system, the memory system including a dynamic random access memory (DRAM) module and a memory controller, the method comprising:

violating via the memory controller a timing specification for the DRAM module; and

activating via the memory controller multiple rows of the DRAM module in rapid succession to enable bit-line charge sharing.

13. The method of claim 12 , further comprising sending via the memory controller PRECHARGE, ACTIVATE, READ, and WRITE commands to the DRAM module.

14. The method of claim 12 , further comprising performing via the DRAM module at least one of row copy, logical AND, logical OR, and multi-input majority operations based on commands received from the memory controller.

15. The method of claim 14 , further comprising performing via the DRAM at least one of logical XOR, logical SHIFT, subtract, multiply, divide, and arithmetic ADD operations using the row copy, logical AND, logical OR, and multi-input majority operations.

16. The method of claim 14 , wherein performing row copy comprises sending commands from the memory controller to the DRAM module, the commands comprising:

sending a first ACTIVATE command to a first row of the DRAM module;

sending a PRECHARGE command to the DRAM module; and

sending a second ACTIVATE command to a second row of the DRAM module;

a timing interval between the PRECHARGE command and the second ACTIVATE command being shorter than a minimum time required for a bit-line voltage to reach its precharge value but being long enough so that a third row is not activated.

17. The method of claim 14 , wherein performing at least one of logical AND and logical OR comprises sending commands from the memory controller to the DRAM module, the commands comprising:

sending a first ACTIVATE command to a first row of the DRAM module;

sending a PRECHARGE command to the DRAM module; and

sending a second ACTIVATE command to a second row of the DRAM module;

a first timing interval between the first ACTIVATE command and the PRECHARGE command and a second timing interval between the PRECHARGE command and the second ACTIVATE command both being set to a minimum value such that no idle cycles are between the first ACTIVATE command, PRECHARGE command, and second ACTIVATE command.

18. The system of claim 12 , further comprising via the memory controller:

scanning the DRAM module for rows and columns that fail to perform an operation; and

compiling an error table of the rows and columns that fail to perform an operation;

the DRAM module to skip the rows and columns in the error table when receiving commands from the memory controller.

19. An in-memory computation system, comprising:

a memory module; and

a memory controller configured to violate a timing specification for the memory module and activate multiple rows of the memory module in rapid succession to enable bit-line charge sharing.

20. The system of claim 19 , wherein the memory module comprises a hierarchical system organization of channels, ranks, banks, and rows and columns.

21. The system of claim 20 , wherein each bank comprises a plurality of sub-arrays containing a plurality of rows.

22. The system of claim 21 , wherein each sub-array comprises a plurality of bit-lines configured to connect all cells in one bit of column to a sense amplifier of a local row buffer.

23. The system of claim 19 , wherein the memory controller is coupled to at least one of a processor and input/output device.

24. The system of claim 19 , wherein the memory controller is configured to send PRECHARGE, ACTIVATE, READ, and WRITE commands to the memory module.

25. The system of claim 19 , wherein the memory module is configured to perform at least one of row copy, logical AND, logical OR, and multi-input majority operations based on commands received from the memory controller.

26. The system of claim 25 , wherein the memory module is configured to perform at least one of logical XOR, logical SHIFT, subtract, multiply, divide, and arithmetic ADD operations using the row copy, logical AND, logical OR, and multi-input majority operations.

27. The system of claim 25 , wherein for performing row copy, the memory controller is configured to:

send a first ACTIVATE command to a first row of the memory module;

send a PRECHARGE command to the memory module; and

send a second ACTIVATE command to a second row of the memory module;

a timing interval between the PRECHARGE command and the second ACTIVATE command being shorter than a minimum time required for a bit-line voltage to reach its precharge value but being long enough so that a third row is not activated.

28. The system of claim 25 , wherein for performing at least one of logical AND and logical OR, the memory controller is configured to:

send a first ACTIVATE command to a first row of the memory module;

send a PRECHARGE command to the memory module; and

send a second ACTIVATE command to a second row of the memory module;

a first timing interval between the first ACTIVATE command and the PRECHARGE command and a second timing interval between the PRECHARGE command and the second ACTIVATE command both being set to a minimum value such that no idle cycles are between the first ACTIVATE command, PRECHARGE command, and second ACTIVATE command.

29. The system of claim 19 , wherein the memory controller is configured to:

scan the memory module for rows and columns that fail to perform an operation; and

compile an error table of the rows and columns that fail to perform an operation;

the memory module to skip the rows and columns in the error table when receiving commands from the memory controller.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 26, 2020
From: WENTZLAFF, DAVID; GAO, FEI; TZIANTZIOULIS, GEORGIOS
To: THE TRUSTEES OF PRINCETON UNIVERSITY
Reel/Frame 053606/0788 →
CONFIRMATORY LICENSE Recorded May 1, 2020
From: PRINCETON UNIVERSITY
To: NATIONAL SCIENCE FOUNDATION
Reel/Frame 052553/0536 →
Continuity (2)
Provisional Application 62833105 · Apr 12, 2019
Related Publication 20200327925A1 · Oct 15, 2020
Cited By (16)
US 12,197,378 US 12,211,582 US 12,249,365 US 12,308,838 US 12,322,743 US 12,334,923 US 12,387,810 US 12,436,739 US 12,445,134 US 12,462,858 US 12,469,545 US 12,498,931 US 12,517,701 US 12,633,343 US 12,640,193 US 12,700,438