JP2012226459A - データ処理装置、及びデータ処理方法 - Google Patents
データ処理装置、及びデータ処理方法 Download PDFInfo
- Publication number
- JP2012226459A JP2012226459A JP2011091718A JP2011091718A JP2012226459A JP 2012226459 A JP2012226459 A JP 2012226459A JP 2011091718 A JP2011091718 A JP 2011091718A JP 2011091718 A JP2011091718 A JP 2011091718A JP 2012226459 A JP2012226459 A JP 2012226459A
- Authority
- JP
- Japan
- Prior art keywords
- branch
- combination
- pass
- processing device
- data processing
- 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.)
- Withdrawn
Links
Images
Landscapes
- Debugging And Monitoring (AREA)
Abstract
【課題】簡易な構成で動的プログラム解析の効率を向上させる。
【解決手段】データ処理装置は、演算処理装置にて実行される複数の分岐点を有する一連の命令のそれぞれに対応するトレースデータと照合用データの一致または不一致に基づいて、前記複数の分岐点における命令の実行状況を判定する判定部と、前記演算処理装置にて前記一連の命令が複数回実行されるときに、前記複数の分岐点における命令の実行状況の組合せごとの回数を集計する集計部とを有するので、大量のトレースデータを格納することなく、動的プログラム解析の効率を向上させるための情報を操作者に提供できる。
【選択図】 図3
【解決手段】データ処理装置は、演算処理装置にて実行される複数の分岐点を有する一連の命令のそれぞれに対応するトレースデータと照合用データの一致または不一致に基づいて、前記複数の分岐点における命令の実行状況を判定する判定部と、前記演算処理装置にて前記一連の命令が複数回実行されるときに、前記複数の分岐点における命令の実行状況の組合せごとの回数を集計する集計部とを有するので、大量のトレースデータを格納することなく、動的プログラム解析の効率を向上させるための情報を操作者に提供できる。
【選択図】 図3
Description
本発明は、演算処理装置が実行する命令に対応するデータを処理するデータ処理装置等に関する。
家庭用電化製品などの専用機器では、MCU(Micro Control Unit)などの演算処理装置が、制御プログラム(以下、単にプログラムという)の一連の命令を実行する。一連の命令は、プログラムメモリに格納される。MCUが一連の命令を実行するとき、たとえば、連続して実行される命令が分散したアドレスに格納されていると、命令の読出し時間が増大する。このことは、プログラムの実行速度低下の要因となる。よって、専用機器の開発工程では、プログラム中のかかる箇所を特定し、各命令の格納アドレスを変更したり、命令の実行順序を変更したりすることで、プログラムの実行効率を向上させる作業が行われる。かかる作業をチューニングという。
チューニングの際、プログラム中の修正が必要な箇所(以下、チューニングポイントという)を特定するために、プログラムの解析が行われる。プログラムの解析には、静的プログラム解析と、動的プログラム解析とがある。静的プログラム解析は、MCUが実際にプログラムを実行する前に、ソースコード上でチューニングポイントを探索する方法である。一方、動的プログラム解析は、MCUが実際にプログラムの一連の命令を実行するときに、実行される命令の格納アドレスをトレースデータとして取得し、トレースデータからチューニングポイントを探索する方法である(たとえば、特許文献1)。専用機器においては、スイッチ入力や各種割り込みといったハードウェア動作をトリガとするプログラム動作があるので、ハードウェアを動作させながら動的プログラム解析が行われる。
動的プログラム解析には、MCUからトレースデータを取得して処理する、インサーキットエミュレータ(以下、ICEという)などのデータ処理装置が用いられる。ICEは、MCUを動作させることで出力されるトレースデータを取り込み、これを内部メモリに格納する。操作者は適宜、ホストコンピュータに、ICEの内部メモリからトレースデータを取り出して表示等させる。そして、操作者は、トレースデータを参照してチューニングポイントを探索する。ここで、かかる作業を効率化する手法として、所定の命令の実行状況を統計的に把握するプロファイル手法が知られている。プロファイル手法では、たとえば、ホストコンピュータのデバッグ用プログラムが、所定の命令の実行回数や実行時間を集計する。所定の命令は、たとえば操作者が任意に特定する関数の呼出しやデータアクセスなどである。操作者は、集計結果を用いてチューニングポイントの探索を行う。
上記のようなプロファイル手法を含む動的プログラム解析では、種々のハードウェア動作が生じる状況下でトレースデータが取得される。そのために、MCUにある程度長い時間にわたりプログラムを繰り返し実行させるので、トレースデータのデータ量は膨大になる。よって、ICEには、膨大なトレースデータを格納可能なメモリ容量が求められる。しかしながら、メモリ容量の拡張は、ICEの高コスト化や大型化につながるので、好ましくない。また、メモリ容量を拡張したとしても、膨大なトレースデータの中から所定の命令を検出し、その実行回数や実行時間を集計するための処理は、大きい負荷を伴う。
そこで、本発明の目的は、簡易な構成で動的プログラム解析の効率を向上できるデータ処理装置等を提供することにある。
一実施形態におけるデータ処理装置は、演算処理装置にて実行される複数の分岐点を有する一連の命令のそれぞれに対応するトレースデータと照合用データの一致または不一致に基づいて、前記複数の分岐点における命令の実行状況を判定する判定部と、前記演算処理装置にて前記一連の命令が複数回実行されるときに、前記複数の分岐点における命令の実行状況の組合せごとの回数を集計する集計部と、を有する。
以下に説明する実施形態によれば、簡易な構成のデータ処理装置により、動的プログラム解析の効率を向上できる。
以下、図面にしたがって実施形態について説明する。但し、適用される技術的範囲はこれらの実施の形態に限定されず、特許請求の範囲に記載された事項とその均等物まで及ぶものである。
まず、図1、図2を参照して、本実施形態の基本的な構成と動作について説明する。
図1は、本実施形態におけるデータ処理装置の構成例を示す図である。データ処理装置2は、ターゲットシステム6の動的プログラム解析を行うために用いられる。データ処理装置2は、接続部18を介してホストコンピュータ4と接続される。また、データ処理装置2は、接続部20を介してターゲットシステム6と接続される。データ処理装置2は、たとえば、インサーキットエミュレータである。ホストコンピュータ4は、たとえば、操作入力手段と、各種情報の表示手段や印刷手段を備えたパーソナルコンピュータなどの情報処理装置である。データ処理装置2とホストコンピュータ4とは、たとえばUSBバスなどの通信バスで接続される。ターゲットシステム6は、たとえば、家庭用電化製品などの専用機器である。データ処理装置2とターゲットシステム6は、トレースデータ用のバスや制御信号用のバスなどの各種バスの並列接続により接続される。あるいは、トレースデータと制御信号を1本のバスでやり取りする接続形態であってもよい。
データ処理装置2では、制御部8が、ホストコンピュータ4からの制御信号に応答して、ターゲットシステム6の演算処理装置14にプログラムの実行・停止を制御する制御信号を送る。ターゲットシステム6では、演算処理装置14が、複数の分岐点を含む制御用のプログラムPRGを実行することで、ターゲットシステム6の動作を制御する。演算処理装置14は、たとえば、MCUである。プログラムPRGは、たとえばターゲットシステム6内のプログラムメモリ16に格納される。プログラムメモリ16は、たとえば、ROM(Read Only Memory)である。プログラムメモリ16は、プログラムPRGに含まれる命令を、それぞれ割り当てられたアドレスに格納する。演算処理装置14は、プログラムメモリ16のアドレスを指定して各命令を読み出し、これを実行する。このとき、演算処理装置14は、実行する各命令の格納アドレスをトレースデータとしてデータ処理装置2の制御部8に送る。データ処理装置2の制御部8は、演算処理装置14からトレースデータを受け取り、判定部10に送る。すると、判定部10と集計部12が、後に詳述する方法でトレースデータの処理を行う。データ処理結果はホストコンピュータ4に送られる。そして、ホストコンピュータ4は、データ処理結果を表示、印刷等して操作者に提供する。操作者は、提供された情報に基づいて、ターゲットシステム6の動的プログラム解析を行う。
本実施形態では、演算処理装置14がトレースデータをデータ処理装置2に送る場合を例とする。しかし、プログラムPRGは、たとえばデータ処理装置2内のプログラムメモリ(図示省略)に格納することも可能である。その場合、データ処理装置2の制御部8は、データ処理装置2内のプログラムメモリに格納される各命令を演算処理装置14に送り、これを実行させる。そして、制御部8が、実行された命令の格納アドレスからトレースデータを生成し、判定部10に送る。
データ処理装置2において、判定部10は、ターゲットシステム6から取り込んだトレースデータと照合用データの一致または不一致に基づいて、プログラムPRGの複数の分岐点における命令の実行状況を判定する。ここで、図2を用いて、判定部10の動作について説明する。
図2には、演算処理装置14が実行するプログラムPRGが模式的に示される。プログラムPRGは、たとえば、メインルーチンMR1と、サブルーチンSR1、及びSR2を有する。各ルーチンでは、「開始」から「終了」まで、一連の命令が規定される。メインルーチンMR1は、分岐点(以下、分岐ポイントという)B0及びB1を有する。メインルーチンMR1における命令の実行は、分岐ポイントB0でサブルーチンSR1に、また分岐ポイントB1でサブルーチンSR2に分岐する。また、サブルーチンSR1及びSR2での命令の実行が終了すると、メインルーチンMR1に戻って命令の実行が継続される。分岐ポイントB0及びB1には、所定の分岐条件の成立・不成立を確認する命令、分岐条件が成立するときの分岐命令、及び、分岐条件が成立しない場合に実行される命令などが含まれる。分岐条件は、たとえば所定の演算結果が得られることや、ターゲットシステム6における各種割込みの発生などである。なお、ここでは便宜上、2つの分岐ポイントB0、及びB1を例として示すが、分岐ポイントの数は、任意の数とすることが可能である。また、分岐ポイントを、メインルーチンだけでなく、サブルーチンに設定することも可能である。あるいは、分岐ポイントを、サブルーチンの開始アドレスを示す割込みベクタに設定してもよい。
判定部10は、分岐ポイントB0、B1の順で、各分岐ポイントにおける命令の実行状況を判定する。分岐命令の実行状況は、たとえば、分岐命令が実行されて分岐が発生する「分岐」、分岐命令が実行されずに、その後の命令が実行される「通過」である。さらに、たとえば、分岐ポイントが迂回される「分岐・通過なし」である。
たとえば、分岐ポイントB0で分岐が発生するときには、分岐命令が実行され、サブルーチンSR1の命令が実行される。判定部10は、たとえば、分岐ポイントB0の分岐命令の格納アドレス、サブルーチンSR1に含まれる命令の格納アドレス、またはサブルーチンSR1を示す割込みベクタの格納アドレスを照合用データとして保持しておく。そして、これに一致するトレースデータが入力されたときに、判定部10は、分岐ポイントB0における命令の実行状況を「分岐」と判定する。一方、分岐が発生しないときには、分岐ポイントB0における分岐命令が実行されず、それ以降の命令が実行される。判定部10は、たとえば、かかる命令の格納アドレスを照合用データとして保持しておく。そして、これに一致するトレースデータが入力されたときに、判定部10は、分岐ポイントB0における分岐命令の実行状況を「通過」と判定する。なお、分岐ポイントB1における「分岐」及び「通過」も、同様にして判定される。
次に、分岐ポイントB0が迂回されるときには、分岐ポイントB0に対応するトレースデータが入力されず、メインルーチンMR1における分岐ポイントB0以降の命令が実行される。これは、たとえば、メインルーチンMR1において分岐ポイントB0以前に他のサブルーチンへの分岐が発生し、その後、分岐ポイントB0以降に戻って命令が実行される場合などである。このような場合を判定するために、判定部10は、分岐ポイントB0以降に到達したことを示すデータを照合用データとして保持しておく。かかるデータは、たとえば、たとえば分岐ポイントB1における分岐条件の成立・不成立を確認する命令などである。そして、分岐ポイントB0における命令に対応するトレースデータが入力されず、照合用データに一致するトレースデータが入力されたときに、判定部10は、分岐ポイントB0における分岐命令の実行状況を「分岐・通過なし」と判定する。なお、分岐ポイントB1における「分岐・通過なし」については、次のように判定される。たとえば、判定部10は、分岐ポイントB0に対応する照合用データを保持しておく。そして、分岐ポイントB0で「分岐」または「通過」を判定した後、分岐ポイントB1を示すトレースデータが入力されずに、照合用データと一致し分岐ポイントB0に到達したことを示すトレースデータが入力されたときに、判定部10は、分岐ポイントB1が「分岐・通過なし」と判定する。
図1に戻る。データ処理装置2において、集計部12は、演算処理装置14にてプログラムPRGが複数回実行されるときに、複数の分岐ポイントB0、B1における命令の実行状況の組合せごとの回数を集計する。プログラムPRGは、ホストコンピュータ4の制御のもと、操作者が任意に設定する複数回実行される。このとき、プログラムPRGのメインルーチンMR1が1回実行されるごとに、複数の分岐ポイントB0、B1における命令の実行状況の組合せのいずれかが成立する。図2に示した例では、2つの分岐ポイントB0及びB1における命令の実行状況の組合せは、8(=3^2−1)通りである。たとえば、分岐ポイントB0についての「分岐」、「通過」、または「分岐・通過なし」の判定結果と、分岐ポイントB1についての「分岐」、「通過」、または「分岐・通過なし」の判定結果との可能な組合せは、9(=3^2)通りである。しかし、分岐ポイントB0及びB1の両方が迂回される場合、トレースデータと照合用データの一致・不一致によってはこれを判定することができない。よって、分岐ポイントB0及びB1の両方が「分岐・通過なし」の場合は、可能な組合せの9通りから除外される。
集計部12は、成立する組合せごとにその回数をカウントする。そして、集計部12は、組見合わせごとの回数を集計結果として、ホストコンピュータ4に送る。ホストコンピュータ4は、たとえばアプリケーションプログラムにより集計結果を加工して表示または印刷する。加工の方法は、たとえば、テーブル化、グラフ化等が可能である。操作者は、かかる集計結果を参照して、プロファイル手法によるプログラムPRGの動的解析を行うことができる。
次に、データ処理装置2の実施例について説明する。
図3は、データ処理装置2の詳細な構成例を示す図である。図3に示す構成は、3つの分岐ポイントにおける命令の実行状況を判定する例である。ここでは、図4に示すように、プログラムPRGにおいて、メインルーチンMR1に3つの分岐ポイントB0、B1、及びB2が設定される。そして、分岐ポイントB0、B1、B2の順に、命令の実行状況が判定される。なお、ここに示す例は、分岐ポイントがサブルーチンに設定される場合にも適用される。
判定部10は、複数のアドレスレジスタ22、アドレス比較回路24、分岐判定回路26、及び判定結果格納部28を有する。アドレスレジスタ22は、分岐ポイントB0〜B3のそれぞれについての照合用データを格納する。アドレスレジスタ22には、ホストコンピュータ4から照合用データが書き込まれて設定される。操作者は、動的プログラム解析上重要な箇所の分岐ポイントを指定して、ホストコンピュータ4により照合用データをアドレスレジスタ22に設定する。アドレス比較回路24は、ターゲットシステム6から送られるトレースデータと、アドレスレジスタ22に格納された照合用データの一致、不一致を判定する。そして、その結果に基づいて、分岐判定回路26が判定結果格納部28に判定結果を示す値を格納する。なお、アドレスレジスタ22と判定結果格納部28は、判定部10の外部、たとえば集計部10の内部あるいはその外部に設けられてもよい。
判定結果格納部28は、分岐ポイントB0について、「分岐」を示す一対の分岐判定フラグAb0及びAb1と、「通過」を示す一対の通過判定フラグAp0及びAp1を有する。また、判定結果格納部28は、分岐ポイントB1について、「分岐」を示す一対の分岐判定フラグBb0及びBb1と、「通過」を示す一対の通過判定フラグBp0及びBp1を有する。さらに、判定結果格納部28は、分岐ポイントB2について、「分岐」を示す一対の分岐判定フラグCb0及びCb1と、「通過」を示す一対の通過判定フラグCp0及びCp1を有する。
判定結果格納部28では、各判定フラグは、たとえば、初期値「0」に設定される。そして、判定結果に基づいて次のように値が設定される。分岐ポイントB0を例とすると、「分岐」が判定されたときに、1つ目の分岐判定フラグAb0には、「1」が設定される。一方、1つ目の通過判定フラグAp0には、「通過」が判定されたときに「1」が設定される。そして、2つ目の分岐判定フラグAb1には、分岐判定フラグAb0が「1」であって、再度同じ分岐ポイントB0で「分岐」が判定されたときに、「1」が設定される。また、2つ目の通過判定フラグAp1には、通過判定フラグAp0が「1」であって、再度同じ分岐ポイントB0で「通過」が判定されたときに、「1」が設定される。分岐ポイントB1、B2についても同様にして、各判定フラグに値が設定される。
図5は、判定結果格納部28の設定の具体例を示す図である。図5には、分岐ポイントB0〜B2のそれぞれについて、対応する判定フラグと、各判定フラグに「1」が設定される条件が示される。
たとえば、分岐ポイントB0について、分岐判定フラグAb0及びAb1と、通過判定フラグAp0及びAp1には、まず初期値「0」が設定される。そして、「分岐」が判定されたとき、分岐判定フラグAb0に「1」が設定される。一方、「通過」が判定されたとき、通過判定フラグAp0に「1」が設定される。また、プログラムPRGの過去の実行時に分岐判定フラグAb0が「1」に設定され(Ab0=1)、新たに「分岐」が判定されたとき、分岐判定フラグAb1に「1」が設定される。同様に、プログラムPRGの前回の実行時に通過判定フラグAp0に「1」が設定され(Ap0=1)、新たに「通過」が判定されたとき、通過判定フラグAp1に「1」が設定される。
また、分岐ポイントB1について、分岐判定フラグBb0及びBb1と、通過判定フラグBp0及びBp1には、まず初期値「0」が設定される。そして、「分岐」が判定されたとき、分岐判定フラグBb0に「1」が設定される。一方、「通過」が判定されたとき、通過判定フラグBp0に「1」が設定される。また、プログラムPRGの過去の実行時に分岐判定フラグBb0が「1」に設定され(Bb0=1)、新たに「分岐」が判定されたとき、分岐判定フラグBb1に「1」が設定される。同様に、プログラムPRGの前回の実行時に通過判定フラグBp0に「1」が設定され(Bp0=1)、新たに「通過」が判定されたとき、通過判定フラグBp1に「1」が設定される。
そして、分岐ポイントB2について、分岐ポイントB0について、分岐判定フラグCb0及びCb1と、通過判定フラグCp0及びCp1には、まず初期値「0」が設定される。そして、「分岐」が判定されたとき、分岐判定フラグCb0に「1」が設定される。一方、「通過」が判定されたとき、通過判定フラグCp0に「1」が設定される。また、プログラムPRGの過去の実行時に分岐判定フラグCb0が「1」に設定され(Cb0=1)、新たに「分岐」が判定されたとき、分岐判定フラグCb1に「1」が設定される。同様に、プログラムPRGの前回の実行時に通過判定フラグCp0に「1」が設定され(Cp0=1)、新たに「通過」が判定されたとき、通過判定フラグCp1に「1」が設定される。
なお、ここでは、分岐ポイントがメインルーチンまたはサブルーチンに設定される場合の判定フラグの例が示される。しかし、分岐ポイントが割込みベクタに設定される場合には、割り込みベクタに書き込まれたアドレスに必ず分岐するので、実行状況は「分岐」だけとなる。よって、この場合、分岐ポイントに対応する通過判定フラグを省略してもよい。
図3に戻り、集計部12は、カウンタ32とカウンタ制御回路30とを有する。カウンタ32は、分岐ポイントにおける分岐命令の実行状況の組合せごとに設けられる。カウンタ制御回路30は、判定結果格納部28の判定フラグの値に基づいて、分岐命令の実行状況の組合せの数をカウントアップする。ここで、n個(nは2以上の整数)の分岐ポイントについて、「分岐」、「通過」、または「分岐・通過なし」の3通りの判定結果が対応付けられる場合、可能な組合せの数は3^n個である。しかし、上述したように、n個の分岐ポイントのすべてにおいて「分岐・通過なし」となる場合は判定できないので、かかる場合が除外される。よって、カウンタ32の個数は、3^n−1個である。よって、ここでは、3個の分岐ポイントB0〜B2について、26(=3^3−1)個のカウンタ32が設けられる。
分岐ポイントB0〜B2における命令の実行状況の組合せは、図6において3次元のテーブルにより示される。図6では、分岐ポイントB0〜B2それぞれの「分岐」、「通過」、及び「分岐・通過なし」の組合せから、分岐ポイントB0〜B2の全てで「分岐・通過なし」となる組合せを除外した、26通りの組合せC1〜C26が示される。
n個の分岐ポイントを設定した場合、すべての分岐ポイントで「分岐」または「通過」が判定された場合、分岐ポイントごとに、通過判定フラグまたは分岐判定フラグに「1」が設定される。よって、かかる場合の組合せの数は2^n個である。ここでは、3箇の分岐ポイントB0〜B2が設定されるので、8(=2^3)通りの組合せとなる。
また、n個の分岐ポイントのうち一箇所以上で「分岐・通過なし」が判定される組合せの数は、3^n−2^nである。しかし、すべての分岐ポイントで「分岐・通過なし」が判定される場合が除外されるので、カウントされる組合せ数は、3^n−2^n−1である。ここでは、3箇の分岐ポイントB0〜B2が設定されるので、18(=3^3−2^3−1)通りの組合せとなる。このうち、最後に判定される分岐ポイントで「分岐・通過なし」が判定される場合は、「分岐」または「通過」が判定された他の分岐ポイントにおいて、再度「分岐」または「通過」が判定された時点で組合せが確定する。設定した最後に判定される分岐ポイントで「分岐・通過なし」と判定される組合せ数は、3^(n−1)で表されるが、すべての分岐ポイントを通過しなかった場合は除外されるので3^(n-1)−1となる。たとえば、3箇の分岐ポイントB0〜B2が設定される場合、分岐ポイントB2において「分岐・通過なし」と判定される場合は8(=3^(3−1)−1)である。この場合、分岐ポイントB0またはB1で「分岐」または「通過」が判定された時点で組合せが確定する。
一方、最後に判定される分岐ポイントで「分岐」または「通過」が判定される組合せの数は、1箇所以上で「分岐・通過なし」と判定される組み合わせから、最後に分岐ポイントと設定した分岐ポイントを「分岐・通過なし」と判定される組み合わせを除いた組み合わせとなるので3^n−2^n−1―(3^(n−1)−1)となる。よって、3^n−2^n―3^(n−1)と表される。たとえば、3箇の分岐ポイントB0〜B2が設定される場合、分岐ポイントB2で「分岐」または「通過」が判定される組合せ数は、10(=3^3−2^3―3^(3―1))である。
次に、[1]すべての分岐ポイントB0〜B2において「分岐」または「通過」が判定された場合、[2]分岐ポイントB0またはB1で「分岐・通過なし」が判定され、分岐ポイントB1で「分岐」または「通過」が判定された場合、及び、[3]分岐ポイントB0またはB1で「分岐・通過なし」が判定され、分岐ポイントB1で「分岐・通過なし」が判定された場合の3通りに場合分けして、カウントアップの条件を示す。
[1]すべての分岐ポイントB0〜B2において「分岐」または「通過」が判定された場合
組合せC1のカウントアップ条件:Ab0=1 and Bb0=1 and Cb0=1
組合せC2のカウントアップ条件:Ab0=1 and Bb0=1 and Cp0=1
組合せC4のカウントアップ条件:Ab0=1 and Bp0=1 and Cb0=1
組合せC5のカウントアップ条件:Ab0=1 and Bp0=1 and Cp0=1
組合せC10のカウントアップ条件:Ap0=1 and Bb0=1 and Cb0=1
組合せC11のカウントアップ条件:Ap0=1 and Bb0=1 and Cp0=1
組合せC13のカウントアップ条件:Ap0=1 and Bp0=1 and Cb0=1
組合せC14のカウントアップ条件:Ap0=1 and Bp0=1 and Cp0=1
[2]分岐ポイントB0またはB1で「分岐・通過なし」が判定され、分岐ポイントB2で「分岐」または「通過」が判定された場合
組合せC7のカウントアップ条件:Ab0=1 and Cb0=1
組合せC8のカウントアップ条件:Ab0=1 and Cp0=1
組合せC16のカウントアップ条件:Ap0=1 and Cb0=1
組合せC17のカウントアップ条件:Ap0=1 and Cp0=1
組合せC19のカウントアップ条件:(Ab=0 or Ap0=0) and Bb0=1 and Cb0=1
組合せC20のカウントアップ条件:(Ab=0 or Ap0=0) and Bb0=1 and Cp0=1
組合せC22のカウントアップ条件:(Ab=0 or Ap0=0) and Bp0=1 and Cb0=1
組合せC23のカウントアップ条件:(Ab=0 or Ap0=0) and Bp0=1 and Cp0=1
組合せC25のカウントアップ条件:(Ab=0 or Ap0=0) and (Bb=0 or Bp0=0) and Cb0=1
組合せC26のカウントアップ条件:(Ab=0 or Ap0=0) and (Bb=0 or Bp0=0) and Cp0=1
[3]分岐ポイントB0またはB1で「分岐・通過なし」が判定され、分岐ポイントB2で「分岐・通過なし」が判定された場合
組合せC3のカウントアップ条件:Ab0=1 and Bb0=1 and (Ab1=1 or Ap0=1 or Bb1=1 or Bp0=1)
組合せC6のカウントアップ条件:Ab0=1 and Bp0=1 and (Ab1=1 or Ap0=1 or Bb0=1 or Bp1=1)
組合せC9のカウントアップ条件:Ab0=1 and (Ab1=1 or Ap0=1)
組合せC12のカウントアップ条件:Ap0=1 and Bb0=1 and (Ab0=1 or Ap1=1 or Bb1=1 or Bp0=1)
組合せC15のカウントアップ条件:Ap0=1 and Bp0=1 and (Ab0=1 or Ap1=1 or Bb0=1 or Bp1=1)
組合せC18のカウントアップ条件:Ap0=1 and (Ab0=1 or Ap1=1)
組合せC21のカウントアップ条件:(Ab=0 or Ap0=0) and Bb0=1 and (Ab0=1 or Ap0=1 or Bb1=1 or Bp0=1)
組合せC24のカウントアップ条件:(Ab=0 or Ap0=0) and Bp0=1 and (Ab0=1 or Ap0=1 or Bb0=1 or Bp1=1)
カウンタ制御回路30は、上記[1]〜[3]における各条件式において、第1項から順次、判定フラグの値を確認する。そして、カウントアップ条件が成立したときに、カウンタ制御回路30は対応するカウンタ32をカウントアップする。これにより、対応する組合せの数が集計される。
[1]すべての分岐ポイントB0〜B2において「分岐」または「通過」が判定された場合
組合せC1のカウントアップ条件:Ab0=1 and Bb0=1 and Cb0=1
組合せC2のカウントアップ条件:Ab0=1 and Bb0=1 and Cp0=1
組合せC4のカウントアップ条件:Ab0=1 and Bp0=1 and Cb0=1
組合せC5のカウントアップ条件:Ab0=1 and Bp0=1 and Cp0=1
組合せC10のカウントアップ条件:Ap0=1 and Bb0=1 and Cb0=1
組合せC11のカウントアップ条件:Ap0=1 and Bb0=1 and Cp0=1
組合せC13のカウントアップ条件:Ap0=1 and Bp0=1 and Cb0=1
組合せC14のカウントアップ条件:Ap0=1 and Bp0=1 and Cp0=1
[2]分岐ポイントB0またはB1で「分岐・通過なし」が判定され、分岐ポイントB2で「分岐」または「通過」が判定された場合
組合せC7のカウントアップ条件:Ab0=1 and Cb0=1
組合せC8のカウントアップ条件:Ab0=1 and Cp0=1
組合せC16のカウントアップ条件:Ap0=1 and Cb0=1
組合せC17のカウントアップ条件:Ap0=1 and Cp0=1
組合せC19のカウントアップ条件:(Ab=0 or Ap0=0) and Bb0=1 and Cb0=1
組合せC20のカウントアップ条件:(Ab=0 or Ap0=0) and Bb0=1 and Cp0=1
組合せC22のカウントアップ条件:(Ab=0 or Ap0=0) and Bp0=1 and Cb0=1
組合せC23のカウントアップ条件:(Ab=0 or Ap0=0) and Bp0=1 and Cp0=1
組合せC25のカウントアップ条件:(Ab=0 or Ap0=0) and (Bb=0 or Bp0=0) and Cb0=1
組合せC26のカウントアップ条件:(Ab=0 or Ap0=0) and (Bb=0 or Bp0=0) and Cp0=1
[3]分岐ポイントB0またはB1で「分岐・通過なし」が判定され、分岐ポイントB2で「分岐・通過なし」が判定された場合
組合せC3のカウントアップ条件:Ab0=1 and Bb0=1 and (Ab1=1 or Ap0=1 or Bb1=1 or Bp0=1)
組合せC6のカウントアップ条件:Ab0=1 and Bp0=1 and (Ab1=1 or Ap0=1 or Bb0=1 or Bp1=1)
組合せC9のカウントアップ条件:Ab0=1 and (Ab1=1 or Ap0=1)
組合せC12のカウントアップ条件:Ap0=1 and Bb0=1 and (Ab0=1 or Ap1=1 or Bb1=1 or Bp0=1)
組合せC15のカウントアップ条件:Ap0=1 and Bp0=1 and (Ab0=1 or Ap1=1 or Bb0=1 or Bp1=1)
組合せC18のカウントアップ条件:Ap0=1 and (Ab0=1 or Ap1=1)
組合せC21のカウントアップ条件:(Ab=0 or Ap0=0) and Bb0=1 and (Ab0=1 or Ap0=1 or Bb1=1 or Bp0=1)
組合せC24のカウントアップ条件:(Ab=0 or Ap0=0) and Bp0=1 and (Ab0=1 or Ap0=1 or Bb0=1 or Bp1=1)
カウンタ制御回路30は、上記[1]〜[3]における各条件式において、第1項から順次、判定フラグの値を確認する。そして、カウントアップ条件が成立したときに、カウンタ制御回路30は対応するカウンタ32をカウントアップする。これにより、対応する組合せの数が集計される。
ここで、分岐ポイントB0〜B1のいずれかが「分岐・通過なし」と判定される、[2]及び[3]の場合における組合せのカウントアップについて説明する。たとえば、[2]の組合せC7、C8、C16、またはC17の場合、分岐ポイントB0についてAb0=1またはAp0=1を検出した後、分岐ポイントB2についてCb0=1またはCp0=1を検出したときに、カウンタ制御回路30は、組合せC7、C8、C16、またはC17に対応するカウンタ32をカウントアップする。これにより、分岐ポイントB0の「分岐・通過なし」に対応する組合せの数が集計される。また、組合せC19、C20、C22、またはC23の場合、分岐ポイントB0についてAb0=0またはAp0=0のまま、分岐ポイントB1についてBb0=1またはBp0=1を検出し、さらに、分岐ポイントB2についてCb0=1またはCp0=1を検出したとき、カウンタ制御回路30は、組合せC19、C20、C22、またはC23に対応するカウンタ32をカウントアップする。これにより、分岐ポイントB0の「分岐・通過なし」に対応する組合せの数が集計される。
あるいは、組合せC25またはC26の場合、分岐ポイントB0についてAb0=0またはAp0=0、分岐ポイントB1についてBb0=0またはBp0=0のまま、分岐ポイントB2についてCb0=1またはCp0=1を検出したとき、カウンタ制御回路30は、組合せC25またはC26に対応するカウンタ32をカウントアップする。これにより、分岐ポイントB0及びB1の「分岐・通過なし」に対応する組合せの数が集計される。
[3]の組合せC3の場合、Ab0=1を検出した後、Bb0=1を検出し、その後、Ab1=1、Ap0=1、Bb1=1、Bp0=1のいずれかを検出したときに、カウンタ制御回路30は、組合せC3に対応するカウンタ32をカウントアップする。これにより、分岐ポイントB2の「分岐・通過なし」に対応する組合せの数が集計される。また、組合せC6の場合、Ab0=1を検出した後、Bp0=1を検出し、その後、Ab1=1、Ap0=1、Bb0=1、Bp1=1のいずれかを検出したときに、カウンタ制御回路30は、組合せC6に対応するカウンタ32をカウントアップする。これにより、分岐ポイントB2の「分岐・通過なし」に対応する組合せの数が集計される。
また、組合せC12の場合、Ap0=1を検出した後、Bb0=1を検出し、その後、Ab0=1、Ap1=1、Bb1=1、Bp0=1のいずれかを検出したときに、カウンタ制御回路30は、組合せC12に対応するカウンタ32をカウントアップする。これにより、分岐ポイントB2の「分岐・通過なし」に対応する組合せの数が集計される。また、組合せC15の場合、Ab0=1を検出した後、Bp0=1を検出し、その後、Ab0=1、Ap1=1、Bb0=1、Bp1=1のいずれかを検出したときに、カウンタ制御回路30は、組合せC15に対応するカウンタ32をカウントアップする。これにより、分岐ポイントB2の「分岐・通過なし」に対応する組合せの数が集計される。
また、組合せC9の場合、Ab0=1を検出した後、Ab1=1、Ap0=1のいずれかを検出したときに、カウンタ制御回路30は、組合せC9に対応するカウンタ32をカウントアップする。これにより、分岐ポイントB1及びB2の「分岐・通過なし」対応する組合せの数が集計される。また、組合せC18の場合、Ap0=1を検出した後、Ab0=1、Ap1=1のいずれかを検出したときに、カウンタ制御回路30は、組合せC18に対応するカウンタ32をカウントアップする。これにより、分岐ポイントB1及びB2の「分岐・通過なし」対応する組合せの数が集計される。
そして、組合せC21の場合、Ab=0またはAp0=0のままBb0=1を検出した後、Ab0=1、Ap0=1、Bb1=1、Bp0=1のいずれかを検出したときに、カウンタ制御回路30は、組合せC21に対応するカウンタ32をカウントアップする。これにより、分岐ポイントB0及びB2の「分岐・通過なし」に対応する組合せの数が集計される。また、組合せC24の場合、Ab=0またはAp0=0のままBp0=1を検出した後、Ab0=1、Ap0=1、Bb0=1、Bp1=1のいずれかを検出したときに、カウンタ制御回路30は、組合せC24に対応するカウンタ32をカウントアップする。これにより、分岐ポイントB0及びB2の「分岐・通過なし」に対応する組合せの数が集計される。なお、すべての分岐ポイントにおいて「分岐・通過なし」と判定されるパターンC26については、カウント値が「0」であるので、カウンタ32を省略してもよい。
カウントアップが終了したら、カウンタ制御回路30は、各判定フラグで値「1」が設定された判定フラグをネゲートする(値「0」に設定する)。ここで、組合せC3、C6、C9、C12、C15、C18、C21、及びC24では、対応するカウンタ32のカウントアップ後、次のカウンタ32の制御を行うために、判定フラグAb1、Ap1、Bb1、Bp1、Cb1、及びCp1のうちいずれかが「1」となっている。よって、その場合、カウンタ制御回路30は次のように処理する。
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をネゲートする
その後、判定部10は、プログラムPRGが実行されるごとにトレースデータと照合用データの比較を継続し、各分岐ポイントでの分岐命令の実行状況に応じて各判定フラグの値を設定する。これにより、集計部12は、26種類の組合せの回数を集計することができる。
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をネゲートする
その後、判定部10は、プログラムPRGが実行されるごとにトレースデータと照合用データの比較を継続し、各分岐ポイントでの分岐命令の実行状況に応じて各判定フラグの値を設定する。これにより、集計部12は、26種類の組合せの回数を集計することができる。
集計部12は、集計を終了すると、上記の集計結果をホストコンピュータ4に出力する。集計終了は、たとえば、操作者がホストコンピュータ4により集計終了を指示したときである。または、操作者がホストコンピュータ4により予めプログラムPRGの実行回数を設定しておき、その実行回数が終了したときである。そして、ホストコンピュータ4は、集計結果を表示または印刷して操作者に提供する。
図7は、集計結果の出力例である。組合せC1〜C26に対応する「Pattern1」〜「Pattern26」の実行回数が示される。操作者は、このような集計結果から、実行頻度の高い、プログラムPRGの動作パターンを知ることができる。かかる結果に基づき、操作者は、動的プログラム解析を実行し、チューニングポイントを特定してプログラムPRGの最適化を行うことができる。最適化は、プログラムPRGの一連の命令の格納アドレスを変更することや、プログラムPRGにおける命令の順序を変更することを含む。そして、たとえば、最も実行回数の多い動作パターン(たとえば「Pattern9」)の実行速度が向上するような最適化を行うことで、プログラムPRGの実行速度を向上させることができる。あるいは、もっとも好ましい動作パターンがあらかじめ特定されている場合であって、その動作パターンが想定した実行回数より低い場合には、その実行回数を増加させるようなプログラムPRGの最適化が可能となる。
本実施形態におけるデータ処理装置によれば、操作者は、分岐命令を指定してその実行状況の組合せを取得できる。その際、データ処理装置は、大量のトレースデータを保持することなく、分岐命令の実行状況の組合せを集計するので、メモリ容量を削減することができる。
2:データ処理装置、4:ホストコンピュータ、6:ターゲットシステム、10:判定部、12:集計部、14:演算処理装置、PRG:プログラム
Claims (5)
- 演算処理装置にて実行される複数の分岐点を有する一連の命令のそれぞれに対応するトレースデータと照合用データの一致または不一致に基づいて、前記複数の分岐点における命令の実行状況を判定する判定部と、
前記演算処理装置にて前記一連の命令が複数回実行されるときに、前記複数の分岐点における命令の実行状況の組合せごとの回数を集計する集計部と、
を有するデータ処理装置。 - 請求項1において、
前記照合用データは、情報処理装置により設定されるデータ処理装置。 - 請求項1または2において、
前記複数の分岐点における命令の実行状況は、分岐したか否か、および各分岐点が迂回されたことのいずれかまたは両方であるデータ処理装置。 - 請求項1乃至3のいずれかにおいて、
前記集計部にて集計された前記複数の分岐点における命令の実行状況の組合せごとの回数が情報処理装置により出力されるデータ処理装置。 - 演算処理装置にて実行される複数の分岐点を有する一連の命令のそれぞれに対応するトレースデータと照合用データの一致または不一致に基づいて、前記複数の分岐点における命令の実行状況を判定し、
前記演算処理装置にて前記一連の命令が複数回実行されるときに、前記複数の分岐点における命令の実行状況の組合せごとの回数を集計する、
データ処理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2011091718A JP2012226459A (ja) | 2011-04-18 | 2011-04-18 | データ処理装置、及びデータ処理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2011091718A JP2012226459A (ja) | 2011-04-18 | 2011-04-18 | データ処理装置、及びデータ処理方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2012226459A true JP2012226459A (ja) | 2012-11-15 |
Family
ID=47276576
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2011091718A Withdrawn JP2012226459A (ja) | 2011-04-18 | 2011-04-18 | データ処理装置、及びデータ処理方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2012226459A (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2018005890A (ja) * | 2016-06-30 | 2018-01-11 | 富士通株式会社 | 未知のプログラムバイナリのための入力発見 |
-
2011
- 2011-04-18 JP JP2011091718A patent/JP2012226459A/ja not_active Withdrawn
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2018005890A (ja) * | 2016-06-30 | 2018-01-11 | 富士通株式会社 | 未知のプログラムバイナリのための入力発見 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5904993B2 (ja) | マルチスレッド・コードをデバッグする方法、システム、及びコンピュータ・プログラム | |
CN110580226B (zh) | 操作系统级程序的目标码覆盖率测试方法、系统及介质 | |
US20080276072A1 (en) | System and Method for using a Local Condition Code Register for Accelerating Conditional Instruction Execution in a Pipeline Processor | |
JP2005317023A (ja) | データ処理装置のブレークポイント論理ユニット、デバッグ論理、およびブレークポイントの方法 | |
US10795685B2 (en) | Operating a pipeline flattener in order to track instructions for complex | |
JP6303749B2 (ja) | ソフトウェアプログラムを解析する方法及びシステム並びに非一時的なコンピュータ可読媒体 | |
US20210365265A1 (en) | Processor achieving zero-overhead loop | |
US7376820B2 (en) | Information processing unit, and exception processing method for specific application-purpose operation instruction | |
JP2018060525A (ja) | イベント駆動型ソフトウェアテストシーケンス決定 | |
JP2008176453A (ja) | シミュレーション装置 | |
US9529654B2 (en) | Recoverable and fault-tolerant CPU core and control method thereof | |
US8762126B2 (en) | Analyzing simulated operation of a computer | |
JP2012226459A (ja) | データ処理装置、及びデータ処理方法 | |
US20050050524A1 (en) | Generating software test information | |
WO2018231598A1 (en) | Emulation of target system using jit compiler and bypassing translation of selected target code blocks | |
JPH1049373A (ja) | パイプライン・デジタル・プロセッサにおいて多重で高精度の事象を操作する方法と装置 | |
US8683181B2 (en) | Processor and method for distributing load among plural pipeline units | |
CN108228239B (zh) | 基于快速模拟器qemu的分支指令抓取方法和装置 | |
JP6473023B2 (ja) | 性能評価モジュール及びこれを組み込んだ半導体集積回路 | |
JPH0454638A (ja) | 電子計算機 | |
US9600284B2 (en) | Computer program instruction analysis | |
JP2011248845A (ja) | ソフトエラー検出回路およびソフトエラー検出方法 | |
JP2002163126A (ja) | デバッグ用cpuに内蔵のイベント検出回路、イベント検出方法および外部周辺回路 | |
KR20170065845A (ko) | 프로세서 및 제어 방법 | |
CN118259970A (zh) | 指令处理方法、装置、系统以及电子设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A300 | Withdrawal of application because of no request for examination |
Free format text: JAPANESE INTERMEDIATE CODE: A300 Effective date: 20140701 |