Claims
- 1. A method for detecting and correcting multibyte errors in long byte strings either derived from a communications system or recorded on a moving storage medium of a storage device in blocks, each block comprising a plurality of codewords and a plurality of block-level check bytes derived from the codewords, each codeword including data bytes and codeword check bytes mapped from a plurality of extrinsic data byte vectors according to a linear error correction code, comprising the steps of:(a) generating and either transmitting on the system or recording on the storage medium at least one block formed from N codewords by (1) creating a set of N data byte vectors m′ as an interleave of elements of N extrinsically supplied data byte vectors m by matrix multiplication using a nonsingular invertible integration matrix with nonzero minors with order up to B; (2) mapping said set of N data byte vectors m′ into a counterpart set of N codewords c′ including 2t1 check bytes per codeword and B*(2t2) block-level check bytes; (3) creating a set of N modified codewords c from said set of N codewords c′ by matrix multiplication of the N codewords c′ by the inverse of the integration matrix; and (b) accessing each block either from the system or from the storage medium and processing the accessed block to detect and correct incipient bytes in error including the substeps of: (1) deriving syndromes from the check bytes therein, and identifying any nonzero syndromes; and (2) processing any identified nonzero syndromes over the codewords to correct any bytes in error using the 2t1 check bytes per codeword, and processing any block-level nonzero syndromes either to locate and correct (t1+t2) bytes in error in up to B bursty single codewords exceeding the correction capability of the respective codeword but within the capability of the block, or to indicate that the bytes in error exceed the correction capability of both the codeword and block levels.
- 2. The method according to claim 1, wherein all encoding, matrix multiplication, and syndrome processing operations are performed according to the rules of Galois field arithmetic, and further wherein the linear error correction code is a linear cyclic code of the Reed-Solomon type.
- 3. The method according to claim 1, wherein in step (a)(1), the set data byte vectors {m′(x)} comprises an interleave of elements of N=3 extrinsically supplied data byte vectors m, and further wherein m1(x), m2(x), and m3(x)ε{m(x)} and m1′(x), m2′(x), and m3′(x)ε{m′(x)} such that [m3′(x)m2′(x)m1′(x)]=[1111aa2001][m3(x)m2(x)m1(x)].
- 4. The method according to claim 1, wherein step (a)(2) for N=3 further comprises the substep of mapping the set of modified data words m1′(x), m2′(x), and m3′(x)ε{m′(x)} into the set of codewords c1′(x), c2′(x), and c3′(x)ε{c′(x)}, wherein rB′(x) are block check bytes for two bursty codewords c′(x) and r1′(x), r2′(x), and r3′(x) are the check bytes for codewords c1′(x), c2′(x), and c3′(x), and t1 and t2 are the number of codeword and block check bytes respectively, such that:c3′(x)=x(2t1+2t2)m3′(x)+(r′B1(x)+r3′(x)) c2′(x)=x(2t1+2t2)m2′(x)+(r′B2(x)+r2′(x)) c1′(x)=x(2t1+2t2)m1′(x)+(0+r1′(x)).
- 5. The method according to claim 1, wherein step (a)(3) for N=3 further comprises the substep of obtaining a set of modified codewords c1′(x), c2(x), and c3(x)ε{c(x)} from the mapped codewords c1′(x), c2′(x), and c3′(x)ε{c′(x)} by the matrix multiplication of the mapped codeword vectors by the inverse of the integration matrix where [c3(x)c2(x)c3(x)]=[1111aa2001]-1[c3′(x)c2′(x)c1′(x)].
- 6. The method according to claim 1, wherein step (b)(2) for N=3 further comprises the substep of:selecting one of a set of inverse B×B minors of the integration matrices as a function of a vector of nonzero syndrome values associated with the block check bytes and detected bursty codewords; and correcting said codewords in error as a matrix multiplication of the selected inverse B×B minor and the vector of nonzero syndrome values.
- 7. The method according to claim 6, wherein the inverse B×B minor for bursty codewords {3,2}, {3,1}, or {2} is one selected from the set consisting of: ⟨[111a]-1,[111a2]-1,[11aa2]-1⟩.
- 8. A method for detecting and correcting multibyte errors in long byte strings either derived from a communications system or recorded on a moving storage medium of a storage device in blocks, each block comprising a plurality of codewords and a plurality of block-level check bytes derived from the codewords, each codeword including data bytes and codeword check bytes mapped from a plurality of extrinsic data byte vectors according to a linear error correction code, comprising the steps of:(a) generating and either transmitting on the system or recording on the storage medium at least one block, each block being formed by: (a1) generating a set of modified data byte vectors interleaved from a counterpart set of the extrinsic vectors as a product of the respective extrinsic vectors and a nonsingular invertible integration matrix with nonzero minors up to a predetermined order; (a2) mapping the modified data byte vectors into a counterpart set of codeword vectors, said set of codeword vectors including codeword check bytes and block-level check bytes in accordance with the same linear error correction code; and (a3) generating a set of modified codeword vectors as a vector product of the codeword vectors and the inverse of the integration matrix with nonzero minors such that the modified codeword vectors have data byte vector codeword check bytes, and block-level check bytes distributed in a predetermined pattern; and (b) accessing each block either from the system or from the storage medium on an opportunistic or scheduled basis and processing the accessed block to detect and correct incipient bytes in error including the substeps of: (b1) deriving syndromes from the check bytes therein and identifying any nonzero syndromes; and (b2) processing any identified nonzero syndromes over the codewords to correct any bytes in error using the codeword check bytes, and processing any block-level nonzero syndromes either to locate and correct bytes in error in one or more bursty single codewords exceeding the correction capability of the respective codeword but within the capability of the block, or to indicate that the bytes in error exceed the correction capability of both the codeword and block levels.
- 9. An apparatus for generating codewords in a two-level, block-formatted linear error correction code (ECC), each block comprising a plurality of codewords and a plurality of block-level check bytes derived from the codewords, each codeword comprising data bytes and check bytes derived from the data bytes in the codeword, comprising:(a) a first logic arrangement responsive to N extrinsically supplied data byte vectors m for creating a set of N data byte vectors m′ as an interleave of elements of said data vectors m, said first arrangement including circuits for matrix multiplication of the N data byte vectors and a nonsingular invertible integration matrix with nonzero minors up to order B; (b) an encoder arrangement for mapping said set of N data byte vectors m′ into a counterpart set of N codewords c′ of a linear ECC code, said set including 2t1 check bytes per codeword and B*(2t2) block-level check bytes; and (c) a second logic arrangement for creating a set of N modified codewords c from said set of N codewords c′, said second arrangement including circuits for matrix multiplication of the N codewords c′ by the inverse of the integration matrix.
- 10. The apparatus according to claim 9, wherein said encoder arrangement includes at least one encoder for mapping a data vector into a linear error correction code of the Reed-Solomon type, and further wherein said first and second logic and said encoding arrangement perform all matrix multiplication and encoding operations according to the rules of Galois field arithmetic.
- 11. The apparatus according to claim 9, wherein the circuits in said first logic arrangement constitute a matrix of constant finite field multipliers, and further wherein the circuits in said second logic arrangement include circuits for redistributing the codewords into modified codewords such that the data vectors and their first-level check bytes reside in the same modified codeword and the block-level check bytes are distributed among the first-level modified codewords.
- 12. An article of manufacture comprising a machine-readable memory having stored therein indicia of a plurality of processor-executable control program steps for detecting and correcting multibyte errors in long byte strings derived from either a communications system or recorded on a moving storage medium of a storage device in blocks, each block comprising a plurality of codewords and a plurality of block-level check bytes derived from the codewords, each codeword including data bytes and codeword check bytes mapped from a plurality of equal-length data byte strings according to a linear error correction code, said device including a processor arrangement for executing linear error correction encoding and for detecting and correcting errors in codewords accessed from said storage medium, said indicia of the plurality of control program steps executable at the device processor arrangement include:(a) indicia of a first control program step for generating and either transmitting on the system or recording on the storage medium at least one block, each block being formed by: (a1) generating a set of modified data byte vectors interleaved from a counterpart set of the extrinsic vectors as a product of the respective extrinsic vectors and a nonsingular invertible integration matrix with nonzero minors up to a predetermined order; (a2) mapping the modified data byte vectors into a counterpart set of codeword vectors, said set of codeword vectors including codeword check bytes and block-level check bytes in accordance with the same linear error correction code; and (a3) generating a set of modified codeword vectors as a vector product of the codeword vectors and the inverse of the integration matrix with nonzero minors such that the modified codeword vectors have data byte vector codeword check bytes, and block-level check bytes distributed in a predetermined pattern; and (b) indicia of a second control program step for accessing each block either from the system or from the storage medium on an opportunistic or scheduled basis and processing the accessed block to detect and correct incipient bytes in error including the substeps of: (b1) deriving syndromes from the check bytes therein, and identifying any nonzero syndromes; and (b2) processing any identified nonzero syndromes over the codewords to correct any bytes in error using the codeword check bytes, and processing any block-level nonzero syndromes either to locate and correct bytes in error in one or more bursty single codewords exceeding the correction capability of the respective codeword but within the capability of the block, or to indicate that the bytes in error exceed the correction capability of both the codeword and block levels.
CROSS-REFERENCE TO RELATED APPLICATIONS
This application is a continuation-in-part of application Ser. No. 08/971,796, filed Nov. 17, 1997, now U.S. Pat. No. 5,946,328.
US Referenced Citations (6)
Non-Patent Literature Citations (1)
Entry |
G. Clark et al., Error Correction Coding for Digital Communications, Plenum Press, Inc., 1981, pp. 189-215. |
Continuation in Parts (1)
|
Number |
Date |
Country |
Parent |
08/971796 |
Nov 1997 |
US |
Child |
09/260717 |
|
US |