(57)【要約】【課題】ＤＤＲバスを通じてＤＲＡＭ内のＥＣＣ情報を伝達する方法並びにこれを用いたデータチップ及びメモリコントローラを提供する。【解決手段】本発明のメモリモジュール内のデータチップは、データアレイと、データアレイから未加工データを読み出す読出し回路と、読出し回路によってデータアレイからの未加工データを格納するバッファと、汚染パターンを格納するマスクレジスターと、マスクレジスターに格納された汚染パターンを利用してバッファに格納された未加工データを修正して汚染されたデータを生成するデータ汚染エンジンと、バッファから汚染されたデータを伝送する伝送回路と、を備える。【選択図】図１
2018077833.tif 000002
【特許請求の範囲】
【請求項１】
メモリモジュール内のデータチップであって、
データアレイと、
前記データアレイから未加工データを読み出す読出し回路と、
前記読出し回路によって前記データアレイからの前記未加工データを格納するバッファと、
汚染パターンを格納するマスクレジスターと、
前記マスクレジスターに格納された前記汚染パターンを利用して前記バッファに格納された前記未加工データを修正して汚染されたデータを生成するデータ汚染エンジンと、
前記バッファから前記汚染されたデータを伝送する伝送回路と、を備えることを特徴とするデータチップ。
【請求項２】
前記データチップは、ＤＲＡＭモジュール（ｄｙｎａｍｉｃ  ｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙ  ｍｏｄｕｌｅ）に含まれることを特徴とする請求項１に記載のデータチップ。
【請求項３】
前記バッファに格納された前記未加工データに対してエラー訂正を遂行するＥＣＣ回路を更に含み、
前記データ汚染エンジンは、前記ＥＣＣ回路が前記バッファに格納された前記未加工データ内のエラーを検出するが訂正できない場合、前記マスクレジスターに格納された前記汚染パターンを利用して前記バッファに格納された前記未加工データを修正することを特徴とする請求項１に記載のデータチップ。
【請求項４】
前記データ汚染エンジンは、前記データ汚染エンジンがメモリコントローラからメモリコントローラ非活性化信号を受信しない限り、前記マスクレジスターに格納された前記汚染パターンを利用して前記バッファに格納された前記未加工データを修正することを特徴とする請求項１に記載のデータチップ。
【請求項５】
前記汚染パターンは、ブーティングの時に、メモリコントローラによって前記マスクレジスター内にプログラムされることを特徴とする請求項１に記載のデータチップ。
【請求項６】
複数のデータチップに格納されたアドレスでの値を要請する読出し回路と、
前記複数のデータチップから受信された未加工データからパリティーを演算するパリティー回路と、
前記パリティーと前記複数のデータチップ内にプログラムされた複数の汚染パターンとを比較してエラーを有するデータチップを識別する汚染パターン分析回路と、
前記識別されたエラーを有するデータチップから受信された未加工データ内のエラーを訂正するエラー訂正回路と、を備えることを特徴とするメモリコントローラ。
【請求項７】
前記汚染パターン分析回路及び前記エラー訂正回路は、前記パリティー回路が前記複数のデータチップから受信された未加工データにエラーがあることを示す場合にのみ使用されることを特徴とする請求項６に記載のメモリコントローラ。
【請求項８】
前記汚染パターン分析回路は、前記複数のデータチップ内にプログラムされた複数の汚染パターンの中から前記パリティーに最も近い汚染パターンを識別することを特徴とする請求項６に記載のメモリコントローラ。
【請求項９】
前記汚染パターン分析回路は、前記複数のデータチップ内にプログラムされた複数の汚染パターンの中の前記識別された汚染パターンが前記パリティーの臨界値以内であるか否かを判定することを特徴とする請求項８に記載のメモリコントローラ。
【請求項１０】
前記汚染パターン分析回路は、前記複数のデータチップ内にプログラムされた複数の汚染パターンの中から前記パリティー汚染パターン内のビットに一致するビットを最も多く有する汚染パターンを識別することを特徴とする請求項８に記載のメモリコントローラ。
【請求項１１】
前記エラー訂正回路は、前記複数のデータチップの中の他のデータチップからの未加工データを利用して前記識別されたエラーを有するデータチップからデータを再作成することを特徴とする請求項６に記載のメモリコントローラ。
【請求項１２】
前記パリティー回路は、前記複数のデータチップの中の他のデータチップからの未加工データに対するパリティーを演算することによって前記識別されたエラーを有するデータチップからデータを再作成することを特徴とする請求項１１に記載のメモリコントローラ。
【請求項１３】
ブーティングの間に前記複数のデータチップに対する複数の汚染パターンを選択する汚染パターンプログラミング回路を更に含むことを特徴とする請求項６に記載のメモリコントローラ。
【請求項１４】
前記複数の汚染パターンは、全て固有であることを特徴とする請求項１３に記載のメモリコントローラ。
【請求項１５】
データチップ内のエラー情報伝達方法であって、
アドレスでの値に対する要請をデータチップで受信する段階と、
前記アドレスでの値を含む未加工データを前記データチップのバッファに格納する段階と、
前記バッファ内の前記未加工データがエラーを有するか否かを判定する段階と、を有し、
前記バッファ内の前記未加工データがエラーを有する場合、
汚染されたデータを生成するために汚染パターンを利用して前記バッファ内の前記未加工データを汚染させる段階と、
前記バッファ内の前記汚染されたデータをメモリコントローラに伝送する段階と、を有することを特徴とする方法。
【請求項１６】
前記汚染パターンを利用して前記バッファ内の前記未加工データを汚染させる段階は、前記汚染パターンを利用して前記バッファ内の前記未加工データをＸＯＲ演算する段階を含むことを特徴とする請求項１５に記載の方法。
【請求項１７】
前記バッファ内の前記未加工データがエラーを有する場合、
前記バッファ内の前記未加工データ内のエラーが訂正されるか否かを判定する段階を更に含み、
前記バッファ内の前記未加工データ内のエラーが訂正されない場合、
前記汚染パターンを利用して前記バッファ内の前記未加工データを汚染させる段階と、
前記バッファ内の前記汚染されたデータを前記メモリコントローラに伝送する段階と、を更に含むことを特徴とする請求項１５に記載の方法。
【請求項１８】
前記汚染パターンを利用して前記バッファ内の前記未加工データを汚染させる段階は、前記データチップ内のマスクレジスターからの前記汚染パターンにアクセスする段階を含むことを特徴とする請求項１５に記載の方法。
【請求項１９】
前記メモリコントローラから前記汚染パターンを受信する段階と、
前記マスクレジスターに前記受信された汚染パターンを格納する段階と、を更に含むことを特徴とする請求項１８に記載の方法。
【請求項２０】
前記メモリコントローラから汚染パターン識別子を受信する段階を更に含み、
前記データチップ内のマスクレジスターからの前記汚染パターンにアクセスする段階は、前記汚染パターン識別子に応答して前記データチップ内の前記マスクレジスターからの前記汚染パターンにアクセスする段階を含むことを特徴とする請求項１８に記載の方法。
【請求項２１】
前記データチップでメモリコントローラ非活性化信号を受信する段階と、
前記バッファ内の前記未加工データを前記メモリコントローラに伝送する段階と、を更に含むことを特徴とする請求項１５に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリモジュールに関し、より詳細には、メモリモジュール内のデータチップの数の増加無しにエラー訂正能力を提供する方法並びにこれを用いたデータチップ及びメモリコントローラに関する。
【背景技術】
【０００２】
将来的に、メモリモジュール（ｍｅｍｏｒｙ  ｍｏｄｕｌｅ）はＤＲＡＭ内（ｉｎ−ｄｙｎａｍｉｃ  ｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙ）のエラー訂正（ｅｒｒｏｒ  ｃｏｒｒｅｃｔｉｏｎ）を要求する。狭いチャンネルの使用と共に、エラー訂正のために要求されるオーバーヘッド（ｏｖｅｒｈｅａｄ）が増加する。例えば、広帯域チャンネル（ｗｉｄｅ  ｃｈａｎｎｅｌ）から狭帯域チャンネル（ｎａｒｒｏｗ  ｃｈａｎｎｅｌ）に転換することはエラー訂正オーバーヘッドを２倍にする。メモリモジュールに対する信頼性、効用性、及び耐久性（ｒｅｌｉａｂｉｌｉｔｙ、ａｖａｉｌａｂｉｌｉｔｙ、ｓｅｒｖｉｃｅａｂｉｌｉｔｙ：ＲＡＳ）の要求を充足させることはコストが高くなる。しかし、エラー訂正能力（ｅｒｒｏｒ  ｃｏｒｒｅｃｔｉｏｎ  ｃａｐａｂｉｌｉｔｙ）を完全に破棄することはメモリモジュールの有用性（ｕｓａｂｉｌｉｔｙ）を減少させる。
【０００３】
エラー訂正のためのオーバーヘッド要求の増加無しにメモリモジュール内のエラー訂正能力を提供するための方案に対する必要性が残っている。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本発明は上記従来の問題点に鑑みてなされたものであって、本発明の目的は、ＤＤＲバスを通じてＤＲＡＭ内のＥＣＣ情報を伝達する方法並びにこれを用いたデータチップ及びメモリコントローラを提供することにある。
【課題を解決するための手段】
【０００５】
上記目的を達成するためになされた本発明の一態様によるメモリモジュール内のデータチップは、データアレイ（ｄａｔａ  ａｒｒａｙ）と、前記データアレイから未加工データ（ｒａｗ  ｄａｔａ）を読み出す読出し回路と、前記読出し回路によって前記データアレイからの前記未加工データを格納するバッファ（ｂｕｆｆｅｒ）と、汚染パターンを格納するマスクレジスター（ｍａｓｋ  ｒｅｇｉｓｔｅｒ）と、前記マスクレジスターに格納された前記汚染パターンを利用して前記バッファに格納された前記未加工データを修正して汚染されたデータを生成するデータ汚染エンジン（ｄａｔａ  ｐｏｌｌｕｔｉｏｎ  ｅｎｇｉｎｅ）と、前記バッファから前記汚染されたデータを伝送する伝送回路と、を備える。
【０００６】
上記目的を達成するためになされた本発明の一態様によるメモリコントローラは、複数のデータチップに格納されたアドレスでの値を要請する読出し回路と、前記複数のデータチップから受信された未加工データからパリティーを演算するパリティー回路と、前記パリティーと前記複数のデータチップ内にプログラムされた複数の汚染パターンとを比較してエラーを有するデータチップを識別する汚染パターン分析回路と、前記識別されたエラーを有するデータチップから受信された未加工データの内のエラーを訂正するエラー訂正回路と、を備える。
【０００７】
上記目的を達成するためになされた本発明の一態様によるデータチップ内のエラー情報伝達方法は、アドレスでの値に対する要請をデータチップで受信する段階と、前記アドレスでの値を含む未加工データを前記データチップのバッファに格納（ｂｕｆｆｅｒ）する段階と、前記バッファ内の前記未加工データがエラーを有するか否かを判定する段階と、を有し、前記バッファ内の前記未加工データがエラーを有する場合、汚染されたデータを生成するために汚染パターンを利用して前記バッファ内の前記未加工データを汚染させる段階と、前記バッファ内の前記汚染されたデータをメモリコントローラに伝送する段階と、を有する。
【発明の効果】
【０００８】
本発明によれば、基本的な信頼性、効用性、及び耐久性保護を提供するために、ＤＲＡＭ内のＥＣＣに加えて、１つのＥＣＣチップのみを使用することができる。
【図面の簡単な説明】
【０００９】
【図１】本発明の一実施形態によるメモリモジュール及びメモリコントローラを有するマシンを示す図である。
【図２】図１のマシンの細部構成を示す図である。
【図３】図１のメモリモジュール内のメモリチップの細部構成を示す図である。
【図４】図３のＸＯＲ回路の例示的な具現を示す図である。
【図５】図３のデータチップのデータがどのようにして汚染されるかを示す図である。
【図６】汚染パターンを格納する図３のデータチップ内のマスクレジスターを示す図である。
【図７】図１のメモリコントローラの細部構成を示す図である。
【図８】図１のメモリモジュール内の図３のデータチップからのデータに対するパリティー演算を遂行する図３のメモリコントローラの動作を示す図である。
【図９】図７の汚染パターン分析回路の動作を示す図である。
【図１０】データチップから受信されたパリティーから汚染パターンを除去する図１のメモリコントローラの動作を示す図である。
【図１１】データが汚染パターンを有するデータチップに対するデータを演算する図７のパリティー回路の動作を示す図である。
【図１２Ａ】本発明の一実施形態によるデータを汚染させるため図１のメモリモジュール内の図３のデータチップに対する例示的な方法を示すフローチャートである。
【図１２Ｂ】本発明の一実施形態によるデータを汚染させるため図１のメモリモジュール内の図３のデータチップに対する例示的な方法を示すフローチャートである。
【図１３】本発明の一実施形態による汚染パターンを利用してプログラムされる図１のメモリモジュール内の図３のデータチップに対する例示的な方法を示すフローチャートである。
【図１４】本発明の一実施形態による図１のメモリコントローラに未加工データを伝送するための図１のメモリモジュール内の図３のデータチップに対する例示的な方法を示すフローチャートである。
【図１５Ａ】本発明の一実施形態による図１のメモリモジュール内のデータチップが汚染パターンを利用してデータを汚染させる場合にエラー訂正を遂行する図１のメモリコントローラに対する例示的な方法を示すフローチャートである。
【図１５Ｂ】本発明の一実施形態による図１のメモリモジュール内のデータチップが汚染パターンを利用してデータを汚染させる場合にエラー訂正を遂行する図１のメモリコントローラに対する例示的な方法を示すフローチャートである。
【図１６】本発明の一実施形態によるデータを汚染させるために使用された汚染パターンを識別するための図７の汚染パターン分析回路に対する例示的な方法を示すフローチャートである。
【図１７】本発明の一実施形態による図１のメモリモジュール内の図３のデータチップ内のエラーを訂正するための図７のエラー訂正回路に対する例示的な方法を示すフローチャートである。
【図１８】本発明の一実施形態による図１のメモリモジュール内の図３のデータチップから未加工データを要請するための図１のメモリコントローラの例示的な方法を示すフローチャートである。
【発明を実施するための形態】
【００１０】
以下、本発明を実施するための形態の具体例を、図面を参照しながら詳細に説明する。後述する詳細な説明で、多様な特定の詳細な説明を本発明の技術的思想の充分な理解を助けるために提供する。しかし、この分野で通常的な技術を有する者はこのような特定の詳細な説明無しでも本発明の技術的思想を具現することができる。他の例として、広く公知された方法、手続、構成要素、回路、及びネットワークは実施形態の側面を不必要に曖昧にしないために詳細に説明しない。
【００１１】
ここで、第１、第２等のような用語を多様な要素を説明するために使用するが、このような要素はこのような用語によって限定されない。このような用語を１つの要素を他の１つの要素と区別するためのみに使用する。例えば、本発明の技術的思想の範囲から逸脱しない範囲で、第１モジュールを第２モジュールと称する。同様に、第２モジュールを第１モジュールとも称する。
【００１２】
本発明の技術的思想の説明で使用する用語は、特定の実施形態を説明するための目的のみに使用し、本発明の技術的思想を限定しない。本発明の技術的思想の説明及び請求項で使用するように、脈絡上明確に明示しない限り、単数表現は複数表現もまた含む。“及び／又は”の用語は１つ又はそれより多くの関連する項目の任意且つ可能な全ての組合せを含むものとして参照される。“含む”及び／又は“含んでいる”の用語は、詳細な説明で使用する際に言及する特性、整数、段階、動作、元素、及び／又は構成要素の存在を明示し、１つ又はそれより多くの他の特性、整数、段階、動作、元素、構成要素、及び／又はそれらのグループの存在又は追加を排除しない。図面の構成要素及び特性は実際の比率に必須的に比例しない。
【００１３】
本発明の実施形態は、ＤＲＡＭモジュール（ｄｙｎａｍｉｃ  ｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙ  ｍｏｄｕｌｅ）のエラー訂正コード（ｅｒｒｏｒ  ｃｏｒｒｅｃｔｉｏｎ  ｃｏｄｅ：ＥＣＣ）のオーバーヘッド（ｏｖｅｒｈｅａｄ）を減少させる。本発明の実施形態は、現在のＤＤＲ（ｄｕａｌ  ｄａｔｅ  ｒａｔｅ）−４６４ビット（ｂｉｔ）チャンネル及び次世代の狭帯域ＤＤＲチャンネル（３２ビット）に使用される。本発明の実施形態は、ｘ４（４ビットデータ幅ＤＲＡＭ）、ｘ８、ｘ１６、又は任意の他のバーストサイズ（ｂｕｒｓｔｓｉｚｅ）を含む任意のＤＲＡＭ類型を支援する。また、本発明の実施形態は、メモリ処理（ｔｒａｎｓａｃｔｉｏｎ）の間に、８バースト（メモリ処理毎にデータチップ当たり８個のバースト）、１６バースト、又はメモリ処理毎にバーストの任意の他の数を含むバーストの任意の数を支援するメモリモジュールを支援する。
【００１４】
次世代ＤＲＡＭ装置は、増加する処理量を維持するために狭帯域チャンネル（６４ビットではない、３２ビット）を使用する。内部プリフェッチ（ｉｎｔｅｒｎａｌ  ｐｒｅｆｅｔｃｈ、１６ｎ  ｖｓ．８ｎ）及び外部バーストレングス（ｅｘｔｅｒｎａｌ  ｂｕｒｓｔ  ｌｅｎｇｔｈ、１６ｎ  ｖｓ．８ｎ）も同様に増加する。
【００１５】
しかし、このような変更は、現在のＤＲＡＭ  ＤＩＭＭ（ｄｕａｌ  ｉｎ  ｌｉｎｅ  ｍｏｄｕｌｅ）装置と同様のオーバーヘッドによって、現在の信頼性、効用性、及び耐久性（ｒｅｌｉａｂｉｌｉｔｙ、ａｖａｉｌａｂｉｌｉｔｙ、ｓｅｒｖｉｃｅａｂｉｌｉｔｙ：ＲＡＳ）特性を維持することを困難にする。例えば、現在のＤＤＲ−４  ＥＣＣ（ｅｒｒｏｒ  ｃｏｒｒｅｃｔｉｎｇ  ｃｏｄｅ）  ＤＲＡＭ  ＤＩＭＭは各チャンネルに対して１６個のデータチップ及び２つのＥＣＣチップを使用する。同一のＥＣＣ範囲（ｃｏｖｅｒａｇｅ）を維持するために、次世代狭帯域ＤＲＡＭチャンネルは８個のデータチップのみを保護するために２つのＥＣＣチップを要求し、１６個のデータチップを保護するために２つのＥＣＣチップのみを続いて使用することはダウングレードされた（ｄｏｗｎｇｒａｄｅｄ）ＥＣＣ範囲を惹起する。
【００１６】
更に、次世代ＤＲＡＭ装置は、ＤＲＡＭ装置に対するＢＥＲ（ｂｉｔ  ｅｒｒｏｒ  ｒａｔｅ）を低くするためにＤＲＡＭ内のＥＣＣ（ｉｎ−ＤＲＡＭ  ＥＣＣ）を使用する。ＤＲＡＭ装置からメモリコントローラ（ｍｅｍｏｒｙ  ｃｏｎｔｒｏｌｌｅｒ）にＤＲＡＭ内のＥＣＣ情報を伝達するために、専用の（ｄｅｄｉｃａｔｅｄ）又は共有された（ｓｈａｒｅｄ）ピンが要求される。代わりに、ＤＲＡＭ内のＥＣＣ情報を伝達するための方法及びメカニズム（ｍｅｃｈａｎｉｓｍ）は、ＤＲＡＭ装置でエラーが検出された場合、追加エラーを注入（ｉｎｊｅｃｔ）することによって具現される。即ち、メモリコントローラは、ブーティング（ｂｏｏｔ−ｕｐ）の間に同一チャンネル内のＤＲＡＭチップを異なる汚染パターン（ｐｏｌｌｕｔｉｏｎ  ｐａｔｔｅｒｎ）を利用してプログラム（ｐｒｏｇｒａｍ）する。同一チャンネル内の異なるＤＲＡＭチップは異なる汚染パターンを有しなければならない。汚染パターン選択は異なるチップセット（ｓｅｔ）供給者によって異なる。汚染パターン選択は異なるエラー範囲を惹起する。
【００１７】
本発明の実施形態は、基本的な信頼性、効用性、及び耐久性（ＲＡＳ）保護を提供するために、ＤＲＡＭ内のＥＣＣに加えて、１つのＥＣＣチップのみを使用する。例えば、
【００１８】
・ｘ４チップを使用するＤＤＲ−４  ６４ビットチャンネルで、メモリモジュールは１６個のｘ４データチップに加えて１つのＥＣＣチップを含む。このような本発明の実施形態は、現在のエラー訂正（１６個のデータチップと２つのＥＣＣチップとを使用）のオーバーヘッドの１／２でエラー訂正を提供する。
【００１９】
・ｘ８チップを使用するＤＤＲ−４  ６４ビットチャンネルで、メモリモジュールは８個のｘ８データチップと１つのＥＣＣチップとを含む。このような本発明の実施形態は、現在のＤＤＲ−４  ｘ８を支援しない基本チップキル（ｃｈｉｐ  ｋｉｌｌ、１つのデータチップ故障）を提供する。
【００２０】
・ｘ１６チップを使用するＤＤＲ−４  ６４ビットチャンネルで、メモリモジュールは４個のｘ１６データチップと１つのＥＣＣチップとを含む。このような本発明の実施形態は、現在のＤＤＲ−４  ｘ１６を支援しない基本チップキル（１つのデータチップ故障）を提供する。
【００２１】
・ｘ４メモリモジュールの次世代３２ビットチャンネルに対して、メモリモジュールは８個のｘ４データチップと１つのＥＣＣチップとを含む。このような本発明の実施形態は、現在のエラー訂正のオーバーヘッドの１／２でエラー訂正を提供する。
【００２２】
・一般的に、チャンネル当たりＮビットの次世代メモリモジュール及びｘ（４Ｍ）のデータチップに対して、メモリモジュールはＮ／（４Ｍ）個のｘ（４Ｍ）データチップと１つのｘ（Ｍ）ＥＣＣチップを含む（ここで、Ｍ及びＮは各々正の整数である）。
【００２３】
ＤＲＡＭ内のＥＣＣメカニズム（ｍｅｃｈａｎｉｓｍ）が内部的に訂正できないエラー（ｕｎｃｏｒｒｅｃｔａｂｌｅ  ｅｒｒｏｒ）を検出した場合、ＤＲＡＭはこれらの格納されたパターンを利用してデータを汚染させる。データ汚染は内部的に訂正できないエラーが発生した場合、汚染パターンを利用してチップのデータをＸＯＲ（排他的論理和、ｅｘｃｌｕｓｉｖｅ  ｏｒ）演算して達成される。
【００２４】
汚染パターンは大きい単位細分性（ｃｏａｒｓｅ  ｇｒａｎｕｌａｒｉｔｙ）又は小さい単位細分性（ｆｉｎｅ  ｇｒａｎｕｌａｒｉｔｙ）の中のいずれか１つを利用する。小さい単位細分性を利用して、各パターンはビット対ビットマッピング（ｂｉｔ−ｔｏ−ｂｉｔ  ｍａｐｐｉｎｇ）において６４ビットを有する。これはより柔軟な情報伝達を可能にするが、マスクレジスター（ｍａｓｋ  ｒｅｇｉｓｔｅｒ）内により多くのビット（ストレージ（ｓｔｏｒａｇｅ）オーバーヘッド）を要求し、信頼性を低下させる。大きい単位細分性で、各チップには繰り返し予め定義されたパターンが与えられる。これは汚染パターンが固定され、柔軟でないことを意味するが、マスクレジスター内により少ないビット（ストレージオーバーヘッド）を要求し、より安定的である。
【００２５】
汚染パターンは任意の所望のサイズである。（メモリコントローラがどのデータチップが汚染パターンを適用したかを決定する限り、任意の汚染パターンサイズを使用することができるが）推奨される最小汚染パターンサイズは１つのバーストのサイズである。従って、本発明の実施形態は、ｘ４データチップと共に４ビット汚染パターン、ｘ８データチップと共に８ビット汚染パターン、ｘ１６データチップと共に１６ビット汚染パターン等を使用する。汚染パターンは、例えば３２ビット（ｘ４データチップの８個のバースト）から２５６ビット（ｘ１６データチップの１６個のバースト）まで、或いは十分に大きく変わるメモリ処理（ｍｅｍｏｒｙ  ｔｒａｎｓａｃｔｉｏｎ）程度（１つのバースト内のビット数にメモリ処理内のバーストの数を掛けた値）大きい。
【００２６】
更に、汚染パターンは１つのメモリ処理よりも大きい。しかし、汚染パターンが１つのメモリ処理よりも大きい場合、汚染パターンを検出することは連続的に発生する２つ以上のメモリ処理を要求し、これは性能面で非効率的である。
【００２７】
メモリコントローラがエラーを検出すると仮定した場合、メモリコントローラは汚染パターンを利用してエラー位置（エラーを有するチップ）を識別する。次にメモリコントローラはエラーを訂正するためにチップに亘るパリティー（ｐａｒｉｔｙ）を使用する。
【００２８】
図１は、本発明の一実施形態によるメモリモジュール及びメモリコントローラを有するマシンを示す図である。図１には、マシン１０５（ｍａｃｈｉｎｅ）を図示する。マシン１０５は、制限無しにデスクトップコンピュータ（ｄｅｓｋｔｏｐ）又はノート型コンピュータ（ｌａｐｔｏｐ  ｃｏｍｐｕｔｅｒ）、サーバー（ｓｅｒｖｅｒ）（スタンドアロンサーバー（ｓｔａｎｄａｌｏｎｅ  ｓｅｒｖｅｒ）又はラックサーバー（ｒａｃｋ  ｓｅｒｖｅｒ））の中のいずれか１つ、或いは本発明の実施形態から恩恵を受ける任意の他の装置を含む任意の所望の装置である。また、マシン１０５は、特定の携帯用コンピューティング（ｃｏｍｐｕｔｉｎｇ）装置、タブレットコンピュータ（ｔａｂｌｅｔ  ｃｏｍｐｕｔｅｒ）、及びスマートフォン（ｓｍａｒｔｐｈｏｎｅ）のような装置を含む。そして、本実施形態の説明はＤＲＡＭモジュールを示すが、本実施形態は内部的に多重チップ（チップの各々は潛在的に別個故障原因であり得る）に亘って情報を格納するメモリモジュールの任意の形態にも適用される。
【００２９】
マシンの特定形態に拘らず、マシン１０５は、プロセッサ（ｐｒｏｃｅｓｓｏｒ）１１０、メモリモジュール１１５、格納装置（ｓｔｏｒａｇｅ  ｄｅｖｉｃｅ）１２０、及びメモリコントローラ１２５を含む。プロセッサ１１０は、例えばインテル（ｉｎｔｅｌ）社製のジーオン（ｘｅｏｎ（登録商標））、セレロン（ｃｅｌｅｒｏｎ（登録商標））、イタニアム（ｉｔａｎｉｕｍ（登録商標））、又はアトム（ａｔｏｍ（登録商標））プロセッサ、ＡＭＤ社製のオプテロン（ｏｐｔｅｒｏｎ（登録商標））プロセッサ、アーム社製の（ａｒｍ（登録商標））プロセッサ等を含む任意の多様なプロセッサである。図１は１つのプロセッサを示すが、マシン１０５は任意の数のプロセッサを含む。メモリモジュール１１５内のメモリは、本実施形態に適用されるフラッシュ（ｆｌａｓｈ）メモリ、ＳＲＡＭ（ｓｔａｔｉｃ  ｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙ）、永久ＲＡＭ（ｐｅｒｓｉｓｔｅｎｔ  ｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙ）、ＦｅＲＡＭ（ｆｅｒｒｏｅｌｅｃｔｒｉｃ  ｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙ）、又はＭＲＡＭ（ｍａｇｎｅｔｏｒｅｓｉｓｔｉｖｅ  ｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙ）等の不揮発性ＲＡＭ（ｎｏｎ−ｖｏｌａｔｉｌｅ  ｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙ：ＮＶＲＡＭ）のような任意の多様なメモリであるが、一般的にＤＲＡＭである。メモリモジュール１１５内のメモリは異なるメモリ類型の任意の所望の組合せである。
【００３０】
格納装置１２０は任意の多様な格納装置である。このような装置の例はソリッドステートドライブ（ｓｏｌｉｄ  ｓｔａｔｅ  ｄｒｉｖｅ：ＳＳＤ）を含むが、ハードディスク（ｈａｒｄ  ｄｉｓｋ）ドライブ又は他の長期（ｌｏｎｇ−ｔｅｒｍ）格納装置のような他の格納装置形態も可能である。更に、メモリモジュール１１５及び格納装置１２０は組合される。即ち、本実施形態は、短期（ｓｈｏｒｔ−ｔｅｒｍ）及び長期格納装置の概念を区別せずに、１つの形態要素（ｆｏｒｍ  ｆａｃｔｏｒ）として両方を管理する。最後に、メモリコントローラ１２５は、適切にメモリモジュール１１５内の情報を要請して（そして格納して）、プロセッサ１１０とメモリモジュール１１５との間の通信を管理する。メモリコントローラ１２５はプロセッサ１１０と共に集積されるか又は分離されたチップに集積される。
【００３１】
図２は、図１のマシンの細部構成を示す図である。図２を参照すると、一般的に、マシン１０５は、マシン１０５の構成要素の動作を調整するために使用されるメモリコントローラ１２５及びクロック（ｃｌｏｃｋ）２０５を含む１つ以上のプロセッサ１１０を含む。また、プロセッサ１１０は、例えばＲＡＭ（ｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙ）、ＲＯＭ（ｒｅａｄ−ｏｎｌｙ  ｍｅｍｏｒｙ）、又は他の状態保持媒体を含むメモリモジュール１１５に連結される。また、プロセッサ１１０は、格納装置１２０、例えばイーサーネット（登録商標）コネクター（Ｅｔｈｅｒｎｅｔ（登録商標）  ｃｏｎｎｅｃｔｏｒ）又は無線コネクター（ｗｉｒｅｌｅｓｓ  ｃｏｎｎｅｃｔｏｒ）であるネットワークコネクター（ｎｅｔｗｏｒｋ  ｃｏｎｎｅｃｔｏｒ）２１０に連結される。また、プロセッサ１１０は、ユーザーインターフェイス（ｕｓｅｒ  ｉｎｔｅｒｆａｃｅ）２２０及び他の構成要素の中の入出力エンジン（ｉｎｐｕｔ／ｏｕｔｐｕｔ  ｅｎｇｉｎｅ）２２５を利用して管理される入出力インターフェイスポート（ｉｎｐｕｔ／ｏｕｔｐｕｔ  ｉｎｔｅｒｆａｃｅ  ｐｏｒｔ）が付着されたバス２１５に連結される。
【００３２】
図３は、図１のメモリモジュール１１５内のメモリチップの細部構成を示す図である。図３で、（メモリモジュール１１５内の複数のチップの中の１つである）データチップ３０５は、ＤＲＡＭアレイ（ａｒｒａｙ）３１０、読出し回路（ｒｅａｄ  ｃｉｒｃｕｉｔｒｙ）３１５、バッファ（ｂｕｆｆｅｒ）３２０、ＥＣＣエンジン（ｅｒｒｏｒ  ｃｏｒｒｅｃｔｉｎｇ  ｃｏｄｅ  ｅｎｇｉｎｅ）３２５、データ汚染エンジン（ｄａｔａ  ｐｏｌｌｕｔｉｏｎ  ｅｎｇｉｎｅ）３３０、マスクレジスター３３５、デマルチプレクサー（ｄｅｍｕｌｔｉｐｌｅｘｅｒ）３４０、及び伝送回路（ｔｒａｎｓｍｉｓｓｉｏｎ  ｃｉｒｃｕｉｔｒｙ）３４５（図３ではＤＱ  ＴＸ）を含む。ＤＲＡＭアレイ３１０はデータチップ３０５内にデータを格納する。読出し回路３１５はＤＲＡＭアレイ３１０からデータを読み出す。例えば、読出し回路３１５はＤＲＡＭアレイ３１０から値を読み出すセンスアンプ（ｓｅｎｓｅ  ａｍｐｌｉｆｉｅｒ）を含む。バッファ３２０は、データチップ３０５が処理の一部を遂行する間に、読出し回路３１５によってＤＲＡＭアレイ３１０から読み出されたデータを一時的に格納する。ＥＣＣエンジン３２５は、可能な場合にバッファ３２０内のデータに対するエラー訂正遂行を試図する。ＥＣＣエンジン３２５は、データ汚染エンジン３３０が動作する必要があるか否かを知るために、自身の動作結果をデータ汚染エンジン３３０に提供する。
【００３３】
データ汚染エンジン３３０は、必要に応じてバッファ３２０からのデータを汚染させる。図５を参照して後述するように、汚染（ｐｏｌｌｕｔｉｏｎ）は汚染パターン（ｐｏｌｌｕｔｉｏｎ  ｐａｔｔｅｒｎ）に基づいてバッファ３２０内のデータを修正することを含む。データ汚染は、バッファ３２０内のデータと汚染パターンとをＸＯＲ演算して遂行され、例えばＸＯＲ回路３５０を利用する。他の実施形態として、データ汚染は、エラーが実際に何であるかに拘らず、バッファ３２０内のデータを汚染パターンで単純に置き換えて遂行される。バッファ３２０内のデータが正確に汚染パターンに一致した場合、この事実はシステムが間違った故障エラーを“検出”することになるが、（うまくいけば）システムはこのような状況から回復する。汚染パターンはマスクレジスター３３５からアクセスされる。本明細書で説明する任意の他のエンジン又は回路と同様に、データ汚染エンジン３３０は任意の所望の方式で具現される。例えば、エンジン及び回路は所望の機能を具現するカスタム（ｃｕｓｔｏｍ）回路を利用して具現されるか、又はＦＰＧＡ（ｆｉｅｌｄ  ｐｒｏｇｒａｍｍａｂｌｅ  ｇａｔｅ  ａｒｒａｙ）のようなアレイ又はこれと同等の技術を利用して具現される。
【００３４】
メモリコントローラ１２５がバッファ３２０から未加工（ｒａｗ、汚染されない（ｕｎｐｏｌｌｕｔｅｄ））データを必要とする状況が存在する可能性があるため、メモリコントローラ１２５は、メモリコントローラ非活性化信号（ｍｅｍｏｒｙ  ｃｏｎｔｒｏｌｌｅｒ  ｄｉｓａｂｌｅ  ｓｉｇｎａｌ：ＭＣ  Ｄｉｓａｂｌｅ）３５５をデータ汚染エンジン３３０に送る。従って、データ汚染エンジン３３０は、メモリコントローラ１２５がメモリコントローラ非活性化信号３５５を送ってこない限り、ＥＣＣエンジン３２５が訂正できないエラーがあったことを示した場合、データを汚染させるように動作する。
【００３５】
次にデータ汚染エンジン３３０の出力は、メモリコントローラ１２５に出力するための適切なデータを選択するデマルチプレクサー３４０に送られる。次に伝送回路３４５は、選択されたデータをメモリコントローラ１２５に送るために使用される。
【００３６】
図４は、図３のＸＯＲ回路３５０の例示的な具現を示す図である。図４で、ＸＯＲ回路３５０は、（信号スプリッター（ｓｐｌｉｔｔｅｒ）、信号反転（ｎｅｇａｔｉｏｎ）、及びマルチプレクサー（ｍｕｌｔｉｐｌｅｘｅｒ）を利用して）ビットの元の入力値か又はその反転値が選択されたかを制御するロジック（４０５、４１０）を含む。ロジック（４０５、４１０）は選択する値を決定するために制御ロジックビット（ｃｏｎｔｒｏｌ  ｌｏｇｉｃ  ｂｉｔｓ）を使用する。
【００３７】
一般的に、制御ロジックは、図３のＥＣＣエンジン３２５がエラーを訂正できず、そして図１のメモリコントローラ１２５が図３のメモリコントローラ非活性化信号３５５を送ってこない限り、ビットに対する元の値を選択する。従って、論理方程式の観点で、制御ロジック（ＣＬ）は（図３のマスクレジスター３３５の汚染パターン（ＰＰ））ＡＮＤ（図３のメモリコントローラ非活性化信号３５５ではない（ｎｏｔ）（ＭＣ  Ｄ））ＡＮＤ（図３のＥＣＣエンジン３２５）の結果として考えられる。汚染パターン、図３のメモリコントローラ非活性化信号３５５、及び図３のＥＣＣエンジン３２５に対して異なる値が与えられる場合、表４１５は制御ロジックが取ることができる値を示す。しかし、表４１５は単なる例示であり、他の入力が与えられた場合、制御ロジックは異なる論理方程式を利用して特定される。
【００３８】
図５は、図３のデータチップ３０５内のデータがどのように汚染されるかを示す図である。図５で、図３のバッファ３２０に格納された値が３２ビットを含むものとして示す（図３のバッファ３２０の幅は任意の幅であるが、３２ビットは単なる例示である）。実際には図３のバッファ３２０は１次元であるが、表現の簡易化のために、図５は２次元に配列されたデータを示す。未加工データ５０５は汚染パターン５１０とＸＯＲ演算され、ＸＯＲ演算は汚染されたデータ５１５を生成する。汚染されたデータ５１５の各ビットは、未加工データ５０５と汚染パターン５１０との該当ビットのＸＯＲ演算であることに留意する。しかし、図５は汚染パターン５１０を利用して未加工データ５０５をＸＯＲ演算することを示すが、本実施形態は未加工データ５０５を汚染させるための任意の所望のアプローチを支援する。
【００３９】
図６は、汚染パターンを格納する図３のデータチップ３０５内のマスクレジスター３３５を示す図である。図６で、マスクレジスター３３５は汚染パターン５１０のような汚染パターンを含む。一実施形態において、図１のメモリコントローラ１２５は、ブーティングの時に、汚染パターン５１０をマスクレジスター３３５内にプログラムする。上述したように、（少なくとも同一のデータチャンネル内で）図３の各データチップ３０５を異なる汚染パターンでプログラムし、次に図１のメモリコントローラ１２５は、図３のどのデータチップ３０５がチップ内のＥＣＣを利用して訂正できないエラーを有するデータチップであるかを決定する試図を遂行する。
【００４０】
或いは、他の実施形態として、図３のデータチップ３０５は（例えば、製造者によって）多様な汚染パターンで予めプログラムされる。例えば、マスクレジスター３３５は、上述したパターンの中から、汚染パターン（６０５、６１０、６１５、６２０、６２５、６３０）に予めプログラムされる。図６は６個の予めプログラムされた汚染パターンを示すが、一般的に予めプログラムされた汚染パターンの数は最小限メモリモジュール内のデータチップの数位である（しかし、同一のデータチャンネル内の各データチップに固有の汚染パターンが割当られる場合、より少ない汚染パターンが予めプログラムされる）。次に図１のメモリコントローラ１２５は、予めプログラムされた汚染パターン（６０５、６１０、６１５、６２０、６２５、６３０）から、使用するデータチップに対する汚染パターンを選択する。
【００４１】
予めプログラムされた各汚染パターンは識別子（ｉｄｅｎｔｉｆｉｅｒ）が割当られる。例えば、予めプログラムされた汚染パターン６０５は識別子６３５が割当られ、予めプログラムされた汚染パターン６１０は識別子６４０が割当られ、そして識別子６４５、６５０、６５５、６６０も同様である。次に図１のメモリコントローラ１２５は、簡易に使用するために選択された予めプログラムされた汚染パターンの識別子を図３のデータチップ３０５に伝達して、予めプログラムされた汚染パターンを識別する。
【００４２】
図６で、汚染パターン５１０は３２ビットの長さであり、一方汚染パターン６０５〜６３０は４ビットの長さである。一実施形態において、図３のバッファ３２０と同一な幅を有する（汚染パターン５１０のような）汚染パターンが使用されるが、他の実施形態として、図３のバッファ３２０よりも少ない幅を有する（汚染パターン６０５のような）汚染パターンが、図３のバッファ３２０の全体をカバー（ｃｏｖｅｒ）する汚染パターンを設定するために必要な度毎に繰り返されるパターンに使用される。小さい単位細分性（全幅（ｆｕｌｌ−ｗｉｄｔｈ））の汚染パターンを使用する長所は汚染パターンの設定及び使用において増加した柔軟性を有することであり、小さい単位細分性の汚染パターンの短所は図３のマスクレジスター３３５が更に情報を格納する必要があること及び汚染パターンが潛在的に信頼性が低いことである。大きい単位細分性（狭い幅（ｎａｒｒｏｗ−ｗｉｄｔｈ））の汚染パターンの長所は、それが図３のバッファ３２０程広くないことであり、従って図３のマスクレジスター３３５内のより少ないビットを要求することであり、大きい単位細分性の汚染パターンはより安定的である。大きい単位細分性の汚染パターンの短所は、汚染パターンが柔軟でなく、可能な汚染パターンの数が制限されることである。
【００４３】
参考として、理想的に、メモリモジュールで使用される汚染パターンの任意の対の共通ビットの数は汚染パターン内のビット数の１／２以下でなければならない。例えば、２つの汚染パターンが１つのビット値を除いて同一である場合、そのビットに影響を及ぼすエラーは、図１のメモリコントローラ１２５がどのデータチップがエラーを有するかを決定できなくする。汚染パターン間の異なるビット数の増加は、図１のメモリコントローラ１２５がどのデータチップがエラーを有するかを識別する可能性を増加させる。従って、汚染パターン（６０５、６１０、６１５、６２０、６２５、６３０）の中の任意の対に対する４ビットの中の２ビットのみが同一であり、汚染パターンを可能な限り離して維持する。
【００４４】
図７は、図１のメモリコントローラ１２５の細部構成を示す図である。図７で、メモリコントローラ１２５は、汚染パターンプログラミング回路（ｐｏｌｌｕｔｉｏｎ  ｐａｔｔｅｒｎ  ｐｒｏｇｒａｍｍｉｎｇ  ｃｉｒｃｕｉｔｒｙ）７０５、読出し回路７１０、パリティー回路（ｐａｒｉｔｙ  ｃｉｒｃｕｉｔｒｙ）７１５、汚染パターン分析回路（ｐｏｌｌｕｔｉｏｎ  ｐａｔｔｅｒｎ  ａｎａｌｙｓｉｓ  ｃｉｒｃｕｉｔｒｙ）７２５、エラー訂正回路（ｅｒｒｏｒ  ｃｏｒｒｅｃｔｉｏｎ  ｌｏｇｉｃ）７３０、及びログ（ｌｏｇ）７３５を含む。汚染パターンプログラミング回路７０５は、汚染パターンを利用して、図１のメモリモジュール１１５の図３のデータチップ３０５のようなデータチップをプログラムする。図６を参照して上述したように、汚染パターンプログラミング回路７０５は、（小さい単位細分性又は大きい単位細分性の中のいずれか１つの）特定の汚染パターンを図３のデータチップ３０５内にプログラムするか、或いは汚染パターンプログラミング回路７０５は、使用する図３のデータチップ３０５に対する（再び、小さい単位細分性又は大きい単位細分性の中のいずれか１つの）予めプログラムされた汚染パターンを識別する。汚染パターンプログラミング回路７０５は、マシンが再びブーティングされるまで図３のデータチップ３０５内に変わらずに残っているプログラムされた汚染パターンで、マシンのブーティング時に一般的に使用されるが、本実施形態はいつでもプログラムされた汚染パターンを変更することを支援する。
【００４５】
他の実施形態において、図３のデータチップ３０５は、汚染パターンで図１のメモリモジュール１１５の製造者によってプログラムされる。このような実施形態において、特定チャンネル内の各データチップは固有の汚染パターンを有すると仮定する（異なるチャンネル内のデータチップはそれらのチャンネルによって区別されるため、異なるチャンネルでのデータチップは同一の汚染パターンを有する）。このような状態で、汚染されたデータが検出された時、エラーを有する特定チップは（うまくいけば）識別される。
【００４６】
一般動作の間に、読出し回路７１０は、図１のメモリモジュール１１５からデータを読出すための要請を送り、次にデータはメモリコントローラ１２５によって受信される。次にパリティー回路７１５は、データチップから受信されたデータに対してパリティー演算（ｐａｒｉｔｙ  ｃａｌｃｕｌａｔｉｏｎ）を遂行する。データチップからデータを読み出す間にエラーが無い場合（又は任意のエラーが内部的にデータチップで成功的に訂正された場合）、次にパリティー回路７１５の結果は受信されたデータ内にパリティーエラーが無いことを示し、メモリコントローラ１２５はホスト又はデータを要請した他のエンティティー（ｅｎｔｉｔｙ）にデータを送る。
【００４７】
しかし、パリティー回路７１５の結果がパリティーエラーがあることを示した場合、次にメモリコントローラ１２５はエラーを訂正するための試図を遂行する。汚染パターン分析回路７２５は、一致（又は殆ど一致）が発見されたか否かを確認するためにパリティー回路７１５の結果と図３のデータチップ３０５内にプログラムされた汚染パターンとを比較する。一致（又は殆ど一致）が発見された場合、次にエラー訂正回路７３０は、図１のメモリモジュール１１５内の図３の全てのデータチップ３０５に亘る情報を利用してエラーを訂正する試図を遂行する。任意の理由でエラーを訂正することができない場合、ログ７３５はエラーに対する情報を格納する。
【００４８】
図８は、図１のメモリモジュール１１５内の図３のデータチップ３０５からのデータに対するパリティー演算を遂行する図３のメモリコントローラ１２５の動作を示す図である。図８で、未加工データ８０５、８１０、８１５から未加工データ８２０までは、図１のメモリモジュール１１５内の多様なデータチップからのデータを示す。図８で、総９個のデータチップのデータを示すが、本実施形態は任意の数のデータチップからのデータを支援する。図３の１つ以上のデータチップ３０５はチップ内部のＥＣＣの結果であることに留意しなければならないが、未加工データ（８０５、８１０、８１５、８２０）は実際のデータを格納するチップから厳格に要求される必要はない。
【００４９】
パリティー８２５は未加工データ（８０５、８１０、８１５、８２０）のパリティー演算の結果である。パリティー８２５は任意の所望の方式で演算され、図８でパリティー８２５は未加工データ（８０５、８１０、８１５、８２０）のＸＯＲとして演算される。パリティー８２５が全て０である場合、次に図１のメモリコントローラ１２５は図３のデータチップ３０５の何処にもエラーが無いと結論付ける。しかし、パリティー８２５が（パリティーエラーを示す）１を有する場合、次にその結果はエラーを有する少なくとも１つの図３のデータチップが存在することを示す。データチップの１つ又はデータチップの１つ以上が訂正できないエラーを有することもあるため、そのチップのデータはデータチップに関連する汚染パターンによって汚染される。
【００５０】
上述した説明は、エラーがない時に、パリティー８２５が全て０を含むと仮定する。他の原理に従ってパリティー８２５が演算された場合（例えば、全ての１はエラーがないことを示す）、次の説明はパリティー８２５を演算する方法に適合するように適切に調整する。
【００５１】
パリティー８２５が図３の１つのデータチップ３０５がエラーを有することを示すと仮定した場合、図１のメモリコントローラ１２５はどのデータチップがエラーを有するかを決定する必要がある。図７の汚染パターン分析回路７２５はこの分析を遂行する。汚染パターン分析回路７２５の動作を図９に示す。
【００５２】
図９は、図７の汚染パターン分析回路７２５の動作を示す図である。図９に示すように、汚染パターン分析回路７２５は、汚染パターン（６０５、６１０、６１５、６２０、６２５、６３０）と共に、パリティー８２５を受信する。図９は６個の汚染パターンを示すが、本実施形態は任意の数の汚染パターンを支援する。汚染パターン分析回路７２５は、パリティー８２５と汚染パターン（６０５、６１０、６１５、６２０、６２５、６３０）の各々とを比較し、パリティー８２５に最も近い汚染パターンを決定する試図を遂行する。この比較結果は結果９０５である。
【００５３】
汚染パターン分析回路７２５は、パリティー８２５に“最も近い”汚染パターンを決定する試図として説明することに留意する。この説明に対しては２つの理由がある。第１に、エラーを有するデータチップは、パリティー８２５がプログラムされた汚染パターンの中のいずれかと正確に一致することを妨げる１つ以上のエラーを含む。例えば、エラーは特定ビットが強制的に不正確な値になり得る。このような場合、その不正確なビットはビットが汚染パターンの一部分ではないにも拘らずデータ汚染のように見えるか、又は不正確なビットはビットが汚染されたことにも拘らず汚染パターンの一部分ではないビットのように見える。第２に、データエラーのために、パリティー８２５は、汚染パターン分析回路７２５がどの汚染パターンが使用されたか（従って、どのデータチップがエラーを有するか）を明確に決定できない任意のプログラムされた汚染パターンから十分に離れている可能性がある。
【００５４】
このような問題に対する解決策は２つがある。第１に、汚染パターン分析回路７２５は、パリティー８２５に最も近い（即ち、ビットマッチング（ｍａｔｃｈｉｎｇ）が最も高い）プログラムされた汚染パターンを選択する。（このような比較は０及び１の全てに対して全てのビットをマッチングするか（全ての０又は全ての１）、又は汚染パターン内の単なる１であるビットのみがマッチングするかによって遂行される）。例えば、パリティー８２５は、プログラムされた汚染パターン（６０５、６１０、６２０）の中の２つのビット、及びプログラムされた汚染パターン（６１５、６２５、６３０）の中の１つのビットと一致する。これが決定的ではないことに見えるが、図３の各データチップ３０５は４ビット以上のデータを提供することを想起する。従って、汚染パターン（６０５、６１０、６１５、６２０、６２５、６３０）はデータチップからのデータ全体をカバーするために繰り返されるが、それ自体のエラー数は汚染パターンと同一な頻度で繰り返されない。例えば、エラーを有するデータチップが未加工データ８０５を提供したデータチップであると仮定する。この場合、パリティー８２５の第１、第２のビットは汚染パターンによって寄与されるが、パリティー８２５の第３のビットはデータエラーによるものである。第３のビットがデータエラーを有する唯一のビットである場合、パリティー８２５は第１データチップに関連する汚染パターン内の全てのビットに実際に一致する。
【００５５】
第２に、汚染パターン分析回路７２５は臨界値（ｔｈｒｅｓｈｏｌｄ）９１０を含む。臨界値９１０はパリティー８２５とプログラムされた汚染パターン（６０５、６１０、６１５、６２０、６２５、６３０）との間の最大距離（即ち、異なるビット数）を明示する。パリティー８２５がプログラムされた汚染パターン（６０５、６１０、６１５、６２０、６２５、６３０）の中の少なくとも１つの臨界値９１０以内である場合、パリティー８２５に最も近いプログラムされた汚染パターンが選択される。そして、パリティー８２５の臨界値９１０以内に汚染パターンが無い場合、図１のメモリコントローラ１２５はエラーが訂正されないと結論付ける。臨界値９１０は、任意の所望の距離に設定され、例えば図３のバッファ３２０のサイズの１／２（勿論、これは図３のデータチップ３０５から図１のメモリコントローラ１２５によって受信されたデータのサイズ及びパリティー８２５のサイズと同一）又は汚染パターンのサイズの１／２（汚染パターンが図３のバッファ３２０よりも少ないビットを有する場合）に設定される。しかし、本実施形態は異なる臨界値も支援する。臨界値９１０を決定するために使用される他の基準は、（図３のバッファ３２０を完璧に汚染させるために必要に応じて繰り返されるプログラムされた汚染パターンを考慮して）任意の２つのプログラムされた汚染パターン間の差異の最小ビット数である。
【００５６】
図８及び図９は汚染パターンを識別するために使用されるデータのソース（ｓｏｕｒｃｅ）としてパリティー８２５を使用することを説明したが、本実施形態は汚染パターンを識別するための他のメカニズム（ｍｅｃｈａｎｉｓｍ）を支援する。例えば、パリティー８２５を使用する代わりに、図７のメモリコントローラ１２５は汚染パターン決定回路を含む。汚染パターン決定回路は、決定された汚染パターンを演算するために、図８の未加工データ（８０５、８１０、８１５、８２０）の中の任意の又は全てのデータに対して任意の所望の演算を遂行し、次に決定された汚染パターンは汚染パターン分析回路７２５によってプログラムされた汚染パターンと比較される。このような実施形態で、パリティー８２５はエラーがあるか否かを判定するために単独に使用されるが、汚染パターン決定回路はエラーを有するデータチップによって使用される汚染パターンであることが期待されることを決定するために使用される。
【００５７】
図１０は、データチップから受信された図８のパリティー８２５から汚染パターンを除去する図１のメモリコントローラ１２５の動作を示す図である。図１０で、図７の汚染パターン分析回路７２５が、使用された汚染パターンが図６の汚染パターン６０５であることを決定した後、図３のメモリコントローラ１２５はパリティー８２５から汚染パターン６０５を除去する。未加工データに汚染パターン６０５を利用してＸＯＲ演算することによって汚染パターン６０５が未加工データに追加された場合、次に汚染パターン６０５はパリティー８２５を利用して汚染パターン６０５をＸＯＲ演算することによってパリティー８２５から除去される。他の技術がデータチップによって未加工データを汚染させるために使用された場合、次に当該技術はパリティー８２５から汚染パターンを除去するために使用される。使用された技術に拘らず、結果は、エラー１００５であり、実際にエラーを有するビットの集合である。一旦エラー１００５でこのようなビットが識別されると、このようなビットは訂正される。
【００５８】
ビットを訂正する一方法は、データチップからエラーがある元のビットを再構成するために、（パリティーデータを含む）他のデータチップの全てからの未加工データを利用することである。この訂正は、任意の所望の方法を利用してビットレベル（ｂｉｔ  ｌｅｖｅｌ）で取り扱われ、例えばパリティー情報及び他のデータチップからの該当ビットを利用して、エラーがある元のビットが再構成される。しかし、エラーを有するデータチップからのデータを単に無視し、代わりにエラーを有するデータチップからのデータの全てを再構成することがより簡単な場合がある。図１１はこのような方法を示す。
【００５９】
図１１は、データが汚染パターンを有するデータチップに対するデータを演算する図７のパリティー回路７１５の動作を示す図である。図１１で、エラーを有するデータチップに対するデータ（例えば、図８の未加工データ８０５）は無視される。エラーを有するデータチップの全てのデータは未加工データ８１０、８１５から未加工データ８２０まで再構成される。未加工データ（８１０、８１５、及び８２０）はパリティーチップからの情報を含むため、未加工データ８１０、８１５から未加工データ８２０まではエラーを有するデータチップに対する訂正情報を再構成するための充分な情報を含む。即ち、未加工データ８１０、８１５から未加工データ８２０までＸＯＲ演算することによって、結果１１０５はエラーを有するデータチップの未加工データを復元することができる。
【００６０】
図１１はパリティーチップからのデータが含まれたエラーを有するデータチップの未加工データをどのようにして復元するかについて示した。所定の他の技術がエラー訂正を提供するために使用される場合、図１１で示した技術は適切に修正される。
【００６１】
図１２Ａ及び図１２Ｂは、本発明の一実施形態によるデータを汚染させるための図１のメモリモジュール１１５内の図３のデータチップ３０５に対する例示的な方法を示すフローチャートである。図１２Ａにおいて、段階１２０５で、図３のデータチップ３０５は図１のメモリコントローラ１２５によって指示されたように汚染パターンを格納する。段階１２０５は、メモリアクセスが遂行される時毎ではなく、システムの初期ブーティングの時のみに遂行される。後述する図１３は図３のデータチップ３０５がどのようにして汚染パターンを格納するのかに対する更に多くの細部事項を提供する。段階１２１０で、図３のデータチップ３０５は図１のメモリコントローラ１２５からメモリアドレスでの値に対する要請を受信する。この要請は、１つのデータチップ内に単独に位置するデータに対する要請又はその特定ビットでのデータに対する要請ではなく、図１のメモリモジュール１１５内の全てのデータチップに亘って格納された値に対するより広範囲な要請の一部である。段階１２１５で、図３のバッファ３２０は図３のＤＲＡＭアレイ３１０から回収されたデータを格納（ｂｕｆｆｅｒ）する。段階１２２０で、図３のデータチップ３０５は図３のバッファ３２０内のデータがエラーを含むか否かを判定する。例えば、図３のデータチップ３０５がエラーがあるか否かを判定するために図３のバッファ３２０内のビットに対するパリティー演算を遂行するか、或いは図３のＥＣＣエンジン３２５がエラーが存在することを示す。図３のデータチップ３０５がエラーが無いと判定した場合、次に段階１２２５で図３の伝送回路３４５は図１のメモリコントローラ１２５に未加工データを伝送する。
【００６２】
しかし、段階１２２０で図３のデータチップ３０５がエラーがあると判定した場合、次に段階１２３０（図１２Ｂ）で図３のデータチップ３０５は図３のＥＣＣエンジン３２５を利用してエラーが訂正可能か否かを判定する。エラーが訂正可能である場合、次に段階１２３５で図３のＥＣＣエンジン３２５はエラーを訂正し、その後の段階１２４０で、訂正されたデータが図３の伝送回路３４５を通じて図１のメモリコントローラ１２５に送られる。エラーが訂正可能でない場合、段階１２４５で、図３のデータチップ３０５は図３のマスクレジスター３３５からの汚染パターンにアクセスする。段階１２５０で、図３のデータ汚染エンジン３３０はアクセスされた汚染パターンを利用して図３のバッファ３２０内のデータを汚染させる。図３を参照して上述したように、データを汚染させることは図３のバッファ３２０内のデータを汚染パターンにＸＯＲ演算することによって達成される。最後に、段階１２５５で、図３の伝送回路３４５は図１のメモリコントローラ１２５に汚染されたデータを伝送する。
【００６３】
図１３は、本発明の一実施形態による汚染パターンを利用してプログラムされる図１のメモリモジュール１１５内の図３のデータチップ３０５に対する例示的な方法を示すフローチャートである。図１３において、段階１３０５で、図３のデータチップ３０５は図１のメモリコントローラ１２５から汚染パターンを受信し、段階１３１０で、図３のデータチップ３０５は図３のマスクレジスター３３５内に受信された汚染パターンを格納する。或いは、段階１３１５で、図３のデータチップ３０５は図３のマスクレジスター３３５内に予めプログラムされた汚染パターンの識別子を受信し、段階１３２０で、図３のデータチップ３０５は必要とする時にデータを汚染させることに使用するために図３のマスクレジスター３３５内の識別された汚染パターンを特定する。
【００６４】
図１４は、本発明の一実施形態による図１のメモリコントローラ１２５に未加工データを伝送するための図１のメモリモジュール１１５内の図３のデータチップ３０５に対する例示的な方法を示すフローチャートである。図３を参照して上述したように、図１のメモリコントローラ１２５はメモリコントローラ非活性化信号３５５をデータ汚染エンジン３３０に伝送する。図３のメモリコントローラ非活性化信号３５５は、図３のデータ汚染エンジン３３０が訂正できないエラーを含むデータを汚染させる場合に、図１のメモリコントローラ１２５が図３のバッファ３２０から未加工データ（即ち、汚染されないデータ）を受信するメカニズムのために提供される。図３のメモリコントローラ非活性化信号３５５は、例えば汚染パターンが幾つかの理由で汚染されたデータから除去されずに、そして図１のメモリコントローラ１２５が汚染されないデータを望む状況で、有用である。
【００６５】
図１４において、段階１４０５で、図３のデータチップ３０５は図３のメモリコントローラ非活性化信号３５５を受信する。段階１２２５（図１２Ａの段階１２２５と機能的に同一である）で、図３の伝送回路３４５は図３のバッファ３２０から未加工（汚染されない）データを図１のメモリコントローラ１２５に伝送する。
【００６６】
図１４は、図１２Ａの段階１２２０、段階１２２５の変形として看做される。例えば、図１２Ａの段階１２２０で遂行されるテストは、２つの部分のテストであり、第１に図３のバッファ３２０内の未加工データにエラーが存在しないか、第２に図３のデータチップ３０５が図１のメモリコントローラ１２５から図３のメモリコントローラ非活性化信号３５５を受信するか、である。テスト部分の中のいずれか１つの結果が肯定回答である場合、次に図３の伝送回路３４５は図３のバッファ３２０から未加工データを伝送し、そうでない場合、処理（ｐｒｏｃｅｓｓｉｎｇ）は図１２Ｂの段階（１２３０）を継続する。
【００６７】
図１５Ａ及び図１５Ｂは、本発明の一実施形態による図１のメモリモジュール１１５内のデータチップ３０５が汚染パターンを利用してデータを汚染させる場合にエラー訂正を遂行する図１のメモリコントローラ１２５に対する例示的な方法を示すフローチャートである。図１５Ａにおいて、段階１５０５で、図１のメモリコントローラ１２５は汚染パターンを利用して図３のデータチップ３０５をプログラムする。図１５Ａにおいて、段階１５０５で、図１のメモリコントローラ１２５は小さい単位細分性又は大きい単位細分性の中のいずれか１つの任意の所望の汚染パターンを選択する。或いは、段階１５１０で、図１のメモリコントローラ１２５は予めプログラムされた汚染パターンの識別子を選択し、段階１５１５で、図１のメモリコントローラ１２５は選択された識別子を利用して図３のデータチップ３０５をプログラムする。図１２Ａの段階１２０５のように、段階１５０５、段階１５１０はメモリアクセスが遂行される時毎ではなく、システムの初期ブーティングの時のみに遂行される。
【００６８】
図１のメモリコントローラ１２５が汚染パターンを利用して図３のデータチップ３０５をどのようにしてプログラムするかに拘らず、段階１５２０で、図７の読出し回路７１０は図３のデータチップ３０５から未加工データを受信する。段階１５２５で、図７のパリティー回路７１５は図８のパリティー８２５を演算する。段階１５３０で、図１のメモリコントローラ１２５は（図８のパリティー８２５に基づいて）未加工データにエラーが存在するか否かを判定する。上述したように、図８のパリティー８２５を演算することは１つの方法であるが、未加工データにエラーが存在するか否かを判定するための唯一の方法ではなく、本実施形態は未加工データにエラーが存在するか否かを判定するための他の技術を使用することを支援する。
【００６９】
段階１５３５（図１５Ｂ）で、図１のメモリコントローラ１２５は未加工データにエラーが存在するか否かを判定する。未加工データにエラーが無い場合、次に段階１５４０で図１のメモリコントローラ１２５はプロセッサに未加工データを伝送する。未加工データにエラーがある場合、段階１５４５で、図７の汚染パターン分析回路７２５はパリティー８２５内の汚染パターンを識別する試図を遂行する。段階１５５０で、メモリコントローラ１２５はエラーを有する図３のデータチップ３０５を識別するために識別された汚染パターンを使用する。段階１５５５で、図７のエラー訂正回路７３０は図３のデータチップ３０５内のエラーを訂正する。最後に、段階１５６０で、図１のメモリコントローラ１２５はホストに訂正されたデータを伝送する。
【００７０】
図１６は、本発明の一実施形態によるデータを汚染させるために使用された汚染パターンを識別するための図７の汚染パターン分析回路７２５に対する例示的な方法を示すフローチャートである。図１６において、段階１５２５（図１５Ａの段階１５２５と機能的に同様であり、事実上２段階は１つの動作である）で、図８のパリティー８２５が、計算された汚染パターンを生成するために演算される。段階１６０５で、図７の汚染パターン分析回路７２５は計算された汚染パターンと図１のメモリモジュール１１５内のデータチップに関連する汚染パターンとを比較する。段階１６１０で、図７の汚染パターン分析回路７２５は図１のメモリモジュール１１５内のデータチップに関連する汚染パターンの中のどれが計算された汚染パターンの臨界値距離以内にあるかを決定する。図９を参照して上述したように、距離は計算された汚染パターンとプログラムされた汚染パターンとの間の異なるビット数として測定され、臨界値は任意の所望の臨界値である。
【００７１】
計算された汚染パターンがプログラムされた汚染パターンの中の任意の臨界値距離内でない場合、次に段階１６１５で、図１のメモリコントローラ１２５は汚染パターンを識別しないことを決定し、段階１６２０で、図１のメモリコントローラ１２５は訂正できないエラー（ｕｎｃｏｒｒｅｃｔａｂｌｅｅｒｒｏｒ：ＵＥ）としてエラーを図７のログ７３５に記録する。計算された汚染パターンがプログラムされた汚染パターンの中の任意の臨界値距離内である場合、段階１６２５で、図７の汚染パターン分析回路７２５は、計算された汚染パターンに最も近い汚染パターンを識別し、このようにすることによってエラーを有するデータチップを識別する。
【００７２】
図１７は、本発明の一実施形態による図１のメモリモジュール１１５内の図３のデータチップ３０５内のエラーを訂正するための図７のエラー訂正回路７３０の例示的な方法を示すフローチャートである。図１７において、段階１７０５で、図７のエラー訂正回路７３０はエラーを有するデータチップ３０５のデータを無視する。段階１７１０で、図７のエラー訂正回路７３０は図１のメモリモジュール１１５内の他のデータチップからのパリティーを演算し、段階１７１５で、図７のエラー訂正回路７３０は識別されたデータチップのデータとして演算されたパリティーを使用する。
【００７３】
或いは、段階１７２０で、図７のエラー訂正回路７３０はエラーを有する図３のデータチップ３０５からの未加工データから汚染パターンを除去する。段階１７２５で、図７のエラー訂正回路７３０はエラーを有する図３のデータチップ３０５の汚染されないデータを利用してパリティーを演算し、段階１７３０で、図７のエラー訂正回路７３０は演算されたパリティーに基づいて汚染されないデータ内のビットを反転させる。
【００７４】
図１８は、本発明の一実施形態による図１のメモリモジュール１１５内の図３のデータチップ３０５から未加工データを要請するための図１のメモリコントローラ１２５の例示的な方法を示すフローチャートである。図１８において、段階１８０５で、図１のメモリコントローラ１２５は図３のメモリコントローラ非活性化信号３５５を図３のデータチップ３０５に送る。段階１８１０で、図１のメモリコントローラ１２５は図３のデータチップ３０５から未加工データを受信する。
【００７５】
図１２Ａ〜図１８で、本発明の所定の実施形態を図示した。しかし、当業者はある段階の順序を変更するか、ある段階を省略するか、又は図面に示さないリンクを含むことによって、他の実施形態も可能であることを認識すべきである。フローチャートのこのような全ての変形は明示的に説明したたか否かに拘らず、本発明の実施形態であると看做される。
【００７６】
以下の説明は、本発明の技術的思想の一部の側面が具現される適切なマシン或いはマシンの簡単且つ一般的な説明を提供する。マシンは、少なくとも一部が他のマシンから受信される指示、仮想現実（ＶＲ）環境との相互作用、生体フィードバック、又は他の入力信号のみならず、キーボード、マウス等のような通常的な入力装置からの入力によって制御される。ここで使用するように、“マシン”という用語は、単一マシン、仮想マシン、又はマシンや仮想マシン若しくは共に動作する装置と通信するように結合されたシステムを広く含むものとして意図する。例示的なマシンは、例えば自動車、汽車、タクシー等のような個人用又は公共輸送のような輸送装置のみならず、個人用コンピュータ、ワークステーション、サーバー、ポータブルコンピュータ、ハンドヘルド（ｈａｎｄｈｅｌｄ）装置、電話、タブレット等のようなコンピューティング装置を含む。
【００７７】
マシンはプログラム可能な又はプログラム不可能な論理装置、又はアレイ、ＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）、埋め込み型コンピュータ、スマトカード等のような埋め込み型コントローラを含む。マシンは、ネットワークインターフェイス、モデム、又は他の通信結合を通じて１つ若しくはそれより多い遠隔マシンに対する１つ以上の連結を活用する。マシンは、イントラネット、インターネット、ＬＡＮ（ｌｏｃａｌ  ａｒｅａ  ｎｅｔｗｏｒｋｓ）、ＷＡＮ（ｗｉｄｅ  ａｒｅａ  ｎｅｔｗｏｒｋｓ）等のような物理的及び／又は論理的ネットワークの手段でそれぞれ連結される。この分野に熟練する者はネットワーク通信が多様な有線及び／又は無線による近距離又は遠距離搬送波（ｃａｒｒｉｅｒ）及び無線周波数（ＲＦ）、衛星、マイクロ波、ＩＥＥＥ（Ｉｎｓｔｉｔｕｔｅ  ｏｆ  Ｅｌｅｃｔｒｉｃａｌ  ａｎｄ  Ｅｌｅｃｔｒｏｎｉｃｓ  Ｅｎｇｉｎｅｅｒｓ）８０２．１１、ブルートゥース（登録商標）、光学、赤外線、ケーブル、レーザー等を含むプロトコルを活用することを理解すべきである。
【００７８】
本発明の実施形態は、マシンによってアクセスされる時に、マシンが作業を遂行するか、或いは抽象的なデータタイプ又は低レベルハードウェアコンテキスト（ｃｏｎｔｅｘｔ）の定義を発生させる関数、手続、データ構造、応用プログラム等を含む関連するデータを参照して又は併用して説明される。関連するデータは、例えばＲＡＭ、ＲＯＭ等のような揮発性及び／又は不揮発性メモリ、又は他のストレージ装置、及びハードドライブ、フロッピー（登録商標）ディスク、光学ストレージ、テープ、フラッシュメモリ、メモリスティック、デジタルビデオディスク、生体ストレージ等を含む関連するストレージ媒体に格納される。関連するデータは物理的及び／又は論理的ネットワークを含む伝送環境を経てパケット（ｐａｃｋｅｔ）、直列データ、並列データ、伝送信号等の形態で伝達され、圧縮された又は暗号化されたフォーマットで利用される。関連するデータは分散環境で使用され、マシンアクセスに対して地域的及び／又は遠隔的に格納される。
【００７９】
本発明の実施形態は、１つ以上のプロセッサによって実行可能であり、ここに説明したように本発明の技術的思想の要素を遂行する命令を含む実在する恒久的なコンピュータ読み取り可能な記録媒体を含む。
【００８０】
図示した実施形態を参照して説明した本発明の技術的思想の原則を有する限り、図示した実施形態がこのような原則から逸脱せずに、配列及び詳細で修正可能であり、必要な任意の方法で組合されることが理解されるべきである。先の説明は具体的な実施形態に集中したが、他の構成もまた考慮される。具体的に、“本発明の実施形態による”のような説明又はここに使用した類似なことに拘らず、このような文句は一般的に実施形態の可能性を参照し、本発明の技術的思想を具体的な実施形態の構成で限定することを意図しない。ここに使用するように、このような用語は他の実施形態で組合せ可能である同一又は異なる実施形態を参照する。
【００８１】
上述した実施形態は、本発明の技術的思想をそれに限定するものと解釈されない。少ない実施形態のみを説明したが、この分野に熟練する者は、本記載の新規な説明及び長所から実質的に逸脱せずに、このような実施形態に多くの修正が可能であることを十分に理解できる。従って、このような全ての修正は本発明の技術的思想の範囲内に含まれるものと意図される。
【００８２】
本発明の実施形態は、制限無しに、以下のステートメント（ｓｔａｔｅｍｅｎｔ）に拡張される。
【００８３】
（ステートメント１）本発明の一実施形態によるメモリモジュール内のデータチップは、データアレイ（ｄａｔａ  ａｒｒａｙ）と、前記データアレイから未加工データ（ｒａｗ  ｄａｔａ）を読み出す読出し回路と、前記読出し回路によって前記データアレイからの前記未加工データを格納するバッファ（ｂｕｆｆｅｒ）と、汚染パターンを格納するマスクレジスター（ｍａｓｋ  ｒｅｇｉｓｔｅｒ）と、前記マスクレジスターに格納された前記汚染パターンを利用して前記バッファに格納された前記未加工データを修正して汚染されたデータを生成するデータ汚染エンジン（ｄａｔａ  ｐｏｌｌｕｔｉｏｎ  ｅｎｇｉｎｅ）と、前記バッファから前記汚染されたデータを伝送する伝送回路と、を備える。
【００８４】
（ステートメント２）第１ステートメントにおいて、前記データチップは、ＤＲＡＭモジュール（ｄｙｎａｍｉｃ  ｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙ  ｍｏｄｕｌｅ）に含まれる。
【００８５】
（ステートメント３）第１ステートメントにおいて、前記データチップは、複数の他のデータチップを含むＤＲＡＭモジュールに含まれ、前記データチップの前記マスクレジスターに格納された前記汚染パターンは、前記ＤＲＡＭモジュール内の前記複数の他のデータチップに格納された汚染パターンと異なる。
【００８６】
（ステートメント４）第１ステートメントにおいて、前記伝送回路は、メモリコントローラ（ｍｅｍｏｒｙ  ｃｏｎｔｒｏｌｌｅｒ）に前記汚染されたデータを伝送する。
【００８７】
（ステートメント５）第１ステートメントにおいて、前記データチップは、前記バッファに格納された前記未加工データに対してエラー訂正を遂行するＥＣＣ（ｅｒｒｏｒ  ｃｏｒｒｅｃｔｉｎｇ  ｃｏｄｅ）回路を更に含み、前記データ汚染エンジンは、前記ＥＣＣ回路が前記バッファに格納された前記未加工データ内のエラーを検出するが訂正できない場合、前記マスクレジスターに格納された前記汚染パターンを利用して前記バッファに格納された前記未加工データを修正する。
【００８８】
（ステートメント６）第１ステートメントにおいて、前記データ汚染エンジンは、前記バッファに格納された前記未加工データ及び前記マスクレジスターに格納された前記汚染パターンに対してＸＯＲ（排他的論理和、ｅｘｃｌｕｓｉｖｅ  ｏｒ）演算を遂行するＸＯＲ回路を含む。
【００８９】
（ステートメント７）第１ステートメントにおいて、前記データ汚染エンジンは、前記データ汚染エンジンがメモリコントローラからメモリコントローラ非活性化信号を受信しない限り、前記マスクレジスターに格納された前記汚染パターンを利用して前記バッファに格納された前記未加工データを修正する。
【００９０】
（ステートメント８）第１ステートメントにおいて、前記汚染パターンは、ブーティングの時に、メモリコントローラによって前記マスクレジスター内にプログラムされる。
【００９１】
（ステートメント９）第１ステートメントにおいて、前記汚染パターンは、前記マスクレジスターに格納された複数の予めプログラムされた汚染パターンの中の１つであり、前記データチップは、前記マスクレジスターから使用するために前記メモリコントローラから前記汚染パターンの識別子を受信する。
【００９２】
（ステートメント１０）本発明の一実施形態によるメモリコントローラは、複数のデータチップに格納されたアドレスでの値を要請する読出し回路と、前記複数のデータチップから受信された未加工データからパリティーを演算するパリティー回路と、前記パリティーと前記複数のデータチップ内にプログラムされた複数の汚染パターンとを比較してエラーを有するデータチップを識別する汚染パターン分析回路と、前記識別されたエラーを有するデータチップから受信された未加工データ内のエラーを訂正するエラー訂正回路と、を備える。
【００９３】
（ステートメント１１）第１０ステートメントにおいて、前記複数のデータチップは、ＤＲＡＭモジュール（ｄｙｎａｍｉｃ  ｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙ  ｍｏｄｕｌｅ）に含まれる。
【００９４】
（ステートメント１２）第１０ステートメントにおいて、前記汚染パターン分析回路及び前記エラー訂正回路は、前記パリティー回路が前記複数のデータチップから受信された未加工データにエラーがあることを示す場合にのみ使用される。
【００９５】
（ステートメント１３）第１２ステートメントにおいて、前記複数のデータチップから受信された未加工データから演算されたパリティーは、前記複数のデータチップから受信された未加工データにエラーが存在するか否かを示す。
【００９６】
（ステートメント１４）第１０ステートメントにおいて、前記汚染パターン分析回路は、前記複数のデータチップ内にプログラムされた複数の汚染パターンの中から前記パリティーに最も近い汚染パターンを識別する。
【００９７】
（ステートメント１５）第１４ステートメントにおいて、前記汚染パターン分析回路は、前記複数のデータチップ内にプログラムされた複数の汚染パターンの中の前記識別された汚染パターンが前記パリティーの臨界値以内であるか否かを判定する。
【００９８】
（ステートメント１６）第１５ステートメントにおいて、前記臨界値は、前記パリティーサイズの１／２である。
【００９９】
（ステートメント１７）第１５ステートメントにおいて、前記汚染パターン分析回路は、前記複数のデータチップ内にプログラムされた複数の汚染パターンの中のいずれも前記パリティーの前記臨界値以内ではない場合、前記複数のデータチップ内にプログラムされた前記複数の汚染パターンの中のいずれも更に識別しない。
【０１００】
（ステートメント１８）第１７ステートメントにおいて、前記メモリコントローラは、前記複数のデータチップ内にプログラムされた前記複数の汚染パターンの中のいずれも前記パリティーの臨界値以内ではないことを記録するログ（ｌｏｇ）を更に含む。
【０１０１】
（ステートメント１９）第１４ステートメントにおいて、前記汚染パターン分析回路は、前記複数のデータチップ内にプログラムされた複数の汚染パターンの中から前記パリティー汚染パターン内のビットに一致するビットを最も多く有する汚染パターンを識別する。
【０１０２】
（ステートメント２０）第１４ステートメントにおいて、前記汚染パターン分析回路は、前記識別されたエラーを有するデータチップとして前記複数のデータチップ内にプログラムされた複数の汚染パターンの中の識別された汚染パターンに関連する前記複数のデータチップの中のデータチップを識別する。
【０１０３】
（ステートメント２１）第１４ステートメントにおいて、前記メモリコントローラは、前記識別されたエラーを有するデータチップにメモリコントローラ非活性化信号を伝送し、前記読出し回路は、前記識別されたエラーを有するデータチップから未加工データを受信する。
【０１０４】
（ステートメント２２）第１０ステートメントにおいて、前記エラー訂正回路は、前記複数のデータチップの中の他のデータチップからの未加工データを利用して前記識別されたエラーを有するデータチップから前記データを再作成する（ｒｅｃｒｅａｔｅ）。
【０１０５】
（ステートメント２３）第２２ステートメントにおいて、前記パリティー回路は、前記複数のデータチップの中の他のデータチップからの未加工データに対するパリティーを演算することによって前記識別されたエラーを有するデータチップから前記データを再作成する。
【０１０６】
（ステートメント２４）第１０ステートメントにおいて、前記エラー訂正回路は、前記識別されたエラーを有するデータチップから受信された未加工データから前記パリティーを除去し、前記識別されたエラーを有するデータチップからの汚染されないデータ及び前記複数のデータチップの中の他のデータチップからの未加工データを利用して前記識別されたエラーを有するデータチップからの汚染されないデータ内のエラーを訂正する。
【０１０７】
（ステートメント２５）第２４ステートメントにおいて、前記エラー訂正回路は、前記識別されたエラーを有するデータチップからの汚染されないデータ及び前記複数のデータチップの中の他のデータチップからの未加工データに対するパリティーを更に演算し、前記演算されたパリティーに基づいて前記識別されたエラーを有するデータチップからの汚染されないデータ内の少なくとも１つのビットを更に反転させる。
【０１０８】
（ステートメント２６）第１０ステートメントにおいて、前記メモリコントローラは、ブーティングの間に前記複数のデータチップに対する複数の汚染パターンを選択する汚染パターンプログラミング回路を更に含む。
【０１０９】
（ステートメント２７）第２６ステートメントにおいて、前記複数の汚染パターンは、全て固有である。
【０１１０】
（ステートメント２８）第２６ステートメントにおいて、前記汚染パターンプログラミング回路は、前記ブーティングの間に前記複数の汚染パターンを利用して前記複数のデータチップをプログラムする。
【０１１１】
（ステートメント２９）第２６ステートメントにおいて、前記汚染パターンプログラミング回路は、前記ブーティングの間に前記複数のデータチップに対する予めプログラムされた汚染パターンの複数の識別子を選択し、前記ブーティングの間に選択された複数の識別子を利用して前記複数のデータチップをプログラムする。
【０１１２】
（ステートメント３０）本発明の一実施形態によるデータチップ内のエラー情報伝達方法は、アドレスでの値に対する要請をデータチップで受信する段階と、前記アドレスでの値を含む未加工データを前記データチップのバッファに格納（ｂｕｆｆｅｒ）する段階と、前記バッファ内の前記未加工データがエラーを有するか否かを判定する段階と、を有し、前記バッファ内の前記未加工データがエラーを有する場合、汚染されたデータを生成するために汚染パターンを利用して前記バッファ内の前記未加工データを汚染させる段階と、前記バッファ内の前記汚染されたデータをメモリコントローラに伝送する段階と、を有する。
【０１１３】
（ステートメント３１）第３０ステートメントにおいて、前記汚染パターンを利用して前記バッファ内の前記未加工データを汚染させる段階は、前記汚染パターンを利用して前記バッファ内の前記未加工データをＸＯＲ（排他的論理和、ｅｘｃｌｕｓｉｖｅ  ｏｒ）演算する段階を含む。
【０１１４】
（ステートメント３２）第３０ステートメントにおいて、前記方法は、前記バッファ内の前記未加工データが前記エラーを有しない場合、前記メモリコントローラに前記バッファ内の前記未加工データを伝送する段階を更に含む。
【０１１５】
（ステートメント３３）第３０ステートメントにおいて、前記データチップは、ＤＲＡＭモジュール（ｄｙｎａｍｉｃ  ｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙ  ｍｏｄｕｌｅ）に含まれる。
【０１１６】
（ステートメント３４）第３０ステートメントにおいて、前記方法は、前記バッファ内の前記未加工データがエラーを有する場合、前記バッファ内の前記未加工データ内のエラーが訂正されるか否かを判定する段階を更に含み、前記バッファ内の前記未加工データ内のエラーが訂正されない場合、前記汚染パターンを利用して前記バッファ内の前記未加工データを汚染させる段階と、前記バッファ内の前記汚染されたデータを前記メモリコントローラに伝送する段階と、を更に含む。
【０１１７】
（ステートメント３５）第３４ステートメントにおいて、前記方法は、前記バッファ内の前記未加工データ内のエラーが訂正可能な場合、前記バッファ内の前記未加工データを訂正する段階と、前記バッファ内の前記訂正されたデータを前記メモリコントローラに伝送する段階と、を更に含む。
【０１１８】
（ステートメント３６）第３０ステートメントにおいて、前記汚染パターンを利用して前記バッファ内の前記未加工データを汚染させる段階は、前記データチップ内のマスクレジスターからの前記汚染パターンにアクセスする段階を含む。
【０１１９】
（ステートメント３７）第３６ステートメントにおいて、前記方法は、前記メモリコントローラから前記汚染パターンを受信する段階と、前記マスクレジスターに前記受信された汚染パターンを格納する段階と、を更に含む。
【０１２０】
（ステートメント３８）第３６ステートメントにおいて、前記方法は、前記メモリコントローラから汚染パターン識別子を受信する段階を更に含み、前記データチップ内のマスクレジスターからの前記汚染パターンにアクセスする段階は、前記汚染パターン識別子に応答して前記データチップ内の前記マスクレジスターからの前記汚染パターンにアクセスする段階を含む。
【０１２１】
（ステートメント３９）第３０ステートメントにおいて、前記汚染パターンは、前記バッファの第２幅（ｗｉｄｔｈ）と同一である第１幅を含む。
【０１２２】
（ステートメント４０）第３０ステートメントにおいて、前記汚染パターンは、前記バッファの第２幅よりも少ない第１幅を含み、前記汚染パターンは、少なくとも前記バッファ程度広くなるように繰り返す。
【０１２３】
（ステートメント４１）第３０ステートメントにおいて、前記方法は、前記データチップでメモリコントローラ非活性化信号を受信する段階と、前記バッファ内の前記未加工データを前記メモリコントローラに伝送する段階と、を更に含む。
【０１２４】
（ステートメント４２）本発明の一実施形態によるメモリコントローラのエラー訂正方法は、複数のデータチップから未加工データを受信する段階と、前記複数のデータチップの中の少なくとも１つからの未加工データがエラーを有するか否かを判定する段階と、前記複数のデータチップの中の少なくとも１つからの未加工データがエラーを有する場合、前記複数のデータチップからの未加工データを利用して汚染パターンを識別する試図を遂行する段階と、前記エラーを有する前記複数のデータチップの中の少なくとも１つを識別するために前記汚染パターンを使用する段階と、前記汚染パターン及び前記複数のデータチップからの未加工データに応答して前記複数のデータチップからの未加工データ内のエラーを訂正する段階と、を有する。
【０１２５】
（ステートメント４３）第４２ステートメントにおいて、前記複数のデータチップは、ＤＲＡＭモジュール（ｄｙｎａｍｉｃ  ｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙ  ｍｏｄｕｌｅ）に含まれる。
【０１２６】
（ステートメント４４）第４２ステートメントにおいて、前記方法は、ホストに前記訂正されたデータを伝送する段階を更に含む。
【０１２７】
（ステートメント４５）第４２ステートメントにおいて、前記複数のデータチップの中の少なくとも１つからの未加工データがエラーを有しない場合、ホストに前記未加工データを伝送する段階を含む。
【０１２８】
（ステートメント４６）第４２ステートメントにおいて、前記複数のデータチップの中の少なくとも１つからの未加工データがエラーを有するか否かを判定する段階は、前記複数のデータチップからの未加工データに対してパリティー演算を遂行する段階と、前記パリティー演算がパリティーエラーを示す場合、前記複数のデータチップの中の少なくとも１つからの未加工データがエラーを有するか否かを判定する段階と、を含む。
【０１２９】
（ステートメント４７）第４２ステートメントにおいて、前記複数のデータチップからの未加工データを利用して汚染パターンを識別する試図を遂行する段階は、前記複数のデータチップからの未加工データから汚染パターンを計算する段階と、前記計算された汚染パターンと前記複数のデータチップに関連する複数の汚染パターンとを比較する段階と、前記複数のデータチップに関連する複数の汚染パターンの中の１つが前記計算された汚染パターンの臨界値以内である場合に、前記計算された汚染パターンの臨界値以内である汚染パターンを識別する段階と、を含む。
【０１３０】
（ステートメント４８）第４７ステートメントにおいて、前記計算された汚染パターンと前記複数のデータチップに関連する複数の汚染パターンとを比較する段階は、前記複数のデータチップに関連する複数の汚染パターンの中の前記計算された汚染パターンに最も近い１つを識別する段階を含む。
【０１３１】
（ステートメント４９）第４８ステートメントにおいて、前記複数のデータチップに関連する複数の汚染パターンの中の前記計算された汚染パターンに最も近い１つを識別する段階は、複数のデータチップに関連する複数の汚染パターンの中の前記計算された汚染パターン内のビットに一致するビットを最も多く有する１つを識別する段階を含む。
【０１３２】
（ステートメント５０）第４７ステートメントにおいて、前記臨界値は、前記計算された汚染パターンサイズの１／２である。
【０１３３】
（ステートメント５１）第４７ステートメントにおいて、前記複数のデータチップに関連する複数の汚染パターンの中のいずれも前記計算された汚染パターンの臨界値以内ではない場合、前記複数のデータチップに関連する任意の汚染パターンを識別しない。
【０１３４】
（ステートメント５２）第５１ステートメントにおいて、前記方法は、訂正できないエラー（ｕｎｃｏｒｒｅｃｔａｂｌｅ  ｅｒｒｏｒ：ＵＥ）として前記エラーを記録する段階を更に含む。
【０１３５】
（ステートメント５３）第４７ステートメントにおいて、前記方法は、メモリコントローラ非活性化信号を、前記エラーを有する前記複数のデータチップの中の前記識別された少なくとも１つに伝送する段階と、前記エラーを有する前記複数のデータチップの中の前記識別された少なくとも１つから未加工データを受信する段階と、を更に含む。
【０１３６】
（ステートメント５４）第４７ステートメントにおいて、前記汚染パターン及び前記複数のデータチップからの未加工データに応答して前記複数のデータチップからの未加工データ内のエラーを訂正する段階は、前記エラーを有する前記複数のデータチップの中の前記識別された少なくとも１つからの未加工データを無視する段階と、前記複数のデータチップの中の他のデータチップからの未加工データを利用して前記エラーを有する前記複数のデータチップの中の前記識別された少なくとも１つからのデータを再作成する段階と、を含む。
【０１３７】
（ステートメント５５）第５４ステートメントにおいて、前記複数のデータチップの中の他のデータチップからの未加工データを利用して前記エラーを有する前記複数のデータチップの中の前記識別された少なくとも１つからのデータを再作成する段階は、前記複数のデータチップの中の他のデータチップからの未加工データに対するパリティーを演算する段階と、前記エラーを有する前記複数のデータチップの中の前記識別された少なくとも１つからのデータとして前記演算されたパリティーを利用する段階と、を含む。
【０１３８】
（ステートメント５６）第４７ステートメントにおいて、前記汚染パターン及び前記複数のデータチップからの未加工データに応答して前記複数のデータチップからの未加工データ内のエラーを訂正する段階は、前記エラーを有する前記複数のデータチップの中の前記識別された少なくとも１つからの未加工データから前記識別された汚染パターンを除去して汚染されないデータを生成する段階と、前記エラーを有する前記複数のデータチップの中の前記識別された少なくとも１つからの汚染されないデータ及び前記複数のデータチップの中の他のデータチップからの未加工データを利用して前記エラーを有する前記複数のデータチップの中の前記識別された少なくとも１つからの汚染されないデータ内のエラーを訂正する段階と、を含む。
【０１３９】
（ステートメント５７）第５６ステートメントにおいて、前記エラーを有する前記複数のデータチップの中の前記識別された少なくとも１つからの未加工データから前記識別された汚染パターンを除去して汚染されないデータを生成する段階は、前記識別された汚染パターンを、前記エラーを有する前記複数のデータチップの中の前記識別された少なくとも１つからの未加工データを利用してＸＯＲ演算する段階を含む。
【０１４０】
（ステートメント５８）第５６ステートメントにおいて、前記エラーを有する前記複数のデータチップの中の前記識別された少なくとも１つからの汚染されないデータ及び前記複数のデータチップの中の他のデータチップからの未加工データを利用して前記エラーを有する前記複数のデータチップの中の前記識別された少なくとも１つからの汚染されないデータ内のエラーを訂正する段階は、前記エラーを有する前記複数のデータチップの中の前記識別された少なくとも１つからの汚染されないデータ及び前記複数のデータチップの中の他のデータチップからの未加工データに対するパリティーを演算する段階と、前記演算されたパリティーに基づいて前記エラーを有する前記複数のデータチップの中の前記識別された少なくとも１つからの汚染されないデータ内の少なくとも１つのビットを反転させる段階と、を含む。
【０１４１】
（ステートメント５９）第４２ステートメントにおいて、前記方法は、ブーティングの間に前記複数のデータチップに対する複数の汚染パターンを選択する段階を更に含む。
【０１４２】
（ステートメント６０）第５９ステートメントにおいて、前記複数のデータチップに対する複数の汚染パターンを選択する段階は、前記ブーティングの間に前記複数の汚染パターンで前記複数のデータチップをプログラムする段階を含む。
【０１４３】
（ステートメント６１）第５９ステートメントにおいて、前記複数のデータチップに対する複数の汚染パターンを選択する段階は、前記ブーティングの間に前記複数のデータチップに対する予めプログラムされた汚染パターンの複数の識別子を選択する段階と、前記ブーティングの間に前記選択された複数の識別子を利用して前記複数のデータチップをプログラムする段階と、を含む。
【０１４４】
（ステートメント６２）本発明の一実施形態によるデータチップ内のエラー情報伝達方法をマシン（ｍａｃｈｉｎｅ）に実行させるためのプログラムを記録したコンピュータ読み取り可能な記録媒体であって、記録された非一時的な命令（ｎｏｎ−ｔｒａｎｓｉｔｏｒｙ  ｉｎｓｔｒｕｃｔｉｏｎ）により、アドレスでの値に対する要請をデータチップで受信する段階と、前記アドレスでの値を含む未加工データを前記データチップのバッファに格納（ｂｕｆｆｅｒ）する段階と、前記バッファ内の前記未加工データがエラーを有するか否かを判定する段階と、前記バッファ内の前記未加工データがエラーを有する場合、汚染されたデータを生成するために汚染パターンを利用して前記バッファ内の前記未加工データを汚染させる段階と、前記バッファ内の前記汚染されたデータをメモリコントローラに伝送する段階と、を実行させる。
【０１４５】
（ステートメント６３）第６２ステートメントにおいて、前記汚染パターンを利用して前記バッファ内の前記未加工データを汚染させる段階は、前記汚染パターンを利用して前記バッファ内の前記未加工データをＸＯＲ（排他的論理和、ｅｘｃｌｕｓｉｖｅ  ｏｒ）演算する段階を含む。
【０１４６】
（ステートメント６４）第６２ステートメントにおいて、前記記録媒体は、前記マシンに、前記バッファ内の前記未加工データが前記エラーを有しない場合、前記メモリコントローラに前記バッファ内の前記未加工データを伝送する段階を実行させる非一時的な命令を更に含む。
【０１４７】
（ステートメント６５）第６２ステートメントにおいて、前記データチップは、ＤＲＡＭモジュール（ｄｙｎａｍｉｃ  ｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙ  ｍｏｄｕｌｅ）に含まれる。
【０１４８】
（ステートメント６６）第６２ステートメントにおいて、前記記録媒体は、前記マシンに、前記バッファ内の前記未加工データがエラーを有する場合、前記バッファ内の前記未加工データ内のエラーが訂正されるか否かを判定する段階を実行させる非一時的な命令を更に含み、前記バッファ内の前記未加工データ内のエラーが訂正されない場合、前記汚染パターンを利用して前記バッファ内の前記未加工データを汚染させる段階と、前記バッファ内の前記汚染されたデータを前記メモリコントローラに伝送する段階と、を実行させる非一時的な命令を更に含む。
【０１４９】
（ステートメント６７）第６６ステートメントにおいて、前記記録媒体は、前記マシンに、前記バッファ内の前記未加工データ内のエラーが訂正可能な場合、前記バッファ内の前記未加工データを訂正する段階と、前記バッファ内の前記訂正されたデータを前記メモリコントローラに伝送する段階と、を実行させる非一時的な命令を更に含む。
【０１５０】
（ステートメント６８）第６２ステートメントにおいて、前記汚染パターンを利用して前記バッファ内の前記未加工データを汚染させる段階は、前記データチップ内のマスクレジスターからの前記汚染パターンにアクセスする段階を含む。
【０１５１】
（ステートメント６９）第６８ステートメントにおいて、前記記録媒体は、前記マシンに、前記メモリコントローラから前記汚染パターンを受信する段階と、前記マスクレジスターに前記受信された汚染パターンを格納する段階と、を実行させる非一時的な命令を更に含む。
【０１５２】
（ステートメント７０）第６８ステートメントにおいて、前記記録媒体は、前記マシンに、前記メモリコントローラから汚染パターン識別子を受信する段階を実行させる非一時的な命令を更に含み、前記データチップ内のマスクレジスターからの前記汚染パターンにアクセスする段階は、前記汚染パターン識別子に応答して前記データチップ内の前記マスクレジスターからの前記汚染パターンにアクセスする段階を含む。
【０１５３】
（ステートメント７１）第６２ステートメントにおいて、前記汚染パターンは、前記バッファの第２幅（ｗｉｄｔｈ）と同一である第１幅を含む。
【０１５４】
（ステートメント７２）第６２ステートメントにおいて、前記汚染パターンは、前記バッファの第２幅よりも少ない第１幅を含み、前記汚染パターンは、少なくとも前記バッファ程度広くなるように繰り返す。
【０１５５】
（ステートメント７３）第６２ステートメントにおいて、前記記録媒体は、前記マシンに、前記データチップでメモリコントローラ非活性化信号を受信する段階と、前記バッファ内の前記未加工データを前記メモリコントローラに伝送する段階と、を実行させる非一時的な命令を更に含む。
【０１５６】
（ステートメント７４）本発明の一実施形態によるメモリコントローラのエラー訂正方法を、マシン（ｍａｃｈｉｎｅ）に実行させるためのプログラムを記録したコンピュータ読み取り可能な記録媒体であって、記録された非一時的な命令（ｎｏｎ−ｔｒａｎｓｉｔｏｒｙ  ｉｎｓｔｒｕｃｔｉｏｎ）により、複数のデータチップから未加工データを受信する段階と、前記複数のデータチップの中の少なくとも１つからの未加工データがエラーを有するか否かを判定する段階と、前記複数のデータチップの中の少なくとも１つからの未加工データが前記エラーを有する場合、前記複数のデータチップからの未加工データを利用して汚染パターンを識別する試図を遂行する段階と、前記エラーを有する前記複数のデータチップの中の少なくとも１つを識別するために前記汚染パターンを使用する段階と、前記汚染パターン及び前記複数のデータチップからの未加工データに応答して前記複数のデータチップからの未加工データ内のエラーを訂正する段階と、を実行させる。
【０１５７】
（ステートメント７５）第７４ステートメントにおいて、前記複数のデータチップは、ＤＲＡＭモジュール（ｄｙｎａｍｉｃ  ｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙ  ｍｏｄｕｌｅ）に含まれる。
【０１５８】
（ステートメント７６）第７４ステートメントにおいて、前記格納媒体は、前記マシンに、ホストに前記訂正されたデータを伝送する段階を実行させる非一時的な命令を更に含む。
【０１５９】
（ステートメント７７）第７４ステートメントにおいて、前記格納媒体は、前記マシンに、前記複数のデータチップの中の少なくとも１つからの未加工データがエラーを有しない場合、ホストに前記未加工データを伝送する段階を実行させる非一時的な命令を更に含む。
【０１６０】
（ステートメント７８）第７４ステートメントにおいて、前記複数のデータチップの中の少なくとも１つからの未加工データがエラーを有するか否かを判定する段階は、前記複数のデータチップからの未加工データに対してパリティー演算を遂行する段階と、前記パリティー演算がパリティーエラーを示す場合、前記複数のデータチップの中の少なくとも１つからの未加工データがエラーを有するか否かを判定する段階と、を含む。
【０１６１】
（ステートメント７９）第７４ステートメントにおいて、前記複数のデータチップからの未加工データを利用して汚染パターンを識別する試図を遂行する段階は、前記複数のデータチップからの未加工データから汚染パターンを計算する段階と、前記計算された汚染パターンと前記複数のデータチップに関連する複数の汚染パターンとを比較する段階と、前記複数のデータチップに関連する複数の汚染パターンの中の１つが前記計算された汚染パターンの臨界値以内である場合に、前記計算された汚染パターンの臨界値以内である前記汚染パターンを識別する段階と、を含む。
【０１６２】
（ステートメント８０）第７９ステートメントにおいて、前記計算された汚染パターンと前記複数のデータチップに関連する複数の汚染パターンとを比較する段階は、前記複数のデータチップに関連する複数の汚染パターンの中の前記計算された汚染パターンに最も近い１つを識別する段階を含む。
【０１６３】
（ステートメント８１）第８０ステートメントにおいて、前記複数のデータチップに関連する複数の汚染パターンの中の前記計算された汚染パターンに最も近い１つを識別する段階は、複数のデータチップに関連する複数の汚染パターンの中の前記計算された汚染パターン内のビットに一致するビットを最も多く有する１つを識別する段階を含む。
【０１６４】
（ステートメント８２）第７９ステートメントにおいて、前記臨界値は、前記計算された汚染パターンサイズの１／２である。
【０１６５】
（ステートメント８３）第７９ステートメントにおいて、前記複数のデータチップに関連する複数の汚染パターンの中のいずれも前記計算された汚染パターンの臨界値以内ではない場合、前記複数のデータチップに関連する任意の汚染パターンを識別しない。
【０１６６】
（ステートメント８４）第８３ステートメントにおいて、前記格納媒体は、前記マシンに、訂正できないエラー（ｕｎｃｏｒｒｅｃｔａｂｌｅ  ｅｒｒｏｒ：ＵＥ）として前記エラーを記録する段階を実行させる非一時的な命令を更に含む。
【０１６７】
（ステートメント８５）第７９ステートメントにおいて、前記格納媒体は、前記マシンに、メモリコントローラ非活性化信号を、前記エラーを有する前記複数のデータチップの中の前記識別された少なくとも１つに伝送する段階と、前記エラーを有する前記複数のデータチップの中の前記識別された少なくとも１つから未加工データを受信する段階と、を実行させる非一時的な命令を更に含む。
【０１６８】
（ステートメント８６）第７９ステートメントにおいて、前記汚染パターン及び前記複数のデータチップからの未加工データに応答して前記複数のデータチップからの未加工データ内のエラーを訂正する段階は、前記エラーを有する前記複数のデータチップの中の前記識別された少なくとも１つからの未加工データを無視する段階と、前記複数のデータチップの中の他のデータチップからの未加工データを利用して前記エラーを有する前記複数のデータチップの中の前記識別された少なくとも１つからのデータを再作成する段階と、を含む。
【０１６９】
（ステートメント８７）第８６ステートメントにおいて、前記複数のデータチップの中の他のデータチップからの未加工データを利用して前記エラーを有する前記複数のデータチップの中の前記識別された少なくとも１つからのデータを再作成する段階は、前記複数のデータチップの中の他のデータチップからの未加工データに対するパリティーを演算する段階と、前記エラーを有する前記複数のデータチップの中の前記識別された少なくとも１つからのデータとして前記演算されたパリティーを利用する段階と、を含む。
【０１７０】
（ステートメント８８）第７９ステートメントにおいて、前記汚染パターン及び前記複数のデータチップからの未加工データに応答して前記複数のデータチップからの未加工データ内のエラーを訂正する段階は、前記エラーを有する前記複数のデータチップの中の前記識別された少なくとも１つからの未加工データから前記識別された汚染パターンを除去して汚染されないデータを生成する段階と、前記エラーを有する前記複数のデータチップの中の前記識別された少なくとも１つからの汚染されないデータ及び前記複数のデータチップの中の他のデータチップからの未加工データを利用して前記エラーを有する前記複数のデータチップの中の前記識別された少なくとも１つからの汚染されないデータ内のエラーを訂正する段階と、を含む。
【０１７１】
（ステートメント８９）第８８ステートメントにおいて、前記エラーを有する前記複数のデータチップの中の前記識別された少なくとも１つからの未加工データから前記識別された汚染パターンを除去して汚染されないデータを生成する段階は、前記識別された汚染パターンを、前記エラーを有する前記複数のデータチップの中の前記識別された少なくとも１つからの未加工データを利用してＸＯＲ演算する段階を含む。
【０１７２】
（ステートメント９０）第８８ステートメントにおいて、前記エラーを有する前記複数のデータチップの中の前記識別された少なくとも１つからの汚染されないデータ及び前記複数のデータチップの中の他のデータチップからの未加工データを利用して前記エラーを有する前記複数のデータチップの中の前記識別された少なくとも１つからの汚染されないデータ内のエラーを訂正する段階は、前記エラーを有する前記複数のデータチップの中の前記識別された少なくとも１つからの汚染されないデータ及び前記複数のデータチップの中の他のデータチップからの未加工データに対するパリティーを演算する段階と、前記演算されたパリティーに基づいて前記エラーを有する前記複数のデータチップの中の前記識別された少なくとも１つからの汚染されないデータ内の少なくとも１つのビットを反転させる段階と、を含む。
【０１７３】
（ステートメント９１）第７４ステートメントにおいて、前記格納媒体は、前記マシンに、ブーティングの間に前記複数のデータチップに対する複数の汚染パターンを選択する段階を実行させる非一時的な命令を更に含む。
【０１７４】
（ステートメント９２）第９１ステートメントにおいて、前記複数のデータチップに対する複数の汚染パターンを選択する段階は、前記ブーティングの間に前記複数の汚染パターンで前記複数のデータチップをプログラムする段階を含む。
【０１７５】
（ステートメント９３）第９１ステートメントにおいて、前記複数のデータチップに対する複数の汚染パターンを選択する段階は、前記ブーティングの間に前記複数のデータチップに対する予めプログラムされた汚染パターンの複数の識別子を選択する段階と、前記ブーティングの間に前記選択された複数の識別子を利用して前記複数のデータチップをプログラムする段階と、を含む。
【０１７６】
以上、本発明の実施形態について図面を参照しながら詳細に説明したが、本発明は、上述の実施形態に限定されるものではなく、本発明の技術的範囲から逸脱しない範囲内で多様に変更実施することが可能である。
【符号の説明】
【０１７７】
１０５    マシン
１１０    プロセッサ
１１５    メモリモジュール
１２０    格納装置
１２５    メモリコントローラ
２０５    クロック
２１０    ネットワークコネクター
２１５    バス
２２０    ユーザーインターフェイス
２２５    入出力エンジン
３０５    データチップ
３１０    ＤＲＡＭアレイ
３１５、７１０    読出し回路
３２０    バッファ
３２５    ＥＣＣエンジン
３３０    データ汚染エンジン
３３５    マスクレジスター
３４０    デマルチプレクサー
３４５    伝送回路（ＤＱ  ＴＸ）
３５０    ＸＯＲ回路
３５５    メモリコントローラ非活性化信号
４０５、４１０    ロジック
４１５    表
５０５、８０５、８１０、８１５、８２０    未加工データ    未加工データ
５１０    汚染パターン
５１５    汚染されたデータ
６０５、６１０、６１５、６２０、６２５、６３０    （プログラムされた）汚染パターン
６３５、６４０、６４５、６５０、６５５、６６０    識別子
７０５    汚染パターンプログラミング回路
７１５    パリティー回路
７２５    汚染パターン分析回路
７３０    エラー訂正回路
７３５    ログ
８２５    パリティー
９０５、１１０５    結果
９１０    臨界値
１００５    エラー
【図１】
2018077833.tif 000003
【図２】
2018077833.tif 000004
【図３】
2018077833.tif 000005
【図４】
2018077833.tif 000006
【図５】
2018077833.tif 000007
【図６】
2018077833.tif 000008
【図７】
2018077833.tif 000009
【図８】
2018077833.tif 000010
【図９】
2018077833.tif 000011
【図１０】
2018077833.tif 000012
【図１１】
2018077833.tif 000013
【図１２Ａ】
2018077833.tif 000014
【図１２Ｂ】
2018077833.tif 000015
【図１３】
2018077833.tif 000016
【図１４】
2018077833.tif 000017
【図１５Ａ】
2018077833.tif 000018
【図１５Ｂ】
2018077833.tif 000019
【図１６】
2018077833.tif 000020
【図１７】
2018077833.tif 000021
【図１８】
2018077833.tif 000022