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




【発明の名称】 デバッガ装置、デバッグ方法及び記録媒体
【発明者】 【氏名】水野 勝浩

【要約】 【課題】この発明は、シリアル伝送される分岐先アドレスを完全に特定できなかった場合には分岐先アドレスを予測して復元することを課題とする。

【解決手段】この発明は、メモリイメージ・リファレンス情報と、ジャンプラベル変換手段4で生成されたジャンプラベル情報と、パラレルデータ変換手段2で生成された実行アドレスパラレル情報を受けて、これらの情報に基づいて、シリアル伝送により与えられた実行アドレスシリアル情報の内、完全に受信できなかった分岐先実行アドレスを、PCトレース変換手段3により予測復元して構成される。
【特許請求の範囲】
【請求項1】 開発評価するプログラムが格納されているメモリの命令配置のメモリイメージ情報、ならびに前記プログラム内の分岐命令における分岐先アドレスのリファレンス情報を含むメモリイメージ・リファレンス情報を受けて、分岐先ラベルアドレスと、該分岐先ラベルアドレスから次のレジスタ間接分岐命令までの命令語数とからなるジャンプラベル情報を生成するジャンプラベル変換手段と、前記プログラムを実行するプロセッサからシリアル伝送により与えられる実行アドレスシリアル情報と、前記メモリイメージ・リファレンス情報を受けて、前記メモリイメージ・リファレンス情報に基づいて前記実行アドレスシリアル情報から、実行アドレスと受信アドレスビット数と実行命令数を含む実行アドレスパラレル情報を生成するパラレルデータ変換手段と、前記メモリイメージ・リファレンス情報と、前記ジャンプラベル変換手段で生成されたジャンプラベル情報と、前記パラレルデータ変換手段で生成された実行アドレスパラレル情報を受けて、前記メモリイメージ・リファレンス情報と、前記ジャンププラベル情報と、前記実行アドレスパラレル情報とに基づいて、前記プロセッサからシリアル伝送により与えられた実行アドレスシリアル情報の内、完全に受信できなかった分岐先実行アドレスを予測して復元し、復元した分岐先実行アドレスと予測精度を示す予測指標とを含む実行アドレストレース情報を生成するPCトレース変換手段とを有することを特徴とするデバッガ装置。
【請求項2】 開発評価するプログラムが格納されているメモリの命令配置のメモリイメージ情報、ならびに前記プログラム内の分岐命令における分岐先アドレスのリファレンス情報を含むメモリイメージ・リファレンス情報を受けて、分岐先ラベルアドレスと、該分岐先ラベルアドレスから次のレジスタ間接分岐命令までの命令語数とからなるジャンプラベル情報を生成する第1のステップと、前記プログラムを実行するプロセッサからシリアル伝送により与えられる実行アドレスシリアル情報と、前記メモリイメージ・リファレンス情報を受けて、前記メモリイメージ・リファレンス情報に基づいて前記実行アドレスシリアル情報から、実行アドレスと受信アドレスビット数と実行命令数を含む実行アドレスパラレル情報を生成する第2のステップと、前記メモリイメージ・リファレンス情報と、前記第1のステップで生成されたジャンプラベル情報と、前記第2のステップで生成された実行アドレスパラレル情報を受けて、前記メモリイメージ・リファレンス情報と、前記ジャンププラベル情報と、前記実行アドレスパラレル情報とに基づいて、前記プロセッサからシリアル伝送により与えられた実行アドレスシリアル情報の内、完全に受信できなかった分岐先実行アドレスを予測して復元し、復元した分岐先実行アドレスと予測精度を示す予測指標とを含む実行アドレストレース情報を生成する第3のステップとを有することを特徴とするデバッグ方法。
【請求項3】 開発評価するプログラムが格納されているメモリの命令配置のメモリイメージ情報、ならびに前記プログラム内の分岐命令における分岐先アドレスのリファレンス情報を含むメモリイメージ・リファレンス情報を受けて、分岐先ラベルアドレスと、該分岐先ラベルアドレスから次のレジスタ間接分岐命令までの命令語数とからなるジャンプラベル情報を生成する第1のステップと、前記プログラムを実行するプロセッサからシリアル伝送により与えられる実行アドレスシリアル情報と、前記メモリイメージ・リファレンス情報を受けて、前記メモリイメージ・リファレンス情報に基づいて前記実行アドレスシリアル情報から、実行アドレスと受信アドレスビット数と実行命令数を含む実行アドレスパラレル情報を生成する第2のステップと、前記メモリイメージ・リファレンス情報と、前記第1のステップで生成されたジャンプラベル情報と、前記第2のステップで生成された実行アドレスパラレル情報を受けて、前記メモリイメージ・リファレンス情報と、前記ジャンププラベル情報と、前記実行アドレスパラレル情報とに基づいて、前記プロセッサからシリアル伝送により与えられた実行アドレスシリアル情報の内、完全に受信できなかった分岐先実行アドレスを予測して復元し、復元した分岐先実行アドレスと予測精度を示す予測指標とを含む実行アドレストレース情報を生成する第3のステップとをコンピュータに実行させるプログラムを記録したコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】【0001】
【発明の属する技術分野】本発明は、マイクロプロセッサ(MPU)に内蔵したデバッグ専用回路からシリアル転送されたアプリケーションプログラムの実行アドレス情報(PCトレースのシリアルデータ)をICE(in-circuit emulator)装置が完全に受信できなかった場合に、アプリケーションプログラムのメモリイメージ・リファレンス情報を利用して、完全に受信できなかった分岐先実行アドレスを予測して復元するデバッガ装置、デバッグ方法及びデバッグ方法をコンピュータに実行させるプログラムを記録したコンピュータ読み取り可能な記録媒体に関する。
【0002】
【従来の技術】図15はMPUのソフトウェアを開発する際に、ICE装置ならびにデバッガ装置を用いてMPUを評価する従来の開発評価システムの構成を示す図である。
【0003】図15において、開発評価システムは、プリント基板100に実装されてデバッグのターゲットとなるMPU101、ICE装置110、デバッガ装置120及び表示装置130を備えて構成されている。MPU101は、CPUコア102とデバッグ専用回路103を備え、バスを介してメモリ104と入出力インターフェース105に接続されている。ICE装置110は、MPU101との間でデバッグ情報の入出力インターフェースとなるデバッグ回路用インターフェース111と、デバッグ時のトレース情報を格納するトレース情報メモリ112と、デバッガ装置120との間で入出力インターフェースとなる通信インターフェース113と、デバッグ回路用インターフェース111と通信インターフェース113を制御するコントローラ114を備えて構成されている。デバッガ装置120は、ICE装置110との間で入出力を行う入力手段121と、入力手段121を介してICE装置110から与えられた実行アドレスシリアル情報を実行アドレスパラレル情報に変換するパラレルデータ変換手段122と、メモリイメージリファレンス情報に基づいて実行アドレスパラレル情報を実行アドレストレース情報に変換するPCトレース変換手段123と、実行アドレストレース情報を表示装置130に表示させる表示手段124を備えて構成されている。
【0004】MPUを組み込んだ機器のソフトウェア開発には、ICE装置を用いた上記システムが広く使用されている。しかしながら、近年マイクロプロセッサの動作周波数が高速化するにつれて、既存のICE装置の問題点が明らかになってきた。具体的には、MPUとICE装置を別々の回路として製作した場合には、MPUとICE装置間を高価なプローブで接続しなければならなくなる。さらに、両者を接続するプローブ等により両者間を転送される信号に遅延が発生し、MPUの動作周波数の高速化に対応できない状況になってきている。このような信号遅延を極力小さくするために、図15に示すように、MPU101の中に信号遅延を緩和するデバッグ専用のデバッグ専用回路103を設けるようになってきている。
【0005】しかし、このデバッグ専用回路103は、本来のMPU101の機能から見て不要な機能なため、デバッグ専用の回路やデバッグ専用の信号線を多く取ることはできない。そのため、図15に示すデバッグ専用回路103とICE装置110間は最小限の信号線を使用したシリアル伝送にて接続されている。このシリアル伝送によりデバッグ専用回路103とICE装置110間が接続されることで、以下に示すような不具合が発生する。
【0006】MPU101が実行するアプリケーションプログラムにおいて、分岐命令が連続して実行された場合に、MPU101が分岐先アドレスをICE装置110に送信できないことがある。例えば分岐先アドレスが32ビットの場合には、分岐先アドレスをICE装置110に伝送するデバッグ専用回路103は、シリアル伝送のため分岐先アドレスをICE装置110に伝送するために32サイクルを要することになる。このため、この分岐先アドレスが伝送中の32サイクル以内に、MPU101が実行しているアプリケーションプログラムにおいて次の分岐が発生した場合には、デバッグ専用回路103はこの分岐の分岐先アドレスを完全にICE装置110に送信できなくなっていた。特に、命令語内に分岐先アドレスが無い“レジスタ間接分岐命令”のような場合には、分岐先アドレスがレジスタ内に格納されるので、分岐先アドレスを特定するのは不可能であった。例えば、文献「日経エレクトロニクス 1995年7月31日号 “リアルタイムトレースを50MHzの量産用MPUで実現” 日経BP社」のP138に記載されているように、間接ジャンプが発生するプログラムにおいて、「■テーブルを使った分岐」と「■ポインターによる関数呼び出し」の場合がこの問題に該当し、双方とも分岐先アドレスを間接的に指定するものである。
【0007】
【発明が解決しようとする課題】以上説明したように、MPUのソフトウェアを開発評価する従来のシステムにおいて、MPUの外部に設けられたICE装置とMPU内に設けられたデバッグ専用回路との間でシリアル伝送によりデバッグ情報が伝送される構成において、分岐先アドレスがレジスタ等を介して間接的に指定される分岐命令が頻繁に実行される場合には、ICE装置は分岐先アドレスを完全にデバッグ専用回路から受け取ることができない場合があった。このため、デバッグを確実に行うことができず、ソフトウェアの開発評価を十分に行うことが困難になるといった不具合を招いていた。
【0008】そこで、この発明は、上記に鑑みてなされたものであり、その目的とするところは、シリアル伝送される分岐先アドレスを完全に特定できなかった場合には分岐先アドレスを予測復元して、ソフトウェアの開発評価を十分に行うことができるデバッガ装置、デバッグ方法及びデバッグ方法をコンピュータに実行させるプログラムを記録したコンピュータ読み取り可能な記録媒体を提供することにある。
【0009】
【課題を解決するための手段】上記目的を達成するために、課題を解決するための第1の手段は、開発評価するプログラムが格納されているメモリの命令配置のメモリイメージ情報、ならびに前記プログラム内の分岐命令における分岐先アドレスのリファレンス情報を含むメモリイメージ・リファレンス情報を受けて、分岐先ラベルアドレスと、該分岐先ラベルアドレスから次のレジスタ間接分岐命令までの命令語数とからなるジャンプラベル情報を生成するジャンプラベル変換手段と、前記プログラムを実行するプロセッサからシリアル伝送により与えられる実行アドレスシリアル情報と、前記メモリイメージ・リファレンス情報を受けて、前記メモリイメージ・リファレンス情報に基づいて前記実行アドレスシリアル情報から、実行アドレスと受信アドレスビット数と実行命令数を含む実行アドレスパラレル情報を生成するパラレルデータ変換手段と、前記メモリイメージ・リファレンス情報と、前記ジャンプラベル変換手段で生成されたジャンプラベル情報と、前記パラレルデータ変換手段で生成された実行アドレスパラレル情報を受けて、前記メモリイメージ・リファレンス情報と、前記ジャンププラベル情報と、前記実行アドレスパラレル情報とに基づいて、前記プロセッサからシリアル伝送により与えられた実行アドレスシリアル情報の内、完全に受信できなかった分岐先実行アドレスを予測して復元し、復元した分岐先実行アドレスと予測状況を示す予測指標とを含む実行アドレストレース情報を生成するPCトレース変換手段とを有することを特徴とする。
【0010】第2の手段は、開発評価するプログラムが格納されているメモリの命令配置のメモリイメージ情報、ならびに前記プログラム内の分岐命令における分岐先アドレスのリファレンス情報を含むメモリイメージ・リファレンス情報を受けて、分岐先ラベルアドレスと、該分岐先ラベルアドレスから次のレジスタ間接分岐命令までの命令語数とからなるジャンプラベル情報を生成する第1のステップと、前記プログラムを実行するプロセッサからシリアル伝送により与えられる実行アドレスシリアル情報と、前記メモリイメージ・リファレンス情報を受けて、前記メモリイメージ・リファレンス情報に基づいて前記実行アドレスシリアル情報から、実行アドレスと受信アドレスビット数と実行命令数を含む実行アドレスパラレル情報を生成する第2のステップと、前記メモリイメージ・リファレンス情報と、前記第1のステップで生成されたジャンプラベル情報と、前記第2のステップで生成された実行アドレスパラレル情報を受けて、前記メモリイメージ・リファレンス情報と、前記ジャンププラベル情報と、前記実行アドレスパラレル情報とに基づいて、前記プロセッサからシリアル伝送により与えられた実行アドレスシリアル情報の内、完全に受信できなかった分岐先実行アドレスを予測して復元し、復元した分岐先実行アドレスと予測精度を示す予測指標とを含む実行アドレストレース情報を生成する第3のステップとを有することを特徴とする。
【0011】第3の手段は、開発評価するプログラムが格納されているメモリの命令配置のメモリイメージ情報、ならびに前記プログラム内の分岐命令における分岐先アドレスのリファレンス情報を含むメモリイメージ・リファレンス情報を受けて、分岐先ラベルアドレスと、該分岐先ラベルアドレスから次のレジスタ間接分岐命令までの命令語数とからなるジャンプラベル情報を生成する第1のステップと、前記プログラムを実行するプロセッサからシリアル伝送により与えられる実行アドレスシリアル情報と、前記メモリイメージ・リファレンス情報を受けて、前記メモリイメージ・リファレンス情報に基づいて前記実行アドレスシリアル情報から、実行アドレスと受信アドレスビット数と実行命令数を含む実行アドレスパラレル情報を生成する第2のステップと、前記メモリイメージ・リファレンス情報と、前記第1のステップで生成されたジャンプラベル情報と、前記第2のステップで生成された実行アドレスパラレル情報を受けて、前記メモリイメージ・リファレンス情報と、前記ジャンププラベル情報と、前記実行アドレスパラレル情報とに基づいて、前記プロセッサからシリアル伝送により与えられた実行アドレスシリアル情報の内、完全に受信できなかった分岐先実行アドレスを予測して復元し、復元した分岐先実行アドレスと予測精度を示す予測指標とを含む実行アドレストレース情報を生成する第3のステップとをコンピュータに実行させるプログラムを記録したコンピュータ読み取り可能なことを特徴とする。
【0012】
【発明の実施の形態】以下、図面を用いてこの発明の実施形態を説明する。
【0013】図1はこの発明の一実施形態に係るデバッガ装置を含むソフトウェアの開発評価システムの構成を示す図である。
【0014】図1において、この実施形態のシステムは、図15に示すプリント基板100に実装されたMPU101、ICE装置110ならびに表示装置130と、本発明の特徴となるデバッガ装置1を備えて構成され、前述した公知文献において説明した、間接ジャンプが発生するプログラム例の「■テーブルを使った分岐」と「■ポインターによる関数呼び出し」の場合に発生する問題を解決する手段として、MIPSアーキテクチャのMPUの開発評価を行うシステムである。
【0015】デバッガ装置1は、図15に示すと同様の入力手段121と、図15に示す従来構成のパラレルデータ変換手段122の機能に加えて受信アドレスビット数と実行命令数と実行アドレスを求める機能を追加し、実行アドレスパラレル情報を作成して出力するパラレルデータ変換手段2と、パラレルデータ変換手段2により作成された実行アドレスパラレル情報とメモリイメージリファレンス情報ならびにジャンプラベル情報を受けて、図15に示す従来構成のPCトレース変換手段123の機能に加えて、完全に受信できなかった実行アドレスを予測して復元する機能を追加し、実行アドレストレース情報を作成して出力するPCトレース変換手段3と、メモリ・イメージリファレンス情報を受けて、ジャンプラベル情報に変換するジャンプラベル変換手段4と、PCトレース変換手段3により作成された実行アドレストレース情報を受けて、図15に示す表示手段124の機能に加えて、予測指標により実行アドレスの色替え表示を追加した表示手段5を備えて構成される。
【0016】このような構成において、プリント基板100上のメモリ104に格納されているアプリケーションプログラムのメモリイメージとリファレンス情報は、デバッガ装置1のメモリイメージ・リファレンス情報として格納されている。図2にメモリイメージ・リファレンス情報の一例を示す。図2において、メモリイメージ情報は、先頭アドレスとサイズとメモリイメージポインタとから構成され、リファレンス情報は、ラベル名・関数名とアドレスとから構成される。プリント基板100上のアプリケーションプログラムを実行させるとデバッグ専用回路103は、ICE装置110へシリアル伝送により実行アドレスシリアル情報を出力する。
【0017】図3にシリアル伝送される実行アドレスシリアル情報の一例を示す。図3において、jr1、jr2はレジスタ間接分岐命令を表し、jr2はレジスタ間接命令なので、jr1のターゲット出力中にjr2のターゲットアドレスの出力を開始する。DCLKはデバッグ専用回路103のクロックを表し、PCSTはMPU101の状態を表し、その状態の内STLはパイプラインストール(実行命令なし)、JMPは分岐命令成立(実行アドレス出力あり)、BRTは分岐命令成立(実行アドレス出力なし)、SEQはシーケンシャル実行(1命令実行したことを示す)をそれぞれ表し、TPCは分岐先アドレスのシリアル伝送を表し、Anは分岐先アドレスのnビットの情報を表すものとする。図4に図3に示す実行アドレスシリアル情報のプログラムの一例を示す。
【0018】デバッガ装置1の入力手段121は、ICE装置110から実行アドレスシリアル情報を入力し、デバッガ装置1内に格納する。
【0019】パラレルデータ変換手段2は、実行アドレスシリアル情報を入力し、パラレルデータ変換手段2のアルゴリズムにしたがって実行アドレスパラレル情報を作成する。図5に実行アドレスパラレル情報の一例を示す。図5において、実行アドレスパラレル情報は、受信アドレスビット数、実行命令数、実行アドレスから構成されている。パラレルデータ変換手段2は、実行アドレスパラレル情報の受信アドレスビット数を、PCST情報のJMP〜JMPまでの間隔をカウントすることにより求める。実行アドレスパラレル情報の実行命令数は、PCST情報のJMP〜JMPまでのSEQをカウントすることにより求められる。但し、実行命令数は、レジスタ間隔分岐命令の遅延スロットのSEQは数えないため、PCST情報のJMP〜JMPまでの(SEQ数−1)とする。実行アドレスパラレル情報の実行アドレスは、PCST情報のJMP〜JMPまでのTPC情報を下位ビットよりセットし実行アドレスを求める。PCST情報が、“STL”、“SEQ”、“BRT”の場合の実行アドレスの求め方は従来のアルゴリズムと同じである。PCST情報が“STL”、“SEQ”、“BRT”の場合には、受信アドレスビット数と実行命令数は0を設定する。
【0020】次に、パラレルデータ変換手段2のアルゴリズムを、図6に示すアルゴリズムのフローチャートを参照し、図3に示す実行アドレスシリアル情報の例を用いて説明する。なお、図6に示すパラレルデータ変換手段2のアルゴリズム、以下順に説明するPCトレース変換手段3のアルゴリズムならびにジャンプラベル変換手段4のアルゴリズム内で使用しているシンボルは、図14に一括して示す。
【0021】図6において、まず最初のジャンプにより確定する実行アドレスを求め(ステップS601)、各種インデックスの初期化を行い(ステップS602)、シリアルデータの終了判定処理を行い(ステップS603)、終了している場合には、実行アドレスパラレル情報(PCPARA)の保存項目の終了コードを保存し(ステップS616)、終了していない場合には、PCST信号を判断し(ステップS604)、“JMP”でないならば“SEQ”時の実行アドレスを求め(ステップS605)、“STL”時の実行アドレスを求め(ステップS606)、“BRT”時の実行アドレスを求め(ステップS607)、それぞれ求めた後ステップS615に処理を移す。“JMP”の場合には受信アドレスビット数(BIT_index )の初期化を行い(ステップS608)、TPC信号からPCアドレス(PCADR)を、下位ビット位置より順に生成し(ステップS609)、PCST信号が“JMP”に等しいか否かを判別し(ステップS610)、等しくない場合にはPCST信号が“SEQ”に等しいか否かを判別し(ステップS611)、等しい場合には実行命令数(OP_counter)をカウントアップする(ステップS612)。一方、等しくない場合には、受信アドレスビット数をカウントアップし(ステップS613)、ステップS609に処理を移す。ステップS610において、JMPと等しい場合には、受信アドレスビット数と実行命令数とPCアドレスを、実行アドレスパラレル情報として保存し(ステップS614)、PCST情報を参照するためのインデックスをカウントアップする(ステップS615)。
【0022】図7はジャンプラベル変換手段4により作成されるジャンプラベル情報の一例を示す図である。ジャンプラベル情報は、分岐先ラベルアドレス(ADR)と、分岐先ラベルアドレスから次の間接分岐命令までの命令数(OP_NUM)とから構成される。
【0023】ジャンプラベル変換手段4は、メモリイメージ・リファレンス情報のラベルや関数の先頭アドレスから実行を始めた場合に、何命令後にレジスタ間接分岐命令(図4に示すjr1命令、jr2命令)を実行するかを計算する、SERCH_JMP関数のアルゴリズムによりジャンプラベル情報の“分岐先アドレスから次のレジスタ間接分岐命令までの命令語数”を求める。
【0024】次に、ジャンプラベル変換手段4のアルゴリズムを、図8に示すアルゴリズムのフローチャートを参照して説明する。図8において、まず各種インデックスの初期化を行い(ステップS801)、リファレンステーブルを最後まで処理したか否かを判別し(ステップS802)、最後まで処理した場合には、ジャンプラベル情報テーブルの終了コード(ENDコード)をセットする(ステップS806)。一方、最後まで終了していない場合には、命令語のカウンタ(OP_counter)をクリアして最初の分岐先アドレスをADRに設定し(ステップS803)、分岐先ジャンプ命令までの命令数を調べるSERCH_JMP関数を実行し(ステップS804)、リファレンステーブル参照用インデックスをカウントアップし(ステップS805)、ステップS802に処理を移す。
【0025】次に、SERCH_JMP関数のアルゴリズムを、図9及び図10のアルゴリズムのフローチャートを参照して説明する。図9あるいは図10において、まずSERCH_JMP関数内の変数Work_OPcounterを命令数カウンタ(OP_counter)で初期化し、変数Work_ADRを分岐先アドレス(ADR)で初期化し(ステップS901)、分岐先アドレスから30命令実行した箇所まで到達しているか否かが判定され(ステップS902)、到達している場合にはSERCH_JMP関数を呼び出した所へ戻り、到達していない場合にはWork_ADRが示すアドレスの命令語をメモリイメージ情報から取り出して設定し(ステップS903)、Work_ADR番地の命令語が“JMP”命令(検索処理)か否かを判定し(ステップS904)、JMP命令である場合には、ジャンプラベル情報テーブルに、分岐先アドレス(REFERENCE.ADR(REFER_index))と分岐先からジャンプ命令までの命令数(WORK_OP_counter )をセットし(ステップS907)、SERCH_JMP関数を呼び出した所へ戻る。一方、JMP命令でない場合には、BRT命令(条件が成立した場合に分岐先へジャンプする命令であり、この実施形態では、分岐前に遅延スロットを実行する)か否かを判定し(ステップS905)、BRT命令でない場合には、分岐先からジャンプ命令までの命令数(Work_OPcounter)をカウントアップし(ステップS906)、ステップS902に処理を移す。一方、BRT命令の場合には、分岐先からジャンプ命令までの命令数(WORK_OPcounter)をカウントアップし(ステップS908)、遅延スロットを必ず実行するBRT命令か否かを判定し(ステップS909)、遅延スロットを必ず実行するBRT命令の場合には分岐先からジャンプ命令までの命令数に1を加えた値をWork_OPcounter2 に設定し(ステップS910)、遅延スロットを実行しないBRT命令の場合には分岐先からジャンプ命令までの命令数をWork_OPcounter2 に設定し(ステップS911)、分岐成立時に分岐先アドレスをWork_ADR1に設定し(ステップS912)、分岐不成立時には分岐先アドレスをWork_ADR2に設定し(ステップS913)、BRT命令の成立時方向の分岐先からジャンプ命令までの命令数を調べるためにSERCH_JMP関数を実行し(ステップS914)、BRT命令の不成立時方向の分岐先からジャンプ命令までの命令数を調べるためにSERCH_JMP関数を実行する(ステップS915)。
【0026】このようなSERCH_JMP関数は、“ADR:分岐先アドレス”と“OPcouter:現時点の命令語数”を入力パラメータとし、分岐先アドレスからレジスタ間接分岐命令(“JMP”)までの命令数を数えてジャンプラベル情報(JMPLABEL)として格納する。この途中にレジスタ間接分岐命令以外の分岐命令(“BRT”)があった場合には、成立時、不成立時の分岐先アドレスを計算して、SERCH_JMP関数を再帰呼び出しすることにより、全分岐先のレジスタ間接分岐命令(“JMP”)までの命令数を数える。但し、分岐命令と遅延スロットを含めて最悪32命令実行すると、レジスタ間接分岐命令の分岐先の実行アドレスを完全に受信できるので、命令語数を数えるのは、分岐先アドレスから30命令実行した箇所までを対象とする。
【0027】PCトレース変換手段3は、実行アドレスパラレル情報とジャンプラベル情報を入力し、PCトレース変換手段3のアルゴリズムにしたがって実行アドレストレース情報を作成する。図11に実行アドレストレース情報の一例を示す。図11において、実行アドレストレース情報(PCTRACE)は、予測指標(FLAG)と実行アドレス(ADR)から構成される。予測指標は、アドレス復元機能を有するPCトレース変換手段3で予測した実行アドレス毎に設定する。予測指標が“0”である場合には、予測したが一致する実行アドレスが見つからなかった場合を表し、“1”である場合には、予測して一致するアドレスが1つあった場合を表し、“2”以上である場合には、予測して一致するアドレスが複数あった場合を表し、“−1”である場合には、予測なしの実行アドレスである場合を表す。
【0028】PCトレース変換手段3は、実行アドレスパラレル情報の受信アドレスビット数が、アドレスビット長(この実施形態の場合は32ビット)未満である場合に、実行アドレスパラレル情報の実行アドレスとジャンプラベル情報の分岐先アドレスを受信アドレスビット数のみ比較し、一致した場合は、実行アドレスパラレル情報の実行命令数とジャンプラベルの情報の“分岐先アドレスから次のレジスタ間接分岐命令までの命令語数”と比較する。実行アドレスも“分岐先アドレスから次のレジスタ間接分岐命令までの命令語数”も一致した個数を実行アドレストレース情報の予測指標として格納する。実行アドレスも“分岐先アドレスから次のレジスタ間接分岐命令までの命令語数”も一致した個数が複数の場合には、最初に一致した分岐先ラベルアドレスを実行アドレストレース情報の実行アドレスとして格納する。実行アドレスパラレル情報の受信アドレスビット数が、0またはアドレスビット長と一致する場合は、実行アドレスパラメータ情報の実行アドレスを実行アドレストレース情報の実行アドレスとして格納し、予測指標は−1を格納する。
【0029】次に、PCトレース変換手段3のアルゴリズムを、図5に示す実行アドレスパラレル情報の例、図7に示すジャンプラベル情報の例、ならびに図12及び図13に示すアルゴリズムのフローチャートを参照して説明する。
【0030】図12又は図13において、まず各種インデックスの初期化を行い(ステップS1201)、受信した実行アドレスと予測したアドレスが一致した個数をクリアし(ステップS1202)、受信した実行アドレスのビット数を判定し(ステップS1203)、受信した実行アドレスが情報コードのENDコードである場合には実行アドレストレース情報のデータ終了コードを保存し(ステップS1204)、受信した実行アドレスが“0”又は“32”で正常な場合には、予測指標を−1として格納し(ステップS1205)、受信アドレスが不完全な場合には、ジャンプラベル(JUMPLABEL)テーブル用インデックスをクリアし(ステップS1206)、ジャンプラベル情報の検索を判定し(ステップS1207)、終了した場合には、PCPARA、PCTRACEテーブル用のインデックスをカウントアップし(ステップS1208)、ステップS1202に処理を移す。ステップS1207の判定において検索が終了していない場合には、受信した下位アドレスと一致するアドレスを検索し(ステップS1209)、一致するものがあるか否かを判定し(ステップS1210)、一致するものがある場合には、分岐先アドレスから次のレジスタ間接分岐命令までの命令数が一致するアドレスを検索し(ステップS1211)、一致するものがあるか否かを判定し(ステップS1212)、分岐先アドレスから次の間接ジャンプ命令までの命令数が一致した個数をカウントし(ステップS1213)、最初に一致した実行アドレスがあるか否かを判別し(ステップS1214)、ある場合には最初に一致した実行アドレスのみPCTRACEテーブルへ格納し(ステップS1215)、JUMPLABELテーブル用インデックスをカウントアップし(ステップS1216)、ステップS1207に処理を移す。
【0031】表示手段5は、実行アドレストレース情報の実行アドレスを表示装置130に表示する。表示アドレスは、予測指標の値に応じて色替え表示する。表示例を以下に示す。
【0032】
予測指標=−1 :青(正常)
予測指標=1 :黄色(予測した結果が正しい確率が高い)
予測指標=2〜31:赤(予測した結果が複数あるので、正しい確率が低い)
予測指標=0 :赤(予測不可能の文字を赤で表示)
このように、上記実施形態においては、マイクロプロセッサ(MPU)に内蔵したデバッグ専用回路からシリアル転送されたアプリケーションプログラムの実行アドレス情報(PCトレースのシリアルデータ)をICE装置が完全に受信できなかった場合に、アプリケーションプログラムのメモリイメージ・リファレンス情報を利用して、完全に受信できなかった分岐先実行アドレスを復元することができる。また、予測復元した分岐先実行アドレスを予測指標に応じて色分けして表示することができる。
【0033】
【発明の効果】以上説明したように、この発明によれば、デバッグ専用回路とICE装置間をシリアル伝送にて接続することにより発生する、レジスタ間接分岐命令が頻繁に実行される場合の分岐先アドレスを特定できない場合に、分岐先アドレスを予測して復元することができる。
【出願人】 【識別番号】000003078
【氏名又は名称】株式会社東芝
【出願日】 平成12年9月26日(2000.9.26)
【代理人】 【識別番号】100083806
【弁理士】
【氏名又は名称】三好 秀和 (外7名)
【公開番号】 特開2002−108650(P2002−108650A)
【公開日】 平成14年4月12日(2002.4.12)
【出願番号】 特願2000−292789(P2000−292789)