US20100017682A1 - Error correction code striping - Google Patents

Error correction code striping Download PDF

Info

Publication number
US20100017682A1
US20100017682A1 US12/459,679 US45967909A US2010017682A1 US 20100017682 A1 US20100017682 A1 US 20100017682A1 US 45967909 A US45967909 A US 45967909A US 2010017682 A1 US2010017682 A1 US 2010017682A1
Authority
US
United States
Prior art keywords
data
ecc
memory
rows
column
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Abandoned
Application number
US12/459,679
Inventor
George Paul Jackson
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Individual
Original Assignee
Individual
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Individual filed Critical Individual
Priority to US12/459,679 priority Critical patent/US20100017682A1/en
Publication of US20100017682A1 publication Critical patent/US20100017682A1/en
Abandoned legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/13Linear codes
    • H03M13/15Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
    • H03M13/1505Golay Codes
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/13Linear codes
    • H03M13/15Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
    • H03M13/151Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
    • H03M13/1515Reed-Solomon codes
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/13Linear codes
    • H03M13/15Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
    • H03M13/151Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
    • H03M13/152Bose-Chaudhuri-Hocquenghem [BCH] codes
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/27Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes using interleaving techniques
    • H03M13/2703Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes using interleaving techniques the interleaver involving at least two directions
    • H03M13/2707Simple row-column interleaver, i.e. pure block interleaving
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/29Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
    • H03M13/2906Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes using block codes
    • H03M13/2909Product codes

