IP Library Granted Patent US 11,061,765
Granted Patent B2
US 11,061,765 · App. 15/253,334 · Granted Jul 13, 2021

Systems and methods for adaptive error-correction coding

Inventors: Jeremy Fillingim (Salt Lake City, UT); David Flynn (Sandy, UT); John Strasser (Syracuse, UT); Bill Inskeep (West Valley City, UT)
Assignee: Unification Technologies, LLC
G06F11/1068G06F3/064G06F3/0619G06F3/0679G06F9/52G06F11/10G06F11/108G06F11/1044G06F12/0253G11C29/52H03M13/35H03M13/353H04L12/46H04L12/4625H04L12/6418G06F2211/109G06F2212/2022H04L67/1097
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,061,765
App. No.
15/253,334
Granted
Jul 13, 2021
Kind
B2
Abstract

A storage module is configured to store data segments, such as error-correcting code (ECC) codewords, within an array comprising a plurality of columns. The ECC codewords may comprise ECC codeword symbols. The ECC symbols of a data segment may be arranged in a horizontal arrangement, a vertical arrangement, a hybrid channel arrangement, and/or vertical stripe arrangement within the array. The individual ECC symbols may be stored within respective columns of the array (e.g., may not cross column boundaries). Data of an unavailable ECC symbol may be reconstructed by use of other ECC symbols stored on other columns of the array.

Claims (43)

1. A method comprising:

determining a plurality of different independent storage channels for storing a plurality of error-correcting code (“ECC”) codeword symbols

wherein each of the plurality of different independent storage channels is determined based on an adaptive channel configuration and comprises two or more solid-state storage elements of a solid-state storage array;

arranging a set of ECC codeword symbols of the plurality of ECC codeword symbols for storage in one of the plurality of different independent storage channels according to the adaptive channel configuration;

issuing a command to the solid-state storage memory to store the set of ECC codeword symbols in the one of the plurality of different independent storage channels according to the adaptive channel configuration; and

storing the set of ECC codeword symbols in the one of the plurality of different independent storage channels according to the adaptive channel configuration.

2. The method of claim 1 , wherein a storage module stores the plurality of ECC codeword symbols in the different independent storage channels.

3. The method of claim 2 , wherein the storage module comprises a controller and firmware.

4. The method of claim 2 , wherein the storage module comprises a groomer module, and the groomer module performs grooming operations comprising reclaiming storage resources.

5. An apparatus comprising:

a solid-state storage memory comprising a plurality of storage cells configured in a solid-state storage array;

an adaptive solid-state storage controller communicatively coupled to the solid-sate storage memory; and

a processor configured to execute instructions stored in a memory causing the apparatus to determine a plurality of different independent storage channels for storing a plurality of error-correcting code (“ECC”) codeword symbols in the solid-state storage memory, wherein each of the plurality of different independent storage channels is determined based on an adaptive channel configuration and comprises two or more solid-state storage elements of the solid-state storage array;

the adaptive solid-state storage controller:

arranging a set of the plurality of ECC codeword symbols for storage in one of the plurality of different independent storage channels according to the adaptive channel configuration, and

issuing a command to the solid-state storage memory to store the set of ECC codeword symbols in the one of the plurality of different independent storage channels according to the adaptive channel configuration; and

the solid-state storage medium storing the set of ECC codeword symbols in the one of the plurality of different independent storage channels according to the adaptive channel configuration.

6. The apparatus of claim 5 , wherein the adaptive channel configuration comprises storage elements in a vertical stripe configuration, and

wherein the solid-state storage memory stores the plurality of ECC codeword symbols in separate storage elements in the vertical stripe configuration.

7. The method of claim 1 , wherein storing the plurality of ECC codeword symbols comprises storing the plurality of ECC codeword symbols in separate columns to access the ECC codeword symbols in parallel.

8. The method of claim 1 , wherein the plurality of ECC codeword symbols correspond to N bytes of data.

9. The method of claim 8 , wherein the plurality of ECC codeword symbols comprises a number of bytes greater than N.

