IP Library Granted Patent US 8,400,854
Granted Patent B2
US 8,400,854 · App. 12/694,118 · Granted Mar 19, 2013

Identifying at-risk data in non-volatile storage

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,400,854
App. No.
12/694,118
Granted
Mar 19, 2013
Kind
B2
Abstract

The non-volatile storage system predicts which blocks (or other units of storage) will become bad based on performance data. User data in those blocks predicted to become bad can be re-programmed to other blocks, and the blocks predicted to become bad can be removed from further use.

Claims (117)

1. A method for detecting at-risk non-volatile storage elements, comprising:

programming first data into a first set of non-volatile storage elements;

after successfully completing the programming, determining whether the first set of non-volatile storage elements are prone to fail; and

if the first set of non-volatile storage elements are prone to fail, re-programming the first data to a second set of non-volatile storage elements that are different than the first set of non-volatile storage elements;

wherein the determining whether the first set of non-volatile storage elements are prone to fail comprises:

performing a first test on the first set of non-volatile storage elements to determine whether the first set of non-volatile storage elements are prone to fail,

if the first set of non-volatile storage elements fail the first test, performing a second test on the first set of non-volatile storage elements to determine whether the first set of non-volatile storage elements are prone to fail, and

concluding that the first set of non-volatile storage elements are prone to fail if the first set of non-volatile storage elements fail the second test;

wherein the programming includes performing multiple iterations of a programming operation and maintaining a particular programming loop counter for the first set of non-volatile storage elements;

wherein the performing the first test comprises comparing the particular memory loop counter to data based on other memory loop counters.

2. A method for detecting at-risk non-volatile storage elements, comprising:

programming first data into a first set of non-volatile storage elements;

after successfully completing the programming, determining whether the first set of non-volatile storage elements are prone to fail; and

if the first set of non-volatile storage elements are prone to fail, re-programming the first data to a second set of non-volatile storage elements that are different than the first set of non-volatile storage elements;

wherein the determining whether the first set of non-volatile storage elements are prone to fail comprises:

performing a first test on the first set of non-volatile storage elements to determine whether the first set of non-volatile storage elements are prone to fail,

if the first set of non-volatile storage elements fail the first test, performing a second test on the first set of non-volatile storage elements to determine whether the first set of non-volatile storage elements are prone to fail, and

concluding that the first set of non-volatile storage elements are prone to fail if the first set of non-volatile storage elements fail the second test.

3. The method of claim 2 , wherein:

the second test is performed slower than the first test.

4. The method of claim 2 , wherein:

the first set of non-volatile storage elements are connected to a particular word line of a memory system, the memory system includes a controller and a memory circuit, the memory circuit includes a memory array and support circuitry, the memory array includes blocks of non-volatile storage elements, each block includes a plurality of word lines, the particular word line is in a particular block, the programming includes performing multiple iterations of a programming operation and maintaining a particular program loop counter in the memory circuit that indicates how many iterations of the programming operation were performed for the first set of non-volatile storage elements; and

the performing the first test includes the controller performing a method comprising retrieving the particular program loop counter from the memory circuit, retrieving other program loop counters from the memory circuit for non-volatile storage elements connected to other word lines of the particular block, calculating an average of the retrieved particular program loop counter and other program loop counters, determining whether the particular program loop counter is within a range of the average, and concluding that the first set of non-volatile storage elements have failed the first test if the particular program loop counter is not within the range of the average.

5. The method of claim 2 , wherein the performing the second test includes:

reading the first data stored in the first set of non-volatile storage elements;

comparing the first data read with original data; and

determining whether an amount of differences between first data read and the original data is less than a reference number, the first set of non-volatile storage elements fail the second test if the amount of differences between first data read and the original data is not less than the reference number.

6. The method of claim 2 , wherein the performing the second test includes:

determining a threshold voltage distribution of a population of non-volatile storage elements that includes the first set of non-volatile storage elements;

identifying multiple minima points; and

calculating a number of non-volatile storage elements of the population that are between two of the minima points, the first set of non-volatile storage elements fail the second test if the number of non-volatile storage elements of the population that are between the two minima points is greater than a compare value.

7. The method of claim 6 , wherein:

the population of non-volatile storage elements is the first set of non-volatile storage elements.

8. The method of claim 2 , wherein:

the first set of non-volatile storage elements are connected to a particular word line of a memory system, the memory system includes a controller and a memory circuit, the memory circuit includes a memory array and support circuitry, the memory array includes a plurality of word lines including a particular word line; and

the performing the second test includes the controller determining a number of the first set of non-volatile storage elements that have their threshold voltage within an interval of threshold voltages and determining that the first set of non-volatile storage elements fail the second test if the number of the first set of non-volatile storage elements that have their threshold voltage within an interval is outside a range.

9. The method of claim 8 , wherein:

the interval includes threshold voltage values that are between a first voltage and a second voltage.

10. The method of claim 8 , wherein:

the interval includes threshold voltage values that are below a first voltage.

11. The method of claim 8 , wherein:

the interval includes threshold voltage values that are above a first voltage.

12. The method of claim 8 , wherein:

