(57)【要約】  処理回路と命令デコード回路とを備えるデータ処理装置を提供する。データ処理装置は、複数の異なる特権で動作することが可能である。データ処理装置の処理回路は、異なる特権レベルのうちの異なるレベルにあるメモリおよびレジスタセットのうちの少なくとも１つへの異なるアクセス許可をプログラム命令に課す。デバッグ特権レベルスイッチ命令が提供され、デコード回路がこの命令に応答して、処理回路がデバッグモードにある場合、現在の特権レベルからターゲット特権レベルへ処理回路をスイッチする。しかしながら、処理回路が非デバッグモードにある場合、命令デコード回路は、現在の特権レベルに関わらず、特権レベルスイッチ命令の実行を防止する。
2013542498.tif 000002
【特許請求の範囲】
【請求項１】
データを処理するための処理回路であって、複数の特権レベルで動作するように構成可能であり、かつ異なる特権レベルで、メモリおよびレジスタセットのうちの少なくとも１つに対する異なるアクセス許可をプログラム命令に課す、処理回路と、
プログラム命令に応答して、前記処理回路が前記データ処理を実施するのを制御するための制御信号を生成する、命令デコード回路と、を備え、
前記プログラム命令は、デバッグ特権レベルスイッチ命令を含み、前記命令デコード回路は、前記デバッグ特権レベルスイッチ命令に応答して、
（ｉ）前記処理回路がデバッグモードにある場合、現在の特権レベルからターゲット特権レベルへ前記処理回路をスイッチすることと、
（ｉｉ）前記処理回路が非デバッグモードにある場合、前記現在の特権レベルに関わらず、前記デバッグ特権レベルスイッチ命令の実行を防止することと、を実施する、データ処理装置。
【請求項２】
前記ターゲット特権レベルは、前記現在の特権レベルとは異なる、請求項１に記載のデータ処理装置。
【請求項３】
前記ターゲット特権レベルは、前記デバッグ特権レベルスイッチ命令のフィールド内にエンコードされる、請求項１に記載のデータ処理装置。
【請求項４】
前記ターゲット特権レベルの指示を提供する少なくとも１つの専用ターゲットレジスタを備え、前記デバッグ特権レベルスイッチ命令は、前記専用ターゲットレジスタから、前記ターゲット特権レベルの前記指示を読み出す、請求項１に記載のデータ処理装置。
【請求項５】
前記専用ターゲットレジスタを複数備え、前記専用ターゲットレジスタの各々は、対応するターゲット特権レベルを記憶し、前記処理回路は、前記現在の特権レベルに依存して、前記ターゲット特権レベルを読み出す前記複数の専用ターゲットレジスタのうちの１つを選択するように構成される、請求項４に記載のデータ処理装置。
【請求項６】
前記デバッグ特権レベルスイッチ命令は、特権レベルインクリメント命令を含み、前記ターゲット特権レベルは、前記現在の特権レベルよりも高い特権レベルに対応することが要求される、請求項１〜５項のいずれか１項に記載のデータ処理装置。
【請求項７】
前記デバッグ特権レベルスイッチ命令は、特権レベルデクリメント命令を含み、前記ターゲット特権レベルは、前記現在の特権レベルよりも低い特権レベルに対応することが要求される、請求項１〜６のいずれか１項に記載のデータ処理装置。
【請求項８】
前記プログラム命令は、前記ターゲット特権レベルが、前記現在の特権レベルよりも高い特権レベルに対応することが要求される、特権レベルインクリメント命令に対応する第１の種類のデバッグ特権レベルスイッチ命令と、前記ターゲット特権レベルが、前記現在の特権レベルよりも低い特権レベルに対応することが要求される、特権レベルデクリメント命令に対応する第２の種類のデバッグ特権レベルスイッチ命令とを含む、請求項１〜５のいずれか１項に記載のデータ処理装置。
【請求項９】
前記プログラム命令は、標準特権レベルスイッチ命令を含み、前記命令デコード回路は、前記標準特権レベルスイッチ命令に応答して、
（ｉ）前記処理回路が非デバッグモードにある場合、前記現在の特権レベルから前記ターゲット特権レベルへ前記処理回路をスイッチすることを実施する、請求項１〜５のいずれか１項に記載のデータ処理装置。
【請求項１０】
前記デバッグ特権レベルスイッチ命令および前記標準特権レベルスイッチ命令は、同一の命令ビット幅および同一構造のエンコードを有し、前記同一構造のエンコードは、前記デバッグ特権レベルスイッチ命令および前記標準特権レベルスイッチ命令の第１のビットセットが、実質的に同一のビットパターンを有する一方、前記デバッグ特権レベルスイッチ命令および前記標準特権レベルスイッチ命令の第２のビットセットが、実質的に非同一のビットパターンを有し、前記第２のビットセットは前記第１のビットセット未満である、請求項９に記載のデータ処理装置。
【請求項１１】
前記第２のビットセットは、シングルビットを含む、請求項１０に記載のデータ処理装置。
【請求項１２】
前記現在の特権レベルは、第１の仮想メモリアドレスから物理メモリアドレスへの変換スキームを実装する前記処理回路の動作状態に対応し、前記ターゲット特権レベルは、第２の仮想メモリアドレスから物理メモリアドレスへの変換スキームを実装する前記処理回路の動作状態に対応し、前記第１の仮想メモリアドレスから物理メモリアドレスへの変換スキームは、第２の仮想メモリアドレスから物理メモリアドレスへの変換スキームとは異なる、請求項１〜１１のいずれか１項に記載のデータ処理装置。
【請求項１３】
前記データ処理回路は、複数のシステムレジスタを備え、前記現在の特権レベルでは、第１の組のアクセス可能性条件は、前記複数のシステムレジスタに関連し、一方、前記ターゲット特権レベルでは、第２の組のアクセス可能性条件は、前記複数のシステムレジスタに関連し、前記第２の組のアクセス可能性条件は、前記第１の組のアクセス可能性条件とは異なる、請求項１〜１２のいずれか１項に記載のデータ処理装置。
【請求項１４】
前記データ処理回路が前記非デバッグモードにある場合、前記デバッグ特権レベルスイッチ命令が未定義で、ソフトウェア例外を生成する、請求項１〜１３のいずれか１項に記載のデータ処理装置。
【請求項１５】
前記複数の特権レベルのうちの第１は、アプリケーション層に対応し、前記複数の特権レベルのうちの第２は、オペレーティングシステム層に対応する、請求項１〜１４のいずれか１項に記載のデータ処理装置。
【請求項１６】
前記複数の特権レベルのうちの１つは、ハイパーバイザ層に対応する、請求項１〜１５のいずれか１項に記載のデータ処理装置。
【請求項１７】
前記複数の特権レベルのうちの１つは、セキュリティ監視層に対応する、請求項１〜１６のいずれか１項に記載のデータ処理装置。
【請求項１８】
前記複数の特権レベルのうちの第３のレベルは、セキュリティ監視層に対応し、ハイパーバイザ層は存在しない、請求項１５に記載のデータ処理装置。
【請求項１９】
前記デバッグ特権レベルスイッチ命令は、前記スイッチを実装する前に、前記現在の特権レベルから前記ターゲット特権レベルへの前記スイッチが許可されるべきかどうかを判定するようにチェックをトリガし、前記チェックが失敗した場合に前記現在の特権レベルから前記ターゲット特権レベルへの前記スイッチを防止するように構成される、請求項１〜１８のいずれか１項に記載のデータ処理装置。
【請求項２０】
前記ターゲット特権レベルがセキュリティ監視層に対応し、前記チェックがセキュリティチェックである、請求項１９に記載のデータ処理装置。
【請求項２１】
前記処理回路は、前記複数の特権レベルのうちのより高いレベルにおいて、前記処理回路が、前記複数の特権レベルのうちの少なくとも１つのより低いレベルをアクセス不可能であると定義することができるように構成可能であり、前記チェックは、前記ターゲット特権レベルへの許可されたアクセス可能性に対するアクセス可能性チェックである、請求項１９に記載のデータ処理装置。
【請求項２２】
データ処理装置上で実行するコンピュータプログラムによって提供される仮想マシンであって、請求項１〜１７のいずれか１項に記載のデータ処理装置に従う命令実行環境を提供する、仮想マシン。
【請求項２３】
データを処理するための手段であって、複数の特権レベルで動作するように構成可能であり、かつ異なる特権レベルで、メモリおよびレジスタセットのうちの少なくとも１つに対して異なるアクセス許可を有する、データを処理するための手段と、
プログラム命令に応答して、前記処理するための手段が前記データ処理を実施するのを制御するための制御信号を生成する、プログラム命令をデコードするための手段と、を備え、
前記プログラム命令は、デバッグ特権レベルスイッチ命令を含み、前記プログラム命令をデコードするための手段は、前記デバッグ特権レベルスイッチ命令に応答して、
（ｉ）前記データを処理するための手段がデバッグモードにある場合、現在の特権レベルからターゲット特権レベルへ前記データを処理するための手段をスイッチすることと、
（ｉｉ）前記データを処理するための手段が非デバッグモードにある場合、前記現在の特権レベルに関わらず、前記デバッグ特権レベルスイッチ命令の実行を防止することと、を実施する、データ処理装置。
【請求項２４】
複数の特権レベルで動作するように構成可能である処理回路を有するデータ処理装置上で実施するためのデータ処理方法であって、異なる特権レベルで、前記処理回路は、メモリおよびレジスタセットのうちの少なくとも１つに対する異なるアクセス許可を有し、
デバッグ特権レベルスイッチ命令を含むプログラム命令に応答して、データを処理するように処理回路を制御するための制御信号を生成するステップと、
前記デバッグ特権レベルスイッチ命令に応答して、
（ｉ）前記処理回路がデバッグモードにある場合、現在の特権レベルからターゲット特権レベルへ前記処理回路をスイッチすることと、
（ｉｉ）前記処理回路が非デバッグモードにある場合、前記現在の特権レベルに関わらず、前記デバッグ特権レベルスイッチ命令の実行を防止することと、を含む特権レベルスイッチ動作を実施するように、前記処理回路を制御するための制御信号を生成するステップと、を含む、
データ処理方法。
【請求項２５】
請求項２４に記載の方法を実装するためのプログラム命令を記憶する、コンピュータプログラム製品。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ処理に関する。より具体的には、本発明は、データ処理のデバッグに関する。
【背景技術】
【０００２】
データ処理ハードウェアおよび／またはソフトウェアの動作における不具合を判定するために、データ処理装置のデバッグを実施することが知られている。プロセッサが単一のデータ処理集積回路上により多くのデータ処理素子を備えてより複雑になり、複数のプロセッサが複数のオペレーティングシステムを実行するように構成可能である等、デバッグの工程は、より複雑かつ困難になっている。しかしながら、デバッグは、不具合を特定し、排除するために、ソフトウェアおよびシステム設計において重要な段階である。
【０００３】
また、処理回路が、異なる特権レベルで、メモリおよびレジスタセットのうちの少なくとも１つに対して異なるアクセス許可をプログラム命令に課すという、複数のプロセッサ動作状態で動作することが可能なデータ処理装置を提供することも知られている。例えば、プログラム命令が制御レジスタのある部分に対するアクセス許可を有する、ユーザモードを提供することができ、プログラム命令が制御レジスタのそれより大きい部分に対するアクセス許可を有する、システムモードを提供することができる。可能なモードの全てにおいてデータ処理装置の動作が完全にデバッグされなければならないということが重要である。
【０００４】
ＡＲＭｖ７プロセッサアーキテクチャでは、プロセッサが、ブレークポイントまたはウオッチポイントの一致等、デバッグイベントを処理するために入る、特殊なデバッグモードを提供することが知られている。このデバッグモードにあるとき、プロセッサは、デバッグポートを介してデータ処理装置に接続されたデバッガによって制御される、命令転送レジスタから命令を読み出す。命令の選択に依存して、デバッガは、プロセッサレジスタの内容を見て、修正し、プロセッサに接続されたメモリの内容を見て、修正することが可能である。このように、デバッガは、ソフトウェアプログラムを効果的にデバッグし、データ処理装置自体の設計における不具合等、他の不具合を診断することが可能である。
【０００５】
したがって、データ処理装置を異なる動作状態の間で推移させるより効率的な方式を提供するという要件が存在する。
【発明の概要】
【０００６】
第１の態様に従い、本発明は、
データを処理するための処理回路であって、複数の特権レベルで動作するように構成可能であり、かつ異なる特権レベルで、メモリおよびレジスタセットのうちの少なくとも１つに対する異なるアクセス許可をプログラム命令に課す、処理回路と、
プログラム命令に応答し、該処理回路が該データ処理を実施するのを制御するための制御信号を生成する、命令デコード回路と、を備えるデータ処理装置を提供し、
該プログラム命令は、デバッグ特権レベルスイッチ命令を含み、該命令デコード回路は、該デバッグ特権レベルスイッチ命令に応答して、
（ｉ）該処理回路がデバッグモードにある場合、現在の特権レベルからターゲット特権レベルへ該処理回路をスイッチすることと、
（ｉｉ）該処理回路が非デバッグモードにある場合、該現在の特権レベルに関わらず、該デバッグ特権レベルスイッチ命令の実行を防止することと、を実施する。
【０００７】
本発明は、デバッグモードにおいて実行時に、現在の特権レベルからターゲット特権レベルへ処理回路をスイッチするが、処理回路が非デバッグモードにあるとき、現在の特権レベルに関わらず、特権レベルスイッチ命令の実行を防止する、専用の特権レベルスイッチ命令を提供することを認識する。これによって、デバッグモードにあるとき、非デバッグモード命令の複雑なオーバーロードを用いることなく、プロセッサを異なる動作状態に入れることを可能にする有用な方式を提供する。デバッグモードにあるときに異なる特権レベルで動作するようにプロセッサを変更する能力が有用であるのは、プロセッサが異なる特権レベルで動作中であるとき、プロセッサは、例えば、システムレジスタおよびメモリの異なる見解を有し、したがって、異なる特権レベルは、デバッグモードにおいてアクセス可能であることが望ましい、異なるプロセッサ動作状態に対応するためである。
【０００８】
例えば、仮想化を実装し、したがってハイパーバイザモードを有するデータ処理装置において、ハイパーバイザは、データ処理装置上で稼動しているゲストオペレーティングシステムとは異なる特権レベルで動作する。さらに、デバッグモードのみで定義される専用デバッグ特権レベルスイッチ命令のプロビジョンによって、命令は、デバッグモードの特異性に理想的に適する様式で、異なる特権レベル間のスイッチを実施することが可能になる。例えば、分岐は、非デバッグモードでは特権レベル間の正しい分離を維持するために、特権レベルスイッチ命令の一部として典型的に実装される一方、デバッグモードでは望ましくないため、専用のデバッグ特権レベルスイッチ命令は、異なる特権レベル間をスイッチするために、分岐を全く実施しないように実装することができる。これは、非デバッグモードでは、プログラム命令がシステムメモリからフェッチされるが、デバッグモードでは典型的に、デバッグ命令はデバッグ回路によって制御される専用命令転送レジスタからフェッチされるためである。分岐、特に特権レベルの変更に関連する分岐は典型的に、（ａ）分岐ターゲットアドレスを生成すること、（ｂ）このアドレスをプログラムカウンタレジスタに書き込むこと、（ｃ）命令パイプラインをフラッシュすること、および（ｄ）プログラムカウンタレジスタに書き込まれたメモリアドレスから命令をフェッチすることによって動作する。例えば、非デバッグモードにおける特権レベルインクリメント命令の場合、分岐ターゲットアドレスは固定され、非デバッグモードにおける特権レベルデクリメント命令の場合、分岐ターゲットアドレスは、アドレスリンクレジスタから読み出される。
【０００９】
命令パイプラインをフラッシュし、メモリからの命令フェッチを再開することは、命令全てが命令転送レジスタからフェッチされるので、デバッグモードでは不適切である。デバッグモードにおける分岐の動作を修正することによってプロセッサ設計を複雑化させることを避けるため、分岐を完全に避けることが好ましい。したがって、通常モードにおいて１つの関数、デバッグモードにおいて異なる関数を有するというオーバーロードされた命令を使用するのではなく、デバッグモードにおける実行に合わせた特権レベルスイッチ命令を提供する能力は、プロセッサ設計を簡素化する。
【００１０】
デバッグ特権レベルスイッチ命令は、ターゲットの特権レベルが現在の特権レベルと同じである等、同じ特権レベルで異なるプロセッサ動作状態間をスイッチするために実装できることが理解されるであろう。例えば、スイッチは、同じ特権レベルで、ＩＲＱモードとＦＩＱモードのような２つの異なる中断モード間で実施することができる。しかしながら、いくつかの実施形態によると、ターゲット特権レベルは現在の特権レベルとは異なる。これによって、デバッグモードにおいて、例えば、プロセッサがオペレーティングシステムの命令を実行しているモードと、プロセッサがプログラムアプリケーションの命令を実行しているモードとの間をスイッチすることを可能にする。これは、最新のプロセッサが、異なる区分のプログラム命令を実行している異なる動作状態間を頻繁にスイッチするように構成されているため、有用である。
【００１１】
ターゲット特権レベルは、例えば、ターゲット特権レベルを読み出すことができるメモリ場所を指定する特権レベルスイッチ命令のフィールドによる等、いくつかの異なる方式で、デバッグ特権レベルスイッチ命令にエンコードできることが理解されるであろう。しかしながら、一実施形態において、ターゲット特権レベルは、デバッグ特権レベルスイッチ命令自体のフィールド内部に直接エンコードされる。これによって、ターゲットの特権レベルは、命令が効率的に実行できるように、単純な様式で得られることが可能になる。
【００１２】
代替の実施形態において、データ処理装置は、ターゲット特権レベルの指示を提供する少なくとも１つの専用ターゲットレジスタを備える。デバッグ特権レベルスイッチ命令は、専用ターゲットレジスタからターゲット特権レベルを読み出す。これは、ターゲット特権レベルへスイッチすることを実装する便利な方式である。いくつかのそのような実施形態において、データ処理装置は、複数の専用ターゲットレジスタを備え、専用ターゲットレジスタの各々が、対応するターゲット特権レベルを記憶し、処理回路が、現在の特権レベルに依存して、ターゲット特権レベルを読み出す複数の専用ターゲットレジスタのうちの１つを選択するように構成される。これは、いくつかのスイッチオプションを前もって定義し、現在のデバッグモード特権レベルに依存して必要に応じて、それらのオプションのうちの適当な１つを選択することを可能にするため、複数の異なる特権レベルのうちの異なるレベルの間のスイッチを設定する便利かつ効率的な方式である。
【００１３】
特権レベルスイッチ命令は、より低い特権レベルからより高い特権レベルへのスイッチアップ、またはより高い特権レベルからより低い特権レベルへのスイッチダウンのうちの１つまたは両方を実施するように構成できることが理解されるであろう。一実施形態において、デバッグ特権レベルスイッチ命令は、ターゲット特権レベルが現在の特権レベルよりも高い特権レベルに対応することが要求される専用の特権レベルインクリメント命令を含む。特権レベルをインクリメントする専用命令を提供することは、特権レベル間のスイッチアップを特権レベル間のスイッチダウンから分離する便利な方式である。他の実施形態において、デバッグ特権レベルスイッチ命令は、ターゲット特権レベルが現在の特権レベルよりも低い特権レベルに対応することが要求される特権レベルデクリメント命令を含む。特権レベルインクリメント命令および特権レベルデクリメント命令は、デバッグモードにある時に任意の所望の特権レベルスイッチを実施するために、補完様式で便利に使用することができる。代替として、これらの２つの異なる命令は、特権レベルインクリメント命令または特権レベルデクリメント命令のうちの１つだけが所与のデータ処理装置に提供できるように、分離することができる。
【００１４】
一実施形態において、プログラム命令は、ターゲット特権レベルが現在の特権レベルよりも高い特権レベルに対応することが要求される、特権レベルインクリメント命令に対応する第１の種類のデバッグ特権レベルスイッチ命令と、ターゲット特権レベルが現在の特権レベルよりも低い特権レベルに対応することが要求される、特権レベルデクリメント命令に対応する第２の種類のデバッグ特権レベルスイッチ命令とを含む。
【００１５】
いくつかの実施形態において、プログラム命令は、標準特権レベルスイッチ命令を含み、命令デコード回路は、標準特権レベルスイッチ命令に応答して、処理回路が非デバッグモードにある場合、現在の特権レベルからターゲット特権レベルへの処理回路のスイッチを実施する。これによって、データ処理装置が非デバッグモードにある際の特権レベルスイッチのタスクを、データ処理装置がデバッグモードにある際の特権レベルスイッチのタスクから便利に分離する。いくつかのそのような実施形態において、デバッグ特権レベルスイッチ命令および標準特権レベルスイッチ命令は、同一の命令ビット幅および同一構造のエンコードを有する。
【００１６】
同一構造のエンコードは、デバッグ特権レベルスイッチ命令および標準特権レベルスイッチ命令の第１のビットセットが、実質的に同一のビットパターンを有し、一方、デバッグ特権レベルスイッチ命令および標準特権レベルスイッチ命令の第２のビットが実質的に非同一のビットパターンを有し、第２のビットセットは、第１のビットセットより小さいように実装される。標準モードの特権レベルスイッチ命令およびデバッグモードの特権レベルスイッチ命令をそれぞれの命令エンコードの大半が同一であるように構成することによって、２つの命令を実装する便利な方式が提供され、同一構造のエンコードによって、これらの命令のデコードを簡素化し、したがって、データ処理回路を簡素化する。同一構造のエンコードを有するいくつかのこのような実施形態では、第２のビットセットは、シングルビットを含む。命令エンコード全体でシングルビットだけが、デバッグモードおよび非デバッグモードにおいて対応する関数を有する命令の間で異なるという構成は、デコード回路が、異なる命令の間の関係を容易に特定することを可能にするように、２つの異なるモードにおける命令の間に十分に密接な関係を提供する。
【００１７】
デバッグ特権レベルスイッチ命令は、仮想メモリを利用しないデータ処理装置を含む、デバッグを実施することが望まれる任意の種類のデータ処理装置で使用できることが理解されるであろう。しかしながら、いくつかの実施形態において、現在の特権レベルは、第１の仮想メモリアドレスから物理メモリアドレスへの変換スキームを実装する処理回路の動作状態に対応し、ターゲット特権レベルは、第２の仮想メモリアドレスから物理メモリアドレスへの変換スキームを実装する処理回路の動作状態に対応する。第１の仮想メモリアドレスから物理メモリアドレスへの変換スキームは、第２の仮想メモリアドレスから物理メモリアドレスへの変換スキームとは異なる。異なる仮想から物理メモリアドレスへの変換スキームを実装する異なる特権レベルを有することは、データ処理装置がデバッグモードにあるとき、異なるアドレス変換スキームを有する異なる特権レベルの間をスイッチする能力を提供することの明確な要件が存在することを意味するので、異なる特権レベルの各々でのデータ処理装置の動作を効率的にデバッグすることができる。
【００１８】
異なる特権レベル間の差は、メモリへの異なるアクセス許可だけになり得るのであって、プロセッサレジスタのいずれかへの異なるアクセス許可にはなり得ないことが理解されるであろう。しかしながら、いくつかの実施形態において、データ処理回路は、複数のシステムレジスタを備え、現在の特権レベルは、複数のシステムレジスタに関連する第１の組のアクセス可能性条件を有し、一方、ターゲット特権レベルは、複数のシステムレジスタに関連する第２の異なる組のアクセス可能性条件を有する。異なる特権レベルで異なる仮想から物理アドレスへの変換スキームを実装することに類似して、異なる特権レベルで動作しているときにデータ処理装置が有するシステムレジスタの異なる見解は、デバッグモードにあるときに異なる特権レベル間を便利かつ効率的にスイッチする能力の重要性を明確にする。
【００１９】
デバッグ特権レベルスイッチ命令は、デバッグ特権レベルスイッチ命令が適切に定義され、非デバッグモードにおける特権レベルのスイッチをデバッグモードの特権レベルのスイッチから便利に分離している場合、いくつかの異なる方式のうちのいずれか１つで、現在の特権レベルに関係なく、データ処理装置が非デバッグモードにあるとき、処理回路によって実行されることを防止することができることが理解されるであろう。しかしながら、いくつかの実施形態において、データ処理装置が非デバッグモードにある場合、デバッグ特権レベルスイッチ命令は未定義であり、ソフトウェア例外を生成する。これは、デバッグ特権レベルスイッチ命令がデバッグモードのみで実行されることを保証する便利な方式である。
【００２０】
複数の特権レベルは、データ処理装置のいくつかの異なる種類の動作状態のうちのいずれか１つに対応できることが理解されるであろう。しかしながら、いくつかの実施形態において、複数の特権レベルのうちの第１はアプリケーション層に対応し、複数の特権レベルのうちの第２はオペレーティングシステム層に対応する。いくつかの実施形態において、複数の特権レベルのうちの１つは、ハイパーバイザ層に対応する。さらに、いくつかの実施形態において、複数の特権レベルのうちの１つは、セキュリティ監視層に対応する。これによって、セキュアな動作モードを実装することが可能であるデータ処理装置において有用である、セキュリティ監視層の内外にスイッチすることを便利に可能にする。
【００２１】
複数の特権レベルのいくつかの異なる組み合わせのうちのいずれか１つをデータ処理装置に提供できることが理解されるであろう。しかしながら、複数の特権レベルのうちの第１がアプリケーション層に対応し、複数の特権レベルのうちの第２がオペレーティングシステム層に対応するいくつかの実施形態において、複数の特権レベルのうちの第３は、セキュリティ監視層に対応するが、ハイパーバイザ層は存在しない。これによって、ハイパーバイザ層が存在するかもしれないというセキュリティに対する潜在的な脆弱性を持たずに、セキュアなモードを実装することを便利に可能にする。
【００２２】
デバッグ特権レベルスイッチ命令は、要求されるスイッチが一切防止されることなく、複数の特権レベルのうちの任意の２つの間でスイッチアップ、または複数の特権レベルのうちの任意の２つの間でスイッチダウンするために、無差別に使用できることが理解されるであろう。しかしながら、いくつかの実施形態において、デバッグ特権レベルスイッチ命令は、特権レベル間のスイッチを実装する前に、現在の特権レベルからターゲット特権レベルへのスイッチが許可されるべきかどうかを判定するようにチェックをトリガし、チェックが失敗した場合に、現在の特権レベルからターゲット特権レベルへのスイッチを防止するように構成される。これによって、データ処理回路は、専用特権レベルインクリメント命令の場合、より高い特権レベルへ上昇することが可能であり、命令が特権レベル間を下降するために使用されていないこと、特権レベルデクリメント命令の場合、現在の特権レベルからより低い特権レベルに下降することが可能であり、命令を使用して特権レベルを増加しようとさせていないことを便利にチェックすることも可能になる。
【００２３】
現在の特権レベルからターゲット特権レベルへのスイッチが許可されるべきであるかのチェックがあるいくつかのこのような実施形態において、ターゲット特権レベルは、セキュリティ監視層に対応し、チェックは、セキュリティチェックである。これによって、セキュリティチェックを実装する効率的なメカニズムが提供される。異なる特権レベル間のスイッチを実装する前にチェックを実装する他の実施形態において、処理回路は、複数のレベルのうちのより高いレベルで、処理回路が、複数の特権レベルのうちの少なくとも１つのより低いレベルをアクセス不可能であると定義することができるように構成可能であり、チェックは、ターゲット特権レベルにアクセスする許可に対するアクセス可能性チェックである。これによって、データ処理装置がセキュアな動作状態等、所定の動作状態にある場合に、特権レベルのサブセットだけが、データ処理回路にアクセス可能であることを可能にする柔軟性が提供される。
【００２４】
第２の態様に従い、本発明は、複数の特権レベルで動作するように構成可能である処理回路を有するデータ処理装置上で実施するためのデータ処理方法を提供し、異なる特権レベルで、該処理回路は、メモリおよびレジスタセットのうちの少なくとも１つに対する異なるアクセス許可を有し、該データ処理方法は、
デバッグ特権レベルスイッチ命令を含むプログラム命令に応答して、データを処理するように処理回路を制御するための制御信号を生成するステップと、
該デバッグ特権レベルスイッチ命令に応答して、
（ｉ）該処理回路がデバッグモードにある場合、現在の特権レベルからターゲット特権レベルへ該処理回路をスイッチすることと、
（ｉｉ）該処理回路が非デバッグモードにある場合、該現在の特権レベルに関わらず、該デバッグ特権レベルスイッチ命令の実行を防止することと、を含む特権レベルスイッチ動作を実施するように、該処理回路を制御するための制御信号を生成するステップとを含む。
【００２５】
第３の態様に従い、本発明は、
データを処理するための手段であって、複数の特権レベルで動作するように構成可能であり、かつ異なる特権レベルで、メモリおよびレジスタセットのうちの少なくとも１つに対する異なるアクセス許可を処理回路が有する、データを処理するための手段と、
プログラム命令に応答して、該処理するための手段が該データ処理を実施するのを制御するための制御信号を生成する、プログラム命令をデコードするための手段と、を備えるデータ処理装置を提供し、
該プログラム命令は、デバッグ特権レベルスイッチ命令を含み、該プログラム命令をデコードするための手段は、該デバッグ特権レベルスイッチ命令に応答して、
（ｉ）該処理回路がデバッグモードにある場合、現在の特権レベルからターゲット特権レベルへ該処理回路をスイッチすることと、
（ｉｉ）該処理回路が非デバッグモードにある場合、該現在の特権レベルに関わらず、該デバッグ特権レベルスイッチ命令の実行を防止することと、を実施する。
【００２６】
本発明の好ましい実施形態は、添付の図面を参照しながら、例の目的のみで、ここに記載する。
【図面の簡単な説明】
【００２７】
【図１】本発明の実施形態に従うデータ処理装置を模式的に例示する。
【図２】複数の異なる特権レベルに対応する、図１のデータ処理装置の複数の異なる動作状態を模式的に例示する。
【図３】図２の特権レベルＰＬ１、ＰＬ２およびＰＬ３の異なるレベルで、データ処理装置がどのように、システムレジスタセットに対する異なるアクセス許可を有するかを模式的に例示する。
【図４】４つの異なる特権レベルのうちの異なるレベル間でデータ処理装置をスイッチするために、本技法による２つの異なるデバッグ特権レベルスイッチ命令がどのように使用されるかを模式的に例示する。
【図５】図４に例示されるデバッグモード特権レベルスイッチ命令、ＤＣＰＳおよびＤＲＥＴを補完するために図１のデータ処理装置に使用される、複数の非デバッグモード特権レベルシフト命令を模式的に例示する。
【図６】デバッグモードで特権レベルを増加するために使用されるＤＣＰＳ命令の命令エンコードを模式的に例示する。
【図７Ａ】デバッグモードの特権レベルデクリメント命令、ＤＲＥＴのエンコードを模式的に例示する。
【図７Ｂ】非デバッグモード特権レベルデクリメント命令である、ＥＲＥＴ命令の命令エンコードを模式的に例示する。
【図７Ｃ】非デバッグモード特権レベルインクリメント命令である、ＳＶＣ、ＨＶＣ、およびＳＭＣ命令の命令エンコードを模式的に例示する。
【図８】ＤＣＰＳ、デバッグモード特権レベルインクリメント命令の実行時に、図１のデータ処理装置によって行われる処理動作を模式的に例示する流れ図である。
【図９】デバッグモード特権レベルデクリメント命令、ＤＲＥＴの実行に応答して実施されるデータ処理動作を模式的に例示する流れ図である。
【図１０】仮想マシン上に実装される実施形態を模式的に例示する。
【発明を実施するための形態】
【００２８】
図１は、本発明の実施形態に従うデータ処理装置を模式的に例示する。データ処理装置は、「システムオンチップ」を形成する処理構成要素をいくつか備える集積回路１００を備える。具体的には、集積回路１００は、実行パイプライン１１０と、汎用レジスタセット１２０と、デバッグモジュール１３０と、デバッグポート１３２と、メモリ管理ユニット１４０と、オンチップメモリ１４２とを備える。データ処理装置１００はまた、オフチップメモリ１４４へのアクセスも有する。
【００２９】
データ処理装置１００のデバッグポート１３２は、データ処理回路１００のデバッグを支援するためにデバッガソフトウェア１５２を実行するように構成されるホストパーソナルコンピュータ１５０に接続される。データ処理回路１００は、データ処理装置が現在の特権レベルからスイッチしなければならないターゲット特権レベルを記憶するために、本技法に従い、デバッグ特権レベルスイッチ命令のサブセットによって使用される保存プログラムステータスレジスタ（ＳＰＳＲ）１４３をさらに備える。保存プログラムステータスレジスタ１４３は、データ処理回路１００が動作することが可能である複数の異なる特権レベルの各々に対して読み出される特定のレジスタが存在するように、特権レベルに応じてバンクされる。ターゲット特権レベルは、デバッグ特権レベルスイッチ命令が実際に実行される時点での現在の特権レベルに応じて、複数の保存プログラムステータスレジスタ１４３のうちの１つから読み出される。保存プログラムステータスレジスタ１４３は、ターゲット特権レベルの指示を提供する。この実施形態において、ターゲット特権レベルは、モード番号として、保存プログラムステータスレジスタ１４３のうちの関連するレジスタ内にエンコードされる。しかしながら、代替の実施形態では、ターゲット特権レベルは、保存プログラムステータスレジスタ１４３の中に直接表現される。この特定の実施形態では、４つの異なる特権レベルが存在するが、これは、図２を参照して詳細に説明する。
【００３０】
デバッグモジュール１３０は、命令転送レジスタ１３４を備える。データ処理回路１００が非デバッグモードにある場合、命令は、オンチップメモリ１４２またはオフチップメモリ１４４のいずれかから読み出され、実行パイプライン１１０に提供される。しかしながら、データ処理装置がデバッグモードにある場合、命令は、メモリ１４２、１４４のいずれからも読み出されず、代わりに、命令は命令転送レジスタ１３４の中に記憶され、そこから命令パイプライン１１０へ提供される。ホストＰＣ１５０上のデバッガソフトウェア１５２は、適切なデバッグ命令を命令転送レジスタ１３４内へロードするように、デバッグポート１３２を介して、命令転送レジスタ１３４を制御する。
【００３１】
この実施形態のデータ処理装置１００は、ＲＩＳＣ（縮小命令セットコンピューティング）アーキテクチャを有し、データを処理する命令がレジスタ上のみで動作し、メモリにアクセスする命令からは分離されている、ロード・ストアアーキテクチャである。データ処理装置１００は、パイプライン型データ処理装置であり、実行パイプライン１１０は、フェッチ段階と、デコード段階と、実行段階（図示せず）とを含む。汎用レジスタセット１２０は、実行パイプライン１１０によって実行される命令のオペランドおよび結果を格納するために使用される。データ処理装置１００は、複数の異なる命令種類を実行するように構成される。具体的には、データ処理回路１００は、３２ビットプログラム命令と言われる、３２ビットワイドデータ上で演算する命令、および６４ビットプログラム命令と言われる、６４ビットワイドデータ上で演算する命令の両方を実行することができる。さらに、異なる種類の３２ビットプログラム命令を実行することができる。第１の種類の３２ビットプログラム命令は、「Ａ３２」命令セットであり、一方、第２の種類の３２ビットプログラム命令は、Ａ３２命令セットのより縮小バージョンを含む「Ｔ３２」命令セットである。Ｔ３２命令の多くが１６ビットワイド命令であるという事実に関わらず、これらは３２ビットデータ上で演算し、３２ビットプログラム命令も同様である。第３の種類の３２ビット命令は、「Ｔ３２ＥＥ」命令セットであり、Ｔ３２命令セットに類似して、縮小命令セットであるが、この命令セットは、Ｊａｖａ（登録商標）バイトコードとＴ３２命令との間の変換を可能にする拡張を有し、このため、データ処理回路１００による仮想マシンの実行をサポートする。この実施形態では、単一の６４ビット命令セットだけを実行することができるが、代替の実施形態においては、複数の６４ビット命令セットを提供できることが理解されるであろう。
【００３２】
３２ビットおよび６４ビットプログラム命令の両方の実行をサポートするために、汎用レジスタ１２０は、データ処理回路１００が３２ビットモードで動作中、すなわち、３２ビットプログラム命令を実行している場合、レジスタ１２０は、データ処理装置によって３２ビットレジスタセットとして見なされるように構成される可変幅レジスタである。一方、データ処理装置１００が６４ビットモードで実行中であり、６４ビットプログラム命令を実行している場合、データ処理装置１００は、レジスタ１２０が６４ビットレジスタとして見なされ、６４ビット幅を完全に使用するように構成される。メモリ管理ユニット１４０は、データ処理装置１００の現在の動作状態に応じて、オンチップメモリ１４０およびオフチップメモリ１４２へのアクセスを制御し、ユーザモードでは、システムモードでアクセス可能であるよりも小さいサブセットのメモリ場所がデータ処理回路１００にアクセス可能である。データ処理装置のセキュアモードでは、ユーザモードおよびシステムモードで利用可能であるメモリ場所の全てが利用可能であり、加えて、特殊なセットのセキュアメモリ場所がデータ処理回路１００にアクセス可能である。メモリ管理ユニット１４０は、実行パイプライン１００によるメモリへのアクセス要求全てを取り扱うことに責任を持ち、その機能として、仮想メモリアドレスから物理メモリアドレスへの変換、メモリ保護、キャッシュ制御、およびバス調停が挙げられる。
【００３３】
図１の実施形態において、デバッガユニットとして動作するホストパーソナルコンピュータ１５０は、データ処理回路１００に対してオフチップに位置付けられる。しかしながら、代替の実施形態においては、デバッグソフトウェア１５２を稼動するホストパーソナルコンピュータ１５０の機能性は、図１のデータ処理回路１００と同じシステムオンチップ上に位置するデバッグ処理回路の中に提供され、データ処理回路１００は、システムオンチップ全体を形成しない。
【００３４】
図２は、複数の異なる特権レベルに対応する、図１のデータ処理装置１００の複数の異なる動作状態を模式的に例示する。それぞれの特権レベルは、データ処理装置１００上で稼動するソフトウェアのそれぞれ異なる階層に対応する。
【００３５】
図２の構成では４つの個別の特権レベル、すなわち、ＰＬ０、ＰＬ１、ＰＬ２、およびＰＬ３が存在し、ＰＬ０は最低の特権レベルであり、ＰＬ３は最高の特権レベルである。特権レベルＰＬ０は、ソフトウェア階層のアプリケーション層に対応し、６つの異なるプログラムアプリケーションがＰＬ０に対応して例示され、その各々はデータ処理装置１００上で実行することができる。次に高い特権レベルＰＬ１は、オペレーティングシステムソフトウェア階層に対応し、この場合、３２ビットのオペレーティングシステムである第１のゲストオペレーティングシステム２２２、６４ビットのオペレーティングシステムである第２のゲストオペレーティングシステム２２４、および特殊なセキュリティ特徴を有する第３のセキュアオペレーティングシステム２２６という３つの異なるオペレーティングシステムが例示される。次の特権レベルＰＬ２は、ハイパーバイザソフトウェア層に対応する。提供されるハイパーバイザソフトウェアアプリケーション２３０は、この場合使用される６４ビットのプログラムで、第１のゲストオペレーティングシステム２２２および第２のゲストオペレーティングシステム２２４の両方が、非セキュアなデータ処理リソースへのアクセスを有することを可能にする。
【００３６】
ハイパーバイザ２３０は、仮想化システムの一部で、第１のゲストオペレーティングシステム２２２および第２のゲストオペレーティングシステム２２４が同じデータ処理装置上で同時に稼動することを可能にし、各オペレーティングシステムは、他のオペレーティングシステムがそこで同時に稼動しているという認識を全く有さない。ハイパーバイザ２３０は、最低の特権レベルＰＬ０に対応するアプリケーションシステム層および次に高い特権レベルＰＬ１に対応するオペレーティングシステム層の両方において、仮想アドレスから物理アドレスへの変換がどのように実施されるかを制御する仮想変換テーブルベースレジスタ（ＶＴＴＢＲ）の実装を制御する。データ処理装置の動作におけるバグは潜在的に、ソフトウェア階層のいずれの層にも存在する可能性があるため、データ処理がデバッグモードにあるときに４つの異なる特権レベルの間をスイッチする能力は、データ処理回路を適切にデバッグするために重要である。
【００３７】
最高の特権レベルＰＬ３は、６４ビットプログラムコードを含むセキュアモニタ２４０に対応する。データ処理装置１００がセキュアモードで動作中である場合、ハイパーバイザ２３０のセキュア相当物が存在しないことに注意されたい。このため、セキュアモードでは、ＰＬ０、ＰＬ１、およびＰＬ３の３つの特権レベルだけが効果的に存在する。ハイパーバイザ２３０は、セキュアモードで動作している場合には要求されず、セキュアモードでは、セキュアオペレーティングシステム２２６だけを実行することができる。最低の特権レベルＰＬ０では、第１の３２ビットプログラムアプリケーション２０２および第２の３２ビットプログラムアプリケーション２０４の両方が、３２ビットの第１のゲストオペレーティングシステム２２２の上に稼動する。６４ビットアプリケーションである第３のプログラムアプリケーション２０６、および３２ビットプログラムアプリケーションである第４のプログラムアプリケーション２０８はどちらも、６４ビットの第２のゲストオペレーティングシステム２２４上で稼動する。
【００３８】
図３は、図２の特権レベルＰＬ１、ＰＬ２およびＰＬ３の異なるレベルで、データ処理装置１００が、システムレジスタセットに対する異なるアクセス許可をどのように有するかを模式的に例示する。異なる特権レベルで、処理回路はフルセットのオンチップおよびオフチップメモリの場所１４２、１４４に対して異なるアクセス許可を有する可能性もあるが、これは図３には図示されていないことに注意されたい。
【００３９】
図３を参照すると、フルセットのシステムレジスタは、セキュアモニタに対応する最高の特権レベルＰＬ３では、データ処理装置に公開される。第１のサブセットのシステムレジスタは、ハイパーバイザ層に対応する特権レベルＰＬ２でデータ処理装置に公開される一方、第２のサブセット３３０のシステムレジスタは、それ自体、ＰＬ２に公開されるシステムレジスタのサブセットを形成し、データ処理装置１００に公開される。第３の、さらにより小さいサブセット３３０のシステムレジスタは、オペレーティングシステムソフトウェア階層に対応する特権レベルＰＬ１で、データ処理装置に公開される。したがって、異なる特権レベルは、システムレジスタに対する異なるレベルのアクセス可能性に対応すると考えることができる。最後に、第４の、最も小さいサブセット３４０のシステムレジスタは、アプリケーションソフトウェア階層に対応する特権レベルＰＬ０で、データ処理装置に公開される。いくつかの実装においては、これは空のセットであってもよいことが理解されるであろう。
【００４０】
図４は、４つの異なる特権レベルのうちの異なるレベル間でデータ処理装置をスイッチするために、本技法による２つの異なるデバッグ特権レベルスイッチ命令がどのように使用されるかを模式的に例示する。図４は、最低の特権レベルＰＬ０に対応するアプリケーション層４１０と、次の特権レベルＰＬ１に対応するゲストオペレーティングシステム層４２０と、ＰＬ２に対応するハイパーバイザ層４３０と、最高の特権レベルＰＬ３に対応するセキュアモニタ層４４０とを含む。図４に示されるように、特権レベルＰＬ０、ＰＬ１、ＰＬ２、およびＰＬ３の各々は、異なる、仮想から物理へのアドレス変換スキームを実装する。具体的には、特権レベルＰＬ０およびＰＬ１では、仮想から物理へのアドレス変換は、（ｉ）１対のバンクされた変換テーブルベースレジスタ（ＴＴＢＲ０＿ＰＬ１およびＴＴＢＲ１＿ＰＬ１、ＴＴＢＲ０＿ＰＬ１は、低仮想アドレスを変換するために使用されるページテーブルの階層へのポインタであり、ＴＴＢＲ１＿ＰＬ１は、高仮想アドレスを変換するために使用されるページテーブルの階層へのポインタである）への参照が関与する、２段階の変換である。図４において、ＰＬ０およびＰＬ１は、非セキュアモードであり、したがって、この変換は、入力仮想アドレス（ＶＡ）から中間物理アドレス（ＩＰＡ）を生成し、（ｉｉ）仮想変換テーブルベースレジスタ（ＶＴＴＢＲ＿ＰＬ２）を参照して、中間物理アドレスを最終の物理アドレス（ＰＡ）に変換する。仮想変換テーブルベースレジスタは、ハイパーバイザ４３０によって提供され、ハイパーバイザが、各ゲストオペレーティングシステムを他のゲストオペレーティングシステムから隠すことを可能にする。
【００４１】
ハイパーバイザ４３０は、特権レベルＰＬ２で、仮想変換テーブルベースレジスタを制御するので、データ処理装置がハイパーバイザ特権レベルＰＬ２に対応するプログラム命令を実行しているとき、仮想から物理へのアドレス変換には、中間物理アドレスを生成することのない仮想アドレスから物理アドレスへの直接変換が関与する。このため、ハイパーバイザ特権レベルＰＬ２での仮想から物理へのアドレス変換には、仮想変換テーブルベースレジスタではなく、別のバンクされた変換テーブルベースレジスタ、ＴＴＢＲ＿ＰＬ２が関与する。これによって、ハイパーバイザは、全てのゲストオペレーティングシステムからそれ自体を隠すことが可能になる。
【００４２】
セキュアモニタ４４０は、特権レベルＰＬ３で、非セキュアモードで動作している場合、ＰＬ２、またはＰＬ１およびＰＬ０にアクセス可能ではない特殊なセキュア物理アドレスへのアクセスを有する。セキュアモニタは、それより高い特権レベルで動作するので、ハイパーバイザの制御の対象ではない。このため、セキュアモニタ特権レベルＰＬ３での仮想から物理へのアドレス変換には、仮想変換テーブルベースレジスタではなく、別のバンクされた変換テーブルベースレジスタ、ＴＴＢＲ＿ＰＬ３が関与する。
【００４３】
ハイパーバイザ４３０が存在しないセキュアモードでは、ＰＬ０およびＰＬ１でのアドレス変換は、ＴＴＢＲ０＿ＰＬ１およびＴＴＢＲ１＿ＰＬ１を使用して、中間物理アドレスを生成することなく、したがって、仮想変換テーブルベースレジスタを使用することなく、仮想アドレスを物理アドレスに直接変換する。これらの物理アドレスもまた、セキュアな物理アドレスにすることができる。
【００４４】
図４に示されるように、デバッグ特権レベルデクリメント命令に対応する専用「ＤＲＥＴ」命令は、図１のデータ処理装置１００が、現在のより高い特権レベルとターゲットのより低い特権レベルとの間の推移を行うことを可能にするように使用される。例えば、データ処理装置が現在、特権レベルＰＬ３でセキュアモニタ４４０から命令を実行中である場合、ＤＲＥＴ命令の実行は、システムをＰＬ２に対応するハイパーバイザ層４３０へ下方推移するために使用することができる。システムが現在ＰＬ２に対応するハイパーバイザレベル４３０にある場合、ＤＲＥＴ命令の実行は、システムをゲストオペレーティングシステム４２０に対応する特権レベルＰＬ１へ下方推移するために使用することができる。システムが現在ＰＬ１に対応するゲストオペレーティングシステムレベル４２０にある場合、ＤＲＥＴ命令の実行は、システムをＰＬ０に対応するアプリケーション層４１０へ下方推移するために使用することができる。図４は、ＤＲＥＴ命令に現在のより高い特権レベルＰＬ３から１つ特権レベルを下げて、次に高い特権レベルへの推移が関与することを示すが、本発明は、これに決して限定されず、ＤＲＥＴ命令のターゲット特権レベルは、次に低い特権レベルだけではなく、同じまたは任意のより低い特権レベルを含むことができる。
【００４５】
ＤＲＥＴ命令は、特権レベルに応じてバンクされる、保存プログラムステータスレジスタ１４３のうちの適切な１つから、ターゲット特権レベルを取得する。このため、ＤＲＥＴ命令が実行されるときにデータ処理装置が現在ＰＬ３にある場合、適切なターゲット特権レベルを判定するために、ＳＰＳＲ＿ＰＬ３が読み出される。データ処理装置が現在ハイパーバイザ特権レベルＰＬ２にある場合、適切なターゲット特権レベルを判定するために、保存プログラムステータスレジスタＳＰＳＲ＿ＰＬ２が読み出される。同様に、データ処理装置が現在ゲストオペレーティングシステム特権レベルＰＬ１にある場合、ターゲット特権レベルはＳＰＳＲ＿ＰＬ１から読み出される。データ処理装置が現在、最低の特権レベルおよびアプリケーション層４１０に対応する特権レベルＰＬ０にある場合、それより低い特権レベルが存在しないため、最低の特権レベルＰＬ０にある時、命令ＤＲＥＴの実行は許可されない。ＰＬ０より低い許可可能なターゲット特権レベルが存在しないため、データ処理装置が現在最低の特権レベルＰＬ０にないことをチェックするために、ＤＲＥＴの実行中にチェックが実施される。
【００４６】
図４には特権レベルインクリメント命令「ＤＣＰＳ」も示される。この命令は、図１の保存プログラムステータスレジスタＳＰＳＲ１４３を使用する代わりに、命令自体のエンコード内部の即値フィールドから所望のターゲット特権レベルを取得する。図４に示されるように、ＤＣＰＳ命令は、ＰＬ０からＰＬ１への推移、またはＰＬ１からＰＬ２への推移、またはＰＬ２からＰＬ３への推移を行うために使用することができる。データ処理装置が既に最高の特権レベルＰＬ３にあるときにＤＣＰＳ命令が実行された場合、明確に定義されたターゲット特権レベルは存在せず、ＤＣＰＳ命令を実行するときに推移するそれより高い特権レベルが確かに存在することを確認するためにチェックが実施される。ＤＣＰＳ命令は、現在の特権レベルから任意のより高い特権レベル、例えば、ＰＬ０から直接ＰＬ３またはＰＬ２へ飛び越えるために使用することができ、ＤＣＰＳ命令の単一の実行によって、２つ以上の特権レベルを飛び越えることができる。異なる特権レベルで、異なる仮想から物理へのアドレス変換が存在するという事実は、データ処理装置は、デバッグモードにあるとき、デバッグ命令を実行するときに適当な仮想から物理へのアドレス変換スキームが適用されることを保証するために、特権レベル間を推移することが可能でなければならないことが重要であることを意味する。
【００４７】
特権レベルインクリメント命令ＤＣＰＳおよび特権レベルデクリメント命令ＤＲＥＴは、データ処理装置がデバッグモードにあるときのみに実行され、これらの命令の両方は非デバッグモードでは未定義であることに注意されたい。これらの２つの命令を非デバッグモードの間に実行しようとすると、ソフトウェア例外を発生させる。
【００４８】
図５は、４つの異なる特権レベルＰＬ０、ＰＬ１、ＰＬ２、およびＰＬ３で入ることができる、データ処理装置１００の複数の異なる動作モードを模式的に例示する。図５はまた、図４に例示されるデバッグモード特権レベルスイッチ命令ＤＣＰＳおよびＤＲＥＴを補完するために図１のデータ処理装置に使用される、複数の非デバッグモード特権レベルシフト命令も模式的に例示する。非デバッグモード（または「通常」モード）では、データ処理装置は、デバッグモードの状況と同様に、４つの異なる特権レベルのうちの１つで動作することができる。最低の特権レベルＰＬ０では、データ処理装置は特権のないＥＬ０モード５１０で動作する。次に高い特権レベルＰＬ１では、データ処理装置は、２つの異なる処理モード、すなわち、ＥＬ１ｈ例外処理モード５２０およびＥＬ１ｔスレッドモード５２２のうちの１つで動作することができる。同様に、次の特権レベルＰＬ２では、ＥＬ２ｈ例外処理モード５３０およびＥＬ２ｔスレッドモード５３２の選択、ＰＬ３特権レベルでは、ＥＬ３ｈ例外処理モード５４０およびＥＬ３ｔスレッドモード５４２の選択が存在する。
【００４９】
図５は、非デバッグモードで使用することができる、４つの異なる特権レベル変更命令を示す。命令「ＳＶＣ」、「ＨＶＣ」および「ＳＭＣ」は全て非デバッグモードの特権レベルインクリメント命令である。ＳＶＣ命令は、特権レベルＰＬ１のターゲットを有し、ＨＶＣ命令は、ＰＬ２のターゲットを有し、一方、ＳＭＣ命令は、ＰＬ３のターゲット特権レベルを有する。このため、これらの３つの命令の各々によって実施される特権レベル推移は、ターゲット特権レベルに従って定義される。ＳＶＣ、ＨＶＣ、およびＳＭＣ命令は、例外ベクトルアドレスへの分岐を実施することによって、非デバッグモードで異なる特権レベル間の推移を実施する。このため、これらは、より高い特権レベルへの制御されたエントリを許可する、システム呼び出し命令である。命令がターゲット特権レベル、またはより高い特権レベルで実行された場合、命令は特権レベルを変更しない。このような分岐命令の使用は、データ処理装置がデバッグモードにあるときにデバッグ命令が図１の命令転送レジスタ１３４からフェッチされるため、データ処理装置がデバッグモードにあるときは望ましくない。ＳＶＣ、ＨＶＣ、およびＳＭＣの非デバッグモード特権レベルインクリメント命令は、データ処理装置が６４ビットモードおよび３２ビットモードの両方で動作しているときに実行することができる。ＳＶＣ、ＨＶＣ、およびＳＭＣ命令は、６４ビットのＡ６４命令セットの同様なエンコードを有し、これらは、ターゲットの例外レベルを指定するエンコードの即値フィールドだけが異なる。
【００５０】
図５に示される命令「ＥＲＥＴ」は、特権レベルからターゲットのより低い特権レベルへ下降するように使用される特権レベルデクリメント命令であり、例えば、ＥＬ２ｈモード５３０から、ＥＬ１ｔモード５２２への推移を有効にするために使用することができる。ＥＲＥＴ命令は、特権レベルに従ってバンクされる保存プログラムステータスレジスタ１４３からそのターゲット特権レベルを取得し、これもバンクされるシステムレジスタＥＬＲ（図１には図示せず）の中のアドレスに分岐する。すなわち、ＥＲＥＴもまた分岐命令である。６４ビットモードでは、ＥＲＥＴは、特権レベルＰＬ１、ＰＬ２、およびＰＬ３の各々で利用可能であるが、３２ビットモードでは、ＥＲＥＴはＰＬ２でのみ利用可能であり、３２ビットモードでは、異なる特権デクリメント命令が使用されなければならない。
【００５１】
例えば、レジスタではなく、メモリからターゲット特権レベルおよびアドレスを読み出す特権デクリメント命令等、他の特権インクリメントおよびデクリメント命令が存在してもよい。非デバッグモードにおけるシステムの正しい動作を確実にするために、そのような命令が分岐することは利点である。分岐は、特権レベルの変更がシステム全体で同期化されることを可能にする。
【００５２】
データ処理装置の非デバッグモードの６４ビット動作だけで使用するためのさらなる命令が提供される。この命令は、図５において「ＭＳＲ」とのみ示される、「ＭＳＲ  ＳＰＳｅｌ」である。この命令は、ソフトウェアが、同じ特権レベル内の異なるモード間をスイッチすることを可能にする。例えば、ＥＬ１ｈモード５２０からＥＬ１ｔモード５２２である。これは特権レベルにおける変更を要求しないので、これらの命令は、システム全体で同期化されることが要求されず、したがって、コストがかかる分岐動作を省略することができる。６４ビット動作において、この命令は、特権レベルを変更するために使用することはできない。
【００５３】
同様な命令、「ＭＳＲ  ＣＰＳＲ」および「ＣＰＳ」は、同じ特権レベルのモード間を移動するために、３２ビット動作に提供される。しかしながら、３２ビット動作では、これらの命令は、例えば、特権レベルＰＬ１  ４２０での特権のある３２ビットモード動作から、特権レベルＰＬ０  ４１０での３２ビットユーザモード動作のより低い特権へ変更することによって、特権レベルをデクリメントするため（図４を参照）等、特権レベル間の下降には使用することもできるが、特権レベルの増加には決して使用できない。しかしながら、この方式で特権レベルをデクリメントすると、変更がシステム全体で適切に同期されないため、ソフトウェア誤動作につながる場合がある。ＭＳＲ  ＣＰＳＲまたはＣＰＳ命令が、データ処理装置がユーザモードで特権レベルＰＬ０  ４１０（最低の特権レベル）で動作中であるときに実行されるためにフェッチされた場合、これらの命令は単に無視される。
【００５４】
デバッグモードで実行されるときにオーバーロードされた命令は、例えば、ＰＬ０でのユーザモード５１０からＰＬ１に対応するＳＶＣモード５２２へ等、特権レベルの増加を含む、特権レベル間のいずれかの変更を行うために使用することができるので、ＡＲＭｖ７マイクロプロセッサアーキテクチャにおいて、主に非デバッグモードの３２ビット動作において使用する目的で、ＭＳＲ  ＣＰＳＲ命令を使用することは知られている。非デバッグモードでは、このような変更は同期化されず、特権の増加は許可されない。このため、この動作をオーバーロードすることによって、変更が同期されなければならず、通常の許可およびセキュリティチェックがデバッグモードでオーバーライドされなければならないため、プロセッサ実装が複雑になる。
【００５５】
図６は、データ処理装置がデバッグモードにあるときに特権レベルを増加するために使用されるＤＣＰＳ命令の命令エンコードを模式的に例示する。図６に示されるように、命令エンコードは、Ａ６４命令セット（すなわち、６４ビットデータ上で演算する命令）に属する３２ビットワイド命令エンコードであり、ターゲット特権レベルは、命令のビットＤＣＰＳ［１：０］内の即値フィールドとして定義されるので、この特定の実施形態に従う２つのビットフィールドの多様な異なる値は、図６の表に定義される。このように、ＤＣＰＳ［１：０］＝０ｂ０１のビット値は、ＰＬ１へのシフトになり、ＤＣＰＳ［１：０］＝０ｂ１０のターゲットビットフィールドは、ターゲット特権レベルＰＬ２になり、ＤＣＰＳ［１：０］＝０ｂ１１のビット値は、ＰＬ３へのシフトになる。この命令は、特権レベルを現在の特権レベルから減少するために使用することはできない。ＤＣＰＳ命令のビット［２１：５］は、命令の実行中、データ処理回路によって無視されることに注意されたい。
【００５６】
図７Ａは、デバッグモードで使用される特権レベルデクリメント命令、ＤＲＥＴのエンコードを模式的に例示する。このＤＲＥＴ命令エンコードは、Ａ６４命令セットに属する３２ビットワイド命令エンコードである。
【００５７】
図７Ｂは、非デバッグモード特権レベルデクリメント命令である、ＥＲＥＴ命令の命令エンコードを模式的に例示する。図７ＡのＤＲＥＴ命令エンコードおよび図７ＢのＥＲＥＴ命令エンコードのエンコードを比較することによって、ＤＲＥＴ命令およびＥＲＥＴ命令は、同一構造のエンコード、すなわち、命令エンコードが対応または類似の形式および関係を有することが確認できる。具体的には、これらの２つの命令のビット［２３：２１］は、２つの命令エンコードの間で異なる唯一のビットである。このように、この特定の実施形態において、命令エンコードの合計３２ビットのうちのシングルビット、ビット［２１］だけが、デバッグモードＤＲＥＴのエンコードと非デバッグモードＥＲＥＴのエンコードの間で異なる。同一構造の命令エンコードでは、完全な命令エンコードの対応するビットのより大きいサブセットが、それらのビット値で同一であるが、対応するビットのより小さいサブセットが、それらのビット値で同一ではないことを理解されたい。典型的に、図７Ａおよび図７Ｂの場合のように、非同一のビット部分は、同一のビット部分よりも相当小さい。いくつかの実施形態において、２つの同一構造の命令エンコードの非同一ビットセットは、命令エンコードの同一部分に対応するビットセットのうち、１０分の１未満のビット数を含むビットセットを有する。いくつかの実施形態において、命令エンコードの非同一部分に対応するビットセットは、シングルビットであり、同一ビットに対応するビットセットは、命令の完全なビット幅より１つ小さい。図７Ａおよび図７Ｂの場合のように、図７Ａおよび図７Ｂの命令における同一ビット幅は、ビット部分［３１：２４］および［２０：０］に対応するので、同一ビット幅は、隣接するビット幅である必要はない。命令デコーダ回路（図示せず）に対して、ビットの順序は重要ではない。
【００５８】
図７Ｃは、非デバッグモード特権レベルインクリメント命令、ＳＶＣ、ＨＶＣ、およびＳＭＣの命令エンコードを模式的に示す。これらの命令エンコードは、Ａ６４命令セットに属する３２ビットワイド命令エンコードである。最初の行のエンコードはＳＶＣ命令に対応し、真中の行はＨＶＣ命令エンコードに対応し、一方、一番下の行は、ＳＭＣ命令エンコードに対応する。これらの命令の各々は、命令をデコードするときに無視されるコメントフィールドを含み、このコメントフィールドは、命令の［２０：５］に対応する。これらの命令のビット［３１：２１］および［４：２］は同一である一方、最小の２つのビットは非同一である。事実、最小の２つのビットは、ターゲット例外レベルを指定するエンコード内の即値フィールドである。ＳＶＣ命令が特権レベルＰＬ１のターゲットを有する図５を思い出すと、ＨＶＣ命令は、ＰＬ２のターゲット特権レベルを有し、一方、ＳＭＣ命令は、ＰＬ３の最高の特権レベルのターゲットを有する。図６のＤＣＰＳ命令エンコードおよび図７ＣのＳＶＣ、ＨＶＣ、およびＳＭＣエンコードと比較することによって、ＤＣＰＳ命令は、ＳＶＣ、ＨＶＣ、およびＳＭＣ命令の基本エンコードと同一構造であるエンコードを有し、その中で、２つのビット［２３］および［２１］内だけが異なることを確認できる。すなわち、ターゲットがＰＬ１であるＤＣＰＳはＳＶＣと同一構造であり、ターゲットがＰＬ２であるＤＣＰＳはＨＶＣと同一構造であり、ターゲットがＰＬ３であるＤＣＰＳはＳＭＣと同一構造である。
【００５９】
図８は、ＤＣＰＳデバッグモード特権レベルインクリメント命令の実行時に、図１のデータ処理装置によって行われる処理動作を模式的に例示する流れ図である。処理は、段階８１０で開始し、ＤＣＰＳ命令が実行される。工程は段階８１２に進み、プロセッサがデバッグモードにあるかどうかを判定する。プロセッサがデバッグモードにはない、すなわち、非デバッグモードにある場合、プロセッサは段階８１４に進み、未定義の命令例外が投げられる。一方、段階８１２で、プロセッサが実際にはデバッグモードであると判定された場合、プロセッサは８１６に進み、命令が特権レベルＰＬ３のターゲットを有するかどうかが判定される。ターゲットが最高特権レベルＰＬ３ではない場合、プロセッサは段階８３０に進み、命令が事実確かに最高レベルＰＬ３をターゲットとする場合、工程は段階８１８に進む。
【００６０】
段階８１８で、現在の特権レベルがＰＬ０であるか、すなわち、プロセッサが最低特権レベルにあるかが判定される。特権ＰＬ３をターゲットとするＤＣＰＳ動作は、ＰＬ０では許可されず、したがって、段階８１８で、現在の特権レベルがＰＬ０であると判定された場合、工程は段階８２４に進み、エラーフラグが設定されてから、工程は段階８５０で完了するように進む。一方、段階８１８で現在の特権レベルが特権レベルＰＬ０ではないと判定された場合、工程は段階８２０に進む。
【００６１】
段階８２０で、要求された推移が許可されるかを判定するためにセキュリティチェックが実施され、次いで、工程は段階８２２に進み、セキュリティチェックの結果が分析される。ＰＬ３が、最高の特権レベル、およびデータ処理装置の非セキュア動作状態とセキュア動作状態との間の経路に関係するため、セキュリティチェックは、ＤＣＰＳ演算を発行しているデバッガがセキュア動作状態にアクセスすることを許可されていることを確実にするために実施される。典型的に、このセキュリティチェックには、デバッグモジュール１３０に対する構成入力の状態をチェックすることが関与する。構成入力がアサートされている場合、セキュリティチェックは合格し、そうでない場合、不合格である。この構成入力はいくつかの方式で送られてもよいが、容易に改ざんできないよう、データ処理回路１００内部の別の構成要素によって送られることが好ましい。構成入力を送る構成要素は、例えば、秘密のパスワードまたは質問‐回答機構等の周知の手段の使用によって、デバッガのユーザの認証をチェックすることに責任を負う。
【００６２】
段階８２２で、セキュリティチェックが合格し、データ処理装置が現在の特権レベルからＰＬ３モードへの推移を行うことを許可された場合、工程は段階８２６に進み、データ処理装置の動作のＰＬ３モードが選択され、工程は段階８５０で完了するように進む。一方、段階８２２で、セキュリティチェックが不合格になり、最高特権レベルＰＬ３へのアクセスが許可されないことを示すと、工程は段階８２４に進み、エラーフラグが設定され、次いで、工程は段階８５０で完了するように進む。
【００６３】
段階８１６に戻ると、この段階で、命令が最高の特権レベルＰＬ３をターゲットにしていないと判定された場合、工程は段階８１６から８３０に進む。段階８３０で、命令が特権レベルＰＬ２をターゲットにするかどうかが判定される。命令が事実確かに特権レベルＰＬ２をターゲットとする場合、工程は段階８３２に進む。
【００６４】
段階８３２で、現在の特権レベルがＰＬ０であるか、すなわち、プロセッサが最低特権レベルにあるかが判定される。特権ＰＬ２をターゲットとする動作は、ＰＬ０では許可されず、したがって、段階８３２で、現在の特権レベルがＰＬ０であると判定された場合、工程は段階８２４に進み、エラーフラグが設定されてから、工程は段階８５０で完了するように進む。一方、段階８３２で現在の特権レベルが特権レベルＰＬ０ではないと判定された場合、工程は段階８３４に進む。
【００６５】
段階８３４で、現在の特権レベルがＰＬ３であるか、すなわち、プロセッサが既に最高特権レベルにあるかが判定される。プロセッサがＰＬ３にある場合、ＰＬ２のターゲットは、特権レベルを減少することになり、これは、特権レベルインクリメントＤＣＰＳ命令を使用して有効にすることはできない。プロセッサが既に特権レベルＰＬ３にある場合、工程は、図８の円で囲まれた「Ａ」を経由して段階８２６に進み、データ処理装置の動作のＰＬ３モードが選択され、工程は、段階８５０で完了するように進む。一方、段階８３４で、プロセッサが最高の特権レベルＰＬ３にはないと判定された場合、工程は、段階８３６に進み、ＰＬ２モードが選択される。工程は、次いで、段階８５０で完了するように進む。
【００６６】
一方、段階８３０で、命令が特権レベルＰＬ２をターゲットとしてないと判定された場合、工程は段階８４０に進み、命令は特権レベルＰＬ１をターゲットとしていると推定される。工程は次いで、段階８４２に進み、プロセッサが特権レベルＰＬ３にあるか、すなわち、特権レベルＰＬ１への下方推移は可能ではないことが判定される。したがって、この場合、工程は、図８の円で囲まれた「Ａ」を経由して段階８２６に進み、データ処理装置の動作のＰＬ３モードが選択され、工程は、段階８５０で完了するように進む。段階８４２で、データ処理装置がＰＬ３にはないと判定された場合、工程は段階８４４に進み、プロセッサが特権レベルＰＬ２にあるかが判定される。プロセッサがＰＬ２にある場合、ＰＬ１のターゲットはここでも特権レベルを減少させることになる。したがって、この場合、工程は段階８３６に進み、ＰＬ２モードが選択されてから、次いで、工程は段階８５０で完了するように進む。
【００６７】
段階８４４に戻ると、データ処理装置が特権レベルＰＬ２にはないと判定された場合、工程は段階８４６に進み、ＰＬ１モードが選択され、次いで、工程は段階８５０で完了する。段階８３２、段階８４２、および段階８４４では、データ処理装置が既にターゲット特権レベルにある場合、エラーフラグは設定されないが、この状態でそれぞれの命令を実行することは、単に、特権レベルには変更がないことを意味する。しかし、各特権レベルには複数のモードが存在する場合があるため、モードの変更となってもよい。
【００６８】
図９は、デバッグモード特権レベルデクリメント命令、ＤＲＥＴの実行に応答して実施されるデータ処理動作を模式的に例示する流れ図である。プロセスは段階９１０で開始し、ＤＲＥＴ命令が図１のパイプラインによって実行される。工程は次いで段階９１２に進み、プロセッサがデバッグモードにあるかどうかを判定する。段階９１２で、プロセッサがデバッグモードにないと判定された場合、工程は段階９１４に進み、未定義の命令例外が投げられる。これは、ＤＲＥＴ命令はデバッグモードのみで実行でき、非デバッグモードではソフトウェア例外を投げるためである。一方、段階９１２で、プロセッサがデバッグモードにあると判定された場合、工程は段階９１６に進み、ターゲット特権レベルが、図１の適当にバンクされた保存プログラムステータスレジスタ１４３から読み出される。工程は次いで段階９１８に進み、ターゲットモードエンコードが有効であるかどうかを判定する。
【００６９】
保存プログラムステータスレジスタ１４３から取得されたターゲットモードエンコードが有効ではない場合、工程は段階９２０に進み、不正状態フラグが設定され、次いで、工程は段階９６０で完了する。図９の不正状態フラグは、図８のエラーフラグとは異なることに注意されたい。一方、段階９１８でターゲットモードエンコードが事実有効であると判定された場合、工程は段階９３０に進み、ターゲットモードの特権レベルが最高の特権レベルＰＬ３であるかどうかが判定される。ターゲットモードが最高の特権レベルＰＬ３のモードであると判定された場合、工程は段階９３２に進み、現在の特権レベルが既にＰＬ３未満であるかどうかが判定される。段階９３２で、現在の特権レベルがＰＬ３未満であると判定された場合、工程は段階９２０に進み、不正状態フラグが設定され、段階９６０で完了する。ＤＲＥＴ命令は、特権レベルを増加するために使用できないことを喚起されたい。
【００７０】
段階９３２で、現在の特権レベルがまだＰＬ３未満ではないと判定された場合、工程は段階９３４に進み、ターゲットのＰＬ３モードへの推移が行われる。効果的にこの場合、段階９３２で、システムは特権レベルＰＬ３にあり、段階９３４でのターゲットモードへの変更は、現在の特権レベルに実際の変更を全く有効にしないが、現在の特権レベルにとどまることになる。しかし、各特権レベルには複数のモードが存在する場合があるため、モードの変更となってもよい。
【００７１】
段階９３０で、ターゲットモードがＰＬ３モードではないと判定された場合、工程は、段階９４０に進み、ターゲットモードがＰＬ２モードであるかどうかが判定される。ターゲットモードが事実ＰＬ２モードである場合、工程は段階９４２に進み、データ処理装置が現在既に特権レベルＰＬ２未満であるかが判定される。データ処理装置が既に現在特権レベルＰＬ２未満である場合、これは、特権レベルの増加になるために無効な推移であり、したがって、工程は、図９の丸で囲まれた「Ａ」を経由して、段階９２０に進み、不正状態フラグが設定され、次いで、段階９６０で完了する。
【００７２】
段階９４２で、現在の特権レベルはまだ特権レベルＰＬ２未満ではないと判定された場合、システムはＰＬ２またはＰＬ３のはずであるので、工程は段階９３４に進み、ターゲットモードに対する変更が行われ、システムは必要に応じて特権レベルＰＬ２にスイッチし、システムは、段階９６０で完了する。
【００７３】
段階９４０に戻ると、段階９４０でターゲットモードがＰＬ２モードであると判定する代わりに、ターゲットがＰＬ２モードではないと判定された場合、工程は段階９５０に進み、ターゲットモードがＰＬ１モードであるかが判定される。ターゲットモードがＰＬ１であることが検出された場合、工程は段階９５２に進み、現在の特権レベルが事実既にＰＬ１未満であるかが判定される。現在の特権レベルが既にＰＬ１未満である場合、これは、特権レベルの増加が関与することができないため、不正な推移であり、従って、工程は円で囲まれた「Ａ」を経由して進み、段階９２０で不正な状態フラグが設定され、工程は段階９６０で完了する。一方、段階９５２で、現在の特権レベルはまだ特権レベルＰＬ１未満ではないと判定された場合、現在の特権レベルは、ＰＬ３、ＰＬ２、またはＰＬ１の１つであるはずで、工程は段階９３４に進み、ターゲットのＰＬ１モードへの変更、すなわち、特権レベルＰＬ１への変更が必要に応じて有効になり、工程は段階９６０で完了する。
【００７４】
段階９５０に戻ると、ターゲットモードがＰＬ１モードではないと判定された場合、工程は段階９５４に進み、ターゲットモードはＰＬ０モードであることが確立され、次いで、工程は段階９３４に進み、ターゲットＰＬ０モードへの変更、すなわち、特権レベルＰＬ０への変更が必要に応じて有効になり、工程は段階９６０で完了する。
【００７５】
図１０は、使用されてもよい、仮想マシンの実装を例示する。前述の実施形態は、関連の技法をサポートする特定の処理ハードウェアを動作するための装置および方法という点で、本発明を実装するが、ハードウェアデバイスのいわゆる仮想マシン実装を提供することも可能である。これらの仮想マシン実装は、仮想マシンプログラム１０１０をサポートするホストオペレーティングシステム１０２０を稼動するホストプロセッサ１０３０上で稼動する。典型的に、十分な速度で実行する仮想マシン実装を提供するためには、大型の強力なプロセッサが要求されるが、このような手法は、互換性または再利用の理由のために別のプロセッサにネイティブなコードを実行することが所望される場合等、所定の状況において正当化されてもよい。仮想マシンプログラム１０１０は、仮想マシンプログラム１０１０によってモデル化されているデバイスである現実のハードウェアによって提供されるアプリケーションプログラムインターフェースと同じである、アプリケーションプログラム１０００に対するアプリケーションプログラムインターフェースを提供する。このため、上記のメモリアクセスの制御を含むプログラム命令は、仮想マシンハードウェアとの相互作用をモデル化するように仮想マシンプログラム１０１０を使用して、アプリケーションプログラム１０００内部から実行されてもよい。
【符号の説明】
【００７６】
１００  集積回路
１１０  実行パイプライン
１２０  汎用レジスタセット
１３０  デバッグモジュール
１３２  デバッグポート
１３４  命令転送レジスタ
１４０  メモリ管理ユニット
１４２  オンチップメモリ
１４３  保存プログラムステータスレジスタ
１４４  オンチップメモリ
１５０  ホストＰＣ
１５２  デバッガソフトウェア
２０２、２０４  ３２ビットアップリケ―ション
２０６、２０８  ６４ビットアプリケーション
２０９、２１０  セキュアアプリケーション
２２２、２２４  ゲストＯＳ
２２６  セキュアＯＳ
２３０  ハイパーバイザ
２４０  セキュアモニタ
４１０  アプリケーション層４２０  ゲストＯＳ層
４３０  ハイパーバイザ層
４４０  セキュアモニタ層
【図１】
2013542498.tif 000003
【図２】
2013542498.tif 000004
【図３】
2013542498.tif 000005
【図４】
2013542498.tif 000006
【図５】
2013542498.tif 000007
【図６】
2013542498.tif 000008
【図７Ａ】
2013542498.tif 000009
【図７Ｂ】
2013542498.tif 000010
【図７Ｃ】
2013542498.tif 000011
【図８】
2013542498.tif 000012
【図９】
2013542498.tif 000013
【図１０】
2013542498.tif 000014
【手続補正書】
【提出日】平成24年11月21日(2012.11.21)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
データを処理するための処理回路であって、複数の特権レベルで動作するように構成可能であり、かつ異なる特権レベルで、メモリおよびレジスタセットのうちの少なくとも１つに対する異なるアクセス許可を少なくとも１つの非デバッグ命令のセットを備えるプログラム命令に課す、処理回路と、
前記処理回路によって実行するためのデバッグ命令として取り扱うために、前記プログラム命令の所与の命令を供給するためのデバッグモジュールと、
プログラム命令に応答して、前記処理回路が前記データ処理を実施するのを制御するための制御信号を生成する、命令デコード回路と、を備え、
前記プログラム命令は、デバッグ特権レベルスイッチ命令を含み、前記命令デコード回路は、前記デバッグ特権レベルスイッチ命令に応答して、
（ｉ）前記処理回路がデバッグモードにある場合、現在の特権レベルからターゲット特権レベルへ前記処理回路をスイッチすることと、
（ｉｉ）前記処理回路が非デバッグモードにある場合、前記現在の特権レベルに関わらず、前記デバッグ特権レベルスイッチ命令の実行を防止することと、を実施するとともに、
前記デバッグ特権スイッチ命令の命令エンコードは、前記少なくとも１つの非デバッグ命令のセットに属するエンコードである、
データ処理装置。
【請求項２】
前記ターゲット特権レベルは、前記現在の特権レベルとは異なる、請求項１に記載のデータ処理装置。
【請求項３】
前記ターゲット特権レベルは、前記デバッグ特権レベルスイッチ命令のフィールド内にエンコードされる、請求項１に記載のデータ処理装置。
【請求項４】
前記ターゲット特権レベルの指示を提供する少なくとも１つの専用ターゲットレジスタを備え、前記デバッグ特権レベルスイッチ命令は、前記専用ターゲットレジスタから、前記ターゲット特権レベルの前記指示を読み出す、請求項１に記載のデータ処理装置。
【請求項５】
前記専用ターゲットレジスタを複数備え、前記専用ターゲットレジスタの各々は、対応するターゲット特権レベルを記憶し、前記処理回路は、前記現在の特権レベルに依存して、前記ターゲット特権レベルを読み出す前記複数の専用ターゲットレジスタのうちの１つを選択するように構成される、請求項４に記載のデータ処理装置。
【請求項６】
前記デバッグ特権レベルスイッチ命令は、特権レベルインクリメント命令を含み、前記ターゲット特権レベルは、前記現在の特権レベルよりも高い特権レベルに対応することが要求される、請求項１〜５項のいずれか１項に記載のデータ処理装置。
【請求項７】
前記デバッグ特権レベルスイッチ命令は、特権レベルデクリメント命令を含み、前記ターゲット特権レベルは、前記現在の特権レベルよりも低い特権レベルに対応することが要求される、請求項１〜６のいずれか１項に記載のデータ処理装置。
【請求項８】
前記プログラム命令は、前記ターゲット特権レベルが、前記現在の特権レベルよりも高い特権レベルに対応することが要求される、特権レベルインクリメント命令に対応する第１の種類のデバッグ特権レベルスイッチ命令と、前記ターゲット特権レベルが、前記現在の特権レベルよりも低い特権レベルに対応することが要求される、特権レベルデクリメント命令に対応する第２の種類のデバッグ特権レベルスイッチ命令とを含む、請求項１〜５のいずれか１項に記載のデータ処理装置。
【請求項９】
前記プログラム命令は、標準特権レベルスイッチ命令を含み、前記命令デコード回路は、前記標準特権レベルスイッチ命令に応答して、
（ｉ）前記処理回路が非デバッグモードにある場合、前記現在の特権レベルから前記ターゲット特権レベルへ前記処理回路をスイッチすることを実施する、請求項１〜５のいずれか１項に記載のデータ処理装置。
【請求項１０】
前記デバッグ特権レベルスイッチ命令および前記標準特権レベルスイッチ命令は、同一の命令ビット幅および同一構造のエンコードを有し、前記同一構造のエンコードは、前記デバッグ特権レベルスイッチ命令および前記標準特権レベルスイッチ命令の第１のビットセットが、実質的に同一のビットパターンを有する一方、前記デバッグ特権レベルスイッチ命令および前記標準特権レベルスイッチ命令の第２のビットセットが、実質的に非同一のビットパターンを有し、前記第２のビットセットは前記第１のビットセット未満である、請求項９に記載のデータ処理装置。
【請求項１１】
前記第２のビットセットは、シングルビットを含む、請求項１０に記載のデータ処理装置。
【請求項１２】
前記現在の特権レベルは、第１の仮想メモリアドレスから物理メモリアドレスへの変換スキームを実装する前記処理回路の動作状態に対応し、前記ターゲット特権レベルは、第２の仮想メモリアドレスから物理メモリアドレスへの変換スキームを実装する前記処理回路の動作状態に対応し、前記第１の仮想メモリアドレスから物理メモリアドレスへの変換スキームは、第２の仮想メモリアドレスから物理メモリアドレスへの変換スキームとは異なる、請求項１〜１１のいずれか１項に記載のデータ処理装置。
【請求項１３】
前記データ処理回路は、複数のシステムレジスタを備え、前記現在の特権レベルでは、第１の組のアクセス可能性条件は、前記複数のシステムレジスタに関連し、一方、前記ターゲット特権レベルでは、第２の組のアクセス可能性条件は、前記複数のシステムレジスタに関連し、前記第２の組のアクセス可能性条件は、前記第１の組のアクセス可能性条件とは異なる、請求項１〜１２のいずれか１項に記載のデータ処理装置。
【請求項１４】
前記データ処理回路が前記非デバッグモードにある場合、前記デバッグ特権レベルスイッチ命令が未定義で、ソフトウェア例外を生成する、請求項１〜１３のいずれか１項に記載のデータ処理装置。
【請求項１５】
前記複数の特権レベルのうちの第１は、アプリケーション層に対応し、前記複数の特権レベルのうちの第２は、オペレーティングシステム層に対応する、請求項１〜１４のいずれか１項に記載のデータ処理装置。
【請求項１６】
前記複数の特権レベルのうちの１つは、ハイパーバイザ層に対応する、請求項１〜１５のいずれか１項に記載のデータ処理装置。
【請求項１７】
前記複数の特権レベルのうちの１つは、セキュリティ監視層に対応する、請求項１〜１６のいずれか１項に記載のデータ処理装置。
【請求項１８】
前記複数の特権レベルのうちの第３のレベルは、セキュリティ監視層に対応し、ハイパーバイザ層は存在しない、請求項１５に記載のデータ処理装置。
【請求項１９】
前記デバッグ特権レベルスイッチ命令は、前記スイッチを実装する前に、前記現在の特権レベルから前記ターゲット特権レベルへの前記スイッチが許可されるべきかどうかを判定するようにチェックをトリガし、前記チェックが失敗した場合に前記現在の特権レベルから前記ターゲット特権レベルへの前記スイッチを防止するように構成される、請求項１〜１８のいずれか１項に記載のデータ処理装置。
【請求項２０】
前記ターゲット特権レベルがセキュリティ監視層に対応し、前記チェックがセキュリティチェックである、請求項１９に記載のデータ処理装置。
【請求項２１】
前記処理回路は、前記複数の特権レベルのうちのより高いレベルにおいて、前記処理回路が、前記複数の特権レベルのうちの少なくとも１つのより低いレベルをアクセス不可能であると定義することができるように構成可能であり、前記チェックは、前記ターゲット特権レベルへの許可されたアクセス可能性に対するアクセス可能性チェックである、請求項１９に記載のデータ処理装置。
【請求項２２】
データ処理装置上で実行するコンピュータプログラムによって提供される仮想マシンであって、請求項１〜１７のいずれか１項に記載のデータ処理装置に従う命令実行環境を提供する、仮想マシン。
【請求項２３】
データを処理するための手段であって、複数の特権レベルで動作するように構成可能であり、かつ異なる特権レベルで、メモリおよびレジスタセットのうちの少なくとも１つに対して異なるアクセス許可を少なくとも１つの非デバッグ命令のセットを備えるプログラム命令に課す、データを処理するための手段と、
前記データを処理するための手段によって実行するためのデバッグ命令として取り扱うために、前記プログラム命令の所与の命令を供給するためのデバッグするための手段と、
プログラム命令に応答して、前記処理するための手段が前記データ処理を実施するのを制御するための制御信号を生成する、プログラム命令をデコードするための手段と、を備え、
前記プログラム命令は、デバッグ特権レベルスイッチ命令を含み、前記プログラム命令をデコードするための手段は、前記デバッグ特権レベルスイッチ命令に応答して、
（ｉ）前記データを処理するための手段がデバッグモードにある場合、現在の特権レベルからターゲット特権レベルへ前記データを処理するための手段をスイッチすることと、
（ｉｉ）前記データを処理するための手段が非デバッグモードにある場合、前記現在の特権レベルに関わらず、前記デバッグ特権レベルスイッチ命令の実行を防止することと、を実施するとともに、
前記デバッグ特権スイッチ命令の命令エンコードは、前記少なくとも１つの非デバッグ命令のセットに属するエンコードである、
データ処理装置。
【請求項２４】
複数の特権レベルで動作するように構成可能である処理回路を有するデータ処理装置上で実施するためのデータ処理方法であって、異なる特権レベルで、前記処理回路は、メモリおよびレジスタセットのうちの少なくとも１つに対する異なるアクセス許可を少なくとも１つの非デバッグ命令のセットを備えるプログラム命令に課し、
デバッグ特権レベルスイッチ命令を含むプログラム命令に応答して、データを処理するように処理回路を制御するための制御信号を生成するステップと、
前記処理回路によって実行するためのデバッグ命令として取り扱うために、前記プログラム命令の所与の命令をデバッグモジュールへ供給するステップと、
前記デバッグ特権レベルスイッチ命令に応答して、
（ｉ）前記処理回路がデバッグモードにある場合、現在の特権レベルからターゲット特権レベルへ前記処理回路をスイッチすることと、
（ｉｉ）前記処理回路が非デバッグモードにある場合、前記現在の特権レベルに関わらず、前記デバッグ特権レベルスイッチ命令の実行を防止することと、を含む特権レベルスイッチ動作を実施するように、前記処理回路を制御するための制御信号を生成するステップと、を含むとともに、
前記デバッグ特権スイッチ命令の命令エンコードは、前記少なくとも１つの非デバッグ命令のセットに属するエンコードである、
データ処理方法。
【請求項２５】
請求項２４に記載の方法を実装するためのプログラム命令を記憶する、コンピュータプログラム製品。
【国際調査報告】
2013542498.tif 000015
2013542498.tif 000016