JP6817301B2 - 積符号のためのダイアグノスティクスを伴う復号後エラー・チェック - Google Patents

積符号のためのダイアグノスティクスを伴う復号後エラー・チェック Download PDF

Info

Publication number
JP6817301B2
JP6817301B2 JP2018522922A JP2018522922A JP6817301B2 JP 6817301 B2 JP6817301 B2 JP 6817301B2 JP 2018522922 A JP2018522922 A JP 2018522922A JP 2018522922 A JP2018522922 A JP 2018522922A JP 6817301 B2 JP6817301 B2 JP 6817301B2
Authority
JP
Japan
Prior art keywords
error
decoding
signature
codewords
data
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.)
Active
Application number
JP2018522922A
Other languages
English (en)
Other versions
JP2019503603A (ja
Inventor
ハッチンズ、ロバート、アレン
ベントレイ、スティーブン、ロス
田中 啓介
啓介 田中
シデシヤン、ロイ、ダロン
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.)
International Business Machines Corp
Original Assignee
International Business Machines 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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2019503603A publication Critical patent/JP2019503603A/ja
Application granted granted Critical
Publication of JP6817301B2 publication Critical patent/JP6817301B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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/29Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
    • H03M13/2906Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes using block codes
    • H03M13/2909Product codes
    • 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
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/29Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
    • H03M13/2906Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes using block codes
    • H03M13/2927Decoding strategies
    • 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/2948Iterative decoding
    • 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/37Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
    • H03M13/3738Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35 with judging correct decoding
    • 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/61Aspects and characteristics of methods and arrangements for error correction or error detection, not provided for otherwise
    • H03M13/613Use of the dual code
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/13Linear codes
    • H03M13/15Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
    • H03M13/151Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
    • H03M13/1515Reed-Solomon codes

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Theoretical Computer Science (AREA)
  • Signal Processing (AREA)
  • Error Detection And Correction (AREA)
  • Detection And Correction Of Errors (AREA)

Description

