IP Library Granted Patent US 10,417,123
Granted Patent B1
US 10,417,123 · App. 14/028,412 · Granted Sep 17, 2019

Systems and methods for improving garbage collection and wear leveling performance in data storage systems

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 10,417,123
App. No.
14/028,412
Granted
Sep 17, 2019
Kind
B1
Abstract

Disclosed embodiments are directed to systems and methods for improving garbage collection and wear leveling performance in data storage systems. The embodiments can improve the efficiency of static wear leveling by picking the best candidate block for static wear leveling and/or postponing static wear leveling on certain candidate blocks. In one embodiment, one or more source blocks for a static wear leveling operation are selected based at least on whether the one or more blocks have a low P/E count and contain static data, such as data that has been garbage collected.

Claims (44)

1. A data storage system comprising:

a non-volatile solid-state memory array comprising memory units; and

a controller configured to:

identify a destination memory unit of the memory units, wherein a number of program-erase (P/E) operations performed on the destination memory unit exceeds a first P/E threshold,

determine a data age threshold that is lower than an initial data age threshold, wherein the determining is based on reducing the initial data age threshold by a scaling factor, which is based on the number of P/E operations performed on the destination memory unit and on the first P/E threshold,

select a source memory unit from a set of memory units storing data of the memory units, the source memory unit selected based at least on a data age of the data stored in the source memory unit exceeding the data age threshold separating a first data age range from a second data age range and on the number of P/E operations performed on the source memory unit not exceeding a second P/E threshold, and

perform an internal memory operation using the destination memory unit and the source memory unit.

2. The data storage system of claim 1 , wherein the internal memory operation comprises a wear leveling operation.

3. The data storage system of claim 1 , wherein the second P/E threshold corresponds to the number of P/E operations performed on a memory unit that has been subjected to a lowest number of P/E operations, wherein the first P/E threshold corresponds to the sum of the second P/E threshold and a P/E window size, and wherein the scaling factor includes a numerator comprising the number of P/E operations performed on the destination memory unit subtracted by the first P/E threshold, the numerator being subtracted by the P/E window size, and a denominator comprising the P/E window size.

4. The data storage system of claim 1 , wherein the controller is further configured to perform the internal memory operation using the destination memory unit and a memory unit selected based at least on the amount of invalid data stored in the memory unit when the data age of the data stored in each of the set of memory units is below the data age threshold, and wherein the internal memory operation comprises a garbage collection operation.

5. The data storage system of claim 1 , wherein the controller is further configured to:

maintain a counter indicative of a time duration that the controller is turned on; and

determine the data age of the data stored in the memory units based at least on a comparison between a first counter value when the data age is determined and a second counter value when the data is written to the memory units.

6. The data storage system of claim 1 , wherein the controller further is configured to:

assign timestamps to the data written to the memory units indicative of when the data is written to the memory units; and

determine the data age of the data stored in the memory units based at least on the timestamps.

7. The data storage system of claim 6 , wherein the controller is further configured to:

perform a garbage collection operation including writing the data stored in two or more memory units to a single memory unit; and

assign a single timestamp to the data written to the single memory unit by combining the timestamps assigned to the data stored in the two or more memory units.

8. The data storage system of claim 7 , wherein the controller is further configured to combine the timestamps using a weighted average.

9. The data storage system of claim 6 , wherein the controller is further configured to normalize the timestamps relative to a maximum data age of the data stored in the memory units or a value proportional to a write time for filling the memory units with data.

10. The data storage system of claim 1 , wherein the controller is further configured to select as the source memory unit a memory unit that stores the data having an oldest data age of the data stored in the set of memory units.

11. The data storage system of claim 1 , wherein the data comprises data received from a host system.

12. In a data storage system comprising a controller and a non-volatile solid-state memory array including memory units, a method comprising:

identifying a destination memory unit of the memory units, wherein a number of program-erase (P/E) operations performed on the destination memory unit exceeds a first P/E threshold;

determining a data age threshold that is lower than an initial data age threshold, wherein the determining is based on reducing the initial data age threshold by a scaling factor, which is based on the number of P/E operations performed on the destination memory unit and on the first P/E threshold;

selecting a source memory unit from a set of memory units storing data of the memory units, the source memory unit selected based at least on a data age of the data stored in the source memory unit exceeding the data age threshold separating a first data age range from a second data age range and on the number of P/E operations performed on the source memory unit not exceeding a second P/E threshold which is below the first P/E threshold; and

performing an internal memory operation using the destination memory unit and the source memory unit.

13. The method of claim 12 , wherein the internal memory operation comprises a wear leveling operation.

14. The method of claim 12 , wherein the second P/E threshold corresponds to the number of P/E operations performed on a memory unit that has been subjected to a lowest number of P/E operations, wherein the first P/E threshold corresponds to the sum of the second P/E threshold and a P/E window size, and wherein the scaling factor includes a numerator comprising the number of P/E operations performed on the destination memory unit subtracted by the first P/E threshold, the numerator being subtracted by the P/E window size, and a denominator comprising the P/E window size.

15. The method of claim 12 , further comprising performing the internal memory operation using the destination memory unit and a memory unit selected based at least on the amount of invalid data stored in the memory unit when the data age of the data stored in each of the set of memory units is below the data age threshold, and wherein the internal memory operation comprises a garbage collection operation.

16. The method of claim 12 , further comprising:

maintaining a counter indicative of a time duration that the controller is turned on; and

determining the data age of the data stored in the memory units based at least on a comparison between a first counter value when the data age is determined and a second counter value when the data is written to the memory units.

17. The method of claim 12 , further comprising:

assigning timestamps to the data written to the memory units indicative of when the data is written to the memory units; and

determining the data age of the data stored in the memory units based at least on the timestamps.

18. The method of claim 17 , further comprising:

performing a garbage collection operation including writing the data stored in two or more memory units to a single memory unit; and

assigning a single timestamp to the data written to the single memory unit by combining the timestamps assigned to the data stored in the two or more memory units.

19. The method of claim 18 , wherein said combining comprises combining the timestamps using a weighted average.

20. The method of claim 17 , further comprising normalizing the timestamps relative to a maximum data age of the data stored in the memory units or a value proportional to a write time for filling the memory units with data.

21. The method of claim 12 , wherein said selecting comprising selecting as the source memory unit a memory unit that stores the data having an oldest data age of the data stored in the set of memory units.

22. The method of claim 12 , wherein the data comprises data received from a host system.

Assignments (13)
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 038722/0229 →
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 038744/0481 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 16, 2014
From: SOURI, KAMYAR; TOMLIN, ANDREW J.; OBUKHOV, DMITRY S.; BOOTH, JING; SYU, MEI-MAN L.
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 034521/0748 →