(57)【特許請求の範囲】
【請求項１】
コンピュータシステムにおいて、
少なくとも１個の中央処理装置、
前記少なくとも１個の中央処理装置へ結合されているメモリユニット、
前記コンピュータシステムにおいて設けられている１組のウオッチポイントであって、前記１組のウオッチポイントにおける各ウオッチポイントが、前記ウオッチポイントがトリガーされるべき条件を設定するための第一複数個のフィールドを具備しているプログラム可能なプレコンディションレジスタと、前記ウオッチポイントがトリガーされた場合に前記コンピュータシステムがとるべきアクションを設定するための第２複数個のフィールドを具備しているプログラム可能なアクションレジスタと、前記コンピュータシステムにおける特定の箇所においての処理中のデータを前記プレコンディションレジスタ内に設定されているトリガー条件と比較し且つ前記トリガー条件が満足される場合に前記アクションレジスタ内に設定されているアクションを読み出してウオッチポイントの出力として出力する比較・トリガー手段と、を有している１組のウオッチポイント、
１組のラッチ、
前記１組のウオッチポイントの内の第１ウオッチポイントがトリガーされた場合に前記第１ウオッチポイントの前記アクションレジスタによって指定される前記１組のラッチの内の一つのラッチを前記第１ウオッチポイントの前記比較・トリガー手段と別の第２ウオッチポイントの前記プレコンディションレジスタとの間に接続させる接続手段、
を有していることを特徴とするコンピュータシステム
【請求項２】
請求項１において、前記接続手段が、対応するウオッチポイントの出力と前記１組のラッチにおける各ラッチの入力との間に結合しているデマルチプレクサを有していることを特徴とするコンピュータシステム。
【請求項３】
請求項２において、前記接続手段が、前記１組のラッチにおける各ラッチの出力と対応するウオッチポイントのプレコンディションレジスタとの間に結合しているマルチプレクサを有していることを特徴とするコンピュータシステム。
【請求項４】
請求項３において、更に、前記１組のウオッチポイントに対応して同数の１組のデマルチプレクサが設けられていることを特徴とするコンピュータシステム。
【請求項５】
請求項４において、更に、前記１組のウオッチポイントに対応して同数の１組のデマルチプレクサが設けられていることを特徴とするコンピュータシステム。
【請求項６】
請求項５において、更に、前記１組のラッチにおける１個のラッチと夫々関連してトリガーインラッチが設けられており、前記トリガーインラッチは、前記コンピュータシステム外部の信号に応答して、前記ラッチをセット又はリセットさせる状態を有していることを特徴とするコンピュータシステム。
【請求項７】
請求項６において、単一の集積回路チップ上に実現されていることを特徴とするコンピュータシステム。
【請求項８】
請求項２において、前記デマルチプレクサが、前記第１ウオッチポイントの前記アクションレジスタの状態に応答して、前記１組のラッチにおける１個のラッチの入力を選択するために前記デマルチプレクサを制御する選択出力を有していることを特徴とするコンピュータシステム。
【請求項９】
請求項３において、前記マルチプレクサが、前記第１ウオッチポイントの前記プレコンディションレジスタの状態に応答して、前記１組のラッチにおける１個のラッチの出力を選択するために前記マルチプレクサを制御する選択入力を有していることを特徴とするコンピュータシステム。
【請求項１０】
請求項１において、前記プレコンディションレジスタが１組のプレコンディションコードを格納し、前記１組のプレコンディションコードが前記１組のウオッチポイントにおける各ウオッチポイントに対して同一であることを特徴とするコンピュータシステム。
【請求項１１】
請求項１０において、前記アクションレジスタが１組のアクションコードを格納し、前記１組のアクションコードが前記１組のウオッチポイントにおける各ウオッチポイントに対して同一であることを特徴とするコンピュータシステム。
【請求項１２】
請求項１０において、前記１組のウオッチポイントが、オペランドアドレス、命令値、命令アドレス、分岐、ブレークポイント命令、印刷命令に対する複数個のタイプのウオッチポイントを包含していることを特徴とするコンピュータシステム。
【請求項１３】
請求項１２において、各ウオッチポイントが、更に、少なくとも１個のマッチコードを格納するプログラム可能なマッチレジスタを有しており、前記マッチコードは前記処理中のデータが前記プレコンディションレジスタ内に設定されているトリガー条件を満足した後に前記ウオッチポイントがトリガーされるべき付加的な条件を表していることを特徴とするコンピュータシステム。
【請求項１４】
請求項１３において、前記マッチコードが、アドレスレンジ、データ値、データマスク、命令値、命令マスク、分岐タイプのうちの少なくとも１つを有していることを特徴とするコンピュータシステム。
【請求項１５】
請求項１０において、前記１組のプレコンディションコードが、基本イネーブルコード、アドレス空間識別子イネーブルコード、アドレス空間識別子コード、ラッチイネーブルコード、ラッチ識別子コード、イベントカウンタイネーブルコード、イベントカウンタ識別子コード、ＩＳＡモードイネーブルコード、ＣＰＵスーパーバイザリモード選択コードを有していることを特徴とするコンピュータシステム。
【請求項１６】
請求項１１において、前記１組のアクションコードが、例外イネーブルコード、イベントカウンタデクリメントイネーブルコード、イベントカウンタ識別子コード、ラッチ変更コード、ラッチ識別子コード、性能カウンタインクリメントイネーブルコード、リセット全性能カウンタコード、性能カウンタ識別子コード、トレースイネーブルコード、トレースメッセージタイプコード、イネーブルトレース時間スタンプコード、トリガアウトイネーブルコード、インタラプトイネーブルコードを有していることを特徴とするコンピュータシステム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、大略、マイクロコンピュータに関するものであって、更に詳細には、マイクロコンピュータ上でデバッギング動作を実施する方法及び装置に関するものである。
【０００２】
【従来の技術】
通常マイクロコンピュータであるシステム・オン・チップ（ＳＯＣ）装置は公知である。これらの装置は、通常、プロセッサと、１個又はそれ以上のモジュールとバスインターフェースと、メモリ装置と、情報を通信するための１つ又はそれ以上のシステムバスとを有している。マイクロコンピュータを設計し、テストし、チェックする場合に、マイクロコンピュータ上で実行するプログラムに関する問題を識別し且つ補正することが可能であるようなモードでマイクロコンピュータを動作させることが必要である。この問題を識別し且つ補正する処理は「デバッギング」又はデバッグとして知られている。複数個のモジュール及びそれらの通信はチップ内部において発生するものであるから、この情報に対するアクセスは、ソフトウエア又はハードウエアにおいて問題が発生する場合には一般的に困難なものである。従って、これらのシステムに関するデバッギングは簡単なものではない。これらのＳＯＣの開発の結果として、チップ上での性能をモニタし且つ情報をトレースするための特別のデバッギングシステムが開発されている。このようなシステムは、典型的に、シリアル通信を介してプロセッサへアクセスする例えばデバッグ通路及びデバッグソフトウエア等の専用のハードウエア又はソフトウエアを包含している。
【０００３】
然しながら、ＳＯＣのデバッギングは、通常、１個又はそれ以上のプロセッサレジスタ又はメモリ位置の侵略的なモニタ動作が行われる。メモリ位置へのアクセスは、時折、破壊的なものであり、且つデバッギングツールから読取られる位置へのデータアクセスはプロセッサの性能を阻害する場合がある。同様に、アクセスは、通常、システムバスを介してプロセッサ、メモリ、又はその他のモジュールに対して行われ、且つ一般的な動作を実行するためのシステムバスを介して使用可能な帯域幅を減少させる場合がある。あるデバッギングシステムではプロセサと同一のクロック速度で動作するものではなく、且つ例えばトレース情報を採取すること等のデバッギングの特徴を使用することを可能とするためにはプロセッサの性能を遅くさせることが必要な場合がある。プロセッサを遅くさせるか又は休止させることにより、あるタイプのエラーが再現されない場合があり、従って、検知又は補正することが不可能な場合がある。更に、プロセッサの速度が速いために正確な情報が全く得られない場合があり、情報がスキュー即ち歪みが発生し又は欠落する場合がある。
【０００４】
幾つかのシステムでは、時々デバッグユニット又はモジュールと呼称されるプロセッサをデバッギングするための専用のＳＯＣ内の１個又はそれ以上の専用の機能ユニットを有している。然しながら、これらのユニットは、例えばトレース情報等の情報を得る場合にプロセッサの動作に影響を与える。これらの装置は、典型的に、プロセッサよりもより遅い速度で機能し、従って、それらがプロセッサのデータへアクセスする場合にはプロセッサの動作に影響を与える。デバッグシステムはターゲットプロセッサ自身の上でデバッグコードを稼動させることに依存しており、且つこのコードは、通常、デバッグされるものの中に組込まれている。従って、デバッグコードが存在することは、メモリレイアウトの点で侵略的なものであり、且つ命令ストリームが乱される。
【０００５】
インサーキットエミュレータ（ＩＣＥ）と呼称されるその他のデバッギングシステムはオンチップハードウエアとマッチしており且つそれと接続されている。従って、オンチップ接続がエミュレータ上にマッピングされ且つテストされるべきチップに対して特別に設計されているエミュレータ上でアクセス可能である。然しながら、エミュレータはある適用に対しては法外に高価なものである。何故ならば、それらは特別に開発されたハードウエアであり、全てのオンチップ速度又は通信とマッチするものではないからである。従って、エミュレータシステムは不適切である。更に、これらのシステムは、通常、システムバスを介して情報を転送し、従って必然的にプロセッサの性能に影響を与える。これらのＩＣＥは、通常、同一の製造業者からの外部デバッグ装置とのみインターフェースさせることが可能なプロプライエテリィ即ち私有の通信インターフェースを使用する。
【０００６】
トラブルシューティング用の別の技術はロジックステートアナライザ（ＬＳＡ）即ち論理状態解析器を使用するものであり、それは全てのオフチップ通信の状態をモニタする集積回路のピンへ接続されている装置である。ＬＳＡ装置は、通常、高価な装置であり、チップ内部のピン情報へのアクセスを可能とするものではない。
【０００７】
従来、マイクロコンピュータをデバッグするために使用することが可能な２つの主要なタイプの開発システムアーキテクチャが存在している。図１は第一のタイプのデバッギングシステムを示している。このシステムはターゲットプロセッサボード１０を有している。ターゲットプロセッサボード１０はその上に配設されているターゲットプロセッサ１２を有している。ターゲットプロセッサ１２は、デバッグシステムによってデバッグされるマイクロコンピュータである。データリンク１６を介してターゲットプロセッサ１２へ結合されているモニタＲＯＭ１４も設けられている。シリアルポートインターフェース１８がデータリンク２０を介してターゲットプロセッサ１２をデータリンク２４を介してホストコンピュータ２２と結合させるために設けられている。ホストコンピュータ２２はソフトウエアバックプレーン／オペレーティングシステム２６を稼動させ、それはソフトウエアデバッガーシステム２８がターゲットプロセッサ１２へアクセスすることを可能とする。図１に示したシステムにおいては、ターゲットプロセッサ１２は最小のデバッグ特徴を有しているか又はデバッグ特徴を有していない場合がある。ターゲットプロセッサ１２の動作をデバッギングするのに必要なツールの殆どはデバッガーソフトウエアシステム２８内に設けられている。
【０００８】
図１のシステムは実施することが可能なデバッギング動作のタイプが幾分制限されている。ターゲットプロセッサ１２とホストコンピュータ２２との間で通信を行うためにシリアルポートが使用されているので、このシステムは、典型的に、ターゲットプロセッサ１２をしてホストコンピュータ２２上で実行するソフトウエアからブートさせるために直接的にＣＰＵを制御することが可能なものではない。更に、図１のデバッギングシステムは侵略的なものである場合がある。何故ならば、このシステムはターゲットプロセッサ１２自身の上のコードを実行することに依存しているからである。従って、ホストコンピュータ２２はターゲットプロセッサ１２上のコードの実行を乱す場合があり且つ実際に乱すこととなる。ホストコンピュータ２２がデバッギング動作期間中にターゲットプロセッサ１２の動作を実際に乱すものであるから、デバッギング動作の結果はある不確定性に影響される場合がある。何故ならば、デバッギングシステムが存在していること自身ターゲットプロセッサの動作を変える場合があるからである。
【０００９】
図２は別の従来のデバッギングシステムを示している。図２のデバッギングシステムにおいては、ターゲットプロセッサ１２がデバッグリンク３２を介してデバッグアダプタ３０へ接続している。ホストコンピュータ２２がデバッガーシステム２８をサポートするソフトウエアバックプレーン／オペレーティングシステム２６を稼動する。ホストコンピュータ２２は双方向データリンク３４を介してデバッグアダプタ３０と通信を行う。デバッグアダプタ３０は「インテリジェント」なものである。それは、デバッグリンクの通信プロトコルとデータリンク３４の通信プロトコルとの間で翻訳を行うためにアダプタソフトウエアを実行するランダムアクセスメモリ３８及びＣＰＵ３６を有している。デバッグデータリンク３４は、例えば、イーサーネット接続又はＰＣＩバスとすることが可能である。
【００１０】
オプションとして、例えばロジックアナライザ４０等の外部ハードウエアを設けることが可能であり、それはトリガインデータリンク４２を介してトリガ信号をターゲットプロセッサ１２へ供給し且つトリガアウトデータリンク４４を介してターゲットプロセッサ１２からトリガ信号を受取ることが可能である。
【００１１】
図２のデバッグシステムは、図１のシステムにおいて必要とされていたようなターゲットプロセッサをデバッギングシステムとインターフェースさせるための付加的なオフチップハードウエアを必要とするものではない。このことはデバッギングシステムのエキストラなコンポーネントへ接続する前に付加的なコンポーネントと結合させることを必要とすることなしに生産用のターゲットプロセッサ１２をデバッギングすることを可能とする。更に、システム内にデバッグアダプタ３０を設けているので、向上させたデバッギング特徴を与えることが可能である。然しながら、図２のデバッギングシステムは、デバッギングソフトウエアがターゲットプロセッサ１２の動作を乱す場合があるという点において少なくとも侵略的であるという制限を被るものである。
【００１２】
【発明が解決しようとする課題】
本発明は、以上の点に鑑みなされたものであって、上述した如き従来技術の欠点を解消し、改良したマイクロコンピュータデバッグ装置及び方法を提供することを目的とする。
【００１３】
【課題を解決するための手段】
本発明の１つの側面によれば、少なくとも１個の中央処理装置と、該少なくとも１個の中央処理装置へ結合されているメモリユニットと、該コンピュータシステムにおいて画定（定義）されている１組のウォッチポイント（ｗａｔｃｈｐｏｉｎｔ）とを有しているコンピュータシステムが提供され、該１組のウォッチポイントにおける各ウォッチポイントは、該１組のウォッチポイントにおける各ウォッチポイントに対して同一な１組のプレコンディション（事前条件）コードを格納するプログラム可能なプレコンディション（ｐｒｅｃｏｎｄｉｔｉｏｎ）レジスタ、該１組のウォッチポイントにおける各ウォッチポイントに対して同一の１組のアクションコードを格納するプログラム可能なアクション（ａｃｔｉｏｎ）レジスタ、及び第一比較器を有している。第一比較器は、該プレコンディションレジスタへ結合されている入力端を具備しており、且つ該1組のプレコンディションコードにおける少なくとも1個のプレコンディションコードを該コンピュータシステムにおける第一データ値と比較し且つそれに応答して該アクションレジスタへ信号を供給する。
【００１４】
本発明の側面によれば、該コンピュータシステムにおける第一データ値が該プレコンディションコードを満足する場合に、該比較器が該アクションレジスタへ信号を供給する。
【００１５】
本発明の別の側面によれば、該コンピュータシステムが該アクションレジスタへ供給される信号に応答し且つ該アクションコードによって決定され、該ウォッチポイントがトリガされたことを表す信号を発生する。
【００１６】
本発明の別の側面によれば、該コンピュータシステムは該1組のウォッチポイントにおける特定のウォッチポイントに対して該1組のプレコンディションコードにおけるどのプレコンディションコードがアクティブ即ち活性状態であるかを選択するハードウエア及びソフトウエアを有している。
【００１７】
本発明の別の側面によれば、該コンピュータシステムは、該1組のウォッチポイントにおける特定のウォッチポイントに対して該1組のアクションコードにおけるどのアクションコードがアクティブ即ち活性状態にあるかを選択するハードウエア及びソフトウエアを有している。
【００１８】
本発明の別の側面によれば、該1組のウォッチポイントはオペランドアドレス、命令値、命令アドレス、分岐、ブレークポイント命令、印刷命令に対するウォッチポイントのタイプを包含している。
【００１９】
本発明の別の側面によれば、各ウォッチポイントは、更に、少なくとも１個のマッチコードを格納するプログラム可能なマッチ（ｍａｔｃｈ）レジスタを有しており、格納されるマッチコードはウォッチポイントのタイプに依存する。
【００２０】
本発明の別の側面によれば、本コンピュータシステムは、更に、第一比較器へ結合している入力端を具備しており、第一比較器に応答し、且つ該少なくとも1個のマッチコードを本コンピュータシステムにおける第二データ値と比較し且つそれに応答して該アクションレジスタへ信号を供給する第二比較器を有している。
【００２１】
本発明の別の側面によれば、該マッチコードはアドレスレンジ（範囲）、データ値、データマスク、命令値、命令マスク、分岐タイプ、及び該少なくとも1個の中央処理装置に対して外部的な信号のうちの少なくとも1つを包含している。
【００２２】
本発明の別の側面によれば、本コンピュータシステムにおける第二データ値が該マッチコードとマッチ即ち一致する場合に、該第二比較器が該アクションレジスタへ信号を供給する。
【００２３】
本発明の別の側面によれば、該1組のプレコンディションコードが基本イネーブルコード、アドレス空間識別子イネーブルコード、アドレス空間識別子コード、ラッチイネーブルコード、ラッチ識別子コード、イベントカウンタイネーブルコード、イベントカウンタ識別子コード、ＩＳＡモードイネーブルコード、ＣＰＵスーパーバイザーモード選択コードを包含している。
【００２４】
本発明の別の側面によれば、該1組のアクションコードは、例外イネーブルコード、イベントカウンタデクリメントイネーブルコード、イベントカウンタ識別子コード、ラッチ変更コード、ラッチ識別子コード、性能カウンタインクリメントイネーブルコード、リセット全性能カウンタコード、性能カウンタ識別子コード、トレースイネーブルコード、トレースメッセージタイプコード、イネーブルトレース時間スタンプコード、トリガアウトイネーブルコード、インタラプトイネーブルコードを包含している。
【００２５】
本発明の別の側面によれば、本コンピュータシステムは単一の集積回路チップ上で実現されている。
【００２６】
本発明の別の側面によれば、各ウォッチポイントは、少なくとも1個のマッチコードを格納するプログラム可能なマッチレジスタを有しており、格納されるマッチコードはウォッチポイントのタイプに依存し、且つプレコンディションレジスタと、マッチレジスタと、アクションレジスタとがメモリユニット内の夫々のメモリ位置を占有している。
【００２７】
本発明の別の側面によれば、少なくとも1個の中央処理装置と、該少なくとも1個の中央処理装置へ結合されているメモリユニットと、本コンピュータシステムにおいて画定されている1組のウォッチポイントとを有するコンピュータシステムが提供され、該1組のウォッチポイントにおける各ウォッチポイントは、該1組のウォッチポイントにおける各ウォッチポイントに対して同一である少なくとも1個のプレコンディションコードを格納するプログラム可能な第一格納手段と、該1組のウォッチポイントにおける各ウォッチポイントに対して同一である少なくとも１個のコンピュータアクションコードを格納するプログラム可能な第二格納手段と、該プログラム可能な第一格納手段に応答する入力端を具備しており、該少なくとも１個のプレコンディションコードを本コンピュータシステムにおけるデータ値と比較し且つそれに応答して該プログラム可能な第二格納手段へ信号を供給する比較器とを有している。
【００２８】
本発明の別の側面によれば、少なくとも１個の中央処理装置及び該少なくとも１個の中央処理装置へ結合されているメモリユニットを有しているコンピュータシステムにおいてウォッチポイントをトリガする方法が提供され、該方法は、１組のプレコンディションレジスタ及び１組のアクションレジスタを画定することによって本コンピュータシステム内に１組のウォッチポイントを画定し、該１組のウォッチポイントにおける各ウォッチポイントに対して同一である１組のプレコンディションコードをプレコンディションレジスタ内に格納し、該１組のウォッチポイントにおける各ウォッチポイントに対して同一である１組のアクションコードをアクションレジスタ内に格納し、該１組のプレコンディションコードにおける少なくとも１個のプレコンディションコードを本コンピュータシステムにおける第一データ値と比較し且つそれに応答して該アクションレジスタへ信号を供給する、上記各ステップを有している。
【００２９】
本発明の別の側面によれば、該比較するステップは、本コンピュータシステムにおける第一データ値が該プレコンディションコードを満足する場合に該アクションレジスタへ信号を供給するステップを包含している。
【００３０】
本発明の別の側面によれば、本方法は、該１組のプレコンディションコードのうちでどのプレコンディションコードが該１組のウォッチポイントにおける特定のウォッチポイントに対してアクティブであるかを選択するステップを有している。
【００３１】
本発明の別の側面によれば、本方法は、該１組のアクションコードのうちでどのアクションコードが該１組のウォッチポイントにおける特定のウォッチポイントに対してアクティブであるかを選択するステップを有している。
【００３２】
本発明の別の側面によれば、該１組のウォッチポイントはオペランドアドレス、命令値、命令アドレス、分岐、ブレークポイント命令、印刷命令に対するウォッチポイントのタイプを包含している。
【００３３】
本発明の別の側面によれば、本方法は、プログラム可能なマッチレジスタを画定し且つ該マッチレジスタ内に少なくとも１個のマッチコードを格納するステップを有しており、該マッチコードはウォッチポイントのタイプに依存する。
【００３４】
本発明の別の側面によれば、本方法は、該少なくとも１個のプレコンディションコードが満足された後に、該少なくとも１個のマッチコードを本コンピュータシステムにおける第二データ値と比較するステップを有している。
【００３５】
本発明の別の側面によれば、該第二データ値が該マッチコードとマッチする場合に、該信号がアクションレジスタへ供給される。
【００３６】
本発明の別の側面によれば、該１組のプレコンディションコードは基本イネーブルコード、アドレス空間識別子イネーブルコード、アドレス空間識別子コード、ラッチイネーブルコード、ラッチ識別子コード、イベントカウンタイネーブルコード、イベントカウンタ識別子コード、ＩＳＡモードイネーブルコード、ＣＰＵスーパーバイザーモード選択コードを包含している。
【００３７】
本発明の別の側面によれば、本コンピュータシステムは、例外イネーブルコード、イベントカウンタデクリメントイネーブルコード、イベントカウンタ識別子コード、ラッチ変更コード、ラッチ識別子コード、性能カウンタインクリメントイネーブルコード、リセット全性能カウンタコード、性能カウンタ識別子コード、トレースイネーブルコード、トレースメッセージタイプコード、イネーブルトレース時間スタンプコード、トリガアウトイネーブルコード、インタラプトイネーブルコードを包含している１組のアクションコードを有している。
【００３８】
本発明の別の側面によれば、本コンピュータシステムは、更に、メモリユニット内の夫々のメモリ位置においてプレコンディションレジスタ、マッチレジスタ、アクションレジスタを画定するステップを有している。
【００３９】
本発明の別の側面によれば、少なくとも１個の中央処理装置及び該少なくとも１個の中央処理装置に結合されているメモリユニットを有しているコンピュータシステムにおいてデバッギングデータをフィルタする方法が提供され、該方法は１組のプレコンディションレジスタ及び１組のアクションレジスタを画定することによって本コンピュータシステム内に１組のウォッチポイントを画定し、該１組のウォッチポイントにおける各ウォッチポイントに対して適用されるべき１組の同一のプレコンディションコードを画定し、該１組のウォッチポイントにおける各ウォッチポイントに対して適用されるべき１組の同一のアクションコードを画定し、該１組のプレコンディションレジスタにおける各プレコンディションレジスタ内に該１組のプレコンディションコードを格納し、該１組のアクションレジスタにおける各アクションレジスタ内に該１組のアクションコードを格納し、該１組のプレコンディションコードのうちでどのプレコンディションコードが特定のウォッチポイントに対してアクティブであるかを選択し、該１組のアクションコードのうちでどのアクションコードが特定のウォッチポイントに対してアクティブであるかを選択し、プログラムを実行するために本コンピュータシステムを動作させ、本コンピュータシステムにおけるデバッギングデータを特定のウォッチポイントに対するアクティブなプレコンディションコードと比較し、本コンピュータシステムにおけるデバッギングデータが該特定のウォッチポイントに対するアクティブなプレコンディションコードを満足する場合に該特定のウォッチポイントに対するアクションレジスタへ信号を送り、本コンピュータシステムを該特定のウォッチポイントに対するアクティブなアクションコードに対して応答させる、上記各ステップを有している。
【００４０】
本発明の別の側面によれば、該１組のウォッチポイントは、オペランドアドレス、命令値、命令アドレス、分岐、ブレークポイント命令、印刷命令に対するウォッチポイントのタイプを包含している。
【００４１】
本発明の別の側面によれば、該１組のプレコンディションコードは基本イネーブルコード、アドレス空間識別子イネーブルコード、アドレス空間識別子コード、ラッチイネーブルコード、ラッチ識別子コード、イベントカウンタイネーブルコード、イベントカウンタ識別子コード、ＩＳＡモードイネーブルコード、ＣＰＵスーパーバイザーモード選択コードを包含している。
【００４２】
本発明の別の側面によれば、該1組のアクションコードは例外イネーブルコード、イベントカウンタデクリメントイネーブルコード、イベントカウンタ識別子コード、ラッチ変更コード、ラッチ識別子コード、性能カウンタインクリメントイネーブルコード、リセット全性能カウンタコード、性能カウンタ識別子コード、トレースイネーブルコード、トレースメッセージタイプコード、イネーブルトレース時間スタンプコード、トリガアウトイネーブルコード、インタラプトイネーブルコードを包含している。
【００４３】
本発明の別の側面によれば、本方法は、プログラム可能なマッチレジスタを画定し且つ該マッチレジスタ内に少なくとも１個のマッチコードを格納するステップを有しており、該マッチコードはウォッチポイントのタイプに依存する。
【００４４】
本発明の別の側面によれば、本方法は、該少なくとも１個のプレコンディションコードが満足された後に、該少なくとも１個のマッチコードを本コンピュータシステムにおける第二データ値と比較するステップを有している。
【００４５】
本発明の別の側面によれば、該第二データ値が該マッチコードとマッチする場合に該アクションレジスタへ信号が供給される。
【００４６】
本発明の別の側面によれば、該マッチコードは、アドレス範囲、データ値、データマスク、命令値、命令マスク、分岐タイプ、該少なくとも1個の中央処理装置に対して外部的な信号のうちの少なくとも1つを包含している。
【００４７】
本発明の別の側面によれば、本方法は、プレコンディションレジスタ、マッチレジスタ、アクションレジスタをメモリユニットにおける夫々のメモリ位置に画定するステップを有している。
【００４８】
本発明の別の側面によれば、少なくとも１個の中央処理装置と、該少なくとも１個の中央処理装置へ結合されているメモリユニットと、本コンピュータシステムに内に画定されている１組のウォッチポイントであって、各ウォッチポイントがプログラム可能なプレコンディションレジスタとプログラム可能なアクションレジスタとを有している１組のウォッチポイント、１組のラッチ、アクションレジスタの出力を選択したラッチの入力ヘ結合させるために該１組のラッチにおける１つのラッチを選択する選択回路とを有している。
【００４９】
本発明の別の側面によれば、該選択回路がアクションレジスタの出力へ結合されている入力を具備しており且つ各々が該１組のラッチにおける各ラッチの入力へ夫々結合している複数個の出力を具備しているデマルチプレクサを有している。
【００５０】
本発明の別の側面によれば、該選択回路が該１組のラッチにおける各ラッチの出力へ夫々結合している複数個の入力及びプレコンディションレジスタへ結合している入力とを具備しているマルチプレクサを有している。
【００５１】
本発明の別の側面によれば、本コンピュータシステムは、更に、該１組のウォッチポイントに対応する１組のデマルチプレクサを有しており、該１組のデマルチプレクサにおける各デマルチプレクサは該１組のウォッチポイントにおける夫々のアクションレジスタの出力へ夫々結合している入力を具備しており、該１組のデマルチプレクサにおける各デマルチプレクサは該１組のラッチにおける各ラッチの入力へ夫々結合している複数個の出力を具備している。
【００５２】
本発明の別の側面によれば、本コンピュータシステムは、更に、該１組のウォッチポイントに対応している１組のマルチプレクサを有しており、該１組のマルチプレクサにおける各マルチプレクサは該１組のラッチにおける各ラッチの出力へ夫々結合している複数個の入力を具備しており、該１組のマルチプレクサにおける各マルチプレクサは該１組のウォッチポイントにおける夫々のプレコンディションレジスタの入力へ結合している出力を具備している。
【００５３】
本発明の別の側面によれば、本コンピュータシステムは、更に、該１組のラッチにおける１個のラッチと夫々関連している制御レジスタを有しており、該制御レジスタは、本コンピュータシステムに対して外部的な信号に応答して、該ラッチをセット又はリセットする状態を有している。
【００５４】
本発明の別の側面によれば、本コンピュータシステムは単一の集積回路チップ上で実現されている。
【００５５】
本発明の別の側面によれば、該デマルチプレクサは、該アクションレジスタの状態に応答して、該１組のラッチにおける１個のラッチの入力を選択すべく該デマルチプレクサを制御する選択出力を有している。
【００５６】
本発明の別の側面によれば、該マルチプレクサは該プレコンディションレジスタの状態に応答して、該１組のラッチのうちで１個のラッチの出力を選択すべく該マルチプレクサを制御する選択入力を有している。
【００５７】
本発明の別の側面によれば、各マルチプレクサは、夫々のプレコンディションレジスタの状態に応答して、該１組のラッチのうちで１個のラッチの出力を選択すべく各マルチプレクサを制御する選択入力を有している。
【００５８】
本発明の別の側面によれば、各デマルチプレクサは、夫々のアクションレジスタの状態に応答して、該１組のラッチのうちで１個のラッチの入力を選択すべく該デマルチプレクサを制御する選択出力を有している。
【００５９】
本発明の別の側面によれば、該プレコンディションレジスタは１組のプレコンディションコードを格納しており、該１組のプレコンディションコードは該１組のウォッチポイントにおける各ウォッチポイントに対して同一である。
【００６０】
本発明の別の側面によれば、該アクションレジスタは１組のアクションコードを格納しており、該１組のアクションコードは該１組のウォッチポイントにおける各ウォッチポイントに対して同一である。
【００６１】
本発明の別の側面によれば、本コンピュータシステムは、該１組のプレコンディションコードのうちでどのプレコンディションコードが該１組のウォッチポイントにおける特定のウォッチポイントに対してアクティブであるかを選択するハードウエア及びソフトウエアを包含している。
【００６２】
本発明の別の側面によれば、本コンピュータシステムは、該１組のアクションコードのうちでどのアクションコードが該１組のウォッチポイントにおける特定のウォッチポイントに対してアクティブであるか選択するハードウエア及びソフトウエアを包含している。
【００６３】
本発明の別の側面によれば、該１組のウォッチポイントは、オペランドアドレス、命令値、命令アドレス、分岐、ブレークポイント命令、印刷命令に対するウォッチポイントのタイプを包含している。
【００６４】
本発明の別の側面によれば、各ウォッチポイントは、更に、少なくとも１個のマッチコードを格納するプログラム可能なマッチレジスタを有しており、該格納されたマッチコードはウォッチポイントのタイプに依存する。
【００６５】
本発明の別の側面によれば、該マッチコードはアドレス範囲、データ値、データマスク、命令値、命令マスク、分岐タイプの内の少なくとも１つを包含している。
【００６６】
本発明の別の側面によれば、該１組のプレコンディションコードは基本イネーブルコード、アドレス空間識別子イネーブルコード、アドレス空間識別子コード、ラッチイネーブルコード、ラッチ識別子コード、イベントカウンタイネーブルコード、イベントカウンタ識別子コード、ＩＳＡモードイネーブルコード、ＣＰＵスーパーバイザーモード選択コードを包含している。
【００６７】
本発明の別の側面によれば、該1組のアクションコードは、例外イネーブルコード、イベントカウンタデクリメントイネーブルコード、イベントカウンタ識別子コード、ラッチ変更コード、ラッチ識別子コード、性能カウンタインクリメントイネーブルコード、リセット全性能カウンタコード、性能カウンタ識別子コード、トレースイネーブルコード、トレースメッセージタイプコード、イネーブルトレース時間スタンプコード、トリガアウトイネーブルコード、インタラプトイネーブルコードを包含している。
【００６８】
本発明の別の側面によれば、少なくとも１個の中央処理装置と、該少なくとも１個の中央処理装置へ結合されているメモリユニットと、本コンピュータシステム内に画定されている１組のウォッチポイントと、該１組のウォッチポイントにおける１つのウォッチポイントを該１組のウォッチポイントにおける少なくとも１つの別のウォッチポイントとリンクさせる手段とを有しており、該リンクさせる手段がプログラマブル即ちプログラム可能であるコンピュータシステムが提供される。
【００６９】
本発明の別の側面によれば、該リンクさせる手段が、各ウォッチポイントと関連しており、該１組のウォッチポイントにおける各ウォッチポイントに対して同一である１組のプレコンディションコードを格納するプログラム可能なプレコンディションレジスタ、及び該１組のウォッチポイントにおける各ウォッチポイントに対して同一である１組のアクションコードを格納するプログラム可能なアクションをレジスタを有している。
【００７０】
本発明の別の側面によれば、該リンクさせる手段が、更に、ラッチを有している。
【００７１】
本発明の別の側面によれば、該ラッチは該１組のウォッチポイントにおける１つのウォッチポイントと関連しているアクションレジスタの１つの出力と該１組のウォッチポイントにおけるその他のすべてのプレコンディションレジスタの全ての入力のうちの１つの入力との間に結合されている。
【００７２】
本発明の別の側面によれば、少なくとも１個の中央処理装置と該少なくとも１個の中央処理装置へ結合されているメモリユニットとを有しているコンピュータシステムを動作させる方法において、本方法が、１組のプレコンディションレジスタ及び１組のアクションレジスタを画定することにより本コンピュータシステム内に１組のウォッチポイントを画定し、該１組のウォッチポイントにおける各ウォッチポイントへ適用されるべき１組の同一のプレコンディションコードを画定し、該１組のウォッチポイントにおける各ウォッチポイントへ適用されるべき１組の同一のアクションコードを画定し、該１組のプレコンディションレジスタ内の各プレコンディションレジスタ内に該１組のプレコンディションコードを格納し、該１組のアクションレジスタ内の各アクションレジスタ内に該１組のアクションコードを格納し、該１組のプレコンディションコードにおけるどのプレコンディションコードが特定のウォッチポイントに対してアクティブであるかを選択し、該１組のアクションコードのうちでどのアクションコードが特定のウォッチポイントに対してアクティブであるかを選択し、プログラムを実行させるために本コンピュータシステムを動作させ本コンピュータシステムにおけるデバッギングデータを特定のウォッチポイントに対するアクティブなプレコンディションコードと比較し、本コンピュータシステムにおける該デバッギングデータがその特定のウォッチポイントに対するアクティブなプレコンディションコードを満足する場合にその特定のウォッチポイントに対するアクションレジスタへ信号を送る、上記各ステップを有しており、該コンピュータシステムはトリガ信号を発生することによって該アクティブなアクションコードに応答し且つ該コンピュータシステムは、更に、該トリガ信号の状態に応答してラッチをセット又はクリアすることによって該トリガ信号に応答する。
【００７３】
本発明の別の側面によれば、該コンピュータシステムは１組のラッチを有しており且つ本方法は、更に、該トリガ信号に応答する該１組のラッチにおける１個のラッチを選択するステップを有している。
【００７４】
本発明の別の側面によれば、本方法は、更に、該１組のウォッチポイントにおける各プレコンディションレジスタへ該ラッチから出力信号を供給するステップを有している。
【００７５】
本発明の別の側面によれば、本方法は、更に、該ラッチからの出力信号に応答するためにプレコンディションレジスタを選択するステップを有している。
【００７６】
本発明の別の側面によれば、該１組のウォッチポイントはオペランドアドレス、命令値、命令アドレス、分岐、ブレークポイント命令及び印刷命令に対するウォッチポイントのタイプを包含している。
【００７７】
本発明の別の側面によれば、該１組のプレコンディションコードは、基本イネーブルコード、アドレス空間識別子イネーブルコード、アドレス空間識別子コード、ラッチイネーブルコード、ラッチ識別子コード、イベントカウンタイネーブルコード、イベントカウンタ識別子コード、ＩＳＡモードイネーブルコード、ＣＰＵスーバーバイザーモード選択コードを包含している。
【００７８】
本発明の別の側面によれば、該１組のアクションコードは、例外イネーブルコード、イベントカウントデクリメントイネーブルコード、イベントカウンタ識別子コード、ラッチ変更コード、ラッチ識別子コード、性能カウンタインクリメントイネーブルコード、リセット全性能カウンタコード、性能カウンタ識別子コード、トレースイネーブルコード、トレースメッセセージタイプコード、イネーブルトレース時間スタンプコード、トリガアウトイネーブルコード、インタラプトイネーブルコードを包含している。
【００７９】
本発明の別の側面によれば、本方法は、プログラム可能なマッチレジスタを画定し且つ該マッチレジスタ内に少なくとも１個のマッチコードを格納するステップを有しており、該マッチコードがウォッチポイントのタイプに依存する。
【００８０】
本発明の別の側面によれば、本方法は、更に、該少なくとも１個のプレコンディションコードが満足された後に、該少なくとも１個のマッチコードを該コンピュータシステムにおける第二データ値と比較するステップを有している。
【００８１】
本発明の別の側面によれば、該第二データ値が該マッチコードとマッチする場合に、該信号が該アクションレジスタへ供給される。
【００８２】
本発明の別の側面によれば、本方法は、更に、該メモリユニットにおける夫々のメモリ位置において該プレコンディションレジスタ、該マッチレジスタ、該アクションレジスタを画定するステップを有している。
【００８３】
本発明の別の側面によれば、少なくとも１個の中央処理装置、該少なくとも１個の中央処理装置へ結合されているメモリユニット、該コンピュータシステムにおいて画定されている１組のウォッチポイントであって、該１組のウォッチポイントにおける各ウォッチポイントが１組のプレコンディションコードを格納するプログラム可能なプレコンディションレジスタを有しており、該１組のプレコンディションコードが該１組のウォッチポイントにおける各ウォッチポイントに対して同一である１組のウォッチポイント、１組のアクションコードを格納するプログラム可能なアクションレジスタであって、該１組のアクションレジスタが該１組のウォッチポイントにおける各ウォッチポイントに対して同一であるプログラム可能なアクションレジスタ、各ラッチが入力と出力とを具備している１組のラッチ、少なくとも２つのウォッチポイントのトリガ動作の間に所定の関係が存在するように該１組のラッチのうちの少なくとも１個のラッチを該１組のウォッチポイントにおける少なくとも２個のウォッチポイントへ結合させる回路、を有しているコンピュータシステムが提供される。
【００８４】
本発明の別の側面によれば、該所定の関係が該１組のプレコンディションコードのうちのどのプレコンディションコードがアクティブであるかにより且つ該１組のアクションコードにおけるどのアクションコードがアクティブであるかによって画定される。
【００８５】
本発明の別の側面によれば、該所定の関係はＡＮＤ関数である。
【００８６】
本発明の別の側面によれば、該所定の関係はＯＲ関数である。
【００８７】
本発明の別の側面によれば、該少なくとも２個のウォッチポイントのうちの第一のものは、該第一ウォッチポイントがトリガされる場合であり且つ該少なくとも２個のウォッチポイントのうちの第二のものもトリガされる場合にトリガされる。
【００８８】
本発明の別の側面によれば、第一ウォッチポイントのアクションレジスタが該ラッチのセット入力へ結合しており且つ第二ウォッチポイントのアクションレジスタが該ラッチのリセット入力へ結合しており、且つ該ラッチの出力ヘ結合しているプレコンディションレジスタを具備している第三ウォッチポイントが設けられており、従って該第一ウォッチポイントのトリガ動作が該ラッチをセットして該第三ウォッチポイントをイネーブル即ち動作可能状態とさせ且つ該第二ウォッチポイントのトリガ動作が該ラッチをリセットして該第三ウォッチポイントをディスエーブル即ち動作不可能状態とさせる。
【００８９】
本発明の別の側面によれば、第一ウォッチポイントのアクションレジスタが該ラッチのセット入力へ結合しており且つ第二ウォッチポイントのアクションレジスタが該ラッチのリセット入力へ結合しており且つ該第二ウォッチポイントのプレコンディションレジスタが該ラッチの出力へ結合しており、従って該第一ウォッチポイントのトリガ動作が該ラッチをセットして該第二ウォッチポイントをイネーブルさせ且つ該第二ウォッチポイントのトリガ動作が該ラッチをリセットして該第二ウォッチポイントをディスエーブルさせる。
【００９０】
本発明の別の側面によれば、該１組のウォッチポイントにおける第一数のウォッチポイントに対する夫々のアクションレジスタが該ラッチのセット入力へ結合しており、且つ該１組のウォッチポイントにおける第二数のウォッチポイントの夫々のアクションレジスタが該ラッチのリセット入力へ結合されており、且つ該ラッチの出力へ結合しているプレコンディションレジスタを具備している別のウォッチポイントが設けられており、従って該第一数のウォッチポイントのうちのいずれかのトリガ動作が該ラッチをセットして該別のウォッチポイントをイネーブルさせ且つ該第二数のウォッチポイントのうちのいずれかのトリガ動作が該ラッチをリセットして該第三ウォッチポイントをディスエーブルさせる。
【００９１】
本発明の別の側面によれば、少なくとも１個の中央処理装置と、該少なくとも１個の中央処理装置へへ結合されているメモリユニットとを有しているコンピュータシステムにおいてデバッギングデータをフィルタする方法が提供され、該方法は、各ウォッチポイントに対して１組のプレコンディションレジスタ及び１組のアクションレジスタを画定することにより該コンピュータシステム内に１組の少なくとも３個のウォッチポイントを画定し、該１組のウォッチポイントにおける各ウォッチポイントへ適用されるべき１組の同一のプレコンディションコードを画定し、該１組の各ウォッチポイントにおける各ウォッチポイントへ適用すべき１組の同一のアクションコードを画定し、該１組のプレコンディションレジスタ内の各プレコンディションレジスタ内に該１組のプレコンディションコードを格納し、該１組のアクションレジスタ内の各アクションレジスタ内に該１組のアクションレジスタを格納し、該１組のプレコンディションコードのうちでどのプレコンディションコードが該少なくとも３個のウォッチポイントの各々に対してアクティブであるかを選択し、該１組のアクションコードの中でどのアクションコードが該少なくとも３個のウォッチポイントの各々に対してアクティブであるかを選択し従って該第一及び第二ウォッチポイントが該第三ウォッチポイントのプレコンディションレジスタ内のプレコンディションコードを活性化させ、プログラムを実行するために該コンピュータシステムを動作させ、該コンピュータシステムにおけるデバッギングデータを該少なくとも３個のウォッチポイントの各々に対するアクティブなプレコンディションコードと比較し、該コンピュータシステムにおけるデバッギングデータが該第一又は第二ウォッチポイントに対するアクティブなプレコンディションコードを満足する場合に該第一及び第二ウォッチポイントのうちの１つをトリガし且つ該第一及び第二ウォッチポイントのうちの１つのトリガ動作に応答して該第三ウォッチポイントをトリガする、上記各ステップを有している。
【００９２】
本発明の別の側面によれば、該１組のウォッチポイントは、オペランドアドレス、命令値、命令アドレス、分岐、ブレークポイント命令、印刷命令に対するウォッチポイントのタイプを包含している。
【００９３】
本発明の別の側面によれば、該１組のプレコンディションコードは、基本イネーブルコード、アドレス空間識別子イネーブルコード、アドレス空間識別子コード、ラッチイネーブルコード、ラッチ識別子コード、イベントカウンタイネーブルコード、イベントカウンタ識別子コード、ＩＳＡモードイネーブルコード、ＣＰＵスーバーバイザーモード選択コードを包含している。
【００９４】
本発明の別の側面によれば、該１組のアクションコードは例外イネーブルコード、イベントカウンタデクリメントイネーブルコード、イベントカウンタ識別子コード、ラッチ変更コード、ラッチ識別子コード、性能カウンタインクリメントイネーブルコード、リセット全性能カウンタコード、性能カウンタ識別子コード、トレースイネーブルコード、トラースメッセセージタイプコード、イネーブルトレース時間スタンプコード、トリガアウトイネーブルコード、インタラプトイネーブルコードを包含している。
【００９５】
本発明の別の側面によれば、本方法は、プログラム可能なマッチレジスタを画定し且つ該マッチレジスタ内に少なくとも１個のマッチコードを格納するステップを有しており、該マッチコードはウォッチポイントのタイプに依存する。
【００９６】
本発明の別の側面によれば、本方法は、更に、少なくとも１つのプレコンディションコードが満足された後に、該少なくとも１個のマッチコードを本コンピュータシステムにおける第二データ値と比較するステップを有している。
【００９７】
本発明の別の側面によれば、該第二データ値が該マッチコードと一致する場合に該信号が該アクションレジスタへ供給される。
【００９８】
本発明の別の側面によれば、本方法は、更に、該メモリユニットにおける夫々のメモリ位置において該プレコンディションレジスタ、該マッチレジスタ、該アクションレジスタを画定（定義）するステップを有している。
【００９９】
【発明の実施の形態】
以下の説明においては、本発明を単一チップマイクロコンピュータにおいて使用した場合について説明するが、本発明は、複数個のチップから構成したコンピュータシステムにおいて使用することも可能であることは勿論である。
【０１００】
図３は本発明に基づく単一チップマイクロコンピュータ５０を示している。マイクロコンピュータ５０は、図１又は２のマイクロコンピュータデバッギングシステムのいずれかにおいて使用することが可能である。マイクロコンピュータ５０は、コンピュータ内における演算即ち動作を実行するための中央処理装置コア５１を有している。中央処理装置（ＣＰＵ）５２及びＣＰＵウォッチポイント（ｗａｔｃｈｐｏｉｎｔ）制御器５４がＣＰＵコア５１の一部として設けられている。単一の中央処理装置コア５１が図３に示されているが、マイクロコンピュータ５０は複数個の中央処理装置５２を有することが可能である。後により詳細に説明するように、ＣＰＵウォッチポイント制御器５４は、ＣＰＵウォッチポイントをトリガし且つこの情報をマイクロコンピュータ５０のその他の部分へ報告するためのウォッチポイント制御回路を有している。ＣＰＵコア５１はデータリンク５８を介してシステムバス５６へ結合している。システムバス５６は、システムバスに取付けられているモジュール及びインターフェースの間でデータ、命令、制御信号の交換を行うための経路を提供している。オフチップランダムアクセスメモリに対するインターフェースを与えるＲＡＭインターフェース６０が、データリンク６２を介してシステムバス５６へ結合している。オフチップリードオンリメモリに対するアクセスを与えるＲＯＭインターフェース６４がデータリンク６６を介してシステムバス５６へ結合している。その他のシステムバスモジュール６８はデータリンク７０を介してシステムバス６６へ結合している。
【０１０１】
デバッグインターフェースを包含しているデバッグモジュール７２がデータリンク７４を介してシステムバス５６へ結合している。デバッグモジュール７２はデータリンク７６を介してＣＰＵコア５１からデバッギング即ちデバッグ用データを受取る。デバッグモジュール７２はデバッグリンク７２を介してオフチップインターフェースを与え、それは、マイクロコンピュータ５０が、例えば、デバッグアダプタ３０とインターフェースすることを可能とする。デバッグモジュール７２は更にトリガイン／トリガアウトインターフェース７８を提供している。トリガイン／トリガアウトインターフェース７８は、その他のデバッギング動作においてロジックアナライザ（論理解析器）をトリガさせるために、ロジックアナライザ等の外部ハードウエアへトリガアウト（ｔｒｉｇｇｅｒ  ｏｕｔ）信号経路を介してオフチップへ例えばウォッチポイントのトリガ動作等のデバッグ情報をデバッグモジュール７２が送ることを可能とする。トリガイン／トリガアウトインターフェース７８は、更に、トリガイン（ｔｒｉｇｇｅｒ  ｉｎ）信号経路を提供しており、それは、例えばロジックアナライザ等の外部装置がオンチップのデバッグ用ハードウエアをトリガする場合に使用するためにマイクロコンピュータ５０へトリガ信号を供給させることを可能とする。トリガイン／トリガアウトインターフェース７８は、又、マイクロコンピュータ５０をその他のＣＰＵコア又はその他のマイクロコンピュータへ結合するために使用することが可能である。このことは、その他のＣＰＵコア又はマイクロコンピュータからのデバッグ用データをそのデバッグ処理の一部としてマイクロコンピュータ５０によって使用することを可能とする。このことは、又、マイクロコンピュータ５０がデバッグ用データを他のＣＰＵコア又はマイクロコンピュータへ送り、これらの他の装置におけるウォッチポイント又はその他のデバッグ動作をトリガさせることを可能とする。
【０１０２】
マイクロコンピュータ５０は、更に、データリンク８２を介してシステムバス５６へ結合されているシステムバス制御器８０を有している。システムバス制御器８０は、システムバス５６を介してのデータトラフィック即ちデータの流れを制御するシステムバスアービター（調停器）８１を包含している。システムバスアナライザ（解析器）８４はシステムバス制御器８０内に配設されているシステムバスウォッチポイントをトリガするためのウォッチポイント制御回路を包含している。システムバスアナライザ８４内のウォッチポイント回路の動作については後により詳細に説明する。システムバスアナライザ８４は、データリンク８６を介して、システムバスウォッチポイントのトリガ動作等のデバッグ用情報をデバッグモジュール７２へ送る。
【０１０３】
マイクロコンピュータ５０は、更に、ペリフェラルコンポーネントバス８８を有している。ペリフェラルコンポーネントバス制御器９０は、ペリフェラルコンポーネントバス８８を介してのデータの流れを制御するペリフェラルコンポーネントバスアービター９１を有しており、それはデータリンク９２を介してペリフェラルコンポーネントバス８８へ結合されており且つデータリンク９４を介してシステムバス５６に対するインターフェースを提供する。ペリフェラルコンポーネントバス制御器９０は、ペリフェラルコンポーネントバスウォッチポイントをトリガさせる制御回路を包含しているペリフェラルコンポーネントバスアナライザ９６を有している。ペリフェラルコンポーネントバスアナライザ９６は、データリンク９８を介して、例えばウォッチポイントのトリガ動作等のデバッグ用データをデバッグモジュール７２へ供給する。
【０１０４】
ペリフェラルコンポーネントバスモジュール１００はデータリンク１０２を介してペリフェラルコンポーネントバス８８へ結合させることが可能である。ペリフェラルコンポーネントバス８８へデータリンク１０６を介して結合されているペリフェラルコンポーネントバスインターフェース１０４は、ペリフェラルコンポーネントバス８８に対してオフチップコンポーネントに対するインターフェースを提供している。
【０１０５】
本発明の１つの特徴は、マイクロコンピュータ５０において１組の「ウォッチポイント（ｗａｔｃｈｐｏｉｎｔ）」を設けることである。ウォッチポイントは、マイクロコンピュータ５０の実行状態をモニタし且つマイクロコンピュータ５０内の多数の条件が満足された場合に信号を供給するメカニズムである。１つのウォッチポイントを活性化させるのに必要な条件が満足されると、そのウォッチポイントは「トリガ」されたという。マイクロコンピュータ５０の回路自身における欠陥を識別するためにも、マイクロコンピュータ５０上でデバッグ用プログラムが実行される場合にもウォッチポイントが使用される。ウォッチポイントは、例外を発生させるため、トレースメッセージを発生させるため、且つ一般的にデバッグ用データをユーザへ供給するために使用することが可能である。多数のウォッチポイントがマイクロコンピュータ５０内に設けることが可能である。図３に関連して理解されるように、ウォッチポイントはＣＰＵ、システムバス、ペリフェラルコンポーネントバス、デバッグモジュールに対して設けることが可能である。当業者が理解するように、これら４つのタイプのウォッチポイントについて特に言及しているが、マイクロコンピュータ５０のその他の部分においてはその他のウォッチポイントを設けることが可能である。
【０１０６】
図４は本発明に基づくウォッチポイントの仕様を例示している。本発明に基づくウォッチポイントは２つのメモリマップ型レジスタ１１０及び１１２によって画定即ち定義される。レジスタ１１０は１組のプレコンディション（ｐｒｅｃｏｎｄｉｔｉｏｎ）即ち事前条件コードを格納するプレコンディションレジスタである。プレコンディションコードは、ウォッチポイントがイネーブル即ち動作可能状態とされる前、即ちそのウォッチポイントをトリガさせることが可能である前に、満足されねばならないマイクロコンピュータ５０の特定の状態を画定（定義）する。本発明の１つの特徴は、マイクロコンピュータ５０に対する１組のウォッチポイントにおける全てのプレコンディションレジスタが同一の組のプレコンディションを共用するという点である。即ち、全てのウォッチポイントに対する該１組のプレコンディション即ち事前条件は、そのウォッチポイントがＣＰＵウォッチポイントであるか、デバッグモジュールウォッチポイントであるか、システムバスアナライザウォッチポイントであるか、又はその他のタイプのウォッチポイントであるかに拘わらずに同一である。
【０１０７】
アクション（ａｃｔｉｏｎ）レジスタ１１２は、プレコンディションレジスタ１１０におけるアクティブなプレコンディションコードの全てが満足された結果としてそのウォッチポイントがトリガされた場合にマイクロコンピュータ５０が取ることが可能な１組のアクション（活動）を画定（定義）する。プレコンディションの場合におけるように、アクションレジスタ１１２によって特定される１組のアクションは、マイクロコンピュータ５０内に定義されている全てのウォッチポイントに対して同一である。ウォッチポイントは、例えば、オペランドアドレス、命令値、命令アドレス、分岐、ブレークポイント命令、印刷命令に対して設けることが可能である。
【０１０８】
前に説明したように、プレコンディションレジスタ１１０及びアクションレジスタ１１２はメモリマップ型レジスタであり且つプログラマブル即ちプログラム可能である。プレコンディションレジスタ１１０及びアクションレジスタ１１２は、マイクロコンピュータ５０のデバッギングモードが動作している場合にプログラムすることが可能である。プレコンディションレジスタ１１０及びアクションレジスタ１１２はマイクロコンピュータ５０のメインメモリ内にメモリマップされるので、これらのレジスタは、例えば図１及び２に示したデバッガーシステム２８等のマイクロコンピュータ５０に対して外部的な装置によって読取り且つプログラムすることが可能である。当業者によって理解されるように、各ウォッチポイントに対して一様の即ち同一の組のプレコンディションが設けられているが、マイクロコンピュータ５０内の全てのウォッチポイントに対して全てのプレコンディション即ち事前条件が満足されることが必要なわけではない。プレコンディションレジスタ及びアクションレジスタはプログラム可能なものであるから、特定のウォッチポイントのトリガ動作はプレコンディションレジスタ１１０内のどのプレコンディションがその特定のウォッチポイントに対してアクティブ即ち活性状態にあるかに依存する。特定のウォッチポイントに対してどのプレコンディションがアクティブであるかの選択は、マイクロコンピュータ５０がデバッギングモードにあり且つプレコンディションレジスタ１１０の特定のフィールドがイネーブル即ち動作可能状態とされる場合に決定される。
【０１０９】
同一の態様で、一様な即ち同一な組のアクションが各ウォッチポイントに対して与えられているが、ウォッチポイントのトリガ動作に応答してマイクロコンピュータ５０によって取られるアクションは、その特定のウォッチポイントに対してアクションレジスタ１１２内のどのアクションがアクティブであるかに依存する。ウォッチポイントのトリガ動作によって該１組のアクションにおける全てのアクションが取られることが必要なわけではない。特定のウォッチポイントに対してどのアクションがアクティブであるかの選択は、マイクロコンピュータ５０がデバッギングモードにあり且つレジスタ１１２の特定のフィールドがイネーブルされている場合に決定される。
【０１１０】
プレコンディションレジスタ及びアクションレジスタは、マイクロコンピュータ５０内において画定されている各ウォッチポイントに対して設けられている。マイクロコンピュータ５０内に画定されている１組のウォッチポイントにおける各ウォッチポイントに対する１組のプレコンディション及びアクションは同一のものであるから、本発明に基づくウォッチポイントの画定（定義）はマイクロコンピュータ５０における全てのウォッチポイントを一様な態様でプログラムすることを可能とする。従って、特定のタイプのウォッチポイントに対して特別のステップを取ることは必要ではなく、そのことはマイクロコンピュータ５０のプログラミング及びデバッギングを簡単化させる。更に、プレコンディションレジスタ及びアクションレジスタはプログラム可能なものであるから、いつウォッチポイントがイネーブルされるか及びウォッチポイントのトリガに基づいてどのアクションをマイクロコンピュータ５０が取るかについての決定を行う場合に柔軟性が著しく向上されている。
【０１１１】
オプションとして、メモリマップ型マッチレジスタ１１４はウォッチポイントの一部として設けることも可能である。マッチレジスタ１１４は、ウォッチポイントをトリガすることが可能となる前にマッチされねばならない特定のデータ値を有している。マッチレジスタ１１４内に格納されているマッチ条件は特定のタイプのウォッチポイントに対して特定的なものである。例えば、命令アドレスウォッチポイントは、マッチレジスタ１１４において特定されるアドレスレンジ（範囲）を有することが可能である。オペランドアドレスウォッチポイントは、マッチレジスタ１１４において特定されるアドレスレンジ及びデータ値／マスクを有することが可能である。命令値ウォッチポイントはマッチレジスタ１１４において特定される命令マスク及び命令値を有することが可能である。分岐ウォッチポイントはマッチレジスタ１１４において特定される分岐タイプを有することが可能である。従って、マッチレジスタ１１４はウォッチポイントがトリガされる前にマッチングされることを必要とする付加的な条件を与えることが可能であるが、これらの条件は特定のタイプのウォッチポイントに対して特定的なものである。
【０１１２】
図５Ａ−５Ｃは１つのウォッチポイントに対して多数のプレコンディション（事前条件）を定義するプレコンディションレジスタ１１０の１実施例を示している。前述した如く、プレコンディションレジスタ１１０の画定即ち定義は、１組のウォッチポイントにおける各ウォッチポイントに対して同一である。本発明の１実施例においては、図５Ａ−５Ｃに示したプレコンディションレジスタ１１０は６４ビットメモリマップ型レジスタであるが、当業者にとって明らかなように、プレコンディションレジスタ１１０は任意の数のビットのものとすることが可能である。
【０１１３】
プレコンディションレジスタ１１０の第一フィールド１１６は１ビット基本イネーブルフィールドであり、それはウォッチポイントをイネーブル即ち動作可能状態又はディスエーブル即ち動作不能状態とさせる。第二フィールド１１８は１ビットアドレス空間識別子イネーブルフィールドであって、それはウォッチポイントのトリガ動作において現在のＡＳＩＤ値を包含させることをイネーブル又はディスエーブルする。第三フィールド１２０は１ビットチェーンラッチイネーブルフィールドであり、それはウォッチポイントのトリガ動作において、特定のチェーンラッチを包含させるか否かを特定する。チェーンラッチについては後により詳細に説明する。第四フィールド１２２は４ビットチェーンラッチ識別フィールドであり、それは該１組のチェーンラッチのうちでどのチェーンラッチがウォッチポイントをトリガ動作する場合に使用されるかを定義するために使用される。第五フィールド１２４は１ビットイベントカウントイネーブルフィールドであって、それは、特定したイベントカウンタがそのウォッチポイントのトリガ動作の一部であるか否かを決定する。第六フィールド１２６は４ビットイベントカウンタ識別フィールドであって、それはマイクロコンピュータ５０におけるどのイベントカウンタがそのウォッチポイントのトリガ動作において使用されるかを画定する。第七フィールド１２８は８ビットＡＳＩＤ値フィールドであり、それはそのウォッチポイントのトリガ動作において使用されるＡＳＩＤ値を画定する。第八フィールド１３０は２ビットＣＰＵ・ＩＳＡモード選択フィールドであって、それはそのウォッチポイントのトリガ動作を決定する場合にどのＣＰＵモードが使用されるかを特定する。第九フィールド１３２は２ビットスーパーバイザーモード選択フィールドであってそれはそのウォッチポイントのトリガ動作においてＣＰＵユーザーモードか又はスーパーバイザーモードが包含されるべきであるかを特定する。プレコンディションレジスタ１１０の残りのビットはリザーブ即ち予約済である。プレコンディションレジスタ１１２におけるフィールドに関するより詳細な情報は図５Ａ−５Ｃにおける各フィールドの説明欄において記載されている。
【０１１４】
当業者によって理解されるように、図５Ａ−５Ｃはプレコンディションレジスタ１１０の画定における１つの例を示すものであるが、デバッグされる特定のマイクロコンピュータ及びデバッギング手順に対して重要であると考えられる特定の条件に依存してその他の条件を特定することが可能である。更に、当業者によって理解されるように、図５Ａ−５Ｃにおいて特定した条件の全てが与えられることが必要なものではない。例えば、図５Ａ−５Ｃに示したものと異なるプレコンディション又はより少ない数のプレコンディションを有する特定のマイクロコンピュータに対して１組のプレコンディションを画定即ち定義することが可能である。その組のプレコンディションがマイクロコンピュータにおいて画定されている全てのウォッチポイントに対して一様なものである限り、任意の組のプレコンディションを画定することが可能である。
【０１１５】
次に、図６Ａ−６Ｇを参照すると、これらの図は、１つのウォッチポイントがトリガされる場合にマイクロコンピュータ５０によって取ることが可能な多数のアクションを画定するアクションレジスタ１１２の１実施例を示している。１実施例においては、図６Ａ−６Ｇに示したアクションレジスタ１１２は６４ビットメモリマップ型レジスタであるが、当業者にとって明らかなように、アクションレジスタ１１２は任意の数のビットとすることが可能である。
【０１１６】
最初の１ビットフィールド１３４は、マイクロコンピュータ５０がデバッグ例外を持ち出すことにより応答する例外イネーブルフィールドを特定する。２番目の１ビットフィールド１３６はイベントカウントデクリメントイネーブルフィールドであり、それはイベントカウンタのデクリメント動作をイネーブル又はディスエーブルさせることによって応答する。３番目の４ビットフィールド１３８はイベントカウンタ識別フィールドであり、それはそのウォッチポイントがトリガされる場合にマイクロコンピュータ５０が作用するイベントカウンタを画定する。４番目の２ビットフィールド４０はイネーブルチェーンラッチ変更フィールドであり、それはウォッチポイントがトリガされる場合にマイクロコンピュータ５０によってチェーンラッチが修正されるか否か及びどのように修正されるかを特定する。チェーンラッチはフィールド１４０に応答してセット、リセット、又は全く不変のままとさせることが可能である。５番目の４ビットフィールド１４２はチェーンラッチ識別フィールドであって、それはウォッチポイントがトリガされる場合にマイクロコンピュータ５０によって変更されるべきチェーンラッチを特定する。６番目の２ビットフィールド１４４はトレースイネーブルフィールドであって、それは、マイクロコンピュータ５０がウォッチポイントのトリガ動作と共にトレースメッセージの発生をイネーブル又はディスエーブルさせることによって応答する。７番目の１ビットフィールド１４６はトレースメッセージタイプフィールドであって、それはウォッチポイントがトリガされる場合にマイクロコンピュータ５０によって発生されるトレースメッセージのタイプを特定する。８番目の１ビットフィールド１４８はイネーブルトレース時間スタンプフィールドであって、それはトレースメッセージ内に時間スタンプが包含されるか否かを特定する。９番目の１ビットフィールド１５０はトリガアウトイネーブルフィールドであって、それに対して、ウォッチポイントがトリガされる場合にトリガアウトメッセージの発生をイネーブル又はディスエーブルさせることによってマイクロコンピュータ５０が応答する。このフィールドは、トリガイン／トリガアウトインターフェース７８のトリガアウト信号経路を介してトリガアウトメッセージを発生するために使用される。１０番目の１ビットフィールド１５２はオペランドアドレスマッチイネーブルフィールドであって、それはデバッグモジュール７２におけるチェーンラッチ及びトレース発生アクションが成功したオペランドアドレスデータマッチに依存するか否かを決定する。１１番目の１ビットフィールド１５４は性能カウンタインクリメントイネーブルフィールドであって、マイクロコンピュータ５０は、そのウォッチポイントがトリガされる場合に、性能カウンタのインクリメント動作をイネーブル又はディスエーブルさせることによって応答する。１２番目の１ビットフィールド１５６はリセット全性能カウンタフィールドであって、マイクロコンピュータ５０は、そのウォッチポイントがトリガされる場合に、全ての性能カウンタをリセットさせることによって応答する。１３番目の４ビットフィールド１５８は性能カウンタ識別フィールドであって、それはそのウォッチポイントがトリガされる場合にインクリメントされる性能カウンタを特定する。１４番目のフィールド１６０はシステムバス物理的モジュール番号であって、それはウォッチポイントがトリガされる場合にバスマスターをフリーズ即ち凍結させる目的のためにシステムバスマスターモジュールのＩＤを特定する。１５番目の１ビットフィールド１６２はフリーズイネーブルフィールドであって、それは、ウォッチポイントがトリガされる場合に、フィールド１６０によって特定されたシステムバスマスターが更なるシステムバストランズアクションを発生することが禁止されるか否かを特定する。アクションレジスタ１１２における残りのビットはリザーブ即ち予約済であり且つその他のアクションに対して割り当てることが可能である。アクションレジスタ１１２におけるフィールドに関するより詳細な情報は図６Ａ−６Ｇにおける各フィールドの説明欄に記載してある。
【０１１７】
プレコンディションレジスタ１１０において定義したプレコンディションの場合におけるように、アクションレジスタ１１２において画定されている１組のアクションは該１組のウォッチポイントにおける全てのウォッチポイントに対して同一である。当業者によって理解されるように、デバッグされるマイクロプロセッサの特定の条件に依存してその他のアクションを与えることが可能である。当業者によって理解されるように、図６Ａ−６Ｇにおいて定義してあるアクションの全てが与えられることが必要なものではない。例えば、図６Ａ−６Ｇに示したものと異なるアクション又はそれより少ない数のアクションを有する特定のマイクロコンピュータに対して１組のアクションを画定即ち定義することが可能である。
【０１１８】
図７はウォッチポイントをトリガリング即ちトリガ動作させる本発明に基づく方法を示している。図７に示したステップを実行する前に、マイクロコンピュータ５０は標準の技術を使用してメモリマップ型レジスタ１１０及び１１２に対して書込を行うことによってプレコンディションコードのうちのあるもの及びアクションコードのうちのあるものを活性化させる指示が与えられる。本方法は、ステップ１７０において開始し、その場合に、マイクロコンピュータ５０はプレコンディションレジスタ１１０において特定されている全てのアクティブな即ち活性状態にあるプレコンディションが満足されているか否かを決定する。アクティブなプレコンディションとは特定のウォッチポイントに対してイネーブルされているプレコンディションレジスタ１１０において特定されているプレコンディションである。マイクロコンピュータ５０は、レジスタ１１０におけるアクティブなビットをマイクロコンピュータ内のデータ値と比較することによってこの決定を行う。例えば、プレコンディションレジスタ１１０のフィールド１２８が特定のウォッチポイントに対してアクティブである場合には、マイクロコンピュータ５０はフィールド１２０における８ビットＡＳＩＤ値を、プログラムが実行されるに従い、マイクロコンピュータのＡＳＩＤ値と比較する。フィールド１２８内の値が現在のＡＳＩＤ値とマッチ即ち一致する場合には、そのプレコンディション即ち事前条件が満足されていることになる。全てのアクティブなプレコンディションが満足されていない場合には、そのウォッチポイントはディスエーブル状態のままであり且つトリガさせることは不可能である。
【０１１９】
一方、全てのアクティブなプレコンディションが満足されている場合に、マイクロコンピュータ５０がステップ１７２へ移行し、そこで、マッチレジスタがそのウォッチポイントに対して画定されているか否か及びマッチレジスタ１１４において特定されている全てのマッチ条件がマッチされているか否かを決定する。マイクロコンピュータ５０は、マッチレジスタ１１４内のビットをマイクロコンピュータ内のデータ値と比較することによってこの決定を行う。例えば、そのウォッチポイントがオペランドアドレスウォッチポイントである場合には、マッチレジスタ１１４はアドレスレンジ（範囲）を包含しており且つマイクロコンピュータ５０はマッチレジスタ１１４内のアドレスレンジをそのアドレスの現在の値と比較する。マッチレジスタ１１４において特定されたアドレスが現在のアドレスとマッチする場合には、マッチ条件が満足されている。マッチレジスタ１１４において特定されている全てのマッチ条件がマッチされていない場合には、マイクロコンピュータ５０はそのマッチ条件の実行及びモニタ動作を継続して行う。一方、マッチレジスタ１１４において特定されている全てのマッチ条件が満足された場合には、そのウォッチポイントがトリガされ且つマイクロコンピュータ５０はステップ１７４へ移行し、そこでマイクロコンピュータ５０はアクションレジスタ１１２のフィールド内のビットを読取る。次いで、マイクロコンピュータ５０はアクションレジスタ１１２において格納されているアクティブなアクションコードによって特定されるアクションを取る。
【０１２０】
本発明の１つの特徴は、デバッギング即ちデバッグ動作を非侵略的に行うことが可能であるということであり、そのことは、デバッグ用情報を発生するために行われるアクションがマイクロコンピュータ５０の動作に乱れを与えることがないことを意味している。プレコンディションレジスタ１１０及びアクションレジスタ１１２及びオプションのマッチレジスタ１１４はメモリマップ型であるので、マイクロコンピュータ５０が通常のプログラム実行モードで動作している間に、これらのレジスタの内容を読取ることが可能であり且つこれらのレジスタ内のビットを変化させることが可能である。ウォッチポイントトリガ動作及びデバッグ動作を非侵略的なものとさせるために、専用の比較及びトリガ回路がＣＰＵウォッチポイント制御器５４、デバッグモジュール７２、システムバスアナライザ８４内に設けられている。図８はこの専用回路を示している。マイクロコンピュータ５０において画定されている各ウォッチポイントに対して、組み合わせ論理を使用して構成されている比較器・トリガ処理論理回路１８０が設けられている。従って、２個の比較器及びトリガ処理論理回路がＣＰＵウォッチポイント制御器５４内に設けられており、２個の比較器及びトリガ処理論理回路がデバッグモジュール７２内に設けられており、且つ２個の比較器及びトリガ処理論理回路がシステムバスアナライザ８４内に設けられている。
【０１２１】
比較器論理１８２は、モニタ中のビットをプレコンディションレジスタ１１０のアクティブなフィールド内のビットと夫々ＡＮＤ処理することによって、モニタ中のプロセッサデータ値をプレコンディションレジスタ１１０のアクティブなフィールド内のビットとのビット毎の比較を実施する少なくとも１個の比較器を有している。プレコンディションレジスタ１１０のアクティブなビットがプロセッサデータ値１８１とマッチする場合には、比較器論理１８２は線１８４上にイネーブル信号を発生し、それは比較器論理１８６をイネーブルさせる。次いで、比較器１８６は、モニタ中のビットをマッチビット内のビットと夫々ＡＮＤ処理することによってマッチレジスタ１１４のアクティブなビットとマッチレジスタによって特定されたプロセッサデータ値との間のビット毎の比較動作を実施する。プロセッサデータ値１８８がマッチレジスタ１１４において特定されている値とマッチする場合には、ウォッチポイントがトリガされ且つ比較論理１８６は接続１９２を介してトリガリング（トリガ処理）論理１９０へ信号を送る。トリガ処理論理１９０は、トリガ処理信号１９２とアクションレジスタ１１２のアクティブなビットとの間で夫々ＡＮＤ処理することによってトリガ処理信号１９２とアクションレジスタ１１２のアクティブなビットとの間で組合わせ論理を使用したビット毎の比較を行う。全ての信号がアクティブである場合には、トリガ処理論理１９０は夫々の信号をアクションレジスタ１１２において特定されたラッチ、装置、カウンタ、例外ハンドラ等へ送る。ウォッチポイントが画定されている各コンポーネントにおいて比較器及びトリガ処理論理１８を見つけ出すことはマイクロコンピュータ５０において精密な例外モデルを維持することを可能とする。何故ならば、アクティブなプレコンディションの満足とウォッチポイントのトリガ動作との間の時間が短く維持され、従ってウォッチポイントのより精密なトリガ動作を維持するからである。比較器及びトリガ処理論理はモニタ中のマイクロコンピュータ５０の一部に位置されているので、ウォッチポイントはソフトウエアの介入なしで且つマイクロコンピュータ５０の動作に侵略的な影響を与えることなしにトリガさせることが可能である。
【０１２２】
前述した如く、本発明の特徴のうちの１つは、マイクロコンピュータ５０における「チェーンラッチ」と呼ぶことが可能な１組のラッチを包含している点である。このようなラッチの１例を図９に示してある。ラッチ２００は任意のタイプのラッチとすることが可能である。ラッチ２００はセット入力２０２、リセット入力２０４、クロック入力２０５、出力２０６を有している。ラッチ２００のセット入力及びリセット入力はトリガ処理論理１９０へ結合しており、且つウォッチポイントがトリガされると、ラッチ２００は図６Ｂに示したアクションレジスタ１１２におけるビット６及び７の状態に依存してセットされるか又はリセットされる。クロック入力２０５はシステムクロックと同期されているクロック信号を受取る。
【０１２３】
前述した如く、１組のラッチをマイクロコンピュータ５０に設けることが可能である。ウォッチポイントと同数のラッチを設けることが可能であり、又ウォッチポイントより多くの数又は少ない数のラッチを設けることも可能である。図５Ａ−５Ｃ及び６Ａ−６Ｇにおいて、４個のビットが１個のチェーンラッチを識別するために使用されており、従って１６個のチェーンラッチを使用することが可能である。この１組のラッチはデバッグ処理の目的のために複数個のウォッチポイントを一体的にチェーン化させることを可能とする。例えば、あるウォッチポイントがトリガされると、トリガ処理論理１９０がアクションレジスタ１１２のビット８乃至１１を読取り且つクロック入力２０５の制御下においてラッチ２００をセット又はリセットするためにセット入力２０２又はリセット入力２０４へ信号を送る。その結果、ウォッチポイントのトリガ処理はラッチ２００における状態ビットとして格納される。ラッチ２００の出力２０６は別のウォッチポイントのプレコンディションレジスタ１１０のビット３乃至６へ経路付けさせることが可能である。従って、最初のウォッチポイントがトリガされた後の次のマイクロプロセッサクロックサイクルにおいてラッチ２００の出力状態がそのプレコンディションレジスタを介して別のウォッチポイントに対するプレコンディションとして使用可能である。従って、マイクロコンピュータ５０内にラッチを包含させることは、複数個のウォッチポイントを一体的にチェーン化させることを可能とし、従って１つのウォッチポイントのトリガ動作を他のウォッチポイントのトリガ動作を制御するために使用することが可能である。更に、プレコンディションレジスタ１１０及びアクションレジスタ１１２はプログラム可能なものであるから、異なるウォッチポイントを柔軟性があり且つ任意的な態様で一体的にチェーン化させることが可能である。
【０１２４】
図１０Ａ及び図１０Ｂは本発明に基づく１組のウォッチポイント及びチェーンラッチを有するマイクロコンピュータ５０の１実施例を示している。図１０Ａ及び図１０Ｂは、ＣＰＵウォッチポイント制御器５４、２個のチェーンラッチ２００、２個の比較器・トリガ処理論理回路１８０において画定されている２個のウォッチポイントと、システムバスアナライザ８４、２個のチェーンラッチ２００、２個の比較器・トリガ処理論理回路１８０において画定されている２個のウォッチポイントと、デバッグモジュール７２、２個のチェーンラッチ２００、２個の比較器・トリガ処理論理回路１８０において画定されている２個のウォッチポイントとを示している。前に説明したように、各ウォッチポイントはプレコンディションレジスタ１１０Ａ−１１０Ｆとアクションレジスタ１１２Ａ−１１２Ｆとを有している。各ウォッチポイントは、又、比較器・トリガ処理論理１８０Ａ−１８０Ｆを有している。図８に関連して説明したように、プレコンディションレジスタ１１０Ａ−１１０Ｆのビット及びアクションレジスタ１１２Ａ−１１２Ｆのビットは、夫々、接続１１３Ａ−１１３Ｆ及び１１５Ａ−１１５Ｆを介して比較器・トリガ処理論理１８０Ａ−１８０Ｆへ接続されている。１組のチェーンラッチ２００Ａ−２００Ｆも設けられている。更に、付加的なトリガインラッチ２００Ｇがデバッグモジュール７２内に設けられている。トリガインラッチ２００Ｇはラッチ２００Ａ−２００Ｆと同じタイプのラッチとすることが可能である。ラッチ２００Ｇはトリガイン／トリガアウトインターフェース７８上のトリガイン信号に応答し、それは、ウォッチポイントに対するプレコンディション即ち事前条件として例えばロジックアナライザ等の外部システムによって使用することが可能である。ラッチ２００Ｇは、又、メモリマップ型レジスタと関連することが可能であり、そのことはシステムソフトウエア又は外部信号が直接的に該ラッチをセット又はリセットすることを可能とする。
【０１２５】
マイクロコンピュータ５０における各ウォッチポイント間においての完全なる接続性を与えるために、各ラッチはマルチプレクサ２１０Ａ−２１０Ｆ及びデマルチプレクサ２１２Ａ−２１２Ｆと関連している。各マルチプレクサ２１０Ａ−２１０Ｆは接続１１７Ａ−１１７Ｆを介してプレコンディションレジスタ１１０Ａ−１１０Ｆのビット３乃至６へ夫々結合される選択出力信号を有している。各マルチプレクサは接続２１４Ａ−２１４Ｇを介してラッチ２００Ａ−２００Ｇの各出力２０６Ａ−２０６Ｇへ接続される多数の入力を有している。各ラッチは、そのセット入力２０２Ａ−２０２Ｆ及びリセット入力２０４Ａ−２０４Ｆを、夫々、接続２１３Ａ−２１３Ｆを介して、デマルチプレクサ２１２Ａ−２１２Ｆの出力へ接続している。比較器・トリガ処理論理１８０Ａ−１８０Ｆが、夫々、接続２１７Ａ−２１７Ｆを介してデマルチプレクサ２１２Ａ−２１２Ｆへ結合している。
【０１２６】
動作について説明すると、プレコンディションレジスタ１１０と、アクションレジスタ１１４と、比較器・トリガ処理論理回路１８０とを有するいずれかのウォッチポイントをマルチプレクサ２１０と、ラッチ２００と、デマルチプレクサ２１２とを有する接続用回路を使用してその他のウォッチポイントへ接続させることが可能である。例えば、プレコンディションレジスタ１１０Ｅと、アクションレジスタ１１２Ｅと、比較器・トリガ処理論理１８０Ｅとを有するデバッグモジュールウォッチポイントのトリガ動作を、プレコンディションレジスタ１１０Ａと、アクションレジスタ１１２Ａと、比較器・トリガ処理論理１８０Ａとを有するＣＰＵウォッチポイントに従属させることが望まれているものと仮定する。プレコンディションレジスタ１１０Ａを、該１組のプレコンディションコードの中でいずれかの所望のプレコンディションコードをイネーブルさせるようにプログラムする。該１組のアクションコードの中でいずれか所望のアクションコードを活性化するようにアクションレジスタ１１２Ａをプログラムし、且つ、特に、アクションレジスタ１１２Ａのフィールド１４２をラッチ２００Ｃを識別する４ビットコードでプログラムする。アクションレジスタ１１２Ａのフィールド１４０を、該ウォッチポイントのトリガ動作と共に、ラッチ２００Ｃをセットするようにプログラムする。プレコンディションレジスタ１１０Ｅを該１組のプレコンディションコードの中でいずれかの所望のプレコンディションコードをイネーブルさせるようにプログラムし、且つ、特に、プレコンディションレジスタ１１０Ｅのフィールド１２０を該プレコンディション内に１個のラッチを包含させることをイネーブルさせるべくプログラムし、且つプレコンディションレジスタ１１０Ｅのフィールド１２２をラッチ２００Ｃを識別する４ビットコードでプログラムする。アクションレジスタ１１２Ｅを該１組のアクションコードのうちでいずれか所望のアクションコードを活性化させるべくプログラムする。
【０１２７】
その後に、プログラムの実行期間中に、該アクティブなプレコンディションが全てが特定されると（且つオプションのマッチレジスタにおける付加的なマッチ条件がマッチされると）、該ウォッチポイントがトリガし且つ比較器・トリガ処理論理１８０Ａがアクションレジスタ１１２Ａのフィールド１４２に応答してデマルチプレクサ２１２Ａへ選択信号を送る。デマルチプレクサ２１２Ａはこの信号に応答してラッチ２０２Ｃを選択し且つクロック入力２０５Ａ上のクロック信号及びアクションレジスタ１１２Ａのフィールド１４０に応答して該ラッチをセットする。
【０１２８】
次のクロックサイクルにおいて、ラッチ２００の出力が全てのマルチプレクサ２１０Ａ−２１０Ｆへ供給される。マルチプレクサ２１０Ｅはプレコンディションレジスタ１１０Ｅのフィールド１２２に応答してラッチ２００Ｃの出力２０６Ｃを選択する。プレコンディションレジスタ１１０Ｅにおいて特定された全てのプレコンディション（事前条件）が満足されると（且つ、オプションのマッチレジスタにおける付加的なマッチ条件がマッチされると）、該ウォッチポイントがトリガし且つ比較器・トリガ処理論理１８０Ｅがアクションレジスタ１１２Ｅに応答してアクションレジスタ１１２Ｅにおけるアクティブなアクションコードに応答する。
【０１２９】
上述した実施例は、マイクロコンピュータにおけるいずれかのラッチ及びいずれかのウォッチポイントを共に結合させることが可能であることを示している。特に、上述した例のアナライザ（解析器）はＣＰＵウォッチポイントをデバッグモジュールウォッチポイントへ結合するために使用されているシステムバスアナライザにおけるラッチを例示している。
【０１３０】
理解されるように、複数個のプレコンディションレジスタが単一のラッチ出力に応答することが可能である。更に理解されるように、複数個のアクションレジスタが単一のラッチをセット又はリセットすることが可能である。
【０１３１】
マイクロコンピュータ５０内に設けられており且つ図１０Ａ及び図１０Ｂに示した回路の結果として、マイクロコンピュータ内の複数個のウォッチポイントの間で完全なる接続性が提供されている。いずれのウォッチポイントも、チェーンラッチを介して、該マイクロコンピュータ内のその他のウォッチポイントのプレコンディションに参加させるために使用することが可能である。ウォッチポイントは任意の態様で結合させることが可能である。このことはデバッグ用データの有用で且つ洗練されたフィルタ処理を提供することを可能とさせる。例えば、２個のウォッチポイントは、それらが、両方ともトリガされた場合に３番目のウォッチポイントをイネーブルさせるようにＡＮＤ処理させることが可能である。別の例においては、１個のウォッチポイントを第二のウォッチポイントをイネーブルさせるチェーンラッチをセットさせるために使用することが可能であり、且つ該第二ウォッチポイントをディスエーブルさせるために該チェーンラッチをリセットさせるために第三ウォッチポイントを使用することが可能である。別の例においては、このイネーブル及びディスエーブル機能を与えるためにウォッチポイントのグループを結合させることが可能である。例えば、１つのグループのウォッチポイントを１個のウォッチポイントをイネーブルさせるためにＯＲ処理することが可能であり、且つそのウォッチポイントをディスエーブルさせるために別のグループのウォッチポイントをＯＲ処理させることが可能である。
【０１３２】
プログラム可能なプレコンディションレジスタとアクションレジスタとを具備している本発明のウォッチポイントがチェーンラッチを使用して任意の態様で結合される場合には、強力且つ洗練されたデバッギング動作及びデバッギングデータのフィルタ処理を簡潔な態様で達成することが可能である。
【０１３３】
ウォッチポイントトリガ処理イベントを一体的に結び付けるためにラッチと関連して一様にプログラム可能なウォッチポイントを結合させることによって与えられるフィルタ処理機能は、マイクロコンピュータ５０において必要とされる回路の量を不当に増加させることなしに、オンチップ上で洗練され且つ複雑なデバッギング動作を実施することを可能とさせる。更に、複雑なデバッギング動作を実施するための能力はオンチップ上に設けられているので、外部の高価なロジックアナライザが最早必要とされるものではない。又、プログラム可能なウォッチポイント及びラッチはデバッギング情報用のフィルタとして使用することが可能であるので、オフチップへ送られるトレース情報の量を著しく減少させることが可能である。何故ならば、デバッグデータを処理するかなりの部分はオンチップで行うことが可能だからである。
【０１３４】
次に、図１１を参照すると、それは２個のウォッチポイントの動作をどのようにしてＡＮＤ処理することが可能であるかを例示している。信号２５０は任意のウォッチポイントの出力を示している。一連のイネーブル及びディスエーブルイベントが該ウォッチポイントのトリガ動作によって発生されている。イネーブルイベントはイネーブル用のウォッチポイントの出力が高論理レベルへ遷移する場合に発生され、且つディスエーブルイベントはイネーブル用ウォッチポイントの出力が低レベルへ遷移する場合に発生される。イネーブル用ウォッチポイントは該イネーブル用ウォッチポイントに関してイネーブルイベントが発生する場合にセットされ且つイネーブル用ウォッチポイントに関してディスエーブルイベントが発生する場合にリセットされるラッチへ結合されている。信号２５２は、イネーブル用ウォッチポイントがイネーブルイベントを発生する場合にラッチ出力状態が高論理レベルへ遷移し且つイネーブル用ウォッチポイントがディスエーブルイベントを発生する場合に低論理レベルへ遷移することを示している。ラッチ出力状態はウォッチポイントＸに対するプレコンディションレジスタへ結合される。信号２５４は、ウォッチポイントＸが信号２５４が高論理レベルにある場合にそのプレコンディションレジスタによってイネーブルされ且つ信号２５４が低論理レベルにある場合にそのプレコンディションレジスタによってディスエーブルされることを示している。信号２５６は、ウォッチポイントＸがトリガする場合を示している。信号２５０と２５４とが高レベルにある場合には、信号２５６は高論理レベルにあり、ウォッチポイントＸがトリガされたことを表し、且つ信号２５０と２５４とが高論理レベルにない場合には、信号２５６は低論理レベルにあり、ウォッチポイントＸがトリガされていないことを表す。従って、ウォッチポイントＸは、そのイネーブル用ウォッチポイントがトリガしており、且つウォッチポイントＸのプレコンディションが満足されている場合にのみトリガする。ウォッチポイントのトリガ動作は、上昇又は下降クロックエッジ上で発生する。
【０１３５】
図１２はどのようにして１つのウォッチポイントが２番目のウォッチポイントによってイネーブルされ且つ３番目のウォッチポイントによってディスエーブルされるかを示している。図１２において、信号２５８はラッチをセットするために使用されるイネーブル用ウォッチポイントの出力である。信号２６０は該ラッチをリセットするために使用されるディスエーブル用ウォッチポイントの出力である。該ラッチの出力はウォッチポイントＸのプレコンディションレジスタへ１つのプレコンディションとして供給される。ウォッチポイントＸはそれ自身のプレコンディションレジスタを有しており、それはウォッチポイントＸがイネーブルされる条件を画定する。信号２６６はトリガされた場合のウォッチポイントＸの状態を表しており、即ち該ウォッチポイントがトリガされた場合には高論理レベルへ遷移し、且つ該ウォッチポイントがトリガされない場合には低論理レベルへ遷移する。その結果、信号２６２が高論理レベルにあり且つ信号２６４が高論理レベルにある場合には、信号２６６は高論理レベルへ遷移する。
【０１３６】
イベントのシーケンスは以下の通りである。マッチポイント出力２５８が領域２６８において高論理レベルへ遷移すると、イネーブルイベントが発生する。このことはラッチ出力状態を高論理レベルへセットする。従って、ウォッチポイントＸがイネーブルされるが、信号２６４が高論理レベルへ遷移する場合に領域２７０における第一マッチが発生するまでトリガすることはない。その後に、信号２６０が低論理レベルから高論理レベルへ遷移して領域２７２においてディスエーブルイベントを発生する。この信号２６０の遷移が該ラッチをリセットさせ、従って信号２６２上の論理レベルは高論理レベルから低論理レベルへ遷移する。この期間中に、信号２６４も低論理レベルへ遷移し従ってウォッチポイントＸは最早イネーブルされておらず、従ってウォッチポイントＸはトリガすることはない。その後に、信号２５８は領域２７４において低論理レベルから高論理レベルへ遷移してイネーブルイベントを発生し、信号２６２を低論理レベルから高論理レベルへ遷移させる。然しながら、信号２６４は未だに低論理レベルにあるので、ウォッチポイントＸはトリガすることはなく、信号２６４が高論理レベルへ遷移し且つ第二マッチが領域２７６において発生した場合にのみトリガする。その後に信号２６０は低論理レベルから高論理レベルへ遷移して領域２７８においてディスエーブル用ウォッチポイント出力を発生し、そのことは該ラッチをクリアし、従って信号２６２は高論理レベルから低論理レベルへ遷移する。その後に、信号２５８は低論理レベルから高論理レベルへ遷移してイネーブルイベントを発生し、該イベントが該ラッチをセットし且つ信号２６２を低論理レベルから高論理レベルへ遷移させる。ウォッチポイントのトリガ動作は上昇又は下降クロックエッジ上で発生する。
【０１３７】
図１３は、ウォッチポイントＸがイネーブルされるウォッチポイントであると共にディスエーブルイベントを発生するという点を除いて、図１２におけるものと同一のタイプのシーケンスを示している。線２８６上のイネーブル用ウォッチポイント出力によって発生されるイネーブルイベントの結果としてウォッチポイントＸがトリガすると、ウォッチポイントＸはディスエーブルイベントを発生してラッチをリセットさせ、従ってラッチ出力状態信号２８８は高論理レベルから低論理レベルへ遷移する。該ラッチは再度ウォッチポイントＸをイネーブルさせるためには次のイネーブルイベント２９４によってリセットされねばならない。このウォッチポイントプログラミングの例は、ウォッチポイントＸをしてイネーブル条件をディスエーブルさせ、該イネーブル条件は、ウォッチポイントＸを再度トリガさせるためには再度発生せねばならない。ウォッチポイントのトリガ動作は上昇又は下降クロックエッジ上で発生する。
【０１３８】
図１４は図１２と同様な別の例を示している。図１４において、複数個のウォッチポイントＥO―ＥNが複数個のディスエーブル用ウォッチポイントＥO―ＥNとＯＲ処理され、従っていずれか１つのウォッチポイントＥO―ＥNのトリガ動作はウォッチポイントＸをイネーブルさせ且つウォッチポイントＤO―ＤNのうちのいずれか１つのトリガ動作はウォッチポイントＸをディスエーブルさせる。ウォッチポイントＥO―ＥNのいずれかのトリガ動作、ウォッチポイントＤO―ＤNのうちのいずれかのトリガ動作、及びウォッチポイントＸのトリガ動作は上昇又は下降クロックエッジ上で発生する。
【０１３９】
以上、本発明の具体的実施の態様について詳細に説明したが、本発明は、これら具体例にのみ制限されるべきものではなく、本発明の技術的範囲を逸脱することなしに種々の変形が可能であることは勿論である。
【図面の簡単な説明】
【図１】  第一のタイプのマイクロコンピュータデバッギングシステムを示した概略図。
【図２】  別のタイプのマイクロコンピュータデバッギングシステムを示した概略図。
【図３】  本発明に基づく全体的なコンピュータシステムの構成を示した概略図。
【図４】  本発明に基づくウォッチポイントの構成を示した概略図。
【図５Ａ】  図４に示したプレコンディションレジスタの定義の一部を示した概略図。
【図５Ｂ】  図４に示したプレコンディションレジスタの定義の一部を示した概略図。
【図５Ｃ】  図４に示したプレコンディションレジスタの定義の一部を示した概略図。
【図６Ａ】  図４に示したアクションレジスタの定義の一部を示した概略図。
【図６Ｂ】  図４に示したアクションレジスタの定義の一部を示した概略図。
【図６Ｃ】  図４に示したアクションレジスタの定義の一部を示した概略図。
【図６Ｄ】  図４に示したアクションレジスタの定義の一部を示した概略図。
【図６Ｅ】  図４に示したアクションレジスタの定義の一部を示した概略図。
【図６Ｆ】  図４に示したアクションレジスタの定義の一部を示した概略図。
【図６Ｇ】  図４に示したアクションレジスタの定義の一部を示した概略図。
【図７】  本発明に基づいてウォッチポイントがトリガ動作される方法を示したフローチャート。
【図８】  本発明に基づいてウォッチポイントをトリガ動作させる回路を示した概略図。
【図９】  本発明に基づくラッチを示した概略図。
【図１０Ａ】  本発明に基づいてウォッチポイントをリンクさせるためにどのようにしてラッチが使用されるかの構成の一部を示した概略図。
【図１０Ｂ】  本発明に基づいてウォッチポイントをリンクさせるためにどのようにしてラッチが使用されるかの構成の一部を示した概略図。
【図１１】  本発明に基づいてどのようにして２個のウォッチポイントをＡＮＤ処理するかを示した概略図。
【図１２】  どのようにして２個のウォッチポイントが３番目のウォッチポイントをイネーブル及びディスエーブルさせるかを示した概略図。
【図１３】  どのようにして２個のウォッチポイントが３番目のウォッチポイントをイネーブル及びディスエーブルさせるかを示しており第一及び第二ウォッチポイントが第三ウォッチポイントと同一である場合の概略図。
【図１４】  どのようにして複数個のウォッチポイントからなるグループ内のいずれかのウォッチポイントが３番目のウォッチポイントをイネーブルさせ且つ別のグループのウォッチポイントにおけるいずれかのウォッチポイントが該３番目のウォッチポイントをディスエーブルさせるかを示した概略図。
【符号の説明】
５０  マイクロコンピュータ
５１  中央処理装置コア
５２  中央処理装置（ＣＰＵ）
５４  ＣＰＵウォッチポイント制御器
５６  システムバス
５８  データリンク
６０  ＲＡＭインターフェース
６２  データリンク
６４  ＲＯＭインターフェース
６６  データリンク
７０  デバッグモジュール
７８  トリガイン／トリガアウトインターフェース
８０  システムバス制御器
８１  システムバスアービター（調停器）
８４  システムバスアナライザ
８８  ペリフェラルコンポーネントバス
９０  ペリフェラルコンポーネントバス制御器
９１  ペリフェラルコンポーネントバスアービター
９６  ペリフェラルコンポーネントバスアナライザ
１００  ペリフェラルコンポーネントバスモジュール
１０４  ペリフェラルコンポーネントバスインターフェース
【図１】
0004987182.tif 000002
【図２】
0004987182.tif 000003
【図３】
0004987182.tif 000004
【図４】
0004987182.tif 000005
【図５Ａ】
0004987182.tif 000006
【図５Ｂ】
0004987182.tif 000007
【図５Ｃ】
0004987182.tif 000008
【図６Ａ】
0004987182.tif 000009
【図６Ｂ】
0004987182.tif 000010
【図６Ｃ】
0004987182.tif 000011
【図６Ｄ】
0004987182.tif 000012
【図６Ｅ】
0004987182.tif 000013
【図６Ｆ】
0004987182.tif 000014
【図６Ｇ】
0004987182.tif 000015
【図７】
0004987182.tif 000016
【図８】
0004987182.tif 000017
【図９】
0004987182.tif 000018
【図１０Ａ】
0004987182.tif 000019
【図１０Ｂ】
0004987182.tif 000020
【図１１】
0004987182.tif 000021
【図１２】
0004987182.tif 000022
【図１３】
0004987182.tif 000023
【図１４】
0004987182.tif 000024