IP Library Granted Patent US 10,180,875
Granted Patent B2
US 10,180,875 · App. 15/205,248 · Granted Jan 15, 2019

Pool-level solid state drive error correction

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,180,875
App. No.
15/205,248
Granted
Jan 15, 2019
Kind
B2
Abstract

A method for performing error correction for a plurality of storage drives and a storage appliance comprising a plurality of storage devices is disclosed. In one embodiment, the method includes generating a first set of parity bits from a first set of data of at least one of the plurality of storage devices, the first set of parity bits capable of correcting a first number of error bits of the first set of data. The method further includes generating a second set of parity bits from a concatenated set of the first data and a second set of data from at least another of the plurality of storage devices, the second set of parity bits capable of correcting a second number of error bits of the first set of data, the second number being greater than the first number. The method further includes reading the first set of data and (i) correcting error bits within the first set of data with the first set of parity bits where a number of error bits is less than the first number of error bits; and (ii) correcting error bits within the first set of data with the second set of parity bits where the number of error bits is greater than the first number.

Claims (47)

1. A method for performing error correction for a plurality of storage devices, the method comprising:

generating a first set of parity bits from a first set of data of at least one of the plurality of storage devices, the first set of parity bits capable of correcting a first maximum number of error bits of the first set of data;

generating a concatenated data set by concatenating the first set of data and a second set of data from at least another of the plurality of storage devices;

generating a second set of parity bits from the concatenated data set, the second set of parity bits capable of correcting a second maximum number of error bits of the first set of data, the second maximum number being greater than the first maximum number;

associating a logical block address of either the first set of data or the second set of data with the second set of parity bits;

correcting error bits within the first set of data with the first set of parity bits where a number of error bits is less than or equal to the first maximum number of error bits; and

correcting error bits within the first set of data with the second set of parity bits where the number of error bits is greater than the first maximum number.

2. The method of claim 1 , wherein the first set of data includes a checksum, the checksum indicating whether the first set of parity bits has corrected the first set of data, and if not, correcting error bits within the first set of data with the second set of parity bits.

3. The method of claim 1 , further comprising:

generating a mapping table containing locations of the first set of data, the second set of data corresponding to the concatenated data set used to generate the second set of parity bits, and the second set of parity bits within the plurality of storage devices.

4. The method of claim 1 , further comprising:

storing the first set of data and the first set of parity bits in a first location within one or more memory devices of the at least one of the plurality of storage devices; and

storing the second set of parity bits in a second location within one or more memory devices of the plurality of storage devices.

5. The method of claim 4 , wherein the plurality of storage devices comprise SSDs.

6. The method of claim 5 , wherein the first location and the second location correspond to different flash pages within the one or more flash memory devices of the plurality of storage devices.

7. The method of claim 1 , wherein the first set of parity bits and second set of parity bits are Bose-Chaudhuri-Hocquenghem parity bits.

8. The method of claim 1 , wherein the first set of parity bits and second set of parity bits are Hamming parity bits.

9. The method of claim 1 , wherein the first set of parity bits and second set of parity bits are Reed-Soloman parity bits.

10. The method of claim 1 , wherein the first set of parity bits and second set of parity bits are low-density parity check (LDPC) parity bits.

11. The method of claim 1 , wherein the first and second set of parity bits are independently chosen as Bose-Chaudhuri-Hocquenghem, Hamming, Reed-Soloman, or low-density parity check (LDPC) parity bits.

12. The method of claim 1 , further comprising:

storing the second set of parity bits on one of the plurality of storage devices storing either the first set of data or the second set of data.

13. The method of claim 12 , wherein the plurality of storage devices comprise SSDs; and

the method further comprising storing the second set of parity bits in a flash page storing either the first set of data or the second set of data.

14. The method of claim 1 , wherein the correcting error bits comprises reading in a single read the second set of parity bits and the second set of data.

15. A storage appliance comprising:

a controller communicatively coupled to a plurality of storage devices, wherein at least one of the plurality of storage devices configured to correct a first maximum number of error bits of a first set of data on the one of the plurality of storage devices with a first set of parity bits when the first set of data is read by the controller, the first set of parity bits generated from the first set of data, and

the controller is configured to:

generate a concatenated data set by concatenating the first set of data and a second set of data of at least one other of the plurality of storage devices;

generate a second set of parity bits from the concatenated data set;

