(57)【要約】【課題】正確な情報を得ることができ、処理の高速化を図ることができる。【解決手段】プロファイリング装置１は、実機環境で動作可能な装置である。プログラム実行手段２は、情報収集対象プログラム６の実行を行う。割り込み発生手段３は、予め定められた時間毎に割り込みを発生させる。収集手段４は、割り込みにより起動され、情報収集対象プログラム６のデータアクセス先およびデータアクセス先の割り込み回数を収集する。表示手段５は、収集手段４により収集された情報を表示する。【選択図】図１
2008210011.tif 000002
【特許請求の範囲】
【請求項１】
実機環境で動作可能なプロファイリング装置であって、
情報収集対象プログラムの実行を行うプログラム実行手段と、
予め定められた時間毎に割り込みを発生させる割り込み発生手段と、
前記割り込みにより起動され、前記情報収集対象プログラムのデータアクセス先および前記データアクセス先の割り込み回数を収集する収集手段と、
前記収集手段により収集された情報を表示する表示手段と、
を有することを特徴とするプロファイリング装置。
【請求項２】
前記収集手段は、前記割り込みの発生したプログラムカウンタを取得し、取得した前記プログラムカウンタの機械語を判定することにより前記データアクセス先を収集することを特徴とする請求項１記載のプロファイリング装置。
【請求項３】
前記収集手段は、取得した前記プログラムカウンタの機械語の命令種別がロード命令またはストア命令であった場合前記データアクセス先を収集することを特徴とする請求項２記載のプロファイリング装置。
【請求項４】
前記収集手段は、前記割り込みが発生したとき、割り込み発生時のレジスタを参照して前記データアクセス先を収集することを特徴とする請求項１記載のプロファイリング装置。
【請求項５】
当該プロファイリング装置がＯＳを備えている場合、
前記収集手段は、前記割り込みが発生したとき、前記ＯＳの内部領域に退避されている領域を参照して前記データアクセス先を収集することを特徴とする請求項１記載のプロファイリング装置。
【請求項６】
前記データアクセス先に対応したデータ定義位置を割り出し、割り出した前記データ定義位置を前記割り込み回数と対比させて前記表示手段に表示させる表示データを作成する表示データ作成手段をさらに有することを特徴とする請求項１記載のプロファイリング装置。
【請求項７】
前記収集手段は、前記割り込みの発生したプログラムカウンタを取得し、取得した前記プログラムカウンタから対応する関数、処理、アセンブラ命令のそれぞれの粒度単位で構成されるプログラム定義位置を割り出し、前記データアクセス先および前記割り込み回数とともに対比させて前記表示手段に表示させる表示データを作成する表示データ作成手段をさらに有することを特徴とする請求項１記載のプロファイリング装置。
【請求項８】
前記収集手段は、同一の前記データアクセス先に対する前回のアクセス時間から今回のアクセス時間の差分情報を収集し、
前記データアクセス先に対応したデータ定義位置を割り出し、割り出した前記データ定義位置を収集した前記差分情報とともに対比させて前記表示手段に表示させる表示データを作成する表示データ作成手段をさらに有することを特徴とする請求項１記載のプロファイリング装置。
【請求項９】
前記割り込み発生手段は、ハードウェアカウンタの任意のイベント発生をトリガにして前記割り込みを発生させることを特徴とする請求項１記載のプロファイリング装置。
【請求項１０】
実機環境で動作可能なプロファイリングプログラムであって、
コンピュータを、
情報収集対象プログラムの実行を行うプログラム実行手段、
予め定められた時間毎に割り込みを発生させる割り込み発生手段、
前記割り込みにより起動され、前記情報収集対象プログラムのデータアクセス先および前記データアクセス先の割り込み回数を収集する収集手段、
前記収集手段により収集された情報を表示する表示手段、
として機能させることを特徴とするプロファイリングプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はプロファイリング装置およびプロファイリングプログラムに関し、特に、実機環境で動作可能なプロファイリング装置およびプロファイリングプログラムに関する。
【背景技術】
【０００２】
コンピュータシステムの性能分析や最適化を行う手段として、プロファイリングが広く用いられている。プロファイリングは、ターゲットとするプログラムコードの走行頻度、時間分布、またプログラム内部の呼出し関係頻度等の分析に有効である。一般的なプロファイリング手法として例えば以下の２つがある。
【０００３】
１つはコンパイラにプロファイリング用コードを挿入させ、実行情報を採取する方法である（図１５参照）。この方法は、一般的に使用されているプロファイリング手法であり、コンパイラ製品に標準機能として実装されていることが多い。また、この方法に対するいくつかのデータ採取効率化方法も提案されている（例えば、特許文献１参照）。
【０００４】
しかしながら、このコンパイラによるプロファイリングコード挿入方式には、対象とするコード全般にプロファイリング用処理が付加されるために時間的オーバヘッドが生じる、あるいは、コード挿入のために本来のプログラムバイナリと動作的、メモリ配置的に差異が生じるといった問題がある。特に、通信等のタイミングが重要なプログラムでは本来の動作と異なる場合が多く、必要精度により使用が制限される場合がある。
【０００５】
もう１つは、ハードウェアタイマ、またはＣＰＵ（Central Processing Unit）の性能モニタリング機構を利用したサンプリングによるプロファイリング方法である。この方法では、一定の時間毎に、あるいはプロセッサや周辺回路で計測可能な実行命令数やキャッシュミス数等が一定の回数に到達する毎にサンプリング割り込みを発生させ、割り込み処理として登録したプロファイリング処理プログラムで割り込み発生時の実行命令アドレス等を記録することで、統計的に最も時間を費やしたコード範囲や最も頻繁に実行されたコード範囲等を抽出する（例えば、特許文献２参照）。分岐命令ごとに割り込みを発生させる手法等もある（例えば、特許文献３参照）。しかしながらサンプリングによるプロファイリング方式においては、対象とするコードに対する改変は必要ないためオーバヘッドの問題やメモリ配置の問題は極小化可能であるが、サンプリングされる際の実行命令アドレスに至る経路やその呼出し関係が採取できない、あるいは完全ではないという問題がある。
【０００６】
以上は、プログラム命令に関する実行コストの高い処理箇所やプログラム命令コード位置を特定するための手法である。一方、プログラムからアクセスするデータ配置に関するプログラムのチューニング手法が知られている。このチューニング方法は、プログラムのデータアクセス時にはメモリ参照を伴う。そのメモリアクセスコストを削減するために、データキャッシュメモリを実装して一度アクセスしたデータを高速度アクセス可能なキャッシュメモリに残し、再度メモリアクセス要求があったときに直接メモリではなく、キャッシュメモリから取り出す方法である。また、キャッシュを使用することで主記憶へのアクセス回数を減らし、性能向上するばかりでなくメモリアクセスに起因する消費電力を削減する効果もある。このデータキャッシュメモリを使用する方法については、キャッシュメモリミスを削減するための各種データ配置手法が検討されている（例えば、特許文献４参照）。
【０００７】
また、逐次型言語により記述したプログラムを分散記憶型並列計算機用のコードに変換する際に、該並列計算機を構成する複数のプロセッシングエレメントに対して、当該プログラム中の並列化可能な部分を割り付けるとともにその部分の処理に必要な配列データを分散・配置するためのデータレイアウト方法も考案されている（例えば、特許文献５参照）。
【０００８】
さらに、高速メモリと低速メモリとが具備されているプロセッサにおいても、高頻度アクセスデータを低速メモリから高速メモリに配置することで性能向上する効果がある。同様に高頻度アクセスデータを高電力メモリから低電力メモリに配置することで消費電力を削減することができる。このようにプログラムでの高頻度アクセスデータを最適なメモリ領域に配置することが重要となっている。
【０００９】
なお、データ配置に着目した手法として、シミュレータによりアクセスデータを調査して、最適なデータ配置をする手法が提案されている（例えば、特許文献６参照）。この手法によれば、シミュレータで高アクセスコスト（実行サイクル数）をシミュレートするが、以下の（ａ）〜（ｃ）に示す問題があった。
【００１０】
（ａ）１命令ずつシミュレータでトレースするため時間がかかる。
（ｂ）シミュレータでは、実機環境特有の問題（アクセスレイテンシの遅延等）に起因する正確な情報が取得できない。
【００１１】
（ｃ）実機環境でのデータアクセス頻度情報を取得する手段がない。
このようにシミュレータ環境ではなく、実機環境でのデータアクセス頻度情報の取得手法の開発が望まれていた。
【特許文献１】特開平１１−２１２８３７号公報
【特許文献２】特開平６−３４２３８６号公報
【特許文献３】特開平１１−３２７９５１号公報
【特許文献４】特開２００５−１２２５０６号公報
【特許文献５】特開９−２８２２９０号公報
【特許文献６】特開平７−１９１８８２号公報
【発明の開示】
【発明が解決しようとする課題】
【００１２】
プログラムからアクセスするデータを、プログラム性能向上および省電力のために最適に配置するチューニング手法をまとめると、以下の２点になる。
（１）プログラム実行前に静的なソース情報をもとにコンパイラ等ツールが自動的に最適なデータ配置を決定する。
【００１３】
（２）利用者がプログラムから高頻度にアクセスするデータを特定し、高速メモリに配置する。
しかし、従来これらを実現するには、それぞれ問題があった。
【００１４】
（１）は、プログラムでのデータアクセス頻度が把握できないため、実行頻度が少ない箇所に対して適用しても効果が少ない。
（２）は、利用者がプログラムから高頻度アクセスするデータを特定することは、プログラムからデータアクセスに対するアクセスコスト（サイクル数）を実機環境で求める手段がなかったため、事実上不可能である。さらに、例えば、シミュレータで高アクセスコスト（実行サイクル数）をシミュレートできるが、実機環境と異なり（ａ）１命令ずつシミュレータでトレースするため時間がかかる。（ｂ）実機環境特有の問題（アクセスレイテンシの遅延等）に起因する正確な情報が取得できない。（ｃ）実機環境でのデータアクセス頻度情報を取得する手段がない、等の問題があった。
【００１５】
本発明はこのような点に鑑みてなされたものであり、正確な情報を得ることができるプロファイリング装置およびプロファイリングプログラムを提供することを目的とする。
また、他の目的として、処理の高速化を図ることができるプロファイリング装置およびプロファイリングプログラムを提供することを目的とする。
【課題を解決するための手段】
【００１６】
本発明では上記問題を解決するために、図１に示すようなプロファイリング装置１が提供される。プロファイリング装置１は、実機環境で動作可能な装置である。
プロファイリング装置１は、プログラム実行手段２と、割り込み発生手段３と、収集手段４と、表示手段５とを有している。
【００１７】
プログラム実行手段２は、情報収集対象プログラム６の実行を行う。
割り込み発生手段３は、予め定められた時間毎に割り込みを発生させる。
収集手段４は、割り込みにより起動され、情報収集対象プログラム６のデータアクセス先およびデータアクセス先の割り込み回数を収集する。
【００１８】
表示手段５は、収集手段４により収集された情報を表示する。
このようなプロファイリング装置１によれば、プログラム実行手段２により、情報収集対象プログラム６の実行が行われる。割り込み発生手段３により、予め定められた時間毎に割り込みが発生する。収集手段４により、情報収集対象プログラム６のデータアクセス先およびデータアクセス先の割り込み回数が収集される。表示手段５により、収集手段４によって収集された情報が表示される。
【発明の効果】
【００１９】
本発明によれば、情報収集対象プログラムのデータアクセス先およびデータアクセス先の割り込み回数を収集するようにしたので、実機環境において、データアクセスコスト（実行サイクル数）を求めることができる。そのため、従来は勘に頼っていたデータ配置に対する最適化に迅速に対応することができ、性能向上、省電力のためのチューニング工数が大幅に節約できる。
【００２０】
また、例えばアクセスコストが高い変数のみをピックアップして、高速メモリ領域（ＣＰＵ内蔵ＲＡＭ（Random Access Memory）等）に優先的にデータ配置する等、メモリ階層を意識したデータの再配置が可能となる。
【発明を実施するための最良の形態】
【００２１】
以下、本発明の実施の形態を、図面を参照して詳細に説明する。
まず、本発明の概要について説明し、その後、実施の形態を説明する。
図１は、本発明の概要を示す図である。
【００２２】
プロファイリング装置１は、プログラム実行手段２と、割り込み発生手段３と、収集手段４と、表示手段５とを有している。
プログラム実行手段２は、情報収集対象プログラム６の実行を行う。
【００２３】
割り込み発生手段３は、タイマ等によって予め定められた時間毎に割り込みを発生させる。
収集手段４は、割り込みにより起動され、情報収集対象プログラム６のデータアクセス先およびデータアクセス先の割り込み回数を収集する。
【００２４】
表示手段５は、収集手段４により収集された情報を表示する。すなわち、データアクセス先および割り込み回数およびこれらの情報をユーザが見易いように加工した情報等を表示する。
【００２５】
このようなプロファイリング装置１によれば、プログラム実行手段２により、情報収集対象プログラム６の実行が行われる。割り込み発生手段３により、予め定められた時間毎に割り込みが発生する。収集手段４により、情報収集対象プログラム６のデータアクセス先およびデータアクセス先の割り込み回数が収集される。表示手段５により、収集手段４によって収集された情報が表示される。
【００２６】
以下、本発明の実施の形態を説明する。
図２は、プロファイリング装置のハードウェア構成例を示す図である。
プロファイリング装置１００は、ＣＰＵ１０１によって装置全体が制御されている。ＣＰＵ１０１には、バス１０７を介してＲＡＭ１０２、ハードディスクドライブ（ＨＤＤ:Hard Disk Drive）１０３、グラフィック処理装置１０４、入力インタフェース１０５、および通信インタフェース１０６が接続されている。
【００２７】
ＣＰＵ１０１は、例えば内蔵タイマ等により得られる一定時間毎に、割り込みを発生させる。割り込みが発生するとＣＰＵ１０１は実行中のプログラムが扱っているデータ等をＲＡＭ１０２に退避して割り込み要求の種類に応じて割り込みハンドラを呼び出す。ハンドラが終了すると退避しておいたデータを元に戻して、プログラムを続行する。
【００２８】
ＲＡＭ１０２には、ＣＰＵ１０１に実行させるＯＳ（Operating System）を搭載する場合は、そのプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、ＲＡＭ１０２には、ＣＰＵ１０１による処理に必要な各種データが格納される。
【００２９】
ＨＤＤ１０３には、ＯＳを搭載する場合のＯＳや、アプリケーションプログラム（例えば、情報収集対象プログラムやプロファイリングを行うためのプロファイリングプログラム等）等が格納される。また、ＨＤＤ１０３内には、プログラムファイルが格納される。なお、ＨＤＤ１０３の代わりにＲＯＭ（Read Only Memory）であってもよい。
【００３０】
グラフィック処理装置１０４には、モニタ１１が接続されている。グラフィック処理装置１０４は、ＣＰＵ１０１からの命令に従って、画像をモニタ１１の画面に表示させる。  入力インタフェース１０５には、キーボード１２とマウス１３とが接続されている。入力インタフェース１０５は、キーボード１２やマウス１３から送られてくる信号を、バス１０７を介してＣＰＵ１０１に送信する。
【００３１】
通信インタフェース１０６は、ネットワーク１０に接続されている。通信インタフェース１０６は、ネットワーク１０を介して、他のコンピュータとの間でデータの送受信を行う。
【００３２】
以上のようなハードウェア構成によって、本実施の形態の処理機能を実現することができる。このようなハードウェア構成のプロファイリング装置１００においてプロファイリングを行うために、以下のような機能が設けられる。
【００３３】
図３は、プロファイリング装置の機能を示すブロック図である。
プロファイリング装置１００は、プログラム実行部１１０と、カウンタ１２０と、タイマ部１３０と、割り込み情報取得部１４０と、割り込み情報格納部１５０と、表示データ作成部１６０と、表示部１７０とを有している。
【００３４】
プログラム実行部１１０は、ＨＤＤ１０３等から読み込んだプログラム（情報収集対象プログラム）を実行する。
カウンタ１２０は、ＣＰＵに内蔵されているプログラムカウンタ（ＣＰＵ１０１が次に命令を読み込むアドレスが保管されているレジスタ）であり、プログラム実行部１１０がプログラムの実行を開始すると同時に、順次に実行すべきアドレスを保持しており、ＣＰＵはこのアドレスに格納されている命令を読み込んで、プログラムを実行する。
【００３５】
タイマ部１３０は、ＣＰＵ１０１の一機能によって構成され、一定時間毎（一定のサイクル数毎）に割り込みを発生させる。発生させる割り込みの間隔はプログラムから任意に指定することにより、粒度（処理の細分化の単位）としての測定時間をカスタマイズすることができる。またタイマを直接指定するため、割り込み間隔を細かく設定することができる。ＯＳ環境の有無によらず割り込み間隔を任意に指定できる。またＯＳ環境下の場合は、さらに、ＯＳのタイマ機能を利用して任意に指定することもできる。
【００３６】
割り込み情報取得部（収集手段）１４０は、割り込みハンドラとして機能し、割り込みが発生する毎に、カウンタ１２０のカウンタ値を取得する。
割り込み情報取得部１４０は、割り込み発生時のプログラムカウンタ（ＣＰＵ１０１が次に命令を読み込むアドレスが保管されているレジスタ）の機械語を判定し、データアドレス（データアクセス先）を特定してアクセス頻度を集計する。このデータアドレスの特定方法については後述する。
【００３７】
割り込み間隔は一定のサイクルであり、割り込み間隔はその命令実行に要したサイクル数に比例する。つまりデータアクセス毎の割り込み回数は、従来では取得できなかったデータアクセスコスト（データアクセス頻度）に置き換えることができる。
【００３８】
割り込み情報格納部１５０は、収集した情報を格納するテーブルを格納している。
図４は、テーブルを示す図である。
テーブル１５１には、データアドレスおよび割り込み回数の欄が設けられている。各欄の横方向に並べられた情報同士が互いに関連づけられている。
【００３９】
データアドレスの欄には、割り込みが発生したときのデータアドレスが設定される。
割り込み回数の欄には、データアドレス毎の割り込み回数が設定される。
表示データ作成部１６０は、テーブル１５１に格納したデータアドレスと割り込み回数とを取り出し、データアドレスに対応したデータ定義位置を割り出し、割り出したデータ定義位置と割り込み回数の変化量とを対比して視覚的に表示させるための表示データを作成する。例えばデータ定義位置をＸ軸に定め、割り込み回数をＹ軸に定めた表示データを作成する。また、データ定義位置は、ソース名、関数、変数名、変数内相対アドレス、サイズ等により定義することができる。
【００４０】
なお、表示データ作成部１６０は、ＣＰＵ１０１によって構成することができるが、別プロセッサによって構成してもよい。
表示部１７０は、表示データ作成部１６０によって作成された表示データを二次元のグラフでモニタ１１に表示する。ユーザは、このグラフを見ることで、データのどの位置（変数名、サイズ）で、アクセスコスト（割り込み回数）が高いか、従来では把握できなかった振る舞いを観察することができる。
【００４１】
図５は、アクセスコストとデータ定義位置との関係を示す図である。
アクセスコストが大きいデータ定義位置を、前述したソース名、関数、アドレス等により特定することができる。図５中、円で囲んだ部分のアドレス周辺でアクセスコストが大きいことがわかる。
【００４２】
次に、割り込み情報取得部１４０のデータアドレスの特定方法について説明する。
図６は、割り込み情報取得部の処理を示すフローチャートである。
まず、割り込みが発生すると、今回の割り込み時の実行中プログラムのプログラムカウンタ（ＰＣ）を取得する（ステップＳ１１）。なお、このとき取得したＰＣのコード域の範囲を指定して、対象となる実行プログラムの採取範囲を絞りこんでもよい。
【００４３】
次に、プログラムカウンタから対応する命令を読み込み、読み込んだ命令を解析する（ステップＳ１２）。具体的には、対応するプログラムカウンタの指す機械語に基づいて割り込み発生時の命令種別を調べる。一般的に機械語には命令種別（オペコード）とレジスタ情報（オペランド）とが格納されている。そのため機械語のオペコードに基づいて、ロード命令（データ参照の命令）またはストア命令（データ設定の命令）であるかを判断する（ステップＳ１３）。
【００４４】
割り込み発生時の命令がロード命令またはストア命令でなかった場合（ステップＳ１３のＮｏ）、処理を終了する。
一方、割り込み発生時の命令がロード命令またはストア命令であった場合（ステップＳ１３のＹｅｓ）、機械語に格納されているオペランドを調査する（ステップＳ１４）。オペランドにより、ロード命令またはストア命令でアクセスするレジスタ番号や即値を求めることができる。
【００４５】
次に、得られたレジスタ番号に格納されている値と即値とに基づいて、データ参照／格納先のメモリアドレスを求める（ステップＳ１５）。
そして、対応する割り込み回数をテーブル１５１に順次累積値として取得（上書き）する（ステップＳ１６）。
【００４６】
このように割り込み命令の命令種別を判断して、データアドレスを求める手法は汎用的であり、特定のプロセッサアーキテクチュアに依存しない。
次に、割り込み情報取得部１４０の処理を、具体例を用いて説明する。
【００４７】
ここでは、例として以下の命令体系を持つプロセッサを考える。
（例１）ＬＤ  ＠（ｇｒ１０，ｇｒ１２)，ｇｒ４
レジスタ番号ｇｒ１０にレジスタ番号ｇｒ１２を加えたもので示されたデータアドレスの値（内容）を、レジスタ番号ｇｒ４に求める。この場合、レジスタ番号ｇｒ１０＋レジスタ番号ｇｒ１２で求めたアドレスがデータアドレスとなる。例えば、レジスタ番号ｇｒ１０が１０００であり、レジスタ番号ｇｒ１２が４の場合、テーブル１５１のデータアドレス１００４の欄に対応する割り込み回数の欄に１を加算（上書き）する。
【００４８】
（例２）ＬＤｉ  ＠（ｇｒ１０，８)，ｇｒ４
レジスタ番号ｇｒ１０＋８で示されたデータアドレスの値を、レジスタ番号ｇｒ４に求める。この場合、レジスタ番号ｇｒ１０＋８で求めたアドレスがデータアドレスとなる。例えば、レジスタ番号ｇｒ１０が１０００の場合、テーブル１５１のデータアドレス１００８の欄に対応する割り込み回数の欄に１を加算する。
【００４９】
以上述べたように、本実施の形態のプロファイリング装置１００によれば、割り込み情報取得部１４０が、割り込み発生時の情報収集対象プログラムのプログラムカウンタの機械語を判定し、データアドレスを特定してアクセス頻度を集計するようにしたので、従来ではできなかったデータアクセスコスト（実行サイクル数）を求めることができる。そのため、変数領域、または変数領域の区間へのメモリアクセスに対するコスト（実行サイクル数）が大きい部分を容易かつ確実に把握することができる。そのため、今までは経験と勘によっていたデータ配置に対する最適化を、迅速に対応でき、性能向上、省電力のためのチューニング工数が大幅に節約できる。
【００５０】
また、例えば高コスト変数のみをピックアップして、高速メモリ領域（ＣＰＵ内蔵キャッシュメモリ、ＲＡＭ）に優先的にデータ配置する等、従来困難であったメモリ階層を意識した配置を行うことができる。
【００５１】
図７は、メモリ階層を意識した配置の例を示す図である。
アクセスコストが大きい領域（領域Ｒ）が、ＲＯＭ領域やＳＤＲＡＭ領域（アクセス速度が遅い領域）であり、アクセスコストが小さい領域（領域Ａ）が、ＲＡＭ領域（アクセス速度が速い領域）である場合、領域Ｒの定義を領域Ａに再配置する。これにより、情報収集対象プログラム処理の高速化を図ることができる。
【００５２】
また、前述した例に加えて、特定の作業域（データ域、スタック域、ヒープ域）を高速域メモリ（ＣＰＵ内蔵ＲＡＭ）に配置することや、特定の作業域をＳＤＲＡＭの別バンクへ配置することや、特定の変数をレジスタ割り当てへ配置することができる。またデータキャッシュを具備するプロセッサでは、高コスト変数をキャッシュに常駐させてキャッシュロックすることや、データキャッシュミス回避やキャッシュミスペナルティを隠蔽するためにプリフェッチを適用する等ができる。これらにより、装置の性能向上および省電力化を図ることができる。
【００５３】
また、実機環境においてプロファイリングを行うことができるため、シミュレータ等を用いてシミュレーションを行う場合に比べ、高精度かつ短時間で処理を行うことができる。
【００５４】
なお、本発明は、ＯＳがない環境およびＯＳ環境下においても使用することができる。ＯＳがない環境においては、ステップＳ１６のような動作を行う場合、割り込み発生時のレジスタをそのまま使用する。ＯＳ環境下では割り込み発生時のレジスタ値は、ＯＳがコンテキストとしてＯＳの内部領域に退避しているため、その領域を直接参照する。
【００５５】
次に、第２の実施の形態のプロファイリング装置について説明する。
以下、第２の実施の形態のプロファイリング装置について、前述した第１の実施の形態との相違点を中心に説明し、同様の事項については、その説明を省略する。
【００５６】
図８は、第２の実施の形態のプロファイリング装置の機能を示すブロック図である。
第２の実施の形態のプロファイリング装置１００ａは、割り込み情報取得部１４０ａおよび表示データ作成部１６０ａの機能が第１の実施の形態と異なっている。
【００５７】
割り込み情報取得部１４０ａは、割り込み処理において、データアドレスと割り込み回数に加えて、割り込み発生時のプログラムカウンタをさらに取得し、テーブルに格納する。
【００５８】
図９は、第２の実施の形態のテーブルを示す図である。
テーブル１５１ａは、さらに、プログラムカウンタの欄が設けられている。
表示データ作成部１６０ａは、これらテーブル１５１ａに格納したデータアドレスと割り込み回数とプログラムカウンタとを取得し、取得したプログラムカウンタに対応するプログラム位置（関数名、処理、アセンブラ命令）を割り出して割り出したプログラム位置を、データアクセス位置および割り込み回数と対比した表示データを作成する。例えばデータ定義位置をＸ軸に定め、プログラム位置をＹ軸に定め、割り込み回数をＺ軸に定めた表示データを作成する。なおプログラム位置の関数、処理、アセンブラ命令のそれぞれの粒度単位への対応付けは、情報収集対象プログラムにあるシンボル情報やデバッグ情報等を使用する。
【００５９】
図１０は、モニタに表示された第２の実施の形態の表示データを示す図である。
ユーザは、プログラムのデータ定義位置を参照することで、プログラムの、どの位置（関数、処理、アセンブラ命令のそれぞれの粒度単位）で、どのデータアクセスで高コストのメモリアクセスが発生しているかを三次元的に観察することができる。図１０では、データ定義位置１２００００〜１５００００（単位：バイト）辺り、それぞれのプログラム位置５００００および６５０００（単位：バイト）辺りのアクセスコストが高いことがわかる。
【００６０】
この第２の実施の形態のプロファイリング装置１００ａによれば、第１の実施の形態と同様の効果が得られる。
そして、第２の実施の形態のプロファイリング装置１００ａによれば、さらに、表示部１７０が、情報収集対象プログラムのデータ定義位置、アクセスコストおよびプログラム位置を三次元のグラフで視覚的に表示するため、より細かな粒度で正確にプログラムやシステムへの調整や設計に有効な情報を容易かつ確実に得ることができる。これは前述したデータの再配置のみならず、プログラム命令記述に関する最適化にも有効である。つまり、プログラム位置のアクセスコストが高いということは、（１）命令キャッシュを内蔵しているプロセッサが命令キャッシュを使用しているにもかかわらず、命令キャッシュミスが発生している。（２）命令キャッシュを内蔵しているプロセッサが命令キャッシュヒットしているが実行回数が多い。（３）命令キャッシュを具備していないプロセッサで、実行回数が多い、のいずれかのケースである。そのため、アクセスコストの高いプログラム位置に対しては、（１）命令キャッシュを内蔵しているプロセッサでは、命令キャッシュミスを削減する（プログラム命令位置の配置を変更、分岐削減、プログラムサイズの縮小等）。（２）命令キャッシュ内蔵の有無によらず実行回数を削減しプログラムを改善する、等、各種対策により、プログラム命令に関する調整を行うことができ、情報収集対象プログラムの性能向上および消費電力削減を容易かつ確実に行うことができる。
【００６１】
さらに、従来はサンプリング値とプログラム位置との関係しか把握することができなかったのに対し、図１０に示す表示データによれば、データ定義位置、プログラム位置とサンプリング値との関係をも把握することができる。例えば、命令バスとデータバスを共用するプロセッサ等において、命令アクセスコストとデータアクセスコストが競合する場合、それらの競合を回避するために命令配置やデータ配置を変更してアクセスタイミングをずらす等が対策の一例である。このように、データ定義位置、プログラム位置とサンプリング値との関係から複合的な判断が可能となり、従来ではできなかった性能向上および消費電力削減を容易かつ確実に行うことができる。
【００６２】
次に、第３の実施の形態のプロファイリング装置について説明する。
以下、第３の実施の形態のプロファイリング装置について、前述した第１の実施の形態との相違点を中心に説明し、同様の事項については、その説明を省略する。
【００６３】
図１１は、第３の実施の形態のプロファイリング装置の機能を示すブロック図である。
第３の実施の形態のプロファイリング装置１００ｂは、割り込み情報取得部１４０ｂおよび表示データ作成部１６０ｂの機能が第１の実施の形態と異なっている。
【００６４】
第３の実施の形態の割り込み情報取得部１４０ｂは、同一データアドレスに対して、前回のアクセス時間から今回のアクセス時間の差分情報を、データアドレス毎に収集し、割り込み情報格納部１５０に格納する（参照毎、設定毎、参照／設定毎）。この差分情報は、データのアクセス間隔と見なすことができる。このアクセス間隔が短いほど局所性（アクセス局所性）が高く、長いほど局所性が低いと考えることができる。
【００６５】
図１２は、第３の実施の形態のテーブルを示す図である。
テーブル１５１ｂには、さらにアクセス間隔の欄が設けられている。
アクセス間隔の欄には、差分情報が設定される。
【００６６】
表示データ作成部１６０ｂは、テーブル１５１ｂに格納されているアクセス間隔を取得し、データ定義位置をＸ軸に定め、アクセス間隔をＹ軸に定めた表示データを作成する。データ定義は、対応するソースプログラムの変数名に対応させて表示する。対応付けはプログラムファイルのシンボル情報やデバッグ情報等を利用する。
【００６７】
図１３は、モニタに表示された第３の実施の形態の表示データを示す図である。
アクセス局所性が大きいデータ定義位置を、ソース名、関数、アドレス等により特定することができる。図１３中、円で囲んだ部分のアドレス周辺でアクセス局所性が大きいことがわかる。
【００６８】
次に、割り込み情報取得部１４０ｂのデータアドレスの特定方法について説明する。
図１４は、第３の実施の形態の割り込み情報取得部の処理を示すフローチャートである。
【００６９】
ステップＳ２１〜Ｓ２６：それぞれステップＳ１１〜Ｓ１６と同様。
アクセス時間を求める（ステップＳ２７）。アクセス時間は、下式で求められる。
アクセス時間＝アクセス間隔＋（現アクセス時間−前回アクセス時間）
この第３の実施の形態のプロファイリング装置１００ｂによれば、第１の実施の形態のプロファイリング装置１００と同様の効果が得られる。
【００７０】
そして、第３の実施の形態のプロファイリング装置１００ｂによれば、局所性の高いデータについてデータの再配置、例えば局所性の高いデータをキャッシュに配置することで、キャッシュに常駐する時間を長くすることができ、情報収集対象プログラム処理の高速化を図ることができる。
【００７１】
なお、本実施の形態では、アクセス間隔（差分情報）を、局所性を示す情報として用いたが、本発明はこれに限らず、差分情報をアクセス回数で割ることによって得られる一回当たりのデータキャッシュ滞在率を、局所性を示す情報として用いてもよい。これは、サンプリングされるケースでは、キャッシュミスが多いためである。この情報は、このキャッシュ滞在率が短いほど局所性が高く、長いほど局所性が低いと考えることができる。なお、これらは一例であり、アクセス間隔（差分情報）をもとに任意に局所性を定義し、汎用的な指標として使用することもできる。
【００７２】
なお、前述した各実施の形態では、それぞれ割り込みの発生したプログラムカウンタを取得して得たデータアクセス先に関する処理（データの参照・設定によるデータアクセスに関するもの）を行ったが、本発明はこれに限らず、割り込み情報取得部の情報収集対象をユーザが指定した特定命令（割算、除算等の任意の命令）とすることもできる。この場合、特定命令についての命令定義位置、アクセスコストの関係を示す表示データまたはデータ定義位置、プログラム位置および割り込み回数の関係を示す表示データを作成する。
【００７３】
また、割り込み情報取得部の情報収集対象を、任意の命令とすることもできる。
以上、本発明のプロファイリング装置およびプロファイリングプログラムを、図示の実施の形態に基づいて説明したが、本発明はこれに限定されるものではなく、各部の構成は、同様の機能を有する任意の構成のものに置換することができる。また、本発明に、他の任意の構成物や工程が付加されていてもよい。
【００７４】
また、本発明は、前述した各実施の形態のうちの、任意の２以上の構成（特徴）を組み合わせたものであってもよい。
なお、本発明は、シミュレータにもタイマ割り込みを擬似的に発生することで適用することができる。
【００７５】
また、本発明は、プロセッサ内部のイベントおよび外部とのやり取りのイベントをカウントすることにより性能をモニタリングするハードウェアカウンタを有するプロセッサにも適用することができる。この場合、前述したように一定時間毎に発生する割り込みを情報収集のトリガとしてもよいし、さらにハードウェアカウンタの任意のイベント発生時の状態をトリガとしてもよい。具体的には、実行サイクル数を指標として取得するケースを、ハードウェアカウンタの、例えば、データキャッシュミス発生イベントに置き換える。これによりキャッシュミスの発生した命令で割り込みが発生するため、キャッシュミスの命令を解析してキャッシュミスのアクセス先を解析することができる。
【００７６】
なお、上記の処理機能は、コンピュータによって実現することができる。その場合、プロファイリング装置１００、１００ａ、１００ｂが有すべき機能の処理内容を記述したプログラムが提供される。そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、例えば、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリ等が挙げられる。磁気記録装置としては、例えば、ハードディスク装置（ＨＤＤ）、フレキシブルディスク（ＦＤ）、磁気テープ等が挙げられる。光ディスクとしては、例えば、ＤＶＤ（Digital Versatile Disc）、ＤＶＤ−ＲＡＭ（Random Access Memory）、ＣＤ−ＲＯＭ（Compact Disc Read Only Memory）、ＣＤ−Ｒ（Recordable）／ＲＷ（ReWritable）等が挙げられる。光磁気記録媒体としては、例えば、ＭＯ（Magneto-Optical disk）等が挙げられる。
【００７７】
プログラムを流通させる場合には、例えば、そのプログラムが記録されたＤＶＤ、ＣＤ−ＲＯＭ等の可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
【００７８】
プロファイリングプログラムを実行するコンピュータは、例えば、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムに従った処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することもできる。また、コンピュータは、サーバコンピュータからプログラムが転送される毎に、逐次、受け取ったプログラムに従った処理を実行することもできる。
【図面の簡単な説明】
【００７９】
【図１】本発明の概要を示す図である。
【図２】プロファイリング装置のハードウェア構成例を示す図である。
【図３】プロファイリング装置の機能を示すブロック図である。
【図４】テーブルを示す図である。
【図５】アクセスコストとデータ定義位置との関係を示す図である。
【図６】割り込み情報取得部の処理を示すフローチャートである。
【図７】メモリ階層を意識した配置の例を示す図である。
【図８】第２の実施の形態のプロファイリング装置の機能を示すブロック図である。
【図９】第２の実施の形態のテーブルを示す図である。
【図１０】モニタに表示された第２の実施の形態の表示データを示す図である。
【図１１】第３の実施の形態のプロファイリング装置の機能を示すブロック図である。
【図１２】第３の実施の形態のテーブルを示す図である。
【図１３】モニタに表示された第３の実施の形態の表示データを示す図である。
【図１４】第３の実施の形態の割り込み情報取得部の処理を示すフローチャートである。
【図１５】従来のプロファイリングを示す図である。
【符号の説明】
【００８０】
１、１００、１００ａ、１００ｂ  プロファイリング装置
２  プログラム実行手段
３  割り込み発生手段
４  収集手段
５  表示手段
６  情報収集対象プログラム
１１０  プログラム実行部
１２０  カウンタ
１３０  タイマ部
１４０、１４０ａ、１４０ｂ  割り込み情報取得部
１５０  割り込み情報格納部
１５１、１５１ａ、１５１ｂ  テーブル
１６０、１６０ａ、１６０ｂ  表示データ作成部
１７０  表示部
【図１】
2008210011.tif 000003
【図２】
2008210011.tif 000004
【図３】
2008210011.tif 000005
【図４】
2008210011.tif 000006
【図５】
2008210011.tif 000007
【図６】
2008210011.tif 000008
【図７】
2008210011.tif 000009
【図８】
2008210011.tif 000010
【図９】
2008210011.tif 000011
【図１０】
2008210011.tif 000012
【図１１】
2008210011.tif 000013
【図１２】
2008210011.tif 000014
【図１３】
2008210011.tif 000015
【図１４】
2008210011.tif 000016
【図１５】
2008210011.tif 000017