JP2002175198A - 演算処理装置および演算処理装置のデバッグ方法とそのシステム - Google Patents

演算処理装置および演算処理装置のデバッグ方法とそのシステム

Info

Publication number
JP2002175198A
JP2002175198A JP2000373478A JP2000373478A JP2002175198A JP 2002175198 A JP2002175198 A JP 2002175198A JP 2000373478 A JP2000373478 A JP 2000373478A JP 2000373478 A JP2000373478 A JP 2000373478A JP 2002175198 A JP2002175198 A JP 2002175198A
Authority
JP
Japan
Prior art keywords
branch
instruction
branch instruction
indirect
address
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
JP2000373478A
Other languages
English (en)
Inventor
Yutaka Miura
豊 三浦
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.)
Sony Corp
Original Assignee
Sony 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 Sony Corp filed Critical Sony Corp
Priority to JP2000373478A priority Critical patent/JP2002175198A/ja
Publication of JP2002175198A publication Critical patent/JP2002175198A/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • G06F9/30061Multi-way branch instructions, e.g. CASE

Abstract

(57)【要約】 【課題】プログラムの実行軌跡のトレースをするために
記憶するデータ量をより少なくしたオンチップデバッガ
搭載の集積回路を提供する。 【解決手段】命令実行数カウンタ21で分岐命令間で連
続して実行される命令数を計数しておき、分岐命令発生
時にはこれをトレースメモリ28に記憶する。これによ
り分岐元アドレスは特定できる。直接分岐命令について
は、プログラムを解析すれば分岐命令および分岐先アド
レスが検出できるので、これらの記憶は行なわない。間
接分岐命令については、コード化部24において命令を
8ビットのコードに変換し、アドレスラッチ25でラッ
チした分岐先アドレスとともに記憶する。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、マイクロプロセッ
サをコア回路として内蔵するたとえば特定用途向けの集
積回路チップなどの演算処理装置に関し、特に、プログ
ラムのデバッグが容易な演算処理装置、その演算処理装
置のデバッグ方法およびその演算処理装置のデバッグシ
ステムに関する。
【0002】
【従来の技術】半導体集積回路の進展により、マイクロ
プロセッサをコア回路として収容し、さらに周辺回路や
特定用途の専用回路を収容した、たとえば特定用途向け
の演算処理装置が広く使用されるようになってきてい
る。このような構成の半導体チップ、すなわちマイクロ
コンピュータを有するシステムの開発、特にその最も重
要な工程の1つであるプログラムの開発段階において
は、プログラムの誤りを発見し修正するためのデバッグ
の支援システムとして、従来よりエミュレータ装置(I
CE:In Circuit Emulator )が用いられてきた。
【0003】従来のエミュレータ装置の一般的な構成を
図6に示す。図6に示すように、エミュレータ装置(I
CE)92は、エミュレーション処理をするための種々
のデータを記憶するエミュレーション・メモリ93、実
行されるアドレスおよび状態を順に記憶するためのトレ
ース・メモリ94、および、設定したブレークポイント
で動作を止めるためのブレークポイント回路95などの
構成部を有する。このエミュレータ装置92は、アドレ
スバス、データバス、制御信号線などの多数の信号線を
有するバス96を介して、マイクロプロセッサコア(C
PU)91を有する評価用チップ(エバチップ)90と
同一基板上であるいはケーブルで接続されている。そし
てこのような構成により、ブレークポイントを設定した
コードまたはアドレスで動作を止めたり、また、設定し
た所定期間のプログラムカウンタの値やデータなどをト
レースメモリ94に記憶してプログラムの動作軌跡を追
跡するなどして、評価用チップ90の動作をデバッグす
る。
【0004】ところで、最近のCPUの高速化などによ
り、図6に示したような従来のエミュレータ装置を用い
たデバッグが困難になっている。その最も大きな要因の
1つとして、ICEとエバチップ間のデータの伝送が、
CPUの高速化に追いつかない、すなわち、CPUの動
作周波数に応じたデータ伝送ができないという問題があ
る。これは、デバッグを行なう場合は動作周波数を遅く
してもいいチップ、システムであれば問題とならない
が、デバッグといえども、動作周波数を落とせないよう
なシステム、たとえば近年広く使用されるようになって
いる、リアルタイム処理を行なう組み込み型のチップに
おいては、致命的な問題となる。たとえば、VTRのサ
ーボ系の処理を行なうチップにおいては、ブレークすら
できずに制御対象を止めないで動作させなければならな
い場合や、ブレークするとモータが異常回転するなど何
らかの障害が発生する場合があり、従来のICEを使用
することはできない。
【0005】このような問題の解決策として、近年、い
わゆるオン・チップ・デバッグ機能搭載のチップが登場
してきている。マイクロプロセッサ・コアの内部バスに
直接アクセスできるデバッグ専用回路を設けたり、命令
セットにデバッグ専用命令を具えたりするなどしたチッ
プであり、経済的にも安価で済むことから急激に普及し
ている。しかしながら、そのようなオン・チップ・デバ
ッグ機能においては、ブレークやシングルステップ実行
は実現できるが、トレース機能に関しては、大容量のメ
モリ搭載がネックとなって実現できていない。そのた
め、トレース情報のみを外部に出すようにしている場合
が多い。またその場合、外部に出力する信号線の本数を
少なくするために、トレース情報を圧縮して出力するこ
となどが行なわれている。
【0006】そのようなオン・チップ・デバッグ機能を
有するマイクロプロセッサとしては、特開平5−158
734号公報に記載のマイクロプロセッサや、特開20
00−184581号公報に記載の情報処理装置があ
る。特開平5−158734号公報に記載のマイクロプ
ロセッサにおいては、分岐処理間の実行命令数を出力す
ることにより、トレース情報を出力しているものとして
いる。この時、間接分岐処理が起きた場合には分岐先ア
ドレスをも出力し、プログラムの追跡が行なえるように
している。直接分岐処理の場合は、分岐したことだけが
わかれば、命令を解析することにより分岐先を検出する
ことができるため、このような情報でも十分トレースが
行なえる。また、特開2000−184581号公報に
記載の情報処理装置においては、データ分岐情報をデー
タアクセス情報の間に挿入して切り換えて出力すること
により、また、分岐アドレスについては分岐元と分岐先
のアドレスの差分を用いることにより、出力するデータ
幅を小さくするようにしている。
【0007】
【発明が解決しようとする課題】しかしながら、これま
でのマイクロプロセッサにおいては、前述したようにト
レース情報を圧縮したとしても、未だある程度大きな容
量となり、出力しなければならない、または記憶しなけ
ればならない情報をより少なくしたいという要望があ
る。トレースメモリを十分小さくすることができれば、
チップ上にトレースメモリを搭載することも可能であ
る。そしてそのような形態は、トレースに関しては外部
のICEを利用せざるを得ないという現状の形態と比べ
て、よりデバッグが容易かつ安価に行なえるようになり
有効である。
【0008】したがって本発明の目的は、プログラムの
実行軌跡のトレースをするために記憶するデータ量を、
より少なくすることのできる演算処理装置を提供するこ
とにある。また、本発明の他の目的は、プログラムの実
行軌跡のトレースをするために記憶するデータ量を、よ
り少なくすることのできる演算処理装置のデバッグ方法
およびそのシステムを提供することにある。
【0009】
【課題を解決するための手段】前記課題を解決するため
に、本発明に係る演算処理装置は、一連の命令の列より
入力される各命令に基づいて所定の演算処理を実行する
演算処理手段と、前記実行される命令が、分岐命令であ
って、分岐成立時に分岐先の決定に前記一連の命令の列
以外の他の情報を必要とする間接分岐命令であることを
検出する分岐命令検出手段と、前記間接分岐命令が検出
された場合に、当該間接分岐命令の種類を示すコードお
よび前記分岐先を示す情報を出力する分岐情報出力手段
とを有する。
【0010】好適には、前記分岐命令検出手段は、さら
に、前記実行される命令が、分岐命令であって、分岐先
を前記一連の命令の列の情報より決定することのできる
直接分岐命令であることを検出し、前記分岐情報出力手
段は、前記直接分岐命令が検出された場合は、直前に実
行した分岐命令から当該検出した直接分岐命令までの間
に実行した命令の数を出力する。また好適には、前記出
力される各情報を記憶するトレースメモリをさらに有す
る。
【0011】また好適には、前記分岐情報出力手段は、
計数する直前に実行した分岐命令以降に順に実行する命
令の数が所定の出力最大数に達した場合は、当該所定の
数を出力し、前記計数する順に実行した命令の数より前
記出力最大数差し引いて、引き続き前記計数を続ける。
また好適には、前記間接分岐命令の種類を示すコードと
して、各間接分岐命令に対して、分岐命令のアドレスと
分岐先のアドレスの差が生じるLSB側のビット数に応
じて、複数のコードを割り当て、前記分岐情報出力手段
は、前記間接分岐命令が検出された場合に、当該間接分
岐命令の種類、および、当該間接分岐命令のアドレスお
よび分岐先のアドレスに基づいて前記コードを決定し、
当該決定したコードおよび前記分岐先アドレスの前記コ
ードに対応したLSB側の所定のビットを、前記分岐先
を示す情報として出力する。
【0012】また好適には、前記分岐情報出力手段は、
前記直接分岐命令が検出された場合であって、所定の期
間前記分岐先を示す情報が出力されなかった場合には、
当該分岐命令が直接分岐命令であることを示すコードお
よび分岐先を示す情報を出力する。特定的には、前記分
岐命令検出手段は、分岐命令であって、分岐先の決定に
メモリまたはレジスタの値の参照を必要とする命令を前
記間接分岐命令として検出する。また特定的には、前記
分岐命令検出手段は、レジスタまたはメモリの内容に基
づいて分岐先を決定するジャンプ命令、サブルーチンコ
ール命令、サブルーチンまたは割り込みからのリターン
命令、および、割り込み処理を前記間接分岐命令として
検出する。
【0013】また、本発明に係る演算処理装置のデバッ
グ方法は、演算処理手段において順次実行される命令
が、分岐命令であって、分岐先の決定に前記一連の命令
の列以外の他の情報を必要とする間接分岐命令であるこ
とを検出し、前記検出した間接分岐命令を、予め設定さ
れた当該間接分岐命令を示すコードに変換し、前記変換
したコードおよび前記分岐先を示す情報をトレース情報
として記憶する。
【0014】また、本発明に係る演算処理装置のデバッ
グシステムは、一連の命令の列より入力される各命令に
基づいて所定の演算処理を実行する演算処理手段と、前
記実行される命令が、分岐命令であって、分岐先の決定
に前記一連の命令の列以外の他の情報を必要とする間接
分岐命令であることを検出する分岐命令検出手段と、前
記間接分岐命令が検出された場合に、当該間接分岐命令
の種類を示すコードおよび前記分岐先を示す情報を出力
する分岐情報出力手段とを有する演算処理装置と、前記
出力される情報を記憶するトレースメモリとを有する。
【0015】
【発明の実施の形態】本発明の一実施の形態について図
1〜図5を参照して説明する。本実施の形態において
は、プログラマブルなマイコンやDSP、特定用途向け
のプロセッサ、特定用途向けIC(ASIC)などの、
ROMに記録したあるいはプログラムRAMにローディ
ングに従って所定の処理を行なうマイクロプロセッサ・
コア(CPU)を搭載した任意の集積回路であり、その
プログラム軌跡を追跡するためのトレース回路を収容し
た集積回路を示して本発明を説明する。図1は、その集
積回路の本発明に係わる構成部を示す回路図である。図
1に示すように、集積回路1は、マイクロプロセッサ・
コア(CPU)10およびデバッグ用トレース回路20
を有する。
【0016】まず、本実施の形態の集積回路の構成につ
いて説明する。CPU10は、図示しないプログラムメ
モリに記憶された実行プログラムに従って動作する演算
処理部である。CPU10は、集積回路1に搭載される
図示しない周辺回路、特定の機能を実現するための専用
回路、インターフェイス回路などとともに、集積回路1
の本来の処理を実行するための回路を構成する。そし
て、CPU10がこれらの各回路を制御することによ
り、集積回路1は所望の処理を行ない所望の機能を実現
する。この時CPU10は、実行した命令が分岐命令で
あって実際に分岐が成立した場合に、実行するプログラ
ムの制御がジャンプすることを示す分岐信号S2、およ
び、1つの命令が実行したことを示す命令完了信号S3
を各々デバッグ用トレース回路20に出力する。
【0017】CPU10に含まれる構成であって、本発
明に係わる構成部として、命令デコーダ11がある。命
令デコーダ11は、プログラムメモリから読み込んだ命
令をデコードしてCPU10で実行可能な形式に変換
し、実際に演算処理を行なう信号処理回路に供給する。
この時命令デコーダ11は、デコードした命令が間接分
岐命令であった場合に、その命令を示す信号S1をデバ
ッグ用トレース回路20に出力する。また、CPU10
で実行している命令のアドレスが流される32ビットの
アドレス・バス12は、そのままデバッグ用トレース回
路20においても参照される。
【0018】デバッグ用トレース回路20は、CPU1
0で実行するプログラムのデバッグのために、CPU1
0におけるプログラムの実行軌跡を追跡するためのデー
タを検出して記憶し、要求に応じて集積回路1より出力
する。図1に示すように、デバッグ用トレース回路20
は、命令実行数カウンタ21、OR回路22、ラッチ回
路23、コード化部24、アドレスラッチ25、マルチ
プレクサ26、FIFO27、トレースメモリ28、ア
ドレス・カウンタ29およびマルチプレクサ30を有す
る。なお、このデバッグ用トレース回路20は、集積回
路1がデバッグモードで使用された時のみ有効となる。
【0019】命令実行数カウンタ21は、CPU10に
おいて分岐命令間に実行される命令数をカウントする7
ビットのカウンタである。命令実行数カウンタ21は、
CPU10より出力される分岐が実行されたことを示す
分岐信号S2によりリセットされ、同じくCPU10よ
り出力される1つの命令が実行したことを示す命令完了
信号S3により1つずつカウントアップされる。また命
令実行数カウンタ21は、計数値が7ビットフルとなっ
た状態でカウントアップ状態となった場合、すなわち計
数値が127(7Fh(hは16進数表示であることを
示す。))となった場合には、次のサイクルにおいてオ
ーバーフロー信号OVFを出力し、計数値は0に戻る。
以後、再び0よりカウントを継続する。命令実行数カウ
ンタ21で計数された7ビットの計数値およびオーバー
フロー信号OVFは、オーバーフロー信号をMSBとす
る8ビットの信号としてラッチ回路23に出力される。
また、オーバーフロー信号OVFは、OR回路22にも
出力される。
【0020】OR回路22は、命令実行数カウンタ21
より出力されるデータをラッチ回路23がラッチするた
めの制御信号S4を生成し、ラッチ回路23に印加す
る。OR回路22は、CPU10より分岐命令を実行し
たことを示す分岐信号S2が出力された場合、または、
命令実行数カウンタ21よりオーバーフロー信号OVF
が出力された場合に、ラッチ回路23にラッチ信号S4
を出力する。
【0021】ラッチ回路23は、OR回路22より入力
されるラッチ信号S4に基づいて命令実行数カウンタ2
1より入力される8ビットの計数データをラッチし、マ
ルチプレクサ26に印加する。OR回路22からは、C
PU10より分岐信号S2が出力された場合、または、
命令実行数カウンタ21がオーバーフローした場合にラ
ッチ信号S4が出力される。したがって、ラッチ回路2
3には、まず、CPU10において分岐命令が実行され
た場合に、前の分岐命令から分岐せずに順次実行された
命令の数がラッチされる。また、CPU10において分
岐命令が実行される前に命令実行数カウンタ21の計数
値が128に達した場合に、その128(80h)とい
う値がセットされる。
【0022】コード化部24は、CPU10より入力さ
れる間接分岐命令S1に基づいて、CPU10で実行さ
れた間接分岐命令を表す所定のコードを生成し、マルチ
プレクサ26に出力する。本実施の形態においては、C
PU10においては図2に示すような3種類の間接分岐
命令、すなわち、レジスタ、メモリの内容に基づいて分
岐先が決定されるジャンプ命令、サブルーチンコール命
令、サブルーチンまたは割り込みからのリターンにより
スタックに記憶されているアドレスから処理を開始する
際の処理、および、割り込み処理による特定アドレスへ
のジャンプが規定されている。そして、これら各命令に
は、81h〜83hのコードが割り当てられている。し
たがって、コード化部24は、間接分岐命令S1に基づ
いて81h〜83hのいずれかのコードを生成し、マル
チプレクサ26に出力する。
【0023】アドレスラッチ25は、CPU10より分
岐が実行されたことを示す分岐信号S2が出力された場
合に、アドレス・バス12の値、すなわち、その分岐先
アドレスをラッチし、アドレスラッチ25に出力する。
【0024】マルチプレクサ26は、ラッチ回路23に
ラッチされた順次実行した命令の数、コード化部24に
おいて生成された間接分岐命令を示すコード、および、
アドレスラッチ25にラッチされた分岐先アドレスよ
り、CPU10で実行された命令のトレースに必要なデ
ータを適宜選択し、FIFO27に出力する。マルチプ
レクサ26は、CPU10より出力あれる各信号および
命令実行数カウンタ21におけるオーバーフロー信号O
VFに基づいて、選択する信号および順序を決定する。
【0025】具体的には、まず、CPU10で直接分岐
命令が実行された場合、すなわち、分岐命令を実行した
ことを示す分岐信号S2は出力されるものの間接分岐命
令S1が出力されなかった場合、マルチプレクサ26は
ラッチ回路23に記憶されている前の分岐命令から順次
実行した命令の数を示すデータを選択し、FIFO27
に出力する。また、CPU10で間接分岐命令が実行さ
れた場合、すなわち、間接分岐命令S1が出力された場
合には、マルチプレクサ26は、まずラッチ回路23に
記憶されている前の分岐命令から順次実行した命令の数
を示すデータを選択し、次にコード化部24より出力さ
れる間接分岐命令を示すコードを選択し、さらにアドレ
スラッチ25に記憶されている分岐先アドレスを選択
し、各々FIFO27に出力する。
【0026】また、分岐命令を実行したことを示す分岐
信号S2が出力されない状態で、命令実行数カウンタ2
1のカウント値がオーバーフローした場合、すなわちオ
ーバーフロー信号OVFが出力された場合には、このオ
ーバーフロー信号OVFに基づいてラッチ回路23に記
憶される値80hを選択し、FIFO27に出力する。
また、間接分岐命令S1が予め定めた所定の期間実行さ
れず、アドレスラッチ25を介した分岐先絶対アドレス
の記憶が所定の期間行なわれていない場合であって、次
にCPU10で直接分岐命令が実行された場合には、マ
ルチプレクサ26は、前述したようにラッチ回路23に
記憶されている前の分岐命令から順次実行した命令の数
を示すデータを選択した後、アドレスラッチ25に記憶
されている分岐先アドレスを選択し、FIFO27に出
力する。
【0027】FIFO27は、マルチプレクサ26で選
択され入力される種々のデータを、一時的に記憶し、順
次トレースメモリ28に出力する。前述したように、マ
ルチプレクサ26においてはCPU10における1つの
分岐命令の実行に対して複数のデータが選択される場合
がある。FIFO27は、トレースメモリ28における
データの記憶サイクルがデバッグ用トレース回路20に
おける処理、マルチプレクサ26における選択処理のサ
イクルより実質的に遅い場合であっても、マルチプレク
サ26で選択されたデータが適切に記憶されるように設
けられているバッファである。
【0028】トレースメモリ28は、アドレス・カウン
タ29で生成されマルチプレクサ30を介して入力され
るアドレスに、次マルチプレクサ30よりFIFO27
より順次入力されるデータを、順に記憶するメモリであ
る。トレースメモリ28は、数百〜数kバイトの容量の
メモリである。なお、トレースメモリ28には、図示し
ないが、メモリテストなどの目的で、CPUのデータバ
スからデータ入力が行なえるようになっている。
【0029】アドレス・カウンタ29は、トレースメモ
リ28にデータを記憶するアドレスを生成するカウンタ
であり、FIFO27より記憶するデータがトレースメ
モリ28に印加されるごとに、順に1ずつカウントアッ
プする。
【0030】マルチプレクサ30は、トレースメモリ2
8にデータを記憶する時と、トレースメモリ28に記憶
されたデータを読み出す時に、トレースメモリ28に印
加するアドレスを切り換えるスイッチである。トレース
メモリ28にデータを記憶する際は、アドレス・カウン
タ29で生成するアドレスを使用するので、マルチプレ
クサ30はアドレス・カウンタ29の出力を選択しトレ
ースメモリ28に印加する。また、アドレス・カウンタ
29に記憶したデータを読み出す時には、マルチプレク
サ30は、集積回路1の外部から入力される命令に基づ
いてデバッグ用トレース回路20の外部において生成さ
れたアドレス信号を選択し、トレースメモリ28に印加
する。
【0031】次に、このような構成の集積回路1の動作
について、図3を参照して説明する。なおここでは、本
発明に係わる集積回路1がデバッグモードで駆動された
時の動作について説明する。集積回路1においては、ま
ず、図示せぬプログラムROMなどに記憶された命令が
順に読み出され、命令デコーダ11においてデコードさ
れてCPU10の信号処理回路に実際に供されるコード
が生成され、実行される。この時、デコードした命令が
間接分岐命令だった場合には、命令デコーダ11はその
間接分岐命令を示す信号S1を出力する。また、このよ
うにして実行された命令が終了した場合には、CPU1
0は命令の実行が終了したことを示す命令完了信号S3
を出力する。そして、アドレス・バス12は、次の実行
アドレスが出力された状態となる。また、この時実行さ
れた命令が分岐命令であった場合には、CPU10は分
岐命令を実行したことを示す分岐信号S2を出力する。
【0032】このようにして順次命令が実行される状態
において、デバッグ用トレース回路20は、間接分岐命
令を示す信号S1、分岐命令を実行したことを示す分岐
信号S2、命令が実行したことを示す命令完了信号S3
および命令実行数カウンタ21のオーバーフロー信号O
VFなどに基づいて、適宜トレースデータをトレースメ
モリ28に記憶していく。
【0033】まず、分岐命令でない命令が実行される期
間は、1つの命令が実行したことを示す命令完了信号S
3に基づいて命令実行数カウンタ21が順にカウントア
ップされ、順次実行された命令の数が計数される。そし
て、たとえば図3(A)に示すように、n1個の命令が
実行された状態で、CPU10において直接分岐命令が
実行された場合には、分岐命令を実行したことを示す分
岐信号S2がOR回路22を介してラッチ信号としてラ
ッチ回路23に印加され、命令実行数カウンタ21で計
数されていた値n1がラッチ回路23にラッチされる。
また、同時にこの分岐命令を実行したことを示す分岐信
号S2により、命令実行数カウンタ21の値はリセット
される。そして、このラッチ回路23にラッチされた値
がマルチプレクサ26により選択され、FIFO27を
介してトレースメモリ28に記憶される。その結果、ト
レースメモリ28には、図3(B)に示すようにまずデ
ータn1が記憶される。
【0034】このような直接分岐命令が実行され、図3
(A)に示すようにさらにn2個の命令が順に実行され
た後、今度はCPU10において間接分岐命令が実行さ
れたとする。この場合も、まず分岐信号S2がOR回路
22を介してラッチ信号としてラッチ回路23に印加さ
れ、命令実行数カウンタ21で計数されていた値n2が
ラッチ回路23にラッチされる。また、分岐信号S2に
より命令実行数カウンタ21の値はリセットされる。ま
た、間接分岐命令が実行された場合には、その命令を示
す信号S1がCPU10より出力され、コード化部24
においてこれがコードに変換される。また、アドレス・
バス12には、分岐先アドレスが出力され、これがアド
レスラッチ25にラッチされる。
【0035】そして、マルチプレクサ26において、ま
ずラッチ回路23に記憶されている実行命令数n2が選
択され、さらにコード化部24で生成された分岐命令を
示すコードが選択され、最後にアドレスラッチ25にラ
ッチされた分岐先アドレスがラッチされ、各々FIFO
27を介してトレースメモリ28に出力される。その結
果、トレースメモリ28には、図3(B)に示すように
n2、命令識別コードおよび分岐先アドレスというデー
タが順に記憶される。
【0036】以後、分岐処理が実行されるごとに同様の
処理が行なわれ、トレース情報がトレースメモリ28に
記憶される。
【0037】なお、このような処理を行なっている際
に、分岐命令が実行を実行されない状態で命令実行数カ
ウンタ21のカウント値がオーバーフローした場合に
は、、すなわちオーバーフロー信号OVFが出力された
場合には、このオーバーフロー信号OVFがOR回路2
2を介してラッチ信号としてラッチ回路23に印加さ
れ、命令実行数カウンタ21の値0およびオーバーフロ
ー信号OVFにより生成される値80hがラッチ回路2
3にラッチされる。なお命令実行数カウンタ21の値
は、オーバーフロー時点で00hであり、次の命令実行
により自動的に1よりカウントされる。そして、ラッチ
回路23に記憶された値は、マルチプレクサ26により
選択され、FIFO27を介してトレースメモリ28に
記憶される。
【0038】また、間接分岐命令S1が予め定めた所定
の期間実行されず、アドレスラッチ25を介した分岐先
アドレスの記憶が所定の期間行なわれていない場合であ
って、次にCPU10で直接分岐命令が実行された場合
には、前述したようにラッチ回路23に記憶されている
命令の数を示すデータに続いて、アドレスラッチ25に
記憶され通常は利用されていない分岐先アドレスのデー
タをも選択し、FIFO27を介してトレースメモリ2
8に記憶する。
【0039】最後に、このようにして記憶されたトレー
ス結果のデータについて図4を参照して説明する。前述
したように順次データを記憶していくことにより、トレ
ースデータは、8ビットの連続して実行した命令数、同
じく8ビットの間接分岐命令を示すコードおよび32ビ
ットのアドレスデータとなる。このアドレスデータ以外
の8ビットのデータは、図4に示すようにそのデータが
割り当てられる。すなわち、00h〜7Fhの値は、分
岐元アドレスまでの相対的な命令数を示すデータとな
る。また、80hは、分岐をせずに順に実行される命令
が80h(128)以上さらに連続していることを示す
データとなる。そして81h〜FFhのデータは、間接
分岐命令を示すコードとなる。
【0040】このようにトレースデータの割り振りが行
なわれているため、わずか8ビットのデータで、連続し
て実行される任意の数の命令、種々の間接分岐命令に識
別などを行なうことができる。また、図4のようにデー
タを割る振ることにより、たとえばMSBをチェックす
るのみで命令数を示すデータか間接分岐命令を示すデー
タかを区別することができる。その結果、記憶したトレ
ースデータの解析は非常に簡単になる。
【0041】このように、本実施の形態の集積回路1に
おいては、CPU10において分岐命令が実行されるご
とに、分岐元アドレスおよび分岐先アドレスを知ること
のデータをトレースメモリ28に記憶している。したが
って、適切にプログラムの実行軌跡を追跡することがで
き、有効にデバッグを行なうことができる。
【0042】そしえ、その記憶するデータとしては、命
令を示すデータは間接分岐命令のみ記憶し直接分岐命令
は記憶していない。したがって、記憶するデータを大幅
に削減することができる。なお、直接分岐命令は、分岐
アドレスがわかればプログラムを解析することにより分
岐命令を知ることができるので、後のプログラム実行軌
跡をトレースする際には何ら問題は生じない。また、間
接分岐命令については、たとえば32ビットというよう
なビット幅の命令をそのまま記憶するのではなく、たと
えば8ビットのコードにより記憶している。したがっ
て、記憶するデータ量をさらに削減することができる。
【0043】また、分岐先アドレスの記憶は、プログラ
ムより分岐先アドレスを決定することのできない間接分
岐命令のみに限定しており、直接分岐命令については記
憶していない。したがって、この点でも記憶するデータ
を大幅に削減することができる。なお、この直接分岐命
令については、後にプログラムを解析することにより分
岐先アドレスを知ることができるので、実行軌跡をトレ
ースする上では何ら問題はない。さらに、分岐命令を実
行した分岐元アドレスは、直前の分岐命令からの命令実
行数として記憶している。その結果、分岐が発生したア
ドレスを直接する必要はなく、この点でも記憶するデー
タを大幅に削減することができる。
【0044】なお、本実施の形態の集積回路1において
は、このように分岐元アドレスおよび分岐先アドレス
を、主にプログラムの解析および相対的な数値により検
出するようにしており、直接的にアドレスを記憶するの
は間接分岐命令が実行された時のみである。しかしなが
ら、あまりに間接分岐命令が実行されず、絶対アドレス
がある程度長い期間記憶されなかった場合には、直接分
岐命令の後であっても強制的に絶対アドレスを記憶する
ようにしている。したがって、後にトレースデータを解
析する場合や、記憶したデータをチェックする場合にこ
れらを参照することができる。その結果、解析の容易
さ、至便さ、および、データの信頼性が維持される。
【0045】そして、このようにトレースデータのデー
タ量を著しく削減することができた結果、トレースメモ
リ28はたとえば数kバイト程度あれば十分トレースが
行なえるものとなり、トレースメモリ28を集積回路1
に収容することが可能となる。そしてその結果、エミュ
レータ装置を用いて外部にトレースメモリを設けてデバ
ッグを行なう場合に比べて、集積回路1のデバッグが著
しく容易になり、またそのための費用も削減することが
できる。
【0046】なお、本発明は本実施の形態に限られるも
のではなく、任意好適な種々の改変が可能である。たと
えば、前述した実施の形態においては、間接分岐命令を
実行した場合の分岐先アドレスは、32ビットのアドレ
ス全てを記憶していた。しかし、任意の手段によりデー
タ量を削減して記憶するようにしてもよい。たとえば、
通常のプログラムでは、分岐先アドレスは分岐元アドレ
スに比較的近い場合が多い。換言すれば、分岐元アドレ
スと分岐先アドレスの上位部分は一致する場合が多い。
このことを利用すれば、たとえば分岐先アドレスとし
て、分岐元アドレスと相違する下位部分のみを記憶する
などの方法も可能であり、トレースメモリに記憶するデ
ータ量を削減することができる。
【0047】その具体例として、分岐元アドレスと分岐
先アドレスの上位ビットが等しい場合には、分岐先アド
レスとして下位16ビットのみを記憶するようにするた
めのアドレス選択回路を図5に示す。なお、図5に示す
記憶アドレス選択回路40は、図1に示した集積回路1
のアドレスラッチ25に代えて配置するのに好適な回路
である。以下、アドレスラッチ25の代わりに記憶アド
レス選択回路40が配置されたものとして説明を行な
う。
【0048】図5に示すように、記憶アドレス選択回路
40は、分岐元アドレス・ラッチ41、分岐先アドレス
・ラッチ42、上位アドレス・コンパレータ43および
マルチプレクサ44を有する。分岐元アドレス・ラッチ
41は、CPU10で分岐命令が実行されていない時に
はアドレス・バス12に出力されるアドレスを毎サイク
ル順次ラッチする。また、分岐命令が実行された場合に
は、アドレスのラッチを行なわず、その前のサイクルで
記憶したアドレスを維持する。分岐先アドレス・ラッチ
42は、CPU10分岐命令が実行された場合に、分岐
元アドレス・ラッチ41に出力されているアドレス、す
なわち分岐先アドレスをラッチする。
【0049】上位アドレス・コンパレータ43は、分岐
元アドレス・ラッチ41にラッチされた分岐元アドレス
と、分岐先アドレス・ラッチ42にラッチされた分岐先
アドレスの上位16ビットを比較し、全てのビットが一
致したか否かを示す信号をマルチプレクサ44に出力す
る。マルチプレクサ44は、上位アドレス・コンパレー
タ43より、分岐元アドレスと分岐先アドレスの上位1
6ビットが一致したことを示す信号が入力された場合に
は、分岐先アドレス・ラッチ42にラッチされている分
岐先アドレスの下位16ビットのみを選択し、マルチプ
レクサ26に出力する。また、分岐元アドレスと分岐先
アドレスの上位16ビットが一致していないことを示す
信号が入力された場合には、分岐先アドレス・ラッチ4
2にラッチされている32ビットの分岐先アドレス全て
をマルチプレクサ26に出力する。
【0050】そして、このような回路によりトレースメ
モリ28に絶対アドレスの下位ビットのみを記憶する場
合には、コード化部24において、同じ分岐命令に対し
ても異なるコードを割り当てておけば、容易にその記憶
状態を区別することができる。すなわち、図2に示した
ようなコード81h〜83hが割り当てられている各間
接分岐命令に対して、それに続く分岐先アドレスデータ
が下位ビットのみ記憶される場合には、MSBの1ビッ
トLSB側のビットを1とするような別のコード、すな
わちC1h〜C3hを割り当てる。このようにすれば、
分岐先アドレスを記憶する形態が増える、すなわち32
ビット全てを記憶する場合と下位16ビットのみを記憶
する場合という2つの形態が存在しても、それを区別す
るためにデータ量が増えることがなく、好適である。ま
た、その区別も容易に行なえる。
【0051】また、本実施の形態においては、間接分岐
命令のみをコード化して記憶するものとしたが、その
他、トレースメモリ28に記憶する必要のある任意の情
報を、コード化して記憶するようにしてもよい。
【0052】
【発明の効果】このように、本発明によれば、プログラ
ムの実行軌跡のトレースをするために記憶するデータ量
を、より少なくすることのできる演算処理装置を提供す
ることができる。また、プログラムの実行軌跡のトレー
スをするために記憶するデータ量を、より少なくするこ
とのできる演算処理装置のデバッグ方法およびそのシス
テムを提供することができる。
【図面の簡単な説明】
【図1】図1は、本発明の一実施の形態の集積回路の本
発明に係わる構成部を示す回路図である。
【図2】図2は、図1に示した集積回路のコード化部で
生成される、CPUで実行される間接分岐命令に対応付
けられたコードを示す図である。
【図3】図3は、図1に示した集積回路の動作を説明す
るための図である。
【図4】図4は、図1に示した集積回路のデバッグ用ト
レース回路より出力されるトレースデータの構成を説明
するための図である。
【図5】図5は、トレースメモリ28に記憶する分岐先
アドレスを適宜下位16ビットのみとするための記憶ア
ドレス選択回路の構成を示すブロック図である。
【図6】図6は、従来のエミュレータ装置の構成および
従来のデバッグ方法を説明するための図である。
【符号の説明】
1…集積回路、10…CPU、11…命令デコーダ、1
2…アドレス・バス、20…デバッグ用トレース回路、
21…命令実行数カウンタ、22…OR回路、23…ラ
ッチ回路、24…コード化部、25…アドレスラッチ、
26…マルチプレクサ、27…FIFO、28…トレー
スメモリ、29…アドレス・カウンタ、30…マルチプ
レクサ、40…記憶アドレス選択回路、41…分岐元ア
ドレス・ラッチ、42…分岐先アドレス・ラッチ、43
…上位アドレス・コンパレータ、44…マルチプレク
サ、90…エバチップ、91…マイクロプロセッサコ
ア、92…エミュレータ装置、93…エミュレーション
・メモリ、94…トレース・メモリ、95…ブレークポ
イント回路

Claims (16)

    【特許請求の範囲】
  1. 【請求項1】一連の命令の列より入力される各命令に基
    づいて所定の演算処理を実行する演算処理手段と、 前記実行される命令が、分岐命令であって、分岐成立時
    に分岐先の決定に前記一連の命令の列以外の他の情報を
    必要とする間接分岐命令であることを検出する分岐命令
    検出手段と、 前記間接分岐命令が検出された場合に、当該間接分岐命
    令の種類を示すコードおよび前記分岐先を示す情報を出
    力する分岐情報出力手段とを有する演算処理装置。
  2. 【請求項2】前記分岐命令検出手段は、さらに、前記実
    行される命令が、分岐命令であって、分岐先を前記一連
    の命令の列の情報より決定することのできる直接分岐命
    令であることを検出し、 前記分岐情報出力手段は、前記直接分岐命令が検出され
    た場合は、直前に実行した分岐命令から当該検出した直
    接分岐命令までの間に実行した命令の数を出力する請求
    項1に記載の演算処理装置。
  3. 【請求項3】前記出力される各情報を記憶するトレース
    メモリをさらに有する請求項2に記載の演算処理装置。
  4. 【請求項4】前記分岐情報出力手段は、計数する直前に
    実行した分岐命令以降に順に実行する命令の数が所定の
    出力最大数に達した場合は、当該所定の数を出力し、前
    記計数する順に実行した命令の数より前記出力最大数差
    し引いて、引き続き前記計数を続ける請求項3に記載の
    演算処理装置。
  5. 【請求項5】前記間接分岐命令の種類を示すコードとし
    て、各間接分岐命令に対して、分岐命令のアドレスと分
    岐先のアドレスの差が生じるLSB側のビット数に応じ
    て、複数のコードを割り当て、 前記分岐情報出力手段は、前記間接分岐命令が検出され
    た場合に、当該間接分岐命令の種類、および、当該間接
    分岐命令のアドレスおよび分岐先のアドレスに基づいて
    前記コードを決定し、当該決定したコードおよび前記分
    岐先アドレスの前記コードに対応したLSB側の所定の
    ビットを、前記分岐先を示す情報として出力する請求項
    3に記載の演算処理装置。
  6. 【請求項6】前記分岐情報出力手段は、前記直接分岐命
    令が検出された場合であって、所定の期間前記分岐先を
    示す情報が出力されなかった場合には、当該分岐命令が
    直接分岐命令であることを示すコードおよび分岐先を示
    す情報を出力する請求項3に記載の演算処理装置。
  7. 【請求項7】前記分岐命令検出手段は、分岐命令であっ
    て、分岐先の決定にメモリまたはレジスタの値の参照を
    必要とする命令を前記間接分岐命令として検出する請求
    項3に記載の演算処理装置。
  8. 【請求項8】前記分岐命令検出手段は、レジスタまたは
    メモリの内容に基づいて分岐先を決定するジャンプ命
    令、サブルーチンコール命令、サブルーチンまたは割り
    込みからのリターン命令、および、割り込み処理を前記
    間接分岐命令として検出する請求項3に記載の演算処理
    装置。
  9. 【請求項9】演算処理手段において順次実行される命令
    が、分岐命令であって、分岐先の決定に前記一連の命令
    の列以外の他の情報を必要とする間接分岐命令であるこ
    とを検出し、 前記検出した間接分岐命令を、予め設定された当該間接
    分岐命令を示すコードに変換し、 前記変換したコードおよび前記分岐先を示す情報をトレ
    ース情報として記憶する演算処理装置のデバッグ方法。
  10. 【請求項10】さらに、前記演算処理手段において順次
    実行される命令が、分岐命令であって、分岐先を前記一
    連の命令の列の情報より決定することのできる直接分岐
    命令であることを検出し、 直前に実行した分岐命令から前記検出した直接分岐命令
    までの間に実行した命令の数を検出し、 前記検出した命令の数をトレース情報として記憶する。
    請求項9に記載の演算処理装置のデバッグ方法。
  11. 【請求項11】直前に実行した分岐命令以降に順に実行
    する命令の数を計数し、 前記計数する命令の数が所定の出力最大数に達した場合
    は、当該所定の数を出力し、 前記計数する実行した命令の数より前記出力最大数差し
    引いて、 引き続き前記計数を続ける請求項10に記載の演算処理
    装置のデバッグ方法。
  12. 【請求項12】前記間接分岐命令の種類を示すコードと
    して、各間接分岐命令に対して、分岐命令のアドレスと
    分岐先のアドレスの差が生じるLSB側のビット数に応
    じて、複数のコードを割り当て、 前記間接分岐命令が検出された場合に、当該間接分岐命
    令の種類、および、当該間接分岐命令のアドレスおよび
    分岐先のアドレスに基づいて前記コードを決定し、 当該決定したコードおよび前記分岐先アドレスの前記コ
    ードに対応したLSB側の所定のビットを、前記分岐先
    を示す情報として出力する請求項10に記載の演算処理
    装置のデバッグ方法。
  13. 【請求項13】前記直接分岐命令が検出された場合であ
    って、所定の期間前記分岐先を示す情報が出力されなか
    った場合には、当該分岐命令が直接分岐命令であること
    を示すコードおよび分岐先を示す情報を出力する請求項
    10に記載の演算処理装置のデバッグ方法。
  14. 【請求項14】前記間接分岐命令の検出は、分岐命令で
    あって、分岐先の決定にメモリまたはレジスタの値の参
    照を必要とする命令を前記間接分岐命令として検出する
    ことにより行なう請求項10に記載の演算処理装置のデ
    バッグ方法。
  15. 【請求項15】前記間接分岐命令の検出は、レジスタま
    たはメモリの内容に基づいて分岐先を決定するジャンプ
    命令、サブルーチンコール命令、サブルーチンまたは割
    り込みからのリターン命令、および、割り込み処理を前
    記間接分岐命令として検出することにより行なう請求項
    10に記載の演算処理装置のデバッグ方法。
  16. 【請求項16】一連の命令の列より入力される各命令に
    基づいて所定の演算処理を実行する演算処理手段と、 前記実行される命令が、分岐命令であって、分岐先の決
    定に前記一連の命令の列以外の他の情報を必要とする間
    接分岐命令であることを検出する分岐命令検出手段と、 前記間接分岐命令が検出された場合に、当該間接分岐命
    令の種類を示すコードおよび前記分岐先を示す情報を出
    力する分岐情報出力手段とを有する演算処理装置と、 前記出力される情報を記憶するトレースメモリとを有す
    る演算処理装置のデバッグシステム。
JP2000373478A 2000-12-07 2000-12-07 演算処理装置および演算処理装置のデバッグ方法とそのシステム Pending JP2002175198A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2000373478A JP2002175198A (ja) 2000-12-07 2000-12-07 演算処理装置および演算処理装置のデバッグ方法とそのシステム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2000373478A JP2002175198A (ja) 2000-12-07 2000-12-07 演算処理装置および演算処理装置のデバッグ方法とそのシステム

Publications (1)

Publication Number Publication Date
JP2002175198A true JP2002175198A (ja) 2002-06-21

Family

ID=18842857

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2000373478A Pending JP2002175198A (ja) 2000-12-07 2000-12-07 演算処理装置および演算処理装置のデバッグ方法とそのシステム

Country Status (1)

Country Link
JP (1) JP2002175198A (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007323636A (ja) * 2006-05-30 2007-12-13 Arm Ltd 命令の追跡中に作られるデータ・ストリームの大きさの削減
WO2009031210A1 (ja) * 2007-09-05 2009-03-12 Fujitsu Limited 情報処理装置、情報処理装置の制御方法および制御プログラム
JP2015064865A (ja) * 2013-08-29 2015-04-09 株式会社デンソー マイクロコンピュータ
JP2016177564A (ja) * 2015-03-20 2016-10-06 Necプラットフォームズ株式会社 デバッグ制御回路及びデバッグ制御方法

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007323636A (ja) * 2006-05-30 2007-12-13 Arm Ltd 命令の追跡中に作られるデータ・ストリームの大きさの削減
JP2012160200A (ja) * 2006-05-30 2012-08-23 Arm Ltd 命令の追跡中に作られるデータ・ストリームの大きさの削減
JP2014220003A (ja) * 2006-05-30 2014-11-20 エイアールエム リミテッド 命令の追跡中に作られるデータ・ストリームの大きさの削減
WO2009031210A1 (ja) * 2007-09-05 2009-03-12 Fujitsu Limited 情報処理装置、情報処理装置の制御方法および制御プログラム
JP2015064865A (ja) * 2013-08-29 2015-04-09 株式会社デンソー マイクロコンピュータ
JP2016177564A (ja) * 2015-03-20 2016-10-06 Necプラットフォームズ株式会社 デバッグ制御回路及びデバッグ制御方法

Similar Documents

Publication Publication Date Title
EP0127440A2 (en) Integrated circuit device incorporating a data processing unit and a ROM storing applications program therein
US5632024A (en) Microcomputer executing compressed program and generating compressed branch addresses
US5263168A (en) Circuitry for automatically entering and terminating an initialization mode in a data processing system in response to a control signal
EP0702297B1 (en) A data processor with breakpoint circuit
US20030192034A1 (en) Trace device preventing loss of trace information which will be important in debugging
US3813531A (en) Diagnostic checking apparatus
US5475852A (en) Microprocessor implementing single-step or sequential microcode execution while in test mode
US6158023A (en) Debug apparatus
JP2002175198A (ja) 演算処理装置および演算処理装置のデバッグ方法とそのシステム
US4679194A (en) Load double test instruction
US6839834B2 (en) Microprocessor protected against parasitic interrupt signals
JPH1031595A (ja) シミュレーション装置及びシミュレーション方法
CN113127273B (zh) 单片机检测电路及相应的检测的方法
KR940011040B1 (ko) 마이크로컴퓨터
US6005502A (en) Method for reducing the number of bits needed for the representation of constant values in a data processing device
US5121393A (en) System for testing a microprocessor
US20010052114A1 (en) Data processing apparatus
EP0467448A2 (en) Processing device and method of programming such a processing device
EP1403768A2 (en) Processor system, processor and arithmetic processing method
JP4305389B2 (ja) 時間追跡可能メッセージを送信することによるマイクロプロセッサプログラムの監視
JPH11353205A (ja) トレースメモリ内蔵のプロセッサ
JPH1011315A (ja) インサーキットエミュレータ装置およびインサーキットエミュレーション方法
US5732252A (en) Program counter system capable of incrementing or decrementing after a conditional jump instruction
KR100244472B1 (ko) 분기예측회로
KR100304976B1 (ko) 인터럽트 발생 회로