IP Library › Granted Patent US 11,934,824
Granted Patent B2
US 11,934,824 · App. 16/841,222 · Granted Mar 19, 2024

Methods for performing processing-in-memory operations, and related memory devices and systems

Inventors: Dmitri Yudanov (Cordova, CA); Sean S. Eilert (Penryn, CA); Sivagnanam Parthasarathy (Carlsbad, CA); Shivasankar Gunasekaran (Folsom, CA); Ameen D. Akel (Rancho Cordova, CA)
Assignee: Micron Technology, Inc.
G06F9/3001G06F7/5443G06F9/30032G06F9/30043
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,934,824
App. No.
16/841,222
Granted
Mar 19, 2024
Kind
B2
Abstract

Methods, apparatuses, and systems for in- or near-memory processing are described. Strings of bits (e.g., vectors) may be fetched and processed in logic of a memory device without involving a separate processing unit. Operations (e.g., arithmetic operations) may be performed on numbers stored in a bit-parallel way during a single sequence of clock cycles. Arithmetic may thus be performed in a single pass as numbers are bits of two or more strings of bits are fetched and without intermediate storage of the numbers. Vectors may be fetched (e.g., identified, transmitted, received) from one or more bit lines. Registers of a memory array may be used to write (e.g., store or temporarily store) results or ancillary bits (e.g., carry bits or carry flags) that facilitate arithmetic operations. Circuitry near, adjacent, or under the memory array may employ XOR or AND (or other) logic to fetch, organize, or operate on the data.

Claims (63)

1. A method, comprising:

loading a first number of bits from a first array into a sequencer of a memory device, each bit of the first number of bits having a first state or a second state;

loading, from a second array in a bit-parallel manner, a second number of groups of bits into a third array, each bit of the second number of groups of bits having the first state or the second state;

multiplying each group of bits of the second number of groups of bits by each bit of the first number of bits to generate a number of scaled rows; and

summing, along associated bit positions, the number of scaled rows to generate an output row.

2. The method of claim 1 , further comprising shifting each scaled row of the number of scaled rows by a number of column positions equal to a bit position of the bit of the first number of bits relative to a first scaled row to align the number of scaled rows along the associated bit positions.

3. The method of claim 1 , further comprising generating an intermediate matrix comprising the number of scaled rows, each scaled row of the intermediate matrix shifted at least one column position relative to every other scaled row of the intermediate matrix.

4. The method of claim 3 , wherein summing comprising summing values of each column of the intermediate matrix to generate the output row.

5. The method of claim 1 , further comprising:

loading a third number of bits into the sequencer, each bit of the third number of bits having the first state or the second state;

loading a fourth number of groups of bits into the third array, each bit of the fourth number of groups of bits having the first state or the second state;

multiplying each group of bits of the fourth number of groups of bits by each bit of the third number of bits to generate an additional number of scaled rows; and

summing, along associated bit positions, the additional number of scaled rows to generate an additional output row.

6. The method of claim 5 , further comprising shifting each generated scaled row of the number of scaled rows by a number of column positions equal to a bit position of the bit of the first number of bits relative to a first scaled row to align the number of scaled rows along the associated bit positions.

7. The method of claim 5 , further comprising summing at least the output row and the additional output row to generate a row of an output matrix.

8. The method of claim 1 , wherein loading the second number of groups of bits comprises loading the second number of groups of bits into a number of fused-multiply-add (FMA) units of a sense amplifier array.

9. A memory system, comprising:

at least one memory array; and

logic coupled to the at least one memory array, the logic comprising a sequencer and a sense amplifier array, the logic configured to:

receive, at the sequencer, an input including a number of bits; and

receive, at the sense amplifier array, a row of a memory array of the at least one memory array, the row comprising groups of bits, wherein each bit of the group of bits is received at the logic substantially simultaneously;

multiply each bit of each group of bits of the groups of bits by each bit of the input to generate a number of groups of scaled rows, each scaled row of each group of scaled rows of the number of groups of scaled rows including a number of columns and each scaled row of each group of scaled rows of the number of groups of scaled rows shifted at least one column position relative to an adjacent scaled row within an associated group of scaled rows; and

sum scaled rows across columns within each group of scaled rows to generate an output row.

