IP Library Granted Patent US 8,612,669
Granted Patent B1
US 8,612,669 · App. 12/824,434 · Granted Dec 17, 2013

System and method for performing data retention in solid-state memory using copy commands and validity and usage data

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,612,669
App. No.
12/824,434
Granted
Dec 17, 2013
Kind
B1
Abstract

Systems and methods for retaining data in non-volatile solid-state are disclosed in which refresh copy operations are performed on data stored in non-volatile solid-state memory. A controller can comprise a data retention module configured to issue copy commands within different periods of time, and to maintain usage data on a storage subsystem. A refresh copy operation helps ensure that data written to memory retain integrity by causing data to be programmed again onto the memory, which minimizes the risk of data error caused by electron leak in the non-volatile solid-state memory. One or more data structures may be used to determine memory blocks that require refresh copy operations. In one embodiment, a validity bit array is used to track blocks that contain valid data. In another embodiment, a least recently used list is used to track blocks that have been least recently written.

Claims (46)

1. A storage subsystem, comprising:

a non-volatile solid-state memory array; and

a controller comprising a data retention module, the data retention module configured to:

issue a plurality of copy commands for copying data stored in physical memory locations, within the non-volatile solid-state memory array, that are selected by the data retention module;

maintain usage data on the storage subsystem;

maintain a first data structure comprising a plurality of validity indications for corresponding physical memory locations in the non-volatile solid-state memory array, the indications reflecting whether the corresponding physical memory locations contain valid data; and

use the first data structure to determine the selected physical memory locations so that the copy commands are issued for physical memory locations indicated by the first data structure as containing valid data,

wherein the data retention module is further configured to issue the copy commands so that the data in the selected physical memory locations are copied at least once within a first period of time determined by the data retention module based on the usage data.

2. The storage subsystem of claim 1 , wherein the copy commands are issued independent of a command issued by a host system from which the storage subsystem is configured to receive commands.

3. The storage subsystem of claim 1 , wherein the usage data comprises a number of program and erase cycles that the non-volatile solid-state memory array has experienced.

4. The storage subsystem of claim 1 , wherein the first data structure comprises a bit array.

5. The storage subsystem of claim 1 , wherein the controller is configured to prioritize the copy commands for execution when it is determined that a time period remaining in the first period of time is shorter than a time period needed to complete copy commands for the remaining physical memory locations indicated by the first data structure as containing valid data.

6. The storage subsystem of claim 1 , wherein the data retention module is further configured to issue the copy commands when the controller is not processing a memory command.

7. The storage subsystem of claim 1 , wherein the selected physical memory locations comprise physical memory locations for the entire non-volatile solid-state memory array.

8. The storage subsystem of claim 7 , wherein each of the plurality of copy commands is issued periodically in a time interval determined by dividing the first period of time by a number of physical memory locations in the non-volatile solid-state memory array.

9. The storage subsystem of claim 1 , wherein the first period of time is three months.

10. The storage subsystem of claim 9 , wherein the usage data comprises an amount of time during which the storage subsystem is powered on.

11. The storage subsystem of claim 1 , wherein the data retention module is further configured to update the first data structure when the controller executes a command other than one of the plurality of copy commands on the non-volatile solid-state memory array to reflect a change in validity caused by execution of the command other than one of the plurality of copy commands.

12. The storage subsystem of claim 11 , wherein the data retention module is further configured to:

issue the plurality of copy commands within a second period of time that is shorter than the first period of time; and

within the second period of time when the controller executes a command other than one of the plurality of copy commands on the non-volatile solid-state memory array, update a second data structure comprising validity indications for corresponding physical memory locations in the non-volatile solid-state memory array.

13. The storage subsystem of claim 12 , wherein the data retention module is further configured to use the second data structure after the end of the second period of time to determine the selected physical memory locations.

14. The storage subsystem of claim 1 , wherein the data retention module is further configured to maintain a list of physical memory locations in the non-volatile solid-state memory sorted by a least recently used (LRU) criterion and use the list to select physical memory locations for the copy commands.

15. The storage subsystem of claim 14 , wherein the list of physical memory locations is implemented as a linked list.

16. A method of retaining data in non-volatile solid-state memory, the method comprising:

selecting a plurality of physical memory locations within the non-volatile solid-state memory;

issuing a plurality of copy commands for copying data stored in the selected physical memory locations within the non-volatile solid-state memory;

maintaining usage data on a storage subsystem which comprises the non-volatile solid-state memory;

