(57)【要約】  メモリ装置及びメモリ方法は、データ経路とメモリ装置との間でデータを蓄積する。メモリ・エージェントは、再駆動回路と、メモリ装置又はメモリ・インタフェースとの間にデータ・アキュムレータを有し得る。データ・アキュムレータは、再駆動回路との間でデータの蓄積を行い得る。他の実施例を本明細書及び特許請求の範囲で記載する。
2007511012.tif 000002
【特許請求の範囲】
【請求項１】
メモリ・モジュールであって、
第１のポイントツーポイント・リンクから信号を受信し、第２のポイントツーポイント・リンク上に前記信号を再駆動させる再駆動回路と、
メモリ装置と、
前記再駆動回路と前記メモリ装置との間に結合されるデータ・アキュムレータとを備えることを特徴とするメモリ・モジュール。
【請求項２】
請求項1記載のメモリ・モジュールであって、ポイントツーポイント・リンクが単方向リンクを備えることを特徴とするメモリ・モジュール。
【請求項３】
請求項1記載のメモリ・モジュールであって、前記データ・アキュムレータがＦＩＦＯ構造を備えることを特徴とするメモリ・モジュール。
【請求項４】
請求項1記載のメモリ・モジュールであって、第３のポイントツーポイント・リンクから第２の信号を受信し、第４のポイントツーポイント・リンク上に前記第２の信号を再駆動させる第２の再駆動回路を更に備えることを特徴とするメモリ・モジュール。
【請求項５】
請求項4記載のメモリ・モジュールであって、前記メモリ装置が前記第２の再駆動回路に結合されることを特徴とするメモリ・モジュール。
【請求項６】
請求項5記載のメモリ・モジュールであって、前記メモリ装置と前記第２の再駆動回路との間に結合される第２のデータ・アキュムレータを更に備えることを特徴とするメモリ・モジュール。
【請求項７】
請求項1記載のメモリ・モジュールであって、前記メモリ装置は、前記再駆動回路の帯域よりも大きなバースト帯域を有することを特徴とするメモリ・モジュール。
【請求項８】
請求項1記載のメモリ・モジュールであって、前記データ・アキュムレータは、前記再駆動回路からデータを蓄積するよう構成され、形成されることを特徴とするメモリ・モジュール。
【請求項９】
請求項1記載のメモリ・モジュールであって、前記データ・アキュムレータは、前記再駆動回路にデータを蓄積するよう構成され、形成されることを特徴とするメモリ・モジュール。
【請求項１０】
メモリ・バッファであって、第１のポイントツーポイント・リンクから信号を受信し、第２のポイントツーポイント・リンク上に前記信号を再駆動させる再駆動回路と、該再駆動回路に結合されるメモリ・インタフェースとを備え、前記メモリ・インタフェースがデータ・アキュムレータを備えることを特徴とするメモリ・バッファ。
【請求項１１】
請求項10記載のメモリ・バッファであって、ポイントツーポイント・リンクが単方向リンクを備えることを特徴とするメモリ・バッファ。
【請求項１２】
請求項10記載のメモリ・バッファであって、前記データ・アキュムレータがＦＩＦＯ構造を備えることを特徴とするメモリ・バッファ。
【請求項１３】
請求項10記載のメモリ・バッファであって、第３のポイントツーポイント・リンクから第２の信号を受信し、第４のポイントツーポイント・リンク上に前記第２の信号を再駆動させる第２の再駆動回路を更に備えることを特徴とするメモリ・バッファ。
【請求項１４】
請求項13記載のメモリ・バッファであって、前記メモリ・インタフェースと前記第２の再駆動回路との間に結合される第２のデータ・アキュムレータを更に備えることを特徴とするメモリ・バッファ。
【請求項１５】
メモリ・システムであって、
メモリ・コントローラと、
再駆動回路を有するメモリ・エージェントと、
信号を前記コントローラから前記メモリ・エージェントの前記再駆動回路に送信するよう形成される第１のポイントツーポイント・リンクとを備え、
前記メモリ・エージェントは、前記再駆動回路に結合されるデータ・アキュムレータを備えることを特徴とするメモリ・システム。
【請求項１６】
請求項15記載のメモリ・システムであって、前記ポイントツーポイント・リンクが単方向リンクを備えることを特徴とするメモリ・システム。
【請求項１７】
請求項15記載のメモリ・システムであって、前記データ・アキュムレータがＦＩＦＯ構造を備えることを特徴とするメモリ・システム。
【請求項１８】
請求項15記載のメモリ・システムであって、信号を前記メモリ・エージェントから前記コントローラに送信するよう形成される第２のポイントツーポイント・リンクを更に備えることを特徴とするメモリ・システム。
【請求項１９】
請求項15記載のメモリ・システムであって、前記メモリ・エージェントは、第２の再駆動回路を更に備えることを特徴とするメモリ・システム。
【請求項２０】
請求項18記載のメモリ・システムであって、前記メモリ・エージェントは、第２の再駆動回路に結合される第２のデータ・アキュムレータを更に備えることを特徴とするメモリ・システム。
【請求項２１】
メモリ・エージェントを動作する方法であって、
第１の信号を第１のポイントツーポイント・リンク上で受信する工程と、
前記第１の信号を第２のポイントツーポイント上で再駆動させる工程と、
書き込みデータを前記第１の信号から蓄積する工程と、
前記書き込みデータをメモリ装置に供給する工程とを備えることを特徴とする方法。
【請求項２２】
請求項21記載の方法であって、ポイントツーポイント・リンクが単方向リンクを備えることを特徴とする方法。
【請求項２３】
請求項21記載の方法であって、前記書き込みデータを蓄積し、供給する工程が、前記書き込みデータをＦＩＦＯシーケンスにおいて蓄積し、供給する工程を備えることを特徴とする方法。
【請求項２４】
請求項21記載の方法であって、
第２の信号を第３のポイントツーポイント・リンク上で受信する工程と、
前記第２の信号を第4のポイントツーポイント・リンク上で再駆動させる工程とを更に備えることを特徴とする方法。
【請求項２５】
請求項21記載の方法であって、
読み取りデータをメモリ装置から蓄積する工程と、
前記読み取りデータを第２の信号として送信する工程とを更に備えることを特徴とする方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ経路とメモリ装置との間でデータを蓄積するメモリ装置及びメモリ方法に関する。
【背景技術】
【０００２】
図1は、米国電気電子技術者協会（IEEE）によって標準として提案された、RamLinkとして非公式に知られている従来技術のメモリ・システムを示す。この標準は、IEEE標準1596.4-1996と呼ばれていたものであり、IEEE  Standard  for  High-Bandwidth  Memory  Interface  Based  on  Scalable  Coherent  Interface  （SCI）  Signaling  Technology  (RamLink)として公式的に知られている。図1のシステムは、メモリ・コントローラ10と、1つ又は複数のメモリ・モジュール12とを含む。メモリ・コントローラ10は、通常、プロセッサに内蔵されるか、プロセッサ用のコンパニオン・チップセット上に作られる。各メモリ・モジュール12は、１つのリンク入力及び１つのリンク出力を有するスレーブ・インタフェース14を有する。上記構成部分は、構成部分間に単方向リンク16を備えるRingLinkとして知られているRamLink信号トポロジにおいて配置される。各モジュール・インタフェース上の制御インタフェース18は、スレーブ・インタフェース14をメモリ装置20とインタフェースする。図1に示すシステムでは、SyncLinkとして知られる別のRamLink信号トポロジをスレーブ・インタフェースとメモリ装置との間で用いる。
【０００３】
RamLinkシステムの目的は、メモリ装置への高速アクセスを備えるプロセッサを提供することである。データは、メモリ・コントローラとモジュールとの間で、RingLinkに沿って循環するパケットにおいて転送される。コントローラは、要求パケット全てを生成し、スレーブ応答パケットの戻りをスケジューリングする役割を果たす。
【０００４】
書き込みトランザクションは、コマンド、アドレス、時間及びデータを含む要求パケットをコントローラが特定のモジュールに送ると開始される。パケットは、目的のスレーブに達するまでモジュールからモジュールに転送され、目的のスレーブはデータを、記憶するようメモリ装置のうちの１つに転送する。スレーブは次に応答パケットを送る。応答パケットを、コントローラに達するまでモジュールからモジュールに転送して、書き込みトランザクションが完了した旨を確認する。
【０００５】
読み取りトランザクションは、コマンド、アドレス及び時間を含む要求パケットをコントローラがモジュールに送ると開始される。そのモジュール上のスレーブは、要求データをメモリ装置のうちの１つから取り出し、それをコントローラに向けて応答パケットにおいて戻し、それは、コントローラに達するまでもう一度モジュールからモジュールに転送される。
【０００６】
図2は、従来技術のRamLinkスレーブ・インタフェース回路を示す。図2の回路では、ソース同期ストローブを用いて入力データ信号をクロッキングする。すなわち、入力データ信号に付随するストローブ信号を用いて入力データをサンプリングする。図2の回路は、位相ロック・ループ（PLL）を用いて、安定した局所クロック信号を基準クロック信号から生成し、それは他のスレーブ・インタフェース回路に分配される。局所クロック信号は、出力データ信号を再クロッキングして、データの、下流への転送につれてジッタが蓄積しないようにするのに用いられる。
【発明の開示】
【発明が解決しようとする課題】
【０００７】
本願は、別個の有用性を有する数多くの発明を包含する。一部の場合には、本願の発明の原理の一部が種々のかたちでお互いに組み合わせて利用され、それによって更なる発明をもたらす場合に更なる便益が実現される。
【課題を解決するための手段】
【０００８】
これらの原理は、数限りない実施例において実現し得る。
【発明を実施するための最良の形態】
【０００９】
本願の発明の原理を例証する目的で一部の特定の詳細を示すが、数多くの他の配置を、本願の発明の原理によって考え出し得る。よって、本願の発明の原理は、本明細書及び特許請求の範囲に開示した特定の詳細に限定されるものでない。
【実施例】
【００１０】
図3は、本願の発明の原理によるメモリ・インタフェース・システムの実施例を示す。図3のシステムは、単方向リンクから成るチャネルを介して通信する、メモリ・コントローラ50及び、1つ又は複数のメモリ・モジュール52を含む。チャネルは、1つ又は複数のアウトバウンド・リンク54を含むアウトバンド経路と、1つ又は複数のインバウンド・リンク56を含むインバウンド経路とを有する。各モジュールは、アウトバウンド経路上をリンクからリンクに、かつ、インバウンド経路上をリンクからリンクに信号を再駆動させることができる場合がある。各モジュールは、例えば、自らが最外モジュールであることをそのモジュールが検出した場合、又は、メモリ・コントローラからのコマンドに応じて、何れかの再駆動機能を選択的にディセーブルすることができる場合もある。
【００１１】
各モジュールは、1つ又は複数の経路との間でデータを転送するよう形成された1つ又は複数のメモリ装置58を含む。例えば、モジュールは、アウトバウンド経路からのデータがメモリ装置に転送され、メモリ装置からのデータがインバウンド経路に転送されるように形成し得る。1つ又は複数のバッファを、1つ又は複数のメモリ装置と1つ又は複数の経路との間に配置し得る。モジュール及びコントローラは、何れかの特定の機械的配置に限定されるものでない。例えば、モジュールを、基板上にシステムの残りの部分とは別個に作ってもよく、共通の基板上にコントローラ及びリンクとともに作ってもよく、何れかの他の機械的配置において実現してもよい。モジュールは、何れかの特定の種類のメモリ装置、例えば、読み取り専用メモリ（ROM）、ダイナミック・ランダム・アクセス・メモリ（DRAM）、フラッシュ・メモリ等に限定されるものでもない。
【００１２】
図4は、本願の発明の原理による、メモリ・モジュールの実施例を示す。図4のモジュールは、単方向リンク54A上及び単方向リンク56A上で信号を受信し、単方向リンク54B上と単方向リンク56B上との各々で信号を再駆動させる２つの再駆動回路60及び62を含む。1つ又は複数のメモリ装置58が、1つ又は複数の再駆動回路との間でデータを転送するよう形成される。
【００１３】
図4のモジュールは、何れかの特定の単方向リンク配置にも、何れかの特定の、再駆動回路との間でデータを転送する配置にも限定されるものでない。図4のモジュールを、図3に示すものなどのメモリ・システムにおいて用いることとする場合、再駆動回路60をアウトバウンド再駆動回路として指定し、リンク５４A及び５４Bを含むアウトバウンド経路上で信号を受信し、再駆動させてもよく、他方の再駆動回路62を、インバウンド再駆動回路として指定し、リンク56A及び56Bを含むインバウンド経路上で信号を受信し、再駆動させてもよい。この例では、1つ又は複数のメモリ装置58を、データがアウトバウンド再駆動回路60からメモリ装置に転送され、メモリ装置からインバウンド再駆動回路62に転送されるように配置し得る。
【００１４】
モジュールは、それがチャネル上の最外モジュールかを検出し、それに応じて何れかの再駆動機能を選択的にディセーブルできる場合がある。例えば、図4のモジュールを図3に示すものなどのメモリ・システムにおいて用いることとし、自らが最外モジュールであることをモジュールが検出した場合、アウトバウンド再駆動回路は、リンク54A上の入力信号を受信するが、それを再駆動させない。同様に、インバウンド再駆動回路は、メモリ装置から受信されるデータに相当する信号、及び/又はモジュールによって内部的に生成され得る他の信号によってのみリンク56Bを駆動させる。あるいは、モジュールは、自らが最外モジュールでないということを検出した場合、（例えば、メモリ・コントローラからのコマンドに応じて、）それが最外モジュールであるかのように動作できるように構成し得るものであり、その場合、インバウンド・リンク56A上で受信される信号を無視し得るものであり、アウトバウンド・リンク54B上に信号を再駆動させない場合がある。
【００１５】
図5は、本願の発明の原理による、メモリ・モジュールの別の実施例及びメモリ・バッファの実施例を示す。図5のモジュールは、単方向リンク54A上及び単方向リンク56A上で信号を受信し、単方向リンク54B上と単方向リンク56B上との各々で信号を再駆動させる２つの再駆動回路60及び62を有するメモリ・バッファ64を含む。メモリ・バッファは、1つ又は複数のメモリ装置58との間でデータを転送するよう形成されたメモリ・インタフェース66も含む。バッファは、自らがチャネル上の最後のエージェントであるかを検出し、それによって何れかの再駆動機能を選択的にディセーブルできる場合がある。バッファは、例えば、メモリ・コントローラからのコマンドに応じて、そうでなくてもそれがチャネル上の最後のエージェントであるかのように動作できる場合がある。本明細書及び特許請求の範囲使用のエージェントは、チャネルとインタフェースされる何れかの（ホストとも呼ばれる）メモリ・コントローラ、モジュール、バッファ等を表す。
【００１６】
図5のモジュール及びバッファは、何れかの特定の単方向リンク配置にも、何れかの特定の、メモリ・インタフェースと再駆動回路との間で転送する配置にも限定されるものでない。図5のモジュールを、図3に示すものなどのメモリ・システムにおいて用いることとする場合、再駆動回路60をアウトバウンド再駆動回路として指定し、リンク５４A及び５４Bを含むアウトバウンド経路上で信号を受信し、再駆動させてもよく、他方の再駆動回路62を、インバウンド再駆動回路として指定し、リンク56A及び56Bを含むインバウンド経路上で信号を受信し、再駆動するよう形成してもよい。この例では、メモリ・インタフェースを、アウトバウンド最駆動回路60からデータを受信し、インバウンド再駆動回路62にデータを送るよう構成し得る。
【００１７】
種々の機械的配置を用いて図4及び図5のメモリ・モジュール及び/又はメモリ・バッファを実施し得る。例えば、メモリ装置58、再駆動回路60及び62、並びにバッファ64を全て、共通の回路基板上に実装された、別個の集積回路として実現してもよく、別個の回路基板上に実現してもよい。構成部分の種々の組み合わせは、共通の集積回路上に一緒に作ってもよく、全て、単一の集積回路上に作ってもよい。1つ又は複数の回路基板がある場合、そうしたものは、マザーボード上のソケットに挿入できてもよく、マザーボードと一体化させて作ってもよく、何れかの他のやり方で配置してもよい。例えば、構成部分がマルチチップ・モジュールの一部として作られる場合、回路基板がない場合がある。本願の発明の原理によるメモリ・バッファを用いて、メモリ装置以外の装置をチャネルにインタフェースし得る。例えば、本願の発明の原理によるメモリ・バッファを用いて、入出力コントローラ又はブリッジをチャネルとインタフェースし得る。
【００１８】
本願の発明の原理による装置の更なる実施例は、図3に示す実施例などのメモリ・システムにおいて装置を利用し得る方法についての理解を容易にするよう、「インバウンド」及び「アウトバウンド」の経路、リンク、再駆動回路等を参照して説明する。しかし、こうした装置は、何れかの特定の単方向リンク配置にも、リンクと、他の回路との間でデータを転送する、示された特定の配置にも、示された実施例の詳細の何れかにも限定されるものでない。
【００１９】
図6は、本願の発明の原理による、メモリ・システムの更なる例示的な実施例、メモリ・モジュールの更なる例示的な実施例、及びメモリ・バッファの更なる例示的な実施例を示す。図6を参照すれば、１つ又は複数のメモリ・バッファ52は、1つのエッジの両側に沿って接触指を有して、システムの他の構成部分を保持する別の回路基板上のコネクタに挿入し得るデュアル・インライン・メモリ・モジュール（ＤＩＭＭ）を形成する印刷回路基板を基礎としている。既存のフォーム・ファクタ、例えば、ダブル・データ・レートII(DDR2)ダイナミック・ランダム・アクセス・メモリ（DRAM）モジュールに用いるDIMMフォーム・ファクタをモジュールに採用し得る。
【００２０】
モジュールには、メモリ装置58、例えば、DDR2  DRAMなどのコモディティ・タイプのDRAMが実装される。各モジュール上のメモリ・バッファ64は、ホストとしても呼ばれるメモリ・コントローラ50とモジュールをインタフェースするチャネルからメモリ装置を絶縁する。チャネルは、アウトバウンド・リンク54を含むアウトバウンド経路と、インバウンド・リンク56を含むインバウンド経路とを備えたポイントツーポイント配置において配線される。リンクは、並列単方向ビットレーンによって低電圧差動信号を用いて実施し得る。
【００２１】
図6の実施例では、コマンド、リセット、初期化等などの機能には更なる信号線は何ら用いられない。その代わりに、これらの機能は、チャネルによって送られるデータ内に直接コード化される。あるいは、何れかの数の更なる信号線を、しかし、用いてそうした機能を実施し得る。
【００２２】
基準クロック信号REF  CLKがクロック合成器76によって生成され、ホスト及びモジュールに、場合によってはクロック・バッファを介して分配される。これによって、局所で生成されるクロック信号を用いて入力データをサンプリングし、再駆動させる疑似非同期クロッキング手法が容易になる。共通基準クロックが各エージェントで利用可能であるので、データ信号を、周波数トラッキングが何らなしでクロッキングし得る。あるいは、局所クロック信号を、何れかの基準ブロックとは別個に生成し得る。別の代替策として、ソース同期ストローブなどの同期クロッキング手法を用い得る。
【００２３】
考えられる1つの手法では、ホストは、データを、場合によっては（本明細書及び特許請求の範囲では区別なく用いられる）パケット内又はフレーム内で、アウトバウンド経路上の最内モジュールに送ることによってデータ転送を開始する。最内モジュールはデータを、受信し、アウトバウンド経路上の次のモジュールへ再駆動させる。各モジュールは、最外モジュールに達するまでアウトバウンド・データを受信し、再駆動させる。最外モジュールはデータを「存在しない」アウトバウンド・リンクに再駆動させようとし得るが、各モジュールは、自らが最外モジュールであるということを検出し（、又は、そうであることの指示を受け）、何れかの再駆動回路をディセーブルして不要な電力消費、雑音等を削減することができる場合がある。この実施例では、ホストの方向の、すなわち、インバウンドの、データ転送が最外モジュールによって開始される。各モジュールは、インバウンド・データを、インバウンド経路に沿って、ホストに達するまで受信し、再駆動させる。
【００２４】
何れかの適切な通信プロトコルを物理チャネルを介して用い得る。例えば、ホストを、インバウンド・データ転送及びアウトバウンド・データ転送の全てを開始し、スケジューリングするよう指定し得る。あるいは、何れかのエージェントがデータ転送を開始することを可能にし得る。データのフレームは、コマンド、読み取りデータ、書き込みデータ、ステータス情報、エラー情報、初期化データ、アイドル・パターン等や、それらの何れかの組み合わせを収容するよう構成し得る。プロトコルは、ホストがコマンド・フレームを目的モジュールにアウトバウンド経路に沿って送ると、目的モジュールは、応答フレームをもう一度ホストに向けてインバウンド経路に沿って直ちに送ることによって応答する。そうした実施例では、目的モジュールは、アウトバウンド経路上のコマンド・フレームを再駆動させるものでない。
【００２５】
別の実施例では、目的モジュールは、コマンド・フレームを受信し、更に、コマンド・フレームをアウトバウンド経路上で再駆動させる。最外モジュールは、コマンド・フレームを受信すると、（場合によっては、アイドル・フレームに過ぎない）応答フレームをインバウンド経路上で起動させる。目的モジュールは、応答フレ―ムがそのインバウンド受信器に達するまで待つ。目的モジュールは更にその応答を、インバウンド・データ・ストリームに、例えば、最外モジュールによって送られた応答フレームを目的モジュールの真の応答フレームによって置き換えることによってマージする。
【００２６】
図7は、本願の発明の原理による、メモリ・バッファの別の例示的な実施例を示す。図7のメモリ・バッファは、リンク５４A及び５４Bを含むアウトバウンド経路上で信号を受信し、再駆動させるアウトバウンド再駆動回路60と、リンク56A及び56Bを含むインバウンド経路上で信号を受信し、再駆動させるインバウンド再駆動回路62とを含む。メモリ・インタフェース66はバッファを1つ又は複数のメモリ装置とインタフェースし、それは、メモリ・バス68経由であり得る。メモリ・インタフェースは、FIFOバッファなどの読み取りバッファ及び/又は書き込みバッファを含み得る。アウトバウンド経路からのデータはメモリ・インタフェースに結合され、これは、アウトバウンド経路が2つ以上のビットレーンを有する場合にデータ・ビット間のスキューをなくすデスキュー回路70経由であり得る。パターン生成器72は、例えば、バッファがチャネル上の最外エージェントであり、入力インバウンド・リンク56A上で受信される信号が何ら存在しないことがあり得る場合に、インバウンド経路の上に送信する対象のステータス・パターンを生成するのに用い得る。マルチプレクサ74は、メモリ・インタフェース又はパターン生成器からのデータをインバウンド再駆動回路に選択的に結合する。
【００２７】
メモリ・インタフェースは、何れかの特定の配置に限定されるものでなく、標準的なメモリ装置、特に、DDR2  DRAMなどの、コモディティのメモリ装置との互換性を有し得る。メモリ・バッファ全体を単一の集積回路上に一体化してもよく、1つ又は複数のメモリ装置に一体化してもよく、その構成要素を別個の構成部分上に一体化してもよく、何れかの他の機械的配置を用いてもよい。図7に示す実施例は例示的なものにすぎず、本願の発明の原理による他の実施例が考えられる。例えば、図7の実施例は、アウトバウンド再駆動回路からメモリ・インタフェースへ流れ、メモリ・インタフェースからインバウンド再駆動回路に流れる単方向データによって示す。しかし、このデータ・フローは双方向であってよく、他の配置が考えられる。図7の実施例を、メモリ・インタフェースのデータが図7に示すように流れるだけでよいチャネル・システムにおいて用いることとする場合でも、完全な双方向データ・アクセスを有する再駆動回路によってなお実現し得るが、それは、これによって、例えば、内蔵自己検査（ＢＩＳＴ）機能の実施を容易にし得るものであるからであり、この場合、インバウンド経路からのデータをデスキューする第２のデスキュー回路が有用であり得る。
【００２８】
図8は、本願の発明の原理による、再駆動回路の実施例を示す。図8の回路は、出力データ信号TXとして再駆動させ得る入力データ信号RXを各々が受信する1つ又は複数の入出力セル７４を含む。あるいは、入出力セルは、読み取りデータ信号RDXを出力データ信号に置き換えるかマージし得る。書き込みデータ信号WDXは、出力データ信号として再駆動される前又は再駆動された後に入力データ信号から取得し得る。
【００２９】
上記信号名のうちの何れかにおける「X」は、再駆動回路における入出力セルの数によって変わってくる、複数の同様な信号のうちの１つであり得るということを示す。例えば、９つのビットレーンを有する再駆動回路は、R0、R1…R8と命名された入力データ信号を備える９つの入出力セルを有することになる。単一の入出力セルのみを備える再駆動回路では、データ入力信号はR0になるか単にRになる。RXの語は、入力データ信号の何れか又は全てを総称して表すのに用いる。
【００３０】
「書き込みデータ」の語は、入出力セルを介して進むデータ・ストリームから得られる何れかのデータを示すのに、便宜上用いる。これは、しかし、書き込みデータをメモリ・インタフェース又はメモリ装置に誘導しなければならないということを示唆するものでない。同様に、「読み取りデータ」は、入出力セルに入力される何れかのデータを表すが、読み取りデータは、メモリ装置やメモリ・インタフェースだけでなく、何れのソースからも来ることがあり得る。
【００３１】
図8をもう一度参照すれば、クロック生成器80は、基準クロック信号REF  CLKに応じていくつかの位相クロック信号PCXと、送信クロック信号TCとを生成する。クロック生成器は、基準クロック信号REF  CLKの倍数として送信クロックTCを生成する位相ロック・ループ（PLL）と、位相クロック生成器84とを含む。考えられる一実施例では、90度間隔が空けられ、送信クロックTCから得られる４つの位相クロック信号PC0、PC1、PC2及びPC3が存在する。入出力セル各々は、TCクロック信号及びPCXクロック信号のうちの1つ又は複数を用いて、データ信号のサンプリング及び/若しくは再駆動、並びに/又は更なる局所クロック信号の生成を行い得る。この実施例では、位相クロック信号及び送信クロック信号は、入力データ信号TXの何れかの位相に応じて調整されないという意味で、安定した信号である。
【００３２】
図9は、本願の発明の原理による、入出力セルの実施例を示す。受信器86は、データ信号RXを受信し、サンプリング・クロック信号SCに応じてデータ信号TXとして再駆動させるよう形成される。サンプリング・クロック信号は、データ信号RXに応じてサンプリング・クロック信号を調節できるサンプリング・クロック生成器88によって生成される。書き込みデータ信号WDXは、受信器86の入力又は出力から取得し得る。図9に示すように受信器の出力から得る場合、サンプリング・クロック信号SCを、書き込みデータのストローブ信号として用いてもよく、書き込みデータのストローブ信号を得るのに用いてもよい。サンプリング・クロック生成器への入力は、図9に示すように受信器の入力以外の点から取得し得る。例えば、受信器の出力からも取得し得る。
【００３３】
図10は、本願の発明の原理による、入出力セルの別の実施例を示す。図10の実施例では、サンプリング・クロック生成器88は、補間器90及び受信器トラッキング装置（RTU）によって実施される。補間器は、受信器トラッキング装置からのトラッキング信号に応じていくつかの位相クロック信号PCX（この場合、位相が90度異なる４つの信号）間を補間することによってサンプリング・クロック信号を生成する。受信器トラッキング装置は、データ信号RXを観測し、サンプリング・クロック信号が受信器に、適切な時点でのデータ信号のサンプリング及び再駆動を行わせるようにトラッキング信号を調節する。よって、サンプリング・クロック信号は、データ信号を動的にトラッキングし得る。
【００３４】
考えられる一実施例では、受信器トラッキング装置は、データ信号をオーバサンプリングし、データ信号を、データ・アイの中心で、すなわち、データ信号内の遷移間の中間点で、サンプリングし、再駆動させるようサンプリング・クロック信号を調節することによってデータ信号RX内の遷移を観測する。サンプリング・クロック生成器88は、いくつかのビット・セルを測定するループ・フィルタを含み得るものであり、サンプリング・クロック信号の位相を調節してデータ・アイの場所の中心に近いデータを捕捉すべきであるということを最終的に判定し得る。サンプリング・クロック生成器への入力は、図10に示すように受信器の入力以外の点から取得し得る。例えば、受信器の出力からも取得し得る。
【００３５】
本願の発明の原理による入出力セルの実施例を、データ信号を動的にトラッキングするよう入出力セルを訓練する手法とともに用い得る。例えば、図10の入出力セルを図3に示すメモリ・モジュールのうちの１つとして用いる場合、ホストは訓練フレームをアウトバウンド経路の上に周期的に送り得る。こうした訓練フレームは、サンプリング・クロック信号を調節できるのに十分な遷移をデータ信号内で受信器トラッキング装置が必ず観測するようにするのに十分なエッジ密度を有する。同様に、図3における最外モジュールは、訓練フレームをインバウンド経路の上に周期的に送り得る。
【００３６】
図11は、本願の発明の原理による、入出力セルの別の実施例を示す。図11の実施例は図9の実施例と同様であるが、バッファ94がデータ信号経路において追加されている。バッファ94は、電圧誘導効果及び温度誘導効果を補償するジッタ回避バッファ又はドリフト補償バッファであり得る。バッファは、データ信号TXを送信クロック信号TCに再同期化させる。送信クロック信号は、その位相がデータ信号に応じて、サンプル・クロック信号SCが調節されるように調節されないという意味合いで安定している。
【００３７】
図11の実施例では、バッファは、パススルー・モードか、モード信号に応じた再駆動モードにおいて動作できる。パススルー・モードでは、信号は、サンプリング及び再駆動が行われることなく通過する。再駆動モードでは、信号は、クロック信号に応じてサンプリングされ、再駆動される。これによって、入出力セルが種々の再駆動モードにおいて動作可能になる。考えられる１つの実施例では、モード信号がアサートされる場合、バッファはパススルー・モードにおいて動作する。これは、再サンプル・モードとして表し、レーテンシが短くなり得るが、それは、データ信号が、データをサンプリングするのに用いるクロックと同じクロックによって再駆動されるからである。モード信号がアサートされない場合、バッファは再駆動モードにおいて動作するので、データは、送信クロックに再同期化される。これは再同期モードとして表し、レンテンシが長くなり得るが、ジッタを削減し得る。入出力セルは、モード信号を受信する入力を有するメモリ・バッファ内又はメモリ・モジュール内に設計し得る。メモリ・バッファ又はメモリ・モジュールを、次のエージェントまでの信号経路が比較的短いシステム上で用いることとする場合、入力をアサートして（、又は、極性によってアサートせずに）、入出力セルを再サンプル・モードで動作させ得るが、それは、更に多くのジッタを短い信号経路上で許容し得るからである。一方、次のエージェントまでの信号経路が比較的長いシステム上でメモリ・バッファ又はメモリ・モジュールを用いることとする場合、入力をアサート解除して、再同期モードで入出力セルを動作させ得るが、それは、これによって、レーテンシが長くなるという犠牲を払い得るとはいえ、ジッタが削減されるからである。あるいは、登録フラグを、メモリ・バッファ上かメモリ・モジュール上、若しくは再駆動回路内、又は入出力セル自体内で用いてモード信号を制御し得る。
【００３８】
図12は、本願の発明の原理による、入出力セルの別の実施例を示す。図12の実施例では、受信データ信号RX及び送信データ信号TXは、差動信号であり、入出力セルを作り得る集積回路ダイのエッジを横切っているものとして示す。受信器86は、サンプリング装置96及び終端装置98を含む。サンプリング装置は、サンプリング・クロック生成器からの位相クロック信号に応じて補間器90によって生成されるサンプリング・クロック信号SCに応じて入力データ信号をサンプリングする。終端装置は、差動終端を備え、差動データ信号をシングル・エンド信号に変換する。ジッタ回避バッファ又はドリフト補償バッファ94は、サンプリング・クロック信号SC又は、安定した送信クロック信号TCに応じてデータをクロッキングする。マルチプレクサ100は、バッファ94又は直列化装置102からのデータ信号を送信ラッチ104に選択的に結合する。読み取りデータ信号RDX[0…n]は、直列化装置102にある入出力セルで受信される。一方の入力がバッファに接続され、別の入力が補間器の出力に接続される別のマルチプレクサは、バッファ94と送信ラッチ104との間に配置し得る。
【００３９】
入出力セルが読み取りデータをデータ・ストリームにマージする必要がある場合、マルチプレクサは、送信クロック信号TCに応じて送信ラッチが読み取りデータを入出力セルの外にクロッキングするように直列化装置に結合されるその入力を選択する。さもなければ、マルチプレクサは、バッファからデータ信号を選択し、それは送信ラッチによって更に再駆動される。送信データ信号は、次の単方向リンクの上に駆動される前に送信器106によって差動信号にもう一度変換される。書き込みデータは、送信ラッチの出力から得られ、直列化解除装置108において収集され、更に、デスキュー回路、ビットレーン・フェイルオーバー機構や他の回路にルーティングされる。直列化解除装置は、サンプル・クロック信号から導き出し得るビットレーン・クロック信号BLCを備えて、書き込みデータWDX[0…n]が有効である時点を示す場合もある。
【００４０】
本願の発明の原理の一部は、再駆動経路とは別個に信号のデスキューを行うことに関する。再駆動経路は、受信され、再駆動されるにつれ信号が伝搬する1つ又は複数の構成部分によって規定される。例えば、図9及び図10の実施例では、再駆動経路は受信器86を含む。図11の実施例では、再駆動経路は受信器86及びバッファ94を含む。図12の実施例では、再駆動経路は、サンプリング装置96、終端装置98、バッファ94、マルチプレクサ100、送信ラッチ104、及び送信器106を含む。
【００４１】
本願の発明の原理の一部によれば、デスキュー回路を、再駆動回路に、デスキュー回路の個々のビットレーンが再駆動経路内に含まれるように再駆動回路に一体化させ得る。よって、ビットレーン上の信号を、経路に沿って再駆動されるにつれ、各再駆動回路においてデスキューし得る。あるいは、本願の発明の原理によるデスキュー回路は、しかし、再駆動経路とは別個のものであり得る。例えば、図7の実施例では、デスキュー回路を、再駆動回路６０における再駆動経路とだけではなく、再駆動回路全体とも別個であるものとして示す。あるいは、本願の発明の原理によるデスキュー回路は、再駆動経路とは別個である一方で、再駆動回路に一体化させ得る。例えば、図12の実施例では、1つ又は複数のデスキュー・ラッチを、直列化装置102の出力及び/又は直列化解除装置108の入力に配置させ得る。
【００４２】
前述のような、再駆動経路とは別個に信号をデスキューする方法及び装置の実施例は、例示的なものに過ぎず、これらの特定の例に限定されるものでない。更に、本願による、再駆動経路とは別個に信号をデスキューすることに関する原理は、本願の他の発明の原理とは別個のものである。例えば、図9乃至図12に示す再駆動回路の実施例が、アウトバウンド経路とインバウンド経路とを別個に有するメモリ・システムにおいて用いることに限定されるものでないのと同様に、本願による、再駆動経路とは別個に信号をデスキューすることに関する原理も、単方向リンクを利用した他の種類のメモリ・アーキテクチャ、例えば、RamLinkなどのリング・タイプのリンク配置を利用したアーキテクチャに用い得る。
【００４３】
本願の発明の原理の一部は、障害ビットレーンにうまく対処することに関する。例えば、図３、４、５、６又は７の実施例に示すエージェントの何れかの間の単方向リンクは何れも、2つ以上のビットレーンを有し得る。本願の発明の原理によれば、1つ又は複数の信号をビットレーン上で再誘導して、劣悪なビットレーンがないようにし得る。メモリ・コントローラ（ホスト）、モジュール、バッファ等などの何れかのエージェントは、1つ又は複数の信号をいくつかのビットレーン上で再誘導できる場合がある。信号は、リンクの一方の端部又は両方の端部に再誘導し得る。エージェントは何れも、自動的に、又は別のエージェントからの支援によって障害ビットレーンを検出できる場合があり、エージェントは何れも、別のコマンドからのコマンドに応じて信号を再誘導できる場合がある。
【００４４】
図13は、本願の発明の原理による、フェイルオーバー回路の実施例を示す。図13のフェイルオーバー回路110は、単に例証の目的で再駆動回路112の実施例とともに示すが、本願の発明の原理が何れかの特定の再駆動回路に用いることに限定されるものでも、フェイルオーバー回路が図13に示す特定の詳細に限定されるものでもない。再駆動回路112は、信号を単方向リンク上で受信し、再駆動させるよう形成されるいくつかのビットレーンを含む。各ビットレーンは、受信器116及び送信器118を有する入出力セル114として実施される。
【００４５】
フェイルオーバー回路は、1つ又は複数の信号を複数のビットレーンとの間で再誘導できる回路を表す。図13の実施例では、フェイルオーバー回路は、1つ又は複数のマルチプレクサ・スイッチ120を有するマルチプレクサとして実施される。￥各スイッチは、何れかのビットレ―ンからその出力に信号を再誘導させ得るように、第1の入力を１つのビットレーンに結合させており、第２の入力を隣接ビットレーンに結合させている。図13に示す実施例は、６つのビットレーンに応対する６つのスイッチによって示すが、何れかの数のスイッチ及びビットレーンを用い得るものであり、スイッチを、図示する隣接ビットレーン構成以外の種々の構成において実施し得る。
【００４６】
通常の動作モード中、スイッチの各々はその第１の入力からの信号を図14に示すようにその出力に、書き込みデータ信号WD0、WD1、WD2、WD3、WD4、及びWD5が、出力OUT0、OUT1、OUT2、OUT3、OUT4、及びOUT5の各々に誘導されるように誘導する。そうした実施例では、ビットレーンのうちの１つ、例えば、WD5に相当するビットレーンを、他のビットレーン上のデータのエラー・チェックに用い得る。
【００４７】
劣悪なビットレーンが検出された場合、マルチプレクサは、1つ又は複数のスイッチを操作して劣悪なビットレーンをマップアウトするフェイルオーバー・モードにおいて動作し得る。例えば、WD3に関連したビットレーンが適切に動作しない場合、マルチプレクサ・スイッチは、書き込みデータ信号WD4及びWD5を、図15に示すように出力OUT3及びOUT4に各々誘導し得る。このモードでは、一ビットレーン分の信号容量が失われる。ビットレーンのうちの１つがエラー・チェックに指定されていた場合、劣悪なビットレーンに元々向けられていた信号を、エラー・チェック・レーンを介して再ルーティングし得るものであり、エラー・チェック機能をディセーブルし得る。
【００４８】
フェイルオーバー回路の出力は、メモリ・インタフェース、メモリ装置、又は他の回路に結合し得る。図13の実施例では、フェイルオーバー回路は、再駆動回路とは別個のものとして示しているが、再駆動回路に一体化させてもよい。本願の発明の原理によるフェイルオーバー回路は、図示するような単純なマルチプレクサによって実現し得るが、完全なクロスバー・スイッチなどの他の配置も考えられる。
【００４９】
図13に示すフェイルオーバー回路の実施例は、ビットレーンからの書き込みデータをその出力に結合するよう形成される。あるいは、本願の発明の原理によるフェイルオーバー回路の実施例は、データを反対方向に転送するよう形成し得るものであり、その場合、出力ＯＵＴＸは、読み取りデータを受信する入力になり、マルチプレクサ・スイッチはデマルチプレクサ・スイッチとして表し得るものであり、入出力セルの各々は、受信器と送信器との間にマルチプレクサを有して、フェイルオーバー回路からの読み取りデータをビットレーンにマージし得る。よって、マルチプレクサは、マルチプレクサもデマルチプレクサも表す。別の例として、本願の発明の原理によるフェイルオーバー回路の実施例は、ビットレーンと、メモリ装置、メモリ・インタフェースや他の回路との間の双方向データ・フローに形成し得る。
【００５０】
ビットレーン・フェイルオーバー機能を有するメモリ・バッファ、メモリ・モジュール、メモリ・コントローラ（ホスト）や他のエージェントは、本願の発明の原理による、障害ビットレーンの検出、信号の再誘導、劣悪なビットレーンのマップアウト等を行う種々の機能を有する場合もある。例えば、図１３に示すフェイルオーバー回路の実施例を有するエージェントは、例えば、別のエージェントによって送られるテスト・データ・パターンを観測し、障害ビットレーンをマップアウトするよう信号を再誘導することによって、障害ビットレーンを検出できるように設計し得る。あるいは、エージェントは、別のエージェント、例えば、メモリ・チャネル上の1つ又は複数のエージェントに指示するメモリ・コントローラからのコマンドに応じて、障害ビットレーンをマップアウトし得るように設計し得る。あるいは、エージェントは両方の機能を有し得る。
【００５１】
図16は、本願の発明の原理による、ビットレーン・フェイルオーバー機能を備えるメモリ・バッファの実施例を示す。図16の実施例は、図7の実施例と同様であるが、デスキュー回路70とメモリ・インタフェース66との間に結合されたフェイルオーバー回路122も含む。別の実施例も考えられる。例えば、フェイルオーバー回路は、再駆動回路60とデスキュー回路との間に配置してもよく、再駆動回路に一体化させてもよい。図16の実施例は、マルチプレクサ74と再駆動回路62との間に結合されたものとして示しているが、再駆動回路に一体化させてもよく、他の方法で形成してもよい別のフェイルオーバー回路124も含む。図16のメモリ・バッファは、あるいは、メモリ・モジュールとして実施し得るものであり、その場合、メモリ・インタフェースはメモリ装置によって置き換えられる。
【００５２】
図17は、本願の発明の原理による、ビットレーン・フェイルオーバー機能を備えるメモリ・コントローラの実施例を示す。図17のコントローラは、各々がいくつかの送信器といくつかの受信器とをこの例では含む複数のビットレーンを有するアウトバウンド単方向リンク・インタフェース126及びインバウンド単方向リンク・インタフェース128を含む。フェイルオーバー回路130及び132は、インタフェース126内のビットレーン及びインタフェース128内のビットレーンの各々に結合される。図17の実施例では、フェイルオーバー回路は、リンク・インタフェースとは別個のものとして示しているが、あるいは、インタフェースと一体化されたものであってもよい。コントローラは、障害ビットレーンを検出できる場合があり、その場合には、フェイルオーバー回路は障害ビットレーンをマップアウトし得る。更に、又はあるいは、コントローラは、障害ビットレーンをマップアウトするようエージェントに指示するコマンドを出すことができる場合がある。
【００５３】
本願の発明の原理による更なるフェイルオーバー方法及びフェイルオーバー装置を、本願の発明の原理による、メモリ・コントローラ（ホスト）、メモリ・モジュール、及びメモリ・バッファの更なる実施例を含む完全なメモリ・チャネル・システムの例示的な実施例の意味合いで次に説明する。しかし、構成部分は何れも、この例示的なシステムに限定されず、本明細書及び特許請求の範囲記載の詳細の何れにも限定されない。
【００５４】
例示的なシステムは、図17を参照して説明したものなどのフェイルオーバー機能を有するホストの実施例と、図16を参照して説明したものなどのフェイルオーバー機能を備えたバッファを有する1つ又は複数のメモリ・モジュールの実施例とを含む。この例では、ホスト及びモジュールは、図7に示すものなどのアウトバウンド経路及びインバウンド経路を有するチャネル構成において形成されているが、システムは1つのモジュールのみを含み得る。
【００５５】
この例では、ホストとモジュールは、システム内の構成部分を管理するのに用いるシリアル・バス・システムである、「ＳＭBus」として知られるシステム管理バスによって相互接続される。しかし、SMBusを用いることは本願の発明の原理には必要でなく、メモリ・チャネル経路自体を含む、構成部分間の他の形態の通信を用い得る。
【００５６】
例示的なシステムにおける、障害ビットレーンを検出し、マップアウトする、本願の発明の原理による方法の実施例は以下のように進む。ホストは、アウトバウンド経路の各ビットレーン上でテスト・パターンを送信する。テスト・パターンは、最外モジュールに達するまで、アウトバウンド経路に沿って各モジュール上のバッファによって受信され、再駆動される。最外モジュールは更に、インバウンド経路の各ビットレーン上でテスト・パターンを送信する。テスト・パターンは、ホストに達するまで、インバウンド経路に沿って各モジュール上のバッファによって受信され、再駆動される。モジュール上のホスト及びバッファはインバウンド経路及び/又はアウトバウンド経路の各ビットレーン上のテスト・パターンを観測して、適切なビットレーン動作を確かめる。インバウンド経路におけるビットレーン及びアウトバウンド経路におけるビットレーンは同時に検査し得る。
【００５７】
障害ビットレーンは、ホストに向けてSMBusを介して結果を送ること、及び/又は結果フレームを、チャネルを介してホストに向けて送信することによって通知される。そうした結果フレームはインバウンド経路上に最外モジュールによって起動させ得るものであり、他のモジュールがあれば、それは結果情報をインバウンド経路内のデータにマージし得る。各モジュールからの結果が2つ以上のビットレーン上で冗長に送信される場合、障害ビットレーンは、結果の通知を妨害する可能性は低い。
【００５８】
ホストは、結果を受信すると、SMBusによってチャネルを介して、又は、何れかの他の形態の通信によって、コンフィギュレーション・コマンドをモジュールに向けて出し得る。コンフィギュレーション・コマンドは、劣悪であり、マップアウトすべきビットレーンがある場合、そのビットレーンをモジュールに指示する。モジュールはコンフィギュレーション・コマンドに、劣悪なビットレーンがあればそれを回避して信号を再誘導するよう1つ又は複数のフェイルオーバー回路を操作し、ビットレーンの喪失に対応するよう何れかの内部機能を再構成することによって応答する。例えば、一ビットレーンがエラー・チェック・データに指定された場合、バッファ又はモジュールは、エラー・チェック機能をディセーブルし得る。
【００５９】
前述のフェイルオーバー方法及びフェイルオーバー装置の実施例は例示的なものに過ぎず、本願の発明の原理はこうした特定の例に限定されるものでない。本願によるフェイルオーバー方法及びフェイルオーバー装置の原理は、図3の実施例などの、別個のインバウンド経路及びアウトバウンド経路を有するメモリ・システムを参照して説明したが、上記原理は、単方向リンクを利用した何れかのアーキテクチャ、例えば、RamLinkなどのリング・タイプのリンク配置を利用したアーキテクチャにも適用し得る。
【００６０】
本願の発明の原理の一部は、ステータス・パターンの順序変更に関する。メモリ読み取りデータ及びメモリ書き込みデータがメモリ・エージェント間で転送される、図１及び図3を参照して前述したものなどのメモリ・システムでは、アイドル・パターン、アラート・パターンや他のステータス情報などのステータス情報をメモリ・エージェント間で送ることも有用であり得る。これは、メモリ・エージェントを接続する1つ又は複数の同じリンク上でデータ・パターン及びステータス・パターンを送ることによって達成し得る。本願の発明の原理によれば、ステータス・パターンは経時的に順序変更し得る。
【００６１】
例えば、図3を参照すれば、メモリ・コントローラ50は、読み取りコマンドなどのデータ・パターンを有するフレームを1つ又は複数のモジュール52に送り得るものであり、1つ又は複数のモジュール52は、読み取りデータなどのデータ・パターンを有するフレームをもう一度コントローラに送ることによって応答する。1つ又は複数のモジュールが、例えば、メモリ装置58から読み取りデータを十分速く取り出すことができなかった場合、アイドル・パターンを有するフレームをもう一度メモリ・コントローラに送ることが有用であり得る。所定のデータ・パターンをアイドル・パターンとして、メモリ・コントローラがアイドル・パターンを受信すると読み取りデータを受信していないということが分かるように指定し得る。しかし、このことによって、実際の読み取りデータ・パターンが指定アイドル・パターンに一致する場合に問題が生じ得る。
【００６２】
本願の発明の原理によれば、メモリ・コントローラも、1つ又は複数のモジュールも、アイドル・パターンが経時的に変動するように予測可能にアイドル・パターンを順序変更できる場合がある。例えば、メモリ・コントローラ及びメモリ・モジュールは、アイドル・フレームの送信及び/又は受信の都度、アイドル・パターンを所定のシーケンスによって変更し得る。本願の発明の原理によるそうした方法の実施例は図18に示す。よって、メモリ・コントローラは、読み取りコマンド・フレーム(158)を送信し、現在のアイドル・パターン（162）を有する応答フレーム(160)を受信する場合、同じ読み取りコマンド(164）を再送信し得る。第２の応答フレーム(166)は、第１のものと同じパターンを含む場合、そのパターンを実際の読み取りデータ(170)として解釈する。しかし、第２の応答フレームにおけるパターンが、順序変更されたアイドル・パターン(168)に一致する場合、メモリ・コントローラは、第１応答フレームがアイドル・フレーム(172)であったということが分かる。
【００６３】
本願の発明の原理によれば、ステータス・パターンにおいて送られるステータス情報は、アイドル・パターン、アラート・パターン、及び、モジュールからのコマンド・エラー情報、モジュールからの熱過負荷情報や、メモリ・チャネルのアウトバウンド経路上で別のモジュールが存在していることをモジュールが検出した旨を示す情報などの他のステータス情報であり得る。一部のタイプのステータス・パターンは、相補的パターンとして実施し得る。例えば、（エラー状態をエージェントに通知するのに用い得る）アラート・パターンは、論理的に相補的なアイドル・パターンとして実施し得る。これによって、例えば、アイドル・パターン及びアラート・パターンに同じパターン生成器をメモリ・エージェントが用いることを可能にすることによって、実施が単純になり得る。パターンの順序変更が用いられない場合でも相補的ステータス・パターンを用いることには便益があり得る。
【００６４】
本願の発明の原理によるメモリ・エージェントは、ステータス・パターンにおいて巡回冗長検査（ＣＲＣ）エラーなどのエラーを意図的に生成できる場合もある。そうした手法は、データ・パターンをステータス・パターンと区別するうえでの別のやり方又は補完的なやり方として有用であり得る。例えば、一部のメモリ・システムでは、各フレームは、フレーム内のデータの完全性を確かめるのに用いるＣＲＣコードとともに送られる。本願の発明の原理によれば、メモリ・エージェントは、ステータス・パターンを含むフレームとともに、誤ったＣＲＣコードを意図的に送り得る。受信するエージェントは次に、フレ―ムをデータ・フレームとしてではなくステータス・フレームとして解釈し得る。一部のメモリ・システムは、追加のビットレーンを有する1つ又は複数の経路を利用してＣＲＣデータを伝搬し得る。そうしたシステムがフェイルオーバー・モードで動作できる場合、1つ又は複数のエージェントは、フェイルオーバー・モードで動作していない場合、意図的なＣＲＣエラーのみを利用し得る。本明細書及び特許請求の範囲使用の語ＣＲＣは、巡回冗長検査のみならず、フレーム又はパターンの完全性を検証するのに用いる何れかの他のタイプのエラー・チェック手法も表す。
【００６５】
本願の発明の原理によるステータス・パターンの順序変更及び処理の原理は、何れかのタイプのメモリ・エージェントに適用可能であり、本願の他の発明の原理とは別個のものであるが、一部の更なる局面を、図7に示す実施例などのメモリ・バッファに関して説明し、図6に示す実施例などのシステムの意味合いで説明する。図6を参照すれば、メモリ・バッファ64は、メモリ・チャネル上の最外エージェントである場合、メモリ・インタフェース66に接続された何れかのメモリ装置からホストが要求したデータが送信されない時はいつでもインバウンド・リンク５６B上の順序変更アイドル・ステータス・フレームを常に送信できる場合がある。
【００６６】
図19は、本願の発明の原理による、順序変更パターン生成器の実施例を示す。図19の実施例は、多項式x12+x7+x4+x3+1を備える12ビット線形帰還シフト・レジスタ（LFSR）である。初期状態は000000000001に設定し得るものであり、LFSRは、（212−1）個の状態（4095フレーム）をパターンが繰り返される前に循環する。LFSRの各ビットはデータ経路上のリンク内のビットレーンにマッピングし得るものであり、各ビットを、相当するビットレーン上でフレーム全体の間に行われる転送全てに用い得る。例えば、各リンク内に12個のビットレーンを備えるデータ経路を有するシステムでは、LFSRの各ステージからの出力をビットレーンのうちの１つにマッピングし得る。更なるレーン、例えば、13番目のビットレーンには、一フレーム遅延させたLFSRの最下位ビットからの値を利用することによって対応し得る。
【００６７】
図20は、図19の順序変更パターン生成器によって生成される第１のステータス・パターンの例を示す。この例では、フレームは、12転送長である。図21-22は、第２のステータス・パターン、第３のステータス・パターン、及び第4のステータス・パターンの各々を示す。同じ値を各ビットレーン上でフレ―ム全体の間に用いることによって、電磁干渉（EMI又は雑音）を削減し得る。
【００６８】
ここに示す（13ビットのレーン）x（12ビットの転送）のフレームは、例としてものであり、本願の発明の原理は、こうした詳細にも、前述の順序変更パターン生成器の特定の実施例にも限定されるものでない。例えば、本願の発明の原理による順序変更パタ―ン生成器は、前述のLFSRなどの専用論理回路によって実施しなくてよい。あるいは、プログラム可能なロジックによって、又は、順序変更ステータス・パターンを利用したバッファや他のメモリ・エージェントのメモリ・インタフェースや他の機能においてロジックの管理及び/又は実施を行うのに用い得るプロセッサや他のプログラム可能な状態機械におけるアルゴリズムとして実施し得る。
【００６９】
本願の一部の更なる発明原理は、2つ以上のビットレーンを利用してメモリ・リンク上にメモリ・エージェントが存在していることを検出することに関する。例えば、図7に示すメモリ・バッファの実施例では、バッファは、アウトバウンド・リンク５４Ｂに結合された別のメモリ・エージェントが存在するか否かを検出できる場合がある。このことは、リンクにおける単一のビットレーンを利用して別のメモリ・エージェントの存在について検査することによって達成し得る。しかし、リンクにおいて2つ以上のビットレーンが存在する場合、2つ以上のビットレーンを用いて、本願の発明の原理による、別のメモリ・エージェントの存在を検出し得る。これによって、劣悪なビットレーンが存在することが存在検出動作を妨げないようにし得る。
【００７０】
便宜上、2つ以上のビットレーンを利用してメモリ・エージェントの存在を検出することに関する、本願の発明の原理は、冗長存在検出として、個々に、かつ、併せて表す。冗長存在検出は、複数のビットレーンとのリンク・インタフェースを有する何れかのタイプのメモリ・エージェントに適用し得る。例えば、図13の実施例に示す送信器118のうちの何れか2つ以上を、リンク・インタフェース、この場合、送信リンク・インタフェースとみなし得る。同様に、図13に示す受信器116のうちの何れか2つ以上を、リンク・インタフェース、この場合、受信リンク・インタフェースとみなし得る。冗長存在検出は、こうしたリンク・インタフェースの何れかにも、図17の実施例に示すリンク・インタフェース126及び128の何れかにも適用し得る。
【００７１】
例としての、図7の実施例にもう一度戻れば、メモリ・バッファは、このインバウンド送信リンク５６B上の３つのビットレーンを所定の存在検出論理レベル、例えば１に駆動させて、その存在を、リセットなどの存在検出イベントが生起すると別のバッファに通知し得る。更に存在検出イベント中には、チャネル上の第１のバッファからインバウンド方向に配置された第２のそうしたメモリ・バッファは、そのインバウンド受信リンク56A上の相当する３つのビットレーンを、第１のバッファの存在を検出するよう構成し得る。この例では、第１のメモリ・バッファは外側エージェントとして表し、第２のメモリ・バッファは内側エージェントとして表す。
【００７２】
別のエージェントの存在を検出するようビットレーンを構成する手法の例として、存在検出論理レベルの逆のレベルにビットレーンを強制的に至らせるようにビットレーン上にバイアス電流を、そのビットレーンの受信器がかけるようにすることがある。別のメモリ・エージェントが存在検出イベント中にビットレーンに結合される場合、そのビットレーン上のその送信器は、現在の検出論理レベルにビットレーンを強制的に至らせる。
【００７３】
内部エージェントは、３つのビットレーンのうちの２つで存在検出論理レベルを検出した場合、外部エージェントが存在するということが分かり、その外側ポートの全部又は一部分をイネーブルした状態のままにし得る。（この例では、外側ポートはアウトバウンド・リンク54Aのリンク・インタフェースと、インバウンド・リンク56Aのリンク・インタフェースとを含む。）内側エージェントは、３つのビットレーンのうちの少なくとも２つで存在検出論理レベルの検出ができない場合、外側エージェントが存在していないということを判定し得るものであり、その外側ポートの全部又は一部分をディセーブルし得る。内側エージェントは、外側エージェントの存在の有無を別のエージェント、例えば、メモリ・コントローラに、ステータス・チェック・コマンドに応じて通知できる場合がある。
【００７４】
冗長存在検出を利用するエージェントは、存在検出イベントを別のエージェントに通知できる場合もある。例えば、リセット・イベントが図7のバッファにリセット・コマンドによってアウトバウンド経路上で通知された場合は、このコマンドを、外側エージェントがあればこれに向けて再駆動回路60によって中継し得る。これによって、両方のエージェントが存在検出モードに入り得る。
【００７５】
本願の発明の原理による冗長存在検出は、前述の特定の実施例に限定されるものでない。例えば、上記例のような３つの代わりに２つのビットレーンのみを存在検出に用い得るものであり、その場合、内側エージェントは、外側エージェントが存在しているということを結論付けるうえで単一のビットレーン上の存在検出論理レベルを検出するだけでよい。同様に、冗長存在検出を、種々の他のタイプのメモリ・アーキテクチャ、例えば、RamLinkなどのリング・タイプのリンク配置を利用したアーキテクチャを利用したシステム及び構成部分に適用し得る。
【００７６】
本願による特定の更なる発明原理は、構成部分のメモリ・チャネルからのホット挿入及び/又はホット除去、すなわち、メモリ・チャネルの動作中に構成部分の追加及び/又は除去を行うことに関する。図24は、本願の発明の原理によるメモリ・エージェント134の実施例を示す。図24の実施例は、メモリ・モジュール、メモリ・バッファ、メモリ・コントローラ等であり得る。エージェントは、第１のポート136及び第２のポート138を含む。エージェントが、単に例証の目的で、図6の実施例におけるモジュール52のうちの１つなどのメモリ・モジュールであるとみなされる場合、第１のポートは、内側ポートとして指定し得るが、それは、メモリ・コントローラの近くに配置された、メモリ・チャネル上の他のエージェントと通信するよう形成し得るからである。同様に、第２のポートは、外側ポートとして指定し得るが、それは、メモリ・コントローラから更に離れた場所に配置された、メモリ・チャネル上のエージェントと通信するよう形成し得るからである。これらの指定は例証の目的のために過ぎず、本願の発明の原理は、メモリ・エージェントのこうした詳細にも、図6に示すメモリ・チャネルの詳細にも限定されるものでない。こうした原理は、図1に示すRamLinkアーキテクチャなどの他のメモリ・チャネル・アーキテクチャにも適用可能であり得る。
【００７７】
本願の発明の原理によるメモリ・エージェントの各ポートは、1つ又は複数のリンク・インタフェースを有する。図24の実施例では、各ポートは、受信リンク・インタフェースも送信リンク・インタフェースも有する。内側ポート136は、再駆動回路60の一部である1つ又は複数の受信器であり得る受信リンク・インタフェース140と、別の再駆動回路62の一部である1つ又は複数の送信器であり得る送信リンク・インタフェース142とを有する。外側ポートは、再駆動回路62と再駆動回路60との各々の一部でもある、受信リンク・インタフェース144と受信リンク・インタフェース146との各々を有する。リンク・インタフェース140及び146をアウトバウンド・リンク５４Aとアウトバウンド・リンク５４Bとの各々に結合し得るものであり、リンク・インタフェース142及び144をインバウンド・リンク56Bとインバウンド・リンク５６Aとの各々に結合し得る。リンク・インタフェースの各々は、1つ又は複数のビットレーンを有し得るものであり、ビットレーン及びビット・インタフェースは、この用語の何れかの組み合わせを用いて表し得る。例えば、インタフェース142におけるビットレーンは、インバウンド送信ビットレーン又はインバウンドTxビットレーンとして表し得る。インタフェース144におけるビットレーンは、インバウンド受信ビットレーン又はインバウンドRxビットレーンとして表し得る。
【００７８】
図24の実施例は例示的なものに過ぎず、メモリ・エージェント及びメモリ・ポートは、種々のやり方で実施し得る。例えば、リンク・インタフェースは必ずしも再駆動回路の一部でない。これは、ポートが、再駆動回路の一部でないリンク・インタフェース126及び128を含み得る、図17に示すメモリ・コントローラの実施例において示す。リンク・インタフェースは、１つのみの、又は、何れかの数の、ビットレーンを含み得るものであり、ポートは、受信リンク・インタフェースのみ、又は送信インタフェースのみを有し得る。
【００７９】
本願の発明の原理によるメモリ・エージェントは、そのポートのうちの1つの上で別のメモリ・エージェントの存在を検出できる場合があり、別のメモリ・エージェントの存在の有無によって種々の措置を講じることができる場合がある。例えば、図24のメモリ・エージェントは、別のメモリ・エージェントがポートに存在しない場合、その外側ポートの全て又は一部分をディセーブルできる場合がある。それは、外側エージェントの存在の有無を別のエージェントに、例えば、メモリ・コントローラに、その内側ポートを介して通知できる場合がある。図24のメモリ・エージェントは、外側ポート上にあり得る外側エージェントに存在検出イベントを通知することを含み得る存在検出動作を行うことができる場合がある。それは、高速リセット動作を行うことができる場合もある。
【００８０】
本願による、ホット追加/ホット除去を容易にし得る、特定の更なる発明原理は、メモリ・システムの例示的実施例の意味合いで説明する。例示的な実施例は、図24のメモリ・エージェントを参照して、図6の実施例などのメモリ・システムの意味合いで説明する。この例示的な実施例では、図24のメモリ・エージェントを用いて図6における1つ又は複数のバッファを実施することとし、それは同様にメモリ装置を有するモジュールの一部である。しかし、こうした詳細は全て、説明の目的のために過ぎず、本願の発明の原理はこうした詳細に限定されるものでない。
【００８１】
例示的なシステムでは、メモリ・エージェントは、高速リセット動作、完全リセット動作、及び/又は種々のポーリング動作若しくは存在検出動作を実行できる場合がある。例示的なシステムでは、各ビットレーン上で得られたクロックをデータ・ストリームにロックさせたままにするには最小数のクロック遷移が必要であり得る。よって、メモリ・コントローラ（又はホスト）は、所定期間、アウトバウンド経路における1つ又は複数のビットレーン上で1又は0の連続したストリームを送ることによってリセット動作を開始し得る。データは経路上の各バッファによって再駆動されるので、バッファは全て、リセット・コマンド、又はリセット・イベントを受信する。例示的なシステムでは、３つの最下位ビット（ＬＳＢ）レーンを用いてリセット動作を通知し得る。受信エージェントは、３つのＬＳＢのうちの何れか2つの上で0又は1のストリームを検出することによってリセット・イベントを検出し得る。これは、１つの障害ビットレーンの存在がリセット動作に必ず干渉しないようにし得るが、２つ以上のビットレーンを必要とする訳でもない、本願の発明の原理は、そうした実施例に限定されるものでない。
【００８２】
例示的システムでは、ホストは、例えばホストが外部条件によってリセット状態に維持されている間に、0の連続したストリームを送って、チャネル上のエージェント（この例では、バッファを有するモジュール）全てを第１のリセット状態に無期限に維持し得る。ホストは、次に、第１の時間量、例えば、2フレーム期間、1のストリームを送り、更にもう一度0に戻って、高速リセット動作を実行するよう他のエージェントに通知し得る。あるいは、ホストは、第２の時間量、例えば、２フレーム期間を超えた期間、１のストリームを送って、完全リセット動作を実行するよう他のバッファに通知し得る。完全リセットは、リンク上のインピーダンス・マッチング、何れかの受信器回路又は駆動回路における電流源キャリブレーション、受信器オフセット相殺等などの種々の内部キャリブレーション動作を含み得る。キャリブレーション動作が行われた後、ホストは、高速リセット動作へ遷移するようバッファに更に通知し得る。
【００８３】
高速リセット動作は、キャリブレーション動作などの完全リセット中に行われる特定の動作をバイパスし得る。高速リセット動作は、存在検出動作から始まり得る。存在検出動作中、チャネル上の各バッファは、電流を３つのＬＳＢインバウンドRxビットレーン上に、外側エージェントに接続されていない場合、印加して、強制的にビットがゼロになるようにし得る。又、存在検出動作中、各バッファは、３つのLSBインバウンドTxビットレーンを1に駆動させ得る。各バッファは、その３つのLSBインバウンドRxビットレーンを更に確かめ、3つのレーンのうちの2つの上で1を検出した場合、その外側ポートをイネーブルのままにし、それに応じてステータス・レジスタを更新し得る。バッファが２つの1を検出しない場合、外側エージェントが存在しないものとみなし、その外側ポートの全て又は一部分をディセーブルし、チャネル上の最外エージェントの機能を行うようそれ自体を構成し、かつ/又は、それに応じてステータス・レジスタを更新し得る。ホストは、何れかのエージェントがチャネル上にあるかを判定するよう同様な存在検出動作をたどり得る。バッファは、ホストからのステータス要求に応じて、ステータス情報をホストに向けてステータス・フレームにおいて中継し得る。
【００８４】
存在検出動作の後、例示的なシステムにおけるバッファは、データ・ストリーム上にロックするようバッファ上の局所クロックを訓練するクロック訓練状態、チャネルを介して送られたフレームのアラインメントを行うフレ―ム訓練状態、ビットレーン全ての動作を確かめ、バッファをフェイルオーバー・モードに、そうした機能等がある場合、入れるビットレーン検査などの種々の他の動作を遷移し得る。更に、ホストは、チャネルに接続される他のエージェントの数が分かると、エージェント全てに対応するようフレーム・サイズ、タイミング等を調節し得る。
【００８５】
例示的なシステムでは、メモリ・エージェントは、チャネル上に新たに追加されたエージェントの存在を検出するよう種々のポーリング動作を行うことが又、又は、あるいは、できる場合がある。例えば、各バッファは、最外バッファである場合に、その外側ポート上でポーリング動作を行って、新たなエージェントがチャネルに追加されたかを判定できる場合がある。図25は、本願の発明の原理による、そうしたポーリング動作の実施例を示す。
【００８６】
148では、エージェントは、その外側ポートの全て又は一部分をディセーブルし得る。エージェントは、バッファ又はモジュールである場合、ホストからのポール・コマンドを待って、150でのホット・リセット動作に遷移し得る。エージェントは、ホストである場合、その外側ポートの全て又は一部分をディセーブルし、システム環境からのウェイクアップ・コマンドを待ち得る。ウェイクアップ・コマンドを受信すると、それは、同様にその外側ポートの全て又は一部分をイネーブルし、リセット状態に遷移し得る。
【００８７】
150では、エージェントは、その外側ポートをイネーブルし、３つのLSBアウトバウンドTxビットレーン上に0を駆動させて、その外側ポート上にあり得る新たなエージェントにリセットを送り得る。エージェントは、更に、１５２でのホット・キャリブレーション動作に遷移し得る。
【００８８】
152では、エージェントは、３つのLSBアウトバウンドTxビットレーン上に1を駆動させて、強制的に、キャリブレーション動作を含む完全リセットを、あり得る新たなエージェントが経るようにし得るが、それは、新たに検出されたエージェントのキャリブレーションを行う必要がおそらくあるからである。エージェントは、更に、154でのホット検出動作に遷移し得る。
【００８９】
154では、エージェントは、３つのLSBアウトバウンドTxビットレーン上に0を駆動させ、３つのLSBインバウンドRxビットレーン上にバイアス電流を、外側エージェントに接続されていない場合に、印加して、強制的にビットが0になるようにし得る。エージェントは、３つのLSBインバウンドRxビットレーンを更に確かめ、少なくとも2つの１を検出した場合、外側エージェントが存在しているということを155で決定し、156でのホット・エージェント存在動作に遷移し得る。さもなければ、エージェントは、外側エージェントが存在していないということを155で決定し、148でのスリープ動作にもう一度遷移し得る。
【００９０】
156では、エージェントは、外側エージェントを検出した旨を示すようステータス・レジスタを更新し、更に、この情報をホストに向けて、例えば、ステータス要求に応じて中継するか、ホストや他のエージェントに向けて情報を中継するよう特定の他の動作を行い得る。エージェントは、チャネル・リセットを受信するよう待つ場合もある。
【００９１】
ホストは、新たに検出されたエージェントが、定期的なステータス要求、又は他の手法によって分かり、高速リセットを起動して、チャネル上にあり、かつ、チャネル・タイミングにおいて対応される新たなエージェントによってチャネル全体を再初期化し得る。
【００９２】
以下には、本願の発明の原理によるホット追加/ホット除去のシーケンスの特定の更なる実施例を示す。こうした更なる実施例は又、図6に示すメモリ・システムの実施例を参照して、図6のメモリ・システムを用いた、ユーザ・インタフェース及びシステム・ファームウェアを有するサーバなどの大規模システムの意味合いで説明する。しかし、こうした更なる実施例によって示す発明原理は、本明細書及び特許請求の範囲記載の特定の詳細に限定されるものでない。
【００９３】
本願の発明の原理によるホット追加シーケンスは、ユーザが新たなエージェントを、メモリ・チャネル上に、例えば、最外エージェントの外側ポート上に付加すると始まり得る。ユーザは、エージェントが付加されたということをシステム・ファームウェアに通知し得る。ファームウェアは更に、付加されたエージェントに電力を印加させ、エージェントが付加された旨をウェイクアップ・コマンドによってホストに通知し得る。ホストは、先行最外エージェントにポール・コマンドを更に送り、それは、図25を参照して前述したものなどのポーリング動作を更に循環し得る。ポーリング動作の後、先行最外エージェントは、新たな外側エージェントの存在を通知し得る。ホストは、更に、新たなエージェントの存在を検出し、高速リセット・コマンドを出して、新たなエージェントを動作させ、チャネル全体の時間をもう一度調節し得る。新たなエージェントが動作状態に入った後、ホストは、新たなエージェントが動作状態にある旨を通知するようシステム・ファームウェアに割り込み得る。あるいは、ホストは、システム・ファームウェアがホストに照会して、新たなエージェントが動作状態にあるかを判定するのを待ち得る。システム・ファームウェアは、エージェントがメモリ・モジュール又はメモリ・バッファであった場合に存在し得る新たなメモリ装置などの新たなエージェントによって表され得る何れかの新たなハードウェアに対応するようホストを構成し得る。
【００９４】
本願の発明の原理によるホット除去シーケンスは、メモリ・チャネル上の特定のエージェントを除去すべきである旨をユーザがシステムに通知すると始まり得る。システムは、相当するホスト・アドレス範囲をシステム・マップから除去し得る。システムは、ミラーリングを用いている場合、ホスト・アドレス範囲をエージェント・ミラーに再マッピングし得る。システムは、更に、データをホスト・アドレス範囲から他の場所に、既にミラーリングされていない場合、複製又は移動し得る。システムは、更に、未処理トランザクション全てが完了するまでポーリングし得る。システムは、除去する対象のエージェントの直ぐ内側のエージェントに対して、チャネル上の最外エージェントであるとこのエージェントにみなさせるコマンドをホストが送るようにし、それによって、その外側ポートをディセーブルし、後の高速リセット中に最外エージェントの機能を呈するようにし得る。（完全リセットはこのコマンドを無効にすることになる。）システムは、更に、高速リセットを起動して、選択されたエージェントと、選択されたエージェントに接続された構成部分の、何れかのチャネル・インタフェースとを停止させ得る。システムは、更に、選択されたエージェントへの電力を切断し、エージェントを除去し得る旨をユーザに通知し得る。
【００９５】
本願の発明の原理によるホット置換シーケンスは、上記ホット除去シーケンスが完了すると始まり得る。ユーザは、除去されたものの代わりに新たなエージェントを追加し、新たなエージェントが追加された旨をシステム・ファームウェアに次に通知し得る。実行中のシステムは、更に、ホストを、新たに置換された構成部分に備え、新たな構成部分に電力を供給し得る。システム・ファームウェアは、更に、最外エージェントであるともうみなすべきでない旨を伝えるよう先行最外エージェントにコマンドをホストが送るようにし得る。これによって、先行最外エージェントがその外側ポートを次のリセットに応じてイネーブルするようになり、ポール・コマンドを待つようになり得る。ファームウェアは、先行最外エージェントにポール・コマンドを送るようホストに更に指示し得るものであり、先行最外エージェントは、更に、図25を参照して前述したものなどのポーリング動作を行い、それによって新たなエージェントを初期化し得る。先行最外エージェントは、新たな最外エージェントの存在を更に通知し得る。ホストは、更に、新たなエージェントの存在を検出し、高速リセット・コマンドを出して、新たなエージェントを動作させ、チャネル全体の時間をもう一度調節し得る。新たなエージェントが動作状態に入った後、ホストは、新たなエージェントが動作状態にある旨を通知するようシステム・ファームウェアに割り込み得る。あるいは、ホストは、システム・ファームウェアがホストに照会して、新たなエージェントが動作状態にあるかを判定するのを待ち得る。
【００９６】
本願の発明の原理の一部は、データ経路とメモリ装置との間でデータを蓄積することに関する。図26は、本願の発明の原理による、データ蓄積を利用したメモリ・モジュールの実施例を示す。図26のモジュール174は、1つ又は複数のメモリ装置180及び再駆動回路176を含んで、1つ又は複数の信号をポイントツ―ポイント・リンク178A上で受信し、更に、その信号をポイントツーポイント・リンク178B上で再駆動させる。データ・アキュムレータ182は、再駆動回路とメモリ装置との間に配置される。任意的な第２の再駆動回路184は、1つ又は複数の信号をポイントツーポイント・リンク186A上で受信し、その信号をポイントツーポイント・リンク186B上で再駆動させるよう形成される。この実施例では、ポイントツーポイント・リンクは単方向リンクとして示しているが、本願の発明の原理は単方向リンクに限定されるものでない。
【００９７】
データ・アキュムレータ182は、先入先出（FIFO）データ構造、又は何れかの他のタイプの適切なキュー若しくはバッファであり得る。データ・アキュムレータを用いることによって、帯域ミスマッチを見越し得る。例えば、高帯域バースト・モードを有するメモリ装置をメモリ装置180に用い得る。単方向リンクによって形成されるデータ経路の帯域は、ピン数、電力消費、並びに、製造費用及び運転費用を削減するために、メモリ装置のバースト・モードよりも少ないことがあり得る。しかし、メモリ装置は、バースト・モードにおける適切な動作には、完全な帯域でデータを受信する必要があり得る。データ・アキュムレータを利用することによって、データ経路からの書き込みデータを、メモリ装置のバースト・レートより少ないレートで蓄積し、その完全なバースト・レートでメモリ装置に供給し得る。
【００９８】
図26のモジュールは、何れかの特定の単方向リンク配置にも、何れかの特定の、再駆動回路との間でデータを転送する配置にも限定されるものでない。データは、再駆動回路176から1つ又は複数のメモリ装置180にデータ・アキュミュレータ182を介して流れるものとして示しているが、その方向は逆にし得るものであり、更なるデータ・アキュミュレータを、再駆動回路とメモリ装置との間に追加し得る。同様に、任意的な第２の再駆動回路184が含まれる場合、データは、メモリ装置に流れても、メモリ装置から流れてもよい。1つ又は複数のデータ・アキュムレータを第２の再駆動回路とメモリ装置との間に含めて、メモリ装置への書き込みデータ及び/又はメモリ装置からの読み取りデータを蓄積し得る。
【００９９】
図27は、本願の発明の原理による、データ蓄積を利用した、メモリ・モジュールの別の実施例及びメモリ・バッファの実施例を示す。図27のモジュール174は、２つの再駆動回路176及び184を有するメモリ・バッファ188と、1つ又は複数のメモリ装置180との間でデータを転送するよう配置されるメモリ・インタフェース190とを含む。図26のモジュールと同様に、再駆動回路のうちの１つのみが図27のバッファにおいて必要である。メモリ・インタフェース190は、再駆動回路176とメモリ装置180との間で流れるにつれてデータを蓄積するよう形成し得るデータ・アキュムレータ182を含む。データ・フローは何れかの方向であってもよく、更なるアキュムレータを、両方の方向におけるデータ蓄積に対応するよう含め得る。同様に、第２の再駆動回路184が含まれる場合、1つ又は複数の更なるデータ・アキュムレータを、第２の再駆動回路とインタフェースするよう含め得る。
【０１００】
図28は、本願の発明の原理による、データ蓄積を利用したメモリ・バッファの別の例示的な実施例を示す。図28のバッファ64は図7のものと類似しているが、メモリ・インタフェース66は、ＦＩＦＯ型の書き込みデータ・アキュムレータ192と、ＦＩＦＯ型の読み取りデータ・アキュムレータ194とを含む。考えられる実施の詳細の一部を図28の実施例を参照して説明するが、本願の発明の原理は、こうした詳細に限定されるものでない。
【０１０１】
第１の再駆動回路60からの書き込みデータは、アウトバンド経路が動作している何れのデータ・レートでも書き込みＦＩＦＯに蓄積される。書き込みデータは、十分蓄積されると、完全なバースト・レートでメモリ・バス68を介して1つ又は複数のメモリ装置に書き込み得る。読み取りFIFO194は、メモリ装置からのデータ捕捉を完全なバースト・レートで行い、読み取りデータを第２の再駆動回路62にマルチプレクサ74を介して転送する前にデータを平準化し得る。
【０１０２】
書き込みFIFOは、データをメモリ装置に出す前に複数のデータ・バーストを蓄積できるように構成し得る。これによって、メモリ・バスの読み取り・書き込み・読み取りのターンアラウンド・ペナルティをいくつかの書き込み動作にわたって償却することが可能になる。書き込みFIFOは、データがメモリ装置に供給されている間に更なるデータをFIFOにロードし得るように構成し得るものでもある。これによって、FIFOの深度を、バーストにおける転送の数よりも小さくすることが可能になる。更なる精緻化として、データ・プレアキュムレータを、書き込みＦＩＦＯの先に配置し、この特定のメモリ・バッファ64にデータが向けられたものであるか否かを考慮せずにデータ経路からの書き込みデータを思索的に捕捉するよう設定し得る。目的メモリ・バッファが識別されると。プレアキュムレータ内のデータを、このメモリ・バッファが目的受信先であった場合に転送し、さもなければ、単に廃棄し得る。
【０１０３】
本願に開示している他のメモリ・モジュール及び/又はメモリ・バッファと同様に、図26乃至図28を参照して説明したメモリ・モジュール及びメモリ・バッファの実施例は何れかの特定の機械的配置に限定されるものでなく、メモリ装置以外の装置をチャネルにインタフェースするのに用い得る。
【０１０４】
本願の更なる発明の原理の一部は、フレームの一部分についてＣＲＣコードを早期に供給してフレームを送信することに関する、図29は、本願の発明の原理による、フレームの例示的な実施例を示す。この例では、フレームは、10ビット幅で、かつ12転送長であるが、何れかの他の幅及び長さを用い得る。転送「0」として識別される行のビットは最初に転送され、次に、転送「1」として識別される行のビットが次に転送される、等である。フレームは、行「11」のビットが転送されると完了する。（網掛けで示す）最初の4行は、フレームの第１の部分として任意に呼ぶ一方、フレームの残りはフレームの第２の部分として呼ぶ。
【０１０５】
従来技術のフレーム転送手法では、フレーム全体をエラー・チェックするためのＣＲＣコードは、通常、フレームの最後に配置される。本願の発明の原理によれば、フレームの第１の部分のＣＲＣコードは、第２の部分の転送の完了前に転送し得る、又は、好ましくは、第２の部分の転送の開始前に転送し得る。こうした早期のCRC供給によって、フレームを受信するメモリ・エージェントが、フレームの第１の部分をエラー・チェックし、好ましくは、その中に入っている何れかの情報をフレームの第2部分が完了する前に利用し始めることが可能になる。
【０１０６】
例えば、DRAMチップなどのメモリ装置を通信チャネルからバッファリングする装置を有するメモリ・エージェントにこの手法を用いる場合、DRAMコマンドをフレームの第１の部分に配置し得る一方、データ・ペイロードを第２の部分に配置し得る。第１の部分についてCRCを早期に供給することによって、フレームを受信するメモリ・エージェントにおける装置が、フレームの第１の部分におけるコマンドをエラー・チェックし、それをDRAMチップに、第２の部分におけるデータ・ペイロードを受信する前に転送することが可能になる。
【０１０７】
第１の部分のCRCコードは、フレームの第１の部分の一部として含め得る。それは、第１の部分の最後に配置してもよく、第１の部分にわたって分散させてもよく、第１の部分に部分的にだけ含めてもよく、第２の部分の最後の前に受信されるような何れかの他の適切なやり方で転送してもよい。第１の部分のCRCコードは、他のCRCコードと組み合わせて合成コードを作成してもよく、フレーム内とフレーム外との他のコードとの合成の結果であってもよい。
【０１０８】
本明細書及び特許請求の範囲使用の第１の部分は、文字通りフレーム内の最初であるものでなくてもよく、後続部分よりも先行して受信される何れかの部分であってもよい。同様に、第２の部分は、最初のものの後の次の部分であり得るが、第１の部分と第2の部分との間に、又は第２の部分の後に、他の部分があってもよく、第１の部分及び第２の部分は、フレームが完全に転送される前に第１の部分のエラー・チェックが始まり得るように第１の部分のCRCを早期に転送し得るということが作用である限り、重なることもあり得る。
【０１０９】
フレームの第２の部分の第２のCRCコードは、第２の部分の最後に配置してもよく、第２の部分にわたって分散させてもよく、第２の部分に部分的にだけ含めてもよく、何れかの他の適切な方法で転送してもよい。第２のCRCコードは、フレームの第２の部分のみを包含してもよく、フレーム全体を包含してもよく、他のやり方で他のCRCコードと合成してもよい。
【０１１０】
CRCは、巡回冗長検査を表すのみならず、フレームの完全性を検証するのに用いる何れかの他のタイプのエラー・チェック手法をも表す。
【０１１１】
本願の更なる発明原理の一部は、CRCコードを複数のフレームにわたって編成することに関する。図30は、本願の発明の原理による、複数のフレームにまたがってCRCコードを供給する手法の例示的な実施例を示す。この例では、フレームは、10ビット幅で、かつ12転送長であるが、何れかの他の幅及び長さを用い得る。転送「0」として識別される行のビットは最初に転送され、転送「1」として識別される行のビットは次に転送される等である。フレームは、行「11」のビットが転送されると完了する。図30におけるフレームは、順次転送され、フレームN−1が最初に転送され、次にフレームNが続く。
【０１１２】
フレームN−1のCRCコード部分は、フレームN−1の転送「4」乃至「11」として識別される行のビット「9」の位置に任意にあるフレームN−1内の網掛けで示す。フレームN−１のCRCコードの別の部分は、行「0」乃至行「1」内のビット「9」乃至「7」と、行「2」乃至「3」内のビット「9」乃至「6」とに任意にあるフレームN内の網掛けで示す。
【０１１３】
（フレームN−1とフレームNとにわたって分散したものとして示した）フレームN−１のCRCコードは、フレームN−１の全て、フレームN−１の一部分のみ、又は、一部の他のフレームの全て若しくは一部分をエラー・チェックすることが意図されているものであり得る。別々のフレームN−1部分の複数の、CRCコード（又はCRCコードの一部分）は、同じフレームに入っていてもよく、他のフレームからのCRCコード（又はCRCコードの一部分）と合成して合成CRCコードを作成してもよい。
【０１１４】
CRCコードを複数のフレームにわたって編成することに関する、本願の発明の原理は、CRCコードの早期供給に関する発明原理とは別個のものである。しかし、こうした別々の原理を組み合わせ、それによって、更なる発明原理をもたらし得る。図31は、本願の種々の発明原理による、早期CRC供給と、分散させたCRCコードとを組み入れたフレーム転送手法の実施例を示す。数多くの実施の詳細は例として説明するが、本願の発明の原理はこうした詳細に限定されるものでない。
【０１１５】
図31の例示的実施例では、各フレームは、この場合も又、10ビット幅であり、かつ、12転送長であり、フレームN−1が最初に転送され、フレームNが続く。フレームN−１の最初の4行は、この場合も又、第１の部分として任意に呼び、コマンド部分として表す。最後の4行は、第２の部分として任意に呼び、データ部分として表す。
【０１１６】
コマンド部分は、24ビットのコマンド情報をaC[23:0]フィールドに含み、コマンド情報又はフレーム・タイプ符号化の２つの更なるビットをF[1:0]フィールドに含み、14ビットの合成CRCチェックサムをaE[13:0]フィールドに含む。aC[23:0]フィールド及びF[1:0]フィールドは、併せて、「A」コマンドとして表す。aE[13:0]フィールドは、F[1:0]フィールド、aC[23:0]フィールド及びaE[13:0]フィールドにわたるエラー検出範囲を備える。
【０１１７】
データ部分は、更なるコマンド、コマンド拡張、データ転送等に用い得るB[71:0]フィールド内の72ビットのデータと、FE[21:0]として識別される22ビット合成CRCチェックサムの一部分とを含む。２２ビットのうちの８つは、フレームN−１（現行フレーム）内のFE[21:14]フィールド内に配置される。他の14ビットは、図31中のフレームの外に示すFE[13:0]フィールドに配置されるが、それは、このチェックサム部分が、フレームN（次フレーム）においてラッチされ、CRCコードと合成されることになるからである。
【０１１８】
送信メモリ・エージェントでフレームを生成するために、（CRC22[21:0]又は「データCRC」として表す）22ビットCRCは72ビット・データB[71:0]から生成される。（CRC14[13:0]又は「コマンドCRC」として表す）14ビットCRCは、26ビット「A」コマンドF[1:0]aC[23:0]から生成される。22ビット・データCRCのうちの8ビットは、FE[21:14]として直接用いられ、現行フレームの10番目のビットレーン（ビットレーン「9」）に配置される。22ビット・データCRCの残りの14ビットは、FE[13:0]になり、それらを、次フレームにおいて26ビット「A」コマンドから生成される14ビットCRCと、ビット単位の排他的論理和（XOR）関数を用いて合成して、次フレームにおいて送信されることになる合成チェックサムaE[13:0]を作成する。現行フレームにおける合成14ビット・チェックサムaE[13:0]は、このフレームからの「A」コマンドの14ビットCRCと、先行フレームの72ビット・データから生成される、ラッチされたFE[13:0]とのXOR演算によって生成される。
【０１１９】
受信メモリ・エージェントでフレームを復号化するために、14ビット・コマンド・チェックサムCRC14[13:0]が26ビット・コマンドから生成され、22ビット・データ・チェックサムCRC22[21:0]が現行フレームにおける72ビット・データから生成される。CRC22[13:0]は、次フレームにおける将来の合成CRCチェック用のFE[13:0]としてラッチされる。検査合成チェックサムTESTaE[13:0]は、先行フレームからのFE[13:0]と、現行フレームからの新たなaE[13:0]とのビット単位でのXORによって生成される。生成された検査合成チェックサムTESTaE[13:0]が、現行フレームとともに送信された合成チェックサムaE[13:0]と一致する場合、現行フレームの「A」コマンドにはエラーは何ら存在しない。
【０１２０】
先行フレームからの72ビット・データにおける障害の検出を完了するために、現行の26ビット・コマンドから生成された14ビットのコマンド・チェックサムCRC１４[13:0]が、現行フレームからの新たなaE[13:0]とXORされ、それによって、先行フレームからの、ラッチされたFE[13:0]と比較される結果を生成する。
【０１２１】
現行フレームにおいて転送される72ビット・データの障害検出を開始するために、現行フレームとともに送信されるFE[21:14]が、現行フレームにおける72ビット・データから生成される新たなCRC22[21:14]と比較される。現行フレームにおいて転送される72ビット・データの障害検出は、次のフレームが着くと完了する。
【０１２２】
aE[13:0]における障害は、現行フレームにおける両方の「A」コマンドが障害を受けたものであり得るということと、先行フレームにおける72ビット・データが障害を受けたものであり得るということとを示す。送信されたFE[21:14]部分チェックサムにおける、障害の比較は、先行フレームにおける72ビット・データが障害を受けたものであり得るということを示す。
【０１２３】
「A」コマンドのCRCは、フレームの最初の4転送が受信されると直ぐに確かめ得るものであり、「A」コマンド内の情報を、フレームの残りが着くのを待たずに、直ちに用い得る。この手順は、現行フレームにおける「A」コマンドの供給におけるレーテンシを削減しながら、先行フレームの72データ・ビットの強いCRC保護を備え得る。
【０１２４】
本願の発明の原理は、図31に関して説明した実施例において示すビットの数又は位置に限定されるものでない。各フレームの第１の部分及び第２の部分をコマンド部分及びデータ部分として表しているが、何れかのタイプの情報を各部分において転送し得るものであり、データ部分は、更なるコマンド、コマンド拡張等を含み得る。記載したタスクは、記載した順序で行う必要は必ずしもない。よって、図31の実施例は、種々のシステム要件又はシステム状況に対応するよう修正し得る。
【０１２５】
本願の更なる発明原理の一部は、レーンの検査に可変マッピングを用いることに関する。図32は、本願の発明の原理による、メモリ・モジュール又はメモリ・バッファとこの例ではみなすメモリ・エージェントの実施例を示す。図32のメモリ・エージェント134は、1つ又は複数の受信器を有し得る受信リンク・インタフェース140と、1つ又は複数の送信器を有し得る送信リンク・インタフェース142とを含む。ここに示すようなマルチプレクサや他の種類の再誘導装置であり得るループバック装置196は、送信ビットレーン上に戻りシーケンスとしてコントローラにもう一度メモリ・コントローラから受信された訓練シーケンスをメモリ・エージェントが再送信し得るようにビットレーンを送信するよう受信ビットレーンを選択的にマッピングできる。種々のマッピングを用いてビットレーンを送信するよう受信ビットレーンを選択的に再マッピングすることによって、コントローラは、戻りシーケンスを解析して、障害ビットレーンが存在するか否かのみならず、障害が受信データ経路上にあるか送信データ経路上にあるか、及び、障害を受けた受信ビット位置又は送信ビット位置も識別し得る。
【０１２６】
図32の実施例は、単方向ビットレーンを有する受信リンク・インタフェース及び送信リンク・インタフェースによって示すが、本願の発明の原理は、この特定のインタフェース構成又はレーン・タイプに限定されるものでない。
【０１２７】
図33は、本願の発明の原理による、考えられる２つのビットレーン・マッピングの例示的な実施例を示す。図33に示すマッピングは、単に例証の目的で、メモリ・エージェントが受信リンク・インタフェースにおいて10ビットのレーンを有し、送信リンク・インタフェースにおいて14ビットのレーンを有するものとする。マッピングＡを用いれば、ループバック装置は、下位5ビットのレーンの各々が複数の送信ビットレーンに再誘導されるように、受信ビットレーンの下位5ビット上で受信される訓練シーケンスを送信ビットレーンに再誘導する。マッピングＢを用いれば、受信ビットレーンの上位5ビット上で受信される訓練シーケンスは、複数の送信ビットレーンに再送信される。
【０１２８】
訓練シーケンスは、用いるマッピングをメモリ・エージェントに指示するマッピング表示子を含み得る。訓練シーケンスは、検査パラメータをメモリ・エージェントに備えるか、各ビットレーンの信号インテグリティを検査する電気負荷パターンを備える種々のビット送信群を備え得るものでもある。各ビットレーンが同じ訓練シーケンスを受信してもよく、別々のビットレーンが、別々のシーケンス、例えば、別々の電気負荷パターンを有するシーケンスを受信してもよい。
【０１２９】
メモリ・エージェントによって受信される訓練シーケンスは、戻りシーケンスとしての役目を果たすように修正なしで再送信してもよく、メモリ・エージェントが、シーケンスを修正しても、全く異なるシーケンスを作成してもよい。例えば、メモリ・エージェントは、シーケンス内の小さな群のみを修正する一方で訓練シーケンスの大半を戻りシーケンスとして再送信して、識別情報又はステータス情報をメモリ・ホストに備え得る。
【０１３０】
本願の発明の原理による、複数のポート及び可変マッピング機能を有するメモリ・エージェントを、例えば、図3に示すものなどの複数エージェント構成において利用する場合、エージェントを、他のエージェントが検査動作中にパススルー・モードで動作する一方で、最外エージェントのみがループバック動作を備えるように構成し得る。
【０１３１】
本明細書及び特許請求の範囲記載の実施例は、本願の発明の原理から逸脱することなく、配置及び詳細において修正し得る。よって、そうした変更及び修正は、本特許請求の範囲記載の範囲内に収まるものとみなされる。
【図面の簡単な説明】
【０１３２】
【図１】従来技術のRamLinkメモリ・システムを示す図である。
【図２】従来技術のRamLinkスレーブ・インタフェース回路を示す図である。
【図３】本願の発明原理による、メモリ・インタフェース・システムの実施例を示す図である。
【図４】本願の発明原理による、メモリ・モジュールの実施例を示す図である。
【図５】本願の発明原理による、メモリ・モジュールの別の実施例及びメモリ・バッファの実施例を示す図である。
【図６】本願の発明原理による、メモリ・システムの更なる例示的な実施例、メモリ・モジュールの更なる例示的な実施例、及びメモリ・バッファの更なる例示的な実施例を示す図である。
【図７】本願の発明原理による、メモリ・バッファの別の例示的な実施例を示す図である。
【図８】本願の発明原理による、再駆動回路の実施例を示す図である。
【図９】本願の発明原理による、入出力セルの実施例を示す図である。
【図１０】本願の発明原理による、入出力セルの別の実施例を示す図である。
【図１１】本願の発明原理による、入出力セルの別の実施例を示す図である。
【図１２】本願の発明原理による、入出力セルの別の実施例を示す図である。
【図１３】本願の発明原理による、フェイルオーバー回路の実施例を示す図である。
【図１４】本願の発明原理による、通常モードで動作するフェイルオーバー回路の別の実施例を示す図である。
【図１５】本願の発明原理による、フェイルオーバー・モードで動作するフェイルオーバー回路の別の実施例を示す図である。
【図１６】本願の発明原理による、ビットレーン・フェイルオーバー機能を備えるメモリ・バッファの実施例を示す図である。
【図１７】本願の発明原理による、ビットレーン・フェイルオーバー機能を備えるメモリ・コントローラの実施例を示す図である。
【図１８】本願の発明原理による、順序変更ステータス・パターンを実施する方法の実施例を示す図である。
【図１９】本願の発明原理による、順序変更パターン生成器の実施例を示す図である。
【図２０】本願の発明原理による、ステータス・パターンの例示的な実施例を示す図である。
【図２１】本願の発明原理による、ステータス・パターンの例示的な実施例を示す図である。
【図２２】本願の発明原理による、ステータス・パターンの例示的な実施例を示す図である。
【図２３】本願の発明原理による、ステータス・パターンの例示的な実施例を示す図である。
【図２４】本願の発明原理による、メモリ・エージェントの実施例を示す図である。
【図２５】本願の発明原理による、ポーリング動作の実施例を示す図である。
【図２６】本願の発明原理による、データ蓄積を利用した、メモリ・モジュールの実施例を示す図である。
【図２７】本願の発明原理による、データ蓄積を利用した、メモリ・モジュールの別の実施例及びメモリ・バッファの実施例を示す図である。
【図２８】本願の発明原理による、データ蓄積を利用したメモリ・バッファの別の例示的な実施例を示す図である。
【図２９】本願の発明原理による、フレームの例示的な実施例を示す図である。
【図３０】本願の発明原理による、ＣＲＣコードを複数のフレームにまたがって供給する手法の例示的な実施例を示す図である。
【図３１】本願の種々の発明原理による、早期ＣＲＣ供給及び分散ＣＲＣコードを組み入れたフレーム転送手法の実施例を示す図である。
【図３２】本願の発明原理による、この例ではメモリ・モジュール又はメモリ・バッファとみなされるメモリ・エージェントの実施例を示す図である。
【図３３】本願の発明原理による、考えられる２つのビットレーン・マッピングの例示的な実施例を示す図である。
【図１】
2007511012.tif 000003
【図２】
2007511012.tif 000004
【図３】
2007511012.tif 000005
【図４】
2007511012.tif 000006
【図５】
2007511012.tif 000007
【図６】
2007511012.tif 000008
【図７】
2007511012.tif 000009
【図８】
2007511012.tif 000010
【図９】
2007511012.tif 000011
【図１０】
2007511012.tif 000012
【図１１】
2007511012.tif 000013
【図１２】
2007511012.tif 000014
【図１３】
2007511012.tif 000015
【図１４】
2007511012.tif 000016
【図１５】
2007511012.tif 000017
【図１６】
2007511012.tif 000018
【図１７】
2007511012.tif 000019
【図１８】
2007511012.tif 000020
【図１９】
2007511012.tif 000021
【図２０】
2007511012.tif 000022
【図２１】
2007511012.tif 000023
【図２２】
2007511012.tif 000024
【図２３】
2007511012.tif 000025
【図２４】
2007511012.tif 000026
【図２５】
2007511012.tif 000027
【図２６】
2007511012.tif 000028
【図２７】
2007511012.tif 000029
【図２８】
2007511012.tif 000030
【図２９】
2007511012.tif 000031
【図３０】
2007511012.tif 000032
【図３１】
2007511012.tif 000033
【図３２】
2007511012.tif 000034
【図３３】
2007511012.tif 000035
【国際調査報告】
2007511012.tif 000036
2007511012.tif 000037