(57)【特許請求の範囲】
【請求項１】
複数の命令が格納される第１メモリと、
複数のデータが格納される第２メモリと、
第１及び第２バスと、
前記第１メモリに格納された複数の命令のうち指定したアドレスの命令を前記第１バスを介して取り込んで実行し、その実行結果に基づいて前記第２バスを介して前記第２メモリに対してアクセスを行うマイクロプロセッサと、
前記マイクロプロセッサに分岐命令が発生した場合に、その分岐前に指定されていた前記第１メモリのアドレスの情報を取得してトレース情報として出力するトレース情報出力部と、を備え、
前記マイクロプロセッサは、パイプライン処理により前記複数の命令を順次実行し、
前記トレース情報出力部から出力された前記トレース情報は、前記マイクロプロセッサが分岐後の命令をフェッチする期間に、前記第２バスを介して前記第２メモリに書き込まれる、半導体装置。
【請求項２】
前記トレース情報は、前記マイクロプロセッサが前記分岐後の命令をフェッチする期間と、更に、前記マイクロプロセッサが前記分岐後の命令を実行し、実行結果に基づいて前記第２メモリに対してアクセスを行うまでの期間に、前記第２バスを介して前記第２メモリに書き込まれることを特徴とする請求項１に記載の半導体装置。
【請求項３】
前記トレース情報出力部は、分岐前に指定されていた前記第１メモリのアドレスの情報として、分岐前の前記第１バス上のアドレスの情報を出力することを特徴とする請求項１又は２に記載の半導体装置。
【請求項４】
前記トレース情報出力部及び前記マイクロプロセッサの何れか一方と、前記第２バスと、の間の信号経路を設定する選択回路をさらに備えた請求項１〜３のいずれか一項に記載の半導体装置。
【請求項５】
複数の命令が格納される第１メモリと、
複数のデータが格納される第２メモリと、
第１及び第２バスと、
前記第１メモリに格納された複数の命令のうち指定したアドレスの命令を前記第１バスを介して取り込んで実行し、その実行結果に基づいて前記第２バスを介して前記第２メモリに対してアクセスを行うマイクロプロセッサと、
トレース情報を出力するトレース情報出力部と、を備えた半導体装置の制御方法であって、
前記マイクロプロセッサは、パイプライン処理により前記複数の命令を順次実行し、
前記マイクロプロセッサに分岐命令が発生した場合に、その分岐前に指定されていた前記第１メモリのアドレスの情報を取得して前記トレース情報として出力し、
前記トレース情報出力部から出力された前記トレース情報を、前記マイクロプロセッサが分岐後の命令をフェッチする期間に前記第２バスを介して前記第２メモリに書き込む、半導体装置の制御方法。
【請求項６】
前記トレース情報を、前記マイクロプロセッサが前記分岐後の命令をフェッチする期間と、更に、前記マイクロプロセッサが前記分岐後の命令を実行し、実行結果に基づいて前記第２メモリに対してアクセスを行うまでの期間に、前記第２バスを介して前記第２メモリに書き込むことを特徴とする請求項５に記載の半導体装置の制御方法。
【請求項７】
前記トレース情報出力部は、分岐前に指定されていた前記第１メモリのアドレスの情報として、分岐前の前記第１バス上のアドレスの情報を出力することを特徴とする請求項５又は６に記載の半導体装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体装置及びその制御方法に関し、特にリアルタイムトレース機能を有する半導体装置及びその制御方法に関する。
【背景技術】
【０００２】
マイクロコンピュータのプログラムをデバッグするためには、マイクロプロセッサが実行するプログラムカウンタの履歴（以下、トレース情報と称す）を保持することが有効である。このトレース情報を後で解析することでプログラムのデバッグが行われる。さらに、近年では、マイクロコンピュータの動作を停止させることなくリアルタイムにトレース情報を保持すること、即ち、リアルタイムトレース機能を有することが求められている。
【０００３】
関連する技術が特許文献１に開示されている。図６は、特許文献１に開示されたトレースシステムを示す図である。図６に示すトレースシステムでは、トレースアナライザ１０３が、マイクロプロセッサ１０１から出力されるモード表示信号１０５、命令実行開始信号１０６、分岐命令発生信号１０７及び割り込み分岐発生信号１０８を読み込む。そして、このトレースアナライザ１０３は、これらの情報に基づいて取得したアドレス情報をトレースメモリ１０４に書き込むことにより命令のトレースを行う。それにより、図６に示すトレースシステムは、マイクロプロセッサ１０１を停止させることなくトレース情報を保持することができる。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平５−２２４９８９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかし、図６に示すトレースシステムでは、トレース情報を保持するための専用のメモリ（トレースメモリ１０４）を別途設ける必要があるため、コストが増大してしまうという問題があった。
【課題を解決するための手段】
【０００６】
本発明にかかる半導体装置は、複数の命令が格納される第１メモリと、複数のデータが格納される第２メモリと、第１及び第２バスと、前記第１メモリに格納された複数の命令のうち指定したアドレスの命令を前記第１バスを介して取り込んで実行し、その実行結果に基づいて前記第２バスを介して前記第２メモリに対してアクセスを行うマイクロプロセッサと、前記マイクロプロセッサに分岐命令が発生した場合に、その分岐前に指定されていた前記第１メモリのアドレスの情報を取得してトレース情報として出力するトレース情報出力部と、を備え、前記トレース情報出力部から出力された前記トレース情報は、前記マイクロプロセッサが前記分岐命令を実行することにより前記第２メモリに対してアクセスを行わなくなる期間、前記第２バスを介して前記第２メモリに書き込まれる。
【０００７】
また、本発明にかかる半導体装置の制御方法は、複数の命令が格納される第１メモリと、複数のデータが格納される第２メモリと、第１及び第２バスと、前記第１メモリに格納された複数の命令のうち指定したアドレスの命令を前記第１バスを介して取り込んで実行し、その実行結果に基づいて前記第２バスを介して前記第２メモリに対してアクセスを行うマイクロプロセッサと、トレース情報を出力するトレース情報出力部と、を備えた半導体装置の制御方法であって、前記マイクロプロセッサに分岐命令が発生した場合に、その分岐前に指定されていた前記第１メモリのアドレスの情報を取得して前記トレース情報として出力し、前記トレース情報出力部から出力された前記トレース情報を、前記マイクロプロセッサが前記分岐命令を実行することにより前記第２メモリに対してアクセスを行わなくなる期間、前記第２バスを介して前記第２メモリに書き込む。
【０００８】
上述のような回路構成により、リアルタイムトレース機能を実現しつつ、コストの増大を抑制することができる。
【発明の効果】
【０００９】
本発明により、リアルタイムトレース機能を実現しつつ、コストの増大を抑制することが可能な半導体装置及びその制御方法を提供することができる。
【図面の簡単な説明】
【００１０】
【図１】本発明の実施の形態１にかかる半導体装置の構成例を示す図である。
【図２】本発明の実施の形態１にかかる半導体装置の動作の一例を示す図である。
【図３】本発明の実施の形態１にかかる半導体装置の動作の一例を示す図である。
【図４】本発明の実施の形態２にかかる半導体装置の構成例を示す図である。
【図５】本発明の実施の形態３にかかる半導体装置の構成例を示す図である。
【図６】従来技術のトレースシステムを示す図である。
【発明を実施するための形態】
【００１１】
以下、図面を参照しつつ、本発明の実施の形態について説明する。なお、図面は簡略的なものであるから、この図面の記載を根拠として本発明の技術的範囲を狭く解釈してはならない。また、同一の要素には、同一の符号を付し、重複する説明は省略する。
【００１２】
以下の実施の形態においては便宜上その必要があるときは、複数のセクションまたは実施の形態に分割して説明するが、特に明示した場合を除き、それらはお互いに無関係なものではなく、一方は他方の一部または全部の変形例、応用例、詳細説明、補足説明等の関係にある。また、以下の実施の形態において、要素の数等（個数、数値、量、範囲等を含む）に言及する場合、特に明示した場合および原理的に明らかに特定の数に限定される場合等を除き、その特定の数に限定されるものではなく、特定の数以上でも以下でもよい。
【００１３】
さらに、以下の実施の形態において、その構成要素（動作ステップ等も含む）は、特に明示した場合および原理的に明らかに必須であると考えられる場合等を除き、必ずしも必須のものではない。同様に、以下の実施の形態において、構成要素等の形状、位置関係等に言及するときは、特に明示した場合および原理的に明らかにそうでないと考えられる場合等を除き、実質的にその形状等に近似または類似するもの等を含むものとする。このことは、上記数等（個数、数値、量、範囲等を含む）についても同様である。
【００１４】
実施の形態１
図１は、本発明の実施の形態１にかかる半導体装置の構成例を示す図である。本実施の形態にかかる半導体装置１は、マイクロプロセッサに分岐命令が発生した場合に、その分岐前に指定されていた命令メモリのアドレスの情報を取得してトレース情報として出力するトレース情報出力部を備える。このトレース情報は、分岐命令の実行中にマイクロプロセッサがデータメモリに対してアクセスを行わない期間、データバスを介してデータメモリに書き込まれる。それにより、本実施の形態にかかる半導体装置１は、トレース情報を保持（格納）するための専用のメモリを別途備える必要が無いため、コストの増大を抑制することができる。以下、具体的に説明する。
【００１５】
図１に示す半導体装置１は、マイクロプロセッサ１１と、トレース情報出力部１２と、命令メモリ（第１メモリ）１３と、データメモリ（第２メモリ）１４と、命令バス（第１バス）１５と、データバス（第２バス）１６と、を備える。
【００１６】
命令メモリ１３は、分岐命令を含む複数の命令（プログラムデータ）を格納している。なお、命令メモリ１３は、命令バス１５に接続されている。なお、命令バス１５は、例えば、命令メモリ１３のアドレスを指定するためのアドレス信号を伝達するアドレス伝達用バスと、命令メモリ１３に格納された命令（プログラムデータ）を伝達するデータ伝達用バスと、によって構成される。
【００１７】
データメモリ１４は、マイクロプロセッサ内で処理されたデータを一時的に格納する。なお、データメモリ１４は、データバス１６に接続されている。なお、データバス１６は、例えば、データメモリ１４のアドレスを指定するためのアドレス信号を伝達するアドレス伝達用バスと、データメモリ１４に書き込むデータ又はデータメモリ１４から読み出されたデータを伝達するデータ伝達用バスと、によって構成される。
【００１８】
マイクロプロセッサ１１は、命令バス１５及びデータバス１６に接続されている。マイクロプロセッサ１１は、命令メモリ１３に格納された複数の命令のうち指定したアドレスの命令を、命令バス１５を介して読み込み（フェッチし）、当該命令に従った処理を実行する。そして、マイクロプロセッサ１１は、その実行結果に基づいて、データバス１６を介してデータメモリ１４に対してアクセスを行う。例えば、マイクロプロセッサ１１は、命令に従った処理を実行することにより生成されたデータを、データバス１６を介してデータメモリ１４に書き込む。あるいは、マイクロプロセッサ１１は、命令に従った処理を実行することにより必要になったデータを、データバス１６を介してデータメモリ１４から読み込む。
【００１９】
さらに、マクロプロセッサ１１は、分岐命令が発生したか否かの情報をトレース情報出力部に対して出力する。
【００２０】
そして、トレース情報出力部１２は、マイクロプロセッサ１１に分岐命令が発生した場合に、その分岐前に指定されていた命令メモリ１３のアドレスの情報を取り込んでトレース情報として出力する。なお、トレース情報出力部１２は、データバス１６に接続されている。例えば、トレース情報出力部１２は、マイクロプロセッサ１１に分岐命令が発生したことに同期して、命令バス１５上のアドレスの情報を取り込み、トレース情報として出力する。
【００２１】
トレース情報出力部１２から出力されたトレース情報は、分岐命令が実行されることによりマイクロプロセッサ１１がデータメモリ１４に対してアクセスを行わなくなる期間、データバス１６を介してデータメモリ１４に書き込まれる。データメモリ１４に書き込まれたこのトレース情報を後で解析することでプログラムのデバッグが行われる。
【００２２】
図２は、図１に示す半導体装置１の動作の一例を示すタイミングチャートである。なお、横軸は時間を示し、縦軸は紙面の下方向に向けて逐次的な命令列を示している。また、ＩＦは、命令メモリ１３へのアクセスを示し、ＩＤは、命令のデコードを示し、ＭＥＭは、データメモリ１４へのアクセスを示す。図２に示すように、半導体装置１において、マイクロプロセッサ１１はパイプライン処理により複数の命令を実行している。
【００２３】
ここで、マイクロプロセッサ１１に分岐命令が発生した場合、当該マイクロプロセッサ１１は、命令を分岐前の命令から分岐後の命令に切り替えて実行する。そのため、マイクロプロセッサ１１が分岐後の命令を取り込んでから、マイクロプロセッサ１１が当該命令の実行結果に基づいてデータメモリ１４に対してアクセスを行うまで、の期間に、データ充填期間が発生する（時刻ｔ１〜ｔ２）。つまり、マイクロプロセッサ１１がデータメモリ１４に対してアクセスを行わない期間が発生する。この期間に、トレース情報出力部１２から出力されたトレース情報は、データバス１６を介してデータメモリ１４に書き込まれる。それにより、図１に示す半導体装置１は、マイクロプロセッサ１１からのアクセスと競合することなく、トレース情報を、データメモリ１４に書き込むことが可能になる。
【００２４】
このように、本実施の形態にかかる半導体装置１では、分岐命令が実行されることによりマイクロプロセッサ１１がデータメモリ１４に対してアクセスを行わなくなる期間、トレース情報が、データバス１６を介してデータメモリ１４に書き込まれる。それにより、本実施の形態にかかる半導体装置１は、トレース情報を保持（格納）するための専用のメモリを別途備える必要が無いため、コストの増大を抑制することができる。
【００２５】
なお、本実施の形態では、トレース情報出力部１２が、分岐命令発生時における分岐前の命令メモリ１３のアドレスの情報のみを取り込んで、トレース情報として出力している。つまり、トレース情報出力部１２は、それ以外のアドレスの情報を取り込んでいない。しかしながら、分岐命令に関するプログラムのデバッグを行えば、プログラム上のほとんどのバグを解消できることから、本実施の形態の構成であっても十分なデバッグ効果を期待することができる。
【００２６】
また、分岐命令の中には、例えば、サブルーチンコール命令のように、分岐前の状態を保存するためマイクロプロセッサ１１からデータメモリ１４に対してアクセスが行われる命令も存在する（図３参照）。しかしながら、サブルーチンコール命令の場合でも、例えば、３クロックサイクルのうち、最初の２クロックサイクルのみ、マイクロプロセッサ１１からデータメモリ１４に対してアクセスが行われ、最後の１クロックサイクルでは、マイクロプロセッサ１１からデータメモリ１４に対してアクセスが行われない。そのため、その最後の１クロックサイクル期間に、トレース情報をデータメモリ１４に書き込めば良い。
【００２７】
なお、図３の例では、時刻ｔ１にて、分岐命令（サブルーチンコール命令）が発生する。それにより、トレース情報出力部１２は、その分岐前に指定されていた命令メモリ１３のアドレスの情報を取り込んでトレース情報として出力する（時刻ｔ２）。その後、マイクロプロセッサ１１がデータメモリ１４に対してアクセスを行わない期間（時刻ｔ３〜ｔ４）、トレース情報は、データバス１６を介してデータメモリ１４に書き込まれる。
【００２８】
実施の形態２
図４は、本発明の実施の形態２にかかる半導体装置の構成例を示す図である。図４は、図１に示す半導体装置１の具体的な構成例を半導体装置１ａとして示したものである。以下、具体的に説明する。
【００２９】
図４に示す半導体装置１ａは、マイクロプロセッサ１１ａと、トレース情報出力部１２ａと、命令メモリ１３ａと、データメモリ１４ａと、命令バス１５ａと、データバス１６ａと、選択回路１７ａと、を備える。なお、マイクロプロセッサ１１ａ、トレース情報出力部１２ａ、命令メモリ１３ａ、データメモリ１４ａ、命令バス１５ａ及びデータバス１６ａは、それぞれ、図１におけるマイクロプロセッサ１１、トレース情報出力部１２、命令メモリ１３、データメモリ１４、命令バス１５及びデータバス１６に対応する。
【００３０】
本実施の形態では、命令バス１５ａ（より詳細には、命令バス１５ａのアドレス伝達用バス）のビット幅が１６ビットであり、データバス１６ａ（より詳細には、データバス１６ａのデータ伝達用バス）のビット幅が１６ビットである場合を例に説明する。
【００３１】
この場合、トレース情報出力部１２ａは、分岐命令発生時における分岐前の命令メモリ１３ａのアドレスの情報（１６ビット幅）を取り込み、１６ビット幅のトレース情報を出力する。また、マイクロプロセッサ１１ａは、データメモリ１４ａに１６ビット幅のデータを書き込み、又は、データメモリ１４ａから１６ビット幅のデータを読み出す。
【００３２】
マイクロプロセッサ１１ａは、分岐命令が発生したか否かの情報をトレース情報出力部１２ａに対して出力するとともに、トレース情報をデータメモリ１４ａに書き込むか否かを制御するための書き込み信号を出力する。具体的には、マイクロプロセッサ１１ａは、分岐命令が実行されることによりマイクロプロセッサ１１ａがデータメモリ１４ａに対してアクセスを行わなくなる期間、書き込み信号をアクティブにし、それ以外では、書き込み信号をインアクティブにする。
【００３３】
選択回路１７ａは、トレース情報出力部１２ａ及びマイクロプロセッサ１１ａのうち書き込み信号に基づいて選択された一方と、データバス１６ａと、の間に信号経路を設定する。例えば、書き込み信号がインアクティブの場合、選択回路１７ａは、マイクロプロセッサ１１ａとデータバス１６ａとの間に信号経路を設定する。それにより、マイクロプロセッサ１１ａからデータメモリ１４ａへのアクセスが可能になる。一方、書き込み信号がアクティブの場合、選択回路１７ａは、トレース情報出力部１２ａとデータバス１６ａとの間に信号経路を設定する。それにより、トレース情報出力部１２ａから出力されたトレース情報がデータメモリ１４ａに供給される。
【００３４】
データメモリ１４ａでは、書き込み信号がアクティブの場合に、トレース情報出力部１２ａから出力されたトレース情報が書き込まれる。
【００３５】
図４に示す半導体装置１ａのその他の回路構成及び動作については、図１に示す半導体装置１と同様であるため、その説明を省略する。
【００３６】
このように、本実施の形態にかかる半導体装置１ａは、実施の形態１の場合と同等の効果を奏することができる。なお、命令バス１５ａ（より詳細には、命令バス１５ａのアドレス伝達用バス）のビット幅が、データバス１６ａ（より詳細には、データバス１６ａのデータ伝達用バス）のビット幅より小さい場合でも、同等の効果を奏することができる。
【００３７】
実施の形態３
図５は、本発明の実施の形態３にかかる半導体装置の構成例を示す図である。図５に示す半導体装置１ｂでは、図４に示す半導体装置１ａと比較して、命令バス（より詳細には、命令バスのアドレス伝達用バス）のビット幅が、データバス（より詳細には、データバスのデータ伝達用バス）のビット幅より大きい点が異なる。
【００３８】
図５に示す半導体装置１ｂは、データメモリ１８ｂが追加される以外は、図４に示す半導体装置１ａと同じ回路構成である。なお、マイクロプロセッサ１１ｂ、トレース情報出力部１２ｂ、命令メモリ１３ｂ、データメモリ１４ｂ、命令バス１５ｂ及びデータバス１６ｂは、それぞれ、図４におけるマイクロプロセッサ１１ａ、トレース情報出力部１２ａ、命令メモリ１３ａ、データメモリ１４ａ、命令バス１５ａ及びデータバス１６ａに対応する。
【００３９】
本実施の形態では、命令バス１５ｂ（より詳細には、命令バス１５ｂのアドレス伝達用バス）のビット幅が２０ビットであり、データバス１６ｂ（より詳細には、データバス１６ｂのデータ伝達用バス）のビット幅が１６ビットである場合を例に説明する。
【００４０】
この場合、データバス１６ｂは１６ビット幅であるため、２０ビット幅のトレース情報をそのままデータバス１６ｂを介してデータメモリ１４ｂに伝達することはできない。そこで、トレース情報出力部１２ｂは、分岐命令発生時における分岐前の命令メモリ１３のアドレスの情報（２０ビット幅）を取り込み、１６ビット幅の第１トレース情報と、４ビット幅の第２トレース情報と、に分けて出力する。１６ビット幅の第１トレース情報は、選択回路１７ｂに入力される。一方、４ビット幅の第２トレース情報は、直接データメモリ１８ｂに供給される。
【００４１】
書き込み信号がアクティブの場合、１６ビット幅の第１トレース情報は、図４の場合と同様に、データバス１６ｂを介してデータメモリ１４ｂに供給される。そして、書き込み信号がアクティブの場合、データメモリ１４ａには、１６ビット幅の第１トレース情報が書き込まれる。また、書き込み信号がアクティブの場合、第２のデータメモリ１８ｂには、４ビット幅の第２トレース情報が書き込まれる。なお、仮に、トレース情報に第２トレース情報が含まれない場合には、データメモリ１８ｂには何も書き込まれない構成としても良い。
【００４２】
図５に示す半導体装置１ｂのその他の回路構成及び動作については、図４に示す半導体装置１ａと同様であるため、その説明を省略する。
【００４３】
このように、本実施の形態にかかる半導体装置１ｂは、実施の形態１の場合と同等の効果を奏することができる。なお、データメモリ１８ｂは、トレース情報を保持する以外にも、他のデータを記憶するために用いられる。つまり、データメモリ１８ｂは、トレース情報を保持するための専用のメモリである必要はない。
【００４４】
以上のように、上記実施の形態１〜３にかかる半導体装置では、分岐命令が実行される前後においてマイクロプロセッサがデータメモリに対してアクセスを行わない期間、トレース情報が、データバスを介してデータメモリに書き込まれる。それにより、上記実施の形態１〜３にかかる半導体装置は、トレース情報を保持（格納）するための専用のメモリを別途備える必要が無いため、コストの増大を抑制することができる。
【００４５】
なお、本発明は上記実施の形態に限られたものではなく、趣旨を逸脱しない範囲で適宜変更することが可能である。
【符号の説明】
【００４６】
１  半導体装置
１１  マイクロプロセッサ
１２  トレース情報出力部
１３  命令メモリ
１４  データメモリ
１５  命令バス
１６  データバス
１７ａ  選択回路
１ａ  半導体装置
１１ａ  マイクロプロセッサ
１２ａ  トレース情報出力部
１３ａ  命令メモリ
１４ａ  データメモリ
１５ａ  命令バス
１６ａ  データバス
１ｂ  トレース情報出力部
１１ｂ  マイクロプロセッサ
１２ｂ  トレース情報出力部
１３ｂ  命令メモリ
１４ｂ  データメモリ
１５ｂ  命令バス
１６ｂ  データバス
１７ｂ  選択回路
１８ｂ  データメモリ
【図１】
0005850732.tif 000002
【図２】
0005850732.tif 000003
【図３】
0005850732.tif 000004
【図４】
0005850732.tif 000005
【図５】
0005850732.tif 000006
【図６】
0005850732.tif 000007