説明

データ処理システム内のハードウェア資源管理

性能モニタ(12)およびコンテキストポインタ(18)等の複数のハードウェア資源を伴う、プロセッサ(6)を提供する。境界指示回路(14、20)は、プログラム可能であり、ハードウェア資源を第1の部分と第2の部分とに分割する境界位置を指示する、境界値を記憶する。資源制御回路(16、22)は、プログラム実行回路(8)が第1のプログラムを実行しているとき、複数のハードウェア資源のうちのいくつが存在するかについての問い合わせに、第1の値を返すように応答し、一方、プログラム実行回路が第2のプログラムを実行しているとき、第2の部分内のこれらのハードウェア資源に対応する値を返すことによって、そのような問い合わせに応答するように、ハードウェア資源へのアクセスを制御する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、データ処理システムの分野に関する。より具体的には、本発明は、データ処理システム内のハードウェア資源の管理に関する。
【背景技術】
【0002】
データ処理システムは、一般的に、性能監視カウンタ、設定記憶レジスタ、デバッグ事象生成資源、追跡資源等の多数のハードウェア資源を有する。特定のプロセッサ内に提供されるこれらの資源の数は、実装に固有である場合がある。
【0003】
データ処理システムの分野において、仮想化を使用する傾向が高まってきている。そのような仮想化は、ソフトウェアに、ソフトウェアの視点からは1つの形態を有するように見えるが、実際には異なる基底物理形態を有する実行環境が提供されるようにすることを可能にすることができる。例として、仮想化、ならびに多くの場合、ハイパーバイザソフトウェアより低いレベルの特権で実行される、1つ以上のゲストオペレーティングシステムの管理を担当する、ハイパーバイザソフトウェアを実行する、プロセッサを提供することができる。ハイパーバイザソフトウェアによって、物理的実態とは異なる、利用可能な特定のハードウェア資源の数の指示等のプロセッサとのインターフェースをゲストオペレーティングシステムに提示することができる。この仮想化は、通常、ハイパーバイザソフトウェアによってソフトウェアにおける資源へのアクセスを捕捉し、次いで、ゲストオペレーティングシステムに提示されている仮想システムと合致する適切な応答を与えるように、基底ゲストオペレーティングシステムへの応答を管理する働きをする、ハイパーバイザプログラムを実行することによって管理される。ハイパーバイザ制御下で、ソフトウェアにおけるアクセスを捕捉し、適切な応答を生成するこのプロセスは、何百ものプロセッササイクルを消費する可能性があり、実行が比較的遅い。準仮想化手法では、ゲストオペレーティングシステムは、ハイパーバイザと同一のレベルの特権を有することができ、ハイパーバイザの公開インターフェースの適切な呼び出しを介して以外、いくつかの資源を活用しないことを「信用する」ことができる。
【0004】
仮想化することが望まれるハードウェア資源のうちのいくつかは、ソフトウェアにおけるアクセスを捕捉し、適切な応答を生成するこの手法に不適切である。例として、システム性能の側面を監視するために、プロセッサ内にハードウェア性能カウンタを提供することがますます有用である。ハイパーバイザプログラムは、依然として要求される性能基準を満たす一方で、プロセッサによるエネルギー使用を削減するように、電圧および周波数スケーリング等のパラメータを制御するために、そのような性能カウンタを使用してもよい。別のレベルで、ゲストオペレーティングシステム、あるいはそのゲストオペレーティングシステムを使用して実行されるアプリケーションプログラムは、それ自体の動作を制御するため、またはそのアプリケーションソフトウェアもしくはゲストオペレーティングシステムの開発中に実施される、診断/デバッグ作業の一環として、ハードウェア性能カウンタを採用することができる。そのような性能カウンタの状況において、これらのハードウェア資源の仮想化をサポートするために性能カウンタへのアクセスを捕捉することのオーバーヘッドは、監視されているソフトウェアの性能および挙動、したがって、生成される結果の妥当性に大きな影響を及ぼすということである。また、その高レベル制御のためのハイパーバイザプログラム、およびそれらの異なる目的のためのゲストオペレーティングシステム等の他のプログラムの両方によるハードウェア資源の使用を同時にサポートすることが可能であることも望ましい。さらに、物理的実装に提供されるハードウェア資源の数は、異なる場合がある。
【0005】
仮想化システム内の管理を必要とするハードウェア資源の別の例は、システムメモリ管理ユニットの設定データを指すために使用される、コンテキストポインタである。実行されているソフトウェアに提示される環境によって、安全なドメインおよび非安全なドメインをサポートするもの(例えば、ARM Trustzone)等のシステム内で、ハードウェアメモリ管理ユニットの設定を交換することがしばしば要求される。どこにこの設定データが記憶されているかを指示するハードウェアポインタは、保存および回復目的のために、このデータに高速アクセスするための機構を提供する。したがって、これらのポインタへのソフトウェアアクセスを捕捉することは、コンテキストを切り替えることができる速度に有害な影響を及ぼす場合がある。それでもなお、システムは、これらのポインタの数を含む適切な環境、ならびにポインタの数が異なる場合がある、異なる物理的実装をサポートする能力を提供することが可能であるべきであるということが重要である。
【発明の概要】
【課題を解決するための手段】
【0006】
一側面から見ると、本発明は、複数のプログラムの制御下でデータを処理するための装置であって、前記複数のハードウェア資源のそれぞれが、前記シーケンス内の所定の位置を有するような所定のシーケンスを伴う、複数のハードウェア資源と、前記シーケンス内の境界位置を指示する境界値を記憶するように構成される、境界指示回路であって、前記境界位置は、シーケンスを、前記シーケンス内の前記境界位置の第1の側の第1の部分と、前記シーケンス内の前記境界位置の第2の側の第2の部分とに分割する、境界指示回路と、プログラム命令を実行するように構成される、プログラム命令実行回路と、前記境界指示回路に連結され、前記プログラム実行回路が第1のプログラムを実行しているとき、前記複数のハードウェア資源のうちのいくつが前記装置内に存在するかを問い合わせる1つ以上のプログラム命令に、第1の値を返すように応答し、前記プログラム実行回路が第2のプログラムを実行しているとき、前記複数のハードウェア資源のうちのいくつが前記装置内に存在するかを問い合わせる1つ以上のプログラム命令に、前記第2の部分内のこれらのハードウェア資源に対応する値を返すように応答するように構成される、資源制御回路とを備える、装置を提供する。
【0007】
本技術は、プログラム可能な境界値によって指示されるように、複数のハードウェア資源を第1の部分と第2の部分とに分割するための、ハードウェアサポートを提供する。資源制御回路は、第1のプログラムがハードウェア資源のうちのいくつが存在するかを問い合わせるとき、第1の値が返され、一方、第2のプログラムがハードウェア資源のうちのいくつが存在するかを問い合わせるとき、第2の部分内のこれらのハードウェア資源に対応する値が返されるように提供される。したがって、第1のプログラムおよび第2のプログラムは、存在するハードウェア資源の数について、異なる表示が与えられてもよい。第1のプログラムおよび第2のプログラムは、異なる実装内に異なる数のハードウェア資源が存在する場合があるという事実を考慮するために、この数を問い合わせることができる。さらに、この問い合わせに対して第1のプログラムおよび第2のプログラムに返される、異なる結果は、第1のプログラム使用することができるハードウェア資源と第2のプログラムが使用することができるハードウェア資源との間での分離を可能にする。
【0008】
例として、第1のプログラムに返される、資源の数の第1の値は、第1の部分および第2の部分内のハードウェア資源の合計に対応してもよい。第1のプログラムは、すべてのハードウェア資源にわたる制御を許可されてもよく、一方、第2のプログラムは、第2の部分内のこれらのハードウェア資源のみを認識し、その対話を第2の部分内のこれらのハードウェア資源に限定する。代替として、第1のプログラムに返される第1の値は、第1の部分内のハードウェア資源に対応し、第1のプログラムに、これらのハードウェア資源へのアクセスを与えてもよい。
【0009】
第1のプログラムおよび第2のプログラムは、プログラム命令実行回路によってサポートされる複数の特権レベル内の異なる特権レベルでしてもよい。この環境内で、資源制御回路は、第1の特権レベルで実行される第1のプログラムが、プログラム命令制御下で境界値を書き込むことを許可され、一方、第2の特権レベルで実行される第2のプログラムが、境界値を書き込むことを許可されないように構成されてもよい。このようにして、第1のプログラムは、第2のプログラムに提示されるハードウェア資源の表示を制御することができる。資源制御回路は、システムが第2の特権レベルであるとき、第1の部分内のハードウェア資源へのアクセスに対して異なる方法で応答するように構成されてもよい。一般的な意味で、資源制御回路は、第2の特権レベルで動作しているとき、プログラム実行回路が第1の特権レベルで動作しているときと比較してより少ない、第1の部分内のこれらのハードウェア資源へのアクセス権を与えることができる。この一実施例は、プログラム実行回路が第2の特権レベルで動作しているとき、第1の部分内のハードウェア資源へのアクセス権が与えられないということになる。
【0010】
第1のプログラムまたは第2のプログラムに返される、いくつのハードウェア資源が存在するかに関する問い合わせに対する厳密な応答は、様々である可能性がある。一実施形態では、第1のプログラムは、存在するハードウェア資源の数の真の値を返される場合があり、第2のプログラムは、境界値によって指定される値を返される場合がある。
【0011】
複数の特権レベルは、階層が下位の特権レベルと比較して、ハードウェア資源へのアクセス権の適切な上位集合を有する、階層が少なくともいくつかの特権レベル分高い特権レベルの階層を含むことができる。
【0012】
上記では、資源制御回路が応答する、1つの境界値を組み込む、システムが記載された。さらなる実施形態では、境界指示回路は、さらなる境界値を記憶し、そのさらなる境界値によって、第2の部分をさらなる第1の部分とさらなる第2の部分とに分割するように構成されてもよい。第2の特権レベルで動作しているとき、プログラムは、さらなる境界値を書き込むこと、およびいくつのハードウェア資源が存在するかに関する問い合わせに、さらなる第1の部分およびさらなる第2の部分内のこれらのハードウェア資源の合計に対応する値で応答することを許可される。同時に、第3の特権レベルで動作しているプログラムは、さらなる境界値を書き込むことを許可されず、いくつのハードウェア資源が存在するかに関する問い合わせに、さらなる第2の部分内のこれらのハードウェア資源に対応する値を返すように応答する。
【0013】
したがって、ハードウェア資源の第1の部分と第2の部分とへの分割は、階層的である場合があり、第2の部分がさらなる第1の部分とさらなる第2の部分とにさらに分割されるということが分かるであろう。同様に、さらなる第2の部分およびそれ以降を、追加の境界値でさらに細分割することができる。
【0014】
本技術によって管理されるハードウェア資源は、多種多様な異なる形態を取ることができることが理解されるであろうが、本技術は、ハードウェア資源が、メモリ管理ユニットの設定データへのポインタのテーブル内に複数のエントリを含む実施形態に非常に適している。
【0015】
そのような実施形態内で、設定データは、変換テーブルベースポインタレジスタ値と、不良アドレスおよびコンテキストレジスタ値と、変換ルックアサイドバッファ維持レジスタ値と、仮想アドレス対物理アドレス演算レジスタ値と、メモリ管理ユニット設定および制御レジスタ値と、変換テーブルベースポインタレジスタ値、不良アドレスおよびコンテキストレジスタ値、変換ルックアサイドバッファ維持レジスタ値、仮想アドレス対物理アドレス演算レジスタ値、ならびにメモリ管理ユニット設定および制御レジスタ値を含む、コンテキストバンク値と、バイパス属性レジスタ値と、前記第1のプログラムおよび前記第2のプログラムのうちの1つ以上によって開始されるアクティビティに応えてもたらされる割り込み出力と、データストリームをマッピングするためのトランザクション識別レジスタ値とのうちの1つ以上を含んでもよい。
【0016】
本技術が非常に適している他の実施形態では、複数のハードウェア資源は、複数の性能監視回路を備えることができる。これらの性能監視回路は、カウンタレジスタ、イネーブルレジスタ、オーバーフロー状態フラグ、およびオーバーフロー事象割り込みイネーブルレジスタのうちの1つ以上を備える、複数のカウンタと、複数の事象からカウントする事象を選択するための事象選択回路とのうちの1つ以上を備えてもよい。
【0017】
本技術を適用してもよい、複数のハードウェア資源のさらなる例は、複数のハードウェア資源が、全体としてアクセスされ、設定レジスタおよび状態レジスタのうちの1つである、レジスタの複数のフィールドを備え、複数のフィールドのそれぞれが、それぞれのさらなる資源を表し、境界値が、複数のフィールドのどれが第1のプログラムにアクセス可能であるか、および複数のフィールドのどれが第2のプログラムにアクセス可能であるかを特定するものである。
【0018】
この状況では、複数のハードウェア資源は、複数の性能監視回路のそれぞれ1つに対応する設定レジスタ内に、各ビットがその回路が有効にされるか否か等の対応する性能監視回路のいくつかの側面を制御する、ビットを備えることができる。これはまた、各ビットが、それを制御するというよりはむしろ、対応する回路のいくつかの側面を報告するとき、状態レジスタにも当てはまる。例えば、1回路につきビットのフィールドなどのように、多対1マッピングが存在する場合がある。
【0019】
本技術を適用することができるハードウェア資源のさらなる例は、複数のハードウェア資源が、第1のプログラムまたは第2のプログラムによる使用のための複数のレジスタを備える場合である。例として、これらのレジスタは、アクセスされているデータストリームと当該装置の関連処理コンテキストとの間で使用されるマッピングを記憶する、マッピングレジスタである場合がある。
【0020】
第2のプログラムが、第1の部分(すなわち、それが適切なアクセスを有さない部分)内のハードウェア資源を読み込むことを試みる場合、いくつかの実施形態では、ハードウェア資源のデフォルト値が返される場合がある。同様に、第2のプログラムが、第1の部分内のハードウェア資源に書き込むことを試みる場合、書き込みは、実施されず、例外(または故障)処理がトリガされる場合がある。
【0021】
前述の複数の異なる特権レベルは、種々の異なる形態および使用を有することができる。本技術を使用することができる一実施例では、複数の特権レベルは、仮想化基底ハードウェアに対してハイパーバイザプログラムが実行されるハイパーバイザ特権レベルと、オペレーティングシステムプログラムが実行されるオペレーティングシステム特権レベルとを含む。ハイパーバイザプログラムは、第1の部分内のこれらのハードウェア資源、および第2の部分内のこれらのハードウェア資源へのアクセスを有し、オペレーティングシステムプログラムは、第2の部分内のこれらの資源のみへのアクセスを有する。
【0022】
本技術を使用されてもよい別の例示的な環境は、複数の異なる特権レベルが、安全なプログラムが実行される安全なドメイン内の少なくとも1つの安全な特権レベルと、非安全なプログラムが実行される非安全なドメイン内の少なくとも1つの非安全な特権レベルとを含むものである。この状況では、安全なプログラムは、第1の部分内のこれらのハードウェア資源、および第2の部分内のこれらのハードウェア資源へのアクセスを有することができ、一方、非安全なプログラムは、第2の部分内のこれらのハードウェア資源へのアクセスのみを有する。
【0023】
資源制御回路ならびにハードウェア資源へのゲートアクセスは、境界値に基づいて、複数のハードウェア資源を再インデックス付けしてもよい。このようにして、異なるプログラムは、これらのインデックスがマップされる物理資源が、どの部分がアクセスされるか、および第1の部分と第2の部分との間の境界の位置によって異なるとしても、それらが、インデックス値のシーケンス内の設定されたインデックス値から開始するかのように、資源にアクセスしてもよい。
【0024】
別の側面から見ると、本発明は、前記複数のハードウェア資源手段のそれぞれが、前記シーケンス内の所定の位置を有するような所定のシーケンスを伴う、複数のハードウェア資源手段と、前記シーケンス内の境界位置を指示する境界値を記憶するための境界指示手段であって、前記境界位置は、前記シーケンスを、前記シーケンス内の前記境界位置の第1の側の第1の部分と、前記シーケンス内の前記境界位置の第2の側の第2の部分とに分割する、境界指示手段と、プログラム命令を実行するためのプログラム命令実行手段と、前記境界指示手段に連結される資源制御手段であって、前記プログラム実行手段が第1のプログラムを実行しているとき、前記複数のハードウェア資源手段のうちのいくつが前記装置内に存在するかを問い合わせる1つ以上のプログラム命令に、第1の値を返すように応答し、前記プログラム実行手段が第2のプログラムを実行しているとき、前記複数のハードウェア資源のうちのいくつが前記装置内に存在するかを問い合わせる1つ以上のプログラム命令に、前記第2の部分内のこれらのハードウェア資源手段に対応する値を返すように応答するための資源制御手段とを提供する。
【0025】
さらなる側面から見ると、本発明は、前記シーケンス内の境界位置を指示する境界値を記憶することであって、前記境界位置は、前記シーケンスを、前記シーケンス内の前記境界位置の第1の側の第1の部分と、前記シーケンス内の前記境界位置の第2の側の第2の部分とに分割する、境界値を記憶することと、前記プログラム実行回路が第1のプログラムを実行しているとき、前記複数のハードウェア資源のうちのいくつが前記装置内に存在するかを問い合わせる1つ以上のプログラム命令に、第1の値を返すように応答することと、前記プログラム実行回路が第2のプログラムを実行しているとき、前記複数のハードウェア資源のうちのいくつが前記装置内に存在するかを問い合わせる1つ以上のプログラム命令に、前記第2の部分内のこれらのハードウェア資源に対応する値を返すように応答することとを提供する。
【0026】
ここで、本発明の実施形態を、一例としてのみ、添付の図面を参照して説明し、図面は、以下の通りである。
【図面の簡単な説明】
【0027】
【図1】プログラム命令の制御下でデータを処理するための装置であって、異なる種類のハードウェア資源を含む、装置を図式的に示す図である。
【図2】境界レジスタ内に保持される境界値によって指定される境界で、第1の部分と第2の部分とに分割された、複数のハードウェア資源を図式的に示す図である。
【図3】レジスタ内の制御ビットであり、境界レジスタ内に保持される境界値によって第1の部分と第2の部分に分割された、複数の資源を図式的に示す図である。
【図4】異なる特権レベルで動作している異なるプログラムの階層を示す図である。
【図5】安全なドメインおよび非安全なドメインを有するシステムにおける、特権レベルの別の配設を示す図である。
【図6】第1の部分内のハードウェア資源へのアクセスの制御を示すフロー図である。
【図7】境界およびさらなる境界を用いた、ハードウェア資源の分割を示す図である。
【図8】異なる特権レベルのプログラムによって書き込まれたそれぞれの境界値に関して複数の資源を分割する、多重境界を図式的に示す図である。
【図9】複数のハードウェア資源を、メモリ管理ユニット設定の記憶位置へのポインタのテーブルの形態で示す図である。
【図10】資源サイズ指示を読み込むための回路を図式的に示す図である。
【図11】現在のウォーターマーキング技術が採用されるときの、資源を読み込むための回路を図式的に示す図である。
【図12】現在のウォーターマーキング技術が使用されるときに、資源を書き込むための回路を図式的に示す図である。
【発明を実施するための形態】
【0028】
図1は、複数のプログラムの制御下でデータを処理するための装置2を図式的に図示する。プログラムは、システムオンチップ集積回路6に連結される、メモリ4内に記憶される。集積回路6は、メモリ4から読み込まれるプログラム命令を実行する、プロセッサコア8を含む。集積回路6はまた、例えば、他のコンポーネント(図示せず)を接続するARM AXIバスを介して、システムレベルでメモリ4へのアクセスを制御するためのシステムメモリ管理ユニット(MMU)10も含む。集積回路6は、以下にさらに記載される技術に従って、異なるレベルの特権で実行される異なるプログラムに利用可能にされた、ハードウェア資源を含む。
【0029】
本実施例では、ハードウェア資源の1つの形態は、性能カウンタの形態の性能監視回路12を備える。これらの性能監視回路12(複数のハードウェア資源に対応する)と関連して、性能モニタ境界レジスタ14(境界指示回路)および性能モニタ制御回路16(資源制御回路)が提供される。性能モニタ境界レジスタ14は、性能監視回路12の第1の部分内の性能カウンタと、性能監視回路12の第2の部分内の性能カウンタとの間の分割を指示する境界値を記憶する。性能監視回路内の性能カウンタは、ハードウェア資源のそれぞれが、そのシーケンス内の所定の位置を有するような所定のシーケンスを有する。したがって、そのシーケンス内の点で境界を画定することによって、これは、どの性能カウンタがその境界の一方の側の第1の部分内に含まれるか、およびどの性能モニタがその境界の他方の側の第2の部分内に含まれるかを判定する場合がある。
【0030】
性能モニタ制御回路16に、プロセッサコア8が動作しており、処理命令を実行している、現在の特権レベルを指示する信号が供給される。性能モニタ制御回路16は、プロセッサコア8によって実行されるプログラムによって、ハードウェア資源(例えば、性能モニタまたは性能モニタの制御スイッチ)のうちの1つへのアクセスが試みられるとき、これが許可されるか否かを判定するように、この特権レベルに応答する。アクセスが許可される場合、これは、例えば、書き込みを行ってもよいこと、または読み込みを行ってもよいことが許可される。アクセスが許可されない場合、これは実施されず、デフォルト値を返す、例外処理をトリガする、読み込みは許可するが書き込みは許可しない、または単に書き込みを無視する等のデフォルトアクションが実施される場合がある。
【0031】
また、図1には、複数のコンテキストポインタ18を備える、別の種類のハードウェア資源も図示される。これらのコンテキストポインタは、その現在のコンテキスト/モードについてシステムMMU10をプログラムするためのコンテキストデータが、メモリ4内のどこに記憶されているかを指示する、アドレス値を記憶する。したがって、コンテキスト/モードの変更が行われるとき、この設定データはシステムMMU10のために作成され、即座にMMU10に取り込まれてもよく、現在のデータをメモリ4へと外に記憶することができる。コンテキスト/モードは、プロセッサコア8が、現在、ARM Trustzoneシステムの安全なドメイン内で動作しているか、または非安全なドメイン内で動作しているかに対応することができる。
【0032】
複数のコンテキストポインタ(所定のシーケンス、例えば、ポインタ番号を伴う複数のハードウェア資源)と関連して、コンテキストポインタを第1の部分および第2の部分に分割する境界値を記憶する、コンテキストポインタ境界レジスタ20、ならびにプロセッサコア8がプログラム命令によるコンテキストポインタ18へのアクセスを制御するように動作しているドメインに応答する、コンテキストポインタ制御回路22が提供される。性能監視回路12に関して前述されるように、コンテキストポインタ18は、コンテキストポインタ境界レジスタ20内に記憶されるコンテキストポインタ境界値によって、それらの所定のシーケンス内で、第1の部分と、第2の部分とに分割される。コンテキストポインタに応答する制御論理は、ハードウェア資源のうちのいくつが存在するかを問い合わせる実行中の第1のプログラム命令に、第1の部分内のコンテキストポインタの数、または第1の部分および第2の部分内のコンテキストポインタの合計であってもよい、第1の値を返すように応答する。第1の部分へのアクセスを有する第1のプログラムは、コンテキストポインタ境界レジスタ20内に境界値を書き込むことを許可される。コンテキストポインタ18の第2の部分へのアクセスを有する第2のプログラムは、コンテキストポインタ境界値を書き込むことを許可されず、存在するコンテキストポインタの数が返されることを問い合わせるとき、第2の部分からのコンテキストポインタの数に対応する値が返される。
【0033】
図2は、複数のハードウェア資源C0〜C7を図式的に図示する。これらのハードウェア資源24は、複数のハードウェア資源内のそれらの数値的位置に対応する、所定のシーケンスを有する。境界レジスタ26内に記憶される境界値は、このシーケンス内の境界位置を指示する。境界値は、変数であり、したがって、境界の位置は、境界レジスタ26に書き込むことによって変化する場合がある。
【0034】
図示される実施例では、ハードウェア資源の第1の部分は、レジスタC3〜C7を備える。ハードウェア資源の第2の部分は、レジスタC0〜C2に対応する。ハードウェア資源の第1の部分は、安全なドメイン内で実行される安全なプログラムのみアクセス可能である。ハードウェア資源の第2の部分は、安全なドメイン内で実行される安全なプログラム、および非安全なドメイン内で実行される非安全なプログラムの両方がアクセス可能である。当業者に周知であるように、安全なプログラムは、一般的に、少なく部分的に、集積回路6の基底ハードウェアアーキテクチャを仮想化すること、および保護された方法で、非安全なソフトウェアにサービスを提供するために、非安全なプログラムに仮想ハードウェアインターフェースを提供することを担当する。
【0035】
安全なプログラムおよび非安全なシステムの両方は、実装ごとに異なる場合があるため、利用可能なハードウェア資源24の数を問い合わせる必要がある。しかしながら、本技術に従って、そのような問い合わせに応えて返される値は、安全なドメイン内で実行される安全なプログラムが問い合わせを発行しているか否か、または非安全なドメイン内で動作している非安全なプログラムであるか否かによって異なる。安全なプログラムは、存在する資源の真の総数を返され、一方、非安全なプログラムは、第2の部分内に存在するこれらのハードウェア資源に対応する数を返される。このように、第1の部分内のハードウェア資源は、非安全なプログラムから隠され、安全なプログラムによる使用のために留保されてもよい。
【0036】
境界レジスタ26内に記憶される境界値によって制御される境界の位置は、境界レジスタ26に境界値を書き込むことによって変化する場合がある。安全なプログラムは、境界レジスタ26に書き込んでもよい。非安全なドメイン内の非安全なプログラムおよび他のプログラムは、境界レジスタ26に書き込むことを許可されない。
【0037】
システムMMU10は、プロセッサMMUがプロセッサ生成アクセスに対して提供するのと同様に、デバイス生成アクセスに対して、アドレス変換および保護サービスを提供する。システムMMUとの主な差は、サポートされる同時変換設定の数である。
【0038】
プロセッサMMUは、一般に、1回にソフトウェアの1つの「世界」の変換をサポートするという点において、1つの有効なコンテキストのみをサポートする。ハイパーバイザのようなソフトウェアの監視部分は、それがゲストOSの実行をタイムスライスするとき、この状態を切り替えるように調整し、各ゲストOSは、アプリケーションの実行をタイムスライスするときと同等の動作を実施する。
【0039】
システムMMU10は、短期間内/同時に多数のデバイスからのアクセスを変換することをサポートし、潜在的に、各デバイスに別個の変換/保護を提供する。
【0040】
例として、ARM TrustZone技術を配備するシステムを使用して、システムMMU10は、デバイスの2つのセット、
1.安全なソフトウェアによって設定されるこれらのデバイス
2.非安全なソフトウェアによって設定されるこれらのデバイス
からのトランザクションを変換することをサポートすることができる。
【0041】
トランザクションを変換するプロセスは、変換プロセスを設定するいくつかのコンテキスト(例えば、変換テーブルベースポインタレジスタ、変換テーブル制御レジスタ)を要求する。システムMMU10の下で、望まれる変換の各異なるセットは、別個の変換コンテキストを要求する。システムMMU10は、したがって、変換コンテキストのプールを提供し、これは、システムMMU10が、安全なソフトウェアと非安全なソフトウェアとの間でこれらのコンテキストを簡単に共有することができる方法を見出すのに望ましい。
【0042】
ARM TrustZone技術を配備するシステムを用いたセキュリティに対する手法と一致して、非安全なソフトウェアは、安全に所有される変換コンテキストを観察すること、またはそれに影響を及ぼすことが可能であるべきではない。さらに、非安全なソフトウェアは、安全なソフトウェアがシステムMMUによって提供されるサービスを使用する必要性を有する場合、変換コンテキストのすべてを要求することが可能であってはならない。提案される解決策は、変換コンテキストのプールを2つのセット、1つは安全なソフトウェアのためのものであり、1つは非安全なソフトウェアのためのものである、に分割する、境界レジスタを実装することである。この手法は、非安全なソフトウェアに、コンテキストプールの適切な部分への直接アクセスを提供し、安全なソフトウェアの介在が不要であるという利点を有する。
【0043】
このシステムMMUにおけるさらなる利点の例は、資源が第1の部分にあるか、または第2の部分にあるかによって、資源の異なる挙動が望まれる場合である。例えば、第1の部分内にある変換コンテキストは、第2の部分内にある変換コンテキストとは異なるフォーマットを有することができる。このフォーマットは、資源が、両方のフォーマットをサポートすることができ、それらが第1の部分内に含まれるか、または第2の部分内に含まれるかに基づいて、それらがどちらのフォーマットを提示するかを選択するように設計されるというように、境界値に依存して選択することができる。
【0044】
システムMMU10では、変換コンテキストを2つのグループ(安全、非安全)に分割するために境界値を使用することに加えて、非安全なグループ内の変換コンテキストは、さらなる境界値を使用して、2つの部分に分割される。これらの部分は、それぞれ、仮想アドレスから中間物理アドレスへの変換、および中間物理アドレスから物理アドレスへの変換を提供する、第1または第2の段階変換コンテキストフォーマットのいずれかを提供する。第1の段階変換コンテキストフォーマットは、ゲストOSによる使用のために提供され、第2の段階変換コンテキストフォーマットは、ハイパーバイザに提供される。システムMMU10はさらに、第1の段階変換の出力が、第2の段階変換の入力に供給され、したがって、仮想化システムのコンテキスト内で仮想アドレスから物理アドレスへのアドレス変換を実施する、ネスト化変換のために構成されてもよい。
【0045】
ハイパーバイザは、第1の段階変換を実施する非安全なグループ内の部分へのアクセスを、それが仮想化しているゲストOSに許可してもよく、第2の段階変換を実施する部分は、ゲストOSがアクセス不可能である。
【0046】
図3は、本技術に従って管理することができる、複数のハードウェア資源の別の例を図示する。本実施例では、複数のハードウェア資源は、制御レジスタ内に、全体としてアクセスされる(すなわち、全体として読み込まれる、または書き込まれる)制御ビットを備える。図3に示されるこのレジスタ内のビットのそれぞれは、対応する性能モニタ(例えば、性能カウンタ回路)が有効にされるか、または無効にされるかを制御する働きをする。境界レジスタ28内に記憶される境界値は、性能モニタイネーブルレジスタ30内のビットを、第1の部分と第2の部分とに分割する。第1の部分内のイネーブルビットは、ハイパーバイザプログラムによって、読み込みおよび書き込みアクセスが行われるが、ゲストオペレーティングシステムによって有効にアクセスされない場合がある。アクセスが許可されないときのデフォルトアクションの例として、ゲストオペレーティングシステムによるこれらのビットのうちの1つへの書き込みは、無視され、ゲストオペレーティングシステムによって、これらのビットのうちの1つの読み込みが行われる場合、ハイパーバイザによって設定されるものとして考慮される当該ビットの実際の値が何であるかに関わらず、「0」の値が返される(または実際の値が返される場合がある)。イネーブルレジスタ30の第2の部分は、ハイパーバイザプログラムおよびゲストオペレーティングシステムによって、読み込みアクセスおよび書き込みアクセスの両方が行われる。
【0047】
本実施例では、性能モニタイネーブルレジスタ30内のイネーブルビットは、境界レジスタ28内に記憶される境界値の制御下で選択的アクセスが与えられる、ハードウェア資源であることが分かる。また、基底性能カウンタは、選択されたアクセスが許可される、ハードウェア資源でもある。
【0048】
これらの技術の別の考えられる機能は、グローバル制御レジスタ(ハードウェア機能、例えば、動的電圧スケーリングにおける切り替え、のためのグローバルイネーブルレジスタ等)の供給であり、これらは、資源供給に分割が存在するとき、シャドー値を得る。したがって、単一のグローバルイネーブルレジスタ(ゲストオペレーティングシステムに提示される仮想マシンのプログラマモデルである)の代わりに、第1の部分を制御する第1のグローバルイネーブルレジスタ、および第2の部分を制御する第2のグローバルイネーブルレジスタの2つが存在する。第2のイネーブルレジスタは、仮想マシンのグローバルイネーブルに対応する。
【0049】
図4は、プロセッサ6が実行されてもよい、複数のプログラムの配設を図式的に図示する。ハイパーバイザプログラム32は、2つの基底ゲストオペレーティングシステム34、36に対するプロセッサ6の仮想化を担当する。これらのゲストオペレーティングシステム34、36のそれぞれは、ゲストオペレーティングシステム34、36に、物理プロセッサ6の真の物理形態ではない場合がある、仮想プロセッサに対応する環境を与えるために、ハイパーバイザプログラム32によって管理される、プロセッサ6へのインターフェースを提供される。例として、プロセッサ6は、ゲストオペレーティングシステム34、36がアクセスを許可されるハードウェア資源より大きい数のハードウェア資源を有し、制御してもよく、これらのハードウェア資源のうちのいくつかは、ハイパーバイザ32による使用のために留保しておく。ゲストオペレーティングシステム34、36が利用可能なハードウェア資源の数を問い合わせるとき、これは、存在するハードウェア資源の数の真の値を表さない値を返される。
【0050】
また、それぞれのゲストオペレーティングシステム34、36の制御下で実行される、それぞれのアプリケーションプログラムが、図示される異なるプログラムに関連付けられる、異なるレベルの特権、すなわち、ハイパーバイザレベルの特権、特権が与えられたレベルの特権、およびユーザレベルの特権と共に、図4に図示される。この配設は、当業者に周知であろう。
【0051】
図5は、異なるレベルの特権を伴う、異なるプログラムの配設の別の実施例を図示する。図5の配設では、また、安全なドメインSおよび非安全なドメインNSも存在する。安全なドメイン内に、特権が与えられたレベルの特権で動作する特権が与えられたレベルコード38、およびユーザレベルの特権で動作するユーザコード40が存在する。非安全なドメイン内に、同様に、特権が与えられたレベルの特権で動作する特権が与えられたコード42、およびユーザレベルの特権で動作するユーザコード44が存在する。この環境内では、安全なドメイン内で実行されるプログラムコードのみが、ハードウェア資源の第1の部分へのアクセスを有し、一方、非安全なドメイン内で実行されるプログラムコードは、この第1の部分内のハードウェア資源へのアクセスを有さない。
【0052】
図6は、ハードウェア資源へのアクセス要求に応えて実施される、処理制御を図示する、フロー図である。この処理制御は、図1の性能モニタ制御回路16またはコンテキストポインタ制御回路22によって実施される。
【0053】
ステップ46で、プロセスは、ハードウェア資源へのアクセスが受信されるまで待機する。ステップ48で、当該ハードウェア資源が複数のハードウェア資源の第1の部分内であるか否かについての判定が行われる。この判定は、アクセスが行われるハードウェア資源のインデックス値と性能モニタ境界レジスタ14またはコンテキストポインタ境界レジスタ20のいずれかにおいて指定される現在の境界値との間での比較によって行われてもよい。
【0054】
アクセスが第1の部分内のハードウェア資源へのものではない場合、処理は、ステップ50へ進み、そこで当該アクセスが許可される。第1の部分内へのアクセスではないアクセスは、第1のプログラムおよび第2のプログラムの両方が、それらの特権レベルに関わらず、アクセスを有する、第2の部分内へのアクセスになる。
【0055】
ステップ48での判定が、アクセスは第1の部分内のハードウェア資源へのものであるという場合、ステップ52は、プロセッサ6の現在の動作モードがハイパーバイザモードであるか否かを判定する。現在の動作モードがハイパーバイザモードである場合、ステップ50で、当該アクセスが許可され、実施される。現在のモードがハイパーバイザモードではない場合、処理は、ステップ54に進む。ハイパーバイザモードとは、プログラムが第1の部分内のハードウェア資源へのアクセスが許可されるものである場合に実行されなければならないモードである。
【0056】
ステップ54は、当該アクセスが読み込みアクセスであるか否かを判定する。アクセスが読み込みアクセスである場合、ステップ56は、真の値の代わりに、デフォルト値、例えば「0」を返す。ステップ54で、アクセスが読み込みアクセスではないと判定される場合、ステップ58は、フォルトを生成し、書き込みアクセスを無視する。書き込みを無視し、読み込みに関する実際の値を返す等の他のデフォルトアクションもまた、可能である。
【0057】
図7は、本技術によって、どのようにハードウェア資源を2つ以上の境界を用いて分割されてもよいかを図式的に図示する。ハイパーバイザによって書き込まれる第1の境界は、ハードウェア資源を、ハイパーバイザのみがアクセス可能である第1の部分と、ハイパーバイザおよびゲストオペレーティングシステムの両方がアクセス可能である第2の部分とに分割する。ハイパーバイザまたはゲストオペレーティングシステムのいずれかによって書き込まれる、さらなる境界値は、第2の部分を、さらなる第1の部分と、さらなる第2の部分とに分割する。さらなる第1の部分は、ハイパーバイザプログラムおよびゲストオペレーティングシステムプログラムの両方がアクセス可能である。さらなる第2の部分は、ハイパーバイザプログラム、ゲストオペレーティングシステムプログラム、およびユーザプログラムがアクセス可能である。
【0058】
ユーザレベルの特権のユーザプログラムが、存在するハードウェア資源の数を問い合わせるとき、さらなる第2の部分内のハードウェア資源の数に対応する値が返される。特権が与えられたレベルの特権で動作するゲストオペレーティングシステムが、存在するハードウェア資源の数を問い合わせるとき、第2の部分内のハードウェア資源の数に対応して値が返される。ハイパーバイザプログラムが、特権のハイパーバイザモード内のその位置から、存在するハードウェア資源の数に関する問い合わせを発行するとき、第1の部分および第2の部分内のハードウェア資源の数の合計に対応する、ハードウェア資源の数の真の値が返される。
【0059】
存在する資源の数に関する問い合わせに応えて異なる値を返すことに加えて、資源制御回路16、22は、各プログラムのアクセスが、物理的に存在するハードウェア資源の真のシーケンス内のそれらの実際の位置に関わらず、同一の所与の点(インデックス値)で開始するように見えるように、ハードウェア資源を再インデックス付けする。したがって、例えば、各プログラムは、実行されている特権がどのようなレベルであれ、およびハードウェア資源のどの部分へのアクセスが許可されていようとも、すべてが固定値で開始する、例えば、インデックスのすべてが、真の物理ハードウェア資源内のそれらの位置に関わらず、値「0」で開始し、この値から上方に拡張してもよい、これらのハードウェア資源のインデックスを提供される。図2の実施例では、第2の部分のインデックスは、必然的に、「0」をルートとし、第1の部分のエントリは、「0」で開始するように再インデックス付けされる。
【0060】
図8は、ハードウェア資源の異なる部分への分割のさらなる実施例を図示する。本実施例では、それぞれがハードウェア資源をさらに細分割する働きをする、4つの境界値が図示される。与えられる実施例では、特権は、0番目のレベルから3番目のレベルに拡張し、0番目のレベル境界値は、0番目のレベルの特権で動作するプログラムによってのみ書き込まれることが許可されている。1番目のレベル境界値は、特権の第1のレベル以上のプログラムによって書き込むことができる。同様に、さらなる境界値は、それらの対応するレベルの特権がアクセスを有するハードウェア資源の部分を、さらなる第1の部分と、第2の部分とに細分割し、境界値を用いた分割は、対応する特権のレベル以上で実行されるプログラムによって書き込み可能である、境界の位置を固定する。したがって、ハードウェア資源の細分割の階層は、それぞれの特権のレベルで書き込み可能である複数の境界値を用いて作成さてもよいことが、図8から分かるであろう。
【0061】
図9は、この場合、メモリ管理ユニット(MMU)のコンテキストデータを記憶するメモリアドレスへのポインタのテーブルに対応する、ハードウェア資源の別の例を図式的に図示する。第1の部分と第2の部分との間の境界は、オーバーライドレジスタ60内に記憶される。このオーバーライドレジスタ60は、ハイパーバイザレベルの特権で実行されるハイパーバイザプログラムによってのみ書き込むことができる。ハイパーバイザサイズレジスタ62は、図9の第1の部分および第2の部分内に含まれるレジスタの真の総数を指示する値を記憶する。特権が与えられたレベルの特権で実行されるゲストオペレーティングシステムプログラムによって読み込まれるとき、利用可能なポインタ値の数の値を返す、ゲストオペレーティングシステムサイズレジスタ64が提供される。ゲストオペレーティングシステムサイズレジスタ64内に記憶される、このゲストオペレーティングシステムサイズは、位置66に対応するデフォルト値を有する。オーバーライドレジスタ60が、ハイパーバイザプログラムによって、境界をデフォルト位置66以外の位置にずらす、異なる値が書き込まれていない限り、ゲストオペレーティングシステムからの読み込みに応えて、このデフォルト値が返される。これは、図9に図示される状況である。したがって、ゲストオペレーティングシステムにハードウェア資源のデフォルト数を提供することができ、ハイパーバイザプログラムは、適切な場合、より多くのハードウェア資源をゲストオペレーティングシステムに選択的に提供することができる。
【0062】
本実施例では、ゲストオペレーティングシステムによって使用されるポインタ値は、ハイパーバイザによって要求されるものより小さい。したがって、通常、ハイパーバイザのみが使用することができるポインタが、ゲストオペレーティングシステムによる使用のために割り当てられる場合、それらは、ゲストオペレーティングシステムに対するより小さいポインタを記憶するために必要とされるビット空間を超える、余剰のビット空間を有する。この余分な空間は、単に無視することができる。
【0063】
図10は、資源サイズ指示回路を図式的に図示する。提供されるハードウェア資源は、レジスタのプール68である。一定値または読み込み専用値を記憶する、サイズ指示レジスタ70は、当該システムに実装されるレジスタの総数を指示する値を指す。より多くの特権が与えられたレベルコードによって書き込み可能である、境界レジスタ72は、より低いレベルの特権で動作しているときに資源サイズ指示として提供される、境界位置を指示する。マルチプレクサ74は、現在の、より多くの特権が与えられたレベルのアクセスであることを指示する、多重切り替え信号に基づいて、サイズデータの読み込み要求に応えて、サイズ指示レジスタ70内に記憶される値を提供することと境界レジスタ72内に記憶される値を提供することとの間で切り替える。したがって、ソフトウェアの観点から、サイズ指示は、常に固定レジスタ内に記憶されているものと見なすことができるが、レジスタが読み込まれるとき、返される値は、システムが動作している特権の現在のモードによって、サイズ指示レジスタ70または境界レジスタ72のいずれかからのものである。より多くの特権が与えられたレベルのコードは、境界レジスタ72に書き込むことができ、したがって、より少ない特権が与えられたレベルのコードによって見られる資源サイズを変化させることができる。サイズ指示レジスタ内に記憶される値は、ハードウェア実装に固有である場合があり、より多くの特権が与えられたレベルのコードによって使用される値を返すことができる。
【0064】
図11は、資源のうちの1つを読み込むための回路を図式的に図示する。マルチプレクサ76は、復号されたアドレスに基づいて、読み込む資源レジスタのうちの1つを選択する。しかしながら、さらなるマルチプレクサ78は、読み込まれている資源が、そのモードで利用可能である資源レジスタの範囲外である場合、読み込まれている資源のコンテンツの固定のデフォルト値を返す。したがって、マルチプレクサ78は、システムがより多くの特権が与えられたアクセスモードで動作しているか、またはアクセスされている資源のアドレスが、より低いレベルの特権アクセスで動作しているときにシステムが利用可能である資源アドレスの範囲の制限として設定される、境界レジスタ内に記憶される値以下であるかのいずれかではない限り、デフォルト値を読み込みデータ出力に切り替える。
【0065】
図12は、資源68に書き込むための回路を図式的に図示する。この配設では、書き込みのアドレスは、書き込みイネーブルとして資源68内のレジスタのうちの適切な1つに供給される、ワンホット信号を生成する、デコーダ80に送信される。デコーダ80からのこの信号は、アクセス制御ANDゲート82からのさらなる信号とAND演算される。アクセス制御ANDゲート82は、書き込みイネーブル信号と、システムがより多くの特権が与えられたモードのアクセスで動作しているか、またはアクセスされているレジスタのアドレスがより低いレベルの特権でアクセス可能であるレジスタに対する境界位置以下であるかを指示する信号とともにANDをとる。したがって、より多くの特権が与えられたレベルのアクセスで、任意のレジスタを書き込むことができ、一方、より低いレベルの特権は、境界以下のレジスタを書き込むことができる。より低いレベルの特権で許可される範囲外のレジスタへの書き込みは、書き込みデータがレジスタの入力に適用されるとしても、書き込みイネーブル信号が生成されないため、単に無視される。
【0066】
図9のポインタによって指される設定データは、種々の異なる形態を取ることができる。この設定データは、図1のメモリ管理10によって使用される。設定データは、変換テーブルベースポインタレジスタ値と、
不良アドレスおよびコンテキストレジスタ値と、変換ルックアサイドバッファ維持レジスタ値と、仮想アドレス対物理アドレス演算レジスタ値と、メモリ管理ユニット設定および制御レジスタ値と、変換テーブルベースポインタレジスタ値、不良アドレスおよびコンテキストレジスタ値、変換ルックアサイドバッファ維持レジスタ値、仮想アドレス対物理アドレス演算レジスタ値、ならびにメモリ管理ユニット設定および制御レジスタ値を含む、コンテキストバンク値と、バイパス属性レジスタ値と、前記第1のプログラムおよび前記第2のプログラムのうちの1つ以上によって開始されるアクティビティに応えてもたらされる割り込み出力と、データストリームをマッピングするためのトランザクション識別レジスタ値とのうちの1つ以上を含むことができる。
【0067】
図1および図3に関して記載される性能監視回路は、種々の異なる形態を有することができる。性能監視回路は、1つ以上のカウンタレジスタ、イネーブルレジスタ、オーバーフロー状態フラグ、およびオーバーフロー事象割り込みイネーブルレジスタを備える、複数のカウンタのうちの1つ以上を備えることができる。性能監視回路はさらに、または代替として、複数の事象内からカウントする事象を選択するための事象選択回路を備えることができる。この状況内で、装置は、カウンタレジスタ、イネーブルレジスタ、オーバーフロー状態フラグ、およびオーバーフロー事象割り込みイネーブルレジスタのうちの1つ以上を備える、複数のカウンタと、
複数の事象からカウントする事象を選択するための事象選択回路とをさらに含有することができる。これらの要素は、図3の配設の物理的実装を提供するのに役立つ場合がある。図3に論理的に図示される性能モニタイネーブルレジスタ30は、実際には、上述される様々なイネーブルレジスタによって物理的に提供することができる。
【0068】
本技術を適用することができるハードウェア資源の別の形態は、第1のプログラムまたは第2のプログラムによる使用のための複数のレジスタである。これらのレジスタは、例えば、アクセスされているデータストリームと装置の関連する処理コンテキストとの間で使用されるマッピングを記憶する、複数のマッピングレジスタである場合がある。したがって、装置がコンテキストを切り替えるとき、これは、システムのハードウェア資源のうちの1つを備える物理レジスタ内に記憶されるため、新しいコンテキストが新しいマッピングを即座に利用できるようにすることができる。
【0069】
デバッグ/診断事象生成資源の管理に、本技術をさらに使用することができる。例えば、本技術に従って、物理的に提供されるブレークポイントおよびウォッチポイント資源を、仮想化階層内のより低いレベルで実行されるプログラムに対して仮想化することができる。これらのブレークポイントおよびウォッチポイント資源は、一実施例では、ブレークポイントコンパレータおよびウォッチポイントコンパレータである場合がある。本技術に従って管理されてもよい診断資源の他の例は、プロセッサ6の追跡データ生成ユニット内のアドレスコンパレータである場合がある。本技術に従って管理されてもよい資源の他の例は、当業者に明らかであろう。
【符号の説明】
【0070】
2 複数のプログラムの制御下でデータを処理するための装置
4 メモリ
6 システムオンチップ集積回路
8 プロセッサコア
10 システムメモリ管理ユニット(MMU)
12 性能監視回路
14 性能モニタ境界レジスタ(境界指示回路)
16 性能モニタ制御回路(資源制御回路)
18 コンテキストポインタ
20 コンテキストポインタ境界レジスタ
22 コンテキストポインタ制御回路