the programming includes performing multiple iterations of a programming operation and maintaining a particular program loop counter in the memory circuit that indicates how many iterations of the programming operation were performed for the first set of non-volatile storage elements; and

the performing the first test includes the controller performing a method comprising retrieving the particular program loop counter from the memory circuit, retrieving other program loop counters from the memory circuit for non-volatile storage elements connected to other word lines of the particular block, calculating an average of the retrieved particular program loop counter and other program loop counters, determining whether the particular program loop counter is within a range of the average, and concluding that the first set of non-volatile storage elements have failed the first test if the particular program loop counter is not within a range of the average.

13. A method for detecting at-risk non-volatile storage elements, comprising:

programming first data into a first set of non-volatile storage elements;

after successfully completing the programming, determining whether the first set of non-volatile storage elements are prone to fail; and

if the first set of non-volatile storage elements are prone to fail, re-programming the first data to a second set of non-volatile storage elements that are different than the first set of non-volatile storage elements;

wherein the determining whether the first set of non-volatile storage elements are prone to fail comprises:

performing a first test on the first set of non-volatile storage elements to determine whether the first set of non-volatile storage elements are prone to fail;

if the first set of non-volatile storage elements fail the first test due to a first condition, performing a second test on the first set of non-volatile storage elements to determine whether the first set of non-volatile storage elements are prone to fail;

concluding that the first set of non-volatile storage elements are prone to fail if the first set of non-volatile storage elements fail the second test; and

concluding that the first set of non-volatile storage elements are prone to fail if the first set of non-volatile storage elements fail the first test due to a second condition.

14. A method for detecting at-risk non-volatile storage elements, comprising:

programming first data into a first set of non-volatile storage elements;

after successfully completing the programming, determining whether the first set of non-volatile storage elements are prone to fail;

if the first set of non-volatile storage elements are prone to fail, re-programming the first data to a second set of non-volatile storage elements that are different than the first set of non-volatile storage elements;

if the first set of non-volatile storage elements are prone to fail, marking the first set of non-volatile storage elements as bad;

determining a number of units of non-volatile storage elements that have been marked as bad, the determining whether the first set of non-volatile storage elements are prone to fail includes performing a test for the first set of non-volatile storage elements; and

adjusting the test based on the number of units of non-volatile storage elements that have been marked as bad.

15. A method for detecting at-risk non-volatile storage elements, comprising:

changing data stored in a first set of non-volatile storage elements;

after the changing data, performing a first test on the first set of non-volatile storage elements to determine whether the first set of non-volatile storage elements are prone to fail;

if the first set of non-volatile storage elements fail the first test due to a first condition, performing a second test on the first set of non-volatile storage elements to determine whether the first set of non-volatile storage elements are prone to fail; and

if the first set of non-volatile storage elements fail the second test, marking the first set of non-volatile storage elements as bad.

16. The method of claim 15 , further comprising:

if the first set of non-volatile storage elements fail the first test due to a second condition that is different than the first condition, marking the first set of non-volatile storage elements as bad.

17. The method of claim 16 , wherein:

the changing data includes performing multiple iterations of a memory operation and maintaining a particular loop counter for the first set of non-volatile storage elements indicating a number of iterations of the memory condition for the first set of non-volatile storage elements;

the performing the first test comprises comparing the particular loop counter to data based on loop counters for non-volatile storage elements other than the first set;

the first condition is a first variance between the particular loop counter and the data based on loop counters for non-volatile storage elements other than the first set; and

the second condition is a second variance between the particular loop counter and the data based on loop counters for non-volatile storage elements other than the first set.

18. The method of claim 15 , wherein:

the changing data includes performing multiple iterations of a memory operation and maintaining a particular loop counter for the first set of non-volatile storage elements indicating a number of iterations of the memory condition for the first set of non-volatile storage elements;

the performing the first test comprises comparing the particular loop counter to data based on loop counters for non-volatile storage elements other than the first set; and

the first condition is a variance between the particular loop counter and the data based on loop counters for non-volatile storage elements other than the first set that is greater than a value.

19. The method of claim 15 , further comprising:

determining a number of units of non-volatile storage elements that have been marked as bad; and

adjusting the first test based on the number of units of non-volatile storage elements that have been marked as bad.

20. The method of claim 15 , wherein:

the changing data includes either programming or erasing.

21. A method for detecting at-risk non-volatile storage elements, comprising:

programming first data into non-volatile storage elements connected to a particular word line of a memory system, the memory system includes a controller and a memory circuit, the memory circuit includes a memory array and support circuitry, the memory array includes blocks of non-volatile storage elements, each block includes a plurality of word lines, the particular word line is in a particular block, the programming includes performing multiple iterations of a programming operation and maintaining a program loop counter that indicates how many iterations of the programming operation were performed;

determining a number of non-volatile storage elements connected to the particular word line that have their threshold voltage within a particular interval of threshold voltages, the determining a number of non-volatile storage elements is performed by the controller;

determining whether the particular block is bad based on the determined number of non-volatile storage elements connected to the particular word line that have their threshold voltage within the particular interval, the determining whether the particular block is bad is performed by the controller; and

