(57)【要約】【課題】ＤＤＲチャンネルを通じてＤＩＭＭのためのモーフィングＥＣＣエンコーダ及びデコーダを含むコーディングメカニズム及びその方法を提供する。【解決手段】データに対する基本ビット数を含む第１コードを生成する第１エンコーダと、前記データに対する補助ビット数を含む第２コードを生成する第２エンコーダと、モードレジスタに対するストレージと、前記第２エンコーダが使用されたか否かを制御するように前記モードレジスタに応答するスイッチと、を有し、前記第１エンコーダは前記第１コードを生成するのに常に使用され、前記第２エンコーダは前記第２コードを生成するのに選択的に使用され、前記第２コードは前記第１コードと共に前記第１コード単独よりさらに強いエンコーディングを提供する。【選択図】  図１
2018190416.tif 000002
【特許請求の範囲】
【請求項１】
ハードウェアで実行されるコーディングメカニズムであって、
データに対する基本ビット数（ｂａｓｅ  ｎｕｍｂｅｒ  ｏｆ  ｂｉｔｓ）を含む第１コードを生成する第１エンコーダと、
前記データに対する補助ビット数（ｓｕｐｐｌｅｍｅｎｔａｒｙ  ｎｕｍｂｅｒ  ｏｆ  ｂｉｔｓ）を含む第２コードを生成する第２エンコーダと、
モードレジスタ（ｍｏｄｅ  ｒｅｇｉｓｔｅｒ）に対するストレージと、
前記第２エンコーダが使用されたか否かを制御するように前記モードレジスタに応答するスイッチと、を有し、
前記第１エンコーダは前記第１コードを生成するのに常に使用され、前記第２エンコーダは前記第２コードを生成するのに選択的に使用され、
前記第２コードは前記第１コードと共に前記第１コード単独よりさらに強いエンコーディングを提供することを特徴とするコーディングメカニズム。
【請求項２】
前記モードレジスタは、前記スイッチが前記第２エンコーダを使用するか否かを示す値を保存するように作動することを特徴とする請求項１に記載のコーディングメカニズム。
【請求項３】
前記モードレジスタは、前記スイッチが前記補助ビット数が「０」より大きいか否かに応答する前記第２エンコーダを使用するか否かを示す前記値を保存するように作動することを特徴とする請求項２に記載のコーディングメカニズム。
【請求項４】
前記第１エンコーダ及び前記第２エンコーダは、部分的なハードウェアでの実行を共有することを特徴とする請求項１に記載のコーディングメカニズム。
【請求項５】
ハードウェアで実行されるコーディングメカニズムであって、
データ及び基本ビット数を含む第１コードに対する第１結果を生成する第１デコーダと、
前記データ及び補助ビット数を含む少なくとも第２コードに対する第２結果を生成する第２デコーダと、
モードレジスタに対するストレージと、
前記第２デコーダが使用されたか否かを制御するように前記モードレジスタに応答するスイッチと、を有し、
前記第１デコーダは前記第１結果を生成するのに常に使用され、前記第２デコーダは前記第２結果を生成するのに選択的に使用され、
前記第２結果は前記第１結果と共に前記第１結果単独よりさらに強いデコーディングを提供することを特徴とするコーディングメカニズム。
【請求項６】
前記第２デコーダは、前記データ、前記第１コード、及び前記第２コードに応答する第２結果を生成するように作動することを特徴とする請求項５に記載のコーディングメカニズム。
【請求項７】
前記モードレジスタは、前記スイッチが前記第２デコーダを使用するか否かを示す値を保存するように作動することを特徴とする請求項５に記載のコーディングメカニズム。
【請求項８】
前記モードレジスタは、前記スイッチが前記補助ビット数が「０」より大きいか否かに応答する前記第２デコーダを使用するか否かを示す前記値を保存するように作動することを特徴とする請求項７に記載のコーディングメカニズム。
【請求項９】
前記第１デコーダ及び前記第２デコーダは、部分的なハードウェアでの実行を共有することを特徴とする請求項５に記載のコーディングメカニズム。
【請求項１０】
メモリートランザクションに対するデータを受信するステップと、
前記メモリートランザクションの間、基本ビット数及び補助ビット数を含むエラー管理が可能なビット数を判定（ｄｅｔｅｒｍｉｎｉｎｇ）するステップと、
前記基本ビット数に基づいて前記データに対する第１エラー管理コーディングを遂行するステップと、
前記補助ビット数に基づいて前記データに対する第２エラー管理コーディングを遂行するステップと、を有することを特徴とするコーディングメカニズム方法。
【請求項１１】
前記基本ビット数に基づいて前記データに対する第１エラー管理コーディングを遂行するステップは、前記基本ビット数に基づいて前記データに対する第１エンコーディングを遂行するステップを含み、
前記補助ビット数に基づいて前記データに対する第２エラー管理コーディングを遂行するステップは、前記補助ビット数に基づいて前記データに対する第２エンコーディングを遂行するステップを含むことを特徴とする請求項１０に記載のコーディングメカニズム方法。
【請求項１２】
前記基本ビット数に基づいて前記データに対する第１エンコーディングを遂行するステップは、第１コードを生成するステップを含み、
前記補助ビット数に基づいて前記データに対する第２エンコーディングを遂行するステップは、第２コードを生成するステップを含むことを特徴とする請求項１１に記載のコーディングメカニズム方法。
【請求項１３】
前記第２コードは、前記第１コードと共に前記第１コード単独よりさらに強いエラー管理を提供することを特徴とする請求項１２に記載のコーディングメカニズム方法。
【請求項１４】
前記基本ビット数に基づいて前記データに対する第１エラー管理コーディングを遂行するステップは、前記基本ビット数に基づいて前記データに対する第１デコーディングを遂行するステップを含み、
前記補助ビット数に基づいて前記データに対する第２エラー管理コーディングを遂行するステップは、前記補助ビット数に基づいて前記データに対する第２デコーディングを遂行するステップを含むことを特徴とする請求項１０に記載のコーディングメカニズム方法。
【請求項１５】
前記基本ビット数に基づいて前記データに対する第１デコーディングを遂行するステップは、前記基本ビット数に基づいて前記データ及び第１コードに対応する第１デコーディングを遂行するステップを含み、
前記補助ビット数に基づいて前記データに対する第２デコーディングを遂行するステップは、前記データ及び少なくとも第２コードに対応する第２デコーディングを遂行するステップを含むことを特徴とする請求項１４に記載のコーディングメカニズム方法。
【請求項１６】
前記データ及び少なくとも第２コードに対応する第２デコーディングを遂行するステップは、前記データ、前記第１コード、及び前記第２コードに対応して第２デコーディングを遂行するステップを含むことを特徴とする請求項１５に記載のコーディングメカニズム方法。
【請求項１７】
前記補助ビット数に基づいて前記データに対する第２エラー管理コーディングを遂行するステップは、前記補助ビット数が「０」より大きい場合、前記補助ビット数に基づいて前記データに対する前記第２エラー管理コーディングを遂行するステップを含むことを特徴とする請求項１０に記載のコーディングメカニズム方法。
【請求項１８】
前記基本ビット数に基づいて前記データに対する第１エラー管理コーディングを遂行するステップは、前記データ内のエラー検出を支援するステップを含み、
前記補助ビット数に基づいて前記データに対する第２エラー管理コーディングを遂行するステップは、前記データ内のエラー訂正を支援するステップを含むことを特徴とする請求項１０に記載のコーディングメカニズム方法。
【請求項１９】
前記補助ビット数に基づいて前記データに対する第２エラー管理コーディングを遂行するステップは、少なくとも前記第２エラー管理コーディング及び第３エラー管理コーディングから前記補助ビット数に基づいて前記データに対する前記第２エラー管理コーディングを遂行するステップを含むことを特徴とする請求項１０に記載のコーディングメカニズム方法。
【請求項２０】
少なくとも前記第２エラー管理コーディング及び第３エラー管理コーディングから前記補助ビット数に基づいて前記データに対する前記第２エラー管理コーディングを遂行するステップは、第２補助ビット数に基づいて前記データに対する前記第３エラー管理コーディングを遂行するステップを含むことを特徴とする請求項１９に記載のコーディングメカニズム方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はメモリモジュールに関し、特に、メモリートランザクション（ｔｒａｎｓａｃｔｉｏｎ）の内の多様なレベルのエンコーディング及びデコーディングを支援するコーディングメカニズム及びその方法に関する。
【背景技術】
【０００２】
ＤＤＲ（Ｄｕａｌ  Ｄａｔａ  Ｒａｔｅ）チャンネルを利用するＮＶＤＩＭＭ（Ｎｏｎ−Ｖｏｌａｔｉｌｅ  Ｄｕａｌ  Ｉｎ−Ｌｉｎｅ  Ｍｅｍｏｒｙ  Ｍｏｄｕｌｅ）はトランザクションベースのインターフェースを通じた非同期式ハンドシェーク（ｈａｎｄｓｈａｋｅ）を要求する。
ＮＶＤＩＭＭ以外の他の形態のメモリーによっても使用され得るこのハンドシェークは、可変の読み取り／書き込みタイミングを有することができ、そして、ＤＩＭＭからフィードバック情報が必要である。
【０００３】
なお、いくつかのシステムでは、ホストとＤＩＭＭ間のメターデータ（要請ＩＤ、ヒット／ミス（ｈｉｔ／ｍｉｓｓ）情報、供給業者（ｖｅｎｄｏｒ）メタデータなど）の交換を所望する。
メタデータを伝達する専用のチャンネルは、ハードウェアの変更を要求するであろうが、メタデータを伝達する専用のパッケージを利用することは、パフォーマンスのオーバーヘッドを増加させるはずである。
【０００４】
ＥＣＣ（Ｅｒｒｏｒ  Ｃｏｒｒｅｃｔｉｎｇ  Ｃｏｄｅ）に割り当てられたビットを利用してメタデータを交換することができる。
インテル（登録商標）社に譲渡された米国特許出願公開明細書（ＵＳ２０１４／００４０５５０、Ｎａｌｅ  ｅｔ  ａｌ．）は、メタデータのためＥＣＣビットを使用する一つのアクセス方法を説明する。
この解決方法では、メタデータ情報の伝送を要求する“近距離（ｎｅａｒ）／遠距離（ｆａｒ）”の非同期式メモリー階層があり、かつプロトコルはメタデータの交換を提供する。
しかしながら、このプロトコルでは供給企業者らが供給業者特有の機能に対するメタデータを実装することはできない。
【０００５】
なお、メタデータの交換を可能とするためＥＣＣビットを使用することは、そのビットはＥＣＣに使用できないことを意味する。
よって、メタデータとして使用のためＥＣＣビットを割り当てることは弱いＥＣＣシステムに繋がる。
【０００６】
この問題を複雑にしているのは、相異なるシステムではメタデータに対し相異なるビット数を要求するはずであり、エラー訂正のため使用可能なビット数に影響を与える。
ＥＣＣとメタデータの両方のためにＥＣＣビットの使用を管理する方法が必要である。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】米国特許第８８９２９８０号明細書
【特許文献２】米国特許第９４０７２９４号明細書
【特許文献３】米国特許出願公開第２０１４／００４０５５０号明細書
【特許文献４】米国特許出願公開第２０１５／０３６３２６２号明細書
【特許文献５】米国特許出願公開第２０１６／０２８４４２４号明細書
【発明の概要】
【発明が解決しようとする課題】
【０００８】
そこで、本発明は上記従来のメモリートランザクションにおける問題点に鑑みてなされたものであって、本発明の目的は、ＤＤＲチャンネルを通じてＤＩＭＭのためのモーフィングＥＣＣエンコーダ及びデコーダを含むコーディングメカニズム及びその方法を提供することにある。
【課題を解決するための手段】
【０００９】
上記目的を達成するためになされた本発明によるコーディングメカニズムは、ハードウェアで実行されるコーディングメカニズムであって、データに対する基本ビット数（ｂａｓｅ  ｎｕｍｂｅｒ  ｏｆ  ｂｉｔｓ）を含む第１コードを生成する第１エンコーダと、前記データに対する補助ビット数（ｓｕｐｐｌｅｍｅｎｔａｒｙ  ｎｕｍｂｅｒ  ｏｆ  ｂｉｔｓ）を含む第２コードを生成する第２エンコーダと、モードレジスタ（ｍｏｄｅ  ｒｅｇｉｓｔｅｒ）に対するストレージと、前記第２エンコーダが使用されたか否かを制御するように前記モードレジスタに応答するスイッチと、を有し、前記第１エンコーダは前記第１コードを生成するのに常に使用され、前記第２エンコーダは前記第２コードを生成するのに選択的に使用され、前記第２コードは前記第１コードと共に前記第１コード単独よりさらに強いエンコーディングを提供することを特徴とする。
【００１０】
また、上記目的を達成するためになされた本発明によるコーディングメカニズムは、ハードウェアで実行されるコーディングメカニズムであって、データ及び基本ビット数を含む第１コードに対する第１結果を生成する第１デコーダと、前記データ及び補助ビット数を含む少なくとも第２コードに対する第２結果を生成する第２デコーダと、モードレジスタに対するストレージと、前記第２デコーダが使用されたか否かを制御するように前記モードレジスタに応答するスイッチと、を有し、前記第１デコーダは前記第１結果を生成するのに常に使用され、前記第２デコーダは前記第２結果を生成するのに選択的に使用され、前記第２結果は前記第１結果と共に前記第１結果単独よりさらに強いデコーディングを提供することを特徴とする。
【００１１】
上記目的を達成するためになされた本発明によるコーディングメカニズム方法は、メモリートランザクションに対するデータを受信するステップと、前記メモリートランザクションの間、基本ビット数及び補助ビット数を含むエラー管理が可能なビット数を判定（ｄｅｔｅｒｍｉｎｉｎｇ）するステップと、前記基本ビット数に基づいて前記データに対する第１エラー管理コーディングを遂行するステップと、前記補助ビット数に基づいて前記データに対する第２エラー管理コーディングを遂行するステップと、を有することを特徴とする。
【発明の効果】
【００１２】
本発明に係るコーディングメカニズム及びその方法によれば、エンコーダ／デコーダの“常にオン（ａｌｗａｙｓ  ｏｎ）”の部分はエラーを検出できるＣＲＣ（Ｃｙｃｌｉｃ  Ｒｅｄｕｎｄａｎｃｙ  Ｃｈｅｃｋ）を具現することができ、切換可能なエンコーダ／デコーダはエラー訂正も可能なパリティー（ｐａｒｉｔｙ）情報を具現することができ、切換可能なエンコーダ／デコーダ回路の動作はモードレジスタの特定な値を設定して変更することができるという効果がある。
【図面の簡単な説明】
【００１３】
【図１】本発明の実施形態による複数レベルのエンコーディング／デコーディングを遂行するように作動するストレージ装置を有するマシンの概要を示すブロック図である。
【図２】図１のマシンの追加的な詳細を示すブロック図である。
【図３】本発明の実施形態によるエンコ−ディング／デコーディングを遂行するように作動する図１のマシンのメモリーモジュールを示すブロック図である。
【図４】本発明の実施形態によるエンコ−ディング／デコーディングを遂行するように作動する図１のメモリーコントローラーを示すブロック図である。
【図５】（ａ）及び（ｂ）は、６４＋８ビット幅のメモリーチャンネルにおいてエンコーディング／デコーディングのため使用される可変個数のＥＣＣビットを示す図である。
【図６】（ａ）及び（ｂ）は、３２＋８ビット幅のメモリーチャンネルにおいてエンコーディング／デコーディングのため使用される可変個数のＥＣＣビットを示す図である。
【図７】本発明の第１の実施形態による図３及び図４のコーディングメカニズムを示すブロック図である。
【図８】本発明の第２の実施形態による図３及び図４のコーディングメカニズムを示すブロック図である。
【図９】本発明の第３の実施形態による図３及び図４のコーディングメカニズムを示すブロック図である。
【図１０】本発明の第４の実施形態による図３及び図４のコーディングメカニズムを示すブロック図である。
【図１１】本発明の第５の実施形態による図３及び図４のコーディングメカニズムを示すブロック図である。
【図１２ａ】本発明の実施形態による図７、図９、及び図１１のコーディングメカニズムを利用してメモリートランザクションのためデータをエンコーディングする例示的な手順を説明するためのフローチャートである。
【図１２ｂ】本発明の実施形態による図７、図９、及び図１１のコーディングメカニズムを利用してメモリートランザクションのためデータをエンコーディングする例示的な手順を説明するためのフローチャートである。
【図１３ａ】本発明の実施形態による図８、及び図１０のコーディングメカニズムを利用してメモリートランザクションのためデータをデコーディングする例示的な手順を説明するためのフローチャートである。
【図１３ｂ】本発明の実施形態による図８、及び図１０のコーディングメカニズムを利用してメモリートランザクションのためデータをデコーディングする例示的な手順を説明するためのフローチャートである。
【図１４】本発明の実施形態によるエラー検出及び訂正を支援するためコードを利用する例示的な手順を説明するためのフローチャートである。
【発明を実施するための形態】
【００１４】
次に、本発明に係るコーディングメカニズム及びその方法を実施するための形態の具体例を図面を参照しながら説明する。
【００１５】
本明細書で、第１、第２などの用語を多様な構成要素を説明するのに使用するが、こういう構成要素はこういう用語により限定されないこととして理解されるであろう。こういう用語は一つの構成要素を、他の要素と区別するため使用する。
例えば、第１モジュールは第２モジュールと命名することもでき、そして同様に本発明の範囲を逸脱しない範囲で、第２モジュールは第１モジュールと命名することもできる。
【００１６】
本明細書で、本発明の説明に使用する用語は、特定の実施形態のみを記述するための目的で使用され、本発明を限定する意図では使用されない。文脈上、明白に違うように表わさない限り、単数の形態が本発明の説明及び付加された請求項で使用される際、複数の形態を含むことを意図する。
なお、本明細書に使用する“及び／又は”の用語は、一つ以上の関連する羅列された事項の全ての可能な組み合わせを表わすか含むことで理解されるであろう。“含む”の用語が、本明細書で使用する場合、記述された特徴、数字、ステップ、動作、構成、及び／又は要素の存在を明記することであり、これらの一つ以上の他の特徴、数字、ステップ、動作、構成、要素、及び／又はグループの存在又は付加を排除しないことをさらに理解されるべきである。
図面の構成及び特徴は必ずしも一定な比率で描かれるものではない。
【００１７】
従来、ＤＲＡＭ（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）は、同期式プロトコルを使用しＤＩＭＭ（Ｄｕａｌ  Ｉｎ−ｌｉｎｅ  Ｍｅｍｏｒｙ  Ｍｏｄｕｌｅ）とメモリーコントローラー間のメモリートランザクション（ｔｒａｎｓａｃｔｉｏｎ、または処理）を管理する。
同期式インターフェースはいくつの長所を持つ。
ＤＩＭＭ及びメモリーコントローラーの両方がいつデータが使用可能であるかを正確に認識します。
【００１８】
一方、ＮＶＤＩＭＭ（Ｎｏｎ−Ｖｏｌａｔｉｌｅ  Ｄｕａｌ  Ｉｎ−ｌｉｎｅ  Ｍｅｍｏｒｙ  Ｍｏｄｕｌｅ）は非同期式プロトコルを使用する（ＮＶＤＩＭＭ−Ｐ）。
非同期式プロトコルを用いて、メモリートランザクションを完了するのに必要な時間は、遂行される動作やＮＶＤＩＭＭを製造するのに使用される材料など、任意の個数の要因に基づいて変化する可能性がある。
なお、非同期式プロトコルは、ＮＶＤＩＭＭでメモリーコントローラーにフィードバック（ｆｅｅｄｂａｃｋ）を要求するハンドシェーキング（ｈａｎｄｓｈａｋｉｎｇ）を要求する。
このフィードバックは、ＮＶＤＩＭＭでメモリーコントローラーへ伝送されるデータに付着されたメタデータの形態を有する。
【００１９】
なお、ホストは、データと共に保存されるメタデータを指定できる。このメタデータは、ＥＣＣビットのような、メモリートランザクションの内でいくつかの“スペア（ｓｐａｒｅ）”ビットを用いるデータにしばしば添付される。
メモリーからデータが読み込まれる（ｒｅａｄ）されると、このメタデータもまた読み込まれ、メモリーコントローラーに戻らなければならない。
相異なる供給業者らは相異なるメタデータのビット割当を要求でき、そして多様なメタデータの要求を支援する多様な従来の方法は、各々固有の短所を有する。
本質的にメタデータのビットを支援するのは、ＥＣＣのためのビットの効用性と、そしてこれにＥＣＣ強度の均衡を要求する。
【００２０】
例えば、データの８個のバースト（ｂｕｒｓｔ）の各々にＥＣＣのための８個のビットを包含するメモリーモジュールを考慮する。
この組み合わせは、各５１２ビットメモリトランザクションに対するＥＣＣのため、使用可能な総計６４ビットを変換する。
バースト当り８個ビットの中で３個がメタデータのため使用されると、６４個ＥＣＣビットの中で２４個はメタデータのため使用され、残りの４０個ビットはＥＣＣのため使用可能である。
しかし、バースト当り８個ビットの中で２個のみがメタデータのため使用されると、６４個のビットの中で１６個のみがメタデータのため使用され、残りの４８個のビットはＥＣＣのため使用可能である。
前者の組み合わせは、メタデータのため多くのビットを提供するがＥＣＣが弱くなる。
後者の組み合わせは、ＥＣＣが強くなるがメタデータのため少ないビットを提供する。
【００２１】
メモリーモジュールがメタデータ及びＥＣＣに割り当てられた特定の個数のビットを含んで製作されると、相異なるメモリーモジュールが相異なるメタデータ及びＥＣＣ要求を支援するのに必要である。
もっと良いソリューション（ｓｏｌｕｔｉｏｎ）は、残りのビットから関連されたメタデータ量の柔軟性を勘案して、一つの装置内で複数の相異なるＥＣＣアルゴリズム（一部は強く、一部は弱い）を支援することである。
【００２２】
ＤＤＲ５のような、未来のメモリーソリューションは他の問題を導入する。
ＤＤＲ５メモリーから狭いチャンネルへの変化で、エラー訂正のためのオーバーヘッドと共にプリフェッチされる（ｐｒｅ−ｆｅｔｃｈｅｄ）ビット数が増加する。
例えば、ＤＤＲ４メモリーは１６個データチップ当り２個のＥＣＣチップを要求する。
一方、ＤＤＲ５メモリーは８個データチップ当り２個のＥＣＣチップを要求する。
従って、ＤＤＲ５で既存のＥＣＣ能力（ｃａｐａｂｉｌｉｔｙ）を維持するには増加されたＥＣＣオーバーヘッドを要求する。
既存のオーバーヘッドを維持するのはメモリーのＥＣＣ能力を弱化させる。
【００２３】
従来、複数のコーディングシステムは、２個（或いは、それ以上の）の全てのエンコーダ又はデコーダを要求するが、しかし、一度に一つ（活性ＥＣＣメカニズムのためのコーディングシステム）だけ活性化され、はるかにずっと多くの回路を要求する。
本発明の実施形態において、エンコーダ／デコーダは“常にオン（ａｌｗａｙｓ  ｏｎ）”の部分と、もっと大きい範囲を提供する切換可能な部分に分けられる。
本発明の実施形態がどのように動作できるかの例示として、エンコーダ／デコーダの“常にオン（ａｌｗａｙｓ  ｏｎ）”の部分はエラーを検出できる（しかし、必ずしもエラー訂正ではない）ＣＲＣ（Ｃｙｃｌｉｃ  Ｒｅｄｕｎｄａｎｃｙ  Ｃｈｅｃｋ、巡回冗長検査）を具現できる。
切換可能なエンコーダ／デコーダは、エラー訂正もできるパリティー情報を具現できる。
【００２４】
切換可能なエンコーダ／デコーダ回路の動作は、モードレジスタの特定の値を設定して変更することができる。
本明細書の設計は、ＮＶＤＩＭＭ及び未来のＤＤＲ（ｘ）インターフェースベースのＤＲＡＭの全てに適用することができる。
【００２５】
図１は、本発明の実施形態による複数レベルのエンコーディング／デコーディングを遂行するように作動するストレージ装置を有するマシンの概要を示すブロック図である。
図１を参照すると、マシン（ｍａｃｈｉｎｅ）１０５を示す。
マシン１０５は、デスクトップ又はラップトップコンピュータ、サーバ（独立実行型サーバ又はラックサーバの中の一つ）、又は本発明の実施形態が役に立つことのできる任意の他の装置を含むが、これに限定されない任意の所望するマシンであり得る。
マシン１０５は、専門化された携帯用コンピューティング装置、タブレットコンピュータ、スマートフォン、及び他のコンピューティング装置をなお含むことができる。
マシン１０５は、任意の所望するアプリケーションを実行できる。
データベースアプリケーションが良い例示であるが、本発明の実施形態は任意の所望するアプリケーションまで拡張することができる。
【００２６】
マシン１０５は、それの特定の形態とは関係なく、プロセッサ１１０、メモリー１１５、及びストレージ装置１２０を含み得る。
プロセッサ１１０は、任意の多様なプロセッサであり得る。
例えば、インテル（登録商標）Ｘｅｏｎ（登録商標）、Ｃｅｌｅｒｏｎ（登録商標）、Ｉｔａｎｉｕｍ（登録商標）、又はＡｔｏｍ（登録商標）プロセッサ、ＡＭＤ（登録商標）Ｏｐｔｅｒｏｎ（登録商標）プロセッサ、ＡＲＭ（登録商標）プロセッサなどであり得る。
【００２７】
図１では一つのプロセッサを示すが、マシン１０５は任意の個数のプロセッサを含むことができ、各々はシングルコア又はマルチコアプロセッサであり得る。
メモリー１１５は、フラッシュメモリー、ＳＲＡＭ（Ｓｔａｔｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、ＰＲＡＭ（Ｐｅｒｓｉｓｔｅｎｔ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、ＦＲＡＭ（登録商標）（Ｆｅｒｒｏｅｌｅｃｔｒｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、又はＭＲＡＭ（Ｍａｇｎｅｔｏｒｅｓｉｓｔｉｖｅ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）のようなＮＶＲＡＭ（Ｎｏｎ−Ｖｏｌａｔｉｌｅ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）などのような任意の多様なメモリーであり得る。
メモリー１１５は、なお相異なるメモリー種類の任意の所望する組み合わせであり得る。
メモリー１１５は、メモリーコントローラー１２５、マシン１０５の一部により制御することができる。
【００２８】
ストレージ装置１２０は、任意の多様なストレージ装置であり得る。
ストレージ装置１２０は、メモリーの中に有り得る装置ドライバー１３０によって制御することができる。
【００２９】
図２は、図１のマシン１０５の追加的な詳細を示すブロック図である。
図２を参照すると、一般的に、マシン１０５はマシンの構成要素の動作を調整するのに使用されるメモリーコントローラー１２５及びクロック２０５を含み得る一つ以上のプロセッサ１１０を含む。
プロセッサ１１０は、なお例示としてＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、ＲＯＭ（Ｒｅａｄ−Ｏｎｌｙ  Ｍｅｍｏｒｙ）、又は他の状態保存媒体を含み得るメモリーと接続することができる。
なお、プロセッサ１１０はストレージ装置１２０と接続でき、そして例えば、イーサネット（登録商標）コネクターであり得るネットワークコネクター２１０と接続され得る。
プロセッサ１１０は、なお他の構成要素の中でユーザーインターフェース２２０及び入出力エンジン２２５を利用して管理できる入出力インターフェースポートに付着するバス２１５と接続され得る。
【００３０】
図３は、本発明の実施形態によるエンコーディング／デコーディングを遂行するように作動する図１のマシン１０５のメモリーモジュールを示すブロック図である。
図３を参照すると、メモリーモジュール１１５を示す。
メモリモジュール１１５は、チップ（３０５−１〜３０５−６）を含む。
図３は、６個のチップ（３０５−１〜３０５−６）を含むものとしてメモリーモジュールを示すが、しかし本発明の実施形態は任意の個数のチップ３０５の使用を支援できる。
【００３１】
メモリーモジュール１１５は、また、ＤＩＭＭコントローラー３１０を含む。
ＤＩＭＭコントローラー３１０は、チップ（３０５−１〜３０５−６）間のデータ移動、メモリーモジュール１１５の中でキャッシュ（図示せず）を支援するキャッシュメカニズム、及び他の機能を制御する。
ＤＩＭＭコントローラー３１０の一部であり得るコーディングメカニズム３１５は、メモリートランザクションの一部として、ＥＣＣ（Ｅｒｒｏｒ  Ｃｏｒｒｅｃｔｉｏｎ  Ｃｏｄｅ）のような多様なコーディングを遂行及び／又は使用できる。
【００３２】
例えば、コーディングメカニズム３１５は、メモリートランザクションの一部であるデータ上のエラー訂正コードを生成するか使用できる。
図７〜図９を参照して後述で説明するように、コーディングメカニズム３１５は、メモリーモジュール１１５の中で要求される空間及びメモリモジュール１１５によって生成される熱を減らすためのハードウェア具現（部分的に或いは完全に）を共有できる複数のコーディングを支援できる。
なお、多様なコーディングは関わり合うことができる。
即ち、一つのコーディングは完全に別個ではない他のコーディングを補完できる。
例えば、コーディングメカニズム３１５は、コーディング回路又はコーディング装置であり得る。
【００３３】
図４は、本発明の実施形態によるエンコーディング／デコーディングを遂行するように作動する図１のメモリーコントローラー１２５を示すブロック図である。
図４を参照すると、メモリコントローラー１２５はコーディングメカニズム３１５を含む。
メモリーコントローラー１２５は、また図１のマシン１０５の間でのデータを受信し、送信する受信機／送信機４０５、図１のマシン１０５からメモリートランザクションを受信する特定のメモリーモジュールを選択するメモリーモジュール選択機４１０などのような他の従来の構成要素を含み得る。
【００３４】
一般的に、図３のメモリーモジュール１１５及びメモリコントローラー１２５の中の一つがデータをエンコーディングするものであり、他の一つがデータをデコーディングするものであるが、メモリーコントローラー１２５の中のコーディングメカニズム３１５は図３のメモリーモジュール１１５の中のコーディングメカニズム３１５と同様に動作する。
例えば、コーディングメカニズム３１５がエラー検出及び訂正コードを生成するのに使用されると、一つのコーディングメカニズム３１５はエラー検出及び訂正コードを生成するものであり、そして他のコーディングメカニズム３１５はメモリートランザクションの一部として伝送された任意のデータにエラーがあるか否かを判別するため、そのコードを使用するものである。
【００３５】
図５の（ａ）及び（ｂ）は、エンコーディング／デコーディングのため使用される可変的な個数のＥＣＣビットを示す図である。
図５の（ａ）は、広いメモリーチャンネルを示す。
図５の（ａ）で（そして、図５の（ｂ）で）、メモリートランザクションの各バーストは７２個のビット（データの６４個のビット及び非データ（ｎｏｎ−ｄａｔａ）の８個のビット）を伝送する。
総計８個のバーストは、メモリートランザクション当り総計５１２個のビットのデータを、そしてメモリートランザクション当り６４個のビットの非データを伝達するはずである。
【００３６】
各バーストの内で、非データに割り当てられた８個のビットの中の５個のビットはエラー検出／訂正のため使用されるものとして示し、３個のビットはメタデータのため使用されるものとして示した。
エラー検出／訂正のため使用される５個のビットは、例示では、エラー検出／訂正のため常に使用される“基本ビット数”５０５と考慮され得る。
３個の残りの非データのビットは、特定の具現により、エラー検出／訂正又はメタデータのため使用され得る。
【００３７】
図５の（ａ）と対照的に、図５の（ｂ）では、同一の７２個のビットを示すが、しかし、図５の（ｂ）では、基本ビット数５０５は、相変わらず同一の（５個のビット）だが、他の非データのビットはメタデータに全ては割り当てない。
代わりに、これらのビットの中の２個はメタデータに割り当てられ、しかし他の（１個）残りのビットはエラー検出／訂正に割り当てられる。
エラー検出／訂正に割り当てられたこの追加ビットはこの例示では、補助ビット数５１０として呼称する。
８個のＥＣＣビットの中の６個が図５の（ｂ）でエラー訂正のため、実際に使用されるので、図５の（ｂ）は図５の（ａ）と比較すると、もっと優秀なエラー検出／訂正を提供する。
データ、非データ、ＥＣＣ、及びメタデータのため使用するビットの個数は、例示的である。
任意の個数のビットは任意のカテゴリーのため使用することができる。
【００３８】
図５の（ａ）及び（ｂ）と対照的に、図６の（ａ）及び（ｂ）は、狭いメモリーチャンネルを示す。
図６の（ａ）で（そして、図６の（ｂ）で）、メモリートランザクション内の各バーストは４０個のビット（データの３２個のビット及び非データの８個のビット）を伝送する。
総計１６個のバーストはメモリートランザクション当り総計５１２個のビットのデータ、そしてメモリートランザクション当り１２８個ビットのメタデータ／ＥＣＣを伝達するはずである。
【００３９】
各バースト内で、非データに割り当てられた８個のビットの中の４個のビットはエラー検出／訂正のため使用され、４個のビットはメタデータのため使用される。
エラー検出／訂正のため使用される４個のビットは例示ではエラー検出／訂正のため、常に使用される“基本ビット数”５０５と考慮することができる。
残りの非データのビットは特定の具現により、エラー検出／訂正又はメタデータのため使用され得る。
【００４０】
図６の（ａ）と対照的に、図６の（ｂ）では同一の４０個のビットを示すが、しかし、図６の（ｂ）では、基本ビット数５０５は、相変わらず同一の（４個のビット）だが、他の非データのビットはメタデータに全ては割り当てない。
代わりに、これらのビットの中の２個はメタデータに割り当てられ、そして他の２個のビットはエラー検出／訂正に割り当てられる。
エラー検出／訂正に割り当てられた２個の追加ビットは、例示では“補助ビット数”５１０と考慮することができる。
８個の非データのビットの中の６個が、図６の（ｂ）でエラー訂正のため実際に使用されるので、図６の（ｂ）は図６の（ａ）と比較すると、もっと優秀なエラー検出／訂正を提供する。
【００４１】
図７は、本発明の第１の実施形態による、図３及び図４のコーディングメカニズム３１５を示すブロック図である。
図７を参照すると、コーディングメカニズム３１５は、エンコーダ（７０５、７１０）、スイッチ７１５、及びストレージ７２０を含む。
エンコーダ（７０５，７１０）は入力データを受け、データからコード（７２５、７３０）を生成する。
第１エンコーダ７０５は、第２エンコーダ７１０が使用されるか否かに関わらず、データを符号で処理するのに常に使用される主エンコーダとして見なすことができる。
第２エンコーダ７１０は、二次的なエンコーダとして見なすことができる。
第２エンコーダ７１０は、スイッチ７１５が閉じると使用される。
スイッチ７１５は、ストレージ７２０に保存されたモードレジスタ７３５の値により順次に開くか閉じる。
【００４２】
例えば、第１エンコーダ７０５は、図５の（ａ）〜図６の（ｂ）の基本ビット数（例えば、図５の（ａ）及び（ｂ）の５個のビット、又は図６の（ａ）及び（ｂ）の４個のビット）を用い、入力データに基づいてエラー検出コードを生成する。
その次に、（二次的な）第２エンコーダ７１０は、図５の（ａ）〜図６の（ｂ）の二次的な補助ビット数５１０（例えば、図５の（ｂ）の１個のビット、図６の（ｂ）の２個のビット）が正（＋）であるか（「０」より大きいか）否かにより追加エラー訂正コードの追加ビットを生成するのに使用することができる。
【００４３】
モードレジスタ７３５には第２エンコーダ７１０が活性化されるように、スイッチ７１５が開くか又は閉じるかを示す値を設定することができる。
但し、１個のスイッチのみを図７では使用したので、モードレジスタ７３５は、１ビットのデータのみを含むことができる。
例えば、ビットが「０」に設定されるとスイッチ７１５は開き、そしてビットが「１」に設定されるとスイッチ７１５は閉じる。
モードレジスタ７３５は，任意の所望するアクセス方法を利用し、スイッチ７１５（又は、図９〜図１１を参照して説明する任意の追加スイッチ）を開くか又は閉じるかを表わすことができる。
【００４４】
図７では、図３及び図４のコーディングメカニズム３１５がエラー訂正コードとして使用され得るコードをどのように生成するかを示すが、図７のコーディングメカニズム３１５は、データが正確に伝送されたか検証及び／又は訂正するため、このエラー訂正コードを使用しない。
図８では、本発明の第２の実施形態により、こういうコードをデコーディングできる図３及び図４のコーディングメカニズム３１５を示す。
【００４５】
図８を参照すると、コーディングメカニズムが、データ及び図７のコード（７２５、７３０）のようなコードを受信することを示す。
この情報は、図５の（ａ）〜図６の（ｂ）の基本ビット数５０５に基づいてデータの最初のデコーディングを遂行して第１結果８１０を生成する第１デコーダ８０５に入力される。
しかし、図５の（ｂ）及び図６の（ｂ）の補助ビット数５１０が「０」ではないと、（可能なコーディングメカニズム３１５で入力されたデータ及びコードと共に）デコーダの出力は、なお図５の（ｂ）及び図６の（ｂ）の補助ビット数５１０に基づいて追加デコーディングを遂行する第２デコーダ８１５に移動する。
第２デコーダ８１５の結果は第２結果８２０として示す。
第２デコーダ８１５が使用されるか否かは、モードレジスタ７３５に基づいて開くか閉じるスイッチ８２５により制御される。
結果（８１０、８２０）が全部使用されると、データのより良い判別を期待できる。
例えば、第１結果８１０だけを使用する以上のエラー検出及び訂正の両者、又は向上されたエラー検出又は向上されたエラー訂正を期待することができる。
【００４６】
図７及び図８は、２個レベルのエンコーダ及びデコーダを用いてエンコーディング及びデコーディングを遂行するコーディングメカニズム３１５を示したが、本発明の実施形態は任意の所望する構成を用いて任意の個数のレベル内の任意の個数のエンコーダ及びデコーダを支援できる。
図９は、本発明の第３の実施形態による図３及び図４のコーディングメカニズム３１５を示すブロック図である。
図９を参照すると、コーディングメカニズム３１５は、エンコーダ（７０５、７１０、９０５）、スイッチ（７１５、９１０）、及びストレージ７２０を含む。
第１、第２エンコーダ７０５、７１０のように、第３エンコーダ９０５は入力データを受けることができ、データから第３コード９１５を生成する。
第２エンコーダ７１０、第３エンコーダ９０５は、スイッチに基づいて、任意の所望する組み合わせ内で活性化することができる。
例えば、第１コード７２５を生成するのに第１エンコーダ７０５だけが使用される場合、スイッチ（７１５、９１０）は全部開く。
又は、第１〜第３コード（７２５、７３０、９１５）を各々生成するのに第１〜第３エンコーダ（７０５、７１０、９０５）が全部使用される場合、スイッチ（７１５、９１０）は全部閉じる。
又は、第２コード７３０又は第３コード９１５を生成するのに第２エンコーダ７１０、第３エンコーダ９０５の中の一つだけが使用される場合、スイッチ（７１５、９１０）の中の一つだけを閉じる。
スイッチ（７１５、９１０）は、モードレジスタ７３５の値を用いて管理することができる。
【００４７】
また、例えば、第１エンコーダ７０５は、図５の（ａ）及び（ｂ）の５個の基本ビット数５０５、又は図６の（ａ）及び（ｂ）の４個の基本ビット数５０５を用いて、入力データに基づいてエラー検出コードを生成する。
その次に、二次的なエンコーダ（７１０、９０５）は、図５の（ｂ）及び図６の（ｂ）の二次的な補助ビット数５１０が少なくても１個又は２個であるか否かにより、エラー訂正コードの１個又は２個（又は、それ以上の）の追加ビットを生成するのに使用され得る。
【００４８】
図９は、２個のスイッチ（７１５、９１０）を含むので、モードレジスタ７３５は開くか閉じるスイッチ（７１５、９１０）の全ての適切な組み合わせを支援するため１個のビット以上が必要であり得る。
例えば、モードレジスタ７３５の最下位のビットは、スイッチ７１５が開くか閉じるかを指定でき、モードレジスタ７３５の次の下位ビットは、スイッチ９１０が開くか閉じるかを指定できる。
モードレジスタ７３５は、任意の所望するアクセス方法を用いてどのスイッチが開くか閉じるかを表わすことができる。
【００４９】
図９は、３個のエンコーダ（７０５、７１０、９０５）を用いてエンコーディングを遂行する図３及び図４のコーディングメカニズム３１５を示した。
同様の方式で、図３及び図４のコーディングメカニズム３１５は、なお２個以上のデコーダを用いてデコーディングを遂行できる。
図１０は、本発明の第４の実施形態によるコーディングメカニズムの例示を示すブロック図である。
【００５０】
図１０を参照すると、コーディングメカニズム３１５がデータ及び図７及び図９の第１〜第３コード（７２５、７３０、９１５）のようなコードを受信することを示す。
図８を参照して前述したように、この情報は、図５の（ａ）〜図６の（ｂ）の基本ビット数５０５に基づいてデータの最初のデコーディングを遂行し、第１結果８１０を生成する第１デコーダ８０５に入力される。
しかし、図５の（ｂ）及び図６の（ｂ）の補助ビット数５１０が「０」ではないと、（潜在的にデータ及びコードと共に）第１デコーダ８０５の出力は、なおも図５の（ｂ）及び図６の（ｂ）の補助ビット数５１０に基づいて追加デコーディングを遂行するデコーダに移動する。
第２デコーダ８１５の結果は第２結果８２０として示す。
【００５１】
図５の（ｂ）及び図６の（ｂ）の補助ビット数５１０が第２デコーダ８１５のみにより生成するよりはもっと多くのビットを含むと、（また、潜在的にデータ及びコードと共に）第２デコーダ８１５の出力は、なおも図５の（ｂ）及び図６の（ｂ）の補助ビット数５１０に基づいて追加デコーディングを遂行する第３デコーダ１００５に移動する。
第３デコーダ１００５の結果は第３結果１０１０として示す。
第３デコーダ１００５が使用されるか否かは、モードレジスタ７３５に基づいて開くか閉じるスイッチ１０１５により制御される。
全ての結果（８１０、８２０、１０１０）を使用することはデータのより良い判別を提供することが期待され得る。
例えば、第１結果８１０、第２結果８２０だけを使用する以上のエラー検出及び訂正の両者、又は向上されたエラー検出又は向上されたエラー訂正を期待することができる。
【００５２】
図７〜図１０に示した本発明の実施形態において、エンコーディングは、図７及び図９の選択的な並列エンコーダ（７１０、９０５）（ｐａｒａｌｌｅｌ  ｅｎｃｏｄｅｒｓ）を用いて行われ、一方、デコーディングは、図８及び図１０の直列デコーダ（８１５、１００５）（ｃａｓｃａｄｉｎｇ  ｄｅｃｏｄｅｒｓ）を用いて行われる。
しかし、本発明の実施形態は、直列エンコーダ（又は並列及び直列エンコーダの組み合わせ）を用いてエンコーディングを遂行することができ、並列デコーダ（又は、並列及び直列デコーダの組み合わせ）を用いてデコーディングを遂行できる図３及び図４のコーディングメカニズム３１５を含む。
【００５３】
図１１は、本発明の第５の実施形態による直列エンコーダを利用する図３及び図４のコーディングメカニズム３１５を示すブロック図である。
図１１を参照すると、コーディングメカニズム３１５がエンコーダ（７０５、７１０、９０５）、スイッチ（７１５、９１０）、及びストレージ７２０を含むものを示す。
この全ての構成要素は、図９と同様に動作する。
しかし、第２エンコーダ７１０の代替である第３エンコーダ９０５の代わりに、第３エンコーダ９０５は第２エンコーダ７１０をオプションとして補完できる。
即ち、図１１の第３エンコーダ９０５は図１１の第２エンコーダ７１０が使用されないと、使用されない。
よって、第３エンコーダ９０５は、スイッチ（７１５，９１０）が全部閉じると使用される。
スイッチ（７１５、９１０）は、ストレージ７２０に保存されたモードレジスタ７３５の値により順次に開くか閉じることができる。
【００５４】
また、例えば、第１エンコーダ７０５は、図５の（ａ）及び図５の（ｂ）の５個の基本ビット数５０５、又は図６の（ａ）及び図６の（ｂ）の４個の基本ビット数５０５を用いて、入力データに基づいてエラー検出コードを生成する。
その次に、二次的なエンコーダ（第２エンコーダ）７１０は、図５の（ｂ）及び図６の（ｂ）の二次的な補助ビット数５１０が少なくても１個又は２個であるか否かにより、エラー訂正コードの１個又は２個（または、それ以上）の追加ビットを生成するのに使用される。
メタデータのビットが全然必要ではないと、即ち、図５の（ｂ）及び図６の（ｂ）の二次的な補助ビット数５１０がエンコーダにより生成されたビットの個数より大きければ、第３エンコーダ９０５は、なお追加の二次的なビットを用いて、追加に、そしてさらにエラー訂正が可能な（ｆｕｒｔｈｅｒ  ａｎｄ  ｍｏｒｅ−ｃａｐａｂｌｅ）エラー訂正コードを生成するのに使用される。
【００５５】
直列エンコーダを使用する本発明の実施形態において、図８及び図１０のコーディングメカニズム３１５と共に、直列内下位のエンコーダは入力として以前のエンコーダの出力を受信でき、なおオリジナルのデータを受信できる可能性がある。
従って、例えば、図１１の第３エンコーダ９０５は、図１１の第２コード７３０を受信でき、そしてなおオリジナルのデータを受信して図１１の第３コード９１５を生成する。
【００５６】
図９のように、図１１は、２個のスイッチ（７１５、９１０）を含むので、モードレジスタ７３５は開くか閉じるスイッチ（７１５、９１０）の全ての適切な組み合わせを支援するため１ビット以上が必要であり得る。
例えば、モードレジスタ７３５の最下位ビットは、スイッチ７１５が開くか閉じるかを指定でき、モードレジスタ７３５の次の下位ビットは、スイッチ９１０が開くか閉じるかを指定できる。
モードレジスタ７３５は、任意の所望するアクセスを利用してどのスイッチが開くか閉じるかを表わすことができる。
【００５７】
本明細書では、“コーダー（ｃｏｄｅｒ）”の用語は、エンコーダ及びデコーダの全部を含む包括的な用語になるように意図している。
同様に、本明細書では、“エラー管理（ｅｒｒｏｒ  ｍａｎａｇｅｍｅｎｔ）”の用語は（図７、９、１１のコーディングメカニズム３１５と共に）エラー検出及び／又は訂正コードの生成、そして（図８及び図１０のコーディングメカニズム３１５と共に）任意のエラーを検出及び訂正することから、このようなコードの使用の全てを含む包括的用語になるように意図している。
なお、“エラー管理”の用語は、エラー検出及び訂正の全ての変形を含むように意図している。
従って、例えば、図７、９、１１の第１コード７２５がオリジナルのデータ内のエラー検出能力を提供し、そして図７、９、１１の第２コード７３０がオリジナルのデータ内のエラー訂正能力を提供すれば、両者は“エラー管理”と見なす。
同様に、図７、９、１１の第１コード７２５が弱いエラー検出又はエラー訂正結果を提供し、図７、９、１１の第２コード７３０が強いエラー検出又はエラー訂正を提供すれば、両者は“エラー管理”と見なす。
【００５８】
図７〜図１１は、本発明の特定の実施形態を提示する。
しかし、本発明の他の実施形態は、エンコーダ又はデコーダの任意の所望する組み合わせを支援できる。
従って、例えば、図３及び図４のコーディングメカニズム３１５は、いくつの直列のコーダー及び代替の他のコーダーを包含できる。
又は、図３及び図４のコーディングメカニズム３１５は、直列の下位レベルで、複数の代替のコーダーと共に、直列の最上位で一つのコーダーを有することができる。
そして、このような直列の代替コーダーの組み合わせの全ては本発明の実施形態として含まれる。
また、モードレジスタ７３５の値は、モードレジスタ７３５の値からスイッチ（７１５、９１０）への任意の所望するマッピング（ｍａｐｐｉｎｇ）を用いて、どのスイッチが開くか、そしてどのスイッチが閉じるか制御できる。
なお、本発明の実施形態は、全ての任意の構成において、エンコーディング及びデコーディングメカニズムの全てを支援できる。
例えば、図３及び図４のコーディングメカニズム３１５は、図７、図９、図１１で示したようなエンコーダ、そして図８及び図１０で示したようなデコーダを全部包含できる。
【００５９】
なお、図７は、２個のデコーダ（７０５、７１０）のみを示し、そして図９及び図１１の各々は、３個のエンコーダ（７０５、７１０、９０５）を示す。
同様に、図８は、２個のデコーダ（８０５、８２５）を示し、一方、図１０は、３個のデコーダ（８０５、８２５、１００５）を示す。
本発明の実施形態は任意の個数のコーダー、及び任意の所望する構成を支援できる。
本発明の実施形態のために必要なコーダーの最小個数は、エンコーダ（７０５、７１０）又はデコーダ（８０５，８１５）のような２個のコーダーを含むものであり、ここでエンコーダ７０５又はデコーダ８０５のような１個のコーダーはいつも活性化され、そしてエンコーダ７１０又はデコーダ８１５のような１個のコーダーは第１コーダーを補完するのに使用することができる。
【００６０】
上述した通り、図７、図９、及び図１１のエンコーダ（７０５、７１０、９０５）、及び図８及び図１０のデコーダ（８０５、８１５、１００５）は、ハードウェア具現を共有できる。
例示として、図７、図９、及び図１１のエンコーダ（７０５、７１０、９０５）は、全ての可能なＥＣＣビットを生成する１個のエンコーダとして具現され得る。
次に、図７、図９、及び図１１のスイッチ（７１５、９１０）は、図７、図９、及び図１１のコーディングメカニズム３１５から出力されるあるＥＣＣビットを選択できる。
「エラー検出ビット」だけ、いくつの「エラー訂正ビット」、及び／又は全ての「エラー訂正ビット」（又は、「弱いエラー検出／訂正」対「強いエラー検出／訂正」、「弱いエラー検出／訂正ビット」だけ、いくつの「強いエラー検出／訂正ビット」、又は全ての「強いエラー検出／訂正ビット」）を実施形態として含むことができる。
【００６１】
図５の（ｂ）及び図６の（ｂ）の補助ビット数５１０は、実際には２つ以上のビットのセットを含み得る。
例えば、図５の（ｂ）及び図６の（ｂ）でメタデータビットが必要ではないと仮定する。
図５の（ｂ）の補助ビット数５１０は３個のはずであり、そして図６の（ｂ）の補助ビット数５１０は４個のはずである。
しかし、４コードビットを生成するのを支援できる図７、図９、及び図１１のコーディングメカニズム３１５の内において第２コーダーがないこともある。
本発明のこういう実施形態において、図７、図９、及び図１１の第２エンコーダ７１０は、２ビットのエラー訂正能力を付加する図７、図９、及び図１１の第２コード７３０を生成するのに使用することができ、そして図９及び図１１の第３エンコーダ９０５は追加の２ビットのエラー訂正能力を付加する図９及び図１１の第３コード９１５を生成するのに使用し得る。
【００６２】
（エンコーダ又はデコーダである）１個の二次的なコーダーだけがあると、図５の（ｂ）及び図６の（ｂ）の単１の補助ビット数で十分である。
しかし、複数の二次的なコーダーがあると（又は、別法として又は結合して、第２コーダー、第３コーダーなど）、このような複数のコーダーをいつ活性化するかを管理する代替方法がある。
本発明の実施形態において、複数の二次的なコーダーにより支援される相異なるビット数を管理する図５の（ｂ）及び図６の（ｂ）の複数の補助ビット数５１０が有り得る。
例えば、図１１のコーディングメカニズムを考慮する。
第２エンコーダ７１０は、第２コード７３０として２個の追加ビットを提供するのに使用することができ、そして第３エンコーダ９０５は第３コード９１５としてコードの第３追加ビットを提供できる。
【００６３】
これを表わすため、図５の（ｂ）及び図６の（ｂ）の補助ビット数５１０は２補助ビットを実際に包含できる。
その次に、システムがメタデータのため３ビットを要求すると、このような値の全ては補助エラー訂正コードのため使用可能なビットがないということを示す「０」で設定し得る。
しかし、システムがメタデータにため１ビットだけを要求すれば補助ビット数の中で一つは「２」で設定し得る。
そして、システムがメタデータのためビットを要求しないと、補助ビット数の中で一つは「２」で設定することができ、他の補助ビット数は「１」で設定することができる。
この情報から、図１１のモードレジスタ７３５は、使用可能な補助ビット数のため適切に図１１のエンコーダ（７１０、９０５）を活性化するように設定され得る。
【００６４】
本発明の他の実施形態において、図５の（ｂ）及び図６の（ｂ）の補助ビット数５１０は単一の値として、メタデータとして使用されない全ての追加ビット（図５の（ａ）〜図６の（ｂ）の基本ビット数５０５として表現されること以上）を表わすことができる。
その次に、コーダーは全ての使用可能なビットを使用するのに適切に活性化され得る。
こういう本発明の実施形態において、図５の（ｂ）及び図６の（ｂ）の補助ビット数５１０は、いくら多くのビットがメタデータのため必要であるかによって「０」、「２」、又は「３」（又は、図５の（ｂ）及び図６の（ｂ）の基本ビット数５０５、及び図５の（ｂ）及び図６の（ｂ）の補助ビット数５１０の値より異なる値）で設定され得る。
【００６５】
その次に、図１１のエンコーダ（７１０、９０５）により生成される知られたビット数と比較してこの値を比べることで、図１１のモードレジスタ７３５は、図１１のエンコーダ（７１０、９０５）を活性化するように設定することができる。
例えば、図５の（ｂ）及び図６の（ｂ）の補助ビット数５１０が「０」であると、その次に、図１１のモードレジスタ７３５は、図１１のエンコーダ（７１０，９０５）の中でいずれも活性化されないように設定することができる。
図５の（ｂ）及び図６の（ｂ）の補助ビット数５１０が「２」であると、（図１１の第２エンコーダ７１０は第２コード７３０内全ての使用可能な補助ビットを使用するのに充分なビットを生成するはずであるので）図１１のモードレジスタ７３５は、図１１の第２エンコーダ７１０が活性化されるように、しかし図１１の第３エンコーダ９０５は活性化されないように設定し得る。
【００６６】
そして、図５の（ｂ）及び図６の（ｂ）の補助ビット数５１０が「３」であると、図１１のモードレジスタ７３５は、図１１のエンコーダ（７１０、９０５）の全てが活性化されるように設定し、コード（７３０、９１５）内の全てを追加ビット数「３」に生成する。
図３及び図４のコーディングメカニズム３１５は、通常ハードウェアの形態で具現されるので、図７、図９、及び図１１のコード（７３０、９１５）の一部として生成され得るビット数は予め知られ、最大可能なエラー検出／訂正を支援するため、どれだけ多くの二次的なコーダーが必要であるかを容易に判別することができる。
【００６７】
（図１１のような）直列コーダーの場合、本発明の実施形態において、図１１のモードレジスタ７３５により活性化されるコーダーは（図５の（ｂ）及び図６の（ｂ）の補助ビット数５１０に基づいて）特定の順序（シークエンス）が必要である。
従って、例えば、図１１のエンコーダ（７１０、９０５）の各々が（図１１のコード（７３０、９１５）内で）２ビットのコードを生成するが、しかし図５の（ｂ）及び図６の（ｂ）の補助ビット数５１０は「３」であり、図１１の第３エンコーダ９０５は活性化されてはならない（用いられるビット数よりもっと多くのビットを生成するはずである）。
【００６８】
しかし、代案として使用可能なコーダーの場合、本発明の実施形態において、図９のコーディングメカニズム３１５として、コーダーは活性化のため選択され、図５の（ｂ）及び図６の（ｂ）の使用可能な補助ビット数５１０を最大化できる。
例えば、図５の（ｂ）及び図６の（ｂ）の補助ビット数５１０が「３」であり、（図９の第２エンコーダ７１０により生成された）図９の第２コード７３０が追加ビット数「２」を含んだとし、そして（図９の第３エンコーダ９０５により生成された）図９の第３コード９１５が追加ビット数「３」を含んだことで仮定した。
システムのエラー検出／訂正を最大化するため、図９のモードレジスタ７３５は、図９の第３エンコーダ９０５が活性化されるように、しかし図９の第２エンコーダ７１０は活性化されないように設定しなけばならない。
このような方式で、（図９のエンコーダ７１０により生成されることとして）２ビットのみではない、追加エラー訂正ビット数「３」を生成し得る。
【００６９】
上述した通り、相異なるホスト及びメモリーモジュールの製造業者は相異なるメタデータを要求できる。
本発明の実施形態は、図１のメモリーコントローラー１２５及び図１のメモリーモジュール１１５がＥＣＣ対メタデータに対する可変的なビット数を支援できるようにする。
結果的に、図１のメモリーコントローラー１２５及び図１のメモリーモジュール１１５の全ては、種々の「ＥＣＣ対メタデータ」を支援する該当構成要素と共にメモリートランザクションを支援できる。
即ち、図３のメモリーモジュール１１５を支援する本発明の実施形態は、メモリーコントローラー１２５の特定のメタデータの要求に関わらずに、図１のメモリーコントローラー１２５と通信でき、図１のメモリーコントローラー１２５のメタデータ要件が与えられると、使用可能な最適のＥＣＣを提供する。
【００７０】
そして、図４のメモリーコントローラー１２５を支援する本発明の実施形態は、図１のメモリーモジュール１１５と通信でき、固有のＥＣＣ能力の使用を最大化できる。（勿論、マシンが図３のメモリーモジュール１１５及び図４のメモリーコントローラー１２５を全て含むと、二つはそれらの中でいずれの一つが個別的に支援する最適のＥＣＣを使用できる）
換言すれば、例えば、ＮＶＤＩＭＭのメモリーを使用する本発明の実施形態において、ＮＶＤＩＭＭのメモリーモジュールは、ホストによって要求されるメタデータのビット数に基づいて提供されたＥＣＣの支援レベルを変更できる。
他の例として、ＤＤＲ５のメモリーを使用する本発明の実施形態において、図１のメモリーコントローラー１２５は、ＤＤＲ５のメモリーがＥＣＣ能力の現在レベル、又はＥＣＣのオーバーヘッドの現在レベルを維持するか否かに基づいてＥＣＣの支援レベルを変更できる。
【００７１】
通常、図１のマシン１０５の電源が入ると「ＥＣＣ」対「メタデータ」のために使用されるビット数が判別され、（ランタイム（ｒｕｎｔｉｍｅ）の間の変更は、受信時データがどのように解析されるかに影響を与えるので）ランタイムの間、変更されない。
しかし、本発明のいくつの実施形態では、ランタイムの間「ＥＣＣ」対「メターデータ」のため使用されるビット数を変更するのを支援できる。
【００７２】
「ＥＣＣ」対「メタデータ」のため使用されるビット数が一応判別されると、図７〜図１１のモードレジスタ７３５を設定することができる。
例えば、図６の（ｂ）の補助ビット数５１０が「０」であると、図７〜図１１のモードレジスタ７３５は、図７〜図１１のスイッチ（７１５、９１０）が開くように設定する。
図６の（ｂ）の補助ビット数５１０が「０」ではないと、図７〜図１１のモードレジスタ７３５は、メモリトランザクションのエラー訂正能力を補完するように、図７〜図１１の適切なコーダー（７１０、９０５）を活性化するように図７〜図１１の適切なスイッチ（７１５、９１０）が閉じるように設定し得る。
【００７３】
図１２ａ及び図１２ｂは本発明の実施形態によるメモリートランザクションのためのエンコーディングデータに対する例示的な手順を説明するためのフローチャートである。
図１２ａを参照すると、まず、ステップＳ１２０５で、図７、図９、及び図１１のコーディングメカニズム３１５はメモリートランザクションのためのデータを受信する。
次に、ステップＳ１２１０で、図７、図９、及び図１１のコーディングメカニズム３１５は、エラー検出及び訂正で使用可能な図５の（ａ）〜図６の（ｂ）の基本ビット数及び図５の（ｂ）及び図６の（ｂ）の補助ビット数５１０を判別する。
次に、ステップＳ１２１５で、図７、図９、及び図１１の第１エンコーダ７０５は、図５の（ａ）〜図６の（ｂ）の基本ビット数５０５を用いて第１エンコーディングを遂行する。
【００７４】
図１２ｂを参照すると、ステップＳ１２２０で、図７、図９、及び図１１のコーディングメカニズム３１５は、エンコーディングされ得る任意の補助ビットが存在するかを（又は全ての残りのビットがメタデータのため使用されるかを）判別する。
エンコーディングされ得る補助ビットがない場合、ステップＳ１２２５でメモリートランザクションは（図３のメモリーモジュール１１５又は図４のメモリーコントローラー１２５の中のいずれかの一つにより）図７、図９、及び図１１のデータ及び第１コード７２５を用いて遂行される。
エンコーディングされ得る補助ビットがある場合、ステップＳ１２３０で二次的なエンコーダが補助ビット数を使用するのに選択される。
ステップ１２３０は、点線１２３５で示すように選択的である。
【００７５】
例えば、図７及び図１１のコーディングメカニズム３１５が使用されると、図７及び図１１のコーディングメカニズム３１５の任意の一つの“レベル”で選択可能な１個だけのエンコーダが存在する。
しかし、図９のコーディングメカニズム３１５が使用されると、図９のコーディングメカニズム３１５の任意の一つの“レベル”で選択可能な任意の個数のエンコーダが存在する。
よって、エンコーダは選択される必要がある。
任意の基準により、エンコーダを選択することができる。
例えば、エンコーディングのため使用可能なビットを最大限使用するエンコーダ、又は特定のタイプのエンコーディングを提供するエンコーダなどを選択することができる。
【００７６】
エンコーダが選択されれば、ステップＳ１２４０で、二次的なエンコーディングは選択されたエンコーダを用いて遂行する。
ステップＳ１２４５で、図７、図９、及び図１１のコーディングメカニズム３１５は、エンコーディングされ得る任意の残りの補助ビットがあるかどうかを判別する。
エンコーディングされ得る任意の残りの補助ビットがあれば、ステップＳ１２５０で（ステップＳ１２３０、Ｓ１２４０を必須的に反復して）追加エンコーディングを遂行する。
エンコーディングされ得る任意の残りの補助ビットがなければ、ステップＳ１２２５に進み、メモリートランザクションにてデータ及びコードが使用される。
【００７７】
図１３ａ及び図１３ｂは本発明の実施形態による図８及び図１０のコーディングメカニズムを用いてメモリートランザクションのため、データをデコーディングする例示的な手順を説明するためのフローチャートである。
図１３ａを参照すると、まず、ステップＳ１３０５で、図８及び図１０のコーディングメカニズム３１５はデータトランザクションのためのデータを受信する。
次に、ステップＳ１３１０で、図８及び図１０のコーディングメカニズム３１５は、メモリートランザクションでデータのためのコードを受信する。
ステップＳ１３０５、ステップＳ１３１０は、ステップＳ１３０５、ステップＳ１３１０により提案されたような分離された動作ではなく、一つの動作として遂行することもできる。
次に、ステップＳ１３１５で、図８及び図１０のコーディングメカニズム３１５は、エラー検出及び訂正で使用可能な図５の（ａ）〜図６の（ｂ）の基本ビット数５０５及び図５の（ｂ）及び図６の（ｂ）の補助ビット数５１０を判別する。
次に、ステップＳ１３２０で、図８及び図１０の第１デコーダ８０５は、図５の（ａ）〜図６の（ｂ）の基本ビット数５０５を用いて第１デコーディングを遂行する。
【００７８】
次に、図１３ｂを参照すると、ステップＳ１３２５で、図８及び図１０のコーディングメカニズム３１５は、デコーディングされ得る任意の補助のビットが存在するかを（又は、全ての残りのビットがメタデータのため使用されるかを）判別する。
デコーディングされ得る補助ビットがない場合、ステップＳ１３３０でメモリートランザクションは（図３のメモリーモジュール１１５又は図４のメモリーコントローラー１２５の中のいずれかの一つにより）図８及び図１０のデータ及び第１結果８１０を用いて遂行される。
デコーディングされ得る補助ビットがある場合、ステップＳ１３３５で補助ビット数を使用するのに二次的なデコーダ（第２デコーダ）が選択される。
ステップ１３３５は、点線１３４０で示すように選択的である。
【００７９】
例えば、図８及び図１０のコーディングメカニズム３１５が、図８及び図１０のコーディングメカニズム３１５の任意の一つの“レベル”で選択可能な１個だけのデコーダを示し、他の具現として図８及び図１０のコーディングメカニズム３１５の任意のレベルで複数のデコーダを提供できる。
よって、デコーダは選択される必要がある。
任意の基準によりデコーダが選択され得る。
例えば、デコーディングのため使用可能なビットを最大限使用するデコーダ、又は特定のタイプのデコーディングを提供するデコーダなどを選択することができる。
【００８０】
デコーダが選択されれば、ステップＳ１３４５で、二次的なデコーディングは選択されたデコーダを利用して遂行する。
次に、ステップＳ１３５０で、図８及び図１０のコーディングメカニズム３１５は、デコーディングされ得る任意の残りの補助ビットがあるかどうかを判別する。
デコーディングされ得る任意の残りの補助ビットがある場合、ステップＳ１３５５で（ステップＳ１３３５、Ｓ１３４５を必須的に反復して）追加デコーディングを遂行する。
デコーディングされ得る任意の残りの補助ビットがない場合、ステップＳ１３３０に進み、メモリートランザクションのデータ及び結果が使用される。
【００８１】
図１４は、本発明の実施形態によるエラー検出及び訂正を支援するためコードを利用する例示的な手順を説明するためのフローチャートである。
図１４を参照すると、ステップＳ１４０５で、図７、図９、及び図１１の第１コード７２５はエラー検出を遂行するのに使用される。
次に、ステップＳ１４１０で、図７、図９、及び図１１のコード（７２５、７３０、９１５）はエラー検出及び訂正の全てを遂行するのに使用される。
あるいは、ステップＳ１４１５で、図７、図９、及び図１１の第１コード７２５は弱いコーディング（エラー検出又はエラー訂正の中で一つ）を遂行するのに使用される。
そして、ステップＳ１４２０で、図７、図９、及び図１１のコード（７２５、７３０、９１５）は強いコーディング（反復して、エラー検出及びエラー訂正の中の一つ）を遂行するのに使用される。
【００８２】
図１２の（ａ）〜図１４で、本発明のいくつかの実施形態を示した。
しかし、当業者はステップの順序を変更することで、ステップを省略することで、又は図に示さないリンク（ｌｉｎｋ）を含むことで、本発明の他の実施形態も可能であることを認識するはずである。
フローチャートのこういう変形の全ては、明示的に記載されているか否かにかかわらず、発明概念の実施形態とみなされる。
【００８３】
以下の説明は、本発明の一部の側面が具現され得る適切な１つまたは複数のマシンの簡単で一般的な説明を提供することを意図する。
１つのマシン又は複数のマシンは、少なくとも一部は他のマシンから受信される指示、仮想現実（ＶＲ）環境との相互作用、生体フィードバック、又は他の入力信号だけではなくキーボード、マウスなどのような従来の入力装置からの入力により制御することができる。
本明細書で使用するように、“マシン”の用語は単一マシン、仮想マシン、又は複数のマシン、複数の仮想マシン、又はいっしょに動作する装置と通信するように連結されたシステムを広く含むことで意図する。
例示的なマシンは、例えば、自動車、電車、タクシーなどのような個人用又は公共輸送のような輸送装置だけではなくＰＣ（Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ）、ワークステーション、サーバ、ポータブルコンピュータ（ｐｏｒｔａｂｌｅ  ｃｏｍｐｕｔｅｒ）、ハンドヘルド（ｈａｎｄｈｅｌｄ）装置、電話、タブレット（ｔａｂｌｅｔ）などのようなコンピューティング装置を包含する。
【００８４】
１つのマシン又は複数のマシンは、プログラム可能な又はプログラム不可能な論理装置又はアレイ、ＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｆｉｃ  Ｉｎｔｅｒｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）、エンベデッド（ｅｍｂｅｄｄｅｄ）コンピュータ、スマートカードなどのようなエンベデッドコントローラーを含むことができる。
１つのマシン又は複数のマシンは、ネットワークインターフェース、モデム、又は他の通信接続を介して一つ又は一つ以上の遠隔マシンに対する一つ以上の接続を使用できる。
マシンは、イントラネット（ｉｎｔｒａｎｅｔ）、インターネット、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）  ＷＡＮ（Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）などのような物理的及び／又は論理的ネットワークの手段で繋がり合うことができる。
当業者は、ネットワーク通信が多様な有線及び／又は無線の近距離又は遠距離キャリア（ｃａｒｒｉｅｒ）及び無線周波数（ＲＦ）、衛星、マイクロ波、ＩＥＥＥ８０２．１１、ブルートゥース（登録商標）、光学、赤外線、ケーブル、レーザーなどを含むプロトコルの利用を理解するであろう。
【００８５】
本発明の実施形態は、マシンによりアクセスされる際にマシンが作業を遂行するか、又は抽象的な類型のデータ又は下位レベルのハードウェアコンテキスト（ｃｏｎｔｅｘｔ）の定義を惹起する関数、手順、データ構造、アプリケーションプログラムなどを含む関連されたデータを参照して、又は協力して説明され得る。
関連するデータは、例えば、ＲＡＭ、ＲＯＭなどのような揮発性及び／又は不揮発性メモリー、又は他のストレージ装置、そしてハードドライブ、フロッピー（登録商標）ディスク、光学保存、テープ、フラッシュメモリー、メモリースティック（登録商標）、デジタルビデオディスク、生体保存などを含む関連する保存媒体に保存することができる。
関連するデータは、物理的及び／又は論理的ネットワークを含む伝送環境を経てパケット、直列データ、並列データ、電波信号などの形態に伝達され、圧縮された又は暗号化されたフォーマットを使用することができる。
関連するデータは、分散環境において使用することができ、マシンアクセスのため地域的に及び／又は遠隔で保存され得る。
【００８６】
本発明の実施形態は、一つ又はそれ以上のプロセッサにより実行可能な命令を含む非一時的なマシン読み出しの可能な媒体を含むことができ、命令は本明細書で説明したように本発明の要素を遂行する命令を含む。
【００８７】
本発明の実施形態は、制限なし次のステータスに拡張することができる。
ステータス１．本発明の実施形態は、ハードウェアで具現されたコーディングメカニズムを含み、コーディングメカニズムは、データに対する基本ビット数を含む第１コードを生成する第１エンコーダと、データに対する補助ビット数を含む第２コードを生成する第２エンコーダと、モードレジスタに対するストレージと、第２エンコーダが使用されるかの可否を制御するようにモードレジスタに応答するスイッチと、を有し、第１エンコーダは第１コードを生成するのに常に使用され、そして第２エンコーダを生成するのに選択的に使用され、第２コードは第１コードと共に第１コード単独よりさらに強いエンコーディングを提供する。
【００８８】
ステータス２．本発明の実施形態は、ステータス１に従うコーディングメカニズムを含むが、コーディングメカニズムはメモリーモジュール内で具現される。
ステータス３．本発明の実施形態は、ステータス２に従うコーディングメカニズムを含むが、メモリーモジュールはＮＶＤＩＭＭ（Ｎｏｎ−Ｖｏｌａｔｉｌｅ  Ｄｕａｌ  Ｉｎ−Ｌｉｎｅ  Ｍｅｍｏｒｙ  Ｍｏｄｕｌｅ）を含む。
ステータス４．本発明の実施形態は、ステータス３に従うコーディングメカニズムを含むが、コーディングメカニズムはＮＶＤＩＭＭ−Ｐプロトコルを用いて通信する。
ステータス５．本発明の実施形態は、ステータス１に従うコーディングメカニズムを含むが、コーディングメカニズムはメモリーコントローラー内で具現される。
【００８９】
ステータス６．本発明の実施形態は、ステータス１に従うコーディングメカニズムを含むが、コーディングメカニズムは補助ビット数を利用してデータに対する第３コードを生成する第３エンコーダをさらに含み、スイッチは、モードレジスタに応答して第２エンコーダを使用するか、第３エンコーダを使用するか、又は第２エンコーダと第３エンコーダを全部使用しないものから選択するように作動する。
ステータス７．本発明の実施形態は、ステータス１に従うコーディングメカニズムを含むが、コーディングメカニズムは第２補助ビット数を利用してデータに対する第３コードを生成する第３エンコーダをさらに含み、スイッチは、モードレジスタに応答して第２エンコーダを使用するか、第２エンコーダ及び第３エンコーダの全てを使用するか、又は第２エンコーダと第３エンコーダを全部使用しないものから選択するように作動する。
ステータス８．本発明の実施形態は、ステータス１に従うコーディングメカニズムを含むが、モードレジスタは、スイッチが第２エンコーダを使用するか否かを表わす値を保存するように作動する。
ステータス９．本発明の実施形態は、ステータス８に従うコーディングメカニズムを含むが、モードレジスタは、スイッチが補助ビット数が「０」より大きいか否かに応答する第２エンコーダを使用するか否かを表わす値を保存するように作動する。
ステータス１０．本発明の実施形態は、ステータス１に従うコーディングメカニズムを含むが、第１エンコーダ及び第２エンコーダは部分的なハードウェア具現を共有する。
【００９０】
ステータス１１．本発明の実施形態は、ハードウェアで具現されたコーディングメカニズムを含み、コーディングメカニズムは、データ及び基本ビット数を含む第１コードに対する第１結果を生成する第１デコーダと、データ及び補助ビット数を含む第２コードに対する第２結果を生成する第２デコーダと、モードレジスタに対するストレージと、第２デコーダが使用されるか否かを制御するようにモードレジスタに応答するスイッチを含むが、第１デコーダは第１結果を生成するのに常に使用され、第２デコーダは第２結果を生成するのに選択的に使用され、第２結果は、第１結果と共に第１結果の単独よりさらに強いデコーディングを提供する。
【００９１】
ステータス１２．本発明の実施形態は、ステータス１１に従うコーディングメカニズムを含むが、第２デコーダはデータ、第１コード、及び第２コードに対応する第２結果を生成するように作動する。
ステータス１３．本発明の実施形態は、ステータス１１に従うコーディングメカニズムを含むが、コーディングメカニズムはメモリーモジュール内で具現される。
ステータス１４．本発明の実施形態は、ステータス１３に従うコーディングメカニズムを含むが、メモリーモジュールはＮＶＤＩＭＭ（Ｎｏｎ−Ｖｏｌａｔｉｌｅ  Ｄｕａｌ  Ｉｎ−Ｌｉｎｅ  Ｍｅｍｏｒｙ  Ｍｏｄｕｌｅ）を含む。
ステータス１５．本発明の実施形態は、ステータス１４に従うコーディングメカニズムを含むが、コディングメカニズムはＮＶＤＩＭＭ−Ｐプロトコルを用いて通信する。
ステータス１６．本発明の実施形態は、ステータス１１に従うコーディングメカニズムを含むが、コーディングメカニズムはメモリーコントローラー内で具現される。
【００９２】
ステータス１７．本発明の実施形態は、ステータス１１に従うコーディングメカニズムを含むが、コーディングメカニズムは補助ビット数を用いてデータ及び少なくても第３コードに対する第３結果を生成する第３デコーダをさらに含み、スイッチは、モードレジスタに応答して第２デコーダを使用するか、第３デコーダを使用するか、又は第２デコーダと第３デコーダを全部使用しないものから選択するように作動する。
ステータス１８．本発明の実施形態は、ステータス１１に従うコーディングメカニズムを含むが、コーディングメカニズムは第２補助ビット数を用いてデータ及び少なくても第３コードに対する第３結果を生成する第３デコーダをさらに含み、スイッチは、モードレジスタに応答して第２デコーダを使用するか、第２デコーダ及び第３デコーダを全部使用するか、又は第２デコーダと第３デコーダを全部使用しないものから選択するように作動する。
ステータス１９．本発明の実施形態は、ステータス１１に従うコーディングメカニズムを含むが、モードレジスタはスイッチが第２デコーダを使用するか否かを表わす値を保存するように作動する。
ステータス２０．本発明の実施形態は、ステータス１１に従うコーディングメカニズムを含むが、モードレジスタはスイッチが補助ビット数が「０」より大きいか否かに応答する第２デコーダを使用するか否かを表わす値を保存するように作動する。
ステータス２１．本発明の実施形態は、ステータス１１に従うコーディングメカニズムを含むが、第１デコーダ及び第２デコーダは部分的なハードウェア具現を共有する。
【００９３】
ステータス２２．本発明の実施形態はコーディングメカニズム方法を含み、メモリートランザクションに対するデータを受信するステップと、メモリートランザクションの間、基本ビット数及び補助ビット数を含むエラー管理が可能なビットの個数を判別するステップと、基本ビット数に基づいてデータに対する第１エラー管理コーディングを遂行するステップと、補助ビット数に基づいてデータに対する第２エラー管理コーディングを遂行するステップを有する。
【００９４】
ステータス２３．本発明の実施形態は、ステータス２２に従うコーディングメカニズム方法を含み、基本ビット数に基づいてデータに対する第１エラー管理コーディングを遂行するステップは、基本ビット数に基づいてデータに対する第１エンコーディングを遂行するステップを含み、補助ビット数に基づいてデータに対する第２エラー管理コーディングを遂行するステップは、補助ビット数に基づいてデータに対する第２エンコーディングを遂行するステップを含む。
ステータス２４．本発明の実施形態は、ステータス２３に従うコーディングメカニズム方法を含み、基本ビット数に基づいてデータに対する第１エンコーディングを遂行するステップは、第１コードを生成するステップを含み、補助ビット数に基づいてデータに対する第２エンコーディングを遂行するステップは、第２コードを生成するステップを含む。
ステータス２５．本発明の実施形態は、ステータス２４に従うコーディングメカニズム方法を含み、第２コードは第１コードと共に第１コードの単独よりさらに強いエラー管理コーディングを提供する。
【００９５】
ステータス２６．本発明の実施形態は、ステータス２２に従うコーディングメカニズム方法を含み、基本ビット数に基づいてデータに対する第１エラー管理コーディングを遂行するステップは、基本ビット数に基づいてデータに対する第１デコーディングを遂行するステップを含み、補助ビット数に基づいてデータに対する第２エラー管理コーディングを遂行するステップは、補助ビット数に基づいてデータに対する第２デコーディングを遂行するステップを含む。
ステータス２７．本発明の実施形態は、ステータス２６に従うコーディングメカニズム方法を含み、基本ビット数に基づいてデータに対する第１デコーディングを遂行するステップは、第１結果を生成するステップを含み、補助ビット数に基づいてデータに対する第２デコーディングを遂行するステップは、第２結果を生成するステップを含む。
ステータス２８．本発明の実施形態は、ステータス２６に従うコーディングメカニズム方法を含み、基本ビット数に基づいてデータに対する第１デコーディングを遂行するステップは、基本ビット数に基づいてデータ及び第１コードに対応する第１デコーディングを遂行するステップを含み、補助ビット数に基づいてデータに対する第２デコーディングを遂行するステップは、データ及び少なくても第２コードに対応する第２デコーディングを遂行するステップを含む。
ステータス２９．本発明の実施形態は、ステータス２８に従うコーディングメカニズム方法を含み、データ及び少なくても第２コードに対応する第２デコーディングを遂行するステップは、データ、第１コード、及び第２コードに対応して第２デコーディングを遂行するステップを含む。
ステータス３０．本発明の実施形態は、ステータス２８に従うコーディングメカニズム方法を含み、メモリートランザクションに対するデータを受信するステップは、第１コード及び少なくとも第２コードを受信するステップを含む。
【００９６】
ステータス３１．本発明の実施形態は、ステータス２２に従うコーディングメカニズム方法を含み、コーディングメカニズム方法はＤＩＭＭ（Ｄｕａｌ  Ｉｎ−Ｌｉｎｅ  Ｍｅｍｏｒｙ  Ｍｏｄｕｌｅ）及びメモリーコントローラの中の一つにより遂行される。
ステータス３２．本発明の実施形態は、ステータス３１に従うコーディングメカニズム方法を含み、ＤＩＭＭはＮＶＤＩＭＭ（Ｎｏｎ−Ｖｏｌａｔｉｌｅ  Ｄｕａｌ  Ｉｎ−Ｌｉｎｅ  Ｍｅｍｏｒｙ  Ｍｏｄｕｌｅ）を含む。
ステータス３３．本発明の実施形態は、ステータス２２に従うコーディングメカニズム方法を含み、補助ビット数に基づいてデータに対する第２エラー管理コーディングを遂行するステップは、補助ビット数が「０」より大きいと補助ビット数に基づいてデータに対する第２エラー管理コーディングを遂行するステップを含む。
【００９７】
ステータス３４．本発明の実施形態は、ステータス２２に従うコーディングメカニズム方法を含み、基本ビット数に基づいてデータに対する第１エラー管理コーディングを遂行するステップは、データ内のエラー検出を支援するステップを含み、補助ビット数に基づいてデータに対する第２エラー管理コーディングを遂行するステップは、データ内のエラー訂正を支援するステップを含む。
ステータス３５．本発明の実施形態は、ステータス２２に従うコーディングメカニズム方法を含み、基本ビット数に基づいてデータに対する第１エラー管理コーディングを遂行するステップは、データ内の弱いエラー検出を支援するステップを含み、補助ビット数に基づいてデータに対する第２エラー管理コーディングを遂行するステップは、データ内の強いエラー検出を支援するステップを含む。
ステータス３６．本発明の実施形態は、ステータス２２に従うコーディングメカニズム方法を含み、基本ビット数に基づいてデータに対する第１エラー管理コーディングを遂行するステップは、データ内の弱いエラー訂正を支援するステップを含み、補助ビット数に基づいてデータに対する第２エラー管理コーディングを遂行するステップは、データ内の強いエラー訂正を支援するステップを含む。
【００９８】
ステータス３７．本発明の実施形態は、ステータス２２に従うコーディングメカニズム方法を含み、補助ビット数に基づいてデータに対する第２エラー管理コーディングを遂行するステップは、少なくても第２エラー管理コーディング及び第３エラー管理コーディングから補助ビット数に基づいてデータに対する第２エラー管理コーディングを遂行するステップを含む。
ステータス３８．本発明の実施形態は、ステータス３７に従うコーディングメカニズム方法を含み、少なくとも、第２エラー管理コーディング及び第３エラー管理コーディングから補助ビット数に基づいてデータに対する第２エラー管理コーディングを遂行するステップは、第２補助ビット数に基づいてデータに対する第３エラー管理コーディングを遂行するステップを含む。
ステータス３９．本発明の実施形態は、ステータス３８に従うコーディングメカニズム方法を含み、第２補助ビット数に基づいてデータに対する第３エラー管理コーディングを遂行するステップは、補助ビット数に基づいてデータに対する第３エラー管理コーディングを遂行するステップを含む。
【００９９】
ステータス４０．本発明の実施形態は、マシンにより遂行される保存された命令語を含む非一時的ストレージ媒体を含む物品（ａｒｔｉｃｌｅ、或いは装置）を有し、命令語がマシンによって遂行されると、メモリートランザクションに対するデータを受信するステップと、メモリートランザクションの間、基本ビット数及び補助ビット数を含むエラー管理が可能なビットの個数を判別するステップと、基本ビット数に基づいてデータに対する第１エラー管理コーディングを遂行するステップと、補助ビット数に基づいてデータに対する第２エラー管理コーディングを遂行するステップを行う。
【０１００】
ステータス４１．本発明の実施形態は、ステータス２２に従うコーディングメカニズム方法を含み、基本ビット数に基づいてデータに対する第１エラー管理コーディングを遂行するステップは、基本ビット数に基づいてデータに対する第１エンコーディングを遂行するステップを含み、補助ビット数に基づいてデータに対する第２エラー管理コーディングを遂行するステップは、補助ビット数に基づいてデータに対する第２エンコーディングを遂行するステップを含む。
ステータス４２．本発明の実施形態は、ステータス４１に従う物品を含み、基本ビット数に基づいてデータに対する第１エンコーディングを遂行するステップは、第１コードを生成するステップを含み、補助ビット数に基づいてデータに対する第２エンコーディングを遂行するステップは、第２コードを生成するステップを含む。
ステータス４３．本発明の実施形態は、ステータス４２に従う物品を含み、第２コードは第１コードと共に第１コードの単独よりさらに強いエラー管理コーディングを提供する。
【０１０１】
ステータス４４．本発明の実施形態は、ステータス４０に従う物品を含み、基本ビット数に基づいてデータに対する第１エラー管理コーディングを遂行するステップは、基本ビット数に基づいてデータに対する第１デコーディングを遂行するステップを含み、補助ビット数に基づいてデータに対する第２エラー管理コーディングを遂行するステップは、補助ビット数に基づいてデータに対する第２デコーディングを遂行するステップを含む。
ステータス４５．本発明の実施形態は、ステータス４４に従う物品を含み、基本ビット数に基づいてデータに対する第１デコーディングを遂行するステップは、第１結果を生成するステップを含み、補助ビット数に基づいてデータに対する第２デコーディングを遂行するステップは、第２結果を生成するステップを包含する。
ステータス４６．本発明の実施形態は、ステータス４４に従う物品を含み、基本ビット数に基づいてデータに対する第１デコーディングを遂行するステップは、基本ビット数に基づいてデータ及び第１コードに対応する第１デコーディングを遂行するステップを含み、補助ビット数に基づいてデータに対する第２デコーディングを遂行するステップは、データ及び少なくても第２コードに対応する第２デコーディングを遂行するステップを含む。
ステータス４７．本発明の実施形態は、ステータス４６に従う物品を含み、データ及び少なくとも第２コードに対応する第２デコーディングを遂行するステップは、データ、第１コード、及び第２コードに対応して第２デコーディングを遂行するステップを含む。
ステータス４８．本発明の実施形態は、ステータス４６に従う物品を含み、メモリートランザクションに対するデータを受信するステップは、第１コード及び少なくとも第２コードを受信するステップを含む。
【０１０２】
ステータス４９．本発明の実施形態は、ステータス４０に従う物品を含み、コーディングメカニズム方法は、ＤＩＭＭ（Ｄｕａｌ  Ｉｎ−Ｌｉｎｅ  Ｍｅｍｏｒｙ  Ｍｏｄｕｌｅ）及びメモリーコントローラの中の一つにより遂行される。
ステータス５０．本発明の実施形態は、ステータス４９に含む物品を含み、ＤＩＭＭは、ＮＶＤＩＭＭ（Ｎｏｎ−Ｖｏｌａｔｉｌｅ  Ｄｕａｌ  Ｉｎ−Ｌｉｎｅ  Ｍｅｍｏｒｙ  Ｍｏｄｕｌｅ）を含む。
【０１０３】
ステータス５１．本発明の実施形態は、ステータス４０に従う物品を含み、補助ビット数に基づいてデータに対する第２エラー管理コーディングを遂行するステップは、補助ビット数が「０」より大きいと補助ビット数に基づいてデータに対する第２エラー管理コーディングを遂行するステップを含む。
ステータス５２．本発明の実施形態は、ステータス４０に従う物品を含み、基本ビット数に基づいてデータに対する第１エラー管理コーディングを遂行するステップは、データ内のエラー検出を支援するステップを含み、補助ビット数に基づいてデータに対する第２エラー管理コーディングを遂行するステップは、データ内のエラー訂正を支援するステップを含む。
ステータス５３．本発明の実施形態は、ステータス４０に従う物品を含み、基本ビット数に基づいてデータに対する第１エラー管理コーディングを遂行するステップは、データ内の弱いエラー検出を支援するステップを含み、補助ビット数に基づいてデータに対する第２エラー管理コーディングを遂行するステップは、データ内の強いエラー検出を支援するステップを含む。
【０１０４】
ステータス５４．本発明の実施形態は、ステータス４０に従う物品を含み、基本ビット数に基づいてデータに対する第１エラー管理コーディングを遂行するステップは、データ内の弱いエラー訂正を支援するステップを含み、補助ビット数に基づいてデータに対する第２エラー管理コーディングを遂行するステップは、データ内の強いエラー訂正を支援するステップを含む。
ステータス５５．本発明の実施形態は、ステータス４０に従う物品を含み、補助ビット数に基づいてデータに対する第２エラー管理コーディングを遂行するステップは、少なくても第２エラー管理コーディング及び第３エラー管理コーディングから補助ビット数に基づいてデータに対する第２エラー管理コーディングを遂行するステップを含む。
ステータス５６．本発明の実施形態は、ステータス５５に従う物品を含み、少なくとも第２エラー管理コーディング及び第３エラー管理コーディングから補助ビット数に基づいてデータに対する第２エラー管理コーディングを遂行するステップは、第２補助ビット数に基づいてデータに対する第３エラー管理コーディングを遂行するステップを含む。
ステータス５７．本発明の実施形態は、ステータス５６に従う物品を含み、第２補助ビット数に基づいてデータに対する第３エラー管理コーディングを遂行するステップは、補助ビット数に基づいてデータに対する第３エラー管理コーディングを遂行するステップを含む。
【０１０５】
尚、本発明は、上述の実施形態に限られるものではない。本発明の技術的範囲から逸脱しない範囲内で多様に変更実施することが可能である。
【産業上の利用可能性】
【０１０６】
本発明に係るコーディングメカニズム及びその方法は、ＤＤＲチャンネルを介してＤＩＭＭでのモーフィングＥＣＣエンコーダ及びデコーダを包含するコーディングメカニズムを有するすべての電子装置に好適に使用される。
【符号の説明】
【０１０７】
１０５    マシン
１１０    プロセッサ
１１５    メモリーモジュール
１２０    ストレージ装置
１２５    メモリーコントローラー
１３０    装置ドライバー
２０５    クロック
２１０    ネットワークコネクター
２１５    バス
２２０    ユーザーインターフェース
２２５    入出力エンジン
３０５−１〜３０５−６    チップ
３１０    ＤＩＭＭコントローラー
３１５    コーディングメカニズム
４０５    受信機／送信機
４１０    メモリーモジュール選択機
７０５    第１エンコーダ
７１０    第２エンコーダ
７１５、８２５、９１０、１０１５    スイッチ
７２０    ストレージ
７２５    第１コード
７３０    第２コード
７３５    モードレジスタ
８０５    第１デコーダ
８１０    第１結果
８１５    第２デコーダ
８２０    第２結果
９０５    第３エンコーダ
９１５    第３コード
１００５    第３デコーダ
１０１０    第３結果
【図１】
2018190416.tif 000003
【図２】
2018190416.tif 000004
【図３】
2018190416.tif 000005
【図４】
2018190416.tif 000006
【図５】
2018190416.tif 000007
【図６】
2018190416.tif 000008
【図７】
2018190416.tif 000009
【図８】
2018190416.tif 000010
【図９】
2018190416.tif 000011
【図１０】
2018190416.tif 000012
【図１１】
2018190416.tif 000013
【図１２ａ】
2018190416.tif 000014
【図１２ｂ】
2018190416.tif 000015
【図１３ａ】
2018190416.tif 000016
【図１３ｂ】
2018190416.tif 000017
【図１４】
2018190416.tif 000018