JP4940996B2 - プロファイリング装置およびプロファイリングプログラム - Google Patents

プロファイリング装置およびプロファイリングプログラム Download PDF

Info

Publication number
JP4940996B2
JP4940996B2 JP2007043962A JP2007043962A JP4940996B2 JP 4940996 B2 JP4940996 B2 JP 4940996B2 JP 2007043962 A JP2007043962 A JP 2007043962A JP 2007043962 A JP2007043962 A JP 2007043962A JP 4940996 B2 JP4940996 B2 JP 4940996B2
Authority
JP
Japan
Prior art keywords
program
data
interrupt
profiling
access destination
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2007043962A
Other languages
English (en)
Other versions
JP2008210011A (ja
Inventor
茂 木村
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Semiconductor Ltd
Original Assignee
Fujitsu Semiconductor Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Semiconductor Ltd filed Critical Fujitsu Semiconductor Ltd
Priority to JP2007043962A priority Critical patent/JP4940996B2/ja
Priority to US12/033,975 priority patent/US20080209403A1/en
Publication of JP2008210011A publication Critical patent/JP2008210011A/ja
Application granted granted Critical
Publication of JP4940996B2 publication Critical patent/JP4940996B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/32Monitoring with visual or acoustical indication of the functioning of the machine
    • G06F11/323Visualisation of programs or trace data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • G06F11/3471Address tracing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/865Monitoring of software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/88Monitoring involving counting
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Data Mining & Analysis (AREA)
  • Debugging And Monitoring (AREA)

Description

本発明はプロファイリング装置およびプロファイリングプログラムに関し、特に、実機環境で動作可能なプロファイリング装置およびプロファイリングプログラムに関する。
コンピュータシステムの性能分析や最適化を行う手段として、プロファイリングが広く用いられている。プロファイリングは、ターゲットとするプログラムコードの走行頻度、時間分布、またプログラム内部の呼出し関係頻度等の分析に有効である。一般的なプロファイリング手法として例えば以下の2つがある。
1つはコンパイラにプロファイリング用コードを挿入させ、実行情報を採取する方法である(図15参照)。この方法は、一般的に使用されているプロファイリング手法であり、コンパイラ製品に標準機能として実装されていることが多い。また、この方法に対するいくつかのデータ採取効率化方法も提案されている(例えば、特許文献1参照)。
しかしながら、このコンパイラによるプロファイリングコード挿入方式には、対象とするコード全般にプロファイリング用処理が付加されるために時間的オーバヘッドが生じる、あるいは、コード挿入のために本来のプログラムバイナリと動作的、メモリ配置的に差異が生じるといった問題がある。特に、通信等のタイミングが重要なプログラムでは本来の動作と異なる場合が多く、必要精度により使用が制限される場合がある。
もう1つは、ハードウェアタイマ、またはCPU(Central Processing Unit)の性能モニタリング機構を利用したサンプリングによるプロファイリング方法である。この方法では、一定の時間毎に、あるいはプロセッサや周辺回路で計測可能な実行命令数やキャッシュミス数等が一定の回数に到達する毎にサンプリング割り込みを発生させ、割り込み処理として登録したプロファイリング処理プログラムで割り込み発生時の実行命令アドレス等を記録することで、統計的に最も時間を費やしたコード範囲や最も頻繁に実行されたコード範囲等を抽出する(例えば、特許文献2参照)。分岐命令ごとに割り込みを発生させる手法等もある(例えば、特許文献3参照)。しかしながらサンプリングによるプロファイリング方式においては、対象とするコードに対する改変は必要ないためオーバヘッドの問題やメモリ配置の問題は極小化可能であるが、サンプリングされる際の実行命令アドレスに至る経路やその呼出し関係が採取できない、あるいは完全ではないという問題がある。
以上は、プログラム命令に関する実行コストの高い処理箇所やプログラム命令コード位置を特定するための手法である。一方、プログラムからアクセスするデータ配置に関するプログラムのチューニング手法が知られている。このチューニング方法は、プログラムのデータアクセス時にはメモリ参照を伴う。そのメモリアクセスコストを削減するために、データキャッシュメモリを実装して一度アクセスしたデータを高速度アクセス可能なキャッシュメモリに残し、再度メモリアクセス要求があったときに直接メモリではなく、キャッシュメモリから取り出す方法である。また、キャッシュを使用することで主記憶へのアクセス回数を減らし、性能向上するばかりでなくメモリアクセスに起因する消費電力を削減する効果もある。このデータキャッシュメモリを使用する方法については、キャッシュメモリミスを削減するための各種データ配置手法が検討されている(例えば、特許文献4参照)。
また、逐次型言語により記述したプログラムを分散記憶型並列計算機用のコードに変換する際に、該並列計算機を構成する複数のプロセッシングエレメントに対して、当該プログラム中の並列化可能な部分を割り付けるとともにその部分の処理に必要な配列データを分散・配置するためのデータレイアウト方法も考案されている(例えば、特許文献5参照)。
さらに、高速メモリと低速メモリとが具備されているプロセッサにおいても、高頻度アクセスデータを低速メモリから高速メモリに配置することで性能向上する効果がある。同様に高頻度アクセスデータを高電力メモリから低電力メモリに配置することで消費電力を削減することができる。このようにプログラムでの高頻度アクセスデータを最適なメモリ領域に配置することが重要となっている。
なお、データ配置に着目した手法として、シミュレータによりアクセスデータを調査して、最適なデータ配置をする手法が提案されている(例えば、特許文献6参照)。この手法によれば、シミュレータで高アクセスコスト(実行サイクル数)をシミュレートするが、以下の(a)〜(c)に示す問題があった。
(a)1命令ずつシミュレータでトレースするため時間がかかる。
(b)シミュレータでは、実機環境特有の問題(アクセスレイテンシの遅延等)に起因する正確な情報が取得できない。
(c)実機環境でのデータアクセス頻度情報を取得する手段がない。
このようにシミュレータ環境ではなく、実機環境でのデータアクセス頻度情報の取得手法の開発が望まれていた。
特開平11−212837号公報 特開平6−342386号公報 特開平11−327951号公報 特開2005−122506号公報 特開9−282290号公報 特開平7−191882号公報
プログラムからアクセスするデータを、プログラム性能向上および省電力のために最適に配置するチューニング手法をまとめると、以下の2点になる。
(1)プログラム実行前に静的なソース情報をもとにコンパイラ等ツールが自動的に最適なデータ配置を決定する。
(2)利用者がプログラムから高頻度にアクセスするデータを特定し、高速メモリに配置する。
しかし、従来これらを実現するには、それぞれ問題があった。
(1)は、プログラムでのデータアクセス頻度が把握できないため、実行頻度が少ない箇所に対して適用しても効果が少ない。
(2)は、利用者がプログラムから高頻度アクセスするデータを特定することは、プログラムからデータアクセスに対するアクセスコスト(サイクル数)を実機環境で求める手段がなかったため、事実上不可能である。さらに、例えば、シミュレータで高アクセスコスト(実行サイクル数)をシミュレートできるが、実機環境と異なり(a)1命令ずつシミュレータでトレースするため時間がかかる。(b)実機環境特有の問題(アクセスレイテンシの遅延等)に起因する正確な情報が取得できない。(c)実機環境でのデータアクセス頻度情報を取得する手段がない、等の問題があった。
本発明はこのような点に鑑みてなされたものであり、正確な情報を得ることができるプロファイリング装置およびプロファイリングプログラムを提供することを目的とする。
また、他の目的として、処理の高速化を図ることができるプロファイリング装置およびプロファイリングプログラムを提供することを目的とする。
本発明では上記問題を解決するために、図1に示すようなプロファイリング装置1が提供される。プロファイリング装置1は、実機環境で動作可能な装置である。
プロファイリング装置1は、プログラム実行手段2と、割り込み発生手段3と、収集手段4と、表示手段5とを有している。
プログラム実行手段2は、情報収集対象プログラム6の実行を行う。
割り込み発生手段3は、予め定められた時間毎に割り込みを発生させる。
収集手段4は、割り込みにより起動され、情報収集対象プログラム6のデータアクセス先およびデータアクセス先の割り込み回数を収集する。
表示手段5は、収集手段4により収集された情報を表示する。
このようなプロファイリング装置1によれば、プログラム実行手段2により、情報収集対象プログラム6の実行が行われる。割り込み発生手段3により、予め定められた時間毎に割り込みが発生する。収集手段4により、情報収集対象プログラム6のデータアクセス先およびデータアクセス先の割り込み回数が収集される。表示手段5により、収集手段4によって収集された情報が表示される。
本発明によれば、情報収集対象プログラムのデータアクセス先およびデータアクセス先の割り込み回数を収集するようにしたので、実機環境において、データアクセスコスト(実行サイクル数)を求めることができる。そのため、従来は勘に頼っていたデータ配置に対する最適化に迅速に対応することができ、性能向上、省電力のためのチューニング工数が大幅に節約できる。
また、例えばアクセスコストが高い変数のみをピックアップして、高速メモリ領域(CPU内蔵RAM(Random Access Memory)等)に優先的にデータ配置する等、メモリ階層を意識したデータの再配置が可能となる。
以下、本発明の実施の形態を、図面を参照して詳細に説明する。
まず、本発明の概要について説明し、その後、実施の形態を説明する。
図1は、本発明の概要を示す図である。
プロファイリング装置1は、プログラム実行手段2と、割り込み発生手段3と、収集手段4と、表示手段5とを有している。
プログラム実行手段2は、情報収集対象プログラム6の実行を行う。
割り込み発生手段3は、タイマ等によって予め定められた時間毎に割り込みを発生させる。
収集手段4は、割り込みにより起動され、情報収集対象プログラム6のデータアクセス先およびデータアクセス先の割り込み回数を収集する。
表示手段5は、収集手段4により収集された情報を表示する。すなわち、データアクセス先および割り込み回数およびこれらの情報をユーザが見易いように加工した情報等を表示する。
このようなプロファイリング装置1によれば、プログラム実行手段2により、情報収集対象プログラム6の実行が行われる。割り込み発生手段3により、予め定められた時間毎に割り込みが発生する。収集手段4により、情報収集対象プログラム6のデータアクセス先およびデータアクセス先の割り込み回数が収集される。表示手段5により、収集手段4によって収集された情報が表示される。
以下、本発明の実施の形態を説明する。
図2は、プロファイリング装置のハードウェア構成例を示す図である。
プロファイリング装置100は、CPU101によって装置全体が制御されている。CPU101には、バス107を介してRAM102、ハードディスクドライブ(HDD:Hard Disk Drive)103、グラフィック処理装置104、入力インタフェース105、および通信インタフェース106が接続されている。
CPU101は、例えば内蔵タイマ等により得られる一定時間毎に、割り込みを発生させる。割り込みが発生するとCPU101は実行中のプログラムが扱っているデータ等をRAM102に退避して割り込み要求の種類に応じて割り込みハンドラを呼び出す。ハンドラが終了すると退避しておいたデータを元に戻して、プログラムを続行する。
RAM102には、CPU101に実行させるOS(Operating System)を搭載する場合は、そのプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、RAM102には、CPU101による処理に必要な各種データが格納される。
HDD103には、OSを搭載する場合のOSや、アプリケーションプログラム(例えば、情報収集対象プログラムやプロファイリングを行うためのプロファイリングプログラム等)等が格納される。また、HDD103内には、プログラムファイルが格納される。なお、HDD103の代わりにROM(Read Only Memory)であってもよい。
グラフィック処理装置104には、モニタ11が接続されている。グラフィック処理装置104は、CPU101からの命令に従って、画像をモニタ11の画面に表示させる。 入力インタフェース105には、キーボード12とマウス13とが接続されている。入力インタフェース105は、キーボード12やマウス13から送られてくる信号を、バス107を介してCPU101に送信する。
通信インタフェース106は、ネットワーク10に接続されている。通信インタフェース106は、ネットワーク10を介して、他のコンピュータとの間でデータの送受信を行う。
以上のようなハードウェア構成によって、本実施の形態の処理機能を実現することができる。このようなハードウェア構成のプロファイリング装置100においてプロファイリングを行うために、以下のような機能が設けられる。
図3は、プロファイリング装置の機能を示すブロック図である。
プロファイリング装置100は、プログラム実行部110と、カウンタ120と、タイマ部130と、割り込み情報取得部140と、割り込み情報格納部150と、表示データ作成部160と、表示部170とを有している。
プログラム実行部110は、HDD103等から読み込んだプログラム(情報収集対象プログラム)を実行する。
カウンタ120は、CPUに内蔵されているプログラムカウンタ(CPU101が次に命令を読み込むアドレスが保管されているレジスタ)であり、プログラム実行部110がプログラムの実行を開始すると同時に、順次に実行すべきアドレスを保持しており、CPUはこのアドレスに格納されている命令を読み込んで、プログラムを実行する。
タイマ部130は、CPU101の一機能によって構成され、一定時間毎(一定のサイクル数毎)に割り込みを発生させる。発生させる割り込みの間隔はプログラムから任意に指定することにより、粒度(処理の細分化の単位)としての測定時間をカスタマイズすることができる。またタイマを直接指定するため、割り込み間隔を細かく設定することができる。OS環境の有無によらず割り込み間隔を任意に指定できる。またOS環境下の場合は、さらに、OSのタイマ機能を利用して任意に指定することもできる。
割り込み情報取得部(収集手段)140は、割り込みハンドラとして機能し、割り込みが発生する毎に、カウンタ120のカウンタ値を取得する。
割り込み情報取得部140は、割り込み発生時のプログラムカウンタ(CPU101が次に命令を読み込むアドレスが保管されているレジスタ)の機械語を判定し、データアドレス(データアクセス先)を特定してアクセス頻度を集計する。このデータアドレスの特定方法については後述する。
割り込み間隔は一定のサイクルであり、割り込み間隔はその命令実行に要したサイクル数に比例する。つまりデータアクセス毎の割り込み回数は、従来では取得できなかったデータアクセスコスト(データアクセス頻度)に置き換えることができる。
割り込み情報格納部150は、収集した情報を格納するテーブルを格納している。
図4は、テーブルを示す図である。
テーブル151には、データアドレスおよび割り込み回数の欄が設けられている。各欄の横方向に並べられた情報同士が互いに関連づけられている。
データアドレスの欄には、割り込みが発生したときのデータアドレスが設定される。
割り込み回数の欄には、データアドレス毎の割り込み回数が設定される。
表示データ作成部160は、テーブル151に格納したデータアドレスと割り込み回数とを取り出し、データアドレスに対応したデータ定義位置を割り出し、割り出したデータ定義位置と割り込み回数の変化量とを対比して視覚的に表示させるための表示データを作成する。例えばデータ定義位置をX軸に定め、割り込み回数をY軸に定めた表示データを作成する。また、データ定義位置は、ソース名、関数、変数名、変数内相対アドレス、サイズ等により定義することができる。
なお、表示データ作成部160は、CPU101によって構成することができるが、別プロセッサによって構成してもよい。
表示部170は、表示データ作成部160によって作成された表示データを二次元のグラフでモニタ11に表示する。ユーザは、このグラフを見ることで、データのどの位置(変数名、サイズ)で、アクセスコスト(割り込み回数)が高いか、従来では把握できなかった振る舞いを観察することができる。
図5は、アクセスコストとデータ定義位置との関係を示す図である。
アクセスコストが大きいデータ定義位置を、前述したソース名、関数、アドレス等により特定することができる。図5中、円で囲んだ部分のアドレス周辺でアクセスコストが大きいことがわかる。
次に、割り込み情報取得部140のデータアドレスの特定方法について説明する。
図6は、割り込み情報取得部の処理を示すフローチャートである。
まず、割り込みが発生すると、今回の割り込み時の実行中プログラムのプログラムカウンタ(PC)を取得する(ステップS11)。なお、このとき取得したPCのコード域の範囲を指定して、対象となる実行プログラムの採取範囲を絞りこんでもよい。
次に、プログラムカウンタから対応する命令を読み込み、読み込んだ命令を解析する(ステップS12)。具体的には、対応するプログラムカウンタの指す機械語に基づいて割り込み発生時の命令種別を調べる。一般的に機械語には命令種別(オペコード)とレジスタ情報(オペランド)とが格納されている。そのため機械語のオペコードに基づいて、ロード命令(データ参照の命令)またはストア命令(データ設定の命令)であるかを判断する(ステップS13)。
割り込み発生時の命令がロード命令またはストア命令でなかった場合(ステップS13のNo)、処理を終了する。
一方、割り込み発生時の命令がロード命令またはストア命令であった場合(ステップS13のYes)、機械語に格納されているオペランドを調査する(ステップS14)。オペランドにより、ロード命令またはストア命令でアクセスするレジスタ番号や即値を求めることができる。
次に、得られたレジスタ番号に格納されている値と即値とに基づいて、データ参照/格納先のメモリアドレスを求める(ステップS15)。
そして、対応する割り込み回数をテーブル151に順次累積値として取得(上書き)する(ステップS16)。
このように割り込み命令の命令種別を判断して、データアドレスを求める手法は汎用的であり、特定のプロセッサアーキテクチュアに依存しない。
次に、割り込み情報取得部140の処理を、具体例を用いて説明する。
ここでは、例として以下の命令体系を持つプロセッサを考える。
(例1)LD @(gr10,gr12),gr4
レジスタ番号gr10にレジスタ番号gr12を加えたもので示されたデータアドレスの値(内容)を、レジスタ番号gr4に求める。この場合、レジスタ番号gr10+レジスタ番号gr12で求めたアドレスがデータアドレスとなる。例えば、レジスタ番号gr10が1000であり、レジスタ番号gr12が4の場合、テーブル151のデータアドレス1004の欄に対応する割り込み回数の欄に1を加算(上書き)する。
(例2)LDi @(gr10,8),gr4
レジスタ番号gr10+8で示されたデータアドレスの値を、レジスタ番号gr4に求める。この場合、レジスタ番号gr10+8で求めたアドレスがデータアドレスとなる。例えば、レジスタ番号gr10が1000の場合、テーブル151のデータアドレス1008の欄に対応する割り込み回数の欄に1を加算する。
以上述べたように、本実施の形態のプロファイリング装置100によれば、割り込み情報取得部140が、割り込み発生時の情報収集対象プログラムのプログラムカウンタの機械語を判定し、データアドレスを特定してアクセス頻度を集計するようにしたので、従来ではできなかったデータアクセスコスト(実行サイクル数)を求めることができる。そのため、変数領域、または変数領域の区間へのメモリアクセスに対するコスト(実行サイクル数)が大きい部分を容易かつ確実に把握することができる。そのため、今までは経験と勘によっていたデータ配置に対する最適化を、迅速に対応でき、性能向上、省電力のためのチューニング工数が大幅に節約できる。
また、例えば高コスト変数のみをピックアップして、高速メモリ領域(CPU内蔵キャッシュメモリ、RAM)に優先的にデータ配置する等、従来困難であったメモリ階層を意識した配置を行うことができる。
図7は、メモリ階層を意識した配置の例を示す図である。
アクセスコストが大きい領域(領域R)が、ROM領域やSDRAM領域(アクセス速度が遅い領域)であり、アクセスコストが小さい領域(領域A)が、RAM領域(アクセス速度が速い領域)である場合、領域Rの定義を領域Aに再配置する。これにより、情報収集対象プログラム処理の高速化を図ることができる。
また、前述した例に加えて、特定の作業域(データ域、スタック域、ヒープ域)を高速域メモリ(CPU内蔵RAM)に配置することや、特定の作業域をSDRAMの別バンクへ配置することや、特定の変数をレジスタ割り当てへ配置することができる。またデータキャッシュを具備するプロセッサでは、高コスト変数をキャッシュに常駐させてキャッシュロックすることや、データキャッシュミス回避やキャッシュミスペナルティを隠蔽するためにプリフェッチを適用する等ができる。これらにより、装置の性能向上および省電力化を図ることができる。
また、実機環境においてプロファイリングを行うことができるため、シミュレータ等を用いてシミュレーションを行う場合に比べ、高精度かつ短時間で処理を行うことができる。
なお、本発明は、OSがない環境およびOS環境下においても使用することができる。OSがない環境においては、ステップS16のような動作を行う場合、割り込み発生時のレジスタをそのまま使用する。OS環境下では割り込み発生時のレジスタ値は、OSがコンテキストとしてOSの内部領域に退避しているため、その領域を直接参照する。
次に、第2の実施の形態のプロファイリング装置について説明する。
以下、第2の実施の形態のプロファイリング装置について、前述した第1の実施の形態との相違点を中心に説明し、同様の事項については、その説明を省略する。
図8は、第2の実施の形態のプロファイリング装置の機能を示すブロック図である。
第2の実施の形態のプロファイリング装置100aは、割り込み情報取得部140aおよび表示データ作成部160aの機能が第1の実施の形態と異なっている。
割り込み情報取得部140aは、割り込み処理において、データアドレスと割り込み回数に加えて、割り込み発生時のプログラムカウンタをさらに取得し、テーブルに格納する。
図9は、第2の実施の形態のテーブルを示す図である。
テーブル151aは、さらに、プログラムカウンタの欄が設けられている。
表示データ作成部160aは、これらテーブル151aに格納したデータアドレスと割り込み回数とプログラムカウンタとを取得し、取得したプログラムカウンタに対応するプログラム位置(関数名、処理、アセンブラ命令)を割り出して割り出したプログラム位置を、データアクセス位置および割り込み回数と対比した表示データを作成する。例えばデータ定義位置をX軸に定め、プログラム位置をY軸に定め、割り込み回数をZ軸に定めた表示データを作成する。なおプログラム位置の関数、処理、アセンブラ命令のそれぞれの粒度単位への対応付けは、情報収集対象プログラムにあるシンボル情報やデバッグ情報等を使用する。
図10は、モニタに表示された第2の実施の形態の表示データを示す図である。
ユーザは、プログラムのデータ定義位置を参照することで、プログラムの、どの位置(関数、処理、アセンブラ命令のそれぞれの粒度単位)で、どのデータアクセスで高コストのメモリアクセスが発生しているかを三次元的に観察することができる。図10では、データ定義位置120000〜150000(単位:バイト)辺り、それぞれのプログラム位置50000および65000(単位:バイト)辺りのアクセスコストが高いことがわかる。
この第2の実施の形態のプロファイリング装置100aによれば、第1の実施の形態と同様の効果が得られる。
そして、第2の実施の形態のプロファイリング装置100aによれば、さらに、表示部170が、情報収集対象プログラムのデータ定義位置、アクセスコストおよびプログラム位置を三次元のグラフで視覚的に表示するため、より細かな粒度で正確にプログラムやシステムへの調整や設計に有効な情報を容易かつ確実に得ることができる。これは前述したデータの再配置のみならず、プログラム命令記述に関する最適化にも有効である。つまり、プログラム位置のアクセスコストが高いということは、(1)命令キャッシュを内蔵しているプロセッサが命令キャッシュを使用しているにもかかわらず、命令キャッシュミスが発生している。(2)命令キャッシュを内蔵しているプロセッサが命令キャッシュヒットしているが実行回数が多い。(3)命令キャッシュを具備していないプロセッサで、実行回数が多い、のいずれかのケースである。そのため、アクセスコストの高いプログラム位置に対しては、(1)命令キャッシュを内蔵しているプロセッサでは、命令キャッシュミスを削減する(プログラム命令位置の配置を変更、分岐削減、プログラムサイズの縮小等)。(2)命令キャッシュ内蔵の有無によらず実行回数を削減しプログラムを改善する、等、各種対策により、プログラム命令に関する調整を行うことができ、情報収集対象プログラムの性能向上および消費電力削減を容易かつ確実に行うことができる。
さらに、従来はサンプリング値とプログラム位置との関係しか把握することができなかったのに対し、図10に示す表示データによれば、データ定義位置、プログラム位置とサンプリング値との関係をも把握することができる。例えば、命令バスとデータバスを共用するプロセッサ等において、命令アクセスコストとデータアクセスコストが競合する場合、それらの競合を回避するために命令配置やデータ配置を変更してアクセスタイミングをずらす等が対策の一例である。このように、データ定義位置、プログラム位置とサンプリング値との関係から複合的な判断が可能となり、従来ではできなかった性能向上および消費電力削減を容易かつ確実に行うことができる。
次に、第3の実施の形態のプロファイリング装置について説明する。
以下、第3の実施の形態のプロファイリング装置について、前述した第1の実施の形態との相違点を中心に説明し、同様の事項については、その説明を省略する。
図11は、第3の実施の形態のプロファイリング装置の機能を示すブロック図である。
第3の実施の形態のプロファイリング装置100bは、割り込み情報取得部140bおよび表示データ作成部160bの機能が第1の実施の形態と異なっている。
第3の実施の形態の割り込み情報取得部140bは、同一データアドレスに対して、前回のアクセス時間から今回のアクセス時間の差分情報を、データアドレス毎に収集し、割り込み情報格納部150に格納する(参照毎、設定毎、参照/設定毎)。この差分情報は、データのアクセス間隔と見なすことができる。このアクセス間隔が短いほど局所性(アクセス局所性)が高く、長いほど局所性が低いと考えることができる。
図12は、第3の実施の形態のテーブルを示す図である。
テーブル151bには、さらにアクセス間隔の欄が設けられている。
アクセス間隔の欄には、差分情報が設定される。
表示データ作成部160bは、テーブル151bに格納されているアクセス間隔を取得し、データ定義位置をX軸に定め、アクセス間隔をY軸に定めた表示データを作成する。データ定義は、対応するソースプログラムの変数名に対応させて表示する。対応付けはプログラムファイルのシンボル情報やデバッグ情報等を利用する。
図13は、モニタに表示された第3の実施の形態の表示データを示す図である。
アクセス局所性が大きいデータ定義位置を、ソース名、関数、アドレス等により特定することができる。図13中、円で囲んだ部分のアドレス周辺でアクセス局所性が大きいことがわかる。
次に、割り込み情報取得部140bのデータアドレスの特定方法について説明する。
図14は、第3の実施の形態の割り込み情報取得部の処理を示すフローチャートである。
ステップS21〜S26:それぞれステップS11〜S16と同様。
アクセス時間を求める(ステップS27)。アクセス時間は、下式で求められる。
アクセス時間=アクセス間隔+(現アクセス時間−前回アクセス時間)
この第3の実施の形態のプロファイリング装置100bによれば、第1の実施の形態のプロファイリング装置100と同様の効果が得られる。
そして、第3の実施の形態のプロファイリング装置100bによれば、局所性の高いデータについてデータの再配置、例えば局所性の高いデータをキャッシュに配置することで、キャッシュに常駐する時間を長くすることができ、情報収集対象プログラム処理の高速化を図ることができる。
なお、本実施の形態では、アクセス間隔(差分情報)を、局所性を示す情報として用いたが、本発明はこれに限らず、差分情報をアクセス回数で割ることによって得られる一回当たりのデータキャッシュ滞在率を、局所性を示す情報として用いてもよい。これは、サンプリングされるケースでは、キャッシュミスが多いためである。この情報は、このキャッシュ滞在率が短いほど局所性が高く、長いほど局所性が低いと考えることができる。なお、これらは一例であり、アクセス間隔(差分情報)をもとに任意に局所性を定義し、汎用的な指標として使用することもできる。
なお、前述した各実施の形態では、それぞれ割り込みの発生したプログラムカウンタを取得して得たデータアクセス先に関する処理(データの参照・設定によるデータアクセスに関するもの)を行ったが、本発明はこれに限らず、割り込み情報取得部の情報収集対象をユーザが指定した特定命令(割算、除算等の任意の命令)とすることもできる。この場合、特定命令についての命令定義位置、アクセスコストの関係を示す表示データまたはデータ定義位置、プログラム位置および割り込み回数の関係を示す表示データを作成する。
また、割り込み情報取得部の情報収集対象を、任意の命令とすることもできる。
以上、本発明のプロファイリング装置およびプロファイリングプログラムを、図示の実施の形態に基づいて説明したが、本発明はこれに限定されるものではなく、各部の構成は、同様の機能を有する任意の構成のものに置換することができる。また、本発明に、他の任意の構成物や工程が付加されていてもよい。
また、本発明は、前述した各実施の形態のうちの、任意の2以上の構成(特徴)を組み合わせたものであってもよい。
なお、本発明は、シミュレータにもタイマ割り込みを擬似的に発生することで適用することができる。
また、本発明は、プロセッサ内部のイベントおよび外部とのやり取りのイベントをカウントすることにより性能をモニタリングするハードウェアカウンタを有するプロセッサにも適用することができる。この場合、前述したように一定時間毎に発生する割り込みを情報収集のトリガとしてもよいし、さらにハードウェアカウンタの任意のイベント発生時の状態をトリガとしてもよい。具体的には、実行サイクル数を指標として取得するケースを、ハードウェアカウンタの、例えば、データキャッシュミス発生イベントに置き換える。これによりキャッシュミスの発生した命令で割り込みが発生するため、キャッシュミスの命令を解析してキャッシュミスのアクセス先を解析することができる。
なお、上記の処理機能は、コンピュータによって実現することができる。その場合、プロファイリング装置100、100a、100bが有すべき機能の処理内容を記述したプログラムが提供される。そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、例えば、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリ等が挙げられる。磁気記録装置としては、例えば、ハードディスク装置(HDD)、フレキシブルディスク(FD)、磁気テープ等が挙げられる。光ディスクとしては、例えば、DVD(Digital Versatile Disc)、DVD−RAM(Random Access Memory)、CD−ROM(Compact Disc Read Only Memory)、CD−R(Recordable)/RW(ReWritable)等が挙げられる。光磁気記録媒体としては、例えば、MO(Magneto-Optical disk)等が挙げられる。
プログラムを流通させる場合には、例えば、そのプログラムが記録されたDVD、CD−ROM等の可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
プロファイリングプログラムを実行するコンピュータは、例えば、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムに従った処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することもできる。また、コンピュータは、サーバコンピュータからプログラムが転送される毎に、逐次、受け取ったプログラムに従った処理を実行することもできる。
本発明の概要を示す図である。 プロファイリング装置のハードウェア構成例を示す図である。 プロファイリング装置の機能を示すブロック図である。 テーブルを示す図である。 アクセスコストとデータ定義位置との関係を示す図である。 割り込み情報取得部の処理を示すフローチャートである。 メモリ階層を意識した配置の例を示す図である。 第2の実施の形態のプロファイリング装置の機能を示すブロック図である。 第2の実施の形態のテーブルを示す図である。 モニタに表示された第2の実施の形態の表示データを示す図である。 第3の実施の形態のプロファイリング装置の機能を示すブロック図である。 第3の実施の形態のテーブルを示す図である。 モニタに表示された第3の実施の形態の表示データを示す図である。 第3の実施の形態の割り込み情報取得部の処理を示すフローチャートである。 従来のプロファイリングを示す図である。
符号の説明
1、100、100a、100b プロファイリング装置
2 プログラム実行手段
3 割り込み発生手段
4 収集手段
5 表示手段
6 情報収集対象プログラム
110 プログラム実行部
120 カウンタ
130 タイマ部
140、140a、140b 割り込み情報取得部
150 割り込み情報格納部
151、151a、151b テーブル
160、160a、160b 表示データ作成部
170 表示部

Claims (9)

  1. 実機環境で動作可能なプロファイリング装置であって、
    情報収集対象プログラムの実行を行うプログラム実行手段と、
    予め定められた時間毎に割り込みを発生させる割り込み発生手段と、
    前記割り込みにより起動され、前記情報収集対象プログラムのデータアクセス先、前記データアクセス先毎の割り込み回数、および前記割り込みの発生したプログラムカウンタのカウンタ値を収集する収集手段と、
    前記収集手段が取得した前記プログラムカウンタのカウンタ値から対応する関数、処理、アセンブラ命令のそれぞれの粒度単位で構成されるプログラム位置を割り出し、割り出した前記プログラム位置を前記データアクセス先および前記データアクセス先毎の割り込み回数とともに対比させた表示データを作成する表示データ作成手段と、
    前記表示データ作成手段により作成された表示データを表示する表示手段と、
    を有することを特徴とするプロファイリング装置。
  2. 前記収集手段は、前記割り込みの発生したプログラムカウンタのカウンタ値を取得し、取得した前記プログラムカウンタのカウンタ値に記憶されているアドレスに格納されている命令の機械語を判定することにより前記データアクセス先を収集することを特徴とする請求項1記載のプロファイリング装置。
  3. 前記収集手段は、取得した前記プログラムカウンタの機械語の命令種別がロード命令またはストア命令であった場合前記データアクセス先を収集することを特徴とする請求項2記載のプロファイリング装置。
  4. 前記収集手段は、前記割り込みが発生したとき、割り込み発生時のレジスタを参照して前記データアクセス先を収集することを特徴とする請求項1記載のプロファイリング装置。
  5. 当該プロファイリング装置がOSを備えている場合、
    前記収集手段は、前記割り込みが発生したとき、前記OSの内部領域に退避されている領域を参照して前記データアクセス先を収集することを特徴とする請求項1記載のプロファイリング装置。
  6. 前記データアクセス先に対応したデータ定義位置を割り出し、割り出した前記データ定義位置を前記割り込み回数と対比させて前記表示手段に表示させる表示データを作成する表示データ作成手段をさらに有することを特徴とする請求項1記載のプロファイリング装置。
  7. 前記収集手段は、同一の前記データアクセス先に対する前回のアクセス時間から今回のアクセス時間の差分情報を収集し、
    前記表示データ作成手段は、前記データアクセス先に対応したデータ定義位置を割り出し、割り出した前記データ定義位置を収集した前記差分情報とともに対比させて前記表示手段に表示させる表示データを作成することを特徴とする請求項1記載のプロファイリング装置。
  8. 前記割り込み発生手段は、ハードウェアカウンタの任意のイベント発生をトリガにして前記割り込みを発生させることを特徴とする請求項1記載のプロファイリング装置。
  9. 実機環境で動作可能なプロファイリングプログラムであって、
    コンピュータを、
    情報収集対象プログラムの実行を行うプログラム実行手段、
    予め定められた時間毎に割り込みを発生させる割り込み発生手段、
    前記割り込みにより起動され、前記情報収集対象プログラムのデータアクセス先、前記データアクセス先毎の割り込み回数、および前記割り込みの発生したプログラムカウンタのカウンタ値を収集する収集手段、
    前記収集手段が取得した前記プログラムカウンタのカウンタ値から対応する関数、処理、アセンブラ命令のそれぞれの粒度単位で構成されるプログラム位置を割り出し、前記データアクセス先および前記データアクセス先毎の割り込み回数とともに対比させた表示データを作成する表示データ作成手段、
    前記表示データ作成手段により作成された表示データを表示する表示手段、
    として機能させることを特徴とするプロファイリングプログラム。
JP2007043962A 2007-02-23 2007-02-23 プロファイリング装置およびプロファイリングプログラム Active JP4940996B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2007043962A JP4940996B2 (ja) 2007-02-23 2007-02-23 プロファイリング装置およびプロファイリングプログラム
US12/033,975 US20080209403A1 (en) 2007-02-23 2008-02-20 Profiling apparatus and profiling program

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2007043962A JP4940996B2 (ja) 2007-02-23 2007-02-23 プロファイリング装置およびプロファイリングプログラム

Publications (2)

Publication Number Publication Date
JP2008210011A JP2008210011A (ja) 2008-09-11
JP4940996B2 true JP4940996B2 (ja) 2012-05-30

Family

ID=39717397

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007043962A Active JP4940996B2 (ja) 2007-02-23 2007-02-23 プロファイリング装置およびプロファイリングプログラム

Country Status (2)

Country Link
US (1) US20080209403A1 (ja)
JP (1) JP4940996B2 (ja)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5029245B2 (ja) * 2007-09-20 2012-09-19 富士通セミコンダクター株式会社 プロファイリング方法及びプログラム
US8990792B2 (en) * 2008-05-26 2015-03-24 Samsung Electronics Co., Ltd. Method for constructing dynamic call graph of application
JP5386905B2 (ja) 2008-09-25 2014-01-15 富士通セミコンダクター株式会社 プロファイリング方法およびプロファイリングプログラム
JP5703968B2 (ja) * 2011-05-31 2015-04-22 富士電機株式会社 プログラム開発支援装置およびそのプログラム
US9753731B1 (en) * 2015-01-16 2017-09-05 The Mathworks, Inc. Methods and systems for analyzing and improving performance of computer codes
JP6544013B2 (ja) 2015-04-16 2019-07-17 富士通株式会社 情報処理装置、消費電力計測プログラムおよび消費電力計測方法
JP6874706B2 (ja) * 2018-02-07 2021-05-19 オムロン株式会社 アプリケーションプログラムを生成する方法、装置、プログラム
KR102480944B1 (ko) * 2020-09-23 2022-12-22 재단법인대구경북과학기술원 하이브리드 메모리 제어 장치 및 방법

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5193189A (en) * 1987-10-07 1993-03-09 Allen-Bradley Company, Inc. Programmable controller with multiple priority level task processing
US5287548A (en) * 1988-02-29 1994-02-15 Allen-Bradley Company, Inc. Programmable controller having a stored program with both machine language instructions and source code data
JPH04256036A (ja) * 1991-02-08 1992-09-10 Nec Corp プログラム解析システム
JP2777496B2 (ja) * 1991-02-28 1998-07-16 インターナショナル・ビジネス・マシーンズ・コーポレイション コンピュータシステムにおいてマルチプロセスをプロファイリングする際の使用方法
JP3480973B2 (ja) * 1993-11-30 2003-12-22 富士通株式会社 並列処理システムの動作解析装置
US5974536A (en) * 1997-08-14 1999-10-26 Silicon Graphics, Inc. Method, system and computer program product for profiling thread virtual memory accesses
US6002872A (en) * 1998-03-31 1999-12-14 International Machines Corporation Method and apparatus for structured profiling of data processing systems and applications
US6553564B1 (en) * 1997-12-12 2003-04-22 International Business Machines Corporation Process and system for merging trace data for primarily interpreted methods
JP3141836B2 (ja) * 1998-01-26 2001-03-07 日本電気株式会社 言語処理方法、言語処理装置及び言語処理プログラムを記録した記憶媒体
JP3199013B2 (ja) * 1998-01-26 2001-08-13 日本電気株式会社 言語処理方法及び言語処理装置並びに言語処理プログラムを記録した記憶媒体
US6493868B1 (en) * 1998-11-02 2002-12-10 Texas Instruments Incorporated Integrated development tool
US6658654B1 (en) * 2000-07-06 2003-12-02 International Business Machines Corporation Method and system for low-overhead measurement of per-thread performance information in a multithreaded environment
US6904594B1 (en) * 2000-07-06 2005-06-07 International Business Machines Corporation Method and system for apportioning changes in metric variables in an symmetric multiprocessor (SMP) environment
US7389497B1 (en) * 2000-07-06 2008-06-17 International Business Machines Corporation Method and system for tracing profiling information using per thread metric variables with reused kernel threads
JP2002073379A (ja) * 2000-08-30 2002-03-12 Toshiba Corp プログラム性能測定装置および性能測定方法
US20020147966A1 (en) * 2001-02-14 2002-10-10 Ncr Corporation Operating software performance monitor
JP4934267B2 (ja) * 2003-10-17 2012-05-16 パナソニック株式会社 コンパイラ装置
JP2005215816A (ja) * 2004-01-28 2005-08-11 Hitachi Ltd ハードウェアモニタを用いた性能プロファイリング方法
US7721268B2 (en) * 2004-10-01 2010-05-18 Microsoft Corporation Method and system for a call stack capture
US7603589B2 (en) * 2005-05-16 2009-10-13 Texas Instruments Incorporated Method and system for debugging a software program

Also Published As

Publication number Publication date
US20080209403A1 (en) 2008-08-28
JP2008210011A (ja) 2008-09-11

Similar Documents

Publication Publication Date Title
JP4940996B2 (ja) プロファイリング装置およびプロファイリングプログラム
Anderson et al. Continuous profiling: Where have all the cycles gone?
US8739143B2 (en) Profiling metrics for computer programs
Molka et al. Detecting memory-boundedness with hardware performance counters
JP4681491B2 (ja) プロファイリングプログラムおよびプロファイリング方法
US20100077388A1 (en) Profiling method, system, and recording medium having a profiling program
US10067813B2 (en) Method of analyzing a fault of an electronic system
CN102681947A (zh) 用于跨距剖析软件应用的方法和设备
US7519966B2 (en) Information processing and control
WO2009022239A2 (en) System for and method of capturing performance characteristics data from a computer system and modeling target system performance
KR102161192B1 (ko) 코어 트레이스로부터 데이터 마이닝을 하기 위한 방법 및 장치
US20090083716A1 (en) Profiling method and program
Liu et al. Understanding the behavior and implications of context switch misses
US8612952B2 (en) Performance optimization based on data accesses during critical sections
Van Biesbrouck et al. Efficient sampling startup for sampled processor simulation
US20080010555A1 (en) Method and Apparatus for Measuring the Cost of a Pipeline Event and for Displaying Images Which Permit the Visualization orf Said Cost
Huber et al. WCET driven design space exploration of an object cache
US20090187890A1 (en) Method and System for Associating Profiler Data With a Reference Clock
JP5521687B2 (ja) 分析装置、分析方法および分析プログラム
Won et al. Trapfetch: A breakpoint-based prefetcher for both launch and run-time
Girelli et al. Investigating memory prefetcher performance over parallel applications: From real to simulated
KR101515891B1 (ko) 메모리 사용량 분석 방법 및 이를 수행하는 사용자 단말
US20080127115A1 (en) System And Method For Facilitating Software Profiling Procedures
Wang et al. Real time cache performance analyzing for multi-core parallel programs
Useche et al. Truly non-blocking writes

Legal Events

Date Code Title Description
A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A712

Effective date: 20080729

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20091009

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20110224

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110913

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20111111

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20111206

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120116

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20120131

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120213

R150 Certificate of patent or registration of utility model

Ref document number: 4940996

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150309

Year of fee payment: 3

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350