IP Library Granted Patent US 11,164,033
Granted Patent B2
US 11,164,033 · App. 15/167,649 · Granted Nov 2, 2021

Histogram creation process for memory devices

Inventor: Jeremiah James Willcock (Boise, ID)
Assignee: Micron Technology, Inc.
G06K9/4642G06F7/00G06F17/18G06T5/40G11C11/4091G11C11/4093G11C11/4094G11C11/4096G11C2207/2245
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,164,033
App. No.
15/167,649
Granted
Nov 2, 2021
Kind
B2
Abstract

A processor-in-memory device includes a memory array, a sense amplifier, and a processing unit that has an accumulator. The processing unit is configured to receive a set of data. The processing unit then uses the sense amplifier and the accumulator to generate a first histogram of the set of data.

Claims (55)

1. A processor-in-memory device, comprising a memory array including:

a memory array including columns of memory cells and a plurality of memory locations, wherein each of the memory locations stores a value; and

a plurality of accumulators, each of the accumulators is coupled to a respective one of the columns; and

a buffer block comprising a plurality of buffers coupled to the accumulators and the memory array,

wherein the processor-in-memory device is configured to:

receive a data set comprising a plurality of data batches, wherein each data batch comprises a plurality of data points;

determine, by the plurality of accumulators, to which category of a plurality of categories each data point in a first batch of the plurality of data batches belongs;

set a value of a flag bit, in a buffer of the plurality of buffers, wherein the flag bit corresponds, in bit position, to the category of the plurality of categories to which a data point in the first batch of data is determined to belong;

after having set a value of each of a first subset of a set of flag bits in the buffer block, each flag bit of the first subset respectively corresponding, in bit position, to a category of data determined to be present in the first data batch, increment at least one second value stored in at least one memory location of the plurality of memory locations of the memory array based on whether or not a corresponding respective flag bit stored in the buffer block was set as part of the first subset such that a first data point determined to belong to a first category of the plurality of categories in the first batch is counted but not any subsequent data points in the first batch that are determined to be in the first category; and

after incrementing the at least one second value, determine if the first batch of data is the last batch of data of the data set.

2. The processor-in-memory device of claim 1 , wherein the buffer block is directly coupled to the memory array, and wherein the accumulators are coupled to the memory via the buffer block.

3. The processor-in-memory device of claim 1 , wherein the processor-in-memory device is configured to set a value of a flag in the accumulators by performing a bit-wise OR operation using the first subset of the set of flag bits.

4. The processor-in-memory device of claim 1 , wherein the processor-in-memory device is configured to generate a histogram of the first batch of data based on the incrementing of the at least one second value stored in the at least one memory location.

5. The processor-in-memory device of claim 4 , further comprising a plurality of counters, wherein the processor-in-memory device is configured to generate the histogram without using the counters.

6. The processor-in-memory device of claim 1 , wherein the processor-in-memory device is configured to:

clear the set of flag bits in the buffer block;

determine to which category of the plurality of categories each data point in a second batch of the plurality of data batches belongs; and

after having set each of a second subset of the set of flag bits in the buffer block, each flag bit of the second subset of the set of flag bits respectively corresponding to a category of data determined to be present in the second batch, increment at least one third value stored in at least one additional memory location of the plurality of memory locations based on whether or not the corresponding respective flag bit stored in the buffer block was set as part of the second subset of the set of flag bits; and

after incrementing the at least one third value in the at least one additional memory location corresponding, respectively, to the second subset of the set of flag bits, determine if the second batch of data is the last batch of data of the data set.

7. The processor-in-memory device of claim 6 , wherein the processor-in-memory device is configured to generate a histogram of the second batch of data based on the incrementing of the at least one third value stored in the at least one additional memory location corresponding, respectively, to the second subset of the set of flag bits.

8. The processor-in-memory device of claim 6 , wherein the processor-in-memory device is configured to generate a histogram of the first batch and the second batch of the data set based on the incrementing of the at least one third value.

9. The processor-in-memory device of claim 1 , wherein the memory array is a dynamic random access memory array.

10. The processor-in-memory device of claim 1 , wherein the processor-in-memory device is configured to read the data set from the memory array before determining to which category of the plurality of categories each data point in the first batch of the plurality of data batches belongs.

11. The process-in-memory device of claim 1 , wherein the processor-in-memory device is configured to receive a data steam comprising the data set before determining to which category of the plurality of categories each data point in the first batch of the plurality of data batches belongs.

12. A tangible, non-transitory, computer-readable medium comprising executable code comprising instructions to:

clear data stored in a plurality of memory locations, wherein each of the memory locations store a value assigned to a respective category of a plurality of categories of data, wherein the plurality of memory locations are in a memory array including columns of memory cells, wherein each column of memory cells is coupled to a respective accumulator of a plurality of accumulators;

cause a respective flag, in an accumulator of the plurality of accumulators, to be set representing a respective category of the plurality of categories;

clear a flag in each of the plurality of accumulators including the respective flag;

receive a data set comprising a plurality of data batches, wherein each data batch comprises a plurality of data points;

determine, by the plurality of accumulators, to which of the plurality of categories each data point in a first batch of the plurality of data batches belongs;

