IP Library Granted Patent US 8,811,085
Granted Patent B2
US 8,811,085 · App. 13/756,076 · Granted Aug 19, 2014

On-device data analytics using NAND flash based intelligent memory

Inventors: Steven T. Sprouse (San Jose, CA); Yan Li (Milpitas, CA); Johann George (Sunnyvale, CA)
Assignee: SanDisk Technologies Inc.
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 8,811,085
App. No.
13/756,076
Granted
Aug 19, 2014
Kind
B2
Abstract

A NAND Flash based content addressable memory (CAM) is used for a key-value addressed storage drive. The device can use a standard transport protocol such as PCI-E, SAS, SATA, eMMC, SCSI, and so on. A host writes a key-value pair to the drive, where the drive writes the keys along bit lines of a CAM NAND portion of the drive and stores the value in the drive. The drive then maintains a table linking the keys to location of the value. In a read process, the host provides a key to drive, which then broadcasts down the word lines of blocks storing the keys. Based on any matching bit lines, the tables can then be used to retrieve and supply the corresponding data to the host. The system can be applied to perform a wide range of analytics on data sets loaded into the NAND array.

Claims (67)

1. A method of analyzing data, comprising:

writing a plurality of data sets selected by a host in a memory array of a NAND architecture of NAND strings formed along bit lines and spanned by word lines, where the data sets are written oriented along the bit lines with corresponding data elements arranged to lie along the same word lines;

concurrently biasing a plurality of word lines to a first set of sensing voltage levels corresponding to host determined parameter values; and

determining those of the bit lines that conduct in response to said biasing of a plurality of word lines to the first set of sensing voltage levels.

2. The method of claim 1 , where the selected data sets are provided from the host.

3. The method of claim 1 , where the selected data sets are selected by the host from a memory system.

4. The method of claim 3 , wherein the memory system is a solid state drive (SSD).

5. The method of claim 3 , wherein the memory array is part of the memory system.

6. The method of claim 1 , where in the sets of data include data of a first variety and a second variety, the method further comprising:

subsequently concurrently biasing a plurality of word lines to a second set of sensing voltage levels corresponding to host determined parameter values; and

determining those of the bit lines that conduct in response to said biasing of a plurality of word lines to the second set of sensing voltage levels,

wherein the first and second sets of sensing voltages are the same for data of the first variety, but differ for data of the second variety.

7. The method of claim 6 , wherein the first variety of data is categorical data and the second variety of data is numerical data.

8. The method of claim 7 , wherein the first variety of data is written in a binary format and the second variety of data is written in a multi-state format.

9. The method of claim 6 , wherein the first and second sets of sensing voltages each include on word line biased to a data dependent value for data of the second variety, with the word lines of the other word lines for data of the second variety being biased to a data independent read value.

10. The method of claim 1 , further comprising:

subsequently determining a second set of sensing voltage levels dependent upon the result of said determining;

concurrently biasing a plurality of word lines to the second set of sensing voltage levels;

determining those of the bit lines that conduct in response to said biasing of a plurality of word lines to the second set of sensing voltage levels.

11. The method of claim 10 , wherein the memory array is formed on a first memory circuit including sensing circuitry connected to the bit lines, the sensing circuitry including a set of data latches corresponding to each of the bit lines, the method further comprising:

storing the results of determinings in response to the biasing to the first and second sensing voltage levels in the data latches; and

performing with the data latches one or more logical/arithmetical operations upon the results of the determinings in response to the biasing to the first and second sensing voltage levels.

12. The method of claim 11 , wherein the logical/arithmetical operations include arithmetical operations performed digitally.

13. The method of claim 12 , wherein the logical/arithmetical operations arithmetical operations performed digitally on the first memory circuit.

14. The method of claim 12 , wherein the logical/arithmetical operations arithmetical operations performed digitally on a controller circuit that is part of a memory system including the first memory circuit.

15. The method of claim 11 , wherein the logical/arithmetical operations include arithmetical operations performed using analog techniques.

16. The method of claim 15 , wherein the logical/arithmetical operations arithmetical operations performed using analog techniques on the first memory circuit.

17. The method of claim 16 , wherein the analog techniques used to perform said logical/arithmetical operations include determining the amount of current drawn by a number of transistors connected in parallel, the number of said transistors depending upon the result of the logical/arithmetical operations.

18. The method of claim 11 , further comprising:

providing the results of the logical/arithmetic operations to the host.

19. The method of claim 11 , further comprising:

storing the results of the logical/arithmetic operations in non-volatile memory; and

subsequently performing one or more analytical operation upon the data.

20. The method of claim 19 , wherein the subsequent analytical operations are performed on data including one or more of the data sets, the method further comprising:

performing one or more logical/arithmetical operations upon the result of the subsequent analytical operations and the stored result of the logical/arithmetic operations; and

providing to the host the results of the logical/arithmetic operations based upon the result of the subsequent analytical operations and the stored result of the logical/arithmetic operations.