Definitions

  • the invention relates to the field of error correction codes, and in particular to applications traditionally requiring product error correction codes.
  • ECC error correction code
  • Block error correction codes are used for fixed-size blocks of data. Examples of block error correction codes include Reed-Solomon, Golay, and Hamming codes. Block codes are widely used to protect the accuracy of data stored on digital storage media, or transmitted digitally.
  • each block of data is organized into rows and columns.
  • error correction data is often calculated both for each row and for each column of data in the block.
  • This method of using both row and column error correction codes in a single block of data is referred to as a product code or a two dimensional block error correction code.
  • the increase in ability to correct errors using a product code also introduces an increase in the amount of redundant information added to the data since ECC data must be added for both rows and columns. This increase in the amount of error correction data in turn decreases the amount of original user data that can be stored or transmitted.
  • user data 30 is organized into rows and columns (see rows 1 - U and columns 1 -V). Each column is typically one byte of data. It should be noted that user data itself may already include some type of error correction or error detection code such as a cyclic redundancy check (CRC). ECC data is calculated for each row of user data according to the ECC scheme employed, which may be Reed-Solomon, Golay, Hamming, or any other block ECC. This data is then appended to the end of each row. Additional ECC data is also calculated for each column, and placed at the bottom of each column. Row ECC data is also calculated for each row of column ECC data, and appended to the end of these rows.
  • ECC cyclic redundancy check
  • This entire block can then be stored or transmitted.
  • the bytes are typically stored or transmitted beginning with the byte occupying row 1 ( 20 ), column 1 ( 10 ), followed by the remaining bytes in row 1 ( 20 ), proceeding towards column V ( 12 ).
  • Each row is then stored or transmitted in a similar order, proceeding towards row X ( 24 ) until the entire block has been completed.
  • Some errors can be corrected using only the row ECC data, but if an individual row contains too many errors for the respective row ECC scheme to correct, then the column ECC data must also be used to correct the errors. This means that in most cases the entire block is accessed whenever any of the user data is accessed.
  • FIG. 1 shows a product code error correction scheme
  • FIG. 2 shows a first embodiment of the present invention.
  • FIG. 3 shows a second embodiment of the present invention.
  • FIG. 4 shows an embodiment of an encoding portion of the present invention.
  • FIG. 5 shows an embodiment of a decoding portion of the present invention.
  • the present invention decreases the amount of ECC data required to detect and correct errors in digital data while still maintaining a specified ability to correct errors in large groups of contiguous data.
  • the present invention accomplishes this by placing distance either in space or in time between related bytes.
  • Related bytes are bytes that are grouped together mathematically for ECC calculations.
  • An error affecting contiguous bytes, like scratches or other defects in digital storage media, or certain types of interference in either wired or wireless digital communications, would affect many ECC groups, but would only affect one byte from each group. Because only one byte from each group is affected, the error can easily be corrected using a one dimensional ECC, removing the need for the two dimensional product code ECC and its data overhead. As can be seen in FIG.
  • the user data which may include a CRC or other error detection or correction data
  • the user data is organized into rows and columns. Each column may be one byte, or any other fixed amount of data.
  • ECC data is calculated for each row of user data according to the ECC scheme employed, which may be Reed-Solomon, Golay, Hamming, or any other block ECC. The calculated ECC data for each row is then appended to the row. No column ECC data is calculated or used.
  • An ECC scheme where each data symbol is included in only one ECC calculation is referred to as a one dimensional ECC scheme.
  • the block of data is then written to the digital storage media or transmitted.
  • the first byte to be written or transmitted is again the byte occupying row 1 ( 120 ), column 1 ( 110 ). Instead of proceeding along row 1 ( 120 ), the next byte written or transmitted is the byte occupying row 2 ( 124 ), column 1 ( 110 ).
  • Each byte in column 1 ( 110 ) is then stored or transmitted, ending with the byte occupying row U ( 122 ) column 1 ( 110 ).
  • column 2 ( 116 ) is then transmitted, beginning with the byte occupying row 2 ( 124 ), column 1 ( 110 ), and proceeding to the byte occupying row U ( 122 ) column 2 ( 116 ).
  • Each column is stored or transmitted, proceeding in order toward column Y ( 114 ) until the entire block, including column Y ( 114 ) has been stored or transmitted.
  • the data Prior to storage or transmission, the data may first be copied to a memory buffer in this new ECC striped order to facilitate the storing or transmitting step.
  • FIG. 3 shows a second embodiment of the present invention comprising a specific implementation for explanation purposes. Note that specific rows and columns and bytes are used for explanation, but any number of implementations will fit within the scope of the present invention.
  • a block of user data 230 has 64 rows. Each row contains 512 bytes of user data, and a 4 byte CRC 232 . Appended to each row of user data is an 88 byte Reed-Solomon ECC field 240 , computed over the row. This is a total of 38,656 bytes in the block, including both the user data 230 and the ECC data 240 . If a product code ECC scheme had been used, and a 7 byte column ECC calculated and appended to each column, the total would be 42,884 bytes.
  • the present invention results in a block size decrease of 4,228 bytes, or nearly ten percent, without a decrease in user data, while preserving the ability to correct errors in large groups of contiguous data.
  • FIG. 4 An embodiment of the process flow of an encoder stage of the present invention is illustrated in FIG. 4 .
  • user data from host 460 is written to buffer memory 450 .
  • Host 460 may be any device utilizing the present invention, including electronic devices involved in data communication or storage. It should be noted that the user data may have already been processed by other systems, including other ECC systems, before being written to buffer memory 450 .
  • the user data is then sent from buffer memory 450 to both striping buffer 430 and to ECC data generator 440 .
  • Row ECC data is calculated by ECC data generator 440 according to the ECC scheme employed (eg. Reed-Solomon, Golay, Hamming).
  • the row ECC data is then sent to striping buffer 430 for inclusion in the data block at the end of the user data according to the present invention.
  • the entire data block including both user data and ECC row data, is then sent from striping buffer 430 to modulator 410 in striped column by column order according to the present invention to be modulated and written to channel 410 .
  • a single striping buffer 430 may be used, using multiple striping buffers, 430 and 431 , allows data to be read into one of the striping buffers, 430 or 431 , from buffer memory 450 while data is being written to modulator 420 from the other striping buffer, 430 or 431 . If multiple striping buffers are used, they will alternate tasks. This increases encoding speed and data throughput.
  • Channel 410 may be the write channel of a data storage system, a communications channel, or any other medium.
  • FIG. 5 shows an embodiment of the decoder stage of the present invention.
  • Channel modulated data that has been encoded according to the present invention is first read from channel 410 and demodulated by demodulator 520 .
  • the data read from channel 410 may contain errors introduced by channel 410 , and is still in ECC striped order.
  • the data is written to striping buffer 530 by column, which returns the data to its original order.
  • the data is then sent, in its original order but still containing possible errors, to the ECC decoder and data corrector 540 .
  • ECC decoder and data corrector 540 will decode the row ECC data according to the ECC scheme employed (as explained earlier) and use the ECC data to correct any errors introduced into the data by the channel 410 .
  • the data in striping buffer 530 is then modified to include the corrections made by ECC decoder and data corrector 540 . Once all modifications have been made, the corrected data can be written to buffer memory 550 and then sent to host 560 . Again, while only one striping buffer 530 is necessary for decoding, if multiple striping buffers 530 and 531 are used, data can be written to one of the striping buffers, 530 or 531 , from demodulator 520 while corrected data is being written to buffer memory 550 from the other striping buffer, 530 or 531 , thereby increasing decoding speed and data throughput.
  • the user data will be identical to the original user data that was encoded and written to the channel. If a CRC or any other information or processing was added to the user data prior to encoding, the data may be sent to other systems before being sent to host 560 .
  • buffer memory 450 and striping buffers 430 and 431 from the encoder in FIG. 4 may also be used for buffer memory 550 and striping buffers 530 and 531 from the decoder in FIG. 5 .
  • Host 560 from FIG. 5 may also be the same device as host 460 from FIG. 4 , or a second device which also has access to channel 410 .

