(57)【要約】【課題】  統合されたデータおよびヘッダ保護を含むコード化データをデコードするための方法を提供する。【解決手段】  一実施形態では、このような方法は拡張データ・アレイを受け取ることを含む。拡張データ・アレイは、行と列に編成されたデータ・アレイと、データ・アレイの行に付加されたヘッダと、データ・アレイの列を保護する列ＥＣＣパリティと、結合された行とヘッダを保護する行ＥＣＣパリティとを含む。次に、この方法は、拡張データ・アレイをデコードする。数ある動作の中で、このデコード・ステップは、各行に関連するヘッダをチェックして、そのヘッダが正当であるかどうかを判断することを含む。そのヘッダが正当である場合、この方法は、対応する行ＥＣＣパリティに対するヘッダの貢献を決定する。次に、この方法は、対応する行ＥＣＣパリティに対するヘッダの貢献を逆転させる。対応する装置（すなわち、上記の方法を実現するように構成された磁気テープ・ドライブ）も本明細書に開示されている。【選択図】  図７
2013543159.tif 000002
【特許請求の範囲】
【請求項１】
統合されたデータおよびヘッダ保護を含むコード化データをデコードするための方法であって、前記方法が、
拡張データ・アレイを受け取ることであって、前記拡張データ・アレイが、行と列に編成されたデータ・アレイと、前記データ・アレイの前記行に付加されたヘッダと、前記データ・アレイの前記列を保護する列ＥＣＣパリティと、結合された前記行とヘッダを保護する行ＥＣＣパリティとを含むことと、
前記拡張データ・アレイをデコードすることを含み、前記拡張データ・アレイをデコードすることが、
各行に関連する前記ヘッダをチェックして、前記ヘッダが正当であるかどうかを判断することと、
前記ヘッダが正当である場合に、対応する行ＥＣＣパリティに対する前記ヘッダの貢献を決定することと、
前記対応する行ＥＣＣパリティに対する前記ヘッダの貢献を逆転させること
を含む、方法。
【請求項２】
前記拡張データ・アレイをデコードすることが、前記行から前記ヘッダを除去することをさらに含む、請求項１記載の方法。
【請求項３】
前記ヘッダをチェックすることが、前記ヘッダの内容をチェックすることを含む、請求項１記載の方法。
【請求項４】
前記ヘッダをチェックすることが、前記ヘッダについて巡回冗長検査を実行することを含む、請求項１記載の方法。
【請求項５】
前記ヘッダが正当である場合に、前記行をＤＲＡＭバッファに転送することをさらに含む、請求項１記載の方法。
【請求項６】
前記ヘッダが正当ではない場合に、前記行を前記ＤＲＡＭバッファに転送しないことをさらに含む、請求項５記載の方法。
【請求項７】
前記対応する行ＥＣＣパリティに対する前記ヘッダの貢献を逆転させることが、前記ヘッダに関連するヘッダ行ＥＣＣパリティを生成し、前記対応する行ＥＣＣパリティに前記ヘッダ行ＥＣＣパリティを追加することを含む、請求項１記載の方法。
【請求項８】
前記データ・アレイが、アレイ・フォーマットに編成されたサブデータセット（ＳＤＳ）である、請求項１記載の方法。
【請求項９】
前記行ＥＣＣパリティおよび列ＥＣＣパリティがリード・ソロモン・パリティを含む、請求項１記載の方法。
【請求項１０】
各行が少なくとも１つのデータ・ワードを含む、請求項１記載の方法。
【請求項１１】
統合されたデータおよびヘッダ保護を含むコード化データをデコードするための磁気テープ・ドライブであって、前記磁気テープ・ドライブが、
拡張データ・アレイを受け取るためのデコーダを含み、前記拡張データ・アレイが、行と列に編成されたデータ・アレイと、前記データ・アレイの前記行に付加されたヘッダと、前記データ・アレイの前記列を保護する列ＥＣＣパリティと、結合された前記行とヘッダを保護する行ＥＣＣパリティとを含み、
前記デコーダが前記拡張データ・アレイをデコードするように構成され、前記拡張データ・アレイをデコードすることが、
各行に関連する前記ヘッダをチェックして、前記ヘッダが正当であるかどうかを判断することと、
前記ヘッダが正当である場合に、対応する行ＥＣＣパリティに対する前記ヘッダの貢献を決定することと、
前記対応する行ＥＣＣパリティに対する前記ヘッダの貢献を逆転させること
を含む、磁気テープ・ドライブ。
【請求項１２】
前記拡張データ・アレイをデコードすることが、前記行から前記ヘッダを除去することをさらに含む、請求項１１記載の磁気テープ・ドライブ。
【請求項１３】
前記ヘッダをチェックすることが、前記ヘッダの内容をチェックすることを含む、請求項１１記載の磁気テープ・ドライブ。
【請求項１４】
前記ヘッダをチェックすることが、前記ヘッダについて巡回冗長検査を実行することを含む、請求項１１記載の磁気テープ・ドライブ。
【請求項１５】
前記デコーダが、前記ヘッダが正当である場合に、前記行をＤＲＡＭバッファに転送するようにさらに構成される、請求項１１記載の磁気テープ・ドライブ。
【請求項１６】
前記デコーダが、前記ヘッダが正当ではない場合に、前記行を前記ＤＲＡＭバッファに転送しないようにさらに構成される、請求項１５記載の磁気テープ・ドライブ。
【請求項１７】
前記対応する行ＥＣＣパリティに対する前記ヘッダの貢献を逆転させることが、前記ヘッダに関連するヘッダ行ＥＣＣパリティを生成し、前記対応する行ＥＣＣパリティに前記ヘッダ行ＥＣＣパリティを追加することを含む、請求項１１記載の磁気テープ・ドライブ。
【請求項１８】
前記データ・アレイが、アレイ・フォーマットに編成されたサブデータセット（ＳＤＳ）である、請求項１１記載の磁気テープ・ドライブ。
【請求項１９】
前記行ＥＣＣパリティおよび列ＥＣＣパリティがリード・ソロモン・パリティを含む、請求項１１記載の磁気テープ・ドライブ。
【請求項２０】
各行が少なくとも１つのデータ・ワードを含む、請求項１１記載の磁気テープ・ドライブ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、磁気テープ・ドライブに関し、詳細には、統合されたデータおよびヘッダ保護を含むコード化データをデコードするための装置および方法に関する。
【背景技術】
【０００２】
現在のＬｉｎｅａｒ  Ｔａｐｅ−Ｏｐｅｎ（ＬＴＯ）およびエンタープライズレベルの磁気テープ・ドライブなど、いくつかの磁気テープ・ドライブでは、可変長ブロックのデータがホスト・インターフェースから受け取られ、データセットとして知られる固定単位に変換される。これらのデータセットは典型的に、サブデータセット（ＳＤＳ）として知られる、より小さい固定単位に分解される。次に、そこに含まれるデータを保護するための１単位としてこれらのサブデータセットについて誤り訂正符号化が実行される。
【０００３】
ＳＤＳ内のデータを保護するために、従来の磁気テープ・ドライブは、サブデータセットを行と列で構成された２次元アレイに編成することができる。２次元アレイ内の各行は、複数（たとえば、２つまたは４つ）のインターリーブされたデータ・ワードで構成することができる。次に、そこに含まれるデータを保護するために、アレイ内の各行およびアレイ内の各列について、誤り訂正パリティ・ビットまたはシンボルを生成することができ、その場合、シンボルは複数のビットで構成される。行と列の両方について保護が提供されるので、これは、本質的に、アレイ内のデータについて２次元の保護を提供するものである。生成されると、誤り訂正パリティ・ビットまたはシンボルは、磁気テープ媒体上に最終的に保管するためにそのアレイに付加することができる。
【０００４】
誤り訂正パリティ・ビットまたはシンボルがそのアレイに付加されると、１つまたは複数のヘッダを生成して、アレイ内の各行に付加することができる。これらのヘッダは一般に、アレイ内のデータ・ワードに関連するアドレス指定情報およびその他のメタデータを保管する。これらのヘッダは典型的に、誤り訂正符号によって保護されないが、巡回冗長検査（ＣＲＣ）などの誤り検出符号を含むことができる。誤り訂正パリティ・ビットまたはシンボルを生成して、ヘッダ内に保管すると、ヘッダのサイズを増加し、望ましくないことに記憶フォーマットの効率を低減する可能性がある。
【０００５】
テープ記録媒体に関する線形記録密度が増加し続けるにつれて、テープ上に保管されたデータおよびヘッダに関する誤り率も増加するものと予想される。データ内の誤りは、アレイに付加された誤り訂正パリティ・ビットまたはシンボルを使用して訂正することができる。しかし、ヘッダ内の誤りは、誤り訂正符号によって保護することができないので、より問題となる可能性がある。ヘッダが破損して、回復できない場合、そのヘッダによって参照されるデータの全部または一部が失われる可能性がある。アロングトラック（along-track）およびアクロストラック（across-track）補間を使用してヘッダ誤りを判断し訂正するための従来の技法は、高い線形密度およびトラック密度でテープ・ヘッダを保護するには十分ではない。さらに、アロングトラックおよびアクロストラック補間を可能にするフォーマットは、記録時再生（read-while-write）動作中に誤って検出されたデータを再書き込みするための柔軟性が限られている。
【０００６】
上記を考慮して、現在または将来のテープ記憶フォーマットにおいてより効果的にヘッダを保護するためのコード化方式が必要である。より具体的には、データおよびヘッダに関する誤り訂正パリティ・ビットまたはシンボルを生成するためのコード化方式であって、再書き込みの柔軟性に対する制限を受けずに、データおよびヘッダの両方について十分な保護を提供するコード化方式が必要である。このようなコード化方式は、記憶フォーマットの効率も理想的に保持するであろう。さらに、上述のコード化方式を使用してコード化されたデータを確実にデコードするためのデコード方式が必要である。理想を言えば、このようなデコード方式は、ダイナミック・ランダム・アクセス・メモリ（ＤＲＡＭ）の誤りなど、誤りがある状態でもコード化データを確実にデコードするであろう。
【発明の概要】
【発明が解決しようとする課題】
【０００７】
本発明は、当技術分野の現在の状態に応じて、特に、現在入手可能な装置および方法によって完全に解決されていない当技術分野の問題および必要性に応じて、開発されたものである。したがって、本発明は、統合されたデータおよびヘッダ保護を含むコード化データをデコードするための装置および方法を提供するように開発されたものである。本発明の特徴および利点は、以下の説明および特許請求の範囲からより完全に明らかになるか、あるいは以下に明記された本発明の実践によって学習することができる。
【課題を解決するための手段】
【０００８】
上記と一貫して、統合されたデータおよびヘッダ保護を含むコード化データをデコードするための方法が本明細書に開示されている。一実施形態では、このような方法は拡張データ・アレイを受け取ることを含む。拡張データ・アレイは、行と列に編成されたデータ・アレイと、データ・アレイの行に付加されたヘッダと、データ・アレイの列を保護する列誤り訂正符号（ＥＣＣ）パリティと、結合された行とヘッダを保護する行ＥＣＣパリティとを含む。次に、この方法は、拡張データ・アレイをデコードする。数ある動作の中で、このデコード・ステップは、各行に関連するヘッダをチェックして、そのヘッダが正当であるかどうかを判断することを含む。そのヘッダが正当である場合、この方法は、対応する行ＥＣＣパリティに対するヘッダの貢献（contribution）を決定する。次に、この方法は、対応する行ＥＣＣパリティに対するヘッダの貢献を逆転させる。
【０００９】
対応する装置（すなわち、上記の方法を実現するように構成された磁気テープ・ドライブ）も本明細書に開示され、請求されている。
【００１０】
本発明の利点が容易に理解されるように、添付図面に例示された特定の諸実施形態を参照することにより、上記で簡単に説明された本発明について、より詳細な説明が提供される。これらの図面が本発明の典型的な諸実施形態のみを描写するものであり、したがって、その範囲を限定するものと見なすべきではないことを理解して、添付図面の使用により特異性および細部を追加して、本発明について記載し説明する。
【図面の簡単な説明】
【００１１】
【図１】データおよびヘッダ保護を統合するためのコード化方式の一実施形態を示す高レベルの流れ図である。
【図２】図１のコード化方式を使用して、ＥＣＣパリティおよびヘッダが生成され、データ・アレイに付加される方法を示す図である。
【図３】データおよびヘッダ保護を統合するためのコード化方式の代替実施形態を示す高レベルの流れ図である。
【図４】図３のコード化方式を使用して、ＥＣＣパリティおよびヘッダが生成され、データ・アレイに付加される方法を示す図である。
【図５】図３のコード化方式を使用して、ＥＣＣパリティおよびヘッダが生成され、データ・アレイに付加される方法を示す図である。
【図６】統合されたデータおよびヘッダ保護を有するコード化データをデコードするためのデコード方式の一実施形態を示す高レベルの流れ図である。
【図７】図６のデコード方式に取り入れるための方法の一実施形態を示す流れ図である。
【図８】コード化プロセスおよびデコード・プロセスの両方で使用されるリード・ソロモン回路の一実施形態を示す高レベルのブロック図である。
【発明を実施するための形態】
【００１２】
本明細書の諸図に一般的に記載され例示されているように、本発明の構成要素が多種多様な構成に配置し設計できることは、容易に理解されるであろう。したがって、諸図に表されているように、本発明の諸実施形態に関する以下のより詳細な説明は、請求されている本発明の範囲を限定するためのものではなく、単に本発明により現在企図されている諸実施形態の特定の例を表すものである。現在記載されている諸実施形態は、図面を参照することにより最もよく理解され、図面では全体を通して同様の部分は同様の番号で示されている。
【００１３】
当業者によって認識されるように、本発明は、装置、システム、方法、またはコンピュータ・プログラム（computer program product）として実施することができる。さらに、本発明は、ハードウェアの実施形態、ハードウェアを操作するように構成されたソフトウェアの実施形態（ファームウェア、常駐ソフトウェア、マイクロコードなどを含む）、またはソフトウェア要素とハードウェア要素の両方を兼ね備えた実施形態の形を取ることができる。これらの実施形態のそれぞれは、１つまたは複数のモジュールまたはブロックによって表すことができる。さらに、本発明は、コンピュータ使用可能プログラム・コードがそこに保管されている任意の有形表現媒体に実施されたコンピュータ使用可能記憶媒体の形を取ることもできる。
【００１４】
１つまたは複数のコンピュータ使用可能またはコンピュータ可読記憶媒体の任意の組み合わせを使用して、コンピュータ・プログラムを保管することができる。コンピュータ使用可能またはコンピュータ可読記憶媒体は、たとえば、電子、磁気、光、電磁、赤外線、または半導体のシステム、装置、またはデバイスにすることができるが、これらに限定されない。コンピュータ可読記憶媒体のより具体的な例（非網羅的リスト）としては、１つまたは複数のワイヤを有する電気接続、ポータブル・コンピュータ・ディスケット、ハードディスク、ランダム・アクセス・メモリ（ＲＡＭ）、読み取り専用メモリ（ＲＯＭ）、消去可能プログラム可能読み取り専用メモリ（ＥＰＲＯＭまたはフラッシュ・メモリ）、光ファイバ、ポータブル・コンパクト・ディスク読み取り専用メモリ（ＣＤ−ＲＯＭ）、光学記憶装置、あるいは磁気記憶装置を含むことができる。本明細書の文脈では、コンピュータ使用可能またはコンピュータ可読記憶媒体は、命令実行システム、装置、またはデバイスによりあるいはそれに関連して使用するためのプログラムを収容、保管、または移送することができる任意の媒体にすることができる。
【００１５】
本発明の動作を実行するためのコンピュータ・プログラム・コードは、Ｊａｖａ、Ｓｍａｌｌｔａｌｋ、Ｃ＋＋などのオブジェクト指向プログラミング言語ならびに「Ｃ」プログラミング言語または同様のプログラミング言語などの従来の手続き型プログラミング言語を含む、１つまたは複数のプログラミング言語の任意の組み合わせで作成することができる。また、本発明を実現するためのコンピュータ・プログラム・コードは、アセンブリ言語などの低レベル・プログラミング言語で作成することもできる。
【００１６】
本発明は、本発明の様々な諸実施形態による方法、装置、システム、およびコンピュータ・プログラムの流れ図あるいはブロック図またはその両方に関連して以下に記載されている可能性がある。流れ図あるいはブロック図またはその両方の各ブロックおよび流れ図あるいはブロック図またはその両方内の複数ブロックの組み合わせは、コンピュータ・プログラム命令またはコードによって実現可能であることが理解されるであろう。これらのコンピュータ・プログラム命令は、汎用コンピュータ、特殊目的コンピュータ、またはその他のプログラマブル・データ処理装置のプロセッサに提供し、コンピュータまたはその他のプログラマブル・データ処理装置のプロセッサにより実行された命令が流れ図あるいはブロック図またはその両方の１つまたは複数のブロックに指定された機能／行為を実現するための手段を作成するようなマシンを生産することができる。
【００１７】
また、これらのコンピュータ・プログラム命令は、コンピュータ可読記憶媒体に保管された命令が流れ図あるいはブロック図またはその両方の１つまたは複数のブロックに指定された機能／行為を実現する命令手段を含む装置（article of manufacture）を生産するような特定の方法で機能するよう、コンピュータまたはその他のプログラマブル・データ処理装置に指示することができるコンピュータ可読記憶媒体に保管することもできる。また、これらのコンピュータ・プログラム命令は、コンピュータまたはその他のプログラマブル・データ処理装置上にロードし、コンピュータまたはその他のプログラマブル装置上で実行された命令が流れ図あるいはブロック図またはその両方の１つまたは複数のブロックに指定された機能／行為を実現するためのプロセスを提供するようなコンピュータで実行されるプロセスを生産するように、コンピュータまたはその他のプログラマブル・データ処理装置上で一連の動作ステップを実行させることもできる。
【００１８】
一般に図２も参照しながら、図１を参照すると、磁気テープ・ドライブ内でデータおよびヘッダ保護を統合するためのコード化方式の一例を示す流れ図が示されている。図示の通り、処理された（たとえば、暗号化あるいは圧縮またはその両方が行われた）ホスト・データは、サブデータセット（ＳＤＳ）１０２（図２を参照）として知られる固定単位で列ＥＣＣエンコーダ１１０によって受け取られる。各ＳＤＳ１０２は、行と列で構成されたデータ・アレイ１０２に編成される。データ・アレイ１０２を受け取ると、列ＥＣＣエンコーダ１１０は、アレイ１０２内の各列ごとにＥＣＣパリティ１０６を生成し、その列ＥＣＣパリティ１０６をアレイ１０２に付加する。拡張アレイ（すなわち、ＳＤＳデータ１０２と列ＥＣＣパリティ１０６）はＤＲＡＭバッファ１１４に書き込まれる。
【００１９】
次に、列チェッカ１２２は、拡張アレイの各列について、ＤＲＡＭ誤りを含む可能性のある誤りがないかどうかをチェックする。これは、たとえば、各列に関する列ＥＣＣパリティを再計算し、この列ＥＣＣパリティをＤＲＡＭバッファ１１４内の保管済み列ＥＣＣパリティ１０６と比較することによって、実施することができる。新たに計算された列ＥＣＣパリティが保管済み列ＥＣＣパリティ１０６と一致する場合、この列は誤りなしと想定することができる。新たに計算された列ＥＣＣパリティが保管済み列ＥＣＣパリティ１０６と一致しない場合、この列が誤りを含むものと想定することができる。ある列で誤りが検出された場合、保管済み列ＥＣＣパリティ１０６を使用して、列ＥＣＣパリティ１０６の訂正能力まで、列内の複数の誤りを訂正することができる。
【００２０】
次に、マルチプレクサ１１２は、アレイ１０２の行にヘッダ１０８を付加する。ヘッダ１０８の位置は任意であり、ヘッダ１０８を各行の先頭または各行の末尾に配置するか、各行とインターリーブすることなどが可能であることを意味する。次に、拡張アレイ（すなわち、ＳＤＳデータ１０２、ヘッダ１０８、および列ＥＣＣパリティ１０６）が行ＥＣＣエンコーダ１１６に渡され、その行ＥＣＣエンコーダ１１６は、各行に関するＥＣＣパリティ１０４（ＳＤＳデータ１０２、列ＥＣＣパリティ１０６、およびヘッダ１０８を含む）を生成し、そのＥＣＣパリティ１０４を拡張アレイに付加する。したがって、行ＥＣＣエンコーダ１１６は、結合されたＳＤＳデータ１０２、列ＥＣＣパリティ１０６、およびヘッダ１０８について、行ＥＣＣパリティ１０４を生成する。これは、本質的に、（行ＥＣＣパリティ１０４のみを提供することにより）ヘッダ１０８について１次元の保護を提供しながら、ＳＤＳデータ１０２について２次元の保護を提供する（すなわち、行ＥＣＣパリティ１０４と列ＥＣＣパリティ１０６の両方を提供することによる）。この技法は、ヘッダ１０８について十分なＥＣＣ保護を提供しながら、フォーマット効率を保持するものである。拡張アレイはＤＲＡＭバッファ１１８に書き込まれるが、このＤＲＡＭバッファ１１８はＤＲＡＭバッファ１１４と同じかまたは異なるものにすることができる。
【００２１】
拡張アレイがＤＲＡＭバッファ１１８に書き込まれると、行チェッカ１２０は、拡張アレイの各行について、ＤＲＡＭ誤りを含む可能性のある誤りがないかどうかをチェックする。これは、たとえば、各行に関する行ＥＣＣパリティを再計算し、この行ＥＣＣパリティをＤＲＡＭバッファ１１８内の保管済み行ＥＣＣパリティ１０４と比較することによって、実施することができる。新たに計算された行ＥＣＣパリティが保管済み行ＥＣＣパリティ１０４と一致する場合、この行は誤りなしと想定することができる。新たに計算された行ＥＣＣパリティが保管済み行ＥＣＣパリティ１０４と一致しない場合、この行が誤りを含むものと想定することができる。この行で誤りが検出された場合、保管済み行ＥＣＣパリティ１０４を使用して、行ＥＣＣパリティ１０４の訂正能力まで、行内の複数の誤りを訂正することができる。
【００２２】
データおよびヘッダ保護を統合する有効性を例証するために、ＳＤＳデータ１０２およびヘッダ１０８が上記の方法で保護されるものと想定する。ＳＤＳデータ１０２、行ＥＣＣパリティ１０４、列ＥＣＣパリティ１０６、およびヘッダ１０８がテープに書き込まれ、記録時再生プロセス中にヘッダ１０８内で誤りが検出された場合、データ１０２、列ＥＣＣパリティ１０６、行ＥＣＣパリティ１０４、およびヘッダ１０８はその磁気媒体に再書き込みすることができる。しかし、そこに含まれるアドレス指定およびメタデータを更新するために、再書き込みを実行する前に、ヘッダ１０８および行ＥＣＣパリティ１０４を変更する必要がある可能性がある。これに対して、データ１０２および列ＥＣＣパリティ１０６は、元のままである可能性がある。ヘッダ１０８は１次元のＥＣＣパリティによって保護される（すなわち、行ＥＣＣパリティ１０４のみによって保護される）ので、行ＥＣＣパリティ１０４および列ＥＣＣパリティ１０６の両方を再計算する必要性とは対照的に、更新済みヘッダ１０８について行ＥＣＣパリティ１０４のみを再計算する必要がある。さらに、そのヘッダ１０８が変更された行について行ＥＣＣパリティ１０４のみを再計算する必要がある。したがって、１次元のＥＣＣ保護によりヘッダ１０８を保護することは、依然としてフォーマット効率を保持しながら、ヘッダ１０８について十分な保護を提供するものである。
【００２３】
実施形態によっては、ＳＤＳアレイ１０２の各行が複数のインターリーブ・データ・ワードで構成できることを認識されたい。一例として、ＳＤＳアレイ１０２内の各行は、それぞれ２３４バイトの４つのインターリーブ・データ・ワードを含み、各行を９３６バイトの長さにすることができる。データ・ワードは、１バイトずつまたはその他の適切な単位でインターリーブすることができる。同様に、その行に関連する行ＥＣＣパリティ１０４およびヘッダ１０８もインターリーブすることができる。たとえば、それぞれ３バイトの４つのインターリーブ・ヘッダ１０８（行内の各データ・ワードについて１つずつ）をアレイ１０２内の各行に関連付け、ヘッダ１０８の各行を１２バイトの長さにすることができる。ヘッダ１０８は、１バイトずつまたはその他の適切な単位でインターリーブすることができる。同様に、それぞれ１２バイトの４つのインターリーブ行ＥＣＣパリティ・ビットまたはシンボル１０４（行内の各データ・ワードについて１つずつ）をアレイ１０２内の各行に関連付け、ＥＣＣパリティ符号１０４の各行を４８バイトの長さにすることができる。行ＥＣＣパリティ符号１０４は、１バイトずつまたはその他の適切な単位でインターリーブすることができる。上記で提供された数を使用すると、各行（ヘッダ１０８、ＳＤＳデータ１０２、および行ＥＣＣパリティ１０４を含む）は９９６バイトの長さになるであろう。これらの数は例としてのみ提供されたものであり、限定のためのものではない。また、インターリーブは必ずしもすべての実施形態で使用されるわけではない。
【００２４】
当該発明者は、上記で提供された数（すなわち、各データ・ワード１０２について２３４バイト、各ヘッダ１０８について３バイト、ならびに行ＥＣＣパリティ１０４について１２バイト）を使用すると、１２バイトの行ＥＣＣパリティ１０４を使用して５バイトまでの結合されたヘッダ１０８およびデータ・ワード１０２を訂正できることに気付いている。さらに、１２バイトの行ＥＣＣパリティ１０４を使用して、ヘッダ１０８内の３バイトすべてを訂正することができる。データがインターリーブされる場合、訂正不良確率（miscorrection probability）を低減するために１バイトの誤り訂正能力の余裕を使用すると想定して、２０バイトまでの連続インターリーブ・バイトを訂正することができる。手短に言えば、ヘッダおよびデータ保護を統合することは、ＥＣＣパリティでヘッダ１０８とデータ１０２を独立して保護することより著しく効率的である。
【００２５】
一般に図４および図５も参照しながら、図３を参照すると、データおよびヘッダ保護を統合するためのコード化方式の代替実施形態が示されている。この実施形態では、ＳＤＳアレイ１０２を受け取ると、行ＥＣＣエンコーダ１１６ａは、ＳＤＳデータ１０２について行ＥＣＣパリティ１０４ａを生成し、図４に示されているように、それをアレイ１０２に付加する。拡張アレイはＤＲＡＭバッファ１１４に書き込まれる。次に、列ＥＣＣエンコーダ１１０は、ＳＤＳアレイ１０２（行ＥＣＣパリティ１０４を含む）内の各列ごとにＥＣＣパリティ１０６を生成し、図４にさらに示されているように、その列ＥＣＣパリティ１０６をアレイ１０２に付加する。この拡張アレイはＤＲＡＭバッファ１１８に書き込まれるが、このＤＲＡＭバッファ１１８はＤＲＡＭバッファ１１４と同じかまたは異なるものにすることができる。拡張アレイがＤＲＡＭバッファ１１８に書き込まれると、行チェッカ１２０は、拡張データ・アレイの各行について、誤りがないかどうかをチェックする。誤りが見つかった場合、行チェッカ１２０は、行ＥＣＣパリティ１０４ａの訂正能力まで、誤りを訂正する。
【００２６】
次に、マルチプレクサ１１２は、図５に示されているように、行にヘッダ１０８を付加する。次に、拡張アレイ１０２（すなわち、ＳＤＳデータ１０２、ヘッダ１０８、列ＥＣＣパリティ１０６、および行ＥＣＣパリティ１０４）を同じかまたは異なる行ＥＣＣエンコーダ１１６ｂに渡し、その時点でヘッダ１０８を含む各行について行ＥＣＣパリティ１０４ａを更新することができる。これにより、図５に示されている更新済み行ＥＣＣパリティ１０４ｂが生成される。このようにして、ＳＤＳデータ１０２について２次元のＥＣＣ保護が提供され、ヘッダ１０８について１次元のＥＣＣ保護が提供される。図１に示されているものとは対照的に、図３に示されているコード化方式を使用する場合の潜在的な利点の１つは、従来のＥＣＣコード化ハードウェアを使用して、このコード化方式を実現する方が容易である可能性があることである。加えて、図１では、ＤＲＡＭ誤りを検出して訂正するのに列チェッカと行チェッカを必要とするのに対し、図３では、ＤＲＡＭ誤りを検出して訂正するのに１つの行チェッカのみを備えていれば十分である。それにもかかわらず、その他のコード化方式および付随ハードウェアでも、上記の方法でデータおよびヘッダ保護を統合することができる。このようなコード化方式および付随ハードウェアは本発明の範囲内に含まれるものである。
【００２７】
図６を参照すると、統合されたデータおよびヘッダ保護を有するコード化データをデコードするためのデコード方式の一実施形態が示されている。図示の通り、テープ上に保管されたコード化データ（たとえば、図５に示されている拡張データ・アレイ）は行ＥＣＣデコーダ６００によって受け取られる。拡張データ・アレイ内の行ＥＣＣパリティ１０４ｂを使用して、行ＥＣＣデコーダ６００は、行ＥＣＣパリティ１０４ｂの訂正能力まで、行（ＳＤＳデータ１０２、列ＥＣＣパリティ１０６、およびヘッダ１０８のすべてを含む）内の誤りを訂正する。
【００２８】
行ＥＣＣデコーダ６００が拡張データ・アレイのうちの１つの行をデコードすると、ヘッダ・チェッカ６０２はその行に関連するヘッダ１０８をチェックし、ヘッダ１０８が正当であるかどうかを判断する。たとえば、ヘッダ・チェッカ６０２はヘッダ１０８に関連するＣＲＣまたはその他の誤り検出符号をチェックし、ヘッダ１０８が誤りを含み、したがって、不当であるかどうかを判断することができる。代わってまたはさらに、ヘッダ・チェッカ６０２はヘッダ１０８の内容をチェックし、その内容が正当であるかどうかを判断することができる。たとえば、ヘッダ１０８内の特定のビットまたはビット・グループがどのような値または値の範囲を有することができるかを定義するルールを確立することができる。ビットまたはビット・グループ（すなわち、ヘッダ１０８の内容）がこのようなルールに適合する場合、そのヘッダ１０８は正当と見なすことができる。したがって、ビットまたはビット・グループがこのようなルールに適合しない場合、ヘッダ１０８は不当と見なすことができるということになる。
【００２９】
ヘッダ１０８が正当である場合、ヘッダ行パリティ・ジェネレータ６０４はヘッダ１０８に関連する行パリティを計算する。このヘッダ行ＥＣＣパリティを計算するための１つの方法については図８に関連して述べる。この計算は、行ＥＣＣパリティ１０４ｂに対するヘッダ１０８の影響を決定するものである。他の言い方をすると、ヘッダ行パリティ・ジェネレータ６０４は、行ＥＣＣパリティ１０４ｂに対するヘッダ１０８の貢献を決定するものである。ヘッダ行ＥＣＣパリティが計算されると、行ＥＣＣデコーダ６００の出力で行ＥＣＣパリティ１０４ｂに（１ビットずつのＸＯＲを使用して）ヘッダ行ＥＣＣパリティを追加して、行ＥＣＣパリティ１０４ｂに対するヘッダ１０８の貢献を逆転させる。一例として図４および図５を使用して言い換えると、図５に示されている更新済み行ＥＣＣパリティ１０４ｂを図４に示されている元の行ＥＣＣパリティ１０４ａに逆転させることになる。
【００３０】
ヘッダ１０８の貢献が行ＥＣＣパリティ１０４ｂから逆転されると、ヘッダ・ストリッパ（header stripper）６０６は拡張データ・アレイからヘッダ１０８を除去する。これにより、図４に示されているような拡張データ・アレイが生成される。この拡張データ・アレイはＤＲＡＭバッファ６０８に書き込まれる。行ＥＣＣパリティ１０４ｂによって訂正すべき誤りが多すぎる行または不当なヘッダ１０８を含む行はＤＲＡＭバッファ６０８に転送されない。次に、拡張データ・アレイは列ＥＣＣデコーダ６１０に渡される。列ＥＣＣパリティ１０６を使用して、列ＥＣＣデコーダ６１０は、列ＥＣＣパリティ１０６の訂正能力まで、任意の欠落行を再構築する。訂正された拡張データ・アレイはＤＲＡＭバッファ６１２に書き込まれるが、このＤＲＡＭバッファ６１２はＤＲＡＭバッファ６０８と同じかまたは異なるものにすることができる。次に、行ＥＣＣパリティ１０４ａを使用して、行チェッカ６１４は、拡張データ・アレイについて、ＤＲＡＭ誤りなどの誤りがないかどうかをチェックし、そこで見つかった誤りをすべて訂正する。次に、訂正された（すなわち、デコードされた）ＳＤＳデータ１０２をホスト・デバイスに渡すことができる。
【００３１】
図６に示されているデコード方式は例として提示されたものであり、限定のためのものではないことを認識されたい。その他の実施形態では、図６に示されている機能ブロックが異なる編成または構成になる。たとえば、実施形態によっては、列ＥＣＣデコードが行ＥＣＣデコードの前に実行されるように、デコード方式が再編成される。また、その他の変形例または変更例も可能である。したがって、図６に示されているデコード方式は、限定ではなく、例としてのみ提示されている。
【００３２】
図７を参照すると、図６のデコード方式に取り入れるための方法７００の一実施形態を示す流れ図が示されている。このような方法７００は、拡張データ・アレイ内の各行について実行することができる。図示の通り、方法７００は、最初に７０２で行内のコード・ワードをデコードし、７０２で関連の行ＥＣＣパリティ１０４ｂを使用して行内の誤りを訂正する。必要であれば、方法７００は、７０４で完全なヘッダ１０８（たとえば、１２バイトのヘッダ１０８）を入手するためにヘッダ・フラグメント（たとえば、行内のデータ・ワードに関連する３バイトのヘッダ１０８）を連結する。次に、方法７００は、ヘッダ１０８が正当であるかどうかを判断する。これは、７０６でヘッダ１０８に関連するＣＲＣまたはその他の誤り検出符号をチェックして、そのヘッダが誤りを含むかどうかを判断することを含むことができる。そのヘッダが誤りを含む場合、ステップ７０８に反映されるように、その行は変更またはＤＲＡＭバッファ６０８への転送が行われない。また、ヘッダ１０８が正当であるかどうかを判断することは、７１０でヘッダ１０８の内容が正当であるかどうかを判断することを含むこともできる。これは、ヘッダ１０８内の様々なフィールド（すなわち、ビットまたはビット・グループ）が許容値を含むかまたは許容値の範囲内にあるかを判断することを含むことができる。ヘッダの内容の全部または一部が不当である場合、ステップ７０８に反映されるように、ヘッダ１０８に関連する行は変更またはＤＲＡＭバッファ６０８への転送が行われない。
【００３３】
ヘッダ１０８が正当である場合、方法７００は、７１２で行ＥＣＣパリティ１０４ｂに対するヘッダ１０８の貢献を逆転させるために行ＥＣＣパリティ１０４ｂを変更する。前述の通り、これは、ヘッダのみに関する行ＥＣＣパリティを計算し、次に（１ビットずつのＸＯＲを使用して）ヘッダ行ＥＣＣパリティを行ＥＣＣパリティ１０４ｂに追加してヘッダ１０８の貢献を除去することにより、実施することができる。これにより、データ１０２とヘッダ１０８の両方を保護するのとは対照的に、データ１０２のみを保護するように行ＥＣＣパリティ１０４ｂが変更されることになる。次に、方法７００は、７１４でヘッダ１０８を除去し、７１４で変更された行ＥＣＣパリティ１０４ａとともに変更された行をＤＲＡＭバッファ６０８に保管する。前述の通り、列ＥＣＣパリティ１０６は、不当なヘッダ１０８を有するかまたは行ＥＣＣパリティ１０４ｂによって訂正すべき誤りが多すぎるためにＤＲＡＭバッファ６０８に転送されない行を再構築するために使用することができる。
【００３４】
図８を参照すると、リード・ソロモン回路８００の一実施形態が示されている。このような回路８００は、コード化プロセスとデコード・プロセスの両方で使用することができる。たとえば、回路８００は、コード化プロセス中にデータ１０２およびヘッダ１０８に関する行ＥＣＣパリティ１０４ｂを計算するために使用することができる。また、回路８００は、デコード・プロセス中に行ＥＣＣパリティ１０４ｂに対するヘッダ１０８の貢献を計算するために使用することもできる。図示の通り、エンコーダ回路８００は、いくつかのレジスタ８０２、この例では１２個のレジスタ８０２（Ｒ０、Ｒ１、・・・、Ｒ１１と表示されている）を含み、そのそれぞれは１バイトのデータなどのシンボルを保管する。レジスタ８０２は連続的にフィードバックと接続されている。エンコーダ回路８００は、図示の方法でレジスタ８０２と相互作用する１１個の乗算器８０４（それぞれ、αのｎ乗として表されている）をさらに含む。乗算器８０４のそれぞれは、入力値に何らかの固定値αｎを掛ける。その積はレジスタの値に加算され、次のレジスタに保管される。
【００３５】
統合されたヘッダ・コード化がコード化回路に最初に供給されるデータ・バイトに基づく場合にデコード・プロセス中に行ＥＣＣパリティ１０４ｂに対するヘッダ１０８の貢献を決定するために、レジスタ８０２内の値をゼロに初期設定することができる。次に、２３４バイトのデータ・ワードに関連する３バイトのヘッダ１０８は、１バイトずつ、連続的に回路８００に供給される。これらのバイトが回路８００に供給されると（３クロック・サイクルを要するはずである）、１２個のレジスタ８０２は、行ＥＣＣパリティ１０４ｂに対する３バイトのヘッダ１０８の貢献を表す１２バイトのＥＣＣパリティ・バイトを含むことになる。次に、（１ビットずつのＸＯＲを使用して）行ＥＣＣパリティ１０４ｂにヘッダ貢献を追加することができる。これにより、結合されたデータ１０２（または列ＥＣＣパリティ１０６）およびヘッダ１０８とは対照的に、データ１０２（または列ＥＣＣパリティ１０６）のみを保護するように、行ＥＣＣパリティ１０４ｂが変更されることになる。
【００３６】
統合されたヘッダ・コード化がコード化回路に最初に供給されるヘッダ・バイトに基づく場合にデコード・プロセス中に行ＥＣＣパリティ１０４ｂに対するヘッダ１０８の貢献を決定するために、レジスタ８０２内の値をゼロに初期設定することができる。次に、２３４バイトのデータ・ワードに関連する３バイトのヘッダ１０８は、１バイトずつ、連続的に回路８００に供給され、続いて２３４個のゼロ・バイトが供給される。これらのバイトが回路８００に供給されると（２３７クロック・サイクルを要するはずである）、１２個のレジスタ８０２は、行ＥＣＣパリティ１０４ｂに対する３バイトのヘッダ１０８の貢献を表す１２バイトのＥＣＣパリティ・バイトを含むことになる。次に、（１ビットずつのＸＯＲを使用して）行ＥＣＣパリティ１０４ｂにヘッダ貢献を追加することができる。これにより、結合されたデータ１０２（または列ＥＣＣパリティ１０６）およびヘッダ１０８とは対照的に、データ１０２（または列ＥＣＣパリティ１０６）のみを保護するように、行ＥＣＣパリティ１０４ｂが変更されることになる。
【００３７】
図面内の流れ図およびブロック図は、本発明の様々な諸実施形態によるシステム、方法、およびコンピュータ使用可能媒体について可能な実現例のアーキテクチャ、機能、および動作を例示している。この点に関しては、流れ図またはブロック図内の各ブロックは、指定の論理機能（複数も可）を実現するための１つまたは複数の実行可能命令を含む、コードのモジュール、セグメント、または一部分を表すことができる。また、いくつかの代替実現例では、ブロック内に示された機能は図面内に示された順序から外れて行われる可能性があることに留意されたい。たとえば、連続して示されている２つのブロックは、関係する機能に応じて、実際にはほぼ同時に実行される場合もあれば、ときには逆の順序で実行される場合もある。また、ブロック図あるいは流れ図またはその両方の各ブロックならびにブロック図あるいは流れ図またはその両方内の複数ブロックの組み合わせは、指定の機能または行為を実行する特殊目的ハードウェアベースのシステムによって、または特殊目的ハードウェアとコンピュータ命令の組み合わせによって、実現可能であることも留意されるであろう。
【図１】
2013543159.tif 000003
【図２】
2013543159.tif 000004
【図３】
2013543159.tif 000005
【図４】
2013543159.tif 000006
【図５】
2013543159.tif 000007
【図６】
2013543159.tif 000008
【図７】
2013543159.tif 000009
【図８】
2013543159.tif 000010
【手続補正書】
【提出日】平成25年7月17日(2013.7.17)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
統合されたデータおよびヘッダ保護を含むコード化データをデコードするための方法であって、前記方法が、
拡張データ・アレイを受け取ることであって、前記拡張データ・アレイが、行と列に編成されたデータ・アレイと、前記データ・アレイの前記行に付加されたヘッダと、前記データ・アレイの前記列を保護する列ＥＣＣパリティと、結合された前記行とヘッダを保護する行ＥＣＣパリティとを含むことと、
前記拡張データ・アレイをデコードすることを含み、前記拡張データ・アレイをデコードすることが、
各行に関連する前記ヘッダをチェックして、前記ヘッダが正当であるかどうかを判断することと、
前記ヘッダが正当である場合に、対応する行ＥＣＣパリティに対する前記ヘッダの貢献を決定することとして、ヘッダ行ＥＣＣパリティを計算することと、
前記対応する行ＥＣＣパリティに対する前記ヘッダの貢献を逆転させることとして、前記対応する行ＥＣＣパリティにヘッダ行ＥＣＣパリティを加算（ＸＯＲ演算）すること
を含む、方法。
【請求項２】
前記拡張データ・アレイをデコードすることが、前記行から前記ヘッダを除去することをさらに含む、請求項１記載の方法。
【請求項３】
前記ヘッダをチェックすることが、前記ヘッダの内容をチェックすることを含む、請求項１記載の方法。
【請求項４】
前記ヘッダをチェックすることが、前記ヘッダについて巡回冗長検査を実行することを含む、請求項１記載の方法。
【請求項５】
前記ヘッダが正当である場合に、前記行をＤＲＡＭバッファに転送することをさらに含む、請求項１記載の方法。
【請求項６】
前記ヘッダが正当ではない場合に、前記行を前記ＤＲＡＭバッファに転送しないことをさらに含む、請求項５記載の方法。
【請求項７】
前記データ・アレイが、アレイ・フォーマットに編成されたサブデータセット（ＳＤＳ）である、請求項１記載の方法。
【請求項８】
前記行ＥＣＣパリティおよび列ＥＣＣパリティがリード・ソロモン・パリティを含む、請求項１記載の方法。
【請求項９】
各行が少なくとも１つのデータ・ワードを含む、請求項１記載の方法。
【請求項１０】
統合されたデータおよびヘッダ保護を含むコード化データをデコードするための磁気テープ・ドライブであって、前記磁気テープ・ドライブが、
拡張データ・アレイを受け取るためのデコーダを含み、前記拡張データ・アレイが、行と列に編成されたデータ・アレイと、前記データ・アレイの前記行に付加されたヘッダと、前記データ・アレイの前記列を保護する列ＥＣＣパリティと、結合された前記行とヘッダを保護する行ＥＣＣパリティとを含み、
前記デコーダが前記拡張データ・アレイをデコードするように構成され、前記拡張データ・アレイをデコードすることが、
各行に関連する前記ヘッダをチェックして、前記ヘッダが正当であるかどうかを判断することと、
前記ヘッダが正当である場合に、対応する行ＥＣＣパリティに対する前記ヘッダの貢献を決定することとして、ヘッダ行ＥＣＣパリティを計算することと、
前記対応する行ＥＣＣパリティに対する前記ヘッダの貢献を逆転させることとして、前記対応する行ＥＣＣパリティにヘッダ行ＥＣＣパリティを加算（ＸＯＲ演算）すること
を含む、磁気テープ・ドライブ。
【請求項１１】
前記拡張データ・アレイをデコードすることが、前記行から前記ヘッダを除去することをさらに含む、請求項１０記載の磁気テープ・ドライブ。
【請求項１２】
前記ヘッダをチェックすることが、前記ヘッダの内容をチェックすることを含む、請求項１０記載の磁気テープ・ドライブ。
【請求項１３】
前記ヘッダをチェックすることが、前記ヘッダについて巡回冗長検査を実行することを含む、請求項１０記載の磁気テープ・ドライブ。
【請求項１４】
前記デコーダが、前記ヘッダが正当である場合に、前記行をＤＲＡＭバッファに転送するようにさらに構成される、請求項１０記載の磁気テープ・ドライブ。
【請求項１５】
前記デコーダが、前記ヘッダが正当ではない場合に、前記行を前記ＤＲＡＭバッファに転送しないようにさらに構成される、請求項１４記載の磁気テープ・ドライブ。
【請求項１６】
前記データ・アレイが、アレイ・フォーマットに編成されたサブデータセット（ＳＤＳ）である、請求項１０記載の磁気テープ・ドライブ。
【請求項１７】
前記行ＥＣＣパリティおよび列ＥＣＣパリティがリード・ソロモン・パリティを含む、請求項１０記載の磁気テープ・ドライブ。
【請求項１８】
各行が少なくとも１つのデータ・ワードを含む、請求項１０記載の磁気テープ・ドライブ。
【国際調査報告】
2013543159.tif 000011
2013543159.tif 000012