(57)【特許請求の範囲】
【請求項１】
第一のメモリ・エージェントから信号を受信して該信号を第二のメモリ・エージェントへの経路上に再駆動するよう構成された複数のビットレーンをもつ再駆動回路であって、各ビットレーンは前記第一のメモリ・エージェントと前記第二のメモリ・エージェントとの間の単方向ポイントツーポイント・チャネルをなすものである、再駆動回路と、
当該メモリ・バッファをメモリ素子に結合するためのメモリ・インターフェースと、
前記再駆動回路の前記複数のビットレーンと前記メモリ・インターフェースとの間に結合され、前記複数のビットレーンの第一のビットレーンからの信号を前記複数のビットレーンの第二のビットレーンに経路変更することのできるフェイルオーバー回路とを有しており、
前記再駆動回路は、該再駆動回路がより外側のメモリ・エージェントに接続されていないかどうかに基づいて選択的に無効にされることを特徴とするメモリ・バッファ。
【請求項２】
前記フェイルオーバー回路が前記再駆動回路とは別個であることを特徴とする、請求項１記載のメモリ・バッファ。
【請求項３】
前記再駆動回路から受信されたデータのビット間のスキューを低減するための、前記複数のビットレーンと前記フェイルオーバー回路との間に結合されているデスキュー回路をさらに有することを特徴とする、請求項１記載のメモリ・バッファ。
【請求項４】
前記再駆動回路から受信されたデータのビット間のスキューを低減するための、前記フェイルオーバー回路と前記メモリ・インターフェースとの間に結合されているデスキュー回路をさらに有することを特徴とする、請求項１記載のメモリ・バッファ。
【請求項５】
前記フェイルオーバー回路がクロスバー・スイッチを有することを特徴とする、請求項１記載のメモリ・バッファ。
【請求項６】
前記フェイルオーバー回路がマルチプレクサを有することを特徴とする、請求項１記載のメモリ・バッファ。
【請求項７】
前記フェイルオーバー回路が、別のメモリ・エージェントによって送られた試験データパターンの観察に基づいて、エラーのあったビットレーンを検出することができることを特徴とする、請求項１記載のメモリ・バッファ。
【請求項８】
前記フェイルオーバー回路が、信号を経路変更することによって、コマンドに反応してエラーのあったビットレーンを経路から除外することができることを特徴とする、請求項１記載のメモリ・バッファ。
【請求項９】
第一のメモリ・エージェントから信号を受信して該信号を第二のメモリ・エージェントへの経路上に再駆動するよう構成された複数のビットレーンをもつ再駆動回路であって、各ビットレーンは前記第一のメモリ・エージェントと前記第二のメモリ・エージェントとの間の単方向ポイントツーポイント・チャネルをなすものである、再駆動回路と、
メモリ素子と、
前記再駆動回路の前記複数のビットレーンと前記メモリ素子との間に結合され、前記複数のビットレーンの第一のビットレーンからの信号を前記複数のビットレーンの第二のビットレーンに経路変更することのできるフェイルオーバー回路とを有しており、
前記再駆動回路は、該再駆動回路がより外側のメモリ・エージェントに接続されていないかどうかに基づいて選択的に無効にされることを特徴とするメモリ・モジュール。
【請求項１０】
エラーのあったビットレーンを検出することができることを特徴とする、請求項９記載のメモリ・モジュール。
【請求項１１】
コマンドに反応してエラーのあったビットレーンを経路から除外することができることを特徴とする、請求項９記載のメモリ・モジュール。
【請求項１２】
複数のビットレーンをもつ単方向リンク・インターフェースと、
前記複数のビットレーンに結合されたフェイルオーバー回路と、
第一のメモリ・エージェントから信号を受信して該信号を第二のメモリ・エージェントへの経路上に再駆動するよう構成された、第三のメモリ・エージェントが結合されている再駆動回路を制御する手段とを有しており、
前記再駆動回路が、前記第三のメモリ・エージェントが前記経路上の最後のメモリ・エージェントであるかどうかに基づいて選択的に無効にされることを特徴とするメモリ・コントローラ。
【請求項１３】
エラーのあったビットレーンを検出することができることを特徴とする、請求項１２記載のメモリ・コントローラ。
【請求項１４】
前記複数のビットレーンのうちエラーのあったものを経路から除外するようエージェントに指示するコマンドを発することができることを特徴とする、請求項１２記載のメモリ・コントローラ。
【請求項１５】
第一のメモリ・エージェントと、
第二のメモリ・エージェントと、
前記第一のメモリ・エージェントと第二のメモリ・エージェントとの間に結合された複数のビットレーンをもつ単方向リンクとを有しており、
前記第一のメモリ・エージェントが前記複数のビットレーン上の一つまたは複数の信号を経路変更することができ、
前記第一のメモリ・エージェントに結合され、前記第一のメモリ・エージェントから信号を受信して該信号を別のメモリ・エージェントへの経路上に再駆動するよう構成された再駆動回路が、前記第一または第二のメモリ・エージェントの一つがより外側のメモリ・エージェントに接続されていないかどうかに基づいて選択的に無効にされることを特徴とする、メモリ・システム。
【請求項１６】
前記第二のエージェントが前記複数のビットレーン上の一つまたは複数の信号を経路変更することができることを特徴とする、請求項１５記載のメモリ・システム。
【請求項１７】
前記第一のエージェントが、前記複数のビットレーンの第一のビットレーンからの信号を前記複数のビットレーンの第二のビットレーンに経路変更することのできるフェイルオーバー回路を有していることを特徴とする、請求項１５記載のメモリ・システム。
【請求項１８】
前記第一のエージェントがエラーのあったビットレーンを検出することができることを特徴とする、請求項１５記載のメモリ・システム。
【請求項１９】
前記第一のエージェントが、コマンドに反応して、エラーのあったビットレーンを経路から除外することができることを特徴とする、請求項１５記載のメモリ・システム。
【請求項２０】
メモリ・エージェントを動作させる方法であって、
再駆動回路によって、複数のビットレーン上で信号を再駆動し、各ビットレーンは前記メモリ・エージェントと別のメモリ・エージェントとの間の単方向ポイントツーポイント・チャネルをなすものであり、
前記別のメモリ・エージェントからの前記複数のビットレーンの信号を前記メモリ・エージェントに結合されたメモリ・インターフェースに結合し、
前記複数のビットレーンと前記メモリ・インターフェースとの間の一つまたは複数の信号を経路変更し、
前記メモリ・エージェントが前記複数のビットレーンのうちの一つまたは複数のビットレーン上の最後のメモリ・エージェントであるかどうかに基づいて、前記再駆動回路による前記再駆動を選択的に無効化する、
ことを含むことを特徴とする、方法。
【請求項２１】
エラーのあったビットレーンを検出することをさらに含むことを特徴とする、請求項２０記載の方法。
【請求項２２】
一つまたは複数の信号の経路変更が、コマンドに反応して一つまたは複数の信号を経路変更することであることを特徴とする、請求項２０記載の方法。
【請求項２３】
メモリ・コントローラから信号を複数のビットレーンをもつ第一の単方向リンク上で送信し、
前記メモリ・コントローラにおいて信号を複数のビットレーンをもつ第二の単方向リンク上で受信し、
前記単方向リンクの一方の複数のビットレーン上で一つまたは複数の信号を経路変更し、
前記メモリ・コントローラが、前記複数のビットレーン上の一つまたは複数の信号を再駆動する再駆動回路を制御し、
前記再駆動回路は、該再駆動回路がより外側のメモリ・エージェントに接続されていないかどうかに基づいて選択的に無効化される、
ことを特徴とする方法。
【請求項２４】
前記単方向リンクの両方の複数のビットレーン上の一つまたは複数の信号を経路変更することをさらに含むことを特徴とする、請求項２３記載の方法。
【請求項２５】
エラーのあったビットレーンを検出することをさらに含むことを特徴とする、請求項２３記載の方法。
【請求項２６】
コマンドに応じてエラーのあったビットレーンを経路から除外することをさらに含むことを特徴とする、請求項２３記載の方法。
【請求項２７】
第一のメモリ・エージェントから信号を複数のビットレーンをもつ第一の単方向リンク上で第二のメモリ・エージェントに送信し、
前記複数のビットレーン上で一つまたは複数の信号を経路変更し、
前記第一または第二のメモリ・エージェントの一つが前記複数のビットレーンのうちの一つまたは複数のビットレーン上の最後のメモリ・エージェントであるかどうかに基づいて、前記複数のビットレーン上で一つまたは複数の信号を再駆動する、
ことを特徴とする方法。
【請求項２８】
エラーのあったビットレーンを検出することをさらに含むことを特徴とする、請求項２７記載の方法。
【請求項２９】
一つまたは複数の信号の経路変更が、コマンドに反応して一つまたは複数の信号を再駆動することであることを特徴とする、請求項２７記載の方法。
【請求項３０】
一つまたは複数の信号の経路変更が、エラーのあったビットレーンを経路から除外することであることを特徴とする、請求項２７記載の方法。
【請求項３１】
エラーのあったビットレーンを経路から除外することが、前記エラーのあったビットレーンを通るはずだった信号を前記第一のメモリ・エージェントおよび前記第二のメモリ・エージェントの両者において経路変更することであることを特徴とする、請求項３０記載の方法。
【発明の詳細な説明】
【背景技術】
【０００１】
図１は、アメリカ電気・電子通信学会（IEEE:  Institute  of  Electrical  and  Electronics  Engineers）によって標準規格として提案された、非公式にラムリンク（RamLink）として知られる従来技術のメモリ・システムを示している。この規格はIEEE規格1596.4-1996と表示され、正式にはIEEE  Standard  for  High-Bandwidth  Memory  Interface  Based  on  Scalable  Coherent  Interface  (SCI)  Signaling  Technology  (RamLink)（スケーラブルな一貫インターフェース(SCI)信号伝送技術(RamLink)に基づく高バンド幅メモリ・インターフェースのためのIEEE規格）として知られている。図１のシステムはメモリ・コントローラ１０および一つまたは複数のメモリ・モジュール１２を含んでいる。メモリ・コントローラ１０は典型的にはプロセッサに組み込まれるか、プロセッサのコンパニオン・チップセット上に作りつけられる。各メモリ・モジュール１２は、リンク入力一つとリンク出力一つとを有するスレーブ・インターフェース１４を有している。各要素はリングリンク（RingLink）として知られるラムリンクの信号伝送トポロジーで配列されており、要素間は単方向リンク１６で結ばれている。各モジュール上にある制御インターフェース１８はスレーブ・インターフェース１４とメモリ素子２０とのインターフェースになる。図１に示したシステムでは、スレーブ・インターフェースとメモリ素子との間に、シンクリンク（SyncLink）として知られるもう一つのラムリンク信号伝送トポロジーが使われている。
【０００２】
ラムリンク・システムの目的は、プロセッサにメモリ素子への高速アクセスを提供することである。データは、メモリ・コントローラとメモリ素子との間でパケットとして転送され、そのパケットはリングリンクに沿って循環する。コントローラは、すべての要求パケットを生成し、スレーブの応答パケットの戻りの計画を立てる役割を担っている。
【０００３】
書き出し処理は、コントローラがコマンド、アドレス、時刻、データを含む要求パケットをある特定のモジュールに送信することで開始される。パケットはモジュールからモジュールへと渡されて目的のスレーブに到着し、するとそのスレーブは当該データをメモリ素子の一つに渡して保存させる。次いでそのスレーブは応答パケットを送る。この応答パケットはモジュールからモジュールへと渡されてコントローラに到着し、書き出し処理が完了したことを確証する。
【０００４】
読み出し処理は、コントローラがコマンド、アドレス、時刻を含む要求パケットをあるモジュールに送信することで開始される。指定されたモジュール上のスレーブはメモリ素子の一つから要求されたデータを取得し、それを応答パケットの形でコントローラに返す。この応答パケットもやはりモジュールからモジュールへと渡されてコントローラに到着する。
【０００５】
図２は、従来技術のラムリンクのスレーブ・インターフェース回路である。図２の回路では、ソース同期のストロボ作用が入力データ信号をクロックするのに使われる。すなわち、入力データ信号にストロボ信号が付随し、そのストロボ信号が入力データをサンプリングするのに使われるのである。図２の回路は、他のスレーブ・インターフェース回路に分配される参照クロック信号から安定したローカル・クロック信号を生成するために位相ロック・ループ（PLL:  phase-locked  loop）を使っている。このローカル・クロック信号は、データが下流に渡されていくにつれてジッタが累積するのを避けるため、出力データ信号をクロックし直すのに使われる。
【発明の開示】
【０００６】
［発明を実施するための最良の形態］
この特許は独立した有用性をもつ数多く事項を包含する発明の一環である。場合によっては、原理のいくつかをさまざまに組み合わせて用いることでさらなる恩恵が実現され、それによりさらなる発明を生じることになる。これらの原理は無数の実施形態において実現しうるものである。いくつかの個別的な詳細が発明の原理を解説する目的で示されるが、ほかにも数多くの構成が本発明の原理に基づいて考案されうる。よって、発明の原理はここに開示される個別的な詳細に限定されるものではない。
【０００７】
図３は、本発明の原理に基づくメモリ・インターフェース・システムのある実施形態を示している。図３のシステムはメモリ・コントローラ５０および一つまたは複数のメモリ・モジュール５２を含んでおり、それらは単方向リンクからなるチャネルを通じて通信する。チャネルは、一つまたは複数の外向きリンク５４を有する外向き経路と、一つまたは複数の内向きリンク５６を有する内向き経路とを有している。各モジュールは外向き経路上でリンクからリンクへ、内向き経路上でリンクからリンクへと信号を再駆動することができてもよい。各モジュールはまた、たとえば該モジュールが自らが最外モジュールであると検知した場合、あるいはメモリ・コントローラからのコマンドに反応して、いずれかの再駆動機能を選択的に無効にすることができてもよい。
【０００８】
各モジュールは、前記経路の一つまたは複数との間でデータを転送するよう構成されている一つまたは複数のメモリ素子５８を含んでいる。たとえば、当該モジュールは、外向き経路からのデータがメモリ素子に転送され、該メモリ素子からのデータが内向き経路に転送されるよう構成されてもよい。一つまたは複数のバッファが一つまたは複数のメモリ素子と一つまたは複数の経路との間に配置されていてもよい。モジュールおよびコントローラは、いかなる特定の機械的構成に限定されるものでもない。たとえば、モジュールはシステムの他の部分とは別個の基板上に作りつけられてもよいし、コントローラやリンクと共通の基板上に作りつけられてもよいし、その他いかなる機械的構成で実現されてもよい。モジュールはまた、いかなる特定の種類のメモリ素子、たとえば読み出し専用メモリ（ＲＯＭ）、動的ランダム・アクセス・メモリ（ＤＲＡＭ）、フラッシュメモリなどに限定されるものでもない。
【０００９】
図４は、本発明の原理に基づくメモリ・モジュールのある実施形態を示す図である。図４のモジュールは、単方向リンク５４Ａおよび５６Ａ上の信号を受信する二つの再駆動回路６０および６２を含んでおり、それぞれ単方向リンク５４Ｂおよび５６Ｂ上の信号を再駆動する。一つまたは複数のメモリ素子５８は、前記再駆動回路の一つまたは複数との間でデータを転送するよう構成されている。
【００１０】
図４のモジュールは単方向リンクのいかなる特定の構成にも、また再駆動回路との間のデータ転送のためのいかなる特定の構成にも限定されるものではない。図４のモジュールが図３で示したようなメモリ・システムにおいて使用される場合、再駆動回路６０は外向き再駆動回路と呼称し、リンク５４Ａおよび５４Ｂを含む外向き経路上の信号を受信して再駆動するよう構成され、もう一方の再駆動回路６２は内向き再駆動回路と呼称し、リンク５６Ａおよび５６Ｂを含む内向き経路上の信号を受信して再駆動するよう構成されてもよいであろう。この例では、一つまたは複数のメモリ素子５８は、外向き再駆動回路６０からメモリ素子へ、そして該メモリ素子から内向き再駆動回路６２へとデータが転送されるよう構成されてもよい。
【００１１】
モジュールは、自らがチャネル上の最外モジュールであると検知して、いずれかの再駆動機能を選択的に無効にすることができてもよい。たとえば、図４のモジュールが図３に示したようなメモリ・システムにおいて使用され、該モジュールが自らが最外モジュールであると検知した場合、外向き再駆動回路はリンク５４Ａ上の入力信号を受信するが、それを再駆動はしない。同様に、内向き再駆動回路がリンク５６Ｂを駆動するのも、メモリ素子から受け取ったデータに対応する信号や当該モジュールによって内部的に生成されうるその他の信号に対応してのみである。あるいはまた、当該モジュールが自らが最外モジュールだと検知したのでなくても、あたかも最外モジュールであるかのように動作できる（たとえば、メモリ・コントローラからのコマンドに反応して）よう構築されることもできる。その場合、当該モジュールは内向きリンク５６Ａ上で受信された信号は無視し、外向きリンク５４Ｂへの信号は再駆動しないようにすることができる。
【００１２】
図５は、本発明の原理に基づくメモリ・モジュールのある別の実施形態およびメモリ・バッファのある実施形態を示している。図５のモジュールは、単方向リンク５４Ａおよび５６Ａ上の信号を受信し、該信号を単方向リンク５４Ｂおよび５６Ｂ上の信号を駆動する二つの再駆動回路それぞれ６０および６２を有するメモリ・バッファ６４を含んでいる。このメモリ・バッファはまた、一つまたは複数のメモリ素子５８との間でデータを転送するよう構成されているメモリ・インターフェース６６をも含んでいる。このバッファは、自らがチャネル上の最後のエージェントであると検知して、いずれかの再駆動機能を選択的に無効にすることができてもよい。そうでなくても、このバッファは、たとえばメモリ・コントローラからのコマンドに反応して、あたかもチャネル上で最後のエージェントであるかのように動作できてもよい。ここで、エージェントというのは、前記チャネルとのインターフェースを与えられているいかなるメモリ・コントローラ（ホストともいう）、モジュール、バッファなどを指すのでもよい。
【００１３】
図５のモジュールおよびバッファは、単方向リンクのいかなる特定の構成にも、またメモリ・インターフェースと再駆動回路との間のデータ転送のためのいかなる特定の構成にも限定されるものではない。図５のモジュールが図３で示したようなメモリ・システムにおいて使用される場合、再駆動回路６０は外向き再駆動回路と呼称し、リンク５４Ａおよび５４Ｂを含む外向き経路上の信号を受信して再駆動するよう構成され、もう一方の再駆動回路６２は内向き再駆動回路と呼称し、リンク５６Ａおよび５６Ｂを含む内向き経路上の信号を受信して再駆動するよう構成されてもよいであろう。この例では、当該メモリ・インターフェースは、外向き再駆動回路６０からデータを受け取って内向き再駆動回路６２にデータを送るよう構成されてもよい。
【００１４】
図４および図５のメモリ・モジュールやバッファを実装するのには、さまざまな機械的構成が使用されうる。たとえば、メモリ素子５８、再駆動回路６０および６２、バッファ６４はみな、共通の回路基板上に搭載される別個の集積回路として実現されてもよいし、別個の回路基板上に実現されてもよい。共通の集積回路上に一緒に作りつけられる構成要素はさまざまな組み合わせがありうるし、全部が単一の集積回路上に作りつけられることもありうる。一つまたは複数の回路基板がもし使われるなら、それはマザーボード上のソケットに差し込みうる。ソケットはマザーボードと一体成形されていても、その他いかなる仕方で構成されていてもよい。たとえば、構成要素がマルチチップ・モジュールの一部として作りつけられている場合など、回路基板がないこともある。本発明の原理に基づくメモリ・バッファは、メモリ素子以外の素子にチャネルとのインターフェースを提供するのに用いることができる。たとえば、本発明の原理に基づくメモリ・バッファは、Ｉ／Ｏコントローラまたはブリッジにチャネルとのインターフェースを提供するのに用いることもできる。
【００１５】
本発明の原理に基づく装置のさらなる実施形態は、該装置が図３に示した実施形態のようなメモリ・システムにおいてどのように利用されうるかの理解を助けるため、「内向き」および「外向き」の経路、リンク、再駆動回路といった語句を用いながら記載される。しかし、これらの装置は単方向リンクのいかなる特定の構成にも、リンクと他の回路との間のデータ転送のために示された特定の構成にも、示されるいかなる実装上の詳細にも限定されるものではない。
【００１６】
図６は、本発明の原理に基づくメモリ・システム、メモリ・モジュールおよびメモリ・バッファの実施形態のさらなる例を示している。図６を参照すると、一つまたは複数のメモリ・モジュール５２はプリント回路基板をベースとしており、そのプリント回路基板は、一端の両側に沿って接触端子があってデュアル・インライン・メモリ・モジュール（DIMM:  dual  inline  memory  module）を形成し、当該システムの他の構成要素を保持している別の回路基板上のコネクタに差し込むこともできる。そのモジュールには、たとえばダブル・データ・レートＩＩ（DDR2:  Double  Data  Rate  II）動的ランダム・アクセス・メモリ（DRAM:  dynamic  random  access  memory）モジュールに使われているようなＤＩＭＭ外形寸法のような、既存の外形寸法を採用してもよい。
【００１７】
モジュールにはメモリ素子５８が配置されている。メモリ素子は、たとえばＤＤＲ２  ＤＲＡＭのような市販タイプのＤＲＡＭである。各モジュール上のメモリ・バッファ６４は、それらのメモリ素子を、モジュールのメモリ・コントローラ５０（ホストともいう）とのインターフェースになるチャネルから隔離する。チャネルは二点間構成の形で配線されており、外向きリンク５４を含む外向き経路および内向きリンク５６を含む内向き経路を有している。リンクは、低電圧差動信号（low-voltage  differential  signals）を使った平衡型の単方向ビットレーンを用いて実装してもよい。
【００１８】
図６の実施形態では、コマンド、リセット、初期化などの機能のための追加的な信号線は使われていない。これらの機能はチャネル上で送られるデータ内に直接エンコードされるのである。しかし、代替的に、そのような機能を実装するために追加の信号線をいくつ設けてもよい。
【００１９】
参照クロック信号ＲＥＦ  ＣＬＫがクロック・シンセサイザ７６によって生成され、ホストおよびモジュールに分配される。その際、クロック・バッファ７８を経由してもよい。これにより、ローカルに生成されたクロック信号が入力データをサンプリングして再駆動するのに使われるという、準非同期クロック方式を容易にする。共通参照クロックが各エージェントにおいて利用可能なので、データ信号は周波数追跡することなくクロックされうる。代替的に、ローカルなクロック信号が参照信号とは独立して生成されてもよい。もう一つの代替として、ソース同期ストロボ作用のような同期クロック方式を用いてもよい。
【００２０】
ある可能な実施形態では、ホストは、外向き経路上の最内モジュールに、おそらくはパケットまたはフレーム（両者はここでは交換可能な語として用いている）の形でデータを送ることによってデータ転送を開始する。最内モジュールはそのデータを受信して、外向き経路上で次のモジュールへと再駆動する。各モジュールは外向きデータを受信しては再駆動していき、ついには最外モジュールに至る。最外モジュールは「存在しない」外向きリンクに対してデータを駆動しようと試みてもよいが、各モジュールは自らが最外モジュールであることを検知し（または指示され）、無用な電力消費やノイズなどを減らすために再駆動回路すべてを無効にできるようになっていてもよい。この実施形態では、ホストの方向への、すなわち内向きのデータ転送は、前記最外モジュールによって開始される。各モジュールは内向き経路に沿って内向きデータを受信しては再駆動していき、ついにはホストに至る。
【００２１】
物理チャネルにおいてはいかなる好適な通信プロトコルを用いてもよい。たとえば、ホストがすべての内向きおよび外向きのデータ転送のすべてを開始し、計画立てるよう指定されていてもよい。あるいはまた、どのエージェントもデータ転送を開始するのを認められているのでもよい。データのフレームはコマンドを伝えるよう構成されていてもよい。データ読み出し、データ書き出し、状態情報、エラー情報、初期化データ、無意味パターンなど、あるいはその任意の組み合わせなどである。プロトコルは、ホストがコマンド・フレームをある目的モジュールに対して外向き経路に沿って送ったときに、目的モジュールがすぐに応答フレームをホストに対して内向き経路に沿って送り返すように実装されていてもよい。そのような実施形態では、目標モジュールはコマンド・フレームを外向き経路に再駆動することはしない。
【００２２】
代替的な実施形態では、目標モジュールはコマンド・フレームを受信し、次いでそのコマンド・フレームを外向き経路上に再駆動する。最外モジュールがコマンド・フレームを受信すると、最外モジュールは応答フレームを内向き経路上に発生させる（単なる無意味フレームでもよい）。目標モジュールは、その内向き受信要素に前記応答フレームが到着するまで待っている。それから目標フレームは、たとえば最外モジュールによって送られた応答フレームを該目標フレームの真の応答フレームで置き換えることなどによって、内向きデータ・ストリーム内に自分の応答を混ぜ込む。
【００２３】
図７は、本発明の原理に基づくメモリ・バッファのもう一つの実施形態の例を示している。図７のメモリ・バッファは、リンク５４Ａおよび５４Ｂを含む外向き経路上の信号を受信して再駆動する外向き再駆動回路６０ならびに、リンク５６Ａおよび５６Ｂを含む内向き経路上の信号を受信して再駆動する内向き再駆動回路６２を含んでいる。メモリ・インターフェース６６は、バッファと一つまたは複数のメモリ素子とのインターフェースとなる。それはメモリ・バス６８を介してであってもよい。メモリ・インターフェースは、ＦＩＦＯバッファのような読み出し・書き出しバッファを含んでいてもよい。外向き経路からのデータはメモリ・インターフェースに結合されるが、それはデスキュー回路７０を介してであってもよい。デスキュー回路とは、外向き経路に二つ以上のビットレーンがあった場合にデータビットの間の位相差（skew）を解消するものである。パターン発生器７２を使って状態パターンを生成し、それを内向き経路上に送出してもよい。これはたとえば、当該バッファがたまたまチャネル上の最外エージェントであって、内向きリンク５６Ａ上に入力信号が受信されないことがありうるような場合である。マルチプレクサ７４は選択的にメモリ・インターフェースまたはパターン発生器からのデータを内向き再駆動回路に結合する。
【００２４】
前記メモリ・インターフェースはいかなる特定の構成に限定されるものでもなく、標準的なメモリ素子、特にＤＤＲ２  ＤＲＡＭのような市販のメモリ素子と互換のものでもよい。当該メモリ・バッファ全体が単一の集積回路に組み込まれていてもよいし、一つまたは複数のメモリ素子に組み込まれていてもよいし、その構成要素が別個のコンポーネントに組み込まれていてもよいし、その他いかなる機械的構成を採用してもよい。図７に示した実施形態は単なる例であって、他の実施形態も本発明の原理に基づいて可能である。たとえば、図７の実施形態は外向き再駆動回路からメモリ・インターフェースへ、該メモリ・インターフェースから内向き再駆動回路へと流れる単方向データを用いて示しているが、このデータの流れは双方向でもよいし、その他の構成も考えられる。たとえ図７の実施形態が使われるチャネル・システムにおいて当該メモリ・インターフェースのためのデータが図７に示した通りの流れをする必要しかないとしても、それでも完全な双方向データ・アクセスを有する再駆動回路を用いて実現することができる。そうすればたとえば組み込み自己診断（BIST:  built-in  self-test）機能の実装などが容易になりうる。その場合、内向き経路からのデータの位相差解消のために第二のデスキュー回路を設けておくと有用となりうる。
【００２５】
図８は、本発明の原理に基づく再駆動回路のある実施形態を示している。図８の回路は一つまたは複数の入出力（Ｉ／Ｏ）セル７４を含んでおり、そのそれぞれは入力データ信号ＲＸを受信し、それを出力データ信号ＴＸとして再駆動しうる。あるいはまた、Ｉ／Ｏセルは読み出しデータ信号ＲＤＸを置換または挿入によって出力データ信号に入れてもよい。書き出しデータ信号ＷＤＸを前記入力データ信号から取り出すのは、該入力データ信号が出力データ信号として再駆動される前でも後でもよい。
【００２６】
上記の信号名における「Ｘ」は、それが再駆動回路中にいくつかあるＩ／Ｏセルごとにある複数の同様の信号の一つでありうることを示している。たとえば、９つのビットレーンを有する再駆動回路は、Ｒ０、Ｒ１、…Ｒ８という名の入力データ信号をもつ９つのＩ／Ｏセルを有することになる。Ｉ／Ｏセルが一つだけの再駆動回路では、データ入力信号はＲ０または単にＲとなる。総称としてＲＸを使うことで前記入力データ信号のいずれか、あるいは全部を指すものとする。
【００２７】
「書き出しデータ」の語は、Ｉ／Ｏセルを通るデータ・ストリームから取り出される任意のデータを指すのに便宜上使っている。ただし、これは書き出しデータがメモリ・インターフェースまたはメモリ素子に向けられなければならないことを含意するものではない。同様に、「読み出しデータ」はＩ／Ｏセルに入力される任意のデータを指すが、読み出しデータの出所はメモリ素子またはメモリ・インターフェースのみならずいかなるソースであってもよい。
【００２８】
再び図８を参照すると、クロック発生器８０が参照クロック信号ＲＥＦ  ＣＬＫに反応していくつかの位相クロック信号（phase  clock  signal）ＰＣＸおよび一つの送信クロック信号（transmit  clock  signal）ＴＣを発生させる。クロック発生器は、送信クロックＴＣを参照クロック信号ＲＥＦ  ＣＬＫの倍数周期として発生させる位相ロック・ループ（ＰＬＬ）８２と、位相クロック発生器８４とを含んでいる。ある可能な実施形態では、４つの位相クロック信号ＰＣ０、ＰＣ１、ＰＣ２、ＰＣ３が９０°間隔で、送信クロックＴＣから導かれて存在する。Ｉ／Ｏセルのそれぞれは、ＴＣおよびＰＣＸクロック信号の一つまたは複数を、データ信号をサンプリングおよび／または再駆動したり、追加的なローカルなクロック信号を発生させたりするのに使うことができる。この実施形態では、位相クロック信号および送信クロック信号は、いかなる入力データ信号ＲＸの位相に応じても調整されないという意味で安定な信号である。
【００２９】
図９は、本発明の原理に基づくＩ／Ｏセルのある実施形態を示している。受信素子８６はデータ信号ＲＸを受信し、サンプリング・クロック信号ＳＣに反応してそれをデータ信号ＴＸとして再駆動するよう構成されている。サンプリング・クロック信号はサンプリング・クロック発生器８８によって発生され、該サンプリング・クロック発生器８８はデータ信号ＲＸに反応してサンプリング・クロック信号を調整することができる。書き出しデータ信号ＷＤＸは受信素子８６の入力または出力から取ることができる。もし図９に示すように受信素子の出力から取るのであれば、サンプリング・クロック信号ＳＣは、書き出しデータに対するストロボ信号として、あるいは該ストロボ信号を導くために使われうる。サンプリング・クロック発生器への入力は、図９に示すような受信素子の入力以外の点から取ることができる。たとえば、受信素子の出力からも取ってよい。
【００３０】
図１０は、本発明の原理に基づくＩ／Ｏセルのある別の実施形態を示している。図１０の実施形態では、サンプリング・クロック発生器８８は補間器９０および受信素子追跡ユニット（RTU:  receiver  tracking  unit）９２を用いて実装されている。補間器は、受信素子追跡ユニットからの追跡信号に反応して、いくつかの位相クロック信号ＰＣＸ（今の場合、９０°ずつ位相のずれた４つの信号）の間を補間することによってサンプリング・クロック信号を発生させる。受信素子追跡ユニットはデータ信号ＲＸを観測して、サンプリング・クロック信号が受信素子に適切な時点でデータ信号をサンプリングし、再駆動させるよう、追跡信号を調整する。よって、サンプリング・クロック信号は動的にデータ信号に追随しうる。
【００３１】
ある可能な実施形態では、受信素子追跡ユニットはデータ信号ＲＸにおける遷移をデータ信号のオーバーサンプリングによって観測し、データ信号がデータの目の中心で、すなわちデータ信号の遷移の中間点でサンプリングされ、再駆動されるようサンプリング・クロック信号を調整する。サンプリング・クロック発生器８８は、いくつかのビット・セルを測定し、当該データをよりデータの目の位置の中心近くで捕捉するためにサンプリング・クロック信号の位相を調整すべきかどうかを最終的に決定しうるループフィルタを含んでいてもよい。サンプリング・クロック発生器への入力は、図１０に示すような受信素子の入力以外の点から取ることができる。たとえば、受信素子の出力からも取ってよい。
【００３２】
本発明の原理に基づくＩ／Ｏセルの実施形態は、動的にデータ信号を追跡するようＩ／Ｏセルをトレーニングする方式とともに用いてもよい。たとえば、図１０のＩ／Ｏセルが図３に示したメモリ・モジュールの一つとして使用される場合、ホストは周期的にトレーニング・フレームを外向き経路上に送ってもよい。これらのトレーニング・フレームは、受信素子追跡ユニットがサンプリング・クロック信号を調整できるのに足る数の遷移をデータ信号中に観測することを保証するに十分な尖端密度を有している。同様に、図３における最外モジュールは周期的にトレーニング・フレームを内向き経路上に送ってもよい。
【００３３】
図１１は、本発明の原理に基づくＩ／Ｏセルのある別の実施形態を示す図である。図１１の実施形態は図９のものと同様であるが、データ信号の経路にバッファ９４が追加されている。バッファ９４はジッタ回避バッファまたはドリフト補償バッファであり、電圧や温度によって誘起される効果を補償するものである。バッファはデータ信号ＴＸを送信クロック信号ＴＣに再同期させる。送信クロック信号は、その位相が、データ信号に反応して、サンプリング・クロック信号ＳＣのようには調整されないという意味で安定である。
【００３４】
図１１の実施形態において、バッファは、モード信号に応じて素通しモードでも再駆動モードでも動作することができる。素通しモードでは、信号はサンプリングや再駆動を受けることなく通過する。再駆動モードでは、信号はクロック信号に反応してサンプリングされ、再駆動される。これにより、Ｉ／Ｏセルは異なる再駆動モードで動作できるようになる。ある可能な実施例では、バッファは、モード信号が加えられた場合に素通しモードで動作する。これは再サンプリングモードと称され、遅延が短くなる効果がある。データ信号がデータのサンプリングに使われるのと同じクロックによって再駆動されるからである。モード信号が加えられない場合にはバッファは再駆動モードで動作し、データは送信クロックに同期し直される。これは再同期モードと称され、遅延は長くなるがジッタを軽減する結果となりうる。Ｉ／Ｏセルはモード信号を受信するための入力を有するメモリ・バッファまたはメモリ・モジュールに組み込まれる設計でもよい。メモリ・バッファまたはメモリ・モジュールが次のエージェントまでの信号経路が比較的短いシステム上で使われるのであれば、入力を加えて（あるいは、極性によっては加えないで）Ｉ／Ｏセルを再サンプリングモードで動作させることができる。信号経路が短ければジッタが多くなっても許容されるからである。他方、メモリ・バッファまたはメモリ・モジュールが次のエージェントまでの信号経路が比較的長いシステム上で使われるのであれば、入力を加えるのをやめてＩ／Ｏセルを再同期モードで動作させることができる。遅延が長くなる可能性があるものの、ジッタが低減されるからである。代替方法として、メモリ・バッファまたはメモリ・モジュール上で、あるいは再駆動回路中で、あるいはＩ／Ｏセルそのものの中で、モード信号を制御するために記録されたフラグが使用されてもよい。
【００３５】
図１２は、本発明の原理に基づくＩ／Ｏセルのある別の実施形態を示している。図１２の実施形態では、受信データ信号ＲＸおよび送信データ信号ＴＸは差動信号であり、Ｉ／Ｏセルが作りつけられうる集積回路チップの端を横切るものとして示されている。受信素子８６はサンプリング・ユニット９６および終端ユニット９８を含んでいる。サンプリング・ユニットは入力データ信号を、サンプリング・クロック発生器からの位相クロック信号に反応して補間器９０によって生成されるサンプリング・クロック信号ＳＣに反応してサンプリングする。終端ユニットは差動終端を提供し、差動データ信号をシングルエンド信号に変換する。ジッタ回避バッファまたはドリフト補償バッファ９４はサンプリング・クロック信号ＳＣまたは安定な送信クロック信号ＴＣに反応してデータをクロックする。マルチプレクサ１００は選択的にバッファ９４またはシリアライザ１０２からのデータ信号を送信ラッチ１０４に結合する。読み出しデータ信号ＲＤＸ［０…ｎ］はＩ／Ｏセルにおいてはシリアライザ１０２で受信される。バッファ９４と送信ラッチ１０４との間にもう一つマルチプレクサを配置して、一つの入力をバッファに、もう一つの入力を補間器の出力に接続してもよい。
【００３６】
Ｉ／Ｏセルが読み出しデータをデータ・ストリームにマージする必要がある場合は、マルチプレクサはシリアライザに結合されている入力を選択して、送信ラッチが読み出しデータを送信クロック信号ＴＣに反応してＩ／Ｏセルから送出されるようクロックする。それ以外の場合には、マルチプレクサはデータ信号をバッファから選択し、次いで送信ラッチがその信号を再駆動する。送信データ信号は次の単方向リンクに送り出される前に送信素子１０６によって再度差動信号に変換される。書き出しデータは、送信ラッチの出力から取られ、デシリアライザ１０８で集められ、それからデスキュー回路、ビットレーン・フェイルオーバー機構その他の回路に送付される。デシリアライザはビット・ライン・クロック信号（BLC:  bit  line  clock  signal）も出力するようになっていてもよい。ＢＬＣはサンプリング・クロック信号から導くことができ、書き出しデータＷＤＸ［０…ｎ］がいつ有効になるかを示すものである。
【００３７】
本発明の原理のいくつかは、再駆動経路とは別個に信号の位相差解消を行うことに関している。再駆動経路は、信号が受信されては再駆動される形で伝搬する一つまたは複数の構成要素によって定義される。たとえば、図９および図１０の実施形態では、再駆動経路は受信素子８６およびバッファ９４を含んでいる。図１２の実施形態では、再駆動経路はサンプリング・ユニット９６、終端ユニット９８、バッファ９４、マルチプレクサ１００、送信ラッチ１０４、送信素子１０６を含んでいる。
【００３８】
本発明の原理のいくつかによれば、デスキュー回路は再駆動回路に組み込まれて、デスキュー回路の個々のビットレーンが再駆動経路に含まれるようにする。よって、ビットレーン上の信号は各再駆動回路において経路に沿って再駆動される際に位相差解消が行われうる。しかし、代替的に、本発明の原理に基づくデスキュー回路は再駆動経路とは別個のものでもよい。たとえば、図７の実施形態では、デスキュー回路は、再駆動回路６０の再駆動経路からのみならず再駆動回路全体からも独立している。あるいはまた、本発明の原理に基づくデスキュー回路は、再駆動回路に組み込まれてはいるが再駆動経路とは別個のものであってもよい。たとえば、図１２の実施形態において、一つまたは複数のデスキュー・ラッチがシリアライザ１０２の出力に、あるいはデシリアライザ１０８の入力に、あるいはその両方に位置していてもよい。
【００３９】
再駆動経路とは別個に信号の位相差解消を行う方法および装置の上記したような実施形態は単なる例であり、これらの特定の例に限定されるものではない。さらに、この特許に基づく再駆動経路とは別個に位相差解消を行うことに関する原理は、この特許の他の発明の原理とは独立している。たとえば、図９〜図１２において示されている再駆動回路の実施形態が別個の外向き経路と内向き経路を有するメモリ・システムでの使用に限定されないのとちょうど同じように、この特許に基づく再駆動経路とは別個に信号の位相差解消を行うことに関する原理も、たとえばラムリンクのようなリング型構成のリンクを利用したアーキテクチャなどの単方向リンクを利用するメモリ・アーキテクチャの他の型とともにも用いられうる。
【００４０】
本発明の原理のいくつかは、エラーのあったビットレーンへの対処に関するものである。たとえば、図３、４、５、６、７の実施形態に示されているエージェントのいずれかの間の単方向リンクのいずれかが二つ以上のビットレーンを有するようにしてもよい。本発明の原理によれば、不良ビットレーンを回避するため、前記複数のビットレーン上で二つ以上の信号の経路変更ができる。メモリ・コントローラ（ホスト）、モジュール、バッファなどといったどのエージェントでも、複数のビットレーン上で二つ以上の信号の経路変更ができてよい。信号の経路変更はリンクのどちらの端で行ってもよく、あるいは両端で行ってもよい。どのエージェントでも、エラーのあったビットレーンを検出することができてよく、それも自動的にでも、他のエージェントの助けを得てでもよい。そしてどのエージェントでも、他のエージェントからのコマンドに反応しての信号の経路変更ができてよい。
【００４１】
図１３は本発明の原理に基づくフェイルオーバー回路のある実施形態を示している。図１３のフェイルオーバー回路１１０が再駆動回路１１２のある実施形態とともに示されているのは解説のためだけであって、本発明の原理はいかなる特定の再駆動回路と共に使用されることにも限定されるものではなく、フェイルオーバー回路は図１３に示された特定の詳細に限定されるものでもない。再駆動回路１１２は、単方向リンク上の信号を受信し、再駆動するよう構成されたいくつかのビットレーンを含んでいる。各ビットレーンは、受信素子１１６および送信素子１１８を有するＩ／Ｏセル１１４として具現されている。
【００４２】
フェイルオーバー回路とは、複数のビットレーンへの、あるいは複数のビットレーンからの一つまたは複数の信号を経路変更できる回路のことをいう。図１３の実施形態では、フェイルオーバー回路は一つまたは複数のマルチプレクサ・スイッチ１２０を有するマルチプレクサとして実装されている。各スイッチは一つのビットレーンに結合された第一の入力と、隣接するビットレーンに結合された第二の入力とをもち、どちらのビットレーンからの信号を出力するようにも経路変更しうるようになっている。図１３に示した実施形態は６つのビットレーンを扱う６つのスイッチをもつものとして描かれているが、使われるスイッチおよびビットレーンの数はいくつでもよく、スイッチの配列も図示した隣接ビットレーン構成以外のさまざまな構成の配置でよい。
【００４３】
通常の動作モードの間は、図１４に示すように、スイッチのそれぞれはその第一の入力からの信号を出力に送り、書き出しデータ信号ＷＤ０、ＷＤ１、ＷＤ２、ＷＤ３、ＷＤ４、ＷＤ５はそれぞれ出力ＯＵＴ０、ＯＵＴ１、ＯＵＴ２、ＯＵＴ３、ＯＵＴ４、ＯＵＴ５に向けられる。そのような実施例では、ビットレーンの一つ、たとえばＷＤ５に対応するビットレーンを他のビットレーン上のデータの誤り検査に使うことができる。
【００４４】
不良ビットレーンが検出された場合、マルチプレクサはフェイルオーバー・モードで動作でき、すると一つまたは複数のスイッチが操作されて不良ビットレーンを経路から除外しようとする。たとえば、ＷＤ３に関連付けられているビットレーンが正しく動作しない場合、マルチプレクサのスイッチは、図１５に示すように書き出しデータ信号ＷＤ４およびＷＤ５がそれぞれ出力ＯＵＴ３およびＯＵＴ４に出力されるよう経路変更することができる。このモードでは、一ビットレーン分の信号容量が失われている。ビットレーンの一つが誤り検査用に指定されていたとすると、元来不良を起こしたビットレーンを使うはずだった信号はその誤り検査用レーンを通るよう経路制御され、誤り検査機能は無効とすることができる。
【００４５】
フェイルオーバー回路の出力は、メモリ・インターフェース、メモリ素子またはその他の回路に結合されていてもよい。図１３の実施形態では、フェイルオーバー回路は再駆動回路とは別個のものとして示されているが、再駆動回路内に組み込まれていてもよい。本発明の原理に基づくフェイルオーバー回路は、図示したような単純なマルチプレクサを用いても実現できるが、完全なクロスバースイッチなどのような他の構成もまた可能である。
【００４６】
図１３に示したフェイルオーバー回路の実施形態は、ビットレーンからの書き出しデータを出力に結合させるよう構成されていた。代替的に、本発明の原理に基づくフェイルオーバー回路の実施形態は、逆向きにデータを転送するよう構成されて、ＯＵＴＸが読み出しデータを受け取る入力となって、マルチプレクサ・スイッチがデマルチプレクサ・スイッチと称されて、Ｉ／Ｏセルのそれぞれが受信素子と送信素子との間にフェイルオーバー回路からの読み出しデータをビットレーンにマージするためのマルチプレクサを有していてもよい。このように、マルチプレクサはマルチプレクサおよびでマルチプレクサの両方を指す。もう一つの代替として、本発明の原理に基づくフェイルオーバー回路の実施形態は、ビットレーンとメモリ素子、メモリ・インターフェースまたはその他の回路との間の双方向データフローのために構成されていてもよい。
【００４７】
メモリ・バッファ、メモリ・モジュール、メモリ・コントローラ（ホスト）またはビットレーン・フェイルオーバー機能をもつその他のエージェントはまた、エラーのあったビットレーンを検出し、信号を経路変更し、不良ビットレーンを経路から除外し、その他本発明の原理に基づく同様のことをするためのさまざまな機能を有していてもよい。たとえば、図１３に示したフェイルオーバー回路の実施形態を有するエージェントは、たとえば別のエージェントから送られた試験データ・パターンを観測することによってエラーのあったビットレーンを検出し、信号を経路変更してエラーのあったビットレーンを経路から除外できるよう設計することができる。あるいはまた、当該エージェントは、たとえばメモリ・チャネル上の一つまたは複数のエージェントに指令するメモリ・コントローラなど他のエージェントからのコマンドに従ってエラーのあったビットレーンを経路から除外するよう設計することもできる。あるいはまた、当該エージェントは両方の機能を有していてもよい。
【００４８】
図１６は、本発明の原理に基づくビットレーン・フェイルオーバー機能をもつメモリ・バッファの実施形態を示している。図１６の実施形態は、図７と同様であるが、デスキュー回路７０とメモリ・インターフェース６６との間に結合されているフェイルオーバー回路１２２をも含んでいる。代替的な実施形態も可能である。たとえば、フェイルオーバー回路は再駆動回路６０とデスキュー回路との間に配置されていてもよいし、再駆動回路に組み込まれていてもよい。図１６の実施形態はまたもう一つのフェイルオーバー回路１２４をも含んでいる。これは、マルチプレクサ７４と再駆動回路６２との間に結合されて示されているが、これも再駆動回路に組み込まれたり、その他の配置をされたりしてもよい。図１６のメモリ・バッファは代替的にメモリ・モジュールとして具現されてもよい。その場合、メモリ・インターフェースのところにはメモリ素子がはいる。
【００４９】
図１７は、本発明の原理に基づくビットレーン・フェイルオーバー機能をもつメモリ・コントローラの実施形態を示している。図１７のコントローラは、複数のビットレーンをもつ外向きおよび内向きの単方向リンク・インターフェース１２６および１２８を含んでいる。そのそれぞれがこの実施形態ではいくつかの送信素子および受信素子を含んでいる。フェイルオーバー回路１３０および１３２はそれぞれインターフェース１２６および１２８のビットレーンに結合されている。図１７の実施形態では、フェイルオーバー回路はリンク・インターフェースとは別個のものとして示されているが、代替的に、リンク・インターフェースと一体になっていてもよい。当該コントローラはエラーのあったビットレーンを検出することができうる。その場合、フェイルオーバー回路がエラーのあったビットレーンを経路から除外しうる。追加的または代替的に、当該コントローラはエージェントにエラーのあったビットレーンを経路から除外するよう指示するコマンドを発することができるようになっていてもよい。
【００５０】
本発明の原理に基づく追加的なフェイルオーバーの方法および装置について、これから、本発明の原理に基づくメモリ・コントローラ（ホスト）、メモリ・モジュール、メモリ・バッファの追加的な実施形態を含む完全なメモリ・チャネル・システムの代表例としての実施形態を背景として説明する。ただし、いずれのコンポーネントも、この代表例としてのシステムにも、ここで記載されるいかなる詳細にも限定されるものではない。
【００５１】
前記代表例としてのシステムは、図１７を参照しつつ説明したようなフェイルオーバー機能を有するホストの実施形態および、図１６を参照しつつ説明したようなフェイルオーバー機能のあるバッファを有する一つまたは複数のメモリ・モジュールの実施形態を含んでいる。この例では、ホストおよびモジュールは、図７に示したような外向き経路と内向き経路とを有するチャネル構成に配置されている。ただし、システムに含まれるモジュールが一つだけであってもよい。
【００５２】
この例では、ホストおよびモジュールは「ＳＭＢｕｓ」として知られるシステム管理バス（system  management  bus）と相互接続されている。ＳＭＢｕｓはシステム内の構成要素を管理するのに使われるシリアル・バス・システムである。しかし、ＳＭＢｕｓの使用は本発明の原理に必須ではなく、メモリ・チャネル経路自身を含め、コンポーネント間の別の形の通信を使ってもよい。
【００５３】
この代表例としてのシステムにおける、エラーのあったビットレーンを検出して経路から除外するための本発明の原理に基づく方法のある実施形態は、次のように進行する。ホストが外向き経路の各ビットレーン上に試験パターンを送信する。試験パターンは外向き経路に沿って各モジュール上のバッファによって受信され、再駆動されていき、ついには最外モジュールに到着する。するとこの最外モジュールが内向き経路の各ビットレーン上で試験パターンを送信する。試験パターンは内向き経路に沿って各モジュール上のバッファによって受信され、再駆動されていき、ついにはホストに到着する。ホストと各モジュール上のバッファとは、内向き経路および／または外向き経路上の各ビットレーン上の試験パターンを観測し、ビットレーンが正しく動作しているかどうかを検査する。内向き経路および外向き経路のビットレーンは同時に検査してもよい。
【００５４】
エラーのあったビットレーンは、ＳＭＢｕｓを通じてホストに結果を送信することによって、あるいは当該チャネルを通じてホストに結果フレームを送信することによって、あるいはその両方によって報告される。そのような結果フレームは、最外モジュールによって内向き経路上で発生されうる。他のモジュール（もしあれば）もその内向き経路のデータ中に自分たちの結果情報を混ぜ込むことができる。各モジュールからの結果が二つ以上のビットレーン上で冗長に送信される場合、エラーのあったビットレーンが結果の報告を妨げる可能性は低くなる。
【００５５】
ひとたびホストが結果を受信すると、ホストは、ＳＭＢｕｓを通じて、あるいは当該チャネルを通じて、あるいは他のいかなる通信形態でもよいが、構成コマンドをモジュールに発しうる。構成コマンドはモジュールに、もし該当すればビットレーンが不良であり、経路から除外すべきであることを告げる。モジュールはこの構成コマンドに対して一つまたは複数のフェイルオーバー回路を操作してもしあれば不良ビットレーンを迂回するよう信号の経路変更をし、ビットレーンが減ったことを埋め合わせるため何らかの内部機能の再構成を行うことで応答する。たとえば、一本のビットレーンが誤り検査データとして指定されていたとすると、バッファやモジュールは誤り検査機能を無効にすることができる。
【００５６】
上述したフェイルオーバーの方法および装置の実施形態は単なる例であって、本発明の原理はこれらの特定の例に限定されるものではない。本発明に基づくフェイルオーバーの方法および装置の原理は、図３の実施形態のような別個の内向き経路と外向き経路とを有するメモリ・システムを参照しつつ説明してきたが、その原理は、たとえばラムリンクのようなリング型のリンク構成を利用するアーキテクチャのような、単方向リンクを利用したいかなるメモリ・アーキテクチャにも適用しうる。
【００５７】
本発明の原理のいくつかは、転置状態パターンに関するものである。先に図１や図３を参照しつつ説明したようなメモリの読み出し・書き込みデータがメモリ・エージェントの間で転送されるようなメモリ・システムにおいては、無意味パターン、警告パターン、その他の状態情報といった状態情報をメモリ・エージェントの間で送ることが有用であることもある。これは、データ・パターンと状態パターンとをメモリ・エージェントどうしを接続する同一の単数または複数のリンク上で送ることで実現されうる。本発明の原理によれば、状態パターンは転置されて時間とともに変化しうる。
【００５８】
たとえば、図３を参照すると、メモリ・コントローラ５０は読み出しコマンドのようなデータ・パターンを有するフレームを一つまたは複数のモジュール５２に向けて送りうる。モジュールは読み出しデータのようなデータ・パターンを有するフレームをコントローラに送り返すことで応答する。この一つまたは複数のモジュールがメモリ・コントローラに無意味パターンを有するフレームを送ることが有用となることがある。たとえば、そのモジュールがメモリ素子５８から読み出しデータを十分な速さで取得できなかった場合である。無意味パターンとしてはあらかじめ決められたデータ・パターンを指定することができ、メモリ・コントローラがその無意味パターンを受け取ったら、メモリ・コントローラは読み出しデータを受信しているのではないと知るのである。ただし、本物の読み出しデータ・パターンがたまたま指定された無意味パターンと一致した場合、これは問題となりうる。
【００５９】
本発明の原理によれば、メモリ・コントローラおよび一つまたは複数のモジュールはいずれもそのような無意味パターンを予測可能な仕方で転置して、無意味パターンが時間とともに変化するようにすることができうる。たとえば、メモリ・コントローラおよびモジュールは、無意味フレームが送受信されるたびに所定のシーケンスに従って無意味パターンを変えてもよい。本発明の原理に基づくそのような方法の実施形態が図１８に示されている。ここで、メモリ・コントローラが読み出しコマンド・フレームを送り（１５８）、応答フレームを受け取り（１６０）、その応答フレームが現行の無意味パターンを含んでいた場合（１６２）、メモリ・コントローラは同じ読み出しコマンドを再送信しうる（１６４）。第二の応答フレーム（１６６）も第一の応答フレームと同じパターンを含んでいれば（１６８）、メモリ・コントローラはそれが本物の読み出しデータであると解釈する。しかし、第二の応答フレーム中のパターンが転置された無意味パターンと一致すれば（１６８）、メモリ・コントローラは第一の応答フレームが無意味フレームだったと知るのである（１７２）。
【００６０】
本発明の原理によれば、状態パターンの形で送られる状態情報は無意味パターン、警告パターンその他の状態情報でありうる。その他の状態情報とは、モジュールからのコマンド・エラー情報、モジュールからの熱的過負荷情報、あるモジュールがメモリ・チャネルの外向き経路上に別のモジュールの存在を検出したことを示す情報などである。状態パターンの一部の種類は相補的なパターンとして実装されうる。たとえば、警告パターン（エージェントにエラー状態を通知するのに使われうる）は無意味パターンの論理的な補数として実装されうる。これはたとえば、メモリ・エージェントが無意味パターンと警告パターンに同じパターン発生器を使えるようにすることによって実装を単純化しうる。パターンの転置を使わなくても相補的な状態パターンの使用は有益でありうる。
【００６１】
本発明の原理に基づくメモリ・エージェントはまた、状態パターン中に巡回冗長検査（CRC:  cyclic  redundancy  check）のような誤りを意図的に生成することができてもよい。そのような技法はデータ・パターンを状態パターンから区別する代替的または補足的な方法として有用でありうる。たとえば、いくつかのメモリ・システムでは、各フレームは該フレーム内のデータの保全性を検査するのに使われたＣＲＣ符号とともに送られる。
【００６２】
本発明の原理によれば、メモリ・エージェントは意図的に誤ったＣＲＣ符号を状態パターンを含むフレームとともに送りうる。すると受信エージェントはそのフレームをデータ・フレームではなく状態フレームとして解釈する。いくつかのメモリ・システムはＣＲＣデータを伝えるために余分のビットレーンをもつ単数または複数の経路を利用しうる。もしそのようなシステムがフェイルオーバー・モードで動作することができれば、単数または複数のエージェントは、フェイルオーバー・モードでの動作でない場合に意図的なＣＲＣ誤りを利用するだけでよい。ここでは、ＣＲＣという用語を巡回冗長検査のみならず、フレームやパターンの保全性を検証するのに使われるその他あらゆる種類の誤り検査方式をも指すものとして使っている。
【００６３】
本発明の原理に従った状態パターンの転置および扱いの原則はいかなる種類のメモリ・エージェントにも適用可能なものであり、本発明の他の原理とは独立であるが、図７で示された実施形態のようなメモリ・バッファとの関連で、そして図６で示された実施形態のようなシステムを背景として、いくつかの追加的な側面を説明する。図６を参照すると、メモリ・バッファ６４がメモリ・チャネル上の最外エージェントである場合、該メモリ・バッファは、ホストがメモリ・インターフェース６８につながっているいずれかのメモリ素子に要求したデータを送信しているのでないときには、内向きリンク５６Ｂ上で常時、転置無意味状態フレームを送信していることができる。
【００６４】
図１９は、本発明の原理に基づく転置パターン発生器のある実施形態を示している。図１９の実施形態は、多項式ｘ12＋ｘ7＋ｘ4＋ｘ3＋１を使った１２ビットの線形フィードバックシフトレジスタ（LFSR:  linear-feedback  shift  register）である。初期状態は000000000001と設定でき、ＬＦＳＲは２12−１状態（４０９５フレーム）の周期で同じパターンが繰り返される。ＬＦＳＲの各ビットはデータ経路上のリンク中の一つのビットレーンに載せられうる。各ビットは、その対応するビットレーン上で、ある１フレーム全体の間に生じる転送のすべてに使われうる。たとえば、各リンクに１２個のビットレーンがあるデータ経路をもつシステムでは、ＬＦＳＲの各段階からの出力はビットレーンのうちの一つに載せられうる。追加的なレーン、たとえば１３番目のビットレーンは、１フレーム遅れのＬＦＳＲの最下位ビットの値を使うことによって対応できる。
【００６５】
図２０は、図１９の転置パターン発生器によって生成される第１の状態パターンの例を示している。この例では、１フレームは転送１２回分の長さである。図２１〜２２はそれぞれ第２、第３、第４の状態パターンを示している。ある１フレーム全体の間、各ビットレーン上で同じ値を使うことによって、電磁障害（EMI:  electromagnetic  interferenceすなわちノイズ）が軽減されうる。
【００６６】
ここでの１２ビット転送分の長さの１３ビットレーンのフレームというのは例として挙げたのであって、本発明の原理はこれらの詳細に、また上述の転置パターン発生器の特定の実施形態に限定されるものではない。たとえば、本発明の原理に基づく転置パターン発生器は上記のＬＦＳＲのような専用論理回路を用いて実装される必要はない。代替的に、プログラム可能論理を用いて実装されても、あるいは転置状態パターンを利用するメモリ・インターフェースにおける論理またはバッファもしくはその他のメモリ・エージェントの機能を監督したり実装したりするのに使われうるプロセッサその他のプログラム可能状態機械におけるアルゴリズムとして実装されてもよい。
【００６７】
本発明に基づくいくつかの追加的な発明的原理は、二つ以上のビットレーンをメモリ・リンク上のメモリ・エージェントの存在を検出するために利用することに関するものである。たとえば、図７に示されたメモリ・バッファの実施形態において、バッファは外向きリンク５４Ｂに結合されている別のメモリ・エージェントがあるかどうかを検出することができてもよい。これは、リンク中のビットレーンの一つを別のメモリ・エージェントの存在を検査するために利用することによって実現されうる。しかし、リンク中にビットレーンが二つ以上あれば、本発明の原理に従って別のメモリ・エージェントの存在を検出するために二つ以上のビットレーンを使用することができる。これにより、不良ビットレーンの存在によって存在検出動作が妨げられることを防ぎうる。
【００６８】
便宜上、メモリ・エージェントの存在を検出するために二つ以上のビットレーンを利用することに関する本発明の原理のことは、個々に、そして総称的にも、冗長存在検出と称する。冗長存在検出は、複数のビットレーンをもつリンク・インターフェースを有するいかなる種類のメモリ・エージェントにも適用しうる。たとえば、図１３の実施形態で示された送信素子１１８のいかなる二つ以上でもリンク・インターフェース、今の場合だと送信リンク・インターフェースと考えられる。同様に、図１３で示された受信素子１１６のいかなる二つ以上でもリンク・インターフェース、今の場合だと受信リンク・インターフェースと考えられる。冗長存在検出はこれらのリンク・インターフェースのいずれにも、また図１７の実施形態で示されたリンク・インターフェース１２６および１２８のいずれにも適用しうる。
【００６９】
例として今一度図７の実施形態に戻ると、メモリ・バッファは、リセットなどの存在検出イベントが発生したときに自分の存在を別のバッファに伝達するために、内向き送信リンク５６Ｂ上の３つのビットレーンを所定の存在検出論理レベル（たとえば「１」）に駆動しうる。また、存在検出イベントの間、チャネル上で前記第一のバッファより内側に位置するある第二の同様のメモリ・バッファは、内向き受信リンク５６Ａ上の対応する３つのビットレーンを前記第一のバッファの存在を検出するよう構成しうる。この例では、第一のメモリ・バッファは外側のエージェント、第二のバッファは内側のエージェントと呼ぶことにする。
【００７０】
あるビットレーンを別のエージェントの存在を検出するよう構成するための技術の例は、そのビットレーンを受け持つ受信素子がそのビットレーンに、そのビットレーンが存在検出論理レベルと反対のレベルになるよう強制するようなバイアス電流を載せようとすることである。存在検出イベントの間に別のメモリ・エージェントがそのビットレーンに結合されていたら、該別のメモリ・エージェントのそのビットレーン上の送信素子がそのビットレーンが存在検出論理レベルとなるよう強制することになる。
【００７１】
内側のエージェントが前記３つのビットレーンのうちの２つに存在検出論理レベルを検出すれば、該内側のエージェントは外側のエージェントが存在することを知り、その外側ポートの全部または一部を有効のままにしうる。（今の例では、外側ポートは外向きリンク５４Ｂのためのリンク・インターフェースおよび内向きリンク５６Ａのためのリンク・インターフェースを含む。）もし内側のエージェントが前記３つのビットレーンのうち少なくとも２つに存在検出論理レベルを検出しなかった場合、該内側のエージェントは外側のエージェントが存在しておらず、外側ポートの全部または一部を無効にしてもよいと知る。この内側のエージェントは、外側のエージェントの存在または不在を他のエージェントに報告することができてもよい。たとえば、状態検査コマンドに反応してメモリ・コントローラに報告するなどである。
【００７２】
冗長存在検出を利用するエージェントはまた、存在検出イベントを他のエージェントに伝達することができてもよい。たとえば、リセット・イベントが図７のバッファに外向き経路上のリセット・コマンドを通じて伝達された場合、このコマンドは外側のエージェント（もしあれば）に再駆動回路６０によって中継されうる。これで両方のエージェントは存在検出モードにはいる。
【００７３】
本発明の原理に基づく冗長存在検出は上で議論した特定の実施形態に限定されるものではない。たとえば、存在検出に使われるビットレーンは上の例のように３つではなく２つだけでもよい。その場合、内側のエージェントは、外側のエージェントが存在すると結論するのに単一のビットレーン上に存在検出論理レベルが検出されるだけでいい。同様に、冗長存在検出は、たとえばラムリンクのようなリング型構成を利用するアーキテクチャなどその他さまざまな種類のメモリ・アーキテクチャを使ったシステムおよびコンポーネントに適用されうる。
【００７４】
本発明に基づくいくつかの追加的な発明的原理は、メモリ・チャネル上での構成要素の電源投入状態での追加および／または取外しに関するものである。すなわち、当該メモリ・チャネルの動作中に構成要素を追加したり取り外したりするのである。図２４は本発明の原理に基づくメモリ・エージェント１３４のある実施形態を示している。図２４の実施形態は、メモリ・モジュール、メモリ・バッファ、メモリ・コントローラなどでありうる。当該エージェントは第一のポート１３６および第二のポート１３８を含んでいる。単に解説の目的で当該エージェントが図６の実施形態におけるモジュール５２の一つのようなメモリ・モジュールであるとすると、前記第一のポートはメモリ・コントローラのより近くに位置するメモリ・チャネル上の他のエージェントと通信するよう構成されうるので、内側ポートと称することができる。同様に、前記第二のポートはメモリ・コントローラからより遠くに位置するメモリ・チャネル上のエージェントと通信するよう構成されうるので、外側ポートと称することができる。こうした呼称は単に解説のためであり、本発明の原理はメモリ・エージェントのこれらの詳細にも、図６に示されたメモリ・チャネルの個別部分にも限定されるものではない。こうした原理は、図１に示されたラムリンク・アーキテクチャのようなその他のメモリ・チャネル・アーキテクチャにも適用可能でありうる。
【００７５】
本発明の原理に基づくメモリ・エージェントの各ポートは一つまたは複数のリンク・インターフェースを有している。図２４の実施形態では、各ポートは受信リンク・インターフェースおよび送信リンク・インターフェースを有している。内側ポート１３６は受信リンク・インターフェース１４０および送信リンク・インターフェース１４２を有しており、受信リンク・インターフェース１４０は再駆動回路６０の部分である一つまたは複数の受信素子でありえ、送信リンク・インターフェース１４２はもう一つの再駆動回路６２の部分である一つまたは複数の送信素子でありうる。外側ポートは受信リンク・インターフェース１４４および送信リンク・インターフェース１４６を有しており、これらもやはりそれぞれ再駆動回路６２および６０の部分である。リンク・インターフェース１４０および１４６はそれぞれ外向きリンク５４Ａおよび５４Ｂに結合されえ、リンク・インターフェース１４２および１４４はそれぞれ内向きリンク５６Ｂおよび５６Ａに結合されうる。リンク・インターフェースのそれぞれは一つまたは複数のビットレーンを有していることができ、そうしたビットレーンおよびインターフェースはこうした用語の適当な組み合わせを用いて命名することができる。たとえば、インターフェース１４２のビットレーンは内向き送信ビットレーンまたは内向きＴｘビットレーンと称されうる。インターフェース１４４のビットレーンは内向き受信ビットレーンまたは内向きＲｘビットレーンと称されうる。
【００７６】
図２４の実施形態は単なる例であって、メモリ・エージェントおよびポートは別の方法でも実施されうる。たとえば、リンク・インターフェースは必ずしも再駆動回路の一部でなくてもよい。このことは、図１７で示したメモリ・コントローラの実施形態に示されている。図１７でのポートは、再駆動回路の一部ではないリンク・インターフェース１２６および１２８を含んでいたのであった。リンク・インターフェースに含まれるビットレーンは一つだけでもいくつでもよく、ポートは受信リンク・インターフェースまたは送信リンク・インターフェースの一方だけしか有していなくてもよい。
【００７７】
本発明の原理に基づくメモリ・エージェントはその一つのポート上で別のメモリ・エージェントの存在を検出することができてもよく、また別のメモリ・エージェントの存在または不在に応じてさまざまな行動をとることができてもよい。たとえば、図２４のメモリ・エージェントは、もしポートに別のメモリ・エージェントが存在していなければその外側ポートの全部または一部を無効にすることができてもよい。外側のエージェントの存在または不在を別のエージェント、たとえばメモリ・コントローラに内側ポートを通じて報告することができてもよい。図２４のメモリ・エージェントは、存在検出イベントを外側ポート上に存在しうる外側のエージェントに向けて送出することを含めた存在検出動作を実行することができてもよい。また、高速リセット動作を実行することができてもよい。
【００７８】
電源投入状態での追加／取外しを容易にしうるこの特許出願に基づくいくつかの追加的な発明的原理について、メモリ・システムの実施形態の背景において説明する。その実施例は、図２４のメモリ・エージェントを参照しつつ図６の実施形態のようなメモリ・システムを背景として説明する。この実施例では、図２４のメモリ・エージェントは図６のバッファのうちの一つまたは複数を具現するものとして使われ、該バッファ自身はメモリ素子を有するモジュールの一部である。ただし、こうした詳細はみな単に説明のためのものであり、本発明の原理はこうした詳細に限定されるものではない。
【００７９】
今の例のシステムでは、メモリ・エージェントは高速リセット動作、完全リセット動作および／またはさまざまなポーリングもしくは存在検出動作を実行することができてもよい。今の例のシステムでは、各ビットレーン上で導出されたクロックをデータ・ストリームとロックしたままに保つには、ある最低数のクロック遷移が必要となりうる。このため、メモリ・コントローラ（またはホスト）は、ある所定の期間にわたって外向き経路内のビットレーンの一つまたは複数に１または０の連続ストリームを送ることによってリセット動作を開始できる。データは経路上の各バッファによって再駆動されるので、全バッファがリセット・コマンドすなわちリセット・イベントを受け取る。今の例のシステムでは、３つの最下位ビット（LSB:  least  significant  bit）レーンをリセット動作の合図として使うことができる。受信エージェントは、３つのＬＳＢのうちいずれか２つの上に０または１のストリームを感知することによってリセット・イベントを検出する。これにより、一つのビットレーンにエラーがあってもリセット動作は妨げられないことが保証されうる。ただし、本発明の原理は、二つ以上のビットレーンを必須とすらしておらず、そのような実装に限定されるものではない。
【００８０】
今の例のシステムでは、ホストは０の連続ストリームを送って、チャネル上の全エージェント（今の例ではバッファを有するモジュール）をある第一のリセット状態に置く。それは無期限で、たとえばホストが外的条件によってリセット状態に置かれている間続く。次いでホストは１のストリームをある第一の時間、たとえば２フレーム周期にわたって送り、それから０に戻ることで他のエージェントに高速リセット動作の実行を合図する。あるいはまた、ホストは１のストリームをある第二の時間、たとえば２フレーム周期より長い時間にわたって送ることで他のバッファに完全リセット動作の実行を合図することができる。完全リセットは、リンク上のインピーダンス整合、受信素子や駆動回路における電源較正、受信素子オフセット打消しなどといったさまざまな内部的な較正動作を含みうるものである。較正動作が実行されたのち、ホストは高速リセット動作への遷移をバッファに合図する。
【００８１】
高速リセット動作は較正動作などの完全リセットで実行される一部の動作を省略しうる。高速リセット動作は存在検出動作によって開始されうる。存在検出動作の間、チャネル上の各バッファは前記３つのＬＳＢ内向きＲｘビットレーン上に電流を載せて、それらが外側のエージェントに接続されていない場合に当該ビットを強制的に０にしようとしうる。存在検出動作の間にはまた、各バッファは前記３つのＬＳＢ内向きＴｘビットレーンを１に駆動しうる。次いで各バッファは自分の３つのＬＳＢ内向きＲｘビットレーンを調べ、３本のレーンのうちの２本で１を検出した場合には外側ポートを有効のままにしておき、状態レジスタをそれに従って更新しうる。該バッファが２つの１を検出しなかった場合には、外側のエージェントは存在しないと想定することができ、外側ポートの全部または一部を無効にし、チャネル上での最外エージェントの機能を実行するよう準備したり、状態レジスタをそれに従って更新したりしうる。ホストも、チャネル上にエージェントがあるかどうかを判別するために同様の存在検出動作をたどることができる。各バッファは、ホストからの状態要求に反応して状態フレームの形で状態情報をホストに中継しうる。
【００８２】
存在検出動作ののち、今の例のシステムのバッファは高速リセットの間にさまざまな他の動作状態を通過しうる。たとえば、バッファ上のローカル・クロックをデータ・ストリームにロックするようトレーニングするクロック・トレーニング状態、チャネル上を送られるフレームを整列するフレーム・トレーニング状態、全ビットレーンの動作を調べてバッファにその機能があればフェイルオーバー・モードに移行させるビットレーン試験などである。また、ひとたびホストがチャネルに接続されている他のエージェントの数を知ったら、ホストは全エージェントを受け入れるためにフレームの大きさ、タイミングなどを調整しうる。
【００８３】
今の例のシステムでは、メモリ・エージェントは追加的または代替的に、チャネル上に新たに追加されたエージェントの存在を検出するためのさまざまなポーリング動作を実行することができうる。たとえば、各バッファは、もし最外バッファであれば、チャネルに新たなエージェントが追加されたかどうかを判別するために、外側ポート上でポーリング動作を実行することができうる。図２５は、本発明の原理に基づくそのようなポーリング動作の実施形態を示している。
【００８４】
１４８において、当該エージェントは外側ポートの全部または一部を無効にしていることがありうる。当該エージェントがバッファまたはモジュールであれば、１５０においてホットリセット動作に移行するホストからのポーリング・コマンドを待てばよい。当該エージェントがホストであれば、外側ポートの全部または一部を無効にして、システム環境からの覚醒コマンドを待てばよい。覚醒コマンドを受信したら、当該エージェントは外側ポートの全部または一部を有効にしてリセット状態に移行しうる。
【００８５】
１５０において、当該エージェントは外側ポートを有効にして０のストリームを３つのＬＳＢ外向きＴｘビットレーン上に駆動し、外側ポート上の潜在的な新規エージェントにリセットを送信する。当該エージェントは次に１５２のホット較正動作に移行する。
【００８６】
１５２において、当該エージェントは１のストリームを３つのＬＳＢ外向きＴｘビットレーン上に駆動し、潜在的な新規エージェントが較正動作を含む完全リセットを実施するよう強制する。新たに検出されたエージェントは通例較正が必要だからである。当該エージェントは次に１５４のホット検出動作に移行する。
【００８７】
１５４において、当該エージェントは０のストリームを３つのＬＳＢ外向きＴｘビットレーン上に駆動し、３つのＬＳＢ内向きＲｘビットレーン上にバイアス電流を載せ、外側のエージェントに接続されていないもののビットを強制的に０にしようとする。当該エージェントは次に３つのＬＳＢ内向きＲｘビットレーンを検査して、少なくとも２つの１を検出したら、１５５において外側のエージェントが存在していると判断し、１５６においてホット・エージェント存在動作に移行しうる。そうでなければ、当該エージェントは１５５において外側のエージェントは存在しないと判断し、１４８のスリープ動作に戻りうる。
【００８８】
１５６において、当該エージェントは、外側のエージェントを検出したことを示す状態レジスタを更新し、たとえば状態要求に反応してその情報をホストに中継したり、該情報をホストまたは他のエージェントに中継するための他の何らかの動作をしたりしうる。当該エージェントはチャネル・リセットを受信するのを待ってもよい。
【００８９】
ホストは、周期的な状態要求またはその他の技法を通じて新たに検出されたエージェントを認識し、チャネル全体を、当該チャネル上に新規エージェントが加わり、チャネル・タイミングにおいても適応されたものとなるよう再初期化をするために高速リセットを開始しうる。
【００９０】
以下は、本発明の原理に基づく、電源投入状態での追加／取外し手続きのいくつかの追加的な実施例である。これらの追加的な実施例も図６に示したメモリ・システムの実施形態を参照しつつ、ユーザー・インターフェースおよびシステム・ファームウェアを有するサーバーのようなより大きなシステムを背景として説明する。ただし、これらの追加的な実施例によって解説される本発明の原理はここに記載される特定の詳細に限定されるものではない。
【００９１】
本発明の原理に基づく電源投入状態での追加手続きは、ユーザーが新たなエージェントをメモリ・チャネルに、たとえば最外エージェントの外側ポート上に付け加えることによって開始されうる。ユーザーはシステム・ファームウェアにエージェントが付け加えられたことを知らせてもよい。そうすればファームウェアは付け加えられたエージェントに電源が供給されるようにし、ホストに覚醒コマンドを通じてエージェントが付け加えられたことを知らせる。ホストは次にポーリング・コマンドを従前の最外エージェントに送りうる。すると該従前の最外エージェントは、図２５を参照して前述したようなポーリング動作を実行しうる。ポーリング動作ののち、従前の最外エージェントは新規の外側のエージェントの存在を報告しうる。するとホストは該新規エージェントの存在を検出して、該新規エージェントを動作状態にし、チャネル全体のタイミングをとりなおすために高速リセット・コマンドを発しうる。新規エージェントが動作状態になったのち、ホストはシステム・ファームウェアに割り込んで新規エージェントが動作状態になったことを報告しうる。あるいはまた、ホストは、新規エージェントが動作状態になったかどうかを判別するようシステム・ファームウェアから問い合わせがあるのを待ってもよい。システム・ファームウェアは次に、新規エージェントによって提示される新規ハードウェアを受け入れるようホストを構成しうる。新規ハードウェアとは、新規エージェントがメモリ・モジュールまたはバッファであった場合に存在しうる新規メモリ素子などである。
【００９２】
本発明の原理に基づく電源投入状態での取り外し手続きは、ユーザーがシステムにメモリ・チャネル上の特定のエージェントが取り外されることを知らせることによって開始されうる。システムは、対応するホスト・アドレス範囲をシステム・マップから除去しうる。システムがミラーリングを使っている場合、システムはエージェントのミラーのホスト・アドレス範囲をも再割り当てする。次いでシステムは、そのホスト・アドレス範囲のデータを、まだ移されていなければ別の位置にコピーまたは移動する。次いでシステムは未解決のすべての処理が完了するまでポーリングを行いうる。次いでシステムは、取り外されようとしているエージェントのすぐ内側のエージェントに対して、チャネル上で最外エージェントであると想定して動作するようホストからコマンドを送らせうる。それにより、該コマンドを受けたエージェントは外側ポートを無効にしてその後の高速リセットにおいて最外エージェントの機能を帯びることになる。（完全リセットがかかればこのコマンドよりそちらが優先する。）システムは次に、取り外し対象として選択されたエージェントおよび該選択されたエージェントにつながっている構成要素についてのあらゆるチャネル・インターフェースをシャットダウンする高速リセットを開始しうる。システムは次いで前記選択されたエージェントへの電源を切って、ユーザーにそのエージェントが取り外し可能であることを通知する。
【００９３】
本発明の原理に基づく電源投入状態での交換手続きは、上記の電源投入状態での取り外し手続きが完了したときに開始されうる。ユーザーは取り外したエージェントの代わりに新規エージェントを付け加え、システム・ファームウェアに新規エージェントが追加されたことを知らせうる。すると動作中のシステムは、新たに交換されたコンポーネントについてホストに準備をさせ、新規コンポーネントへの電源を供給しうる。次いでシステム・ファームウェアは、ホストから従前の最外エージェントにコマンドを送らせて、該従前の最外エージェントがもはや最外エージェントのつもりで動作すべきでないことを知らせるようにしうる。これにより、該従前の最外エージェントは次のリセットの際にその外側ポートを有効にし、ポーリング・コマンドを待ちうる。次いでファームウェアはホストに指示して、ポーリング・コマンドを従前の最外エージェントに送らせうる。すると該従前の最外エージェントは図２５を参照しつつ前述したようなポーリング動作を実行しうる。それにより前記新規エージェントが初期化される。すると従前の最外エージェントは新規の外側のエージェントの存在を報告しうる。するとホストは該新規エージェントの存在を検出して、該新規エージェントを動作状態にし、チャネル全体のタイミングをとりなおすために高速リセット・コマンドを発しうる。新規エージェントが動作状態になったのち、ホストはシステム・ファームウェアに割り込んで新規エージェントが動作状態になったことを報告しうる。あるいはまた、ホストは、新規エージェントが動作状態になったかどうかを判別するようシステム・ファームウェアから問い合わせがあるのを待ってもよい。
【００９４】
ここで記載された実施形態は本発明の原理から外れることなく構成および詳細において修正されうる。したがって、そのような変更および修正は特許請求の範囲にはいるものと考えられる。
【図面の簡単な説明】
【００９５】
【図１】従来技術のラムリンク・メモリ・システムを示す図である。
【図２】従来技術のラムリンク・スレーブ・インターフェース回路を示す図である。
【図３】本発明の原理に基づくメモリ・インターフェース・システムのある実施形態を示す図である。
【図４】本発明の原理に基づくメモリ・モジュールのある実施形態を示す図である。
【図５】本発明の原理に基づくメモリ・モジュールのある別の実施形態およびメモリ・バッファのある実施形態を示す図である。
【図６】本発明の原理に基づくメモリ・システム、メモリ・モジュールおよびメモリ・バッファの実施形態のさらなる例を示す図である。
【図７】本発明の原理に基づくメモリ・バッファのある別の実施形態の例を示す図である。
【図８】本発明の原理に基づく再駆動回路のある実施形態を示す図である。
【図９】本発明の原理に基づくＩ／Ｏセルのある実施形態を示す図である。
【図１０】本発明の原理に基づくＩ／Ｏセルのある別の実施形態を示す図である。
【図１１】本発明の原理に基づくＩ／Ｏセルのある別の実施形態を示す図である。
【図１２】本発明の原理に基づくＩ／Ｏセルのある別の実施形態を示す図である。
【図１３】本発明の原理に基づくフェイルオーバー回路のある実施形態を示す図である。
【図１４】本発明の原理に基づく、ノーマル・モードで動作しているフェイルオーバー回路のある別の実施形態を示す図である。
【図１５】本発明の原理に基づく、フェイルオーバー・モードで動作しているフェイルオーバー回路のある別の実施形態を示す図である。
【図１６】本発明の原理に基づく、ビットレーン・フェイルオーバー機能のあるメモリ・バッファのある実施形態を示す図である。
【図１７】本発明の原理に基づく、ビットレーン・フェイルオーバー機能のあるメモリ・コントローラのある実施形態を示す図である。
【図１８】本発明の原理に基づく、転置状態パターンを実装する方法のある実施形態を示す図である。
【図１９】本発明の原理に基づく、転置パターン発生器のある実施形態を示す図である。
【図２０】本発明の原理に基づく、状態パターンの実施例を示す図である。
【図２１】本発明の原理に基づく、状態パターンの実施例を示す図である。
【図２２】本発明の原理に基づく、状態パターンの実施例を示す図である。
【図２３】本発明の原理に基づく、状態パターンの実施例を示す図である。
【図２４】本発明の原理に基づく、メモリ・エージェントのある実施形態を示す図である。
【図２５】本発明の原理に基づく、ポーリング動作のある実施形態を示す図である。
【符号の説明】
【００９６】
１０  プロセッサまたはコントローラ
１６  リングリンク
１４  スレーブ
１８  制御インターフェース
５０  メモリ・コントローラ（ホスト）
５２  メモリ・モジュール
５８  メモリ素子
６０  再駆動
６２  再駆動
６６  メモリ・インターフェース
６４  バッファ
７０  デスキュー
７２  パターン発生器
７６  クロック発生器
７８  クロック・バッファ
８２  位相ロック・ループ（ＰＬＬ）
８４  位相クロック発生器
８８  サンプリング・クロック発生器
９０  補間器
９２  受信素子追跡ユニット（ＲＴＵ）
９４  バッファ
１０２  シリアライザ
１０４  デシリアライザ
１２２  フェイルオーバー
１２４  フェイルオーバー
１３０  フェイルオーバー
１３２  フェイルオーバー
１３６  内側ポート
１３８  外側ポート
１４８  スリープ
１５０  ホットリセット
１５２  ホット較正
１５４  ホット検出
１５５  外側のエージェントが存在？
１５６  ホット・エージェント・リセット
１５８  読み出しコマンド送信
１６０  第一の応答フレーム受信
１６２  第一の応答フレームのパターンが状態パターンか？
１６４  読み出しコマンド再送信
１６６  第二の応答フレーム受信
１６８  第二の応答フレームのパターンが転置した状態パターンか？
１７２  第一の応答フレームは状態フレームだったと判定
１７０  第一の応答フレームはデータ・フレームだったと判定
【図１】
0004519839.tif 000002
【図２】
0004519839.tif 000003
【図３】
0004519839.tif 000004
【図４】
0004519839.tif 000005
【図５】
0004519839.tif 000006
【図６】
0004519839.tif 000007
【図７】
0004519839.tif 000008
【図８】
0004519839.tif 000009
【図９】
0004519839.tif 000010
【図１０】
0004519839.tif 000011
【図１１】
0004519839.tif 000012
【図１２】
0004519839.tif 000013
【図１３】
0004519839.tif 000014
【図１４】
0004519839.tif 000015
【図１５】
0004519839.tif 000016
【図１６】
0004519839.tif 000017
【図１７】
0004519839.tif 000018
【図１８】
0004519839.tif 000019
【図１９】
0004519839.tif 000020
【図２０】
0004519839.tif 000021
【図２１】
0004519839.tif 000022
【図２２】
0004519839.tif 000023
【図２３】
0004519839.tif 000024
【図２４】
0004519839.tif 000025
【図２５】
0004519839.tif 000026