IP Library Granted Patent US 9,977,736
Granted Patent B2
US 9,977,736 · App. 14/798,400 · Granted May 22, 2018

Optimized garbage collection algorithm to improve solid state drive reliability

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 9,977,736
App. No.
14/798,400
Granted
May 22, 2018
Kind
B2
Abstract

A method for managing memory operations in a storage device having a plurality of data blocks, the method including steps for determining a number of page reads for each of the plurality of data blocks and determining a dwell time for each of the plurality of data blocks. In certain aspects, the method further includes steps for associating the plurality of data blocks with a plurality of rank groups based on the number of page reads and the dwell time associated with each of the plurality of data blocks and selecting a data block, from among the plurality of data blocks, for memory reclamation based on the associated rank group and the selected data block. A storage system and computer-readable media are also provided.

Claims (70)

1. A method for managing memory operations in a storage device having a plurality of data blocks, the method comprising:

determining a number of page reads for each of the plurality of data blocks;

determining a dwell time for each of the plurality of data blocks;

associating the plurality of data blocks with a plurality of rank groups based on the number of page reads and the dwell time associated with each of the plurality of data blocks,

wherein, for each of the plurality of data blocks associated with a first rank group of the plurality of rank groups, the respective number of page reads is less than or equal to a threshold value for the number of page reads and the respective dwell time is less than or equal to a threshold value for the dwell time,

wherein, for each of the plurality of data blocks associated with a second rank group of the plurality of rank groups, the respective number of page reads exceeds the threshold value for the number of page reads and the respective dwell time is less than or equal to the threshold value for dwell time,

wherein, for each of the plurality of data blocks associated with a third rank group of the plurality of rank groups, the respective number of page reads is less than or equal to the threshold value for the number of page reads and the respective dwell time exceeds the threshold value for dwell time, and

wherein for each of the plurality of data blocks associated with a fourth rank group of the plurality of rank groups, the respective number of page reads exceeds the threshold value for the number of page reads and the respective dwell time exceeds the threshold value for dwell time; and

selecting a data block, from among the plurality of data blocks, for memory reclamation based on the associated rank group of the selected data block, wherein the data block is selected from a highest rank group of the plurality of rank groups having an associated data block.

2. The method of claim 1 , further comprising:

determining a number of invalid pages in each of the plurality of data blocks; and

ranking each of the plurality of data blocks within the associated plurality of rank groups based on one or more of the number of page reads, dwell time, or number of invalid pages,

wherein selecting the data block is further based on the ranking within the associated rank group of the selected data block.

3. The method of claim 1 , further comprising:

ranking each of the plurality of data blocks within the associated plurality of rank groups, wherein ranking each rank group of the plurality of rank groups is based on a set of criteria different from respective sets of criteria used for ranking within the other rank groups of the plurality of rank groups,

wherein selecting the data block is further based on the ranking within the associated rank group of the selected data block.

4. The method of claim 3 , wherein ranking each of the plurality of data blocks comprises:

ranking each data block of the plurality of data blocks that is associated with the second rank group based on the number of page reads of the data block; and

ranking each data block of the plurality of data blocks that is associated with the third rank group based on the dwell time of the data block.

5. The method of claim 3 , further comprising:

determining a number of invalid pages in each of the plurality of data blocks,

wherein ranking each data block of the plurality of data blocks comprises:

ranking each data block of the plurality of data blocks that is associated with the first rank group of the plurality of rank groups based on the number of invalid pages of the data block.

6. The method of claim 3 , wherein ranking each data block of the plurality of data blocks comprises ranking each data block of the plurality of data blocks that is associated with the fourth rank group based on a sum of at least the number of page reads and the dwell time of the data block.

7. A storage system, comprising:

a memory;

a memory array comprising a plurality of data blocks; and

a controller coupled to the memory and the memory array, wherein the controller is configured to perform operations for:

storing, to the memory, a number of page reads associated with each of the plurality of data blocks;

storing, to the memory, a dwell time associated with each of the plurality of data blocks;

associating the plurality of data blocks with a plurality of rank groups based on the number of page reads and the dwell time associated with each of the plurality of data blocks,

wherein, for each of the plurality of data blocks associated with a first rank group of the plurality of rank groups, the respective number of page reads is less than or equal to a threshold value for the number of page reads and the respective dwell time is less than or equal to a threshold value for the dwell time,

wherein, for each of the plurality of data blocks associated with a second rank group of the plurality of rank groups, the respective number of page reads exceeds the threshold value for the number of page reads and the respective dwell time is less than or equal to the threshold value for dwell time,

wherein, for each of the plurality of data blocks associated with a third rank group of the plurality of rank groups, the respective number of page reads is less than or equal to the threshold value for the number of page reads and the respective dwell time exceeds the threshold value for dwell time, and

wherein for each of the plurality of data blocks associated with a fourth rank group of the plurality of rank groups, the respective number of page reads exceeds the threshold value for the number of page reads and the respective dwell time exceeds the threshold value for dwell time; and

