JPH1055289A - デバッグ情報生成回路、およびそれを用いた情報処理装置 - Google Patents

デバッグ情報生成回路、およびそれを用いた情報処理装置

Info

Publication number
JPH1055289A
JPH1055289A JP8212522A JP21252296A JPH1055289A JP H1055289 A JPH1055289 A JP H1055289A JP 8212522 A JP8212522 A JP 8212522A JP 21252296 A JP21252296 A JP 21252296A JP H1055289 A JPH1055289 A JP H1055289A
Authority
JP
Japan
Prior art keywords
instruction
debug information
value
output
execution
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.)
Pending
Application number
JP8212522A
Other languages
English (en)
Inventor
Hisakazu Sato
尚和 佐藤
Toyohiko Yoshida
豊彦 吉田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Mitsubishi Electric Corp
Original Assignee
Mitsubishi Electric Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Mitsubishi Electric Corp filed Critical Mitsubishi Electric Corp
Priority to JP8212522A priority Critical patent/JPH1055289A/ja
Publication of JPH1055289A publication Critical patent/JPH1055289A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Debugging And Monitoring (AREA)

Abstract

(57)【要約】 【課題】 新しく命令の実行が開始される都度、そのE
PC値を出力してPC値トレース用メモリに格納してお
く必要があり、大容量のメモリが必要となるという課題
があった。 【解決手段】 実行された命令のPC値が直前の命令の
PC値と連続していない場合、あるいは実行された命令
の数を計数している命令数カウンタ5による命令数カウ
ント値6が所定の比較値25に達した場合に、当該命令
数カウンタ5の命令数カウント値6とそのときの命令の
EPC値1とによって生成されるデバッグ情報108の
出力を制御するとともに、デバッグ情報108の出力終
了後、命令数カウンタ5の初期化を行う出力制御部7を
設けたものである。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】この発明は、プログラムのデ
バッグを行うに際して、実行した命令とその順序を復元
するためにPC値をトレースするためのデバッグ情報を
生成・出力するデバッグ情報生成回路、および当該デバ
ッグ情報生成回路を用いた情報処理装置に関するもので
ある。
【0002】
【従来の技術】マイクロプロセッサなどの情報処理装置
においてプログラムのデバッグを行う場合に、実行され
た命令とその実行順序を復元すること、すなわち実行さ
れた命令のプログラムカウンタ値(以下プログラムカウ
ンタをPC、プログラムカウンタ値をPC値という)を
時間軸に沿って復元することはきわめて重要なことであ
る。処理がパイプライン化されていない情報処理装置な
どでは、命令フェッチの様子をモニタすることにより上
記目的を達成することができた。しかしながら、パイプ
ラインマシンにおいては、フェッチされた命令が必ずし
も実行されるとは限らないため、命令フェッチの様子を
モニタしていたのでは上記目的を達成することができな
い。そのため、通常のパイプラインプロセッサでは、P
C相対の分岐命令実行等のために、現在実行中の命令の
PC値(以降EPC値という)を保持しており、新しく
命令の実行を開始する度にEPC値を出力して、これを
PC値トレース用メモリに格納しておくことにより、実
行された命令のPC値を復元することを可能としてい
る。
【0003】なお、このような従来のデバッグ情報生成
回路に関連した記載のある文献としては、例えば、特開
昭62−200439号公報、特開昭52−77550
号公報、特開昭62−200435号公報などがある。
【0004】
【発明が解決しようとする課題】従来のデバッグ情報生
成回路は以上のように構成されているので、プログラム
のデバッグを行うために、新しく命令の実行が開始され
る都度、そのEPC値を出力してそれをPC値トレース
用メモリに格納しておく必要があるが、実用的なプログ
ラムでは実行される命令ステップは膨大な数となり、そ
のため、極めて大きな容量のメモリが必要となる。しか
しながら、高速で動作する情報処理装置の実行サイクル
毎にデータの書き込みが可能な程度のメモリ装置は高価
なものであり、大きな容量のメモリを実装することは経
済的な負担が著しく増大するという課題があった。
【0005】この発明は上記のような課題を解決するた
めになされたもので、プログラムデバッグのためのトレ
ースデータを圧縮して、それを格納するためのメモリの
容量を削減し、経済的に有利なデバッグ情報生成回路、
およびそれを用いた情報処理装置を得ることを目的とす
る。
【0006】
【課題を解決するための手段】請求項1記載の発明に係
るデバッグ情報生成回路は、実行された命令のPC値が
直前の命令のPC値と連続していない場合に、実行され
た命令の数を計数している命令数カウンタの命令数カウ
ント値とそのときの命令のEPC値とによって生成され
るデバッグ情報の出力を制御し、出力終了後、命令数カ
ウンタの初期化を行う出力制御部を設けたものである。
【0007】請求項2記載の発明に係るデバッグ情報生
成回路は、デバッグ情報の出力制御を、命令数カウンタ
による命令数カウント値が所定の比較値に達した場合に
も実行するようにしたものである。
【0008】請求項3記載の発明に係るデバッグ情報生
成回路は、命令数カウンタのとり得る最大値を、当該命
令数カウンタの命令数カウント値と比較される比較値と
して用いたものである。
【0009】請求項4記載の発明に係る情報処理装置
は、当該情報処理装置自身に与えられる命令の実行によ
って引き起こされる記憶手段へのアクセスを、デバッグ
情報生成回路からのデバッグ情報の出力が抑止されてい
る期間にのみ受け入れる制御切替手段を有するものであ
る。
【0010】
【発明の実施の形態】以下、この発明の実施の一形態を
説明する。 実施の形態1.図1はこの発明の実施の形態1によるデ
バッグ情報生成回路の構成を示すブロック図であり、こ
のデバッグ情報生成回路は、マイクロプロセッサなどに
よる情報処理装置の図示を省略した中央演算処理装置
(以下CPUという)に付加されて、PC値のトレース
を行うためのデバッグ情報を出力するものである。図に
おいて、1はCPUで現在実行している命令のPC値で
あるEPC値であり、2はCPUが新しい命令の実行を
開始したことを示す命令の実行開始信号である。3は分
岐命令の実行や割り込みなどの割り込み例外(以下EI
Tという)の処理のためにEITベクタへのジャンプ等
が生じた場合にCPUより出力されて、CPUで実行さ
れているプログラムにおいて命令シーケンスが変更され
たことを示す、命令シーケンスの変更信号であり、この
命令シーケンスの変更信号3が出力された場合、次に実
行される命令は新しいシーケンスの先頭となる。4は処
理動作の同期をとるためのクロック信号である。
【0011】また、5は実行された命令の数を計数する
命令数カウンタ、6はこの命令数カウンタ5によって計
数された命令数カウント値であり、この実施の形態1で
はこの命令数カウンタ5として8ビットカウンタを仮定
して説明を行う。この命令数カウンタ5内のCEはCP
Uからの命令の実行開始信号2が入力されるカウントイ
ネーブル端子、Tはクロック信号4が入力されるクロッ
ク入力端子であり、カウントイネーブル端子CEにイネ
ーブルが与えられている場合に、クロック端子Tに入力
されたクロック信号4の立ち上がりエッジに同期して命
令数カウント値6を更新する。なお、カウントイネーブ
ル端子CEがディセーブルの場合には、クロック信号4
が与えられても命令数カウント値6を更新しない。ま
た、Rはこの命令数カウンタ5の初期化を行うためのリ
セット端子であり、クロック信号4の立ち上がりに同期
して命令数カウント値6を初期化する。ここで、カウン
トイネーブル端子CEとリセット端子Rとに同時に信号
が与えられた場合には、リセット端子Rの制御を優先す
る。なお、ここでは図示していないが、このデバッグ情
報生成回路が用いられている情報処理装置のシステム全
体に対するリセット信号が与えられた場合にも、この命
令数カウンタ5は初期化される。この命令数カウンタ5
から出力される命令数カウント値6はCPUからのEP
C値1とともに、デバッグ情報として出力される。
【0012】7はCPUより命令の実行開始信号2と命
令シーケンスの変更信号3が与えられた場合、あるいは
命令数カウンタ5からの命令数カウント値6が所定の値
に達した場合に、EPC値1と命令数カウント値6とに
よるデバッグ情報を出力するためのデバッグ情報出力ス
トローブを生成する出力制御部であり、8はこの出力制
御部7より出力されるデバッグ情報出力ストローブであ
る。なお、このデバッグ情報出力ストローブ8は、デバ
ッグ情報の出力後に命令数カウンタ5を初期化するた
め、そのリセット端子Rにも入力されている。9はこの
出力制御部7からのデバッグ情報出力ストローブ8を受
け取って、デバッグ情報を出力する度にデバッグ情報書
き込みアドレスのインクリメントを行うアドレス生成部
であり、10はこのアドレス生成部9より出力されるデ
バッグ情報書き込みアドレスである。
【0013】次に動作について説明する。ここで、この
実施の形態1によるデバッグ情報生成回路において、E
PC値1と命令数カウント値6とによるデバッグ情報が
出力されるのは、次の2つの場合である。
【0014】すなわち、その一つは、分岐命令の実行や
割り込み等のEIT処理の発生などによって命令シーケ
ンスが変更になった場合であり、シーケンス変更後、最
初の命令が実行されたときにデバッグ情報を出力する。
この時のデバッグ情報は、シーケンス変更後にどの命令
に実行が移ったか、前回のシーケンス変更から今回のシ
ーケンス変更までに何個の命令を実行したかを示したも
のである。最近接のシーケンス変更の間ではPC値のイ
ンクリメントとともに命令実行が進められたことが保証
されているので、実行された命令の個数が判明すれば、
この間に実行された命令のPC値を復元することができ
る。
【0015】また、他の一つは、命令数カウンタ5が所
定の比較値に達したときである。この場合、現在実行中
の命令が、あたかもシーケンス変更後の最初の命令であ
るかのごとく扱い、デバッグ情報を出力する。この場合
にも、隣接する2回のデバッグ情報の間では、PC値の
インクリメントとともに命令実行が進められたことが保
証されているので、実行された命令の個数より実行され
た命令のPC値を復元することができる。この処理は、
シーケンス変更が極めて少ない場合に命令数カウンタ5
がオーバーフローして、正しい実行状態が復元できなく
なるのを防止するためのものである。
【0016】図2(a)〜図4(b)は、EPC値1、
命令の実行開始信号2、命令シーケンスの変更信号3の
様子をいくつかの例について示した説明図である。な
お、ここでは、以下に示す5段のパイプラインマシンを
仮定している。 第1段(Iステージ):命令フェッチを行う 第2段(Dステージ):命令デコードを行う 第3段(Eステージ):命令の実行を行う 第4段(Mステージ):メモリアクセスを行う 第5段(Wステージ):ロードオペランドの書き込みを
行う
【0017】また、ここで例示した命令は次のような処
理を行うものとする。 ADD ra,rb レジスタraの値とレジスタrb
の値を加算して結果をレジスタraに格納する。1サイ
クルで実行を完了する。 SUB ra,rb レジスタraの値からレジスタr
bの値を減算して結果をレジスタraに格納する。1サ
イクルで実行を完了する。 DIV ra,rb レジスタraの値を被除数、レジ
スタrbの値を除数として除算を行い、結果をレジスタ
raに格納する。実行に2サイクル以上を要する。 LD ra,rb レジスタrbの値をアドレスとし
てメモリからデータのロードを行い、ロード結果をレジ
スタraに格納する。 ST ra,rb レジスタrbの値をアドレスとし
て、レジスタraの値をメモリに書き込む。 JMP dstn 本命令の実行完了後、dstnで
示される命令を実行する。1サイクルで実行を完了す
る。
【0018】以下、図2(a)〜図4(b)に示すそれ
ぞれの場合における、EPC値1、命令の実行開始信号
2、および命令シーケンスの変更信号3の様子について
順番に説明する。図2(a)は通常の加算命令が3つ連
続した場合を示したものである。この場合、毎サイクル
新しい加算命令が実行され、EPC値1は各加算命令の
実行サイクル(Eステージ)においてそれぞれのPC値
となり、それぞれの加算命令の実行サイクル毎に命令の
実行開始信号2が出力される。なお、この場合、命令シ
ーケンスの変更信号3は出力されない。
【0019】図2(b)は1命令の実行に複数サイクル
を要する除算命令がある場合を示したものである。この
場合、この除算命令に続く各加算命令は、当該除算命令
の全ての実行サイクルが終了するまで実行待ちの状態と
なる。したがって、除算命令の最初の実行サイクルにお
いてEPC値1は当該除算命令のPC値となって、この
除算命令の全実行サイクルが終了するまでその値が保持
され、その後、各加算命令の実行サイクル毎にそれぞれ
のPC値となる。一方、命令の実行開始信号2は除算命
令の最初の実行サイクルで出力されて2サイクル目以降
の実行サイクルでは出力されず、この除算命令の実行サ
イクルが完了すると、各加算命令の実行サイクル毎に出
力される。なお、この場合も命令シーケンスの変更信号
3は出力されない。
【0020】図3(a)はロード命令等のメモリアクセ
スを行う命令が連続し、かつ最初のメモリアクセスが1
サイクルで終了しなかった場合を示したものである。こ
の場合、図中にPC値が@(N+1)で示される2番目
のロード命令のメモリアクセスサイクル(Mステージ)
は、@(N)で示される最初のロード命令の全てのメモ
リアクセスサイクルが終了するまで実行待ちの状態とな
り、それに続く加算命令も2番目のロード命令のメモリ
アクセスサイクルが開始されるまで実行待ちの状態とな
る。したがって、命令の実行開始信号2は最初のロード
命令の実行サイクル、および2番目のロード命令の最初
の実行サイクルで出力された後、加算命令の実行サイク
ルが開始されるまで出力されない。また、EPC値1は
2番目のロード命令の実行サイクルにて当該命令のPC
値となると、次の加算命令の実行サイクルが開始される
までその値が保持される。なお、この場合も命令シーケ
ンスの変更信号3は出力されない。
【0021】図3(b)は図中にPC値が@(N+1)
で示される加算命令が、@(N)で示される完了してい
ないロード命令のデスティネーションレジスタr1を参
照しようとして実行を待たされている場合を示したもの
である。この場合、@(N)のロード命令の実行サイク
ルで命令の実行開始信号2が出力され、EPC値1が当
該ロード命令のPC値となる。ここで、このロード命令
に続く@(N+1)の加算命令は、参照するデスティネ
ーションレジスタr1にデータがロードされるまで実行
待ち状態となっているので、この実行を待たされている
間は命令の実行開始信号2は出力されず、EPC値1も
そのままの値を保持する。なお、この場合も命令シーケ
ンスの変更信号3は出力されない。
【0022】図3(c)はノーディレイドの分岐命令が
実行された場合について示したものである。この場合、
図中にPC値が@(N)で示される分岐命令の実行サイ
クルが終了すると、それに続く@(N+1)、@(N+
2)で示される加算命令の命令デコードサイクル(Dス
テージ)や命令フェッチサイクル(Iステージ)は行わ
れず、@(M)で示される書き込み命令の命令フェッ
チ、さらには@(M+1)で示される減算命令の命令フ
ェッチが行われる。なお、この分岐命令の実行サイクル
の開始から終了までの間、命令シーケンスの変更信号3
および命令の実行開始信号2が出力される。一方、この
分岐命令の実行サイクルの開始時点でEPC値1が当該
ロード命令のPC値となり、ストア命令の実行サイクル
が開始されるまでその値が保持される。
【0023】図4(a)は分岐によるパイプラインフラ
ッシュをなくした特殊な分岐が実行された場合について
示したものであり、図5に示す機構によって実現される
ものである。図5において、11はPCであり、12は
分岐先命令アドレスをこのPC11に設定するための分
岐先命令アドレスバスである。13は分岐先命令を指定
する分岐先命令レジスタ、14は分岐元命令を指定する
分岐元命令レジスタであり、15はこの分岐元命令レジ
スタ14の値とPC11のPC値とを比較する比較器で
ある。16は分岐が生じない場合にPC値をインクリメ
ントするインクリメンタであり、17はPC11より命
令フェッチを行う際の命令のアドレスが出力される命令
アドレスバスである。
【0024】なお、この図5には図示していないが、こ
こで示す特殊な分岐の実行をイネーブルとするか否かを
指定する制御ビットがプロセッサ・ステータス・ワード
(以下PSWという)内に備えられているものとする。
この制御ビットが真のときに比較器15の比較結果が真
であれば、分岐先命令レジスタ13の値を分岐先命令ア
ドレスバス12に出力し、PC11は現在の命令フェッ
チが完了した後、上記分岐先命令アドレスバス12の値
を取り込む。すなわち、命令フェッチの段階で実行すべ
き命令のシーケンス変更を行うものである。図4(a)
においては、EPC値1が@(N)の加算命令が分岐元
命令レジスタ14と一致した場合を示したものである。
特殊な分岐が実行された場合には、対象となった分岐元
命令に特定のフラグをセットしておけば、このフラグを
参照することによってEPC値1が@(N)の加算命令
の実行を開始したときに、命令シーケンスの変更信号3
を出力することができる。
【0025】図4(b)は割り込みやリセットなど(以
下割り込みという)が生じた場合について示したもので
あり、この場合、当該割り込みは図中にPC値が@
(N)で示される加算命令の実行サイクルにおいて検出
されたものとする。割り込みが検出されると、最初の加
算命令に続く@(N+1)および@(N+2)で示され
る加算命令の命令デコードサイクルや命令フェッチサイ
クルは行われず、それらが行われるサイクルにおいてそ
の割り込みのEIT処理が実行される。したがって、最
初の加算命令の実行サイクルの開始時点でEPC値1が
当該命令のPC値となり、命令の実行開始信号2が出力
される。なお、上記割り込みのEIT処理では、EIT
要求を検出した次のサイクルでEITハンドラの先頭番
地(EITベクタ)の生成を行い、さらに次のサイクル
でEITベクタをPCにセットする。このEITベクタ
のPCへのセットと同時に命令シーケンスの変更信号3
が出力される。その後、PCにセットされたEITベク
タによって、@(M)の書き込み命令の命令フェッチが
行われる。なお、この書き込み命令の実行サイクルが開
始されるまで、命令の実行開始信号2は出力されず、E
PC値1は最初の加算命令のPC値をそのまま保持し続
ける。
【0026】次に、このような命令の実行開始信号2お
よび命令シーケンスの変更信号3を受けた出力制御部7
の動作について説明する。ここで、図6は、この出力制
御部7の構成例を示したブロック図である。図におい
て、21は1ビットのレジスタ、22はこのレジスタ2
1の蓄積信号、23は論理ゲートであり、論理ゲート2
3の出力はレジスタ21に蓄えられ、論理ゲート23は
このレジスタ21の蓄積信号22および命令の実行開始
信号2と、命令シーケンスの変更信号3の論理演算結果
をレジスタ21に入力している。また、24は比較器で
あり、25はこの比較器24によって命令数カウント値
6が比較される所定の比較値、26はこの比較器24か
ら出力される一致信号である。27は命令の実行開始信
号2に同期して、レジスタ21の蓄積信号22もしくは
比較器24の一致信号26をデバッグ情報出力ストロー
ブ8として出力する論理ゲートである。
【0027】次に動作について説明する。命令シーケン
スの変更信号3が与えられると論理ゲート23の出力は
アサートされ、それがレジスタ21に蓄積されてその蓄
積信号22は真となる。また、レジスタ21の蓄積信号
22が真であれば、命令の実行開始信号2が与えられて
いない状態で論理ゲート23の出力はアサートされる。
したがって、レジスタ21の蓄積信号22は一旦真にな
ると、次のサイクル以降において命令の実行開始信号2
がアサートされるまでその値を保持する。命令の実行開
始信号2がアサートされると、レジスタ21の蓄積信号
22は論理ゲート27よりデバッグ情報出力ストローブ
8として出力される。この命令の実行開始信号2のアサ
ートにより、論理ゲート23の出力はアサートされなく
なり、レジスタ21の蓄積信号22は偽となる。なお、
この状態は、次に命令シーケンスの変更信号3が与えら
れるまで保持される。
【0028】一方、比較器24は命令数カウンタ5から
の命令数カウント値6をあらかじめ設定された所定の比
較値25と比較している。命令数カウント値6が比較値
25と等しくなると比較器24は一致信号26を出力
し、この一致信号26は論理ゲート27に送られる。論
理ゲート27は命令の実行開始信号2がアサートされる
と、その一致信号26をデバッグ情報出力ストローブ8
として出力する。なお、この処理は命令数カウンタ5の
オーバーフローによってPC値を復元するために必要な
情報が失われることを防ぐものである。したがって、比
較器24で命令数カウント値6と比較される比較値25
には、命令数カウンタ5の最大値を設定しておけばよ
い。この実施の形態1では命令数カウンタ5として8ビ
ットカウンタを想定しているので、比較値25には最大
値255が設定されているものとする。このようにする
ことにより、命令数カウンタ5がオーバーフローする直
前にデバッグ情報が出力されるようになるため、比較器
24の一致信号26によるデバッグ情報の出力は最少限
に抑えることができ、デバッグ情報格納用のメモリの容
量をより削減することが可能となる。もちろん、これ以
外の値を設定することも可能であり、別途用意したレジ
スタなどの値を参照することにより、比較値25を変更
可能とすることもできる。
【0029】次に、命令数カウンタ5、出力制御部7お
よびアドレス生成部9による当該デバッグ情報生成回路
の動作シーケンスを図7に示す。図7(a)はEPC値
1が“N+3”である命令が分岐命令であった場合を示
している。この場合には、EPC値1が“N+3”の命
令が分岐命令であるので、そのとき命令の実行開始信号
2とともに命令シーケンスの変更信号3もアサートされ
る。したがって、その分岐先の命令であるEPC値1が
“M”の命令の実行開始とともに、出力制御部7より出
力されるデバッグ情報出力ストローブ8がアサートさ
れ、これによってそのときのEPC値1と命令数カウン
ト値6によるデバッグ情報が出力される。なお、命令数
カウンタ5は各サイクルにおける命令の実行開始信号2
によってその命令数カウント値6をインクリメントして
おり、このEPC値1が“M”の命令の実行が開始され
てデバッグ情報出力ストローブ8がアサートされると、
命令数カウンタ5はリセットされてその命令数カウント
値6が“0”となり、アドレス生成部9より出力される
デバッグ情報書き込みアドレス10がインクリメントさ
れる。
【0030】図7(b)はEPC値1が“M+3”であ
る命令が分岐命令であり、かつ分岐先のEPC値1が
“L”の命令もまた分岐命令であった場合について示し
ている。この場合、EPC値1が“M+3”の命令が分
岐命令であるので、命令の実行開始信号2と命令シーケ
ンスの変更信号3がアサートされ、その分岐先の命令で
あるEPC値1が“L”の命令の実行開始とともに出力
制御部7より出力されるデバッグ情報出力ストローブ8
がアサートされてデバッグ情報が出力される。この場合
にはさらに、分岐先のEPC値1が“L”の命令も分岐
命令であるので、命令の実行開始信号2と命令シーケン
スの変更信号3がアサートされ、その分岐先の命令であ
るEPC値1が“K”の命令の実行開始とともにデバッ
グ情報出力ストローブ8が再度アサートされてデバッグ
情報が出力される。このEPC値1が“L”である命令
および“K”である命令の実行が開始されてデバッグ情
報出力ストローブ8がアサートされると、アドレス生成
部9からのデバッグ情報書き込みアドレス10はインク
リメントされ、命令数カウンタ5からの命令数カウント
値6はリセットされる。したがって、EPC値1が
“K”の命令の実行開始とともに出力されるデバッグ情
報においては、その命令数カウント値6に“0”が出力
される。これはEPC値1が“L”の命令と“K”の命
令の間では何も命令が実行されなかったことを示してい
る。
【0031】図7(c)はEPC値1が“K”の命令を
実行してから、255個以上の命令を実行してもその間
になんらシーケンスの変更が無かった場合について示し
ている。この場合、命令数カウンタ5は各サイクル毎に
命令の実行開始信号2にしたがって命令数カウント値6
をインクリメントしており、命令数カウント値6が“2
55”になると同時に出力制御部7はデバッグ情報出力
ストローブ8をアサートする。このデバッグ情報出力ス
トローブ8のアサートによってデバッグ情報が出力され
るとともに、命令数カウンタ5はリセットされてその命
令数カウント値6が“0”となり、アドレス生成部9よ
り出力されるデバッグ情報書き込みアドレス10がイン
クリメントされる。
【0032】次に、このようにしてデバッグ情報生成回
路より出力されたデバッグ情報のメモリへの格納と、メ
モリに格納されたデバッグ情報から実際の命令実行順序
の復元について説明する。
【0033】図8は図7(a)〜(c)に示した動作シ
ーケンスによって生成されたデバッグ情報が書き込まれ
たメモリの様子を示した説明図である。図示のように、
図7(a)に示したEPC値1が“M”の命令が実行さ
れた時には、命令数カウント値6が“C+3”であり、
デバッグ情報書き込みアドレス10が“n”であるの
で、メモリのアドレス“n”のEPC値のフィールドに
は“M”、命令数カウント値のフィールドには“C+
3”がそれぞれ格納される。また、図7(b)に示すE
PC値1が“L”の命令実行時には、命令数カウント値
6が“3”、デバッグ情報書き込みアドレス10が“n
+1”、“K”の命令実行時には命令数カウント値6が
“0”、デバッグ情報書き込みアドレス10が“n+
2”であるので、メモリのアドレス“n+1”のEPC
値のフィールドには“L”、命令数カウント値のフィー
ルドには“3”が格納され、アドレス“n+2”のEP
C値のフィールドには“K”、命令数カウント値のフィ
ールドには“0”が格納される。同様にして、図7
(c)に示すEPC値1が“K+256”の命令実行時
には、命令数カウント値6が“255”、デバッグ情報
書き込みアドレス10が“n+3”であるので、メモリ
のアドレス“n+3”のEPC値のフィールドには“K
+256”が、命令数カウント値のフィールドには“2
55”が格納される。
【0034】図9はこの図8に示したメモリの格納情報
に基づいて、実行された命令のPC値を復元した結果を
示す説明図である。図示のように、アドレス“n”に格
納されたEPC値によって実行された命令のPC値
“M”を復元し、アドレス“n+1”に格納された命令
数カウント値よりその後に3つの命令が実行されたこと
を知り、実行された命令のPC値“M+1”〜“M+
3”の復元を行う。次にアドレス“n+1”に格納され
たEPC値によって実行された命令のPC値“L”を復
元し、アドレス“n+2”に格納された命令数カウント
値よりその後1つの命令も実行されずに命令シーケンス
が変更されたことを知る。次にアドレス“n+2”に格
納されたEPC値によって実行された命令のPC値
“K”を復元し、アドレス“n+3”に格納された命令
数カウント値よりその後に255命令が実行されたこと
を知り、実行された命令のPC値“K+1”〜“K+2
55”の復元を行う。このようにして、隣接するアドレ
スに格納されているEPC値と命令数カウント値に基づ
いて、実行された命令のPC値を実行された順番通りに
復元することが可能となる。
【0035】以上のように、この実施の形態1によれ
ば、命令シーケンスに変更が生じた場合、および命令数
カウンタ5の命令カウント値6が所定の比較値25に達
した場合にのみ、EPC値1と命令数カウント値6から
なるデバッグ情報を出力するようにしているので、プロ
グラムデバッグのためのトレースデータを圧縮すること
ができ、それを格納するためのメモリを削減することが
可能となる。例えば、PCのビットサイズが32ビット
で、命令数カウンタ5が8ビットの場合を想定すると、
命令実行の度にEPC値1を記録するような従来の方式
によると、1000命令の実行履歴を記録するためには
32000ビットのメモリ容量を必要とする。しかしな
がら、この実施の形態1によるデバッグ情報生成回路を
用いれば、2命令に1回ずつの分岐実行を仮定したとし
ても、40ビットのデバッグ情報を500回格納するだ
けであり、20000ビットのメモリ容量で事足りる。
分岐実行が10回に1回の割合であれば、わずかに40
00ビットの容量しか必要とせず、その効果は容易に理
解できる。
【0036】また、命令数カウンタ5のオーバーフロー
によってPC値復元のための情報が失われることを防止
することもでき、さらに、頻繁に分岐が発生するような
プログラムしか実行しない場合には、命令数カウンタ5
のビット幅を小さくすることにより、さらにメモリ使用
量を小さくすることも可能である。
【0037】実施の形態2.上記実施の形態1において
は、プログラムのデバッグを行う際に、実行した命令と
その実行順序を復元するためのPC値トレース用のデバ
ッグ情報を生成して出力するデバッグ情報生成回路につ
いて説明したが、この実施の形態2においては、そのよ
うなデバッグ情報生成回路を用いた情報処理装置につい
て説明する。
【0038】ここで、図8に示したようなメモリに格納
されたデータを如何にして読み出すかということに関し
て、この情報処理装置のシステム全体を管理するホスト
コンピュータにその任を負わせるという方法が考えられ
る。これについては図示しないが、デバッグ情報を出力
するマイクロプロセッサなどによるデバッグ情報生成回
路と、デバッグ情報を格納するためのメモリ装置(以下
デバッグ情報メモリという)の間にバス分離装置を挿入
しておき、これをホストコンピュータで制御すれば容易
に実現できる。しかしながら、情報処理装置自身のCP
Uが自らのデバッグ情報を読み出して処理を行うか、ま
たは別のメモリ装置に値を転送することができればより
容易なシステム構成が可能となる。
【0039】図10はそのような処理を実現するための
情報処理装置の構成を示したブロック図であり、同一部
分には図1と同一符号を付してその説明を省略する。図
において、101は図1にその構成を示したデバッグ情
報生成回路であり、102はデバッグを行うべきプログ
ラムが実行されるCPU、103はデバッグ情報生成回
路101からのデバッグ情報の出力を抑止する機能と、
このデバッグ情報の出力と当該情報処理装置自身に与え
られる命令の実行によって引き起こされる記憶手段の読
み出しの切り替えを行う機能とを備え、デバッグ情報の
出力が抑止されている期間のみ、当該情報処理装置自身
に与えられる命令の実行によって引き起こされる記憶手
段へのアクセスを受け入れる制御切替手段としてのバス
インタフェースである。また、104はデバッグ情報を
格納するための前記記憶手段としてのデバッグ情報メモ
リであり、105は通常のプログラム処理で用いられる
ユーザーが使用可能な外部メモリである。
【0040】106は図1に示される命令の実行開始信
号2と命令シーケンスの変更信号3を統合して示した、
CPU102からデバッグ情報生成回路101に送られ
る制御信号である。107はCPU102からバスイン
タフェース103に出力される、デバッグ情報の出力を
行うか否かを示すデバッグ出力制御信号であり、PSW
等の制御ビットの値を出力したものである。108はデ
バッグ情報生成回路101からバスインタフェース10
3に送られる、図1に示されたEPC値1と命令数カウ
ント値6とによって生成されるデバッグ情報である。1
09はCPU102がデバッグ情報メモリ104にアク
セスを行う際のアドレスバスであり、110は同じくC
PU102がデバッグ情報メモリ104にアクセスを行
う際のデータバスである。
【0041】111はバスインタフェース103とデバ
ッグ情報メモリ104との間のデバッグ情報データバ
ス、112は同じくデバッグ情報アドレスバスであり、
113はデバッグ情報メモリ104へのデバッグ情報書
き込みストローブ、114はデバッグ情報メモリ104
への出力許可信号である。115はバスインタフェース
103と外部メモリ105との間の外部メモリデータバ
ス、116は同じく外部メモリアドレスバスであり、1
17は外部メモリ105への書き込みストローブ、11
8は外部メモリ105への出力許可信号である。なお、
CPU102とバスインタフェース103との間、およ
び外部メモリ105へのアクセス用の制御信号について
は、この実施の形態2の説明とは直接関係がないのでこ
こではその説明を省略する。
【0042】次に動作について説明する。なお、ここで
は、制御切替手段としてのバスインタフェース103の
動作について、デバッグ情報メモリ104の制御に的を
絞って説明する。
【0043】CPU102からバスインタフェース10
3へ送られるデバッグ出力制御信号107が真である場
合には、バスインタフェース103はデバッグ情報生成
回路101からのデバッグ情報108をデバッグ情報デ
ータバス111に、デバッグ情報書き込みアドレス10
をデバッグ情報アドレスバス112に、デバッグ情報出
力ストローブ8をデバッグ情報書き込みストローブ11
3にそれぞれ出力する。これによって、デバッグ情報生
成回路101より出力されたデバッグ情報108が、デ
バッグ情報メモリ104の当該デバッグ情報生成回路1
01の出力するデバッグ情報書き込みアドレス10で指
定されるアドレスに格納される。なお、この時にはデバ
ッグ情報メモリ104への出力許可信号114は偽であ
り、CPU102によるデバッグ情報メモリ104から
のデバッグ情報の読み出しは行われない。
【0044】一方、デバッグ出力制御信号107が偽で
あれば、バスインタフェース103はデバッグ情報メモ
リ104への出力許可信号114を真、デバッグ情報書
き込みストローブ113を偽とする。その時、CPU1
02からアドレスバス109に与えられたアドレスがデ
バッグ情報アドレスバス112に出力されると、デバッ
グ情報データバス111にはこのデバッグ情報アドレス
バス112によって指定されたアドレスに格納されてい
たデバッグ情報がデバッグ情報メモリ104より読み出
されて出力される。すなわち、この状態において、デバ
ッグ情報メモリ104はCPU102によりアクセスさ
れる読み出し専用メモリとして動作する。ここでは、C
PU102のアクセスとしてのデバッグ情報メモリ10
4への書き込みはサポートしないものとする。また、デ
バッグ出力制御信号107が真の場合にCPU102が
デバッグ情報メモリ104のアクセスを要求した場合、
この要求は無視される。
【0045】この図10に示した実施の形態2による情
報処理装置のアドレスマップを図11に示しておく。図
示の例では、論理アドレス“0000 0000”以下
に内部メモリ空間が、論理アドレス“0100 000
0”以下に外部メモリ105に相当する外部メモリ空間
が割り当てられてユーザに開放されている。また論理ア
ドレス“8000 0000”以下はIO空間に割り当
てられ、論理アドレス“8100 0000”以下はシ
ステムに予約され、論理アドレス“FF000000”
以下はデバッグ情報メモリ104に相当するデバッグ情
報メモリ空間に割り当てられて、システム予約空間とな
っている。図1に示したデバッグ情報生成回路の命令数
カウンタ5、アドレス生成部9をそのIO空間に配置し
ておき、これを読み書きできるようにしておけば、デバ
ッグ情報108の解析が容易となる。なお、このような
処理は極めて常識的なことなので、ここではそれについ
ての説明は特には行わない。
【0046】ここで、デバッグ情報108はシーケンス
変更があった場合にのみデバッグ情報生成回路101よ
り出力されるということは、何サイクルにもわたって連
続してデバッグ情報108が出力されることが無いとい
うことを意味している。この場合には、図4(a)に示
したPC値が@(N)の命令が別の分岐命令によって呼
び出された命令であった場合にのみ、デバッグ情報生成
回路101からは2サイクル連続してデバッグ情報10
8が出力される。なお、PC値が@(M)の命令がさら
に分岐命令であったとしても、分岐先命令の実行は2サ
イクル以上後のことになる。すなわち、デバッグ情報1
08の出力は、最大の頻度でも2サイクル連続であり、
またその後には必ず2サイクル以上出力されない期間が
存在することになる。したがって、わずかに2エントリ
を備えたキューを準備すれば、命令実行の2分の1の速
度でデバッグ情報108を出力することが可能となる。
このようにすれば、デバッグ情報108を格納するため
のメモリ装置がより低速のものでも事足りるようになる
ため、さらに安価なシステムを構築することが可能とな
る。
【0047】
【発明の効果】以上のように、請求項1記載の発明によ
れば、実行された命令のPC値が直前の命令のPC値と
連続していない場合に、命令数カウント値とそのときの
命令のEPC値とからなるデバッグ情報を生成して出力
するように構成したので、プログラムデバッグのために
新しく命令の実行が開始される都度そのEPC値をメモ
リに格納しておく必要がなくなって、プログラムデバッ
グのためのトレースデータを圧縮することが可能とな
り、それらを格納しておくためのメモリの容量を削減す
ることができる効果がある。
【0048】請求項2記載の発明によれば、命令数カウ
ント値が所定の比較値になった場合にもデバッグ情報を
出力するように構成したので、分岐などによる命令シー
ケンスの変更があまりないようなプログラムをデバッグ
する場合でも、命令カウンタがオーバーフローして、正
確なトレースデータが復元できなくなるようなことが防
止できる効果がある。
【0049】請求項3記載の発明によれば、命令数カウ
ント値が比較される所定の比較値として、命令数カウン
タのとり得る最大値を用いるように構成したので、分岐
などによる命令シーケンスの変更があまりないようなプ
ログラムをデバッグする場合に、命令数カウンタがオー
バーフローする直前にデバッグ情報が出力されるように
なり、比較器の一致出力によるデバッグ情報の出力を最
少限に抑えることができる効果がある。
【0050】請求項4記載の発明によれば、デバッグ情
報生成回路からデバッグ情報の出力が抑止されている期
間のみ、当該情報処理装置自身に与えられる命令の実行
によって引き起こされる記憶手段へのアクセスを受け入
れるように構成したので、情報処理装置自身が出力した
デバッグ情報に対して、自らがアクセスすることができ
る効果がある。
【図面の簡単な説明】
【図1】 この発明の実施の形態1によるデバッグ情報
生成回路を示すブロック図である。
【図2】 この発明の実施の形態1が適用されるパイプ
ライン形情報処理装置の動作を示すタイミングチャート
である。
【図3】 この発明の実施の形態1が適用されるパイプ
ライン形情報処理装置の動作を示すタイミングチャート
である。
【図4】 この発明の実施の形態1が適用されるパイプ
ライン形情報処理装置の動作を示すタイミングチャート
である。
【図5】 この発明の実施の形態1が適用されるパイプ
ライン形情報処理装置における特殊な分岐処理機構につ
いて示したブロック図である。
【図6】 この発明の実施の形態1における出力制御部
の構成を示すブロック図である。
【図7】 この発明の実施の形態1におけるデバッグ情
報生成回路の動作を示すタイミングチャートである。
【図8】 この発明の実施の形態1におけるデバッグ情
報のメモリへの格納の様子を示す説明図である。
【図9】 この発明の実施の形態1におけるメモリの内
容から実際の命令実行順序の復元を示す説明図である。
【図10】 この発明の実施の形態2による情報処理装
置を示すブロック図である。
【図11】 この発明の実施の形態2におけるアドレス
マップを示す説明図である。
【符号の説明】
5 命令数カウンタ、6 命令数カウント値、7 出力
制御部、24 比較器、25 比較値、101 デバッ
グ情報生成回路、103 バスインタフェース(制御切
替手段)、104 デバッグ情報メモリ(記憶手段)、
108 デバッグ情報。