本発明は、データ・ストレージ・システムに関し、特に、積符号のためのダイアグノスティクスを伴う復号後エラー・チェックに関する。
現在使用されているリニア・テープ・ドライブは、誤り訂正符号化(ECC:error correction coding)のために2次元積符号を使用する。これらの積符号は、一般に、C1行符号およびC2列符号から成る2つの直交配置成分符号を含む。C1およびC2符号は、一般に、それぞれ最小ハミング距離d1およびd2を有する線形ブロック符号であり、これらの符号は、GF(2)のガロア体(GF:Galois Field)上の二進BCH(Bose−Chaudhuri−Hocquenghem)符号などの二進(ビット・ベースの)符号またはqビットのシンボルを有するGF(Q=2)上のリード・ソロモン(RS:Reed−Solomon)符号などの、シンボル・アルファベット・サイズQのシンボル・ベース符号、またはqビットのシンボルを有するGF(Q=2)上の非二進BCH符号などであり得る。ストレージおよび伝送システムにおいては、通例Q=2(1ビット・シンボル、すなわち、二進符号)、Q=16(4ビット・シンボル)、Q=64(6ビット・シンボル)、Q=256(8ビット・シンボル)、Q=512(9ビット・シンボル)、Q=1024(10ビット・シンボル)、またはQ=4096(12ビット・シンボル)、などである。
テープ記憶装置および光学式記憶装置技術は、通例、RS符号であるC1およびC2符号を使用するが、フラッシュ・メモリおよび光通信技術は通例二進BCH符号であるC1およびC2符号を使用する。
積符号を用いる復号済みデータに対してエラー訂正を行うとき、潜在的エラー発生源が幾つかある。1)1つ以上の復号エラーに起因するECC復号器による誤訂正、2)1つ以上の復号失敗に起因するECC復号器による復号後の未訂正エラーの残存、および3)復号の間および後にデータを記憶するために使用されるバッファもしくはメモリまたはその両方のエラー訂正における不安定性に関連するメモリ・エラー。
積符号内の全てのC1行および全てのC2列の復号が成功することを必要とする積符号語の復号の失敗は、一時的なもしくは永久的なまたはその両方のエラーをもたらし、積符号のための復号器(場合によっては反復復号器)は有効な積符号語を生じさせない。しかし、在来のデータ記憶装置およびデータ伝送システムにおいてはそのような失敗後にダイアグノスティクスは行われない。
1つの態様によると、コントローラおよびこのコントローラに統合されるかもしくはこのコントローラにより実行可能であるかまたはその両方であるロジックを含むシステムが提供される。ロジックは、符号化済みデータに対して反復復号を行って復号済みデータを得るように構成される。その反復復号では少なくとも3つの復号操作が行われ、それらの復号操作は、C1復号およびC2復号を含む群から選択される。ロジックは、符号化済みデータの反復復号後に第1部分において有効な積符号語が得られなかったことに応答して、復号済みデータのその第1部分に対して、復号後エラー・ダイアグノスティクスを行うようにも構成される。
1つの態様によると、符号化済みデータに対して反復復号を行って復号済みデータを得るステップを含むコントローラで実施される方法が提供される。反復復号において少なくとも3つの復号操作が行われ、それらの復号操作は、C1復号およびC2復号を含む群から選択される。コントローラで実施される方法は、符号化済みデータの反復復号後に復号済みデータの第1部分において有効な積符号語が得られなかったことに応答して、その第1部分に対して、復号後エラー・ダイアグノスティクスを行うステップも含む。
1つの態様では、コンピュータ・プログラムが提供される。コンピュータ・プログラムは、コントローラに、復号済みデータを得るために符号化済みデータに対して反復復号を行わせる。その反復復号において少なくとも3つの復号操作が行われ、それらの復号操作はC1復号およびC2復号を含む群から選択される。プログラムはさらに、コントローラに、符号化済みデータの反復復号後に復号済みデータの第1部分において有効な積符号語が得られなかったことに応答して、その第1部分に対する復号後エラー・ダイアグノスティクスを行わせる。
本発明の他の態様および実施形態が、次の詳細な説明から明らかになる。詳細な説明は、図面とあわせて検討されたとき本発明の原理の例示となる。
次に、添付図面を参照して本発明の実施形態を単なる例として説明する。
1つの実施形態による、ネットワーク・ストレージ・システムを示す。 1つの実施形態による、テープ・ベースのデータ・ストレージ・システムのテープ・ドライブを簡単に示す。 1つの実施形態によるテープ・カートリッジの略図である。 1つの実施形態による、積符号を用いてデータをサブ・データ・セット(SDS:sub data set)に編成するために使用され得る論理データ・アレイを示す。 図5Aは、1つの実施形態による、最後にC1復号操作を有する反復復号から生じた検出済みエラーの無い積符号語を示す。図5Bは、1つの実施形態による、最後にC2復号操作を有する反復復号から生じた検出済みエラーの無い積符号語を示す。 図6Aは、1つの実施形態による、最後にC1復号操作を有する反復復号から生じた検出済みメモリ・エラーのある積符号語を示す。図6Bは、1つの実施形態による、最後にC2復号操作を有する反復復号から生じた検出済みメモリ・エラーのある積符号語を示す。 図7Aは、1つの実施形態による、最後にC1復号操作を有する反復復号から生じたチャネル・シンボル・エラーおよび挿入済みシンボル・エラーの組み合わせを有する積符号語を示す。図7Bは、1つの実施形態による、最後にC2復号操作を有する反復復号から生じたチャネル・シンボル・エラーおよび挿入済みシンボル・エラーの組み合わせを有する積符号語を示す。 図8Aは、1つの実施形態による、最後にC1復号操作を有する反復復号から生じたチャネル・シンボル・エラー、メモリ・シンボル・エラーおよび挿入済みシンボル・エラーの組み合わせを有する積符号語を示す。図8Bは、1つの実施形態による、最後にC2復号操作を有する反復復号から生じたチャネル・シンボル・エラー、メモリ・シンボル・エラーおよび挿入済みシンボル・エラーの組み合わせを有する積符号語を示す。 図9Aは、1つの実施形態による、最後にC1復号操作を有する反復復号から生じた検出済みチャネル・エラーを有する積符号語を示す。図9Bは、1つの実施形態による、最後にC2復号操作を有する反復復号から生じた検出済みチャネル・エラーを有する積符号語を示す。 図10Aは、1つの実施形態による、最後にC1復号操作を有する反復復号から生じたチャネル・エラーおよびメモリ・エラーの組み合わせを有する積符号語を示す。図10Bは、1つの実施形態による、最後にC2復号操作を有する反復復号から生じたチャネル・エラーおよびメモリ・エラーの組み合わせを有する積符号語を示す。 図11Aは、1つの実施形態による、最後にC1復号操作を有する反復復号から生じたチャネル・シンボル・エラーおよび挿入済みシンボル・エラーの組み合わせを有する積符号語を示す。図11Bは、1つの実施形態による、最後にC2復号操作を有する反復復号から生じたチャネル・シンボル・エラーおよび挿入済みシンボル・エラーの組み合わせを有する積符号語を示す。 図12Aは、1つの実施形態による、最後にC1復号操作を有する反復復号から生じたチャネル、メモリ、および挿入済みシンボル・エラーの組み合わせを有する積符号語を示す。図12Bは、1つの実施形態による、最後にC2復号操作を有する反復復号から生じたチャネル、メモリ、および挿入済みシンボル・エラーの組み合わせを有する積符号語を示す。 1つの実施形態による方法のフローチャートを示す。 1つの実施形態による方法のフローチャートを示す。 1つの実施形態による方法のフローチャートを示す。 1つの実施形態による方法のフローチャートを示す。 1つの実施形態による方法のフローチャートを示す。 1つの実施形態による方法のフローチャートを示す。 1つの実施形態による方法のフローチャートを示す。 1つの実施形態による方法のフローチャートを示す。 1つの実施形態による方法のフローチャートを示す。 1つの実施形態による方法のフローチャートを示す。
次の説明は、本発明の一般的原理を示す目的で行われるのであり、本明細書にて特許請求される発明概念を限定する意図は無い。さらに、本明細書に記載された特定の特徴は、可能な様々な組み合わせおよび置換の各々において、他の記載された特徴と組み合わされて使用され得る。
本明細書で特に別様に定義されている場合を除いて、全ての用語に、明細書から示唆される意味ならびに当業者に理解されている意味もしくは辞書、条約などで定義されている意味、またはそれらのいずれかの組み合わせの意味を含む、最大限広範な解釈が与えられるものとする。
明細書および添付の特許請求の範囲で用いられるとき、単数形「a」、「an」および「the」は、別様に明示されていなければ複数の指示対象を含むということにも留意しなければならない。用語「含む(comprises)」もしくは「含んでいる(comprising)」またはその両方は、この明細書で使用されるとき、述べられた特徴、完全体(integer)、ステップ、操作、エレメント、もしくはコンポーネント、またはそれらのいずれかの組み合わせの存在を特定するけれども、1つ以上の他の特徴、完全体、ステップ、操作、エレメント、コンポーネント、もしくはそれらの群またはそれらのいずれかの組み合わせの存在または追加を排除しないということも理解されるであろう。本明細書で使用される「約(about)」という用語は、当業者に理解されるように、この用語「約」が前に付く値と、用語「約」が付く値に穏当に近い任意の値とを示す。別様に示されていなければ、「約」という用語は、この用語「約」が前に付く値±その値の10%を示す。例えば、「約10」は、両端を含めて9.0から11.0の全ての値を示す。
次の記載は、積符号語に対して復号後エラー・ダイアグノスティクスを行うためのシステム、方法、およびコンピュータ・プログラム製品を開示する。エラー・ダイアグノスティクスは、復号中に復号失敗に起因して、復号中に誤訂正に起因して、およびデータがメモリに記憶されている間のデータ・ストレージに際して、生じる種々のタイプのエラーを特定することができる。
エラーが生じるとき、可能ならば、すなわち復号後エラー・ダイアグノスティクスを行うために、復号後エラー・タイプおよびエラー位置を特定することが望ましい。復号済みデータに対してエラー訂正符号化(ECC)が正しく適用されたこと、および、エラー訂正が適用された後にECCバッファまたはメモリに何らかのエラーが導入されていないこと、をベリファイするように構成されたシステム、方法、およびコンピュータ・プログラム製品が、種々の実施形態によって本明細書に記載される。特定の実施形態で積符号を復号した後に残存しているエラーのタイプを特定するように構成された数個のアルゴリズムも記載される。
1つの一般的な実施形態において、システムは、コントローラおよびこのコントローラに統合されるかもしくはこのコントローラにより実行可能であるかまたはその両方であるロジックを含む。ロジックは、符号化済みデータに対して反復復号を行って復号済みデータを得るように構成される。その反復復号では少なくとも3つの復号操作が行われ、それらの復号操作は、C1復号およびC2復号を含む群から選択される。ロジックは、符号化済みデータの反復復号後に復号済みデータの第1部分において有効な積符号語が得られなかったことに応答して、その第1部分に対して復号後エラー・ダイアグノスティクスを行うようにも構成される。
別の一般的な実施形態では、コントローラで実施される方法は、符号化済みデータに対して反復復号を行って復号済みデータを得ることを含む。反復復号において少なくとも3つの復号操作が行われ、それらの復号操作は、C1復号およびC2復号を含む群から選択される。コントローラで実施される方法は、符号化済みデータの反復復号後に復号済みデータの第1部分において有効な積符号語が得られなかったことに応答して、その第1部分に対して復号後エラー・ダイアグノスティクスを行うことも含む。
別の一般的な実施形態においては、コンピュータ・プログラムは、コントローラに、復号済みデータを得るために符号化済みデータに対して反復復号を行わせる。その反復復号において少なくとも3つの復号操作が行われ、それらの復号操作はC1復号およびC2復号を含む群から選択される。プログラムはさらに、コントローラに、符号化済みデータの反復復号後に復号済みデータの第1部分において有効な積符号語が得られなかったことに応答して、その第1部分に対する復号後エラー・ダイアグノスティクスを行わせる。
ここで図1を参照すると、1つの実施形態による、ネットワーク・ストレージ・システム10の略図が示されている。このネットワーク・ストレージ・システム10は、適切なストレージ・システムの単なる一例に過ぎず、本明細書に記載された発明の実施形態の用途や機能性の範囲に関して限定を示唆するように意図してはいない。それでも、ネットワーク・ストレージ・システム10は、実装されることができ、もしくは叙上で明らかにされた機能性のいずれかを実施することができ、またはその両方をすることができる。
ネットワーク・ストレージ・システム10において、コンピュータ・システム/サーバ12があり、これは他の多数の汎用もしくは特殊目的コンピューティング・システム環境または構成で動作し得る。コンピュータ・システム/サーバ12とともに使用するのに適し得る周知のコンピューティング・システム、環境もしくは構成またはそれらのいずれかの組み合わせの例は、パーソナル・コンピュータ・システム、サーバ・コンピュータ・システム、シン・クライアント、シック・クライアント、ハンドヘルドもしくはラップトップ・デバイス、マルチプロセッサ・システム、マイクロプロセッサ・ベースのシステム、セット・トップ・ボックス、プログラマブル・コンシューマ・エレクトロニクス、ネットワークPC、ミニコンピュータ・システム、メインフレーム・コンピュータ・システム、および上記のシステムもしくはデバイスのいずれかを含む分散型クラウド・コンピューティング環境などを含むが、それらに限定はされない。
コンピュータ・システム/サーバ12は、コンピュータ・システムにより実行されるプログラム・モジュールなどのコンピュータ・システム実行可能な命令の一般的文脈において記載され得る。一般に、プログラム・モジュールは、特定のタスクを実施し、または特定のアブストラクト・データ・タイプを実装するルーチン、プログラム、オブジェクト、コンポーネント、ロジック、データ構造などを含み得る。コンピュータ・システム/サーバ12は、通信ネットワークを通して連結されるリモート処理デバイスによりタスクが実施される分散型クラウド・コンピューティング環境で実践され得る。分散型クラウド・コンピューティング環境では、プログラム・モジュールは、メモリ・ストレージ・デバイスを含むローカルおよびリモートの両方のコンピュータ・システム・ストレージ媒体に配置され得る。
図1に示すように、ネットワーク・ストレージ・システム10内のコンピュータ・システム/サーバ12は、汎用コンピューティング・デバイスの形で示されている。コンピュータ・システム/サーバ12のコンポーネントは、1つ以上のプロセッサまたは処理ユニット16、システム・メモリ28、およびシステム・メモリ28を含む種々のシステム・コンポーネントをプロセッサ16に結合させるバス18を含み得るが、それらに限定はされない。
バス18は、メモリ・バスもしくはメモリ・コントローラ、周辺バス、アクセラレーテッド・グラフィクス・ポート、および、種々のバス・アーキテクチャのうちのいずれかを使用するプロセッサもしくはローカル・バスを含む種々のタイプのバス構造のうちの1つ以上のいずれかを表す。限定をせずに例を挙げると、そのようなアーキテクチャは、インダストリ・スタンダード・アーキテクチャ(ISA:Industry Standard Architecture)バス、マイクロ・チャネル・アーキテクチャ(MCA:Micro Channel Architecture)バス、エンハンストISA(EISA:Enhanced ISA)バス、ビデオ・エレクトロニクス・スタンダーズ・アソシエーション(VESA:Video Electronics Standards Association)ローカル・バス、およびペリフェラル・コンポーネント・インターコネクト(PCI:Peripheral Component Interconnect)バスを含む。
コンピュータ・システム/サーバ12は、通例、種々のコンピュータ・システム可読媒体を含む。そのような媒体は、コンピュータ・システム/サーバ12がアクセスできる任意の利用可能な媒体であり得、揮発性および不揮発性の両方の媒体、リムーバブルおよび非リムーバブルの媒体を含む。
システム・メモリ28は、ランダム・アクセス・メモリ(RAM:random access memory)30もしくはキャッシュ・メモリ32またはその両方など、揮発性メモリの形のコンピュータ・システム可読媒体を含み得る。コンピュータ・システム/サーバ12は、他のリムーバブル/非リムーバブル、揮発性/不揮発性コンピュータ・システム・ストレージ媒体をさらに含み得る。単に例を挙げると、ストレージ・システム34は、HDDで操作され得る、図示されていなくて通例「ハード・ディスク」と称される非リムーバブルな不揮発性磁気媒体に対して読み出しおよび書き込みを行うために、設けられ得る。図示されてはいないが、リムーバブルな不揮発性磁気ディスク(例えば、「フレキシブルディスク」)に対して読み出しおよび書き込みを行うための磁気ディスク・ドライブ、および、CD−ROM、DVD−ROMなどのリムーバブルな不揮発性光ディスクまたは他の光学式媒体に対して読み出しおよび書き込みを行うための光ディスク・ドライブを設けることができる。そのような場合、各々を1つ以上のデータ媒体インターフェースによりバス18に接続することができる。さらに図示されかつ以下で記載されるように、メモリ28は、本明細書に記載された実施形態の機能を実行するように構成された一組(例えば少なくとも1つ)のプログラム・モジュールを有する少なくとも1つのプログラム製品を含むことができる。
一組(少なくとも1つ)のプログラム・モジュール42を有するプログラム/ユーティリティ40は、オペレーティング・システム、1つ以上のアプリケーション・プログラム、他のプログラム・モジュール、およびプログラム・データと同じく、限定ではなく例として、メモリ28に記憶され得る。オペレーティング・システム、1つ以上のアプリケーション・プログラム、他のプログラム・モジュール、およびプログラム・データまたはそれらの何らかの組み合わせの各々は、ネットワーキング環境の実装を含み得る。プログラム・モジュール42は、一般に、本明細書に記載された発明の実施形態の機能もしくは方法論またはその両方を実行する。
コンピュータ・システム/サーバ12は、キーボード、ポインティング・デバイス、ディスプレイ24などの1つ以上の外部デバイス14、ユーザがコンピュータ・システム/サーバ12とインタラクトすることを可能にする1つ以上のデバイス、もしくはコンピュータ・システム/サーバ12が1つ以上の他のコンピューティング・デバイスと通信することを可能にする任意のデバイス(例えば、ネットワーク・カード、モデムなど)、またはそれらのいずれかの組み合わせと通信することもできる。そのような通信は、入力/出力(I/O:Input/Output)インターフェース22を介して行われ得る。さらに、コンピュータ・システム/サーバ12は、ネットワーク・アダプタ20を介して、ローカル・エリア・ネットワーク(LAN:local area network)、一般的ワイド・エリア・ネットワーク(WAN:wide area network)、もしくは公衆ネットワーク(例えば、インターネット)またはそれらのいずれかの組み合わせなどの1つ以上のネットワークと通信することができる。図示のように、ネットワーク・アダプタ20は、バス18を介してコンピュータ・システム/サーバ12の他のコンポーネントと通信する。図示されてはいないが、コンピュータ・システム/サーバ12と関連して他のハードウェアもしくはソフトウェア・コンポーネントまたはその両方を使用し得ることが理解されるべきである。例は、マイクロコード、デバイス・ドライバ、冗長処理ユニット、外部ディスク・ドライブ・アレイ、独立ディスクの冗長アレイ(RAID:redundant array of independent disks)システム、テープ・ドライブ、およびデータ・アーカイバル・ストレージ・システムなどを含むが、それらに限定はされない。
図2はテープ・ベースのデータ・ストレージ・システムのテープ・ドライブ100を簡単に示しており、これは本発明の文脈において使用され得る。テープ・ドライブの1つの特定の実装が図2に示されているが、本明細書に記載された実施形態は任意のタイプのテープ・ドライブ・システムの文脈において実装され得ることに留意するべきである。
図示されているように、テープ122を支持するためテープ供給カートリッジ120および巻取りリール121が設けられている。これらのリールのうちの1つ以上は、リムーバブル・カートリッジの一部を形成することができ、必ずしもテープ・ドライブ100の一部ではない。図2に示されているようなテープ・ドライブは、テープ122を任意のタイプのテープ・ヘッド126上を移動させるためにテープ供給カートリッジ120および巻取りリール121を駆動する駆動モータ(単数または複数)をさらに含み得る。そのようなヘッドは、リーダ、ライタまたはその両方のアレイを含み得る。
ガイド125は、テープ122を案内してテープ・ヘッド126を横断させる。このようなテープ・ヘッド126は、ケーブル130を介してコントローラ128に結合される。コントローラ128は、テープ・ドライブ100の任意のサブシステムを制御するためのプロセッサもしくは任意のロジックまたはその両方であり得、あるいはそれらを含み得る。例えば、コントローラ128は、通例、サーボ追従、データ書き込み、データ読み出しなどのヘッド機能を制御する。コントローラ128は少なくとも1つのサーボ・チャネルおよび少なくとも1つのデータ・チャネルを含むことができ、それらのチャネルは各々、テープ122に書き込まれもしくはテープ122から読み出されまたはその両方が行われるべき情報を処理しもしくは記憶しまたはその両方を行うように構成されたデータ・フロー処理ロジックを含む。コントローラ128は、当該技術において知られているロジックならびに本明細書で開示される任意のロジックの下で動作することができ、従って、種々の実施形態において、本明細書に含まれるテープ・ドライブについての任意の記述についてプロセッサと見なされ得る。コントローラ128は、任意の既知タイプのメモリ136に結合され得、このメモリはコントローラ128によって実行可能な命令を記憶することができる。さらに、コントローラ128は、本明細書で提示される方法論のうちの幾つかまたは全部を実施または制御するように構成され得るかもしくはプログラマブルであり得るか、またはその両方であり得る。従って、コントローラ128は、1つ以上のチップ、モジュールもしくはブロックまたはそれらのいずれかの組み合わせにプログラムされたロジック、ソフトウェア、ファームウェア、もしくは1つ以上のプロセッサが利用し得る他の命令またはそれらのいずれかの組み合わせ、など、およびそれらの組み合わせによって種々の操作を行うように構成されるべきであると考えられ得る。
ケーブル130は、テープ122に記録されるべきデータをヘッド126に送信するとともにテープ122からヘッド126により読み出されたデータを受信する読み出し/書き込み回路を含み得る。アクチュエータ132は、テープ122に対するヘッド126の位置を制御する。
すべて当業者に理解されるように、テープ・ドライブ100およびホスト(内部または外部)の間でデータを送受信する通信のために、かつテープ・ドライブ100の動作を制御しテープ・ドライブ100のステータスをホストに伝えるために、インターフェース134も設けることができる。
図3は、1つの実施形態による例示的テープ・カートリッジ150を示す。そのようなテープ・カートリッジ150は、図2に示されているようなシステムとともに使用され得る。図示されているように、テープ・カートリッジ150は、ハウジング152、ハウジング152内のテープ122、およびハウジング152に結合された不揮発性メモリ156を含む。幾つかのアプローチでは、不揮発性メモリ156は、図3に示されているように、ハウジング152の内部に埋め込まれ得る。他のアプローチでは、ハウジング152を改変せずに不揮発性メモリ156をハウジング152の内側または外側に取り付けることができる。例えば、不揮発性メモリは、糊付きラベル154に埋め込まれ得る。1つの好ましい実施形態では、不揮発性メモリ156は、テープ・カートリッジ150の内側または外側に埋め込まれまたは結合されるフラッシュ・メモリ・デバイス、ROMデバイスなどであり得る。不揮発性メモリは、テープ・ドライブおよびテープ操作ソフトウェア(ドライバ・ソフトウェア)、もしくは他のデバイスまたはそれらのいずれかの組み合わせによりアクセス可能である。
図4は、1つの実施形態による、データをサブ・データ・セット(SDS)に編成するために使用され得る論理的データ・アレイ400を示す。図示されているように、このデータ・アレイは複数の行402および列404を含む。データ・アレイ400の各行402は、複数のC1符号語を含む符号語インターリーブ(CWI:codeword interleave)である。CWIが4つのインターリーブされた符号語を含むとき、そのCWIはCWI−4と称される。SDS内のデータは、C1行パリティ(これは後にデータ・アレイ400を生成するために改変されるので図示されていない)を生成するための各行402におけるC1符号化と、C2列パリティ408を生成するための各列404におけるC2符号化とによって保護される。
図示されているように、各行402のためのヘッダ406は、C1符号化スキームを用いて、ヘッダ406を計算するようにC1パリティ(行402だけの中のデータについて計算された)を改変してC1’パリティを生成することにより符号化され得る。この実施形態では、ヘッダ406は1−レベルのECC(C1’パリティ410のみ)により保護されるが、データは2−レベルのECC(C1’パリティ410およびC2パリティ408)により保護される。
各データ・セットは複数のサブ・データ・セットを含み、各サブ・データ・セットは論理的2次元アレイによって表され得る。各データ・セットは複数のSDSを含み、列符号化済みSDSの各行(CWI)にヘッダが割り当てられるので、通常は、単一のデータ・セットに数百のヘッダが割り当てられる。現在使用されているリニア・テープ・ドライブは、同時に最大32のトラックを磁気テープ媒体に読み書きする。積符号のC1行符号語は、バイト−インターリーブ方式で磁気テープ媒体の複数の個々のトラックに書き込まれ、その後、それらの個々のトラックから同時に読み出される。
使用されるECCのタイプに関わらず、ECC復号器によって誤訂正が生じているか否か判断するために、本明細書に記載されている実施形態により、ECCの現存するパワーを活用することができる。復号器のエラー訂正バッファもしくはメモリまたはその両方に発生した、デバイス自体の不安定性に起因するエラーなど、任意のエラーのタイプを判断するためにECCを使用することもできる。
1つの実施形態では、反復復号は3つの復号操作を含み得る。C1復号、その次のC2復号、およびその次の再度のC1復号。
1つの代替実施形態では、反復復号は、別の順序の3つの復号操作を含み得る。C2復号、その次のC1復号、およびその次の再度のC2復号。これらの実施形態の各々において、C1およびC2復号を交互にして、もっと多くの復号ステップを、最後のC1またはC2復号操作の後で、行うことができる。
1つの特定の実施形態では、反復復号は、240に等しい符号語長さ(N1)および13に等しい最小ハミング距離(d1)を有する(すなわち、N1=240、d1=13)リード・ソロモンRS(240,228)符号であるC1符号と、192に等しい符号語長さ(N2)および25に等しい最小ハミング距離(d2)を有する(すなわち、N2=192、d2=25)RS(192,168)符号であるC2符号とを利用することができる。
ECC復号器は、ストリーミング・モードで動作している間、C1−C2−C1反復復号を行い、次にC2シンドローム・チェックおよびC1シンドローム・チェックを行うように構成され得る。符号化済みデータ(これは、受け取った積符号語を含む)の復号は、復号後、個々の積符号語内の全てのC1符号語が許され(すなわち、全てのC1符号語がゼロ・シンドロームを有し、それは全てのC1符号語がC1シンドローム・チェックに合格したことと同等である)、かつ、その同じ個々の積符号語内の全てのC2符号語が許される(すなわち、全てのC2符号語がゼロ・シンドロームを有し、それは全てのC2符号語がC2シンドローム・チェックに合格したことと同等である)場合に限り、成功と見なされる。そうでなければ、復号は失敗と見なされる。
代替実施形態では、ECC復号器は、ストリーミング・モードで動作している間、C2−C1−C2反復復号を行い、次にC1シンドローム・チェックおよびC2シンドローム・チェックを行うように構成され得る。復号成功の判断は上記と同じである。
受け取った積符号語をその中に有する符号化済みデータの復号が完了した後、エラー源がチェックされ得る。エラー源は、チャネル・エラー(復号失敗に起因する)、復号器エラーに起因する復号エラー(誤訂正に起因する)、および復号器もしくはシステムまたはその両方のバッファもしくはメモリまたはその両方(埋め込み型ダイナミック・ランダム・アクセス・メモリ(eDRAM:embedded dynamic random access memory)など)におけるメモリ・エラーなどの種々の原因によるものであり得る。
復号後エラー・チェックは、復号に失敗した積符号語に検出された任意のエラーについて1つ以上のエラー・シグネチャを判断することを含み得る。これらのエラー・シグネチャは、ECC復号から確認できる複数のパラメータに基づいて判断され得る。例えば、最後のC1復号操作後に復号済みデータに残っている任意のエラーのエラー・シグネチャは、パラメータU、U’、W、W’、D、D’、M、およびM’を用いて定義され得る。ここで、Uは最後のC1復号操作後に受け取った積符号語内の訂正不能のC1符号語の数(C1復号失敗)として判断され、U’は最後のC2復号操作後に受け取った積符号語内の訂正不能のC2符号語の数(C2復号失敗)として判断され、WはC1シンドローム・チェック実施後に検出された受け取った積符号語内のノンゼロ・シンドロームを有するC1符号語の数(無効なC1符号語)として判断され、W’はC2シンドローム・チェック実施後に検出された受け取った積符号語内のノンゼロ・シンドロームを有するC2符号語の数(無効なC2符号語)として判断され、DはC2エラー位置判断後に検出された少なくともd1個のシンボル・エラーを有する受け取った積符号語内のU個の訂正不能C1符号語以外のC1符号語の数として判断され(d1はC1符号についての最小ハミング距離である)、D’はC1エラー位置判断後に検出された少なくともd2個のシンボル・エラーを有する受け取った積符号語内のU’個の訂正不能C2符号語以外のC2符号語の数として判断され(d2はC2符号についての最小ハミング距離である)、MはC2エラー位置判断後に検出されたd1個未満のシンボル・エラーを有する復号済み積符号語内のU個の訂正不能C1符号語以外のC1符号語の数として判断され、M’はC1エラー位置判断後に検出されたd2個未満のシンボル・エラーを有する復号済み積符号語内のU’個の訂正不能C2符号語以外のC2符号語の数として判断される。C1およびC2エラー位置は、鍵方程式を解くことによってシンドローム多項式から求められ得る。例えば、C1復号器およびC2復号器において鍵方程式を解くためにユークリッドの互除法を使用することができる。
複数のエラー・シグネチャは、C1復号が最後に行われる復号シーケンスについて以下の表1に示すように二進3組により表され得る。各組(S)はS=[cdm]として定義される。c、d、およびmの値は次の通りに設定される。U=0に応答してc=0、およびC1復号後のチャネル・エラーの存在を意味するU>0に応答してc=1、D=0に応答してd=0、およびC1復号器エラー(誤訂正)の存在を意味するD>0に応答してd=1、ならびにM=0に応答してm=0、およびメモリ・エラーの存在を意味するM>0に応答してm=1。
Figure 0006817301
別の複数のエラー・シグネチャは、C2復号が最後に行われた復号シーケンスについて下記の表2に示すように、二進3組により表され得る。各組(S’)はS’=[c’d’m’]により定義される。c’、d’、およびm’の値は次のように設定される。U’=0に応答してc’=0、およびC2復号後のチャネル・エラーの存在を意味するU’>0に応答してc’=1、D’=0に応答してd’=0、およびC2復号器エラー(誤訂正)の存在を意味するD’>0に応答してd’=1、ならびにM’=0に応答してm’=0、およびメモリ・エラーの存在を意味するM’>0に応答してm’=1。
Figure 0006817301
本記載を読めば当業者にとっては明らかとなるように、より多くのまたはより少ないタイプのエラーを定義し、それらを復号済みデータにおいて特定することができる。さらに、組は、例えば二進2組、二進4組など、復号済みデータにおいて診断されるべきエラー・タイプに対応するより多くのまたはより少ないエントリを持つことができる。
図5A〜12Bにおいて、本明細書における記載のために、各図に示されている復号済み積符号語を作るために使用される積符号はd1=5を有するRS(N1、K1)C1符号とd2=5のGF(256)上のRS(N2、K2)C2符号とに基づき得るということが仮定され得る。無論、他の任意の適切な積符号を使用することができ、この積符号は、単に説明の便宜上選択され、本明細書に記載された実施形態と関連して使用され得る積符号に対して何らの限定をもなさない。
さらに、図5A〜12Bにおいてもたらされる復号済み積符号語についての記載は、それぞれ最小ハミング距離d1およびd2を有する任意の線形ブロック符号、GF(Q)上のC1およびGF(Q)上のC2、に対して当てはまり得る。
ここで図5Aを参照すると、最後の復号操作としてC1復号を有する反復復号の1つのあり得る結果に従って復号済み積符号語500が示されている。復号済み積符号語500はN1個の列とN2個の行とを有し、2次元N1×N2積符号語となっている。
復号済み積符号語500において、その中の全てのシンボルがエラー無しで復号されたか、または、この復号済み積符号語500を生成した反復復号の間に訂正され得たので、検出可能なエラーは存在しない。この積符号語500の中の複数のシンボルのうちの幾つかは不正確に復号された(復号済みデータが読み出された媒体に記憶されたものとは異なるか、または符号化済みデータを生成したデータとは異なる)可能性があるけれども、反復復号はそのようなエラーを検出することはできなかったので、これは有効な積符号語である。
1つの例示的実施形態では、上記の積符号語を仮定すると、復号済み積符号500において、S=[000]のエラー・シグネチャについてU=0、W’=0、およびM=0である。このことは復号済み積符号500の全てのC1符号語およびC2符号語が許される符号語であることの結果であり、従って、未訂正C1符号語は無く(U=0)、全てのC2符号語のシンドロームはゼロである(W’=0)。さらに、eDRAMまたは他の何らかの適切なバッファ・メモリなどのバッファ・メモリにおいてメモリ・エラーは検出されない(M=0)。
図5Bは、最後の復号操作としてC2復号を有する反復復号の1つのあり得る結果による復号済み積符号語550を示す。復号済み積符号語550はN2個の列とN1個の行とを有し、2次元N2×N1積符号語となっている。復号済み積符号語550の全てのC1符号語およびC2符号語は許される符号語であり、従って、未訂正C2符号語は無く(U’=0)、全てのC1符号語のシンドロームはゼロ(W=0)であるので、復号済み積符号語550においてはS’=[000]のエラー・シグネチャについてU’=0、W=0、M’=0、である。さらに、eDRAMまたは他の何らかの適切なバッファ・メモリなどのバッファ・メモリにおいてメモリ・エラーは検出されない(M’=0)。
図6Aを参照すると、最後の復号操作としてC1復号を有する反復復号の1つのあり得る結果による復号済み積符号語600が示されている。復号済み積符号語600において、1つの検出可能なエラー、バッファ・メモリにおけるそのメモリ・シンボル・エラーと関連するシンボルの不正確なストレージに起因するメモリ・シンボル・エラー(e)、が存在する。この積符号語600の他の複数のシンボルのうちの幾つかは不正確に復号されている(復号済みデータが読み出された媒体に記憶されたものとは異なるか、または符号化済みデータを生成したデータとは異なる)可能性があるが、反復復号はそのようなエラーを検出できなかった。しかし、そのメモリ・システム・エラーの故に、この積符号語は有効な積符号語ではない。
復号済み積符号語600においては、未訂正C1符号語は無く(U=0)、復号済み積符号語600において唯一のC2符号語がノンゼロ・シンドロームを有し(W’=1)、復号済み積符号語600においてC1符号語のうちの1つがノンゼロ・シンドロームを有し(W=1)、U以外の1つのC1符号語がd1個未満のシンボル・エラーを有するためにメモリ・エラーが検出されるので(M=1)、S=[001]のエラー・シグネチャについてU=0、W’=1、W=1、M=1である。
図6Bは、最後の復号操作としてC2復号を有する反復復号の1つのあり得る結果による復号済み積符号語650を示す。未訂正C2符号語は無く(U’=0)、復号済み積符号語650において唯一のC2符号語がノンゼロ・シンドロームを有し(W’=1)、復号済み積符号語650においてC1符号語のうちの1つがノンゼロ・シンドロームを有し(W=1)、U’以外の1つのC2符号語がd2個未満のシンボル・エラーを有するためにメモリ・エラーが検出されるので(M’=1)、この復号済み積符号語650についてのエラー・シグネチャはU’=0、W=1、W’=1、およびM’=1からもたらされるS’=[001]であろう。
ここで図7Aを参照すると、最後の復号操作としてC1復号を有する反復復号の1つのあり得る結果による復号済み積符号語700が示されている。復号済み積符号語700においては、C1復号の前のチャネル・シンボル・エラー(x)、およびC1復号器エラーに起因して挿入されたシンボル・エラー(o)を含む数個のエラーが同じC1符号語に存在する。この積符号語700の他の複数のシンボルのうちの幾つかは不正確に復号されている(復号済みデータが読み出された媒体に記憶されたものとは異なるか、または符号化済みデータを生成したデータとは異なる)可能性があるが、反復復号はそのようなエラーを検出できなかった。しかし、エラーのこの組み合わせの故に、この積符号語は有効な積符号語ではない。
未訂正C1符号語は無く(U=0)、復号済み積符号語700において5個のC2符号語がノンゼロ・シンドロームを有し(W’=5)、復号済み積符号語700においてどのC1符号語もノンゼロ・シンドロームを有せず(W=0)、C2エラー位置を判断した後に検出された少なくともd1個のシンボル・エラーを有するU以外のC1符号語は無く(D=0)、メモリ・エラーは検出されないので(M=0)、復号済み積符号語700においては、S=[010]のエラー・シグネチャについてU=0、W’=5、W=0、D=1、およびM=0である。
図7Bは、最後の復号操作としてC2復号を有する反復復号の1つのあり得る結果による復号済み積符号語750を示す。未訂正C2符号語は無く(U’=0)、復号済み積符号語750においてノンゼロ・シンドロームを有するC2符号語は無く(W’=0)、復号済み積符号語750においてC1符号語のうちの5個はノンゼロ・シンドロームを有し(W=5)、C1エラー位置を判断した後に検出された少なくともd2個のシンボル・エラーを有するU’以外のC2符号語は無く(D’=0)、メモリ・エラーは検出されないので(M’=0)、この復号済み積符号語750のエラー・シグネチャはU’=0、W=5、W’=0、D’=1、およびM’=0からもたらされるS’=[010]であろう。
ここで図8Aを参照すると、最後の復号操作としてC1復号を有する反復復号の1つのあり得る結果による復号済み積符号語800が示されている。復号済み積符号語800の中には、C1復号の前のチャネル・シンボル・エラー(x)、およびC1復号器エラーに起因して挿入されたシンボル・エラー(o)を含む数個のエラーが同じC1符号語内に存在し、別のC1符号語内に1つのメモリ・エラー(e)が存在する。この積符号語800の他の複数のシンボルのうちの幾つかは不正確に復号されている(復号済みデータが読み出された媒体に記憶されたものとは異なるか、または符号化済みデータを生成したデータとは異なる)可能性があるが、反復復号はそのようなエラーを検出できなかった。しかし、エラーのこの組み合わせの故に、この積符号語は有効な積符号語ではない。
未訂正C1符号語は無く(U=0)、復号済み積符号語800においてノンゼロ・シンドロームを有する6個の符号語(W’=6)、メモリ・エラーに起因して復号済み積符号語800においてC1符号語のうちの1つはノンゼロ・シンドロームを有し(W=1)、U以外の1つのC1符号語はC2エラー位置判断後に検出された少なくともd1個のシンボル・エラーを有し(D=1)、C2エラー位置判断後に検出されたd1個未満のシンボル・エラーを有するU以外の1つのC1符号語に起因して1つのメモリ・エラーが検出されるので(M=1)、復号済み積符号語800においてはエラー・シグネチャS=[011]についてU=0、W’=6、W=1、D=1、およびM=1である。
図8Bは、最後の復号操作としてC2復号を有する反復復号の1つのあり得る結果による復号済み積符号語850を示す。未訂正C2符号語は無く(U’=0)、復号済み積符号語850では1つのC2符号語はノンゼロ・シンドロームを有し(W’=1)、復号済み積符号語850においてC1符号語のうちの6個はノンゼロ・シンドロームを有し(W=6)、U’以外の1つのC2符号語はC1エラー位置判断後に検出された少なくともd2個のシンボル・エラーを有し(D’=1)、1つのメモリ・エラーが検出されるので(M’=1)、この復号済み積符号語850についてのエラー・シグネチャは、U’=0、W’=1、W=6、D’=1、およびM’=1からもたらされるS’=[011]であろう。
ここで図9Aを参照すると、最後の復号操作としてC1復号を有する反復復号の1つのあり得る結果による復号済み積符号語900が示されている。復号済み積符号語900には、同じC1符号語に数個のエラー、すなわち、C1復号の前の3個のチャネル・シンボル・エラー(x)、が存在する。この積符号語900の他の複数のシンボルのうちの幾つかは不正確に復号されている(復号済みデータが読み出された媒体に記憶されたものとは異なるか、または符号化済みデータを生成したデータとは異なる)可能性があるが、反復復号はそのようなエラーを検出できなかった。しかし、それらのチャネル・シンボル・エラーの故に、この積符号語は有効な積符号語ではない。
1つの未訂正C1符号語があり(U=1)、復号済み積符号語900においては3つのC2符号語がノンゼロ・シンドロームを有し(W’=3)、復号済み積符号語900においてはC1符号語のうちの1つがノンゼロ・シンドロームを有し(W=1)、C2エラー位置判断後に検出された少なくともd1個のシンボル・エラーを有するU以外のC1符号語は無く(D=0)、メモリ・エラーは検出されないので(M=0)、復号済み積符号語900においては、S=[100]のエラー・シグネチャについてU=1、W’=3、W=1、D=0、およびM=0である。
図9Bは、最後の復号操作としてC2復号を有する反復復号の1つのあり得る結果による復号済み積符号語950を示す。1つの未訂正C2符号語があり(U’=1)、復号済み積符号語950において3つのC2符号語がノンゼロ・シンドロームを有し(W’=3)、復号済み積符号語950においてC1符号語のうちの1つはノンゼロ・シンドロームを有し(W=1)、C1エラー位置判断後に検出された少なくともd2個のシンボル・エラーを有するU’以外のC2符号語は無く(D’=0)、メモリ・エラーは検出されないので(M’=0)、この復号済み積符号語950についてのエラー・シグネチャは、U’=1、W=1、W’=3、D’=0、およびM’=0からもたらされるS’=[100]であろう。
ここで図10Aを参照すると、最後の復号操作としてC1復号を有する反復復号の1つのあり得る結果による復号済み積符号語1000が示されている。復号済み積符号語1000においては、C1復号前の3個のチャネル・シンボル・エラー(x)を含む数個のエラーが同じC1符号語に存在し、別のC1符号語にメモリ・エラー(e)が存在する。この積符号語1000の他の複数のシンボルのうちの幾つかは不正確に復号されている(復号済みデータが読み出された媒体に記憶されたものとは異なるか、または符号化済みデータを生成したデータとは異なる)可能性があるが、反復復号はそのようなエラーを検出できなかった。しかし、エラーのこの組み合わせの故に、この積符号語は有効な積符号語ではない。
1つの未訂正C1符号語があり(U=1)、復号済み積符号語1000において4個のC2符号語はノンゼロ・シンドロームを有し(W’=4)、復号済み積符号語1000においてC1符号語のうちの2個はノンゼロ・シンドロームを有し(W=2)、C2エラー位置判断後に検出された少なくともd1個のシンボル・エラーを有するU以外のC1符号語は無く(D=0)、U以外の1つのC1符号語がC2エラー位置判断後に検出されたd1個未満のシンボル・エラーを有するために1つのメモリ・エラーが検出されるので(M=1)、復号済み積符号語1000においては、S=[101]のエラー・シグネチャについてU=1、W’=4、W=2、D=0、およびM=1である。
図10Bは、最後の復号操作としてC2復号を有する反復復号の1つのあり得る結果による復号済み積符号語1050を示す。1つの未訂正C2符号語があり(U’=1)、復号済み積符号語1050において2個のC2符号語がノンゼロ・シンドロームを有し(W’=2)、復号済み積符号語1050においてC1符号語のうちの4個はノンゼロ・シンドロームを有し(W=4)、C1エラー位置判断後に検出された少なくともd2個のシンボル・エラーを有するU’以外のC2符号語は無く(D’=0)、1つのメモリ・エラーが検出されるので(M’=1)、この復号済み積符号語1050についてのエラー・シグネチャはU’=1、W=4、W’=2、D’=0、およびM’=1からもたらされるS’=[101]であろう。
ここで図11Aを参照すると、最後の復号操作としてC1復号を有する反復復号の1つのあり得る結果による復号済み積符号語1100が示されている。復号済み積符号語1100においては、1つのC1符号語内のC1復号前の3個のチャネル・シンボル・エラー(x)と、別のC1符号語内の別の3個のチャネル・エラーおよびC1復号器エラーに起因して挿入された2個のシンボル・エラー(o)とを含む、数個のエラーが2つのC1符号語に存在する。この積符号語1100の他の複数のシンボルのうちの幾つかは不正確に復号されている(復号済みデータが読み出された媒体に記憶されたものとは異なるか、または符号化済みデータを生成したデータとは異なる)可能性があるが、反復復号はそのようなエラーを検出できなかった。しかし、それらのエラーの組み合わせの故に、この積符号語は有効な積符号語ではない。
1つの未訂正C1符号語があり(U=1)、復号済み積符号語1100において8個のC2符号語がノンゼロ・シンドロームを有し(W’=8)、復号済み積符号語1100においてC1符号語のうちの1つはノンゼロ・シンドロームを有し(W=1)、U以外の1つのC1符号語はC2エラー位置判断後に検出された少なくともd1個のシンボル・エラーを有し(D=1)、メモリ・エラーは検出されないので(M=0)、復号済み積符号語1100においては、S=[110]のエラー・シグネチャについてU=1、W’=8、W=1、D=1、およびM=0である。
図11Bは、最後の復号操作としてC2復号を有する反復復号の1つのあり得る結果による復号済み積符号語1150を示す。1つの未訂正C2符号語があり(U’=1)、復号済み積符号語1150において1つのC2符号語はノンゼロ・シンドロームを有し(W’=1)、復号済み積符号語1150においてC1符号語のうちの8つはノンゼロ・シンドロームを有し(W=8)、U’以外の1つのC2符号語はC1エラー位置判断後に検出された少なくともd2個のシンボル・エラーを有し(D’=1)、メモリ・エラーは検出されないので(M’=0)、この復号済み積符号語1150についてのエラー・シグネチャはU’=1、W=8、W’=1、D’=1、およびM’=0からもたらされるS’=[110]であろう。
ここで図12Aを参照すると、最後の復号操作としてC1復号を有する反復復号の1つのあり得る結果による復号済み積符号語1200が示されている。この復号済み積符号語1200において、1つのC1符号語内のC1復号前の3つのチャネル・シンボル・エラー(x)と、第2のC1符号語内の別の3つのチャネル・エラーおよびC1復号器エラーに起因して挿入された2つのシンボル・エラー(o)と、第3のC1符号語内のメモリ・エラーとを含む、数個のエラーが3つのC1符号語に存在する。この積符号語1200の他の複数のシンボルのうちの幾つかは不正確に復号されている(復号済みデータが読み出された媒体に記憶されたものとは異なるか、または符号化済みデータを生成したデータとは異なる)可能性があるが、反復復号はそのようなエラーを検出できなかった。しかし、それらのエラーの組み合わせの故に、この積符号語は有効な積符号語ではない。
1つの未訂正C1符号語があり(U=1)、復号済み積符号語1200において9つのC2符号語がノンゼロ・シンドロームを有し(W’=9)、復号済み積符号語1200においてC1符号語のうちの2つがノンゼロ・シンドロームを有し(W=2)、U以外の1つのC1符号語がC2エラー位置判断後に検出された少なくともd1個のシンボル・エラーを有し(D=1)、U以外の1つのC1符号語がC2エラー位置判断後に検出されたd1個未満のシンボル・エラーを有するために1つのメモリ・エラーが検出されるので(M=1)、復号済み積符号語1200においては、S=[111]のエラー・シグネチャについてU=1、W’=9、W=2、D=1、およびM=1である。
図12Bは、最後の復号操作としてC2復号を有する反復復号の1つのあり得る結果による復号済み積符号語1250を示す。1つの未訂正C2符号語があり(U’=1)、復号済み積符号語1250において2つのC2符号語がノンゼロ・シンドロームを有し(W’=2)、復号済み積符号語1250においてC1符号語のうちの9つがノンゼロ・シンドロームを有し(W=9)、U’以外の1つのC2符号語がC1エラー位置判断後に検出された少なくともd2個のシンボル・エラーを有し(D’=1)、1つのメモリ・エラーが検出されるので(M’=1)、この復号済み積符号語1250についてのエラー・シグネチャはU’=1、W=9、W’=2、D’=1、およびM’=1からもたらされるS’=[111]であろう。
ソリッドステート・メモリ、光ストレージ、光伝送などに用いられる積符号に対しては、エラー・リカバリー手順(ERP:error recovery procedure)においてダイアグノスティクス後アクションを使用することもでき(例えば、ダイアグノスティクスの結果)、この手順はデータ・リカバリー手順(DRP:data recovery procedure)と称されることもある。ERPまたはDRPについて2つの実施形態がある。すなわち、a)復号済みデータをバッファに記憶している間にエラーが発生する場合など(メモリ・エラー、ソフト・エラー)、データがバッファにおいて依然として利用可能であることに応じてデータの復号を繰り返す、あるいはb)光学式/磁気/ソリッドステート媒体からデータを再読して、その光学式/磁気/ソリッドステート媒体から再読された波形に応答してデータの復号を繰り返すかまたは追加の復号もしくはより強力な復号で再読済み波形を復号する(例えば、正常な復号を達成するための、より多くのC1/C2反復)。
ここで図13を参照すると、1つの実施形態による反復復号の方法1300が示されている。方法1300は、種々の実施形態で、とりわけ図1〜12に示されている環境のうちのいずれかにおいて本発明に従って実施され得る。無論、本記載を読めば当業者に理解されるように、図13に特に記載されている操作より多いかまたは少ない操作が方法1300に含まれ得る。
方法1300の各ステップは、動作環境の任意の適切なコンポーネントによって実施され得る。例えば、種々の実施形態で、方法1300は、コントローラ、プロセッサ、テープ・ドライブ、または1つ以上のプロセッサをその中に有する他の何らかのデバイスによって部分的にもしくは完全に実施され得る。ハードウェアもしくはソフトウェアまたはその両方で実装され、好ましくは少なくとも1つのハードウェア・コンポーネントを有する、プロセッサ、例えば、処理回路(単数または複数)、チップ(単数または複数)、もしくはモジュール(単数または複数)、またはそれらのいずれかの組み合わせを任意のデバイスで利用して方法1300の1つ以上のステップを実施することができる。例示的プロセッサは、CPU、ASIC、FPGAなど、それらの組み合わせ、または当該技術分野で知られている他の任意の適切なコンピューティング・デバイスを含むが、それらに限定はされない。
図13に示されているように、方法1300は操作1302から始まることができ、ここで反復カウンタ(i)がゼロに設定される(例えば、i=0)。この反復カウンタは、積符号語を含む受け取った符号化済みデータに対して復号が行われる反復の数を追跡するために使用される。
操作1304において、復号の別の(または第1の)反復がデータに対して行われようとしていることを示すために、反復カウンタは1インクリメントされる(例えば、i=i+1)。
操作1306において、C1復号済みデータを生成するために、積符号語を含む符号化済みデータに対してC1復号が実施される。
操作1308において、復号済みデータを生成するために積符号語を含むC1復号済みデータに対してC2復号が実施される。
操作1310において、反復カウンタが積符号語を復号するための所定の完全反復最大数(P)に等しいか否かが判断される(例えば、i=P)。Pは、任意の所望の目標を達成し任意の数の反復をもたらすように設定され得る。ストリーミング・モードではP=1であり、C1/C2復号の2回の反復についてはP=2である、等々である。
iがPに等しくなければ、方法1300はC1/C2復号を繰り返すために操作1304に戻る。iがPに等しければ、方法1300は操作1312へ続く。
操作1312において、最終復号済みデータを生成するためにC1復号が復号済みデータに対して重ねて実施され、訂正不能C1符号語の数(U)が計算される。
操作1314において、積符号語内のノンゼロ・シンドロームを有するC2符号語の数(W’)を計算するために最終復号済みデータに対してC2シンドローム・チェックが実施される。
操作1316において、積符号語内のノンゼロ・シンドロームを有するC1符号語の数(W)を計算するために最終復号済みデータに対してC1シンドローム・チェックが実施される。
図示されているように、方法1300は、エラー・シグネチャを判断するためにパラメータU、W’、およびWを得ることに依拠している。次に、方法1300は、復号済み積符号語についてエラー・シグネチャを計算するために図17のAへ続く。図17については、図14〜16で反復復号のための他の実施形態を記載した後に記載する。
ここで図14を参照すると、1つの実施形態による反復復号の方法1400が示されている。方法1400は、種々の実施形態で、とりわけ図1〜12に示されている環境のいずれかにおいて本発明に従って実施され得る。無論、本記載を読めば当業者に理解されるように、図14に特に記載されている操作より多いかまたは少ない操作が方法1400に含まれ得る。
方法1400の各ステップは、動作環境の任意の適切なコンポーネントによって実施され得る。例えば、種々の実施形態で、方法1400は、コントローラ、プロセッサ、テープ・ドライブ、または1つ以上のプロセッサをその中に有する他の何らかのデバイスによって部分的にもしくは完全に実施され得る。ハードウェアもしくはソフトウェアまたはその両方で実装され、好ましくは少なくとも1つのハードウェア・コンポーネントを有する、プロセッサ、例えば、処理回路(単数または複数)、チップ(単数または複数)、もしくはモジュール(単数または複数)、またはそれらのいずれかの組み合わせを任意のデバイスで利用して方法1400の1つ以上のステップを実施することができる。例示的プロセッサは、CPU、ASIC、FPGAなど、それらの組み合わせ、または当該技術分野で知られている他の任意の適切なコンピューティング・デバイスを含むが、それらに限定はされない。
図14に示されているように、方法1400は操作1402から始まることができ、ここで反復カウンタ(i)がゼロに設定される(例えば、i=0)。この反復カウンタは、積符号語を含む受け取った符号化済みデータに対して復号が行われる反復の数を追跡するために使用される。
操作1404において、復号の別の(または第1の)反復がデータに対して行われようとしていることを示すために反復カウンタは1インクリメントされる(例えば、i=i+1)。
操作1406において、C1復号済みデータを生成するために、積符号語を含む符号化済みデータに対してC1復号が実施される。
操作1408において、復号済みデータを生成するために積符号語を含むC1復号済みデータに対してC2復号が実施される。
操作1410において、反復カウンタが積符号語を復号するための所定の完全反復最大数(P)に等しいか否かが判断される(例えば、i=P)。Pは、任意の所望の目標を達成し任意の数の反復をもたらすように設定され得る。ストリーミング・モードではP=1であり、C1/C2復号の2回の反復についてはP=2である、等々である。
iがPに等しくなければ、方法1400はC1/C2復号を繰り返すために操作1404に戻る。iがPに等しければ、方法1400は操作1412へ続く。
操作1412において、C1復号後データを生成するために復号済みデータに対してC1復号が重ねて実施される。
操作1414において、最終復号済みデータを生成するためにC1復号後データに対してC2復号が実施される。さらに、訂正不能C2符号語の数(U’)が計算される。
操作1416において、積符号語内のノンゼロ・シンドロームを有するC1符号語の数(W)を計算するために最終復号済みデータに対してC1シンドローム・チェックが実施される。
操作1418において、積符号語内のノンゼロ・シンドロームを有するC2符号語の数(W’)を計算するために最終復号済みデータに対してC2シンドローム・チェックが実施される。
図示されているように、方法1400は、エラー・シグネチャを判断するためにパラメータU’、W’、およびWを得ることに依拠している。次に、方法1400は、復号済み積符号語についてエラー・シグネチャを計算するために図18のBへ続く。図18については、図17でエラー・シグネチャを計算するための他の実施形態を記載した後に記載する。
ここで図15を参照すると、1つの実施形態による反復復号の方法1500が示されている。方法1500は、種々の実施形態で、とりわけ図1〜12に示されている環境のいずれかにおいて本発明に従って実施され得る。無論、本記載を読めば当業者に理解されるように、図15に特に記載されている操作より多いかまたは少ない操作が方法1500に含まれ得る。
方法1500の各ステップは、動作環境の任意の適切なコンポーネントによって実施され得る。例えば、種々の実施形態で、方法1500は、コントローラ、プロセッサ、テープ・ドライブ、または1つ以上のプロセッサをその中に有する他の何らかのデバイスによって部分的にもしくは完全に実施され得る。ハードウェアもしくはソフトウェアまたはその両方で実装され、好ましくは少なくとも1つのハードウェア・コンポーネントを有する、プロセッサ、例えば、処理回路(単数または複数)、チップ(単数または複数)、もしくはモジュール(単数または複数)、またはそれらのいずれかの組み合わせを任意のデバイスで利用して方法1500の1つ以上のステップを実施することができる。例示的プロセッサは、CPU、ASIC、FPGAなど、それらの組み合わせ、または当該技術分野で知られている他の任意の適切なコンピューティング・デバイスを含むが、それらに限定はされない。
図15に示されているように、方法1500は操作1502から始まることができ、ここで反復カウンタ(i)がゼロに設定される(例えば、i=0)。この反復カウンタは、積符号語を含む受け取った符号化済みデータに対して復号が行われる反復の数を追跡するために使用される。
操作1504において、復号の別の(または第1の)反復がデータに対して行われようとしていることを示すために反復カウンタは1インクリメントされる(例えば、i=i+1)。
操作1506において、C2復号済みデータを生成するために積符号語を含む符号化済みデータに対してC2復号が実施される。
操作1508において、復号済みデータを生成するために積符号語を含むC2復号済みデータに対してC1復号が実施される。
操作1510において、反復カウンタが積符号語を復号するための所定の完全反復最大数(P)に等しいか否かが判断される(例えば、i=P)。Pは、任意の所望の目標を達成し、例えば、C2/C1復号の2完全反復、3完全反復、4完全反復など、任意の数の反復をもたらすように設定され得る。ストリーミング・モードではP=1であり、C2/C1復号の2反復についてはP=2である、等々である。
iがPに等しくなければ、方法1500はC2/C1復号を繰り返すために操作1504に戻る。iがPに等しければ、方法1500は操作1512へ続く。
操作1512において、最終復号済みデータを生成するために復号済みデータに対してC2復号が重ねて実施され、復号済みデータ内の訂正不能C2符号語の数(U’)が計算される。
操作1514において、積符号語内のノンゼロ・シンドロームを有するC1符号語の数(W)を計算するために最終復号済みデータに対してC1シンドローム・チェックが実施される。
操作1516において、積符号語内のノンゼロ・シンドロームを有するC2符号語の数(W’)を計算するために最終復号済みデータに対してC2シンドローム・チェックが実施される。
図示されているように、方法1500はエラー・シグネチャを判断するためにパラメータU’、W’、およびWを得ることに依拠している。次に、方法1500は、復号済み積符号語についてエラー・シグネチャを計算するために図18のBへ続く。
ここで図16を参照すると、1つの実施形態による反復復号の方法1600が示されている。方法1600は、種々の実施形態で、とりわけ図1〜12に示されている環境のいずれかにおいて本発明に従って実施され得る。無論、本記載を読めば当業者に理解されるように、図16に特に記載されている操作より多いかまたは少ない操作が方法1600に含まれ得る。
方法1600の各ステップは、動作環境の任意の適切なコンポーネントによって実施され得る。例えば、種々の実施形態で、方法1600は、コントローラ、プロセッサ、テープ・ドライブ、または1つ以上のプロセッサをその中に有する他の何らかのデバイスによって部分的にもしくは完全に実施され得る。ハードウェアもしくはソフトウェアまたはその両方で実装され、好ましくは少なくとも1つのハードウェア・コンポーネントを有する、プロセッサ、例えば、処理回路(単数または複数)、チップ(単数または複数)、もしくはモジュール(単数または複数)、またはそれらのいずれかの組み合わせを任意のデバイスで利用して方法1600の1つ以上のステップを実施することができる。例示的プロセッサは、CPU、ASIC、FPGAなど、それらの組み合わせ、または当該技術分野で知られている他の任意の適切なコンピューティング・デバイスを含むが、それらに限定はされない。
図16に示されているように、方法1600は操作1602から始まることができ、ここで反復カウンタ(i)がゼロに設定される(例えば、i=0)。この反復カウンタは、積符号語を含む受け取った符号化済みデータに対して復号が行われる反復の数を追跡するために使用される。
操作1604において、復号の別の(または第1の)反復がデータに対して行われようとしていることを示すために反復カウンタは1インクリメントされる(例えば、i=i+1)。
操作1606において、C2復号済みデータを生成するために積符号語を含む符号化済みデータに対してC2復号が実施される。
操作1608において、復号済みデータを生成するために積符号語を含むC2復号済みデータに対してC1復号が実施される。
操作1610において、反復カウンタが積符号語を復号するための所定の完全反復最大数(P)に等しいか否かが判断される(例えば、i=P)。Pは、任意の所望の目標を達成し、任意の数の反復をもたらすように設定され得る。ストリーミング・モードではP=1であり、C2/C1復号の2反復についてはP=2である、等々である。
iがPに等しくなければ、方法1600はC2/C1復号を繰り返すために操作1604に戻る。iがPに等しければ、方法1600は操作1612へ続く。
操作1612において、C2復号後データを生成するために復号済みデータに対してC2復号が実施される。
操作1614において、最終復号済みデータを生成するためにC2復号後データに対してC1復号が実施される。さらに、最終復号済みデータ内の訂正不能C1符号語の数(U)が計算される。
操作1616において、積符号語内のノンゼロ・シンドロームを有するC2符号語の数(W’)を計算するために最終復号済みデータに対してC2シンドローム・チェックが実施される。
操作1618において、積符号語内のノンゼロ・シンドロームを有するC1符号語の数(W)を計算するために最終復号済みデータに対してC1シンドローム・チェックが実施される。
図示されているように、方法1600はエラー・シグネチャを判断するためにパラメータU、W’、およびWを得ることに依拠している。次に、方法1600は、復号済み積符号語についてエラー・シグネチャを計算するために図17のAへ続く。
ここで図17を参照すると、1つの実施形態による方法1700が示されており、この方法は図13および16に示されている方法のいずれかの後に実施され得る。再び図17を参照すると、方法1700は、種々の実施形態で、とりわけ図1〜12に示されている環境のいずれかにおいて本発明に従って実施され得る。無論、本記載を読めば当業者に理解されるように、図17に特に記載されている操作より多いかまたは少ない操作が方法1700に含まれ得る。
方法1700の各ステップは、動作環境の任意の適切なコンポーネントによって実施され得る。例えば、種々の実施形態で、方法1700は、コントローラ、プロセッサ、テープ・ドライブ、または1つ以上のプロセッサをその中に有する他の何らかのデバイスによって部分的にもしくは完全に実施され得る。ハードウェアもしくはソフトウェアまたはその両方で実装され、好ましくは少なくとも1つのハードウェア・コンポーネントを有する、プロセッサ、例えば、処理回路(単数または複数)、チップ(単数または複数)、もしくはモジュール(単数または複数)、またはそれらのいずれかの組み合わせを任意のデバイスで利用して方法1700の1つ以上のステップを実施することができる。例示的プロセッサは、CPU、ASIC、FPGAなど、それらの組み合わせ、または当該技術分野で知られている他の任意の適切なコンピューティング・デバイスを含むが、それらに限定はされない。
図17に示されているように、方法1700は先に実施された反復復号方法からのつながりのAから操作1702で開始され、ここで訂正不能C1符号語の数(U)がゼロに等しいかどうかが判断される(例えば、U=0)。Uがゼロに等しければ、方法1700は操作1704へ続き、そうでなければ、方法1700は操作1712へ移動する。
操作1704において、C2シンドロームのチェック後に検出された積符号語内のノンゼロ・シンドロームを有するC2符号語(無効なC2符号語)の数がゼロに等しいかどうかが判断される(例えば、W’=0)。W’がゼロに等しければ、方法1700は操作1714へ移動し、そうでなければ、方法1700は操作1706へ続く。
操作1706において、C2シンドロームのチェック後に検出された積符号語内のノンゼロ・シンドロームを有するC2符号語(無効なC2符号語)の数がC1符号についての最小ハミング距離(d1)より小さいかどうかが判断される(例えば、W’<d1)。W’がd1より小さければ、方法1700は操作1708へ続き、そうでなければ、方法1700は操作1716へ移動する。
操作1708において、W’<d1に応答してメモリ・エラーが検出されており、操作1710においてS=[001]のエラー・シグネチャが出力される。
操作1712において、U≠0に応答してチャネル・エラーが検出されており、方法1700は操作1718へ続く。
操作1714において、復号が成功していると判断されており、方法1700は操作1726へ続く。
操作1716において、W’≧d1に応答してC1復号器エラーが検出され、方法1700は操作1728へ続く。
操作1718において、C2シンドロームのチェック後に検出された積符号語内のノンゼロ・シンドロームを有するC1符号語(無効なC1符号語)の数(W)が訂正不能C1符号語の数(U)に等しいかどうかが判断される(例えば、W=U)。WがUに等しければ、方法1700は操作1724へ移動し、そうでなければ、方法1700は操作1720へ続く。
操作1720において、W≠UでありかつU≠0であることに応答してメモリ・エラーが検出されており、操作1722において、S=[1d1]のエラー・シグネチャが出力され、ここでdはDの値に基づき、D=0ならばd=0であり、D>0であればd=1である。
操作1724において、S=[1d0]のエラー・シグネチャが出力され、ここでdはDの値に基づき、D=0ならばd=0であり、D>0ならばd=1である。
操作1726において、積符号語内の全ての符号語の復号に成功したことに応答してS=[000]のエラー・シグネチャが出力される。
操作1728において、C2シンドロームのチェック後に検出された積符号語内のノンゼロ・シンドロームを有するC1符号語(無効なC1符号語)の数(W)がゼロに等しいかどうかが判断される(例えば、W=0)。Wが0に等しければ方法1700は操作1730へ移動し、そうでなければ、方法1700は操作1732へ続く。
操作1730において、S=[010]のエラー・シグネチャが出力される。
操作1732において、W’≧d1でありかつW≠0であることに応答してメモリ・エラーが検出されており、操作1734においてS=[011]のエラー・シグネチャが出力される。
1つの実施形態によると、方法1700でエラー・シグネチャが得られた後、符号化済みデータを媒体から再読する前に、もしくは反復復号を重ねて試みる前に、またはその両方の前に、そのエラー・シグネチャにより識別される特定のタイプのエラーを修正するために1つ以上のアクションを実施することができる。それらのアクションは、媒体の物理的位置をリード・センサ(単数または複数)に対して横方向に調整すること、リード・センサ(単数または複数)に関して媒体を前方にまたは後方に移動させること、符号化済みデータを復号するためにより強くまたはより弱く集中的な復号アルゴリズム(単数または複数)を使用すること、符号化済みデータを復号するために1つ以上の異なる復号アルゴリズムを使用すること、復号スキームでの反復の数を増やしまたは減らすこと、再読中の媒体の移動速度を高めまたは低めること、などを含むことができる。
ここで図18を参照すると、図14および15に示されている方法のいずれかの後に実施され得る、1つの実施形態による方法1800が示されている。再び図18を参照すると、方法1800は、種々の実施形態で、とりわけ図1〜12に示されている環境のいずれかにおいて本発明に従って実施され得る。無論、本記載を読めば当業者に理解されるように、図18に特に記載されている操作より多いかまたは少ない操作が方法1800に含まれ得る。
方法1800の各ステップは、動作環境の任意の適切なコンポーネントによって実施され得る。例えば、種々の実施形態で、方法1800は、コントローラ、プロセッサ、テープ・ドライブ、または1つ以上のプロセッサをその中に有する他の何らかのデバイスによって部分的にもしくは完全に実施され得る。ハードウェアもしくはソフトウェアまたはその両方で実装され、好ましくは少なくとも1つのハードウェア・コンポーネントを有する、プロセッサ、例えば、処理回路(単数または複数)、チップ(単数または複数)、もしくはモジュール(単数または複数)、またはそれらのいずれかの組み合わせを任意のデバイスで利用して方法1800の1つ以上のステップを実施することができる。例示的プロセッサは、CPU、ASIC、FPGAなど、それらの組み合わせ、または当該技術分野で知られている他の任意の適切なコンピューティング・デバイスを含むが、それらに限定はされない。
図18に示されているように、方法1800は先に実施された反復復号方法からのつながりのBから操作1802で開始され、ここで訂正不能C2符号語の数(U’)がゼロに等しいかどうかが判断される(例えば、U’=0)。U’がゼロに等しければ、方法1800は操作1804へ続き、そうでなければ、方法1800は操作1812へ移動する。
操作1804において、C1シンドロームのチェック後に検出された積符号語内のノンゼロ・シンドロームを有するC1符号語(無効なC1符号語)の数がゼロに等しいかどうかが判断される(例えば、W=0)。Wがゼロに等しければ、方法1800は操作1814へ移動し、そうでなければ、方法1800は操作1806へ続く。
操作1806において、C1シンドロームのチェック後に検出された積符号語内のノンゼロ・シンドロームを有するC1符号語(無効なC1符号語)の数がC2符号についての最小ハミング距離(d2)より小さいかどうかが判断される(例えば、W<d2)。Wがd2より小さければ、方法1800は操作1808へ続き、そうでなければ、方法1800は操作1816へ移動する。
操作1808において、W<d2に応答してメモリ・エラーが検出されており、操作1810においてS’=[001]のエラー・シグネチャが出力される。
操作1812において、U’≠0に応答してチャネル・エラーが検出されており、方法1800は操作1818へ続く。
操作1814において、復号が成功していると判断されており、方法1800は操作1826へ続く。
操作1816において、W≧d2に応答してC2復号器エラーが検出され、方法1800は操作1828へ続く。
操作1818において、C2シンドロームのチェック後に検出された積符号語内のノンゼロ・シンドロームを有するC2符号語(無効なC2符号語)の数(W’)が訂正不能C2符号語の数(U’)に等しいかどうかが判断される(例えば、W’=U’)。W’がU’に等しければ、方法1800は1824へ移動し、そうでなければ、方法1800は操作1820へ続く。
操作1820において、W’≠U’でありかつU’≠0であることに応答してメモリ・エラーが検出されており、操作1822においてS’=[1d’1]のエラー・シグネチャが出力され、ここでd’はD’の値に基づき、D’=0ならばd’=0であり、D’>0であればd’=1である。
操作1824において、S’=[1d’0]のエラー・シグネチャが出力され、ここでd’はD’の値に基づき、D’=0ならばd’=0であり、D’>0ならばd’=1である。
操作1826において、積符号語内の全ての符号語の復号に成功したことに応答してS’=[000]のエラー・シグネチャが出力される。
操作1828において、C2シンドロームのチェック後に検出された積符号語内のノンゼロ・シンドロームを有するC2符号語(無効なC2符号語)の数(W’)がゼロに等しいかどうかが判断される(例えば、W’=0)。W’が0に等しければ方法1800は操作1830へ移動し、そうでなければ、方法1800は操作1832へ続く。
操作1830において、S’=[010]のエラー・シグネチャが出力される。
操作1832において、W<d2でありかつW’≠0であることに応答してメモリ・エラーが検出されており、操作1834においてS’=[011]のエラー・シグネチャが出力される。
1つの実施形態によると、方法1800でエラー・シグネチャが得られた後、符号化済みデータを媒体から再読する前に、もしくは反復復号を重ねて試みる前に、またはその両方の前に、そのエラー・シグネチャにより識別される特定のタイプのエラーを修正するために1つ以上のアクションを実施することができる。それらのアクションは、媒体の物理的位置をリード・センサ(単数または複数)に対して横方向に調整すること、リード・センサ(単数または複数)に関して媒体を前方にまたは後方に移動させること、符号化済みデータを復号するためにより強くまたはより弱く集中的な復号アルゴリズム(単数または複数)を使用すること、符号化済みデータを復号するために1つ以上の異なる復号アルゴリズムを使用すること、復号スキームでの反復の数を増やしまたは減らすこと、再読中の媒体の移動速度を高めまたは低めること、などを含むことができる。
ここで図19を参照すると、反復復号のための1つの実施形態による方法1900が示されている。方法1900は、種々の実施形態で、とりわけ図1〜12に示されている環境のいずれかにおいて本発明に従って実施され得る。無論、本記載を読めば当業者に理解されるように、図19に特に記載されている操作より多いかまたは少ない操作が方法1900に含まれ得る。
方法1900の各ステップは、動作環境の任意の適切なコンポーネントによって実施され得る。例えば、種々の実施形態で、方法1900は、コントローラ、プロセッサ、テープ・ドライブ、または1つ以上のプロセッサをその中に有する他の何らかのデバイスによって部分的にもしくは完全に実施され得る。ハードウェアもしくはソフトウェアまたはその両方で実装され、好ましくは少なくとも1つのハードウェア・コンポーネントを有する、プロセッサ、例えば、処理回路(単数または複数)、チップ(単数または複数)、もしくはモジュール(単数または複数)、またはそれらのいずれかの組み合わせを任意のデバイスで利用して方法1900の1つ以上のステップを実施することができる。例示的プロセッサは、CPU、ASIC、FPGAなど、それらの組み合わせ、または当該技術分野で知られている他の任意の適切なコンピューティング・デバイスを含むが、それらに限定はされない。
図19に示されているように、方法1900は操作1902から始まることができ、ここで反復カウンタ(i)がゼロに設定される(例えば、i=0)。この反復カウンタは、積符号語を含む受け取った符号化済みデータに対して復号が行われる反復の数を追跡するために使用される。
操作1904において、復号の別の(または第1の)反復がデータに対して行われようとしていることを示すために反復カウンタは1インクリメントされる(例えば、i=i+1)。
操作1906において、C1復号済みデータを生成するために積符号語を含む符号化済みデータに対してC1復号が実施される。
操作1908において、復号済みデータを生成するために積符号語を含むC1復号済みデータに対してC2復号が実施される。
操作1910において、反復カウンタが積符号語を復号するための所定の完全反復最大数(P)に等しいか否かが判断される(例えば、i=P)。Pは、任意の所望の目標を達成し、任意の数の反復をもたらすように設定され得る。ストリーミング・モードではP=1であり、C1/C2復号の2反復についてはP=2である、等々である。
iがPに等しくなければ、方法1900はC1/C2復号を繰り返すために操作1904に戻る。iがPに等しければ、方法1900は操作1912へ続く。
操作1912において、最終復号済みデータを生成するために復号済みデータに対してC1復号が再び実施され、積符号語内の訂正不能C1符号語の数(U)が計算される。
その後、方法1900は、復号済み積符号語についてエラー・シグネチャを計算するために図20のCへ続く。
ここで図20を参照すると、1つの実施形態による方法2000が示されている。方法2000は、種々の実施形態で、とりわけ図1〜12に示されている環境のいずれかにおいて本発明に従って実施され得る。無論、本記載を読めば当業者に理解されるように、図20に特に記載されている操作より多いかまたは少ない操作が方法2000に含まれ得る。
方法2000の各ステップは、動作環境の任意の適切なコンポーネントによって実施され得る。例えば、種々の実施形態で、方法2000は、コントローラ、プロセッサ、テープ・ドライブ、または1つ以上のプロセッサをその中に有する他の何らかのデバイスによって部分的にもしくは完全に実施され得る。ハードウェアもしくはソフトウェアまたはその両方で実装され、好ましくは少なくとも1つのハードウェア・コンポーネントを有する、プロセッサ、例えば、処理回路(単数または複数)、チップ(単数または複数)、もしくはモジュール(単数または複数)、またはそれらのいずれかの組み合わせを任意のデバイスで利用して方法2000の1つ以上のステップを実施することができる。例示的プロセッサは、CPU、ASIC、FPGAなど、それらの組み合わせ、または当該技術分野で知られている他の任意の適切なコンピューティング・デバイスを含むが、それらに限定はされない。
図20に示されているように、方法2000は操作2002から始まることができ、ここで、W’と称されるノンゼロC2シンドローム(無効なC2符号語)の数を計算するために最終復号済みデータに対してC2シンドローム・チェックが実施される。
操作2004において、無効なC2符号語と復号中に得られた他の情報とに基づいてC2エラー位置が計算される。
操作2006において、C2エラー位置がC1エラー位置に変換される。積符号語においてC1およびC2符号語は直交するので、C2符号語内のエラーの位置はC1符号語内のエラーの位置に変換され得、その逆も行われ得る。
操作2008において、訂正不能C1符号語(U)以外の、少なくともd1個のシンボル・エラーを有するC1符号語の数(D)が計算される。さらに、訂正不能C1符号語(U)以外の、d1個未満のシンボル・エラーを有するC1符号語の数(M)が計算される。これらの値、DおよびM、の両方はC2エラー位置が判断された後に計算される。
操作2010において、前述の関係に基づいてc、d、およびmが計算され、対応するエラー・シグネチャS=[cdm]が出力される。
1つの実施形態によると、方法2000でエラー・シグネチャが得られた後、符号化済みデータを媒体から再読する前に、もしくは反復復号を重ねて試みる前に、またはその両方の前に、そのエラー・シグネチャにより識別される特定のタイプのエラーを修正するために1つ以上のアクションを実施することができる。それらのアクションは、媒体の物理的位置をリード・センサ(単数または複数)に対して横方向に調整すること、リード・センサ(単数または複数)に関して媒体を前方にまたは後方に移動させること、符号化済みデータを復号するためにより強くまたはより弱く集中的な復号アルゴリズム(単数または複数)を使用すること、符号化済みデータを復号するために1つ以上の異なる復号アルゴリズムを使用すること、復号スキームでの反復の数を増やしまたは減らすこと、再読中の媒体の移動速度を高めまたは低めること、などを含むことができる。
方法2000は、例として図19に示されている方法1900など、最後の復号操作としてのC1復号をもって終了するC1/C2反復復号の後、Uの判断、ならびにDおよびMの計算に依拠するエラー・シグネチャ計算である。
ここで図21を参照すると、1つの実施形態による方法2100が示されている。方法2100は、種々の実施形態で、とりわけ図1〜12に示されている環境のいずれかにおいて本発明に従って実施され得る。無論、本記載を読めば当業者に理解されるように、図21に特に記載されている操作より多いかまたは少ない操作が方法2100に含まれ得る。
方法2100の各ステップは、動作環境の任意の適切なコンポーネントによって実施され得る。例えば、種々の実施形態で、方法2100は、コントローラ、プロセッサ、テープ・ドライブ、または1つ以上のプロセッサをその中に有する他の何らかのデバイスによって部分的にもしくは完全に実施され得る。ハードウェアもしくはソフトウェアまたはその両方で実装され、好ましくは少なくとも1つのハードウェア・コンポーネントを有する、プロセッサ、例えば、処理回路(単数または複数)、チップ(単数または複数)、もしくはモジュール(単数または複数)、またはそれらのいずれかの組み合わせを任意のデバイスで利用して方法2100の1つ以上のステップを実施することができる。例示的プロセッサは、CPU、ASIC、FPGAなど、それらの組み合わせ、または当該技術分野で知られている他の任意の適切なコンピューティング・デバイスを含むが、それらに限定はされない。
図21に示されているように、方法2100は操作2102から始まることができ、ここで反復カウンタ(i)がゼロに設定される(例えば、i=0)。この反復カウンタは、積符号語を含む受け取った符号化済みデータに対して復号が行われる反復の数を追跡するために使用される。
操作2104において、復号の別の(または第1の)反復がデータに対して行われようとしていることを示すために反復カウンタは1インクリメントされる(例えば、i=i+1)。
操作2106において、C2復号済みデータを生成するために積符号語を含む符号化済みデータに対してC2復号が実施される。
操作2108において、復号済みデータを生成するために積符号語を含むC2復号済みデータに対してC1復号が実施される。
操作2110において、反復カウンタが積符号語を復号するための所定の完全反復最大数(P)に等しいか否かが判断される(例えば、i=P)。Pは、任意の所望の目標を達成し、任意の数の反復をもたらすように設定され得る。ストリーミング・モードではP=1であり、C2/C1復号の2反復についてはP=2である、等々である。
iがPに等しくなければ、方法2100はC2/C1復号を繰り返すべく操作2104に戻る。iがPに等しければ、方法2100は操作2112へ続く。
操作2112において、最終復号済みデータを生成するために復号済みデータに対してC2復号が再び実施される。次に、方法2100は、復号済み積符号語についてのエラー・シグネチャを計算するために図22のDに続く。
ここで図22を参照すると、1つの実施形態による方法2200が示されている。方法2200は、種々の実施形態で、とりわけ図1〜12に示されている環境のいずれかにおいて本発明に従って実施され得る。無論、本記載を読めば当業者に理解されるように、図22に特に記載されている操作より多いかまたは少ない操作が方法2200に含まれ得る。
方法2200の各ステップは、動作環境の任意の適切なコンポーネントによって実施され得る。例えば、種々の実施形態で、方法2200は、コントローラ、プロセッサ、テープ・ドライブ、または1つ以上のプロセッサをその中に有する他の何らかのデバイスによって部分的にもしくは完全に実施され得る。ハードウェアもしくはソフトウェアまたはその両方で実装され、好ましくは少なくとも1つのハードウェア・コンポーネントを有する、プロセッサ、例えば、処理回路(単数または複数)、チップ(単数または複数)、もしくはモジュール(単数または複数)、またはそれらのいずれかの組み合わせを任意のデバイスで利用して方法2200の1つ以上のステップを実施することができる。例示的プロセッサは、CPU、ASIC、FPGAなど、それらの組み合わせ、または当該技術分野で知られている他の任意の適切なコンピューティング・デバイスを含むが、それらに限定はされない。
図22に示されているように、方法2200は操作2202から始まることができ、ここで、Wと称されるノンゼロC1シンドローム(無効なC1符号語)の数を計算するために最終復号済みデータに対してC1シンドローム・チェックが実施される。
操作2204において、無効なC1符号語と復号中に得られた他の情報とに基づいてC1エラー位置が計算される。
操作2206において、C1エラー位置がC2エラー位置に変換される。積符号語においてC1およびC2符号語は直交するので、C1符号語内のエラーの位置はC2符号語内のエラーの位置に変換され得、その逆も行われ得る。
操作2208において、訂正不能C2符号語(U’)以外の、少なくともd2個のシンボル・エラーを有するC2符号語の数(D’)が計算される。さらに、訂正不能C2符号語(U’)以外の、d2個未満のシンボル・エラーを有するC2符号語の数(M’)が計算される。これらの値、D’およびM’、の両方はC1エラー位置が判断された後に計算される。
操作2210において、前述の関係に基づいてc’、d’、およびm’が計算され、対応するエラー・シグネチャS’=[c’ d’m’]が出力される。
1つの実施形態によると、方法2200でエラー・シグネチャが得られた後、符号化済みデータを媒体から再読する前に、もしくは反復復号を重ねて試みる前に、またはその両方の前に、そのエラー・シグネチャにより識別される特定のタイプのエラーを修正するために1つ以上のアクションを実施することができる。それらのアクションは、媒体の物理的位置をリード・センサ(単数または複数)に対して横方向に調整すること、リード・センサ(単数または複数)に関して媒体を前方にまたは後方に移動させること、符号化済みデータを復号するためにより強くまたはより弱く集中的な復号アルゴリズム(単数または複数)を使用すること、符号化済みデータを復号するために1つ以上の異なる復号アルゴリズムを使用すること、復号スキームでの反復の数を増やしまたは減らすこと、再読中の媒体の移動速度を高めまたは低めること、などを含むことができる。
方法2200は、最後の復号操作としてのC2復号操作をもって終了するC2/C1反復復号の後、U’の判断、ならびにD’およびM’の計算に依拠するエラー・シグネチャ計算である。
1つの実施形態では、エラーがメモリにおけるソフト失敗に起因するのか、C1復号器またはC2復号器による誤訂正であるのか、あるいは訂正不能エラーであるのかを識別するためにC1およびC2復号器ならびにC1およびC2シンドローム・チェッカーについてのエラー訂正ステータスを使用することができる。表3は、1つの実施形態による、復号器ステータス、シンドローム・チェッカー・ステータス、およびどのタイプのエラーが存在するのかということの関係を示す。
Figure 0006817301
本発明は、システム、方法、もしくはコンピュータ・プログラム製品またはその全部であり得る。コンピュータ・プログラム製品は、本発明の態様をプロセッサに実行させるためのコンピュータ可読プログラム命令を有するコンピュータ可読記憶媒体(または複数のコンピュータ可読記憶媒体)を含み得る。
コンピュータ可読記憶媒体は、命令実行デバイスに用いられる命令を保持し記憶することのできる有形のデバイスであり得る。コンピュータ可読記憶媒体は、例えば、電子的記憶デバイス、磁気記憶デバイス、光記憶デバイス、電磁的記憶デバイス、半導体記憶デバイス、または前述のものの任意の適切な組み合わせであり得るが、それらに限定はされない。コンピュータ可読記憶媒体のより具体的な例の非網羅的リストは次のもの、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ(RAM)、読み出し専用メモリ(ROM:read−only memory)、消去可能プログラマブル読み出し専用メモリ(EPROM:erasable programmable read−only memory、またはフラッシュ・メモリ)、スタティック・ランダム・アクセス・メモリ(SRAM:static random access memory)、ポータブル・コンパクト・ディスク読み出し専用メモリ(CD−ROM:compact disc read−only memory)、デジタル・バーサタイル・ディスク(DVD:digital versatile disk)、メモリ・スティック、フレキシブル・ディスク、機械符号化デバイス、例えばパンチ・カードまたは命令が記録されている溝の中の隆起構造、および前述のものの任意の適切な組み合わせを含む。本明細書で使用されるコンピュータ可読記憶媒体は、電波もしくは他の自由に伝播する電磁波、導波管もしくは他の伝送媒体を通って伝播する電磁波(例えば光ファイバ・ケーブルを通って進む光パルス)、またはワイヤを伝わる電気信号などの一時的信号自体であると解釈されるべきではない。
本明細書に記載されたコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体からそれぞれのコンピューティング/処理デバイスに、またはネットワーク、例えばインターネット、ローカル・エリア・ネットワーク、ワイド・エリア・ネットワークもしくは無線ネットワークまたはそれらのいずれかの組み合わせ、を介して外部コンピュータもしくは外部記憶デバイスに、ダウンロードされ得る。ネットワークは、銅製伝送ケーブル、光伝送ファイバ、無線送信、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータもしくはエッジ・サーバまたはそれらのいずれかの組み合わせを含み得る。各コンピューティング/処理デバイスのネットワーク・アダプタ・カードまたはネットワーク・インターフェースは、ネットワークからコンピュータ可読プログラム命令を受け取って、そのコンピュータ可読プログラム命令をそれぞれのコンピューティング/処理デバイスの中のコンピュータ可読記憶媒体に記憶させるべく転送する。
本発明の操作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、
命令セット・アーキテクチャ(ISA:instruction−set−architecture)命令、マシン命令、マシン依存命令、マイクロコード、ファームウェア命令、状態セッティング・データ、または、Smalltalk、C++、もしくは同様のもののオブジェクト指向プログラミング言語および「C」プログラミング言語もしくは類似のプログラミング言語等の在来の手続き型プログラミング言語を含む1つ以上のプログラミング言語の任意の組み合わせで書かれたソース・コードもしくはオブジェクト・コードであり得る。コンピュータ可読プログラム命令は、完全にユーザのコンピュータ上で、部分的にユーザのコンピュータ上で、スタンドアロン型ソフトウェア・パッケージとして、部分的にユーザのコンピュータ上でかつ部分的にリモート・コンピュータ上でまたは完全にリモート・コンピュータもしくはサーバ上で、実行し得る。後者のシナリオでは、リモート・コンピュータはローカル・エリア・ネットワーク(LAN)またはワイド・エリア・ネットワーク(WAN)を含む任意のタイプのネットワークを通してユーザのコンピュータに接続され得、あるいは接続は(例えば、インターネット・サービス・プロバイダを用いてインターネットを通して)外部コンピュータに対してなされ得る。幾つかの実施形態では、本発明の態様を実施するために、例えばプログラマブル論理回路、フィールド・プログラマブル・ゲート・アレイ(FPGA:field programmable gate array)、またはプログラマブル・ロジック・アレイ(PLA:programmable logic array)を含む電子回路は、コンピュータ可読プログラム命令の状態情報を利用してこの電子回路を個人化することによりコンピュータ可読プログラム命令を実行し得る。
本発明の態様は本明細書において本発明の実施形態による方法、装置(システム)、およびコンピュータ・プログラム製品のフローチャート図もしくはブロック図またはその両方と関連して記載されている。フローチャート図もしくはブロック図またはその両方の各ブロック、フローチャート図もしくはブロック図またはその両方のブロックの組み合わせはコンピュータ可読プログラム命令により実装され得るということが理解されるであろう。
これらのコンピュータ可読プログラム命令は、コンピュータまたは他のプログラマブルなデータ処理装置のプロセッサを介して実行する命令がフローチャートもしくはブロック図またはその両方の1つもしくは複数のブロックで指定されている機能/動作を実行する手段を作るように、汎用コンピュータ、特殊目的コンピュータ、または他のプログラマブルなデータ処理装置のプロセッサに供給されてマシンを作り得る。これらのコンピュータ可読プログラム命令は、命令が記憶されているコンピュータ可読記憶媒体がフローチャートもしくはブロック図またはその両方の1つもしくは複数のブロックで指定されている機能/動作の態様を実装する命令を含む製造物品を含むように、コンピュータ、プログラマブルなデータ処理装置もしくは他のデバイスまたはそれらのいずれかの組み合わせに対して特定の仕方で機能させることのできるコンピュータ可読記憶媒体に記憶されることもできる。
コンピュータ可読プログラム命令は、コンピュータ、他のプログラマブルな装置、または他のデバイス上で実行する命令がフローチャートもしくはブロック図またはその両方の1つもしくは複数のブロックで指定されている機能/動作を実行するように、一連の操作ステップをコンピュータ、他のプログラマブルな装置または他のデバイス上で実施させてコンピュータ実行のプロセスを生成するために、コンピュータ、他のプログラマブルなデータ処理装置または他のデバイスにロードされることもできる。
図面のフローチャートおよびブロック図は、本発明の種々の実施形態によるシステム、方法、およびコンピュータ・プログラム製品の可能な実装のアーキテクチャ、機能性、および操作を示す。このことに関して、フローチャートまたはブロック図の各ブロックは、指定された論理機能(単数または複数)を実装するための1つ以上の実行可能な命令を含むモジュール、セグメント、または命令の部分を表すことができる。幾つかの代替の実装では、ブロックに示されている機能は、図面に示されている順序から外れて行われ得る。例えば、連続して示されている2つのブロックは、実際には、実質的に同時に実行され得、またはそれらのブロックは、ときには、関連する機能性に応じて逆の順序で実行され得る。ブロック図もしくはフローチャート図またはその両方の各ブロック、および、ブロック図もしくはフローチャート図またはその両方のブロック群の組み合わせは、指定された機能または動作を実施しまたは特殊目的ハードウェアおよびコンピュータ命令の組み合わせを実行する特殊目的ハードウェア・ベース・システムにより実装され得るということも留意されたい。
さらに、種々の実施形態によるシステムは、プロセッサと、そのプロセッサと統合されるかもしくはそのプロセッサにより実行可能であるかまたはその両方であるロジックとを含むことができ、そのロジックは、本明細書に詳述されているプロセス・ステップのうちの1つ以上を実施するように構成される。統合されているということは、ASIC、FPGAなど、プロセッサにロジックがハードウェア・ロジックとして埋め込まれているということを意味する。プロセッサにより実行可能であるということは、ロジックが、ハードウェア・ロジック、ソフトウェア・ロジック、例えばファームウェア、オペレーティング・システムの一部、アプリケーション・プログラムの一部などであるか、または、プロセッサによりアクセス可能でそのプロセッサによる実行時に或る機能性をプロセッサに実施させるように構成されたハードウェアおよびソフトウェア・ロジックの何らかの組み合わせであるということを意味する。当該技術分野で知られているように、ソフトウェア・ロジックは任意のメモリ・タイプのローカルもしくはリモート・メモリまたはその両方に記憶され得る。ソフトウェア・プロセッサ・モジュールもしくはハードウェア・プロセッサ、例えばASIC、FPGA、CPU、集積回路(IC:integrated circuit)、グラフィクス処理装置(GPU:graphics processing unit)など、またはその両方など、当該技術分野で知られている任意のプロセッサが使用され得る。
前述のシステムもしくは方法論またはその両方の種々の特徴を任意に組み合わせて、上で提示した記載から複数の組み合わせを作ることができるということは明らかであろう。
オンデマンドでサービスを提供するように顧客のために展開されたサービスの形で本発明の実施形態を提供できることもさらに認識されるであろう。
種々の実施形態が上に記載されているが、それらは単なる例として与えられているのであって、限定として与えられているわけではないことが理解されるべきである。従って、好ましい実施形態の広さおよび範囲は上記の例示的実施形態のいずれによっても限定されるべきではなく、添付の特許請求の範囲およびそれらの等価物のみに従って定義されるべきである