10. A method comprising:

determining a storage location of requested data stored in an adaptive channel configuration of solid-state storage elements of a solid-state storage medium by identifying two or more independent storage channels comprising a set of error-correcting code (“ECC”) codeword symbols corresponding to requested data, wherein each independent storage channel of the two or more independent storage channels comprises two or more of the solid-state storage elements;

issuing a command to the solid-state storage memory to read the set of ECC codeword symbols from the identified two or more independent storage channels according to the adaptive channel configuration; and

extracting, from the solid-state storage memory, the set of ECC codeword symbols from the identified two or more independent storage channels.

11. The apparatus of claim 10 , wherein the solid-state storage memory reads the set of ECC codeword symbols from the adaptive channel configuration of the storage elements in a horizontal arrangement.

12. The apparatus of claim 10 , wherein the adaptive channel configuration comprises storage elements in a vertical stripe configuration, and the solid-state storage memory reads the set of ECC codeword symbols from separate storage elements in the vertical stripe configuration.

13. The method of claim 10 , wherein the set of ECC codeword symbols is stored in separate columns to access the set of ECC codeword symbols in parallel.

14. The apparatus of claim 5 , wherein the solid-state storage memory stores the plurality of ECC codeword symbols in a horizontal arrangement of storage elements in the adaptive channel configuration.

15. The apparatus of claim 5 , wherein the instructions, when executed by the processor, cause the apparatus to:

determine the adaptive channel configuration of the solid-state storage array based on profiling storage operations performed by a storage client.

16. The apparatus of claim 5 , wherein the solid state storage controller determines a storage location for the set of ECC codeword symbols, the storage location indicating the adaptive channel configuration of a data structure on the solid-state storage array for storing the set of ECC codeword symbols.

17. The apparatus of claim 5 , wherein a size of the plurality of ECC codeword symbols is based on the adaptive channel configuration.

18. An apparatus comprising:

a solid-state storage memory comprising a plurality of storage cells configured in a solid-state storage array;

an adaptive solid-state storage controller communicatively coupled to the solid-sate storage memory;

the adaptive solid-state storage controller:

determining a storage location of requested data in an adaptive channel configuration of storage elements of the solid-state storage medium by identifying two or more independent storage channels comprising a set of error-correcting code (“ECC”) codeword symbols corresponding to the requested data, wherein each independent storage channel of the two or more independent storage channels comprises two or more solid-state storage elements; and

issuing a command to the solid-state storage memory to read the set of ECC codeword symbols from the identified two or more independent storage channels according to the adaptive channel configuration; and

the solid-state storage medium extracting the set of ECC codeword symbols from the one of the identified two or more independent storage channels according to the adaptive channel configuration.

19. The apparatus of claim 18 , wherein the solid state storage controller determines a storage location for the set of ECC codeword symbols, the storage location indicating the adaptive channel configuration of a data structure on the solid-state storage array for reading the set of ECC codeword symbols.

20. The apparatus of claim 18 , wherein a size of the plurality of ECC codeword symbols is based on the adaptive channel configuration.