programming the first data into non-volatile storage elements connected to a different word line of a different block of the memory system if the particular block is determined to be bad.

22. The method of claim 21 , wherein:

the particular interval includes threshold voltage values that are between a first voltage and a second voltage.

23. The method of claim 21 , wherein:

the particular interval includes threshold voltage values that are below a first voltage.

24. The method of claim 21 , wherein:

the particular interval includes threshold voltage values that are above a first voltage.

25. A non-volatile storage apparatus, comprising:

a memory circuit including plurality of non-volatile storage elements; and

a controller in communication with the memory circuit, the controller causes a first set of the non-volatile storage elements to change storage conditions, after the changing storage conditions the controller performs a first test on the first set of non-volatile storage elements to determine whether the first set of non-volatile storage elements are prone to fail, if the first set of non-volatile storage elements fail the first test due to a first condition then the controller performs a second test on the first set of non-volatile storage elements to determine whether the first set of non-volatile storage elements are prone to fail, if the first set of non-volatile storage elements fail the second test then the controller marks the first set of non-volatile storage elements as bad.

26. The non-volatile storage apparatus of claim 25 , wherein:

if the first set of non-volatile storage elements fail the first test due to a second condition that is different than the first condition, then the controller marks the first set of non-volatile storage elements as bad.

27. The non-volatile storage apparatus of claim 26 , wherein:

the changing storage conditions includes the memory circuit performing multiple iterations of a memory operation and maintaining a particular loop counter for the first set of non-volatile storage elements indicating the number of iterations of the memory operation for the first set of non-volatile storage elements;

the performing the first test comprises the controller comparing the particular loop counter to data based on loop counters for non-volatile storage elements other than the first set;

the first condition is a first variance between the particular loop counter and the data based on loop counters for non-volatile storage elements other than the first set; and

the second condition is a second variance between the particular loop counter and the data based on loop counters for non-volatile storage elements other than the first set.

28. The non-volatile storage apparatus of claim 25 , wherein:

the changing storage conditions includes the memory circuit performing multiple iterations of a memory operation and maintaining a particular loop counter for the first set of non-volatile storage elements indicating the number of iterations of the memory operation for the first set of non-volatile storage elements;

the performing the first test comprises the controller comparing the particular loop counter to data based on loop counters for non-volatile storage elements other than the first set; and

the first condition is a variance between the particular loop counter and the data based on loop counters for non-volatile storage elements other than the first set that is greater than a value.

29. The non-volatile storage apparatus of claim 25 , wherein:

the controller determines a number of units of non-volatile storage elements that have been marked as bad and adjusts the first test based on the number of units of non-volatile storage elements that have been marked as bad.

30. A non-volatile storage apparatus, comprising:

a memory circuit including plurality of non-volatile storage elements and a plurality of word lines; and

a controller in communication with the memory circuit, the controller causes programming of first data into a first set of the non-volatile storage elements, after successfully completing the programming the controller determines whether the first set of non-volatile storage elements are prone to fail, if the first set of non-volatile storage elements are prone to fail then the controller re-programs the first data to a second set of non-volatile storage elements that are different than the first set of non-volatile storage elements, the first set of non-volatile storage elements are connected to a particular word line of the plurality, the controller determines whether the first set of non-volatile storage elements are prone to fail by determining a number of the first set of non-volatile storage elements that have their threshold voltage within an interval of threshold voltages, the first set of non-volatile storage elements are prone to fail if the number of the first set of non-volatile storage elements that have their threshold voltage within an interval is outside an expected range.

31. A method for detecting at-risk non-volatile storage elements, comprising:

erasing a first set of non-volatile storage elements, the erasing includes performing multiple iterations of an erase operation and maintaining an erase loop counter for the first set of non-volatile storage elements indicating a number of iterations for the first set of non-volatile storage elements;

after the erasing, performing a first test on the first set of non-volatile storage elements to determine whether the first set of non-volatile storage elements are prone to fail, the performing the first test comprises comparing the erase loop counter to data based on loop counters for non-volatile storage elements other than the first set;

if the first set of non-volatile storage elements fail the first test due to a first condition, performing a second test on the first set of non-volatile storage elements to determine whether the first set of non-volatile storage elements are prone to fail; and

if the first set of non-volatile storage elements fail the second test, marking the first set of non-volatile storage elements as bad.

Assignments (4)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 17, 2025
From: SANDISK TECHNOLOGIES LLC
To: PALISADE TECHNOLOGIES, LLP
Reel/Frame 071435/0463 →
CHANGE OF NAME Recorded May 25, 2016
From: SANDISK TECHNOLOGIES INC
To: SANDISK TECHNOLOGIES LLC
Reel/Frame 038807/0850 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 16, 2011
From: SANDISK CORPORATION
To: SANDISK TECHNOLOGIES INC.
Reel/Frame 026286/0408 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 4, 2010
From: PEI, GEN; GU, LANLAN; MOKHLESI, NIMA; ALROD, IDAN; SHARON, ERAN; AFRIAT, ITSHAK
To: SANDISK CORPORATION
Reel/Frame 023898/0856 →