IP Library Granted Patent US 10,025,530
Granted Patent B2
US 10,025,530 · App. 14/500,952 · Granted Jul 17, 2018

Optimized garbage collection for solid-state storage devices

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,025,530
App. No.
14/500,952
Granted
Jul 17, 2018
Kind
B2
Abstract

A method for managing a flash storage system includes reading a plurality of flash data units in the flash storage system, and identifying host data units having a first metadata tag from the host data units stored in the plurality of read flash data units. The method also includes buffering the identified host data units in a first transfer buffer, and writing the buffered host data units from the first transfer buffer to a first available flash data unit in the flash storage device.

Claims (43)

1. A method for managing data in a flash storage system, comprising:

reading a plurality of flash data units in the flash storage system, each flash data unit storing a plurality of host data units, at least some of the plurality of host data units being associated with a workload by a metadata tag, and the plurality of host data units having a plurality of dissimilar metadata tags;

identifying host data units having a same first metadata tag from the plurality of host data units read from the plurality of read flash data units, wherein the first metadata tag is stored with each identified host data unit at a time of writing each identified host data unit to a respective flash data unit from which the identified host data unit was read;

buffering the identified host data units in a first transfer buffer corresponding to the same first metadata tag; and

writing the buffered host data units having the same first metadata tag from the first transfer buffer to a first available flash data unit in the flash storage system.

2. The method of claim 1 , wherein the first available flash data unit is configured to store a predetermined number of host data units, and

wherein the buffered host data units are written to the first available flash data unit when a number of host data units buffered in the first transfer buffer equals the predetermined number of host data units.

3. The method of claim 1 , wherein the buffered host data units are written to the first available flash data unit after a predetermined period of time.

4. The method of claim 1 , further comprising:

identifying host data units having any one of the plurality of dissimilar metadata tags from the host data units read from the plurality of flash data units;

buffering the identified host data units in a plurality of transfer buffers, wherein each of the plurality of transfer buffers corresponds respectively to each unique metadata tag of the plurality of dissimilar metadata tags of the identified host data units; and

writing the buffered host data units from the plurality of transfer buffers to respective ones of a plurality of available flash data units.

5. The method of claim 4 , wherein each of the plurality of available flash data units is configured to store a predetermined number of host data units, and

wherein the buffered host data units in one of the plurality of transfer buffers are written to one of the plurality of available flash data units when a number of buffered host data units in the one of the plurality of transfer buffers equals the predetermined number of host data units.

6. The method of claim 4 , wherein the buffered host data units in one of the plurality of transfer buffers is written to one of the plurality of available flash data units after a predetermined period of time since a first one of the buffered host data units was written to the one of the plurality of transfer buffers.

7. The method of claim 1 , wherein the plurality of flash data units are part of a flash data block in the flash storage system, and wherein the reading step is responsive to starting a garbage collection operation on the flash data block.

8. The method of claim 1 , wherein the first metadata tag corresponds to a workload from a host.

9. A flash storage system comprising:

a flash memory device; and

a controller configured to:

read a plurality of flash data units in the flash memory device, each flash data unit storing a plurality of host data units, at least some of the plurality of host data units being associated with a workload by a metadata tag, and the plurality of host data units having a plurality of dissimilar metadata tags;

identify host data units having a same first metadata tag from the plurality of host data units read from the plurality of read flash data units, wherein the first metadata tag is stored with each identified host data unit at a time of writing each identified host data unit to a respective flash data unit from which the identified host data was read;

buffer the identified host data units in a first transfer buffer corresponding to the same first metadata tag; and

write the buffered host data units having the same first metadata tag from the first transfer buffer to a first available flash data unit in the flash memory device.

10. The flash storage system of claim 9 , wherein the first available flash data unit is configured to store a predetermined number of host data units, and

wherein the buffered host data units are written to the first available flash data unit when a number of buffered host data units equals the predetermined number of host data units.

11. The flash storage system of claim 9 , wherein the buffered host data units are written to the first available flash data unit after a predetermined period of time.

12. The flash storage system of claim 9 , further comprising:

identifying host data units having any one of the plurality of dissimilar metadata tags from the plurality of host data units read from the plurality of flash data units;

buffering the identified host data units in a plurality of transfer buffers, wherein each of the plurality of transfer buffers corresponds respectively to each unique metadata tag of the plurality of dissimilar metadata tags of the identified host data units; and

writing the buffered host data units from the plurality of transfer buffers to respective ones of a plurality of available flash data units.

13. The flash storage system of claim 12 , wherein each of the plurality of available flash data units is configured to store a predetermined number of host data units, and

wherein the buffered host data units in one of the plurality of transfer buffers are written to one of the plurality of available flash data units when a number of buffered host data units in the one of the plurality of transfer buffers equals the predetermined number of host data units.

14. The flash storage system of claim 12 , wherein the buffered data units in one of the plurality of transfer buffers is written to one of the plurality of available flash data units after a predetermined period of time since a first one of the buffered data units was written to the one of the plurality of transfer buffers.

15. The flash storage system of claim 9 , wherein the plurality of flash data units are part of a flash data block in the flash storage system, and wherein reading, identifying, buffering, and writing steps are part of a garbage collection operation on the flash data block.

16. The flash storage system of claim 9 , wherein the plurality of flash data units store valid host data units and invalid host data units, and wherein the identified host data units comprise the valid host data units having the first metadata tag and exclude the invalid host data units.

17. A method for reading data from a flash storage system, comprising:

receiving, from a host, a read command for at least one host data unit associated with a first metadata tag;

reading a flash data unit in the flash storage system containing the at least one host data unit, wherein the first metadata tag is stored with the at least one host data unit at a time of writing the at least one host data unit to the first flash data unit;

transferring the at least one host data unit to the host;

buffering other host data units having a same first metadata tag from the first flash data unit into a first transfer buffer corresponding to the first metadata tag;

incrementing a counter for each buffered host data unit transferred to the host; and

evicting the buffered host data units from the first transfer buffer when the counter equals a number of host data units associated with the read command.

Assignments (11)
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 Dec 6, 2016
From: HGST NETHERLANDS B.V.
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 040829/0516 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 9, 2014
From: FURLONG, JEFFREY L.
To: HGST NETHERLANDS B.V.
Reel/Frame 033926/0565 →