(57)【要約】【課題】複数のＣＰＵを含むデータ処理装置において、円滑なトレースを可能とするための技術を提供する。【解決手段】それぞれ供給されたＣＰＵ用クロック信号（ｃｌｋｉ０，ｃｌｋｉ１）に同期動作する複数のＣＰＵと、供給されたデバッグ用クロック信号（ｃｌｋｄ）に基づいて、上記複数のＣＰＵで実行されるユーザプログラムのデバッグを可能とするデバッグ回路（２００）とを含むデータ処理装置において、上記デバッグ回路に供給されるデバッグ用クロック信号の周波数をｆ１とし、上記複数のＣＰＵに供給されるＣＰＵ用クロック信号の中で最も高い周波数をｆ２とするとき、ｆ１≧ｆ２が成立するように上記デバッグ用クロック信号及び上記ＣＰＵ用クロック信号を形成するためのクロック制御回路（３００）を設ける。【選択図】図１９
2011081834.tif 000002
【特許請求の範囲】
【請求項１】
それぞれ供給されたＣＰＵ用クロック信号に同期動作する複数のＣＰＵと、
供給されたデバッグ用クロック信号に基づいて、上記複数のＣＰＵで実行されるユーザプログラムのデバッグを可能とするデバッグ回路と、を含むデータ処理装置であって、
上記デバッグ回路に供給されるデバッグ用クロック信号の周波数をｆ１とし、上記複数のＣＰＵに供給されるＣＰＵ用クロック信号の中で最も高い周波数をｆ２とするとき、ｆ１≧ｆ２が成立するように上記デバッグ用クロック信号及び上記ＣＰＵ用クロック信号を形成するためのクロック制御回路を含むことを特徴とするデータ処理装置。
【請求項２】
第１ＣＰＵ用クロック信号に同期動作する第１ＣＰＵと、
上記第１ＣＰＵクロック信号とは異なる第２ＣＰＵ用クロック信号に同期動作する第２ＣＰＵと、
デバッグ用クロック信号に基づいて、上記第１ＣＰＵ及び上記第２ＣＰＵで実行されるユーザプログラムのデバッグを可能とするデバッグ回路と、を含むデータ処理装置であって、
上記デバッグ用クロック信号の周波数をｆ１とし、上記第１ＣＰＵ用クロック信号及び上記第２ＣＰＵ用クロック信号のいずれか高い方の周波数をｆ２とするとき、ｆ１≧ｆ２が成立するように上記デバッグ用クロック信号及び上記ＣＰＵ用クロック信号を形成するためのクロック制御回路を含むことを特徴とするデータ処理装置。
【請求項３】
上記デバッグ回路は、上記第１ＣＰＵ用クロック信号に同期して上記第１ＣＰＵについてのトレース情報を取り込むための第１トレース情報入力部と、
上記第２ＣＰＵ用クロック信号に同期して上記第２ＣＰＵについてのトレース情報を取り込むための第２トレース情報入力部と、
上記第１トレース情報入力部を介して取り込まれたトレース情報を上記デバッグ用クロック信号に同期化するための第１同期化部と、
上記第２トレース情報入力部を介して取り込まれたトレース情報を上記デバッグ用クロック信号に同期化するための第２同期化部と、
上記デバッグ用クロック信号に基づいて、上記第１同期化部の出力情報と上記第２同期化部の出力情報とを、予め設定された条件に従って選択的に取り込むためのトレース情報処理部と、を含む請求項２記載のデータ処理装置。
【請求項４】
上記デバッグ回路は、上記トレース情報処理部によって選択的に取り込まれた情報を、上記デバッグ用クロック信号に基づいて、所定の記憶領域に格納可能なトレースメモリを含む請求項３記載のデータ処理装置。
【請求項５】
上記デバッグ回路は、上記デバッグ用クロック信号に基づいて、上記トレース情報処理部の処理結果を外部出力するためのトレース情報出力部を含む請求項３記載のデータ処理装置。
【請求項６】
上記トレース情報出力部から出力される情報には、上記第１ＣＰＵについてのトレース情報と、上記第２ＣＰＵについてのトレース情報との識別を可能とする識別情報が含まれる請求項５記載のデータ処理装置。
【請求項７】
上記クロック制御回路は、入力された基準クロック信号に同期した内部クロック信号を生成するためのクロック生成器と、
上記クロック生成器で生成された内部クロック信号を分周するためのクロック分周器と、
上記クロック分周器の出力信号に基づいて負荷を駆動するためのクロックドライバと、を含み、
上記クロックドライバは、デバッグが行われる期間にのみ、上記デバッグ用クロック信号を外部出力するための論理ゲートを含む請求項２乃至６の何れか１項記載のデータ処理装置。
【請求項８】
上記クロック制御回路は、入力された基準クロック信号に同期した内部クロック信号を生成するためのクロック生成器と、
上記クロック生成器で生成された内部クロック信号を分周するためのクロック分周器と、
上記クロック分周器の出力信号に基づいて負荷を駆動するためのクロックドライバと、を含み、
上記クロック分周器は、それぞれ互いに分周比が異なる複数の分周クロック信号を出力する分周器と、
第１分周比情報に従って上記複数の分周クロック信号から対応する分周クロック信号を選択してそれを上記第１ＣＰＵクロック信号として出力する第１マルチプレクサと、
第２分周情報に従って上記複数の分周クロック信号から対応する分周クロック信号を選択してそれを上記第２ＣＰＵクロック信号として出力する第２マルチプレクサと、
上記第１分周比情報と上記第２分周比情報とを比較して小さいほうの分周比情報を選択し、その分周比情報に従って上記複数の分周クロック信号から対応する分周クロック信号を選択してそれを上記デバッグ用クロック信号として出力する第３マルチプレクサと、を含んで成る請求項２乃至６の何れか１項記載のデータ処理装置。
【請求項９】
上記クロック制御回路は、入力された基準クロック信号に同期した内部クロック信号を生成するためのクロック生成器と、
上記クロック生成器で生成された内部クロック信号を分周するためのクロック分周器と、
上記クロック分周器の出力信号に基づいて負荷を駆動するためのクロックドライバと、を含み、
上記クロック分周器は、それぞれ互いに分周比が異なる複数の分周クロック信号を出力する分周器と、
第１分周比情報に従って上記複数の分周クロック信号から対応する分周クロック信号を選択してそれを上記第１ＣＰＵクロック信号として出力する第１マルチプレクサと、
第２分周情報に従って上記複数の分周クロック信号から対応する分周クロック信号を選択してそれを上記第２ＣＰＵクロック信号として出力する第２マルチプレクサと、を含み、
上記クロック生成器から上記クロック分周器に供給されるクロック信号を上記デバッグ用クロック信号として利用する請求項２乃至６の何れか１項記載のデータ処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のＣＰＵ（中央処理装置）を搭載するデータ処理装置、さらにはそれにおけるデバッグ技術に関し、例えばマイクロコンピュータに適用して有効な技術に関する。
【背景技術】
【０００２】
複数のＣＰＵを搭載するデータ処理装置の一例とされるマイクロコンピュータのデバッグ技術としては、例えば搭載されているプロセッサの個数と同数のデバッグ用端子群を設け、各端子群毎に、それぞれ対応するデバッグ装置を接続することにより、各プロセッサのデバッグを個別的に行う技術が知られている（例えば特許文献１の図４参照）。かかる構成においては、搭載されるＣＰＵの個数が増えると、それに応じてデバッグ用端子やデバッグ回路を追加する必要があるため、コストの上昇を余儀なくされる。
【０００３】
これに対して、搭載されている複数のＣＰＵによってデバッグ用端子を共有する技術が知られている（例えば特許文献１の図１、特許文献２の図１参照）。第１ＣＰＵのデバッグ回路と、第２ＣＰＵのデバッグ回路と、デバッグ用端子を共有するため、選択接続手段が設けられ、この選択接続手段によって、上記デバッグ用端子が、第１ＣＰＵのデバッグ回路と、第２ＣＰＵのデバッグ回路とに選択的に結合されるようになっている。この場合、ＣＰＵの個数が増えても、デバッグ用端子やデバッグ回路を追加する必要はない。しかしながら、第１ＣＰＵのデバッグ回路と第２ＣＰＵのデバッグ回路とは、接続されるＣＰＵを個別にデバッグ制御するように構成されているため第１ＣＰＵと第２ＣＰＵとの統合的なシステム動作の試験は困難とされる。
【０００４】
これに対して、マルチプロセッサ処理装置におけるプロセッサの個々の動作状態を保持して統合的なシステム全体の動作状態を保持するようにした技術が知られている（例えば特許文献３参照）。それによれば、ブレーク条件の成立やその他の要因で任意のプロセッサの動作状態が通常走行状態から試験走行状態に変化したことを検出すると、プロセッサの動作状態に応じてシステム状態が遷移される。このとき、必要に応じて、動作状態が変化しなかった他のプロセッサの動作状態が通常走行状態から試験走行状態に遷移され、動作状態が試験走行状態となっているものについての動作試験が制御される。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０００−７６１９９号公報
【特許文献２】特開２００４−１６４３６７号公報
【特許文献３】特開２００５−１２２３７５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
複数のＣＰＵを含むマイクロプロセッサのシステムデバッグにおいては、デバッグ効率の向上のため、上記複数のＣＰＵでデバッグ対象となるユーザプログラム（以下、ユーザプログラム）が実行されている場合において、所定のブレーク条件が成立した場合に、上記複数のＣＰＵを同時にブレークさせる機能（同時ブレーク機能）や、上記ブレーク後に複数のＣＰＵで再びユーザプログラムの実行が同時に開始される機能（同時実行機能）の搭載が望まれる。
【０００７】
上記同時ブレーク機能や同時実行機能は、ソフトウェアあるいはハードウェアにより実現することが考えられる。上記同時ブレーク機能や同時実行機能を、エミュレータに結合されたパーソナルコンピュータ上でソフトウェアにより実現する場合について本願発明者らが検討したところ、上記複数のＣＰＵ間で上記同時ブレークや同時実行に数ミリ秒のオーダーで時間差を生ずることが見いだされた。また、上記同時ブレーク機能や同時実行機能をエミュレータ上のハードウェアにより実現した場合には、上記複数のＣＰＵ間で上記同時ブレークや同時実行に数マイクロ秒のオーダーで時間差を生ずることが見出された。このような時間差は、複数のＣＰＵ間でブレーク機能がもしくは同時実行に移るまでに多数の命令の実行ずれを生じ、上記複数のＣＰＵ間で同期してデバッグ動作されているとは言い難い。命令の実行ずれが数命令以下であれば同期動作しているといって差し支えない。
【０００８】
上記特許文献３には、複数のＣＰＵが協調して行う動作をデバッグする場合、ある条件でプロセッサを同時に停止させるなど、複数のＣＰＵ間でデバッグ動作を同期させることの必要性について記載されているものの、同時ブレークを可能とするための具体的な構成や、実際にどの程度の同時性が保証されるかは明らかにされていない。
【０００９】
ブレーク条件成立に応じて上記複数のＣＰＵを選択的に、あるいは同時にブレークさせる必要があるが、上記特許文献３の記載技術によれば、条件成立によるブレークにおいて、ブレーク条件が成立したＣＰＵが必ずブレークされてしまい、ブレーク条件が成立したＣＰＵをブレークさせずに、それ以外のＣＰＵをブレークさせることについては記載されていない。
【００１０】
上記特許文献３の記載技術によれば、何れかのＣＰＵでブレーク条件が成立した場合に、先ずそのＣＰＵがブレークされ、それがデバッグ回路で認識されてから別のＣＰＵがブレークされるようになっており、条件が成立した観測対象のＣＰＵを含めた任意の数のＣＰＵを選択的に、あるいは複数同時にブレークさせることについては記載されていない。
【００１１】
上記特許文献３の記載技術によれば、何れかのＣＰＵが外部要因によりブレークされ、それがデバッグ支援回路で認識されてから別のＣＰＵがブレークされるようになっており、外部要因に応じて、複数のＣＰＵを同時にブレークさせることについては記載されていない。
【００１２】
また、上記特許文献３の記載技術によれば、何れかのＣＰＵがブレークされた後、ユーザプログラムの実行へ復帰する際の任意の数のＣＰＵに対する実行の制御については記載されていない。
【００１３】
また、複数のＣＰＵを含むマイクロプロセッサのシステムデバッグにおいて、デバッグ効率の向上のためには、上記複数のＣＰＵの動作についてのトレース情報を円滑にトレースすることが重要とされる。これについて本願発明者が検討したところ、マイクロプロセッサのシステムデバッグにおいては、以下の理由により、円滑なトレースが困難とされることが見いだされた。
【００１４】
互いに周波数が異なる複数のクロック信号が用いられるマイクロプロセッサにおいては、ＣＰＵに供給されるクロック信号の周波数が最も高くされるため、デバッグ回路においては、上記ＣＰＵに供給されるクロック信号を用いてトレースすることにより、ＣＰＵバスやシステムバスの状態を漏れなくトレースすることができた。
【００１５】
しかしながら、複数のＣＰＵを含むマイクロプロセッサのシステムデバッグにおいては、複数のＣＰＵ間の動作速度が異なったり、しかもシステムによってはその動作速度が動的に変更される場合もある。かかる場合において、トレース時におけるデバッグ回路のクロック信号の周波数を決定することができないため、円滑なトレースが困難とされる。
【００１６】
本発明の目的は、複数のＣＰＵを含むデータ処理装置においてシステムデバッグの効率向上を図るための技術を提供することにある。
【００１７】
本発明の別の目的は、複数のＣＰＵを含むデータ処理装置において、ブレーク条件が成立した場合に任意のＣＰＵを選択的にブレーク可能な技術を提供することにある。
【００１８】
本発明の別の目的は、複数のＣＰＵを含むデータ処理装置において、ブレーク後にユーザプログラムを同時に実行させるための技術を提供する。
【００１９】
本発明の別の目的は、複数のＣＰＵを含むデータ処理装置において、円滑なトレースを可能とするための技術を提供することにある。
【００２０】
本発明の前記並びにその他の目的と新規な特徴は本明細書の記述及び添付図面から明らかになるであろう。
【課題を解決するための手段】
【００２１】
本願において開示される発明のうち代表的なものの概要を簡単に説明すれば下記の通りである。
【００２２】
〔１〕すなわち、それぞれユーザプログラムの実行停止要求に応じてユーザプログラムの実行を停止させる停止制御手段と、ユーザプログラムの実行再開を許可または抑止させる再開制御手段とを有する複数のＣＰＵと、上記複数のＣＰＵで実行されるユーザプログラムのデバッグを可能とするデバッグ回路とを含むデータ処理装置において、上記デバッグ回路内に、上記複数のＣＰＵ分の上記再開制御手段に対しユーザプログラムの実行再開を同時に許可する同時実行モードを有する実行制御回路を設ける。
【００２３】
上記〔１〕記載の手段によれば、実行制御回路は、上記同時実行モードを有することから、ブレークされた状態からの復帰によるユーザプログラム実行のタイミング的なずれを上記複数のＣＰＵ間で最小限に抑えることができ、このことが、複数のＣＰＵを含むデータ処理装置のシステムデバッグにおけるデバッグ効率向上を達成する。
【００２４】
〔２〕また、それぞれユーザプログラムの実行停止要求に応じてユーザプログラムの実行を停止させる停止制御手段と、ユーザプログラムの実行再開を許可または抑止させる再開制御手段を有する複数のＣＰＵと、上記複数のＣＰＵで実行されるユーザプログラムのデバッグを可能とするデバッグ回路とを含むデータ処理装置において、上記デバッグ回路内に、上記複数のＣＰＵの何れかにおいてブレーク条件が成立した場合に、それに呼応して、上記複数のＣＰＵ分の上記停止制御手段に対しユーザプログラムの実行停止要求を同時に行う同時ブレークモードを有するブレーク制御回路と、上記複数のＣＰＵ分の上記再開制御手段に対しユーザプログラムの実行再開を同時に許可する同時実行モードを有する実行制御回路とを設ける。
【００２５】
上記〔２〕記載の手段によれば、ブレーク制御回路は、上記同時ブレークモードを有することから、上記複数のＣＰＵの何れかにおいてブレーク条件が成立した後における上記複数のＣＰＵ間での命令実行のずれを最小限に抑えることができる。さらに、実行制御回路、同時実行モードを有することから、ブレークされた状態からの復帰によるユーザプログラム実行のタイミング的なずれを上記複数のＣＰＵ間で最小限に抑えることができる。このことが、複数のＣＰＵを含むデータ処理装置のシステムデバッグにおけるデバッグ効率向上を達成する。
【００２６】
〔３〕このとき、外部端子数の増大を抑えるため、上記デバッグ回路は、上記複数のＣＰＵで実行されるユーザプログラムのデバッグ結果を、共通の複数のデバッグ端子から外部出力するためのデバッグインタフェースを設けると良い。
【００２７】
〔４〕ユーザプログラムの構成によっては、複数のＣＰＵの何れかを個別的にブレークしたい場合があり、かかる場合を考慮すれば、上記ブレーク制御回路において、上記複数のＣＰＵの何れかにおいてブレーク条件が成立した場合に、それに呼応して上記複数のＣＰＵの何れか一つを個別的又は何れか任意の数を個別的にブレーク可能な個別的ブレークモードを含めるのが良い。
【００２８】
〔５〕ユーザプログラムの構成によっては、ブレーク状態からの復帰によるユーザプログラム実行開始を上記ＣＰＵ毎に個別的に制御したい場合があり、かかる場合を考慮すれば、上記実行制御回路には、ブレーク状態からの復帰によるユーザプログラム実行開始を上記ＣＰＵ毎に個別的に制御可能な個別的実行モードを含めるのが良い。
【００２９】
〔６〕上記ブレーク制御回路は、所定のブレーク要因に応じてブレーク要求を形成するためのブレーク要求回路と、設定されたブレーク条件とブレーク要因に応じて上記ブレーク要求をマスクすることによって、上記複数のＣＰＵの中からブレーク対象とされるＣＰＵに対してのみユーザプログラムの実行停止を要求することが可能なブレーク要求マスク回路とを含んで構成することができる。
【００３０】
〔７〕上記ブレーク要求回路は、それぞれブレーク条件を設定可能な複数のブレーク条件レジスタを更に含み、上記ブレーク条件設定レジスタの設定条件に従って、対応するＣＰＵに対するブレーク制御を行うように構成することができる。
【００３１】
〔８〕上記ブレーク条件レジスタは、観測対象となるＣＰＵを設定可能な第１フィールドと、上記第１フィールドに設定されたＣＰＵについてのブレーク条件を設定可能な第２フィールドとを含んで構成することができる。
【００３２】
〔９〕上記ブレーク制御回路は、上記複数のブレーク条件の組み合わせによるシーケンシャルブレークの条件を設定可能とするシーケンシャルブレーク条件レジスタを更に含み、上記シーケンシャルブレーク条件レジスタの設定情報に基づいてブレーク条件を判定して、対応するＣＰＵに対してユーザプログラムの実行停止を要求することが可能となるように構成することができる。
【００３３】
〔１０〕上記デバッグインタフェースは、上記複数のデバッグ端子からの入力を受けて、複数のＣＰＵに対して個別的にリセット要求を行うことを可能とするリセット制御回路を含んで構成することができる。それによれば、上記デバッグインタフェースは、個別的に複数のＣＰＵに対してリセット要求を制御する機能を有することから、上記複数のＣＰＵの中から任意の数のＣＰＵの状態をリセットすることができる。
【００３４】
〔１１〕上記デバッグインタフェースは、上記複数のデバッグ端子からの入力を受けて設定可能な、複数のＣＰＵにしてリセット要求の制御を行うためのリセット制御レジスタを含み、上記リセット信号制御レジスタの設定値に従って、複数のＣＰＵそれぞれに対して個別的にリセット要求を行うことを可能となるよう構成することができる。
【００３５】
〔１２〕上記実行制御回路は、上記同時実行モードと上記個別的実行モードの制御を可能とする同時実行制御レジスタを含み、同時実行制御レジスタの設定と上記複数のＣＰＵの状態に従って、それぞれのＣＰＵに対してユーザプログラムの実行再開を要求する制御信号生成回路を含んで構成することができる。
【００３６】
〔１３〕上記同時実行制御回路は、上記複数のＣＰＵの状態として、ブレーク状態か否かを参照することで構成することができる。
【００３７】
〔１４〕上記同時実行制御回路は、上記複数のＣＰＵの状態として、ブレークからの復帰命令を実行中か否かを参照することで構成することができる。
【００３８】
〔１５〕それぞれ供給されたＣＰＵ用クロック信号に同期動作する複数のＣＰＵと、供給されたデバッグ用クロック信号に基づいて、上記複数のＣＰＵで実行されるユーザプログラムのデバッグを可能とするデバッグ回路とを含むデータ処理装置において、上記デバッグ回路に供給されるデバッグ用クロック信号の周波数をｆ１とし、上記複数のＣＰＵに供給されるＣＰＵ用クロック信号の中で最も高い周波数をｆ２とするとき、ｆ１≧ｆ２が成立するように上記デバッグ用クロック信号及び上記ＣＰＵ用クロック信号を形成するためのクロック制御回路を設ける。
【００３９】
〔１６〕第１ＣＰＵ用クロック信号に同期動作する第１ＣＰＵと、上記第１ＣＰＵクロック信号とは異なる第２ＣＰＵ用クロック信号に同期動作する第２ＣＰＵと、デバッグ用クロック信号に基づいて、上記第１ＣＰＵ及び上記第２ＣＰＵで実行されるユーザプログラムのデバッグを可能とするデバッグ回路とを含んでデータ処理装置を構成する。その場合において、上記デバッグ用クロック信号の周波数をｆ１とし、上記第１ＣＰＵ用クロック信号及び上記第２ＣＰＵ用クロック信号のいずれか高い方の周波数をｆ２とするとき、ｆ１≧ｆ２が成立するように上記デバッグ用クロック信号及び上記ＣＰＵ用クロック信号を形成するためのクロック制御回路を設ける。
【００４０】
上記〔１５〕，〔１６〕記載の手段によれば、クロック制御回路は、ｆ１≧ｆ２が成立するように上記デバッグ用クロック信号及び上記ＣＰＵ用クロック信号を形成する。このことが、円滑なトレースを可能とし、複数のＣＰＵを含むデータ処理装置においてシステムデバッグの効率向上を達成する。
【００４１】
〔１７〕このとき上記デバッグ回路は、上記第１ＣＰＵ用クロック信号に同期して上記第１ＣＰＵについてのトレース情報を取り込むための第１トレース情報入力部と、上記第２ＣＰＵ用クロック信号に同期して上記第２ＣＰＵについてのトレース情報を取り込むための第２トレース情報入力部と、上記第１トレース情報入力部を介して取り込まれたトレース情報を上記デバッグ用クロック信号に同期化するための第１同期化部と、上記第２トレース情報入力部を介して取り込まれたトレース情報を上記デバッグ用クロック信号に同期化するための第２同期化部と、上記デバッグ用クロック信号に基づいて、上記第１同期化部の出力情報と上記第２同期化部の出力情報とを、予め設定された条件に従って選択的に取り込むためのトレース情報処理部とを含んで構成することができる。
【００４２】
〔１８〕上記デバッグ回路は、上記トレース情報処理部によって選択的に取り込まれた情報を、上記デバッグ用クロック信号に基づいて、所定の記憶領域に格納可能なトレースメモリを含んで構成することができる。
【００４３】
〔１９〕大量のトレース情報の外部出力を可能とするには、上記デバッグ回路に、上記デバッグ用クロック信号に基づいて、上記トレース情報処理部の処理結果を外部出力するためのトレース情報出力部を設けると良い。
【００４４】
〔２０〕上記〔１９〕において、上記トレース情報出力部から出力される情報が上記第１ＣＰＵについてのトレース情報であるのか、あるいは上記第２ＣＰＵについてのトレース情報であるのかを明確にするため、上記トレース情報出力部から出力される情報には、上記第１ＣＰＵについてのトレース情報と、上記第２ＣＰＵについてのトレース情報との識別を可能とする識別情報を含めると良い。
【００４５】
〔２１〕上記クロック制御回路は、基準クロック信号に同期した内部クロック信号を生成するためのクロック生成器と、上記クロック生成器で生成された内部クロック信号を分周するためのクロック分周器と、上記クロック分周器の出力信号に基づいて負荷を駆動するためのクロックドライバとを含んで構成することができ、その場合において上記クロックドライバには、デバッグが行われる期間にのみ、上記デバッグ用クロック信号を外部出力するための論理ゲートを含めることができる。
【００４６】
〔２２〕上記クロック制御回路は、入力された基準クロック信号に同期した内部クロック信号を生成するためのクロック生成器と、上記クロック生成器で生成された内部クロック信号を分周するためのクロック分周器と、上記クロック分周器の出力信号に基づいて負荷を駆動するためのクロックドライバとを含んで構成することができる。その場合において上記クロック分周器は、それぞれ互いに分周比が異なる複数の分周クロック信号を出力する分周器と、第１分周比情報に従って上記複数の分周クロック信号から対応する分周クロック信号を選択してそれを上記第１ＣＰＵクロック信号として出力する第１マルチプレクサと、第２分周情報に従って上記複数の分周クロック信号から対応する分周クロック信号を選択してそれを上記第２ＣＰＵクロック信号として出力する第２マルチプレクサと、上記第１分周比情報と上記第２分周比情報とを比較して小さいほうの分周比情報を選択し、その分周比情報に従って上記複数の分周クロック信号から対応する分周クロック信号を選択してそれを上記デバッグ用クロック信号として出力する第３マルチプレクサとを含んで構成することができる。
【００４７】
〔２３〕上記クロック制御回路は、入力された基準クロック信号に同期した内部クロック信号を生成するためのクロック生成器と、上記クロック生成器で生成された内部クロック信号を分周するためのクロック分周器と、上記クロック分周器の出力信号に基づいて負荷を駆動するためのクロックドライバとを含んで構成することができる。その場合において上記クロック分周器は、それぞれ互いに分周比が異なる複数の分周クロック信号を出力する分周器と、第１分周比情報に従って上記複数の分周クロック信号から対応する分周クロック信号を選択してそれを上記第１ＣＰＵクロック信号として出力する第１マルチプレクサと、第２分周情報に従って上記複数の分周クロック信号から対応する分周クロック信号を選択してそれを上記第２ＣＰＵクロック信号として出力する第２マルチプレクサとを含んで構成することができる。このとき、上記クロック生成器から上記クロック分周器に供給されるクロック信号を上記デバッグ用クロック信号として利用する。
【発明の効果】
【００４８】
本願において開示される発明のうち代表的なものによって得られる効果を簡単に説明すれば下記の通りである。
【００４９】
本願において開示される発明のうち代表的なものによって得られる効果を簡単に説明すれば下記の通りである。
【００５０】
すなわち、複数のＣＰＵを含むデータ処理装置において、同時ブレークモードや、同時実行モードを設けることにより、システムデバッグの効率向上を達成することができる。
【００５１】
また、複数のＣＰＵを含むデータ処理装置において、ブレーク条件が成立した場合に任意の数のＣＰＵを選択的に、しかも選択された複数のＣＰＵを同時にブレーク可能な技術を提供することができる。
【００５２】
さらに、複数のＣＰＵを含むデータ処理装置において、ブレーク後に任意の数のＣＰＵにおけるユーザプログラムを同時に実行させるための技術を提供することができる。
【００５３】
そして、複数のＣＰＵを含むデータ処理装置において、円滑なトレースを可能とすることで、システムデバッグの効率向上を達成するための技術を提供することができる。
【００５４】
このように本発明によれば、複数のＣＰＵを含むデータ処理装置において、同時ブレークモードや、同時実行モードが設けられることにより、又は円滑なトレースが可能とされることにより、システムデバッグの効率向上を達成することができる。
【図面の簡単な説明】
【００５５】
【図１】本発明にかかるデータ処理装置の一例であるマイクロコンピュータの全体的な構成例ブロック図である。
【図２】上記マイクロコンピュータに含まれるデバッグ回路の構成例ブロック図である。
【図３】上記デバッグ回路に含まれるデバッグインタフェースの構成例ブロック図である。
【図４】上記デバッグ回路に含まれるデバッグインタフェース回路の別の構成例ブロック図である。
【図５】上記デバッグ回路に含まれる実行制御回路の構成例ブロック図である。
【図６】上記デバッグ回路に含まれるブレーク制御回路の構成例ブロックである。
【図７】ブレーク制御回路に含まれるブレーク要求マスク回路の構成例ブロック図である。
【図８】上記ブレーク制御回路に含まれる条件成立ブレーク要求回路の構成例ブロック図である。
【図９】上記条件成立ブレーク要求回路に含まれるブレーク条件レジスタのフィールド構成説明図である。
【図１０】本発明にかかるデータ処理装置の一例とされるマイクロコンピュータの別の構成例ブロック図である。
【図１１】図１０における第１ＣＰＵの構成例ブロック図である。
【図１２】図１０におけるデバッグ回路の構成例ブロック図である。
【図１３】図１２における第１トレース取得回路の構成例ブロック図である。
【図１４】上記第１トレース取得回路に含まれるトレースメモリに格納されるデータのフォーマット説明図である。
【図１５】図１２における第２トレース取得回路の構成例ブロック図である。
【図１６】図１５に示されるトレース情報出力部から出力されるデータのフォーマット説明図である。
【図１７】図１５に示される構成におけるＭＳＩＤパケット出力条件の説明図である。
【図１８】図１５に示される構成におけるデータパケット出力のタイミング図である。
【図１９】図１０に示されるクロックモジュールの構成例ブロック図である。
【図２０】上記クロックモジュールに含まれるクロック分周器の構成例ブロック図である。
【図２１】上記クロックモジュールに含まれるクロックドライバの構成例ブロック図である。
【図２２】上記クロックモジュールに含まれるクロック分周器における主要部のクロック波形図である。
【図２３】上記クロックモジュールに含まれるクロック分周器における主要部の別のクロック波形図である。
【発明を実施するための形態】
【００５６】
図１には、本発明にかかるデータ処理装置の一例とされるマイクロコンピュータが示される。
【００５７】
図１に示されるマイクロコンピュータ１は、第１ＣＰＵ（ＣＰＵ１）１０、第２ＣＰＵ（ＣＰＵ２）１１、デバッグ回路（ＤＥＢＵＧ）２、各種周辺モジュール（ＭＯＤＬ）１２−１〜１２−ｎを含み、特に制限されないが、公知の半導体集積回路製造技術により、単結晶シリコン基板などの一つの半導体基板に形成される。第１ＣＰＵ１０、第２ＣＰＵ１１、及び各種周辺モジュール１２−１〜１２−ｎは、システムバス１３により互いに信号のやり取りが可能に結合される。デバッグ回路２は、上記システムバス１３、上記第１ＣＰＵ１０及び上記第２ＣＰＵ１１に結合され、上記第１ＣＰＵ１０や上記第２ＣＰＵ１１で実行されるユーザプログラムのデバッグを可能とする。デバッグ回路２には、システムバス１３のデータ（システムバスデータ）ＳＹＳＢ−ＤＡＴＡがデバッグ回路２に伝達される。デバッグ回路２と、第１ＣＰＵ１０との間では、デバッグのために必要とされる各種信号、すなわち、ユーザプログラムの実行再開を許可または抑止させるためのストール制御信号ＳＴＬ−ＣＮＴ、ブレークからの復帰命令を実行中か否かというＣＰＵの状態を表す復帰命令実行信号ＲＴＢ−ＣＮＴ、ブレーク状態か否かというＣＰＵの状態を表すブレークアクノリッジ信号ＢＲＫ−ＡＣＫ、ユーザプログラムの実行停止要求のためのブレークリクエスト信号ＢＲＫ−ＲＥＱ、ＣＰＵバスデータＣＰＵＢ−ＤＡＴＡ、及びリセット要求のためのリセット信号ＲＳＴのやり取りが可能とされる。また同様に、デバッグ回路２と、第２ＣＰＵ１１との間では、デバッグのために必要とされる各種信号、すなわち、ストール制御信号ＳＴＬ−ＣＮＴ、復帰命令実行信号ＲＴＢ−ＣＮＴ、ブレークアクノリッジ信号ＢＲＫ−ＡＣＫ、ブレークリクエスト信号ＢＲＫ−ＲＥＱ、ＣＰＵバスデータＣＰＵＢ−ＤＡＴＡ、及びリセット信号ＲＳＴのやり取りが可能とされる。
【００５８】
デバッグ回路２によりブレークリクエスト信号ＢＲＫ−ＲＥＱがアサートされることにより、第１ＣＰＵ１０や第２ＣＰＵ１１に対してブレーク（ユーザプログラムの実行停止）を要求することができる。第１ＣＰＵ１０又は第２ＣＰＵ１１によりブレークアクノリッジ信号ＢＲＫ−ＡＣＫがアサートされることにより、デバッグ回路２は、第１ＣＰＵ１０や第２ＣＰＵ１１のブレーク状態を把握することができる。また、デバッグ回路２は、第１ＣＰＵ１０又は第２ＣＰＵ１１により復帰命令実行信号ＲＴＢ−ＣＮＴがアサートされることにより、デバック回路２は、第１ＣＰＵ１０や第２ＣＰＵ１１においてブレーク状態に遷移することによりデバッグ処理が行われ、デバッグ処理が完了後に再度ユーザプログラムの実行を開始できる、つまりユーザプログラムへの復帰直前である状態を把握することが可能となる。デバッグ回路２によりストール制御信号ＳＴＬ−ＣＮＴがネゲートされることにより、第１ＣＰＵ１０や第２ＣＰＵ１１に対して、ブレークされた状態からの復帰によるユーザプログラム実行開始を指示することができる。デバッグ回路２は、ＣＰＵバスデータＣＰＵＢ−ＤＡＴＡにより、第１ＣＰＵ１０や第２ＣＰＵ１１によって図示はされないがＣＰＵバスに出力される各種情報を把握することができる。デバッグ回路２によってリセット信号ＲＳＴがアサートされることにより、第１ＣＰＵ１０や第２ＣＰＵ１１をリセットすることができる。上記第１ＣＰＵ１０で実行されるユーザプログラムのデバッグ結果や、上記第２ＣＰＵ１１で実行されるユーザプログラムのデバッグ結果は、デバッグ回路２により共通のデバッグ端子５を介してマイクロコンピュータ１の外部に出力される。
【００５９】
図２には、上記デバッグ回路２の構成例が示される。
【００６０】
上記デバッグ回路２は、特に制限されないが、図２に示されるようにデバッグインタフェース（ＤＥＢＵＧＩ／Ｆ）２１、実行制御回路（ＰＲＣ−ＣＮＴ）２２、及びブレーク制御回路（ＢＲＫ−ＣＮＴ）２３を含んで成る。
【００６１】
実行制御回路２２は、上記第１ＣＰＵ１０及び上記第２ＣＰＵ１１におけるユーザプログラム実行を制御する機能を有し、ブレーク状態からの復帰によるユーザプログラム実行開始タイミングが上記第１ＣＰＵ１０と上記第２ＣＰＵ１１との間で一致する同時実行モード（同時実行）と、ブレーク状態からの復帰によるユーザプログラム実行開始を上記ＣＰＵ毎に個別的に制御可能な個別的実行モード（個別実行）とを含む。上記第１ＣＰＵ１０及び上記第２ＣＰＵ１１から伝達されたブレークアクノリッジ信号ＢＲＫ−ＡＣＫが実行制御回路２２に取り込まれる。実行制御回路２２は、伝達されたブレークアクノリッジ信号ＢＲＫ−ＡＣＫもしくは復帰命令実行信号ＲＴＢ−ＣＮＴの何れかを参照することにより、対応するＣＰＵの状態を検知し、それに基づいて複数のＣＰＵ分のアサートされていたストール制御信号ＳＴＬ−ＣＮＴを同一タイミングでネゲートする同時実行モードを有する。上記第１ＣＰＵ１０及び上記第２ＣＰＵ１１において、アサートされていたストール制御信号ＳＴＬ−ＣＮＴがネゲートされた場合、復帰命令ＲＴＢが実行されることによって復帰され、ユーザプログラムの実行が開始される。同時実行モードにおいては、複数のＣＰＵ分のアサートされていたストール制御信号ＳＴＬ−ＣＮＴが同一タイミングでネゲートされるため、上記第１ＣＰＵ１０と上記第２ＣＰＵ１１とで、ブレーク状態からの復帰によるユーザプログラムが同時実行される。ここで「同時実行」には、タイミング的に完全に一致している場合のみならず、数クロック分のずれを含むものと解されたい。同時実行モードと個別的実行モードとは、デバッグ効率を考慮して適宜に選択することができる。
【００６２】
上記ブレーク制御回路２３は、ＣＰＵバスデータＣＰＵＢ−ＤＡＴＡやブレークアクノリッジ信号ＢＲＫ−ＡＣＫに基づいて上記第１ＣＰＵ１０及び上記第２ＣＰＵ１１に対するブレーク動作を制御する。このブレーク動作の制御には、上記第１ＣＰＵ１０及び上記第２ＣＰＵ１１の何れかにおいてブレーク条件が成立した場合に、それに呼応して上記第１ＣＰＵ１０及び上記第２ＣＰＵ１１に対して、ブレークリクエスト信号ＢＲＫ−ＲＥＱを同時にアサートする同時ブレークモードと、上記第１ＣＰＵ１０及び上記第２ＣＰＵ１１の何れかにおいてブレーク条件が成立した場合に、それに呼応して上記第１ＣＰＵ１０及び上記第２ＣＰＵ１１の何れかに対応するブレークリクエスト信号ＢＲＫ−ＲＥＱをアサートする個別的ブレークモードとを有する。この同時ブレークモードと個別的ブレークモードとは、デバッグ効率を考慮して適宜に選択することができる。この選択を可能にするには、ブレーク制御回路２３内にブレーク条件設定レジスタを設け、このレジスタにブレークモードを設定するようにすれば良い。ここで、上記同時ブレークには、上記第１ＣＰＵ１０及び上記第２ＣＰＵ１１のブレークタイミングが完全に揃っている場合の他、数クロック分のずれがある場合をも含むものと解されたい。
【００６３】
図５には、上記実行制御回路（ＰＲＣ−ＣＮＴ）２２の構成例が示される。
【００６４】
上記実行制御回路（ＰＲＣ−ＣＮＴ）２２は、特に制限されないが、ストール制御信号生成回路２２１、及び同時実行制御レジスタ２２２を含んで成る。
【００６５】
ストール制御信号生成回路２２１は、ブレークアクノリッジ信号ＢＲＫ−ＡＣＫに対応するＣＰＵの状態を検知し、同時実行制御レジスタ２２２の設定に基づいて上記第１ＣＰＵ１０及び上記第２ＣＰＵ１１における復帰命令の実行を制御する。この復帰命令の実行制御には、上記第１ＣＰＵ１０及び上記第２ＣＰＵ１１に対応するストール制御信号ＳＴＬ−ＣＮＴをアサートしておき、上記第１ＣＰＵ１０及び上記第２ＣＰＵ１１に対応するブレークアクノリッジ信号ＢＲＫ−ＡＣＫのアサートを検知して、上記第１ＣＰＵ１０及び上記第２ＣＰＵ１１に対応するストール制御信号ＳＴＬ−ＣＮＴを同時にネゲートする同時実行モードと、上記第１ＣＰＵ１０及び上記第２ＣＰＵ１１に対応するストール制御信号ＳＴＬ−ＣＮＴをネゲートした状態のまま保持し、復帰命令に到達した上記第１ＣＰＵ１０及び上記第２ＣＰＵ１１から個別的に復帰命令を実行する個別的実行モードとを有する。この同時実行モードと個別的実行モードとは、デバッグ効率を考慮して適宜に選択することができる。この選択を可能にするには、上記ブレーク条件設定レジスタにブレークモードを設定するようにすれば任意のモードで実行することが可能となる。
【００６６】
上記ストール制御信号生成回路２２１は、上記複数のＣＰＵの状態を検知するための入力信号として、復帰命令の実行が完了したことを示すブレークアクノリッジ信号ＢＲＫ−ＡＣＫを使用する。例えば、同時実行モードにおいて、デバッグ回路２２の制御によるデバッグ処理後に、上記第１ＣＰＵ１０が先に復帰命令の実行に到達し、上記第２ＣＰＵ１１が後に復帰命令の実行に到達する場合、上記第１ＣＰＵ１０は対応するアサートされたストール制御信号ＳＴＬ−ＣＮＴを参照し復帰命令の実行をストールさせる。一方、上記第２ＣＰＵ１１は対応するアサートされたストール制御信号ＳＴＬ−ＣＮＴを参照せず復帰命令の実行を完了し、ブレークアクノリッジ信号ＢＲＫ−ＡＣＫをアサートする。上記第２ＣＰＵ１１は対応するブレークアクノリッジ信号ＢＲＫ−ＡＣＫのアサートにより、ストール制御信号生成回路２２１はストール制御信号ＳＴＬ−ＣＮＴを同時にネゲートする。上記第１ＣＰＵ１０は対応するストール制御信号ＳＴＬ−ＣＮＴを参照することによりネゲートされたことを検知し、復帰命令を実行する。ストール制御信号ＳＴＬ−ＣＮＴの参照は、例えば上記第１ＣＰＵ１０及び上記第２ＣＰＵ１１が同時実行制御レジスタ２２２を読み出す動作で実現する。また、上記第１ＣＰＵ１０及び上記第２ＣＰＵ１１は、デバッグ回路２２から出力されるストール制御信号によってその状態を知ることができる。上記ストール制御信号生成回路２２１において、ブレークアクノリッジ信号ＢＲＫ−ＡＣＫを使用して同時実行モードを実現する場合、上記第１ＣＰＵ１０及び上記第２ＣＰＵ１１における復帰命令の実行順序を事前に知る必要がある。
【００６７】
上記ストール制御信号生成回路２２１は、上記複数のＣＰＵの状態を検知するための入力信号として、ブレークアクノリッジ信号ＢＲＫ−ＡＣＫの代わりに復帰命令実行信号ＲＴＢ−ＣＮＴを使用することができる。例えば、同時実行モードにおいて、上記第１ＣＰＵ１０と上記第２ＣＰＵ１１の復帰命令を同時に実行させる場合、上記第１ＣＰＵ１０と上記第２ＣＰＵ１１に対応する復帰命令実行信号ＲＴＢ−ＣＮＴが全てアサートされることにより、ストール制御信号生成回路２２１はストール制御信号ＳＴＬ−ＣＮＴを同時にネゲートする。上記第１ＣＰＵ１０と上記第２ＣＰＵ１１は、対応するストール制御信号ＳＴＬ−ＣＮＴを参照することによりネゲートされたことを検知し、復帰命令を実行する。上記ストール制御信号生成回路２２１において、復帰命令実行信号ＲＴＢ−ＣＮＴを使用して同時実行モードを実現する場合、上記第１ＣＰＵ１０及び上記第２ＣＰＵ１１における復帰命令の実行順序を事前に知る必要はない。復帰命令実行信号ＲＴＢ−ＣＮＴは対応するＣＰＵにおいて復帰命令の実行中にアサートされ、復帰命令の実行完了前でブレーク状態からの復帰を検知できる。このため、復帰命令実行信号ＲＴＢ−ＣＮＴを使用した同時実行は、ブレークアクノリッジ信号ＢＲＫ−ＡＣＫを使用した同時実行よりもクロックのずれを少なくできる。
【００６８】
同時実行制御レジスタ２２２は、同時実行モードと個別的実行モードの設定を可能にする。具体的には、上記第１ＣＰＵ１０及び上記第２ＣＰＵ１１とに対応するビットを複数設け、その論理値が“０”の場合には上記第１ＣＰＵ１０及び上記第２ＣＰＵ１１における復帰命令の実行は個別的実行モードに設定される。例えば上記第１ＣＰＵ１０に対応するビットの論理値が“０”の場合、上記第１ＣＰＵ１０での復帰命令と上記第２ＣＰＵ１１での復帰命令とは、個別的に実行される。これに対して、ビットの論理値が“１”の場合には上記第１ＣＰＵ１０及び上記第２ＣＰＵ１１における復帰命令の実行は同時実行モードに設定される。例えば上記第１ＣＰＵ１０に対応するビットの論理値が“１”の場合、上記第２ＣＰＵ１１での復帰命令の実行は上記第１ＣＰＵ１０での復帰命令と同時に実行するよう制御される。
【００６９】
上記同時実行制御レジスタ２２２は、１ビットの構成であってもよい。具体的には、同時実行制御レジスタが論理値“０”の場合には個別的実行モードが指定される。この場合、上記第１ＣＰＵ１０及び上記第２ＣＰＵ１１での復帰命令の実行は、対応するブレークアクノリッジ信号ＢＲＫ−ＡＣＫもしくは復帰命令実行信号ＲＴＢ−ＣＮＴに応じて、個別的に実行される。これに対して、同時実行制御レジスタが論理値“１”の場合には同時実行モードが指定される。上記第１ＣＰＵ１０及び上記第２ＣＰＵ１１に対して、アサートされたストール制御信号ＳＴＬ−ＣＮＴを同時にネゲートすることにより、復帰命令が上記第１ＣＰＵ１０と上記第２ＣＰＵ１１とで同時に実行される。
【００７０】
図６には、上記ブレーク制御回路２３の構成例が示される。
【００７１】
上記ブレーク制御回路２３は、特に制限されないが、図６に示されるようにプログラム要因ブレーク要求回路（ＰＲＧ−ＢＲＫ−ＲＥＱ）２３０、外部要因ブレーク要求回路（ＥＸＴ−ＢＲＫ−ＲＥＱ）２３１、条件成立ブレーク要求回路（ＣＯＮ−ＢＲＫ−ＲＥＱ）２３２、ブレーク要求マスク回路２３３，２３４を含んで成る。
【００７２】
プログラム要因ブレーク要求回路２３０は、例えばユーザプログラムの実行において、所定のブレーク命令が実行された場合に、ブレークアクノリッジ信号ＢＲＫ−ＡＣＫを第１ＣＰＵ１０又は第２ＣＰＵ１１より取り込み、それに基づいてブレーク要求信号２３５をアサートする。つまり、ブレークアクノリッジ信号ＢＲＫ−ＡＣＫによってＣＰＵのブレーク状態を把握し、それに従って他のＣＰＵをブレークさせるためのブレーク要求信号２３５をアサートする。このブレーク要求信号２３５は、後段のブレーク要求マスク回路２３３，２３４に伝達される。
【００７３】
上記外部要因ブレーク要求回路２３１は、図示しない外部端子を介してこのマイクロコンピュータ１の外部から与えられたブレーク要因に基づいてブレーク要求信号２３６をアサートする。このブレーク要求信号２３６は、後段のブレーク要求マスク回路２３３，２３４に伝達される。条件成立ブレーク要求回路（ＣＯＮ−ＢＲＫ−ＲＥＱ）２３２は、各ＣＰＵのＣＰＵバスデータＣＰＵＢ−ＤＡＴＡおよびシステムバスデータＳＹＳＢ−ＤＡＴＡをモニタして、このＣＰＵバスデータＣＰＵＢ−ＤＡＴＡが、予め設定されたブレーク条件と一致した場合にブレーク要求信号２３７をアサートする。このブレーク要求信号２３７は、後段のブレーク要求マスク回路２３３，２３４に伝達される。
【００７４】
ブレーク要求マスク回路２３３，２３４は、上記ＣＰＵ１０，１１に対応して配置され、設定されたブレークモードに応じて上記ブレーク要求信号２３５，２３６，２３７をマスクすることによって、ブレーク対象とされるＣＰＵに対してのみ、ブレークリクエスト信号ＢＲＫ−ＲＥＱをアサートする。
【００７５】
ブレーク要求マスク回路２３３は、第１ＣＰＵ１０に対するブレークリクエスト信号ＢＲＫ−ＲＥＱをアサートし、ブレーク要求マスク回路２３４は、第２ＣＰＵ１１対するブレークリクエスト信号ＢＲＫ−ＲＥＱをアサートする。ブレーク要求マスク回路２３３，２３４は、互いに同一構成とされる。例えばブレーク要求マスク回路２３３は、図７に示されるように、プログラム要因ブレーク要求マスク部（ＰＲＧ−ＢＲＫ−ＲＥＱ−ＭＳＫ）３０−１、外部要因ブレーク要求マスク部（ＥＸＴ−ＢＲＫ−ＲＥＱ−ＭＳＫ）３０−２、条件成立ブレーク要求マスク部（ＣＯＮ−ＢＲＫ−ＲＥＱ）３０−３、及びそれら出力のオア論理を得るオアゲート３２を含んで成る。プログラム要因ブレーク要求マスク部３０−１、外部要因ブレーク要求マスク部３０−２、及び条件成立ブレーク要求マスク部３０−３は、それぞれ図６に示されるブレーク要求マスク回路２３３、２３４に対応しており、伝達されたブレーク要求信号２３５、２３６、２３７のマスク処理を行う。すなわち、プログラム要因ブレーク要求マスク部３０−１は、マスクレジスタ（ＭＳＫ−ＰＲＧ）３１−１を含み、このマスクレジスタ３１−１の設定情報に従ってブレーク要求信号２３５のマスク処理を行う。外部要因ブレーク要求マスク部３０−２は、マスクレジスタ（ＭＳＫ−ＰＲＧ）３１−２を含み、このマスクレジスタ３１−２の設定情報に従ってブレーク要求信号２３６のマスク処理を行う。条件成立ブレーク要求マスク部３０−２は、マスクレジスタ（ＭＳＫ−ＰＲＧ）３１−３を含み、このマスクレジスタ３１−３の設定情報に従ってブレーク要求信号２３７のマスク処理を行う。例えば、マスクレジスタ３１−１，３１−２，３１−３に論理値“１”が設定されている場合には、対応するブレーク要求信号２３５、２３６、２３７がマスクされずにそのまま出力され、オアゲート３２でオア論理が得られる。それに対してマスクレジスタ３１−１，３１−２，３１−３に論理値“０”が設定されている場合には、対応するブレーク要求信号２３５、２３６、２３７がマスクされる。マスクされた場合、それに対応する出力信号は、論理値“０”に固定される。このようなマスク処理により、ブレーク要因が第１ＣＰＵ１０及び第２ＣＰＵ１１の何れにあるかにかかわらず、任意のＣＰＵ１０，１１に対してブレークリクエスト信号ＢＲＫ−ＲＥＱをアサートすることができる。例えば、ブレーク要求マスク回路２３３でブレーク要求信号２３５，２３６，２３７がマスクされる場合には、第１ＣＰＵ１０に対するブレークリクエスト信号ＢＲＫ−ＲＥＱはアサートされなくなる。また、ブレーク要求マスク回路２３４でブレーク要求信号２３５，２３６，２３７がマスクされる場合には、第２ＣＰＵ１１に対するブレークリクエスト信号ＢＲＫ−ＲＥＱはアサートされなくなる。一方、ブレーク要求マスク回路２３３，２３４の何れにおいてもブレーク要求信号２３５，２３６，２３７がマスクされない場合には、ブレーク要因が第１ＣＰＵ１０及び第２ＣＰＵ１１の何れにあるかにかかわらず、第１ＣＰＵ１０及び第２ＣＰＵ１１の双方に対してブレークリクエスト信号ＢＲＫ−ＲＥＱがアサートされることにより、同時ブレークが可能とされる。
【００７６】
図８には、図６における条件成立ブレーク要求回路（ＣＯＮ−ＢＲＫ−ＲＥＱ）２３２の構成例が示される。
【００７７】
条件成立ブレーク要求回路２３２は、特に制限されないが、図８に示されるように複数の条件一致判定回路（ＣＮＤ−ＪＵＤ）２５−１，２５−２，…，２５−ｎ（ｎは自然数）と、シーケンシャルブレーク判定回路２７とを含んで成る。複数の条件一致判定回路２５−１，２５−２，…，２５−ｎは、それぞれブレーク条件レジスタ（ＢＲＫ−ＣＮＤ−ＲＥＧ）２６−２，２６−２，…，２６−ｎを含み、第１ＣＰＵ１０及び第２ＣＰＵ１１からのＣＰＵバスデータＣＰＵＢ−ＤＡＴＡが上記ブレーク条件レジスタ２６−２，２６−２，…，２６−ｎの設定情報に一致した場合に、対応する条件一致フラグＣＮＤＭ−ＦＬＧをアサートする機能を有する。上記ブレーク条件レジスタ２６−１，２６−２，…，２６−ｎは、例えば図９に示されるように、ＣＰＵ選択フィールド３１０と、バス状態選択フィールド３２０とを含む。上記ＣＰＵ選択フィールド３１０には、ブレーク条件一致判定の対象となる２ビットのＣＰＵ識別情報が設定される。このＣＰＵ識別情報は、例えばブレーク条件一致判定の対象が第１ＣＰＵ１０のみの場合は“０１”とされ、ブレーク条件一致判定の対象が第２ＣＰＵ１１のみの場合は“１０”とされ、ブレーク条件一致判定の対象が第１ＣＰＵ１０及び第２ＣＰＵ１１の双方の場合は“１１”とされる。上記バス状態選択フィールド３２０には、コンペア条件（ブレーク条件）が設定される。コンペア条件としては、特に制限されないが、バス指定、アドレス、コマンド、データ、バスサイクルなどが含まれる。また、上記ブレーク条件レジスタを複数有することにより、複数のコンペア条件（ブレーク条件）を設定することが可能となり、一つのシステムデバッグ設定によって多数のコンペア条件を設定でき、デバッグ効率を向上することが可能となる。
【００７８】
シーケンシャルブレーク判定回路２７は、上記複数の条件一致判定回路２５−１，２６−２，…，２５−ｎからの条件一致フラグＣＮＤＭ−ＦＬＧを取り込んで、シーケンシャルブレーク条件が成立したか否かを判定し、当該ブレーク条件が成立した場合にシーケンシャルブレーク条件一致フラグＳＣＮＤＭ−ＦＬＧをアサートする。シーケンシャルブレーク条件は、複数ブレーク条件の組み合わせとされ、各ブレーク条件の一致が一定の順序に従って成立した場合に一致したとみなされる。シーケンシャルブレーク条件は、シーケンシャルブレーク判定回路２７内のシーケンシャルブレーク条件レジスタ２８に設定され、シーケンシャルブレーク判定回路２７は、このシーケンシャルブレーク条件レジスタ２８に設定情報に基づいて、シーケンシャルに起こり得るブレーク条件が成立したか否かを判定する。例えば、条件一致判定回路２５−２でブレーク条件が成立した後に、条件一致判定回路２５−１でブレーク条件が成立した場合が、シーケンシャルブレーク条件として、シーケンシャルブレーク条件レジスタ２８に設定されたとき、当該条件が成立した場合にシーケンシャルブレーク条件一致フラグＳＣＮＤＭ−ＦＬＧがアサートされる。このようなシーケンシャルブレークにより、条件一致判定回路２５−１〜２５−ｎでのブレーク条件判定に加えて、より高度なブレーク条件判定が可能とされる。
【００７９】
図３には、上記デバッグインタフェース回路２１の構成例が示される。
【００８０】
上記デバッグインタフェース回路２１は、特に制限されないが、図３に示されるようにＪＴＡＧ(Joint Test Action Group)制御部（ＪＴＡＧ−ＣＮＴ）２１１、及び制御回路（ＣＮＴＲ）２１２を含んで成る。
【００８１】
上記ＪＴＡＧ制御部２１１は、バイパスレジスタ（ＳＤＢＰＲ）５１、シフトレジスタ（Ｓ−ＲＥＧ）５３、マルチプレクサ（ＭＵＸ）５２、及びＴＡＰ（Ｔｅｓｔ  Ａｃｃｅｓｓ  Ｐｏｒｔ）制御回路（ＴＡＰ−ＣＮＴ）５４を含んで成り、上記共通の複数のデバッグテスト端子５を介して、このマイクロコンピュータ１の外部との間で、ＪＴＡＧ所定の信号であるテスト入力データ信号ＴＤＩ、テスト出力データ信号ＴＤＯ、クロック信号ＴＣＫ、テスト制御信号ＴＭＳ、リセット信号／ＴＲＳＴのやり取りが可能とされる。ＴＡＰ制御回路（ＴＡＰ−ＣＮＴ）５４の制御により、ＩＥＥＥ準拠の内部制御スキャン方式（ＪＴＡＧスキャン方式）を用いて、ＴＤＩより入力される値を制御のためのコマンド又はデータと解釈し、デバッグ情報の外部出力が可能とされる。
【００８２】
上記制御回路２１２は、上記ＪＴＡＧ制御部２１１内のシフトレジスタ５３に結合されることで、上記ＪＴＡＧ制御部２１１との間でデータのやり取りが可能とされ、実行制御回路２２やブレーク制御回路２３との間で、制御信号やデータなどの各種信号ＣＮＴのやり取りが可能とされる。上記制御回路２１２は、リセット制御のためのリセット制御レジスタ（ＲＳＴ−ＣＮＴ−ＲＥＧ）５５を含む。
【００８３】
上記制御回路２１２は、上記リセット制御レジスタ５５の設定情報に従って、上記第１ＣＰＵ１０及び第２ＣＰＵ１１をリセットするためのリセット信号ＲＳＴを形成する。上記リセットレジスタ５５は、上記第１ＣＰＵ１０及び第２ＣＰＵ１１に１対１で対応するビットを含む。この制御回路２１２は、上記第１ＣＰＵ１０及び第２ＣＰＵ１１に対応するビットに論理値“１”を設定することにより上記第１ＣＰＵ１０及び第２ＣＰＵ１１に対するリセット信号ＲＳＴをアサートし、上記第１ＣＰＵ１０及び第２ＣＰＵ１１に対応するビットに論理値“０”を設定することにより上記第１ＣＰＵ１０及び第２ＣＰＵ１１に対するリセット信号ＲＳＴをネゲートする個別的リセットモードを有する。また、この制御回路２１２は、上記第１ＣＰＵ１０と第２ＣＰＵ１１とに対応するリセット信号ＲＳＴを同時にアサートしその後ネゲートする同時リセットモードを有する。この個別的リセットモードと同時リセットモードとは、デバッグ効率を考慮して適宜に選択することができる。
【００８４】
図４には、上記デバッグインタフェース回路２１の別の構成例が示される。
【００８５】
図４に示される構成が図３に示されるのと大きく相違するのは、リセット制御回路（ＲＳＴ−ＣＮＴ）２１３が設けられ、それに伴い、制御回路２１２内のリセット制御レジスタ５５が省略されている点である。
【００８６】
上記制御回路２１２は、上記ＪＴＡＧ制御部２１１内のシフトレジスタ５３に結合されることで、上記ＪＴＡＧ制御部２１１との間でデータのやり取りが可能とされ、実行制御回路２２やブレーク制御回路２３との間で、制御信号やデータなどの各種信号ＣＮＴのやり取りが可能とされる。リセット制御回路（ＲＳＴ−ＣＮＴ）２１３は、上記ＪＴＡＧ制御部２１１内のシフトレジスタ５３とＴＡＰ制御回路（ＴＡＰ−ＣＮＴ）５４とに結合されることで、ＴＤＩより入力されるリセット用のコマンドを解釈し、上記第１ＣＰＵ１０及び上記第２ＣＰＵ１１をリセットするためのリセット信号ＲＳＴを個別的にアサート又はネゲートする個別的リセットモードを有する。また、このリセット制御回路２１３は、上記第１ＣＰＵ１０と第２ＣＰＵ１１とに対応するリセット信号ＲＳＴを同時にアサートし、その後ネゲートする同時リセットモードを有する。この個別的リセットモードと同時リセットモードとは、デバッグ効率を考慮して適宜に選択することができる。
【００８７】
上記の例によれば、以下の作用効果を得ることができる。
【００８８】
（１）第１ＣＰＵ１０、第２ＣＰＵ１１の何れかにおいてブレーク条件が成立した場合に、それに呼応して上記ＣＰＵ１０，１１を同時ブレーク可能な同時ブレークモードを有することから、上記第１ＣＰＵ１０、第２ＣＰＵ１１の何れかにおいてブレーク条件が成立した後における上記複数のＣＰＵ１０，１１間での命令実行のずれを最小限に抑えることができる。また、ブレーク状態からの復帰によるユーザプログラム実行開始タイミングが上記第１ＣＰＵ１０、第２ＣＰＵ１１間で一致可能な同時実行モードを有することから、ブレークされた状態からの復帰によるユーザプログラム実行のタイミング的なずれを上記ＣＰＵ１０，１１間で最小限に抑えることができる。これにより、第１ＣＰＵ１０、第２ＣＰＵ１１を含むマイクロコンピュータ１のシステムデバッグにおけるデバッグ効率向上を達成することができる。
【００８９】
（２）ブレーク要求マスク回路２３３，２３４は、上記ＣＰＵ１０，１１に対応して配置され、設定されたブレークモードに応じて上記ブレーク要求信号２３５，２３６，２３７をマスクすることによって、ブレーク対象とされるＣＰＵに対してのみ、ブレークリクエスト信号ＢＲＫ−ＲＥＱがアサートされる。このようなマスク処理により、ブレーク要因が第１ＣＰＵ１０及び第２ＣＰＵ１１の何れにあるかにかかわらず、任意のＣＰＵ１０，１１に対してブレークリクエスト信号ＢＲＫ−ＲＥＱをアサートすることができる。
【００９０】
（３）シーケンシャルブレーク判定回路２７は、上記複数の条件一致判定回路２５−１，２５−２，…，２５−ｎからの条件一致フラグＣＮＤＭ−ＦＬＧを取り込んで、シーケンシャルブレーク条件が成立したか否かを判定し、当該ブレーク条件が成立した場合にシーケンシャルブレーク条件一致フラグＳＣＮＤＭ−ＦＬＧをアサートする。このようなシーケンシャルブレークが行われる場合には、条件一致判定回路２５−１〜２５−ｎでのブレーク条件判定に加えて、より高度なブレーク条件判定が可能とされる。
【００９１】
（４）デバッグインタフェース２１に含まれるリセット制御回路２１３は、個別的にリセット信号ＲＳＴをアサート又はネゲートする個別的リセットモードを有する。このような個別的リセットを適用すれば、あるユーザプログラムを実行している一方のＣＰＵを動作させたまま、別のユーザプログラムを実行している他方のＣＰＵをリセットすることが可能であるため、より詳細なＣＰＵの制御が可能となり、デバッグ効率の向上を達成することができる。
【００９２】
図１０には、本発明にかかるデータ処理装置の一例とされるマイクロコンピュータの別の構成例が示される。
【００９３】
図１０に示されるマイクロコンピュータ１は、第１ＣＰＵ１００、第２ＣＰＵ１１０、デバッグ回路（ＤＥＢＵＧ）２００、各種周辺モジュール（ＭＯＤＬ）１２０−１〜１２０−ｎ、ＤＭＡＣ（ダイレクト・メモリ・アクセス・コントローラ）１４０、及びクロックモジュール（ＣＬＫ−ＭＯＤＬ）３００を含み、特に制限されないが、公知の半導体集積回路製造技術により、単結晶シリコン基板などの一つの半導体基板に形成される。第１ＣＰＵ１００、第２ＣＰＵ１１０、ＤＭＡＣ１４０、デバッグ回路２００、及び各種周辺モジュール１２０−１〜１２０−ｎは、システムバス１３０を介して結合される。上記第１ＣＰＵ１００、上記第２ＣＰＵ１１０、及びＤＭＡＣ１４０は、それぞれシステムバス１３０についてのバスマスタとされ、システムバス１３０のバス権を取得して各種データの転送制御を行うことができる。
【００９４】
デバッグ回路２００は、上記システムバス１３０、上記第１ＣＰＵ１００及び上記第２ＣＰＵ１１０に結合され、上記第１ＣＰＵ１００や上記第２ＣＰＵ１１０で実行されるユーザプログラムのデバッグを可能とする。ＣＰＵ１００からデバッグ回路２００に、分岐情報ＢＲＡ−ＩＮＦ＃０や、ＣＰＵバス情報ＢＵＳ−ＩＮＦ＃０が伝達される。デバッグ回路２００とＣＰＵ１００との間でデバッグアクセス情報ＡＣＣ−ＩＮＦ＃０のやり取りが可能とされる。ＣＰＵ１１０からデバッグ回路２００に、分岐情報ＢＲＡ−ＩＮＦ＃１や、ＣＰＵバス情報ＢＵＳ−ＩＮＦ＃１が伝達される。デバッグ回路２００とＣＰＵ１００との間でデバッグアクセス情報ＡＣＣ−ＩＮＦ＃１のやり取りが可能とされる。
【００９５】
クロックモジュールＣＬＫ−ＭＯＤＬ３００は、互いに周波数が異なる複数のクロック信号を形成する。複数のクロック信号には、デバッグ用クロック信号ｃｌｋｄ、ＣＰＵ用クロック信号ｃｌｋｉ０，ｃｌｋｉ１、及び周辺モジュール用クロック信号ｃｌｋｂが含まれる。デバッグ用クロック信号ｃｌｋｄは、デバッグ回路２００に供給される。ＣＰＵ用クロック信号ｃｌｋｉ０は、ＣＰＵ１００及びデバッグ回路２００に供給される。ＣＰＵ用クロック信号ｃｌｋｉ１は、ＣＰＵ１１０及びデバッグ回路２００に供給される。周辺モジュール用クロック信号ｃｌｋｂは、周辺モジュール１２０−１〜１２０−ｎ、ＤＭＡＣ１４０、ＣＰＵ１００，１１０、及びデバッグ回路２００に供給される。
【００９６】
上記第１ＣＰＵ１００で実行されるユーザプログラムのデバッグ結果や、上記第２ＣＰＵ１１０で実行されるユーザプログラムのデバッグ結果は、デバッグ回路２００から共通のデバッグ端子５０を介してマイクロコンピュータ１の外部に出力することができる。また上記デバッグ結果のうちトレース情報については専用のトレース端子群６０を介して外部出力可能とされる。
【００９７】
図１１には、上記第１ＣＰＵ１００の構成例が示される。
【００９８】
上記第１ＣＰＵ１００は、特に制限されないが、ＣＰＵコア１０１、モジュール内メモリ１０２、及びバスブリッジ１０３を含み、それらがＣＰＵバス１０４によって相互に信号のやり取り可能に結合されて成る。ＣＰＵバス１０４からＣＰＵバス情報ＢＵＳ−ＩＮＦ＃０が取り出される。第１ＣＰＵ１００は、演算処理のための所定のプログラムを実行する。モジュール内メモリ１０２には、上記ＣＰＵコア１０１で実行されるプログラムが格納されたＲＯＭ（リード・オンリー・メモリ）や、上記ＣＰＵコア１０１での演算処理における作業領域などとして使用されるＲＡＭ（ランダム・アクセス・メモリ）が含まれる。プログラム実行における分岐情報ＢＲＡ−ＩＮＦ＃０はＣＰＵコア１０１から取り出される。ＣＰＵバス１０４とシステムバス１３０とはバスブリッジ１０３によって結合される。このバスブリッジ１０３からデバッグアクセス情報ＡＣＣ−ＩＮＦ＃０が取り出される。
【００９９】
尚、第２ＣＰＵ１１０も、上記第１ＣＰＵ１００と同様に構成される。
【０１００】
図１２には上記デバッグ回路２００の構成例が示される。
【０１０１】
上記デバッグ回路２００は、特に制限されないが、デバッグインタフェース２０１、実行制御回路２０２、ブレーク制御回路２０３、デバッグアクセス回路２０４、第１トレース取得回路２０５、及び第２トレース取得回路２０７を含んで成る。
【０１０２】
実行制御回路２０２は、デバッグの実行を制御する。ブレーク制御回路２０３は、予め設定されたブレーク条件に基づくブレーク動作の制御を行う。デバッグアクセス回路２０４は、上記システムバス１３０を介してデバッグアクセスを行う。上記バスブリッジ１０３にはデバッグアクセス情報ＡＣＣ−ＩＮＦ＃０用の信号線も接続される。これによって、デバッグ回路ＤＥＢＵＧ２００は、システムバス上のデバイスをアクセスすることができる。
【０１０３】
上記デバッグインタフェース２０１は、デバッグ端子５０、上記実行制御回路２０２、ブレーク制御回路２０３、及びデバッグアクセス回路２０４に結合され、外部との間でＪＴＡＧ(Joint Test Action Group)仕様による所定信号のやり取りを可能とする。
【０１０４】
上記第１トレース取得回路２０５及び上記第２トレース取得回路２０７は、システム内のバスの状態を監視し、所定の条件に一致した状態を取得する機能を有する。上記第１トレース取得回路２０５及び上記第２トレース取得回路２０７には、分岐情報ＢＲＡ−ＩＮＦ＃０，ＢＲＡ−ＩＮＦ＃１、ＣＰＵバス情報ＢＵＳ−ＩＮＦ＃０，ＢＵＳ−ＩＮＦ＃１等のトレース情報が取り込まれる。上記第１トレース取得回路２０５及び上記第２トレース取得回路２０７は、それぞれシステムバス１３０に結合され、このシステムバス１３０を介してトレースに関する各種制御情報などのやり取りが可能とされる。上記第１トレース取得回路２０５で取得されたトレース情報は、必要に応じてシステムバス１３０に出力することができる。第２トレース取得回路２０７は、トレース端子６０に結合されており、このトレース端子６０を介して、上記第２トレース取得回路２０７で取得されたトレース情報の外部出力が可能とされる。
【０１０５】
図１３には上記第１トレース取得回路２０５の構成例が示される。
【０１０６】
上記第１トレース取得回路２０５は、トレース処理を行うトレース処理部２０５Ａと、このトレース処理部２０５Ａでのトレース処理を制御するトレース制御部２０５Ｂとを含む。上記トレース処理部２０５Ａは、トレース情報入力部２５１〜２５３、同期化部２５５〜２５７、トレース情報処理部２５８、選択部２５９，２６０、同期化部２６１、及びトレースメモリ２６２を含む。
【０１０７】
上記トレース情報入力部２５１は、ＣＰＵ用クロック信号ｃｌｋｉ０に同期して分岐情報ＢＲＡ−ＩＮＦ＃０及びＣＰＵバス情報ＢＵＳ−ＩＮＦ＃０を取り込む。取り込まれた情報は、後段の同期化部２５５に伝達され、ここでデバッグ用クロック信号ｃｌｋｄに同期化されてから後段のトレース情報処理部２５８に伝達される。
【０１０８】
上記トレース情報入力部２５２は、ＣＰＵ用クロック信号ｃｌｋｉ１に同期して分岐情報ＢＲＡ−ＩＮＦ＃１及びＣＰＵバス情報ＢＵＳ−ＩＮＦ＃１を取り込む。取り込まれた情報は、後段の同期化部２５６に伝達され、ここでデバッグ用クロック信号ｃｌｋｄに同期化されてから後段のトレース情報処理部２５８に伝達される。
【０１０９】
上記トレース情報入力部２５３は、周辺モジュール用クロック信号ｃｌｋｂに同期してシステムバス１３０におけるシステムバス情報ＳＹＳ−ＩＮＦを取り込む。取り込まれた情報は、後段の同期化部２５７に伝達され、ここでデバッグ用クロック信号ｃｌｋｄに同期化されてから後段のトレース情報処理部２５８に伝達される。
【０１１０】
上記トレース情報処理部２５８は、上記同期化部２５５，２５６，２５７を介して伝達された情報を、トレース制御部２０５Ｂに予め設定された条件に従って選択的に取り込むための機能を有する。上記トレース情報処理部２５８の動作はデバッグ用クロック信号ｃｌｋｄに同期動作される。上記トレース情報処理部２５８によって選択的に取り込まれた情報は、選択部２５９，２６０に伝達される。
【０１１１】
上記トレースメモリ２６２は、デバッグ用クロック信号ｃｌｋｄに同期動作され、上記選択部２５９を介して伝達された情報を格納するための第１格納領域２６３と、上記選択部２６０を介して伝達された情報を格納するための第２格納領域２６４とを有する。上記第１格納領域２６３に格納された情報は、選択部２５９、同期化部２６０、及びトレース制御部２０５Ｂを介してシステムバス１３０に伝達することができる。また、上記第２格納領域２６４に格納された情報は、選択部２６０、同期化部２６１、及びトレース制御部２０５Ｂを介してシステムバス１３０に伝達することができる。同期化部２６１は、トレース制御部２０５Ｂから伝達された情報をデバッグ用クロック信号ｃｌｋｄに同期化する機能と、選択部２５９，２６０を介して伝達された情報を周辺モジュール用クロック信号ｃｌｋｂに同期化する機能を有する。
【０１１２】
上記トレース制御部２０５Ｂは、制御レジスタ２５４を含み、この制御レジスタ２５４に設定された情報に従って、上記トレース処理部２０５Ａの動作が制御される。上記トレース制御部２０５Ｂは、周辺モジュール用クロック信号ｃｌｋｂに同期動作される。
【０１１３】
図１４には、上記トレースメモリ２６２に格納されるトレース情報のデータのフォーマットが示される。
【０１１４】
分岐情報パケットＢＲＡ−ＰＫＴは、分岐種別フィールド、タイムスタンプフィールド、分岐先アドレスフィールド、及び分岐元データフィールドを含む。ＣＰＵバス情報パケットＢＵＳ−ＰＫＴは、ＣＰＵバスコマンドフィールド、タイムスタンプフィールド、ＣＰＵバスアドレスフィールド、及びＣＰＵバスデータフィールドを含む。システムバス情報パケットＳＹＳ−ＰＫＴは、システムバスコマンドフィールド、タイムスタンプフィールド、システムバスアドレスフィールド、システムバスデータフィールドを含む。上記タイムスタンプは、パケットが生成された時刻を示すものであり、図示しないカウンタのカウント値が格納される。デバッグ回路２００へ供給される分岐情報ＢＲＡ−ＩＮＦ＃０、ＢＲＡ−ＩＮＦ＃１より与えられた情報に基づき、分岐種別、分岐先アドレス、分岐元アドレスを含む上記分岐情報パケットＢＲＡ−ＰＫＴが構成される。ＣＰＵバス情報ＢＵＳ−ＩＮＦ＃０、ＢＵＳ−ＩＮＦ＃１より与えらた情報に基づき、ＣＰＵバスコマンド、ＣＰＵバスアドレス、ＣＰＵバスデータを含むＣＰＵバス情報パケットＢＵＳ−ＰＫＴが構成される。システムバス情報ＳＹＳ−ＩＮＦより与えられた情報に基づき、システムバスコマンド、システムバスアドレス、システムバスデータを含む上記システムバス情報パケットＳＹＳ−ＰＫＴが構成される。
【０１１５】
図１５には、上記第２トレース取得回路２０７の構成例が示される。
【０１１６】
上記第２トレース取得回路２０７は、トレース処理を行うトレース処理部２０７Ａと、このトレース処理部２０７Ａでのトレース処理を制御するトレース制御部２０７Ｂとを含む。上記トレース処理部２０７Ａは、トレース情報入力部２７１〜２７３、同期化部２７５〜２７７、トレース情報処理部２５８、及びトレース情報出力部２７９を含む。
【０１１７】
上記トレース情報入力部２７１は、ＣＰＵ用クロック信号ｃｌｋｉ０に同期して分岐情報ＢＲＡ−ＩＮＦ＃０及びＣＰＵバス情報ＢＵＳ−ＩＮＦ＃０を取り込む。取り込まれた情報は、後段の同期化部２７５に伝達され、ここでデバッグ用クロック信号ｃｌｋｄに同期化されてから後段のトレース情報処理部２７８に伝達される。
【０１１８】
上記トレース情報入力部２７２は、ＣＰＵ用クロック信号ｃｌｋｉ１に同期して分岐情報ＢＲＡ−ＩＮＦ＃１及びＣＰＵバス情報ＢＵＳ−ＩＮＦ＃１を取り込む。取り込まれた情報は、後段の同期化部２７６に伝達され、ここでデバッグ用クロック信号ｃｌｋｄに同期化されてから後段のトレース情報処理部２７８に伝達される。
【０１１９】
上記トレース情報入力部２７３は、周辺モジュール用クロック信号ｃｌｋｂに同期してシステムバス１３０におけるシステムバス情報ＳＹＳ−ＩＮＦを取り込む。取り込まれた情報は、後段の同期化部２７７に伝達され、ここでデバッグ用クロック信号ｃｌｋｄに同期化されてから後段のトレース情報処理部２７８に伝達される。
【０１２０】
上記トレース情報処理部２７８は、上記同期化部２７５，２７６，２７７を介して伝達された情報を、トレース制御部２０７Ｂに予め設定された条件に従って選択的に取り込むための機能を有する。上記トレース情報処理部２７８の動作はデバッグ用クロック信号ｃｌｋｄに同期動作される。上記トレース情報処理部２７８によって選択的に取り込まれた情報は、トレース情報出力部２８０を介して外部出力可能とされる。このトレース情報出力部２８０は、ＦＩＦＯ（先入れ先出し）バッファ２８０を含み、このＦＩＦＯバッファ２８０に書き込まれた順に外部出力可能とされる。
【０１２１】
上記トレース制御部２０７Ｂは、制御レジスタ２７４を含み、この制御レジスタ２７４に設定された情報に従って、上記トレース処理部２０７Ａの動作が制御される。上記トレース制御部２０７Ｂは、周辺モジュール用クロック信号ｃｌｋｂに同期動作される。
【０１２２】
図１６には、上記トレース情報出力部２７９を介してマイクロコンピュータ１の外部へ出力されるトレース情報パケットのフォーマットが示される。
【０１２３】
上記トレース情報出力部２７９を介して外部出力されるトレース情報パケットＰＫＴのフォーマットは、図１６に示されるように、コマンドフィールドＣＭＤ１，ＣＭＤ２、及びデータフィールドＤＡ０〜ＤＡ１５を含む。コマンドフィールドＣＭＤ２は、コマンドフィールドＣＭＤ１で示されるコマンドの種類によってその有無が決定される。データフィールドＤＡ０〜ＤＡ１５は、コマンドフィールドＣＭＤ２の種類によってその有無が決定される。
【０１２４】
例えばトレース情報パケットＰＫＴの出力において、何も出力すべき情報がない場合は、ＣＭＤ１にＳＴＤＢＹコマンド（0000）を出力する。ＳＴＤＢＹコマンドはＣＭＤ１だけで完了する。
【０１２５】
例えば分岐トレース情報をトレース情報パケットＰＫＴのフォーマットに従って出力する場合は、コマンドフィールドＣＭＤ１にＢＧＣコマンド（0100）を出力する。ＢＧＣコマンドの場合、引き続いてコマンドフィールドＣＭＤ２を出力する。ＣＭＤ２コマンドでは、その後に出力するデータフィールドの個数を示す。データフィールドＤＡ０〜ＤＡ１５には分岐元のアドレスと分岐先のアドレスが格納される。このデータフィールドは必要に応じて圧縮されている。このため、データフィールドの個数は一定ではない。圧縮方法の詳細は特に説明はしないが、例えば、分岐先アドレスを分岐元アドレスとの差分で表現する、などの方法がとられる。
【０１２６】
ここで、トレース情報出力部２７９から出力されるトレース情報パケットＰＫＴが、第１ＣＰＵ１００でのプログラム実行に係るものであるのか、第２ＣＰＵ１１０でのプログラム実行に係るものであるのかの識別を可能にするため、ＭＳＩＤコマンド（0010）が設けられている。ＭＳＩＤコマンドは、トレース情報出力部２７９から次に出力されるＣＰＵパケットのソースデータが第１ＣＰＵ１００に係るものであるのか、第２ＣＰＵ１１０に係るものであるのかを示している。コマンドフィールドＣＭＤ１として出力されるＭＳＩＤコマンドの後にはコマンドフィールドＣＭＤ２が出力される。このＣＭＤ２は「ＣＰＵＩＤ」、すなわちデータの由来を示す。例えばＣＭＤ２が、「Ｈ’０」の場合には、第１ＣＰＵ１００とされ、ＣＭＤ２が、「Ｈ’１」の場合には、第２ＣＰＵ１１０とされる。従って、上記トレース情報出力部２７９から出力されたトレース情報の受信側においては、上記「ＭＳＩＤ」により、トレース情報出力部２７９から次に出力されるＣＰＵパケットのソースデータが第１ＣＰＵ１００に係るものであるのか、第２ＣＰＵ１１０に係るものであるかの識別が可能とされる。
【０１２７】
図１７には、上記「ＭＳＩＤ」パケットの出力条件が示される。
【０１２８】
上記トレース情報出力部２７９から上記「ＭＳＩＤ」パケットが出力されるには、複数のＣＰＵをトレース対象としていること（条件Ａ）が必要とされる。本例では、第１ＣＰＵ１００及び第２ＣＰＵ１１０の双方がトレース対象としてトレース制御部２０７Ｂにおける制御レジスタ２７４に設定されていることが必要とされる。
【０１２９】
また、上記トレース情報出力部２７９から次にＣＰＵパケットを出力する予定であること（条件Ｂ）が必要とされる。
【０１３０】
そして、上記トレース情報出力部２７９から次に出力予定のＣＰＵパケットが、Ｎ×２５６個（Ｎはゼロ以上の整数）のデータパケット（制御パケットは含まない）を出力後、最初に出力するＣＰＵパケットであること、又は次に出力予定のＣＰＵパケットのデータソースが、最後に出力したＣＰＵパケットのデータソースと異なることである。
【０１３１】
以上の条件が満たされたとき、トレース情報出力部２７９から「ＭＳＩＤ」パケットが出力される。
【０１３２】
図１８には、上記トレース情報出力部２７９からのトレース情報パケットＰＫＴが出力される場合のタイミングが示される。
【０１３３】
トレース制御部２０７Ｂによってトレース同期信号がローレベルとされた期間において、デバッグ用クロック信号ｃｌｋｄに同期してトレース情報パケットＰＫＴが出力される。これは、コマンドフィールドＣＭＤ１にＢＧＣコマンドを出力した後で、コマンドフィールドＣＭＤ２とデータフィールドDA0〜DA5を出力した例である。最初の４個のデータフィールドには１６ビットの分岐先アドレス（DA3-0、DA7-4、DA11-8およびDA15-12）が格納され、次の2個のデータフィールドには8ビットの分岐元アドレス（SA3-0、SA7-4）が格納されている。
【０１３４】
図１９には、上記クロックモジュール３００の構成例が示される。
【０１３５】
上記クロックモジュール３００は、特に制限されないが、クロック制御部３０１，高速クロック生成器３０３、クロック分周器３０４、クロックドライバ３０５を含んで成る。
【０１３６】
上記高速クロック生成器３０３は、外部から与えられた基準クロック信号３０６に同期して、上記基準クロック信号３０６よりも周波数が高い高速クロック信号（内部クロック信号）ＰＬＬ−ＣＬＫを生成する。この高速クロック生成器３０３は、例えばＰＬＬ（フェーズ・ロックド・ループ）によって形成される。上記上記高速クロック生成器３０３によって形成された高速クロック信号ＰＬＬ−ＣＬＫは、後段のクロック分周器３０４で分周されることによって、互いに分周比が異なる複数の分周クロック信号ｄｉｖ＿ｃｌｋｄ、ｄｉｖ＿ｃｌｋｉ０、ｄｉｖ＿ｃｌｋｉ１、ｄｉｖ＿ｃｌｋｂが形成される。この分周クロック信号は、例えば複数のうち一部は分周比が同じであってもよい。この複数の分周クロック信号は後段のクロックドライバ３０５に伝達される。クロックドライバ３０５は、入力された分周クロック信号ｄｉｖ＿ｃｌｋｄ、ｄｉｖ＿ｃｌｋｉ０、ｄｉｖ＿ｃｌｋｉ１、ｄｉｖ＿ｃｌｋｂに基づいて負荷を駆動する。このクロックドライバ３０５からの出力クロック信号が、デバッグ用クロック信号ｃｌｋｄ、ＣＰＵ用クロック信号ｃｌｋｉ０，ｃｌｋｉ１、及び周辺モジュール用クロック信号ｃｌｋｂとされる。
【０１３７】
上記クロック制御部３０１は、クロック制御レジスタ３０２を含み、このクロック制御レジスタ３０２に設定された情報に従って上記高速クロック生成器３０４、クロック分周器３０４、及びクロックドライバ３０５の動作を制御する。上記クロック制御レジスタ３０２は、システムバス１３０を介して第１ＣＰＵ１００又は第２ＣＰＵ１１０によって書き換え可能とされる。
【０１３８】
図２０には、上記クロック分周器３０４の構成例が示される。
【０１３９】
上記クロック分周器３０４は、特に制限されないが、高速クロック生成器３０３から出力されたクロック信号ＰＬＬ−ＣＬＫを分周するための分周回路３４１、選択回路３４２〜３４５、最小選択回路３５０を含む。
【０１４０】
上記分周器３４１の分周出力には、クロック信号ＰＬＬ−ＣＬＫの１／１分周出力、１／２分周出力、１／４分周出力、１／８分周出力、１／１６分周出力、１／３２分周出力が含まれる。１／１分周出力はクロック信号ＰＬＬ−ＣＬＫの周波数に等しく、１／２分周出力、１／４分周出力、１／８分周出力、１／１６分周出力の順に周波数が低くなる。
【０１４１】
上記選択回路３４２〜３４５は、それぞれマルチプレクサ（ＭＵＸ）３４６〜３４９を含む。上記選択回路３４２に内蔵されるマルチプレクサ３４６は、ＣＰＵ用クロック信号ｃｌｋｉ０に対応するｃｌｋｉ０分周比情報に従って上記分周回路３４１の出力信号を選択することによってＣＰＵ用クロック信号ｃｌｋｉ０を出力する。上記選択回路３４３に内蔵されるマルチプレクサ３４７は、ＣＰＵ用クロック信号ｃｌｋｉ１に対応するｃｌｋｉ１分周比情報に従って上記分周回路３４１の出力信号を選択することによってＣＰＵ用クロック信号ｃｌｋｉ１を出力する。上記選択回路３４４に内蔵されるマルチプレクサ３４８は、周辺モジュール用クロック信号ｃｌｋｂに対応するｃｌｋｂ分周比情報に従って上記分周回路３４１の出力信号を選択することによって周辺モジュール用クロック信号ｃｌｋｂを出力する。周辺モジュール用クロック信号ｃｌｋｂは、ＣＰＵ用クロック信号ｃｌｋｉ０，ｃｌｋｉ１の何れかの周波数と同じか、もしくはその何れかよりも周波数が低い。
【０１４２】
上記最小選択回路３５０は、ｃｌｋｉ０分周比情報とｃｌｋｉ１分周比情報とを比較して小さいほうの分周比情報を選択してマルチプレクサ３４９に供給する。これにより、マルチプレクサ３４９は、ｃｌｋｉ０分周比情報及びｃｌｋｉ１分周比情報のうち小さいほうの分周比情報に従って上記分周回路３４１の出力信号を選択することによってデバッグ用クロック信号ｃｌｋｄを出力する。これにより、デバッグ用クロック信号ｃｌｋｄは、ＣＰＵ用クロック信号ｃｌｋｉ０，ｃｌｋｉ１のうち、周波数の高い方のクロック信号の周波数に常に等しくされ、そのようなデバッグ用クロック信号ｃｌｋｄに基づいてデバッグが行われる。
【０１４３】
図２２には、クロック分周器３０４における主要部のクロック波形が示される。
【０１４４】
本例においては、デバッグ用クロック信号ｃｌｋｄは、ＣＰＵ用クロック信号ｃｌｋｉ１の周波数に等しくされている。
【０１４５】
図２３には、ＣＰＵ用クロック信号の周波数が変更される場合が示される。
【０１４６】
本例では、ＣＰＵ用クロック信号ｃｌｋｉ０の周波数が時刻Ｔ１において変更される。誤動作防止のため、クロック周波数の変更は、最も周波数が低いクロック信号（本例の場合、ｃｌｋｂ）の立ち上がりに同期して行われる。時刻Ｔ０から時刻Ｔ１までの間は、ＣＰＵ用クロック信号ｃｌｋｉ０よりもＣＰＵ用クロック信号ｃｌｋｉ１の周波数が高いため、デバッグ用クロック信号ｃｌｋｄの周波数は、ＣＰＵ用クロック信号ｃｌｋｉ１に等しくされている。しかし、時刻Ｔ１以降は、ＣＰＵ用クロック信号ｃｌｋｉ１よりもＣＰＵ用クロック信号ｃｌｋｉ０の周波数が高いため、デバッグ用クロック信号ｃｌｋｄの周波数は、ＣＰＵ用クロック信号ｃｌｋｉ０に等しくされている。周波数変更がある場合においても、上記最小選択回路３５０の制御及びその他の回路の制御によって、動的により高い周波数のＣＰＵクロック信号がデバッグ用クロック信号ｃｌｋｄとして供給され、それに基づいてデバッグ回路は動作される。
【０１４７】
このように複数のＣＰＵを含むマイクロプロセッサのシステムデバッグにおいて、複数のＣＰＵ間の動作速度が異なる場合でも、デバッグ用クロック信号ｃｌｋｄは、ＣＰＵ用クロック信号ｃｌｋｉ０，ｃｌｋｉ１のうち、高い方のクロック信号の周波数に常に等しくされることから、デバッグ回路２００に供給されるデバッグ用クロック信号ｃｌｋｄが適切な周波数に設定される。これにより、円滑なトレースを行うことができる。
【０１４８】
図２１には、上記クロックドライバ３０５の構成例が示される。
【０１４９】
上記クロックドライバ３０５は、特に制限されないが、上記クロック分周器３０４からの分周クロック信号ｄｉｖ＿ｃｌｋｄ、ｄｉｖ＿ｃｌｋｉ０、ｄｉｖ＿ｃｌｋｉ１、ｄｉｖ＿ｃｌｋｂに対応する４個のアンドゲート（ＡＮＤ）３５１〜３５４を含む。アンドゲート３５１〜３５４からそれぞれＣＰＵ用クロック信号ｃｌｋｉ０，ｃｌｋｉ１、周辺モジュール用クロック信号ｃｌｋｂ、及びデバッグ用クロック信号ｃｌｋｄが出力される。上記４個のアンドゲート３５１〜３５４における一方の入力端子には、対応する分周クロック信号ｄｉｖ＿ｃｌｋｄ、ｄｉｖ＿ｃｌｋｉ０、ｄｉｖ＿ｃｌｋｉ１、ｄｉｖ＿ｃｌｋｂが伝達される、そして、上記アンドゲート３５１〜３５３における他方の入力端子には、クロック制御部３０１からドライバ制御情報ｃｌｋｉ０＿ｅｎ、ｃｌｋｉ１＿ｅｎ、ｃｌｋｉ０＿ｅｎが伝達される。アンドゲート３５４における他方の入力端子には、クロック制御部３０１からデバッグモード信号が伝達される。このデバッグモード信号は、マイクロコンピュータ１がデバッグモードにされている期間のみ、ハイレベルにアサートされ、マイクロコンピュータ１の非デバッグモードにおいてはローレベルにネゲートされる。従って、デバッグ用クロック信号ｃｌｋｄは、マイクロコンピュータ１がデバッグモードにされている期間のみ形成され、マイクロコンピュータ１の非デバッグモードにおいては形成されない。これによりデバッグ回路２００が動作するのは、マイクロコンピュータ１がデバッグモードにされている期間のみであり、マイクロコンピュータ１の非デバッグモードにおいては動作しないので、マイクロコンピュータ１の非デバッグモードにおける消費電流の低減を図ることができる。
【０１５０】
上記例によれば、以下の作用効果を得ることができる。
【０１５１】
（１）複数のＣＰＵを含むマイクロプロセッサのシステムデバッグにおいて、複数のＣＰＵ間の動作速度が異なる場合でも、デバッグ用クロック信号ｃｌｋｄは、ＣＰＵ用クロック信号ｃｌｋｉ０，ｃｌｋｉ１のうち、高い方のクロック信号の周波数に常に等しくされることから、デバッグ回路２００に供給されるデバッグ用クロック信号ｃｌｋｄが適切な周波数に設定される。これにより、複数の何れのＣＰＵが高速動作した場合においても、デバッグ回路は高速クロックが供給され、それに同期動作して円滑なトレースを行うことができる。
【０１５２】
（２）アンドゲート３５４における他方の入力端子には、クロック制御部３０１からデバッグモード信号が伝達されるようにすることで、デバッグ用クロック信号ｃｌｋｄは、マイクロコンピュータ１がデバッグモードにされている期間のみ形成され、マイクロコンピュータ１の非デバッグモードにおいては形成されないようにできる。マイクロコンピュータ１の非デバッグモードにおいてデバッグ回路２００を動作させないことにより、マイクロコンピュータ１の非デバッグモードにおける消費電流の低減を図ることができる。
【０１５３】
以上本発明者によってなされた発明を具体的に説明したが、本発明はそれに限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。
【０１５４】
例えば、上記の例では、ＣＰＵを２個搭載するマイクロコンピュータについて説明したが、ＣＰＵを３個以上搭載する場合には、それに応じてブレーク要求マスク回路（２３３，２３４）の数、同時実行制御レジスタ２２２のビット数、リセット制御レジスタ５５のビット数などのを増やすことにより、容易に対応可能とされる。また、ＣＰＵは同一の半導体基板上に形成されていてもよいし、同一のパッケージ内に形成される複数の半導体基板上に形成される複数のＣＰＵであってもよい。
【０１５５】
例えば、一つの半導体基板上にＣＰＵを３つ搭載する場合、１つのブレーク要求マスク回路（２３３、２３４）においてブレーク要求をマスクする設定をすると、選択的に２つのＣＰＵを同時にブレークさせることができる。また、同時実行制御レジスタ２２２のビット数を３とし、そのうち２ビットを論理値“１”にセットすると、選択的に２つのＣＰＵを同時に実行させることができる。さらに、リセット制御レジスタ５５のビット数を３とし、そのうち２ビットを論理値“１”にセットした後、論理値“０”にクリアすることにより、選択的に２つのＣＰＵを同時にリセットできる。
【０１５６】
ＣＰＵ用クロック信号ｃｌｋｉ０，ｃｌｋｉ１の周波数が、高速クロック生成器３０３の出力クロック信号ＰＬＬ−ＣＬＫよりも高くなることは無いから、高速クロック生成器３０３の出力クロック信号ＰＬＬ−ＣＬＫをそのままデバッグ用クロック信号ｃｌｋｄに用いるようにしても、上記の例の場合と同様の作用効果を得ることができる。尚、この場合、図２０における選択回路３４５や最小選択回路３５０は不要とされる。
【０１５７】
上記の例では、システムバスは、バス権を取得して各種データ転送制御を行うバスについて説明したが、例えば、複数のバスがあり、各バスが並列に動作可能であって、上記各バスに接続される複数のバスマスタが、アクセス対象となるデバイスが重ならない限り並列に動作可能なマルチレイヤバスであってもよいし、リクエストバスとレスポンスバスとを分離したスプリットトランザクションバスで構成されていてもよい。
【０１５８】
以上の説明では主として本発明者によってなされた発明をその背景となった利用分野であるマイクロコンピュータに適用した場合について説明したが、複数のＣＰＵを内蔵する各種データ処理装置に広く適用することができる。
【０１５９】
本発明は、少なくともＣＰＵを備えることを条件に適用することができる。
【符号の説明】
【０１６０】
１  マイクロコンピュータ
２  デバッグ回路
５  デバッグ端子
１０  第１ＣＰＵ
１１  第２ＣＰＵ
１２−１〜１２−ｎ  周辺モジュール
１３  システムバス
２１  デバッグインタフェース
２２  実行制御回路
２２１  ストール制御信号生成回路
２２２  同時実行制御レジスタ
２３  ブレーク制御回路
３０−１  プログラム要因ブレーク要求マスク部
３０−２  外部要因ブレーク要求マスク部
３０−３  条件成立ブレーク要求マスク部
２３０  プログラム要因ブレーク要求回路
２３１  外部要因ブレーク要求回路
２３２  条件成立ブレーク要求回路
２３３，２３４  ブレーク要求マスク回路
ＳＴＬ−ＣＮＴ  ストール制御信号
ＢＲＫ−ＡＣＫ  ブレークアクノリッジ信号
ＲＴＢ−ＣＮＴ  復帰命令実行信号
ＳＣＮＤＭ−ＦＬＧ  シーケンシャル条件一致フラグ
１００  第１ＣＰＵ
１１０  第２ＣＰＵ
１２０−１〜１２０−ｎ  周辺モジュール
１３０  システムバス
１４０  ＤＭＡＣ
２００  デバッグ回路
２０１  デバッグインタフェース
２０２  実行制御回路
２０３  ブレーク制御回路
２０４  デバッグアクセス回路
２０５  トレース取得回路
２０５Ａ  トレース処理部
２０５Ｂ  トレース制御部
２０７  トレース取得回路
２０７Ａ  トレース処理回路
２０７Ｂ  トレース制御部
２５１〜２５３  トレース情報入力部
２５４  制御レジスタ
２５５〜２５７，２６１  同期化部
２５８  トレース情報処理部
２５９〜２６１  選択部
２６２  トレースメモリ
２７１〜２７３  トレース情報入力部
２７４  制御レジスタ
２７５〜２７７  同期化部
２７８  トレース情報処理部
２７９  トレース情報出力部
３００  クロックモジュール
３０１  クロック制御部
３０２  クロック制御レジスタ
３０３  高速クロック生成器
３０４  クロック分周器
３０５  クロックドライバ
３４１  分周回路
３４２〜３４５  選択回路
３４６〜３４９  マルチプレクサ
３５０  最小選択回路
３５１〜３５４  アンドゲート
【図１】
2011081834.tif 000003
【図２】
2011081834.tif 000004
【図３】
2011081834.tif 000005
【図４】
2011081834.tif 000006
【図５】
2011081834.tif 000007
【図６】
2011081834.tif 000008
【図７】
2011081834.tif 000009
【図８】
2011081834.tif 000010
【図９】
2011081834.tif 000011
【図１０】
2011081834.tif 000012
【図１１】
2011081834.tif 000013
【図１２】
2011081834.tif 000014
【図１３】
2011081834.tif 000015
【図１４】
2011081834.tif 000016
【図１５】
2011081834.tif 000017
【図１６】
2011081834.tif 000018
【図１７】
2011081834.tif 000019
【図１８】
2011081834.tif 000020
【図１９】
2011081834.tif 000021
【図２０】
2011081834.tif 000022
【図２１】
2011081834.tif 000023
【図２２】
2011081834.tif 000024
【図２３】
2011081834.tif 000025