using the usage data to determine a first period of time, wherein the copy commands are issued so that data in the selected physical memory locations are copied at least once within the first period of time;

maintaining a first data structure comprising a plurality of validity indications for corresponding physical memory locations in the non-volatile solid-state memory, the indications reflecting whether the corresponding physical memory locations contain valid data; and

using the first data structure to determine the selected physical memory locations so that the copy commands are issued for physical memory locations indicated by the first data structure as containing valid data.

17. The method of claim 16 , wherein the usage data comprises a number of program and erase cycles that the non-volatile solid-state memory has experienced.

18. The method of claim 16 , further comprising: updating the first data structure when a command other than one of the plurality of copy commands is executed on the non-volatile solid-state memory to reflect a change in validity caused by execution of the command other than one of the plurality of copy commands.

19. The method of claim 16 , wherein the first data structure comprises a bit array.

20. The method of claim 16 , further comprising:

prioritizing the copy commands for execution when it is determined that a time period remaining in the first period of time is shorter than a time period needed to complete copy commands for the remaining physical memory locations indicated by the first data structure as containing valid data.

21. The method of claim 16 , wherein issuing a plurality of copy commands for copying data stored at the selected physical memory locations further comprises issuing the copy commands when no memory command is being executed in the non-volatile solid-state memory.

22. The method of claim 16 , wherein the selected physical memory locations comprise physical memory locations for the entire non-volatile solid-state memory.

23. The method of claim 22 , wherein the issuing comprises periodically issuing each of the plurality of copy commands in a time interval determined by dividing the first period of time by a number of physical memory locations in the non-volatile solid-state memory.

24. The method of claim 16 , wherein the first period of time is three months.

25. The method of claim 24 , wherein the usage data comprises an amount of time during which the storage subsystem is powered on.

26. The method of claim 16 , wherein the issuing comprises issuing the plurality of copy commands within a second period of time that is shorter than the first period of time and the method further comprises: within the second period of time when a command other than one of the plurality of copy commands is executed on the non-volatile solid-state memory, updating a second data structure comprising validity indications for corresponding physical memory locations in the non-volatile solid-state memory.

27. The method of claim 26 , wherein the selecting comprises using the second data structure after the end of the second period of time to determine the selected physical memory locations.

28. The method of claim 16 , further comprising:

maintaining a list of physical memory locations in the non-volatile solid-state memory sorted by a least recently used (LRU) criterion, wherein the selecting comprises using the list to select physical memory locations for the copy commands.

29. The method of claim 28 , wherein the list of physical memory locations is implemented as a linked list.

Assignments (12)
SECURITY AGREEMENT (SUPPLEMENTAL) Recorded Nov 14, 2024
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
Reel/Frame 069411/0208 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 11, 2024
From: SANDISK TECHNOLOGIES, INC.
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 069168/0273 →
PATENT COLLATERAL AGREEMENT Recorded Aug 23, 2024
From: SANDISK TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS THE AGENT
Reel/Frame 068762/0494 →
CHANGE OF NAME Recorded Jun 27, 2024
From: SANDISK TECHNOLOGIES, INC.
To: SANDISK TECHNOLOGIES, INC.
Reel/Frame 067982/0032 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 29, 2024
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: SANDISK TECHNOLOGIES, INC.
Reel/Frame 067567/0682 →
PATENT COLLATERAL AGREEMENT - DDTL LOAN AGREEMENT Recorded Aug 21, 2023
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 067045/0156 →
PATENT COLLATERAL AGREEMENT - A&R LOAN AGREEMENT Recorded Aug 21, 2023
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 064715/0001 →
RELEASE OF SECURITY INTEREST AT REEL 038744 FRAME 0481 Recorded Feb 8, 2022
From: JPMORGAN CHASE BANK, N.A.
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 058982/0556 →
RELEASE OF SECURITY INTEREST Recorded Mar 5, 2018
From: U.S. BANK NATIONAL ASSOCIATION, AS COLLATERAL AGENT
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 045501/0714 →
SECURITY AGREEMENT Recorded May 17, 2016
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
Reel/Frame 038744/0481 →
SECURITY AGREEMENT Recorded May 17, 2016
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: U.S. BANK NATIONAL ASSOCIATION, AS COLLATERAL AGENT
Reel/Frame 038744/0281 →
SECURITY AGREEMENT Recorded May 17, 2016
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
Reel/Frame 038722/0229 →