IP Library Granted Patent US 9,116,823
Granted Patent B2
US 9,116,823 · App. 13/830,652 · Granted Aug 25, 2015

Systems and methods for adaptive error-correction coding

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 9,116,823
App. No.
13/830,652
Granted
Aug 25, 2015
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 (37)

1. An apparatus, comprising:

an error-correcting code (ECC) write module configured to generate a plurality of ECC codeword symbols comprising data of a storage request;

wherein each of the ECC codeword symbols is configured for storage within one or more respective columns of a solid-state storage array, each column comprising one or more solid-state storage elements; and

an adaptive write module configured to stream each of the ECC codeword symbols comprising the data of the storage request to at least one respective column of a set of two or more columns of the solid-state storage array,

wherein the ECC write module is configured to generate multi-byte ECC codeword symbols, wherein the adaptive write module is configured to stream portions of the multi-byte ECC codeword symbols to respective solid-state storage elements in each of a plurality of stream cycles, and wherein the adaptive write module is further configured to stream the portions of the multi-byte ECC codeword symbols such that the portions of each multi-byte ECC codeword symbol are streamed to a respective one of the solid-state storage elements.

2. The apparatus of claim 1 , wherein the adaptive write module is configured to stream the ECC codeword symbols to the solid-state storage array in a plurality of data rows, each data row comprising data for storage within a respective one of the columns, the apparatus further comprising a parity module configured to generate parity data corresponding to each of the data rows.

3. The apparatus of claim 1 , wherein the adaptive write module is configured to stream the ECC codeword symbols comprising the data of the storage request to a first independent channel comprising a subset of the columns of the solid-state storage array with ECC codeword symbols comprising data of another storage request to a different independent channel comprising a different subset of the columns of the solid-state storage array.

4. The apparatus of claim 1 , further comprising:

a read module configured to read a plurality of ECC codeword symbols stored within a plurality of different solid-state storage elements, wherein each ECC codeword symbol is read from a respective one of the solid-state storage elements; and

a data recovery module configured to reconstruct an unavailable ECC codeword symbol read from a first one of the solid-state storage elements using other ECC codeword symbols stored on others of the solid-state storage elements.

5. The apparatus of claim 4 , wherein the data recovery module is configured to reconstruct the unavailable ECC codeword symbol by use of parity data corresponding to the unavailable codeword and other ECC codeword symbols.

6. The apparatus of claim 1 , wherein the data of the storage request comprises one of a data packet, a data segment, a block, and a sector, and wherein the ECC write module is configured to generate a plurality of ECC codeword symbols comprising the data, and wherein the adaptive write module is configured to distribute the ECC codeword symbols between a plurality of different solid-state storage elements.

7. The apparatus of claim 1 , wherein the adaptive write module is configured to stream a respective ECC codeword symbol to a plurality of solid-state storage elements in each of a plurality of stream cycles, the apparatus further comprising a parity module configured to generate parity data corresponding to the ECC symbols being streamed to the plurality of solid-state storage elements in the stream cycle, wherein the adaptive write module is configured to stream the parity data with the ECC codeword symbols corresponding to the parity data.

8. The apparatus of claim 1 , wherein the ECC write module is configured to generate one-byte ECC codeword symbols, and wherein the adaptive write module is configured to stream a respective one of the ECC codeword symbols to each of a plurality of solid-state storage elements in each of a plurality of bus cycles.

9. A computer program product comprising a non-transitory computer readable storage medium storing computer usable program code executable to perform operations, the operations comprising:

generating multi-byte error-correcting code (ECC) codeword symbols;

streaming portions of the multi-byte ECC codeword symbols to respective solid-state storage elements in each of a plurality of stream cycles, said streaming comprising streaming each multi-byte ECC codeword symbol to a respective one of the solid-state storage elements;

determining a storage location of a plurality of error-correcting code (ECC) codeword symbols comprising requested data;