Claims (4)

    【特許請求の範囲】
  1. 【請求項1】 実行された命令の数を計数する命令数カ
    ウンタと、 ある時刻に実行された命令がその直前に実行された命令
    のプログラムカウンタ値をインクリメントすることによ
    って呼び出されたものではなかった場合に、前記ある時
    刻に実行された命令のプログラムカウンタ値と前記命令
    数カウンタによる命令数カウント値からなるデバッグ情
    報の出力を制御し、当該デバッグ情報が出力された後に
    前記命令数カウンタを初期化する出力制御部とを備えた
    デバッグ情報生成回路。
  2. 【請求項2】 出力制御部が、命令数カウンタによる命
    令数カウント値を所定の比較値と比較する比較器を有
    し、 前記比較器の比較結果が真である場合にもデバッグ情報
    の出力を制御して、当該デバッグ情報が出力された後に
    前記命令数カウンタを初期化するものであることを特徴
    とする請求項1記載のデバッグ情報生成回路。
  3. 【請求項3】 比較器にて命令数カウンタによる命令数
    カウント値と比較される所定の比較値として、前記命令
    数カウンタのとり得る最大値を設定したことを特徴とす
    る請求項2記載のデバッグ情報生成回路。
  4. 【請求項4】 請求項1から請求項3のうちのいずれか
    1項記載のデバッグ情報生成回路を備えた情報処理装置
    において、 前記デバッグ情報生成回路からデバッグ情報が格納され
    る記憶手段への前記デバッグ情報の出力を抑止する機
    能、 および前記デバッグ情報の前記記憶手段への出力と、当
    該情報処理装置自身に与えられる命令の実行によって引
    き起こされる前記記憶手段の読み出しの切り替えを行う
    機能を備えて、 前記デバッグ情報の出力が抑止されている期間にのみ、
    当該情報処理装置自身に与えられる命令の実行によって
    引き起こされる前記記憶手段へのアクセスを受け入れる
    制御切替手段を備えたことを特徴とする情報処理装置。
