説明

メモリモジュールからローカルデータをマージするためのメモリバッファ

ローカルデータをシリアル化して、それをシリアル化したフィードスルー・データと選択的にマージしてシリアルデータストリームを出力して、パラレル−イン−シリアル−アウト(PISO)シフトレジスタ、マルチプレクサ、及び、トランスミッタを備える集積回路。PISOシフトレジスタは、ローカル・データバス上のパラレルデータを、シリアル化されたローカルデータにシリアル化する。マルチプレクサは、シリアル化されたローカルデータ及びフィードスルー・データを選択的にマージしてシリアルデータストリームにする。トランスミッタは、シリアルデータリンク上にシリアルデータストリームをドライブする。本発明の他の実施形態において、メモリモジュールのための方法は、入力シリアルデータストリームを受信することと、マージイネーブル信号に応じて、データのローカル・フレーム及びデータのフィードスルー・フレームを一緒にマージして出力シリアルデータストリームにすること、そして、次のメモリモジュール又はメモリコントローラにノースバウンドデータ出力上の出力シリアルデータストリームを送信すること、を含む。

【発明の詳細な説明】
【技術分野】
【0001】
本発明の実施形態は、一般的にはメモリに関し、特に、メモリバッファからシリアルデータチャンネル上へデータをマージすることに関する。
【背景技術】
【0002】
メモリ回路において、一般的に、有効なデータのためにメモリ回路の読出しにかかる期間であるメモリ読出しレーテンシがある。メモリ書込みレーテンシは、一般的に、また、メモリにデータを書込むためのメモリ回路に有効なデータを保持するために要求される期間である。メモリ読出しレーテンシ及びメモリ書込みレーテンシは、時々キャッシュメモリによってプロセッサからバッファリングされてもよい。しかしながら、求められたデータがキャッシュメモリの中で見つけられないときがある。それらのケースでは、プロセッサは、メモリ回路に、その時、データを読出すか又は書込むことを必要とする場合がある。このように、それぞれのメモリ読出しレーテンシ又はメモリ書込みレーテンシが、プロセッサによって実施(経験)されてもよい。メモリ回路が異なるならば、メモリ読出しレーテンシ及びメモリ書込みレーテンシは、一のメモリ回路から次まで一致していなくてもよい。その場合には、プロセッサによって実施(経験)されたメモリ読出しレーテンシ及びメモリ書込みレーテンシは異なることになる。
【0003】
事前に、メモリモジュールは、マザー又はホスト・プリント回路基板に結合され、それにより、パラレルデータでメモリから読出しでき及びメモリに書込みできるように、パラレルデータ・バスとパラレルに結合される。パラレル・データバスは、一度にデータの少なくとも一のデータバイト又はワードを転送するために共に同期したパラレルデータビットラインを有する。パラレルデータビットラインは、一般的に、プリント回路基板(PCB)上の一のメモリモジュール・ソケットから他への間隔をまたぐようにルートを決められる。これは、第1の寄生容量性負荷を発生させる。メモリモジュールがメモリ・ソケットに結合されるので、追加の寄生容量性負荷は、パラレル・データバスのパラレルデータビットラインの上に発生される。プラグが差し込まれる多くのメモリモジュールがあってもよいので、追加の寄生の容量性負荷は重大な量になり、高周波メモリ回路を動作させなくすることがある。
【0004】
一のメモリモジュールは、一般的に、アドレスライン上のアドレスによって一度にアドレス指定される。一のアドレスされた記憶モジュールは、一般的にパラレルのデータバス上へ一度にデータを書込む。他のメモリモジュールは、衝突を避けるために、パラレルデータバス上への書込みデータを一般的に待機させなければならない。
【0005】
パラレルデータビットラインは、データフローの速度を上げる場合がある一方で、メモリのパラレル・データバスは、メモリ回路及びプロセッサ間のデータの読出し及び書込みのアクセスを遅くすることがある。
【発明を実施するための最良の形態】
【0006】
本発明の各実施形態の以下の詳細な説明においては、本発明の完全な理解を与えるために、多数の具体的な詳細が記載される。しかし、本発明のその各実施形態が、これらの特定の詳細なしで実行されてもよいことは、当業者にとって明らかである。他の場合において、不必要に本発明の各実施形態の態様を不明瞭にしないために、周知の方法、プロシージャ、コンポーネント、及び、回路は、詳述していない。
【0007】
一般的に、本発明の各実施形態では、高速で、高速リンク上のデータの一部をそれ自身のデータと変換するノースバウンド(上りシリアルリンク)・データ・マージ(NBDM)と称されるデータ・マージ機能を提供する。すなわち、本発明の各実施形態は、シリアル・データリンク上の入力シリアル・データトラフィック(例えば「アイドル状態のパケット又はフレーム」)の一部を、入力シリアル・データトラフィックが、どこへローカル・データを挿入するべきかについて決定して、その中に挿入されたローカル・データを備える入力データトラフィックを再送信する処理(例えば、シリアル/パラレル変換、フレームへのアセンブル、及び、デパケッタイズ/デインターリーブ・データ)を内部コア・ロジックが実施することなく、そのローカルデータと変換する。
【0008】
あらかじめ、入力シリアルデータは、フレームにアセンブルされて、コア・ロジックによりローカルデータを伝送するために、受信されていなければならない。メモリモジュールの入力/出力(IO)インタフェースは、ローカルデータを送信するための入力シリアルデータ処理を有さずに、シリアル・データリンク上の他のメモリモジュール、又は、メモリコントローラから受信されて、バッファ集積化回路の内部コア・ロジックをバイパスしている入力シリアルデータストリームを単に再送信してもよい。これは、シリアルデータストリームのデータ・レーテンシを減らすことができる。再送信されたシリアルデータストリームの一部は、時々「フィードスルデータ」、又は、「フィードスルーデータ」(FTD)と称される。
【0009】
いかなるローカルデータを送信することなく、入出力インタフェースは、通常、チップのコア・ロジックをバイパスして、受信されたシリアルデータストリームを再送信する。バッファ・メモリチップのコア・ロジックは、ローカルデータを送信することを必要とするときに、ローカル・データと共にマージ・リクエストを入出力インタフェースに送信する。ローカル・データを生成するコア・クロックが、トレーニングの間、本発明の各実施形態の高速シリアル・データリンクのフレーム・クロックに同調するので、入出力インタフェースは、アイドル状態のパケット、又は、フレームを変換するために、該当するフレーム境界で、直ちにデータをマージすることができる。
【0010】
先に、受信されたシリアル・データがフレームにアセンブルされて、コア・ロジックによって受信されて、それから出力のリンクに再送信されることが意図された。この場合、もしコア・ロジックが出力のリンクで送信するローカルデータを有するなら、その時にいくつかの着信データがそれ自身のデータと取り替えられ、出力リンク上へデータがリパケッタイズ及びシリアル化される。これは、データに少なくとも2フレームのデータ・レーテンシを招く。本発明の各実施形態は、ローカル・データが出力リンクにマージできるようにするためのイニシャルトレーニングの間に、アイドル状態のパケットを変換するための正常動作の間に入力データを受信して分析することなく、マージ・タイミングを設定する。本発明の各実施形態は、バッファ・メモリ集積回路により、少なくとも2フレームのデータ・ダウンから2、3ビット・インターバルのデータ・レーテンシを減らすことができる。
【0011】
本発明の一実施形態において、少なくとも一つのレーンを有するシリアル入出力インタフェースを含む集積回路が与えられる。シリアル通信チャネルの各レーンは、第1のパラレル入力シリアル出力(PISO)シフトレジスタ、第1のマルチプレクサ、及び、シリアル・トランスミッタを共に結合させて備えてもよい。
【0012】
第1のパラレル入力シリアル出力(PISO)シフトレジスタは、ローカル・データバスに結合するパラレル入力、第1のクロック信号に結合するクロック入力、ロード信号に結合するロード/シフトバー入力を有する。第1のPISOシフトレジスタは、ローカル・データバス上のパラレルデータを、第1のシリアル出力上のシリアル化されたローカルデータにシリアル化する。
【0013】
The 第1のマルチプレクサは、第1のシリアル出力に結合する第1のデータ入力、フィードスルー・データを受信するための第2のデータ入力、及び、ローカル・データ選択信号に結合する第1の選択制御入力を有する。マルチプレクサは、ローカル・データ選択信号に応じて、選択的にシリアル化されたローカルデータ、及び、フィードスルー・データをマージして、多重化出力のシリアル・データストリームにする。
【0014】
シリアル・トランスミッタは、シリアル・データストリームを受信するために、マルチプレクサの多重化された出力と結合する入力を有する。シリアル・トランスミッタは、シリアル・データリンク上へシリアル・データストリームをドライブする。
【0015】
フィードスルー・データは、2ビット長であってもよく、一方、PISOシフトレジスタへのパラレル入力は6ビット長であってもよく、PISOシフトレジスタのシリアル出力は2ビット長であってもよい。この場合、第1のマルチプレクサは、シリアル・トランスミッタが 2つのビットシリアル・データストリームを受信してそれをシリアル・データリンク上へのシングルビットシリアル・データストリームとしてシリアル化するような、そのような多重化された出力のシリアルデータストリームが2ビット長である、2ビット・バス・マルチプレクサであってもよい。
【0016】
各レーンは、再同期したデータを受信するための第1の入力、再サンプリングされたデータを受信するための第2の入力、及び、ローカル・クロック・モード信号に結合する選択入力を有する第2のマルチプレクサを更に備えてもよい。第2のマルチプレクサは、出力されたローカルクロック・モード信号に応じたフィードスルー・データとして、再同期したデータ、又は、再サンプリングされたデータの間で選択する。各レーンは、第1のマルチプレクサ及び第1のPISOシフトレジスタと結合する制御ロジックを更に備えてもよい。制御ロジックは、マージ制御ロジック、及び、モード制御ロジックを備えてもよい。制御ロジックは、第1のクロック信号、及び、マージ・イネーブル信号及び第1のクロック信号に応じて、シリアル化されたローカルデータ及びフィードスルー・データをマージしてシリアル・データストリームにするための、ローカル・データ選択信号を生成するためのマージ・イネーブル信号を受信してもよい。
【0017】
本発明の他の実施形態において、データのアイドル状態のフレームの間に散在するデータのフィードスルーフレームを表している入力シリアルデータストリームを受信すること、入力シリアルデータストリームを復号することなく、マージ・イネーブル信号に応じて、データのローカルフレームとデータのフィードスルーフレームとを共にマージして出力シリアルデータストリームにすること、及び、次のメモリモジュール又はメモリコントローラに出力されたノースバウンド・データ上の出力シリアル・データストリームを送信することを含むメモリモジュールのための方法が提供される。データのローカルフレームは、入力されたシリアル・データストリームのデータのアイドル状態のフレームを変換することにより、出力されたシリアル・データストリームにマージされることができる。受信している入力シリアルデータストリームにおいて、入力されたシリアル・データストリームのデータのビットをサンプリングすること(また、再サンプリングすることと称してもよい)、又は、入力されたシリアル・データストリームのデータのビットを再同期することが、提供されてもよい。データのローカルフレームと、フィードスルーフレームのデータとを共にマージングすることにおいて、データのローカルフレームのパラレルビットを、データのシリアルビットにシリアル化すること、そして、マージ・イネーブル信号に応じて、データのローカルフレームのデータのシリアルビットと、データのフィードスルーフレームのシリアルビットとを多重化して、出力シリアル・データストリームのシリアルビットにすることが、提供されてもよい。データのローカルなフレームは、バス・モード信号に応じて、ローカルバスの上に、6ビット、又は、12ビットのパケットで、パラレルに、選択的に受信されてもよい。
【0018】
本発明の他の実施形態のシステムは、プロセッサ、プロセッサに結合するメモリコントローラ、及び、メモリコントローラに結合するメモリの少なくとも一つバンクを備えて提供される。プロセッサは、命令、及び、プロセス・データを実行するために提供される。メモリコントローラは、プロセッサからの書込みデータを有する書込みメモリ命令を受信するためと、プロセッサから読出しメモリ命令を受信して読出しデータをそれに対して出力するために提供される。
【0019】
メモリの一つバンクは、それぞれが、共に結合しているバッファ集積回路、及び、ランダムアクセスメモリ集積回路を有する少なくとも一つのメモリモジュールを含む。バッファ集積回路は、メモリコントローラから書込みデータを受け取るための、少なくとも一つのシリアルレーンを有するサウスバウンド(下りシリアルリンク)シリアル入出力インタフェースと、ノースバウンドシリアル入力の少なくとも一つのシリアルレーン及びメモリコントローラに読出されたデータを送信するためのノースバウンドシリアル出力を有するノースバウンドシリアル入出力インタフェースとを含む。
【0020】
ノースバウンド入出力インタフェースの各シリアル・レーンは、パラレル/シリアル・コンバータ、及び、第1のマルチプレクサを有する。パラレル/シリアル・コンバータは、ローカル・データバスのパラレルビットと、第1のクロック信号に結合するクロック入力と、ロード信号に結合するロード/シフト−バー入力と、に結合するパラレル入力を有する。パラレル/シリアル・コンバータは、ローカル・データバス上のデータのパラレルビットを、第1のシリアル出力上のシリアル化されたローカルデータにシリアル化する。第1のマルチプレクサは、パラレル/シリアル・コンバータのシリアル出力に結合する第1のデータ入力、ノースバウンドシリアル入力からシリアル・フィードスルー・データを受け取るための第2のデータ入力、及び、ローカル・データ選択信号に結合する選択入力を有する。ローカル・データ選択信号に応じて、シリアル化されたローカルデータ、及び、シリアル・フィードスルー・データを選択的にマージしてノースバウンドシリアル出力上のシリアル・データストリームにする第1のマルチプレクサ。
【0021】
ノースバウンドシリアル入出力インタフェースの各シリアル・レーンは、シリアル・データストリームを、ノースバウンドシリアル・データ出力上で、シリアル・データストリームを受信する第1のマルチプレクサの多重化された出力に結合する入力を有するメモリコントローラの方へドライブするために、トランスミッタを更に有してもよい(トランスミッタ)。
【0022】
ノースバウンド・シリアル入出力インタフェースの各シリアル・レーンは、マルチプレクサ及び第1のパラレル/シリアル・コンバータに結合する制御ロジックを更に備えてもよい。制御ロジックは、第1のクロック信号、及び、ローカル・データ選択信号を生成するためのマージ・イネーブル信号を受信し、マージ・イネーブル信号及び第1のクロック信号に応じて、シリアル化されたローカルデータとシリアル・フィードスルー・データをマージしてシリアル・データストリームにする。
【0023】
システムのメモリの各バンクのために、メモリコントローラは、少なくとも一つのメモリモジュールからシリアルデータの少なくとも一つのレーンを受信するノースバウンドシリアル入力インタフェース、及び、少なくとも一つのメモリモジュールに、シリアルデータの少なくとも一つのレーンを送信するサウスバウンドシリアル出力インタフェースを備える。
【0024】
本発明の他の実施形態において、バッファー付きメモリモジュールは、プリント回路基板、複数のランダムアクセスメモリ(RAM)集積回路、及び、バッファ集積回路を備えて、提供される。プリント回路基板は、ホストシステムのレセプタクルに結合させるエッジ結合を有する。複数のランダムアクセスメモリは、(RAM)集積回路の及び、バッファ集積回路は、プリント回路基板に結合される。バッファ集積回路は、複数のRAM集積回路、及び、エッジ結合に、電気的に結合する。バッファ集積回路は、シリアルデータストリームの複数のレーンのための複数のマージ・ロジックスライスを有しているデータ・マージ・ロジックを有するサウスバウンド入出力インタフェース、及び、ノースバウンド入出力インタフェースを備える。
【0025】
バッファ集積回路の各マージロジック・スライスは、第1のパラレル入力シリアル出力(PISO)シフトレジスタ、及び、第1のマルチプレクサを含む。第1のパラレル入力−シリアル出力された(PISO)シフトレジスタは、ローカル・データバス、第1のクロック信号に結合するクロック入力、第1のロード信号に結合するロード/シフトバー入力に結合するパラレル入力を有する。第1のPISOシフトレジスタは、ローカル・データバス上のパラレルデータを、第1のシリアル出力上のシリアル化されたローカルデータにシリアル化する。第1のマルチプレクサは、第1のPISOシフトレジスタの第1のシリアル出力に結合する第1のデータ入力、シリアル化されたフィードスルー・データを受信するための第2のデータ入力、及び、ローカル・データ選択信号に結合する第1の選択入力を有する。第1のマルチプレクサは、ローカル・データ選択信号に応じて、シリアル化されたローカルデータと、シリアル化されたフィードスルー・データとを選択的にマージして、多重化された出力上のシリアル・データストリームにする。
【0026】
各マージ・ロジック・スライスは、第1のマルチプレクサ、及び、第1のPISOシフトレジスタに結合する制御ロジックを更に備えていてもよい。制御ロジックは、マージ・イネーブル信号、及び、第1のクロック信号に応じて、シリアル化されたローカルデータ、及び、シリアル化されたフィードスルー・データをマージしてシリアル・データストリームにするローカル・データ選択信号を生成するために、第1のクロック信号、及び、マージ・イネーブル信号を受信する。
【0027】
バッファー付きメモリモジュールのバッファ集積回路のノースバウンド入出力インタフェースは、各マージ・ロジック・スライスに、各々が第1のマルチプレクサの対応する出力に結合された入力を有する複数のトランスミッタ、シリアル・データストリームを受信して、それをシリアル・データリンク上へドライブするための複数のトランスミッタを更に備えてもよい。
【0028】
本発明の他の実施形態において、メモリシステムは、メモリのバンクを形成するために共にデイジーチェーン方式でつながれた複数のバッファー付きメモリモジュールを備えて与えられる。各バッファー付きメモリモジュールは、複数のメモリ集積回路、及び、複数のメモリ集積回路に結合するバッファ集積回路を備える。バッファ集積回路は、メモリコントローラ、又は、従来のバッファー付きメモリモジュールからサウスバウンドシリアル・データを受信して次のバッファー付きメモリモジュールに再送信するサウスバウンド入出力シリアルインターフェース、シリアル化されたフィードスルー・データとしての少なくとも一つのバッファー付きメモリモジュールからノースバウンド・シリアル・データを受信してそれをメモリコントローラに向けて再送信出力するノースバウンド入出力シリアルインターフェース、書込みコマンドによってバッファー付きメモリモジュールにアドレス指定されたサウスバウンド入出力シリアルインターフェースから書込みデータを記憶する書込みデータ先入れ先出し方式(FIFO)バッファ、書込みデータFIFOバッファに記憶された書込みデータを複数のメモリ集積回路の少なくとも一つに転送して読出しデータを複数のメモリ集積回路の少なくとも一つから読出しデータFIFOバッファに転送するメモリ入出力インタフェース、及び、読出されたコマンドによってバッファー付きメモリモジュールからアドレス指定されたローカル・データとしてメモリ集積回路の少なくとも一つからの読出しデータを記憶する読出しデータFIFOバッファ、を含む。
【0029】
ノースバウンド入出力シリアルインターフェースは、複数のメモリ集積回路からのローカル・データをシリアル化し、それをマージして、タイミング・ベース上で、受信されたノースバウンド・シリアルデータをデコードせずに、シリアル化されたフィードスルー・データを有するノースバウンド・シリアルデータストリームにする。ノースバウンド入出力シリアルインターフェースは、第3のFIFOバッファ、第3のFIFOバッファに結合するデータ・マージ・ロジック、及び、データマージロジックに結合する複数のトランスミッタを備える。
【0030】
データ・マージ・ロジックは、各々が、ローカル・データバス上のパラレルデータをシリアル化して、第1のシリアル出力上のシリアル化されたローカルデータにする第1のパラレル入力シリアル出力(PISO)シフトレジスタと、ローカル・データ選択信号に応じて、シリアル化されたローカルデータとシリアル化されたフィードスルー・データとを選択的にマージして、多重化された出力上のシリアル・データストリームにする第1のマルチプレクサを備える。PISOシフトレジスタは、ローカル・データバス、第1のクロック信号に結合するクロック入力、及び、第1のロード信号に結合するロード/シフトバー入力に結合するパラレル入力を有する。第1のマルチプレクサは、第1のPISOシフトレジスタの第1のシリアル出力に結合する第1のデータ入力、シリアル化されたフィードスルー・データを受信する第2のデータ入力、ローカル・データ選択信号に結合する第1の選択入力、を有する。
【0031】
複数のトランスミッタの各々は、各マージ・ロジック・スライスの第1のマルチプレクサに対応する出力に結合する入力を有する。複数のトランスミッタは、シリアル・データストリームからデータを受信し、シリアル・データリンク上へそれをドライブする。
【0032】
メモリシステムにおいて、データマージロジックの各マージロジック・スライスは、第1のマルチプレクサ、及び、第1のクロック信号及びマージ・イネーブル信号を受信し、シリアル化されたローカルデータ、及び、シリアル化されたフィードスルー・データをマージしてシリアル・データストリームにするローカル・データ選択信号を生成するための第1のPISOシフトレジスタに結合した制御ロジックを更に含んでも良い。
【0033】
メモリシステムは、複数のバッファー付きメモリモジュールの少なくとも一つに結合するメモリコントローラを更に備えてもよい。メモリコントローラは、サウスバウンド・シリアル・データストリームを、複数のバッファー付きメモリモジュールの少なくとも一つに送信するサウスバウンド出力シリアルインターフェースと、ノースバウンド・シリアル・データストリームを、複数のバッファー付きメモリモジュールの少なくとも一つから受信するノースバウンド入力シリアルインターフェースとを有する。
【0034】
ここで図1Aを参照する。本発明の各実施形態が利用されてもよい代表的なコンピュータシステム100のブロック図が示されている。コンピュータシステム100Aは、中央処理装置(CPU)101、キーボードのような入出力装置(I/O)102、モデム、プリンタ、外部記憶装置など、及び、 CRT、又は、グラフィックディスプレイのようなモニタ装置(M)103、を備える。モニタ装置(M)103は、視覚、又は、音声フォーマットのような人間の理解できるフォーマットのコンピュータ情報を提供してもよい。システム100は、コンピュータシステム以外の多くの異なる電子的システムであってもよい。
【0035】
ここで図1Bを参照する。本発明の各実施形態が利用されてもよいクライアント・サーバーシステム100Bが示されている。クライアント・サーバーシステム100Bは、ネットワーク112に結合された少なくとも一つのクライアント110A−110M、及び、ネットワーク112に結合するサーバ114を備える。クライアント110A−110Mは、情報を送信又は受信してサーバに必要になるであろう、いかなるデータベースおよび/またはアプリケーションソフトウェアとのアクセスを得るためのネットワーク112を通してサーバ114と通信する。サーバ114は、メモリを備えた中央処理装置を有して、少なくとも一つのディスクドライブ・ストレージ・デバイスを更に備えてもよい。サーバ114は、例えばネットワーク付属のストレージ(NAS)デバイスとしてストレージ・エリアネットワーク(SAN)において使用されてもよくて、ディスクアレイを有していてもよい。サーバ114に対するデータアクセスは、多重クライアント110A−110Cを有するネットワーク112を通じて共有される。
【0036】
ここで図2Aを参照することで、本発明の各実施形態が利用されてもよい中央処理装置101Aのブロック図が示される。中央処理装置101Aは、図示されたように共に結合されたプロセッサ201、メモリコントローラ202、及び、第1のメモリ・チャンネルの第1のメモリ204Aを備える。中央処理装置101Aは、メモリコントローラ202、及び、プロセッサ201の間に結合されたキャッシュメモリ203、及び、プロセッサ201に結合されたディスクストレージデバイス206を更に備えてもよい。中央処理装置101Aは、メモリコントローラ202に結合された第2のメモリ204Bを有する第2のメモリ・チャンネルを更に備えてもよい。中央処理装置101Aにて図示したように、メモリコントローラ202、及び、キャッシュメモリ203は、プロセッサ201の外部にあってもよい。
【0037】
ここで図2Bを参照する。本発明の各実施形態が利用されてもよい他の中央処理装置101Bのブロック図が示されている。中央処理装置101Bは、内部メモリコントローラ202'、及び、プロセッサ201'の中で内蔵メモリ・コントローラ202'に結合されたメモリ204Aに伴われる第1のメモリ・チャンネルを有するプロセッサ201'を備える。プロセッサ201'は、内部キャッシュメモリ203'を更に備えてもよい。中央処理装置101Bは、第2のメモリ・チャンネルのための第2メモリ204B、及び、プロセッサ201'に結合させたディスク記憶デバイス206を更に備えてもよい。
【0038】
ディスクストレージデバイス206は、フロッピーディスク、zipディスク、DVDディスク、ハードディスク、書換形光ディスク、フラッシュメモリ、又は、他の不揮発性ストレージ・デバイスであってもよい。
【0039】
プロセッサ201、201'は、少なくとも一つの実行ユニット、及び、少なくとも一つのレベルのキャッシュメモリを更に備えてもよい。他のレベルのキャッシュメモリは、プロセッサの外部、及び、メモリコントローラのインタフェースにあってもよい。プロセッサ、少なくとも一つ実行ユニット、又は、少なくとも一つのレベルのキャッシュメモリは、メモリ204A−204Bを伴うメモリコントローラ通して、(命令を含む)データを読出し、又は、書込んでもよい。メモリコントローラ202、202'にインターフェイスする場合に、メモリインタフェースの一部として、メモリに結合されたアドレス、データ、制御及びクロックの各信号があってもよい。プロセッサ201、201'及びディスクストレージデバイス206は、メモリ204A、204Bに情報を読出し及び書込みの両方とも実施してよい。
【0040】
各図2A−2B中に示されたメモリ204A及び204Bは、例えば、フルバッファー付きデュアルインライン(FB)メモリモジュール(DIMM)、(FBDIMM)、又は、フルバッファー付き(FB)シングルインラインメモリモジュール(SIMM)、(FBSIMM)のような、少なくとも一つのバッファー付きメモリモジュール(MM1−MMn)を備えてもよい。
【0041】
メモリコントローラ202、202'は、各メモリ204A−204Bをインターフェイスする。本発明の一実施形態において、メモリコントローラ202、202'は、特に、各メモリ204A−204Bの第1のバッファー付きメモリモジュールMM1中のバッファ(図2A−2Bに不図示、しかし、図5のバッファ450Aを参照のこと)をインターフェイスする。メモリコントローラ202、202'を用いて、メモリモジュールのバッファにインターフェイスすることは、バッファー付きメモリモジュール(MM1−MMn)のメモリデバイスに対する直接のインタフェースを避けることができる。このように、バッファ、及び、メモリコントローラ間のインタフェースを整合したままにできるとき、メモリ領域を提供するために異なるタイプのメモリ素子を使用することができる。
【0042】
ここで図3を参照する。少なくとも一つのメモリバンク304A−304F(メモリバンク304、又は、複数のメモリバンク304と一般に称される)に結合されたバッファー付きメモリモジュール(BMM)メモリコントローラ(BMMMC)302が図示されている。メモリコントローラ302は、メモリの2つ以上のチャンネル、及び、メモリモジュールの2つ以上のメモリバンクをサポートすることができる。各メモリバンク304は、シリアル・チェインに共に結合された複数のバッファー付きメモリモジュール310A−310Hで構成される。バッファー付きメモリモジュール310A−310Hのこのシリアル・チェインは、時々、デイジーチェーンとも称される。隣接したメモリモジュールは、互いに結合され、時々、例えば、隣接したメモリモジュール310Bに結合されているメモリモジュール310Aのように、デイジーチェーン方式で共に結合されるように示されている。
【0043】
各バンクの各メモリモジュール310A−310Hは、メモリコントローラ302を伴うシリアル形態で、メモリモジュール310A−310Hのシリアル・チェインに沿って、双方向に通信する。メモリコントローラ302から各メモリバンク304への、出力のコマンド(例えば、読み書きする)及びデータを備えた出力のデータリンクとして参照されてもよいサウスバウンド・シリアル・データリンク(SB)がある。メモリコントローラからのメモリモジュールに書込まれることになっている全書込みデータは、サウスバウンド・シリアル・データリンクを通じて送信される。各メモリバンク304からメモリコントローラ302への、帰りのデータを備えた帰りのデータリンクとして参照されてもよい、ノースバウンド・シリアル・データリンク(Nb)がある。メモリモジュールからの全読出しデータは、ノースバウンド・シリアル・データリンク上のメモリコントローラに送信される。
【0044】
サウスバウンド・シリアル・データリンク(SB)において、メモリコントローラ302から第1のメモリバンク304へのデータ出力は、データを読出すことができて、それをメモリモジュール310Bに通過させることができる第1のメモリモジュール310Aに結合される。メモリモジュール310Bは、データを読出すことができて、シリアル・チェインの次のメモリモジュールに、それを通過させることができ、サウスバウンド・シリアル・チェインの最後のメモリモジュールに達するまで、同様に実施される。サウスバウンド・シリアル・チェインの最後のメモリモジュール、メモリモジュール310Hは、もはや更にデータを通過させるメモリモジュールを備えないので、サウスバウンド・シリアル・データリンクは、終了する。
【0045】
ノースバウンド・シリアル・データリンク(Nb)において、データは、メモリバンク304からメモリコントローラ302の方向にシリアルに通信される。各メモリバンクの各メモリモジュールは、メモリの方へノースバウンド・シリアル・データリンク(Nb)上のコントローラを戻り方向に通信する。メモリモジュール310Hは、メモリコントローラの方へデータを通過させているメモリモジュールのシリアル・チェインを開始する。メモリモジュール310Hによって送信されたシリアルデータは、メモリモジュール310Gにより、通過されるか、又は、そうでなければ再送信される。
【0046】
メモリモジュール310Gが前のメモリモジュール310Hからのシリアルデータを通過、又は、再送信してもよいとき、それは、また、それ自身のローカルデータを、メモリコントローラ302に向かうノースバウンド・シリアル・データストリームに加えるか、マージしてもよい。同様に、チェインを下る各メモリモジュールは、先のメモリモジュールからのシリアルデータを通過させるか、又は、再送信し、それら自身のローカルデータを、メモリコントローラ302に向かうノースバウンド・シリアル・データストリームに加えるか、又は、マージする。ノースバウンド・シリアル・チェインの最後のメモリモジュール、メモリモジュール310Aは、最終的なノースバウンド・シリアルデータストリームをメモリコントローラ302に送信する。
【0047】
ノースバウンド、及び、サウスバウンド・シリアル・データリンクは、1つのメモリモジュールから他のメモリモジュールへのポイントからポイントへの通信を、シリアル・チェインに沿って同様に提供するように検討されてもよい。メモリコントローラ302から、メモリモジュール310Aからメモリモジュール310Hまでに、流れ出すシリアルデータは、サウスバウンド・データフローと称してもよい。メモリモジュール310Hからメモリモジュール310Zを通してメモリコントローラ302へのシリアルデータ流れは、ノースバウンド・データフローと称してもよい。図3において、サウスバウンド・データフローは、SBと記載された矢印によって示され、一方、ノースバウンド・データフローは、NBと記載された矢印によって図示される。
【0048】
ここで図4を参照することで、メモリモジュール310A−310Hを例示するバッファー付きメモリモジュール(BMM)310を図示する。バッファー付きメモリモジュール310は、例えば、SIMM、又は、DIMMのようないかなるタイプであってもよい。バッファー付きメモリモジュール310は、プリント回路基板451に結合された、バッファ集積回路チップ(「バッファ」)450と、メモリ集積回路チップ(「メモリ素子」)452と、を備える。プリント回路基板451は、プリント回路基板をホストのエッジコネクタに結合するエッジコネクタ、又は、エッジコネクション454を備える。メモリモジュール310のサウスバウンド・データ入力(SBDI)、及び、ノースバウンド・データ出力(NBDO)は、それぞれ、前のバッファー付きメモリモジュール、又は、バッファー付きメモリコントローラ、から受信されるか、又は、に送信される。メモリモジュール310のノースバウンド・データ入力(NBDI)、及び、サウスバウンド・データ出力(SBDO)は、それぞれ、もしあれば、次のバッファー付きメモリモジュール、から受信されるか、又は、に送信される。
【0049】
ここで図4を参照する。メモリコントローラ302は、サウスバウンド・データフロー、及び、ノースバウンド・データフローを使用することで、各メモリバンク304内の各メモリモジュール310A−310Hのバッファ450と通信している。各バンクのメモリコントローラに最も近接する第1のメモリモジュールであるメモリモジュール310Aのエッジ・コネクション454は、各メモリモジュール310Aのバッファ450をメモリコントローラ302に結合する。メモリモジュール310Aは、ノースバウンド・データフローのパスにおいて、もはや隣接するメモリモジュールを有していない。メモリモジュール310Aからのノースバウンド・データフローは、メモリコントローラ302に結合される。各バンクの隣接したメモリモジュール310A−310Hは、データが、書込み、読出し、各メモリモジュールの各バッファ450を通過、ができるように共に結合される。各バンクのメモリコントローラから最も遠い最後のメモリモジュールである、メモリモジュール310Hは、サウスバウンド・データフローのパスにおいて、もはや隣接するメモリモジュールを有していない。このように、メモリモジュール310Hは、メモリモジュールのシリアル・チェインに沿って、更なるサウスバウンド・データフローを通過させない。
【0050】
メモリコントローラ302は、いかなるメモリモジュール内のメモリデバイス452とも直接に結合しない。各メモリバンク304内の各メモリモジュール310A−310H内のバッファ450は、プリント回路基板351上のメモリデバイス452に直接に結合する。バッファ450は、メモリモジュール310の同じプリント回路基板451上の全部のメモリ集積回路チップ、又は、デバイス452に、データのバッファリングを提供する。バッファ450は、データのインタリーブ/デインターリーブ、及び、パケット化/デパケッタイズとを実行すると同様に、必要に応じて、データのシリアル/パラレル変換、及び、パラレル/シリアル変換を更に実行する。バッファ450は、また、ノースバウンド、及び、サウスバウンド・データリンクのシリアル・チェインのその一部を、隣接したメモリモジュールにより制御する。さらに、第1のメモリモジュールである、メモリモジュール310Aの場合、バッファ450は、又、ノースバウンド、及び、サウスバウンド・データリンクのシリアル・チェインのその一部を、メモリコントローラ302により制御する。さらに、最後のメモリモジュールであるメモリモジュール310Hの場合、バッファ450は、また、メモリモジュールのシリアル・チェインの初期化、アイドル状態のフレーム又はノースバウンド・データリンクのデータのアイドル状態のパケットの生成、及び、メモリコントローラ302へのノースバウンド・データフロー、を制御する。
【0051】
メモリモジュールのメモリコントローラ302、及び、メモリデバイス452間の直接結合がない場合、メモリチップ又はデバイス452は、バッファ450がどこと通信するかにより、タイプ、速度、サイズ、その他が異なっていてもよい。これは、メモリコントローラとメモリモジュールとの間のハードウェアインタフェースをアップデートすることを必要とせずに、新規のホスト、又は、マザーボードのプリント回路基板を購入することにより、メモリモジュールに改良されたメモリチップが使用されることを許容する。プリント回路基板をホスト、又は、マザーボードに結合するメモリモジュールは、その代わりにアップデートされる。本発明の一実施形態において、メモリチップ、集積回路、又は、デバイス452は、ダイナミック・ランダム・アクセス・メモリ(DRAM)を備えたDDRメモリチップである。さもなければ、本発明の他の各実施形態において、メモリチップ、集積回路、又は、デバイス452は、いかなる他のタイプのメモリ、又は、ストレージ・デバイスであってもよい。
【0052】
ここで図5を参照する。メモリシステムのメモリバンク304A−304Fの、バッファー付きメモリモジュール(BMM)メモリコントローラ302に結合された、1個のメモリバンク304をより詳細に図示している。本発明の一実施形態において、BMMメモリコントローラ302は、フルバッファー付きデュアル・インライン(FBD)メモリコントローラであり、各メモリモジュール310A−310Hは、フルバッファー付きデュアル・インライン(FBD)メモリモジュール(FBDIMM)である。メモリバンク304は、デイジーチェーン方式で共につながれる少なくとも一つのメモリモジュール310A−310nを備える。各メモリモジュール310は、ノースバウンド・データリンク(Nb)、及び、サウスバウンド・データリンク(SB)に沿って、シリアルビットストリームに流れる有効なデータのためのリピータのように動作する。
【0053】
メモリバンク304の各メモリモジュール310A−310nは、それぞれ、バッファ450A−450nを備える。それぞれの各バッファー付きメモリモジュール310A−310Nは、互いに異なってもよいメモリデバイス452A−452Nを備える。例えば、バッファー付きメモリモジュール310A内のメモリデバイス452Aは、バッファー付きメモリモジュール310B内のメモリデバイス452Bと異なってもよい。すなわち、各メモリモジュールのバッファ450は、メモリコントローラ302からトランスペアレントなメモリ素子に使用されるメモリのタイプを作る。
【0054】
各メモリモジュールのバッファ450は、ノースバウンド・データリンク(Nb)、及び、サウスバウンド・データリンク(SB)に沿って、シリアルビットストリームで流れているデータのためのリピータのように動作する。さらに、各メモリモジュールのバッファ450は、アイドル状態の、又は、無効なデータのフレーム、又は、部分的なフレームの代わりに、それ自身のローカルデータを、ノースバウンド・データリンク(Nb)に沿って流れるシリアルビットストリームのレーンに挿入、又は、マージしてもよい。
【0055】
メモリバンク304内のメモリコントローラ302とメモリモジュール310A−310nとのタイミングを共に同期させるために、各メモリモジュール、及び、メモリコントローラに結合されたクロック・ジェネレータ500が提供される。クロック・ジェネレータ500からのクロック信号501は、メモリコントローラ302に結合される。クロック信号502A−502nは、それぞれメモリモジュール310A−310nのバッファ450A−450nに結合される。
【0056】
メモリコントローラ302は、メモリバンク304内のメモリモジュールを通して、サウスバウンド・データリンクSBl−SBnの上で通信する。メモリコントローラ302は、メモリバンク304内で、ノースバウンド・データリンクNB1−NBnの上で、各メモリモジュール310からデータを受信してもよい。サウスバウンド・データリンクSBl−SBnは、シリアルデータの少なくとも一つのレーンを備えてもよい。同様に、ノースバウンド・データリンクNBl−NBnは、シリアルデータの少なくとも一つのレーンを備えてもよい。本発明の一実施形態において、ノースバウンド・データリンクNBl−NBnのシリアルデータには、14本のレーンがある。
【0057】
最後のメモリモジュールである、メモリモジュール310nは、それが送信するデータを有するか否かに関わらず、疑似乱数のビットストリームを生成して、それをノースバウンド・リンクNBn上のメモリコントローラ302の方へ流し始める。疑似乱数のビットストリームは、ノースバウンド・リンクNB1−NBn上の1つのメモリモジュールから次まで通過させてもよい。メモリモジュール310nがメモリコントローラ302に送信するローカルデータを有する場合、メモリモジュール310nは、ローカルデータを備えているデータのフレームを生成して、そのフレームを疑似乱数のビットストリームのデータのフレームの代わりに、ノースバウンド・リンクNBnに配置する。疑似乱数のビットストリームは、データのアイドル状態のフレームを示すデータのフレームにパケット化されたビットのシーケンスを備えてもよい。データのアイドル状態のフレームは、ローカルデータのフレームをノースバウンド・リンクNB1−NBn.の上を流れるシリアルビットストリームにマージするために、更に完全に他のメモリモジュール(メモリモジュール310A−310n)と取り替えられてもよい。例えば、メモリモジュール310Bは、入力ノースバウンド・リンクNB3上のアイドル状態のフレームを受信してもよく、アイドル状態のフレームの代わりにローカルデータのフレームを、出力ノースバウンド・リンクNB2上のシリアルビットストリームにマージしてもよい。
【0058】
図5において図示されたメモリシステムは、メモリコントロール302から各メモリモジュール310A−310Nに結合されたSMバス(SMBus)506を更に備えてもよい。SMバス506は、シリアル・データバスであってもよい。SMバス506は、バッファの内部レジスタにアクセスするためのサイドバンドメカニズムである。リンク・パラメータは、ノースバウンド、及び、サウスバウンド・シリアル・データリンクをあげることの前に、バッファの BIOSにより設定されてもよい。SM−バスは、また、バッファの内部レジスタにアクセスすることにより、システムをデバッグするために使用されてもよい。
【0059】
メモリコントローラ302は、(図2Bのプロセッサ201'及びメモリコントローラ202'で図示されたように)プロセッサの一部であってもよく、又は、(図2Aのプロセッサ201及びメモリコントローラ202で図示されたように)別々の集積回路であってもよい。いずれにせよ、メモリコントローラ302は、メモリへ又はメモリからそれぞれの書込み又は読出しデータのために、プロセッサから書込みデータを備えた書込みメモリ命令を受信し、プロセッサから読出されたメモリ命令を受信し、プロセッサに読出しデータを出力することができる。メモリコントローラ302は、メモリの各バンクの少なくとも一つのメモリモジュールにシリアルデータの少なくとも一つのレーンを送信するための、サウスバウンド・シリアル出力インタフェース(SBO)510を備えてもよい。メモリコントローラ302は、メモリの各バンクの少なくとも一つのメモリモジュールからシリアルデータの少なくとも一つのレーンを受信するための、ノースバウンド・シリアル入力インタフェース(NBI)511を更に備えてもよい。
【0060】
ここで図6(図6−1及び6−2)を参照する。バッファー付きメモリモジュール310のバッファ450の機能ブロック図が示されている。バッファ450は、バッファー付きメモリモジュール310のプリント回路基板451に取り付けられることができる集積回路である。バッファー付きメモリモジュール310に及びからデータを結合するために、バッファ450は、サウスバウンド・バッファ入出力インターフェイス600A、及び、ノースバウンド・バッファ入出力インターフェイス600Bを備える。
【0061】
ノースバウンド・バッファ入出力インターフェイス600Bは、ノースバウンドデータ出力(NBDO)601、及び、ノースバウンドデータ入力(NBDI)602をインターフェイスする。サウスバウンド・バッファ入出力インターフェイス600Aは、サウスバウンドデータ入力(SBDI)603、及び、サウスバウンドデータ出力(SBDO)604をインターフェイスする。本発明の一実施形態において、ノースバウンドデータ入力602、及び、ノースバウンドデータ出力601は、シリアルデータストリームの14レーンを備える。本発明の一実施形態において、サウスバウンドデータ入力603、及び、サウスバウンドデータ出力604は、シリアルデータストリームの10レーンを備える。
【0062】
メモリデバイス452にインターフェイスするために、バッファ450は、メモリ入出力インターフェイス612を備える。メモリ入出力インターフェイス612で、DRAMデータは、双方向にDRAMデータ/ストローブ・バス605の上を搬送され、一方、アドレス及びコマンドは、メモリデバイスに送出するためにDRAMアドレス/コマンド・バス606A−606B上を搬送される。メモリ素子452は、メモリ入出力インターフェイス612を備えたデータ転送を同期させるために、DRAMクロック・バス607A−607Bによって計時される。バッファ450のコア・ロジックから、メモリ入出力インターフェイス612は、マルチプレクサ635からCMDアウト・バス692の上のコマンド、マルチプレクサ637からのADDアウト・バス693上のアドレス、マルチプレクサ636からのデータ・アウト・バス691上の書込データ、を受信する。データ・アウト・バス691上の書込みデータは、DRAMデータ/ストローブ・バス605の上の該当するメモリデバイスに通信される。データアウトバス691上のアドレス・データは、DRAMアドレス/コマンド・バス606A−606Bの上の該当するメモリデバイスに通信される。CMDアウトバス692上のコマンドは、DRAMアドレス/コマンド・バス606A−606Bの上の該当するメモリデバイスに通信される。
【0063】
バッファ450の機能ブロックのためのコア・クロック信号611を生成するために、結合されたフェイズロックループ(PLL)613は、リファレンスクロック(REF CLOCK)502を受信する。リファレンスクロック(REF CLOCK)502は、差分の入力信号であってもよく、差分入力受信機によって適切に受信される。バッファ450は、SMバスコントローラ629に結合されたSMバス506を更に受信する。
リセット信号(Reset#)608は、それがアクティブローになる時に、バッファ450、及び、機能ブロックをリセットするために、リセット制御ブロック628に結合される。
【0064】
メモリ入出力インターフェイス612、及び、バッファ入出力インターフェイス600A−600Bの間は、バッファ450のコア・ロジックである。バッファ450のコア・ロジックは、メモリデバイスからのデータの読出し、ノースバウンド・データインタフェース600Bを通してのローカルデータとしてのデータの出力、に使用される。さらに、メモリモジュールからの他のいかなるレスポンスも、バッファによって出力され、ノースバウンド・データインタフェース600Bを通して、ノースバウンド・シリアル・データストリームに入力される。バッファ450のコア・ロジックは、また、サウスバウンド・データインタフェース600Aから受信されたメモリデバイスへの書込みデータに使用される。データを読出し及び書込むコマンドは、サウスバウンド・データインタフェース600Aから受信される。与えられたバッファー付きメモリモジュール310のメモリデバイス452がアクセスされない場合、ノースバウンド・データ入力602、及び、サウスバウンド・データ入力603上のシリアルデータは、それぞれ、バッファ入出力インターフェイス600A−600Bを通って、ノースバウンド・データ出力601上、及び、サウスバウンド・データ出力604上まで通過してもよい。このように、他のバッファー付きメモリモジュール310からのデータは、バッファ450のコア・ロジックによって処理されることなく、ノースバウンド・データインタフェース600B上のメモリコントローラを通過する。同様に、メモリコントローラからのデータは、バッファ450のコア・ロジックによって処理されることなく、サウスバウンド・データインタフェース600A上の他のメモリモジュールの上を通過してもよい。
【0065】
バッファ450のコア・ロジックは、データをメモリデバイス452から読出すため及びメモリデバイス452に書込むための機能ブロックを有する。バッファ450のコア・ロジックは、位相同期ループ(PLL)613、データCRCジェネレータ614、読出されたFIFOバッファ633、5入力1出力バス・マルチプレクサ616、同期及びアイドル状態のパターンジェネレータ618、NB LAIバッファ620、リンク(IBIST)622Bのための集積化されたビルトインセルフテスタ、リンク初期化SM及び制御とコンフィギュレーションのステータスレジスタ(CSR)624B、リセット・コントローラ625、コア制御及びコンフィギュレーション・ステータスレジスタ(CSR)ブロック627、LAIコントローラ・ブロック628、SMバスコントローラ629、外部MEMBISTメモリキャリブレーションブロック630、及び、図6に示されたように共に結合されたフェールオーバ・ブロック646Bを備える。バッファ450のコア・ロジックは、コマンド・デコーダ及びCRCチェッカ・ブロック626、アイドル状態のビルトイン・セルフテスタ(IBIST)ブロック622A、リンク初期化SM及び制御及びCSRブロック624A、メモリの状態コントローラ及びCSR632、書込みデータFIFOバッファ634、4入力1出力バス・マルチプレクサ635、4入力1出力バス・マルチプレクサ636、3入力1出力バス・マルチプレクサ637、LAIロジック・ブロック638、初期化パターン・ブロック640、1つのバス・マルチプレクサ642への二つ及び共に図6に示すように結合されたフェールオーバ・ブロック646Aを有する。
【0066】
マルチプレクサは、少なくとも2つのデータ入力、出力、及び、マルチプレクサの出力に与えられるデータ入力を選択するための少なくとも一つ制御入力又は選択入力を有する。2入力マルチプレクサのために、1つの制御入力又は選択入力は、マルチプレクサでの出力であるデータを選択するために使用される。バス・マルチプレクサは、各データ入力でビットを受信し、同様に、ビットを含む出力を有する。2入力1出力バス・マルチプレクサは、そのデータ入力、及び、単一のバス出力としての2つのバスを有する。3入力1出力バス・マルチプレクサは、そのデータ入力、及び、単一のバス出力として3つのバスを有する。4入力1出力バス・マルチプレクサは、そのデータ入力、及び、単一のバス出力として4つのバスを有する。
【0067】
バッファ450内では、各バッファ入出力インターフェイス600A−600Bは、FIFOバッファ651、データマージ・ロジック650、トランスミッタ652、レシーバ654、再同期ブロック653、及び、デマルチプレクサ/シリアル・パラレル・コンバータ・ブロック656を有する。データは、コア・ロジックにインターフェイスせずに、再同期パス661又は再サンプリングするパス662を通って、各バッファ入出力インターフェイス600A−600Bを通過することができる。本発明の各実施形態によれば、バッファ450に関連するローカルデータは、シリアル・データストリームを受信するコア・ロジックを有さずにアイドル状態のフレームに上書きして、アイドル状態のフレームがその中に位置するところを決定するために、シリアルデータストリームにマージされることができる。
【0068】
マルチプレクサ616は、ノースバウンド・データ出力601のシリアルレーン上のローカルデータとして出力するために、どのデータが、ノースバウンド・バッファ入出力インターフェイス600BのFIFOバッファ651の方向に向かうのかを選択する。一般的に、マルチプレクサ616は、コア制御、及び、CSRブロック627からのステータス、又は、読出されたFIFOバッファ633からの読出しデータ、CRCジェネレータ614からの付属のCRCデータを有する読出しデータ、パターンジェネレータ618からの同期又はアイドル状態のパターン、又は、IBISTブロック622Bからのテストパターン・データからの他の制御情報を選んでもよい。
【0069】
マルチプレクサ642は、サウスバウンドデータ出力604のシリアルレーン上へ出力するために、どのデータが、サウスバウンド・バッファ入出力インターフェイス600AのFIFOバッファ651の方向に向かうのかを選択する。一般的に、マルチプレクサ642は、初期化パターン・ブロック640からの初期化パターン、又は、IBISTブロック622Aからのテストパターン・データ、を選んでもよい。
【0070】
ここで、図7Aを参照する。トランスミッタに652に結合されたデータ・マージ・ロジック650のブロック図が示されている。トランスミッタ652は、トランスミッタ752A−752nのNレーンで構成される。上記したように、本発明の一実施形態において、レーンの数は10である。本発明の他の実施形態において、レーンの数は14である。データ・マージ・ロジック650においては、Nレーンのそれぞれのための、データ・マージ・ロジック・スライス700A−700nがある。
【0071】
先入れ先出し方式(FIFO)バッファ651からのパラレル・ローカルデータ・バス660は、各データ・マージロジック・スライス700A−700nに結合する。再同期パス661のシリアルデータのそれぞれのレーンは、各々個々のデータ・マージロジック・スライス700A−700nに結合する。再同期バス661のビット長は、レーンの数の2倍である。再同期バス661の各々個々のレーンの2ビットは、各々個々のデータ・マージ・ロジック・スライス700A−700Nに結合される。再サンプリングするバス662のシリアルデータの個々のレーンは、各々個々のデータ・マージロジック・スライス700A−700nに結合する。再サンプリングバス662のビット長は、レーンの2倍の数である。再サンプリングバス662の各々個々のレーンの2ビットは、各々個々のデータ・マージ・ロジック・スライス700A−700Nに結合される。
【0072】
再サンプリングするバス662、及び、再同期バス661の両方共は、 各レーンのために、2ビットシリアル・データストリームを、各々個々のデータマージロジック・スライス700A−700Nに転送する。対照的に、パラレル・データバス660は、各レーンのための6又は12ビットを各々個々のデータマージロジック・スライス700A−700Nに結合する。パラレル・ローカルデータ・バス660のビット長は、レーン数の12倍である。しかし6ビットのモードにおいて、12ビット中の6ビットだけがレーンごとにアクティブになることができる。各データ・マージ・ロジックスライス700A−700Nからの出力は、シリアル・トランスミッタ752A−752Nにそれぞれ結合され2ビットシリアル・データストリームである。各シリアル・トランスミッタ752は、図7Aに示すように、シリアルデータの2つのパラレルビットを、ノースバウンド・データ出力(NBDO)604の中の、個々のレーン601A−601N、又は、サウスバウンドデータ出力(SBDO)601の中の個々のレーン604A−604Nの上の単一のビットシリアル・データストリームに変換する。
【0073】
ここで図7Bを参照する。トランスミッタ752iに結合されたデータ・マージ・ロジック・スライス700iの回路図が示されている。データ・マージ・ロジック・スライス700iは、図7Aに図示された各Nレーンのための、データ・マージ・ロジックスライス700A−700nのうちの1つを表す。トランスミッタ752iは、図7Aに図示された各Nレーンのためのトランスミッタ752A−752nのうちの一つを表す。
【0074】
各データ・マージ・ロジック・スライス700iは、12ビット長の全フレーム・モード(12ビットモードとも称される)、又は、6ビット長のハーフ・フレーム・モード(6ビットモードとも称される)、の2ビット長モードのうちの1つにおいて動作することができる。モード制御信号(6bit_mode)722は、データマージロジック・スライス700iが、どちらの2ビット長モードのコア・ロジックで動作するかを示し、制御する。
【0075】
全フレーム・モード、又は、12ビットのモードにおいて、コア・ロジックは、データマージロジック・スライス700iを用いてバス660i上でデータを通信するために、12ビットの全フレームを使用する。バス660iの下位の6ビットは、Data[5:0] バス726に表され、一方、バス660iの上位の6ビットは、Delayed_data[5:0]バス727に表される。シリアルデータストリームにマージされて送信されたローカルデータの12ビット(Data[5:0]、及び、Delayed_data[5:0])は、それぞれ、フレームの初めに、「Early_Load_Pulse」制御信号720により、下位のパラレル入力シリアル出力(PISO)コンバータ708B、及び、上位のパラレル入力シリアル出力(PISO)コンバータ708にラッチされる。
【0076】
下位のパラレル入力シリアル出力(PISO)コンバータ708B、及び、上位のパラレル入力シリアル出力(PISO)コンバータ708Aは、パラレル入力シリアル出力(PISO)シフトレジスタであり、また、本願明細書においてもそのように参照される。各PISOコンバータ708A−708Bは、また、PISOシフトレジスタ708A−708Bとしても参照され、パラレル・データ入力、クロック入力、ロード/シフトバー入力、シリアル入力(SIN)、及び、シリアル出力(SO)を有する。上位のPISOシフトレジスタ708Aのシリアル出力は、ローカルデータ・バス660iの12パラレルビットをシリアル化することをサポートするために、下位のPISOシフトレジスタ708Bのシリアル入力に結合される。上位のPISOシフトレジスタ708Aのシリアル入力は、本発明の一実施形態における論理上のロー(例えばグランド)、又は、本発明の他の実施形態における論理上のハイ(例えばVDD)に結合されることができる。PISOシフトレジスタ708A−708Bのシリアル出力(SOUT)は、本発明の一実施形態において、一度に2ビットである。本発明の他の実施形態において、PISOシフトレジスタ708A−708Bのシリアル出力(SOUT)は、一度に1ビットであってもよい。
【0077】
12ビット・モードにおいて、バス726の6ビットは、下位のPISOシフトレジスタ708Bのパラレル・データ入力(ピン)に結合され、一方、バス727の6ビットは、上位のPISOシフトレジスタ708のパラレル・データ入力(ピン)に結合される。これらの12ビットは、12ビット・バス・モードを示すモード制御信号722を備えた初期のロード・パルス720の間に、各PISOシフトレジスタにそれぞれロードされる。(例えば、本発明の一実施形態において、モード制御信号722は、論理上のローレベルであることにより12ビットのモード、論理上のハイ・レベルであることにより6ビットのモードであることを示す。)12ビット・モードにおいて、D−typeフリップフロップ706Aへのクリア入力は、論理的にハイ・セッティングであり、D−typeフリップフロップ706AのQ出力は、マルチプレクサ703への制御入力が、バス728上への出力にバス726が選択されるように、論理上のゼロである。
【0078】
ハーフ・フレーム・モード、又は、6ビットのモードにおいて、コア・ロジックは、データマージロジック・スライス700iにより、バス660i上でデータを通信するために、一度に6ビットのハーフ・フレームを使用するだけである。コア・ロジックは、一度に6ビットのデータ、又は、フレームの半分によりオフセットされた初期のデータ(Data[5:0]726)、及び、遅れたデータ(Delayed_data[5:0])を送信する。ハーフ・フレーム・モードにおいて、データ・マージ・ロジック・スライス700iの下位のPISOシフトレジスタ708Bのみが、送信するためのシリアルデータストリームにデータをマージするために使用される。
【0079】
6−ビット・モードのマルチプレクサ703は、初期のロード・パルス720の間に、選択的にバス726の6ビットを、下位のPISOシフトレジスタ708Bのパラレル・データ入力(ピン)に結合し、遅れたロードパルス721の間に、バス727の6ビットを、下位のPISOシフトレジスタ708Bのパラレル・データ入力(ピン)に結合する。バス726の6つのビットは、遅れたロード・パルス721の間に、6ビットのバス・モードを示すモード制御信号722により、PISOシフトレジスタ708Bにロードされる。バス727の6ビットは、初期のロード・パルス720の間に、6ビットのバス・モードを示すモード制御信号722により、PISOシフトレジスタ708Bにロードされる。
【0080】
データ・マージ・スライス700iは、データパス・ロジック、及び、制御ロジック701iを有する。データパス・ロジックは、ローカルデータ、及び、フィードスルー・データを、シリアルビットストリームに選択的にマージする。制御ロジック701iは、ローカルデータ及びフィードスルー・データのシリアルビットストリームへのマージングを適切に同期させるために、各データ・マージ・スライスのデータパス・ロジックを制御する。
【0081】
モード制御ロジック、及び、マージ制御ロジックを備える制御ロジック701iは、図7Bに示されて、図示されたように、共に結合された、3つのシングル・ビット2入力1出力マルチプレクサ702A−702C、セット/リセットDフリップフロップ706A−706B、ORゲート710、ANDゲート711、及び、インバータ712を有する。制御ロジック701iによって生成された信号は、データパス・ロジックに結合される。マルチプレクサ702A−702B、D−typeフリップフロップ706A、ORゲート710、ANDゲート711、及び、インバータ712は、モード制御ロジックを提供する。マルチプレクサ702C、及び、D−typeフリップフロップ706Bは、マージ制御ロジックを提供する。
【0082】
データパス・ロジックは、図7Bに図示されたように、共に結合された、6ビットの2入力1出力バス・マルチプレクサ703、2ビット2入力1出力バス・マルチプレクサ704−705、一対の6ビット入力/2ビット出力のパラレル入力シリアル出力(PISO)コンバータ708A−708Bを有する。
【0083】
データ・マージ・ロジック650の各スライス700iは、再同期データ661iの2ビット・シリアル・レーン、再サンプリングデータ662iの2ビット・シリアル・レーン、及び、ローカルデータ660iの12ビット・パラレル・レーンを受信してもよい。ローカルデータ660iのパラレル・レーンは、バッファ450のコア・ロジックからであり、様々なタイプのデータであってもよい。例えば、ローカルデータ660iは、メモリデバイス452からの読出しデータ、サイクリックリダンダンシチェック(CRC)データ、試験データ、ステータス・データ、又は、バッファのコア・ロジックにより受信され、送信され、又は、生成された他のいかなるデータ、であってもよい。
【0084】
再同期データ661iの2ビット・レーン、及び、再サンプリングデータ662iの2ビット・レーンは、与えられたバッファ450のコア・ロジックに結合点を有しておらず、マルチプレクサ705により、ローカル・クロック・モード信号736に応じて、フィードスルー・データ(また、本願明細書において「フィードスルー・データ」としても参照される)725に多重化される。バッファ450がローカル・クロック・モードで動作している場合、再同期データは、フィードスルー・データ725の上へ多重化される。バッファ450がローカルクロック・モードで動作していない場合、再サンプリングデータ662iは、フィードスルー・データ725の上へ多重化される。ローカル・クロック・モードにおいて、フェーズ・ロック・ループ(PLL)クロック・ジェネレータは、再同期データを生成するために、入力シリアルデータストリームを再同期することに使用されたバッファ内で、遠隔クロック信号を生成するために使用される。ローカル・クロック・モードでない場合、再サンプリングデータを生成するために、受信されたクロックが、入力シリアルデータストリームのサンプルをとるために使用された受信されたシリアル・データストリーム内のデータのフレームから生成され、同期される。クロック信号Clock_2UI723は、ローカル・クロック・モード信号736に応じて、局所的に生成されたクロック信号と受信されたクロック信号との間で切替えられる。フィードスルー・データ725のソースは、ノースバウンド(Nb)側(また、伝送されたノースバウンド・データとも称する)上の他のメモリモジュール310のバッファ450から、又は、サウスバウンド(SB)側(また、伝送されたサウスバウンド・データと称する)上の他のメモリモジュール310のバッファ450から、代わりに、サウスバウンド(SB)側上のメモリコントローラ302から、であってもよい。
【0085】
2入力1出力バス・マルチプレクサ704は、第1の入力としてのシリアル・フィードスルー・データ725の2ビット、第2の入力としての6−2PISOシフトレジスタ708Bからの2ビット・シリアル出力、及び、制御入力におけるローカル・データ選択信号(PISO_SEL)732を受信する。6−2PISOシフトレジスタ708Bからの2ビット・シリアル出力735は、パラレル・データバス660iからのローカルデータ735の2つのシリアル化されたビットである。このように、ローカルデータ選択信号(PISO_SEL)732に応じて、マルチプレクサ704は、フィードスルー・データ725の2ビット、又は、パラレル・データバス660iから、6−2PISOシフトレジスタ708Bによって発生され、シリアル化されたローカルデータ735の2ビットのどちらも出力に選択する。マルチプレクサ704からの2ビット出力730は、トランスミッタ752に結合され、更に、レーンNBDOi/SBDOi601i、604iの上へのシングル・ビットにシリアル化される。このように、コア・ロジックからのローカルデータは、フィードスルー・データと多重化され、NBDOi/SBDOi601i、604iで、シリアルビットストリームのレーンにマージすることができる。
【0086】
データのシリアルビットストリームへのマージングを制御するローカル・データ選択信号(PISO_SEL)732は、Dフリップフロップ706Bにより発生される。マージ・イネーブル信号724に応じて、Dフリップフロップ706Bは、クロック信号Clock_2UI723の立ち上がりエッジ上のローカルデータ選択信号(PISO_SEL)732を生成する。マージ・イネーブル信号724は、マルチプレクサ702Cの第1の入力に結合される。ローカルデータ選択信号(PISO_SEL)732は、フィードバックされ、マルチプレクサの702Cの第2入力に結合される。マルチプレクサ702Cの出力は、Dフリップフロップ706BのD入力に結合される。初期のロード・パルス(EARLY_LD_PULSE)信号720は、マルチプレクサ702Cの選択制御入力に結合される。初期のロード・パルス720がアクティブハイである場合、マージ・イネーブル信号724はマルチプレクサ702Cにより出力され、Dフリップフロップ706BのD入力に結合される。初期のロード・パルス720がローである場合、ローカルデータ選択信号(PISO_SEL)732は、マルチプレクサ702Cフィードバックにされ、ローカルデータ選択信号(PISO_SEL)732の現在状態を保持するために、Dフリップフロップ706BのD入力に結合する。初期のロード・パルス720は周期的に記録されるので、マージ・イネーブル信号724がローである場合、それは、適切な時期にDフリップフロップ706Bをクリアする、したがって、そのQ出力は、データのマージを終了するロー論理レベル信号である。
【0087】
マージイネーブル信号724は、クロック信号Clock_2UI723のエッジ上で、ローカルデータ選択信号(PISO_SEL)732に同期される。merge_enable信号724は、ローカルデータ選択信号(PISO_SEL)732を生成するために、early_load_pulse720の間にサンプリングされて、マルチプレクサ704は、フレーム境界(フレームのレーンごとにデータの12ビット)で切り替えられる。マージ・イネーブル信号724が、クロック信号Clock_2UI723の立ち上がりエッジ上のアクティブハイである場合、ローカルデータ選択信号(PISO_SEL)732は、ローカルデータ735の2つのシリアル化されたビットを選択するためのマルチプレクサ704、と同様にその2ビット出力730、を制御するために、アクティブハイになる。マージ・イネーブル信号724が、クロック信号Clock_2UI723の立ち上がりエッジ上のローである場合、ローカルデータ選択信号(PISO_SEL)732は、データ725の2つのフィードスルービットを選択するためのマルチプレクサ704、と同様にその2ビット出力730、を制御するためにローのままである。
【0088】
ローカル・データ選択信号(PISO−SEL)732が論理上のハイであることに応じて、パラレル・データバス660iの2つのシリアルビットは、レーンNBDOi/SBDOi601i、604i.にマージされる。ローカル・データ選択信号(PISO_SEL)732が論理上のローであることに応じて、フィードスルー・データ725の2ビットは、マルチプレクサ704によりレーンNBDOi/SBDOi601i、604i.の上の出力に選ばれる。
【0089】
ローカル・データ選択信号(PISO_SEL)732は、マージ・イネーブル信号724に応ずるので、マージ・イネーブル信号724の生成は、レーンNBDOi/SBDOi601i、604iのシリアル・データストリームの上へマージされるバス660iのパラレルデータを与える。マージ・イネーブル信号724は、リンク制御ロジック(図6に示されたリンク初期化SM及び制御及びCSR機能ブロック624B)によりシリアル・データストリームにマージされるためのローカルデータを与えるために、適切な時期の時間内に生成される。
【0090】
一時的に図5に戻って参照する。マージ・イネーブル信号のタイミングは、システムの初期化及びトレーニングの間の各メモリモジュール310に対して決められている。バンク304の最後のメモリモジュール310nについては、マージイネーブル信号は、ノースバウンド・データリンクにおいて、続けて生成しているデータの更なるメモリーモジュールがもはやないといった、データ送信信号よりも多くの意味があることに注意する。
【0091】
ここで図10を参照する。フローチャートは、初期化、トレーニング、及び、ローカルデータとフィードスルー・データを共にシリアル・データストリーム出力にマージする場合のバッファの動作のために図示している。フローチャートは、ブロック1000から始まる。
【0092】
ブロック1002で、各メモリバンクの各メモリモジュールのバッファは、初期化される。メモリバンク304の初期化の間、各メモリモジュールでは、そのサウスバウンド、及び、ノースバウンド・シリアル・データリンクが初期化(また、リンク・トレーニングの一部であることと称してもよい)される。メモリコントローラ302は、サウスバウンド(SB)データリンクSBl−SBn上の外の初期化パターンを送信する。初期化の間、最後のメモリーモジュールの310nのバッファ450nは、サウスバウンド・データリンクSBn上の初期化パターンを受信し、それを他のメモリモジュールを通して、ノースバウンド(Nb)データリンクNB1−NBnの上を再送信してメモリーコントローラ302に戻す。各バッファがそれ自身のクロックを有するように、ノースバウンド(Nb)データリンクNB1−NBnでバッファにより受信された初期化パターンは、ビットをロックするためと、シリアルデータの各レーンのフレームを同期させる目的で使用される。バッファのクロックは、初期化パターンに同期してもよい。ロジックのタイミングは、シリアル・データストリームのデータのパケットを受信するためと、同様にデータのフレームからのヘッダ、及び、いかなるエラー訂正/検出、又は、パケット内の他のデータフィールドを解析するために、初期化パターンに合わせられてもよい。Early_Ld_Pulse720の生成は、与えられたメモリモジュールによって受信されたデータのフレームの始まりと一致するように設定される。Late_LD_Pulse721の生成は、与えられたメモリモジュールによって受信されたデータのフレームのハーフ・フレーム境界にあるように設定される。
【0093】
次にブロック1004で、各メモリーバンクの各メモリモジュールの各バッファは、トレーニングされる。初期化パターンを送出した後に、メモリ・コントローラ302は、トレーニングの間に与えられたバンク304の最後のメモリモジュールまでトレーニング・パターンを送信する。トレーニングの間、最後のメモリモジュールの310nのバッファ450nは、サウスバウンドデータリンクSBn上のトレーニング・パターンを受信して、それをメモリ・コントローラ302に戻すために、他のメモリモジュールを通して、ノースバウンド(Nb)データリンクNB1−NBnの上へ再送信する。各メモリモジュールは、サウスバウンド(SB)データリンク上のトレーニング・パターンのうちの1つを観察して、ノースバウンド(Nb)データリンク上で同じメモリモジュールに戻すための時間又はそのためのクロックサイクルを決定する。ラウンドトリップ時間は、各メモリモジュールの与えられたポジションに対して決定される。
【0094】
リクエストが過剰に集中されないと仮定するならば、ラウンドトリップ時間は、他のメモリモジュールの有効なデータと衝突せずに、ノースバウンド・データリンク上へデータをマージするための、与えられたメモリモジュールのために安全である時間内のスロットを表す。与えられたメモリモジュールで、アイドル状態のデータ・パケットは、サウスバウンド・データリンク上のメモリ・リクエストコマンドを確かめた後の、その瞬間に、ノースバウンド・データリンク上で受信されることが求められる。その時点で、アイドル状態のデータパケットは、ローカル・データパケットと取り替えられることができる。与えられたメモリモジュールのためのデータ遅延時間に対するラウンドトリップ時間、及び、コマンドは、ノースバウンドデータリンクにローカル・データをマージすることを制御するために使用されるマージ・イネーブル信号のタイミングをセットするための根拠である。ラウンドトリップ時間が長いならば、データは、先にフェッチされ、FIFOバッファに置かれ、ノースバウンド・データストリームにマージされるための適当な時間を待つことができる。バッファのノースバウンド・インタフェースの読み書きFIFOバッファ・ポインタの間の距離は、ラウンドトリップタイミングに基づいてセットすることができる。
【0095】
ラウンドトリップ時間は、ビットレートクロック(clock_2UI 723)の周期の整数の関数として、決定されてもよい。チャネルのメモリモジュールの数、及び、チャネルの最後のメモリモジュールのデータ遅延に対するコマンドは、そのチャネルの往復の時間を決定する。
【0096】
各メモリモジュールに対するデータ遅延のためのコマンドは、各メモリモジュールのマージイネーブル信号のタイミングを確立することをアシストするために更に決定されてもよい。データ遅延タイミングに対するコマンドは、少なくとも一つの以下の期間を有してもよい:サウスバウンド入出力インターフェイス600Aからメモリ入出力インタフェース612にコマンドが転送されるための時間、メモリ入出力インタフェース612からメモリデバイス452までコマンドが転送されるための時間、メモリ入出力インタフェース612、及び、メモリデバイス452のクロック・タイミングの差、メモリデバイス452に対するクロック信号、及び、コマンド信号のルートを決めることによる遅延、バッファ450、及び、メモリデバイス452のためのいかなるセットアップ/ホールド時間、メモリデバイス452(例えばCASタイミング、及び、いかなる追加レーテンシも)の読出しレーテンシ、メモリデバイス452からバッファ450へのデータ信号、及び、ストローブ信号のルートを決めることによる遅延、メモリデバイス間のデータの遅延スキュー、メモリ入出力インタフェース612による遅延、バッファ450、及び、メモリ機器452のためのいかなるセットアップ/ホールド時間、及び、メモリ入出力インタフェース612からノースバウンド入出力インタフェース600Bまでデータが転送されるための時間(これは、バッファ450の中でデータがバッファリング、及び、計時されるための遅延を含んでもよい)。データ遅延タイミングに対するコマンドは、フレームのマルチプルの数、又は、ビット・レート・クロックの周期(フレーム/12又はclock_2ui/2のようなビットタイミング)の整数の関数として存在する遅延時間の粒状性により、それのフラクションとして決定されてもよい。例えば最後のメモリモジュール310nのようなメモリモジュールのデータ遅延タイミングに対するコマンドは、追加の遅延時間が求められる場合、プログラム的にレジスタをセットすることにより増大させることができる。
【0097】
次のブロック1006で、初期化、及び、トレーニングの後には、各バッファは、シリアル・データ入力から入力シリアルデータストリームを受信する準備ができている。しかし、メモリバンク304の最後のメモリモジュール310nのバッファは、ノースバウンド・データリンク上のメモリ・コントローラ302の方へのアイドル状態のパケット又は読み出しリクエストされたデータ・パケットのどちらも送信する。一方、入力シリアルデータストリームは、データのアイドル状態のフレーム間に散在するデータのフィードスルー・フレームを表したものが受信される。
【0098】
次のブロック1008で、判定は、ローカルデータのアベイラビリティに関してなされてもよい。シリアル・データストリームにマージするローカルデータがある場合、その時、制御フローはブロック1010へジャンプする。シリアル・データストリームにマージするローカルデータがもはやない場合、その時、制御フローはブロック1014へジャンプする。
【0099】
マージするローカルデータのないブロック1014で、フィードスルー・データは、シリアル・データ出力の上へ送信される。フィードスルー・データは、再サンプリングされた入力シリアルデータストリームのデータのそのビットを有してもよい。代わりに、フィードスルー・データは、再同期された入力シリアルデータストリームのデータのそのビットを有してもよい。その時、制御フローは、連続的に入力シリアルデータストリームを受信するために、ブロック1006へ戻るようにジャンプする。
【0100】
ローカルデータのマージに関するブロック1010で、ローカルデータのフレームは、出力シリアルデータストリームのフィードスルー・データと置き換えられる。すなわち、ローカルデータがバッファによって送信されることを必要とする場合、入力シリアルデータストリームのデータのフレームは、ドロップされ、ローカルデータのフレームは、その場所においてマージ・イネーブル信号に応じて送信される。ローカル・データ、及び、フィードスルー・データのフレームは、データのローカル・フレームのパラレルビットをデータのシリアル・ビットにシリアル化することによって共にマージされて、それから、マージイネーブル信号に応じて、データのローカル・フレームのデータのシリアル・ビット、及び、データのフィードスルー・フレームのシリアル・ビットを、出力シリアルデータストリームのシリアル・ビットに多重送信されてもよい。初期化及びトレーニングの間、ホスト及びメモリ・コントローラは、入力シリアルデータストリームのデータのアイドル状態のフレームをデータのローカル・フレームと取り替えることを確保する。バッファは、交換されている入力シリアルデータストリームの入力フレームがデータがアイドル状態のフレームであるか否かをチェックする必要がない。
【0101】
ブロック1012で、マージされたデータを備える出力シリアルデータストリームは、チェインの上で次のメモリモジュールへのシリアル・データ出力上へ、又は、代わりにメモリコントローラに送信される。
【0102】
次に、制御プロセスは、シリアル・データ入力から入力シリアルデータストリームを受信することを続けるために、ブロック1006へジャンプする。
【0103】
上記したように、コア・ロジック、及び、バッファ450からのローカルデータは、一度に6ビットのチャンク、又は、12ビットのチャンクの出力であってもよい。モード制御信号(6bit_mode)722は、データ・マージ・ロジック・スライス700iが、6ビット・モード(ハーフ・フレーム・モード)、又は、12ビット・モード(全フレーム・モード)において動作するかを決定する。モード制御信号(6bit_mode)722は、マルチプレクサ702A、及び、ANDゲート711の第1の入力、及び、インバータ712への入力の選択入力又は制御入力に結合される。
【0104】
初期の負荷パルス信号720は、パラレルデータバス660i上の最初の6ビットのローディングを制御する。遅れた負荷パルス信号721は、パラレルデータバス660i上の第2の6ビットのローディングを制御する。遅れたロード・パルス721は、ORゲート710の第1の入力に結合される。初期のロード・パルス制御信号720は、マルチプレクサ702Bの第1の入力、ORゲート710の第2の入力、マルチプレクサ信号702Aの第1の入力、6−2PISOシフトレジスタ708Aのload/shift−バー入力、及び、マルチプレクサの702C選択入力に結合される。
【0105】
クロック信号Clock_2UI723は、D flip−FLOPS706A−706Bのクロック入力、及び、6−2PISOシフトレジスタ708A−708Bのクロック入力に結合する。マルチプレクサ702Aの出力は、6−2PISOシフトレジスタ708B.のload/shift−バー入力に結合する。
【0106】
6−2PISOシフトレジスタ708Aのパラレル入力は、6ビット遅延されたデータバス727に結合する。6−2PISOシフトレジスタ708Aの2ビット・シリアル出力は、6−2PISOシフトレジスタ708Bの2ビット・シリアル入力に結合する。6−2PISOシフトレジスタ708Bのパラレル入力は、マルチプレクサ703からの6ビット出力に結合する。このようにデータ・マージ・ロジカル・スライス700iが12ビット・モードであるときに、12ビットのデータは、6−2PISOシフトレジスタ708A−708Bにロードされることができ、それから、マルチプレクサ704により2ビットシリアル出力708Bからシリアルにシフト出力され、トランスミッタ752iに結合される。
【0107】
シリアル・トランスミッタ752iは、2パラレルビットを、その出力601i、604iで、シリアル1ビットにセットするために、クロック信号によってダブルクロックされる。
【0108】
データマージロジカル・スライス700iは、6bit_mode制御信号722が論理上のローであるときに、12ビット・モードである。データ・マージlogical/700iは、6ビットモード制御信号722が論理上のハイであるときに、6ビット・モードである。マルチプレクサ702B、及び、Dフリップフロップ706Aとの制御ロジック710−712は、6ビット・モード制御信号722に応じて12ビット・モード又は6ビット・モードを決めるために、マルチプレクサ703の選択入力に結合されたデータバス選択(Data_Sel)信号729を生成する。データバス選択信号729が論理的にローであるときに、データの12ビットは、6−2PISOシフトレジスタ708A−708Bとパラレルにロードされる。データバス選択信号729が論理上のハイであるときに、データバス727の6ビットは、6−2PISOシフトレジスタ708Bに結合される。
【0109】
6ビット・モードにおいて、初期のロード・パルス信号720、又は、遅れたロード・パルス721のどちらも、6−2PISOシフトレジスタ708Bにパラレルデータをロードすることができる。6ビットモードも、又は、12ビットのモードのいずれにおいても、初期のロード・パルス720は、データバス727から6−2PISOシフトレジスタ708Aに、パラレルデータをロードするためだけに使用される。
【0110】
6−2PISOシフトレジスタ708Aのシリアル入力は、送信されたデータの後にゼロだけがシリアルにシフトされるように、グランドに結合される。代わりに6−2PISOシフトレジスタ708Aのシリアル入力は、送信されたデータの後に論理上のものだけがシリアルにシフトされるように、VDDに結合される。
【0111】
Dフリップフロップ706AのQ出力は、ANDゲート711の出力が論理上のローであるときに、マルチプレクサ702Bの第2の入力に結合され、Q出力は、ロードされた論理状態をデータバス選択(DATA_SEL)信号729のその中で保持するために、Dフリップフロップ706AのD入力に結合される。
【0112】
ここで、図8を参照する。12ビットのモードにおいて動作しているデータ・マージ・ロジック・スライス700iを表す波形のタイミング図が示されている。すなわち、6ビットのモード制御信号722は、図8のタイミング図における論理上のローである。
【0113】
図8において、Clock_2UI信号723は、波形823で示される。コア・クロック信号611は、波形811で示される。パラレル・データバス690上のデータ(MEM_DATA入力[5:0])690Aのより下位の6ビットは、波形890Aで示される。パラレル・データバス690上のデータ(MEM_DATA入力[11:6])690Bの上位の6ビットは、波形図890Bで示される。パラレル・データバス660i上のデータ(FBD_DATA[5:0])726の下位の6ビットは、波形図826で示される。パラレル・データバス660i上のデータ(FBD_DATA[11:6])727の上位の6ビットは、波形図827で示される。マージイネーブル制御信号724は、波形図824で示される。初期のロード・パルス制御信号720は、波形820で示される。遅れたロード・パルス制御信号721は、波形821で示される。ローカルデータ選択制御信号(PISO_SEL)732は、波形832で図示される。シングルビットシリアル出力データストリームNBDOi601iは、波形801で示される。
【0114】
ノースバウンド・シリアルデータストリームにマージするいかなるローカル・データなしでも、バッファ450は、ノースバウンド・データ入力602に受信されたビット(「フィードスルーデータ」725)を、バッファ450のコア・ロジックを迂回することで、高速クロック領域のトランスミッタ752iに通過させる。ローカルデータ選択制御信号(PISO_SEL)732は、波形832で図示されたように、フィードスルー・データ725がトランスミッタ752iに多重化されるときは、ローである。
【0115】
上記したように、「Early_Ld_Pulse」720は、フレーム(リンクに参照されるように)の始まりと一致するようにセットされ、late_ld_pulse721は、シリアル・データリンクのレーンの最初のトレーニングの間に、ハーフ・フレーム境界にあるようにセットされる。本発明の一実施形態において、データのフレームは、全フレーム動作モードの場合、リンク上のデータの論理ユニットであり、12ビットのデータで作られる。
【0116】
全フレーム動作モードにおいて、フレームの12のビットは、「Early_Ld_Pulse」信号720を使用しているPISOシフトレジスタにロードされる。「late_ld_pulse」信号721は、PISOシフトレジスタにビットをロードするために使用されない。上下のPISOシフトレジスタ708A−708Bの両方は、このモードにおいて使用される。6bit_mode制御信号722は、12ビット・モードにおいてローであり、Dフリップフロップ706Aの出力をクリアすることによって12ビットのモードにおいてローになるために、Data_Sel信号729を生じさせる。12のビット・モードにおいて「Data_Sel」信号729がローであることで、6つのより下位のデータ・ビット(バス660iのFBD_DATA[5:0]726)が、マルチプレクサ703により、より下位のPISOシフトレジスタ708Bに結合される。
【0117】
Early_Ld_Pulse720の周期的な生成は、また、Dフリップフロップ706Bによって「Merge_enable」信号724のサンプリングを可能にする。Early_Ld_Pulse720の周期的な生成は、アクティブ、ハイであり、Dフリップフロップ706Bのデータ入力Dに結合されたデータの出力としてのmerge_enable信号724を選択するために、選択的にマルチプレクサ702Cを制御する。
【0118】
上記したように、マージイネーブル信号724は、与えられたメモリモジュールからローカル・データをノースバウンド・シリアル・データのレーンに挿入して、シリアルデータストリームのデータのパケット又はアイドル状態のフレームを交換するために、適切な時期に発生される。波形824は、ローカル・データが、データバス660iより上のビット(FBDJD ATA[11:6])727、及び、それより下のビット(FBD_DATA[5:0])726上で有効になる場合に、発生されたアクティブ・ハイ・パルス844を示す。
【0119】
マージイネーブル信号724の波形824にアクティブ・ハイ・パルス844が発生する時に、early_ld_pulse信号720のパルス840A−840Bは、マージイネーブル信号724のアクティブ・ハイ・パルス844がclock_2UI信号723を使用しているDフリップフロップ706Bによりサンプルをとることを認める。これは、ローカル・データ選択信号(PISO_SEL)732の波形832にアクティブ・ハイ・パルス842を発生させる。ローカル・データ選択信号(PISO_SEL)732のアクティブ・ハイ・パルス842は、その出力で2ビットの「フィードスルーデータ」725を与えることから、その代わりに、その出力で2ビットのシリアル化ローカル・データ735を与えるように、マルチプレクサ704を切り替えさせる。ローカルデータ735に対するフィードスルー・データ725からの切替は、アクティブ・ハイ・パルス842が最初に発生するときに、フレーム境界で起こる。これは、PISOシフトレジスタ708A−708Bにシフトさせ始める「Early_Ld_Pulse」720の立下りエッジは、フレーム開始位置と一致するという理由からである。
【0120】
「Early_Ld_Pulse」720を備えるマージング・データと、マルチプレクサ出力731の両方ともがローであるとき、PISOシフトレジスタ708A−708Bは、ローカルデータの12 ビットを、「Clock_2ui」クロック信号723を使用して、シリアル出力735上に、一度に2ビットを、シリアルにシフト出力する。トランスミッタ725iは、上記の波形801に示されたローカルデータで示されるように、NBDOi出力601i上の2ビットをシングル・ビットシリアル・データストリームに更にシリアル化する。
【0121】
ここで図9を参照する。6ビット・モードにおいて動作するデータ・マージ・ロジック・スライス700iを表している波形のタイミング図が示されている。すなわち、6ビット・モード制御信号(6BITJVIODE)722は、図9のタイミング図の波形922で示すように論理上のハイである。
【0122】
図9において、Clock_2UI信号723は、波形923で図示される。コア・クロック信号(core_clk)611は、波形901で図示される。メモリーデータバス690上のより下位の6つのパラレルデータビット(MEM_DATA入力[5:0])690Aは、波形990Aで示される。メモリデータバス690の上位の6つのパラレル・データビット(MEM−データ入力[11:6])690Bは、波形990Bで示される。パラレルデータバス660i上のデータ(FBD_DATA[5:0])726のより下位の6ビットは、波形図926で示される。パラレルデータバス660i上のデータ(FBD_DATA[11:6])727のより上位の6ビットは、波形図927で示される。マージ・イネーブル制御信号724は、波形図924によって示され、図8の波形824のそれより早く発生する。初期のロード・パルス制御信号(EARLY_LD_PULSE)720は、波形920で示される。遅れるロード・パルス制御信号(LATE_LD_PULSE)721は、波形921で示される。データバス選択制御信号(DATA_SEL)729は、波形929で示される。ローカルなデータ選択制御信号(PISO_SEL)732は、波形932で示される。シングルビットシリアル出力データストリームNBDOi601iは、波形901で示される。
【0123】
6ビット・モードにおいて、より下位のPISOシフトレジスタ708Bは、データのパラレルビットをシフトさせたビット出力によりシリアルデータに変換するために使用される。データバス選択信号(DATA_SEL)729は、フレームの最下位6ビット、FBD_Data[5:0]726、又は、フレームの最上位6ビット、FBD_Data[11:6]727、を切り換え、バス・マルチプレクサ703の選択された出力により、より下位のPISOシフトレジスタ708Bにロードされる。
【0124】
「Early_Ld_Pulse」720、及び、「Late_Ld_Pulse」721の双方は、6BIT_MODE信号722がアクティブハイである時にマルチプレクサ702Aにより、ORゲート710の出力がより下位のPISOシフトレジスタ708Bのロード/シフトバー入力に結合されたので、より下位のPISOシフトレジスタ708Bにロード・データ又はシフト・データのどちらも出力させることができる。
【0125】
「Early_Ld_Pulse」720、及び、「Late_Ld_Pulse」721がローのときに、ビットはより下位のPISOシフトレジスタ708Bからシフト出力される。また、ビットのパラレルロードがより下位のPISOシフトレジスタ708Bに入力する間の、ロード/シフトバー制御入力がハイであるときに、予めロードされたビットは、シフトされて出力され続ける。ロード/シフトバー制御入力が、データビットのパラレルロードの後に、ローに復帰するときに、新しくロードされたビットは、その時、より下位のPISOシフトレジスタ708Bによりシフト出力される。このように、データの全6ビットは、パラレルビットの新規のセットがロードされている時に、シフト出力されてもよい。
【0126】
フレームの最下位の6ビット、FBD_Data[5:0]726は、データバス選択信号(DATA_SEL)729が、例えば、ローの点949C、949Dのようなローであるとき、「Early_Ld_Pulse」720の入力波形920のパルス940A、及び、940Bによりより下位のPISOシフトレジスタ708Bにロードされる。フレームの最上位の6ビット、FBD_Data[11:6]727は、データバス選択信号(DATA_SEL)729が、例えば、パルス949A、949Bの間のようなハイであるとき、「Late_Ld_Pulse」721の入力波形921のパルス941A、及び、941Bによりより下位のPISOシフトレジスタ708Bにロードされる。
【0127】
6ビット・モードにおいて、シリアル化された「フィードスルーデータ」725とシリアル化されたローカルデータ735との間の切替は、前述した12ビットモードの動作に類似しており、簡潔にする理由からここでは繰り返さない。
【0128】
データをマージするとき、PISOシフトレジスタ708Bは、シリアルにシフト出力しているローカルデータの最上位6ビット、又は、最下位6ビット出力を、Clock_2UIクロック信号723を使用して、一度に2ビットをシリアル出力735の上へ変換する。トランスミッタ725iは、上記の波形901に示されたローカルデータにより図示されるように、NBDOi出力601i上の2ビットをシングル・ビットシリアル・データストリームに更にシリアル化する。
【0129】
6ビット・モードの間、全フレームのデータは、さらに送信され、本発明の各実施形態は、シリアル・データストリームにマージされたことデ、更にローカルデータのレーテンシを減らす。図8、及び、9を共に比較する場合、ローカルデータのマージングは、図9よりも1フレーム期間早くなる。
【0130】
本発明の各実施形態は、アイドル状態のパケットの場所を決定するために、シリアル入力データストリームのデコード入力パケットを有さずに、フィードスルー・データ、及び、ローカルデータを共にして高速のシリアル・データリンクにマージングすることを可能にする。予め、入力シリアルデータストリームは、受信され、デパケッタイズ/デコードされ、及び、再送信された前コア・ロジックによってフレームにリアセンブルされる。本発明の各実施形態は、入力シリアルデータストリームがデパケッタイズ/デコードされ、データのフレームにそれがリアセンブリされることを避け、そして、再送信のためのエンコーディング/パケット化を防ぐ。本発明の各実施形態は、入力シリアルデータストリームの再送信と、バッファ集積回路のコア・ロジックを有さないでの、シリアル・データストリームへのローカルデータのマージングを可能にする。マルチ・メモリーモジュール・システムにおいて、シリアル通信チャネルは、メモリーが回路を集積化してデイジーチェーン方式でつながれたメモリーモジュールの一つの入力が機能しない場合であっても、動作し続けることができる。
【0131】
本発明の各実施形態は、低いレーテンシのメモリアクセス・オペレーションを提供するように設計されている。これは、チャンネルのメモリーモジュールの数が増加するにつれて、システム性能を低下させるメモリアクセス・レーテンシなしで、各バンクにより多くのメモリーモジュールを有するより大きいメモリを与えることができる。
【0132】
一例としての実施形態が、記述され、そして添付の図面に示されているが、そのような実施形態は、単に図示するだけであり、広義の発明を制限するものではなく、この発明を、図示され記述された特定の構造及びそのアレンジに限定するものではない。なぜなら当業者によれば多様な他の変形例を形成できることが理解できるからである。例えば、本発明の一実施形態は、フルバッファー付きのデュアル・インライン・メモリモジュールのためのシリアル・データリンクを提供するために述べられている。しかし、本発明の各実施形態は、他のタイプのメモリモジュール、及び、システムにおいてインプリメントされてもよい。他の実施形態として、データは、PISOシフトレジスタ708A−708Bの周囲の2ビット・バス上で、本発明の一実施形態における和やかなデータ・タイミングを提供するために、マージ・ロジックにより、一度に2ビットがシリアル化される。しかし、本発明の各実施形態は、ローカルデータをフィードスルー・データとシングル・ビットシリアル・データストリームにシリアル化した、異なるクロック・タイミングのシングルビット出力PISOが使用され、マルチプレクサ704、705が、シングル・ビットシリアル・データストリームをサポートするために提供されてもよい。
【図面の簡単な説明】
【0133】
【図1A】本発明の各実施形態が用いられてもよい代表的なコンピュータシステムのブロック図を示す。
【0134】
【図1B】本発明の各実施形態が用いられてもよいクライアント−サーバーシステムのブロック図を示す。
【0135】
【図2B】本発明の各実施形態が用いられてもよい他の中央処理装置のブロック図を示す。
【0136】
【図3】バッファー付きメモリモジュールのバンクに入力及び出力するデータを結合させるバッファー付きメモリコントローラの簡略ブロック図を示す。
【0137】
【図4】データをフィードスルー・データとマージしてもよいバッファを備えているバッファー付きメモリモジュールのブロック図を示す。
【0138】
【図5】バッファー付きメモリモジュールのバンクに結合されたバッファー付きメモリコントローラの詳細なブロック図を示す。
【0139】
【図6−1】バッファー付きメモリモジュールのバッファの機能ブロック図を示す。
【図6−2】バッファー付きメモリモジュールのバッファの機能ブロック図を示す。
【0140】
【図7A】トランスミッタに結合するデータ・マージ・ロジックスライスのレーンを含むデータ・マージ・ロジックの簡略ブロック図を示す。
【0141】
【図7B】シリアルデータの一つのレーンのためのデータ・マージ・ロジック・スライスの回路図を示す。
【0142】
【図8】12ビット・モードで動作しているデータ・マージ・ロジック・スライスのための信号のタイミング図を示す。
【0143】
【図9】6ビット・モードで動作しているデータ・マージ・ロジック・スライスのための信号のタイミング図を示す。
【0144】
【図10】ローカルデータ及びフィードスルー・データを共にマージしてシリアルデータストリーム出力にする場合の、バッファの初期化、トレーニング、及び、動作することのフローチャートを示す。

【特許請求の範囲】
【請求項1】
一以上のレーンを有する一のシリアル入出力インタフェースを備え、各レーンは、
一のローカル・データバスに結合した一のパラレル入力と、一の第1のクロック信号に結合された一のクロック入力と、一のロード信号に結合された一のロード/シフトバー入力と、を有し、前記ローカル・データバス上のパラレルデータを一の第1のシリアル出力上のシリアル化されたローカルデータにシリアル化する一の第1のパラレル入力シリアル出力(PISO)シフトレジスタと、
前記第1のシリアル出力に結合された一の第1のデータ入力と、フィードスルー・データを受信するための一の第2のデータ入力と、一のローカル・データ選択信号に結合された一の選択入力と、を有し、前記ローカル・データ選択信号に応じて前記シリアル化されたローカルデータとフィードスルー・データとを選択的にマージして一の多重化された出力上の一のシリアル・データストリームにする一の第1のマルチプレクサと、
前記シリアル・データストリームを受信するための前記多重化された出力に結合された一の入力を有し、一のシリアル・データリンク上へ前記シリアル・データストリームをドライブする一のトランスミッタと、
を備える集積回路。
【請求項2】
前記フィードスルー・データは、2ビット長であり、
前記第1のPISOシフトレジスタのパラレル入力は、少なくとも6ビット長で、前記第1のPISOシフトレジスタのシリアル出力は、2ビット長であり、
前記第1のマルチプレクサは、一の2ビット・バス・マルチプレクサであり、前記多重化された出力の前記シリアル・データストリームは2ビット長であり、
前記トランスミッタは、前記2ビット・シリアル・データストリームを受信して、それを前記シリアル・データリンク上への一のシングル・ビットシリアル・データストリームとしてシリアル化する
請求項1に記載の集積回路。
【請求項3】
各レーンは、
再同期データを受信するための一の第1のデータ入力と、再サンプリングされたデータを受信するための一の第2のデータ入力と、一のローカル・クロック・モード信号に結合された一の選択入力と、を含み、前記再サンプリングされたデータ又は前記ローカル・クロック・モード信号に応じたフィードスルー・データとしての前記再同期データを選択する一の第2のマルチプレクサを更に有する
請求項1に記載の集積回路。
【請求項4】
各レーンは、前記第1のマルチプレクサ及び前記第1のPISOシフトレジスタに結合され、前記第1のクロック信号及び一のマージ・イネーブル信号を受信し、マージ・イネーブル信号及び第1のクロック信号に応じて、前記シリアル化されたローカルデータ及び前記フィードスルー・データを前記シリアル・データストリームにマージする前記ローカル・データ選択信号を生成する制御ロジックを更に有する
請求項1に記載の集積回路。
【請求項5】
前記制御ロジックは、前記マージ・イネーブル信号に結合された一の第1のデータ入力及びロード信号に結合された一の選択入力を有する、一の第2マルチプレクサと、
前記第2のマルチプレクサに結合された一のDタイプフリップフロップと、を含むマージ制御ロジックを有し、前記Dタイプフリップフロップは、前記第2のマルチプレクサの一の出力に結合された一のデータ入力と、前記第1のクロック信号に結合された一のクロック入力と、前記第1のマルチプレクサの前記選択入力及び前記第2のマルチプレクサの一の第2のデータ入力に結合された一のデータ出力と、を有し、前記Dタイプフリップフロップは、前記データ出力上の前記ローカル・データ選択信号を生成するために、前記ロード信号及び前記第1のクロック信号に応じて、マージ・イネーブル信号を記録し、
前記第2のマルチプレクサは、前記ロード信号の一の反転信号に応じて、前記ローカル・データ選択信号を前記Dタイプフリップフロップの前記データ入力に再循環させる
請求項4に記載の集積回路。
【請求項6】
前記第1のPISOシフトレジスタのパラレル入力は、前記ローカル・データバス複数のビットの半分に結合され、
各レーンは、
前記ローカル・データバスの複数のビットの残りの半分に結合された一のパラレル入力と、前記第1のクロック信号に結合された一のクロック入力と、前記ロード信号に結合された一のロード/シフトバー入力と、前記第1のPISOシフトレジスタの一のシリアル入力に結合した一の第2のシリアル出力と、を含み、前記ローカル・データバスの前記複数のビットの前記残りの半分上のパラレルデータをシリアル化して、前記第1のPISOシフトレジスタの前記シリアル入力に結合するための前記第2のシリアル出力上のシリアル化されたローカルデータにする一の第2のパラレル入力シリアル出力(PISO)シフトレジスタを更に有する
請求項1に記載の集積回路。
【請求項7】
各レーンは、
前記ローカル・バス及び前記第1のPISOシフトレジスタの間で結合された一のバス・マルチプレクサを更に有し、前記バス・マルチプレクサは、前記ローカル・データバスの前記複数のビットの前記半分に結合された一の第1のデータ入力と、前記ローカル・データバスの前記複数のビットの残り半分に結合された一の第2のデータ入力と、前記第1のPISOシフトレジスタのパラレル入力に結合された一の多重化出力と、一のデータバス選択信号に結合された一の選択入力と、を有し、前記バス・マルチプレクサは、データバス選択信号に応じて、前記ローカル・データバスの前記複数のビットの前記半分又は前記ローカル・データバスの前記複数のビットの前記残りの半分に選択的に結合させて、前記第1のPISOシフトレジスタの前記パラレル入力にする、
請求項6に記載の集積回路。
【請求項8】
前記各レーンは、
前記マルチプレクサ及び前記第1のPISOシフトレジスタに結合された制御ロジックを更に有し、前記制御ロジックは、前記第1のクロック信号と、一のモード選択信号と、一のマージ・イネーブル信号と、を受信し、前記制御ロジックは、前記マージ・イネーブル信号と前記第1のクロック信号に応じて、前記シリアル化されたローカルデータと前記フィードスルー・データとをマージさせて、前記シリアル・データストリームにするための前記ローカル・データ選択信号と、を生成し、前記制御ロジックは、前記モード選択信号に応じて、前記データバス選択信号を更に生成する、
請求項7に記載の集積回路。
【請求項9】
前記ロード信号は、前記第2のPISOシフトレジスタのロード/シフトバーのバー入力に結合された一の初期のロード・パルス信号であり、
前記制御ロジックは、マージ制御ロジックを有し、それは、
前記マージ・イネーブル信号に結合された一の第1のデータ入力と、前記初期のロード・パルス信号に結合された一の選択入力と、を含む一の第2のマルチプレクサと、
前記第2のマルチプレクサに結合された一の第1のDタイプフリップフロップと、を含み、前記第1のDタイプフリップフロップは、前記第2のマルチプレクサの一の出力に結合された一のデータ入力と、前記第1のクロック信号に結合された一のクロック入力と、前記第1のマルチプレクサと前記第2のマルチプレクサの一の第2のデータ入力との前記選択入力に結合された一のデータ出力と、を有し、前記第1のDタイプフリップフロップは、前記初期のロード・パルス信号と前記データ出力上の前記ローカル・データ選択信号を生成するための前記第1のクロック信号に応じて、前記マージ・イネーブル信号を記録し、
前記第2のマルチプレクサは、前記初期のロード・パルス信号が一の論理上のローになるのに応じて、前記ローカル・データ選択信号を前記第1のDタイプフリップフロップのデータ入力に再循環させ、前記マージ・イネーブル信号は、前記初期のロード・パルス信号が一の論理上のハイになるのに応じて前記第1のDタイプフリップフロップに結合され、
前記制御ロジックは、モード制御ロジックを更に有し、それは、
一の第3のマルチプレクサを含み、前記第3のマルチプレクサは、前記初期のロード・パルス信号に結合された一の第1のデータ入力を含み、
一の第2のDタイプフリップフロップを含み、前記第2のDタイプフリップフロップは、前記第3のマルチプレクサに結合され、前記第3のマルチプレクサの一の出力に結合された一のデータ入力と、前記第1のクロック信号に結合された一のクロック入力と、一の反転バス・モード信号に結合された一のクリア入力と、前記バス・マルチプレクサの前記選択入力に結合された一のデータ出力と、前記第3マルチプレクサの一の第2のデータ入力と、を含み、前記第2のDタイプフリップフロップは、前記反転バス・モード信号、前記初期のロード・パルス信号、及び、前記第1のクロック信号に応じて、前記データ出力上の前記データバス選択信号を生成させ、
一のORゲートを含み、前記ORゲートは、前記初期のロード・パルス信号に結合された一の第1の入力と、一の遅れたロード・パルス信号に結合された一の第2の入力と、を有し、前記ORゲートは、前記初期のロード・パルス信号と、前記遅れたロード・パルス信号を、論理的にOR演算し、
一のANDゲートを含み、前記ANDゲートは、前記ORゲートの一の出力に結合された一の第1の入力と、一のバス・モード信号に結合された一の第2の入力と、前記第3のマルチプレクサの一の選択入力に結合された一の出力と、を有し、
一のインバータを含み、前記インバータは、バス・モード信号に結合された一の入力と、前記第2のDタイプフリップフロップの前記クリア入力が結合された一の出力、を有し、前記インバータは、バス・モード信号に応じて、前記反転バス・モード信号を生成し、
一の第4のマルチプレクサを含み、前記第4のマルチプレクサは、前記初期のロード・パルス信号に結合された一の第1のデータ入力、前記ORゲートの前記出力に結合する一の第2のデータ入力、前記バス・モード信号に結合する一の制御入力、及び、前記第1のPISOシフトレジスタのロード/シフトバーのバー入力に結合する一の多重化された出力を有し、
前記第3マルチプレクサは、前記逆バス・モード信号に応じて、データバス選択信号を、前記第2のDタイプフリップフロップのデータ入力に再循環させ
前記第4のマルチプレクサは、前記初期のロード・パルス信号か、又は、前記初期のロード・パルス信号と前記遅れたロード・パルス信号との両方を、前記第1のPISOシフトレジスタのロード/シフトバーのバー入力に、選択的に結合させる。
請求項8に記載の集積回路。
【請求項10】
前記集積回路は、一のバッファ集積回路であり、
前記ローカルバスは、12ビット長であり、
各レーンの前記バス・マルチプレクサは、前記データバス選択信号に応じて、前記ローカルバスのより下位の6ビットを前記第1のPISOシフトレジスタに選択的に結合し、前記ローカルバスのより上位の6ビットを前記第1のPISOシフトレジスタに選択的に結合する
請求項9に記載の集積回路。
【請求項11】
データのアイドル状態の複数のフレーム間に散在するデータの複数のフィードスルーフレームを表す一の入力シリアルデータストリームを受信することと、
データの複数のローカルフレームとデータの前記複数のフィードスルーフレームとを、一のマージ・イネーブル信号に応じて、前記入力シリアルデータストリームをデコードせずに、共にマージして一の出力シリアルデータストリームにすることと、
一のノースバウンド・データ出力上の前記出力シリアルデータストリームを、一の次のメモリーモジュール又は一のメモリーコントローラに送信すること、
を備えるメモリーモジュールのための方法。
【請求項12】
データの前記複数のローカルフレームは、前記入力シリアルデータストリーム中のデータの複数のアイドル状態のフレームを置換することにより、前記出力シリアルデータストリームにマージされる、
請求項11に記載の方法。
【請求項13】
前記入力シリアルデータストリームを前記受信することは、
前記入力シリアルデータストリーム中のデータの前記複数のビットをサンプリングすることを有する、
請求項11に記載の方法。
【請求項14】
前記入力シリアルデータストリームを前記受信することは、
前記入力シリアルデータストリーム中のデータの前記複数のビットを再同期することを有する、
請求項11に記載の方法。
【請求項15】
前記データの複数のローカルフレームとデータの前記複数のフィードスルーフレームとを共にマージングすることは、
データの前記複数のローカルフレームの複数のパラレルビットをデータの複数のシリアルビットにシリアル化することと、
データの前記複数のローカルフレームのデータの前記複数のシリアルビットと、データの前記複数のフィードスルーフレームの複数のシリアルビットとを、前記マージ・イネーブル信号に応じて、多重化して前記出力シリアルデータストリームの複数のシリアルビットにすること、を有する
請求項11に記載の方法。
【請求項16】
データの一のローカルフレームは、一のバス・モード信号に応じて、一のローカルバスの上で、選択的にパラレルで6ビット又は12ビットの複数のパケットを受信する
請求項11に記載の方法。
【請求項17】
命令、及び、プロセス・データを実行するための一のプロセッサと、
前記プロセッサに結合され、一のメモリーコントローラと、を備え、
前記メモリーコントローラは、前記プロセッサから書込みデータを有するメモリ書込み命令を受信し、前記プロセッサからメモリ読出し命令を受信し、読出しデータを前記プロセッサに供給し、
メモリの少なくとも一のバンクは、前記メモリーコントローラに結合され、前記メモリの少なくとも一のバンクが、一つ以上のメモリモジュールを有し、各前記一つ以上のメモリモジュールは、
一のバッファ集積回路と、
少なくとも一のメモリ集積回路と、を含み、
前記バッファ集積回路は、
前記メモリーコントローラから前記書込みデータを受信するための、一つ以上のシリアルレーンを有する一のサウスバウンド・シリアル入出力インタフェースと、
一のノースバウンド・シリアル入力と一のノースバウンド・シリアル出力の一つ以上のシリアルレーンを有する一のノースバウンド・シリアル入出力インタフェースと、を含み、前記ノースバウンド・シリアル入出力インタフェースは、前記読出されたデータを前記メモリーコントローラに送信し、前記ノースバウンド・シリアル入出力インタフェースは、各シリアル・レーン用に、
一のローカル・データバスの複数のパラレルビットに結合された一のパラレル入力、一の第1のクロック信号に結合された一のクロック入力、一のロード信号に結合された一のロード/シフトバー入力、を有する一のパラレル/シリアル・コンバータを含み、前記パラレル/シリアル・コンバータは、前記ローカル・データバス上のデータの前記複数のパラレルビットをシリアル化して、一の第1のシリアル出力上のシリアル化されたローカルデータにし、
前記パラレル/シリアル・コンバータの前記シリアル出力に結合された一の第1のデータ入力と、前記ノースバウンド・シリアル入力からシリアル・フィードスルー・データを受信するための一の第2のデータ入力と、一のローカル・データ選択信号に結合された一の選択入力とを有する一の第1のマルチプレクサを含み、前記マルチプレクサは、前記ローカルデータ選択信号に応じて、前記シリアル化されたローカルデータと前記シリアル・フィードスルー・データとを選択的にマージして前記ノースバウンド・シリアル出力上の一のシリアル・データストリームにする、
を備えるシステム。
【請求項18】
前記ノースバウンド・シリアル入出力インタフェースの各シリアル・レーンは、
前記シリアルデータストリームを受信するために、前記第1のマルチプレクサの前記多重化された出力に結合された一の入力を有する一のトランスミッタ、を更に備え、
前記トランスミッタは、
前記シリアルデータストリームを、前記メモリーコントローラに向けて、前記ノースバウンド・シリアル・データ出力上へドライブする、
請求項17に記載のシステム。
【請求項19】
メモリの各バンクのために、
前記メモリーコントローラは、
前記一つ以上のメモリモジュールからシリアルデータの一つ以上のレーンを受信するための一のノースバウンド・シリアル入力インタフェースと、
前記一つ以上メモリモジュールにシリアルデータの一つ以上のレーンを送信するための一のサウスバウンド・シリアル出力インタフェースと、を有する
請求項17に記載のシステム。
【請求項20】
前記ノースバウンド・シリアル入出力インタフェースの各シリアル・レーンは、
前記マルチプレクサと、前記第1のパラレル/シリアル・コンバータに結合された制御ロジック、を更に有し、前記制御ロジックは、前記第1のクロック信号と、一のマージ・イネーブル信号を受信し、前記制御ロジックは、前記マージ・イネーブル信号と前記第1のクロック信号に応じて、前記シリアル化されたローカルデータと、前記シリアル・フィードスルー・データをマージして前記シリアルデータストリームにするための前記ローカルデータ選択信号を生成する
請求項17に記載のシステム。
【請求項21】
前記ノースバウンド・シリアル入出力インタフェースの各シリアル・レーンは、
再同期されたシリアル・データを受信するための一の第1のデータ入力、再サンプリングされたシリアル・データを受信するための一の第2のデータ入力、一のローカル・クロック・モード信号に結合された一の選択入力、を有する一の第2のマルチプレクサ、を更に有し、
前記第2のマルチプレクサは、前記ローカル・クロック・モード信号に応じて、前記シリアル・フィードスルー・データとして、前記再サンプリングされたシリアル・データ又は前記再同期されたシリアル・データを選択する
請求項17に記載のシステム。
【請求項22】
一のエッジ・コネクションを有する一のプリント回路基板と、
前記プリント回路基板に結合された複数のメモリ集積回路と、
前記複数のメモリ集積回路と、前記エッジ・コネクションに、更に電気的に結合され、一のサウスバウンド入出力インタフェースと、一のノースバウンド入出力インタフェースとを有するプリント回路基板に結合された一のバッファ集積回路と、を備え、前記ノースバウンド入出力インターフェースは、複数のシリアルデータストリームの複数のレーンのための複数のマージ・ロジックスライスを有するデータ・マージ・ロジック、を含み、各マージ・ロジックスライスは、
一のローカル・データバスに結合された一のパラレル入力、一の第1のクロック信号に結合された一のクロック入力、一の第1のロード信号に結合された一のロード/シフトバー入力、を含み、前記ローカル・データバス上のパラレルデータをシリアル化して一の第1のシリアル出力上のシリアル化されたローカルデータにする一の第1のパラレル入力シリアル出力(PISO)シフトレジスタを含み、
一の第1のマルチプレクサは、前記第1のPISOシフトレジスタの前記第1のシリアル出力に結合された一の第1のデータ入力、シリアル化されたフィードスルー・データを受信するための一の第2のデータ入力、一のローカル・データ選択信号に結合された一の選択入力、を有し、前記第1のマルチプレクサは、前記ローカルデータ選択信号に応じて、前記シリアル化されたローカルデータと、前記シリアル化されたフィードスルー・データとを選択的にマージして一の多重化された出力上の一のシリアル・データストリームにする、
バッファー付きメモリーモジュール。
【請求項23】
前記ノースバウンド入出力インターフェースは、
各マージ・ロジック・スライスの前記第1のマルチプレクサの一の対応する出力に結合された一の入力を更に有し、前記シリアルデータストリームを受信し、それを一のシリアル・データリンク上へドライブする複数のトランスミッタを有する
請求項22に記載のバッファー付きメモリーモジュール。
【請求項24】
各マージロジック・スライスは、
再同期されたシリアル・データを受信するための一の第1のデータ入力、再サンプリングされたシリアル・データを受信するための一の第2のデータ入力、一のローカル・クロック・モード信号に結合された一の選択入力、を有し、前記ローカル・クロック・モード信号に応じて、シリアル化されたフィードスルー・データとして、前記再サンプリングされたシリアル・データ又は再同期されたシリアル・データを選択する一の第2のマルチプレクサ、を更に有する
請求項22に記載のバッファー付きメモリーモジュール。
【請求項25】
各マージ・ロジック・スライスは、
第1のマルチプレクサと前記第1のPISOシフトレジスタに結合され、前記第1のクロック信号と一のマージ・イネーブル信号とを受信し、前記マージ・イネーブル信号と前記第1のクロック信号とに応じて、前記シリアル化されたローカルデータとシリアル化されたフィードスルー・データとをマージして前記シリアルデータストリームにするための前記ローカルデータ選択信号を生成する制御ロジックを更に備える
請求項24に記載のバッファー付きメモリーモジュール。
【請求項26】
メモリの一のバンクを形成するために共にデイジーチェーンでつながれた複数のバッファー付きメモリモジュール、を備え、各バッファ付きメモリーモジュールは、
複数のメモリ集積回路と、
前記複数のメモリ集積回路に結合する一のバッファ集積回路と、を有し、前記バッファ集積回路は、
一のメモリーコントローラ又は一の前のバッファー付きメモリーモジュールから、一の次のバッファー付きメモリーモジュールへの、サウスバウンド・シリアル・データを受信して再送信するための、一のサウスバウンド入出力シリアルインターフェース、
少なくとも一のバッファー付きメモリーモジュールから、シリアル化されたフィードスルー・データとして、ノースバウンド・シリアル・データ受信して前記メモリーコントローラに向けてそれを再送信するための一のノースバウンド入出力シリアルインターフェース、を含み、前記ノースバウンド入出力シリアルインターフェースは、受信されたノースバウンド・シリアルデータをデコードせずに、前記複数のメモリ集積回路からのローカルデータをシリアル化して、シリアル化されたフィードスルー・データと、それをマージして一のノースバウンド・シリアルデータストリームにし、前記ノースバウンド入出力シリアルインターフェースは、更に、前記メモリーコントローラに向かう、シリアル化されたフィードスルー・データと、シリアル化されたローカルデータと、を含む前記ノースバウンド・シリアル・データストリームを送信し、
一の書込みデータ先入れ先出し方式(FIFO)バッファは、サウスバウンド入出力シリアルインターフェースに結合され、前記書込みデータFIFOバッファは、前記サウスバウンド入出力シリアルインターフェースからの書込みデータを、一の書込みコマンドにより、前記バッファー付きメモリーモジュールのアドレスが指定されて記憶し、
一のメモリ入出力インタフェースは、前記複数のメモリ集積回路と前記書込みデータFIFOバッファに結合され、前記メモリ入出力インタフェースは、前記書込みデータFIFOバッファに記憶された書込みデータを、前記複数のメモリ集積回路の少なくとも一つに転送し、一の読出しデータFIFOバッファは、ノースバウンド入出力シリアルインターフェースと前記メモリ入出力インタフェースに結合され、前記読出しデータFIFOバッファは、前記複数のメモリ集積回路の少なくとも一つからの読出しデータを、一の読出されたコマンドにより前記バッファー付きメモリーモジュールからアドレスが指定された前記ローカルデータとして、記憶し、
前記メモリ入出力インタフェースは、前記複数のメモリ集積回路の少なくとも一つからの読出しデータを前記読出しデータFIFOバッファに転送する
メモリシステム。
【請求項27】
前記複数バッファ付きメモリーモジュールの少なくとも一つに結合されたメモリーコントローラ、を更に有し、
前記メモリーコントローラは、
前記サウスバウンド・シリアル・データストリームを前記複数のバッファー付きメモリモジュールの少なくとも一つに送信する一のサウスバウンド出力シリアルインターフェースと、
前記複数のバッファー付きメモリモジュールの少なくとも一つからの前記ノースバウンド・シリアル・データストリームを受信する一のノースバウンド入力シリアルインターフェースと、を含む
請求項26に記載のメモリシステム。
【請求項28】
前記バッファ集積回路の前記ノースバウンド入出力シリアルインターフェースは、
一の第3のFIFOバッファと、
前記第3のFIFOバッファに結合されたデータ・マージ・ロジックと、を有し、前記データ・マージ・ロジックは、複数のマージ・ロジックスライスを含み、各マージ・ロジックスライスは、
一の第1のパラレル入力シリアル出力(PISO)シフトレジスタを含み、前記第1のPISOシフトレジスタは、一のローカル・データバスに結合された一のパラレル入力と、一の第1のクロック信号に結合された一のクロック入力と、一の第1のロード信号に結合された一のロード/シフトバー入力と、を有し、前記第1のPISOシフトレジスタは、前記ローカル・データバス上のパラレルデータをシリアル化して一の第1のシリアル出力上のシリアル化されたローカルデータにする、
一の第1のマルチプレクサを含み、前記第1のマルチプレクサは、前記第1のPISOシフトレジスタの前記第1のシリアル出力に結合された一の第1のデータ入力、シリアル化されたフィードスルー・データを受信するための一の第2のデータ入力、一のローカル・データ選択信号に結合された一の選択入力、を有し、前記第1のマルチプレクサは、前記ローカルデータ選択信号に応じて、前記シリアル化されたローカルデータとシリアル化されたフィードスルー・データとを選択的にマージして一の多重化された出力上の一のシリアル・データストリームにし、
前記データ・マージ・ロジックに結合された複数のトランスミッタを含み、前記複数のトランスミッタの各々は、各マージ・ロジック・スライス内の前記第1のマルチプレクサの一の対応する出力に結合された一の入力を有し、前記複数のトランスミッタは、前記シリアルデータストリームを受信し、それを一のシリアル・データリンク上へドライブする
請求項26に記載のメモリシステム。
【請求項29】
前記データマージ・ロジックの各マージ・ロジック・スライスは、
再同期されたシリアル・データを受信するための一の第1のデータ入力、再サンプリングされたシリアル・データを受信するための一の第2のデータ入力、一のローカル・クロック・モード信号に結合された一の選択入力、を有する一の第2のマルチプレクサ、を更に有し、前記第2のマルチプレクサは、前記ローカル・クロック・モード信号に応じて、シリアル化されたフィードスルー・データとして、前記再サンプリングされたシリアル・データ又は再同期されたシリアル・データを選択する
請求項28に記載のメモリシステム。
【請求項30】
前記データマージ・ロジックの各マージ・ロジック・スライスは、
前記第1のマルチプレクサと前記第1のPISOシフトレジスタに結合され、前記第1のクロック信号と一のマージ・イネーブル信号を受信し、前記制御ロジックは、前記マージ・イネーブル信号と前記第1のクロック信号に応じて、前記シリアル化されたローカルデータと前記シリアル化されたフィードスルー・データをマージして前記シリアルデータストリームにするために、前記ローカルデータ選択信号を生成する制御ロジックを更に有する
請求項28に記載のメモリシステム。


【図1A】
image rotate

【図1B】
image rotate

【図2A】
image rotate

【図2B】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6−1】
image rotate

【図6−2】
image rotate

【図7A】
image rotate

【図7B】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate


【公表番号】特表2008−529175(P2008−529175A)
【公表日】平成20年7月31日(2008.7.31)
【国際特許分類】
【出願番号】特願2007−553363(P2007−553363)
【出願日】平成18年1月27日(2006.1.27)
【国際出願番号】PCT/US2006/003445
【国際公開番号】WO2006/083899
【国際公開日】平成18年8月10日(2006.8.10)
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.フロッピー
【出願人】(591003943)インテル・コーポレーション (1,101)
【Fターム(参考)】