set a value of at least two flag bits, in at least two respective buffers of a plurality of buffers of a buffer block coupled to the plurality of accumulators and the memory array, wherein the at least two flag bits correspond, in bit position, to at least two categories, respectively, to which at least two data points in the first batch of data are determined to respectively belong;

subsequent to setting the at least two flag bits in the buffer block, increment at least two values stored in respective memory locations of the plurality of memory locations based on the flag in each of the plurality of accumulators, and on the at least two flag bits to generate a histogram, wherein generating the histogram comprises for each data point of the batch:

performing a bit-wise OR operation using the flags in each of the plurality of accumulators and one of the at least two flag bits set in the buffer of the plurality of buffers as operands; and

saving a result of the bit-wise OR operation in the plurality of accumulators.

13. The tangible, non-transitory computer-readable medium of claim 12 , wherein the instructions comprise instructions to increment each of two of the plurality of memory locations in the memory array based on two bits of the at least two flag bits being set to a non-zero value.

14. A method of using a processor-in-memory (PIM) device, wherein the PIM device comprises:

a memory array including columns of memory cells and a plurality of memory locations, each of the memory locations storing a value;

a plurality of accumulators, each coupled to a respective column of memory cells of the memory array; and

a buffer block comprising a plurality of buffers coupled to the plurality of accumulators and to the memory array, the method comprising:

receiving, by the PIM device, a data set comprising a plurality of data batches, wherein each data batch comprises a plurality of data points;

determining, by the plurality of accumulators, to which category of a plurality of categories each data point in a first batch of the plurality of data batches belongs;

clearing data from each of the accumulators of the plurality of accumulators resulting in cleared values in each of the accumulators;

setting a first value of a first flag bit, in a buffer of the plurality of buffers, wherein the first flag bit corresponds, in bit position, to a first category of the plurality of categories to which a first data point in the first batch of data is determined to belong;

performing a bit-wise OR operation using the first value of the first flag bit stored in the buffer and the cleared values in an accumulator of the plurality of accumulators as operands to generate a first result;

saving the first result in the accumulator;

setting a second value of a second flag bit, in the buffer of the plurality of buffers, wherein the second flag bit corresponds, in bit position, to a second category of the plurality of categories to which a second data point of the first batch of data is determined to belong;

performing a bit-wise OR operation using the second value of the second flag bit stored in the buffer and the first result in the accumulator as operands to generate a second result; and

after performing the bit-wise OR operation using the second value, incrementing a value stored in a memory location of the plurality of memory locations of the memory array based on the first result and the second result.

15. The method of claim 14 , further comprising receiving a mapping configuration, wherein the mapping configuration indicates an identification number and a memory location corresponding to a category of each of the data points.

16. The method of claim 14 , further comprising clearing data in the plurality of memory locations prior to determining the category of the data point.

17. The method of claim 14 , further comprising:

determining the second data point is a final data point in the first batch of the data set;

in response to determining the second data point is the final data point, performing the incrementing of the value stored in the memory location of the plurality of memory locations of the memory array.

18. The method of claim 14 , further comprising:

determining, by the plurality of accumulators an additional category of the plurality of categories to which a data point in a second batch of data is determined to belong.

Assignments (8)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 29, 2023
From: MICRON TECHNOLOGY, INC.
To: LODESTAR LICENSING GROUP, LLC
Reel/Frame 064741/0172 →
RELEASE OF SECURITY INTEREST Recorded Nov 12, 2019
From: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
To: MICRON TECHNOLOGY, INC.; MICRON SEMICONDUCTOR PRODUCTS, INC.
Reel/Frame 051028/0001 →
RELEASE OF SECURITY INTEREST Recorded Oct 9, 2019
From: MORGAN STANLEY SENIOR FUNDING, INC., AS COLLATERAL AGENT
To: MICRON TECHNOLOGY, INC.
Reel/Frame 050676/0782 →
RELEASE OF SECURITY INTEREST Recorded Jul 20, 2018
From: U.S. BANK NATIONAL ASSOCIATION, AS AGENT
To: MICRON TECHNOLOGY, INC.
Reel/Frame 046635/0634 →
SECURITY INTEREST Recorded Jul 13, 2018
From: MICRON TECHNOLOGY, INC.; MICRON SEMICONDUCTOR PRODUCTS, INC.
To: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
Reel/Frame 047540/0001 →
SUPPLEMENT NO. 1 TO PATENT SECURITY AGREEMENT Recorded Aug 26, 2016
From: MICRON TECHNOLOGY, INC.
To: U.S. BANK NATIONAL ASSOCIATION, AS COLLATERAL AGENT
Reel/Frame 039841/0207 →
SUPPLEMENT NO. 1 TO PATENT SECURITY AGREEMENT Recorded Aug 25, 2016
From: MICRON TECHNOLOGY, INC.
To: MORGAN STANLEY SENIOR FUNDING, INC., AS COLLATERAL AGENT
Reel/Frame 039824/0681 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 2, 2016
From: WILLCOCK, JEREMIAH JAMES
To: MICRON TECHNOLOGY, INC.
Reel/Frame 038789/0290 →
Continuity (2)
Provisional Application 62168399 · May 29, 2015
Related Publication 20160350617A1 · Dec 1, 2016