IP Library Granted Patent US 7,900,102
Granted Patent B2
US 7,900,102 · App. 11/957,970 · Granted Mar 1, 2011

High-speed programming of memory devices

Assignee: Anobit Technologies Ltd.
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 7,900,102
App. No.
11/957,970
Granted
Mar 1, 2011
Kind
B2
Abstract

A method for operating a memory that includes a plurality of analog memory cells includes storing data in a first group of the memory cells by writing respective first cell values to the memory cells in the first group. After storing the data, respective second cell values are read from the memory cells in the first group, and differences are found between the respective first and second cell values for each of one or more of the memory cells in the first group. The differences are processed to produce error information, and the error information is stored in a second group of the memory cells.

Claims (58)

1. A method for operating a memory that includes a plurality of analog memory cells, comprising:

storing data in a first group of the memory cells by writing respective first analog cell values to the memory cells in the first group;

after storing the data, reading respective second analog cell values from the memory cells in the first group, and finding differences between the respective first and second analog cell values for each of one or more of the memory cells in the first group;

processing the differences to produce error information;

storing the error information in a second group of the memory cells; and

retrieving the stored data by retrieving the error information from the second group of the memory cells, reading third analog cell values from the cells in the first group, and processing the third analog cell values responsively to the retrieved error information to produce corrected data.

2. The method according to claim 1 , wherein the second group of the memory cells is different from the first group.

3. The method according to claim 1 , wherein writing the first analog cell values and reading the second analog cell values comprise programming the memory cells of the first group in an iterative Program and Verify (P&V) process.

4. The method according to claim 1 , wherein processing the differences comprises quantizing the differences by mapping the differences to a finite set of difference indications, and wherein storing the error information comprises storing the quantized differences.

5. The method according to claim 4 , wherein processing the differences comprises adaptively controlling a size of the produced error information responsively to the quantized differences.

6. The method according to claim 4 , wherein storing the data comprises selecting the first analog cell values from a set of nominal values, and wherein the difference indications indicate whether the nominal values corresponding to the read second analog cell values differ from the respective nominal values corresponding to the written first analog cell values.

7. The method according to claim 6 , wherein, for a given first analog cell value that corresponds to a first nominal value and a given second analog cell value that corresponds to a second nominal value, the difference indications comprise at least one of:

a first indication indicating that the first nominal value is lower than and adjacent to the second nominal value in the set of the nominal values;

a second indication indicating that the first nominal value is greater than and adjacent to the second nominal value in the set of the nominal values; and

a third indication indicating that the first nominal value is equal to the second nominal value.

8. The method according to claim 1 , wherein storing the error information comprises compressing the error information and storing the compressed error information.

9. The method according to claim 1 , wherein storing the error information comprises encoding the error information with an Error Correction Code (ECC) and storing the encoded error information.

10. The method according to claim 1 , wherein storing the error information comprises storing indices of the memory cells of the first group in which the differences were found.

11. The method according to claim 1 , wherein reading the second analog cell values and finding the differences are performed immediately after writing the first analog cell values.

12. The method according to claim 1 , wherein reading the second analog cell values and finding the differences are performed a predetermined time interval after writing the first analog cell values.

13. The method according to claim 1 , wherein the memory cells in the first group are subject to interference from a third group of the memory cells, and wherein reading the second analog cell values and finding the differences are performed after the memory cells in the third group have been programmed.

14. The method according to claim 1 , wherein reading the second analog cell values and finding the differences are performed responsively to an event.

15. The method according to claim 1 , wherein retrieving the stored data comprises making an attempt to reconstruct the data from the third analog cell values without the error information, and retrieving the error information and processing the third analog cell values responsively to the retrieved error information upon a failure of the attempt.

16. The method according to claim 1 , wherein storing the data comprises encoding the data with a code that detects errors in the data, and wherein retrieving the stored data comprises detecting the errors in the data using the code and updating the error information based on the third analog cell values when a number of the detected errors meets a predetermined condition.

17. The method according to claim 16 , wherein updating the error information is performed when the number of the detected errors exceeds a predetermined threshold.

18. The method according to claim 1 , wherein storing the data comprises programming the first memory cells using first programming parameters such that the error information has a first size, and comprising, after retrieving the stored data,

re-programming the data using second programming parameters so as to produce refined error information having a second size, which is smaller than the first size.

19. The method according to claim 1 , wherein finding the differences comprises determining respective residual programming errors caused by writing of the first analog cell values to the memory cells in the first group, and wherein processing the third analog cell values comprises correcting the residual programming errors based on the retrieved error information.

20. An apparatus for operating a memory that includes a plurality of analog memory cells, comprising:

Read/Write (R/W) circuitry, which is coupled to store data in a first group of the memory cells by writing respective first analog cell values to the memory cells in the first group and, after storing the data, to read respective second analog cell values from the analog memory cells in the first group; and

a processor, which is configured to find differences between the respective first and second analog cell values for each of one or more of the memory cells in the first group, to process the differences to produce error information, to store the error information in a second group of the memory cells, and to retrieve the stored data by retrieving the error information from the second group of the memory cells, reading third analog cell values from the cells in the first group, and processing the third analog cell values responsively to the retrieved error information to produce corrected data.

