JP2005135572A - 記憶媒体から検索されたデータにおけるエラーを訂正する方法およびシステムならびにコンピュータ実行可能な命令を含むコンピュータ読取り可能な記憶媒体 - Google Patents

記憶媒体から検索されたデータにおけるエラーを訂正する方法およびシステムならびにコンピュータ実行可能な命令を含むコンピュータ読取り可能な記憶媒体 Download PDF

Info

Publication number
JP2005135572A
JP2005135572A JP2004296539A JP2004296539A JP2005135572A JP 2005135572 A JP2005135572 A JP 2005135572A JP 2004296539 A JP2004296539 A JP 2004296539A JP 2004296539 A JP2004296539 A JP 2004296539A JP 2005135572 A JP2005135572 A JP 2005135572A
Authority
JP
Japan
Prior art keywords
data
error
data segment
blocks
storage medium
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.)
Pending
Application number
JP2004296539A
Other languages
English (en)
Inventor
Matt Ball
マット・ボール
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.)
Quantum Corp
Original Assignee
Quantum Corp
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 Quantum Corp filed Critical Quantum Corp
Publication of JP2005135572A publication Critical patent/JP2005135572A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • 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
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B20/00Signal processing not specific to the method of recording or reproducing; Circuits therefor
    • G11B20/10Digital recording or reproducing
    • G11B20/18Error detection or correction; Testing, e.g. of drop-outs
    • G11B20/1833Error detection or correction; Testing, e.g. of drop-outs by adding special lists or symbols to the coded information

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Signal Processing (AREA)
  • Algebra (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Theoretical Computer Science (AREA)
  • Detection And Correction Of Errors (AREA)
  • Error Detection And Correction (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

【課題】 記憶媒体から検索されたデータにおけるエラーは、記憶媒体から複数のデータブロックを検索することにより訂正される。
【解決手段】 複数のデータブロックに関連付けられる複数の冗長ブロックは、記憶媒体から検索される。記憶媒体から検索された複数のデータブロックからのエラーを有するデータブロックの数は、決定される。エラーを有するデータブロックの数が冗長ブロックの数を上回る場合、データブロックは、データセグメントにおいて訂正される。ここで、データセグメントは、記憶媒体から検索された複数のデータブロックの各々の一部分からのデータを含む。
【選択図】 図4

Description

背景
1.発明の分野
この出願は、概して、記憶媒体から検索されたデータを訂正することに関し、より特定的には、エラーを有するデータブロックが冗長ブロックよりも多く存在するデータを訂正することに関する。
関連する出願の相互参照
本願は2003年10月10日付けで出願され、「エラーを有するデータブロックが冗長ブロックよりも多く存在するデータの訂正(Correcting Data Having More Data Blocks with Errors than Redundancy Blocks)」と題され、先に仮出願された米国仮出願連続番号第60/510,657号と、これと同様に題され、2003年10月17日付けで出願された米国出願第10/688,027号との優先権を主張し、その全体が引用によりこの明細書中に援用されている。
2.関連技術
記憶装置における記憶媒体にデータを書込むことにより、データが記憶装置に記憶される。記憶されたデータは、記憶媒体からそのデータを読出すことにより記憶装置から後で検索することができる。しかしながら、いくつかの理由で、記憶装置から検索されたデータにはエラーが存在する可能性がある。すなわち、記憶されたデータを検索することができなくなるか、または記憶媒体に元々記憶されているデータとは異なることとなる。たとえば、記憶媒体に記憶されたデータの一部分が時間が経つにつれて劣化する可能性があり、このため、記憶されたデータのその部分を後で適切に読出すことができなくなる。
このようなエラーを訂正する従来の技術では、データのために冗長ブロックの組が生成され、そのデータと共に記憶媒体に記憶される。記憶されたデータが後に検索され、エラーが検出されると、冗長ブロックを用いて検索されたデータが訂正される。典型的には、エラーを有するデータブロックが冗長ブロックよりも多く該データに存在する場合、該データを訂正することができない。
概要
具体的な一実施例においては、記憶媒体から検索されたデータにおけるエラーは、複数のデータブロックを記録媒体から検索することによって訂正される。複数のデータブロックに関連付けられる複数の冗長ブロックがまた記憶媒体から検索される。記憶媒体から検索された複数のデータブロックからエラーを有するデータブロックの数が決定される。エラーを有するデータブロックの数が冗長ブロックの数を上回ると、データブロックはデータセグメントにおいて訂正される。ここで、データセグメントは記憶媒体から検索された複数のデータブロックの各々の一部分からのデータを含んでいる。
詳細な説明
以下の説明では多数の特定の構成、パラメータなどを記載する。しかしながら、このよ
うな説明が、この発明の範囲を限定するものとして意図されるのではなく、具体的な実施例をより良く説明するために提供されていることを認識されたい。
図1を参照すると、記憶装置104に接続されたホスト端末102が示される。ホストコンピュータ102は如何なる種類のコンピュータ、たとえばパーソナルコンピュータ、ワークステーション、サーバなどであってもよい。記憶装置104は如何なる種類の記憶装置、たとえばテープドライブ、ハードドライブなどであってもよい。ホスト端末102を任意の数の記憶装置104に接続することができ、任意の数のホスト端末102を1つ以上の記憶装置104に接続できることを認識されたい。
図1を引続き参照すると、具体的な一実施例においては、記憶装置104は、記憶装置104に記憶されるデータのエラーを検出し訂正するよう構成される。より具体的には、記憶装置104に記憶されるデータが検索されると、記憶装置104は、誤り訂正符号(ECC)冗長ブロックとも称される冗長ブロックを用いて、たとえば検索されたデータが記憶装置104に元々記憶されていたデータとは異なる場合、または記憶されたデータを検索できない場合などに、検索されたデータにおけるエラーを訂正するよう構成される。加えて、この発明の具体的な実施例においては、巡回冗長検査(CRC)コードなどのチェックサムを用いて、検索されたデータにおけるエラーを検出する。しかしながら、冗長ブロックを用いてエラーを検出し、さらにそれらエラーを訂正し得ることを認識されたい。
図1に示される実施例においては、記憶装置104は記憶媒体106、チャネルおよび読出/書込ヘッド108、プロセッサ110、ならびにエラー検出/訂正ユニット112を含む。記憶装置104においては、データは記憶媒体106に記憶される。読出/書込ヘッド108は記憶媒体106に対するデータの読出および/または書込を実行する。プロセッサ110は、チャネルおよび読出/書込ヘッド108の動作を含む記憶装置104の動作を制御する。後により詳細に説明されるように、エラー検出/訂正ユニット112は記憶媒体106に記憶されるデータにおけるエラーを検出して訂正する。
この発明の具体的な実施例においては、エラー検出/訂正ユニット112はデータバッファ114、冗長ブロックエンコーダ/デコーダ116、およびCRCエンコーダ/デコーダ118を含む。データが記憶媒体106に記憶されるべき場合、データはホスト端末102から受取られ、データバッファ114に書込まれる。冗長ブロックエンコーダ/デコーダ116およびCRCエンコーダ/デコーダ118は、データバッファ114におけるデータのために冗長ブロックおよびCRCコードを生成する。次いで、読出/書込ヘッド108がデータならびに生成された冗長ブロックおよびCRCコードを記憶媒体106に書込む。
データが記憶媒体106から読出されるべき場合、読出/書込ヘッド108は記憶媒体106からデータバッファ114にデータおよび冗長ブロックを読出す。後により詳細に説明されるように、記憶媒体106から読出されるデータにおけるいずれのエラーも、CRCコードおよび冗長ブロックを用いて検出および訂正される。次いで、データがホスト端末102に転送され得る。
具体的な一実施例においては、データは、キャッシュに記憶されるデータレコードにおいてホスト端末102と記憶装置104との間で転送される。データレコードは予め定められた長さ、たとえば2kバイト、4kバイト、6kバイトなどの長さのデータブロックに分割される。しかしながら、さまざまな長さのデータブロックを用いてもよいことを認識されたい。
この発明の具体的な実施例においては、データブロックが記憶媒体106から検索された後、CRCコードを用いて、検索されたデータブロックにおけるエラーを検出するが、ここで、検索されたデータブロックにおけるエラーは、データが記憶媒体106に元々記憶されていた場合のデータブロックにおけるデータと検索されたデータブロックにおけるデータとが異なることを示している。より具体的には、記憶媒体106にデータブロックを記憶する前に、データブロックのためにCRCコードが生成され、そのデータブロックと共に記憶媒体106に記憶される。データブロックが後に検索されると、検索されたデータブロックのために新しいCRCコードが生成される。次いで、新しいCRCコードが記憶媒体106から検出されたCRCコードと比較され、これは検索されたデータブロックに対応しており、検索されたデータブロックを記憶媒体106に記憶する前に、検索されたデータブロックのために元々生成されたものである。新しいCRCコードと検索されたCRCコードとが異なる場合、そのデータブロックのためにエラーが検出される。
加えて、この発明の具体的な実施例においては、冗長ブロックを用いて、検索されたデータブロックにおけるエラーを訂正する。より具体的には、データブロックを記憶媒体106に記憶する前に、そのデータブロックに基づいて冗長ブロックが生成され、データブロックと共に記憶媒体106に記憶される。後により詳細に説明されるように、データブロックが後に検索されると、エラーを有していると識別されるデータブロックが冗長ブロックを用いて訂正される。
具体的な一実施例においては、冗長ブロック204はBCH(Bose-Chaudhuri-Hocquenghem)符号であり、より特定的にはリード・ソロモン(Reed-Solomon)符号である。リード・ソロモン符号のより詳細な説明については、その全体が引用によりこの明細書中に援用される、MITプレス(MIT Press)のピーターソン(Peterson)およびウェルドン(Weldon)による「誤り訂正符号(Error Correcting Codes)」第2版(1972年)を参照されたい。しかしながら、さまざまな種類の誤り訂正符号を用い得ることを認識されたい。
具体的な一実施例においては、データブロックの組、冗長ブロックの組、およびCRCコードの組は、「エンティティ」と称されるグループとして一緒に読出および書込が行われ得る。たとえば、図2を参照すると、16個のデータブロック204、4個の冗長ブロック206、および20個のCRCコード208を有するエンティティ202が示される。しかしながら、エンティティ202がさまざまな数のデータブロック204、冗長ブロック204およびCRCコード208を含み得ることを認識されたい。加えて、上述のように、冗長ブロックを用いて、検索されたデータブロックにおけるエラーを検出し、さらに訂正することもできる。したがって、CRCコード208は冗長ブロックの組と置換えることができる。
図2は、エンティティ202がデータバッファ114(図1)に記憶されている形を示す。しかしながら、エンティティ202が図2に示される形で物理的に存在する必要がないことを認識されたい。エンティティ202におけるデータと、より特定的にはデータブロック204におけるデータとが単一のファイルに対応する必要がないことも認識されたい。代わりに、具体的な一実施例においては、ホスト端末102(図1)から受取ったデータはインタリーブされる。したがって、特定のデータブロック204におけるデータはホスト端末102(図1)から受取った別個のファイルの部分に対応し得る。
図2はまた、エンティティ202のデータブロック204と冗長ブロック206とCRCコード208との間の論理関係を示す。図3を参照すると、データブロック204と冗長ブロック206とCRCコード208との間の論理関係をより明瞭に説明するために、エンティティ202の部分がより詳細に示される。
図3に示されるように、CRCコード208はデータブロック204または冗長ブロック206に対応しており、データブロック204または冗長ブロック206におけるエラーを検出するために用いられる。たとえば、CRCコードCRC19はエンティティ202のデータブロックD19に対応する。したがって、データブロックD19におけるエラーを検出するために、記憶媒体106(図1)からデータブロックD19を検索した後、検索されたデータブロックD19のために新しいCRCコードCRC19′が生成される。次いで、記憶媒体106(図1)から検索され、検索されたデータブロックD19(すなわちCRCコードCRC19)に対応するCRCコードと、新しいCRCコードCRC19′とが比較される。新しいCRCコードCRC19′と検索されたCRCコードCRC19とが異なる場合、データブロックD19のためにエラーが検出される。
この発明の具体的な実施例においては、1つの冗長ブロックを用いてエンティティ202の1つのデータブロック204を訂正し得る。したがって、図2に示される例においては、全部で4個の冗長ブロック206を用いて、全部で16個のデータブロック204を有するエンティティ202のうち全部で4個のデータブロック204を訂正し得る。たとえば、冗長ブロックE3を用いてエンティティ202の第1のデータブロックを訂正し得る。冗長ブロックE2を用いてエンティティ202の第2のデータブロックを訂正し得る。冗長ブロックE1を用いてエンティティ202の第3のデータブロックを訂正し得る。冗長ブロックE0を用いてエンティティ202の第4のデータブロックを訂正し得る。
この発明の具体的な実施例においては、各冗長ブロック206は、エンティティ202のすべてのデータブロックにおけるデータに基づいて生成される。たとえば、冗長ブロックE0、E1、E2およびE3は各々、データブロックD4、D2…D19におけるデータに基づいて生成される。上述のとおり、図1を参照すると、冗長ブロックは冗長ブロックエンコーダ116によって生成される。また上述されたように、冗長ブロックは、ホスト端末102から受取ったデータのために最初に生成される。次いで、生成された冗長ブロックと受取られたデータとが記憶媒体106に記憶される。
さらに図3を参照すると、冗長ブロックE0、E1、E2およびE3は同じ組のデータ(すなわち、エンティティ202のデータブロック204)に基づいて生成されるが、各冗長ブロック206は互いに固有である。より具体的には、この発明の実施例においては、冗長ブロックE0、E1、E2およびE3はBCH符号であり、より特定的にはリード・ソロモン符号である。冗長ブロックE0、E1、E2およびE3は冗長ブロックエンコーダ116(図1)を用いて生成される。例示的なエンコーダの説明については、その全体が引用によりこの明細書中に援用される、1992年8月4日付けで発行され、「長いバーストエラーに対するエラー検出および訂正システム(Error Detection and Correction System for Long Burst Errors)」と題される米国特許第5,136,592号を参照されたい。
図4を参照すると、記憶媒体から検索されたデータを訂正するための例示的なプロセス402が示される。より具体的には、図4は、記憶装置の動作を指示するコンピュータ実行可能な命令を含むコンピュータプログラムとして実現される例示的なプロセス402を示す。たとえば、図1を参照すると、図4に示されるプロセスは記憶装置104のプロセッサ110の動作を指示し得る。しかしながら、例示的なプロセス402(図4)が特定用途向け集積回路(ASIC)などのハードウェアにおいて実現可能であることを認識されたい。
図4を参照すると、冗長ブロックの組がデータブロックの組のために事前に生成され、冗長ブロックの組とデータブロックの組とが事前に記憶媒体に記憶されているとプロセス402が仮定していることを認識されたい。したがって、図2に示される例では、4個の
冗長ブロック206は16個のデータブロック204のために事前に生成および記憶されている。上述のように、任意の数のデータブロックのために任意の数の冗長ブロックを生成および記憶し得ることを認識されたい。
再び図4を参照すると、404において、データブロックの組と冗長ブロックの組とが記憶媒体から検索される。加えて、この発明の具体的な実施例においては、CRCコードなどのチェックサムの組が記憶媒体から検索される。上述のように、CRCコードの組ではなく冗長ブロックの別の組を用いることができる。
406において、エラーを有するデータブロックの数が決定される。上述のように、CRCコードなどのチェックサムを用いて、エラーを有するデータブロックを識別することができる。
より特定的には、記憶装置104(図1)がテープドライブであり、記憶媒体106(図1)が磁気テープである具体的な一実施例においては、データブロックおよび冗長ブロックが磁気テープから読出され、データバッファに記憶される。データブロックまたは冗長ブロックが読出されると、データブロックまたは冗長ブロックに対応するCRCコードもまた磁気テープから読出される。磁気テープから読出されたデータブロックまたは冗長ブロックに基づいて新しいCRCコードが生成され、次に、この新しいCRCコードが検索されたCRCコードと比較される。新しいCRCコードと検索されたCRCコードとが異なる場合、エラーが検出され、検索されたデータブロックまたは冗長ブロックはエラーを有するものとしてフラグを立てられる。したがって、この具体的な実施例においては、CRCコードは検索されたデータブロックおよび冗長ブロックと共にデータバッファに記憶されない。しかしながら、後に使用するためにCRCコードを記憶できることを認識されたい。加えて、データブロック、冗長ブロックおよびCRCコードは磁気テープから検索されて一緒にデータバッファに記憶され得、次いで、エラーを有するデータブロックおよび/または冗長ブロックが、データバッファに記憶されたCRCコードを用いて識別され得る。
408において、エラーを有するデータブロックの数が冗長ブロックの数と比較される。図2に示される例においては、冗長ブロックの数は4個である。
410において、エラーを有するデータブロックの数が冗長ブロックの数以下である場合、すなわち冗長ブロックの数に等しいかまたはそれ未満である場合、データブロックは冗長ブロックを用いて訂正される。より特定的には、上述のように、1つの冗長ブロックを用いて、記憶媒体から検索されたデータブロックの組における1つのデータブロックを訂正し得る。したがって、エラーを有するデータブロックの数が冗長ブロックの数以下である場合、冗長ブロックを用いて、エラーを有するすべてのデータブロックを訂正し得る。冗長ブロックを用いてデータを訂正する例示的なプロセスのより詳細な説明については、その全体が引用によりこの明細書中に援用される、2003年6月3日付けで出願され、「冗長ブロックを用いるデータの訂正(Correcting Data Using Redundancy Blocks)」と題される米国特許出願連続番号第10/454,420号を参照されたい。
412において、エラーを有するデータブロックの数が冗長ブロックの数よりも多い場合、データブロックは、各データブロックからのデータの一部分をそれぞれ含むデータセグメントにおいて訂正される。たとえば、図1を参照すると、エンティティ202の列210は、各データブロック204からのデータの一部分と各冗長ブロック206の一部分とを含む。エンティティ202の各列210は、この明細書においては符号語210と称される。したがって、データセグメントは、データブロック204からのデータを有する符号語210の部分に対応する。具体的な一実施例においては、符号語210はエンティ
ティ202においてデータブロック204および冗長ブロック206の各々の8ビットの記号を含む。したがって、データブロック204が2kバイトの長さである場合、2000個の符号語と2000個のデータセグメントとが存在する。しかしながら、符号語210およびデータブロック204はどのような長さであってもよいことを認識されたい。
図5を参照すると、データブロックの数が冗長ブロックの数よりも多い場合にデータを訂正するための例示的なプロセス502が示される。より特定的には、データブロックの各データセグメントは例示的なプロセス502に従って処理される。図4に示されるプロセス402と同様に、例示的なプロセス502は、記憶装置の動作を指示するコンピュータ実行可能な命令を含むコンピュータプログラムとして実現可能である。たとえば、図1を参照すると、図5に示されるプロセスは記憶装置104のプロセッサ110の動作を指示し得る。しかしながら、例示的なプロセス502(図5)は、特定用途向け集積回路(ASIC)などのハードウェアにおいて実現可能であることを認識されたい。
図5を再び参照すると、502において、部分的なシンドロームとしても公知のシンドロームが、処理されているデータセグメントのために得られる。シンドロームの数は冗長ブロックの数に対応する。したがって、図3に示される例においては、データセグメントに対して4つのシンドローム(すなわち、S0、S1、S2およびS3)が得られる。
具体的な一実施例においては、シンドロームは、冗長ブロックに基づいて生成される残余ブロックから計算される。より特定的には、この発明の具体的な実施例においては、新しい冗長ブロックは、検索されたデータブロックに基づいて生成される。検索されたデータブロックに基づいて新しい冗長ブロックを生成する際に、408(図4)においてエラーを有していると識別されたデータブロックは、すべて0を含むダミーのデータブロックと置換えられる。代替的には、新しい冗長ブロックは、エラーを有していると識別されたデータブロックを保持しつつ、検索されたデータブロックに基づいて生成され得る。加えて、この発明の具体的な実施例においては、図1を参照すると、新しい冗長ブロックは、冗長ブロックエンコーダ118を用いて生成される。次いで、残余ブロックは、新しい冗長ブロックと検索された冗長ブロックとに基づいて生成される。より具体的には、残余ブロックは、新しい冗長ブロックと検索された冗長ブロックとの間で排他的論理和(XOR)演算を実行することによって生成される。数学的には、残余ブロックは、検索された符号語を生成多項式で割った剰余である。次いで、残余ブロックからシンドロームが計算される。
たとえば、シンドロームS0、S1、S2およびS3は以下の式を用いて計算され得る。
Figure 2005135572
ここで、R0、R1、R2およびR3は、冗長ブロックに基づいて生成された残余ブロックの部分であり、αはガロア体における基本要素である。式(1)を用いてシンドロームS0、S1、S2およびS3を計算するには16回の乗算演算が必要とされる可能性があることに留意されたい。R0、R1、R2およびR3が0である場合、データセグメントにはエラー
がないことにも留意されたい。この場合、次のデータセグメントが処理される。シンドロームS0、S1、S2およびS3が、残余ブロックに基づいて生成されるのではなく、直接得られ得ることを認識されたい。
506において、エラー位置の多項式は、得られたシンドロームに基づいて生成される。エラー位置の多項式は、エラー位置において数値が求められる場合、0に等しい。以下は、2つのエラー(式2a)および1つのエラー(式2b)に対するエラー位置の多項式の定義である。
Figure 2005135572
ここで、xはエラー位置であり、σ0、σ1は係数である。バーレカンプ・マッシィ・アルゴリズム(Berlekamp-Massey algorithm)などのさまざまな公知のアルゴリズムを用いてエラー位置の多項式を解くことができることを認識されたい。
具体的な一実施例においては、エラー位置の多項式は、データセグメントに2つ未満のエラーが存在するかどうか最初に判断することによって計算される。より特定的には、以下の行列式が計算される。
Figure 2005135572
行列式(3)は、D=S02+S1 2である。
行列式(3)が0である場合、データセグメントには2つ未満のエラーが存在する。この場合、エラー位置の多項式の項(式(2b))は以下の式を用いて計算される。
Figure 2005135572
0が0である場合、検査されているデータセグメントにはエラーが存在しないことに留意されたい。しかしながら、上述のように、具体的な一実施例においては、シンドロームは残余から計算され、データセグメントは、データセグメントに対応する残余が0でないときに検査される。したがって、この場合、S0が0である場合、このプロセスを用い
てもデータセグメントを訂正することができない。
行列式(3)が0でない場合、データセグメントには2つ以上のエラーが存在する。この場合、エラー位置の多項式の項(式(2a))は以下の式を用いて計算される。
Figure 2005135572
式(5a)〜(5c)を解くには6回の乗算演算と2回の除算演算とが必要とされる可能性があることに留意されたい。代替的には、式(5a)〜(5c)を解くには8回の乗算演算と1回の反転演算とが必要とされる可能性がある。
508において、データセグメント内のエラーの位置はエラー位置の多項式から決定される。より特定的には、データセグメント内のエラーの位置は、エラー位置の多項式の根を決定することにより決定される。上述のように、エラー位置の多項式は、エラーを有する位置において数値が求められる場合、0である。
したがって、データセグメントにエラーが1つ存在する場合、データセグメント内のエラーの位置は、シンドロームのうちの2つのシンドロームを用いて決定され得る。この発明の例においては、データセグメント内のエラーの位置は、式(4b)と(2b)とを組合せることにより決定され得る。
Figure 2005135572
エラー位置をさらに確認するために、別のシンドロームの組合せを用いてエラー位置を決定することができる。エラー位置は、この発明の例において以下のとおり計算され得る。
Figure 2005135572
シンドロームが0であるかまたはエラー位置が同じでない場合、エラー位置は正しくない。この発明の例においては、S1またはS2が0に等しいかまたはxがx′およびx″に
等しくない場合、エラー位置xは正しくない。これらの付加的なチェックにより、単一のエラーの失敗−訂正率が約224の5にまで低減される。
データセグメントに2つのエラーが存在する場合、式(5a)〜(5c)によって決定される項を有する式(2a)の根を解くことによってデータセグメント内のエラーの位置が決定され得る。しかしながら、ガロア体の数学的処理では二次方程式を用いることができないので、式(2a)の根を解くのにテーブルが用いられる。
代替的には、チェン・サーチ(Chien Search)などの網羅的な探索が用いられる。より特定的には、式(2a)はデータセグメント内の潜在的なエラー位置の各々において評価される。より特定的には、上述のように、具体的な一実施例においては、CRCコードなどのチェックサムは、エラーを有するデータブロックを示すために用いられる。しかしながら、チェックサムがデータブロック全体に対応するので、チェックサムによってエラーを有していると示されるデータブロックに対応するデータセグメント内の位置はエラーを有するかまたは有さない可能性がある。したがって、式(2a)は、チェックサムによって潜在的にエラーを有していると示されるデータセグメント内の各位置において評価される。正確に2つのエラー位置が見出されない場合、探索が失敗し、データセグメントは訂正不可能となる。各々の位置をテストするには2回の乗算演算と2回の加算演算とが必要とされる可能性があることに留意されたい。
510において、エラー値は、データセグメント内において決定されたエラー位置に基づいて生成される。データセグメントに1つのエラーが存在する場合、エラー値は単にシンドロームである。したがって、この発明の例においては、エラー値、すなわちY0は以下のとおりである。
Figure 2005135572
データセグメントに2つのエラーが存在する場合、エラー値、すなわちY0およびY1は、以下の式を用いて決定することができる。
Figure 2005135572
次に、Y0およびY1のために式(9)が解かれる。
Figure 2005135572
0およびY1を計算するには2回の乗算演算と2回の除算演算とが必要とされる可能性があることに留意されたい。代替的には、Y0およびY1は4回の乗算演算と1回の反転演算とを用いて計算されてもよい。
512において、データセグメントにおけるエラーは、エラー値を用いて訂正することができる。より特定的には、データセグメントにおける位置にある誤ったデータが、510において決定された位置に対するエラー値で乗算されて、データセグメント内の位置に対する正しいデータが生成される。
上述のように、プロセス502は別のデータセグメントについて繰返されてもよい。より特定的には、具体的な一実施例においては、エンティティ202(図2)の各データセグメントはプロセス502に従って処理される。
具体的な実施例を記載してきたが、この発明の精神および/または範囲から逸脱することなくさまざまな変更を加えることができる。したがって、この発明は、添付の図面に示されかつ上記に述べられる特定の形態に限定されるものと解釈されるべきではない。
例示的な記憶装置に接続される例示的なホスト端末を示す図である。 データブロック、冗長ブロック、巡回冗長検査コードの組を有する例示的なエンティティを示す図である。 図2の例示的なエンティティの部分を示す図である。 記憶媒体から検索されたデータを訂正する例示的なプロセスを示す図である。 データブロックの数が冗長ブロックの数よりも多い場合にデータを訂正する例示的なプロセスを示す図である。
符号の説明
102 ホスト端末、104 記憶装置、106 記憶媒体、108 チャネルおよび読出/書込ヘッド、110 プロセッサ、112 エラー検出/訂正ユニット、114 データバッファ、116 冗長ブロックエンコーダ/デコーダ、118 CRCエンコーダ/デコーダ。

Claims (45)

  1. 記憶媒体から検索されたデータにおけるエラーを訂正する方法であって、
    前記記憶媒体から複数のデータブロックを検索するステップと、
    前記複数のデータブロックに関連付けられる複数の冗長ブロックを前記記憶媒体から検索するステップと、
    前記記憶媒体から検索された前記複数のデータブロックから、エラーを有するデータブロックの数を決定するステップと、
    前記エラーを有するデータブロックの数が前記記憶媒体から検索された冗長ブロックの数を上回るかどうかを判断するステップと、
    前記エラーを有するデータブロックの数が前記冗長ブロックの数を上回る場合、データセグメントにおける前記データブロックを訂正するステップとを含み、データセグメントは前記記憶媒体から検索された前記複数のデータブロックの各々の一部分からのデータを含む、方法。
  2. 前記エラーを有するデータブロックの数が前記冗長ブロックの数を超えない場合、前記冗長ブロックを用いて前記データブロックを訂正するステップをさらに含む、請求項1に記載の方法。
  3. エラーを有するデータブロックの数を決定するステップは、
    検索されたデータブロックに関連付けられるチェックサムを前記記憶媒体から検索するステップと、
    前記検索されたデータブロックに基づいて新しいチェックサムを生成するステップと、
    前記検索されたデータブロックがエラーを有するかどうかを判断するために前記検索されたチェックサムを前記新しいチェックサムと比較するステップとを含む、請求項1に記載の方法。
  4. 前記チェックサムは巡回冗長コードである、請求項3に記載の方法。
  5. データセグメントにおける前記データブロックを訂正するステップは、データセグメントについて、
    a)シンドロームを得るステップと、
    b)前記得られたシンドロームに基づいてエラー位置の多項式を生成するステップと、
    c)前記エラー位置の多項式を用いて前記データセグメント内のエラー位置を決定するステップと、
    d)前記データセグメント内において前記決定されたエラー位置に基づいてエラー値を生成するステップと、
    e)前記生成されたエラー値を用いて前記データセグメント内の前記決定されたエラー位置におけるデータを訂正するステップとを含む、請求項1に記載の方法。
  6. a)はさらに、
    前記検索されたデータブロックに基づいて1つ以上の新しい冗長ブロックを生成するステップと、
    前記1つ以上の新しい冗長ブロックと前記検索された冗長ブロックとに基づいて1つ以上の残余ブロックを生成するステップと、
    データセグメントのために、前記1つ以上の残余ブロックに基づいてシンドロームを生成するステップとを含む、請求項5に記載の方法。
  7. データセグメントに対する前記残余ブロックが0である場合、
    前記データセグメントにエラーがないと判断するステップと、
    別のデータセグメントについてa)〜e)を繰返すステップとをさらに含む、請求項6に記載の方法。
  8. b)は、前記得られたシンドロームと前記エラー位置の多項式の係数とに基づいて前記データセグメントに2つ未満のエラーが存在するかどうかを判断するステップを含む、請求項5に記載の方法。
  9. 前記データセグメントに2つ未満のエラーが存在する場合、前記得られたシンドロームのうちの2つのシンドロームに基づいて前記データセグメント内の第1のエラー位置を決定する、請求項8に記載の方法。
  10. 前記得られたシンドロームのうちの2つのシンドロームに基づいて前記データセグメント内における第2のエラー位置を決定するステップをさらに含み、前記第2のエラー位置を決定するのに用いられる前記2つのシンドロームのうち少なくとも1つは、前記第1のエラー位置を決定するのに用いられる前記2つのシンドロームのうち少なくとも1つとは異なり、前記第1のエラー位置と前記第2のエラー位置とが同じであるならば、前記データセグメント内における前記第1のエラー位置が確認される、請求項9に記載の方法。
  11. 前記得られたシンドロームのうちの2つのシンドロームに基づいて前記データセグメント内における第3のエラー位置を決定するステップをさらに含み、前記第3のエラー位置を決定するのに用いられる前記2つのシンドロームのうち少なくとも1つは、前記第1および前記第2のエラー位置を決定するのに用いられる前記2つのシンドロームのうち少なくとも1つとは異なり、前記データセグメント内における前記第1のエラー位置は、前記第1のエラー位置と前記第2のエラー位置と前記第3のエラー位置とが同じであるかどうか確認される、請求項10に記載の方法。
  12. 前記エラー値は前記シンドロームのうちの1つである、請求項9に記載の方法。
  13. 前記データセグメントに2つのエラーが存在する場合、表を用いて前記エラー位置の多項式を解く、請求項8に記載の方法。
  14. 前記データセグメントに2つのエラーが存在する場合、エラーを有する前記データセグメント内の2つのエラー位置を決定するために網羅的な探索を用いて前記エラー位置の多項式を解く、請求項8に記載の方法。
  15. 前記網羅的な探索は、チェックサムによってエラーを有していると示されるデータブロックに対応する前記データセグメントにおける位置で実行される、請求項14に記載の方法。
  16. 前記網羅的な探索を実行することにより、前記データセグメントにおける3つ以上の位置にエラーがあることが見出された場合、前記データセグメントが訂正不可能であると判断する、請求項14に記載の方法。
  17. 前記シンドロームと前記エラー位置とに基づいてエラー値が生成される、請求項14に記載の方法。
  18. e)は、前記決定されたエラー位置のために訂正されたデータを得るために、前記生成されたエラー値と前記決定されたエラー位置におけるデータとを乗算するステップを含む、請求項5に記載の方法。
  19. 別のデータセグメントについてa)〜e)を繰返すステップをさらに含む、請求項5に記載の方法。
  20. 記憶媒体から検索されたデータにおけるエラーを訂正するシステムであって、
    データバッファを含み、前記データバッファは、
    前記記憶媒体から検索された複数のデータブロックと、
    前記記憶媒体から検索された前記複数のデータブロックに関連付けられる複数の冗長ブロックとを含み、前記システムはさらに、
    プロセッサを含み、前記プロセッサは以下のステップを実行するよう構成され、前記以下のステップは、
    前記記憶媒体から検索された前記複数のデータブロックから、エラーを有するデータブロックの数を決定するステップと、
    前記エラーを有するデータブロックの数が前記記憶媒体から検索される冗長ブロックの数を上回るかどうかを判断するステップと、
    前記エラーを有するデータブロックの数が前記冗長ブロックの数を上回る場合、データセグメントにおける前記データブロックを訂正するステップとを含み、データセグメントは、前記記憶媒体から検索された前記複数のデータブロックの各々の一部分からのデータを含む、システム。
  21. 前記エラーを有するデータブロックの数が前記冗長ブロックの数を超えない場合、前記冗長ブロックを用いて前記データブロックを訂正するステップをさらに含む、請求項20に記載のシステム。
  22. 前記データブロックはデータセグメントにおいて以下のステップを実行することによって訂正され、前記以下のステップは、データセグメントについて、
    a)シンドロームを得るステップと、
    b)前記得られたシンドロームに基づいてエラー位置の多項式を生成するステップと、
    c)前記エラー位置の多項式を用いて前記データセグメント内のエラー位置を決定するステップと、
    d)前記データセグメント内における前記決定されたエラー位置に基づいてエラー値を生成するステップと、
    e)前記生成されたエラー値を用いて前記データセグメント内の前記決定されたエラー位置におけるデータを訂正するステップとを含む、請求項20に記載のシステム。
  23. b)は、前記得られたシンドロームと前記エラー位置の多項式の係数とに基づいて前記データセグメントに2つ未満のエラーが存在するかどうかを判断するステップを含む、請求項22に記載のシステム。
  24. 前記データセグメントに2つ未満のエラーが存在する場合、前記得られたシンドロームのうちの2つのシンドロームに基づいて前記データセグメント内の第1のエラー位置を決定する、請求項23に記載のシステム。
  25. 前記エラー値は前記シンドロームのうちの1つである、請求項24に記載のシステム。
  26. 前記データセグメントに2つのエラーが存在する場合、表を用いて前記エラー位置の多項式を解く、請求項23に記載のシステム。
  27. 前記データセグメントに2つのエラーが存在する場合、エラーを有する前記データセグメント内における2つのエラー位置を決定するために網羅的な探索を用いて前記エラー位置の多項式を解く、請求項23に記載のシステム。
  28. 前記網羅的な探索は、チェックサムによってエラーを有していると示されるデータブロックに対応する前記データセグメントにおける位置で実行される、請求項27に記載のシステム。
  29. 前記網羅的な探索を実行することにより前記データセグメントにおける3つ以上の位置にエラーがあることが見出される場合、前記データセグメントが訂正不可能であると判断する、請求項27に記載のシステム。
  30. エラー値は、前記シンドロームと前記エラー位置とに基づいて生成される、請求項27に記載のシステム。
  31. e)は、前記決定されたエラー位置のために訂正されたデータを得るために、前記生成されたエラー値と前記決定されたエラー位置におけるデータとを乗算するステップを含む、請求項22に記載のシステム。
  32. 別のデータセグメントについて、a)〜e)を繰返すステップをさらに含む、請求項22に記載のシステム。
  33. 記憶媒体から検索されたデータにおけるエラーをコンピュータに訂正させるためのコンピュータ実行可能な命令を含むコンピュータ読取り可能な記憶媒体であって、前記記憶媒体は、以下のステップをコンピュータに実行させるための命令を含み、前記以下のステップは、
    前記記憶媒体から複数のデータブロックを検索するステップと、
    前記複数のデータブロックに関連付けられる複数の冗長ブロックを前記記憶媒体から検索するステップと、
    前記記憶媒体から検索された前記複数のデータブロックから、エラーを有するデータブロックの数を決定するステップと、
    前記エラーを有するデータブロックの数が前記記憶媒体から検索された冗長ブロックの数を上回るかどうかを判断するステップと、
    前記エラーを有するデータブロックの数が前記冗長ブロックの数を上回る場合、データセグメントにおける前記データブロックを訂正するステップとを含み、データセグメントは前記記憶媒体から検索された前記複数のデータブロックの各々の一部分からのデータを含む、コンピュータ読取り可能な記憶媒体。
  34. 前記エラーを有するデータブロックの数が前記冗長ブロックの数を超えない場合、前記冗長ブロックを用いて前記データブロックを訂正するステップをさらに含む、請求項33に記載のコンピュータ読取り可能な記憶媒体。
  35. データセグメントにおける前記データブロックを訂正するステップは、
    データセグメントについて、
    a)シンドロームを得るステップと、
    b)前記得られたシンドロームに基づいてエラー位置の多項式を生成するステップと、
    c)前記エラー位置の多項式を用いて前記データセグメント内のエラー位置を決定するステップと、
    d)前記データセグメント内における前記決定されたエラー位置に基づいてエラー値を生成するステップと、
    e)前記生成されたエラー値を用いて前記データセグメント内の前記決定されたエラー位置におけるデータを訂正するステップとを含む、コンピュータ読取り可能な記憶媒体。
  36. b)は、前記得られたシンドロームと前記エラー位置の多項式の係数とに基づいて前記データセグメントに2つ未満のエラーが存在するかどうかを判断するステップを含む、請求項35に記載のコンピュータ読取り可能な記憶媒体。
  37. 前記データセグメントに2つ未満のエラーが存在する場合、前記得られたシンドロームのうちの2つのシンドロームに基づいて前記データセグメント内における第1のエラー位置を決定する、請求項36に記載のコンピュータ読取り可能な記憶媒体。
  38. 前記エラー値は前記シンドロームのうちの1つである、請求項37に記載のコンピュータ読取り可能な記憶媒体。
  39. 前記データセグメントに2つのエラーが存在する場合、テーブルを用いて前記エラー位置の多項式を解く、請求項36に記載のコンピュータ読取り可能な記憶媒体。
  40. 前記データセグメントに2つのエラーが存在する場合、エラーを有する前記データセグメント内における2つのエラー位置を決定するために網羅的な探索を用いて前記エラー位置の多項式を解く、請求項36に記載のコンピュータ読取り可能な記憶媒体。
  41. 前記網羅的な探索は、チェックサムによってエラーを有していると示されるデータブロックに対応する前記データセグメントにおける位置で実行される、請求項40に記載のコンピュータ読取り可能な記憶媒体。
  42. 前記網羅的な探索を実行することにより前記データセグメントにおける3つ以上の位置にエラーがあることが見出された場合、前記データセグメントが訂正不可能であると判断する、請求項40に記載のコンピュータ読取り可能な記憶媒体。
  43. エラー値は、前記シンドロームと前記エラー位置とに基づいて生成される、請求項40に記載のコンピュータ読取り可能な記憶媒体。
  44. e)は、前記決定されたエラー位置のために訂正されたデータを得るために、前記生成されたエラー値と前記決定されたエラー位置におけるデータとを乗算するステップを含む、請求項35に記載のコンピュータ読取り可能な記憶媒体。
  45. 別のデータセグメントについて、a)〜e)を繰返すステップをさらに含む、請求項35に記載のコンピュータ読取り可能な記憶媒体。
