JPH0736736A - マイクロプロセッサ - Google Patents
マイクロプロセッサInfo
- Publication number
- JPH0736736A JPH0736736A JP5178921A JP17892193A JPH0736736A JP H0736736 A JPH0736736 A JP H0736736A JP 5178921 A JP5178921 A JP 5178921A JP 17892193 A JP17892193 A JP 17892193A JP H0736736 A JPH0736736 A JP H0736736A
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- address
- instructions
- signal
- fetched
- 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
Links
- 238000012790 confirmation Methods 0.000 abstract 1
- 238000010586 diagram Methods 0.000 description 9
- 238000000034 method Methods 0.000 description 5
- 238000012937 correction Methods 0.000 description 2
- 230000010365 information processing Effects 0.000 description 2
- 238000007796 conventional method Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
Landscapes
- Microcomputers (AREA)
- Advance Control (AREA)
- Debugging And Monitoring (AREA)
Abstract
(57)【要約】
【目的】 分岐命令があった場合にもその動作の確認を
行うことができるマイクロプロセッサを実現すること。 【構成】 命令コードのアドレスを出力するアドレス指
定手段と、n×mビットの幅を持ち、n個のmビット長
命令を同時に取り込むことができる命令コード入力手段
と、前記命令コード入力手段により同時に取り込まれた
n個の命令のうちの一つを特定する分岐先命令通知手段
を有し、実行しているプログラムの分岐先命令を取り込
む場合に、分岐先の命令アドレスを前記アドレス指定手
段と前記分岐先命令通知手段により外部に通知すること
を特徴とする。
行うことができるマイクロプロセッサを実現すること。 【構成】 命令コードのアドレスを出力するアドレス指
定手段と、n×mビットの幅を持ち、n個のmビット長
命令を同時に取り込むことができる命令コード入力手段
と、前記命令コード入力手段により同時に取り込まれた
n個の命令のうちの一つを特定する分岐先命令通知手段
を有し、実行しているプログラムの分岐先命令を取り込
む場合に、分岐先の命令アドレスを前記アドレス指定手
段と前記分岐先命令通知手段により外部に通知すること
を特徴とする。
Description
【0001】
【産業上の利用分野】本発明は情報処理装置に関し、特
にトレース装置により動作が監視されるマイクロプロセ
ッサに関する。
にトレース装置により動作が監視されるマイクロプロセ
ッサに関する。
【0002】
【従来の技術】マイクロプロセッサなどの情報処理装置
のプログラムをデバッグする際、そのデバッグ効率を上
げるため、プログラムの実行をトレースする装置を用い
ることがある。これは、マイクロプロセッサが命令を実
行する場合には必ずその命令を主記憶から取り込むこと
(命令フェッチ)を利用し、主記憶に対するアドレス指
定と命令取り込みのステータス信号を監視して命令の動
的な実行順序を出力するものである(ただし、キャッシ
ュメモリを使ったシステムの場合は命令アドレスが主記
憶に対して出力されない場合もあるため、ここではキャ
ッシュメモリを使わないシステムを考える)。
のプログラムをデバッグする際、そのデバッグ効率を上
げるため、プログラムの実行をトレースする装置を用い
ることがある。これは、マイクロプロセッサが命令を実
行する場合には必ずその命令を主記憶から取り込むこと
(命令フェッチ)を利用し、主記憶に対するアドレス指
定と命令取り込みのステータス信号を監視して命令の動
的な実行順序を出力するものである(ただし、キャッシ
ュメモリを使ったシステムの場合は命令アドレスが主記
憶に対して出力されない場合もあるため、ここではキャ
ッシュメモリを使わないシステムを考える)。
【0003】また、主記憶から取り込む効率を上げるた
め、一度に複数の命令をフェッチしてマイクロプロセッ
サの性能を向上させる手法がある。例えば、データバス
が32ビットのマイクロプロセッサの場合、一つの命令
の長さを32ビットにすると一回の命令フェッチで一つ
の命令しか取り込めないが、命令の長さを16ビットに
すれば一回の命令フェッチで二つの命令を取り込めるこ
とになり、命令フェッチの効率が上がる。
め、一度に複数の命令をフェッチしてマイクロプロセッ
サの性能を向上させる手法がある。例えば、データバス
が32ビットのマイクロプロセッサの場合、一つの命令
の長さを32ビットにすると一回の命令フェッチで一つ
の命令しか取り込めないが、命令の長さを16ビットに
すれば一回の命令フェッチで二つの命令を取り込めるこ
とになり、命令フェッチの効率が上がる。
【0004】ところが、前記の命令フェッチを使ったト
レース装置をこのような一度に複数の命令をフェッチす
るプロセッサに応用しようとした場合には問題点が発生
する。
レース装置をこのような一度に複数の命令をフェッチす
るプロセッサに応用しようとした場合には問題点が発生
する。
【0005】この問題点について従来例を用いて以下に
説明する。
説明する。
【0006】図4は従来のマイクロプロセッサにトレー
ス装置を接続した例を示す図である。図中、401はマ
イクロプロセッサ(以下MPUと呼ぶ)、402は主記
隠装置(以下メモリと呼ぶ)、403はトレース装置、
404は30ビット幅のアドレスバス、405は32ビ
ット幅のデータバス、406はMPU401がバスサイ
クルを発行していることを示すBUSCY信号、407
はMPU401が出力しているバスサイクルの種類を示
すBUSST信号、408はMPU401が出力してい
るバスサイクルが読み出しであるか書き込みであるかを
示すR/W信号である。
ス装置を接続した例を示す図である。図中、401はマ
イクロプロセッサ(以下MPUと呼ぶ)、402は主記
隠装置(以下メモリと呼ぶ)、403はトレース装置、
404は30ビット幅のアドレスバス、405は32ビ
ット幅のデータバス、406はMPU401がバスサイ
クルを発行していることを示すBUSCY信号、407
はMPU401が出力しているバスサイクルの種類を示
すBUSST信号、408はMPU401が出力してい
るバスサイクルが読み出しであるか書き込みであるかを
示すR/W信号である。
【0007】MPU401がメモリ402に格納されて
いる命令やデータを読み出し、もしくは書き込むため
に、アドレスバス404に目的のアドレスを乗せ、メモ
リ402がデータバス405に乗せた読み出しデータを
MPU401に取り込み、またはメモリ402に書き込
むデータをデータバス405に乗せることを、バスサイ
クルを発行するという。
いる命令やデータを読み出し、もしくは書き込むため
に、アドレスバス404に目的のアドレスを乗せ、メモ
リ402がデータバス405に乗せた読み出しデータを
MPU401に取り込み、またはメモリ402に書き込
むデータをデータバス405に乗せることを、バスサイ
クルを発行するという。
【0008】本従来例のシステムではBUSCY信号4
06が1を出力している期間、バスサイクルが有効であ
る。
06が1を出力している期間、バスサイクルが有効であ
る。
【0009】また、発行しているバスサイクルが命令フ
ェッチのためのものかデータアクセスのためのものかを
区別するためにBUSCY信号406に同期して変化す
るBUSST信号407を用いる。BUSST信号40
7が0の場合はそのバスサイクルがデータアクセスのた
めのものであることを示し、1の場合は命令フェッチの
ためのものであることを示す。
ェッチのためのものかデータアクセスのためのものかを
区別するためにBUSCY信号406に同期して変化す
るBUSST信号407を用いる。BUSST信号40
7が0の場合はそのバスサイクルがデータアクセスのた
めのものであることを示し、1の場合は命令フェッチの
ためのものであることを示す。
【0010】さらに、バスサイクルがデータアクセスの
場合に読み出しか書き込みかを区別するため、MPU4
01はR/W信号408を出力する。R/W信号408
が0の場合は書き込みを示し、1の場合は読み出しを示
す。
場合に読み出しか書き込みかを区別するため、MPU4
01はR/W信号408を出力する。R/W信号408
が0の場合は書き込みを示し、1の場合は読み出しを示
す。
【0011】本従来例のシステムは1バイトごとにアド
レスが割り振られるバイトアドレッシングであり、32
ビットのアドレスによる4Gバイトのアドレス空間を持
つ。ただし、データバス405は32ビット幅あるた
め、一度に4バイトのデータをアクセスすることにな
る。よって32ビットアドレスの下位2ビットはメモリ
402に対して指定する必要がないため、アドレスバス
404は30ビット幅となっている。以降、4バイトの
データをひとまとめにしたものをワードデータと呼ぶ。
また、[0000 0004H],[1234 5678H],[FFFF FFFC
H]など、4の倍数になるアドレスをワード境界アドレ
ス、[9876 5432H],[0000 ABCEH]など、アドレスが
4の倍数+2になるアドレスをハーフワード境界アドレ
スと呼ぶ。
レスが割り振られるバイトアドレッシングであり、32
ビットのアドレスによる4Gバイトのアドレス空間を持
つ。ただし、データバス405は32ビット幅あるた
め、一度に4バイトのデータをアクセスすることにな
る。よって32ビットアドレスの下位2ビットはメモリ
402に対して指定する必要がないため、アドレスバス
404は30ビット幅となっている。以降、4バイトの
データをひとまとめにしたものをワードデータと呼ぶ。
また、[0000 0004H],[1234 5678H],[FFFF FFFC
H]など、4の倍数になるアドレスをワード境界アドレ
ス、[9876 5432H],[0000 ABCEH]など、アドレスが
4の倍数+2になるアドレスをハーフワード境界アドレ
スと呼ぶ。
【0012】MPU401が出力する命令は16ビット
固定長である。これに対し、データバス405は32ビ
ット幅であるため、1回の命令フェッチで二つの命令を
同時にMPU401に取り込むことができる。
固定長である。これに対し、データバス405は32ビ
ット幅であるため、1回の命令フェッチで二つの命令を
同時にMPU401に取り込むことができる。
【0013】トレース装置403はMPU401が出力
するアドレスバス404,BUSCY信号406,BU
SST信号407を監視し、命令フェッチバスサイクル
の有無から命令がどのような順序でMPU401により
実行されているかを検出する付加装置である。
するアドレスバス404,BUSCY信号406,BU
SST信号407を監視し、命令フェッチバスサイクル
の有無から命令がどのような順序でMPU401により
実行されているかを検出する付加装置である。
【0014】このようなマイクロプロセッサシステム
が、図5に示すプログラムを実行した場合の動作を図6
および図7に示す。
が、図5に示すプログラムを実行した場合の動作を図6
および図7に示す。
【0015】まず、図5のプログラムについて説明す
る。
る。
【0016】このプログラムはレジスタの内容により複
数の分岐先へ分岐させるマルチウェイブランチの例であ
る。
数の分岐先へ分岐させるマルチウェイブランチの例であ
る。
【0017】あらかじめレジスタr1に入れられた0か
ら3までの値により、[0000 0000H]番地,[0000 000
2H]番地,[0000 0004H]番地,[0000 0006H]番地の
いずれかに分岐する。
ら3までの値により、[0000 0000H]番地,[0000 000
2H]番地,[0000 0004H]番地,[0000 0006H]番地の
いずれかに分岐する。
【0018】まず[0000 0100H]番地の[mov #2,r2]
命令により、レジスタr2に定数2が代入される。続い
て[0000 0102H]番地の[mul r1,r2]命令により、レ
ジスタr1とレジスタr2の乗算が行われ、結果がレジ
スタr2に格納される。ここではレジスタr2は定数2
であるため、レジスタr1の内容が二倍されてレジスタ
r2に入ることになる。
命令により、レジスタr2に定数2が代入される。続い
て[0000 0102H]番地の[mul r1,r2]命令により、レ
ジスタr1とレジスタr2の乗算が行われ、結果がレジ
スタr2に格納される。ここではレジスタr2は定数2
であるため、レジスタr1の内容が二倍されてレジスタ
r2に入ることになる。
【0019】この乗算により分岐先のアドレスが計算さ
れ、[0000 0104H]番地の[jmp [r2]]命令により、レ
ジスタr2が示すアドレスへ分岐する。レジスタr1の
内容が0だった場合には[0000 0000H]番地,1だった
場合には[0000 0002H]番地,というように複数の分岐
先への分岐が一つの分岐命令で実現される。
れ、[0000 0104H]番地の[jmp [r2]]命令により、レ
ジスタr2が示すアドレスへ分岐する。レジスタr1の
内容が0だった場合には[0000 0000H]番地,1だった
場合には[0000 0002H]番地,というように複数の分岐
先への分岐が一つの分岐命令で実現される。
【0020】このプログラムを図4に示した装置で実行
する場合、一つの命令フェッチに二つの命令が含まれる
ため、分岐が発生した場合に外部からのバスサイクル観
測だけでは分岐先としてどちらの命令が実行されたかを
特定できないという問題点がある。この問題点について
図6および図7を用いて以下に説明する。
する場合、一つの命令フェッチに二つの命令が含まれる
ため、分岐が発生した場合に外部からのバスサイクル観
測だけでは分岐先としてどちらの命令が実行されたかを
特定できないという問題点がある。この問題点について
図6および図7を用いて以下に説明する。
【0021】外部から観測できる命令フェッチバスサイ
クルと、内部の命令実行とを時間順に並べて図示したも
のが図6と図7である。
クルと、内部の命令実行とを時間順に並べて図示したも
のが図6と図7である。
【0022】まず、レジスタr1の値が0だった場合の
動作を図6に示す。
動作を図6に示す。
【0023】図5に示したプログラムにおける[0000 0
100H]番地の[mov #2,r2]命令を実行するため、まず
MPU401は、[0000 0100H]番地から[0000 0103
H]番地までの4バイトを命令フェッチバスサイクルを
発行してメモリ402から取り込む(501)。一つの
命令の長さは16ビットであるため、この4バイトには
二つ分の命令が含まれている。よってMPU401の内
部では[0000 0100H]番地の[mov #2,r2]命令と[000
0 0102H]番地の[mul r1,r2]命令が続けて実行される
(502,503)。図6に示すレジスタr1の初期値
は0であるため、乗算後のレジスタr2の値も0であ
る。
100H]番地の[mov #2,r2]命令を実行するため、まず
MPU401は、[0000 0100H]番地から[0000 0103
H]番地までの4バイトを命令フェッチバスサイクルを
発行してメモリ402から取り込む(501)。一つの
命令の長さは16ビットであるため、この4バイトには
二つ分の命令が含まれている。よってMPU401の内
部では[0000 0100H]番地の[mov #2,r2]命令と[000
0 0102H]番地の[mul r1,r2]命令が続けて実行される
(502,503)。図6に示すレジスタr1の初期値
は0であるため、乗算後のレジスタr2の値も0であ
る。
【0024】次に、MPU401は[0000 0104H]番地
の[jmp [r2]]命令を実行するため、[0000 0104H]番
地から[0000 0107H]番地までの4バイトをフェッチす
る(504)。この4バイトにも二つの命令が含まれて
いるが、一つ目の命令が無条件分岐命令であるため、二
つ目のnop命令は実行されることなく読み捨てられ
る。
の[jmp [r2]]命令を実行するため、[0000 0104H]番
地から[0000 0107H]番地までの4バイトをフェッチす
る(504)。この4バイトにも二つの命令が含まれて
いるが、一つ目の命令が無条件分岐命令であるため、二
つ目のnop命令は実行されることなく読み捨てられ
る。
【0025】レジスタr2が0であるため、[jmp [r
2]]命令の実行によりプログラムの実行は[0000 0000
H]番地へ分岐する(505)。MPU401は[0000
0000H]番地にある[命令A]を実行するため、[0000
0000H]番地から[0000 0003H]番地までの4バイトを
フェッチする(506)。[命令A]と[命令B]が連
続して実行された後(507,508)、再び命令フェ
ッチにより二命令を取り込み、連続して実行する、とい
う動作を繰り返す。
2]]命令の実行によりプログラムの実行は[0000 0000
H]番地へ分岐する(505)。MPU401は[0000
0000H]番地にある[命令A]を実行するため、[0000
0000H]番地から[0000 0003H]番地までの4バイトを
フェッチする(506)。[命令A]と[命令B]が連
続して実行された後(507,508)、再び命令フェ
ッチにより二命令を取り込み、連続して実行する、とい
う動作を繰り返す。
【0026】次にレジスタr1の内容が1だった場合の
動作を図7に示す。
動作を図7に示す。
【0027】[0000 0104H]番地の[jmp [r2]]命令を
実行するところまでは図6と同様であるが、レジスタn
の初期値が1であるため、乗算結果であるレジスタr2
の値は2となっており、[jmp [r2]]命令の分岐先は
[0000 0002H]番地になる。
実行するところまでは図6と同様であるが、レジスタn
の初期値が1であるため、乗算結果であるレジスタr2
の値は2となっており、[jmp [r2]]命令の分岐先は
[0000 0002H]番地になる。
【0028】MPU401は[0000 0002H]番地にある
[命令B]を実行するため、[命令B]が格納されてい
るアドレスをフェッチしようとする。ところがMPU4
01は32ビットバスで二命令を同時に取り込むため、
[命令B]は[命令A]と共に[0000 0000H]番地から
[0000 0003H]番地までの4バイトに対する命令フェッ
チで取り込まれ、[命令A]は読み捨てられることにな
る(516)。
[命令B]を実行するため、[命令B]が格納されてい
るアドレスをフェッチしようとする。ところがMPU4
01は32ビットバスで二命令を同時に取り込むため、
[命令B]は[命令A]と共に[0000 0000H]番地から
[0000 0003H]番地までの4バイトに対する命令フェッ
チで取り込まれ、[命令A]は読み捨てられることにな
る(516)。
【0029】この命令フェッチの後[命令B]が実行さ
れ(518)、以降は図6と同様に命令フェッチにより
二命令を取り込み、連続して実行する、という動作を繰
り返す。
れ(518)、以降は図6と同様に命令フェッチにより
二命令を取り込み、連続して実行する、という動作を繰
り返す。
【0030】ここでトレース装置403による命令実行
トレースに問題が発生する。図6と図7からわかるよう
に、これら二つの例では内部動作が異なるにも関わらず
命令フェッチバスサイクルはまったく同じように発行さ
れている。トレース装置403は命令フェッチバスサイ
クルに基づいて実行命令の順序を決めるため、図6また
は図7のバスサイクル列だけでは[0000 0000H]番地に
ある[命令A]が実行されたか否かが判定できない。
トレースに問題が発生する。図6と図7からわかるよう
に、これら二つの例では内部動作が異なるにも関わらず
命令フェッチバスサイクルはまったく同じように発行さ
れている。トレース装置403は命令フェッチバスサイ
クルに基づいて実行命令の順序を決めるため、図6また
は図7のバスサイクル列だけでは[0000 0000H]番地に
ある[命令A]が実行されたか否かが判定できない。
【0031】
【発明が解決しようとする課題】命令フェッチバスサイ
クルを外部から監視することにより命令実行順序を出力
するトレース装置を、1バスサイクルで複数の命令を取
り込むマイクロプロセッサに用いた場合には、取り込ま
れた命令をすべて実行するのか一部を実行するのかをバ
スサイクルだけでは判断できないため、分岐命令の正確
なトレースが不可能になってしまい、マイクロプロセッ
サの動作の監視をトレース装置が正確に行うことができ
ないよいう問題点がある。
クルを外部から監視することにより命令実行順序を出力
するトレース装置を、1バスサイクルで複数の命令を取
り込むマイクロプロセッサに用いた場合には、取り込ま
れた命令をすべて実行するのか一部を実行するのかをバ
スサイクルだけでは判断できないため、分岐命令の正確
なトレースが不可能になってしまい、マイクロプロセッ
サの動作の監視をトレース装置が正確に行うことができ
ないよいう問題点がある。
【0032】本発明は上述したような従来の技術が有す
る問題点に鑑みてなされたものであって、分岐命令があ
った場合にもその動作の確認を行うことができるマイク
ロプロセッサを実現することを目的とする。
る問題点に鑑みてなされたものであって、分岐命令があ
った場合にもその動作の確認を行うことができるマイク
ロプロセッサを実現することを目的とする。
【0033】
【課題を解決するための手段】本発明のマイクロプロセ
ッサは、命令コードのアドレスを出力するアドレス指定
手段と、n×mビットの幅を持ち、n個のmビット長命
令を同時に取り込むことができる命令コード入力手段
と、前記コード入力手段により同時に取り込まれたn個
の命令のうちの一つを特定する分岐先命令通知手段を有
している。
ッサは、命令コードのアドレスを出力するアドレス指定
手段と、n×mビットの幅を持ち、n個のmビット長命
令を同時に取り込むことができる命令コード入力手段
と、前記コード入力手段により同時に取り込まれたn個
の命令のうちの一つを特定する分岐先命令通知手段を有
している。
【0034】
【作用】命令フェッチにより読み出された複数の命令の
うち、どの命令に対して分岐したかを通知するための信
号がマイクロプロセッサからトレース装置に出力される
ので、1バスサイクルで複数の命令を取り込むマイクロ
プロセッサの命令トレースが可能となる。
うち、どの命令に対して分岐したかを通知するための信
号がマイクロプロセッサからトレース装置に出力される
ので、1バスサイクルで複数の命令を取り込むマイクロ
プロセッサの命令トレースが可能となる。
【0035】
【実施例】次に、本発明の実施例について図面を参照し
て説明する。
て説明する。
【0036】図1は本発明の一実施例のマイクロプロセ
ッサにトレース装置を接続した例を示す図である。
ッサにトレース装置を接続した例を示す図である。
【0037】図中、101はマイクロプロセッサ(以下
MPUと呼ぶ)、102は主記憶装置(以下メモリと呼
ぶ)、103はトレース装置、104は30ビット幅の
アドレスバス、105は32ビット幅のデータバス、1
06はMPU401がバスサイクルを発行していること
を示すBUSCY信号、107はMPU401が発行し
ているバスサイクルの種類を示すBUSST信号、10
8はMPU401が発行しているバスサイクルが読み出
しであるか書き込みであるかを示すR/W信号、109
はハーフワード境界に分岐が発生したことをトレース装
置に通知するHWJMP信号である。
MPUと呼ぶ)、102は主記憶装置(以下メモリと呼
ぶ)、103はトレース装置、104は30ビット幅の
アドレスバス、105は32ビット幅のデータバス、1
06はMPU401がバスサイクルを発行していること
を示すBUSCY信号、107はMPU401が発行し
ているバスサイクルの種類を示すBUSST信号、10
8はMPU401が発行しているバスサイクルが読み出
しであるか書き込みであるかを示すR/W信号、109
はハーフワード境界に分岐が発生したことをトレース装
置に通知するHWJMP信号である。
【0038】メモリ102、アドレスバス104、デー
タバス105、BUSCY信号106、BUSSST信
号107およびR/W信号108までの構成要素はそれ
ぞれ図4に示した従来例におけるメモリ402、アドレ
スバス404、データバス405、BUSCY信号40
6、BUSSST信号407およびR/W信号408と
同様であるため、説明を省略する。
タバス105、BUSCY信号106、BUSSST信
号107およびR/W信号108までの構成要素はそれ
ぞれ図4に示した従来例におけるメモリ402、アドレ
スバス404、データバス405、BUSCY信号40
6、BUSSST信号407およびR/W信号408と
同様であるため、説明を省略する。
【0039】本実施例におけるMPU101が出力する
HWJMP信号109は、分岐により命令フェッチが発
生した場合に分岐先により異なるものであり、その分岐
先がワード境界である場合には0、分岐先がハーフワー
ド境界である場合には1が出力され、その出力タイミン
グはBUSCY信号106と同じタイミングで出力され
る。
HWJMP信号109は、分岐により命令フェッチが発
生した場合に分岐先により異なるものであり、その分岐
先がワード境界である場合には0、分岐先がハーフワー
ド境界である場合には1が出力され、その出力タイミン
グはBUSCY信号106と同じタイミングで出力され
る。
【0040】このようなマイクロプロセッサシステム
が、従来例の場合と同様に図5に示すプログラムを実行
した場合の動作を図2および図3に示す。
が、従来例の場合と同様に図5に示すプログラムを実行
した場合の動作を図2および図3に示す。
【0041】図5のプログラムについては、従来例で引
用したものと同じであり、従来例の項の中で説明してい
るため、ここでは説明を省略する。
用したものと同じであり、従来例の項の中で説明してい
るため、ここでは説明を省略する。
【0042】このプログラムを図1に示した装置で実行
する場合、ハーフワード境界への分岐を示すHWJMP
信号109により、トレース装置103はフェッチされ
たワード中に含まれる二つの命令のうち、どちらに分岐
したかを特定することができる。
する場合、ハーフワード境界への分岐を示すHWJMP
信号109により、トレース装置103はフェッチされ
たワード中に含まれる二つの命令のうち、どちらに分岐
したかを特定することができる。
【0043】外部から観測できる命令フェッチバスサイ
クルと、レジスタr1の値が0および1である場合の内
部の命令実行とを時間順に並べてそれぞれ図示したもの
が図2および図3である。
クルと、レジスタr1の値が0および1である場合の内
部の命令実行とを時間順に並べてそれぞれ図示したもの
が図2および図3である。
【0044】まず、レジスタr1の値が0だった場合の
動作を図2を参照して説明する。
動作を図2を参照して説明する。
【0045】図5のプログラムにおける[0000 0100H]
番地の[mov #2,r2]命令を実行するため、まずMPU
101は[0000 0100H]番地から[0000 0103H]番地ま
での4バイトを命令フェッチバスサイクルを発行してメ
モリ102から取り込む(301)。一つの命令の長さ
は16ビットであるため、この4バイトには二つ分の命
令が含まれている。よってMPU101の内部では[00
00 0100H]番地の[mov #2,r2]命令と[0000 0102H]
番地の[mul r1,r2]命令が続けて実行される(30
2,303)。図2に示した例ではレジスタr2の初期
値は0であるため、乗算後のレジスタr2の値も0であ
る。
番地の[mov #2,r2]命令を実行するため、まずMPU
101は[0000 0100H]番地から[0000 0103H]番地ま
での4バイトを命令フェッチバスサイクルを発行してメ
モリ102から取り込む(301)。一つの命令の長さ
は16ビットであるため、この4バイトには二つ分の命
令が含まれている。よってMPU101の内部では[00
00 0100H]番地の[mov #2,r2]命令と[0000 0102H]
番地の[mul r1,r2]命令が続けて実行される(30
2,303)。図2に示した例ではレジスタr2の初期
値は0であるため、乗算後のレジスタr2の値も0であ
る。
【0046】次に、MPU101は[0000 0104H]番地
の[jmp [r2]]命令を実行するため、[0000 0104H]番
地から[0000 0107H]番地までの4バイトをフェッチす
る(304)。この4バイトにも二つの命令が含まれて
いるが、一つ目のの命令が無条件分岐命令であるため、
二つ目のnop命令は実行されることなく読み捨てられ
る。
の[jmp [r2]]命令を実行するため、[0000 0104H]番
地から[0000 0107H]番地までの4バイトをフェッチす
る(304)。この4バイトにも二つの命令が含まれて
いるが、一つ目のの命令が無条件分岐命令であるため、
二つ目のnop命令は実行されることなく読み捨てられ
る。
【0047】この後、レジスタr2が0であるため、
[jmp [r2]]命令の実行によりプログラムの実行は[00
00 0000H]番地へ分岐する(305)。MPU101は
[00000000H]番地にある[命令A]を実行するため、
[0000 0000H]番地から[00000003H]番地までの4バ
イトをフェッチする(306)。
[jmp [r2]]命令の実行によりプログラムの実行は[00
00 0000H]番地へ分岐する(305)。MPU101は
[00000000H]番地にある[命令A]を実行するため、
[0000 0000H]番地から[00000003H]番地までの4バ
イトをフェッチする(306)。
【0048】ここで、[jmp [r2]]命令による分岐先が
ハーフワード境界ではなく、ワード境界であるため、H
WJMP信号109はBUSCY信号106,BUSS
T信号107と同じタイミングで0を出力する(30
9)。この出力がアドレスバス104に乗ったフェッチ
アドレスと共にトレース装置103に入力され、トレー
ス装置103はその命令フェッチにより取り込まれた命
令がすべて実行されることを認識する。
ハーフワード境界ではなく、ワード境界であるため、H
WJMP信号109はBUSCY信号106,BUSS
T信号107と同じタイミングで0を出力する(30
9)。この出力がアドレスバス104に乗ったフェッチ
アドレスと共にトレース装置103に入力され、トレー
ス装置103はその命令フェッチにより取り込まれた命
令がすべて実行されることを認識する。
【0049】MPU101では[命令A]と[命令B]
が連続して実行された後(307,308)、再び命令
フェッチにより二命令を取り込み、連続して実行すると
いう動作を繰り返す。
が連続して実行された後(307,308)、再び命令
フェッチにより二命令を取り込み、連続して実行すると
いう動作を繰り返す。
【0050】次に、レジスタrの内容が1だった場合の
動作を図3を参照して説明する。
動作を図3を参照して説明する。
【0051】[0000 0104H]番地の[jmp [r2]]命令を
実行するところまでは図2に示した場合と同様である
が、レジスタr2の初期値が1であるため、乗算結果で
あるレジスタ越の値は2となっており、[jmp [r2]]命
令の分岐先は[0000 0002H]番地になる。
実行するところまでは図2に示した場合と同様である
が、レジスタr2の初期値が1であるため、乗算結果で
あるレジスタ越の値は2となっており、[jmp [r2]]命
令の分岐先は[0000 0002H]番地になる。
【0052】MPU101は、[0000 0002H]番地にあ
る[命令B]を実行するため、[命令B]が格納されて
いるアドレスをフェッチしようとする。ところがMPU
101は32ビットバスで二命令を同時に取り込むた
め、[命令B]は[命令A]と共に[0000 0000H]番地
から[0000 0003H]番地までの4バイトに対する命令フ
ェッチで取り込まれ、[命令A]は読み捨てられること
になる(316)。
る[命令B]を実行するため、[命令B]が格納されて
いるアドレスをフェッチしようとする。ところがMPU
101は32ビットバスで二命令を同時に取り込むた
め、[命令B]は[命令A]と共に[0000 0000H]番地
から[0000 0003H]番地までの4バイトに対する命令フ
ェッチで取り込まれ、[命令A]は読み捨てられること
になる(316)。
【0053】ここで、[jmp [r2]]命令による分岐先が
ハーフワード境界であるため、HWJMP信号109は
BUSCY信号106,BUSST信号107と同じタ
イミングで1を出力する(319)。この出力がアドレ
スバス104に乗ったフェッチアドレスと共にトレース
装置103に入力され、トレース装置103はその命令
フェッチにより取り込まれた命令のうち、[0000 0000
H]番地にある[命令A]はMPU101において実行
されないことを認識する。
ハーフワード境界であるため、HWJMP信号109は
BUSCY信号106,BUSST信号107と同じタ
イミングで1を出力する(319)。この出力がアドレ
スバス104に乗ったフェッチアドレスと共にトレース
装置103に入力され、トレース装置103はその命令
フェッチにより取り込まれた命令のうち、[0000 0000
H]番地にある[命令A]はMPU101において実行
されないことを認識する。
【0054】上記の命令フェッチの後、[命令B]が実
行され(318)、以降は図2と同様に命令フェッチに
より二命令を取り込み、連続して実行する、という動作
を繰り返す。
行され(318)、以降は図2と同様に命令フェッチに
より二命令を取り込み、連続して実行する、という動作
を繰り返す。
【0055】このように、HWJMP信号109を追加
することにより、バスサイクルのみではまったく同じ動
きとなるワード境界への分岐とハーフワード境界への分
岐を、 トレース装置103が区別できるようになり、
正確な命令トレースが可能になる。
することにより、バスサイクルのみではまったく同じ動
きとなるワード境界への分岐とハーフワード境界への分
岐を、 トレース装置103が区別できるようになり、
正確な命令トレースが可能になる。
【0056】なお、上述した実施例では、アドレスを3
2ビットのものとし、命令が16ビット固定長のもので
あるため、HWJMP信号109に要求される出力内容
は分岐先がワード境界領域か、または、ハーフワード境
界領域であるかの二通りとなり、増加する信号線の数は
1本である。
2ビットのものとし、命令が16ビット固定長のもので
あるため、HWJMP信号109に要求される出力内容
は分岐先がワード境界領域か、または、ハーフワード境
界領域であるかの二通りとなり、増加する信号線の数は
1本である。
【0057】また、アドレスが64ビットのものであ
り、命令が16ビット固定長のものでであっても、HW
JMP信号109を出力するために増加する信号線の数
は2本であり、本発明を実施した場合に装置を構成する
ためにかかる負担は極めて低いものとなっている。
り、命令が16ビット固定長のものでであっても、HW
JMP信号109を出力するために増加する信号線の数
は2本であり、本発明を実施した場合に装置を構成する
ためにかかる負担は極めて低いものとなっている。
【0058】
【発明の効果】本発明は以上示したように構成されてい
るので、以下に記載するような効果を奏する。
るので、以下に記載するような効果を奏する。
【0059】一バスサイクルで複数の命令を取り込むマ
イクロプロセッサの命令実行をトレースする場合に、取
り込まれた命令をすべて実行するのか一部を実行するの
かを、HWJMP信号をバスサイクル情報と共に出力さ
れるため、動作を確認するトレース装置が正確に分岐命
令をトレースすることができ、精度の高い動作確認を行
うことができる効果がある。
イクロプロセッサの命令実行をトレースする場合に、取
り込まれた命令をすべて実行するのか一部を実行するの
かを、HWJMP信号をバスサイクル情報と共に出力さ
れるため、動作を確認するトレース装置が正確に分岐命
令をトレースすることができ、精度の高い動作確認を行
うことができる効果がある。
【図1】トレース装置が接続された本発明の一実施例の
構成を示す図である。
構成を示す図である。
【図2】図1に示した実施例の動作を示す図である。
【図3】図1に示した実施例の動作を示す図である。
【図4】トレース装置が接続された従来例の構成を示す
図である。
図である。
【図5】図4に示した装置が実行するプログラムの一例
を示す図である。
を示す図である。
【図6】従来例の動作を示す図である。
【図7】従来例の動作を示す図である。
101 MPU 102 メモリ 103 トレース装置 104 アドレスバス 105 データバス 106 BUSCY信号 107 BUSST信号 108 R/W信号 109 HWJMP信号
─────────────────────────────────────────────────────
【手続補正書】
【提出日】平成5年11月10日
【手続補正1】
【補正対象書類名】明細書
【補正対象項目名】特許請求の範囲
【補正方法】変更
【補正内容】
【特許請求の範囲】
Claims (1)
- 【請求項1】 命令コードのアドレスを出力するアドレ
ス指定手段と、 n×mビットの幅を持ち、n個のmビット長命令を同時
に取り込むことができる命令コード入力手段と、 前記命令コード入力手段により同時に取り込まれたn個
の命令のうちの一つを特定する分岐先命令通知手段を有
し、 実行しているプログラムの分岐先命令を取り込む場合
に、分岐先の命令アドレスを前記アドレス指定手段と前
記分岐先命令通知手段により外部に通知することを特徴
とするマイクロプロセッサ。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP5178921A JPH0736736A (ja) | 1993-07-20 | 1993-07-20 | マイクロプロセッサ |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP5178921A JPH0736736A (ja) | 1993-07-20 | 1993-07-20 | マイクロプロセッサ |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| JPH0736736A true JPH0736736A (ja) | 1995-02-07 |
Family
ID=16056980
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP5178921A Pending JPH0736736A (ja) | 1993-07-20 | 1993-07-20 | マイクロプロセッサ |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JPH0736736A (ja) |
Citations (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPH03260843A (ja) * | 1990-03-12 | 1991-11-20 | Fujitsu Ltd | 実行確認装置 |
-
1993
- 1993-07-20 JP JP5178921A patent/JPH0736736A/ja active Pending
Patent Citations (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPH03260843A (ja) * | 1990-03-12 | 1991-11-20 | Fujitsu Ltd | 実行確認装置 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US9032185B2 (en) | Active memory command engine and method | |
| US5481734A (en) | Data processor having 2n bits width data bus for context switching function | |
| JPS5886648A (ja) | トレ−ス装置 | |
| JPH0527971A (ja) | 情報処理装置 | |
| JPS623337A (ja) | デ−タ・ストア方式 | |
| KR20200123799A (ko) | 디바이스를 디버깅할 때 메타데이터에 액세스하기 위한 장치 및 방법 | |
| US8583897B2 (en) | Register file with circuitry for setting register entries to a predetermined value | |
| US6233675B1 (en) | Facility to allow fast execution of and, or, and test instructions | |
| JPH06295243A (ja) | データ処理装置 | |
| JPH0736736A (ja) | マイクロプロセッサ | |
| JP2581565B2 (ja) | ガード付命令を実行するデータ処理装置 | |
| JP2915944B2 (ja) | カバレージ測定方法及びマイクロコンピュータ | |
| US6289439B1 (en) | Method, device and microprocessor for performing an XOR clear without executing an XOR instruction | |
| JP3523407B2 (ja) | 情報処理装置 | |
| JPS58195255A (ja) | デ−タ処理装置 | |
| JP2629479B2 (ja) | 情報処理装置 | |
| JPH03252731A (ja) | マイクロプロセッサ | |
| JPS6286442A (ja) | デ−タ処理装置 | |
| JPH0412855B2 (ja) | ||
| JPH0795288B2 (ja) | マイクロコンピュータ | |
| JPH0546389A (ja) | 並列処理装置 | |
| JPS60193046A (ja) | 命令例外検出方式 | |
| JPH1055289A (ja) | デバッグ情報生成回路、およびそれを用いた情報処理装置 | |
| JP2002024012A (ja) | マイクロプロセッサ | |
| JPH01188941A (ja) | プログラム実行制御方式 |