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

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

Info

Publication number
JP2004281037A
JP2004281037A JP2004063868A JP2004063868A JP2004281037A JP 2004281037 A JP2004281037 A JP 2004281037A JP 2004063868 A JP2004063868 A JP 2004063868A JP 2004063868 A JP2004063868 A JP 2004063868A JP 2004281037 A JP2004281037 A JP 2004281037A
Authority
JP
Japan
Prior art keywords
data
ecc
storage medium
data set
error
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
JP2004063868A
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 JP2004281037A publication Critical patent/JP2004281037A/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

Abstract

【課題】 誤り訂正符号を用いて、記憶媒体に記憶されたデータ内の誤りを訂正する。
【解決手段】 記憶媒体に記憶されたデータは、記憶媒体から複数のデータブロックと複数の誤り訂正符号(ECC)とを検索することによって訂正される。1つのECCは、多数のデータブロックからのデータを有する1つのデータセットに対応しており、ECCはデータブロックとECCとを記憶媒体に記憶させる前に生成される。記憶媒体からデータブロックとECCとを検索した後で、データセットは、データセット内のデータとデータセットとに対応するECCに基づいて、誤りを有するとして識別され、誤りは、記憶媒体から検索されたデータセット内のデータが、データが元々記憶媒体に記憶されたときのデータセット内のデータとは異なることを示す。誤りを有するとして識別されたデータセット内のデータは、データセットに対応するECCを用いて訂正される。
【選択図】 図5

Description

1.発明の分野
この出願は一般に、記憶媒体にデータを記憶させることに関し、より特定的には、記憶媒体に記憶されたデータにおける誤りを訂正するために誤り訂正符号を使用することに関する。
2.関連技術
データは、記憶装置内の記憶媒体へデータを書込むことによって、記憶装置に記憶される。記憶されたデータは後に、記憶媒体からデータを読出すことによって、記憶装置から検索可能である。しかしながら、多くの理由により、記憶装置から検索されたデータに誤りが存在する、つまり、記憶されたデータが検索できないかまたは記憶媒体に元々記憶されたデータとは異なる場合がある。たとえば、記憶媒体上の記憶されたデータの一部が時を経て劣化し、記憶されたデータのその部分を後で適正に読出すことができなくなる場合がある。
そのような誤りを訂正する従来の手法では、誤り訂正符号(ECC)がデータ用に生成され、データとともに記憶媒体に記憶される。記憶されたデータが後に検索されて誤りが検出されると、ECCを用いて検索されたデータを訂正することができる。
ECCを用いるあるアプローチでは、データがアレイとなって構成され、ECCがそのデータ用にそのアレイの2つの次元において(たとえばアレイの行および列に沿って)生成される。これらは通常、2次元ECCと呼ばれる。このアプローチの1つの欠点は、アレイのサイズが増大するにつれ、ECCを生成するため、および検索されたデータを訂正するために必要な時間の量も増大する、ということである。
ECCを用いる別のアプローチでは、ECCはデータブロック用に生成され、記憶媒体に記憶される際にデータブロック内に分散される。データブロック内に分散されたECCの位置を記憶する必要があるため、このアプローチの1つの欠点は、それがECC専用のオーバーヘッドの量を増大させることであり、それは記憶装置の総記憶容量を減少させる場合がある。
加えて、ECCを用いて誤りを訂正するための従来の手法では、記憶媒体にデータを記憶させるために使用可能なデータブロックのサイズは、予想される誤りのサイズによって制限され得る。より特定的には、データブロックは通常、予想される誤りの平均サイズに対応するようサイズ変更される。このため、小さいサイズの誤りが予想される場合には小さいサイズのデータブロックが使用され、大きいサイズの誤りが予想される場合には大きいサイズのデータブロックが使用される。
しかしながら、多くの理由により、予想される誤りの平均サイズに比例していないデータブロックサイズを有することが望ましい場合がある。たとえば、大量のデータが通常、記憶媒体に記憶され、記憶媒体から検索される場合には、大きいデータブロックが、アクセス時間およびオーバーヘッドを減らすために、ある意味では望ましい。しかしながら、誤りの平均サイズがデータブロックのサイズに対して小さい場合には、誤り訂正は比較的
非効率的になる。なぜなら、小さい誤りに対してもデータブロック全体を訂正する必要があるためである。
概要
例示的な一実施例では、記憶媒体に記憶されたデータは、記憶媒体から複数のデータブロックおよび複数の誤り訂正符号(ECC)を検索することによって訂正される。1つのECCは、多数のデータブロックからのデータを有する1つのデータセットに対応しており、ECCは、データブロックおよびECCを記憶媒体に記憶させる前に生成される。記憶媒体からデータブロックおよびECCを検索した後で、データセットは、データセット内のデータおよびデータセットに対応するECCに基づいて、誤りを有するとして識別され、誤りは、記憶媒体から検索されたデータセット内のデータが、データが元々記憶媒体に記憶されたときのデータセット内のデータとは異なることを示す。誤りを有するとして識別されたデータセット内のデータは、データセットに対応するECCを用いて訂正される。
詳細な説明
以下の説明は多数の特定の構成、パラメータなどを述べている。しかしながら、そのような説明はこの発明の範囲に対する限定としては意図されておらず、その代わり、例示的な実施例をより良く説明するために提供されていることが認識されるべきである。
図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列2
14は、データ行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 2004281037
ステップ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 データバッファ。

