(57)【要約】  データ処理回路とデバッグ回路を含むデータ処理装置を提供する。デバッグ回路は、デバッグモードで動作するときに、処理回路の動作を制御する。データ処理回路は、デバッグモードに入ると、データ処理装置の現在の動作状態を判定する。データ処理回路は、判定された現在の動作状態に応じて、デバッグ命令セットとして使用される複数の命令セットの１つを割り当てる。
2013542499.tif 000002
【特許請求の範囲】
【請求項１】
プログラム命令の実行に応じてデータ処理動作を実施するためのデータ処理回路であって、少なくとも動作モードおよびデバッグモードで動作するように構成される、データ処理回路と、
前記データ処理回路と前記データ処理回路の外部のデバッガユニットとの間にインターフェースを設けるように構成されるデバッグ回路であって、前記データ処理回路が前記デバッグモードで動作しているときに、前記データ処理回路の動作を制御するように構成される、デバッグ回路と、を備える、データ処理装置であって、
前記データ処理回路が前記デバッグモードに入ったときに、前記データ処理装置の現在の動作状態を判定し、現在の前記動作状態に応じて、複数の命令セットのうちの１つをデバッグ命令セットとして使用するように割り当てるように、前記データ処理回路が構成される、データ処理装置。
【請求項２】
前記データ処理回路が、前記デバッガユニットに対して、前記データ処理回路を制御するために使用される割り当てられた前記デバッグ命令セットを表示するように構成される、請求項１に記載のデータ処理装置。
【請求項３】
前記データ処理回路が、複数の特権レベルで動作するように構成可能であり、異なる特権レベルにおいて、前記データ処理回路は、メモリおよびレジスタセットのうちの少なくとも１つに対する異なるアクセス許可をプログラム命令に与える、請求項１に記載のデータ処理装置。
【請求項４】
前記特権レベルの異なるレベルにおいて、前記データ処理回路は各々異なる仮想メモリアドレスから物理メモリアドレスへの変換規則を適用する、請求項３に記載のデータ処理装置。
【請求項５】
複数の前記特権レベルの各々に対応する、複数の異なるソフトウェア階層レベルに対応するプログラム命令を実行するように構成される、請求項３または４に記載のデータ処理装置。
【請求項６】
複数の前記特権レベルのうちの第１のレベルはアプリケーション層に対応し、複数の前記特権レベルのうちの第２のレベルは動作システム層に対応する、請求項５に記載のデータ処理装置。
【請求項７】
複数の前記特権レベルのうちの第３のレベルはハイパーバイザ層に対応する、請求項６に記載のデータ処理装置。
【請求項８】
更なる特権レベルがセキュリティ監視層に対応する、請求項６または７に記載のデータ処理装置。
【請求項９】
複数の前記特権レベルの異なるレベルの間での切り換え時に、前記データ処理回路は、更新されたデバッグ命令セットを生成し、更新された前記デバッグ命令セットを前記デバッガユニットへ表示するために、現在の前記動作状態および前記デバッグ命令セットの前記判定を繰り返すように構成される、請求項３〜８のいずれか一項に記載のデータ処理装置。
【請求項１０】
現在の前記動作状態は、各々異なるオペランドビット幅を有する複数の異なるプロセッサ動作状態から選択される、請求項１〜９のいずれか一項に記載のデータ処理装置。
【請求項１１】
複数の前記動作状態は、少なくとも３２ビット動作状態および６４ビット動作状態を含む、請求項１０に記載のデータ処理装置。
【請求項１２】
前記プログラム命令のオペランドを記憶するための複数のレジスタを備えるデータ処理装置であって、異なる前記オペランドビット幅は、前記データ処理回路によって使用される異なるレジスタ幅に対応する、請求項１０または１１に記載のデータ処理装置。
【請求項１３】
複数の前記レジスタの少なくとも１つのサブセットは可変幅レジスタとして構成される、請求項１２に記載のデータ処理装置。
【請求項１４】
前記データ処理回路は、前記デバッガユニットへアクセス可能な少なくとも１つのレジスタへ書き込むことによって、前記デバッガユニットへ前記デバッグ命令セットを表示するように構成される、請求項２〜１３のいずれか一項に記載のデータ処理装置。
【請求項１５】
前記データ処理回路は、前記デバッガユニットへ制御コマンドを送信することによって、前記デバッガユニットへ設定された前記デバッグ命令セットを表示するように構成される、請求項２に記載のデータ処理装置。
【請求項１６】
前記デバッガユニットにとってアクセス可能な所与の位置に、現在の前記動作状態の記憶された値を維持するように構成される、請求項１〜１５のいずれか一項に記載のデータ処理装置。
【請求項１７】
現在の前記動作状態は各々のオペランドビット幅を有する複数のプロセッサ動作状態から選択され、前記デバッガユニットにとってアクセス可能な第１の位置に、複数の前記特権レベルの各々と関連付けられるオペランドビット幅の記録を維持するように構成される、請求項３に記載のデータ処理装置。
【請求項１８】
前記データ処理装置が前記デバッガユニットにとってアクセス可能な第２の位置で動作する現在の特権レベルの記録を維持するように構成される、請求項１７に記載のデータ処理装置。
【請求項１９】
前記データ処理回路は、前記各々のオペランドビット幅を有する複数の前記プロセッサ動作状態から前記デバッグ命令セットを判定するために、現在の前記特権レベルを使用する、請求項１８に記載のデータ処理装置。
【請求項２０】
現在の前記プロセッサ動作状態に対応する現在のオペランドビット幅の記録を維持するように構成される、請求項１〜１６のいずれか一項に記載のデータ処理装置。
【請求項２１】
前記デバッガユニットは、現在の前記オペランドビット幅の前記記録から、前記データ処理回路によって割り当てられる前記デバッグ命令セットを推定するように構成される、請求項２０に記載のデータ処理装置。
【請求項２２】
前記デバッガユニットは、前記データ処理回路が動作している現在の特権レベルを判定するために、少なくとも１つのプログラム命令を前記データ処理回路によって実行させるように構成される、請求項２１に記載のデータ処理装置。
【請求項２３】
割り当てられた前記デバッグ命令セットは、非デバッグモードで前記データ処理装置による実行のために利用可能な全命令セットのサブセットを備える、請求項１〜２２のいずれか一項に記載のデータ処理装置。
【請求項２４】
前記全命令セットは、Ａ３２命令セット、Ｔ３２命令セット、Ｔ３２ＥＥ命令セット、およびＡ６４命令セットのうちの１つを備える、請求項２３に記載のデータ処理装置。
【請求項２５】
前記全命令セットの前記サブセットは少なくともブランチ命令を除外する、請求項２３または請求項２３または２４に記載のデータ処理装置。
【請求項２６】
データ処理装置の動作のデバッグ処理を実施するデバッグユニットであって、前記データ処理装置は少なくともデバッグモードと動作モードで、また複数の異なる動作状態において動作可能であり、
前記データ処理装置内の記憶場所から、前記データ処理装置の複数の前記動作状態の１つを指定する現在のオペランドビット幅の記録を読み取るための読み取り回路と、
前記デバッグ処理を実施するために前記データ処理装置のデバッグ回路へ供給するためのデバッグ命令を生成する際に使用されるデバッグ命令セットを推定するための推定回路と、を備える、デバッグユニット。
【請求項２７】
前記推定回路は、前記データ処理装置から受信される制御コマンドに基づいて、前記デバッグ命令セットを推定するように構成される、請求項２６に記載のデバッグユニット。
【請求項２８】
前記推定回路は、前記データ処理装置内の現在の前記オペランドビット幅の記録の前記読み取り内容に基づいて、前記デバッグ命令セットを推定するように構成される、請求項２６に記載のデバッグユニット。
【請求項２９】
前記データ処理装置は複数の異なる特権レベルで動作可能であり、異なる特権レベルにおいて、前記データ処理装置はメモリおよびレジスタセットのうちの少なくとも１つに対する異なるアクセス許可をプログラム命令に与え、前記推定回路は、前記データ処理装置が動作している現在の特権レベルを判定するために、少なくとも１つのプログラム命令を前記データ処理装置によって実行させるように構成される、請求項２７に記載のデバッグユニット。
【請求項３０】
データ処理装置の動作のデバッグ処理を実施するためのデバッグ方法であって、前記データ処理装置は少なくともデバッグモードおよび動作モードで、複数の異なる動作状態で動作可能であり、
前記データ処理装置内の記憶場所から、前記データ処理装置の複数の前記動作状態のうちの１つを指定する現在のオペランドビット幅の記録を読み取ることと、
前記デバッグ処理を実施するために前記データ処理装置のデバッグ回路へ供給するためのデバッグ命令を生成する際に使用されるデバッグ命令セットを推定することと、を含む、デバッグ方法。
【請求項３１】
請求項３０に記載のデバッグ方法を実装するための、コンピュータプログラム。
【請求項３２】
データ処理装置上で実行するコンピュータプログラムによって提供される仮想マシンであって、請求項１〜２５のいずれか一項に記載のデータ処理装置に従って命令実行環境を提供する、仮想マシン。
【請求項３３】
プログラム命令の実行に応じてデータ処理動作を実施するための手段であって、少なくとも動作モードとデバッグモードで動作するように構成されデータ処理動作を実施する手段と、
データ処理を実施するための前記手段とデータ処理装置の外部のデバッグ分析のための手段との間のインターフェースを提供するように構成されるデバッグ処理のための手段であって、データ処理を実施するための前記手段が前記デバッグモードで動作するときに、データ処理を実施するための前記手段の動作を制御するように構成されるデバッグ処理のための手段と、を備え、
データ処理を実施するための前記手段は、データ処理を実施するための前記手段が前記デバッグモードに入ったときに、データ処理を実施するための前記手段の現在の動作状態を判定し、現在の前記動作状態に応じて、デバッグ命令セットとして使用される複数の命令セットの１つを割り当て、デバッグ分析のための前記手段に、データ処理を実施するための前記手段を制御するために使用される前記割り当てられたデバッグ命令セットを表示するように構成される、データ処理装置。
【請求項３４】
少なくとも動作モードとデバッグモードで動作するように構成されるデータ処理回路上でのプログラム命令の実施に応じて、データ処理動作を実施することと、
前記データ処理回路と前記データ処理回路の外部のデバッガユニットとの間のデバッグインターフェースを提供することであって、前記デバッグインターフェースは、前記データ処理回路が前記デバッグモードで動作しているときに、前記データ処理回路の動作を制御するように構成される、デバッグインターフェースを提供することと、
前記データ処理回路がデバッグモードに入ると、前記データ処理回路の現在の動作状態を判定し、現在の前記動作状態に応じて、デバッグ命令セットとして使用される複数の命令セットの１つを割り当てることと、を含む、データ処理方法。
【請求項３５】
請求項３４の方法を実施するためのコンピュータプログラム製品。
【請求項３６】
データ処理装置の動作のデバッグ処理を実施するための装置であって、前記データ処理装置は少なくともデバッグモードと動作モード、また複数の異なる動作状態において動作可能であり、デバッグユニットは、
前記データ処理装置の複数の前記動作状態の１つを指定する現在のオペランドビット幅の記録を、前記データ処理装置内の記憶場所から読み取るための手段と、
前記デバッグ処理を実施するために前記データ処理装置のデバッグ回路へ供給するためのデバッグ命令を生成する際に使用されるデバッグ命令セットを推定するための手段と、を備える、装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ処理に関する。更に詳しくは、本発明は、データ処理装置のデバッグ処理に関する。
【背景技術】
【０００２】
データ処理装置のデバッグ処理は、データ処理装置上で作動するコンピュータプログラムまたはデータ処理装置を備える一つの電子ハードウェア内のバグまたは欠陥を発見し、これらの数量を低減する系統的なプロセスである。これらは時間の経過とともに発展していて、データ処理装置等に関して作動するように設計されるマイクロプロセッサやソフトウェアは更に複雑になっていて、デバッグ処理のプロセスは作動時の欠陥を検出するための効率的な方法やシステムを考案する点では益々困難となってきている。デバッグ作業を実施するために、データ処理装置を切り替えるデータ処理装置のデバッグモードを設けることが知られている。
【０００３】
最近のマイクロプロセッサが複雑になるに伴い、現在では、所与のマイクロプロセッサでは、複数の命令セットを実施することができることが珍しくない。例えば、ＡＲＭ７ＴＤＲＩ（登録商標）プロセッサコアは、３２ビット幅オペレーションコードを含む通常の「Ａ３２」命令セット（「ＡＲＭ」命令セットとしても知られる）と、１６ビット幅オペレーションコードに圧縮された最も一般的に使用されるＡ３２命令のサブセットを提供する「Ｔ３２」で表記される更にコンパクトな命令セット（「サム」命令セットとしても知られる）との両方を実行することができる。実行時には、１６ビット幅命令をフル３２ビット幅Ａ３２命令へ展開できるか、または専用の復号ユニットを直接使用して、実行できる。したがって、所与のデータ処理装置は複数の異なる命令セットを実行することができる。Ａ３２命令セットとＴ３２命令セットとの両方とも３２ビット幅データ上で動作する。
【０００４】
複数の異なる命令セットを実行することができる所与のデータ処理装置に加えて、多くの最近のデータ処理装置は、複数の異なる動作状態で、または複数の異なる「特権レベル」で動作することができる。異なる特権レベルにおいて、データ処理装置はメモリおよびレジスタのセットのうちの少なくとも１つに対する異なるアクセス許可をプログラム命令に与える。例えば、標準特権レベルで処理回路へアクセス可能な制御レジスタのセットは、典型的には、更に高い特権レベルで動作時、例えば、データ処理装置がユーザーモードではなくシステムモードで動作しているときには、データ処理装置へアクセス可能な制御レジスタのセットより更に制限される。異なる特権レベルでの動作時には、データ処理装置は、典型的には、プログラム命令のメモリアドレスを変換するために、異なる仮想から物理へのメモリアドレス変換スキームを適用する。
【０００５】
例えば、仮想化を実行し、複数の異なるゲストオペレーティングシステムが同じデータ処理装置上で作動できるようにするハイパーバイザを動作させるデータ処理システム内においては、ハイパーバイザの特権レベルの下に位置する（即ち、ハイパーバイザの監視の下で動作する）データ処理装置の任意の特権レベルは、仮想化プロセスに対応したアドレス変換の追加レベルを有する。アドレス変換の追加レベルは、「仮想変換表ベースレジスタ」を利用する。しかし、ハイパーバイザ層自体に対応する特権レベルは、仮想変換表ベースレジスタへの参照を必要としないが、変換表ベースレジスタのみを参照するので、1つのより小さい変換ステージが関与する。
【０００６】
複数の命令セットを実行することができるプロセッサにおいては、データ処理装置がデバッグモードであるときに使用するためのデフォルトデバック命令を課すことが知られている。例えば、ＡＲＭ１０、ＡＲＭ１１およびＡＲＭ  Ｃｏｒｔｅｘプロセッサにおいては、デフォルト状態は、データ処理装置がデバッグモードに切り替わっている場合には、必ず、Ａ３２命令セットを使用することであった。例えば、ＡＲＭ７ＴＤＭＩ（登録商標）およびＡＲＭ９プロセッサにおいて使用される別の公知の手法は、デバッグモードへ入ったときに、命令セットの状態はデバッグモードへ入ったときの状態とし、デバッグモードへ入ったときにデータ処理装置がＴ３２命令を実行していた場合に、Ｔ３２命令がデバッグプロセスに使用されることになるか、または一方で、データ処理装置がデバッグモードに入ったときにＡ３２命令を実行していた場合には、Ａ３２命令を使用して、デバッグプロセスが実行されることになる。
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかし、データ処理装置の動作状態、即ち、デバッグ動作が実施される場合にデータ処理装置が動作している特権レベルと、データ処理装置のデバッグモードでの使用のために割り当てられる命令セットとの間で発生し得る不整合のために、問題が発生する可能性がある。したがって、例えば、プロセッサの現在の特権レベルに適した仮想から物理へのアドレス変換スキームは、選択されたデバッグ命令セットと互換性がない可能性がある。この場合には、更に大きいオペランドビット幅を有する命令がデバッグプロセスに使用されなければならない可能性があるので、命令のための可変幅レジスタを有するように構成可能なデータ処理装置において特定の問題を呈し、一方で、プロセッサの動作状態は、３２ビットの仮想から物理へのアドレス変換スキームがデバッグモードで実行されることを意味する。データ処理装置によって実行可能な複数の命令セットの各々に対応する多くのビットパターンに対応するように、デバッグモジュールハードウェアが設計されていなければならないので、プロセッサ動作状態とデバッグ命令セットとの間の、この潜在的な不整合により、デバッグ作業が更に複雑になる。したがって、デバッグ回路の複雑さを低減し、更に複数の異なる特権レベルで動作できて、ならびに／または複数の異なる命令セットを実行できるデータ処理装置をデバッグする柔軟性を提供する必要性がある。
【課題を解決するための手段】
【０００８】
第１の態様により、本発明は、
プログラム命令の実行に応じてデータ処理動作を実施するためのデータ処理回路であって、少なくとも動作モードとデバッグモードで動作するように構成されるデータ処理回路と、
前記データ処理回路と前記データ処理回路の外部デバッガユニットとの間にインターフェースを提供するように構成されるデバッグ回路であって、前記データ処理回路が前記デバッグモードで動作する場合に前記データ処理回路の動作を制御するように構成されるデバッグ回路と、を備えるデータ処理装置であって、
前記データ処理回路が前記デバッグモードに入ったときに、前記データ処理装置の現在の動作状態を判定し、現在の前記動作状態に応じて、複数の命令セットのうちの１つをデバッグ命令セットとして使用するように割り当てるように、前記データ処理回路が構成されるデータ処理装置を提供する。
【０００９】
本発明では、データ処理回路がデバッグモードに入ると、データ処理装置の現在の動作状態を判定し、現在の動作状態に応じて、デバッグ命令セットとして使用される複数の命令セットのうちの１つを割り当てることによって、良好な柔軟性レベルの余裕ができると認識している。これは、本発明が、デバッグモードでは、単一デフォルト命令セットより多くの命令セットを使用し、データ処理装置の現在の動作状態に応じて、選択された命令セットを適切に選択する機会を提供するからである。これにより、データ処理回路の現在の動作状態と割り当てられたデバッグ命令セットとの間の互換性の可能性が改善される。
【００１０】
デバッグモードに入ると単に現在の命令セットを選択しないことにより、デバッグモードで対応する必要がある命令の合計数を低減することができる。実際には、データ処理装置によって実行できる全体の複数の命令セットのサブセットのみを、デバッグモードで実施する必要がある。これは、デバッグ命令の検証を簡略化し、デバッグ処理回路のコストを低減する。効果的には、デバッグモードに入ると、データ処理回路の現在の動作状態に応じて複数の命令セットを割り当てることができるので、デバッグモードで復号される命令は、必ず、現在の動作状態のメモリ構成（即ち、権限レベル）に適したものになる。
【００１１】
データ処理装置は、データ処理ハードウェアの異なる表示に関係する多くの異なる動作状態のいずれかの１つで動作するように構成され、適切なデバッグ命令セットは現在の動作状態の特定の特性に従って割り当てられることが理解される。しかし、ある実施形態においては、データ処理回路は、複数の特権レベルで動作するように構成可能であり、異なる特権レベルにおいて、データ処理回路はメモリおよびレジスタセットのうちの少なくとも１つに対する異なるアクセス許可をプログラム命令に与える。例えば、高位の特権レベルにおいては、データ処理装置は下位の特権レベルにおけるよりも多くの制御レジスタセットにアクセスできる。異なる特権レベルに適用可能なメモリおよび／またはレジスタの異なる表示により、デバッグ命令セットとプロセッサの現在の動作状態との間の互換性は更に重要になる。現在の特権レベルに応じて複数の代替デバッグ命令セットからデバッグ命令セットを割り当てる能力により、デバッグ動作の効率が改善される。
【００１２】
異なる特権レベルにおいて、データ処理装置には、メモリおよびレジスタのうちの少なくとも１つへのアクセス許可の差は別にして、動作状態の様々な差がある可能性があることが理解される。しかし、１つの実施形態においては、異なる特権レベルにおいては、データ処理回路は物理メモリアドレス変換規則に各々異なる仮想メモリアドレスを適用する。異なる動作状態において、異なる仮想メモリアドレスから物理メモリアドレスへの変換規則がデータ処理装置によって使用されるときには、デバッグモードで不適切なデバッグ命令セットが割り当てられれば、デバッグ動作は極度に複雑になる。例えば、現在の動作状態が３２ビット仮想アドレスを物理アドレスに変換するように構成されるゲストオペレーティングシステムであり、一方、デフォルト命令セットが６４ビット仮想アドレスを生成する命令を備える場合には、問題が発生する可能性がある。この場合には、６４ビットデバッグ命令から生成される３２ビット仮想アドレスか、または３２ビット仮想アドレスを変換するように構成されるシステム内で６４ビット仮想アドレスを変換する手段を必要とする。したがって、プロセッサの現在の動作状態に応じてデバッグ命令セットを適切に割り当てる能力は、現在で実装された仮想メモリアドレスから物理メモリアドレスへの変換スキームとデバッグ動作のために実行される命令との間の非互換性を避けるためには有用である。
【００１３】
ある実施形態においては、データ処理装置は、複数の特権レベルの各々に対応する、複数の異なるソフトウェア階層レベルに対応するプログラム命令を実行するように構成される。したがって、例えば、１つの特権レベルはゲストオペレーティングシステムに対応し、一方で、他の特権レベルはユーザーアプリケーションに対応してもよい。本来は６４ビット命令を実行可能なデータ処理装置上で３２ビット動作システムを実行できる要件等のソフトウェアに関して後方互換性があるデータ処理装置についての一般的な要件により、問題が発生する可能性がある。現在の動作状態に応じ、かつ現在のソフトウェア階層レベルに従って適切なデバッグ命令セットを割り当てる能力により、後方互換性を併せ持ったシステム内でデバッグ処理に充分に対処するデバッグシステム内で柔軟性が提供される。
【００１４】
異なるソフトウェア階層レベルに対応する複数の特権レベルは、ソフトウェア層の多くの変形した組合せを備える可能性があることが理解される。しかし、１つの実施形態においては、複数のソフトウェア階層は、アプリケーション層および動作システム層に加えて、ハイパーバイザ層を備える。これにより、都合良くシステムは仮想化に対処できる。
【００１５】
更なる実施形態においては、アプリケーションシステム層およびハイパーバイザ層付き、または無しの動作システム層に加えて、セキュリティ監視層が提供される。セキュアモードでの動作時に確実に適切なデバッグ命令セットが選択されることは、データ処理装置の整合性を維持するために、特に重要である。
【００１６】
最初にデバッグモードに入ると、単一のデバッグ命令セットが、デバッグモードに入る場合に現在の動作状態に応じて割り当てられることが理解される。しかし、ある実施形態においては、データ処理装置は、複数の特権レベルの異なるレベル間で切り換えるために、デバッグモード自体内から構成可能であり、データ処理回路は判定の現在の動作状態の判定を繰り返すように、またデータ処理装置の新規に切り換えられた動作状態に応じてデバッグ命令セットの割当を繰り返すように構成される。これにより、デバッグ動作が行われている間での現在の動作状態の切り換えに関わらず、このような場合でも、適切なデバッグ命令セットが割り当てられる。これにより、可能性があるシステムバグを更に調査するために、１つの動作状態から他の動作状態へ切り換えるようにデバッグ回路を制御できる更なる柔軟性が提供されるとともに、この柔軟性に関わらず、デバッグ命令セットと現在の動作状態との間の互換性が確実に維持されるようになる。
【００１７】
データ処理装置の現在の動作状態は、同一のオペランドビット幅を有する複数の異なるプロセッサ動作状態から選択され得ることが理解される。しかし、１つの実施形態においては、現在の動作状態は、各々異なるオペランドビット幅を有する複数の異なるプロセッサ動作状態から選択される。異なるオペランドビット幅を有する命令を実行できるデータ処理装置においては、例えば、２つの異なるオペランドビット幅等の間で異なる仮想メモリアドレスから物理メモリアドレスへの変換スキームのために、互換性の問題が発生する恐れがある。したがって、現在の動作状態により適切にデバッグ命令セットを割り当てる能力は、デバッグモードの場合に極めて面倒な変換プロセスを実行しなければならないことを避ける際には有用である。いくつかのこのような種類の実施形態においては、複数のオペランドビット幅を有する動作状態は、少なくとも３２ビット動作状態と６４ビット動作状態とを備える。
【００１８】
メモリからオペランドを読み取ることによって、命令を実行するデータ処理装置等のいずれかのデータ処理装置へ、本技術を適用し得ることが理解される。しかし、ある実施形態においては、データ処理装置は、プログラム命令のオペランドを記憶するための複数のレジスタを備え、異なるオペランドビット幅は処理回路によって使用される異なるレジスタ幅に対応する。可変レジスタ幅を使用するように構成可能なデータ処理装置においては、デバッグ命令セットの割当は、可変幅レジスタの現在の設定に応じて、適切に選択できるので、現在の動作状態に応じて適切なデバッグ命令セットを割り当てることができることは有用である。このようなある実施形態においては、異なるオペランドビット幅を有する複数のレジスタのサブセットは、可変幅レジスタとして構成される。
【００１９】
ある実施形態においては、データ処理回路は、デバッグ回路にとってアクセス可能な少なくとも１つのレジスタへ書き込むことにより、現在の動作状態に応じて、デバッグ回路へ割り当てられたデバッグ命令セットを表示するように構成される。これにより、デバッグ回路による使用のために、適切なデバッグ命令セットを表示する便利な方法が提供される。別に実施形態においては、データ処理回路は、制御コマンドをデバッガユニットへ送信することにより、デバッガユニットへのデバッグ命令セットを表示するように構成される。これにより、レジスタ上のスペースが節約される。
【００２０】
データ処理装置は、多くの異なる方法のいずれか１つで現在の動作状態を判定できることが理解される。しかし、ある実施形態においては、データ処理装置は、デバッガユニットにとってアクセス可能な所与の位置で現在の動作状態の記憶された値を維持するように構成される。いつデータプロセッサが非デバッグモードからデバッグモードへ切り換わるかに関わらず、必要な場合には必ず、デバッガユニットによって現在の動作状態に対して実行するのは簡単であり、また容易なアクセスを可能にする。
【００２１】
データ処理装置が、複数の異なる特権レベルで動作するように構成可能なある実施形態においては、現在の動作状態は、各々のオペランドビット幅を有する複数のプロセッサ動作状態から選択され、データ処理装置は、デバッグ回路にとってアクセス可能な第１の位置の複数の特権レベルの各々に関連付けられたオペランドビット幅の記録を維持するように構成される。異なるプロセッサ動作状態のオペランドビット幅は、全てが必ずしも異なっておらず、例えば、４つの特権レベルと２つのビット幅は、２つ以上の特権レベルのために同じオペランドビット幅を使用できる。これにより、対応するオペランドビット幅にそれぞれ可能な特権レベルのための記憶の便利な手段が提供され、これは、適切なデバッグ命令セットが容易に判定され得ることを意味する。異なる時間において、データ処理装置は、例えば、異なるプログラム動作または異なるオペレーティング動作システムを実行する場合があり、これにともない、所与の特権レベルに関連付けられたオペランドビット幅は異なる時間では異なる場合があることが理解されるので、維持された記録内に現在で記憶されるオペランドビット幅は現在の時間に依存することに留意する必要がある。
【００２２】
複数の特権レベルの各々に関連付けられたオペランドビット幅の記録が第１の位置に記憶される、このようなある実施形態においては、データ処理装置は、データ処理回路が、デバッガユニットにとってアクセス可能な第２の位置で動作している現在の特権レベルの記録を維持するようにも構成される。第１の位置と第２の位置の両方を参照することにより、デバッガユニットは、現在の特権レベルに対応するオペランドビット幅を容易に判定することができ、したがって、現在のオペランドビット幅に応じて、データ処理回路が割り当てたデバッグ命令セットを適切に判定することができる。
【００２３】
ある実施形態においては、データ処理回路は、前記各々のオペランドビット幅を有する複数の前記プロセッサ動作状態から前記デバッグ命令セット判定するために現在の前記特権レベルを使用する。このようなある実施形態においては、データ処理装置は、現在のプロセッサ動作状態に対応する現在のオペランドビット幅の記録を維持するように構成される。
【００２４】
別の実施形態においては、デバッガユニットは、デバッグ命令セットを推定するために、また、少なくとも１つのプログラム命令がデータ処理回路によって実行されて、データ処理回路が動作している現在の特権レベルを判定するために、現在の前記オペランドビット幅の前記記録を使用するように構成される。複数の可能な特権レベルの各々についてのオペランドビット幅の記憶位置を設けるよりも使用するレジスタスペースは少ないので、これは実行するのがより安価である。使用するスペースが少ないという事実により、現在の例外レベルを判定するために必要な論理に関して追加コストが相殺される。デバッガユニットは、この場合のデバッグ命令セットを推定するが、データ処理回路は適切なデバッグ命令セットの最初の判定を行い（即ち、デバッグ命令セットを実際に割り当てる）、次いでデバッガユニットは、レジスタの内容に基づいて、データ処理回路が何を実行したかを算定する。
【００２５】
一方、現在の特権レベルの記録と、少なくとも複数の特権レベルに関連付けられたオペランドビット幅の記録の両方を使用する実施形態においては、記憶位置のこれら２つのセットの状態は、プロセッサ内のいずれかの位置で、例えば、レジスタの状態を都合よく反映しやすく、更に情報をデバッガへ提供し、適切なデバッグ命令セットを判定するために実行されるプログラム命令の数を低減する。
【００２６】
割り当てられたデバッグ命令セットは、非デバッグモードのデータ処理装置による実行のために使用可能な全命令セットを提供し得ることが理解される。しかし、ある実施形態においては、割り当てられたデバッグ命令セットは全命令セットのサブセットを備える。このようなある実施形態においては、サブセットは、Ａ３２命令セット、Ｔ３２命令セット、Ｔ３２ＥＥ命令セット、およびＡ６４命令セットのうち１つのサブセットである。したがって、デバッグモードで実行するためには望ましくない、および／または有用でない全命令セットのこれらの命令を、容易に、デバッグモードでの使用のために割り当てられる全命令のサブセットから除外することができる。例えば、所与の全命令セットの分岐命令を、デバッグモードのときに未定義にさせることができる。
【００２７】
第２の態様により、本発明は、
少なくとも動作モードおよびデバッグモードで動作するように構成されるデータ処理回路上でのプログラム命令の実施に応じて、データ処理動作を実施することと、
前記データ処理回路と前記データ処理回路の外部のデバッガユニットとの間のデバッグインターフェースを提供することであって、前記デバッグインターフェースは、前記データ処理回路が前記デバッグモードで動作しているときに、前記データ処理回路の動作を制御するように構成されることと、
前記データ処理回路が前記デバッグモードに入ると、前記データ処理回路の現在の動作状態を判定し、現在の前記動作状態に応じて、デバッグ命令セットとして使用される複数の命令セットのうちの１つを割り当てることを備える、データ処理方法を提供する。
【００２８】
第３の態様により、本発明は、
プログラム命令の実行に応じてデータ処理動作を実施するための手段であって、少なくとも動作モードとデバッグモードで動作するように構成されデータ処理動作を実施する手段と、
前記データ処理を実施するための手段と前記データ処理装置の外部のデバッグ分析のための手段との間のインターフェースを提供するように構成されるデバッグ処理のための手段であって、前記データ処理を実施するための手段が前記デバッグモードで動作するときに、前記データ処理を実施するための手段の動作を制御するように構成されるデバッグ処理のための手段と、を備え、
前記データ処理を実施するための手段は、データ処理を実施するための前記手段が前記デバッグモードに入ったときに、データ処理を実施するための前記手段の現在の動作状態を判定し、現在の前記動作状態に応じて、デバッグ命令セットとして使用される複数の命令セットの１つを割り当てるように構成された、データ処理装置を提供する。
【００２９】
本発明の様々な各々の態様および特徴は、添付の請求項において明確にされる。従属請求項の特徴の組合せは、適宜独立請求項の特徴と組み合わせられてもよく、単に請求項には明示的に規定されていないのみである。
【００３０】
以降、添付の図面を参照して、実施例のみとして、本発明の好ましい実施形態が説明される。
【図面の簡単な説明】
【００３１】
【図１】プロセッサが可変レジスタ幅を実行し、デバッグモジュールが設けられ、外部デバッグインターフェースレジスタを備える、本発明の第１の実施形態に係るデータ処理装置を概略的に示す図である。
【図２】図１のデータ処理装置の複数の異なる動作状態、および、それらの動作状態がどのように複数の異なる特権レベルと各々の複数のソフトウェア階層レベルに対応するかを概略的に示す図である。
【図３】４つの異なる特権レベル、どのように異なる特権レベル間の切り換えがデータ処理装置によって実行されるか、およびどのように異なる特権レベルが仮想アドレスから物理アドレスへの変換のための異なるスキームを実行するかを概略的に示す図である。
【図４Ａ】図１の外部デバッグインターフェースレジスタ（ＥＤＩＦＲ）内のビット割当のサブセットを概略的に示す図である。
【図４Ｂ】図１のＥＤＩＦＲの特権レベルインジケータビットについてのビットパターンおよび各々の特権レベルを概略的に示す図である。
【図４Ｃ】複数のレジスタ幅ビットパターンの各々で、４つの特権レベルの各々の対応するプロセッサ状態を概略的に示す図である。
【図５】３２ビットプロセッサ動作状態および６４ビットプロセッサ動作状態の両方について、プロセッサ動作状態と使用可能な対応する命令セットとの間のマッピングを概略的に示す図である。
【図６】どのように図１のデータ処理装置によって適切なデバッグ命令セットが割り当てられるかを概略的に示すフローチャートである。
【図７】仮想マシン実装を概略的に示す図である。
【発明を実施するための形態】
【００３２】
図１は、本発明の実施形態に係るデータ処理装置を概略的に示す。データ処理装置は、「システムオンチップ」を形成する複数の回路コンポーネントを備える集積回路１００を備える。集積回路１００は、実行パイプライン１１０、１組の汎用レジスタ１２０、１組の制御レジスタ１６０、デバッグモジュール１３０、デバッグポート１３２、メモリ管理ユニット（ＭＭＵ）およびオンチップメモリ１４２を備える。更に、データ処理装置１００は、オフチップメモリ１４４へのアクセスを有する。データ処理装置１００のデバッグポート１３２は、データ処理回路１００のデバッグを補助するために、１組のデバッガソフトウェア１５２を実行するように構成されるホストパーソナルコンピュータ１５０へ接続される。
【００３３】
図１のデータ処理装置１００は、ＲＩＳＣ（短縮命令セット演算）アーキテクチャを有し、これは、データを処理する命令がレジスタ上でのみ動作し、メモリへアクセスする命令から分離しているロードストアアーキテクチャである。データ処理装置１００は、パイプライン化されたデータ処理装置であり、実行パイプライン１１０は、フェッチステージ、復号ステージ、および実行ステージ（図示しない）を備える。レジスタの組は、汎用レジスタ１２０、更に制御レジスタ１６０を備える。この特定の実施形態においては、レジスタ１２０の組は、複数の６４ビットレジスタを備え、これらは、可変幅レジスタとして動作するように構成可能であり、データ処理回路１００が３２ビットレジスタ幅動作状態で動作しているとき、即ち、実質的に３２ビットデータを処理し仮想アドレスの３２ビット（３２ビットプログラムと称する、３２ビットプログラム命令を備える）を使用するときには、レジスタ１２０の組は、データ処理装置によって３２ビットレジスタとして見なされ、一方、データ処理回路１００が６４ビットレジスタ幅動作状態で動作しているとき、即ち、実質的に６４ビットデータを処理し仮想アドレスの３２ビットを超えるビットを使用するプログラム（６４ビットプログラムと称する、６４ビットプログラム命令を備える）を実行するときには、レジスタ１２０の組の各レジスタのフル６４ビット幅が利用されるように構成される。しかし、処理回路１００が３２ビットレジスタ幅動作状態で動作しているときには、ある６４ビット動作（即ち、６４ビット値の広い乗算およびロード／ストア）を実行できることに留意する。同様に、処理回路１００が６４ビットレジスタ幅動作状態で動作しているときには、ある３２ビット動作が更に実施されてもよい。
【００３４】
動作の非デバッグモードのときには、データ処理回路１００は、システムメモリから、即ち、オンチップメモリ１４２またはオフチップメモリ１４４からの実行命令を実行する。メモリ管理ユニット１４０は、データ処理装置１００の現在の動作状態に従ってメモリ１４２、１４４へのアクセスを制御し、例えば、ユーザーモードでは、システムモードでアクセス可能であるよりも、データ処理回路１００にとってアクセス可能であるメモリ位置のサブセットは少なくなる。
【００３５】
メモリ管理ユニット１４０は、実行パイプライン１１０によるメモリへの全てのアクセス要求の取扱いを担い、その機能は、仮想メモリアドレスから物理メモリアドレスへの変換、メモリ保護、キャッシュ制御およびバスアービトレーションを含む。データ処理装置１００がデバッグモードに入ると、実行パイプラインは、直接、デバッグモジュール１３０の命令伝達レジスタ（ＩＴＲ）１３４からの命令を実行する。命令伝達レジスタ１３４は、ホストＰＣ１５０上で実行するデバッガソフトウェア１５２の制御の下で、デバッグ命令がロードされ、これは、デバッグモードで、デバッグポート１３２を介してデータ処理回路１００を制御する。この実施形態においては、デバッガソフトウェア１５２およびその上で実行するホストＰＣ１５０は、デバッガユニットを表わす。しかし、別の実施形態においては、デバッガユニットはデータ処理回路と同じ集積回路上に組み立てられる。
【００３６】
制御レジスタ１６０は、データ処理装置１００の態様の制御を担う制御値を記憶する。特に、データ処理装置１００の複数の「特権レベル」の各々については（図２を参照して、詳細に記載する）、レジスタは、当該特権レベルに関連付けられた対応するオペランドビット幅動作状態を記憶する。
【００３７】
デバッグモジュール１３０は、更に、複数の特権レベルの各々に関連付けられたレジスタ幅状態（即ち、オペランドビット幅状態）の記録およびデータ処理装置１００が動作している現在の特権レベルの記録を維持する外部デバッグインターフェースレジスタ（ＥＤＩＦＲ）１３６を備える。ＥＤＩＦＲ１３６は、デバッガソフトウェア１５２にとって可視である。
【００３８】
データ処理装置１００が標準動作モード（または、いずれかの非デバッグモード）からデバッグモードへ切り換わると、データ処理装置１００は、制御レジスタ１６０内に記憶されたデータから、データ処理装置の現在の動作状態を判定し、この状態に応じて、デバッグ動作を実施するために実行する複数の異なるデバッグ命令セットのうちの１つを選択し、それに従って、ＥＤＩＦＲ１３６内の記録を更新する。デバッガソフトウェア１５２は、デバッグモードの間に、１つの動作状態から他の異なる動作状態へデータ処理装置１００の切り換えを開始することができる。例えば、デバッグ命令の第１のグループ実行する第１の特権レベルでの動作からデバッグ命令の第２のグループを実行する第２の特権レベルでの動作へデータ処理装置を切り換えることができる。したがって、デバッグモジュール１３０は、動作状態切り換えのときに、制御レジスタ１６０内の情報に基づいてデータ処理回路１００の現在の動作状態の判定を繰り返し、デバッグ動作のために更新されたデバッグ命令セットを割り当て、それに伴って、ＥＤＩＦＲ１３６内の記録を更新するように構成される。この場合には、実行されるデバッグ命令セットは、動作状態切り換えに対応して変化する場合があり、または、この代わりに同じ状態で保持されることもできる。
【００３９】
図１の実施形態においては、ＥＤＩＦＲ１３６はデバッグモジュール１３０内に配置され、別の実施形態においては、ＥＤＩＦＲ１３６はデータ処理装置１００の外部のホストパーソナルコンピュータ１５０内に、即ち、デバッガユニット内に配置される。更に別の実施形態においては、ＥＤＩＦＲは実装されないが、これに含まれる情報はメインシステムレジスタ、即ち、制御レジスタ１６０から状態値を読み取ることによって、デバッガユニットによって得られる。ハードウェアレベルにおいては、ＥＤＩＦＲレジスタ１３６をラッチ回路（図１の実施形態のように）またはシステムレジスタからの簡単な組合せパスとして実装することができる。更に、図１の実施形態においては、ホストＰＣ（デバッガユニット）は、データ処理回路１００に対してオフチップに位置し、別の実施形態においては、データ処理装置１００およびデバッグ動作を制御し、デバッガソフトウェア１５２（即ち、デバッグユニット）を実行するための回路は、同じ集積回路上に組み立てられ、データ処理回路１００はシステムオンチップ全体を形成しない。このような実施形態においては、論理的に、デバッグ回路を、デバッグされるプロセッサの一部と見なすことができ、デバッグユニットは同じシステムオンチップ上に配置された第２の異なるプロセッサである。図１の実施形態においては、デバッガユニット１５０へインターフェース（例えば、アドバンストマイクロコントローラバスアーキテクチャバスインターフェース：ＡＭＢＡ）を提供するデバッグモジュール３０のデバッグ回路は、システムオンチップ１００のデータ処理回路と同じ「マクロセル」の一部である。
【００４０】
図２は、各々の複数の特権レベルに対応する図１のデータ処理装置１００の複数の異なる動作状態を概略的に示す。各々の特権レベルは、図１のデータ処理装置１００上で実行するソフトウェアの各々の異なる階層に対応する。図２の最上列は、最低特権レベルＰＬ０に対応し、一方、図２の最低列は最高特権レベルＰＬ３に対応する。最低特権レベルＰＬ０と最高特権レベルＰＬ３との間では、２つの中間特権レベルＰＬ１とＰＬ２がある。
【００４１】
最低特権レベルＰＬ０は、アプリケーションソフトウェア層に対応する。この例の実施形態においては、処理リソースの時分割多重によって、データ処理装置１００上で６つの異なるアプリケーションプログラムが実行していて、任意の瞬間では６つのアプリケーションプログラムのうちの１つのみがデータ処理回路１００の制御を有する。
【００４２】
第１のプログラムアプリケーション２０２は、３２ビットプログラム命令を備える３２ビットプログラムであり、したがって、この第１のアプリケーション２０２を実行する場合には、データ処理装置１００は３２ビット動作状態である。第２のアプリケーションプログラム２０４も、実行しているときに３２ビットプロセッサ動作状態を必要とする３２ビットプログラムアプリケーションである。第３のプログラムアプリケーション２０６は６４ビットプログラム命令を備える６４ビットプログラムであり、したがって、このアプリケーションを実行する場合には、データ処理装置は６４ビット動作状態になる。第４のプログラムアプリケーション２０８は、３２ビットプロセッサ動作状態を必要とする３２ビットプログラムアプリケーションである。最下位特権レベルＰＬ０は、第１のセキュア６４ビットプログラムアプリケーション２０９と第２のセキュア３２ビットプログラムアプリケーション２１０も備える。データ処理装置がセキュアモードの動作である場合のみに、これらのセキュアアプリケーションを実行することができる。
【００４３】
第１の特権レベルＰＬ１（２番目に最低の特権レベル）は、オペレーティングシステムソフトウェア層に対応する。図１および図２の実施形態においては、データ処理装置は、３つの異なるゲストオペレーティングシステムをホスティングする能力を備えて設定される。第１のゲストオペレーティングシステム２２２は、３２ビットオペレーティングシステムであり、３２ビット仮想アドレス付きの３２ビットプログラムを備えることを意味する。第２のゲストオペレーティングシステム２２４は、６４ビットオペレーティングシステムであり、３２ビットを超える仮想アドレス付きの６４ビットプログラムを備えることを意味する。６４ビットセキュアオペレーティングシステム２２６もプロセッサ動作のセキュアモードでの専用使用のために第１の特権レベルＰＬ１に位置する。
【００４４】
オペレーティングシステムは、アプリケーションの管理、特には、下位のデータ処理システム１００へのアプリケーションのアクセスの制御を担い、またマルチプロセッサおよびマルチスレッドプロセッサにおいては、異なるプロセッサおよびスレッドへのアプリケーションプログラムの割当を含む、異なるアプリケーション間での時分割多重を担う。図１および図２の実施形態においては、３２ビットオペレーティングシステムは３２ビットプログラムアプリケーションのみを管理することができるので、第１のゲストオペレーティングシステム２２２によって管理される２つのアプリケーション、つまり、第１のプログラムアプリケーション２０２と第２のプログラムアプリケーション２０４とは、両方とも３２ビットプログラムアプリケーションである。しかし、６４ビットオペレーティングシステムは、６４ビットおよび３２ビットプログラムアプリケーションの両方を管理することができるので、第２のゲストオペレーティングシステム２２４によって、またセキュアオペレーティングシステム２２６によって管理されるアプリケーションは、３２ビットプログラムアプリケーションおよび６４ビットプログラムアプリケーションの混合を備える。オペレーティングシステム２２２、２２４および２２６は、特権レベルＰＬ０で実行するアプリケーションの各々について、また特権レベルＰＬ１で実行するオペレーティングシステム自体について、どのように仮想メモリアドレスから物理メモリアドレスへの変換を実施するかに影響する一対の変換表基準レジスタ（ＴＴＢＲ０＿ＰＬ１およびＴＴＢＲ１＿ＰＬ１）の制御を担う。
【００４５】
第２の特権レベルＰＬ２は、ハイパーバイザソフトウェア層に対応する。図２において、ハイパーバイザ２３０は、データ処理装置１００上で実行し、第１のゲストオペレーティングシステム２２２、第２のゲストオペレーティングシステム２２４を同じデータ処理装置１００上で実行させる、６４ビットプログラム命令を備える６４ビットプログラムである。ハイパーバイザ２３０は、第１のゲストオペレーティングシステム２２２、および第２のゲストオペレーティングシステム２２４が、他のゲストオペレーティングシステムがそこで同時に実行していることを知らずに、同一のデータ処理装置１００上で実行できるようにする仮想化システムの一部である。
【００４６】
ハイパーバイザは、オペレーティングシステムの管理、特には、下位のデータ処理システム１００へのオペレーティングシステムのアクセスの制御を担い、またマルチプロセッサおよびマルチスレッドプロセッサにおいては、異なるプロセッサおよびスレッドへのオペレーティングシステムの割当を含む、異なるオペレーティングシステム間での時分割多重を担う。６４ビットハイパーバイザは、３２ビットおよび６４ビットオペレーティングシステムの両方を管理することができるので、ハイパーバイザ２３０によって管理されるオペレーティングシステムは３２ビットおよび６４ビットオペレーティングシステムの混合を備える。ハイパーバイザ２３０は、特権レベルＰＬ１で実行するオペレーティングシステムの各々について、また特権レベルＰＬ０で実行するこれらのオペレーティングシステムによって管理されるアプリケーションについて、どのように仮想メモリアドレスから物理メモリアドレスへの変換が実施されるかに更に影響する仮想変換表基準レジスタ（ＶＴＴＢＲ＿ＰＬ２）の実装を制御する。また、ハイパーバイザ２３０は、特権レベルＰＬ２で実行するハイパーバイザについて、どのように仮想メモリアドレスから物理メモリアドレスへの変換が実施されるかを制御する第３の仮想変換表基準レジスタ（ＴＴＢＲ＿ＰＬ２）の実装を制御する。したがって、ＰＬ２における仮想アドレスから物理アドレスへの変換は、ＰＬ０およびＰＬ１における仮想アドレスから物理アドレスへの変換と独立している。
【００４７】
最高特権レベルはＰＬ３であり、これは、セキュアモニタ２４０ソフトウェア層に対応し、この場合には、ソフトウェア層は６４ビットプログラム命令を備える６４ビットプログラムである。セキュアモニタ２４０は、非セキュアモードで実行するソフトウェア、即ち、ハイパーバイザ２３０、オペレーティングシステム２２２、２２４、およびアプリケーション、２０２、２０４、２０６および２０８、更にセキュアモードで実行するソフトウェア、即ち、セキュアオペレーティングシステム２２６、またアプリケーション２０９、２１０の対との間のゲートキーパーとして動作する。図２に示されるように、データ処理装置がセキュアモードである場合には、ハイパーバイザ２３０は使用されない。したがって、セキュアモードにおいては、３つの特権レベルＰＬ０、ＰＬ１およびＰＬ３のみが有効である。セキュアモニタ２４０は、特権レベルＰＬ３で実行するセキュアモニタについて、どのように仮想メモリアドレスから物理メモリアドレスへの変換が実施されるかを制御する第４の変換表基準レジスタ（ＴＴＢＲ＿ＰＬ３）の実装も制御する。したがって、ＰＬ３における仮想アドレスから物理アドレスへの変換は、ＰＬ０、ＰＬ１およびＰＬ２における仮想アドレスから物理アドレスへの変換と独立している。
【００４８】
単一スレッド動作のみを行うことができる単一実行パイプライン１１０を備えるデータ処理装置１００については、単一のプログラムアプリケーションがいずれかの時点でセキュアまたは非セキュアモードで制御時にのみ、単一のオペレーティングシステムを実行する。図２に示される４つの特権レベルの各々については、図１のデバッグモジュール１３０のＥＤＩＦＲ１３６は対応するオペランドビット幅を記憶する。この実施形態においては、４つの可能な特権レベルがあるので、フィールドＲＷ［３：０］、即ち、３２ビットＥＤＩＦＲ１３６の４ビットフィールドを使用して、各例外レベルに対応するオペランドビット幅（または同様にレジスタ幅）を表示する。
【００４９】
データ処理装置の可能な動作状態の各々についてのフィールドＲＷ［３：０］の内容は、図２の上部に示される。第１のプログラムアプリケーション２０２がハイパーバイザ２３０の制御の下での第１のゲストオペレーティングシステム２２２上で、またセキュアモニタ２４０を有するシステム内で実行している場合には、４ビットレジスタフィールドＲＷ［３：０］は「１１００」の値を有する。これは、この実施形態においては、「０」の値を使用して３２ビットアーキテクチュア状態を表示する場合に、「１」の値を使用して、６４ビットプロセッサ状態を表示するからである。ＲＷレジスタフィールドの４つのビットは、各々、ＰＬ３、ＰＬ２、ＰＬ１、およびＰＬ０に対応する。同様に、第２のプログラムアプリケーション２０４がハイパーバイザ２３０およびセキュアモニタ２４０の上部での第１のゲストオペレーティングシステム２２２上で実行している場合には、４ビットレジスタフィールドＲＷ［３：０］は「１１００」の値を有する。一方、（６４ビットアプリケーションである）第３のプログラムアプリケーション２０６が６４ビットの第２のゲストオペレーティングシステム２２４上で実行している場合には、アプリケーション、オペレーティングシステム、ハイパーバイザおよびセキュアモニタの全ては６４ビットプログラムコードに対応するので、レジスタフィールドＲＷ［３：０］は「１１１１」の値を有する。第４のプログラムアプリケーション２０８が第２のゲストオペレーティングシステム上で実行する場合には、最下位特権レベル（即ち、第４のプログラムアプリケーション２０８）以外の全ては６４ビットコードに対応するので、４ビットレジスタフィールドＲＷ［３：０］は「１１１０」の値を有する。
【００５０】
データ処理装置がセキュアモードで動作しているときには、ＰＬ２に対応するハイパーバイザ層２３０が無いので、４つではなく３つの特権レベルのみがある。したがって、ＲＷ［２］に対する値の選択は、ある程度任意に行われる。図１のデータ処理装置においては、セキュアモードで動作しているときには、ＲＷ［２］はＲＷ［１］と同じ値に設定される。したがって、図２においては、第１の６４ビット、セキュアアプリケーション２０９がセキュアオペレーティングシステム２２６上で動作しているときには、レジスタフィールドＲＷ［３：０］は「１１１１」の値を有し、第２の３２ビット、セキュアアプリケーション２１０が実行している場合には、レジスタフィールドＲＷ［３：０］は「１１１０」の値を有する。
【００５１】
マルチプルプロセッサ、つまり、多重実行パイプライン、および／または、いずれかの時点で同時に多重スレッドを実行できるプロセッサを備える他の実施形態においては、多重プログラムアプリケーションを、ことによると多重オペレーティングシステムの制御の下で、またことによるとセキュアおよび非セキュアの混合状態で実行できることが理解される。このような実施形態においては、ＥＤＩＦＲの制御フィールドを二重化して、各ハードウェアスレッドごとに一度ずつ同じ情報を提示することができる。
【００５２】
図３は、図１のデータ処理装置がプログラム命令の実行中に複数の異なる特権レベルの異なるレベル間で切り換える能力を有するように、どのように構成されるか、また異なる特権レベルにおいて、どのように仮想アドレスから物理アドレスへの変換スキームが異なるかを概略的に示す。
【００５３】
図３は、最下位特権レベルＰＬ０での３２ビットプログラムアプリケーション４１０、次の最高特権レベルＰＬ１での３２ビットオペレーティングシステム４２０、次の特権レベルＰＬ２での６４ビットハイパーバイザ４３０、更に最高特権レベルＰＬ３での６４ビットセキュアモニタ４４０を示す。データ処理回路１００が非デバッグまたはデバッグモードでプログラム命令を実行している場合には、図１のデータ処理装置１００の動作状態は、４つの特権レベルＰＬ０、ＰＬ１、ＰＬ０２、ＰＬ３の異なるレベル間で入り、切りを切り換えることができる。データ処理装置がこれらの特権レベル間で切り換わるので、動作状態は変化する。
【００５４】
データ処理装置が特権レベルＰＬ０からのプログラム命令を実行している場合には、プログラムコードによって生成された３２ビット仮想メモリアドレスは、ゲストオペレーティングシステム４２０が属する特権レベルに固有の変換表基準レジスタ（ＴＴＢＲ０＿ＰＬ１およびＴＴＢＲ１＿ＰＬ１）を使用して中間の物理アドレスへ変換される。今度は、中間の物理アドレスは、ハイパーバイザ４３０の特権レベルＰＬ２に対応する仮想変換表基準レジスタ（ＶＴＴＢＲ＿ＰＬ２）を使用して、最終物理アドレスへ変換される。
【００５５】
同様に、３２ビットゲストオペレーティングシステム４２０のプログラム命令を実行している場合には、実行されているゲストオペレーティングシステム命令に対応する３２ビット仮想アドレスは、ゲストオペレーティングシステム４２０の特権レベルＰＬ１に対応する変換表基準レジスタＴＴＢＲ０＿ＰＬ１およびＴＴＢＲ１＿ＰＬ２を使用して、中間の物理アドレスへ変換され、今度は、中間の物理アドレスは、ハイパーバイザ４３０に関連する仮想変換表基準レジスタを参照して最終物理アドレスへ変換される。
【００５６】
対比すると、６４ビットハイパーバイザ４３０のプログラム命令が、特権レベルＰＬ２に対応して実行されると、単一ステージの仮想メモリアドレスから物理メモリアドレス変換のみが行われる必要があり、ハイパーバイザ特権レベル（ＴＴＢＲ＿ＰＬ２）に関連する変換表基準レジスタを参照して、６４ビット仮想アドレスは直接的に物理アドレスへ変換される。この場合には、仮想変換表基準レジスタは必要ない。
【００５７】
図３の異なる特権レベルでの仮想アドレスサイズと仮想メモリアドレスから物理メモリアドレスへの変換との間の差に加えて、異なる特権レベルでシステムレジスタおよび／またはメモリ位置へのアクセス性にも差がある。特に、最高特権レベルにおいては、全てのシステムレジスタを見ることができるようになり、特権レベルが順次に低くなると、利用できるシステムレジスタが順次に少なくなる。
【００５８】
更に、システム制御レジスタが特には動作状態にリンクされている場合には、３２ビット状態でアクセスすると、３２ビットシステムレジスタとして表示される場合があるが、６４ビット状態でアクセスすると、６４ビットシステムレジスタとして表示される。例えば、不良アドレスレジスタ（ＦＡＲ）（図示無し）が、仮想アドレスを含み、これは３２ビット状態で３２ビット幅であるが、６４ビット状態で６４ビット幅である。他のシステムレジスタは、当然ながら、６４ビット幅であり、３２ビット動作状態でアクセスされると一対の３２ビット汎用レジスタ上で動作するが、６４ビット動作状態でアクセスされると、６４ビット汎用レジスタ上で動作するレギュラーシステムレジスタ命令でアクセスすることができる特殊なシステム命令を使用して、アクセスしなければならない。例えば、ＴＴＢＲレジスタは変換表の物理基準アドレスを含んでいて、物理アドレスはサイズが３２ビットより大きいので、３２ビット動作状態と６４ビット動作状態の両方において、６４ビット幅である。他のシステムレジスタは、１つの状態でアクセス可能であるが、他の状態ではアクセスできない。
【００５９】
仮想メモリアドレスから物理メモリアドレスへの変換スキームはプロセッサの動作状態に依存し、図３の場合には、データ処理システムが現在で動作している特権レベルに対応するので、任意の所与の特権レベルでデバッグ動作を行うようにデバッグ命令セットを恣意的に割り当てることができない。例えば、データ処理装置が図３のＰＬ１に対応する動作状態にあるときに、６４ビットデバッグ命令セットが割り当てられると、問題が発生する恐れがある。これは、この特権レベルで動作するゲストオペレーティングシステム４２０は、６４ビットデバッグ命令から生成される３２ビット仮想アドレスを必要とする仮想メモリアドレスから物理メモリアドレスへの変換スキームを実装する３２ビットゲストオペレーティングシステムであるからである。ＴＴＢＲレジスタを読むように設定された６４ビットデバッグ命令が、図３のＰＬ１に対応する動作状態で実行された場合には、更なる問題が発生する恐れがある。これは、この命令は通常は６４ビットシステムレジスタと単一の６４ビット汎用レジスタとの間でデータを転送するが、３２ビット命令セット相当は６４ビットシステムレジスタと一対の３２ビット汎用レジスタとの間で転送するからである。
【００６０】
図４Ａは、図１のＥＤＩＦＲレジスタ１３６のビット割当を概略的に示す。図４Ａで示されるように、ＥＤＩＦＲは、ビットＥＤＩＦＲ［９：８］は、データ処理装置がデバッグ状態になっているときに、現在の特権レベルを指定するように割り当てられる３２ビットレジスタであり、一方、ビットＥＤＩＦＲ［１３：１０］は、図２の実施形態の４つの特権レベルの各々について、その特権レベルに関連付けられた対応するオペランドビット幅を表示するように割り当てられる。各特権レベルのオペランドビット幅は、代わりに、図１の実施形態についてのレジスタ幅とも称することができ、これは可変レジスタ幅（３２ビットまたは６４ビット構成）を有する。したがって、ＥＤＩＦＲのオペランドビット幅またはレジスタ幅フィールドはＲＷ［１３：１０］で表わされ、一方、現在の特権レベルを指定するために割り当てられるビットはＰＬ［９：８］で表わされる。オペランドビット幅インジケータビットＲＷ［１３：１０］は、ビット１３が最高特権レベルに対応し、一方で、ビット１０は最低特権レベルに対応するように、即ち、ビット１３から１０は、各々、ＰＬ３、ＰＬ２、ＰＬ１およびＰＬ０に対応するように割り当てられる。フィールドＲＷ［１３：１０］は、読取専用フィールドであり、一方、フィールドＰＬ［９：８］は現在の特権レベルを更新するために、データ処理装置によって書込み可能である。
【００６１】
図４Ｂの表は、２ビットフィールドＰＬ［９：８］の４つの可能な値の各々について、表示される対応する特権を示す。特に、ＰＬ［９：８］＝００は最低特権レベルＰＬ０に対応し、ＰＬ［９：８］＝０１はＰＬ１に対応し、ＰＬ［９：８］＝１０はＰＬ２に対応し、ＰＬ［９：８］＝１１はＰＬ３に対応する。デバッグ回路に関する限りは、これら２つのビットＰＬ［９：８］は読取専用である。データ処理装置１００がデバッグモードにあると、２つのビットＰＬ［９：８］はプロセッサの現在の特権レベルを表わし、一方、データ処理装置が非デバッグモードにある場合には、２つのビットフィールドＰＬ［９：８］は「００」に設定される。
【００６２】
図４Ｃの表は、ＥＤＩＦＲフィールドＲＷ［１３：１０］の異なるビット値について、４つのＲＷビットに各々対応する４つの特権レベルの各々の対応するプロセッサレジスタ幅動作状態（または等価なオペランドビット幅動作状態）を指定する。ＲＷ［１３：１０］＝１１１１の値は、６４ビットレジスタ幅状態になる４つの特権レベル全てに対応する。ＲＷ［１３：１０］＝１１１０の値は、６４ビットレジスタ幅状態にある最上位の特権レベルＰＬ３、ＰＬ２、ＰＬ１および３２ビットレジスタ幅状態にある最下位特権レベルＰＬ０に対応する。ＲＷ［１３：１０］＝１１００の値は、６４ビットレジスタ幅状態にある最上位の２つの特権レベルＰＬ３、ＰＬ２に対応する一方で、３２ビットレジスタ幅状態にある最下位の２つの特権レベルＰＬ１、ＰＬ０に対応する。データ処理装置が現在でセキュアモードで動作しているときには、この特定の値、ＲＷ［１３：１０］＝１１００は見られないことに留意する必要がある。これは、図２に示されるように、ＰＬ２に対応するハイパーバイザ層はセキュアモードに対して見えないからである。ＲＷ［１３：１０］＝１０００の値は、６４ビットレジスタ幅状態にある最上位の特権レベルＰＬ３に対応し、一方で、残りの下位の３つの特権レベルＰＬ２、ＰＬ１、ＰＬ０は３２ビットレジスタ幅状態である。この特定のビットパターンＲＷ［１３：１０］＝１０００は、ＰＬ３が６４ビットレジスタ幅状態であり、一方で、ＰＬ１およびＰＬ０が３２ビットレジスタ幅状態であるセキュアモードについて表示するように選択されている（この状態では、ＰＬ２は存在しない）。ＲＷ［１３：１０］＝００００のビットパターンは、４つ全ての特権レベルが３２ビットレジスタ幅状態に対応していることを示す。ＲＷ［１３：１０］の他の値は許可されない。
【００６３】
この特定の実施形態については、都合上、レジスタ幅状態インジケータＲＷおよび特権レベル状態インジケータＰＬのためにある予め設定された値が選択された。例えば、データ処理装置がデバッグモードでない場合には、フィールドＲＷ［１３：１０］は「１１１１」に設定される。現在の特権レベルがＰＬ０以外であれば、低いビットレジスタ幅フィールドの最下位ビットＲＷ［１０］は同様にＲＷ［１１］に等しく設定される。セキュアモードでは、ＰＬ２は存在しないので、ＲＷ［１２］はＲＷ［１１］と同様に設定される。
【００６４】
図５は、「ＡＡｒｃｈ３２」のラベルが付いた３２ビットレジスタ幅状態および「ＡＡｒｃｈ６４」のラベルが付いた６４ビットレジスタ幅状態について、プロセッサが所定のレジスタ幅状態にあるときに実行され得る対応する命令セットを概略的に示す。図５においては、第１の設定ラベル５１０は「ＡＡｒｃｈ３２」、即ち、３２ビットオペランド幅または３２ビットレジスタ幅状態に対応する。このプロセッサ状態においては、データ処理装置は３つの異なる命令セットを実行することができる。第１の命令セット５２２は、３２ビット幅データ上で動作する高性能３２ビット幅命令に対応する「Ａ３２」命令セットである。第２の命令セット５２４は、１６ビット幅フォーマットに圧縮され最も頻繁に使用されるＡ３２命令のサブセットを備える更にコンパクトな命令セットを表わす「Ｔ３２」命令セットであるが、これらの命令は３２ビット幅データ上でも動作する。第３の命令セット５２６は、Ｔ３２に類似するコンパクトな命令セットを表わすが、Ｊａｖａ（登録商標）命令およびＴ３２ＥＥ命令等のオブジェクト指向プログラムコード間の変換を実施する能力を提供する仮想マシンに適した拡張子を組み込む「Ｔ３２ＥＥ」命令セット（「ＴｈｕｍｂＥＥ」命令セットとしても知られる）である。したがって、プロセッサが３２ビットレジスタ幅状態（即ち、３２ビット幅データ上で動作している）に従って動作しているときには、命令セットについては、実行できる３つの選択肢、Ａ３２、Ｔ３２、Ｔ３２ＥＥがある。
【００６５】
図５においては、第２のセット５５０は、単一の「Ａ６４」命令セット５６２を実行できる６４ビットレジスタ幅状態「ＡＡｒｃｈ６４」を表わす。「Ａ６４」命令セットは、６４ビット幅データ上で動作する。特には、この実施形態においては、ＡＡｒｃｈ６４命令セット５５０のセットとＡＡｒｃｈ３２命令セット５１０のセットの間に交差点がない。本技術によると、データ処理装置１００が現在でＡＡｒｃｈ６４レジスタ幅状態５５０にあると判断される場合には、Ａ６４命令セット５６２はデバッグ命令セットとして割り当てられ、一方で、デバッグモードに入ると、プロセッサがＡＡｒｃｈ３２レジスタ幅状態になる場合には、Ｔ３２命令セット５２４は、プロセッサがデバッグモードに入ったときにＡ３２命令セット５２２、Ｔ３２命令セット５２４またはＴ３２ＥＥ命令セット５２６を実行していたかどうかに関わらず、デバッグ命令セットとして選択される。明らかに、３２ビットレジスタ幅状態ＡＡｒｃｈ３２についてのＴ３２命令セット５２４の特定の選択は、この特定の実施形態に固有のものである。別の実施形態においては、３つの可能なＡＡｒｃｈ３２命令セット５２２、５２４、５２６のうちのいずれか１つはデバッグ命令セットとして選択され得る。更なる別の実施形態においては、全非デバッグモード命令セットのうちの１つのサブセットは、デバッグモード命令セットとして選択される。
【００６６】
図６は、デバッグ処理モジュール１３０による実装のために適切なデバッグ命令セットを判定するために、図１のデータ処理装置によって実施される動作を概略的に示すフローチャートである。
【００６７】
実行パイプライン１１０がオンチップメモリ１４２またはオフチップメモリ１４４のいずれかから得られた命令を処理するステージ６１０で、プロセスが開始する。つまり、ステージ６１０において、データ処理装置はデバッグモードではなく標準動作モードで命令を実行する。次に、プロセスは、ステージ６２０へ進み、ここで、デバッグイベントが発生したかどうかが判定される。ステージ６２０でデバッグイベントが発生していない場合には、プロセッサはステージ６１０へ戻って、ここで、実行パイプラインが継続してメモリ１４２、１４４から命令をフェッチ、復号し実行する。しかし、ステージ６２０でデバッグイベントが実際に検出された場合には、プロセスはステージ６３０へ進み、同時に、データ処理装置（データ処理回路）はデバッグモードに入る。ステージ６３０の後で、プロセスはステージ６４０へ進み、ここで、データ処理装置が６４ビットプロセッサ状態になっているかどうか判定される。データ処理装置がステージ６４０で３２ビットプロセッサ状態であることが分かると、プロセスはステージ６５０へ進み、ここで、データ処理回路はＴ３２命令セットをデバッグ命令セットとして割り当てる。次に、プロセスはステージ６７０へ進む。一方、ステージ６４０で、データ処理装置が、図５の状態５５０に対応する６４ビットプロセッサ状態であることが判定される場合には、プロセスはステージ６６０へ進み、ここで、データ処理回路はデバッグ動作のためにＡ６４命令セットを割り当てる。図５に示されるように、Ａ６４命令セットは、６４ビットプロセッサ状態でデータ処理回路が実行できる命令セットであり、一方、Ｔ３２命令セットは、データ処理回路が非デバッグモードで３２ビットプロセッサ動作状態において実行できる３つの異なる命令セットのうちの１つである。
【００６８】
図６の実施形態においては、Ａ６４またはＴ３２命令セットはステージ６５０および６６０でプロセッサによって割り当てられるが、別の実施形態においては、割り当てられたデバッグ命令セットは全命令セットのサブセットを備える。例えば、Ａ６４命令セット、Ａ３２命令セット、Ｔ３２命令セットまたはＴ３２ＥＥ命令セットのうちの１つのサブセット。デバッグモードでの使用に適した全命令セットのサブセットは、例えば、デバッグ、モードで望ましくない分岐命令等の命令の実行を排除するように適切に選択されてもよい。つまり、Ｔ３２またはＡ６４命令セットのサブセットにおいては、分岐命令等を強制的に定義させないようにすることができる。
【００６９】
ステージ６５０および６６０の両方に続いて、プロセスはステージ６７０へ進み、ここで、デバッグ回路１３０はどの命令セットを使用するかをデバッガ１５２（即ち、デバッガユニット）へ表示する。このステージにおいては、データ処理回路はデバッグモジュール１３０でレジスタを更新して、どの命令セットが現在使用中であるかを表示する。ステージ６７０で適切なデバッグ命令セットが表示されると、プロセスはステージ６８０へ進み、ここで、デバッグ命令の実行が開始する。このステージでは、プロセッサがデバッグモードであるので、実行パイプライン１１０はメモリから命令をフェッチしないが、この代わりに、図１のデバッグモジュール１３０の命令転送レジスタ１３４から直接命令をフェッチする。
【００７０】
ステージ６８０の後で、プロセスはステージ６９０へ進み、ここで、データ処理装置がデバッグモードを終了するかどうかが判定される。デバッガソフトウェア１５２によって制御されているデバッグ動作が完了する場合には、ステージ６９０でデバッグモードは終了し、終了する場合には、プロセスはステージ６１０へ戻り、ここで、プロセッサはデバッグモードから標準動作モードへ切り換わり、同時に、命令がメモリ１４２、１４４から実行パイプライン１１０へ送られる。一方で、ステージ６９０で、更なるデバッグ動作が必要であり、データ処理装置がデバッグモードになっている必要があることが判定されると、プロセスはステージ７００へ進み、ここで、デバッグモード中にデータプロセッサが動作している現在の特権レベルへ変更が行われたかどうが確定される。
【００７１】
最新に確定された特権レベルの後で特権レベルへ変更が行われなかった場合には、プロセスはステージ６８０へ戻る。したがって、現在の特権レベルに変更が行われていなくて、データ処理装置がまだデバッグ状態にある場合には、命令転送レジスタ１３４からの命令は継続して処理される。しかし、ステージ７００で特権レベルに変更がある場合には、プロセスはステージ６４０へ戻り、ここで、割り当てられたデバッグ命令セットは現在の特権レベルに従って更新される。
【００７２】
図７は、使用され得る仮想マシンの実装を示す。前述した実施形態は、関連する技術に対応する固有の処理ハードウェアを動作させるための装置および方法に関して本発明を実施するが、ハードウェアデバイスのいわゆる仮想マシン実装を提供することも可能である。これらの仮想マシン実装は、仮想マシンプログラム７２０に対応するホストオペレーティングシステム７３０を実行するホストプロセッサ７４０上で作動する。典型的には、妥当な速度で実行する仮想マシン実装を提供するためには、大型の強力なプロセッサが必要であるが、互換性または再利用の理由により、他のプロセッサ固有のコードを実行することが望ましい場合等の特定の環境においては上記の手法が妥当とされてもよい。仮想マシンプログラム７２０は、仮想マシンプログラム７２０によってモデル化されているデバイスである実際のハードウェアによって提供されることになるアプリケーションプログラムインターフェースと同じであるアプリケーションプログラム７１０に対してアプリケーションプログラムインターフェースを提供する。したがって、上記で説明されたメモリアクセスの制御を含めて、プログラム命令は、仮想マシンハードウェアとの相互関係をモデル化する仮想マシンプログラム７２０を使用して、アプリケーションプログラム７１０内から実行されてもよい。
【符号の説明】
【００７３】
１００  集積回路
１１０  実行パイプライン
１２０  汎用レジスタ
１３０  デバッグモジュール
１３２  デバッグポート
１３４  命令伝達レジスタ（ＩＴＲ）
１３６  外部デバッグインターフェースレジスタ（ＥＤＩＦＲ）
１４０  メモリ管理ユニット（ＭＭＵ）
１４２  オンチップメモリ
１４４  オフチップメモリ
１５０  ホストパーソナルコンピュータ
１５２  デバッガソフトウェア
１６０  制御レジスタ
【図１】
2013542499.tif 000003
【図２】
2013542499.tif 000004
【図３】
2013542499.tif 000005
【図４Ａ】
2013542499.tif 000006
【図４Ｂ】
2013542499.tif 000007
【図４Ｃ】
2013542499.tif 000008
【図５】
2013542499.tif 000009
【図６】
2013542499.tif 000010
【図７】
2013542499.tif 000011
【手続補正書】
【提出日】平成24年11月6日(2012.11.6)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
プログラム命令の実行に応じてデータ処理動作を実施するためのデータ処理回路であって、少なくとも動作モードおよびデバッグモードで動作するように構成される、データ処理回路と、
前記データ処理回路と前記データ処理回路の外部のデバッガユニットとの間にインターフェースを設けるように構成されるデバッグ回路であって、前記データ処理回路が前記デバッグモードで動作しているときに、前記データ処理回路の動作をデバッグ命令セットのデバッグ命令を使用して制御するように構成される、デバッグ回路と、を備える、データ処理装置であって、
前記データ処理回路が前記デバッグモードに入ったときに、前記データ処理装置の現在の動作状態を判定し、現在の前記動作状態に応じて、複数の命令セットのうちの１つを前記デバッグ命令セットとして使用するように判定するように、前記データ処理回路が構成される、データ処理装置。
【請求項２】
前記データ処理回路が、前記デバッガユニットに対して、前記データ処理回路を制御するために使用される割り当てられた前記デバッグ命令セットを表示するように構成される、請求項１に記載のデータ処理装置。
【請求項３】
前記データ処理回路が、複数の特権レベルで動作するように構成可能であり、異なる特権レベルにおいて、前記データ処理回路は、メモリおよびレジスタセットのうちの少なくとも１つに対する異なるアクセス許可をプログラム命令に与える、請求項１に記載のデータ処理装置。
【請求項４】
前記特権レベルの異なるレベルにおいて、前記データ処理回路は各々異なる仮想メモリアドレスから物理メモリアドレスへの変換規則を適用する、請求項３に記載のデータ処理装置。
【請求項５】
複数の前記特権レベルの各々に対応する、複数の異なるソフトウェア階層レベルに対応するプログラム命令を実行するように構成される、請求項３または４に記載のデータ処理装置。
【請求項６】
複数の前記特権レベルのうちの第１のレベルはアプリケーション層に対応し、複数の前記特権レベルのうちの第２のレベルは動作システム層に対応する、請求項５に記載のデータ処理装置。
【請求項７】
複数の前記特権レベルのうちの第３のレベルはハイパーバイザ層に対応する、請求項６に記載のデータ処理装置。
【請求項８】
更なる特権レベルがセキュリティ監視層に対応する、請求項６または７に記載のデータ処理装置。
【請求項９】
複数の前記特権レベルの異なるレベルの間での切り換え時に、前記データ処理回路は、更新されたデバッグ命令セットを生成し、更新された前記デバッグ命令セットを前記デバッガユニットへ表示するために、現在の前記動作状態および前記デバッグ命令セットの前記判定を繰り返すように構成される、請求項３〜８のいずれか一項に記載のデータ処理装置。
【請求項１０】
現在の前記動作状態は、各々異なるオペランドビット幅を有する複数の異なるプロセッサ動作状態から選択される、請求項１〜９のいずれか一項に記載のデータ処理装置。
【請求項１１】
複数の前記動作状態は、少なくとも３２ビット動作状態および６４ビット動作状態を含む、請求項１０に記載のデータ処理装置。
【請求項１２】
前記プログラム命令のオペランドを記憶するための複数のレジスタを備えるデータ処理装置であって、異なる前記オペランドビット幅は、前記データ処理回路によって使用される異なるレジスタ幅に対応する、請求項１０または１１に記載のデータ処理装置。
【請求項１３】
複数の前記レジスタの少なくとも１つのサブセットは可変幅レジスタとして構成される、請求項１２に記載のデータ処理装置。
【請求項１４】
前記データ処理回路は、前記デバッガユニットへアクセス可能な少なくとも１つのレジスタへ書き込むことによって、前記デバッガユニットへ前記デバッグ命令セットを表示するように構成される、請求項２〜１３のいずれか一項に記載のデータ処理装置。
【請求項１５】
前記データ処理回路は、前記デバッガユニットへ制御コマンドを送信することによって、前記デバッガユニットへ設定された前記デバッグ命令セットを表示するように構成される、請求項２に記載のデータ処理装置。
【請求項１６】
前記デバッガユニットにとってアクセス可能な所与の位置に、現在の前記動作状態の記憶された値を維持するように構成される、請求項１〜１５のいずれか一項に記載のデータ処理装置。
【請求項１７】
現在の前記動作状態は各々のオペランドビット幅を有する複数のプロセッサ動作状態から選択され、前記デバッガユニットにとってアクセス可能な第１の位置に、複数の前記特権レベルの各々と関連付けられるオペランドビット幅の記録を維持するように構成される、請求項３に記載のデータ処理装置。
【請求項１８】
前記データ処理装置が前記デバッガユニットにとってアクセス可能な第２の位置で動作する現在の特権レベルの記録を維持するように構成される、請求項１７に記載のデータ処理装置。
【請求項１９】
前記データ処理回路は、前記各々のオペランドビット幅を有する複数の前記プロセッサ動作状態から前記デバッグ命令セットを判定するために、現在の前記特権レベルを使用する、請求項１８に記載のデータ処理装置。
【請求項２０】
現在の前記プロセッサ動作状態に対応する現在のオペランドビット幅の記録を維持するように構成される、請求項１〜１６のいずれか一項に記載のデータ処理装置。
【請求項２１】
前記デバッガユニットは、現在の前記オペランドビット幅の前記記録から、前記データ処理回路によって判定される前記デバッグ命令セットを推定するように構成される、請求項２０に記載のデータ処理装置。
【請求項２２】
前記デバッガユニットは、前記データ処理回路が動作している現在の特権レベルを判定するために、少なくとも１つのプログラム命令を前記データ処理回路によって実行させるように構成される、請求項２１に記載のデータ処理装置。
【請求項２３】
割り当てられた前記デバッグ命令セットは、非デバッグモードで前記データ処理装置による実行のために利用可能な全命令セットのサブセットを備える、請求項１〜２２のいずれか一項に記載のデータ処理装置。
【請求項２４】
前記全命令セットは、Ａ３２命令セット、Ｔ３２命令セット、Ｔ３２ＥＥ命令セット、およびＡ６４命令セットのうちの１つを備える、請求項２３に記載のデータ処理装置。
【請求項２５】
前記全命令セットの前記サブセットは少なくともブランチ命令を除外する、請求項２３または請求項２３または２４に記載のデータ処理装置。
【請求項２６】
データ処理装置の動作のデバッグ処理を実施するデバッグユニットであって、前記データ処理装置は少なくともデバッグモードと動作モードで、また複数の異なる動作状態において動作可能であり、
前記データ処理装置内の記憶場所から、前記データ処理装置の複数の前記動作状態の１つを指定する現在の動作状態の記録を読み取るための読み取り回路と、
前記デバッグ処理を実施するために前記データ処理装置のデバッグ回路へ供給するためのデバッグ命令を生成する際に使用されるデバッグ命令セットを現在の動作状態に応じて推定するための推定回路と、を備える、デバッグユニット。
【請求項２７】
前記推定回路は、前記データ処理装置から受信される制御コマンドに基づいて、前記デバッグ命令セットを推定するように構成される、請求項２６に記載のデバッグユニット。
【請求項２８】
現在の動作状態の前記記録は、前記データ処理装置内の現在の前記オペランドビット幅の記録を備える、請求項２６に記載のデバッグユニット。
【請求項２９】
前記データ処理装置は複数の異なる特権レベルで動作可能であり、異なる特権レベルにおいて、前記データ処理装置はメモリおよびレジスタセットのうちの少なくとも１つに対する異なるアクセス許可をプログラム命令に与え、前記推定回路は、前記データ処理装置が動作している現在の特権レベルを判定するために、少なくとも１つのプログラム命令を前記データ処理装置によって実行させるように構成される、請求項２７に記載のデバッグユニット。
【請求項３０】
データ処理装置の動作のデバッグ処理を実施するためのデバッグ方法であって、前記データ処理装置は少なくともデバッグモードおよび動作モードで、複数の異なる動作状態で動作可能であり、
前記データ処理装置内の記憶場所から、前記データ処理装置の複数の前記動作状態のうちの１つを指定する現在のオペランドビット幅の記録を読み取ることと、
前記デバッグ処理を実施するために前記データ処理装置のデバッグ回路へ供給するためのデバッグ命令を生成する際に使用されるデバッグ命令セットを現在の動作状態に応じて推定することと、を含む、デバッグ方法。
【請求項３１】
請求項３０に記載のデバッグ方法を実装するための、コンピュータプログラム。
【請求項３２】
データ処理装置上で実行するコンピュータプログラムによって提供される仮想マシンであって、請求項１〜２５のいずれか一項に記載のデータ処理装置に従って命令実行環境を提供する、仮想マシン。
【請求項３３】
プログラム命令の実行に応じてデータ処理動作を実施するための手段であって、少なくとも動作モードとデバッグモードで動作するように構成されデータ処理動作を実施する手段と、
データ処理を実施するための前記手段とデータ処理装置の外部のデバッグ分析のための手段との間のインターフェースを提供するように構成されるデバッグ処理のための手段であって、データ処理を実施するための前記手段が前記デバッグモードで動作するときに、データ処理を実施するための前記手段の動作をデバッグ命令セットのデバッグ命令を使用して制御するように構成されるデバッグ処理のための手段と、を備え、
データ処理を実施するための前記手段は、データ処理を実施するための前記手段が前記デバッグモードに入ったときに、データ処理を実施するための前記手段の現在の動作状態を判定し、現在の前記動作状態に応じて、前記デバッグ命令セットとして使用される複数の命令セットの１つを判定するように構成される、データ処理装置。
【請求項３４】
少なくとも動作モードとデバッグモードで動作するように構成されるデータ処理回路上でのプログラム命令の実施に応じて、データ処理動作を実施することと、
前記データ処理回路と前記データ処理回路の外部のデバッガユニットとの間のデバッグインターフェースを提供することであって、前記デバッグインターフェースは、前記データ処理回路が前記デバッグモードで動作しているときに、前記データ処理回路の動作をデバッグ命令セットのデバッグ命令を使用して制御するように構成される、デバッグインターフェースを提供することと、
前記データ処理回路がデバッグモードに入ると、前記データ処理回路の現在の動作状態を判定し、現在の前記動作状態に応じて、前記デバッグ命令セットとして使用される複数の命令セットの１つを判定することと、を含む、データ処理方法。
【請求項３５】
請求項３４の方法を実施するためのコンピュータプログラム製品。
【請求項３６】
データ処理装置の動作のデバッグ処理を実施するための装置であって、前記データ処理装置は少なくともデバッグモードと動作モード、また複数の異なる動作状態において動作可能であり、デバッグユニットは、
前記データ処理装置の複数の前記動作状態の１つを指定する現在のオペランドビット幅の記録を、前記データ処理装置内の記憶場所から読み取るための手段と、
前記デバッグ処理を実施するために前記データ処理装置のデバッグ回路へ供給するためのデバッグ命令を生成する際に使用されるデバッグ命令セットを現在の動作状態に応じて推定するための手段と、を備える、装置。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】０００８
【補正方法】変更
【補正の内容】
【０００８】
第１の態様により、本発明は、
プログラム命令の実行に応じてデータ処理動作を実施するためのデータ処理回路であって、少なくとも動作モードとデバッグモードで動作するように構成されるデータ処理回路と、
前記データ処理回路と前記データ処理回路の外部デバッガユニットとの間にインターフェースを提供するように構成されるデバッグ回路であって、前記データ処理回路が前記デバッグモードで動作する場合に前記データ処理回路の動作をデバッグ命令セットのデバッグ命令を使用して制御するように構成されるデバッグ回路と、を備えるデータ処理装置であって、
前記データ処理回路が前記デバッグモードに入ったときに、前記データ処理装置の現在の動作状態を判定し、現在の前記動作状態に応じて、複数の命令セットのうちの１つをデバッグ命令セットとして使用するように判定するように、前記データ処理回路が構成されるデータ処理装置を提供する。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】００２７
【補正方法】変更
【補正の内容】
【００２７】
第２の態様により、本発明は、
少なくとも動作モードおよびデバッグモードで動作するように構成されるデータ処理回路上でのプログラム命令の実施に応じて、データ処理動作を実施することと、
前記データ処理回路と前記データ処理回路の外部のデバッガユニットとの間のデバッグインターフェースを提供することであって、前記デバッグインターフェースは、前記データ処理回路が前記デバッグモードで動作しているときに、前記データ処理回路の動作をデバッグ命令セットのデバッグ命令を使用して制御するように構成されることと、
前記データ処理回路が前記デバッグモードに入ると、前記データ処理回路の現在の動作状態を判定し、現在の前記動作状態に応じて、デバッグ命令セットとして使用される複数の命令セットのうちの１つを判定することを備える、データ処理方法を提供する。
【手続補正４】
【補正対象書類名】明細書
【補正対象項目名】００２８
【補正方法】変更
【補正の内容】
【００２８】
第３の態様により、本発明は、
プログラム命令の実行に応じてデータ処理動作を実施するための手段であって、少なくとも動作モードとデバッグモードで動作するように構成されデータ処理動作を実施する手段と、
前記データ処理を実施するための手段と前記データ処理装置の外部のデバッグ分析のための手段との間のインターフェースを提供するように構成されるデバッグ処理のための手段であって、前記データ処理を実施するための手段が前記デバッグモードで動作するときに、前記データ処理を実施するための手段の動作をデバッグ命令セットのデバッグ命令を使用して制御するように構成されるデバッグ処理のための手段と、を備え、
前記データ処理を実施するための手段は、データ処理を実施するための前記手段が前記デバッグモードに入ったときに、データ処理を実施するための前記手段の現在の動作状態を判定し、現在の前記動作状態に応じて、デバッグ命令セットとして使用される複数の命令セットの１つを判定するように構成された、データ処理装置を提供する。
【国際調査報告】
2013542499.tif 000012
2013542499.tif 000013
2013542499.tif 000014