(57)【要約】【課題】完全バッファリングされたＤＩＭＭ読み出しデータによる書き込み確認の代替を提供する。【解決手段】メモリコントローラは、単一の非エラー応答によってリプレイキューから二つのエントリーをリタイアさせるスキームを用いる。リプレイキューにおけるエントリーが有利に、従来のシステムにおけるよりも早くにリタイアされ得るので、リプレイキューのサイズが最少化される。【選択図】図２
2009515262.tif 000002
【特許請求の範囲】
【請求項１】
ポイントツーポイントメモリバスを介してメモリモジュールから送信される単一の応答に応じて、リタイアメントキューにおける少なくとも二つのエントリーをリタイアさせる制御ロジックを含むメモリコントローラ。
【請求項２】
前記少なくとも二つのエントリーのうち、第一エントリーは、第一メモリモジュールに読み出しを実行させる第一メモリコマンドに対応し、
前記少なくとも二つのエントリーのうち、第二エントリーは、第二メモリモジュールに書き込みを実行させる第二メモリコマンドに対応する、
請求項１に記載のメモリコントローラ。
【請求項３】
前記第一メモリモジュールは、前記メモリモジュールであり、前記第二メモリモジュールのサウス側に存在する、
請求項２に記載のメモリコントローラ。
【請求項４】
前記単一の応答は、前記第一エントリーと前記第一メモリコマンドに対応する、
請求項３に記載のメモリコントローラ。
【請求項５】
前記単一の応答は、前記第一メモリモジュールから読み出されたデータを含む、
請求項４に記載のメモリコントローラ。
【請求項６】
前記第一メモリコマンドは、前記第一メモリモジュールの読み出しの実行と並行して前記第二メモリモジュールに書き込みを実行することを指示する、
請求項５に記載のメモリコントローラ。
【請求項７】
第一メモリモジュールの読み出しを行う第一メモリコマンドを送信する段階と、
前記第一メモリモジュールよりノース側に存在する第二メモリモジュールの書き込みを行う第二メモリコマンドを送信する段階と、
前記第一メモリコマンドに対応する第一キューエントリーと、前記第二メモリコマンドに対応する第二キューエントリーとを指定する段階と、
前記第一メモリモジュールから発生する一の応答に応じて両キューエントリーをリタイアさせる段階と
を含む方法。
【請求項８】
前記応答は、前記第一メモリモジュールから読み出されたデータを含む、
請求項７に記載の方法。
【請求項９】
前記応答は、前記第二メモリコマンドに対応しない、
請求項７に記載の方法。
【請求項１０】
前記第二メモリコマンドに応答した書き込み確認を受信しない、
請求項７に記載の方法。
【請求項１１】
前記第一メモリモジュールの読み出しの実行と並行して前記第二メモリモジュールにデータを書き込む段階を更に含む請求項７に記載の方法。
【請求項１２】
前記第一メモリコマンドは、バースト長８の読み出し、又はバースト長４のオープンページ読み出しの連続（ｂａｃｋ  ｔｏ  ｂａｃｋ）ペアを含む、
請求項７に記載の方法。
【請求項１３】
サウスバウンドメモリ読み出しコマンドを受信し、該サウスバウンドメモリ読み出しコマンドをメモリモジュール用のメモリモジュールバッファに転送し、メモリ書き込みコマンドを受信し、前記メモリ読み出しコマンドに対応するノースバウンド応答をメモリコントローラに転送し、前記メモリ書き込みコマンドに対応するエラーでない応答を送信するかを判断する制御ロジックを含むメモリ装置。
【請求項１４】
前記メモリコントローラは、前記ノースバウンド応答に基づいて書き込みが発生したと判断する、
請求項１３に記載のメモリ装置。
【請求項１５】
前記応答は、前記メモリモジュールから読み出されたデータを含む、
請求項１３に記載のメモリ装置。
【請求項１６】
前記メモリコントローラは、前記メモリモジュールから読み出されたデータを含む前記ノースバウンド応答に応じて、リプレイキューにおける二つのエントリーをリタイアさせる、
請求項１３に記載のメモリ装置。
【請求項１７】
第一メモリコマンドを第一メモリモジュールに送信する制御ロジックを含み、
前記第一メモリモジュールは、前記第一メモリコマンドに応答して読み出しを実行し、
前記制御ロジックは、第二メモリコマンドを、前記第一メモリモジュールよりサウス側に存在する第二メモリモジュールに送信し、
前記第二メモリモジュールは、前記第二メモリコマンドに応答して書き込みを実行し、
前記制御ロジックは、前記第一メモリコマンドに対応する第一キューエントリーと、前記第二メモリコマンドに対応する第二キューエントリーとを指定し、
前記制御ロジックは、前記第一メモリモジュールから発生する一の応答に応じて両キューエントリーをリタイアさせる、
システム。
【請求項１８】
前記応答は、前記第一メモリモジュールから読み出されたデータを含む、
請求項１７に記載のシステム。
【請求項１９】
前記応答は、前記第二メモリコマンドに対応しない、
請求項１７に記載のシステム。
【請求項２０】
前記第二メモリコマンドに応じた書き込み確認は受信されない、
請求項１７に記載のシステム。
【請求項２１】
更に、前記制御ロジックは、前記第一メモリモジュールの読み出しの実行と並行して前記第二メモリモジュールにデータを書き込む、
請求項１７に記載のシステム。
【請求項２２】
前記第一メモリコマンドは、バースト長８の読み出し、又はバースト長４の読み出しの連続（ｂａｃｋ  ｔｏ  ｂａｃｋ）ペアを含む、
請求項１８に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、全般的にメモリシステム、コンポーネント、及び方法に関し、特に、リプレイキューにおけるエントリーを効率的にリタイアさせるための完全にバッファリングされたメモリコントローラに関する。
【背景技術】
【０００２】
従来のコンピュータメモリサブシステムは、メモリモジュールを用いて実現されることが多い。コンピュータ回路基板は、プロセッサにメモリコントローラを集積するか、あるいはプロセッサを別体のメモリコントローラに結合することにより組み立てられる。集積型のメモリコントローラあるいは別体のメモリコントローラを備えるプロセッサは、メモリバスにより一以上のメモリモジュール電気コネクタに接続される（バスは、回路基板に永久的に実装される後付けのメモリにも接続される）。システムメモリは、電気コネクタに挿入されるメモリモジュールの数とそれらの記憶容量に従って構成される。
【０００３】
プロセッサの速度が上昇するにつれ、メモリバス速度はマルチポイント（「マルチドロップ」と呼称されることが多い）メモリバスモデルでは最早実施可能でないレベルにまで圧迫されている。図１を参照すると、当面の解決策の一つにおいては、バッファを備えるメモリモジュールを用いた「ポイントツーポイント」メモリバスモデルが用いられている。図１において、コンピュータシステム１００はホストプロセッサ１０５を含み、ホストプロセッサ１０５は自身を多様な周辺機器（システムメモリ以外は不図示）へと接続するメモリコントローラ１１０とフロントサイドバス１０８を介して通信する。メモリコントローラ１１０は、高速ポイントツーポイントバス１１２を介して第一のバッファ付きメモリモジュール０と通信する。第二のバッファ付きメモリモジュール１は、システム１００に含まれる場合、第二の高速ポイントツーポイントバス１２２を第一のメモリモジュール０と共有する。メモリモジュール１の後段に更に高速ポイントツーポイントバスとバッファ付きメモリモジュールを連結してシステムメモリの容量を更に増やすこともできる。
【０００４】
バッファ付きメモリモジュール０は、これらメモリモジュールの代表的なものである。メモリモジュールバッファ（ＭＭＢ）１４６により、モジュール０はホスト側メモリチャネル１１２とダウンストリームメモリチャネル１２２に接続される。複数のメモリデバイス（ダイナミックランダムアクセスメモリデバイス、つまり「ＤＲＡＭ」、例としてＤＲＡＭ１４４を図示する）は、メモリデバイスバス（図１においては不図示）を介してメモリモジュールバッファ１４６に接続され、システム１００においてアドレス指定可能な読み出し／書き込みメモリとして機能する。
【０００５】
メモリ転送の典型例として、メモリモジュール１上の物理メモリに対応するメモリアドレスへとプロセッサ１０５がアクセスする必要がある場合を考える。メモリリクエストがメモリコントローラ１１０へと発行され、それを受けてメモリコントローラ１１０はメモリコマンドをメモリモジュール１に宛ててホストメモリチャネル１１２へと送出する。また、メモリモジュール１１０は、メモリコマンドに対応する、リプレイキュー１１１へのエントリー１１５を指定する。キュー１１１においては、エントリー１１５の前に、先行メモリコマンドに対応する先行エントリーが存在する場合もある。
【０００６】
処理の容易性を図るべく、二つの条件を満足する場合にだけエントリー１１５をキュー１１１からリタイアさせてよいとされる。第一に、メモリコントローラ１１０は、エントリーに対応したエラーでない応答を得られた場合にだけ当該エントリーをリタイアさせる。第二に、メモリコントローラ１１０は、先行エントリーの全てがリタイアされている場合にだけエントリーをリタイアさせる。
【０００７】
バッファ付きメモリモジュール０のＭＭＢ１４６はコマンドを受信し、必要であればそれを再同期処理してバッファ付きメモリモジュール１のＭＭＢ１４８に向けてメモリチャネル１２２へと再送出する。ＭＭＢ１４６はコマンドが自身に宛てられていることを検出すれば、それを復号化して、ＤＲＡＭコマンドとシグナリングを当該バッファの制御下にあるＤＲＡＭへと伝送する。メモリ転送が成功すれば、ＭＭＢ１４８はメモリモジュール０を介してメモリコントローラ１１０へと非エラー応答を返送する。メモリコントローラ１１０は、非エラー応答を受信するとエントリー１５をリプレイキュー１１１からリタイアさせるが、それは先行エントリーの全てが既にリタイアされている場合だけである。
【０００８】
経済上の理由によりリプレイキュー１１１のサイズは制限される。したがって、可能な限り迅速にエントリーをリタイアさせる必要がある。高速ポイントツーポイントバス１１２のノースバウンドのバンド幅に制限があるために書き込み確認（アクノレッジ）等の非エラー応答の受信が遅れる場合がある。このような書き込み確認の受信の遅れにより、エントリー１１５の後にリプレイキュー１１１に入力された後続エントリーのリタイアが遅れる場合がある。あるエントリーとその後続エントリーのリタイアが遅れることによりリプレイキュー１１１において新たなエントリー用に用意されるスペースの量が制限される。
【発明の開示】
【０００９】
上記の制限によりメモリコントローラのリプレイキューにおける未使用スペースの量が制限される。以下の開示は、当該問題およびその他の問題を克服するものである。
【図面の簡単な説明】
【００１０】
【図１】図１は、従来のメモリコントローラを示す図である。
【００１１】
【図２】図２は、単一の非エラー応答に応じてリプレイキューから二つのエントリーをリタイアさせるメモリコントローラの図である。
【００１２】
【図３】図３は、図２のメモリコントローラがエントリーをリタイアさせる方法を示すフローチャートである。
【００１３】
【図４Ａ】図４Ａは、図２に説明する動作を示すタイミング図である。
【００１４】
【図４Ｂ】図４Ｂは、図２のメモリコントローラの別の動作を示すタイミング図である。
【発明を実施するための最良の形態】
【００１５】
図２は、単一の非エラー応答に応じて二つのリプレイキューエントリーをリタイアさせるメモリコントローラ２００の一例を示す。メモリコントローラ２００は、発行エンジン２０１、メモリ２０２、及びリプレイキュー２０３を含む。発行エンジン２０１は、図３のフローチャートに記載する機能を実行する。図２に示す信号のタイミングを図４ａのタイミング図に示す。
【００１６】
メモリコントローラ２００は、メモリコマンド２０４ａをメモリモジュール１へと送信する。本例においては、メモリコマンド２０４ａは、複数サイクルに亘る読み出し動作の開始アドレスを含むバースト長８の読み出しコマンドである。その他の例においては、メモリコマンドはいかなる種類の読み出しコマンドであってもよい。メモリコマンド２０４ａに対応するエントリー２０４ｂがリプレイキュー２０３において生成される。メモリコマンド２０４ａを受信すると、メモリモジュール１は開始アドレスから開始してデータの読み出しを始める。メモリモジュール１はデータの読み出しを実行しつつ読み出したデータを非エラーメモリ応答２０４ｃに含めて返送する。
【００１７】
次に、メモリコントローラ２００はメモリコマンド２０５ａをメモリモジュール１のノース側に存在するメモリモジュール０へと送信する。本例においては、メモリコマンド２０５ａは、四つの連続ストローブにおいてメモリモジュール０へと書き込みデータを供給するバースト長４の書き込みコマンドである。その他の例においては、メモリコマンド２０５ａはいかなる種類の書き込みコマンドであってもよい。メモリコマンド２０５ａに対応するエントリー２０５ｂがリプレイキュー２０３において生成される。エントリー２０５ｂはエントリー２０４ｂに続くエントリーである。メモリコマンド２０５ａを受信すると、メモリモジュール０はメモリコマンド２０５ａとともに供給されるデータの書き込みを開始する。メモリモジュール０は、メモリモジュール１がメモリコマンド２０４ｂに応じてデータを読み出すのと並行してデータの書き込みを開始する。
【００１８】
メモリコントローラ２００は、メモリコマンド２０６ａをメモリモジュール０のサウス側に存在するメモリモジュール１へと送信する。メモリコマンド２０６ａは、メモリコマンド２０４ａに類似したバースト読み出しコマンドである。メモリコマンド２０６ａに対応するエントリー２０６ｂがリプレイキュー２０３において生成される。
【００１９】
メモリモジュール０は、バースト長４の書き込みコマンド２０５ａに応じたデータ書き込みを完了する。しかし、メモリモジュール１はメモリモジュール０のメモリモジュールバッファ（ＭＭＢ）２４５を介して読み出しデータの送信を継続しているので、メモリモジュール０が非エラー応答２０５ｃを送信するのに当てることができるバンド幅が存在しない。読み出しデータを含む非エラー応答２０４ｃがノースバウンド方向の全バンド幅を消費してしまう。したがって、メモリコントローラ２００は、この時点においては書き込み確認を含んだ非エラー応答を確認することはない。
【００２０】
メモリコマンド２０４ａに応じたデータの読み出し後、メモリモジュール１はメモリコマンド２０４ｃに応じたデータの読み出しを開始する。メモリモジュール１はデータの読み出しを実行しつつ、読み出したデータを非エラーメモリ応答２０６ｃに含めて返送する。非エラー応答２０６ｃはノースバウンド方向の全バンド幅を消費し、非エラー応答２０４ｃの直後に送信される。従来のＦＢＤプロトコルによると、メモリコントローラ２００は、バンド幅に空きが出るまで非エラー応答２０５ｃが確認されるのを待ち続けなければならない。本明細書において用いるＦＢＤプロトコルは、たとえばＪＥＤＥＣのウェブサイトにおけるＦＢＤ仕様のいずれかのバージョンである。非エラー応答２０５ｃには、待機パターン、書き込み確認等の明示的な信号が含まれる。
【００２１】
メモリコントローラ２００は、非エラー応答２０４ｃ受信する。処理中の先行エントリーが存在しないので、エントリー２０４ｂはリプレイキュー２０３からリタイアされる。メモリコントローラ２００はエントリー２０５ｂに対応する明示的な非エラー応答２０５ｃをまだ受信していないが、エントリー２０５ｂに対応しない非エラー応答２０４ｃに応じてエントリー２０５ｂをもリタイアさせてよい。これは、メモリコントローラ２００が非エラー応答２０５ｃを待ち続けなければならない従来のＦＢＤプロトコルとは対照的である。したがって、単一の非エラー応答２０４ｃに応じて二つのエントリーがリタイアされ得る。
【００２２】
エントリー２０５ｂは、以下の事象の発生により、対応しない非エラー応答２０４ｃの受信に応じてリタイアさせてよい。第一に、エントリー２０５ｂは、読み出し処理されたメモリモジュールのノース側に存在するメモリモジュールへの書き込みに対応する。第二に、書き込みは、サウス側のメモリモジュールからの読み出しと並行して発生した。第三に、メモリコマンド２０５ａに対応する警告が受信されなかった。メモリコマンド２０５ａに対応する警告は、もし存在すれば非エラー応答２０４ｃに優先する。したがって、非エラー応答２０４ｃの受信は、警告が発行されず、メモリコマンド２０５ａが成功したに相違ないであろうことについて、メモリコントローラ２００に対し、暗黙的な信号となる。したがって、エントリー２０５ｂは有利にも対応する非エラー応答２０５ｃが受信されるより早くにリタイアさせてよい。
【００２３】
次に、非エラー応答２０６ｃが受信される。メモリキュー２０３には先行エントリーが存在しないので、有利にもエントリー２０６ｂを即座にリタイアさせてよい。メモリコントローラ２００がエントリー２０５ｂに対応する非エラー応答２０５ｃを待機していてエントリー２０５ｂがリタイアされていなければ、先行エントリー２０５ｂが存在するので２０６ｂのリタイアが遅れる。したがって、メモリコントローラ２００は、従来のメモリコントローラに比較して早くにエントリー２０５ｂと２０６ｂをリタイアさせる。
【００２４】
最後に、書き込み確認を含む非エラー応答２０５ｃを受信してよい。メモリコントローラ２００はメモリコマンド２０５ａが成功していることを既に示唆されているので、明示的な非エラー応答２０５ｃの確認をせずにおいてもよい。上記の事象が存在することによりオプションとして明示的な書き込み確認２０５ｃを無視することにより、サウスバウンドの利用率（ｏｃｃｕｐａｎｃｙ）が増大する利点が得られる。サウスバウンドの利用率の増大により、同様なリプレイキューの制限を有する従来のシステムよりも最大バンド幅が５０％も増える。
【００２５】
上記のプロセスを図３のフローチャートに示す。図３を参照すると、ブロック３００においてメモリコントローラ２００は読み出しコマンドを発行して第一メモリモジュールの読み出しを実行する。ブロック３０１において、書き込みコマンドを発行して、第一メモリモジュールよりもノース側の第二メモリモジュールに対して並列に書き込みを実行する。次に、ブロック３０２において、メモリコントローラ２００は読み出しコマンドに対応する第一のエントリーをリプレイキュー２０３において生成する。ブロック３０３において、書き込みコマンドに対応する第二のエントリーを生成する。
【００２６】
次に、ブロック３０４において、メモリコントローラ２００は読み出しコマンドに対応する非エラー応答を待機する。ブロック３０５において非エラー応答が受信されれば、メモリコントローラ２００はブロック３０６Ａにおいて両エントリーをリタイアさせる。非エラー応答が受信されなければ、メモリコントローラ２００はブロック３０６Ｂにおいて分岐をリセットしてリプレイキュー２０３の内容を再実行する。
【００２７】
図４Ａは、図２に示すシステムのタイミング図を示す。ＤＩＭＭ１は、メモリコントローラ２００から読み出しコマンド２０４ａを受信し、タイミング６においてデータ読み出しを開始する。ＤＩＭＭ０は書き込みコマンド２０５ａを受信し、ＤＩＭＭ１のデータ読み出しと並行してタイミング７においてデータ書き込みを開始する。ＤＩＭＭ１がデータを読み出している最中、ＤＩＭＭ１からの転送２０４ｃはタイミング７において始まる。転送２０４ｃはタイミング１０まで継続するので、メモリコントローラ２００は明示的な書き込み確認２０５ｃの即時の確認を妨げられる。
【００２８】
一方、ＤＩＭＭ１はタイミング９においてメモリコントローラ２００から読み出しコマンド２０６ａを受信し、読み出しを開始する。ＤＩＭＭ１が転送２０４ｃを完了した直後のタイミング１１において転送２０６ｃは開始する。転送２０４ｃと転送２０６ｃがノースバウンドの全バンド幅を消費しているので、メモリコントローラ２００は明示的な書き込み確認２０５ｃを未だに確認できずにいる。
【００２９】
一方、メモリコントローラ２００は、タイミング８においてＤＩＭＭ１からの読み出しデータの転送２０４ｃの受信を開始する。タイミング１１において転送が完了すると、メモリコントローラ２００はエントリー２０４ｂをリプレイキュー２０３からリタイアさせる。メモリコントローラ２００は、エントリー２０５ｂに対応しない非エラー応答２０４ｃを受信したことに応じてエントリー２０５ｂもリプレイキュー２０３からリタイアさせる。非対応の非エラー応答２０４ｃはメモリコマンド２０５ａに応答して送信されたものでなく、エントリー２０５ｂには対応しない。それにも拘わらず、エントリー２０５ｂをリタイアさせる。最後に、タイミング１５においてメモリコントローラ２００は非エラー応答２０６ｃを受信しエントリー２０６ｂをリタイアさせる。
【００３０】
第一の空きタイミング１５においてメモリコントローラ２００が書き込み確認２０５ｃを確認する必要はない。書き込み確認２０５ｃを明示的に確認しないことにより他の転送にのためにバンド幅を確保してよい。
【００３１】
図４Ｂは、図２に示すものとは異なる一連の転送についてのタイミング図を示す。メモリコントローラ２００はＤＩＭＭ１にタイミング６において第一読み出しを開始させ、ＤＩＭＭ０にタイミング７において書き込みを開始させる。また、メモリコントローラ２００はＤＩＭＭ０にタイミング１０において第二読み出しを開始させる。
【００３２】
メモリコントローラ２００は、タイミング８において第一読み出しに対応する非エラー応答の受信を開始する。第一読み出しに対応する非エラー応答がタイミング１１において完全に受信されると、第一読み出しと書き込みに関連するエントリーが共にリタイアされる。換言すると、書き込みに関連するエントリーは、対応しない非エラー応答に応じてリタイアされる。最後に、メモリコントローラ２００は、タイミング１５において第二読み出しに関連するエントリーをリタイアさせる。
【００３３】
上記のシステムにおいては、上記動作のいくつかあるいは全てを実行する専用のプロセッサシステム、マイクロコントローラ、プログラマブル論理回路、あるいはマイクロプロセッサを用いることができる。上記動作いくつかをソフトウェアにより実施し、その他の動作をハードウェアにより実施してよい。
【００３４】
利便性を考慮して、多様に相互接続される機能ブロックあるいは互いに別個のソフトウェアモジュールとして上記動作を記載した。しかしこれは必須ではなく、これら機能ブロックあるいはモジュールを単一の論理回路、あるいは境界を明確化しないプログラムもしくは動作へと等価に統合する場合があってもよい。いずれの場合においても、機能ブロックとソフトウェアモジュール、あるいはフレキシブルなインタフェースを有する特性をそれらだけで実施することもでき、ハードウェア形態あるいはソフトウェア形態のその他の動作と組み合わせて実施することもできる。
【００３５】
本発明の原理をその好適実施形態により記載し図示したが、これら原理から逸脱することなく本発明を配置と詳細において変更してよいことは明らかである。以下の請求項の趣旨と範囲に存在する全ての変更と多様化を権利請求するものとする。
【図１】
2009515262.tif 000003
【図２】
2009515262.tif 000004
【図３】
2009515262.tif 000005
【図４Ａ】
2009515262.tif 000006
【図４Ｂ】
2009515262.tif 000007
【国際調査報告】
2009515262.tif 000008
2009515262.tif 000009
2009515262.tif 000010