(57)【要約】【課題】半導体装置で実行されるプログラムのトレース情報の出力を柔軟に制御すること。【解決手段】半導体装置は、トレース出力の始点又は終点を示すトレース制御命令を含む複数の命令が記述されたプログラムを記憶する記憶部と、プログラムを実行するプロセッサと、プロセッサからプログラムに含まれる各命令の実行時に各命令に対応するトレース情報を取得するトレース部と、を備える。トレース部は、プロセッサにおいて実行されたトレース制御命令がトレース出力の始点を示す場合、当該トレース制御命令以降の命令に対応するトレース情報を出力し、プロセッサにおいて実行されたトレース制御命令がトレース出力の終点を示す場合、当該トレース制御命令より後の命令に対応するトレース情報の出力を停止する。【選択図】図１
2019101848.tif 000002
【特許請求の範囲】
【請求項１】
トレース出力の始点又は終点を示すトレース制御命令を含む複数の命令が記述されたプログラムを記憶する記憶部と、
前記プログラムを実行するプロセッサと、
前記プロセッサから前記プログラムに含まれる各命令の実行時に各命令に対応するトレース情報を取得するトレース部と、
を備え、
前記トレース部は、
前記プロセッサにおいて実行された前記トレース制御命令が前記トレース出力の始点を示す場合、当該トレース制御命令以降の命令に対応する前記トレース情報を出力し、
前記プロセッサにおいて実行された前記トレース制御命令が前記トレース出力の終点を示す場合、当該トレース制御命令より後の命令に対応する前記トレース情報の出力を停止する
半導体装置。
【請求項２】
前記プロセッサは、
前記トレース制御命令を実行した場合に、当該トレース制御命令に対応する値を、現在の前記トレース出力の許可又は禁止を示す第１のトレース制御信号に設定し、
前記プログラム内の各命令を実行する度に、前記第１のトレース制御信号を前記トレース部へ出力し、
前記トレース部は、
前記第１のトレース制御信号に応じて前記トレース情報の出力を制御する
請求項１に記載の半導体装置。
【請求項３】
前記トレース部は、
前記第１のトレース制御信号が前記トレース出力の許可から禁止へ変化したことを検出した場合に、当該トレース制御命令に対応する前記トレース情報を出力し、当該トレース制御命令の次に実行される命令に対応する前記トレース情報からの出力を停止する
請求項２に記載の半導体装置。
【請求項４】
前記プログラムは、前記トレース制御命令と共に任意の文字列であるタグ情報がさらに記述されており、
前記プロセッサは、
前記トレース制御命令が実行された場合に、当該トレース制御命令と共に記述された前記タグ情報を前記トレース情報に含めて前記トレース部へ出力し、
前記トレース部は、
前記トレース制御命令に対応する前記トレース情報を出力する際に、前記タグ情報を含めて出力する
請求項１に記載の半導体装置。
【請求項５】
前記トレース部は、
前記トレース制御命令に対応する前記トレース情報の出力の許可又は禁止を示す情報を保持するレジスタを有し、
前記プロセッサにおいて前記トレース制御命令が実行された場合に、前記レジスタに応じて、当該トレース制御命令に対応する前記トレース情報の出力を制御する
請求項１に記載の半導体装置。
【請求項６】
前記プログラムには、前記トレース制御命令と共に任意の文字列であるタグ情報がさらに記述されており、
前記プロセッサは、
前記トレース制御命令が実行された場合に、当該トレース制御命令と共に記述された前記タグ情報を前記トレース情報に含めて前記トレース部へ出力し、
前記トレース部は、
前記トレース制御命令に対応する前記トレース情報を出力する際に、前記タグ情報を含めて出力する
請求項５に記載の半導体装置。
【請求項７】
前記トレース制御命令は、前記プロセッサで実行可能な所定の命令における命令コードの一部に、前記トレース出力の始点又は終点を示す情報として定義される
請求項１に記載の半導体装置。
【請求項８】
前記トレース制御命令は、前記トレース情報のリアルタイム出力の許可又は禁止を示す情報を含み、
前記トレース部は、
前記トレース情報を一時的に記憶するバッファと、
前記トレース情報が前記バッファの容量を上回る場合に、前記プロセッサにおいて実行された前記トレース制御命令に応じた制御を行う出力制御部と、
を有し、
前記出力制御部は、
前記トレース制御命令が前記リアルタイム出力の許可を示す場合、前記バッファの容量を上回るトレース情報を破棄し、
前記トレース制御命令が前記リアルタイム出力の禁止を示す場合、前記バッファの容量を上回るトレース情報を出力する間、前記プロセッサに対して動作を停止させる動作停止要求を出力する
請求項１に記載の半導体装置。
【請求項９】
前記トレース部は、
前記トレース情報のリアルタイム出力の許可又は禁止を示す情報を保持するレジスタと、をさらに有し、
前記出力制御部は、
選択指示に応じて、前記トレース制御命令又は前記レジスタのいずれかを選択し、
前記トレース制御命令が選択された場合、前記トレース制御命令における前記リアルタイム出力の許可又は禁止を示す情報に応じて前記トレース情報の出力及び前記動作停止要求の出力を制御する
請求項８に記載の半導体装置。
【請求項１０】
前記トレース部は、
前記トレース出力の対象となる実行アドレスの定義に基づき、前記プロセッサにおける現在の実行アドレスが前記トレース出力の範囲か否かを判定し、当該判定の結果に応じた前記トレース出力の許可又は禁止を示す第２のトレース制御信号を出力するトレースフィルタと、
前記トレースフィルタの判定対象となる実行アドレスに対応する前記トレース情報を保持する調整部と、
選択指示に応じて、前記第１のトレース制御信号と前記第２のトレース制御信号とのいずれかを選択して統合トレース制御信号として出力する選択回路と、
前記統合トレース制御信号が前記トレース出力の許可を示す場合に、前記調整部に保持された前記トレース情報を読み出して出力するトレース出力制御回路と、
を有する
請求項２に記載の半導体装置。
【請求項１１】
前記調整部は、
前記第１のトレース制御信号が前記トレース出力の許可から禁止へ変化したことを検出した場合に、前記第１のトレース制御信号を前記トレース情報の出力の許可を示す値に設定して、前記選択回路へ出力する
請求項１０に記載の半導体装置。
【請求項１２】
前記トレース部は、
前記トレース制御命令に対応する前記トレース情報の出力の許可又は禁止を示す情報を保持するレジスタをさらに有し、
前記トレース出力制御回路は、
前記統合トレース制御信号が前記トレース出力の禁止を示す場合に、前記レジスタに応じて、前記トレース制御命令に対応する前記トレース情報の出力を制御する
請求項１０に記載の半導体装置。
【請求項１３】
トレース出力の始点又は終点を示すトレース制御命令を含む複数の命令が記述されたプログラムを記憶する記憶部と、
前記プログラムを実行するプロセッサと、
前記プロセッサから前記プログラムに含まれる各命令の実行時に各命令に対応するトレース情報を取得するトレース部と、
を備え、
前記トレース部は、
前記プロセッサにおいて前記トレース制御命令が実行された場合、当該トレース制御命令に対応する前記トレース情報を出力し、
前記実行されたトレース制御命令が前記トレース出力の始点を示す場合、当該トレース制御命令より後の命令に対応する前記トレース情報の出力を維持し、
前記実行されたトレース制御命令が前記トレース出力の終点を示す場合、当該トレース制御命令より後の命令に対応する前記トレース情報の出力を停止する
半導体装置。
【請求項１４】
前記プログラムには、前記トレース制御命令と共に任意の文字列であるタグ情報がさらに記述されており、
前記トレース部は、
前記トレース情報を出力する際に、対応するトレース制御命令と共に記述された前記タグ情報を併せて出力する
請求項１３に記載の半導体装置。
【請求項１５】
前記プログラムには、
前記トレース出力の終点を示す前記トレース制御命令であって、第１のタグ情報が共に記述されている第１のトレース制御命令と、
前記トレース出力の終点を示す前記トレース制御命令であって、前記第１のタグ情報とは異なる第２のタグ情報が共に記述されている第２のトレース制御命令と、が記述されている
請求項１４に記載の半導体装置。
【請求項１６】
前記トレース部は、
前記トレース制御命令に対応する前記トレース情報の出力の許可又は禁止を示す情報を保持するレジスタを有し、
前記プロセッサにおいて前記トレース制御命令が実行された場合に、前記レジスタに応じて、当該トレース制御命令に対応する前記トレース情報の出力を制御する
請求項１５に記載の半導体装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は半導体装置に関し、例えば、実行するプログラムのトレース情報を取得する半導体装置に関する。
【背景技術】
【０００２】
近年、プログラムを実行可能なマイクロコンピュータ等の半導体装置において、プログラム実行時の命令の実行履歴やアクセス履歴を取得し、所定の記憶領域へ出力するトレース機能を搭載したものがある。
【０００３】
特許文献１には、プログラム内に記述した実行履歴の記憶有無の指示に応じて、トレーサへの実行履歴の記憶を制御するＩＣＥ（Ｉｎ−Ｃｉｒｃｕｉｔ  Ｅｍｕｌａｔｏｒ）に関する技術が開示されている。特許文献１にかかるＩＣＥは、ターゲットシステム（マイコン）の代行をするエミュレーションＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）と、デバッグ対象のプログラムを記憶するエミュレーションメモリと、プログラムの実行履歴を記憶するトレーサと、プログラム内の指示を判定する判定部と、を備える。ここで、エミュレーションメモリ内の前記プログラムには、ＣＡＬＬ文の呼び出し先のサブルーティンの内容をトレーサへ記憶しない指示が記述されている。そして、エミュレーションＣＰＵによる前記プログラムの実行中に、トレーサがプログラム内の前記指示を判別し、判別結果に基づきトレーサの記憶動作を制御する。これにより、メインプログラムの実行履歴がトレーサに記憶され、ＣＡＬＬ文の呼び出し先のサブルーティンの内容はトレーサに記憶されない。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平５−２３３３６３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、特許文献１は、特定のＣＡＬＬ文の呼び出し先（サブルーティン）の単位でトレース出力の制御を行うものであり、実行履歴の出力制御の柔軟性に欠けるという問題点がある。
【０００６】
その他の課題と新規な特徴は、本明細書の記述および添付図面から明らかになるであろう。
【課題を解決するための手段】
【０００７】
一実施の形態によれば、半導体装置は、プログラムに記述したトレース制御命令を実行した際に、トレース制御命令がトレース出力の始点を示す場合には、当該命令以降の命令に対応するトレース情報を出力し、トレース制御命令がトレース出力の終点を示す場合には、当該命令より後の命令に対応する前記トレース情報の出力を停止するものである。
【発明の効果】
【０００８】
前記一実施の形態によれば、半導体装置で実行されるプログラムのトレース情報の出力を柔軟に制御することができる。
【図面の簡単な説明】
【０００９】
【図１】本実施形態１にかかる半導体装置の構成を示すブロック図である。
【図２】本実施形態１にかかるプロセッサによるプログラムの実行の処理の流れを説明するフローチャートである。
【図３】本実施形態１にかかるトレース制御命令が記述されたプログラムとトレース出力結果の例を示す図である。
【図４】本実施形態２にかかるマイクロコンピュータの構成を示すブロック図である。
【図５】本実施形態２にかかるＣＰＵトレース情報の例を示す図である。
【図６】本実施形態２にかかるトレースフィルタの構成を示すブロック図である。
【図７】本実施形態２にかかるトレース制御部の構成を示すブロック図である。
【図８】本実施形態２にかかるトレース制御命令が記述されたプログラムとトレース出力結果の例を示す図である。
【図９】本実施形態３にかかるマイクロコンピュータの構成を示すブロック図である。
【図１０】本実施形態３にかかるＣＰＵトレース情報の例を示す図である。
【図１１】本実施形態３にかかるトレース制御部の構成を示すブロック図である。
【図１２】本実施形態３にかかるトレース対象設定レジスタの例を示す図である。
【図１３】本実施形態３にかかるトレース制御命令が記述されたプログラムとトレース出力結果（全トレース）の例を示す図である。
【図１４】本実施形態３にかかるトレース制御命令が記述されたプログラムとトレース出力結果（命令タイプ設定あり）の例を示す図である。
【図１５】本実施形態４にかかる命令コードの拡張の例を示す図である。
【図１６】本実施形態５にかかるマイクロコンピュータの構成を示すブロック図である。
【図１７】本実施形態５にかかるトレースデータ出力部の構成を示すブロック図である。
【図１８】本実施形態５にかかるトレース制御命令が記述されたプログラムとトレース出力結果の例を示す図である。
【発明を実施するための形態】
【００１０】
説明の明確化のため、以下の記載及び図面は、適宜、省略、及び簡略化がなされている。また、様々な処理を行う機能ブロックとして図面に記載される各要素は、ハードウェア的には、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）、メモリ、その他の回路で構成することができ、ソフトウェア的には、メモリにロードされたプログラムなどによって実現される。したがって、これらの機能ブロックがハードウェアのみ、ソフトウェアのみ、またはそれらの組合せによっていろいろな形で実現できることは当業者には理解されるところであり、いずれかに限定されるものではない。なお、各図面において、同一の要素には同一の符号が付されており、必要に応じて重複説明は省略されている。
【００１１】
また、上述したプログラムは、様々なタイプの非一時的なコンピュータ可読媒体を用いて格納され、コンピュータに供給することができる。非一時的なコンピュータ可読媒体は、様々なタイプの実体のある記録媒体を含む。非一時的なコンピュータ可読媒体の例は、磁気記録媒体（例えばフレキシブルディスク、磁気テープ、ハードディスクドライブ）、光磁気記録媒体（例えば光磁気ディスク）、ＣＤ−ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）ＣＤ−Ｒ、ＣＤ−Ｒ／Ｗ、半導体メモリ（例えば、マスクＲＯＭ、ＰＲＯＭ（Ｐｒｏｇｒａｍｍａｂｌｅ  ＲＯＭ）、ＥＰＲＯＭ（Ｅｒａｓａｂｌｅ  ＰＲＯＭ）、フラッシュＲＯＭ、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ））を含む。また、プログラムは、様々なタイプの一時的なコンピュータ可読媒体によってコンピュータに供給されてもよい。一時的なコンピュータ可読媒体の例は、電気信号、光信号、及び電磁波を含む。一時的なコンピュータ可読媒体は、電線及び光ファイバ等の有線通信路、又は無線通信路を介して、プログラムをコンピュータに供給できる。
【００１２】
ここで、本実施形態が解決しようとする課題の別の側面について説明する。上述したように、プログラムを実行可能な半導体装置には、当該プログラムの実行履歴等のトレース情報を取得するためのトレース回路が搭載されていることが多い。ところが、近年のＣＰＵ数の増加やマイクロコンピュータの動作周波数の増加に伴い、トレース情報の量が増加している。特に、並列に動作される複数のＣＰＵから同時にトレース情報が取得される場合には、トレース情報の量の増加が顕著である。そのため、トレースインタフェースがオーバーフローして、トレース情報を保存するメモリの容量を超えてしまう場合がある。その結果、必要なトレース情報が取得できないという問題が起こり得る。
【００１３】
このような問題を解決する一案として、トレース回路内に、プログラム内のトレース対象となる条件を設定して、トレース情報を条件に合致するものに絞り込むフィルタ回路（トレースフィルタ）を設けることが挙げられる。当該フィルタ回路は、トレース情報の取得対象となるプログラムの実行アドレスを設定する。例えば、フィルタ回路は、トレース情報の取得を開始する実行アドレスと、終了する実行アドレスとを設定できる。また、フィルタ回路は、トレース情報を取得する実行アドレスの範囲を設定できる。そして、フィルタ回路は、これらの設定を組み合わせた条件も設定できる。
【００１４】
しかしながら、フィルタ回路では、一種類の条件によるトレース情報のフィルタを実現するためにも複数の比較回路等が必要となる。そのため、設定する条件の種類、及び、箇所が増加する度に、フィルタ回路の面積が増加する。そして、面積の増加に伴い、半導体装置の製造コストも増加する。また、トレース対象のプログラムの複雑化に伴い、トレースを取得する箇所及び取得しない箇所が多数となり、取得条件も複雑化する。よって、これらの取得条件を実行アドレスレベルで事前にフィルタ回路に設定することは、大変煩雑であるといえる。
【００１５】
また、特許文献１では、上述した通り、実行履歴の出力制御の柔軟性に欠けるため、トレース情報のフィルタ回路におけるこれらの課題を解決することはできない。以上のことから、以下ではこれらの課題を解決するための実施形態について説明する。
【００１６】
＜実施形態１＞
図１は、本実施形態１にかかる半導体装置１の構成を示すブロック図である。半導体装置１は、実行するプログラム１４のトレース機能を有するマイクロコンピュータやシステムＬＳＩ（Ｌａｒｇｅ−Ｓｃａｌｅ  Ｉｎｔｅｇｒａｔｉｏｎ）等である。半導体装置１は、記憶部１１と、プロセッサ１２と、トレース部１３とを備える。記憶部１１は、メモリ等の記憶装置である。記憶部１１は、プログラム１４を記憶する。ここで、プログラム１４は、複数の命令が記述されたものである。そして、複数の命令には、トレース出力の始点又は終点を示すトレース制御命令が含まれる。尚、トレース制御命令は、複数であっても良い。
【００１７】
プロセッサ１２は、記憶部１１からプログラム１４を読み出して実行する制御装置である。プロセッサ１２は、プログラム１４に含まれる各命令の実行に応じて当該命令に対応するトレース情報１５１及びトレース制御信号１５２をトレース部１３へ出力する。例えば、プロセッサ１２は、命令を実行する度に、トレース情報１５１及びトレース制御信号１５２をトレース部１３へ出力する。
【００１８】
ここで、トレース情報１５１は、命令の実行履歴やアクセス履歴を含む。また、トレース制御信号１５２は、現在のトレース出力の許可又は禁止を示す信号である。また、プロセッサ１２は、実行する命令がトレース制御命令である場合、当該トレース制御命令に対応する値を、トレース制御信号１５２に設定する。ここで、トレース制御命令に対応する値とは、トレース制御命令がトレース出力の始点を示す場合には例えば１であり、トレース制御命令がトレース出力の終点を示す場合には例えば０である。但し、トレース制御命令に対応する値はこれに限定されない。
【００１９】
トレース部１３は、プロセッサ１２からプログラム１４に含まれる各命令の実行時に各命令に対応するトレース情報１５１を取得する。また、トレース部１３は、プロセッサ１２からトレース制御信号１５２を取得する。そして、トレース部１３は、プロセッサ１２において実行されたトレース制御命令がトレース出力の始点を示す場合、当該トレース制御命令以降の命令に対応するトレース情報１５３を出力する。尚、トレース情報１５３は、プロセッサ１２から取得されたトレース情報１５１に対して所定の加工がされたものであってもよい。また、トレース部１３は、プロセッサ１２において実行されたトレース制御命令がトレース出力の終点を示す場合、当該トレース制御命令より後の命令に対応するトレース情報１５３の出力を停止する。尚、トレース部１３は、トレース情報１５３の出力先を、半導体装置１の内蔵するトレースメモリ（不図示）又は半導体装置１の外部の記憶装置のいずれか又は両方としてよい。
【００２０】
そのため、プログラム１４中にトレース出力の開始箇所と終了箇所を示すトレース制御命令を記述することで、トレースフィルタに詳細な設定を行うことなく、プログラム内容に応じた柔軟なトレース出力の制御が可能となる。つまり、トレース対象範囲をきめ細かく指定することができる。また、トレースフィルタを用いなくてもトレース出力の制御が実現できるため、トレースフィルタに用いる回路面積を削減できる。
【００２１】
また、トレース部１３は、プロセッサ１２からトレース制御信号１５２も取得する。そして、トレース部１３は、トレース制御信号１５２に応じてトレース情報１５３の出力を制御する。これにより、トレース部における出力制御が容易となる。
【００２２】
さらに、トレース部１３は、トレース制御信号１５２がトレース出力の許可から禁止へ変化したことを検出した場合に、当該トレース制御命令に対応するトレース情報１５３を出力し、当該トレース制御命令の次に実行される命令に対応するトレース情報１５３からの出力を停止するようにしてもよい。これにより、トレース出力の禁止を示す命令（トレースＯＦＦ命令）に対応するトレース出力を行った上で、トレースＯＦＦ命令より後の命令に対応するトレース出力を停止できる。
【００２３】
尚、プロセッサ１２は、必ずしも、命令の実行の度にトレース制御信号１５２を出力しなくて良い。例えば、プロセッサ１２は、トレース制御命令を実行した場合に、トレース制御信号１５２をトレース部１３へ出力するようにしてもよい。または、プロセッサ１２は、トレース制御信号１５２を出力しなくてもよい。その場合、トレース部１３は、トレース情報１５１を解析し、実行された命令がトレース制御命令であることを検出し、検出したトレース制御命令がトレース出力の始点又は終点のいずれを示すかを判定するようにしてもよい。
【００２４】
図２は、本実施形態１にかかるプロセッサ１２によるプログラムの実行の処理の流れを説明するフローチャートである。まず、プロセッサ１２は、プログラム１４の実行を開始する（Ｓ１０１）。具体的には、プロセッサ１２は、記憶部１１からプログラム１４の所定の開始アドレスに対応する命令を読み出す。そして、プロセッサ１２は、読み出した命令を実行する（Ｓ１０２）。ここで、プロセッサ１２は、実行対象の命令がトレース制御命令であるか否かを判定する（Ｓ１０３）。実行対象の命令がトレース制御命令であると判定した場合、プロセッサ１２は、トレース制御信号１５２を更新する（Ｓ１０４）。例えば、実行対象の命令がトレース制御命令であり、トレース出力の始点を示すものである場合には、プロセッサ１２は、トレース制御信号１５２に１を設定する。また、実行対象の命令がトレース制御命令であり、トレース出力の終点を示すものである場合には、プロセッサ１２は、トレース制御信号１５２に０を設定する。また、実行対象の命令がトレース制御命令でないと判定した場合、プロセッサ１２は、トレース制御信号１５２を更新せず、ステップＳ１０５へ進む。
【００２５】
その後、プロセッサ１２は、実行対象の命令の実行に応じたトレース情報１５１及びトレース制御信号１５２をトレース部１３へ出力する（Ｓ１０５）。これに伴い、トレース部１３は、受け付けたトレース情報１５１及びトレース制御信号１５２に応じてトレース出力の制御を行う。
【００２６】
そして、プロセッサ１２は、プログラム１４の終了か否かを判定する（Ｓ１０６）。例えば、プロセッサ１２は、次の実行対象のアドレス（実行アドレス）に対応する命令がプログラム１４内に存在するか否かを判定する。存在する場合、プロセッサ１２は、記憶部１１内のプログラム１４から次の実行アドレスに対応する命令を読み出し、ステップＳ１０２へ戻る。一方、次の実行アドレスに対応する命令が存在しない場合、又は、その他、プログラム１４の実行を終了する条件に該当する場合、プロセッサ１２は、プログラム１４の実行を終了する。
【００２７】
図３は、本実施形態１にかかるトレース制御命令が記述されたプログラム１４とトレース出力結果１６１の例を示す図である。尚、以下の説明においては、トレース出力の始点を示すトレース制御命令を「トレースＯＮ命令」と呼び、トレース出力の終点を示すトレース制御命令を「トレースＯＦＦ命令」と呼ぶ場合がある。また、トレース出力結果１６１は、トレース部１３から出力されたトレース情報１５３の集合の例である。
【００２８】
図３に示すプログラム１４には、元々の処理として命令Ａから命令Ｈがこの順序で記述されていたものとする。そして、プログラム１４内の命令のうち命令Ａ、Ｄ，Ｅ及びＨについてトレース情報を取得し、命令Ｂ，Ｃ，Ｆ，Ｇについてはトレース情報を取得しないものとする。
【００２９】
そこで、ユーザは、元のプログラム１４に対して図３に示すようにトレースＯＮ命令及びトレースＯＦＦ命令を記述するものとする。例えば、プログラム１４では、トレース出力を行う対象である命令ＡをトレースＯＮ命令とトレースＯＦＦ命令とで囲んでいる。つまり、トレース出力の始点である命令Ａの直前にトレースＯＮ命令が記述され、トレース出力の終点である命令Ａの直後にトレースＯＦＦ命令が記述されている。別の言い方では、トレース出力を抑止する命令Ｂ及びＣをトレースＯＦＦ命令とトレースＯＮ命令とで囲んでいる。
【００３０】
そして、トレース出力結果１６１は、本実施形態１にかかるプロセッサ１２がプログラム１４を実行した結果の一例である。トレース出力結果１６１では、トレース出力の対象である命令Ａ、Ｄ，Ｅ及びＨに対応するトレース情報１５３が含まれており、トレース出力の対象外である命令Ｂ，Ｃ，Ｆ及びＧに対応するトレース情報１５３が含まれていないことを示す。また、トレースＯＮ命令及びトレースＯＦＦ命令のそれぞれに対応するトレース情報が出力されていることを示す。これにより、トレース出力結果１６１の中で、トレース出力の始点及び終点を明確に把握することができ、トレース出力から除外された箇所を明確に把握できる。
【００３１】
ここで、上述した既存のトレースフィルタでは、このようなトレース出力の制御を行うために、トレースの開始及び終了の実行アドレスやアドレス範囲の指定といった多数の複雑な設定を行う必要があり、設定作業が煩雑であった。そして、トレースフィルタでは、条件の数に応じて比較回路等の構成が増加する。特に、トレース出力対象の条件は、プログラムにより異なるため、様々な条件に対応するため、予めトレースフィルタの比較回路等の構成を余分に搭載しておく必要があった。そのため、回路規模が増大するという問題があった。
【００３２】
これに対して、本実施形態では、ユーザがプログラム内にトレース制御命令を記述することで、トレース出力範囲又はトレース除外範囲を指定することができる。そのため、トレース範囲の指定の自由度が高い。また、トレースフィルタの煩雑な設定が不要となる。そして、場合によっては、トレースフィルタ自体が不要となるため、回路規模を抑制できる。
【００３３】
尚、本実施の形態１は、次のように表現することもできる。すなわち、半導体装置は、トレース出力の始点又は終点を示すトレース制御命令を含む複数の命令が記述されたプログラムを記憶する記憶部と、前記プログラムを実行するプロセッサと、前記プロセッサから前記プログラムに含まれる各命令の実行時に各命令に対応するトレース情報を取得するトレース部と、を備える。そして、前記トレース部は、前記プロセッサにおいて前記トレース制御命令が実行された場合、当該トレース制御命令に対応する前記トレース情報を出力する。また、前記トレース部は、前記実行されたトレース制御命令が前記トレース出力の始点を示す場合、当該トレース制御命令より後の命令に対応する前記トレース情報の出力を維持し、前記実行されたトレース制御命令が前記トレース出力の終点を示す場合、当該トレース制御命令より後の命令に対応する前記トレース情報の出力を停止する。このように、プログラム中にトレース出力の開始箇所と終了箇所を示す命令を記述することで、トレースフィルタに詳細な設定を行うことなく、プログラム内容に応じた柔軟なトレース出力の制御が可能となる。
【００３４】
＜実施形態２＞
本実施形態２は、上述した実施形態１の具体的な実施例である。すなわち、前記トレース部は、トレースフィルタと、調整部と、選択回路と、トレース出力制御回路と、を有する。ここで、トレースフィルタは、前記トレース出力の対象となる実行アドレスの定義に基づき、前記プロセッサにおける現在の実行アドレスが前記トレース出力の範囲か否かを判定し、当該判定の結果に応じた前記トレース出力の許可又は禁止を示す第２のトレース制御信号を出力する。調整部は、前記トレースフィルタの判定対象となる実行アドレスに対応する前記トレース情報を保持する。選択回路は、選択指示に応じて、前記第１のトレース制御信号と前記第２のトレース制御信号とのいずれかを選択して統合トレース制御信号として出力する。トレース出力制御回路は、前記統合トレース制御信号が前記トレース出力の許可を示す場合に、前記調整部に保持された前記トレース情報を読み出して出力する。これにより、既存のトレースフィルタと共存が可能であり、トレースフィルタを搭載した半導体装置に対して本実施形態を適用するための改修が容易となる。
【００３５】
そして、前記調整部は、前記第１のトレース制御信号が前記トレース出力の許可から禁止へ変化したことを検出した場合に、前記第１のトレース制御信号を前記トレース情報の出力の許可を示す値に設定して、前記選択回路へ出力することが望ましい。これにより、トレースＯＦＦ命令に対応するトレース情報を出力した上で、トレースＯＦＦ命令より後の命令に対応するトレース情報の出力を停止できる。
【００３６】
図４は、本実施形態２にかかるマイクロコンピュータ１００の構成を示すブロック図である。マイクロコンピュータ１００は、上述した半導体装置１の一例である。マイクロコンピュータ１００は、メモリ１１０と、ＣＰＵ１２１と、ＣＰＵ１２２と、トレース部１３０とを備える。また、マイクロコンピュータ１００は、外部のエミュレータ２００と接続されている。エミュレータ２００は、情報処理装置上でエミュレーションプログラムが実行されるものであり、公知のものを用いることができる。ここでは特に、エミュレータ２００は、トレース情報６００を保存するためのトレースメモリ２１０を備えるものとする。また、エミュレータ２００は、ユーザにより操作され、マイクロコンピュータ１００に対する各種指示を行うことができる。例えば、エミュレータ２００は、ユーザの操作により、マイクロコンピュータ１００の起動、マイクロコンピュータ１００内の後述する各種設定、プログラムの実行の指示等を行う。また、エミュレータ２００は、トレースメモリ２１０に格納されたトレース情報を画面（不図示）に表示し、ユーザに閲覧させることもできる。
【００３７】
メモリ１１０は、上述した記憶部１１の一例である。メモリ１１０は、プログラム１１１及び１１２を記憶する。プログラム１１１及びプログラム１１２のそれぞれは、上述したプログラム１４の一例である。つまり、プログラム１１１及びプログラム１１２のそれぞれには、複数の命令の間にトレースＯＮ命令又はトレースＯＦＦ命令が記述されているものとする。尚、トレース制御命令は、プログラム１１１及びプログラム１１２の少なくとも一方に記述されていればよい。
【００３８】
ＣＰＵ１２１及び１２２のそれぞれは、上述したプロセッサ１２の一例である。ここでは、ＣＰＵ１２１は、プログラム１１１を実行し、トレース部１３０へＣＰＵトレース情報６１０及びトレース制御信号６１１を出力する。また、ＣＰＵ１２２は、プログラム１１２を実行し、トレース部１３０へＣＰＵトレース情報６２０及びトレース制御信号６２１を出力する。
【００３９】
図５は、本実施形態２にかかるＣＰＵトレース情報の例を示す図である。ＣＰＵトレース情報は、例えば、実行アドレス、命令タイプ、アクセスアドレス、アクセスデータ及びアクセスタイプを含む。尚、ＣＰＵトレース情報は、これら以外のデータを含むものであってもよい。実行アドレスは、ＣＰＵが命令を実行した際のメモリ内のアドレスを示す。命令タイプは、ＣＰＵが実行した命令のタイプであり、例えば、アクセス命令、分岐命令又は演算命令等の種類を示す情報である。アクセスアドレスは、ＣＰＵがメモリアクセスした先のメモリ内のアドレスである。アクセスデータは、ＣＰＵがメモリアクセスした際のライトデータ又はリードデータである。アクセスタイプは、アクセスの種別、つまり、ライト又はリードを示す情報である。
【００４０】
図４に戻り説明を続ける。トレース部１３０は、上述したトレース部１３の一例である。トレース部１３０は、トレースフィルタ１３１、トレース制御部１３２、トレースフィルタ１３３、トレース制御部１３４及びトレースデータ出力部１３５を備える。トレースフィルタ１３１には、トレース対象となる実行アドレスの範囲等について、ユーザにより予め設定されている。そして、トレースフィルタ１３１は、ＣＰＵ１２１からＣＰＵトレース情報６１０のうち少なくとも実行アドレスを受け付け、設定に応じたトレース制御信号６１２をトレース制御部１３２へ出力する。また、トレース制御部１３２は、ＣＰＵトレース情報６１０の中でトレース対象となるデータの条件について、ユーザにより予め設定されている。そして、トレース制御部１３２は、ＣＰＵ１２１からＣＰＵトレース情報６１０及びトレース制御信号６１１を受け付け、また、トレースフィルタ１３１からトレース制御信号６１２を受け付ける。また、トレース制御部１３２は、トレース制御信号６１１及びトレース制御信号６１２に応じて、ＣＰＵトレース情報６１０の中から設定に基づきトレース対象のデータを選択して、所定の加工を行い、トレース情報６１３としてトレースデータ出力部１３５へ出力する。
【００４１】
トレースフィルタ１３３及びトレース制御部１３４は、上述したトレースフィルタ１３１及びトレース制御部１３２と同等の機能である。異なる点として、トレースフィルタ１３３は、ＣＰＵ１２２からＣＰＵトレース情報６２０のうち少なくとも実行アドレスを受け付け、設定に応じたトレース制御信号６２２をトレース制御部１３４へ出力する。トレース制御部１３４は、ＣＰＵ１２２からＣＰＵトレース情報６２０及びトレース制御信号６２１を受け付け、また、トレースフィルタ１３３からトレース制御信号６２２を受け付ける。また、トレース制御部１３４は、トレース制御信号６２１及びトレース制御信号６２２に応じて、トレース情報６２３をトレースデータ出力部１３５へ出力する。尚、トレースフィルタ１３１及び１３３は、公知のトレースフィルタを用いることができる。また、トレースフィルタ１３１及び１３３は、実行アドレスでフィルタの対象を判定するものであるが、アクセスアドレスでフィルタの対象を判定するものであってもよい。または、トレースフィルタ１３１及び１３３は、実行アドレスとアクセスアドレスの組合せによりフィルタの対象を判定するものであってもよい。
【００４２】
トレースデータ出力部１３５は、トレース情報６１３及び６２３を受け付け、適宜、トレース情報６００としてトレースメモリ２１０へ出力する。
【００４３】
尚、図４のマイクロコンピュータ１００は、２つのＣＰＵ１２１及び１２２を搭載するものであるが、ＣＰＵ数はこれに限定されない。つまり、本実施形態にかかるマイクロコンピュータ１００は、少なくとも１つ以上のプロセッサを搭載するものであればよい。そして、搭載されたプロセッサの数に対応するように、プログラム並びにトレースフィルタ及びトレース制御部の組が搭載されていればよい。
【００４４】
図６は、本実施形態２にかかるトレースフィルタ１３１の構成を示すブロック図である。尚、トレースフィルタ１３３の構成は、トレースフィルタ１３１と同等であるため、図示及び説明を省略する。トレースフィルタ１３１は、トレース開始／停止設定レジスタ対３１１〜３１ｎ（ｎは２以上の自然数。）、トレース対象範囲設定レジスタ対３２１〜３２ｍ（ｍは２以上の自然数。）、トレース出力条件設定レジスタ３３０、比較回路３４１〜３４ｎ、比較回路３５１〜３５ｍ及び組合せ選択回路３６０を備える。
【００４５】
尚、トレースフィルタ１３１は、ＣＰＵ１２１からＣＰＵトレース情報６１０を受け付けているが、ＣＰＵトレース情報６１０のうち実行アドレスのみが入力されているものとする。例えば、ＣＰＵ１２１がＣＰＵトレース情報６１０のうち実行アドレスのみをトレースフィルタ１３１へ出力してもよい。または、トレースフィルタ１３１は、トレース制御部１３２と同様にＣＰＵトレース情報６１０を受け付けた上で、内部でＣＰＵトレース情報６１０の中から実行アドレスを抽出し、比較回路３４１等へ入力しても良い。
【００４６】
トレース開始／停止設定レジスタ対３１１〜３１ｎは、トレース出力を開始する実行アドレスと、トレース出力を停止する実行アドレスとの対を設定するためのレジスタの集合である。トレース対象範囲設定レジスタ対３２１〜３２ｍは、トレース出力の対象となる実行アドレスの範囲を、例えば上位ビットのマスク値として設定するレジスタの集合である。
【００４７】
比較回路３４１〜３４ｎのそれぞれは、トレース開始／停止設定レジスタ対３１１〜３１ｎのそれぞれと対応し、ＣＰＵトレース情報６１０のうち実行アドレスと各レジスタ対の設定値との一致を判定し、一致したか否かを示す判定信号を組合せ選択回路３６０へ出力する。比較回路３５１〜３５ｍのそれぞれは、トレース対象範囲設定レジスタ対３２１〜３２ｍのそれぞれと対応し、ＣＰＵトレース情報６１０のうち実行アドレスと各レジスタ対の設定値との一致を判定し、一致したか否かを示す判定信号を組合せ選択回路３６０へ出力する。
【００４８】
トレース出力条件設定レジスタ３３０は、トレース出力を行うための条件がユーザにより予め設定されている。例えば、トレース出力条件設定レジスタ３３０には、比較回路３４１〜３４ｎ並びに比較回路３５１〜３５ｍの判定信号の組合せの定義が設定されている。そして、トレース出力条件設定レジスタ３３０は、当該組合せの定義を示す条件指定信号６１０１を組合せ選択回路３６０へ出力する。
【００４９】
組合せ選択回路３６０は、トレース出力条件設定レジスタ３３０からの条件指定信号６１０１に応じて、比較回路３４１〜３４ｎ並びに比較回路３５１〜３５ｍからのそれぞれの判定信号のＡＮＤ演算又はＯＲ演算を行い、トレース制御信号６１２としてトレース制御部１３２へ出力する。
【００５０】
図７は、本実施形態２にかかるトレース制御部１３２の構成を示すブロック図である。尚、トレース制御部１３４の構成は、トレース制御部１３２と同等であるため、図示及び説明を省略する。
【００５１】
トレース制御部１３２は、タイミング調整部４１０と、選択設定レジスタ４２０と、選択回路４３０と、トレース対象設定レジスタ４４０と、トレース対象選択回路４５０と、トレースデータ成形部４６０とを備える。タイミング調整部４１０は、ＣＰＵ１２１から命令が実行される度に、ＣＰＵトレース情報６１０及びトレース制御信号６１１を受け付ける。そして、タイミング調整部４１０は、ＣＰＵトレース情報６１０及びトレース制御信号６１１を一時的に保持するバッファ（不図示）を内蔵しており、トレースフィルタ１３１から出力されるトレース制御信号６１２と同期を取るために、出力タイミングを調整する。すなわち、まず、トレースフィルタ１３１とタイミング調整部４１０は、それぞれ、同じ実行アドレスに対応するＣＰＵトレース情報６１０及びトレース制御信号６１１を同じタイミングで受け付ける。そして、トレースフィルタ１３１は、受け付けた実行アドレスについて各種判定を行い、トレース制御信号６１２が出力されるまで、所定数のクロック分の時間を要する。そのため、タイミング調整部４１０は、受け付けた実行アドレスに対応するトレース制御信号６１２がトレースフィルタ１３１から出力されるまでの間、当該ＣＰＵトレース情報６１０及びトレース制御信号６１１を保持する。例えば、タイミング調整部４１０は、トレースフィルタ１３１において１つの実行アドレスに対応するトレース制御信号６１２が出力されるまでに要するクロック数分、ＣＰＵトレース情報６１０を遅延させてＣＰＵトレース情報６３０としてトレース対象選択回路４５０へ出力する。また、タイミング調整部４１０は、受け付けたトレース制御信号６１１を、同様に遅延させてトレース制御信号６３１として選択回路４３０へ出力する。ここで、タイミング調整部４１０は、保持された前回のトレース制御信号６１１と今回のトレース制御信号６１１とを比較し、トレース制御信号６１１の示す値がトレース出力の許可（例えば１）から禁止（例えば０）へ変化したか否かを判定するものとする。そして、タイミング調整部４１０は、トレース出力の許可から禁止へ変化したと判定した場合に限り、トレース制御信号６３１の値を、今回のトレース制御信号６１１の示す値（０）ではなく、前回のトレース制御信号６１１の示す値（１）に設定して、選択回路４３０へ出力する。それ以外の場合、タイミング調整部４１０は、今回のトレース制御信号６１１の示す値をそのままトレース制御信号６３１に設定して選択回路４３０へ出力する。上述した通り、ＣＰＵ１２１においてトレースＯＦＦ命令が実行された場合には、トレース制御信号６１１にトレース出力の禁止（例えば０）を示す値が設定されている。しかし、トレースＯＦＦ命令に対応するトレース情報もトレース出力の対象とするために、トレース制御信号６１１がトレース出力の許可から禁止に変化した場合のみ、トレース出力の許可を示す値としてトレース制御信号６３１を出力させる。
【００５２】
選択設定レジスタ４２０は、トレース出力の制御を行うために、トレースフィルタ１３１の設定、又は、プログラム１１１のトレース制御命令の記述のいずれを優先するかを指定した情報が、ユーザにより予め設定されている。つまり、選択設定レジスタ４２０は、トレースフィルタ１３１から出力されるトレース制御信号６１２、又は、ＣＰＵ１２１からタイミング調整部４１０を経由して出力されるトレース制御信号６３１のいずれを選択するかを示す情報が設定されている。そして、選択設定レジスタ４２０は、トレース制御信号６１２又はトレース制御信号６３１のいずれかを選択させるための選択信号６３２を選択回路４３０へ出力する。
【００５３】
選択回路４３０は、選択信号６３２に応じてトレース制御信号６１２又はトレース制御信号６３１のいずれかを選択して、統合トレース制御信号６３３としてトレース対象選択回路４５０及びトレースデータ成形部４６０へ出力する。
【００５４】
トレース対象設定レジスタ４４０には、ＣＰＵトレース情報６３０のうちトレース対象として出力すべき情報の定義が、ユーザにより予め設定されている。具体的には、トレース対象設定レジスタ４４０は、命令タイプ設定レジスタ４４１と、アクセスアドレス範囲設定レジスタ４４２と、アクセスデータ値設定レジスタ４４３と、アクセスタイプ設定レジスタ４４４とを備える。命令タイプ設定レジスタ４４１には、命令タイプのうちトレース出力対象の定義が設定されている。命令タイプ設定レジスタ４４１には、例えば、命令タイプごとにトレース出力として有効又は無効を示すフラグを有する。アクセスアドレス範囲設定レジスタ４４２には、トレース出力対象とするアクセスアドレスの範囲が設定されている。アクセスアドレス範囲設定レジスタ４４２は、例えば、トレース出力対象とするアクセスアドレスの最小値と最大値の組合せであるか、上位ビットのマスク値等を有する。アクセスデータ値設定レジスタ４４３は、アクセスデータ値を出力するか否かを示すフラグ等を有する。アクセスタイプ設定レジスタ４４４には、トレース出力対象とするアクセスタイプが設定されている。アクセスタイプ設定レジスタ４４４は、例えば、ライト及びリードのそれぞれについてトレース出力とするか否かを示すフラグ等を有する。
【００５５】
そして、トレース対象設定レジスタ４４０は、トレース対象として出力すべき情報を指定したトレース対象指定信号６３４をトレース対象選択回路４５０へ出力する。トレース対象指定信号６３４は、命令タイプ設定レジスタ４４１からアクセスタイプ設定レジスタ４４４までの各レジスタ値の集合等である。
【００５６】
トレース対象選択回路４５０は、統合トレース制御信号６３３がトレース出力の許可を示す場合に、トレース対象指定信号６３４に基づいてＣＰＵトレース情報６３０の中からトレース出力対象のデータを選択し、選択済トレース情報６３５としてトレースデータ成形部４６０へ出力する。
【００５７】
トレースデータ成形部４６０は、統合トレース制御信号６３３がトレース出力の許可を示す場合に、選択済トレース情報６３５を所定のプロトコルに従った形式に成形してトレース情報６１３としてトレースデータ出力部１３５へ出力する。
【００５８】
図８は、本実施形態２にかかるトレース制御命令が記述されたプログラム１１１とトレース出力結果１６２の例を示す図である。ここで、プログラム１１１におけるメインプログラムでは、スタートアップルーチンに単純な処理の繰り返しが多いため、トレース情報が大量となる。また、その後に呼び出される関数１でも、処理Ａと処理Ｂの間のメモリ初期化処理では、繰り返し処理が多いため、やはりトレース情報が大量となる。そこで、スタートアップルーチンの各種処理と、関数１のメモリ初期化処理とをトレース出力の対象外とするために、プログラム１１１では、スタートアップルーチンの各種処理をトレースＯＦＦ命令とトレースＯＮ命令で囲み、関数１のメモリ初期化処理をトレースＯＦＦ命令とトレースＯＮ命令で囲んでいることを示す。尚、ここでは、プログラムの実行開始時は、トレース出力が許可（ＯＮ）されているものとする。
【００５９】
そして、トレース出力結果１６２は、本実施形態２にかかるＣＰＵ１２１がプログラム１１１を実行したことにより取得されたトレース情報の一例である。トレース出力結果１６２では、スタートアップルーチン開始メッセージと関数１への遷移メッセージの間の処理については、トレースＯＦＦ命令及びトレースＯＮ命令以外のトレース情報は出力されていない。また、処理Ａと処理Ｂの間の処理については、トレースＯＦＦ命令及びトレースＯＮ命令以外のトレース情報は出力されていない。そのため、スタートアップルーチンの各種処理及び関数１のメモリ初期化処理に対応する大量のトレース情報については、出力されていないことを示す。
【００６０】
＜実施形態３＞
本実施形態３は、上述した実施形態２の変形例である。すなわち、前記プログラムは、前記トレース制御命令と共に任意の文字列であるタグ情報がさらに記述される。そして、前記プロセッサは、前記トレース制御命令が実行された場合に、当該トレース制御命令と共に記述された前記タグ情報を前記トレース情報に含めて前記トレース部へ出力する。また、前記トレース部は、前記トレース制御命令に対応する前記トレース情報を出力する際に、前記タグ情報を含めて出力する。そのため、例えば、異なるタグ値を記述したトレースＯＦＦ命令で、所定のコードを囲むことで、当該コードの開始及び終了したことのみを取得することができる。よって、取得するトレース情報を抑制して、重要なトレース情報に絞ることができる。
【００６１】
また、前記トレース部は、前記トレース制御命令に対応する前記トレース情報の出力の許可又は禁止を示す情報を保持するレジスタを有する。そして、前記トレース部は、前記プロセッサにおいて前記トレース制御命令が実行された場合に、前記レジスタに応じて、当該トレース制御命令に対応する前記トレース情報の出力を制御する。これにより、トレースＯＮ命令及びトレースＯＦＦ命令自体のトレース出力も柔軟に制御できる。
【００６２】
または、前記プログラムには、前記トレース制御命令と共に任意の文字列であるタグ情報がさらに記述されているものとし、前記トレース部は、前記トレース情報を出力する際に、対応するトレース制御命令と共に記述された前記タグ情報を併せて出力してもよい。このように、タグ情報によりプログラム内の通過箇所を効率的に把握できる。
【００６３】
さらに、前記プログラムには、第１のトレース制御命令と、第２のトレース制御命令と、が記述されているとよい。ここで、第１のトレース制御命令は、前記トレース出力の終点を示す前記トレース制御命令であって、第１のタグ情報が共に記述されている。また、第２のトレース制御命令は、前記トレース出力の終点を示す前記トレース制御命令であって、前記第１のタグ情報とは異なる第２のタグ情報が共に記述されている。そのため、例えば、異なるタグ値を記述したトレースＯＦＦ命令で、所定のコードを囲むことで、当該コードの開始及び終了したことのみを取得することができる。よって、取得するトレース情報を抑制して、重要なトレース情報に絞ることができる。
【００６４】
さらに、前記トレース部は、前記トレース制御命令に対応する前記トレース情報の出力の許可又は禁止を示す情報を保持するレジスタを有すると良い。そして、前記トレース部は、前記プロセッサにおいて前記トレース制御命令が実行された場合に、前記レジスタに応じて、当該トレース制御命令に対応する前記トレース情報の出力を制御する。これにより、トレースＯＦＦ命令とそのタグ情報のみをトレース出力することができ、不要なトレース出力を抑止しつつ、プログラムの通過箇所を効率的に把握することができる。
【００６５】
また、前記トレース部は、前記トレース制御命令に対応する前記トレース情報の出力の許可又は禁止を示す情報を保持するレジスタをさらに有するとよい。そして、前記トレース出力制御回路は、前記統合トレース制御信号が前記トレース出力の禁止を示す場合に、前記レジスタに応じて、前記トレース制御命令に対応する前記トレース情報の出力を制御することが望ましい。これにより、トレースＯＦＦ命令に対応するトレース出力を行った上で、トレースＯＦＦ命令より後の命令に対応するトレース情報の出力を停止できる。
【００６６】
図９は、本実施形態３にかかるマイクロコンピュータ１００ａの構成を示すブロック図である。マイクロコンピュータ１００ａは、上述したマイクロコンピュータ１００を改良したものである。メモリ１１０は、プログラム１１１ａ及び１１２ａを記憶する。プログラム１１１ａ及び１１２ａには、トレース制御命令と共に任意の文字列であるタグ情報がさらに記述されている。例えば、図１３に示すように、プログラム１１１ａには、トレースＯＮ命令に第１のタグ情報「A-START」、トレースＯＦＦ命令に第２のタグ情報「A-END」等がそれぞれ記述されている。尚、タグ情報の文字列及び記述方法はこれらに限定されない。
【００６７】
ＣＰＵ１２１ａは、プログラム１１１ａを実行し、トレース部１３０ａへＣＰＵトレース情報６１０ａ及びトレース制御信号６１１を出力する。特に、ＣＰＵ１２１ａは、トレース制御命令が実行された場合に、当該トレース制御命令と共に記述されたタグ情報をＣＰＵトレース情報６１０ａに含めてトレース部１３０ａへ出力する。尚、ＣＰＵ１２２ａは、ＣＰＵ１２１ａと同様である。
【００６８】
図１０は、本実施形態３にかかるＣＰＵトレース情報６１０ａの例を示す図である。ＣＰＵトレース情報６１０ａは、上述したＣＰＵトレース情報６１０と比べて、命令タイプとしてトレースＯＮ／ＯＦＦ命令が追加され、また、タグ値が追加されたものである。
【００６９】
図９に戻り説明を続ける。トレース部１３０ａは、トレース部１３０と比べて、トレース制御部１３２及び１３４がトレース制御部１３２ａ及び１３４ａに置き換わったものである。トレース制御部１３２ａは、後述する通り、命令タイプとしてトレースＯＮ／ＯＦＦ命令についてトレース出力の対象とするか否かと、タグ値をトレース出力の対象とするか否かが、ユーザにより予め設定されている。そして、トレース制御部１３２ａは、トレース制御信号６１１及びトレース制御信号６１２に応じて、ＣＰＵトレース情報６１０ａの中から設定に基づきトレース対象のデータを選択して、所定の加工を行い、トレース情報６１３ａとしてトレースデータ出力部１３５へ出力する。尚、トレース制御部１３４ａも同様である。また、トレースデータ出力部１３５は、トレース情報６１３ａ及び６２３ａを受け付け、適宜、トレース情報６００ａとしてトレースメモリ２１０へ出力する。
【００７０】
図１１は、本実施形態３にかかるトレース制御部１３２ａの構成を示すブロック図である。尚、トレース制御部１３４ａの構成は、トレース制御部１３２ａと同等であるため、図示及び説明を省略する。
【００７１】
タイミング調整部４１０ａは、上述したタイミング調整部４１０と同様に、トレースフィルタ１３１における判定処理とタイミングを合せて、ＣＰＵトレース情報６１０ａ及びトレース制御信号６１１を遅延させて、ＣＰＵトレース情報６３０ａ及びトレース制御信号６３１を出力する。但し、タイミング調整部４１０ａは、上述したタイミング調整部４１０と異なり、トレース制御信号６１１の示す値の変化に応じてトレース制御信号６３１の設定を変更しなくてもよい。
【００７２】
トレース対象設定レジスタ４４０ａは、上述したトレース対象設定レジスタ４４０と比べて、命令タイプ設定レジスタ４４１が命令タイプ設定レジスタ４４１ａに代わり、タグ値選択設定レジスタ４４５が追加されている。命令タイプ設定レジスタ４４１ａは、命令タイプとしてトレースＯＮ／ＯＦＦ命令のトレース対象として選択するか否かを示すフラグ等を含む。また、タグ値選択設定レジスタ４４５は、タグ値をトレース対象として選択するか否かを示すフラグ等を含む。
【００７３】
そして、トレース対象設定レジスタ４４０ａは、トレース対象として出力すべき情報を指定したトレース対象指定信号６３４ａをトレース対象選択回路４５０ａへ出力する。トレース対象指定信号６３４ａは、命令タイプ設定レジスタ４４１ａからタグ値選択設定レジスタ４４５までの各レジスタ値の集合等である。
【００７４】
トレース対象選択回路４５０ａは、統合トレース制御信号６３３がトレース出力の許可を示す場合に、トレース対象指定信号６３４ａに基づいてＣＰＵトレース情報６３０ａの中からトレース出力対象のデータを選択し、選択済トレース情報６３５ａとしてトレースデータ成形部４６０へ出力する。尚、トレース対象選択回路４５０ａは、統合トレース制御信号６３３がトレース出力の禁止を示す場合であっても、トレース対象指定信号６３４ａが命令タイプとしてトレースＯＦＦ命令のトレース対象として選択することを示す場合には、ＣＰＵトレース情報６３０ａの中からトレースＯＦＦ命令のトレース情報を選択する。
【００７５】
トレースデータ成形部４６０ａは、統合トレース制御信号６３３がトレース出力の許可を示す場合に、選択済トレース情報６３５ａを所定のプロトコルに従った形式に成形してトレース情報６１３ａとしてトレースデータ出力部１３５へ出力する。尚、トレースデータ成形部４６０ａは、トレース対象選択回路４５０ａと同様に、統合トレース制御信号６３３がトレース出力の禁止を示す場合であっても、選択済トレース情報６３５ａに含まれるトレースＯＦＦ命令のトレース情報を出力対象として成形する。
【００７６】
図１２は、本実施形態３にかかるトレース対象設定レジスタ４４０ａの例を示す図である。ここでは、トレース対象設定レジスタ４４０ａのうち命令タイプ設定レジスタ４４１ａ及びタグ値選択設定レジスタ４４５を概念的に示す。命令タイプ設定レジスタ４４１ａは、分岐命令選択設定４４１１、トレースＯＮ／ＯＦＦ命令選択設定４４１２、演算命令選択設定４４１３及びアクセス命令選択設定４４１４を含む。
【００７７】
分岐命令選択設定４４１１は、分岐命令に対応するトレース情報の出力について有効又は無効を示すフラグを有する。そして、分岐命令選択設定４４１１は、分岐命令に対応するトレース情報の出力が、トレースＯＮ時（つまり、統合トレース制御信号６３３で１の場合）に有効又は無効を示すフラグと、トレースＯＦＦ時（つまり、統合トレース制御信号６３３で０の場合）に有効又は無効を示すフラグと、を有する。また、トレースＯＮ／ＯＦＦ命令選択設定４４１２は、トレースＯＮ／ＯＦＦ命令に対応するトレース情報の出力について有効又は無効を示すフラグを有する。そして、トレースＯＮ／ＯＦＦ命令選択設定４４１２は、トレースＯＮ／ＯＦＦ命令に対応するトレース情報の出力が、トレースＯＮ時に有効又は無効を示すフラグと、トレースＯＦＦ時に有効又は無効を示すフラグと、を有する。また、演算命令選択設定４４１３は、演算命令に対応するトレース情報の出力について有効又は無効を示すフラグを有する。そして、演算命令選択設定４４１３は、演算命令に対応するトレース情報の出力が、トレースＯＮ時に有効又は無効を示すフラグと、トレースＯＦＦ時に有効又は無効を示すフラグと、を有する。また、アクセス命令選択設定４４１４は、アクセス命令に対応するトレース情報の出力について有効又は無効を示すフラグを有する。そして、アクセス命令選択設定４４１４は、アクセス命令に対応するトレース情報の出力が、トレースＯＮ時に有効又は無効を示すフラグと、トレースＯＦＦ時に有効又は無効を示すフラグと、を有する。
【００７８】
タグ値選択設定レジスタ４４５は、タグ値のトレース情報としての出力について有効又は無効を示すフラグを有する。そして、図１２の例では、命令タイプのうちトレースＯＮ／ＯＦＦ命令に対応するトレース情報についてはトレースＯＮ／ＯＦＦに限らず、出力対象である旨が設定されていることを示す。併せて、タグ値についてもトレースＯＮ／ＯＦＦに限らず、出力対象である旨が設定されていることを示す。また、命令タイプの他の命令に対応するトレース情報については、トレースＯＮ／ＯＦＦに限らず、出力対象外である旨が設定されていることを示す。
【００７９】
また、図１２における命令タイプ情報６１０ａ１及びタグ値情報６１０ａ２は、それぞれ、ＣＰＵトレース情報６３０ａのうち上から５つの連続した命令タイプ及びタグ値の例を概念的に示している。同様に、選択済命令タイプ情報６３５ａ１及び選択済タグ値情報６３５ａ２は、トレース対象選択回路４５０ａがトレース対象指定信号６３４ａに応じて選択したトレース情報の例を概念的に示している。つまり、図１２では、命令タイプのうちトレースＯＮ命令及びトレースＯＦＦ命令に対応するトレース情報と、それらに対応付けられたタグ値が選択されたことを示す。
【００８０】
図１３は、本実施形態３にかかるトレース制御命令が記述されたプログラム１１１ａとトレース出力結果１６３（全トレース）の例を示す図である。ここでは、トレース対象設定レジスタ４４０ａにおいて全ての設定が有効となっているものとする。つまり、トレースＯＮ命令とトレースＯＦＦ命令とで囲まれた命令に対応する全てのトレース情報が出力の対象となっている場合を示す。具体的には、関数Ａの処理の一部については、トレースＯＮ命令及びトレースＯＦＦ命令で囲まれているため、トレース出力結果１６３内で「関数Ａに関するトレース情報」等が出力されている。関数Ｃについても同様である。一方、関数Ｂについては、２つのトレースＯＦＦ命令で囲まれているため、関数Ｂに関するトレース情報は出力されていない。
【００８１】
ここで、トレースＯＮ／ＯＦＦ命令選択設定４４１２において、トレースＯＮ時及びＯＦＦ時のいずれでもトレースＯＮ／ＯＦＦ命令に対応するトレース情報の出力を有効としている。そのため、関数ＢにおいてはトレースＯＦＦ命令を２つ出力させることで、関数Ｂの処理の始点と終点をトレース出力結果１６３において把握することができる。さらに、プログラム１１１ａにおいて、例えば、関数Ｂ内の処理を「トレースＯＦＦ命令(B-START)」と「トレースＯＦＦ命令(B-END)」で囲んでいる。そのため、トレース出力結果１６３として、「トレースＯＦＦ命令のメッセージ(B-START)」と「トレースＯＦＦ命令のメッセージ(B-END)」とが連続して出力される。そのため、トレースＯＦＦ命令としては同じであっても、プログラム１１１ａ内の記述箇所を区別することができる。例えば、各トレース制御命令において一意な文字列をタグ情報として記述することで、トレース出力結果１６３においても任意の記述箇所が実行されたことを識別できる。
【００８２】
図１４は、本実施形態３にかかるトレース制御命令が記述されたプログラム１１１ａとトレース出力結果１６４（命令タイプ設定あり）の例を示す図である。ここでは、トレース対象設定レジスタ４４０ａにおいて上述した図１２の設定がされているものとする。つまり、命令タイプのうちトレースＯＮ命令及びトレースＯＦＦ命令に対応するトレース情報と、それらに対応付けられたタグ値が出力対象とされた場合を示す。そのため、トレース出力結果１６４では、トレースＯＮ命令とトレースＯＦＦ命令の間のトレース情報についても出力対象外となることを示す。但し、トレースＯＮ命令とトレースＯＦＦ命令に対応するトレース情報が連続する箇所が複数存在したとしても、タグ情報を使い分けることで、プログラム内の記述箇所を把握することができる。
【００８３】
＜実施形態４＞
本実施形態４は、上述した実施形態１から３の応用例である。本実施形態４では、既存の命令コードに空き領域がある場合に、命令コードを拡張して空き領域にトレース出力の始点又は終点を示す情報を設定するものである。すなわち、前記トレース制御命令は、前記プロセッサで実行可能な所定の命令における命令コードの一部に、前記トレース出力の始点又は終点を示す情報として定義される。例えば、既存の命令コードを拡張してトレース出力の制御情報を定義することで、トレース制御のための専用命令が不要となる。そして、プログラム内にトレースＯＮ／ＯＦＦ設定のためだけのトレース制御命令を挿入する必要がなくなり、プログラムへ追加で記述するコード量を抑制し、プログラムの処理性能の低下を抑止できる。また、プログラム内にトレース制御のための専用命令の記述がないことから、対象プログラムの視認性が向上する。また、トレース制御命令に特化した処理が不要となるため、プロセッサの処理負荷を軽減できる。
【００８４】
図１５は、本実施形態４にかかる命令コードの拡張の例を示す図である。例えば、元々命令コード「2’b0000_00xx」が存在し、下位２ビットがDon’t care、つまり、情報の意味が定義されていなかったものとする。その場合、例えば、下位２ビットのうち上位１ビットをトレース制御命令であるか否かを示すフラグとして定義し、下位２ビットのうち下位１ビットをトレースＯＮかＯＦＦを示すフラグとして定義するものとする。そして、このような命令コードを解釈できるように、プロセッサ内の命令コードの定義を変更するものとする。これにより、上述した効果を奏する。
【００８５】
＜実施形態５＞
本実施形態５は、上述した実施形態１から４の改良例である。ここで、プログラムの実行時にトレース情報を取得する場合、処理内容によってはトレース情報がトレースインタフェースのスペックを超えてしまう場合がある。例えば、トレース情報の量が、トレース情報を一時的に保存するバッファの容量を超えてしまう場合がある。このような場合にプログラムの実行を続行すると、トレース情報が失われてしまう。そのため、既存のトレース機能付きマイクロコンピュータには、トレース情報がバッファオーバーフローを起こした場合には、一時的にプロセッサの動作を停止させる機能がある。つまり、プログラムのリアルタイムな実行よりも全てのトレース情報の取得を優先させるノンリアルタイム実行モードがある。
【００８６】
一方で、処理内容によっては、トレース出力のためにプロセッサの動作を停止すると処理タイミングが実際と異なってしまうため、トレース実行の意味をなさない場合や、トレース情報が不要な箇所もある。このような場合は、オーバーフローしたトレース情報を破棄しつつ、プログラムのリアルタイムな実行を優先させるリアルタイム実行モードが有効である。そのため、既存のトレース機能付きマイクロコンピュータでは、リアルタイム実行モードとノンリアルタイム実行モードとを、予めレジスタ等に設定することができるものもある。
【００８７】
しかしながら、リアルタイム実行モードとノンリアルタイム実行モードとを一つのプログラム内で柔軟に設定したい場合もある。上述したレジスタ設定では、実行中にモードを切り替えることができる。つまり、既存のマイクロコンピュータでは、やはり、トレース制御の柔軟性に欠けるという問題点がある。そこで、本実施形態５では、トレース情報のリアルタイム出力の制御をプログラム内にも設定するものである。具体的には、トレース制御命令にリアルタイム出力の制御を示す情報を含める。
【００８８】
すなわち、前記トレース制御命令は、前記トレース情報のリアルタイム出力の許可又は禁止を示す情報を含む。そして、前記トレース部は、前記トレース情報を一時的に記憶するバッファと、前記トレース情報が前記バッファの容量を上回る場合に、前記プロセッサにおいて実行された前記トレース制御命令に応じた制御を行う出力制御部と、を有する。前記出力制御部は、前記トレース制御命令が前記リアルタイム出力の許可を示す場合、前記バッファの容量を上回るトレース情報を破棄し、前記トレース制御命令が前記リアルタイム出力の禁止を示す場合、前記バッファの容量を上回るトレース情報を出力する間、前記プロセッサに対して動作を停止させる動作停止要求を出力する。このように、トレース出力のリアルタイム制御の可否をプログラム内に設定することで、レジスタの設定変更を必要とせず、１つのプログラム内でもトレース出力のリアルタイム制御を柔軟に設定することができる。
【００８９】
さらに、前記トレース部は、前記トレース情報のリアルタイム出力の許可又は禁止を示す情報を保持するレジスタと、をさらに有するとよい。その場合、前記出力制御部は、選択指示に応じて、前記トレース制御命令又は前記レジスタのいずれかを選択し、前記トレース制御命令が選択された場合、前記トレース制御命令における前記リアルタイム出力の許可又は禁止を示す情報に応じて前記トレース情報の出力及び前記動作停止要求の出力を制御する。これにより、既存のリアルタイム制御機構と共存が可能であり、トレース情報のリアルタイム出力の制御レジスタを搭載した半導体装置に対して本実施形態を適用するための改修が容易となる。
【００９０】
図１６は、本実施形態５にかかるマイクロコンピュータ１００ｂの構成を示すブロック図である。マイクロコンピュータ１００ｂは、上述したマイクロコンピュータ１００又は１００ａを改良したものである。メモリ１１０は、プログラム１１１ｂ及び１１２ｂを記憶する。プログラム１１１ｂ及び１１２ｂには、トレース情報のリアルタイム出力の許可又は禁止を示す情報を含むトレース制御命令が記述されている。例えば、図１８に示すように、プログラム１１１ｂには、トレースＯＮ命令の代わりに、トレースＯＮ−ＮＯＮＲＥＡＬ命令とトレースＯＮ−ＲＥＡＬ命令とが記述されている。トレースＯＮ−ＲＥＡＬ命令は、トレース出力の始点を示し、かつ、トレース情報のリアルタイム出力の許可を示す命令である。また、トレースＯＮ−ＮＯＮＲＥＡＬ命令は、トレース出力の始点を示し、かつ、トレース情報のリアルタイム出力の禁止を示す命令である。尚、トレース情報のリアルタイム出力の許可又は禁止を示す情報は、様々な形式で実現可能である。例えば、上述した実施形態４を応用し、トレースＯＮ命令の命令コードの空き領域に、トレース情報のリアルタイム出力の許可又は禁止を示す情報を定義してもよい。
【００９１】
ＣＰＵ１２１ｂは、プログラム１１１ｂを実行し、トレース部１３０ｂへＣＰＵトレース情報６１０ａ、トレース制御信号６１１及びリアルタイム出力制御信号６１４を出力する。特に、ＣＰＵ１２１ｂは、トレース制御命令が実行された場合に、トレース情報のリアルタイム出力の許可又は禁止を示す情報が含まれているか否かを判定し、含まれている場合、当該トレース制御命令に応じた値を、リアルタイム出力制御信号６１４に設定する。
例えば、リアルタイム出力制御信号６１４には、リアルタイム実行モード（１）又はノンリアルタイム実行モード（０）のいずれかが設定される。尚、ＣＰＵ１２２ｂは、ＣＰＵ１２１ｂと同様である。
【００９２】
トレース部１３０ｂは、トレース部１３０ａと比べて、トレース制御部１３２ａ及び１３４ａ並びにトレースデータ出力部１３５がトレース制御部１３２ｂ及び１３４ｂ並びにトレースデータ出力部１３５ｂに置き換わったものである。トレース制御部１３２ｂは、トレース制御部１３２ａの処理に加えて、ＣＰＵ１２１ｂから受け付けたリアルタイム出力制御信号６１４をリアルタイム出力制御信号６１５としてトレースデータ出力部１３５ｂへ出力する。尚、トレース制御部１３４ｂも同様である。
【００９３】
トレースデータ出力部１３５ｂは、トレース情報６１３ａ及び６２３ａ並びにリアルタイム出力制御信号６１５及び６２５を受け付ける。そして、トレースデータ出力部１３５ｂは、受け付けたトレース情報が後述するバッファの容量を超えた場合、リアルタイム出力制御信号６１５又は６２５に応じて、ＣＰＵ１２１ｂ又は１２２ｂへ動作停止要求６０１を出力するか、トレース情報６００ｂを破棄する。
【００９４】
図１７は、本実施形態５にかかるトレースデータ出力部１３５ｂの構成を示すブロック図である。トレースデータ出力部１３５ｂは、ＦＩＦＯ（Ｆｉｒｓｔ−Ｉｎ  Ｆｉｒｓｔ−Ｏｕｔ）５１０と、オーバーフロー判定部５２０と、モード設定レジスタ５３０と、選択設定レジスタ５４０と、選択回路５５０と、出力制御部５６０と、出力選択部５７０とを備える。ＦＩＦＯ５１０は、ｎ回分のトレース情報６１３ａを一時的に保持し、出力選択部５７０へ出力する。ＦＩＦＯ５１０は、ｎ個のバッファ５１１、５１２、・・・５１ｎを備える。ＦＩＦＯ５１０は、原則として、トレース情報６１３ａを受け付ける度に、各バッファに格納されたトレース情報を次のバッファへ移動させ、最後のバッファ５１ｎは、保持しているトレース情報をトレース情報６４７として出力選択部５７０へ出力する。但し、出力選択部５７０における処理が終わるまでは、トレース情報６４７が出力できず、ＦＩＦＯ５１０は、オーバーフローしてしまい、エラーとなり得る。また、ＦＩＦＯ５１０は、トレース情報６１３ａを受け付ける度に、例えば、バッファ使用量６４４をオーバーフロー判定部５２０へ出力する。または、ＦＩＦＯ５１０は、トレース情報６１３ａを受け付けた際に、バッファをオーバーフローした場合に、オーバーフロー検出信号を出力制御部５６０へ出力してもよい。
【００９５】
オーバーフロー判定部５２０は、バッファ使用量６４４が予め設定されたバッファの容量を超えるか否かを判定し、超えると判定した場合に、オーバーフロー検出信号６４５を出力制御部５６０へ出力する。
【００９６】
モード設定レジスタ５３０には、リアルタイム実行モード又はノンリアルタイム実行モードのいずれかを指定したフラグが、ユーザにより予め設定されている。モード設定レジスタ５３０は、当該フラグをモード指定信号６４２として選択回路５５０へ出力する。
【００９７】
選択設定レジスタ５４０は、トレース出力のリアルタイム制御を行うために、モード設定レジスタ５３０の設定、又は、プログラム１１１ｂのトレース制御命令の記述のいずれを優先するかを指定した情報が、ユーザにより予め設定されている。つまり、選択設定レジスタ５４０は、モード指定信号６４２又はリアルタイム出力制御信号６１５のいずれを選択するかを示す情報が設定されている。そして、選択設定レジスタ５４０は、モード指定信号６４２又はリアルタイム出力制御信号６１５のいずれかを選択させるための選択信号６４１を選択回路５５０へ出力する。
【００９８】
選択回路５５０は、選択信号６４１に応じてモード指定信号６４２又はリアルタイム出力制御信号６１５のいずれかを選択して、リアルタイム出力制御信号６４３として出力制御部５６０へ出力する。
【００９９】
出力制御部５６０は、オーバーフロー判定部５２０からオーバーフロー検出信号６４５を受け付けた場合に、リアルタイム出力制御信号６４３に応じて、動作停止要求６０１又は出力制限信号６４６を出力する。例えば、出力制御部５６０は、リアルタイム出力制御信号６４３がノンリアルタイム実行モードを示す場合、ＣＰＵ１２１ｂに対して動作停止要求６０１を出力する。ここで、動作停止要求６０１は、プロセッサの動作を停止させるための要求である。これにより、ＣＰＵ１２１ｂは、動作停止要求６０１に応じてプログラム１１１ｂの実行を一時的に停止する。そのため、トレースデータ出力部１３５ｂは、プログラム１１１ｂの後続の命令に対応するトレース情報６１３ａを受け付けなくなり、ＦＩＦＯ５１０のバッファオーバーフローを回避する。それ故、出力選択部５７０は、トレース情報６００ｂを失うことなく出力することができる。つまり、トレース情報の欠落を回避できる。
【０１００】
また、出力制御部５６０は、リアルタイム出力制御信号６４３がリアルタイム実行モードを示す場合、出力選択部５７０に対して出力制限信号６４６を出力する。出力選択部５７０は、原則としては、トレース情報６４７をトレース情報６００ｂとしてトレースメモリ２１０へ出力する。但し、出力選択部５７０は、出力制限信号６４６を受け付けた場合、その際に受け付けたトレース情報６４７を破棄する。
【０１０１】
尚、ＦＩＦＯ５１０は、バッファ容量の空きを検出した際には、その旨をオーバーフロー判定部５２０経由で出力制御部５６０へ通知する。そして、出力制御部５６０は、バッファ容量の空きに応じて、例えば、リアルタイム出力制御信号６４３がノンリアルタイム実行モードを示す場合、ＣＰＵ１２１ｂに対する動作停止要求６０１の出力を停止する。これにより、ＣＰＵ１２１ｂにおけるプログラム１１１ｂの実行が再開される。
【０１０２】
また、出力制御部５６０は、バッファ容量の空きに応じて、例えば、リアルタイム出力制御信号６４３がリアルタイム実行モードを示す場合、出力選択部５７０に対する出力制限信号６４６の出力を停止する。これにより、出力選択部５７０は、トレース情報６４７の破棄を停止する。
【０１０３】
図１８は、本実施形態５にかかるトレース制御命令が記述されたプログラム１１１ｂとトレース出力結果１６５の例を示す図である。ここで、プログラム１１１ｂの関数Ａ内の処理の直前には、ノンリアルタイム実行モードを示すトレースＯＮ命令が記述され、関数Ｃ内の処理の直前には、リアルタイム実行モードを示すトレースＯＮ命令が記述されていることを示す。そして、トレース出力結果１６５において関数Ａについてはトレース出力を優先させて、関数Ａに関する全てのトレース情報が出力されたことを示すものとする。また、トレース出力結果１６５において関数Ｃについては、プログラムのリアルタイムな実行を優先させ、関数Ｃに関する一部のトレース情報のみが出力されたことを示すものとする。
【０１０４】
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は既に述べた実施の形態に限定されるものではなく、その要旨を逸脱しない範囲において種々の変更が可能であることはいうまでもない。
【符号の説明】
【０１０５】
１  半導体装置
１１  記憶部
１２  プロセッサ
１３  トレース部
１４  プログラム
１５１  トレース情報
１５２  トレース制御信号
１５３  トレース情報
１００  マイクロコンピュータ
１１０  メモリ
１１１  プログラム
１１２  プログラム
１２１  ＣＰＵ
１２２  ＣＰＵ
１３０  トレース部
１３１  トレースフィルタ
１３２  トレース制御部
１３３  トレースフィルタ
１３４  トレース制御部
１３５  トレースデータ出力部
１６１  トレース出力結果
１６２  トレース出力結果
１６３  トレース出力結果
１６４  トレース出力結果
１６５  トレース出力結果
２００  エミュレータ
２１０  トレースメモリ
６００  トレース情報
６１０  ＣＰＵトレース情報
６１１  トレース制御信号
６１２  トレース制御信号
６１３  トレース情報
６２０  ＣＰＵトレース情報
６２１  トレース制御信号
６２２  トレース制御信号
６２３  トレース情報
３１１  トレース開始／停止設定レジスタ対
３１ｎ  トレース開始／停止設定レジスタ対
３２１  トレース対象範囲設定レジスタ対
３２ｍ  トレース対象範囲設定レジスタ対
３３０  トレース出力条件設定レジスタ
３４１  比較回路
３４ｎ  比較回路
３５１  比較回路
３５ｍ  比較回路
３６０  組合せ選択回路
６１０１  条件指定信号
４１０  タイミング調整部
４２０  選択設定レジスタ
４３０  選択回路
４４０  トレース対象設定レジスタ
４４１  命令タイプ設定レジスタ
４４２  アクセスアドレス範囲設定レジスタ
４４３  アクセスデータ値設定レジスタ
４４４  アクセスタイプ設定レジスタ
４５０  トレース対象選択回路
４６０  トレースデータ成形部
６３０  ＣＰＵトレース情報
６３１  トレース制御信号
６３２  選択信号
６３３  統合トレース制御信号
６３４  トレース対象指定信号
６３５  選択済トレース情報
１００ａ  マイクロコンピュータ
１１１ａ  プログラム
１１２ａ  プログラム
１２１ａ  ＣＰＵ
１２２ａ  ＣＰＵ
１３０ａ  トレース部
１３２ａ  トレース制御部
１３４ａ  トレース制御部
４１０ａ  タイミング調整部
４４０ａ  トレース対象設定レジスタ
４４１ａ  命令タイプ設定レジスタ
４４１１  分岐命令選択設定
４４１２  トレースＯＮ／ＯＦＦ命令選択設定
４４１３  演算命令選択設定
４４１４  アクセス命令選択設定
４４５  タグ値選択設定レジスタ
４５０ａ  トレース対象選択回路
４６０ａ  トレースデータ成形部
６００ａ  トレース情報
６００ａ１  トレース情報
６００ａ２  トレース情報
６１０ａ  ＣＰＵトレース情報
６１０ａ１  命令タイプ情報
６１０ａ２  タグ値情報
６１３ａ  トレース情報
６２０ａ  ＣＰＵトレース情報
６２３ａ  トレース情報
６３０ａ  ＣＰＵトレース情報
６３４ａ  トレース対象指定信号
６３５ａ  選択済トレース情報
６３５ａ１  選択済命令タイプ情報
６３５ａ２  選択済タグ値情報
１００ｂ  マイクロコンピュータ
１１１ｂ  プログラム
１１２ｂ  プログラム
１２１ｂ  ＣＰＵ
１２２ｂ  ＣＰＵ
１３０ｂ  トレース部
１３２ｂ  トレース制御部
１３４ｂ  トレース制御部
１３５ｂ  トレースデータ出力部
６００ｂ  トレース情報
６０１  動作停止要求
６１４  リアルタイム出力制御信号
６１５  リアルタイム出力制御信号
６２４  リアルタイム出力制御信号
６２５  リアルタイム出力制御信号
５１０  ＦＩＦＯ
５１１  バッファ
５１２  バッファ
５１ｎ  バッファ
５２０  オーバーフロー判定部
５３０  モード設定レジスタ
５４０  選択設定レジスタ
５５０  選択回路
５６０  出力制御部
５７０  出力選択部
６４１  選択信号
６４２  モード指定信号
６４３  リアルタイム出力制御信号
６４４  バッファ使用量
６４５  オーバーフロー検出信号
６４６  出力制限信号
６４７  トレース情報
【図１】
2019101848.tif 000003
【図２】
2019101848.tif 000004
【図３】
2019101848.tif 000005
【図４】
2019101848.tif 000006
【図５】
2019101848.tif 000007
【図６】
2019101848.tif 000008
【図７】
2019101848.tif 000009
【図８】
2019101848.tif 000010
【図９】
2019101848.tif 000011
【図１０】
2019101848.tif 000012
【図１１】
2019101848.tif 000013
【図１２】
2019101848.tif 000014
【図１３】
2019101848.tif 000015
【図１４】
2019101848.tif 000016
【図１５】
2019101848.tif 000017
【図１６】
2019101848.tif 000018
【図１７】
2019101848.tif 000019
【図１８】
2019101848.tif 000020