Claims (9)

  1. コントローラと、前記コントローラに統合されもしくは前記コントローラにより実行可能でありまたはその両方であるロジックとを含むシステムであって、前記ロジックは、
    復号済みデータを得るために符号化済みデータに対して反復復号を実施し、ここで、少なくとも3つの復号操作が前記反復復号において実施され、前記復号操作はC1復号およびC2復号を含む群から選択され、
    前記符号化済みデータの前記反復復号後に前記復号済みデータの第1部分において有効な積符号語が得られなかったことに応答して、前記第1部分に対して復号後エラー・ダイアグノスティクスを実行する、ように構成される、
    システムであって、
    前記復号済みデータに対して復号後エラー・ダイアグノスティクスを実施するように構成されている前記ロジックは、前記復号済みデータにおけるエラー・シグネチャを特定するようにさらに構成され、
    前記復号済みデータにおける前記エラー・シグネチャを特定するように構成された前記ロジックは、
    前記復号済みデータ内の訂正不能C1符号語の数(U)を得、
    前記復号済みデータ内のノンゼロ・シンドロームを有するC2符号語の数(W’)を得、
    前記復号済みデータ内のノンゼロ・シンドロームを有するC1符号語の数(W)を得、
    前記数(U)の訂正不能C1符号語を除いて少なくとも閾値(d1)個のシンボル・エラーがその中に検出された前記復号済みデータ内のC1符号語の数(D)を得、
    前記数(U)の訂正不能C1符号語を除いて前記閾値(d1)個未満のシンボル・エラーがその中に検出された前記復号済みデータ内のC1符号語の数(M)を得る
    ようにさらに構成される、
    システム。
  2. 前記ロジックは前記復号済みデータについて8つのエラー・シグネチャ、すなわち、前記復号済みデータにおいてどのエラー・タイプも発見されないことを表す第1エラー・シグネチャ、前記復号済みデータにおいて少なくとも1つのメモリ・エラー(M>0)が発見されることを表す第2エラー・シグネチャ、前記復号済みデータにおいて少なくとも1つの復号器エラー(D>0)が発見されることを表す第3エラー・シグネチャ、前記復号済みデータにおいて少なくとも1つの復号器エラー(D>0)および少なくとも1つのメモリ・エラー(M>0)が発見されることを表す第4エラー・シグネチャ、前記復号済みデータにおいて少なくとも1つのチャネル・エラー(U>0)が発見されることを表す第5エラー・シグネチャ、前記復号済みデータにおいて少なくとも1つのチャネル・エラー(U>0)および少なくとも1つのメモリ・エラー(M>0)が発見されることを表す第6エラー・シグネチャ、前記復号済みデータにおいて少なくとも1つのチャネル・エラー(U>0)および少なくとも1つの復号器エラー(D>0)が発見されることを表す第7エラー・シグネチャ、ならびに前記復号済みデータにおいて少なくとも1つのチャネル・エラー(U>0)、少なくとも1つの復号器エラー(D>0)、および少なくとも1つのメモリ・エラー(M>0)が発見されることを表す第8エラー・シグネチャ、を定義するようにさらに構成される、請求項に記載のシステム。
  3. 前記第1エラー・シグネチャはU=0、D=0、およびM=0という状態に応答して特定され、前記第2エラー・シグネチャはU=0、D=0、およびM>0という状態に応答して特定され、前記第3エラー・シグネチャはU=0、D>0、およびM=0という状態に応答して特定され、前記第4エラー・シグネチャはU=0、D>0、およびM>0という状態に応答して特定され、前記第5エラー・シグネチャはU>0、D=0、およびM=0という状態に応答して特定され、前記第6エラー・シグネチャはU>0、D=0、およびM>0という状態に応答して特定され、前記第7エラー・シグネチャはU>0、D>0、およびM=0という状態に応答して特定され、前記第8エラー・シグネチャはU>0、D>0、およびM>0という状態に応答して特定される、請求項に記載のシステム。
  4. コントローラで実施される方法であって、前記方法は、
    復号済みデータを得るために符号化済みデータに対して反復復号を実施するステップであって、少なくとも3つの復号操作が前記反復復号において実施され、前記復号操作はC1復号およびC2復号を含む群から選択される、前記反復復号を実施するステップ、および
    前記符号化済みデータの前記反復復号後に前記復号済みデータの第1部分において有効な積符号語が得られていないことに応答して、前記第1部分に対して復号後エラー・ダイアグノスティクスを実施するステップ、
    を含む、方法であって、
    前記復号済みデータに対して前記復号後エラー・ダイアグノスティクスを実施する前記ステップは前記復号済みデータにおいてエラー・シグネチャを特定するステップを含み、
    前記復号済みデータにおいてエラー・シグネチャを特定する前記ステップは、
    前記復号済みデータ内の訂正不能C1符号語の数(U)を得るステップ、
    前記復号済みデータ内のノンゼロ・シンドロームを有するC2符号語の数(W’)を得るステップ、
    前記復号済みデータ内のノンゼロ・シンドロームを有するC1符号語の数(W)を得るステップ、
    前記数(U)の訂正不能C1符号語を除いて少なくとも閾値(d1)個のシンボル・エラーがその中に検出されている前記復号済みデータ内のC1符号語の数(D)を得るステップ、および
    前記数(U)の訂正不能C1符号語を除いて前記閾値(d1)個未満のシンボル・エラーがその中に検出されている前記復号済みデータ内のC1符号語の数(M)を得るステップ、
    を含む、方法。
  5. 前記復号済みデータについて8つのエラー・シグネチャ、すなわち、前記復号済みデータにおいてどのエラー・タイプも発見されないことを表す第1エラー・シグネチャ、前記復号済みデータにおいて少なくとも1つのメモリ・エラー(M>0)が発見されることを表す第2エラー・シグネチャ、前記復号済みデータにおいて少なくとも1つの復号器エラー(D>0)が発見されることを表す第3エラー・シグネチャ、前記復号済みデータにおいて少なくとも1つの復号器エラー(D>0)および少なくとも1つのメモリ・エラー(M>0)が発見されることを表す第4エラー・シグネチャ、前記復号済みデータにおいて少なくとも1つのチャネル・エラー(U>0)が発見されることを表す第5エラー・シグネチャ、前記復号済みデータにおいて少なくとも1つのチャネル・エラー(U>0)および少なくとも1つのメモリ・エラー(M>0)が発見されることを表す第6エラー・シグネチャ、前記復号済みデータにおいて少なくとも1つのチャネル・エラー(U>0)および少なくとも1つの復号器エラー(D>0)が発見されることを表す第7エラー・シグネチャ、および前記復号済みデータにおいて少なくとも1つのチャネル・エラー(U>0)、少なくとも1つの復号器エラー(D>0)、および少なくとも1つのメモリ・エラー(M>0)が発見されることを表す第8エラー・シグネチャ、を定義するステップをさらに含む、請求項に記載の方法。
  6. 前記第1エラー・シグネチャはU=0、D=0、およびM=0という状態に応答して特定され、前記第2エラー・シグネチャはU=0、D=0、およびM>0という状態に応答して特定され、前記第3エラー・シグネチャはU=0、D>0、およびM=0という状態に応答して特定され、前記第4エラー・シグネチャはU=0、D>0、およびM>0という状態に応答して特定され、前記第5エラー・シグネチャはU>0、D=0、およびM=0という状態に応答して特定され、前記第6エラー・シグネチャはU>0、D=0、およびM>0という状態に応答して特定され、前記第7エラー・シグネチャはU>0、D>0、およびM=0という状態に応答して特定され、前記第8エラー・シグネチャはU>0、D>0、およびM>0という状態に応答して特定される、請求項に記載の方法。
  7. コントローラに、復号済みデータを得るために符号化済みデータに対して反復復号を実行させ、ここで前記反復復号において少なくとも3つの復号操作が行われ、前記復号操作はC1復号およびC2復号を含む群から選択され、かつ、前記符号化済みデータの前記反復復号後に、前記復号済みデータの第1部分において有効な積符号語を得られていないことに応答して、前記第1部分に対して復号後エラー・ダイアグノスティクスを行わせる、コンピュータ・プログラムであって、
    前記コントローラに、
    前記復号済みデータ内の訂正不能C1符号語の数(U)を得させ、
    前記復号済みデータ内のノンゼロ・シンドロームを有するC2復号後の数(W’)を得させ、
    前記復号済みデータ内のノンゼロ・シンドロームを有するC1符号語の数(W)を得させ、
    前記数(U)の訂正不能C1符号語を除いて少なくとも閾値(d1)個のシンボル・エラーがその中に検出されている前記復号済みデータ内のC1符号語の数(D)を得させ、
    前記数(U)の訂正不能C1符号語を除いて前記閾値(d1)個未満のシンボル・エラーがその中に検出されている前記復号済みデータ内のC1符号語の数(M)を得させる、
    コンピュータ・プログラム。
  8. 前記コントローラに前記復号済みデータについて8つのエラー・シグネチャ、すなわち、前記復号済みデータにおいてどのエラー・タイプも発見されないことを表す第1エラー・シグネチャ、前記復号済みデータにおいて少なくとも1つのメモリ・エラー(M>0)が発見されることを表す第2エラー・シグネチャ、前記復号済みデータにおいて少なくとも1つの復号器エラー(D>0)が発見されることを表す第3エラー・シグネチャ、前記復号済みデータにおいて少なくとも1つの復号器エラー(D>0)および少なくとも1つのメモリ・エラー(M>0)が発見されることを表す第4エラー・シグネチャ、前記復号済みデータにおいて少なくとも1つのチャネル・エラー(U>0)が発見されることを表す第5エラー・シグネチャ、前記復号済みデータにおいて少なくとも1つのチャネル・エラー(U>0)および少なくとも1つのメモリ・エラー(M>0)が発見されることを表す第6エラー・シグネチャ、前記復号済みデータにおいて少なくとも1つのチャネル・エラー(U>0)および少なくとも1つの復号器エラー(D>0)が発見されることを表す第7エラー・シグネチャ、ならびに前記復号済みデータにおいて少なくとも1つのチャネル・エラー(U>0)、少なくとも1つの復号器エラー(D>0)、および少なくとも1つのメモリ・エラー(M>0)が発見されることを表す第8エラー・シグネチャ、を定義させる、請求項に記載のコンピュータ・プログラム。
  9. 前記第1エラー・シグネチャはU=0、D=0、およびM=0という状態に応答して特定され、前記第2エラー・シグネチャはU=0、D=0、およびM>0という状態に応答して特定され、前記第3エラー・シグネチャはU=0、D>0、およびM=0という状態に応答して特定され、前記第4エラー・シグネチャはU=0、D>0、およびM>0という状態に応答して特定され、前記第5エラー・シグネチャはU>0、D=0、およびM=0という状態に応答して特定され、前記第6エラー・シグネチャはU>0、D=0、およびM>0という状態に応答して特定され、前記第7エラー・シグネチャはU>0、D>0、およびM=0という状態に応答して特定され、前記第8エラー・シグネチャはU>0、D>0、およびM>0という状態に応答して特定される、請求項に記載のコンピュータ・プログラム。