10. The memory system of claim 9 , wherein the logic comprises one or more FMA units, the sequencer configured to receive the input and control the one or more FMA units to load each bit of the row and multiply each bit of the input by each bit of the row within each group of bits of the groups of bits of the row.

11. The memory system of claim 9 , wherein the logic is further configured to:

receive at least one additional input;

receive at least one additional row of the memory array, wherein the row comprises a number of groups of bits;

generate at least one additional output row based on the at least one additional input and the at least one additional row; and

sum within each group, along columns, the output row and the additional output row to generate a row of an output matrix.

12. The memory system of claim 9 , wherein the logic comprises a number of groups of sense amplifiers, each group of sense amplifiers of the number of groups of sense amplifiers configured to receive a tile associated with a portion of the row of the memory array.

13. A method, comprising:

loading, in a bit-parallel manner and via a number of bit lines of a first memory array of a memory device, a first number of bit groups into an array of the memory device;

loading a number of operands from a second memory array into a sequencer of the memory device;

multiplying each bit of each bit group of the first number of bit groups by a first bit of a first operand of the number of operands to generate a first scaled row; and

generating a number of bits of a row of an output matrix based at least partially on the first scaled row.

14. The method of claim 13 , further comprising multiplying each bit of each bit group of the first number of bit groups by at least one additional bit of the first operand of the number of operands to generate at least one additional scaled row, wherein generating the number of bits of the row of the output matrix comprises generating the number of bits of the row of the output matrix based on the first scaled row and the at least one additional scaled row.

15. The method of claim 14 , further comprising:

loading, via the number of bit lines of the memory array of the memory device, a number of bit groups of a second row into the array of the memory device;

multiplying each bit of each bit group of the number of bit groups of the second row by a first bit of a second operand of the number of operands to generate a second scaled row; and

multiplying each bit of each bit group of the number of bit groups of the second row by at least one additional bit of the second operand of the number of operands to generate one or more additional scaled rows;

wherein generating the number of bits of the row of an output matrix comprises generating the number of bits of the row based at least partly on the first scaled row, the second scaled row, and the one or more additional scaled rows.

16. A method, comprising:

loading, via a number of bit lines of a memory array of a memory device, a group of rows of a memory array into a sense amplifier array, wherein each bit of a row of the group of rows is loaded into the sense amplifier array substantially simultaneously;

loading a group of operands into a sequencer of the memory device; and

multiplying-accumulating each row of the group of rows by each associated operand of the group of operands to generate a first row of an output matrix.

17. The method of claim 16 , further comprising:

loading an additional group of operands into the sequencer and an additional group of rows of the memory array into the sense amplifier array; and

multiplying-accumulating each row of the additional group of rows by each associated operand of the additional group of operands to generate a second row of the output matrix.

18. The method of claim 16 , wherein loading a group of rows of the memory array comprises loading the group of rows from a first matrix, wherein loading a group of operands comprises loading at least a portion of a row of a second matrix.

19. A system, comprising:

at least one input device;

at least one output device;

at least one processor device coupled to the input device and the output device; and

at least one memory device coupled to the at least one processor device and comprising:

at least one memory cell array; and

logic coupled to at least one memory array, the logic comprising a sequencer and a sense amplifier array, the logic configured to:

receive, at the sequencer, a first operand;

receive, at the sense amplifier array in a bit-parallel manner, a row of a memory array of the at least one memory cell array;

multiply-shift-accumulate a number of bits of the row of the memory array by a number bits of the first operand to generate a first scaled row;

receive at least one additional operand;

multiply-shift-accumulate the number of bits of the row by bits of the at least one additional operand to generate at least one additional scaled row; and

generate a row of an output matrix based on the first scaled row and at least one additional scaled row.

20. The system of claim 19 , wherein the logic is configured to sum the first scaled row and the at least one additional scaled row along columns to generate the row of the output matrix.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 6, 2020
From: YUDANOV, DMITRI; EILERT, SEAN S.; PARTHASARATHY, SIVAGNANAM; GUNASEKARAN, SHIVASANKAR; AKEL, AMEEN D.
To: MICRON TECHNOLOGY, INC.
Reel/Frame 052323/0197 →
Continuity (2)
Provisional Application 62896228 · Sep 5, 2019
Related Publication 20210072987A1 · Mar 11, 2021
Cited By (1)
US 12,566,570