(57)【要約】【課題】メモリ・コントローラを動作させる方法を提供。【解決手段】メモリ・コントローラの第１のメモリ・デバイスおよび第２のメモリ・デバイスをデュアル・チャネル・モードで駆動する。第１の誤り訂正符号（ＥＣＣ）メモリ・デバイスおよび第２のＥＣＣメモリ・デバイスは、第１のメモリ・デバイスおよび第２のメモリ・デバイスを保護する。メモリ・コントローラは、第２のＥＣＣメモリ・デバイスがスペア・メモリ・デバイスとなるようにシングル・チャネル・モードで第１のメモリ・デバイスおよび第２のメモリ・デバイスを駆動し、第１のＥＣＣメモリ・デバイスは第１のメモリ・デバイスおよび第２のメモリ・デバイスを保護する。メモリ・コントローラは、デュアル・チャネル・モードとシングル・チャネル・モードとの間で切り替えるように構成される。【選択図】図４
2021509499.tif 000002
【特許請求の範囲】
【請求項１】
メモリ・コントローラを動作させる方法であって、
前記メモリ・コントローラによって、前記メモリ・コントローラの第１のメモリ・デバイスおよび第２のメモリ・デバイスをデュアル・チャネル・モードで駆動することであって、第１の誤り訂正符号（ＥＣＣ）メモリ・デバイスおよび第２のＥＣＣメモリ・デバイスは、前記第１のメモリ・デバイスおよび前記第２のメモリ・デバイスを保護する、前記駆動することと、
前記メモリ・コントローラによって、前記第２のＥＣＣメモリ・デバイスがスペア・メモリ・デバイスとなるように、前記第１のメモリ・デバイスおよび前記第２のメモリ・デバイスをシングル・チャネル・モードで駆動することであって、前記第１のＥＣＣメモリ・デバイスは前記第１のメモリ・デバイスおよび前記第２のメモリ・デバイスを保護する、前記駆動することと
を含み、前記メモリ・コントローラは、前記デュアル・チャネル・モードと前記シングル・チャネル・モードとの間で切り替えるように構成される、方法。
【請求項２】
前記第１のメモリ・デバイスおよび前記第２のメモリ・デバイスは、ダイナミック・ランダム・アクセス・メモリ（ＤＲＡＭ）である、請求項１に記載の方法。
【請求項３】
前記第１のメモリ・デバイスおよび前記第２のメモリ・デバイスは、ＤＲＡＭデュアル・イン・ライン・メモリ・モジュール（ＤＩＭＭ）である、請求項１に記載の方法。
【請求項４】
前記第１のメモリ・デバイスは、データ記憶のために構成された第１のデータ・メモリ・デバイスと、誤り訂正のために構成された前記第１のＥＣＣメモリ・デバイスとを備え、
前記第２のメモリ・デバイスは、データ記憶のために構成された第２のデータ・メモリ・デバイスと、誤り訂正のために構成された前記第２のＥＣＣメモリ・デバイスとを備える、請求項１に記載の方法。
【請求項５】
前記メモリ・コントローラは、前記第２のＥＣＣメモリ・デバイスが前記スペア・メモリ・デバイスとなるように、前記シングル・チャネル・モード中に前記第２のＥＣＣメモリ・デバイスを使用不可能にするように構成される、請求項４に記載の方法。
【請求項６】
前記メモリ・コントローラは、前記第１のメモリ・デバイスおよび前記第２のメモリ・デバイスから故障したメモリ・デバイスを検出するように構成され、
前記メモリ・コントローラは、前記スペア・メモリ・デバイスが前記故障したメモリ・デバイスの代わりに動作するように、前記故障したメモリ・デバイスを前記スペア・メモリ・デバイスと置き換えるように構成される、請求項５に記載の方法。
【請求項７】
前記故障したメモリ・デバイスの検出に応答して、前記メモリ・コントローラは、前記スペア・メモリ・デバイスに、前記第１のデータ・メモリ・デバイス、前記第１のＥＣＣメモリ・デバイスおよび前記第２のメモリ・デバイスのうちの任意の１つの代わりに動作させるように構成される、請求項６に記載の方法。
【請求項８】
前記第１のデータ・メモリ・デバイスは３２ビット幅データ・インタフェースを有し、前記第２のデータ・メモリ・デバイスは別の３２ビット幅データ・インタフェースを有する、請求項４に記載の方法。
【請求項９】
前記シングル・チャネル・モード中、前記メモリ・コントローラは、前記第１のＥＣＣメモリ・デバイスに、前記第１のデータ・メモリ・デバイスおよび前記第２のデータ・メモリ・デバイスの双方について６４ビット幅データ・インタフェースを保護させるように構成され、前記６４ビット幅データ・インタフェースは、前記３２ビット幅データ・インタフェースおよび前記別の３２ビット幅データ・インタフェースを含む、請求項８に記載の方法。
【請求項１０】
第１のＥＣＣメモリ・デバイスは８ビットである、請求項９に記載の方法。
【請求項１１】
デュアル・チャネル・モードからシングル・チャネル・モードに切り替える方法であって、前記方法は、
メモリ・コントローラによって、メモリ・モジュールの動作の前記デュアル・チャネル・モードから前記シングル・チャネル・モードへの切替えが必要であると判断することであって、前記メモリ・モジュールは、第１のチャネルおよび第２のチャネルにおいてメモリ・デバイスを含む、前記判断することと、
前記メモリ・コントローラによって、前記デュアル・チャネル・モードから前記シングル・チャネル・モードに切り替えることと
を含み、前記切り替えることは、
前記メモリ・モジュールの前記メモリ・デバイスから全てのデータを読み出すことと、
前記メモリ・モジュールの前記メモリ・デバイスからストレージにデータをロードすることと、
前記メモリ・デバイスの２つの誤り訂正符号（ＥＣＣ）メモリ・デバイスの代わりに単一のＥＣＣメモリ・デバイスを用いて前記第１のチャネルおよび前記第２のチャネルを保護することによって、前記メモリ・デバイスのスペアＥＣＣメモリ・デバイスが利用可能になるようにすることと、
故障メモリ・デバイスとの間で行われることを対象とした書込みおよび読出しが、代わりに前記スペアＥＣＣメモリ・デバイスとの間で行われる書込みおよび読出しとなるように、前記故障メモリ・デバイスの入力および出力を前記スペアＥＣＣメモリ・デバイスにマッピングすることと、
前記故障メモリ・デバイスを対象とするデータの一部分が代わりに前記スペアＥＣＣメモリ・デバイスに書き込まれるように、前記ストレージからのデータを前記メモリ・モジュールの前記メモリ・デバイスに戻して書き込むことと
を含む、方法。
【請求項１２】
前記メモリ・コントローラは、前記メモリ・モジュール上でスペア・メモリ・デバイスが利用可能でない前記デュアル・チャネル・モードでの動作中に所定のトリガが生じることを認識することによって、前記メモリ・モジュールの動作を前記デュアル・チャネル・モードから前記シングル・チャネル・モードに切り替えることが必要であると判断するように構成され、
前記所定のトリガは、前記メモリ・デバイスの任意の１つにおける１ビット誤り率が所定の閾値に達するときに生じる、請求項１１に記載の方法。
【請求項１３】
前記故障メモリ・デバイスは、前記所定のトリガを発生させる、請求項１２に記載の方法。
【請求項１４】
メモリ・コントローラであって、
メモリ・モジュールを制御するように構成された回路であって、前記回路は、請求項１ないし１３のいずれかに記載の方法を実行するように構成される、前記回路を備える、メモリ・コントローラ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般に、メモリ・モジュールに関し、より詳細には、メモリ・モジュールにおいて、デュアル・チャネル・メモリ（dual channel memory）をスペア・メモリとなるようにシングル・チャネル・メモリ（single channel memory）として使用することに関する。
【背景技術】
【０００２】
デュアル・イン・ライン・メモリ・モジュール（ＤＩＭＭ：dual in-line memory module）は、一連のダイナミック・ランダム・アクセス・メモリ（ＤＲＡＭ）集積回路を含む。これらのＤＩＭＭは、プリント回路基板に搭載され、例えば、パーソナル・コンピュータ、ワークステーションおよびサーバにおいて用いるように設計される。ＤＩＭＭは、最新技術のプロセッサにおける主流のメモリ型として、ＳＩＭＭ（シングル・イン・ライン・メモリ・モジュール）に置き換わった。ＳＩＭＭにおける接点はモジュールの両側で冗長であるのに対し、ＤＩＭＭは各側で別個の電気接点を有する。別の差異は、標準的なＳＩＭＭが３２ビット・データ経路を有する一方で、標準的なＤＩＭＭは６４ビット・データ経路を有することである。多くのプロセッサは６４ビット・バス幅を有し、データ・バスを実装するために、ＳＩＭＭが整合したペアで設置されることを必要とする。そして、プロセッサは２つのＳＩＭＭに並列にアクセスする。しかしながら、ＳＩＭＭのこの不利な点を排除するためにＤＩＭＭが導入された。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
本発明は、メモリ・コントローラを動作させる方法、デュアル・チャネル・モードからシングル・チャネル・モードに切り替える方法、およびメモリ・コントローラを提供する。
【課題を解決するための手段】
【０００４】
本発明の実施形態のメモリ・コントローラを動作させる方法は、メモリ・コントローラによって、メモリ・コントローラの第１のメモリ・デバイスおよび第２のメモリ・デバイスをデュアル・チャネル・モードで駆動することを含み、第１の誤り訂正符号（ＥＣＣ）メモリ・デバイスおよび第２のＥＣＣメモリ・デバイスは、第１のメモリ・デバイスおよび第２のメモリ・デバイスを保護する。方法は、メモリ・コントローラによって、第２のＥＣＣメモリ・デバイスがスペア・メモリ・デバイス（spare memory device）となるように、第１のメモリ・デバイスおよび第２のメモリ・デバイスをシングル・チャネル・モードで駆動することを含む。第１のＥＣＣメモリ・デバイスは第１のメモリ・デバイスおよび第２のメモリ・デバイスを保護し、メモリ・コントローラは、デュアル・チャネル・モードとシングル・チャネル・モードとの間で切り替えるように構成される。
【０００５】
本発明の実施形態のメモリ・コントローラは、メモリ・モジュールを制御するように構成された回路を含む。ここで、回路は、第１のメモリ・デバイスおよび第２のメモリ・デバイスをデュアル・チャネル・モードで駆動するように構成され、第１の誤り訂正符号（ＥＣＣ）メモリ・デバイスおよび第２のＥＣＣメモリ・デバイスは、第１のメモリ・デバイスおよび第２のメモリ・デバイスを保護する。回路は、第２のＥＣＣメモリ・デバイスがスペア・メモリ・デバイスとなるように、第１のメモリ・デバイスおよび第２のメモリ・デバイスをシングル・チャネル・モードで駆動するように構成される。ここで、第１のＥＣＣメモリ・デバイスは第１のメモリ・デバイスおよび第２のメモリ・デバイスを保護し、回路は、デュアル・チャネル・モードとシングル・チャネル・モードとの間で切り替えるように構成される。
【０００６】
本発明の実施形態のデュアル・チャネル・モードからシングル・チャネル・モードに切り替える方法は、メモリ・コントローラによって、メモリ・モジュールの動作のデュアル・チャネル・モードからシングル・チャネル・モードへの切替えが必要であると判断することであって、メモリ・モジュールは、第１のチャネルおよび第２のチャネルにおいてメモリ・デバイスを含む、判断することと、メモリ・コントローラによって、デュアル・チャネル・モードからシングル・チャネル・モードに切り替えることとを含む。切り替えることは、メモリ・モジュールのメモリ・デバイスから全てのデータを読み出すことと、メモリ・モジュールのメモリ・デバイスからストレージにデータをロードすることと、メモリ・デバイスの２つの誤り訂正符号（ＥＣＣ）メモリ・デバイスの代わりに単一のＥＣＣメモリ・デバイスを用いて第１のチャネルおよび第２のチャネルを保護することによって、メモリ・デバイスのスペアＥＣＣメモリ・デバイスが利用可能になるようにすることと、故障メモリ・デバイスとの間で行われることを対象とした書込みおよび読出しが、代わりにスペアＥＣＣメモリ・デバイスとの間で行われる書込みおよび読出しとなるように、故障メモリ・デバイスの入力および出力をスペアＥＣＣメモリ・デバイスにマッピングすることとを含む。切り替えることは、故障メモリ・デバイスを対象とするデータの一部分が代わりにスペアＥＣＣメモリ・デバイスに書き込まれるように、ストレージからのデータをメモリ・モジュールのメモリ・デバイスに戻して書き込むことを含む。
【図面の簡単な説明】
【０００７】
【図１】メモリ・コントローラに接続されたメモリ・モジュールの概略図である。
【図２】実施形態による、変更されたメモリ・コントローラに接続されたメモリ・モジュールの概略図である。
【図３】実施形態による、変更されたメモリ・コントローラに接続された、変更されたメモリ・モジュールの概略図である。
【図４】実施形態による、メモリ・コントローラを動作させるための方法のフロー・チャートである。
【図５】実施形態による、メモリ・コントローラを構成する方法のフロー・チャートである。
【図６】実施形態による、デュアル・チャネル・モードをシングル・チャネル・モードに切り替える方法のフロー・チャートである。
【発明を実施するための形態】
【０００８】
本明細書では、関連する図面を参照して、本発明の様々な実施形態が説明される。本発明の範囲を逸脱することなく、本発明の代替の実施形態を考案することができる。以下の説明および図面において、要素間の様々な接続および位置関係（例えば、上、下、隣接等）が示される。それらの接続または位置関係あるいはその両方は、特に規定されない限り、直接的または間接的であることができ、この点において限定するよう意図されていない。したがって、実体の結合は、直接的結合または間接的結合を指すことができ、実体間の位置関係は、直接的位置関係または間接的位置関係であることができる。間接的な位置関係の例として、層「Ｂ」の上に層「Ａ」を形成することへの言及は、層「Ａ」および層「Ｂ」の関連する特徴および機能性が中間層によって実質的に変化しない限り、１つまたは複数の中間層（例えば層「Ｃ」）が層「Ａ」と層「Ｂ」との間にある状況を含む。
【０００９】
本発明の様々な実施形態の説明は、例示の目的で提示されているが、網羅的であることも、開示された実施形態に限定されることも意図されていない。記載された実施形態の範囲および思想を逸脱することなく、多くの変更および変形が当業者にとって明らかとなる。本明細書で使用された用語は、実施形態の原理、実際の適用、または市場で見られる技術を超える技術的改良を最も適切に説明するため、または他の当業者が本明細書に記載された実施形態を理解できるようにするために選択されている。
【００１０】
「約」という用語およびその変形形態は、本願書の出願時に使用できる機器に基づいて、特定の量の測定に関連付けられた誤差の程度を含むよう意図されている。例えば、「約」は、所与の値の±８％または５％、あるいは２％の範囲を含むことができる。
【００１１】
ハイ・エンドおよびロー・エンドのコンピューティング・システムは、ほとんどの場合に、ダブル・データ・レート（ＤＤＲ）同期ＤＲＡＭ（ＳＤＲＡＭ）として一般的に知られるもの等の高速メモリ・インタフェースを利用する。ＤＤＲメモリおよび関連インタフェースは、合同電子デバイス委員会（ＪＥＤＥＣ）として知られる産業標準規格本体による制約を受ける。ＤＤＲメモリはＪＥＤＥＣを通じて標準化されているが、ＤＤＲメモリ・サブシステムを用いるハイ・エンドおよびロー・エンド・コンピュータ・システムの需要は非常に異なる。例えば、ロー・エンド・パーソナル・コンピュータ（ＰＣ）対ハイ・エンド・メインフレームを検討するとき、復元可能性、利用可能性、およびサービス可能性（ＲＡＳ）、電力／熱、ならびに性能（帯域幅、レイテンシ、速度）需要は非常に異なる。よりロー・エンドのコンピュータ・システムは、ハイ・エンド・コンピュータ・システムよりもはるかに大きい販売ボリュームを有するため、よりロー・エンドのシステム要件は、ＤＤＲ  ＳＤＲＡＭモジュールのＤＩＭＭ定義の標準化において、より大きい重みを有する。この結果、よりロー・エンドでコストの低いコンピュータ・システム（ＰＣ等）についてＤＲＡＭ  ＤＩＭＭが最適化されることになる。より高いレベルのＲＡＳを必要とする場合があり、ＤＲＡＭデバイスのスペア処理を含む場合がある、よりハイ・エンドのコンピュータ・システムは、カスタマイズされたＤＩＭＭを展開する余地が残され、それによってシステムコストが大幅に増大する。実施形態は、（よりロー・エンドのコンピュータ・システムのために最適化された）デュアル・メモリ・チャネルＤＲＡＭ  ＤＩＭＭを、スペア処理を用いたシングル・チャネルＤＩＭＭとして用いる方法およびシステムを提供する。これにより、よりハイ・エンドのコンピュータ・システムが、依然としてより高レベルのＲＡＳを達成しながら、より低コストのＤＩＭＭを利用することが可能になる。よりロー・エンドのコンピュータ・システムは、スペア・メモリ・デバイスを必要としないＤＩＭＭ（メモリ・モジュール）を有する。しかしながら、よりロー・エンドのコンピュータ・システムのために設計された同じＤＩＭＭを用いて、実施形態は、スペア・メモリ・デバイス（すなわち、スペアＤＲＡＭアレイ）を作成することによってＤＩＭＭのＲＡＳを改善するように構成される。
【００１２】
最新技術において、同じアドレスが双方のチャネルに提示される「ロックステップ」において実行されるデュアル・チャネル・メモリ・システムが存在する。最新技術は、２つのＤＩＭＭの使用を必要とする。しかしながら、実施形態は、デュアル・チャネル・メモリ・システムが、同じアドレスが双方のチャネルに提示される「ロックステップ」において実行されている間であっても、１つのみのＤＩＭＭを利用する。実施形態は、単一のデュアル・チャネルＤＩＭＭを、スペア・メモリ・デバイスの利点が加わったシングル・チャネルＤＩＭＭ（ロックステップにおいて２つのチャネルに類似している）として使用することを可能にする。スペア・メモリ（ＤＲＡＭ）デバイスに加えて、スペアＲＣＤデバイスも展開することができる。いくつかの実施形態では、スペアＲＣＤおよびスペアＤＲＡＭメモリ・デバイスは、ＲＣＤデバイスおよびスペアの双方がデュアル・チャネルＤＩＭＭ上でアクティブである状態で２つの別個のチャネルを実行することと比較して、電力を節減するように使用不可能にされ得る。現行のＤＤＲ  ＤＩＭＭ技術をペアで用いる最新技術のシステムは、スペア・デバイスを可能にしない。更に、実施形態は、シングルＲＣＤおよびデュアルＲＣＤについて実行することができる。
【００１３】
図１は、メモリ・コントローラ１１０に接続されたメモリ・モジュール１００の概略図である。メモリ・モジュール１００は、ＤＤＲ５  ＤＩＭＭとすることができる。この例において、メモリ・モジュール１００はチャネル０およびチャネル１を有する。チャネル０はメモリ・デバイス１０２Ａを含むのに対し、チャネル１はメモリ・デバイス１０２Ｂを含む。メモリ・デバイス１０２Ａおよび１０２Ｂは、当業者によって理解されるＤＲＡＭの各アレイである。メモリ・デバイス１０２Ａおよび１０２Ｂの各々は、８倍を意味する指定「×８」を有する８ビット幅チップとして示される。メモリ・デバイスは４ビット幅チップ（すなわち、×４）であってもよいことが理解されるべきである。更に、メモリ・モジュールは、×８メモリ・デバイスから構成されて示されているが、メモリ・モジュール１００は、×４、×８、×１６、×３２または任意の組合せを含む他の幅のＤＲＡＭデバイス（メモリ・デバイス１０２Ａおよび１０２Ｂ等）から構成されてもよい。図１におけるメモリ・モジュール１００は、２つのコマンド・バスで示されるが、１つまたは２つより多くのコマンド・アドレス・バスを有し得る。
【００１４】
チャネルは、ローカル・メモリ・コントローラ・レベルとして最高レベルの構造である。コンピュータは、２つ、３つまたはそれ以上のチャネルを有することができるが、この例では２つのチャネルが示される。チャネル０における各メモリ・デバイスは、チャネル１における同じロケーションに、整合するメモリ・デバイスを有する。
【００１５】
チャネル０は、専用誤り訂正符号（ＥＣＣ）メモリ・デバイス１０２Ａを有するのに対し、他のメモリ・デバイス１０２Ａはデータ・メモリ・デバイスである。同様に、チャネル１は、専用誤り訂正符号（ＥＣＣ）メモリ・デバイス１０２Ｂを有するのに対し、他のメモリ・デバイス１０２Ｂはデータ・メモリ・デバイスである。チャネル０におけるデータ・メモリ・デバイス１０２Ａと、チャネル１におけるデータ・メモリ・デバイス１０２Ｂは、当業者に理解されるように（読出しおよび書込みのために）データを記憶するように構成される。ＥＣＣメモリ・デバイス１０２Ａは、データ・メモリ・デバイス１０２Ａのための誤り保護を提供するように構成される。ＥＣＣメモリ・デバイス１０２Ｂは、データ・メモリ・デバイス１０２Ｂのための誤り保護を提供するように構成される。メモリ・モジュール１００において、チャネルあたり２つの３２ビット・データが存在する。これは、読出しまたは書込みのために、チャネル０における４つのデータ・メモリ・デバイス１０２Ａが、メモリ・コントローラ１１０に３２ビット幅データ・インタフェース（チャネルあたり×３２データ）を提供し、チャネル１における４つのデータ・メモリ・デバイス１０２Ｂが、メモリ・コントローラ１１０に３２ビット幅データ・インタフェース（チャネルあたり×３２データ）を提供することを意味する。バースト長（ＢＬ）は１６とすることができ、１つの読出しまたは書込みにわたって、６４Ｂの総データ転送について３２ｂの１６個の転送が存在する。単一のＥＣＣメモリ・デバイス（ＥＣＣメモリ・デバイス１０２ＡまたはＥＣＣメモリ・デバイス１０２Ｂ等）について、チャネルあたり追加の８ビット（×８）ＥＣＣメモリ・デバイスが必要とされるように、３２ビットのデータにわたる誤り訂正符号は７ビットのＥＣＣメモリを要する。したがって、単一のＥＣＣメモリ・デバイス（ＥＣＣメモリ・デバイス１０２ＡまたはＥＣＣメモリ・デバイス１０２Ｂ等）は、シングル・チャネル（３２ビット・データ・チャネル）のみを保護することができる。したがって、ＥＣＣメモリ・デバイス１０２Ａは、４つのデータ・メモリ・デバイス１０２Ａを保護し（すなわち、４×８＝３２ビットである３２ビット・データ・チャネルを保護し）、ＥＣＣメモリ・デバイス１０２Ｂは、４つのデータ・メモリ・デバイス１０２Ｂを保護する（すなわち、３２ビット・データ・チャネルを保護する）。したがって、メモリ・モジュール１００は、ＥＣＣメモリ・デバイス１０２ＡおよびＥＣＣメモリ・デバイス１０２Ｂとして示される２つのＥＣＣメモリ・デバイスを要する。
【００１６】
メモリ・デバイス１０２Ａおよび１０２Ｂに記憶されるデータは、ＥＣＣデバイス内に記憶された誤り訂正符号（ＥＣＣ）によって保護され、ＥＣＣ符号は、多くのタイプのコンピュータ・データ・ストレージと共に、最も一般的な種類のデータ破損を検出し、訂正するのに一般的に用いられる。追加のメモリビットを含むＤＲＡＭモジュール（ＥＣＣメモリ・デバイス１０２Ａおよび１０２Ｂ）と、これらのビットを利用するメモリ・コントローラ１１０とを用いることによって、問題を軽減することができる。これらの追加ビットは、パリティを記録するのに用いられる（すなわち、誤り訂正符号を用いる）。パリティにより、全ての単一ビット誤り（実際は、任意の奇数の誤りビット）の検出が可能になる。最も一般的な誤り訂正符号である１ビット誤り訂正・２ビット誤り検出（ＳＥＣＤＥＤ：single-error correction and double-error detection）ハミング符号は、（通常の構成では、追加のパリティ・ビットを用いて）１ビット誤りが補正され、２ビット誤りが検出されることを可能にする。
【００１７】
レジスタリング／レジスタ・クロック・ドライバ（ＲＣＤ）１１２は、チャネル０およびチャネル１の双方に接続される。ＲＣＤ１１２は、メモリ・モジュール１００上のチップとすることができる。ＲＣＤ１１２は、チャネル０コマンド・アドレス（ＣＡ）バス２１０Ａを介したチャネル０におけるデータ・メモリ・デバイス１０２Ａへのルーティングおよびロード、ならびにチャネル１コマンド・アドレス（ＣＡ）バス２１０Ｂを介したチャネル１におけるデータ・メモリ・デバイス１０２Ｂへのルーティングおよびロードのために構成される。レジスタリング／レジスタ・クロック・ドライバ１１２は、バッファ・デバイスでもある。ＲＣＤ１１２は、（データ・メモリ・デバイスおよびＥＣＣメモリ・デバイスの双方を含む）メモリ・デバイス１０２Ａに接続される。ＲＣＤ１１２は、（データ・メモリ・デバイスおよびＥＣＣメモリ・デバイスの双方を含む）メモリ・デバイス１０２Ｂに接続される。
【００１８】
ＲＣＤ１１２は、当業者によって理解されるような、最新技術における業界標準ＤＩＭＭのための、チャネル０を制御するためのロジック１５０Ａと、チャネル１を制御するためのロジック１５０Ｂとを含む。通常のデュアル・チャネル・モードにおいて、チャネル０ロジック１５０Ａは、ＤＩＭＭの一方の側（チャネル０）でメモリ・コントローラ１１０から所望のメモリ・デバイス１０２Ａへコマンドおよびアドレス情報を渡し、他方の側（チャネル１）でメモリ・コントローラ１１０から所望のメモリ・デバイス１０２Ｂへコマンドおよびアドレス情報を渡す。
【００１９】
メモリ・コントローラ１１０は、ＲＣＤ１１２へのコマンド・アドレス（ＣＡ）ライン（ＣＨＯバス２１０Ａ、ＣＨ１バス２１０Ｂである）を介してメモリ・モジュール１００と通信するように構成される。読出しおよび書込みコマンドは、ロジック１５０Ａを介してチャネル０についてメモリ・コントローラ１１０からＲＣＤ１１２へ発行され、ロジック１５０Ｂを介してチャネル１についてメモリ・コントローラ１１０からＲＣＤ１１２へ発行される。例えば、書込みは、（ＣＨ０バス２１０Ａを介して）チャネル０において生じ得るのに対し、読出しは、メモリ・モジュール１００の（ＣＨ１バス２１０Ｂを介して）チャネル１において生じている。したがって、メモリ・デバイス１０２Ａおよびメモリ・デバイス１０２Ｂ（すなわち、ＤＲＡＭ）を制御するためにメモリ・コントローラ１１０によって用いられるソフトウェアの全ては、ＲＣＤ１１２を通じたものである。メモリ・コントローラ１１０は、メモリ・モジュール１００（例えば、ＤＤＲ５  ＤＩＭＭ）に接続するための物理層インタフェース（ＰＨＹ）を有するＤＤＲ５メモリ・コントローラとすることができる。当業者に理解されているように、現在の規格はＤＤＲ４からＤＤＲ５に遷移している。更に、メモリ・デバイス１０２Ａおよび１０２Ｂの各々は、ＤＱＳおよびＤＱ×８を介してメモリ・コントローラ１１０に接続される。ここで、ＤＱＳはデータ・ストローブであり、ＤＱ×８は８ビット単位のデータである。
【００２０】
図２は、実施形態による、変更されたメモリ・コントローラ１１０に接続されたメモリ・モジュール１００の概略図である。メモリ・コントローラ１１０は、本明細書において論考された追加の機能と合わせて上記で論考されたメモリ・コントローラ１１０の機能を含むことができる。メモリ・モジュール１００をデュアル・チャネル・メモリとして（すなわち、別個の３２ビット・データ・チャネル０および別個の３２ビット・データ・チャネル１として）動作させる代わりに、メモリ・コントローラ１１０は、メモリ・モジュール２００を切り替えて、単一の６４ビット・データ・チャネル０を有するシングル・チャネルとして動作させるように構成される。換言すれば、メモリ・コントローラ１１０は、メモリ・モジュール１００をデュアル・チャネル・メモリ・モードで動作させることから、シングル・チャネル・メモリ・モードで動作させることに切り替えるように構成される（逆もまた同様）。説明の目的で、単一の６４ビット・データ・チャネル０が示されているが、単一の６４ビット・データ・チャネル０は実際にはチャネル０および１の双方であることが理解される。
【００２１】
通常のデュアル・チャネル・モードでは、メモリ・コントローラ１１０は、チャネル０のメモリ・デバイス１０２ＡのためのＣＨ０コマンド・アドレス・バス２１０Ａを介してＲＣＤ１１２のチャネル０ロジック１５０Ａにコマンドおよびアドレス情報を発行するように構成される。同様に、メモリ・コントローラ１１０は、デュアル・チャネル・モードにおいて、チャネル１のメモリ・デバイス１０２ＢのためのＣＨ１コマンド・アドレス・バス２１０Ｂを介してＲＣＤ１１２のチャネル１ロジック１５０Ｂにコマンドおよびアドレス情報を発行するように構成される。デュアル・チャネル・モードでは、ＥＣＣメモリ・デバイス１０２ＡおよびＥＣＣメモリ・デバイス１０２Ｂである２つのＥＣＣメモリ・デバイスが必要とされる。しかしながら、シングル・チャネル・モードにおいてチャネル０および１の双方を１つのチャネル（例えば、チャネル０）として組み合わせるとき、メモリ・コントローラ１１０は、チャネル０および１の双方に同時に同じコマンドおよびアドレス情報を発行し、これらをシングル・チャネル・モードにおいて１つの大きいチャネルとして（すなわち、６４ビット幅のデータ・チャネルとして）動作させるように構成され、このコマンドおよびアドレス情報は、ＣＨ０バス２１０ＡおよびＣＨ１バス２１０Ｂに対し同時に（またはほぼ同時に）発行される。以下で更に論考されるように、シングル・チャネル・モードでは、ＥＣＣメモリ・デバイス１０２ＡまたはＥＣＣメモリ・デバイス１０２Ｂのいずれかとすることができる１つのＥＣＣメモリ・デバイスのみが必要とされる。説明の目的で、誤り訂正符号メモリについてＥＣＣメモリ・デバイス１０２Ａが指定されている。
【００２２】
図２に示すように、実施形態は、バースト長（ＢＬ）８を有することができる、チャネルあたり×６４データで駆動されたメモリ・モジュール１００を提供する。ここで、ＢＬ８は、メモリ・デバイス／モジュール１００からのデータの８つのバーストを意味し、デバイスが×８である場合、データの８つのバーストは、６４ｂのデータに等しい。一般的なＤＤＲ４メモリ・システムでは、メモリ・デバイスは、６４ｂ幅インタフェースを含み、標準的なデータ送信は、８つのバーストにわたる６４ｂのデータに等しいＢＬ８であり、これは６４バイトのデータに等しい。ＤＤＲ５メモリ・システムでは、１つの３２ビット幅メモリ・チャネルにわたるデータ送信が、バーストあたり３２ビットの１６個のバーストとなる、ＢＬ１６が存在する場合があり、ここでもまた、これはＤＤＲ４メモリ・システムにおけるような６４バイトに等しい。ＢＬ４またはＢＬ３２等の他のバースト長も可能である。バースト長は、各送信において中央プロセッサ・ユニット（すなわちプロセッサ）とメモリとの間で転送されるデータ量である。図２において、書込みまたは読出しあたり合計で６４バイトについて、バーストあたり６４ビットのデータのＢＬ８送信が存在するが、他のＢＬ長も実施形態に含まれる。したがって、（保護する）６４ビットのデータにわたる誤り訂正符号は、８ビットを必要とし、これは、６４ビットのデータを保護することが、シングル・チャネル・モードにおいて１つの×８ＥＣＣメモリ・デバイス１０２Ａまたは１０２Ｂ（ただし両方ではない）を要することを意味する。このため、１つのＢＬ８送信中に、合計で８バイトのＥＣＣデータが存在する。実施形態によれば、メモリ・コントローラ１１０は、追加のＥＣＣメモリ・デバイスをスペア・メモリ・デバイス（スペア・データ・メモリ・デバイスまたはスペアＥＣＣメモリ・デバイスあるいはその両方として利用可能であり、この理由は、これらは共に、異なる目的で用いられるが同じメモリ・デバイスであるためである）として用いるように構成される。メモリ・コントローラ１１０は、（シングル・チャネル・モードにおいて）単一の６４ビット・データ・チャネルについての誤り訂正符号メモリのためにＥＣＣメモリ・デバイス１０２Ａおよび１０２Ｂのうちの一方を利用するのに対し、他方の使用されないＥＣＣメモリ・デバイスをスペアとする（ＥＣＣのために利用されない）ように構成される。例示の目的で、６４ビット・データ・インタフェースを保護するＥＣＣメモリ・デバイスとしての動作対スペア・メモリ・デバイスとしての動作を強調するために、ＥＣＣメモリ・デバイス１０２Ａは２０２Ａとして指定され、ＥＣＣメモリ・デバイス１０２Ｂは２０２Ｂとして指定される。メモリ・デバイス１０２ＡのＥＣＣメモリ・デバイス２０２Ａは、シングル・チャネル・モードにおいて単一の６４ビット・データ・チャネルのためのＥＣＣメモリ・デバイスとして動作することができるのに対し、メモリ・デバイス１０２ＢのＥＣＣメモリ・デバイス２０２Ｂはスペア・メモリ・デバイスとして動作する。データ・メモリ・デバイス１０２Ａおよび１０２Ｂにおいて任意の１つのメモリ・デバイスが故障する場合、メモリ・コントローラ１１０は、スペア（ＥＣＣ）メモリ・デバイス２０２Ｂを利用して、故障したメモリ・デバイスを置き換えるように構成される。説明の目的であり限定ではないが、以下は、実施形態に従ってこれをどのように達成することができるかの例示的なシナリオである。メモリ・コントローラ１１０は、メモリ・デバイス１０２Ａもしくは１０２Ｂとメモリ・コントローラ１１０との接続間のメモリ送信失敗の繰返し、またはメモリ・デバイス１０２Ａもしくは１０２Ｂ内のメモリ・ストレージ・ロケーションの故障等の特定の条件時にスペア・デバイス２０２Ｂの使用を開始することができる。通常、故障は、データがメモリ・コントローラ１１０によって受信されるときに見つかり、メモリ・コントローラ１１０は、（例えば、ＥＣＣメモリ・デバイス２０２Ａを用いることによって）ＥＣＣ符号に対しデータをチェックし、誤りのあるデータを示す。一般的なＥＣＣ符号を用いて、１ビット・フェイル（bit fail）を訂正し、２ビット・フェイルを検出することができる。メモリ・コントローラ１１０は、このチェックを用いて、システム（メモリ・モジュール１００）内の故障のロケーションを特定することができる。特定のメモリ・デバイス１０２Ａまたは１０２Ｂの故障の検出時に、メモリ・コントローラ１１０は、そのデータ・メモリ・デバイス（例えば、１０２Ａまたは１０２Ｂにおける１つのデータ・メモリ・デバイス）を使用不可能にし、スペアＥＣＣメモリ・デバイス２０２Ｂを用いることを選択することができる。これは通例、誤りが依然として訂正可能である間に行われる。いくつかの実施形態では、メモリ・コントローラ１１０は、スペア・デバイス（すなわち、スペアＥＣＣメモリ・デバイス２０２Ｂ）を使用可能にし、次に、メモリ全体にわたって一連の読出し動作、次に書込み動作を行う。このスペア・デバイスにおいて、誤りのあるデバイス（例えば、１０２Ａまたは１０２Ｂにおける１つのデータ・メモリ・デバイス）からのデータが読み出され、訂正され、メモリに戻して書き込まれる。しかしながら、書込み時に、スペア・デバイス（すなわち、スペアＥＣＣメモリ・デバイス２０２Ｂ）は、故障デバイス（例えば、１０２Ａまたは１０２Ｂにおける１つのデータ・メモリ・デバイス）からの（またはこのデバイスを対象とする）データのコピーを得る。このメカニズムは、任意のメモリ・デバイスのデータがＤＩＭＭ上の別のメモリ・デバイスに書き込まれることを可能にする、プログラム可能なマルチプレクサ・ネットワーク２８０を必要とする場合がある。したがって、データ・メモリ・デバイス１０２Ａ、１０２Ｂが故障するかまたはＥＣＣメモリ・デバイス２０２Ａが故障する場合、メモリ・コントローラ１１０は、必要に応じて、データ・メモリ・デバイスまたはＥＣＣメモリ・デバイスとしてスペア・メモリ・デバイス２０２Ｂに切り替えることができる。メモリ・コントローラ１１０は、故障したメモリ・デバイスの代わりに、ＣＨ０バス２１０ＡおよびＣＨ１バス２１０Ｂを介してスペア・メモリ・デバイス２０２Ｂのアドレスに対し必要なコマンドを発行し、それによって、メモリ・モジュール１００がＲＡＳなしで（すなわち、スペア・メモリ・デバイス２０２Ｂなしで）元���設計された場合にＲＡＳを実装させるように構成される。
【００２３】
図２において、シングル・チャネルとしてのＤＤＲ５  ＤＩＭＭの動作は、ＤＤＲ５  ＤＩＭＭ（メモリ・モジュール１００）自体に対する変更を必要としない。しかしながら、メモリ・コントローラ１１０は、（バス２１０Ａおよび２１０Ｂを介して）チャネル０および１の双方に対し同じコマンドおよびアドレス（ＣＡ）を駆動し、単一の二重幅チャネルを生成するように構成され、ここで、メモリ・モジュール１００はスペア・メモリ・デバイス２０２Ｂを有することになる。いくつかの実施形態では、メモリ・コントローラ１１０は、ＥＣＣメモリ・デバイス２０２Ｂがスペアとして利用可能であるように、（メモリ・デバイス１０２Ｂの）ＥＣＣメモリ・デバイス２０２Ｂをオフにするか、またはＥＣＣメモリ・デバイス２０２Ｂが誤り訂正符号メモリとして機能することができないようにするか、あるいはその両方を行うように構成される。シングル・チャネル・モードにおいて、メモリ・チャネル１１０は、以前であればＥＣＣメモリ・デバイス２０２Ｂに対しアドレス指定されていた任意のコマンドをＥＣＣメモリ・デバイス２０２Ａに発行するように構成される。また、メモリ・デバイス１０２Ａおよび１０２Ｂのいずれか１つの故障時には、メモリ・コントローラ１１０は、データをスペア（ＥＣＣ）メモリ・デバイス２０２Ｂ上に保存するために、スペア（ＥＣＣ）メモリ・デバイス２０２Ｂに向けてコマンドをアドレス指定するようにも構成される。メモリ・コントローラ１１０は、本明細書において論考されるように機能するハードウェアとして回路２１４を用いて構成される。回路２１４は、本明細書において論考したように動作するためのロジック２１２、バッファ等を含むことができる。メモリ・コントローラ１１０は、当業者に理解されるように、メモリ・モジュールおよび中央処理ユニット（すなわち、図示されていないプロセッサ）に作動的に接続するための標準的なハードウェアを含む。１つの場合、ロジック２１２は、回路２１４が本明細書において論考されるように動作するためのロジック２１２を実行するように、ファームウェアまたはミニコードあるいはその両方を含むことができる。ロジック２１２は、実行可能命令、特定用途向け集積回路（ＡＳＩＣ）等の形態をとることができる。
【００２４】
メモリ・コントローラ１１０は、メモリ・モジュール１００をデュアル・チャネル・モードで動作させることと、シングル・チャネル・モードで動作させることとの間で往復して切り替えることができる。例えば、ユーザは、メモリ・コントローラ１１０上でシングル・チャネル・モードまたはデュアル・チャネル・モードあるいはその両方の設定を選択することができる。例えば、メモリ・コントローラ１１０がメモリ・デバイス１０２Ａおよび１０２Ｂにおいて故障したメモリ・デバイスを検出すると、メモリ・コントローラ１１０は、故障したメモリ・デバイスの代わりにスペア・メモリ・デバイス２０２Ｂを利用することができるように、デュアル・チャネル・モード（すなわち、チャネル０およびチャネル１を別個に動作させる）からシングル・チャネル・モードに切り替えるように構成することができる。説明の目的であり、限定ではないが、以下は、メモリ・コントローラ１１０をどのようにデュアル・チャネル・モードからシングル・チャネル・モードに切り替えることができるかの例示的なシナリオである。通常、デュアル・チャネル・モードで実行しているとき、各３２ｂ幅チャネル１０２Ａおよび１０２ＢはそのＥＣＣメモリ・デバイス（それぞれ、ＥＣＣメモリ・デバイス２０２Ａおよび２０２Ｂ）を用いてそれぞれのチャネル０および１における故障を検出し、訂正するため、スペア・デバイスは存在しない。しかしながら、１つの実施形態において、任意のデータ・メモリ・デバイスにおける１ビット誤り率が増大し始める（例えば、ビット誤り率が所定の閾値に到達する）場合、メモリ・コントローラ１１０は、所定の閾値に到達したことを、メモリ・コントローラ１１０が故障デバイスを外すようにスペア処理を行う必要があるトリガとして認識する。メモリ・コントローラ１１０は、故障デバイスを外すようにスペア処理を行うよう構成される。しかし、デュアル・チャネル構成ではスペア・デバイスが存在せず、メモリ・コントローラ１１０は、デュアル・チャネル・モードからシングル・チャネル・モードに切り替える（それによって、故障メモリ・デバイスの代わりに使用するためにスペア・メモリ・デバイスが利用可能となるようにする）ように構成される。デュアル・チャネル・システムにおいて、この切替えは、メモリ・コントローラ１１０が、双方のチャネルからＤＩＭＭからの全てのデータを読み出し（すなわち、メモリ・デバイス１０２Ａおよび１０２Ｂの双方から全てのデータを読み出し）、データをストレージ２８５（例えば、メイン・メモリ）内に配置し、メモリ・モジュール１００をシングル・チャネル・モードに切り替えることを要する場合がある。シングル・チャネル・モードでは、１つのＥＣＣデバイス（例えば、ＥＣＣメモリ・デバイス２０２Ａ）を要する１つの６４ｂ幅チャネルが存在し、１つのＥＣＣデバイスをスペア（例えば、スペアＥＣＣメモリ・デバイス２０２Ｂ）として使用されないままにする。メモリ制御部１１０は、故障デバイス（例えば、１つのデータ・メモリ・デバイス１０２Ａ（または１つのデータ・メモリ・デバイス１０２Ｂ））を、スペアとしての、使用されていないＥＣＣデバイス（例えば、スペアＥＣＣメモリ・デバイス２０２Ｂ）にマッピングし、次に、全てのメモリをＤＩＭＭに（それぞれのメモリ・デバイス１０２Ａおよび１０２Ｂ内に）戻して書き込むように構成される。
【００２５】
メモリ・コントローラ１１０は、標準的なＤＤＲ５  ＤＩＭＭ（メモリ・モジュール１００）を用いているとき、７ビットＥＣＣ符号を用いた２つの３２ビット・データ・チャネルのいずれか（すなわち、デュアル・チャネル・モード）で実行され、８ビットＥＣＣ符号および８ビット・スペア・メモリ・デバイスを用いた単一６４ｂチャネル（すなわち、シングル・チャネル・モード）に切り替えるように構成されることが理解されるべきである。一般的なＳＥＣＤＥＤ（１ビット誤り訂正・２ビット誤り検出）ＥＣＣ符号化では、フェイルを検出し訂正するのに要するビット数が減少し、チェックされているビット数が増大する。ＳＥＣＤＥＤ  ＥＣＣで３２ｂのデータをカバーするには、７ビットのＥＣＣ符号を要し、ＳＥＣＤＥＤ  ＥＣＣで６４ｂのデータをカバーするには、更なる１ビットのみのＥＣＣ符号を要し、合計８ビットとなる。デュアル・チャネル・モードは、ＣＨ０バス２１０ＡおよびＣＨ１バス２１０Ｂにおいて別個にかつ独立してコマンドおよびアドレス情報を発行する。シングル・チャネル・モードは、ＣＨ０バス２１０ＡおよびＣＨ１バス２１０Ｂの双方において同じコマンドおよびアドレス情報を発行する。
【００２６】
図３は、実施形態による、変更されたメモリ・コントローラ１１０に接続された、変更されたメモリ・モジュール１００の概略図である。図３は、メモリ・モジュール１００が２つ以上のＲＣＤを有する場合を示している。この場合、メモリ・モジュール１００は、ＲＣＤ２１２ＡおよびＲＣＤ２１２Ｂとして指定される２つのＲＣＤを有して示される。ＲＣＤ２１２Ａはチャネル１のためのロジック１５０Ａを有するのに対し、ＲＣＤ２１２Ｂはチャネル２のためのロジック１５０Ｂ
を有する。本明細書に論考したように、メモリ・コントローラ１１０は、デュアル・チャネル・モードでメモリ・モジュール１００を動作させるように構成される。デュアル・チャネル・モードでは、バス２１０Ａにおいて（ＲＣＤ２１２Ａのロジック１５０Ａを介して）メモリ・デバイス１０２Ａに発行されたコマンドおよびアドレス情報は、バス２１０Ｂにおいて（ＲＣＤ２１２Ｂのロジック１５０Ｂを介して）メモリ・デバイス１０２Ｂに発行されたコマンドおよび情報と独立している。独立とは、書込みコマンド等の１つのタイプのコマンドをＣＨ０バス２１０Ａに対し発行することができる一方で、読出しコマンド等の別のタイプのコマンドがＣＨ１バス２１０Ｂに対し同時に発行されることを意味する。メモリ・コントローラ１１０は、シングル・チャネル・モードでメモリ・モジュール１００を動作させるように構成される。シングル・チャネル・モードでは、バス２１０Ａおよび２１０Ｂの双方においてＲＣＤ２１２Ａおよび２１２Ｂのロジック１５０Ａおよび１５０Ｂを介してメモリ・デバイス１０２Ａおよび１０２Ｂに同じコマンドおよびアドレス情報が発行される。
【００２７】
コマンド・アドレスおよびデータ・バス２１０Ａおよび２１０Ｂは、シングル・エンド型であっても差動型であってもよい。
【００２８】
図４は、実施形態による、メモリ・コントローラ１１０を動作させるための方法のフロー・チャート４００である。ブロック４０２において、メモリ・コントローラ１１０は、第１のメモリ・デバイス１０２Ａおよび第２のメモリ・デバイス１０２Ｂをデュアル・チャネル・モードで駆動するように構成される。ここで、第１の誤り訂正符号（ＥＣＣ）メモリ・デバイス２０２Ａおよび第２のＥＣＣメモリ・デバイス２０２Ｂは、第１のメモリ・デバイス１０２Ａおよび第２のメモリ・デバイス１０２Ｂを保護する。
【００２９】
ブロック４０４において、メモリ・コントローラ１１０は、第２のＥＣＣメモリ・デバイス２０２Ｂがスペア・メモリ・デバイスとなるようにシングル・チャネル・モードで第１のメモリ・デバイス１０２Ａおよび第２のメモリ・デバイス１０２Ｂを駆動するように構成される。ここで、第１のＥＣＣメモリ・デバイス２０２Ａは第１のメモリ・デバイス１０２Ａおよび第２のメモリ・デバイス１０２Ｂを保護し、ここでメモリ・コントローラ１１０は、デュアル・チャネル・モードとシングル・チャネル・モードとの間で切り替えるように構成される。
【００３０】
メモリ・モジュール１００は、ダイナミック・ランダム・アクセス・メモリ（ＤＲＡＭ）である。メモリ・モジュールは、ＤＲＡＭデュアル・イン・ライン・メモリ・モジュール（ＤＩＭＭ）である。
【００３１】
第１のメモリ・デバイス１０２Ａは、データ記憶のために構成された第１のデータ・メモリ・デバイス１０２Ａと、誤り訂正のために構成された第１のＥＣＣメモリ・デバイス２０２Ａとを備える。第２のメモリ・デバイス１０２Ｂは、データ記憶のために構成された第２のデータ・メモリ・デバイス１０２Ｂと、誤り訂正のために構成された第１のＥＣＣメモリ・デバイス２０２Ｂとを備える。メモリ・コントローラ１１０は、第２のＥＣＣメモリ・デバイス２０２Ｂがスペア・メモリ・デバイスとなるように、シングル・チャネル・モード中に第２のＥＣＣメモリ・デバイス２０２Ｂを使用不可能にするように構成される。
【００３２】
メモリ・コントローラ１１０は、第１のメモリ・デバイス１０２Ａおよび第２のメモリ・デバイス１０２Ｂから故障したメモリ・デバイスを検出するように構成される。メモリ・コントローラ１１０は、スペア・メモリ・デバイスが、メモリ・モジュール１００内の故障したメモリ・デバイスの代わりに動作するように、故障したメモリ・デバイスをスペア・メモリ・デバイスと置き換えるように構成される。故障したメモリ・デバイスの検出に応答して、メモリ・コントローラ１１０は、スペア・メモリ・デバイスに、第１のデータ・メモリ・デバイス１０２Ａ、第１のＥＣＣメモリ・デバイス２０２Ａ、および第２のメモリ・デバイス１０２Ｂのうちの任意の１つの代わりに動作させるように構成される。
【００３３】
第１のデータ・メモリ・デバイス１０２Ａは、３２ビット幅データ・インタフェースを有し、第２のデータ・メモリ・デバイス１０２Ｂは、別の３２ビット幅データ・インタフェースを有する。シングル・チャネル・モード中、メモリ・コントローラ１１０は、第１のＥＣＣメモリ・デバイス２０２Ａに、第１のデータ・メモリ・デバイス１０２Ａおよび第２のデータ・メモリ・デバイス１０２Ｂの双方について６４ビット幅データ・インタフェースを保護させるように構成され、６４ビット幅データ・インタフェースは、３２ビット幅データ・インタフェースと、別の３２ビット幅データ・インタフェースとの組合せである。第１のＥＣＣメモリ・デバイス２０２Ａは８ビットであり、第２のＥＣＣメモリ・デバイス２０２Ｂは８ビットである。
【００３４】
図５は、実施形態による、メモリ・コントローラ１１０を構成する方法のフロー・チャート５００である。ブロック５０２において、メモリ・コントローラ１１０は、デュアル・チャネル・モードで動作するように構成される。ここで、デュアル・チャネル・モードで動作することは、７ビットの誤り訂正符号（ＥＣＣ）メモリ（ＥＣＣメモリ・デバイス２０２Ａおよび２０２Ｂ）を用いて２つの３２ビット・データ・チャネルを駆動することを含む。ＥＣＣメモリ・デバイス２０２Ａおよび２０２Ｂはそれぞれ８ビットを有するが、ＥＣＣメモリ・デバイス２０２Ａおよび２０２Ｂの各々において、８ビットのうち７ビットしか必要とされない。
【００３５】
ブロック５０４において、メモリ・コントローラ１１０は、シングル・チャネル・モードで動作するように構成され、ここで、シングル・チャネル・モードで動作することは、８ビット・スペア・メモリ・デバイス（例えば、ＥＣＣメモリ・デバイス２０２Ｂ）が利用可能であるように８ビットのＥＣＣメモリ（例えば、ＥＣＣメモリ・デバイス２０２Ａ）を用いて単一の６４ビットチャネルを駆動することを含む。ここで、メモリ・コントローラ１１０は、シングル・チャネル・モードおよびデュアル・チャネル・モードの双方で同時に動作しない。
【００３６】
図６は、実施形態による、デュアル・チャネル・モードからシングル・チャネル・モードに切り替える方法のフロー・チャート６００である。ブロック６０２において、メモリ・コントローラ１１０は、メモリ・モジュールの動作のデュアル・チャネル・モード（例えば、チャネル０およびチャネル１の双方を別個に動作させる）からシングル・チャネル・モードへの切替えが必要であると（例えば、回路２１４およびロジック２１２を介して）判断するように構成される。メモリ・モジュール１００は、第１のチャネル（例えば、チャネル０）および第２のチャネル（例えば、チャネル１）においてメモリ・デバイス１０２Ａおよび１０２Ｂを含む。
【００３７】
ブロック６０４において、メモリ・コントローラ１１０は、デュアル・チャネル・モードからシングル・チャネル・モード（例えば、チャネル０および１の双方をシングル・チャネル０として動作させる）に切り替えるように構成される。この切替えは、（ブロック６０６において）メモリ・モジュール１００のメモリ・デバイス１０２Ａおよび１０２Ｂから全てのデータを読み出すことと、（ブロック６０８において）メモリ・モジュール１００のメモリ・デバイス１０２Ａおよび１０２Ｂからストレージ／メイン・メモリ２８５にデータをロードすることと、（ブロック６１０において）メモリ・デバイス１０２Ａ、１０２Ｂの２つの誤り訂正符号（ＥＣＣ）メモリ・デバイスの代わりに（ＥＣＣメモリ・デバイス２０２Ａおよび２０２Ｂの双方の代わりに）単一のＥＣＣメモリ・デバイス２０２Ａを用いて第１のチャネル０および第２のチャネル１を保護することによって、メモリ・デバイスのスペアＥＣＣメモリ・デバイス２０２Ｂが利用可能になるようにすることと、（ブロック６１２において）故障メモリ・デバイスとの間で行われることを対象とした書込みおよび読出しが、代わりにスペアＥＣＣメモリ・デバイス２０２Ｂとの間で行われる書込みおよび読出しとなるように、故障メモリ・デバイス（例えば、１０２Ａまたは１０２Ｂからのメモリ・デバイスのうちの１つ）の入力および出力を（例えば、マルチプレクサ・ネットワーク２８０を介して）スペアＥＣＣメモリ・デバイス２０２Ｂにマッピングすることと、（ブロック６１４において）故障メモリ・デバイスを対象とするデータの一部／部分が代わりにスペアＥＣＣメモリ・デバイス２０２Ｂに書き込まれるように、ストレージ２８５からのデータをメモリ・モジュール１００のメモリ・デバイス１０２Ａおよび１０２Ｂに戻して書き込むこととを含む。
【００３８】
メモリ・コントローラ１１０は、メモリ・モジュール上でスペア・メモリ・デバイスが利用可能でないデュアル・チャネル・モードでの動作中に所定のトリガが生じることを認識することによって、メモリ・モジュールの動作をデュアル・チャネル・モードからシングル・チャネル・モードに切り替えることが必要であると判断するように構成される。所定のトリガは、メモリ・デバイスの任意の１つにおける１ビット誤り率が所定の閾値に達するときに生じる。故障メモリ・デバイスは、所定のトリガを発生させる。
【００３９】
技術的効果および利点は、標準メモリ・モジュールからスペア・メモリ・デバイスを提供するための構造および方法を含む。技術的効果および利点は、メモリ・コントローラが、標準的なＤＤＲ５  ＤＩＭＭを用いているとき、７ビットＥＣＣ符号を用いた２つの３２ビット・データ・チャネルのいずれかで実行され、８ビットＥＣＣ符号および８ビット・スペア・メモリ・デバイスを用いた単一の６４ビット・チャネルに切り替えるように構成されることを含む。更に、技術的利点により、元々ロー・エンド・コンピュータ用に設計されたＲＡＳを有しない（すなわち、スペア・メモリ・デバイスがない）メモリ・モジュールが、ハイ・エンド・コンピュータのためのＲＡＳを有する（すなわち、スペア・メモリ・デバイスを有する）メモリ・モジュールとして利用されることを可能にする。
【００４０】
本発明は、任意の可能な技術的詳細レベルの統合における、システム、方法、またはコンピュータ・プログラム製品、あるいはその組合せであってよい。コンピュータ・プログラム製品は、プロセッサに本発明の態様を実行させるためのコンピュータ可読プログラム命令を有するコンピュータ可読記憶媒体を含むことができる。
【００４１】
コンピュータ可読記憶媒体は、命令実行デバイスによる使用のために命令を保持し記憶することができる有形のデバイスとすることができる。コンピュータ可読記憶媒体は、例えば、限定ではないが、電子記憶デバイス、磁気記憶デバイス、光記憶デバイス、電磁記憶デバイス、半導体記憶デバイス、またはこれらの任意の適切な組合せであり得る。コンピュータ可読記憶媒体のより具体的な例の非網羅的なリストは、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ（ＲＡＭ）、読出専用メモリ（ＲＯＭ）、消去可能プログラマブル読出専用メモリ（ＥＰＲＯＭまたはフラッシュ・メモリ）、スタティック・ランダム・アクセス・メモリ（ＳＲＡＭ）、ポータブル・コンパクト・ディスク読出専用メモリ（ＣＤ−ＲＯＭ）、デジタル多用途ディスク（ＤＶＤ）、メモリ・スティック、フロッピー（Ｒ）・ディスク、パンチ・カード等の機械的に符号化されたデバイス、または命令が記録された溝の隆起構造、および上記の任意の適切な組合せを含む。本明細書で使用されるコンピュータ可読記憶媒体は、電波もしくは他の自由に伝播する電磁波、導波管もしくは他の伝送媒体を伝播する電磁波（例えば、光ファイバ・ケーブルを通過する光パルス）、または、ワイヤを介して送信される電気信号等の一時的な信号自体であると解釈されるべきではない。
【００４２】
本明細書に記載のコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体から、それぞれのコンピューティング／処理デバイスへ、または、例えばインターネット、ローカル・エリア・ネットワーク、広域ネットワーク、もしくはワイヤレスネットワーク、あるいはその組合せのようなネットワークを介して、外部コンピュータまたは外部記憶デバイスへダウンロードされ得る。ネットワークは、銅伝送ケーブル、光伝送ファイバ、ワイヤレス伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、またはエッジ・サーバ、あるいはその組合せを備え得る。各コンピューティング／処理デバイス内のネットワーク・アダプタ・カードまたはネットワーク・インタフェースは、ネットワークからコンピュータ可読プログラム命令を受信し、コンピュータ可読プログラム命令を、それぞれのコンピューティング／処理デバイス内のコンピュータ可読記憶媒体に記憶するために転送する。
【００４３】
本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セット・アーキテクチャ（ＩＳＡ）命令、機械命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、集積回路用の構成データ、または、Ｓｍａｌｌｔａｌｋ（Ｒ）、Ｃ＋＋等のようなオブジェクト指向プログラミング言語、および「Ｃ」プログラミング言語もしくは類似のプログラミング言語等の手続型プログラミング言語を含む、１つまたは複数のプログラミング言語の任意の組合せで記述されたソース・コードまたはオブジェクト・コードのいずれかであり得る。コンピュータ可読プログラム命令は、完全にユーザのコンピュータ上、部分的にユーザのコンピュータ上、独立型ソフトウェア・パッケージとして、部分的にユーザのコンピュータ上および部分的にリモート・コンピュータ上で、または全体的にリモート・コンピュータもしくはサーバ上で実行することができる。後者のシナリオでは、リモート・コンピュータは、ローカル・エリア・ネットワーク（ＬＡＮ）もしくは広域ネットワーク（ＷＡＮ）を含む任意のタイプのネットワークを介してユーザのコンピュータに接続することができるか、または（例えば、インターネット・サービス・プロバイダを使用してインターネットを通じて）外部コンピュータに接続することができる。いくつかの実施形態では、例えばプログラマブル・ロジック回路、フィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）、またはプログラマブル・ロジック・アレイ（ＰＬＡ）を含む電子回路は、本発明の態様を実行するために、電子回路を個人化するためにコンピュータ可読プログラム命令の状態情報を利用することによってコンピュータ可読プログラム命令を実行し得る。
【００４４】
本発明の態様は、本明細書において、本発明の実施形態に従って、方法、装置（システム）、およびコンピュータ・プログラム製品のフロー・チャート図またはブロック図あるいはその両方を参照して説明される。フロー・チャート図またはブロック図あるいはその両方の各ブロック、ならびにフロー・チャート図またはブロック図あるいはその両方におけるブロックの組合せが、コンピュータ可読プログラム命令によって実装され得ることが理解されるであろう。
【００４５】
これらのコンピュータ可読プログラム命令は、コンピュータまたは他のプログラマブル・データ処理装置のプロセッサを介して実行される命令が、フロー・チャートまたはブロック図あるいはその両方の１つまたは複数のブロックに指定される機能／動作を実施する手段を作り出すように、汎用コンピュータ、専用コンピュータ、または他のプログラマブル・データ処理装置のプロセッサに提供されてマシンを作り出すものであってよい。これらのコンピュータ可読プログラム命令は、命令が記憶されたコンピュータ可読記憶媒体がフロー・チャートまたはブロック図あるいはその両方の１つまたは複数のブロックに指定される機能／動作の態様を実施する命令を含んでいる製造品を備えるように、コンピュータ可読記憶媒体に記憶され、コンピュータ、プログラマブル・データ処理装置、または他のデバイス、あるいはその組合せに特定の方式で機能するように指示することができるものであってもよい。
【００４６】
コンピュータ可読プログラム命令は、コンピュータ、他のプログラム可能な装置、または他のデバイス上で実行される命令がフロー・チャートまたはブロック図あるいはその両方の１つまたは複数のブロックに指定される機能／動作を実装するように、コンピュータ実施プロセスをもたらすために、コンピュータ、他のプログラム可能なデータ処理装置、または他のデバイス上にロードされ、コンピュータ、他のプログラム可能な装置または他のデバイス上で一連の動作ステップを行わせるものであってもよい。
【００４７】
図中のフロー・チャートおよびブロック図は、本発明の様々な実施形態によるシステム、方法、およびコンピュータ・プログラム製品の可能な実施のアーキテクチャ、機能、および動作を例示している。これに関して、フロー・チャートまたはブロック図における各ブロックは、指定された論理機能を実施するための１つまたは複数の実行可能命令を含むモジュール、セグメント、または命令の一部を表し得る。いくつかの代替的な実装形態では、ブロックに示されている機能は、図に示されている順序とは異なる順序で生じ得る。例えば、連続して図示されている２つのブロックは、実際には、実質的に同時に実行されてもよく、または関連する機能に応じて、場合によっては逆の順序で実行されてもよい。ブロック図、またはフロー・チャート図、あるいはその両方の各ブロック、およびブロック図、またはフロー・チャート図、あるいはその両方におけるブロックの組合せは、指定された機能または動作を実行する専用ハードウェア・ベースのシステムによって実施され得るか、または、専用ハードウェアとコンピュータ命令との組合せを実行し得ることにも留意されたい。
【図１】
2021509499.tif 000003
【図２】
2021509499.tif 000004
【図３】
2021509499.tif 000005
【図４】
2021509499.tif 000006
【図５】
2021509499.tif 000007
【図６】
2021509499.tif 000008
【国際調査報告】
2021509499.tif 000009
2021509499.tif 000010