JP2004296539A 2003-10-10 2004-10-08 記憶媒体から検索されたデータにおけるエラーを訂正する方法およびシステムならびにコンピュータ実行可能な命令を含むコンピュータ読取り可能な記憶媒体 Pending JP2005135572A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US51065703P 2003-10-10 2003-10-10
US10/688,027 US7228467B2 (en) 2003-10-10 2003-10-17 Correcting data having more data blocks with errors than redundancy blocks

Publications (1)

Publication Number Publication Date
JP2005135572A true JP2005135572A (ja) 2005-05-26

Family

ID=34316857

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004296539A Pending JP2005135572A (ja) 2003-10-10 2004-10-08 記憶媒体から検索されたデータにおけるエラーを訂正する方法およびシステムならびにコンピュータ実行可能な命令を含むコンピュータ読取り可能な記憶媒体

Country Status (3)

Country Link
US (1) US7228467B2 (ja)
EP (1) EP1523100A1 (ja)
JP (1) JP2005135572A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2021125089A (ja) * 2020-02-07 2021-08-30 Tdk株式会社 メモリコントローラ及びフラッシュメモリシステム

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7694208B2 (en) * 2005-12-20 2010-04-06 Quantum Corporation Error correction algorithm using interleaved parity check and Reed-Solomon code
JP4891704B2 (ja) * 2006-08-28 2012-03-07 株式会社東芝 半導体記憶装置
US20090070655A1 (en) * 2007-09-11 2009-03-12 Silicon Motion, Inc. Method for Generating an ECC Code for a Memory Device
JP5259343B2 (ja) * 2008-10-31 2013-08-07 株式会社東芝 メモリ装置
US10601448B2 (en) * 2017-06-16 2020-03-24 International Business Machines Corporation Reduced latency error correction decoding

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB1053174A (ja) * 1964-04-06
US3860907A (en) * 1973-06-21 1975-01-14 Ibm Data resynchronization employing a plurality of decoders
US4782490A (en) * 1987-03-16 1988-11-01 Cythera Corporation Method and a system for multiple error detection and correction
US5136592A (en) * 1989-06-28 1992-08-04 Digital Equipment Corporation Error detection and correction system for long burst errors
US5905740A (en) * 1997-04-08 1999-05-18 Seagate Technology, Inc. Apparatus and method for error correction
US6845475B1 (en) * 2001-01-23 2005-01-18 Symbol Technologies, Inc. Method and apparatus for error detection
US7290197B2 (en) * 2003-06-03 2007-10-30 Quantum Corporation Correcting data using redundancy blocks

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2021125089A (ja) * 2020-02-07 2021-08-30 Tdk株式会社 メモリコントローラ及びフラッシュメモリシステム
JP7400514B2 (ja) 2020-02-07 2023-12-19 Tdk株式会社 メモリコントローラ及びフラッシュメモリシステム

