(57)【要約】      （修正有）【課題】メモリ・システムにおいてパフォーマンス・モニタリングシステムおよび方法を提供する。【解決手段】メモリ・システムは、メモリ・コントローラ、複数のメモリ・デバイス、メモリ・バス、およびメモリ・ハブ・デバイスを含む。メモリ・コントローラは、メモリ・アクセス要求を受信しそれらに応答する。メモリ・ハブ・デバイスは、アドレス情報、制御情報、およびデータ情報の１つ以上を、メモリ・バスを介してメモリ・ハブ・デバイスとメモリ・コントローラとの間で転送するためのメモリ・インタフェースを含む。メモリ・ハブ・デバイスは、メモリ・デバイスに接続するメモリ・デバイス・インタフェースも含む。メモリ・ハブ・デバイスは、システム動作中の規定時間間隔に亘って、メモリ・バスの利用、メモリ・デバイスの利用、およびパフォーマンス特性の１つ以上をモニタし報告するためのパフォーマンス・モニタをさらに含む。【選択図】図７
2008041089.tif 000002
【特許請求の範囲】
【請求項１】
処理システムのためにデータを記憶し読み出すためのメモリ・システムであって、
メモリ・アクセス要求を受信しそれに応答するためのメモリ・コントローラと、
複数のメモリ・デバイスと、
前記メモリ・コントローラに接続するメモリ・バスと、
前記メモリ・バスに接続するメモリ・ハブ・デバイスとを含み、前記メモリ・デバイスは、
アドレス情報、制御情報、およびデータ情報の１つ以上を、前記メモリ・バスを介して前記メモリ・ハブ・デバイスと前記メモリ・コントローラとの間で転送するためのメモリ・インタフェースと、
前記メモリ・デバイスに接続するメモリ・デバイス・インタフェースと、
システム動作中の規定時間間隔に亘って、メモリ・バスの利用、メモリ・デバイスの利用、およびパフォーマンス特性の１つ以上をモニタし報告するためのパフォーマンス・モニタと
を含むメモリ・システム。
【請求項２】
前記報告が、ダウンストリーム利用バス帯域幅、アップストリーム利用バス帯域幅、平均読取り待ち時間、および読取り対書込みの帯域幅比の１つ以上を含む、請求項１に記載のメモリ・システム。
【請求項３】
前記パフォーマンス・モニタが、前記アドレス情報、制御情報、およびデータ情報の１つ以上の中で検出された特定のイベントを記録するためのイベント・カウンタ・アレイを含む、請求項１に記載のメモリ・システム。
【請求項４】
前記特定のイベントが読取りコマンド、書込みコマンド、および読取りコマンドへの応答の１つ以上を含む、請求項３に記載のメモリ・システム。
【請求項５】
前記パフォーマンス・モニタが、規定時間の経過またはイベント数しきい値への到達の１つ以上が起きた後に、前記イベント・カウンタ・アレイ内の１つ以上のエントリを、イベント頻度アレイ内にロードする、請求項３に記載のメモリ・システム。
【請求項６】
前記パフォーマンス・モニタが、さらに、前記イベント・カウンタ・アレイをリセットし、イベント頻度アレイ・ロード・ポインタをインクリメントする、請求項５に記載のメモリ・システム。
【請求項７】
前記パフォーマンス・モニタが、関連するイベント間の経過時間を記録するためのビン・カウンタを含む、請求項１に記載のメモリ・システム。
【請求項８】
前記関連するイベントが読取りコマンドおよび前記読取りコマンドへの応答を含む、請求項７に記載のメモリ・システム。
【請求項９】
前記パフォーマンス・モニタが、規定時間の経過またはイベント数しきい値への到達の１つ以上が起きた後に、前記ビン・カウンタ内の１つ以上のエントリをイベント頻度アレイへ転送する、請求項７に記載のメモリ・システム。
【請求項１０】
前記パフォーマンス・モニタが、さらに、前記ビン・カウンタをリセットし、イベント頻度アレイ・ロード・ポインタをインクリメントする、請求項９に記載のメモリ・システム。
【請求項１１】
前記パフォーマンス・モニタが、前記アドレス情報、制御情報、およびデータ情報の１つ以上を経時的に記録するためのトレース・アレイを含む、請求項１に記載のメモリ・システム。
【請求項１２】
前記パフォーマンス・モニタがイベント・カウンタおよびビン・カウンタにしきい値を設定し、これらのしきい値の１つ以上が超過されると、前記トレース・アレイが停止され、それにより、不測のイベントの発生が示されると前記トレース・アレイを停止させる、請求項１１に記載のメモリ・システム。
【請求項１３】
複数のメモリ・デバイスと、メモリ・バスに接続するメモリ・ハブ・デバイスとを含むメモリ・サブシステムであって、
アドレス情報、制御情報、およびデータ情報の１つ以上を、前記メモリ・バスを介して前記メモリ・ハブ・デバイスとメモリ・コントローラとの間で転送するためのメモリ・インタフェースと、
前記メモリ・デバイスに接続するメモリ・デバイス・インタフェースと、
サブシステム動作中の規定時間間隔に亘って、メモリ・バスの利用、メモリ・デバイスの利用、およびパフォーマンス特性の１つ以上をモニタし報告するためのパフォーマンス・モニタと
を含むメモリ・サブシステム。
【請求項１４】
メモリ・アクセス要求を受信しそれに応答するためのメモリ・コントローラであって、
アドレス情報、制御情報、およびデータ情報の１つ以上を、メモリ・バスを介して前記メモリ・コントローラと１つ以上のハブ・デバイスとの間で転送するためのメモリ・インタフェースと、
システム動作中の規定時間間隔に亘って、メモリ・バスの利用およびパフォーマンス特性の１つ以上をモニタし報告するためのパフォーマンス・モニタと
を含むメモリ・コントローラ。
【請求項１５】
メモリ・ハブ・デバイスであって、
アドレス情報、制御情報、およびデータ情報の１つ以上を、メモリ・バスを介して前記メモリ・ハブ・デバイスとメモリ・コントローラとの間で転送するためのメモリ・インタフェースと、
メモリ・デバイスに接続するメモリ・デバイス・インタフェースと、
サブシステム動作中の規定時間間隔に亘って、メモリ・バスの利用、メモリ・デバイスの利用、およびパフォーマンス特性の１つ以上をモニタし報告するためのパフォーマンス・モニタと
を含むメモリ・ハブ・デバイス。
【請求項１６】
ハブ・デバイスにおける特定のイベントの発生を検出するステップであって、前記イベントがタイプにより特徴づけられているステップと、
検出された各タイプのイベントの数および関連する各イベント間の経過時間を記録するステップと、
規定時間中またはイベント数しきい値に到達するまで、前記検出および記録を継続するステップと、
前記規定時間の後または前記イベント数しきい値に到達した後に、前記記録されたデータをイベント頻度アレイに格納するステップと
を含む、パフォーマンス・モニタリングを提供する方法。
【請求項１７】
１つ以上のトレース・アレイを実行して、経時的に前記メモリ・ハブ・デバイスにより受信されたアドレス情報、制御情報、およびデータ情報の１つ以上を記録することをさらに含む、請求項１６に記載の方法。
【請求項１８】
事前に選択されたカウンタ値が超過されと、前記トレース・アレイにおける前記実行が停止され、それにより、不測のイベントの発生が示されると、前記トレース・アレイを停止させる、請求項１７に記載の方法。
【請求項１９】
前記イベント頻度アレイのコンテンツを出力することをさらに含む、請求項１６に記載の方法。
【請求項２０】
前記イベント頻度アレイのコンテンツに応答して、利用統計およびパフォーマンス特性を生成することをさらに含む、請求項１６に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、全般的には、コンピュータ・メモリに関し、特に、メモリ・システムにおいてパフォーマンス・モニタリングを提供することに関する。
【背景技術】
【０００２】
最新の高パフォーマンス・コンピュータのメイン・メモリ・システムは、一般に、１つ以上のメモリ制御要素を介して１つ以上のプロセッサに接続されている、１つ以上のダイナミック・ランダム・アクセス・メモリ（ＤＲＡＭ）・デバイスで構成されている。全般的なコンピュータ・システムのパフォーマンスは、プロセッサ（類）のパフォーマンス／構成、任意のメモリ・キャッシュ（類）、入出力（Ｉ／Ｏ）サブシステム（類）、メモリ制御機能（類）の効率、メイン・メモリ・デバイス（類）、ならびにメモリの相互接続インタフェース（類）のタイプおよび構造など、コンピュータ構造の各主要要素の影響を受ける。
【０００３】
メモリ・システム／サブシステムの設計または構成あるいはその両方を改良することにより全般的なシステム・パフォーマンスおよびシステム密度を最大にする、改良型または新規あるいはその両方のソリューションを作り出すために当業界は基本的に継続して幅広い研究および開発努力に投資している。新しいコンピュータ・システムであれば、追加機能、高パフォーマンス化、ストレージの増大、運転費の削減等を提供するのに加えて、平均故障時間（ＭＴＢＦ）に関し既存のシステムを遥かに凌ぐであろうと顧客が期待するため、高可用性システムには依然としてシステム信頼性全般に関連する難題がある。他の度重なる顧客の要求がメモリ・システム設計の難題をさらに難しくしている。要求にはアップグレードの簡易化、およびシステム環境への影響（スペース、電力、および冷房など）の軽減などの項目が含まれる。
【０００４】
図１は、本発明と課題が共通の、特許文献１に関し、旧式の同期メモリ・モジュールを示す。図１に示されているこのメモリ・モジュールは、デュアル・インライン・メモリ・モジュール（ＤＩＭＭ）である。このモジュールは、同期ＤＲＡＭ８、バッファ・デバイス１２、最適化されたピン配列、ならびに高パフォーマンス動作を促進するための相互接続および容量性デカップリングの方法からなる。この特許は、そのようなデバイスを位相ロック・ループ（ＰＬＬ）として用い、該モジュール上でクロック再駆動を使用することも記載している。
【０００５】
図２は、本発明と課題が共通の、特許文献２に関し、バス４０を介してメモリ・コントローラ１４に直接（すなわちポイント・ツー・ポイント）接続されている同期メモリ・モジュール２０を含み、メモリ・コントローラ１４から受信するアドレス情報、データ情報、および制御情報をバッファリングし、登録し、またはそれらに基づいて動作する論理回路２４（特定用途向け集積回路、すなわち”ＡＳＩＣ”など）をさらに含むコンピュータ・システム１０を示す。メモリ・モジュール２０は、メモリの初期化過程の一貫としてまたは通常の動作中に、集積回路間（Ｉ２Ｃ）制御バス３４などの独立したバスによって、複数の選択可能モードまたはプログラム可能モードで動作するようにプログラムすることができる。メモリ・コントローラに直接接続されている複数のメモリ・モジュールを必要とする用途に利用する場合、この特許明細書は、モジュールをバスから電気的に切断する電界効果トランジスタ（ＦＥＴ）・スイッチを使用すると、その結果スタブを最小化できると記載している。
【０００６】
特許文献１と比較すると、特許文献２では、すべての定義関数（アドレス、コマンド、データ、存在検出等）を１台の装置に統合できることがさらに示されている。機能の統合は業界的にはありふれたことであり、これは技術の向上によって可能になる。本件の場合は、モジュール密度の増加またはモジュール機能の追加あるいはその両方が可能になる。
【０００７】
図３は、本発明と課題が共通の、特許文献３からのもので、従来のマルチドロップ・スタブ・バス上に最多で４つのレジスタードＤＩＭＭ４０を含むメモリ・システム１０の略図および説明を示す。サブシステムは、メモリ・コントローラ２０、外部クロック・バッファ３０、レジスタードＤＩＭＭ４０、アドレス・バス５０、制御バス６０、およびアドレス・バス５０およびデータ・バス７０上に終端抵抗９５を備えるデータ・バス７０を含む。図３にはメモリ・チャネルが１つしか示されていないが、これらのモジュールを有して作られたシステムは、メモリ・コントローラからの複数の個別メモリ・チャネルを含むことが多く、各メモリ・チャネルは、所望のシステム機能またはシステム・パフォーマンスあるいはその両方を達成するために、（１つのチャネルがモジュールに実装された場合）単独で動作するか、または（２つ以上のチャネルがモジュールに実装された場合）並列に動作した。
【０００８】
図４は、特許文献４からのもので、同期メモリ・モジュール２１０およびシステム構造を示す。このシステム構造では、リピータ・ハブ３２０が、バス３２１および３２２を介するローカル・メモリ・デバイス３０１および３０２へのアドレス、コマンド、およびデータのローカル再駆動、（他の図および該特許明細書に記載されているように）ローカル・クロックの生成、ならびにシステム内の隣接するモジュールまたは構成要素への適切なメモリ・インタフェース信号のバス３００を介する再駆動を含む。
【０００９】
図５は、１つ以上のプロセッサ要素および統合メモリ・コントローラ５１０を含む統合プロセッサ・チップ５００で構成される最新のシステムを示す。図５に示される構成では、複数の独立したカスケード相互接続されているメモリ・バス５０６が論理的に一体となり、一致して動作し、並列バスおよび関連するデバイスを通って分散または”ストライプ化”されたデータおよびエラー検出／訂正情報を用いてより高い帯域幅で単一の独立したアクセス要求をサポートする。メモリ・コントローラ５１０は、４つのナロー／高速ポイント・ツー・ポイント・メモリ・バス５０６に接続し、各バス５０６は、少なくとも１つのメモリ・ハブ・デバイス５０４および１つ以上のメモリ・デバイス５０９を含みカスケード相互接続されているメモリ・サブシステム５０３（またはメモリ・モジュール）に、いくつかの固有のメモリ・コントローラ・インタフェース・チャネルの１つを接続している。システムの中には、メモリ・バス５０６のサブセットがメモリ・サブシステム５０３に実装された場合、さらに動作を可能にするものもある。この場合、１つ以上の実装されたメモリ・バス５０８が、１つのアクセス要求をサポートするために一致して動作してもよい。
【００１０】
図６は、関連するＤＲＡＭデバイス５０９に対する高速メモリ・アクセス情報の再同期、変換、および再駆動をするか、またはメモリ・システム・プロトコルに基づいて適宜メモリ・バス５０６のダウンストリームの情報を再駆動するか、あるいはその両方をする手段を設けるためのリンク・インタフェース６０４を含むメモリ・ハブ・デバイス５０４のブロック図を示す。この情報は、メモリ・バス５０６を介して、アップストリームのメモリ・ハブ・デバイス５０４からまたはメモリ・コントローラ５１０から（直接またはアップストリームのメモリ・ハブ・デバイス５０４を介して）、リンク・インタフェース６０４により受信される。メモリ・デバイス・データ・インタフェース６１５は、メモリ・デバイス５０９に対するテクノロジ固有のデータ・インタフェースを管理し、双方向メモリ・デバイス・データ・バス６０８を制御する。メモリ・ハブ制御部６１３は、メモリ・デバイス５０９のテクノロジに固有の（ランク０のメモリ・デバイス５０１の）アドレスおよび制御バス６１４または（ランク１のメモリ・デバイス６１６の）アドレスおよび制御バス６１４’を応答可能に駆動し、読取りデータ・フロー・セレクタ６０７および書込みデータ・フロー・セレクタ６１０に指示することにより、アクセス要求パケットに応答する。
【００１１】
図６のリンク・インタフェース６０４は、パケットを復号し、メモリ・ハブ・デバイス５０４に向けられているアドレス情報およびコマンド情報をメモリ・ハブ制御部６１３に向けて送る。リンク・インタフェース６０４からのメモリ書込みデータについては、書込みデータ・キュー６１１に一時的に格納するか、または書込みテータ・フロー・セレクタ６１０および内部バス６１２を介してメモリ・デバイス５０９に向けて直接駆動し、次に、内部バス６０９およびメモリ・デバイス・データ・インタフェース６１５を介してメモリ・デバイス・データ・バス６０８に送信することができる。メモリ・デバイス（単数または複数）５０９からのメモリ読取りデータについては、読取りデータ・キュー６０６で待ち行列に入れるか、または内部バス６０５および読み取りデータ・セレクタ６０７を介してリンク・インタフェース６０４に直接転送し、アップストリーム・バス５０６上を読取り応答パケットとして転送する。
【特許文献１】米国特許第５，５１３，１３５号
【特許文献２】米国特許第６，１７３，３８２号
【特許文献３】米国特許第６，５１０，１００号
【特許文献４】米国特許第６，５８７，９１２号
【発明の開示】
【発明が解決しようとする課題】
【００１２】
高帯域のカスケード接続されたメモリ・アーキテクチャでは、インタフェースが最適に利用されていることを確認するため、およびシステムのパフォーマンス予測を実証するために、無負荷および重負荷状態でチャネル帯域幅などのメモリ・パラメータを測定することが非常に望ましい。以前から、システムが最適に構成され使用されていることを確認するのは、パフォーマンス・テスト班の仕事である。異なるメモリ待ち時間およびパフォーマンス特性を測定するためにパフォーマンス・ベンチマークを実行することができるが、インタフェースの挙動の多くは、種々のテストの実行時間から推測しなければならないだろう。必要なのは、実行時間中にメモリ・インタフェースを確認し（適用条件下で）、システム全体の複数のインタフェースをモニタして、システム中の障害が生じていそうなところを知ることである。これらの結果については、現在のシステムにおいて最適レジスタ設定をプログラムするため、または将来の設計／システムを変更してそれらの障害を取り除くためあるいはその両方のために使用できることが望ましいであろう。
【課題を解決するための手段】
【００１３】
諸実施形態には、処理システムのためにデータを記憶し読み出すメモリ・システムが含まれる。このメモリ・システムは、メモリ・コントローラ、複数のメモリ・デバイス、メモリ・バス、およびメモリ・ハブ・デバイスを含む。メモリ・コントローラは、メモリ・アクセス要求を受信しそれらに応答する。メモリ・バスは、メモリ・コントローラに接続している。メモリ・ハブ・デバイスは、メモリ・バスに接続している。メモリ・ハブ・デバイスは、アドレス情報、制御情報、およびデータ情報の１つ以上を、メモリ・バスを介してメモリ・ハブ・デバイスとメモリ・コントローラとの間で転送するためのメモリ・インタフェースを含む。メモリ・ハブ・デバイスは、メモリ・デバイスに接続するメモリ・デバイス・インタフェースも含む。メモリ・ハブ・デバイスは、システム動作中の規定時間間隔に亘って、メモリ・バスの利用、メモリ・デバイスの利用、およびパフォーマンス特性の１つ以上をモニタし報告するためのパフォーマンス・モニタをさらに含む。
【００１４】
諸実施形態には、メモリ・バスに接続している複数のメモリ・デバイスおよびメモリ・ハブ・デバイスを有するメモリ・システムも含まれる。メモリ・ハブ・デバイスは、アドレス情報、制御情報、およびデータ情報の１つ以上を、メモリ・バスを介してメモリ・ハブ・デバイスとメモリ・コントローラとの間で転送するためのメモリ・インタフェースを含む。メモリ・ハブ・デバイスは、メモリ・デバイスに接続するメモリ・デバイス・インタフェースも含む。メモリ・ハブ・デバイスは、システム動作中の規定時間間隔に亘って、メモリ・バスの利用、メモリ・デバイスの利用、およびパフォーマンス特性の１つ以上をモニタし報告するためのパフォーマンス・モニタをさらに含む。
【００１５】
諸実施形態には、メモリ・アクセス要求を受信しそれらに応答するためのメモリ・コントローラも含まれる。メモリ・コントローラは、アドレス情報、制御情報、およびデータ情報の１つ以上を、メモリ・バスを介してメモリ・コントローラと１つ以上のハブ・デバイスとの間で転送するためのメモリ・インタフェースを含む。メモリ・コントローラは、システム動作中の規定時間間隔に亘って、メモリ・バスの利用およびパフォーマンス特性の１つ以上をモニタし報告するためのパフォーマンス・モニタも含む。
【００１６】
別の諸実施形態には、メモリ・インタフェース、メモリ・デバイス・インタフェース、およびパフォーマンス・モニタを有するメモリ・ハブ・デバイスが含まれる。メモリ・インタフェースは、アドレス情報、制御情報、およびデータ情報の１つ以上を、メモリ・バスを介してメモリ・ハブ・デバイスとメモリ・コントローラとの間で転送する。メモリ・デバイス・インタフェースは、メモリ・デバイスに接続する。パフォーマンス・モニタは、システム動作中の規定時間間隔に亘って、メモリ・バスの利用、メモリ・デバイスの利用、およびパフォーマンス特性の１つ以上をモニタし報告する。
【００１７】
別の諸実施形態には、パフォーマンス・モニタリングを提供する方法も含まれる。この方法は、ハブ・デバイスにおける特定のイベントの発生を検出することを含む。イベントはタイプにより特徴が異なる。検出された各タイプのイベント数、およびすべての関連するイベント間の経過時間が記録される。検出および報告は、規定期間中またはイベント数しきい値に到達するまで継続される。記録されたデータは、規定期間の後またはイベント数しきい値に到達した後に、イベント頻度アレイに格納される。
【００１８】
諸実施形態による他のシステム、方法、またはコンピュータ・プログラム製品あるいはそのすべては、以下の図面および詳細な説明を参照すれば、当業者に明らかであるか、または明らかになるであろう。それらすべての追加のシステム、方法、またはコンピュータ・プログラム製品あるいはそのすべては、本明細書に含まれ、本発明の範囲内であり、添付の請求項により保護されるものとする。
【発明を実施するための最良の形態】
【００１９】
ここで図面を参照するが、いくつかの図において同様の要素には同じ参照番号が付されている。
【００２０】
典型的な諸実施形態が、メモリ・ハブのパフォーマンス・モニタリング機能を実行する。パフォーマンス・モニタリングを実行するための回路が、１つ以上のメモリ・バスをモニタするためにメモリ・ハブ・デバイスまたはメモリ・コントローラあるいはその両方に含まれるとよい。モニタされ報告されるとよい統計データ、すなわちパフォーマンス特性には、以下のものに限られないが、バス総帯域幅、ダウンストリーム利用バス帯域幅、アップストリーム利用バス帯域幅、最少読取り待ち時間、平均読取り待ち時間、または読取り対書込みの帯域幅比あるいはその組み合わせが含まれる。これらのパフォーマンス特性の各々はリアルタイムで測定され、問い合わせ可能なアレイに保存され、コンテンツは異なる負荷下でのシステムのパフォーマンスを判定するために分析される。
【００２１】
本明細書で用いられている”ダウンストリーム利用バス帯域幅”という用語は、アドレス、コマンド、およびデータなどの情報を送信するためにダウンストリーム・バスが使用されている時間をダウンストリーム・バスが利用可能な時間の合計で除したものを指す。本明細書で用いられている”アップストリーム利用バス帯域幅”という用語は、データおよびステータスなどの情報を受信するためにアップストリーム・バスが使用されている時間をアップストリーム・バスが利用可能な時間の合計で除したものを指す。本明細書で用いられている”バス利用総帯域幅”という用語は、アップストリーム・バスおよびダウンストリーム・バスが使用されている時間をバスが利用可能な時間の合計で除したものを指す。本明細書で用いられている”読取り待ち時間”という用語は、読み取り要求に対するデータの返信にかかる時間を指す。本明細書で用いられている”平均読取り待ち時間”という用語は、ある期間中の読取り待ち時間の合計を得て、その数をメモリ・システムに処理された読取りコマンド数で除して得られた数を指す。本明細書で用いられている”読取り対書込みの帯域幅比”という用語は、ダウンストリーム利用バス帯域幅で除したアップストリーム利用バス帯域幅を指す。本明細書で用いられている”トレース・アレイ”という用語は、コンピュータ・チップ内部のバス・アクティビティをキャプチャするのに用いられる記憶素子の配列を指す。トレースされているバスはクロック・サイクルごとにサンプルを抽出され、所定のクロック・サイクルに関するバス・コンテンツは、記憶素子のアレイに格納される。トレース・アレイは、トレースを開始および停止する設定可能な機構を有し、トレースしたデータを圧縮する機構を含んでもよい。トレース・アレイは通常、システム・ハードウェアをデバッグするために用いられる。
【００２２】
本明細書で用いられている”イベント・カウンタ”という用語は、特定のバス状態の数を記録するカウンタを指す。イベント・カウンタをインクリメントさせるバス状態については設定することが可能である。本明細書で用いられている”イベント・ストップ・トリガ”という用語は、トレース・アレイにデータの記録を停止させる状態を指す。この状態は、カウンタがプログラムされたしきい値（イベント数しきい値とも呼ばれる）を超過した場合に発生する。本明細書で用いられている”イベント頻度アレイ”という用語は、カウンタがアクティブであった該当する時間経過に従って、イベント・カウンタおよび累積合計の値を記録するのに用いられる記憶素子の配列を指す。イベント頻度アレイは、発生率を計算するのに用いられる。本明細書で用いられている”デッドロック”という用語は、２つ以上のプロセスの各々が自分以外のプロセスの一つによる何らかの動作を待っているために、開始することができないことを指す。本明細書で用いられている”決定性”という用語は、その時間発展が正確に予測できるシステムについていう。本明細書で用いられている”ヒストグラム”という用語は、度数分布を示す棒グラフを指す。ここで棒グラフの高さは観測度数を表す。本明細書で用いられている”メモリ・インタフェース”という用語は、アドレス、コマンド、およびデータなどの情報を、メモリ・コントローラとハブとの間で、または１つ以上のハブの間であるいはその両方で、転送を可能にする１つ以上の信号を指す。
【００２３】
典型的な諸実施形態が、入力アドレスおよびコマンド・バス・ストリームをモニタし（”スヌープし”）、トレース・アレイ内のコマンド・ストリームを記録するか、またはイベント頻度アレイ内のイベント（例えば、読取りコマンドおよび書込みコマンド）を記録するかあるいはその両方を行なう。コマンドが応答を要求する場合は、続いて、応答が生じる時間もカウンタにより記録され、その時間間隔の範囲が当該応答時間に対応する。このデータから、応答時間のヒストグラムを生成することができる。平均待ち時間を計算できるように、応答時間の累積合計も蓄積される。
【００２４】
プログラムされている期間の後、（イベント・カウンタ・アレイ（単数または複数）からの）すべてのカウント・イベントおよび累積合計は、イベント頻度アレイ内に記録される。この動作モードは、本明細書では”固定タイマ・モード”と呼ばれる。イベントが記録された後、カウンタおよび累積合計はリセットされ、イベント頻度アレイのロード・ポインタはインクリメントされる。このシーケンスは、イベント頻度アレイがフルになるか、このデータに関する要求が受信されるか、または他の何らかの理由で情報の蓄積が終了するまで発生し続ける。イベント頻度アレイがフルになるか、またはこのデータに関する要求が受信されると、メモリ・ハブまたはメモリ・コントローラあるいはその両方からのパフォーマンス・モニタ・データは、システム・ソフトウェア、ハードウェア開発者、システムの操作／保守担当者等により読み込まれ、変換される。帯域幅の利用対待ち時間および帯域幅対時間などのパフォーマンス属性のプロットを観測することができる。
【００２５】
別個の動作モードでは、イベント・カウンタがしきい値に到達したときにイベント頻度アレイをロードするだけで、測定が記録される期間を動的に変化させることもできる。この場合、比率情報が維持され得るように、ウィンドウ・タイマ値（例えば、クロック・サイクル数）もイベント頻度アレイ内にロード（記録）される。本明細書で”動的時間更新モード”と呼ばれるこのモードは、バス・アクティビティが低いときに圧縮機能を提供するのに利用されてもよく、その結果、より多くの時間／イベントが記録できるようになる。動的時間更新モードは、一定のタイム・ウィンドウの後に（例えば、固定タイマ・ウィンドウの設定に到達した場合）にカウンタがリセットされその結果が一連のデータ用に記録される”固定タイマ・モード”と共にまたはその代わりに用いられてもよい。
【００２６】
典型的な諸実施形態では、読取り要求、読取りデータ応答、書込みデータ要求、書込み完了通知等の動作で構成される”Ｎ”個の許容可能なイベントをカウントすることができる。カウンタが各イベントに割り当てられ、イベント頻度アレイ内の一連の場所が確保される。特定のイベントが発生すると、対応するイベント・カウンタがインクリメントされる。（クロックの設定番号の検出などによって）ウィンドウ・タイマが終了するかまたはオーバーフロー・イベントしきい値に到達すると、カウンタ・データはイベント頻度アレイ内にロードされ、カウンタはリセットされる。
【００２７】
読取りデータなど関連する応答を有するコマンドに関して、メモリ・システムからのデータ応答の分析に使用するためにヒストグラム構成が作られる。このヒストグラムは、各ビンに対してプログラム可能な範囲（例えば、ある動作を完了するためのプログラム可能なサイクル数）を有する。本明細書で用いられている”ビン”という用語は、ヒストグラムにおける各棒に対するカウンタを指す。例えば、ヒストグラムの１本の棒が５から１０サイクルを要した応答数を表し、別の棒が１１から１５サイクルを要した応答を表す場合、ビンは５から１０サイクルを要した応答数をカウントするビンと、１１から１５サイクルを要した応答をカウントするビンの２つあると考えられる。ヒストグラムも同様に、随意、イベント頻度アレイ内にロードすることができる。ヒストグラムがイベント頻度アレイ内にロードされた場合、ヒストグラム・カウンタは、次に各ビンに対してリセットされる。
【００２８】
典型的な諸実施形態では、システム・デバッグを可能にするためにトレース・アレイもイベント・カウンタ回路に接続して用いられる。トレース・アレイは、（例えば、ＦＩＦＯを用いて）入力アドレスおよびコマンド・ストリームのサンプルを抽出し、イベント・ストップ・トリガが生じるまで、入力アドレスおよびコマンド・ストリームの１つ以上を常時記録するようにプログラムされる。各イベント／ビン・カウンタは、しきい値が超過されたときにトレース停止信号を生成するように、最大しきい値、すなわちイベント数しきい値を有する。トレース停止信号は、バスの記録を停止するためにトレース・アレイに送信される。これは、あるシステム・パフォーマンスの異常の原因を知るためのトレース分析に有用であり、設計者およびテスト技術者が、システム障害を引き起こす機構を知るのに役立つ。なぜなら、トレースはシステムが最適に動作していないときに停止するからである。次に、システム劣化を引き起こす機構を知るために、トレースを分析することができる。機構が解れば、システム構成を更新するか、アプリケーションを再コード化するか、またはパフォーマンスを制限する属性を変更するようにシステムを設計するかあるいはその組み合わせをすることができる。
【００２９】
フルの場合、イベント頻度アレイを利用して、異なる期間に亘るシステムの挙動を分析することができる。イベント頻度アレイから抽出されるデータを用いれば、帯域幅、利用、平均データ応答時間を判定することができる。
【００３０】
図７は、典型的な諸実施形態で実行されるとよいパフォーマンス・モニタリング論理７０２を含む典型的なメモリ・ハブ・デバイス５０４のブロック図である。図７のメモリ・ハブ・デバイス５０４は、パフォーマンス・モニタリングの追加機能とともに、図６を参照して既に記載した機能と同一の機能を実行する。パフォーマンス・モニタリング論理７０２は、ハードウェアまたはソフトウェアあるいはその両方を用いて実行されるとよい。図７は、本明細書に記載されているパフォーマンス・モニタリング機能を提供するためにメモリ・ハブ・デバイス５０４内に位置するパフォーマンス・モニタリング論理７０２を含む。図７に示されるように、パフォーマンス・モニタリング論理７０２はメモリ・ハブ制御部６１３、メモリ・デバイス・データ・インタフェース６１５およびリンク・インタフェース６０４に接続しており、メモリ・バス５０６（アップストリーム・バスおよびダウンストリーム・バスの両方）、メモリ・デバイス・データ・バス６０８、ならびにメモリ・デバイス・アドレスおよび制御バス６１４におけるすべてのアクティビティのほか、メモリ・ハブ制御部６１３により発行されるすべてのコマンドおよびメモリ・デバイス・データ・インタフェース６１５を介したすべてのデータ転送（読取りおよび書込み）をモニタしキャプチャすることが可能になる。
【００３１】
パフォーマンス・モニタリング論理７０２がどのように動作するかに関する詳細な説明を、サンプル・コマンド・ストリームおよびデータを変換するための可能な方法を用いて、以下に記載する。パフォーマンス・モニタリングの構成に重要な検討事項には、採用する読取りデータ応答方法のタイプ（確定性または不確定性）、コマンドがバス上で消費する時間長、モニタされるコマンド、およびウィンドウ・サンプル・タイムを決定することが含まれる。
【００３２】
サンプル・コマンド・ストリームが表１に示される。これは、種々のコマンドが異なるサイクル数を要するものの、応答時間については正確に予測することができる確定性システムに関連する。メモリ・ハブ制御ブロック６１３では、コマンド・ストリームのメモリ動作への復号を終える。それによって得られる１つ以上のメモリ・デバイスへのコマンドは、メモリのメモリ・ランク、バンク、または他の選択可能な部分を識別するための復号済みアドレス情報を含むとよい。コマンド・ストリームは、メモリ・サブシステムにおけるメモリ・デバイス５０９のいずれかへのいかなるアクセスも１個のイベントとして記録されるように、またはメモリ・サブシステムの下位部分（例えば、特定のバンクまたはランク）へのアクセスが監視されるように、モニタされてもよい。用いられる復号方法およびパフォーマンス・モニタリング方法に基づいて、全体としてサブシステムに関連するかまたはサブシステムの下位部分に関連するパフォーマンス情報が蓄積され得る。不確定性システムもモニタすることができると考えられる。このシステムは、通常であれば、メモリ応答が要求と相関し得るようにするためのタグを含み、応答時間がデバイスおよびバスの利用、ならびにスケジューリングの衝突により変化すると考えられる。表１は、パフォーマンス・モニタリング実施中のハブ・デバイスをターゲットとするコマンドを含む。この例では、データ応答時間は、（例えば、メモリ・バス５０６のダウンストリーム・バスから）メモリ・ハブ・デバイス５０４でのコマンド受信と、データ・リクエスタへのデータ提供（例えば、読取りデータをメモリ・バス５０６のアップストリーム・バス上に置くこと）との間で経過する時間を指す。
【００３３】
【表１】
2008041089.tif 000003
【００３４】
バースト長４として動作するＤＤＲベースのメモリ・サブシステムと一致する上記例では、固定タイマ・ウィンドウ・サイズを１０と仮定し、データの追跡は１０時間ユニット後にリセットされ、各コマンドは１時間ユニット消費し、その対応する応答（妥当な場合）は２時間ユニット消費する。この例を用いると、最大書込み帯域幅および最大読取り帯域幅はウィンドウあたり１０コマンドと考えられ、一方、最大読取り応答帯域幅はウィンドウあたり５応答と考えられる。他のパラメータ設定（例えば、２０サイクルのウィンドウ・サイズ）は、所望されるパフォーマンス・データのタイプおよび粒度に応じて実行されてもよい。この例では、書込みコマンドの完了時間は追跡されないが、別の典型的な諸実施形態では書込みコマンドの完了時間がモニタされる。データの表表示および分析には以下のようなものが考えられる。データ応答時間は、データをリクエスタに返信するのにかかる時間ユニット（例えば、クロック・サイクル）の数を指す。
【００３５】
【表２】
2008041089.tif 000004
設定０からの統計
書込みコマンドの利用＝２／１０＊１００％＝２０％
読取りコマンドの利用＝３／１０＊１００％＝３０％
平均読取り待ち時間＝読み取り待ち時間合計／読取りコマンド数
＝３６／３＝１２時間ユニット／読取りコマンド
【００３６】
設定０の統計（クロック・サイクル０−９を対象とする）により説明したように、ダウンストリーム・バスは時間の２０％が書込みコマンドに利用され、時間の３０％が読取りコマンドに利用され、ハブ・デバイスで読取りコマンドが受信された時間から結果がリクエスタに返信されるまでに平均１２サイクルかかる。
【００３７】
【表３】
2008041089.tif 000005
設定１からの統計
書込みコマンドの利用＝１／１０＊１００％＝１０％
読取りコマンドの利用＝１／１０＊１００％＝１０％
平均読取り待ち時間＝読み取り待ち時間合計／読取りコマンド数
＝１０／１＝１０時間ユニット／読取りコマンド
【００３８】
設定１の統計（クロック・サイクル１０−１９を対象とする）により説明したように、ダウンストリーム・バスは時間の１０％が書込みコマンドに利用され、時間の１０％が読取りコマンドに利用され、ハブ・デバイスで読取りコマンドが受信された時間から結果がリクエスタに返信されるまでに平均１０サイクルかかる。
【００３９】
【表４】
2008041089.tif 000006
設定２からの統計
書込みコマンドの利用＝２／１０＊１００％＝２０％
読取りコマンドの利用＝６／１０＊１００％＝６０％
平均読取り待ち時間＝読み取り待ち時間合計／読取りコマンド数
＝７８／６＝１３時間ユニット／読取りコマンド
【００４０】
設定２の統計（クロック・サイクル２０−２９を対象とする）により説明したように、ダウンストリーム・バスは時間の２０％が書込みコマンドに利用され、時間の６０％が読取りコマンドに利用され、ハブ・デバイスで読取りコマンドが受信された時間から結果がリクエスタに返信されるまでに平均１３サイクルかかる。
【００４１】
【表５】
2008041089.tif 000007
【００４２】
表５は、３つのイベント・カウンタにより集められたデータをまとめるために構築することができるであろうイベント頻度アレイ内の、３つのサンプル・エントリを示す。サイクル数はイベントあたりのサイクル、すなわちウィンドウ・タイムの数を指す。フルの場合、イベント頻度アレイを利用して、異なる期間に亘るシステムの挙動を分析することができる。イベント頻度アレイから抽出されたデータを用いれば、帯域幅、利用、および平均データ応答時間を判定することができる。
【００４３】
表５の各列は、ユニット時間毎のカウント情報を含む。上記例の計算を用いれば、合計利用帯域幅対平均待ち時間、読取り利用帯域幅対平均待ち時間、および書込み利用帯域幅対平均待ち時間を示すチャートが、イベント頻度アレイ内のデータから得ることができる。システムの障害を判定し、メモリ・パフォーマンス・データを実証するためにこのデータをグラフで示し分析することができる。
【００４４】
典型的な諸実施形態では、障害時、しきい値すなわちイベント数しきい値がイベント・カウンタ上に設定されトレース・アレイを停止させることにより、ユーザは障害を生じさせた入力コマンド・ストリームを調査することができる。これは、一定のコマンド・シーケンスがシステムのデッドロックを引き起こす場合に有益である。デッドロックはシステムの待ち時間を激増させる。これは一般に、コマンド・シーケンスが正しく発行されないか、もしくは正しく再命令されないかあるいはその両方の場合、またはシステム・アプリケーションが１つの資源を過度に利用するやり方でメモリにアクセスし続けている場合である。任意の読取り応答が読取り応答ヒストグラムの最大予想しきい値を超過すればイベント・ストップ・トリガがかかるように設定されている場合、トレース・アレイからキャプチャされたコマンド・ストリームは、デッドロック状況になる前またはちょうどその時あるいはその両方に、入力コマンドをドキュメント化する。通常、ユーザは、ひとたび非常に長い応答時間が記録されれば、すぐにトレースを停止したいと考えるであろうが、他の典型的な諸実施形態としては、例えば、第１のしきい値を’ｎ’回超過した後にトレースを停止できるように、第１のしきい値の時間と併せて使用されることになる第２のカウンタしきい値の使用が挙げられる。このさらなる機能は、長期間に亘るシステム・パフォーマンスの障害の分析を促すと思われる。
【００４５】
上記の例は、メモリ応答時間が決定性であるために応答時間を計算することができるメモリ・システムからのものであった。メモリ応答時間が決定性でないメモリ・システムでは、同じデータを追跡することができるが、各読取りコマンドのタグを用いなければならず、トレース・アレイは、対応するデータおよびタグがそのメモリ・システムから受信された場合にのみ記録されるデータ応答時間によって更新され、明らかに識別可能なメモリ応答をもたらす。この場合、各未処理の読取り要求は対応するカウンタを有する。読取り要求が完了されれば、応答時間は、アレイ（またはビン）に保存され、応答時間の範囲に対応するアレイ内の位置をインクリメントする（例えば、応答時間のヒストグラムが蓄積される）。この技法を用いて、メモリ・システムにおける応答の分布をまとめるために応答時間のヒストグラムが生成される。さらに、連続応答時間合計は、読取りあたりの平均応答時間（例えば、読取り待ち時間）が計算できるように保存される。所望であれば、典型的な読取り応答時間に関してメモリ・サブシステムを最適化するとともに、高待ち時間イベントを最少限にするために、システム設計者がこのタイプのデータを使用することができる。
【００４６】
図８は、典型的な諸実施形態でメモリ・パフォーマンスをモニタするために利用されるとよいプロセス・フローの図である。典型的な諸実施形態では、図８に示される処理は、パフォーマンス・モニタ論理７０２内にある、ハードウェアまたはソフトウェアあるいはその両方の命令によって実行される。ブロック８０２で、パフォーマンス・モニタ論理７０２は使用可能になる。さらに、トレース・アレイもブロック８０２で使用可能としてもよい。ブロック８０４で、入力コマンド・ストリームが受信され復号される。ブロック８０６で、ウィンドウ・タイマが終了しているか（あらかじめ選択された期間にデータが収集され、次にセットとして保存された時に使用されているか）どうかを判定するチェックが行なわれる。
【００４７】
ブロック８０６で判定されたときに、ウィンドウ・タイマが終了していれば、現在のデータはセットとして保存されなければならず、ウィンドウ・タイマはリセットされ新しいデータのセットを収集し始めなければならない。この処理は、ブロック８２８で開始し、すべての未処理の応答要求が完了するのを待つ。次に、処理はブロック８３０に進み、イベント・カウンタおよび任意のビン・カウンタをイベント頻度アレイへアンロードして、ブロック８３２で、ウィンドウ・タイマ、イベント・カウンタ、およびビン・カウンタはリセットされる。なお、パフォーマンス・モニタリング論理、ウィンドウ・タイマ、およびイベント・カウンタがリセットされているので、ブロック８２８から８３６までの間に到着するコマンドは処理されない。しかし、これは、ウィンドウ・タイマがパフォーマンス・モニタをリセットするのにかかる時間に対して大きい場合、問題ではない。別の諸実施形態では、一方のパフォーマンス・モニタがその論理をリセットしているときに、他方のパフォーマンス・モニタがサンプルを抽出しているというように、パフォーマンス・モニタ論理を二つ重ねて実行することもできると考えられる。各モニタは、イベント頻度アレイをロードすることができるポートを有し、トレース・アレイを停止する機能も有すると考えられる。
【００４８】
ブロック８３４での判定時に、イベント頻度アレイがフルでない（例えば、データのセットをさらに記録する空きがある）場合、次にブロック８３６が実行されてイベント頻度アレイ・ロード・ポインタがインクリメントされ、処理ループがブロック８０４へ戻り、入力コマンド・ストリームからの入力の受信を続行する。あるいは、ブロック８３４の判定時に、イベント頻度アレイがフルの場合、次にブロック８３８に処理が進みカウンタを停止しイベント頻度アレイをアンロードする（例えば、メモリ・デバイス、メモリ・コントローラ等へ）。ブロック８４０で、’トレース停止’イベントが既に生じているかどうかのチェックが行なわれる。トレースが依然実行されている場合、次にブロック８４４が実行されてトレースを停止する。あるいは、’トレース停止’イベントが生じている場合、次にブロック８４２が実行されてトレース・データをアンロードする（例えば、メモリ・デバイス、メモリ・コントローラ等へ）。これで、ブロック８４６でパフォーマンス・モニタリングが完了し終了する。
【００４９】
ブロック８０６での判定時に、ウィンドウ・タイマがまだ終了していない場合、処理は次にブロック８０８および８１０に進む。ブロック８０８では、イベント（例えば、読取りコマンド、書込みコマンド）が検出されているかどうかを判定するためにチェックが行なわれる。イベントが検出されなかった場合、処理は次にブロック８０４に進み、入力ストリームを引き続きモニタする。典型的な諸実施形態では、入力ストリームは、メモリ・ハブ５０６を介してメモリ・コントローラとハブ・デバイスとの間を転送されているコマンド、アドレス、およびデータを含む。ブロック８０８の判定時に、イベントが検出された場合、次にブロック８１２が実行され、そのイベントに対応するイベント・カウンタはインクリメントされる。処理は次にブロック８１６および８２４に進む。ブロック８１６で、システムが動的時間更新モードで動作しているかどうかを判定するためにチェックが行なわれる。システムが動的時間更新モードで動作していない場合、次にブロック８２２で、固定タイマ・ウィンドウの設定に到達したかどうかを判定するためにチェックが行なわれる。固定タイマ・ウィンドウの設定に到達していなかった場合、処理は次にブロック８０４に進む。固定タイマ・ウィンドウの設定に到達していた場合、処理は次にブロック８２８に進む。ブロック８１６に戻って、システムが動的時間更新モードで動作している場合、次に固定タイマ・ウィンドウの設定は適用されず、ブロック８１８でイベント・カウンタがフルかどうかを判定するためにチェックが行なわれる。イベント・カウンタがフルでない場合、処理は次にブロック８０４に進み、入力コマンド・ストリームをモニタする。イベント・カウンタがフルの場合、処理は次にブロック８２８に進む。
【００５０】
ブロック８２４で、カウンタしきい値を超過したかどうかを判定するためにチェックが行なわれる。カウンタしきい値を超過していない場合、処理は次にブロック８０４に進み、入力コマンド・ストリームをモニタする。カウンタしきい値を超過した場合、処理は次にブロック８２６で処理が続行し、トレースが停止される。この態様では、任意のカウンタのプログラム可能なしきい値（イベントまたはビン）を超過した場合、次にトレース・アレイは入力ストリームの記録を停止する。しかし、パフォーマンス・モニタのその他の部分を動作させて完了させることが依然として可能である。これにより、トレース・アレイは、しきい値を超過させたイベントをキャプチャできるようになり、続いてしきい値の超過を生じさせたコマンド・シーケンスを保存するために直ちに停止することが可能になる。ある例では、表２（イベント・カウンタ０）の読取り動作に関するプログラム可能なしきい値を２０クロックに設定している。データ応答時間が２０クロックを超過すると、カウンタしきい値が超過されることになり、トレースは停止させられると考えられる。典型的な諸実施形態では、読取り応答（待ち時間）がカウンタしきい値を超過すると、その特定のビン・カウンタのカウンタしきい値がアサートされ、これにより、この事態を引き起こしたストリームを調査できると思われる時点でトレースが停止することになる。
【００５１】
確定性メモリ・システム（すなわち、応答が正確に予測できるメモリ・システム）に関する典型的な諸実施形態では、通常、メモリ動作がコマンドに対し識別可能な応答をもたらすのではない。その代わり、応答時間は設計によって分かり、コマンドが受信された時点のメモリの状態（例えば、バンク・アクティブ、プリチャージ、リフレッシュ、電源遮断等）に影響されると考えられる。この場合、応答時間はメモリ・コントローラまたはハブあるいはその両方に知られており、データ応答時間は、既知の応答時間に基づいてロードされる。不確定性メモリ・システム（すなわち、応答が正確に予測できないメモリ・システム）に関する典型的な諸実施形態では、通常、メモリ動作がコマンドに対し識別可能な応答をもたらす。特定の読取り動作（例えば、タグを使用すること）に関連する応答により、カウンタには、実際の応答時間に直接関連するデータ応答時間がロードされる。
【００５２】
ブロック８１０で、ある未処理コマンドに対する応答が検出されたかどうかを判定するために確認が行なわれる。応答が検出されなかった場合、次にブロック８０４で処理が続行する。応答が検出された場合、ブロック８１４に処理が進み、検出された応答時間に対応するビン・カウンタを更新する。次に、ブロック８２０および８２４が実行される。ブロック８２０で、ビン・カウンタがフルかどうかを判定するために確認が行なわれる。ビン・カウンタがフルでない場合、次にブロック８０４で処理が続行する。ビン・カウンタがフルの場合、次にブロック８２８で処理が続行し、データをイベント頻度アレイ内に保存し、新しいセットを開始する。
【００５３】
図９は、典型的な諸実施形態において実行されるとよいメモリ・パフォーマンス・モニタリングの構成要素のブロック図である。典型的な諸実施形態では、図９に示されているブロック図がパフォーマンス・モニタ論理７０２により実行される。このブロック図への諸入力には、（バスからの）入力コマンド・ストリームおよびシステム応答イベント９０２、ならびにパフォーマンス・モニタおよびトレース・アレイを使用可能／使用不可にする信号９０６が含まれる。信号９０６は、パフォーマンス・モニタおよびその他の論理の全般的な状態を制御するために、図９のすべてのブロックに接続しているパフォーマンス・モニタ状態論理ブロック９０８に入力される。入力コマンド・ストリームおよびシステム応答イベント９０２は、報告およびメモリ・システム診断での使用のためにデータを可読出力ポートを介して出力することができる設定可能なトレース・アレイ内にコピーされる。さらに、入力コマンド・ストリームおよびシステム応答イベント９０２は、コマンドを復号し信号をそのコマンドに対応するカウンタへ送信するためのイベント復号および応答検出論理ブロック９０４に入力される。ブロック９０４からの出力が、イベント・カウンタ・ブロック９１０または応答タイマ・ブロック９１２あるいはその両方に入力されるとよい。
【００５４】
イベント・ウィンドウ・タイマ・ブロック９１４は、ブロック９０８に応答して、現在のデータのセットまたはタイミング・ウィンドウについて、パフォーマンス・モニタがアクティブであった時間（例えば、クロック・サイクル）を追跡する。ビン・カウンタ・アレイ・ブロック９１６は、特定の応答（または他の測定）のしきい値に関連するカウンタをインクリメントし、応答時間の累積合計・ブロック９１８は、現在のタイミング・ウィンドウの間に、応答タイマ・ブロック９１２からの入力に基づいて、すべてのコマンドに関する総応答時間を引き続き追跡する。前述したように、イベント頻度アレイ９２２は要約データを含み、データを出力する可読出力ポートを有する。さらに、イベント・カウンタ・ブロック９１０、イベント・ウィンドウ・タイマ・ブロック９１４、ビン・カウンタ・アレイ・ブロック９１６、および応答時間の累積合計・ブロック９１８は、診断目的または他の報告目的のために情報を提供するのに利用されるとよい可読出力ポートを含む。
【００５５】
パフォーマンス・モニタリング機能に関連した設定可能なトレース・アレイ、イベント頻度アレイ、ビン・カウンタ・アレイ、応答時間の累積合計、イベント・ウィンドウ・タイマ、イベント・カウンタ、および関連回路（本明細書では総称して”パフォーマンス・モニタ・データ”と呼ばれる）は、上記目的のための、またはこの目的のために利用可能な任意のバスを介して読み取られる。その任意のバスは以下に限られないが、ＳＭＢｕｓ、Ｉ２Ｃ、およびカスケード相互接続バス（またはメモリ・バス）などを含む。これらのバス（本明細書では”報告バス”と呼ばれる）の１つまたはいかなる組み合わせが、パフォーマンス・モニタ・データを読み取るために典型的な諸実施形態によって利用されるとよい。パフォーマンス・モニタ・データすなわち情報については、１つ以上のプロセッサ・チップ（単数または複数）、サービス・プロセッサ、メモリ・コントローラによって分析することができるか、あるいは、メモリ・システムのパフォーマンスを分析すること、または改良することができる設計もしくはプログラミングの態様を識別することあるいはその両方に使用するために外部テスト・デバイスまたは他の何らかの実行要素もしくは処理要素に渡すことができる。可読出力ポートは、１つ以上の出力を含むシリアル・インタフェースの形態にしてもよく、複数の出力からなるパラレル・インタフェースの形態にしてもよい。典型的な諸実施形態では、可読出力ポートは、ハブ外部の分析のために１つ以上の出力ポートを対象のインタフェースに方向付けるために使用されるアドレス可能なインタフェース・ポートまたはさもなければ選択可能なインタフェース・ポートに接続されることになる。
【００５６】
典型的な諸実施形態には、メモリ・コントローラおよびメモリ・デバイスを含むメモリ・システムに相互接続されているプロセッサ（単数または複数）および入出力装置（単数または複数）（例えば、リクエスタ）を有するコンピュータ・システムが含まれる。典型的な諸実施形態では、メモリ・システムは、一式のハブ・デバイス（”ハブ・チップ”とも呼ばれる）に接続されているプロセッサまたはメモリ・コントローラを含む。ハブ・デバイスは、メモリ・デバイスに接続し連結している。典型的な諸実施形態では、コンピュータ・メモリ・システムは、データまたは命令を記憶するための複数のメモリ・デバイスを有する物理メモリ・アレイを含む。これらのメモリ・デバイスは、メモリ・コントローラに直接接続されるか、またはハブ・デバイスを介してメモリ・コントローラに間接的に接続されるかあるいはその両方でもよい。典型的な諸実施形態では、ハブベースのコンピュータ・メモリ・システムは、メモリ制御デバイス（例えば、メモリ・コントローラ）に接続されている通信ハブ・デバイスに接続されているメモリ・デバイスを有する。さらに典型的な諸実施形態では、ハブ・デバイスが、メモリ・バスを介して互いに（および場合によっては他のメモリ・モジュール上に置かれた他のハブ・デバイスに対して）カスケード相互接続されている２つ以上のハブ・デバイスを含むメモリ・モジュール（例えば、１つの基板または物理デバイス）上に位置している。
【００５７】
ハブ・デバイスはマルチドロップ・バス構成またはポイント・ツー・ポイント・バス構成（１つ以上の追加のハブ・デバイスに対するカスケード接続をさらに含んでもよい）によりメモリ・コントローラに接続されてもよい。メモリ・アクセス要求は、メモリ・コントローラにより、バス構成（例えば、メモリ・バス）を介して選択されたハブ（単数または複数）へ送信される。メモリ・アクセス要求の受信に応答して、ハブ・デバイスはそのメモリ・アクセス要求を変換し、メモリ・デバイスを制御してハブ・デバイスからの書込みデータを記憶するかまたはハブ・デバイスに読取りデータを提供する。読取りデータは、１つ以上の通信パケット（単数または複数）にエンコードされ、メモリ・バス（単数または複数）を介してメモリ・コントローラへ送信される。
【００５８】
別の典型的な諸実施形態では、メモリ・コントローラ（単数または複数）は１つ以上のプロセッサ・チップおよびサポート論理と一体化されるか、単体チップ（一般に”ノースブリッジ”・チップと呼ばれる）に入れられるか、１つ以上のプロセッサもしくはサポート論理あるいはその両方を有するマルチチップ・キャリアに含まれるか、または用途／環境に最も適した種々の別の形態に入れられてもよい。これらのソリューションはいずれも、１つ以上のハブ・チップまたはメモリ・デバイスあるいはその両方に接続するために、１つ以上のナロー／高速リンクを用いてもよいし用いなくてもよい。
【００５９】
メモリ・モジュールは、ＤＩＭＭ、シングル・インライン・メモリ・モジュール（ＳＩＭＭ：ｓｉｎｇｌｅ  ｉｎ−ｌｉｎｅ  ｍｅｍｏｒｙ  ｍｏｄｕｌｅ）もしくは他のメモリ・モジュールあるいはその両方、またはカード構造を含む種々のテクノロジにより実行されていもよい。通常、ＤＩＭＭは、主としてランダム・アクセス・メモリ（ＲＡＭ：ｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙ）集積回路または片面または両面のダイからなる小型回路基板を指し、この基板両面上に信号ピンもしくはパワー・ピンあるいはその両方を有する。これは、主としてＲＡＭ集積回路または片面もしくは両面のダイと、１本の長辺に沿った１列のピンとからなる小型回路基板または基板であるＳＩＭＭと対照をなしているといえる。図１のＤＩＭＭは該実施形態で１６８本のピンを含むが、これに続くＤＩＭＭは１００本から３００本を超える範囲のピン数で構成されている。本明細書に記載されている典型的な諸実施形態では、メモリ・モジュールが２つ以上のハブ・デバイスを含んでもよい。
【００６０】
典型的な諸実施形態では、メモリ・バスはメモリ・モジュール上のバス・デバイスへのマルチドロップ接続またはポイント・ツー・ポイント接続あるいはその両方を用いて構成されている。”ダウンストリーム・バス”と呼ばれる、コントローラ・インタフェース（またはメモリ・バス）のダウンストリーム部分は、メモリ・モジュール上のハブ・デバイスへ送信されているコマンド、アドレス、データ、およびその他の動作の初期化情報またはステータス情報を含んでもよい。典型的な諸実施形態では、ダウンストリーム・メモリ・バスはメモリ・コントローラをハブ・デバイスに接続しているか、またはハブ・デバイスをメモリ・コントローラからさらに離れた他のハブ・デバイスに接続している。各ハブ・デバイスは、単に情報をバイパス回路を介して後続のハブ・デバイス（単数または複数）に転送するか、ダウンストリームのハブ・デバイスをターゲットにしていると判定された場合に、情報を受信、変換、および再駆動するか、情報を最初に変換せずに一部またはすべての情報を再駆動して対象とする受信者を判断するか、またはこれらのオプションのサブセットもしくは組み合わせを実行する。典型的な諸実施形態では、ダウンストリーム・バスは、メモリ・システムを制御するのに用いられるプロトコルを有する。
【００６１】
アップストリーム・バスと呼ばれるメモリ・バスのアップストリーム部分は、要求された読取りデータもしくはエラーあるいはその両方、ステータス、または他の動作情報を返信する。この情報はバイパス回路を介して後続のハブ・デバイスに転送され、プロセッサ複合体中のアップストリームのハブ・デバイスまたはメモリ・コントローラあるいはその両方をターゲットとしていると判定された場合に、受信、変換、および再駆動するか、情報を最初に変換せずに部分的または全体的に再駆動されて対象とする受信者を判断するか、またはこれらのオプションのサブセットもしくは組み合わせを実行する。典型的な諸実施形態では、アップストリーム・バスはメモリ・システムからの応答を受信するために用いられるプロトコルを有する。
【００６２】
別の典型的な諸実施形態では、ポイント・ツー・ポイント・バスはスイッチまたはバイパス機構を含む。このため、多くの場合アップストリームの１つ以上のハブ・デバイスによって、バス情報がダウンストリーム通信（メモリ・コントローラからメモリ・モジュール上のハブ・デバイスへ向かう通信）時に２つ以上の考えられるハブ・デバイスの１つに向けられるほか、アップストリーム情報（メモリ・モジュール上のハブ・デバイスからメモリ・コントローラへの通信）も方向づける別の諸実施形態には、当技術分野で知られているような連続モジュールの使用が含まれる。この連続モジュールは、例えば、カスケード相互接続されたメモリ・システム中の、メモリ・コントローラと第１の実装されたハブ・デバイス（すなわち、１つ以上のメモリ・デバイスに接続されているハブ・デバイス）との間に設置して、メモリ・コントローラと第１の実装されたハブ・デバイスとの間の中間ハブ・デバイス位置のうち、１つ以上の中間ハブ・デバイス位置（単数または複数）がハブ・デバイスを含まなくても、メモリ・コントローラと最初に実装されたハブ・デバイスとの間を通過する情報が受信され得る手段をすべての中間ハブ・デバイス位置に含めるようにすることができる。連続モジュール（単数または複数）は、すべてのバス制限にしたがって、（メイン・メモリ・コントローラに最も近接した）第１の位置、（含まれているどの終端よりも優先される）最終位置、または任意の中間位置（単数または複数）を含む任意のモジュール位置（単数または複数）に設置されてもよい。連続モジュールの使用は、特に、マルチモジュール・カスケード相互接続バス構成において有益である。ここでは、メモリ・モジュール上の中間のハブ・デバイスが除去され連続モジュールによって代替されていて、中間ハブ・デバイスの除去後もシステムが動作を継続するようになっている。より一般的な諸実施形態では、連続モジュール（単数または複数）は、すべての必要な信号を入力部（単数または複数）から対応する出力部（単数または複数）へ転送するために電線を相互接続すること、またはリピータ・デバイスにより再駆動されることを含むものと考えられる。連続モジュール（単数または複数）は、（ＥＥＲＯＭなどの）不揮発性記憶装置をさらに含むが、メイン・メモリ記憶装置は含まないと考えられる。
【００６３】
典型的な諸実施形態では、メモリ・システムは、カスケード相互接続メモリ・バスを介してメモリ・コントローラに接続されている１つ以上のメモリ・モジュール上に１つ以上のハブ・デバイスを含むが、他のメモリ構成は、ポイント・ツー・ポイント・バス、マルチドロップ・メモリ・バス、またはシェアード・バスなどを用いて実現されてもよい。用いられる信号法、目標動作周波数、スペース、電力、コスト、およびその他の制限に応じて、種々の代替のバス構成が検討されてもよい。ポイント・ツー・ポイント・バスは、分岐信号線、スイッチ・デバイス、またはスタブを有するバス構成に比べて信号劣化の発生が減少するため、電気的な相互接続を用いて作られたシステムにおいて最適なパフォーマンスを提供することもできる。しかし、複数のデバイスまたはサブシステムとの通信を必要とするシステムで用いられた場合、この方法は追加構成要素の相当なコストおよびシステム電力の増加を招くことが多く、中間バファリングまたは再駆動あるいはその両方の必要性が原因で、記録密度の可能性を減少させることもある。
【００６４】
図示されていないが、メモリ・モジュールまたはハブ・デバイスは、ハブ・デバイスまたはメモリ・モジュールあるいはその両方の属性の判定（通常電源投入後）、障害情報またはステータス情報のシステムへの報告、起動後または通常動作時もしくは他の目的時のハブ・デバイス（単数または複数）もしくはメモリ・サブシステム（単数または複数）あるいはその両方の構成、を含む１つ以上の目的のために用いられる、”存在検出”バス、Ｉ２Ｃバス、またはＳＭＢｕｓあるいはその組み合わせなどの別個のバスも含むことができる。バスの特性に応じて、このバスはさらに、ハブ・デバイスもしくはメモリ・モジュール（単数または複数）あるいはその両方により動作の正当な完了をメモリ・コントローラ（単数または複数）に報告することができる手段、またはメイン・メモリ・コントローラの要求実行時に諸障害の識別を生じる手段も提供すると考えられる。
【００６５】
ポイント・ツー・ポイント・バス構成から得られたのと同様のパフォーマンスを、スイッチ・デバイスを追加することにより得ることができる。これらまたは他のソリューションは、ポイント・ツー・ポイント・バスの多くの特性を維持しながら、低電力でメモリ・パッキング密度を増加させることができる。マルチドロップ・バスは、低い動作周波数に制限されはするがコスト／パフォーマンスの点で多くの用途にとって有利となるであろう、別のソリューションを提供する。光学バス・ソリューションは、ポイント・ツー・ポイントの適用かマルチドロップの適用かに関わらず、周波数および帯域幅の可能性を大幅に増やせるが、コストおよびスペース面で打撃を受けるであろう。
【００６６】
本明細書で用いられている”バッファ”または”バッファ・デバイス”という用語は、（例えば、コンピュータにおける）一時記憶装置、特に、ある速度で情報を受け取り別の速度で送達する一時記憶装置を指す。典型的な諸実施形態では、バッファは、２つの信号間に互換性をもたらす（例えば、電圧レベルまたは現在の機能を変更する）電子デバイスである。”ハブ”という用語は、”バッファ”という用語と同じ意味で用いられることがある。ハブはいくつかの他のデバイスに接続されている複数のポートを含むデバイスである。ポートは、適合した入出力機能を果たすインタフェースの一部である（例えば、ポートは、ポイント・ツー・ポイント・リンクまたはバスの１つにより、データ情報、アドレス情報、および制御情報を送受信するために利用されていもよい）。ハブは、いくつかのシステム、サブシステム、またはネットワークを相互に接続する中心的なデバイスであってもよい。パッシブ・ハブは単にメッセージを転送するだけでよく、一方、アクティブ・ハブすなわちリピータは、距離によって劣化しないようにデータ・ストリームを増幅しリフレッシュする。本明細書で用いられているように、ハブ・デバイスという用語は、メモリ機能を実行するための論理を含むハブ・チップ（ハードウェアまたはソフトウェアあるいはその両方）を指す。
【００６７】
同様に本明細書で用いられている”バス”という用語は、コンピュータ内の２つ以上の機能単位を接続する一式の伝導体（例えば、配線、および集積回路内のプリント回路基板トレースまたは接続部）の１つを指す。データ・バス、アドレス・バス、制御信号と名前がそれぞれについているものの、互いなしでは役に立たないことが多いので、それらがまとまって単一のバスを構成している。バスが複数の信号線を含んでもよく、各信号線は２つ以上の接続ポイントを有する。これが２つ以上のトランシーバ、トランスミッタまたはレシーバあるいはそのすべてを電気的に接続するメイン伝送パスを形成する。”バス”という用語は、”チャネル”という用語と対照をなす。”チャネル”という用語は、メモリ・システム内のメモリ・コントローラに関連する”ポート”の機能を説明するのに使用されることが多く、１つ以上のバスまたは一式のバスを含むこともある。本明細書で用いられている”チャネル”という用語は、メモリ・コントローラ上のポートを指す。この用語は、入出力機器または他の周辺機器に関連して使用されることが多いが、一方で、”チャネル”という用語はプロセッサまたはメモリ・コントローラと１つ以上のメモリ・サブシステム（単数または複数）の１つとの間のインタフェースを説明するのにも使用されている。
【００６８】
さらに、本明細書で用いられている”デイジー・チェーン”という用語は、例えば、ＡデバイスがＢデバイスに接続されており、ＢデバイスがＣデバイスに接続されている等、バスの配線構成を指す。最終のデバイスは、典型的に、抵抗器または終端抵抗に接続されている。すべてのデバイスは同一の信号を受信してもよく、または単純なバスとは対照的に、各デバイスは、１つ以上の信号を通過させる前に、それらを変更してもよい。本明細書で用いられている”カスケード”または”カスケード相互接続”という用語は、一連のステージもしくは装置または相互接続されているネットワーク・デバイス（典型的にはハブ）の集合を指す。これらにおいては、ハブが論理リピータとして動作し、マージするデータを既存のデータ・ストリーム内に集めることがさらに可能になる。同様に本明細書で用いられている”ポイント・ツー・ポイント”バスまたは”ポイント・ツー・ポイント”リンクあるいはその両方の用語は、その各々が１つ以上の終端抵抗を含んでもよい１つまたは複数の信号線を指す。ポイント・ツー・ポイント・バスまたはポイント・ツー・ポイント・リンクあるいはその両方では、各信号線がトランシーバ接続の２つのポイントを有し、各トランシーバ接続のポイントがトランスミッタ回路、レシーバ回路、またはトランシーバ回路に接続された状態になっている。信号線は、典型的に１つのキャリアまたは２つもしくはそれより多いキャリアとして、らせん配置、並列配置、または同心配置で通常構成されており、少なくとも１つの論理信号を移送するのに使用されている１つ以上の電気伝導体または光学キャリアを指す。
【００６９】
メモリ・デバイスは通常、主としてメモリ（記憶）・セルを設けられている集積回路と定義されている。メモリ（記憶）・セルには、ＤＲＡＭ（Ｄｙｎａｍｉｃ  Ｒａｎｄａｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、ＳＲＡＭ（Ｓｔａｔｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｏｍｏｒｙ）、ＦｅＲＡＭ（Ｆｅｒｒｏ−Ｅｌｅｃｔｒｉｃ  ＲＡＭ）、ＭＲＡＭ（Ｍａｇｎｅｔｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、フラッシュ・メモリ（Ｆｌａｓｈ  Ｍｅｍｏｒｙ）、ならびに他の形態のランダム・アクセス・メモリおよび電気手段、光学手段、磁気手段、生物学的手段または他の手段の形で情報を記憶する関連メモリなどがある。動的メモリ・デバイスのタイプには、非同期メモリ・デバイスが含まれてもよい。非同期メモリ・デバイスには、ＦＰＭ  ＤＲＡＭ（Ｆａｓｔ  Ｐａｇｅ  Ｍｏｄｅ  Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、ＥＤＯ（Ｅｘｔｅｎｄｅｄ  Ｄａｔａ  Ｏｕｔ）ＤＲＡＭ、ＢＥＤＯ（Ｂｕｒｓｔ  ＥＤＯ）ＤＲＡＭ、ＳＤＲ（Ｓｉｎｇｌｅ  Ｄａｔａ  Ｒａｔｅ）Ｓｙｎｃｈｒｏｎｏｕｓ  ＤＲＡＭ、ＤＤＲ（Ｄｏｕｂｌｅ  Ｄａｔａ  Ｒａｔｅ）Ｓｙｎｃｈｒｏｎｏｕｓ  ＤＲＡＭ、または任意の今後予期されるデバイスなどがある。今後予期されるデバイスには、ＤＤＲ２、ＤＤＲ３、ＤＤＲ４および関連するテクノロジなどがあり、関連するテクノロジには、関連するＤＲＡＭ上に見られる基本機能、特徴、またはインタフェースあるいはその組み合わせに基づいていることが多いＧｒａｐｈｉｃｓ  ＲＡＭ，Ｖｉｄｅｏ  ＲＡＭ、ＬＰ  ＲＡＭ（Ｌｏｗ  Ｐｏｗｅｒ  ＤＲＡＭ）などがある。
【００７０】
メモリ・デバイスは、チップ（ダイ）、または種々のタイプおよび構成のシングルチップ・パッケージもしくはマルチチップ・パッケージあるいはその両方の形態で利用されてもよい。マルチチップ・パッケージでは、メモリ・デバイスは、他のメモリ・デバイス、論理チップ、アナログ・デバイス、およびプログラム可能なデバイスなどの他のデバイスのタイプとともにまとめられてもよく、抵抗器、コンデンサ、およびインダクタなどのパッシブ・デバイスも含んでよい。これらのパッケージは統合ヒートシンクまたは他の冷却増強部を含んでもよく、それらは、直近のキャリアもしくは他の隣接キャリアまたは熱除去システムにさらに接続されてもよい。
【００７１】
モジュール・サポート・デバイス（例えば、バッファ、ハブ、ハブ論理チップ、レジスタ、ＰＰＬ、ＤＬＬ、不揮発性メモリ等）は、テクノロジ、電力、スペース、コスト、およびその他のトレードオフに基づいて、複数の別個のチップまたは構成要素あるいはその両方で構成されてもよく、１つ以上の基板に複数の別個のチップを組み合わせてもよく、１つのパッケージ上に組み合わせられるか、または１つのデバイスに組み込まれてもよい。さらに、抵抗器、コンデンサなどの種々のパッシブ・デバイスの１つ以上は、テクノロジ、電力、スペース、コスト、およびその他のトレードオフに基づいて、サポート・チップ・パッケージに、または基板、ボード、もしくはロー・カード自体に組み込まれてもよい。これらのパッケージは一体型ヒートシンクまたは他の冷却増強部を含んでもよく、それらは、直近のキャリアもしくは他の隣接キャリアまたは熱除去システムにさらに接続されてもよい。
【００７２】
メモリ・デバイス、ハブ、バッファ、レジスタ、クロック・デバイス、受動部、および他のメモリ・サポート・デバイスもしくは構成要素あるいはその両方は、（２つ以上のデバイス間の、電気的手段、光学的手段、または代替の手段を介する通信を可能にする）はんだ相互接続、導電接着剤、ソケット構造、圧接、およびその他の方法を含む種々の方法により、メモリ・サブシステムまたはハブ・デバイスあるいはその両方に接続されてもよい。
【００７３】
１つ以上のメモリ・モジュール（もしくはメモリ・サブシステム）またはハブ・デバイスあるいはその両方は、はんだ相互接続、コネクタ、圧接、導電接着剤、光相互接続、ならびに他の接続および電源供給法などの１つ以上の方法により、メモリ・システム、プロセッサ複合体、コンピュータ・システム、またはその他のシステム環境に接続されてもよい。コネクタ・システムは、嵌合コネクタ（雄／雌）、１つのキャリア上で雄コネクタまたは雌コネクタと嵌合している導電接触または導電ピンあるいはその両方、光接続、圧接（保持機構と連結することが多い）、または種々の他の接続および電源供給法などの１つ以上の方法あるいはそのすべてを含んでもよい。相互接続（単数または複数）は、更新／修復のしやすさ、利用可能なスペース／体積、熱伝達、構成要素の大きさおよび形状、ならびに他の関連する物理的、電気的、光学的、視覚的／物理的なアクセス等の適用要件に応じて、メモリ・アセンブリの１つ以上の縁端部に沿って配置されるか、またはメモリ・サブシステムの縁端部から距離をおいて配置されるかあるいはその両方で配置されてもよい。
【００７４】
本明細書で用いられているように、メモリ・サブシステムという用語は、以下に限られないが１つ以上のメモリ・デバイス；１つ以上のメモリ・デバイスおよび関連するインタフェース、またはタイミング／制御回路、あるいはその両方；またはメモリ・バッファ、ハブ・デバイス、もしくはスイッチあるいはその組み合わせに接続している１つ以上のメモリ・デバイスあるいはその組み合わせを指す。メモリ・サブシステムという用語も、１つ以上のメモリ・デバイスを指すほか、任意の関連するインタフェース、タイミング／制御回路、もしくはメモリ・バッファあるいはその組み合わせ、ハブ・デバイス、またはスイッチを指す。それらは、基板、カード、モジュール、または関連するアセンブリ内に集められており、メモリ・サブシステムを他の回路で電気的に接続するコネクタまたは類似の手段を含んでもよい。本説明書に記載されているメモリ・モジュールは、１つ以上のメモリ・デバイスおよびハブ・デバイスを含むため、”メモリ・サブシステム”とも呼ばれる。
【００７５】
メモリ・サブシステムまたはハブ・デバイスあるいはその両方にローカルに常駐する追加機能には、書込みバッファまたは読取りバッファあるいはその両方、１レベル以上のメモリ・キャッシュ、ローカルのプリフェッチ論理、データの暗号化／復号、圧縮／解凍、プロトコルの変換、コマンドの優先順位決定論理、電力またはレベルの変換あるいはその両方、エラー検出回路またはエラー訂正回路あるいはその両方、データの消込み、ローカル省電力回路またはローカル省電力報告あるいはその両方、動作記録またはステータス記録あるいはその両方、初期化回路、パフォーマンス・モニタリングまたはパフォーマンス制御あるいはその両方、１つ以上のコプロセッサ、サーチ・エンジン（類）、および他のメモリ・サブシステムに既に常駐する他の機能が含まれる。メモリ・サブシステムにローカルな機能を置くことにより、多くの場合サブシステム内の未使用回路を使用中に、その特定の機能に関連して追加機能が得られる場合がある。
【００７６】
メモリ・サブシステム・サポート・デバイス（単数または複数）が、メモリ・デバイス（単数または複数）が接続されているものと同じ基板またはアセンブリに直接接続されてもよく、または同様に種々のプラスチック、シリコン、セラミック、または他の材料の１つ以上を用いて作られている別個のインタポーザもしくは基板に取り付けられてもよい。この別個のインタポーザまたは基板は、サポート・デバイス（単数または複数）を、メモリ・デバイス（単数または複数）と、またはメモリ・システムもしくはコンピュータ・システムの他の要素とあるいはその両方と機能的に相互接続するための電気通信パス、光通信パス、または他の通信パスを含む。
【００７７】
バス、チャネル、リンク、または相互接続法に適用される他の命名規則にしたがった情報転送（例えば、パケット）は、多数のシグナリング・オプションの１つ以上を用いて完了されてもよい。これらのシグナリング・オプションは、シングルエンド法、差動法、光学法、または他の手法などを含んでもよく、電気シグナリングは、シングルレベル法またはマルチレベル法のいずれかを用いる電圧シグナリングまたは電流シグナリングなどの方法をさらに含んでいる。信号はまた、時間または周波数、非ゼロ復帰、位相変調、振幅変調等の方法を用いて変調される。電圧レベルは、１．５Ｖ、１．２Ｖ、１Ｖ、および予想されるさらに低い信号電圧というように、関連する集積回路自体の動作に必要な電源電圧の減少と一致して（無関係なことも多いが）、継続して減少することが予想される。
【００７８】
グローバル・クロッキング、ソース同期クロッキング、エンコード・クロッキング、またはこれらの組み合わせ、および他の方法を含む１つ以上のクロッキング法を、メモリ・サブシステムおよびメモリ・システム自体の内部で利用してもよい。クロック・シグナリングは、信号線自体のクロック・シグナリングと同一でもよく、種々のサブシステム内部の予定のクロック周波数および予定のクロック数に関して伝導性のより高い、列挙された方法または代替の方法の１つを利用してもよい。単一のクロックが、メモリに対するすべての送受信、ならびにメモリ・サブシステム内のすべての測定されている機能に関連していてもよく、または複数のクロックが前述の方法などの１つ以上の方法を用いて供給されてもよい。複数のクロックが用いられる場合、メモリ・サブシステム内の機能は、一意的にサブシステムに供給されるクロックに関連していてもよく、またはメモリ・サブシステムからおよびメモリ・サブシステムへ送信されている情報に関連するクロックに由来するクロック（例えば、エンコードされたクロックに関連するクロック）に基づいてもよい。あるいは、一意のクロックが、メモリ・サブシステムへ転送される情報に関して用いられてもよく、および別個のクロックが、１つ（以上）のメモリ・サブシステムを送信源とする情報に関して用いられてもよい。クロック自体は、通信周波数または機能周波数と同じが倍数の周波数で動作してもよく、エッジ・アラインにするか、センタ・アラインにするか、またはデータ情報、コマンド情報、またはアドレス情報に対する代替のタイミング位置にアラインされてもよい。
【００７９】
メモリ・サブシステム（単数または複数）へ向かう情報は、通常、アドレス、コマンド、およびデータ、ならびに他の信号からなるであろう。他の信号は通常、ステータスまたはエラー状態の要求または記録、メモリのリセット、メモリまたは論理の初期化の完了、および他の機能情報、構成情報、または関連情報に関連する。メモリ・サブシステム（単数または複数）からくる情報は、メモリ・サブシステム（単数または複数）へ向かう任意のまたはすべての情報を含んでもよいが、通常、アドレス情報およびコマンド情報は含まないであろう。この情報は、通常のメモリ・デバイス・インタフェースの仕様（通常、本質的に並列）と合致する通信方法を用いて通信されてもよく、情報は’パケット’構造内にエンコードされてもよい。この構造は、将来的なメモリ・インタフェースに合致していてもよく、または単に通信帯域幅を増大させるため、もしくは受信した情報を受信用デバイス（単数または複数）が要求するフォーマットに変換することによりサブシステムがメモリ・テクノロジとは無関係に動作できるようにするためあるいはその両方のために開発されてもよい。
【００８０】
メモリ・サブシステムの初期化が、利用可能なインタフェース・バス、所望の初期化速度、利用可能なスペース、コスト／複雑性目的、サブシステムの相互接続構成、この用途または他の用途等のために使用される代替のプロセッサ（サービス・プロセッサなど）の使用に基づいて、１つ以上の方法によって完了されてもよい。１つの実施形態では、通常、信頼できる通信を確立するために最初にトレーニング・プロセスを完了することにより、次に、該サブシステムに関連する種々の構成要素または特性あるいはその両方に関連する属性データまたは’存在検出’データの問い合わせにより、最終的に、該システム内での対象とする動作に関連する情報を用いて適切なデバイスをプログラミングすることにより、メモリ・サブシステム（単数または複数）の初期化を完了するために高速バスが使用されてもよい。カスケードされたシステムでは、第１のメモリ・サブシステムとの通信は通常確立され、後続の（ダウンストリームの）サブシステムがカスケード相互接続バスに沿ったそれらの位置に一致する順序で後に続くと考えられる。
【００８１】
第２の初期化方法としては、高速バスが初期化プロセス中には１つの周波数で、次に通常動作時には第２の（通常、高い）周波数で動作する方法を含むものが考えられる。本実施形態では、低い周波数動作に関連するタイミング・マージンの増加により、各サブシステムの問い合わせまたはプログラミングあるいはその両方を完了するより前に、カスケード相互接続バス上のすべてのメモリ・サブシステムとの通信を開始することが可能である。
【００８２】
第３の初期化方法としては、各アドレス、各コマンド、または各データあるいはそのすべての転送に関連するサイクル数を増加させるが、通常の動作周波数でのカスケード相互接続バスの動作を含むものが考えられる。１つの実施形態では、通常動作中であれば、アドレス情報、コマンド情報、またはデータ情報あるいはそのすべての全部または一部を含むパケットが、１クロック・サイクルで転送されるであろうが、初期化中であれば、同じ量の情報または同じタイプの情報あるいはその両方が、２、３またはそれより多いサイクルで転送されることになるであろう。したがって、この初期化プロセスは、’通常’コマンドではなく’低速’コマンドの形式を用いているものと考えられ、起動または再起動あるいはその両方の後のある時点で、これらのサブシステムの各々に含まれるＰＯＲ（パワーオンリセット）論理により、サブシステムおよびメモリ・コントローラの各々が自動的にこのモードに入ると考えられる。
【００８３】
第４の初期化方法としては、存在検出バス（本発明と研究課題が共通の、Ｄｅｌｌらへの米国特許第５５１３１３５号明細書で定義されているバスなど）、Ｉ２Ｃバス（刊行物「ＪＥＤＥＣ  ｓｔａｎｄａｒｄｓ  ｓｕｃｈ  ａｓ  ｔｈｅ  １６８  Ｐｉｎ  ＤＩＭＭ  ｆａｍｉｌｙ」ｉｎ  ｐｕｂｌｉｃａｔｉｏｎ  ２１−Ｃ  ｒｅｖｉｓｉｏｎ  ７Ｒ８で定義されているバスなど）、またはＳＭＢｕｓあるいはそのすべてなどの特殊バスを利用するものが考えられる。このようなバスは、そのようなメモリ・モジュールを使用しているコンピュータ・システム内で広く利用され文書化されている。この特殊バスは、メモリ・システム内で、デイジー・チェーン／カスケード相互接続、マルチドロップ構成、または代替の構成で１つ以上のモジュールに接続されており、通常システム動作中のある時には、パフォーマンス、熱、構成、またはシステム環境において所望されるかもしくは検出されるその他の変化に基づいて、メモリ・サブシステムへ問い合わせをし、１つ以上のメモリ・サブシステムの各々がシステム環境全体の中で動作するようにプログラミングし、および動作特性を調節する独立した手段を提供すると考えられる。
【００８４】
初期化の他の方法も、列挙された方法と併せてまたはそれとは独立して用いることができる。上記第４の実施形態に記載したような別個のバスの使用も、初期化と、本発明と課題が共通のＤｅｌｌらへの米国特許第６，３８１，６８５号明細書に記載されているようなサブシステム動作特性へのオンザフライの変更を含む、初期化以外の使用との両方に対し、ならびに利用、温度データ、故障情報、または他の目的などの動作のサブシステム情報の記録、およびそれへの応答に対し、独立した手段を設けることの利点を提供する。
【００８５】
リソグラフィの進歩、プロセス制御の向上、抵抗がより低い材料の使用、フィールド長の拡大、および他の半導体処理の向上により、デバイス回路密度の増大（多くの場合ダイ・サイズの拡大に関連している）は、集積デバイスでの機能の増加、ならびに以前は別個のデバイスで実行されていた機能の統合の促進に役立つであろう。この統合は、対象とする機能のパフォーマンス全体の向上、ならびに記憶密度の増大、省電力、スペースの必要性の減少、低価格、および他の製造者および消費者の利益の促進に役立つであろう。この統合は当然の進化の過程であり、それにより、システムに関連する基本構成要素の構造変更が必要になる可能性がある。
【００８６】
通信パスの保全性、データ記憶コンテンツ、およびメモリ・システムまたはサブシステムの各要素に関連するすべての機能動作は、１つ以上の障害検出方法または障害訂正方法あるいはその両方を使用することにより、高度に保証することができる。種々の要素のいずれかまたはすべてには、ＣＲＣ（Ｃｙｃｌｉｃ  Ｒｅｄｕｎｄａｎｃｙ  Ｃｏｄｅ）、ＥＤＣ（Ｅｒｒｏｒ  Ｄｅｔｅｃｔｉｏｎ  ａｎｄ  Ｃｏｒｒｅｃｔｉｏｎ）、パリティ、またはこの目的に適した他のエンコード／復号方法などの、エラー検出方法まはたエラー訂正方法あるいはその両方が含まれてもよい。別の信頼性向上には、（例えば、情報の転送に関連する間欠故障を克服するための）動作再試行、故障しているパスもしくは線あるいはその両方に取って代わる１つ以上の代替通信パスもしくは交換通信パスの使用、補完−再補完技法、またはコンピュータ、通信、および関連するシステムで用いられる別の方法が含まれてもよい。
【００８７】
ポイント・ツー・ポイント・リンクと同様に簡潔で、マルチドロップ構成と同様に複雑なバス上のバス終端の使用は、パフォーマンス要求の増加に同調して広く行き渡りつつある。多種多様の終端方法を識別し検討することができ、それらには、抵抗器、コンデンサ、インダクタ、またはそれらの任意の組み合わせなどのデバイスの使用が含まれ、これらのデバイスは信号線と、電源電圧もしくは電源接地、終端電圧、またはその他の信号線との間に接続されている状態にある。終端装置（単数または複数）はパッシブ終端構造またはアクティブ終端構造の一部としてもよく、１つ以上の信号線に沿って、またはトランスミッタもしくは受信デバイス（単数または複数）あるいはその両方の一部として、あるいはその両方の状態で、１つ以上の位置に常駐してもよい。終端デバイスは、トランスミッタ線のインピーダンスを一致させるために選択されるか、または使用可能な周波数、動作マージン、ならびにコスト、スペース、電力、および他の制限の中の関連する属性を最大限にする別の手法によって選択されてもよい。
【００８８】
典型的な諸実施形態の技術効果および技術恩恵には、実行時間中にメモリ・インタフェースを認可し（適用条件下で）、システムの傷害がどこで生じているかを知るためにメモリ・システムの複数のインタフェースをモニタする機能が含まれる。この情報は、現在のメモリ・システム内で最適化されたレジスタ設定をプログラムするため、または障害を除去するために設計を変更するためあるいはその両方のために利用されてもよい。典型的な諸実施形態は、初期設計時、出荷前または出荷後あるいはその両方の起動時に、顧客環境でしか生じないランダムな故障の診断を助長するために利用されてもよい。
【００８９】
前述のように、本発明の諸実施形態は、これらのプロセスを実施するためのコンピュータ実行型のプロセスおよび装置の形で具現化されてもよい。本発明の諸実施形態はまた、フレキシブル・ディスク、ＣＤ−ＲＯＭ、ハード・ドライブ、または他の任意のコンピュータ可読記憶メディアなどの有形メディアで具現化されている命令を含むコンピュータ・プログラム・コードの形で具現化されてもよい。コンピュータ・プログラム・コードがコンピュータにロードされコンピュータにより実行されるとき、該コンピュータは本発明を実施するための装置となる。本発明は、例えば、記憶メディアに格納されているか、コンピュータにロードされているかもしくはコンピュータにより実行されているかあるいはその両方であるか、なんらかの送信メディアで（例えば、電線または電気ケーブル、光ファイバ、または電磁波で）送信されている、コンピュータ・プログラム・コードの形でも具現化され得る。コンピュータ・プログラム・コードがコンピュータにロードされコンピュータにより実行されるとき、該コンピュータは本発明を実施するための装置となる。汎用マイクロプロセッサ上で実行される場合、コンピュータ・プログラム・コード・セグメントは、特定の論理回路を作るためにマイクロプロセッサを構成する。
【００９０】
典型的な諸実施形態を参照して本発明を説明してきたが、種々の変更がなされてもよいこと、本発明の範囲を逸脱することなくその要素の代わりに均等物を代入してもよいことが、当業者に理解されるであろう。さらに、特別な状態または材料を本発明の教示に適合させるために本発明のきわめて重要な範囲を逸脱することなく多くの変更がなされてもよい。したがって、本発明は、本発明を実施するために熟考された最良の形態として開示されている特定の実施形態に限定されず、添付の請求項の範囲内に入るすべての実施形態を含むことを意図している。さらに、第１の、第２の等の用語は、いかなる順序または重要性も示さないが、第１の、第２の等の用語は、むしろある要素と他の要素を区別するために用いられている。
【図面の簡単な説明】
【００９１】
【図１】典型的な旧式の同期メモリ・モジュールを示す図である。
【図２】メモリ・コントローラに直接接続されている完全バッファード同期メモリ・モジュールを有する、典型的なコンピュータ・システムを示す図である。
【図３】１つの従来型マルチドロップ・スタブ・バスを有する、典型的なメモリ・システムを示す図である。
【図４】完全バッファード同期メモリ・モジュールおよびシステム構成を示す図であり、完全バッファード同期メモリ・モジュールがリピータ機能を含む図である。
【図５】１つのアクセス要求をサポートするために一致して動作する、複数の独立したカスケード相互接続メモリ・インタフェース・バスを含むコンピュータ・メモリ・システムのブロック図である。
【図６】メモリ・サブシステムにおける典型的なハブ・デバイスのブロック図である。
【図７】典型的な諸実施形態で実行されるとよいパフォーマンス・モニタリング論理を含む典型的なハブ・デバイスのブロック図である。
【図８】典型的な諸実施形態でメモリ・パフォーマンスをモニタするために利用されるとよいプロセス・フローの図である。
【図９】典型的な諸実施形態において実行されるとよいメモリ・パフォーマンス・モニタリングの構成要素のブロック図である。
【符号の説明】
【００９２】
ネットワーク寄りのメモリ・コントローラ
５０１  ランク０
５０４  メモリ・ハブ・デバイス
５０９  ＤＲＡＭ
６０４  リンク・インタフェース
６０６  読取りデータ・キュー
６０８  メモリ・デバイス・データ
６１１  書込みデータ・キュー
６１３  メモリ・ハブ制御部
６１４、６１４’  メモリ・デバイス・アドレスおよび制御バス
６１５  メモリ・デバイス・データ・インタフェース
６１６  ランク１
７０２  パフォーマンス・モニタ
ネットワークから離れたメモリ・コントローラ
【図１】
2008041089.tif 000008
【図２】
2008041089.tif 000009
【図３】
2008041089.tif 000010
【図４】
2008041089.tif 000011
【図５】
2008041089.tif 000012
【図６】
2008041089.tif 000013
【図７】
2008041089.tif 000014
【図８】
2008041089.tif 000015
【図９】
2008041089.tif 000016