Claims (27)

  1. 記憶媒体に記憶されたデータを訂正する方法であって、
    記憶媒体から複数のデータブロックを検索するステップと、
    記憶媒体から複数の誤り訂正符号(ECC)を検索するステップとを含み、
    1ECCは、多数のデータブロックからのデータを有する1データセットに対応しており、
    ECCは、データブロックおよびECCを記憶媒体に記憶させる前に生成されたものであり、前記方法はさらに、
    データセットを、データセット内のデータおよびデータセットに対応するECCに基づいて、誤りを有するとして識別するステップを含み、
    誤りは、記憶媒体から検索されたデータセット内のデータが、データが元々記憶媒体に記憶されたときのデータセット内のデータとは異なることを示しており、前記方法はさらに、
    誤りを有するとして識別されたデータセット内のデータを、データセットに対応するECCを用いて訂正するステップを含む、記憶媒体に記憶されたデータを訂正する方法。
  2. 記憶媒体から複数のチェックサムを検索するステップをさらに含み、
    1チェックサムは1データブロックに対応しており、前記方法はさらに、
    記憶媒体から検索されたデータブロックを、データブロックに対応するチェックサムを用いて、誤りを有するとして識別するステップを含み、
    データセット内で訂正されたデータは、誤りを有するとして識別されたデータブロックからのものである、請求項1に記載の方法。
  3. データセットを識別するステップは、
    データセット内のデータおよびデータセットに対応するECCの排他的論理和(XOR)演算を行なうステップと、
    XOR演算がゼロでない結果を生み出す場合、データセットを、誤りを有するとして識別するステップとを含む、請求項1に記載の方法。
  4. データセットを識別するステップは、
    データセット用に新しいECCを生成するステップを含み、新しいECCを生成するために使用されるデータセット内のデータは記憶媒体から検索されたものであり、前記ステップはさらに、
    新しいECCを、データセットに対応する、記憶媒体から検索されたECCと比較するステップと、
    新しいECCと検索されたECCとが異なる場合、データセットを、誤りを有するとして識別するステップとを含む、請求項1に記載の方法。
  5. 記憶媒体から検索された複数のデータブロックは、行および列を有する第1の論理データアレイを形成しており、1行は1データブロックに対応し、1列は1データセットに対応している、請求項1に記載の方法。
  6. 第1の論理データアレイから第2の論理データアレイを形成するステップをさらに含み、第2の論理データアレイは、誤りを有するとして識別されたデータセットに対応する、第1の論理データアレイからの列のみを含む、請求項5に記載の方法。
  7. 第2の論理データアレイはチェックサムの列を含み、1チェックサムは1データブロックに対応しており、データセット内で訂正されたデータは、データブロックに対応するチェックサムによって誤りを有するとして識別されたデータブロックからのものである、請
    求項6に記載の方法。
  8. ECCはリード−ソロモン符号である、請求項1に記載の方法。
  9. 1データセットは、多数のデータブロックのバイトサイズの一部に対応している、請求項1に記載の方法。
  10. 記憶媒体に記憶されたデータを訂正するシステムであって、
    記憶媒体から検索された複数のデータブロックと、記憶媒体から検索された複数の誤り訂正符号(ECC)とを含むデータバッファを含み、
    1ECCは、多数のデータブロックからのデータを有する1データセットに対応しており、
    ECCは、データブロックおよびECCを記憶媒体に記憶させる前に生成されたものであり、前記システムはさらに、
    データセットを、データセット内のデータおよびデータセットに対応するECCに基づいて、誤りを有するとして識別するよう構成されたプロセッサを含み、
    誤りは、記憶媒体から検索されたデータセット内のデータが、データが元々記憶媒体に記憶されたときのデータセット内のデータとは異なることを示しており、前記プロセッサはさらに、
    誤りを有するとして識別されたデータセット内のデータを、データセットに対応するECCを用いて訂正するよう構成されている、記憶媒体に記憶されたデータを訂正するシステム。
  11. データバッファは、記憶媒体から検索された複数のチェックサムをさらに含み、1チェックサムは1データブロックに対応しており、プロセッサは、記憶媒体から検索されたデータブロックを、データブロックに対応するチェックサムを用いて、誤りを有するとして識別するようさらに構成されており、データセット内で訂正されたデータは、誤りを有するとして識別されたデータブロックからのものである、請求項10に記載のシステム。
  12. データセットは、
    データセット内のデータおよびデータセットに対応するECCの排他的論理和(XOR)演算を行なうステップと、
    XOR演算がゼロでない結果を生み出す場合、データセットを、誤りを有するとして識別するステップとによって識別される、請求項10に記載のシステム。
  13. データセットは、
    データセット用に新しいECCを生成するステップ(新しいECCを生成するために使用されるデータセット内のデータは、記憶媒体から検索されたものである)と、
    新しいECCを、データセットに対応する、記憶媒体から検索されたECCと比較するステップと、
    新しいECCと検索されたECCとが異なる場合、データセットを、誤りを有するとして識別するステップとによって識別される、請求項10に記載のシステム。
  14. 記憶媒体から検索された複数のデータブロックは、行および列を有する第1の論理データアレイを形成しており、1行は1データブロックに対応し、1列は1データセットに対応している、請求項10に記載のシステム。
  15. 第1の論理データアレイから形成された第2の論理データアレイをさらに含み、第2の論理データアレイは、誤りを有するとして識別されたデータセットに対応する、第1の論理データアレイからの列のみを含む、請求項14に記載のシステム。
  16. 第2の論理データアレイはチェックサムの列を含み、1チェックサムは1データブロックに対応しており、データセット内で訂正されたデータは、データブロックに対応するチェックサムによって誤りを有するとして識別されたデータブロックからのものである、請求項15に記載のシステム。
  17. ECCはリード−ソロモン符号である、請求項10に記載のシステム。
  18. 1データセットは、多数のデータブロックのバイトサイズの一部に対応している、請求項10に記載のシステム。
  19. 記憶媒体に記憶されたデータをコンピュータに訂正させるためのコンピュータ実行可能命令を含むコンピュータ可読記憶媒体であって、
    記憶媒体から複数のデータブロックを検索するステップのための命令と、
    記憶媒体から複数の誤り訂正符号(ECC)を検索するステップのための命令とを含み、
    1ECCは、多数のデータブロックからのデータを有する1データセットに対応しており、
    ECCは、データブロックおよびECCを記憶媒体に記憶させる前に生成されたものであり、前記コンピュータ可読記憶媒体はさらに、
    データセットを、データセット内のデータおよびデータセットに対応するECCに基づいて、誤りを有するとして識別するステップのための命令を含み、
    誤りは、記憶媒体から検索されたデータセット内のデータが、データが元々記憶媒体に記憶されたときのデータセット内のデータとは異なることを示しており、前記コンピュータ可読記憶媒体はさらに、
    誤りを有するとして識別されたデータセット内のデータを、データセットに対応するECCを用いて訂正するステップのための命令を含む、コンピュータ可読記憶媒体。
  20. 記憶媒体から複数のチェックサムを検索するステップのための命令をさらに含み、
    1チェックサムは1データブロックに対応しており、前記コンピュータ可読媒体はさらに、
    記憶媒体から検索されたデータブロックを、データブロックに対応するチェックサムを用いて、誤りを有するとして識別するステップのための命令を含み、
    データセット内で訂正されたデータは、誤りを有するとして識別されたデータブロックからのものである、請求項19に記載のコンピュータ可読媒体。
  21. データセットを識別するステップは、
    データセット内のデータおよびデータセットに対応するECCの排他的論理和(XOR)演算を行なうステップと、
    XOR演算がゼロでない結果を生み出す場合、データセットを、誤りを有するとして識別するステップとを含む、請求項19に記載のコンピュータ可読媒体。
  22. データセットを識別するステップは、
    データセット用に新しいECCを生成するステップを含み、新しいECCを生成するために使用されるデータセット内のデータは記憶媒体から検索されたものであり、前記ステップはさらに、
    新しいECCを、データセットに対応する、記憶媒体から検索されたECCと比較するステップと、
    新しいECCと検索されたECCとが異なる場合、データセットを、誤りを有するとして識別するステップとを含む、請求項19に記載のコンピュータ可読媒体。
  23. 記憶媒体から検索された複数のデータブロックは、行および列を有する第1の論理データアレイを形成しており、1行は1データブロックに対応し、1列は1データセットに対応している、請求項19に記載のコンピュータ可読媒体。
  24. 第1の論理データアレイから第2の論理データアレイを形成するステップのための命令をさらに含み、第2の論理データアレイは、誤りを有するとして識別されたデータセットに対応する、第1の論理データアレイからの列のみを含む、請求項23に記載のコンピュータ可読媒体。
  25. 第2の論理データアレイはチェックサムの列を含み、1チェックサムは1データブロックに対応しており、データセット内で訂正されたデータは、データブロックに対応するチェックサムによって誤りを有するとして識別されたデータブロックからのものである、請求項24に記載のコンピュータ可読媒体。
  26. ECCはリード−ソロモン符号である、請求項19に記載のコンピュータ可読媒体。
  27. 1データセットは、多数のデータブロックのバイトサイズの一部に対応している、請求項19に記載のコンピュータ可読媒体。
