JP2004282737A - 記憶媒体から検索されたデータを検証する方法およびシステム、ならびにコンピュータ可読記憶媒体 - Google Patents

記憶媒体から検索されたデータを検証する方法およびシステム、ならびにコンピュータ可読記憶媒体 Download PDF

Info

Publication number
JP2004282737A
JP2004282737A JP2004064267A JP2004064267A JP2004282737A JP 2004282737 A JP2004282737 A JP 2004282737A JP 2004064267 A JP2004064267 A JP 2004064267A JP 2004064267 A JP2004064267 A JP 2004064267A JP 2004282737 A JP2004282737 A JP 2004282737A
Authority
JP
Japan
Prior art keywords
data
rows
generated
storage medium
ecc
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
JP2004064267A
Other languages
English (en)
Inventor
George A Saliba
ジョージ・エイ・サリバ
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 JP2004282737A publication Critical patent/JP2004282737A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • 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
    • 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
    • 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
    • G11B2020/1836Error detection or correction; Testing, e.g. of drop-outs by adding special lists or symbols to the coded information using a Reed Solomon [RS] code
    • 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
    • G11B2020/1843Error detection or correction; Testing, e.g. of drop-outs by adding special lists or symbols to the coded information using a cyclic redundancy check [CRC]

Landscapes

  • Engineering & Computer Science (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Theoretical Computer Science (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Detection And Correction Of Errors (AREA)
  • Signal Processing For Digital Recording And Reproducing (AREA)
  • Error Detection And Correction (AREA)

Abstract

【課題】 誤り訂正符号を用いて記憶媒体に記憶されたデータ内の誤りを検証する。
【解決手段】 記憶媒体から検索されたデータ内の誤りが、記憶媒体から複数のデータブロックを検索することにより検証される。多数のデータブロックからのデータを有するデータセットが選択される。1以上の誤り訂正符号(ECC)が記憶媒体から検索される。複数のチェックサムが記憶媒体から検索される。検索された、誤りを有するデータブロックは、データブロックに対応するチェックサムを用いて識別される。誤りを有するデータブロックの数がデータセット用のECCの数より大きい場合、この識別されたデータブロックに対応するデータセット内の第1の組の行が選択される。第1の組の行についてのデータは、データセット用のECCを用いて生成され、誤りを有するデータブロックに対応する行は、第1の組の行についての生成されたデータに基づいて検証される。
【選択図】 図6

Description

1.発明の分野
この出願は一般に、記憶媒体にデータを記憶させることに関し、より特定的には、記憶媒体に記憶されたデータにおける誤りを検証するために誤り訂正符号を使用することに関する。
2.関連技術
データは、記憶装置内の記憶媒体へデータを書込むことによって、記憶装置に記憶される。記憶されたデータは後に、記憶媒体からデータを読出すことによって、記憶装置から検索可能である。しかしながら、多くの理由により、記憶装置から検索されたデータに誤りが存在する、つまり、記憶されたデータが検索できないかまたは記憶媒体に元々記憶されたデータとは異なる場合がある。たとえば、記憶媒体上の記憶されたデータの一部が時を経て劣化し、記憶されたデータのその部分を後で適正に読出すことができなくなる場合がある。
そのような誤りを訂正する従来の手法では、誤り訂正符号(ECC)がデータ用に生成され、データとともに記憶媒体に記憶される。記憶されたデータが後に検索されて誤りが検出されると、ECCを用いて検索されたデータを訂正することができる。
ECCを用いるあるアプローチでは、データがアレイとなって構成され、ECCがそのデータ用にそのアレイの2つの次元において(たとえばアレイの行および列に沿って)生成される。これらは通常、2次元ECCと呼ばれる。このアプローチの1つの欠点は、アレイのサイズが増大するにつれ、ECCを生成するため、および検索されたデータを訂正するために必要な時間の量も増大する、ということである。
ECCを用いる別のアプローチでは、ECCはデータブロック用に生成され、記憶媒体に記憶される際にデータブロック内に分散される。データブロック内に分散されたECCの位置を記憶する必要があるため、このアプローチの1つの欠点は、それがECC専用のオーバーヘッドの量を増大させることであり、それは記憶装置の総記憶容量を減少させる場合がある。
加えて、ECCを用いて誤りを訂正するための従来の手法では、記憶媒体にデータを記憶させるために使用可能なデータブロックのサイズは、予想される誤りのサイズによって制限され得る。より特定的には、データブロックは通常、予想される誤りの平均サイズに対応するようサイズ変更される。このため、小さいサイズの誤りが予想される場合には小さいサイズのデータブロックが使用され、大きいサイズの誤りが予想される場合には大きいサイズのデータブロックが使用される。
しかしながら、多くの理由により、予想される誤りの平均サイズに対応していないデータブロックサイズを有することが望ましい場合がある。たとえば、大量のデータが通常、記憶媒体に記憶され、記憶媒体から検索される場合には、大きいデータブロックが、アクセス時間およびオーバーヘッドを減らすために、ある意味では望ましい。しかしながら、誤りの平均サイズがデータブロックのサイズに対して小さい場合には、誤り訂正は比較的
非効率的になる。なぜなら、小さい誤りに対してもデータブロック全体を訂正する必要があるためである。
概要
記憶媒体から検索されたデータ内の誤りが、記憶媒体から複数のデータブロックを検索することによって検証される。多数のデータブロックからのデータを有するデータセットが選択され、データセットはデータブロックに対応する複数の行を含み、1行は、その行に対応する1データブロックからのデータを有する。1つ以上の誤り訂正符号(ECC)が記憶媒体から検索され、1つ以上のECCはデータセットに対応する。複数のチェックサムが記憶媒体から検索され、1チェックサムは1データブロックに対応する。記憶媒体から検索された、誤りを有するデータブロックは、データブロックに対応するチェックサムを用いて識別される。誤りを有するとして識別されたデータブロックの数がデータセット用のECCの数より大きい場合、誤りを有するとして識別されたデータブロックに対応するデータセット内の第1の組の行が選択され、第1の組の行における行の数は、データセット用のECCの数と等しく、誤りを有するとして識別されたデータブロックの数より小さい。第1の組の行についてのデータは、データセット用のECCを用いて生成され、誤りを有するとして識別されたデータブロックに対応する行は、第1の組の行についての生成されたデータに基づいて検証される。
詳細な説明
以下の説明は多数の特定の構成、パラメータなどを述べている。しかしながら、そのような説明はこの発明の範囲に対する限定としては意図されておらず、その代わり、例示的な実施例をより良く説明するために提供されていることが認識されるべきである。
図1を参照すると、ホスト端末102が記憶装置104に接続されて図示されている。ホストコンピュータ102は、パーソナルコンピュータ、ワークステーション、サーバなどの任意の種類のコンピュータであり得る。記憶装置104は、テープドライブ、ハードドライブなどの任意の種類の記憶ドライブであり得る。ホスト端末102は任意の数の記憶装置104に接続可能であること、および、任意の数のホスト端末102が1つ以上の記憶装置104に接続可能であることが認識されるべきである。
図1を引続き参照すると、例示的な一実施例では、記憶装置104は、記憶装置104に記憶されたデータ内の誤りを検出および訂正するよう構成されている。より具体的には、記憶装置104に記憶されたデータが検索される際、記憶装置104は、サイクリック・リダンダンシー・チェック(CRC)符号などの誤り訂正符号(ECC)およびチェックサムを用いて、検索されたデータが元々記憶装置104に記憶されたデータと異なるかどうか、または記憶されたデータが検索不可能かどうかといった検索されたデータ内の誤りを検出および訂正するよう構成されている。
図1に示す実施例では、記憶装置104は、記憶媒体106、チャネルおよび読出/書込ヘッド108、プロセッサ110、および誤り検出/訂正ユニット112を含む。記憶装置104では、データは記憶媒体106に記憶される。読出/書込ヘッド108は、記憶媒体106からデータを読出し、および/または記憶媒体106へデータを書込む。プロセッサ110は、チャネルおよび読出/書込ヘッド108の動作を含め、記憶装置104の動作を制御する。以下により詳細に説明するように、誤り検出/訂正ユニット112は、記憶媒体106に記憶されたデータ内の誤りを検出および訂正する。
この例示的な実施例では、誤り検出/訂正ユニット112は、データバッファ114、
ECCエンコーダ/デコーダ116、およびCRCエンコーダ/デコーダ118を含む。データが記憶媒体106に記憶される際、データはホスト端末102から受信されてデータバッファ114へ書込まれる。ECCエンコーダ/デコーダ116およびCRCエンコーダ/デコーダ118は、データバッファ114内のデータ用にECCおよびCRC符号を生成する。読出/書込ヘッド108は次に、データと生成されたECCおよびCRC符号とを、記憶媒体106へ書込む。
データが記憶媒体106から読出される際、読出/書込ヘッド108は、データとECCおよびCRC符号とを、記憶媒体106からデータバッファ114へ読出す。以下により詳細に説明するように、記憶媒体106から読出されたデータ内のどの誤りも、ECCおよびCRC符号を用いて検出および訂正される。データは次にホスト端末102へ転送されてもよい。
例示的な一実施例では、データは、ホスト端末102と記憶装置104との間を、キャッシュに記憶されるデータレコードの状態で転送される。データレコードは、2キロバイト、4キロバイト、6キロバイトなどの予め定められた長さのデータブロックに分割される。しかしながら、さまざまな長さのデータブロックが使用されてもよいことが認識されるべきである。
この例示的な実施例では、データブロックが記憶媒体106から検索された後で、検索されたデータブロック内の誤りを訂正するためにECCを使用する。より具体的には、データブロックを記憶媒体106に記憶させる前に、多数のデータブロックからのデータを有するデータセット用にECCが生成され、データブロックとともに記憶媒体106に記憶される。以下により詳細に説明するように、データブロックが後に検索される際、誤りを有するデータセットが、データセット内のデータおよびデータセットに対応するECCに基づいて識別可能であり、検索されたデータセット内の誤りは、検索されたデータセット内のデータが、データが元々記憶媒体106に記憶されたときのデータセット内のデータとは異なることを示す。誤りを有するとして識別されたデータセット内のデータは次に、データセットに対応するECCを用いて訂正される。
加えて、この例示的な実施例では、検索されたデータブロック内の誤りを検出するためにCRC符号を使用し、検索されたデータブロック内の誤りは、検索されたデータブロック内のデータが、データが元々記憶媒体106に記憶されたときのデータブロック内のデータとは異なることを示す。より具体的には、データブロックを記憶媒体106に記憶させる前に、そのデータブロック用にCRC符号が生成され、データブロックとともに記憶媒体106に記憶される。データブロックが後に検索される際、検索されたデータブロック用に新しいCRC符号が生成される。検索されたデータブロックを記憶媒体106に記憶させる前に、新しいCRC符号は次に、検索されたデータブロックに対応し、検索されたデータブロック用に元々生成された、記憶媒体106から検索されたCRC符号と比較される。新しいCRC符号と検索されたCRC符号とが異なる場合には、そのデータブロックについて誤りが検出される。
例示的な一実施例では、1組のデータブロック、1組のECC、および1組のCRC符号は、「エンティティ」と呼ばれるグループとして、ともに読出および書込可能である。図2を参照すると、16のデータブロック、4ブロックのECC、および20のCRC符号を有するエンティティの論理データアレイ202が図示されている。しかしながら、エンティティはさまざまな数のデータブロック、ECC、およびCRC符号を含み得ることが認識されるべきである。
図2に示すように、データアレイ202は行204および列206を含む。より具体的
には、データアレイ202は、データ行208、ECC行210、データ列212、およびCRC列214を含む。この例示的な実施例では、1データ行208は1データブロックに対応する。1ECC行210はECCの1ブロックに対応する。1データ列212は、多数のデータブロックからのデータを有する1データセットに対応する。1CRC列214は、データ行208およびECC行210用の1組のCRC符号に対応する。
例示的な一実施例では、論理データアレイ202は、エンティティがデータバッファ114(図1)に記憶される形を示す。しかしながら、データアレイ202は図2および図3に示す形で物理的に存在する必要はないことが認識されるべきである。データアレイ202内のデータ、より特定的にはデータ行208およびデータ列212によって規定されるデータは、連続している必要がないことも認識されるべきである。その代わり、例示的な一実施例では、ホスト端末102(図1)から受信されたデータはインタリーブされている。したがって、データ行208およびデータ列212によって規定されるデータは、ホスト端末102(図1)から受信される別個のファイルの一部に対応可能である。
図2は、データアレイ202のデータ行208、ECC行210、データ列212、およびCRC列214間の論理的な関係を示している。図3を参照すると、データ行208、ECC行210、データ列212、およびCRC列214間の論理的な関係をより明確に示すために、データアレイ202の一部がより詳細に示されている。
図3に示すように、CRC列214の1つのCRC符号は、データアレイ202の1つの行204に対応しており、1つの行204における誤りを検出するために使用される。たとえば、CRC符号C1は、第1のデータブロックに対応しているデータアレイ202の第1のデータ行208に対応する。このため、第1のデータ行208における誤りを検出するために、記憶媒体106(図1)から第1のデータ行208を検索した後で、検索された第1のデータ行208用に新しいCRC符号C1′が生成される。新しいCRC符号C1′は次に、検索された第1のデータ行208に対応する、記憶媒体106(図1)から検索されたCRC符号(つまりCRC符号C1)と比較される。新しいCRC符号C1′と検索されたCRC符号C1とが異なる場合には、第1のデータ行208について誤りが検出される。
図3に同様に示すように、ECC行210内のECCは、多数のデータブロックからのデータを有するデータセットに対応するデータ列212に対応しており、データ列212における誤りを訂正するために使用されてもよい。たとえば、ECC E1,1、E2,1、E3,1、およびE4,1は第1のデータ列212に対応しており、第1のデータ列212(つまりデータD1,1、D2,1、…、Dj,1)における任意の誤りを訂正するために使用されてもよい。ECC E1,i、E2,i、E3,i、およびE4,iは最後のデータ列212に対応しており、最後のデータ列212(つまりデータD1,i、D2,i、…、Dj,i)における任意の誤りを訂正するために使用されてもよい。
この例示的な実施例では、1データ列212における1つのセル(つまりデータセル)は、1データブロックの1バイトを表わす。このため、データアレイ202の1データ列212およびECC行210内の1つのセル(つまりECCセル)は、データ行208のデータブロックの1バイトに対応している。
たとえば、第1のデータ列212およびECC E1,1は、データ行208におけるデータブロックの1番目のバイト(つまりデータD1,1、D2,1、…、Dj,1)に対応する。このため、ECC E1,1は、第1のデータ列212(つまりデータD1,1、D2,1、…、Dj,1)におけるデータセルを訂正するために使用されてもよい。第2のデータ列212およびECC E1,2は、データ行208におけるデータブロックの2番目のバイト(つ
まりデータD1,2、D2,2、…、Dj,2)に対応する。このため、ECC E1,2は、第2のデータ列212(つまりデータD1,2、D2,2、…、Dj,2)におけるデータセルを訂正するために使用されてもよい。
加えて、この例示的な実施例では、1データ列212における単一のデータセルを訂正するためにECCを使用してもよい。このため、1データ列212につき、合計4つのデータセルが、そのデータ列212内の4つのECCセルを使用して訂正可能である。たとえば、ECC E1,1は、第1のデータ列212における1データセル(つまりデータD1,1、D2,1、…、またはDj,1)を訂正するために使用されてもよい。ECC E2,1は、第1のデータ列212における第2のデータセルを訂正するために使用されてもよい。ECC E3,1は、第1のデータ列212における第3のデータセルを訂正するために使用されてもよい。ECC E4,1は、第1のデータ列212における第4のデータセルを訂正するために使用されてもよい。
この例示的な実施例では、1データ列212用のECCは、そのデータ列212内のデータに基づいて生成される。たとえば、ECC E1,1、E2,1、E3,1、およびE4,1は、第1のデータ列212(つまりデータD1,1、D2,1、…、Dj,1)に基づいて生成される。上述のように、図1を参照すると、ECCはECCエンコーダ116によって生成される。また、上述のように、ECCは最初、ホスト端末102から受信されたデータ用に生成される。生成されたECCおよび受信されたデータは次に、記憶媒体106に記憶される。
図3を再度参照すると、例示的な一実施例では、ECC行210内のECCは、データ列212に基づいて生成されたリード−ソロモン符号である。たとえば、ECC E1,1は、第1のデータ列212(つまりデータD1,1、D2,1、…、Dj,1)に基づいて生成されたリード−ソロモン符号である。リード−ソロモン符号のより詳細な説明については、ここにその全体を引用により援用する、ピーターソンおよびウェルドン(Peterson & Weldon)著「誤り訂正符号(Error Correcting Codes)」、第2版、MITプレス、1972年を参照されたい。しかしながら、さまざまな種類の誤り訂正符号が使用されてもよいことが認識されるべきである。
この例示的な実施例では、ECC E2,1、E3,1、およびE4,1も、第1のデータ列212(つまりデータD1,1、D2,1、…、Dj,1)に基づいて生成されたリード−ソロモン符号である。ECC E1,1、E2,1、E3,1、およびE4,1は同じ組のデータ(つまり第1のデータ列212)に基づいて生成されているものの、各ECCは互いに関して固有のものである。より具体的には、1組のデータに基づいてリード−ソロモン符号を生成する際、その1組のデータの要素の排他的論理和(XOR)演算をさまざまな組合せで行なうためにマトリックスが使用される。このため、この例示的な実施例では、ECC E1,1、E2,1、E3,1、およびE4,1は異なるマトリックスを用いて生成される。たとえば、E1,1、E2,1、E3,1、およびE4,1はそれぞれ、第1、第2、第3、および第4のマトリックスを用いて生成される。
上述のように、データアレイ202は、行204内の誤りを検出するために使用可能なCRC列214を含む。しかしながら、CRC列214は、誤りが存在する列206を示さない。たとえば、CRC C2を用いて、第2のデータ行208内のどこかにある誤りを検出することは可能であるが、その誤りは、第2のデータ行208(つまりデータD2,1、D2,2、…、D2,i)における任意の1つ以上のデータセルに存在する可能性がある。
このため、例示的な一実施例では、ECC行210内のECCは、多数のデータブロックからのデータを有する1データセットに対応している1データ列212が誤りを有する
かどうかを判断するために使用される。より具体的には、リード−ソロモン符号が使用される場合、排他的論理和(XOR)演算を含む数学的計算が1データ列内の1つのECCおよびデータに対して行なわれ、不良の列が判断される。リード−ソロモン符号の一特性に従って、ECCが計算されたときとデータ列内のデータが同じであるならば、XOR演算の結果は0(ゼロ)となるはずである。このため、XOR演算の結果を用いて、データ列が誤りを有するかどうかを判断可能である。
たとえば、データアレイ202が、記憶媒体106(図1)から検索されたデータ、ECC、およびCRC符号を図示していると仮定する。このため、ECC行210内のECCおよびCRC列214内のCRC符号は、元々ホスト端末102(図1)から受信されたデータに基づいて、以前に生成されたものである。上述のように、第1のデータ列212に誤りがあるかどうかを判断するために、XOR演算がECC E1,1およびデータD1,1、D2,1、…、またはDj,1に対して行なわれる。このため、ECC E1,1が元々生成されたときからデータD1,1、D2,1、…、またはDj,1が変わっていなかった場合には、XOR演算はゼロ結果を生み出すはずである。このため、例示的な一実施例では、1データ列212の1ECCおよびそのデータ列212のXOR演算がゼロ結果を生み出す場合、そのデータ列212は誤りを有さないと判断される。XOR演算がゼロではない結果を生み出す場合、そのデータ列212は誤りを有すると判断される。
別の例示的な実施例では、1データ列212に基づいて新しいECCが生成される。新しく生成されたECCは次に、検索されたECC(つまり、ホスト端末102(図1)から受信されたデータから元々生成された、記憶媒体106(図1)から検索されたECC)と比較される。比較の結果を用いて、そのデータ列212が誤りを有するかどうかが判断可能である。
たとえば、ECC E1,1が第1のデータ列212(つまりD1,1、D2,1、…、またはDj,1)から生成され、ECC E1,1および第1のデータ列212が記憶媒体106(図1)に記憶されていると仮定されたい。ここで、ECC E1,1および第1のデータ列212が記憶媒体106(図1)から検索されると仮定されたい。検索された第1のデータ列212が任意の誤りを有するかどうかを判断するために、検索された第1のデータ列212に基づいて、新しいECC(つまりECC E1,1′)が生成される。E1,1′とE1,1とは次に比較される。E1,1′とE1,1とが同じ場合、検索された第1のデータ列212には誤りがない。E1,1′とE1,1とが異なる場合、検索された第1のデータ列212には誤りがある。
上述のように、例示的な一実施例では、ECC E2,1、E3,1、およびE4,1も第1のデータ列212から生成される。このため、1データ列212に誤りが存在するかどうかを判断する精度を高めるために、1データ列212に対応する2つ以上の新しいECCを、検索されたデータ列212に基づいて生成することが可能である。
たとえば、新しいECC E2,1(つまりE2,1′)を第1のデータ列212から生成し、検索されたECC E2,1と比較することが可能である。加えて、またはこれに代えて、新しいECC E3,1(つまりE3,1′)を第1のデータ列212から生成し、検索されたECC E3,1と比較することが可能である。加えて、またはこれに代えて、新しいECC E4,1(つまりE4,1′)を第1のデータ列212から生成し、検索されたECC E4,1と比較することが可能である。
また、上述のように、ECC E1,1、E2,1、E3,1、およびE4,1は異なるマトリックスから生成される。たとえば、E1,1、E2,1、E3,1、およびE4,1がそれぞれ、第1、第2、第3、および第4のマトリックスから生成されると仮定されたい。このため、上述の
例では、E1,1′、E2,1′、E3,1′およびE4,1′もそれぞれ、第1、第2、第3、および第4のマトリックスから生成される。
図4を参照すると、例示的な一実施例では、減少した論理データアレイ402が、論理データアレイ202(図2)から形成される。この例示的な実施例では、減少した論理データアレイ402は、誤りを有するとして識別されたデータアレイ202(図2)内のデータ列212のみを含む。ECC行210が次に、誤りを有するとしてCRC列214により識別されたデータ行208を訂正するために使用される。減少したデータアレイ402はデータアレイ202(図2)よりも小さいため、減少したデータアレイ402は、データアレイ202(図2)よりも短い時間で、および少ない数値計算で訂正可能である。
また、これに代えて、例示的な一実施例では、誤りを有するとして識別されたデータアレイ202(図2)内のデータ列212は、論理データアレイ402を形成することなく訂正される。このため、データアレイ202(図2)内の1データ列212は、それが誤りを有するかどうかを判断するために調べられる。そのデータ列212が誤りを有するとして識別される場合には、データ列212は、別のデータ列212を調べる前に訂正される。
ここで図5を参照すると、記憶媒体に記憶されたデータを訂正する例示的なプロセス500が示されている。より具体的には、図5は、コンピュータが実行可能な、記憶装置の動作を指示する命令を含むコンピュータプログラムとして実現される例示的なプロセス500を示す。たとえば、図1を参照すると、図5に示すプロセスは、記憶装置104のプロセッサ110の動作を指示可能である。しかしながら、例示的なプロセス500は、特定用途向け集積回路(ASIC)といったハードウェアにおいて実現可能であることが認識されるべきである。
図5を再度参照すると、この例示的なプロセスでは、記憶装置はテープドライブであり、記憶媒体は磁気テープである。例示のため、ステップ502の前に、データおよびそのデータ用のECCがテープドライブ内のテープに記憶されたと仮定されたい。このため、図5は、テープに記憶されたデータを検索し、検索されたデータ内の任意の誤りを訂正する例示的なプロセスを示している。
より具体的には、ステップ502で、テープから検索されたデータブロック用に新しいECCが生成される。より具体的には、この例示的な実施例では、テープから検索されたデータブロック(つまり“FromTapeEntity.DataBlocks”)が、ECCを生成する(つまり“GenerateECC”)ルーチンへパスされる。結果は“NewECC”として記憶される。
上述のように、および図2に示すように、例示的な一実施例では、1ECC行210は、論理データアレイ202のデータ行208内のデータに対応する。1ECC行210内の各ECCは、1データ列212に対応している、多数のデータ行208からのデータを有する1データセットに対応する。加えて、例示的な一実施例では、論理データアレイ202は、16のデータ行208に対応する16のデータブロック用の、ECC行210に対応するECCの4ブロックを含む。このため、論理データアレイ202が例示的なプロセス500(図5)で使用されると仮定すると、ステップ502(図5)は、テープから検索されたデータ行208に基づいてECCの4つの新しいブロックを生成することに該当する。しかしながら、新しいECCは、全部一斉にというよりもむしろ、一度に1つのデータ列212について生成可能であることが認識されるべきである。
図5を再度参照すると、ステップ504で、新しく生成されたECCブロック、およびテープから検索されたECCブロックに対し、論理XOR演算が行なわれる。より具体的
には、この例示的な実施例では、新しく生成されたECCブロック(つまり“NewECCBlock[I]”)、およびテープから検索されたECC(つまり“FromTape.ECCBlock[I]”)に対し、XORが行なわれる。結果は“XorResult[I]”として記憶される。
上述のように、例示的な一実施例では、16のデータブロック用に4つのECCブロックが使用される。したがって、信頼性追加のため、4つの新しいECCブロックが生成され、4つの新しく生成されたECCブロックおよび4つの検索されたECCブロックに対して、4つのXOR演算が行なわれる。4つのXOR演算の結果は、4つのXorResult変数(つまり、XorResult[0]、XorResult[1]、XorResult[2]、およびXorResult[3])として記憶される。
このため、図5を再度参照すると、ステップ506で、ステップ504での4つのXOR演算の結果に対し、論理和演算が行なわれる。結果は“EntityErrorMap”として記憶される。この例示的なプロセスでは、“EntityErrorMap”変数の各ビットは1データ列212(図2)に対応しており、0ビットは1データ列212(図2)が誤りを有していないことを示し、1ビットは1データ列212(図2)が誤りを有することを示す。1つの新しく生成されたECCブロックおよび1つの検索されたECCブロックを用いて、単一のXOR演算が実行可能であることが認識されるべきであり、その場合、ステップ506は省略可能である。
ステップ508で“EntityErrorMap”変数の1ビットが調べられ、そのビットが0ビットであるかどうかが判断される。上述のように、そのビットが1ビットである場合には、そのビットに対応するデータ列212(図2)は誤りを有する。このため、ステップ510で、誤りを有するとして識別されたデータ列212(図2)(つまり“FromTapeEntity[column]”)は、別のアレイにおける1列にコピーされる(つまり“PackedErrorEntity[PackedColumn]”)。このため、“PackedErrorEntity”アレイは、誤りを有するとして識別された列のみを含む。ステップ512で、変数“PackedColumn”はインクリメントされる。
ステップ514で、“EntityErrorMap”変数が調べられ、調べる必要があるビットおよびデータ列がもっとあるかどうかが判断される。調べられるべきビットおよびデータ列がさらにある場合には、ステップ508が繰返される。
ステップ516で、誤りを有するとして識別されたデータ列が訂正される。より具体的には、この例示的な実施例では、“PackedErrorEntity”アレイは、“PackedErrorEntity”アレイのサイズとともに、アレイを訂正する(つまり“DoGeneralCorrection”)ルーチンへパスされる。
ステップ518、520、および522で、訂正されたアレイ内の訂正された列(つまり“PackedErrorEntity[PackedColumn]”)は、元のアレイ(つまり“FromTapeEntity[Column]”)へ逆にコピーされる。
図2および図4を再度参照すると、上述のように、データアレイ202(図2)および減少したデータアレイ402(図4)は、行204内の誤りを検出するために使用されるチェックサムの列を含む。より特定的には、データアレイ202(図2)および402(図4)はCRC列214を含む。
また、上述のように、データアレイ202(図2)および減少したデータアレイ402(図4)は、多数のECC行210を含み、各ECC行210は1データ列212における単一のセルを訂正するために使用可能である。このため、CRC列214によって誤り
を有するとして示された、データアレイ202(図2)または402(図4)内の行204の数が、ECC行210の数よりも大きい場合には、データアレイ202(図2)または402(図4)を従来の手法でECC行210を用いて訂正することは、通常できない。
たとえば、図2に示す例示的な実施例では、データアレイ202は4つのECC行210を含む。このため、データアレイ202内の5つ以上の行204がCRC列214によって誤りを有するとして示された場合には、データアレイ202を従来の手法でECC行210を用いて訂正することは、通常できない。
しかしながら、CRCは行204内のセルのすべてが誤りを有するとは示さないため、どの単一の列206も、CRC列214によって示されるのと同数の誤りを持たなくてもよい。たとえば、データアレイ202内に誤りを有する行204が5つあることをCRC列214が示す場合、それらの誤りは、どの単一の列206も誤りを有するセル(つまり行)を5つ持たないように、データアレイ202中に分散されてもよい。代わりに、誤りは完全に別々の列206に存在してもよい。
こうして、例示的な一実施例では、CRC列214によって誤りを有するとして示された、データアレイ202(図2)または402(図4)内の行204の数が、ECC行210の数よりも大きい場合、列206は、データアレイ202(図2)または402(図4)を訂正するために個々に処理される。より特定的には、列206は、1列206内の行がCRC列214によって示されるように誤りを有することを検証するために、個々に処理される。
図6を参照すると、誤りを有するとして示された行をECC行よりも多く有するデータアレイを訂正するための例示的なプロセス600が示されている。より特定的には、k個の行が誤りを有し、データアレイがn個のECC行を有することをデータアレイのCRC列が示す場合、kはnよりも大きい。このため、データアレイを従来の手法でECC行を用いて訂正することはできない。
ステップ602で、データアレイ内の1列につき、CRC列によって誤りを有するとして示された1つ以上の行が選択される。選択される行の数はECC行の数と等しい。
ステップ604で、選択された行についてのデータが、ECC行を用いて生成される。非選択行(つまり、ステップ602で選択されなかった、誤りを有するとして識別された行)内のデータは正しいと仮定される。
ステップ606で、選択行についての生成されたデータを用いて、誤りを有するとして示された行を検証する。より特定的には、選択行についての生成されたデータが、元々選択行にあったデータと比較される。これらの行のすべてについて、生成されたデータと元のデータとが同じであるならば、この列の選択行および非選択行のうちのいずれにおいても誤りはない(つまり、この列についての選択行および非選択行内のデータは正しい)。
ステップ608で、誤りを有するとして示されたどの行も、ステップ606で実際には誤りを持っていなかった場合、処理されるべき別の列があれば別の列が処理される。たとえば、図2を参照すると、第1の列206を処理した後で、第2の列206が処理可能である。このように、データアレイ202の各列206が処理可能である。しかしながら、列206はどの順序でも処理可能であることが認識されるべきである。
図4を参照すると、減少したデータアレイ400にプロセス600(図6)を適用する
場合、ステップ606(図6)における判断は決して否定的にはならない。なぜなら、データアレイ400(図4)の各列206は、誤りを有する少なくとも1つの行を含むはずだからである。このため、データアレイ400にプロセス600(図6)を適用する場合、ステップ606および608(図6)は省略可能である。
図6を再度参照すると、ステップ610で、選択行について生成されたデータのうちのいずれかが、元々選択行にあったデータと整合するかどうかについて、判断がなされる。ステップ610で選択行について生成されたデータと元のデータとがどれも整合しない場合には、選択行および非選択行についてのデータは、おそらく正しくない。
このため、ステップ612で、選択行の可能な組合せのすべてが試みられたかどうかについて判断がなされる。ステップ614で、行の別の組合せが選択され、プロセスが繰返される。ステップ616で、処理すべき別の列がある場合には別の列が処理される。
ステップ610で選択行のうちのいずれかについて生成されたデータと元のデータとが同じである場合には、残りの行(つまり、生成されたデータと元のデータとが整合しなかった選択行)について生成されたデータは、これらの行についての正しいデータであり、非選択行についてのデータも正しい。このため、ステップ618で、生成されたデータと元のデータとが整合しなかった選択行内のデータは、これらの行についての生成されたデータと置き換えられる。ステップ620で、これらの行(つまり、訂正されたデータと元のデータとが整合しなかった選択行)用のCRCが再計算される。
ステップ622で、再計算されたCRCを含め、CRCによって誤りを有するとして示された行の数がECC行の数よりも大きいかどうかについて判断がなされる。ステップ624で、誤りを有するとして示された行の数が依然としてECC行の数よりも大きい場合、処理すべき別の列が残っている場合には別の列が処理される。ステップ626で、新しいCRCによって誤りを有するとして示された行の数がECC行の数より大きくない場合、データアレイはここでECC行を用いて訂正可能である。
プロセス600をより明確に説明するため、図2を参照して、データアレイ202は4つのECC行210(つまりn=4)を含み、CRC列214は、5つの行204(たとえば1番目、3番目、5番目、6番目、および16番目の行)が誤りを有する(つまりk=5)ことを示していると仮定されたい。より特定的には、1番目、3番目、5番目、6番目、および16番目の行に対応するデータブロックを検索した後で、検索されたデータブロックの各々に対して新しいCRCが生成されると仮定されたい。検索されたデータブロックを記憶媒体106(図1)に記憶させる前に、新しいCRCは、検索されたデータブロック用に元々生成されたCRCと比較され、これらの行204についての新しいCRCと元々生成されたCRCとが整合しなかった場合、それは、検索されたデータブロック内のデータが元々データブロックに記憶されたデータと同じではないことを示す。
このため、この例では、ステップ602(図6)で、データアレイ202内の1列206につき、誤りを有するとして示された行のうちの4つが選択される。なぜなら、ECC行210が4つあるためである。例示のため、データアレイ202の1番目の列が選択され、1番目の列の3番目、5番目、6番目、および16番目の行が選択されると仮定されたい。
ステップ604(図6)で、1番目の列の3番目、5番目、6番目、および16番目の行に対応する新しいデータが、4つのECC行を用いて生成される。この例では、1番目の列の3番目、5番目、6番目、および16番目の行についての元のデータをそれぞれA、B、C、およびDと仮定し、新しい生成データをA′、B′、C′、およびD′と仮定
されたい。1番目の列内のデータは正しいデータを含むと仮定される。
ステップ606で、生成データ(つまりA′、B′、C′、およびD′)と元のデータ(つまりA、B、C、およびD)とを用いて、3番目、5番目、6番目、または16番目の行が実際に誤りを有するかどうかを判断する。より特定的には、A′、B′、C′、およびD′がA、B、C、およびDと比較される。
ステップ608で、A′、B′、C′、およびD′とA、B、C、およびDとの比較が全データの整合をもたらす場合、1番目の列には誤りはなかった。このため、2番目の列といった別の列が処理される。
ステップ610で、比較されたデータのうちのいずれかが整合したかどうかについて判断がなされる。比較されたデータがどれも整合しなかった場合、次にステップ612で、選択行および非選択行の可能な組合せのすべてがなされたかどうかについて判断がなされる。この例では、誤りを有するとして示された行は5つあり、ECC行は4つあるため、選択行および非選択行の可能な組合せは合計で5つある。より特定的には、以下の表は選択行および非選択行のさまざまな組合せを記載する。
Figure 2004282737
ステップ614で、選択行および非選択行の別の組合せが使用される。この例では、表1に記載された組合せ1を使用した後で、組合せ2が使用可能である。こうして、ステップ614で、1番目の列の3番目の行がここで正しいデータを含むと仮定される。ステップ604を繰返して、1番目、5番目、6番目、および16番目の行についてのデータが、ECC行を用いて生成される。
ステップ616で、すべての組合せが試みられていた場合、別の列が処理される。たとえば、1番目の列を処理した後で、2番目の列が処理可能である。
ステップ610で3番目の列だけについて生成データと元のデータとが整合した(つまりA′=A)と仮定されたい。このため、ステップ618で、5番目、6番目、および16番目の行についてのデータはそれぞれ、B′、C′およびD′と置き換えられる。ステップ620で、5番目、6番目、および16番目の行用のCRCが再計算される。
ステップ622で、再計算されたCRCを含め、CRCによって誤りを有するとして示された行の数が依然としてECC行の数よりも大きいかどうかについて判断がなされる。このため、この例では、5番目、6番目、および16番目の行用の再生成されたCRCのすべてが依然として、これらの行が誤りを有することを示す場合、ステップ624で、処理されるべき別の列がある場合には別の列が処理される。しかしながら、5番目、6番目、および16番目の行用の再生成されたCRCのうちのいずれか1つが、これらの行のど
れにももはや誤りがないことを示す場合、ステップ626で、データアレイはECC行を用いて訂正される。
上述の例は、データアレイが4つのECC行を含み、5つの行が誤りを有するとして示されたことを仮定した。上述のように、データアレイは任意の数のECC行を含むことが可能であり、任意の数の行が誤りを有するとして示され得る。たとえば、データアレイが4つのECC行を含み、6つの行が誤りを有するとして示された場合、誤りを有するとして示された行のうちの4つが選択され、これらの行についてのデータが4つのECC行を用いて生成される。2つの非選択行は次に正しいデータを含むと仮定される。また、上述のように、誤りを有するとして示された行のさまざまな組合せは、列を訂正する際に選択行および非選択行として使用可能である。
例示的な実施例が説明されてきたが、この発明の精神および/または範囲から逸脱することなく、さまざまな変更がなされ得る。したがって、この発明は、図面に示された、および上述された特定の形態に限定されるものとして解釈されるべきではない。
例示的な記憶装置に接続された例示的なホスト端末を示す図である。 例示的な論理データアレイを示す図である。 図2の例示的な論理データアレイの一部を示す図である。 図2の例示的な論理データアレイから派生した、減少した論理データアレイを示す図である。 記憶媒体から検索されたデータを訂正する例示的なプロセスを示す図である。 記憶媒体から検索されたデータ内の誤りを検証する例示的なプロセスを示す図である。
符号の説明
102 ホスト端末、106 記憶媒体、110 プロセッサ、114 データバッファ、204 行。

Claims (27)

  1. 記憶媒体から検索されたデータ内の誤りを検証する方法であって、
    記憶媒体から複数のデータブロックを検索するステップと、
    多数のデータブロックからのデータを有するデータセットを選択するステップとを含み、
    データセットは、データブロックに対応する複数の行を含み、
    1行は、その行に対応する1データブロックからのデータを有し、前記方法はさらに、
    記憶媒体から1つ以上の誤り訂正符号(ECC)を検索するステップを含み、
    1つ以上のECCはデータセットに対応しており、前記方法はさらに、
    記憶媒体から複数のチェックサムを検索するステップを含み、
    1チェックサムは1データブロックに対応しており、前記方法はさらに、
    記憶媒体から検索された、誤りを有するデータブロックを、データブロックに対応するチェックサムを用いて識別するステップを含み、
    誤りを有するとして識別されたデータブロックの数が、データセット用のECCの数よりも大きい場合、
    (a)誤りを有するとして識別されたデータブロックに対応するデータセット内の第1の組の行を選択する(第1の組の行における行の数は、データセット用のECCの数と等しく、誤りを有するとして識別されたデータブロックの数よりも小さい)ステップと、
    (b)データセット用のECCを用いて、第1の組の行についてのデータを生成するステップと、
    (c)第1の組の行についての生成されたデータに基づいて、誤りを有するとして識別されたデータブロックに対応する行を検証するステップとを含む、データ内の誤りを検証する方法。
  2. 検証するステップは、
    第1の組の行についての生成されたデータを、元々第1の組の行にあるデータと比較するステップと、
    生成されたデータと元々第1の組の行にあるデータとがすべて整合する場合、多数のデータブロックからのデータを有する別のデータセットを処理するステップとを含む、請求項1に記載の方法。
  3. 検証するステップは、
    第1の組の行についての生成されたデータを、元々第1の組の行にあるデータと比較するステップと、
    生成されたデータと元々第1の組の行にあるデータがどれも整合しない場合、
    (a)誤りを有するとして識別されたデータブロックに対応するデータセット内の第2の組の行を選択する(第2の組の少なくとも1つの行は第1の組の行とは異なる)ステップと、
    (b)ECCを用いて、第2の組の行についてのデータを生成するステップと、
    (c)第2の組の行についての生成されたデータに基づいて、誤りを有するとして識別されたデータブロックに対応する行を検証するステップとを含む、請求項1に記載の方法。
  4. 検証するステップは、
    第1の組の行についての生成されたデータを、元々第1の組の行にあるデータと比較するステップと、
    生成されたデータと、元々第1の組の行の1つ以上の行にあるデータとが整合し(整合行)、生成されたデータと、元々第1の組の行の1つ以上の行にあるデータとが整合しない(非整合行)場合、
    元々非整合行にあるデータを、生成されたデータと置き換えるステップとを含む、請求項1に記載の方法。
  5. 非整合行に対応するデータブロック用のチェックサムを生成するステップと、
    生成されたチェックサムを用いて、誤りを有するとして識別されたデータブロックの数を判断するステップとをさらに含む、請求項4に記載の方法。
  6. 誤りを有するとして識別されたデータブロックの判断された数が、データセット用のECCの数よりも大きい場合、多数のデータブロックからのデータを有する別のデータセットを処理するステップをさらに含む、請求項5に記載の方法。
  7. 誤りを有するとして識別されたデータブロックの判断された数が、データセット用のECCの数よりも大きくない場合、ECCを用いてデータブロックを訂正するステップをさらに含む、請求項5に記載の方法。
  8. 記憶媒体から検索された複数のデータブロックは、行および列を有する第1の論理データアレイを形成しており、1データブロックは第1の論理データアレイ内の1行に対応し、選択されたデータセットは第1の論理データアレイ内の1列に対応している、請求項1に記載の方法。
  9. 第1の論理データアレイから第2の論理データアレイを形成するステップをさらに含み、第2の論理データアレイは、誤りを有するとして識別された第1の論理データアレイからの列のみを含み、選択されたデータセットは第2の論理データアレイ内の1列に対応している、請求項8に記載の方法。
  10. チェックサムはサイクリック・リダンダンシー符号であり、ECCはリード−ソロモン符号である、請求項1に記載の記載の方法。
  11. 選択されたデータセットは、多数のデータブロックのバイトサイズの一部に対応している、請求項1に記載の方法。
  12. 記憶媒体から検索されたデータ内の誤りを検出するシステムであって、
    データバッファを含み、前記データバッファは、
    記憶媒体から検索された複数のデータブロックと、
    記憶媒体から検索された1つ以上の誤り訂正符号(ECC)と、
    記憶媒体から検索された複数のチェックサムとを含み、
    1チェックサムは1データブロックに対応しており、前記システムはさらに、
    プロセッサを含み、前記プロセッサは、
    データバッファ内の多数のデータブロックからのデータを有するデータセットを選択するよう構成され、
    データセットはデータブロックに対応する複数の行を含み、
    1つ以上のECCはデータセットに対応しており、前記プロセッサはさらに、
    記憶媒体から検索された、誤りを有するデータブロックを、データブロックに対応するチェックサムを用いて識別するよう構成され、
    誤りを有するとして識別されたデータブロックの数が、データセット用のECCの数よりも大きい場合、
    (a)誤りを有するとして識別されたデータブロックに対応するデータセット内の第1の組の行を選択し(第1の組の行における行の数は、データセット用のECCの数と等しく、誤りを有するとして識別されたデータブロックの数よりも小さい)、
    (b)データセット用のECCを用いて、第1の組の行についてのデータを生成し、
    (c)第1の組の行についての生成されたデータに基づいて、誤りを有するとして識別されたデータブロックに対応する行を検証するよう構成されている、データ内の誤りを検出するシステム。
  13. 誤りを有するとして識別されたデータブロックに対応する行は、
    第1の組の行についての生成されたデータを、元々第1の組の行にあるデータと比較するステップと、
    生成されたデータと元々第1の組の行にあるデータとがすべて整合する場合、多数のデータブロックからのデータを有する別のデータセットを処理するステップとによって検証される、請求項12に記載のシステム。
  14. 誤りを有するとして識別されたデータブロックに対応する行は、
    第1の組の行についての生成されたデータを、元々第1の組の行にあるデータと比較するステップと、
    生成されたデータと元々第1の組の行にあるデータがどれも整合しない場合、
    (a)誤りを有するとして識別されたデータブロックに対応するデータセット内の第2の組の行を選択する(第2の組の少なくとも1つの行は第1の組の行とは異なる)ステップと、
    (b)ECCを用いて、第2の組の行についてのデータを生成するステップと、
    (c)第2の組の行についての生成されたデータに基づいて、誤りを有するとして識別されたデータブロックに対応する行を検証するステップとによって検証される、請求項12に記載のシステム。
  15. 誤りを有するとして識別されたデータブロックに対応する行は、
    第1の組の行についての生成されたデータを、元々第1の組の行にあるデータと比較するステップと、
    生成されたデータと、元々第1の組の行の1つ以上の行にあるデータとが整合し(整合行)、生成されたデータと、元々第1の組の行の1つ以上の行にあるデータとが整合しない(非整合行)場合、
    元々非整合行にあるデータを、生成されたデータと置き換えるステップとによって検証される、請求項12に記載のシステム。
  16. 非整合行に対応するデータブロック用のチェックサムを生成するステップと、
    生成されたチェックサムを用いて、誤りを有するとして識別されたデータブロックの数を判断するステップとをさらに含む、請求項15に記載のシステム。
  17. 誤りを有するとして識別されたデータブロックの判断された数が、データセット用のECCの数よりも大きい場合、多数のデータブロックからのデータを有する別のデータセットを処理するステップをさらに含む、請求項16に記載のシステム。
  18. 誤りを有するとして識別されたデータブロックの判断された数が、データセット用のECCの数よりも大きくない場合、ECCを用いてデータブロックを訂正するステップをさらに含む、請求項16に記載のシステム。
  19. データバッファ内のデータブロックは、行および列を有する論理データアレイを形成しており、1データブロックは論理データアレイ内の1行に対応し、選択されたデータセットは論理データアレイ内の1列に対応している、請求項12に記載のシステム。
  20. 選択されたデータセットは、多数のデータブロックのバイトサイズの一部に対応している、請求項19に記載のシステム。
  21. 記憶媒体から検索されたデータ内の誤りをコンピュータに検証させるためのコンピュータ実行可能命令を含むコンピュータ可読記憶媒体であって、
    記憶媒体から複数のデータブロックを検索するステップのための命令と、
    多数のデータブロックからのデータを有するデータセットを選択するステップのための命令とを含み、
    データセットは、データブロックに対応する複数の行を含み、
    1行は、その行に対応する1データブロックからのデータを有し、前記コンピュータ可読記憶媒体はさらに、
    記憶媒体から1つ以上の誤り訂正符号(ECC)を検索するステップのための命令を含み、
    1つ以上のECCはデータセットに対応しており、前記コンピュータ可読記憶媒体はさらに、
    記憶媒体から複数のチェックサムを検索するステップのための命令を含み、
    1チェックサムは1データブロックに対応しており、前記コンピュータ可読記憶媒体はさらに、
    記憶媒体から検索された、誤りを有するデータブロックを、データブロックに対応するチェックサムを用いて識別するステップのための命令を含み、
    誤りを有するとして識別されたデータブロックの数が、データセット用のECCの数よりも大きい場合、
    (a)誤りを有するとして識別されたデータブロックに対応するデータセット内の第1の組の行を選択する(第1の組の行における行の数は、データセット用のECCの数と等しく、誤りを有するとして識別されたデータブロックの数よりも小さい)ステップ、
    (b)データセット用のECCを用いて、第1の組の行についてのデータを生成するステップ、および、
    (c)第1の組の行についての生成されたデータに基づいて、誤りを有するとして識別されたデータブロックに対応する行を検証するステップのための命令を含む、コンピュータ実行可能命令を含むコンピュータ可読記憶媒体。
  22. 検証するステップは、
    第1の組の行についての生成されたデータを、元々第1の組の行にあるデータと比較するステップと、
    生成されたデータと元々第1の組の行にあるデータとがすべて整合する場合、多数のデータブロックからのデータを有する別のデータセットを処理するステップとを含む、請求項21に記載のコンピュータ可読媒体。
  23. 検証するステップは、
    第1の組の行についての生成されたデータを、元々第1の組の行にあるデータと比較するステップと、
    生成されたデータと元々第1の組の行にあるデータがどれも整合しない場合、
    (a)誤りを有するとして識別されたデータブロックに対応するデータセット内の第2の組の行を選択する(第2の組の少なくとも1つの行は第1の組の行とは異なる)ステップと、
    (b)ECCを用いて、第2の組の行についてのデータを生成するステップと、
    (c)第2の組の行についての生成されたデータに基づいて、誤りを有するとして識別されたデータブロックに対応する行を検証するステップとを含む、請求項21に記載のコンピュータ可読媒体。
  24. 検証するステップは、
    第1の組の行についての生成されたデータを、元々第1の組の行にあるデータと比較す
    るステップと、
    生成されたデータと、元々第1の組の行の1つ以上の行にあるデータとが整合し(整合行)、生成されたデータと、元々第1の組の行の1つ以上の行にあるデータとが整合しない(非整合行)場合、
    元々非整合行にあるデータを、生成されたデータと置き換えるステップとを含む、請求項21に記載のコンピュータ可読媒体。
  25. 非整合行に対応するデータブロック用のチェックサムを生成するステップと、
    生成されたチェックサムを用いて、誤りを有するとして識別されたデータブロックの数を判断するステップとをさらに含む、請求項24に記載のコンピュータ可読媒体。
  26. 誤りを有するとして識別されたデータブロックの判断された数が、データセット用のECCの数よりも大きい場合、多数のデータブロックからのデータを有する別のデータセットを処理するステップをさらに含む、請求項25に記載のコンピュータ可読媒体。
  27. 誤りを有するとして識別されたデータブロックの判断された数が、データセット用のECCの数よりも大きくない場合、ECCを用いてデータブロックを訂正するステップをさらに含む、請求項25に記載のコンピュータ可読媒体。
JP2004064267A 2003-03-14 2004-03-08 記憶媒体から検索されたデータを検証する方法およびシステム、ならびにコンピュータ可読記憶媒体 Pending JP2004282737A (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US10/390,380 US7162678B2 (en) 2003-03-14 2003-03-14 Extended error correction codes

Publications (1)

Publication Number Publication Date
JP2004282737A true JP2004282737A (ja) 2004-10-07

Family

ID=32771657

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004064267A Pending JP2004282737A (ja) 2003-03-14 2004-03-08 記憶媒体から検索されたデータを検証する方法およびシステム、ならびにコンピュータ可読記憶媒体

Country Status (3)

Country Link
US (1) US7162678B2 (ja)
EP (1) EP1458107A1 (ja)
JP (1) JP2004282737A (ja)

Families Citing this family (90)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7430240B2 (en) * 2003-10-29 2008-09-30 Broadcom Corporation Apparatus and method for automatic polarity swap in a communications system
US7617241B2 (en) * 2003-11-07 2009-11-10 Rmi Corporation Method and apparatus for enhanced hashing
US7590920B2 (en) * 2005-08-05 2009-09-15 Hitachi Global Storage Technologies Netherlands, B.V. Reduced complexity error correction encoding techniques
US7694208B2 (en) * 2005-12-20 2010-04-06 Quantum Corporation Error correction algorithm using interleaved parity check and Reed-Solomon code
TWI303414B (en) * 2005-12-21 2008-11-21 Ind Tech Res Inst A data encoding method for error correcton
US7823043B2 (en) * 2006-05-10 2010-10-26 Sandisk Il Ltd. Corruption-resistant data porting with multiple error correction schemes
US8621138B2 (en) 2007-12-27 2013-12-31 Sandisk Enterprise Ip Llc Flash storage controller execute loop
US8176284B2 (en) * 2009-08-11 2012-05-08 Texas Memory Systems, Inc. FLASH-based memory system with variable length page stripes including data protection information
US7941696B2 (en) * 2009-08-11 2011-05-10 Texas Memory Systems, Inc. Flash-based memory system with static or variable length page stripes including data protection information and auxiliary protection stripes
US8930622B2 (en) 2009-08-11 2015-01-06 International Business Machines Corporation Multi-level data protection for flash memory system
US8189379B2 (en) 2009-08-12 2012-05-29 Texas Memory Systems, Inc. Reduction of read disturb errors in NAND FLASH memory
US7818525B1 (en) * 2009-08-12 2010-10-19 Texas Memory Systems, Inc. Efficient reduction of read disturb errors in NAND FLASH memory
US8365041B2 (en) 2010-03-17 2013-01-29 Sandisk Enterprise Ip Llc MLC self-raid flash data protection scheme
US8910020B2 (en) 2011-06-19 2014-12-09 Sandisk Enterprise Ip Llc Intelligent bit recovery for flash memory
US8909982B2 (en) 2011-06-19 2014-12-09 Sandisk Enterprise Ip Llc System and method for detecting copyback programming problems
US9058289B2 (en) 2011-11-07 2015-06-16 Sandisk Enterprise Ip Llc Soft information generation for memory systems
US8954822B2 (en) 2011-11-18 2015-02-10 Sandisk Enterprise Ip Llc Data encoder and decoder using memory-specific parity-check matrix
US9048876B2 (en) 2011-11-18 2015-06-02 Sandisk Enterprise Ip Llc Systems, methods and devices for multi-tiered error correction
US8924815B2 (en) 2011-11-18 2014-12-30 Sandisk Enterprise Ip Llc Systems, methods and devices for decoding codewords having multiple parity segments
US9699263B1 (en) 2012-08-17 2017-07-04 Sandisk Technologies Llc. Automatic read and write acceleration of data accessed by virtual machines
US9501398B2 (en) 2012-12-26 2016-11-22 Sandisk Technologies Llc Persistent storage device with NVRAM for staging writes
US9239751B1 (en) 2012-12-27 2016-01-19 Sandisk Enterprise Ip Llc Compressing data from multiple reads for error control management in memory systems
US9612948B2 (en) 2012-12-27 2017-04-04 Sandisk Technologies Llc Reads and writes between a contiguous data block and noncontiguous sets of logical address blocks in a persistent storage device
US9003264B1 (en) 2012-12-31 2015-04-07 Sandisk Enterprise Ip Llc Systems, methods, and devices for multi-dimensional flash RAID data protection
US9454420B1 (en) 2012-12-31 2016-09-27 Sandisk Technologies Llc Method and system of reading threshold voltage equalization
US9043668B2 (en) * 2013-02-08 2015-05-26 Seagate Technology Llc Using ECC data for write deduplication processing
US9214965B2 (en) 2013-02-20 2015-12-15 Sandisk Enterprise Ip Llc Method and system for improving data integrity in non-volatile storage
US9329928B2 (en) 2013-02-20 2016-05-03 Sandisk Enterprise IP LLC. Bandwidth optimization in a non-volatile memory system
US9870830B1 (en) 2013-03-14 2018-01-16 Sandisk Technologies Llc Optimal multilevel sensing for reading data from a storage medium
US9136877B1 (en) 2013-03-15 2015-09-15 Sandisk Enterprise Ip Llc Syndrome layered decoding for LDPC codes
US9367246B2 (en) 2013-03-15 2016-06-14 Sandisk Technologies Inc. Performance optimization of data transfer for soft information generation
US9236886B1 (en) 2013-03-15 2016-01-12 Sandisk Enterprise Ip Llc Universal and reconfigurable QC-LDPC encoder
US9009576B1 (en) 2013-03-15 2015-04-14 Sandisk Enterprise Ip Llc Adaptive LLR based on syndrome weight
US9092350B1 (en) 2013-03-15 2015-07-28 Sandisk Enterprise Ip Llc Detection and handling of unbalanced errors in interleaved codewords
US9244763B1 (en) 2013-03-15 2016-01-26 Sandisk Enterprise Ip Llc System and method for updating a reading threshold voltage based on symbol transition information
US10049037B2 (en) 2013-04-05 2018-08-14 Sandisk Enterprise Ip Llc Data management in a storage system
US9170941B2 (en) 2013-04-05 2015-10-27 Sandisk Enterprises IP LLC Data hardening in a storage system
US9159437B2 (en) 2013-06-11 2015-10-13 Sandisk Enterprise IP LLC. Device and method for resolving an LM flag issue
US9524235B1 (en) 2013-07-25 2016-12-20 Sandisk Technologies Llc Local hash value generation in non-volatile data storage systems
US9043517B1 (en) 2013-07-25 2015-05-26 Sandisk Enterprise Ip Llc Multipass programming in buffers implemented in non-volatile data storage systems
US9384126B1 (en) 2013-07-25 2016-07-05 Sandisk Technologies Inc. Methods and systems to avoid false negative results in bloom filters implemented in non-volatile data storage systems
US9639463B1 (en) 2013-08-26 2017-05-02 Sandisk Technologies Llc Heuristic aware garbage collection scheme in storage systems
US9235509B1 (en) 2013-08-26 2016-01-12 Sandisk Enterprise Ip Llc Write amplification reduction by delaying read access to data written during garbage collection
US9519577B2 (en) 2013-09-03 2016-12-13 Sandisk Technologies Llc Method and system for migrating data between flash memory devices
US9442670B2 (en) 2013-09-03 2016-09-13 Sandisk Technologies Llc Method and system for rebalancing data stored in flash memory devices
US9158349B2 (en) 2013-10-04 2015-10-13 Sandisk Enterprise Ip Llc System and method for heat dissipation
US9323637B2 (en) 2013-10-07 2016-04-26 Sandisk Enterprise Ip Llc Power sequencing and data hardening architecture
US9298608B2 (en) 2013-10-18 2016-03-29 Sandisk Enterprise Ip Llc Biasing for wear leveling in storage systems
US9442662B2 (en) 2013-10-18 2016-09-13 Sandisk Technologies Llc Device and method for managing die groups
US9436831B2 (en) 2013-10-30 2016-09-06 Sandisk Technologies Llc Secure erase in a memory device
US9263156B2 (en) 2013-11-07 2016-02-16 Sandisk Enterprise Ip Llc System and method for adjusting trip points within a storage device
US9244785B2 (en) 2013-11-13 2016-01-26 Sandisk Enterprise Ip Llc Simulated power failure and data hardening
US9152555B2 (en) 2013-11-15 2015-10-06 Sandisk Enterprise IP LLC. Data management with modular erase in a data storage system
US9703816B2 (en) 2013-11-19 2017-07-11 Sandisk Technologies Llc Method and system for forward reference logging in a persistent datastore
US9520197B2 (en) 2013-11-22 2016-12-13 Sandisk Technologies Llc Adaptive erase of a storage device
US9520162B2 (en) 2013-11-27 2016-12-13 Sandisk Technologies Llc DIMM device controller supervisor
US9280429B2 (en) 2013-11-27 2016-03-08 Sandisk Enterprise Ip Llc Power fail latching based on monitoring multiple power supply voltages in a storage device
US9122636B2 (en) 2013-11-27 2015-09-01 Sandisk Enterprise Ip Llc Hard power fail architecture
US9582058B2 (en) 2013-11-29 2017-02-28 Sandisk Technologies Llc Power inrush management of storage devices
US9250676B2 (en) 2013-11-29 2016-02-02 Sandisk Enterprise Ip Llc Power failure architecture and verification
US9092370B2 (en) 2013-12-03 2015-07-28 Sandisk Enterprise Ip Llc Power failure tolerant cryptographic erase
US9235245B2 (en) 2013-12-04 2016-01-12 Sandisk Enterprise Ip Llc Startup performance and power isolation
US9129665B2 (en) 2013-12-17 2015-09-08 Sandisk Enterprise Ip Llc Dynamic brownout adjustment in a storage device
US9549457B2 (en) 2014-02-12 2017-01-17 Sandisk Technologies Llc System and method for redirecting airflow across an electronic assembly
US9497889B2 (en) 2014-02-27 2016-11-15 Sandisk Technologies Llc Heat dissipation for substrate assemblies
US9703636B2 (en) 2014-03-01 2017-07-11 Sandisk Technologies Llc Firmware reversion trigger and control
US9519319B2 (en) 2014-03-14 2016-12-13 Sandisk Technologies Llc Self-supporting thermal tube structure for electronic assemblies
US9348377B2 (en) 2014-03-14 2016-05-24 Sandisk Enterprise Ip Llc Thermal isolation techniques
US9485851B2 (en) 2014-03-14 2016-11-01 Sandisk Technologies Llc Thermal tube assembly structures
US9454448B2 (en) 2014-03-19 2016-09-27 Sandisk Technologies Llc Fault testing in storage devices
US9390814B2 (en) 2014-03-19 2016-07-12 Sandisk Technologies Llc Fault detection and prediction for data storage elements
US9448876B2 (en) 2014-03-19 2016-09-20 Sandisk Technologies Llc Fault detection and prediction in storage devices
US9626400B2 (en) 2014-03-31 2017-04-18 Sandisk Technologies Llc Compaction of information in tiered data structure
US9626399B2 (en) 2014-03-31 2017-04-18 Sandisk Technologies Llc Conditional updates for reducing frequency of data modification operations
US9390021B2 (en) 2014-03-31 2016-07-12 Sandisk Technologies Llc Efficient cache utilization in a tiered data structure
US9697267B2 (en) 2014-04-03 2017-07-04 Sandisk Technologies Llc Methods and systems for performing efficient snapshots in tiered data structures
US10656842B2 (en) 2014-05-30 2020-05-19 Sandisk Technologies Llc Using history of I/O sizes and I/O sequences to trigger coalesced writes in a non-volatile storage device
US9645749B2 (en) 2014-05-30 2017-05-09 Sandisk Technologies Llc Method and system for recharacterizing the storage density of a memory device or a portion thereof
US10146448B2 (en) 2014-05-30 2018-12-04 Sandisk Technologies Llc Using history of I/O sequences to trigger cached read ahead in a non-volatile storage device
US10656840B2 (en) 2014-05-30 2020-05-19 Sandisk Technologies Llc Real-time I/O pattern recognition to enhance performance and endurance of a storage device
US10114557B2 (en) 2014-05-30 2018-10-30 Sandisk Technologies Llc Identification of hot regions to enhance performance and endurance of a non-volatile storage device
US9703491B2 (en) 2014-05-30 2017-07-11 Sandisk Technologies Llc Using history of unaligned writes to cache data and avoid read-modify-writes in a non-volatile storage device
US8891303B1 (en) 2014-05-30 2014-11-18 Sandisk Technologies Inc. Method and system for dynamic word line based configuration of a three-dimensional memory device
US10162748B2 (en) 2014-05-30 2018-12-25 Sandisk Technologies Llc Prioritizing garbage collection and block allocation based on I/O history for logical address regions
US10372613B2 (en) 2014-05-30 2019-08-06 Sandisk Technologies Llc Using sub-region I/O history to cache repeatedly accessed sub-regions in a non-volatile storage device
US9070481B1 (en) 2014-05-30 2015-06-30 Sandisk Technologies Inc. Internal current measurement for age measurements
US9093160B1 (en) 2014-05-30 2015-07-28 Sandisk Technologies Inc. Methods and systems for staggered memory operations
US9652381B2 (en) 2014-06-19 2017-05-16 Sandisk Technologies Llc Sub-block garbage collection
US9443601B2 (en) 2014-09-08 2016-09-13 Sandisk Technologies Llc Holdup capacitor energy harvesting
US11874821B2 (en) 2021-12-22 2024-01-16 Ebay Inc. Block aggregation for shared streams

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2122778B (en) * 1982-06-29 1985-09-11 Sony Corp Digital audio signal processing
NL8601446A (nl) * 1986-06-05 1988-01-04 Philips Nv Werkwijze en inrichting voor het dekoderen van een blok kodesymbolen dat op twee manieren verdeeld is over kodewoorden die elk door een minimum-afstandssepareerbare kode beschermd zijn.
US5920578A (en) * 1997-04-23 1999-07-06 Cirrus Logic, Inc. Method and apparatus for efficiently processing a multi-dimensional code
JP3752995B2 (ja) * 2000-09-27 2006-03-08 日本ビクター株式会社 情報記録再生装置

Also Published As

Publication number Publication date
US7162678B2 (en) 2007-01-09
US20040181734A1 (en) 2004-09-16
EP1458107A1 (en) 2004-09-15

Similar Documents

Publication Publication Date Title
US7162678B2 (en) Extended error correction codes
US7076723B2 (en) Error correction codes
JP4071940B2 (ja) メモリ設計のための共有式誤り訂正
US7546515B2 (en) Method of storing downloadable firmware on bulk media
US9063875B2 (en) Error recovery storage along a memory string
US4817095A (en) Byte write error code method and apparatus
KR101576102B1 (ko) 플래시 메모리의 블록으로부터 데이터를 판독하는 방법 및 관련 메모리 장치
US7536627B2 (en) Storing downloadable firmware on bulk media
JP4192154B2 (ja) エラー訂正のためのデータの分割
US8448045B2 (en) Outer code error correction
US9130597B2 (en) Non-volatile memory error correction
US20080294935A1 (en) Data structure for flash memory and data reading/writing method thereof
TWI684857B (zh) 快閃記憶體裝置及快閃記憶體儲存管理方法
US7418645B2 (en) Error correction/detection code adjustment for known data pattern substitution
US9189327B2 (en) Error-correcting code distribution for memory systems
US20230085730A1 (en) Hard decoding methods in data storage devices
US20180203625A1 (en) Storage system with multi-dimensional data protection mechanism and method of operation thereof
JP3095380B2 (ja) エラーを検出するための方法および装置
JP2004362758A (ja) 記憶媒体から検索されたデータの誤りを訂正するシステムおよび方法、ならびにコンピュータにこれらの誤りを訂正させるためのコンピュータ実行可能な命令を含むコンピュータ読取可能な記憶媒体
US11204834B1 (en) Implementation of keeping data integrity in multiple dimensions
US20050081131A1 (en) Correcting data having more data blocks with errors than redundancy blocks
WO2007089369A2 (en) Method of storing downloadable firmware on bulk media
JP2005011386A (ja) 誤り訂正装置
TWI708256B (zh) 記憶體裝置、記憶體控制器及其資料存取方法
JP2006323434A (ja) データ処理装置及びそのメモリ訂正方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20070202

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090602

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20100202