Abstract

A method is disclosed which decreases the amount of error correction code data required to detect and correct errors in digital data while still maintaining a specified ability to correct errors in large groups of contiguous data. The present invention accomplishes this by placing distance either in space or in time between bytes grouped mathematically for error correction code calculations. An error affecting contiguous bytes, like scratches or other defects in digital storage media, or certain types of interference in either wired or wireless digital communications, would affect many error correction code groups, but would only affect one byte from each group. The error can easily be corrected using only a one dimensional error correction code, removing the need for a two dimensional product error correction code and the additional data overhead that the column ECC data necessarily adds to the block.

Description

    BACKGROUND OF THE INVENTION
  • The invention relates to the field of error correction codes, and in particular to applications traditionally requiring product error correction codes.
  • An error correction code (ECC) assists in locating errors in digital data, and allows a predetermined number of errors to be corrected. The ability to detect and correct errors is accomplished by adding redundant information to the data according to a specific algorithm. Each bit of redundant information is generated based on many of the original data bits.
  • Block error correction codes are used for fixed-size blocks of data. Examples of block error correction codes include Reed-Solomon, Golay, and Hamming codes. Block codes are widely used to protect the accuracy of data stored on digital storage media, or transmitted digitally.
  • In error correction coding, each block of data is organized into rows and columns. In order to increase the number and range of possible errors that can be corrected by the ECC scheme in a block of data, error correction data is often calculated both for each row and for each column of data in the block. This method of using both row and column error correction codes in a single block of data is referred to as a product code or a two dimensional block error correction code. The increase in ability to correct errors using a product code also introduces an increase in the amount of redundant information added to the data since ECC data must be added for both rows and columns. This increase in the amount of error correction data in turn decreases the amount of original user data that can be stored or transmitted.
  • As illustrated in FIG. 1, user data 30, protected by a product code ECC scheme, is organized into rows and columns (see rows 1- U and columns 1-V). Each column is typically one byte of data. It should be noted that user data itself may already include some type of error correction or error detection code such as a cyclic redundancy check (CRC). ECC data is calculated for each row of user data according to the ECC scheme employed, which may be Reed-Solomon, Golay, Hamming, or any other block ECC. This data is then appended to the end of each row. Additional ECC data is also calculated for each column, and placed at the bottom of each column. Row ECC data is also calculated for each row of column ECC data, and appended to the end of these rows. This entire block, including both user and ECC data, can then be stored or transmitted. The bytes are typically stored or transmitted beginning with the byte occupying row 1 (20), column 1 (10), followed by the remaining bytes in row 1 (20), proceeding towards column V (12). Each row is then stored or transmitted in a similar order, proceeding towards row X (24) until the entire block has been completed.
  • Some errors can be corrected using only the row ECC data, but if an individual row contains too many errors for the respective row ECC scheme to correct, then the column ECC data must also be used to correct the errors. This means that in most cases the entire block is accessed whenever any of the user data is accessed.
  • Many applications frequently involve errors that require both the row and column ECC data to correct. Errors due to scratches or other defects in digital storage media, or due to certain types of interference in either wired or wireless digital communications are more likely to occur in groups than individually. Although using a product code as described can correct a large amount of contiguous errors, a significant overhead of additional ECC data is introduced by the scheme. This data overhead decreases the actual user data storage capacity or throughput and increases the overall complexity of the system.
  • BRIEF DESCRIPTION OF THE DRAWINGS
  • FIG. 1 shows a product code error correction scheme.
  • FIG. 2 shows a first embodiment of the present invention.
  • FIG. 3 shows a second embodiment of the present invention.
  • FIG. 4 shows an embodiment of an encoding portion of the present invention.
  • FIG. 5 shows an embodiment of a decoding portion of the present invention.
  • DETAILED DESCRIPTION OF THE INVENTION
  • The present invention decreases the amount of ECC data required to detect and correct errors in digital data while still maintaining a specified ability to correct errors in large groups of contiguous data. The present invention accomplishes this by placing distance either in space or in time between related bytes. Related bytes are bytes that are grouped together mathematically for ECC calculations. An error affecting contiguous bytes, like scratches or other defects in digital storage media, or certain types of interference in either wired or wireless digital communications, would affect many ECC groups, but would only affect one byte from each group. Because only one byte from each group is affected, the error can easily be corrected using a one dimensional ECC, removing the need for the two dimensional product code ECC and its data overhead. As can be seen in FIG. 2 in a first embodiment of the present invention, the user data, which may include a CRC or other error detection or correction data, is organized into rows and columns. Each column may be one byte, or any other fixed amount of data. ECC data is calculated for each row of user data according to the ECC scheme employed, which may be Reed-Solomon, Golay, Hamming, or any other block ECC. The calculated ECC data for each row is then appended to the row. No column ECC data is calculated or used. An ECC scheme where each data symbol is included in only one ECC calculation is referred to as a one dimensional ECC scheme.
  • The block of data is then written to the digital storage media or transmitted. The first byte to be written or transmitted is again the byte occupying row 1 (120), column 1 (110). Instead of proceeding along row 1 (120), the next byte written or transmitted is the byte occupying row 2 (124), column 1 (110). Each byte in column 1 (110) is then stored or transmitted, ending with the byte occupying row U (122) column 1 (110). Once column 1 (110) has been stored or transmitted, column 2 (116) is then transmitted, beginning with the byte occupying row 2 (124), column 1 (110), and proceeding to the byte occupying row U (122) column 2 (116). Each column is stored or transmitted, proceeding in order toward column Y (114) until the entire block, including column Y (114) has been stored or transmitted. This includes row ECC data 140, which is stored or transmitted by column in the same manner as user data 130. Prior to storage or transmission, the data may first be copied to a memory buffer in this new ECC striped order to facilitate the storing or transmitting step.
  • Because of the ECC striping, meaning the out of order column by column manner in which the data is stored or transmitted, the entire data block must be read or received in order to use the data in its original order, or to correct the data with the row ECC which is stored or transmitted last. The effect is the same as if row and column ECC data were produced using the product code scheme—an entire block of data must be read or received rather than an individual row of data.
  • Notice that because of the ECC striping, even if an entire column is lost to contiguous errors, only one byte from each ECC group is lost, and can easily be corrected. The correction ability of the ECC scheme employed should be chosen based upon the number and type of errors expected.
  • FIG. 3 shows a second embodiment of the present invention comprising a specific implementation for explanation purposes. Note that specific rows and columns and bytes are used for explanation, but any number of implementations will fit within the scope of the present invention. A block of user data 230 has 64 rows. Each row contains 512 bytes of user data, and a 4 byte CRC 232. Appended to each row of user data is an 88 byte Reed-Solomon ECC field 240, computed over the row. This is a total of 38,656 bytes in the block, including both the user data 230 and the ECC data 240. If a product code ECC scheme had been used, and a 7 byte column ECC calculated and appended to each column, the total would be 42,884 bytes. The present invention results in a block size decrease of 4,228 bytes, or nearly ten percent, without a decrease in user data, while preserving the ability to correct errors in large groups of contiguous data.
  • An embodiment of the process flow of an encoder stage of the present invention is illustrated in FIG. 4. In FIG. 4 user data from host 460 is written to buffer memory 450. Host 460 may be any device utilizing the present invention, including electronic devices involved in data communication or storage. It should be noted that the user data may have already been processed by other systems, including other ECC systems, before being written to buffer memory 450. The user data is then sent from buffer memory 450 to both striping buffer 430 and to ECC data generator 440. Row ECC data is calculated by ECC data generator 440 according to the ECC scheme employed (eg. Reed-Solomon, Golay, Hamming). The row ECC data is then sent to striping buffer 430 for inclusion in the data block at the end of the user data according to the present invention. The entire data block, including both user data and ECC row data, is then sent from striping buffer 430 to modulator 410 in striped column by column order according to the present invention to be modulated and written to channel 410. Although a single striping buffer 430 may be used, using multiple striping buffers, 430 and 431, allows data to be read into one of the striping buffers, 430 or 431, from buffer memory 450 while data is being written to modulator 420 from the other striping buffer, 430 or 431. If multiple striping buffers are used, they will alternate tasks. This increases encoding speed and data throughput. Channel 410 may be the write channel of a data storage system, a communications channel, or any other medium.
  • FIG. 5 shows an embodiment of the decoder stage of the present invention. Channel modulated data that has been encoded according to the present invention is first read from channel 410 and demodulated by demodulator 520. The data read from channel 410 may contain errors introduced by channel 410, and is still in ECC striped order. Next the data is written to striping buffer 530 by column, which returns the data to its original order. The data is then sent, in its original order but still containing possible errors, to the ECC decoder and data corrector 540. ECC decoder and data corrector 540 will decode the row ECC data according to the ECC scheme employed (as explained earlier) and use the ECC data to correct any errors introduced into the data by the channel 410. The data in striping buffer 530 is then modified to include the corrections made by ECC decoder and data corrector 540. Once all modifications have been made, the corrected data can be written to buffer memory 550 and then sent to host 560. Again, while only one striping buffer 530 is necessary for decoding, if multiple striping buffers 530 and 531 are used, data can be written to one of the striping buffers, 530 or 531, from demodulator 520 while corrected data is being written to buffer memory 550 from the other striping buffer, 530 or 531, thereby increasing decoding speed and data throughput. If an ECC scheme was chosen that has the ability to correct all of the errors introduced by the channel, the user data will be identical to the original user data that was encoded and written to the channel. If a CRC or any other information or processing was added to the user data prior to encoding, the data may be sent to other systems before being sent to host 560.
  • It should be noted that in applications where data is not read and written simultaneously, buffer memory 450 and striping buffers 430 and 431 from the encoder in FIG. 4 may also be used for buffer memory 550 and striping buffers 530 and 531 from the decoder in FIG. 5. Host 560 from FIG. 5 may also be the same device as host 460 from FIG. 4, or a second device which also has access to channel 410.
  • Although the description of the present invention has utilized various embodiments, it will be recognized that the present invention is not limited to the specific embodiments described. Rather, the present invention encompasses all variants incorporating the essence of the ideas presented in the above description.

