(57)【要約】プロセッサ（１２）実現が、アドレス可能メモリ内の各アドレスに基づきデバッグ命令インスタンスの実行モードの選択をサポートする。命令の幾つかのインスタンスはデバッグセマンティクスで実行することで、他のインスタンスはノーオペレーション（ＮＯＰ）セマンティクスで実行することで抑圧するように、デバッグ命令を実行するための魅力的な機構を提供する。動作実行セマンティクスは、特定デバッグ命令インスタンスが駐在するメモリページ（４５８、４５９）の属性（４１１）に基づく。アドレス空間の部分（５６１、５６２）は区切られてよく（例えば境界レジスタに格納された値を使用）、特定デバッグ命令インスタンスのアドレスを、区切られた部分と比較することで、好適な実行セマンティクスを選択できる。特定デバッグ命令インスタンスに対する好適な実行セマンティクスの選択に、両タイプの評価が使用できる。
2011514606.tif 000002
【特許請求の範囲】
【請求項１】
同一のデバッグ命令のデバッグ命令インスタンスである少なくとも第１インスタンスと第２インスタンスを有するコードをプロセッサ上で実行する実行ステップと；
前記プロセッサによってアドレス可能なメモリ内の前記デバッグ命令インスタンスのそれぞれのアドレスに基づき、個々の前記デバッグ命令インスタンスのための実行モードを選択する選択ステップと
を有するデバッグ方法、
それぞれの前記アドレスに基づき、前記第１インスタンスがノーオペレーションセマンティクスで実行し、前記第２インスタンスがデバッグ関連セマンティクスで実行することを特徴とする、デバッグ方法。
【請求項２】
前記選択ステップは更に、
前記デバッグ命令の特定のインスタンスが駐在するメモリページのデバッグ属性をチェックするステップと；
少なくとも一部は前記デバッグ属性に基づき、前記ノーオペレーションセマンティクスと前記デバッグ関連セマンティクスのうちのいずれか一方を選択するステップと
を有する、
請求項１記載のデバッグ方法。
【請求項３】
前記デバッグ方法は更に、
前記デバッグ属性を、仮想ページから物理ページへのマッピング情報に関連して維持するステップを有する、
請求項２記載のデバッグ方法。
【請求項４】
前記選択ステップは更に、
前記デバッグ命令の特定のインスタンスのためのメモリアドレスを、前記メモリの１個以上の各部分を区切る１個以上の記憶域の内容と比較するステップと；
前記メモリアドレスと区切られた部分とうちの少なくとも一部の一致に基づき、前記ノーオペレーションセマンティクスと前記デバッグ関連セマンティクスのうちのいずれか一方を選択するステップと
を有する、
請求項１記載のデバッグ方法。
【請求項５】
前記選択ステップは更に、
ページ属性チェックと、前記メモリの区切られた部分に対する比較との両方を行うステップと；
前記ページ属性チェックと前記比較の構成に基づき、前記ノーオペレーションセマンティクスと前記デバッグ関連セマンティクスのうちのいずれか一方を選択するステップと
を有する、
請求項１記載のデバッグ方法。
【請求項６】
前記選択ステップは、さもなければ前記デバッグ関連セマンティクスを無効にする、
請求項１記載のデバッグ方法。
【請求項７】
前記選択ステップは、さもなければ潜在している前記デバッグ関連セマンティクスを有効にする、
請求項１記載のデバッグ方法。
【請求項８】
前記デバッグ方法は更に、
前記アドレスに基づく前記ノーオペレーションセマンティクスの選択に従って前記第１インスタンスを復号することによって、ノーオペレーション命令を生成するステップと；
前記ノーオペレーション命令を実行するステップと
を有する、
請求項１記載のデバッグ方法。
【請求項９】
前記デバッグ命令は、デバッグ通知停止命令、ブレークポイントまたはウォッチポイント命令、デバッグ例外のうち１個以上の機能を有するか、または実現する１組の命令から選択される、
請求項１記載のデバッグ方法。
【請求項１０】
プロセッサのデバッグ挙動を制御する制御方法であって、
駐在しているデバッグ型命令のインスタンスが前記プロセッサによって異なるセマンティクスで実行される、メモリの第１アドレスと第２アドレスで区切られた部分を特定するステップと；
前記部分と一致する機械可読の符号化を、前記プロセッサにアクセス可能な記憶装置に伝送するステップと
を有し、
前記プロセッサの論理は、伝送された前記部分と前記デバッグ型命令の実行されたインスタンスのメモリ内のそれぞれのアドレスとの比較に基づき、セマンティクスの実行に対して選択的であることを特徴とする制御方法。
【請求項１１】
前記伝送は、外部デバッグインターフェース経由か、またはプロセッサ上で実行可能なソフトウェアに基づく、
請求項１０記載の制御方法。
【請求項１２】
前記制御方法は更に、プロセッサ上でコードを実行するステップを有し、
前記コードは、前記デバッグ型命令の少なくとも第１インスタンスと第２インスタンスを有し、
前記部分と、前記第１インスタンスのアドレスと、前記第２インスタンスのアドレスとに基づき、前記第１インスタンスは、ノーオペレーションセマンティクスで実行し、前記第２インスタンスは、デバッグ関連セマンティクスで実行する、
請求項１０記載の制御方法。
【請求項１３】
前記論理は、１組のメモリページ関連デバッグ属性と、前記プロセッサの１個以上のアドレス区切りデバッグレジスタとのうちの少なくとも１個に応答する、
請求項１０記載の制御方法。
【請求項１４】
デバッグ型命令を有する命令セットを実現するプロセッサと；
前記プロセッサによってアドレス可能なメモリ内のインスタンスのそれぞれのアドレスに基づき前記デバッグ型命令のそれぞれのインスタンスに対する実行モードをそれぞれ選択するプロセッサの論理と
を備える、デバッグ装置。
【請求項１５】
前記デバッグ装置は更に、
ページマッピング情報に従ってメモリページに対するデバッグ属性を維持するメモリ管理ユニットを備え、
実行モードに対して選択的な前記論理は、前記デバッグ型命令の特定のインスタンスに関して、特定の前記インスタンスが駐在する前記メモリページに対するデバッグ属性に応答する、
請求項１４記載のデバッグ装置。
【請求項１６】
前記デバッグ装置は更に、プロセッサの１個以上の機械可読の記憶域を備え、
前記記憶域は、書き込み可能であり、前記メモリの１個以上のアドレスで区切られた部分をそれぞれ特定し、
実行モードに対して選択的な前記論理は、デバッグ型命令の特定のインスタンスに関して、前記記憶域の内容と、特定の前記インスタンスが駐在しているメモリアドレスとの比較に応答する、
請求項１４記載のデバッグ装置。
【請求項１７】
それぞれのアドレスに基づき、前記デバッグ型命令の第１インスタンスは、ノーオペレーションセマンティクスで実行し、
それぞれのアドレスに基づき、前記デバッグ型命令の第２インスタンスは、デバッグ関連セマンティクスで実行する、
請求項１４記載のデバッグ装置。
【請求項１８】
前記デバッグ装置は更に、
ページマッピング情報に関連して、メモリページに対するデバッグ属性を維持するメモリ管理ユニットと；
書込み可能で前記メモリの１個以上のアドレスで区切られた部分を特定するプロセッサの１個以上の機械可読の記憶域と
を備え、
実行モードに対して選択的な前記論理は、前記デバッグ型命令の特定のインスタンスと前記メモリ内のアドレスとに関して、関連する前記デバッグ属性と前記部分との両方の構成に応答する、
請求項１４記載のデバッグ装置。
【請求項１９】
前記構成は、ページ関連の前記デバッグ属性と、前記部分のうちの１個とのいずれもデバッグ関連セマンティクスに対して選択的であることを特徴とする、
請求項１８記載のデバッグ装置。
【請求項２０】
前記構成は、ページ関連の前記デバッグ属性と、前記部分のうちの１個とのいずれか一方がデバッグ関連セマンティクスに対して選択的であることを特徴とする、
請求項１８記載のデバッグ装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般的にはデータ処理システム、さらに具体的には、データ処理システムにおけるデバッグ命令の使用に関する。
【背景技術】
【０００２】
デバッグ命令は通常、ソフトウェア開発段階でデバッグ動作が行われるようにするために使用される。いったんソフトウェアが開発されてデバッグ命令でチェックされたら、これらのデバッグ命令を取り除いてソフトウェアアプリケーション中に望ましくない例外を引き起こさないようにする。しかしながらこれらのデバッグ命令を取り除くと、システムの実行特性が変化し、特にリアルタイムアプリケーションで問題を生じることがある。
【０００３】
［選好実施形態の概要］
デバッグ命令は、デバッグ停止モードへの条件付きエントリを容易にし、またはソフトウェアデバッグ例外（例えばデバッグ割込）の生成を容易にするために、種々のプロセッサの実行においてサポートされる。いずれの場合も、そのようなデバッグ命令を、動作が評価、試験またはデバッグされているコードに入れることによって、開発者は、ソフトウェア制御のもとで現在の実行環境の状態に基づきデバッグ動作を開始できる。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】米国特許出願第１１／８７１８４７号明細書
【発明の概要】
【発明が解決しようとする課題】
【０００５】
いったんソフトウェア開発とソフトウェア検査のうちの少なくとも１個が完了すると、生成コード中に残っているこれらのデバッグ命令は、除去または抑圧（ｓｕｐｐｒｅｓｓ）されないと望ましくない例外や望ましくないデバッグ挙動を引き起こすことがある。残念ながら、デバッグ命令を除去するとシステムの実行特性が変化する傾向がある。すなわち、デバッグ命令が除去されると、分岐ターゲットと、ページ境界と、その他の命令関係とが変化することがあるので、コードイメージそのものが変化する。これらの変化はリアルタイムコードにおいて特に問題となり得る。
【０００６】
その結果として、少なくとも選択されたデバッグ命令の動作が抑圧されている間、製造コードイメージが実質的に変化しないようにする技術が望まれる。あるソフトウェアシステムの連続的な生成と、更に新しく開発されるシステムと、既存のシステムの新しい展開（ｄｅｐｌｏｙｍｅｎｔ）とは、このようなデバッグ命令が残っているコードを再利用することがあるので、デバッグ命令が特定のデバッグ命令インスタンス（例えば安定コード中に駐在するもの）に影響し、それ以外には影響しないことが望ましい。
【課題を解決するための手段】
【０００７】
デバッグ命令インスタンスに対する実行モードの選択をアドレス可能なメモリ内のそれぞれのアドレスに基づきサポートするプロセッサの実現は、命令のあるインスタンスはデバッグセマンティクスで動作することによって、他のインスタンスはノーオペレーション（ＮＯＰ）セマンティクスで実行することによって抑圧するように、デバッグ命令を実行するための魅力的な機構を提供できることが発見された。或る実施形態では、動作する実行セマンティクス（ｓｅｍａｎｔｉｃｓ）の選択は、特定のデバッグ命令インスタンスが駐在するメモリページの属性に基づいてよい。或る実施形態では、アドレス空間の部分が区切られ（例えば境界レジスタに格納された値を使用）、特定のデバッグ命令インスタンスのアドレスを区切られた部分と比較することによって好適な実行セマンティクスを選択できる。或る実施形態では、特定のデバッグ命令インスタンスに対する好適な実行セマンティクスを選択するために両タイプの評価を使用できる。
【０００８】
具体的に説明するために、特定のプロセッサ設計と、メモリ組織と、デバッグ型命令と、デバッグ環境とに焦点を当てる。例えば、或る実施形態においてデバッグ通知停止（ＤＮＨ）命令を実現するプロセッサは、インスタンスが駐在するメモリアドレスまたは領域に基づき、デバッグ通知停止命令のインスタンスに対して選択的な実行セマンティクスを提供するように適合される。或る実施形態では、メモリ管理ユニットがメモリページに従って命令インスタンスに注釈を付け（例えばメモリからフェッチされるとき）、これらの注釈に基づきセグメント一致または領域一致（または不一致）基準と、実行セマンティクスとは、選択される。或る実施形態では、ノーオペレーションセマンティクスが選択されないデバッグ命令の実行のために通常供給される信号または命令コードの代わりに、復号論理を使用することによってプロセッサによって実現されるノーオペレーション型命令に対して信号または命令コードを供給する。もちろん、ここに記載する技術は、他のデバッグ命令と他のプロセッサ設計でも広く応用できるが、例示した文脈に基づき当業者によって理解されるであろう。
【０００９】
従って、前述のことを考慮し、かつ、本発明の実施形態に使用されてよいデバッグ型命令と、基本的なプロセッサまたはシステムアーキテクチャと、アドレス一致基準と、好適な実行セマンティクスとを選択するメカニズムの範囲を制限することなく、以下に特定の実施形態について説明する。
【００１０】
添付の図面を参照することによって、本発明をより良く理解し、その多数の目的と、特徴と、長所とを当業者に明らかにすることができる。
類似または同一の部材には、異なる図面で等しい参照符号を使用する。
【図面の簡単な説明】
【００１１】
【図１】本発明の１以上の実施形態に従うデータ処理システムのブロック図。
【図２】本発明の１以上の実施形態に従うプロセッサのブロック図。
【図３】本発明の１以上の実施形態のアドレス認証された条件付きデバッグ動作を説明するフローチャート。
【図４】アドレスに基づく条件付きデバッグ動作を容易にするためにメモリページングシステム属性を用いる本発明の１以上の実施形態の動作説明。
【図５】アドレスに基づく条件付きデバッグ動作を容易にするためにセグメントまたは領域マーキング技術を用いる本発明の１以上の実施形態の動作説明。
【図６】アドレスに基づく条件付きデバッグ動作を容易にするために、メモリページングシステムとセグメントまたは領域マーキング技術の結合が用いられる本発明の１以上の実施形態の動作説明。
【発明を実施するための形態】
【００１２】
［プロセッサと条件付きデバッグ一般］
図１は、本発明の或る実施形態と一致するデータ処理システム１０（デバッグ装置）を示す。一般に、データ処理システム１０は単一の集積回路または複数の集積回路上で実現されてよい。ある場合には、データ処理システム１０はシステム・オン・チップとして実現されてよい。例示された構成では、データ処理システム１０は、プロセッサ１２と、外部デバッグ回路１４と、Ｉ／Ｏモジュール１６と、メモリ１８とを含む。データ処理システム１０の構成要素は相互に接続され、何らかの適切な技術を用いて相互に動作する。単純化するために、バス２０を介する主要な機能ブロックの相互接続を例示するが、当業者は、多様な相互接続技術とトポロジのうちのいずれも本発明から逸脱することなく使用できることを、認識するであろう。
【００１３】
典型的には、プロセッサ１２の実現は、フェッチバッファまたはその他のプロセッサによって実行される命令を格納する手段と、デコーダおよびシーケンシング論理と、１個以上の実行ユニットと、好適なデータと、命令と制御パスを格納したレジスタ記憶装置とを有する。いつでも、プロセッサ１２によって行われる計算結果に一致することによって、プログラムコード（例えば命令）とデータのユニットは、メモリ１８と、１層以上のキャッシュと、プロセッサ記憶域（例えばフェッチバッファ、レジスタ等）とのうちの少なくとも１つに駐在する。一般に、メモリまたはキャッシュ内で命令とデータを分けたり、混ぜたりする設計を有する、多様なメモリ階層のいずれも使用できる。メモリ１８（またはその部分）は、プロセッサと同じ集積回路内に位置してよく、プロセッサ１２とは異なる集積回路に位置してよく、または複数の集積回路にまたがってもよい。さらにメモリ１８は、任意の好適なタイプの記憶装置、例えば読出し専用メモリ（ＲＯＭ）、ランダムアクセスメモリ（ＲＡＭ）、非揮発性メモリ（例えばフラッシュ）等を有しうる。外部デバッグ回路１４は、プロセッサ１２と同じ集積回路に含まれてよく、またはプロセッサ１２を有するいかなる集積回路やシステム・オン・チップからも独立した別個のシステムとして実現されてよい。
【００１４】
図２は、データ処理システム１０のプロセッサ１２（図１参照）に対応するプロセッサ例、すなわちプロセッサ１２のブロック図である。プロセッサ１２は、命令デコーダ２２と、実行ユニット２４と、命令フェッチユニット２６と、制御回路２８と、汎用レジスタ３０と、ロード／格納ユニット３２と、バスインターフェースユニット（ＢＩＵ）３４と、内部デバッグ回路４０とを有する。プロセッサ１２は、バスインターフェースユニット３４に接続されたバス２０を介してデータ処理システムの他の構成要素に通信する。典型的には他の構成要素は、既に図１に関連して説明したようにメモリ（キャッシュを含むことができる）とＩ／Ｏ構成要素を含む。
【００１５】
ここで留意すべきは、図示された実施形態において、メモリ管理ユニット（ＭＭＵ）３６はアドレス変換を（例えば実現されたセグメンテーションまたはページングされたメモリモデルに従って）調整することによって、ここで述べる条件付きデバッグ制御の幾つかを実現するために好都合な場所を提供することである。従って、以下の記述においてメモリ管理ユニット手段を含む幾つかの設計を例示する。それにも関わらず当業者はこの記述に基づき、メモリから実行ユニット２４までの命令パス上にある他の構成要素（例えば命令フェッチユニット２６と命令デコーダ２２）が、類似した条件付きデバッグ制御または上述した制御の特定部分を、特にメモリ管理ユニットを省いた実施形態において実現できることを認識するであろう。図２も、或る実施形態でプロセッサ１２と一緒に提供されうる任意選択キャッシュ３７（例えばオンチップ）を示している。任意選択キャッシュ３７は統合されたデータ／命令キャッシュとして示されているが、当業者は、望むならば別個のデータと命令部分も提供されてよく、或る実施形態はデータ部分のみまたは命令部分のみプロセッサ１２と一緒に配置してよいことを認識するであろう。
【００１６】
内部デバッグ回路４０は、プロセッサ１２内の活動を監視し、デバッグレジスタ４２またはプロセッサ１２内の他の場所に格納されたデバッグ構成情報に基づき検出された１以上の所定の条件に応答することによって、１個以上のデータブレークポイントイベント、命令ブレークポイントイベント、命令実行イベント、例えば分岐またはトラップイベント、命令完了イベント、その他を生成できる。内部デバッグ回路４０は、外部デバッグユニット、例えばＩＥＥＥ  ＩＳＴＯ−５００１コンプライアント・ネクサスデバッグユニットと図２に示されたデバッグポートに接続されてよい。外部デバッグユニットは、図１に示された外部デバッグ回路１４の全部または一部を含んでよい。ネクサスは、フリースケール・セミコンダクター株式会社、オースチン、テキサスの商標である。デバッグポートは、シリアルインターフェース、例えばＪＴＡＧであってよく、またはパラレルポート、シリアルポートとパラレルポートの組合せ、またはイーサネット（登録商標）ポートとして実現されてよい。或る実施形態ではプロセッサ１２は、好適な相互接続または信号機構を用いて内部デバッグ回路を他のデバッグ回路オンチップにインターフェース接続させることができる。
【００１７】
図示されているように、内部デバッグ回路４０はデバッグレジスタ４２とデバッグ制御回路４４を含んでいる。デバッグレジスタ４２は、典型的には種々のデバッグ関連イベント、例えば命令ブレークポイント、データブレークポイント、ウォッチポイント、およびその他のデバッギング関連メッセージングを制御するために、フィールドにグループ分けしたビットを含んでいる。一般的には、これらのデバッギングリソースは、プロセッサ１２と外部デバッグ回路１４との間で共有されてよく、いかなる場合もアドレスに基づきここで述べる条件付きデバッグ制御を選択的に有効にする（または無効にする）述語（ｐｒｅｄｉｃａｔｅ）状態（例えばメモリページ属性と、マークされたセグメントまたは領域と、アドレス識別子とのうち少なくとも１個の組合せ）を規定するために使用できる。
【００１８】
一般に、デバッグレジスタ４２は、１個以上のアドレス比較値、アドレス範囲、データ一致値のための記憶装置を提供する。記憶装置は、命令および／またはデータアクセスブレークポイント、ウォッチポイントイベント、およびその他のデバッグ制御基準の実現に有益である。これらのアドレスおよびデータ値は、種々の制御基準とともに、いつプロセッサ１２がブレークポイントまたはウォッチポイントイベントを生成する目的で１個以上の所定の命令アドレスまたはデータアドレスにアクセスするか決定するのに用いられる。これによってプロセッサ１２は、内部デバッグモードがアクティブであるときデバッグ例外のための例外処理を開始でき、またはプロセッサ１２はデバッグ停止モードに入り、外部デバッグモードがアクティブであるとき内部デバッグユニット４０のデバッグポートを通して外部デバッグ回路１４によって供給される命令に応答できる。
【００１９】
例として、これに限るものではないが、デバッグレジスタ４２は、デバッグ構成情報の記憶に適したデバッグ制御レジスタ、命令アドレス比較レジスタとデータアドレス比較レジスタ、ならびにデバッグ状態レジスタ、デバッグカウンタおよびデータ値比較レジスタを有しうる。一般に、デバッグレジスタ４２は、ユーザのソフトウェアプログラミングモデルの可視部分であってよい。デバッグカウンタは、１個以上の計数可能なイベントが発生したらカウントダウンするように構成できる。計数値がゼロに達したら、デバッグ計数イベントが伝えられて、有効であるならばデバッグ割込が生成されてよい。データ値比較レジスタは、データ比較目的、例えば条件付きブレークポイントを実現するためにデータ値を格納できる。
【００２０】
内部デバッグモードでは、レジスタリソースはソフトウェアによって管理され、外部デバッグ回路の使用は必要とされない。ソフトウェアは、専用レジスタ命令との間でデータが行き来することを通してレジスタを構成できる。専用レジスタ命令は、ソフトウェアに基づくデバッギング活動を実行するために個々のデバッグレジスタを初期化するソフトウェア命令である。有効にされたデバッグイベントは、ソフトウェアデバッグ割込をトリガする。このときソフトウェア割込ハンドラは、データ処理システム１０のソフトウェアプログラマによって決定される種々の望ましい活動を実行できる。
【００２１】
外部デバッグモードでは、外部デバッグ回路１４は、デバッグレジスタ４２の共有デバッグレジスタの所有を割当てられ、構成されたデバッグイベントが生じたら、プロセッサ１２は停止状態に入ることができ、外部デバッグ回路１４によって提供される命令を待つ。外部デバッグモードが有効にされているとき、ソフトウェアは、もはや共有されたデバッグリソースを制御できない。或る実施形態では、デバッグレジスタ４２は、デバッグレジスタ４２内またはプロセッサ１２内の他の場所に配置された外部デバッグ制御レジスタを有する。外部デバッグ制御レジスタは、ユーザのソフトウェアプログラミングモデルの一部でなくてもよい。すなわち、プロセッサ１２上で実行されるソフトウェアは、外部デバッグ制御レジスタの可視性を持たなくてよい。外部デバッグ回路１４は、共有デバッグリソースと、任意の専用外部デバッグリソースとに、直接デバッグポート（図２に示す）を介してアクセスできる。これは例えば、ＪＴＡＧ  ＴＡＰ  ポートとして実現される。或る実施形態では、デバッグレジスタ４２と外部デバッグ制御レジスタは、種々のＪＴＡＧ命令の１個以上のフィールド内に含まれたレジスタ選択符号化を有するＪＴＡＧデータレジスタとしてマッピングされてよく、これはＪＴＡＧ  ＩＲ動作とＪＴＡＧ  ＤＲ動作とを通してデバッガによるレジスタの読取りと書込みアクセスを提供する。
【００２２】
例として、ただしこれに限るものではなく、与えられた命令のインスタンスの生成が、インスタンスがプロセッサによってアドレス可能なメモリ内に現れるアドレスに基づき（ここで述べる技術を用いて）認証される、条件付きデバッグ型命令の２つの例を要約する。これらの例は、デバッグ通知停止（ＤＮＨ）命令とブレークポイント命令コーディングであり、プロセッサコア、例えばフリースケール・セミコンダクターが費用を重視した内蔵リアルタイムアプリケーション、例えば自動車マイクロコントローラ（ＭＣＵ）のＭＰＣ５０００ファミリ用に供給するコアのｅ７００／ｅ５００とｅ２００コアファミリによって実現される。
【００２３】
デバッグ通知停止命令は、非停止モードにおけるコアでの命令の実行と、外部デバッグ手段の後続の動作とを橋渡しする。具体的には、デバッグ通知停止命令によってソフトウェアは、コアを実行状態から停止状態に移行させることができ（外部デバッガによって有効にされている場合）、外部デバッガに命令自体に含まれているメッセージとコード化されたビットコードを通知できる。典型的に実現されると、デバッグ通知停止命令は、条件付きデバッグ命令であり、そのランタイム効果はデバッグ制御レジスタにおいて設定される特定の指示の状態によって決定される（例えば図２のデバッグレジスタ４２参照）。例えば１つの実現において、ＤＮＨ＿ＮＯＰ指示は、外部デバッグ手段またはソフトウェアによって設定され、ＤＮＨ＿ＥＮ指示は、消去され、デバッグ通知停止命令インスタンスは、ノーオペレーションとして実行される。ＤＮＨ＿ＷＰＴ指示が設定されると、ウォッチポイントは、外部のＣＰＵに伝えられる。
【００２４】
粗粒度制御機構（例えば好適なＤＮＨ＿ＮＯＰとＤＮＨ＿ＥＮ指示の使用）によってデバッグ通知停止命令は、プロセッサをデバッグ状態に保持したり、不正な命令例外を行ったりする代りに、所望されるならノーオペレーションとして扱われることができる。この制御によってデバッグ通知停止命令は、コード開発後のアプリケーションのコードイメージ中に内蔵され続けるが、単純にノーオペレーションとして働くことによって無害に留まる。このようにして、コードイメージ自体が変化する必要がなく、分岐ターゲットと、ページ境界と、他の命令関係とが変化しないままなので、予測可能に実行される。しかしながら、デバッグ通知停止タイプ命令のすべての（さらにはグループ全体の）インスタンスの粗粒度制御は、安定コード中に含まれたデバッグ通知停止命令インスタンスがノーオペレーションとして扱われるために十分な粒度を提供しないかも知れないが、同時に他のデバッグ通知停止命令インスタンスが停止またはウォッチポイントとして動作することを可能にする。
【００２５】
ここで留意すべきは、特許文献１が上述したデバッグ通知停止命令の変形であるＤＮＨ２を開示していることである。そこにおいてＤＮＨ２命令フォーマットは、個々のＤＮＨ２命令インスタンスが有限数の制御グループの１つに関連付けられるようすることによって、グループ特有の制御機構（例えばグループ特有のＧＲＯＵＰｘ．ＤＮＨ＿ＮＯＰとＧＲＯＵＰｘ．ＤＮＨ＿ＥＮ指示）は、各々のグループについて好適な実行セマンティクスを決定するために使用されうる。ここでは例としてデバッグ通知停止命令に焦点を当てたが、上述した内容に基づき、当業者は、ここで述べるアドレス認証されたデバッグ制御がＤＮＨ２命令のような変形命令を実現する設計に適用できることを理解するであろう。
【００２６】
同様に本発明の或る実施形態において、ブレークポイント（ｂｋｐｔ）命令は、アドレス認証が提供されるデバッグ命令として使用され得る。ある命令セットの実現において、ブレークポイント命令は、命令セットアーキテクチャ（ＩＳＡ）によって明確に定義されないが、不正命令コードとして実現されることがある。不正命令コードは、実行後に例外または誤りを生成し、これらはデバッグ手段によって処理するために送られうる。幾つかの命令セットアーキテクチャと実現において、ｂｋｐｔ命令コード（または類似の命令コーディング）は、定義され且つ提供されてよい。明確にするために、しかも一般性を制限または喪失することなく、ここではブレークポイント命令を定義された命令セットコーディング（例えばｂｋｐｔ命令）であるかのように参照する。
【００２７】
上述のように、所望されるならプロセッサをデバッグ状態に保持する代わりに、粗粒度制御機構によってｂｋｐｔ命令は、ノーオペレーションとして扱われてよい。この制御によってｂｋｐｔ命令は、コード開発後にアプリケーションのコードイメージ内に内蔵されたままであるが、単純にノーオペレーション動作として作用することによって無害に留まる。上記のように、分岐ターゲットと、ページ境界と、他の命令関係とが変化しないため、予測可能に実行される。しかしながら、上述したように、ｂｋｐｔ命令のすべての（またはグループの）インスタンスの粗粒度制御は、安定コード内のｂｋｐｔ命令インスタンスがノーオペレーションとして扱われるようにするために十分な粒度を提供しないが、同時に他のｂｋｐｔ命令インスタンスがブレークポイントとして動作できるようにする。
【００２８】
従って、ここではアドレスによるデバッグ命令インスタンスの認証を用いて、デバッグ通知停止と、ｂｋｐｔと、他のデバッグ型命令とのうちの少なくとも１個の具体的なインスタンスの挙動を特定する技術について述べる。以下の記述に基づき、当業者は、類似または同様のデバッグ命令を実現するプロセッサとシステムへの非常に多様な応用を理解するであろう。
【００２９】
図３は、本発明の１以上の実施形態に従いアドレス認証された条件付きデバッグ技術のセットアップと動作を例示するフローチャートである。図面の左側には、アドレス認証された条件付きデバッグのためのセットアップ３０１のシーケンスが示されている。例えば或る実施形態では、デバッグ型命令インスタンス、例えばここに登場するデバッグ通知停止、ＤＮＨ２、ｂｋｐｔ等を無効化（または有効化）するために個々のコードブロックが考慮される（３１１）。一般的な提案として、コードブロックは任意の好適な粒度であることができ、命令の機能、手順、モジュール、サブシーケンス等に対応してよい。どのようなものであれ粒度を使用することは、アドレス認証子の記憶域３１０、セットアップシーケンス３０１記憶域に対応するページフレーム識別子、セグメント識別子、領域識別子（例えばベースアドレス／アドレスマスクペア）および／または個々のデバッグ命令インスタンスの動作または挙動を変化させるためのアドレスに基づく他の何らかの認証子によって提供される。
【００３０】
プロセッサ、例えばプロセッサ１２（図２参照）でコードを実行している間（フロー３０２）、プログラムシーケンシングに従う命令（または複数の命令）の復号に備えて、且つ結果として起こるプログラムシーケンシングに従う命令（または複数の命令）の実行に備えて、各々の命令（または命令グループ）が典型的にはメモリまたはキャッシュからフェッチされる（ステップＳ３２１）。デバッグ命令インスタンスに対しては、メモリ内で特定のインスタンスが見いだされる具体的なメモリアドレスは、記憶域３１０内のアドレスに基づく認証子に対してチェックされる（ステップＳ３２２）。記憶域３１０に示されたページ、セグメントまたはメモリアドレスの範囲が、デバッグ型命令インスタンスの具体的なメモリアドレスと一致したら（ステップＳ３２３）、この命令インスタンスのデバッグ実行セマンティクスは、抑圧される（ステップＳ３２４）。典型的には、一致した命令インスタンスに対しては命令フェッチまたは復号ユニット（例えば図２の命令フェッチユニット２６、命令デコーダ２２参照）によって、ノーオペレーション命令コードは置換される。しかし望むならば他の抑圧機構が使用されてもよい。最後に、（デバッグ実行セマンティクスは抑圧されて）対応する命令が実行される（ステップＳ３２５）。
【００３１】
図４は、特定のデバッグ命令インスタンスのメモリアドレスに基づく条件付きデバッグ動作を容易にするためにメモリページングシステム属性が使用される本発明の１個以上の実施形態の動作を示している。既に説明したようにアドレスに基づく認証子は、デバッグハードウェアとソフトウェアのうちの少なくとも１つから供給される指示に基づき記憶域に示される。より具体的には図４の例で、デバッグ関連ページフレーム属性が供給されて（４０５）、集合的にページ変換４１０として示された１個以上のページメモリ管理記憶域（例えばページテーブル、トランスレーション・ルックアサイド・バッファ（ＴＬＢ）エントリ等）で符号化される。当業者は、メモリ管理ユニット４５０の実現、より一般的にはページングされたメモリ管理システムの多様な好適な実現を理解するであろう。明確にするために、しかも一般性を制限または喪失することなく、ここでは単純化されたページングシステムについて技術の例示に必要な側面のみ示す。
【００３２】
慣用的に、メモリ管理ユニット４５０は、仮想アドレス（例えば命令フェッチアドレス４２７）をアドレス可能記憶装置内の物理アドレス（例えばメモリおよび／またはキャッシュ４２０内の位置４７１に対応する物理アドレス４９９）に変換する。メモリページングシステムの例示と一致することによって、アドレス可能記憶装置は、ページフレームレベルの粒度で表示される。すなわち、仮想アドレス４９８に対応するページフレームは、ページ変換４１０を用いて、物理アドレス空間内の対応するページ（例えば物理ページ４５８）にマッピングされる。やはり慣用的に、ページ属性４１１は、マッピング４１２に関連して符号化される。例えば、あるメモリページングシステム実現において、ライトスルー（Ｗ）と、キャッシュ抑圧（Ｉ）と、メモリ一貫性要求（Ｍ）と、保護（Ｇ）と、エンディアン（Ｅ）との属性は、ページ属性４１１内の個々の変換に関連する構成指示として特定されうる。我々のアドレス認証条件付きデバッグ技術をサポートするために、ページ属性４１１に追加的なデバッグ無効化（Ｄ）属性を加える。追加的なデバッグ無効化（Ｄ）属性は、（ある実現においては）ページングシステム実現で具体的に定義された属性を用いて、または（他の実現においては）さもなければ割当てられていないユーザ定義可能ページ属性を用いて提供される。具体的なコーディングが何であれ、アドレス指定された位置４７１に格納された特定のデバッグ型命令インスタンスのフェッチとの関連で、ページ変換４１０から読出される特定のデバッグ無効化（Ｄ）指示４１３は、フェッチされた命令インスタンスに対する実行セマンティクスを決定するために使用される。
【００３３】
図４の例において、仮想ページから物理ページへの変換４１８と４１９は、物理アドレス空間内のそれぞれの物理ページ４５８と４５９に対応する。従ってページ４５８と４５９内で物理アドレスからフェッチされるデバッグ型命令インスタンスは、ページ変換４１０における対応するデバッグ無効化（Ｄ）指示セット（４０５）に基づきノーオペレーションセマンティクスによって実行される。説明の目的のために、例示された実施形態においてデバッグ無効化（Ｄ）指示４１３は、対応するデバッグ型命令がノーオペレーションセマンティクスによって実行されることを示すものと想定する。もちろん他のコーディング推定（ｃｏｄｉｎｇ  ｓｅｎｓｅ）が使用されてもよい。
【００３４】
一般に、ノーオペレーションセマンティクスは、多様な何らかの方法で提供されることができる。例えばメモリ管理ユニット４５０は、フェッチされたデバッグ型命令インスタンス（またはキャッシュラインもしくはデバッグ型命令インスタンスが登場する他のフェッチユニット）に注釈を付けて（４５２）、命令パスにおける好都合なポイントで後から置換し（またはオーバーロード）を行うようにマークしてよい。特に、このように注釈を付けたデバッグ型命令インスタンスの命令コードは、フェッチユニット４２６（例えば４５３において）または命令デコーダ４２２（例えば４５４において）のノーオペレーション命令コードで置換（オーバーロード）が行われてよい。代替として、メモリ管理ユニット４５０は、それ自体でノーオペレーション命令コードを置換またはオーバーロードすることもできようが、これはあるレベルの命令セットの知識が一般的にメモリ管理ユニットで提供されないことを前提とする。
【００３５】
図５は、セグメントまたは領域マーキング技術が特定のデバッグ命令インスタンスのメモリアドレスに基づく条件付きデバッグ動作を容易にするために用いられる本発明の１個以上の実施形態の動作を例示する。上記のように、アドレスに基づく認証子は、デバッグハードウェアとソフトウェアのうちの少なくとも一方から供給される指示（５０５）に基づき記憶装置内で示される。より具体的には、図５の例においてアドレスベース／アドレスマスクペア（５１１．．．５１２）は、メモリおよび／またはキャッシュ５１８に示されたアドレス可能記憶装置の対応するセグメントまたは領域（５６１、５６２）をマークするために用いられる。命令フェッチアドレス５２７は、コンパレータ（５１６．．．５１７）の集合を用いてアドレスベース／アドレスマスクペアと比較され、一致すれば（命令パスにおける好都合なポイントで）対応するデバッグ型命令インスタンスの注釈（５５２）および／または置換／オーバーロードを行うという指示５１３が供給される。
【００３６】
図５の例では、アドレス可能なメモリの位置５７１から引き出された命令インスタンスのデバッグ型実行セマンティクスは、命令フェッチアドレス５２７が１個以上のアドレスベース／アドレスマスクペア（５１１．．．５１２）と一致することに基づき抑圧される。上述した内容に従い、アドレスベース／アドレスマスクペアは、対応するデバッグ型命令がノーオペレーションセマンティクスによって実行されるべきであることを指示するが、他のコーディング推定が用いられてもよい。上述のように、命令パスにおける好都合なポイントは、フェッチユニットまたは命令デコーダを含む。
【００３７】
先行の例に基づき図６は、アドレスに基づく条件付きデバッグ動作を容易にするためにメモリページングシステムとマーキング技術の結合が用いられる、本発明の１個以上の実施形態の動作を示している。上述のように、アドレスに基づく認証子は、デバッグハードウェアとソフトウェアのうちの少なくとも一方から供給される指示（６０５）に基づき記憶装置に示される。しかしながら、図６の例ではページフレーム属性とアドレスベース／アドレスマスクペアの両方が供給される。上述のように、ページフレーム属性は１個以上のページングされたメモリ管理記憶域（例えばページテーブル、トランスレーション・ルックアサイド・バッファ（ＴＬＢ）エントリ等）で符号化され、ページ変換６１０として集合的に示される。具体的には、エントリ６１８（命令フェッチアドレス６２７に対応）は変換を提供することによってページ６５８を位置６７１（とフェッチされるデバッグ命令）が駐在するアドレス可能メモリ内のページとして識別する。
【００３８】
図６の例では、アドレスベース／アドレスマスクペア（例えばアドレスベース／アドレスマスクペア６１１）は、ページ６５８内の対応する領域６６１をマークするために、さらにデバッグ型実行セマンティクスが抑圧されるべきアドレス可能記憶装置の部分を区切るために用いられる。具体的には図６は、（ｉ）命令フェッチアドレス６２７とアドレスベース／アドレスマスクペア６１１の内容の比較（６１６）の結果と、（ｉｉ）アドレス指定された位置６７１に格納されている特定のデバッグ命令の対応するフェッチとの関連でページ変換６１０から引き出されたデバッグ無効化（Ｄ）指示６１３とのＡＮＤ結合（論理６９９参照）を示している。従って、例示された構成は、デバッグ実行セマンティクスが抑圧されるべきメモリ位置のセットを、デバッグ無効化（Ｄ）指示を有するページ内に現れるメモリ位置のサブセットに狭める機構を提供する。
【００３９】
もちろん、ページ指示と領域指示の他の構成も可能であり想定されている。例えばある変化例において、アドレスベース／アドレスマスクペア６１１と一致するアドレス可能位置を、さもなければデバッグ無効化（Ｄ）指示が符号化されたページの範囲内に入るアドレス可能位置から排除するために、ＮＯＴ−ＡＮＤ構成が使用されうる。同様に、他の変化例ではアドレスベース／アドレスマスクペア６１１と一致するアドレス可能位置か、またはデバッグ無効化（Ｄ）指示が符号化されたページの範囲内に入るアドレス可能位置を含めるためにＯＲ構成が使用されうる。さらに、ここでは２つの入力の単純な１段階結合が例示されているが、望むならばより多くの数の入力と、より複雑な結合図式とが使用されてよい。それぞれのケースにおいて、（命令パスにおける好都合なポイントでの）注釈（例えば６５２）および／または置換／オーバーロードが対応するデバッグ型命令インスタンスに対して行われる。
【００４０】
図６の具体例を参照して、アドレス可能メモリ内の位置６７１からフェッチされる命令インスタンスのデバッグ型実行セマンティクスは、命令フェッチアドレス６２７が（ｉ）１組のデバッグ無効化（Ｄ）指示６１３が現れる変換６１０のエントリ（６１８）と、（ｉｉ）アドレスベース／アドレスマスクペア（６１１）の内容と一致することに基づき抑圧される。上述したことに従い、ここではデバッグ無効化（Ｄ）指示とアドレスベース／アドレスマスクペアは、ノーオペレーションセマンティクスによって実行されるべきデバッグ型命令インスタンスをカバーするものと想定するが、他のコーディング推定も使用できる。また上述のように、ノーオペレーション命令コードによる置換／オーバーロードに対する命令パスにおける好都合なポイントは、フェッチユニットまたは命令デコーダを含む。
【００４１】
［その他の実施形態］
プロセス識別子（ＰＩＤ）またはアドレス空間識別子（ＡＳＩＤ）は、プロセッサ実現においてしばしば用いられ、それ自身のユニークな仮想アドレス空間による各々の実行プロセスを提供するために使用できる。従って、本発明の或る実施形態では、そのようなプロセス識別子またはアドレス空間識別子フィールド値の全部または一部が、デバッグ型実行セマンティクスまたはノーオペレーション実行セマンティクスが望まれる１組のアドレスを規定する比較において使用されてよい。例えば、そのようなプロセス識別子またはアドレス空間識別子フィールド値の使用は、特定の実行セマンティクスが指定されているセットにおける（からの）具体的なプロセスまたはスレッドに関連した仮想アドレス空間に入るアドレスを有する（または排除する）ことができる。
【００４２】
本発明の或る実施形態において、仮想化技術が使用されてよい。仮想化はしばしば明確に区別されるアドレス空間において互いに独立に動作する論理的パーティションを規定する。例えば、あるマルチスレッドのプロセッサ実現において各々の仮想プロセッサは１つの論理的パーティションに割り当てられてよい。同様にマルチプロセッサシステムにおいて、各々の物理プロセッサは１つの論理的パーティションに割り当てられてよい。一般に、論理的パーティションの割当ては、パーティションＩＤ（ＬＰＩＤ）値を割り当てることによって行うことができる。パーティションＩＤ値は仮想アドレスの拡張を形成し、アドレス変換中に各々のＴＬＢエントリに対する論理的パーティション値と一致させるために使用できる。従って、本発明の或る実施形態において、ＬＰＩＤフィールド値の全部または一部は範囲比較論理に対する入力として含まれて、さらに１個以上の仮想アドレス空間またはパーティションを指定することが可能となる。
【００４３】
一般に、アドレス空間比較（プロセス識別子、アドレス空間識別子またはＬＰＩＤフィールド値または何らかの仮想化手段）は、別個に用いられるか、または図３〜図６を参照して例示または説明された検索もしくは比較と組合せて用いられる。アドレス空間に対応するページ上の好適なページ属性をマークすることによって類似の機能が提供され得るのはほぼ間違いないが、ページのマーキング／アンマーキングは時間がかかるか不都合である。それゆえ或る実施形態ではで上記の代替例が魅力的であり得る。
【００４４】
ここでは特定の実施形態を参照して本発明を説明したが、以下の特許請求の範囲に明記された本発明の範囲を逸脱することなく、様々な変容と変更を行うことができる。例えば特定のデバッグ命令とメモリアーキテクチャの例で技術を説明したが、我々の技術は必ずしもこれに制限されるものではない。従って或る実施形態では、或るクラスのデバッグ命令によってデバッグ命令を独立のグループに分別することが可能であり、各々のグループは実行によってなされるアクション（複数のアクションを含む）を独立に制御し、それによってデバッグの追加的なフレキシビリティが提供される。これらのグループは独立に制御されて、結果として生じるアクションはハードウェアまたはソフトウェアデバッガによって動的に変容され得る。本発明の技術はグループで区切られたデバッグ命令に対するアドレス認証を提供するために用いられてよい。
【００４５】
本発明の実施形態は、種々の情報処理システムを用いて実現されうる。従って図１と、図２と、これらに伴う説明とは例示されたデータ処理システムとプロセッサアーキテクチャに関するものであるが、これらのアーキテクチャ例は単に例示的なものにすぎない。もちろん、ここではアーキテクチャに関する記述は説明の目的のために単純化されており、当業者はここに示された論理ブロックまたは構成要素の境界が単に例示的なものであり、代替実施形態は論理ブロックまたは回路要素を結合し、および／または種々の論理ブロックまたは回路要素の機能を別様に分解しうる。
【００４６】
本発明を実現する要素、システムと装置は、大部分はここで機能的に記載された当業者に知られている電子構成要素と、回路と、コード（例えばソフトウェア、ファームウェアおよび／またはマイクロコード）とのうちの少なくとも１個からなる。従って構成要素と、回路と、コードとに関する詳細は、明確性と具体的のために必要な限りで説明し、本発明の基本コンセプトの理解と認識を容易にした。ある場合には、本発明の教示が不明確になることを、またはそれから注意がそれることを避けるために、公知の技術の特徴、構造、構成要素または実現技術に関する説明は、一般化した。
【００４７】
一般に、ここで用いられている用語「プログラム」と「プログラムコード」との少なくとも一方は、コンピュータシステム上で実行するために設計されたシーケンスまたは１組の命令を表す。そのようなものとしてこれらの用語はサブルーチン、機能、手順、目的方法、ソフトウェア方法の実現、インターフェースまたは目的、実行可能なアプリケーション、アプレット、サーブレット、ソース、目的コードまたは中間コード、共有されたおよび／または動的にロード／リンクされたライブラリおよび／または他のシーケンスまたはコンピュータシステム上で実行するために設計された命令グループを含んでよい。
【００４８】
ここで述べるプログラムコードの全部または一部、ならびにここで述べる情報処理システムのソフトウェアによって実現された機能は、情報処理システムの要素によって、例えばコンピュータ可読媒体によって、または他のシステムを介してアクセスされ、もしくは受け取られてよい。一般にコンピュータ可読媒体は情報処理システムに恒久的に、取外し可能に、または間接的に連結されてよい。コンピュータ可読媒体は、例えば制限なく次のものを任意の数含むことができる。ディスク式とテープ式記憶媒体を含む磁気記憶媒体、光学記憶媒体、例えばコンパクトディスク媒体（例えばＣＤ−ＲＯＭ、ＣＤ−Ｒ等）およびデジタルビデオディスク記憶媒体、半導体ベースメモリユニットを含む非揮発性記憶媒体、例えばフラッシュメモリ、ＥＥＰＲＯＭ、ＥＰＲＯＭ、ＲＯＭ、強磁性デジタルメモリ、ＭＲＡＭ、揮発性記憶媒体、例えばレジスタ、バッファまたはキャッシュ、メインメモリ、ＲＡＭ等、およびデータ伝送に伴う媒体、例えばコンピュータネットワーク、２点間遠隔通信装置、搬送波または信号を介する伝送があるが、これらはごく一例にすぎない。
【００４９】
最後に、仕様と図は制限的なものではなく、例示的なものと見なされるべきであり、上記の内容に従って広範な変化例と、変容と、拡張とが想定されている。特定の実施形態に関してここで述べた利益、利点、問題の解決は何らかのまたはすべての請求項の決定的な、必要な、または本質的な特徴もしくは要素と解釈されることを意図していない。
【図１】
2011514606.tif 000003
【図２】
2011514606.tif 000004
【図３】
2011514606.tif 000005
【図４】
2011514606.tif 000006
【図５】
2011514606.tif 000007
【図６】
2011514606.tif 000008
【国際調査報告】
2011514606.tif 000009
2011514606.tif 000010