説明

メモリシーケンスのためのメモリハブおよび方法

メモリモジュールは、いくつかのメモリ装置に結合されているメモリハブを含む。メモリハブは、例えばページヒット率、プリフェッチヒット、および/またはキャッシュヒット率など、1つまたは複数のシステム測定基準を追跡する少なくとも1つのパフォーマンスカウンタを含む。パフォーマンスカウンタは、パフォーマンスカウンタによって追跡されたシステム測定基準に基づいてその動作を調整するメモリシーケンサと通信する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、コンピュータシステムに関し、より詳細には、いくつかのメモリ装置をプロセッサまたは他のメモリアクセス装置に結合するメモリハブを有するコンピュータシステムに関する。
【背景技術】
【0002】
コンピュータシステムは、プロセッサによってアクセスされるデータを格納するために、ダイナミックランダムアクセスメモリ「DRAM」装置などのメモリ装置を使用する。これらのメモリ装置は、通常、コンピュータシステムのシステムメモリとして使用される。一般のコンピュータシステムでは、プロセッサは、プロセッサバスおよびメモリコントローラを介してシステムメモリと通信する。プロセッサは、読み出しコマンドなどのメモリコマンド、およびデータまたは命令が読み取られる場所を指定するアドレスを含むメモリ要求を発行する。メモリコントローラは、コマンドおよびアドレスを使用して、適切なコマンド信号、および行アドレスおよび列アドレスを生成し、これらはシステムメモリに適用される。これらのコマンドおよびアドレスに応じて、データは、システムメモリとプロセッサとの間に転送される。メモリコントローラは、システムコントローラの一部であることが多く、システムコントローラも、PCIバスなどの拡張バスにプロセッサバスを結合するバスブリッジ回路を含む。
【0003】
メモリ装置の動作速度は、絶えず高速化されているが、この動作速度の高速化は、プロセッサの動作速度の高速化に後れをとっている。さらに遅いのは、プロセッサをメモリ装置に結合するメモリコントローラの動作速度の高速化である。メモリコントローラおよびメモリ装置の相対的に遅い速度は、プロセッサとメモリ装置との間のデータ帯域幅を制限する。
【0004】
プロセッサとメモリ装置との間の帯域幅の制限に加えて、コンピュータシステムの性能も、システムメモリ装置からデータを読み取るのに必要な時間を引き延ばす待ち時間の問題によって制限される。より詳細には、メモリ装置読み出しコマンドがシンクロナスDRAM「SDRAM」装置などのシステムメモリ装置に連結されているとき、読み出しデータがSDRAM装置から出力されるのは、いくつかのクロック周期の遅延の後でのみになってしまう。したがって、SDRAM装置は、バーストデータを高データレートで同時に出力することはできるが、データの最初の提供の遅延は、こうしたSDRAM装置を使用するコンピュータシステムの動作速度をかなり遅くする可能性がある。
【0005】
メモリの待ち時間の問題を軽減する1つの手法は、メモリハブを介してプロセッサに結合されている複数のメモリ装置を使用することである。メモリハブアーキテクチャでは、システムコントローラまたはメモリコントローラは、いくつかのメモリモジュールに結合されており、そのそれぞれは、いくつかのメモリ装置に結合されているメモリハブを含んでいる。メモリハブは、メモリ要求および応答を、コントローラとメモリ装置との間に効率的に経路指定する。プロセッサは、別のメモリ装置が前のメモリアクセスに応答している間に、あるメモリ装置にアクセスすることができるため、このアーキテクチャを使用するコンピュータシステムは、より高い帯域幅を有することができる。例えば、プロセッサは、システム内の別のメモリ装置が読み出しデータをプロセッサに提供する準備をしている間に、システム内のメモリ装置のうちの1つに書き込みデータを出力することができる。
【0006】
メモリハブを使用するコンピュータシステムは、優れた性能を提供し得るが、それにもかかわらず、いくつかの理由で最適な速度で動作しないことが多い。例えば、メモリハブは、たとえより大きいメモリ帯域幅をコンピュータシステムに提供できるとしても、依然として上述されたタイプの待ち時間の問題を被る。より詳細には、プロセッサは、別のメモリ装置がデータの準備をしている間に、あるメモリ装置と通信することはできるが、別のメモリ装置からのデータが使用され得る前に、あるメモリ装置からデータを受信することが時として必要となる。別のメモリ装置から受信されたデータが使用され得る前に、あるメモリ装置からデータが受信されなければならない場合、待ち時間の問題は、こうしたコンピュータシステムの動作速度を引き続き遅くする。
【0007】
メモリ装置における待ち時間を短縮するために使用されている1つの技術は、実行されているプログラムによってデータが要求される前に、データ、すなわち読み出しデータをシステムメモリからプリフェッチすることである。一般に、プリフェッチされるべきデータは、以前フェッチされたデータのパターンに基づいて選択される。このパターンは、データがフェッチされるアドレスのシーケンスのように単純なもので、したがって、実行中のプログラムによってデータが必要とされる前に、シーケンス中の後のアドレスからデータがフェッチされてもよい。当然、「ストライド(stride)」として知られるパターンは、より複雑であり得る。
【0008】
さらに、メモリハブは、たとえコンピュータシステムにより大きいメモリ帯域幅を提供することができるとしても、依然としてスループットの問題を被る。例えば、データがメモリセルの特定の行から読み取られ得る前に、アレイ内のそのディジット線は、一般に、アレイ内のディジット線を平衡させることによってプリチャージされる。次いで、特定の行のメモリセルをそれぞれの列のディジット線に結合することによって、その行が開かれる。次いで、各列のディジット線間に結合されているそれぞれのセンス増幅器(sense amplifier)は、それぞれのメモリセルに格納されているデータに対応する電圧の変化に応答する。その行がいったん開かれると、ディジット線をデータ読み出しパスに結合することによって、データは、開いた行の各列から連結され得る。したがって、ページとも呼ばれる行を開くことは、有限の時間を消費し、メモリスループットに制限を設ける。
【0009】
最後に、データをプリフェッチするか、またどのデータをプリフェッチするか、行をプリチャージするかまたは開くか、アクセスされたデータをキャッシュに入れるかの最適な決定は、時間が経つと変わる可能性があり、また、メモリハブに結合されているプロセッサによって実行されているアプリケーションに応じて変わり得る。
【0010】
【特許文献1】米国特許出願第10/625,132号明細書
【特許文献2】米国特許出願第10/601,252号明細書
【発明の開示】
【発明が解決しようとする課題】
【0011】
したがって、メモリハブアーキテクチャの利点を提供するとともに、こうしたシステムによくある待ち時間および/またはスループットの問題を最低限に抑え、それによって高帯域幅、高スループット、および低待ち時間をメモリ装置に提供するコンピュータアーキテクチャが必要である。また、こうしたシステムは、好ましくは、時間が経つにつれてメモリハブの動作が変化することを可能にする。
【課題を解決するための手段】
【0012】
本発明の一態様によれば、複数のメモリ装置およびメモリハブを含むメモリモジュールおよび方法が提供される。メモリハブは、複数のメモリ装置のうちの少なくとも1つのメモリセルにアクセスする旨のメモリ要求を受信する、光入力/出力ポートなどのリンクインターフェイスを含む。メモリハブは、メモリ装置に結合されているメモリ装置インターフェイスをさらに含み、メモリ装置インターフェイスは、複数のメモリ装置のうちの少なくとも1つのメモリセルにアクセスする旨のメモリ要求をメモリ装置に連結し、メモリ要求のうちの少なくとも一部に応じて読み出しデータを受信するように動作可能である。メモリハブは、メモリ装置インターフェイスに結合されているパフォーマンスカウンタをさらに含んでおり、パフォーマンスカウンタは、ページヒット率、プリフェッチヒット、およびキャッシュヒット率から成るグループから選択される少なくとも1つの測定基準(metric)を追跡するように動作可能である。メモリハブは、リンクインターフェイスおよびメモリ装置インターフェイスに結合されているメモリシーケンサをさらに含む。メモリシーケンサは、リンクインターフェイスから受信されたメモリ要求に応じてメモリ要求をメモリ装置インターフェイスに連結するように動作可能である。メモリシーケンサは、パフォーマンスカウンタに応じて操作性を動的に調整するようさらに動作可能である。例えば、パフォーマンスカウンタは、ページヒット率を追跡することができ、メモリシーケンサは、追跡されたページヒット率に応じて、メモリ装置における開いたページの数を変更したり、自動プリチャージモードに切り替えたりすることができる。あるいは、パフォーマンスカウンタは、プリフェッチヒットのパーセンテージを追跡することができ、メモリシーケンサは、追跡されたプリフェッチヒットのパーセンテージに応じて、プリフェッチを使用可能または使用不可にしたり、プリフェッチ要求の数を調整したりすることができる。さらに一例として、パフォーマンスカウンタは、キャッシュヒット率を追跡することができ、メモリシーケンサは、追跡されたキャッシュヒット率に応じて、キャッシュを使用不可にすることができる。
【発明を実施するための最良の形態】
【0013】
図1に、本発明の一例によるコンピュータシステム100が示されている。コンピュータシステム100は、特定のソフトウェアを実行して特定の計算またはタスクを実行するなど、様々なコンピューティング機能を実行するプロセッサ104を含む。プロセッサ104は、通常、アドレスバス、制御バス、およびデータバスを含むプロセッサバス106を含む。一般に、プロセッサバス106は、上述されているように、一般にスタティックランダムアクセスメモリ「SRAM」であるキャッシュメモリ108に結合されている。最後に、プロセッサバス106は、時として「North Bridge」または「メモリコントローラ」とも呼ばれるシステムコントローラ110に結合されている。
【0014】
システムコントローラ110は、他の様々な構成要素のためのプロセッサ104への通信パスとして働く。より詳細には、システムコントローラ110は、一般に、グラフィックスコントローラ112に結合されているグラフィックスポートを含んでおり、グラフィックスコントローラ112もまたビデオ端末114に結合されている。システムコントローラ110は、オペレータがコンピュータシステム100とのインターフェイスをとることができるようにするためのキーボードやマウスなど1つまたは複数の入力装置118にも結合されている。一般に、コンピュータシステム100は、システムコントローラ110を介してプロセッサ104に結合されているプリンタなど1つまたは複数の出力装置120も含む。一般に、図示されていない内部または外部の記憶媒体にプロセッサ104がデータを格納したりそこからデータを取り出したりできるようにするために、1つまたは複数のデータ記憶装置124も、システムコントローラ110を介してプロセッサ104に結合されている。一般の記憶装置124の例には、ハードディスク、フロッピー(登録商標)ディスク、テープカセット、およびコンパクトディスク読取専用メモリ、すなわちCD−ROMなどがある。
【0015】
システムコントローラ110は、コンピュータシステム100のシステムメモリとして働くいくつかのメモリモジュール130a,b・・・nに結合されている。メモリモジュール130は、好ましくは、高速リンク134を介してシステムコントローラ110に結合されており、高速リンクは、光または電気通信パスまたは他の何らかのタイプの通信パスであってもよい。高速リンク134が光通信パスとして実装されている場合、光通信パスは、例えば1つまたは複数の光ファイバの形でもよい。こうした場合、システムコントローラ110およびメモリモジュールは、光通信パスに結合される光入力/出力ポートまたは個別の入力ポートおよび出力ポートを含む。メモリモジュール130は、単一の高速リンク134がすべてのメモリモジュール130に結合されているマルチドロップ構成で、システムコントローラ110に結合されている状態で示されている。しかし、メモリモジュール130のそれぞれをシステムコントローラ110に結合するために、図示されていない個別の高速リンクが使用されるポイントツーポイント結合構成など、他のトポロジが使用されてもよいことを理解されよう。また、システムコントローラ110が図示されていないスイッチを介してメモリモジュール130のそれぞれに選択的に結合される切替接続形態(switching topology)が使用されてもよい。使用され得る他の接続形態は、当業者には明らかであろう。
【0016】
メモリモジュール130のそれぞれは、32個のメモリ装置148へのアクセスを制御するメモリハブ140を含んでおり、これらのメモリ装置148は、図1に示されている例では、シンクロナスダイナミックランダムアクセスメモリ「SDRAM」装置である。しかし、より少ない数またはより多い数のメモリ装置148が使用されてもよく、当然、SDRAM装置以外のメモリ装置が使用されてもよい。図1に示されている例では、メモリハブ140は、4つ以上の独立したメモリチャネル149を、高速リンク134を介して通信する。この例では、図1には示されていないが、それぞれ1つのメモリチャネル149からデータを受信する4つのメモリハブコントローラ128が設けられている。しかし、別の例で、より少ない数またはより多い数のメモリチャネル149が使用されてもよい。メモリハブ140は、通常、制御バス、アドレスバス、およびデータバスを含むバスシステム150を介して、システムメモリ装置148のそれぞれに結合されている。
【0017】
図2に、本発明の一実施形態によるメモリハブ200が示されている。図1のメモリハブ140の代わりにメモリハブ200が使用され得る。図2には、メモリハブ200が、4つのメモリ装置240a〜dに結合されているものとして示されており、この例では、これらのメモリ装置は、従来型のSDRAM装置である。代替実施形態では、メモリハブ200は、単に異なる4つのメモリ装置240a〜dではなく、メモリ装置の異なる4つのバンクに結合されており、各バンクは、一般に、複数のメモリ装置を有する。しかし、例を提供する目的で、この説明は、4つのメモリ装置240a〜dに結合されているメモリハブ200を参照する。メモリの複数のバンクに対応するためのメモリハブ200への必要な変更は、当業者であれば知っていることを理解されよう。
【0018】
メモリハブ200には、さらに、メモリハブ200が配置されるメモリモジュールを第1の高速データリンク220および第2の高速データリンク222にそれぞれ結合するために、リンクインターフェイス210a〜dおよび212a〜dが含まれている。図1を参照して上述されているように、高速データリンク220、222は、光または電気通信パスまたは他の何らかのタイプの通信パスを使用して実装され得る。リンクインターフェイス210a〜d、212a〜dは、在来型のものであり、データ、コマンド、およびアドレス情報を高速データリンク220、222との間で転送するために使用される回路を含む。よく知られているように、こうした回路は、当業者には知られている送受信ロジックを含む。当業者は、特定のタイプの通信パスとともに使用されるようにリンクインターフェイス210a〜d、212a〜dを変更するのに十分な知識を有しており、リンクインターフェイス210a〜d、212a〜dへのこうした変更は、本発明の範囲から逸脱することなく行われてもよいことを理解されよう。例えば、高速データリンク220、222が光通信パスを使用して実装されている場合、リンクインターフェイス210a〜d、212a〜dは、光通信パスを介して連結されている光信号を電気信号に変換することができる光入力/出力ポートを含む。
【0019】
リンクインターフェイス210a〜d、212a〜dは、バス214によって表されている複数のバスおよび信号線を介してスイッチ260に結合されている。バス214は、従来型のものであり、書き込みデータバスおよび読み出しデータバスを含んでいるが、代わりに、リンクインターフェイス210a〜d、212a〜dを介して両方向にデータを連結するために、単一の双方向データバスが設けられてもよい。バス214が一例として提供されていること、およびこれらのバス214は、例えば、キャッシュコヒーレンシを維持するために使用され得る、要求線やスヌープ線(snoop line)をさらに含むなど、より少ない数またはより多い数の信号線を含んでいてもよいことを当業者は理解されよう。
【0020】
リンクインターフェイス210a〜d、212a〜dは、メモリハブ200が、システムメモリにおいて様々な構成で接続されることを可能にする回路を含む。例えば、図1に示したようなマルチドロップ構成は、リンクインターフェイス210a〜dまたは212a〜dのいずれかを介して各メモリモジュールをメモリハブコントローラ128に結合することによって実装され得る。あるいは、メモリモジュールを直列式に結合することによって、ポイントツーポイントまたはデイジーチェーン構成が実装されてもよい。例えば、リンクインターフェイス210a〜dは、第1のメモリモジュールを結合するために使用され、リンクインターフェイス212a〜dは、第2のメモリモジュールを結合されるために使用され得る。プロセッサまたはシステムコントローラに結合されているメモリモジュールは、1組のリンクインターフェイスを介してそれに結合され、さらに、他の組のリンクインターフェイスを介して別のメモリモジュールに結合される。本発明の一実施形態では、メモリモジュールのメモリハブ200は、プロセッサ104とメモリハブ200との間の通信に結合されている装置が他にないポイントツーポイント構成でプロセッサに結合されている。このタイプの相互接続は、キャパシタンスが相対的に低い、信号を反映するための線における不連続が相対的に少ない、信号パスが相対的に短いなどを含めて、いくつかの理由で、プロセッサ104とメモリハブ200との間によりよい信号の連結を提供する。
【0021】
スイッチ260は、4つのメモリインターフェイス270a〜dにさらに結合され、これらのメモリインターフェイスもまた、システムメモリ装置240a〜dにそれぞれ結合される。システムメモリ装置240a〜dごとに、個別の独立したメモリインターフェイス270a〜dをそれぞれ設けることによって、メモリハブ200は、一般に単一チャネルメモリアーキテクチャで起こるバスまたはメモリバンクの衝突を回避する。スイッチ260は、バス274によって表される複数のバス線および信号線を介して各メモリインターフェイスに結合される。バス274は、書き込みデータバス、読み出しデータバス、および要求線を含む。しかし、個別の書き込みデータバスおよび読み出しデータバスの代わりに、単一の双方向データバスが使用されてもよいことを理解されよう。さらに、バス274は、上述されているもの以外に、より多い数または少ない数の信号線を含み得る。
【0022】
本発明の一実施形態では、各メモリインターフェイス270a〜dは、特に、それが結合されるシステムメモリ装置240a〜dに適合される。より詳細には、各メモリインターフェイス270a〜dは、特に、それが結合されるシステムメモリ装置240a〜dによってそれぞれ受信され、生成される特定の信号を提供し、受信するように構成される。また、メモリインターフェイス270a〜dは、システムメモリ装置240a〜dが異なるクロック周波数で動作している状態で動作することができる。その結果、メモリインターフェイス270a〜dは、メモリハブ200と、メモリハブ200に結合されているメモリ装置240a〜dとの間のインターフェイスで起こり得る変化からプロセッサ104を切り離し、メモリ装置240a〜dがインターフェイスをとり得る、より制御された環境を提供する。
【0023】
リンクインターフェイス210a〜d、212a〜d、およびメモリインターフェイス270a〜dを結合するスイッチ260は、従来型の、または今後開発される様々なスイッチのうちのどんなものでもよい。例えば、スイッチ260は、様々な構成において、リンクインターフェイス210a〜d、212a〜d、およびメモリインターフェイス270a〜dを互いに同時に結合することができるクロスバースイッチとすることができる。スイッチ260は、クロスバースイッチと同じ接続レベルを提供しないが、それにも関わらず、リンクインターフェイス210a〜d、212a〜dのうちの一部またはすべてをメモリインターフェイス270a〜dのそれぞれに結合することができる1組のマルチプレクサとすることもできる。また、スイッチ260は、どのメモリアクセスが他のメモリアクセスより高い優先順位を得るべきであるかを決定するために、図示されていない調整ロジックを含んでいてもよい。この機能を実行するバス調停は、当業者にはよく知られている。
【0024】
さらに図2を参照すると、メモリインターフェイス270a〜dのそれぞれは、それぞれのメモリコントローラ280、それぞれの書き込みバッファ282、およびそれぞれのキャッシュメモリユニット284を含む。メモリコントローラ280は、それが結合されているシステムメモリ装置240a〜dに制御信号、アドレス信号、およびデータ信号を提供し、それが結合されているシステムメモリ装置240a〜dからデータ信号を受信することによって、従来のメモリコントローラと同じ機能を行う。書き込みバッファ282およびキャッシュメモリユニット284は、当業者にはよく知られているように、タグメモリ、データメモリ、比較器など、バッファおよびキャッシュメモリの普通の構成要素を含んでいる。書き込みバッファ282で使用されるメモリ装置、およびキャッシュメモリユニット284は、DRAM装置、スタティックランダムアクセスメモリ「SRAM」装置、他のタイプのメモリ装置、または3つすべての組合せのいずれかとすることができる。さらに、これらのメモリ装置のいずれかまたはすべて、およびキャッシュメモリユニット284に使用される他の構成要素は、組み込み型またはスタンドアロン型の装置のいずれかとすることができる。
【0025】
各メモリインターフェイス270a〜dの書き込みバッファ282は、読み出し要求が処理されている間に書き込み要求を格納するために使用される。こうしたシステムにおいて、書き込み要求が宛てられるメモリ装置が前の書き込み要求または読み出し要求を処理するのにふさがっている場合でさえ、プロセッサ104は、書き込み要求をシステムメモリ装置240a〜dに発行することができる。この手法を使用して、後の読み出し要求が処理されている間に、前の書き込み要求が書き込みバッファ282に保存されてもよいため、メモリ要求は、順序ばらばらで処理されてもよい。読み出し要求を処理できるように書き込み要求をバッファに入れることができる機能は、古い順に関わらず、読み出し要求に第1の優先順位が与えられ得るため、メモリ読み出し待ち時間を大幅に低減することができる。例えば、読み出し要求が点在している一連の書き込み要求は、読み出し要求がパイプライン式で処理され、次いで格納されている書き込み要求がパイプライン式で処理され得るように、書き込みバッファ282に格納されていてもよい。その結果、書き込み要求と読み出し要求との間を切り替える際の、書き込み要求のメモリ装置270a〜dへの連結と、読み出し要求のメモリ装置270a〜dへのその後の連結との間の長いセトリングタイムが避けられ得る。
【0026】
各メモリインターフェイス270a〜dでのキャッシュメモリユニット284の使用は、データが最近そのメモリ装置240a〜dから読み取られた、またはそれに書き込まれた場合、メモリ装置240a〜dがこうしたデータの提供を待つことなく、それぞれのシステムメモリ装置240a〜dに宛てられる読み出しコマンドに応じて、プロセッサ104がデータを受信できるようにする。したがって、キャッシュメモリユニット284は、システムメモリ装置240a〜dの読み出し待ち時間を短縮して、コンピュータシステムのメモリ帯域幅を最大にする。同様に、プロセッサ104は、書き込みデータをキャッシュメモリユニット284に格納し、次いで、同じメモリインターフェイス270a〜dのメモリコントローラ280が、書き込みデータを、キャッシュメモリユニット284から、それが結合されているシステムメモリ装置240a〜dに転送する間に、他の機能を実行することができる。
【0027】
メモリハブ200には、さらに、診断バス292を介してスイッチ260に結合されている組み込み自己テスト、すなわちBISTおよび診断エンジン290が含まれている。診断エンジン290は、Joint Test Action Group、すなわちJTAGおよびIEEE1149.1標準によるシステム管理バス、すなわちSMBusやメンテナンスバスなど、メンテナンスバス296にさらに結合される。SMBusおよびJTAG標準はいずれも、当業者にはよく知られている。一般に、メンテナンスバス296は、メモリチャネルおよびリンク診断を実行するために、ユーザアクセスを診断エンジン290に提供する。例えば、ユーザは、診断テストを行い、またはメモリシステム操作を監視するために、個別のPCホストをメンテナンスバス296を介して結合することができる。メンテナンスバス296を使用して診断テスト結果にアクセスすることによって、上述されているように、テストプローブの使用に関連する発行が回避され得る。本発明の範囲から逸脱することなく、メンテナンスバス296が従来のバス標準から変更されてもよいことを理解されたい。こうした標準メンテナンスバスが使用されている場合、診断エンジン290はメンテナンスバス296の標準に対応すべきであることをさらに理解されたい。例えば、こうしたメンテナンスバスが使用されている場合、診断エンジンは、JTAGバス標準に準拠したメンテナンスバスインターフェイスを有するべきである。
【0028】
メモリハブ200には、さらに、バス288を介してスイッチ260に結合されているDMAエンジン286が含まれる。DMAエンジン286は、プロセッサ104からの介入なしに、メモリハブ200がシステムメモリ内のある位置からシステムメモリ内の別の位置にデータのブロックを移動させることができるようにする。バス288は、システムメモリにおけるデータ転送を処理するために、アドレスバス、制御バス、データバスなど、複数の従来のバス線および信号線を含む。当業者によく知られている従来のDMA操作は、DMAエンジン286によって実施され得る。適したDMAエンジンのより詳細な説明は、例えば、2003年7月22日に出願されたAPPARATUS AND METHOD FOR DIRECT MEMORY ACCESS IN A HUB-BASED MEMORY SYSTEMという名称の、本発明の譲受人に譲渡された同時係属の米国特許出願第10/625,132号明細書(特許文献1)に記載されている。前述の特許出願により詳しく記載されているように、DMAエンジン286は、システムメモリのリンクリストを読み取ってプロセッサの介入なしにDMAメモリ操作を実行し、したがってメモリ動作の実行からプロセッサ104および帯域幅の限られたシステムバスを解放することができる。DMAエンジン286は、例えば、各システムメモリ装置240a〜dの複数のチャネルでのDMA操作に対応するために、回路を含むこともできる。こうした多チャネルDMAエンジンは、当技術分野ではよく知られており、従来の技術を使用して実施され得る。
【0029】
診断エンジン290およびDMAエンジン286は、好ましくは、メモリハブ200の組み込み回路である。しかし、メモリハブ200に結合されている個別の診断エンジンおよび個別のDMA装置を含めることも、本発明の範囲内である。
【0030】
本発明のいくつかの実施形態は、メモリコントローラ280のうちの1つまたは複数と通信する性能監視構成要素を提供する。性能監視構成要素は、メモリコントローラ280がメモリユニット240からのデータの送受信に使用される方法を動的に調整できるようにする。図2に示されている例では、以下でさらに説明されるように、メモリコントローラ280と通信する少なくとも1つのパフォーマンスカウンタ300が設けられている。
【0031】
パフォーマンスカウンタ300は、本発明の一例では、例えばページヒット率、プリフェッチヒットの数またはパーセンテージ、キャッシュヒット率またはパーセンテージを含めて、メモリハブ200のメモリアクセスおよび/または性能に関連付けられている1つまたは複数の測定基準を追跡する。
【0032】
上述されているように、メモリ装置における待ち時間を短縮する1つの手法は、データをプリフェッチすることである。プリフェッチバッファを有する図1のメモリハブ140の一例は、図3に示されており、例えば、2003年6月20日に出願されたMEMORY HUB AND ACCESS METHOD HAVING INTERNAL PREFETCH BUFFERSという名称の、本発明の譲受人に譲渡された同時係属の米国特許出願第10/601,252号明細書(特許文献2)にさらに記載されている。前述の特許出願に記載されているように、メモリハブ140は、高速リンク134に結合されているリンクインターフェイス152を含む。リンクインターフェイス152は、例えば、メモリ要求が高速リンク134を介して受信されるにつれて、それらを受信し、格納する、図示されていない先入先出バッファなど、従来の様々なインターフェイス回路を含み得る。次いで、メモリ要求は、メモリハブ140によって処理され得るまで、リンクインターフェイスに格納されてもよい。
【0033】
リンクインターフェイス152によって受信されたメモリ要求は、まず、図2のメモリコントローラ270a〜dのうちの1つまたは複数に含まれており、1つまたは複数のパフォーマンスカウンタ300と通信するメモリシーケンサ160に要求を転送することによって処理される。メモリシーケンサ160は、メモリ要求を、図1のシステムコントローラ110から出力されたフォーマットから、メモリ装置148によって使用され得るフォーマットを有するメモリ要求に変換する。これらの再フォーマット済み要求信号は、通常、メモリハブ140によって受信されたメモリ要求に含まれるメモリコマンドから導出されるメモリコマンド信号、およびメモリハブ140によって受信されたメモリ要求に含まれるアドレスから導出される行および列のアドレス信号を含む。メモリ要求がメモリ書き込み要求である場合、再フォーマット済み要求信号は、通常、メモリハブ140によって受信されたメモリ要求に含まれる書き込みデータから導出される書き込みデータ信号を含む。例えば、メモリ装置148が従来のDRAM装置である場合、メモリシーケンサ160は、行アドレス信号、行アドレスストローブ「RAS」信号、アクティブロー書き込み/アクティブハイ読み出し信号(active low write/active high read signal)「W*/R」、列アドレス信号、および列アドレスストローブ「CAS」信号を出力する。再フォーマット済みメモリ要求は、好ましくは、メモリ装置148によって使用される順序でシーケンサ160から出力される。
【0034】
メモリシーケンサ160は、再フォーマット済みメモリ要求をメモリ装置インターフェイス166に適用する。メモリ装置インターフェイス166は、リンクインターフェイス152のように、1つまたは複数のメモリ要求がリンクインターフェイス152から受信されるにつれて、それらを受信し、格納する、図示されていないFIFOバッファを含んでいてもよい。
【0035】
いくつかのメモリ要求がメモリ装置148によって処理され得るまで、メモリ装置インターフェイス166がそれらを格納する場合、メモリ装置インターフェイス166は、メモリ要求が他の何らかの順序でメモリ装置148に適用されるように、それらを配列し直すことができる。例えば、メモリ要求は、あるタイプの要求、例えば読み出し要求などが、他のタイプの要求、例えば書き込み要求の前に処理される方法で、インターフェイス166に格納されてもよい。
【0036】
上述されているように、メモリハブを使用する欠点の1つは、メモリハブが時々生成し得る待ち時間の増大である。これもまた上述されているように、メモリ読み出し待ち時間を短縮するために従来から使用されているプリフェッチ手法は、メモリハブを使用するメモリシステムにあまり適していない。それに対して、図3に示されているメモリハブ140は、プログラムの実行中にどのデータが必要かを正しく予想し、次いでそれらのデータをプリフェッチし、プリフェッチシステム170の一部である1つまたは複数のバッファに格納するプリフェッチシステム170をメモリハブ140に含めることによって、比較的短いメモリ読み出し待ち時間を提供する。以下で詳述されるように、また上述の特許出願で説明されているように、プリフェッチシステム170は、いくつかのプリフェッチバッファ176を含んでおり、その数は、稼働状態に応じて可変にされてもよい。簡単に言えば、プリフェッチバッファ176は、プリフェッチされたデータをメモリ装置インターフェイス166から受信する。このデータは、その後のメモリアクセスに使用可能なように、プリフェッチバッファ176に格納される。次いでデータは、マルチプレクサ178を介してリンクインターフェイス152に連結される。
【0037】
プリフェッチシステム170は、リンクインターフェイス152からメモリ要求を受信する履歴ロジック180も含む。履歴ロジック180は、将来のメモリ要求が予想され得るパターンまたはストライドを検出するために、従来のアルゴリズムを使用してメモリ要求を分析する。データは、メモリ装置148の任意のアドレスからプリフェッチされ得るが、プリフェッチがメモリ装置148のメモリセルの行のプリチャージを必要としないように、データは、好ましくは、現在アクティブな、または「開いた」メモリ装置148の行からのみプリフェッチされる。一例では、1つまたは複数のパフォーマンスカウンタ300は、ページヒットの数またはパーセンテージを追跡する。メモリシーケンサ160は、図2に示されている1つまたは複数のパフォーマンスカウンタ300によって提供される情報に基づいて、アクティブな、または「開いた」ページの数を調整する。本発明の一例では、少なくとも1つのパフォーマンスカウンタ300によって追跡されるページヒットカウントおよび/またはページヒットのパーセンテージが閾値未満になると、開いたページの数は、メモリシーケンサ160によって低減される。類似の方法で、一例では、ページヒットカウントまたはページヒットのパーセンテージが閾値を超えると、開いたページの数は、増加される。当然、本発明の他の例では、開いたページの数を調整する他の方法が使用される。
【0038】
メモリシーケンサ160は、ページヒット率、プリフェッチヒットのパーセンテージなど、パフォーマンスカウンタ300のうちの1つまたは複数によって提供される情報に応じて、プリフェッチを選択的に使用可能または使用不可にすることもできる。しかし、プリフェッチが常に使用可能にされていてもよい。一例では、メモリシーケンサ300は、プリフェッチヒットの数および/またはページヒット率が閾値未満に低減したとき、プリフェッチを使用不可にする。あるいは、シーケンサ160は、結果として、メモリ装置148からではなく、プリフェッチバッファ176から要求されたデータを読み出すメモリ要求のパーセンテージに基づいてプリフェッチを使用可能または使用不可にすることができる。
【0039】
メモリハブ140を含むメモリモジュール130は、メモリ読み出し要求を受信すると、まず、要求によって求められたデータまたは命令がプリフェッチバッファ176に格納されているかどうかを決定する。この決定は、メモリ要求をタグロジック186に連結することによって行われる。タグロジック186は、各プリフェッチ示唆(prefetch suggestion)に対応するプリフェッチアドレスを履歴ロジック180から受信する。あるいは、タグロジック186は、メモリ装置インターフェイス166に連結されている各プリフェッチ要求に対応するプリフェッチアドレスをメモリシーケンサ160から受信することができる。メモリ読み出し要求によって求められたデータがプリフェッチバッファ176に格納されているかどうかをタグロジック186が決定できるようにするために他の手段が使用されてもよい。いかなる場合でも、タグロジック186は、プリフェッチバッファ176に格納されているデータのレコードを提供するためにプリフェッチアドレスを格納する。従来の技術を使用して、タグロジック186は、リンクインターフェイス152から受信された各メモリ要求内のアドレスを、タグロジック186に格納されているプリフェッチアドレスと比較して、メモリ要求によって求められたデータがプリフェッチバッファ176に格納されているかどうかを決定する。
【0040】
タグロジック186は、メモリ要求によって求められたデータがプリフェッチバッファ176に格納されていないことを決定した場合、ローHIT/MISS*信号をメモリシーケンサ160に連結する。タグロジック186は、メモリ要求によって求められたデータがプリフェッチバッファ176に格納されていることを決定した場合、ハイHIT/MISS*信号をメモリシーケンサ160に連結する。一例では、ハイおよび/またはローHIT/MISS*信号の発生は、全メモリ要求数にわたるヒット数を追跡するために、1つまたは複数のパフォーマンスカウンタ300によってカウントされる。
【0041】
一例では、図3によって示されているパフォーマンスカウンタ300は、ある期間にわたってページヒット率を追跡する。次いで、ページヒット率は、開いたページの数を調整する、および/または、要求された線が自動的にプリチャージされる自動プリチャージモードに切り替えるように、メモリシーケンサ160に伝えられる。別の例では、プリフェッチが実行可能にされるかどうか、および/または発行すべきプリフェッチ要求の数を調整するために、プリフェッチヒットのパーセンテージがパフォーマンスカウンタ300によって追跡される。一例では、少なくとも1つのパフォーマンスカウンタ300は、キャッシュヒットの数、すなわち、要求されたデータがキャッシュにある場合、キャッシュ284a〜dへの要求の数を追跡する。キャッシュヒットレートが低すぎる場合、例えばキャッシュが使用不可にされてもよい。
【0042】
一例では、自動プリチャージモードを使用するかどうか、ページモードの場合、開いたページの数、プリフェッチ要求の数およびキャッシュ可能性を設定するためにプログラム可能閾値が使用される。一例では、1つまたは複数のパフォーマンスカウンタ300による監視の期間は、プログラム可能である。メモリバスは、様々な例において、結果を取得するため、またはカウンタをリセットするために、何秒、何時間、または何日かの間監視されてもよい。上記から、本明細書では、例示の目的で、本発明の特定の実施形態について記載されてきたが、本発明の意図および範囲から逸脱することなく、様々な変更が加えられてもよいことを理解されたい。したがって、本発明は、添付の特許請求の範囲を除いて限定されない。
【図面の簡単な説明】
【0043】
【図1】メモリハブが複数のメモリモジュールのそれぞれに含まれている本発明の一例によるコンピュータシステムを示すブロック図である。
【図2】本発明の一例によるパフォーマンスカウンタを含む図1のコンピュータシステムで使用されるメモリハブを示すブロック図である。
【図3】本発明の一例によるプリフェッチバッファを含む図1のコンピュータシステムで使用されるメモリハブを示すブロック図である。