JP2018522922A 2015-12-14 2016-11-29 積符号のためのダイアグノスティクスを伴う復号後エラー・チェック Active JP6817301B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/968,726 2015-12-14
US14/968,726 US9413392B1 (en) 2015-12-14 2015-12-14 Post-decoding error check with diagnostics for product codes
PCT/IB2016/057180 WO2017103716A1 (en) 2015-12-14 2016-11-29 Post-decoding error check with diagnostics for product codes

Publications (2)

Publication Number Publication Date
JP2019503603A JP2019503603A (ja) 2019-02-07
JP6817301B2 true JP6817301B2 (ja) 2021-01-20

Family

ID=56556546

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018522922A Active JP6817301B2 (ja) 2015-12-14 2016-11-29 積符号のためのダイアグノスティクスを伴う復号後エラー・チェック

Country Status (6)

Country Link
US (2) US9413392B1 (ja)
JP (1) JP6817301B2 (ja)
CN (1) CN108370252B (ja)
DE (1) DE112016003638B4 (ja)
GB (1) GB2562352B (ja)
WO (1) WO2017103716A1 (ja)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9413392B1 (en) * 2015-12-14 2016-08-09 International Business Machines Corporation Post-decoding error check with diagnostics for product codes
RU2693190C1 (ru) * 2018-07-02 2019-07-01 Федеральное государственное бюджетное образовательное учреждение высшего образования "Владимирский Государственный Университет имени Александра Григорьевича и Николая Григорьевича Столетовых" (ВлГУ) Способ диагностики недвоичных блоковых кодов
GB2579590B (en) * 2018-12-04 2021-10-13 Imagination Tech Ltd Workload repetition redundancy
GB2579591B (en) 2018-12-04 2022-10-26 Imagination Tech Ltd Buffer checker
JP2020195007A (ja) * 2019-05-24 2020-12-03 キオクシア株式会社 メモリシステム
US11693733B2 (en) * 2021-01-21 2023-07-04 Kioxia Corporation Soft error detection and correction for data storage devices
US11750221B1 (en) 2022-03-28 2023-09-05 Samsung Electronics Co., Ltd. Encoding and decoding of data using generalized LDPC codes

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4104735A (en) 1976-09-15 1978-08-01 Siemens Aktiengesellschaft Arrangement for addressing a MOS store
JP3154607B2 (ja) 1993-12-28 2001-04-09 三菱電機株式会社 誤り訂正復号装置及び誤り訂正復号方法
US5974580A (en) 1997-07-23 1999-10-26 Cirrus Logic, Inc. Concurrent row/column syndrome generator for a product code
JP3880144B2 (ja) 1997-08-21 2007-02-14 キヤノン株式会社 誤り訂正方法
EP1146650A1 (en) * 2000-04-10 2001-10-17 Hewlett-Packard Company, A Delaware Corporation Error detection for data storage and transmission
CN1471763A (zh) * 2001-08-28 2004-01-28 连宇通信有限公司 对源数据元素进行纠错编码的方法及相应的迭代译码器
JP3889286B2 (ja) * 2002-01-31 2007-03-07 三菱電機株式会社 復号方法、復号装置及びディジタル伝送システム
TWI241073B (en) * 2005-01-03 2005-10-01 Sunplus Technology Co Ltd Decoding device for product code decoding and method thereof
JP2008016151A (ja) * 2006-07-07 2008-01-24 Canon Inc データ処理方法及び再生装置
US8046660B2 (en) * 2006-08-07 2011-10-25 Marvell World Trade Ltd. System and method for correcting errors in non-volatile memory using product codes
US7912028B2 (en) * 2007-05-31 2011-03-22 Agere Systems Inc. Reducing false detection in an HSDPA 3G terminal
WO2009122307A2 (en) * 2008-03-31 2009-10-08 Marvell Israel ( Misl) Ltd. Method and apparatus for decoding
JPWO2010029771A1 (ja) * 2008-09-12 2012-02-02 シャープ株式会社 無線通信システム、無線通信方法及び通信装置
CN101483443B (zh) * 2008-12-26 2012-07-25 中国航空无线电电子研究所 Turbo乘积码优化编译码算法的FPGA实现方法
JP5881930B2 (ja) * 2009-05-13 2016-03-09 三菱電機株式会社 誤り訂正符号化装置および誤り訂正復号装置
US8467249B2 (en) 2010-07-06 2013-06-18 Densbits Technologies Ltd. Systems and methods for storing, retrieving, and adjusting read thresholds in flash memory storage system
US8566672B2 (en) 2011-03-22 2013-10-22 Freescale Semiconductor, Inc. Selective checkbit modification for error correction
US8806295B2 (en) 2012-05-24 2014-08-12 International Business Machines Corporation Mis-correction and no-correction rates for error control
US9214964B1 (en) 2012-09-24 2015-12-15 Marvell International Ltd. Systems and methods for configuring product codes for error correction in a hard disk drive
US9413392B1 (en) 2015-12-14 2016-08-09 International Business Machines Corporation Post-decoding error check with diagnostics for product codes