Claims (13)

1. A method comprising:
receiving user data in a first ordered manner;
organizing said user data into rows and columns;
calculating ECC data for each of said rows;
appending said ECC data to each of said rows wherein the ECC data calculated for a given of said rows is appended to that specific given of said rows; and
sending combined user data and ECC data in a second ordered manner.
2. The method of claim 1, wherein receiving user data comprises receiving user data having an initial set of ECC data included therein.
3. The method of claim 1 wherein the step of sending combined user data and ECC data comprises sending combined user data and ECC data column by column.
4. An encoder comprising:
a memory receiving sets of data in a first ordered manner, the memory storing the sets of data in rows and columns wherein each of the sets of data is stored in a different one of the rows from the other of the sets of data;
an ECC data generator coupled to the memory, the ECC data generator generating ECC data for each of the sets of data in each of the rows and appending the generated ECC data to the set of data for its respective row; and
a device coupled to the memory, the device extracting the combined sets of data and ECC data in a second ordered manner.
5. The encoder of claim 4 wherein the device extracts the combined sets of data and ECC data column by column.
6. The encoder of claim 4, wherein the device coupled to the memory consists of a modulator which modulates the combined sets of data and ECC data for a specific channel.
7. The encoder of claim 4, wherein each set of data has an initial set of ECC data included therein.
8. The encoder of claim 4, wherein the memory is also part of a decoder.
9. A decoder comprising:
a first device extracting data encoded in a first ordered manner;
a memory coupled to the first device receiving the encoded data, the memory storing the data in rows and columns in a second ordered manner such that each of the rows contain a set of data and ECC data calculated for the set of data;
an ECC decoder and data corrector coupled to the memory, the ECC decoder and data corrector receiving the data from the memory in the second ordered manner, using the ECC data to correct errors in the set of data, and sending the error corrections to the memory; and
a second device coupled to the memory, the second device extracting the sets of data in the second ordered manner.
10. The decoder of claim 9, wherein the first ordered manner is column by column.
11. The decoder of claim 9, wherein the first device is a demodulator which demodulates the data from a specific channel.
12. The decoder of claim 9, wherein each set of data has an initial set of ECC data included therein.
13. The decoder of claim 9, wherein the memory is also part of an encoder circuit.
US12/459,679 2006-03-06 2009-07-07 Error correction code striping Abandoned US20100017682A1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US12/459,679 US20100017682A1 (en) 2006-03-06 2009-07-07 Error correction code striping

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/368,140 US7747925B2 (en) 2006-03-06 2006-03-06 Apparatus and method for error correction code striping
US12/459,679 US20100017682A1 (en) 2006-03-06 2009-07-07 Error correction code striping

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
US11/368,140 Division US7747925B2 (en) 2006-03-06 2006-03-06 Apparatus and method for error correction code striping