identifying ECC codeword symbols comprising data of one or more other requests stored within different groups of the solid-state storage elements; and

scheduling a read operation configured to read the ECC codeword symbols of the requested data and ECC codewords comprising data of the one or more other requests in a single read operation on the solid-state storage elements.

10. The computer program product of claim 9 , the operations further comprising verifying that the ECC codeword symbols comprise the requested data by verifying a mark on the ECC codeword symbols corresponding to relational information pertaining to the requested data.

11. The computer program product of claim 9 , the operations further comprising:

queuing storage requests in a request buffer; and

determining a storage location of ECC codewords of one or more other requests in the request buffer.

12. The computer program product of claim 11 , wherein scheduling the read operation comprises reordering one or more storage requests in the request buffer.

13. The computer program product of claim 11 , wherein scheduling the read operation comprises indicating different addressing information for two or more of the solid-state storage elements.

14. The computer program product of claim 13 , further comprising reordering contents of a read buffer to reconstruct a data packet stored within the plurality of ECC codeword symbols comprising the requested data.

15. A system, comprising:

means for generating a plurality of sets of error-correcting code (ECC) symbols, wherein each set of ECC symbols comprises data of different respective storage requests;

means for arranging the sets of ECC symbols for storage within different independent channels, each channel comprising two or more solid-state storage elements; and

means for storing the arranged sets of ECC symbols to the different independent channels, comprising means for storing each ECC symbol within a respective one of the solid-state storage elements of a respective independent channel,

wherein the means for generating is configured to generate multi-byte ECC codeword symbols, wherein the means for arranging is configured to stream portions of the multi-byte ECC codeword symbols to respective solid-state storage elements in each of a plurality of stream cycles, and wherein the means for arranging is further configured to stream the portions of the multi-byte ECC codeword symbols such that the portions of each multi-byte ECC codeword symbol are streamed to a respective one of the solid-state storage elements.

16. The system of claim 15 , further comprising:

means for identifying an independent channel comprising a set of ECC symbols corresponding to requested data; and

means for extracting the requested data from the set of ECC symbols read from the identified independent channel.

17. The system of claim 15 , further comprising means for combining two or more read requests pertaining to ECC symbols stored within different independent channels.

18. The system of claim 15 , further comprising means for reconstructing an uncorrectable ECC symbol read from one of the solid-state storage elements by use of a plurality of ECC symbols stored within others of the solid-state storage elements.

Assignments (14)
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: FIO SEMICONDUCTOR TECHNOLOGIES, LLC
To: ACACIA RESEARCH GROUP LLC
Reel/Frame 052095/0903 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 5, 2020
From: ACACIA RESEARCH GROUP LLC
To: UNIFICATION TECHNOLOGIES LLC
Reel/Frame 052096/0225 →
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 →
RELEASE OF SECURITY INTEREST Recorded May 4, 2016
From: FUSION-IO, INC.
To: SANDISK CORPORATION
Reel/Frame 038748/0880 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 13, 2016
From: INTELLIGENT INTELLECTUAL PROPERTY HOLDINGS 2 LLC
To: PS12 LUXCO S.A.R.L.
Reel/Frame 038362/0575 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 13, 2016
From: PS12 LUXCO S.A.R.L.
To: LONGITUDE ENTERPRISE FLASH S.A.R.L.
Reel/Frame 038362/0604 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 26, 2014
From: FUSION-IO, INC.
To: INTELLIGENT INTELLECTUAL PROPERTY HOLDINGS 2 LLC
Reel/Frame 033419/0748 →
SECURITY INTEREST Recorded Jul 24, 2014
From: INTELLIGENT INTELLECTUAL PROPERTY HOLDINGS 2 LLC
To: FUSION-IO, INC.
Reel/Frame 033410/0158 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 23, 2014
From: FUSION-IO, INC.
To: INTELLECTUAL PROPERTY HOLDINGS 2 LLC
Reel/Frame 033389/0511 →