(57)【要約】いくつかの実施例では、システムは、第１チャネルに接続される第１メモリアセンブリと、第２チャネルに接続される第２メモリアセンブリを有する。本システムは、前記第１メモリアセンブリと前記第２メモリアセンブリに第１プライマリデータセクションと第２プライマリデータセクションをそれぞれ書き込み、前記第２メモリアセンブリと前記第１メモリアセンブリに第１冗長データセクションと第２冗長データセクションをそれぞれ書き込むメモリコントローラを備え、前記第１冗長データセクションと前記第２冗長データセクションは、それぞれ前記第１プライマリデータセクションと前記第２プライマリデータセクションに関して冗長であることを特徴とする。他の実施例が説明及び記載される。
2006505864.tif 000002
【特許請求の範囲】
【請求項１】
第１チャネルに接続される第１メモリアセンブリと、
第２チャネルに接続される第２メモリアセンブリと、
前記第１メモリアセンブリと前記第２メモリアセンブリに第１プライマリデータセクションと第２プライマリデータセクションをそれぞれ書き込み、前記第２メモリアセンブリと前記第１メモリアセンブリに第１冗長データセクションと第２冗長データセクションをそれぞれ書き込むメモリコントローラと、
から構成されるシステムであって、
前記第１冗長データセクションと前記第２冗長データセクションは、それぞれ前記第１プライマリデータセクションと前記第２プライマリデータセクションに関して冗長であることを特徴とするシステム。
【請求項２】
請求項１記載のシステムであって、
前記第１メモリアセンブリと前記第２メモリアセンブリの各々は、１つのみのランクを有することを特徴とするシステム。
【請求項３】
請求項１記載のシステムであって、
前記第１メモリアセンブリと前記第２メモリアセンブリの各々は、少なくとも２つのランクを有し、
各ランクは、前記プライマリデータセクションの１つまたは前記冗長データセクションの１つの何れかを有する、
ことを特徴とするシステム。
【請求項４】
請求項１記載のシステムであって、
前記メモリコントローラは、前記第１メモリアセンブリと前記第２メモリアセンブリに第３プライマリデータセクションと第４プライマリデータセクションをそれぞれ書き込み、前記第２メモリアセンブリと前記第１メモリアセンブリに第３冗長データセクションと第４冗長データセクションをそれぞれ書き込み、
前記第３冗長データセクションと前記第４冗長データセクションは、それぞれ前記第３プライマリデータセクションと前記第４プライマリデータセクションに関して冗長である、ことを特徴とするシステム。
【請求項５】
請求項４記載のシステムであって、
前記第１メモリアセンブリと前記第２メモリアセンブリの各々は、少なくとも２つのランクを有し、
各ランクは、前記プライマリデータセクションの１つと前記冗長データセクションの１つを有する、
ことを特徴とするシステム。
【請求項６】
請求項１記載のシステムであって、
前記メモリコントローラは、前記メモリアセンブリのトリガー故障を検出する故障検出回路を備え、
トリガー故障の検出に応答して、前記メモリコントローラは、該システムをインタリーブミラーメモリ状態から非インタリーブ状態に切り替え、前記トリガー故障の訂正後、該システムを前記インタリーブミラーメモリ状態に戻す、
ことを特徴とするシステム。
【請求項７】
請求項６記載のシステムであって、
前記メモリコントローラは、前記インタリーブミラーメモリ状態中に前記プライマリデータセクションからのみ読み出しを行うことを特徴とするシステム。
【請求項８】
請求項６記載のシステムであって、
前記メモリコントローラは、前記インタリーブミラーメモリ状態中に前記プライマリデータセクションと前記冗長データセクションの両方から読み出しを行うことを特徴とするシステム。
【請求項９】
請求項１記載のシステムであって、
前記メモリコントローラは、前記メモリアセンブリのトリガー故障を検出する故障検出回路を備え、
トリガー故障の検出に応答して、前記メモリコントローラは、１以上のデータセクションを故障していないメモリアセンブリから前記故障したメモリアセンブリと取り替えられたメモリアセンブリにコピーする、
ことを特徴とするシステム。
【請求項１０】
請求項９記載のシステムであって、
レジスタ情報が、前記メモリコントローラから前記故障したメモリアセンブリと取り替えられたメモリアセンブリにコピーされることを特徴とするシステム。
【請求項１１】
請求項１記載のシステムであって、さらに、
前記第１チャネル上の第３メモリアセンブリと、
前記第２チャネル上の第４メモリアセンブリと、
を備え、
前記メモリコントローラは、前記第３メモリアセンブリと前記第４メモリアセンブリに第３プライマリデータセクションと第４プライマリデータセクションをそれぞれ書き込み、前記第４メモリアセンブリと前記第３メモリアセンブリに第３冗長データセクションと第４冗長データセクションをそれぞれ書き込み、
前記第３冗長データセクションと前記第４冗長データセクションは、それぞれ前記第３プライマリデータセクションと前記第４プライマリデータセクションに関して冗長である、ことを特徴とするシステム。
【請求項１２】
請求項１記載のシステムであって、
前記第１メモリアセンブリと前記第２メモリアセンブリの各々は、メモリチップを含むメモリモジュールであり、
前記第１メモリアセンブリの第１部分と第２部分は、前記第１メモリアセンブリの異なるチップに含まれ、
前記第２メモリアセンブリの第１部分と第２部分は、前記第２メモリアセンブリの異なるチップに含まれる、
ことを特徴とするシステム。
【請求項１３】
請求項１記載のシステムであって、さらに、
第３チャネルと第４チャネルを備えることを特徴とするシステム。
【請求項１４】
請求項１記載のシステムであって、さらに、
前記第１チャネルと前記第２チャネル上に第１リピータハブと第２リピータハブを備え、
前記第１メモリアセンブリと前記第２メモリアセンブリは、前記第１チャネルと前記第２チャネルのサブチャネル上にある、
ことを特徴とするシステム。
【請求項１５】
請求項１記載のシステムであって、
前記メモリコントローラは、前記第１プライマリデータセクションと前記第２プライマリデータセクションの一部のみを同時に書き込み、前記第１冗長データセクションと前記第２冗長データセクションの一部のみを同時に書き込むことを特徴とするシステム。
【請求項１６】
第１チャネルに接続される第１及び第３メモリアセンブリと、
第２チャネルに接続される第２及び第４メモリアセンブリと、
前記第１メモリアセンブリと前記第２メモリアセンブリにそれぞれ第１プライマリデータセクションと第２プライマリデータセクションを書き込み、前記第４メモリアセンブリと前記第３メモリアセンブリにそれぞれ第１冗長データセクションと第２冗長データセクションを書き込むメモリコントローラと、
から構成され、
前記第１冗長データセクションと前記第２冗長データセクションは、それぞれ前記第１プライマリデータセクションと前記第２プライマリデータセクションに関して冗長であることを特徴とするシステム。
【請求項１７】
請求項１６記載のシステムであって、
前記メモリコントローラは、前記メモリアセンブリのトリガー故障を検出する故障検出回路を備え、
トリガー故障の検出に応答して、前記メモリコントローラは、該システムをインタリーブミラーメモリ状態から非インタリーブ状態に切り替え、前記トリガー故障の訂正後、該システムを前記インタリーブミラーメモリ状態に戻す、
ことを特徴とするシステム。
【請求項１８】
請求項１７記載のシステムであって、
前記非インタリーブ状態は、故障したメモリアセンブリを有するチャネルが完全に停止されているとき、完全非インタリーブ状態となることを特徴とするシステム。
【請求項１９】
請求項１７記載のシステムであって、
前記非インタリーブ状態は、故障したメモリアセンブリを有するチャネルが完全には停止されていないとき、部分的非インタリーブ状態となり、
前記チャネル上の任意のメモリアセンブリは、前記故障したメモリアセンブリを除き動作を継続する、
ことを特徴とするシステム。
【請求項２０】
請求項１６記載のシステムであって、
前記メモリコントローラは、前記メモリアセンブリのトリガー故障を検出する故障検出回路を備え、
トリガー故障の検出に応答して、前記メモリコントローラは、１以上のデータセクションを故障していないメモリアセンブリから前記故障したメモリアセンブリと取り替えられたメモリアセンブリにコピーする、
ことを特徴とするシステム。
【請求項２１】
請求項１６記載のシステムであって、
前記メモリコントローラは、前記第１メモリアセンブリと前記第２メモリアセンブリに第３プライマリデータセクションと第４プライマリデータセクションをそれぞれ書き込み、前記第４メモリアセンブリと前記第３メモリアセンブリに第３冗長データセクションと第４冗長データセクションをそれぞれ書き込み、
前記第３冗長データセクションと前記第４冗長データセクションは、それぞれ前記第３プライマリデータセクションと前記第４プライマリデータセクションに関して冗長である、
ことを特徴とするシステム。
【請求項２２】
請求項１６記載のシステムであって、
前記メモリコントローラは、前記第３メモリアセンブリと前記第４メモリアセンブリに第５プライマリデータセクション及び第６プライマリデータセクションと第８冗長データセクション及び第７冗長データセクションをそれぞれ書き込み、前記第３メモリアセンブリと前記第４メモリアセンブリに第７プライマリデータセクション及び第８プライマリデータセクションと第６冗長データセクション及び第５冗長データセクションをそれぞれ書き込み、
前記第５冗長データセクションと、前記第６冗長データセクションと、前記第７冗長データセクションと前記第８冗長データセクションは、それぞれ前記第５プライマリデータセクションと、前記第６プライマリデータセクションと、前記第７プライマリデータセクションと前記第８プライマリデータセクションに関して冗長である、
ことを特徴とするシステム。
【請求項２３】
請求項１６記載のシステムであって、
前記第３メモリアセンブリと前記第４メモリアセンブリは、前記第１メモリアセンブリと前記第２メモリアセンブリより前記メモリコントローラに近いことを特徴とするシステム。
【請求項２４】
第１チャネルに接続される第１メモリアセンブリ群と、
第２チャネルに接続される第２メモリアセンブリ群と、
前記第１メモリアセンブリ群の少なくとも１つに第１プライマリデータセクション群を書き込み、前記第２メモリアセンブリ群の少なくとも１つに第２プライマリデータセクション群を書き込み、前記第２メモリアセンブリ群の少なくとも１つに第１冗長データセクション群を書き込み、前記第１メモリアセンブリ群の少なくとも１つに第２冗長データセクション群を書き込むメモリコントローラと、
から構成されるシステムであって、
前記第１冗長データセクション群は、前記第１プライマリデータセクション群に関して冗長であり、前記第２冗長データセクション群は、前記第２プライマリデータセクション群に関して冗長であることを特徴とするシステム。
【請求項２５】
請求項２４記載のシステムであって、
前記メモリコントローラは、前記メモリアセンブリのトリガー故障を検出する故障検出回路を備え、
トリガー故障の検出に応答して、前記メモリコントローラは、該システムをインタリーブミラーメモリ状態から非インタリーブ状態に切り替え、前記トリガー故障の訂正後、該システムを前記インタリーブミラーメモリ状態に戻す、
ことを特徴とするシステム。
【請求項２６】
請求項２４記載のシステムであって、
前記メモリコントローラは、前記メモリアセンブリのトリガー故障を検出する故障検出回路を備え、
トリガー故障の検出に応答して、前記メモリコントローラは、１以上のデータセクションを故障していないメモリアセンブリから前記故障したメモリアセンブリと取り替えられたメモリアセンブリにコピーする、
ことを特徴とするシステム。
【請求項２７】
第１チャネルに接続される少なくとも１つのメモリアセンブリと、
第２チャネルに接続される少なくとも１つのメモリアセンブリと、
該システムをインタリーブミラーメモリ状態で通常は動作させるメモリコントローラと、
から構成されるシステムであって、
プライマリデータセクションと冗長データセクションが、第１メモリチャネルインタフェースと第２メモリチャネルインタフェースに送られ、ときには該システムを非インタリーブ状態で動作させることを特徴とするシステム。
【請求項２８】
請求項２７記載のシステムであって、
前記メモリコントローラは、前記メモリアセンブリの１つにおけるトリガー故障が前記メモリコントローラにより検出されるまで、該システムを前記インタリーブミラーメモリ状態で動作させ、トリガー故障に応答して、前記メモリコントローラは、該システムを前記インタリーブミラーメモリ状態から前記非インタリーブ状態に切り替え、前記トリガー故障の訂正後、該システムを前記インタリーブミラーメモリ状態に戻す、
ことを特徴とするシステム。
【請求項２９】
請求項２８記載のシステムであって、
前記非インタリーブ状態は、故障したメモリアセンブリを有するチャネルが完全に停止されると、完全非インタリーブ状態となることを特徴とするシステム。
【請求項３０】
請求項２８記載のシステムであって、
前記非インタリーブ状態は、故障したメモリアセンブリを有するチャネルが完全には停止されていないとき、部分的非インタリーブ状態となり、
前記チャネル上の任意のメモリアセンブリは、前記故障したメモリアセンブリを除き動作を継続する、
ことを特徴とするシステム。
【発明の詳細な説明】
【発明の詳細な説明】
【０００１】
［背景］
関連出願
本出願と「Ｍｅｍｏｒｙ  Ｃｏｎｔｒｏｌｌｅｒｓ  Ｗｉｔｈ  Ｉｎｔｅｒｌｅａｖｅｄ  Ｍｉｒｒｏｒｅｄ  Ｍｅｍｏｒｙ  Ｍｏｄｅｓ」（代理人整理番号Ｐ１５１９２）は、同日に出願され、同一の明細書とクレームに関連する主題を有する。
技術分野
本発明は、プライマリ冗長メモリを有するメモリシステムに関する。
【０００２】
背景技術
コンピュータシステムは、典型的には、メモリ装置を備えている。ＤＲＡＭ（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）は、比較的大容量のデータを格納するのに通常利用される記憶装置である。メモリコントローラは、ライト要求とリード要求をＤＲＡＭに発行する。ライト要求に応答して格納されるべきデータは、プロセッサや他のチップからのものであってもよい。リード要求に応答してＤＲＡＭにより与えられるデータは、プロセッサや他のチップにより利用されてもよい。メモリコントローラは、プロセッサから物理的に独立したチップに備えられてもよいし、あるいはプロセッサと同じチップに備えられてもよい。
【０００３】
サーバシステムを含むコンピュータシステムは、メモリサブシステムが絶対的サイズと装置集積度に関して増大する技術トレンドに従う。より大規模なメモリサブシステムを備えることは、メモリサブシステムを実現するのに利用されるＤＲＡＭ装置におけるソフトとハード両方のエラーの発生を増大させる。メモリサブシステムが大規模になるに従い、メモリコントローラにより操作される任意の与えられたデータ量におけるマルチビットエラーの統計的確率もまた高くなる。多くの場合、メモリコントローラは、プラットフォームプロセッサコンプレックスのキャッシュラインサイズの一部に対応する固定のデータサイズに対して動作する。例えば、６４バイトラインを有するＣＰＵのために設計されたメモリコントローラは、８つの６４ビット部分を個別に格納するかもしれない。
【０００４】
近年のサーバシステムプロダクツは、ＤＲＡＭメモリサブシステムにおけるソフトとハードの両方のエラーのシステムインパクトを限定するためのいくつかの特徴を示している。今日、メモリコントローラが、追加的データビットが各キャッシュライン部分と共に格納され、揃えられたニブル内の単独のビットエラーまたはビットエラーの組み合わせがハードウェアにおいて訂正されるように、「誤り訂正符号（ＥＣＣ）」アルゴリズムを実現することが通常である。この機構は、システムによる偶発的な１ビットソフトエラーやｘ４ＤＲＡＭ装置全体にまで影響を与えるハードエラーが存在しても確実な動作の継続を可能にする。故障したｘ８ＤＲＡＭ装置に対し保護するためのこのアルゴリズムの拡張が利用可能である。しかしながら、ＥＣＣ機構は、複数のソフトエラーがメモリストアへの単一のアクセス上で発生すると、停止するかもしれない。なぜなら、限られた訂正符号（典型的には、６４データビット毎に８ビットのチェックビット、または１２８データビット毎に１６ビットのチェックビット）では、影響を受けたデータに散在する２以上のビットエラーのすべての順列を復元することができないかもしれないからである。
【０００５】
データのミラーリングとは、メインメモリストアに各データの２つのコピーを維持することである。各データビットをミラーリングすることは、与えられたメモリサブシステムの実現形態の有効容量を１/２にしてしまう。今日利用可能な既知の解決策は、メモリサブシステムの利用可能な帯域幅をミラーリング機能を与えるために１/２にすることを要求するものである。
【０００６】
図１は、メモリミラーリングを利用したシステムの一例を与える。図１において、システム１０は、プライマリチャネル１６とミラーチャネル１８に接続されたメモリコントローラ１２を有する。メモリモジュールＭ１、Ｍ３、Ｍ５及びＭ７は、プライマリチャネル１６に接続され、メモリモジュールＭ２、Ｍ４、Ｍ６及びＭ８は、ミラーチャネル１８に接続される。プライマリデータセクションＤＡ１、ＤＢ１、ＤＡ２及びＤＢ２は、モジュールＭ１、Ｍ３、Ｍ５及びＭ７のメモリチップに設けられ、冗長データセクションＤＡ１’、ＤＢ１’、ＤＡ２’及びＤＢ２’は、モジュールＭ２、Ｍ４、Ｍ６及びＭ８のメモリチップに設けられる。ここで、プライマリデータセクションＤＡ１、ＤＢ１、ＤＡ２及びＤＢ２は、冗長データセクションＤＡ１’、ＤＢ１’、ＤＡ２’及びＤＢ２’と同一または実質的に同一である。
【０００７】
他のメモリシステムでは、メモリコントローラは、プライマリチャネルを介し第１リピータハブに、ミラーチャネルを介し第２リピータハブに接続される。２つのサブチャネルが、各リピータハブに接続される。メモリモジュールは、これらサブチャネルに接続される。プライマリデータは、第１リピータハブに接続されるサブチャネルのメモリモジュールに格納され、冗長データは、第２リピータハブに接続されるサブチャネルのメモリモジュールに格納される。
【０００８】
２より多くのチャネルを備えたメモリシステムが提案されてきた。
【０００９】
本発明は、以下で与えられる詳細な実施例と本発明の実施例の添付された図面からより十分に理解されるであろう。しかしながら、これらは、本発明を説明される特定の実施例に限定するためのものではなく、説明及び理解のためにのみ利用されるものである。
［詳細な説明］
本発明は、インタリーブミラーメモリシステムに関する。インタリーブミラーメモリシステムは、典型的には、インタリーブミラーメモリ状態で動作するが、メモリアセンブリにおけるトリガーとなる故障の検出に応答して、非インタリーブ状態で一時的に動作することが可能なミラーメモリシステムである。トリガーとなる故障の説明は以下で与えられる。故障が訂正されると、システムはインタリーブミラーメモリ状態に戻る。システムの各チャネルは、１以上のメモリアセンブリに接続される。インタリーブミラーメモリ状態では、各チャネルのメモリは、プライマリ及び冗長データセクションの両方を格納し、対応するプライマリ及び冗長データセクションが、異なるチャネルのメモリに格納される。
【００１０】
システムのメモリコントローラは、インタリーブミラーメモリ状態と任意の非インタリーブ状態の動作を制御する。メモリコントローラは、システムをインタリーブミラーメモリ状態で制御しているとき、インタリーブミラーメモリモードにある。メモリコントローラは、システムを非インタリーブ状態で制御しているとき、非インタリーブモードにある。
【００１１】
インタリーブミラーメモリ状態で動作するシステムのいくつかの例が、以下で与えられる。非インタリーブ状態の例もまた与えられる。しかしながら、本発明は、インタリーブ及び非インタリーブ状態のシステムのこれらの例の詳細に限定されるものでない。
【００１２】
様々なタイプのメモリアセンブリが利用されてもよい。メモリアセンブリの例としては、メモリモジュールやハードドライブシステムのディスクまたはその一部があげられるが、本発明はそれに限定されるものでない。各メモリモジュールは、１以上の記憶装置を有する。必須ではないが一例として、メモリモジュールは、データに６４ビットとＥＣＣに８ビットの７２ビットデュアルインラインメモリ（ＤＩＭＭ）であってもよい。ＥＣＣは必須ではない。記憶装置は特定の技術に限定されるものでない。例えば、記憶装置は、現在広範に利用されている技術に従い製造されたＤＲＡＭチップであってもよい。他の例として、記憶装置は、ポリマメモリであってもよい。本発明は、特定の信号処理技術に限定されるものでない。
【００１３】
「データセクション」という用語は、ある時点において特定のメモリアセンブリまたはメモリアセンブリの一部に格納されている。それは、広範な非限定的用語であることを意味する。データセクションは、メモリアセンブリにおいて物理的に不連続であり、論理メモリにおいて不連続なデータを有するものであってもよい。典型的には、データセクションの範囲と内容は、時間と共に変化する。
【００１４】
Ａ．各メモリアセンブリに１つのデータセクションを有する例
図２は、インタリーブミラーメモリシステムであるシステム５０を示す。システム５０は、第１チャネル５６と第２チャネル５８に接続されたメモリコントローラ５２を有する。メモリサブシステムは、第１チャネル５６に接続されたメモリアセンブリＭ１、Ｍ３、Ｍ５及びＭ７と、第２チャネル５８に接続されたメモリアセンブリＭ２、Ｍ４、Ｍ６及びＭ８を有する。メモリモジュールは、チャネルに接続されたスロットに挿入されるようにしてもよい。メモリモジュールに故障があるとき、故障しているメモリモジュールはそれのスロットから取り外すことができ、正常に動作するメモリモジュールを当該スロットに挿入することができる。
【００１５】
システム５０とここで説明される他のいくつかのシステムは、チャネル毎に４つのメモリアセンブリを有するように示されているが、必ずしもそうである必要はない。チャネル毎に４個以外のメモリアセンブリが設けられてもよい。いくつかの実施例では、システムは、メモリモジュールを受付けるスロットの一部が空であったとしても動作するであろう。
【００１６】
メモリアセンブリに格納されるデータは、プライマリデータセクションＤＡ１、ＤＢ１、ＤＡ２及びＤＢ２と、当該プライマリデータセクションＤＡ１、ＤＢ１、ＤＡ２及びＤＢ２と同一または実質的に同一な対応する冗長データセクションＤＡ１’、ＤＢ１’、ＤＡ２’及びＤＢ２’に分割される。本発明の実施携帯のすべてではないが大部分で、冗長データセクションは対応するプライマリデータセクションと同一のものとなる（例えば、ＤＡ１’はＤＡ１と同一など）ことが期待される。しかしながら、プライマリデータセクションと対応する冗長データセクションは、既知の方法により異なるものとなる可能性がある。例えば、冗長データセクションのビットは、プライマリデータセクションの対応するビットを反転したものであるかもしれない。
【００１７】
プライマリデータセクションは、メモリコントローラが通常読み出すデータセクションであり、対応する冗長データセクションはバックアップである。いくつかの実施例では、メモリコントローラは、システムにエラーが検出されない場合には、常に対応する冗長データセクションでなくプライマリデータセクションを読み出す。しかしながら、他の実施例では、後述のように、メモリコントローラは、システムに故障がなくてもプライマリデータセクションでなく冗長データセクションを読み出すことを選択するかもしれない。
【００１８】
図２の図示された例では、データセクションＤＡ１、ＤＢ１’、ＤＡ２及びＤＢ２’はそれぞれ、メモリアセンブリＭ１、Ｍ３、Ｍ５及びＭ７に格納される。データセクションＤＢ１、ＤＡ１’、ＤＢ２及びＤＡ２’はそれぞれ、メモリアセンブリＭ２、Ｍ４、Ｍ６及びＭ８に格納される。従って、故障が発生するまで、システム５０は、インタリーブミラーメモリ状態で動作する。いくつかの実施例では、データセクションのペア（ＤＡ１とＤＢ１など）は、これらデータセクションのそれぞれがデータグループの１/２となるようにデータグループを形成する。もちろん、データセクションが極度に小さいとき（システムが最初に開始されるときなど）、データセクションのわずかな部分のみが一度に読み出しまたは書き込みされる。たとえば、通常の動作において、ＤＡ１とＤＢ１のわずかな部分のみが同時に読み出しまたは書き込みされる。必須ではないが、読み出されるデータセクションは、より狭いタイミング許容範囲を可能にするため、メモリコントローラから同じ距離にあるメモリアセンブリに一緒に格納されることが好ましい。
【００１９】
例えば、いくつかの実施例では、ＤＡ１のわずかな部分が１/２のキャッシュラインであり、ＤＢ１のわずかな部分が一緒になってキャッシュライン全体を構成する１/２のキャッシュラインとなる。（例えば、ＤＡ１のわずかな部分がオッド（ｏｄｄ）１/２キャッシュラインであり、ＤＢ１のわずかな部分がイーブン（ｅｖｅｎ）１/２キャッシュラインであってもよい。）こうすることによる効果は、読み出しにおいて、データグループの１/２が第１チャネルから読み出されるのと同時に、データグループの他方の１/２が第２チャネルから読み出されるのを可能にするというものである。これにより、２倍の読み出し帯域幅と１/２の読み出し遅延を達成することができる。
【００２０】
他方、従来技術によるシステム１０では、すべてのプライマリデータセクションが同一チャネル上にある。このため、システム１０と５０のコントローラ、チャネル及びメモリチップが同じ能力を有すると仮定すると、データセクションＤＡ１とＤＢ１の読み出しはシステム５０を介するよりシステム１０を介した方が少なくとも２倍長くかかってしまう。
【００２１】
本発明は、メモリアセンブリの順序に関して、プライマリデータセクションと冗長データセクションを格納する何れか特定の順序に限定されるものでない。例えば他の実施例では、データセクションＤＡ１、ＤＡ２、ＤＢ１’及びＤＢ２’がそれぞれメモリアセンブリＭ１、Ｍ３、Ｍ５及びＭ７に格納され、データセクションＤＢ１、ＤＢ２、ＤＡ１’及びＤＡ２’がそれぞれメモリアセンブリＭ２、Ｍ４、Ｍ６及びＭ８に格納されるようにしてもよい。他の例としては、データセクションＤＢ１’、ＤＢ２’、ＤＡ１及びＤＡ２はそれぞれメモリアセンブリＭ１、Ｍ３、Ｍ５及びＭ７に格納され、データセクションＤＡ１’、ＤＡ２’、ＤＢ１及びＤＢ２がそれぞれメモリアセンブリＭ２、Ｍ４、Ｍ６及びＭ８に格納されるようにしてもよい。
【００２２】
図２では、メモリアセンブリＭ１、Ｍ２、Ｍ３及びＭ４は、それぞれ第１、第２、第３及び第４メモリアセンブリと呼ばれるかもしれない。しかしながら、これは任意である。これらメモリアセンブリの何れかが第１メモリアセンブリと呼ばれてもよいし、他の何れかが第２、第３及び第４メモリアセンブリと呼ばれてもよい。さらに、ラベルＤＡ１、ＤＡ２、ＤＢ１、ＤＢ２などには必要な特定の意味はなく、いくつかの場合を除いて、ＤＡ１と共にＤＢ１からと、上述のようにＤＡ１と共にＤＢ２からの読み出しにおいて値が存在してもよい。
【００２３】
プライマリメモリアセンブリは、プライマリデータセクションのみを格納するメモリアセンブリであり、冗長メモリアセンブリは、冗長データセクションのみを格納するうメモリアセンブリであり、混合メモリアセンブリは、プライマリデータセクションと冗長データセクションの両方を格納するメモリアセンブリである。図２において、Ｍ１、Ｍ２、Ｍ５及びＭ６はプライマリメモリアセンブリであり、Ｍ３、Ｍ４、Ｍ７及びＭ８は冗長メモリアセンブリである。他方、従来技術によるシステム１０では、すべてのプライマリメモリモジュールは１つのチャネル上にあり、すべての冗長メモリモジュールは他のチャネルにある。これにより、上述のような大きな遅延が生じる。
【００２４】
Ｂ．各メモリアセンブリに２つのデータセクションを有する例
図３は、インタリーブミラーメモリシステムであるシステム７０を示す。システム７０は、メモリコントローラ７２と、第１チャネル５６と、第２チャネル５８と、メモリアセンブリＭ１〜Ｍ８を有する。冗長データセクションＤＡ１’、ＤＡ２’、ＤＡ３’、ＤＡ４’、ＤＢ１’、ＤＢ２’、ＤＢ３’及びＤＢ４’は、それぞれ対応するプライマリデータセクションＤＡ１、ＤＡ２、ＤＡ３、ＤＡ４、ＤＢ１、ＤＢ２、ＤＢ３及びＤＢ４に関して冗長性を有する。
【００２５】
図３の例では、データセクションＤＡ１とＤＡ２はメモリアセンブリＭ１に格納され、データセクションＤＢ１’とＤＢ２’はメモリアセンブリＭ３に格納され、データセクションＤＡ３とＤＢ４はメモリアセンブリＭ５に格納され、データセクションＤＢ３’とＤＢ４’はメモリアセンブリＭ７に格納され、データセクションＤＢ１とＤＢ２はメモリアセンブリＭ２に格納され、データセクションＤＡ１’とＤＡ２’はメモリアセンブリＭ４に格納され、データセクションＤＢ３とＤＢ４はメモリアセンブリＭ６に格納され、データセクションＤＡ３’とＤＡ４’はメモリアセンブリＭ８に格納される。
【００２６】
メモリアセンブリに関する他の多数のデータセクションの順序が利用されてもよい。例えば、他の実施例では、データセクションＤＡ１とＤＢ１’はメモリアセンブリＭ１に格納され、データセクションＤＡ２とＤＢ２’はメモリアセンブリＭ３に格納され、データセクションＤＡ３とＤＢ３’はメモリアセンブリＭ５に格納され、データセクションＤＡ４とＤＢ４’はメモリアセンブリＭ７に格納され、データセクションＤＢ１とＤＡ１’はメモリアセンブリＭ２に格納され、データセクションＤＢ２とＤＡ２’はメモリアセンブリＭ４に格納され、データセクションＤＢ３とＤＡ３’はメモリアセンブリＭ６に格納され、データセクションＤＢ４とＤＡ４’はメモリアセンブリＭ８に格納される。この例では、メモリアセンブリは、プライマリデータと冗長データの両方を有するため、混合される。
【００２７】
プライマリデータと冗長データの両方を同じメモリアセンブリに有することによる効果は、チャネル毎に１つだけメモリアセンブリを有するよう実現可能となるということである。例えば、図４は、チャネル毎に１つのみのメモリアセンブリを備え、インタリーブミラーメモリシステムであるシステム８０を示す。システム８０では、メモリコントローラ８２は、メモリモジュールＭ１とＭ２にそれぞれ接続される第１チャネル５６と第２チャネル５８に接続される。図示されるように、プライマリデータセクションＤＡ１と冗長データセクションＤＢ１’はメモリアセンブリＭ１に格納され、プライマリデータセクションＤＢ１と冗長データセクションＤＡ１’はメモリアセンブリＭ２に格納されている。
【００２８】
システム７０と８０では、メモリアセンブリ毎に２つのデータセクションが備えられている。これら２つのデータセクションは、メモリアセンブリの異なる部分に備えられる。これらをメモリアセンブリの異なる部分に分割または分散させる方法は様々である。
【００２９】
いくつかの実施例では、メモリモジュールの複数のチップ（または単一のチップ）の一部が１つのデータセクションを保持し、他の部分が他のデータセクションを保持するようにしてもよい。例えば、図１０は、ＰＣＢ（Ｐｒｉｎｔｅｄ  Ｃｉｒｃｕｉｔ  Ｂｏａｒｄ）カード１６２を有するメモリモジュール１６０を示す。メモリチップ１６４．．．１６６は、カード１６２のサイド１に設けられる。図１１は、メモリチップ１７０．．．１７２を含むカード１６２のサイド２を示す。図１０及び１１では、データセクションＤＡ１はチップ１６４．．．１６６に格納され、ＤＢ１’はチップ１７０．．．１７２に格納される。この場合、異なるデータセクションを保持する部分は、異なるチップグループに設けられる。チップ１６４．．．１６６と１７０．．．１７２のチップ数は、１以上であってもよい。いくつかの実施例では、サイド２にはチップは設けられていない。チップ１７０．．．１７２はチップ１６４．．．１６６と共にサイド１に設けられてもよい。
【００３０】
図１２は、チップ１６４．．．１６６の各々に格納されている２つのデータセクション（ＤＡ１とＤＢ１’）を示す。この場合、異なるデータセクションを保持するメモリアセンブリの部分は、各チップの異なる部分に設けられ、複数のチップに分散されている。１つのチップに格納されているデータセクションは、２より多くなってもよい。あるいは、図１３において、ＤＡ１はチップ１６４．．．１６６の一部に格納され、ＤＢ１’はチップ１６４．．．１６６の他の部分に格納される。この場合、異なる部分は異なるチップに設けられる（図１２より図１０及び１１と同様に）。図１３では、図示されているようなデータセクションは、２つのみのチップグループに分割されている。しかしながら、より多くの分割があってもよい。例えば、各チップは、異なるデータセクションを有するようにしてもよい。
【００３１】
ここで用いられる「ランク」という用語は、グループとして一緒に選ばれるメモリアセンブリの記憶装置を意味する。この選択は、メモリチップ上の「チップ選択」コンタクト、または他の情報と共に多重化されたチップ選択コマンドなどの他の技術を介するものであってもよい。いくつかの場合では、各メモリアセンブリには１つのみのランクが存在し、他の場合には、各メモリアセンブリには複数のランクが存在する。モジュール１６０は、１以上のランクを有するようにしてもよい。本開示で説明されるシステムのメモリアセンブリは、明示的に特定の個数のランクに限定されている場合を除き（例えば、図１６は、各メモリモジュールに１つのランクに限定されている）、メモリアセンブリの実現方法に依存して、各モジュールに１以上のランクを備えるようにしてもよい。
【００３２】
いくつかの実施例では、ランクは、異なるデータセクションを保持するメモリモジュールの部分に対応する。例えば、図１０と１１において、チップ１６４．．．１６６が１つのランクに設けられ、チップ１７０．．．１７２が他のランクに設けられている場合、異なるデータセクションを保持するメモリアセンブリの部分は、異なるランクに対応するであろう。他の実施例では、ランクは、これらの部分に対応していないかもしれない（例えば、図１２）。
【００３３】
図５及び６は、各メモリアセンブリに１つのランクを有するメモリシステムを示す。図５は、メモリコントローラ９２と、第１チャネル９６と、第２チャネル９８を有するメモリシステム９０を示す。図６は、メモリコントローラ１０２と、第１チャネル９６と、第２チャネル９８を有するメモリシステム１００を示す。図５及び６において、メモリアセンブリＭ１−１、Ｍ１−３、Ｍ１−５及びＭ１−７はチャネル９６に接続され、メモリアセンブリＭ１−２、Ｍ１−４、Ｍ１−６及びＭ１−８はチャネル９８に接続される。メモリアセンブリＭ１−１．．．Ｍ１−８は、メモリモジュール毎に１つのランクを有する。（上述のように、各チャネルには４つ以外のメモリアセンブリが設けられてもよい。）
図５と６の相違点は、図５のメモリコントローラ９２はロックされたステップでチャネル９６と９８を操作する一方、図６のメモリコントローラ１０２は独立に（ロックされたステップではなく）チャネル９６と９８を操作しているという点である。システムがロックされたステップで動作しているとき、一方のチャネルに起こったことが、同時に他方のチャネルにも起こっている。図５と６の両方において、メモリアセンブリＭ１−１、Ｍ１−３、Ｍ１−５及びＭ１−７のランクは、それぞれランクＲ１、Ｒ２、Ｒ３及びＲ４と呼ばれる。同様に、図５において、メモリアセンブリＭ１−２、Ｍ１−４、Ｍ１−６及びＭ１−８のランクは、それらがメモリアセンブリＭ１−１、Ｍ１−３、Ｍ１−５及びＭ１−７のランクＲ１〜Ｒ４とロックされたステップでアクセスされるため、それぞれＲ１、Ｒ２、Ｒ３及びＲ４と呼ばれる。しかしながら図６では、メモリアセンブリＭ１−２、Ｍ１−４、Ｍ１−６及びＭ１−８のランクは、それらがランクＲ１〜Ｒ４と独立にアクセスされるため、それぞれランクＲ５、Ｒ６、Ｒ７及びＲ８と呼ばれる。
【００３４】
図７と８は、各々が２つのランクを有するメモリアセンブリを備えるシステム１１０と１２０を示す。メモリコントローラ１１２と１２２のそれぞれは、第１チャネル１１６と第２チャネル１１８に接続されている。図７のメモリコントローラ１１２は、ロックされたステップでチャネル１１６と１１８を操作し、図８のメモリコントローラ１２２は、独立にチャネル１１６と１１８を操作する。メモリアセンブリＭ２−１、Ｍ２−３、Ｍ２−５及びＭ２−７はチャネル１１６に接続され、メモリアセンブリＭ２−２、Ｍ２−４，Ｍ２−６及びＭ２−８はチャネル１１８に接続される。図７と８において、メモリアセンブリＭ２−１のランクはＲ１及びＲ２と呼ばれ、メモリアセンブリＭ２−３のランクはＲ３及びＲ４と呼ばれ、メモリアセンブリＭ２−５のランクはＲ５及びＲ６と呼ばれ、メモリアセンブリＭ２−７のランクはＲ７及びＲ８と呼ばれる。同様に図８では、メモリアセンブリＭ２−２、Ｍ２−４、Ｍ２−６及びＭ２−８は、それぞれＲ１及びＲ２、Ｒ３及びＲ４、Ｒ５及びＲ６、Ｒ７及びＲ８と呼ばれる。しかしながら図８では、メモリアセンブリＭ２−２、Ｍ２−４、Ｍ２−６及びＭ２−８は、それらがチャネル１１６のランクとは独立してアクセスされるため、それぞれＲ９及びＲ１０、Ｒ１１及びＲ１２、Ｒ１３及びＲ１４、Ｒ１５及びＲ１６と呼ばれる。
【００３５】
チップ選択コマンドが多重化される場合、それはチャネル上で実行されるようにしてもよい。メモリチップ上に分離した「チップ選択」コンタクトが設けられる場合、チップ選択情報は、チャネルの一部または別個のものとしてみなされてもよいコンダクタを介し伝搬されてもよい。例えば図９では、システム１３０は、ここで説明される各種チャネルを表す第１チャネル１３６と第２チャネル１３８に接続されるメモリコントローラ１３２を有する。メモリアセンブリＭ１、Ｍ３、Ｍ５及びＭ７はチャネル１３６に接続され、メモリアセンブリＭ２、Ｍ４、Ｍ６及びＭ８はチャネル１３８に接続される。チップ選択コンダクタ１４２の各々は、それぞれメモリアセンブリＭ１、Ｍ３、Ｍ５及びＭ７に接続され、チップ選択信号をそれらに伝達する。チップ選択コンダクタ１４４の各々は、メモリアセンブリＭ２、Ｍ４、Ｍ６及びＭ８にそれぞれ接続され、チップ選択信号をそれらに伝達する。独立したコンダクタ１４２と１４４は、チャネル１３６と１３８の一部とみなされてもよいが、例示的に別々に示されている。
【００３６】
図３を再び参照するに、表１は、各メモリアセンブリに２つのランクが設けられ（図７のように）、各ランクが１つのみのデータセクションを格納する場合に、特定のデータセクションがシステム７０の各メモリアセンブリの各ランクに格納される例を示している。
【００３７】
【表１】
2006505864.tif 000003
【００３８】
メモリアセンブリの順序に関して、データセクションを格納する順序は様々である。例えば、表２は、表１に示されるものとは異なるシステム７０のデータセクション（及びシステム８０のＭ１とＭ２）の順序の一例を示す。
【００３９】
【表２】
2006505864.tif 000004
【００４０】
上述のように、いくつかの実施例では、メモリコントローラは、システムに故障がなくても、プライマリデータセクションでなく冗長データセクションを読み出すことを選択するようにしてもよい。これを行う理由の一例としては、冗長データセクションから読み出しを行うことがより迅速であるというケースである。例えば、所望のプライマリデータセクションがビジー状態のランクやちょうどアクセスされたランクにあるケースであるかもしれない。これらの実施例では、こうすることには問題点もあるが、異なるランクにプライマリデータセクションと対応する冗長データセクションを有する利点がある。
【００４１】
図１４は、インタリーブミラーメモリシステムであるシステム１８０を示す。システム１８０は、第１チャネル１８４を介しリピータハブ１８８に、第２チャネル１８６を介しリピータハブ１９０に接続されるメモリコントローラ１８２を有する。サブチャネル１９２と１９４はリピータハブ１８８に接続され、サブチャネル１９６と１９８はリピータハブ１９０に接続される。メモリアセンブリＭ１、Ｍ３、Ｍ５及びＭ７はサブチャネル１９２に設けられ、メモリアセンブリＭ２、Ｍ４、Ｍ６及びＭ８はサブチャネル１９４上に設けられ、メモリアセンブリＭ１１、Ｍ１３、Ｍ１５及びＭ１７はサブチャネル１９６上に設けられ、メモリアセンブリＭ１２、Ｍ１４、Ｍ１６及びＭ１８はサブチャネル１９８上に設けられる。サブチャネル上には４つ以外のメモリアセンブリが設けられてもよい。本開示の他の実施例で説明されたように、プライマリデータセクションと冗長データセクションが格納されてもよい。図３及び４のチャネル５６と５８は、メモリコントローラとチャネルとの直接的な接続のため、ダイレクトアタッチ（ｄｉｒｅｃｔ  ａｔｔａｃｈ）チャネルと呼ばれ、図１４のサブチャネル１９２、１９４、１９６及び１９８は、中間的なリピータハブのため、ダイレクトアタッチサブチャネルではない。
【００４２】
２つのチャネルを有するシステムにより、上記実施例は与えられた。しかしながら、本発明は、４つのチャネルを有するシステムにより実現されてもよい。例えば、図１５は、メモリコントローラ２０２と、第１チャネル２０６と、第２チャネル２０８と、第３チャネル２１２と、第４チャネル２１４を有するインタリーブミラーメモリシステムであるシステム２００を示す。この例では、メモリアセンブリＭ１、Ｍ５、Ｍ９及びＭ１３がチャネル２０６に接続され、メモリアセンブリＭ２、Ｍ６、Ｍ１０及びＭ１４がチャネル２０８に接続され、メモリアセンブリＭ３、Ｍ７、Ｍ１１及びＭ１５がチャネル２１２に接続され、メモリアセンブリＭ４、Ｍ８、Ｍ１２及びＭ１６がチャネル２１４に接続される。上述のように、各チャネルに４つ以外のメモリアセンブリが利用されてもよい。
【００４３】
Ｃ．各ランクに２つのデータセクションを有する例
いくつかの実施例では、各ランクに２以上のデータセクションが設けられている。このようなシステムは、各メモリモジュールに１以上のランクを有するものであってもよい。例えば、図１６は、インタリーブミラーメモリシステムであるシステム２３０を示す。システム２３０は、チャネル９６と９８に接続されるメモリコントローラ２３２を有する。メモリアセンブリＭ１−１とＭ１−２はそれぞれ、各メモリアセンブリに１つのランクを有し、それぞれチャネル９６と９８に接続されている。一例として、データセクションＤＡ１とＤＢ１’はＭ１−１に格納され、データセクションＤＢ１とＤＡ１’はＭ１−２に格納されている。ランク内の順序は、必ずしも重要ではない。図１６は、ロックされたステップにあるチャネルを示しているが、チャネルコントロールは独立であってもよい。
【００４４】
図１６に示されるような各ランクに２つのデータセクションを利用することによる効果は、各モジュールに１つのみのランクを有するメモリアセンブリを備え、各チャネルに１つのみのメモリアセンブリを有するインタリーブミラーメモリシステムを設けることが可能となることである。他の効果としては、プライマリデータセクションの一部と冗長データセクションの一部（例えば、ＤＡ１とＤＢ１’の一部など）が同じページの異なる列に（例えば隣接する）書き込み可能となるように、本発明を実現することが可能となるという点があげられる。
【００４５】
各メモリアセンブリに複数のランクを有する各ランクに２つのデータセクションを備えたシステムの例が、以下に与えられる。
【００４６】
Ｄ．各メモリアセンブリに２より多いデータセクションを有する例
いくつかの実施例では、メモリアセンブリに２より多いデータセクションが格納される。例えば、図１７は、インタリーブミラーメモリシステムであるシステム２４０を示す。システム２４０は、チャネル１１６と１１８に接続されたメモリコントローラ２４２を有する。メモリアセンブリＭ２−１とＭ２−２が、チャネル１１６と１１８に接続されている。一例として、データセクションＤＡ１、ＤＡ２、ＤＢ１’及びＤＢ２’がメモリアセンブリＭ２−１に格納され、データセクションＤＡ２、ＤＢ２、ＤＡ２’及びＤＢ２’がチャネル１１８に接続されるメモリアセンブリＭ２−２に格納されている。各チャネルには２つ以外のメモリアセンブリが設けられてもよい。
【００４７】
図１７は、各メモリアセンブリに２つのランクを有するメモリアセンブリを示しているが、各メモリアセンブリに１つのみまたは２より多くのランクを有するようにすることも可能である。データセクション、ランク及びメモリアセンブリには様々な順序がある。表３及び４は、データセクションが各メモリアセンブリの各ランクに格納されている例を示している。これらランク内のデータセクションの順序は、必ずしも重要ではない。
【００４８】
【表３】
2006505864.tif 000005
【００４９】
【表４】
2006505864.tif 000006
【００５０】
図１８は、チャネル１１６と１１８に接続されたメモリコントローラ２５２を有するインタリーブミラーメモリシステムであるシステム２５０を示す。システム２５０は、図示されるような追加的なデータセクションを格納するためのメモリアセンブリＭ２−３とＭ２−４をシステム２５０が有するという点を除き、システム２４０と同様のものである。追加的なメモリアセンブリが追加されてもよい。
【００５１】
Ｅ．システム詳細の例
図１９は、必須ではないが、メモリコントローラ３２２を有するシステムの詳細を示す。メモリコントローラ３２２は、本開示で説明される様々なメモリコントローラを表し、回路３０の一部として含まれる。回路３２０の例としては、メモリコントローラハブ（ＭＣＨ）、プロセッサあるいはディスクドライブコントローラがあげられる。いくつかの実施例では、プロセッサ、メモリコントローラ及びメモリがスタックされていてもよい。
【００５２】
ＥＣＣ回路３２４は、メモリコントローラ３２２にＥＣＣコントロールを提供し、メモリコントローラ３２２の一部であってもよいし、あるいは独立した構成であってもよい。オペレーティングシステム（ＯＳ）及び/または他のソフトウェア３２６は、メモリコントローラ３２２にソフトウェアコントロールを提供する。典型的には、このソフトウェアコントロールは、各種中間的回路を介しメモリコントローラ３２２に間接的に適用される。故障を示す回路３２８は、メモリサブシステムにおいて故障を示す。故障を示す回路３２８の例としては、メモリアセンブリ及び/またはチャネルの故障を示すメッセージをディスプレイに送信する回路があげられる。他の例としては、発光ダイオード（ＬＥＤ）を制御する回路があげられる。電力制御回路３３０は、メモリモジュールに電力を与える。いくつかの実施例では、メモリサブシステムの故障が検出されると、チャネルのメモリサブシステムのすべてまたは一部に供給される電力が、停止されるようにしてもよい。他の実施例では、上述のように、故障が検出されると、ユーザが手動により電力を停止する。故障を示す回路３２８と電力制御回路３３０は、必須ではない。代わりに他の技術が利用されてもよい。メモリコントローラ３２２と故障を示す回路３２８及び電力制御回路３３０との間の通信は、各種中間回路を介した間接的なものであってもよい。
【００５３】
図２０は、メモリコントローラ３２２のいくつかの実施例の詳細を示す。これらの詳細は、すべての実施例に必須であるとは限らない。図２０の例では、メモリコントローラ３２２は、メモリコントローラとメモリアセンブリとの間の読み出し及び書き込みを制御するメモリアクセス制御回路３３６を有する。全体的にはメモリコントローラと共に、メモリアクセス制御論理３３６は、通常はインタリーブミラーメモリモードで動作するが、本開示で説明されるようにときには非インタリーブモードで動作する。第１チャネルインタフェース３３８と第２チャネルインタフェース３４０は、制御論理３３６と第１チャネル及び第２チャネル（例えば、チャネル１３６と１３８など）との間のインタフェースをとる。メモリアクセス制御論理３３６は、書き込みされるデータセクションに対するメモリアセンブリの宛先を選択する。メモリアクセス制御論理３３６は、アクセスされるランクを選択するランク選択回路３４２を有する。図２０のレジスタ３４４と図２１及び２２のレジスタ３４６及び３４８が、以下において説明される。
【００５４】
故障検出回路３５０は、メモリアセンブリにおけるトリガー故障を検出する。故障検出回路３５０はまた、故障訂正時を検出する回路を有する。トリガー交渉とは、メモリコントローラをインタリーブミラーメモリモードから非インタリーブモードに変更させる故障である。トリガー故障の一例としては、データが失われたとき、冗長メモリから当該データを取得ることなしでは復元不可能な状態があげられる。訂正可能な故障とは、冗長メモリからデータをコピーすることなく訂正可能な故障をいう。訂正可能なエラーは、例えば、インタリーブミラーメモリ状態から脱け出ることなくＥＣＣコードを介し訂正されてもよい。後述されるように、いくつかの実施例では、同じメモリアセンブリにおける複数の訂正可能なエラーはトリガーエラーとして解釈することができる。通常、訂正可能な故障は、トリガー故障としては検出されないが、いくつかの実施例では、一部の訂正可能な故障はトリガー故障として扱われるかもしれない。さらに、いくつかの実施例では、一部の故障は、メモリアセンブリを取り替え、トリガー故障としては扱われない故障していないメモリアセンブリからデータをコピーすることなしでは訂正することができないかもしれない。そのようなケースは存在しないことが理想的ではある。トリガー故障の原因は、メモリアセンブリにおける最初からの欠陥または後から生じた欠陥、極端なノイズ及びいくつかのソフトエラーを含むかもしれない。
【００５５】
図２３は、ここで説明または図示されるようなインタリーブミラーメモリシステムのいくつかの実施例の動作を示すフローチャートである。しかしながら、ここで説明されるシステムの動作は、これらの詳細に限定されるものではない。他の実施例では、図２３の以下の記載の特徴の一部は利用されるが、他の特徴は利用されないかもしれない。
【００５６】
図２３を参照するに、プライマリ及び冗長メモリアセンブリは、初期的には正常に動作している（ボックス３５２）。いくつかの実施例では、ハードウェアにより、各メモリアセンブリのＥＣＣエラーの発生が追跡される。ＳＥＣ（Ｓｉｎｇｌｅ−Ｅｒｒｏｒ  Ｃｏｒｒｅｃｔａｂｌｅ）エラー及びＤＥＤ（Ｄｏｕｂｌｅ−Ｅｒｒｏｒ  Ｄｅｔｅｃｔｉｏｎ）エラーが、独立に追跡されるかもしれない。ＤＥＤエラーは、検出可能ではあるが、訂正可能ではないビットエラーの組み合わせのクラスのいずれかを示すものであってもよい。いくつかの実施例では、ＤＥＤエラーが検出される場合、あるいは所定の個数の訂正可能なエラーが検出される場合に、システムにおいてエラー通知が行われる。しかしながら、それは必ずしも必須ではない。プログラム可能なＳＥＣエラーの時間ベースのカウントが閾値に対してチェックされてもよい。ＡＵＴＯ（エラー）は、エラーを検出するハードウェアを表す。故障は、プライマリデータ、冗長データまたはその両方を含むメモリモジュールにおけるものであってもよい。故障したメモリモジュールを含むチャネルは、犠牲チャネルと呼ばれる。故障したメモリモジュールを含まないその他のチャネルは、非犠牲チャネルと呼ばれる。
【００５７】
トリガー故障が検出されると（ボックス３５４）、例えば、訂正可能でないＥＣＣエラーが検出されたため、読み出しが対応するメモリアセンブリに再発行される。メモリコントローラ３２２のハードウェアは、読み出しが故障していないメモリアセンブリに発行されると、適切な順序によりデータを再構成する。ハードウェアは、トリガー故障のための「犠牲」メモリアセンブリを特定し、この犠牲におけるデータセクションが残るか、あるいは冗長データセクションとなるように動的に再構成される。必要に応じて、好ましい読み出しの宛先が当該犠牲を含まないように、プライマリ及び冗長メモリアセンブリペアの宛先が交換される。
【００５８】
トリガー故障通知の受信に応答して、ソフトウェアは、サービス要求を設定するようにしてもよい。これに応答して、ユーザは、ホストスワップ（ｈｏｓｔ−ｓｗａｐ）イベントが差し迫っていることをマシーンに通知するようにしてもよい。ソフトウェアルーチンは、単独チャネル動作へのｆａｉｌ−ｄｏｗｎを要求し（ボックス３５６）、犠牲メモリアセンブリを含むチャネルを隔離する。設定書き込み（ＣＦＧ−ｗｒｉｔｅ）は、ハードウェア上のソフトウェアアクションである。本発明は、このタイプのソフトウェア制御に限定されるものではない。ハードウェアまたは他のタイプのソフトウェア制御が利用可能である。
【００５９】
ハードウェアは、インタリーブミラーメモリ状態動作から単一チャネル非インタリーブ動作への遷移を順序付けし、どの処理も消失してなく、メモリ設定の変更が互換的なソフトウェアに不可視なままであることを保証する。このとき、メモリコントローラ３２２は、すべてのクロック処理をイネーブル解除し、チャネルインタフェース信号を３ステート処理（ｔｒｉ−ｓｔａｔｉｎｇ）ことにより、犠牲チャネルを電気的に隔離する。ソフトウェアは、犠牲チャネルから電力を除去するため、ベースボード管理コントローラと通信する。ソフトウェアは、犠牲チャネルが隔離されたことを技術者に通知し、犠牲メモリアセンブリの位置を通信する。犠牲メモリアセンブリの位置は、例えば、メモリコントローラ３２２または関連する回路（ＭＣＨなど）の設定レジスタスペースを介しソフトウェアに開示するようにしてもよい。この通信方法には、ディスプレイに送信されるグラフィカル表示またはＬＥＤを発光させるためのベースボードコントローラアクセスが含まれる。
【００６０】
ＡＵＴＯ（トラフィック）は、メモリアセンブリのための既存の処理を終了またはキャンセルすることにより、チャネル上のトラフィックが完了するのを自動的に待機するハードウェアを表す。キャンセルされた処理は、非犠牲チャネルに再発行されてもよい。
【００６１】
チャネルが隔離されると（ボックス３５８）、技術者は所望の場合には当該チャネル上の他の任意のメモリアセンブリと共に故障しているメモリアセンブリを入れ替える。
【００６２】
ソフトウェアは、設定アクセスを介しメモリコントローラ３２２に犠牲チャネルをオンラインに戻すのを開始するよう通知し、犠牲チャネルへの電力を再確立するようベースボードコントローラと通信する。このイベントシーケンスは、３ステート（高インピーダンス）から必要なインタフェース信号を取り除き、必要なパワーアップ状態をインタフェースに駆動することにより、メモリコントローラがチャネルパワーアップを準備することを可能にする。いくつかの実施例では、メモリコントローラ３２２は、メモリサブシステムにより利用されるクロック信号を駆動するためのものであり、当該クロック処理を再起動する。
【００６３】
ソフトウェアは、電力が安定化し、メモリサブシステムの任意の従属的位相同期ループ（ＰＬＬ）及び/または遅延同期ループ（ＤＬＬ）回路がロックする典型的には数ミリ秒などの適当な時間待機する（ボックス３６２）。このとき、ソフトウェアは、「シリアル有無検出」機構を利用して、犠牲スロットが正しい技術により具備されている保証するようにしてもよい。交換される装置が利用中のチャネル上で用いられている技術と正確に一致しない場合、シーケンスの残りは偽の結果を生じさせるかもしれない。ソフトウェアにより技術者に装置が不適合であると共に、装置の不具合を正確に通知することが可能となるであろう。
【００６４】
その後、ソフトウェアは、メモリコントローラ３２２をそれの再設定状態に移し、内部設定レジスタアクセスを利用して、犠牲チャネル上のメモリアセンブリにおいて動作レジスタ設定を復元する（ボックス３６４）。この段階には、取り替えられた装置を使用する前に必要とされる任意のインピーダンスタイミングキャリブレーションが含まれる。図２０、２１及び２２は、それぞれレジスタ３４４、３４６及び３４８を含む。図２１は、チップ１６４のレジスタ３４６を示す。図２２は、メモリモジュール１６０のレジスタ３４８を示す。レジスタ３４６と３４８は、設定情報を保持するようにしてもよい。図２１と２２は、代替的なものであってもよいし、あるいは補完的なものであってもよい。故障が発生すると、レジスタ３４６及び/またはレジスタ３４８の情報が消失しているかもしれない。この情報は、対応する故障していないメモリから抽出することが可能である。しかしながらいくつかの場合では、レジスタ３４６及び/またはレジスタ３４８は、読み出しのみ行われるかもしれない。この場合、図２０のレジスタ３４４は、新たに挿入されたメモリアセンブリのレジスタ３４６及び/またはレジスタ３４８に書き込み可能な情報を含むようにしてもよい。
【００６５】
犠牲チャネルがバックアップされ、キャリブレートされると、ソフトウェアはメモリコントローラ３２２をそれのメモリコピー状態に移行させ、メモリのすべてを犠牲メモリアセンブリを含むチャネルに自動的にコピーする（ボックス３６８）。ハードウェアは、適切なデータインタリーブがコピー処理により復元されるように、どのチャネルが犠牲であったか検出するであろう。
【００６６】
ハードウェアは、コピー完了時を自動的に検出し（ＡＵＴＯ（完了））、両方のチャネルを介し再インタリーブされると、リード及びライト動作によりインタリーブミラーメモリ状態動作に自らを動的にシーケンス処理する（ボックス３７０、ＡＵＴＯ（トラフィック）及びボックス３５２）。上述のように、本発明は図２３の詳細に限定されるものではない。
【００６７】
非インタリーブ状態には異なるタイプのものがある。例えば、完全な非インタリーブ状態では、犠牲チャネルは完全に停止されるため、システムはもはやミラーリングされない。本質的には、非犠牲チャネルは、すべてのデータセクションを有し、実際的な目的のため、これらのデータセクションはすべてプライマリデータセクションとして扱われる。犠牲チャネルへの電力が回復されると、データはそれのメモリアセンブリにコピーされ、メモリセクションのプライマリ及び冗長状態が再確立される。部分的な非インタリーブ状態では、犠牲チャネルとチャネル上の任意のメモリアセンブリは、故障しているメモリアセンブリを除き動作を継続する。この場合、故障したメモリアセンブリに対応する非犠牲チャネルのメモリアセンブリのデータセクションは、維持されるか、あるいは故障が訂正されるまでプライマリ状態に変更される。いくつかのケース及び実施例では、単に対応する故障していないメモリアセンブリから故障しているメモリにデータをコピーすることにより、故障を訂正するようにしてもよい。これらのケースでは、当該部分的非インタリーブ状態において、犠牲チャネルは、図２３にあるように停止される必要はない。しかしながら、メモリアセンブリは交換される必要があると判明するかもしれない。上記基本的タイプの非インタリーブ状態の変形が利用されてもよい。いくつかの実施例では、故障に応答して、故障したメモリアセンブリの冗長メモリは、故障が訂正されるまで、犠牲及び/または非犠牲チャネル上の故障していないメモリアセンブリにおいて再生成及び分散される。このようにして、故障が訂正されるまで、これらは冗長メモリであり続ける。
【００６８】
Ｆ．追加的情報及び実施例
図に示される各システムでは、各メモリコントローラは、表示されたメモリコントローラが異なるものであることを示すため、異なる参照番号を有する。しかしながら、メモリコントローラは、異なる実現形態を備え、説明または図示されたシステムの一部またはすべてと共に動作するのに十分な柔軟性を有するものであってもよい。図に示される各種チャネルは、同一のものであってもよいし、あるいは異なるものであってもよい。どのチャネルが第１チャネル及び第２チャネルとして参照されるかは任意である。あるシステムの様々なメモリアセンブリは、詳細において同一または異なるものであってもよい。
【００６９】
一実施例は、本発明の一実現形態または具体例である。明細書における「ある実施例」、「一実施例」、「いくつかの実施例」または「他の実施例」の参照は、当該実施例に関して説明される特徴または構成が、少なくともいくつかの実施例に含まれるが、必ずしも本発明のすべての実施例に含まれる必要はないということを意味する。「ある実施例」、「一実施例」または「いくつかの実施例」による様々な表現は、必ずしもすべてが同一の実施例を参照するものでない。
【００７０】
明細書において、構成要素、特徴または構成が「含まれてもよい」、「含まれうる」または「含めることができる」と表現されている場合、当該構成要素、特徴または構成は含まれることが必須とされていない。明細書または請求項が「ある」要素と表現している場合、これは、当該要素が１つだけ存在するということを意味するものでない。明細書または請求項が「追加的」要素を表現している場合、これは、この追加的要素が複数存在することを排除するものでない。
【００７１】
本発明は、ここで列挙された特定の詳細に限定されるものではない。本開示の効果を有する当業者は、本発明の範囲を逸脱することなく、上記説明及び図面から他の多くの変形が可能であるということを理解するであろう。このため、本発明の範囲を画定するのは、任意の補正を含む以下の請求項である。
【図面の簡単な説明】
【００７２】
【図１】図１は、従来技術によるメモリミラーシステムのブロック図である。
【図２】図２は、本発明の一実施例によるインタリーブミラーメモリシステムのブロック図である。
【図３】図３は、本発明の一実施例によるインタリーブミラーメモリシステムのブロック図である。
【図４】図４は、本発明の一実施例によるインタリーブミラーメモリシステムのブロック図である。
【図５】図５は、本発明の一実施例によるメモリアセンブリのランクを示すインタリーブミラーメモリシステムのブロック図である。
【図６】図６は、本発明の一実施例によるメモリアセンブリのランクを示すインタリーブミラーメモリシステムのブロック図である。
【図７】図７は、本発明の一実施例によるメモリアセンブリのランクを示すインタリーブミラーメモリシステムのブロック図である。
【図８】図８は、本発明の一実施例によるメモリアセンブリのランクを示すインタリーブミラーメモリシステムのブロック図である。
【図９】図９は、本発明のいくつかの実施例によるチップセット選択ラインを示すインタリーブミラーメモリシステムのブロック図である。
【図１０】図１０は、本発明の一実施例によるメモリモジュールのブロック図である。
【図１１】図１１は、本発明の一実施例によるメモリモジュールのブロック図である。
【図１２】図１２は、本発明の一実施例によるメモリモジュールのブロック図である。
【図１３】図１３は、本発明の一実施例によるメモリモジュールのブロック図である。
【図１４】図１４は、本発明の一実施例によるインタリーブミラーメモリシステムのブロック図である。
【図１５】図１５は、本発明の一実施例によるインタリーブミラーメモリシステムのブロック図である。
【図１６】図１６は、本発明の一実施例によるインタリーブミラーメモリシステムのブロック図である。
【図１７】図１７は、本発明の一実施例によるインタリーブミラーメモリシステムのブロック図である。
【図１８】図１８は、本発明の一実施例によるインタリーブミラーメモリシステムのブロック図である。
【図１９】図１９は、本発明のいくつかの実施例によるメモリコントローラを有するシステムのブロック図である。
【図２０】図２０は、本発明のいくつかの実施例によるメモリコントローラに含まれてもよいいくつかの詳細のブロック図である。
【図２１】図２１は、本発明のいくつかの実施例によるメモリチップのブロック図である。
【図２２】図２２は、本発明のいくつかの実施例によるメモリモジュールのブロック図である。
【図２３】図２３は、本発明のいくつかの実施例の動作のフロー図である。
【図１】
2006505864.tif 000007
【図２】
2006505864.tif 000008
【図３】
2006505864.tif 000009
【図４】
2006505864.tif 000010
【図５】
2006505864.tif 000011
【図６】
2006505864.tif 000012
【図７】
2006505864.tif 000013
【図８】
2006505864.tif 000014
【図９】
2006505864.tif 000015
【図１０】
2006505864.tif 000016
【図１１】
2006505864.tif 000017
【図１２】
2006505864.tif 000018
【図１３】
2006505864.tif 000019
【図１４】
2006505864.tif 000020
【図１５】
2006505864.tif 000021
【図１６】
2006505864.tif 000022
【図１７】
2006505864.tif 000023
【図１８】
2006505864.tif 000024
【図１９】
2006505864.tif 000025
【図２０】
2006505864.tif 000026
【図２１】
2006505864.tif 000027
【図２２】
2006505864.tif 000028
【図２３】
2006505864.tif 000029
【国際調査報告】
2006505864.tif 000030
2006505864.tif 000031
2006505864.tif 000032
2006505864.tif 000033
2006505864.tif 000034