【特許請求の範囲】
【請求項1】
複数のプログラムの制御下でデータを処理するための装置であって、
複数のハードウェア資源のそれぞれが、シーケンス内の所定の位置を有するような所定の前記シーケンスを伴う、複数のハードウェア資源と、
前記シーケンス内の境界位置を指示する境界値を記憶するように構成される、境界指示回路であって、前記境界位置は、前記シーケンスを、前記シーケンス内の前記境界位置の第1の側の第1の部分と、前記シーケンス内の前記境界位置の第2の側の第2の部分とに分割する、境界指示回路と、
プログラム命令を実行するように構成される、プログラム命令実行回路と、
前記境界指示回路に連結された資源制御回路であって、
前記プログラム実行回路が第1のプログラムを実行しているとき、前記複数のハードウェア資源のうちのいくつが前記装置内に存在するかを問い合わせる1つ以上のプログラム命令に、第1の値を返すように応答し、
前記プログラム実行回路が第2のプログラムを実行しているとき、前記複数のハードウェア資源のうちのいくつが前記装置内に存在するかを問い合わせる1つ以上のプログラム命令に、前記第2の部分内のこれらのハードウェア資源に対応する値を返すように応答するように構成される、資源制御回路と、
を備える、装置。
【請求項2】
前記第1の値は、前記第1の部分および前記第2の部分内のこれらのハードウェア資源の合計に対応する、請求項1に記載の装置。
【請求項3】
前記第1の値は、前記第1の部分内のこれらのハードウェア資源に対応する、請求項1に記載の装置。
【請求項4】
前記プログラム命令実行回路は、複数の特権レベルのうちの選択可能な1つで動作するように構成され、前記複数の特権レベル内の異なる特権レベルは、前記複数のハードウェア資源への異なるアクセス権を有し、
前記資源制御回路は、
前記プログラム実行回路が前記第1のプログラムを実行する第1の特権レベルで動作しているとき、プログラム命令制御下で前記境界値が書き込まれることを許可し、
前記プログラム実行回路が前記第2のプログラムを実行する第2の特権レベルで動作しているとき、プログラム命令制御下で前記境界値が書き込まれることを許可しない、
ように構成される、
請求項1に記載の装置。
【請求項5】
前記資源制御回路は、前記プログラム実行回路が前記第2の特権レベルで動作しているとき、前記第1の部分内のハードウェア資源にアクセスすることを求める1つ以上のプログラム命令が、前記プログラム実行回路が前記第1の特権レベルで動作しているときより少ない、前記第1の部分内の前記ハードウェア資源へのアクセス権を許可されるように構成される、請求項4に記載の装置。
【請求項6】
前記プログラム実行回路が前記第2の特権レベルで動作しているとき、前記第1の部分内のハードウェア資源にアクセスすることを求める前記1つ以上のプログラム命令は、前記第1の部分内の前記ハードウェア資源へのアクセス権を許可されない、請求項5に記載の装置。
【請求項7】
前記複数のハードウェア資源のうちのいくつが前記装置内に存在するかを問い合わせるとき、前記第1のプログラムの前記1つ以上のプログラム命令は、前記複数のハードウェア資源のうちのいくつが前記装置内に存在するかについての真の値を返し、前記複数のハードウェア資源のうちのいくつが前記装置内に存在するかを問い合わせる、前記第2のプログラムの前記1つ以上のプログラム命令は、前記境界値によって指定される値を返す、前述の請求項のうちのいずれか一項に記載の装置。
【請求項8】
前記複数の特権レベルは、特権レベルの階層を備え、前記第1の特権レベルは、前記第2の特権レベルより前記階層が上位であり、前記階層内の特権の任意の所与のレベルは、前記所与のレベルより前記階層が下位の任意の特権レベルと比較して、前記ハードウェア資源へのアクセス権の適切な上位集合を有する、請求項5に記載の装置。
【請求項9】
前記境界指示回路は、さらなる境界値を記憶するように構成され、前記さらなる境界値は、第2の部分を、さらなる第1の部分と、さらなる第2の部分とに分割し、前記資源制御回路は、
前記プログラム実行回路が前記第2の特権レベルで動作しているとき、プログラム命令制御下で前記さらなる境界値が書き込まれることを許可し、前記複数のハードウェア資源のうちのいくつが前記装置内に存在するかを問い合わせる1つ以上のプログラム命令に、前記さらなる第1の部分および前記さらなる第2の部分内のこれらのハードウェア資源の合計に対応する値を返すように応答し、
前記プログラム実行回路が第3の特権レベルで動作しているとき、プログラム命令制御下で前記さらなる境界値が書き込まれることを許可せず、前記複数のハードウェア資源のうちのいくつが前記装置内に存在するかを問い合わせる1つ以上のプログラム命令に、前記さらなる第2の部分内のこれらのハードウェア資源に対応する値を返すように応答するように構成される、
前述の請求項のうちのいずれか一項に記載の装置。
【請求項10】
前記境界指示回路は、N個のさらなる境界値を記憶するように構成され、Nは、ゼロではない正の整数であり、前記N個のさらなる境界値は、前記境界値で開始する、境界値のシーケンスを形成し、前記境界値のシーケンス内のn番目の境界値は、前記境界値のシーケンス内の(n−1)番目の境界値によって画定される第2の部分を、n番目の第1の部分と、n番目の第2の部分とに分割し、前記資源制御回路は、
前記プログラム実行回路が前記n−1番目の境界値に関して第2の特権レベルで動作しているとき、プログラム命令制御下で前記n番目の境界値境界値が書き込まれることを許可し、前記複数のハードウェア資源のうちのいくつが前記装置内に存在するかを問い合わせる1つ以上のプログラム命令に、前記n番目の第1の部分および前記n番目の第2の部分内のこれらのハードウェア資源の合計に対応する値を返すように応答し、
前記プログラム実行回路が前記n番目の境界値に関して第2の特権レベルで動作しているとき、プログラム命令制御下で前記n番目の境界値境界値が書き込まれることを許可せず、前記複数のハードウェア資源のうちのいくつが前記装置内に存在するかを問い合わせる1つ以上のプログラム命令に、前記n番目の第2の部分内のこれらのハードウェア資源に対応する値を返すように応答する、
ように構成される、
請求項1〜8のうちのいずれか一項に記載の装置。
【請求項11】
前記複数のハードウェア資源は、メモリ管理ユニットの設定データへのポインタのテーブル内に複数のエントリを含む、前述の請求項のうちのいずれか一項に記載の装置。
【請求項12】
前記設定データは、
変換テーブルベースポインタレジスタ値と、
不良アドレスおよびコンテキストレジスタ値と、
変換ルックアサイドバッファ維持レジスタ値と、
仮想アドレス対物理アドレス演算レジスタ値と、
メモリ管理ユニット設定および制御レジスタ値と、
変換テーブルベースポインタレジスタ値、不良アドレスおよびコンテキストレジスタ値、変換ルックアサイドバッファ維持レジスタ値、仮想アドレス対物理アドレス演算レジスタ値、ならびにメモリ管理ユニット設定および制御レジスタ値を含む、コンテキストバンク値と、
バイパス属性レジスタ値と、
前記第1のプログラムおよび前記第2のプログラムのうちの1つ以上によって開始されるアクティビティに応えてもたらされる、割り込み出力と、
データストリームをマッピングするためのトランザクション識別レジスタ値と、
のうちの1つ以上を含む、
請求項11に記載の装置。
【請求項13】
前記複数のハードウェア資源は、複数の性能監視回路を備える、請求項1〜10のうちのいずれか一項に記載の装置。
【請求項14】
前記複数の性能監視回路は、
カウンタレジスタ、イネーブルレジスタ、オーバーフロー状態フラグ、およびオーバーフロー事象割り込みイネーブルレジスタのうちの1つ以上を備える、複数のカウンタと、複数の事象からカウントする事象を選択するための事象選択回路と、
のうちの1つ以上を備える、請求項13に記載の装置。
【請求項15】
前記複数の性能監視回路を選択的に有効にするためのグローバルイネーブルレジスタと、
前記第1の部分内の前記複数の性能監視回路を選択的に有効にするための前記第1のプログラムがアクセス可能なシャドーグローバルイネーブルレジスタ、ならびに前記第2の部分内の前記複数の性能監視回路を選択的に有効にするための前記第1のプログラムおよび前記第2のプログラムがアクセス可能な構築されたグローバルイネーブルレジスタと、
のうちの1つ以上を備える、請求項13に記載の装置。
【請求項16】
前記複数のハードウェア資源は、全体としてアクセスされ、設定レジスタおよび状態レジスタのうちの1つである、レジスタの複数のフィールドを備え、前記複数のフィールドのそれぞれは、それぞれのさらなる資源を表し、前記境界値は、前記複数のフィールドのどれが前記第1のプログラムがアクセス可能であるか、および前記複数のフィールドのどれが前記第2のプログラムがアクセス可能であるかを指定する、請求項1〜10のうちのいずれか一項に記載の装置。
【請求項17】
前記複数のハードウェア資源は、複数の性能監視回路のそれぞれ1つに対応する設定レジスタ内に、1つ以上のビットのフィールドを備え、各フィールドは、前記複数の性能監視回路のうちの対応する性能監視回路が有効にされるか否かを制御する、請求項16に記載の装置。
【請求項18】
前記複数のハードウェア資源は、前記第1のプログラムまたは前記第2のプログラムによる使用のための複数のレジスタを備える、請求項1〜10のうちのいずれか一項に記載の装置。
【請求項19】
前記複数のハードウェア資源は、アクセスされているデータストリームと前記装置の関連処理コンテキストとの間で使用されるマッピングを記憶する、複数のマッピングレジスタを備える、請求項1〜10のうちのいずれか一項に記載の装置。
【請求項20】
前記複数のハードウェア資源は、複数のブレークポイントレジスタおよび複数のウォッチポイントレジスタのうちの少なくとも1つを備える、請求項1〜10のうちのいずれか一項に記載の装置。
【請求項21】
前記第2のプログラムが、前記第2の部分内のハードウェア資源を読み込むことを試みる場合、前記ハードウェア資源のデフォルト値が返される、前述の請求項のうちのいずれか一項に記載の装置。
【請求項22】
前記第2のプログラムが、前記第2の部分内のハードウェア資源に書き込むことを試みる場合、前記書き込みは、実施されない、前述の請求項のうちのいずれか一項に記載の装置。
【請求項23】
前記第2のプログラムが、前記第2の部分内のハードウェア資源にアクセスすることを試みる場合、前記アクセスは、却下され、例外処理が呼び出される、請求項1〜15のうちのいずれか一項に記載の装置。
【請求項24】
前記複数の異なる特権レベルは、ハイパーバイザプログラムが実行されるハイパーバイザ特権レベルと、オペレーティングシステムプログラムが実行されるオペレーティングシステム特権レベルとを含み、前記ハイパーバイザプログラムは、前記第1の部分内のこれらのハードウェア資源、および前記第2の部分内のこれらのハードウェア資源へのアクセスを有し、前記オペレーティングシステムプログラムは、前記第2の部分内のこれらのハードウェア資源へのアクセスを有する、請求項1〜8のうちのいずれか一項に記載の装置。
【請求項25】
前記複数の異なる特権レベルは、安全なプログラムが実行される、安全なドメイン内の少なくとも1つの安全な特権レベルと、非安全なプログラムが実行される、非安全なドメイン内の少なくとも1つの非安全な特権レベルとを含み、前記安全なプログラムは、前記第1の部分内のこれらのハードウェア資源、および前記第2の部分内のこれらのハードウェア資源へのアクセスを有し、前記非安全なプログラムは、前記第2の部分内のこれらのハードウェア資源へのアクセスを有する、請求項1〜8のうちのいずれか一項に記載の装置。
【請求項26】
前記資源制御回路は、前記境界値に基づいて、前記複数のハードウェア資源を再インデックス付けする、前述の請求項のうちのいずれか一項に記載の装置。
【請求項27】
複数のプログラムの制御下でデータを処理するための装置であって、
複数のハードウェア資源手段のそれぞれが、シーケンス内の所定の位置を有するような所定の前記シーケンスを伴う、複数のハードウェア資源手段と、
前記シーケンス内の境界位置を指示する境界値を記憶するための境界指示手段であって、前記境界位置は、前記シーケンスを、前記シーケンス内の前記境界位置の第1の側の第1の部分と、前記シーケンス内の前記境界位置の第2の側の第2の部分とに分割する、境界指示手段と、
プログラム命令を実行するためのプログラム命令実行手段と、
前記境界指示手段に連結される資源制御手段であって、
前記プログラム実行手段が第1のプログラムを実行しているとき、前記複数のハードウェア資源手段のうちのいくつが前記装置内に存在するかを問い合わせる1つ以上のプログラム命令に、第1の値を返すように応答し、
前記プログラム実行手段が第2のプログラムを実行しているとき、前記複数のハードウェア資源のうちのいくつが前記装置内に存在するかを問い合わせる1つ以上のプログラム命令に、前記第2の部分内のこれらのハードウェア資源手段に対応する値を返すように応答するための資源制御手段と、
を備える、装置。
【請求項28】
複数のハードウェア資源のそれぞれが、シーケンス内の所定の位置を有するような所定の前記シーケンスを伴う、前記複数のハードウェア資源を有する、装置を用いて、複数のプログラムの制御下でデータを処理する方法であって、
前記シーケンス内の境界位置を指示する境界値を記憶するステップであって、前記境界位置は、前記シーケンスを、前記シーケンス内の前記境界位置の第1の側の第1の部分と、前記シーケンス内の前記境界位置の第2の側の第2の部分とに分割する、ステップと、
前記プログラム実行回路が第1のプログラムを実行しているとき、前記複数のハードウェア資源のうちのいくつが前記装置内に存在するかを問い合わせる1つ以上のプログラム命令に、第1の値を返すように応答するステップと、
前記プログラム実行回路が第2のプログラムを実行しているとき、前記複数のハードウェア資源のうちのいくつが前記装置内に存在するかを問い合わせる1つ以上のプログラム命令に、前記第2の部分内のこれらのハードウェア資源に対応する値を返すように応答するステップと、
を含む、方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate


【公表番号】特表2013−508845(P2013−508845A)
【公表日】平成25年3月7日(2013.3.7)
【国際特許分類】
【出願番号】特願2012−534770(P2012−534770)
【出願日】平成22年8月23日(2010.8.23)
【国際出願番号】PCT/GB2010/051388
【国際公開番号】WO2011/048395
【国際公開日】平成23年4月28日(2011.4.28)
【出願人】(504394342)アーム・リミテッド (134)
【Fターム(参考)】