Also Published As

Publication number Publication date
US20050081131A1 (en) 2005-04-14
US7228467B2 (en) 2007-06-05
EP1523100A1 (en) 2005-04-13

Similar Documents

Publication Publication Date Title
JP3966993B2 (ja) 積符号の誤り訂正および並行検査
JP4598711B2 (ja) 誤り訂正装置
US6560747B1 (en) Error counting mechanism
KR100989532B1 (ko) 플래쉬 에러 정정
JP4152887B2 (ja) リニアブロックコードに関する消去箇所−及び−単一−エラー訂正デコーダ
US7076723B2 (en) Error correction codes
US8429489B2 (en) Data retrieval from a storage device using a combined error correction and detection approach
JP2008165808A (ja) 誤り訂正確率を減らすエラー訂正回路、その方法及び前記回路を備える半導体メモリ装置
JP2004282737A (ja) 記憶媒体から検索されたデータを検証する方法およびシステム、ならびにコンピュータ可読記憶媒体
US10298272B2 (en) Post-decoding error check with diagnostics for product codes
JP2009295273A (ja) 誤り訂正符号エンティティのための消失訂正のコンピュータ実現化方法
JP4790790B2 (ja) 誤り検出訂正回路及び半導体メモリ
JP4733403B2 (ja) 復号器、データ記憶装置およびデータの誤り訂正の方法
US6009550A (en) PBA recovery apparatus and method for interleaved reed-solomon codes
JP2004362758A (ja) 記憶媒体から検索されたデータの誤りを訂正するシステムおよび方法、ならびにコンピュータにこれらの誤りを訂正させるためのコンピュータ実行可能な命令を含むコンピュータ読取可能な記憶媒体
US11323138B1 (en) Reed-Solomon code soft-decision decoding method and device
JP2001196942A (ja) インターリーブ型符号ワードにおける誤りを見つけ出す冗長システム及び方法
JP2005135572A (ja) 記憶媒体から検索されたデータにおけるエラーを訂正する方法およびシステムならびにコンピュータ実行可能な命令を含むコンピュータ読取り可能な記憶媒体
US20040078746A1 (en) Error correction method and reproduction apparatus
JP2010152960A (ja) エラー訂正回路及び記憶装置
JP2004140816A (ja) 誤り訂正方法および再生装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20071004

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080729

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20081028

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090224

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20090714