selecting a data block, from among the plurality of data blocks, for memory reclamation based on the associated rank group of the selected data block, wherein the data block is selected from a highest rank group of the plurality of rank groups having an associated data block.

8. The storage system of claim 7 , wherein the controller is further configured to perform operations comprising:

storing, to the memory, a number of invalid pages associated with each of the plurality of data blocks; and

ranking each of the plurality of data blocks within the associated plurality of rank groups based on one or more of the number of page reads, dwell time, or number of invalid pages,

wherein selecting the data block is further based on the ranking within the associated rank group of the selected data block.

9. The storage system of claim 7 , wherein the controller is further configured to perform operations comprising:

ranking each of the plurality of data blocks within the associated plurality of rank groups, wherein ranking within each rank group of the plurality of rank groups is based on a set of criteria different from respective sets of criteria used for ranking within the other rank groups of the plurality of rank groups,

wherein selecting the data block is further based on the ranking within the associated rank group of the selected data block.

10. The storage system of claim 9 , wherein ranking each of the plurality of data blocks comprises:

ranking each data block of the plurality of data blocks that is associated with the second rank group based on the number of page reads associated with the data block; and

ranking each data block of the plurality of data blocks that is associated with the third rank group based on the dwell time associated with the data block.

11. The storage system of claim 9 , wherein the controller is further configured to perform operations comprising:

determining a number of invalid pages associated with each of the plurality of data blocks,

wherein ranking each data block of the plurality of data blocks comprises:

ranking each data block of the plurality of data blocks that is associated with the first rank group of the plurality of rank groups based on the number of invalid pages of the data block.

12. The storage system of claim 9 , wherein ranking each data block of the plurality of data blocks comprises ranking each data block of the plurality of data blocks that is associated with the fourth rank group based on a sum of at least the number of page reads and the dwell time associated with the data block.

13. A non-transitory computer-readable storage medium comprising instructions stored therein, which when executed by a processor, cause the processor to perform operations comprising:

determining a number of page reads for each of a plurality of data blocks;

determining a dwell time for each of the plurality of data blocks;

associating the plurality of data blocks with a plurality of rank groups based on the number of page reads and the dwell time associated with each of the plurality of data blocks,

wherein, for each of the plurality of data blocks associated with a first rank group of the plurality of rank groups, the respective number of page reads is less than or equal to a threshold value for the number of page reads and the respective dwell time is less than or equal to a threshold value for the dwell time,

wherein, for each of the plurality of data blocks associated with a second rank group of the plurality of rank groups, the respective number of page reads exceeds the threshold value for the number of page reads and the respective dwell time is less than or equal to the threshold value for dwell time,

wherein, for each of the plurality of data blocks associated with a third rank group of the plurality of rank groups, the respective number of page reads is less than or equal to the threshold value for the number of page reads and the respective dwell time exceeds the threshold value for dwell time, and

wherein for each of the plurality of data blocks associated with a fourth rank group of the plurality of rank groups, the respective number of page reads exceeds the threshold value for the number of page reads and the respective dwell time exceeds the threshold value for dwell time; and

selecting a data block, from among the plurality of data blocks, for memory reclamation based on the associated rank group of the selected data block, wherein the data block is selected from a highest rank group of the plurality of rank groups having an associated data block.

14. The non-transitory computer-readable storage medium of claim 13 , wherein the operations further comprise:

ranking each of the plurality of data blocks within the associated plurality of rank groups, wherein ranking within each rank group of the plurality of rank groups is based on a set of criteria different from respective sets of criteria used for ranking within the other rank groups of the plurality of rank groups,

wherein selecting the data block is further based on the ranking within the associated rank group of the selected data block.

15. The non-transitory computer-readable storage medium of claim 14 , wherein ranking each of the plurality of data blocks comprises:

ranking each data block of the plurality of data blocks that is associated with the third rank group based on the dwell time of the data block; and

ranking each data block of the plurality of data blocks that is associated with the second rank group based on the number of page reads of the data block.

16. The non-transitory computer-readable storage medium of claim 14 , wherein the operations further comprise:

determining a number of invalid pages in each of the plurality of data blocks,

wherein ranking each data block of the plurality of data blocks comprises:

ranking each data block of the plurality of data blocks that is associated with the first rank group of the plurality of rank groups based on the number of invalid pages of the data block.

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 052915 FRAME 0566 Recorded Feb 8, 2022
From: JPMORGAN CHASE BANK, N.A.
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 059127/0001 →
SECURITY INTEREST Recorded Feb 6, 2020
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS AGENT
Reel/Frame 052915/0566 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 16, 2018
From: HGST TECHNOLOGIES SANTA ANA, INC.
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 046174/0446 →
CHANGE OF NAME Recorded Jun 6, 2016
From: STEC, INC.
To: HGST TECHNOLOGIES SANTA ANA, INC.
Reel/Frame 038895/0600 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 6, 2016
From: MELIK-MARTIROSIAN, ASHOT
To: STEC, INC.
Reel/Frame 038822/0950 →