(57)【特許請求の範囲】
【請求項１】
少なくとも２つの異なる命令セット動作モードを有するプロセッサ上で、複数の命令を備えるソフトウェアコードをデバッグする方法であって、
任意のコード命令の実行前に、ターゲット命令セット動作モードを受け取ることと、
コード命令を実行し、実行された各命令について、カレントプロセッサ命令セット動作モードと、前記ターゲット命令セット動作モードとを比較することと、
前記カレントプロセッサ命令セット動作モードと、前記ターゲット命令セット動作モードとが一致した場合、警告をトリガすることと、
任意のコード命令の実行前に、ターゲットアドレス範囲を受け取ることと、
実行された各命令について、カレント命令アドレスと、前記ターゲットアドレス範囲とを比較することと、
前記カレントプロセッサ命令セット動作モードが前記ターゲット命令セット動作モードと一致し、前記カレント命令アドレスが前記ターゲットアドレス範囲内である場合のみ、前記警告をトリガすることと、
を備え、前記警告は、命令実行を停止することを備える方法。
【請求項２】
請求項１に記載の方法において、
前記警告は、追跡動作を制御することを備える方法。
【請求項３】
請求項１に記載の方法において、
前記警告は、例外を引き起こすことを備える方法。
【請求項４】
請求項１に記載の方法において、
前記警告は、前記カレントプロセッサ命令セット動作モードと、前記ターゲット命令セット動作モードとの間の一致を示す信号を出力することを備える方法。
【請求項５】
請求項１に記載の方法において、
前記警告は、前記カレントプロセッサ命令セット動作モードが前記ターゲット命令セット動作モードと一致する命令のアドレスを出力することを備える方法。
【請求項６】
少なくとも第１及び第２の命令セット動作モードを有するプロセッサ上でソフトウェアを実行する方法であって、
前記プロセッサが、前記第１の命令セット動作モードから前記第２の命令セット動作モードへ切り換わるアドレスを特定することと、
前記特定に応答して警告をトリガすることと、
前記プロセッサが、前記第１の命令セット動作モードから前記第２の命令セット動作モードへ切り換わるアドレスを特定することは、前記アドレスが予め定められたアドレス範囲内にあった場合のみ、前記アドレスを特定することと、
を備え、前記警告は、命令実行を停止することを備える方法。
【請求項７】
請求項６に記載の方法において、
前記警告は、追跡動作を制御することを備える方法。
【請求項８】
請求項６に記載の方法において、
前記警告は、例外を引き起こすことを備える方法。
【請求項９】
請求項６に記載の方法において、
前記警告は、命令セット動作モードにおける変更を示す信号を出力することを備える方法。
【請求項１０】
請求項６に記載の方法において、
前記警告は、特定された前記命令のアドレスを出力することを備える方法。
【請求項１１】
各々が異なる命令セット動作モードにある２つ又はそれ以上の命令セット符号化に従って命令を実行するように動作するプロセッサであって、
カレント命令セット動作モードインジケータと、
ターゲット命令セット動作モードインジケータを格納するように動作するデータ記憶場所と、
カレント命令セット動作モードに従って命令を実行するように動作する実行ユニットと、
各命令の実行中、前記カレント命令セット動作モードと前記ターゲット命令セット動作モードとを比較し、前記カレント命令セット動作モードが前記ターゲット命令セット動作モードと一致する場合、インジケーションを出力するように動作する比較回路と、
ターゲットアドレス範囲を格納するように動作するデータ記憶場所と、
を備え、
前記比較回路は、前記カレント命令セット動作モードが前記ターゲット命令セット動作モードと一致し、かつ現在実行されている命令のアドレスが前記ターゲットアドレス範囲内にある場合のみ、インジケーションを出力するように動作し、
前記インジケーションは、命令実行を停止するように動作する信号を備えるプロセッサ。
【請求項１２】
請求項１１に記載のプロセッサにおいて、
前記インジケーションは、追跡動作を制御するように動作する信号を備えるプロセッサ。
【請求項１３】
請求項１１記載のプロセッサにおいて、
前記インジケーションは、例外を引き起こすように動作する信号を備えるプロセッサ。
【請求項１４】
請求項１１に記載のプロセッサにおいて、
前記インジケーションは、前記カレント命令セット動作モードが、前記ターゲット命令セット動作モードと一致することを示す信号を備えるプロセッサ。
【請求項１５】
請求項１１に記載のプロセッサにおいて、
前記インジケーションは、前記カレント命令セット動作モードと前記ターゲット命令セット動作モードとの間で一致が検出された場合、実行中の命令のアドレスを備えるプロセッサ。
【請求項１６】
２つ又はそれ以上の命令セット符号化の各々を、異なる命令セット動作モードで実行するように動作するプロセッサであって、
前記命令セット動作モードにおける変更を検出し、前記検出に応答して、前記命令セット動作モードの変更と、前記変更が起こった命令アドレスとのインジケーションを出力するように動作する比較回路と、
を備え、
前記比較回路は、前記変更が起こった命令アドレスが、予め定められたアドレス範囲内にある場合のみ、前記命令セット動作モードにおける変更を検出し、
前記インジケーションは、命令実行を停止するように動作する信号を備えるプロセッサ。
【請求項１７】
請求項１６に記載のプロセッサにおいて、
前記インジケーションは、追跡動作を制御するように動作する信号を備えるプロセッサ。
【請求項１８】
請求項１６に記載のプロセッサにおいて、
前記インジケーションは、例外を引き起こすように動作する信号を備えるプロセッサ。
【請求項１９】
請求項１６に記載のプロセッサにおいて、
前記インジケーションは、命令セット動作モードにおける変更を示す信号を備えるプロセッサ。
【請求項２０】
請求項１６に記載のプロセッサにおいて、
前記インジケーションは、前記命令セット動作モード変更アドレスを備えるプロセッサ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般にプロセッサ分野に関し、特に、プロセッサ命令セット動作モードの考慮を含むデバッグ回路を経由して、プロセッサ上でコードをデバッグするシステム及び方法に関する。
【背景技術】
【０００２】
昨今のプロセッサは、極めて複雑なシステムである。大抵の最近のプロセッサは、各々が多くの実行ステップを有する連続した命令が実行中オーバラップする、パイプラインされたアーキテクチャを用いる。「スーパースカラ」プロセッサとして知られている多くのプロセッサは、並列命令実行のための２つ又はそれ以上の別々のパイプラインを含む。分岐命令によるパイプライン内での機能停止を回避するために、ほとんどのプロセッサが、分岐が予測され成立すると命令の投機的なフェッチ及び実行を行う様々な形式の分岐予測を用いる。性能を改善するために、昨今の多くのプロセッサは、論理レジスタアドレスを、レジスタ再命名として知られている、対応する物理メモリ記憶レジスタから分離する。限定されず高速なメモリの錯覚をプログラムに提供するために、多くのプロセッサは、仮想アドレス空間内でコードを実行し、データがメモリ階層（例えばレジスタ、キャッシュ、主要メモリ）を横断すると、アドレスを１つ又は複数の物理アドレス空間に変換する。このような複雑さによって、現在のプロセッサ内でのコードの実行は、正確にトラック及び確認することが非常に難しい。特に、異常をデバッグすることが非常に難しくなりうる。
【０００３】
加えて、昨今のプロセッサで実行するソフトウェアは、それ自身が極めて複雑である。縮小命令セットコンピュータ（ＲＩＳＣ）プロセッサアーキテクチャの出現によって、コンピュータの計算上の複雑さ及び論理的な複雑さのほとんどは、プロセッサ命令から最適化コンパイラへ移った。すなわち、コンパイラは、各々が特定の機能のために最適化された、プロセッサ命令の比較的小さなセットから複雑な動作をビルドする。その結果、例えば論理演算、算術演算、ロード／格納動作、及び分岐動作を含む、与えられた計算タスクのためのより冗長で複雑な命令シーケンスをもたらす。このような複雑なコードは、エラーが異常なプログラム動作を招いた場合、デバッグすることが難しくなりうる。
【０００４】
複雑なプロセッサで実行している複雑なコードをデバッグするという難題なタスクにおいて支援するために、多くのプロセッサ内にデバッグツールが備えられている。これらは、特定の命令及び／又はデータパターンを識別するアドレス比較器及びデータ比較器を備えることができる。デバッグツールは、アドレス範囲比較器を更に含むことができ、それによってデバッギング又はトレーシングは、予め定められたコードセグメントに限定されることができる。その他のデバッグツールは、ブレークポイントを指定し、追跡をトリガする条件の指定において柔軟性を提供するために、カウンタ、シーケンサ等を含むことができる。追跡情報は、例えば専用バス経由でオフチップへ提供されることができる。あるいは追跡情報は、専用オンチップバッファ内へ格納することができる。ブレークポイントは、例えば論理解析器をアーム及び／又はトリガしたり、ＬＥＤを点灯するような１つ又は複数の外部信号をトリガすることができる。又はブレークポイントは、例外を引き起こし、コード実行をデバッグルーチンへ分岐することができる。あるいはブレークポイントは、単に実行を停止し、様々なレジスタ及びキャッシュのコンテンツが検査されることを可能とすることができる。通常のプロセッサ実行中には用いられないこれらデバッグツールは、プロセッサ性能及び電力消費への影響を最小化するような方法で、プロセッサ回路内に設計される。
【０００５】
プログラマは、関連する命令セット符号化に従って命令を実行する前に、適切な命令セット動作モードをソフトウェア内に明確に設定することができる。しかし誤ったソフトウェアは時に、実際にはプロセッサが他のいくつかの命令セット動作モードにある時に、１つの命令セット動作モードで実行中であるように意図された特定の命令アドレスへ分岐することがある。このような場合、プロセッサは、不適切な命令セット復号を用いるアドレスの命令を実行するように試み、間違った結果を招くことがある。
【０００６】
例えば、ＡＲＭプロセッサアーキテクチャのいくつかのバージョンは、３２ビットＡＲＭモードと１６ビットＴｈｕｍｂモードとの少なくとも２つの命令セット動作モードを含む。表１は、ＡＲＭ命令のコード断片のリストである。
【表１】
0005546859.tif 000002
【０００７】
表２は、Ｔｈｕｍｂモードにおいて解釈される同じコードのリストである。
【表２】
0005546859.tif 000003
【０００８】
特に、９６Ｆ２、９６ＦＡ、及び９６ＦＥの分岐命令に注目されたい。表１のＡＲＭコードがエラーによって表２のＴｈｕｍｂモードで解釈された時点を確定し、エラーをデバッグすることが、不規則な分岐のために難しくなりうる。従来技術のデバッグ回路は、ブレークポイントのトリガ、追跡の開始等を行う論理への入力としてプロセッサ命令セット動作モードを含まないために、この難しさが発生する。
【０００９】
例えばスーパーバイザモード及びユーザモード、又はリアルモード及びプロテクトモードのような２つ又はそれ以上の動作「モード」をサポートする昨今のプロセッサは、例外を引き起こすことと、モード切換えルーチンへ分岐することとによって、モード間で切り換わる。この動作は、ブレークポイントを設定すること及びモード切換えルーチンの命令アドレスで追跡を開始することによって、従来技術のデバッグツール及びソフトウェアを用いて容易に検出される。例外を引き起こさずに命令セット動作モードを切り換えるプロセッサは、ブレークポイントのトリガ、追跡の開始等における要件として、プロセッサ命令セット動作モードを含まない先行技術のデバッグツールを用いて診断することが難しいコード挙動の１つの例である。
【発明の概要】
【００１０】
１つ又は複数の実施形態によると、２つ又はそれ以上の命令セットを実行するように動作するプロセッサ内のデバッグ回路は、プロセッサが１つの命令セット動作モードから異なる命令セット動作モードへ切り換わるアドレスを特定し、モード切換えの警告又はインジケーションを出力する。警告又はインジケーションは、実行を停止するブレークポイント信号、及び／又は、プロセッサの外部信号として出力される信号を備えることができる。プロセッサが命令セット動作モードを切り換える命令アドレスが更に出力されうる。あるいは、警告又はインジケーションは、追跡動作の開始又は停止すること、例外を引き起こすこと、又はその他任意の周知のデバッガ機能を備えることができる。
【００１１】
１つの実施形態は、少なくとも２つの異なる命令セット動作モードを有するプロセッサ上で、複数の命令を備えるソフトウェアコードをデバッグする方法に関する。任意のコード命令の実行前に、ターゲット命令セット動作モードが受け取られる。コード命令が実行され、実行された各命令について、カレントプロセッサ命令セット動作モードとターゲット命令セット動作モードとが比較される。もしカレントプロセッサ命令セット動作モードが、ターゲット命令セット動作モードと一致すれば、警告がトリガされる。
【００１２】
別の実施形態は、少なくとも第１及び第２の命令セット動作モードを有するプロセッサ上で、ソフトウェアを実行する方法に関する。プロセッサが、第１の命令セット動作モードから第２の命令セット動作モードへ切り換わるアドレスが特定され、インジケーションに応答して警告がトリガされる。
【００１３】
また別の実施形態は、各々が異なる命令セット動作モードにある２つ又はそれ以上の命令セット符号化に従って命令を実行するように動作するプロセッサに関する。プロセッサは、カレント命令セット動作モードインジケータと、ターゲット命令セット動作モードインジケータを格納するように動作するデータ記憶場所とを含む。プロセッサはまた、カレント命令セット動作モードに従って命令を実行するように動作する実行ユニットと、各命令の実行中、カレント命令セット動作モードとターゲット命令セット動作モードとを比較し、もしカレント命令セット動作モードがターゲット命令セット動作モードに一致すれば、インジケーションを出力するように動作する比較回路とを含む。
【００１４】
また別の実施形態は、各々が異なる命令セット動作モードにある２つ又はそれ以上の命令セット符号化を実行するように動作するプロセッサに関する。プロセッサは、命令セット動作モードにおける変更を検出し、検出に応答して、命令セット動作モード変更のインジケーションと、変更が発生する命令アドレスとを出力するように動作する比較回路を備える。
【図面の簡単な説明】
【００１５】
【図１】図１は、プロセッサの機能ブロック図である。
【図２】図２は、デバッグ回路を含むプロセッサパイプラインの機能ブロック図である。
【図３】図３は、診断／デバッグ処理のフロー図である。
【発明を実施する形態】
【００１６】
図１は、プロセッサ１０の機能ブロック図を示す。プロセッサ１０は、制御論理１４に従って、命令実行パイプライン１２内で命令を実行する。制御論理１４は、プログラムカウンタ（ＰＣ）１５を保持し、例えばカレント命令セット動作モード、算術演算及び論理比較の結果（ゼロ、桁上げ、イコール、イコールでない）に関する情報等を示すために、１つ又は複数の状態レジスタ１６内のビットを設定及び消去する。いくつかの実施形態において、パイプライン１２は、複数の並行するパイプラインを有するスーパースカラ設計であることができる。パイプライン１２は、実行ユニットとも称されうる。汎用レジスタ（ＧＰＲ）ファイル２０は、パイプライン１２によってアクセス可能であり、メモリ階層の最上層を備えるレジスタを提供する。
【００１７】
異なる命令セット動作モードで、少なくとも２つの命令セットからの命令を実行するプロセッサ１０は更に、各命令を実行すると、少なくとも予め定められたターゲット命令セット動作モードと、カレント命令セット動作モードとを比較し、２つの間の一致を示すインジケーションを提供するように動作するデバッグ回路１８を含む。デバッグ回路１８は、以下でより詳細に説明される。
【００１８】
パイプライン１２は、命令側変換索引バッファ（ＩＴＬＢ）２８によって管理されるメモリアドレス変換及び許可を用いて、命令キャッシュ（Iキャッシュ）２６から命令をフェッチする。データは、主要変換索引バッファ（ＴＬＢ）３２によって管理されるメモリアドレス変換及び許可を用いて、データキャッシュ（Ｄキャッシュ）３０からアクセスされる。様々な実施形態において、ＩＴＬＢ２８は、ＴＬＢ３２の一部のコピーを備えることができる。あるいは、ＩＴＬＢ２８とＴＬＢ３２とは統合することができる。同様に、プロセッサ１０の様々な実施形態において、Ｉキャッシュ２６とＤキャッシュ３０とは、統合又は一体化することができる。Ｉキャッシュ２６及び／又はＤキャッシュ３０内のミスは、メモリインタフェース３４による主要（オフチップ）メモリ３８、４０へのアクセスをもたらす。メモリインタフェース３４は、１つ又は複数のメモリデバイス３８、４０への共有バスを実現するバス相互接続４２へのマスタ入力であることができる。追加のマスタデバイス（図示せず）が、バス相互接続４２へ更に接続することができる。
【００１９】
プロセッサ１０は、周辺バスにおけるマスタデバイスであることができる、入力／出力（Ｉ／Ｏ）インタフェース４４を含むことができる。Ｉ／Ｏインタフェース４４は、その周辺デバイスを介して様々な周辺デバイス４８、５０へアクセスすることができる。当業者は、プロセッサ１０の多くの変形例が可能であることを理解するであろう。例えばプロセッサ１０は、Ｉキャッシュ２６及びＤキャッシュ３０の何れか又は両方のための第２レベル（Ｌ２）キャッシュを含むことができる。加えて、プロセッサ１０内に示す機能ブロックのうちの１つ又は複数は、特定の実施形態から省略することができる。例えばＪＴＡＧコントローラ、命令プレデコーダ、分岐ターゲットアドレスキャッシュ等のような、プロセッサ１０内に存在しうる他の機能ブロックは、本発明の説明に密接な関係はないので明確化のために省略する。
【００２０】
図２は、デバッグ回路１８の１つの実施形態の機能ブロック図を示す。デバッグ回路１８は、ターゲット命令セット動作モードレジスタ５２と、アドレス範囲開始アドレスレジスタ５４と、アドレス範囲終了アドレスレジスタ５６とを含む。レジスタ５２、５４、５６は、診断／デバッグ動作の前に、診断ソフトウェアを経由して、プログラマによってロードされる。ターゲット命令セット動作モードレジスタ５２へ書き込まれた値は、各命令の実行中、ブレークポイント、追跡機能、又はその他の警告をトリガするために、カレントプロセッサ命令セット動作モードと比較される。開始アドレスレジスタ５４及び終了アドレスレジスタ５６の値はそれぞれ、ターゲットアドレス範囲の始まりと終わりである。このターゲットアドレス範囲にわたって、デバッグ回路１８は、カレント命令セット動作モードとターゲット命令セット動作モードとの間の一致をモニタする。
【００２１】
当業者が容易に理解するであろうように、デバッグ回路１８は、広範囲の様々な条件でブレークポイント、追跡等をトリガすることを可能とする追加のカスタマイズ可能なパラメータ及び追加の機能ブロックを含むことができる。これらは、明確化のために図２からは省略されたが、一般に、当該技術において周知である全てのデバッグ回路パラメータ及び機能を含むことができる。
【００２２】
診断／デバッグ実行前に、プログラマは、ターゲットアドレス領域を定めるために、開始アドレスレジスタ５４及び終了アドレスレジスタ５６をロードする。ターゲットアドレス領域は、単一のアドレスから、試験されているコードのアドレス範囲全体までであることができる。他の実施形態において、複数のターゲットアドレス範囲を定めるために、多くの開始アドレスレジスタ及び終了アドレスレジスタが提供されうる。プログラマは更に、ターゲット命令セット動作モードレジスタ５２をロードする。例えば、ＡＲＭモードでコード全体を実行するＡＲＭプロセッサの場合、例えばもしプロセッサ１０が、Ｔｈｕｍｂモードのレジスタ５４、５６によって定められたアドレス範囲内の命令で実行すれば、プログラマは、Ｔｈｕｍｂモードを示す値をレジスタ５２にロードし、デバッグ回路１８に実行を停止させるブレークポイントを設定することができる。
【００２３】
診断／デバッグ動作中、ターゲット命令セット動作モードレジスタ５２内に格納された値は、例えばＡＮＤゲート５８のような比較論理において、プロセッサ１０のカレント命令セット動作モードを示す状態レジスタビットと比較される。例えば、ＡＲＭプロセッサ１０では、カレントプログラム状態レジスタ（ＣＰＳＲ）１６のビット５をモニタすることができる。比較論理５８の出力６０は、プロセッサ１０のカレント命令セット動作モードが、ターゲット命令セット動作モードレジスタ５２によって示された命令セット動作モードと一致した場合のみ、アサートされるであろう。
【００２４】
プロセッサ１０が、２つより多くの命令セットからの命令を異なる命令セット動作モードで実行する実施形態において、ターゲット命令セット動作モードレジスタ５２と、ＣＰＳＲ（又は他の状態レジスタ）１６のモードインジケータビットとは、マルチビット値を備え、比較論理５８は、例えば復号器のような追加の回路を含むことができる。様々な実施形態において、ＣＰＳＲ１６の代わりに、例えば命令復号論理の出力のような、カレント命令セット動作モードの他のインジケーションを用いることができる。
【００２５】
同時に、ＰＣ１５のカレント値は、アドレス比較論理６８で、アドレス範囲レジスタ５４、５６と比較される。アドレス比較論理６８の出力７０は、ＰＣ１５のカレント値がターゲットアドレス範囲内にある場合常にアサートされる。様々な実施形態において、「カレント」命令アドレスのインジケーションは、要求や所望に応じて、ＰＣ１５から変化することができる。例えば、アドレス比較回路６８は、パイプライン１２内の復号ステージ、実行ステージ、又はその他任意のパイプラインステージ内の命令のアドレスを比較することができる。加えて、実行を完遂するために、例えばパイプライン１２内の最後の命令のアドレスのような、より動的なアドレスを用いることもできる。
【００２６】
ターゲットアドレス範囲内で発生した、カレント命令セット動作モードとターゲット命令セット動作モードとの間のデイ一致を示す出力２０を生成するために、アドレス比較論理６８の出力７０は、ＡＮＤゲート７２で、命令セット動作モードインジケータ比較論理５８の出力６０とＡＮＤされる。１つの実施形態において、出力２０は、プロセッサへの出力として提供される（図１参照）。この出力２０は、論理解析器をアーム及び／又はトリガしたり、ＬＥＤを点灯したり、あるいはその他何らかの動作又は警告をトリガすることができる。１つの実施形態において、図１に示すように、命令セット動作モード一致インジケータ出力２０は、プロセッサ１０の実行を停止するための、コントローラ１４への入力を備えることができる。
【００２７】
１つの実施形態において、命令セット動作モード一致インジケータ出力２０は、追跡情報がプロセッサ１０の出力ピンに向けられることによって、あるいはオンチップ追跡バッファ（図示せず）内に格納されることによって、命令追跡動作を初期化又は終了することができる。１つの実施形態において、図２に示すように、命令セット動作モード一致インジケータ出力２０は、命令セット動作モード一致アドレスレジスタ７４をトリガし、ＰＣ１５の値を取得することができる。それによって、一致することができる命令のアドレスが、カレント命令セット動作モードとターゲット命令セット動作モードとの間で検出される。これは、１つの命令セット動作モードから別の命令セット動作モードへの変更の検出における特定の値となりうる。このレジスタ７４の出力７６は、外部検査のために、プロセッサ１０のピンにルーティングされることができる。
【００２８】
１つの実施形態において、命令セット動作モード一致インジケータ出力２０は、例外を引き起こし、コード実行を予め定められたルーチンへ分岐する。この命令セットモード一致ルーチンは、例えば、命令セット動作モード一致アドレスレジスタ７４を読み出すことができる。一般に、命令セット動作モード一致インジケータ出力２０は、要求や所望に応じて、任意の周知のデバッガ動作をトリガすることができる。
【００２９】
図３は、本発明の１つ又は複数の実施形態に従って、コードをデバッグする方法を示す。この方法はブロック７８から始まり、プログラマは、デバッグ回路レジスタを初期化する（ブロック８０）。これは例えば、ターゲット命令セット動作モードレジスタ５２をロードすることと、開始アドレスレジスタ５４及び終了アドレスレジスタ５６をロードすることによってターゲットアドレス範囲を設定することとを備えることができる。要求や所望に応じて、追加のデバッグ回路レジスタ（図示せず）を初期化することもできる。
【００３０】
プログラマはその後、デバッグされるべきコードの実行を開始し（ブロック８２）、連続してコードシーケンスで、次の命令をフェッチ及び実行する（ブロック８４）。アドレスに関わらず、もしプロセッサ１０のカレント命令セット動作モードが、ターゲット命令セット動作モードレジスタ５２内のプログラマによって設定されたモードと一致しなければ（ブロック８６）、ブロックされるべきコードの末尾（ブロック８８）まで、次の命令がフェッチされ実行される（ブロック８４）が、その場合、ブロック９０でこの方法は終了する。
【００３１】
命令の実行中（ブロック８４）、もし命令アドレスが予め定められたアドレス範囲内であって、かつカレント命令セット動作モードが、ターゲット命令セット動作モードレジスタ５２内のプログラマによって設定されたモードと一致すれば（ブロック８６）、デバッグ回路は出力２０をアサートし、プログラマによって指定されたように、任意の数の動作をすることができる。
【００３２】
例えば、デバッグ回路出力２０は、プロセッサ１０に、例外を選択させ、コード実行を命令セット動作モード一致ルーチンへ分岐させることができる（ブロック９２）。デバッグ回路出力２０は、パイプラインコントローラ１４に実行を停止させることができ（ブロック９４）、プログラマが、様々なレジスタ、キャッシュライン等のコンテンツを検査することを可能とする。デバッグ回路１８は、論理解析器のアーム又はトリガ、ＬＥＤの点灯等のために用いられうる出力２０を外部でアサートすることができる（ブロック９６）。デバッグ回路１８は、外部検査のために、命令セット動作モード一致アドレスを更に出力することができる（ブロック９８）。デバッグ回路１８は、追跡動作を開始又は停止することができる（ブロック１００）。代替例として示すが、デバッグ回路１８は、与えられた実施形態において、２つ又はそれ以上のブロック９２乃至９６を実行することができる。一般に、デバッグ回路１８は、カレント命令セット動作モードとターゲット命令セット動作モードとの間の一致を検出させ、プロセッサ１０でコードをデバッグするために有益な、当該技術において周知の任意の動作をすることができる。
【００３３】
本明細書で用いられるように、「命令セット」という用語は、それによって命令データ（例えばＩキャッシュラインのコンテンツ）が、プロセッサ１０によって実行可能命令として解釈される符号化のセットを称する。「命令セット動作モード」という用語は、命令データが特定の命令セット符号化に従って解釈される、プロセッサ１０の動作の識別可能モードを称する。特に、「命令セット動作モード」は、許可（例えばスーパーバイザ対ユーザモード）、メモリアドレッシング（例えばリアル対プロテクトモード）等に関する周知のプロセッサ動作「モード」とは区別される。
【００３４】
本発明は、本明細書で、特定の機能、局面、及び実施形態に関して説明されたが、多くの変形例、改良例、及びその他の実施形態が、本発明の広い範囲内で可能であることが明白であろう。従って、全ての変形例、改良例、及び実施形態は、本発明の範囲内であると見なされるべきである。上記の実施形態はゆえに、全ての局面において限定的ではなく例示的であると解釈され、添付の特許請求の範囲の意味及び均等物の範囲内で発生する変更は、特許請求の範囲に包括されることが意図されている。
【図１】
0005546859.tif 000004
【図２】
0005546859.tif 000005
【図３】
0005546859.tif 000006