(57)【要約】【課題】簡易な構成で動的プログラム解析の効率を向上させる。【解決手段】データ処理装置は、演算処理装置にて実行される複数の分岐点を有する一連の命令のそれぞれに対応するトレースデータと照合用データの一致または不一致に基づいて、前記複数の分岐点における命令の実行状況を判定する判定部と、前記演算処理装置にて前記一連の命令が複数回実行されるときに、前記複数の分岐点における命令の実行状況の組合せごとの回数を集計する集計部とを有するので、大量のトレースデータを格納することなく、動的プログラム解析の効率を向上させるための情報を操作者に提供できる。【選択図】    図３
2012226459.tif 000002
【特許請求の範囲】
【請求項１】
演算処理装置にて実行される複数の分岐点を有する一連の命令のそれぞれに対応するトレースデータと照合用データの一致または不一致に基づいて、前記複数の分岐点における命令の実行状況を判定する判定部と、
前記演算処理装置にて前記一連の命令が複数回実行されるときに、前記複数の分岐点における命令の実行状況の組合せごとの回数を集計する集計部と、
を有するデータ処理装置。
【請求項２】
請求項１において、
前記照合用データは、情報処理装置により設定されるデータ処理装置。
【請求項３】
請求項１または２において、
前記複数の分岐点における命令の実行状況は、分岐したか否か、および各分岐点が迂回されたことのいずれかまたは両方であるデータ処理装置。
【請求項４】
請求項１乃至３のいずれかにおいて、
前記集計部にて集計された前記複数の分岐点における命令の実行状況の組合せごとの回数が情報処理装置により出力されるデータ処理装置。
【請求項５】
演算処理装置にて実行される複数の分岐点を有する一連の命令のそれぞれに対応するトレースデータと照合用データの一致または不一致に基づいて、前記複数の分岐点における命令の実行状況を判定し、
前記演算処理装置にて前記一連の命令が複数回実行されるときに、前記複数の分岐点における命令の実行状況の組合せごとの回数を集計する、
データ処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、演算処理装置が実行する命令に対応するデータを処理するデータ処理装置等に関する。
【背景技術】
【０００２】
家庭用電化製品などの専用機器では、ＭＣＵ（Micro Control Unit）などの演算処理装置が、制御プログラム（以下、単にプログラムという）の一連の命令を実行する。一連の命令は、プログラムメモリに格納される。ＭＣＵが一連の命令を実行するとき、たとえば、連続して実行される命令が分散したアドレスに格納されていると、命令の読出し時間が増大する。このことは、プログラムの実行速度低下の要因となる。よって、専用機器の開発工程では、プログラム中のかかる箇所を特定し、各命令の格納アドレスを変更したり、命令の実行順序を変更したりすることで、プログラムの実行効率を向上させる作業が行われる。かかる作業をチューニングという。
【０００３】
チューニングの際、プログラム中の修正が必要な箇所（以下、チューニングポイントという）を特定するために、プログラムの解析が行われる。プログラムの解析には、静的プログラム解析と、動的プログラム解析とがある。静的プログラム解析は、ＭＣＵが実際にプログラムを実行する前に、ソースコード上でチューニングポイントを探索する方法である。一方、動的プログラム解析は、ＭＣＵが実際にプログラムの一連の命令を実行するときに、実行される命令の格納アドレスをトレースデータとして取得し、トレースデータからチューニングポイントを探索する方法である（たとえば、特許文献１）。専用機器においては、スイッチ入力や各種割り込みといったハードウェア動作をトリガとするプログラム動作があるので、ハードウェアを動作させながら動的プログラム解析が行われる。
【０００４】
動的プログラム解析には、ＭＣＵからトレースデータを取得して処理する、インサーキットエミュレータ(以下、ＩＣＥという)などのデータ処理装置が用いられる。ＩＣＥは、ＭＣＵを動作させることで出力されるトレースデータを取り込み、これを内部メモリに格納する。操作者は適宜、ホストコンピュータに、ＩＣＥの内部メモリからトレースデータを取り出して表示等させる。そして、操作者は、トレースデータを参照してチューニングポイントを探索する。ここで、かかる作業を効率化する手法として、所定の命令の実行状況を統計的に把握するプロファイル手法が知られている。プロファイル手法では、たとえば、ホストコンピュータのデバッグ用プログラムが、所定の命令の実行回数や実行時間を集計する。所定の命令は、たとえば操作者が任意に特定する関数の呼出しやデータアクセスなどである。操作者は、集計結果を用いてチューニングポイントの探索を行う。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開平０７−１６０４９９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
上記のようなプロファイル手法を含む動的プログラム解析では、種々のハードウェア動作が生じる状況下でトレースデータが取得される。そのために、ＭＣＵにある程度長い時間にわたりプログラムを繰り返し実行させるので、トレースデータのデータ量は膨大になる。よって、ＩＣＥには、膨大なトレースデータを格納可能なメモリ容量が求められる。しかしながら、メモリ容量の拡張は、ＩＣＥの高コスト化や大型化につながるので、好ましくない。また、メモリ容量を拡張したとしても、膨大なトレースデータの中から所定の命令を検出し、その実行回数や実行時間を集計するための処理は、大きい負荷を伴う。
【０００７】
そこで、本発明の目的は、簡易な構成で動的プログラム解析の効率を向上できるデータ処理装置等を提供することにある。
【課題を解決するための手段】
【０００８】
一実施形態におけるデータ処理装置は、演算処理装置にて実行される複数の分岐点を有する一連の命令のそれぞれに対応するトレースデータと照合用データの一致または不一致に基づいて、前記複数の分岐点における命令の実行状況を判定する判定部と、前記演算処理装置にて前記一連の命令が複数回実行されるときに、前記複数の分岐点における命令の実行状況の組合せごとの回数を集計する集計部と、を有する。
【発明の効果】
【０００９】
以下に説明する実施形態によれば、簡易な構成のデータ処理装置により、動的プログラム解析の効率を向上できる。
【図面の簡単な説明】
【００１０】
【図１】データ処理装置の構成例を示す図である。
【図２】演算処理装置が実行するプログラムについて説明する図である。
【図３】データ処理装置の詳細な構成例を示す図である。
【図４】演算処理装置が実行するプログラムの例を示す図である。
【図５】判定結果格納部の設定の具体例を示す図である。
【図６】分岐ポイントにおける命令の実行状況の組合せを示す図である。
【図７】集計結果の出力例を示す図である。
【発明を実施するための形態】
【００１１】
以下、図面にしたがって実施形態について説明する。但し、適用される技術的範囲はこれらの実施の形態に限定されず、特許請求の範囲に記載された事項とその均等物まで及ぶものである。
【００１２】
まず、図１、図２を参照して、本実施形態の基本的な構成と動作について説明する。
【００１３】
図１は、本実施形態におけるデータ処理装置の構成例を示す図である。データ処理装置２は、ターゲットシステム６の動的プログラム解析を行うために用いられる。データ処理装置２は、接続部１８を介してホストコンピュータ４と接続される。また、データ処理装置２は、接続部２０を介してターゲットシステム６と接続される。データ処理装置２は、たとえば、インサーキットエミュレータである。ホストコンピュータ４は、たとえば、操作入力手段と、各種情報の表示手段や印刷手段を備えたパーソナルコンピュータなどの情報処理装置である。データ処理装置２とホストコンピュータ４とは、たとえばＵＳＢバスなどの通信バスで接続される。ターゲットシステム６は、たとえば、家庭用電化製品などの専用機器である。データ処理装置２とターゲットシステム６は、トレースデータ用のバスや制御信号用のバスなどの各種バスの並列接続により接続される。あるいは、トレースデータと制御信号を1本のバスでやり取りする接続形態であってもよい。
【００１４】
データ処理装置２では、制御部８が、ホストコンピュータ４からの制御信号に応答して、ターゲットシステム６の演算処理装置１４にプログラムの実行・停止を制御する制御信号を送る。ターゲットシステム６では、演算処理装置１４が、複数の分岐点を含む制御用のプログラムＰＲＧを実行することで、ターゲットシステム６の動作を制御する。演算処理装置１４は、たとえば、ＭＣＵである。プログラムＰＲＧは、たとえばターゲットシステム６内のプログラムメモリ１６に格納される。プログラムメモリ１６は、たとえば、ＲＯＭ（Read Only Memory）である。プログラムメモリ１６は、プログラムＰＲＧに含まれる命令を、それぞれ割り当てられたアドレスに格納する。演算処理装置１４は、プログラムメモリ１６のアドレスを指定して各命令を読み出し、これを実行する。このとき、演算処理装置１４は、実行する各命令の格納アドレスをトレースデータとしてデータ処理装置２の制御部８に送る。データ処理装置２の制御部８は、演算処理装置１４からトレースデータを受け取り、判定部１０に送る。すると、判定部１０と集計部１２が、後に詳述する方法でトレースデータの処理を行う。データ処理結果はホストコンピュータ４に送られる。そして、ホストコンピュータ４は、データ処理結果を表示、印刷等して操作者に提供する。操作者は、提供された情報に基づいて、ターゲットシステム６の動的プログラム解析を行う。
【００１５】
本実施形態では、演算処理装置１４がトレースデータをデータ処理装置２に送る場合を例とする。しかし、プログラムＰＲＧは、たとえばデータ処理装置２内のプログラムメモリ（図示省略）に格納することも可能である。その場合、データ処理装置２の制御部８は、データ処理装置２内のプログラムメモリに格納される各命令を演算処理装置１４に送り、これを実行させる。そして、制御部８が、実行された命令の格納アドレスからトレースデータを生成し、判定部１０に送る。
【００１６】
データ処理装置２において、判定部１０は、ターゲットシステム６から取り込んだトレースデータと照合用データの一致または不一致に基づいて、プログラムＰＲＧの複数の分岐点における命令の実行状況を判定する。ここで、図２を用いて、判定部１０の動作について説明する。
【００１７】
図２には、演算処理装置１４が実行するプログラムＰＲＧが模式的に示される。プログラムＰＲＧは、たとえば、メインルーチンＭＲ１と、サブルーチンＳＲ１、及びＳＲ２を有する。各ルーチンでは、「開始」から「終了」まで、一連の命令が規定される。メインルーチンＭＲ１は、分岐点（以下、分岐ポイントという）Ｂ０及びＢ１を有する。メインルーチンＭＲ１における命令の実行は、分岐ポイントＢ０でサブルーチンＳＲ１に、また分岐ポイントＢ１でサブルーチンＳＲ２に分岐する。また、サブルーチンＳＲ１及びＳＲ２での命令の実行が終了すると、メインルーチンＭＲ１に戻って命令の実行が継続される。分岐ポイントＢ０及びＢ１には、所定の分岐条件の成立・不成立を確認する命令、分岐条件が成立するときの分岐命令、及び、分岐条件が成立しない場合に実行される命令などが含まれる。分岐条件は、たとえば所定の演算結果が得られることや、ターゲットシステム６における各種割込みの発生などである。なお、ここでは便宜上、２つの分岐ポイントＢ０、及びＢ１を例として示すが、分岐ポイントの数は、任意の数とすることが可能である。また、分岐ポイントを、メインルーチンだけでなく、サブルーチンに設定することも可能である。あるいは、分岐ポイントを、サブルーチンの開始アドレスを示す割込みベクタに設定してもよい。
【００１８】
判定部１０は、分岐ポイントＢ０、Ｂ１の順で、各分岐ポイントにおける命令の実行状況を判定する。分岐命令の実行状況は、たとえば、分岐命令が実行されて分岐が発生する「分岐」、分岐命令が実行されずに、その後の命令が実行される「通過」である。さらに、たとえば、分岐ポイントが迂回される「分岐・通過なし」である。
【００１９】
たとえば、分岐ポイントＢ０で分岐が発生するときには、分岐命令が実行され、サブルーチンＳＲ１の命令が実行される。判定部１０は、たとえば、分岐ポイントＢ０の分岐命令の格納アドレス、サブルーチンＳＲ１に含まれる命令の格納アドレス、またはサブルーチンＳＲ１を示す割込みベクタの格納アドレスを照合用データとして保持しておく。そして、これに一致するトレースデータが入力されたときに、判定部１０は、分岐ポイントＢ０における命令の実行状況を「分岐」と判定する。一方、分岐が発生しないときには、分岐ポイントＢ０における分岐命令が実行されず、それ以降の命令が実行される。判定部１０は、たとえば、かかる命令の格納アドレスを照合用データとして保持しておく。そして、これに一致するトレースデータが入力されたときに、判定部１０は、分岐ポイントＢ０における分岐命令の実行状況を「通過」と判定する。なお、分岐ポイントＢ１における「分岐」及び「通過」も、同様にして判定される。
【００２０】
次に、分岐ポイントＢ０が迂回されるときには、分岐ポイントＢ０に対応するトレースデータが入力されず、メインルーチンＭＲ１における分岐ポイントＢ０以降の命令が実行される。これは、たとえば、メインルーチンＭＲ１において分岐ポイントＢ０以前に他のサブルーチンへの分岐が発生し、その後、分岐ポイントＢ０以降に戻って命令が実行される場合などである。このような場合を判定するために、判定部１０は、分岐ポイントＢ０以降に到達したことを示すデータを照合用データとして保持しておく。かかるデータは、たとえば、たとえば分岐ポイントＢ１における分岐条件の成立・不成立を確認する命令などである。そして、分岐ポイントＢ０における命令に対応するトレースデータが入力されず、照合用データに一致するトレースデータが入力されたときに、判定部１０は、分岐ポイントＢ０における分岐命令の実行状況を「分岐・通過なし」と判定する。なお、分岐ポイントＢ１における「分岐・通過なし」については、次のように判定される。たとえば、判定部１０は、分岐ポイントＢ０に対応する照合用データを保持しておく。そして、分岐ポイントＢ０で「分岐」または「通過」を判定した後、分岐ポイントＢ１を示すトレースデータが入力されずに、照合用データと一致し分岐ポイントＢ０に到達したことを示すトレースデータが入力されたときに、判定部１０は、分岐ポイントＢ１が「分岐・通過なし」と判定する。
【００２１】
図１に戻る。データ処理装置２において、集計部１２は、演算処理装置１４にてプログラムＰＲＧが複数回実行されるときに、複数の分岐ポイントＢ０、Ｂ１における命令の実行状況の組合せごとの回数を集計する。プログラムＰＲＧは、ホストコンピュータ４の制御のもと、操作者が任意に設定する複数回実行される。このとき、プログラムＰＲＧのメインルーチンＭＲ１が１回実行されるごとに、複数の分岐ポイントＢ０、Ｂ１における命令の実行状況の組合せのいずれかが成立する。図２に示した例では、２つの分岐ポイントＢ０及びＢ１における命令の実行状況の組合せは、８（＝３＾２−１）通りである。たとえば、分岐ポイントＢ０についての「分岐」、「通過」、または「分岐・通過なし」の判定結果と、分岐ポイントＢ１についての「分岐」、「通過」、または「分岐・通過なし」の判定結果との可能な組合せは、９（＝３＾２）通りである。しかし、分岐ポイントＢ０及びＢ１の両方が迂回される場合、トレースデータと照合用データの一致・不一致によってはこれを判定することができない。よって、分岐ポイントＢ０及びＢ１の両方が「分岐・通過なし」の場合は、可能な組合せの９通りから除外される。
【００２２】
集計部１２は、成立する組合せごとにその回数をカウントする。そして、集計部１２は、組見合わせごとの回数を集計結果として、ホストコンピュータ４に送る。ホストコンピュータ４は、たとえばアプリケーションプログラムにより集計結果を加工して表示または印刷する。加工の方法は、たとえば、テーブル化、グラフ化等が可能である。操作者は、かかる集計結果を参照して、プロファイル手法によるプログラムＰＲＧの動的解析を行うことができる。
【００２３】
次に、データ処理装置２の実施例について説明する。
【００２４】
図３は、データ処理装置２の詳細な構成例を示す図である。図３に示す構成は、３つの分岐ポイントにおける命令の実行状況を判定する例である。ここでは、図４に示すように、プログラムＰＲＧにおいて、メインルーチンＭＲ１に３つの分岐ポイントＢ０、Ｂ１、及びＢ２が設定される。そして、分岐ポイントＢ０、Ｂ１、Ｂ２の順に、命令の実行状況が判定される。なお、ここに示す例は、分岐ポイントがサブルーチンに設定される場合にも適用される。
【００２５】
判定部１０は、複数のアドレスレジスタ２２、アドレス比較回路２４、分岐判定回路２６、及び判定結果格納部２８を有する。アドレスレジスタ２２は、分岐ポイントＢ０〜Ｂ３のそれぞれについての照合用データを格納する。アドレスレジスタ２２には、ホストコンピュータ４から照合用データが書き込まれて設定される。操作者は、動的プログラム解析上重要な箇所の分岐ポイントを指定して、ホストコンピュータ４により照合用データをアドレスレジスタ２２に設定する。アドレス比較回路２４は、ターゲットシステム６から送られるトレースデータと、アドレスレジスタ２２に格納された照合用データの一致、不一致を判定する。そして、その結果に基づいて、分岐判定回路２６が判定結果格納部２８に判定結果を示す値を格納する。なお、アドレスレジスタ２２と判定結果格納部２８は、判定部１０の外部、たとえば集計部１０の内部あるいはその外部に設けられてもよい。
【００２６】
判定結果格納部２８は、分岐ポイントＢ０について、「分岐」を示す一対の分岐判定フラグＡｂ０及びＡｂ１と、「通過」を示す一対の通過判定フラグＡｐ０及びＡｐ１を有する。また、判定結果格納部２８は、分岐ポイントＢ１について、「分岐」を示す一対の分岐判定フラグＢｂ０及びＢｂ１と、「通過」を示す一対の通過判定フラグＢｐ０及びＢｐ１を有する。さらに、判定結果格納部２８は、分岐ポイントＢ２について、「分岐」を示す一対の分岐判定フラグＣｂ０及びＣｂ１と、「通過」を示す一対の通過判定フラグＣｐ０及びＣｐ１を有する。
【００２７】
判定結果格納部２８では、各判定フラグは、たとえば、初期値「０」に設定される。そして、判定結果に基づいて次のように値が設定される。分岐ポイントＢ０を例とすると、「分岐」が判定されたときに、１つ目の分岐判定フラグＡｂ０には、「１」が設定される。一方、１つ目の通過判定フラグＡｐ０には、「通過」が判定されたときに「１」が設定される。そして、２つ目の分岐判定フラグＡｂ１には、分岐判定フラグＡｂ０が「１」であって、再度同じ分岐ポイントＢ０で「分岐」が判定されたときに、「１」が設定される。また、２つ目の通過判定フラグＡｐ１には、通過判定フラグＡｐ０が「１」であって、再度同じ分岐ポイントＢ０で「通過」が判定されたときに、「１」が設定される。分岐ポイントＢ１、Ｂ２についても同様にして、各判定フラグに値が設定される。
【００２８】
図５は、判定結果格納部２８の設定の具体例を示す図である。図５には、分岐ポイントＢ０〜Ｂ２のそれぞれについて、対応する判定フラグと、各判定フラグに「１」が設定される条件が示される。
【００２９】
たとえば、分岐ポイントＢ０について、分岐判定フラグＡｂ０及びＡｂ１と、通過判定フラグＡｐ０及びＡｐ１には、まず初期値「０」が設定される。そして、「分岐」が判定されたとき、分岐判定フラグＡｂ０に「１」が設定される。一方、「通過」が判定されたとき、通過判定フラグＡｐ０に「１」が設定される。また、プログラムＰＲＧの過去の実行時に分岐判定フラグＡｂ０が「１」に設定され（Ab0=1）、新たに「分岐」が判定されたとき、分岐判定フラグＡｂ１に「１」が設定される。同様に、プログラムＰＲＧの前回の実行時に通過判定フラグＡｐ０に「１」が設定され（Ap0=1）、新たに「通過」が判定されたとき、通過判定フラグＡｐ１に「１」が設定される。
【００３０】
また、分岐ポイントＢ１について、分岐判定フラグＢｂ０及びＢｂ１と、通過判定フラグＢｐ０及びＢｐ１には、まず初期値「０」が設定される。そして、「分岐」が判定されたとき、分岐判定フラグＢｂ０に「１」が設定される。一方、「通過」が判定されたとき、通過判定フラグＢｐ０に「１」が設定される。また、プログラムＰＲＧの過去の実行時に分岐判定フラグＢｂ０が「１」に設定され（Bb0=1）、新たに「分岐」が判定されたとき、分岐判定フラグＢｂ１に「１」が設定される。同様に、プログラムＰＲＧの前回の実行時に通過判定フラグＢｐ０に「１」が設定され（Bp0=1）、新たに「通過」が判定されたとき、通過判定フラグＢｐ１に「１」が設定される。
【００３１】
そして、分岐ポイントＢ２について、分岐ポイントＢ０について、分岐判定フラグＣｂ０及びＣｂ１と、通過判定フラグＣｐ０及びＣｐ１には、まず初期値「０」が設定される。そして、「分岐」が判定されたとき、分岐判定フラグＣｂ０に「１」が設定される。一方、「通過」が判定されたとき、通過判定フラグＣｐ０に「１」が設定される。また、プログラムＰＲＧの過去の実行時に分岐判定フラグＣｂ０が「１」に設定され（Cb0=1）、新たに「分岐」が判定されたとき、分岐判定フラグＣｂ１に「１」が設定される。同様に、プログラムＰＲＧの前回の実行時に通過判定フラグＣｐ０に「１」が設定され（Cp0=1）、新たに「通過」が判定されたとき、通過判定フラグＣｐ１に「１」が設定される。
【００３２】
なお、ここでは、分岐ポイントがメインルーチンまたはサブルーチンに設定される場合の判定フラグの例が示される。しかし、分岐ポイントが割込みベクタに設定される場合には、割り込みベクタに書き込まれたアドレスに必ず分岐するので、実行状況は「分岐」だけとなる。よって、この場合、分岐ポイントに対応する通過判定フラグを省略してもよい。
【００３３】
図３に戻り、集計部１２は、カウンタ３２とカウンタ制御回路３０とを有する。カウンタ３２は、分岐ポイントにおける分岐命令の実行状況の組合せごとに設けられる。カウンタ制御回路３０は、判定結果格納部２８の判定フラグの値に基づいて、分岐命令の実行状況の組合せの数をカウントアップする。ここで、ｎ個（ｎは２以上の整数）の分岐ポイントについて、「分岐」、「通過」、または「分岐・通過なし」の３通りの判定結果が対応付けられる場合、可能な組合せの数は３＾ｎ個である。しかし、上述したように、ｎ個の分岐ポイントのすべてにおいて「分岐・通過なし」となる場合は判定できないので、かかる場合が除外される。よって、カウンタ３２の個数は、３＾ｎ−１個である。よって、ここでは、３個の分岐ポイントＢ０〜Ｂ２について、２６（＝３＾３−１）個のカウンタ３２が設けられる。
【００３４】
分岐ポイントＢ０〜Ｂ２における命令の実行状況の組合せは、図６において３次元のテーブルにより示される。図６では、分岐ポイントＢ０〜Ｂ２それぞれの「分岐」、「通過」、及び「分岐・通過なし」の組合せから、分岐ポイントＢ０〜Ｂ２の全てで「分岐・通過なし」となる組合せを除外した、２６通りの組合せＣ１〜Ｃ２６が示される。
【００３５】
ｎ個の分岐ポイントを設定した場合、すべての分岐ポイントで「分岐」または「通過」が判定された場合、分岐ポイントごとに、通過判定フラグまたは分岐判定フラグに「１」が設定される。よって、かかる場合の組合せの数は２＾ｎ個である。ここでは、３箇の分岐ポイントＢ０〜Ｂ２が設定されるので、８（＝２＾３）通りの組合せとなる。
【００３６】
また、ｎ個の分岐ポイントのうち一箇所以上で「分岐・通過なし」が判定される組合せの数は、３＾ｎ−２＾ｎである。しかし、すべての分岐ポイントで「分岐・通過なし」が判定される場合が除外されるので、カウントされる組合せ数は、３＾ｎ−２＾ｎ−１である。ここでは、３箇の分岐ポイントＢ０〜Ｂ２が設定されるので、１８（＝３＾３−２＾３−１）通りの組合せとなる。このうち、最後に判定される分岐ポイントで「分岐・通過なし」が判定される場合は、「分岐」または「通過」が判定された他の分岐ポイントにおいて、再度「分岐」または「通過」が判定された時点で組合せが確定する。設定した最後に判定される分岐ポイントで「分岐・通過なし」と判定される組合せ数は、３＾（ｎ−１）で表されるが、すべての分岐ポイントを通過しなかった場合は除外されるので３＾（ｎ-１）−１となる。たとえば、３箇の分岐ポイントＢ０〜Ｂ２が設定される場合、分岐ポイントＢ２において「分岐・通過なし」と判定される場合は８（＝３＾（３−１）−１）である。この場合、分岐ポイントＢ０またはＢ１で「分岐」または「通過」が判定された時点で組合せが確定する。
【００３７】
一方、最後に判定される分岐ポイントで「分岐」または「通過」が判定される組合せの数は、１箇所以上で「分岐・通過なし」と判定される組み合わせから、最後に分岐ポイントと設定した分岐ポイントを「分岐・通過なし」と判定される組み合わせを除いた組み合わせとなるので３＾ｎ−２＾ｎ−１―(３＾（ｎ−１）−１)となる。よって、３＾ｎ−２＾ｎ―３＾(ｎ−１)と表される。たとえば、３箇の分岐ポイントＢ０〜Ｂ２が設定される場合、分岐ポイントＢ２で「分岐」または「通過」が判定される組合せ数は、１０（＝３＾３−２＾３―３＾(３―１)）である。
【００３８】
次に、［１］すべての分岐ポイントＢ０〜Ｂ２において「分岐」または「通過」が判定された場合、［２］分岐ポイントＢ０またはＢ１で「分岐・通過なし」が判定され、分岐ポイントＢ１で「分岐」または「通過」が判定された場合、及び、［３］分岐ポイントＢ０またはＢ１で「分岐・通過なし」が判定され、分岐ポイントＢ１で「分岐・通過なし」が判定された場合の３通りに場合分けして、カウントアップの条件を示す。
［１］すべての分岐ポイントＢ０〜Ｂ２において「分岐」または「通過」が判定された場合
組合せＣ１のカウントアップ条件：Ab0=1 and Bb0=1 and Cb0=1
組合せＣ２のカウントアップ条件：Ab0=1 and Bb0=1 and Cp0=1
組合せＣ４のカウントアップ条件：Ab0=1 and Bp0=1 and Cb0=1
組合せＣ５のカウントアップ条件：Ab0=1 and Bp0=1 and Cp0=1 
組合せＣ１０のカウントアップ条件：Ap0=1 and Bb0=1 and Cb0=1
組合せＣ１１のカウントアップ条件：Ap0=1 and Bb0=1 and Cp0=1
組合せＣ１３のカウントアップ条件：Ap0=1 and Bp0=1 and Cb0=1
組合せＣ１４のカウントアップ条件：Ap0=1 and Bp0=1 and Cp0=1
［２］分岐ポイントＢ０またはＢ１で「分岐・通過なし」が判定され、分岐ポイントＢ２で「分岐」または「通過」が判定された場合
組合せＣ７のカウントアップ条件：Ab0=1 and Cb0=1
組合せＣ８のカウントアップ条件：Ab0=1 and Cp0=1
組合せＣ１６のカウントアップ条件：Ap0=1 and Cb0=1
組合せＣ１７のカウントアップ条件：Ap0=1 and Cp0=1
組合せＣ１９のカウントアップ条件：（Ab=0 or Ap0=0） and Bb0=1 and Cb0=1
組合せＣ２０のカウントアップ条件：（Ab=0 or Ap0=0） and Bb0=1 and Cp0=1
組合せＣ２２のカウントアップ条件：（Ab=0 or Ap0=0） and Bp0=1 and Cb0=1
組合せＣ２３のカウントアップ条件：（Ab=0 or Ap0=0） and Bp0=1 and Cp0=1
組合せＣ２５のカウントアップ条件：（Ab=0 or Ap0=0） and （Bb=0 or Bp0=0） and Cb0=1
組合せＣ２６のカウントアップ条件：（Ab=0 or Ap0=0） and （Bb=0 or Bp0=0） and Cp0=1
［３］分岐ポイントＢ０またはＢ１で「分岐・通過なし」が判定され、分岐ポイントＢ２で「分岐・通過なし」が判定された場合
組合せＣ３のカウントアップ条件：Ab0=1 and Bb0=1 and (Ab1=1 or Ap0=1 or Bb1=1 or Bp0=1)
組合せＣ６のカウントアップ条件：Ab0=1 and Bp0=1 and (Ab1=1 or Ap0=1 or Bb0=1 or Bp1=1)
組合せＣ９のカウントアップ条件：Ab0=1 and (Ab1=1 or Ap0=1)
組合せＣ１２のカウントアップ条件：Ap0=1 and Bb0=1 and (Ab0=1 or Ap1=1 or Bb1=1 or Bp0=1)
組合せＣ１５のカウントアップ条件：Ap0=1 and Bp0=1 and (Ab0=1 or Ap1=1 or Bb0=1 or Bp1=1)
組合せＣ１８のカウントアップ条件：Ap0=1 and (Ab0=1 or Ap1=1)
組合せＣ２１のカウントアップ条件：(Ab=0 or Ap0=0) and Bb0=1 and  (Ab0=1 or Ap0=1 or Bb1=1 or Bp0=1)
組合せＣ２４のカウントアップ条件：(Ab=0 or Ap0=0) and Bp0=1 and  (Ab0=1 or Ap0=1 or Bb0=1 or Bp1=1)
カウンタ制御回路３０は、上記［１］〜［３］における各条件式において、第１項から順次、判定フラグの値を確認する。そして、カウントアップ条件が成立したときに、カウンタ制御回路３０は対応するカウンタ３２をカウントアップする。これにより、対応する組合せの数が集計される。
【００３９】
ここで、分岐ポイントＢ０〜Ｂ１のいずれかが「分岐・通過なし」と判定される、［２］及び［３］の場合における組合せのカウントアップについて説明する。たとえば、［２］の組合せＣ７、Ｃ８、Ｃ１６、またはＣ１７の場合、分岐ポイントＢ０についてAb0=1またはAp0=1を検出した後、分岐ポイントＢ２についてCb0=1またはCp0=1を検出したときに、カウンタ制御回路３０は、組合せＣ７、Ｃ８、Ｃ１６、またはＣ１７に対応するカウンタ３２をカウントアップする。これにより、分岐ポイントＢ０の「分岐・通過なし」に対応する組合せの数が集計される。また、組合せＣ１９、Ｃ２０、Ｃ２２、またはＣ２３の場合、分岐ポイントＢ０についてAb0=0またはAp0=0のまま、分岐ポイントＢ１についてBb0=1またはBp0=1を検出し、さらに、分岐ポイントＢ２についてCb0=1またはCp0=1を検出したとき、カウンタ制御回路３０は、組合せＣ１９、Ｃ２０、Ｃ２２、またはＣ２３に対応するカウンタ３２をカウントアップする。これにより、分岐ポイントＢ０の「分岐・通過なし」に対応する組合せの数が集計される。
【００４０】
あるいは、組合せＣ２５またはＣ２６の場合、分岐ポイントＢ０についてAb0=0またはAp0=0、分岐ポイントＢ１についてBb0=0またはBp0=0のまま、分岐ポイントＢ２についてCb0=1またはCp0=1を検出したとき、カウンタ制御回路３０は、組合せＣ２５またはＣ２６に対応するカウンタ３２をカウントアップする。これにより、分岐ポイントＢ０及びＢ１の「分岐・通過なし」に対応する組合せの数が集計される。
【００４１】
［３］の組合せＣ３の場合、Ab0=1を検出した後、Bb0=1を検出し、その後、Ab1=1、Ap0=1、Bb1=1、Bp0=1のいずれかを検出したときに、カウンタ制御回路３０は、組合せＣ３に対応するカウンタ３２をカウントアップする。これにより、分岐ポイントＢ２の「分岐・通過なし」に対応する組合せの数が集計される。また、組合せＣ６の場合、Ab0=1を検出した後、Bp0=1を検出し、その後、Ab1=1、Ap0=1、Bb0=1、Bp1=1のいずれかを検出したときに、カウンタ制御回路３０は、組合せＣ６に対応するカウンタ３２をカウントアップする。これにより、分岐ポイントＢ２の「分岐・通過なし」に対応する組合せの数が集計される。
【００４２】
また、組合せＣ１２の場合、Ap0=1を検出した後、Bb0=1を検出し、その後、Ab0=1、Ap1=1、Bb1=1、Bp0=1のいずれかを検出したときに、カウンタ制御回路３０は、組合せＣ１２に対応するカウンタ３２をカウントアップする。これにより、分岐ポイントＢ２の「分岐・通過なし」に対応する組合せの数が集計される。また、組合せＣ１５の場合、Ab0=1を検出した後、Bp0=1を検出し、その後、Ab0=1、Ap1=1、Bb0=1、Bp1=1のいずれかを検出したときに、カウンタ制御回路３０は、組合せＣ１５に対応するカウンタ３２をカウントアップする。これにより、分岐ポイントＢ２の「分岐・通過なし」に対応する組合せの数が集計される。
【００４３】
また、組合せＣ９の場合、Ab0=1を検出した後、Ab1=1、Ap0=1のいずれかを検出したときに、カウンタ制御回路３０は、組合せＣ９に対応するカウンタ３２をカウントアップする。これにより、分岐ポイントＢ１及びＢ２の「分岐・通過なし」対応する組合せの数が集計される。また、組合せＣ１８の場合、Ap0=1を検出した後、Ab0=1、Ap1=1のいずれかを検出したときに、カウンタ制御回路３０は、組合せＣ１８に対応するカウンタ３２をカウントアップする。これにより、分岐ポイントＢ１及びＢ２の「分岐・通過なし」対応する組合せの数が集計される。
【００４４】
そして、組合せＣ２１の場合、Ab=0またはAp0=0のままBb0=1を検出した後、Ab0=1、Ap0=1、Bb1=1、Bp0=1のいずれかを検出したときに、カウンタ制御回路３０は、組合せＣ２１に対応するカウンタ３２をカウントアップする。これにより、分岐ポイントＢ０及びＢ２の「分岐・通過なし」に対応する組合せの数が集計される。また、組合せＣ２４の場合、Ab=0またはAp0=0のままBp0=1を検出した後、Ab0=1、Ap0=1、Bb0=1、Bp1=1のいずれかを検出したときに、カウンタ制御回路３０は、組合せＣ２４に対応するカウンタ３２をカウントアップする。これにより、分岐ポイントＢ０及びＢ２の「分岐・通過なし」に対応する組合せの数が集計される。なお、すべての分岐ポイントにおいて「分岐・通過なし」と判定されるパターンＣ２６については、カウント値が「０」であるので、カウンタ３２を省略してもよい。
【００４５】
カウントアップが終了したら、カウンタ制御回路３０は、各判定フラグで値「１」が設定された判定フラグをネゲートする(値「０」に設定する)。ここで、組合せＣ３、Ｃ６、Ｃ９、Ｃ１２、Ｃ１５、Ｃ１８、Ｃ２１、及びＣ２４では、対応するカウンタ３２のカウントアップ後、次のカウンタ３２の制御を行うために、判定フラグAb1、Ap1、Bb1、Bp1、Cb1、及びCp1のうちいずれかが「１」となっている。よって、その場合、カウンタ制御回路３０は次のように処理する。
Ab1=1の場合：Ab0=1としAb1をネゲートする
Ap1=1の場合：Ap0=1としAp1をネゲートする
Bb1=1の場合：Bb0=1としBb1をネゲートする
Bp1=1の場合：Bp0=1としBp1をネゲートする
Cb1=1の場合：Cb0=1としCb1をネゲートする
Cp1=1の場合：Cp0=1としCp1をネゲートする
その後、判定部１０は、プログラムＰＲＧが実行されるごとにトレースデータと照合用データの比較を継続し、各分岐ポイントでの分岐命令の実行状況に応じて各判定フラグの値を設定する。これにより、集計部１２は、２６種類の組合せの回数を集計することができる。
【００４６】
集計部１２は、集計を終了すると、上記の集計結果をホストコンピュータ４に出力する。集計終了は、たとえば、操作者がホストコンピュータ４により集計終了を指示したときである。または、操作者がホストコンピュータ４により予めプログラムＰＲＧの実行回数を設定しておき、その実行回数が終了したときである。そして、ホストコンピュータ４は、集計結果を表示または印刷して操作者に提供する。
【００４７】
図７は、集計結果の出力例である。組合せＣ１〜Ｃ２６に対応する「Ｐａｔｔｅｒｎ１」〜「Ｐａｔｔｅｒｎ２６」の実行回数が示される。操作者は、このような集計結果から、実行頻度の高い、プログラムＰＲＧの動作パターンを知ることができる。かかる結果に基づき、操作者は、動的プログラム解析を実行し、チューニングポイントを特定してプログラムＰＲＧの最適化を行うことができる。最適化は、プログラムＰＲＧの一連の命令の格納アドレスを変更することや、プログラムＰＲＧにおける命令の順序を変更することを含む。そして、たとえば、最も実行回数の多い動作パターン（たとえば「Ｐａｔｔｅｒｎ９」）の実行速度が向上するような最適化を行うことで、プログラムＰＲＧの実行速度を向上させることができる。あるいは、もっとも好ましい動作パターンがあらかじめ特定されている場合であって、その動作パターンが想定した実行回数より低い場合には、その実行回数を増加させるようなプログラムＰＲＧの最適化が可能となる。
【００４８】
本実施形態におけるデータ処理装置によれば、操作者は、分岐命令を指定してその実行状況の組合せを取得できる。その際、データ処理装置は、大量のトレースデータを保持することなく、分岐命令の実行状況の組合せを集計するので、メモリ容量を削減することができる。
【符号の説明】
【００４９】
２：データ処理装置、４：ホストコンピュータ、６：ターゲットシステム、１０：判定部、１２：集計部、１４：演算処理装置、ＰＲＧ：プログラム
【図１】
2012226459.tif 000003
【図２】
2012226459.tif 000004
【図３】
2012226459.tif 000005
【図４】
2012226459.tif 000006
【図５】
2012226459.tif 000007
【図６】
2012226459.tif 000008
【図７】
2012226459.tif 000009