Publications (1)

Publication Number Publication Date
US20100017682A1 true US20100017682A1 (en) 2010-01-21

Family

ID=38336224

Family Applications (2)

Application Number Title Priority Date Filing Date
US11/368,140 Active 2029-01-01 US7747925B2 (en) 2006-03-06 2006-03-06 Apparatus and method for error correction code striping
US12/459,679 Abandoned US20100017682A1 (en) 2006-03-06 2009-07-07 Error correction code striping

Family Applications Before (1)

Application Number Title Priority Date Filing Date
US11/368,140 Active 2029-01-01 US7747925B2 (en) 2006-03-06 2006-03-06 Apparatus and method for error correction code striping

Country Status (3)

Country Link
US (2) US7747925B2 (en)
JP (1) JP2007243953A (en)
DE (1) DE102007007546A1 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103797541A (en) * 2011-08-12 2014-05-14 美光科技公司 Memory devices and configuration methods for memory device

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9495241B2 (en) 2006-12-06 2016-11-15 Longitude Enterprise Flash S.A.R.L. Systems and methods for adaptive data storage
WO2008070814A2 (en) 2006-12-06 2008-06-12 Fusion Multisystems, Inc. (Dba Fusion-Io) Apparatus, system, and method for a scalable, composite, reconfigurable backplane
US9116823B2 (en) * 2006-12-06 2015-08-25 Intelligent Intellectual Property Holdings 2 Llc Systems and methods for adaptive error-correction coding
US7836226B2 (en) 2007-12-06 2010-11-16 Fusion-Io, Inc. Apparatus, system, and method for coordinating storage requests in a multi-processor/multi-thread environment
US9519540B2 (en) 2007-12-06 2016-12-13 Sandisk Technologies Llc Apparatus, system, and method for destaging cached data
US10198314B2 (en) * 2013-05-23 2019-02-05 Rambus Inc. Memory device with in-system repair capability
US20180203625A1 (en) * 2017-01-19 2018-07-19 Cnex Labs, Inc. Storage system with multi-dimensional data protection mechanism and method of operation thereof

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040103360A1 (en) * 2002-10-29 2004-05-27 Takaro Mori Information recording and reproducing apparatus
US20050204257A1 (en) * 2002-11-29 2005-09-15 Fujitsu Limited Data recording/reproducing apparatus and data recording/reproducing method
US7395488B2 (en) * 2004-12-29 2008-07-01 Zoran Corporation System and method for efficient use of memory device bandwidth
US7444579B2 (en) * 2005-04-28 2008-10-28 Micron Technology, Inc. Non-systematic coded error correction

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040103360A1 (en) * 2002-10-29 2004-05-27 Takaro Mori Information recording and reproducing apparatus
US7055082B2 (en) * 2002-10-29 2006-05-30 Victor Company Of Japan, Ltd. Information recording and reproducing apparatus
US20050204257A1 (en) * 2002-11-29 2005-09-15 Fujitsu Limited Data recording/reproducing apparatus and data recording/reproducing method
US7395488B2 (en) * 2004-12-29 2008-07-01 Zoran Corporation System and method for efficient use of memory device bandwidth
US7444579B2 (en) * 2005-04-28 2008-10-28 Micron Technology, Inc. Non-systematic coded error correction

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Understanding CD-R & CD-RW by OSTA.orghttp://web.archive.org/web/20060113232920/http://www.osta.org/technology/cdqa3.htmversion from January 13, 2006, retrieved via the Waybay Machine *

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103797541A (en) * 2011-08-12 2014-05-14 美光科技公司 Memory devices and configuration methods for memory device
US9594676B2 (en) 2011-08-12 2017-03-14 Micron Technology, Inc. Configuring and reconfiguring blocks of memory cells to store user data and ECC data
US10409673B2 (en) 2011-08-12 2019-09-10 Micron Technology, Inc. Memory devices having differently configured blocks of memory cells
US10891187B2 (en) 2011-08-12 2021-01-12 Micron Technology, Inc. Memory devices having differently configured blocks of memory cells
US10891188B2 (en) 2011-08-12 2021-01-12 Micron Technology, Inc. Memory devices having differently configured blocks of memory cells

