IP Library Granted Patent US 10,439,650
Granted Patent B2
US 10,439,650 · App. 14/722,905 · Granted Oct 8, 2019

Cloud-based solid state device (SSD) with dynamically variable error correcting code (ECC) system

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,439,650
App. No.
14/722,905
Granted
Oct 8, 2019
Kind
B2
Abstract

Example apparatus and methods control an error correcting code (ECC) approach for data stored on a solid state device (SSD). The control may be based on a property (e.g., reliability, error state, speed) of an SSD, or on an attribute of the data to be stored. Approaches including a hybrid rateless Reed-Solomon ECC approach or a fountain code ECC approach may be selected. Example apparatus and methods may store padded portions of an ECC at different locations in an SSD. Example apparatus and methods may dynamically generate performance test data about the SSD, and dynamically control the ECC approach based on the performance test data. Different types or numbers of ECC may be produced, stored, and provided for different data sets stored at different SSDs or at different physical locations within an SSD. The SSD may be local, or may be part of a cloud-based storage system.

Claims (57)

1. A non-transitory computer-readable medium storing computer executable instructions that when executed by a computer control the computer to perform a method, the method comprising:

accessing electronic forensic data about a cloud data storage system comprising a solid state device (SSD), wherein the forensic data, at least in part, includes data about the SSD;

identifying an attribute about a data set that comprises one or more sub-blocks to be stored by the cloud data storage system, at least in part, on the SSD, wherein the attribute relates to the one or more sub-blocks;

selecting an error correcting code (ECC) method from a plurality of methods having differing speeds and strengths based, at least in part, on an analysis performed by the computer of the electronic forensic data and the attribute;

generating one or more ECC associated with the data set based, at least in part, on the ECC method; and

controlling the cloud data storage system to store a portion of the data set and a portion of the one or more ECC, where the portion of the data set or the portion of the ECC are selected based, at least in part, on the ECC method.

2. The non-transitory computer-readable medium of claim 1 , wherein the attribute is derived from statistical data about the data set.

3. The non-transitory computer-readable medium of claim 1 , where the SSD is a NAND flash memory device.

4. The non-transitory computer-readable medium of claim 1 , where the electronic forensic data includes one or more of the group consisting of a return rate data, a random access time data, a read latency time data, a data transfer rate data, a read performance data, a wear levelling data, an access frequency data, a firmware bug data, a program disturb data, a page size data, and a flash memory type data.

5. The non-transitory computer-readable medium of claim 4 , where the one or more ECC are fountain codes or hybrid rateless Reed-Solomon codes.

6. The non-transitory computer-readable medium of claim 1 , where the attribute comprises one of the group consisting of an order in which the sub-blocks are accessed, a sub-block reference count, a sub-block access frequency, a sub-block access group relationship, a sub-block accessing entity identity, a sub-block importance, and an indexing parameter.

7. The non-transitory computer-readable medium of claim 6 , where controlling the cloud data storage system to store a portion of the data set and a portion of the one or more ECCs comprises:

generating a padded data sub-block of the portion of the data set, where the padded sub-block is the same size as a page size of the SSD;

generating a padded portion of an ECC associated with the data sub-block, where the padded portion of the ECC is the same size as a page size of the SSD;

controlling the cloud storage system to store the padded data sub-block in a page of the SSD; and

controlling the cloud storage system to store the padded portion of the ECC in a different page of the SSD.

8. The non-transitory computer-readable medium of claim 6 , the method comprising setting an importance level associated with the data set, where the importance level is defined by a user, or is set as function of the attribute.

9. The non-transitory computer-readable medium of claim 8 , the method comprising:

upon determining that the importance level meets a threshold importance level, establishing the ECC method as a hybrid rateless Reed-Solomon ECC method, where the threshold importance level is defined by a user; and

upon determining that the importance level does not meet the threshold importance level, establishing the ECC method as a fountain code ECC method.

10. The non-transitory computer-readable medium of claim 1 , where the cloud data storage system comprises a shingled magnetic recording (SMR) storage device.

11. A non-transitory computer-readable medium storing computer executable instructions that when executed by a computer control the computer to perform a method for computing and storing error correction codes (ECCs) in a solid state device (SSD), the method comprising:

accessing electronic forensic data about the SSD;

identifying an attribute about a data set that comprises one or more sub-blocks to be stored by the SSD, wherein the attribute relates to the one or more sub-blocks;

selecting an error correcting code (ECC) method from a plurality of methods having differing speeds and strengths based, at least in part, on the electronic forensic data and the attribute;

generating a threshold amount of ECCs associated with the data set based, at least in part, on the ECC approach;

splitting the threshold amount of ECCs into a first ECC block and a second ECC block;

generating a padded first ECC block by padding the first ECC block with redundant data;

generating a padded second ECC block by padding the second ECC block with redundant data, and

controlling the SSD to store the padded first ECC block in a first page of the SSD, and to store the padded second ECC block in a second, different page of the SSD.

12. The non-transitory computer readable medium of claim 11 , the method comprising:

generating performance test data by testing the performance of the SSD;

generating updated electronic forensic data as a function of the performance test data; and

selecting the ECC method based, at least in part, on the updated electronic forensic data or the attribute.

13. The non-transitory computer-readable medium of claim 12 , where the SSD is part of a cloud-based storage system, and where the electronic forensic data, performance test data, or updated electronic forensic data are stored on a computer separate from the cloud-based storage system.

