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