(57)【要約】ある実施例において、技術が、プログラム可能なプロセッサに一度に１つの命令を処理させるために示される。シングルステップ・デバッギングは、各命令の後で例外を受け取ることにより、または、各命令の後にエミュレーション・モードを呼び出すことにより行なわれる。特定のシングルステップ・デバッギング技術は、制御ビットの状態に基づくことがあり、またはプロセッサの現在の動作モードに基づくことがあり、または両方に基づくことがある。
2004516549.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサの現在の動作モードの機能として、複数のデバッギング・モードのうちの１つを選択する段階から成ることを特徴とする方法。
【請求項２】
命令を実行した後に例外を発生する段階をさらに含むことを特徴とする請求項１記載の方法。
【請求項３】
命令を実行した後に前記プロセッサのエミュレーション・モードを呼び出す段階をさらに含むことを特徴とする請求項１記載の方法。
【請求項４】
前記デバッギング・モードを選択する段階が、前記モードがユーザ・モードを含むときには第１のデバッギング・モードを選択し、前記動作モードがスーパバイザ・モードを含むときには、第２のデバッギング・モードを選択する段階を含む請求項１記載の方法。
【請求項５】
命令を受け取る段階と、
信号を受け取る段階と、
前記信号の機能としてデバッギングのモードを選択する段階であって、前記デバッギング・モードを選択する段階は、前記信号が第１の信号であるときには第１のデバッギング・モードを選択する段階、および、前記信号が第２の信号であるときには、第２のデバッギング・モードを選択する段階を含む、段階と、
前記命令を実行する段階と、
から成ることを特徴とする方法。
【請求項６】
例外を発生する段階をさらに含むことを特徴とする請求項５記載の方法。
【請求項７】
エミュレーション・イベントを呼び出す段階をさらに含むことを特徴とする請求項５記載の方法。
【請求項８】
レジスタの内容を検知する段階と、
レジスタの内容を出力する段階と、
をさらに含むことを特徴とする請求項５記載の方法。
【請求項９】
前記命令が、複数の状態で動作するために適合されたプロセッサによって受け取られ、前記方法は、
前記プロセッサの状態を検知する段階と、
プロセッサの状態を出力する段階と、
をさらに含むことを特徴とする請求項５記載の方法。
【請求項１０】
前記命令がプロセッサによって受け取られ、前記方法は、前記プロセッサの前記動作モードの機能としてシングルステップ・デバッギングのモードを選択する段階をさらに含むことを特徴とする請求項５記載の方法。
【請求項１１】
装置において、
エミュレーション・モードを含む複数の動作モードで動作するために適合されたプロセッサと、
制御ビットの状態を格納するために適合された制御レジスタと、
例外ハンドラと、
から構成され、
前記プロセッサが前記制御ビットの機能として複数のデバッギング・モードのうちの１つを選択するために適合される、
ことを特徴とする装置。
【請求項１２】
前記プロセッサは、前記プロセッサの現在の動作モードの機能として、複数のデバッギング・モードのうちの１つを選択するために適合されることを特徴とする請求項１１記載の装置。
【請求項１３】
前記制御ビットの状態を検知するため、および前記制御ビットの前記状態の機能として例外イベントを引き起こすために適合された例外ロジックをさらに含むことを特徴とする請求項１１記載の装置。
【請求項１４】
前記制御ビットの状態を検知するため、および前記制御ビットの状態の機能としてエミュレーション・イベントを引き起こすために適合されたエミュレーション・ロジックをさらに含むことを特徴とする請求項１１記載の装置。
【請求項１５】
前記制御ビットが第１の制御ビットであり、前記システムがさらに第２の制御ビットを含み、および、シングルステップ・デバッギングの前記モードが第２の制御ビットの状態の機能であることを特徴とする請求項１１記載の装置。
【請求項１６】
前記プロセッサがデジタル信号プロセサであることを特徴とする請求項１１記載の装置。
【請求項１７】
複数の動作モードで動作するために適合されたプロセッサであって、
前記プロセッサは、前記プロセッサの現在の動作モードの機能として、複数のデバッギング・モードのうちの１つを選択するために適合される、
ことを特徴とする装置。
【請求項１８】
制御ビットの状態を格納するために適合された制御レジスタをさらに含み、前記プロセッサは、前記制御ビットの前記状態の機能として、複数デバッギング・モードのうちの１つを選択するために適合されることを特徴とする請求項１７記載の装置。
【請求項１９】
例外ハンドラと、
前記制御ビットの前記状態を検知するため、および前記制御ビットの前記状態の機能として例外イベントを引き起こすために適合されたロジックと、
をさらに含むことを特徴とする請求項１８記載の装置。
【請求項２０】
前記制御ビットの状態を検知するため、および前記制御ビットの前記状態の機能としてエミュレーション・イベントを引き起こすために適合されたロジックをさらに含むことを特徴とする請求項１８記載の装置。
【請求項２１】
前記プロセッサがデジタル信号プロセッサであることを特徴とする請求項１７記載の装置。
【請求項２２】
システムにおいて、
複数の動作モードで動作するために適合されたプロセッサと、
制御ビットの状態を格納するために適合された制御レジスタと、
入力／出力装置と、
例外ハンドラと、
から構成され、
前記プロセッサが前記制御ビットの機能として複数のデバッギング・モードのうちの１つを選択するために適合される、
ことを特徴とするシステム。
【請求項２３】
前記プロセッサは、現在の動作モードに基づいて複数のデバッギング・モードのうちの１つを選択するために適合されることを特徴とする請求項２２記載のシステム。
【請求項２４】
前記プロセッサに結合されたメモリ・デバイスをさらに含むことを特徴とする請求項２２記載のシステム。
【請求項２５】
前記制御ビットの前記状態を検知するため、および前記制御ビットの前記状態の機能として例外イベントを引き起こすために適合されたロジックをさらに含むことを特徴とする請求項２２記載のシステム。
【請求項２６】
前記制御ビットの前記状態を検知するため、および前記制御ビットの前記状態の機能としてエミュレーション・イベントを引き起こすために適合されたロジックをさらに含むことを特徴とする請求項２２記載のシステム。
【請求項２７】
前記制御ビットが第１の制御ビットであり、前記システムがさらに第２の制御ビットを含み、前記プロセッサが前記第２の制御ビットの状態に基づいて複数のデバッギング・モードのうちの１つを選択するために適合されることを特徴とする請求項２２記載のシステム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、プログラム可能なプロセッサに関する。
【０００２】
【発明の背景】
コンピュータまたはデジタル信号処理システムのためのマイクロプロセッサのようなプログラム可能なプロセッサは、人間が実行するよりもはるかに速く命令を実行する。従って、プロセッサが、いくつかの原因によって引き起こされるエラーを生じるとき、そのエラーはたいてい非常に速く生じるので、人間は、何がエラーを引き起こしたかを直接に観察することができない。一般に「デバッギング（ｄｅｂｕｇｇｉｎｇ）」と呼ばれる多様な技術が、エラーの原因を突きとめるために使用される。
【０００３】
【実施例の詳細な説明】
図１は、メイン・メモリ１６および入力／出力装置２２に結合されたプログラム可能なプロセッサ１０を図示するブロック図である。プロセッサ１０は、制御ユニット１２、実行パイプライン１４、および入力／出力インターフェイス１８を含み、例えば、デジタル信号プロセッサである。
【０００４】
制御ユニット１２は、パイプライン１４を通って命令およびデータのフローを制御する。例えば、命令の処理中に、制御ユニット１２は、命令をデコードすること、および、例えばメイン・メモリ１６に結果をライト・バックすることを含む対応する動作を実行することをパイプライン１４の多様なコンポーネントに命令する。
【０００５】
制御ユニット１２は例外ハンドラ２０を含み、これが、例外が発生したときにパイプライン１４内で処理される、予め定義された命令のアドレスを保持する。制御ユニット１２は、さらに、制御機能に関するデータを格納する制御レジスタ２５を含む。制御レジスタ２５内の制御ビット２３Ａ，２３Ｂは、以下でより詳細に記述されるように、シングルステップ・デバッギング技術に関する情報を含む。制御ビット２３Ａ，２３Ｂの状態は、２ビットのバス２４を介してパイプライン１４によって検知することができる。
【０００６】
メイン・メモリ１６は、命令およびデータのような情報を格納する。メイン・メモリ１６は、スタティック・ランダム・アクセス・メモリ（ＳＲＡＭ）、ダイナミック・ランダム・アクセス・メモリ（ＤＲＡＭ）、フラッシュ・メモリ、またはそれらに類するものを含む。プロセッサ１０は、命令キャッシュのような図１に示されない要素を含んでもよい。ユーザは、インターフェイス１８を経由してプロセッサ１０に結合された、キーボード、マウス、スタイラス、または他のポインティング・デバイスのような１つ以上の入力／出力装置２２を介してプロセッサ１０と通信する。プロセッサ１０は、インターフェイス１８を経由してプロセッサ１０に結合された、表示画面またはプリンタのような１つ以上の入力／出力装置２２を介してユーザと通信する。
【０００７】
図２は典型的なパイプライン１４を図示する。パイプライン１４は、例えば５つのステージ：命令フェッチ（ＩＦ）、命令デコード（ＤＥＣ）、アドレス計算（ＡＣ）、実行（ＥＸ）およびライト・バック（ＷＢ）を有する。命令はフェッチ・ユニット３０によって第１ステージ（ＩＦ）中にメモリ１６または命令キャッシュからフェッチされ、第２ステージ（ＤＥＣ）中に命令デコード・ユニット３２によってデコードされる。次のクロック・サイクルで、その結果が第３ステージ（ＡＣ）に渡され、そこでデータ・アドレス・ジェネレータ３６が、動作を実行するための任意のメモリ・アドレスを計算する。実行ステージ（ＥＸ）中に、実行ユニット３８は、例えば２つの数を加算または乗算するような所定の動作を実行する。最終段階（ＷＢ）中に、その結果がメイン・メモリ１６またはデータ・レジスタ４０にライト・バックされる。
【０００８】
パイプライン１４は、典型的には、一時的なメモリ格納要素として使用されるステージ・レジスタ４２を含み、結果および他の情報をステージからステージへ渡すために使用される。レジスタ４２およびデータ・レジスタ４０に加えて、パイプライン１４は、命令、アドレス、データまたは他の情報を保持するための追加のメモリ要素またはレジスタを含むことがある。
【０００９】
パイプライン１４は、通常、いくつかの命令がパイプライン１４内の異なるステージにあるにもかかわらず、ほぼ同時的な方法で命令を処理する。例えば、１つの命令がＷＢステージにあるときに、別の命令はＥＸステージにあり、さらに別の命令はＡＣステージにある。しかしながら、いくつかの状況においては、１つの命令を処理し、その後プロセッサ１０の状況および／または多様なレジスタの内容を検査してから次の命令の処理を終了することが有利なことがある。この方法で命令を処理することは、「シングルステップ・デバッギング（ｓｉｎｇｌｅ−ｓｔｅｐ ｄｅｂｕｇｇｉｎｇ）」と呼ばれ、例えばデバッギング中に望ましい場合がある。例えば、デバッギングは、命令を実行し、レジスタのようなメモリ要素の内容を検査してから次の命令を実行することを要する。シングルステップ・デバッギングおよびメモリ要素の検査によって、ユーザは、エラーがハードウェアに基づくものか、あるいはソフトウェアに基づくものかを理解し、ハードウェアまたはソフトウェア内の問題を識別し、ソフトウェア命令間の相互作用を観察することが可能になる。デバッギングは、プロセッサ１０が製品に組み込まれる前に、プロセッサ１０の開発中に行われてもよい。さらに、デバッギングは、プロセッサ１０が製品に組み入れられた後に行なわれてもよい。
【００１０】
ユーザがシングルステップ・デバッギングを開始したいとき、ユーザは、キーパッドのような入力／出力装置２２を介してプロセッサ１０にコマンドを付与する。プロセッサ１０は、シングルステップ・デバッギングの異なるモードをサポートすることが可能であり、ユーザは所望の方法をさらに指定することができる。
【００１１】
図３に示されたシングルステップ・デバッギングの１つのモードは、各命令に続いて例外を利用する方法を採用している。一般に、パイプライン１４内で例外に先立つ命令に実行の終了をさせている間、例外が正常なプログラムの実行を一時停止する。シングルステップ・デバッギング（５０）のこのモードが始まると、制御ユニット１２がフェッチ・ユニット３０に、単一の命令をフェッチすることを命令し、それがパイプライン１４のステージを通って処理される（５２）。命令がＷＢステージに達するとき、パイプライン１４が例外を発生する（５４）。例外は特別に定義されたシングルステップ例外でもよく、エラー処理ルーチンを実行しないことを定義されてもよい。
【００１２】
シングルステップ例外に応答して、制御ユニット１２が、典型的にはパイプライン１４内の命令を取り消し（５６）、例外ハンドラ２０へ命令をルートする（５８）。例外ハンドラ２０は、シングルステップ例外が発生するときにパイプライン１４内で処理される、予め定義された命令のアドレスを含む（６０）。このような命令は、プロセッサの状態を検知して入力／出力インターフェイス１８を介して状態に関する情報を出力し（６２）、レジスタの内容を検知して入力／出力を出力し（６４）、例外を取り消す（６６）ことを含む。この命令は、特定のレジスタ・入力／出力または特定のプロセッサの状態を検知するために適合されてもよい。さらに、情報の出力は、プリンタまたは表示画面のような入力／出力装置２２へ情報を送ることを含んでもよく、メイン・メモリ１６に情報を書き込むことをさらに含んでもよい。図３に示される命令（６０）は、典型例である。他の命令は、メイン・メモリ１６またはキャッシュの内容をダンプするか、またはプロセッサの状態を保存して再格納するように実行されてもよい。
【００１３】
例外がクリアされ（６６）、例外ハンドラの他の命令が実行されたとき、制御ユニット１２は、パイプライン１４を通って他の命令を送ることによって（５２）、シングルステップ・デバッグ・プロセスを継続し（６８）、完了時に他の例外を生じる（５４）。送られる命令は、典型的には、以前にパイプライン１４によって送られた命令であるが、以前に処理された例外のために、実行が終了する前に取り消された命令（５６）である。ユーザは、さらに、シングルステップ操作（７０）の終了を選択することもできる。
【００１４】
シングルステップ例外を利用することによるシングルステップ・デバッギングは、いくつかの目的のために有益であり、通常は高速かつ安価で、しかも通常は追加のハードウェアを必要としない。しかしながら、この技術は、すべての目的にとって適切であるとは限らない。例えば、この技術は、例外ハンドラ自体のデバッグには有効ではない場合がある。さらに、この技術は、ハイレベルのイベント処理ルーチンのような保護されたシステム資源のデバッグには有効ではない場合がある。ハイレベルのイベント処理ルーチンは、例えば、例外よりも高い優先順位を有し、従って、例外に優先して例外の発生を妨げることがある。
【００１５】
シングルステップ・デバッギングへの他のアプローチは、エミュレーション・モードのようなハイレベルのオペレーティング・モードを入力し、各命令を個別にパイプライン１４へ供給するすることである。一般的に言えば、プロセッサは、ユーザ・モードおよびスーパバイザ・モードのような多くの動作モードを有することがあり、それについては以下でより詳細に議論される。エミュレーション・モードは、デバッギングのような動作のために適合された動作モードである。典型的には、エミュレーション・モードにおいて、パイプライン１４は、メイン・メモリ１６または命令キャッシュからではなく、エミュレーション命令レジスタから命令をフェッチする。パイプライン１４はまた、典型的には、メイン・メモリ１６またはデータ・キャッシュからではなく、エミュレーション・データ・レジスタからデータを読み書きする。
【００１６】
図４は、エミュレーション・モードで動作するプロセッサ１０を含む、シングルステップ・デバッギングのプロセスの一例を図示するフローチャートである。典型的には、プロセッサ１０は、ユーザ・モードまたはスーパバイザ・モードのようなエミュレーション・モード以外のモードで始まる。プロセッサ１０は、ユーザ・モード、スーパバイザ・モード、およびエミュレーション・モードよりも多数または少数の動作モードを有するものでもよい。ユーザ・モード動作は、一般に、動作のうちで最もよくある形式である。プロセッサ１０上で走るアプリケーションは、通常はユーザ・モード動作を呼び出す。ユーザ・モードでは、特定のプロセッサ機能またはシステム資源は侵入禁止であると考えられ、アクセスすることができない。禁止された機能または資源によって試みられたアクセスは、一般にエラータイプの例外を生じる。これとは対照的に、スーパバイザ・モードは、優先度の高い動作のモードの代表であり、そこではすべてのプロセッサの機能および資源が利用可能である。エミュレーション・モードは、通常は、スーパバイザ・モードよりも優先度の高い動作のモードであり、そうでなければ侵入禁止にされるシステム資源のデバッギングを許可する。従って、エミュレーション・モードのシングルステップ・デバッギングは、システム資源がデバッグされるときに好適である。
【００１７】
シングルステップ・デバッギングを開始するために（８０）、命令がパイプライン１４を通って送られる（８２）。命令がＷＢステージに達するとき、パイプライン１４はエミュレーション・イベント（８４）を呼び出す。エミュレーション・モードは、例えば、特定のプロセッサ・ポートへ信号を与えることによって、あるいはエミュレータ・モードを呼び出すために設計されたソフトウェアを実行することによって、異なるプロセッサ・アーキテクチャのための異なる方法で呼び出される。一旦エミュレーション・モードになると、ハイレベルのプロセッサ機能および資源が利用可能になり、プロセッサ１０への入力および出力が制限される。制御ユニット１２は、典型的には、パイプライン１４内の命令を取り消し（８６）、エミュレーション・サービス・ルーチンへ制御をルートする（８８）。エミュレーション・サービス・ルーチンは、プロセッサの状態を検知して入力／出力インターフェイス１８を経由して状態に関する情報を出力すること（９２）、および、レジスタの内容を検知して内容を出力すること（９４）を含む命令を含む。情報の出力は、出力レジスタまたは入力／出力装置２２へ情報を送ることを含み、メイン・メモリ１６へ情報を書き込むことを含む。エミュレーション・モードは、一般に、プロセッサ１０を、エミュレーション・モードを呼び出す前に動作していた状態に戻し、かつ、フェッチされる次の命令アドレスを含む「戻り（ｒｅｔｕｒｎ）」命令によって終了する（９６）。典型的には、各ステップ後のエミュレーション・モードからの戻りは自動的に行われるので（９６）、継続されるシングルステップ・デバッギング（９８）は、別々に指令されている各シングルステップ動作を呼び出すことができる。エミュレーション・モードに入るコマンドが付与されない場合、シングルステップ動作が終了する（１００）。
【００１８】
シングルステップ・デバッギングの制御は、多くの方法で統制することができる。図５によって図示されるシングルステップ・デバッギングを制御する方法の典型例は、１以上の制御ビットを使用するものであり、シングルステップのデバッグ動作および命令の生成が自動的に行われる。１以上の制御ビットのセットは、例外またはエミュレーション・イベントを引き起こすロジックによって検出される。図１に示されるプロセッサ１０の一例において、制御レジスタ２５に格納されるように２つの制御ビット２３Ａ，２３Ｂが示され、パイプライン１４へ利用可能にされている。制御ビット２３Ａ，２３Ｂは他の場所に格納することもでき、また、どのような種類のメモリ要素にも格納することができる。しかしながら、多くのプロセッサ・アーキテクチャが制御レジスタをサポートする。
【００１９】
２つの制御ビット２３Ａ，２３Ｂの使用によって、シングルステップ・デバッギングが柔軟になる。制御ビット２３Ａ，２３Ｂは、４つの異なるロジカル・コンフィギュレーション：「０−０」、「０−１」、「１−０」、「１−１」でセットすることができる。これらのコンフィギュレーションには、４つの異なる結果が割り当てられる。例えば、「０−０」コンフィギュレーションは規準であり、いかなる形式のシングルステップ・デバッギングも生じていないことを示す。制御ビット２３Ａ，２３Ｂをセットすること（１１０）は、「０−０」コンフィギュレーションから他のあるコンフィギュレーションへビットを変更することを含む。単一のステッピングのモードは、制御ビット２３Ａ，２３Ｂの機能である（１１２）。「０−１」コンフィギュレーションは、例えば、プロセッサ１０がユーザ・モードまたはスーパバイザ・モードであるかどうかにかかわらず、エミュレーション・モードへのエントリによってシングルステップ・デバッギングを生じる（１１８）。同様に、「１−０」コンフィギュレーションは、例えば、プロセッサ１０がユーザ・モードまたはスーパバイザ・モードであるかどうかにかかわらず、例外を受け取ることによりシングルステップ・デバッギングを生じる（１１６）。最後に、「１−１」コンフィギュレーションは、例えば、プロセッサ１０の現在の動作モードに依存するシングルステップ・デバッギングの形式の選択を生じる（１１４）。プロセッサ１０がユーザ・モードで動作しているとき、「１−１」コンフィギュレーションは、例外を受け取ることによってプロセッサ１０をシングルステップにするが（１１６）、プロセッサ１０がスーパバイザ・モードで動作しているとき、「１−１」コンフィギュレーションは、エミュレーション・モードになることによってプロセッサ１０をシングルステップにする（１１８）。図５に示された技術によって得られた結果は、次のように表１に要約される。
【００２０】
【表１】
2004516549.tif 000003
【００２１】
本発明の多くの実施例が記述された。例えば、各命令の後に例外を受け取ることにより、またはプロセッサをエミュレーション・モードに設定することにより、シングルステップ・デバッギングをする方法が記述された。プロセッサは、汎用計算機システム、デジタル処理システム、ラップトップ・コンピューター、パーソナル・デジタル情報処理端末（ＰＤＡ）および携帯電話を含む多種多様のシステムで実行することができる。これに関連して、上述されたシングルステップ・デバッギング技術は、消費者に販売する前または後に、システムをテストするために容易に使用することができる。そのようなシステムでは、プロセッサは、オペレーティング・システムおよび他のソフトウェア・アプリケーションを格納することができる、フラッシュ・メモリ・デバイスまたはＳＲＡＭデバイスのようなメモリ・デバイスに結合される。これらおよび他の実施例は、添付の請求項の範囲内である。
【図面の簡単な説明】
【図１】パイプライン方式のプログラム可能なプロセッサの一例を図示するブロック図である。
【図２】実行パイプラインの一例を図示する概略図である。
【図３】シングルステップ・デバッギングのプロセスを図示するフローチャートである。
【図４】シングルステップ・デバッギングの他のプロセスを図示するフローチャートである。
【図５】シングルステップ・デバッギング・プロセスの１つを選択するためのプロセスを示すフローチャートである。
【図１】
2004516549.tif 000004
【図２】
2004516549.tif 000005
【図３】
2004516549.tif 000006
【図４】
2004516549.tif 000007
【図５】
2004516549.tif 000008
【国際公開パンフレット】
2004516549.tif 000009
2004516549.tif 000010
2004516549.tif 000011
2004516549.tif 000012
2004516549.tif 000013
2004516549.tif 000014
2004516549.tif 000015
2004516549.tif 000016
2004516549.tif 000017
2004516549.tif 000018
2004516549.tif 000019
2004516549.tif 000020
2004516549.tif 000021
2004516549.tif 000022
2004516549.tif 000023
2004516549.tif 000024
2004516549.tif 000025
2004516549.tif 000026
2004516549.tif 000027
2004516549.tif 000028
2004516549.tif 000029
2004516549.tif 000030
2004516549.tif 000031
2004516549.tif 000032
2004516549.tif 000033
2004516549.tif 000034
【国際公開パンフレット（コレクトバージョン）】
2004516549.tif 000035
2004516549.tif 000036
【国際調査報告】
2004516549.tif 000037
2004516549.tif 000038
2004516549.tif 000039