(57)【要約】メモリモジュールはいくつかのメモリデバイスに結合されたメモリハブを含む。メモリハブは、１つ以上のシステムメトリックスをトラックする少なくとも１つのパフォーマンスカウンタを含む。メトリックスには、例えば、ページヒットレート、プリフェッチの数や割合、キャッシュヒットレートや割合、読み出しレート、読み出し要求の数、書き込みレート、書き込み要求の数、メモリバス利用のレートや割合、ローカルハブ要求レートや数、および／またはリモートハブ要求レートや数がある。
2007520800.tif 000002
【特許請求の範囲】
【請求項１】
複数のメモリデバイスと、
メモリハブと
を備えたメモリモジュールであって、
前記メモリデバイスの少なくとも１つのメモリセルへのアクセスのためにメモリ要求を受け取るリンクインターフェイスと
前記メモリデバイスに結合されたメモリデバイスインターフェイスであって、前記メモリデバイスの少なくとも１つのメモリセルへのアクセスのために前記メモリデバイスへメモリ要求を結合し、前記メモリ要求の少なくともいくつかに応答して読み出しデータを受け取るように動作可能であるメモリデバイスインターフェイスと、
前記メモリデバイスインターフェイスに結合されたパフォーマンスカウンタであって、少なくとも１つのパフォーマンスメトリックをトラックするように動作可能なパフォーマンスカウンタと
を備えたことを特徴とするメモリモジュール。
【請求項２】
請求項１に記載のメモリモジュールであって、前記リンクインターフェイスは、光入出力ポートを備えたことを特徴とするメモリモジュール。
【請求項３】
請求項１に記載のメモリモジュールであって、前記メモリデバイスインターフェイスは、メモリコントローラを備え、前記パフォーマンスカウンタは、前記メモリコントローラに結合されていることを特徴とするメモリモジュール。
【請求項４】
請求項１に記載のメモリモジュールであって、前記メモリデバイスインターフェイスは、キャッシュを備え、前記パフォーマンスカウンタは、前記キャッシュに結合されていることを特徴とするメモリモジュール。
【請求項５】
請求項１に記載のメモリモジュールであって、前記メモリハブは、プリフェッチバッファをさらに備え、前記パフォーマンスカウンタは、前記プリフェッチバッファにさらに結合されていることを特徴とするメモリモジュール。
【請求項６】
請求項１に記載のメモリモジュールであって、前記メモリハブは、メインテナンスバスをさらに備え、前記パフォーマンスカウンタは、前記メインテナンスバスにさらに結合されていることを特徴とするメモリモジュール。
【請求項７】
請求項１に記載のメモリモジュールであって、前記パフォーマンスカウンタは、前記リンクインターフェイスにさらに結合されていることを特徴とするメモリモジュール。
【請求項８】
請求項１に記載のメモリモジュールであって、前記パフォーマンスカウンタによってトラックされる前記パフォーマンスメトリックは、ページヒットレート、プリフェッチヒットの数または割合、キャッシュヒットレートまたは割合、読み出しレート、読み出し要求の数、書き込みレート、書き込み要求の数、メモリバス利用のレートまたは割合、ローカルハブ要求レートまたは数、およびリモートハブ要求レートまたは数からなるグループから選択された少なくとも１つのパフォーマンスメトリックを備えたことを特徴とするメモリモジュール。
【請求項９】
請求項１に記載のメモリモジュールであって、前記メモリデバイスは、ダイナミックランダムアクセスメモリデバイスを備えたことを特徴とするメモリモジュール。
【請求項１０】
請求項１に記載のメモリモジュールであって、前記パフォーマンスカウンタによってトラックされる前記パフォーマンスメトリックは、メモリハブを通してメモリ要求およびデータの結合に関連するパフォーマンスメトリックを備えたことを特徴とするメモリモジュール。
【請求項１１】
複数のメモリデバイスの少なくとも１つのメモリセルへのアクセスのためにメモリ要求を受け取るリンクインターフェイスと、
前記メモリデバイスに結合されたメモリデバイスインターフェイスであって、前記メモリデバイスの少なくとも１つのメモリセルへのアクセスのために前記メモリデバイスにメモリ要求を結合し、前記メモリ要求の少なくともいくつかに応答して読み出しデータを受け取るように動作可能であるメモリデバイスインターフェイスと、
前記メモリデバイスインターフェイスに結合されたパフォーマンスカウンタであって、少なくとも１つのパフォーマンスメトリックをトラックするように動作可能なパフォーマンスカウンタと
を備えたことを特徴とするメモリハブ。
【請求項１２】
請求項１１に記載のメモリハブであって、前記リンクインターフェイスは、光入出力ポートを備えたことを特徴とするメモリハブ。
【請求項１３】
請求項１１に記載のメモリハブであって、前記メモリデバイスインターフェイスは、メモリコントローラを備え、前記パフォーマンスカウンタは、前記メモリコントローラに結合されていることを特徴とするメモリハブ。
【請求項１４】
請求項１１に記載のメモリハブであって、前記メモリデバイスインターフェイスは、キャッシュを備え、前記パフォーマンスカウンタは、前記キャッシュに結合されていることを特徴とするメモリハブ。
【請求項１５】
請求項１１に記載のメモリハブであって、プリフェッチバッファをさらに備え、前記パフォーマンスカウンタは、前記プリフェッチバッファにさらに結合されていることを特徴とするメモリハブ。
【請求項１６】
請求項１１に記載のメモリハブであって、メインテナンスバスをさらに備え、前記パフォーマンスカウンタは、前記メインテナンスバスにさらに結合されていることを特徴とするメモリハブ。
【請求項１７】
請求項１１に記載のメモリハブであって、前記パフォーマンスカウンタは、前記リンクインターフェイスにさらに結合されていることを特徴するメモリハブ。
【請求項１８】
請求項１１に記載のメモリハブであって、前記パフォーマンスカウンタによってトラックされる前記パフォーマンスメトリックは、ページヒットレート、プリフェッチヒットの数または割合、キャッシュヒットレートまたは割合、読み出しレート、読み出し要求の数、書き込みレート、書き込み要求の数、メモリバス利用のレートまたは割合、ローカルハブ要求レートまたは数、およびリモートハブ要求レートまたは数からなるグループから選択された少なくとも１つのパフォーマンスメトリックを備えたことを特徴とするメモリハブ。
【請求項１９】
請求項１１に記載のメモリハブであって、前記パフォーマンスカウンタによってトラックされる前記パフォーマンスメトリックは、前記メモリハブを通してメモリ要求およびデータの結合に関連するパフォーマンスメトリックを備えたことを特徴とするメモリハブ。
【請求項２０】
請求項１１に記載のメモリハブであって、前記メモリデバイスは、ダイナミックランダムアクセスメモリデバイスを備えたことを特徴とするメモリハブ。
【請求項２１】
中央処理装置（「ＣＰＵ」）と、
前記ＣＰＵに結合されたシステムコントローラであって、入力ポートおよび出力ポートを有するシステムコントローラと、
前記システムコントローラを通して前記ＣＰＵに結合された入力デバイスと、
前記システムコントローラを通して前記ＣＰＵに結合された出力デバイスと、
前記システムコントローラを通して前記ＣＰＵに結合されたストレージデバイスと、
複数のメモリモジュールと
を備えたコンピュータシステムであって、前記メモリモジュールのそれぞれは、
複数のメモリデバイスと、
メモリハブと
を備え、前記メモリハブは、
前記メモリデバイスの少なくとも１つのメモリセルへのアクセスのためにメモリ要求を受け取るリンクインターフェイスと、
前記メモリデバイスに結合されたメモリデバイスインターフェイスであって、前記メモリデバイスの少なくとも１つのメモリセルへのアクセスのために前記メモリデバイスにメモリ要求を結合し、前記メモリ要求の少なくともいくつかに応答して読み出しデータを受け取るように動作可能であるメモリデバイスインターフェイスと、
前記メモリデバイスインターフェイスに結合されたパフォーマンスカウンタであって、少なくとも１つのパフォーマンスメトリックをトラックするように動作可能なパフォーマンスカウンタと
を備えたことを特徴とするコンピュータシステム。
【請求項２２】
請求項２１に記載のコンピュータシステムであって、前記リンクインターフェイスは、光入出力ポートを備えたことを特徴とするコンピュータシステム。
【請求項２３】
請求項２１に記載のコンピュータシステムであって、前記メモリデバイスインターフェイスは、メモリコントローラを備え、前記パフォーマンスカウンタは、前記メモリコントローラに結合されていることを特徴とするコンピュータシステム。
【請求項２４】
請求項２１に記載のコンピュータシステムであって、前記メモリデバイスインターフェイスは、キャッシュを備え、前記パフォーマンスカウンタは、前記キャッシュに結合されていることを特徴とするコンピュータシステム。
【請求項２５】
請求項２１に記載のコンピュータシステムであって、前記メモリハブは、プリフェッチバッファをさらに備え、前記パフォーマンスカウンタは、前記プリフェッチバッファにさらに結合されていることを特徴とするコンピュータシステム。
【請求項２６】
請求項２１に記載のコンピュータシステムであって、前記メモリハブは、メインテナンスバスをさらに備え、前記パフォーマンスカウンタは、前記メインテナンスバスにさらに結合されていることを特徴とするコンピュータシステム。
【請求項２７】
請求項２１に記載のコンピュータシステムであって、前記パフォーマンスカウンタは、前記リンクインターフェイスにさらに結合されていることを特徴とするコンピュータシステム。
【請求項２８】
請求項２１に記載のコンピュータシステムであって、前記パフォーマンスカウンタによってトラックされる前記パフォーマンスメトリックは、ページヒットレート、プリフェッチヒットの数または割合、キャッシュヒットレートまたは割合、読み出しレート、読み出し要求の数、書き込みレート、書き込み要求の数、メモリバス利用のレートまたは割合、ローカルハブ要求レートまたは数、およびリモートハブ要求レートまたは数からなるグループから選択された少なくとも１つのパフォーマンスメトリックを備えたことを特徴とするコンピュータシステム。
【請求項２９】
請求項２１に記載のコンピュータシステムであって、前記メモリデバイスは、ダイナミックランダムアクセスメモリデバイスを備えたことを特徴とするコンピュータシステム。
【請求項３０】
請求項２１に記載のコンピュータシステムであって、前記パフォーマンスカウンタによってトラックされる前記パフォーマンスメトリックは、前記メモリハブを通してメモリ要求およびデータの結合に関連するパフォーマンスメトリックを備えたことを特徴とするコンピュータシステム。
【請求項３１】
メモリモジュールからデータを読み出す方法であって、
前記メモリモジュールにマウントされたメモリデバイスへのアクセスのためにメモリ要求を受け取ることと、
前記受け取ったメモリ要求に応答して前記メモリデバイスに前記メモリ要求を結合することであって、前記メモリ要求の少なくともいくつかは読み出しデータに対する読み出しメモリ要求であることと、
前記読み出しメモリ要求に応答して読み出しデータを受け取ることと、
前記メモリモジュール内で少なくとも１つのパフォーマンスメトリックをトラックすることと
を備えることを特徴とする方法。
【請求項３２】
請求項３１に記載の方法であって、少なくとも１つのパフォーマンスメトリックをトラックするアクトは、ページヒットレート、プリフェッチヒットの数または割合、キャッシュヒットレートまたは割合、読み出しレート、読み出し要求の数、書き込みレート、書き込み要求の数、メモリバス利用のレートまたは割合、ローカルハブ要求レートまたは数、およびリモートハブ要求レートまたは数からなるグループから選択された少なくとも１つのパフォーマンスメトリックをトラックすることを備えることを特徴とする方法。
【請求項３３】
請求項３１に記載の方法であって、少なくとも１つのパフォーマンスメトリックをトラックするアクトは、前記メモリハブを通してメモリ要求およびデータの結合に関連するパフォーマンスメトリックをトラックすることを備えることを特徴とする方法。
【請求項３４】
請求項３１に記載の方法であって、前記メモリモジュールにマウントされたメモリデバイスへのアクセスのためにメモリ要求を受け取るアクトは、前記メモリ要求に対応する光信号を受け取ることを備えることを特徴とする方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本願は、２００３年１２月２９日に出願された「ＭＥＭＯＲＹ  ＨＵＢ  ＡＮＤ  ＭＥＴＨＯＤ  ＦＯＲ  ｍｅｍｏｒｙ  ｓｙｓｔｅｍ  ＰＥＲＦＯＲＭＡＮＣＥ  ＭＯＮＩＴＯＲＩＮＧ」と題された米国特許出願番号１０／７４７，９８４の出願日の利益を主張し、参照により本願明細書に組み込まれる。
【０００２】
本発明は、コンピュータシステムに関し、より詳しくは、いくつかのメモリデバイスをプロセッサや他のメモリアクセスデバイスに結合するメモリハブを有するコンピュータシステムに関する。
【背景技術】
【０００３】
コンピュータシステムは、プロセッサによってアクセスされるデータを格納するため、ダイナミックランダムアクセスメモリ（「ＤＲＡＭ」）デバイスなどのメモリデバイスを使用する。これらのメモリデバイスは、通常、コンピュータシステムにおけるシステムメモリとして使用される。代表的なコンピュータシステムでは、プロセッサは、プロセッサバスおよびメモリコントローラを通してシステムメモリと通信する。プロセッサはメモリ要求を発行し、これには、読み出しコマンドなどのメモリコマンドおよびデータや命令が読み出されるロケーションを指定するアドレスが含まれる。メモリコントローラは、コマンドとアドレスを使用して、適当なコマンド信号ならびに行および列アドレスを生成し、これらがシステムメモリに適用される。これらのコマンドおよびアドレスに応答して、データがシステムメモリとプロセッサとの間で受け渡される。メモリコントローラは、システムコントローラの一部であることが多く、システムコントローラは、プロセッサバスをＰＣＩバスなどの拡張バスに結合するブリッジ回路も含む。
【０００４】
メモリデバイスの動作スピードは断続的に増進しているが、この動作スピードの増進は、プロセッサの動作スピードにおける増進と足並みを揃えていない。プロセッサをメモリデバイスに結合するメモリコントローラの動作スピードにおける増進はさらに遅い。メモリコントローラおよびメモリデバイスの比較的遅いスピードは、プロセッサとメモリデバイスとの間のデータ帯域を制限している。
【０００５】
プロセッサとメモリデバイスとの間のこの限られた帯域に加えて、コンピュータシステムのパフォーマンスは、システムメモリデバイスからデータを読み出すのに必要な時間を増大するレイテンシ問題によっても制限される。より具体的には、メモリデバイスの読み出しコマンドがシンクロナスＤＲＡＭ（「ＳＤＲＡＭ」）などのシステムメモリデバイスに結合されるとき、読み出しデータは数クロック期間の遅延の後にようやくＳＤＲＡＭデバイスから出力される。それゆえ、ＳＤＲＡＭデバイスはバーストデータを高データレートで同期して出力することができ、データを最初に提供する際の遅延により、このようなＳＤＲＡＭデバイスを用いるコンピュータシステムの動作スピードが顕著に遅くなることがある。
【０００６】
このメモリのレイテンシ問題を軽減することに対する１つのアプローチは、メモリハブを通してプロセッサに結合した複数のメモリデバイスを使用することである。メモリハブアーキテクチャにおいて、システムコントローラまたはメモリコントローラはいくつかのメモリモジュールに結合され、その各々がいくつかのメモリデバイスに結合されたメモリハブを含む。メモリハブは、コントローラとメモリデバイスとの間でメモリ要求および応答を効率的にルートする。このアーキテクチャを用いたコンピュータシステムは、高い帯域を有することができる。というのは、あるメモリデバイスが前のメモリアクセスに応答している間に、プロセッサが別のメモリデバイスにアクセスすることができるからである。例えば、システム中のあるメモリデバイスが読み出しデータをプロセッサに提供する準備をしている間に、プロセッサはシステム中の別のメモリデバイスの１つに書き込みデータを出力することができる。
【０００７】
メモリハブを用いたコンピュータシステムは優れたパフォーマンスを提供するかもしれないが、それでもいくつかの理由で最適のスピードで動作しないことが多い。例えば、メモリハブはより大きなメモリ帯域をコンピュータシステムに提供することができるが、なお上述したタイプのレイテンシの問題を被る。より具体的には、あるメモリデバイスがデータを受け渡す準備をしている間に、プロセッサは別のメモリデバイスと通信することができるが、時に、メモリデバイスからのデータが使用できるようになる前に、別のメモリデバイスからデータを受け取る必要があることがある。別のメモリデバイスから受け取ったデータが使用できるようになる前に、あるメモリデバイスからデータを受け取っていなければならない場合、レイテンシ問題によりこのようなコンピュータシステムの動作スピードは引き続き遅くなる。
【０００８】
メモリデバイスにおけるレイテンシを低減するために使用されてきた１つの技法は、データをプリフェッチすることである。すなわち、実行されているプログラムによってデータが要求される前にシステムメモリからデータを読み出すことである。一般に、プリフェッチされるデータは、前にフェッチされたデータのパターンに基づいて選択される。このパターンは、データがフェッチされるアドレスのシーケンスと同じくらい単純なものとすることができ、それにより、実行されているプログラムによってデータが必要とされる前にそのシーケンスの後続のアドレスからデータをフェッチすることができる。「ストライド」として知られるこのパターンは勿論、より複雑なものとすることができる。
【０００９】
さらに、メモリハブはより大きなメモリ帯域をコンピュータシステムに提供することができるけれども、なおスループットの問題を被る。例えば、メモリセルの特定の行からデータを読み出すことができる前に、そのアレイにおけるデジットラインは、通常、アレイのデジットラインを釣り合わせることによってプリチャージされる。この特定の行は、それでその行のメモリセルをそれぞれの列のデジットラインに結合することによってオープンされる。各列のデジットライン間に結合されたそれぞれのセンスアンプはそれぞれのメモリセルに格納されたデータに対応する電圧の変化に反応する。行がオープンされると、デジットラインをデータの読み出しパスに結合することによってオープンされた行の各列からデータを結合することができる。行をオープンすることは、ページと称されることもあり、それゆえ有限の時間を消費し、メモリのスループットを制限する。
【００１０】
最後に、プリフェッチするかどうか、ならびに行をプリチャージするか、オープンするかどうか、およびアクセスしたデータをキャッシュするかどうかの最適な決定は、時間によって変わり、メモリハブに結合されたプロセッサによって実行されているアプリケーションに応じて変化することがある。
【００１１】
メモリハブアーキテクチャでの別の潜在的な問題は、メモリ要求およびデータを、メモリハブを通して下流のメモリモジュールとの間で結合するためのコンジットとしてのメモリハブの使用に関する。メモリ要求およびデータがメモリハブを通して効率的にルートされない場合、メモリハブを用いたメモリシステムのメモリ帯域が厳しく制限されることがある。
【発明の開示】
【発明が解決しようとする課題】
【００１２】
上述した事項のすべては、メモリモジュールを、モジュールにマウントされたメモリハブを含め、様々な態様で構成することによってある程度まで対応することができる。しかし、メモリモジュールの構成を最適化することができるようになる前に、パフォーマンスが欠如している領域を判定することができるので、メモリハブのパフォーマンスを分析する必要があるか、分析することが望ましい。しかし、プロセッサベースのシステムに使用されるメモリシステムの進行中のパフォーマンスを分析するために適した技法は開発されていない。
【００１３】
それゆえ、メモリハブを用いたメモリシステムのパフォーマンスを、システムの構成が最適化されるように判定することを可能にすることができる、メモリハブアーキテクチャの利点を提供するコンピュータアーキテクチャの必要性がある。
【課題を解決するための手段】
【００１４】
本発明の一態様によれば、複数のメモリデバイスおよびメモリハブを含むメモリモジュールおよび方法が提供される。メモリハブは、メモリデバイスの少なくとも１つにおけるメモリセルへのアクセスのためのメモリ要求を受け取る、光入出力ポートなどのリンクインターフェイスを収容する。メモリハブは、メモリデバイスに結合されたメモリデバイスインターフェイスをさらに収容し、このメモリデバイスインターフェイスはメモリ要求をメモリデバイスの少なくとも１つにおけるメモリセルへのアクセスのためにメモリデバイスに結合し、メモリ要求の少なくともいくつかに応答して読み出しデータを受け取るように動作可能である。メモリハブは、メモリデバイスインターフェイスに結合されたパフォーマンスカウンタおよび／またはリンクインターフェイスをさらに収容する。パフォーマンスカウンタは、ページヒットレート、プリフェッチヒットの数または割合、キャッシュヒットレートまたは割合、読み出しレート、読み出し要求の数、書き込みレート、書き込み要求の数、メモリバス利用のレートまたは割合、ローカルハブ要求レートまたは数、およびリモートハブ要求または数からなるグループから選択された少なくとも１つのメトリックをトラックするように動作可能である。
【発明を実施するための最良の形態】
【００１５】
本発明の一例によるコンピュータシステム１００を図１に示す。このコンピュータシステム１００は、特定の計算やタスクを行う特定のソフトウェアを実行するなど、様々なコンピューティング機能を行うためのプロセッサ１０４を含む。このプロセッサ１０４は、アドレスバス、コントロールバスおよびデータバスを通常含むプロセッサバス１０６を含む。このプロセッサバス１０６は、典型的にはキャッシュメモリ１０８に結合され、このキャッシュメモリは、前述の通り、普通、スタティックランダムアクセスメモリ（「ＳＲＡＭ」）である。最後に、このプロセッサバス１０６は、システムコントローラ１１０に結合され、このシステムコントローラは、時に「ノースブリッジ」または「メモリコントローラ」とも称される。
【００１６】
システムコントローラ１１０は、種々の他のコンポーネントのためのプロセッサ１０４への通信パスとしての役割を果たす。より具体的には、システムコントローラ１１０は、典型的にはグラフィックコントローラに結合されるグラフィックポートを含み、そしてこのグラフィックコントローラは、ビデオターミナル１１４に結合される。このシステムコントローラ１１０はまた、キーボードやマウスなどの１つ以上の入力デバイス１１８に結合されて、オペレータがコンピュータシステム１００とインターフェイスできるようにする。典型的には、コンピュータシステム１００は、システムコントローラ１１０を通してプロセッサ１０４に結合される、プリンタなどの１つ以上の出力デバイス１２０も含む。また、１つ以上のデータストレージデバイス１２４は、典型的には、システムコントローラ１１０を通してプロセッサ１０４に結合されて、プロセッサ１０４が内部または外部のストレージ媒体（図示せず）にデータを格納したり、データを取り出したりできるようになる。
【００１７】
代表的なストレージデバイス１２４の例には、ハードおよびフロッピーディスク、テープカセット、およびコンパクトディスク読み取り専用メモリ（ＣＤ−ＲＯＭ）が挙げられる。
【００１８】
システムコントローラ１１０は、いくつかのメモリモジュール１３０ａ，ｂ．．．ｎに結合され、これらのモジュールはコンピュータシステム１００のためのシステムメモリとして働く。メモリモジュール１３０は、好ましくはハイスピードリンク１３４を通してシステムコントローラ１１０に結合され、このハイスピードリンクは、光や電気の通信パスまたはその他の何らかのタイプの通信パスとすることができる。ハイスピードリンク１３４が光通信パスとして実装される場合、光通信パスは、例えば、１つ以上の光ファイバの形態とすることができる。このようなケースでは、システムコントローラ１１０およびメモリモジュールは光入出力ポートを含むか、光通信パスに結合された入出力ポートを分離することになる。ポイント−ポイントの構成でシステムコントローラ１１０に結合されたメモリモジュール１３０が図示され、ここでハイスピードリンク１３４の各セグメントは２つのポイントの間だけで結合されている。それゆえ、最後のメモリモジュール１３０ｎ以外のすべては、下流のメモリモジュール１３０との間で結合されるメモリ要求およびデータのためのコンジットとして使用される。しかし、他のトポロジーを使用することもできることが理解されよう。システムコントローラ１１０が選択的にスイッチ（図示せず）を通してメモリモジュールのそれぞれに結合されるスイッチングトポロジーを使用することもできる。使用することができる他のトポロジーは、当業者には明らかであろう。
【００１９】
メモリモジュール１３０のそれぞれは、３２のメモリデバイス１４８へのアクセスを制御するためのメモリハブ１４０を含み、これらのメモリデバイスは、図１に示した例では、シンクロナスダイナミックランダムアクセスメモリ（「ＳＤＲＡＭ」）デバイスである。最後のメモリモジュール１３０以外のすべてのメモリハブ１４０は、メモリコマンドを下流のメモリハブ１４０へ結合し、データを下流のメモリハブ１４０との間で結合するためのコンジットとしても働く。しかしながら、もっと少ないか、またはもっと多くの数のメモリデバイス１４８を使用することもでき、ＳＤＲＡＭデバイス以外のメモリデバイスを使用することも勿論できる。図１に示した例では、メモリハブ１４０は、ハイスピードリンク１３４を介して４つの独立したメモリチャンネル１４９上で通信する。この例では、図１には示していないが、４つのメモリハブコントローラ１２８が提供され、それぞれが１つのメモリチャンネル１４９からデータを受け取る。もっとすくないか、またはもっと多くの数のメモリチャンネル１４９を、他の例において使用することができる。メモリハブ１４０は、バスシステム１５０を通してシステムメモリデイバス１４８のそれぞれに結合され、このバスシステムは、普通、コントロールバス、アドレスバスおよびデータバスを含む。
【００２０】
本発明の一実施例によるメモリハブ２００を図２に示す。メモリハブ２００は、図１のメモリハブ１４０の代わりとすることができる。メモリハブ２００を、４つのメモリデバイス２４０ａ〜ｄに結合されているものとして図２に示す。これらのメモリデバイスは、本例では従来型のＳＤＲＡＭデバイスである。代替の実施形態においては、メモリハブ２００は、単に４つの異なるメモリデバイス２４０ａ〜ｄではなく、メモリデバイスの４つの異なるバンクに結合され、各バンクが典型的には複数のメモリデバイスを有する。しかし、一例を提供する目的のために、本説明は、４つのメモリデバイス２４０ａ〜ｄに結合されたメモリハブ２００を参照することにする。メモリの複数のバンクを収容するのに必要なメモリハブ２００の修正は当業者の知識の範囲内であることが認められよう。
【００２１】
メモリハブ２００にさらに含まれるものはメモリハブが位置するメモリモジュールを第１のハイスピードデータリンク２２０と第２のハイスピードデータリンク２２２にそれぞれ結合するためのリンクインターフェイス２１０ａ〜ｄと２１２ａ〜ｄである。これらのリンクインターフェイス２１０ａ〜ｄおよび２１２ａ〜ｄにより、メモリハブ２００を下流のメモリモジュール１３０とのメモリ要求およびデータのためのコンジットとして使用できるようになる。図１に関して先に議論したように、ハイスピードデータリンク２２０，２２２は、光または電気通信パスか、または他の何らかのタイプの通信パスを用いて実装することができる。リンクインターフェイス２１０ａ〜ｄ，２１２ａ〜ｄは従来型のものであり、ハイスピードデータリンク２２０，２２２とデータ、コマンドおよびアドレスを受け渡すのに使用される回路を含む。よく知られているように、このような回路には、当分野で周知のトランスミッタおよびレシーバロジックが含まれる。当業者は特定のタイプの通信パスと共に使用されるようにリンクインターフェイス２１０ａ〜ｄ，２１２ａ〜ｄを修正するのに充分な理解を有し、本発明の範囲から逸脱することなくリンクインターフェイス２１０ａ〜ｄ，２１２ａ〜ｄに対するこのような修正を成し得ることが認められるであろう。例えば、ハイスピードデータリンク２２０，２２２が光通信パスを用いて実装される場合には、リンクインターフェイス２１０ａ〜ｄ，２１２ａ〜ｄは、光通信パスを通して結合された光信号を電気信号に変換することができる光入出力ポートを含むことになる。
【００２２】
リンクインターフェイス２１０ａ〜ｄ、２１２ａ〜ｄは、バス２１４によって表される複数のバスおよび信号ラインを通してスイッチ２６０に結合される。バス２１４は従来型のものであり、書き込みデータバスおよび読み出しデータバスを含むが、単一の双方向データバスを変わりに提供して、リンクインターフェイス２１０ａ〜ｄ，２１２ａ〜ｄを通してデータを両方向に結合することもできる。当業者であれば、バス２１４は例として提供されており、バス２１４は、もっと少ないか、またはもっと多い信号ライン、例えば、キャッシュのコヒーレンシを保つために使用することができる要求ラインとスヌープラインなどをさらに含むことができることが認められよう。
【００２３】
リンクインターフェイス２１０ａ〜ｄ，２１２ａ〜ｄは、メモリハブ２００が先に説明したように、ポイント−ポイント構成のシステムメモリにおいて接続できるようにする回路を含む。このタイプの相互接続は、いくつかの理由でプロセッサ１０４およびメモリハブ２００の間のより良い信号結合を提供し、相対的に低いキャパシタンス、信号を反射する相対的に少ないライン不連続、および相対的に短い信号パスを含む。しかし、リンクインターフェイス２１０ａ〜ｄおよび２１２ａ〜ｄを使用して、メモリハブ２００に種々の他の構成で結合できるようにすることもできよう。
【００２４】
スイッチ２６０は、４つのメモリインターフェイス２７０ａ〜ｄにさらに結合され、これらメモリインターフェイスはシステムメモリ２４０ａ〜ｄにそれぞれ結合される。各システムメモリデバイス２４０ａ〜ｄについてそれぞれ別個の独立したメモリインターフェイス２７０ａ〜ｄを提供することによって、メモリハブ２００は、単一チャンネルのメモリアーキテクチャで典型的に生じるバスやメモリバンクの衝突を回避する。スイッチ２６０は、バス２７４によって表される複数のバスおよび信号ラインを通して各メモリインターフェイスに結合される。バス２７４は書き込みデータバス、読み出しデータバスおよび要求ラインを含む。しかし、単一の双方向データバスを、別個の書き込みデータバスおよび読み出しデータバスの代わりに、代替的に使用することができることは理解されよう。さらに、バス２７４は、これら上述したものよりもっと多いか、またはもっと少ない数の信号ラインを含むこともできる。
【００２５】
本発明の一実施形態において、各メモリインターフェイス２７０ａ〜ｄは、それが結合されているシステムメモリデバイス２４０ａ〜ｄに特に適合されている。より具体的には、各メモリインターフェイス２７０ａ〜ｄは、それが結合されているシステムメモリデバイス２４０ａ〜ｄによって、それぞれ、受け取られ、生成された特定の信号を提供し、受け取るように特に適合されている。また、メモリインターフェイス２７０ａ〜ｄは、異なるクロック周波数で動作するシステムメモリ２４０ａ〜ｄと共に動作することができる。結果として、メモリインターフェイス２７０ａ〜ｄにより、メモリハブ２３０と、メモリハブ２００に結合されたメモリデバイス２４０ａ〜ｄとの間のインターフェイスで発生することがある変更からプロセッサ１０４を分離し、メモリデバイス２４０ａ〜ｄがインターフェイスすることのできる環境をより制御されたものとする。
【００２６】
リンクインターフェイス２１０ａ〜ｄ，２１２ａ〜ｄおよびメモリインターフェイス２７０ａ〜ｄを結合するスイッチ２６０は、種々の従来型または以下の開発されたスイッチのいずれとすることができる。例えば、スイッチ２６０は、リンクインターフェイス２１０ａ〜ｄ，２１２ａ〜ｄおよびメモリインターフェイス２７０ａ〜ｄを種々の構成で互いに同時に結合することができるクロスバースイッチとすることができる。スイッチ２６０は、１組のマルチプレクサとすることもできる。マルチプレクサは、クロスバースイッチと同程度の接続性を提供しないが、それでもリンクインターフェイス２１０ａ〜ｄ，２１２ａ〜ｄのいくつかまたはすべてをメモリインターフェイス２７０ａ〜ｄのそれぞれに結合することができる。スイッチ２６０は、どのメモリアクセスが他のメモリアクセスに対してプライオリティを受けるべきであるかを判定するアービトレイションロジックを含んでもよい。しかしこの機能を行うアービトレイションは当業者には周知である。
【００２７】
図２をさらに参照して、メモリインターフェイス２７０ａ〜ｄのそれぞれは、それぞれのメモリコントローラ２８０、それぞれの書き込みバッファ２８２、およびそれぞれのキャッシュメモリユニット２８４を含む。メモリコントローラ２８０は、それが結合されているシステムメモリデバイス２４０ａ〜ｄにコントロール、アドレスおよびデータ信号を提供することによって、また、それが結合されているシステムメモリ２４０ａ〜ｄからデータ信号を受け取ることによって従来型のメモリコントローラと同じ機能を行う。書き込みバッファ２８２およびキャッシュメモリユニット２８４は、当技術分野において周知のように、タグメモリ、データメモリ、コンパレータなどを含むバッファおよびキャッシュメモリの通常のコンポーネントを含む。書き込みバッファ２８２およびキャッシュメモリユニット２８４に使用されるメモリデバイスは、ＤＲＡＭデバイス、スタティックランダムアクセスメモリ（「ＳＲＡＭ」）デバイス、他のタイプのメモリデバイス、または３つすべての組合せのどれかとすることができる。さらに、これらのメモリデバイスのいずれかまたはすべてならびにキャッシュメモリユニット２８４に使用される他のコンポーネントは、組み込み型またはスタンドアロン型のデバイスのどれかとすることができる。
【００２８】
各メモリインターフェイス２７０ａ〜ｄにおける書き込みバッファ２８２は、読み出し要求がサービスされている間、書き込み要求を格納するために使用される。このようなシステムにおいて、プロセッサ１０４は、書き込み要求が向けられたメモリデバイスが先の書き込みまたは読み出し要求をサービスしており、ビジーであったとしてもシステムメモリデバイス２４０ａ〜ｄに書き込み要求を発行することができる。このアプローチを用いると、後の読み出し要求がサービスされている間に、より以前の書き込み要求を書き込みバッファ２８２に格納することができるので、メモリ要求は順序外でサービスすることができる。読み出し要求がサービスできるように書き込み要求をバッファする能力により、メモリの読み出しレイテンシを大きく低減することができる。というのは、読み出し要求にはその時間順にかかわらず一番のプライオリティを与えることができるからである。例えば、読み出し要求の散在した一連の書き込み要求を書き込みバッファ２８２に格納して、読み出し要求がパイプライン化された仕方でサービスできるようにし、続いて格納された書き込み要求をパイプライン化された仕方でサービスすることができる。結果として、書き込み要求および読み出し要求を交互するために書き込み要求をメモリデバイス２７０ａ〜ｄに結合し、その後に読み出し要求をメモリデバイス２７０ａ〜ｄに結合する長いセトリングタイムを避けることができる。
【００２９】
各メモリインターフェイス２７０ａ〜ｄにおけるキャッシュメモリユニット２８４の使用により、プロセッサ１０４がそれぞれのシステムメモリデバイス２４０ａ〜ｄに向けられた読み出しコマンドに対応したデータを、そのデータが最近そのメモリデバイス２４０ａ〜ｄから読み出されたか、または書き込まれた場合に、メモリデバイス２４０ａ〜ｄがそのようなデータを提供するのを待つことなく、受け取ることができるようになる。キャッシュメモリユニット２８４は、このように、システムメモリデバイス２４０ａ〜ｄの読み出しレイテンシを低減して、コンピュータシステムのメモリ帯域を最大化する。同様に、プロセッサ１０４は、キャッシュメモリユニット２８４に書き込みデータを格納することができ、そして同じメモリインターフェイス２７０ａ〜ｄにおけるメモリコントローラ２８０がキャッシュメモリユニット２８４からそれが結合されているシステムメモリデバイス２４０ａ〜ｄに書き込みデータをトランスファする間に他の機能を行うことができる。
【００３０】
メモリハブ２００にさらに含まれるものは、ダイアグノスティックバス２９２を通してスイッチ２６０に結合されたパフォーマンスモニタ２９０である。このパフォーマンスモニタ２９０はスイッチ２６０を通してメモリハブ２００のパフォーマンスをモニタする。例えば、パフォーマンスモニタ２９０は、メモリハブ２００で発生するキャッシュヒット、メモリページヒットまたはプリフェッチヒットの数を追跡することができる。パフォーマンスモニタ２９０はまた、リンクインターフェイス２１０ａ〜ｄ、２１２ａ〜ｄおよびスイッチ２６０を介してメモリハブ２００を通してメモリ要求およびデータの結合をモニタして、ハブ２００がどのくらいビジーであるか、またメモリ要求およびデータを効率的に、過剰な遅延なく結合しているかを判定することもできる。パフォーマンスモニタ２９０は、さらにＳＭＢｕｓ（Ｓｙｓｔｅｍ  Ｍａｎａｇｅｍｅｎｔ  Ｂｕｓ）やＪＴＡＧ（Ｊｏｉｎｔ  Ｔｅｓｔ  Ａｃｔｉｏｎ  Ｇｒｏｕｐ）およびＩＥＥＥ１１４９．１標準によるメインテナンスバスなどのメインテナンスバス２９６にさらに結合される。ＳＭＢｕｓおよびＪＴＡＧの両標準は、当業者によってよく知られている。一般に、メインテナンスバス２９６は、パフォーマンスモニタ２９０によってトラックされるパフォーマンス統計へのユーザアクセスを提供する。メインテナンスバス２９６は、本発明の範囲から逸脱することなく、従来のバス標準から修正することができることが認められよう。さらに、パフォーマンス統計は、他の手段によってパフォーマンスモニタ２９０から結合できることが認められよう。
【００３１】
メモリハブ２００にさらに含まれるものは、バス２８８を通してスイッチ２６０に結合されるＤＭＡエンジン２８６である。このＤＭＡエンジン２８６は、メモリハブをイネーブルして、データのブロックをシステムメモリの１つのロケーションからシステムメモリの別のロケーションへ、プロセッサ１０４からの介入なく、動かす。バス２８８は、システムメモリにおけるデータトランスファを取り扱うために、アドレス、コントロールおよびデータバスやそれらの類似物など、複数の従来型のバスラインおよび信号ラインを含む。当業者によって周知の従来のＤＭＡ動作は、ＤＭＡエンジン２８６により実装することができる。このＤＭＡエンジン２８６はシステムメモリ中のリンクリストを読み出して、プロセッサの介入なくＤＭＡメモリ動作を実行することができ、したがってプロセッサ１０４および帯域の限られたシステムバスがメモリ動作を実行することから開放する。ＤＭＡエンジン２８６は、複数チャンネル上でのＤＭＡ動作（例えば、システムメモリデバイス２４０ａ〜ｄのそれぞれについて）を収容する回路を含むことができる。このような複数チャンネルのＤＭＡエンジンは、当分野において周知であり、従来の技術を用いて実装することができる。
【００３２】
パフォーマンスモニタ２９０は、メモリハブ２００において組み込み型の回路であることが好ましい。しかしながら、メモリハブ２００に結合された別個のパフォーマンスモニタを含むことも可能である。
【００３３】
上述したように、メモリデバイスにおけるレイテンシを低減することに対する１つのアプローチは、データをプリフェッチすることである。したがって、メモリハブ２００は、プリフェッチバッファ２９８を含むプリフェッチシステム２９５をさらに含む。簡単には、メモリハブ２００におけるプリフェッチシステム２９５は、プログラムの実行中にどのデータが必要となるであろうかを予期し、そしてこれらのデータをプリフェッチし、それらをプリフェッチバッファ２９８のようなプリフェッチシステム２９５の一部である１つ以上のバッファに格納する。プリフェッチシステム２９５は、プリフェッチバッファ２９８を含むいくつかのプリフェッチバッファを含み、その数は、前記の特許明細書における説明のように、動作条件に依存して可変とすることができる。簡単には、プリフェッチバッファが図２のメモリデバイスインターフェイス２７０ｃからプリフェッチされたデータを受け取る。このデータは、後続のメモリアクセスに利用可能になるようにプリフェッチバッファに格納される。データは、それでリンクインターフェイス２１２ｄに結合される。図２においてメモリデバイスインターフェイス２７０ｃおよびリンクインターフェイス２１２ｄに結合された１つのプリフェッチシステムが示されているが、いくつかの実施形態においては、プリフェッチシステム２９５は複数のリンクインターフェイスおよび／または複数のメモリデバイスインターフェイスに結合され得ることが理解されるべきである。さらに、いくつかの実施形態においては、複数のプリフェッチシステムが１つまたは複数のリンクインターフェイスおよび／またはメモリデバイスインターフェイスとの通信において提供され得る。
【００３４】
パフォーマンスデータを取得するメモリハブの一部の別の実施形態が図３に示されている。図３に示す例において、少なくとも１つのパフォーマンスカウンタ３００がメモリコントローラ３０２との通信において提供される。パフォーマンスカウンタ３００はさらに、プリフェッチバッファ３０６、キャッシュ３０８、リンク３１０および３１４、そしてメインテナンスバス３１８との通信がある。本願のいくつかの例において、パフォーマンスカウンタ３００が図３に示す１つ以上のコンポーネントと通信していないかもしれないことが理解されるべきである。さらに他の例では、１つ以上のパフォーマンスカウンタが図３に示していないメモリハブの他の構成要素と通信する。
【００３５】
パフォーマンスカウンタ３００は、メモリアクセスおよび／またはパフォーマンスと関連付けられた１つ以上のメトリックスをトラックし、本願の一例では、例えば、ページヒットレート、プリフェッチヒットの数または割合、キャッシュヒットレートや割合、読み出しレート、読み出し要求の数、書き込みレート、書き込み要求の数、メモリバス利用のレートや割合、ローカルバス要求レートや数、リモートハブ要求レートや数を含む。パフォーマンスカウンタ３００はまた、メモリハブを通してメモリ要求およびデータの結合をモニタして、ハブがどれくらいビジーか、またメモリ要求およびデータを効率的に、過剰な遅延なく、結合しているかを判定する。パフォーマンスカウンタ３００は、メモリハブおよびそのカウンタが通信しているコンポーネントの構成に応じて、他のパフォーマンス特性をモニタできるであろうことが理解されるべきである。いずれの場合でも、パフォーマンスカウンタ３００はパフォーマンス特性をトラックし、好ましくは、これらの特性をメモリモジュール１３０から通信して、調べることができるようにする。例えば、パフォーマンス特性を示すデータは、メインテナンスバス３１８を通して結合することができる。メインテナンスバス３１８は、ユーザにパフォーマンスカウンタ３００へのアクセスを提供して、コンピュータシステムの性能にアクセスすることができる。例えば、パフォーマンス特性は、メインテナンスバス３１８を介して別個のＰＣホストにダウンロードすることができる。パフォーマンス特性を結合し、そして／または使用する他の手段は、当業者には明らかであろう。
【００３６】
以上より、本発明の特定の実施形態について例示の目的でここに説明したが、本発明の趣旨および範囲から逸脱することなく、様々な修正をなし得ることが認められよう。したがって、本発明は添付の特許請求の範囲によるものを除いて限定されない。
【図面の簡単な説明】
【００３７】
【図１】図１は、メモリハブが複数のメモリモジュールのそれぞれに含まれている、本発明の一例によるコンピュータシステムのブロック図である。
【図２】図２は、本発明の一例によるパフォーマンスモニタを収容する、図１のコンピュータシステムに使用されたメモリハブのブロック図である。
【図３】図３は、本発明の一例によるパフォーマンスカウンタを収容するメモリハブのブロック図である。
【図１】
2007520800.tif 000003
【図２】
2007520800.tif 000004
【図３】
2007520800.tif 000005
【国際調査報告】
2007520800.tif 000006