(57)【要約】【課題】プロファイラに実行時情報を解析する処理を別途追加することなく実行時情報の解析を行う。【解決手段】プログラムの実行によるハードウェアの動作についての情報を収集し解析するプログラム開発支援装置において、プログラム実行系１０の解析手順情報生成手段１３で生成された解析手順情報について、解析対象のイベント及びそれに対応する処理手順を任意に指定する解析手順情報入力手段２０を備える。【選択図】  図１
2005107794.tif 000002
【特許請求の範囲】
【請求項１】
プログラムの実行によるハードウェアの動作についての情報を収集し解析するプログラム開発支援装置において、
プログラムを読み込み、プログラムの実行を行うプログラム実行手段と、
プログラムの実行中に発生したイベントについての実行時情報を生成する実行時情報生成手段と、
前記実行時情報の処理方法に関する情報を読み込み、解析手順情報を生成する解析手順情報生成手段と、
前記解析手順情報生成手段で生成された解析手順情報について、解析対象のイベント及びそれに対応する処理手順を任意に指定する解析手順情報入力手段と、
前記解析手順情報を読み込む解析手順読出部と、前記解析手順読出手段が読み出した解析手順に従って前記実行時情報の処理および解析を行う解析実行部と、
前記実行時情報を読み込み、前記解析実行部によって生成された情報を保持する実行時情報管理部及び前記実行時情報管理部に保持された情報を取得して出力する解析結果出力部を備えた解析実行手段と、
を備えるプログラム開発支援装置。
【請求項２】
前記解析手順情報は、前記実行時情報の要素に対して、指定された条件で各情報の要素を検索し情報を付加する手順についての情報を含む請求項１記載のプログラム開発支援装置。
【請求項３】
前記解析手順情報は、前記実行時情報の要素に対して、各情報の要素から情報を集計する手順を示す情報を含む請求項１記載のプログラム開発支援装置。
【請求項４】
前記解析実行手段は、前記実行時情報の要素と前記解析手順情報に示された条件に合致する前記実行時情報の要素を検索して関連付ける情報を生成する実行時情報検索部を備える請求項１記載のプログラム開発支援装置。
【請求項５】
前記実行時情報検索部は、前記実行時情報の要素を前記解析手順情報に示された条件に基づいて分類し、分類情報を生成する請求項４記載のプログラム開発装置。
【請求項６】
前記解析実行手段は、プログラムとプログラム中のシンボル／値／アドレスの関係を示したデバッグ情報を含むプログラムファイルを読み込み保持するプログラムファイル読出部と、前記実行時情報の要素に含まれる情報を前記デバッグ情報内で検索して前記実行時情報の要素に情報を付加するデバッグ情報関連付け部と、を備える請求項１記載のプログラム開発支援装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プロセッサのソフトウェア開発などに使用するプログラム開発支援装置に関するもので、特に、ソフトウェアおよびシステムの性能を測定するためのプロファイラを含むプログラム開発支援装置に関する。
【背景技術】
【０００２】
プログラム開発支援装置は、シミュレータ・エミュレータなどのプログラム実行系が出力した実行時情報に基づいて、プロファイラが情報を解析してプログラムの動作に関する情報を提供する。プログラム実行系が出力する実行時情報はサイズが大きくなることが多いため、この実行時情報のサイズを小さく抑えるための発明が開示されている（例えば、特許文献１参照）。
【０００３】
従来のプログラム開発支援装置の構成および動作は次の通りである。まず、シミュレーション手段でプロセッサによるプログラムの実行やハードウェアエンジンの動作を行う。次に、それらの実行や動作についての実行時情報が実行時情報生成手段で生成され、ファイルに出力される。さらに、解析実行手段としてのプロファイラがファイルに出力された実行時情報を読み取り、解析・集計を行って解析結果を出力する。具体的には、プログラム実行時に発生したイベントの発生頻度などを解析する。
【０００４】
【特許文献１】特開２００２−１３２５４２号公報（第３頁、第１図）
【発明の開示】
【発明が解決しようとする課題】
【０００５】
ところで、上記従来のプログラム開発支援装置では、どのイベントに対してどのような解析処理を行うかなどの解析手順がプログラム開発支援装置のベンダによりプリセットされている。そのため、シミュレータが新しい種類の実行時情報を出力するように修正された場合、プロファイラ側でも当該実行時情報を処理するための解析手段を別途追加しなければならないという問題があった。また、同じ実行時情報が出力される場合であっても、例えば、解析を行うイベントを追加したり、解析内容を変更したりすることができないという問題があった。このため、従来のプログラム開発支援装置では、装置の利用者が解析対象及び解析内容を自在に追加できないことに起因する課題があった。
【０００６】
そこで本発明は上記課題に鑑みてなされたもので、プロファイラに実行時情報を解析する処理を別途追加することなく、実行時情報の解析が行えるプログラム開発支援装置を提供することを目的とする。また、利用者が解析手順情報を任意に追加／修正して、所望の解析が行えるプログラム開発支援装置を提供することを目的とする。
【課題を解決するための手段】
【０００７】
上記課題を解決するため、本発明のプログラム開発支援装置は、プログラムの実行によるハードウェアの動作についての情報を収集し解析するプログラム開発支援装置において、プログラムを読み込み、プログラムの実行を行うプログラム実行手段と、プログラムの実行中に発生したイベントについての実行時情報を生成する実行時情報生成手段と、前記実行時情報の処理方法に関する情報を読み込み、解析手順情報を生成する解析手順情報生成手段と、前記解析手順情報生成手段で生成された解析手順情報について、解析対象のイベント及びそれに対応する処理手順を任意に指定する解析手順情報入力手段と、前記解析手順情報を読み込む解析手順読出部と、前記解析手順読出手段が読み出した解析手順に従って前記実行時情報の処理および解析を行う解析実行部と、前記実行時情報を読み込み、前記解析実行部によって生成された情報を保持する実行時情報管理部及び前記実行時情報管理部に保持された情報を取得して出力する解析結果出力部を備えた解析実行手段とで構成される。この構成によれば、解析手順情報入力手段から新しい情報を処理する手順を示した解析手順情報を入力するだけで、プロファイラに実行時情報を解析する処理を別途追加することなく、実行時情報の解析を行うことができる。また、利用者が解析手順情報を任意に追加／修正することで、利用者が望む解析を行うことが可能となる。
【０００８】
また、本発明のプログラム開発支援装置において、前記解析手順情報は、前記実行時情報の要素に対して、指定された条件で各情報の要素を検索し情報を付加する手順についての情報を含む。この構成によれば、所定のイベントに係るエントリを検索して、解析に係る所定の項目をエントリに追加することができる。
【０００９】
また、本発明のプログラム開発支援装置において、前記解析手順情報は、前記実行時情報の要素に対して、各情報の要素から情報を集計する手順を示す情報を含む。この構成によれば、追加された所定の項目を集計して、解析結果として出力することができる。
【００１０】
また、本発明のプログラム開発支援装置において、前記解析実行手段は、前記実行時情報の要素と前記解析手順情報に示された条件に合致する前記実行時情報の要素を検索して関連付ける情報を生成する実行時情報検索部を備える。この構成によれば、所定のイベントに係るエントリを検索して、解析に係る所定の項目をエントリに追加することができる。
【００１１】
また、本発明のプログラム開発支援装置において、前記実行時情報検索部は、前記実行時情報の要素を前記解析手順情報に示された条件に基づいて分類し、分類情報を生成する。この構成によれば、所定のイベントに係るエントリを検索して、解析に係る所定の項目を分類してエントリに追加することができる。
【００１２】
また、本発明のプログラム開発支援装置において、前記解析実行手段は、プログラムとプログラム中のシンボル／値／アドレスの関係を示したデバッグ情報を含むプログラムファイルを読み込み保持するプログラムファイル読出部と、前記実行時情報の要素に含まれる情報を前記デバッグ情報内で検索して前記実行時情報の要素に情報を付加するデバッグ情報関連付け部とを備える。この構成によれば、所定のイベントに係るエントリについて、デバッグ情報で検索を行い、デバッグ情報に係る所定の項目をエントリに追加することができる。
【発明の効果】
【００１３】
本発明のプログラム開発支援装置によれば、シミュレータなどのプログラム実行系が出力する実行時情報の種類が変化した場合でも、解析手順情報入力手段から新しい情報を処理する手順を示した解析手順情報を入力するだけで、プロファイラに実行時情報を解析する処理を別途追加することなく、実行時情報の解析を行うことができる。
【００１４】
また、従来はプロファイラが備えている解析方法以外の解析は事実上できなかったが、本発明によれば、利用者が解析手順情報を任意に追加／修正することで、利用者が望む解析を行うことが可能となる。そのため、システムＬＳＩ向けのソフトウェア開発環境を構築する際に、計測／分析したい実行時情報の種類が度々増加してもプロファイラの開発工数を削減でき、プロファイラを含めたソフトウェア検証環境を効率よく構築できる。
【発明を実施するための最良の形態】
【００１５】
図１は、本発明の実施の形態におけるプログラム開発支援装置の構成を示す図である。プログラム開発支援装置は、プログラム実行系１０、解析手順情報入力手段２０、プロファイラ３０を備え、プログラム実行系１０は、プログラム実行手段１１、実行時情報生成手段１２、解析手順情報生成手段１３を備える。
【００１６】
プログラム実行系１０は、プロセッサおよびその周辺回路の動作をするものであり、プログラム実行形式を入力として受付け、実行時情報および解析手順情報を出力する。ここで、プログラム実行形式はコンパイラ〜アセンブラ〜リンカによって生成されたもので、プログラム、初期データ、デバッグ情報が含まれる。実行時情報は、前記プログラム実行形式に含まれるプログラムをシミュレータ上で実行した際に、プログラム内の特定命令実行や、プログラム実行時の状態変化などを記録したものである。解析手順情報は、前記実行時情報に含まれる個々の情報を解析、集計する手順についての情報である。
【００１７】
解析手順情報入力手段２０は、プログラム実行系１０の解析手順情報生成手段１３で生成された解析手順情報に解析手順の追加を可能にするために、解析手順の外部入力を行う。
【００１８】
プロファイラ３０は、プログラムの動作結果を解析するブロックであり、プログラム実行形式、実行時情報、解析手順情報を入力として受付け、解析結果を出力する。ここで解析結果とは、実行時情報を解析手順情報に示された内容にしたがって解析した結果であり、プログラムの動作について解析、集計した情報である。プロファイラ３０の詳しい構成や動作については後述する。
【００１９】
次に、プログラム開発支援装置の動作について説明する。プログラム実行系１０は、起動するとプログラム実行形式を入力し、プログラムと初期データを読み出す。プログラムの実行開始が指示されると、プログラム実行手段１１がプロセッサおよび周辺回路の動作をプログラムに沿って行う。プログラム実行中に、実行時情報生成手段１２がプログラムの実行に関する情報を出力する。実行時情報は、プログラム実行開始時を基準とする時刻と、プログラム実行時に発生した種々のイベントを記録した列である。プログラム実行時に発生するイベントには、プログラム内の特定命令(分岐命令やマーキング命令)の実行や、割り込みの発生、メモリアクセス、ＤＭＡコントローラの起動や停止などがある。
【００２０】
実行時情報の解析に関する情報は、解析手順情報生成手段１３が生成し出力する。解析手順情報生成手段１３は、実行時情報生成手段１２が出力する情報とその解析方法を対応づけて出力する。解析手順情報の構成としては、実行時情報の単位(エントリ)に含まれるデータ項目を示す情報、各エントリ内の情報の要素／データ範囲を示す情報、各エントリ間で情報を検索、付加する手順を示す情報、および各エントリから情報を集計し出力する手順を示す情報などが含まれる。
【００２１】
解析手順情報生成手段１３で生成された解析手順情報に対して、解析手順情報入力手段２０では、キーボードなどの入力手段から手動で解析情報の追加入力を行う。プログラム開発支援装置の利用者は、ここで、解析対象とするイベントを指定し、それに対してどのような解析、集計を行うかなどを指定する。
【００２２】
プロファイラ３０では、プログラム実行形式、実行時情報、解析手順情報の各情報を用いて、イベントに係る解析処理を行い、最終的に解析結果が出力される。
【００２３】
ここで、プロファイラ３０の構成について詳しく説明する。図２は、本発明の実施の形態におけるプログラム開発支援装置の、プロファイラの構成を示す図である。プロファイラ３０は、プログラムファイル読出部３１、解析手順読出部３２、実行時情報管理部３３、解析実行部３４、デバッグ情報関連付け部３５、実行時情報検索部３６、解析結果出力部３７を備える。
【００２４】
プログラムファイル読出部３１は、プロファイラ３０起動時にプログラム実行形式ファイルを読み込み、該ファイルに含まれるプログラムに関するデバッグ情報を取得する。
【００２５】
解析手順読出部３２は、解析手順情報ファイルを読み込み、該ファイルに含まれる解析手順情報を取得し、その内容を調べて処理手順情報、集計手順情報を生成する。解析手順情報には、利用者が手動で入力した解析情報も含まれる。
【００２６】
実行時情報管理部３３は、実行時情報を読み込み、その内容を保持する。また、後述の解析実行部３４によって実行時情報の追加、変更、集計などが行われた時にはその情報を保持し管理する。
【００２７】
解析実行部３４は、解析手順読出部３２で読み込んだ解析手順情報に従って実行時情報の解析を行う。解析手順情報の内容には、実行時情報の要素の検索と該要素同士の関連付け、実行時情報の要素とデバッグ情報の関連付けが含まれ、これらの操作は、後述のデバッグ情報関連付け部３５、実行時情報検索部３６がそれぞれ行う。
【００２８】
デバッグ情報関連付け部３５は、解析実行部３４により指示され、実行時要素の要素に対して情報を関連づけ付加する。この際、プログラムファイル読出部３１にて読み出したデバッグ情報から付加する情報を検索して付加する。
【００２９】
実行時情報検索部３６は、解析実行部３４により指示され、実行時要素の要素に対して情報を関連づけて付加する。この際、実行時情報管理部３３で管理している実行時情報から付加する情報を検索して付加する。
【００３０】
解析結果出力部３７は、解析実行部３４による解析実行が終了した後、実行時情報管理部３３が保持する情報を外部へ出力する。その際、解析手順読出部３２が読み出した集計手順情報に従って実行時情報を集計し出力する。
【００３１】
図３は、本発明の実施の形態におけるプログラム開発支援装置の、プロファイラ３０の解析処理手順を示すフローチャートである。ステップＳ１０１のループは、実行時情報のエントリを順に調べるためのループである。プロファイラ３０の解析実行部３４は、図５に示すような解析手順情報を用いて、各エントリについて解析を行う。ステップＳ１０２では、エントリ条件に合致する解析手順情報エントリが存在するか否かを判断し、いずれの条件にも合致しない場合、次のステップＳ１０３のループはスキップする。一方、エントリ条件に合致する解析手順情報エントリが存在する場合、ステップＳ１０３のループでは、それぞれの追加情報項目について処理を行う。即ち、ステップＳ１０４で、該解析手順情報エントリの追加情報項目の値を得るための駆動処理をその引数とともに呼び出す。また、ステップＳ１０５で、ステップＳ１０４で実行した駆動処理の結果を前記追加情報項目の値として該実行時情報エントリに追加する。
【００３２】
図４は、本発明の実施の形態におけるプログラム開発支援装置の、プロファイラ３０の集計処理手順を示すフローチャートである。ステップＳ２０１のループは、集計手順情報のそれぞれについて処理を実行するためのループである。プロファイラ３０の解析結果出力部３７は、図６に示すような解析手順情報の中の集計手順情報を用いて、各エントリについて集計を行う。ステップＳ２０２のループでは、実行時情報のエントリを順に調べるためのループである。即ち、ステップＳ２０３では、集計手順情報に示されたエントリ条件に合致する実行時情報か否かを判断し、条件に合致しない場合、実行時情報については何も処理を行わない。一方、エントリ条件に合致する実行時情報である場合、ステップＳ２０４では、着目データ項目毎にデータの集計処理を行う。
【００３３】
次に、実行時情報と解析手順情報の実例に関して、上記の解析および集計動作を具体的に説明する。 図７は、実行時情報生成手段１２で生成された実行時情報の第１の例を示す図である。実行時情報は、イベントの発生時刻（Time の列）、発生したイベントの種類（EV の列）、およびイベントに付随する情報（Operand の列）、で構成される。イベントの種類としては、"PM"はプログラム中の特定命令の実行を示しており、Operand には該命令のアドレスが記録されている。また、"HI"は割り込みが発生したことを示しており、Operand には割り込みの種別を識別するための番号と割り込みによって遷移した割り込みハンドラのアドレスが記録されている。また、"HD"はＤＭＡの起動について示しており、Operand には起動(1)または終了(0)を示す値が記録されている。
【００３４】
図８は、解析手順情報入力手段２０で追加入力して生成した解析手順情報の第１の例を示す図である。Ｓ４０１の行は、図７に示した実行時情報のデータ項目について表現しており、データを行毎にエントリとして分割し、行内のデータをデータ項目として取得するための記述である。図では、データ項目として、time、ev、operand1、operand2に分割されることを示している。Ｓ４０２のブロックは、各エントリ内の情報の要素／ データ範囲について表現しており、データ項目のデータ型やとれる値の範囲について示している。図では、データ項目time は整数値、データ項目ev は"PM"、"HD"、"HI"のいずれかであることを示し、operand1、operand2についてはevの値によって情報が変化することを示している。
【００３５】
Ｓ４０３のブロックは、各エントリ間で情報を検索、付加する手順について表現している。手順を示す文は、エントリに情報を付加する条件と、付加する情報の項目名と、情報の取得手順から構成される。図では、データ項目evが"HD"かつデータ項目operand1が1のエントリについて、データ項目evが"HD"かつデータ項目operand1が0のエントリを前方検索して見つかったエントリをデータ項目relとして追加し、さらに、当該エントリのデータ項目timeの値から前記エントリrelのデータ項目timeの値を引き算した結果をデータ項目durationとして追加する手順を示している。
【００３６】
Ｓ４０４およびＳ４０５のブロックは、各エントリから情報を集計し出力する手順について表現している。手順を示す文は、集計する際に基準となるエントリまたはエントリ中のデータ項目と、出力する際のフォーマットと、出力するデータの集計式から構成される。Ｓ４０４では、データ項目evが"HD"のエントリのoperand1の値毎について集計し、実行時情報中の出現数を表示する手順を示している。また、Ｓ４０５では、データ項目evが"HD"かつデータ項目operand1が1のエントリについて集計し、エントリの出現数と、これらのエントリ内のデータ項目durationの値の合計値を求める式から構成される。
【００３７】
図７の実行時情報を入力データとする際の解析および集計動作を順に示す。まず、プログラムファイル読出部３１が、プロファイラ３０起動時にプログラム実行形式ファイルを読み込み、実行時情報管理部３３が、実行時情報を読み込む。次に、解析手順読出部３２が解析手順情報ファイルを読み込み、該ファイルに含まれる解析手順情報を取得し、その内容を把握して解析手順を生成し、解析実行部３４がこれに従って解析する。
【００３８】
図８のＳ４０３が示す解析手順により、図７のＳ３０３のエントリに着目し、実行時情報検索部３６が、データ項目evが"HD"かつデータ項目operand1が0のエントリの前方検索を行い、その結果得られたエントリＳ３０５を、該着目エントリにデータ項目relとして追加し、これら２つのエントリが持つデータ項目timeの値を引き算した結果の値1536を、該着目エントリにデータ項目duration として追加する。同様の手順を図７のエントリＳ３０８についても行い、それぞれエントリＳ３１０と値2433をデータ項目として追加する。
【００３９】
次に、図８のＳ４０４が示す解析手順により、データ項目evが"HI"のエントリについて、データ項目operand1の値毎にエントリの出現数を集計する。その結果、operand1が１のエントリはＳ３０６とＳ３１３の２つ、operand1 が２のエントリはＳ３１１の１つであり、図９に示す解析結果Ｓ５０１が得られる。
【００４０】
次に、図８のＳ４０５が示す解析手順により、データ項目evが"HD"かつデータ項目operand1が1のエントリについて、出現数とデータ項目durationの合計値を求める。その結果、エントリＳ３０３とＳ３０８が該当するエントリとして検出され、各エントリが保持するデータ項目durationの値1536と2433の合計値、3969が得られ、図９に示す解析結果Ｓ５０２が得られる。解析手順の実行がすべて終了すると、解析結果出力部３７から解析結果情報が出力される。
【００４１】
以上の解析では、図７に示す実行時情報を出力したプログラムの実行において、割り込み種別１の割り込みが２回、割り込み種別２の割り込みが１回発生し（Ｓ５０１の記述）、ＤＭＡの起動回数が２回あって起動時間の合計は3969（Ｓ５０２の記述）であったことが判明した。
【００４２】
次に、実行時情報と解析手順情報のもう一つの実例に関して、解析および集計動作を具体的に説明する。図１０は、実行時情報生成手段１２で生成された実行時情報の第２の例を示す図である。イベントの種類としては、"PM"はプログラム中の特定命令の実行を示しており、Operandには該命令のオペランドが記録されている。また、"HI"は割り込みが発生したことを示しており、Operandには割り込みの種別を識別するための番号と割り込みによって遷移した割り込みハンドラのアドレスが記録されている。また、"HD"はＤＭＡの起動について示しており、Operandには起動(1)または終了(0)を示す値が記録されている。
【００４３】
図１１は、解析手順情報入力手段２０で追加入力して生成した解析手順情報の第２の例を示す図である。Ｓ７０１、Ｓ７０２、Ｓ７０３、Ｓ７０６、Ｓ７０７は、図８のＳ４０１、Ｓ４０２、Ｓ４０３、Ｓ４０４、Ｓ４０５とそれぞれ同様であるので、説明を省略する。Ｓ７０４は、データ項目evが"PM"のエントリについて、該エントリのoperand1の値をプログラムマークに関するデバッグ情報から検索して該当するアドレスを取得してその値をデータ項目addrとして追加し、さらに、前記データ項目addrの値を関数名とそのアドレスに関するデバッグ情報から検索して該当する関数名をデータ項目sym として追加し、さらに、前記データ項目addrの値が示すアドレスが、前記データ項目symの関数の先頭か末尾か（即ち、値1または値0）を前記デバッグ情報から検索し、データ項目topとして追加する手順を示している。
【００４４】
Ｓ７０５は、Ｓ７０４の手順に加えてデータ項目evが"PM"のエントリについて操作する手順を示す。データ項目evが"PM"かつデータ項目topが1のエントリについて着目し、データ項目evが"PM"かつデータ項目symが該着目エントリのデータ項目と同じエントリを前方検索して見つかったエントリをデータ項目relとして追加し、さらにrelが示すエントリのデータ項目timeの値から前記着目エントリのデータ項目timeの値を引き算した結果をデータ項目durationとして追加する手順を示している。
【００４５】
Ｓ７０８は、データ項目evが"PM"かつデータ項目topが1のエントリのsymの値毎について集計し、エントリの出現数とこれらのエントリ内のデータ項目durationの値の合計値を求める式から構成される。
【００４６】
図１０の実行時情報を入力データとする際の解析および集計動作を順に示す。図１１のＳ７０４が示す解析手順により、図１０のＳ６０１のエントリに着目し、デバッグ情報関連付け部３５で、operand1の値をプログラムマークに関するデバッグ情報から検索する。図１２は、プログラムマークに関するデバッグ情報の例を示す図である。このデバッグ情報の検索により、エントリＳ６０１のデータ項目operand1の値0007からアドレス0x80000408が得られる。このアドレスをデータ項目addrとして前記着目エントリに追加する。
【００４７】
次に、デバッグ情報関連付け部３５で、前記データ項目addrの値を、関数名とそのアドレスに関するデバッグ情報から検索する。図１３は、関数名とそのアドレスに関するデバッグ情報の例を示す図である。このデバッグ情報の検索により、アドレス0x80000408から関数名mainが得られる。この関数名をデータ項目symとして前記着目エントリに追加する。
【００４８】
次に、デバッグ情報関連付け部３５は、前記データ項目addrの値が関数の先頭か末尾か（即ち、先頭(1)または末尾(0)）を検索する。図１３では、アドレス0x80000408は、関数の先頭であることが判るので、値１をデータ項目topとして前記着目エントリに追加する。同様の手順を図１０のエントリＳ６０２、Ｓ６０４、Ｓ６０７、Ｓ６０９、Ｓ６１２についても行う。
【００４９】
次に、図１１のＳ７０５が示す解析手順により、まず図１０のＳ６０１のエントリに着目し、実行時情報検索部３６で、データ項目evが"PM"かつデータ項目topが0 かつデータ項目symが着目エントリのデータ項目symと同じエントリを検索し、エントリＳ６１２が得られる。このエントリをデータ項目relのデータとして追加する。
【００５０】
次に、前記データ項目relのエントリが持つデータ項目timeの値と前記着目エントリが持つデータ項目timeの値を引き算した結果をデータ項目durationとして追加する。同様の手順を図１０のＳ６０２、Ｓ６０７についても行う。ここまでの解析の結果として実行時情報管理部３３が保持する実行時情報の例を図１４に示す。
【００５１】
次に、図１１のＳ７０６、Ｓ７０７の処理を行った後、Ｓ７０８の手順を実行する。データ項目evが"PM"かつデータ項目topが1のエントリついて、データ項目symの値毎に、エントリの出現数とデータ項目durationの合計値を求める。エントリＳ６０１、Ｓ６０２、Ｓ６０７でそれぞれsymがmain、func25、func4のエントリとして１つずつ見つかり、図１５の解析結果Ｓ８０３が得られる。解析手順の実行がすべて終了すると、解析結果出力部３７から解析結果情報が出力される。
【００５２】
以上の解析では、図１０に示す実行時情報を出力したプログラムの実行において、割り込み種別１の割り込みが２回、割り込み種別２の割り込みが１回発生し(Ｓ８０１の記述)、ＤＭＡの起動回数が２回あって起動時間の合計は3969（Ｓ８０２の記述）であり、関数main、func25、func4が各１回実行され、実行時間はそれぞれ10763、2189、2024（Ｓ８０３の記述）であったことが判明した。
【００５３】
さらに、実行時情報と解析手順情報のもう一つの実例に関して、解析および集計動作を具体的に説明する。図１６は、実行時情報生成手段１２で生成された実行時情報の第３の例を示す図である。イベントの種類としては、"CM"はプログラム実行中に発生したメモリアクセスによるキャッシュミスの発生を示しており、Addrには該メモリアクセスのアドレスが、Lineには該アドレスがキャッシュメモリ上に存在するラインの番号が記録されている。また、"CH"はプログラム実行中に発生したメモリアクセスによるキャッシュヒットの発生を示しており、Addrには該メモリアクセスのアドレスが、Lineには該アドレスがキャッシュメモリ上に存在するラインの番号が記録されている。また、"CF"は、キャッシュメモリに対するフィル動作の完了を示しており、addrにはキャッシュメモリにフィルされたメモリ領域の先頭アドレスが、lineには該アドレスがキャッシュメモリ上に存在するラインの番号が、wayには該アドレスがキャッシュメモリ上に存在するウェイの番号が記録されている。また、"CO"は、キャッシュメモリに対するパージ動作の完了を示しており、addrにはキャッシュメモリからパージされたメモリ領域の先頭アドレスが、lineには該アドレスがキャッシュメモリ上に存在したラインの番号が記録されている。
【００５４】
図１７は、解析手順情報入力手段２０で追加入力して生成した解析手順情報の第３の例を示す図である。Ｓ１００１の行は、データ項目として、time、ev、addr、line、wayに分割されることを示している。また、Ｓ１００２のブロックは、データ項目timeは整数値、データ項目evは"CM"、"CH"、"CF"、"CO"のいずれかであることを示し、line、way についてはevの値によって情報が変化することを示している。Ｓ１００３の行は、以降の記述で用いる定数値の定義を行っている。
【００５５】
Ｓ１００４のブロックは、データ項目evが"CF"のエントリについて着目し、データ項目evが"CO"かつ該エントリのデータ項目lineと同じ値を持つエントリを前方検索して見つかったエントリをデータ項目relとして追加し、さらに該着目エントリのデータ項目timeの値と前記relが示すエントリのデータ項目timeの値を引き算した結果をデータ項目durationとして追加する手順を示している。
【００５６】
Ｓ１００５のブロックは、データ項目evが"CF"かつデータ項目durationがTH未満のエントリについて着目し、データ項目evが"CH"または"CM で、データ項目lineが着目エントリのデータ項目lineと同じエントリを、着目エントリとデータ項目relが示すエントリの間で検索して該当するエントリをすべて得て、データ項目accessとして追加する手順を示している。
【００５７】
Ｓ１００６のブロックは、データ項目evが"CF"かつデータ項目durationがTH未満のエントリのaddrの値毎について集計し、データ項目accessに含まれるエントリのデータ項目addrについて列挙する手順を示している。
【００５８】
図１６の実行時情報を入力データとする際の解析および集計動作を順に示す。図１７のＳ１００４が示す解析手順により、図１６のＳ９０２のエントリに着目し、実行時情報検索部３６で、データ項目evが"CO"かつデータ項目lineが該着目エントリのデータ項目lineと同じエントリを検索し、エントリＳ９０９が得られる。このエントリをデータ項目relのデータとして追加する。次に、前記データ項目relのエントリが持つデータ項目timeの値と前記着目エントリが持つデータ項目timeの値を引き算した結果666をデータ項目durationとして追加する。
【００５９】
次に、図１７のＳ１００５が示す解析手順により、Ｓ９０２のエントリに着目し、該エントリとデータ項目relが示すエントリＳ９０９の間にある、データ項目evが"CH"または"CM"で、データ項目lineが該着目エントリと同じ値を持つエントリをすべて探し、エントリＳ９０３、Ｓ９０４、Ｓ９０６、Ｓ９０７を検出し、これらのリストをデータ項目accessとして追加する。
【００６０】
次に、図１７のＳ１００６が示す解析手順により、Ｓ９０２のエントリに着目し、データ項目accessに含まれる各エントリのデータ項目addrをすべて表示して、図１８の出力結果Ｓ１１０１が得られる。解析手順の実行がすべて終了すると、解析結果出力部３７から解析結果情報が出力される。
【００６１】
以上の解析では、図１６に示す実行時情報を出力したプログラムの実行において、キャッシュメモリにフィルされてから時間30000以内にパージされたメモリ領域の先頭アドレスと、該メモリ領域がキャッシュメモリ上にある間に該アドレスと同ラインにあるアドレスに対するアクセスを列挙している。列挙されたアドレスは、キャッシュメモリ上で同じ領域を使用しているためにアクセス発生によりキャッシュのフィル／パージを繰り返している関係にあることが示されている。
【００６２】
尚、上記実施の形態では、解析手順情報生成手段１３をプログラム実行系１０内に設ける構成としたが、解析手順情報を生成する手段をプログラム実行系１０外に別途設ける構成としてもよい。
【産業上の利用可能性】
【００６３】
本発明にかかわるプログラム開発支援装置は、対象とするイベントの解析手順について解析手順情報の追加が可能な解析手順情報入力手段を設けることにより、プロファイラに実行時情報を解析する処理を別途追加することなく、実行時情報の解析が行えるという効果や、利用者が解析手順情報を任意に追加／修正して、所望の解析が行えるという効果を有し、プロセッサのソフトウェア開発などに使用するプログラム開発支援装置等として有用である。
【図面の簡単な説明】
【００６４】
【図１】本発明の実施の形態におけるプログラム開発支援装置の構成を示す図
【図２】本発明の実施の形態におけるプログラム開発支援装置の、プロファイラの構成を示す図
【図３】本発明の実施の形態におけるプログラム開発支援装置のプロファイラの解析処理手順を示すフローチャート
【図４】本発明の実施の形態におけるプログラム開発支援装置のプロファイラの集計処理手順を示すフローチャート
【図５】解析手順情報の例を示す図
【図６】集計手順情報の例を示す図
【図７】実行時情報の第１の例を示す図
【図８】解析手順情報の第１の例を示す図
【図９】解析結果情報の第１の例を示す図
【図１０】実行時情報の第２の例を示す図
【図１１】解析手順情報の第２の例を示す図
【図１２】プログラムマークに関するデバッグ情報の例を示す図
【図１３】関数名とそのアドレスに関するデバッグ情報の例を示す図
【図１４】解析の結果として実行時情報管理部が保持する実行時情報の例を示す図
【図１５】解析結果情報の第２の例を示す図
【図１６】実行時情報の第３の例を示す図
【図１７】解析手順情報の第３の例を示す図
【図１８】解析結果情報の第３の例を示す図
【符号の説明】
【００６５】
１０  プログラム実行系
２０  解析手順情報入力手段
３０  プロファイラ
３４  解析実行部
３７  解析結果出力部
【図１】
2005107794.tif 000003
【図２】
2005107794.tif 000004
【図５】
2005107794.tif 000005
【図６】
2005107794.tif 000006
【図７】
2005107794.tif 000007
【図８】
2005107794.tif 000008
【図９】
2005107794.tif 000009
【図１０】
2005107794.tif 000010
【図１１】
2005107794.tif 000011
【図１２】
2005107794.tif 000012
【図１３】
2005107794.tif 000013
【図１４】
2005107794.tif 000014
【図１５】
2005107794.tif 000015
【図１６】
2005107794.tif 000016
【図１７】
2005107794.tif 000017
【図１８】
2005107794.tif 000018
【図３】
2005107794.tif 000019
【図４】
2005107794.tif 000020