統合されたデータおよびヘッダ保護を含むコード化データをデコードするための方法であって、前記方法が、拡張データアレイを受け取ることであって、前記拡張データアレイが、行と列に編成されたデータアレイと、前記データアレイの前記行に付加されたヘッダと、前記データアレイの前記列を保護する列ECCパリティと、結合された前記行とヘッダを保護する行ECCパリティとを含むことと、前記拡張データアレイをデコードすることを含み、前記拡張データアレイをデコードすることが、各行に関連する前記ヘッダをチェックして、前記ヘッダが正当であるかどうかを判断することと、前記ヘッダが正当である場合に、対応する行ECCパリティに対する前記ヘッダの貢献を決定することと、前記対応する行ECCパリティに対する前記ヘッダの貢献を逆転させることを含む、方法。前記拡張データアレイをデコードすることが、前記行から前記ヘッダを除去することをさらに含む、請求項1記載の方法。前記ヘッダをチェックすることが、前記ヘッダの内容をチェックすることを含む、請求項1記載の方法。前記ヘッダをチェックすることが、前記ヘッダについて巡回冗長検査を実行することを含む、請求項1記載の方法。前記ヘッダが正当である場合に、前記行をDRAMバッファに転送することをさらに含む、請求項1記載の方法。前記ヘッダが正当ではない場合に、前記行を前記DRAMバッファに転送しないことをさらに含む、請求項5記載の方法。前記対応する行ECCパリティに対する前記ヘッダの貢献を逆転させることが、前記ヘッダに関連するヘッダ行ECCパリティを生成し、前記対応する行ECCパリティに前記ヘッダ行ECCパリティを追加することを含む、請求項1記載の方法。前記データアレイが、アレイフォーマットに編成されたサブデータセットSDSである、請求項1記載の方法。前記行ECCパリティおよび列ECCパリティがリードソロモンパリティを含む、請求項1記載の方法。各行が少なくとも1つのデータワードを含む、請求項1記載の方法。統合されたデータおよびヘッダ保護を含むコード化データをデコードするための磁気テープドライブであって、前記磁気テープドライブが、拡張データアレイを受け取るためのデコーダを含み、前記拡張データアレイが、行と列に編成されたデータアレイと、前記データアレイの前記行に付加されたヘッダと、前記データアレイの前記列を保護する列ECCパリティと、結合された前記行とヘッダを保護する行ECCパリティとを含み、前記デコーダが前記拡張データアレイをデコードするように構成され、前記拡張データアレイをデコードすることが、各行に関連する前記ヘッダをチェックして、前記ヘッダが正当であるかどうかを判断することと、前記ヘッダが正当である場合に、対応する行ECCパリティに対する前記ヘッダの貢献を決定することと、前記対応する行ECCパリティに対する前記ヘッダの貢献を逆転させることを含む、磁気テープドライブ。前記拡張データアレイをデコードすることが、前記行から前記ヘッダを除去することをさらに含む、請求項11記載の磁気テープドライブ。前記ヘッダをチェックすることが、前記ヘッダの内容をチェックすることを含む、請求項11記載の磁気テープドライブ。前記ヘッダをチェックすることが、前記ヘッダについて巡回冗長検査を実行することを含む、請求項11記載の磁気テープドライブ。前記デコーダが、前記ヘッダが正当である場合に、前記行をDRAMバッファに転送するようにさらに構成される、請求項11記載の磁気テープドライブ。前記デコーダが、前記ヘッダが正当ではない場合に、前記行を前記DRAMバッファに転送しないようにさらに構成される、請求項15記載の磁気テープドライブ。前記対応する行ECCパリティに対する前記ヘッダの貢献を逆転させることが、前記ヘッダに関連するヘッダ行ECCパリティを生成し、前記対応する行ECCパリティに前記ヘッダ行ECCパリティを追加することを含む、請求項11記載の磁気テープドライブ。前記データアレイが、アレイフォーマットに編成されたサブデータセットSDSである、請求項11記載の磁気テープドライブ。前記行ECCパリティおよび列ECCパリティがリードソロモンパリティを含む、請求項11記載の磁気テープドライブ。各行が少なくとも1つのデータワードを含む、請求項11記載の磁気テープドライブ。本発明は、当技術分野の現在の状態に応じて、特に、現在入手可能な装置および方法によって完全に解決されていない当技術分野の問題および必要性に応じて、開発されたものである。したがって、本発明は、統合されたデータおよびヘッダ保護を含むコード化データをデコードするための装置および方法を提供するように開発されたものである。本発明の特徴および利点は、以下の説明および特許請求の範囲からより完全に明らかになるか、あるいは以下に明記された本発明の実践によって学習することができる。上記と一貫して、統合されたデータおよびヘッダ保護を含むコード化データをデコードするための方法が本明細書に開示されている。一実施形態では、このような方法は拡張データアレイを受け取ることを含む。拡張データアレイは、行と列に編成されたデータアレイと、データアレイの行に付加されたヘッダと、データアレイの列を保護する列誤り訂正符号ECCパリティと、結合された行とヘッダを保護する行ECCパリティとを含む。次に、この方法は、拡張データアレイをデコードする。数ある動作の中で、このデコードステップは、各行に関連するヘッダをチェックして、そのヘッダが正当であるかどうかを判断することを含む。そのヘッダが正当である場合、この方法は、対応する行ECCパリティに対するヘッダの貢献contributionを決定する。次に、この方法は、対応する行ECCパリティに対するヘッダの貢献を逆転させる。対応する装置すなわち、上記の方法を実現するように構成された磁気テープドライブも本明細書に開示され、請求されている。本発明の利点が容易に理解されるように、添付図面に例示された特定の諸実施形態を参照することにより、上記で簡単に説明された本発明について、より詳細な説明が提供される。これらの図面が本発明の典型的な諸実施形態のみを描写するものであり、したがって、その範囲を限定するものと見なすべきではないことを理解して、添付図面の使用により特異性および細部を追加して、本発明について記載し説明する。本明細書の諸図に一般的に記載され例示されているように、本発明の構成要素が多種多様な構成に配置し設計できることは、容易に理解されるであろう。したがって、諸図に表されているように、本発明の諸実施形態に関する以下のより詳細な説明は、請求されている本発明の範囲を限定するためのものではなく、単に本発明により現在企図されている諸実施形態の特定の例を表すものである。現在記載されている諸実施形態は、図面を参照することにより最もよく理解され、図面では全体を通して同様の部分は同様の番号で示されている。当業者によって認識されるように、本発明は、装置、システム、方法、またはコンピュータプログラムcomputerprogramproductとして実施することができる。さらに、本発明は、ハードウェアの実施形態、ハードウェアを操作するように構成されたソフトウェアの実施形態ファームウェア、常駐ソフトウェア、マイクロコードなどを含む、またはソフトウェア要素とハードウェア要素の両方を兼ね備えた実施形態の形を取ることができる。これらの実施形態のそれぞれは、1つまたは複数のモジュールまたはブロックによって表すことができる。さらに、本発明は、コンピュータ使用可能プログラムコードがそこに保管されている任意の有形表現媒体に実施されたコンピュータ使用可能記憶媒体の形を取ることもできる。1つまたは複数のコンピュータ使用可能またはコンピュータ可読記憶媒体の任意の組み合わせを使用して、コンピュータプログラムを保管することができる。コンピュータ使用可能またはコンピュータ可読記憶媒体は、たとえば、電子、磁気、光、電磁、赤外線、または半導体のシステム、装置、またはデバイスにすることができるが、これらに限定されない。コンピュータ可読記憶媒体のより具体的な例非網羅的リストとしては、1つまたは複数のワイヤを有する電気接続、ポータブルコンピュータディスケット、ハードディスク、ランダムアクセスメモリRAM、読み取り専用メモリROM、消去可能プログラム可能読み取り専用メモリEPROMまたはフラッシュメモリ、光ファイバ、ポータブルコンパクトディスク読み取り専用メモリCD-ROM、光学記憶装置、あるいは磁気記憶装置を含むことができる。本明細書の文脈では、コンピュータ使用可能またはコンピュータ可読記憶媒体は、命令実行システム、装置、またはデバイスによりあるいはそれに関連して使用するためのプログラムを収容、保管、または移送することができる任意の媒体にすることができる。本発明の動作を実行するためのコンピュータプログラムコードは、Java、Smalltalk、Cなどのオブジェクト指向プログラミング言語ならびにCプログラミング言語または同様のプログラミング言語などの従来の手続き型プログラミング言語を含む、1つまたは複数のプログラミング言語の任意の組み合わせで作成することができる。また、本発明を実現するためのコンピュータプログラムコードは、アセンブリ言語などの低レベルプログラミング言語で作成することもできる。本発明は、本発明の様々な諸実施形態による方法、装置、システム、およびコンピュータプログラムの流れ図あるいはブロック図またはその両方に関連して以下に記載されている可能性がある。流れ図あるいはブロック図またはその両方の各ブロックおよび流れ図あるいはブロック図またはその両方内の複数ブロックの組み合わせは、コンピュータプログラム命令またはコードによって実現可能であることが理解されるであろう。これらのコンピュータプログラム命令は、汎用コンピュータ、特殊目的コンピュータ、またはその他のプログラマブルデータ処理装置のプロセッサに提供し、コンピュータまたはその他のプログラマブルデータ処理装置のプロセッサにより実行された命令が流れ図あるいはブロック図またはその両方の1つまたは複数のブロックに指定された機能/行為を実現するための手段を作成するようなマシンを生産することができる。また、これらのコンピュータプログラム命令は、コンピュータ可読記憶媒体に保管された命令が流れ図あるいはブロック図またはその両方の1つまたは複数のブロックに指定された機能/行為を実現する命令手段を含む装置articleofmanufactureを生産するような特定の方法で機能するよう、コンピュータまたはその他のプログラマブルデータ処理装置に指示することができるコンピュータ可読記憶媒体に保管することもできる。また、これらのコンピュータプログラム命令は、コンピュータまたはその他のプログラマブルデータ処理装置上にロードし、コンピュータまたはその他のプログラマブル装置上で実行された命令が流れ図あるいはブロック図またはその両方の1つまたは複数のブロックに指定された機能/行為を実現するためのプロセスを提供するようなコンピュータで実行されるプロセスを生産するように、コンピュータまたはその他のプログラマブルデータ処理装置上で一連の動作ステップを実行させることもできる。一般に図2も参照しながら、図1を参照すると、磁気テープドライブ内でデータおよびヘッダ保護を統合するためのコード化方式の一例を示す流れ図が示されている。図示の通り、処理されたたとえば、暗号化あるいは圧縮またはその両方が行われたホストデータは、サブデータセットSDS102図2を参照として知られる固定単位で列ECCエンコーダ110によって受け取られる。各SDS102は、行と列で構成されたデータアレイ102に編成される。データアレイ102を受け取ると、列ECCエンコーダ110は、アレイ102内の各列ごとにECCパリティ106を生成し、その列ECCパリティ106をアレイ102に付加する。拡張アレイすなわち、SDSデータ102と列ECCパリティ106はDRAMバッファ114に書き込まれる。次に、列チェッカ122は、拡張アレイの各列について、DRAM誤りを含む可能性のある誤りがないかどうかをチェックする。これは、たとえば、各列に関する列ECCパリティを再計算し、この列ECCパリティをDRAMバッファ114内の保管済み列ECCパリティ106と比較することによって、実施することができる。新たに計算された列ECCパリティが保管済み列ECCパリティ106と一致する場合、この列は誤りなしと想定することができる。新たに計算された列ECCパリティが保管済み列ECCパリティ106と一致しない場合、この列が誤りを含むものと想定することができる。ある列で誤りが検出された場合、保管済み列ECCパリティ106を使用して、列ECCパリティ106の訂正能力まで、列内の複数の誤りを訂正することができる。次に、マルチプレクサ112は、アレイ102の行にヘッダ108を付加する。ヘッダ108の位置は任意であり、ヘッダ108を各行の先頭または各行の末尾に配置するか、各行とインターリーブすることなどが可能であることを意味する。次に、拡張アレイすなわち、SDSデータ102、ヘッダ108、および列ECCパリティ106が行ECCエンコーダ116に渡され、その行ECCエンコーダ116は、各行に関するECCパリティ104SDSデータ102、列ECCパリティ106、およびヘッダ108を含むを生成し、そのECCパリティ104を拡張アレイに付加する。したがって、行ECCエンコーダ116は、結合されたSDSデータ102、列ECCパリティ106、およびヘッダ108について、行ECCパリティ104を生成する。これは、本質的に、行ECCパリティ104のみを提供することによりヘッダ108について1次元の保護を提供しながら、SDSデータ102について2次元の保護を提供するすなわち、行ECCパリティ104と列ECCパリティ106の両方を提供することによる。この技法は、ヘッダ108について十分なECC保護を提供しながら、フォーマット効率を保持するものである。拡張アレイはDRAMバッファ118に書き込まれるが、このDRAMバッファ118はDRAMバッファ114と同じかまたは異なるものにすることができる。拡張アレイがDRAMバッファ118に書き込まれると、行チェッカ120は、拡張アレイの各行について、DRAM誤りを含む可能性のある誤りがないかどうかをチェックする。これは、たとえば、各行に関する行ECCパリティを再計算し、この行ECCパリティをDRAMバッファ118内の保管済み行ECCパリティ104と比較することによって、実施することができる。新たに計算された行ECCパリティが保管済み行ECCパリティ104と一致する場合、この行は誤りなしと想定することができる。新たに計算された行ECCパリティが保管済み行ECCパリティ104と一致しない場合、この行が誤りを含むものと想定することができる。この行で誤りが検出された場合、保管済み行ECCパリティ104を使用して、行ECCパリティ104の訂正能力まで、行内の複数の誤りを訂正することができる。データおよびヘッダ保護を統合する有効性を例証するために、SDSデータ102およびヘッダ108が上記の方法で保護されるものと想定する。SDSデータ102、行ECCパリティ104、列ECCパリティ106、およびヘッダ108がテープに書き込まれ、記録時再生プロセス中にヘッダ108内で誤りが検出された場合、データ102、列ECCパリティ106、行ECCパリティ104、およびヘッダ108はその磁気媒体に再書き込みすることができる。しかし、そこに含まれるアドレス指定およびメタデータを更新するために、再書き込みを実行する前に、ヘッダ108および行ECCパリティ104を変更する必要がある可能性がある。これに対して、データ102および列ECCパリティ106は、元のままである可能性がある。ヘッダ108は1次元のECCパリティによって保護されるすなわち、行ECCパリティ104のみによって保護されるので、行ECCパリティ104および列ECCパリティ106の両方を再計算する必要性とは対照的に、更新済みヘッダ108について行ECCパリティ104のみを再計算する必要がある。さらに、そのヘッダ108が変更された行について行ECCパリティ104のみを再計算する必要がある。したがって、1次元のECC保護によりヘッダ108を保護することは、依然としてフォーマット効率を保持しながら、ヘッダ108について十分な保護を提供するものである。実施形態によっては、SDSアレイ102の各行が複数のインターリーブデータワードで構成できることを認識されたい。一例として、SDSアレイ102内の各行は、それぞれ234バイトの4つのインターリーブデータワードを含み、各行を936バイトの長さにすることができる。データワードは、1バイトずつまたはその他の適切な単位でインターリーブすることができる。同様に、その行に関連する行ECCパリティ104およびヘッダ108もインターリーブすることができる。たとえば、それぞれ3バイトの4つのインターリーブヘッダ108行内の各データワードについて1つずつをアレイ102内の各行に関連付け、ヘッダ108の各行を12バイトの長さにすることができる。ヘッダ108は、1バイトずつまたはその他の適切な単位でインターリーブすることができる。同様に、それぞれ12バイトの4つのインターリーブ行ECCパリティビットまたはシンボル104行内の各データワードについて1つずつをアレイ102内の各行に関連付け、ECCパリティ符号104の各行を48バイトの長さにすることができる。行ECCパリティ符号104は、1バイトずつまたはその他の適切な単位でインターリーブすることができる。上記で提供された数を使用すると、各行ヘッダ108、SDSデータ102、および行ECCパリティ104を含むは996バイトの長さになるであろう。これらの数は例としてのみ提供されたものであり、限定のためのものではない。また、インターリーブは必ずしもすべての実施形態で使用されるわけではない。当該発明者は、上記で提供された数すなわち、各データワード102について234バイト、各ヘッダ108について3バイト、ならびに行ECCパリティ104について12バイトを使用すると、12バイトの行ECCパリティ104を使用して5バイトまでの結合されたヘッダ108およびデータワード102を訂正できることに気付いている。さらに、12バイトの行ECCパリティ104を使用して、ヘッダ108内の3バイトすべてを訂正することができる。データがインターリーブされる場合、訂正不良確率miscorrectionprobabilityを低減するために1バイトの誤り訂正能力の余裕を使用すると想定して、20バイトまでの連続インターリーブバイトを訂正することができる。手短に言えば、ヘッダおよびデータ保護を統合することは、ECCパリティでヘッダ108とデータ102を独立して保護することより著しく効率的である。一般に図4および図5も参照しながら、図3を参照すると、データおよびヘッダ保護を統合するためのコード化方式の代替実施形態が示されている。この実施形態では、SDSアレイ102を受け取ると、行ECCエンコーダ116aは、SDSデータ102について行ECCパリティ104aを生成し、図4に示されているように、それをアレイ102に付加する。拡張アレイはDRAMバッファ114に書き込まれる。次に、列ECCエンコーダ110は、SDSアレイ102行ECCパリティ104を含む内の各列ごとにECCパリティ106を生成し、図4にさらに示されているように、その列ECCパリティ106をアレイ102に付加する。この拡張アレイはDRAMバッファ118に書き込まれるが、このDRAMバッファ118はDRAMバッファ114と同じかまたは異なるものにすることができる。拡張アレイがDRAMバッファ118に書き込まれると、行チェッカ120は、拡張データアレイの各行について、誤りがないかどうかをチェックする。誤りが見つかった場合、行チェッカ120は、行ECCパリティ104aの訂正能力まで、誤りを訂正する。次に、マルチプレクサ112は、図5に示されているように、行にヘッダ108を付加する。次に、拡張アレイ102すなわち、SDSデータ102、ヘッダ108、列ECCパリティ106、および行ECCパリティ104を同じかまたは異なる行ECCエンコーダ116bに渡し、その時点でヘッダ108を含む各行について行ECCパリティ104aを更新することができる。これにより、図5に示されている更新済み行ECCパリティ104bが生成される。このようにして、SDSデータ102について2次元のECC保護が提供され、ヘッダ108について1次元のECC保護が提供される。図1に示されているものとは対照的に、図3に示されているコード化方式を使用する場合の潜在的な利点の1つは、従来のECCコード化ハードウェアを使用して、このコード化方式を実現する方が容易である可能性があることである。加えて、図1では、DRAM誤りを検出して訂正するのに列チェッカと行チェッカを必要とするのに対し、図3では、DRAM誤りを検出して訂正するのに1つの行チェッカのみを備えていれば十分である。それにもかかわらず、その他のコード化方式および付随ハードウェアでも、上記の方法でデータおよびヘッダ保護を統合することができる。このようなコード化方式および付随ハードウェアは本発明の範囲内に含まれるものである。図6を参照すると、統合されたデータおよびヘッダ保護を有するコード化データをデコードするためのデコード方式の一実施形態が示されている。図示の通り、テープ上に保管されたコード化データたとえば、図5に示されている拡張データアレイは行ECCデコーダ600によって受け取られる。拡張データアレイ内の行ECCパリティ104bを使用して、行ECCデコーダ600は、行ECCパリティ104bの訂正能力まで、行SDSデータ102、列ECCパリティ106、およびヘッダ108のすべてを含む内の誤りを訂正する。行ECCデコーダ600が拡張データアレイのうちの1つの行をデコードすると、ヘッダチェッカ602はその行に関連するヘッダ108をチェックし、ヘッダ108が正当であるかどうかを判断する。たとえば、ヘッダチェッカ602はヘッダ108に関連するCRCまたはその他の誤り検出符号をチェックし、ヘッダ108が誤りを含み、したがって、不当であるかどうかを判断することができる。代わってまたはさらに、ヘッダチェッカ602はヘッダ108の内容をチェックし、その内容が正当であるかどうかを判断することができる。たとえば、ヘッダ108内の特定のビットまたはビットグループがどのような値または値の範囲を有することができるかを定義するルールを確立することができる。ビットまたはビットグループすなわち、ヘッダ108の内容がこのようなルールに適合する場合、そのヘッダ108は正当と見なすことができる。したがって、ビットまたはビットグループがこのようなルールに適合しない場合、ヘッダ108は不当と見なすことができるということになる。ヘッダ108が正当である場合、ヘッダ行パリティジェネレータ604はヘッダ108に関連する行パリティを計算する。このヘッダ行ECCパリティを計算するための1つの方法については図8に関連して述べる。この計算は、行ECCパリティ104bに対するヘッダ108の影響を決定するものである。他の言い方をすると、ヘッダ行パリティジェネレータ604は、行ECCパリティ104bに対するヘッダ108の貢献を決定するものである。ヘッダ行ECCパリティが計算されると、行ECCデコーダ600の出力で行ECCパリティ104bに1ビットずつのXORを使用してヘッダ行ECCパリティを追加して、行ECCパリティ104bに対するヘッダ108の貢献を逆転させる。一例として図4および図5を使用して言い換えると、図5に示されている更新済み行ECCパリティ104bを図4に示されている元の行ECCパリティ104aに逆転させることになる。ヘッダ108の貢献が行ECCパリティ104bから逆転されると、ヘッダストリッパheaderstripper606は拡張データアレイからヘッダ108を除去する。これにより、図4に示されているような拡張データアレイが生成される。この拡張データアレイはDRAMバッファ608に書き込まれる。行ECCパリティ104bによって訂正すべき誤りが多すぎる行または不当なヘッダ108を含む行はDRAMバッファ608に転送されない。次に、拡張データアレイは列ECCデコーダ610に渡される。列ECCパリティ106を使用して、列ECCデコーダ610は、列ECCパリティ106の訂正能力まで、任意の欠落行を再構築する。訂正された拡張データアレイはDRAMバッファ612に書き込まれるが、このDRAMバッファ612はDRAMバッファ608と同じかまたは異なるものにすることができる。次に、行ECCパリティ104aを使用して、行チェッカ614は、拡張データアレイについて、DRAM誤りなどの誤りがないかどうかをチェックし、そこで見つかった誤りをすべて訂正する。次に、訂正されたすなわち、デコードされたSDSデータ102をホストデバイスに渡すことができる。図6に示されているデコード方式は例として提示されたものであり、限定のためのものではないことを認識されたい。その他の実施形態では、図6に示されている機能ブロックが異なる編成または構成になる。たとえば、実施形態によっては、列ECCデコードが行ECCデコードの前に実行されるように、デコード方式が再編成される。また、その他の変形例または変更例も可能である。したがって、図6に示されているデコード方式は、限定ではなく、例としてのみ提示されている。図7を参照すると、図6のデコード方式に取り入れるための方法700の一実施形態を示す流れ図が示されている。このような方法700は、拡張データアレイ内の各行について実行することができる。図示の通り、方法700は、最初に702で行内のコードワードをデコードし、702で関連の行ECCパリティ104bを使用して行内の誤りを訂正する。必要であれば、方法700は、704で完全なヘッダ108たとえば、12バイトのヘッダ108を入手するためにヘッダフラグメントたとえば、行内のデータワードに関連する3バイトのヘッダ108を連結する。次に、方法700は、ヘッダ108が正当であるかどうかを判断する。これは、706でヘッダ108に関連するCRCまたはその他の誤り検出符号をチェックして、そのヘッダが誤りを含むかどうかを判断することを含むことができる。そのヘッダが誤りを含む場合、ステップ708に反映されるように、その行は変更またはDRAMバッファ608への転送が行われない。また、ヘッダ108が正当であるかどうかを判断することは、710でヘッダ108の内容が正当であるかどうかを判断することを含むこともできる。これは、ヘッダ108内の様々なフィールドすなわち、ビットまたはビットグループが許容値を含むかまたは許容値の範囲内にあるかを判断することを含むことができる。ヘッダの内容の全部または一部が不当である場合、ステップ708に反映されるように、ヘッダ108に関連する行は変更またはDRAMバッファ608への転送が行われない。ヘッダ108が正当である場合、方法700は、712で行ECCパリティ104bに対するヘッダ108の貢献を逆転させるために行ECCパリティ104bを変更する。前述の通り、これは、ヘッダのみに関する行ECCパリティを計算し、次に1ビットずつのXORを使用してヘッダ行ECCパリティを行ECCパリティ104bに追加してヘッダ108の貢献を除去することにより、実施することができる。これにより、データ102とヘッダ108の両方を保護するのとは対照的に、データ102のみを保護するように行ECCパリティ104bが変更されることになる。次に、方法700は、714でヘッダ108を除去し、714で変更された行ECCパリティ104aとともに変更された行をDRAMバッファ608に保管する。前述の通り、列ECCパリティ106は、不当なヘッダ108を有するかまたは行ECCパリティ104bによって訂正すべき誤りが多すぎるためにDRAMバッファ608に転送されない行を再構築するために使用することができる。図8を参照すると、リードソロモン回路800の一実施形態が示されている。このような回路800は、コード化プロセスとデコードプロセスの両方で使用することができる。たとえば、回路800は、コード化プロセス中にデータ102およびヘッダ108に関する行ECCパリティ104bを計算するために使用することができる。また、回路800は、デコードプロセス中に行ECCパリティ104bに対するヘッダ108の貢献を計算するために使用することもできる。図示の通り、エンコーダ回路800は、いくつかのレジスタ802、この例では12個のレジスタ802R0、R1、、R11と表示されているを含み、そのそれぞれは1バイトのデータなどのシンボルを保管する。レジスタ802は連続的にフィードバックと接続されている。エンコーダ回路800は、図示の方法でレジスタ802と相互作用する11個の乗算器804それぞれ、αのn乗として表されているをさらに含む。乗算器804のそれぞれは、入力値に何らかの固定値αnを掛ける。その積はレジスタの値に加算され、次のレジスタに保管される。統合されたヘッダコード化がコード化回路に最初に供給されるデータバイトに基づく場合にデコードプロセス中に行ECCパリティ104bに対するヘッダ108の貢献を決定するために、レジスタ802内の値をゼロに初期設定することができる。次に、234バイトのデータワードに関連する3バイトのヘッダ108は、1バイトずつ、連続的に回路800に供給される。これらのバイトが回路800に供給されると3クロックサイクルを要するはずである、12個のレジスタ802は、行ECCパリティ104bに対する3バイトのヘッダ108の貢献を表す12バイトのECCパリティバイトを含むことになる。次に、1ビットずつのXORを使用して行ECCパリティ104bにヘッダ貢献を追加することができる。これにより、結合されたデータ102または列ECCパリティ106およびヘッダ108とは対照的に、データ102または列ECCパリティ106のみを保護するように、行ECCパリティ104bが変更されることになる。統合されたヘッダコード化がコード化回路に最初に供給されるヘッダバイトに基づく場合にデコードプロセス中に行ECCパリティ104bに対するヘッダ108の貢献を決定するために、レジスタ802内の値をゼロに初期設定することができる。次に、234バイトのデータワードに関連する3バイトのヘッダ108は、1バイトずつ、連続的に回路800に供給され、続いて234個のゼロバイトが供給される。これらのバイトが回路800に供給されると237クロックサイクルを要するはずである、12個のレジスタ802は、行ECCパリティ104bに対する3バイトのヘッダ108の貢献を表す12バイトのECCパリティバイトを含むことになる。次に、1ビットずつのXORを使用して行ECCパリティ104bにヘッダ貢献を追加することができる。これにより、結合されたデータ102または列ECCパリティ106およびヘッダ108とは対照的に、データ102または列ECCパリティ106のみを保護するように、行ECCパリティ104bが変更されることになる。図面内の流れ図およびブロック図は、本発明の様々な諸実施形態によるシステム、方法、およびコンピュータ使用可能媒体について可能な実現例のアーキテクチャ、機能、および動作を例示している。この点に関しては、流れ図またはブロック図内の各ブロックは、指定の論理機能複数も可を実現するための1つまたは複数の実行可能命令を含む、コードのモジュール、セグメント、または一部分を表すことができる。また、いくつかの代替実現例では、ブロック内に示された機能は図面内に示された順序から外れて行われる可能性があることに留意されたい。たとえば、連続して示されている2つのブロックは、関係する機能に応じて、実際にはほぼ同時に実行される場合もあれば、ときには逆の順序で実行される場合もある。また、ブロック図あるいは流れ図またはその両方の各ブロックならびにブロック図あるいは流れ図またはその両方内の複数ブロックの組み合わせは、指定の機能または行為を実行する特殊目的ハードウェアベースのシステムによって、または特殊目的ハードウェアとコンピュータ命令の組み合わせによって、実現可能であることも留意されるであろう。