IP Library Granted Patent US 7,859,932
Granted Patent B2
US 7,859,932 · App. 12/338,879 · Granted Dec 28, 2010

Data refresh for 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 7,859,932
App. No.
12/338,879
Granted
Dec 28, 2010
Kind
B2
Abstract

Techniques are disclosed to refresh data in a non-volatile storage device often enough to combat erroneous or corrupted data bits, but not so often as to interfere with memory access or to cause excessive stress on the memory cells. One embodiment includes determining to perform a refresh of data stored in a first group of non-volatile storage elements in a device based on a condition of data in the first group, determining that a second group of non-volatile storage elements in the device should undergo a refresh procedure based on when the second group of non-volatile storage elements were last programmed relative to when the first group of non-volatile storage elements were last programmed, and performing the refresh procedure on the second group of non-volatile storage element.

Claims (67)

1. A method for operating a non-volatile storage device, the method comprising:

determining that a refresh of data stored in a first group of non-volatile storage elements in the device should be performed based on a condition of one or more of the non-volatile storage elements in the first group;

determining that a second group of non-volatile storage elements in the device should undergo a refresh procedure based on when the second group of non-volatile storage elements were last programmed relative to when the first group of non-volatile storage elements were last programmed; and

performing the refresh procedure on the second group of non-volatile storage elements.

2. The method of claim 1 , wherein the performing the refresh procedure includes:

determining whether to refresh data stored in the second group of non-volatile storage elements based on a condition of one or more of the non-volatile storage elements in the second group.

3. The method of claim 1 , wherein the performing the refresh procedure includes:

refreshing data stored in the second group of non-volatile storage elements without determining whether a data integrity problem exists in the second group of non-volatile storage elements.

4. The method of claim 1 , wherein the determining that a second group of non-volatile storage elements in the device should undergo a refresh procedure includes:

determining which non-volatile storage elements in the device were programmed prior to the first group of non-volatile storage elements.

5. The method of claim 1 , wherein the determining that a second group of non-volatile storage elements in the device should undergo a refresh procedure includes:

accessing a first time stamp associated with the first group of non-volatile storage elements, the first time stamp indicates when the first group of non-volatile storage elements was last programmed;

accessing time stamps associated with blocks of non-volatile storage elements in the device, the time stamps indicate when each of the blocks of non-volatile storage elements was last programmed; and

determining which of the blocks have associated time stamps that are earlier than the first time stamp.

6. The method of claim 1 , wherein the determining that a second group of non-volatile storage elements in the device should undergo a refresh procedure includes:

accessing a sequence number for each of a plurality of groups of non-volatile storage elements in the device, the sequence numbers indicate the order in which the plurality of groups were programmed, the sequence numbers include a first sequence number for the first group and a second sequence number for the second group; and

determining that data stored in groups having a sequence number that is lower than the first sequence number should be refreshed, the second sequence number is lower than the first sequence number.

7. The method of claim 1 , further comprising:

programming the first group to a plurality of threshold voltage distributions that includes a first threshold voltage distribution and a second threshold voltage distribution, and wherein the determining that a refresh of data stored in a first group of non-volatile storage elements in the device should be performed includes:

determining a threshold distribution of the first group of non-volatile memory cells;

determining a reference point on the threshold distribution; and

determining whether data stored in the first group should be refreshed based on a shift in the reference point.

8. The method of claim 7 , wherein the determining a reference point in the threshold distribution includes:

applying a plurality of read reference voltages to at least a portion of the non-volatile storage elements in the first group, the read reference voltages are applied over a voltage range that includes a portion of the first threshold voltage distribution and the second threshold voltage distribution;

determining a valley in the threshold distribution based applying the read reference voltages, the valley is the reference point.

9. The method of claim 8 , wherein the first group is associated with a plurality of word lines and wherein the method further comprises randomly selecting a first word line of the word lines to apply the plurality of read reference voltages to.

10. The method of claim 9 , wherein the determining that a refresh of data stored in a first group of non-volatile storage elements in the device should be performed is further based on the position of the first word line relative to the position of the other word lines.

11. The method of claim 10 , wherein the determining that a refresh of data stored in a first group of non-volatile storage elements in the device should be performed is further based on the number of times the one or more non-volatile storage elements in the first group have been programmed.

