データを処理するための処理回路であって、複数の特権レベルで動作するように構成可能であり、かつ異なる特権レベルで、メモリおよびレジスタセットのうちの少なくとも1つに対する異なるアクセス許可をプログラム命令に課す、処理回路と、プログラム命令に応答して、前記処理回路が前記データ処理を実施するのを制御するための制御信号を生成する、命令デコード回路と、を備え、前記プログラム命令は、デバッグ特権レベルスイッチ命令を含み、前記命令デコード回路は、前記デバッグ特権レベルスイッチ命令に応答して、i前記処理回路がデバッグモードにある場合、現在の特権レベルからターゲット特権レベルへ前記処理回路をスイッチすることと、ii前記処理回路が非デバッグモードにある場合、前記現在の特権レベルに関わらず、前記デバッグ特権レベルスイッチ命令の実行を防止することと、を実施する、データ処理装置。前記ターゲット特権レベルは、前記現在の特権レベルとは異なる、請求項1に記載のデータ処理装置。前記ターゲット特権レベルは、前記デバッグ特権レベルスイッチ命令のフィールド内にエンコードされる、請求項1に記載のデータ処理装置。前記ターゲット特権レベルの指示を提供する少なくとも1つの専用ターゲットレジスタを備え、前記デバッグ特権レベルスイッチ命令は、前記専用ターゲットレジスタから、前記ターゲット特権レベルの前記指示を読み出す、請求項1に記載のデータ処理装置。前記専用ターゲットレジスタを複数備え、前記専用ターゲットレジスタの各々は、対応するターゲット特権レベルを記憶し、前記処理回路は、前記現在の特権レベルに依存して、前記ターゲット特権レベルを読み出す前記複数の専用ターゲットレジスタのうちの1つを選択するように構成される、請求項4に記載のデータ処理装置。前記デバッグ特権レベルスイッチ命令は、特権レベルインクリメント命令を含み、前記ターゲット特権レベルは、前記現在の特権レベルよりも高い特権レベルに対応することが要求される、請求項1~5項のいずれか1項に記載のデータ処理装置。前記デバッグ特権レベルスイッチ命令は、特権レベルデクリメント命令を含み、前記ターゲット特権レベルは、前記現在の特権レベルよりも低い特権レベルに対応することが要求される、請求項1~6のいずれか1項に記載のデータ処理装置。前記プログラム命令は、前記ターゲット特権レベルが、前記現在の特権レベルよりも高い特権レベルに対応することが要求される、特権レベルインクリメント命令に対応する第1の種類のデバッグ特権レベルスイッチ命令と、前記ターゲット特権レベルが、前記現在の特権レベルよりも低い特権レベルに対応することが要求される、特権レベルデクリメント命令に対応する第2の種類のデバッグ特権レベルスイッチ命令とを含む、請求項1~5のいずれか1項に記載のデータ処理装置。前記プログラム命令は、標準特権レベルスイッチ命令を含み、前記命令デコード回路は、前記標準特権レベルスイッチ命令に応答して、i前記処理回路が非デバッグモードにある場合、前記現在の特権レベルから前記ターゲット特権レベルへ前記処理回路をスイッチすることを実施する、請求項1~5のいずれか1項に記載のデータ処理装置。前記デバッグ特権レベルスイッチ命令および前記標準特権レベルスイッチ命令は、同一の命令ビット幅および同一構造のエンコードを有し、前記同一構造のエンコードは、前記デバッグ特権レベルスイッチ命令および前記標準特権レベルスイッチ命令の第1のビットセットが、実質的に同一のビットパターンを有する一方、前記デバッグ特権レベルスイッチ命令および前記標準特権レベルスイッチ命令の第2のビットセットが、実質的に非同一のビットパターンを有し、前記第2のビットセットは前記第1のビットセット未満である、請求項9に記載のデータ処理装置。前記第2のビットセットは、シングルビットを含む、請求項10に記載のデータ処理装置。前記現在の特権レベルは、第1の仮想メモリアドレスから物理メモリアドレスへの変換スキームを実装する前記処理回路の動作状態に対応し、前記ターゲット特権レベルは、第2の仮想メモリアドレスから物理メモリアドレスへの変換スキームを実装する前記処理回路の動作状態に対応し、前記第1の仮想メモリアドレスから物理メモリアドレスへの変換スキームは、第2の仮想メモリアドレスから物理メモリアドレスへの変換スキームとは異なる、請求項1~11のいずれか1項に記載のデータ処理装置。前記データ処理回路は、複数のシステムレジスタを備え、前記現在の特権レベルでは、第1の組のアクセス可能性条件は、前記複数のシステムレジスタに関連し、一方、前記ターゲット特権レベルでは、第2の組のアクセス可能性条件は、前記複数のシステムレジスタに関連し、前記第2の組のアクセス可能性条件は、前記第1の組のアクセス可能性条件とは異なる、請求項1~12のいずれか1項に記載のデータ処理装置。前記データ処理回路が前記非デバッグモードにある場合、前記デバッグ特権レベルスイッチ命令が未定義で、ソフトウェア例外を生成する、請求項1~13のいずれか1項に記載のデータ処理装置。前記複数の特権レベルのうちの第1は、アプリケーション層に対応し、前記複数の特権レベルのうちの第2は、オペレーティングシステム層に対応する、請求項1~14のいずれか1項に記載のデータ処理装置。前記複数の特権レベルのうちの1つは、ハイパーバイザ層に対応する、請求項1~15のいずれか1項に記載のデータ処理装置。前記複数の特権レベルのうちの1つは、セキュリティ監視層に対応する、請求項1~16のいずれか1項に記載のデータ処理装置。前記複数の特権レベルのうちの第3のレベルは、セキュリティ監視層に対応し、ハイパーバイザ層は存在しない、請求項15に記載のデータ処理装置。前記デバッグ特権レベルスイッチ命令は、前記スイッチを実装する前に、前記現在の特権レベルから前記ターゲット特権レベルへの前記スイッチが許可されるべきかどうかを判定するようにチェックをトリガし、前記チェックが失敗した場合に前記現在の特権レベルから前記ターゲット特権レベルへの前記スイッチを防止するように構成される、請求項1~18のいずれか1項に記載のデータ処理装置。前記ターゲット特権レベルがセキュリティ監視層に対応し、前記チェックがセキュリティチェックである、請求項19に記載のデータ処理装置。前記処理回路は、前記複数の特権レベルのうちのより高いレベルにおいて、前記処理回路が、前記複数の特権レベルのうちの少なくとも1つのより低いレベルをアクセス不可能であると定義することができるように構成可能であり、前記チェックは、前記ターゲット特権レベルへの許可されたアクセス可能性に対するアクセス可能性チェックである、請求項19に記載のデータ処理装置。データ処理装置上で実行するコンピュータプログラムによって提供される仮想マシンであって、請求項1~17のいずれか1項に記載のデータ処理装置に従う命令実行環境を提供する、仮想マシン。データを処理するための手段であって、複数の特権レベルで動作するように構成可能であり、かつ異なる特権レベルで、メモリおよびレジスタセットのうちの少なくとも1つに対して異なるアクセス許可を有する、データを処理するための手段と、プログラム命令に応答して、前記処理するための手段が前記データ処理を実施するのを制御するための制御信号を生成する、プログラム命令をデコードするための手段と、を備え、前記プログラム命令は、デバッグ特権レベルスイッチ命令を含み、前記プログラム命令をデコードするための手段は、前記デバッグ特権レベルスイッチ命令に応答して、i前記データを処理するための手段がデバッグモードにある場合、現在の特権レベルからターゲット特権レベルへ前記データを処理するための手段をスイッチすることと、ii前記データを処理するための手段が非デバッグモードにある場合、前記現在の特権レベルに関わらず、前記デバッグ特権レベルスイッチ命令の実行を防止することと、を実施する、データ処理装置。複数の特権レベルで動作するように構成可能である処理回路を有するデータ処理装置上で実施するためのデータ処理方法であって、異なる特権レベルで、前記処理回路は、メモリおよびレジスタセットのうちの少なくとも1つに対する異なるアクセス許可を有し、デバッグ特権レベルスイッチ命令を含むプログラム命令に応答して、データを処理するように処理回路を制御するための制御信号を生成するステップと、前記デバッグ特権レベルスイッチ命令に応答して、i前記処理回路がデバッグモードにある場合、現在の特権レベルからターゲット特権レベルへ前記処理回路をスイッチすることと、ii前記処理回路が非デバッグモードにある場合、前記現在の特権レベルに関わらず、前記デバッグ特権レベルスイッチ命令の実行を防止することと、を含む特権レベルスイッチ動作を実施するように、前記処理回路を制御するための制御信号を生成するステップと、を含む、データ処理方法。請求項24に記載の方法を実装するためのプログラム命令を記憶する、コンピュータプログラム製品。図1は、本発明の実施形態に従うデータ処理装置を模式的に例示する。データ処理装置は、システムオンチップを形成する処理構成要素をいくつか備える集積回路100を備える。具体的には、集積回路100は、実行パイプライン110と、汎用レジスタセット120と、デバッグモジュール130と、デバッグポート132と、メモリ管理ユニット140と、オンチップメモリ142とを備える。データ処理装置100はまた、オフチップメモリ144へのアクセスも有する。データ処理装置100のデバッグポート132は、データ処理回路100のデバッグを支援するためにデバッガソフトウェア152を実行するように構成されるホストパーソナルコンピュータ150に接続される。データ処理回路100は、データ処理装置が現在の特権レベルからスイッチしなければならないターゲット特権レベルを記憶するために、本技法に従い、デバッグ特権レベルスイッチ命令のサブセットによって使用される保存プログラムステータスレジスタSPSR143をさらに備える。保存プログラムステータスレジスタ143は、データ処理回路100が動作することが可能である複数の異なる特権レベルの各々に対して読み出される特定のレジスタが存在するように、特権レベルに応じてバンクされる。ターゲット特権レベルは、デバッグ特権レベルスイッチ命令が実際に実行される時点での現在の特権レベルに応じて、複数の保存プログラムステータスレジスタ143のうちの1つから読み出される。保存プログラムステータスレジスタ143は、ターゲット特権レベルの指示を提供する。この実施形態において、ターゲット特権レベルは、モード番号として、保存プログラムステータスレジスタ143のうちの関連するレジスタ内にエンコードされる。しかしながら、代替の実施形態では、ターゲット特権レベルは、保存プログラムステータスレジスタ143の中に直接表現される。この特定の実施形態では、4つの異なる特権レベルが存在するが、これは、図2を参照して詳細に説明する。デバッグモジュール130は、命令転送レジスタ134を備える。データ処理回路100が非デバッグモードにある場合、命令は、オンチップメモリ142またはオフチップメモリ144のいずれかから読み出され、実行パイプライン110に提供される。しかしながら、データ処理装置がデバッグモードにある場合、命令は、メモリ142、144のいずれからも読み出されず、代わりに、命令は命令転送レジスタ134の中に記憶され、そこから命令パイプライン110へ提供される。ホストPC150上のデバッガソフトウェア152は、適切なデバッグ命令を命令転送レジスタ134内へロードするように、デバッグポート132を介して、命令転送レジスタ134を制御する。この実施形態のデータ処理装置100は、RISC縮小命令セットコンピューティングアーキテクチャを有し、データを処理する命令がレジスタ上のみで動作し、メモリにアクセスする命令からは分離されている、ロードストアアーキテクチャである。データ処理装置100は、パイプライン型データ処理装置であり、実行パイプライン110は、フェッチ段階と、デコード段階と、実行段階図示せずとを含む。汎用レジスタセット120は、実行パイプライン110によって実行される命令のオペランドおよび結果を格納するために使用される。データ処理装置100は、複数の異なる命令種類を実行するように構成される。具体的には、データ処理回路100は、32ビットプログラム命令と言われる、32ビットワイドデータ上で演算する命令、および64ビットプログラム命令と言われる、64ビットワイドデータ上で演算する命令の両方を実行することができる。さらに、異なる種類の32ビットプログラム命令を実行することができる。第1の種類の32ビットプログラム命令は、A32命令セットであり、一方、第2の種類の32ビットプログラム命令は、A32命令セットのより縮小バージョンを含むT32命令セットである。T32命令の多くが16ビットワイド命令であるという事実に関わらず、これらは32ビットデータ上で演算し、32ビットプログラム命令も同様である。第3の種類の32ビット命令は、T32EE命令セットであり、T32命令セットに類似して、縮小命令セットであるが、この命令セットは、Java登録商標バイトコードとT32命令との間の変換を可能にする拡張を有し、このため、データ処理回路100による仮想マシンの実行をサポートする。この実施形態では、単一の64ビット命令セットだけを実行することができるが、代替の実施形態においては、複数の64ビット命令セットを提供できることが理解されるであろう。32ビットおよび64ビットプログラム命令の両方の実行をサポートするために、汎用レジスタ120は、データ処理回路100が32ビットモードで動作中、すなわち、32ビットプログラム命令を実行している場合、レジスタ120は、データ処理装置によって32ビットレジスタセットとして見なされるように構成される可変幅レジスタである。一方、データ処理装置100が64ビットモードで実行中であり、64ビットプログラム命令を実行している場合、データ処理装置100は、レジスタ120が64ビットレジスタとして見なされ、64ビット幅を完全に使用するように構成される。メモリ管理ユニット140は、データ処理装置100の現在の動作状態に応じて、オンチップメモリ140およびオフチップメモリ142へのアクセスを制御し、ユーザモードでは、システムモードでアクセス可能であるよりも小さいサブセットのメモリ場所がデータ処理回路100にアクセス可能である。データ処理装置のセキュアモードでは、ユーザモードおよびシステムモードで利用可能であるメモリ場所の全てが利用可能であり、加えて、特殊なセットのセキュアメモリ場所がデータ処理回路100にアクセス可能である。メモリ管理ユニット140は、実行パイプライン100によるメモリへのアクセス要求全てを取り扱うことに責任を持ち、その機能として、仮想メモリアドレスから物理メモリアドレスへの変換、メモリ保護、キャッシュ制御、およびバス調停が挙げられる。図1の実施形態において、デバッガユニットとして動作するホストパーソナルコンピュータ150は、データ処理回路100に対してオフチップに位置付けられる。しかしながら、代替の実施形態においては、デバッグソフトウェア152を稼動するホストパーソナルコンピュータ150の機能性は、図1のデータ処理回路100と同じシステムオンチップ上に位置するデバッグ処理回路の中に提供され、データ処理回路100は、システムオンチップ全体を形成しない。図2は、複数の異なる特権レベルに対応する、図1のデータ処理装置100の複数の異なる動作状態を模式的に例示する。それぞれの特権レベルは、データ処理装置100上で稼動するソフトウェアのそれぞれ異なる階層に対応する。図2の構成では4つの個別の特権レベル、すなわち、PL0、PL1、PL2、およびPL3が存在し、PL0は最低の特権レベルであり、PL3は最高の特権レベルである。特権レベルPL0は、ソフトウェア階層のアプリケーション層に対応し、6つの異なるプログラムアプリケーションがPL0に対応して例示され、その各々はデータ処理装置100上で実行することができる。次に高い特権レベルPL1は、オペレーティングシステムソフトウェア階層に対応し、この場合、32ビットのオペレーティングシステムである第1のゲストオペレーティングシステム222、64ビットのオペレーティングシステムである第2のゲストオペレーティングシステム224、および特殊なセキュリティ特徴を有する第3のセキュアオペレーティングシステム226という3つの異なるオペレーティングシステムが例示される。次の特権レベルPL2は、ハイパーバイザソフトウェア層に対応する。提供されるハイパーバイザソフトウェアアプリケーション230は、この場合使用される64ビットのプログラムで、第1のゲストオペレーティングシステム222および第2のゲストオペレーティングシステム224の両方が、非セキュアなデータ処理リソースへのアクセスを有することを可能にする。ハイパーバイザ230は、仮想化システムの一部で、第1のゲストオペレーティングシステム222および第2のゲストオペレーティングシステム224が同じデータ処理装置上で同時に稼動することを可能にし、各オペレーティングシステムは、他のオペレーティングシステムがそこで同時に稼動しているという認識を全く有さない。ハイパーバイザ230は、最低の特権レベルPL0に対応するアプリケーションシステム層および次に高い特権レベルPL1に対応するオペレーティングシステム層の両方において、仮想アドレスから物理アドレスへの変換がどのように実施されるかを制御する仮想変換テーブルベースレジスタVTTBRの実装を制御する。データ処理装置の動作におけるバグは潜在的に、ソフトウェア階層のいずれの層にも存在する可能性があるため、データ処理がデバッグモードにあるときに4つの異なる特権レベルの間をスイッチする能力は、データ処理回路を適切にデバッグするために重要である。最高の特権レベルPL3は、64ビットプログラムコードを含むセキュアモニタ240に対応する。データ処理装置100がセキュアモードで動作中である場合、ハイパーバイザ230のセキュア相当物が存在しないことに注意されたい。このため、セキュアモードでは、PL0、PL1、およびPL3の3つの特権レベルだけが効果的に存在する。ハイパーバイザ230は、セキュアモードで動作している場合には要求されず、セキュアモードでは、セキュアオペレーティングシステム226だけを実行することができる。最低の特権レベルPL0では、第1の32ビットプログラムアプリケーション202および第2の32ビットプログラムアプリケーション204の両方が、32ビットの第1のゲストオペレーティングシステム222の上に稼動する。64ビットアプリケーションである第3のプログラムアプリケーション206、および32ビットプログラムアプリケーションである第4のプログラムアプリケーション208はどちらも、64ビットの第2のゲストオペレーティングシステム224上で稼動する。図3は、図2の特権レベルPL1、PL2およびPL3の異なるレベルで、データ処理装置100が、システムレジスタセットに対する異なるアクセス許可をどのように有するかを模式的に例示する。異なる特権レベルで、処理回路はフルセットのオンチップおよびオフチップメモリの場所142、144に対して異なるアクセス許可を有する可能性もあるが、これは図3には図示されていないことに注意されたい。図3を参照すると、フルセットのシステムレジスタは、セキュアモニタに対応する最高の特権レベルPL3では、データ処理装置に公開される。第1のサブセットのシステムレジスタは、ハイパーバイザ層に対応する特権レベルPL2でデータ処理装置に公開される一方、第2のサブセット330のシステムレジスタは、それ自体、PL2に公開されるシステムレジスタのサブセットを形成し、データ処理装置100に公開される。第3の、さらにより小さいサブセット330のシステムレジスタは、オペレーティングシステムソフトウェア階層に対応する特権レベルPL1で、データ処理装置に公開される。したがって、異なる特権レベルは、システムレジスタに対する異なるレベルのアクセス可能性に対応すると考えることができる。最後に、第4の、最も小さいサブセット340のシステムレジスタは、アプリケーションソフトウェア階層に対応する特権レベルPL0で、データ処理装置に公開される。いくつかの実装においては、これは空のセットであってもよいことが理解されるであろう。図4は、4つの異なる特権レベルのうちの異なるレベル間でデータ処理装置をスイッチするために、本技法による2つの異なるデバッグ特権レベルスイッチ命令がどのように使用されるかを模式的に例示する。図4は、最低の特権レベルPL0に対応するアプリケーション層410と、次の特権レベルPL1に対応するゲストオペレーティングシステム層420と、PL2に対応するハイパーバイザ層430と、最高の特権レベルPL3に対応するセキュアモニタ層440とを含む。図4に示されるように、特権レベルPL0、PL1、PL2、およびPL3の各々は、異なる、仮想から物理へのアドレス変換スキームを実装する。具体的には、特権レベルPL0およびPL1では、仮想から物理へのアドレス変換は、i1対のバンクされた変換テーブルベースレジスタTTBR0_PL1およびTTBR1_PL1、TTBR0_PL1は、低仮想アドレスを変換するために使用されるページテーブルの階層へのポインタであり、TTBR1_PL1は、高仮想アドレスを変換するために使用されるページテーブルの階層へのポインタであるへの参照が関与する、2段階の変換である。図4において、PL0およびPL1は、非セキュアモードであり、したがって、この変換は、入力仮想アドレスVAから中間物理アドレスIPAを生成し、ii仮想変換テーブルベースレジスタVTTBR_PL2を参照して、中間物理アドレスを最終の物理アドレスPAに変換する。仮想変換テーブルベースレジスタは、ハイパーバイザ430によって提供され、ハイパーバイザが、各ゲストオペレーティングシステムを他のゲストオペレーティングシステムから隠すことを可能にする。ハイパーバイザ430は、特権レベルPL2で、仮想変換テーブルベースレジスタを制御するので、データ処理装置がハイパーバイザ特権レベルPL2に対応するプログラム命令を実行しているとき、仮想から物理へのアドレス変換には、中間物理アドレスを生成することのない仮想アドレスから物理アドレスへの直接変換が関与する。このため、ハイパーバイザ特権レベルPL2での仮想から物理へのアドレス変換には、仮想変換テーブルベースレジスタではなく、別のバンクされた変換テーブルベースレジスタ、TTBR_PL2が関与する。これによって、ハイパーバイザは、全てのゲストオペレーティングシステムからそれ自体を隠すことが可能になる。セキュアモニタ440は、特権レベルPL3で、非セキュアモードで動作している場合、PL2、またはPL1およびPL0にアクセス可能ではない特殊なセキュア物理アドレスへのアクセスを有する。セキュアモニタは、それより高い特権レベルで動作するので、ハイパーバイザの制御の対象ではない。このため、セキュアモニタ特権レベルPL3での仮想から物理へのアドレス変換には、仮想変換テーブルベースレジスタではなく、別のバンクされた変換テーブルベースレジスタ、TTBR_PL3が関与する。ハイパーバイザ430が存在しないセキュアモードでは、PL0およびPL1でのアドレス変換は、TTBR0_PL1およびTTBR1_PL1を使用して、中間物理アドレスを生成することなく、したがって、仮想変換テーブルベースレジスタを使用することなく、仮想アドレスを物理アドレスに直接変換する。これらの物理アドレスもまた、セキュアな物理アドレスにすることができる。図4に示されるように、デバッグ特権レベルデクリメント命令に対応する専用DRET命令は、図1のデータ処理装置100が、現在のより高い特権レベルとターゲットのより低い特権レベルとの間の推移を行うことを可能にするように使用される。例えば、データ処理装置が現在、特権レベルPL3でセキュアモニタ440から命令を実行中である場合、DRET命令の実行は、システムをPL2に対応するハイパーバイザ層430へ下方推移するために使用することができる。システムが現在PL2に対応するハイパーバイザレベル430にある場合、DRET命令の実行は、システムをゲストオペレーティングシステム420に対応する特権レベルPL1へ下方推移するために使用することができる。システムが現在PL1に対応するゲストオペレーティングシステムレベル420にある場合、DRET命令の実行は、システムをPL0に対応するアプリケーション層410へ下方推移するために使用することができる。図4は、DRET命令に現在のより高い特権レベルPL3から1つ特権レベルを下げて、次に高い特権レベルへの推移が関与することを示すが、本発明は、これに決して限定されず、DRET命令のターゲット特権レベルは、次に低い特権レベルだけではなく、同じまたは任意のより低い特権レベルを含むことができる。DRET命令は、特権レベルに応じてバンクされる、保存プログラムステータスレジスタ143のうちの適切な1つから、ターゲット特権レベルを取得する。このため、DRET命令が実行されるときにデータ処理装置が現在PL3にある場合、適切なターゲット特権レベルを判定するために、SPSR_PL3が読み出される。データ処理装置が現在ハイパーバイザ特権レベルPL2にある場合、適切なターゲット特権レベルを判定するために、保存プログラムステータスレジスタSPSR_PL2が読み出される。同様に、データ処理装置が現在ゲストオペレーティングシステム特権レベルPL1にある場合、ターゲット特権レベルはSPSR_PL1から読み出される。データ処理装置が現在、最低の特権レベルおよびアプリケーション層410に対応する特権レベルPL0にある場合、それより低い特権レベルが存在しないため、最低の特権レベルPL0にある時、命令DRETの実行は許可されない。PL0より低い許可可能なターゲット特権レベルが存在しないため、データ処理装置が現在最低の特権レベルPL0にないことをチェックするために、DRETの実行中にチェックが実施される。図4には特権レベルインクリメント命令DCPSも示される。この命令は、図1の保存プログラムステータスレジスタSPSR143を使用する代わりに、命令自体のエンコード内部の即値フィールドから所望のターゲット特権レベルを取得する。図4に示されるように、DCPS命令は、PL0からPL1への推移、またはPL1からPL2への推移、またはPL2からPL3への推移を行うために使用することができる。データ処理装置が既に最高の特権レベルPL3にあるときにDCPS命令が実行された場合、明確に定義されたターゲット特権レベルは存在せず、DCPS命令を実行するときに推移するそれより高い特権レベルが確かに存在することを確認するためにチェックが実施される。DCPS命令は、現在の特権レベルから任意のより高い特権レベル、例えば、PL0から直接PL3またはPL2へ飛び越えるために使用することができ、DCPS命令の単一の実行によって、2つ以上の特権レベルを飛び越えることができる。異なる特権レベルで、異なる仮想から物理へのアドレス変換が存在するという事実は、データ処理装置は、デバッグモードにあるとき、デバッグ命令を実行するときに適当な仮想から物理へのアドレス変換スキームが適用されることを保証するために、特権レベル間を推移することが可能でなければならないことが重要であることを意味する。特権レベルインクリメント命令DCPSおよび特権レベルデクリメント命令DRETは、データ処理装置がデバッグモードにあるときのみに実行され、これらの命令の両方は非デバッグモードでは未定義であることに注意されたい。これらの2つの命令を非デバッグモードの間に実行しようとすると、ソフトウェア例外を発生させる。図5は、4つの異なる特権レベルPL0、PL1、PL2、およびPL3で入ることができる、データ処理装置100の複数の異なる動作モードを模式的に例示する。図5はまた、図4に例示されるデバッグモード特権レベルスイッチ命令DCPSおよびDRETを補完するために図1のデータ処理装置に使用される、複数の非デバッグモード特権レベルシフト命令も模式的に例示する。非デバッグモードまたは通常モードでは、データ処理装置は、デバッグモードの状況と同様に、4つの異なる特権レベルのうちの1つで動作することができる。最低の特権レベルPL0では、データ処理装置は特権のないEL0モード510で動作する。次に高い特権レベルPL1では、データ処理装置は、2つの異なる処理モード、すなわち、EL1h例外処理モード520およびEL1tスレッドモード522のうちの1つで動作することができる。同様に、次の特権レベルPL2では、EL2h例外処理モード530およびEL2tスレッドモード532の選択、PL3特権レベルでは、EL3h例外処理モード540およびEL3tスレッドモード542の選択が存在する。図5は、非デバッグモードで使用することができる、4つの異なる特権レベル変更命令を示す。命令SVC、HVCおよびSMCは全て非デバッグモードの特権レベルインクリメント命令である。SVC命令は、特権レベルPL1のターゲットを有し、HVC命令は、PL2のターゲットを有し、一方、SMC命令は、PL3のターゲット特権レベルを有する。このため、これらの3つの命令の各々によって実施される特権レベル推移は、ターゲット特権レベルに従って定義される。SVC、HVC、およびSMC命令は、例外ベクトルアドレスへの分岐を実施することによって、非デバッグモードで異なる特権レベル間の推移を実施する。このため、これらは、より高い特権レベルへの制御されたエントリを許可する、システム呼び出し命令である。命令がターゲット特権レベル、またはより高い特権レベルで実行された場合、命令は特権レベルを変更しない。このような分岐命令の使用は、データ処理装置がデバッグモードにあるときにデバッグ命令が図1の命令転送レジスタ134からフェッチされるため、データ処理装置がデバッグモードにあるときは望ましくない。SVC、HVC、およびSMCの非デバッグモード特権レベルインクリメント命令は、データ処理装置が64ビットモードおよび32ビットモードの両方で動作しているときに実行することができる。SVC、HVC、およびSMC命令は、64ビットのA64命令セットの同様なエンコードを有し、これらは、ターゲットの例外レベルを指定するエンコードの即値フィールドだけが異なる。図5に示される命令ERETは、特権レベルからターゲットのより低い特権レベルへ下降するように使用される特権レベルデクリメント命令であり、例えば、EL2hモード530から、EL1tモード522への推移を有効にするために使用することができる。ERET命令は、特権レベルに従ってバンクされる保存プログラムステータスレジスタ143からそのターゲット特権レベルを取得し、これもバンクされるシステムレジスタELR図1には図示せずの中のアドレスに分岐する。すなわち、ERETもまた分岐命令である。64ビットモードでは、ERETは、特権レベルPL1、PL2、およびPL3の各々で利用可能であるが、32ビットモードでは、ERETはPL2でのみ利用可能であり、32ビットモードでは、異なる特権デクリメント命令が使用されなければならない。例えば、レジスタではなく、メモリからターゲット特権レベルおよびアドレスを読み出す特権デクリメント命令等、他の特権インクリメントおよびデクリメント命令が存在してもよい。非デバッグモードにおけるシステムの正しい動作を確実にするために、そのような命令が分岐することは利点である。分岐は、特権レベルの変更がシステム全体で同期化されることを可能にする。データ処理装置の非デバッグモードの64ビット動作だけで使用するためのさらなる命令が提供される。この命令は、図5においてMSRとのみ示される、MSRSPSelである。この命令は、ソフトウェアが、同じ特権レベル内の異なるモード間をスイッチすることを可能にする。例えば、EL1hモード520からEL1tモード522である。これは特権レベルにおける変更を要求しないので、これらの命令は、システム全体で同期化されることが要求されず、したがって、コストがかかる分岐動作を省略することができる。64ビット動作において、この命令は、特権レベルを変更するために使用することはできない。同様な命令、MSRCPSRおよびCPSは、同じ特権レベルのモード間を移動するために、32ビット動作に提供される。しかしながら、32ビット動作では、これらの命令は、例えば、特権レベルPL1420での特権のある32ビットモード動作から、特権レベルPL0410での32ビットユーザモード動作のより低い特権へ変更することによって、特権レベルをデクリメントするため図4を参照等、特権レベル間の下降には使用することもできるが、特権レベルの増加には決して使用できない。しかしながら、この方式で特権レベルをデクリメントすると、変更がシステム全体で適切に同期されないため、ソフトウェア誤動作につながる場合がある。MSRCPSRまたはCPS命令が、データ処理装置がユーザモードで特権レベルPL0410最低の特権レベルで動作中であるときに実行されるためにフェッチされた場合、これらの命令は単に無視される。デバッグモードで実行されるときにオーバーロードされた命令は、例えば、PL0でのユーザモード510からPL1に対応するSVCモード522へ等、特権レベルの増加を含む、特権レベル間のいずれかの変更を行うために使用することができるので、ARMv7マイクロプロセッサアーキテクチャにおいて、主に非デバッグモードの32ビット動作において使用する目的で、MSRCPSR命令を使用することは知られている。非デバッグモードでは、このような変更は同期化されず、特権の増加は許可されない。このため、この動作をオーバーロードすることによって、変更が同期されなければならず、通常の許可およびセキュリティチェックがデバッグモードでオーバーライドされなければならないため、プロセッサ実装が複雑になる。図6は、データ処理装置がデバッグモードにあるときに特権レベルを増加するために使用されるDCPS命令の命令エンコードを模式的に例示する。図6に示されるように、命令エンコードは、A64命令セットすなわち、64ビットデータ上で演算する命令に属する32ビットワイド命令エンコードであり、ターゲット特権レベルは、命令のビットDCPS[1:0]内の即値フィールドとして定義されるので、この特定の実施形態に従う2つのビットフィールドの多様な異なる値は、図6の表に定義される。このように、DCPS[1:0]=0b01のビット値は、PL1へのシフトになり、DCPS[1:0]=0b10のターゲットビットフィールドは、ターゲット特権レベルPL2になり、DCPS[1:0]=0b11のビット値は、PL3へのシフトになる。この命令は、特権レベルを現在の特権レベルから減少するために使用することはできない。DCPS命令のビット[21:5]は、命令の実行中、データ処理回路によって無視されることに注意されたい。図7Aは、デバッグモードで使用される特権レベルデクリメント命令、DRETのエンコードを模式的に例示する。このDRET命令エンコードは、A64命令セットに属する32ビットワイド命令エンコードである。図7Bは、非デバッグモード特権レベルデクリメント命令である、ERET命令の命令エンコードを模式的に例示する。図7AのDRET命令エンコードおよび図7BのERET命令エンコードのエンコードを比較することによって、DRET命令およびERET命令は、同一構造のエンコード、すなわち、命令エンコードが対応または類似の形式および関係を有することが確認できる。具体的には、これらの2つの命令のビット[23:21]は、2つの命令エンコードの間で異なる唯一のビットである。このように、この特定の実施形態において、命令エンコードの合計32ビットのうちのシングルビット、ビット[21]だけが、デバッグモードDRETのエンコードと非デバッグモードERETのエンコードの間で異なる。同一構造の命令エンコードでは、完全な命令エンコードの対応するビットのより大きいサブセットが、それらのビット値で同一であるが、対応するビットのより小さいサブセットが、それらのビット値で同一ではないことを理解されたい。典型的に、図7Aおよび図7Bの場合のように、非同一のビット部分は、同一のビット部分よりも相当小さい。いくつかの実施形態において、2つの同一構造の命令エンコードの非同一ビットセットは、命令エンコードの同一部分に対応するビットセットのうち、10分の1未満のビット数を含むビットセットを有する。いくつかの実施形態において、命令エンコードの非同一部分に対応するビットセットは、シングルビットであり、同一ビットに対応するビットセットは、命令の完全なビット幅より1つ小さい。図7Aおよび図7Bの場合のように、図7Aおよび図7Bの命令における同一ビット幅は、ビット部分[31:24]および[20:0]に対応するので、同一ビット幅は、隣接するビット幅である必要はない。命令デコーダ回路図示せずに対して、ビットの順序は重要ではない。図7Cは、非デバッグモード特権レベルインクリメント命令、SVC、HVC、およびSMCの命令エンコードを模式的に示す。これらの命令エンコードは、A64命令セットに属する32ビットワイド命令エンコードである。最初の行のエンコードはSVC命令に対応し、真中の行はHVC命令エンコードに対応し、一方、一番下の行は、SMC命令エンコードに対応する。これらの命令の各々は、命令をデコードするときに無視されるコメントフィールドを含み、このコメントフィールドは、命令の[20:5]に対応する。これらの命令のビット[31:21]および[4:2]は同一である一方、最小の2つのビットは非同一である。事実、最小の2つのビットは、ターゲット例外レベルを指定するエンコード内の即値フィールドである。SVC命令が特権レベルPL1のターゲットを有する図5を思い出すと、HVC命令は、PL2のターゲット特権レベルを有し、一方、SMC命令は、PL3の最高の特権レベルのターゲットを有する。図6のDCPS命令エンコードおよび図7CのSVC、HVC、およびSMCエンコードと比較することによって、DCPS命令は、SVC、HVC、およびSMC命令の基本エンコードと同一構造であるエンコードを有し、その中で、2つのビット[23]および[21]内だけが異なることを確認できる。すなわち、ターゲットがPL1であるDCPSはSVCと同一構造であり、ターゲットがPL2であるDCPSはHVCと同一構造であり、ターゲットがPL3であるDCPSはSMCと同一構造である。図8は、DCPSデバッグモード特権レベルインクリメント命令の実行時に、図1のデータ処理装置によって行われる処理動作を模式的に例示する流れ図である。処理は、段階810で開始し、DCPS命令が実行される。工程は段階812に進み、プロセッサがデバッグモードにあるかどうかを判定する。プロセッサがデバッグモードにはない、すなわち、非デバッグモードにある場合、プロセッサは段階814に進み、未定義の命令例外が投げられる。一方、段階812で、プロセッサが実際にはデバッグモードであると判定された場合、プロセッサは816に進み、命令が特権レベルPL3のターゲットを有するかどうかが判定される。ターゲットが最高特権レベルPL3ではない場合、プロセッサは段階830に進み、命令が事実確かに最高レベルPL3をターゲットとする場合、工程は段階818に進む。段階818で、現在の特権レベルがPL0であるか、すなわち、プロセッサが最低特権レベルにあるかが判定される。特権PL3をターゲットとするDCPS動作は、PL0では許可されず、したがって、段階818で、現在の特権レベルがPL0であると判定された場合、工程は段階824に進み、エラーフラグが設定されてから、工程は段階850で完了するように進む。一方、段階818で現在の特権レベルが特権レベルPL0ではないと判定された場合、工程は段階820に進む。段階820で、要求された推移が許可されるかを判定するためにセキュリティチェックが実施され、次いで、工程は段階822に進み、セキュリティチェックの結果が分析される。PL3が、最高の特権レベル、およびデータ処理装置の非セキュア動作状態とセキュア動作状態との間の経路に関係するため、セキュリティチェックは、DCPS演算を発行しているデバッガがセキュア動作状態にアクセスすることを許可されていることを確実にするために実施される。典型的に、このセキュリティチェックには、デバッグモジュール130に対する構成入力の状態をチェックすることが関与する。構成入力がアサートされている場合、セキュリティチェックは合格し、そうでない場合、不合格である。この構成入力はいくつかの方式で送られてもよいが、容易に改ざんできないよう、データ処理回路100内部の別の構成要素によって送られることが好ましい。構成入力を送る構成要素は、例えば、秘密のパスワードまたは質問‐回答機構等の周知の手段の使用によって、デバッガのユーザの認証をチェックすることに責任を負う。段階822で、セキュリティチェックが合格し、データ処理装置が現在の特権レベルからPL3モードへの推移を行うことを許可された場合、工程は段階826に進み、データ処理装置の動作のPL3モードが選択され、工程は段階850で完了するように進む。一方、段階822で、セキュリティチェックが不合格になり、最高特権レベルPL3へのアクセスが許可されないことを示すと、工程は段階824に進み、エラーフラグが設定され、次いで、工程は段階850で完了するように進む。段階816に戻ると、この段階で、命令が最高の特権レベルPL3をターゲットにしていないと判定された場合、工程は段階816から830に進む。段階830で、命令が特権レベルPL2をターゲットにするかどうかが判定される。命令が事実確かに特権レベルPL2をターゲットとする場合、工程は段階832に進む。段階832で、現在の特権レベルがPL0であるか、すなわち、プロセッサが最低特権レベルにあるかが判定される。特権PL2をターゲットとする動作は、PL0では許可されず、したがって、段階832で、現在の特権レベルがPL0であると判定された場合、工程は段階824に進み、エラーフラグが設定されてから、工程は段階850で完了するように進む。一方、段階832で現在の特権レベルが特権レベルPL0ではないと判定された場合、工程は段階834に進む。段階834で、現在の特権レベルがPL3であるか、すなわち、プロセッサが既に最高特権レベルにあるかが判定される。プロセッサがPL3にある場合、PL2のターゲットは、特権レベルを減少することになり、これは、特権レベルインクリメントDCPS命令を使用して有効にすることはできない。プロセッサが既に特権レベルPL3にある場合、工程は、図8の円で囲まれたAを経由して段階826に進み、データ処理装置の動作のPL3モードが選択され、工程は、段階850で完了するように進む。一方、段階834で、プロセッサが最高の特権レベルPL3にはないと判定された場合、工程は、段階836に進み、PL2モードが選択される。工程は、次いで、段階850で完了するように進む。一方、段階830で、命令が特権レベルPL2をターゲットとしてないと判定された場合、工程は段階840に進み、命令は特権レベルPL1をターゲットとしていると推定される。工程は次いで、段階842に進み、プロセッサが特権レベルPL3にあるか、すなわち、特権レベルPL1への下方推移は可能ではないことが判定される。したがって、この場合、工程は、図8の円で囲まれたAを経由して段階826に進み、データ処理装置の動作のPL3モードが選択され、工程は、段階850で完了するように進む。段階842で、データ処理装置がPL3にはないと判定された場合、工程は段階844に進み、プロセッサが特権レベルPL2にあるかが判定される。プロセッサがPL2にある場合、PL1のターゲットはここでも特権レベルを減少させることになる。したがって、この場合、工程は段階836に進み、PL2モードが選択されてから、次いで、工程は段階850で完了するように進む。段階844に戻ると、データ処理装置が特権レベルPL2にはないと判定された場合、工程は段階846に進み、PL1モードが選択され、次いで、工程は段階850で完了する。段階832、段階842、および段階844では、データ処理装置が既にターゲット特権レベルにある場合、エラーフラグは設定されないが、この状態でそれぞれの命令を実行することは、単に、特権レベルには変更がないことを意味する。しかし、各特権レベルには複数のモードが存在する場合があるため、モードの変更となってもよい。図9は、デバッグモード特権レベルデクリメント命令、DRETの実行に応答して実施されるデータ処理動作を模式的に例示する流れ図である。プロセスは段階910で開始し、DRET命令が図1のパイプラインによって実行される。工程は次いで段階912に進み、プロセッサがデバッグモードにあるかどうかを判定する。段階912で、プロセッサがデバッグモードにないと判定された場合、工程は段階914に進み、未定義の命令例外が投げられる。これは、DRET命令はデバッグモードのみで実行でき、非デバッグモードではソフトウェア例外を投げるためである。一方、段階912で、プロセッサがデバッグモードにあると判定された場合、工程は段階916に進み、ターゲット特権レベルが、図1の適当にバンクされた保存プログラムステータスレジスタ143から読み出される。工程は次いで段階918に進み、ターゲットモードエンコードが有効であるかどうかを判定する。保存プログラムステータスレジスタ143から取得されたターゲットモードエンコードが有効ではない場合、工程は段階920に進み、不正状態フラグが設定され、次いで、工程は段階960で完了する。図9の不正状態フラグは、図8のエラーフラグとは異なることに注意されたい。一方、段階918でターゲットモードエンコードが事実有効であると判定された場合、工程は段階930に進み、ターゲットモードの特権レベルが最高の特権レベルPL3であるかどうかが判定される。ターゲットモードが最高の特権レベルPL3のモードであると判定された場合、工程は段階932に進み、現在の特権レベルが既にPL3未満であるかどうかが判定される。段階932で、現在の特権レベルがPL3未満であると判定された場合、工程は段階920に進み、不正状態フラグが設定され、段階960で完了する。DRET命令は、特権レベルを増加するために使用できないことを喚起されたい。段階932で、現在の特権レベルがまだPL3未満ではないと判定された場合、工程は段階934に進み、ターゲットのPL3モードへの推移が行われる。効果的にこの場合、段階932で、システムは特権レベルPL3にあり、段階934でのターゲットモードへの変更は、現在の特権レベルに実際の変更を全く有効にしないが、現在の特権レベルにとどまることになる。しかし、各特権レベルには複数のモードが存在する場合があるため、モードの変更となってもよい。段階930で、ターゲットモードがPL3モードではないと判定された場合、工程は、段階940に進み、ターゲットモードがPL2モードであるかどうかが判定される。ターゲットモードが事実PL2モードである場合、工程は段階942に進み、データ処理装置が現在既に特権レベルPL2未満であるかが判定される。データ処理装置が既に現在特権レベルPL2未満である場合、これは、特権レベルの増加になるために無効な推移であり、したがって、工程は、図9の丸で囲まれたAを経由して、段階920に進み、不正状態フラグが設定され、次いで、段階960で完了する。段階942で、現在の特権レベルはまだ特権レベルPL2未満ではないと判定された場合、システムはPL2またはPL3のはずであるので、工程は段階934に進み、ターゲットモードに対する変更が行われ、システムは必要に応じて特権レベルPL2にスイッチし、システムは、段階960で完了する。段階940に戻ると、段階940でターゲットモードがPL2モードであると判定する代わりに、ターゲットがPL2モードではないと判定された場合、工程は段階950に進み、ターゲットモードがPL1モードであるかが判定される。ターゲットモードがPL1であることが検出された場合、工程は段階952に進み、現在の特権レベルが事実既にPL1未満であるかが判定される。現在の特権レベルが既にPL1未満である場合、これは、特権レベルの増加が関与することができないため、不正な推移であり、従って、工程は円で囲まれたAを経由して進み、段階920で不正な状態フラグが設定され、工程は段階960で完了する。一方、段階952で、現在の特権レベルはまだ特権レベルPL1未満ではないと判定された場合、現在の特権レベルは、PL3、PL2、またはPL1の1つであるはずで、工程は段階934に進み、ターゲットのPL1モードへの変更、すなわち、特権レベルPL1への変更が必要に応じて有効になり、工程は段階960で完了する。段階950に戻ると、ターゲットモードがPL1モードではないと判定された場合、工程は段階954に進み、ターゲットモードはPL0モードであることが確立され、次いで、工程は段階934に進み、ターゲットPL0モードへの変更、すなわち、特権レベルPL0への変更が必要に応じて有効になり、工程は段階960で完了する。図10は、使用されてもよい、仮想マシンの実装を例示する。前述の実施形態は、関連の技法をサポートする特定の処理ハードウェアを動作するための装置および方法という点で、本発明を実装するが、ハードウェアデバイスのいわゆる仮想マシン実装を提供することも可能である。これらの仮想マシン実装は、仮想マシンプログラム1010をサポートするホストオペレーティングシステム1020を稼動するホストプロセッサ1030上で稼動する。典型的に、十分な速度で実行する仮想マシン実装を提供するためには、大型の強力なプロセッサが要求されるが、このような手法は、互換性または再利用の理由のために別のプロセッサにネイティブなコードを実行することが所望される場合等、所定の状況において正当化されてもよい。仮想マシンプログラム1010は、仮想マシンプログラム1010によってモデル化されているデバイスである現実のハードウェアによって提供されるアプリケーションプログラムインターフェースと同じである、アプリケーションプログラム1000に対するアプリケーションプログラムインターフェースを提供する。このため、上記のメモリアクセスの制御を含むプログラム命令は、仮想マシンハードウェアとの相互作用をモデル化するように仮想マシンプログラム1010を使用して、アプリケーションプログラム1000内部から実行されてもよい。