(57)【要約】 【課題】ブレークポイント等によりプロセッサが停止しデバッガが介入しても再実行時にプロセッサ内部の実行タイミングを再現させ、クロック精度の実行タイミングを実現したデバッグ装置を少ない付加ハードウェアで提供する。【解決手段】ユーザ・モードからデバッグ・モードへの切替時、ユーザ・モードで実行中に発生したパイプライン・インターロック情報を記憶素子（１１２）に記憶保持し、デバッグ・モードからユーザ・モードへの切替時に、マルチプレクサ（１１３）は記憶素子（１１２）に記憶保持される値を所定期間出力し、記憶素子（１１２）にパイプライン・インターロック情報が記憶保持されている場合、ユーザ・モードへの復帰時に、パイプライン・ストールを再現する。【選択図】図１
2011086005.tif 000002
【特許請求の範囲】
【請求項１】
パイプラインのタイミング情報を、プロセッサがデバッグ・モードに遷移する時に取得し保持する記憶素子と、
前記パイプラインのタイミング情報と前記記憶素子の出力とを選択する選択回路と、
を備え、
デバッグ・モードからユーザ・モードへの復帰時に、前記選択回路は、前記記憶素子の出力を選択する、ことを特徴とする半導体デバイス。
【請求項２】
ユーザ・モードからデバッグ・モードへの切替時、前記ユーザ・モードで実行中に発生したパイプライン・インターロック信号を前記記憶素子に記憶保持し、
前記デバッグ・モードから前記ユーザ・モードへの切替時に、前記選択回路は前記記憶素子に記憶される値を所定期間出力し、
前記記憶素子がパイプライン・インターロック信号が活性状態にあることを記憶保持している場合、前記ユーザ・モードへの復帰時に、パイプライン・ストールを再現する、ことを特徴とする請求項１記載の半導体デバイス。
【請求項３】
ユーザ・モードからデバッグ・モードへの遷移を検出して第１のタイミング信号を生成し、前記記憶素子は、前記第１のタイミング信号に応答してパイプライン・インターロック信号を記憶し、
デバッグ・モードからユーザ・モードへの復帰を検出して第２のタイミング信号を生成し、
前記ユーザ・モードへの復帰時、前記選択回路は、前記第２のタイミング信号が活性状態にある所定期間の間、前記記憶素子の出力を選択し、前記第２のタイミング信号が非活性状態となると、パイプライン・インターロック信号を選択して出力する、ことを特徴とする請求項２記載の半導体デバイス。
【請求項４】
請求項１乃至３のいずれか１項に記載の半導体デバイスのデバッグを行うデバッグ装置。
【請求項５】
プロセッサのユーザ・モードからデバッグ・モード遷移時に、前記プロセッサにおけるパイプラインのインターロック信号を記憶素子に記憶させ、
デバッグ・モードからユーザ・モードへの復帰時に、パイプライン・インターロック信号として、前記記憶素子に記憶されているパイプラインのインターロック信号を選択して用いる、ことを特徴とするデバッグ・システム。
【請求項６】
前記プロセッサが、
パイプラインのインターロック信号を記憶する前記記憶素子と、
前記デバッグ・モードからユーザ・モードへの復帰時に、パイプライン・インターロック信号として、前記記憶素子に記憶されているパイプラインのインターロック信号を選択する選択回路と、
を備えた、ことを特徴とする請求項５記載のデバッグ・システム。
【請求項７】
ユーザ・モードからデバッグ・モードへの遷移を検出して第１のタイミング信号を生成し、前記記憶素子は、前記第１のタイミング信号に応答してパイプライン・インターロック信号を記憶し、
デバッグ・モードからユーザ・モードへの復帰を検出して第２のタイミング信号を生成し、
前記ユーザ・モードへの復帰時、前記選択回路は、前記第２のタイミング信号が活性状態にある所定期間の間、前記記憶素子の出力を選択し、前記第２のタイミング信号が非活性状態となると、パイプライン・インターロック信号を選択して出力する、ことを特徴とする請求項６記載のデバッグ・システム。
【請求項８】
プロセッサのユーザ・モードからデバッグ・モード遷移時に、パイプラインのインターロック信号を記憶素子に記憶させ、
デバッグ・モードからユーザ・モードへの復帰時に、パイプライン・インターロック信号として、前記記憶素子に記憶されているパイプラインのインターロック信号を選択して用いる、ことを特徴とするデバッグ方法。
【請求項９】
ユーザ・モードからデバッグ・モードへの遷移を検出して第１のタイミング信号を生成し、前記第１のタイミング信号に応答してパイプライン・インターロック信号を前記記憶素子に記憶し、
デバッグ・モードからユーザ・モードへの復帰を検出して第２のタイミング信号を生成し、
前記ユーザ・モードへの復帰時、前記第２のタイミング信号が活性状態にある所定期間の間、前記記憶素子の出力を選択し、前記第２のタイミング信号が非活性状態となると、パイプライン・インターロック信号を選択して出力する、ことを特徴とする請求項８記載のデバッグ方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体デバイスのデバッグ技術に関し、特にプロセッサ等のデバッグのタイミング精度の向上に好適な装置および方法に関する。
【背景技術】
【０００２】
半導体プロセス技術の進歩により、携帯電話やＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｋ）レコーダ、ゲーム機といった最新の組込み機器は、システムの全体あるいは相当部分を１チップに納めた、いわゆるＳｏＣ（Ｓｙｓｔｅｍ  ｏｎ  Ｃｈｉｐ）と呼ばれるＬＳＩデバイスにより、小型、低消費電力かつ低価格に実現できるようになった。これらの  ＳｏＣデバイスでは、高い性能を達成することはもちろんだが、新しい仕様や要求に迅速に追随できる柔軟性も同時に求められる。
【０００３】
そこで一般的にＳｏＣデバイスでは、汎用マイクロプロセッサ・コア（以下単に「プロセッサ・コア」という）をベースとし、目標性能を達成するためコプロセッサやハードウェア・アクセラレータ（以下まとめて「アクセラレータ」と略記する）を拡張し、プロセッサ・コア上で動作するソフトウェアからアクセラレータを制御することで、柔軟性を実現するアーキテクチャを採用している。
【０００４】
例えば特許文献１、非特許文献１、２には、コプロセッサやアクセラレータによる拡張を可能にしたＳｏＣデバイス向けプロセッサ・コアが開示されている。
【０００５】
プロセッサ・コア上で動作するソフトウェアのデバッグには、デバッグ装置として、通常、ＩＣＥ（Ｉｎ−Ｃｉｒｃｕｉｔ  Ｅｍｕｌａｔｏｒ）が用いられる。ＩＣＥは例えば非特許文献３に解説されているように、プロセッサ・コア内部のレジスタの読み書き、メモリの読み書き、実行制御といったデバッグ機能を提供する。
【０００６】
ＩＣＥにおける実行制御とは、デバッグ・モードからユーザ・モードに遷移し、ユーザ・プログラム上の指定アドレスから実行を開始したり、ブレーク・ポイント等によりユーザ・プログラムの実行を停止し、デバッグ・モードに遷移することである。
【０００７】
典型的なＩＣＥの構成を、図４を用いて説明する。ブレーク検出回路４０３は、ＳｏＣデバイス４０７の実行制御を行う。すなわち、ブレーク検出回路４０３は、ＳｏＣデバイス４０７の状態４０５、例えば、ＳｏＣデバイス４０７が内蔵するプロセッサ・コア４０１のプログラム・カウンタ値や、プロセッサ・コア４０１が読み書きするメモリ・アドレス値を監視し、プロセッサ・コアを停止したい状態になったら、例えばプログラム・カウンタ値が予め設定した値に到達したり、プロセッサ・コアが予め設定したアドレスのメモリを読み書きしたら、デバッグ割込信号４０６を発生させ、プロセッサ・コア４０１に、ユーザ・プログラムの実行を停止させ（ブレーク）、デバッグ・モードに遷移させ、ＩＣＥ用のモニタ・プログラムを実行させることで、ユーザ・プログラムの実行制御を行う。
【０００８】
例えば組込向けプロセッサ・コアとして一般的なＡＲＭでは、「デバッグ例外（Ｄｅｂｕｇ  ｅｘｅｃｐｔｉｏｎ）」と呼ばれる割り込みを発生させ、「モニタ・ターゲット（Ｍｏｎｉｔｏｒ  ｔａｒｇｅｔ）」と呼ばれるソフトウェアに制御を移し、デバッグ機能を実現することが非特許文献４（ｐ．１３−４０）に記載されている。典型的なデバッグ機能とは、ブレークしたプロセッサ・コアの内部レジスタの読み書きである。
【０００９】
ＩＣＥは、ソフトウェアのデバッグのための装置であり、プロセッサ・コアを機械語のプログラミング・モデル・レベルで抽象化したデバッグ環境を提供する。すなわち、ＩＣＥでは、機械語命令がプログラム順序でシリアル実行されているとみなした状態を観測し制御できるが、ハードウェア回路レベルの情報は隠蔽されており、プロセッサ・コア内部で機械語命令が複数のパイプライン・ステージに渡って実行されている状態などのクロック精度の内部状態観測や、機械語命令の実行をパイプライン途中で止めるといったクロック精度の実行制御はできない。
【００１０】
このことから、ＩＣＥは、ＳｏＣデバイス内蔵のプロセッサ・コア上で実行される、アクセラレータを厳密なタイミングで制御するソフトウェアのデバッグには不充分な面がある。
【００１１】
以下、ＩＣＥを利用したことにより、実行タイミングのクロック単位の精度が失われる例を示す。
【００１２】
図５に、典型的なプロセッサ・コアの内部構成を示す。これは、非特許文献５に示された典型的な５段パイプラインＲＩＳＣ（Ｒｅｄｕｃｅｄ  Ｉｎｓｔｒｕｃｔｉｏｎ  Ｓｅｔ  Ｃｏｍｐｕｔｅｒ）型プロセッサを、説明に適するよう簡略化したものである。
【００１３】
図５において、５段パイプラインは、
ＩＦ（Ｉｎｓｔｒｕｃｔｉｏｎ  Ｆｅｔｃｈ、命令フェッチ）、
ＩＤ（Ｉｎｓｔｒｕｃｔｉｏｎ  Ｄｅｃｏｄｅ、命令デコード）、
ＥＸ（Ｅｘｅｃｕｔｅ、実行）、
ＭＥＭ（Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ、メモリアクセス）、
ＷＢ（Ｗｒｉｔｅ  Ｂａｃｋ、書き戻し）
の各ステージから成る。
【００１４】
図６に、図５に示したプロセッサ・コア上で、ロード命令と、そのロード命令の結果を参照する演算命令を連続して実行する場合のパイプライン上のタイミングを示す。これらのロード命令（Ｉｎｓｔ  ｕ１）と演算命令（Ｉｎｓｔ  ｕ２）は、命令メモリ１０７から供給される。図５及び図６を参照して動作を説明する。
【００１５】
ロード命令（Ｉｎｓｔ  ｕ１）は、ＥＸステージでロードすべきデータのアドレス１０３を計算し（時刻：Ｔｕ３）、ＭＥＭステージでデータメモリ１０４上のそのアドレスからデータ１０５を取得し(時刻：Ｔｕ４)、ＷＢステージでレジスタ・ファイル１０１中の指定されたレジスタ（ディスティネーション・レジスタ）に書き込む（時刻：Ｔｕ５）。
【００１６】
演算命令（Ｉｎｓｔ  ｕ２）は、ＥＸステージで、演算に用いるデータを、レジスタ・ファイル１０１中の指定されたレジスタ（ソース・レジスタ）から取得する。
【００１７】
命令メモリ１０７から供給される命令語（ロードや演算命令等）のオペランドに指定されたレジスタ番号により、レジスタ・ファイル１０１からあるレジスタが選択され、データ格納先のレジスタの番号（ディスティネーション・レジスタ番号）１１０と、データを読み込むレジスタの番号（ソース・レジスタ番号）１０８として用いられる。
【００１８】
プロセッサ・コア４０１の制御回路１２１は、それらのレジスタ番号から、先行命令のディスティネーション・レジスタ番号１１０と、後続命令のソース・レジスタ番号１０８を比較回路（一致検出回路）１１７で比較し、同一であることを検出した場合、レジスタ番号一致検出信号１１６を活性状態にする。
【００１９】
演算命令が、ロード命令の結果を用いるように、データメモリ１０４の出力から演算器１０２までのバイパス経路１０６を有効にするとともに、ロード・インターロック信号１１１を活性状態にして、演算命令（Ｉｎｓｔ  ｕ２）のＥＸステージを、１クロック延期する（図６の演算命令Ｉｎｓｔ  ｕ２における時刻Ｔｕ４の「ｓｔａｌｌ」参照、このＩｎｓｔ  ｕ２のＥＸステージは時刻Ｔｕ５に遅れる）。この状態を「ロードインターロックが発生した」という。
【００２０】
これは、ロード命令（Ｉｎｓｔ  ｕ１）のＭＥＭステージが終了するまで、データメモリ１０４からのデータが利用可能とならず、演算命令（Ｉｎｓｔ  ｕ２）のＥＸステージが開始できないからである。
【００２１】
ところが、ＩＣＥを用いると、この実行タイミングが再現されなくなる、という問題がある。
【００２２】
図７は、演算命令に設定されたブレークポイントに到達したため、プロセッサ・コア４０１がユーザ・モードからデバッグ・モードに遷移するタイミングを示す図である。
【００２３】
時刻Ｔｕ１において、演算命令（Ｉｎｓｔ  ｕ２）の命令フェッチ・アドレスがブレーク検出回路４０３により、ブレーク・ポイントの対象であると判定され、ブレーク検出回路４０３はデバッグ割込信号４０６を活性状態とする。
【００２４】
これにより、プロセッサ・コア４０１において、演算命令（Ｉｎｓｔ  ｕ２）は，キャンセルされ実行されない。また、プロセッサ・コア４０１の制御が、デバッグ・モニタ・プログラム（Ｉｎｓｔ  ｄ１、Ｉｎｓｔ  ｄ２）へ移る。以下、これらの動作を詳細に説明する。
【００２５】
ユーザモードからデバッグ・モードへの切替直前の時刻Ｔｕ１に、パイプラインの最初のステージであるＩＦステージが実行された演算命令（Ｉｎｓｔ  ｕ２）をキャンセルするため、デバッグ割込信号４０６の活性化に応答して、演算命令（Ｉｎｓｔ  ｕ２）を無効化する信号（ＥＸステージを無効化する無効化信号、ＭＥＭステージを無効化する無効化信号、ＷＢステージを無効化する無効化信号）が制御回路１２１内で生成され、後続するパイプライン・ステージ（ＥＸステージ等）へ伝播され、演算命令（Ｉｎｓｔ  ｕ２）によるプロセッサ・コア４０１の内部状態の変更を抑止する。
【００２６】
内部状態変更の抑止例としては、
・演算命令（Ｉｎｓｔ  ｕ２）のＥＸステージにおいて、ロード・インターロック信号１１１の生成を抑止すること、および、
・演算命令（Ｉｎｓｔ  ｕ２）のＷＢステージにおいて、結果のレジスタ・ファイル１０１への書き込みを抑止し、実質的に演算命令（Ｉｎｓｔ  ｕ２）をキャンセルする、
ことが挙げられる。
【００２７】
引き続き、プロセッサ・コア４０１は、ＩＣＥ４０２からのデバッグ割込信号４０６により、デバッグ・モードに移行し、デバッグ・モニタ・プログラム（Ｉｎｓｔ  ｄ１以降）の実行を開始する。デバッグ・モニタ・プログラムがＩＣＥ４０２と通信することで、プロセッサ・コア４０１上のレジスタの読み書きなどのデバッグ機能が実現できる。
【００２８】
次に、図８を参照して、ユーザ・プログラム再開後にタイミング情報が失われることを説明する。
【００２９】
デバッグ割り込み発生時に実行がキャンセルされていたユーザ・プログラムの演算命令（Ｉｎｓｔ  ｕ２）の実行を、時刻Ｔｕ２から再開すると、命令Ｉｎｓｔ  ｕ４の実行開始時刻はＴｕ４となる。モニタ・プログラム実行開始時（図７）に、ロード命令（Ｉｎｓｔ  ｕ１）の実行が完了しており、その結果は、ユーザ・プログラム再開後、ただちに利用可能であるため、命令（Ｉｎｓｔ  ｕ２、ｕ３）は、ロード・インターロックなしに実行されるからである。
【００３０】
しかし、図８において、命令（Ｉｎｓｔ  ｕ４）の実行開始時刻は、図６と同様、Ｔｕ５であるべきである。
【００３１】
すなわち、ＩＣＥの介入により、実行タイミングがずれ、デバッグ時に正常動作したソフトウェアが、実機では、別のプロセッサやアクセラレータ、入出力回路とのデータ転送がうまく行えず誤動作する可能性がある。
【００３２】
このように、ＩＣＥの介入により実行タイミングがずれるため、デバッグ時に正常動作したソフトウェアが、実動作時は、別のプロセッサやアクセラレータ、入出力回路とのデータ転送がうまく行えず、誤動作する可能性がある、という問題がある。
【００３３】
以上の技術を、以後「関連技術１」として参照する。
【００３４】
ＩＣＥの介入により、クロック精度のタイミングがずれる問題を解決するため、クロック精度のデバッグを可能にするエミュレータを用いたデバッグ機構や手法が提案されている。例えば特許文献２には、ＶｅｒｉｌｏｇやＶＨＤＬ言語で記述したＳｏＣデバイスの設計データを、ＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）等のプログラマブル論理デバイスに書き込み、実デバイスと論理的に同等な環境を構築し、クロック精度でエミュレータを実行制御することで、ソフトウェアのデバッグに用いる例が開示されている。
【００３５】
また、特許文献３には、クロック精度の実行制御とプロセッサ・コアのレジスタ値の観測を両立させる発明が開示されている。この例では、ブレーク・ポイント発生時等に、クロックを停止し、デバッグ専用の観測回路を通じて、プロセッサ・コアのレジスタ値を読み取っている。この手法によれば、プロセッサ・コアとアクセラレータ相互のクロック精度のタイミングを保ったまま、プロセッサ・コア内部、アクセラレータ内部も観測できる。特許文献３には、値を観測する技術は開示されているが、変更する技術については開示されていない。
【００３６】
特許文献４には、エミュレータにレジスタ値の観測だけでなく、変更機能を付け加え、クロック精度のエミュレーションとＩＣＥに似た使い勝手を両立させる構成が開示されている。
【００３７】
特許文献５には、割り込み発生時にプロセッサ・パイプラインの全状態を退避し、割り込みからの復帰時にそれらを復帰することで、タイミングを含めた全状態を復元する技術が、開示されている。
【００３８】
特許文献２乃至５は、プロセッサの実デバイスもしくは実デバイスに近い速度で動作するＦＰＧＡ等によるハードウェアによるエミュレーション環境を対象にし、実デバイスもしくはハードウェアエミュレーション環境において、クロック精度のエミュレーションとレジスタ値の観測や変更機能を両立させるための技術について述べている。以上の技術を、以下では、「関連技術２」として参照する。
【００３９】
プロセッサのクロック精度のエミュレーションではあるが、例えば特許文献６に開示されているように、プロセッサをソフトウェア・モデルとして実現している場合、内部状態を完全に保存したままプロセッサを停止させたり、内部状態を観測および変更することは容易である。ただし、ソフトウェア・モデルの実行速度は、実デバイスと比較してかなり（例えば数百〜数千倍のオーダー）遅く、実用になる用途が限られる。以上の技術を、以下では、「関連技術３」として参照する。
【先行技術文献】
【非特許文献】
【００４０】
【非特許文献１】Ricardo E. Gonzalez、“Xtensa: A Configurable and Extensible Processor、”IEEE MICRO Magazine、Volume 20、Issue 2、March-April 2000、pp.60-70
【非特許文献２】Steve Leibson/James Kim、“Configurable Processors: A New Era in Chip Design、”IEEE Computer Magazine、Volume 38、Issue 7、July 2005、pp.51-59
【非特許文献３】山本繁寿／有末一寿、「組み込み機器とデバッグ環境」、インターフェース、２００２年３月、ｐｐ．４９〜５３、ＣＱ出版社
【非特許文献４】“ARM1156T2F-S Technical Reference Manual、 Revision: r0p0、”ARMLimited、2005、http://www.arm.com/pdfs/DDI0290C_arm1156t2fs_r0p0_trm.pdf
【非特許文献５】David Patterson and John Hennessy、“Computer Organization and Design、”Morgan Kaufman、1994
【特許文献】
【００４１】
【特許文献１】特開２００４−２８８２０３号公報
【特許文献２】特許第３１７３５０６号公報
【特許文献３】特開２００１−２０９５５６号公報
【特許文献４】特開２００５−１８１０６１号公報
【特許文献５】特開平４−１２７３３１号公報
【特許文献６】特開２００３−８５００１号公報
【発明の概要】
【発明が解決しようとする課題】
【００４２】
以下に、本発明による関連技術の分析を与える。
【００４３】
関連技術１では、ブレークポイントにより停止し、再実行する時に、実行タイミングのクロック単位の精度が失われる、という問題がある。
【００４４】
また関連技術２では、クロック精度のエミュレーションとレジスタ値の観測や変更機能を両立させるため、観測あるいは変更したいすべてのレジスタにデバッグのための回路や配線を付け加える必要があり、ハードウェア量が膨大になる、という問題がある。
【００４５】
そのため、クロック精度でプロセッサ・コアとアクセラレータを同期させたデバッグは、実デバイスでもクリティカルなタイミング検証に利用したい機能ではあるが、その付加ハードウェア量の大きさから、実デバイスでの適用は全く現実的ではないという問題がある。
【００４６】
また、ＦＰＧＡベースの検証支援エミュレータで高速に検証できるＳｏＣデバイス回路規模に限界がある
【００４７】
さらに関連技術３には、ハードウェアソフトウェア・モデルの実行速度が実デバイスと比較してかなり（例えば数百〜数千倍のオーダー）遅く、実用になる用途が限られるという問題がある。またソフトウェア・モデルにしか適用できず、半導体デバイスやＦＰＧＡによるハードウェアエミュレーション環境では適用できないという問題がそもそもある。
【００４８】
従って、本発明の目的は、ブレークポイント等によりプロセッサが停止しデバッガが介入しても再実行時にプロセッサ内部の実行タイミングを再現させ、クロック精度のデバッグを可能とする半導体デバイス及びそのデバッグ方法とシステムを提供することである。
【００４９】
本発明の他の目的は、上記目的を達成するために付加されるハードウェアの規模を抑え、低コスト化を図る半導体デバイス及びデバッグ方法とシステムを提供することにある。
【課題を解決するための手段】
【００５０】
本願で開示される発明は、前記課題を解決するため概略以下の構成とされる。
【００５１】
本発明によれば、パイプラインのタイミング情報を、プロセッサがデバッグ・モードに遷移する時に取得し保持する記憶素子と、前記パイプラインのタイミング情報と前記記憶素子の出力とを選択する選択回路と、を備え、デバッグ・モードからユーザ・モードへの復帰時に、前記選択回路は、前記記憶素子の出力を選択する半導体デバイスが提供される。
【００５２】
本発明によれば、プロセッサのユーザ・モードからデバッグ・モード遷移時に、前記プロセッサにおけるパイプラインのインターロック信号を記憶素子に記憶させ、デバッグ・モードからユーザ・モードへの復帰時に、パイプライン・インターロック信号として、前記記憶素子に記憶されているパイプラインのインターロック信号を選択して用いるデバッグ・システムが提供される。
【００５３】
本発明によれば、プロセッサのユーザ・モードからデバッグ・モード遷移時に、パイプラインのインターロック信号を記憶素子に記憶させ、デバッグ・モードからユーザ・モードへの復帰時に、パイプライン・インターロック信号として、前記記憶素子に記憶されているパイプラインのインターロック信号を選択して用いるデバッグ方法が提供される。
【発明の効果】
【００５４】
本発明によれば、ブレークポイント等によりプロセッサが停止しデバッガが介入しても再実行時にプロセッサ内部の実行タイミングを再現させ、クロック精度のデバッグを可能とする。本発明によれば、ハードウェア規模の増大を抑え、低コスト化を実現する。
【図面の簡単な説明】
【００５５】
【図１】本発明の実施形態の構成を示すブロック図である。
【図２】本発明の実施形態の動作を示すタイミング・チャートである。
【図３】本発明の実施形態の動作を示すタイミング・チャートである。
【図４】関連技術の構成を示すブロック図である。
【図５】関連技術の構成を示すブロック図である。
【図６】関連技術の動作を示すタイミング・チャートである。
【図７】関連技術の動作を示すタイミング・チャートである。
【図８】関連技術の動作を示すタイミング・チャートである。
【発明を実施するための形態】
【００５６】
本発明に係る半導体デバイスにおいて、ユーザ・モードからデバッグ・モードへの遷移時、ユーザ・モードで実行中に発生したパイプライン・インターロック信号を記憶素子に記憶保持し、デバッグ・モードからユーザ・モードへの切替時に、選択回路は、記憶素子に記憶保持される値を所定期間出力し、記憶素子にパイプライン・インターロック信号が活性状態にあったことを記憶保持している場合、前記ユーザ・モードへの復帰時に、パイプライン・ストール状態を再現する。
【００５７】
本発明に係る半導体デバイスにおいて、ユーザ・モードからデバッグ・モードへの遷移を検出して第１のタイミング信号を生成し、前記記憶素子は、前記第１のタイミング信号に応答してパイプライン・インターロック信号を記憶し、デバッグ・モードからユーザ・モードへの復帰を検出して第２のタイミング信号を生成し、前記ユーザ・モードへの復帰時、前記選択回路は、前記第２のタイミング信号が活性状態にある所定期間の間、前記記憶素子の出力を選択し、前記第２のタイミング信号が非活性状態となると、パイプライン・インターロック信号を選択して出力する。
【００５８】
本発明によれば、プロセッサのユーザ・モードからデバッグ・モード遷移時に、パイプラインのインターロック信号を記憶素子に記憶させ、デバッグ・モードからユーザ・モードへの復帰時に、パイプライン・インターロック信号として、前記記憶素子に記憶されているパイプラインのインターロック信号を選択して用いることで、実行タイミングを再現するデバッグ装置が提供される。
【００５９】
本発明によれば、デバッグ時にパイプライン情報を退避し、再実行時にパイプライン情報を復帰させる構成としたため、ブレークポイント等によりプロセッサが停止しデバッガが介入しても、再実行時にプロセッサ内部の実行タイミングが再現され、クロック精度のデバッグを実現可能としている。本発明によれば、実行タイミング再現に必要な信号に限定して記憶素子と選択回路の構成を具備することで、上記効果を、小規模のハードウェアで低コストに実現できる。
【００６０】
本発明の実施の形態について、図面を参照して説明する。本発明はパイプラインのインターロック信号を記憶する記憶素子（１１２）と、記憶素子（１１２）の出力とインターロック信号（１１１）のいずれかを選択するマルチプレクサ（１１３）とを備え、デバッグ・モード遷移時にインターロック信号を記憶素子（１１２）に記録し、ユーザ・モード復帰時にマルチプレクサ（１１３）により記憶素子（１１２）の内容をインターロック信号として使い、タイミング情報を復元する。
【００６１】
本発明においては、プロセッサ・コアのデータ・パスと制御回路の扱いを分離し、パイプラインのインターロック情報をデバッグ・モード遷移時に退避し、ユーザ・モード復帰時に復元する機構を、制御回路にのみ付加する構成としたことで、少ない付加ハードウェアにてクロック精度でのデバッグを実現可能としてする。データ・パスの値は、既存のＩＣＥと同様に、デバッグ割り込みを利用して実レジスタから取得する。以下、実施例に即して説明する。
【００６２】
図１は、本発明の一実施例のプロセッサ・コアの構成を示す図である。プロセッサ・コア内部の回路は、データ・パス１２０と制御回路１２１に大別できる。データ・パス１２０はデータの演算を行う回路で、レジスタ・ファイル１０１や演算器１０２等から構成される。記憶素子や演算回路などが、取り扱うデータのビット幅分（例えば３２回）繰り返されるため、データ・パスの回路規模は大きい。
【００６３】
一方、制御回路１２１は、パイプライン分割されたデータ・パス１２０上を流れるデータを制御するためのタイミング信号を生成する。生成する信号は小ビット幅であるが、プロセッサ・コア全体の動作に大きな影響を及ぼすことが多い。ロード・インターロック信号１１１は、制御回路１２１が生成する信号の一つである。
【００６４】
本実施例では、パイプラインのタイミング情報を記憶するための記憶素子１１２と、その記憶素子１１２の出力と、パイプラインのタイミング情報を選択するマルチプレクサ１１３を設ける。
【００６５】
デバッグ・モード遷移時、デバッグ・モード・タイミング信号１１４の指示により記憶素子１１２にパイプラインのタイミング情報を記憶し、ユーザ・モード復帰時、ユーザ・モード復帰タイミング信号１１５の指示によりマルチプレクサ１１３を切り替え、記憶素子１１２に記憶したタイミング情報を復元して利用することで、クロック精度のタイミングを実現する。特に制限されないが、本実施例では、デバッグ・モード・タイミング信号１１４、ユーザ・モード復帰タイミング信号１１５は、ＩＣＥからのデバッグ割込信号４０６（図４）を受け取ったプロセッサコア４０１の制御回路１２１内で生成する。
【００６６】
以下、ロード・インターロックを例にとり、クロック精度のデバッグが行える様子を説明する。なお、図４のＩＣＥを用いてデバッグが行われるものとする。
【００６７】
本実施例では、本発明を、パイプラインのタイミング情報の一つであるロード・インターロックに適用するにあたり、ロード・インターロック信号１１１として、レジスタ番号一致検出信号１１６を利用している。このレジスタ番号一致検出信号１１６は、図５と同様、先行命令のディスティネーション・レジスタ番号１１０と、後続命令のソース・レジスタ番号１０８とが一致するかを比較回路１１７で判定し、一定している場合に、活性化される信号である。
【００６８】
すなわち、レジスタ番号一致検出信号１１６を記憶するための記憶素子１１２と、その記憶素子１１２の出力と、パイプラインのタイミング情報を選択するマルチプレクサ（選択回路）１１３を設ける。
【００６９】
デバッグ・モード遷移時、デバッグ・モード・タイミング１１４信号の指示により記憶素子１１２にレジスタ番号一致検出信号１１６を記憶し、ユーザ・モード復帰時、ユーザ・モード復帰タイミング信号１１５の指示により、マルチプレクサ１１３における入力選択を切り替え、記憶素子１１２に記憶しておいたレジスタ番号一致検出信号１１６を、ロード・インターロック信号１１１として利用することで、クロック精度のタイミングを実現する。
【００７０】
図２は、本実施例において、ユーザ・モードからデバッグ・モードへ遷移するときのタイミング動作を示す図である。
【００７１】
ユーザ・プログラム（ユーザ・モード）において、ロード命令（Ｉｎｓｔ  ｕ１）とそのロード命令の結果を参照する演算命令（Ｉｎｓｔ  ｕ２）が連続して実行されるものとする。
【００７２】
ユーザ・プログラムの演算命令（Ｉｎｓｔ  ｕ２）に設定されたブレーク・ポイントが、時刻Ｔｄ１に、演算命令（Ｉｎｓｔ  ｕ２）のＩＦステージで検出され、デバッグ割り込みが発生し、ユーザ・プログラムの演算命令（Ｉｎｓｔ  ｕ２）の実行が中断され、デバッグ・モードに遷移する。すなわち、時刻Ｔｄ１において、演算命令（Ｉｎｓｔ  ｕ２）の命令フェッチ・アドレスがブレーク検出回路４０３（図４参照）により、ブレーク・ポイントの対象であると判定され、ブレーク検出回路４０３は時刻Ｔｄ１のサイクルにデバッグ割込信号４０６を活性状態とする。
【００７３】
デバッグ・モードへの切替時のＴｄ１にＩＤステージにあったユーザ・プログラムのロード命令（Ｉｎｓｔ  ｕ１）は、時刻Ｔｄ４のサイクルで実行を完了し、時刻Ｔｄ４から、デバッグ・モニタ・プログラムＩｎｓｔ  ｄ１、Ｉｎｓｔ  ｄ２、・・・が順次実行されるものとする。
【００７４】
デバッグ・モードにおいて、ユーザ・プログラムの演算命令（Ｉｎｓｔ  ｕ２）の演算結果を、ＷＢステージでレジスタ・ファイル１０１に書き込むことは抑止され、この演算命令（Ｉｎｓｔ  ｕ２）は、実質的にキャンセルされる。すなわち、時刻Ｔｄ４で活性化された無効化信号（ＥＸ）により、時刻Ｔｄ５での演算命令（Ｉｎｓｔ  ｕ２）のＷＢステージはキャンセルされる。
【００７５】
しかし、デバッグ・モードにおいて、演算命令（Ｉｎｓｔ  ｕ２）のＩＤステージ（時刻Ｔｄ０）でのレジスタ番号の比較回路１１７による一致検出は行われ、演算命令（Ｉｎｓｔ  ｕ２）が仮にキャンセルされなかった場合、ロード・インターロックが起きる状況であることが検出される。
【００７６】
この検出結果は、デバッグ・モード・タイミング信号１１４の指示により、記憶素子１１２に書き込まれる。図２に示す例では、時刻Ｔｄ１のサイクルにおけるデバッグ割込信号４０６の活性化に応答して、時刻Ｔｄ２のサイクルで、デバッグ・モード・タイミング信号１１４が活性化し、時刻Ｔｄ３のサイクルで、レジスタ番号一致検出信号１１６が記憶素子１１２に書き込まれる。
【００７７】
図３は、本発明の方法により、デバッグ・モードからユーザ・モードに復帰するときのタイミング動作を示す図である。
【００７８】
デバッグ・モードの最後の命令（通常、割り込み復帰命令）Ｉｎｓｔ  ｄｎに続き、ユーザ・モードの命令が、実行が未完了である演算命令（Ｉｎｓｔ  ｕ２）から開始される。
【００７９】
このとき、ユーザ・モード復帰タイミング信号１１５により、マルチプレクサ１１３を切り替え、ロード・インターロック信号として記憶素子１１２の内容を利用するため、演算命令（Ｉｎｓｔ  ｕ２）以降の命令の実行は１クロック遅れる。
【００８０】
例えば、命令（Ｉｎｓｔ  ｕ４）の実行開始時刻はＴｕ５となり、図６に示したブレークポイントが発生しない場合と一致する。
【００８１】
これは、ブレークポイントが発生し、ＩＣＥの介在があっても、その副作用なしに、タイミング情報が保存され、クロック精度のデバッグが行えることを示す。
【００８２】
以下、図１を用いて例示した以外の本発明の適用範囲について述べる。上記実施形態の説明では、信号の活性化状態が論理レベル１もしくは高い電圧レベルで、非活性化状態が論理レベル０もしくは低い電圧レベルで表されるとしてタイミング図などを示したが、活性化状態・非活性化状態と論理レベルや電圧レベルとの関連付けは、本発明の本質ではなく、本発明において、活性化状態や非活性化状態がどのような論理レベルや電圧レベルで表されていても適用できる。
【００８３】
また上記説実施例では、プロセッサ・コアの命令セットは、オペランドとして、ソース・レジスタ１個、ディスティネーション・レジスタ１個の２個を指定すると仮定した。しかし、ソース・レジスタ２個、ディスティネーション・レジスタ１個を指定できる３オペランド命令体系を持つプロセッサ・コアも存在する。その場合でも、各ソース・レジスタそれぞれについて、ディステイネーション・レジスタと比較し、ロード・インターロックを検出した結果の論理和を、記憶素子１１２とマルチプレクサ１１３に入力することで、本発明の効果が得られる。
【００８４】
さらに上記実施形態の説明では、５段パイプライン構成のプロセッサのロード・インターロックのタイミングを例に説明したが、説明した手法は、データ・パスと、インターロック機構を含むタイミング制御回路から成る回路に一般的に適用できる。
【００８５】
例えば、他のインターロック要因を持つプロセッサ・コア、パイプライン段数が異なるプロセッサ・コアでも同様に適用できる。
【００８６】
さらに、本発明は、データ・パスとタイミング生成部から成るほかのＳｏＣデバイス構成要素、例えば大抵のアクセラレータにも適用できる。通常、プロセッサ・コアのパイプラインがインターロックする原因は、ロード・インターロック以外にも複数あるが、すべてのインターロック信号について、同様の手法を適用することで、プロセッサ・コアがどのようなユーザ・プログラムを実行していて、ブレーク・ポイントで停止後、実行を再開したとき、プロセッサ・コアとアクセラレータの時刻をクロック精度で同期したままデバッグを継続できる。
【００８７】
上記実施例では、ＳｏＣデバイスの構成要素のうち、もっとも重要である、プロセッサ・コアを例に説明したが、本発明は、データ・パスとタイミング制御回路から成るほかの構成要素、例えば大抵のアクセラレータにも適用できる。すなわち本発明は、ＳｏＣデバイスの構成要素の大部分に適用可能であり、本発明によりクロック精度のエミュレーションとデバッグ機能の双方を、少ない付加ハードウェアで実現できる。
【００８８】
本発明をＳｏＣデバイス全体に適用すると、高精度のデバッグが行えるが、付加ハードウェア量が問題になる場合には、適用範囲を限定することもできる。例えば、プロセッサ・コアに、本発明を適用する場合、発生頻度の高いロード・インターロックに限定して本発明を適用し、発生頻度が低いインターロックは、外部アクセラレータ制御時に発生しないとみなして、本発明を適用しないようにすることも可能である。
【００８９】
このようにしてハードウェア量の増加を抑えつつ、厳密なタイミングが要求されるアクセラレータ制御に関しては、クロック精度のデバッグを実現することができる。
【００９０】
図４に示した典型的なＩＣＥの構成において、プロセッサ・コア４０１として、本発明を適用したプロセッサ・コアあるいはＳｏＣデバイスを利用することで、関連技術１において説明した問題の発生は回避され、ユーザ・プログラムをブレーク後に再実行したときでも、プロセッサ・コア内部やプロセッサ・コアとアクセラレータ間でクロック精度のタイミングが保たれる。このため、本発明によれば、クリティカルなタイミングで発生するバグを見つけやすいデバッグ装置を提供することができる。
【００９１】
また、関連技術２においては、汎用レジスタなど読み書きしたいプロセッサ内部の記憶素子すべてに対し、読み出しデータ、書き込みのためのクロックおよびデータを配線する必要があり、付加ハードウェアが多い、という問題があった。
【００９２】
これに対して、本発明によれば、汎用レジスタなどデータパス系の状態更新は、デバッグ・モード遷移前に完了しておき、デバッグ・モードでのレジスタ読み書きは、デバッガ・プログラムで行い、実行再開時に、インターロック情報という小容量の情報のみを復元することで、付加ハードウェア量を削減している。そのため、関連技術２では為し得なかった大規模回路のエミュレーションを実現することができる。
【００９３】
また、ハードウェア量の少なさから、コスト削減が要求される実デバイスでも、本発明のデバッグ装置を組み込めるため、実デバイスに対して、クロック精度デバッグを実現できる。
【００９４】
なお、上記の特許文献１−４、非特許文献１−５の各開示を、本書に引用をもって繰り込むものとする。本発明の全開示（請求の範囲を含む）の枠内において、さらにその基本的技術思想に基づいて、実施形態ないし実施例の変更・調整が可能である。また、本発明の請求の範囲の枠内において種々の開示要素の多様な組み合わせないし選択が可能である。すなわち、本発明は、請求の範囲を含む全開示、技術的思想にしたがって当業者であればなし得るであろう各種変形、修正を含むことは勿論である。
【符号の説明】
【００９５】
１０１  レジスタ・ファイル
１０２  演算器
１０３  アドレス
１０４  データメモリ
１０５  データ
１０６  バイパス経路
１０７  命令メモリ
１０８  ソース・レジスタ番号
１０９  オフセット
１１０  ディスティネーション・レジスタ番号
１１１  ロード・インターロック信号
１１２  記憶素子
１１３  マルチプレクサ
１１４  デバッグ・モード・タイミング
１１５  ユーザ・モード復帰タイミング
１１６  レジスタ番号一致検出信号
１１７  比較回路（一致検出回路）
１２０  データパス
１２１  制御回路
４０１  プロセッサ・コア
４０２  ＩＣＥ
４０３  ブレーク検出回路
４０４  デバッガ
４０５  プロセッサ状態
４０６  デバッグ割込信号
４０７  ＳｏＣデバイス
【図１】
2011086005.tif 000003
【図２】
2011086005.tif 000004
【図３】
2011086005.tif 000005
【図４】
2011086005.tif 000006
【図５】
2011086005.tif 000007
【図６】
2011086005.tif 000008
【図７】
2011086005.tif 000009
【図８】
2011086005.tif 000010