21. The apparatus according to claim 20 , wherein the second group of the memory cells is different from the first group.

22. The apparatus according to claim 20 , wherein the R/W circuitry is coupled to program the memory cells of the first group in an iterative Program and Verify (P&V) process.

23. The apparatus according to claim 20 , wherein the processor is configured to quantize the differences by mapping the differences to a finite set of difference indications, and to store the quantized differences in the second group of the memory cells.

24. The apparatus according to claim 23 , wherein processing the differences comprises adaptively controlling a size of the produced error information responsively to the quantized differences.

25. The apparatus according to claim 23 , wherein the R/W circuitry is coupled to select the first analog cell values from a set of nominal values, and wherein the difference indications indicate whether the nominal values corresponding to the read second analog cell values differ from the respective nominal values corresponding to the written first analog cell values.

26. The apparatus according to claim 25 , wherein, for a given first analog cell value that corresponds to a first nominal value and a given second analog cell value that corresponds to a second nominal value, the difference indications comprise at least one of:

a first indication indicating that the first nominal value is lower than and adjacent to the second nominal value in the set of the nominal values;

a second indication indicating that the first nominal value is greater than and adjacent to the second nominal value in the set of the nominal values; and

a third indication indicating that the first nominal value is equal to the second nominal value.

27. The apparatus according to claim 20 , wherein the processor is configured to compress the error information and to store the compressed error information.

28. The apparatus according to claim 20 , wherein the R/W circuitry is coupled to compare the respective first and second analog cell values to produce the differences, to compress the differences and to send the compressed differences to the processor.

29. The apparatus according to claim 20 , wherein the processor is configured to encode the error information with an Error Correction Code (ECC) and to store the encoded error information.

30. The apparatus according to claim 20 , wherein the processor is configured to store indices of the memory cells of the first group in which the differences were found.

31. The apparatus according to claim 20 , wherein the processor and the R/W circuitry are configured to read the second analog cell values and to find the differences immediately after writing the first analog cell values.

32. The apparatus according to claim 20 , wherein the processor and the R/W circuitry are configured to read the second analog cell values and to find the differences a predetermined time interval after writing the first analog cell values.

33. The apparatus according to claim 20 , wherein the memory cells in the first group are subject to interference from a third group of the memory cells, and wherein the processor and the R/W circuitry are configured to read the second analog cell values and to find the differences after the memory cells in the third group have been programmed.

34. The apparatus according to claim 20 , wherein the processor and the R/W circuitry are configured to read the second analog cell values and to find the differences responsively to an event.

35. The apparatus according to claim 20 , wherein the processor is configured to make an attempt to reconstruct the data from the third analog cell values without the error information, and to retrieve the error information and process the third analog cell values responsively to the retrieved error information upon a failure of the attempt.

36. The apparatus according to claim 20 , wherein the processor is configured to encode the data with a code that detects errors in the data, to store the encoded data in the first group of the memory cells, and, when retrieving the stored data, to detect the errors in the data using the code and to update the error information based on the third analog cell values when the number of the detected errors meets a predetermined condition.

37. The apparatus according to claim 36 , wherein the processor is configured to update the error information when the number of the detected errors exceeds a predetermined threshold.

38. The apparatus according to claim 20 wherein the processor is configured to run a background task that finds the differences and produces the error information.

39. The apparatus according to claim 20 , wherein the processor is configured to program the first group of the memory cells using first programming parameters such that the error information has a first size, and, after retrieving the stored data, to re-program the data using second programming parameters so as to produce refined error information having a second size, which is smaller than the first size.

40. The apparatus according to claim 20 , wherein the differences comprise respective residual programming errors caused by writing of the first analog cell values to the memory cells in the first group, and wherein the processor is configured to correct the residual programming errors based on the retrieved error information.

41. An apparatus for data storage, comprising:

a memory, which comprises a plurality of analog memory cells;

Read/Write (R/W) circuitry, which is coupled to store data in a first group of the memory cells by writing respective first analog cell values to the memory cells in the first group and, after storing the data, to read respective second analog cell values from the analog memory cells in the first group, and

a processor, which is configured to find differences between the respective first and second analog cell values for each of one or more of the memory cells in the first group, to process the differences to produce error information, to store the error information in a second group of the memory cells, and to retrieve the stored data by retrieving the error information from the second group of the memory cells, reading third analog cell values from the cells in the first group, and processing the third analog cell values responsively to the retrieved error information to produce corrected data.

Assignments (3)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 19, 2012
From: ANOBIT TECHNOLOGIES LTD.
To: APPLE INC.
Reel/Frame 028399/0733 →
CHANGE OF ADDRESS OF ASSIGNEE Recorded Feb 7, 2011
From: SOKOLOV, DOTAN; SHALVI, OFIR
To: ANOBIT TECHNOLOGIES LTD.
Reel/Frame 025750/0580 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 18, 2007
From: SOKOLOV, DOTAN; SHALVI, OFIR
To: ANOBIT TECHNOLOGIES LTD.
Reel/Frame 020260/0298 →
Continuity (2)
Provisional Application 60870399 · Dec 17, 2006
Related Publication 20080148115A1 · Jun 19, 2008