Assignments (8)
CORRECTIVE ASSIGNMENT TO CORRECT THE ASSIGNEE NAME PREVIOUSLY RECORDED AT REEL: 053654 FRAME: 0254. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT. Recorded Nov 15, 2021
From: STARBOARD VALUE INTERMEDIATE FUND LP, AS COLLATERAL AGENT
To: UNIFICATION TECHNOLOGIES LLC
Reel/Frame 058134/0001 →
CORRECTIVE ASSIGNMENT TO CORRECT THE ASSIGNOR NAME PREVIOUSLY RECORDED AT REEL: 052853 FRAME: 0153. ASSIGNOR(S) HEREBY CONFIRMS THE PATENT SECURITY AGREEMENT. Recorded Nov 15, 2021
From: UNIFICATION TECHNOLOGIES LLC
To: STARBOARD VALUE INTERMEDIATE FUND LP, AS COLLATERAL AGENT
Reel/Frame 058223/0001 →
RELEASE OF SECURITY INTEREST IN PATENTS Recorded Jul 8, 2020
From: STARBOARD VALUE INTERMEDIATE FUND LP
To: ACACIA RESEARCH GROUP LLC; AMERICAN VEHICULAR SCIENCES LLC; BONUTTI SKELETAL INNOVATIONS LLC; CELLULAR COMMUNICATIONS EQUIPMENT LLC; INNOVATIVE DISPLAY TECHNOLOGIES LLC; LIFEPORT SCIENCES LLC; LIMESTONE MEMORY SYSTEMS LLC; MOBILE ENHANCEMENT SOLUTIONS LLC; MONARCH NETWORKING SOLUTIONS LLC; NEXUS DISPLAY TECHNOLOGIES LLC; PARTHENON UNIFIED MEMORY ARCHITECTURE LLC; R2 SOLUTIONS LLC; SAINT LAWRENCE COMMUNICATIONS LLC; STINGRAY IP SOLUTIONS LLC; SUPER INTERCONNECT TECHNOLOGIES LLC; TELECONFERENCE SYSTEMS LLC; UNIFICATION TECHNOLOGIES LLC
Reel/Frame 053654/0254 →
PATENT SECURITY AGREEMENT Recorded Jun 5, 2020
From: ACACIA RESEARCH GROUP LLC; AMERICAN VEHICULAR SCIENCES LLC; BONUTTI SKELETAL INNOVATIONS LLC; CELLULAR COMMUNICATIONS EQUIPMENT LLC; INNOVATIVE DISPLAY TECHNOLOGIES LLC; LIFEPORT SCIENCES LLC; LIMESTONE MEMORY SYSTEMS LLC; MERTON ACQUISITION HOLDCO LLC; MOBILE ENHANCEMENT SOLUTIONS LLC; MONARCH NETWORKING SOLUTIONS LLC; NEXUS DISPLAY TECHNOLOGIES LLC; PARTHENON UNIFIED MEMORY ARCHITECTURE LLC; R2 SOLUTIONS LLC; SAINT LAWRENCE COMMUNICATIONS LLC; STINGRAY IP SOLUTIONS LLC; SUPER INTERCONNECT TECHNOLOGIES LLC; TELECONFERENCE SYSTEMS LLC; UNIFICATION TECHNOLOGIES LLC
To: STARBOARD VALUE INTERMEDIATE FUND LP, AS COLLATERAL AGENT
Reel/Frame 052853/0153 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 5, 2020
From: ACACIA RESEARCH GROUP LLC
To: UNIFICATION TECHNOLOGIES LLC
Reel/Frame 052096/0225 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 5, 2020
From: FIO SEMICONDUCTOR TECHNOLOGIES, LLC
To: ACACIA RESEARCH GROUP LLC
Reel/Frame 052095/0903 →
CORRECTIVE ASSIGNMENT TO CORRECT THE INCORRECT DOCUMENT FILED PREVIOUSLY RECORDED ON REEL 047702 FRAME 0413. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT. Recorded Apr 16, 2019
From: LONGITUDE ENTERPRISE FLASH S.A.R.I.
To: FIO SEMICONDUCTOR TECHNOLOGIES, LLC
Reel/Frame 048918/0035 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 7, 2018
From: LONGITUDE ENTERPRISE FLASH S.A.R.I.
To: FIO SEMICONDUCTOR TECHNOLOGIES LIMITED
Reel/Frame 047702/0413 →
Continuity (10)
Continuation 14807526 · Jul 23, 2015
Continuation 13830652 · Mar 14, 2013
Continuation In Part 13784705 · Mar 4, 2013
Continuation In Part 13296834 · Nov 15, 2011
Continuation In Part 11952101 · Dec 6, 2007
Provisional Application 61606253 · Mar 2, 2012
Provisional Application 61606755 · Mar 5, 2012
Provisional Application 60873111 · Dec 6, 2006
Provisional Application 60974470 · Sep 22, 2007
Related Publication 20160371144A1 · Dec 22, 2016