(57)【要約】  データ処理システム内のイベントを監視する装置及び方法が提供される。装置は、データ処理システム内の第１のイベントの発生を監視し、第１のイベントのｍ番目ごとにその発生を示す第１の信号をアサートする第１のイベント監視回路を備え、ここでｍは１以上の整数である。加えて、データ処理システム内の第２のイベントの発生を監視し、第２のイベントのｎ番目ごとにその発生を示す第２の信号をアサートする第２のイベント監視回路が使用され、ここでｎは１以上の整数である。次いで履歴維持回路は、アサートされた第１及び第２の信号に応じて更新されるイベント履歴情報を維持する。さらに履歴分析回路は、イベント履歴情報が第１のイベントの発生と第２のイベントの発生との間の比率が許容範囲外であることを示す場合、報告条件を検出するために、分析トリガに応答してイベント履歴情報を分析する。次いで履歴分析回路は、報告条件の検出に応答して報告信号をアサートする。これは、データ処理システム内でイベントの比率を監視する、特に効率的で効果的な仕組みを提供する。
2022501700.tif 000002
【特許請求の範囲】
【請求項１】
データ処理システム内の第１のイベントの発生を監視し、前記第１のイベントのｍ番目ごとにその発生を示す第１の信号をアサートし、ここでｍは１以上の整数である第１のイベント監視回路と、
前記データ処理システム内の第２のイベントの発生を監視し、前記第２のイベントのｎ番目ごとにその発生を示す第２の信号をアサートし、ここでｎは１以上の整数である第２のイベント監視回路と、
前記アサートされた第１及び第２の信号に応じて更新されるイベント履歴情報を維持する、履歴維持回路と、
前記イベント履歴情報が、前記第１のイベントの前記発生と前記第２のイベントの前記発生との間の比率が許容範囲外であることを示す場合、報告条件を検出するために、分析トリガに応答して前記イベント履歴情報を分析する履歴分析回路と
を備える装置であって、前記履歴分析回路は、前記報告条件の検出に応答して報告信号をアサートする、装置。
【請求項２】
前記履歴分析回路は、前記イベント履歴情報が、前記比率が選択された閾値に達したことを示すときに、前記比率が前記許容範囲外であることを検出するよう配置構成される、請求項１に記載の装置。
【請求項３】
前記分析トリガは、前記イベント履歴情報が更新されるたびに生成される、請求項１又は請求項２に記載の装置。
【請求項４】
前記履歴維持回路は、複数のエントリを具備する履歴記憶部を備え、ここで各エントリは、履歴データのアイテムを格納するよう配置構成され、履歴データの各アイテムは、前記第１の信号のアサート又は前記第２の信号のアサートを示す、請求項１から３までのいずれかに記載の装置。
【請求項５】
前記履歴維持回路は、前記第１の信号及び前記第２の信号を受信し、前記受信した第１及び第２の信号に応じて前記履歴記憶部を更新させるよう配置構成された更新回路をさらに備える、請求項４に記載の装置。
【請求項６】
前記履歴記憶部は、ｐ個のエントリを備えるシフト・レジスタとして配置構成され、前記更新回路からの更新トリガに応答して、履歴データの新しいアイテムを前記シフト・レジスタ内の先頭のエントリに追加する、請求項５に記載の装置。
【請求項７】
履歴データの新しいアイテムのそれぞれが追加されるときに、前記シフト・レジスタ内の履歴データの最も古いアイテムが捨てられ、それにより前記シフト・レジスタは、履歴データの最新のｐ個のアイテムを維持する、請求項６に記載の装置。
【請求項８】
前記シフト・レジスタは、直列入力並列出力型シフト・レジスタであり、前記履歴分析回路は、前記分析トリガに応答して、履歴データのｐ個のアイテムを受信するように、前記シフト・レジスタの出力に接続される、請求項６又は請求項７に記載の装置。
【請求項９】
前記シフト・レジスタの入力は、前記第１の信号と結合され、その結果前記更新トリガが発生すると、前記シフト・レジスタ内の前記先頭のエントリに加えられた前記履歴データの前記新しいアイテムは、前記第１の信号の現在の値を示す、請求項６から８までのいずれかに記載の装置。
【請求項１０】
前記更新回路は、前記第１の信号又は前記第２の信号の一方がアサートされると、前記更新トリガを発行するが、前記第１の信号及び前記第２の信号が同時にアサートされると、前記更新トリガを省略するよう配置構成される、請求項９に記載の装置。
【請求項１１】
前記履歴データの各アイテムは、前記第１の信号のアサートを示す第１の値及び前記第２の信号のアサートを示す第２の値を格納し、前記履歴分析回路は、前記履歴記憶部の前記エントリに格納されている前記値を参照することで、前記比率がいつ前記許容範囲外になるかを判断するために使用される閾値情報を特定する、閾値指示記憶部を備える、請求項４から１０までのいずれかに記載の装置。
【請求項１２】
前記閾値情報は、前記履歴記憶部の前記エントリ内の前記第１の値の発生回数についての閾値を提供する、請求項１１に記載の装置。
【請求項１３】
前記報告信号がアサートされるかどうかに応じて、前記データ処理システムの割込コントローラに例外信号をアサートするよう配置構成される、例外信号生成回路をさらに備える、請求項１から１２までのいずれかに記載の装置。
【請求項１４】
前記履歴維持回路によって維持される前記イベント履歴情報に対して決定された回数の更新が行われるまで、前記報告信号に基づく前記例外信号の生成を抑制するために使用されるウォームアップ制限回路をさらに備える、請求項１３に記載の装置。
【請求項１５】
前記ウォームアップ制限回路は、前記イベント履歴情報に対して行われた更新回数を示す更新カウント値を維持する更新カウンタ記憶部を備え、前記更新回数が制限閾値に達したときに制限信号をアサートするよう配置構成され、且つ
前記例外信号生成回路は、前記報告信号と前記制限信号との両方がアサートされたときに、前記例外信号をアサートするよう配置構成される、請求項１４に記載の装置。
【請求項１６】
ｍは１より大きく、且つ
前記第１のイベント監視回路は、リセット・イベント以降に観測された前記第１のイベントの発生回数を示す第１のイベント・カウント値を維持する第１のイベント・カウンタ記憶部を備え、前記発生回数が前記値ｍに達したときに前記第１の信号をアサートし、その後前記リセット・イベントがトリガされると前記第１のイベント・カウント値を初期値にリセットするよう配置構成される、請求項１から１５までのいずれかに記載の装置。
【請求項１７】
ｎは１より大きく、且つ
前記第２のイベント監視回路は、リセット・イベント以降に観測された前記第２のイベントの発生回数を示す第２のイベント・カウント値を維持する第２のイベント・カウンタ記憶部を備え、前記発生回数が前記値ｎに達したときに前記第２の信号をアサートし、その後前記リセット・イベントがトリガされると前記第２のイベント・カウント値を初期値にリセットするよう配置構成される、請求項１から１６までのいずれかに記載の装置。
【請求項１８】
前記ｍ及びｎの値の指示を維持する、設定可能な閾値記憶部をさらに備える、請求項１６又は請求項１７に記載の装置。
【請求項１９】
データ処理システム内のイベントを監視する方法であって、
前記データ処理システム内の第１のイベントの発生を監視するステップ、及び前記第１のイベントのｍ番目ごとにその発生を示す第１の信号をアサートするステップであって、ここでｍは１以上の整数であるステップと、
前記データ処理システム内の第２のイベントの発生を監視するステップ、及び前記第２のイベントのｎ番目ごとにその発生を示す第２の信号をアサートするステップであって、ここでｎは１以上の整数であるステップと、
前記アサートされた第１及び第２の信号に応じて更新されるイベント履歴情報を維持する、履歴維持回路を使用するステップと、
前記イベント履歴情報が、前記第１のイベントの前記発生と前記第２のイベントの前記発生との間の比率が許容範囲外であることを示す場合、報告条件を検出するために、分析トリガに応答して前記イベント履歴情報を分析する履歴分析回路を使用するステップと、
前記報告条件の検出に応答して、報告信号をアサートするステップと
を含む方法。
【請求項２０】
データ処理システム内の第１のイベントの発生を監視し、前記第１のイベントのｍ番目ごとにその発生を示す第１の信号をアサートし、ここでｍは１以上の整数である第１のイベント監視手段と、
前記データ処理システム内の第２のイベントの発生を監視し、前記第２のイベントのｎ番目ごとにその発生を示す第２の信号をアサートし、ここでｎは１以上の整数である第２のイベント監視手段と、
前記アサートされた第１及び第２の信号に応じて更新されるイベント履歴情報を維持する、履歴維持手段と、
前記イベント履歴情報が、前記第１のイベントの前記発生と前記第２のイベントの前記発生との間の比率が許容範囲外であることを示す場合、報告条件を検出するために、分析トリガに応答して前記イベント履歴情報を分析する履歴分析手段と
を備える装置であって、前記履歴分析手段は、前記報告条件の検出に応答して報告信号をアサートする、装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本技法は、データ処理システム内のイベントを監視する装置及び方法に関する。
【背景技術】
【０００２】
データ処理システムには、データ処理システムの処理性能を示す性能監視データを生成する性能監視回路が設けられることが知られている。たとえば、性能監視回路は、命令の実行又はキャッシュ・ミスなど、データ処理システム内で起こるイベントの発生をカウントすることができる。カウンタが所与の値に達したときに割込みを生成することができ、その結果多数のキャッシュ・ミスなどの性能上の問題が発生すると、処理システムがトリガされ、性能監視データに基づく所与の動作、たとえば、性能監視データによって特定された性能上の問題に対処するための動作を実行できる。
【０００３】
性能監視回路は、複数のイベントについて別個のイベント・カウントを維持できる。データ処理システム内の性能を監視するときに、いくつかのインスタンスでは、イベントの比率を効率的且つ確実に監視できることが望ましいであろう。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】米国特許出願公開第２０１４／００１３０２０号
【発明の概要】
【課題を解決するための手段】
【０００５】
１つの例示的な配置構成では、データ処理システム内の第１のイベントの発生を監視し、第１のイベントのｍ番目ごとにその発生を示す第１の信号をアサートし、ここでｍは１以上の整数である第１のイベント監視回路と、データ処理システム内の第２のイベントの発生を監視し、第２のイベントのｎ番目ごとにその発生を示す第２の信号をアサートし、ここでｎは１以上の整数である第２のイベント監視回路と、アサートされた第１及び第２の信号に応じて更新されるイベント履歴情報を維持する履歴維持回路と、イベント履歴情報が、第１のイベントの発生と第２のイベントの発生との間の比率が許容範囲外であることを示す場合、報告条件を検出するために、分析トリガに応答してイベント履歴情報を分析する履歴分析回路とを備える装置が提供され、ここで、履歴分析回路は、報告条件の検出に応答して、報告信号をアサートする。
【０００６】
別の例示的な配置構成では、データ処理システム内のイベントを監視する方法が提供され、該方法は、データ処理システム内の第１のイベントの発生を監視するステップ、及び第１のイベントのｍ番目ごとにその発生を示す第１の信号をアサートするステップであって、ここでｍは１以上の整数であるステップと、データ処理システム内の第２のイベントの発生を監視するステップ、及び第２のイベントのｎ番目ごとにその発生を示す第２の信号をアサートするステップであって、ここでｎは１以上の整数であるステップと、アサートされた第１及び第２の信号に応じて更新されるイベント履歴情報を維持する履歴維持回路を使用するステップと、イベント履歴情報が、第１のイベントの発生と第２のイベントの発生との間の比率が許容範囲外であることを示す場合、報告条件を検出するために、分析トリガに応答してイベント履歴情報を分析する履歴分析回路を使用するステップと、報告条件の検出に応答して、報告信号をアサートするステップとを含む。
【０００７】
さらに別の例示的な配置構成では、データ処理システム内の第１のイベントの発生を監視し、第１のイベントのｍ番目ごとにその発生を示す第１の信号をアサートし、ここでｍは１以上の整数である第１のイベント監視手段と、データ処理システム内の第２のイベントの発生を監視し、第２のイベントのｎ番目ごとにその発生を示す第２の信号をアサートし、ここでｎは１以上の整数である第２のイベント監視手段と、アサートされた第１及び第２の信号に応じて更新されるイベント履歴情報を維持する履歴維持手段と、イベント履歴情報が、第１のイベントの発生と第２のイベントの発生との間の比率が許容範囲外であることを示す場合、報告条件を検出するために、分析トリガに応答してイベント履歴情報を分析する履歴分析手段とを備える装置が提供され、ここで、履歴分析手段は、報告条件の検出に応答して、報告信号をアサートする。
【０００８】
本技法を、以下の添付図面に示すその実例を参照しながら、単なる例示としてさらに説明することにする。
【図面の簡単な説明】
【０００９】
【図１】性能監視回路を備えるデータ処理システムを、模式的に示す図である。
【図２】一実例による、図１の性能管理ユニット内に設けられる構成要素を示す構成図である。
【図３】１つの特定の例示的な実施態様による、図２の性能管理ユニット内に設けられる構成要素を示す図である。
【図４】１つの特定の例示的な実施態様による、図２の性能管理ユニット内に設けられる構成要素を示す図である。
【図５】１つの例示的な実施態様による、図２のイベント監視回路の動作を示す流れ図である。
【図６】１つの例示的な実施態様による、履歴維持回路の動作を示す流れ図である。
【図７】１つの例示的な実施態様による、履歴分析回路の動作を示す流れ図である。
【図８】１つの例示的な実施態様による、ウォームアップ制限回路の動作を示す流れ図である。
【図９】１つの例示的な実施態様による、例外信号生成回路の動作を示す流れ図である。
【図１０】テーブル結合動作を示す図である。
【図１１】１つの例示的な実施態様において、本明細書に記載の性能監視技法を使用して、図１０のテーブル結合動作を実行するために使用される可能性がある相異なるアルゴリズムを切り替えるかどうかを、どのようにして判断できるかを示す流れ図である。
【発明を実施するための形態】
【００１０】
前述のように、データ処理システム内の性能を監視するときに、いくつかのインスタンスでは、イベントの比率を効率的且つ確実に監視できることが望ましいであろう。米国特許出願公開第２０１４／００１３０２０号は、複数のイベントについて、別個のイベント・カウントを維持できるシステムについて説明しており、ここで２つのイベントのイベント・カウントの比率は、特定の時点で決定でき、比率が所望のレベルを超える場合、例外がトリガされる。性能監視を使用するとき、イベントの比率を考慮することは有用である。というのは、たとえばかかる情報を使用して、アプリケーション実行時の挙動によりよく適合するように、システム構成に動的な変更を加えることができるからである。しかし上記の技法では、比率分析を、制限された離散的な時点でしか実行することができない。具体的には、第１のイベント・カウントが閾値に達した時点で、第２のイベント・カウントもその閾値に達したかどうかが判断され、達した場合は例外トリガを発行できる。しかし達していない場合は、両方のカウンタがリセットされる。したがって上記の技法では、比率を、離散的な閉じた間隔の中で超える必要があることが理解されよう。かかる手法は、様々な状況で有用であり得る比率を確認するための単純な仕組みを提供できるが、分母が閉じた間隔でその臨界値に達することにより、比率を超えるときに決して検出されない特定の状況をもたらすことがある。
【００１１】
本明細書で説明する技法は、データ処理システム内で性能監視中にイベントの比率を分析する、改善された仕組みを提供する。
【００１２】
例示的な配置構成では、データ処理システム内で性能監視を実行する装置が提供される。装置は、データ処理システム内の第１のイベントの発生を監視し、第１のイベントのｍ番目ごとにその発生を示す第１の信号をアサートする第１のイベント監視回路を備え、ここでｍは１以上の整数である。さらに、第２のイベント監視回路は、データ処理システム内の第２のイベントの発生を監視し、第２のイベントのｎ番目ごとにその発生を示す第２の信号をアサートするために使用され、ここでｎは１以上の整数である。さらに、アサートされた第１及び第２の信号に応じて更新されるイベント履歴情報を維持する、履歴維持回路が提供される。
【００１３】
次いで履歴分析回路は、イベント履歴情報が、第１のイベントの発生と第２のイベントの発生との間の比率が許容範囲外であることを示す場合、報告条件を検出するために、分析トリガに応答してイベント履歴情報を分析する。次いで履歴分析回路は、報告条件を検出すると、報告信号をアサートするよう配置構成され得る。次いで報告信号を使用して、たとえば、割込コントローラに例外信号をアサートすることが適切かどうかを判断できる。
【００１４】
上記の技法によれば、特定の離散的な時点で比率を超えたかどうかを評価しようとするのではなく、たとえば、第１のイベント・カウントが所定のレベルに達したときに、イベント履歴情報を使用することにより、所望の比率の連続的な監視が実行でき、したがって上記で論じた技法の制約を緩和できる。説明する技法によれば、イベント履歴情報は、第１及び第２のイベント監視回路によってアサートされた第１及び第２の信号に応じて、履歴維持回路で継続的に維持される。次いで、分析トリガが受信されるたびに、比率が許容範囲を超えた状況を検出するために、そのイベント履歴情報が分析される。これは、２つのイベントの発生率を継続的に監視する効果的な仕組みを提供し、それにより、上記の装置が使用されるシステムの性能のリアルタイム監視に関して、大幅な改善を可能にする。
【００１５】
履歴分析回路が、いつ比率が許容範囲外になるかを判断できるやり方がいくつかある。しかし、１つの例示的な配置構成では、履歴分析回路は、イベント履歴情報が、比率が選択された閾値に達したことを示すときに、比率が許容範囲外であることを検出するよう配置構成される。許容範囲は、必要に応じて上限閾値及び下限閾値によってエンコードできるが、１つの実施態様では、選択された閾値を単一の閾値を使って特定し、範囲の他端は、たとえば論理値０と推定できる。選択された閾値は、様々なやり方で、たとえば、必要に応じて整数値又は小数値を使用して特定できる。
【００１６】
履歴分析回路にイベント履歴情報を分析させるために使用される分析トリガは、様々な形態をとることができる。ただし一実例では、分析トリガは、イベント履歴情報が更新されるたびに生成される。したがって、これにより、対象となる比率の継続的な監視が可能になり、比率に影響を与える可能性のある情報が生成されるたびに、確実に比率を再評価できる。
【００１７】
履歴維持回路は様々な形態をとることができるが、１つの例示的な実施態様では、複数のエントリを具備する履歴記憶部を備え、各エントリは、履歴データのアイテムを保存するよう配置構成され、履歴データの各アイテムは、第１の信号のアサート又は第２の信号のアサートを示す。したがって、履歴記憶部内の履歴データの個々のアイテムは、第１の信号又は第２の信号の個々のアサートを特定し、次いでその情報は、第１のイベント及び第２のイベントの発生率を分析するために使用される。
【００１８】
１つの例示的な実施態様では、履歴維持回路は、第１の信号及び第２の信号を受信し、受信した第１及び第２の信号に応じて履歴記憶部を更新させるよう配置構成された更新回路をさらに備える。
【００１９】
更新回路は、様々なやり方で動作することができる。更新回路は、たとえば、第１の信号又は第２の信号がアサートされるたびに、履歴記憶部を更新させることができる。しかし、本明細書で後から論じるように、１つの例示的な実施態様において、更新回路は、ある特定のシナリオでは、第１及び第２の信号がアサートされたときに更新を実行させない場合がある。具体的には、第１の信号と第２の信号との両方が同時にアサートされるときに更新を省くと、装置の大幅な簡素化を達成することができる。これにより一部の情報を失うことになる可能性があるが、相互の倍数ではないｍ及びｎの値を選択することで、これを大幅に軽減できる。
【００２０】
履歴記憶部は、様々なやり方で構築できるが、１つの例示的な実施態様では、ｐ個のエントリを備えるシフト・レジスタとして配置構成され、更新回路からの更新トリガに応答して、履歴データの新しいアイテムをシフト・レジスタ内の先頭のエントリに追加する。
【００２１】
かかる実施態様では、履歴記憶部は、履歴データの新しいアイテムがそれぞれ追加されるときに、シフト・レジスタ内の履歴データの最も古いアイテムが捨てられ、それによりシフト・レジスタは、履歴データの最新のｐ個のアイテムを維持するよう配置構成され得る。したがって、かかる配置構成では、シフト・レジスタは履歴情報のスライド窓を効果的に維持でき、維持される履歴データの量は、シフト・レジスタが備えるエントリ数に依存する。これは、シフト・レジスタのエントリの最初の入力（ｐｏｐｕｌａｔｉｏｎ）後のどの時点でも、履歴情報が同じ量に維持されることを意味し、比率が許容範囲外かどうかを判断する、履歴分析回路によって実行される分析を簡素化することができる。しかし、代替の配置構成では、時間の経過と共に履歴情報の量を増やすことができる、別の形態の履歴記憶部を維持でき、履歴分析回路は、次いで比率分析を実行するときに、記憶部内に維持される履歴情報の総量を考慮する必要があろう。
【００２２】
履歴記憶部がシフト・レジスタで形成される実施態様では、シフト・レジスタは、様々なやり方で構築することができる。１つの特定の実施態様では、シフト・レジスタは、直列入力並列出力型シフト・レジスタであり、履歴分析回路は、分析トリガに応答して、履歴データのｐ個のアイテムを受信するようにシフト・レジスタの出力に接続される。したがって、かかる配置構成では、履歴分析回路は、シフト・レジスタから履歴データの全アイテムを並列に取得することができ、比率分析動作の性能を向上させる。
【００２３】
シフト・レジスタの入力が第１の信号及び第２の信号情報に結合されるやり方は、様々な形態をとることができる。たとえば、第１の信号又は第２の信号のどちらか一方が、たとえば、第１の信号がアサートされるか又は第２の信号がアサートされるかに応じて、任意の時点でシフト・レジスタの入力に供給され得るように、多重化する配置構成を提供することができる。しかし、１つの特定の例示的な実施態様では、シフト・レジスタの入力が、単に第１の信号に結合されるよう配置構成することで、大幅な簡素化を達成することができる。次いで、更新トリガが発生すると、シフト・レジスタの先頭のエントリに追加された履歴データの新しいアイテムは、第１の信号の現在の値を示す。
【００２４】
１つの例示的な実施態様では、第１の信号は、それがアサートされているか否かに応じて、論理値１又は論理値０のどちらか一方であり得る。たとえば、論理値１は、第１の信号がアサートされたことを示してもよく、一方論理値０は、第１の信号がアサート解除されたことを示してもよい。第１の信号がアサートされ、それがシフト・レジスタの更新をトリガする状況において、そのインスタンスでは、第１の信号のアサートを特定するために、論理値１をシフト・レジスタの先頭のエントリに書き込むことができる。対照的に、第２の信号がアサートされても第１の信号がアサートされていない場合、第２の信号のアサートによりトリガされた更新動作中に、論理値０（すなわち、アサート解除された第１の信号の値）がシフト・レジスタの先頭のエントリに格納され得る。かかる配置構成では、シフト・レジスタのエントリの論理値０は、第２の信号のアサートのインスタンスを示すものとして解釈されるであろう。
【００２５】
かかる配置構成では、更新回路は、第１の信号又は第２の信号の一方がアサートされると、更新トリガを発行するが、第１の信号及び第２の信号が同時にアサートされると、更新トリガを省略するよう配置構成され得る。前述のように、これは、原理的に情報の多少の損失につながる可能性があるが、ｍ及びｎを適切に選択することで、ほとんどの実際上の状況において大幅に低減でき、したがって第１の信号しかシフト・レジスタの入力に接続する必要がないことで、回路の大幅な簡素化ができる。
【００２６】
１つの例示的な配置構成では、履歴データの各アイテムは、第１の信号のアサートを示す第１の値及び第２の信号のアサートを示す第２の値を格納し、履歴分析回路は、履歴記憶部のエントリに格納されている値を参照することで、比率がいつ許容範囲外になるかを判断するために使用される閾値情報を特定する、閾値指示記憶部を備える。
【００２７】
閾値情報は、様々な形態をとることができる。閾値情報は、たとえば、第１の値及び第２の値に対して、別々の閾値を指定できる。ただし、上記で論じたシフト・レジスタの実例など、履歴記憶部に所定の固定数のエントリがあるインスタンスでは、たとえば、履歴記憶部のエントリ内の第１の値の発生回数を特定するために、単にただ１つの閾値を使用するだけで、閾値情報を提供できる。
【００２８】
１つの例示的な実施態様では、装置は、報告信号がアサートされるかどうかに応じて、データ処理システムの割込コントローラに例外信号をアサートするよう配置構成された、例外信号生成回路をさらに備える。例外信号生成回路は、たとえば、報告信号がアサートされるときはいつでも例外信号をアサートするよう配置構成され得る。しかし別法として、例外信号生成回路は、アサートされた報告信号がある状態で例外信号をアサートするかどうかを決定するときに、いくつかの他の信号を考慮することができる。これは、たとえば、必要に応じて、他のイベントの発生回数を示す１つ又は複数の信号を参照することを含むことができる。別法として又はそれに加えて、制限信号も例外信号生成回路に供給することができ、アサートされた報告信号がある状態で、例外信号がアサートされる前に、その制限信号をアサートする必要があり得る。
【００２９】
具体的には、１つの例示的な配置構成では、装置は、履歴維持回路によって維持されるイベント履歴情報について決定された回数の更新が行われるまで、報告信号に基づく例外信号の生成を抑制するために使用されるウォームアップ制限回路をさらに備える。したがって、かかる手法により、履歴記憶部への入力の初期段階で例外が確実にトリガされないようにすることができる。したがって、そのインスタンスでは、記憶部内の各エントリがどのような値に初期化されるかは問題ではない。というのは、ウォームアップ制限回路を適切に設定することにより、少なくともすべてのエントリが第１及び第２の信号のアサートに基づいてアクティブに更新されるまで、確実に例外信号が生成されないようにすることができるからである。
【００３０】
ウォームアップ制限回路は、様々なやり方で構築できるが、一実例では、イベント履歴情報について行われた更新回数を示す更新カウント値を維持する更新カウンタ記憶部を備え、更新回数が限定閾値に達したときに制限信号をアサートするよう配置構成される。次いで、例外信号生成回路は、報告信号と制限信号との両方がアサートされたときに、例外信号をアサートするよう配置構成される。したがって、制限閾値を適切に指定することにより、どのようなアサートされた報告信号でも信用してアサートされた例外信号を生成する前に、確実に、履歴記憶部に対して所定の最小回数の更新が行われ得る。
【００３１】
第１及び第２のイベント監視回路は、様々なやり方で構築することができる。１つの簡単な実施態様では、第１及び第２のイベントが発生するたびに第１及び第２の信号がアサートされるように、ｍとｎとの両方を１にセットすることができる。しかし、代替の配置構成では、ｍ及び／又はｎは、１より大きい整数となるよう選択することができる。
【００３２】
たとえば、１つの例示的な実施態様では、ｍは１より大きく、第１のイベント監視回路は、リセット・イベント以降に観測された第１のイベントの発生回数を示す第１のイベント・カウント値を維持する第１のイベント・カウンタ記憶部を備え、発生回数が値ｍに達したときに第１の信号をアサートし、その後リセット・イベントがトリガされると第１のイベント・カウント値を初期値にリセットするよう配置構成される。同様に、１つの例示的な配置構成では、ｎは１より大きく、第２のイベント監視回路は、リセット・イベント以降に観測された第２のイベントの発生回数を示す第２のイベント・カウント値を維持する第２のイベント・カウンタ記憶部を備え、発生回数が値ｎに達したときに第２の信号をアサートし、その後リセット・イベントがトリガされると第２のイベント・カウント値を初期値にリセットするよう配置構成される。
【００３３】
より大きい値のｍ及びｎを使用することにより、履歴記憶部内に維持される履歴情報の有効量を増やすことができる。というのは、履歴データの各アイテムを第１の信号又は第２の信号のいずれか一方のアサートに関連付けることができ、第１及び第２の信号は、第１又は第２のイベントそれぞれの、複数のある一定回数の発生が観察された後にしかアサートされないようになるからである。履歴分析回路に関連して維持される閾値情報は、次いで、第１及び第２のイベント監視回路で使用されるｍ及びｎの値を、第１のイベントの発生と第２のイベントの発生との間の比率が所望の範囲外になるとき、確実に報告条件が検出されることになるように考慮するよう適合され得る。
【００３４】
ｍ及びｎの値は、様々なやり方で維持することができるが、１つの例示的な実施態様では、装置は、ｍ及びｎの値の指示を維持するための、設定変更可能な閾値記憶部を備える。したがってこれにより、ｍ及びｎの値を、必要に応じて調整できる。
【００３５】
次に、特定の実例について、図を参照して説明することにする。
【００３６】
図１は、データ処理を実行するプロセッサ４と、プロセッサ４が処理するデータを格納するキャッシュ６と、メモリ８とを備えるデータ処理システム２を示す。システム２はまた、プロセッサ４が使用する仮想アドレスをメモリ８が使用する物理アドレスにマッピングするための、仮想アドレスから物理アドレスへの変換データを格納する変換ルックアサイド・バッファ（ＴＬＢ：ｔｒａｎｓｌａｔｉｏｎ  ｌｏｏｋａｓｉｄｅ  ｂｕｆｆｅｒ）１０と、分岐命令が起こるか起こらないかを予測する分岐予測器１２とを備える。図１に示す配置構成は実例であり、システム２は、図１に示していない他の要素も備える可能性があること、又は実際のいくつかの例示的なシステムでは、図１に示すすべての構成要素を備えるわけではない可能性があることが理解されよう。
【００３７】
システム２は、データ処理システム２の処理性能を示す性能監視データを生成する、性能監視ユニット２０を備える。性能監視ユニット２０は、データ処理システム２の他の要素４、６、８、１０、１２からイベント信号２２を受信し、各信号２２は、対応するイベントの発生を示す。たとえば、処理サイクルの経過若しくは命令の実行を示すイベント信号２２が、プロセッサ４から受信される場合があり、又はキャッシュ若しくはＴＬＢへのアクセス若しくはミスを示すイベント信号が、キャッシュ６若しくはＴＬＢ１０から受信される場合がある。メモリ・アクセスを示すメモリ８からの、又は分岐予測若しくは分岐予測誤りを示す分岐予測器１２からのイベント信号２２も、受信される場合がある。こうした実例は網羅的ではなく、性能監視ユニット２０は、他の多くの種類のイベントを示す信号を受信することもできることが理解されよう。信号２２に応答して、性能監視ユニット２０は性能監視データを生成する。性能監視データは、システム２の性能を判断するために、後で取り込まれ分析され得る。
【００３８】
システム２は、割込信号を生成する割込コントローラ３０も備える。プロセッサ４は、割込信号に応答して、その現在の処理を中断し、割込信号に対応する割込処理ルーチンを実行する。様々な目的、たとえばプロセッサをトリガして特定のタスクを実行するか、又はエラーを通知するために、多くの様々な割込信号が生成され得る。ある種類の割込信号には、性能監視ユニット２０が生成する性能監視データに応答して、割込コントローラ３０が生成する性能監視割込信号がある。したがって、性能監視データが特定の性能状態を示す場合、割込コントローラ３０は、プロセッサ４の処理を中断し、プロセッサ４をトリガして、検出された性能状態に関連付けられた所定の動作を実行できる。
【００３９】
図２は、一実例による、図１の性能監視ユニット（ＰＭＵ：ｐｅｒｆｏｒｍａｎｃｅ  ｍｏｎｉｔｏｒｉｎｇ  ｕｎｉｔ）２０内に設けられた構成要素を示す構成図である。データ処理システム内の様々な構成要素からのイベントは、イベント・フィルタ／ルータ構成要素１００で受信され、イベント・フィルタ／ルータ構成要素は、ＰＭＵが現在かかる各イベントを監視するよう設定されているかどうかを判断でき、次いで監視されている各イベントを、適切なイベント監視回路に送ることができる。この実例では、第１のイベントの発生及び第２のイベントの発生をそれぞれ監視するために、第１及び第２のイベント監視回路１０５、１１０が設けられる。具体的には、図２に示す回路を使用して、第１のイベントの発生と第２のイベントの発生との比率を監視する。ＰＭＵは、これら２つのイベントだけを監視するよう配置構成されてもよく、又は別法として、システム内の別のイベントの発生を監視するための追加の回路（図示せず）を備えてもよい。
【００４０】
第１のイベント監視回路１０５は、第１の信号をアサートして第１のイベントのｍ番目ごとにその発生を示すよう配置構成され、同様に、第２のイベント監視回路は、第２の信号をアサートして第２のイベントのｎ番目ごとにその発生を示すよう配置構成される。ｍ及びｎの値は固定されてもよく、又は別法として、ｍ及びｎの値を保持するための適切な記憶要素を設けることにより、設定変更可能であってもよい。さらに、ｍは、１以上の任意の整数値とすることができ、ｎは同様に、１以上の任意の整数値とすることができる。ｍ又はｎのいずれかが１に等しく設定されると、対応するイベント監視回路が、関連するイベントが発生するたびに信号をアサートするようになることが理解されよう。ただし、これ以降に論じる実例では、ｍとｎとの両方が２以上の整数値であると想定されており、そのため第１及び第２の信号は、第１又は第２のイベントそれぞれの発生ごとにアサートされるのではなくて、第１のイベント又は第２のイベントそれぞれのある一定の倍数の発生時にしかアサートされない。これにより、システム内で維持できる履歴情報の量を増やすことができる。
【００４１】
図２に示すように、第１及び第２のイベント監視回路１０５、１１０からのアサートされた第１及び第２の信号は、複数のエントリを具備する履歴記憶部１２５を備える履歴維持回路１１５に送られ、各エントリを使用して、履歴データのアイテムを格納することができる。本明細書で論じる実例では、履歴データの各アイテムは、第１の信号のアサート又は第２の信号のアサートを示す。
【００４２】
履歴維持回路１１５内の更新回路１２０は、受信した第１及び第２の信号を分析し、履歴記憶部１２５の内容をいつ更新するかを決定するよう配置構成される。一実施態様では、更新回路は、第１の信号又は第２の信号がアサートされるたびに履歴記憶部を更新するよう配置構成され得る。しかし、図３及び図４を参照して後で論じるべき特定の例示的な実施態様では、第１及び第２の信号の両方が同時にアサートされるときに履歴記憶部の更新を省くことにより、装置の大幅な簡素化を達成できる。
【００４３】
更新回路１２０は、履歴記憶部１２５に対して、履歴記憶部内に格納されるべき新しい履歴データの各アイテムを直接特定してもよく、又は別法として、更新回路１２０が、履歴記憶部の内容をいつ更新すべきかを特定するために、単にトリガ信号を履歴記憶部１２５に発行することによって、履歴記憶部が、第１の信号及び／又は第２の信号からその情報を直接導き出してもよい。
【００４４】
履歴記憶部は、様々な形態をとることができる。履歴記憶部は、たとえば、第１及び第２の信号のアサートの新しいインスタンスが発生するにつれて、維持される履歴情報の総量が時間と共に増加するよう配置構成されてもよい。しかし、図３及び図４を参照してこれ以降で論じる特定の実施態様では、履歴記憶部は、所定の数のエントリを備え、その結果、どの特定の時点でも維持される履歴情報の量は一定である。これにより、履歴分析回路１３０によって実行される履歴情報の分析を簡略化することができる。１つの例示的な実施態様では、履歴記憶部１２５は、シフト・レジスタによって形成され、それにより、履歴データの新しい各アイテムがシフト・レジスタ内の先頭の位置に追加されると同時に、履歴情報の最も古いアイテムが捨てられる。
【００４５】
更新回路１２０はまた、履歴分析回路１３０に分析トリガを発行して、履歴分析回路に履歴記憶部の現在の内容を分析させるよう配置構成される。分析トリガは、様々なやり方で生成することができるが、一実例では、分析トリガは、履歴記憶部が更新されるたびに履歴分析回路１３０に送信され、それにより、第１のイベント発生と第２のイベント発生との間の比率の連続監視が可能となり、比率に影響を与える可能性のある情報が生成されるたびに、その比率は確実に再評価され得る。
【００４６】
履歴分析回路１３０は、履歴記憶部１２５のエントリに格納された値を参照して、いつ比率が許容範囲外になるかを判断するために使用される、閾値情報１３５へのアクセスを備える。一実施態様では、履歴情報のアイテムは、第１の信号のアサートを示す第１の値を有し、また第２の信号のアサートを示す第２の値を有する。閾値情報は様々な形態をとることができ、たとえば、第１の値及び第２の値に対して別々の閾値を指定できる。さらに、閾値情報は、小数形式又は整数形式で指定することができる。ただし、履歴記憶部内のエントリの総数が固定されている１つの特定のインスタンスでは、たとえば、比率が許容範囲を超えたことを示すと見なされる、履歴記憶部１２５のエントリ内の第１の値の発生回数を特定するために、閾値情報は、単にただ１つの閾値を使用するだけで得られる。
【００４７】
履歴分析回路１３０は、分析トリガに応答して、比率が許容可能な範囲を超えたと判断すると、例外信号生成回路１４０への報告信号をアサートする。例外信号生成回路１４０は、かかる状況で割込コントローラ３０に例外信号を直接アサートするよう配置構成されてもよく、又は別法として、アサートされた報告信号がある状態で例外信号をアサートするかどうかを決定するときに、１つ又は複数の他の信号を考慮することができる。
【００４８】
たとえば、例外信号生成回路１４０は、他のイベント・カウントに関して閾値に達していることを示す、ＰＭＵ内の他の構成要素からの信号を受信することもでき、その情報をアサートされた報告信号と組み合わせて使用して、例外信号をいつ生成するかを決定することができる。
【００４９】
別法として、報告信号を直接使用して例外信号を生成することもできるが、例外信号の生成は、図２の破線の構成要素で示す制限信号によって制限できる。具体的には、リセット・イベント以降に履歴記憶部１２５に対して行われた更新回数を特定するために使用される、更新回路１２０からの情報を受信する、ウォームアップ制限回路１４５が設けられ得る。この情報に基づいて、ウォームアップ制限回路１４５は、ある一定のウォームアップ期間が経過すると制限信号をアサートするよう配置構成され得る。ウォームアップ期間は、たとえば、履歴記憶部１２５に対して行われた更新回数と同等であり得る。かかる手法により、履歴維持回路によって受信された、アサートされた第１及び／又は第２の信号に基づいて、たとえば履歴記憶部に、ある一定の回数の更新、たとえば少なくとも、履歴記憶部内のすべてのエントリが確実に直接入力されるのに十分な回数の更新が行われるまで、制限信号が確実にアサートされないようにすることができる。したがって制限信号を使用すると、ウォームアップ期間が経過するまで、例外信号生成回路が、アサートされたどのような報告信号にも確実に応じて作動しないようになるので、履歴記憶部のエントリがどのような値に初期化されるかは問題ではない。
【００５０】
１つの例示的な実施態様では、例外信号生成回路１４０は、アサートされた制限信号がある状態で報告信号がアサートされるときはいつでも、割込コントローラ３０に例外信号をアサートし、次いで、上記で論じたように、検出された性能状態に関連する所定の動作をＣＰＵ４に実行させるために、割込コントローラにＣＰＵ４が実行する処理を中断させることができる。たとえば、かかる所定の動作により、アプリケーション実行時の挙動によりよく適合するように、たとえばプロセッサの周波数を上げることで、システムにシステム構成の動的な変更を加えることができる。別の実例として、本明細書で図１０及び図１１を参照して後から論じるように、割込コントローラによってトリガされるかかる所定の動作により、データ処理システム内の特定のプロセスを実行するために使用される様々なアルゴリズム間を切り替えるかどうかに関する評価が行われる場合がある。
【００５１】
図３及び図４は、図２の装置の特定の例示的な実施態様を示す。ＰＭＵによって実行されるプロセスは、概念的に２つの段階に分けることができる。段階１を図３に示し、段階２を図４に示す。
【００５２】
図３に示すように、システム２００内からのイベントは、図２のイベント・フィルタ／ルータ１００の機能を実施する多重化構成要素２０５で受信され、その動作は構成ブロック２３０によって制御することができる。具体的には、構成ブロックにより、ＰＭＵ内の特定のハードウェア・カウンタを、特定のイベントに対するカウントを維持するように構成でき、したがって構成ブロック２３０内を適切に構成することにより、イベント・カウンタ２１０は第１のイベントのカウンタとして設定でき、イベント・カウンタ２１５は第２のイベントのカウンタとして設定でき、多重化構成要素２０５は、第１のイベントを、発生するたびに第１のイベント・カウンタ２１０に送り、第２のイベントを、発生するたびに第２のイベント・カウンタ２１５に送るよう構成される。上記で論じたことから明らかなように、イベントは、システム内の様々な相異なる構成要素内で起きる作用に関して多種多様な形態をとることができ、本明細書で説明する技法では、どのイベントを追跡するかは重要ではない。しかし、本明細書に示す実例では、第２のイベントの発生に対する第１のイベントの発生の比率を監視することが望ましいと想定される。
【００５３】
図２の第１のイベント監視回路１０５は、図３の構成要素２１０、２２０、及び２３５によって実現され、一方第２のイベント監視回路１１０は、図３の構成要素２１５、２２５、及び２４０によって実現される。具体的には、構成ブロック２３０を使用して、閾値記憶要素２２０、２２５内のｍ及びｎの値をセットすることができる。上記で論じたように、これらの値は１にセットできるが、これ以降論じる実例では、ｍとｎとの両方が２以上の整数であると想定することにする。
【００５４】
図３に示すように、第１のイベント・カウンタ２１０及び閾値記憶部２２０の内容は、比較回路２３５に供給される。比較回路２３５が、第１のイベント・カウンタが値ｍに達したことを検出すると、第１の信号が経路２３７を経てアサートされ、次いで後続のクロック・サイクルで第１のイベント・カウンタが初期値、たとえば０にリセットされる。
【００５５】
同様に、比較器２４０は、第２のイベント・カウンタ２１０内に保持されたカウント値と記憶要素２２５内の閾値ｎとを比較し、第２のイベント・カウンタがｎに達したときに第２の信号をアサートし、その後、後続のクロック・サイクルで第２のイベント・カウンタがリセットされる。
【００５６】
図５は、各イベント監視回路の動作を示す流れ図である。ステップ３００で、イベントが発生するのを待機し、イベントの発生は、多重化ブロック２０５から関連するイベント・カウンタ２１０、２１５に伝搬される信号で示される。イベントの発生が検出されると、ステップ３０５でイベント・カウンタ要素２１０、２１５内のカウンタが進められ、その後、そのカウンタ値が比較構成要素２３５、２４０を使用して閾値と比較される。次いでステップ３１５で、その比較した結果として、閾値レベルに達したかどうかが判定される。
【００５７】
閾値に達していない場合、プロセスはステップ３００に戻り、イベントの別の発生を待つ。しかし閾値に達すると、関係する信号が段階２へアサートされ、その後、ステップ３２５でカウンタがリセットされ、次いでプロセスはステップ３００に戻る。
【００５８】
第１及び第２の信号２３７、２３９は、図４に示す段階２に転送される。図３及び図４に示す実例では、信号の論理値０はアサート解除された状態を示し、論理値１はアサートされた状態を示すと想定される。しかし、これは設計上の選択の問題であり、図４に示す構成要素を適切に調整することにより、アサート解除された状態及びアサートされた状態に関係付けられた値を反転することが可能であることが理解されよう。
【００５９】
図４に示すように、履歴維持回路の更新回路は、この実例では、ＸＯＲゲート２５０を使って形成され、シフト後書込構成要素２５５を制御するために使用される。したがって、第１の信号がアサートされるか、又は第２の信号がアサートされるときはいつでも、論理値１がシフト後書込構成要素２５５に対して発行され、履歴記憶部の更新をトリガすることが理解されよう。しかし、第１の信号も第２の信号もアサートされないとき、又は両方の信号が同時にアサートされる場合、論理値０がＸＯＲゲート２５０から出力され、更新は実行されない。この手法は、履歴記憶部を大幅に簡略化できるので、図４の特有の実施態様で用いられている。具体的には、図示のように、履歴記憶部へは、信号２３７、２３９のうちの一方からしか直接供給することができず、図示の実例では、第１の信号２３７がこの目的で使用されている。第１の信号は、アサートされると論理値１になり、また第１の信号は、アサート解除されると論理値０になる。したがって、履歴記憶部の更新が第１の信号のアサートによってトリガされると、論理値１が履歴記憶部に書き込まれることになる。一方、更新動作が第２の信号のアサートによってトリガされると、上記で論じたＸＯＲゲート２５０の動作のため、第２の信号のアサートに基づく更新が第１の信号がアサート解除されている場合にしか発生しないので、論理値０が履歴記憶部に追加されることになる。
【００６０】
履歴記憶部は、様々な形態をとることができるが、一実施態様では、ｐビットのシフト・レジスタ２４５であり、履歴データの新しい各アイテムがシフト・レジスタの先頭位置に挿入される。一方、履歴データの最も古いアイテムは同時に、シフト・レジスタの最後のエントリから捨てられる。図４に示す実例のように、シフト・レジスタは直列入力並列出力型シフト・レジスタとして配置構成されており、その結果履歴分析回路に、履歴記憶部内に保持されている履歴情報を分析させるために分析トリガが使用されると、履歴データのｐ個のアイテムのすべてが、履歴分析回路に並列に供給され得る。
【００６１】
履歴維持回路の動作を、図６の流れ図を使って示す。ステップ３５０で、第１の信号がアサートされたかどうかが判定され、アサートされた場合、次いでステップ３５５で、第２の信号がアサートされていないことが確認される。これが当てはまる場合、プロセスはステップ３６５に進み、レジスタのシフト動作を実行して、履歴データの最も古いアイテムを履歴記憶部から外し、第１の信号の現在の値を履歴記憶部の先頭のエントリに書き込ませるために、履歴記憶部でのシフト及び書込み動作がトリガされる。その後、ステップ３７０で分析トリガがアサートされることにより、履歴分析回路は、履歴記憶部の現在の内容を分析する。
【００６２】
図６に示すように、第１の信号がアサートされていない場合、ステップ３６０で、第２の信号がアサートされているかどうかが判定され、第２の信号がアサートされている場合、プロセスはやはりステップ３６５、３７０に進む。しかし、第１の信号がアサートされておらず第２の信号もアサートもされていない場合、何のアクションも行われず、プロセスは、次のクロック・サイクルでの第１及び第２の信号を分析するために、ステップ３５０に戻る。同様に、特定のクロック・サイクルで第１の信号がアサートされ第２の信号もアサートされる場合、何のアクションも行われず、そうではなくてプロセスは、ループしてステップ３５０に戻り、次のクロック・サイクルで信号を再評価する。
【００６３】
図４に示すように、履歴分析回路には、分析トリガに応答してシフト・レジスタの各エントリの内容を読み取り、所定の値、この特定の実例では論理値１を格納するエントリの総数をカウントする、ポップカウント回路２６０が組み込まれている。上記で論じたように、論理値１を格納するエントリは、第１の信号のアサートに関係するはずであり、一方論理値０を格納するエントリは、第２の信号のアサートに関係するはずである。したがって、シフト・レジスタの内容の論理値１の数をカウントすることで、シフト・レジスタの内容によって維持される、履歴ウィンドウ内で第１の信号がアサートされた回数が示される。次いで、その値を構成ブロック２３０がセットできる第１の値の閾値レジスタ２６５が設けられ、比較回路２７０は、ポップカウント回路によって検出された値が、記憶要素２６５の第１の閾値以上であるかどうかを判定する。第１の閾値以上である場合、第２のイベントの発生に対する第１のイベントの発生の比率が許容範囲外であり、したがって報告信号が例外信号生成回路にアサートされる状況を示すと見なされる。
【００６４】
記憶要素２６５内に格納された第１の値の閾値は、ｍ及びｎの値、ひいては第１及び第２のイベントそれぞれの発生に基づいて第１の信号及び第２の信号がアサートされる頻度を、考慮するようセットできることが理解されよう。
【００６５】
図７は、図４の履歴分析回路の動作を示す流れ図である。ステップ４００で、分析トリガがアサートされたかどうかが判定される。上記で論じたように、一実施態様では、分析トリガは、履歴記憶部で更新が実行されるたびにアサートされ、したがってシフト後書込回路２５５の出力から直接得られ得る。
【００６６】
分析トリガがアサートされると、履歴記憶部の各エントリの値がポップカウント回路２６０によって取得され、図４の実施態様では、こうした値はシフト・レジスタの出力インタフェースから並列に取得される。次いでステップ４１０で、その値がイベント１に対応するエントリの数がカウントされ、その後ステップ４１５で、比較回路２７０を使用して、カウント値が第１の閾値に達したかどうかが判定される。達していない場合、これ以上のアクションは行われず、報告信号はアサート解除されたままであり、プロセスはステップ４００に戻り、次の分析トリガの受信を待つ。しかし、カウント値が第１の値の閾値に達した場合、ステップ４２０で報告信号がアサートされる。
【００６７】
上記で論じたように、例外信号生成回路は、報告信号がアサートされるときはいつでも、経路２９５を経て例外信号をアサートするように配置構成されてもよい。しかし、図４に示す特定の実例では、例外信号生成回路の作用は、ウォームアップ制限回路から受信した制限信号によって制限され、ウォームアップ認定回路は、図４に示すように本実例では、有効カウント・ブロック２７５、制限閾値記憶部２８０、及び比較回路２８５で構成される。
【００６８】
図４に示すように、ＸＯＲゲート２５０によって論理値１がアサートされるたびに、有効カウント・ブロック２７５内のカウントが進められる。したがって、有効カウント・ブロック２７５は、リセット・イベント以降に履歴記憶部に対して実行された更新回数のカウントを維持することが理解されよう。
【００６９】
構成ブロック２３０の制御の下で、制限閾値を記憶要素２８０内に格納することができ、制限閾値と現在の有効カウント値との両方が比較回路２８５に送られる。比較回路２８５は、有効カウントが記憶要素２８０内に格納された制限閾値以上になると、制限信号だけをアサートするよう配置構成される。制限閾値を適切に選択することにより、ウォームアップ期間を指定でき、そのため、例外信号生成回路は、履歴記憶部に対してある一定回数の更新が行われるまで、報告信号の値に関わらず例外を発生させないようになることが、したがって理解されよう。たとえば、閾値は、制限信号がアサートされる前に、第１の信号又は第２の信号のアサートに応答して、履歴記憶部の少なくともすべてのエントリに書き込まれることが必要となるようにセットされ得る。
【００７０】
図８は、ウォームアップ制限回路の動作を示す流れ図である。ステップ４５０で、有効カウント・ブロック２７５（本明細書では更新カウンタとも呼ばれる）は、リセット・トリガのときに初期化される。リセット・トリガは、様々な形態をとることができる。リセット・トリガは、たとえば、ＰＭＵのリセット時に発生し得るか、又は他の状況、さらにはＰＭＵ自体がリセットされない場合にも起きる可能性がある。
【００７１】
更新カウンタのリセットに続いて、プロセスはステップ４５５に進み、上記で論じたように、図４の実例ではＸＯＲゲート２５０の出力によって示されている、履歴記憶部の更新が行われているかどうかが判定される。履歴記憶部が更新されるときはいつでも、ステップ４６０で、更新カウンタ２７５が進められる。その後ステップ４６５で、更新カウンタ値が制限閾値と比較され、その後ステップ４７０で、その制限閾値に達したかどうかが判定される。
【００７２】
閾値に達していない場合、プロセスはステップ４５５に戻り、履歴記憶部の次の更新を待つ。しかし閾値に達すると、制限信号は、ステップ４７５で、リセット・トリガが起こるまですべてのクロック・サイクルでアサートされ、次いでプロセスはステップ４５０に戻る。
【００７３】
図９は、図４の実例における例外信号生成回路の動作を示し、この構成要素は、図４に示すようにＡＮＤゲート２９０によって実現されている。ステップ５００で、報告信号がアサートされているかどうかが判定され、アサートされない場合は、何のアクションも行われない。しかし、報告信号がアサートされている場合、制限信号がアサートされているかどうかが判定され、アサートされていない場合は、やはり何のアクションも行われない。しかし、ステップ５０５で制限信号がアサートされていると判定された場合、例外信号生成回路はステップ５１０で、割込コントローラ３０に対して例外信号をアサートする。
【００７４】
以前の図を参照して説明した性能監視ユニットの配置構成は、多種多様な状況で使用され、様々な相異なるイベント間の比率を監視できることが理解されよう。ＰＭＵは、必ずしもイベントの単一の比率だけを監視することに限定されず、そうではなくて、回路構成要素を適切に複製することにより、ＰＭＵは、複数の比率を同時に監視するよう構築され得ることがさらに理解されよう。
【００７５】
単に例示する実例として、第１のイベントと第２のイベントとの比率の監視によって取得された性能監視情報を使用して、テーブル結合動作に使用する適切なアルゴリズムを決定する活用事例を検討することとする。リレーショナル・データベースを使用するシステムなどのデータベース管理システムでは、様々な相異なる仕組みを使用して、たとえばソート・マージ結合アルゴリズム又はハッシュ結合アルゴリズムのいずれかを使用して、テーブル結合動作を実現できる。これらのアルゴリズムはどちらも、必ずしも他方のアルゴリズムより優れているわけではなく、各アルゴリズムの強み及び弱みは、常に先験的にわかっているわけではないいくつかの要因次第で変わる。したがって、これらのアルゴリズムの１つを、その性能を監視しながら試して、その実行が次善のものである場合は、したがって代替アルゴリズムへの切替えができることが望ましい場合がある。たとえば、ハッシュ結合アルゴリズムは、マイクロアーキテクチャで多くのロード・ストア・エイリアシング・イベントを発生させる可能性があるが、ソート・マージ結合アルゴリズムは、多くの分岐予測ミスを発生させる可能性がある。
【００７６】
図１０は、テーブル結合動作を模式的に示す。この実例では、２つのテーブル５５０、５６０が維持されている。テーブル５５０は、注文ごとの注文ＩＤ及び関連付けられた顧客ＩＤに関する情報を維持する注文テーブルである。この特定の実例では、顧客ＩＤ３３を持つ顧客が、注文ＩＤ１００１及び１５０１を持つ２つの注文を出したことを示す。第２のテーブル５６０は顧客テーブルであり、各顧客ＩＤに関連付けられた顧客を特定する。この実例では、ＩＤ３３の顧客がＸＹＺ  Ｌｔｄ．であることを示す。
【００７７】
図１０の実例では、両方のテーブルが、顧客ＩＤに関する情報を提供することが理解されよう。リレーショナル・データベースの用語では、顧客テーブル内で提供される各顧客ＩＤが一意になる、すなわち、ＸＹＺ  Ｌｔｄ．のエントリはただ１つしかないはずなので、テーブル５６０に関連付けられた顧客ＩＤは主キーと呼ばれる。しかし、注文テーブル５５０内の顧客ＩＤのフィールドは、別のテーブルの主キー（この実例では顧客ＩＤ）の複数のインスタンスが注文テーブル内で発生する可能性があるので、外部キーと呼ばれる。
【００７８】
ブロック５７０によって模式的に示すように、内部テーブル結合動作は、ＸＹＺ  Ｌｔｄ．が出した注文を特定する、結果として得られる出力テーブル５８０を生成するために、ハッシュ結合アルゴリズム又はソート・マージ結合アルゴリズムのいずれかを使用して実行され得る。
【００７９】
前述のように特定の状況で、可能性のあるどのアルゴリズムによって、より適切に実行されることになるかが先験的にわかっていない場合がある。したがって、システムは、アルゴリズムの１つが開始アルゴリズムとして選択されるが、ＰＭＵ２０が使用される場合に、性能の問題についてシステムの挙動を監視するよう設定することができる。かかる手法を、図１１の流れ図に示す。ここにおいて、初期化時に、ステップ６００で、テーブル結合動作を実行するときに使用される、たとえばハッシュ結合アルゴリズムが選択され得る。前述のように、ハッシュ結合アルゴリズムは、多数のロード・ストア・エイリアシング・イベントを発生させる可能性がある。
【００８０】
したがって、ステップ６０５で、ＰＭＵを、エイリアシングによるロード・リプレイ・イベントをイベント１として、また破棄された（ｒｅｔｉｒｅｄ）命令をイベント２として、監視するよう設定する。加えて、閾値は、破棄された命令に対するロードのリプレイの比率がある一定のレベルに達したときに、例外が生成されるようセットされる。これは、記憶要素２２０、２２５内の値ｍ、ｎ、及び記憶要素２６５内の第１の値の閾値の適切な設定によって達成することができる。上記で論じたように、ウォームアップ期間中に、確実に例外が生成されないようにするために、制限閾値も、記憶要素２８０内に指定することができる。
【００８１】
したがって、単に非常に具体的な実例として、ＰＭＵの構成を担当するエンティティは、アルゴリズムの１つのループに１００の命令が含まれ、他のストアとエイリアシングの問題を起こす可能性のある１１のロード命令があることを知り得る。したがって、１つのループの繰返しを測定する粒度は、ｍが１１に等しくセットされ、ｎが１００に等しくセットされるよう選択され得る。したがって、第１の信号は、１１回のエイリアシング・イベントごとにアサートされることになり、第２の信号は、１００回の破棄された命令ごとにアサートされることになる。
【００８２】
さらに、アルゴリズムの最初の繰返しは、ウォームアップのためにアルゴリズムの全体的な挙動を反映していない可能性があるため、アルゴリズムのある一定回数の繰返しが行われ、履歴記憶部内で対応する更新が行われるまで、例外トリガが確実に生成されない十分大きい値に制限閾値をセットできることが理解されよう。単に実例として、制限閾値を２０にセットでき、したがって、どのような例外信号も生成され得る前に、履歴記憶部の少なくとも２０回の更新が必要である。最後に、ユーザは、エイリアシングが原因で多少のロードのリプレイがある場合、それは重要ではないという見方をするかもしれないが、非常に頻繁に発生する場合は、システムに警告することを望んでいる。特定の実例として、８つのエントリを備えるシフト・レジスタでは、第１の値の閾値をこの場合３にセットでき、したがって、８ビットの履歴ビットのうち３ビット以上が１にセットされると報告信号がアサートされることを意味する。上記で論じた具体的な実例では、例外が発生する前に、５００の破棄された命令のウィンドウ内で発生するエイリアシングが原因で、少なくとも３３回のロードのリプレイが必要であることを意味する。
【００８３】
上記の数は単に例示のために提示したものであり、値は、任意の特定の状況で必要に応じてセットできることが理解されよう。
【００８４】
図１１に戻ると、ステップ６１０で、例外がトリガされたかどうかが判定され、トリガされた場合、ステップ６１５で、割込コントローラ３０は、ＣＰＵ４で実行されるべきユーザ定義ハンドラをトリガし、そのユーザ定義ハンドラを実行することにより、テーブル結合動作のために、アルゴリズムをソート・マージ結合アルゴリズムに切り替えるか、又はそうではなくてハッシュ結合アルゴリズムを用いて続行するかを判断する。たとえば、ソート・マージ・アルゴリズムへの切替えが適切であると判断された場合、ハンドラは、ソート・マージ・アルゴリズムの使用に移行するために、その戻りアドレスを変更して、アプリケーションの制御の流れを向け直すよう選択することができる。別法として、すでに実行されている作業量に応じて、ハッシュ結合アルゴリズムを用いて続行することが適切であると決定することができる。
【００８５】
ステップ６１５で行われた決定に基づいて、次いでステップ６２０で、例外からの復帰の後に、ＰＭＵによるイベント監視をリセットするか又は無効にするかを決定することもできる。たとえば、ステップ６１５で、プロセスがソート・マージ・アルゴリズムに切り替わった場合、イベント監視を無効にすることが適切であると判断でき、一方、ハッシュ結合アルゴリズムを用いて続行すると判断された場合、イベント監視の仕組みをリセットすることが適切であると判断することができる。
【００８６】
上記の説明から、本明細書で説明する技法は、アプリケーションがリアルタイムでどのように機能しているかを検査し、必要な任意の修正措置を講じるための、軽量で設定変更可能な仕組みを提供することが理解されよう。説明した仕組みにより、対象となる比率を継続的に監視できる。さらに、アプリケーションは、比率が設定可能な閾値を超えたときだけ通知され、比率を超えたかどうかを判断するために実行されるべきどのような不要な計算も回避する。したがって、説明した仕組みは、データ処理システム内でリアルタイムに性能監視／シグナリングを実行するための、特に効率的で効果的な仕組みを提供する。
【００８７】
本出願では、「．．．するよう構成される」という用語は、装置の要素が、定義された動作を実行できる構成を備えることを意味するように使用される。これに関連して、「構成」とは、ハードウェア又はソフトウェアの相互接続の配置構成又は態様を意味する。たとえば、装置は、定義された動作を提供する専用のハードウェアを備えてもよく、又はプロセッサ若しくは他の処理デバイスを、機能を実行するようにプログラムしてもよい。「するよう構成される」は、定義された動作を提供するために、装置要素をいかなる形であれ変更する必要があることを示唆するものではない。
【００８８】
本発明の例示的な実施例を、添付図面を参照して本明細書で詳細に説明してきたが、本発明はそれらの正確な実施例に限定されるものではなく、当業者によってその中に、添付の特許請求の範囲によって定義される本発明の範囲及び精神から逸脱することなく、様々な変更、追加、及び修正を行うことができることを理解されたい。たとえば、従属請求項の特徴の様々な組合せが、本発明の範囲から逸脱することなく、独立請求項の特徴を用いて得られる可能性がある。
【図１】
2022501700.tif 000003
【図２】
2022501700.tif 000004
【図３】
2022501700.tif 000005
【図４】
2022501700.tif 000006
【図５】
2022501700.tif 000007
【図６】
2022501700.tif 000008
【図７】
2022501700.tif 000009
【図８】
2022501700.tif 000010
【図９】
2022501700.tif 000011
【図１０】
2022501700.tif 000012
【図１１】
2022501700.tif 000013
【国際調査報告】
2022501700.tif 000014
2022501700.tif 000015
2022501700.tif 000016