JP8212522A 1996-08-12 1996-08-12 デバッグ情報生成回路、およびそれを用いた情報処理装置 Pending JPH1055289A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP8212522A JPH1055289A (ja) 1996-08-12 1996-08-12 デバッグ情報生成回路、およびそれを用いた情報処理装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP8212522A JPH1055289A (ja) 1996-08-12 1996-08-12 デバッグ情報生成回路、およびそれを用いた情報処理装置

Publications (1)

Publication Number Publication Date
JPH1055289A true JPH1055289A (ja) 1998-02-24

Family

ID=16624071

Family Applications (1)

Application Number Title Priority Date Filing Date
JP8212522A Pending JPH1055289A (ja) 1996-08-12 1996-08-12 デバッグ情報生成回路、およびそれを用いた情報処理装置

Country Status (1)

Country Link
JP (1) JPH1055289A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109686391A (zh) * 2017-10-19 2019-04-26 三星电子株式会社 非易失性存储器装置及其操作方法及非易失性存储器封装

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109686391A (zh) * 2017-10-19 2019-04-26 三星电子株式会社 非易失性存储器装置及其操作方法及非易失性存储器封装
CN109686391B (zh) * 2017-10-19 2023-09-26 三星电子株式会社 非易失性存储器装置及其操作方法及非易失性存储器封装

