(57)【特許請求の範囲】
【請求項１】
複数のレベルに構成され、アドレスにデータを記憶するハイアラーキーメモリを有するコンピュータシステムの状態をサンプリングするための装置において、
上記ハイアラーキーメモリによって処理されるべきメモリトランザクションを第１状態及びトランザクション情報に基づいて選択するセレクタと、
第２状態及びトランザクション情報に基づいて上記セレクタを作動するトリガーと、
上記選択されたメモリトランザクションをハイアラーキーメモリにおいて処理する間に、選択されたメモリトランザクションで識別されるコンピュータシステムの状態を記憶するサンプラーとを備え、
上記セレクタが、(i)どのメモリトランザクションが選択されるかに従い、複数のトランザクションモードの一つを記憶するためのモードレジスタと、(ii)どのメモリトランザクションが選択されるかに従い、上記第１状態を記憶するモニタレジスタと、を含むことを特徴とする装置。
【請求項２】
サンプリングされた状態はバッファに記憶され、そして読み取られるべき状態をバッファが記憶するときに信号を発生する手段を更に備えた請求項１に記載の装置。
【請求項３】
上記セレクタは、モード及び第１状態の論理的な組合せに基づく請求項１に記載の装置。
【請求項４】
上記セレクタは、カウンタにより上記トリガーに接続され、このカウンタは、セレクタが作動される割合を決定し、そしてこの割合は、トリガー事象をカウントすることにより決定される請求項１に記載の装置。
【請求項５】
上記トリガー事象はクロックサイクルである請求項４に記載の装置。
【請求項６】
上記トリガー事象はトランザクションである請求項４に記載の装置。
【請求項７】
上記トリガー及びセレクタは、各々、変換ルックアサイドバッファからトランザクション情報を受け取り、この変換ルックアサイドバッファは、仮想アドレスを物理アドレスに変換する請求項１に記載の装置。
【請求項８】
各トランザクションモードがメモリレベルに基づくトランザクションを含み、メモリレベルは、オンチップキャッシュ、オフチップキャッシュ及びメインメモリを含む請求項１に記載の装置。
【請求項９】
各トランザクションモードがトランザクションのソースに基づくトランザクションを含み、このソースは、命令、直接メモリアクセスオペレーション及びデータコヒレンスメッセージを含む請求項１に記載の装置。
【請求項１０】
各トランザクションモードがコンテクストに基づくトランザクションを含み、このコンテクストは、プロセス、スレッド、アドレススペース及びハードウェアコンテクストを含む請求項１に記載の装置。
【請求項１１】
上記バッファは複数のフィールドを含み、これらフィールドは、選択されたトランザクションによりアクセスされるアドレスに記憶されたデータの状態、アドレスの状態、トランザクションによりアクセスされるデータのアドレス、トランザクションが発生するところのコンテクストの識別子、トランザクションのソースの識別子、及びトランザクションが処理される間に測定される待ち時間とを記憶する請求項２に記載の装置。
【請求項１２】
上記状態は、内部のメモリシステム構造体の状態を含み、この内部のメモリシステム構造体は、書き込みバッファ、ビクティムバッファ、変換ルックアサイドバッファ、ミスアドレスファイル、及びメモリトランザクション待ち行列を含み、そして上記状態は、内部のメモリシステム構造体におけるアクティブなエントリの数を含む請求項１に記載の装置。
【請求項１３】
上記カウンタには、サンプリングのレートを決定するための所定値がロードされる請求項４に記載の装置。
【請求項１４】
上記所定値は、ある範囲の数字からランダムに選択される請求項１３に記載の装置。
【請求項１５】
上記トリガーは、トランザクションの形式に基づいて作動し、この形式は、読み取り、書き込み及び無効化トランザクションを含む請求項１に記載の装置。
【請求項１６】
上記選択されたトランザクションは、所定の同じ選択基準を満足する一連のトランザクションを含む請求項１に記載の装置。
【請求項１７】
上記セレクタ及びトリガーはソフトウェアでセットできる請求項１に記載の装置。
【請求項１８】
選択されたトランザクションを処理する前後に、上記状態を記録する請求項１に記載の装置。
【請求項１９】
上記第２状態は、連続的に選択されたトランザクションが処理される間にカウントされる事象を含む請求項１に記載の装置。
【請求項２０】
上記事象は、クロックサイクル及びトランザクションを含む請求項１９に記載の装置。
【請求項２１】
上記状態は、トランザクションの特定の仮想アドレスをそれに対応する物理アドレスに変換するのに使用される変換ルックアサイドバッファのエントリのインデックスを含む請求項１に記載の装置。
【請求項２２】
上記状態は、トランザクションの部分アドレスを含み、この部分は、メモリページへのインデックスに対応する請求項１に記載の装置。
【請求項２３】
複数のレベルに構成され、アドレスにデータを記憶するハイアラーキーメモリを有するコンピュータシステムの状態をサンプリングするための装置において、
上記ハイアラーキーメモリによって処理されるべきメモリトランザクションを第１状態及びトランザクション情報に基づいて選択するセレクタと、
第２状態及びトランザクション情報に基づいて上記セレクタを作動するトリガーと、
上記選択されたメモリトランザクションをハイアラーキーメモリにおいて処理する間に、選択されたトランザクションで識別されるコンピュータシステムの状態を記憶するサンプラーとを備え、
上記セレクタが、(i)どのメモリトランザクションが選択されるかに従い、複数のトランザクションモードの一つを記憶するためのモードレジスタと、(ii)どのメモリトランザクションが選択されるかに従い、上記第１状態を記憶するモニタレジスタとを含み、
さらに、上記記憶されたトランザクションモードがアドレスに従い選択され、そのアドレスは、物理ブロックアドレス、キャッシュライン番号、物理メモリアドレス、及び仮想メモリアドレスを含む、ことを特徴とする装置。
【請求項２４】
上記記憶されたトランザクションモードは、さらに、プロセス、スレッド、アドレス空間、及びハードウェアコンテクストに基づき選択される請求項２３に記載の装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、一般に、コンピュータシステムの性能を測定することに係り、より詳細には、コンピュータシステムのメモリに記憶されたデータをアクセスするのに使用されるトランザクションのサンプリングに係る。
【０００２】
【従来の技術】
近代的なコンピュータシステムが動作する速度は、キャッシュのようなメモリサブシステムや、ＳＲＡＭ、ＤＲＡＭ、ディスク等を含む他のレベルのハイアラーキーメモリサブシステムの性能によりしばしば制限される。キャッシュメモリは、空間的及び時間的位置を共用するデータを記憶するよう意図される。他のメモリは、短時間及び長時間のいかなる数の編成方式でデータを記憶することもできる。
メモリトランザクションの性能を分析しそして最適化するために、優れた測定ツールが必要とされる。現在、メモリトランザクションを特徴付ける詳細な情報を正確に測定しそして捕獲できるツールは、非常に僅かである。
【０００３】
【発明が解決しようとする課題】
既存のハードウェア事象カウンタは、キャッシュ参照又はキャッシュミスのような特定のメモリトランザクションに関連した個別の事象を検出することはできるが、既知の事象カウンタは、性能低下事象の原因及びこのような事象をいかに回避できるかを厳密に推定できるようにする詳細をほとんど与えない。
例えば、現在、データをアクセスする間に、クリーン又はダーティ、共用又は非共用といったキャッシュブロックの状態に関する情報を得ることは著しく困難である。又、どのメモリアドレスが実際にキャッシュに常駐し、又はどのメモリアドレスが特定のキャッシュブロックに対して競合しているかを決定することも非常に困難である。というのは、既存のシステムは、アクセスされるデータの仮想及び物理アドレスを得る容易な方法を与えるものではないからである。
【０００４】
同様に、性能低下事象を生じた特定のメモリ参照の原因を確かめることも困難である。その原因は、特定のコンテクスト（例えば、プロセス、スレッド、ハードウェアコンテクスト及び／又はアドレススペース番号）に代わってプロセッサパイプラインにおいて実行される命令であるか、種々の入力／出力デバイスから発せられる直接メモリアクセス（ＤＭＡ）のようなプロセッサパイプラインの外部のメモリ要求であるか、或いはマルチプロセッサコンピュータシステムにおいて他のプロセッサから発せられるキャッシュコヒレンシーメッセージである。キャッシュのラインにおける特定のブロック、メインメモリにおける物理的アドレス又は仮想メモリにおけるページアドレスのようなメモリの特定領域へのアクセスをサンプリングすることは、より一層困難である。
【０００５】
模擬又は計装を使用して、ロード及び記憶命令によるもののようなプロセッサ開始アクセスに対してメモリアドレスを追跡することができる。しかしながら、通常、模擬及び計装技術は、特に真の生産ワークロードをもつ大規模システムに対し、最適に満たない測定を与えるに足るシステムの真のオペレーションを妨げる。又、計装技術は、プログラムを変更又は増強するので、それらはメモリ及びキャッシュのレイアウトを本来的に変更し、オリジナルシステムのメモリ性能を歪めてしまう。例えば、命令キャッシュ競合は、プログラムの計装バージョンと非計装バージョンとの間で著しく相違する。
しかしながら、メモリアクセスが、ＤＭＡトランザクション又はマルチプロセッサにおけるキャッシュコヒレンシートランザクションのような何らかの事象によるものであるときには、アクセスされるアドレスの追跡は、通常、監視されるべきメモリシステムの部分のみについて特に設計された特殊なハードウェアでしか行えない。
【０００６】
更に、オペレーティングシステム及びアプリケーションソフトウェアを最適化するためには、メモリトランザクションに関する他の形式の情報、例えば、異なる実行スレッド又はプロセスにより使用されるメモリの量、及び特定のメモリトランザクションを完了するのに必要な時間の長さを入手できるのが有用である。更に、おそらくはシステムが真のワークロードのもとで動作している間でも命令スケジューリング及びデータ割り当てを最適化するための情報を使用できれば、もっと有用である。
【０００７】
【課題を解決するための手段】
本発明によれば、複数のレベルに構成され、アドレスにデータを記憶するハイアラーキーメモリを有するコンピュータシステムの状態をサンプリングするための装置が提供される。
この装置は、メモリトランザクションを第１状態及びトランザクション情報に基づいて選択するセレクタを備えている。メモリトランザクションは、ハイアラーキーメモリによって処理されるべきものである。トリガーは、第２状態及びトランザクション情報に基づいてセレクタを作動する。
サンプラーは、選択されたメモリトランザクションをハイアラーキーメモリにおいて処理する間に、選択された命令で識別されるコンピュータシステムの状態を記憶する。
【０００８】
【発明の実施の形態】
システムの概要
図１は、ここに述べるようにメモリトランザクションサンプリング技術を使用することのできるコンピュータシステム１００を示す。このシステム１００は、バスライン１４０で接続された１つ以上のプロセッサ１１０、メモリ１２０及び入力／出力インターフェイス（Ｉ／Ｏ）１３０を備えている。
各プロセッサ１１０は、例えば、デジタルイクイップメント社のＡｌｐｈａ２１２６４プロセッサのように、プロセッサパイプライン１１１と、命令キャッシュ（Ｉキャッシュ）１１２と、データキャッシュ（Ｄキャッシュ）１１３とを含む集積半導体チップにおいて実施することができる。パイプライン１１１は、命令を処理するための複数の直列に配置された段、例えば、フェッチユニット、マップユニット、イッシューユニット、１つ以上の実行ユニット及びリタイアユニットを含むことができる。又、プロセッサチップは、種々のメモリのアドレスに記憶されたデータをアクセスする間にキャッシュ状態情報をサンプリングするための以下に詳細に述べるハードウェア１１９も備えている。
【０００９】
メモリ１２０は、ボードレベルキャッシュ（Ｂキャッシュ）１２１と、揮発性メモリ（ＤＲＡＭ）１２２と、永続的メモリ（ディスク）１２３とを含むハイアラーキー構成をとることができる。Ｉ／Ｏ１３０は、他のプロセッサ、キーボード、モニタへのメモリチャンネル、及び他のコンピュータシステムへのネットワークコントローラのようなＩ／Ｏデバイスを用いてシステム１００に対してデータを入力及び出力するのに使用できる。
【００１０】
メモリトランザクション
一般に、メモリトランザクションは、ここでは、ある位置から別の位置へデータを移動させるオペレーション、例えば、ロード及び記憶、直接メモリアクセス（ＤＭＡ）オペレーション、及び多数のプロセッサ又は実行スレッドがデータを同時にアクセスする場合のコヒレンシートランザクションとして定義される。
オペレーション
システム１００のオペレーション中に、ソフトウェアプログラムの命令及びデータはメモリ１２０に記憶される。命令は、既知のコンパイラー、リンカー及びローダー技術を用いて従来の仕方で発生される。命令は、Ｉキャッシュ１１２を経て１つのプロセッサ１１０のパイプライン１１１に転送され、そしてデータはＤキャッシュ１１３を経て転送される。パイプライン１１１では、命令が実行のためにデコードされる。
命令キャッシュ（Ｉキャッシュ）１１２は、プロセッサパイプライン１１１により実行される命令をフェッチするためにパイプラインによりアクセスされる。ある命令、例えば、ロード及び記憶命令は、Ｄキャッシュ１１３を経てメモリに記憶されたデータ（Ｒ／Ｗ）をアクセスする。他の命令、例えば、分岐及びジャンプ命令は、プログラムの実行流を制御する。又、データは、直接メモリアクセス（ＤＭＡ）及びキャッシュコヒレンシーオペレーションにより転送することもできる。いずれかのメモリのデータがアクセスされる間に詳細な性能情報を収集するのが望ましい。
【００１１】
メモリトランザクションサンプリング
図２は、メモリトランザクションをサンプリングする構成を示す。キャッシュ２００は、複数のライン２０２を含む。キャッシュは、直接マップ式でもよいし又はセット連想式でもよい。各ラインは、１つ以上のブロック２０１より成る。直接マップ式キャッシュのラインは、単一のブロックのみを含み、一方、Ｎ路のセット連想式キャッシュのラインは、各々、Ｎ個のブロックを含む。
例えば、４路のセット連想式キャッシュでは、１つのラインが、ある数の下位アドレスビットを共通にもつ４つの異なるメモリアドレスのデータを記憶する。アクセス中に、キャッシュラインインデックスによりラインが参照された後に、各ブロックを検査して、ラインが所要データを記憶するかどうか決定しなければならない。これは、タグ２１０で行われる。ブロックをいかに検査するかの厳密な詳細は、セット連想式キャッシュの実施によって左右される。又、各ブロックには、データ２２０及び状態情報２３０も関連される。タグ、データ及び状態を記憶するのに異なる物理的ハードウェアを使用することもできる。
【００１２】
図２に示す構成体は、変換ルックアサイドバッファ（ＴＬＢ）２４０と、トリガーファンクション２５０と、カウンター２６５と、選択ファンクション２６０と、サンプリングバッファ３０１−３０３と、サンプリングソフトウェア２８０も備えている。
システムのオペレーション中に、トランザクション入力がライン２４１を経て変換ルックアサイドバッファ（ＴＬＢ）２４０へ送られる。このトランザクション入力は、仮想アドレス（ＶＡ）と、アドレススペース番号（ＡＳＮ）のようなコンテクスト識別子と、そしてマルチスレッド式プロセッサ設計の場合には、ハードウェアコンテクスト識別子（ＨＣＩ）とを含むことができる。又、入力は、実行されるべきアクセスオペレーションの形式（Ｒ／Ｗ／ＤＭＡ）も含むことができる。
【００１３】
ＴＬＢ２４０は、仮想アドレスを物理アドレスへと変換する。通常、ある数の下位（例えば、８−１６）ビットより成るアドレス（物理的にインデックスされるキャッシュについては物理的アドレス又は仮想的にインデックスされるキャッシュについては仮想アドレス）の一部分は、ライン２４２’にキャッシュ２００へのインデックスを形成するのに使用される。このインデックスは、特定のキャッシュライン２０２を選択する。
次いで、選択されたキャッシュライン２０２内でブロック２０１の各々にルックアップオペレーションを実行して、ラインのブロックに適当なデータが存在するかどうか決定する。アクセスオペレーションに基づき、データは、ライン２５１及び２５２において読み取り又は書き込みすることができる。
【００１４】
ライン内のいずれのブロックにも適当なデータが見つからない場合には、新たなデータのための場所を作るためにキャッシュから他のデータが追放される。この追放されるデータがダーティであり、即ちキャッシュに記憶されたデータのバージョンが変更されそしてその周囲レベルのメモリハイアラーキーに記憶されたダーティデータのコピーが一貫したものでない場合には、その追放されるデータは、一貫性を維持するために周囲レベルのメモリハイアラーキーの適当なアドレスに書き戻すことが必要となる。
コンピュータシステムで実行されるプログラム及びメモリシステムの振る舞いに関する徴候を得るために、メモリシステムのトランザクションをサンプリングすることが目標である。各メモリトランザクションは、それがメモリシステムに入るときに検査され、この特定のトランザクションをサンプリングのために選択すべきかどうか決定される。トリガーファンクション２５０及び選択ファンクション２６０の２つのファンクションは、どのトランザクションをサンプリングすべきかを制御する。
トリガーファンクション２５０は、選択ファンクション２６０をいつ作動すべきかを決定し、一方、選択ファンクション２６０は、トリガーファンクションが選択ファンクションを作動すると、どのメモリトランザクションをサンプリングすべきか決定する。最も一般的なケースでは、これらファンクションの各々は、メモリシステム又はメモリトランザクション状態に基づいて動作することができる。
【００１５】
選択ファンクション
選択ファンクション２６０は、カウンタ２６５が特定値に到達したときに選択ファンクションをオンに切り換えるイネーブルライン２６６を経てイネーブルされる。この値の維持について以下に述べる。選択ファンクションは、ライン２４２”を経てトランザクションに関する入力情報を受け入れると共に、ライン２６７を経てトランザクションに関する状態情報を受け入れる。選択ファンクションの作用は、トランザクションが関心のあるものであるかどうか判断することであり、もしそうであれば、トランザクションに関する情報をライン２９９を経てサンプリングバッファ３００へ送ることである。
【００１６】
一般的なケースでは、選択ファンクションロジック内のモニタレジスタ（ＭＯＮ）２６３は、メモリシステムトランザクションに対して一致させるに使用される状態を記憶する。特定のキャッシュブロックへのアクセスを監視する特定のケースでは、モニタレジスタ２６３は、監視されるべき１つ以上のブロックの数を記憶することができる。モニタレジスタの内容（ブロック番号のような）は、ライン２６１を経てハードウェア又はソフトウェアによりレジスタにロードすることができる。又、メモリの他の領域のアドレスも、モニタレジスタに記憶することができる。
選択ファンクション２６０を実施することのできる１つの方法は、１組の異なる選択ファンクションを予め定義し、そして選択ファンクション内にモードレジスタ２６４を使用することにより行われる。モードレジスタ２６４には、サンプリング中に使用すべき特定の予め定義された選択ファンクションを制御するためにライン２６２を経てモード値をロードすることができる。種々の選択ファンクションモードは、次のようなトランザクションを選択するファンクションを含むことができる。
【００１７】
−  メモリハイアラーキーにおける特定のレベルを参照する。
−  メモリハイアラーキーの特定レベル内におけるメモリの特定領域を参照する。この特定領域は、１つ以上のキャッシュライン内の１つ以上のキャッシュブロック、１つ以上のキャッシュライン、或いは仮想又は物理アドレスによりアドレスされるメインメモリの１つ以上の隣接領域を含むことができる。
−  例えば、読み取り、書き込み又は無効化のような特定形式を有する。
−  特定のキャッシュメモリにおいてヒットする。
−  特定のキャッシュメモリにおいてミスする。
−  特定のキャッシュプロトコル状態遷移、例えば、ダーティ追放を行う。
−  特定のソースから、例えば、プロセッサパイプラインで実行される命令、特定コンテクスト、プロセス、スレッド又はアドレススペースからの命令実行、入力／出力デバイスからの直接メモリアクセス、或いはマルチプロセッサコンピュータシステムにおけるキャッシュコヒレンシーメッセージを発生する。
【００１８】
更に、これら選択基準のブール組合せ（ＡＮＤ、ＯＲ及びＮＯＴ）を使用して選択ファンクションを構成することができる。或いは又、ソフトウェアによって制御されるプログラム可能なロジックで選択ファンクションを実施して、付加的な融通性を与えることができる。
サンプリングされるべきメモリトランザクションを選択ファンクションが識別した後に、状態情報が捕獲されて、サンプリングバッファ３００−３０２の１つに記録される。この状態情報は、選択されたトランザクションがメモリハイアラーキーの種々のレベルにより処理されるときに収集される。
多数の実施技術が考えられる。例えば、「選択されたトランザクション」フィールド（単一ビットのような）を各メモリトランザクションに関連付けることができる。このフィールドは、選択されたトランザクションの処理中にビットがセットされたときにメモリシステムのロジック回路が適当な点において情報を記録するようにする。別の実施形態では、メモリシステムハイアラーキーにおける適当な点に比較レジスタを使用して、各メモリトランザクションからの識別情報を選択されたトランザクションの識別情報と比較し、それらが一致する場合に、当該状態情報を記録する。
【００１９】
オペレーションのモード
比較レジスタを使用して、メモリハイアラーキーの各レベルにおいて選択されたトランザクションを選ぶための選択ファンクションの実施について説明する。単一キャッシュメモリより成る単一レベルのメモリハイアラーキーに説明を限定すると、選択ファンクションは、監視のためにキャッシュの特定領域、例えば、１組のキャッシュブロックを特定する。ライン２４２に搬送されるトランザクション情報のインデックス部分が、選択ファンクション２６０のモニタレジスタに記憶されたブロックインデックスの１つと同じである場合には、インデックスされたキャッシュブロックの状態に関する情報が捕獲され、そして以下に述べるようにサンプリングバッファの１つに記録される。
【００２０】
ある状態情報は、トランザクションがメモリシステムによって処理される前に捕獲することができ、そしてトランザクションが完了した後に付加的な状態情報を捕獲することができる。特定数のトランザクションが記録された後、例えば、サンプリングバッファ３００−３０２のいずれかがいっぱいになると、読み取り信号をライン２７１に発生することができる。この読み取り信号２７１は、割り込み、レジスタにセットされたソフトウェアポーリング可能な値、又は例外条件の形態である。
読み取り信号に応答して、サンプリングソフトウェア２８０は、サンプリングバッファに記憶された状態情報を、ライン２７２を経て更に処理するために読み取ることができる。多数のバッファ３００−３０２を使用して、多数のサンプルを収集できることに注意されたい。バッファの数を増加すると、読み取り信号当たり２つ以上のサンプルを転送することにより、サンプリングオーバーヘッドのコストを償還することができる。
【００２１】
トリガーファンクション
ロード可能なカウンタ２６５は、ライン２６８のカウントダウン値で初期化される。このカウンタ２６５は、ライン２５４のトリガー事象を使用して減少される。トリガー事象は、ライン２５１のクロックサイクルでもよいし、ライン２５２のトランザクションでもよい。いずれのトリガー事象を使用すべきかは、ライン２５３において選択することができる。
ライン２５４のトリガー事象が減少するかどうかに関わりなく、カウンタ２５６は、トリガーファンクション２５０により制御される。トリガーファンクションは、ライン２４２”’及び２６７を経て到着する情報を介して決定できるメモリトランザクションの状態の任意ファンクションである。ファンクション２５０は、選択ファンクションについて上記した２つの内部のロード可能なレジスタで実施することができる。
【００２２】
有効なトリガーファンクションの幾つかの特定例として、次に一致するものが含まれる。
−  いずれかのメモリトランザクション、
−  特定レベルのメモリハイアラーキー、例えば、特定のキャッシュを参照するメモリトランザクション、
−  特定レベルのメモリハイアラーキー、例えば、特定のキャッシュにおいてヒットするメモリトランザクション、
−  特定レベルのメモリハイアラーキーにおいてミスするメモリトランザクション、
−  あるキャッシュプロトコル状態遷移、例えば、ダーティ追放を経験するメモリトランザクション、
−  メモリの特定領域、例えば、ある範囲のアドレス、特定のキャッシュライン、特定のキャッシュライン内の特定のキャッシュブロック、キャッシュの特定領域等にアクセスするメモリトランザクション、
−  特定のソース、例えば、プロセッサパイプライン、特定の直接メモリアクセス（ＤＭＡ）デバイス、別のプロセッサからのコヒレンシートラフィック等からのメモリトランザクション、及び
−  特定の形式のメモリトランザクション、例えば、読み取りトランザクション、書き込みトランザクション又は無効化トランザクション。
【００２３】
トリガーファンクション２５０を使用すると、メモリ参照の流れに選択ファンクションを適用する前に、サンプリングハードウェアは特定数のトランザクションをスキップすることができる。精巧な例では、これは、特定ブロックへの３つのアクセスをカウントし、次いで、そのブロックに対する次の２つのミスに対してメモリトランザクションサンプルを収集できるようにする。
別の有用な例では、特定のコンテクスト（プロセッサ又はスレッドのような）により特定のキャッシュブロックへのアクセスの後に選択をトリガーし、そして異なるハードウェア、プロセス又はスレッドコンテクストにより同じブロックにへの特定数のその後のトランザクションに対してサンプルを収集することができる。
【００２４】
それ故、サンプリングに対して２つの段階が存在する。
１）一致するトランザクションを決定し、次いで、
２）その一致するトランザクションに関連したサンプリングデータを保持又は破棄する決定をし、空間的及び時間的次元の両方においてサンプリングを行えるようにする。
カウントダウンレジスタ２６５は、ライン２６８を経てリセットすることができる。ランダムサンプリングの場合には、カウントダウンレジスタに書き込まれる初期値は、ある範囲の数字からランダムに選択することができ、そしてそのランダムな数字は、ランダムな数字を発生できるハードウェア回路により又はソフトウェアで計算することができる。レジスタ２６５は、カウントアップもできることに注意されたい。
【００２５】
サンプリングバッファ
図３は、バッファ３００−３０２の１つをいかに割り当てるかの詳細を示す。バッファは、１組のソフトウェア読み取り可能なレジスタ又は他の形式のメモリとして実施することができる。バッファは、状態フィールド３１０、アドレスフィールド３２０、コンテクストフィールド３３０、アクセスソースフィールド３４０、命令フィールド３５０、待ち時間フィールド３６０、及び他の状態に対するフィールド３７０とを備えている。
状態フィールド３１０は、ブロック状態情報及びキャッシュ状態プロトコル情報、例えば、ブロックがダーティかクリーンか（変更されたか否か）、共用であるか（１つ以上の実行スレッドがデータをアクセスできるか）、排他的であるか（非共用であるか）、有効か無効か（データが正当であるか）、そしてキャッシュヒット又はミス状態であるかを含むことができる。又、キャッシュメモリにおけるトランザクションによりアクセスされる特定のラインインデックス番号及びブロック番号のような情報も保持することができる。メモリハイアラーキーに多数のレベルが存在する場合には、フィールド３１０の多数のコピーがあり、各フィールドは、特定レベルのメモリハイアラーキーに対するトランザクションに関する状態情報を記憶する。
【００２６】
アドレスフィールド３２０は、サンプリングされるトランザクションによりアクセスされるデータの仮想及び／又は物理アドレスを記憶することができる。
ハードウェア実施についての１つの問題は、物理及び仮想アドレスをバッファ３００にルート指定するのに必要なワイヤの数であり、例えば、仮想アドレスに対して約４７本程度のワイヤと、物理アドレスに対して４０本程度のワイヤとなる。ソフトウェア管理のＴＬＢをサポートするコンピュータシステムでは、仮想−物理変換を実行したＴＬＢエントリのインデックスを、参照ページへのオフセットと共にアドレスフィールド３２０に記憶するだけでワイヤの本数を減少することができる。次いで、ソフトウェア２８０は、指定のＴＬＢエントリからエントリを読み取り、物理及び仮想アドレスの両方を決定することができる。
【００２７】
この技術は、２つの特性に依存することに注意されたい。
第１の特性は、情報が記録されたときと、ソフトウェアがＴＬＢエントリを読み取るときとの間に当該ＴＬＢエントリが交換されないことを必要とする。ＴＬＢが、一般的なケースとして、最新使用（ＬＲＵ）交換ポリシーのある近似を実行する場合には、これは問題にならない。というのは、当該エントリは、最近のキャッシュアクセスに含ませることにより最近使用されているからである。
第２の特性は、ソフトウェアがＴＬＢエントリを読み取りできることを必要とする。ＴＬＢの直接的な読み取りが可能でない場合には、ソフトウェアがＴＬＢの内容のシャドーコピーを維持することができる。
コンテクストフィールド３３０は、アドレススペース番号（ＡＳＮ）、マルチスレッドプロセッサの場合のハードウェアコンテクスト識別子（ＨＣＩ）、プロセス識別子（ＰＩＤ）、及び／又はソースがプロセッサパイプラインの命令実行であるときのメモリトランザクションのソースのスレッド識別子（ＴＩＤ）を記憶することができる。又、このフィールドは、命令により生じるメモリトランザクションにより参照されるアドレススペース番号（ＡＳＮ）も記憶できる。
【００２８】
ソースフィールド３４０は、アクセスのソース、例えばロード又は記憶命令、ＤＭＡ要求、又はキャッシュコヒレンシープロトコルオペレーション、及びソースを識別する付加的な情報を記憶するのに使用できる。
アクセスのソースが命令実行であった場合には、そのアクセスを生じた命令のプログラムカウンタ（ＰＣ）を命令フィールド３５０に記憶することができる。プログラムカウンタフィールド３５０は、レジスタをセーブするために他の種類のソースに関する情報を記憶するのに使用できる。例えば、ソースがマルチプロセッサコンピュータシステムにおける別のプロセッサからのコヒレンシーオペレーションである場合には、フィールド３５０を使用して、そのコヒレンシーオペレーションを生じさせた要求を発生するプロセッサのプロセッサ番号を保持することができる。ＤＭＡ型のトランザクションの場合には、ＤＭＡを開始したＩ／Ｏデバイスの識別を記憶することができる。
【００２９】
次々のアクセス間の時間インターバル（待ち時間）及び／又は要求が発生されたときからデータがプロセッサに到着するまでのインターバル（又は書き込みの場合は、データがメモリに送られたときからデータがメモリへとコミットされるまでのインターバル）は、待ち時間フィールド３６０に記憶することができる。このインターバルは、プロセッサクロックサイクルに関連して測定することができ、或いはこのインターバルは、メモリシステムにより処理されるトランザクションの数のような他の単位で測定することができる。又、このインターバルは、メモリハイアラーキーの各レベルにおいてトランザクションを処理するのに必要な時間に分割することもできる。
フィールド３７０のような付加的なレジスタは、サンプルされたメモリトランザクションが処理されるときに捕獲される付加的なメモリシステム状態を記憶するためにこの構造体に追加することができる。この状態は、最後のサンプル以来発生したメモリシステムトランザクションに関する情報、例えば、全トランザクション数のカウント、又は特定の１組の基準を満たすトランザクションのカウントを含むことができる。
【００３０】
図２に示すように、サンプルされた状態の一部分であるライン２９０のサンプル事象は、ヒット／ミス、有効／無効、ダーティ等を含むことができる。ライン２９１の選択信号は、どの特定事象をサンプリングすべきか決定できる。
又、他の状態情報は、書き込みバッファ、ビクティムキャッシュ、変換ルックアサイドバッファ（ＴＬＢ）、ミスアドレスファイル（ＭＡＦ）、及びメモリトランザクション待ち行列のようなメモリシステム構造体における有効エントリの内容又は数を含むことができる。
【００３１】
ランダムメモリトランザクションサンプリング技術
好ましい実施形態では、メモリハイアラーキーのいずれかのレベルをアクセスするトランザクションは、少なくとも２つのオペレーションモードを用いてサンプリングされる。第１モードでは、メモリの特定領域（アドレス）へのアクセスがサンプリングされる。第２モードでは、メモリハイアラーキーの任意の部分の性能を推定するために、ランダムに選択されたメモリトランザクションがサンプリングされる。
第１モードにおいては、例えば、キャッシュブロックのような同じ物理的位置に対する少なくとも２つの連続的なトランザクションをサンプリングすることにより、最も関心のある情報を収集することができる。これは、キャッシュ状態の遷移を露呈する。
第２モードにおいては、ある時間にわたり多数のトランザクションをランダムにサンプリングすると、システムのスループットに著しく影響を及ぼすことなく全メモリ性能を統計学的分析で推定することができる。換言すれば、ランダムサンプリングは、実際のオペレーティングシステムにおけるメモリ性能を測定することができる。
それ故、ここに開示する装置及び方法は、特定のキャッシュブロックのクリーン又はダーティ、メモリの特定領域、全てのメモリ位置、キャッシュブロックがダーティである全てのメモリ位置、データがキャッシュにないメモリ位置に対して、トランザクションをサンプリングすることができる。
【００３２】
キャッシュの状態遷移が特に問題であるから、図２に示す構成体は、モードがキャッシュサンプリングであるときに少なくとも２つの連続的なアクセスに対し状態情報のコピーを記憶するように設計される。第１コピーは、第１アクセスの後のキャッシュブロックの状態に関する情報を捕獲する。第２アクセス後の状態は、第２コピーとして記憶される。これら２つの状態を比較することにより、システムのキャッシュコヒレンシープロトコルにどんな遷移が生じなければならないかを決定することができる。
次々のトランザクションに対して状態情報を記憶する概念は、次々のミス、次々のヒット、次々の無効化、等の単純なソフトウェア指定の基準に合致する順次アクセスに対して一般化することができる。これらは、ライン２６２を経てセットされるキャッシュサンプリングモードにおける異なる変形である。
【００３３】
好ましい実施形態では、状態及びアドレス情報は、キャッシュブロックが更新されるときに捕獲され、従って、キャッシュを直接読み取る必要はない。情報を途中でキャッシュ２００に捕獲することにより、ハードウェア設計は、より簡単になる。というのは、各キャッシュブロックからサンプラー２７０へワイヤを走らせる必要性が回避されるからである。又、この設計は、サンプリングを少数のブロックに限定することにより簡単化することもできる。少数のブロックのみが同時にサンプリングするときは、各キャッシュブロックに対する余分なハードウェアが回避される。
モニタレジスタ２６４をロードするソフトウェアを使用することにより、広範囲な監視技術の融通性のある制御を実施することができる。例えば、特定の時間周期内に特定のキャッシュブロックに対してアクセスアクティビティが検出されない場合には、ソフトウェアは、監視すべき別のブロックを単に指定するだけでそのブロックの監視を中止することができる。別のモードでは、監視されるキャッシュブロックをランダムに選択し、キャッシュにおける各ブロックの振る舞いを統計学的にサンプリングすることができる。或いは又、ソフトウェアは、ラウンドロビンの順序でブロックをサンプリングすることができる。
【００３４】
又、特定のプログラム変数又はデータ構造体に関連したキャッシュブロックを選択的に監視することもできる。ここで、ソフトウェアは、どのキャッシュブロックが特定の変数を記憶するか決定し、そしてそのブロックを監視すべきものとして選択する。この技術は、プログラマーが、検査されるべきプログラムを実行する際の競合を識別することによりメモリシステム性能を対話式にデバッグすることができる。動的なデータリロケーションによる重大なキャッシュ競合を回避するために適応ランタイムソフトウェアにより同様の技術を使用することができる。
ここに開示するトランザクションサンプリングは、図２に示すサンプリングハードウェアを複写することによりメモリハイアラーキーの異なるレベルに対して使用できることに注意されたい。この技術は、上記２つのＴＬＢ特性に依存することに注意されたい。
ここに述べるサンプリング技術は、低いハードウェアオーバーヘッドでメモリトランザクションの微細粒度監視を行うことができる。この情報は、多数の方法で使用できる。例えば、収集された情報は、キャッシュ、ＤＲＡＭ等のメモリサブシステムの性能を良く理解する上でシステム設計者の助けとなる。性能データは、最適化を誘導するように使用することができる。
【００３５】
コンテクスト間のメモリ相互作用の推定
メモリシステムトランザクションに関するサンプリングされたデータは、メモリシステムアクティビティに関する種々の統計値を計算するのに使用できる。このプロセス４００が図４に示されている。このプロセスは、例えば、特定のキャッシュメモリ内の特定のセット連想キャッシュライン内の特定のキャッシュブロックのような監視すべきメモリの領域を繰り返し選択し（ステップ４１０）、この領域をアクセスする多数の連続的なメモリトランザクションから状態情報を記録し（ステップ４２０）、そしてこの記録された状態情報をソフトウェアへ通信する（ステップ４３０）ことを含む。
【００３６】
所定数のサンプルが収集されるか又は所定の長さの時間が経過した後に、サンプリングソフトウェアは、記録された情報を統計学的に分析し、キャッシュ利用性及びコンテクスト間のメモリシステム相互作用に関する種々の特性を推定することができる。
この解決策を使用する典型的な方法は、ソフトウェアが、監視すべきランダムキャッシュブロックを周期的に選択し、そしてその特定のブロックをアクセスするトランザクションに対してサンプルのシーケンスを収集することである。所与の時間周期が経過した後、ソフトウェアは、監視すべき新たなランダムキャッシュブロックを選択し、そして全プロセス４００を繰り返すことができる。時間と共に、キャッシュ内の全てのブロックに対してサンプルが生じる。
【００３７】
空間的次元におけるこのランダムなサンプリングは、空間及び時間の両方における共用及び競合に関する統計値を推定できるようにする。又、監視すべき領域のランダムな選択はハードウェアロジックでも実施できることに注意されたい。又、一般に、特定数のサンプル事象２９０が発生するまで各領域を監視することができる。これら事象２９０は、領域に対するメモリトランザクション、全メモリシステムトランザクション、或いはプロセッサクロックサイクル又は他の単位で測定された経過時間である。
各トランザクションごとに、ここに述べるように種々の情報を捕獲することができる。これらの分析に対し、各トランザクションに関する当該情報は、当該キャッシュにおけるヒット又はミス状態、トランザクションが参照したブロックに関するキャッシュプロトコル状態情報、トランザクションの形式（例えば、読み取り、書き込み又は無効化）、キャッシュ内の対応位置（ブロック及び／又はラインインデックスのような）を含む。
【００３８】
付加的な記録情報は、トランザクションのコンテクスト、例えば、別のプロセッサからのキャッシュコヒレンシーオペレーション、入力／出力デバイスからの直接メモリアクセス、或いは特定のプロセス、スレッド、アドレススペース番号又はハードウェアコンテクストからの命令実行を識別する。
サンプルの分析は、先ず始めに、当該サンプルのサブセットを選択することを含む（ステップ４４０）。特に、サブセットは、付加的な機能的基準も満足する特定のキャッシュブロックのようなある領域への連続的アクセスからのサンプルの対である。
キャッシュ内の同じ物理的位置への連続的なアクセスにより、選択されたトランザクション対が生じるので、トランザクションに関して記録された情報を使用して、キャッシュ内のこの物理的空間に対する共用又は競合を推定することができる。又、キャッシュプロトコルにおける種々の状態遷移の頻度に関する統計値を決定することもできる。というのは、２つの連続するトランザクションにおいてプロトコル状態を検査すると、対の第１サンプルの状態から対の第２サンプルの状態へ進むために行わねばならないトランザクションが識別される。
【００３９】
共用を推定するために、ステップ４５０において、対の第２トランザクションがキャッシュヒットであるような対が分析により選択される。これは、第１トランザクションと第２トランザクションとの間に共用が存在することを指示する。両サンプルに関連したコンテクスト識別情報を検討することにより、サンプリングされた時間インターバル中にどのコンテクストがこの物理的空間を有効に共用したかを決定することができる。多数のこのようなサンプル対にわたりこの情報を収集することにより、物理的位置のコンテクスト内及びコンテクスト間の両方の共用に関するメトリックを統計学的に推定することができる。
１つの有効なメトリックは、サンプルの第１対が１つの特定のコンテクストに合致しそしてサンプルの第２対が第２の特定のコンテクストに合致するような対の数をカウントして、第１及び第２のコンテクストの識別子によりインデックスされるカウントのマトリクスを効果的に生じさせることにより決定される。同様に、第２のサンプリングされたトランザクションがキャッシュミスを経験するような対をステップ４６０において分析することにより、物理的位置に対するコンテクスト内及びコンテクスト間の競合に関するメトリックを統計学的に推定することができる。
【００４０】
このハードウェアの別の使い方は、監視すべき特定のキャッシュ領域を選択することである。選択された領域は、特定のプログラム変数又はデータ構造体を記憶するキャッシュ内の空間に対応する。サンプルを収集しそしてサンプルをフィルタして、少なくとも１つのトランザクションが当該変数又はデータ構造体を含むようなサンプル対を得ることにより、キャッシュ競合の割合を推定し、そして競合のソースである他の特定のプログラム変数又はデータ構造体を識別することができる。
この推定は、実行プログラム又はシステム内でオンラインプログラムデバッギング又は性能問題の最適化を行い得るように動的に実行することができる。この技術は、プログラマーが、検査されている実行プログラムにおける競合を識別することにより、メモリシステム性能を対話式にデバッグできるようにする。同様の技術を適応ランタイムソフトウェアにより使用して、動的なデータリロケーションにより重大なキャッシュ競合を回避することができる。
【００４１】
メモリトランザクションの特性の統計値の推定
メモリシステムトランザクションに関するサンプリングされた情報は、メモリシステムアクティビティに関する種々の統計値を計算するのに使用できる。このプロセス５００が図５に示されており、これは、次の段階により上記のハードウェアを用いて達成される。
ステップ１：当該メモリトランザクションを識別するために選択ファンクションを選ぶ（５１０）。
ステップ２：選択されたメモリシステムトランザクションに関する情報を記録する（５２０）。
ステップ３：記録された状態情報をソフトウェアへ通信する（５３０）。
【００４２】
ステップ４：取り上げるべきと考えられるトランザクションのサブセットを選択する（５４０）。
ステップ５：このサブセットを分析して種々の統計値又は特性を推定する（５５０）。
記録された状態情報は、各メモリトランザクションに関する豊富な情報を含み、多数の有効な統計値を計算することができる。
サンプルの情報は、次のものを含むことができる。
−  メモリトランザクションにより参照されたアドレス、
−  コンテクスト識別情報、例えば、プロセス識別子、スレッド識別子、ハードウェアコンテクスト識別子、アドレススペース番号、直接メモリアクセスデバイス識別子、又はキャッシュコヒレンシートラフィックのプロセッサ識別子、
−  トランザクションにより参照されたメモリハイアラーキーの各レベルに対する状態情報、例えば、キャッシュヒット／ミス、ダーティ／クリーン、及び／又は共用／排他的状態。
【００４３】
記録された状態情報の分析
個々のメモリシステムトランザクションをサンプリングすると、メモリシステムの振る舞いの特性の分布に関する種々の統計学的メトリックを計算することができる。例えば、メモリ要求に応じるように待ち時間の分布を推定したり、又はメモリハイアラーキーの特定レベル又は領域におけるキャッシュヒットの割合を推定したりすることができる。フィルタ機構を使用して、記録された当該トランザクションのサブセットを識別し、当該メモリシステムの特定の観点、例えば、メモリハイアラーキーの特定領域又はレベルへの遷移、或いは読み取り、書き込み又は無効化のようなトランザクションの特定のクラスへの遷移に統計学的な焦点を合わせることができる。
【００４４】
１組の当該サンプルが識別された後に、標準的な統計学的技術を使用して、当該サンプルに関する平均値、標準偏差、ヒストグラム及び他の統計値を導出することができる。平均値を使用して、キャッシュヒット又はミス或いは追放のような図２のライン２９０上の特定事象に対する発生率を推定することができる。
又、読み取り、書き込み或いは無効化による要求の断片を推定することもできる。これらの率は、プロセス当たりのキャッシュヒット率、又はスレッドが経験する平均メモリシステム待ち時間のようなメトリックを推定するように、特定のコンテクストに対しても推定することができる。又、特定のコンテクストにより消費されるメモリハイアラーキのレベルの断片を推定することもできる。
標準的なエラー推定技術を使用して、導出される統計値の精度について信頼性のあるインターバルを得ることができる。特に、特定の特性をもつ多数のサンプルを伴う統計値については、その特性をもつサンプルの数の平方根の逆数を使用してエラー境界を近似することができる。又、これらのエラー境界を使用して、選択されたトランザクションがサンプリングされる率を動的に制御し、精度とサンプリングオーバーヘッドとの妥協をとることができる。
記録された状態情報が、メモリトランザクションを処理するのに必要な待ち時間の形態、又は２つの連続的にサンプリングされたメモリトランザクション間の待ち時間の形態の待ち時間情報を含むときには、この情報を使用して、待ち時間に基づく統計値を計算することができる。待ち時間は、一般に、プロセッサクロックサイクルのような時間の単位で測定されるが、処理されるメモリトランザクションの数のような他の単位で測定されてもよい。
【００４５】
命令及びデータのリロケーション
非常に一般的な意味では、プロセッサは、データに対して作用する命令を実行する。多数の近代的なコンピュータシステムでは、命令及びデータは、通常、異なるメモリページを使用して個別の構造体として維持される。というのは、命令に対するアクセスパターンが、データの場合とかなり異なるからである。命令及びデータに対する仮想−物理メモリマッピングは、通常、オペレーティングシステムにより実行される。或いは又、構造体のリロケーションを手動で行うこともできるし、又はコンパイラー、リンカー及びローダーにより行うこともできる。あるシステムは、命令が実行されるときに構造体を動的にリロケーションすることができる。
【００４６】
ここに述べるハードウェアを使用し、ソフトウェアの種々の当該断片にフィードバックを与えることができる。例えば、サンプリングされたメモリトランザクションの状態情報を使用して、例えば、ページ再マッピングポリシーを導出するか、或いはコンパイラー、リンカー又はローダーへフィードバックを与えることにより自己干渉を回避することができる。
例えば、ソフトウェアは、ページレベルで競合アドレスを収集し、オペレーティングシステムにより実施される動的なページ再マッピングアルゴリズムを通知することができる。又、プログラマー及びユーザに対して潜在的な性能問題を識別する当該プロファイリングツールを与えることもできる。
例えば、ここで、データが追放されるときにデータがどれほど頻繁にダーティであるか、そしてＤＭＡ転送又はキャッシュコヒレンシープロトコルトランザクションがどれほど頻繁に生じるかを推定することができ、メモリシステムがいかに効率的に使用されるかの意味を与えることができる。
【００４７】
マイクロプロセッサコンピュータシステムにおけるページリロケーション及び移動
非均一メモリアクセス（ＮＵＭＡ）マルチプロセッサシステムでは、各プロセッサが有するメモリシステムのある部分は、メモリシステムの他の部分よりも迅速に（又は広い帯域巾で）アクセスすることができる。性能を改善するために、プロセッサにより頻繁にアクセスされるデータ（プログラムデータ又は命令のいずれか）は、そのプロセッサにより迅速にアクセスできるメモリシステムの領域へ移動することができる。
この移動は、２つの方法で行うことができる。データは、データの多数のコピーを形成することにより複写することができる。理想的には、データは、メモリシステム全体にわたり入念に「散乱」される。或いは又、実際にデータを低待ち時間又は広帯域巾メモリへ移動することによりデータを移動することもできる。当該ステップ６００が図６に示されており、次の段階を含む。
【００４８】
ステップ１：選択されたメモリシステムトランザクションに関する情報を記録する（６１０）。
ステップ２：頻繁にアクセスされるメモリ領域（例えば、ページ）を識別する（６２０）。
ステップ３：複写及び移動のための候補を識別する（６３０）。
ステップ４：特定のメトリックを改善するために適当なデータを複写及び／又は移動する（６４０）。
このプロセスに対するかぎは、ステップ２及びステップ３で実施される。例えば、参照された仮想及び物理アドレスに関する情報のようなデータのどの断片がどのプロセッサにより頻繁にアクセスされるか、そしてデータのどの断片が実質的なキャッシュミスを被るか又はそれらのアクセスにおいて長い待ち時間を受けるかに関する情報を使用して、複写及び／又は移動の判断を誘導することができる。
【００４９】
アクセスの形式（例えば、読み取り、書き込み及び無効化）に関する情報は、データを複写すべきか、移動すべきか又はその場所に放置すべきかの判断を更に誘導することができる。例えば、多数のプロセッサにより頻繁に書き込まれるデータ（例えば、書き込み共用ページ）は、おそらく、複写又は移動されてはならず、一方、頻繁に読み取られるが滅多に書き込まれないデータ（例えば、読み取り共用ページ）は、複写のための良好な候補である。単一のプロセッサのみによって著しくアクセスされるページは、アクセス側プロセッサに近いメモリへ移動するための良好な候補である。この情報は、ここに示すように、メモリシステムトランザクション情報の統計学的なサンプリングにより収集することができる。
メモリシステムトランザクションに関する情報は、動的に収集し、そしてオンラインで使用して、コンピュータシステムの複写及び移動ポリシーを動的に制御することができる。通常、複写及び移動は、オペレーティングシステムによって処理されるが、他のソフトウェア又はハードウェアレイヤにより処理することもできる。
【００５０】
複写又は移動ポリシーを改善のために試みることができる潜在的な性能メトリックは多数あり、全システムスループットの増加、特定の高優先順位ジョブに対するスループットの増加、プロセッサとメモリとの間のトラフィックの減少、全メモリ待ち時間の減少、又はシステム性能の全体的な増加を含む。
コンテクストスケジューリング
ハイアラーキーメモリにおけるキャッシュは、種々のハードウェアコンテクストから発せられるデータを共用するので、異なるハードウェアコンテクストにおいて実行されるスレッドがキャッシュ内のラインに対して競合する。それ故、リソースの競合を最小にするようにスレッドをスケジューリングすることが所望される。
【００５１】
入念なスケジューリングは、異なるハードウェアコンテクストからのメモリ参照が非常に微細粒度のレベルでインターリーブされ、そしてこれらのコンテクストがキャッシュのようなメモリシステムリソースを共用するときに関連性が高められるようなマルチスレッド型プロセッサに対して特に重要である。しかしながら、これは、キャッシュが、スケジューリング量子化の間にスレッドによりなされるメモリトランザクションの数に対して充分に大きいときには単一スレッド型のプロセッサに対しても重要である。次いで、次の量子が特定のコンテクストに割り当てられるときに何らかの有効なキャッシュ内容を保持することが要望される。これら全てのスケジューリング判断は、オンラインオペレーション中にメモリシステムトランザクションの統計学的サンプリングから収集されるフィードバックに動的に適応することができる。
【００５２】
これは、ここに述べるように、メモリシステムトランザクション情報をサンプリングすることにより実行できる。オペレーティングシステムソフトウェアは、スケジューリングの判断を行うときにスレッド又はプロセッサのメモリ参照パターンの種々の特徴を考慮することから利益を得ることができる。このプロセスが図７に示されている。
ステップ７１０は、特定のコンテクストに対してトランザクションをサンプリングする。キャッシュモニタの一部分として古い及び新しいコンテクスト識別子を捕獲することにより、オペレーティングシステムソフトウェアは、異なるコンテクストがキャッシュにおいて共用及び競合する程度を統計学的に推定することができる（７２０）。これらの推定値は、ステップ７３１−７３３においてコンテクストスケジューラにより使用され、コンテクストを優先的にスケジューリングすることができる。以下に述べるスケジューリング判断７３１−７３３は、メモリリソースに対して競合するコンテクスト間の共用の程度を増加するか、又はメモリリソースに対して競合するコンテクスト間の競合共用を減少することを含む種々のメトリックを考慮することから利益を得ることができる。
【００５３】
同時スケジューリング
例えば、キャッシュを控えめにのみ使用するスレッドと同時に大きなキャッシュフットプリントを有するスレッドを、これらスレッドのメモリシステム需要が互いに相補的であることから、優先的に同時スケジューリングして、共用性を高めることに意味がある。又、できるだけキャッシュの非重畳領域を使用することに意味がある。
他方、オペレーティングシステムソフトウェアは、スレッドがキャッシュから有効なデータを互いに追放するときに多数の更なる競合ミスを招くことから、例えば、大きなキャッシュフットプリントをもつ２つのスレッドの同時スケジューリングをできるだけ回避するように、リソース競合を最小にし、競合を減少するように努めなければならない。
【００５４】
共用をベースとするスケジューリング
共用をベースとする又は比例的共用のスケジューリングポリシーは、メモリハイアラーキーにおいて各キャッシュメモリの特定の共用を各コンテクストに与えることを希望するのが理想的である。本発明のサンプリング技術では、ステップ７２０において、各コンテクストにより占有されるキャッシュの部分を統計学的に推定することができる。これは、スケジューラが、メモリシステムリソースの特定の共用を各プロセスに与えるといったメトリックに対する判断をベースとして、コンテクスト間でメモリシステムリソースをそれらの必要性に比例して有効に区画化できるようにする。
【００５５】
割り当てをベースとするスケジューリング
スケジューリングすることのできる各コンテクストには、それが使用できるキャッシュの量のような割り当てられたリソースを関連させることができる。割り当てられた以上の共用を使用するコンテクストは、低速化又は保留することができる。同様に、割り当てられた共用を充分に使用しないコンテクストは、有利なものとなる。あるコンテクストが保留される間に、他のコンテクストは、キャッシュの共用を増加することができる。保留されたコンテクストは、他のアクティブなコンテクストからのキャッシュ圧力が増加した結果としてそのキャッシュ使用が減少した後に継続することが許される。これは、模擬による以外、キャッシュライン又はブロックレベルにおいて情報を一般的に監視できない既知の解決策と区別し得るものである。
これら全てのスケジューリング判断は、オンラインのオペレーション中にメモリシステムトランザクションの統計学的サンプリングから収集されるフィードバックに動的に適応させることができる。
以上、特定の実施形態について本発明を詳細に説明した。上述した実施形態に対して変更を加えても、全ての又は幾つかの効果が達成されることは当業者に明らかであろう。それ故、本発明の精神及び範囲内に入るこのような全ての変更や修正は特許請求の範囲内に包含されるものとする。
【図面の簡単な説明】
【図１】本発明によるメモリトランザクションサンプリングを伴うコンピュータシステムのブロック図である。
【図２】好ましい実施形態によりメモリ性能を監視するためのサンプリングハードウェアを示すブロック図である。
【図３】サンプル情報を記憶するためのサンプリングバッファのブロック図である。
【図４】コンピュータシステムコンテクスト間のメモリシステム相互作用に関する共用及び競合統計値を推定するための方法のフローチャートである。
【図５】メモリシステムトランザクションの特性の統計値を推定する方法のフローチャートである。
【図６】メモリシステムの振る舞いに関する統計値を用いてデータ複写及び移動の判断を行う方法を示すフローチャートである。
【図７】メモリシステム相互作用に関する統計値を使用してコンテクストスケジューリングの判断を行う方法を示すフローチャートである。
【符号の説明】
１００  コンピュータシステム
１１０  プロセッサ
１１１  プロセッサパイプライン
１１２  命令キャッシュ（Ｉキャッシュ）
１１３  データキャッシュ（Ｄキャッシュ）
１１９  ハードウェア
１２０  メモリ
１２１  ボードレベルキャッシュ（Ｂキャッシュ）
１２２  揮発性メモリ（ＤＲＡＭ）
１２３  永続的メモリ
１３０  入力／出力インターフェイス
１４０  バスライン
２００  キャッシュ
２０１  ブロック
２０２  ライン
２１０  タグ
２２０  データ
２３０  状態情報
２４０  変換ルックアサイドバッファ（ＴＬＢ）
２５０  トリガーファンクション
２６０  選択ファンクション
２６５  カウンタ
３０１−３０３  サンプリングバッファ
２８０  サンプリングソフトウェア
【図１】
0004371452.tif 000002
【図２】
0004371452.tif 000003
【図３】
0004371452.tif 000004
【図４】
0004371452.tif 000005
【図５】
0004371452.tif 000006
【図６】
0004371452.tif 000007
【図７】
0004371452.tif 000008