Error rate reduction for memory arrays
First Claim
1. A controller that interacts with a plurality of N memories, where (a) data to be stored is divided and stored in blocks, (b) the data of a block comprises N-i data strips, i being either 1 or 2, and i redundant-data strips that are associated with said N-i data strips and which, together with the N-i data strips, form a stripe of N strips, (c) the N strips of a stripe are stored in said N memories, respectively, (d) the i redundant-data strips of a stripe being adapted to be used in handling up to i errors that are discovered when an error arises upon reading at least said N-i data strips of a stripe, and (e) the controller includes a module, in response to a request from a user to provide a block of data, for reading N-i data strips from said N memories, the improvement comprising:
- the module adapted to read, in response to every request for data, said N-i data strips and at least one of said i redundant data strips when reading a block data, even when there is no indication of any error in any of the N-i data strips that are read from said N memories;
when processing said N-i read data strips and the at least one of said i redundant data strips indicates an error condition in information contained in one of said N-i read data strips, taking corrective action.
1 Assignment
0 Petitions
Accused Products
Abstract
A RAID 6 system, which has two strips to hold redundant data, employs a memory array controller that at each “read” operation considers not just the data but also the redundant information, even in the absence of any indication from the collection of memory controllers associated with the hard drives that any error condition exists. Thus, with each “read” operation the array controller checks the data for an unreported error, and takes corrective action when an error condition is discovered.
15 Citations
13 Claims
-
1. A controller that interacts with a plurality of N memories, where (a) data to be stored is divided and stored in blocks, (b) the data of a block comprises N-i data strips, i being either 1 or 2, and i redundant-data strips that are associated with said N-i data strips and which, together with the N-i data strips, form a stripe of N strips, (c) the N strips of a stripe are stored in said N memories, respectively, (d) the i redundant-data strips of a stripe being adapted to be used in handling up to i errors that are discovered when an error arises upon reading at least said N-i data strips of a stripe, and (e) the controller includes a module, in response to a request from a user to provide a block of data, for reading N-i data strips from said N memories, the improvement comprising:
-
the module adapted to read, in response to every request for data, said N-i data strips and at least one of said i redundant data strips when reading a block data, even when there is no indication of any error in any of the N-i data strips that are read from said N memories; when processing said N-i read data strips and the at least one of said i redundant data strips indicates an error condition in information contained in one of said N-i read data strips, taking corrective action. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12)
-
-
13. A method comprising the steps of:
-
receiving a request for data at a given address of an array of N memories; retrieving a data stripe from said given address of said array, the data stripe comprising strips D0, D1, . . . , DN-1, where Di is the strip of memory of index i, N-i of said strips holding data (data strips) and i of said strips holding redundant information (redundant information strips), and i=2; identifying the read strip, P, that corresponds to a first of said redundant information strips; computing a parity strip (P′
) based on said N-i data strips; andexecuting remedial action when P is not equal to P′
, where the remedial action fixes said error and submits valid results to process that submitted said request for data, and said remedial action comprises the steps of;computing information of data strip Dj′
, where j is a chosen value between 0 and N-2, from strips D0 through DN-2 other than Dj, and from strip P;compute a second redundant strip, Q′
, using said strip Dj′
;if Q′
equals a second redundant information strip that was retrieved by said step of retrieving, return Dj′
to process that submitted said request for data in lieu of Dj′
together with strips D0 through DN-2 other than Dj, and otherwise, choose another value of j and return to said step of computing.
-
Specification