(57)【特許請求の範囲】
【請求項１】
データプロセッサ（３）を動作させる方法であって、
外部開発システム（７）からメモリ装置（６）へアクセスするためにコマンドを受信する段階、
前記外部開発システムから前記メモリ装置におけるメモリロケーションにアクセスするためにアドレスを受信する段階、
前記コマンドをデコードして前記データプロセッサのデバッグモジュールの制御回路（２０）を使用して前記データプロセッサにより実行されるべき機能を決定する段階、
前記アドレスを前記デバッグモジュールの第１のアドレスレジスタに格納する段階、
第１の論理状態でバス要求信号を発生するために前記デバッグモジュールの前記制御回路を動作可能にする段階、
現在の複数のパイプライン方式の命令が実行されかつ前記バス要求信号が前記第１の論理状態にある場合に中央処理ユニット（２）の内部命令パイプライン（２１０）を停止させる段階、
前記中央処理ユニットの前記内部命令パイプラインが停止されたとき第２の論理状態でバス承認信号を発生するために前記中央処理ユニットを動作可能にする段階、
前記バス承認信号が前記第２の論理状態にある場合に前記デバッグモジュールにおける前記第１のアドレスレジスタのアドレスを前記メモリ装置に提供する段階、そして
前記メモリ装置の前記メモリロケーションをアクセスして前記外部開発システムによって提供されるコマンドにより特定される機能を実行する段階、
を具備することを特徴とするデータプロセッサ（３）を動作させる方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は一般的にはデータ処理システムに関し、かつより特定的にはデータ処理システムにおいてデバッグ機能を行うための方法および装置に関する。
【０００２】
【従来の技術】
データ処理システムが設計されたとおり動作しない場合、障害の源を識別するために種々の分析技術を使用することができる。一般に、トレース機能（ｔｒａｃｅ  ｆｕｎｃｔｉｏｎｓ）およびブレークポイント機能（ｂｒｅａｋｐｏｉｎｔ  ｆｕｎｃｔｉｏｎｓ）がデータ処理システム内で行われてうまく作動しない回路の分離およびうまく作動しないソフトウエアプログラムの訂正を助ける。
【０００３】
これらの機能は外部ユーザがデータ処理動作の実行の中間結果を観察できるようにする。トレース機能は一般にデータ処理システムによってソフトウエアプログラムの各命令または所定のグループの命令が実行された後に該データ処理システムに含まれる選択されたレジスタおよびメモリのステータスを提供する。選択されたレジスタおよびメモリのステータスを反映させることにより、トレース機能は外部ユーザにデータプロセッサまたはデータ処理システムの内部プログラミングモデルに関する非常に詳細な情報を提供する。この情報により、多くの形式のエラーは識別できかつ実質的に訂正できる。ブレークポイント機能もまたデータ処理システムにおける誤ったソフトウエアコードまたは欠陥のある回路を識別しかつ分離するための方法を提供する。ブレークポイント機能は、要するに、予めプログラムされた事象が発生した場所においてソフトウエアプログラム中で中断を生じさせるものである。次にソフトウエアプログラムのステータスを判定するためにデータが得られる。トレース機能と同様に、ブレークポイント機能は外部ユーザがデータ処理のエラーが識別できるように選択されたレジスタおよびメモリのおのおののステータスを確かめることができるようにする。
【０００４】
トレース機能およびブレークポイント機能の双方は現在入手可能なデータ処理システムにおいて集積回路化されてきており前に述べた分離および識別能力を提供する。例えば、アメリカ合衆国、カリフォルニア州、サンタ・クララのインテル・コーポレイションから入手可能な、ｉ９６０Ｊｘマイクロプロセッサはトレース事象（ｔｒａｃｅ  ｅｖｅｎｔｓ）およびトレース障害（ｔｒａｃｅ  ｆａｕｌｔｓ）を発生する内部ブレークポイントレジスタを有する集積回路マイクロプロセッサである。ｉ９６０Ｊｘマイクロプロセッサにおいては、内部ブレークポイントレジスタは命令実行アドレスに際してまたは種々のタイプのデータアクセスのアドレスに際してトラップまたは捕捉するのに専用のものである。ｉ９６０Ｊｘマイクロプロセッサのトレーシング設備を使用するためには、マイクロプロセッサを使用するソフトウエアは障害処理手順またはデバッグ用モニタプログラムとのインタフェースを提供しなければならない。種々のトレーシングモードを可能にしかつトレーシング機能を選択的にイネーブルしまたはディスエーブルするためにいくつかのレジスタおよび制御ビットを操作するためにもソフトウエアが必要とされる。
【０００５】
同様に、アメリカ合衆国、カリフォルニア州、サンタ・クララのインテル・コーポレイションから入手可能な、８０４８６マイクロプロセッサは内部ブレークポイントレジスタを備えた集積回路マイクロプロセッサでありかつトレース機能を行うことができる。８０４８６マイクロプロセッサでは、ブレークポイント命令は内部ソフトウエアのデバッガ装置によって使用するために実施されこの場合内部ソフトウエアは単にデータ処理システムで動作するソフトウエアを参照するのみである。一般の動作の間は、ソフトウエアデバッグプログラムは実行されるソフトウエアコードの種別に依存するすべての所望のブレークポイントにおいてブレークポイント命令を実施することができる。前記８０４８６型マイクロプロセッサはまたトラップルーチンが実行された後に割込みを実行する単一ステップのトラップ機能を実施するためのメカニズムを提供する。
【０００６】
【発明が解決しようとする課題】
前記ｉ９６０Ｊｘ型マイクロプロセッサおよび８０４８６型マイクロプロセッサはブレークポイントおよびトレース機能を集積しているが、該マイクロプロセッサのデバッグ機能は該マイクロプロセッサが通常の動作を中止しかつ特別のデバッグ例外ルーチンに入ることを要求する。該デバッグ例外ルーチンの間は、マイクロプロセッサはそれらが通常の動作の間に行うように機能せずかつ、従って、回路またはソフトウエアの障害が同様に発生しないことがある。その結果、外部ユーザはリアルタイムの障害状態が実際に起こらない場合はいずれのマイクロプロセッサにおいても障害の根本原因を確認しかつ分離することができないであろう。
【０００７】
さらに、前記ｉ９６０Ｊｘ型マイクロプロセッサおよび前記８０４８６型マイクロプロセッサはいずれもブレークポイントおよびトレース機能の間にプログラム制御を提供するためにマイクロプロセッサによって実行される内部ソフトウエアデバッグプログラムを必要とする。そのようなデバッグ制御を使用することは多量のオーバヘッドを必要とする非常に侵入的な（ｉｎｔｒｕｓｉｖｅ）方法のデバッグを提供する。また、デバッグ用ソフトウエアを使用することは障害のマイクロプロセッサにおける障害の回路またはシーケンスの真の反映を与えることができない。
【０００８】
従って、リアルタイムのトレースおよびリアルタイムのデバッグ機能の双方を提供するデータプロセッサの必要性が存在する。もしトレースおよびデバッグ機能の双方が通常動作の間に、かつ特別のデバッグモードの動作においてではなく、データプロセッサの動作を反映する方法で実行されれば、外部ユーザはデータプロセッサの回路およびソフトウエアの障害をより正確に識別しかつ訂正できるであろう。
【０００９】
【課題を解決するための手段】
本発明はブレークポイントおよびトレース機能の双方をリアルタイムでかつ特別のモードの動作を必要とすることなく提供できるデータ処理システムを提供する。さらに、ブレークポイントおよびトレース機能の双方はデータ処理システムによって、データプロセッサが外部アドレスバスまたは外部データバスを介してアドレスおよびデータ情報を提供するためにテストされることを必要とすることなく実行できる。この外部バスからの独立性は本発明がサイズ、タイプ、プロトコル、または外部バスの存在にもかかわらず種々のデータ処理システムに対し適用できる効率的なデバッグメカニズムを提供できるようにする。
【００１０】
さらに、本発明はトレースおよびブレークポイント機能をリアルタイムで実施するためのアーキテクチャおよび方法を提供する。テストされているデータプロセッサは典型的にはトレースおよびブレークポイント機能が実行される前に動作を停止しまたは変更することを要求されない。従って、本発明は、データプロセッサが通常通り動作しておりかつデバッグ動作のための特別のモードにない間に外部ユーザが障害を分離できるようにする。また、本発明はリアルタイムのトレースまたはリアルタイムのデバッグ動作の実行に応じて直接外部ユーザにデータを提供する。トレース機能またはデバッグ機能を行うために外部ソフトウエアモニタプログラムまたは外部エミュレータを必要とする従来技術の装置と異なり、本発明はデータプロセッサの現在の動作を示すデータを外部ユーザに提供する。従って、本発明はデータプロセッサに大幅に侵入しまたは悪影響を与えることなくトレースおよびデバッグ機能を提供する。本発明の動作は引き続き詳細に説明する。
【００１１】
【発明の実施の形態】
以下の説明では、本発明を実施するデータ処理システムの１実施形態の接続および動作につき非常に詳細に説明する。
【００１２】
＜本発明の接続構成＞
本発明の接続構成の以下の説明では、用語「バス」は、データ、アドレス、制御またはステータスのような、１つまたはそれ以上の種々のタイプの情報を転送するために使用できる複数の信号または導体に言及するために使用される。用語「肯定する」および「否定する」は信号、ステータスビット、または同様の装置を、それぞれ、その論理的に真のまたは論理的に偽の状態にする場合に使用される。もし前記論理的に真の状態が論理レベル“１”であれば、前記論理的に偽の状態は論理レベル“０”である。また、もし前記論理的に真の状態が論理レベル“０”であれば、前記論理的に偽の状態は論理レベル“１”である。
【００１３】
さらに、ある数に先行する記号“＄”はその数が１６進または１６をベースとする形式で表されていることを示す。ある数に先行する記号“％”はその数がその２進または２をベースとした形式で表されていることを示す。
【００１４】
次に図１を参照すると、図１は本発明の１実施形態に係わるデータ処理システム５を示す。データ処理システム５はデータプロセッサ３および外部開発システム（ｅｘｔｅｒｎａｌ  ｄｅｖｅｌｏｐｍｅｎｔ  ｓｙｓｔｅｍ）７を具備する。データプロセッサ３はシステムバスコントローラ８、コア（ｃｏｒｅ）９、スレイブモジュール１２、スレイブモジュール１３、マスタモジュール１４、およびデバッグモジュール１０を含む。システムバスコントローラ８はＥ−バスを介して外部装置（ここでは図示されていない）に結合されている。システムバスコントローラ８はＳ−バスを介してスレイブモジュール１２およびスレイブモジュール１３に結合されている。該Ｓ−バスはスレイブモジュールバスである。システムバスコントローラ８はＭ−バス２３を介してコア９およびマスタモジュール１４に結合されている。Ｍ−バス２３はマスタモジュールバスである。
【００１５】
コア９は中央処理ユニット（ＣＰＵ）２、メモリ管理ユニット（ＭＭＵ）／コントローラ４、およびメモリ６を具備する。中央処理ユニット２、ＭＭＵ／コントローラ４、メモリ６、およびデバッグモジュール１０はおのおの互いにＫ−バス２５を介して結合されている。中央処理ユニット２およびメモリ６はまた直接ＭＭＵ／コントローラ４に接続されている。ＭＭＵ／コントローラ４は情報をＭ−バス２３を介してデータ処理システム５の残りの部分に提供する。中央処理ユニット２はＣＰＳＴ信号を提供するためにおよびストール（Ｓｔａｌｌ）信号を受信するためにデバッグモジュール１０に結合されている。ＣＰＵ２はまた外部装置からリセット（Ｒｅｓｅｔ）信号を受信する。デバッグモジュール１０はプロセッサステータス（ＰＳＴ）信号、デバッグデータ（ＤＤＡＴＡ）信号、および開発シリアルデータ出力（ｄｅｖｅｌｏｐｍｅｎｔ  ｓｅｒｉａｌ  ｄａｔａｏｕｔ：ＤＳＤＯ）信号を外部ユーザに提供する。デバッグモジュール１０は開発シリアルデータ入力（ｄｅｖｅｌｏｐｍｅｎｔ  ｓｅｒｉａｌ  ｄａｔａ  ｉｎ：ＤＳＤＩ）信号、開発シリアルクロック（ＤＳＣＬＫ）、およびブレークポイント（＊ＢＫＰＴ）信号をデータ処理システム５の外部の装置（図示せず）から受け取る。なお、ここで記号＊は信号の論理的反転を示し、いわゆるオーババー（ｏｖｅｒｂａｒ）に対応する。
【００１６】
図２は、デバッグモジュール１０をより詳細に示す。デバッグモジュール１０は制御回路２０、シリアルインタフェース３０、レジスタ３２、複数の制御レジスタ４０、複数のハードウエアブレークポイントレジスタ５０、制御回路６０、ＦＩＦＯ７０、複数のマルチプレクサ８０、およびブレークポイント回路１００を含む。
【００１７】
前記＊ＢＫＰＴ信号は外部集積回路ピン（図２には詳細に示されていない）を介して制御回路２０に与えられる。制御回路２０は複数のビットを有する「ステータス（Ｓｔａｔｕｓ）」信号を受信するために複数の制御レジスタ４０に結合されている。制御回路２０はブレークポイント回路１００に結合されて複数のビットを有する「ブレークポイント（Ｂｒｅａｋｐｏｉｎｔ）」信号を受け取る。制御回路２０は複数のビットを有する「トレース（Ｔｒａｃｅ）」信号を提供するために制御回路６０に結合されている。制御回路２０は制御バス１５を介して前記複数の制御レジスタ４０、前記複数のハードウエアブレークポイントレジスタ５０、およびレジスタ３２に結合されている。制御回路２０は複数の「ブレークポイント制御」信号および「バス要求」信号をＣＰＵ２に提供する。制御回路２０はまたＣＰＵ２によって提供される「バス承認」信号を受信する。
【００１８】
前記複数の制御レジスタ４０はレジスタ３２からマルチビットシリアル情報信号を受け取る。前記複数の制御レジスタ４０は複数のビットを有する「構成（Ｃｏｎｆｉｇｕｒａｔｉｏｎ）」信号を制御回路６０に提供する。ブレークポイント回路１００はＫ−バス２５からＫＡＤＤＲ（Ｋアドレス）信号およびＫＤＡＴＡ信号を受信する。前記複数のハードウエアブレークポイントレジスタ５０はまた複数のビットを有する「内部データ」信号をレジスタ３２に提供する。Ｋ−バス２５はまた前記複数のハードウエアブレークポイントレジスタ５０に提供されている。Ｋ−バス２５はＫＡＤＤＲ信号、ＫＤＡＴＡ信号、およびＫＣＯＮＴＲＯＬ信号の集まりであることに注意を要する。これらＫＡＤＤＲ、ＫＤＡＴＡ、およびＫＣＯＮＴＲＯＬ信号のおのおのはブレークポイント回路１００に入力される。
【００１９】
シリアルインタフェース３０は、それぞれ、第１および第２の集積回路ピンからＤＳＤＩおよびＤＳＣＬＫ信号を受信する。シリアルインタフェース３０はＤＳＤＯ信号を第３の集積回路ピンに提供する。シリアルインタフェース３０はレジスタ３２に結合されている。レジスタ３２は前記複数の制御レジスタ４０および前記複数のハードウエアブレークポイントレジスタ５０に結合されてマルチビット（シリアル情報）信号を提供する。
【００２０】
制御回路６０は「ストール」信号をＣＰＵ２に提供する。制御回路６０はまた「ＦＩＦＯ制御」信号をＦＩＦＯ７０にかつ「Ｍｕｘ制御」信号を複数のマルチプレクサに提供する。ＦＩＦＯ７０はＫ−バス２５に結合されて前記ＫＡＤＤＲおよびＫＤＡＴＡ信号を受信する。ＦＩＦＯ７０はまたＦＩＦＯ信号を提供するために前記複数のマルチプレクサ８０に結合されている。ＦＩＦＯ７０はまた「フル（Ｆｕｌｌ）」信号を制御回路６０に提供する。前記複数のマルチプレクサ８０はＣＰＵ２からＣＰＳＴ信号を受信する。前記複数のマルチプレクサ８０はＤＤＡＴＡ信号およびＰＳＴ信号を提供する。
【００２１】
制御回路２０はシリアルインタフェース３０を動作させるためにおよびレジスタ３２内の情報の格納を制御するために必要な信号を提供する。いったんレジスタ３２にデータがロードされると、制御回路２０はこのデータを制御回路４０または前記複数のハードウエアブレークポイントレジスタ５０の適切な宛先へと転送するよう指令する。制御回路２０によって実行される制御機能は「制御」バス１５によって通信される。ロード動作の実行を制御することに加えて、制御回路２０は制御回路４０からステータス情報を受信しかつブレークポイント回路１００からブレークポイント情報を受信する。制御回路２０は集合的に該ステータス情報およびブレークポイント情報を使用して前記「バス要求」信号、「ブレークポイント制御」信号、および「トレース」信号を発生する。
【００２２】
図３は、ブレークポイント回路１００をより詳細に示す。ブレークポイント回路１００はアドレスブレークポイントハイレジスタ（ＡＢＨＲ）１１０、アドレスブレークポイントローレジスタ（ＡＢＬＲ）１２０、比較器１３０、比較器１４０、データブレークポイントマスクレジスタ（ＤＢＭＲ）１５０、データブレークポイントレジスタ（ＤＢＲ）１６０、一時データレジスタ１７０、比較器１８０、プログラムカウンタブレークポイントマスクレジスタ（ＰＢＭＲ）１９０、プログラムカウンタブレークポイントレジスタ（ＰＢＲ）１１５、一時プログラムカウンタ（ＰＣ）レジスタ１２５、および比較器１３５を具備する。
【００２３】
制御バス１５はＡＢＨＲ  １１０，ＡＢＬＲ  １２０，ＤＢＭＲ  １５０，ＤＢＲ  １６０，ＰＢＭＲ  １９０，およびＰＢＲ  １１５のおのおのの入力に結合されている。前記「シリアル情報」信号はＡＢＨＲ  １１０，ＡＢＬＲ  １２０，ＤＢＭＲ  １５０，およびＤＢＲ１６０のおのおのの入力に結合されている。前記ＫＣＯＮＴＲＯＬ信号はＰＢＭＲ  １９０，ＰＢＲ  １１５，および一時ＰＣレジスタ１２５のおのおのの入力に結合されている。ＡＢＨＲ  １１０の第１の出力は前記ＫＡＤＤＲ信号に結合されている。制御バス１５はまた一時レジスタ１７０および１２５に結合されている。前記「シリアル情報」信号は比較器１３０の第１の入力に結合されている。前記ＫＡＤＤＲ信号は第２の入力を比較器１３０に提供する。ＡＢＬＲ  １２０は第１の入力を比較器１４０に提供しかつ前記ＫＡＤＤＲ信号は第２の入力を比較器１４０に提供する。比較器１３０の出力および比較器１４０の出力はともに前記「ブレークポイント」信号導体に結合されている。
【００２４】
ＤＢＭＲ  １５０の出力は比較器１８０のイネーブル入力に結合されている。ＤＢＲ  １６０の出力は比較器１８０の第１の入力に結合されている。前記ＫＤＡＴＡ信号は一時データレジスタ１７０の入力に結合されている。一時データレジスタ１７０の出力は比較器１８０の第２の入力にかつ前記「内部データ」信号に結合されている。比較器１８０の出力は前記「ブレークポイント」信号導体に結合されている。
【００２５】
ＰＢＭＲ  １９０の出力は比較器１３５のイネーブル入力に結合されている。ＰＢＲ  １１５の出力は比較器１３５の第１の入力に結合されている。前記ＫＣＯＮＴＲＯＬ信号は一時プログラムカウンタレジスタ１２５の入力に結合されている。一時ＰＣレジスタ１３５の出力は比較器１３５の第２の入力に結合されている。比較器１３５の出力は前記「ブレークポイント」信号導体に結合されている。
【００２６】
図１２は中央処理ユニット２の一部をより詳細に示す。中央処理ユニット２の該部分は命令フェッチパイプライン（ＩＦＰ）２１０およびオペランド実行パイプライン（ＯＥＰ）２２０を具備する。ＩＦＰ  ２１０は命令アドレス発生回路２０２、命令フェッチ回路２０４、およびＦＩＦＯ命令バッファ２０６を含む。ＯＥＰ  ２２０はオペランドフェッチ回路２１２、およびアドレス発生回路２１４を具備する。
【００２７】
命令アドレス発生回路２０２の出力はバッファ２０８の第１の入力に結合されている。命令フェッチ回路２０４の出力はＦＩＦＯ命令バッファ２０６およびオペランドフェッチ回路２１２の双方に結合されている。ＦＩＦＯ命令バッファ２０６の出力はオペランドフェッチ回路２１２に結合されている。アドレス発生回路２１４の第１の出力はバッファ２０８の第２の入力に結合されている。アドレス発生回路２１４の第２の出力はバッファ２１６に結合されている。
【００２８】
バッファ２１６の第１の出力はオペランドフェッチ回路２１２におよび命令フェッチ回路２０４に結合されている。バッファ２１６の第２の出力はＫＤＡＴＡ信号を提供する。該ＫＤＡＴＡ信号はまたバッファ２１６に提供される。バッファ２０６の出力は前記ＫＡＤＤＲ信号を提供する。
【００２９】
＜レジスタの説明＞
図４は、複数の制御レジスタ４０の一部をより詳細に示す。本発明の１つの実施形態では、前記複数の制御レジスタ４０の該部分はトリガ定義レジスタ（Ｔｒｉｇｇｅｒ  Ｄｅｆｉｎｉｔｉｏｎ  ｒｅｇｉｓｔｅｒ：ＴＤＲ）および構成／ステータスレジスタ（ＣＳＲ）を含む。
【００３０】
前記ＴＤＲはデバッグモジュール１０の構成を記憶しかつパイプライン化条件の下で実行される選択された機能のための制御を提供する。本発明のこの実施形態では、トリガは１または２レベルトリガとして構成され、この場合ビット３１〜１６は第２のレベルのトリガを規定しかつビット１５〜０は第１のレベルのトリガを規定する。該トリガが２レベルトリガとして構成される場合、該トリガは条件構成（ｃｏｎｄｉｔｉｏｎａｌ  ｃｏｎｓｔｒｕｃｔ）と同様に機能する。例えば、もし第１の条件、またはレベル、のトリガが満たされれば、第２の条件、またはレベル、が、トリガがデータ処理システム５によって実行されるべきブレークポイント機能を可能にする前に満たされなければならない。これは以下の表のように言い換えることができる。
【００３１】
【表１】
もし第１の条件が満たされ、
次に、もし第２の条件が満たされれば、
次にトリガ。
（Ｉｆ  １ｓｔ  ｃｏｎｄｉｔｉｏｎ  ｉｓ  ｓａｔｉｓｆｉｅｄ，
ｔｈｅｎ  ｉｆ  ２ｎｄ  ｃｏｎｄｉｔｉｏｎ  ｉｓ  ｓａｔｉｓｆｉｅｄ
ｔｈｅｎ  ＴＲＩＧＧＥＲ．）
【００３２】
前記ＴＤＲに含まれるビットのおのおのの機能につき引き続きより詳細に説明する。
【００３３】
ＴＤＲが図７により詳細に示されている。該ＴＤＲのＰＣＩビットは「プログラムカウンタブレークポイント反転（Ｐｒｏｇｒａｍ  Ｃｏｕｎｔｅｒ  Ｂｒｅａｋｐｏｉｎｔ  Ｉｎｖｅｒｔ）」ビットである。もしＰＣＩビットが肯定されれば、プログラムカウンタブレークポイントは前記プログラムカウンタブレークポイント（ＰＢＲ）およびプログラムカウンタブレークポイントマスク（ＰＢＭＲ）レジスタで規定される範囲の外側で開始される。もしＰＣＩビットが否定されれば、プログラムカウンタのブレークポイントは前記ＰＢＲおよびＰＢＭＲで規定される範囲内で規定される。
【００３４】
プログラムカウンタブレークポイントイネーブル（Ｅｎａｂｌｅ  Ｐｒｏｇｒａｍ  Ｃｏｕｎｔｅｒ  Ｂｒｅａｋｐｏｉｎｔ：ＥＰＣ）ビットは選択的に、それが肯定されたとき、プログラムカウンタブレークポイント、ＰＢＲおよびＰＢＭＲ、に対するトリガの依存性をイネーブルする。前記ＥＰＣビットが否定されたとき、プログラムカウンタのブレークポイントはディスエーブルされる。
【００３５】
肯定されたとき、イネーブルアドレスブレークポイントロー（Ｅｎａｂｌｅ  Ａｄｄｒｅｓｓ  Ｂｒｅａｋｐｏｉｎｔ  Ｌｏｗ：ＥＡＬ）ビットは前記複数のハードウエアブレークポイントレジスタ５０の「アドレスブレークポイントレジスタ」のＡＢＬＲに格納されたアドレスがブレークポイントトリガとして機能できるようにする。従って、もしＥＡＬビットが肯定されれば、前記ＫＡＤＤＲ信号を介して転送されるアドレス値が前記「アドレスブレークポイントレジスタ」のＡＢＬＲに格納されたアドレス値と同じ場合にブレークポイントはトリガする。
【００３６】
「イネーブルアドレスブレークポイントレンジ（Ｅｎａｂｌｅ  Ａｄｄｒｅｓｓ  Ｂｒｅａｋｐｏｉｎｔ  Ｒａｎｇｅ：ＥＡＲ）」ビットは該ビットが肯定されたとき前記複数のハードウエアブレークポイントレジスタ５０の「アドレスブレークポイントレジスタ」のＡＢＨＲおよびＡＢＬＲによって規定される包括的レンジ（ｉｎｃｌｕｓｉｖｅ  ｒａｎｇｅ）に際してブレークポイントがトリガできるようにする。従って、もし前記ＥＡＲビットが肯定されれば、前記ＫＡＤＤＲ信号を介して転送されるアドレス値が前記「アドレスブレークポイントレジスタ」のＡＢＬＲおよびＡＢＨＲに格納されたアドレス値によって規定される範囲内にある場合にブレークポイントはトリガする。
【００３７】
肯定されたとき、「イネーブルアドレスブレークポイント反転（ＥｎａｂｌｅＡｄｄｒｅｓｓ  Ｂｒｅａｋｐｏｉｎｔ  Ｉｎｖｅｒｔｅｄ：ＥＡＩ）」ビットは前記複数のハードウエアブレークポイントレジスタ５０の「アドレスブレークポイントレジスタ」のＡＢＬＲおよびＡＢＨＲによって規定される範囲を除いた、または該範囲の外側の、アドレス範囲に際してブレークポイントがトリガできるようにする。従って、ＥＡＩビットが肯定されたとき、前記ＫＡＤＤＲ信号を介して転送されるアドレス値が前記「アドレスブレークポイントレジスタ」のＡＢＬＲに格納されたアドレス値より小さいか、あるいは前記「アドレスブレークポイントレジスタ」のＡＢＨＲに格納されたアドレス値より大きい場合にブレークポイントはトリガする。
【００３８】
「データブレークポイント反転（Ｄａｔａ  Ｂｒｅａｋｐｏｉｎｔ  Ｉｎｖｅｒｔ：ＤＩ）」ビットはそれが肯定されたとき複数のデータブレークポイント比較器の論理的センス（ｌｏｇｉｃａｌ  ｓｅｎｓｅ）を反転する。該ＤＩビットは前記複数のハードウエアブレークポイントレジスタ５０のＤＢＲ内にプログラムされたデータ値と等しくないデータ値の出現にもとづきトリガを展開するために使用できる。
【００３９】
肯定されたとき、「上位上部データバイトのためのデータブレークポイントイネーブル（Ｅｎａｂｌｅ  Ｄａｔａ  Ｂｒｅａｋｐｏｉｎｔ  ｆｏｒ  ｔｈｅ  Ｕｐｐｅｒ  Ｕｐｐｅｒ  Ｄａｔａ  Ｂｙｔｅ：ＥＤＵＵ）ビットは前記ＫＤＡＴＡ信号およびＫ−バス２５を介して転送されるデータ値のビット３１〜２４にもとづきデータブレークポイントのトリガを可能にする。同様に、肯定されたとき、「上位中部データバイトのためのデータブレークポイントイネーブル（Ｅｎａｂｌｅ  Ｄａｔａ  Ｂｒｅａｋｐｏｉｎｔ  ｆｏｒ  ｔｈｅ  Ｕｐｐｅｒ  Ｍｉｄｄｌｅ  Ｄａｔａ  Ｂｙｔｅ：ＥＤＭＵ）」ビットは前記ＫＤＡＴＡ信号およびＫ−バス２５を介して転送されるデータ値のビット２３〜１６にもとづきデータブレークポイントのトリガを可能にする。さらに、肯定されたとき、「下位中部データバイトのためのデータブレークポイントイネーブル（Ｅｎａｂｌｅ  Ｄａｔａ  Ｂｒｅａｋｐｏｉｎｔ  ｆｏｒ  ｔｈｅ  Ｌｏｗｅｒ  ＭｉｄｄｌｅＤａｔａ  Ｂｙｔｅ：ＥＤＬＭ）ビットは前記ＫＤＡＴＡ信号およびＫ−バス２５を介して転送されるデータ値のビット１５〜８に基づきデータブレークポイントのトリガを可能にする。また、肯定されたとき、「下位下部データバイトのためのデータブレークポイントイネーブル（Ｅｎａｂｌｅ  Ｄａｔａ  Ｂｒｅａｋｐｏｉｎｔ  ｆｏｒ  ｔｈｅ  Ｌｏｗｅｒ  Ｌｏｗｅｒ  Ｄａｔａ  Ｂｙｔｅ：ＥＤＬＬ）」ビットは前記ＫＤＡＴＡ信号およびＫ−バス２５を介して転送されるデータ値のビット８〜０にもとづきデータブレークポイントのトリガを可能にする。
【００４０】
「上位データワードのためのデータブレークポイントイネーブル（Ｅｎａｂｌｅ  Ｄａｔａ  Ｂｒｅａｋｐｏｉｎｔ  ｆｏｒ  ｔｈｅ  Ｕｐｐｅｒ  ＤａｔａＷｏｒｄ：ＥＤＷＵ）」ビットは肯定されたとき前記ＫＤＡＴＡ信号およびＫ−バス２５を介して転送されるデータ値のビット３１〜１６にもとづきデータブレークポイントのトリガを可能にする。「下位データワードのためのデータブレークポイントイネーブル（Ｅｎａｂｌｅ  Ｄａｔａ  Ｂｒｅａｋｐｏｉｎｔ  ｆｏｒ  ｔｈｅ  Ｌｏｗｅｒ  Ｄａｔａ  Ｗｏｒｄ：ＥＤＷＬ）」ビットは肯定されたとき前記ＫＤＡＴＡ信号およびＫ−バス２５を介して転送されるデータ値のビット１５〜０に基づきデータブレークポイントのトリガを可能にする。
【００４１】
「データロングワードのためのデータブレークポイントイネーブル（Ｅｎａｂｌｅ  Ｄａｔａ  Ｂｒｅａｋｐｏｉｎｔ  ｆｏｒ  ｔｈｅ  Ｄａｔａ  Ｌｏｎｇｗｏｒｄ：ＥＤＬＷ）」ビットは肯定されたとき前記ＫＤＡＴＡ信号およびＫ−バス２５を介して転送されるデータ値のビット３１〜０にもとづきデータブレークポイントのトリガを可能にする。前記ＥＤＵＵ，ＥＤＵＭ，ＥＤＬＭ，ＥＤＬＬ，ＥＤＷＵ，ＥＤＷＬ，およびＥＤＬＷビットの内のいずれのものの肯定もデータブレークポイントのトリガを可能にすることに注目すべきである。一般に必要とされるように、前記与えられた条件はデータブレークポイントが実際にトリガされる前に生じるべきである。もし前記ＥＤＵＵ，ＥＤＵＭ，ＥＤＬＭ，ＥＤＬＬ，ＥＤＷＵ，ＥＤＷＬ，およびＥＤＬＷビットのおのおのが否定されれば、前記データブレークポイントのトリガは本発明の１実施形態ではディスエーブルされる。
【００４２】
さらに、本発明のこの実施形態においては、データブレークポイントのトリガはミスアラインの（ｍｉｓａｌｉｇｎｅｄ）またはアンアラインの（ｕｎａｌｉｇｎｅｄ）オペランド参照に応じて発生するようにすることができる。ミスアラインのまたはアンアラインのオペランド参照に応じたブレークポイントトリガのこの発生は以下の方法を使用する。バイトサイズの参照に対しては、適切な組のデータビットがオペランドアドレスの２つの下位ビットの関数としてプログラムされる。以下の例を参照されたい。
【００４３】
【表２】
0003846939.tif 000002
【００４４】
ワードサイズの参照については、前記ＫＤＡＴＡ信号を介して転送されるデータ値のビット３１〜１６またはビット１５〜０が前記ＫＡＤＤＲ信号のビット１の関数としてプログラムされることになる。もし前記ＫＡＤＤＲ信号のビット１が論理“０”の値であれば、ビット３１〜１６がプログラムされる。もし前記ＫＡＤＤＲ信号のビット１が論理“１”の値であれば、ビット１５〜０がプログラムされる。ロングワードの参照に対しては、前記ＫＡＤＤＲ信号のビット３１〜０がプログラムされる。
【００４５】
「イネーブルブレークポイントレベル（Ｅｎａｂｌｅ  ＢｒｅａｋｐｏｉｎｔＬｅｖｅｌ：ＥＢＬ）」ビットは肯定されたときブレークポイントトリガのための包括的イネーブル（ｇｌｏｂａｌ  ｅｎａｂｌｅ）として作用する。もし該ＥＢＬビットか肯定されなければ、すべてのブレークポイントトリガはディスエーブルされる。
【００４６】
「トリガ応答制御（Ｔｒｉｇｇｅｒ  Ｒｅｓｐｏｎｓｅ  Ｃｏｎｔｒｏｌ：ＴＲＣ）」値はデータ処理システム５が完成したトリガ条件に応答する様式を決定する。前記トリガ応答は複数の集積回路ピンによって提供される前記ＤＤＡＴＡ信号を介して外部ユーザに表示される。前記ＴＲＣ値が％０１の論理値を有する場合、ブレークポイント回路１００によって検出されるハードウエアブレークポイント条件の発生はＣＰＵ２への前記「ブレークポイント」信号を肯定するよう制御回路２０をイネーブルする。前記「ブレークポイント」信号の肯定はＣＰＵ２に対しデータ処理命令の通常の実行を割込み可能なポイントで中止させる。前記ＴＲＣ値が％１０の論理値を有する場合、ハードウエアブレークポイント条件の発生は制御回路２０に対しＣＰＵ２へのデバッグ割込み信号を肯定するようイネーブルする。該デバッグ割込み信号が肯定されたとき、ＣＰＵ２は割込み可能なポイントで通常の実行を中止しかつ予め定められた例外処理ルーチンを実行する。
【００４７】
前記「構成ステータスレジスタ（ＣＳＲ）」は図８により詳細に示されている。該ＣＳＲはデータ処理システム５のＣＰＵ２、ＭＭＵ／コントローラ４、メモリ６、およびデバッグモジュール１０の動作構成を規定する。データ処理システム５の構成を規定することに加え、ＣＳＲはブレークポイント回路１００の状態を指示するステータス情報を含む。
【００４８】
データ処理システムがリセットされた場合にはＣＳＲはクリアされることに注目すべきである。さらに、ＣＳＲは、データ処理システムがバックグランドデバッグ動作モードにある場合に外部開発システム（ここでは図示されていない）によって読まれかつ書かれることができる。前記バックグランドデバッグ動作モードは後により詳細に説明する。ＣＳＲに含まれるおのおののビットの機能は後により詳細に説明する。
【００４９】
図７に示されるように、ＣＳＲはデータ処理システム５におけるハードウエアのブレークポイント機能についてのリードオンリステータス情報を規定しかつ提供する。「ブレークポイントステータス」フィールドに格納された情報はブレークポイント回路１００によって提供されるブレークポイントトリガ情報に応じて前記複数の制御レジスタ４０によって発生される。「ステータス」フィールドに格納された情報は前記複数の制御レジスタ４０におけるＴＤＲの関数である。前記「ステータス」フィールドが＄０の論理値を記憶しているとき、いずれのハードウエアブレークポイントもイネーブルされない。前記「ステータス」フィールドが＄１の論理値を記憶しているとき、デバッグモジュール１０はレベル１のブレークポイントがトリガされるのを待機している。前に述べたように、レベル１のブレークポイントの属性は「トリガ定義レジスタ（ＴＤＲ）」のビット１５〜０によって規定される。もし＄２の論理値がＣＳＲの「ステータス」フィールドに記憶されておれば、レベル１のブレークポイントがトリガされている。前記「ステータス」フィールドが＄５の論理値を記憶している場合は、デバッグモジュール１０はレベル２のブレークポイントがトリガされるのを待機している。前に述べたように、レベル２のブレークポイントの属性は前記「トリガ定義レジスタ（ＴＤＲ）」のビット３１〜１６によって規定される。もし＄６の論理値がＣＳＲの「ステータス」フィールドに記憶されておれば、レベル２のブレークポイントがトリガされている。
【００５０】
前記ＣＳＲの「ステータス」フィールドにおいて反映されたブレークポイントステータスは前記ＤＤＡＴＡ信号を提供する複数の外部集積回路ピンを介して外部ユーザ（図２には示されていない）に提供される。前記ＤＤＡＴＡ信号は該信号がＫ−バス２５によって捕捉されたデータを表示していない場合に前記ブレークポイントステータスを反映する。さらに、前記ＣＳＲの内容は任意の時間にシリアルインタフェース３０を使用して読めることに注意を要する。従って、前記ブレークポイントステータスは２つの手段、すなわち前記ＤＤＡＴＡ信号が捕捉されたデータを表示していない場合は前記ＤＤＡＴＡ信号、またはシリアルインタフェース３０を使用した「ＣＳＲ読取り（ＲＥＡＤ  ＣＳＲ）」コマンド、を介して得ることができる。
【００５１】
前記ＣＳＲはまた４ビット値を提供し、これは外部開発システム７へのバックグランドまたは背景デバッグモードへのエントリステータスを示す。前記４ビット値の最初のビットはＦＯＦビットである。肯定されたとき、フォールト・オン・フォールト（Ｆａｕｌｔ−ｏｎ−Ｆａｕｌｔ：ＦＯＦ）」ビットはデータ処理システム５のＣＰＵ２の破滅的な停止が生じておりかつデータ処理システム５は強制的にバックグランドのデバッグモードの動作に入れられたことを示す。該バックグランドのデバッグモードの動作は後により詳細に説明する。前記ＦＯＦビットはＣＳＲの内容の読取りに応じてクリアされる。
【００５２】
肯定されたとき、前記「ハードウエアブレークポイントトリガ（ＴＲＧ）」ビットはハードウエアのブレークポイントがデータ処理システム５のＣＰＵの動作を停止したことを示す。肯定されたとき、前記ＴＲＧビットはデータ処理システム５が強制的にバックグランドのデバッグモードの動作に入れられたことを示す。ＴＲＧビットはＣＳＲの内容の読取りに応じてあるいはシリアルインタフェース３０を介して直列的に提供される「ゴー（Ｇｏ）」コマンドの受信に応じてクリアされる。
【００５３】
前記「プロセッサホールト（Ｈａｌｔ）」ビットはそれが肯定されたときＣＰＵ２が停止すべきことを指定する命令をＣＰＵ２が実行したことを示す。肯定されたとき、前記ホールトビットはデータ処理システム５がバックグランドの動作モードに入るよう強制されたことを示す。該ホールトビットはＣＳＲの内容の読取りに応じてあるいはシリアルインタフェース３０を介して直列的に提供される「ゴー」コマンドの受信に応じてクリアされる。
【００５４】
前記「ＢＫＰＴ肯定（ＢＫＰＴ）」ビットは＊ＢＫＰＴ信号が肯定されかつＣＰＵ２に提供されたことを示す。肯定されたとき、ＢＫＰＴビットはデータ処理システム５がバックグランドのデバッグモードの動作に入るよう強制されたことを示す。ＢＫＰＴビットはＣＳＲの内容の読出しに応じてあるいはシリアルインタフェース３０を介して直列的に提供される「ゴー」コマンドの受信に応じてクリアされる。
【００５５】
肯定されたとき、「デバッグレジスタへのプロセッサ書込み禁止（Ｉｎｈｉｂｉｔ  Ｐｒｏｃｅｓｓｏｒ  Ｗｒｉｔｅｓ  ｔｏ  Ｄｅｂｕｇ  Ｒｅｇｉｓｔｅｒｓ：ＩＰＷ）」ビットは前記複数のハードウエアブレークポイントレジスタ５０へのおよび前記複数の制御レジスタ４０への書込み動作を禁止する。ＩＰＷビットは外部開発システム７のような外部開発システムから提供されるコマンドによってのみ変更することができる。ＩＰＷビットは効果的にＣＰＵ２が外部開発システム７によって複数の制御レジスタ４０および複数のブレークポイントレジスタ５０に書き込まれたデバッグ情報をオーバライトすることを禁止する（ｌｏｃｋｓ  ｏｕｔ）。
【００５６】
肯定されたとき、「エミュレータモードでのプロセッサ参照強制（ＦｏｒｃｅＰｒｏｃｅｓｓｏｒ  Ｒｅｆｅｒｅｎｃｅｓ  ｉｎ  Ｅｍｕｌａｔｏｒ  Ｍｏｄｅ：ＭＡＰ）」ビットはデータ処理システムがエミュレータモードで動作しているときにすべての参照（ｒｅｆｅｒｅｎｃｅｓ）を特別のアドレス空間にマッピングするよう強制する。もしＭＡＰビットが否定されれば、すべてのエミュレータモードの参照はメモリ６のスーパバイザのテキストおよびデータ空間へとマッピングされる。
【００５７】
本発明はスーパバイザ、または特権モードの論理的拡張である特別の動作モードとしてエミュレータモードを含む。この特別の動作モードは本発明のこの実施形態では３つの可能な指示子の内の１つの肯定に応じて入る。いったんエミュレータモードに入ると、すべての通常の入力／出力割込みは無視することができかつデータプロセッサ３は任意選択的にすべてのメモリ参照を「別の空間（ａｌｔｅｒｎａｔｅ  ｓｐａｃｅ）」へと強制することができる。前記ＭＡＰビットはデータプロセッサ３のこの動作を制御する。エミュレータモードの動作は典型的には外部開発システム７がこの別のまたは代わりの空間へのすべてのメモリ参照をインタセプトしかつある形式のデバッグ機能をサポートするのに必要な命令およびデータ値を提供できるようにするために使用される。前記別の空間の再マッピングは状態「通常の」システムメモリを変更することなく外部開発システム７がデータプロセッサ３の動作の制御を得ることができるようにするために提供される。本発明のこの実施形態では、データプロセッサ３はＲＴＥ（Ｒｅｔｕｒｎｆｒｏｍ  Ｅｘｃｅｐｔｉｏｎ：例外からの戻り）のような、特別の命令が実行されるまでエミュレータモードに留まっている。その時点で、データプロセッサ３はエミュレータモードを退出しかつＣＰＵ２は通常の動作モードに戻る。
【００５８】
本実施形態では、エミュレータモードのエントリ（ｅｎｔｒｙ）およびエグジット（ｅｘｉｔ）はＰＳＴ信号を介して外部ユーザに通知されることに注意を要する。ＰＳＴ信号の＄Ｄの値はエミュレータモードへのエントリを示しかつＰＳＴ信号の＄７の値はエミュレータモードからのエグジットを示す。ＰＳＴ信号によって提供されるエミュレータモードの動作へのエントリおよび該動作からのエグジットの指示はそれが外部開発システム７に対しハードウエアブレークポイントがトリガされたことの指示を与えるため特に重要である。従って、シリアルインタフェース３０を介して提供されるシリアルポートは外部メモリロケーションからデバッグ情報を取り出すために使用することができる。
【００５９】
もし前記ＭＡＰビットが否定されれば、すべてのエミュレータモードのメモリ参照は通常通りスーパバイザアクセスへとマッピングされ、それによってオンチップメモリ、外部メモリ、および入力／出力装置のようなシステム資源が参照できるようになる。
【００６０】
さらに、本発明のこの実施形態においては、エミュレータモードの動作に入るために３つの方法が実施されている。第１の方法では、もし「トレース例外に応じてのエミュレーションモード強制（Ｆｏｒｃｅ  Ｅｍｕｌａｔｉｏｎ  Ｍｏｄｅ  ｏｎ  Ｔｒａｃｅ  Ｅｘｃｅｐｔｉｏｎ：ＴＲＣ）」ビットが肯定されれば、ソフトウエアのトレース例外の発生はデータプロセッサ３をエミュレータモードの動作に入るよう強制する。これは外部開発システム７によって制御されかつデータプロセッサ３上で動作しているソフトウエアデバッガによって制御されない単一命令のデバッガルーチンを作成するためのメカニズムである。
【００６１】
第２の方法においては、もし「エミュレーションモード強制（Ｆｏｒｃｅ  Ｅｍｕｌａｔｉｏｎ  Ｍｏｄｅ：ＥＭＵ）」ビットが肯定されれば、データプロセッサ３はリセット例外プロセッサを開始する。前と同様に、この方法は外部開発システム７がデータ処理システム１０をそれが命令の処理を開始する前に制御できるようにする。
【００６２】
第３の方法はトリガされたハードウエアブレークポイントに応じてデバッグ割込みが肯定された場合にデータプロセッサ３がエミュレータモードに入ることができるようにする。前記ＴＤＲのＴＲＣフィールドはエミュレータモードへのエントリを備えたデバッグ割込みを発生するためにハードウエアのブレークポイントトリガの使用をプログラムするために用いることができる。
【００６３】
「デバッグデータ制御（Ｄｅｂｕｇ  Ｄａｔａ  Ｃｏｎｔｒｏｌ：ＤＤＣ）」値は前記ＤＤＡＴＡ信号を介して外部開発システムに提供されるべきオペランドデータを捕捉するための構成制御情報を提供する。前記ＤＤＣ値が％００である場合は、ＤＤＡＴＡ信号に対してオペランドデータは表示されない。前記ＤＤＣ値が％０１である場合は、Ｍ−バス２３を介して通信されるすべての書込みデータは捕捉されかつＤＤＡＴＡ信号に対して表示される。前記ＤＤＣ値が％１０である場合は、Ｍ−バス２３を介して通信されるすべての読出しデータはＤＤＡＴＡ信号に対して捕捉されかつ表示される。前記ＤＤＣ値が％１１である場合は、Ｍ−バス２３を介して通信されるすべての読出しおよび書込みデータはＤＤＡＴＡ信号に対して捕捉されかつ表示される。前記ＤＤＣ値によって特定される情報の形式とは独立に、ＤＤＡＴＡ信号はオペランドのリファレンスサイズによって規定されるバイトの数を表示する。オペランドがＣＳＲのＤＤＣフィールドの制御の下に捕捉される場合は、ＤＤＡＴＡ信号に対して表示されるバイトの数は実行されているリファレンスのタイプによって決定される。もし前記オペランドが１バイトとして参照されれば、８ビットのデータが表示される。もし前記オペランドがワードとして参照されれば、１６ビットのデータが表示される。同様に、もし前記オペランドがロングワードとして参照されれば、３２ビットのデータが表示される。前記ＤＤＣはＭ−バス２３の読出しおよび書込み動作を捕捉するための能力を提供する。しかしながら、前記オペランドのリファレンスサイズはＤＤＡＴＡ信号に対して実際に表示されるバイトの数を決定する。
【００６４】
「分岐目標バイト（Ｂｒａｎｃｈ  Ｔａｒｇｅｔ  Ｂｙｔｅｓ：ＢＴＢ）」値はＤＤＡＴＡ信号に対して表示されるべき分岐目標またはターゲットアドレスのバイトの数を規定する。ＢＴＢ値が％００である場合は、分岐目標アドレスの何らのバイトもＤＤＡＴＡ信号に対して表示されない。ＢＴＢ値が％０１である場合は、分岐目標アドレスの下位２バイトがＤＤＡＴＡ信号に対して表示される。前記ＢＴＢ値が％１０である場合は、分岐目標アドレスの下位３バイトがＤＤＡＴＡ信号に対して表示される。前記ＢＴＢ値か％１１である場合は、分岐目標またはターゲットアドレスの全４バイトがＤＤＡＴＡ信号に対して表示される。ＤＤＡＴＡ信号は一般にデータを最下位から最上位の順序で出力することに注目すべきである。これは捕捉されたオペランドならびに分岐目標アドレスに対して当てはまる。さらに、動作の間に、制御回路６０の制御の下に、ＦＩＦＯ格納バッファ７０は変形（ｖａｒｉａｎｔ）アドレシングモードを使用する取られた分岐動作に関連するターゲットまたは目標アドレスのみを捕捉する。該変形アドレシングモードはアドレスがプログラムカウンタの相対、または絶対アドレスによって提供されず、何らかの他の手段によって計算されるアドレシングモードである。そのような目標アドレスは典型的には例外ベクトル、ならびに例外からの戻り（ｒｅｔｕｒｎ−ｆｒｏｍ−ｅｘｃｅｐｔｉｏｎ：ＲＴＥ）、サブルーチンからの戻り（ｒｅｔｕｒｎ−ｆｒｏｍ−ｓｕｂｒｏｕｔｉｎｅ：ＲＴＳ）命令およひ何らかの形式のジャンプ（ＪＭＰ）およびサブルーチンへのジャンプ（ｊｕｍｐ−ｔｏ−ｓｕｂｒｏｕｔｉｎｅ：ＪＳＲ）に関連する。
【００６５】
「デバッグモードイネーブル（Ｅｎａｂｌｅ  Ｄｅｂｕｇ  Ｍｏｄｅ：ＥＮＤ）」ビットはもし肯定されれば前記ＰＳＴおよびＤＤＡＴＡ信号の通常の動作をディスエーブルする。さらに、このビットがイネーブルされたとき、データプロセッサ３のＣＰＵ２は内部状態情報の８ビットのベクトルを出力する。
【００６６】
肯定されたとき、「非パイプライン化モード（Ｎｏｎ−Ｐｉｐｅｌｉｎｅｄ  Ｍｏｄｅ：ＮＰＬ）」ビットはＣＰＵ２を非パイプライン動作モードで動作するよう強制する。非パイプライン動作モードにあるとき、データ処理システム３は２つまたはそれ以上の引き続く命令の間にオーバラップなしに一度に単一の命令を効果的に実行する。
【００６７】
肯定されたとき、「係属中の割込み無視（Ｉｇｎｏｒｅ  Ｐｅｎｄｉｎｇ  Ｉｎｔｅｒｒｕｐｔｓ：ＩＰＩ）」ビットはデータ処理システム５が単一命令ステップ（ｓｉｎｇｌｅ−ｉｎｓｔｒｕｃｔｉｏｎ−ｓｔｅｐ）モードで動作している場合にＣＰＵ２がいずれの係属中の割込み要求も無視するよう強制する。
【００６８】
「単一ステップモード（Ｓｉｎｇｌｅ−Ｓｔｅｐ  Ｍｏｄｅ：ＳＳＭ）」ビットはそれが肯定されたときＣＰＵ２が単一命令ステップモードで動作するよう強制する。該単一命令ステップモードにある間に、ＣＰＵ２は単一の命令を実行しかつ次に停止する。ＣＰＵ２が停止している間に、バックグランドデバッグモードに関連するいずれかのコマンドを実行できる。「ゴー（ＧＯ）」コマンドの受信に応じて、ＣＰＵ２は次の命令を実行しかつ次に再び停止する。このプロセスが単一命令ステップモードがディスエーブルされるまで継続する。
【００６９】
「バッファディスエーブル記憶（Ｓｔｏｒｅ  Ｂｕｆｆｅｒ  Ｄｉｓａｂｌｅ：ＳＢＤ）」ビット、「Ｋ−バスＲＡＭディスエーブル（Ｋ−Ｂｕｓ  ＲＡＭ  Ｄｉｓａｂｌｅ：ＫＡＤ）」ビット、「Ｋ−バスＲＯＭディスエーブル（Ｋ−Ｂｕｓ  ＲＯＭ  Ｄｉｓａｂｌｅ：ＫＯＤ）」ビット、および「Ｋ−バスキャッシュディスエーブル（Ｋ−Ｂｕｓ  Ｃａｃｈｅ  Ｄｉｓａｂｌｅ：ＫＣＤ）」ビットは集合的に使用されて外部開発システム７がデバッグの目的でデタープロセッサ３の通常の構成をオーバライド（ｏｖｅｒｒｉｄｅ）できるようにする。特に、前記ＳＢＤビットはＭＭＵ／コントローラ４内に位置する任意選択的なＦＩＦＯ格納バッファの使用をディスエーブルしかつＦＩＦＯ格納バッファ７０と混同すべきではない。前記ＫＡＤビットはメモリブロック６の使用がバイパスされかつＭ−バス２３のアクセスを強制できるようにする。メモリブロック６はＲＡＭモジュール、ＲＯＭモジュール、および／またはキャッシュモジュールを含むことができる。前記ＫＡＤ，ＫＯＤ，およびＫＣＤビットはそれぞれこれらのモジュールのおのおのによって提供される機能をディスエーブルするために使用される。
【００７０】
前記複数のハードウエアブレークポイントレジスタ５０は図５により詳細に示されている。該複数のハードウエアブレークポイントレジスタ５０のおのおのの機能の概略的な説明を行う。前記複数のハードウエアブレークポイントレジスタ５０のおのおのの機能のより詳細な説明は後に行う。
【００７１】
図５において、前記アドレスブレークポイントレジスタ（ＡＢＬＲおよびＡＢＨＲ）はブレークポイント機能をトリガするために使用できるデータ処理システム５のオペランドの論理アドレス空間にある領域を規定する。ＡＢＬＲおよびＡＢＨＲのおのおのに格納されたアドレス値はＫ−バス２５を介して転送されるアドレス値と比較される。さらに、以下の説明では、ブレークポイント機能を実行するために満たされなければならない１組の条件はトリガ（ｔｒｉｇｇｅｒ）と称される。
【００７２】
前記アドレス属性ブレークポイントレジスタ（ＡＡＢＲ）は図６により詳細に示されている。アドレス属性ブレークポイントレジスタはブレークポイント機能のためのトリガにおいて整合されるべき複数のアドレス属性およびマスクを規定する。ＡＢＬＲおよびＡＢＬＲアドレス値のように、ＡＡＢＲに格納される属性値はＫ−バス２５を介して転送されるアドレス属性信号と比較される。
【００７３】
前記ＡＡＢＲの下位５ビット、「転送タイプ（Ｔｒａｎｓｆｅｒ  Ｔｙｐｅ：ＴＴ）」値および「転送モディファイア（Ｔｒａｎｓｆｅｒ  Ｍｏｄｉｆｉｅｒ：ＴＭ）」値は集合的に、データ処理システム５がバックグランドデバッグモードにある間にメモリ参照を実行する場合に使用されるアドレス空間を規定する。前記ＴＴ値は転送がスーパバイザオペランドであるか、スーパバイザ命令であるか、ユーザオペランドであるか、あるいはユーザ命令であるかを示す。
【００７４】
前記複数のハードウエアブレークポイントレジスタ５０のおのおのは２つの機能に使われることに注目すべきである。データプロセッサ３が背景デバッグモードの動作にあるとき、前記複数のハードウエアブレークポイントレジスタ５０はメモリおよびプロセッサの参照動作の実行の間に使用される。データプロセッサ３が背景デバッグ動作モードにない場合は、前記複数のハードウエアブレークポイントレジスタ５０はハードウエアブレークポイントを検出するために使用される。
【００７５】
前記複数のハードウエアブレークポイントレジスタ５０がハードウエアブレークポイントを検出するために使用される場合は、前記ＡＡＢＲレジスタは４つのフィールドと４つの同等のマスクフィールドを含む。前記ＴＴおよびＴＭフィールドはアクセスされているアドレス空間を規定する。表１はこれらのフィールドのおのおのに対する符号化を示す。
【００７６】
【表３】
ＴＴ    ＴＭ                      アドレス空間
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
００    ００１    ユーザオペランド
００    ０１０    ユーザ命令
００    １０１    スーパバイザオペランド
００    １１０    スーパバイザ命令
０１    ｘｘｘ    未使用
１０    １０１    エミュレータモードオペランド（ＭＡＰ＝１であれば）
１０    １１０    エミュレータモード命令（ＭＡＰ＝１であれば）
１１    ０００    ＣＰＵ空間
１１    ００１    割込みアクノレッジ
１１    ０１ｘ    割込みアクノレッジ
１１    １ｘｘ    割込みアクノレッジ
【００７７】
「アドレス空間」はしばしば行われている特権の動作レベル（ユーザモードまたはスーパバイザモード）および参照の形式（オペランド、命令フェッチ）によって規定されることに注意を要する。また、前記ＴＴおよびＴＭ値はブレークポイント位置をより正確に規定するために使用される。
【００７８】
前記ＡＡＢＲにおける次の値、「サイズ（Ｓｉｚｅ：ＳＺ）」値は、アドレス範囲に加えて、Ｋ−バス２５を介して転送されるサイズ属性はＡＡＢＲの前記ＳＺビットに格納された値に対応しなければならないことを示す。同様に、「読出し／書込み（Ｒｅａｄ／Ｗｒｉｔｅ：Ｒ）」値がＡＡＢＲに格納される。前記Ｒ値は読出しまたは書込み動作にもとづくトリガ条件がアドレスにもとづく比較において適用されるべきことを示す。
【００７９】
上に述べたビットは前記複数のハードウエアブレークポイントレジスタ５０がブレークポイントモニタとして動作している場合に使用される。これらのビットはＫ−バス２５属性情報と比較される。一例として、前記複数のブレークポイントレジスタ５０をユーザモードの、ワードサイズのオペランド読出しのみがトリガされるようにプログラムすることができる。従って、ＡＡＢＲのこれらのビットはアドレスブレークポイントの規定または定義に対する付加的な限定（ｑｕａｌｉｆｉｃａｔｉｏｎｓ）を提供するために使用できる。
【００８０】
さらに、ＡＡＢＲはそれぞれ個々のビットをブレークポイント規定からマスクアウトする能力を提供する属性マスクビットを含む。
【００８１】
前記ＡＡＢＲの最上位ビット、「読出し／書込みマスク（ＲＭ）」ビット、は読出しまたは書込み動作にもとづくトリガ条件がアドレスにもとづく比較において無視されるべきことを示す。従って、もし該ＲＭビットが肯定されれば、前記Ｒビットは比較動作の間無視される。次の１組のビット、「サイズマスク（ＳＭ）」値、はアドレスのサイズにもとづくトリガ条件がアドレスにもとづく比較において無視されるべきことを示す。例えば、もし前記ＳＭ値におけるビットが肯定されれば、前記ＳＺ値における対応するビットはアドレス比較機能において無視される。
【００８２】
「転送タイプマスク（Ｔｒａｎｓｆｅｒ  Ｔｙｐｅ  Ｍａｓｋ：ＴＴＭ）」値は前記０ＴＴ値に対応する。該ＴＴＭ値におけるあるビットが肯定されたとき、前記ＴＴ値の対応するビットは引き続くアドレス比較において無視される。同様に、「転送モディファイアマスク（Ｔｒａｎｓｆｅｒ  Ｍｏｄｉｆｉｅｒ  Ｍａｓｋ：ＴＭＭ）」値は前記ＴＭ値に対応する。ＴＭＭフィールドのあるビットが肯定されたとき、ＴＭ値の対応するビットは引き続くアドレス比較において無視される。
【００８３】
前記複数のハードウエアブレークポイントレジスタ５０はまた複数のプログラムカウンタブレークポイントレジスタを含む。該複数のプログラムカウンタブレークポイントレジスタはブレークポイント機能をトリガするために使用できるデータ処理システム５の命令論理アドレス空間における領域を規定する。前記「プログラムカウンタブレークポイント（ＰＢＲ）」値は前記「プログラムカウンタブレークポイントマスク（ＰＢＭＲ）」レジスタに格納された値によってマスクすることができる。本発明の１実施形態では、ＰＢＭＲに記憶された対応するゼロの値を有するＰＢＲ中のビットのみがデータ処理システム５のプログラムカウンタ値との比較動作において使用される。該プログラムカウンタ値はデータ処理システム５のＣＰＵ２のプログラムカウンタレジスタ（ここでは示されていない）に格納される。
【００８４】
前記プログラムカウンタブレークポイントレジスタに加えて、前記複数のハードウエアブレークポイントレジスタ５０は複数の「データブレークポイントレジスタ」を含む。該複数のデータブレークポイントレジスタは「データブレークポイントレジスタ（ＤＢＲ）」および「データブレークポイントマスクレジスタ（ＤＢＭＲ）」を含む。前記ＤＢＲはデータ処理システム５がデバッグ動作を行っている場合にトリガを形成するために使用できる特定のデータパターンを規定するデータ値を格納する。前記ＤＢＭＲに格納されたデータマスク値は前記ＤＢＲに格納されたデータ値をマスクする。従って、本発明の１実施形態では、ＤＢＭＲに格納された対応するゼロの値を有するＤＢＲに格納されたビットのみがＫ−バス２５を介して転送されるデータ信号と比較されてトリガ条件が適合しているかを判定する。
【００８５】
＜動作の説明＞
以下の説明のために、デバッグサポートの概略的な主題は独自の要件および独自の機能を有する３つの別個の領域に区分することができる。本発明はリアルタイムのトレースのサポート、バックグランドデバッグ動作モード、およびリアルタイムのデバッグのサポートを提供する。図１のデータ処理システム５は本発明の１つの実施形態を示している。
【００８６】
データ処理システム５においては、データプロセッサ３は情報を通信するために外部開発システム（ｅｘｔｅｒｎａｌ  ｄｅｖｅｌｏｐｍｅｎｔ  ｓｙｓｔｅｍ）７に接続されている。次に、外部開発システム７は通信された情報を使用してデータプロセッサ３における障害のある回路およびエラーのあるソフトウエアコードを識別しかつ分離するよう設計されたデバッグ動作を行う。外部開発システム７はデータプロセッサ３と前記ＤＳＤＩ，ＤＳＣＬＫ，ＤＳＤＯ，ＤＤＡＴＡ，ＰＳＴおよび他の入力／出力信号を介して通信する。前記ＤＳＤＩ，ＤＳＣＬＫおよびＤＳＤＯ信号は外部開発システム７とデータプロセッサ３との間のシリアル通信手段を提供する。前記ＤＤＡＴＡ信号はデータプロセッサ３から外部開発システム７へデバッグ情報を提供する。ＣＳＲの構成に応じて、デバッグモジュール１０は前記ＤＤＡＴＡ信号の上に表示するためあるオペランドおよび分岐ターゲットアドレスを捕捉することができる。さらに、ＣＰＵ２はＣＳＲに格納された構成値にかかわりなく捕捉されかつＤＤＡＴＡ信号上に表示された命令を実行することができる。前記ＰＳＴ信号は外部開発システム７へ内部プロセッサステータスを提供する。従って、プログラム動作の実行の間に、前記ＤＤＡＴＡおよびＰＳＴ信号はデータプロセッサ３によって実行される現在の動作を反映するために集合的にアクセスできる。
【００８７】
動作においては、コア９はＣＰＵ２、ＭＭＵ／コントローラ４、およびメモリ６を接続するためにＫ−バス２５を使用する。本発明のこの実施形態では、Ｋ−バス２５は高速の、単一サイクルのアクセスバスである。メモリ６はランダムアクセスメモリ（ＲＡＭ）、リードオンリメモリ（ＲＯＭ）、キャッシュブロック、およびそれらの任意の組合わせを含むことができる。すべての他のシステムモジュールおよびペリフェラルはＭ−バス２３を介してコア９に結合される。Ｍ−バス２３は複数のバスマスタの内の１つによって開始されるデータ転送を行うために使用される内部マルチマスタバスである。システムバスコントローラ８は複数の機能を提供する。システムバスコントローラ８はもし外部Ｅ−バスが存在すれば、内部Ｍ−バス２３と外部Ｅ−バスの間のインタフェースを提供する。さらに、システムバスコントローラ８はＳ−バスによるすべてのデータ転送を制御するための焦点（ｆｏｃａｌ  ｐｏｉｎｔ）として作用する。前記Ｓ−バスはタイマおよびシリアル通信チャネルのような単純なスレイブ周辺モジュール（１２および１３）をデータ処理システム５内へ接続するために使用される。
【００８８】
本発明においては、データプロセッサ３はデータ転送のためのコスト効率のよいメカニズムを提供するためにいくつかの層のバス帯域幅を有する。コア９は性能を最大にするために高速の、単一サイクルのＫ−バス２５と相互接続される。この高速バスに直接結合されない転送については、Ｍ−バス２３がコア９およびマスタモジュール１４のような内部バスマスタのいずれかから帯域幅を提供する。システムバスコントローラ８は内部Ｍ−バス２３および外部Ｅ−バス（もし存在すれば）の間での接続を提供し、一方またスレイブモジュール１２および１３のようなスレイブ周辺モジュールに対するローコストの、より低い帯域幅のＳ−バスによるすべてのデータ転送のための制御機能を提供する。デバッグモジュール１０はすべてのプロセッサ開始（ｐｒｏｃｅｓｓｏｒ−ｉｎｉｔｉａｔｅｄ）メモリアクセスの非侵入的な（ｎｏｎ−ｉｎｔｒｕｓｉｖｅ）観察を可能にするためにＫ−バス２５に接続されている。デバッグモジュール１０はまた外部開発システム７への接続を提供する。
【００８９】
図１のデバッグモジュール１０は３つの前に述べたデバッグ動作の内のおのおのをサポートするための論理回路を提供する。デバッグモジュール１０の動作は引き続きより詳細に説明する。
【００９０】
＜リアルタイムトレース機能＞
本発明は重要な、かつ今まで存在しなかった、リアルタイムトレース機能を提供する。該リアルタイムトレース機能は、外部開発システム７のような、外部ユーザがデータプロセッサ３の内部動作を動的に観察できるようにする。さらに、このリアルタイムトレース機能はシステムの内部動作に対するそのような観察可能性を、データ処理システム５の効率および速度に大きな影響を与えることなく提供することができる。データ処理システム５のデバッグモジュール１０は前記ＤＤＡＴＡおよびＰＳＴ信号を介して外部ユーザに内部動作情報を提供するために並列出力ポートを与える。前記ＤＤＡＴＡ信号はオペランドデータを反映するデータを提供しかつＰＳＴ信号はＣＰＵ２の外部ステータスを反映する符号化されたステータス情報を提供する。さらに、前記ＤＤＡＴＡ信号はまた捕捉された命令アドレスプログラムフローの変更を提供し外部開発システムが外部的に見ることができるアドレスバスまたは外部的に見ることができるデータバスを必要とすることなく正確なプログラムフローをトレースできるようにする。前記ＤＤＡＴＡ信号上に表示される情報はＰＳＴ信号上におけるステータス情報と同期していることに注意を要する。従って、外部ユーザはデータプロセッサ３の動作を中止することなく、しかもこの実行経路を見ることができるようにするため特別のデバッグ動作モードを必要とすることなくプログラムの動的な実行経路を決定するために前記ＤＤＡＴＡおよびＰＳＴ信号をデコードすることができる。
【００９１】
リアルタイムトレースの実行の間におけるデータ処理システム５の動作につき引き続きより詳細に説明する。説明に先立ち、ＰＳＴ信号の符号化（ｅｎｃｏｄｉｎｇｓ）に関し簡単に説明する。ＰＳＴ信号の符号化を示す表が図１０に与えられている。
【００９２】
図１０はＰＳＴ信号のビット３〜０を介して与えられる値とＣＰＵ２のステータスとの間の関係を示す。ＰＳＴ信号が％００００の値を提供する場合、前の動作がまだ完了しておらずかつ実行は単に継続する。もし％０００１の値が与えられれば、ＰＳＴ信号は命令の実行が開始されつつあることを示す。ＰＳＴ信号が％００１１の値を有する場合は、データ処理システムはユーザモードの動作に入りつつある。もしＰＳＴ信号によって％０１００の値が提供されれば、データ処理システム５は「パルス」またはＷＤＤＡＴ命令の実行を開始している。該「パルス」オペコードは単にこの特別のＰＳＴ符号化を発生し、一方前記ＷＤＤＡＴＡオペコードはオペランドが捕捉されかつＣＳＲによって規定される構成にかかわりなくＤＤＡＴＡ上に表示させる。これはメモリオペランド、例外スタックフレームまたはソフトウエアマーカを直接前記ＤＤＡＴＡ信号上に表示するための簡単なメカニズムを提供する。
【００９３】
もし前記ＰＳＴ信号によって％０１０１の値が提供されれば、データ処理システム５は取られた分岐動作（ｔａｋｅｎ  Ｂｒａｎｃｈ  ｏｐｅｒａｔｉｏｎ）の実行を開始している。もし％０１１１の値がＰＳＴ信号によって提供されれば、データ処理システム５はＲＴＥ命令の実行を開始しつつある。ＰＳＴ信号が％１０００の値を提供する場合、データ処理システム５はＤＤＡＴＡ信号により１バイト転送を開始している。ＰＳＴ信号が％１００１の値を提供する場合、データ処理システム５はＤＤＡＴＡ信号により２バイト転送を開始している。ＰＳＴ信号が％１０１０の値を提供する場合、データ処理システム５はＤＤＡＴＡ信号により３バイト転送を開始しつつある。ＰＳＴ信号が％１０１１の値を提供する場合、データ処理システム５はＤＤＡＴＡ信号により第４バイトの転送を開始している。もしＰＳＴ信号が％１１００の論理値を有する場合、データ処理システム５のＣＰＵ２は例外処理ルーチンを実行しつつある。同様に、もしＰＳＴ信号が％１１０１の論理値を有する場合、データ処理システム５のＣＰＵ２は例外を処理しつつある。この値は例外が検出されたときから例外処理ルーチンの第１の命令がフェッチされるまでＰＳＴ信号上で肯定される。同様に、もしＰＳＴ信号が％１１０１の論理値を有する場合、データ処理システム５のＣＰＵは例外ルーチンを処理しておりこれはエミュレータモードの動作へのエントリを生じさせる。ＰＳＴ信号が％１１１０である場合は、データ処理システム５のＣＰＵ２は停止しかつ割込みを待機している。ＰＳＴ信号が％１１１１である場合は、データ処理システム５のＣＰＵ２は停止する（ｈａｌｔｅｄ）。
【００９４】
前に説明したように、符号化されたＰＳＴおよびＤＤＡＴＡ信号によって集合的に提供されるプロセッサのステータス情報はデータ処理システム５の動的な実行経路を完全に追跡するために外部プログラムモデルとともに使用することができる。
【００９５】
リアルタイムのトレース機能を可能にするため、ＤＤＡＴＡ信号は分岐ターゲット命令アドレスを表示するよう構成されなければならない。典型的には、この構成はデータ処理システム５がその通常の実行を開始する前に達成される。ＤＤＡＴＡ信号を構成するため、外部開発システム７は複数の制御レジスタ４０におけるＣＳＲレジスタに値を書き込むことができる。ＣＳＲレジスタは図８に示されている。この書込み機能を達成するため、外部開発システム７は前記ＣＳＲにデータをロードするためコマンドをＤＳＤＩおよびＤＳＣＬＫ信号の双方を使用してシリアルインタフェース３０にシフト入力する。本発明の１実施形態では、該コマンドの第１の部分はＤＳＤＩ信号によって提供されかつＤＳＣＬＫ信号によってクロック入力される。前記コマンドの付加的な部分はその後提供される。前記コマンドのすべての部分は１６ビットのパケットの情報が完成するまでレジスタ３２に格納される。本発明の別の実施形態では本発明のこの実施形態で必要とされる１６ビットより多くのまたは少ないビットを含めることができることに注意を要する。
【００９６】
ここに説明される本発明の実施形態では、ＣＳＲに値を書き込む命令は４８ビット長であり、１６ビットのオペコードおよび３２ビットのデータを備えている。レジスタ３２は１６ビット幅にすぎない。従って、最初の１６ビットのパケットの情報が完成したとき、該情報は制御回路２０に転送され、そこでデコードされかつ引続く動作が構築される。第２の１６ビットのパケットの情報がレジスタ３２にロードされたとき、該情報は前記「シリアル情報」信号を介して複数の制御レジスタ４０に転送される。制御回路２０から制御バス１５によって提供される制御情報を使用して、前記「シリアル情報」信号の内容はディスティネーションレジスタ、前記ＣＳＲ、の上位部分にロードされる。同様に、第３の１６ビットのパケットの情報がレジスタ３２にロードされかつ次に前記複数の制御レジスタ４０に転送される。前と同様に、制御回路２０によって供給される信号を使用して、前記「シリアル情報」信号の内容がＣＳＲの下位部分にロードされる。このようにして、４８ビットの命令全体が直列的にデバッグモジュール１０内にシフトされ、そこでデコードされかつオペランド値がＣＳＲにロードされる。
【００９７】
その後のデータはＤＳＤＩ信号を介して外部開発システム７によって直列的に提供される。前に説明したように、ＤＳＤＩ信号によって提供されるその後のデータはＤＳＣＬＫ信号を介してクロック入力される。該データビットのおのおのは１６ビットのパケットの情報が完成するまでレジスタ３２に格納される。第２の１６ビットのパケットの情報が完成したとき、該情報は前記「シリアル情報」信号を介して前記複数の制御レジスタ４０に転送される。該第２の１６ビットのパケットの情報はビット３１〜１６としてＣＳＲに格納される。その後、付加的な情報が直列的に外部開発システム７によってＤＳＤＩおよびＤＳＣＬＫ信号を介してレジスタ３２に提供される。第３の１６ビットのパケットの情報が完成したとき、該情報は前記「シリアル情報」信号を介して複数の制御レジスタ４０に転送される。該第３の１６ビットのパケットの情報はビット１５〜０としてＣＳＲに格納される。
【００９８】
前のパラグラフにおいて、ＤＤＡＴＡ信号の構成は外部開発システム７によりＣＳＲに書き込まれた値によって決定された。本発明の別の実施形態では、前記ＤＤＡＴＡ信号はデータプロセッサ４のＣＰＵ２によってＣＳＲに書き込まれた値によって構成することができる。ＣＰＵ２が前記値をＣＳＲに書き込むとき、前記値は図６に示されるブレークポイント回路１００の一時レジスタ１７０に提供される。前記値はＫ−バス２５の前記ＫＤＡＴＡ信号を介して一時レジスタ１７０に提供される。一時レジスタ１７０から、前記値は１６ビットのパケットでレジスタ３２に転送されかつ格納される。ＣＳＲへのＣＰＵ書込みのために、前記ＫＤＡＴＡ信号を介して転送されるオペランド値はＫ−バス２５を介してＣＰＵ２から制御回路２０に提供される制御信号を使用して一時データレジスタ１７０に捕捉される。従って、前記複数の制御レジスタ４０にとっては、前記値は外部開発システム７からレジスタ３２に提供されるものと同じに見える。
【００９９】
前記オペランドが外部開発システム７により提供されるかあるいはＣＰＵ２により提供されるかにかかわらず、オペランドおよび関連するオペランドはリアルタイムのトレース機能を達成するために前記ＤＤＡＴＡ信号を構成するためＣＳＲに格納されなければならない。ＣＳＲにおいては、前記デバッグデータ制御（ＤＤＣ）および前記分岐ターゲットバイト（ＢＴＢ）値は外部開発システム７にトレース情報を提供するため正しくＤＤＡＴＡ信号を構成するように書き込まれなければならない。前に述べたように、前記デバッグデータ制御（ＤＤＣ）値はＤＤＡＴＡ信号を介して外部開発システムに提供されるべきオペランドデータを捕捉するために構成制御情報を提供する。前記ＤＤＣ値が％００である場合は、何らのオペランドデータもＤＤＡＴＡ信号上に表示されない。前記ＤＤＣ値が％０１である場合は、Ｍ−バス２３を介して通信されるすべての書込みデータは捕捉されかつＤＤＡＴＡ信号上に表示される。前記ＤＤＣ値が％１０である場合は、Ｍ−バス２３を介して通信されるすべての読出しデータは捕捉されかつＤＤＡＴＡ信号上に表示される。前記ＤＤＣ値が％１０である場合は、Ｍ−バス２３を介して通信されるすべての読出しおよび書込みデータは捕捉されかつＤＤＡＴＡ信号上に表示される。ＤＤＣ値によって特定される情報の形式とは独立に、前記ＤＤＡＴＡ信号はオペランド参照サイズによって規定される数のバイトを表示する。例えば、バイト表示は８ビット長であり、ワード表示は１６ビット長であり、かつロング表示は３２ビット長である。オペランドがＣＳＲのＤＤＣフィールドの制御のもとに捕捉されたとき、ＤＤＡＴＡ信号上に表示されるバイトの数は実行されている参照の形式によって決定される。もし前記オペランドがバイトとして参照されれば、８ビットのデータが表示される。もし前記オペランドがワードとして参照されれば、１６ビットのデータが表示される。同様に、もし前記オペランドがロングワードとして参照されれば、３２ビットのデータが表示される。ＤＤＣはＭ−バス２３の読出しおよび書込み動作を捕捉する能力を提供する。しかしながら、前記オペランド参照サイズはＤＤＡＴＡ信号上に実際に表示されるバイトの数を決定する。
【０１００】
前記分岐ターゲットバイト（ＢＴＢ）値はＤＤＡＴＡ信号上に表示されるべき分岐ターゲットアドレスのバイトの数を規定する。ＢＴＢ値が％００である場合は、分岐ターゲットアドレスの何らのバイトもＤＤＡＴＡ信号上に表示されない。ＢＴＢ値が％０１である場合は、分岐ターゲットアドレスの下位２バイトがＤＤＡＴＡ信号上に表示される。ＢＴＢ値が％１０である場合は、分岐ターゲットアドレスの下位３バイトがＤＤＡＴＡ信号上に表示される。ＢＴＢ値が％１１である場合は、分岐ターゲットアドレスの全４バイトがＤＤＡＴＡ信号上に表示される。ＤＤＡＴＡ信号は一般にデータを最下位から最上位への順序で出力することに注目すべきである。これは捕捉されたオペランドならびに分岐ターゲットアドレスについて当てはまる。さらに、動作の間に、ＦＩＦＯ格納バッファ７０は、制御回路６０の制御のもとに、変形アドレシングモード（ｖａｒｉａｎｔ  ａｄｄｒｅｓｓｉｎｇ  ｍｏｄｅ）を使用する取られた分岐動作に関連するターゲットアドレスのみを捕捉する。該変形アドレシングモードはアドレスがプログラムカウンタの相対、または絶対アドレスによって提供されず、何らかの他の手段によって計算されるアドレシングモードである。そのようなターゲットアドレスは典型的には例外ベクトルならびに例外からの戻り（ＲＴＥ）、サブルーチンからの戻り（ＲＴＳ）命令およびいくつかの形式のジャンプ（ＪＭＰ）およびサブルーチンへのジャンプ（ＪＳＲ）に関連している。
【０１０１】
前記ＣＳＲが実時間のトレース機能を達成するのに必要な情報を提供するためＤＤＡＴＡ信号を構成するために書かれた後、ＣＰＵ２はＫ−バス２５によって通信される前記ＫＡＤＤＲ信号を介してＦＩＦＯ（ファーストイン・ファーストアウト）記憶バッファ７０に複数のターゲットアドレスを提供する。さらに、ＣＰＵ２はＫ−バス２５によって通信されるＫＤＡＴＡ信号を介してＦＩＦＯ記憶バッファ７０に複数のオペランドデータ値を提供する。前記複数のターゲットアドレスおよび前記複数のオペランドデータ値は制御回路６０によって提供されるＦＩＦＯ制御信号に応じてＦＩＦＯ記憶バッファ７０に格納される。
【０１０２】
制御回路６０は制御回路２０によって提供される「トレース」信号および前記複数の制御レジスタ４０のＣＳＲによって提供される「構成」信号に応じて前記ＦＩＦＯ制御信号を出力する。ＦＩＦＯ記憶バッファ７０はそこに記憶された前記ＫＡＤＤＲおよびＫＤＡＴＡ情報をファーストイン・ファーストアウト順で出力する。ＦＩＦＯ記憶バッファ７０はアドレスおよびオペランド情報を格納するための複数のロケーションを有するから、ＦＩＦＯ記憶バッファ７０はおのおのがデータプロセッサ３の通常の動作の間にアクセスされるオペランドおよび命令アドレスの値を反映する情報を通信する場合にＫＡＤＤＲおよびＫＤＡＴＡ信号を受信することができる。言い換えれば、ＦＩＦＯ記憶バッファ７０に提供されかつ格納されるＫＡＤＤＲおよびＫＤＡＴＡ信号を介して転送される値はデータ処理システム５の現在の動作を実時間で反映する。
【０１０３】
ＦＩＦＯ記憶バッファ７０は該ＦＩＦＯ記憶バッファ７０内のすべての格納ロケーションが前記ＤＤＡＴＡ信号上に出力されなければならない有効な情報を含む場合ＣＰＵ２の動作の速度に影響を与えるのみである。すべての格納ロケーションが満杯である（ｆｕｌｌ）である場合、ＦＩＦＯ記憶バッファ７０は前記「フル（Ｆｕｌｌ）」信号を肯定する。前記「フル」信号が肯定されたとき、制御回路６０は前記「ストール（Ｓｔａｌｌ）」信号を肯定する。該「ストール」信号はＣＰＵ２に提供されてＦＩＦＯ記憶バッファ７０の少なくとも１つの格納ロケーションが次の値を記憶するために利用できるようになるまでコア９の動作を停止させる。すべての他の動作においては、ＤＤＡＴＡ信号上にアドレスおよびオペランド情報を提供することはデータプロセッサ３の実行速度に大幅に影響を与えることはない。
【０１０４】
ＦＩＦＯ記憶バッファ７０は前記ＦＩＦＯ信号を介して前記複数のマルチプレクサ８０にアドレスおよびオペランド情報を提供する。ＣＰＵ２はまた前記「ＣＰＵプロセッサステータス（ＣＰＳＴ）」信号を複数のマルチプレクサ８０に提供する。該ＣＰＳＴ信号はデータプロセッサ３によって現在実行されている動作の種別を指示するためにプロセッサのステータス情報を提供する。例えば、ＣＰＳＴ信号はいつ命令の実行が始まるか、いつ命令の実行が継続すべきか、いつデータプロセッサ３が選択モードの動作に入るか、いつ予め選択された分岐命令が実行されるか、およびいつデータプロセッサ３の動作が停止（ｈａｌｔ）されるかを指示することができる。ＣＰＳＴ信号は任意の形式のプロセッサ動作を指示することができかつここに掲げた例に限定されないことに注意を要する。
【０１０５】
前記ＦＩＦＯおよびＣＰＳＴ信号が複数のマルチプレクサ８０に提供されたとき、該複数のマルチプレクサの出力は前記「Ｍｕｘ制御」信号によって制御される。前記「Ｍｕｘ制御」信号は複数のマルチプレクサ８０が同期的にＤＤＡＴＡおよびＰＳＴ信号を提供できるようにする。ＤＤＡＴＡおよびＰＳＴ信号はデータプロセッサ３のクロックの立上りエッジ（ここでは図示されていない）と同期しかつ、従って、ＰＳＴ信号によって提供されるステータスはいずれかの与えられたバスサイクルの処理と関連しないかもしれないことに注意を要する。
【０１０６】
さらに、前記「Ｍｕｘ制御」信号によってイネーブルされたとき、ＰＳＴ信号はＣＰＵ２のステータスを示すマーカを提供する。例えば、ＰＳＴ信号によって＄Ｃ，＄Ｄ，＄Ｅ，または＄Ｆのステータス値が提供されたとき、ＰＳＴ信号はデータプロセッサ３によってマルチサイクルモードのまたは特別の動作が実行されていることを示す。符号化されたＰＳＴ信号についてのさらなる情報については図１０を参照。ＰＳＴ信号がマルチサイクルモードの特別の動作がデータプロセッサ３によって実行されていることを反映している場合には、ＰＳＴ信号は前記モードを退出するまでまたは前記動作が完了するまでこれらのステータス値を維持する。
【０１０７】
ＰＳＴ信号が＄０〜＄７のステータス値を出力する場合は、ＰＳＴ信号はおのおののタイミングサイクルで更新される情報を特定する。
【０１０８】
ＰＳＴ信号が＄８，＄９，＄Ａ，または＄Ｂのステータス値を提供する場合、ＰＳＴ信号は前記ＤＤＡＴＡ信号を介して外部的に提供される値を限定するために使用されている。この動作においては、ＰＳＴ信号はＤＤＡＴＡ信号上のどの値が要求されるアドレスおよびデータ情報を提供しているかを示すための「マーカ」として使用される。ＰＳＴ信号は実際のデータがＤＤＡＴＡ信号上に表示される１タイミングサイクル前にこれらのステータス値によって符号化される。従って、外部開発システムは正しくデータプロセッサ３の動作を観察することができる。
【０１０９】
以下の例は実時間トレース動作におけるＤＤＡＴＡおよびＰＳＴ信号の使用につきより詳細に示すものである。この例は図１１に示されている。図１１は間接ジャンプ（ＪＭＰ）の実行を示し、この場合ジャンプ命令のターゲットアドレスの下位１６ビットはＤＤＡＴＡ信号上に表示される。ジャンプ命令が実行されるとき、プログラムの実行は該命令のオペランドにより特定される実効アドレスで継続する。この例では、該実効アドレスの値はレジスタＡ０によって特定されるメモリロケーションに位置する。
【０１１０】
以下の例では、ＣＳＲがデータを適切なフォーマットで提供するためにＤＤＡＴＡ信号を正しく構成するよう書き込まれたものと仮定する。図１１に示される例では、ＪＭＰ（Ａ０）命令は、図１１において、「ラスト（Ｌａｓｔ）」と称される、前の命令に続く。該ＪＭＰ命令は間接的に前記ターゲット命令アドレスをアドレスする。例えば、ＣＰＵ２に格納されたレジスタＡ０の内容は所望のターゲット命令アドレスを規定する。さらに、本出願には詳細に示されていないが、前記Ａ０レジスタはＣＰＵ２内に配置できる。そのような間接アドレシングの使用は変形（ｖａｒｉａｎｔ）アドレシングと称されるが、それは前記ターゲット命令アドレスがＡ０レジスタの内容に依存しかつＰＣ−レラティブ（ＰＣ−ｒｅｌａｔｉｖｅ）でもなく絶対アドレスでもないからである。
【０１１１】
以下の例の実行の間に、ＤＳＯＣおよびＡＧＥＸはデータプロセッサ３の内部パイプラインにおける位置を示す。用語ＤＳＯＣ，ＡＧＥＸ，ＩＡＧ，およびＩＣを説明するため、ＣＰＵ２の内部構造についての簡単な説明を行う必要がある。
【０１１２】
データプロセッサ３のＣＰＵ２においては、２つの独立のかつ切り離されたパイプラインが実施される。第１のパイプラインは命令をプリフェッチするための命令フェッチパイプライン（ＩＦＰ）（ここでは図示されていない）であり、かつ第２のパイプラインは命令の実際の実行をデコードしかつ達成するためのオペランド実行パイプライン（ＯＥＰ）である。ＦＩＦＯ命令バッファ（ここでは図示されていない）は前記２つのパイプラインの間の切り離し（ｄｅｃｏｕｐｌｉｎｇ）メカニズムとして作用する。
【０１１３】
命令フェッチパイプラインは２つのステージを含む。第１のステージは「命令アドレス発生（Ｉｎｓｔｒｕｃｔｉｏｎ  Ａｄｄｒｅｓｓ  Ｇｅｎｅｒａｔｉｏｎ：ＩＡＧ）」ステージでありそこで次のプリフェッチアドレスが計算される。第２のステージは「命令フェッチサイクル」でありここで所望の命令がメモリからフェッチされる。前記オペランド実行パイプラインはまた２つのステージを含み、各ステージは単一の命令の実行の間に２つの機能のために使用できる。第１のステージは「デコードおよび選択（Ｄｅｃｏｄｅ  ＆  Ｓｅｌｅｃｔ：ＤＳ）」ステージであり「オペランドフェッチサイクル（Ｏｐｅｒａｎｄ  ｆｅｔｃｈＣｙｃｌｅ：ＯＣ）」を備えている。第２のステージは「アドレス発生（ＡＧ）」ステージであり「実行（ＥＸ）」ステージを備えている。
【０１１４】
情報が２つのレジスタの間で通信される命令については、前記２つのＯＥＰステージはおのおの一度アクセスされる。前記レジスタオペランドはＯＣステージの間にアクセスされかつ次に命令実行が実際に前記ＥＸステージにおいて行われる。従って、前記ＯＥＰ動作はＯＣからＥＸへと進行する。
【０１１５】
情報がメモリロケーションとレジスタの間で通信される命令については、各パイプラインステージは２回アクセスされる。第１に、オペランドアドレスの構成要素がＤＳステージにおいて選択される。第２に、これらの構成要素のおのおのが加算されてＡＧステージにおけるオペランドアドレスを形成する。第３に、メモリオペランドがＯＣステージにおけるいずれか他のレジスタオペランドとともにアクセスされかつ第４に、実際の命令実行がＥＸステージにおいて行われる。この形式の命令に対しては、前記ＯＥＰ動作はＤＳからＡＧへＯＣへＥＸへと続く。
【０１１６】
他の形式の命令に対しては、各パイプラインステージ内の双方のオペランドは同時に行われる。これらのタイプの命令に対しては、ＯＥＰ動作はＤＳ  ＯＣからＡＧ  ＥＸへと行われる。
【０１１７】
この例では、レジスタＡ０の内容は「ターゲット」の命令アドレスを規定するものと想定される。前記ＪＭＰ命令がオペランド実行パイプラインのＡＧＥＸステージを占有するから、前記命令ターゲットアドレスは「ターゲット」として計算される。この流れの変更（ｃｈａｎｇｅ−ｏｆ−ｆｌｏｗ）動作は命令フェッチパイプラインにその現在の流れのプリフェッチアドレスを放棄しかつ前記アドレス「ターゲット」で始まる新しい流れを規定させる。本発明のこの実施形態では、この流れの変更ＪＭＰ命令は前記２つのパイプラインを新しい命令ストリームが確立されるようにＡＧＥＸおよびＩＡＧステージにおいて結合されるようにする。いったん前記「流れの変更」が生じると、２つのパイプラインはそれらの通常の切り離された動作モードに戻り命令フェッチパイプラインは新しいアドレスストリームにおいて順次プリフェッチをするよう継続する。従って、「ターゲット」、「ターゲット＋４」および「ターゲット＋８」のアドレスが引き続きフェッチされる。
【０１１８】
ＪＭＰ命令がそのオペランド実行パイプラインステージを完了すると、ＣＰＵ２は内部ＣＰＳＴ信号上に「テイクンブランチ（ｔａｋｅｎ  ｂｒａｎｃｈ）」値を通知する。従って、内部ＣＰＳＴ信号は＄５の値を有する。本発明のこの実施形態では、実際のＰＳＴおよびＤＤＡＴＡ信号はそれらの内部カウンタパートから１タイミングサイクルだけ遅れる。ＣＰＵ２が新しいアドレスで命令をプリフェッチすると、ＦＩＦＯ記憶バッファ７０は命令フェッチパイプラインのＩＣサイクルの終りに前記命令アドレス「ターゲット」を捕捉する。次のタイミングサイクルに際して、複数のマルチプレクサ８０は「マーカ」をＰＳＴ信号に挿入し２バイトの情報がＤＤＡＴＡ信号上に表示されるべきことを示す。従って、ＰＳＴ信号は＄９の値を有する。前記複数のマルチプレクサ８０の動作は制御回路６０によって制御される。ＰＳＴ信号上にマーカが出現したことに続き、前記複数のマルチプレクサ８０は最下位ニブルで始まる捕捉された命令アドレス「ターゲット」の下位１６ビットを、ビット３〜０からビット１５〜１２まで、表示するよう進行する。
【０１１９】
内部ＰＳＴ値（図２のＣＰＳＴ信号）は第１のタイミングサイクルで＄５の値を転送する。図１０に示されるように、ＰＳＴ値が＄５の値を有する場合、データプロセッサは「テイクンブランチ」命令を実行し始めている。これはプログラムフローをレジスタＡ０で間接的に特定されるアドレスへと転送しつつあるＪＭＰ命令に対応する。図１１に示されるこの第１のタイミングサイクルの間に、内部ＤＤＡＴＡ信号（図２のＦＩＦＯ信号）は＄０の値を転送する。図９に示されるように、ＤＤＡＴＡ値が＄０の値を格納しているとき、データプロセッサ３において何らのブレークポイントもイネーブルされない。
【０１２０】
第２のタイミングサイクルの間に、内部ＰＳＴ値は＄９の値を転送してＪＭＰ命令のためのターゲットアドレスが内部ＤＤＡＴＡ値を介して提供される次の２バイトの情報で特定されることを示す。この時点で、内部ＤＤＡＴＡ信号は＄０の値を転送し続ける。前に述べたように、内部ＰＳＴ値が＄８，＄９，＄Ａ，または＄Ｂのステータス値を転送する場合、内部ＰＳＴ信号はＤＤＡＴＡ信号を介して外部的に提供される値を修飾する（ｑｕａｌｉｆｙ）ために使用されている。この動作では、内部ＰＳＴ信号は内部ＤＤＡＴＡ信号上のどの値が必要とされるターゲットアドレス情報を提供しているかを示すために「マーカ」として使用される。内部ＰＳＴ信号は実際のデータが内部ＤＤＡＴＡ信号上に表示される１タイミングサイクル前にこれらのステータス値によって符号化される。
【０１２１】
第３のタイミングサイクルの間に、内部ＰＳＴ値は＄０の値を転送して命令実行が継続することを指示する。さらに、第３のタイミングサイクルの間に、内部ＤＤＡＴＡ信号はターゲットアドレス値のビット３〜０を提供する。
【０１２２】
第４のタイミングサイクルの間に、ＣＰＳＴ値は前記ターゲットアドレスに位置する最初の命令によって規定される値を表す。このとき、内部ＤＤＡＴＡ信号は前記ターゲットアドレス値のビット７〜４を転送する。その後、第５および第６のタイミングサイクルにおいて、内部ＤＤＡＴＡ信号はそれぞれターゲットアドレス値のビット１１〜８およびビット１５〜１２を提供する。このようにして、外部開発システム７は変形アドレシングを有する分岐動作の現在の記録および間接的に決定されるアドレスロケーションの双方を実時間で観察することができる。
【０１２３】
前記複数のマルチプレクサ８０は内部ＰＳＴおよび内部ＤＤＡＴＡ信号をそれぞれＰＳＴおよびＤＤＡＴＡ信号として外部開発システム７に提供する。該ＰＳＴおよびＤＤＡＴＡ信号は集積回路ピン（詳細には示されていない）を介して提供される。さらに、前記集積回路ピンを介して提供される前記ＰＳＴおよびＤＤＡＴＡ信号はそれぞれ前記情報が内部ＰＳＴおよび内部ＤＤＡＴＡ信号を介して転送されてから１タイミングサイクル後に情報を通信する。
【０１２４】
そのような実時間の観察を可能にすることにより、外部開発システム７は障害をより迅速かつ正確に識別しかつ分離することができる。さらに、実時間のトレース観察が外部開発システム７に与えられている間に、データプロセッサ３のＣＰＵ２は命令の実行を継続しかつＤＤＡＴＡおよびＰＳＴ信号の提供によって通常影響されない。
【０１２５】
さらに、上に示した例はＪＭＰ命令を実行するためのトレース機能を使用することについて述べたが、本発明はデータプロセッサ３の動的実行経路を完全に追跡するために使用できる。ＪＭＰ命令によって説明したように、動的実行経路の追跡は何らかの流れの変更動作によって複雑化する。例えば、いくつかの分岐命令は変形アドレシングを使用して実施され、ターゲット命令アドレスの計算はＰＣ（プログラムカウンタ）レラティブまたは絶対ではなく、プログラムビジブル（ｐｒｏｇｒａｍ  ｖｉｓｉｂｌｅ）レジスタの使用を含む。
【０１２６】
変形アドレシングを使用する命令に対しては、本発明はターゲットアドレスが正しく決定されかつ外部開発システム７に提供されるように特定のシーケンスでＤＤＡＴＡおよびＰＳＴ信号を提供する。最初に、テイクンブランチ命令の実行は複数の集積回路ピンを介して転送されるＰＳＴ信号によって識別される。図１０の符号化に示されているように、ＰＳＴ信号はテイクンブランチ命令がＰＳＴ信号が＄５の値を有する場合に実行されていることを示す。次に、ＰＳＴ信号はターゲットアドレスがＤＤＡＴＡ信号上に表示されるべきことを示すために使用できる。ＰＳＴ信号の符号化はＤＤＡＴＡ信号を介して表示されるべき数多くのバイトを識別する。前記ターゲットアドレスは次にＤＤＡＴＡ信号を使用して後のタイミングサイクルに任意選択的に利用できるようになる。ＤＤＡＴＡ信号上に表示されるターゲットアドレスのビットの数は外部ユーザによって制御される構成可能なパラメータである。
【０１２７】
本発明はダイナミックに実行されかつデータプロセッサ３のＣＰＵ２の性能に対して大きな影響を与えることなく実行される独自のトレース機能を提供する。
【０１２８】
本発明によって実施される実時間トレース機能においては、ＰＳＴ信号によって規定される実行される命令ストリームとＤＤＡＴＡ信号によって提供される捕捉データの利用可能性との間には厳格な同期があることに注意を要する。ここで述べられる本発明の実施形態においては、ＤＤＡＴＡ信号が容易に適切な命令と関連できるように厳格な順序付け（ｏｒｄｅｒｉｎｇ）がある。この順序付けは以下の例においてより詳細に説明する。以下の例においては次のようなコードが実行されるべきであると仮定する。
【０１２９】
【表４】
命令アドレス            命令
００００１３１６        ｍｏｖｑ      ＃１，ｄ０
００００１３１８        ｍｏｖ．ｌ    ｄ０，（−４，ａ６）
００００１３１ｃ        ｐｅａ        （−６８，ａ６）
００００１３２０        ｐｅａ        （−３６，ａ６）
００００１３２４        ｂｓｒ．ｗ    Ｆｕｎｃ２
００００１１５ｃ        ｍｏｖ．ｌ    ｄ７，−（ａ７）
【０１３０】
上の例では、もしＣＳＲが２バイトの分岐ターゲットアドレス情報を表示するよう構成され、すべてのオペランドがＭ−バス２３のアクセスを発生し、かつ読出しおよび書込みオペランドの双方が捕捉されれば、ＰＳＴ信号およびＤＤＡＴＡ信号上の結果として得られる出力は次のようになる。
【０１３１】
【表５】
0003846939.tif 000003
0003846939.tif 000004
0003846939.tif 000005
【０１３２】
上に与えられた例においては、ＰＳＴおよびＤＤＡＴＡ信号は同期した状態に留まっておりそれによってＤＤＡＴＡ信号上に表示されている与えられたオペランドが常に与えられた命令と関連することを保証される。説明の明瞭化のために、上の例はＤＤＡＴＡ信号および非ゼロＰＳＴ値の間でオーバラップを示していない。しかしながら、これはＰＳＴおよびＤＤＡＴＡ信号の間の関係が違肯していない場合を除き生じ得る。
【０１３３】
＜実時間デバッグサポート＞
実時間トレース機能に加えて、本発明はまた実時間デバッグ機能を実行するための回路及び方法を提供する。数多くのデータプロセッサにおいては、特に組み込み型（ｅｍｂｅｄｅｄ）システムにおいては、データプロセッサはシステムの制約のためまたはデータプロセッサがもはや正常なモードで動作していない場合に障害の回路またはプログラムを識別することができないためデバッグ動作の間に停止することはできない。本発明はデータプロセッサの実時間動作に対し最小限の立ち入りのみでかつデータプロセッサを停止させることなくデバッグ動作を実行する。
【０１３４】
ブレークポイント動作は典型的にはデバッグ動作の間にプログラミング事象を識別するために使用される。該プログラミング事象に遭遇した時、ブレークポイント信号が肯定されかつデータが取り出されてソフトウェアプログラムのステータスを判定する。トレース機能と同様に、ブレークポイント動作は外部ユーザが複数の選択されたレジスタ及びメモリロケーションの各々のステータスを突き止めてデータ処理エラーが識別できるようにする。
【０１３５】
本発明はそのようなブレークポイント動作を行うために複数のハードウェアブレークポイントレジスタ５０及びブレークポイント回路１００を提供する。本発明においてはプログラムカウンタまたはプログラムカウンタマスクの値、オペランドアドレス範囲、およびデータ値またはデータマスク値に基づくブレークポイント動作が全て実施される。さらに、本発明において実施されるブレークポイント動作はまた１または２レベルトリガへと構成することができ、この場合複数の制御レジスタ４０の前記「トリガ定義レジスタ（Ｔｒｉｇｇｅｒ  Ｄｅｆｉｎｉｔｉｏｎ  Ｒｅｇｉｓｔｅｒ：ＴＤＲ）」を介して正確なトリガ応答がプログラム可能である。本発明を使用したブレークポイント動作の実行については後により詳細に説明する。
【０１３６】
複数のハードウェアブレークポイントレジスタ５０の各々は外部開発システム７によってあるいはプロセッサ３のＣＰＵ２によって書くことができる。図３に示されるように、「アドレスブレークポイントレジスタ（ＡＢＬＲ及びＡＢＨＲ）」はブレークポイント機能をトリガするために使用できるデータ処理システム５のオペランド論理アドレス空間における領域を規定する。図６により詳細に示された、「アドレス属性ブレークポイントレジスタ（ＡＡＢＲ）」はブレークポイント機能のためのトリガにおいて整合されるべき複数のアドレス属性およびマスクを規定する。ＡＢＬＲおよびＡＢＬＲアドレス値のように、ＡＡＢＲに格納された属性値はＫ−バス２５を介して転送されるアドレス属性信号と比較される。
【０１３７】
前記複数のハードウェアブレークポイントレジスタ５０はまた複数の「プログラムカウンタブレークポイント」レジスタを含む。該複数の「プログラムカウンタブレークポイント」レジスタはブレークポイント機能をトリガするために使用できるデータ処理システム５の命令論理アドレス空間における領域を規定する。前記「プログラムカウンタブレークポイント（ＰＢＲ）」値は前記「プログラムカウンタブレークポイントマスク（ＰＢＭＲ）」レジスタに格納された値によってマスクすることができる。本発明の一実施形態では、ＰＢＭＲに格納された対応するゼロの値を有するＰＢＲにおけるビットのみがデータ処理システム５のプログラムカウンタ値との比較動作において使用される。プログラムカウンタ値はデータ処理システム５のＣＰＵ２のプログラムカウンタレジスタ（ここでは図示されていない）に格納される。
【０１３８】
前記「プログラムカウンタブレークポイント」レジスタに加えて、前記複数のハードウェアブレークポイントレジスタ５０は複数の「データブレークポイントレジスタ」を含む。該複数の「データブレークポイントレジスタ」は「データブレークポイントレジスタ（ＤＢＲ）」および「データブレークポイントマスクレジスタ（ＤＢＭＲ）」を含む。ＤＢＲはデータ処理システム５がデバッグ動作を行っている場合にトリガを形成するために使用できる特定のデータパターンを規定するデータ値を格納する。ＤＢＭＲに格納されたデータマスク値はＤＢＲに格納されたデータ値をマスクする。したがって、本発明の一実施形態では、ＤＢＭＲに格納された対応するゼロの値を有するＤＢＲに格納されたビットのみがＫ−バス２５を介して転送されるデータ信号と比較されトリガ条件が満たされているかを判定する。
【０１３９】
前記複数のハードウェアブレークポイントレジスタ５０の各々は前記複数の制御レジスタ４０のＴＤＲを使用したトリガに応答するため異なる構成とすることができる。ＴＤＲによって示される構成とは独立に、トリガされたブレークポイントの指示はＤＤＡＴＡ信号が捕捉されたオペランドおよびアドレスを表示していない場合には常にＤＤＡＴＡ信号上に提供される。ＤＤＡＴＡ信号の出力は図９に示されている。
【０１４０】
図９は、ＤＤＡＴＡ信号のビット３〜０を介して提供される値とブレークポイントステータスの間の関係を示す。ＣＳＲのビット３１〜２８はＤＤＡＴＡ信号のビット３〜０に対応することに注意を要する。
【０１４１】
ＤＤＡＴＡ信号が＄０の値を有する場合、何らのブレークポイントもイネーブルされない。ＤＤＡＴＡ信号が＄１の論理値を提供する場合、デバッグモジュール１０はレベル１のブレークポイントがトリガされるのを待機している。前に述べたように、レベル１のブレークポイントの属性は前記「トリガ定義レジスタ（ＴＤＲ）」のビット１５〜０によって規定される。もし＄２の論理値がＤＤＡＴＡ信号によって提供されれば、レベル１のブレークポイントがトリガされている。ＤＤＡＴＡ信号が＄５の論理値を提供する場合、デバッグモジュール１０はレベル２のブレークポイントがトリガされるのを待機している。前に述べたように、レベル２のブレークポイントの属性は前記「トリガ定義レジスタ（ＴＤＲ）」のビット３１〜１６によって規定される。もし＄６の論理値がＤＤＡＴＡ信号によって提供されれば、レベル２のブレークポイントがトリガされている。
【０１４２】
ブレークポイント動作のステータスはまたＣＳＲのビット３１〜２８に格納されることに注意を要する。
【０１４３】
デバッグ動作の実行の前に、ブレークポイント値が複数のハードウェアブレークポイントレジスタ５０のうちの適切な一つに格納されなければならない。該ブレークポイント値は外部開発システム７によってシリアルインタフェース３０を介してあるいはＣＰＵ２によってＫ−バス２５を介して提供できる。
【０１４４】
外部装置からこの書き込み機能を行うためには、外部開発システム７は前記ＤＳＤＩおよびＤＳＣＬＫ信号の双方を使用してシリアルインタフェース３０へと前記複数のハードウェアブレークポイントレジスタ５０の内のあらかじめ選択された１つにデータをロードするためにコマンドをシフト入力する。本発明の一実施形態では、該コマンドの第１の部分はＤＳＤＩ信号によって提供されかつＤＳＣＬＫ信号によってブロック入力される。該コマンドの付加的な部分はその後提供される。該コマンドの全ての部分は１６ビットのパケットの情報が完成するまでレジスタ３２に格納される。本発明の別の実施形態では本発明のこの実施形態において必要とされる１６ビットよりも多くのまたは少ないビットを含むものとすることができることに注意を要する。
【０１４５】
本発明の別の実施形態では、前記ブレークポイント値はデータプロセッサ３のＣＰＵ２によって複数のブレークポイントレジスタ５０の内の前記あらかじめ選択された１つに書き込まれる値によって決定することができる。ＣＰＵ２が該値を前記複数のブレークポイントレジスタ５０のあらかじめ選択された１つに書き込む時、該値は図３に示されるブレークポイント回路１００の一時レジスタ１７０に提供される。該値はＫ−バス２５を介して一時レジスタ１７０に提供される。一時レジスタ１７０から、前記値は１６ビットのパケットで転送されかつレジスタ３２に格納される。前に述べたように、ＣＳＲへのＣＰＵ書き込みに対しては、ＫＤＡＴＡ信号を介して転送されるオペランド値は制御バス１５を介して制御回路２０へとＣＰＵ２によって提供される制御信号を使用して一時データレジスタ１７０へと捕捉される。したがって、前記複数の制御レジスタ４０に対しては、前記ブレークポイント値は外部開発システム７からレジスタ３２に提供されるものと同じであるように見える。
【０１４６】
一旦前記ブレークポイント値が前記複数のブレークポイントレジスタ５０の内の前記あらかじめ選択された一つに書き込まれると、ＣＰＵには通常の動作モードでプログラミングコードを実行する。そのプログラミングコードの実行の間に、アドレス情報がＫ−バス２５のＫＡＤＤＲ信号を介して通信されかつデータ情報がＫ−バス２５のＫＤＡＴＡ信号を介して通信される。さらに、ＣＰＵ２におけるプログラムカウンタ情報はプログラムカウンタのブレークポイント比較動作の目的で一時ＰＣレジスタ１２５に格納された値を絶えず更新する。
【０１４７】
アドレス、データおよびプログラムカウンタ情報がハードウェア回路１００に転送されると、比較器１３０，１４０，１８０および１３５は該情報を受信しかつデータプロセッサ３の性能に悪影響を与えることなく選択的に比較動作を行う。さらに、複数の制御値が制御バス１５を介して前記複数の制御レジスタ５０のＴＤＲからハードウェア回路１００へと提供される。前記複数の制御値はハードウェア回路１００を使用してトリガ動作を選択的に構成する前に述べたＴＤＲの値を含む。
【０１４８】
例えば、外部開発システム７が、アドレスがある範囲のアドレスに入る場合にブレークポイントが肯定されるべきことを決定した場合、外部開発システム７はシリアルインタフェース３０を使用してハイアドレス値を図３のＡＢＨＲ１１０にかつローアドレス値を図３のＡＢＬＲ１２０に書き込まなければならない。しかしながら、比較器１３０および比較器１４０がＫ−バス２５のＫＡＤＤＲ信号によって提供されるアドレスがＡＢＬＲ１２０およびＡＢＨＲ１１０に格納されたアドレスによって規定される範囲以内にあるかを判定することができる前に、前記複数の制御レジスタ４０のＴＤＲは制御バス１５を介して適切な制御を提供しなければならない。
【０１４９】
この例では、前記適切な制御は肯定された「イネーブルアドレス範囲（Ｅｎａｂｌｅ  Ａｄｄｒｅｓｓ  Ｒａｎｇｅ：ＥＡＲ）」ビットまたは肯定された「イネーブルアドレスブレークポイント反転（Ｅｎａｂｌｅ  Ａｄｄｒｅｓｓ  Ｂｒｅａｋｐｏｉｎｔ  Ｉｎｖｅｒｔｅｄ：ＥＡＩ）」ビットを含む。前に述べたように、ＥＡＲビットは該ビットが肯定されたとき、ＡＢＬＲ１２０およびＡＢＨＲ１１０によって規定される包含範囲（ｉｎｃｌｕｓｉｖｅ  ｒａｎｇｅ）に際してブレークポイントがトリガできるようにする。同様に、肯定された時、前記ＥＡＩビットはＡＢＬＲ１２０およびＡＢＨＲ１１０によって規定される範囲を除いた、または外側の、アドレス範囲に際してブレークポイントがトリガできるようにする。
【０１５０】
ＥＡＲおよびＥＡＩビットの論理値に応じて、比較器１３０および１４０はＫＡＤＤＲ信号を介して転送されるアドレス値がＡＢＨＲ１１０およびＡＢＬＲ１２０における関連する値より大きいかまたは小さいかを決定することになる。もしＥＡＲビットが肯定されかつＫＡＤＤＲ信号を介して転送されるアドレス値がＡＢＨＲ１１０およびＡＢＬＲ１２０におけるアドレス値によって規定される範囲内にあれば、比較器１３０および１４０は前記「ブレークポイント」信号を肯定してあらかじめ選択されたトリガポイントがアクセスされたことを示す。前記「ブレークポイント」信号が肯定された時、制御回路２０はマルチコンダクタ（ｍｕｌｔｉ−ｋｏｎｄｕｃｔｏｒ）「ブレークポイント制御」信号を介してコア９のＣＰＵ２に転送されたＢＫＰＴ（ブレークポイント）信号、「デバッグ割り込み」信号、および「ゴー（Ｇｏ）」信号の内の１つを肯定する。
【０１５１】
前記ブレークポイント信号が肯定されたとき、ブレークポイントトリガの発生はＴＤＲにおいて規定された応答を発生させる。もしデータプロセッサ３が停止すれば、ＢＫＰＴ信号の肯定はＣＰＵ２を強制的に背景デバッグモードにおける実行を停止させることになる。背景デバッグモードは後にやや詳細に説明することに注目すべきである。背景デバッグモードに入るためには、ＴＤＲのＴＲＣビットは％０１に等しくなるべきである。ＴＲＣビットはＴＤＲのビット３１および３０に対応することに注意を要する。背景デバッグモードに入りかつプログラムカウンタ値にもとづくブレークポイントが肯定されたとき、ＣＰＵ２はターゲットとされる命令が実行される前にデータプロセッサ３の実行を停止する。アドレスおよびデータ成分にもとづくブレークポイントに対しては、ＣＰＵ２は停止の前にいくつかの付加的な命令を実行することができる。このタイプのブレークポイント動作は非実時間デバッグ動作のためにのみ使用すべきであり、それはデータプロセッサ３は前記トリガに応じて停止するからであることに注意を要する。
【０１５２】
しかしながら、データプロセッサ３が停止しなければ、制御回路２０は特別のデバッグ割込みがＣＰＵ２に提供されるべきことを示すために前記「デバッグ割込み」信号を肯定する。特別のデバッグ割込みがＣＰＵ２に提供されるべき場合には、ＴＤＲのＴＲＣビットは％１０の論理値にセットされる。ＴＲＣビットが％１０にセットされたとき、ブレークポイントトリガは制御回路２０によってＣＰＵ２への特別のデバッグ割込みへと変換される。該特別のデバッグ割込みはＣＰＵ２が割込みのためにサンプルを行うまでペンディングとされる。特別のデバッグ割込みが肯定されたとき、ターゲットとされる命令が実行される前にプログラムカウンタ値にもとづくブレークポイントが生じる。これはＣＰＵ２が割込みがペンディング中であるかを判定するためにサンプルを行うのと同時にプログラムカウンタの比較動作がイネーブルされるため可能となる。アドレスおよびデータ比較にもとづくブレークポイントに対しては、ＣＰＵ２は割込み動作を実行する前にいくつかの付加的な命令を実行することができる。
【０１５３】
特別のデバッグ割込みがＣＰＵ２によって認識されたとき、ＣＰＵ２はソフトウエアプログラムの実行を中止しかつ例外処理ルーチンを開始する。例外処理ルーチンの始めに、ＣＰＵ２はエミュレータモードの動作に入る。ＣＰＵ２がエミュレータモードの動作を行っている場合にはすべての割込みは無視されることに注意を要する。前記複数の制御レジスタ４０のＣＳＲにおけるＭＡＰビットの状態に応じて、エミュレーションモードの動作はすべてのメモリアクセスを前記複数のハードウエアブレークポイントレジスタ５０のＡＡＢＲレジスタのＴＴおよびＴＭ値により指示される特別にマッピングされたアドレス空間へと強制することができる。この例では、前記ＴＴ値は＄２に等しくかつ前記ＴＭ値は＄５（オペランド）または＄６（命令）に等しい。
【０１５４】
標準的な８バイトの実行スタックが作成された後、ＣＰＵ２は独自の例外ベクトルをフェッチする。ＣＰＵ２は前記独自の例外ベクトルに含まれる命令アドレスにおいて実行を続ける。ＣＰＵ２におけるデバッグ割込みハンドラはスーパバイザ命令セットを使用して複数の必要なセーブ動作を行うようプログラムすることができる。１例として、デバッグ割込みハンドラはすべてのプログラム可視レジスタの状態および特別のメモリロケーションを確保したメモリ空間にセーブすることができる。前記確保したメモリ空間はメモリ６内に位置してもよくあるいはそれはデータ処理システム５のいずれか他のメモリに位置してもよい。いったん要求される動作が完了すると、「例外からの戻り（Ｒｅｔｕｒｎ  Ｆｒｏｍ  Ｅｘｃｅｐｔｉｏｎ：ＲＴＥ）」命令が実行されかつＣＰＵ２はエミュレータモードの動作を退出する。ＣＰＵ２がデバッグ割込み信号を受信しかつエミュレータモードの動作に入ったとき、ＰＳＴ信号はこの条件を通知するため＄Ｄの値を有する。ＰＳＴ信号はデバッグ割込みが処理される時間からデバッグ割込み例外処理ルーチンの最初の命令がフェッチされるまでこの値を有する。さらに、ＰＳＴ信号はＣＰＵ２がエミュレータモードの動作から退出したことを指示するために＄７の値を有する。さらに、いったん前記デバッグ割込みハンドラがそのデバッグ例外処理ルーチンの実行を完了すると、外部開発システム７は次にメモリ６における前記確保されたメモリロケーションまたは前記確保されたメモリロケーションを含むデータ処理システム５の他のメモリをアクセスすることができる。
【０１５５】
前記デバッグ割込みはデータプロセッサ３の通常の動作における少しの侵入が許容される場合の実時間デバッグ動作のために使用できるが、データプロセッサ３を停止させることは選択可能なものではない。データプロセッサのエミュレータモードへのエントリおよびエミュレータモードからのエグジットはＰＳＴ信号上の独自の値によって通知されることに注意を要する。
【０１５６】
さらに、ある範囲ではなく、単一のアドレスにもとづき、あるデータ値または該データ値のマスクにもとづき、かつあるプログラムカウンタ値または該プログラムカウンタ値のマスクにもとづき、他の比較を本発明において行うことができることに注目すべきである。上の例で説明したアドレス範囲の比較については、データ値、データ値のマスク、プログラムカウンタ値、およびプログラムカウンタ値のマスクにもとづく比較はＴＤＲが制御バス１５を介して適切な制御値を提供することを必要とする。
【０１５７】
＜マルチレベルトリガ構成＞
本発明によって行われる実時間デバッグ動作は２つのレベルのトリガ値を提供するよう拡張できる。本発明のこの実施形態では、ビット３１〜１６は第２のレベルのトリガを規定しかつビット１５〜０は第１のレベルのトリガを規定する。トリガが２レベルトリガとして構成されるとき、前記トリガは条件「もし…であれば、もし（ｉｆ−ｔｈｅｎ−ｉｆ）」構造と同様の様式で機能する。例えば、もしトリガの第１の条件、またはレベル、が満たされれば、該トリガがデータ処理システム５によって実行されるべきブレークポイント機能をイネーブルする前に第２の条件、またはレベル、が満たされなければならない。そのような条件トリガ構造は外部開発システム７が大きな柔軟性および精度の双方を備えて機能できるようにする。本発明のこの実施形態においては、２つのレベルのみのトリガ構造が実施されていることに注意を要する。しかしながら、さらに付加的なレベルのトリガ構造も実施できる。
【０１５８】
２レベルトリガ動作の例として、外部開発システム７がアドレス＄００００ＦＡＣＥへの＄ＦＥＥＤ以外のいずれかの値のユーザモードのオペランドワード書込みとしてトリガを定義することを希望し、続いてプログラムカウンタが＄ＤＥＡＤＢＥＥＦの値に等しくなるものと仮定する。第１のレベルのトリガはアドレス＄００００ＦＡＣＥへの＄ＦＥＥＤ以外の何らかの値のユーザモードのオペランドワード書込みであろう。第２のレベルのトリガはプログラムカウンタが＄ＤＥＡＤＢＥＥＦの値に等しい場合に生じる。
【０１５９】
この動作を実行するために、外部開発システム７は値＄ＤＥＡＤＢＥＥＦをプログラムカウンタブレークポイントレジスタ（ＰＢＲ）１１５にかつ＄０００００００００の値をプログラムカウンタブレークポイントマスクレジスタ（ＰＢＭＲ）１９０に書き込むことができる。ＰＢＭＲ１９０にオールゼロが書き込まれたとき、ＰＢＲ１１５に格納されたすべてのビットは一時ＰＣレジスタ１２５によって提供されるプログラムカウンタ値と比較される。前記比較動作は前記複数の制御レジスタ４０のＴＤＲに格納された値に応じて実行されることに注意を要する。
【０１６０】
外部開発システム７はまた＄００００ＦＡＣＥの値をアドレスブレークポイントローレジスタ（ＡＢＬＲ）１２０にかつ＄００４１の値を図６のアドレス属性ブレークポイントレジスタ（ＡＡＢＲ）に書き込まなければならない。ＡＢＬＲ１２０における＄００００ＦＡＣＥの値は前記ＴＤＲの構成が比較が行われるのを許容すれば比較器１４０が前記ブレークポイント信号を肯定する値を示す。前記ＡＡＢＲにおける＄００４１の値はＴＭ値を％００１にセットし、前記ＴＴ値は％００に、前記ＳＺ値は％１０に、そしてＲ（読出し）ビットをゼロにセットする。前記ＴＭおよびＴＴ値はトリガがユーザモードのオペランドワード書込み動作となることを保証する働きをなす。
【０１６１】
外部開発システム７は＄００００ＦＥＥＤの値をブレークポイント回路１００のデータブレークポイントレジスタ（ＤＢＲ）１６０に書き込まなければならない。外部開発システムはまた＄０００００００００の値をデータブレークポイントマスクレジスタ（ＤＢＭＲ）１５０に書き込まなければならない。オールゼロがＤＢＭＲ１５０に書き込まれたとき、ＤＢＲ１６０に格納されたすべてのビットは比較器１８０を使用してＫＤＡＴＡ信号によって提供されるデータ値と比較される。この比較動作は前記複数の制御レジスタ４０のＴＤＲに格納された値に応じて行われることに注意を要する。
【０１６２】
最後に、外部開発システム７は前記複数の制御レジスタ４０のＴＤＲを＄２００２２８２４の値で書き込まなければならない。ＴＤＲがこの値を有する場合、第１のレベルのトリガは以下の特性を有する。この例では、前記ＥＢＬビットが肯定され、前記ＥＤＬＷビットが否定され、前記ＥＤＷＬビットが肯定され、かつ前記ＥＤＷＵ，ＥＤＬＬ，ＥＤＬＭ，ＥＤＵＭ，およびＥＤＵＵビットがすべて否定される。前記ＤＩビットは肯定され、前記ＡＩおよびＥＡＲビットは否定され、前記ＥＡＬビットは肯定され、かつ前記ＥＰＣおよびＰＣＩビットは否定される。この構成により、ＴＤＲはＤＢＲ１６０に格納された値と同じに格納されていないワード長のデータ値に対し前記ブレークポイント信号を肯定するよう前記第１のレベルのトリガをイネーブルするよう構成する。さらに、前記ＴＤＲは上に述べた条件のおのおのが適合しかつＡＢＬＲ１２０に格納されたアドレス値が前記ＫＡＤＤＲ信号によって提供される値に対応する場合に第１のレベルのトリガを肯定するよう構成される。前記ＴＤＲによって決定される上に述べた条件のおのおのが満たされた場合、第１のレベルのトリガが肯定されかつ次に前記ブレークポイント信号が肯定される前に前記第２のレベルのトリガが満たされなければならない。
【０１６３】
さらに、前記ＴＤＲがこの値を有する場合、第２のレベルのトリガは以下の特性である。この例では、前記ＴＲＣ値は％００であり、前記ＥＢＬビットは肯定され、前記ＥＤＬＷ，ＥＤＷＬ，ＥＤＷＵ，ＥＤＬＬ，ＥＤＬＭ，ＥＤＵＭおよびＥＤＵＵビットはすべて否定される。前記ＤＩ，ＡＩ，ＥＡＲおよびＥＡＬビットは否定され、前記ＥＰＣビットは肯定され、かつ前記ＰＣＩビットは否定される。この構成により、前記ＴＤＲはＰＢＲ１１５に格納されたものと同じであるプログラムカウンタ値に対し前記ブレークポイント信号を肯定するため第２のレベルのトリガがイネーブルされるよう構成する。ＴＤＲによって判定される上に述べた条件のおのおのが満たされた場合、第２のレベルのトリガが肯定されかつ前記ブレークポイント信号が肯定されることになる。
【０１６４】
前に述べたように、ブレークポイント信号はプログラム可能なトリガ応答を生じる結果となる。該トリガ応答は前記複数の制御レジスタ４０のＴＤＲのビット３１および３０へとプログラムされる。正しくプログラムされたとき、データプセッサ３のＣＰＵ２のトリガ応答は前記ＤＤＡＴＡ信号を介して外部開発システム７にとってトリガを見えるようにすることとなりかつ何らの内部応答も生じさせない。第２のトリガ応答はＣＰＵ２に実行を停止させかつ外部的にＣＰＵ２が中止状態にあることをＰＳＴ信号を介して指示させる。第３のトリガ応答はＣＰＵ２に対しデバッグ割込みを発生する。前に述べたように、デバッグ割込みは優先度がすべての他の割込みより高くかつＣＰＵ２をエミュレータモードの動作に入らせかつ独自の例外処理ルーチンにアクセスさせる。エミュレータモードの動作へのエントリおよび該エミュレータモードの動作からのエグジットは外部的にＰＳＴ出力上において見えるようにされる。
【０１６５】
＜デバッグモジュールおよびコアの同時動作＞
上に述べた実時間デバッグ機能をサポートするため、本発明はコア９およびデバッグモジュール１０の同時動作をサポートしている。デバッグモジュール１０のためにＫ−バス２５上で効果的にバスサイクルをスケジューリングする調停機構は本発明では実時間デバッグ動作の効率的な実行を可能にするために実施される。該調停機構はＣＰＵ２の内部命令フェッチパイプラインを停止させること（ｓｔａｌｌｉｎｇ）によりデバッグモジュール１０のためのバスサイクルを効率的にスケジューリングする。前記調停機構はデバッグモジュール１０のＫ−バス２５へのアクセスを許容する前にすべてのオペランド要求がＣＰＵ２によってサービスされるまで待機する。デバッグモジュール１０は前記「バス承認」信号を受信しかつＫ−バス２５をＡＢＨＲ１１０に格納された要求されるアドレスおよび図６のＡＡＢＲに格納された属性によってドライブする。読出し要求に対しては、前記応答はＫＤＡＴＡ信号に対してドライブされかつデバッグモジュール１０によって一時データレジスタ１７０において捕捉される。書込みリファレンスに対しては、前記書込みオペランドがＤＢＲ１６０からＫＤＡＴＡ信号に対してドライブされる。デバッグモジュール１０はこの動作をＫ−バス２５をＣＰＵ２に対して放棄し戻す前に１つのバス処理において行う。従って、デバッグモジュール１０はＣＰＵ２の実時間動作ふるまいへのその侵入を最小にする。Ｋ−バス２５に対する調停機構はＣＰＵ２に格納されたロジックによって実行される。
【０１６６】
ＣＰＵ２およびデバッグモジュール１０の同時動作を示す例において、外部開発システム７はデバッグ機能の間にメモリ読出し動作を実行しているものと仮定する。メモリ読出し命令を実行するために、外部開発システム７は前記ＤＳＤＩおよびＤＳＣＬＫ信号の双方を使用してシリアルインタフェース３０に対しメモリロケーションをアクセスするためのコマンドおよびアドレスをシフト入力する。本発明の１実施形態では、前記コマンドの第１の部分はＤＳＤＩ信号によって提供されかつＤＳＣＬＫ信号によってクロック入力される。前記コマンドの付加的な部分はその後提供される。前記コマンドのすべての部分は１６ビットのパケットの情報が完成するまでレジスタ３２に格納される。本発明の別の実施形態では本発明のこの実施形態において要求される１６ビットより多くのまたは少ないビットを含むことができることに注意を要する。
【０１６７】
ここに説明される本発明の実施形態においては、予め選択されたメモリロケーションへある値を書き込む命令は４８ビット長であり、１６ビットのオペコードおよび３２ビットのアドレスを備えている。レジスタ３２は１６ビットのみの幅である。従って、第１の１６ビットのパケットの情報が完成したとき、該情報は制御バス１５を介して制御回路２０へ転送される。制御回路２０はその第１の１６ビットのパケットの情報をデコードして行われるべき動作のタイプを決定する。いったん制御回路２０が前記第１の１６ビットのパケットのデータをデコードしかつプログラムされたメモリロケーションからの読出しアクセスが行われるべきことを決定すれば、制御回路２０は制御バス１５を介して制御信号を提供し引き続く３２ビットのアドレス情報が前記複数のハードウエアブレークポイントレジスタ５０のＡＢＨＲ１１０へとロードできるようにする。
【０１６８】
その後のデータはＤＳＤＩ信号を介して外部開発システム７によってシリアルに提供される。前に述べたように、ＤＳＤＩ信号によって提供されるその後のデータはＤＳＣＬＫ信号を介してクロック入力される。１６ビットのパケットの情報が完成するまでデータビットのおのおのはレジスタ３２に格納される。第２の１６ビットのパケットの情報が完成したとき、該情報は前記「シリアル情報」信号を介して複数のハードウエアブレークポイントレジスタ５０のＡＢＨＲ１１０へと転送される。その後、付加的な情報はＤＳＤＩおよびＤＳＣＬＫ信号を介して外部開発システム７によりレジスタ３２へとシリアルに提供される。第３の１６ビットのパケットの情報が完成したとき、該情報は前記「シリアル情報」信号を介して複数のハードウエアブレークポイントレジスタ５０のＡＢＨＲ１１０へと転送される。
【０１６９】
前記オペランドおよびアドレス情報が受信されたとき、制御回路２０は前記「バス要求」信号を肯定する。該「バス要求」信号はＫ−バス２５を介してＣＰＵ２へと転送される。前に述べたように、前記「バス要求」および前記「バス承認」信号はデバッグモジュール１０およびＣＰＵ２の間の直接的な接続である。バス調停の詳細は前に説明した。
【０１７０】
前記「バス承認」信号が肯定されたとき、ＡＢＨＲ１１０がイネーブルされてそこに格納されたアドレス情報をＫＡＤＤＲ信号を介してＫ−バス２５に提供する。該アドレス情報はその中のメモリロケーションを読み出すためにメモリ６によってデコードされる。読出し動作が実行されるため、メモリ６はＫ−バス２５のＫＤＡＴＡ信号上のメモリロケーションに対応するオペランドを出力する。アクセスされるメモリはメモリ６に限定されないことに注意を要する。むしろ、アクセスされるメモリはメモリ６あるいはデータ処理システム５の任意の他のメモリロケーションとすることができる。ＫＤＡＴＡ信号を介して転送されるオペランドはその後ブレークポイント回路１００の一時データレジスタ１７０において捕捉される。前記オペランドはその後「内部データ」信号を介してレジスタ３２に転送される。前記オペランドは次にシリアルインタフェース３０によって提供されるＤＳＤＯ信号を介して３２のタイミングサイクルで直列的にシフト出力される。前記ＤＳＤＯ信号は外部開発システム７へ提供される。
【０１７１】
さらに、オペランドが前記ＫＤＡＴＡ信号を介して転送された後、ＣＰＵ２は処理速度への最小限の侵入とともにデータ処理命令の実行を再開する。従って、ＣＰＵ２はシリアルインタフェース３０が情報を出力している間にデータ処理機能を行うことができる。
【０１７２】
本発明はデータプロセッサ３が特別のデバッグモードで動作することを要求することなくＣＰＵ２およびデバッグモジュール１０の同時動作を可能にすることに注目すべきである。コア９とデバッグモジュール１０との間でデータ、アドレスおよび制御情報を通信するためにＫ−バス２５を使用することはデバッグモジュール１０がＣＰＵ２と同じメモリロケーションおよび内部レジスタにアクセスできるようにする。従って、デバッグモジュールはＣＰＵ２がアクセスできるすべてのメモリロケーションおよび内部レジスタにアクセスすることができる。ＣＰＵ２およびデバッグモジュール１０を同時に動作させることができる能力により外部開発システム７がプロセッサの動作に大きな影響を与えることなくデータプロセッサ３の内部レジスタおよびメモリにおける増大した可視性（ｖｉｓｉｂｉｌｉｔｙ）を持つことができるようにする。
【０１７３】
さらに、デバッグモジュール１０およびＣＰＵ２はともに同じ内部レジスタおよびメモリロケーションにアクセスする能力を有するが、ＣＰＵ２およびコア９の残りの部分は前記複数の制御レジスタ４０のＣＳＲにおける前記「デバッグレジスタへのプロセッサ書込み禁止（Ｉｎｈｉｂｉｔ  Ｐｒｏｃｅｓｓｏｒ  Ｗｒｉｔｅｓ  ｔｏ  Ｄｅｂｕｇ  Ｒｅｇｉｓｔｅｒｓ：ＩＰＷ）」ビットがセットされている場合に複数のブレークポイントレジスタ５０に格納された値を変更しないことに注意を要する。ＣＳＲにおけるＩＰＷビットがセットされている場合、ＣＰＵ２によって開始されたいずれの書込み動作も禁止される。さらに、ＩＰＷビットは外部開発システム７によって提供されるコマンドによってのみ変更することができる。
【０１７４】
ＩＰＷビットをセットするため、外部開発システム７はＤＳＤＩおよびＤＳＣＬＫ信号の双方を使用してシリアルインタフェース３０にデータをＣＳＲにロードするためコマンドをシフト入力する。前に述べたように、本発明の１つの実施形態では、前記コマンドの第１の部分はＤＳＤＩ信号によって提供されかつＤＳＣＬＫ信号によってクロック入力される。前記コマンドの付加的な部分はその後提供される。前記コマンドのすべての部分は１６ビットのパケットの情報が完成するまでレジスタ３２に格納される。本発明の別の実施形態では本発明のこの実施形態において必要とされる１６ビットより多くのまたは少ないビットを含むことができることに注目すべきである。
【０１７５】
ここに説明される本発明の実施形態においては、ＣＳＲにある値を書き込む命令は４８ビット長であり、１６ビットのオペコードおよび３２ビットのデータを備えている。レジスタ３２は１６ビットのみの幅を有する。この書込み命令を実行するため、外部開発システム７はＤＳＤＩおよびＤＳＣＬＫ信号の双方を使用してシリアルインタフェース３０にデータをＣＳＲへロードするためコマンドをシフト入力する。該コマンドの第１の部分はＤＳＤＩ信号によって提供されかつＤＳＣＬＫ信号によってクロック入力される。前記コマンドの付加的な部分はその後提供される。前記コマンドのすべての部分は１６ビットのパケットの情報が完成するまでレジスタ３２に格納される。
【０１７６】
ここに説明される本発明の実施形態においては、ＣＳＲにある値を書き込む命令は４８ビット長であり、１６ビットのオペコードおよび３２ビットのデータを備えている。レジスタ３２は１６ビットのみの幅を有する。従って、第１の１６ビットのパケットの情報が完成したとき、該情報は制御回路２０に転送されそこでデコードされかつその後の動作が構成される。第２の１６ビットのパケットの情報がレジスタ３２にロードされたとき、該情報は前記「シリアル情報」信号を介して複数の制御レジスタ４０に転送される。制御回路２０から制御バス１５によって提供される制御情報を使用して、前記「シリアル情報」信号の内容はデスティネイションレジスタ、すなわち前記ＣＳＲ、の上位部分にロードされる。同様に、第３の１６ビットのパケットの情報がレジスタ３２にロードされかつ次に複数の制御レジスタ４０に転送される。前と同様に、制御回路２０によって供給される信号を使用して、前記「シリアル情報」信号の内容はＣＳＲの下位部分へとロードされる。このようにして、４８ビットの命令全体が直列的にデバッグモジュール１０にシフト入力され、そこでデコードされかつオペランド値がＣＳＲにロードされる。
【０１７７】
その後のデータはＤＳＤＩ信号を介して外部開発システム７によって直列的に提供される。前に述べたように、ＤＳＤＩ信号を介して提供されるその後のデータはＤＳＣＬＫ信号を介してクロック入力される。１６ビットのパケットの情報が完成するまで前記データビットのおのおのはレジスタ３２に格納される。第２の１６ビットのパケットの情報が完成したとき、該情報は前記「シリアル情報」信号を介して複数の制御レジスタ４０に転送される。前記第２の１６ビットのパケットの情報はＣＳＲにビット３１〜１６として格納される。その後、付加的な情報が直列的に前記ＤＳＤＩおよびＤＳＣＬＫ信号を介して外部開発システム７によってレジスタ３２に提供される。第３の１６ビットのパケットの情報が完成したとき、該情報は前記「シリアル情報」信号を介して前記複数の制御レジスタ４０に転送される。この第３の１６ビットのパケットの情報はビット１５〜０としてＣＳＲに格納される。
【０１７８】
本発明の別の実施形態では、ＩＰＷビット以外のすべての値はデータプロセッサ４のＣＰＵ２によってＣＳＲに書き込まれる値によって構成することができる。ＣＰＵ２が該値をＣＳＲに書き込むとき、該値は図６に示されるブレークポイント回路１００の一時レジスタ１７０に提供される。前記値はＫ−バス２５のＫＤＡＴＡ信号を介して一時レジスタ１７０に与えられる。一時レジスタ１７０から、前記値はレジスタ３２へ転送されかつ１６ビットのパケットで該レジスタ３２に格納される。従って、複数の制御レジスタ４０に対しては、前記値は外部開発システム７からレジスタ３２に提供されたものと同じであるように見える。
【０１７９】
前記ＩＰＷビットおよび前記ＣＳＲに格納された他の値は制御バス１５を介してハードウエア回路１００に提供される。前記ＩＰＷビットが肯定されかつＣＰＵ２がＡＢＨＲ１１０，ＡＢＬＲ１２０，ＤＢＭＲ１５０，ＤＢＲ１６０，ＰＢＭＲ１９０およびＰＰＲ１２５の内の１つに格納された値を変更しようと試みる場合、前記ＩＰＷビットはコア９によって開始される書込み動作をディスエーブルするために上に述べたレジスタのおのおのに提供される。
【０１８０】
前記複数のハードウエアブレークポイントレジスタ５０への書込み動作を効果的にディスエーブルするためにＩＰＷビットを使用することはデータプロセッサ３における障害の回路および誤りのあるプログラムを分離しかつ識別するために外部開発システム７によってプログラムされる条件がＣＰＵ２によってオーバライトされないことを保証する。
【０１８１】
〈リセット例外処理の間のデバッグ動作〉
本発明は外部開発システム７がリセット動作のための例外処理ルーチンが開始される前にデータプロセッサ３においてブレークポイント動作を実行できるようにするメカニズムを提供する。「外部リセット」信号が肯定されたとき、前記複数の制御レジスタ４０の各々の内容は初期化される。前記「外部リセット」信号がその後否定されたとき、データプロセッサ３が実際のリセット例外処理ルーチンを開始する前に静止している時間のウィンドウが存在する。外部開発システム７によって前記静止時間の間に外部ブレークポイント信号、＊ＢＫＰＴ、が肯定されれば、本発明はターゲットメモリ値をデータ処理システム５にダウンロードしかつ何らかの要求されるハードウェアレジスタ構成を行なうためのメカニズムおよび方法を提供する。前記ターゲットメモリ値は単一の値でもよくあるいは複数の値でもよい。
【０１８２】
いったん前記ターゲットメモリ値が外部開発システム７によってダウンロードされると、前記複数の制御レジスタおよび前記複数のハードウェアブレークポイントレジスタ５０の内の一方または双方が構成できる。さらに、ＣＰＵ２に含まれるハードウェアレジスタ、ＭＭＵ／コントローラ４、およびシステムバスコントローラ８もまたプログラムされ得る。最後に、データプロセッサ３は「ゴー（Ｇｏ）」コマンドを使用してリスタートされなければならない。しかしながら、本発明においては、前記「ゴー」コマンドの受信に応じて実行される一連のハードウェア動作はＣＰＵ２がブレークポイント動作を実行している間に変更されたハードウェアレジスタの関数である。もし外部開発システム７がＣＰＵ２のプログラムカウンタレジスタを変更しなければ、前記「ゴー」コマンドはデータプロセッサ３をイネーブルして通常のリセット例外処理ルーチンを実行できるようにする。しかしながら、もし外部開発システム７がＣＰＵ２のプログラムカウンタレジスタを変更しなければ、前記「ゴー」コマンドはデータプロセッサ３をイネーブルして前記通常のリセット例外処理ルーチンをバイパスしかつプログラムカウンタレジスタにロードされたアドレスによって識別される命令の実行を開始できるようにする。
【０１８３】
そのようなリセットおよびブレークポイント動作の間のデータプロセッサ３の動作は後により詳細に説明する。前記「リセット」信号が肯定されかつデータプロセッサ３のＣＰＵ２に提供されたものと仮定する。該「リセット」信号が否定されたとき、外部開発システム７は前記＊ＢＫＰＴ信号を肯定する。デバッグモジュール１０の制御回路２０はＫ−バス２５を介してのＣＰＵ２への複数のブレークポイント制御信号の内の前記ＢＫＰＴ信号を肯定する。前と同様に、制御インタフェースはデバッグモジュール１０とＣＰＵ２との間の直接的接続であることに注意を要する。
【０１８４】
ＣＰＵ２が肯定されたＢＫＰＴ信号を受信したとき、ＣＰＵ２は静止時間ウィンドウを中止しかつデータプロセッサ３が停止していることを通知する。この時間の間、ＰＳＴ信号は＄Ｆの論理値を有し外部開発システム７にデータプロセッサ３が動作を停止していることを示す。したがって、ＣＰＵ２およびデータプロセッサ３はリセット例外処理ルーチンを開始する前に停止される。
【０１８５】
いったんＰＳＴ信号がデータプロセッサ３が動作を停止していることを指示すると、外部開発システム７は複数のデータ、アドレスおよび制御値を前記ＤＳＤＩ信号および前記ＤＳＣＬＫ信号を介してデータプロセッサ３にダウンロードする。前記複数のデータ、アドレスおよび制御値はメモリ６に格納されるべきプログラムまたはデータ値のメモリイメージとすることができる。さらに、前記複数のデータ、アドレスおよび制御値は前記複数の制御レジスタ４０および前記複数のハードウェアブレークポイントレジスタ５０のような複数の構成レジスタの各々のために初期化値を提供することができる。前記複数のデータ、アドレスおよび制御値がＤＳＤＩ信号を介してデータプロセッサ３に提供されたとき、前記値の各ビットはシリアルインタフェース３０を介してレジスタ３２に提供される。レジスタ３２が満杯になったとき、パケットの情報が前記「シリアル情報」信号を介して複数のハードウェアブレークポイントレジスタ５０に提供する。前記複数のハードウェアブレークポイントレジスタ５０においては、前記パケットの情報は一時データレジスタ１７０のようなレジスタに格納される。一時データレジスタ１７０はその後そこに格納された情報をＫＤＡＴＡ信号を介してＫ−バス２５に提供する。Ｋ−バス２５は該情報をコア９の残りの部分に転送する。この動作は前により詳細に説明したから、内部格納手順のこれ以上の説明はここでは行なわない。
【０１８６】
前記複数のデータ、アドレスおよび制御値がデータプロセッサ３の適切なメモリまたはレジスタロケーションに格納された後、外部開発システム７は前記ＤＳＤＩおよびＤＳＣＬＫ信号を介してデータプロセッサ３に「ゴー」コマンドを提供する。前記複数のデータ、アドレスおよび制御値と同様に、該「ゴー」コマンドはＤＳＤＩ信号を介してデータプロセッサ３に提供される。前記「ゴー」コマンドの各々のビットはシリアルインタフェース３０を介してレジスタ３２に提供される。レジスタ３２が満杯になったとき、パケットの情報が制御バス１５を介して制御回路２０に与えられる。制御回路２０は前記「ゴー」コマンドをデコードしてＫ−バス２５を介してＣＰＵ２に前記「ゴー」信号を提供する。
【０１８７】
ＣＰＵ２が前記「ゴー」信号に応答したとき、それが実行する命令は外部開発システム７によって提供される前記複数のアドレス、データおよび制御値によって変更されたレジスタによって決定される。例えば、もしＣＰＵ２のプログラムカウンタ（図面には詳細に示されていない）が変更されれば、ＣＰＵ２は該変更されたプログラムカウンタに格納された新しい命令アドレスからプロセッサの実行を開始する。しかしながら、もしＣＰＵ２のプログラムカウンタが変更されなければ、ＣＰＵ２は通常のリセット例外処理ルーチンにより継続する。
【０１８８】
リセット例外処理ルーチンの実行の前にデータプロセッサ３のブレークポイントを行なう本発明の能力は外部開発システム７がリセット例外処理ルーチンの実行の間に前記値がオーバライトされる機会を生じることなく要求される様式でデータプロセッサ３を構成できるようにする効率的なかつ有用なメカニズムを提供する。
【０１８９】
リセット例外処理ルーチンが実行される前にブレークポイント動作を実行するこの能力はまた外部開発システム７が不揮発メモリ装置のプログラミングをバイパスできるようにする。新しいソフトウェアイメージを書き込み可能なメモリ装置にロードすることにより、前記不揮発メモリにプログラムされたコードは容易にバイパスできる。外部開発システム７は８０ビットの命令をシフト入力することによりいずれのハードウェアレジスタをもアクセスできる。この８０ビットの命令は１６ビットのオペコード、ＣＰＵ空間へマッピングされた３２ビットのアドレス、および３２ビットのオペランドデータを含む。いったん完全なコマンドが受信されると、デバッグモジュール１０はメモリ参照動作と同様の様式で動作する。Ｋ−バス２５が要求され、次にＣＰＵ２によって承認される。ＣＰＵ空間のＫ−バスサイクルがデバッグモジュール１０によって開始されかつ適切なハードウェアレジスタが書き込まれる。
【０１９０】
〈背景デバッグモード〉
データプロセッサ３が特別の背景デバッグモードで動作しているとき、ＣＰＵ２は停止してデバッグモジュール１０が全てのメモリおよびレジスタ値に完全にアクセスでき、それによって障害のある回路および誤りのあるプログラムを分離しかつ識別できるようにする。背景デバッグモードにあるときレジスタおよびメモリロケーションは観察できかつ選択的に変更できる。さらに、試験機能をイネーブルできる。外部開発システム７はそれが特別の背景デバッグモードで動作しているときにデバッグモジュール１０を介して容易に内部情報にアクセスできるが、通常の命令実行は中止され、それはＣＰＵ２がこの動作モードにおいては停止しなければならないからである。ＣＰＵ２が停止しているとき、ＰＳＴ信号は＄Ｆの値を有することに注意を要する。
【０１９１】
前記特別の背景デバッグモードの動作は数多くの発生源によって発生できる。例えば、前記＊ＢＫＰＴ信号を外部開発システム７によって外部的に発生してデータプロセッサ３が背景デバッグモードの動作に入るよう選択的にイネーブルすることができる。さらに、内部的に発生されたブレークポイント動作および破滅的例外条件もまたデータプロセッサ３を背景デバッグモードの動作に入るようイネーブルできる。
【０１９２】
いったんデータプロセッサ３が背景デバッグモードの動作に入ると、データプロセッサ３の通常の動作は停止されかつ特別の機能が外部開発システム７の制御の下にデバッグモジュール１０によって行なわれる。デバッグモジュール１０および外部開発システム７の間の全ての通信はシリアルインタフェース３０および前記ＤＳＤＩ，ＤＳＤＯおよびＤＳＣＬＫ信号の各々を介して行なわれる。
【０１９３】
前に述べたように、本発明のこの実施形態では、背景デバッグモードはＰＳＴ信号を介して外部ユーザに通知される。ＰＳＴ信号上の＄Ｆの値がプロセッサが停止しかつ背景デバッグ動作モードで動作していることを示す。背景デバッグモードへのエントリの指示は重要であり、それはこれが外部ユーザがシリアル通信チャネルを介してサポートされたデバッグコマンドを開始できるようにするための信号を提供するからである。したがって、シリアルインタフェース３０を介して提供されるシリアルポートはメモリロケーションおよび内部レジスタからデバッグ情報を取り出すために使用することができる。
【０１９４】
もし前記ＭＡＰビットが否定されれば、全てのエミュレータモードのメモリ参照は通常のものとしてスーパバイザアクセスへとマッピングされ、したがってオンチップメモリ、外部メモリおよび入力／出力装置のようなシステム資源が参照できるようになる。
【０１９５】
最後に、外部開発システム７から「ゴー」コマンドが直接的にデバッグモジュール１０にシフト入力された後に前記「ゴー」信号が肯定される。前記「ゴー」信号は何らかの事象がデータプロセッサ３を停止させた後にデータプロセッサ３の実行をリスタートさせ、背景デバッグモードの動作へのエントリを強制する。データプロセッサ３はもしＴＤＲがこの形式の方向を強制するようプログラムされていれば制御回路２０による前記「ブレークポイント」信号の肯定によって停止され得る。さらに、データプロセッサ３はデータプロセッサ３による「ホールト（Ｈａｌｔ）」命令の実行によりあるいはフォールト・オン・フォールト（ｆａｕｌｔ−ｏｎ−ｆａｕｌｔ）」条件の発生により停止され得る。
【０１９６】
【発明の効果】
要するに、本発明はデータプロセッサが、背景デバッグモードのような、特別の動作モードに入ることを要求することなく実時間トレースおよびデバッグ機能を実行できるようにするデータプロセッサおよび動作方法を提供する。さらに、本発明は実時間デバッグ機能の実行の間にマルチレベルのトリガの実行のための方法を提供する。これらの独自の特徴的機能の各々は外部ユーザにデータ処理システム５における障害を識別しかつ分離する上でより大きな機能性および柔軟性を提供する。
【０１９７】
前に述べたように、本発明は重要な、かつ今まで存在しなかった、実時間トレース機能を提供する。該実時間トレース機能は、外部開発システム７のような、外部ユーザが外部バスの形式または利用可能性を想定することなくデータプロセッサ３の内部動作をダイナミックに観察できるようにする。さらに、前記実時間トレース機能はデータ処理システム５の効率および速度に大きな影響を与えることなくそのような観察可能性をシステムの内部動作内に提供する。データ処理システム５のデバッグモジュール１０は外部ユーザに対しＤＤＡＴＡおよびＰＳＴ信号を介して内部動作情報を提供するための並列出力ポートを提供する。前記ＤＤＡＴＡ信号はオペランド値を反映するデータを提供しかつ前記ＰＳＴ信号はＣＰＵ２の実行ステータスを反映する符号化されたステータス情報を提供する。さらに、前記ＤＤＡＴＡ信号はまた捕捉された命令アドレスプログラムフローの変更を可能にし外部開発システムが外部的に見えるアドレスバスまたは外部的に見えるデータバスを必要とすることなく正確なプログラムフローをトレースできるようにする。ＤＤＡＴＡ信号上に表示される情報はＰＳＴ信号上のステータス情報と同期していることに注意を要する。したがって、外部ユーザはデータプロセッサ３の通常動作を中止することなくデータプロセッサ３におけるキーとなる変数のステータスを決定するために前記ＤＤＡＴＡおよびＰＳＴ信号をデコードすることができる。言い換えれば、データプロセッサ３は内部情報を外部開発システムに提供するために特別のデバッグまたはエミュレータモードで動作することを要求されない。
【０１９８】
さらに、本発明は実時間デバッグ機能を実行するための回路および方法を提供する。多くのデータプロセッサにおいては、特に組み込み型（ｅｍｂｅｄｄｅｄ）システムでは、データプロセッサはシステムの制約によりあるいはデータプロセッサがもはや正常なモードで動作していない場合に障害の回路またはプログラムを識別することの不能性のためデバッグ動作の間に停止できないかもしれない。本発明はデータプロセッサの実時間動作に対し最小の侵入のみによりかつデータプロセッサを停止させることなくデバッグ動作を実行する。
【０１９９】
ブレークポイントは動作は典型的にはプログラミング事象を識別するためにデバッグ動作の間に使用される。プログラミング事象に遭遇したとき、ブレークポイント信号が肯定されかつソフトウェアプログラムのステータスを決定するためデータが取り出される。トレース機能と同様に、ブレークポイント動作は外部ユーザが複数の選択されたレジスタおよびメモリロケーションの各々のステータスを確かめ、それによってデータ処理エラーが識別できるようにする。本発明はそのようなブレークポイント動作を行なうために複数のハードウェアブレークポイントレジスタ５０およびブレークポイント回路１００を提供する。本発明においては、プログラムカウンタの値またはプログラムカウンタマスク、オペランドアドレス範囲、およびデータ値またはデータマスク値に基づくブレークポイント動作は全て実施される。さらに、本発明において実施されるブレークポイント動作はまた１または２レベルトリガへと構成でき、この場合複数の制御レジスタ４０の前記「トリガ定義レジスタ（ＴＤＲ）」を介して正確なトリガ応答がプログラム可能である。
【０２００】
また、本発明はデータプロセッサ３が特別のデバッグモードで動作することを要求することなくＣＰＵ２およびデバッグモジュール１０の同時動作を可能にする。コア９とデバッグモジュール１０との間でデータ、アドレス、および制御情報を通信するためにＫ−バス２５を使用することによりデバッグモジュール１０がＣＰＵ２と同じ内部レジスタおよびメモリロケーションへのアクセスを持つことができるようになる。したがって、デバッグモジュールはＣＰＵ２がアクセスできる全てのメモリロケーションおよび内部レジスタにアクセスできる。ＣＰＵ２およびデバッグモジュール１０を同時に動作させることができる能力は外部開発システム７がプロセッサの動作に大きな影響を与えることなくデータプロセッサ３の内部レジスタおよびメモリにおける増大した可視性を持つことができるようにする。
【０２０１】
さらに、デバッグモジュール１０およびＣＰＵ２は双方とも同じ内部レジスタおよびメモリロケーションをアクセスする能力を有するから、ＣＰＵ２およびコア９の残りの部分は前記複数の制御レジスタ４０のＣＳＲにおける「デバッグレジスタへのプロセッサ書き込み禁止（ＩＰＷ）」ビットがセットされている場合に前記複数のブレークポイントレジスタ５０に格納された値を変更することはできない。前記ＣＳＲにおける前記ＩＰＷビットがセットされている場合、ＣＰＵ２によって開始されるいずれの書き込み動作も禁止される。さらに、ＩＰＷビットは外部開発システム７によって提供されるコマンドによってのみ変更することができる。複数のハードウェアブレークポイントレジスタ５０への書き込み動作を効果的にディスエーブルするためにＩＰＷビットを使用することは外部開発システム７によってプログラムされかつデータプロセッサ３における障害の回路および誤りのあるプログラムを分離しかつ識別するために必要な事象がＣＰＵ２によってオーバライトされないことを保証する。
【０２０２】
さらに、本発明は外部開発システム７がリセット動作のための例外処理ルーチンが開始される前にデータプロセッサ３においてブレークポイント動作を実行できるようにするメカニズムを提供する。前記「外部リセット」信号が肯定されたとき、複数の制御レジスタ４０の各々の内容が初期化される。前記「外部リセット」信号がその後否定されたとき、データプロセッサ３が実際のリセット例外処理ルーチンを開始する前に静止している時間のウィンドウが存在する。もし外部ブレークポイント信号、＊ＢＫＰＴ、が前記静止時間の間に外部開発システム７によって肯定されれば、本発明は何らかのハードウェアレジスタの構成を行なうことができるようにデータ処理システム５へターゲートメモリ値をダウンロードするメカニズムおよび方法を提供する。前記ターゲートメモリ値は単一の値でもよくあるいは複数の値でもよい。
【０２０３】
リセット例外処理ルーチンが実行される前にブレークポイント動作を実行するこの能力はまた外部開発システム７が不揮発メモリ装置をプログラミングすることをバイパスできるようにする。新しいソフトウェアイメージを書き込み可能なメモリ装置にロードすることにより、前記不揮発メモリ装置においてプログラムされたコードは容易にバイパスできる。外部開発システム７は８０ビットの命令をシフト入力することによりいずれのハードウェアレジスタをもアクセスできる。この８０ビットの命令は１６ビットのオペコード、ＣＰＵ空間へマッピングされた３２ビットのアドレス、および３２ビットのオペランドデータを含む。いったん完全なコマンドが受信されると、デバッグモジュール１０はメモリ参照動作と同様の様式で動作する。Ｋ−バス２５が要求され、かつ次にＣＰＵ２によって承認される。ＣＰＵ空間Ｋ−バスサイクルはデバッグモジュール１０によって開始されかつ適切なハードウェアレジスタが書き込まれる。
【０２０４】
リセット例外処理ルーチンの実行の前にデータプロセッサ３をブレークポイントする本発明の能力は外部開発システム７が前記値がリセット例外処理ルーチンの実行の間にオーバライトされる機会を生じることなく必要な様式でデータプロセッサ３を構成できるようにする効率的なかつ有用なメカニズムを提供する。
【０２０５】
ここに説明した本発明の構成は実例によってのみ与えられている。しかしながら、上に述べた機能を実行するために数多くの他の構成が存在し得る。本発明が特定の実施形態に関連して示されかつ説明されたが、当業者にはさらに他の変更および改善を成すことができるであろう。したがって、この発明は示された特定の形式に限定されるのではなくかつ添付の特許請求の範囲によってこの発明の範囲から離れることのない全ての変更をカバーすることを理解すべきである。
【図面の簡単な説明】
【図１】本発明の一実施形態に係わるデータ処理システムを示すブロック図である。
【図２】図１のデータ処理システムのデバッグモジュールの一部を示すブロック図である。
【図３】図２のデバッグモジュールのブレークポイント回路を示すブロック図である。
【図４】図２のデバッグモジュールにおける複数の制御レジスタを示すブロック図である。
【図５】図２の複数のハードウェアブレークポイントレジスタを示すブロック図である。
【図６】図５の複数のハードウェアブレークポイントレジスタの内のアドレス属性ブレークポイントレジスタを示すブロック図である。
【図７】図４の複数の制御レジスタの内のトリガ定義レジスタを示すブロック図である。
【図８】図４の複数の制御レジスタの内の構成ステータスレジスタを示すブロック図である。
【図９】図２のデバッグモジュールの複数のブレークポイント信号の出力を示す図表形式の説明図である。
【図１０】図２のデバッグモジュールの複数のプロセッサステータス信号の出力を示す図表形式の説明図である。
【図１１】本発明の一実施形態に係わるパイプラインタイミング例を示す図式的説明図である。
【図１２】図１のデータ処理システムの中央処理ユニットの一部を示すブロック図である。
【符号の説明】
２  中央処理ユニット（ＣＰＵ）
３  データプロセッサ
４  メモリ管理ユニット（ＭＭＵ／コントローラ）
５  データ処理システム
６  メモリ
７  外部開発システム
８  システムバスコントローラ
９  コア
１０  デバッグモジュール
１２，１３  スレイブモジュール
１４  マスタモジュール
１５  制御バス
２０  制御回路
２３  Ｍ−バス
２５  Ｋ−バス
３０  シリアルインタフェース
３２  レジスタ
４０  制御レジスタ
５０  ハードウェアブレークポイントレジスタ
６０  制御回路
７０  ＦＩＦＯ
８０  マルチプレクサ
１００  ブレークポイント回路
【図１】
0003846939.tif 000006
【図２】
0003846939.tif 000007
【図３】
0003846939.tif 000008
【図４】
0003846939.tif 000009
【図５】
0003846939.tif 000010
【図６】
0003846939.tif 000011
【図７】
0003846939.tif 000012
【図８】
0003846939.tif 000013
【図９】
0003846939.tif 000014
【図１０】
0003846939.tif 000015
【図１１】
0003846939.tif 000016
【図１２】
0003846939.tif 000017