(57)【特許請求の範囲】
【請求項１】
複数のエントリを有する記憶部と、
命令を実行する命令実行部と、前記命令実行部によって実行された命令の性能を評価するためのイベントを検出する検出部と、前記検出部によって検出されたイベントの数をイベントの種別毎に計数する計数部と、前記計数部によって計数されたイベントの数を前記複数のエントリのいずれかに書込むとともに、イベントの数を書込んだ前記エントリのリプレースを禁止する書込部を有する第１の演算処理部と、
前記記憶部に書込まれたイベントの数を読み出す読出部と、読み出されたイベントの数を前記命令の性能を示す性能情報に加工する加工部と、前記加工部によって加工された性能情報を出力する出力部を有する第２の演算処理部
を有することを特徴とする演算処理装置。
【請求項２】
前記書込部は、前記計数されたイベントの数を前記複数のエントリのいずれかに書込んだ後、前記計数されたイベントの数をリセットさせることを特徴とする請求項１に記載の演算処理装置。
【請求項３】
前記第１の演算処理部は、前記計数されたイベントの数の増加率を監視し、増加率が大きいほど、前記書込部と前記読出部の間での情報のやりとりが短い間隔で実行されるように制御するタイミング制御部をさらに含むことを特徴とする請求項１または２に記載の演算処理装置。
【請求項４】
複数のエントリを有する記憶部と、演算処理をそれぞれ行う第１及び第２の演算処理部と、を有する演算処理装置の制御方法において、
前記第１の演算処理部が有する命令実行部が、命令を実行し、
前記第１の演算処理部が有する検出部が、実行された命令の性能を評価するためのイベントを検出し、
前記第１の演算処理部が有する計数部が、検出されたイベントの数をイベントの種別毎に計数し、
前記第１の演算処理部が有する書込部が、計数されたイベントの数を前記複数のエントリのいずれかに書込むとともに、イベントの数を書込んだエントリのリプレースを禁止し、
前記第２の演算処理部が有する読出部が、前記記憶部に書込まれたイベントの数を読み出し、
前記第２の演算処理部が有する加工部が、読み出されたイベントの数を前記命令の性能を示す性能情報に加工し、
前記第２の演算処理部が有する出力部が、加工された性能情報を出力することを特徴とする演算処理装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、複数のコアを有するプロセッサに関し、特に、構成を複雑化することなく、プログラムの性能を示す性能指標情報をリアルタイムで出力することができるプロセッサに関する。
【背景技術】
【０００２】
最近のプロセッサは、該プロセッサ上で発生する各種イベントの発生回数をパフォーマンスカウンタと呼ばれるレジスタに記録するパフォーマンスアナライザ（イベントモニタ）と呼ばれる機能を備えている。プログラマー等は、かかるパフォーマンスカウンタを参照することで、プログラムのボトルネックとなっている部分を把握できるため、プログラムの最適化を図ることができる。
【０００３】
具体的には、性能測定対象のプログラムの実行が完了し、パフォーマンスカウンタに各種イベントの発生回数（以下、「カウンタ情報」という）が記憶されたならば、このパフォーマンスカウンタの内容を解析プログラムによって読み出し、読み出したカウンタ情報からプログラムの性能評価に関する情報を加工生成することになる。例えば、かかるパフォーマンスカウンタにキャッシュ参照数とキャッシュヒット数が記憶されている場合には、このキャッシュ参照数とキャッシュヒット数からキャッシュヒット率という性能指標情報を加工生成することができる。
【０００４】
このように、従来のパフォーマンスアナライザは、性能指標を加工生成する前提として性能測定対象のプログラムの実行が完了している必要があったが、これだとリアルタイム性に欠けるという問題がある。そこで、このリアルタイム性を確保するための従来技術が知られている。例えば、特許文献１には、性能測定対象のプログラムの実行中に、リアルタイムでカウンタ情報を出力することを可能にするため、プロセッサの外部にカウンタ情報の蓄積、加工および出力を行う機構を設ける技術が開示されている。
【０００５】
【特許文献１】特開平５−９４３４２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかしながら、上記特許文献１によれば、プロセッサとは別個にカウンタ情報の蓄積、加工および出力を行う機構を該プロセッサに隣接して設ける必要があるので、コストの上昇、プロセッサ周辺の配線の複雑化、発熱量の増加等を招くという問題がある。
【０００７】
また、この種の機構は、常時用いられる性質のものではなく、プログラムの開発段階でのみ用いられるものであり、プログラムの開発後の通常の運用時には不必要なものであるので、上記機構をプロセッサの外部に隣接して常駐させるのは現実的ではない。これらのことから、特殊な機構を設けることなく、リアルタイムで性能指標情報を加工生成するプロセッサをいかに実現するかが課題となっている。
【０００８】
この発明は、上述した従来技術による問題点を解消するためになされたものであり、構成を複雑化することなく、プログラムの性能を示す性能指標情報をリアルタイムで出力することができる演算処理装置及び演算処理装置の制御方法を提供することを目的とする。
【課題を解決するための手段】
【０００９】
上述した課題を解決し、目的を達成するため、本発明の一つの態様では、複数の演算処理部を有するプロセッサにおいて、実行される命令群の性能を評価するためのイベントの発生を検出するイベント検出手段と、前記イベント検出手段において検出されたイベントの数をイベントの種別毎に記録するカウンタとを有する１つあるいは複数の第１の演算処理部と、前記カウンタに記録された値を前記命令群の性能を示す性能指標情報に加工処理する加工処理手段と、前記加工処理手段で加工処理された前記性能指標情報を出力する出力手段とを有する１つあるいは複数の第２の演算処理部とを備えたことを特徴とする。
【００１０】
この発明の態様によれば、複数の演算処理部を備えるプロセッサにおいて、演算処理部の１つあるいは複数を性能指標情報の加工と出力のために機能させることとしたので、専用の機構を設けることなく、性能測定対象のプログラムを実行しながら、性能指標情報をリアルタイムで出力することができる。
【００１１】
また、本発明の他の態様では、上記の発明の態様において、前記第１の演算処理部から書込可能で、かつ、前記第２の演算処理部から読み出し可能な記憶手段を備え、前記第１の演算処理部は、前記カウンタに記録された値を前記記憶手段に書き込む書込手段をさらに有し、前記第２の演算処理部は、前記記憶手段に書き込まれた情報を読み出し、前記加工手段に加工を行わせる情報収集手段をさらに有することを特徴とする。
【００１２】
この発明の態様によれば、カウンタ情報の受け渡しを、演算処理部によって共有されているキャッシュを介して行うこととしたので、カウンタ情報の受け渡しを行うための専用の経路を設ける必要がなく、プロセッサの構成の複雑化を回避することができる。
【００１３】
また、本発明の他の態様では、上記の発明の態様において、前記情報書込手段は、前記カウンタに記録された値を前記記憶手段に書き込んだ後、前記カウンタに記録された値をリセットさせることを特徴とする。
【００１４】
この発明の態様によれば、カウンタ情報を受け渡し用の領域に書き込んだ後、カウンタの値をリセットすることとしたので、カウンタの桁溢れを防止し、測定区間を設定することなく効率よくプログラムの性能測定を行うことができる。
【００１５】
また、本発明の他の態様では、上記の発明の態様において、前記情報書込手段は、前記カウンタに記録された値を書き込んだ前記記憶手段内の領域をリプレース禁止に設定することを特徴とする。
【００１６】
この発明の態様によれば、カウンタ情報の受け渡しのために使用される領域のリプレースを禁止することとしたので、その領域を介してカウンタ情報の受け渡しを行うことにより、キャッシュヒット率等の性能測定結果が不適切な値となることを防止することができる。
【００１７】
また、本発明の他の態様では、上記の発明の態様において、前記第１の演算処理部は、前記カウンタに記録される値の増加率を監視し、増加率が大きいほど、前記情報書込手段と前記情報収集手段の間での情報のやりとりが短い間隔で実行されるように制御するタイミング制御手段をさらに含むことを特徴とする。
【００１８】
この発明の態様によれば、増加率に応じて、カウンタ情報を受け渡すタイミングを制御することとしたので、カウンタの桁溢れを防止しつつ、カウンタ情報を受け渡す頻度をできるだけ少なくし、カウンタ情報の受け渡しによる負荷の増大を最小限に抑えることができる。
【００１９】
なお、本発明の構成要素、表現または構成要素の任意の組合せを、方法、装置、システム、コンピュータプログラム、記録媒体、データ構造などに適用したものも本発明の態様として有効である。
【発明の効果】
【００２０】
本発明によれば、装置の構成を複雑化することなく、性能測定対象のプログラムを実行しながら、性能指標情報をリアルタイムで出力することができるという効果を奏する。
【発明を実施するための最良の形態】
【００２１】
以下に添付図面を参照して、本発明に係る演算処理装置及び演算処理装置の制御方法の好適な実施の形態を詳細に説明する。
【実施例１】
【００２２】
まず、実施例１に係るプロセッサ１００を含む情報処理装置１０の構成について説明する。図１は、実施例１に係るプロセッサ１００を含む情報処理装置１０の構成を示すブロック図である。同図に示すように、情報処理装置１０は、プロセッサ１００と、メモリ１０１と、ハードディスク１０２と、ネットワークインターフェース（以下、「ネットワークＩ／Ｆ」という）１０３と、表示部１０４と、入力部１０５とをバス１０６で接続して構成されている。
【００２３】
プロセッサ１００は、各種演算処理を実行する集積回路であり、コア１１０ａ〜１１０ｃと、コア１２０とを有する。メモリ１０１は、プロセッサ１００によって実行されるプログラムの命令列やデータが展開される一時記憶デバイスであり、ハードディスク１０２は、プロセッサ１００によって実行されるプログラムの命令列やデータを記憶する不揮発性の記憶デバイスである。ネットワークＩ／Ｆ１０３は、ネットワーク通信を実現するためのインターフェース装置である。表示部１０４は、各種情報を表示する表示デバイスであり、例えば、液晶表示装置等からなる。入力部１０５は、操作指示や情報の入力を受け付ける入力デバイスであり、例えば、キーボード等からなる。
【００２４】
プロセッサ１００が有するコア１１０ａ〜１１０ｃおよびコア１２０は、それぞれが、独立して演算処理を実行する演算処理部である。通常、コア１１０ａ〜１１０ｃおよびコア１２０は、いずれも同様に機能し、プロセッサ１００は、４つの処理を並列的に実行する。そして、プログラムの性能測定が必要になった場合には、コア１１０ａ〜１１０ｃは、測定対象のプログラムを実行しながら、予め指定されたイベントの発生数をカウンタ情報として記録し、コア１２０は、コア１１０ａ〜１１０ｃによって記録されたカウンタ情報を収集し、それを加工して表示部１０４等に出力する。
【００２５】
このように、プロセッサ１００が有する複数のコアの１つであるコア１２０を用いてカウンタ情報の収集、加工および出力を行うことにより、測定対象のプログラムを実行しながらカウンタ情報をリアルタイムで出力することが可能になる。また、通常はコア１１０ａ〜１１０ｃと同様にプログラムの実行を行うコア１２０を、プログラムの性能測定が必要になった場合のみ、カウンタ情報の収集、加工および出力のために使用するので、カウンタ情報のリアルタイム出力を実現するために、装置の複雑化やコストの増大が生じることはない。
【００２６】
なお、図１では、プロセッサ１００が４つのコアを有する例を示したが、プロセッサ１００は、コア１２０以外に、測定対象のプログラムを実行するためのコアを少なくとも１つ有していれば、いくつのコアを有していても構わない。また、プロセッサ１００は、コア１２０以外に、カウンタ情報の収集、加工および出力を行うコアを有していても構わない。また、コア１２０がカウンタ情報を出力する先は、ハードディスク１０２であってもよいし、ネットワークＩ／Ｆ１０３を介して情報処理装置１０とネットワーク接続された他の情報処理装置であってもよい。
【００２７】
次に、図１に示したプロセッサ１００の構成についてさらに詳細に説明する。図２は、実施例１に係るプロセッサ１００の構成を示すブロック図である。なお、同図では、説明を簡単にするため、コア１１０ｂおよび１１０ｃの図示を省略しているが、コア１１０ｂおよび１１０ｃは、コア１１０ａと同様の構成を有する。また、同図では、パフォーマンスアナライザ機能に関連する構成のみを図示しており、以下の説明では、コア１１０ａおよびコア１２０の各部について、パフォーマンスアナライザ機能を実現するための各構成要素として説明を行うこととする。
【００２８】
図２に示すように、コア１１０ａは、命令実行部１１１と、イベント検出部１１２と、カウンタ制御部１１３と、パフォーマンスカウンタ１１４ａ〜１１４ｎとを有する。命令実行部１１１は、測定対象のプログラムに含まれる命令列を実行する処理部である。命令実行部１１１が実行する命令列には、例えば、算術演算命令、分岐命令、入出力命令等が含まれる。
【００２９】
イベント検出部１１２は、予め指令されたイベントの発生を検出する処理部である。ここでいうイベントとは、命令実行部１１１での命令列の実行に関連して発生する事象のうち、命令列（プログラム）の性能（プロセッサ１００に対する命令列の最適化の程度）を示す指標となるものであり、例えば、クロック信号の受信、命令の実行完了、キャッシュの参照、キャッシュのヒット等である。
【００３０】
カウンタ制御部１１３は、イベント検出部１１２において検出されたイベントの発生回数をパフォーマンスカウンタ１１４ａ〜１１４ｎに記録する処理部である。どのイベントを検出し、その発生回数をパフォーマンスカウンタ１１４ａ〜１１４ｎのいずれに記録するかについては、測定対象のプログラムの実行前にドライバプログラム等によって指定され、イベント検出部１１２およびカウンタ制御部１１３は、その指定に従って動作する。
【００３１】
また、カウンタ制御部１１３は、コア１２０からカウンタ情報の転送要求を受けると、パフォーマンスカウンタ１１４ａ〜１１４ｎに記録されているカウンタ情報をコア１２０へ転送し、その後、パフォーマンスカウンタ１１４ａ〜１１４ｎをリセットし、それらの内容を０に戻す。このように、カウンタ情報をコア１２０へ転送した後、パフォーマンスカウンタ１１４ａ〜１１４ｎをリセットすることにより、パフォーマンスカウンタ１１４ａ〜１１４ｎの桁溢れを防ぐことができる。
【００３２】
パフォーマンスカウンタ１１４ａ〜１１４ｎに記録できるカウンタ情報の大きさは有限であり、従来は、パフォーマンスカウンタ１１４ａ〜１１４ｎの桁溢れを防ぐため、測定対象のプログラムの所定区間（例えば、ある関数の最初の命令から最後の命令まで）のみを測定区間とし、その他の区間ではカウンタ情報の記録を行わないようにする対処が取られてきた。そのため、測定区間以外の区間の性能測定が必要になった場合は、測定区間を再設定した後、測定対象のプログラムを再実行する必要があり、非常に作業効率が悪かった。
【００３３】
本実施例に係るプロセッサ１００では、適正な間隔でパフォーマンスカウンタ１１４ａ〜１１４ｎをリセットすることにより、パフォーマンスカウンタ１１４ａ〜１１４ｎの桁溢れを防止することができるため、プログラムの性能測定を測定区間に限定する必要がなく、効率よく性能測定作業を進めることができる。
【００３４】
パフォーマンスカウンタ１１４ａ〜１１４ｎは、イベント検出部１１２において検出されたイベントの数をイベントの種別毎に記録するカウンタである。なお、パフォーマンスカウンタ１１４ａ〜１１４ｎは、性能測定のために専用に設けられたものである必要はなく、例えば、汎用レジスタの一部をパフォーマンスカウンタ１１４ａ〜１１４ｎとして活用することとしてもよい。
【００３５】
コア１２０は、コア１１０ａ〜１１０ｃにおいて記録されたカウンタ情報を収集し、それを加工して出力する処理を行うコアであり、カウンタ情報収集部１２１と、タイマ１２２と、カウンタ情報加工部１２３と、命令実行部１２４と、カウンタ情報出力部１２５とを有する。
【００３６】
カウンタ情報収集部１２１は、コア１１０ａ〜１１０ｃからカウンタ情報を収集する処理部である。具体的には、カウンタ情報収集部１２１は、タイマ１２２から定期的に信号を受信し、信号を受信すると、コア１１０ａ〜１１０ｃのカウンタ制御部１１３に対して転送要求を送信する。そして、その応答として、コア１１０ａ〜１１０ｃのカウンタ制御部１１３からカウンタ情報を受信する。タイマ１２２は、一定の期間ごとにカウンタ情報収集部１２１に信号を送信する計時手段である。
【００３７】
カウンタ情報加工部１２３は、カウンタ情報収集部１２１によって収集されたカウンタ情報に必要な加工を施し、カウンタ情報出力部１２５へ引き渡す処理部である。例えば、カウンタ情報加工部１２３は、
クロック数（クロック信号の受信数）／命令実行数（命令の完了数）
を算出することにより、ＣＰＩ（Cycles Per Instruction）を生成し、
キャッシュヒット数／キャッシュ参照数
を算出することにより、キャッシュヒット率を生成する。なお、カウンタ情報加工部１２３は、加工の必要がない情報については、そのままカウンタ情報出力部１２５へ引き渡す。
【００３８】
命令実行部１２４は、カウンタ情報加工部１２３がカウンタ情報を加工するために必要な各種演算処理を実行する回路である。命令実行部１２４は、命令実行部１１１と同様の構成を有し、プログラムの性能測定が行われるとき以外は、命令実行部１１１と同様に、プログラムに含まれる命令列の実行を行う。
【００３９】
カウンタ情報出力部１２５は、カウンタ情報加工部１２３から引き渡されたカウンタ情報を表示部１０４等に出力する処理部である。なお、カウンタ情報を出力する方式については、特に限定しないが、例えば、所定のＡＰＩ（Application Program Interface）やコマンドを発行することにより、カウンタ情報を表示部１０４に文字やグラフとして出力することができる。また、カウンタ情報を表示部１０４に出力する代わりに、ハードディスク１０２に記録することとしてもよいし、ネットワークＩ／Ｆ１０３を介して他の情報処理装置へ送信することとしてもよい。
【００４０】
次に、図２に示したコア１１０ａおよびコア１２０の処理手順について説明する。図３は、測定対象のプログラムを実行するコアであるコア１１０ａの測定処理手順を示すフローチャートである。同図に示すように、コア１１０ａは、まず、指定された内容に従って、どのイベントを検出し、検出したイベント数をパフォーマンスカウンタ１１４ａ〜１１４ｎのいずれに記録するかを初期設定する（ステップＳ１０１）。なお、この指定は、例えば、プログラムの性能測定前に、ユーザがドライバプログラムを設定することで行われる。
【００４１】
そして、命令実行部１１１が、測定対象のプログラムに含まれる命令を実行し（ステップＳ１０２）、予め指定されたイベントが発生すると、イベント検出部１１２がそれらを検出する（ステップＳ１０３）。そして、カウンタ制御部１１３が、パフォーマンスカウンタ１１４ａ〜１１４ｎのうち、検出されたイベントに対応するカウンタを更新してイベントの発生数をカウンタ情報として記録する（ステップＳ１０４）。
【００４２】
ここで、コア１２０からカウンタ情報の転送要求があれば（ステップＳ１０５肯定）、カウンタ制御部１１３が、パフォーマンスカウンタ１１４ａ〜１１４ｎに記録されているカウンタ情報をコア１２０へ転送し（ステップＳ１０６）、その後、パフォーマンスカウンタ１１４ａ〜１１４ｎをリセットして、それらの内容を０に戻す（ステップＳ１０７）。一方、コア１２０からカウンタ情報の転送要求がなければ（ステップＳ１０５否定）、カウンタ情報の転送およびパフォーマンスカウンタ１１４ａ〜１１４ｎのリセットは行われない。
【００４３】
そして、測定対象のプログラムの実行が完了していなければ（ステップＳ１０８否定）、コア１１０ａは、ステップＳ１０２以降の処理手順を再実行し、測定対象のプログラムの実行が完了していれば（ステップＳ１０８肯定）、処理手順を終了させる。
【００４４】
図４は、カウンタ情報を出力するコアであるコア１２０の出力処理手順を示すフローチャートである。同図に示すように、コア１２０は、まず、指定された内容に従って、カウンタ情報をどのように加工するかを初期設定する（ステップＳ２０１）。なお、この指定は、例えば、プログラムの性能測定前に、ユーザがドライバプログラムを設定することで行われる。そして、カウンタ情報収集部１２１は、タイマ１２２からの通知を待ち受け、所定時間が経過してタイマ１２２からの通知を受信すると（ステップＳ２０２）、コア１１０ａ〜１１０ｃに対してカウンタ情報の転送要求を送信する（ステップＳ２０３）。
【００４５】
そして、カウンタ情報収集部１２１が、カウンタ情報を受信すると（ステップＳ２０４）、カウンタ情報加工部１２３が、必要な加工をカウンタ情報に加え（ステップＳ２０５）、カウンタ情報出力部１２５が、カウンタ情報を出力する（ステップＳ２０６）。ここで、処理の実行完了指示があれば（ステップＳ２０７肯定）、コア１２０は、処理手順を終了させ、さもなければ（ステップＳ２０７否定）、ステップＳ２０２以降の処理手順を再実行する。
【００４６】
なお、上記実施例では、コア１２０にタイマ１２２を設け、コア１２０の側でカウンタ情報の受け渡しのタイミングを制御することとしたが、コア１１０ａ〜１１０ｃにタイマ１２２を設け、コア１１０ａ〜１１０ｃの側でカウンタ情報の受け渡しのタイミングを制御することとしてもよい。
【００４７】
上述してきたように、本実施例１では、複数のコアを備えるプロセッサにおいて、コアの１つをカウンタ情報の加工と出力のために機能させることとしたので、専用の機構を設けることなく、性能の測定対象のプログラムを実行しながら、カウンタ情報をリアルタイムで出力することができる。
【００４８】
また、本実施例１では、カウンタ情報を記録するコアから、カウンタ情報の加工と出力を行うコアへカウンタ情報を転送するたびに、カウンタ情報を記憶するカウンタをリセットすることとしたので、カウンタの桁溢れを防止し、もって、測定区間を設定することなく効率よくプログラムの性能測定を行うことができる。
【実施例２】
【００４９】
実施例１では、カウンタ情報を記録するコアと、カウンタ情報の加工と出力を行うコアの間で、カウンタ情報を直接転送する例を示したが、本実施例２では、プロセッサ上のキャッシュを介してカウンタ情報を転送する例を示す。なお、以下の説明では、既に説明した部分と同様の部分には、既に説明した部分と同一の符号を付し、詳細な説明を省略することとする。
【００５０】
図５は、実施例２に係るプロセッサ２００を含む情報処理装置２０の構成を示すブロック図である。同図に示すように、情報処理装置２０は、プロセッサ２００と、メモリ１０１と、ハードディスク１０２と、ネットワークＩ／Ｆ１０３と、表示部１０４と、入力部１０５とをバス１０６で接続して構成されている。
【００５１】
プロセッサ２００は、各種演算処理を実行する集積回路であり、コア２１０ａ〜２１０ｃと、コア２２０と、キャッシュ２３０とを有する。コア２１０ａ〜２１０ｃおよびコア２２０は、それぞれが、独立して演算処理を実行する演算処理部である。キャッシュ２３０は、コア２１０ａ〜２１０ｃおよびコア２２０によって共有される記憶領域である。なお、キャッシュ２３０は、いわゆる１次キャッシュであっても、２次キャッシュであってもよいが、少なくとも、コア２１０ａ〜２１０ｃから書き込みが可能であり、コア２２０から参照が可能である必要がある。
【００５２】
通常、コア２１０ａ〜２１０ｃおよびコア２２０は、いずれも同様に機能し、プロセッサ２００は、４つの処理を並列的に実行する。そして、プログラムの性能測定が必要になった場合には、コア２１０ａ〜２１０ｃは、測定対象のプログラムを実行しながら、予め指定されたイベントの発生数をカウンタ情報として記録し、コア２２０は、コア２１０ａ〜２１０ｃによって記録されたカウンタ情報を収集し、それを加工して表示部１０４等に出力する。
【００５３】
コア２１０ａ〜２１０ｃとコア２２０の間でのカウンタ情報の受け渡しは、キャッシュ２３０を介して行われる。このように、コア２１０ａ〜２１０ｃおよびコア２２０によって共有されるキャッシュ２３０を介してカウンタ情報の受け渡しを行うことにより、コア２１０ａ〜２１０ｃとコア２２０の間にデータを伝送するための経路を設ける必要がなくなり、プロセッサ２００の構成を簡略化することができる。
【００５４】
次に、図５に示したプロセッサ２００の構成についてさらに詳細に説明する。図６は、実施例２に係るプロセッサ２００の構成を示すブロック図である。なお、同図では、説明を簡単にするため、コア２１０ｂおよび２１０ｃの図示を省略しているが、コア２１０ｂおよび２１０ｃは、コア２１０ａと同様の構成を有する。また、同図では、パフォーマンスアナライザ機能に関連する構成のみを図示しており、以下の説明では、コア２１０ａ、コア２２０およびキャッシュ２３０の各部について、パフォーマンスアナライザ機能を実現するための各構成要素として説明を行うこととする。
【００５５】
図６に示すように、コア２１０ａは、命令実行部１１１と、イベント検出部１１２と、カウンタ制御部２１３と、パフォーマンスカウンタ１１４ａ〜１１４ｎと、タイミング制御部２１５と、カウンタ情報書込部２１６とを有する。
【００５６】
カウンタ制御部２１３は、イベント検出部１１２において検出されたイベントの発生回数をパフォーマンスカウンタ１１４ａ〜１１４ｎに記録する処理部である。どのイベントを検出し、その発生回数をパフォーマンスカウンタ１１４ａ〜１１４ｎのいずれに記録するかについては、測定対象のプログラムの実行前にドライバプログラム等によって指定され、イベント検出部１１２およびカウンタ制御部２１３は、その指定に従って動作する。
【００５７】
タイミング制御部２１５は、コア２１０ａとコア２２０の間でカウンタ情報を受け渡すタイミングを制御する制御部である。具体的には、タイミング制御部２１５は、カウンタ情報書込部２１６に対して、所定の期間間隔で、カウンタ情報をキャッシュ２３０のキャッシュラインに書き込むように指示する。そして、書き込みが完了するのを待って、コア２２０に割り込みを送信し、カウンタ情報書込部２１６によってキャッシュラインに書き込まれたカウンタ情報を読み出すように指示する。
【００５８】
タイミング制御部２１５は、パフォーマンスカウンタ１１４ａ〜１１４ｎに記録されるカウンタ情報の単位時間当たりの増加率を監視して、カウンタ情報書込部２１６にカウンタ情報の書き込みを指示する時間間隔を調整する。すなわち、タイミング制御部２１５は、パフォーマンスカウンタ１１４ａ〜１１４ｎに記録されるカウンタ情報の単位時間当たりの増加率を監視し、増加率が予め与えられた閾値よりも小さければ、基準時間毎にカウンタ情報の受け渡しが行われるように指示を行う。一方、増加率が予め与えられた閾値以上であれば、増加率が大きいほどカウンタ情報の受け渡しの時間間隔が短くなるように調整する。
【００５９】
このように、増加率に応じて、コア２１０ａとコア２２０の間でカウンタ情報を受け渡すタイミングを制御することにより、パフォーマンスカウンタ１１４ａ〜１１４ｎの桁溢れを防止しつつ、コア２１０ａとコア２２０の間でカウンタ情報を受け渡す頻度をできるだけ少なくし、カウンタ情報の受け渡しによる負荷の増大を最小限に抑えることができる。
【００６０】
カウンタ情報書込部２１６は、タイミング制御部２１５によって指示されたタイミングで、パフォーマンスカウンタ１１４ａ〜１１４ｎに記録されているカウンタ情報を取得してキャッシュ２３０のキャッシュライン２３０ａに書き込み、その後、パフォーマンスカウンタ１１４ａ〜１１４ｎをリセットさせる処理部である。カウンタ情報書込部２１６がカウンタ情報を書き込むキャッシュラインは、測定対象のプログラムを実行するコア毎に予め指定される。また、カウンタ情報の取得とパフォーマンスカウンタ１１４ａ〜１１４ｎのリセットは、カウンタ制御部２１３を介して実行される。
【００６１】
ここで、キャッシュ２３０を介してカウンタ情報の受け渡しを行う場合の問題について説明する。キャッシュ２３０を介してカウンタ情報の受け渡しを行うこととした場合、キャッシュが汚れてしまい、測定されるキャッシュヒット率が、本来の値よりも低くなってしまうという弊害が起こりうる。
【００６２】
具体的には、カウンタ情報をキャッシュ２３０のキャッシュラインに書き込むときに、キャッシュリプレースによって、測定対象のプログラムが近い将来アクセスするはずであったデータがキャッシュ２３０から追い出されてしまうことが起こりうる。このような現象が発生すると、キャッシュヒットとなるべきキャッシュ参照がキャッシュミスとなってしまうため、記録されるキャッシュヒット数が本来の値よりも小さくなり、カウンタ情報が測定対象のプログラムの性能を正しく表さなくなってしまう。
【００６３】
この問題を解決するため、カウンタ情報書込部２１６は、プログラムの性能測定が行われている間、カウンタ情報の書き込み先として指定されたキャッシュラインのリプレースを禁止する。カウンタ情報の受け渡しに用いられるキャッシュラインのリプレースを禁止することにより、そのキャッシュラインはカウンタ情報の受け渡しのみに使用され、測定対象のプログラムが使用するデータや命令列は、他のキャッシュラインに保持されることになる。このため、カウンタ情報をキャッシュ２３０のキャッシュラインに書き込むときにキャッシュリプレースが発生して、測定対象のプログラムが近い将来アクセスするはずであったデータをキャッシュ２３０から追い出してしまう現象は起こらず、キャッシュヒット数が適正に記録される。なお、どのようにしてキャッシュラインのリプレースを禁止するかについては、図７を用いて後述する。
【００６４】
また、カウンタ情報の受け渡しに用いられるキャッシュラインのリプレースを禁止することは、カウンタ情報として記録されるバスアクティブサイクル数を適正化するためにも有効である。カウンタ情報をキャッシュ２３０のキャッシュラインに書き込むときにキャッシュリプレースが発生してキャッシュミスが増加すると、メモリ１０１へアクセスする回数も増大するために、バス１０６がアクティブになるサイクル数が本来の値よりも多く記録されてしまう。カウンタ情報の受け渡しに用いられるキャッシュラインのリプレースを禁止することにより、キャッシュミスの発生回数が本来の回数に抑制されるため、カウンタ情報として記録されるバスアクティブサイクル数も適正化される。
【００６５】
コア２２０は、コア２１０ａ〜２１０ｃにおいて記録されたカウンタ情報を収集し、それを加工して出力する処理を行うコアであり、カウンタ情報収集部２２１と、カウンタ情報加工部１２３と、命令実行部１２４と、カウンタ情報出力部１２５とを有する。
【００６６】
カウンタ情報収集部２２１は、カウンタ情報書込部２１６によってキャッシュライン２３０ａに書き込まれたカウンタ情報を収集する処理部である。具体的には、カウンタ情報収集部２２１は、タイミング制御部２１５から送信された割り込みが発生するたびに、そのタイミング制御部２１５を含むコアに対応するキャッシュライン２３０ａから、カウンタ情報を読み出し、カウンタ情報加工部１２３に引き渡す。
【００６７】
キャッシュ２３０は、コア２１０ａ〜２１０ｃおよびコア２２０によって共有される記憶領域である。キャッシュ２３０が４ＷＡＹセットアソシアティブキャッシュであるものとして、キャッシュ２３０の詳細を図７に示す。同時に示すように、キャッシュ２３０は、ＷＡＹ２３１ａ〜２３１ｄ（以下、それぞれを「ＷＡＹ１」〜「ＷＡＹ４」と呼ぶこととする）と、ＷＡＹ１〜４に１つずつ対応して存在する比較器２３５ａ〜２３５ｄと、選択器２３６とを有する。
【００６８】
ＷＡＹ１〜４は、それぞれ、０ｘ００〜０ｘｆｆというインデックスに対応する複数のキャッシュラインを有し、各インデックスは、ロックフラグ２３２と、タグ部２３３と、データ部２３４とからなる。ロックフラグ２３２は、当該のキャッシュラインのリプレースが禁止されているか否かを示す１ビットのフラグであり、当該のキャッシュラインのリプレースが禁止されている場合には「１」の値をとり、さもなければ「０」の値をとる。タグ部２３３は、当該のキャッシュラインにデータもしくは命令列が保持されている場合に、そのデータもしくは命令列のアドレスのタグが格納される領域である。データ部２３４は、データもしくは命令列が格納される領域である。
【００６９】
アドレス１を指定してキャッシュ参照が行われた場合、ＷＡＹ１は、アドレス１のインデックス部１ｂの値に対応するキャッシュラインのタグ部２３３の値を比較器２３５ａに送出するとともに、データ部２３４の値を選択器２３６に送出する。そして、比較器２３５ａは、送出されたタグ部２３３の値と、アドレス１のタグ部１ａの値とを比較し、それらが同一であるか否かを選択器２３６へ通知する。
【００７０】
同様に、ＷＡＹ２〜４は、アドレス１のインデックス部１ｂの値に対応するキャッシュラインのタグ部２３３の値を、それぞれ、比較器２３５ｂ〜２３５ｄに送出するとともに、データ部２３４の値を選択器２３６に送出する。そして、比較器２３５ｂ〜２３５ｄは、送出されたタグ部２３３の値と、アドレス１のタグ部１ａの値とを比較し、それらが同一であるか否かを選択器２３６へ通知する。
【００７１】
そして、選択器２３６は、比較器２３５ａ〜２３５ｄのいずれか１つから、送出されたタグ部２３３の値とアドレス１のタグ部１ａの値が同一である旨の通知を受けると、その比較器に対応するＷＡＹから送出されたデータ部２３４の値と、キャッシュヒットを示す信号とを出力する。一方、送出されたタグ部２３３の値とアドレス１のタグ部１ａの値とが同一である旨の通知がなかった場合は、キャッシュミスを示す信号を出力する。
【００７２】
また、キャッシュ２３０は、新たなデータや命令列を保持することが必要になると、そのデータや命令列のアドレスのインデックス部１ｂの値を取得し、いずれかのＷＡＹにおいてその値に対応する未使用のキャッシュラインが存在するか否かを確認する。そして、該当するキャッシュラインがあった場合は、データや命令列をそのキャッシュラインに格納し、該当するキャッシュラインがなかった場合は、リプレースを実行する。
【００７３】
リプレースの対象となるキャッシュラインは、インデックス部１ｂの値に対応するキャッシュラインの中でリプレースが禁止されていないもの、すなわち、ロックフラグの値が「０」であるものから選択される。ロックフラグの値が「０」であるキャッシュラインが複数存在する場合は、一般的なＬＲＵ（Least Recently Used）ロジックをもちいてその１つを選択することとしてもよいし、処理を簡単にするために、ランダムに１つを選択することとしてもよい。
【００７４】
キャッシュラインのリプレースの禁止は、例えば、
ｓｔ  ｒｅｇ０００１  ０ｘｆｆｆ００１００
のような命令をコア２１０ａ等が実行することで実現することができる。
【００７５】
「ｓｔ」は、データの書き込みを指示する命令であり、「ｒｅｇ０００１」は、書き込むべきデータが格納されているレジスタの名前である。書き込み先アドレスである「０ｘｆｆｆ００１００」は、データの書き込みのキャッシュラインを指定し、そのキャッシュラインのリプレースの禁止を指示する擬似命令である。
【００７６】
具体的には、先頭の１２ビットである「ｆｆｆ」は、このアドレスが、キャッシュラインの指定とリプレースの禁止を指示する擬似命令であることを示すフラグである。ここでは、上位１２ビットが「ｆｆｆ」であるアドレスは、存在し得ないアドレスであるものと想定しており、存在し得ないアドレスを指定することにより、通常の書き込み命令と同様の形式で、キャッシュラインのリプレースの禁止を実行することができるようになっている。
【００７７】
続く４ビットである「０」は、対象のキャッシュラインを含むＷＡＹを指定する番号である。「０」は、対象のキャッシュラインが最初のＷＡＹであるＷＡＹ１に含まれることを意味する。続く８ビットである「０１」は、対象のキャッシュラインのインデックスである。すなわち、上記の命令は、「ｒｅｇ０００１」という名のレジスタの値を、ＷＡＹ１のインデックス０ｘ０１のキャッシュラインに書き込み、そのキャッシュラインのロックフラグの値を「１」に設定してリプレースを禁止すべき旨を示す。
【００７８】
同様に、キャッシュラインのリプレース禁止の解除は、例えば、
ｓｔ  ｒｅｇ０００１  ０ｘｆｆｅ００１００
のような命令をコア２２０等が実行することで実現することができる。ここでは、上位１２ビットが「ｆｆｅ」であるアドレスは、存在し得ないアドレスであるものと想定しており、リプレースの禁止時とは別の存在し得ないアドレスを指定することにより、通常の書き込み命令と同様の形式で、キャッシュラインのリプレース禁止を解除することができるようにしている。
【００７９】
なお、同一のインデックスに対応するキャッシュラインのリプレースが、複数のＷＡＹにおいて禁止されると、測定対象のプログラムが使用できるキャッシュラインが減少し、スラッシングが発生するおそれがある。このため、カウンタ情報の受け渡しに用いられるキャッシュラインは、測定対象のプログラムを実行するコア毎にインデックスが異なっていることが好ましい。
【００８０】
次に、図６に示したコア２１０ａおよびコア２２０の処理手順について説明する。図８は、測定対象のプログラムを実行するコアであるコア２１０ａの測定処理手順を示すフローチャートである。同図に示すように、コア２１０ａは、まず、指定された内容に従って、どのイベントを検出し、検出したイベント数をパフォーマンスカウンタ１１４ａ〜１１４ｎのいずれに記録するかを初期設定する（ステップＳ３０１）。
【００８１】
そして、命令実行部１１１が、測定対象のプログラムに含まれる命令を実行し（ステップＳ３０２）、予め指定されたイベントが発生すると、イベント検出部１１２がそれらを検出する（ステップＳ３０３）。そして、カウンタ制御部２１３が、パフォーマンスカウンタ１１４ａ〜１１４ｎのうち、検出されたイベントに対応するカウンタを更新してイベントの発生数をカウンタ情報として記録する（ステップＳ３０４）。
【００８２】
そして、タイミング制御部２１５が、後述するタイミング判定処理を実行し（ステップＳ３０５）、タイミング制御部２１５から書き込み指示があった場合は（ステップＳ３０６肯定）、カウンタ情報書込部２１６が、カウンタ情報をキャッシュ２３０に書き込むとともに、カウンタ情報を書き込んだキャッシュラインのリプレースを禁止する（ステップＳ３０７）。そして、カウンタ情報書込部２１６が、カウンタ制御部２１３に、パフォーマンスカウンタ１１４ａ〜１１４ｎをリセットするように指示し（ステップＳ３０８）、タイミング制御部２１５が、コア２２０にカウンタ情報の読み取りを指示する割り込みを送信する（ステップＳ３０９）。一方、タイミング制御部２１５から書き込み指示がなかった場合は（ステップＳ３０６否定）、Ｓ３０７〜Ｓ３０９は実行されない。
【００８３】
そして、コア２１０ａは、測定対象のプログラムの実行が完了していなければ（ステップＳ３１０否定）、ステップＳ３０２以降の処理手順を再実行し、測定対象のプログラムの実行が完了していれば（ステップＳ３１０肯定）、処理手順を終了させる。
【００８４】
図９は、図８に示したタイミング判定処理の判定処理手順を示すフローチャートである。同図に示すように、タイミング制御部２１５は、パフォーマンスカウンタ１１４ａ〜１１４ｎを参照してカウンタ値の増加率を算出し（ステップＳ４０１）、増加率が所定の閾値よりも小さければ（ステップＳ４０２肯定）、基準時間を処理待ち間隔として設定する（ステップＳ４０３）。
【００８５】
一方、増加率が所定の閾値以上であれば（ステップＳ４０２否定）、タイミング制御部２１５は、増加率の大きさに応じて処理待ち間隔が小さくなるように、基準時間を増加率で割った値を処理待ち間隔として設定する（ステップＳ４０４）。そして、処理待ち間隔が、所定の最小値よりも小さければ（ステップＳ４０５肯定）、処理待ち間隔を最小値に設定し直す（ステップＳ４０６）。ここで、処理待ち間隔に最小値を設けているのは、カウンタ情報書込部２１６によって書き込まれたカウンタ情報が、カウンタ情報収集部２２１によって取得される前に、カウンタ情報書込部２１６によって上書きされてしまうことを防止するためである。
【００８６】
そして、タイミング制御部２１５は、カウンタ情報書込部２１６に対してカウンタ情報の書き込みを前回指示したときから処理待ち間隔が経過していれば（ステップＳ４０７肯定）、カウンタ情報書込部２１６に対してカウンタ情報の書き込みを指示する（ステップＳ４０８）。
【００８７】
図１０は、カウンタ情報を出力するコアであるコア２２０の出力処理手順を示すフローチャートである。同図に示すように、コア２２０は、まず、指定された内容に従って、カウンタ情報をどのように加工するかを初期設定する（ステップＳ５０１）。そして、カウンタ情報収集部２２１は、タイミング制御部２１５からの割り込みを待ち受け、割り込みを受信すると（ステップＳ５０２）、キャッシュ２３０からカウンタ情報を取得する（ステップＳ５０３）。
【００８８】
そして、カウンタ情報加工部１２３が、必要な加工をカウンタ情報に加え（ステップＳ５０４）、カウンタ情報出力部１２５が、カウンタ情報を出力する（ステップＳ５０５）。ここで、処理の実行完了指示があれば（ステップＳ５０６肯定）、コア２２０は、キャッシュラインのリプレース禁止を解除し（ステップＳ５０７）、処理手順を終了させる。一方、処理の実行完了指示がなければ（ステップＳ５０６否定）、コア２２０は、ステップＳ５０２以降の処理手順を再実行する。
【００８９】
なお、上記実施例では、キャッシュ２３０を介してカウンタ情報の受け渡しを行う例を示したが、主記憶のアドレス空間の一部としてアクセス可能な記憶領域であるローカルメモリがプロセッサ２００上に存在し、そのローカルメモリがコア２１０ａ〜２１０ｃおよび２２０からアクセス可能であれば、ローカルメモリを介してカウンタ情報の受け渡しを行うこととしてもよい。
【００９０】
上述してきたように、本実施例２では、コア間でのカウンタ情報の受け渡しを、コアによって共有されているキャッシュを介して行うこととしたので、カウンタ情報の受け渡しを行うための経路をコア間に設ける必要がなく、プロセッサの構成の複雑化を回避することができる。
【００９１】
また、本実施例２では、カウンタ情報の受け渡しのために使用されるキャッシュラインのリプレースを禁止することとしたので、キャッシュを介してカウンタ情報の受け渡しを行うことにより、キャッシュヒット率等の性能測定結果が不適切な値となることを防止することができる。
【実施例３】
【００９２】
実施例１および２では、カウンタ情報の加工と出力をハードウェアによって行う例を示したが、カウンタ情報の加工と出力をソフトウェアによって行うこともできる。そこで、本実施例３では、カウンタ情報の加工と出力を性能指標情報出力プログラム３４０によって行う例について説明することとする。
【００９３】
図１１は、実施例３に係る性能指標情報出力プログラム３４０を実行する情報処理装置３０の構成を示すブロック図である。同図に示すように、情報処理装置３０は、プロセッサ３００と、メモリ１０１と、ハードディスク１０２と、ネットワークＩ／Ｆ１０３と、表示部１０４と、入力部１０５とをバス１０６で接続して構成されている。
【００９４】
プロセッサ３００は、各種演算処理を実行する集積回路であり、コア２１０ａ〜２１０ｃと、コア３２０と、キャッシュ２３０とを有する。コア２１０ａ〜２１０ｃおよびコア３２０は、それぞれが、独立して演算処理を実行する演算処理部である。
【００９５】
通常、コア２１０ａ〜２１０ｃおよびコア３２０は、いずれも同様に機能し、プロセッサ３００は、４つの処理を並列的に実行する。そして、プログラムの性能測定が必要になった場合には、コア２１０ａ〜２１０ｃは、測定対象のプログラムを実行しながら、予め指定されたイベントの発生数をカウンタ情報として記録する。そして、コア３２０は、性能指標情報出力プログラム３４０（図中「ｐｒｇ」と表記）を実行し、コア２１０ａ〜２１０ｃによって記録されたカウンタ情報を収集し、それを加工して表示部１０４等に出力する処理を性能指標情報出力プログラム３４０に行わせる。
【００９６】
性能指標情報出力プログラム３４０は、ハードディスク１０２や、情報処理装置３０とネットワーク接続された他の装置に記憶され、必要に応じて、コア３２０に読み出されてメモリ１０１に展開され、実行可能状態となる。そして、キャッシュ２３０やメモリ１０１に保持された各種情報を利用して、カウンタ情報の収集処理、加工処理および出力処理を実行する。
【００９７】
次に、性能指標情報出力プログラム３４０の構成について説明する。図１２は、実施例３に係る性能指標情報出力プログラム３４０の構成を示すブロック図である。同図に示すように、性能指標情報出力プログラム３４０は、割り込みハンドラ３４１と、カウンタ情報収集部３４２と、カウンタ情報加工部３４３と、カウンタ情報出力部３４４とを有する。
【００９８】
割り込みハンドラ３４１は、タイミング制御部２１５から送信された割り込みを検出し、割り込みを検出した旨をカウンタ情報収集部３４２に通知する処理部である。カウンタ情報収集部３４２は、カウンタ情報書込部２１６によってキャッシュライン２３０ａに書き込まれたカウンタ情報を収集する処理部である。具体的には、カウンタ情報収集部３４２は、タイミング制御部２１５から送信された割り込みが割り込みハンドラ３４１において検出されるたびに、そのタイミング制御部２１５を含むコアに対応するキャッシュラインから、カウンタ情報を読み出し、それをカウンタ情報加工部３４３に引き渡す。
【００９９】
カウンタ情報加工部３４３は、カウンタ情報収集部３４２によって収集されたカウンタ情報に必要な加工を施し、カウンタ情報出力部３４４へ引き渡す処理部である。カウンタ情報出力部３４４は、カウンタ情報加工部３４３から引き渡されたカウンタ情報を表示部１０４等に出力する処理部である。例えば、カウンタ情報出力部３４４は、表示部１０４に情報表示用のウィンドウを表示し、そのウィンドウ上にカウンタ情報の経時的な変化をグラフとして出力する。
【０１００】
なお、カウンタ情報の加工と出力を性能指標情報出力プログラム３４０に行わせることとした場合、性能指標情報出力プログラム３４０の動作によってキャッシュ２３０等の状態が変化し、測定対象のプログラムの性能を正確に測定できなくなる可能性がある。この可能性を低減するために、性能指標情報出力プログラム３４０が動作するコア３２０が使用するキャッシュラインを全てリプレース禁止とし、性能指標情報出力プログラム３４０の動作によってキャッシュ２３０の状態が変化しないようにしてもよい。また、図１３に示すように、性能指標情報出力プログラム３４０を実行するコア３２０が動作している間は、コア２１０ａ〜２１０ｃが動作しないようにコア３２０もしくはその他の制御部が制御し、性能指標情報出力プログラム３４０の動作が、測定対象のプログラムを実行するコア２１０ａ〜２１０ｃにできるだけ影響を及ぼさないようにしてもよい。
【０１０１】
上述してきたように、本実施例３では、カウンタ情報の加工と出力をソフトウェアによって行うこととしたので、カウンタ情報の加工と出力のためのハードウェアが不要となり、プロセッサの構成の複雑化を回避することができる。
【０１０２】
（付記１）複数の演算処理部を有するプロセッサにおいて、
実行される命令群の性能を評価するためのイベントの発生を検出するイベント検出手段と、前記イベント検出手段において検出されたイベントの数をイベントの種別毎に記録するカウンタとを有する１つあるいは複数の第１の演算処理部と、
前記カウンタに記録された値を前記命令群の性能を示す性能指標情報に加工処理する加工処理手段と、前記加工処理手段で加工処理された前記性能指標情報を出力する出力手段とを有する１つあるいは複数の第２の演算処理部と
を備えたことを特徴とするプロセッサ。
【０１０３】
（付記２）前記第１の演算処理部から書き込み可能で、かつ、前記第２の演算処理部から読み出し可能な記憶手段を備え、
前記第１の演算処理部は、前記カウンタに記録された値を前記記憶手段に書き込む書込手段をさらに有し、前記第２の演算処理部は、前記記憶手段に書き込まれた情報を読み出し、前記加工手段に加工を行わせる情報収集手段をさらに有することを特徴とする付記１に記載のプロセッサ。
【０１０４】
（付記３）前記情報書込手段は、前記カウンタに記録された値を前記記憶手段に書き込んだ後、前記カウンタに記録された値をリセットさせることを特徴とする付記２に記載のプロセッサ。
【０１０５】
（付記４）前記情報書込手段は、前記カウンタに記録された値を書き込んだ前記記憶手段内の領域をリプレース禁止に設定することを特徴とする付記２または３に記載のプロセッサ。
【０１０６】
（付記５）前記情報書込手段は、存在しないアドレスを指定した入出力命令を実行することにより、前記領域をリプレース禁止に設定することを特徴とする付記４に記載のプロセッサ。
【０１０７】
（付記６）前記記憶手段は、情報を格納する領域毎にリプレースを禁止するか否かを示すフラグを有することを特徴とする付記４または５に記載のプロセッサ。
【０１０８】
（付記７）前記第１の演算処理部は、前記カウンタに記録される値の増加率を監視し、増加率が大きいほど、前記情報書込手段と前記情報収集手段の間での情報のやりとりが短い間隔で実行されるように制御するタイミング制御手段をさらに含むことを特徴とする付記２〜６のいずれか１つに記載のプロセッサ。
【０１０９】
（付記８）複数の演算処理部を有する情報処理装置において、
実行される命令群の性能を評価するためのイベントの発生を検出するイベント検出手段と、前記イベント検出手段において検出されたイベントの数をイベントの種別毎に記録するカウンタとを有する１つあるいは複数の第１の演算処理部と、
前記カウンタに記録された値を前記命令群の性能を示す性能指標情報に加工処理する加工処理手段と、前記加工処理手段で加工処理された前記性能指標情報を出力する出力手段とを有する１つあるいは複数の第２の演算処理部と
を備えたことを特徴とする情報処理装置。
【０１１０】
（付記９）１つあるいは複数の第１の演算処理部と１つあるいは複数の第２の演算処理部とを備えるプロセッサにおいて実行される命令群の性能を示す性能指標情報を出力する性能指標情報出力プログラムであって、
前記第１の演算処理部において実行される命令群の性能を評価するためのイベントの発生数を前記第１の演算処理部から取得する情報収集手順と、
前記情報収集手順によって収集された値を前記性能指標情報へ加工する加工手順と、
前記加工手順において加工された前記性能指標情報を出力する出力手順と
を前記第２の演算処理部に実行させることを特徴とする性能指標情報出力プログラム。
【産業上の利用可能性】
【０１１１】
以上のように、本発明に係る演算処理装置及び演算処理装置の制御方法は、プログラムの性能を示す指標情報を出力するために有用であり、特に、装置の構成を複雑化することなく、プログラムの性能を示す指標情報をリアルタイムで出力することが必要な場合に適している。
【図面の簡単な説明】
【０１１２】
【図１】実施例１に係るプロセッサを含む情報処理装置の構成を示すブロック図である。
【図２】実施例１に係るプロセッサの構成を示すブロック図である。
【図３】測定プログラムを実行するコアの測定処理手順を示すフローチャートである。
【図４】カウンタ情報を出力するコアの出力処理手順を示すフローチャートである。
【図５】実施例２に係るプロセッサを含む情報処理装置の構成を示すブロック図である。
【図６】実施例２に係るプロセッサの構成を示すブロック図である。
【図７】実施例２に係るプロセッサのキャッシュの構成を示すブロック図である。
【図８】測定プログラムを実行するコアの測定処理手順を示すフローチャートである。
【図９】タイミング判定処理の判定処理手順を示すフローチャートである。
【図１０】カウンタ情報を出力するコアの出力処理手順を示すフローチャートである。
【図１１】実施例３に係る性能指標情報出力プログラムを実行する情報処理装置の構成を示すブロック図である。
【図１２】実施例３に係る性能指標情報出力プログラムの構成を示す図である。
【図１３】実施例３に係る性能指標情報出力プログラムの動作タイミングを示す図である。
【符号の説明】
【０１１３】
１  アドレス
１ａ  タグ部
１ｂ  インデックス部
１０  情報処理装置
１００  プロセッサ
１０１  メモリ
１０２  ハードディスク
１０３  ネットワークＩ／Ｆ
１０４  表示部
１０５  入力部
１０６  バス
１１０ａ〜１１０ｃ  コア
１１１  命令実行部
１１２  イベント検出部
１１３  カウンタ制御部
１１４ａ〜１１４ｎ  パフォーマンスカウンタ
１２０  コア
１２１  カウンタ情報収集部
１２２  タイマ
１２３  カウンタ情報加工部
１２４  命令実行部
１２５  カウンタ情報出力部
２０  情報処理装置
２００  プロセッサ
２１０ａ〜２１０ｃ  コア
２１３  カウンタ制御部
２１５  タイミング制御部
２１６  カウンタ情報書込部
２２０  コア
２２１  カウンタ情報収集部
２３０  キャッシュ
２３０ａ  キャッシュライン
２３１ａ〜２３１ｄ  ＷＡＹ
２３２  ロックフラグ
２３３  タグ部
２３４  データ部
２３５ａ〜２３５ｄ  比較器
２３６  選択器
３０  情報処理装置
３００  プロセッサ
３２０  コア
３４０  性能指標情報出力プログラム
３４１  割り込みハンドラ
３４２  カウンタ情報収集部
３４３  カウンタ情報加工部
３４４  カウンタ情報出力部
【図１】
0004861270.tif 000002
【図２】
0004861270.tif 000003
【図３】
0004861270.tif 000004
【図４】
0004861270.tif 000005
【図５】
0004861270.tif 000006
【図６】
0004861270.tif 000007
【図７】
0004861270.tif 000008
【図８】
0004861270.tif 000009
【図９】
0004861270.tif 000010
【図１０】
0004861270.tif 000011
【図１１】
0004861270.tif 000012
【図１２】
0004861270.tif 000013
【図１３】
0004861270.tif 000014