複数のCPUを含むマイクロプロセッサのシステムデバッグにおいては、デバッグ効率の向上のため、上記複数のCPUでデバッグ対象となるユーザプログラム(以下、ユーザプログラム)が実行されている場合において、所定のブレーク条件が成立した場合に、上記複数のCPUを同時にブレークさせる機能(同時ブレーク機能)や、上記ブレーク後に複数のCPUで再びユーザプログラムの実行が同時に開始される機能(同時実行機能)の搭載が望まれる。
上記同時ブレーク機能や同時実行機能は、ソフトウェアあるいはハードウェアにより実現することが考えられる。上記同時ブレーク機能や同時実行機能を、エミュレータに結合されたパーソナルコンピュータ上でソフトウェアにより実現する場合について本願発明者らが検討したところ、上記複数のCPU間で上記同時ブレークや同時実行に数ミリ秒のオーダーで時間差を生ずることが見いだされた。また、上記同時ブレーク機能や同時実行機能をエミュレータ上のハードウェアにより実現した場合には、上記複数のCPU間で上記同時ブレークや同時実行に数マイクロ秒のオーダーで時間差を生ずることが見出された。このような時間差は、複数のCPU間でブレーク機能がもしくは同時実行に移るまでに多数の命令の実行ずれを生じ、上記複数のCPU間で同期してデバッグ動作されているとは言い難い。命令の実行ずれが数命令以下であれば同期動作しているといって差し支えない。
上記特許文献3には、複数のCPUが協調して行う動作をデバッグする場合、ある条件でプロセッサを同時に停止させるなど、複数のCPU間でデバッグ動作を同期させることの必要性について記載されているものの、同時ブレークを可能とするための具体的な構成や、実際にどの程度の同時性が保証されるかは明らかにされていない。
ブレーク条件成立に応じて上記複数のCPUを選択的に、あるいは同時にブレークさせる必要があるが、上記特許文献3の記載技術によれば、条件成立によるブレークにおいて、ブレーク条件が成立したCPUが必ずブレークされてしまい、ブレーク条件が成立したCPUをブレークさせずに、それ以外のCPUをブレークさせることについては記載されていない。
上記特許文献3の記載技術によれば、何れかのCPUでブレーク条件が成立した場合に、先ずそのCPUがブレークされ、それがデバッグ回路で認識されてから別のCPUがブレークされるようになっており、条件が成立した観測対象のCPUを含めた任意の数のCPUを選択的に、あるいは複数同時にブレークさせることについては記載されていない。
上記特許文献3の記載技術によれば、何れかのCPUが外部要因によりブレークされ、それがデバッグ支援回路で認識されてから別のCPUがブレークされるようになっており、外部要因に応じて、複数のCPUを同時にブレークさせることについては記載されていない。
また、上記特許文献3の記載技術によれば、何れかのCPUがブレークされた後、ユーザプログラムの実行へ復帰する際の任意の数のCPUに対する実行の制御については記載されていない。
また、複数のCPUを含むマイクロプロセッサのシステムデバッグにおいて、デバッグ効率の向上のためには、上記複数のCPUの動作についてのトレース情報を円滑にトレースすることが重要とされる。これについて本願発明者が検討したところ、マイクロプロセッサのシステムデバッグにおいては、以下の理由により、円滑なトレースが困難とされることが見いだされた。
互いに周波数が異なる複数のクロック信号が用いられるマイクロプロセッサにおいては、CPUに供給されるクロック信号の周波数が最も高くされるため、デバッグ回路においては、上記CPUに供給されるクロック信号を用いてトレースすることにより、CPUバスやシステムバスの状態を漏れなくトレースすることができた。
しかしながら、複数のCPUを含むマイクロプロセッサのシステムデバッグにおいては、複数のCPU間の動作速度が異なったり、しかもシステムによってはその動作速度が動的に変更される場合もある。かかる場合において、トレース時におけるデバッグ回路のクロック信号の周波数を決定することができないため、円滑なトレースが困難とされる。
本発明の目的は、複数のCPUを含むデータ処理装置においてシステムデバッグの効率向上を図るための技術を提供することにある。
本発明の別の目的は、複数のCPUを含むデータ処理装置において、ブレーク条件が成立した場合に任意のCPUを選択的にブレーク可能な技術を提供することにある。
本発明の別の目的は、複数のCPUを含むデータ処理装置において、ブレーク後にユーザプログラムを同時に実行させるための技術を提供する。
本発明の別の目的は、複数のCPUを含むデータ処理装置において、円滑なトレースを可能とするための技術を提供することにある。
本発明の前記並びにその他の目的と新規な特徴は本明細書の記述及び添付図面から明らかになるであろう。
本願において開示される発明のうち代表的なものの概要を簡単に説明すれば下記の通りである。
〔1〕すなわち、それぞれユーザプログラムの実行停止要求に応じてユーザプログラムの実行を停止させる停止制御手段と、ユーザプログラムの実行再開を許可または抑止させる再開制御手段とを有する複数のCPUと、上記複数のCPUで実行されるユーザプログラムのデバッグを可能とするデバッグ回路とを含むデータ処理装置において、上記デバッグ回路内に、上記複数のCPU分の上記再開制御手段に対しユーザプログラムの実行再開を同時に許可する同時実行モードを有する実行制御回路を設ける。
上記〔1〕記載の手段によれば、実行制御回路は、上記同時実行モードを有することから、ブレークされた状態からの復帰によるユーザプログラム実行のタイミング的なずれを上記複数のCPU間で最小限に抑えることができ、このことが、複数のCPUを含むデータ処理装置のシステムデバッグにおけるデバッグ効率向上を達成する。
〔2〕また、それぞれユーザプログラムの実行停止要求に応じてユーザプログラムの実行を停止させる停止制御手段と、ユーザプログラムの実行再開を許可または抑止させる再開制御手段を有する複数のCPUと、上記複数のCPUで実行されるユーザプログラムのデバッグを可能とするデバッグ回路とを含むデータ処理装置において、上記デバッグ回路内に、上記複数のCPUの何れかにおいてブレーク条件が成立した場合に、それに呼応して、上記複数のCPU分の上記停止制御手段に対しユーザプログラムの実行停止要求を同時に行う同時ブレークモードを有するブレーク制御回路と、上記複数のCPU分の上記再開制御手段に対しユーザプログラムの実行再開を同時に許可する同時実行モードを有する実行制御回路とを設ける。
上記〔2〕記載の手段によれば、ブレーク制御回路は、上記同時ブレークモードを有することから、上記複数のCPUの何れかにおいてブレーク条件が成立した後における上記複数のCPU間での命令実行のずれを最小限に抑えることができる。さらに、実行制御回路、同時実行モードを有することから、ブレークされた状態からの復帰によるユーザプログラム実行のタイミング的なずれを上記複数のCPU間で最小限に抑えることができる。このことが、複数のCPUを含むデータ処理装置のシステムデバッグにおけるデバッグ効率向上を達成する。
〔3〕このとき、外部端子数の増大を抑えるため、上記デバッグ回路は、上記複数のCPUで実行されるユーザプログラムのデバッグ結果を、共通の複数のデバッグ端子から外部出力するためのデバッグインタフェースを設けると良い。
〔4〕ユーザプログラムの構成によっては、複数のCPUの何れかを個別的にブレークしたい場合があり、かかる場合を考慮すれば、上記ブレーク制御回路において、上記複数のCPUの何れかにおいてブレーク条件が成立した場合に、それに呼応して上記複数のCPUの何れか一つを個別的又は何れか任意の数を個別的にブレーク可能な個別的ブレークモードを含めるのが良い。
〔5〕ユーザプログラムの構成によっては、ブレーク状態からの復帰によるユーザプログラム実行開始を上記CPU毎に個別的に制御したい場合があり、かかる場合を考慮すれば、上記実行制御回路には、ブレーク状態からの復帰によるユーザプログラム実行開始を上記CPU毎に個別的に制御可能な個別的実行モードを含めるのが良い。
〔6〕上記ブレーク制御回路は、所定のブレーク要因に応じてブレーク要求を形成するためのブレーク要求回路と、設定されたブレーク条件とブレーク要因に応じて上記ブレーク要求をマスクすることによって、上記複数のCPUの中からブレーク対象とされるCPUに対してのみユーザプログラムの実行停止を要求することが可能なブレーク要求マスク回路とを含んで構成することができる。
〔7〕上記ブレーク要求回路は、それぞれブレーク条件を設定可能な複数のブレーク条件レジスタを更に含み、上記ブレーク条件設定レジスタの設定条件に従って、対応するCPUに対するブレーク制御を行うように構成することができる。
〔8〕上記ブレーク条件レジスタは、観測対象となるCPUを設定可能な第1フィールドと、上記第1フィールドに設定されたCPUについてのブレーク条件を設定可能な第2フィールドとを含んで構成することができる。
〔9〕上記ブレーク制御回路は、上記複数のブレーク条件の組み合わせによるシーケンシャルブレークの条件を設定可能とするシーケンシャルブレーク条件レジスタを更に含み、上記シーケンシャルブレーク条件レジスタの設定情報に基づいてブレーク条件を判定して、対応するCPUに対してユーザプログラムの実行停止を要求することが可能となるように構成することができる。
〔10〕上記デバッグインタフェースは、上記複数のデバッグ端子からの入力を受けて、複数のCPUに対して個別的にリセット要求を行うことを可能とするリセット制御回路を含んで構成することができる。それによれば、上記デバッグインタフェースは、個別的に複数のCPUに対してリセット要求を制御する機能を有することから、上記複数のCPUの中から任意の数のCPUの状態をリセットすることができる。
〔11〕上記デバッグインタフェースは、上記複数のデバッグ端子からの入力を受けて設定可能な、複数のCPUにしてリセット要求の制御を行うためのリセット制御レジスタを含み、上記リセット信号制御レジスタの設定値に従って、複数のCPUそれぞれに対して個別的にリセット要求を行うことを可能となるよう構成することができる。
〔12〕上記実行制御回路は、上記同時実行モードと上記個別的実行モードの制御を可能とする同時実行制御レジスタを含み、同時実行制御レジスタの設定と上記複数のCPUの状態に従って、それぞれのCPUに対してユーザプログラムの実行再開を要求する制御信号生成回路を含んで構成することができる。
〔13〕上記同時実行制御回路は、上記複数のCPUの状態として、ブレーク状態か否かを参照することで構成することができる。
〔14〕上記同時実行制御回路は、上記複数のCPUの状態として、ブレークからの復帰命令を実行中か否かを参照することで構成することができる。
〔15〕それぞれ供給されたCPU用クロック信号に同期動作する複数のCPUと、供給されたデバッグ用クロック信号に基づいて、上記複数のCPUで実行されるユーザプログラムのデバッグを可能とするデバッグ回路とを含むデータ処理装置において、上記デバッグ回路に供給されるデバッグ用クロック信号の周波数をf1とし、上記複数のCPUに供給されるCPU用クロック信号の中で最も高い周波数をf2とするとき、f1≧f2が成立するように上記デバッグ用クロック信号及び上記CPU用クロック信号を形成するためのクロック制御回路を設ける。
〔16〕第1CPU用クロック信号に同期動作する第1CPUと、上記第1CPUクロック信号とは異なる第2CPU用クロック信号に同期動作する第2CPUと、デバッグ用クロック信号に基づいて、上記第1CPU及び上記第2CPUで実行されるユーザプログラムのデバッグを可能とするデバッグ回路とを含んでデータ処理装置を構成する。その場合において、上記デバッグ用クロック信号の周波数をf1とし、上記第1CPU用クロック信号及び上記第2CPU用クロック信号のいずれか高い方の周波数をf2とするとき、f1≧f2が成立するように上記デバッグ用クロック信号及び上記CPU用クロック信号を形成するためのクロック制御回路を設ける。
上記〔15〕,〔16〕記載の手段によれば、クロック制御回路は、f1≧f2が成立するように上記デバッグ用クロック信号及び上記CPU用クロック信号を形成する。このことが、円滑なトレースを可能とし、複数のCPUを含むデータ処理装置においてシステムデバッグの効率向上を達成する。
〔17〕このとき上記デバッグ回路は、上記第1CPU用クロック信号に同期して上記第1CPUについてのトレース情報を取り込むための第1トレース情報入力部と、上記第2CPU用クロック信号に同期して上記第2CPUについてのトレース情報を取り込むための第2トレース情報入力部と、上記第1トレース情報入力部を介して取り込まれたトレース情報を上記デバッグ用クロック信号に同期化するための第1同期化部と、上記第2トレース情報入力部を介して取り込まれたトレース情報を上記デバッグ用クロック信号に同期化するための第2同期化部と、上記デバッグ用クロック信号に基づいて、上記第1同期化部の出力情報と上記第2同期化部の出力情報とを、予め設定された条件に従って選択的に取り込むためのトレース情報処理部とを含んで構成することができる。
〔18〕上記デバッグ回路は、上記トレース情報処理部によって選択的に取り込まれた情報を、上記デバッグ用クロック信号に基づいて、所定の記憶領域に格納可能なトレースメモリを含んで構成することができる。
〔19〕大量のトレース情報の外部出力を可能とするには、上記デバッグ回路に、上記デバッグ用クロック信号に基づいて、上記トレース情報処理部の処理結果を外部出力するためのトレース情報出力部を設けると良い。
〔20〕上記〔19〕において、上記トレース情報出力部から出力される情報が上記第1CPUについてのトレース情報であるのか、あるいは上記第2CPUについてのトレース情報であるのかを明確にするため、上記トレース情報出力部から出力される情報には、上記第1CPUについてのトレース情報と、上記第2CPUについてのトレース情報との識別を可能とする識別情報を含めると良い。
〔21〕上記クロック制御回路は、基準クロック信号に同期した内部クロック信号を生成するためのクロック生成器と、上記クロック生成器で生成された内部クロック信号を分周するためのクロック分周器と、上記クロック分周器の出力信号に基づいて負荷を駆動するためのクロックドライバとを含んで構成することができ、その場合において上記クロックドライバには、デバッグが行われる期間にのみ、上記デバッグ用クロック信号を外部出力するための論理ゲートを含めることができる。
〔22〕上記クロック制御回路は、入力された基準クロック信号に同期した内部クロック信号を生成するためのクロック生成器と、上記クロック生成器で生成された内部クロック信号を分周するためのクロック分周器と、上記クロック分周器の出力信号に基づいて負荷を駆動するためのクロックドライバとを含んで構成することができる。その場合において上記クロック分周器は、それぞれ互いに分周比が異なる複数の分周クロック信号を出力する分周器と、第1分周比情報に従って上記複数の分周クロック信号から対応する分周クロック信号を選択してそれを上記第1CPUクロック信号として出力する第1マルチプレクサと、第2分周情報に従って上記複数の分周クロック信号から対応する分周クロック信号を選択してそれを上記第2CPUクロック信号として出力する第2マルチプレクサと、上記第1分周比情報と上記第2分周比情報とを比較して小さいほうの分周比情報を選択し、その分周比情報に従って上記複数の分周クロック信号から対応する分周クロック信号を選択してそれを上記デバッグ用クロック信号として出力する第3マルチプレクサとを含んで構成することができる。
〔23〕上記クロック制御回路は、入力された基準クロック信号に同期した内部クロック信号を生成するためのクロック生成器と、上記クロック生成器で生成された内部クロック信号を分周するためのクロック分周器と、上記クロック分周器の出力信号に基づいて負荷を駆動するためのクロックドライバとを含んで構成することができる。その場合において上記クロック分周器は、それぞれ互いに分周比が異なる複数の分周クロック信号を出力する分周器と、第1分周比情報に従って上記複数の分周クロック信号から対応する分周クロック信号を選択してそれを上記第1CPUクロック信号として出力する第1マルチプレクサと、第2分周情報に従って上記複数の分周クロック信号から対応する分周クロック信号を選択してそれを上記第2CPUクロック信号として出力する第2マルチプレクサとを含んで構成することができる。このとき、上記クロック生成器から上記クロック分周器に供給されるクロック信号を上記デバッグ用クロック信号として利用する。
本願において開示される発明のうち代表的なものによって得られる効果を簡単に説明すれば下記の通りである。
本願において開示される発明のうち代表的なものによって得られる効果を簡単に説明すれば下記の通りである。
すなわち、複数のCPUを含むデータ処理装置において、同時ブレークモードや、同時実行モードを設けることにより、システムデバッグの効率向上を達成することができる。
また、複数のCPUを含むデータ処理装置において、ブレーク条件が成立した場合に任意の数のCPUを選択的に、しかも選択された複数のCPUを同時にブレーク可能な技術を提供することができる。
さらに、複数のCPUを含むデータ処理装置において、ブレーク後に任意の数のCPUにおけるユーザプログラムを同時に実行させるための技術を提供することができる。
そして、複数のCPUを含むデータ処理装置において、円滑なトレースを可能とすることで、システムデバッグの効率向上を達成するための技術を提供することができる。
このように本発明によれば、複数のCPUを含むデータ処理装置において、同時ブレークモードや、同時実行モードが設けられることにより、又は円滑なトレースが可能とされることにより、システムデバッグの効率向上を達成することができる。
図1には、本発明にかかるデータ処理装置の一例とされるマイクロコンピュータが示される。
図1に示されるマイクロコンピュータ1は、第1CPU(CPU1)10、第2CPU(CPU2)11、デバッグ回路(DEBUG)2、各種周辺モジュール(MODL)12−1〜12−nを含み、特に制限されないが、公知の半導体集積回路製造技術により、単結晶シリコン基板などの一つの半導体基板に形成される。第1CPU10、第2CPU11、及び各種周辺モジュール12−1〜12−nは、システムバス13により互いに信号のやり取りが可能に結合される。デバッグ回路2は、上記システムバス13、上記第1CPU10及び上記第2CPU11に結合され、上記第1CPU10や上記第2CPU11で実行されるユーザプログラムのデバッグを可能とする。デバッグ回路2には、システムバス13のデータ(システムバスデータ)SYSB−DATAがデバッグ回路2に伝達される。デバッグ回路2と、第1CPU10との間では、デバッグのために必要とされる各種信号、すなわち、ユーザプログラムの実行再開を許可または抑止させるためのストール制御信号STL−CNT、ブレークからの復帰命令を実行中か否かというCPUの状態を表す復帰命令実行信号RTB−CNT、ブレーク状態か否かというCPUの状態を表すブレークアクノリッジ信号BRK−ACK、ユーザプログラムの実行停止要求のためのブレークリクエスト信号BRK−REQ、CPUバスデータCPUB−DATA、及びリセット要求のためのリセット信号RSTのやり取りが可能とされる。また同様に、デバッグ回路2と、第2CPU11との間では、デバッグのために必要とされる各種信号、すなわち、ストール制御信号STL−CNT、復帰命令実行信号RTB−CNT、ブレークアクノリッジ信号BRK−ACK、ブレークリクエスト信号BRK−REQ、CPUバスデータCPUB−DATA、及びリセット信号RSTのやり取りが可能とされる。
デバッグ回路2によりブレークリクエスト信号BRK−REQがアサートされることにより、第1CPU10や第2CPU11に対してブレーク(ユーザプログラムの実行停止)を要求することができる。第1CPU10又は第2CPU11によりブレークアクノリッジ信号BRK−ACKがアサートされることにより、デバッグ回路2は、第1CPU10や第2CPU11のブレーク状態を把握することができる。また、デバッグ回路2は、第1CPU10又は第2CPU11により復帰命令実行信号RTB−CNTがアサートされることにより、デバック回路2は、第1CPU10や第2CPU11においてブレーク状態に遷移することによりデバッグ処理が行われ、デバッグ処理が完了後に再度ユーザプログラムの実行を開始できる、つまりユーザプログラムへの復帰直前である状態を把握することが可能となる。デバッグ回路2によりストール制御信号STL−CNTがネゲートされることにより、第1CPU10や第2CPU11に対して、ブレークされた状態からの復帰によるユーザプログラム実行開始を指示することができる。デバッグ回路2は、CPUバスデータCPUB−DATAにより、第1CPU10や第2CPU11によって図示はされないがCPUバスに出力される各種情報を把握することができる。デバッグ回路2によってリセット信号RSTがアサートされることにより、第1CPU10や第2CPU11をリセットすることができる。上記第1CPU10で実行されるユーザプログラムのデバッグ結果や、上記第2CPU11で実行されるユーザプログラムのデバッグ結果は、デバッグ回路2により共通のデバッグ端子5を介してマイクロコンピュータ1の外部に出力される。
図2には、上記デバッグ回路2の構成例が示される。
上記デバッグ回路2は、特に制限されないが、図2に示されるようにデバッグインタフェース(DEBUGI/F)21、実行制御回路(PRC−CNT)22、及びブレーク制御回路(BRK−CNT)23を含んで成る。
実行制御回路22は、上記第1CPU10及び上記第2CPU11におけるユーザプログラム実行を制御する機能を有し、ブレーク状態からの復帰によるユーザプログラム実行開始タイミングが上記第1CPU10と上記第2CPU11との間で一致する同時実行モード(同時実行)と、ブレーク状態からの復帰によるユーザプログラム実行開始を上記CPU毎に個別的に制御可能な個別的実行モード(個別実行)とを含む。上記第1CPU10及び上記第2CPU11から伝達されたブレークアクノリッジ信号BRK−ACKが実行制御回路22に取り込まれる。実行制御回路22は、伝達されたブレークアクノリッジ信号BRK−ACKもしくは復帰命令実行信号RTB−CNTの何れかを参照することにより、対応するCPUの状態を検知し、それに基づいて複数のCPU分のアサートされていたストール制御信号STL−CNTを同一タイミングでネゲートする同時実行モードを有する。上記第1CPU10及び上記第2CPU11において、アサートされていたストール制御信号STL−CNTがネゲートされた場合、復帰命令RTBが実行されることによって復帰され、ユーザプログラムの実行が開始される。同時実行モードにおいては、複数のCPU分のアサートされていたストール制御信号STL−CNTが同一タイミングでネゲートされるため、上記第1CPU10と上記第2CPU11とで、ブレーク状態からの復帰によるユーザプログラムが同時実行される。ここで「同時実行」には、タイミング的に完全に一致している場合のみならず、数クロック分のずれを含むものと解されたい。同時実行モードと個別的実行モードとは、デバッグ効率を考慮して適宜に選択することができる。
上記ブレーク制御回路23は、CPUバスデータCPUB−DATAやブレークアクノリッジ信号BRK−ACKに基づいて上記第1CPU10及び上記第2CPU11に対するブレーク動作を制御する。このブレーク動作の制御には、上記第1CPU10及び上記第2CPU11の何れかにおいてブレーク条件が成立した場合に、それに呼応して上記第1CPU10及び上記第2CPU11に対して、ブレークリクエスト信号BRK−REQを同時にアサートする同時ブレークモードと、上記第1CPU10及び上記第2CPU11の何れかにおいてブレーク条件が成立した場合に、それに呼応して上記第1CPU10及び上記第2CPU11の何れかに対応するブレークリクエスト信号BRK−REQをアサートする個別的ブレークモードとを有する。この同時ブレークモードと個別的ブレークモードとは、デバッグ効率を考慮して適宜に選択することができる。この選択を可能にするには、ブレーク制御回路23内にブレーク条件設定レジスタを設け、このレジスタにブレークモードを設定するようにすれば良い。ここで、上記同時ブレークには、上記第1CPU10及び上記第2CPU11のブレークタイミングが完全に揃っている場合の他、数クロック分のずれがある場合をも含むものと解されたい。
図5には、上記実行制御回路(PRC−CNT)22の構成例が示される。
上記実行制御回路(PRC−CNT)22は、特に制限されないが、ストール制御信号生成回路221、及び同時実行制御レジスタ222を含んで成る。
ストール制御信号生成回路221は、ブレークアクノリッジ信号BRK−ACKに対応するCPUの状態を検知し、同時実行制御レジスタ222の設定に基づいて上記第1CPU10及び上記第2CPU11における復帰命令の実行を制御する。この復帰命令の実行制御には、上記第1CPU10及び上記第2CPU11に対応するストール制御信号STL−CNTをアサートしておき、上記第1CPU10及び上記第2CPU11に対応するブレークアクノリッジ信号BRK−ACKのアサートを検知して、上記第1CPU10及び上記第2CPU11に対応するストール制御信号STL−CNTを同時にネゲートする同時実行モードと、上記第1CPU10及び上記第2CPU11に対応するストール制御信号STL−CNTをネゲートした状態のまま保持し、復帰命令に到達した上記第1CPU10及び上記第2CPU11から個別的に復帰命令を実行する個別的実行モードとを有する。この同時実行モードと個別的実行モードとは、デバッグ効率を考慮して適宜に選択することができる。この選択を可能にするには、上記ブレーク条件設定レジスタにブレークモードを設定するようにすれば任意のモードで実行することが可能となる。
上記ストール制御信号生成回路221は、上記複数のCPUの状態を検知するための入力信号として、復帰命令の実行が完了したことを示すブレークアクノリッジ信号BRK−ACKを使用する。例えば、同時実行モードにおいて、デバッグ回路22の制御によるデバッグ処理後に、上記第1CPU10が先に復帰命令の実行に到達し、上記第2CPU11が後に復帰命令の実行に到達する場合、上記第1CPU10は対応するアサートされたストール制御信号STL−CNTを参照し復帰命令の実行をストールさせる。一方、上記第2CPU11は対応するアサートされたストール制御信号STL−CNTを参照せず復帰命令の実行を完了し、ブレークアクノリッジ信号BRK−ACKをアサートする。上記第2CPU11は対応するブレークアクノリッジ信号BRK−ACKのアサートにより、ストール制御信号生成回路221はストール制御信号STL−CNTを同時にネゲートする。上記第1CPU10は対応するストール制御信号STL−CNTを参照することによりネゲートされたことを検知し、復帰命令を実行する。ストール制御信号STL−CNTの参照は、例えば上記第1CPU10及び上記第2CPU11が同時実行制御レジスタ222を読み出す動作で実現する。また、上記第1CPU10及び上記第2CPU11は、デバッグ回路22から出力されるストール制御信号によってその状態を知ることができる。上記ストール制御信号生成回路221において、ブレークアクノリッジ信号BRK−ACKを使用して同時実行モードを実現する場合、上記第1CPU10及び上記第2CPU11における復帰命令の実行順序を事前に知る必要がある。
上記ストール制御信号生成回路221は、上記複数のCPUの状態を検知するための入力信号として、ブレークアクノリッジ信号BRK−ACKの代わりに復帰命令実行信号RTB−CNTを使用することができる。例えば、同時実行モードにおいて、上記第1CPU10と上記第2CPU11の復帰命令を同時に実行させる場合、上記第1CPU10と上記第2CPU11に対応する復帰命令実行信号RTB−CNTが全てアサートされることにより、ストール制御信号生成回路221はストール制御信号STL−CNTを同時にネゲートする。上記第1CPU10と上記第2CPU11は、対応するストール制御信号STL−CNTを参照することによりネゲートされたことを検知し、復帰命令を実行する。上記ストール制御信号生成回路221において、復帰命令実行信号RTB−CNTを使用して同時実行モードを実現する場合、上記第1CPU10及び上記第2CPU11における復帰命令の実行順序を事前に知る必要はない。復帰命令実行信号RTB−CNTは対応するCPUにおいて復帰命令の実行中にアサートされ、復帰命令の実行完了前でブレーク状態からの復帰を検知できる。このため、復帰命令実行信号RTB−CNTを使用した同時実行は、ブレークアクノリッジ信号BRK−ACKを使用した同時実行よりもクロックのずれを少なくできる。
同時実行制御レジスタ222は、同時実行モードと個別的実行モードの設定を可能にする。具体的には、上記第1CPU10及び上記第2CPU11とに対応するビットを複数設け、その論理値が“0”の場合には上記第1CPU10及び上記第2CPU11における復帰命令の実行は個別的実行モードに設定される。例えば上記第1CPU10に対応するビットの論理値が“0”の場合、上記第1CPU10での復帰命令と上記第2CPU11での復帰命令とは、個別的に実行される。これに対して、ビットの論理値が“1”の場合には上記第1CPU10及び上記第2CPU11における復帰命令の実行は同時実行モードに設定される。例えば上記第1CPU10に対応するビットの論理値が“1”の場合、上記第2CPU11での復帰命令の実行は上記第1CPU10での復帰命令と同時に実行するよう制御される。
上記同時実行制御レジスタ222は、1ビットの構成であってもよい。具体的には、同時実行制御レジスタが論理値“0”の場合には個別的実行モードが指定される。この場合、上記第1CPU10及び上記第2CPU11での復帰命令の実行は、対応するブレークアクノリッジ信号BRK−ACKもしくは復帰命令実行信号RTB−CNTに応じて、個別的に実行される。これに対して、同時実行制御レジスタが論理値“1”の場合には同時実行モードが指定される。上記第1CPU10及び上記第2CPU11に対して、アサートされたストール制御信号STL−CNTを同時にネゲートすることにより、復帰命令が上記第1CPU10と上記第2CPU11とで同時に実行される。
図6には、上記ブレーク制御回路23の構成例が示される。
上記ブレーク制御回路23は、特に制限されないが、図6に示されるようにプログラム要因ブレーク要求回路(PRG−BRK−REQ)230、外部要因ブレーク要求回路(EXT−BRK−REQ)231、条件成立ブレーク要求回路(CON−BRK−REQ)232、ブレーク要求マスク回路233,234を含んで成る。
プログラム要因ブレーク要求回路230は、例えばユーザプログラムの実行において、所定のブレーク命令が実行された場合に、ブレークアクノリッジ信号BRK−ACKを第1CPU10又は第2CPU11より取り込み、それに基づいてブレーク要求信号235をアサートする。つまり、ブレークアクノリッジ信号BRK−ACKによってCPUのブレーク状態を把握し、それに従って他のCPUをブレークさせるためのブレーク要求信号235をアサートする。このブレーク要求信号235は、後段のブレーク要求マスク回路233,234に伝達される。
上記外部要因ブレーク要求回路231は、図示しない外部端子を介してこのマイクロコンピュータ1の外部から与えられたブレーク要因に基づいてブレーク要求信号236をアサートする。このブレーク要求信号236は、後段のブレーク要求マスク回路233,234に伝達される。条件成立ブレーク要求回路(CON−BRK−REQ)232は、各CPUのCPUバスデータCPUB−DATAおよびシステムバスデータSYSB−DATAをモニタして、このCPUバスデータCPUB−DATAが、予め設定されたブレーク条件と一致した場合にブレーク要求信号237をアサートする。このブレーク要求信号237は、後段のブレーク要求マスク回路233,234に伝達される。
ブレーク要求マスク回路233,234は、上記CPU10,11に対応して配置され、設定されたブレークモードに応じて上記ブレーク要求信号235,236,237をマスクすることによって、ブレーク対象とされるCPUに対してのみ、ブレークリクエスト信号BRK−REQをアサートする。
ブレーク要求マスク回路233は、第1CPU10に対するブレークリクエスト信号BRK−REQをアサートし、ブレーク要求マスク回路234は、第2CPU11対するブレークリクエスト信号BRK−REQをアサートする。ブレーク要求マスク回路233,234は、互いに同一構成とされる。例えばブレーク要求マスク回路233は、図7に示されるように、プログラム要因ブレーク要求マスク部(PRG−BRK−REQ−MSK)30−1、外部要因ブレーク要求マスク部(EXT−BRK−REQ−MSK)30−2、条件成立ブレーク要求マスク部(CON−BRK−REQ)30−3、及びそれら出力のオア論理を得るオアゲート32を含んで成る。プログラム要因ブレーク要求マスク部30−1、外部要因ブレーク要求マスク部30−2、及び条件成立ブレーク要求マスク部30−3は、それぞれ図6に示されるブレーク要求マスク回路233、234に対応しており、伝達されたブレーク要求信号235、236、237のマスク処理を行う。すなわち、プログラム要因ブレーク要求マスク部30−1は、マスクレジスタ(MSK−PRG)31−1を含み、このマスクレジスタ31−1の設定情報に従ってブレーク要求信号235のマスク処理を行う。外部要因ブレーク要求マスク部30−2は、マスクレジスタ(MSK−PRG)31−2を含み、このマスクレジスタ31−2の設定情報に従ってブレーク要求信号236のマスク処理を行う。条件成立ブレーク要求マスク部30−2は、マスクレジスタ(MSK−PRG)31−3を含み、このマスクレジスタ31−3の設定情報に従ってブレーク要求信号237のマスク処理を行う。例えば、マスクレジスタ31−1,31−2,31−3に論理値“1”が設定されている場合には、対応するブレーク要求信号235、236、237がマスクされずにそのまま出力され、オアゲート32でオア論理が得られる。それに対してマスクレジスタ31−1,31−2,31−3に論理値“0”が設定されている場合には、対応するブレーク要求信号235、236、237がマスクされる。マスクされた場合、それに対応する出力信号は、論理値“0”に固定される。このようなマスク処理により、ブレーク要因が第1CPU10及び第2CPU11の何れにあるかにかかわらず、任意のCPU10,11に対してブレークリクエスト信号BRK−REQをアサートすることができる。例えば、ブレーク要求マスク回路233でブレーク要求信号235,236,237がマスクされる場合には、第1CPU10に対するブレークリクエスト信号BRK−REQはアサートされなくなる。また、ブレーク要求マスク回路234でブレーク要求信号235,236,237がマスクされる場合には、第2CPU11に対するブレークリクエスト信号BRK−REQはアサートされなくなる。一方、ブレーク要求マスク回路233,234の何れにおいてもブレーク要求信号235,236,237がマスクされない場合には、ブレーク要因が第1CPU10及び第2CPU11の何れにあるかにかかわらず、第1CPU10及び第2CPU11の双方に対してブレークリクエスト信号BRK−REQがアサートされることにより、同時ブレークが可能とされる。
図8には、図6における条件成立ブレーク要求回路(CON−BRK−REQ)232の構成例が示される。
条件成立ブレーク要求回路232は、特に制限されないが、図8に示されるように複数の条件一致判定回路(CND−JUD)25−1,25−2,…,25−n(nは自然数)と、シーケンシャルブレーク判定回路27とを含んで成る。複数の条件一致判定回路25−1,25−2,…,25−nは、それぞれブレーク条件レジスタ(BRK−CND−REG)26−2,26−2,…,26−nを含み、第1CPU10及び第2CPU11からのCPUバスデータCPUB−DATAが上記ブレーク条件レジスタ26−2,26−2,…,26−nの設定情報に一致した場合に、対応する条件一致フラグCNDM−FLGをアサートする機能を有する。上記ブレーク条件レジスタ26−1,26−2,…,26−nは、例えば図9に示されるように、CPU選択フィールド310と、バス状態選択フィールド320とを含む。上記CPU選択フィールド310には、ブレーク条件一致判定の対象となる2ビットのCPU識別情報が設定される。このCPU識別情報は、例えばブレーク条件一致判定の対象が第1CPU10のみの場合は“01”とされ、ブレーク条件一致判定の対象が第2CPU11のみの場合は“10”とされ、ブレーク条件一致判定の対象が第1CPU10及び第2CPU11の双方の場合は“11”とされる。上記バス状態選択フィールド320には、コンペア条件(ブレーク条件)が設定される。コンペア条件としては、特に制限されないが、バス指定、アドレス、コマンド、データ、バスサイクルなどが含まれる。また、上記ブレーク条件レジスタを複数有することにより、複数のコンペア条件(ブレーク条件)を設定することが可能となり、一つのシステムデバッグ設定によって多数のコンペア条件を設定でき、デバッグ効率を向上することが可能となる。
シーケンシャルブレーク判定回路27は、上記複数の条件一致判定回路25−1,26−2,…,25−nからの条件一致フラグCNDM−FLGを取り込んで、シーケンシャルブレーク条件が成立したか否かを判定し、当該ブレーク条件が成立した場合にシーケンシャルブレーク条件一致フラグSCNDM−FLGをアサートする。シーケンシャルブレーク条件は、複数ブレーク条件の組み合わせとされ、各ブレーク条件の一致が一定の順序に従って成立した場合に一致したとみなされる。シーケンシャルブレーク条件は、シーケンシャルブレーク判定回路27内のシーケンシャルブレーク条件レジスタ28に設定され、シーケンシャルブレーク判定回路27は、このシーケンシャルブレーク条件レジスタ28に設定情報に基づいて、シーケンシャルに起こり得るブレーク条件が成立したか否かを判定する。例えば、条件一致判定回路25−2でブレーク条件が成立した後に、条件一致判定回路25−1でブレーク条件が成立した場合が、シーケンシャルブレーク条件として、シーケンシャルブレーク条件レジスタ28に設定されたとき、当該条件が成立した場合にシーケンシャルブレーク条件一致フラグSCNDM−FLGがアサートされる。このようなシーケンシャルブレークにより、条件一致判定回路25−1〜25−nでのブレーク条件判定に加えて、より高度なブレーク条件判定が可能とされる。
図3には、上記デバッグインタフェース回路21の構成例が示される。
上記デバッグインタフェース回路21は、特に制限されないが、図3に示されるようにJTAG(Joint Test Action Group)制御部(JTAG−CNT)211、及び制御回路(CNTR)212を含んで成る。
上記JTAG制御部211は、バイパスレジスタ(SDBPR)51、シフトレジスタ(S−REG)53、マルチプレクサ(MUX)52、及びTAP(Test Access Port)制御回路(TAP−CNT)54を含んで成り、上記共通の複数のデバッグテスト端子5を介して、このマイクロコンピュータ1の外部との間で、JTAG所定の信号であるテスト入力データ信号TDI、テスト出力データ信号TDO、クロック信号TCK、テスト制御信号TMS、リセット信号/TRSTのやり取りが可能とされる。TAP制御回路(TAP−CNT)54の制御により、IEEE準拠の内部制御スキャン方式(JTAGスキャン方式)を用いて、TDIより入力される値を制御のためのコマンド又はデータと解釈し、デバッグ情報の外部出力が可能とされる。
上記制御回路212は、上記JTAG制御部211内のシフトレジスタ53に結合されることで、上記JTAG制御部211との間でデータのやり取りが可能とされ、実行制御回路22やブレーク制御回路23との間で、制御信号やデータなどの各種信号CNTのやり取りが可能とされる。上記制御回路212は、リセット制御のためのリセット制御レジスタ(RST−CNT−REG)55を含む。
上記制御回路212は、上記リセット制御レジスタ55の設定情報に従って、上記第1CPU10及び第2CPU11をリセットするためのリセット信号RSTを形成する。上記リセットレジスタ55は、上記第1CPU10及び第2CPU11に1対1で対応するビットを含む。この制御回路212は、上記第1CPU10及び第2CPU11に対応するビットに論理値“1”を設定することにより上記第1CPU10及び第2CPU11に対するリセット信号RSTをアサートし、上記第1CPU10及び第2CPU11に対応するビットに論理値“0”を設定することにより上記第1CPU10及び第2CPU11に対するリセット信号RSTをネゲートする個別的リセットモードを有する。また、この制御回路212は、上記第1CPU10と第2CPU11とに対応するリセット信号RSTを同時にアサートしその後ネゲートする同時リセットモードを有する。この個別的リセットモードと同時リセットモードとは、デバッグ効率を考慮して適宜に選択することができる。
図4には、上記デバッグインタフェース回路21の別の構成例が示される。
図4に示される構成が図3に示されるのと大きく相違するのは、リセット制御回路(RST−CNT)213が設けられ、それに伴い、制御回路212内のリセット制御レジスタ55が省略されている点である。
上記制御回路212は、上記JTAG制御部211内のシフトレジスタ53に結合されることで、上記JTAG制御部211との間でデータのやり取りが可能とされ、実行制御回路22やブレーク制御回路23との間で、制御信号やデータなどの各種信号CNTのやり取りが可能とされる。リセット制御回路(RST−CNT)213は、上記JTAG制御部211内のシフトレジスタ53とTAP制御回路(TAP−CNT)54とに結合されることで、TDIより入力されるリセット用のコマンドを解釈し、上記第1CPU10及び上記第2CPU11をリセットするためのリセット信号RSTを個別的にアサート又はネゲートする個別的リセットモードを有する。また、このリセット制御回路213は、上記第1CPU10と第2CPU11とに対応するリセット信号RSTを同時にアサートし、その後ネゲートする同時リセットモードを有する。この個別的リセットモードと同時リセットモードとは、デバッグ効率を考慮して適宜に選択することができる。
上記の例によれば、以下の作用効果を得ることができる。
(1)第1CPU10、第2CPU11の何れかにおいてブレーク条件が成立した場合に、それに呼応して上記CPU10,11を同時ブレーク可能な同時ブレークモードを有することから、上記第1CPU10、第2CPU11の何れかにおいてブレーク条件が成立した後における上記複数のCPU10,11間での命令実行のずれを最小限に抑えることができる。また、ブレーク状態からの復帰によるユーザプログラム実行開始タイミングが上記第1CPU10、第2CPU11間で一致可能な同時実行モードを有することから、ブレークされた状態からの復帰によるユーザプログラム実行のタイミング的なずれを上記CPU10,11間で最小限に抑えることができる。これにより、第1CPU10、第2CPU11を含むマイクロコンピュータ1のシステムデバッグにおけるデバッグ効率向上を達成することができる。
(2)ブレーク要求マスク回路233,234は、上記CPU10,11に対応して配置され、設定されたブレークモードに応じて上記ブレーク要求信号235,236,237をマスクすることによって、ブレーク対象とされるCPUに対してのみ、ブレークリクエスト信号BRK−REQがアサートされる。このようなマスク処理により、ブレーク要因が第1CPU10及び第2CPU11の何れにあるかにかかわらず、任意のCPU10,11に対してブレークリクエスト信号BRK−REQをアサートすることができる。
(3)シーケンシャルブレーク判定回路27は、上記複数の条件一致判定回路25−1,25−2,…,25−nからの条件一致フラグCNDM−FLGを取り込んで、シーケンシャルブレーク条件が成立したか否かを判定し、当該ブレーク条件が成立した場合にシーケンシャルブレーク条件一致フラグSCNDM−FLGをアサートする。このようなシーケンシャルブレークが行われる場合には、条件一致判定回路25−1〜25−nでのブレーク条件判定に加えて、より高度なブレーク条件判定が可能とされる。
(4)デバッグインタフェース21に含まれるリセット制御回路213は、個別的にリセット信号RSTをアサート又はネゲートする個別的リセットモードを有する。このような個別的リセットを適用すれば、あるユーザプログラムを実行している一方のCPUを動作させたまま、別のユーザプログラムを実行している他方のCPUをリセットすることが可能であるため、より詳細なCPUの制御が可能となり、デバッグ効率の向上を達成することができる。
図10には、本発明にかかるデータ処理装置の一例とされるマイクロコンピュータの別の構成例が示される。
図10に示されるマイクロコンピュータ1は、第1CPU100、第2CPU110、デバッグ回路(DEBUG)200、各種周辺モジュール(MODL)120−1〜120−n、DMAC(ダイレクト・メモリ・アクセス・コントローラ)140、及びクロックモジュール(CLK−MODL)300を含み、特に制限されないが、公知の半導体集積回路製造技術により、単結晶シリコン基板などの一つの半導体基板に形成される。第1CPU100、第2CPU110、DMAC140、デバッグ回路200、及び各種周辺モジュール120−1〜120−nは、システムバス130を介して結合される。上記第1CPU100、上記第2CPU110、及びDMAC140は、それぞれシステムバス130についてのバスマスタとされ、システムバス130のバス権を取得して各種データの転送制御を行うことができる。
デバッグ回路200は、上記システムバス130、上記第1CPU100及び上記第2CPU110に結合され、上記第1CPU100や上記第2CPU110で実行されるユーザプログラムのデバッグを可能とする。CPU100からデバッグ回路200に、分岐情報BRA−INF#0や、CPUバス情報BUS−INF#0が伝達される。デバッグ回路200とCPU100との間でデバッグアクセス情報ACC−INF#0のやり取りが可能とされる。CPU110からデバッグ回路200に、分岐情報BRA−INF#1や、CPUバス情報BUS−INF#1が伝達される。デバッグ回路200とCPU100との間でデバッグアクセス情報ACC−INF#1のやり取りが可能とされる。
クロックモジュールCLK−MODL300は、互いに周波数が異なる複数のクロック信号を形成する。複数のクロック信号には、デバッグ用クロック信号clkd、CPU用クロック信号clki0,clki1、及び周辺モジュール用クロック信号clkbが含まれる。デバッグ用クロック信号clkdは、デバッグ回路200に供給される。CPU用クロック信号clki0は、CPU100及びデバッグ回路200に供給される。CPU用クロック信号clki1は、CPU110及びデバッグ回路200に供給される。周辺モジュール用クロック信号clkbは、周辺モジュール120−1〜120−n、DMAC140、CPU100,110、及びデバッグ回路200に供給される。
上記第1CPU100で実行されるユーザプログラムのデバッグ結果や、上記第2CPU110で実行されるユーザプログラムのデバッグ結果は、デバッグ回路200から共通のデバッグ端子50を介してマイクロコンピュータ1の外部に出力することができる。また上記デバッグ結果のうちトレース情報については専用のトレース端子群60を介して外部出力可能とされる。
図11には、上記第1CPU100の構成例が示される。
上記第1CPU100は、特に制限されないが、CPUコア101、モジュール内メモリ102、及びバスブリッジ103を含み、それらがCPUバス104によって相互に信号のやり取り可能に結合されて成る。CPUバス104からCPUバス情報BUS−INF#0が取り出される。第1CPU100は、演算処理のための所定のプログラムを実行する。モジュール内メモリ102には、上記CPUコア101で実行されるプログラムが格納されたROM(リード・オンリー・メモリ)や、上記CPUコア101での演算処理における作業領域などとして使用されるRAM(ランダム・アクセス・メモリ)が含まれる。プログラム実行における分岐情報BRA−INF#0はCPUコア101から取り出される。CPUバス104とシステムバス130とはバスブリッジ103によって結合される。このバスブリッジ103からデバッグアクセス情報ACC−INF#0が取り出される。
尚、第2CPU110も、上記第1CPU100と同様に構成される。
図12には上記デバッグ回路200の構成例が示される。
上記デバッグ回路200は、特に制限されないが、デバッグインタフェース201、実行制御回路202、ブレーク制御回路203、デバッグアクセス回路204、第1トレース取得回路205、及び第2トレース取得回路207を含んで成る。
実行制御回路202は、デバッグの実行を制御する。ブレーク制御回路203は、予め設定されたブレーク条件に基づくブレーク動作の制御を行う。デバッグアクセス回路204は、上記システムバス130を介してデバッグアクセスを行う。上記バスブリッジ103にはデバッグアクセス情報ACC−INF#0用の信号線も接続される。これによって、デバッグ回路DEBUG200は、システムバス上のデバイスをアクセスすることができる。
上記デバッグインタフェース201は、デバッグ端子50、上記実行制御回路202、ブレーク制御回路203、及びデバッグアクセス回路204に結合され、外部との間でJTAG(Joint Test Action Group)仕様による所定信号のやり取りを可能とする。
上記第1トレース取得回路205及び上記第2トレース取得回路207は、システム内のバスの状態を監視し、所定の条件に一致した状態を取得する機能を有する。上記第1トレース取得回路205及び上記第2トレース取得回路207には、分岐情報BRA−INF#0,BRA−INF#1、CPUバス情報BUS−INF#0,BUS−INF#1等のトレース情報が取り込まれる。上記第1トレース取得回路205及び上記第2トレース取得回路207は、それぞれシステムバス130に結合され、このシステムバス130を介してトレースに関する各種制御情報などのやり取りが可能とされる。上記第1トレース取得回路205で取得されたトレース情報は、必要に応じてシステムバス130に出力することができる。第2トレース取得回路207は、トレース端子60に結合されており、このトレース端子60を介して、上記第2トレース取得回路207で取得されたトレース情報の外部出力が可能とされる。
図13には上記第1トレース取得回路205の構成例が示される。
上記第1トレース取得回路205は、トレース処理を行うトレース処理部205Aと、このトレース処理部205Aでのトレース処理を制御するトレース制御部205Bとを含む。上記トレース処理部205Aは、トレース情報入力部251〜253、同期化部255〜257、トレース情報処理部258、選択部259,260、同期化部261、及びトレースメモリ262を含む。
上記トレース情報入力部251は、CPU用クロック信号clki0に同期して分岐情報BRA−INF#0及びCPUバス情報BUS−INF#0を取り込む。取り込まれた情報は、後段の同期化部255に伝達され、ここでデバッグ用クロック信号clkdに同期化されてから後段のトレース情報処理部258に伝達される。
上記トレース情報入力部252は、CPU用クロック信号clki1に同期して分岐情報BRA−INF#1及びCPUバス情報BUS−INF#1を取り込む。取り込まれた情報は、後段の同期化部256に伝達され、ここでデバッグ用クロック信号clkdに同期化されてから後段のトレース情報処理部258に伝達される。
上記トレース情報入力部253は、周辺モジュール用クロック信号clkbに同期してシステムバス130におけるシステムバス情報SYS−INFを取り込む。取り込まれた情報は、後段の同期化部257に伝達され、ここでデバッグ用クロック信号clkdに同期化されてから後段のトレース情報処理部258に伝達される。
上記トレース情報処理部258は、上記同期化部255,256,257を介して伝達された情報を、トレース制御部205Bに予め設定された条件に従って選択的に取り込むための機能を有する。上記トレース情報処理部258の動作はデバッグ用クロック信号clkdに同期動作される。上記トレース情報処理部258によって選択的に取り込まれた情報は、選択部259,260に伝達される。
上記トレースメモリ262は、デバッグ用クロック信号clkdに同期動作され、上記選択部259を介して伝達された情報を格納するための第1格納領域263と、上記選択部260を介して伝達された情報を格納するための第2格納領域264とを有する。上記第1格納領域263に格納された情報は、選択部259、同期化部260、及びトレース制御部205Bを介してシステムバス130に伝達することができる。また、上記第2格納領域264に格納された情報は、選択部260、同期化部261、及びトレース制御部205Bを介してシステムバス130に伝達することができる。同期化部261は、トレース制御部205Bから伝達された情報をデバッグ用クロック信号clkdに同期化する機能と、選択部259,260を介して伝達された情報を周辺モジュール用クロック信号clkbに同期化する機能を有する。
上記トレース制御部205Bは、制御レジスタ254を含み、この制御レジスタ254に設定された情報に従って、上記トレース処理部205Aの動作が制御される。上記トレース制御部205Bは、周辺モジュール用クロック信号clkbに同期動作される。
図14には、上記トレースメモリ262に格納されるトレース情報のデータのフォーマットが示される。
分岐情報パケットBRA−PKTは、分岐種別フィールド、タイムスタンプフィールド、分岐先アドレスフィールド、及び分岐元データフィールドを含む。CPUバス情報パケットBUS−PKTは、CPUバスコマンドフィールド、タイムスタンプフィールド、CPUバスアドレスフィールド、及びCPUバスデータフィールドを含む。システムバス情報パケットSYS−PKTは、システムバスコマンドフィールド、タイムスタンプフィールド、システムバスアドレスフィールド、システムバスデータフィールドを含む。上記タイムスタンプは、パケットが生成された時刻を示すものであり、図示しないカウンタのカウント値が格納される。デバッグ回路200へ供給される分岐情報BRA−INF#0、BRA−INF#1より与えられた情報に基づき、分岐種別、分岐先アドレス、分岐元アドレスを含む上記分岐情報パケットBRA−PKTが構成される。CPUバス情報BUS−INF#0、BUS−INF#1より与えらた情報に基づき、CPUバスコマンド、CPUバスアドレス、CPUバスデータを含むCPUバス情報パケットBUS−PKTが構成される。システムバス情報SYS−INFより与えられた情報に基づき、システムバスコマンド、システムバスアドレス、システムバスデータを含む上記システムバス情報パケットSYS−PKTが構成される。
図15には、上記第2トレース取得回路207の構成例が示される。
上記第2トレース取得回路207は、トレース処理を行うトレース処理部207Aと、このトレース処理部207Aでのトレース処理を制御するトレース制御部207Bとを含む。上記トレース処理部207Aは、トレース情報入力部271〜273、同期化部275〜277、トレース情報処理部258、及びトレース情報出力部279を含む。
上記トレース情報入力部271は、CPU用クロック信号clki0に同期して分岐情報BRA−INF#0及びCPUバス情報BUS−INF#0を取り込む。取り込まれた情報は、後段の同期化部275に伝達され、ここでデバッグ用クロック信号clkdに同期化されてから後段のトレース情報処理部278に伝達される。
上記トレース情報入力部272は、CPU用クロック信号clki1に同期して分岐情報BRA−INF#1及びCPUバス情報BUS−INF#1を取り込む。取り込まれた情報は、後段の同期化部276に伝達され、ここでデバッグ用クロック信号clkdに同期化されてから後段のトレース情報処理部278に伝達される。
上記トレース情報入力部273は、周辺モジュール用クロック信号clkbに同期してシステムバス130におけるシステムバス情報SYS−INFを取り込む。取り込まれた情報は、後段の同期化部277に伝達され、ここでデバッグ用クロック信号clkdに同期化されてから後段のトレース情報処理部278に伝達される。
上記トレース情報処理部278は、上記同期化部275,276,277を介して伝達された情報を、トレース制御部207Bに予め設定された条件に従って選択的に取り込むための機能を有する。上記トレース情報処理部278の動作はデバッグ用クロック信号clkdに同期動作される。上記トレース情報処理部278によって選択的に取り込まれた情報は、トレース情報出力部280を介して外部出力可能とされる。このトレース情報出力部280は、FIFO(先入れ先出し)バッファ280を含み、このFIFOバッファ280に書き込まれた順に外部出力可能とされる。
上記トレース制御部207Bは、制御レジスタ274を含み、この制御レジスタ274に設定された情報に従って、上記トレース処理部207Aの動作が制御される。上記トレース制御部207Bは、周辺モジュール用クロック信号clkbに同期動作される。
図16には、上記トレース情報出力部279を介してマイクロコンピュータ1の外部へ出力されるトレース情報パケットのフォーマットが示される。
上記トレース情報出力部279を介して外部出力されるトレース情報パケットPKTのフォーマットは、図16に示されるように、コマンドフィールドCMD1,CMD2、及びデータフィールドDA0〜DA15を含む。コマンドフィールドCMD2は、コマンドフィールドCMD1で示されるコマンドの種類によってその有無が決定される。データフィールドDA0〜DA15は、コマンドフィールドCMD2の種類によってその有無が決定される。
例えばトレース情報パケットPKTの出力において、何も出力すべき情報がない場合は、CMD1にSTDBYコマンド(0000)を出力する。STDBYコマンドはCMD1だけで完了する。
例えば分岐トレース情報をトレース情報パケットPKTのフォーマットに従って出力する場合は、コマンドフィールドCMD1にBGCコマンド(0100)を出力する。BGCコマンドの場合、引き続いてコマンドフィールドCMD2を出力する。CMD2コマンドでは、その後に出力するデータフィールドの個数を示す。データフィールドDA0〜DA15には分岐元のアドレスと分岐先のアドレスが格納される。このデータフィールドは必要に応じて圧縮されている。このため、データフィールドの個数は一定ではない。圧縮方法の詳細は特に説明はしないが、例えば、分岐先アドレスを分岐元アドレスとの差分で表現する、などの方法がとられる。
ここで、トレース情報出力部279から出力されるトレース情報パケットPKTが、第1CPU100でのプログラム実行に係るものであるのか、第2CPU110でのプログラム実行に係るものであるのかの識別を可能にするため、MSIDコマンド(0010)が設けられている。MSIDコマンドは、トレース情報出力部279から次に出力されるCPUパケットのソースデータが第1CPU100に係るものであるのか、第2CPU110に係るものであるのかを示している。コマンドフィールドCMD1として出力されるMSIDコマンドの後にはコマンドフィールドCMD2が出力される。このCMD2は「CPUID」、すなわちデータの由来を示す。例えばCMD2が、「H’0」の場合には、第1CPU100とされ、CMD2が、「H’1」の場合には、第2CPU110とされる。従って、上記トレース情報出力部279から出力されたトレース情報の受信側においては、上記「MSID」により、トレース情報出力部279から次に出力されるCPUパケットのソースデータが第1CPU100に係るものであるのか、第2CPU110に係るものであるかの識別が可能とされる。
図17には、上記「MSID」パケットの出力条件が示される。
上記トレース情報出力部279から上記「MSID」パケットが出力されるには、複数のCPUをトレース対象としていること(条件A)が必要とされる。本例では、第1CPU100及び第2CPU110の双方がトレース対象としてトレース制御部207Bにおける制御レジスタ274に設定されていることが必要とされる。
また、上記トレース情報出力部279から次にCPUパケットを出力する予定であること(条件B)が必要とされる。
そして、上記トレース情報出力部279から次に出力予定のCPUパケットが、N×256個(Nはゼロ以上の整数)のデータパケット(制御パケットは含まない)を出力後、最初に出力するCPUパケットであること、又は次に出力予定のCPUパケットのデータソースが、最後に出力したCPUパケットのデータソースと異なることである。
以上の条件が満たされたとき、トレース情報出力部279から「MSID」パケットが出力される。
図18には、上記トレース情報出力部279からのトレース情報パケットPKTが出力される場合のタイミングが示される。
トレース制御部207Bによってトレース同期信号がローレベルとされた期間において、デバッグ用クロック信号clkdに同期してトレース情報パケットPKTが出力される。これは、コマンドフィールドCMD1にBGCコマンドを出力した後で、コマンドフィールドCMD2とデータフィールドDA0〜DA5を出力した例である。最初の4個のデータフィールドには16ビットの分岐先アドレス(DA3-0、DA7-4、DA11-8およびDA15-12)が格納され、次の2個のデータフィールドには8ビットの分岐元アドレス(SA3-0、SA7-4)が格納されている。
図19には、上記クロックモジュール300の構成例が示される。
上記クロックモジュール300は、特に制限されないが、クロック制御部301,高速クロック生成器303、クロック分周器304、クロックドライバ305を含んで成る。
上記高速クロック生成器303は、外部から与えられた基準クロック信号306に同期して、上記基準クロック信号306よりも周波数が高い高速クロック信号(内部クロック信号)PLL−CLKを生成する。この高速クロック生成器303は、例えばPLL(フェーズ・ロックド・ループ)によって形成される。上記上記高速クロック生成器303によって形成された高速クロック信号PLL−CLKは、後段のクロック分周器304で分周されることによって、互いに分周比が異なる複数の分周クロック信号div_clkd、div_clki0、div_clki1、div_clkbが形成される。この分周クロック信号は、例えば複数のうち一部は分周比が同じであってもよい。この複数の分周クロック信号は後段のクロックドライバ305に伝達される。クロックドライバ305は、入力された分周クロック信号div_clkd、div_clki0、div_clki1、div_clkbに基づいて負荷を駆動する。このクロックドライバ305からの出力クロック信号が、デバッグ用クロック信号clkd、CPU用クロック信号clki0,clki1、及び周辺モジュール用クロック信号clkbとされる。
上記クロック制御部301は、クロック制御レジスタ302を含み、このクロック制御レジスタ302に設定された情報に従って上記高速クロック生成器304、クロック分周器304、及びクロックドライバ305の動作を制御する。上記クロック制御レジスタ302は、システムバス130を介して第1CPU100又は第2CPU110によって書き換え可能とされる。
図20には、上記クロック分周器304の構成例が示される。
上記クロック分周器304は、特に制限されないが、高速クロック生成器303から出力されたクロック信号PLL−CLKを分周するための分周回路341、選択回路342〜345、最小選択回路350を含む。
上記分周器341の分周出力には、クロック信号PLL−CLKの1/1分周出力、1/2分周出力、1/4分周出力、1/8分周出力、1/16分周出力、1/32分周出力が含まれる。1/1分周出力はクロック信号PLL−CLKの周波数に等しく、1/2分周出力、1/4分周出力、1/8分周出力、1/16分周出力の順に周波数が低くなる。
上記選択回路342〜345は、それぞれマルチプレクサ(MUX)346〜349を含む。上記選択回路342に内蔵されるマルチプレクサ346は、CPU用クロック信号clki0に対応するclki0分周比情報に従って上記分周回路341の出力信号を選択することによってCPU用クロック信号clki0を出力する。上記選択回路343に内蔵されるマルチプレクサ347は、CPU用クロック信号clki1に対応するclki1分周比情報に従って上記分周回路341の出力信号を選択することによってCPU用クロック信号clki1を出力する。上記選択回路344に内蔵されるマルチプレクサ348は、周辺モジュール用クロック信号clkbに対応するclkb分周比情報に従って上記分周回路341の出力信号を選択することによって周辺モジュール用クロック信号clkbを出力する。周辺モジュール用クロック信号clkbは、CPU用クロック信号clki0,clki1の何れかの周波数と同じか、もしくはその何れかよりも周波数が低い。
上記最小選択回路350は、clki0分周比情報とclki1分周比情報とを比較して小さいほうの分周比情報を選択してマルチプレクサ349に供給する。これにより、マルチプレクサ349は、clki0分周比情報及びclki1分周比情報のうち小さいほうの分周比情報に従って上記分周回路341の出力信号を選択することによってデバッグ用クロック信号clkdを出力する。これにより、デバッグ用クロック信号clkdは、CPU用クロック信号clki0,clki1のうち、周波数の高い方のクロック信号の周波数に常に等しくされ、そのようなデバッグ用クロック信号clkdに基づいてデバッグが行われる。
図22には、クロック分周器304における主要部のクロック波形が示される。
本例においては、デバッグ用クロック信号clkdは、CPU用クロック信号clki1の周波数に等しくされている。
図23には、CPU用クロック信号の周波数が変更される場合が示される。
本例では、CPU用クロック信号clki0の周波数が時刻T1において変更される。誤動作防止のため、クロック周波数の変更は、最も周波数が低いクロック信号(本例の場合、clkb)の立ち上がりに同期して行われる。時刻T0から時刻T1までの間は、CPU用クロック信号clki0よりもCPU用クロック信号clki1の周波数が高いため、デバッグ用クロック信号clkdの周波数は、CPU用クロック信号clki1に等しくされている。しかし、時刻T1以降は、CPU用クロック信号clki1よりもCPU用クロック信号clki0の周波数が高いため、デバッグ用クロック信号clkdの周波数は、CPU用クロック信号clki0に等しくされている。周波数変更がある場合においても、上記最小選択回路350の制御及びその他の回路の制御によって、動的により高い周波数のCPUクロック信号がデバッグ用クロック信号clkdとして供給され、それに基づいてデバッグ回路は動作される。
このように複数のCPUを含むマイクロプロセッサのシステムデバッグにおいて、複数のCPU間の動作速度が異なる場合でも、デバッグ用クロック信号clkdは、CPU用クロック信号clki0,clki1のうち、高い方のクロック信号の周波数に常に等しくされることから、デバッグ回路200に供給されるデバッグ用クロック信号clkdが適切な周波数に設定される。これにより、円滑なトレースを行うことができる。
図21には、上記クロックドライバ305の構成例が示される。
上記クロックドライバ305は、特に制限されないが、上記クロック分周器304からの分周クロック信号div_clkd、div_clki0、div_clki1、div_clkbに対応する4個のアンドゲート(AND)351〜354を含む。アンドゲート351〜354からそれぞれCPU用クロック信号clki0,clki1、周辺モジュール用クロック信号clkb、及びデバッグ用クロック信号clkdが出力される。上記4個のアンドゲート351〜354における一方の入力端子には、対応する分周クロック信号div_clkd、div_clki0、div_clki1、div_clkbが伝達される、そして、上記アンドゲート351〜353における他方の入力端子には、クロック制御部301からドライバ制御情報clki0_en、clki1_en、clki0_enが伝達される。アンドゲート354における他方の入力端子には、クロック制御部301からデバッグモード信号が伝達される。このデバッグモード信号は、マイクロコンピュータ1がデバッグモードにされている期間のみ、ハイレベルにアサートされ、マイクロコンピュータ1の非デバッグモードにおいてはローレベルにネゲートされる。従って、デバッグ用クロック信号clkdは、マイクロコンピュータ1がデバッグモードにされている期間のみ形成され、マイクロコンピュータ1の非デバッグモードにおいては形成されない。これによりデバッグ回路200が動作するのは、マイクロコンピュータ1がデバッグモードにされている期間のみであり、マイクロコンピュータ1の非デバッグモードにおいては動作しないので、マイクロコンピュータ1の非デバッグモードにおける消費電流の低減を図ることができる。
上記例によれば、以下の作用効果を得ることができる。
(1)複数のCPUを含むマイクロプロセッサのシステムデバッグにおいて、複数のCPU間の動作速度が異なる場合でも、デバッグ用クロック信号clkdは、CPU用クロック信号clki0,clki1のうち、高い方のクロック信号の周波数に常に等しくされることから、デバッグ回路200に供給されるデバッグ用クロック信号clkdが適切な周波数に設定される。これにより、複数の何れのCPUが高速動作した場合においても、デバッグ回路は高速クロックが供給され、それに同期動作して円滑なトレースを行うことができる。
(2)アンドゲート354における他方の入力端子には、クロック制御部301からデバッグモード信号が伝達されるようにすることで、デバッグ用クロック信号clkdは、マイクロコンピュータ1がデバッグモードにされている期間のみ形成され、マイクロコンピュータ1の非デバッグモードにおいては形成されないようにできる。マイクロコンピュータ1の非デバッグモードにおいてデバッグ回路200を動作させないことにより、マイクロコンピュータ1の非デバッグモードにおける消費電流の低減を図ることができる。
以上本発明者によってなされた発明を具体的に説明したが、本発明はそれに限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。
例えば、上記の例では、CPUを2個搭載するマイクロコンピュータについて説明したが、CPUを3個以上搭載する場合には、それに応じてブレーク要求マスク回路(233,234)の数、同時実行制御レジスタ222のビット数、リセット制御レジスタ55のビット数などのを増やすことにより、容易に対応可能とされる。また、CPUは同一の半導体基板上に形成されていてもよいし、同一のパッケージ内に形成される複数の半導体基板上に形成される複数のCPUであってもよい。
例えば、一つの半導体基板上にCPUを3つ搭載する場合、1つのブレーク要求マスク回路(233、234)においてブレーク要求をマスクする設定をすると、選択的に2つのCPUを同時にブレークさせることができる。また、同時実行制御レジスタ222のビット数を3とし、そのうち2ビットを論理値“1”にセットすると、選択的に2つのCPUを同時に実行させることができる。さらに、リセット制御レジスタ55のビット数を3とし、そのうち2ビットを論理値“1”にセットした後、論理値“0”にクリアすることにより、選択的に2つのCPUを同時にリセットできる。
CPU用クロック信号clki0,clki1の周波数が、高速クロック生成器303の出力クロック信号PLL−CLKよりも高くなることは無いから、高速クロック生成器303の出力クロック信号PLL−CLKをそのままデバッグ用クロック信号clkdに用いるようにしても、上記の例の場合と同様の作用効果を得ることができる。尚、この場合、図20における選択回路345や最小選択回路350は不要とされる。
上記の例では、システムバスは、バス権を取得して各種データ転送制御を行うバスについて説明したが、例えば、複数のバスがあり、各バスが並列に動作可能であって、上記各バスに接続される複数のバスマスタが、アクセス対象となるデバイスが重ならない限り並列に動作可能なマルチレイヤバスであってもよいし、リクエストバスとレスポンスバスとを分離したスプリットトランザクションバスで構成されていてもよい。 以上の説明では主として本発明者によってなされた発明をその背景となった利用分野であるマイクロコンピュータに適用した場合について説明したが、複数のCPUを内蔵する各種データ処理装置に広く適用することができる。
本発明は、少なくともCPUを備えることを条件に適用することができる。