【特許請求の範囲】
【請求項1】
複数のメモリ装置と、
前記メモリ装置のうちの少なくとも1つのメモリセルにアクセスする旨のメモリ要求を受信するリンクインターフェイスと、
前記メモリ装置に結合されているメモリ装置インターフェイスであって、前記メモリ装置のうちの少なくとも1つのメモリセルにアクセスする旨のメモリ要求を前記メモリ装置に連結し、前記メモリ要求のうちの少なくとも一部に応じて読み出しデータを受信するように動作可能であるメモリ装置インターフェイスと、
前記メモリ装置インターフェイスに結合されているパフォーマンスカウンタであって、少なくとも1つの性能測定基準を追跡するように動作可能であるパフォーマンスカウンタと、
前記リンクインターフェイスおよび前記メモリ装置インターフェイスに結合されているメモリシーケンサであって、前記リンクインターフェイスから受信されたメモリ要求に応じてメモリ要求を前記メモリ装置インターフェイスに連結するように動作可能であり、前記パフォーマンスカウンタによって追跡された前記性能測定基準に応じて操作性を動的に調整するようさらに動作可能であるメモリシーケンサと
を含むメモリハブと
を含むことを特徴とするメモリモジュール。
【請求項2】
前記リンクインターフェイスは、光入力/出力ポートを含むことを特徴とする請求項1に記載のメモリモジュール。
【請求項3】
前記パフォーマンスカウンタによって追跡される前記性能測定基準は、ページヒット率、プリフェッチヒット、およびキャッシュヒット率から成るグループから選択される少なくとも1つの性能測定基準を含むことを特徴とする請求項1に記載のメモリモジュール。
【請求項4】
前記パフォーマンスカウンタは、ページヒット率を追跡し、前記メモリシーケンサは、前記メモリ装置における開いたページの数を変更するよう動作可能であることを特徴とする請求項3に記載のメモリモジュール。
【請求項5】
前記パフォーマンスカウンタは、ページヒット率を追跡し、前記メモリシーケンサは、自動プリチャージモードに切り替えるよう動作可能であることを特徴とする請求項3に記載のメモリモジュール。
【請求項6】
前記パフォーマンスカウンタは、プリフェッチヒットのパーセンテージを追跡し、前記メモリシーケンサは、プリフェッチを実行可能または実行不可にするよう動作可能であることを特徴とする請求項3に記載のメモリモジュール。
【請求項7】
前記パフォーマンスカウンタは、プリフェッチヒットのパーセンテージを追跡し、前記メモリシーケンサは、プリフェッチ要求の数を決定するよう動作可能であることを特徴とする請求項3に記載のメモリモジュール。
【請求項8】
前記パフォーマンスカウンタは、キャッシュヒット率を追跡し、前記メモリシーケンサは、前記キャッシュを使用不可にするよう動作可能であることを特徴とする請求項3に記載のメモリモジュール。
【請求項9】
前記メモリ装置は、ダイナミックランダムアクセスメモリ装置を含むことを特徴とする請求項1に記載のメモリモジュール。
【請求項10】
前記メモリ装置のうちの少なくとも1つのメモリセルにアクセスする旨のメモリ要求を受信するリンクインターフェイスと、
前記メモリ装置に結合されているメモリ装置インターフェイスであって、前記メモリ装置のうちの少なくとも1つのメモリセルにアクセスする旨のメモリ要求を前記メモリ装置に連結し、前記メモリ要求のうちの少なくとも一部に応じて読み出しデータを受信するように動作可能であるメモリ装置インターフェイスと、
前記メモリ装置インターフェイスに結合されているパフォーマンスカウンタであって、少なくとも1つの性能測定基準を追跡するように動作可能であるパフォーマンスカウンタと、
前記リンクインターフェイスおよび前記メモリ装置インターフェイスに結合されているメモリシーケンサであって、前記リンクインターフェイスから受信されたメモリ要求に応じてメモリ要求を前記メモリ装置インターフェイスに連結するように動作可能であり、前記パフォーマンスカウンタによって追跡された前記性能測定基準に応じて操作性を動的に調整するようさらに動作可能であるメモリシーケンサと
を含むことを特徴とするメモリハブ。
【請求項11】
前記リンクインターフェイスは、光入力/出力ポートを含むことを特徴とする請求項10に記載のメモリハブ。
【請求項12】
前記パフォーマンスカウンタによって追跡される前記性能測定基準は、ページヒット率、プリフェッチヒット、およびキャッシュヒット率から成るグループから選択される少なくとも1つの性能測定基準を含むことを特徴とする請求項10に記載のメモリハブ。
【請求項13】
前記パフォーマンスカウンタは、ページヒット率を追跡し、前記メモリシーケンサは、前記メモリ装置における開いたページの数を変更するよう動作可能であることを特徴とする請求項12に記載のメモリハブ。
【請求項14】
前記パフォーマンスカウンタは、ページヒット率を追跡し、前記メモリシーケンサは、自動プリチャージモードに切り替えるよう動作可能であることを特徴とする請求項12に記載のメモリハブ。
【請求項15】
前記パフォーマンスカウンタは、プリフェッチヒットのパーセンテージを追跡し、前記メモリシーケンサは、プリフェッチを実行可能または実行不可にするよう動作可能であることを特徴とする請求項12に記載のメモリハブ。
【請求項16】
前記パフォーマンスカウンタは、プリフェッチヒットのパーセンテージを追跡し、前記メモリシーケンサは、プリフェッチ要求の数を決定するよう動作可能であることを特徴とする請求項12に記載のメモリハブ。
【請求項17】
前記パフォーマンスカウンタは、キャッシュヒット率を追跡し、前記メモリシーケンサは、前記キャッシュを使用不可にするよう動作可能であることを特徴とする請求項12に記載のメモリハブ。
【請求項18】
CPUと、
前記CPUに結合されており、入力ポートおよび出力ポートを有するシステムコントローラと、
前記システムコントローラを介して前記CPUに結合されている入力装置と、
前記システムコントローラを介して前記CPUに結合されている出力装置と、
前記システムコントローラを介して前記CPUに結合されている記憶装置と、
複数のメモリ装置と、
前記メモリ装置のうちの少なくとも1つのメモリセルにアクセスする旨のメモリ要求を受信するリンクインターフェイスと、
前記メモリ装置に結合されているメモリ装置インターフェイスであって、前記メモリ装置のうちの少なくとも1つのメモリセルにアクセスする旨のメモリ要求を前記メモリ装置に連結し、前記メモリ要求のうちの少なくとも一部に応じて読み出しデータを受信するように動作可能であるメモリ装置インターフェイスと、
前記メモリ装置インターフェイスに結合されているパフォーマンスカウンタであって、少なくとも1つの性能測定基準を追跡するように動作可能であるパフォーマンスカウンタと、
前記リンクインターフェイスおよび前記メモリ装置インターフェイスに結合されているメモリシーケンサであって、前記リンクインターフェイスから受信されたメモリ要求に応じてメモリ要求を前記メモリ装置インターフェイスに連結するように動作可能であり、前記パフォーマンスカウンタによって追跡された前記性能測定基準に応じて操作性を動的に調整するようさらに動作可能であるメモリシーケンサと
を含むメモリハブと
をそれぞれ含む複数のメモリモジュールと
を含むことを特徴とするコンピュータシステム。
【請求項19】
前記リンクインターフェイスは、光入力/出力ポートを含むことを特徴とする請求項18に記載のコンピュータシステム。
【請求項20】
前記パフォーマンスカウンタによって追跡される前記性能測定基準は、ページヒット率、プリフェッチヒット、およびキャッシュヒット率から成るグループから選択される少なくとも1つの性能測定基準を含むことを特徴とする請求項18に記載のコンピュータシステム。
【請求項21】
前記パフォーマンスカウンタは、ページヒット率を追跡し、前記メモリシーケンサは、前記メモリ装置における開いたページの数を変更するよう動作可能であることを特徴とする請求項20に記載のコンピュータシステム。
【請求項22】
前記パフォーマンスカウンタは、ページヒット率を追跡し、前記メモリシーケンサは、自動プリチャージモードに切り替えるよう動作可能であることを特徴とする請求項20に記載のコンピュータシステム。
【請求項23】
前記パフォーマンスカウンタは、プリフェッチヒットのパーセンテージを追跡し、前記メモリシーケンサは、プリフェッチを実行可能または実行不可にするよう動作可能であることを特徴とする請求項20に記載のコンピュータシステム。
【請求項24】
前記パフォーマンスカウンタは、プリフェッチヒットのパーセンテージを追跡し、前記メモリシーケンサは、プリフェッチ要求の数を決定するよう動作可能であることを特徴とする請求項20に記載のコンピュータシステム。
【請求項25】
前記パフォーマンスカウンタは、キャッシュヒット率を追跡し、前記メモリシーケンサは、前記キャッシュを使用不可にするよう動作可能であることを特徴とする請求項20に記載のコンピュータシステム。
【請求項26】
前記メモリ装置は、ダイナミックランダムアクセスメモリ装置を含むことを特徴とする請求項18に記載のコンピュータシステム。
【請求項27】
メモリモジュールからデータを読み取る方法であって、
前記メモリモジュールに設けられているメモリ装置にアクセスする旨のメモリ要求を受信するステップと、
前記受信されたメモリ要求に応じて、前記メモリ要求を前記メモリ装置に連結するステップであって、前記メモリ要求のうちの少なくとも一部がデータを読み出す旨のメモリ要求である、ステップと、
前記メモリ読み出し要求に応じて読み出しデータを受信するステップと、
少なくとも1つの性能測定基準を追跡するステップと、
前記追跡された性能測定基準に基づいてメモリシーケンサの操作性を調整するステップと
を含むことを特徴とする方法。
【請求項28】
少なくとも1つの性能測定基準を追跡する前記動作は、ページヒット率、プリフェッチヒット、およびキャッシュヒット率から成るグループから選択された少なくとも1つの性能測定基準を追跡するステップを含むことを特徴とする請求項27に記載の方法。
【請求項29】
前記追跡された測定基準に基づいてメモリシーケンサの操作性を調整する前記動作は、前記追跡された測定基準が閾値レベルを超えている場合、メモリシーケンサの操作性を調整するステップを含むことを特徴とする請求項28に記載の方法。
【請求項30】
前記閾値レベルを、前記追跡ステップを実行するパフォーマンスカウンタにプログラミングするステップをさらに含むことを特徴とする請求項29に記載の方法。
【請求項31】
前記追跡された測定基準に基づいてメモリシーケンサの操作性を調整する前記動作は、前記追跡された測定基準が閾値レベル未満である場合、メモリシーケンサの操作性を調整するステップを含むことを特徴とする請求項28に記載の方法。
【請求項32】
前記閾値レベルを、前記追跡ステップを実行するパフォーマンスカウンタにプログラミングするステップをさらに含むことを特徴とする請求項31に記載の方法。
【請求項33】
前記メモリモジュールに設けられているメモリ装置にアクセスする旨のメモリ要求を受信する前記動作は、前記メモリ要求に対応する光信号を受信するステップを含むことを特徴とする請求項28に記載の方法。
【請求項34】
前記追跡された性能測定基準は、ページヒット率を含み、前記追跡された性能測定基準に基づいてメモリシーケンサの操作性を調整する前記動作は、前記メモリ装置における開いたページの数を変更するために前記メモリシーケンサの操作性を調整するステップを含むことを特徴とする請求項28に記載の方法。
【請求項35】
前記追跡された性能測定基準は、ページヒット率を含み、前記追跡された性能測定基準に基づいてメモリシーケンサの操作性を調整する前記動作は、自動プリチャージモードに切り替えるために前記メモリシーケンサの操作性を調整するステップを含むことを特徴とする請求項28に記載の方法。
【請求項36】
前記追跡された性能測定基準は、プリフェッチヒットのパーセンテージを含み、前記追跡された性能測定基準に基づいてメモリシーケンサの操作性を調整する前記動作は、プリフェッチを実行可能または実行不可にするために前記メモリシーケンサの操作性を調整するステップを含むことを特徴とする請求項28に記載の方法。
【請求項37】
前記追跡された性能測定基準は、プリフェッチヒットのパーセンテージを含み、前記追跡された性能測定基準に基づいてメモリシーケンサの操作性を調整する前記動作は、プリフェッチ要求の数を決定するために前記メモリシーケンサの操作性を調整するステップを含むことを特徴とする請求項28に記載の方法。
【請求項38】
前記追跡された性能測定基準は、キャッシュヒット率を含み、前記追跡された性能測定基準に基づいてメモリシーケンサの操作性を調整する前記動作は、前記キャッシュを使用不可にするために前記メモリシーケンサの操作性を調整するステップを含むことを特徴とする請求項28に記載の方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate


【公表番号】特表2007−537541(P2007−537541A)
【公表日】平成19年12月20日(2007.12.20)
【国際特許分類】
【出願番号】特願2007−513220(P2007−513220)
【出願日】平成17年5月4日(2005.5.4)
【国際出願番号】PCT/US2005/015694
【国際公開番号】WO2005/114427
【国際公開日】平成17年12月1日(2005.12.1)
【出願人】(500014068)マイクロン テクノロジー,インコーポレイテッド (69)
【氏名又は名称原語表記】MICRON TECHNOLOGY, INC.
【Fターム(参考)】