(57)【要約】【課題】ＣＰＵの命令実行解析情報とメモリアクセスの情報を的確に取得する。【解決手段】オペランドバス（１０５，２０５）に結合された実行部（１０３，２０３）と、制御部（１０１，２０１）とを含む中央処理装置（ＣＰＵ＃０，＃１）と、デバッグ回路（３５）とを設ける。上記制御部は、上記中央処理装置での命令実行解析情報を収集するデバッグ機能部を含む。上記デバッグ回路は、上記命令実行解析情報と上記オペランドバスから得られる情報とをそれぞれ専用の論理回路（１１２，１１４，２１２，２１４）を介して取り込むトレース取得回路（１１０，２１０）と、トレース出力回路（１１１，２１１）とを含む。上記トレース取得回路には、上記命令実行解析情報と上記オペランドバスから得られる情報とを並べ替える並べ替え論理部（１１５，２１５）を設け、的確なトレースを可能にする。【選択図】図１
2011243110.tif 000002
【特許請求の範囲】
【請求項１】
オペランドバスに結合された実行部と、フェッチされた命令に基づいて上記実行部の動作を制御する制御部と、を含む中央処理装置と、
上記中央処理装置でのプログラム実行状態のトレース情報を得るデバッグ回路と、を含む情報処理装置であって、
上記制御部は、上記中央処理装置での命令実行解析情報を収集するデバッグ機能部を含み、
上記デバッグ回路は、上記デバッグ機能部によって収集された命令実行解析情報と上記オペランドバスから得られる情報とをそれぞれ専用の論理回路を介して取り込むトレース取得回路と、
上記トレース取得回路の出力を外部出力するためのトレース出力回路と、を含み、
上記トレース取得回路は、上記デバッグ機能部によって収集された命令実行解析情報と上記オペランドバスから得られる情報とを上記中央処理装置の処理順序に対応するように並べ替える、並べ替え論理部を含むことを特徴とする情報処理装置。
【請求項２】
上記デバッグ回路は、上記専用の論理回路として、上記命令実行解析情報を取り込む第１ＦＩＦＯと、
上記オペランドバスから得られる情報を取り込む第２ＦＩＦＯと、を含み、
上記第１ＦＩＦＯに取り込まれる情報と上記第２ＦＩＦＯに取り込まれる情報には、上記デバッグ回路内で共有されるタイマによって管理される時刻情報に基づくタイムスタンプが付加される請求項１記載の情報処理装置。
【請求項３】
上記並べ替え論理部は、上記第１ＦＩＦＯの出力情報に付加されているタイムスタンプと、上記第２ＦＩＦＯの出力情報に付加されているタイムスタンプとに基づいて、上記第１ＦＩＦＯの出力情報と上記第２ＦＩＦＯの出力情報とを上記中央処理装置の処理順序に対応するように一連のトレース情報に並べ替える請求項２記載の情報処理装置。
【請求項４】
上記中央処理装置はパイプライン処理可能にされて成る請求項２記載の情報処理装置。
【請求項５】
上記並べ替え論理部は、上記第１ＦＩＦＯの出力情報に付加されているタイムスタンプと、上記第２ＦＩＦＯの出力情報に付加されているタイムスタンプとが互いに等しい場合には、上記中央処理装置でのパイプライン処理を考慮して、並べ替え後のトレース情報の配列順を決定する請求項４記載の情報処理装置。
【請求項６】
上記並べ替え論理部は、上記中央処理装置でのパイプライン処理に起因して、上記第１ＦＩＦＯの出力情報と上記第２ＦＩＦＯの出力情報との間でトレース時刻が逆転している場合を判別して、並べ替え後のトレース情報の配列順を決定する請求項５記載の情報処理装置。
【請求項７】
上記中央処理装置は複数配置され、
上記デバッグ回路内の上記トレース取得回路と上記トレース出力回路とは、上記中央処理装置に対応して複数配置されて成る請求項６記載の情報処理装置。
【請求項８】
上記中央処理装置は、上記制御部で分岐命令をフェッチしてそれをデコードする第１処理と、
後続命令のデコードを中止して、上記分岐命令に基づく分岐処理を上記実行部で実行する第２処理と、
パイプライン処理を停止可能な否かを上記制御部で判別する第３処理と、
上記第３処理で、パイプライン処理が停止可能と判断した場合に、上記制御部で分岐先命令をフェッチする第４処理と、を含み、
上記トレース取得回路は、上記第１処理に応じて分岐トレースを開始し、上記第２処理に応じて、分岐元及び分岐先アドレスを取得し、分岐先の種別情報を取得する処理を含む請求項７記載の情報処理装置。
【請求項９】
上記中央処理装置は、上記制御部でスリープ命令をフェッチしてそれをデコードする第５処理と、
上記第５処理でのデコード結果に基づいてスリープ命令を上記実行部で実行する第６処理と、
パイプライン処理が停止可能か否かを上記制御部で判別する第７処理と、
上記第７処理で、パイプライン処理が停止可能と判断した場合に、低消費電力状態に遷移する第８処理と、を含み、
上記トレース取得回路は、上記第５処理に応じてスリープトレースを開始し、上記第６処理に応じて命令アドレスを取得する処理を含む請求項８記載の情報処理装置。
【請求項１０】
上記複数のトレース出力回路の出力をマージして共通端子を介して外部出力するための論理回路を含む請求項７記載の情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、さらにはそれにおけるデバッグ技術に関し、例えばマイクロコンピュータに有効な技術に関する。
【背景技術】
【０００２】
特許文献１には、複数のＣＰＵを搭載したコンピュータシステムのデバッグにおいて、複数のＣＰＵのブレーク、ステップ実行の協調動作における厳密な同期性を確保し、複数のＣＰＵトレースデータの出力時間関係を観測するための技術が示される。それによれば、複数のＣＰＵブレーク間の協調を、ハードウェアで実現し、ブレークおよび、ステップ実行の厳密な同期を行う。協調デバッグ回路は、ブレーク協調組み合わせ回路、協調ブレークコントロールレジスタ、協調ブレークステータスレジスタ、トレースデータ格納部、外部デバイスインターフェイス部を備えている。ブレーク協調組み合わせ回路は、ＣＰＵからのブレーク出力信号を組み合わせて当該ＣＰＵへのブレーク入力信号を生成する。トレースデータ格納部は、複数のＣＰＵのトレースデータを出力時間情報と組み合わせて記憶する。
【０００３】
特許文献２には、複数のトレースメモリに記録された事象の発生時間の前後関係をより少ないハードウェアの追加によって、その発生頻度に関わらず知ることができるデバッグ装置が示される。それによれば、トレースメモリにＣＰＵのトレース情報を書き込む時に、トレースメモリに、トレースメモリのアドレスをトレース情報とともに書き込むことによって、トレースメモリの情報とトレースメモリの情報の発生前後の関係を特定するようにしている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００３−１６２４２６号公報
【特許文献２】特開２００３−０７６５７７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
情報処理装置の一例とされるマイクロコンピュータは、マイクロプロセッサ、あるいはデータプロセッサとも称される。そのようなマイクロコンピュータを基板上に実装した状態でプログラムのデバッグを可能にするオンチップデバッグ方式は、高速ＣＰＵ（Central Processing Unit；中央処理装置）搭載のマイクロコンピュータや、ＳｏＣ（System-on-a-chip）から導入され、現在では多くの製品の低コストデバッグ手法として一般的な技術となっている。近年のハイエンドＣＰＵは、性能向上のためにスーパースカラや、ハーバードアーキテクチャが導入されている。このような技術を適用することで、ＣＰＵの性能向上が見込める一方、命令実行とメモリアクセスの並列動作や命令実行そのものも複数同時処理されるなど、ＬＳＩ（Large Scale Integration）内蔵ソフトウェアの動作解析(デバッグ)が困難になっている。
【０００６】
そのため、ＣＰＵの数が一つであっても、正しく命令実行順序を把握したり、演算の間に発生するオペランドアクセスが適切なタイミングで実施されているかを知ることが重要になっている。顧客システムによっては、安全性、信頼性、精度を確保するために、きわめて高度な解析機能を要求される場合があり、これに応えることが重要になっている。
【０００７】
一つのＣＰＵによるシステムでも、上記のように課題があるが、マルチコア化されるとそれぞれのＣＰＵが割り付けられたタスクを分散・並列に処理するため、ＬＳＩの内部で発生している事象を把握することがますます難しくなる。マイクロコンピュータで実現したＣＰＵの結合度が高いマルチコア構成として、メモリや周辺機能を共有した上で、ＣＰＵ単位に異なるＯＳ（Operating System）を搭載する方式（これを「ＡＭＰ方式」という）や、単一のＯＳでＣＰＵの数を隠蔽させる方式（これを「ＳＭＰ方式」という）を挙げることができる。
【０００８】
組み込み分野においては、既存ソフトウェア資産を活用するため、マルチコアであってもＣＰＵ毎に固定的に処理やメモリリソースを割り付けるＡＭＰ形式が用いられている。ＡＭＰ方式は、比較的既存ソフトウェアの修正が少なく済むとされているが、新たに複数ＣＰＵ間の競合チェックや、ソフトウェア間の連携や排他処理が正常動作するかと言ったテストが必要となっている。またＳＭＰ方式においても、汎用ＯＳによってＣＰＵを意識しないスループット重視のシステム構成を作るために、ＯＳの開発に大きな負荷が発生する。エンドユーザに見えにくい動作である、リソースの排他制御、メモリコヒーレンシの制御、待ち合わせ制御は、不具合や意図しない性能劣化につながるため、ソフトウェア開発工数が大きくなる主たる要因とされる。
【０００９】
現在、普及しているマルチコア製品は、ＣＰＵとそのＣＰＵに制御される機能モジュール群をひとまとめにしたブロックを、内部のシステムバスで連結するＳｏＣ形態が多い。このためデバッグ機能は、一つのＣＰＵをデバッグするものに、他のブロックとの接続機能を追加したりしている。このようにＣＰＵ同士が疎結合な構成では、機能ブロックを集積しているに過ぎないため、積極的に複数ＣＰＵを同時デバッグする効果がない。そのため製品仕様として、ＣＰＵ単位にデバッグする手法が許容されやすい。しかし、今後のマルチコア製品は、ＣＰＵの数をより意識しないＳＭＰ形式の製品や、異なるＯＳやソフトウェアを各ＣＰＵで個別に処理する(ＡＭＰ)ことで、実時間制御と性能を強化する製品が増加する。こうした製品では各ＣＰＵの関係が密結合になり並列・分散処理を効率的に行う。
【００１０】
並列・分散処理するシステムでは、デバッグ対象とするＣＰＵを切り替えながら、何度も情報を取り直す手法が適用しにくい。これは原理的に不具合再現性が乏しくなるためで、ユーザは可能な限りシステムを連続動作させ、まれに発生する不具合抽出する必要に迫られる。こうした課題に対して複数ＣＰＵの同時デバッグ機能は有効なソリューションであると言える。特に、複数ＣＰＵの同時トレース機能が実現可能になれば、高信頼システム向けに製品を販売する際に優位な技術サポートが可能になる。
【００１１】
また、マルチコア技術の大きな目的である低消費電力化と、それに関係するソフトウェア開発にも有効である。ＳＭＰ対応ＯＳは複数のＣＰＵに分散処理をさせるが、負荷状態に応じてＣＰＵを個別に低速動作させたり、スリープ状態とし消費電力を削減する。積極的に低消費電力化を進める際、動作状態が様々であるＣＰＵの動作をどのように確認するかが問題となる。どの様なタイミングでどの様な動作モードになったか、またそこから正常に復帰したかを知る手段はまだ確立されているとは言えない。この問題を解決することが重要である理由は、マルチコア技術の課題である、メモリコヒーレンシや排他制御、同期制御が確実に動作することを保障しなければならないためである。組み込み制御機器向けのＬＳＩでは、ＰＣとは異なり実行環境と開発環境が異なるクロスデバッグ(実機動作確認)を行うことが必須である。
【００１２】
上記特許文献１の技術によれば、命令実行やメモリリード、メモリライトなどのパイプライン処理によって、タイムスタンプを付与するタイミングを変更する必要がある場合が考慮されていない。
【００１３】
上記特許文献２の技術によれば、パイプライン動作などを考慮すると同時事象に対する扱いが十分とはいえない。さらにいずれかのＣＰＵのみが停止している期間が長い場合などでは、動作再開時に取得したトレースデータの信頼性が損なわれる虞れがある。
【００１４】
本発明の目的は、ＣＰＵ（中央処理装置）の命令実行解析情報とメモリアクセスの情報を的確に取得することにより、ソフトウェアデバッグを容易に行うための技術を提供することにある。
【００１５】
本発明の前記並びにその他の目的と新規な特徴は本明細書の記述及び添付図面から明らかになるであろう。
【課題を解決するための手段】
【００１６】
本願において開示される発明のうち代表的なものの概要を簡単に説明すれば下記の通りである。
【００１７】
すなわち、情報処理装置は、オペランドバスに結合された実行部と、フェッチされた命令に基づいて上記実行部の動作を制御する制御部と、を含む中央処理装置と、上記中央処理装置でのプログラム実行状態のトレース情報を得るデバッグ回路とを含む。上記制御部は、上記中央処理装置での命令実行解析情報を収集するデバッグ機能部を含む。上記デバッグ回路は、上記デバッグ機能部によって収集された命令実行解析情報と上記オペランドバスから得られる情報とをそれぞれ専用の論理回路を介して取り込むトレース取得回路と、上記トレース取得回路の出力を外部出力するためのトレース出力回路とを含む。上記トレース取得回路は、上記デバッグ機能部によって収集された命令実行解析情報と上記オペランドバスから得られる情報とを上記中央処理装置の処理順序に対応するように並べ替える並べ替え論理部を含む。
【発明の効果】
【００１８】
本願において開示される発明のうち代表的なものによって得られる効果を簡単に説明すれば下記のとおりである。
【００１９】
すなわち、ＣＰＵ（中央処理装置）の命令実行解析情報とメモリアクセスの情報を的確に取得することにより、ソフトウェアデバッグを容易に行うことができる。
【図面の簡単な説明】
【００２０】
【図１】本発明にかかる情報処理装置の一例とされるマイクロコンピュータにおける主要部の詳細な構成例ブロック図である。
【図２】本発明にかかる情報処理装置の一例とされるマイクロコンピュータにおける主要部の別の構成例ブロック図である。
【図３】図１に示されるマイクロコンピュータの全体的な構成例ブロック図である。
【図４】図１に示されるマイクロコンピュータの全体的な別の構成例ブロック図である。
【図５】図１に示されるマイクロコンピュータのＣＰＵにおける主要部の構成例ブロック図である。
【図６】図１に示されるマイクロコンピュータにおける主要部の説明図である。
【図７】図１に示されるマイクロコンピュータにおけるスーパースカラでのトレース取得例の説明図である。
【図８】図１に示されるマイクロコンピュータにおけるスーパースカラでのトレース取得例の別の説明図である。
【図９】図１に示されるマイクロコンピュータにおけるデバッグ機能部でのトレース例の説明図である。
【図１０】図１に示されるマイクロコンピュータにおける分岐トレースの流れを示すフローチャートである。
【図１１】図１に示されるマイクロコンピュータにおけるスリープトレースの流れを示すフローチャートである。
【図１２】図１に示されるマイクロコンピュータにおけるトレース出力回路（ＡＵＤ）での処理の流を示すフローチャートである。
【発明を実施するための形態】
【００２１】
１．実施の形態の概要
先ず、本願において開示される発明の代表的な実施の形態について概要を説明する。代表的な実施の形態についての概要説明で括弧を付して参照する図面中の参照符号はそれが付された構成要素の概念に含まれるものを例示するに過ぎない。
【００２２】
〔１〕本発明の代表的な実施の形態に係る情報処理装置（３４）は、オペランドバス（１０５，２０５）に結合された実行部（１０３，２０３）と、フェッチされた命令に基づいて上記実行部の動作を制御する制御部（１０１，２０１）と、を含む中央処理装置（ＣＰＵ＃０，＃１）と、上記中央処理装置でのプログラム実行状態のトレース情報を得るデバッグ回路（３５）とを含む。上記制御部は、上記中央処理装置での命令実行解析情報を収集するデバッグ機能部（５０８）を含む。上記デバッグ回路は、上記デバッグ機能部によって収集された命令実行解析情報と上記オペランドバスから得られる情報とをそれぞれ専用の論理回路（１１２，１１４，２１２，２１４）を介して取り込むトレース取得回路（１１０，２１０）と、上記トレース取得回路の出力を外部出力するためのトレース出力回路（１１１，２１１）とを含む。上記トレース取得回路は、上記デバッグ機能部によって収集された命令実行解析情報と上記オペランドバスから得られる情報とを上記中央処理装置の処理順序に対応するように並べ替える並べ替え論理部（１１５，２１５）を含んで構成される。
【００２３】
上記の構成によれば、例えばＣＰＵに対応するトレース取得回路では、制御部内のデバッグ機能部によって収集された命令実行解析情報と、オペランドバスから得られるオペランドアクセス情報とが、それぞれ専用の論理回路を介して取り込むようにしている。さらに並べ替え論理部では、上記トレース取得回路は、上記デバッグ機能部によって収集された命令実行解析情報と上記オペランドバスから得られる情報とを上記中央処理装置の処理順序に対応するように並べ替える。これにより、命令実行解析情報とオペランドアクセス情報とが同時に発生する場合でも、当該情報を的確にトレースすることができる。
【００２４】
また、デバッグ機能部によって収集された命令実行解析情報と、オペランドバスから得られるオペランドアクセス情報とを共通のＦＩＦＯを介して取り込むようにした場合には、ＦＩＦＯに入力される情報が多い場合に、トレースに欠落を生ずる虞がある。これに対して、上記トレース取得回路では、命令実行解析情報と、オペランドアクセス情報とが、それぞれ専用の論理回路を介して取り込むようにしているため、トレースの欠落が生じ難くなる。
【００２５】
上記のように収集されたトレース情報に基づいて、ホストシステムなどで、トレース結果を容易に再生する（表示装置に表示する）ことができる。
【００２６】
〔２〕上記〔１〕において、上記デバッグ回路は、上記専用の論理回路として、上記命令実行解析情報を取り込む第１ＦＩＦＯ（１１２，２１２）と、上記オペランドバスから得られる情報を取り込む第２ＦＩＦＯ（１１４，２１４）とを含んで構成することができる。そして上記第１ＦＩＦＯに取り込まれる情報と上記第２ＦＩＦＯに取り込まれる情報には、上記デバッグ回路内で共有されるタイマ（１０９）によって管理される時刻情報に基づくタイムスタンプが付加される。上記第１ＦＩＦＯ及び第２ＦＩＦＯは、上記専用の論理回路の機能を容易に実現することができる。
【００２７】
〔３〕上記〔２〕において、上記並べ替え論理部は、上記第１ＦＩＦＯの出力情報に付加されているタイムスタンプと、上記第２ＦＩＦＯの出力情報に付加されているタイムスタンプとに基づいて、上記第１ＦＩＦＯの出力情報と上記第２ＦＩＦＯの出力情報とを上記中央処理装置の処理順序に対応するように一連のトレース情報に並べ替えるように構成することができる。これにより、ホストシステムなどで、トレース結果を容易に再生する（表示装置に表示する）ことができる。
【００２８】
〔４〕上記〔３〕において、上記中央処理装置はパイプライン処理に対応させることができる。
【００２９】
〔５〕上記〔４〕において、上記並べ替え論理部は、上記第１ＦＩＦＯの出力情報に付加されているタイムスタンプと、上記第２ＦＩＦＯの出力情報に付加されているタイムスタンプとが互いに等しい場合には、上記中央処理装置でのパイプライン処理を考慮して、並べ替え後のトレース情報の配列順を決定することができる。これにより、ホストシステムなどで、トレース結果を容易に再生する（表示装置に表示する）ことができる。
【００３０】
〔６〕上記〔５〕において、上記並べ替え論理部は、上記中央処理装置でのパイプライン処理に起因して、上記第１ＦＩＦＯの出力情報と上記第２ＦＩＦＯの出力情報との間でトレース時刻が逆転している場合を判別して、並べ替え後のトレース情報の配列順を決定することができる。
【００３１】
〔７〕上記〔６〕において、上記中央処理装置は複数配置され、上記デバッグ回路内の上記トレース取得回路と上記トレース出力回路とは、上記中央処理装置に対応して複数配置されて成る。これにより、上記情報処理装置をマルチコアに対応させることができる。
【００３２】
〔８〕上記〔７〕において、上記中央処理装置は、上記制御部で分岐命令をフェッチしてそれをデコードする第１処理（１００２）と、後続命令のデコードを中止して、上記分岐命令に基づく分岐処理を上記実行部で実行する第２処理（１００３）とを含む。また上記中央処理装置は、パイプライン処理を停止可能な否かを上記制御部で判別する第３処理（１００４）と、上記第３処理で、パイプライン処理が停止可能と判断した場合に、上記制御部で分岐先命令をフェッチする第４処理（１００５）とを含む。このとき、上記トレース取得回路は、上記第１処理に応じて分岐トレースを開始し（１００６）、上記第２処理に応じて、分岐元及び分岐先アドレスを取得し、分岐先の種別情報を取得する処理（１００７）を含む。これにおり、分岐命令実行のトレース情報を得ることができる。
【００３３】
〔９〕上記〔８〕において、上記中央処理装置は、上記制御部でスリープ命令をフェッチしてそれをデコードする第５処理（１１０２）と、上記第５処理でのデコード結果に基づいてスリープ命令を上記実行部で実行する第６処理（１１０３）とを含む。また上記中央処理装置は、パイプライン処理が停止可能か否かを上記制御部で判別する第７処理（１１０４）と、上記第７処理で、パイプライン処理が停止可能と判断した場合に、低消費電力状態に遷移する第８処理（１１０５）とを含む。上記トレース取得回路は、上記第５処理に応じてスリープトレースを開始し、上記第６処理に応じて命令アドレスを取得する処理（１１０７）を含む。これにより、スリープ命令実行のトレース情報を得ることができる。
【００３４】
〔１０〕上記〔７〕において、上記複数のトレース出力回路の出力をマージして共通端子（４４Ａ，４４Ｂ，４４Ｃ）を介して外部出力するための論理回路（２１９）を設けることができる。これにより、上記共通端子の数を低減することができる。
【００３５】
２．実施の形態の詳細
実施の形態について更に詳述する。
【００３６】
《実施の形態１》
図３には、本発明にかかる情報処理装置の一例とされるマイクロコンピュータが示される。
【００３７】
図３に示されるマイクロコンピュータ３４はＳＭＰ方式とされる。マイクロコンピュータ３４は、特に制限されないが、デバッグ回路３５、４個のＣＰＵ＃０〜＃３、バスインタフェース（ＢＩＦ）３６、メモリ３７、周辺機能部３８〜４１を含み、公知の半導体集積回路製造技術により、単結晶シリコン基板などの一つの半導体基板に形成される。ＣＰＵ＃０〜＃３に対して対称的、均一的に処理が割り付けられることで、複数ＣＰＵによる並列処理を行うことができる。ＣＰＵ＃０〜＃３は、互いに同一構成とされ、専用のインタフェース（専用バス）４３を介してデバッグ回路３５に結合される。専用のインタフェース４３を介して、命令実行解析情報（１０７、２０７）や、オペランドアクセス情報（１０８、２０８）がデバッグ回路３５へ出力される。また、ＣＰＵ＃０〜＃３はバスインタフェース３６を介してシステムバス４２に結合される。このシステムバス４２には、メモリ３７、周辺機能部３８〜４１が結合される。メモリ３７は、ＣＰＵ＃０〜＃３で実行されるプログラムが格納されたフラッシュメモリや、ＣＰＵ＃０〜＃３によってランダムアクセス可能なＳＲＡＭ（Static Random Access Memory）又はＤＲＡＭ（Dynamic Random Access Memory）が含まれる。周辺機能部３８〜４１には、入力されたアナログ信号をデジタル信号に変換するためのアナログ・デジタルコンバータや、外部との間でシリアル通信を可能にする各種インタフェースなどが含まれる。マイクロコンピュータ３４は、ユーザシステムボード３３に搭載される。ユーザシステムボード３３には単数または複数のデバッグ用端子４４が設けられる。デバッグ回路３５は、マイクロコンピュータ３４のオンチップデバッグを可能とするため、デバッグ用端子４４を介してエミュレータ３２に結合される。エミュレータ３２は、ホストシステム３１の制御下で、デバッグ回路３５を介してデバッグ情報を収集する。
【００３８】
また、図４には、ＡＭＰ方式によるマイクロコンピュータが示される。図４に示されるマイクロコンピュータが図３に示されるのと大きく異なるのは、ＣＰＵ＃０〜＃３は、それぞれ専用のバスインタフェース３６Ａ，３６Ｂ，３６Ｃ，３６Ｄを介してシステムバス４２に結合される点である。
【００３９】
図１には、図３や図４に示されるマイクロコンピュータにおける主要部の詳細な構成例が示される。
【００４０】
ＣＰＵ＃０は、制御部１０１、ＦＰＵ（Floating Point number processing Unit；浮動小数点演算装置）１０２、実行部１０３を含む。制御部１０１は、命令バス１０４を介してシステムバス４２に結合される。制御部１０１は、命令バス１０４を介して命令をフェッチし、それをデコードすることによって、ＦＰＵ１０２や実行部１０３の動作制御信号を形成する。また制御部１０１は、命令実行解析情報１０７を出力する。この命令実行解析情報１０７には、特に制限されないが、分岐情報、命令デコード情報、命令実行数情報が含まれる。この命令実行解析情報１０７はデバッグ回路３５に伝達される。ＦＰＵ１０２は、制御部１０１の制御下で浮動小数点演算を専門に行う。実行部１０３は、上記制御部１０１の制御下で整数演算処理を行う。ＦＰＵ１０２や実行部１０３は、オペランドバス１０５を介してシステムバス４２に結合される。ＦＰＵ１０２や実行部１０３での演算の対象となる値や変数を「オペランド」と称する。オペランドは、例えばメモリ３７からオペランドバス１０５を介してＦＰＵ１０２や実行部１０３に伝達される。オペランドバス１０５の状態（これを「オペランドアクセス情報１０８」という）は、モニタブリッジ１０６を介してデバッグ回路３５に伝達される。
【００４１】
ＣＰＵ＃１は、上記ＣＰＵ＃０と同様に構成され、制御部２０１、ＦＰＵ２０２、実行部２０３を含む。制御部２０１は、命令バス２０４を介してシステムバス４２に結合される。制御部２０１は、命令バス２０４を介して命令をフェッチし、それをデコードすることによって、ＦＰＵ２０２や実行部２０３の動作制御信号を形成する。また制御部２０１は、命令実行解析情報２０７を出力する。この命令実行解析情報２０７には、特に制限されないが、分岐情報、命令デコード情報、命令実行数情報が含まれる。この命令実行解析情報２０７はデバッグ回路３５に伝達される。ＦＰＵ２０２は、制御部２０１の制御下で浮動小数点演算を専門に行う。実行部２０３は、上記制御部２０１の制御下で整数演算処理を行う。ＦＰＵ２０２や実行部２０３は、オペランドバス２０５を介してシステムバス４２に結合される。ＦＰＵ２０２や実行部２０３での演算の対象となる値や変数（オペランド）は、例えばメモリ３７からオペランドバス２０５を介してＦＰＵ２０２や実行部２０３に伝達される。オペランドバス１０５の状態（オペランドアクセス情報２０８）は、モニタブリッジ２０６を介してデバッグ回路３５に伝達される。
【００４２】
デバッグ回路３５は以下のように構成される。
【００４３】
デバッグ回路３５は、特に制限されないが、タイムスタンプタイマ１０９、トレース取得回路（ＴＲＣ）１１０，２１０、及びトレース出力回路（ＡＵＤ）１１１，２１１を含む。トレース取得回路１１０及びトレース出力回路１１１は、上記ＣＰＵ＃０に対応して設けられ、トレース取得回路２１０及びトレース出力回路２１１は、上記ＣＰＵ＃１に対応して設けられる。
【００４４】
トレース取得回路１１０は、命令実行解析情報ＦＩＦＯ（First-In First-Out）１１２、ＦＩＦＯ制御部１１３、オペランドアクセス情報ＦＩＦＯ１１４、及び並べ替え論理部１１５を含む。命令実行解析情報ＦＩＦＯ１１２は、ＣＰＵ＃０内の制御部１０１から出力された命令実行解析情報１０７を取り込むための専用バッファメモリとされ、この命令実行解析情報ＦＩＦＯ１１２に取り込まれた命令実行解析情報１０７は、古い順に、後段の並べ替え論理部１１５に出力されるようになっている。
【００４５】
オペランドアクセス情報ＦＩＦＯ１１４は、モニタブリッジ１０６を介して伝達されたオペランドアクセス情報１０８を取り込むための専用バッファメモリとされ、このオペランドアクセス情報ＦＩＦＯ１１４に取り込まれたオペランドアクセス情報１０８は、古い順に、後段の並べ替え論理部１１５に出力されるようになっている。
【００４６】
命令実行解析情報ＦＩＦＯ１１２に取り込まれる命令実行解析情報１０７と、オペランドアクセス情報ＦＩＦＯ１１４に取り込まれるオペランドアクセス情報１０８には、デバッグ回路３５内で共有されるタイムスタンプタイマ１０９によって管理される時刻情報に基づくタイムスタンプが付加される。
【００４７】
並べ替え論理部１１５は、命令実行解析情報ＦＩＦＯ１１２の出力情報とオペランドアクセス情報ＦＩＦＯ１１４の出力情報とをＣＰＵ＃０の処理順序に対応するように一連のトレース情報に並べ替える機能を有する。
【００４８】
ＦＩＦＯ制御部１１３は、命令実行解析情報ＦＩＦＯ１１２、オペランドアクセス情報ＦＩＦＯ１１４、及び並べ替え論理部１１５の動作を制御する。
【００４９】
トレース出力回路１１１は、トレースパケット生成論理部１１６、パラレル・パラレル変換部１１７を含む。トレースパケット生成論理部１１６は、並べ替え論理部１１５の出力データに必要な情報を付加することでパケットデータを形成する。また、パケットデータのサイズを縮小するために、アドレス情報の差分値を求める処理を行う。ホストシステム３１が要求している必要十分な情報量のみをパケットデータとする事で、ひとつのパケットデータを出力する時間を短縮する。パラレル・パラレル変換部１１７は、時分割により、トレースパケット生成論理部１１６から出力されたパラレルデータをそれよりも小さなサイズのパラレルデータに変換する。変換後のデータは、デバッグ用端子４４Ａ，４４Ｂ，４４Ｃを介してエミュレータ３２へ出力される。
【００５０】
トレース取得回路２１０は、命令実行解析情報ＦＩＦＯ２１２、ＦＩＦＯ制御部２１３、オペランドアクセス情報ＦＩＦＯ２１４、及び並べ替え論理部２１５を含む。命令実行解析情報ＦＩＦＯ２１２は、ＣＰＵ＃１内の制御部２０１から出力された命令実行解析情報２０７を取り込むための専用バッファメモリとされ、この命令実行解析情報ＦＩＦＯ２１２に取り込まれた命令実行解析情報２０７は、古い順に、後段の並べ替え論理部２１５に出力されるようになっている。
【００５１】
オペランドアクセス情報ＦＩＦＯ２１４は、モニタブリッジ２０６を介して伝達されたオペランドアクセス情報２０８を取り込むための専用バッファメモリとされ、このオペランドアクセス情報ＦＩＦＯ２１４に取り込まれたオペランドアクセス情報２０８は、古い順に、後段の並べ替え論理部２１５に出力されるようになっている。
【００５２】
命令実行解析情報ＦＩＦＯ２１２に取り込まれる命令実行解析情報２０７と、オペランドアクセス情報ＦＩＦＯ２１４に取り込まれるオペランドアクセス情報２０８には、デバッグ回路３５内で共有されるタイムスタンプタイマ１０９によって管理される時刻情報に基づくタイムスタンプが付加される。
【００５３】
並べ替え論理部２１５は、命令実行解析情報ＦＩＦＯ２１２の出力情報とオペランドアクセス情報ＦＩＦＯ２１４の出力情報とをＣＰＵ＃１の処理順序に対応するように一連のトレース情報に並べ替える機能を有する。
【００５４】
ＦＩＦＯ制御部２１３は、命令実行解析情報ＦＩＦＯ２１２、オペランドアクセス情報ＦＩＦＯ２１４、及び並べ替え論理部２１５の動作を制御する。
【００５５】
トレース出力回路１１１は、トレースパケット生成論理部２１６、パラレル・パラレル変換部２１７を含む。トレースパケット生成論理部２１６は、並べ替え論理部２１５の出力データに必要な情報を付加することでパケットデータを形成する。また、パケットデータのサイズを縮小するために、アドレス情報の差分値を求める処理を行う。ホストシステム３１が要求している必要十分な情報量のみをパケットデータとする事で、ひとつのパケットデータを出力する時間を短縮する。パラレル・パラレル変換部２１７は、時分割により、トレースパケット生成論理部２１６から出力されたパラレルデータをそれよりも小さなサイズのパラレルデータに変換する。変換後のデータは、複数のデバッグ用端子４４Ｄ，４４Ｅ，４４Ｆを介してエミュレータ３２へ出力される。
【００５６】
図５には、上記ＣＰＵ＃０における制御部１０１及び実行部１０３の構成例が示される。
【００５７】
実行部１０３は、４本のパイプラインとレジスタファイル５１６と命令アドレス演算器５１７を含む。４本のパイプラインには、整数パイプライン（ＡＬＵ）５１２,５１３、ロード・ストアパイプライン５１４、乗算パイプライン（ＭＡＣ）５１５を含む。レジスタファイル５１６には、汎用レジスタ、コントロールレジスタ、システムレジスタなどが含まれる。
【００５８】
制御部１０１及び実行部１０３は、特に制限されないが、複数の処理系統(パイプライン)を備えることで、複数の命令を並列に処理可能な構成（スーパースカラ）とされる。制御部１０１は、命令供給制御及び命令管理部５０１、命令キュー５０２、ＦＰＵ命令発行部５０３、命令シーケンサ５０４、命令デコーダ５０５,５０６、割り込み例外処理検出部５０７、デバッグ機能部５０８、命令発行制御部５０９、及び制御パイプライン５１０を含む。命令キュー５０２は、命令バス１０４を介してメモリ３７から命令をフェッチする。命令キュー５０２は、命令の先読みも行う。命令キュー５０２によってフェッチされた命令は、命令デコーダ５０５,５０６又は割り込み例外処理検出部５０７に伝達される。命令デコーダ５０５,５０６は、入力された命令をデコードする。このデコード結果は命令発行制御部５０９に伝達される。割り込み例外処理検出部５０７は、割り込みの受理や命令実行結果例外の検出を行う。ＦＰＵ命令発行部５０３は、ＦＰＵ１０２に対して命令を発行する。命令発行制御部５０９は、実行部１０３における各部への制御信号の発行制御を行う。命令供給制御及び命令管理部５０１は、命令供給制御、命令アドレス管理を行う。命令シーケンサ５０４は、予め定められた順序または手続きに従ってパイプラインの各段階を逐次進める。制御パイプライン５１０は、命令シーケンサ５０４の制御下で、実行部１０３でのパイプライン処理を制御する。デバッグ機能部５０８は、ＣＰＵ＃０内の各部、例えば命令デコーダ５０５,５０６、割り込み例外処理検出部５０８、実行部１０３、ＦＰＵ１０２等から各種情報を収集し、それを命令実行状態解析情報１０７として命令実行解析情報ＦＩＦＯ１１２へ出力する。例えば発生した分岐の種類（分岐情報）は、命令デコーダ５０５,５０６から得ることができ、実行した命令の種類（命令デコード情報）は命令デコーダ５０５,５０６及び割り込み例外処理検出部５０７から得ることができる。２命令の実行か、１命令の実行かの情報（命令実行数情報）は、命令供給制御及び命令管理部５０１、命令デコーダ５０５,５０６、制御パイプライン５１０から得ることができる。分岐元アドレス値は、命令アドレス演算器５１７から得ることができる。分岐先アドレス値は、割り込み例外処理検出部５０７、命令シーケンサ５０４、制御パイプライン５１０、命令アドレス演算器５１７から得ることができる。デバッグ専用命令、命令例外、割り込み、例外処理情報は、割り込み例外処理検出部５０７から得ることができる。リード・ライト、アクセスサイズに関する情報（バスアクセス情報）は、命令デコーダ５０５,５０６から得ることができる。ＦＰＵレジスタへのリード・ライト、アクセスサイズに関する情報（ＦＰＵアクセス情報）は、ＦＰＵ命令発行部５０３及びＦＰＵ１０２から得ることができる。
【００５９】
ＣＰＵ＃１における制御部２０１及び実行部２０３は、それぞれ上記ＣＰＵ＃０における制御部１０１及び実行部１０３と同様に構成される。
【００６０】
次に、上記のように構成されたマイクロコンピュータ３４のデバッグについて説明する。
【００６１】
図６には、図１における命令実行解析ＦＩＦＯ１１２及びオペランドアクセス情報ＦＩＦＯ１１４の情報蓄積状態が模式的に示される。ＣＰＵ＃０に対応するトレース取得回路１０９では、制御部１０１内のデバッグ機能部５０８によって収集された命令実行解析情報１０７と、オペランドバス１０５から得られるオペランドアクセス情報１０８とが、それぞれ専用の論理回路、すなわち命令実行解析情報ＦＩＦＯ１１２及びオペランドアクセス情報ＦＩＦＯ１１４を介して取り込むようにしている。かかる構成をとることで、ＣＰＵ側から発生し得る複数のトレース情報（命令実行解析情報１０７とオペランドアクセス情報１０８）を取得することができる。各トレース情報には、タイムスタンプが付加されており、情報取得時刻の前後関係の把握が容易になっている。しかし、デバッグ対象となるソフトウェアは命令をひとつづつ逐次実行しているため、命令順序と対応する順番に分岐トレース、オペランドトレースを一本のトレース情報にまとめる必要がある。
【００６２】
ＣＰＵの命令実行はパイプライン処理とされるため、特にオペランドアクセスは、命令実行後アクセスが完了するタイミングが様々である。そこでトレース情報は、並べ替え論理部１１５（２１５）により、以下の処理が行われてから、トレース出力回路１１１（２１１）に伝達される。
【００６３】
（Ａ）タイムスタンプ情報を使い、時間の前後関係に基づいて命令実行解析ＦＩＦＯ１１２（２１２）、オペランドアクセス情報ＦＩＦＯ１１４（２１４）からの情報の取り出し順が決定される。
【００６４】
（Ｂ）パイプライン動作の規定を加味して、同時刻のトレース情報に対して順序が決定される。
【００６５】
（Ｃ）パイプライン処理上、トレース時刻が逆転しているケースは、正しい順序に並び替えるようにする。
【００６６】
並べ替え論理部１１５（２１５）での処理においては、以下のような各トレースの性質を考慮して情報取得のルールが設定される。
【００６７】
分岐トレース手法では、分岐発生時の命令アドレスと分岐先の命令アドレスを必要とする。この二つの情報が揃って、初めてトレース情報として確定する。
【００６８】
オペランドアクセスをトレースする場合、二つの使い方が要求される。すなわち、アクセスした結果をトレースする場合と、アクセス要求が追跡できれば十分な場合である。前者の場合、オペランドが取得できるまでトレース情報が確定しない。後者の場合、アクセスを開始した時点ですぐにトレース可能とされる。また、前者と後者とでは、トレース情報の同時発生や、パイプラインの考慮の有無に違いがある。さらにオペランドアクセスでは、リードとライトでアクセス完了に要する段数が異なる。
【００６９】
リード要求、アクセスサイズ情報、アドレスを出力した後、アクセス先からデータを取得するまでの期間が必要アクセス期間になる。
【００７０】
また、ライト要求、アクセスサイズ情報、アドレスを出力した後、ライトデータを出力した時点でアクセスを完了することができる。設計上、ライトデータをアドレスと同時に出力することも可能で、その場合、リードよりも短い期間で処理が終了する。
【００７１】
以上の各性質を考慮して一連のトレース情報の流れが組み立てられる。つまり、分岐トレースの性質とオペランドトレースの性質との違い、リードアクセスの性質とライトアクセスの性質との違いを把握した上で、どのような順番でトレース情報が発生したか、つまり、ＣＰＵの処理順序に合わせて、命令実行解析情報ＦＩＦＯ１１２（２１２）とオペランドアクセス情報ＦＩＦＯ１１４（２１４）の出力に基づいてひとつのトレース出力を得る。
【００７２】
図７には、スーパースカラでのトレース取得例が示される。
【００７３】
「ＲＤ」はリード命令、「ＷＲ」はライト命令であり、分岐命令とデータアクセスは同時実行できるものとする。この例では、バスからリード値をトレースし、ライト値をトレースし、トレース出力回路（ＡＵＤ）１１１，２１１は複数事象を出力できないと仮定する。
【００７４】
例えば時刻１において、命令１として演算３が実行され、命令２としてリード命令ＲＤ１が同時に実行される。時刻３でＲＤ１によるリードアクセスがトレースされ、上記ＲＤ１のトレース結果としてトレース取得回路１１０（２１０）に入力される。この場合、上記ＲＤ１のトレース結果がそのままトレース取得回路１１０（２１０）から出力される。時刻２では、命令１としてリード命令ＲＤ２が実行され、命令２として演算４が同時に実行される。時刻５でＲＤ２によるリードアクセスがトレースされ、そのトレース結果がトレース取得回路１１０（２１０）に入力される。この場合、上記ＲＤ２のトレース結果がそのままトレース取得回路１１０（２１０）から出力される。時刻３では、命令１として演算５が実行され、命令２としてライト命令ＷＲ１が同時に実行される。時刻６でＷＲ１によるライトアクセスがトレースされ、そのトレース結果が、それがトレース取得回路１１０（２１０）から出力される。また、時刻７で、命令１としてライト命令ＷＲ２が実行され、命令２として分岐命令１が同時に実行される。分岐トレース手法では、分岐発生時の命令アドレスと分岐先の命令アドレスが必要とされるため、データトレースのＷＲ２と、分岐トレースの分岐１とは、同じ時刻８となる。そこで、並べ替え論理部１１５（２１５）での処理においては、パイプライン動作の規定を加味して、同時刻のトレース情報に対して順序が決定される。つまり、並べ替え論理部１１５（２１５）の出力は、データトレース：ＷＲ２、時刻８が先に出力され、その後に、分岐トレース：分岐１、時刻８が出力される。次に、時刻１０で、命令１として分岐２が実行され、命令２としてリード命令ＲＤ３が実行される。この場合、分岐2は遅延分岐命令を想定し、ＲＤ３の実行が終了するまでＣＰＵがストールされる。この結果、分岐トレースの分岐２と、データトレースのＲＤ３とは、同じ時刻１３となる。この場合、並べ替え論理部１１５（２１５）での処理においては、パイプライン動作の規定を加味して、同時刻のトレース情報に対して順序が決定される。つまり、「分岐トレース：分岐２、時刻１３」が先に出力され、その後に、「データトレース：ＲＤ３、時刻１３」が出力される。
【００７５】
図８には、スーパースカラでの別のトレース取得例が示される。
【００７６】
「ＲＤ」はリード命令、「ＷＲ」はライト命令であり、分岐命令とデータアクセスは同時実行できるものとする。この例では、リード値及びライト値をトレースしない、トレース出力回路（ＡＵＤ）１１１，２１１は複数事象を出力できないと仮定する。このような条件下では、時刻１０で、命令１として分岐２が実行され、命令２としてリード命令ＲＤ３が同時に実行された場合に、時刻１０でＲＤ３によるリードアクセスのトレースが取得されてしまう。この結果、データトレースの時刻と分岐トレースの時刻とが逆転する。そこで、並べ替え論理部１１５（２１５）での処理においては、パイプライン処理上、トレース時刻が逆転しているケースは、正しい順序に並び替えるようにする。つまり、「分岐トレース：分岐２、時刻１３」が先に出力され、その後に、「データトレース：ＲＤ３、時刻１０」が出力される。
【００７７】
以上のようなトレース結果を、上記のルールに従って外部のエミュレータ３２に供給することでエミュレータ３２やホストシステム３１で、トレース結果を再生する（表示装置に表示する）処理が容易になる。これは、デバッグシステム全体の性能向上に寄与できる。また、マルチコア化された場合に、同一の端子からトレース情報が出力されることがあり、ＣＰＵ間の前後関係もタイムスタンプをトレース取得時に定義することが可能であるため、トレース結果を再生する処理が容易となる。
【００７８】
《実施の形態２》
マルチコアは、動的にそれぞれのＣＰＵクロックを変更可能とすることにメリットがあるが、様々な周波数で動作しているＣＰＵがあると、以下のような不都合を生ずる虞れがある。
【００７９】
すなわち、（Ａ）命令実行速度が違うために、実行した命令の量はトレースのみでは把握が困難となる。（Ｂ）動作周波数ゼロ（いわゆるスリープ状態）にどのＣＰＵがいつ遷移したか不明となる。
【００８０】
上記（Ａ）については、制御部１０１（２０１）において命令実行数を指示し、命令実行数を数えるようにすればよい。また、（Ｂ）については、制御部１０１（２０１）内のデバッグ機能部５０８によって、スリープ（ＳＬＥＥＰ）命令の実行を検出すればよい。
【００８１】
さらに、制御部１０１（２０１）内のデバッグ機能部５０８によって、以下の情報を取得することができる。
【００８２】
ＣＰＵの状態変更やＣＰＵの特徴的な命令の実行結果はデバッグにおいて有効な情報と考えられる。ＳＬＥＥＰ命令、ＬＤＳ／ＳＴＳ命令、ＬＤＣ／ＳＴＣ命令、デバッグ専用命令、ＴＲＡＰ命令浮動小数点命令、キャッシュ制御命令、排他制御命令などの特徴的な命令の実行状態も取得するとよい。また、命令ではないが、ＣＰＵの動作を変更する事象、例えば命令実行の結果に起因して発生した例外処理、マニュアルリセット例外など、特定命令の実行結果のトレース機能を設けることで、デバッグ効率を更に向上させることができる。
【００８３】
図９には、デバッグ機能部５０８でのトレース例が示される。
【００８４】
トレースの種類として、分岐トレースパケット構成、データトレースパケット構成、ＳＬＥＥＰ（スリープ）命令トレース、ｃａｃｈｅ（キャッシュ）操作命令トレース、ＬＤＳ／ＳＴＳ命令トレース、ＬＤＣ／ＳＴＣ命令トレース、デバッグ専用命令トレースなどを挙げることができる。トレース出力回路（ＡＵＤ）１１１，２１１から出力するトレース情報パケットの構成要素として、出力したＣＰＵの番号（ＣＰＵの情報）、分岐の種類（原因情報）、パケット構成情報、分岐先アドレス、分岐元アドレス、タイムスタンプ、最終分岐後命令実行数を挙げることができる。命令を実行することのトレースでは、ＣＰＵの情報、命令の種類タイムスタンプの少なくとも三つの情報を取得すれば、トレース情報として意味のあるものになる。分岐トレースパケット構成によれば、分岐命令による分岐、ＣＰＵの例外検出、割り込み、例外処理によるプログラムの分岐を把握することができる。データトレースパケット構成によれば、データ転送命令によりメモリ又はＩ／Ｏレジスタへリードあるいはライトした内容を把握することができる。ＳＬＥＥＰ命令トレースによれば、ＳＬＥＥＰ命令実行により低消費電力状態へ遷移したことを把握することができる。ｃａｃｈｅ操作命令トレースによれば、命令やデータのプリフェッチ命令、キャッシュライン無効化命令等の実行と対象アドレスを把握することができる。ＬＤＣ／ＳＴＣ命令トレースによれば、ＣＰＵにおけるコントロールレジスタロード、あるいはストアした命令を実行してＣＰＵやＦＰＵの状態を変更したことを把握することができる。ＬＤＳ／ＳＴＳ命令トレースによれば、ＣＰＵ、ＦＰＵのシステムレジスタにロード命令あるいはストア命令を実行してＣＰＵ、ＦＰＵの状態を変更したことを把握することができる。デバッグ専用命令トレースによれば、デバッグ専用命令に伴うＣＰＵの停止（ブレーク）等が発生してＣＰＵの動作状態が変わったことを把握することができる。
【００８５】
図１０には、分岐トレースの流れが示される。
【００８６】
先ず、分岐命令実行が確定されるか、例外受理が確定されると（１００１）、分岐命令がデコードされるが、後続命令のデコードは中止される（１００２）。例外処理では命令をデコードしないが、同様に後続命令のデコードは中止される(１００２)。そして、分岐処理が実行されて（１００３）、制御部１０１（２０１）において、パイプライン処理が停止可能な否かの判別が行われる（１００４）。パイプライン処理の停止が可能場合、分岐先命令がフェッチされる（１００５）。上記ステップ１０１１〜１００５までの処理はＣＰＵ処理とされる。また、デバッグ機能部５０８では、上記ステップ１００２での分岐命令デコードの開始と同時に分岐トレースが開始され（１００６）、デバッグ機能部５０８によって、分岐元／分岐先アドレスや分岐の種類が取得される（１００７）。そして、トレース取得回路（ＴＲＣ）１１０（２１０）において、タイムスタンプが付加され、命令実行数が付加されることでトレース情報が生成され（１００８）、命令実行解析情報ＦＩＦＯ１１２（２１２）に蓄積される（１００９）。その後、命令実行解析情報ＦＩＦＯ１１２（２１２）の蓄積情報が取り出され、ＣＰＵ識別子が追加されてから（１０１０）、トレース出力部１１１（２１１）に出力される（１０１１）。上記ステップ１００６〜１０１１までの処理はＴＲＣ取得処理とされる。
【００８７】
図１１には、スリープトレースの流れが示される。
【００８８】
先ず、ＳＬＥＥＰ命令の実行が確定され（１１０１）、ＳＬＥＥＰ命令がデコードされて実行される（１１０２，１１０３）。そして制御部１０１（２０１）において、パイプライン処理が停止可能か否かの判別が行われる（１１０４）。パイプライン処理が停止可能な場合、パイプライン処理が停止されて、ＣＰＵは低消費電力（スリープ）状態に遷移される（１１０５）。上記ステップ１１０１〜１１０５までの処理はＣＰＵ処理とされる。また、デバッグ機能部５０８では、上記ステップ１１０２でのＳＬＥＥＰ命令のデコード開始と同時に、ＳＥＥＰトレースが開始され（１１０６）、上記ステップ１１０３でのＳＬＥＥＰ命令実行における命令アドレスが取得される（１１０７）。そして、トレース取得回路（ＴＲＣ）１１０（２１０）において、タイムスタンプが付加され、命令実行数が付加されることでトレース情報が生成され（１１０８）、命令実行解析情報ＦＩＦＯ１１２（２１２）に蓄積される（１１０９）。その後、命令実行解析情報ＦＩＦＯ１１２（２１２）の蓄積情報が取り出され、ＣＰＵ識別子が追加されてから（１１１０）、トレース出力部１１１（２１１）に出力される（１１１１）。上記ステップ１１０６〜１１１１までの処理はＴＲＣ取得処理とされる。
【００８９】
図１２には、トレース出力回路（ＡＵＤ）での処理の流れが示される。
【００９０】
ここでは、一例として、ＳＬＥＥＰ命令実行結果のトレースが行われた場合の処理が示される。
【００９１】
ＳＬＥＥＰ命令実行結果のトレースが行われた場合、トレース出力回路１１１（２１１）では、対応するトレース取得回路１１０（２１０）からトレース結果が取り込まれる（１２０１）。そしてトレースパケット生成論理部１１６（２１６）において、トレースヘッダ生成（１２０２）、アドレス差分の生成（１２０３）、タイムスタンプサイズ変更、命令実行数サイズ変更が行われる（１２０４）。トレースヘッダ生成（１２０２）では、どのＣＰＵでＳＬＥＥＰ命令を実行したかを示すデータが作成される。アドレス差分の生成（１２０３）では、出力情報量の削減のため、前回出力したトレースのアドレス値との差分が求められ、それが出力される。タイムスタンプサイズ変更、命令実行数サイズ変更（１２０４）では、例えば３２ｂｉｔ値から１６ｂｉｔ値にサイズが変更される。そして、トレースパケット生成論理部１１６（２１１）では、所定のフォーマットに従って出力データを並べることで、ＡＵＤパケットの元データの組み立てが行われる（１２０５）。その後、パラレル・パラレル変換部１１７（２１７）においてパラレル・パラレル変換が行われる（１２０６）。このパラレル・パラレル変換は、例えば８ｂｉｔバス対応又は１６ｂｉｔバス対応に変換される。そして、出力クロックＣＬＫに同期化され（１２０７）、複数のデバッグ用端子４４Ａ，４４Ｂ，４４Ｃ（４４Ｄ，４４Ｅ，４４Ｆ）を介して外部出力される。出力データフォーマットにおいて、命令アドレス差分は可変長部（任意）とされ、タイムスタンプや命令実行数は任意出力の設定が可能とされる。
【００９２】
《実施の形態３》
図２には、上記マイクロコンピュータ３４における主要部の別の構成例が示される。
【００９３】
図２に示されるマイクロコンピュータ３４が、図１に示されるのと大きく相違するのは、端子マージ論理部２１９が設けられ、この端子マージン論理部２１９によって、パラレル・パラレル変換部１１７，２１７の出力がマージされてからデバッグ用端子４４Ａ，４４Ｂ，４４Ｃを介して外部出力される点である。端子マージ論理部２１９では、パラレル・パラレル変換部１１７，２１７の出力が時分割されてマージされる。このようにすることで、トレース情報の外部出力に用いられるデバッグ用端子の数は、図１に示される場合に比べて少なくて済む。
【００９４】
以上本発明者によってなされた発明を実施形態に基づいて具体的に説明したが、本発明はそれに限定されるものではなく、その要旨を逸脱しない範囲において種々変更可能であることは言うまでもない。
【符号の説明】
【００９５】
３１  ホストシステム
３２  エミュレータ
３３  ユーザシステムボード
３４  マイクロコンピュータ
３５  デバッグ回路
３７  メモリ
３８〜４１  周辺機能部
４４Ａ，４４Ｂ，４４Ｃ，４４Ｄ，４４Ｅ，４４Ｆ  デバッグ用端子
１０１，２０１  制御部
１０２，２０２  ＦＰＵ
１０３，２０３  実行部
１０４，２０４  命令バス
１０５，２０５  オペランドバス
１０６，２０６  モニタブリッジ
１０９  タイムスタンプタイマ
１１０，２１０  トレース取得回路
１１１，２１１  トレース出力回路
１１２，２１２  命令実行解析情報ＦＩＦＯ
１１３，２１３  ＦＩＦＯ制御部
１１４，２１４  オペランドアクセス情報ＦＩＦＯ
１１５，２１５  並べ替え論理部
１１６，２１６  トレースパケット生成論理部
１１７，２１７  パラレル・パラレル変換部
５０１  命令供給制御及び命令管理部
５０２  命令キュー
５０３  ＦＰＵ命令発行部
５０４  命令シーケンサ
５０５，５０６  命令デコーダ
５０７  割り込み例外処理検出部
５０９  命令発行制御部
５１０  制御パイプライン
５１２，５１３  整数パイプライン
５１４  ロード・ストアパイプライン
５１５  乗算パイプライン
５１６  レジスタファイル
５１７  命令アドレス演算器
ＣＰＵ＃０〜＃３  中央処理装置
【図１】
2011243110.tif 000003
【図２】
2011243110.tif 000004
【図３】
2011243110.tif 000005
【図４】
2011243110.tif 000006
【図５】
2011243110.tif 000007
【図６】
2011243110.tif 000008
【図７】
2011243110.tif 000009
【図８】
2011243110.tif 000010
【図９】
2011243110.tif 000011
【図１０】
2011243110.tif 000012
【図１１】
2011243110.tif 000013
【図１２】
2011243110.tif 000014