Also Published As

Publication number Publication date
US7747925B2 (en) 2010-06-29
US20070220396A1 (en) 2007-09-20
JP2007243953A (en) 2007-09-20
DE102007007546A1 (en) 2007-09-13

Similar Documents

Publication Publication Date Title
US20100017682A1 (en) Error correction code striping
CA2045251C (en) Method and apparatus for transferring data between a data bus and a data storage device
US7900118B2 (en) Flash memory system and method for controlling the same
EP1500200B1 (en) Method and apparatus for embedding an additional layer of error correction into an error correcting code
KR101531774B1 (en) Decoding encoded data containing integrated data and header protection
US8055982B2 (en) Error correction system and method
EP2218003B1 (en) Correction of errors in a memory array
US20080320369A1 (en) Data retrieval from a storage device using a combined error correction and detection approach
US6378100B1 (en) Method and apparatus for encoding multiword information with error locative clues directed to low protectivity words
JP2009295273A (en) Method of determining computer of erasure correction for error correction code entity
JP2002509331A5 (en)
US7340663B2 (en) Method and apparatus for embedding an additional layer of error correction into an error correcting code
US6138263A (en) Error correcting method and apparatus for information data having error correcting product code block
JP4674371B2 (en) Error correction decoding method and apparatus
US6718505B1 (en) Method and apparatus for error correction in a process of decoding cross-interleaved Reed-Solomon code (CIRC)
US6615384B1 (en) Encoding/decoding method and apparatus and disk storage device
EP1111799B1 (en) Error correction with a cross-interleaved Reed-Solomon code, particularly for CD-ROM
US6694473B1 (en) Parallel signal decoding method
JP2008140474A (en) Optical disk unit
JPH0783276B2 (en) Decoding method of error correction code

Legal Events

Date Code Title Description
STCB Information on status: application discontinuation

Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION