(57)【特許請求の範囲】
【請求項１】
一つのパッケージ内に、それぞれオンチップデバックを実行可能な第１及び第２のマイクロプロセッサが搭載されて成るマイクロプロセッサシステムであって、
第１のマイクロプロセッサは、ユーザプログラムを実行可能な第１の中央処理装置と、予め設定されているブレーク条件が成立したことを判別してブレーク制御を行う第１ブレーク制御回路とを有し、
前記第２のマイクロプロセッサは、ユーザプログラムを実行可能な第２の中央処理装置と、予め設定されているブレーク条件が成立したことを判別してブレーク制御を行う第２ブレーク制御回路とを有し、
前記第１ブレーク制御回路及び第２ブレーク制御回路は、前記ブレーク条件が成立してブレークモードに移行したとき、ブレークモードを示す制御信号を出力可能とされ、
前記第１のマイクロプロセッサ及び前記第２のマイクロプロセッサは、一方のマイクロプロセッサがブレークモードからの復帰の際に命令待ち状態になり、他方のマイクロプロセッサのブレークモードからの復帰の際に当該他方のマイクロプロセッサから出力される所定の信号に応じて前記一方のマイクロプロセッサの命令待ち状態が解除されることにより、ブレークモードからの復帰後のユーザプログラム実行開始時点での同期処理が可能とされて成ることを特徴とするマイクロプロセッサシステム。
【請求項２】
前記第１及び第２のマイクロプロセッサは、前記ブレークモードに移行したとき、メモリに格納される所定のプログラムを実行することを特徴とする請求項１記載のマイクロプロセッサシステム。
【請求項３】
前記マイクロプロセッサシステムは、一台のエミュレータを接続可能であって、
前記エミュレータは、前記ブレークモードに移行したときエミュレーション動作を制御することが可能であることを特徴とする請求項２記載のマイクロプロセッサシステム。
【請求項４】
前記第１及び第２の中央処理装置は、所定の命令を実行することで、前記ユーザモードへ移行するための復帰処理を行うことが可能であることを特徴とする請求項３記載のマイクロプロセッサシステム。
【請求項５】
前記第１及び第２の中央処理装置は、ブレークモードからの復帰の際に復帰命令を実行したとき、前記ブレークモードに移行するときに保持していたプログラムカウンタの値をアンスタックすることを特徴とする請求項４記載のマイクロプロセッサシステム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、マイクロコンピュータ、さらにはそれにおけるシステムデバッグのためのエミュレーションシステムに関する。
【０００２】
【従来の技術】
マイクロプロセッサ（マイクロコンピュータ）応用機器の開発において、その応用システムのデバッグやそのシステムの詳細な評価を行うため、インサーキットエミュレータが使用されている。インサーキットエミュレータは、ソフトウェア開発用の親計算機と、開発中のターゲットシステムとの間に接続され、そのターゲットシステムに含まれるマイクロプロセッサ（ターゲットプロセッサ）の機能を代行する一方でデバッガとしての機能をもち、詳細なシステムデバッグを支援する。かかるエミュレータは、その本体から延長されたケーブルの先端が、ターゲットプロセッサ用ソケットなどの接栓を介してターゲットシステムに結合可能とされ、さらに、エミュレーション実行中に各種データやステータス信号などを実時間でサンプリングし、それをトレースメモリ部などに格納する実時間トレース機能やエミュレーション動作を実質的に停止させるブレーク機能などの各種デバッグ機能を備える。
【０００３】
また、実チップでありながら、ソフトウェアの実行状態をリアルタイムにトレースするための機能や、デバッグのために内蔵ＲＡＭ（ランダム・アクセス・メモリ）に対するデータのリード／ライトを可能とするオンチップデバッグ機能を備えたマイクロコンピュータが提供されている。ここで、実チップとは、ユーザシステムに実際に搭載されるＣＰＵを指し、エミュレーションにおける必要情報を外部出力可能に構成されたエミュレーション用チップと区別される。
【０００４】
尚、エミュレータの動作について記載された文献の例としては、１９８９年６月２０日に電波新聞社から発行された「マイコン開発のすべて（第７８頁から第９５頁）」がある。
【０００５】
【発明が解決しようとする課題】
ユーザシステムによっては、処理能力の向上を図るため、複数のＣＰＵ（中央処理装置）が搭載されることがある。従来のエミュレーションにおいては、基本的に一つのＣＰＵ毎に１台のエミュレータが必要とされているため、例えば２個のＣＰＵが搭載されるユーザシステムにおいては、基本的には２台のエミュレータが必要とされる。
【０００６】
しかしながら、２個のＣＰＵが搭載されるユーザシステムに、２台のエミュレータを繋いだとしても、２個のＣＰＵ相互間の同期がとれていないために、同時にエミュレーション実行することはできない。つまり、ユーザシステムに２台のエミュレータを繋いだとしても、一方のエミュレーション中は、他方のエミュレータにおいてターゲットプログラムの実行が停止されるが、あるいは、一方のエミュレーション中は、他方のＣＰＵソケットには実チップを装着するようにしていた。
【０００７】
上記のように２個のＣＰＵが搭載されるユーザシステムのエミュレーションにおいては、例え２台のエミュレータを繋いだとしても、別々にエミュレーションしなければならないため、ユーザシステムの開発効率の向上が妨げられた。
【０００８】
本発明の目的は、ユーザシステムの開発効率の向上を図るための技術を提供することにある。
【０００９】
本発明の別の目的は、複数のＣＰＵを有するユーザシステムのエミュレーションにおいてターゲットプログラムの同時実行を可能とするための技術を提供することにある。
【００１０】
本発明の前記並びにその他の目的と新規な特徴は本明細書の記述及び添付図面から明らかになるであろう。
【００１１】
【課題を解決するための手段】
本願において開示される発明のうち代表的なものの概要を簡単に説明すれば下記の通りである。
【００１２】
すなわち、ユーザプログラム実行中にブレーク条件が成立することにより、ブレークモードに遷移するためのスタック処理を行い、ブレークモードにおいてブレークモードから復帰するための復帰命令を実行することでユーザモードへ遷移するためのアンスタック処理を行う中央処理装置と、上記アンスタック後に、上記中央処理装置を命令待ち状態に遷移させるためのフォルト信号をアサートし、上記中央処理装置の命令待ち状態で、その命令待ち状態の解除要求信号がアサートされることにより、上記中央処理装置の命令待ち状態を解除する制御手段とを含んでマイクロプロセッサを構成する。
【００１３】
上記の手段によれば、制御手段は、フォルト信号をアサートし、上記中央処理装置の命令待ち状態で、その命令待ち状態の解除要求信号がアサートされることにより、上記中央処理装置の命令待ち状態を解除する。このことが、異なるマイクロプロセッサを同期化させ、エミューションの並列化によりユーザシステムの開発効率の向上を達成する。
【００１４】
また、ユーザプログラム実行中にブレーク条件が成立することにより、ブレークモードに遷移するためのスタック処理を行い、ブレークモードにおいてブレークモードから復帰するための復帰命令を実行することでユーザモードへ遷移するためのアンスタック処理を行う中央処理装置と、上下関係の判別フラグを記憶するための判別フラグ記憶手段と、上記判別フラグ記憶手段に記憶されている判別フラグの状態が上位を示す場合、マイクロプロセッサの外部に出力される命令待ち状態の解除要求信号を上記アンスタック処理後にアサートする第１制御手段と、上記判別フラグ記憶手段に記憶されている判別フラグの状態が下位を示す場合、上記アンスタック後に、上記中央処理装置を命令待ち状態に遷移させるためのフォルト信号をアサートし、上記中央処理装置の命令待ち状態で、その解除要求信号がアサートされることにより、上記中央処理装置の命令待ち状態を解除する第２制御手段とを含んでマイクロプロセッサを構成する。
【００１５】
上記の手段によれば、第２制御手段は、フォルト信号をアサートし、上記中央処理装置の命令待ち状態で、その命令待ち状態の解除要求信号をアサートすることにより、上記中央処理装置の命令待ち状態を解除する。このことが、異なるマイクロプロセッサを同期化させ、エミューションの並列化によりユーザシステムの開発効率の向上を達成する。
【００１６】
このとき、外部からのバスリクエスト又はバス開放要求に応じて、上記中央処理装置を命令実行待ち状態に遷移させるためのフォルト信号をアサートするバスコントローラと、上記バスコントローラからのフォルト信号と上記フォルト制御回路からのフォルト信号との論理和を得てそれを上記中央処理装置に供給するゲート回路とを設けることができる。
【００１７】
そしてそのようなマイクロプロセッサと、エミュレータ本体とを含んでエミュレーションシステムを構成する。
【００１８】
【発明の実施の形態】
図５には本発明にかかるエミュレーションシステムの全体的な構成例が示される。
【００１９】
図５に示されるようにこのエミュレーションシステムは、特に制限されないが、ユーザシステム５１に搭載された第１エミュレーションプロセッサ５１１及び第２エミュレーションプロセッサ５１２、エミューレータ本体５２、及び制御コンピュータ５３とを含む。
【００２０】
ユーザシステム５１は、２個のＣＰＵソケットを有し、それぞれＣＰＵが装着される。第１エミュレーションプロセッサ５１１及び第２エミュレーションプロセッサ５１２は、基本的には、当該ユーザシステム５１に本来搭載される実チップと同等の機能を有するとともに、内部バス情報の外部出力が可能に構成されたエミュレーション用チップとされる。
【００２１】
第１エミュレーションプロセッサ５１１及び第２エミュレーションプロセッサ５１２とも、当該チップをシステムボードに搭載した状態でのデバッグを可能とするオンチップデバッグ機能を有する。特に、第１エミュレーションプロセッサ５１１は、その近傍に設けられたコネクタ５１３及びそれに結合されたケーブル５２４を介してエミュレータ本体５２に接続されることにより、上記オンチップデバッグ機能によるデバッグが行われるようになっている。また、第２エミュレーションプロセッサ５１２の外部端子はユーザシステム５１のＣＰＵソケットを介してユーザシステムに結合されるとともに、ケーブル５２５を介してエミュレータ本体５２に結合される。これにより、第２エミュレーションプロセッサ５１２のエミュレーション情報をエミュレータ本体５２において収集することができる。制御コンピュータ５３は、特に制限されないが、パーソナルコンピュータとされ、ケーブル５１６を介してエミュレータ本体５２に結合されることにより、このエミュレータ本体５２との間で、エミュレーションに関する各種制御情報や収集データのやり取りが可能とされる。
【００２２】
図１には、上記エミュレータ本体５２の構成例が示される。
【００２３】
図１に示されるように、このエミュレータ本体５２は、特に制限されないが、互いに異なるエミュレーション機能として、インサーキットエミュレーション（ＩＣＥ）機能と、オンチップデバッグ機能とを有する。ＩＣＥ機能はＩＣＥ機能ブロックによって実現される。このＩＣＥ機能ブロックは、コントロールＣＰＵ１１、ブレーク回路１２、トレース回路１３、モニタ回路１４、ファームＲＡＭ（ランダム・アクセス・メモリ）１５、パフォーマンス回路１６とを含む。そして、オンチップデバッグ機能は、コントロールＣＰＵ１１やオンチップコントローラ１７によって実現される。
【００２４】
コントロールＣＰＵ１１は、コントロールバス２３を介してブレーク回路１２、トレース回路１３、モニタ回路１４、ファームＲＡＭ１５、及びパフォーマンス回路１６、及びオンチップコントローラ１７に結合され、それらに対して各種情報のやり取りが可能とされる。また、第２エミュレーションプロセッサ５１２は、エミュレーションバス２４を介してブレーク回路１２、トレース回路１３、モニタ回路１４、ファームＲＡＭ１５、及びパフォーマンス回路１６に結合され、第２エミュレーションプロセッサ５１２のエミュレーション動作における各種情報の収集等が可能とされる。オンチップコントローラ１７は、信号線２５を介して第１エミュレーションプロセッサ５１１に結合され、後述する所定の通信プロトコルに従って各種情報のやり取りが可能とされる。
【００２５】
ブレーク回路１２は、エミュレーションバス２４の状態を監視してその状態が予め設定されている状態に到達したときにエミュレーション動作をブレークする。トレース回路１３は、エミュレーションバス２４に与えられるデータやアドレスさらには制御情報を逐次トレースして蓄える。モニタ回路１４は、制御コンピュータ５３からインタフェース２１を介してエミュレーションバス２４をモニタを可能とするために設けられている。ファームＲＡＭ１５は、第２エミュレーションプロセッサ５１２で実行されるプログラムを格納するために設けられる。パフォーマンス回路１６は、上記トレース情報に基づいて第２エミュレーションプロセッサ５１２の性能測定、例えば実行時間の測定などを行うために設けられる。
【００２６】
オンチップコントローラ１７は、コントロールＣＰＵ１１の制御下で、第１エミュレーションプロセッサ５１１のオンチップデバッグを可能とするブロックであり、次のように構成される。
【００２７】
図２には上記オンチップコントローラ１７の構成例が示される。
【００２８】
図２に示されるように、上記オンチップコントローラ１７は、ＪＴＡＧにおける各種信号を出力するためのＪＴＡＧコントローラ１７０、バスコントローラ１７６、及びクロック発生回路１７７を有する。上記ＪＴＡＧコントローラ１７０は、ＪＴＡＧにおける各種信号を出力するためのバッファ１７１〜１７４及びレジスタ１７５を有する。クロック発生回路１７７は、基本周波数のクロック信号を発生させるための発振器と、発生されたクロックを適宜に分周することにより、元の周波数とは異なる周波数のクロック信号を生成する分周回路を含む。このクロック発生回路１７７から出力されたクロック信号はバッファ１７４を介することによりＴＣＫとして第１エミュレーションプロセッサ５１１に伝達される。出力データＴＤｏがバッファ１７１を介してバスコントローラ１７６に伝達され、また、テストロジックに対して命令やデータをシリアル入力する信号ＴＤｉ、テスト動作を制御する信号ＴＭＳ、テストロジックに供給されるクロック信号ＴＣＫ、コントローラを初期化するためのリセット信号ＴＲＳＴがそれぞれバッファ１７２，１７３、レジスタ１７５を介して出力される。バスコントローラ１７６は、上記バッファ１７１，１７２，１７３、及びレジスタ１７５と、コントロールバス２３との間での信号のやり取りを可能にする。
【００２９】
特に制限されないが、第１エミュレーションプロセッサ５１１と第２エミュレーションプロセッサ５１２とは互いに同一構成とされる。
【００３０】
図３には第１エミュレーションプロセッサ５１１（５１２）の構成例が示される。
【００３１】
図３に示されるように、この第１エミュレーションプロセッサ５１１（５１２）は、ＣＰＵ２１３、ＲＡＭ２１２、シリアルデバッグインタフェース２１１、周辺モジュール２１５、及びエミュレーションバスコントローラ２１６を含む。
【００３２】
ＣＰＵ２１３により所定のプログラムが実行されるとき、ＲＡＭ２１２は、その演算処理の作業領域として機能される。シリアルデバッグインタフェース２１１は、エミュレータ本体５２におけるオンチップコントローラ１７に結合されることによって、シリアルデータのやり取りを可能とする。
【００３３】
バスコントローラ２１４が設けられ、ＣＰＵ２１３と周辺モジュール２１５との間のウェイト制御や、ＣＰＵ２１３と外部モジュールとの間のウェイト制御が行われる。特に制限されないが、上記周辺モジュール２１５には、外部装置との間のシリアル通信を可能とするシリアルコミュニケーションインタフェースや、時間測定のためのタイマー、ＣＰＵ２１３の介在なしにデバイス間のデータ転送を可能にするダイレクトメモリアクセスコントローラなどが含まれる。
【００３４】
上記シリアルデバッグインタフェース２１１Ｄは、通信用モジュール２１１Ａ、ファームＲＡＭ２１１Ｂ、ブレーク回路２１１Ｃ、及びトレースバッファ２１１Ｄを含む。通信モジュール２１１Ａは、外部装置との間でオンチップデバッグのための通信を行う。ファームＲＡＭ２１１Ｂには、ＣＰＵ２１３で実行される各種プログラムが保持される。ブレーク回路２１１Ｃは、予め設定されたブレーク条件が成立したか否かを判別する。トレースバッファ２１１Ｄは、ＣＰＵ２１３でのプログラム実行状態をトレースする。
【００３５】
また、エミュレーションコントローラ２１６は、内部バス２１８とエミュレーションバス２４とに結合され、エミュレーションに関する各種制御を行う。特に制限されないが、エミュレーションコントローラ２１６は、上位／下位レジスタ２１６Ａ、ブレークスタックレジスタ２１６Ｂ、ブレーク制御回路２１６Ｃ、及びフォルト制御回路２１６Ｄを含む。上位／下位レジスタ２１６Ａは、それが含まれるエミュレーションプロセッサが他のエミュレーションプロセッサとの関係で上位であるのか下位であるのかを判別するためのフラグ情報が保持される。特に制限されないが、図１においては、エミュレーションバス２４に結合されるエミュレーションプロセッサ５１１が上位とされ、オンチップコントローラ１７に結合されるエミュレーションプロセッサ５１２が下位とされる。上位と下位との違いは、ブレークモードからユーザモードへの復帰命令の実行によるアンスタック完了後の状態において大きく相違する。これについては後に詳述する。
【００３６】
ブレークスタックレジスタ２１６Ｂは、ブレーク条件が成立してＣＰＵ２１３の状態がユーザモードからブレークモードに移行する際に、そのときのレジスタ（ＥＸＲ，ＣＣＲ）やプログラムカウンタ（ＰＣ）等の値を保持する。
【００３７】
ブレーク制御回路２１６Ｃは、ブレーク制御信号の入出力制御を行う。ブレーク制御信号には、ブレーク割り込み要求信号、ブレークアクノリッジ信号などがある。ブレーク割り込みはローアクティブとされ、それがアクティブにされると、ブレーク制御回路２１６ＣによってＣＰＵ２１３へのブレーク割り込みが行われる。このブレーク割り込みにより、ブレーク処理が行われ、そのときのレジスタ（ＥＸＲ，ＣＣＲ）やプログラムカウンタ（ＰＣ）等の値がブレークスタックレジスタ２１６Ｂに保持される。ブレーク割り込みによりＣＰＵ２１３がブレークモードに移行すると、ブレーク制御回路２１６Ｃによりブレークアクノリッジ信号がローレベルにされることで、ブレークモードになったことが示される。ブレークアクノリッジ信号はブレークモード期間中ローレベルであり、ブレークからの復帰（ＲＴＢ）命令のスタック終了後にハイレベルにされる。つまり、ブレークモードは、専用の復帰（ＲＴＢ）命令を実行することにより解除され、それによりブレークモードからユーザモードに遷移される。
【００３８】
また、バスコントローラ２１４から第１フォルト信号ＦＬＴ１が出力され、エミュレーションコントローラ２１６からは第２フォルト信号ＦＬＴ２が出力される。この第１フォルト信号ＦＬＴ１と第２フォルト信号ＦＬＴ２とのオア論理がオアゲート２１７で得られ、そのオア論理がＣＰＵ２１３に伝達されるようになっている。
【００３９】
上記第１フォルト信号ＦＬＴ１は、上記バスコントローラ２１４に対して、マイクロプロセッサの外部からバスリクエストあるいは他のバスマスタからのバス解放要求があり、バス権調停の結果、バス権を解放すべき場合には、バスコントローラ２１４によってハイレベルにアサートされる。第１フォルト信号ＦＬＴ１がハイレベルにアサートされることにより、ＣＰＵ２１３は、第１フォルトＦＬＴ１がハイレベルにアサートされた場合に、内部状態（プログラムカウンタ等の値）を保持したまま、命令の実行が停止される（フォルト状態）。これによりバスがＣＰＵ２１３から開放される。
【００４０】
また、上記第２フォルト信号ＦＬＴ２は、上位／下位レジスタ２１６Ａのフラグ状態に応じてフォルト制御回路２１６Ｄによって制御される。つまり、上位／下位レジスタ２１６のフラグ状態がローレベルとされ、当該エミュレーションプロセッサが下位とされる場合には、ブレークモードからの復帰命令がＣＰＵ２１３で実行された後にフォルト制御回路２１６Ｄによって第２フォルト信号ＦＬＴ２がハイレベルにアサートされる。これにより、ＣＰＵ２１３においては、第１フォルトＦＬＴ１がハイレベルにアサートされた場合と同様に、内部状態（プログラムカウンタ等の値）を保持したまま、命令の実行が停止される（フォルト状態）。このフォルト状態は、エミュレーションコントローラ２１６の外部から与えられるフォルト解除要求信号がローレベルにアサートされることにより、第２フォルト信号ＦＬＴ２がローレベルにネゲートされまで維持される。つまり、エミュレーションコントローラ２１６の外部から与えられたフォルト解除要求信号がローレベルにアサートされると、フォルト制御回路２１６Ｄは、第２フォルト信号ＦＬＴ２をローレベルにネゲートする。これにより、ＣＰＵ２１３のフォルト状態が解除される。フォルト制御回路２１６Ｄにおけるこのような制御機能が、本発明における第２制御手段に対応する。
【００４１】
それに対して、上位／下位レジスタ２１６Ａのフラグ状態がハイレベルとされ、当該エミュレーションプロセッサが上位とされる場合には、フォルト制御回路２１６Ｄは、第２フォルト信号ＦＬＴ２をアサートすること無しに、外部に対して別のＣＰＵに対するフォルト解除要求信号をアサートする。フォルト制御回路２１６Ｄにおけるこの制御機能が、本発明における第１制御手段に対応する。
【００４２】
図４には通信用モジュール２１１Ａの構成例が示される。
【００４３】
図４に示されるように、通信用モジュール２１１Ａは、ＪＴＡＧ対応のＴＡＰコントローラ２１１Ａ−１、入力レジスタ２１１Ａ−２、及び出力レジスタ２１１Ａ−３を含んで成る。ＴＡＰコントローラ２１１Ａ−１には、テストロジックに供給されるクロック信号ＴＣＫ、コントローラを初期化するためのリセット信号ＴＲＳＴ、及びテスト動作を制御する信号ＴＭＳが入力される。ＴＡＰコントローラ２１１−Ａ１は、入力される命令の解析及びそれに基づく入出力制御を行う。入力レジスタ２１１Ａ−２及び出力レジスタ２１１Ａ−３は、特に制限されないが、３２ビット構成のシフトレジスタとされ、それぞれシリアル形式で取り込まれた信号ＴＤｉ，ＴＤｏをシフトする。
【００４４】
次に、ブレークモードからユーザモードへの復帰について詳述する。
【００４５】
図６には、第１エミュレーションプロセッサ５１１、及び第２エミュレーションプロセッサ５１２において、ブレークモードからユーザモードへの復帰までの手順が示される。また、図７にはその場合の主要部の動作タイミングが示される。
【００４６】
第１エミュレーションプロセッサ５１１は下位レベルのプロセッサ、第２エミュレーションプロセッサ５１２は上位レベルのプロセッサとされる。
【００４７】
第１エミュレーションプロセッサ５１１において、ファームＲＡＭ２１１Ｂに保持されているプログラムが実行されている期間において、ブレークモードからの復帰（ＲＴＢ）命令が実行されることにより、プログラムカウンタ（ＰＣ）などのアンスタックが行われる（Ｓ７１１，Ｓ７２１）。このアンスタックにおいて上位／下位レジスタ２１６のフラグ状態がチェックされる。第１エミュレーションプロセッサ５１１は下位レベルのプロセッサとされるため、上位／下位レジスタ２１６のフラグ状態はローレベルとされている。これにより、第２フォルト信号ＦＬＴ２がハイレベルにアサートされ、第１エミュレーションプロセッサ５１１におけるＣＰＵ２１３はフォルト（次命令待ち）状態とされる。つまり、上記ステップＳ７１２のプログラムカウンタ（ＰＣ）などのアンスタックが行われにもかかわらず、ユーザモードにおける最初の命令の実行待ち状態とされる。この状態は、上位レベルのプロセッサである第２エミュレーションプロセッサ５１２からフォルト解除要求がなされるまで続く。
【００４８】
一方、第２エミュレーションプロセッサ５１２において、ファームＲＡＭ１５（図１参照）に保持されているプログラムが実行されている期間において、ブレークモードからの復帰（ＲＴＢ）命令が実行されることにより、プログラムカウンタ（ＰＣ）などのアンスタックが行われる（Ｓ７２１，Ｓ７２２）。このアンスタックにおいて上位／下位レジスタ２１６のフラグ状態がチェックされる。第２エミュレーションプロセッサ５１２は上位レベルのプロセッサとされるため、上位／下位レジスタ２１６のフラグ状態はハイレベルとされている。これにより、エミュレーションコントローラ２１６によってフォルト解除要求信号がローレベルにアサートされることで、第１エミュレーションプロセッサ５１１のフォルト状態の解除要求がなされる（Ｓ７２３）。この解除要求後、第２エミュレーションプロセッサ５１２はユーザプログラムの実行に遷移する。
【００４９】
ここで、上記ローレベルのフォルト解除要求信号が第１エミュレーションプロセッサ５１１に伝達されると、第１エミュレーションプロセッサ５１１では、エミュレーションコントローラ２１６内のフォルト制御回路２１６Ｄにより第２フォルト信号ＦＬＴ２がローレベルにネゲートされる。これによりフォルト状態が解除され、ＣＰＵ２１３によりユーザプログラムの実行が開始される。
【００５０】
上記の例によれば以下の作用効果を得ることができる。
【００５１】
（１）下位レベルである第１エミュレーションプロセッサ５１１がブレークモードからの復帰（ＲＴＢ）命令を実行した後にフォルト状態になり、上位レベルである第２エミュレーションプロセッサ５１２からのフォルト解除要求（Ｓ７２３）がなされることで、第１エミュレーションプロセッサ５１１のフォルト状態が解除されることにより、第１エミュレーションプロセッサ５１１と第２エミュレーションプロセッサ５１２とは互いに同期される。つまり、ブレークモードにおいて非同期処理が行われていても、ブレークモードからの復帰後のユーザプログラムの実行開始時点で第１エミュレーションプロセッサ５１１と第２エミュレーションプロセッサ５１２とは同期処理が行われる。このため、第１エミュレーションプロセッサ５１１と第２エミュレーションプロセッサ５１２とを同時に実行してエミュレーションすることができるので、ユーザプログラムの開発効率の向上を図ることができる。
【００５２】
（２）エミュレータ本体５２は、一つでよく、ＩＣＥ用エミュレータ、及びオンチップデバッグ用エミュレータとして別個に用意する必要が無い。
【００５３】
別の構成例について説明する。
【００５４】
図８に示されるように、オンチップデバッグ用エミュレータ本体８５と、エミュレータ本体８６とを別々に構成しても良い。オンチップデバッグ用エミュレータ本体８５は、基本的には、図１におけるオンチップコントローラ１７、コントロールＣＰＵ１１、及びインタフェース２１等が含まれるが、ブレーク回路１２、トレース回路１３、モニタ回路１４、ファームＲＡＭ１５、及びパフォーマンス回路１６などのＩＣＥ機能実現ブロックは含まれない。エミュレータ本体８６には、図１におけるブレーク回路１２、トレース回路１３、モニタ回路１４、ファームＲＡＭ１５、パフォーマンス回路１６、コントロールＣＰＵ１１、及びインタフェース２１などのＩＣＥ機能実現ブロックが含まれるが、オンチップコントローラ１７は含まれない。下位マイクロプロセッサ側エミュレータ８５には制御コンピュータ８１が接続され、上位マイクロプロセッサ側エミュレータ８６には制御コンピュータ８２が接続される。
【００５５】
また、図９に示されるように、二つのマイクロプロセッサ５１１，５１２ともエミュレーションバスを介してエミュレーションを行うようにしても良い。この場合、エミュレータ本体８５，８６は、それぞれ図１におけるブレーク回路１２、トレース回路１３、モニタ回路１４、ファームＲＡＭ１５、パフォーマンス回路１６、コントロールＣＰＵ１１、及びインタフェース２１などのＩＣＥ機能実現ブロックが含まれる。
【００５６】
図１０に示されるように、一つのマイクロプロセッサパッケージの中に、図３に示されるマイクロプロセッサが二つ設けられる場合がある。かかる場合にも、本発明を適用することができる。この場合、エミュレータ本体５２は、二つのマイクロプロセッサに対応してＩＣＥ機能実現ブロックが設けられる。
【００５７】
さらに、図１１に示されるように、一つのマイクロプロセッサパッケージの中に二つのマイクロプロセッサが設けられている場合に、シリアルデバッグインタフェースによってエミュレータ本体との信号のやり取りを行うように構成することができる。この場合、エミュレータ本体５２においては、オンチップコントローラ１７等が２系統設けられる。
【００５８】
図１２に示されるように、第１エミュレーションプロセッサ５１１、第２エミュレーションプロセッサ５１２と、エミュレータ本体５１２との接続関係を切り換可能にしても良い。すなわち、コントロール回路１８を設け、エミュレーションバス２４を、第１エミュレーションプロセッサ５１１と第２エミュレーションプロセッサ５１２との何れに接続するかはコントロール回路１８によって制御される。セレクタ（ＳＥＬ）１９が設けられ、オンチップコントローラ１７が選択的に第１エミュレーションプロセッサ５１１や第１エミュレーションプロセッサ５１２に接続される。上記セレクタ１９は、コントロール回路１８によって動作制御される。コントロール回路１８の制御下で第１エミュレーションプロセッサ５１１とエミュレーションバス２４との間のデータのやり取りが可能とされるとき、第２エミュレーションプロセッサ５１２は、エミュレーションバス２４から切り放される。このとき、コントロール回路１８の制御によりセレクタ１９を介して第２エミュレーションプロセッサ５１２がオンチップコントローラ１７に結合されることにより、第２エミュレーションプロセッサ５１２におけるオンチップデバッグが可能とされる。同様に、コントロール回路１８の制御下で第２エミュレーションプロセッサ５１２とエミュレーションバス２４との間のデータのやり取りが可能とされるとき、第１エミュレーションプロセッサ５１１は、エミュレーションバス２４から切り放される。このとき、コントロール回路１８の制御によりセレクタ１９を介して第１エミュレーションプロセッサ５１１がオンチップコントローラ１７に結合されることにより、第１エミュレーションプロセッサ５１１におけるオンチップデバッグが可能とされる。
【００５９】
３個以上のマイクロプロセッサを有する場合においても、本発明を適用することができる。つまり、３個以上のマイクロプロセッサにおける一つを上位に設定し、その他の全てのマイクロプロセッサを下位に設定することにより、上記した例の場合と同様の作用効果を得ることができる。
【００６０】
また、フォルト状態の解除要求信号はコントロールＣＰＵ１１から発生させるようにしても良い。図１３には、その場合の構成例が示される。この場合、３個のマイクロプロセッサ５１１，５１２，５１３のすべてがフォルトされた後に、コントロールＣＰＵ１１から３個のマイクロプロセッサ５１１，５１２，５１３に供給されるフォルト解除要求信号がアサートされるように構成することができる。これにより、３個のマイクロプロセッサ５１１，５１２，５１３は、同時にフォルト状態が解除され、ユーザプログラムの同期実行が可能とされる。図１４にはこの場合の具体的な構成が示される。第３エミュレーションプロセッサ５１３に対応して、それのオンチップデバッグを可能とするためのオンチップコントローラ１４１が設けられる。フォルト解除要求信号は、個々のエミュレーションプロセッサ５１１，５１２，５１３ではなく、コントロールＣＰＵ１１によって形成される。
【００６１】
以上本発明者によってなされた発明を具体的に説明したが、本発明はそれに限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。
【００６２】
以上の説明では主として本発明者によってなされた発明をその背景となった利用分野であるマイクロプロセッサに適用した場合について各種データ処理装置に広く適用することができる。
【００６３】
本発明は、少なくともＣＰＵを含むことを条件に適用することができる。
【００６４】
【発明の効果】
すなわち、アンスタック後に中央処理装置を命令待ち状態に遷移させるためのフォルト信号をアサートし、上記中央処理装置の命令待ち状態で、その命令待ち状態の解除要求信号がアサートされることにより、上記中央処理装置の命令待ち状態を解除する制御手段とを含んでマイクロプロセッサが構成されることにより、中央処理装置の命令待ち状態で、その命令待ち状態の解除要求信号がアサートされて上記中央処理装置の命令待ち状態が解除される。それにより、異なるマイクロプロセッサを同期化させ、エミューションの並列化によりユーザシステムの開発効率の向上を図ることができる。
【図面の簡単な説明】
【図１】本発明にかかるエミュレーションシステムにおけるエミュレータ本体の構成例ブロック図である。
【図２】上記エミュレータ本体に含まれるオンチップコントローラ１７の構成例ブロック図である。
【図３】上記エミュレーションシステムで使用されるエミュレーションプロセッサの構成例ブロック図である。
【図４】上記エミュレーションプロセッサに含まれる通信用モジュールの構成例ブロック図である。
【図５】上記エミュレーションシステムの全体的な構成例説明図である。
【図６】上記エミュレーションプロセッサにおけるブレークモードからユーザモードへの復帰までのフローチャートである。
【図７】上記エミュレーションプロセッサにおけるブレークモードからユーザモードへの復帰までのタイミング図である。
【図８】上記エミュレーションシステムの別の構成例説明図である。
【図９】上記エミュレーションシステムの別の構成例説明図である。
【図１０】上記エミュレーションシステムの別の構成例説明図である。
【図１１】上記エミュレーションシステムの別の構成例説明図である。
【図１２】上記エミュレーションシステムの別の構成例におけるエミュレータ本体の構成例ブロック図である。
【図１３】上記エミュレーションシステムの別の構成例説明図である。
【図１４】上記エミュレーションシステムの別の構成例におけるエミュレータ本体の構成例ブロック図である。
【符号の説明】
１１  コントロールＣＰＵ
１２  ブレーク回路
１３  トレース回路
１４  モニタ回路
１５  ファームＲＡＭ
１６  パフォーマンス回路
１７  オンチップコントローラ
１８  コントロール回路
１９  セレクタ
２１  インタフェース
２３  コントロールバス
２４  エミュレーションバス
２１１  シリアルデバッグインタフェース
２１１Ａ  通信用モジュール
２１１Ｂ  ファームＲＡＭ
２１１Ｃ  ブレーク回路
２１１Ｄ  トレースバッファ
２１２  ＲＡＭ
２１３  ＣＰＵ
２１４  バスコントローラ
２１５  周辺モジュール
２１６  エミュレーションコントローラ
２１６Ａ  上位／下位レジスタ
２１６Ｂ  ブレークスタックレジスタ
２１６Ｃ  ブレーク制御回路
２１６Ｄ  フォルト制御回路
２１７  オアゲート
５１１  第１エミュレーションプロセッサ
５１２  第２エミュレーションプロセッサ
【図１】
0004084912.tif 000002
【図２】
0004084912.tif 000003
【図３】
0004084912.tif 000004
【図４】
0004084912.tif 000005
【図５】
0004084912.tif 000006
【図６】
0004084912.tif 000007
【図７】
0004084912.tif 000008
【図８】
0004084912.tif 000009
【図９】
0004084912.tif 000010
【図１０】
0004084912.tif 000011
【図１１】
0004084912.tif 000012
【図１２】
0004084912.tif 000013
【図１３】
0004084912.tif 000014
【図１４】
0004084912.tif 000015