Similar Documents

Publication Publication Date Title
JP2539199B2 (ja) デジタルプロセッサ制御装置
US5347636A (en) Data processor which efficiently accesses main memory and input/output devices
JP3242508B2 (ja) マイクロコンピュータ
JP2003085000A (ja) トレース情報生成装置およびその方法
US6760835B1 (en) Instruction branch mispredict streaming
US4562538A (en) Microprocessor having decision pointer to process restore position
US4747045A (en) Information processing apparatus having an instruction prefetch circuit
JPH05204709A (ja) プロセッサ
US20010023479A1 (en) Information processing unit, and exception processing method for specific application-purpose operation instruction
JP3260083B2 (ja) デバッグシステム及びデバッグ方法
US5938758A (en) Microprocessor having function of prefetching instruction
US5421026A (en) Data processor for processing instruction after conditional branch instruction at high speed
EP0374598B1 (en) Control store addressing from multiple sources
JPH1055289A (ja) デバッグ情報生成回路、およびそれを用いた情報処理装置
EP0177712B1 (en) Masked data fetch and modifying device
EP0633521B1 (en) Microprocessor including circuit for generating signal used for tracing executed instruction stream
JP2904172B2 (ja) 論理回路シミュレータ
US5557772A (en) Data processing apparatus including a register storing a parameter and a microinstruction execution arrangement including a correction arrangement for causing a first value of the parameter to be change to a second, correct value
JPH06324861A (ja) Cpu制御システム及び制御方法
JP2883465B2 (ja) 電子計算機
JPS6391756A (ja) 記憶装置の部分書き込み命令処理方式
JP2574918B2 (ja) 割り込み復帰処理方式
KR100257772B1 (ko) 수퍼스칼라 마이크로프로세서의 정지점 생성 장치
JP3366235B2 (ja) データ読み出し制御装置
EP0305530A1 (en) High-speed floating point arithmetic unit

Legal Events

Date Code Title Description
RD01 Notification of change of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7421

Effective date: 20060123

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20060310

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20060314

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20060704