(57)【要約】【課題】プログラムを修正することなく正確なプロファイルデータを取得することができる試験装置を提供すること。【解決手段】試験システム１は、プログラムの実行時に命令をフェッチする命令フェッチユニット１１と、任意のビットパターンを保存する登録メモリ２１と、フェッチされた命令と登録メモリ２１に保存されたビットパターンとの一致を検出するビット比較機構２３と、任意のビットパターンの検出回数を登録する管理テーブル２２と、一致検出部が一致検出した場合、管理テーブル２２にその実行を登録又は管理テーブル２２のその累積実行回数を更新する登録／更新機構２４とを有する。【選択図】図１
2008276683.tif 000002
【特許請求の範囲】
【請求項１】
プログラムの実行時に命令をフェッチする命令フェッチ部と、
任意のビットパターンを保存する登録メモリと、
フェッチされた命令と前記登録メモリに保存されたビットパターンとの一致を検出する一致検出部と、
前記任意のビットパターンの検出回数を登録する管理テーブルと、
前記一致検出部が一致検出した場合、前記管理テーブルにその検出を登録又は前記管理テーブルのその累積検出回数を更新する登録／更新部とを有する試験装置。
【請求項２】
前記管理テーブルは、前記任意のビットパターンの検出回数及びその実行アドレスを登録し、
前記登録／更新部は、前記一致検出した場合、前記管理テーブルに対し、累積実行回数及びその実行アドレスを登録又は更新する
ことを特徴とする請求項１記載の試験装置。
【請求項３】
前記任意のビットパターンは、関数の先頭に置かれる命令コードである
ことを特徴とする請求項１又は２記載の試験装置。
【請求項４】
前記プログラムは高速な命令及び低速な命令を有し、
前記任意のビットパターンは、前記低速な命令を示す命令コードである
ことを特徴とする請求項１又は２記載の試験装置。
【請求項５】
マイコンであることを特徴とする請求項１乃至４のいずれか１項記載の試験装置。
【請求項６】
マイコンと、前記マイコンに接続されたエミュレータとを備え、
前記マイコンは、前記命令フェッチ部、前記登録メモリ及び前記一致検出部を有して、フェッチした命令と前記登録メモリに登録されたビットパターンとの一致検出を行い、
前記エミュレータは、前記管理テーブル及び前記登録／更新部を有して、前記一致検出の結果に基づき前記管理テーブルを更新する
ことを特徴とする請求項１乃至４のいずれか１項記載の試験装置。
【請求項７】
マイコンと、前記マイコン接続されたエミュレータと、前記エミュレータを制御するデバッガとを備え、
前記マイコンは、前記命令フェッチ部、前記登録メモリ及び前記一致検出部を有して、フェッチした命令と前記登録メモリに登録されたビットパターンとの一致検出を行い、
前記デバッガは、前記管理テーブル及び前記登録／更新部を有して、前記一致検出の結果に基づき前記管理テーブルを更新する
ことを特徴とする請求項１乃至４のいずれか１項記載の試験装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マイコン上で動作するソフトウェアプログラムの性能解析を行なう試験装置に関する。
【背景技術】
【０００２】
組み込みソフトウェアプログラムの開発では、プログラムの実行性能向上のため、先ず、実際にプログラムを動作させてプログラムの動作遷移をデータ(プロファイルデータ)として取得する。そしてこれを解析してプログラムのボトルネックを認識し、プログラム修正/性能改善を行なうという開発形態が浸透しつつある。よって、このような開発フローを助けるツールとして、プログラム動作解析ツールへの要求が高まってきている。現在のプログラム動作解析ツールは、以下に述べる二つの方法によってプロファイルデータの取得を行なっている。
【０００３】
先ず、ソフトウェア的にプロファイルデータを取得する方法について説明する。図３は、プログラムを修正しソフトウェア的にプロファイルデータを取得する方法を示す図である。このシステムは、組み込みプログラム（Ａ）１１２及びプロファイル取得用プログラム（Ｂ）１１３をコンパイラするビルダ／コンパイラ１１１と、プロファイル取得用プログラム（Ｂ）１１３を実行するプログラム実行環境１１４と、この実行を制御するデバッガ１１５とからなる。プログラム実行環境１１４の実行によりプロファイルデータ１１６を取得する。
【０００４】
この方法では、プログラムにソフトウェアのプロファイルコードを挿入したプロファイル取得用プログラム（Ｂ）１１３を作成し、これをターゲット、エミュレータ又はシミュレータなどのプログラム実行環境１１４上で実行しプロファイルデータ１６を取得する。
【０００５】
次に、図３に示すこのソフトウェアによるプロファイルデータ取得方法について説明する。ソフトウェアによるプロファイルデータの取得では、組込みプログラム（Ａ）１１２に対して組み込みプログラム（Ａ）１１２のプロファイル取得用プログラム（Ｂ）１１３を作成し、これをターゲット、エミュレータ又はシミュレータ上で実行する。プロファイル取得用プログラム（Ｂ）１１３の生成は、一般的にコンパイル時にプロファイルデータ取得用プログラム生成オプションを指定することによって行なう。コンパイラ１１１は、プロファイルデータ取得用プログラム生成オプションが指定されると、関数の先頭、基本ブロックの先頭などにプロファイルデータ取得用コードを挿入する。この取得コードが実行されることによって、ある関数、ある基本ブロックの実行累積回数がターゲットやホストのメモリ上に保存される。これを後に、実行解析ツールなどを用いて参照することでプログラム（Ａ）１１２の実行遷移を知ることが可能となる。
【０００６】
次に、ハードウェアによるプロファイルデータ取得方法について説明する。図４は、プログラムは修正せずエミュレータのトレース機能を用いて取得したトレースデータを元にプロファイルデータを取得する方法を示す図である。このシステムは、組み込みプログラム（Ａ）１２２をコンパイラするビルダ／コンパイラ１２１と、組み込みプログラム（Ａ）を実行するエミュレータ１２３と、この実行を制御するデバッガ１２４を有する。エミュレータ１２３から取得したトレースデータ１２５は、解析ツール１２６により解析されプロファイルデータ１２７が取り出される。この方法では、組み込みプログラム（Ａ）１２２をエミュレータ１２３上で実行し、エミュレータ１２３のトレース情報出力機能によりトレースデータ１２５を取得、このデータを元にプロファイルデータ１２７を取得する。
【０００７】
次に、図４に示すハードウェアによるプロファイルデータ取得方法について説明する。ハードウェアのプロファイルデータ取得では組込みプログラム（Ａ）１２２自体は修正する必要がない。プログラムを実行する環境として、トレースデータ１２５を取得することができるエミュレータ１２３を準備し、エミュレータ１２３上でプログラムを実行し、全実行のトレースデータ１２５を取得する。トレースデータ１２５には、プログラムの実行開始時点から終了時点までの全実行命令の履歴（実行アドレス、実行命令、アクセスアドレスなどの情報）が出力される。このトレースデータ１２５を実行解析ツール１２６などで読み取ることで、トレースデータ１２５からプロファイルデータ１２７への変換を行いプログラムの実行遷移を知ることが可能となる。
【０００８】
また、特許文献１には、任意のカストマーワークロードにおけるプロセッサステートを消極的に監視すると共に、ボトルネックを特徴付ける方法及び装置が開示されている。この特許文献１においては、ＣＰＵ内部の命令の実行状態を外部ピンに接続したロジックアナライザで観測できるようにするため、ＣＰＵ内部の整数及び浮動小数点データパスに対して１０本のＰＩＰＥ信号を設けている。ＰＩＰＥ信号は、ＰＩＰＥ９：いずれかの有効データメモリリファレンス命令が現れたときアサートされる、ＰＩＰＥ８：いずれかの有効コントロールトランスファ命令が現れたときアサートされる、といった信号であり、これらの信号を観測することで命令の合計数の計数ができ、また命令グループのヒストグラムによる解析を行なうことができる。
【特許文献１】特開平６−８９２０５号公報
【発明の開示】
【発明が解決しようとする課題】
【０００９】
既存のプロファイルデータ取得の仕組みに関する問題点を以下に説明する。まず、図３で示したソフトウェアによる取得方法では、再コンパイルを行い、プロファイルデータ取得用プログラム（Ｂ）１１３を得なければならない。これは、最終的に製品に組み込まれる組み込みプログラム（Ａ）１１２とは、プログラムとして別のものとなる。ソフトウェアによるプロファイルデータ取得の仕組みで用いられるプロファイルコードは、その中で、各関数や基本ブロックを識別するよう割り振られた識別番号テーブルに対し、実行回数を累積していくなどの処理を行なっている。よって、組込みプログラム（Ａ）１１２とプロファイルデータ取得用プログラム（Ｂ）１１３は、関数の呼び出し関係は同一であるが、コードサイズ、実行速度は異なる。
【００１０】
実行速度の違いは、割り込みなどの非同期に制御が移るプログラム部分の実行タイミングに影響を与えるため、実行遷移そのものも異なる結果となりうる。また、プロファイルによってプログラムのボトルネックを探し出す場合、そのマイコンのアーキテクチャ上ウィークポイントとなる命令の実行頻度を知ること（命令レベルのプロファイル）が重要であるが、ソフトウェアによるプロファイル取得方法では、その仕組み上プロファイルデータの粒度（プロファイルデータが、ある区間が実行されたことを示す時のある区間の大きさ）を基本ブロック（流入や分岐なしに一まとまりで実行される命令の塊）や関数レベル以下に小さくすることは困難であり、よって命令レベル（アセンブラ命令レベル）のプロファイルを得ることも難しいという問題点がある。
【００１１】
また、図４に示したハードウェアによる取得方法では、基本的にトレースデータを元にしたプロファイルデータの取得となるので、トレースデータが完全に取得できていることが前提となる。よってトレースデータを取得する仕組みを持たないマイコンに対しては適用が不可能である。また、最近の組込みマイコンは１００ＭＨｚ以上の高速で動作するものも多くなり、このようなマイコンではプログラムの実行に一対一で対応したトレースデータをエミュレータに対して漏れなく送出することがハードウェアの制約上困難になってきている。更に、トレースデータに漏れがなかったとしても、エミュレータ上で保存できるトレースデータ量は、エミュレータ上のトレースメモリサイズによって制限されるため、プログラムの実行開始時点から終了時点までの全トレースデータを保存可能なケースは稀である。トレースデータに漏れがあれば正しいプロファイルデータは得られない。また、全トレースデータが保存可能であっても、そのような場合トレースデータの総量が膨大となるためプロファイル情報への変換や、必要情報の抽出に非常に多くの時間がかかる。
【００１２】
さらに、特許文献１に記載の技術においては、命令グループ（メモリリファレンス命令、コントロールトランスファ命令）レベルでの解析しかできないため、詳細なアセンブラ１命令レベルでの観測が困難であるという問題点がある。
【課題を解決するための手段】
【００１３】
本発明にかかる試験装置は、プログラムの実行時に命令をフェッチする命令フェッチ部と、任意のビットパターンを保存する登録メモリと、フェッチされた命令と前記登録メモリに保存されたビットパターンとの一致を検出する一致検出部と、前記任意のビットパターンの検出回数を登録する管理テーブルと、前記一致検出部が一致検出した場合、前記管理テーブルにその検出を登録又は前記管理テーブルのその累積検出回数を更新する登録／更新部とを有するものである。
【００１４】
本発明においては、登録メモリに保存された任意のビットパターンとフェッチした命令との一致、不一致を検出し、一致した場合はその累積検出回数を更新することで、詳細なプロファイルデータの取得を、プログラム修正なしで行うことができる。プログラムを修正しないため、プログラム実行速度及びタイミングの面でも実際のプログラムを完全に等価とすることができる。ここで、本発明の試験装置は、マイコン単体、マイコン及びエミュレータ、又はマイコン、エミュレータ及びデバッガからなるものとする。
【発明の効果】
【００１５】
本発明によれば、プログラムを修正することなく正確なプロファイルデータを取得することができる試験装置を提供することができる。
【発明を実施するための最良の形態】
【００１６】
以下、本発明を適用した具体的な実施の形態について、図面を参照しながら詳細に説明する。本実施の形態においては、マイコン内部に、任意のビットパターンを保存する領域、フェッチされた命令と保存されたビットパターンとの一致検出機構、及び一致検出された場合その実行アドレスとその実行アドレスの累積実行回数を保存する機構を設けることで、マイコンの内部で任意のコードの実行累積回数を知ることができ、プロファイルデータを既存の仕組みと比較して省資源で正確に得ることができるものである。
【００１７】
図１は、本実施の形態にかかる試験システムを示す図である。本実施の形態にかかる試験システム１は、ＣＰＵ１０、エミュレータ３０及びホストコンピュータ４０を有する。ＣＰＵ１０は、プロファイルユニット１４を有している。ＣＰＵ１０は、キャッシュ１２、メモリ１３、メモリ１３やキャッシュ１２からフェッチした命令を保持する命令フェッチユニット１１、及びプロファイルユニット１４を有する。このＣＰＵはエミュレータ３０と接続され、エミュレータ３０は、ホストコンピュータ４０のデバッガ４１により制御される。ここで、ＣＰＵ１０及びエミュレータ３０でＩＣＥ（in-circuit emulator）（登録商標）を構成してもよく、ＣＰＵ１０を実ＣＰＵとし、この実ＣＰＵチップ上にエミュレータ３０を内蔵したオンチップデバッグを実現してもよい。
【００１８】
ＣＰＵ１０のプロファイルユニット１４は、プロファイルするべき任意のビットパターンを保持することができる特定ビットパターン登録メモリ２１を有する。特定ビットパターン登録メモリ２１には、１又は複数の任意のビットパターンを登録することができる。更にプロファイルユニット１４はビット比較機構２３、プロファイルデータの登録／更新機構２４、プロファイルデータを保存する管理テーブル２２を有する。
【００１９】
なお、図１において、管理テーブル２２及び登録／更新機構２４はプロファイルユニット１４に内蔵されているものとして説明するが、プロファイルユニット１４の一部又は全部の機能を、エミュレータ３０又はデバッガ４１側で実現してもよい。
【００２０】
次に、本実施の形態にかかる動作について説明する。図２は本実施の形態にかかる動作を示すフローチャートである。プロファイルユニット１４が有する特定ビットパターン登録メモリ２１は、プロファイルするべき任意のビットパターンを保持することができる。ここには使用者がホストコンピュータ４０上で動作するデバッガ４１から、エミュレータ３０を介して任意のビットパターンを設定することができる。
【００２１】
プロファイルユニット１４が保持するビット比較機構２３は、ＣＰＵ１０がプログラムを実行する際、命令フェッチユニット１１がメモリ１３やキャッシュ１２からフェッチした命令と、特定ビットパターン登録メモリ２１に保持されたビットパターンとの一致判定を行なう（ステップＳ１）。もし、合致すれば登録／更新機構２４が管理テーブル２２に対してプロファイルデータの登録／更新作業を行なう。管理テーブル２２では、特定ビットパターン登録メモリ２１に登録されたビットパターンと合致した命令の「アドレス」及びそのアドレスの「(累積実行)回数」を保持している。つまり、命令フェッチされた命令コードがビット比較機構２３によって合致と認められたとき、プログラムカウンタ（ＰＣ）に保持されているその「アドレス」が管理テーブル２２に未登録であれば管理テーブルにその「アドレス」と「回数(１回)」を保存する（ステップＳ３：Ｎｏ、Ｓ４）。その「アドレス」が管理テーブル２２に既に登録済みであれば、該当する「アドレス」の「回数」を１加算する（ステップＳ３：Ｙｅｓ、Ｓ５）。このようにして、管理テーブル２２上にはプロファイルデータが保存される。このプロファイルデータは、ＣＰＵ１０からエミュレータ３０を介してホストコンピュータ４０上で動作するデバッガ４１に取り込まれる。最終的に、デバッガ４１は自身が設定した特定ビットパターンと、その特定ビットパターンの実行箇所（アドレス）および各々の実行アドレスの累積実行回数を保持する。
【００２２】
本実施の形態では、ＣＰＵ１０内部において個々の命令のフェッチ時に登録ビットパターンとの比較によって実行頻度を記録する。よって、ソフトウェアによるプロファイル取得手法のような事前準備や、ハードウェアによるプロファイル取得手法のようなハードウェアの導入、膨大なトレース取得及びそこからのプロファイルの抽出などの手順が不要となり、省リソース、短時間でプロファイルデータを取得可能となる。
【００２３】
例えば特定ビットパターンとして関数の先頭に必ず置かれる命令コードを指定すれば、組み込みプログラム（Ａ）の各関数の呼び出し頻度がプログラムの手直しなく、また多量なトレースメモリや解析時間を要することなく知ることが可能となる。あるいは、特定ビットパターンとしてＣＰＵ１０のアーキテクチャ上実行が低速な命令を指定すれば、その命令の実行アドレスと実行頻度をデバッガ４１上で知ることができ、プログラム処理上のボトルネック解析が可能となる。
【００２４】
本実施の形態においは、プロファイルデータの取得をプログラム修正なしで行うことができ、また、取得できるプロファイルデータは、プロファイル取得を行わない時と、プログラム実行速度／タイミングの面でも完全に等価とすることができる。さらに、エミュレータとトレースデータを元にしたプロファイル取得方式に対し、省リソース及び超短時間でプロファイルデータを取得することができる。
【００２５】
なお、本発明は上述した実施の形態のみに限定されるものではなく、本発明の要旨を逸脱しない範囲において種々の変更が可能であることは勿論である。例えば、上述したように、ＣＰＵ１０に登録／更新機能２４及び管理テーブル２２をプロファイルユニット１４に内蔵するものとして説明したが、これらの機能をエミュレータ３０又はデバッガ４１が有するものとしてもよい。同様にプロファイルユニット１４の機能をエミュレータ３０又はデバッガ４１が有するものとしてもよい。
【００２６】
また、本実施の形態においては、特定ビットパターン登録メモリ２１は、１つのビットパターンを登録するものとして説明したが、必要に応じて２以上のビットパターンを登録してもよいことは勿論である。その場合、管理テーブル２２は、各ビットパターンとその実行アドレスを管理すればよい。
【図面の簡単な説明】
【００２７】
【図１】本発明の実施の形態にかかる半導体装置を示す図である。
【図２】本発明の実施の形態にかかる動作を示すフローチャートである。
【図３】プログラムを修正しソフトウェア的にプロファイルデータを取得する方法を示す図である。
【図４】プログラムは修正せずエミュレータのトレース機能を用いて取得したトレースデータを元にプロファイルデータを取得する方法を示す図である。
【符号の説明】
【００２８】
１１  命令フェッチユニット
１２  キャッシュ
１３  メモリ
１４  プロファイルユニット
１６  プロファイルデータ
２１  特定ビットパターン登録メモリ
２２  管理テーブル
２３  ビット比較機構
２４  登録／更新機構
３０  エミュレータ
４０  ホストコンピュータ
４１、１１５  デバッガ
１１１、１２１、１２４  ビルダ／コンパイラ
１１２、１２２  組み込みプログラム（Ａ）
１１３  プロファイル取得用プログラム（Ｂ）
１１４  プログラム実行環境
１１６、１２７  プロファイルデータ
１２３  エミュレータ
１２５  トレースデータ
１２６  解析ツール
１２６  実行解析ツール
【図１】
2008276683.tif 000003
【図２】
2008276683.tif 000004
【図３】
2008276683.tif 000005
【図４】
2008276683.tif 000006