(57)【特許請求の範囲】
【請求項１】
複数のプログラムの制御下でデータを処理するための装置であって、
複数のハードウェア資源のそれぞれが、シーケンス内の所定の位置を有するような所定の前記シーケンスを伴う、複数のハードウェア資源と、
前記シーケンス内の境界位置を指示する境界値を記憶するように構成される、境界指示回路であって、前記境界位置は、前記シーケンスを、前記シーケンス内の前記境界位置の第１の側の第１の部分と、前記シーケンス内の前記境界位置の第２の側の第２の部分とに分割する、境界指示回路と、
プログラム命令を実行するように構成される、プログラム命令実行回路と、
前記境界指示回路に連結された資源制御回路であって、
前記プログラム命令実行回路が第１のプログラムを実行しているとき、前記複数のハードウェア資源のうちのいくつが前記装置内に存在するかを問い合わせる１つ以上のプログラム命令に、第１の値を返すように応答し、
前記プログラム命令実行回路が第２のプログラムを実行しているとき、前記複数のハードウェア資源のうちのいくつが前記装置内に存在するかを問い合わせる１つ以上のプログラム命令に、前記第２の部分内のこれらのハードウェア資源に対応する値を返すように応答するように構成される、資源制御回路と、
を備え、
前記複数のハードウェア資源のうちのいくつが前記装置内に存在するかを問い合わせるとき、前記第１のプログラムの前記１つ以上のプログラム命令は、前記複数のハードウェア資源のうちのいくつが前記装置内に存在するかについての真の値を返し、前記複数のハードウェア資源のうちのいくつが前記装置内に存在するかを問い合わせる、前記第２のプログラムの前記１つ以上のプログラム命令は、前記境界値によって指定される値を返す、装置。
【請求項２】
前記第１の値は、前記第１の部分および前記第２の部分内のこれらのハードウェア資源の合計に対応する、請求項１に記載の装置。
【請求項３】
前記第１の値は、前記第１の部分内のこれらのハードウェア資源に対応する、請求項１に記載の装置。
【請求項４】
前記プログラム命令実行回路は、複数の特権レベルのうちの選択可能な１つで動作するように構成され、前記複数の特権レベル内の異なる特権レベルは、前記複数のハードウェア資源への異なるアクセス権を有し、
前記資源制御回路は、
前記プログラム命令実行回路が前記第１のプログラムを実行する第１の特権レベルで動作しているとき、プログラム命令制御下で前記境界値が書き込まれることを許可し、
前記プログラム命令実行回路が前記第２のプログラムを実行する第２の特権レベルで動作しているとき、プログラム命令制御下で前記境界値が書き込まれることを許可しない、
ように構成される、
請求項１に記載の装置。
【請求項５】
前記資源制御回路は、前記プログラム命令実行回路が前記第２の特権レベルで動作しているとき、前記第１の部分内のハードウェア資源にアクセスすることを求める１つ以上のプログラム命令が、前記プログラム命令実行回路が前記第１の特権レベルで動作しているときより少ない、前記第１の部分内の前記ハードウェア資源へのアクセス権を許可されるように構成される、請求項４に記載の装置。
【請求項６】
前記プログラム命令実行回路が前記第２の特権レベルで動作しているとき、前記第１の部分内のハードウェア資源にアクセスすることを求める前記１つ以上のプログラム命令は、前記第１の部分内の前記ハードウェア資源へのアクセス権を許可されない、請求項５に記載の装置。
【請求項７】
前記複数の特権レベルは、特権レベルの階層を備え、前記第１の特権レベルは、前記第２の特権レベルより前記階層が上位であり、前記階層内の特権の任意の所与のレベルは、前記所与のレベルより前記階層が下位の任意の特権レベルと比較して、前記ハードウェア資源へのアクセス権の適切な上位集合を有する、請求項５に記載の装置。
【請求項８】
前記境界指示回路は、さらなる境界値を記憶するように構成され、前記さらなる境界値は、第２の部分を、さらなる第１の部分と、さらなる第２の部分とに分割し、前記資源制御回路は、
前記プログラム命令実行回路が前記第２の特権レベルで動作しているとき、プログラム命令制御下で前記さらなる境界値が書き込まれることを許可し、前記複数のハードウェア資源のうちのいくつが前記装置内に存在するかを問い合わせる１つ以上のプログラム命令に、前記さらなる第１の部分および前記さらなる第２の部分内のこれらのハードウェア資源の合計に対応する値を返すように応答し、
前記プログラム命令実行回路が第３の特権レベルで動作しているとき、プログラム命令制御下で前記さらなる境界値が書き込まれることを許可せず、前記複数のハードウェア資源のうちのいくつが前記装置内に存在するかを問い合わせる１つ以上のプログラム命令に、前記さらなる第２の部分内のこれらのハードウェア資源に対応する値を返すように応答するように構成される、
請求項４〜７のうちのいずれか一項に記載の装置。
【請求項９】
前記境界指示回路は、Ｎ個のさらなる境界値を記憶するように構成され、Ｎは、ゼロではない正の整数であり、前記Ｎ個のさらなる境界値は、前記境界値で開始する、境界値のシーケンスを形成し、前記境界値のシーケンス内のｎ番目の境界値は、前記境界値のシーケンス内の（ｎ−１）番目の境界値によって画定される第２の部分を、ｎ番目の第１の部分と、ｎ番目の第２の部分とに分割し、前記資源制御回路は、
前記プログラム命令実行回路が前記ｎ−１番目の境界値に関して第２の特権レベルで動作しているとき、プログラム命令制御下で前記ｎ番目の境界値境界値が書き込まれることを許可し、前記複数のハードウェア資源のうちのいくつが前記装置内に存在するかを問い合わせる１つ以上のプログラム命令に、前記ｎ番目の第１の部分および前記ｎ番目の第２の部分内のこれらのハードウェア資源の合計に対応する値を返すように応答し、
前記プログラム命令実行回路が前記ｎ番目の境界値に関して第２の特権レベルで動作しているとき、プログラム命令制御下で前記ｎ番目の境界値境界値が書き込まれることを許可せず、前記複数のハードウェア資源のうちのいくつが前記装置内に存在するかを問い合わせる１つ以上のプログラム命令に、前記ｎ番目の第２の部分内のこれらのハードウェア資源に対応する値を返すように応答する、
ように構成される、
請求項１〜７のうちのいずれか一項に記載の装置。
【請求項１０】
前記複数のハードウェア資源は、メモリ管理ユニットの設定データへのポインタのテーブル内に複数のエントリを含む、請求項１〜９のうちのいずれか一項に記載の装置。
【請求項１１】
前記設定データは、
変換テーブルベースポインタレジスタ値と、
不良アドレスおよびコンテキストレジスタ値と、
変換ルックアサイドバッファ維持レジスタ値と、
仮想アドレス対物理アドレス演算レジスタ値と、
メモリ管理ユニット設定および制御レジスタ値と、
変換テーブルベースポインタレジスタ値、不良アドレスおよびコンテキストレジスタ値、変換ルックアサイドバッファ維持レジスタ値、仮想アドレス対物理アドレス演算レジスタ値、ならびにメモリ管理ユニット設定および制御レジスタ値を含む、コンテキストバンク値と、
バイパス属性レジスタ値と、
前記第１のプログラムおよび前記第２のプログラムのうちの１つ以上によって開始されるアクティビティに応えてもたらされる、割り込み出力と、
データストリームをマッピングするためのトランザクション識別レジスタ値と、
のうちの１つ以上を含む、
請求項１０に記載の装置。
【請求項１２】
前記複数のハードウェア資源は、複数の性能監視回路を備える、請求項１〜９のうちのいずれか一項に記載の装置。
【請求項１３】
前記複数の性能監視回路は、
カウンタレジスタ、イネーブルレジスタ、オーバーフロー状態フラグ、およびオーバーフロー事象割り込みイネーブルレジスタのうちの１つ以上を備える、複数のカウンタと、複数の事象からカウントする事象を選択するための事象選択回路と、
のうちの１つ以上を備える、請求項１２に記載の装置。
【請求項１４】
前記複数の性能監視回路を選択的に有効にするためのグローバルイネーブルレジスタと、
前記第１の部分内の前記複数の性能監視回路を選択的に有効にするための前記第１のプログラムがアクセス可能なシャドーグローバルイネーブルレジスタ、ならびに前記第２の部分内の前記複数の性能監視回路を選択的に有効にするための前記第１のプログラムおよび前記第２のプログラムがアクセス可能な構築されたグローバルイネーブルレジスタと、
のうちの１つ以上を備える、請求項１２に記載の装置。
【請求項１５】
前記複数のハードウェア資源は、全体としてアクセスされ、設定レジスタおよび状態レジスタのうちの１つである、レジスタの複数のフィールドを備え、前記複数のフィールドのそれぞれは、それぞれのさらなる資源を表し、前記境界値は、前記複数のフィールドのどれが前記第１のプログラムがアクセス可能であるか、および前記複数のフィールドのどれが前記第２のプログラムがアクセス可能であるかを指定する、請求項１〜９のうちのいずれか一項に記載の装置。
【請求項１６】
前記複数のハードウェア資源は、複数の性能監視回路のそれぞれ１つに対応する設定レジスタ内に、１つ以上のビットのフィールドを備え、各フィールドは、前記複数の性能監視回路のうちの対応する性能監視回路が有効にされるか否かを制御する、請求項１５に記載の装置。
【請求項１７】
前記複数のハードウェア資源は、前記第１のプログラムまたは前記第２のプログラムによる使用のための複数のレジスタを備える、請求項１〜９のうちのいずれか一項に記載の装置。
【請求項１８】
前記複数のハードウェア資源は、アクセスされているデータストリームと前記装置の関連処理コンテキストとの間で使用されるマッピングを記憶する、複数のマッピングレジスタを備える、請求項１〜９のうちのいずれか一項に記載の装置。
【請求項１９】
前記複数のハードウェア資源は、複数のブレークポイントレジスタおよび複数のウォッチポイントレジスタのうちの少なくとも１つを備える、請求項１〜９のうちのいずれか一項に記載の装置。
【請求項２０】
前記第２のプログラムが、前記第２の部分内のハードウェア資源を読み込むことを試みる場合、前記ハードウェア資源のデフォルト値が返される、請求項１〜１９のうちのいずれか一項に記載の装置。
【請求項２１】
前記第２のプログラムが、前記第２の部分内のハードウェア資源に書き込むことを試みる場合、前記書き込みは、実施されない、請求項１〜１９のうちのいずれか一項に記載の装置。
【請求項２２】
前記第２のプログラムが、前記第２の部分内のハードウェア資源にアクセスすることを試みる場合、前記アクセスは、却下され、例外処理が呼び出される、請求項１〜１４のうちのいずれか一項に記載の装置。
【請求項２３】
前記複数の異なる特権レベルは、ハイパーバイザプログラムが実行されるハイパーバイザ特権レベルと、オペレーティングシステムプログラムが実行されるオペレーティングシステム特権レベルとを含み、前記ハイパーバイザプログラムは、前記第１の部分内のこれらのハードウェア資源、および前記第２の部分内のこれらのハードウェア資源へのアクセスを有し、前記オペレーティングシステムプログラムは、前記第２の部分内のこれらのハードウェア資源へのアクセスを有する、請求項４〜７のうちのいずれか一項に記載の装置。
【請求項２４】
前記複数の異なる特権レベルは、安全なプログラムが実行される、安全なドメイン内の少なくとも１つの安全な特権レベルと、非安全なプログラムが実行される、非安全なドメイン内の少なくとも１つの非安全な特権レベルとを含み、前記安全なプログラムは、前記第１の部分内のこれらのハードウェア資源、および前記第２の部分内のこれらのハードウェア資源へのアクセスを有し、前記非安全なプログラムは、前記第２の部分内のこれらのハードウェア資源へのアクセスを有する、請求項４〜７のうちのいずれか一項に記載の装置。
【請求項２５】
前記資源制御回路は、前記境界値に基づいて、前記複数のハードウェア資源を再インデックス付けする、請求項１〜２４のうちのいずれか一項に記載の装置。
【請求項２６】
複数のハードウェア資源のそれぞれが、シーケンス内の所定の位置を有するような所定の前記シーケンスを伴う、前記複数のハードウェア資源を有する、装置を用いて、複数のプログラムの制御下でデータを処理する方法であって、
前記シーケンス内の境界位置を指示する境界値を記憶するステップであって、前記境界位置は、前記シーケンスを、前記シーケンス内の前記境界位置の第１の側の第１の部分と、前記シーケンス内の前記境界位置の第２の側の第２の部分とに分割する、ステップと、
第１のプログラムを実行しているとき、前記複数のハードウェア資源のうちのいくつが前記装置内に存在するかを問い合わせる１つ以上のプログラム命令に、第１の値を返すように応答するステップと、
第２のプログラムを実行しているとき、前記複数のハードウェア資源のうちのいくつが前記装置内に存在するかを問い合わせる１つ以上のプログラム命令に、前記第２の部分内のこれらのハードウェア資源に対応する値を返すように応答するステップと、
を含み、
前記複数のハードウェア資源のうちのいくつが前記装置内に存在するかを問い合わせるとき、前記第１のプログラムの前記１つ以上のプログラム命令は、前記複数のハードウェア資源のうちのいくつが前記装置内に存在するかについての真の値を返し、前記複数のハードウェア資源のうちのいくつが前記装置内に存在するかを問い合わせる、前記第２のプログラムの前記１つ以上のプログラム命令は、前記境界値によって指定される値を返す、方法。 
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ処理システムの分野に関する。より具体的には、本発明は、データ処理システム内のハードウェア資源の管理に関する。
【背景技術】
【０００２】
データ処理システムは、一般的に、性能監視カウンタ、設定記憶レジスタ、デバッグ事象生成資源、追跡資源等の多数のハードウェア資源を有する。特定のプロセッサ内に提供されるこれらの資源の数は、実装に固有である場合がある。
【０００３】
データ処理システムの分野において、仮想化を使用する傾向が高まってきている。そのような仮想化は、ソフトウェアに、ソフトウェアの視点からは１つの形態を有するように見えるが、実際には異なる基底物理形態を有する実行環境が提供されるようにすることを可能にすることができる。例として、仮想化、ならびに多くの場合、ハイパーバイザソフトウェアより低いレベルの特権で実行される、１つ以上のゲストオペレーティングシステムの管理を担当する、ハイパーバイザソフトウェアを実行する、プロセッサを提供することができる。ハイパーバイザソフトウェアによって、物理的実態とは異なる、利用可能な特定のハードウェア資源の数の指示等のプロセッサとのインターフェースをゲストオペレーティングシステムに提示することができる。この仮想化は、通常、ハイパーバイザソフトウェアによってソフトウェアにおける資源へのアクセスを捕捉し、次いで、ゲストオペレーティングシステムに提示されている仮想システムと合致する適切な応答を与えるように、基底ゲストオペレーティングシステムへの応答を管理する働きをする、ハイパーバイザプログラムを実行することによって管理される。ハイパーバイザ制御下で、ソフトウェアにおけるアクセスを捕捉し、適切な応答を生成するこのプロセスは、何百ものプロセッササイクルを消費する可能性があり、実行が比較的遅い。準仮想化手法では、ゲストオペレーティングシステムは、ハイパーバイザと同一のレベルの特権を有することができ、ハイパーバイザの公開インターフェースの適切な呼び出しを介して以外、いくつかの資源を活用しないことを「信用する」ことができる。
【０００４】
仮想化することが望まれるハードウェア資源のうちのいくつかは、ソフトウェアにおけるアクセスを捕捉し、適切な応答を生成するこの手法に不適切である。例として、システム性能の側面を監視するために、プロセッサ内にハードウェア性能カウンタを提供することがますます有用である。ハイパーバイザプログラムは、依然として要求される性能基準を満たす一方で、プロセッサによるエネルギー使用を削減するように、電圧および周波数スケーリング等のパラメータを制御するために、そのような性能カウンタを使用してもよい。別のレベルで、ゲストオペレーティングシステム、あるいはそのゲストオペレーティングシステムを使用して実行されるアプリケーションプログラムは、それ自体の動作を制御するため、またはそのアプリケーションソフトウェアもしくはゲストオペレーティングシステムの開発中に実施される、診断／デバッグ作業の一環として、ハードウェア性能カウンタを採用することができる。そのような性能カウンタの状況において、これらのハードウェア資源の仮想化をサポートするために性能カウンタへのアクセスを捕捉することのオーバーヘッドは、監視されているソフトウェアの性能および挙動、したがって、生成される結果の妥当性に大きな影響を及ぼすということである。また、その高レベル制御のためのハイパーバイザプログラム、およびそれらの異なる目的のためのゲストオペレーティングシステム等の他のプログラムの両方によるハードウェア資源の使用を同時にサポートすることが可能であることも望ましい。さらに、物理的実装に提供されるハードウェア資源の数は、異なる場合がある。
【０００５】
仮想化システム内の管理を必要とするハードウェア資源の別の例は、システムメモリ管理ユニットの設定データを指すために使用される、コンテキストポインタである。実行されているソフトウェアに提示される環境によって、安全なドメインおよび非安全なドメインをサポートするもの（例えば、ＡＲＭ  Ｔｒｕｓｔｚｏｎｅ）等のシステム内で、ハードウェアメモリ管理ユニットの設定を交換することがしばしば要求される。どこにこの設定データが記憶されているかを指示するハードウェアポインタは、保存および回復目的のために、このデータに高速アクセスするための機構を提供する。したがって、これらのポインタへのソフトウェアアクセスを捕捉することは、コンテキストを切り替えることができる速度に有害な影響を及ぼす場合がある。それでもなお、システムは、これらのポインタの数を含む適切な環境、ならびにポインタの数が異なる場合がある、異なる物理的実装をサポートする能力を提供することが可能であるべきであるということが重要である。
【発明の概要】
【課題を解決するための手段】
【０００６】
一側面から見ると、本発明は、複数のプログラムの制御下でデータを処理するための装置であって、前記複数のハードウェア資源のそれぞれが、前記シーケンス内の所定の位置を有するような所定のシーケンスを伴う、複数のハードウェア資源と、前記シーケンス内の境界位置を指示する境界値を記憶するように構成される、境界指示回路であって、前記境界位置は、シーケンスを、前記シーケンス内の前記境界位置の第１の側の第１の部分と、前記シーケンス内の前記境界位置の第２の側の第２の部分とに分割する、境界指示回路と、プログラム命令を実行するように構成される、プログラム命令実行回路と、前記境界指示回路に連結され、前記プログラム実行回路が第１のプログラムを実行しているとき、前記複数のハードウェア資源のうちのいくつが前記装置内に存在するかを問い合わせる１つ以上のプログラム命令に、第１の値を返すように応答し、前記プログラム実行回路が第２のプログラムを実行しているとき、前記複数のハードウェア資源のうちのいくつが前記装置内に存在するかを問い合わせる１つ以上のプログラム命令に、前記第２の部分内のこれらのハードウェア資源に対応する値を返すように応答するように構成される、資源制御回路とを備え、前記複数のハードウェア資源のうちのいくつが前記装置内に存在するかを問い合わせるとき、前記第１のプログラムの前記１つ以上のプログラム命令は、前記複数のハードウェア資源のうちのいくつが前記装置内に存在するかについての真の値を返し、前記複数のハードウェア資源のうちのいくつが前記装置内に存在するかを問い合わせる、前記第２のプログラムの前記１つ以上のプログラム命令は、前記境界値によって指定される値を返す、装置を提供する。
【０００７】
本技術は、プログラム可能な境界値によって指示されるように、複数のハードウェア資源を第１の部分と第２の部分とに分割するための、ハードウェアサポートを提供する。資源制御回路は、第１のプログラムがハードウェア資源のうちのいくつが存在するかを問い合わせるとき、第１の値が返され、一方、第２のプログラムがハードウェア資源のうちのいくつが存在するかを問い合わせるとき、第２の部分内のこれらのハードウェア資源に対応する値が返されるように提供される。したがって、第１のプログラムおよび第２のプログラムは、存在するハードウェア資源の数について、異なる表示が与えられてもよい。第１のプログラムおよび第２のプログラムは、異なる実装内に異なる数のハードウェア資源が存在する場合があるという事実を考慮するために、この数を問い合わせることができる。さらに、この問い合わせに対して第１のプログラムおよび第２のプログラムに返される、異なる結果は、第１のプログラム使用することができるハードウェア資源と第２のプログラムが使用することができるハードウェア資源との間での分離を可能にする。第１のプログラムまたは第２のプログラムに返される、いくつのハードウェア資源が存在するかに関する問い合わせに対する厳密な応答は、様々である。第１のプログラムは、存在するハードウェア資源の数の真の値を返され、第２のプログラムは、境界値によって指定される値を返される。
【０００８】
例として、第１のプログラムに返される、資源の数の第１の値は、第１の部分および第２の部分内のハードウェア資源の合計に対応してもよい。第１のプログラムは、すべてのハードウェア資源にわたる制御を許可されてもよく、一方、第２のプログラムは、第２の部分内のこれらのハードウェア資源のみを認識し、その対話を第２の部分内のこれらのハードウェア資源に限定する。代替として、第１のプログラムに返される第１の値は、第１の部分内のハードウェア資源に対応し、第１のプログラムに、これらのハードウェア資源へのアクセスを与えてもよい。
【０００９】
第１のプログラムおよび第２のプログラムは、プログラム命令実行回路によってサポートされる複数の特権レベル内の異なる特権レベルでしてもよい。この環境内で、資源制御回路は、第１の特権レベルで実行される第１のプログラムが、プログラム命令制御下で境界値を書き込むことを許可され、一方、第２の特権レベルで実行される第２のプログラムが、境界値を書き込むことを許可されないように構成されてもよい。このようにして、第１のプログラムは、第２のプログラムに提示されるハードウェア資源の表示を制御することができる。資源制御回路は、システムが第２の特権レベルであるとき、第１の部分内のハードウェア資源へのアクセスに対して異なる方法で応答するように構成されてもよい。一般的な意味で、資源制御回路は、第２の特権レベルで動作しているとき、プログラム実行回路が第１の特権レベルで動作しているときと比較してより少ない、第１の部分内のこれらのハードウェア資源へのアクセス権を与えることができる。この一実施例は、プログラム実行回路が第２の特権レベルで動作しているとき、第１の部分内のハードウェア資源へのアクセス権が与えられないということになる。
【００１１】
複数の特権レベルは、階層が下位の特権レベルと比較して、ハードウェア資源へのアクセス権の適切な上位集合を有する、階層が少なくともいくつかの特権レベル分高い特権レベルの階層を含むことができる。
【００１２】
上記では、資源制御回路が応答する、１つの境界値を組み込む、システムが記載された。さらなる実施形態では、境界指示回路は、さらなる境界値を記憶し、そのさらなる境界値によって、第２の部分をさらなる第１の部分とさらなる第２の部分とに分割するように構成されてもよい。第２の特権レベルで動作しているとき、プログラムは、さらなる境界値を書き込むこと、およびいくつのハードウェア資源が存在するかに関する問い合わせに、さらなる第１の部分およびさらなる第２の部分内のこれらのハードウェア資源の合計に対応する値で応答することを許可される。同時に、第３の特権レベルで動作しているプログラムは、さらなる境界値を書き込むことを許可されず、いくつのハードウェア資源が存在するかに関する問い合わせに、さらなる第２の部分内のこれらのハードウェア資源に対応する値を返すように応答する。
【００１３】
したがって、ハードウェア資源の第１の部分と第２の部分とへの分割は、階層的である場合があり、第２の部分がさらなる第１の部分とさらなる第２の部分とにさらに分割されるということが分かるであろう。同様に、さらなる第２の部分およびそれ以降を、追加の境界値でさらに細分割することができる。
【００１４】
本技術によって管理されるハードウェア資源は、多種多様な異なる形態を取ることができることが理解されるであろうが、本技術は、ハードウェア資源が、メモリ管理ユニットの設定データへのポインタのテーブル内に複数のエントリを含む実施形態に非常に適している。
【００１５】
そのような実施形態内で、設定データは、変換テーブルベースポインタレジスタ値と、不良アドレスおよびコンテキストレジスタ値と、変換ルックアサイドバッファ維持レジスタ値と、仮想アドレス対物理アドレス演算レジスタ値と、メモリ管理ユニット設定および制御レジスタ値と、変換テーブルベースポインタレジスタ値、不良アドレスおよびコンテキストレジスタ値、変換ルックアサイドバッファ維持レジスタ値、仮想アドレス対物理アドレス演算レジスタ値、ならびにメモリ管理ユニット設定および制御レジスタ値を含む、コンテキストバンク値と、バイパス属性レジスタ値と、前記第１のプログラムおよび前記第２のプログラムのうちの１つ以上によって開始されるアクティビティに応えてもたらされる割り込み出力と、データストリームをマッピングするためのトランザクション識別レジスタ値とのうちの１つ以上を含んでもよい。
【００１６】
本技術が非常に適している他の実施形態では、複数のハードウェア資源は、複数の性能監視回路を備えることができる。これらの性能監視回路は、カウンタレジスタ、イネーブルレジスタ、オーバーフロー状態フラグ、およびオーバーフロー事象割り込みイネーブルレジスタのうちの１つ以上を備える、複数のカウンタと、複数の事象からカウントする事象を選択するための事象選択回路とのうちの１つ以上を備えてもよい。
【００１７】
本技術を適用してもよい、複数のハードウェア資源のさらなる例は、複数のハードウェア資源が、全体としてアクセスされ、設定レジスタおよび状態レジスタのうちの１つである、レジスタの複数のフィールドを備え、複数のフィールドのそれぞれが、それぞれのさらなる資源を表し、境界値が、複数のフィールドのどれが第１のプログラムにアクセス可能であるか、および複数のフィールドのどれが第２のプログラムにアクセス可能であるかを特定するものである。
【００１８】
この状況では、複数のハードウェア資源は、複数の性能監視回路のそれぞれ１つに対応する設定レジスタ内に、各ビットがその回路が有効にされるか否か等の対応する性能監視回路のいくつかの側面を制御する、ビットを備えることができる。これはまた、各ビットが、それを制御するというよりはむしろ、対応する回路のいくつかの側面を報告するとき、状態レジスタにも当てはまる。例えば、１回路につきビットのフィールドなどのように、多対１マッピングが存在する場合がある。
【００１９】
本技術を適用することができるハードウェア資源のさらなる例は、複数のハードウェア資源が、第１のプログラムまたは第２のプログラムによる使用のための複数のレジスタを備える場合である。例として、これらのレジスタは、アクセスされているデータストリームと当該装置の関連処理コンテキストとの間で使用されるマッピングを記憶する、マッピングレジスタである場合がある。
【００２０】
第２のプログラムが、第１の部分（すなわち、それが適切なアクセスを有さない部分）内のハードウェア資源を読み込むことを試みる場合、いくつかの実施形態では、ハードウェア資源のデフォルト値が返される場合がある。同様に、第２のプログラムが、第１の部分内のハードウェア資源に書き込むことを試みる場合、書き込みは、実施されず、例外（または故障）処理がトリガされる場合がある。
【００２１】
前述の複数の異なる特権レベルは、種々の異なる形態および使用を有することができる。本技術を使用することができる一実施例では、複数の特権レベルは、仮想化基底ハードウェアに対してハイパーバイザプログラムが実行されるハイパーバイザ特権レベルと、オペレーティングシステムプログラムが実行されるオペレーティングシステム特権レベルとを含む。ハイパーバイザプログラムは、第１の部分内のこれらのハードウェア資源、および第２の部分内のこれらのハードウェア資源へのアクセスを有し、オペレーティングシステムプログラムは、第２の部分内のこれらの資源のみへのアクセスを有する。
【００２２】
本技術を使用されてもよい別の例示的な環境は、複数の異なる特権レベルが、安全なプログラムが実行される安全なドメイン内の少なくとも１つの安全な特権レベルと、非安全なプログラムが実行される非安全なドメイン内の少なくとも１つの非安全な特権レベルとを含むものである。この状況では、安全なプログラムは、第１の部分内のこれらのハードウェア資源、および第２の部分内のこれらのハードウェア資源へのアクセスを有することができ、一方、非安全なプログラムは、第２の部分内のこれらのハードウェア資源へのアクセスのみを有する。
【００２３】
資源制御回路ならびにハードウェア資源へのゲートアクセスは、境界値に基づいて、複数のハードウェア資源を再インデックス付けしてもよい。このようにして、異なるプログラムは、これらのインデックスがマップされる物理資源が、どの部分がアクセスされるか、および第１の部分と第２の部分との間の境界の位置によって異なるとしても、それらが、インデックス値のシーケンス内の設定されたインデックス値から開始するかのように、資源にアクセスしてもよい。
【００２５】
さらなる側面から見ると、本発明は、複数のハードウェア資源のそれぞれが、シーケンス内の所定の位置を有するような所定の前記シーケンスを伴う、前記複数のハードウェア資源を有する、装置を用いて、複数のプログラムの制御下でデータを処理する方法であって、前記シーケンス内の境界位置を指示する境界値を記憶するステップであって、前記境界位置は、前記シーケンスを、前記シーケンス内の前記境界位置の第１の側の第１の部分と、前記シーケンス内の前記境界位置の第２の側の第２の部分とに分割する、ステップと、前記プログラム実行回路が第１のプログラムを実行しているとき、前記複数のハードウェア資源のうちのいくつが前記装置内に存在するかを問い合わせる１つ以上のプログラム命令に、第１の値を返すように応答するステップと、前記プログラム実行回路が第２のプログラムを実行しているとき、前記複数のハードウェア資源のうちのいくつが前記装置内に存在するかを問い合わせる１つ以上のプログラム命令に、前記第２の部分内のこれらのハードウェア資源に対応する値を返すように応答するステップと、を含み、前記複数のハードウェア資源のうちのいくつが前記装置内に存在するかを問い合わせるとき、前記第１のプログラムの前記１つ以上のプログラム命令は、前記複数のハードウェア資源のうちのいくつが前記装置内に存在するかについての真の値を返し、前記複数のハードウェア資源のうちのいくつが前記装置内に存在するかを問い合わせる、前記第２のプログラムの前記１つ以上のプログラム命令は、前記境界値によって指定される値を返す、方法を提供する。
【００２６】
ここで、本発明の実施形態を、一例としてのみ、添付の図面を参照して説明し、図面は、以下の通りである。
【図面の簡単な説明】
【００２７】
【図１】プログラム命令の制御下でデータを処理するための装置であって、異なる種類のハードウェア資源を含む、装置を図式的に示す図である。
【図２】境界レジスタ内に保持される境界値によって指定される境界で、第１の部分と第２の部分とに分割された、複数のハードウェア資源を図式的に示す図である。
【図３】レジスタ内の制御ビットであり、境界レジスタ内に保持される境界値によって第１の部分と第２の部分に分割された、複数の資源を図式的に示す図である。
【図４】異なる特権レベルで動作している異なるプログラムの階層を示す図である。
【図５】安全なドメインおよび非安全なドメインを有するシステムにおける、特権レベルの別の配設を示す図である。
【図６】第１の部分内のハードウェア資源へのアクセスの制御を示すフロー図である。
【図７】境界およびさらなる境界を用いた、ハードウェア資源の分割を示す図である。
【図８】異なる特権レベルのプログラムによって書き込まれたそれぞれの境界値に関して複数の資源を分割する、多重境界を図式的に示す図である。
【図９】複数のハードウェア資源を、メモリ管理ユニット設定の記憶位置へのポインタのテーブルの形態で示す図である。
【図１０】資源サイズ指示を読み込むための回路を図式的に示す図である。
【図１１】現在のウォーターマーキング技術が採用されるときの、資源を読み込むための回路を図式的に示す図である。
【図１２】現在のウォーターマーキング技術が使用されるときに、資源を書き込むための回路を図式的に示す図である。
【発明を実施するための形態】
【００２８】
図１は、複数のプログラムの制御下でデータを処理するための装置２を図式的に図示する。プログラムは、システムオンチップ集積回路６に連結される、メモリ４内に記憶される。集積回路６は、メモリ４から読み込まれるプログラム命令を実行する、プロセッサコア８を含む。集積回路６はまた、例えば、他のコンポーネント（図示せず）を接続するＡＲＭ  ＡＸＩバスを介して、システムレベルでメモリ４へのアクセスを制御するためのシステムメモリ管理ユニット（ＭＭＵ）１０も含む。集積回路６は、以下にさらに記載される技術に従って、異なるレベルの特権で実行される異なるプログラムに利用可能にされた、ハードウェア資源を含む。
【００２９】
本実施例では、ハードウェア資源の１つの形態は、性能カウンタの形態の性能監視回路１２を備える。これらの性能監視回路１２（複数のハードウェア資源に対応する）と関連して、性能モニタ境界レジスタ１４（境界指示回路）および性能モニタ制御回路１６（資源制御回路）が提供される。性能モニタ境界レジスタ１４は、性能監視回路１２の第１の部分内の性能カウンタと、性能監視回路１２の第２の部分内の性能カウンタとの間の分割を指示する境界値を記憶する。性能監視回路内の性能カウンタは、ハードウェア資源のそれぞれが、そのシーケンス内の所定の位置を有するような所定のシーケンスを有する。したがって、そのシーケンス内の点で境界を画定することによって、これは、どの性能カウンタがその境界の一方の側の第１の部分内に含まれるか、およびどの性能モニタがその境界の他方の側の第２の部分内に含まれるかを判定する場合がある。
【００３０】
性能モニタ制御回路１６に、プロセッサコア８が動作しており、処理命令を実行している、現在の特権レベルを指示する信号が供給される。性能モニタ制御回路１６は、プロセッサコア８によって実行されるプログラムによって、ハードウェア資源（例えば、性能モニタまたは性能モニタの制御スイッチ）のうちの１つへのアクセスが試みられるとき、これが許可されるか否かを判定するように、この特権レベルに応答する。アクセスが許可される場合、これは、例えば、書き込みを行ってもよいこと、または読み込みを行ってもよいことが許可される。アクセスが許可されない場合、これは実施されず、デフォルト値を返す、例外処理をトリガする、読み込みは許可するが書き込みは許可しない、または単に書き込みを無視する等のデフォルトアクションが実施される場合がある。
【００３１】
また、図１には、複数のコンテキストポインタ１８を備える、別の種類のハードウェア資源も図示される。これらのコンテキストポインタは、その現在のコンテキスト／モードについてシステムＭＭＵ１０をプログラムするためのコンテキストデータが、メモリ４内のどこに記憶されているかを指示する、アドレス値を記憶する。したがって、コンテキスト／モードの変更が行われるとき、この設定データはシステムＭＭＵ１０のために作成され、即座にＭＭＵ１０に取り込まれてもよく、現在のデータをメモリ４へと外に記憶することができる。コンテキスト／モードは、プロセッサコア８が、現在、ＡＲＭ  Ｔｒｕｓｔｚｏｎｅシステムの安全なドメイン内で動作しているか、または非安全なドメイン内で動作しているかに対応することができる。
【００３２】
複数のコンテキストポインタ（所定のシーケンス、例えば、ポインタ番号を伴う複数のハードウェア資源）と関連して、コンテキストポインタを第１の部分および第２の部分に分割する境界値を記憶する、コンテキストポインタ境界レジスタ２０、ならびにプロセッサコア８がプログラム命令によるコンテキストポインタ１８へのアクセスを制御するように動作しているドメインに応答する、コンテキストポインタ制御回路２２が提供される。性能監視回路１２に関して前述されるように、コンテキストポインタ１８は、コンテキストポインタ境界レジスタ２０内に記憶されるコンテキストポインタ境界値によって、それらの所定のシーケンス内で、第１の部分と、第２の部分とに分割される。コンテキストポインタに応答する制御論理は、ハードウェア資源のうちのいくつが存在するかを問い合わせる実行中の第１のプログラム命令に、第１の部分内のコンテキストポインタの数、または第１の部分および第２の部分内のコンテキストポインタの合計であってもよい、第１の値を返すように応答する。第１の部分へのアクセスを有する第１のプログラムは、コンテキストポインタ境界レジスタ２０内に境界値を書き込むことを許可される。コンテキストポインタ１８の第２の部分へのアクセスを有する第２のプログラムは、コンテキストポインタ境界値を書き込むことを許可されず、存在するコンテキストポインタの数が返されることを問い合わせるとき、第２の部分からのコンテキストポインタの数に対応する値が返される。
【００３３】
図２は、複数のハードウェア資源Ｃ０〜Ｃ７を図式的に図示する。これらのハードウェア資源２４は、複数のハードウェア資源内のそれらの数値的位置に対応する、所定のシーケンスを有する。境界レジスタ２６内に記憶される境界値は、このシーケンス内の境界位置を指示する。境界値は、変数であり、したがって、境界の位置は、境界レジスタ２６に書き込むことによって変化する場合がある。
【００３４】
図示される実施例では、ハードウェア資源の第１の部分は、レジスタＣ３〜Ｃ７を備える。ハードウェア資源の第２の部分は、レジスタＣ０〜Ｃ２に対応する。ハードウェア資源の第１の部分は、安全なドメイン内で実行される安全なプログラムのみアクセス可能である。ハードウェア資源の第２の部分は、安全なドメイン内で実行される安全なプログラム、および非安全なドメイン内で実行される非安全なプログラムの両方がアクセス可能である。当業者に周知であるように、安全なプログラムは、一般的に、少なく部分的に、集積回路６の基底ハードウェアアーキテクチャを仮想化すること、および保護された方法で、非安全なソフトウェアにサービスを提供するために、非安全なプログラムに仮想ハードウェアインターフェースを提供することを担当する。
【００３５】
安全なプログラムおよび非安全なシステムの両方は、実装ごとに異なる場合があるため、利用可能なハードウェア資源２４の数を問い合わせる必要がある。しかしながら、本技術に従って、そのような問い合わせに応えて返される値は、安全なドメイン内で実行される安全なプログラムが問い合わせを発行しているか否か、または非安全なドメイン内で動作している非安全なプログラムであるか否かによって異なる。安全なプログラムは、存在する資源の真の総数を返され、一方、非安全なプログラムは、第２の部分内に存在するこれらのハードウェア資源に対応する数を返される。このように、第１の部分内のハードウェア資源は、非安全なプログラムから隠され、安全なプログラムによる使用のために留保されてもよい。
【００３６】
境界レジスタ２６内に記憶される境界値によって制御される境界の位置は、境界レジスタ２６に境界値を書き込むことによって変化する場合がある。安全なプログラムは、境界レジスタ２６に書き込んでもよい。非安全なドメイン内の非安全なプログラムおよび他のプログラムは、境界レジスタ２６に書き込むことを許可されない。
【００３７】
システムＭＭＵ１０は、プロセッサＭＭＵがプロセッサ生成アクセスに対して提供するのと同様に、デバイス生成アクセスに対して、アドレス変換および保護サービスを提供する。システムＭＭＵとの主な差は、サポートされる同時変換設定の数である。
【００３８】
プロセッサＭＭＵは、一般に、１回にソフトウェアの１つの「世界」の変換をサポートするという点において、１つの有効なコンテキストのみをサポートする。ハイパーバイザのようなソフトウェアの監視部分は、それがゲストＯＳの実行をタイムスライスするとき、この状態を切り替えるように調整し、各ゲストＯＳは、アプリケーションの実行をタイムスライスするときと同等の動作を実施する。
【００３９】
システムＭＭＵ１０は、短期間内／同時に多数のデバイスからのアクセスを変換することをサポートし、潜在的に、各デバイスに別個の変換／保護を提供する。
【００４０】
例として、ＡＲＭ  ＴｒｕｓｔＺｏｎｅ技術を配備するシステムを使用して、システムＭＭＵ１０は、デバイスの２つのセット、
１．安全なソフトウェアによって設定されるこれらのデバイス
２．非安全なソフトウェアによって設定されるこれらのデバイス
からのトランザクションを変換することをサポートすることができる。
【００４１】
トランザクションを変換するプロセスは、変換プロセスを設定するいくつかのコンテキスト（例えば、変換テーブルベースポインタレジスタ、変換テーブル制御レジスタ）を要求する。システムＭＭＵ１０の下で、望まれる変換の各異なるセットは、別個の変換コンテキストを要求する。システムＭＭＵ１０は、したがって、変換コンテキストのプールを提供し、これは、システムＭＭＵ１０が、安全なソフトウェアと非安全なソフトウェアとの間でこれらのコンテキストを簡単に共有することができる方法を見出すのに望ましい。
【００４２】
ＡＲＭ  ＴｒｕｓｔＺｏｎｅ技術を配備するシステムを用いたセキュリティに対する手法と一致して、非安全なソフトウェアは、安全に所有される変換コンテキストを観察すること、またはそれに影響を及ぼすことが可能であるべきではない。さらに、非安全なソフトウェアは、安全なソフトウェアがシステムＭＭＵによって提供されるサービスを使用する必要性を有する場合、変換コンテキストのすべてを要求することが可能であってはならない。提案される解決策は、変換コンテキストのプールを２つのセット、１つは安全なソフトウェアのためのものであり、１つは非安全なソフトウェアのためのものである、に分割する、境界レジスタを実装することである。この手法は、非安全なソフトウェアに、コンテキストプールの適切な部分への直接アクセスを提供し、安全なソフトウェアの介在が不要であるという利点を有する。
【００４３】
このシステムＭＭＵにおけるさらなる利点の例は、資源が第１の部分にあるか、または第２の部分にあるかによって、資源の異なる挙動が望まれる場合である。例えば、第１の部分内にある変換コンテキストは、第２の部分内にある変換コンテキストとは異なるフォーマットを有することができる。このフォーマットは、資源が、両方のフォーマットをサポートすることができ、それらが第１の部分内に含まれるか、または第２の部分内に含まれるかに基づいて、それらがどちらのフォーマットを提示するかを選択するように設計されるというように、境界値に依存して選択することができる。
【００４４】
システムＭＭＵ１０では、変換コンテキストを２つのグループ（安全、非安全）に分割するために境界値を使用することに加えて、非安全なグループ内の変換コンテキストは、さらなる境界値を使用して、２つの部分に分割される。これらの部分は、それぞれ、仮想アドレスから中間物理アドレスへの変換、および中間物理アドレスから物理アドレスへの変換を提供する、第１または第２の段階変換コンテキストフォーマットのいずれかを提供する。第１の段階変換コンテキストフォーマットは、ゲストＯＳによる使用のために提供され、第２の段階変換コンテキストフォーマットは、ハイパーバイザに提供される。システムＭＭＵ１０はさらに、第１の段階変換の出力が、第２の段階変換の入力に供給され、したがって、仮想化システムのコンテキスト内で仮想アドレスから物理アドレスへのアドレス変換を実施する、ネスト化変換のために構成されてもよい。
【００４５】
ハイパーバイザは、第１の段階変換を実施する非安全なグループ内の部分へのアクセスを、それが仮想化しているゲストＯＳに許可してもよく、第２の段階変換を実施する部分は、ゲストＯＳがアクセス不可能である。
【００４６】
図３は、本技術に従って管理することができる、複数のハードウェア資源の別の例を図示する。本実施例では、複数のハードウェア資源は、制御レジスタ内に、全体としてアクセスされる（すなわち、全体として読み込まれる、または書き込まれる）制御ビットを備える。図３に示されるこのレジスタ内のビットのそれぞれは、対応する性能モニタ（例えば、性能カウンタ回路）が有効にされるか、または無効にされるかを制御する働きをする。境界レジスタ２８内に記憶される境界値は、性能モニタイネーブルレジスタ３０内のビットを、第１の部分と第２の部分とに分割する。第１の部分内のイネーブルビットは、ハイパーバイザプログラムによって、読み込みおよび書き込みアクセスが行われるが、ゲストオペレーティングシステムによって有効にアクセスされない場合がある。アクセスが許可されないときのデフォルトアクションの例として、ゲストオペレーティングシステムによるこれらのビットのうちの１つへの書き込みは、無視され、ゲストオペレーティングシステムによって、これらのビットのうちの１つの読み込みが行われる場合、ハイパーバイザによって設定されるものとして考慮される当該ビットの実際の値が何であるかに関わらず、「０」の値が返される（または実際の値が返される場合がある）。イネーブルレジスタ３０の第２の部分は、ハイパーバイザプログラムおよびゲストオペレーティングシステムによって、読み込みアクセスおよび書き込みアクセスの両方が行われる。
【００４７】
本実施例では、性能モニタイネーブルレジスタ３０内のイネーブルビットは、境界レジスタ２８内に記憶される境界値の制御下で選択的アクセスが与えられる、ハードウェア資源であることが分かる。また、基底性能カウンタは、選択されたアクセスが許可される、ハードウェア資源でもある。
【００４８】
これらの技術の別の考えられる機能は、グローバル制御レジスタ（ハードウェア機能、例えば、動的電圧スケーリングにおける切り替え、のためのグローバルイネーブルレジスタ等）の供給であり、これらは、資源供給に分割が存在するとき、シャドー値を得る。したがって、単一のグローバルイネーブルレジスタ（ゲストオペレーティングシステムに提示される仮想マシンのプログラマモデルである）の代わりに、第１の部分を制御する第１のグローバルイネーブルレジスタ、および第２の部分を制御する第２のグローバルイネーブルレジスタの２つが存在する。第２のイネーブルレジスタは、仮想マシンのグローバルイネーブルに対応する。
【００４９】
図４は、プロセッサ６が実行されてもよい、複数のプログラムの配設を図式的に図示する。ハイパーバイザプログラム３２は、２つの基底ゲストオペレーティングシステム３４、３６に対するプロセッサ６の仮想化を担当する。これらのゲストオペレーティングシステム３４、３６のそれぞれは、ゲストオペレーティングシステム３４、３６に、物理プロセッサ６の真の物理形態ではない場合がある、仮想プロセッサに対応する環境を与えるために、ハイパーバイザプログラム３２によって管理される、プロセッサ６へのインターフェースを提供される。例として、プロセッサ６は、ゲストオペレーティングシステム３４、３６がアクセスを許可されるハードウェア資源より大きい数のハードウェア資源を有し、制御してもよく、これらのハードウェア資源のうちのいくつかは、ハイパーバイザ３２による使用のために留保しておく。ゲストオペレーティングシステム３４、３６が利用可能なハードウェア資源の数を問い合わせるとき、これは、存在するハードウェア資源の数の真の値を表さない値を返される。
【００５０】
また、それぞれのゲストオペレーティングシステム３４、３６の制御下で実行される、それぞれのアプリケーションプログラムが、図示される異なるプログラムに関連付けられる、異なるレベルの特権、すなわち、ハイパーバイザレベルの特権、特権が与えられたレベルの特権、およびユーザレベルの特権と共に、図４に図示される。この配設は、当業者に周知であろう。
【００５１】
図５は、異なるレベルの特権を伴う、異なるプログラムの配設の別の実施例を図示する。図５の配設では、また、安全なドメインＳおよび非安全なドメインＮＳも存在する。安全なドメイン内に、特権が与えられたレベルの特権で動作する特権が与えられたレベルコード３８、およびユーザレベルの特権で動作するユーザコード４０が存在する。非安全なドメイン内に、同様に、特権が与えられたレベルの特権で動作する特権が与えられたコード４２、およびユーザレベルの特権で動作するユーザコード４４が存在する。この環境内では、安全なドメイン内で実行されるプログラムコードのみが、ハードウェア資源の第１の部分へのアクセスを有し、一方、非安全なドメイン内で実行されるプログラムコードは、この第１の部分内のハードウェア資源へのアクセスを有さない。
【００５２】
図６は、ハードウェア資源へのアクセス要求に応えて実施される、処理制御を図示する、フロー図である。この処理制御は、図１の性能モニタ制御回路１６またはコンテキストポインタ制御回路２２によって実施される。
【００５３】
ステップ４６で、プロセスは、ハードウェア資源へのアクセスが受信されるまで待機する。ステップ４８で、当該ハードウェア資源が複数のハードウェア資源の第１の部分内であるか否かについての判定が行われる。この判定は、アクセスが行われるハードウェア資源のインデックス値と性能モニタ境界レジスタ１４またはコンテキストポインタ境界レジスタ２０のいずれかにおいて指定される現在の境界値との間での比較によって行われてもよい。
【００５４】
アクセスが第１の部分内のハードウェア資源へのものではない場合、処理は、ステップ５０へ進み、そこで当該アクセスが許可される。第１の部分内へのアクセスではないアクセスは、第１のプログラムおよび第２のプログラムの両方が、それらの特権レベルに関わらず、アクセスを有する、第２の部分内へのアクセスになる。
【００５５】
ステップ４８での判定が、アクセスは第１の部分内のハードウェア資源へのものであるという場合、ステップ５２は、プロセッサ６の現在の動作モードがハイパーバイザモードであるか否かを判定する。現在の動作モードがハイパーバイザモードである場合、ステップ５０で、当該アクセスが許可され、実施される。現在のモードがハイパーバイザモードではない場合、処理は、ステップ５４に進む。ハイパーバイザモードとは、プログラムが第１の部分内のハードウェア資源へのアクセスが許可されるものである場合に実行されなければならないモードである。
【００５６】
ステップ５４は、当該アクセスが読み込みアクセスであるか否かを判定する。アクセスが読み込みアクセスである場合、ステップ５６は、真の値の代わりに、デフォルト値、例えば「０」を返す。ステップ５４で、アクセスが読み込みアクセスではないと判定される場合、ステップ５８は、フォルトを生成し、書き込みアクセスを無視する。書き込みを無視し、読み込みに関する実際の値を返す等の他のデフォルトアクションもまた、可能である。
【００５７】
図７は、本技術によって、どのようにハードウェア資源を２つ以上の境界を用いて分割されてもよいかを図式的に図示する。ハイパーバイザによって書き込まれる第１の境界は、ハードウェア資源を、ハイパーバイザのみがアクセス可能である第１の部分と、ハイパーバイザおよびゲストオペレーティングシステムの両方がアクセス可能である第２の部分とに分割する。ハイパーバイザまたはゲストオペレーティングシステムのいずれかによって書き込まれる、さらなる境界値は、第２の部分を、さらなる第１の部分と、さらなる第２の部分とに分割する。さらなる第１の部分は、ハイパーバイザプログラムおよびゲストオペレーティングシステムプログラムの両方がアクセス可能である。さらなる第２の部分は、ハイパーバイザプログラム、ゲストオペレーティングシステムプログラム、およびユーザプログラムがアクセス可能である。
【００５８】
ユーザレベルの特権のユーザプログラムが、存在するハードウェア資源の数を問い合わせるとき、さらなる第２の部分内のハードウェア資源の数に対応する値が返される。特権が与えられたレベルの特権で動作するゲストオペレーティングシステムが、存在するハードウェア資源の数を問い合わせるとき、第２の部分内のハードウェア資源の数に対応して値が返される。ハイパーバイザプログラムが、特権のハイパーバイザモード内のその位置から、存在するハードウェア資源の数に関する問い合わせを発行するとき、第１の部分および第２の部分内のハードウェア資源の数の合計に対応する、ハードウェア資源の数の真の値が返される。
【００５９】
存在する資源の数に関する問い合わせに応えて異なる値を返すことに加えて、資源制御回路１６、２２は、各プログラムのアクセスが、物理的に存在するハードウェア資源の真のシーケンス内のそれらの実際の位置に関わらず、同一の所与の点（インデックス値）で開始するように見えるように、ハードウェア資源を再インデックス付けする。したがって、例えば、各プログラムは、実行されている特権がどのようなレベルであれ、およびハードウェア資源のどの部分へのアクセスが許可されていようとも、すべてが固定値で開始する、例えば、インデックスのすべてが、真の物理ハードウェア資源内のそれらの位置に関わらず、値「０」で開始し、この値から上方に拡張してもよい、これらのハードウェア資源のインデックスを提供される。図２の実施例では、第２の部分のインデックスは、必然的に、「０」をルートとし、第１の部分のエントリは、「０」で開始するように再インデックス付けされる。
【００６０】
図８は、ハードウェア資源の異なる部分への分割のさらなる実施例を図示する。本実施例では、それぞれがハードウェア資源をさらに細分割する働きをする、４つの境界値が図示される。与えられる実施例では、特権は、０番目のレベルから３番目のレベルに拡張し、０番目のレベル境界値は、０番目のレベルの特権で動作するプログラムによってのみ書き込まれることが許可されている。１番目のレベル境界値は、特権の第１のレベル以上のプログラムによって書き込むことができる。同様に、さらなる境界値は、それらの対応するレベルの特権がアクセスを有するハードウェア資源の部分を、さらなる第１の部分と、第２の部分とに細分割し、境界値を用いた分割は、対応する特権のレベル以上で実行されるプログラムによって書き込み可能である、境界の位置を固定する。したがって、ハードウェア資源の細分割の階層は、それぞれの特権のレベルで書き込み可能である複数の境界値を用いて作成さてもよいことが、図８から分かるであろう。
【００６１】
図９は、この場合、メモリ管理ユニット（ＭＭＵ）のコンテキストデータを記憶するメモリアドレスへのポインタのテーブルに対応する、ハードウェア資源の別の例を図式的に図示する。第１の部分と第２の部分との間の境界は、オーバーライドレジスタ６０内に記憶される。このオーバーライドレジスタ６０は、ハイパーバイザレベルの特権で実行されるハイパーバイザプログラムによってのみ書き込むことができる。ハイパーバイザサイズレジスタ６２は、図９の第１の部分および第２の部分内に含まれるレジスタの真の総数を指示する値を記憶する。特権が与えられたレベルの特権で実行されるゲストオペレーティングシステムプログラムによって読み込まれるとき、利用可能なポインタ値の数の値を返す、ゲストオペレーティングシステムサイズレジスタ６４が提供される。ゲストオペレーティングシステムサイズレジスタ６４内に記憶される、このゲストオペレーティングシステムサイズは、位置６６に対応するデフォルト値を有する。オーバーライドレジスタ６０が、ハイパーバイザプログラムによって、境界をデフォルト位置６６以外の位置にずらす、異なる値が書き込まれていない限り、ゲストオペレーティングシステムからの読み込みに応えて、このデフォルト値が返される。これは、図９に図示される状況である。したがって、ゲストオペレーティングシステムにハードウェア資源のデフォルト数を提供することができ、ハイパーバイザプログラムは、適切な場合、より多くのハードウェア資源をゲストオペレーティングシステムに選択的に提供することができる。
【００６２】
本実施例では、ゲストオペレーティングシステムによって使用されるポインタ値は、ハイパーバイザによって要求されるものより小さい。したがって、通常、ハイパーバイザのみが使用することができるポインタが、ゲストオペレーティングシステムによる使用のために割り当てられる場合、それらは、ゲストオペレーティングシステムに対するより小さいポインタを記憶するために必要とされるビット空間を超える、余剰のビット空間を有する。この余分な空間は、単に無視することができる。
【００６３】
図１０は、資源サイズ指示回路を図式的に図示する。提供されるハードウェア資源は、レジスタのプール６８である。一定値または読み込み専用値を記憶する、サイズ指示レジスタ７０は、当該システムに実装されるレジスタの総数を指示する値を指す。より多くの特権が与えられたレベルコードによって書き込み可能である、境界レジスタ７２は、より低いレベルの特権で動作しているときに資源サイズ指示として提供される、境界位置を指示する。マルチプレクサ７４は、現在の、より多くの特権が与えられたレベルのアクセスであることを指示する、多重切り替え信号に基づいて、サイズデータの読み込み要求に応えて、サイズ指示レジスタ７０内に記憶される値を提供することと境界レジスタ７２内に記憶される値を提供することとの間で切り替える。したがって、ソフトウェアの観点から、サイズ指示は、常に固定レジスタ内に記憶されているものと見なすことができるが、レジスタが読み込まれるとき、返される値は、システムが動作している特権の現在のモードによって、サイズ指示レジスタ７０または境界レジスタ７２のいずれかからのものである。より多くの特権が与えられたレベルのコードは、境界レジスタ７２に書き込むことができ、したがって、より少ない特権が与えられたレベルのコードによって見られる資源サイズを変化させることができる。サイズ指示レジスタ内に記憶される値は、ハードウェア実装に固有である場合があり、より多くの特権が与えられたレベルのコードによって使用される値を返すことができる。
【００６４】
図１１は、資源のうちの１つを読み込むための回路を図式的に図示する。マルチプレクサ７６は、復号されたアドレスに基づいて、読み込む資源レジスタのうちの１つを選択する。しかしながら、さらなるマルチプレクサ７８は、読み込まれている資源が、そのモードで利用可能である資源レジスタの範囲外である場合、読み込まれている資源のコンテンツの固定のデフォルト値を返す。したがって、マルチプレクサ７８は、システムがより多くの特権が与えられたアクセスモードで動作しているか、またはアクセスされている資源のアドレスが、より低いレベルの特権アクセスで動作しているときにシステムが利用可能である資源アドレスの範囲の制限として設定される、境界レジスタ内に記憶される値以下であるかのいずれかではない限り、デフォルト値を読み込みデータ出力に切り替える。
【００６５】
図１２は、資源６８に書き込むための回路を図式的に図示する。この配設では、書き込みのアドレスは、書き込みイネーブルとして資源６８内のレジスタのうちの適切な１つに供給される、ワンホット信号を生成する、デコーダ８０に送信される。デコーダ８０からのこの信号は、アクセス制御ＡＮＤゲート８２からのさらなる信号とＡＮＤ演算される。アクセス制御ＡＮＤゲート８２は、書き込みイネーブル信号と、システムがより多くの特権が与えられたモードのアクセスで動作しているか、またはアクセスされているレジスタのアドレスがより低いレベルの特権でアクセス可能であるレジスタに対する境界位置以下であるかを指示する信号とともにＡＮＤをとる。したがって、より多くの特権が与えられたレベルのアクセスで、任意のレジスタを書き込むことができ、一方、より低いレベルの特権は、境界以下のレジスタを書き込むことができる。より低いレベルの特権で許可される範囲外のレジスタへの書き込みは、書き込みデータがレジスタの入力に適用されるとしても、書き込みイネーブル信号が生成されないため、単に無視される。
【００６６】
図９のポインタによって指される設定データは、種々の異なる形態を取ることができる。この設定データは、図１のメモリ管理１０によって使用される。設定データは、変換テーブルベースポインタレジスタ値と、
不良アドレスおよびコンテキストレジスタ値と、変換ルックアサイドバッファ維持レジスタ値と、仮想アドレス対物理アドレス演算レジスタ値と、メモリ管理ユニット設定および制御レジスタ値と、変換テーブルベースポインタレジスタ値、不良アドレスおよびコンテキストレジスタ値、変換ルックアサイドバッファ維持レジスタ値、仮想アドレス対物理アドレス演算レジスタ値、ならびにメモリ管理ユニット設定および制御レジスタ値を含む、コンテキストバンク値と、バイパス属性レジスタ値と、前記第１のプログラムおよび前記第２のプログラムのうちの１つ以上によって開始されるアクティビティに応えてもたらされる割り込み出力と、データストリームをマッピングするためのトランザクション識別レジスタ値とのうちの１つ以上を含むことができる。
【００６７】
図１および図３に関して記載される性能監視回路は、種々の異なる形態を有することができる。性能監視回路は、１つ以上のカウンタレジスタ、イネーブルレジスタ、オーバーフロー状態フラグ、およびオーバーフロー事象割り込みイネーブルレジスタを備える、複数のカウンタのうちの１つ以上を備えることができる。性能監視回路はさらに、または代替として、複数の事象内からカウントする事象を選択するための事象選択回路を備えることができる。この状況内で、装置は、カウンタレジスタ、イネーブルレジスタ、オーバーフロー状態フラグ、およびオーバーフロー事象割り込みイネーブルレジスタのうちの１つ以上を備える、複数のカウンタと、
複数の事象からカウントする事象を選択するための事象選択回路とをさらに含有することができる。これらの要素は、図３の配設の物理的実装を提供するのに役立つ場合がある。図３に論理的に図示される性能モニタイネーブルレジスタ３０は、実際には、上述される様々なイネーブルレジスタによって物理的に提供することができる。
【００６８】
本技術を適用することができるハードウェア資源の別の形態は、第１のプログラムまたは第２のプログラムによる使用のための複数のレジスタである。これらのレジスタは、例えば、アクセスされているデータストリームと装置の関連する処理コンテキストとの間で使用されるマッピングを記憶する、複数のマッピングレジスタである場合がある。したがって、装置がコンテキストを切り替えるとき、これは、システムのハードウェア資源のうちの１つを備える物理レジスタ内に記憶されるため、新しいコンテキストが新しいマッピングを即座に利用できるようにすることができる。
【００６９】
デバッグ／診断事象生成資源の管理に、本技術をさらに使用することができる。例えば、本技術に従って、物理的に提供されるブレークポイントおよびウォッチポイント資源を、仮想化階層内のより低いレベルで実行されるプログラムに対して仮想化することができる。これらのブレークポイントおよびウォッチポイント資源は、一実施例では、ブレークポイントコンパレータおよびウォッチポイントコンパレータである場合がある。本技術に従って管理されてもよい診断資源の他の例は、プロセッサ６の追跡データ生成ユニット内のアドレスコンパレータである場合がある。本技術に従って管理されてもよい資源の他の例は、当業者に明らかであろう。
【符号の説明】
【００７０】
２  複数のプログラムの制御下でデータを処理するための装置
４  メモリ
６  システムオンチップ集積回路
８  プロセッサコア
１０  システムメモリ管理ユニット（ＭＭＵ）
１２  性能監視回路
１４  性能モニタ境界レジスタ（境界指示回路）
１６  性能モニタ制御回路（資源制御回路）
１８  コンテキストポインタ
２０  コンテキストポインタ境界レジスタ
２２  コンテキストポインタ制御回路
【図１】
0005596164.tif 000002
【図２】
0005596164.tif 000003
【図３】
0005596164.tif 000004
【図４】
0005596164.tif 000005
【図５】
0005596164.tif 000006
【図６】
0005596164.tif 000007
【図７】
0005596164.tif 000008
【図８】
0005596164.tif 000009
【図９】
0005596164.tif 000010
【図１０】
0005596164.tif 000011
【図１１】
0005596164.tif 000012
【図１２】
0005596164.tif 000013