(57)【特許請求の範囲】
【請求項１】
アドレス監視手段とプログラムカウンタと信号発生手段とを少なくとも備えた組み込み
システムに於けるプログラム性能の測定方法であって、
アドレス監視手段がプログラムカウンタを監視し、所定のアドレスのプログラムコードが実行された場合に、アドレス監視手段が信号発生手段に対して、所定の表示信号パタンの出力を指示し、
前記組み込みシステムは、前記表示信号パタンとアドレスとの関係を含むテーブル手段を含み、該テーブル手段の設定内容を外部記憶手段に保存し、また、外部記憶手段から復元を可能とすることにより、任意の時点で、前記プログラム性能の測定を再現可能としたことを特徴とするプログラム性能の測定方法。
【請求項２】
組み込みシステムに於けるプログラムを高級言語で記述した場合に、前記テーブル手段に、高級言語のステートメント番号とプログラムコード空間のアドレスとの対応関係情報を含み、所定のステートメント番号のプログラムが実行された場合に、前記アドレス監視手段が信号発生手段に対して、所定の表示信号パタンの出力を指示することを特徴とする請求項１に記載のプログラム性能の測定方法。
【請求項３】
前記表示信号パタンは、オシロスコープに表示されることを特徴とする、請求項１，又は２に記載のプログラム性能の測定方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、測定用の特別なコードをアプリケーションプログラム中に記述することなく、任意の2点間のプログラム実行時間を計測する方法に関するものである。
【背景技術】
【０００２】
組み込みシステムにおいて、アプリケーションプログラムの任意の2点間の実行時間を測定する際、サイクルカウンタ等による計測が不可能な場合、測定区間の開始と終了地点で特定の信号を出力し、オシロスコープ等外部機器で測定する。この場合、当該アプリケーションプログラム中に信号を出力するためのコードを追記しなければならない。この行為は、測定後に、信号を出力するためのコード削除を行なわなければならず、アプリケーションプログラムのソースコード管理が煩雑となった。また、後日測定を再現するためには、再度測定用コードをアプリケーションプログラムに記述しなければならないので、容易に測定環境を再現できなかった。
【０００３】
この状況は、アプリケーションプログラム中に測定用プログラムコードを記述していることに起因する。
アプリケーションプログラムに測定用プログラムコードを記述せずに実行時間を測定する方法に関しては、下記特許文献１に記載された方法がある。
この方法では、測定に関するイベント（例えば、特定のアドレスを既定回参照したなど）が発生した場合に割り込みを発生させる回路と、実行時間、割り込み回数等所望の統計情報を処理するハンドラとから構成されており、統計処理するハンドラを割り込みにより起動することにより、当該アプリケーションに手を加えることなく実行時間を始めとするプロファイリングを実施することを特徴とする。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００５−２１５８１６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかし、この方法では、プログラムメモリ空間にハンドラが存在しなければならず、プログラムメモリ空間の制約が厳しい組み込み系では、適用できない場合がある。
また、割り込み移行時間およびハンドラでの測定用プログラムコードの処理時間が発生するため、精度が要求される実行時間の測定には不向きであった。
【課題を解決するための手段】
【０００６】
本発明に係るプログラム性能の測定方法は、アドレス監視手段とプログラムカウンタと信号発生手段とを少なくとも備えた組み込みシステムに於けるプログラム性能の測定方法であって、アドレス監視手段がプログラムカウンタを監視し、所定のアドレスのプログラムコードが実行された場合に、アドレス監視手段が信号発生手段に対して、所定の表示信号パタンの出力を指示し、前記組み込みシステムは、前記表示信号パタンとアドレスとの関係を含むテーブル手段を含み、該テーブル手段の設定内容を外部記憶手段に保存し、また、外部記憶手段から復元を可能とすることにより、任意の時点で、前記プログラム性能の測定を再現可能としたことを特徴とする。
【０００７】
また、本発明に係るプログラム性能の測定方法は、組み込みシステムに於けるプログラムを高級言語で記述した場合に、前記テーブル手段に、高級言語のステートメント番号とプログラムコード空間のアドレスとの対応関係情報を含み、所定のステートメント番号のプログラムが実行された場合に、前記アドレス監視手段が信号発生手段に対して、所定の表示信号パタンの出力を指示することを特徴とする。
【発明の効果】
【０００８】
本発明に係るプログラム性能の測定方法によれば、アドレスモニタにより指定されたアドレスを監視し、監視対象のアドレスに対応した波形を出力できるので、実行速度の測定のために新たにプログラムコードを追加することなく、プログラムコードの任意の2点間の実行時間を測定することができる。
【０００９】
また、測定用のプログラムコードを挿入する必要がないので、測定用のプログラムコードに対するオーバヘッドが生じない分、測定用のプログラムコードを挿入する方法と比較して、高い精度で測定することができる。
【００１０】
さらに、設定情報入出力部により、設定内容の保存／復元が可能となるので、容易に測定を再現することができる。
【００１１】
また、高級言語上でプログラムの性能を測定する場合でも、高級言語のステートメント位置とプログラムコード空間のアドレスの対応情報が含まれたデバッグ情報を利用することにより、高級言語上でプログラムコード空間のアドレスを意識することなく測定位置を指定することが可能となる。
【図面の簡単な説明】
【００１２】
【図１】本発明の第1の実施形態に係る方法を実行する基本構成を表した図である。
【図２】アドレスモニタの構成を示す図である。
【図３】アドレス管理部の構成を示す図である。
【図４】出力波形の一例を示す図である。
【図５】信号発生部の構成を示す図である。
【図６】第1の実施形態の構成を示すブロック図である。
【図７】第1の実施形態の結果としてオシロスコープに出力される波形図である。
【図８】第2の実施形態の方法を実現する為のアドレス管理部の構成図である。
【図９】第2の実施形態の適用例である。
【図１０】実行されたプログラムパスの確認を示す図である。
【発明を実施するための形態】
【００１３】
本発明に係るプログラム性能の測定方法について、図面を参照して以下で詳細に説明する。
（第１の実施形態）
【００１４】
図１は、本発明の第1の実施形態に係る方法を実行する基本構成を表した図である。
【００１５】
本発明の方法は、「アドレス管理部1」「アドレスモニタ2」「「信号発生部3」の３つの構成要素に基づいて実行される。
アドレス管理部1は、アドレスモニタ2と信号発生部3に接続され、アドレスモニタ2と信号発生部3に対して必要情報の設定を行なう。
【００１６】
アドレスモニタ2は、プログラムカウンタ4と信号発生部3に接続される。
アドレスモニタ2は、プログラムカウンタ4を監視し、指定されたアドレスのプログラムコードを検出すると、信号発生部に対して信号出力指示を出す。
信号発生部は、信号出力用ポートと接続される。
【００１７】
図２は、「アドレスモニタ２」の構成を表した図である。「アドレスモニタ２」はプログラムカウンタ4を監視し、指定されたアドレスのプログラムコードが実行された場合に、信号発生部3に対して指定された信号パターンを出力するように指示する。
アドレスモニタ2は、監視するアドレスとそのアドレスが実行された場合に出力する信号パターン、およびモニタの要否を指定する有効／無効フラグを管理するテーブル（以降アドレスモニタ管理テーブル１４と記す）を有する。アドレスモニタ2は、有効／無効フラグが有効になっているアドレスに対して監視を実施する。
【００１８】
図３は、「アドレス管理部1」の構成を表した図である。アドレス管理部1は、信号パターンを
出力するプログラム位置と信号パターンを管理するテーブル（以降、アドレステーブル5と記す）と、信号パターンを出力するプログラム位置をグルーピングし、グループ単位で信号パターン出力の有効／無効を管理するテーブル（以降、グループテーブル6と記す）、信号パターンを管理するテーブル（以降、信号パターンテーブル7と記す）アドレステーブル5、グループテーブル6を操作するテーブル操作部8、アドレスモニタに監視するアドレスを書き込むまたは監視アドレスの有効／無効を制御するアドレスモニタ制御部9、信号パターンテーブルの内容を信号発生部に設定する信号パターン制御部10と設定内容の入出力を行なう設定内容入出力部11により構成される。
【００１９】
テーブル操作部8は、信号パターンテーブル7、アドレステーブル5、グループテーブル6と接続されており、各テーブルが有するフィールド情報の登録または削除を行なう。
【００２０】
信号パターン制御部10は、信号パターンテーブル7と接続されており、信号発生部3に対して設定を行なう。
【００２１】
アドレスモニタ制御部9は、アドレステーブル5とグループテーブル6に接続されており、アドレスモニタ2に対して設定を行なう。
【００２２】
設定内容入出力部１１は、信号パターンテーブル7、アドレステーブル5、グループテーブル6と接続され、各テーブル情報を外部へ出力する、または外部から入力する。
【００２３】
アドレステーブル5の構成要素は以下のとおりである。
"アドレス”：
測定対象となるプログラムコード空間のアドレスである。
”出力パターン番号”
アドレスフィールドで指定されたプログラムコード空間のアドレス位置のプログラムコードが実行された場合に出力する信号の出力パターン番号である。
【００２４】
グループテーブル6は、以下の要素により構成される。
“グループ番号”：
グループを識別するための番号である。グループは、１つ以上の測定ポイントにより構成されており、測定ポイントの関連付けを行なう。
“登録個数”：
グループに登録されているアドレスの個数である。登録個数0は、そのグループが未使用であることを表す。
“有効／無効”
グループに登録されているアドレスの有効／無効を定義する。有効の場合は、アドレスモニタ管理テーブルに登録されているアドレスの中で、グループに登録されているアドレスのみが有効になる。無効も同様に、グループに登録されているアドレスのみ無効となる。
“アドレス”：
測定対象となるアドレスであり、登録できるアドレス数は可変である。
【００２５】
信号パターンテーブル7は、以下の要素により構成される。
“信号初期レベル”：
信号出力用専用ポートの初期レベルであり、HighまたはLowを指定する。
“パルス時間単位”：
パルス時間単位は、生成する信号パターンのパルス幅の単位時間を指定する。
“パターン番号”：
指定されたパターン番号に対する出力波形である。
【００２６】
出力波形は、区間ｎ(n=1…8)で指定される８つの区間を定義することにより決定する。
区間ｎが0のとき、初期信号レベルがパルス時間単位出力される。また、区間nが1のとき、初期信号レベルと逆位相のレベルがパルス時間単位出力される。
1つの区間は、1ビットで構成されるため、区間1〜区間8は8ビットのデータ長で構成される。
【００２７】
図5は信号発生部3を表した図である。  「信号発生部3」は、信号発生器と信号初期レベル、パルス時間単位、信号パターン番号と生成する信号パターンの情報を保持するテーブル（以降、信号パターン管理テーブル13と記す）により構成される。
信号パターン管理テーブル13の構成は、信号パターンテーブル10と同じである。
信号発生器12は、信号パターンを生成し信号出力ポート13から出力する。
【００２８】
図６は、第１の実施形態の構成である。
先ず、測定に必要な情報をアドレス管理部1のテーブル操作部8が各テーブルに登録する。
テーブル操作部8が操作する情報と、登録先テーブルは以下のとおりである。
図6に示されるプログラムのアドレス0x1000から0x1008の間の実行時間を測定する場合を考える。0x1000を実行した時点で波形の出力パターン番号１を出力する。また、0x1008を実行した時点で波形の出力パターン番号2を出力する。
【００２９】
信号初期レベル、パルス時間単位、出力パターンを信号パターンテーブル７に登録する。出力パターン番号１は、初期レベルLow、パルス時間単位ｎ、出力パターンを2進数で1000 0000と設定する。このとき、出力される波形は図４(a)となる。
同様に、出力パターン番号2は、初期レベルLow、パルス時間単位ｎ、出力パターンを2進数で1010 0000と設定する。このとき、出力される波形は図４(b)となる。
【００３０】
テーブル操作部８は、測定対象のアドレス0x1000と出力パターン番号１をアドレステーブル5に登録する。同様に、測定対象のアドレス0x1008と出力パターン番号２をアドレステーブル5に登録する。
【００３１】
アドレステーブル5に存在する測定位置のアドレスのなかで、0x1000と0x1008を同一グループとしてグループテーブル6に登録し、このアドレスを有効とする。登録個数は、自動的にカウントされテーブル操作部８がグループテーブル6に2を登録する。
【００３２】
グループテーブル6への書き込みが終了すると、テーブル操作部8はアドレスモニタ制御部9にアドレスモニタ管理テーブル14への書き込み要求を行なう。このとき、アドレスモニタ制御部9は、アドレステーブル5からアドレスモニタ2のアドレスモニタ管理テーブル14に測定対象のアドレスと出力パターンを書き込む。
また、グループテーブル6を参照し、各アドレスに対する有効/無効を設定する。
【００３３】
信号パターンテーブルへの書き込みが終了すると、テーブル操作部8は、信号パターン制御部10に信号パターン管理テーブル15への書き込み要求を行なう。このとき、信号パターン制御部10は、信号パターンテーブル7の内容を信号発生器を管理する信号パターン管理テーブル15に書き込む。
【００３４】
プログラムを実行すると、アドレスモニタ2はプログラムカウンタ4を監視する。そしてプログラムカウンタ4の値とアドレス管理テーブル5に登録されているアドレスが一致し、かつそのアドレスが有効になっている場合、アドレスモニタ2は信号発生部3に対して、アドレスに指定されている信号パターンを出力するように指示する。
【００３５】
アドレスモニタ2から出力指示を受けた信号発生部3は、指定された信号パターンを生成し、信号出力用ポート13に波形を出力する。
【００３６】
オシロスコープを信号出力用ポート13に接続し出力波形をモニタすると、波形のパターンによりプログラムの実行位置が特定できるので、任意の2点間のプログラム実行時間を計測することができる。
【００３７】
図７は、第１の実施形態の結果として、オシロスコープに出力される波形を示した図である。アドレス１に出力パターン１、アドレス２に出力パターン２を設定し、アドレス１とアドレス２の間の実行時間を測定する様子を表した図である。
出力パターン番号１の波形はアドレス0x1000の実行、出力パターン番号2の波形はアドレス0x1008の実行を表しているので、出力パターン番号１，２の間の時間を計測すれば、アドレス0x1000と0x1008の間の実行時間が分かる。
【００３８】
テーブル操作部8を用いて特定グループを無効にすると、アドレスモニタ制御部9は
アドレス管理テーブル14に登録されてるアドレスの中で特定グループに登録されているアドレスに対して、無効を設定する。
【００３９】
設定情報入出力部11に出力要求を行なうと、設定情報入出力部はアドレステーブル5、グループテーブル6、信号パターンテーブル7の内容を外部媒体に記録する。
また、入力要求を行なうと、外部媒体に記録した情報を各テーブルに復元することにより、測定の再現が可能となる。
【００４０】
以上のように、第１の実施形態によれば、アドレスモニタ2が指定されたアドレスを監視し、監視対象のアドレスに対応した波形を出力できるので、実行速度の測定のために新たにプログラムコードを追加することなく、プログラムコードの任意の2点間の実行時間を測定することができる。
また、測定用のプログラムコードを挿入する必要がないので、測定用のプログラムコードに対するオーバヘッドが生じない分、測定用のプログラムコードを挿入する方法と比較して、高い精度で測定することができる。
さらに、設定情報入出力部11により、設定内容の保存／復元が可能となるので、容易に測定を再現することができる。
【００４１】
（第２の実施形態）
【００４２】
第２の実施形態は、C言語等の高級言語上でのプログラム性能の測定方法について説明する。
第１の実施形態では、プログラムコード空間のアドレスにより測定位置を指定したが、第２の実施形態では、C言語等の高級言語上で測定個所を指定することが可能となる。
【００４３】
図8は、第２の実施形態を実現するためのアドレス管理部6の構成図である。第１の実施
形態に対してデバグ情報I/F部１７とアドレステーブル５’に測定ポイントのフィールドを新たに追加する。デバッグ情報I/F部１７は、テーブル操作部8と接続される。他の構成については、第１の実施形態と同じである。
【００４４】
デバッグ情報I/F部は、コンパイラ・リンカ等のコード生成ツールが出力するデバッグ情報を読み込み、指定された高級言語のステートメント位置をプログラムコード空間のアドレスに変換する機能を有する。
【００４５】
アドレステーブル5‘に追加した測定ポイントのフィールドは、高級言語のステートメント番号を指定する。ステートメント番号は、高級言語の1行に付与される番号である。第１の実施形態では測定個所をプログラムコード空間のアドレスで指定していたが、第２の実施形態では、高級言語のステートメント番号で指定する。
【００４６】
図9は、第２の実施形態の適用例である。
コンパイラ・リンカ等のコード生成ツールが出力するデバッグ情報には、高級言語のステートメント番号とプログラムコード空間のアドレスの対応に関する情報が含まれている。
テーブル操作部8を介して高級言語のステートメント番号が指定されると、デバッグ情報I/F部はデバッグ情報から高級言語のステートメント番号とプログラムコード空間のアドレスの対応に関する情報を読み取り、ステートメント番号に対応するプログラムコード空間のアドレスに変換する。変換されたプログラムコード空間のアドレスは、デバッグ情報I/F部がテーブル操作部8を用いて、アドレステーブル5’のアドレスフィールドに設定する。
【００４７】
グループの設定も同様に、ステートメント番号で指定する。テーブル操作部8は、ステートメント番号でグループテーブルに登録要求または削除を受領すると、アドレステーブルを参照してプログラムコード空間のアドレスに変換した後、グループテーブルに登録または削除する。
信号パターンの登録は、第１の実施形態と同様である。
【００４８】
以上の動作により、各テーブルの状態は第１の実施形態と同じとなるため、第１の実施形態と同じ動作でプログラムの実行時間を測定することができる。
【００４９】
第１の実施形態では、プログラムコード空間のアドレスを指定するため、高級言語で測定個所を指定するためには、高級言語の測定位置とプログラムコード空間のアドレスの対応を考えなければならなかった。
第２の実施形態では、アドレス管理機能1にデバッグ情報I/F部17を設け、高級言語のステートメント位置とプログラムコード空間のアドレスの対応情報が含まれたデバッグ情報を利用することにより、高級言語上でプログラムコード空間のアドレスを意識することなく測定位置を指定することが可能となる。
【００５０】
第1、第２の実施形態では、プログラムの実行時間の測定を目的としている。
しかし、本発明では、複数個の測定ポイントに対して個別の出力パターンを設定することが
できるので、実行されたプログラムパスを確認することも可能である。
【００５１】
従来、プログラムの実行パスを確認するためには、カバレッジ機能を有した機材またはソフトウェアが必要であるが、本発明を利用すれば、特別な機材またはソフトウエアを利用することなくプログラムパスを確認できる。
【００５２】
プログラム中に条件文があり、条件により真のパスと偽のパスに分岐するプログラム構造を考える。この場合、真のパスと偽のパスにそれぞれ異なる信号パターンを定義した測定ポイントを設定する。その後、プログラムを実行し、オシロスコープで出力される信号パターンを確認すれば、実行されたプログラムパスを確認することが可能である。
【００５３】
図10は、実行されたプログラムパスの確認を行う様子を示している。実行文b=1には出力パターン１を定義する。同様に実行文b=0には出力パターン２を定義する。プログラムを実行しオシロスコープで信号パターンを確認したとき、出力パターン１が出力されていれば、このプログラムの変数aは正であり、実行文b=1が実行されたことが分かる。
【符号の説明】
【００５４】
１  アドレス管理部
２  アドレスモニタ
３  信号発生部
４  プログラムカウンタ
５、５‘  アドレステーブル
６  グループテーブル
７  信号パタンテーブル
８  テーブル操作部
９  アドレスモニタ制御部
１０  信号パタン制御部
１１  設定内容入出力部
１２  信号発生器
１３  信号入出力ポー
１４  アドレス管理テーブル
１７  デバグ情報I/F部
【図１】
0005762229.tif 000002
【図２】
0005762229.tif 000003
【図３】
0005762229.tif 000004
【図４】
0005762229.tif 000005
【図５】
0005762229.tif 000006
【図６】
0005762229.tif 000007
【図７】
0005762229.tif 000008
【図８】
0005762229.tif 000009
【図９】
0005762229.tif 000010
【図１０】
0005762229.tif 000011