21. The method of claim 19 , wherein the subsequent analytical operations are performed on data including one or more additional data sets, the method further comprising:

performing one or more logical/arithmetical operations upon the result of the subsequent analytical operations and the stored result of the logical/arithmetic operations; and

providing to the host the results of the logical/arithmetic operations based upon the result of the subsequent analytical operations and the stored result of the logical/arithmetic operations.

22. The method of claim 1 , wherein the memory array is formed on a first memory circuit including sensing circuitry connected to the bit lines, the sensing circuitry including a set of data latches corresponding to each of the bit lines, the method further comprising:

storing the result of the determining the data latches; and

performing with the data latches one or more logical/arithmetical operations upon the results of the determining.

23. The method of claim 22 , further comprising:

providing the results of the logical/arithmetic operations to the host.

24. The method of claim 22 , further comprising:

storing the results of the logical/arithmetic operations in non-volatile memory; and

subsequently performing one or more analytical operation upon the data.

25. The method of claim 24 , wherein the subsequent analytical operations are performed on data including one or more of the data sets, the method further comprising:

performing one or more logical/arithmetical operations upon the result of the subsequent analytical operations and the stored result of the logical/arithmetic operations; and

providing to the host the results of the logical/arithmetic operations based upon the result of the subsequent analytical operations and the stored result of the logical/arithmetic operations.

26. The method of claim 24 , wherein the subsequent analytical operations are performed on data including one or more additional data sets, the method further comprising:

performing one or more logical/arithmetical operations upon the result of the subsequent analytical operations and the stored result of the logical/arithmetic operations; and

providing to the host the results of the logical/arithmetic operations based upon the result of the subsequent analytical operations and the stored result of the logical/arithmetic operations.

27. The method of claim 1 , wherein the data of the data sets is written in a binary format.

28. The method of claim 1 , wherein the data of the data sets is written in a multi-state format.

29. The method of claim 1 , wherein a portion of the data of the data sets is written in a binary format and a portion of the data of the data sets is written in a binary format.

30. The method of claim 1 , wherein the data sets include includes categorical data and numerical data, and wherein said writing includes writing the categorical data in a binary format and numerical data in a multi-state format.

31. The method of claim 1 , wherein each of the data sets are written into a plurality of NAND strings of a single corresponding bit line.

32. The method of claim 31 , wherein the memory array is a flash memory array, wherein the plurality of NAND strings of the single corresponding bit lines are from multiple erase blocks.

33. The method of claim 1 , wherein the memory array is formed on a first memory circuit including sensing circuitry connected to the bit lines, the sensing circuitry formed of a plurality of sensing units connectable to sense a first plurality of adjacent bits lines, wherein each data set is written along multiple bit lines from the first plurality of bit lines connectable to a corresponding sensing unit.

34. The method of claim 1 , wherein the parameter values include “don't care” values corresponding a sensing voltage for causing a memory cell to conduct for all data states.

35. The method of claim 1 , further comprising:

writing a plurality of additional data sets selected by a host in a second memory array of a NAND architecture of NAND strings formed along bit lines and spanned by word lines, where the data sets are written oriented along the bit lines with corresponding data elements arranged to line along the same word lines, and wherein the additional data sets are arranged along bit lines of the second memory array so as to align with related data of the data sets as arranged on bit lines of the memory array;

concurrently biasing a plurality of word lines of the second array to a set of sensing voltage levels corresponding to host determined parameter values;

determining those of the bit lines of the second that conduct in response to said biasing of a plurality of word lines thereof to the set of sensing voltage levels; and

within data latches associated with the bit lines of the memory array, performing one or more logical/arithmetical operations upon the combined results of said determining for the memory array and the second array.

36. The method of claim 35 , wherein the memory array and the second memory array are formed on different memory chips.

Assignments (5)
SECURITY AGREEMENT Recorded Apr 25, 2025
From: SANDISK TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
Reel/Frame 071050/0001 →
PARTIAL RELEASE OF SECURITY INTERESTS Recorded Apr 25, 2025
From: JPMORGAN CHASE BANK, N.A., AS AGENT
To: SANDISK TECHNOLOGIES, INC.
Reel/Frame 071382/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 31, 2024
From: SANDISK TECHNOLOGIES LLC
To: SANDISK TECHNOLOGIES, INC.
Reel/Frame 069796/0423 →
CHANGE OF NAME Recorded May 25, 2016
From: SANDISK TECHNOLOGIES INC
To: SANDISK TECHNOLOGIES LLC
Reel/Frame 038807/0898 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 5, 2013
From: SPROUSE, STEVEN T.; LI, YAN; GEORGE, JOHANN
To: SANDISK TECHNOLOGIES INC.
Reel/Frame 029758/0035 →
Continuity (4)
Continuation In Part 13749361 · Jan 24, 2013
Provisional Application 61724401 · Nov 9, 2012
Provisional Application 61730884 · Nov 28, 2012
Related Publication 20140133237A1 · May 15, 2014