12. The method of claim 11 , wherein the determining that a refresh of data stored in a first group of non-volatile storage elements in the device should be performed is further based on comparing a temperature when the one or more non-volatile storage elements in the first group were programmed with a current temperature.

13. The method of claim 1 , wherein the determining that a refresh of data stored in a first group of non-volatile storage elements in the device should be performed includes:

determining how many bits of data in the first group need to be corrected by an error correction algorithm; and

determining that the number of data bits in the first group that need to be corrected by the error correction algorithm is greater than a threshold.

14. A method for operating a non-volatile storage device, the method comprising:

writing data to a set of non-volatile storage elements in the device, the data is written as a plurality of bits in each of the non-volatile storage elements in the set;

determining whether data stored in a first group of non-volatile storage elements in the set should be refreshed based on a condition of one or more of the non-volatile storage elements in the first group;

determining which non-volatile storage elements in the set were written prior to the first group of non-volatile storage elements in response to determining that data stored in the first group should be refreshed; and

determining that the non-volatile storage elements that were written prior to the first group should undergo a refresh procedure.

15. The method of claim 14 , further comprising performing the refresh procedure, the refresh procedure includes:

determining whether the non-volatile storage elements that were written prior to the first group should have data refreshed; and

refreshing data stored in the non-volatile storage elements that were written prior to the first group if it is determined that the non-volatile storage elements that were written prior to the first group should have data refreshed.

16. The method of claim 14 , further comprising:

determining which non-volatile storage elements in the set were written a certain amount of time after the first group of non-volatile storage elements; and

determining that the non-volatile storage elements that were written the certain amount of time after the first group should not have data refreshed in response to determining that data stored in the first group should be refreshed.

17. The method of claim 16 , further comprising:

determining which non-volatile storage elements in the set were written after the first group of non-volatile storage elements but prior to the certain amount of time; and

determining that the non-volatile storage elements in the set that were written after the first group of non-volatile storage elements but prior to the certain amount of time should have data refreshed in response to determining that data stored in the first group should be refreshed.

18. The method of claim 14 , further comprising:

determining that data stored in the set of non-volatile storage elements has been refreshed more often than permitted over an interval; and

displaying a message on a user interface to suggest a change in how the device is exposed to environmental conditions, the displaying is in response to the determining that data stored in the set of non-volatile storage elements has been refreshed more often than permitted over an interval.

19. The method of claim 17 , wherein the message suggests that the device not be exposed to high temperatures for extended time periods.

20. A method for operating a multi-state memory device that is organized into blocks of non-volatile storage elements, the method comprising:

determining that there is a data integrity problem with one or more non-volatile storage elements in a first block of the blocks;

determining which of the blocks in the device were written prior to the first block; and

refreshing data stored in the first block and the blocks that were written prior to the first block without determining whether there is a data integrity problem with non-volatile storage elements in the blocks that were written prior to the first block.

21. The method of claim 20 , wherein the determining that there is a data integrity problem includes:

determining that there is a data retention problem with the one or more non-volatile storage elements in the first block.

22. The method of claim 21 , wherein the determining that there is a data retention problem includes:

measuring a shift in a threshold distribution of non-volatile storage elements in the block.

23. The method of claim 20 , wherein the determining that there is a data integrity problem with one or more non-volatile storage elements in a first block of the blocks includes:

applying a plurality of read reference voltages to at least a portion of the non-volatile storage elements in the first block, the read reference voltages are applied over a voltage range that includes a portion of a first threshold voltage distribution and a second threshold voltage distribution that overlap;

determining conditions of the portion of the non-volatile storage elements based on the read reference voltages; and

determining a valley in the threshold distribution of the portion of the non-volatile storage elements based on the conditions.

24. The method of claim 23 , wherein the determining that there is a data integrity problem further includes:

determining whether the intersect voltage has shifted by more than an allowed amount for the first threshold voltage distribution and the second threshold voltage distribution.

25. The method of claim 20 , wherein the determining that there is a data integrity problem includes:

determining how many bits of data in the first block need to be corrected by an error correction algorithm; and

determining that the number of data bits in the first block that need to be corrected by the error correction algorithm is greater than a threshold.

Assignments (6)
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 038809/0600 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 13, 2011
From: SANDISK CORPORATION
To: SANDISK TECHNOLOGIES INC.
Reel/Frame 026279/0992 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 19, 2008
From: MOKHLESI, NIMA
To: SANDISK CORPORATION
Reel/Frame 022007/0621 →