Also Published As

Publication number Publication date
GB2562352A (en) 2018-11-14
DE112016003638T5 (de) 2018-05-03
CN108370252B (zh) 2021-06-15
CN108370252A (zh) 2018-08-03
US20170170849A1 (en) 2017-06-15
JP2019503603A (ja) 2019-02-07
WO2017103716A1 (en) 2017-06-22
DE112016003638B4 (de) 2023-09-21
GB2562352B (en) 2019-03-06
GB201803554D0 (en) 2018-04-18
US10298272B2 (en) 2019-05-21
US9413392B1 (en) 2016-08-09

Similar Documents

Publication Publication Date Title
JP6817301B2 (ja) 積符号のためのダイアグノスティクスを伴う復号後エラー・チェック
US8910012B2 (en) Block-interleaved and error correction code (ECC)-encoded sub data set (SDS) format
JP6415557B2 (ja) 積符号のための誤りおよび消失組合せ復号のためのシステム、方法、およびコンピュータ・プログラム
US8869011B2 (en) Unequal error protection scheme for headerized sub data sets
US9985658B2 (en) Decoding of product codes
US9564171B2 (en) Reconstructive error recovery procedure (ERP) using reserved buffer
JP5363686B2 (ja) 統合されたデータおよびヘッダ保護を含むコード化データをデコードするための方法および磁気テープ・ドライブ(統合されたデータおよびヘッダ保護を含むコード化データのデコード)
US11031042B2 (en) Efficient rewrite using larger codeword sizes
US9666225B2 (en) Efficient recovery of the codeword interleave address
US10824346B2 (en) Logical format utilizing lateral encoding of data for storage on magnetic tape
US9960788B2 (en) Memory controller, semiconductor memory device, and control method for semiconductor memory device
JP2007207325A (ja) 誤り訂正処理装置及び誤り訂正処理方法
US9252815B2 (en) Extension of product codes with applications to tape and parallel channels
US9712188B2 (en) Decoding data stored with three orthogonal codewords
US11967342B2 (en) Header decoding mechanism for tape storage
US20240087605A1 (en) Header encoding mechanism for tape storage

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180719

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20190419

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20200331

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20200407

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200703

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20201222

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20201224

R150 Certificate of patent or registration of utility model

Ref document number: 6817301

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150