(57)【要約】【課題】サンプリング間隔をクロック・サイクル単位で指定できる性能モニタ回路及びその方法を提供する。【解決手段】バッファを備え、受信したＰＣＩ  Ｅｘｐｒｅｓｓのトランザクション層のパケットをバッファに格納し、バッファに格納されたパケットを送信するＰＣＩ  ｅｘｐｒｅｓｓコンポーネントと接続する性能モニタ回路及びそのモニタ方法である。バッファから送信されたパケットのデータ量を計測する第１のカウンタ、バッファにパケットが存在するクロック・サイクル数を計測する第２のカウンタ、バッファ内に送信するパケットが存在するが送信できなかったクロック・サイクル数を計測する第３のカウンタ、及び第１〜第３のカウンタによる計測を所定時間間隔で繰り返すように制御する制御回路を有する。【選択図】図３
2009205334.tif 000002
【特許請求の範囲】
【請求項１】
バッファを備え、受信したＰＣＩ  Ｅｘｐｒｅｓｓのトランザクション層のパケットを前記バッファに格納し、前記バッファに格納された前記パケットを送信するＰＣＩ  ｅｘｐｒｅｓｓコンポーネントと接続し、前記バッファから送信された前記パケットのデータ量を計測する第１のカウンタ、前記バッファに前記パケットが存在するクロック・サイクル数を計測する第２のカウンタ、前記バッファ内に送信するパケットが存在するが送信できなかったクロック・サイクル数を計測する第３のカウンタ、及び前記第１〜第３のカウンタによる前記計測を所定時間間隔で繰り返すように制御する制御回路を有することを特徴とする性能モニタ回路。
【請求項２】
前記制御回路が前記所定時間間隔で前記第１〜第３のカウンタによる計測値を格納する記憶回路をさらに有することを特徴とする請求項１記載の性能モニタ回路。
【請求項３】
前記制御回路は、前記所定時間間隔で前記第１〜第３のカウンタによる計測値の前記記憶回路への格納に応答して、前記第１〜第３のカウンタを初期化することを特徴とする請求項２記載の性能モニタ回路。
【請求項４】
前記所定時間及び前記所定時間間隔で繰り返す前記第１〜第３のカウンタによる計測期間を前記制御回路が参照する制御レジスタをさらに有することを特徴とする請求項３記載の性能モニタ回路。
【請求項５】
前記第１のカウンタが前記パケットの中の所望のパケットのデータ量を計測するために参照するマスクレジスタをさらに有することを特徴とする請求項４記載の性能モニタ回路。
【請求項６】
前記バッファはアップストリーム用のバッファとダウンストリーム用のバッファであり、前記アップストリーム用のバッファと前記ダウンストリーム用のバッファとの各々に関して、前記第１〜第３のカウンタを有することを特徴とする請求項１記載の性能モニタ回路。
【請求項７】
バッファを備え、受信したＰＣＩ  Ｅｘｐｒｅｓｓのトランザクション層のパケットを前記バッファに格納し、前記バッファに格納された前記パケットを送信するＰＣＩ  ｅｘｐｒｅｓｓコンポーネントと接続し、前記バッファから送信された前記パケットのデータ量を計測し、前記バッファに前記パケットが存在するクロック・サイクル数を計測し、前記バッファ内に送信するパケットが存在するが送信できなかったクロック・サイクル数を計測し、前記第１〜第３のカウンタによる前記計測を所定時間間隔で繰り返すことを特徴とする性能モニタ方法。
【請求項８】
前記所定時間間隔で計測した前記データ量、前記バッファに前記パケットが存在するクロック・サイクル数及び前記バッファ内に送信するパケットが存在するが送信できなかったクロック・サイクル数を記憶回路に格納することを特徴とする請求項７記載の性能モニタ方法。
【請求項９】
前記記憶回路への格納に応答して、前記データ量、前記バッファに前記パケットが存在するクロック・サイクル数及び前記バッファ内に送信するパケットが存在するが送信できなかったクロック・サイクル数の計測を初期化することを特徴とする請求項８記載の性能モニタ方法。
【請求項１０】
前記所定時間及び前記所定時間間隔で繰り返す計測期間を制御レジスタに設定することを特徴とする請求項９記載の性能モニタ方法。
【請求項１１】
前記第１のカウンタが前記パケットの中の所望のパケットのデータ量を計測するためのマスクデータをマスクレジスタに設定することを特徴とする請求項10記載の性能モニタ方法。
【請求項１２】
前記バッファはアップストリーム用のバッファとダウンストリーム用のバッファであり、前記アップストリーム用のバッファと前記ダウンストリーム用のバッファとの各々に関して、前記データ量、前記バッファに前記パケットが存在するクロック・サイクル数及び前記バッファ内に送信するパケットが存在するが送信できなかったクロック・サイクル数を計測することを特徴とする請求項７記載の性能モニタ方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＰＣＩ  Ｅｘｐｒｅｓｓコンポーネントに係り、特にＰＣＩ（Peripheral component interconnect）  Ｅｘｐｒｅｓｓコンポーネントのデータ転送性能の情報を計測し記録する回路及びその方法に関する。
【背景技術】
【０００２】
最近では、非特許文献１で定義されるルート・コンプレックス、スイッチ、エンド・ポイントといったＰＣＩ  Ｅｘｐｒｅｓｓコンポーネントにおいても性能モニタ機能を持つ必要が出てきた。理由は、現在ＰＣＩの標準化団体であるＰＣＩ−ＳＩＧ（ＰＣＩ Special Interest Group）において、ＩＯＶ（Ｉ／Ｏ  Ｖｉｒｔｕｌｉｚａｔｉｏｎ）という名称で、ＰＣＩ  Ｅｘｐｒｅｓｓデバイスを仮想化するための標準仕様の策定が進んでおり、近い将来ＩＯＶ対応のＰＣＩ  Ｅｘｐｒｅｓｓデバイスが実現する可能性があるためである。ＰＣＩ  Ｅｘｐｒｅｓｓデバイスが仮想化されると、計算機システム設計者は、物理ＰＣＩ  Ｅｘｐｒｅｓｓデバイス数を削減することによるコスト低減を目的に、VMM（Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅ  Ｍｏｎｉｔｏｒ）上で、１つの物理ＰＣＩ  Ｅｘｐｒｅｓｓデバイスを複数の仮想ＰＣＩ  Ｅｘｐｒｅｓｓデバイスに分割し、ゲストＯＳと呼ぶＶＭＭ上で動作するＯＳのそれぞれに対して割り当てる。
【０００３】
現在、Ｉｎｔｅｌ社製ＣＰＵが備えている性能モニタ機能（非特許文献２記載）のように、一般的に計算機を構成するコンポーネントが備える性能モニタ機能は、使用者が設定した時間内に発生したイベント数をカウントするのみである。そのため、例えば１０秒間に発生したイベント数を、1秒間隔で解析したい場合、性能モニタに対し１秒間のイベント数の計測を１０回指示する必要がある。このような解析をするためには、例としてあげたＩｎｔｅｌ社製ＣＰＵにはＩｎｔｅｌ社が販売しているＶｔｕｎｅアナライザーといった、専用の性能解析用ソフトウェアを必要とする。性能モニタ機能の使用者は、性能解析用ソフトウェア上でイベント数の計測を行う時間であるサンプリング期間と、イベント数の計測を行う間隔であるサンプリング間隔を指定する。そうすれば、性能解析ソフトウェアが、指定に従って性能モニタに指示を出し、イベント数の計測を複数回自動で行ってくれる。
【０００４】
【非特許文献１】ＰＣＩ  Ｅｘｐｒｅｓｓ  Ｂａｓｅ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ  Ｒｅｖｉｓｉｏｎ  ２．０，ＰＣＩ−ＳＩＧ，Ｄｅｃｅｍｂｅｒ  ２００６
【非特許文献２】Ｉｎｔｅｌ  Ｉｔａｎｉｕｍ  Ａｒｃｈｉｔｅｃｔｕｒｅ  Ｓｏｆｔｗａｒｅ  Ｄｅｖｅｌｏｐｅｒ'ｓ  Ｍａｎｕａｌ  Ｖｏｌｕｍｅ  ２：Ｓｙｓｔｅｍ  Ａｒｃｈｉｔｅｃｔｕｒｅ  Ｒｅｖｉｓｉｏｎ  ２．２，Ｉｎｔｅｌ，Ｊａｎｕａｒｙ  ２００６
【発明の開示】
【発明が解決しようとする課題】
【０００５】
上述のように、計算機システム設計者が物理ＰＣＩ  Ｅｘｐｒｅｓｓデバイス数を削減した結果、各ゲストＯＳが行うデータ転送のＱｏＳ（Ｑｕａｌｉｔｙ  ｏｆ  Ｓｅｒｖｉｃｅ）が保証されないのであれば、計算機システムとしての必要性能を満たせなくなるのでコスト削減は意味をなさない。従って、計算機システム設計者は、ゲストＯＳのデータ転送性能を解析し、ＱｏＳを保証できるように１つの物理ＰＣＩ  Ｅｘｐｒｅｓｓデバイスを複数のゲストＯＳに割り当てる必要がある。そのためには、データ転送経路上に存在するＰＣＩ  Ｅｘｐｒｅｓｓコンポーネントにおいても、データ転送性能を解析するための性能モニタ機能を搭載する必要が出る。
【０００６】
また、性能解析ソフトウェアは、ソフトウェアの実行時間の制約から、最短のサンプリング間隔がミリ秒と制限される。近年、ＣＰＵはマルチコア化が進み、ますます性能が上がっている。それに伴い、Ｉ／Ｏも転送性能を上げる必要が出てきて、２００７年には、１リンクあたり５Ｇｂｐｓの転送性能を持つＰＣＩ  Ｅｘｐｒｅｓｓ  Ｇｅｎ２対応のＰＣＩ  Ｅｘｐｒｅｓｓコンポーネントが出荷され始めている。この流れは今後も続くと予想され、ＰＣＩ  Ｅｘｐｒｅｓｓコンポーネントが単位時間あたりに処理するデータ量は益々増える。すると、これまでミリ秒単位のサンプリング間隔で十分な解析ができる数しか発生していなかったパケットの衝突や輻輳といったデータ転送に関わるイベントが、単位時間に扱うデータ量が増えることにより、ミリ秒単位のサンプリング間隔では十分な解析ができないほど多く発生する可能性が考えられる。よって、今後より細かいサンプリング間隔の指定が必要となると予想される。現在、ＰＣＩ  Ｅｘｐｒｅｓｓコンポーネントは１クロック・サイクルが数ナノ秒で動いており、今後サンプリング間隔を最低限ミリ秒より細かいマイクロ秒単位か、動作クロック・サイクルと同じナノ秒単位で指定する必要が出ると考えられる。
【０００７】
以上説明した通り、現在ＰＣＩ  Ｅｘｐｒｅｓｓコンポーネントの開発をする上で、３つの課題が存在する。
（１）ＰＣＩ  Ｅｘｐｒｅｓｓデバイスを仮想化して使用する環境では、ゲストＯＳのＱｏＳを保証するために、データ転送性能の解析を可能とする性能モニタ機能をＰＣＩ  Ｅｘｐｒｅｓｓコンポーネントに搭載する必要がある。
（２）サンプリング期間とサンプリング間隔をそれぞれ指定して計算機を構成するコンポーネントの性能解析を行う場合、従来の性能モニタ機能では、専用の性能解析ソフトウェアが必要となる。このことは、性能モニタ機能の使用者に、性能解析ソフトウェアの購入コストもしくは開発コストの負担が生じることを意味する。
（３）性能解析ソフトウェアを使用した性能解析では、現在サンプリング間隔をミリ秒単位より下の単位では指定できない。そのため、例えばＰＣＩ  Ｅｘｐｒｅｓｓコンポーネントのクロック・サイクル単位といった、よりサンプリング間隔の粒度を細かくした性能解析ができない。
【０００８】
本発明の目的は、ＰＣＩ  Ｅｘｐｒｅｓｓコンポーネントのデータ転送性能の解析を可能とし、性能解析の際に性能解析用ソフトウェアを必要とせず、サンプリング間隔をクロック・サイクル単位で指定できる性能モニタ回路及びその方法を提供することである。
【課題を解決するための手段】
【０００９】
本発明の性能モニタ回路及びその方法は、次のような構成である。バッファを備え、受信したＰＣＩ  Ｅｘｐｒｅｓｓのトランザクション層のパケットを前記バッファに格納し、前記バッファに格納された前記パケットを送信するＰＣＩ  ｅｘｐｒｅｓｓコンポーネントと接続する性能モニタ回路及びその性能モニタ回路による性能モニタ方法である。バッファから送信されたパケットのデータ量を計測する第１のカウンタ、バッファにパケットが存在するクロック・サイクル数を計測する第２のカウンタ、バッファ内に送信するパケットが存在するが送信できなかったクロック・サイクル数を計測する第３のカウンタ、及び前記第１〜第３のカウンタによる前記計測を所定時間間隔で繰り返すように制御する制御回路を有する。
【００１０】
本発明の他の態様は、記憶回路を設け、その記憶回路に制御回路が第１〜第３のカウンタによる計測値を格納する。
【００１１】
本発明のさらに他の態様は、第１〜第３のカウンタによる計測値の記憶回路への格納に応答して、第１〜第３のカウンタを初期化する。
【００１２】
本発明のさらに他の態様は、所定時間及び所定時間間隔で繰り返す第１〜第３のカウンタによる計測期間を制御レジスタに設定する。
【００１３】
本発明のさらに他の態様は、所望のパケットのデータ量を計測するためのマスクデータをマスクレジスタに設定する。
【００１４】
本発明のさらに他の態様は、アップストリーム用のバッファとダウンストリーム用のバッファとの各々に関して、所定時間内の、バッファから送信されたパケットのデータ量、バッファにパケットが存在するクロック・サイクル数、及びバッファ内に送信するパケットが存在するが送信できなかったクロック・サイクル数を計測する。
【発明の効果】
【００１５】
本発明の性能モニタ回路及びその方法によれば、サンプリング間隔をクロック・サイクル単位で指定できる。
【発明を実施するための最良の形態】
【００１６】
以下、実施例を用いて本発明を実施するための最良の形態を詳細に説明する。
【実施例１】
【００１７】
図1は、実施例１の計算機システムの一例である。本計算機システムは、ＣＰＵ１００とメモリ１０１、そしてＰＣＩ  Ｅｘｐｒｅｓｓコンポーネントであるルート・コンプレックス１１０とスイッチ１１１、エンド・ポイント１１２とエンド・ポイント１１３を備える。ルート・コンプレックス１１０とスイッチ１１１はＰＣＩ  Ｅｘｐｒｅｓｓリンク１４０で接続する。そして、スイッチ１１１とエンド・ポイント１１２及びエンド・ポイント１１３は、それぞれＰＣＩ  Ｅｘｐｒｅｓｓリンク１４１と１４２で接続する。
【００１８】
サービス・プロセッサ１２０の機能は、計算機システムの各構成要素の電源管理（投入/切断）、構成要素情報の管理、障害発生時の計算機システム内トランザクション情報・処理状態履歴の採取・障害通報、システム内環境（温度・電源）監視である。本実施例では、管理用コンソール１３０とサービス・プロセッサ１２０は、インターフェース１６０を介して通信が可能である。サービス・プロセッサ１２０と管理用コンソール１３０間の通信は、例えばＬＡＮインターフェースやシリアル・インターフェースで実現すればよい。計算機システムの使用者は、管理用コンソール１３０を使用して、サービス・プロセッサ１２０を介し計算機システムの管理／操作を行う。
【００１９】
サービス・プロセッサ１２０は、管理用コンソール１８０から各ＰＣＩ  Ｅｘｐｒｅｓｓコンポーネントにある性能モニタ回路に対する設定値のリード・ライト及び計測結果の記録のリードができるインターフェース１５０、１５１、１５２及び１５３を備える。各ＰＣＩ  Ｅｘｐｒｅｓｓコンポーネントとサービス・プロセッサ１２０間のインターフェースは、例えばハードウェアのモニタ用標準インターフェース仕様であるＩ２Ｃインタ−フェースを用いればよい。
【００２０】
本実施例の性能モニタ回路は、ＰＣＩ  Ｅｘｐｒｅｓｓコンポーネントである、ルート・コンプレックス１１０、スイッチ１１１、及びエンド・ポイント１１２に備える。通常、ＰＣＩ  Ｅｘｐｒｅｓｓコンポーネント（ルート・コンプレックス、スイッチ、エンド・ポイント等）は、ＰＣＩ  Ｅｘｐｒｅｓｓコンポーネントが受信したＴＬＰ（Ｔｒａｎｓａｃｔｉｏｎ  Ｌａｙｅｒ  Ｐａｃｋｅｔ）を一旦格納し、格納後パケットを他のＰＣＩ  Ｅｘｐｒｅｓｓコンポーネントか、計算機を構成する他のコンポーネント（ＣＰＵ、メモリ等）に送信するためのトランザクション層に位置するバッファをデータ転送経路上に備える。このバッファに性能モニタ回路を備えることで、ＰＣＩ  Ｅｘｐｒｅｓｓコンポーネントのデータ転送性能を解析するために必要な情報を得る。
【００２１】
以下、スイッチ１１１に備える性能モニタ回路を使用して、性能モニタ回路の機能を説明する。性能モニタ回路の機能は、ＰＣＩ  Ｅｘｐｒｅｓｓコンポーネントの種類により異なるものではない。
【００２２】
図２に、本実施例におけるスイッチ１１１を示す。スイッチ１１１は、アップストリーム・ポート２００とダウンストリーム・ポート２０１、ダウンストリーム・ポート２０２を備える。アップストリーム・ポート２００はＰＣＩ  Ｅｘｐｒｅｓｓのデータリンク層及び物理ポート層の機能を備え、ＰＣＩ  Ｅｘｐｒｅｓｓリンク１４０を介してルート・コンプレックス１１０からＴＬＰ（Transaction Layer Packet）を受信、もしくはルート・コンプレックス１１０に対してＴＬＰを送信する。ダウンストリーム・ポート２０１とダウンストリーム・ポート２０２も同様にＰＣＩ  Ｅｘｐｒｅｓｓのデータリンク層及び物理ポート層の機能を備え、それぞれＰＣＩ  Ｅｘｐｒｅｓｓリンク１４１と１４２を介してエンド・ポイント１１２とエンド・ポイント１１３からＴＬＰを受信、もしくはエンド・ポイント１１２とエンド・ポイント１１３に対してＴＬＰを送信する。
【００２３】
各ポートは、常にＴＬＰの宛先であるＰＣＩ  Ｅｘｐｒｅｓｓコンポーネントのルート・コンプレックス１１０、エンド・ポイント１１２、及びエンド・ポイント１１３にあるＴＬＰを受信するバッファの状態を各々監視している。宛先のＰＣＩ  Ｅｘｃｐｒｅｓｓコンポーネントのバッファに空きが有り、ポートが宛先のＰＣＩ  Ｅｘｐｒｅｓｓコンポーネントに対しＴＬＰを送信することが可能であれば、その情報をバッファ（アップストリーム用のバッファ）２１０とバッファ（ダウンストリーム用のバッファ）２１１に教える。その情報を見たバッファ２１０とバッファ２１１は、（バッファ２１１はクロスバ２２０を介して）送信可能なポートへ、送信可能なＰＣＩ  Ｅｘｐｒｅｓｓコンポーネント宛てのＴＬＰを送信する。ＴＬＰを受け取ったポートは、ＴＬＰを宛先のＰＣＩ  Ｅｘｐｒｅｓｓコンポーネントに対して送信する。また、各ポートは、バッファ２１０とバッファ２１１の状態を監視し、ＴＬＰの送信元でもあるＰＣＩ  ＥｘｐｒｅｓｓコンポーネントにＴＬＰをスイッチ１１１が受信可能であるとの情報を送る。その情報を見たＴＬＰ送信元であるＰＣＩ  ＥｘｐｒｅｓｓコンポーネントはＴＬＰをスイッチ１１１に対して送信し、各ポートは直接、もしくはクロスバ・スイッチ２２０を介してバッファ２１０またはバッファ２１１に対しＴＬＰを送信する。
【００２４】
バッファ２１０及びバッファ２１１はＰＣＩ  Ｅｘｐｒｅｓｓのトランザクション層に位置するバッファで、一旦バッファに対して送られてきたＴＬＰを格納する。そして、ＴＬＰを見て宛先を確認し、宛先のＰＣＩ  Ｅｘｐｒｅｓｓコンポーネントが受信可能であれば、直接かクロスバ・スイッチ２２０を介して各ポートにＴＬＰを送る。ただし、バッファ２１１が送信するＴＬＰの宛先が性能モニタ回路２３０であるときは、ＴＬＰ送信の動作が異なる。性能モニタ回路２３０宛てのＴＬＰとは、使用者がＣＰＵ１００上で動作するＯＳを介して性能モニタ回路２３０の設定値のリード／ライトや計測結果の記録のリードを行うときに、ＣＰＵ１００が発行する。送信するＴＬＰが性能モニタ回路２３０宛ての場合、性能バッファ２１１はクロスバ・スイッチ２２０とパス２５２を介して性能モニタ回路２３０に対しＴＬＰを送信する。本実施例では、性能モニタ回路２３０は毎クロック・サイクルでＴＬＰを処理できるものとし、性能モニタ回路２３０がＴＬＰを受信可能かどうかは見ていない。もし性能モニタ回路が毎サイクルＴＬＰを受信できないのであれば、バッファ２１１は、ＰＣＩ  ＥｘｐｒｅｓｓコンポーネントにＴＬＰを送信するのと同じく、性能モニタ回路２３０がＴＬＰを受信可能であるか、ＴＬＰを送信する前に確認する必要がある。
【００２５】
クロスバ・スイッチ２２０は、ダウンストリーム・ポート２０１またはダウンストリーム・ポート２０２、もしくは性能モニタ回路２３０からパス２５３を介して送られてきたＴＬＰをバッファ２１０に対して送る。性能モニタ回路２３０が送信するＴＬＰとは、性能モニタ回路２３０の設定値のリード・データや計測結果の記録のリード・データである。また、クロスバ・スイッチ２２０は、バッファ２１１から送られてきたＴＬＰを、ＴＬＰの宛先を見て、宛先のＰＣＩ  Ｅｘｐｒｅｓｓコンポーネントと接続しているダウンストリーム・ポート２０１か２０２、もしくは性能モニタ回路２３０に対して送信する。
【００２６】
性能モニタ回路２３０は、パス２５０を介してバッファ２１１と接続している。パス２５０を介してバッファ２１１は、性能モニタ回路２３０に対して毎クロック・サイクル、バッファ２１１に送信するＴＬＰが存在することを示す情報と、バッファ２１１内に送信するＴＬＰが存在するが送信できないことを示す情報を送る。情報は、例えば２つのレベル信号で実現され、１つのレベル信号の１'は送信するＴＬＰがバッファ２１１内に存在することを示し、もう１つのレベル信号の１'はバッファ２１１内にＴＬＰが存在するが送信できないことを示す。両レベル信号の０'は、どちらの状態でもないことを示す。また、性能モニタ回路２３０は、パス２５１を介し、バッファ２１１が送信したＴＬＰのコピーを受信する。そして、性能モニタ回路２３０は、サービスプロセッサ１２０とのインターフェース１５１と直接接続する。
【００２７】
図３を用いて、本実施例の性能モニタ回路の内部構成及び処理内容について詳細に説明する。
【００２８】
毎クロック・サイクル、カウンタ回路３００は、パス２５０を介して送られてくるバッファ２１１に送信するＴＬＰが存在することを示す情報を見て、バッファ２１１に送信するＴＬＰが存在するのであれば、カウンタ・レジスタ３１０の値を＋１する。同様に、毎クロック・サイクル、カウンタ回路３００は、パス２５０を介して送られてくるバッファ２１１内に送信するＴＬＰが存在するが送信できないことを示す情報を見て、バッファ２１１内に送信するＴＬＰが存在するが送信できないのであれば、カウンタ・レジスタ３１１の値を＋１する。また、毎クロック・サイクル、カウンタ回路３００は、パス２５１を介してバッファ２１１が送信したＴＬＰのコピーを受信する。カウンタ回路３００はＴＬＰを受信した時、最初にマスク・レジスタ３２０を参照する。
【００２９】
マスク・レジスタ３２０は、スイッチ１１１の性能モニタ機能の使用者が性能解析のために任意に設定するレジスタであり、バッファ２１１が転送するＴＬＰ数の計測を所定のＴＬＰに限定するときに使用する。
【００３０】
マスク・レジスタ３２０の一例を図４に示す。マスク・レジスタ３２０は２７２ビットで構成される。４００〜４０２の３つのフィールドは各々1ビットで構成される。フィールド４００が“ｅｎａｂｌｅ”であることは、ＴＬＰヘッダを受信した時に、カウンタ回路３００がカウンタ・レジスタ３１２にＴＬＰヘッダのパケット・サイズ分をＤＷ（Ｄｏｕｂｌｅ  Ｗｏｒｄ、３２ｂｉｔ）単位でプラスすることを示す。同様に、フィールド４０１が“ｅｎａｂｌｅ”であることは、ＴＬＰデータを受信した時に、カウンタ回路３００がカウンタ・レジスタ３１２にＴＬＰデータのパケット・サイズ分をＤＷ単位でプラスすることを示し、フィールド４０２が“ｅｎａｂｌｅ”であることは、ＴＬＰダイジェストを受信した時に、カウンタ回路３００がカウンタ・レジスタ３１２にＴＬＰダイジェストのデータ・サイズ分をＤＷ単位でプラスすることを示す。
【００３１】
フィールド４０３は１３ビットで構成され、将来制御回路を機能拡張する際に使用するために予約しているフィールドであり、特に今回使用するものではない。
【００３２】
フィールド４０４は、ＰＣＩ  Ｅｘｐｒｅｓｓ仕様で定められるＴＬＰヘッダの最大サイズである１２８ビットで構成され、性能モニタ回路の使用者は、データ量を計測する対象のＴＬＰのＴＬＰヘッダを本フィールドに設定する。フィールド４０５は、フィールド４０４と同じサイズである１２８ビットで構成され、フィールド４０４の各ｂｉｔの有効・無効を指定するのに使用する。例えば、フィールド４０４で設定したＴＬＰヘッダの一部のｂｉｔのみでＴＬＰをマスクしたい時は、フィールド４０５で対応するｂｉｔのみを“１”に設定して“ｅｎａｂｌｅ”とすればよい。カウンタ回路３００はフィールド４０４及び４０５を見て、マスク条件に合うＴＬＰがバッファ２１１から送信されたら、カウンタ・レジスタ３１２にＴＬＰのパケット・サイズ分をＤＷ単位でプラスする。
【００３３】
以上説明したマスク・レジスタ３２０のマスク機能は次のような二つの場合に使用することが効果的である。
【００３４】
第一に、ＴＬＰは、ＴＬＰヘッダ、ＴＬＰデータ、ＴＬＰダイジェストの３つで構成され、通常、データ転送量はＴＬＰデータの量のみを指す。他の２つはデータ転送のオーバヘッドである。純粋にデータ転送量を測りたい場合に、マスク・レジスタ３２０のマスク機能を使用する。
【００３５】
第二に、ＴＬＰヘッダには、発行元、発行先、トランザクション種別等を示す情報を格納しているので、ＴＬＰヘッダをマスクすることで、発行元単位、発行先、トランザクション種別に分類してデータ転送量を計測することができる。
【００３６】
以上、マスク・レジスタの構成について説明したが、マスク機能及び構成については必要最小限のもののみ説明している。マスク機能及び構成は特に制限するものではなく、例えば性能モニタ回路を搭載するＰＣＩ  Ｅｘｐｒｅｓｓコンポーネントの仕様や、性能モニタ機能の使用者の要求に従い、マスク機能及び構成を拡張しても良い。
【００３７】
制御回路３３０は、バッファ２１１が送信したＴＬＰ数と、バッファ２１１に送信するＴＬＰが存在するクロック・サイクル数と、バッファ２１１内に送信するＴＬＰが存在するが送信できないクロック・サイクル数を、制御レジスタ３２１の設定値に従い計測する。
【００３８】
バッファ２１１が送信したＴＬＰ数の計測は、バッファが送信したデータ転送量の計測を意味する。毎クロック・サイクル、バッファが送信したＴＬＰのパケット・サイズを、ＴＬＰの最小のパケット・サイズであるＤＷ（Ｄｏｕｂｌｅ  Ｗｏｒｄ、３２ｂｉｔ）を単位としてプラスする。例えば、１クロック・サイクルで３ＤＷのＴＬＰを送信した時は、これまで計測したＴＬＰのパケット・サイズの合計に＋３する。本計測により、サンプリング期間内の、バッファ２１１が存在するデータ転送経路のデータ転送量が分かる。
【００３９】
バッファ２１１に送信可能なＴＬＰが存在するクロック・サイクル数の計測は、サンプリング期間の、バッファ２１１が存在するデータ転送経路の使用率が分かる。
【００４０】
バッファ２１１内に送信するパケットが存在するが送信できなかったクロック・サイクル数の計測は、バッファ２１１より先のデータ転送経路でＴＬＰの送信が滞っている時間の計測であり、データ転送経路の混雑度の計測を意味する。サンプリング期間のデータ転送量が期待値より低い場合は、原因として、（ａ）ＴＬＰ発行元が発行するＴＬＰのデータ量が少ない、（ｂ）バッファより先のデータ転送経路でＴＬＰの送信が滞っている、の２つが考えられる。本計測により、バッファ２１１より先のデータ転送経路でＴＬＰの送信が滞っている時間を計測でき、データ転送経路の混雑度が分かるので、原因（ａ）（ｂ）の区別が可能となる。
【００４１】
また、制御回路３３０は、パス２５２を介して性能モニタ回路２３０宛てのＴＬＰを受信した時、ＴＬＰを見て、マスク・レジスタ３２０と制御レジスタ３２１のリード／ライトや、カウンタ・レジスタ３１０〜３１２、状態レジスタ３２２とＳＲＡＭ(記憶回路)３２３のリードを行う。リード処理後、制御回路３３０は、パス２５３を介してリード・データをＣＰＵ１００宛てに返す。性能モニタ機能の使用者が、管理用コンソール１３０を介して性能モニタ回路２３０の設定値のリード／ライトや計測結果の記録のリードを行った時は、インターフェース１５１から受信したリクエストに従い、マスク・レジスタ３２０と制御レジスタ３２１のリード／ライトや、カウンタ・レジスタ３１０〜３１２、状態レジスタ３２２とＳＲＡＭ３２３のリードを行う。リード処理後、制御回路３３０は、インターフェース１５１を介してリード・データを管理用コンソール１３０宛てに返す。
【００４２】
制御レジスタ３２１の一例を図５に示す。制御レジスタ３３０は１１２ビットで構成され、５００〜５０４の５つのフィールドに分かれる。フィールド５００は１ビットで構成され、“１”の値で計測開始を示し、“０”の値で計測停止を示す。性能モニタ機能の使用者は、フィールド５００を操作する事で、計測の開始と停止を指示できる。制御回路３３０は、フィールド５００が“１”に設定されている間は計測を続け、“０”に設定された時は計測を止める。
【００４３】
フィールド５０１は１ビットで構成され、“１”の値でカウンタ・レジスタ３１０〜３１２とＳＲＡＭ３２３、そして状態レジスタ３２２の初期化を示し、“０”の値では何もしない。カウンタ・レジスタ３１０〜３１２とＳＲＡＭ３２３、そして状態レジスタ３２２の初期化が指示された時、制御回路３３０は、カウンタ・レジスタ３１０〜３１２に格納している値を“０”にクリアする。そして、ＳＲＡＭ３２３の全エントリに格納している値を全て“０”の値にクリアし、状態レジスタ３２２に格納している値も全て“０”にクリアする。各初期化対象において初期化が完了するまで、制御回路３３０はフィールド５００に“１”が設定されても計測を開始しない。初期化処理が完了した時、フィールド５０１は“０”の値に戻る。通常、性能モニタ機能の使用者は、計測開始を指示する前に、フィールド５０１に“１”を設定し、カウンタ・レジスタ３１０〜３１２とＳＲＡＭ３２３、そして状態レジスタ３２２に格納している値を“０”にクリアする。
【００４４】
フィールド５０２は１４ビットで構成され、将来制御回路を機能拡張する際に使用するために予約しているフィールドであり、特に今回使用するものではない。
【００４５】
フィールド５０３は４８ビットで構成され、サンプリング間隔をクロック・サイクル単位で設定するフィールドである。性能モニタ機能の使用者は、当該フィールドに計測するサンプリング間隔を設定する。制御回路３３０は、設定したサンプリング間隔分のクロック・サイクルが経過した後、ＳＲＡＭ３２３に各カウンタ・レジスタ３１０〜３１２の値を格納する。制御回路３３０は、初期化後、ＳＲＡＭ３２３のエントリ０番から各カウンタ・レジスタ３１０〜３１２の値の格納を開始し、その後エントリ番号を＋１しながらＳＲＡＭ３２３にカウンタ・レジスタ３１０〜３１２の値の格納を繰り返す。
【００４６】
フィールド５０４は４８ビットで構成され、サンプリング期間（計測期間）をクロック・サイクル単位で格納するフィールドである。性能モニタ機能の使用者は、当該フィールドに計測するサンプリング期間を設定する。制御回路３３０は、設定したサンプリング期間分のクロック・サイクルが経過した後、ＳＲＡＭ３２３にカウンタ・レジスタ３１０〜３１２の値を最後に書き込んだエントリのフラグ・フィールドに“１”の値をライトする。
【００４７】
状態レジスタ３２２は、スイッチ１１１の性能モニタ回路のステータスを示すレジスタである。状態レジスタ３２２の一例を図６に示す。状態レジスタ３２２は１１２ビットで構成され、６００〜６０６の７つのフィールドに分かれる。
【００４８】
フィールド６００は２ビットで構成され、制御回路３３０のステータスを示す。“００”で制御回路３３０が計測していないことを示し、“０１”で制御回路３３０が計測中であることを示す。そして、“１０”は計測開始後計測が完了する前に制御レジスタ３２１のフィールド５００が“０”に設定されて計測が停止したことを示し、“１１”は計測が終了したことを示す。制御回路３３０は、フィールド５００に“１”が設定され計測を開始したら、フィールド６００を“０１”に設定する。次に、制御回路３３０は、計測開始後フィールド５００に“０”が設定されたら、フィールド６００に“１０”を設定する。そして、制御回路３３０は、フィールド６０６の値と制御レジスタ３２１のフィールド５０４の値が同じになった時、“１１”を設定する。
【００４９】
フィールド６０１〜６０３はそれぞれ１ビットで構成され、カウンタ・レジスタでオーバーフローが発生した時に、制御回路３３０が“１”に設定し、オーバーフローを報告する。フィールド６０１はカウンタ・レジスタ３１０、フィールド６０２はカウンタ・レジスタ３１１、フィールド６０３はカウンタ・レジスタ３１２にそれぞれ対応する。
【００５０】
フィールド６０４は１１ビットで構成され、将来制御回路を機能拡張する際に使用するために予約しているフィールドであり、特に今回使用するものではない。
【００５１】
フィールド６０５のインターバル・タイマは４８ビットで構成され、クロック・サイクル単位で計測時間を示す。制御回路３３０は、計測中であるならば、インターバル・タイマの値を１クロック・サイクル毎に＋１する。ただし、制御レジスタ３２１のサンプリング間隔の値とインターバル・タイマの値が等しくなった時、制御回路３３０は、インターバル・タイマを“０”にクリアし、計測が続くのであれば再び計測時間を記録する。
【００５２】
フィールド６０６のイベント・タイマは４８ビットで構成され、クロック・サイクル単位で計測時間を示す。制御回路３３０は、計測中であるならば、イベント・タイマの値を１クロック・サイクル毎に＋１する。ただし、インターバル・タイマとは異なり、初期化以外でイベント・タイマはクリアされない。制御レジスタ３２２のサンプリング期間の値とイベント・タイマの値が等しくなった時、性能モニタ回路２３０の計測は終了したことを示す。
【００５３】
ＳＲＡＭ３２３の１例を図７に示す。本実施例では、ＳＲＡＭのエントリ数を１０２４とする。ＳＲＡＭ３２３は、７０１〜７０４の４つのフィールドで構成される。フィールド７００はエントリ番号を示しているが、実際のＳＲＡＭには当該フィールドはなく、説明を容易にするために仮に定めたフィールドである。フィールド７０１は各エントリに１ビットで構成され、“１”は計測が終了した時に最後に値が格納されたエントリであることを示す。フィールド７０２〜７０４は、各カウンタ・レジスタの値を格納するフィールドであり、各エントリにカウンタ・レジスタと同じビット数で構成される。制御回路３３０は、フィールド７０２にはカウンタ・レジスタ３１０の値を、フィールド７０３にはカウンタ・レジスタ３１１の値を、フィールド７０４にはカウンタ・レジスタ３１２の値をそれぞれ格納する。
【００５４】
以上、制御レジスタ３２１、状態レジスタ３２２、ＳＲＡＭ３２３の構成を説明したが、用いた例は必要最低限の構成であり、構成及び各フィールドのビット数は、特に規定するものではない。性能モニタ回路を搭載するＰＣＩ  Ｅｘｐｒｅｓｓコンポーネントの仕様に応じて、必要なフィールド及びビット数の拡張を行っても構わない。
【００５５】
図８に、制御回路３３０が１クロック・サイクル毎に実行する処理フローチャートを示す。図８に示すフローチャートでは、性能モニタ機能の使用者が、ＣＰＵ１００もしくは管理用コンソール１３０を介して、性能モニタ回路２３０の設定値のリード／ライトや計測結果の記録のリードを行う際の処理については示していないが、容易に推敲されるだろう。図８に示す処理と並行して、制御回路３３０は、使用者の操作に伴う処理を実行できる。また、制御レジスタ３２２のフィールド５０１を“１”に設定することで、性能モニタ機能の使用者が性能モニタ回路２３０の初期化を指示した場合の処理も図８には示していないが、容易に推敲されるだろう。性能モニタ回路２３０の初期化指示を受けた制御回路３３０は、初期化処理が完了するまで、図８に示す処理は行わない。
【００５６】
以下、図８に示す処理フローチャートの各ステップについて説明する。ステップ８００で、制御回路３３０は、制御レジスタ３２１のフィールド５００のスタート／ストップが“１”の“計測開始”の設定であるか判定する。制御回路３３０は、“計測開始”の設定であった場合はステップ８０１の処理を行い、“０”で“計測停止”の設定であった場合はステップ８０２の処理を行う。ステップ８０１で、制御回路３３０は、状態レジスタ３２２のフィールド６００の制御回路ステータスを“０１”の“計測中”に設定する。
【００５７】
ステップ８０２で、制御回路３３０は、状態レジスタ３２２フィールド６００の制御回路ステータスが“０１”の“計測中”であるか判定する。“計測中”の設定であった場合、制御回路３３０は、ステップ８０３の処理を行い、その他の設定であった場合は当該クロック・サイクルの処理を終了する。ステップ８０３で、制御回路３３０は、状態レジスタ３２２のフィールド６００の制御回路ステータスを“１０”の“ポーズ”に設定し、当該クロック・サイクルの処理を終了する。
【００５８】
ステップ８０４で、制御回路３３０は、状態レジスタ３２２のフィールド６０５のインターバル・タイマと制御レジスタ３２１のフィールド５０３のサンプリング間隔の値が等しいかを判定する。制御回路３３０は、等しかった場合はステップ８０５の処理を行い、等しくなかった場合はステップ８０６の処理を行う。
【００５９】
ステップ８０５で、制御回路３３０は、カウンタ・レジスタ３１０〜３１２の値をＳＲＡＭ３２３に格納する。また、制御回路３３０は、ＳＲＡＭ３２３に値を格納するために各カウンタ・レジスタから値をリードしたと同時に、各カウンタ・レジスタの値を“０”にクリアする。そして、制御回路３３０は、状態レジスタ３２２のフィールド６０５のインターバル・タイマの値を“０”にクリアする。ステップ８０６で、制御回路３３０は、状態レジスタ３２２のフィールド６０５のインターバル・タイマの値を＋１する。
【００６０】
ステップ８０７で、制御回路３３０は、状態レジスタ３２２のフィールド６０６のイベント・タイマと制御レジスタ３２１のフィールド５０４のサンプリング期間の値が等しいかを判定する。制御回路３３０は、等しい場合はステップ８０８の処理を行い、等しくない場合はステップ８０９の処理を行う。
【００６１】
ステップ８０８で、制御回路３３０は、ＳＲＡＭ３２３の最後に格納したエントリのフィールド７０１のフラグに“１”をセットする。また、状態レジスタ３２２フィールド６００の制御回路ステータスを“１１”の“計測終了”に設定し、当該クロック・サイクルの処理を終了する。ステップ８０９で、制御回路３３０は、状態レジスタ３２２フィールド６０６のイベント・タイマの値を＋１して、当該クロック・サイクルの処理を終了する。
【００６２】
本実施例によれば、サンプリング間隔をクロック・サイクル単位で指定できる性能モニタ回路を実現することができる。
【実施例２】
【００６３】
図９に、実施例２のスイッチ１１１を示す。本実施例のスイッチ１１１は、実施例１にバッファ２１０の性能モニタ機能を追加したものである。バッファ２１０が送信したＴＬＰの数と、バッファ２１０に送信するＴＬＰが存在するクロック・サイクル数と、バッファ２１０内に送信するＴＬＰが存在するが送信できなかったクロック・サイクル数を計測するために、バッファ２１１と同様に、パス２５０と同じ機能を持つパス９５０と、パス２５１と同じ機能を持つパス９５１を備える。性能モニタ回路９３０は、バッファ２１０の上記３つの計測を行うために、性能モニタ回路２３０の機能を拡張したものである。
【００６４】
図１０に性能モニタ回路９３０の一例を示す。以下、性能モニタ回路９３０について、性能モニタ回路２３０に追加した構成の説明を行う。追加構成以外の性能モニタ回路９３０の構成は、性能モニタ回路２３０の構成と同じである。
【００６５】
毎クロック・サイクル、カウンタ回路１０００は、パス９５０を介して送られてくるバッファ２１０に送信するＴＬＰが存在することを示す情報を見て、バッファ２１０に送信するＴＬＰが存在するのであれば、カウンタ・レジスタ１０１０の値を＋１する。同様に、毎クロック・サイクル、カウンタ回路１０００は、パス９５０を介して送られてくるバッファ２１０内に送信するＴＬＰが存在するが送信できないことを示す情報を見て、バッファ２１０内に送信するＴＬＰが存在するが送信できないのであれば、カウンタ・レジスタ１０１１の値を＋１する。また、毎クロック・サイクル、カウンタ回路１０００は、パス９５１を介してバッファ２１０が送信したＴＬＰのコピーを受信する。カウンタ回路１０００はＴＬＰを受信した時、最初にマスク・レジスタ３２０を参照し、マスク・レジスタ３２０の設定内容が示す計測対象のＴＬＰであれば、パケット・サイズ分をＤＷ単位でカウンタ・レジスタ１０１２の値にプラスする。
【００６６】
制御回路１０３０の構成は、制御回路３３０の構成に、カウンタ・レジスタ３１０〜３１２に対する処理と同様の処理をカウンタ・レジスタ１０１０〜１０１２に対して行う構成を追加したものである。また、制御回路１０３０の動作は、ＳＲＡＭ１０２３に対する動作も追加している。
【００６７】
ＳＲＡＭ１０２３の１例を、図１１に示す。ＳＲＡＭ３２３に対してＳＲＡＭ１０２３は、フィールド１１０２〜１１０４の３つのフィールドを追加している。フィールド１１０２〜１１０４は、フィールド７０２〜７０４と同様に、各エントリにカウンタ・レジスタと同じビット数で構成される。制御回路１０３０は、フィールド１１０２はカウンタ・レジスタ１０１０の値を、フィールド１１０３にはカウンタ・レジスタ１０１１の値を、フィールド１１０４にはカウンタ・レジスタ１０１２の値をそれぞれ格納する。
【００６８】
制御回路１０３０は、状態レジスタ３２２のフィールド６０５のインターバル・タイマと制御レジスタ３２１フィールド５０３のサンプリング間隔の値が等しいと判定したクロック・サイクルで、カウンタ・レジスタ３１０〜３１２の値に加え、カウンタ・レジスタ１０１０〜１０１２の値をＳＲＡＭ１０２１に格納する。また、制御回路１０３０は、ＳＲＡＭ１０２３に値を格納するために各カウンタ・レジスタから値をリードしたと同時に、各カウンタ・レジスタの値を“０”にクリアする。
【００６９】
また、状態レジスタ３２２もフィールドを追加して、状態レジスタ１０２２とする。図１２に状態レジスタ１０２２の一例を示す。追加したフィールド１２０１〜１２０３は、それぞれカウンタ・レジスタ１０１０〜１０１２がオーバーフローした時に、制御回路１０３０が“１”に設定して、オーバーフローがあったことを報告するためのフィールドである。
【００７０】
実施例２のスイッチ１１１は、データ転送性能を計測するバッファの数が２の例であるが、さらにデータ転送性能を計測するバッファの数が増えても、同様の拡張をバッファ単位に施すことで、性能モニタ回路はバッファが１つである時と同様に複数バッファのデータ転送性能の計測ができる。従って、ＰＣＩ  Ｅｘｐｒｅｓｓコンポーネント内で複数バッファが存在する場合でも、性能モニタ回路は、同じサンプリング間隔とサンプリング期間で計測と計測結果の記録を行うことができる。これにより、各バッファの計測結果の時間的な相関を見ることができる。
【００７１】
以上の実施形態によれば、性能モニタ回路は、解析の対象となるデータ転送経路の単位時間内のデータ転送量、使用率、混雑度を計測することができ、さらに、発行元や発行先、トランザクション種別等に分けてデータ転送量を計測できる。これにより、計算機システム設計者は、データ転送経路のデータ転送性能を解析するために必要な情報を得ることができる。
【００７２】
１つの物理ＰＣＩ  Ｅｘｐｒｅｓｓデバイスを、複数の仮想ＰＣＩ  Ｅｘｐｒｅｓｓデバイスに分割して複数のゲストＯＳに割り当てる計算機システム設計者が、どのように性能モニタ回路を使用するのか一例を挙げて説明する。まず、計算機システム設計者は、ＰＣＩ  Ｅｘｐｒｅｓｓデバイスに繋がるデータ転送経路上の、各ゲストＯＳのデータ転送性能を各々計測する。その後、計算機システム設計者は、各ゲストＯＳのＱｏＳを保証するために、各ゲストＯＳのデータ転送性能の合計が、データ転送経路が持つデータ転送性能の最大値を越えないようにゲストＯＳを物理デバイスに割り当てればよい。また、実際に運用を開始した後、各ゲストＯＳのデータ転送性能が設計通りに出ない場合がある。原因としては、先の計測時と異なった挙動をゲストＯＳがする、もしくはデータ転送経路上にある回路の不良等が考えられる。このような状況において計算機システム設計者は、データ転送経路の使用率及び混雑度等を見て、性能低下を引き起こしている原因を突き止める。その際、データ転送量を計測するＴＬＰをマスクすることは、解析の精度を向上させることに寄与する。
【００７３】
先に述べた通り、性能モニタ回路は、ＰＣＩ  Ｅｘｐｒｅｓｓコンポーネント内に実装し、毎クロック・サイクル発生するイベント数をカウントするために、ＰＣＩ  Ｅｘｐｒｅｓｓコンポーネントと同じクロック・サイクルで動作する。これに伴い、サイクル間隔及びサイクル期間をクロック・サイクル単位で指定可能とし、最低でもサイクル間隔及びサイクル期間を格納するレジスタは、ミリ秒を満たすクロック・サイクル数を格納できる大きさとする。同様に、イベント数をカウントするのに使用するカウンタ・レジスタも、最低でもミリ秒間で発生するイベント数をカウントするのに十分な大きさとする。以上により、ナノ秒〜ミリ秒単位でのサンプリング間隔及びサンプリング期間の指定を実現する。
【００７４】
ただし、サイクル間隔及びサイクル期間を格納するレジスタやイベント数をカウントするのに使用するカウンタ・レジスタは、特に大きさを規定するものではなく、サイクル間隔及びサイクル期間を1秒間指定できるようにする等、必要に応じて拡張もしくは削減して構わない。
【００７５】
次に、性能モニタ回路は、使用者が指定するサンプリング間隔に従って、サンプリング期間内に上記３つの計測と計測結果の記録を複数回に分割して実行することができる、例えば、サンプリング期間を１０秒としてサンプリング間隔も同じく１０秒とした時は記録を１回だけ行い、サンプリング間隔を１秒とした時は１秒間の計測と計測結果の記録を１０回繰り返す。
【００７６】
さらに、性能モニタ回路は、ＰＣＩ  Ｅｘｐｒｅｓｓコンポーネント内で複数バッファが存在した場合に、同じサンプリング間隔とサンプリング期間で上記３つの計測と計測結果の記録を行うことができる。これにより、各バッファの計測結果の時間的な相関を見ることができる。
【００７７】
以上に説明した通り、本発明を実施するための形態によれば、サンプリング期間とサンプリング間隔をそれぞれ指定してＰＣＩ  Ｅｘｐｒｅｓｓコンポーネントの性能解析を行う場合にも、性能解析用ソフトウェアを用いずにＰＣＩ  Ｅｘｐｒｅｓｓコンポーネントのデータ転送性能の解析が可能となる。またＰＣＩ  Ｅｘｐｒｅｓｓコンポーネント内に性能モニタ回路を実装するので、ＰＣＩ  Ｅｘｐｒｅｓｓコンポーネントと同じクロック・サイクルで動作可能となり、性能解析の際にサンプリング間隔をミリ秒単位より細かいクロック・サイクル単位で指定できる。結果、従来技術と比べてより細かい粒度の性能解析ができる。
【図面の簡単な説明】
【００７８】
【図１】実施例１の計算機システムの一例である。
【図２】実施例１におけるスイッチを示す。
【図３】実施例１の性能モニタ回路の構成例を示す。
【図４】実施例１のマスク・レジスタの一例を示す。
【図５】実施例１の制御レジスタの一例を示す。
【図６】実施例１の状態レジスタ３２２の一例を示す。
【図７】実施例１のＳＲＡＭ３２３の一例を示す。
【図８】実施例１の制御回路の処理フローチャートの一例を示す。
【図９】実施例２におけるスイッチを示す。
【図１０】実施例２の性能モニタ回路の構成例を示す。
【図１１】実施例２のＳＲＡＭの一例を示す。
【図１２】実施例２の状態レジスタの一例を示す。
【符号の説明】
【００７９】
１００：ＣＰＵ、１０１：メモリ、１１０：ルート・コンプレックス、１１１：スイッチ、１１２〜１１３：エンド・ポイント、１２０：サービス・プロセッサ、１３０：管理用コンソール、１４０〜１４２：ＰＣＩ  Ｅｘｐｒｅｓｓリンク、１５０〜１５３：サービス・プロセッサとＰＣＩ  Ｅｘｐｒｅｓｓコンポーネント間のインターフェース、１６０：管理用コンソールとサービス・プロセッサ間のインターフェース、２００：アップストリーム・ポート、２０１〜２０２：ダウンストリーム・ポート、２１０〜２１１：バッファ、２２０：クロスバ・スイッチ、２３０、９３０：性能モニタ回路、２５０、９５０：データ転送性能計測のための情報を性能モニタ回路に渡すパス、２５１、９５１：バッファが転送するＴＬＰのコピーを性能モニタ回路に渡すパス、２５２〜２５３：性能モニタ回路の設定及び計測結果を読み出すためのパス、３００：カウンタ回路、３１０〜３１２、１０１０〜１０１２：カウンタ・レジスタ、３２０：マスク・レジスタ、３２１：制御レジスタ、３２２、１０２２：状態レジスタ、３２３、１０２３：ＳＲＡＭ、３３０、１０３０：性能モニタ回路。
【図１】
2009205334.tif 000003
【図２】
2009205334.tif 000004
【図３】
2009205334.tif 000005
【図４】
2009205334.tif 000006
【図５】
2009205334.tif 000007
【図６】
2009205334.tif 000008
【図７】
2009205334.tif 000009
【図８】
2009205334.tif 000010
【図９】
2009205334.tif 000011
【図１０】
2009205334.tif 000012
【図１１】
2009205334.tif 000013
【図１２】
2009205334.tif 000014