14. The non-transitory computer-readable medium of claim 11 , where the ECC method is a fountain code method or a hybrid rateless Reed-Solomon method.

15. An error correction code (ECC) apparatus, comprising:

a processor;

a memory;

a set of logics; and

an interface that connects the processor, the memory, and the set of logics;

the set of logics comprising:

a performance analysis logic that analyzes performance data concerning a solid state device (SSD) to which a data set that comprises one or more sub-blocks is to be stored by the ECC apparatus;

an ECC method logic that dynamically and selectively controls an ECC method of a plurality of methods having differing speeds and strengths performed by the ECC apparatus based, at least in part, on the performance data or a property of the data set, wherein the property of the data set includes an attribute that relates to the one or more sub-blocks;

an ECC generation logic that dynamically generates a non-empty set of ECC based, at least in part, on the ECC method and the data set, and

a storage logic that selectively distributes a portion of the data set and a portion of the set of ECC to the SSD, based, at least in part, on the performance data or the property of the data set.

16. The apparatus of claim 15 , where the performance data includes a return rate data, a random access time data, a read latency time data, a data transfer rate data, a read performance data, a wear levelling data, an access frequency data, a firmware bug data, a program disturb data, a page size data, an SSD architecture data, or a flash memory type data.

17. The apparatus of claim 16 , where the solid state device is a NAND flash memory cloud storage device.

18. The apparatus of claim 17 , where the storage logic:

selectively distributes a portion of the data set to a first page of the SSD, and

selectively distributes a portion of the set of ECC to a second, different page of the SSD.

19. The apparatus of claim 15 , where the ECC method is a fountain code method or a hybrid rateless Reed-Solomon method.

20. The apparatus of claim 19 , where the storage logic:

generates a set of collected ECC by collecting members of the set of ECC in the memory until a threshold amount of ECCs are collected, where the threshold amount is based, at least in part, on the performance data;

splits the set of collected ECC into a first sub-portion and a second sub-portion;

generates a padded first sub-portion and a padded second sub-portion by appending, prepending, or interleaving redundant data with the first sub-portion and the second sub-portion, where the padded first sub-portion is the same size as a page of the SSD, and where the padded second sub-portion is the same size as a page of the SSD, and

selectively distributes, based, at least in part, on the performance data or a property of the data set, a portion of the data set, the padded first sub-portion, or the padded second sub-portion to different pages of the SSD.

Assignments (12)
INTELLECTUAL PROPERTY SECURITY AGREEMENT Recorded Dec 18, 2025
From: QUANTUM CORPORATION
To: U.S. BANK TRUST COMPANY, NATIONAL ASSOCIATION, AS AGENT
Reel/Frame 074024/0084 →
TERMINATION AND RELEASE OF INTELLECTUAL PROPERTY SECURITY AGREEMENT AT REEL/FRAME NO. 40473/0378 Recorded Oct 8, 2025
From: PNC BANK, NATIONAL ASSOCIATION, AS AGENT
To: QUANTUM CORPORATION
Reel/Frame 073061/0454 →
TERMINATION AND RELEASE OF AMENDED AND RESTATED INTELLECTUAL PROPERTY SECURITY AGREEMENT AT REEL/FRAME NO. 48029/0525 Recorded Aug 19, 2025
From: PNC BANK, NATIONAL ASSOCIATION, AS AGENT
To: QUANTUM CORPORATION
Reel/Frame 072542/0594 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 24, 2025
From: BLUE TORCH FINANCE LLC, AS AGENT FOR THE SECURED PARTIES
To: ALTER DOMUS (US) LLC, AS AGENT FOR THE SECURED PARTIES
Reel/Frame 071019/0850 →
SUPPLEMENT TO INTELLECTUAL PROPERTY SECURITY AGREEMENT Recorded Jun 22, 2023
From: QUANTUM CORPORATION; QUANTUM LTO HOLDINGS, LLC
To: BLUE TORCH FINANCE, LLC
Reel/Frame 064069/0563 →
RELEASE OF SECURITY INTEREST Recorded Aug 10, 2021
From: U.S. BANK NATIONAL ASSOCIATION
To: QUANTUM CORPORATION; QUANTUM LTO HOLDINGS, LLC
Reel/Frame 057142/0252 →
SECURITY INTEREST Recorded Jan 8, 2019
From: QUANTUM CORPORATION
To: PNC BANK, NATIONAL ASSOCIATION
Reel/Frame 048029/0525 →
RELEASE OF SECURITY INTEREST Recorded Dec 27, 2018
From: TCW ASSET MANAGEMENT COMPANY LLC, AS AGENT
To: QUANTUM CORPORATION
Reel/Frame 047988/0642 →
SECURITY INTEREST Recorded Dec 27, 2018
From: QUANTUM CORPORATION, AS GRANTOR; QUANTUM LTO HOLDINGS, LLC, AS GRANTOR
To: U.S. BANK NATIONAL ASSOCIATION, AS AGENT
Reel/Frame 049153/0518 →
SECURITY INTEREST Recorded Oct 25, 2016
From: QUANTUM CORPORATION
To: PNC BANK, NATIONAL ASSOCIATION
Reel/Frame 040473/0378 →
SECURITY INTEREST Recorded Oct 21, 2016
From: QUANTUM CORPORATION
To: TCW ASSET MANAGEMENT COMPANY LLC, AS AGENT
Reel/Frame 040451/0183 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 27, 2015
From: SALIBA, GEORGE
To: QUANTUM CORPORATION
Reel/Frame 035723/0947 →