JP2004063868A 2003-03-14 2004-03-08 記憶媒体に記憶されたデータを訂正する方法およびシステム、ならびにコンピュータ可読記憶媒体 Pending JP2004281037A (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US10/390,446 US7076723B2 (en) 2003-03-14 2003-03-14 Error correction codes

Publications (1)

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

Family

ID=32771658

Family Applications (1)

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

Country Status (3)

Country Link
US (1) US7076723B2 (ja)
EP (1) EP1457987A3 (ja)
JP (1) JP2004281037A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012068927A (ja) * 2010-09-24 2012-04-05 Terrara Code Research Institute Inc データ管理システム、データ管理方法、rfidタグ及びタグリーダ/ライタ

Families Citing this family (29)

* 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
US7984359B2 (en) * 2006-05-01 2011-07-19 Seagate Technology, Llc Correction of data errors in a memory buffer
US8706968B2 (en) 2007-12-06 2014-04-22 Fusion-Io, Inc. Apparatus, system, and method for redundant write caching
US9495241B2 (en) 2006-12-06 2016-11-15 Longitude Enterprise Flash S.A.R.L. Systems and methods for adaptive data storage
US9116823B2 (en) 2006-12-06 2015-08-25 Intelligent Intellectual Property Holdings 2 Llc Systems and methods for adaptive error-correction coding
US9104599B2 (en) 2007-12-06 2015-08-11 Intelligent Intellectual Property Holdings 2 Llc Apparatus, system, and method for destaging cached data
US8402201B2 (en) 2006-12-06 2013-03-19 Fusion-Io, Inc. Apparatus, system, and method for storage space recovery in solid-state storage
US8443134B2 (en) 2006-12-06 2013-05-14 Fusion-Io, Inc. Apparatus, system, and method for graceful cache device degradation
US8719501B2 (en) 2009-09-08 2014-05-06 Fusion-Io Apparatus, system, and method for caching data on a solid-state storage device
US8489817B2 (en) 2007-12-06 2013-07-16 Fusion-Io, Inc. Apparatus, system, and method for caching data
US8316277B2 (en) 2007-12-06 2012-11-20 Fusion-Io, Inc. Apparatus, system, and method for ensuring data validity in a data storage process
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
WO2011159805A2 (en) 2010-06-15 2011-12-22 Fusion-Io, Inc. Apparatus, system, and method for providing error correction
US8966184B2 (en) 2011-01-31 2015-02-24 Intelligent Intellectual Property Holdings 2, LLC. Apparatus, system, and method for managing eviction of data
US9003104B2 (en) 2011-02-15 2015-04-07 Intelligent Intellectual Property Holdings 2 Llc Systems and methods for a file-level cache
US9201677B2 (en) 2011-05-23 2015-12-01 Intelligent Intellectual Property Holdings 2 Llc Managing data input/output operations
US8874823B2 (en) 2011-02-15 2014-10-28 Intellectual Property Holdings 2 Llc Systems and methods for managing data input/output operations
US9141527B2 (en) 2011-02-25 2015-09-22 Intelligent Intellectual Property Holdings 2 Llc Managing cache pools
US10102117B2 (en) 2012-01-12 2018-10-16 Sandisk Technologies Llc Systems and methods for cache and storage device coordination
US9767032B2 (en) 2012-01-12 2017-09-19 Sandisk Technologies Llc Systems and methods for cache endurance
US9251052B2 (en) 2012-01-12 2016-02-02 Intelligent Intellectual Property Holdings 2 Llc Systems and methods for profiling a non-volatile cache having a logical-to-physical translation layer
US9251086B2 (en) 2012-01-24 2016-02-02 SanDisk Technologies, Inc. Apparatus, system, and method for managing a cache
US10359972B2 (en) 2012-08-31 2019-07-23 Sandisk Technologies Llc Systems, methods, and interfaces for adaptive persistence
US9116812B2 (en) 2012-01-27 2015-08-25 Intelligent Intellectual Property Holdings 2 Llc Systems and methods for a de-duplication cache
US10019353B2 (en) 2012-03-02 2018-07-10 Longitude Enterprise Flash S.A.R.L. Systems and methods for referencing data on a storage medium
US10339056B2 (en) 2012-07-03 2019-07-02 Sandisk Technologies Llc Systems, methods and apparatus for cache transfers
US9612966B2 (en) 2012-07-03 2017-04-04 Sandisk Technologies Llc Systems, methods and apparatus for a virtual machine cache
US9842053B2 (en) 2013-03-15 2017-12-12 Sandisk Technologies Llc Systems and methods for persistent cache logging

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5136592A (en) 1989-06-28 1992-08-04 Digital Equipment Corporation Error detection and correction system for long burst errors
JP3310185B2 (ja) 1996-11-21 2002-07-29 松下電器産業株式会社 誤り訂正装置
JP3312363B2 (ja) 1996-12-27 2002-08-05 株式会社エヌ・ティ・ティ・ドコモ 符号化装置および復号化装置および符号化復号化システム並びに方法
US6006321A (en) * 1997-06-13 1999-12-21 Malleable Technologies, Inc. Programmable logic datapath that may be used in a field programmable device
US6581178B1 (en) 1999-02-15 2003-06-17 Nec Corporation Error correction coding/decoding method and apparatus
JP3297668B2 (ja) 2000-04-26 2002-07-02 松下電器産業株式会社 符号/復号化装置及び符号/復号化方法
US6823425B2 (en) * 2001-10-23 2004-11-23 Ivivity, Inc. System and method for implementing advanced RAID using a set of unique matrices as coefficients

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012068927A (ja) * 2010-09-24 2012-04-05 Terrara Code Research Institute Inc データ管理システム、データ管理方法、rfidタグ及びタグリーダ/ライタ

Also Published As

Publication number Publication date
US20040181739A1 (en) 2004-09-16
EP1457987A2 (en) 2004-09-15
US7076723B2 (en) 2006-07-11
EP1457987A3 (en) 2005-03-16

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
KR101576102B1 (ko) 플래시 메모리의 블록으로부터 데이터를 판독하는 방법 및 관련 메모리 장치
US7536627B2 (en) Storing downloadable firmware on bulk media
US7992071B2 (en) Method for implementing error-correction codes in non-volatile memory
US4817095A (en) Byte write error code method and apparatus
US7149949B2 (en) Method for error correction decoding in a magnetoresistive solid-state storage device
US8448045B2 (en) Outer code error correction
US9130597B2 (en) Non-volatile memory error correction
US20070180346A1 (en) Method Of Arranging Data In A Multi-Level Cell Memory Device
US7418645B2 (en) Error correction/detection code adjustment for known data pattern substitution
TWI684857B (zh) 快閃記憶體裝置及快閃記憶體儲存管理方法
EP1241560A2 (en) Using task description blocks to maintain information regarding operations
US20230085730A1 (en) Hard decoding methods in data storage devices
US20090125753A1 (en) Handling of data storage within a flash media device
US20050091569A1 (en) System and method for securely storing data in a memory
US9189327B2 (en) Error-correcting code distribution for memory systems
JP2004362758A (ja) 記憶媒体から検索されたデータの誤りを訂正するシステムおよび方法、ならびにコンピュータにこれらの誤りを訂正させるためのコンピュータ実行可能な命令を含むコンピュータ読取可能な記憶媒体
US11204834B1 (en) Implementation of keeping data integrity in multiple dimensions
JP2006323434A (ja) データ処理装置及びそのメモリ訂正方法
WO2007089369A2 (en) Method of storing downloadable firmware on bulk media
JP2005011386A (ja) 誤り訂正装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20070202

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20080422

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080507

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080724

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080819

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20081119

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20081125

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20081219

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20081225

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20090116

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20090121

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20090414