IP Library Granted Patent US 9,306,599
Granted Patent B2
US 9,306,599 · App. 14/286,712 · Granted Apr 5, 2016

Apparatus, system, and method for reconfiguring an array of storage elements

Inventors: David Flynn (Sandy, UT); Jonathan Thatcher (Liberty Lake, WA); Joshua Aune (Draper, UT); Jeremy Fillingim (Salt Lake City, UT); Bill Inskeep (West Valley City, UT); John Strasser (Syracuse, UT); Kevin Vigor (Salt Lake City, UT)
Assignee: INTELLIGENT INTELLECTUAL PROPERTY HOLDINGS 2 LLC
H03M13/09G06F11/073G06F11/108G06F11/1092G06F11/1096G06F11/0766
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,306,599
App. No.
14/286,712
Granted
Apr 5, 2016
Kind
B2
Abstract

Apparatuses, systems, and methods are disclosed for reconfiguring an array of storage elements. A storage element error module is configured to determine that one or more storage elements in an array of storage elements are in error. An array of storage elements stores a first ECC block and first parity data generated from the first ECC block. A data reconfiguration module is configured to generate a second ECC block comprising at least a portion of data of a first ECC block. A new configuration storage module is configured to store a second ECC block and associated second parity data on fewer storage elements than a number of storage elements in an array.

Claims (41)

1. An apparatus, comprising:

a flash memory device comprising an array of storage elements; and

a storage controller configured to:

write a first data stripe across a first plurality of the storage elements, the first data stripe comprising a first set of Error Correcting Code (ECC) data chunks and first parity information associated with the first set of ECC data chunks, the first parity information being written to a first parity storage element of the first plurality of storage elements; and

write a second data stripe across a second plurality of the storage elements, the second data stripe comprising a second set of ECC data chunks and second parity information associated with the second set of ECC data chunks, the second parity information being written to a second parity storage element of the second plurality of storage elements;

wherein the position of the first parity storage element relative to the storage elements comprising first ECC data chunks is different to the position of the second parity storage element relative to the storage elements comprising second ECC data chunks.

2. The apparatus of claim 1 , wherein

the first plurality of storage elements are comprised within a first row of the array of storage elements; and

the second plurality of storage elements are comprised within a second row of the array of storage elements.

3. The apparatus of claim 1 , further comprising:

a storage element error module configured to determine, based on an ECC, that reading data from one or more of the first plurality of solid-state storage elements produces erroneous data; and

a data regeneration module configured to regenerate the data from the first parity information;

wherein the storage element error module and the data regeneration module comprise one or more of logic hardware and a non-transitory computer readable medium having executable code stored thereon.

4. The apparatus of claim 1 , wherein the storage controller is configured to:

write the first parity information to a plurality of first parity storage elements; and

write the second parity information to a plurality of second parity storage elements.

5. A method comprising a storage controller:

writing a first data stripe across a first plurality of storage elements of a flash memory, the first data stripe comprising a first set of Error Correction Code (ECC) data chunks and first parity information associated with the first set of ECC data chunks, the first parity information being written to a first parity storage element; and

writing a second data stripe across a second plurality of the storage elements, the second data stripe comprising a second set of ECC data chunks and second parity information associated with the second set of ECC data chunks, the second parity information being written to a second parity storage element;

wherein the position of the first parity storage element relative to the storage elements comprising first ECC data chunks is different to the position of the second parity storage element relative to the storage elements comprising second ECC data chunks.

6. The method of claim 5 , wherein

the first plurality of storage elements are comprised within a first row of the array of storage elements; and

the second plurality of storage elements are comprised within a second row of the array of storage elements.

7. The method of claim 5 , further comprising the storage controller:

writing the first parity information to a plurality of first parity storage elements; and

writing the second parity information to a plurality of second parity storage elements.

8. A non-transitory computer-readable medium comprising instructions which, when executed, cause a processor to:

write a first data stripe across a first plurality of storage elements of a flash memory, the first data stripe comprising a first set of Error Correction Code (ECC) data chunks and first parity information associated with the first set of ECC data chunks, the first parity information being written to a first parity storage element; and

write a second data stripe across a second plurality of the storage elements, the second data stripe comprising a second set of ECC data chunks and second parity information associated with the second set of ECC data chunks, the second parity information being written to a second parity storage element;

wherein the position of the first parity storage element relative to the storage elements comprising first ECC data chunks is different to the position of the second parity storage element relative to the storage elements comprising second ECC data chunks.

9. The non-transitory computer-readable medium of claim 8 , wherein

the first plurality of storage elements are comprised within a first row of the array of storage elements; and

the second plurality of storage elements are comprised within a second row of the array of storage elements.

10. The non-transitory computer-readable medium of claim 8 , wherein, when executed, the instructions further cause a processor to:

write the first parity information to a plurality of first parity storage elements; and

write the second parity information to a plurality of second parity storage elements.

11. An apparatus, comprising:

a flash memory device comprising N banks of storage elements, where N>1; and

a storage controller configured to:

write a first data stripe across a first plurality of the storage elements, wherein each of the first plurality of storage elements is comprised within a respective one of the N banks of storage elements, the first data stripe comprising a first set of error correcting code (ECC) data chunks and first parity information associated with the first set of ECC data chunks, the first parity information being written to a storage element comprised within a first bank of storage elements; and

write a second data stripe across a second plurality of the storage elements, wherein each of the second plurality of storage elements is comprised within a respective one of the N banks of storage elements, the second data stripe comprising a second set of ECC data chunks and second parity information associated with the second set of ECC data chunks, the second parity information being written to a storage element comprised within a second bank of storage elements, wherein the second bank of storage elements is different to the first bank of storage elements.

Assignments (10)
CHANGE OF NAME Recorded May 25, 2016
From: SANDISK TECHNOLOGIES INC
To: SANDISK TECHNOLOGIES LLC
Reel/Frame 038807/0948 →
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 Mar 31, 2016
From: LONGITUDE ENTERPRISE FLASH SARL
To: SANDISK TECHNOLOGIES, INC.
Reel/Frame 038324/0628 →
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 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 27, 2014
From: FLYNN, DAVID; THATCHER, JONATHAN; AUNE, JOSHUA; FILLINGIM, JEREMY; INSKEEP, BILL; STRASSER, JOHN; VIGOR, KEVIN
To: FUSION MULTISYSTEMS, INC. DBA FUSION-IO
Reel/Frame 033197/0762 →
CHANGE OF NAME Recorded Jun 27, 2014
From: FUSION MULTISYSTEMS, INC.
To: FUSION-IO, INC.
Reel/Frame 033250/0675 →
Continuity (4)
Continuation 13907479 · May 31, 2013
Continuation 13645353 · Oct 4, 2012
Continuation 12468040 · May 18, 2009
Related Publication 20140258775A1 · Sep 11, 2014