(57)【特許請求の範囲】
【請求項１】
データ処理システム（１００）のイベントの発生をモニタすることによって、前記データ処理システム（１００）のパフォーマンスをモニタするパフォーマンスモニタ（１０４）であって、前記データ処理システム（１００）は、前記パフォーマンスモニタ（１０４）と、プロセッサ（１０２）と、システムバス（１１２）と、メモリ（１０６）と、インターフェース（１０８、１１０）とを有し、前記プロセッサ（１０２）は、前記システムバス（１１２）を通じて、前記メモリ（１０６）と前記インターフェース（１０８、１１０）の両方に接続され、
グラニュラリティ閾値は、同一のクォリファイドクラスタとみなされるイベント発生の間の最大クロックサイクル数を規定し、
サイズ閾値は、１つのクォリファイドクラスタを構成するイベントの最小発生数を規定し、
距離閾値時間は、後続のクォリファイドクラスタが１つの独立したクラスタとしてカウントされるように、先行のクォリファイドクラスタのある時点と前記後続のクォリファイドクラスタのある時点との間で許容されるクロックサイクル数を規定し、
前記パフォーマンスモニタ（１０４）は：
前記プロセッサ（１０２）や前記メモリ（１０６）や前記インターフェース（１０８、１１０）からイベント信号を受信する制御論理回路（２３４）と；
前記制御論理回路（２３４）に接続されたカウンタ制御レジスタ（２００）であって、前記カウンタ制御レジスタは、グラニュラリティ閾値フィールド（２０８）と、サイズ閾値フィールド（２０６）と、距離閾値時間フィールド（２１０）とを有することと；
前記制御論理回路（２３４）に接続され、前記イベントのクォリファイドクラスタ数を表示するクラスタカウンタ（２３０）と
を備え、
前記グラニュラリティ閾値フィールド（２０８）は、前記イベントが発生したクロックの次のクロックにおいて前記グラニュラリティ閾値に初期化され（４１０）、前記イベントが発生しなかったクロックの次のクロックにおいてデクリメントされるが（４１６）、前記グラニュラリティ閾値フィールドがゼロである場合はデクリメントされず、
前記サイズ閾値フィールド（２０６）は、前記グラニュラリティ閾値フィールドと前記サイズ閾値フィールドの両方がゼロであるクロックの次のクロックにおいて前記サイズ閾値に初期化され（４０４）、前記イベントが発生した次のクロックにおいてデクリメントされるが（４１０）、前記サイズ閾値フィールドがゼロである場合はデクリメントされず、
前記距離閾値時間フィールド（２１０）は、前記サイズ閾値フィールド（２０６）と前記グラニュラリティ閾値フィールド（２０８）の両方がゼロであるクロックの次のクロックにおいて前記距離閾値時間に初期化され（４０２）、初期化されたクロック以降において前記イベントが発生した場合は、前記イベントが発生した次のクロックにおいてデクリメントされるが、前記距離閾値時間フィールドがゼロである場合はデクリメントされず、
前記制御論理回路（２３４）は、前記サイズ閾値フィールドがゼロであることと、前記グラニュラリティ閾値フィールドがゼロであることとを満たす前記クォリファイドクラスタの発生を判定する動作を行ない、
前記クラスタカウンタ（２３０）は、前記先行のクォリファイドクラスタ（６０４）と、前記先行のクォリファイドクラスタ（６０４）から前記距離閾値時間以降に発生した前記後続のクォリファイドクラスタ（６０８）を表示する
パフォーマンスモニタ（１０４）。
【請求項２】
前記パフォーマンスモニタ（１０４）は更に：
ゼロから前記距離閾値時間までを示す距離カウンタと；
ゼロから前記サイズ閾値までを示すサイズカウンタと；
ゼロから前記グラニュラリティ閾値までを示すグラニュラリティカウンタとを備え、
前記距離カウンタが示す値と、前記サイズカウンタが示す値と、前記グラニュラリティカウンタが示す値とがいずれもゼロであり、且つ前記イベントが発生しなかったクロックの次のクロックにおいて、前記制御論理回路（２３４）は前記クラスタカウンタ（２３０）をインクリメントする、請求項１記載のパフォーマンスモニタ。
【請求項３】
前記イベントはバストランザクションを含む、請求項１記載のパフォーマンスモニタ。
【請求項４】
データ処理システム（１００）において、パフォーマンスモニタ（１０４）が、前記データ処理システム（１００）のイベントのクォリファイドクラスタ数のカウントを行なうカウント方法であって、前記データ処理システム（１００）は、前記パフォーマンスモニタ（１０４）と、プロセッサ（１０２）と、システムバス（１１２）と、メモリ（１０６）と、インターフェース（１０８、１１０）とを有し、前記プロセッサ（１０２）は、前記システムバス（１１２）を通じて、前記メモリ（１０６）と前記インターフェース（１０８、１１０）の両方に接続され、
グラニュラリティ閾値は、同一のクォリファイドクラスタとみなされるイベント発生の間の最大クロックサイクル数を規定し、
サイズ閾値は、１つのクォリファイドクラスタを構成するイベントの最小発生数を規定し、
距離閾値時間は、後続のクォリファイドクラスタが１つの独立したクラスタとしてカウントされるように、先行のクォリファイドクラスタのある時点と前記後続のクォリファイドクラスタのある時点との間で許容されるクロックサイクル数を規定し、
前記パフォーマンスモニタ（１０４）は：
前記プロセッサ（１０２）や前記メモリ（１０６）や前記インターフェース（１０８、１１０）からイベント信号を受信する制御論理回路（２３４）と；
前記制御論理回路（２３４）に接続されたカウンタ制御レジスタ（２００）であって、前記カウンタ制御レジスタは、グラニュラリティ閾値フィールド（２０８）と、サイズ閾値フィールド（２０６）と、距離閾値時間フィールド（２１０）とを有することと；
前記制御論理回路（２３４）に接続され、前記イベントのクォリファイドクラスタ数を表示するクラスタカウンタ（２３０）と
を備え、
前記グラニュラリティ閾値フィールド（２０８）は、前記イベントが発生したクロックの次のクロックにおいて前記グラニュラリティ閾値に初期化され（４１０）、前記イベントが発生しなかったクロックの次のクロックにおいてデクリメントされるが（４１６）、前記グラニュラリティ閾値フィールドがゼロである場合はデクリメントされず、
前記サイズ閾値フィールド（２０６）は、前記グラニュラリティ閾値フィールドと前記サイズ閾値フィールドの両方がゼロであるクロックの次のクロックにおいて前記サイズ閾値に初期化され（４０４）、前記イベントが発生した次のクロックにおいてデクリメントされるが（４１０）、前記サイズ閾値フィールドがゼロである場合はデクリメントされず、
前記距離閾値時間フィールド（２１０）は、前記サイズ閾値フィールド（２０６）と前記グラニュラリティ閾値フィールド（２０８）の両方がゼロであるクロックの次のクロックにおいて前記距離閾値時間に初期化され（４０２）、初期化されたクロック以降において前記イベントが発生した場合は、前記イベントが発生した次のクロックにおいてデクリメントされるが、前記距離閾値時間フィールドがゼロである場合はデクリメントされず、
前記制御論理回路（２３４）は、前記サイズ閾値フィールドがゼロであることと、前記グラニュラリティ閾値フィールドがゼロであることとを満たす前記クォリファイドクラスタの発生を判定する動作を行ない、
前記クラスタカウンタ（２３０）は、前記先行のクォリファイドクラスタ（６０４）と、前記先行のクォリファイドクラスタ（６０４）から前記距離閾値時間以降に発生した前記後続のクォリファイドクラスタ（６０８）を表示し、
前記カウント方法は：
前記先行のクォリファイドクラスタの発生を判定する第１判定ステップ（４４８）であって、前記第１判定ステップは、前記イベントが前記グラニュラリティ閾値内で発生したか否かの判定をさらに含み、前記先行のクォリファイドクラスタが発生したと判定された場合に、前記クラスタカウンタ（２３０）をインクリメントすることと；
前記後続のクォリファイドクラスタが、前記先行のクォリファイドクラスタの発生から少なくとも前記距離閾値時間後に発生したか否かを判定する第２判定ステップ（４４８）であって、前記後続のクォリファイドクラスタが発生したと判定された場合に、前記クラスタカウンタ（２３０）をインクリメントすることと
を備えることを特徴とする、カウント方法。
【請求項５】
前記イベントはバストランザクションを含む、請求項４記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はパフォーマンス・モニタに関し、特にイベントのクラスタをモニタすることに関する。
【背景技術】
【０００２】
パフォーマンス・モニタリングは、データ処理システムの動作の特性を表示するのに広く用いられている。例えば、データ処理システムの特定のイベント（例えばメモリアクセス）を識別、モニタすることによりパフォーマンスの特性を表示できる。公知のパフォーマンス・モニタの１つはメモリアクセスのようなイベントをモニタし、クラスタのサイズおよびクラスタのグラニュラリティに基づいて、イベントのクラスタ化の特性を示すことができる。この方法では、クラスタ・サイズが１つのクラスタを構成する最小のイベント発生数を規定し、クラスタ・グラニュラリティが１つのクラスタの一部とみなされる個々のイベントの発生間の最大許容サイクル数を規定している。したがって、パフォーマンス・モニタは、データ処理システムの動作の特性をメモリアクセスのクラスタ化について示すことができる。
【特許文献１】欧州特許出願公開第０，８９７，１５２号明細書
【発明の開示】
【発明が解決しようとする課題】
【０００３】
しかし、クラスタのサイズとグラニュラリティだけを使用してイベントのクラスタ化特性を記述することは、イベントの発生の分布を定量化するのが困難なため、イベントのクラスタ化の特性を誤って記述することになり易い。したがって、データ処理システムの挙動をさらに良く特徴づけるとともに、データ処理システムの挙動をさらに良く把握できるように、イベントのプロファイリングを改善する必要性がある。
【０００４】
本発明を例によって示すが、本発明は類似の参照番号が類似の構成要素を示す添付の図面に限定されるものではない。
当業者は、図中の要素が説明を簡単、明瞭にするために示されたものであって、必ずしも正しい縮尺ではないことを理解できよう。例えば、図中のいくつかの要素の大きさは、本発明の実施形態を理解しやすいように他の要素に比べ誇張して記載されている場合もあり得る。
【課題を解決するための手段】
【０００５】
本明細書で説明している用語「バス」は、データ、アドレス、制御、または状態等の１つまたは複数の種々の形態の情報の伝送に使用される複数の信号または導体を指すものとして使用している。本明細書で説明している「導体」は、単一の導体、複数の導体、単方向導体、または双方向導体として図示または説明している。ただし、実施形態が異なる場合には導体の形態を変えてもよい。例えば、双方向導体の代わりに個別の単方向導体を用いてもよく、またその逆でもよい。複数の導体は、複数の信号を直列的にまたは時分割多重して伝送する単一導体に置き換えられてもよい。同様に、複数の信号を搬送する単一導体をこれらの信号のサブセットを運ぶ種々の異なる複数の導体に分割してもよい。したがって、信号の伝送には多くの選択肢が存在する。
【０００６】
用語「アサート（ａｓｓｅｒｔ）」および「ニゲート（ｎｅｇａｔｅ）」（または「デアサート（ｄｅａｓｓｅｒｔ）」）は、信号、状態ビットまたは類似の装置を論理的「真」または「偽」の状態にそれぞれなす場合に使用している。論理上真の状態が論理レベル１である場合、論理上偽の状態は論理レベル０である。また、論理上真の状態が論理レベル０である場合、論理上偽の状態は論理レベル１である。また、本明細書で使用している「終了カウンタ」または「終了済みカウンタ」とは既に０に到達したカウンタを指している。
【発明の効果】
【０００７】
イベントのクラスタ化を特性記述することにより、データ処理システムまたは任意の形態の電子システムの挙動をプロファイルすることが可能になる。この特性記述は、メモリや、アクセスのクラスタ間の距離が不均一でアクセスが時間的に分散している任意の装置へのアクセスの挙動を理解するのに使用できる。この特性記述を用いて所与のインターフェースの最大所要帯域幅、このピーク所要帯域幅の継続時間、およびこれらピーク間の距離を決定できる。その結果を用いて、ソフトウェアのプログラマはソフトウェアを微調整してこれらピークの特性を変更し、システムの全体パフォーマンスを向上させることができる。この特性記述によって得られる情報の他の用途は、ハードウェア設計者に最大所要システム帯域幅およびこれらのピーク所要の分布という概念を与えることである。この情報を使用して、ハードウェア設計者は設計上のトレードオフを決め、最適な方法でこの要求を扱うことができる。
【０００８】
イベントは、データ処理システムまたは電子システム内の任意のイベントを指し得ることに留意されたい。一般に、イベントは、例えば論理信号がアサートかデアサートかによって検出可能な任意の動作である。例えば、一実施形態において、イベントには、メモリアクセス（すなわち読み出し要求および書き込み要求）をはじめとして、イーサネット・インターフェースを経由したイーサネット・コントローラからのフレーム受信、周辺装置へのアクセス、通信バス上の有効データの表示、または任意の形態のバストランザクションが挙げられる。または、他の任意の種類のイベントが規定されてもよい。
【発明を実施するための最良の形態】
【０００９】
図１に、プロセッサ１０２、メモリ１０６、その他の周辺インターフェース１０８、イーサネット・コントローラ１１０、およびシステム・バス１１２を有するデータ処理システム１００を、ブロック図の形式で示している。プロセッサ１０２はパフォーマンス・モニタ１０４を含み、双方向導体１１４によってシステム・バス１１２に接続されている。メモリ１０６は、双方向導体１１６によってシステム・バス１１２に接続され、イーサネット・コントローラ１１０は双方向導体１２０によってシステム・バス１１２に接続され、その他の周辺インターフェース１０８は、双方向導体１１８によってシステム・バス１１２に接続されている。その他の周辺インターフェース１０８は双方向導体１２２によって他の周辺装置に接続され、イーサネット・コントローラ１１０は双方向導体１２４によって通信ネットワークに接続されている。一実施形態において、データ処理システム１００は、当業界で知られているマイクロプロセッサ、マイクロコントローラ、デジタル信号プロセッサ等である。メモリ１０６は、例えばランダムアクセスメモリ（ＲＡＭ）、スタティックＲＡＭ（ＳＲＡＭ）、ダイナミックＲＡＭ（ＤＲＡＭ）、読み取り専用メモリ（ＲＯＭ）、フラッシュ、電気的に消去可能でプログラマブルなＲＯＭ（ＥＥＰＲＯＭ）、消去可能でプログラマブルなＲＯＭ（ＥＰＲＯＭ）等の揮発性または不揮発性の任意の形態のメモリである。イーサネット・コントローラ１１０は、データ処理システム１００に設置できる周辺装置の一種であるが、ただし、データ処理システム１００は、例えば入出力（Ｉ／Ｏ）装置、ユニバーサル非同期受信送信装置（ＵＡＲＴ）、リアルタイムクロック（ＲＴＣ）等の周辺装置に接続する他の周辺インターフェース１０８もさらに含むことができる。その他の周辺インターフェース１０８は、ＰＣＩ（周辺装置インターフェース）インターフェースおよびラピッドＩＯ（ＲａｐｉｄＩＯ）インターフェースのようなインターフェースを含むこともできる。データ処理システム１００は、図１の構成要素に加えてまたはそれらに代えて、システム・バス１１２に接続された任意の数のメモリおよび周辺装置を含むこともできる。
【００１０】
一実施形態では、データ処理システム１００全体が、例えばＳｏＣ（システムオンチップ）手法のような単一のチップに集積化されている。しかし、別の実施形態では、データ処理システム１００の複数の構成部品は、例えばチップセットのように、異なる複数のチップに配置された個別の集積回路に集積化されていてもよい。例えば、メモリ１０６は、プロセッサ１０２とは別の集積回路上に配置されていてもよい。また、パフォーマンス・モニタ１０４もプロセッサ１０２に集積化されていてもよいし（図１に示すように）、またはプロセッサ１０２外部の別の集積回路に配置されていてもよい。一実施形態において、パフォーマンス・モニタ１０４は、スタンドアロンの特定用途向けＩＣ（ＡＳＩＣ）であってもよく、すなわちデータ処理システム１００とは別の、例えばロジックアナライザのような電子システムに配置されていてもよい。技術的によく知られているように、プロセッサ１０２は、動作中、メモリ１０６または他の周辺装置から受け取った命令を処理でき、メモリ１０６、他の周辺装置、およびイーサネット・コントローラ１１０にデータを送受信できる。
【００１１】
図２に図１のパフォーマンス・モニタ１０４の一実施形態を示す（パフォーマンス・モニタ１０４をモニタ・ユニットと呼ぶ場合もあることに留意されたい）。パフォーマンス・モニタ１０４は、カウンタ制御レジスタ１  ２００からカウンタ制御レジスタＮ  ２０２と、制御回路２３４と、クラスタ・カウンタ１  ２３０からクラスタ・カウンタＮ  ２３２とを含む。カウンタ制御レジスタ１  ２００、カウンタ制御レジスタＮ  ２０２、クラスタ・カウンタ１  ２３０、およびクラスタ・カウンタＮ  ２３２は、制御回路２３４にそれぞれ双方向接続されている。カウンタ制御レジスタ１  ２００は、クラスタ・サイズ閾値フィールド（ｃ＿ｓｉｚｅ  ２０６）と、クラスタ・グラニュラリティ閾値フィールド（ｃ＿ｇｒａｎｕｌａｒｉｔｙ  ２０８）と、クラスタ距離閾値時間フィールド（ｃ＿ｄｉｓｔａｎｃｅ  ２１０）と、イベント選択フィールド（ｅｖｅｎｔ＿ｓｅｌｅｃｔ
２１２）と、その他のフィールド２０４とを含む。同様に、カウンタ制御レジスタＮ  ２０２は、クラスタ・サイズ閾値フィールド（ｃ＿ｓｉｚｅ  ２１６）と、クラスタ・グラニュラリティ閾値フィールド（ｃ＿ｇｒａｎｕｌａｒｉｔｙ  ２１８）と、クラスタ距離閾値時間フィールド（ｃ＿ｄｉｓｔａｎｃｅ  ２２０）と、イベント選択フィールド（ｅｖｅｎｔ＿ｓｅｌｅｃｔ  ２２２）と、その他のフィールド２１４とを含んでいる。制御回路２３４は、イベント選択回路２３６と、内部カウンタ２３８とを含み、プロセッサ１０２の種々の構成部分からのイベント信号２２８を受け取る。したがって、パフォーマンス・モニタ１０４は、必要に応じてＮ個（Ｎは任意の数）のカウンタ制御レジスタと、Ｎ個のクラスタ・カウンタとを含むことができる点に留意されたい。パフォーマンス・モニタ１０４の制御レジスタも、種々の異なる方法で構成できることに留意されたい。例えば、一実施形態において、制御レジスタは、クラスタ化の選択肢に対して個別に使用でき、またカウンタ制御レジスタは、必要に応じて異なるフィールド数を有するより大きなレジスタに結合することもできる。
【００１２】
動作時、パフォーマンス・モニタは、各カウンタ制御レジスタに対応するイベントカウンタを含む。例えば、クラスタ・カウンタ１  ２３０はカウンタ制御レジスタ１  ２００に対応するイベントカウンタである。ｅｖｅｎｔ＿ｓｅｌｅｃｔ  ２１２フィールドは、モニタするイベントの種類を識別するのに使用される。例えば、ｅｖｅｎｔ＿ｓｅｌｅｃｔ  ２１２は、メモリアクセス（例えば、プロセッサ１０２またはその他の任意の周辺装置とメモリ１０６の間のシステム・バス１１２上に発生する読み出しまたは書き込みまたはその両方）がモニタされるように、イーサネットインターフェースを通じて受け取るフレームがモニタされるように、またはそれ以外にも設定できる。したがって、ｅｖｅｎｔ＿ｓｅｌｅｃｔ  ２１２は、１種類のイベントタイプを識別するように設定できるが、ｅｖｅｎｔ＿ｓｅｌｅｃｔ  ２２２は、イベントタイプが同一種類か異なる種類かを識別するように選択できる。イベントのクラスタ化がカウンタ制御レジスタ１  ２００に対してイネーブルになっていない（ｃ＿ｓｉｚｅ  ２０６が０に設定されている）と、クラスタ・カウンタ１  ２３０は、ｅｖｅｎｔ＿ｓｅｌｅｃｔ  ２１２が示す種類のイベント数を単純にカウントするイベントカウンタとして動作し、この場合、他のフィールド２０４は、オプションをさらに規定するのに使用することができる。例えば、イベント信号２２８は、メモリ書き込みがいつ発生しメモリ読み出しがいつ発生するかを示す論理信号を含み得る。ｅｖｅｎｔ＿ｓｅｌｅｃｔ  ２１２を設定して、クラスタ・カウンタ１  ２３０（イベントカウンタとして動作している）がメモリ書き込みだけをモニタするように選択することもできる。したがって、イベント選択回路２３６はｅｖｅｎｔ＿ｓｅｌｅｃｔ  ２１２を使用して、メモリ書き込みの発生を示すイベント信号２２８の適切な入力イベント信号を選択し、適切な入力イベント信号のアサートを受け取るとすぐに、該当するイベントカウンタ（クラスタ・カウンタ１  ２３０）はインクリメントされる。
【００１３】
イベントのクラスタ化がイネーブルになっている（ｃ＿ｓｉｚｅ  ２０６が０でない）と、クラスタ・カウンタ１  ２３０は、ｃ＿ｓｉｚｅ  ２０６、ｃ＿ｇｒａｎｕｌａｒｉｔｙ  ２０８、およびｃ＿ｄｉｓｔａｎｃｅ  ２１０によって設定された閾値を満足する選択されたイベントタイプ（ｅｖｅｎｔ＿ｓｅｌｅｃｔ  ２１２によって選択された）のクラスタをカウントするように動作する。したがって、フィールドｃ＿ｓｉｚｅ  ２０６、ｃ＿ｇｒａｎｕｌａｒｉｔｙ  ２０８、およびｃ＿ｄｉｓｔａｎｃｅ  ２１０は、クラスタ・カウンタ１  ２３０が選択されたイベントタイプの単一イベントの発生をカウントしないが選択されたイベントタイプのクラスタの発生をカウントするようにイベントのクラスタ化がイネーブルにされた場合に使用される（クラスタ制御レジスタＮ  ２０２およびクラスタ・カウンタＮ  ２３２は、クラスタ制御レジスタ１  ２００およびクラスタ・カウンタ１  ２３０と類似の動作を行うことに留意されたい）。ここで説明した実施形態では、ｃ＿ｓｉｚｅ  ２０６およびｃ＿ｇｒａｎｕｌａｒｉｔｙ  ２０８がクォリファイド・クラスタを規定している。すなわち、クォリファイド・クラスタ（図３を参照してさらに詳述するように）は、ｃ＿ｓｉｚｅ  ２０６およびｃ＿ｇｒａｎｕｌａｒｉｔｙ  ２０８によりそれぞれ設定されるサイズおよびグラニュラリティの閾値を共に満足するクラスタである。サイズ閾値は、１つのイベント・クラスタを構成するイベントの最小発生数を規定している。一般には、クラスタは同一種類のイベントの集まりと定義されているが代わりに、クラスタは複数の種類のイベントの集まりを指してもよい。グラニュラリティ閾値は、同一クラスタの一部とみなされるイベント発生の個々のイベント発生間の最大許容回数またはサイクル（例えばクロックサイクル）値を規定している。
【００１４】
ｃ＿ｄｉｓｔａｎｃｅ  ２１０で設定される距離閾値時間は、クラスタ・カウンタ１  ２３０でカウントすべきクォリファイド・クラスタを判定するのに用いられる。距離閾値時間は、後続のクォリファイド・クラスタが１つの独立したクラスタとしてクラスタ・カウンタ１  ２３０によってカウントされるように、先行のクォリファイド・クラスタの所定の時点と後続のクォリファイド・クラスタの所定の時点間で許容される回数またはサイクル数（例えばクロックサイクル）を規定している。例えば、一実施形態では、距離閾値時間は、先行のクォリファイド・クラスタの終了時点と後続のクォリファイド・クラスタの開始時点の間の最小許容回数またはサイクル数と規定することもできる。他の実施形態では、距離閾値時間は、先行のクォリファイド・クラスタの終了時点とｃ＿ｓｉｚｅ回のイベント発生が後続のクォリファイド・クラスタで検出された時点間の、最小許容回数またはサイクル数と規定することもできる。代わりに、距離閾値時間は、先行のクォリファイド・クラスタの開始時点または終了時点と後続のクォリファイド・クラスタの開始時点または終了時点の間の、最小許容回数またはサイクル数と規定することもできる。代わりに、距離閾値時間は、ｃ＿ｓｉｚｅ回のイベント発生が先行のクォリファイド・クラスタで検出された時点とｃ＿ｓｉｚｅ回のイベント発生が後続のクォリファイド・クラスタで検出された時点の間の、最小許容回数またはサイクル数と規定することもできる。さらに他の実施形態では、距離閾値時間は、既にカウントされた先行のクォリファイド・クラスタの所定の時点と後続のクォリファイド・クラスタの所定の時点の間の、最小許容回数またはサイクル数と規定することもできる。したがって、距離閾値時間は種々の異なる方法で規定することができる。
【００１５】
図２に戻り、ｃ＿ｓｉｚｅ  ２０６の値が０より大きい場合、クラスタ・カウンタ１  ２３０がｃ＿ｓｉｚｅ  ２０６、ｃ＿ｇｒａｎｕｌａｒｉｔｙ  ２０８、およびｃ＿ｄｉｓｔａｎｃｅ  ２１０を満足するイベントタイプの（ｅｖｅｎｔ＿ｓｅｌｅｃｔ  ２１２によって選択される）クォリファイド・クラスタ数をカウントするように、クラスタ化がイネーブルにされる。すなわち、上記のごとく、イベント選択回路２３６は、ｅｖｅｎｔ＿ｓｅｌｅｃｔ  ２１２に応じてモニタすべきイベント信号２２８を選択し、クラスタ・カウンタ１  ２３０は、選択されたイベントタイプのクラスタをカウントする。同様に、カウンタ制御レジスタＮ  ２０２でクラスタ化がイネーブルにされる（ｃ＿ｓｉｚｅ  ２１６が０より大きい）場合も、イベント選択回路２３６は、ｅｖｅｎｔ＿ｓｅｌｅｃｔ  ２２２に応じてモニタすべきイベント信号２２８を選択し、クラスタ・カウンタＮ  ２３２は、選択されたイベントタイプのクラスタをカウントする。内部カウンタ２３８は、図４および５のフロー図を参照して後に詳述するが、ｃ＿ｓｉｚｅ  ２０６、ｃ＿ｇｒａｎｕｌａｒｉｔｙ  ２０８、およびｃ＿ｄｉｓｔａｎｃｅによって設定された閾値が満足されているか否かを判定するのに用いられる（カウンタ制御レジスタ１  ２００およびクラスタ・カウンタ１  ２３０についてここで説明したことはまた、カウンタ制御レジスタＮ
２０２およびクラスタ・カウンタＮ  ２３２にも当てはまることに留意されたい）。
【００１６】
図３にサイズ閾値、グラニュラリティ閾値、および距離閾値時間の理解を容易にするイベントのクラスタ化の例３００を示す。図３には２個のクラスタ３０２および３０４を示している。クラスタ３０２を参照すると、イベントの発生数が示されている。イベント発生数はサイズ閾値の要求条件（この例では５）を満たし、かつクラスタ３０２の任意の２つのイベント間の距離はグラニュラリティ閾値（ｃ＿ｇｒａｎｕｌａｒｉｔｙ）より小さい（または等しい）ので、クラスタ３０２はクォリファイド・クラスタとみなされる。クォリファイド・クラスタ３０２についての説明と同じ理由で、クラスタ３０４はサイズ閾値より大きな（または等しい）数のイベント発生数を有し、かつ任意の２つのイベント間の距離はグラニュラリティ閾値より小さい（または等しい）のでクラスタ３０４もまたクォリファイド・クラスタである。図３の例３００では、クラスタ距離（すなわち２個のクラスタ間の回数またはクロックサイクル数）は、Ｔ１で示す先行のクォリファイド・クラスタ３０２の終了時点からＴ３で示す後続のクォリファイド・クラスタ３０４の開始時点までと規定される。例３００のＴ２は、閾値距離時間（ｃ＿ｄｉｓｔａｎｃｅ）が終了する時点を示している。すなわち、Ｔ１とＴ２の間の時間が閾値距離時間（ｃ＿ｄｉｓｔａｎｃｅ）を示している。したがって、クラスタ距離がｃ＿ｄｉｓｔａｎｃｅより大きいので、クォリファイド・クラスタ３０４はクラスタ・カウンタによってカウントされる。しかし、クォリファイド・クラスタ３０４と３０２の間のクラスタ距離がその距離閾値時間を満足しない場合には、クォリファイド・クラスタ３０４はカウントされない。すなわち、Ｔ３がＴ２以前に発生していて、Ｔ２以後のイベントの発生数が閾値距離の要求値を満足してない場合には、クォリファイド・クラスタ３０４はカウントされない。したがって、図示の実施形態では、パフォーマンス・モニタ１０４は、第１のクォリファイド・クラスタの発生後、図４および５を参照して後に詳述するように、閾値距離時間が次のクォリファイド・クラスタを検出する前に終了するのを待つ。すなわち、図示の実施形態では、閾値距離時間は、各クォリファイド・クラスタがカウントされた後、後続のクォリファイド・クラスタをカウントする前に終了しなければならない。
【００１７】
図４および図５に、本発明の一実施形態によるパフォーマンス・モニタ１０４で使用されるクォリファイド・クラスタのカウント方法をフロー図の形式で示す。図４のフロー４００は、本発明の一実施形態によるクォリファイド・クラスタの検出方法を示している。フロー４００はスタート４０１から始まり、ブロック４０２に進み、ｃ＿ｓｉｚｅ、ｃ＿ｇｒａｎｕｌａｒｉｔｙ、およびｃ＿ｄｉｓｔａｎｃｅが初期化される（図４および図５に関するここの説明では、ｃ＿ｓｉｚｅ、ｃ＿ｇｒａｎｕｌａｒｉｔｙ、ｃ＿ｄｉｓｔａｎｃｅ、およびクラスタ・カウンタは、クラスタ制御レジスタ１  ２００からＮ  ２０２、および対応するクラスタ・カウンタ１  ２３０からＮ  ２３２のうちのいずれか１つを指すことができることに留意されたい）。一実施形態において、クラスタ制御レジスタは、ユーザがｃ＿ｓｉｚｅ、ｃ＿ｇｒａｎｕｌａｔｉｔｙ、およびｃ＿ｄｉｓｔａｎｃｅを所望の値にプログラムすることができるようなユーザプログラマブルである。このように、ユーザは異なる閾値を用いてデータ処理システム１００をプロファイルすることができる。一方、これら異なる閾値はハードワイヤ接続でデータ処理システム１００に与えてもよい。ブロック４０２では、距離カウンタ（パフォーマンス・モニタ１０４の内部カウンタ２３８のうちの１つ）も０に初期化される。次に、フローはＡ点を経由してブロック４０４に進み、サイズ・カウンタ（パフォーマンス・モニタ１０４の内部カウンタ２３８のうちの他の１つ）がｃ＿ｓｉｚｅ値に初期化される。次に、フローは判定ダイヤモンド４０６に進む。
【００１８】
判定ダイヤモンド４０６において、距離カウンタが終了したか否かが判定される。距離カウンタがまだ終了していない場合、フローはブロック４１４に進んで、距離カウンタ値がまだ０になっていないと距離カウンタをディクリメントし、次に、フローは判定ダイヤモンド４０６へ戻る。したがって、フローは、距離カウンタが終了するまで、判定ダイヤモンド４０６から判定ダイヤモンド４０８（第１のイベント発生の探索を開始）には進まない。したがって、距離カウンタ終了前に発生したいかなるイベントもクォリファイド・クラスタを検出する際に使用されることはない。ただし、距離カウンタが判定ダイヤモンド４０６で終了している場合には、フローは判定ダイヤモンド４０８に進む。
【００１９】
判定ダイヤモンド４０８では、第１のイベントが検出されたか否かが判定される。第１のイベントが検出されていない場合、フローは判定ダイヤモンド４０８に戻る。すなわち、距離カウンタは既に終了しているので、フロー４００は、第１のイベントが検出されるまで判定ダイヤモンド４０８に留まる。一旦、第１のイベントが検出されると、フローはブロック４１０に進む。判定ダイヤモンド４０８で検出された第１のイベントは、１つのクォリファイド・クラスタの第１のイベントである可能性を持つイベントである。すなわち、クォリファイド・クラスタを識別するプロセスは、距離カウンタが終了して第１のイベントが検出されるまで開始されない。この第１のイベントは、例えば、パフォーマンス・モニタ１０４が開始してすぐ検出される第１のイベントであってもよい。この第１のイベントは、先行のクォリファイド・クラスタの終了後、すなわち第１のイベントが検出される以前にグラニュラリティ閾値が許容するよりも大きいある時間量だけ前に発生した前のイベントの後最初に検出されるイベントであってもよい。この第１のイベントは、例えば、距離カウンタがクラスタまたはクォリファイド・クラスタの発生中に終了した場合、クラスタまたはクォリファイド・クラスタ中に発生したイベントを指すこともできる。ブロック４１０では、第１のイベントを検出することによりクォリファイド・クラスタの開始可能性が検出されたので、グラニュラリティ・カウンタ（パフォーマンス・モニタ１０４の内部カウンタ２３８の他のカウンタ）がｃ＿ｇｒａｎｕｌａｒｉｔｙに初期化される。第１のイベントが検出されたので、サイズ・カウンタもディクリメントされる。
【００２０】
次に、フローは判定ダイヤモンド４１２に進み、次のイベントが検出されたか否かが判定される（例えば、データ処理システム１００の次のクロックでイベントが検出されたか否かの判定）。検出されなかった場合、フローは判定ダイヤモンド４２２に進み、グラニュラリティ・カウンタが終了しているか否かが判定される。グラニュラリティ・カウンタが終了している場合には、グラニュラリティ・カウンタが終了していると、第１のイベントと現在の時刻（例えばイベントが検出されなかった現在のクロックサイクル）の間の時間がグラニュラリティ閾値より大きくなり、したがって、第１のイベントは１つのクォリファイド・クラスタの開始ではありえないので、フローは新たな第１のイベントを検出できるようＡ点に戻る。したがって、Ａ点において、新たな第１のイベントの探索が始まる（Ａ点に進むと、距離カウンタは既に終了しているので、フローは判定ダイヤモンド４０８まで直接進んで、新たな第１のイベントの探索が始まることに留意されたい）。しかし、判定ダイヤモンド４２２においてグラニュラリティ・カウンタが終了していない場合、フローはブロック４１６に進み、グラニュラリティ・カウンタがディクリメントされた後、判定ダイヤモンド４１２に戻る。
【００２１】
判定ダイヤモンド４１２でイベントが検出されると、フローはブロック４２０に進む。判定ダイヤモンド４１２でイベントが検出されたということは、第１のイベント（または前のイベント）と、このイベントの間の時間がグラニュラリティ閾値内にあることを示している。したがって、ブロック４２０で、サイズ・カウンタは、クォリファイド・クラスタの一部をなす可能性のある他のイベントが検出されたことを示すようにディクリメントされる。他のイベントが検出されたので、グラニュラリティ・カウンタもブロック４２０で再初期化され、フローは判定ダイヤモンド４２４に進む。判定ダイヤモンド４２４では、サイズ・カウンタが終了したか否かが判定される。サイズ・カウンタがまだ終了していない場合、サイズ閾値にまだ達していないので、フローは判定ダイヤモンド４１２に戻り、次のクロックで別のイベントが検出されたか否かを判定する。イベントがｃ＿ｇｒａｎｕｌａｒｉｔｙ回のクロックで検出されない場合、フローは、上記のごとく判定ダイヤモンド４２２からＡ点を経由してブロック４０４に戻る。ただし、次のイベントがグラニュラリティ・カウンタの終了前に検出された場合には、フローは再びブロック４２０を経由して判定ダイヤモンド４２４に戻る。
【００２２】
判定ダイヤモンド４２４では、サイズ・カウンタが終了している場合、グラニュラリティ閾値を満足するｃ＿ｓｉｚｅ回のイベントが既に検出されているので、その結果、１つのクォリファイド・クラスタが検出されたことを示している。すなわち、検出されたｃ＿ｓｉｚｅ回のイベントの中で隣接する任意の２イベント間の時間は、最大でグラニュラリティ閾値となる。さらに、判定ダイヤモンド４０６およびブロック４１４で指定されたループが距離カウンタの終了を待つので、こうして検出されたクォリファイド・クラスタは、パフォーマンス・モニタ１０４の動作開始後最初に検出されたクォリファイド・クラスタ、または以前に検出されたクォリファイド・クラスタより少なくともｃ＿ｄｉｓｔａｎｃｅ後に発生したクォリファイド・クラスタのいずれかである。サイズ閾値、グラニュラリティ閾値、および距離閾値時間が満足されるので、クォリファイド・クラスタが１つ示されフローは図５のＣに進む（この実施形態では、判定ダイヤモンド４０８で検出された「第１のイベント」は、１つのクラスタまたはクォリファイド・クラスタの発生中にも発生し得るので、検出されたクォリファイド・クラスタは、実際にはさらに大きなクラスタまたはクォリファイド・クラスタの一部であってもよいことに留意されたい）。
【００２３】
図５にＣ点から始まるフロー４５０を示すが、ここでＣ点はクォリファイド・クラスタが既に検出されていることを示している。ただし、図示の実施形態では、クラスタ・カウンタは現在のクォリファイド・クラスタの終了が検出されるまでインクリメントされない（他の実施形態では、クラスタ・カウンタがクォリファイド・クラスタの終了に先立ってインクリメントされてもよいことに留意されたい）。したがって、現在のクォリファイド・クラスタの終了を最終的に検出するために、フローはＣ点を経て判定ダイヤモンド４４０に進む。
【００２４】
判定ダイヤモンド４４０において、イベントが検出されたか否かが（次のクロックで）判定される。イベントが検出されると、新たなイベントの検出はグラニュラリティ・カウンタをリセットする必要があるので、フローは、ブロック４４２に進み、グラニュラリティ・カウンタがｃ＿ｇｒａｎｕｌａｒｉｔｙに再初期化される。次に、フローは判定ダイヤモンド４４０に戻る。次のクロックでイベントが判定ダイヤモンド４４０で検出されないと、フローは判定ダイヤモンド４４４に進み、グラニュラリティ・カウンタが終了したか否かが判定される。グラニュラリティ・カウンタが終了していない場合、フローは、グラニュラリティ・カウンタがディクリメントされるブロック４４６に進み、次に、フローは判定ダイヤモンド４４０に進み、次のクロックでイベントが検出されたか否かが判定される。したがって、イベントが検出されるかグラニュラリティ・カウンタが終了しない限り、フローは連続して判定ダイヤモンド４４０に戻る。判定ダイヤモンド４４４では、グラニュラリティ・カウンタが終了していれば、どんな後続のイベントもグラニュラリティ閾値を越えているので、現在のクォリファイド・クラスタの一部とみなすことはもはやできない。したがって、グラニュラリティ・カウンタが判定ダイヤモンド４４４で終了した場合、フローはブロック４４８に進み、ブロック４４８は、現在のクォリファイド・クラスタが終了したこと、したがって現在のクォリファイド・クラスタをカウントすべきであることを示す。ブロック４４８では、クラスタ・カウンタがインクリメントされるとともに、距離カウンタがｃ＿ｄｉｓｔａｎｃｅに再初期化される。次に、フローはＡ点を経て図４のブロック４０４に進み、距離閾値時間が経過する（すなわち距離カウンタが終了する）のを待ち、その後新たな第１のイベント（すなわち次のクォリファイド・クラスタ）の探索が開始される。
【００２５】
図示の実施形態では、現在のクォリファイド・クラスタが（ブロック４４８で）カウントされた後、距離カウンタがｃ＿ｄｉｓｔａｎｃｅに再初期化されることに留意されたい。したがって図示の実施形態では、サイズ・カウンタ、グラニュラリティ・カウンタ、および距離カウンタが０になるたびにクラスタ・カウンタがインクリメントされ、そのクロック時にはイベントは発生しない。
【００２６】
図４および図５の方法は、ソフトウェア、ハードウェア、ファームウェア、またはそれらの任意の組合せで実施できる。例えば、一実施形態において、図２の制御回路２３４は、内部カウンタと、内部カウンタ２３８およびクラスタ・カウンタ１からＮを適切にインクリメント、ディクリメント、およびリセットするのに必要なあらゆる論理回路とを含んでいる。制御回路２３４は、カウンタ制御レジスタ１からＮの読み出しおよび書き込みに必要なあらゆる論理回路をさらに含んでいてもよい。他の実施形態では内部カウンタを異なる方法で実施してもよい。例えば、０までカウントダウンする代わりに、他の実施形態では閾値に達するまでカウンタをインクリメントしてもよい。
【００２７】
図６に図４および図５の方法の理解をさらに助けるクラスタ化の例６００を示す。図６の例は、一連のクロック（０から４２の番号を付す）と各クロックにおけるグラニュラリティ・カウンタ、サイズ・カウンタ、距離カウンタ、およびクラスタ・カウンタの値を示している。クロック０で、すべての値は初期化される。グラニュラリティ・カウンタ、距離カウンタおよびクラスタ・カウンタはすべて０に設定され、サイズ・カウンタはｃ＿ｓｉｚｅに設定されるが、図示の例ではｃ＿ｄｉｓｔａｎｃｅは６クロックサイクル、ｅ＿ｓｉｚｅは４イベント、ｃ＿ｇｒａｎｕｌａｒｉｔｙは２クロックサイクルである。最初の数サイクルの間、すなわち３クロックサイクルまで、すべての値が初期値のまま維持される（図４の判定ダイヤモンド４０８のループに対応する）（距離カウンタがクロック０で０に初期化されるので、図４の判定ダイヤモンド４０６とブロック４１４のループがバイパスされることにも留意されたい）。第１のイベント６０２がクロック３で検出される（判定ダイヤモンド４０８に対応する）。したがって、グラニュラリティ・カウンタはｃ＿ｇｒａｎｕｌａｒｉｔｙに初期化され、サイズ・カウンタはディクリメントされる（図４のブロック４１０に対応する）。例６００において、グラニュラリティ・カウンタおよびサイズ・カウンタの新たな値は、第１のイベント６０２の次のクロックで有効になり、したがって、クロック４では、グラニュラリティ・カウンタは２に初期化されサイズ・カウンタは３になることに留意されたい。この次のクロック（クロック４）でイベントが検出されないので、グラニュラリティ・カウンタは、各クロックで再びディクリメントされる（図４の判定ダイヤモンド４１２、判定ダイヤモンド４２２、およびブロック４１６に対応する）。クロック５では、グラニュラリティ・カウンタは終了しておらず、したがってグラニュラリティ・カウンタは再びディクリメントされる（ブロック４１６）ことに留意されたい。ディクリメントされた値は次のクロック（クロック６）で出現する。
【００２８】
しかしクロック６において、イベント６０３が検出される（判定ダイヤモンド４１２からブロック４２０へ進むフローに対応する）。イベント６０３が検出され、イベント６０２とイベント６０３間の距離は最大２クロックサイクル（すなわちｃ＿ｇｒａｎｕｌａｒｉｔｙクロックサイクル）なので、イベント６０３は、イベント６０２と同一クラスタにあるとみなされる。イベント６０３が検出されたので、グラニュラリティ・カウンタはｃ＿ｇｒａｎｕｌａｒｉｔｙに再初期化され、サイズ・カウンタはディクリメントされる（図４のブロック４２０に対応する）。したがって、次のクロック（クロック７）で、これらの新たな値が出現する。すなわちクロック７において、サイズ・カウンタは２となり、グラニュラリティ・カウンタは再び２になる。これは検出された第１のクラスタであるので、距離カウンタは、第１のクォリファイド・クラスタの検出後にリセットされるまで０のままである。これにより第１のクォリファイド・クラスタは常時、確実にカウントされる。
【００２９】
クロック９で、４番目のイベントが検出される。サイズ・カウンタは再びディクリメントされ、グラニュラリティ・カウンタは、再度ｃ＿ｇｒａｎｕｌａｒｉｔｙに再初期化される。次のクロック（クロック１０）で、サイズ・カウンタが終了（０になる）したので、クォリファイド・クラスタ６０４が検出されたことがわかる。図６からわかるように、隣接する任意の２イベント間の時間が最大２クロックサイクルであるので、クォリファイド・クラスタ６０４の最初の４つのイベントは、サイズ閾値およびグラニュラリティ閾値を満足している。さらに距離カウンタも終了するので（これが最初に検出されたクォリファイド・クラスタであるので）、クォリファイド・クラスタ６０４はカウントされることになるが、そのカウントは、クォリファイド・クラスタ６０４の終了が検出されてから行われる。したがって、フローは、現在のクォリファイド・クラスタの終了が検出されるまで、判定ダイヤモンド４４０と４４４およびブロック４４２と４４６を通じて進行する。クロック２１で、図６の第１ストライプ付きバー６１６で示すように、グラニュラリティ・カウンタが終了し、その結果現在のクォリファイド・クラスタが終了したことが示される。この時点で、グラニュラリティ・カウンタ、サイズ・カウンタおよび距離カウンタはすべて終了する（すなわち０になる）ことに留意されたい。この時点で、距離カウンタもｃ＿ｄｉｓｔａｎｃｅに再初期化され、サイズ・カウンタもｃ＿ｓｉｚｅに再初期化され、図６のクロック２２に見られるように（これらの値は次のクロックにおいて有効になるので）クラスタ・カウンタがインクリメントされる（ブロック４４８に対応する）。その後、新しいクォリファイド・クラスタの探索が始まる（図４のＡ点に対応する）。
【００３０】
クロック２３で、イベント６０５が発生するが、距離カウンタがまだ終了していないのでこのイベントは第１のイベントとして検出されない。図示の実施形態では、どのイベントも距離カウンタが終了するまでは第１のイベントとして検出されない（図４の判定ダイヤモンド４０６とブロック４１４のループに対応する）。したがって、第１のイベントはクロック２８におけるイベント６０６で初めて検出される（判定ダイヤモンド４０８による）。イベント６０６はイベント６０５で始まるイベント・クラスタで発生するが、パフォーマンス・モニタ１０４は、次のクォリファイド・クラスタの探索を距離カウンタが終了するまで待つので、イベント６０６が第１のイベントとして検出される。距離カウンタが終了するまでサイズ・カウンタはディクリメントされず、グラニュラリティ・カウンタはセットされないことにも留意されたい。
【００３１】
したがって、クロック２８において、新たな第１のイベント６０６が検出される。上記のごとく、フローは、クロック３２で発生するサイズ・カウンタの終了まで、判定ダイヤモンド４１２を通じて進行する。この時点で、他のクォリファイド・クラスタ６０８が検出され、フローは、クォリファイド・クラスタ６０８の終了が検出される図５のＣ点に進む（判定ダイヤモンド４４０と４４４、およびブロック４４２と４４６に対応する）。したがって、クロック３４で、サイズ・カウンタ、グラニュラリティ・カウンタ、および距離カウンタがすべて終了しイベントも発生せず、図６の第２ストライプ付きバー６２６で示すように、クォリファイド・クラスタ６０８の終了が検出される。同様にこの時点で、距離カウンタはｃ＿ｄｉｓｔａｎｃｅに再初期化され、サイズ・カウンタはｃ＿ｓｉｚｅに再初期化され、図６のクロック３５に見られるように（これらの値は次のクロックにおいて有効になるので）、クラスタ・カウンタがインクリメントされる（ブロック４４８に対応する）。その後、新しいクォリファイド・クラスタの探索が始まる（図４のＡ点に対応する）。
【００３２】
ｃ＿ｄｉｓｔａｎｃｅが終了するまで、新たな第１のイベントは検出されない。したがって、第２ストライプ付きバー６２６の後のイベント６１０で始まる４つのイベントはいずれも新たな第１のイベントとしては検出されない。距離カウンタは引き続きディクリメントし、サイズ・カウンタおよびグラニュラリティ・カウンタはそれぞれの値を維持する。しかし、クロック４１またはそれ以降に発生する次のイベント（図示されない）は新たな第１のイベントとみなされ、フローは続いて上記のごとく進行する。
【００３３】
図６の例では、クォリファイド・クラスタ６０４と、クォリファイド・クラスタ６０８の２つのクォリファイド・クラスタがカウントされた。したがって、サイズ閾値（ｃ＿ｓｉｚｅ）およびグラニュラリティ閾値（ｃ＿ｇｒａｎｕｌａｒｉｔｙ）に加えて、距離閾値時間（ｃ＿ｄｉｓｔａｎｃｅ）を使用することにより、２つのクォリファイド・クラスタだけが例６００の一連のイベントからカウントされた。図６からわかるように、クラスタ・カウンタは、サイズ・カウンタ、グラニュラリティ・カウンタ、および距離カウンタのすべてが０でイベントが発生しないときにだけインクリメントされる（クロック２１および３４で発生する）。したがって、カウントされるクォリファイド・クラスタ数は、ユーザが希望として設定する種々の閾値を使用することにより、ユーザがプロファイルしたいと望む分布に応じて変化する。付加的な距離閾値時間を使用することにより、データ処理システムの性能をよりよく特性記述できるように改善されたプロファイリングが得られることも理解されよう。
【００３４】
例示の実施形態では、後続のクォリファイド・クラスタの検出は、距離カウンタが終了して初めて開始されることに留意されたい。すなわち、クォリファイド・クラスタは距離閾値時間の終了後においてのみ探索された。しかし、別の方法では、クォリファイド・クラスタは距離カウンタがディクリメントされている間も検出できる。すなわち、距離カウンタの終了を待機している間に発生するイベントを無視するのではなく、それらのイベントも判定ダイヤモンド４０８の「検出される第１のイベント」として検出できる。しかし、この代替方法では、あるクォリファイド・クラスタを検出する際、そのクォリファイド・クラスタがクラスタ・カウンタによってカウントされるには先行のクォリファイド・クラスタから少なくとも距離閾値時間だけ離れているか否かが判定されなければならない。すなわち、この代替方法を用いて決定されるすべてのクォリファイド・クラスタがクラスタ・カウンタによってカウントされるとは限らない。この代替方法を用いた一実施形態において、クォリファイド・クラスタは先にカウントされたクォリファイド・クラスタから少なくとも距離閾値時間経過している場合にカウントされる。この代替方法を用いた別の一実施形態では、先行のクォリファイド・クラスタから少なくとも距離閾値時間経過している場合には、クォリファイド・クラスタは、そのクォリファイド・クラスタがクラスタ・カウンタによってカウントされたか否かにかかわらずカウントされる。したがって、当業者は、本明細書で説明した種々の閾値（すなわちサイズ閾値、グラニュラリティ閾値、および距離閾値時間）を用いて、所望のデータ処理システムの性能をプロファイルする種々の異なる方法があることを理解できよう。
【００３５】
例えば、カウントされたか否かにかかわらず、先行のクォリファイド・クラスタから少なくとも距離閾値時間後に発生したこれらのクォリファイド・クラスタだけとする、上に説明した方法を図６の例６００に用いれば、異なるプロファイルになるであろう。図６に戻り、この代替方法を用いると、クォリファイド・クラスタ６０４、クォリファイド・クラスタ６１８、およびクォリファイド・クラスタ６２０という、３つのクォリファイド・クラスタが検出されるであろう。これらのクラスタはサイズ閾値およびグラニュラリティ閾値の両方を満足しているので、これらのクラスタのそれぞれはクォリファイド・クラスタとして検出される。これらのクラスタは、各先行クラスタの終了と後続クラスタの開始の間の距離がグラニュラリティ閾値より大きく、したがって同じクォリファイド・クラスタの一部と考えることができないので、それぞれが別のクォリファイド・クラスタとみなされる。例えば、クロック１８（クォリファイド・クラスタ６０４の最後のイベント）とクロック２３（クォリファイド・クラスタ６１８の開始）間の時間は２クロックサイクルより大きい。しかし、検出された３つのクォリファイド・クラスタのうち、ただ１つのクォリファイド・クラスタ（クォリファイド・クラスタ６０４）だけがカウントされる。クォリファイド・クラスタ６１８は、クォリファイド・クラスタ６０４とクォリファイド・クラスタ６１８間の距離がこの距離時間閾値を満足しないのでカウントされない。同様に、クォリファイド・クラスタ６２０は、クォリファイド・クラスタ６１８（カウントはされなかったが、先行のクォリファイド・クラスタではある）とクォリファイド・クラスタ６２０間の距離が距離時間閾値を満足しないのでカウントされない（この代替方法の実施形態では、カウントされるか否かにかかわらず、それぞれのクォリファイド・クラスタの終了の検出後、距離カウンタはｃ＿ｄｉｓｔａｎｃｅに再初期化されることに留意されたい）。したがって、図４および５の方法と比較すると、この代替方法異なるクォリファイド・クラスタを検出し、検出されたクォリファイド・クラスタの或るサブセットだけをカウントできる。図４および図５の方法では、次のクォリファイド・クラスタを検出する前に距離カウンタが終了するのを常に待っているので、図４および図５の方法では実際にカウントされるクォリファイド・クラスタだけを検出している。また、この代替方法の実施形態では、クォリファイド・クラスタ６１８を検出するが、図４および図５の方法ではクォリファイド・クラスタにおいて第１のイベントの発生が可能なので、図４および図５の方法ではクォリファイド・クラスタ６１８の一部だけ（すなわちクォリファイド・クラスタ６０８）を検出する。
【００３６】
さらに別の例として、クォリファイド・クラスタはすべて検出されるが以前にカウントされたクォリファイド・クラスタから少なくとも距離閾値時間経過したものだけがカウントされる代替方法を用いた場合も、また異なるプロファイルになるであろう。例えば、再び図６を参照すると、同じ３つのクォリファイド・クラスタ、すなわちクォリファイド・クラスタ６０４、クォリファイド・クラスタ６１８、およびクォリファイド・クラスタ６２０が検出されるであろう。しかし、この例では、クォリファイド・クラスタのうちの２つ、すなわちクォリファイド・クラスタ６０４およびクォリファイド・クラスタ６２０がカウントされる。距離閾値時間を満足するか否かの判定は、それぞれのクォリファイド・クラスタについて別々に行われるので、２つのクォリファイド・クラスタがカウントされる。例えば、上の２つのパラグラフで説明した代替方法と同様に、クォリファイド・クラスタ６０４は、それが最初に検出されたクォリファイド・クラスタであるのでカウントされる。また、クォリファイド・クラスタ６１８をカウントするか否かを判定するため、カウントされたクォリファイド・クラスタ６０４と検出されたクォリファイド・クラスタ６１８間のクラスタ距離が距離閾値時間を満足するか否かが判定される。しかし、図６の例では、クラスタ距離が距離閾値時間を満足しないのでカウントされない。ただし、上の２つのパラグラフで説明した代替方法と異なり、クォリファイド・クラスタ６２０をカウントするか否かを判定するため、検出されたクォリファイド・クラスタ６２０とカウントされたクォリファイド・クラスタ６０４間のクラスタ距離が距離閾値時間を満足するか否かが判定される。この判定は図６の例で行なっているので、クォリファイド・クラスタ６２０は、この場合もカウントされたクォリファイド・クラスタとなる。これは、上の実施形態では、クォリファイド・クラスタ６１８がたとえカウントされなくてもクォリファイド・クラスタ６１８と検出されたクォリファイド・クラスタ６２０間のクラスタ距離を使用するので、上の２つのパラグラフに説明した代替方法の上記実施形態とは異なっている（代替方法のこの別の実施形態において、距離カウンタはカウントされないクォリファイド・クラスタの終了が検出されてもｃ＿ｄｉｓｔａｎｃｅに再初期化されず、その代わりに、距離カウンタは、カウントされたクォリファイド・クラスタの終了を検出した後にｃ＿ｄｉｓｔａｎｃｅに再初期化されることに留意されたい）。
【００３７】
当業者は、図４および図５のフローを修正し、距離カウンタを使用してクォリファイド・クラスタをカウントするこれらの代替方法を考慮できるということに留意されたい。また、当業者は、距離閾値時間の種々の使い方によって、カウントされるクォリファイド・クラスタ数をプロファイルしたい分布に応じて変えることができるということが理解できよう。したがって、追加の距離閾値時間を使用することにより、データ処理システムの性能の改善された特性記述を得る自由度が増すことが理解されよう。
【００３８】
以上、本明細書では、本発明の特定の実施形態について説明した。しかし、当業者は、種々の変形および変更が添付の請求項に記載される本発明の精神から逸脱することなく可能であることが理解できよう。例えば、ここで説明した方法はソフトウェア、ハードウェア、ファームウェア、またはそれらの任意の組合せとして実施できる。例えば、本明細書で教示された方法または方法の部分は１つまたは複数のコンピュータハードディスク、フロッピーディスク、３．５インチディスク、コンピュータ記憶テープ、磁気ドラム、スタティックランダムアクセスメモリ（ＳＲＡＭ）セル、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）セル、電気的に消去可能な（ＥＥＰＲＯＭ、ＥＰＲＯＭ、フラッシュ）セル、不揮発性セル、強誘電体または強磁性体メモリ、コンパクトディスク（ＣＤ）、レーザーディスク、光ディスク、およびコンピュータ読み取り可能なすべての類似のメディアに実施されてもよい。また、ブロック図は図示と異なるブロックを含んでもよく、図示より多いまたは少ないブロックを含んでもよく、図示と構成が異なってもよい。また、フロー図はより多くのまたはより少ないステップを含むように構成が異なってもよく、または多重のステップにまたは互いに同時に実行される複数ステップに分離できるステップを有するように構成が異なってもよい。したがって、明細書および図面は限定的な意味を有するものではなく、むしろ例を示すものとみなされるべきであり、このような変形はすべて本発明の範囲に含まれるものとする。
【００３９】
本発明の利益、他の利点、および課題の解決方法を特定の実施形態に関して上に説明した。しかし、その利益、利点、問題の解決方法とともに、今後発生またはより明白にされる利益、利点、または解決方法をもたらし得る任意の１つまたは複数の要素も、請求項のいずれか１項または全項に関する重大な、必要な、または本質的な特徴または要素と解釈されるべきでない。本明細書で使用しているように、用語「備えている（ｃｏｍｐｒｉｓｅｓ）」、「備えた（ｃｏｍｐｒｉｓｉｎｇ）」、またはその任意の変形は、列記した要素を備えるプロセス、方法、物品、または装置がそれらの要素のみを包含するのではなく、明白には列記していない、すなわちそのようなプロセス、方法、物品、または装置に固有の他の要素を含むことができるように非排他的な包含をカバーするものとする。
【図面の簡単な説明】
【００４０】
【図１】本発明の一実施形態によるデータ処理システムのブロック図。
【図２】本発明の一実施形態による図１のデータ処理システムのパフォーマンス・モニタのブロック図。
【図３】本発明の一実施形態によるイベントのクラスタ化の一例。
【図４】本発明の一実施形態による図２のパフォーマンス・モニタの動作。
【図５】本発明の一実施形態による図２のパフォーマンス・モニタの動作。
【図６】本発明の一実施形態によるイベントのクラスタ化の他の例。
【図１】
0004463686.tif 000002
【図２】
0004463686.tif 000003
【図３】
0004463686.tif 000004
【図４】
0004463686.tif 000005
【図５】
0004463686.tif 000006
【図６】
0004463686.tif 000007