associate a logical block address of either the first set of data or the second set of data with the second set of parity bits; and

correct a second maximum number of error bits greater than the first maximum number of the first set of data with the second set of parity bits when the number of error bits exceeds the first maximum number.

16. The storage appliance of claim 15 , wherein the first set of data includes a checksum, the checksum indicating whether the first set of parity bits has corrected the first set of data, and if not, returning an unrecoverable error message to the controller.

17. The storage appliance of claim 15 , wherein the controller is configured to store and update a mapping table containing locations of the first set of data and the at least one second set of data corresponding to the concatenated data set used to generate the second set of parity bits, and the second set of parity bits within the plurality of storage devices.

18. The storage appliance of claim 15 , wherein the first set of data and the first set of parity bits are stored in a first location within one or more memory devices of the at least one of the plurality of storage devices, and the second set of parity bits are stored in a second location within one or more memory devices of the plurality-of storage devices.

19. The storage appliance of claim 18 , wherein the plurality of storage devices comprise SSDs.

20. The storage appliance of claim 19 , wherein the first location and the second location correspond to different flash pages within the one or more flash memory devices of the plurality of storage devices.

21. The storage appliance of claim 15 , wherein the first set of parity bits and second set of parity bits are Bose-Chaudhuri-Hocquenghem parity bits.

22. The storage appliance of claim 15 , wherein the first set of parity bits and second set of parity bits are Hamming parity bits.

23. The storage appliance of claim 15 , wherein the first set of parity bits and second set of parity bits are Reed-Soloman parity bits.

24. The storage appliance of claim 15 , wherein the first set of parity bits and second set of parity bits are low-density parity check (LDPC) parity bits.

25. The storage appliance of claim 15 , wherein the first and second set of parity bits are independently chosen as Bose-Chaudhuri-Hocquenghem, Hamming, Reed-Soloman, or low-density parity check (LDPC) parity bits.

26. The storage appliance of claim 15 , wherein the controller is further configured to:

store the second set of parity bits on one of the plurality of storage devices storing either the first set of data or the second set of data.

27. The storage appliance of claim 26 , wherein the plurality of storage devices comprise SSDs; and

wherein the controller is further configured to store the second set of parity bits in a flash page storing either the first set of data or the second set of data.

28. The storage appliance of claim 15 , wherein the controller is further configured, when correcting the second maximum number of error bits to read in a single read the second set of parity bits and the second set of data.

Assignments (5)
MERGER Recorded Jan 22, 2021
From: TOSHIBA MEMORY CORPORATION
To: K.K. PANGEA
Reel/Frame 055659/0471 →
CHANGE OF NAME AND ADDRESS Recorded Jan 22, 2021
From: TOSHIBA MEMORY CORPORATION
To: KIOXIA CORPORATION
Reel/Frame 055669/0001 →
CHANGE OF NAME AND ADDRESS Recorded Jan 22, 2021
From: K.K. PANGEA
To: TOSHIBA MEMORY CORPORATION
Reel/Frame 055669/0401 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 1, 2017
From: KABUSHIKI KAISHA TOSHIBA
To: TOSHIBA MEMORY CORPORATION
Reel/Frame 043397/0380 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 8, 2016
From: KLEIN, YARON
To: TOSHIBA CORPORATION
Reel/Frame 039107/0730 →
Cited By (49)
US 12,189,470 US 12,197,390 US 12,204,413 US 12,204,768 US 12,204,788 US 12,212,624 US 12,216,903 US 12,229,402 US 12,229,437 US 12,235,743 US 12,236,117 US 12,242,336 US 12,242,425 US 12,253,922 US 12,253,941 US 12,271,264 US 12,271,359 US 12,277,106 US 12,282,799 US 12,293,111 US 12,314,131 US 12,314,163 US 12,314,170 US 12,314,183 US 12,340,107 US 12,341,848 US 12,355,565 US 12,366,972 US 12,373,289 US 12,373,340 US 12,379,854 US 12,393,340 US 12,393,353 US 12,430,053 US 12,430,059 US 12,439,544 US 12,475,041 US 12,481,442 US 12,487,920 US 12,511,239 US 12,524,309 US 12,547,317 US 12,561,093 US 12,572,421 US 12,619,469 US 12,682,949 US 12,687,973 US 12,699,512 US 12,717,709