IP Library Granted Patent US 11,188,456
Granted Patent B2
US 11,188,456 · App. 15/465,367 · Granted Nov 30, 2021

Storage system and method for predictive block allocation for efficient garbage collection

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 11,188,456
App. No.
15/465,367
Granted
Nov 30, 2021
Kind
B2
Abstract

A storage system and method for predictive block allocation for efficient garbage collection are provided. One method involves determining whether a memory in a storage system is being used in a first usage scenario or a second usage scenario; in response to determining that the memory is being used in the first usage scenario, using a first block allocation method; and in response to determining that the memory is being used in the second usage scenario, using a second block allocation method, wherein the first block allocation method allocates blocks that are closer to needing garbage collection than the second block allocation method.

Claims (51)

1. A method for block allocation, the method comprising:

determining whether a memory in a storage system is being used in a first usage scenario or a second usage scenario by:

receiving a plurality of write commands which define a current write pattern;

comparing the current write pattern to a first write pattern which is defined by a first plurality of example write commands, stored in the storage system and corresponding to the first usage scenario and to a second write pattern which is defined by a second plurality of example write commands, stored in the storage system and corresponding to the second usage scenario;

generating a first score that represents a matching level of the current write pattern to the first write pattern and generating a second score that represents a matching level of the current write pattern to the second write pattern;

determining whether the first score or the second score exceeds a threshold;

in response to the first score exceeding the threshold, determining that the memory is being used in the first usage scenario; and

in response to the second score exceeding the threshold, determining that the memory is being used in the second usage scenario;

in response to the memory being used in the first usage scenario, using a first block allocation method; and

in response to the memory being used in the second usage scenario, using a second block allocation method;

wherein the first block allocation method comprises allocating first blocks and the second block allocation method comprises allocating second blocks, wherein the first blocks are closer to needing garbage collection than the second blocks.

2. The method of claim 1 , wherein the determining whether the memory is being used in the first usage scenario or the second usage scenario is performed using machine learning.

3. The method of claim 2 , wherein the machine learning uses supervised learning.

4. The method of claim 2 , wherein the machine learning uses unsupervised learning.

5. The method of claim 1 , wherein the determining whether the memory is being used in the first usage scenario or the second usage scenario further comprises calculating a ratio of user single address updates versus drive rewrites.

6. The method of claim 1 further comprising altering a time of garbage collection.

7. The method of claim 6 , wherein the altering the time of garbage collection comprises adjusting at least one threshold parameter for initiating garbage collection.

8. The method of claim 6 , wherein the altering the time of garbage collection comprises altering a ratio of triggering garbage collection operations versus host write.

9. The method of claim 6 , wherein the altering the time of garbage collection comprises altering a ratio of dynamic versus static garbage collection operations.

10. The method of claim 1 , wherein data stored in the first usage scenario is updated less frequently than data stored in the second usage scenario.

11. The method of claim 1 , wherein the memory comprises a three-dimensional memory.

12. The method of claim 1 , wherein the method is performed in the storage system.

13. The method of claim 1 , wherein the first usage scenario is a drive rewrite scenario.

14. The method of claim 1 , wherein the first write pattern is based on the first plurality of example write commands repeatedly writing a same range of logical block addresses (LBAs).

15. The method of claim 1 , wherein each of the current write pattern, the first write pattern, and the second write pattern comprises a logical block address (LBA) write history.

16. The method of claim 1 , wherein each of the current write pattern, the first write pattern, and the second write pattern comprises a pattern of write addresses.

17. A storage system comprising:

a memory; and

a controller in communication with the memory, wherein the controller is configured to:

receive a plurality of write commands which define

a current write pattern;

compare the current write pattern to a first write pattern which is defined by a first plurality of example write commands, corresponding to a first usage scenario and a second write pattern which is defined by a second plurality of example write commands, corresponding to a second usage scenario;

generate a first score that represents a matching level of the current write pattern to the first write pattern and generate a second score that represents a matching level of the current write pattern to the second write pattern;

determine whether the first score or the second score exceeds a threshold;

in response to the first score exceeding the threshold, use a first block allocation method; and

in response to the second score exceeding the threshold, use a second block allocation method, different from the first block allocation method;

wherein the first block allocation method allocates blocks that are closer to needing garbage collection than blocks allocated by the second block allocation method.

18. The storage system of claim 17 , wherein the controller is further configured to adjust at least one threshold parameter for initiating garbage collection.

19. The storage system of claim 17 , wherein the memory comprises a three-dimensional memory.

20. The storage system of claim 17 , wherein the storage system is embedded in a host.

21. The storage system of claim 17 , wherein the storage system is removably connected to a host.

22. A storage system comprising:

a memory;

means for receiving a plurality of write commands which define a current write pattern;

means for comparing the current write pattern to a first write pattern which is defined by a first plurality of example write commands, corresponding to a first usage scenario and to a second write pattern which is defined by a second plurality of example write commands, corresponding to a second usage scenario;

means for generating a first score that represents a matching level of the current write pattern to the first write pattern and generating a second score that represents a matching level of the current write pattern to the second write pattern;

means for determining whether the first score or the second score exceeds a threshold; and

means for choosing a first block allocation method in response to the first score exceeding the threshold and for choosing a second block allocation method in response to the second score exceeding the threshold,

wherein the first block allocation method allocates blocks that are closer to needing garbage collection than blocks allocated by the second block allocation method.

23. The storage system of claim 22 , wherein the means for receiving, the means for comparing, the means for generating, the means for determining and the means for choosing comprise a controller.

24. The storage system of claim 22 , wherein the memory comprises a three-dimensional memory.

Assignments (10)
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 →
SECURITY AGREEMENT Recorded Apr 25, 2025
From: SANDISK TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
Reel/Frame 071050/0001 →
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 - A&R LOAN AGREEMENT Recorded Aug 21, 2023
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 064715/0001 →
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 →
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 Apr 5, 2017
From: NAVON, ARIEL; YONIN, MICHA; BAZARSKY, ALEXANDER; HAHN, JUDAH GAMLIEL; GUR, DAVID; FAINZILBER, OMER
To: WESTERN DIGITAL TECHNOLOGIES INC.
Reel/Frame 041862/0511 →