トップ :: G 物理学 :: G06 計算;計数




【発明の名称】 プログラム実行におけるタイミング記録装置
【発明者】 【氏名】市瀬 規善

【要約】 【課題】記録し、特定すべきタイミングを、資源を多く消費せずに記録し、特定することができるプログラム実行におけるタイミング記録装置を提供することを目的とする。

【解決手段】対象のプログラム6の実行時にアドレスが小さい方向にジャンプするか、ジャンプする可能性のある命令が実行されると、逆方向ジャンプ記録装置1はその命令に対応するカウンタ2にその命令が実行された回数を記録し、エリア3にその命令の位置を記録する。対象のプログラム6の実行時に、記録し、特定すべきタイミングにタイミング記録装置4によりもっとも最近実行されたアドレスが小さい方向にジャンプするか、ジャンプする可能性のある命令の位置と、その命令に対応するカウンタの値をバッファ5に追加する。
【特許請求の範囲】
【請求項1】 対象のプログラム中のアドレスが小さい方向にジャンプするか、またはジャンプする可能性のある命令が実行されるごとに動作する逆方向ジャンプ記録装置と、前記対象のプログラムのアドレスが小さい方向にジャンプするか、またはジャンプする可能性のある命令ごとに前記逆方向ジャンプ記録装置により計数するカウンタと、前記対象のプログラムの実行時に最も最近実行したアドレスが小さい方向にジャンプするか、またはジャンプする可能性のある命令が存在する位置を前記逆方向ジャンプ記録装置により格納するエリアと、記録し、特定すべきタイミングに動作するタイミング記録装置と、前記対象のプログラムの実行時に記録し、特定すべきタイミングに前記タイミング記録装置により最も最近実行されたアドレスが小さい方向にジャンプするか、またはジャンプする可能性のある命令の位置とこの命令に対応する前記カウンタの値を記録するバッファと、を備えることを特徴とするプログラム実行におけるタイミング記録装置。
【請求項2】 前記タイミング記録装置によって記録される情報は、特定すべきタイミング1つ当たりの命令の位置情報と該命令に対応するカウンタの値であることを特徴とする請求項1記載のプログラム実行におけるタイミング記録装置。
【請求項3】 対象のプログラム中のアドレスが小さい方向にジャンプするか、またはジャンプする可能性のある命令が実行されるときに実行される逆方向ジャンプ記録コードと、前記対象のプログラム中のアドレスが小さい方向にジャンプするか、またはジャンプする可能性のある命令が実行された回数を前記逆方向ジャンプ記録コードにより計数するカウンタと、前記対象のプログラムの実行時に最も最近実行したアドレスが小さい方向にジャンプするか、またはジャンプする可能性のある命令が存在する位置を前記逆方向ジャンプ記録コードにより格納するエリアと、前記対象のプログラムの実行中に記録し、特定すべきタイミングに実行されるタイミング記録コードと、前記対象のプログラムの実行時に最も最近実行したアドレスが小さい方向にジャンプするか、またはジャンプする可能性のある命令の位置と、その命令に対応する前記カウンタの計数値を前記タイミング記録コードにより追加されるバッファと、前記記録し、特定すべきタイミングに前記記録コードを実行するように前記対象のプログラムを変換するコンバータと、を備えることを特徴とするプログラム実行におけるタイミング記録装置。
【請求項4】 前記対象のプログラムは、前記逆方向ジャンプ記録コードと、前記カウンタと、前記エリアと、前記タイミング記録コードと、前記バッファとを埋め込むことを特徴とする請求項3記載のプログラム実行におけるタイミング記録装置。
【発明の詳細な説明】【0001】
【発明の属する技術分野】この発明は、プログラム実行中のあるタイミングを多くの資源を消費せずに記録し、特定するプログラム実行におけるタイミング記録装置に関し、特に、逆方向対象のプログラムの中のアドレスが小さい方向に逆方向ジャンプのみに着目して、逆方向にジャンプするか、ジャンプする可能性のある命令の回数と逆方向にジャンプするか、ジャンプする可能性のある命令の位置とから、記録し、特定すべきタイミングを特定するようにしたプログラム実行におけるタイミング記録装置に関に関する。
【0002】
【従来の技術】蓄積プログラム方式の処理系装置において、デバッグ用のツールとして、ジャンプ命令を実行した際に、ジャンプ条件が成立したか、否かを知るために、ジャンプ命令実行時の命令アドレスを知る必要があり、これをジャンプヒストリと称している。このジャンプヒストリの記録に関して、特開昭57−50057号公報には、メモリ内に複数ワードからなる特定エリアを設け、この特定エリアのワード数と同数をカウンタで計数し、カウンタによって指定された特定エリアのアドレスにジャンプ条件成立時、複数個のジャンプヒストリを格納することが開示されている。
【0003】また、特開昭58−101353号公報には、プログラムのフローをトレースするのに必要なアドレス情報である条件ジャンプにより指定された不連続なアドレス情報のみを記憶することが開示されている。さらに、ジャンプ命令のトレース方式に関して、特開昭60−20251号公報には、中央処理装置が主記憶装置との間でメモリバスを介して伝送する情報を解析し、中央処理装置のジャンプ命令実行を検出したときに、その直前の命令実行番地と、このジャンプ命令によるジャンプ先番地を記録することが開示されている。プログラムの実行軌跡を収集表示するプログラム実行軌跡収集表示方式に関して、特開昭60−229443号公報には、ジャンプ命令の割り込み機能を利用して、実行されたプログラムのジャンプ命令のジャンプ元アドレス情報とジャンプ先アドレス情報を蓄積し、蓄積したこれらのアドレス情報をもとに、アドレス情報に対応するソースプログラムイメージを抽出し、フローチャート形式とソースプログラムイメージで表示することが開示されている。
【0004】しかしながら、これらの公報は、いずれも記録し、特定すべきタイミングを特定するために、瞬間を特定するための情報として、対象のプログラムのアドレスが小さい方向にジャンプして、そのジャンプした回数と最近のジャンプした位置情報を加味していないものである。また、記憶容量の削減についての言及もなされていないばかりか、プログラムの実行速度の改善についての配慮もなされていない。
【0005】さらに、プログラムの実行中のある瞬間を特定することに関して、プログラム実行中のある瞬間のカウンタ(プログラムカウンタ)のカウント値のみでは、特定すべきタイミングを特定することができない。すなわち、ループの存在により、1つのアドレスを複数走行する可能性がある。そこで、プログラム中のアドレスをジャンプし、そのジャンプをトレースすることも提案されているが、ジャンプする回数とジャンプするアドレスの位置についての配慮がなされていない。
【0006】一方、従来のプログラミング実行におけるタイミング記録装置は、図3に示すように構成されている。この図3において、記録し、特定すべきタイミングに動作するタイミング記録装置4と、記録し、特定すべきタイミングの情報を記録するバッファ5とを有し、対象プログラム6の実行時に、記録し、特定すべきタイミングにタイミング記録装置4により、現在のプログラム6の状態を示す全データ(メモリイメージとレジスタなど)を記録する。
【0007】
【発明が解決しようとする課題】しかし、この図3に示すような従来のプログラミング実行におけるタイミング記録装置では、記録し、特定すべきタイミング1回ごとにタイミングの特定のためにプログラムの状態を示す全データを記録するために資源を多く消費するという課題がある。また、記録し、特定すべきタイミングの特定のために、プログラムの状態を示す全データ記録するために、記録し、特定すべきタイミングで性能が急激に下がるという課題もある。
【0008】この発明は、上記従来の課題を解決するためになされたもので、記録し、特定すべきタイミングを、資源を多く消費せずに記録し、特定することができるプログラム実行におけるタイミング記録装置を提供することを目的とする。
【0009】
【課題を解決するための手段】上記目的を達成するために、この発明のプログラム実行におけるタイミング記録装置は、対象のプログラム中のアドレスが小さい方向にジャンプするか、またはジャンプする可能性のある命令が実行されるごとに動作する逆方向ジャンプ記録装置と、前記対象のプログラムのアドレスが小さい方向にジャンプするか、またはジャンプする可能性のある命令ごとに前記逆方向ジャンプ記録装置により計数するカウンタと、前記対象のプログラムの実行時に最も最近実行したアドレスが小さい方向にジャンプするか、またはジャンプする可能性のある命令が存在する位置を前記逆方向ジャンプ記録装置により格納するエリアと、記録し、特定すべきタイミングに動作するタイミング記録装置と、前記対象のプログラムの実行時に記録し、特定すべきタイミングに前記タイミング記録装置により最も最近実行されたアドレスが小さい方向にジャンプするか、またはジャンプする可能性のある命令の位置とこの命令に対応する前記カウンタの値を記録するバッファとを備えることを特徴とする。
【0010】この発明のプログラム実行におけるタイミング記録装置によれば、対象プログラムの実行時にアドレスが小さい方向にジャンプするかまたはジャンプする可能性のある命令が実行されると、逆方向ジャンプ記録装置はその命令に対応するカウンタにその命令が実行された回数を記録し、エリアにその命令の位置を記録する。対象プログラムの実行時に、記録し、特定すべきタイミングに、タイミング記録装置により最も最近実行されたアドレスが小さい方向にジャンプするか、またはジャンプする可能性のある命令の位置と、その命令に対応するカウンタの値をバッファに追加する。したがって、この発明では、記録し、特定すべきタイミングを資源を多く消費せずに記録し、特定できる。
【0011】また、この発明のプログラム実行におけるタイミング記録装置は、対象のプログラム中のアドレスが小さい方向にジャンプするか、またはジャンプする可能性のある命令が実行されるときに実行される逆方向ジャンプ記録コードと、前記対象のプログラム中のアドレスが小さい方向にジャンプするか、またはジャンプする可能性のある命令が実行された回数を前記逆方向ジャンプ記録コードにより計数するカウンタと、前記対象のプログラムの実行時に最も最近実行したアドレスが小さい方向にジャンプするか、またはジャンプする可能性のある命令が存在する位置を前記逆方向ジャンプ記録コードにより格納するエリアと、前記対象のプログラムの実行中に記録し、特定すべきタイミングに実行されるタイミング記録コードと、前記対象のプログラムの実行時に最も最近実行したアドレスが小さい方向にジャンプするか、またはジャンプする可能性のある命令の位置と、その命令に対応する前記カウンタの計数値を前記タイミング記録コードにより追加されるバッファと、前記記録し、特定すべきタイミングに前記記録コードを実行するように前記対象のプログラムを変換するコンバータとを備えることを特徴とする。
【0012】この発明のプログラム実行におけるタイミング記録装置によれば、記録し、特定すべきタイミングにタイミング記録コードを実行するように、コンバータにより対象のプログラムを変換し、対象のプログラムの実行時にアドレスが小さい方向にジャンプするか、またはジャンプする可能性のある命令が実行されるときに、逆方向ジャンプ記録コードが実行され、その命令に対応するカウンタに命令が実行された回数を記録するとともに、エリアにその命令の位置を記録する。対象のプログラムの実行中に、記録し、特定すべきタイミングにタイミング記録コードが実行されることにより、最も最近実行されたアドレスが小さい方向にジャンプするか、またはジャンプする可能性のある命令の位置と、その命令に対応するカウンタの値をバッファに追加する。したがって、この発明では、前記と同様に記録し、特定すべきタイミングを資源を多く消費せずに記録し、特定できる。
【0013】
【発明の実施の形態】以下、この発明のプログラム実行におけるタイミング記録装置の実施の形態について図面に基づき説明する。図1はこの発明による第1実施の形態の構成を示す構成説明図である。この図1に示す第1実施の形態では、対象のプログラム6中のアドレスが小さい方向にジャンプするか、またはジャンプする可能性のある命令が実行されるごとに動作する逆方向ジャンプ記録装置1が設けられている。
【0014】また、対象のプログラム6中のアドレスが小さい方向にジャンプするか、またはジャンプする可能性のある命令ごとに存在するカウンタ2が設けられている。さらに、最も最近実行した, アドレスが小さい方向にジャンプするか、またはジャンプする可能性のある命令が存在する位置を格納するエリア3を有し、記録し特定すべきタイミングに動作するタイミング記録装置4と、記録し特定すべきタイミングの情報を記録するバッファ5とを有している。
【0015】次に、このような構成を有する第1実施の形態の動作について説明する。対象プログラム6の実行時に、アドレスが小さい方向にジャンプするか、またはジャンプする可能性のある命令が実行されると、逆方向ジャンプ記録装置1は、その命令に対応するカウンタ2にその命令が実行された回数を記録し、また、エリア3にその命令の位置を記録する。対象プログラム6の実行時に、記録し特定すべきタイミングに、タイミング記録装置4により、最も最近実行されたアドレスが小さい方向にジャンプするか、またはジャンプする可能性のある命令の位置と、その命令に対応するカウンタの値を、バッファ5に追加する。
【0016】このようにして、この第1実施の形態では、プログラム実行中のアドレスのジャンプあるいはジャンプする可能性のある命令ごとのトレースの対象はアドレスの逆方向のジャンプのトレースのみでよく、しかも、最後にアドレスの逆方向にジャンプしたジャンプ命令を特定できればよいことになる。この場合、カウンタ2により逆方向にジャンプするか、ジャンプする可能性のある命令ごとに計数しており、しかもその命令が存在する位置をエリア3で格納しているから、十分に記録し、特定すべきタイミングを特定することができる。
【0017】つまり、非同期イベントが発生しない一般のプログラムは、同一環境で再実行による動作は全く同じになり、プログラムが逆方向に動作することがない場合には、1つのアドレス命令は1度しか実行できないから、特定したい瞬間のアドレスをカウントするカウンタ(プログラムカウンタ)の計数値を記録するだけで記録し、特定すべきタイミングの特定が可能となり、再実行により容易に特定したい瞬間を再現できることになる。
【0018】しかし、普通は、プログラム実行のアドレスの逆方向ジャンプが存在するから、その場合、特定したい瞬間のカウンタの計数値だけでなく、特定したい瞬間の前に最後に逆方向にジャンプした命令(最も最近実行したアドレス)と、その瞬間に至るまのジャンプ命令が実行された回数をカウンタ2で計数しているから、プログラムを全く同じ環境で実行し、そのジャンプ命令がその回数だけ実行された後カウンタ2の値がその値になったとき、特定したい瞬間となる。このようにして、再度プログラムの命令の実行などで容易に特定したい瞬間を特定することができる。
【0019】上記から明らかなように、第1実施の形態では、記録し特定すべきタイミングを特定するために、タイミング1つ当たり(命令の位置情報のサイズ+カウンタのサイズ)のサイズの情報しかとらなくて済み、したがって、必要な記憶容量を少なくできる。また、アドレスが小さい方向にジャンプするか、またはジャンプする可能性のある命令の実行時と、記録し特定すべきタイミングにしか記録装置が動作しないため、対象プログラム6の動作速度に対する影響を少なくすることが可能になる。
【0020】次に、この発明の第2実施の形態について説明する。図2はこの発明による第2実施の形態の構成を示す構成説明図である。この図2において、図1と同一部分には、同一符号を付して説明する。この第2実施の形態では、逆方向ジャンプ記録手段としての逆方向ジャンプ記録コード7が設けられている。
【0021】また、対象のプログラム6中のアドレスが小さい方向にジャンプするか、またはジャンプする可能性のある命令ごとに存在するカウンタ2と、最も最近実行したアドレスが小さい方向にジャンプするか、またはジャンプする可能性のある命令が存在する位置を格納するエリア3と、タイミング記録手段としてのタイミング記録コード8と、記録し特定すべきタイミングの情報を記録するバッファ5と、逆方向ジャンプ記録コード7、カウンタ2、エリア3、タイミング記録コード8、バッファ5を、対象プログラム6の中に埋め込んでいる。さらに、対象のプログラム6中のアドレスが小さい方向にジャンプするか、またはジャンプする可能性のある命令が実行されるごとに方向ジャンプ記録コード7を実行するように、プログラム6を変換し、また記録し特定すべきタイミングにタイミング記録コード8を実行するよう、プログラム6を変換するコンバータ9を有する。
【0022】次に、この第2実施の形態の動作について説明する。対象プログラム6を、コンバータ9により変換し、対象プログラム6の実行時に、アドレスが小さい方向にジャンプするか、またはジャンプする可能性のある命令が実行されるときに、逆方向ジャンプ記録コード7が実行される。実行される逆方向ジャンプ記録コード7は、その命令に対応するカウンタ2にその命令が実行された回数を記録し、また、エリア3にその命令の位置を記録し、対象プログラム6の実行中、記録し特定すべきタイミングに、タイミング記録コード8が実行される。実行されるタイミング記録コード8は、最も最近実行されたアドレスが小さい方向にジャンプするか、またはジャンプする可能性のある命令の位置と、その命令に対応するカウンタの値を、バッファ5に追加する。
【0023】
【発明の効果】以上のように、この発明によれば、対象のプログラム中のアドレスが小さい方向にジャンプするか、またはジャンプする可能性のある命令が実行されると、逆方向ジャンプ記録装置によりその命令に対応するカウンタにその命令が実行された回数を記録し、エリアにその命令の位置を記録するようにしたので、記録し特定すべきタイミングを特定するために、タイミング1つあたりのサイズの情報しかとらなくて済み、したがって、必要な記憶容量を少なくし、かつアドレスが小さい方向にジャンプするか、またはジャンプする可能性のある命令と、記録し特定すべきタイミングにしか記録手段が動作しないため、対象プログラムの動作速度に対する影響を少なくすることを可能にでき、記録し特定すべきタイミングを、資源を多く消費せずに記録し、特定できる。
【0024】また、この発明によれば、記録し、特定すべきタイミングにタイミング記録コードを実行するように、コンバータにより対象のプログラムを変換し、対象のプログラムの実行時にアドレスが小さい方向にジャンプするか、ジャンプする可能性のある命令が実行されるときに、逆方向ジャンプ記録コードが実行され、その命令に対応するカウンタに命令が実行された回数を記録し、かつエリアにその命令の位置を記録するようにしたので、前記発明と同様に、必要な記憶容量を少なくし、かつ対象プログラムの動作速度に対する影響を少なくすることを可能にでき、記録し特定すべきタイミングを、資源を多く消費せずに記録し、特定できる。
【出願人】 【識別番号】000004237
【氏名又は名称】日本電気株式会社
【出願日】 平成10年(1998)5月14日
【代理人】 【弁理士】
【氏名又は名称】野田 茂
【公開番号】 特開平11−327952
【公開日】 平成11年(1999)11月30日
【出願番号】 特願平10−152232