IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ アーム・リミテッドの特許一覧

特許7595020構成要求に応じて回路を処理するための仲介要求を転送するための装置
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-11-27
(45)【発行日】2024-12-05
(54)【発明の名称】構成要求に応じて回路を処理するための仲介要求を転送するための装置
(51)【国際特許分類】
   G06F 9/455 20180101AFI20241128BHJP
   G06F 9/52 20060101ALI20241128BHJP
【FI】
G06F9/455 150
G06F9/52 120Z
【請求項の数】 20
(21)【出願番号】P 2021552859
(86)(22)【出願日】2020-01-03
(65)【公表番号】
(43)【公表日】2022-04-22
(86)【国際出願番号】 GB2020050003
(87)【国際公開番号】W WO2020183121
(87)【国際公開日】2020-09-17
【審査請求日】2022-12-27
(31)【優先権主張番号】16/299,335
(32)【優先日】2019-03-12
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】500395107
【氏名又は名称】アーム・リミテッド
(74)【代理人】
【識別番号】110000855
【氏名又は名称】弁理士法人浅村特許事務所
(72)【発明者】
【氏名】ロマーナ、アレクサンドル
(72)【発明者】
【氏名】ロドリゲス、マリオ トレシラ
(72)【発明者】
【氏名】ビスコンディ、エリク
【審査官】坂東 博司
(56)【参考文献】
【文献】米国特許出願公開第2016/0292816(US,A1)
【文献】米国特許出願公開第2006/0047958(US,A1)
【文献】米国特許第08015287(US,B2)
【文献】米国特許出願公開第2018/0203609(US,A1)
【文献】米国特許第10084784(US,B1)
【文献】米国特許出願公開第2015/0082305(US,A1)
【文献】米国特許出願公開第2016/0139950(US,A1)
【文献】米国特許第05937185(US,A)
【文献】米国特許出願公開第2010/0153089(US,A1)
【文献】米国特許第10230709(US,B1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 9/455
G06F 9/52
(57)【特許請求の範囲】
【請求項1】
装置であって、
第1のソフトウェアと第2のソフトウェアを含むソフトウェアで、前記第2のソフトウェアが前記第1のソフトウェアより高い特権レベルを有するソフトウェアを実行するように構成された処理回路と、
ハードウェアに実装されたハードウェア実装インタフェースであって、仮想化デバイスの構成を要求する第1のソフトウェアからの構成要求を前記処理回路から受信するように構成された前記ハードウェア実装インタフェースと、を備え、
前記構成要求に応じて、前記ハードウェア実装インタフェースは、仲介要求を前記第2のソフトウェアが応答決定するために前記処理回路に転送するように構成されており、
前記仲介要求は、前記第2のソフトウェアが、前記第1のソフトウェアからの受信した前記構成要求に従って前記仮想化デバイスが仮想化デバイスの設定を許可すべきか拒否すべきかを前記ハードウェア実装インタフェースに示す仲介応答を決定するという要求を含む、装置。
【請求項2】
前記ハードウェア実装インタフェースは、前記仲介要求の送信に応じて、前記処理回路から仲介応答を受信するように構成されており、
前記ハードウェア実装インタフェースは、前記仲介応答に基づいて前記処理回路に、前記構成要求への応答である構成応答を送信するように構成されている、
請求項1に記載の装置。
【請求項3】
前記ハードウェア実装インタフェースは、前記仲介応答に基づいて前記仮想化デバイスを構成されることになるようにトリガするように構成されている、
請求項2に記載の装置。
【請求項4】
前記仲介応答が、前記第1のソフトウェアからの前記構成要求を拒否すべきであることを示す場合、前記構成応答にはエラーインジケーションが含まれる、
請求項2又は3に記載の装置。
【請求項5】
前記処理回路は、特定の特権レベル以上を有するソフトウェアに前記仲介応答を発行することを制限するように構成されている、
請求項2から4のいずれか一項に記載の装置。
【請求項6】
仲介有効状態では、前記ハードウェア実装インタフェースは、前記構成要求に応じて、前記仲介要求を前記処理回路に転送するように構成されており、
仲介無効状態では、前記ハードウェア実装インタフェースは、前記構成要求に応じて、前記仲介要求の前記処理回路への転送を抑制するように構成されている、
請求項1から5のいずれか一項に記載の装置。
【請求項7】
前記仲介無効状態では前記構成要求の受信に応じて、前記ハードウェア実装インタフェースは、エラーインジケーションを前記処理回路に送信するように構成されている、
請求項6に記載の装置。
【請求項8】
前記仲介有効状態又は前記仲介無効状態が設定されているかを示すイネーブルインジケータを記憶するように構成されたレジスタを備える、
請求項6又は7に記載の装置。
【請求項9】
前記処理回路は、仲介設定コマンドを前記ハードウェア実装インタフェースに送信することにより、前記仲介有効状態又は前記仲介無効状態を設定するように構成されている、
請求項6から8のいずれか一項に記載の装置。
【請求項10】
前記仲介有効状態又は前記仲介無効状態が設定されているかを示すイネーブルインジケータを記憶するように構成されたレジスタを備え、
前記仲介設定コマンドに応じて、前記ハードウェア実装インタフェースは、前記レジスタに記憶されている前記イネーブルインジケータの値を変更するように構成されている、
請求項9に記載の装置。
【請求項11】
前記処理回路は、前記仲介設定コマンドを所与の特権レベル以上のソフトウェアに発行することを制限するように構成されている、
請求項9又は10に記載の装置。
【請求項12】
前記ハードウェア実装インタフェースは、少なくとも2つのタイプの構成要求に対して、前記仲介有効状態又は前記仲介無効状態を個別に設定するように構成されており、
所与のタイプの構成要求に応じて、前記ハードウェア実装インタフェースは、前記所与のタイプの構成要求に対応して、前記仲介有効状態と前記仲介無効状態のどちらが設定されるかに依存して、前記仲介要求を前記処理回路に転送するかどうかを判定するように構成されている、
請求項6から11のいずれかに一項に記載の装置。
【請求項13】
前記構成要求は、前記第1のソフトウェアによって使用される場合に前記仮想化デバイスに関連付けられる少なくとも1つのパラメータを含む関連するデバイスコンテキストを示すデバイスコンテキスト識別値に関連付けられる、
請求項1から12のいずれか一項に記載の装置。
【請求項14】
前記構成要求は、
前記仮想化デバイスのリソースの電力管理に関連する要求と、
ハードウェアでサポートされていない要求と、
未割り当てのデバイスコンテキストからの要求のうちの1つを含む、
請求項1から13のいずれか一項に記載の装置。
【請求項15】
前記処理回路は、前記第1のソフトウェアから前記ハードウェア実装インタフェースにデバイスアクショントリガコマンドを送信するように構成されており、
前記ハードウェア実装インタフェースは、前記デバイスアクショントリガコマンドを前記仮想化デバイスに送信し、前記デバイスアクショントリガコマンドに応じて前記処理回路への仲介要求の送信を省略するように構成されている、
請求項1から14のいずれか一項に記載の装置。
【請求項16】
前記デバイスアクショントリガコマンドが前記仮想化デバイスによってサポートされていない場合、前記ハードウェア実装インタフェースは、前記デバイスアクショントリガコマンドに応じて、更なる仲介要求を前記処理回路に転送するように構成されており、
前記更なる仲介要求は、前記第2のソフトウェアが前記仮想化デバイスをエミュレートして、前記デバイスアクショントリガコマンドへの応答を決定するという要求を含む、
請求項15に記載の装置。
【請求項17】
方法であって、
第1のソフトウェアと第2のソフトウェアを含み、第2のソフトウェアは第1のソフトウェアよりも高い特権レベルを有するソフトウェアを、処理回路で実行することと、
ハードウェアに実装されたハードウェア実装インタフェースで、仮想化デバイスの構成を要求する前記第1のソフトウェアからの構成要求を前記処理回路から受信することと、
前記構成要求に応じて、前記ハードウェア実装インタフェースから、前記第2のソフトウェアが応答決定するために仲介要求を前記処理回路に転送することと、を含み、
前記仲介要求は、前記第2のソフトウェアが、前記第1のソフトウェアからの受信した前記構成要求に従って前記仮想化デバイスが仮想化デバイスの設定を許可すべきか拒否すべきかを前記ハードウェア実装インタフェースに示す仲介応答を決定するという要求を含む、方法。
【請求項18】
装置であって、
第1のソフトウェアと第2のソフトウェアを含むソフトウェアで、前記第2のソフトウェアが前記第1のソフトウェアより高い特権レベルを有するソフトウェアを実行する手段と、
ソフトウェアを実行する前記手段から、仮想化デバイスの構成を要求する前記第1のソフトウェアからの専用の構成要求を受信する手段と、
前記専用の構成要求に応じて、前記第2のソフトウェアが応答決定するために、仲介要求をソフトウェアを実行する前記手段に転送する手段と、を備え、
前記仲介要求は、前記第1のソフトウェアよりも高い特権レベルを有する第2のソフトウェアが、前記第1のソフトウェアからの受信した前記構成要求に従って前記仮想化デバイスが仮想化デバイスの設定を許可すべきか拒否すべきかをハードウェア実装インタフェースに示す仲介応答を決定するという要求を含む、装置。
【請求項19】
命令実行環境を提供するために、ホストデータ処理装置を制御するコンピュータプログラムであって、
第1のソフトウェアと第2のソフトウェアを含むソフトウェアで、前記第2のソフトウェアが前記第1のソフトウェアより高い特権レベルを有するソフトウェアを実行するように構成された処理プログラムロジックと、
前記処理プログラムロジックで実行される前記第1のソフトウェアから、仮想化デバイスの構成を要求する構成要求を受信するように構成されたインタフェースプログラムロジックと、を備え、
前記構成要求に応じて、前記インタフェースプログラムロジックは、仲介要求を、前記第2のソフトウェアが応答決定するために前記処理プログラムロジックで実行される前記第2のソフトウェアに転送するように構成されており、
前記第2のソフトウェアは、前記第1のソフトウェアよりも高い特権レベルを有し、
前記仲介要求は、前記第2のソフトウェアが、前記第1のソフトウェアから受信した前記構成要求に従って前記仮想化デバイスが仮想化デバイスの設定を許可すべきか拒否すべきかをハードウェアプログラムロジックに示す仲介応答を決定するという要求を含む、プログラム。
【請求項20】
請求項19に記載のコンピュータプログラムを記憶するように構成された非一時的コンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本技術は、データ処理システムに関するものである。
【発明の概要】
【発明が解決しようとする課題】
【0002】
技術背景
データ処理システムでは、特定のタスクを実行するために専用のハードウェアデバイスが提供される場合があり、状況によっては、同じハードウェアデバイスへのアクセスを共有する複数のユーザ又は複数のソフトウェアアプリケーションが存在する場合がある。デバイスは、各ユーザ又はソフトウェアアプリケーションが、該デバイスを使用しているのは自分だけであると信じるように仮想化され得るが、実際には、デバイス内のリソースは、複数のユーザ間で共有されるように分割される。
【0003】
一態様から見ると、本技術は、装置を提供する。装置は、
ソフトウェアを実行するように構成された処理回路と、
仮想化デバイスの構成を要求する第1のソフトウェアからの構成要求を処理回路から受信するように構成されたインタフェースと、を含み、
構成要求に応じて、インタフェースは、仲介要求を処理回路に転送するように構成されており、
仲介要求は、第1のソフトウェアよりも高い特権レベルを有する第2のソフトウェアが、第1のソフトウェアから受信した構成要求への応答を決定するという要求を含む。
【0004】
別の態様から見ると、本技術は、方法を提供する。方法は、
処理回路でソフトウェアを実行することと、
仮想化デバイスの構成を要求する第1のソフトウェアからの構成要求を処理回路から受信することと、
構成要求に応じて、仲介要求を処理回路に転送することと、を含み、
仲介要求は、第1のソフトウェアよりも高い特権レベルを有する第2のソフトウェアが、第1のソフトウェアから受信した構成要求への応答を決定するという要求を含む。
【0005】
別の態様から見ると、本技術は、装置を提供する。装置は、
ソフトウェアを実行する手段と、
ソフトウェアを実行する手段から、仮想化デバイスの構成を要求する第1のソフトウェアからの構成要求を受信する手段と、
構成要求に応じて、仲介要求をソフトウェアを実行する手段に転送することと、を含み、
仲介要求は、第1のソフトウェアよりも高い特権レベルを有する第2のソフトウェアが、第1のソフトウェアから受信した構成要求への応答を決定するという要求を含む。
【0006】
別の態様から見ると、本技術は、命令実行環境を提供するように、ホストデータ処理装置を制御するためのコンピュータプログラムを提供する。コンピュータプログラムは、
ソフトウェアを実行するように構成された処理プログラムロジックと、
処理プログラムロジックで実行される第1のソフトウェアから、仮想化デバイスの構成を要求する構成要求を受信するように構成されたインタフェースプログラムロジックと、を含み、
構成要求に応じて、インタフェースプログラムロジックは、仲介要求を、処理プログラムロジックで実行される第2のソフトウェアに転送するように構成されており、
第2のソフトウェアは、第1のソフトウェアよりも高い特権レベルを有し、
仲介要求は、第2のソフトウェアが、第1のソフトウェアから受信した構成要求への応答を決定するという要求を含む。
【0007】
本技術の更なる態様、特徴、及び利点は、添付の図面と併せて読まれるべき以下の実施例の説明から明らかとなるであろう。
【図面の簡単な説明】
【0008】
図1図1は、データ処理システムの特権レベルの階層の例を示す。
図2図2は、構成要求の仲介へのアプローチの例を示す。
図3図3は、本技術の実施例に係る、構成要求の仲介への代替アプローチを示す。
図4図4は、処理回路とハードウェアデバイスの構成例を示す。
図5図5は、データ処理システムの一例を示す。
図6図6は、管理インタフェースの動作方法の一例を示す流れ図である。
図7A図7Aは、データ処理システムの部分間で転送された信号の一例を示すタイミング図である。
図7B図7Bは、データ処理システムの部分間で転送された信号の一例を示すタイミング図である。
図8図8は、管理インタフェースの一例を示す。
図9図9は、管理インタフェースで使用するレジスタの一例を示す。
図10図10は、管理インタフェースの動作方法の一例を示す流れ図である。
図11図11は、処理回路の動作方法の一例を示す流れ図である。
図12A図12Aは、仲介有効状態又は仲介無効状態の設定に関与する方法を示す流れ図である。
図12B図12Bは、仲介有効状態又は仲介無効状態の設定に関与する方法を示す流れ図である。
図13図13は、データ処理システムの使用例を示す。
図14図14は、データ処理システムの使用例を示す。
図15図15は、データ処理システムの使用例を示す。
図16図16は、シミュレータ実装形態の一例を示す。
【発明を実施するための形態】
【0009】
仮想化システムでは、仮想化デバイスは、処理回路によって実行される複数のソフトウェアアプリケーションから命令を受信することがあり、処理回路は、ソフトウェアアプリケーションを表す処理命令を含む、処理命令に対応する処理動作を実行するように構成された回路である。複数のソフトウェアアプリケーションはすべて、同じ処理回路で実行されてもよく、あるいは、代わりに、異なるセットの処理回路で実行されてもよい(例えば、処理回路は、マルチコアシステム内の複数のプロセッサコアを含んでもよい)。各ソフトウェアアプリケーションには、そのアプリケーションに関連付けられた特定セットの許可を決定する特権レベルと、仮想化デバイスにアクセスする他のソフトウェアについてそのアプリケーションが有する知識のレベルと、を含む。このようにして、低い特権レベルで動作するソフトウェアアプリケーションは、仮想化デバイスに命令を発行すると、仮想化デバイスのリソースを使用する他のアプリケーションを認識しない可能性がある。これにより、仮想化デバイスの使用を要求するアプリケーション間で衝突が発生する可能性が高まる。
【0010】
衝突を回避するために、仮想化デバイスを構成するための一部のタイプの構成コマンドでは、より高い特権のアプリケーションは、より低い特権のアプリケーションにより、仮想化デバイスに送信される要求を仲介してもよい。例えば、特権の低いアプリケーションが仮想化デバイスに構成要求の送信を望み、より低い特権のアプリケーションの要件に従って仮想化デバイスの構成を要求する場合、より高い特権のプログラムは、この要求を仲介して、仮想化デバイスを使用する他のアプリケーションに悪影響を与える可能性がある場合に確実に許可しないようにしてもよい。そのような構成要求は、いくつかの例では、構成要求をトリガするための専用命令を実行する処理回路によってトリガされる。しかしながら、他の例では、該構成要求は、構成要求にマップされたメモリアドレスを指定するロード又はストア命令を実行する処理回路によってトリガされる。例えば、特定のメモリアドレスに書き込むと、ハードウェアが仮想化デバイスに構成要求を発行するようにトリガされ得る。このような要求と応答は、特権の低いソフトウェアと特権の高いソフトウェア間の相互作用のための事前に合意されたプロトコルに基づいて、メモリ内のあるアドレス又はデータ構造への書き込みを使用して、アプリケーション固有の方法で実行してもよい。
【0011】
このような仲介を実行する1つの方法について、第1の(より低い特権の)ソフトウェアは、第2の(より高い特権の)ソフトウェアに要求を送信して、第1のソフトウェアが仮想化デバイスに送信しようとする構成要求を仲介する。そして、第2のソフトウェアは、第1のソフトウェアに対して、第1のソフトウェアが構成要求を送信する許可を有するかどうかを示す応答を返すことができ、許可が与えられると、第1のソフトウェアはその構成要求を発行することができる。
【0012】
このアプローチには、構成要求の仲介が可能となるという利点があるが、性能影響を有するだけでなく、(ソフトウェアの書き込み時に既知のアプリケーション間の相互作用のためのアプリケーション固有のプロトコルを使用して)各ソフトウェアアプリケーションが他のソフトウェアアプリケーションと通信できるようにするために特定のドライバが必要であるという欠点がある。したがって、ソフトウェアアプリケーションが、異なるオペレーティングシステム又は他のより高い特権のコードを実行している異なる物理的プラットフォームに移植される場合、これは、より高い特権のコードからの仲介を要求するための異なるプロトコルが必要であるため、移植されたアプリケーションのソフトウェア開発者の開発コストが増加する。このアプローチはまた、より高い特権のコードの開発者とより低い特権のコードの開発者の両方に、両方が相互作用し、仲介の要求がより低い特権のコードからより高い特権のコードに送信され、対応する応答がより高い特権のコードから返送されるプロトコルに合意する必要があるという点でコストをもたらす。
【0013】
本技術は、インタフェース(以下に説明する実施例では管理インタフェースとも呼ばれる)が、処理回路と仮想化デバイスとの間のハードウェアに提供される代替アプローチを提供する。処理回路は、仮想化デバイスの構成を要求する構成要求を第1のソフトウェアからインタフェースに送信するように構成されている。インタフェースは要求を受信し、仲介要求を処理回路に転送することによって応答し、(より高い特権レベルでの)第2のソフトウェアが第1のソフトウェアから受信した構成要求への応答を決定するように要求する。仲介要求は、単に構成要求の仲介を実行するための要求であってもよいし、構成要求自体を含んでもよいし、又は構成要求の修正バージョンを含んでもよい。いずれの場合でも、仲介要求は仲介の対象となる要求であり、第1のソフトウェアをトリガして構成要求への応答を決定する。
【0014】
これにより、第1及び第2のソフトウェアは互いに直接通信しないので、それらは、仲介の実行を可能にするために、特定のドライバ又は事前に合意された特定のプロトコルを必要としない。第1及び第2のソフトウェアはそれぞれ、アーキテクチャ的に定義された構成コマンドプロトコルに従ってインタフェースと通信する必要があるだけなので、インタフェースハードウェアでサポートされた同じコマンドアーキテクチャを使用する他のソフトウェアと互換性があってもよい。したがって、より高い特権のコードとより低い特権のコードの開発者間で直接協力したり、別の物理(different physical)に移植したときに、より低い特権のコードを更新したりする必要はない。このようにして、構成要求の仲介は透過的に実行され、第1のソフトウェアの観点からは、構成要求をインタフェースに送信し、構成応答を受信する。第2のソフトウェアの関与は、第1のソフトウェアに対して強調されない。
【0015】
本技術のいくつかの実施例では、仲介要求を受信した後、第2のソフトウェアは、仲介要求を処理し、構成要求に関連してインタフェースに仲介応答を送信するように構成されている。仲介応答は、第2のソフトウェアが構成要求が許可されると判断したかどうかなどの仲介の結果、又は仮想化デバイスのソフトウェアでエミュレートされた機能の結果のインジケーションを示す。仲介応答の受信に応じて、インタフェースは、仲介応答に基づいて構成応答を処理回路に送信するように構成されている。したがって、構成応答は、第1のソフトウェアからの構成要求に対する応答である。
【0016】
これにより、第1の(より低い特権の)ソフトウェアによる構成要求の仲介は、インタフェースを介して実行され、共有データ構造へのメモリアクセスを使用してソフトウェアアプリケーションが互いに直接通信するための特定のドライバの必要性を回避する。これにより、システムの用途が大幅に広がる。
【0017】
いくつかの実施例では、仲介応答に基づいて、インタフェースは、第1のソフトウェアの要求に応じて、構成されることになる仮想化デバイスをトリガするように構成されている。
【0018】
また、これにより、第1のソフトウェアがまず、より高い特権のソフトウェアを介して仲介を要求し、次に、仲介が成功した場合に構成を要求する必要性をなくすことにより、処理時間を節約する。代わりに、構成要求はインタフェースに直接送信され、仲介が成功した場合、構成要求は、第2の要求を発行する必要なしに処理され得る。インタフェースが処理回路から構成応答を受信すると、仲介応答は、構成要求が許可されていることを示す場合、構成要求に基づいて仮想化デバイスの構成をトリガできる。
【0019】
インタフェースによって処理回路に送信される構成応答は、第2のソフトウェアからの仲介応答に部分的に依存して、多くの形式をとることができる。いくつかの実施例では、仲介応答が構成要求を拒否すべきであることを示す場合、第1のソフトウェアに送信される構成応答は、エラーインジケーションを含む。構成要求に応じてハードウェアインタフェースからエラーインジケーションを受信した場合、第1のソフトウェアは、例えば、より高い特権のソフトウェアとの直接の相互作用により、他の形式の仲介にフォールバックするか、又はデバイスを構成する要求を放棄してもよい。
【0020】
他の実施例では、仲介応答は、仮想化デバイスによって直接処理される構成要求ではなく、第2のソフトウェアによってソフトウェアで生成される、構成要求に対してエミュレート応答を提供し得る。この場合、第1のソフトウェアに送信される構成応答は、第2のソフトウェアによって提供される仲介応答と同じであってもよい。すなわち、第2のソフトウェアは、構成要求に対する適切な応答を決定し、仲介応答として、構成要求に対して生成された応答を提供してもよいし、この仲介応答は、仮想化デバイスで任意の機能を呼び出すことなく、インタフェースによって第2のソフトウェアに直接転送される。これは、仮想化デバイスの特定のモデルでサポートされていない可能性のある特定の構成機能を処理することに役立つ。
【0021】
本技術のいくつかの実施例では、処理回路は、特定の閾値特権レベル以上のソフトウェアアプリケーションへの仲介応答の発行を制限する。
【0022】
これは、処理回路が、仲介要求が十分に高い特権レベルを有するソフトウェアに特に向けられることを確実にすることを意味する場合があり(例えば、仲介要求は、閾値特権レベルで処理される例外をトリガするか、又は閾値特権レベル以上のアプリケーションのみがアクセスできるメールボックスアドレスのデータを更新することにより、発生する可能性がある)、又は、これは、任意の仲介応答の発行が許可される(閾値特権レベルよりも特権が低い状態で、障害を引き起こしたり無視されたりする仲介応答を発行しようとする)前に、第2のソフトウェアの特権レベルが十分に高いかどうかを確認するためにチェックされることを意味する場合がある。第2のソフトウェアの特権レベルが十分に高くない場合、処理回路は、インタフェースにエラーインジケーションを送信してもよい。
【0023】
この利点は、仮想化デバイスにアクセスできる他のアプリケーションについて十分なレベルの知識を有するソフトウェアのみが仲介を実行できることである。
【0024】
状況によっては、任意の構成要求を仲介しない方が効率的な場合がある。したがって、いくつかの実施例では、インタフェースを複数の状態の1つに設定できる。例えば、これらには、仲介有効状態と仲介無効状態が含まれ得る。仲介有効状態では、インタフェースは、上記のように、対応する要求を処理回路に転送することにより構成要求に応答する。一方、仲介無効状態では、インタフェースは、構成要求を受信すると、仲介要求を処理回路に転送しない。換言すれば、仲介無効状態では、仲介要求の転送が抑制又は省略される。
【0025】
いくつかの実施例では、インタフェースは、仲介無効状態が設定される場合に行われた構成要求を受け入れることができる。これは、仮想化デバイスを使用するように構成されているアプリケーション/ユーザが1つだけである場合、他のアプリケーション/ユーザとの干渉のリスクがないので、仲介が不要であり、単一のアプリケーション/ユーザによる構成要求を受け入れることができるというシナリオに役立つ可能性がある。さらに、仮想化したデバイス自体が要求を仲介する機能を有する場合、仲介無効状態が設定され得る。
【0026】
いくつかの実施例では、仲介無効状態が設定されている場合、インタフェースは、構成要求の受信に応じて処理回路にエラーインジケーションを送信するように構成されている。これは、アーキテクチャ的に定義された仲介要求/応答コマンドと互換性があるように記述されていない、より高い特権レベルでレガシーコードを実行するシステムで役立つ可能性がある。この場合、エラーインジケーションを返すことにより、より低い特権レベルでの第1のソフトウェアに、アーキテクチャレベルで仲介が不可能であることを通知でき、そして、第1のソフトウェアは、例えば、メモリ内の共有データ構造に基づいて事前に合意されたプロトコルを介して第2のソフトウェアと相互作用することにより、仲介を要求する他の方法にフォールバックできる。
【0027】
仲介有効状態又は仲介無効状態は、さまざまな方法でインタフェースで識別できる。いくつかの実施例では、インタフェースは、仲介有効状態又は仲介無効状態が設定されているかどうかを示すようにイネーブルインジケータをソートするためのレジスタを含む。
【0028】
イネーブルインジケータは、任意の形式をとることができるが、いくつかの実施例では単一ビットであってもよく、例えば、論理「1」の値は仲介有効状態を示し、論理「0」の値は仲介無効状態を示し、又はその逆でもよい。いずれの場合でも、インタフェースのレジスタにイネーブルインジケータを記憶することは、仲介有効/無効状態を示すための効率的な方法である。
【0029】
処理回路による仲介有効又は仲介無効状態の設定は、いくつかの実施例では、処理回路が仲介設定コマンドをインタフェースに送信することによって達成され得る。
【0030】
仲介設定コマンドは、仲介有効状態と仲介無効状態を切り替えるようにインタフェースに指示する。これにより、処理回路上で実行されるソフトウェア、例えば、より高い特権の第2のソフトウェアは、仲介を有効にするかどうかを制御できる。レガシーコードとの互換性のため、デフォルト状態(任意の仲介設定コマンドを受信しない場合)は、インタフェースが仲介無効状態にある可能性がある。
【0031】
いくつかの実施例では、インタフェースにイネーブルインジケータを記憶するレジスタが含まれている場合、仲介設定コマンドは、インタフェースをトリガして、レジスタに記憶されているイネーブルインジケータの値を変更する。
【0032】
例えば、値「1」は仲介が有効であることを示す場合、インタフェースは「1」の代わりに「0」を書き込むことにより、仲介設定コマンドに応答するように構成されている。これは、仲介状態を設定するための効率的で実施が容易な方法であり、仲介有効/無効状態をいずれかの方向に切り替えることができるのは、単一のコマンドタイプのみを必要とする。
【0033】
あるいは、インタフェースで仲介をそれぞれ有効又は無効にするために、専用の有効化コマンドと無効化コマンドを定義することもできる。
【0034】
いくつかの実施例では、処理回路は、仲介設定コマンドを所与の特権レベル以上のソフトウェアに発行することを制限するように構成されている。
【0035】
これにより、特定セットの権限を有するソフトウェアのみがインタフェースの仲介状態を確実に変更できるようにすることにより、システムのセキュリティが向上する。
【0036】
いくつかの実施例では、仲介有効状態又は仲介無効状態を、複数の異なるタイプの構成コマンドのそれぞれに対して個別に設定することができる。そして、特定のタイプの構成コマンドに応じて、インタフェースは、その特定のタイプの構成コマンドに対して、仲介有効状態と仲介無効状態のどちらが設定されるかに依存して、仲介要求を処理回路に転送するかどうかを判定するように構成されている。
【0037】
仲介有効/無効状態が特定のタイプの構成コマンドに対してのみ確実設定されるようにすると、仲介を有効にできるタイプの構成コマンドを拒否することで電力と処理時間の浪費を防ぐことにより、システム全体の効率が向上する(その逆も同様である)。このアプローチにより、仲介状態は、装置が使用される特定のシステムにより適合される。例えば、一部の構成コマンドは、仮想化デバイスの一部のモデルではサポートされているが、仮想化デバイスの他のモデルではサポートされていないデバイス固有の機能に関連してもよい。仮想化デバイスのハードウェアで直接サポートされている機能に関連する構成コマンドは、仲介を無効にするように設定できるが、仮想化デバイスのハードウェアでサポートされていない機能に関連する構成コマンドは、仲介を有効にして、対応する仲介要求への応答として、対応する機能をより高い特権の第2のソフトウェアのソフトウェアでエミュレートできるようにすることができる。
【0038】
本技術のいくつかの実施例では、構成コマンドは、第1のソフトウェアによって使用される場合に仮想化デバイスに関連付けられる少なくとも1つのパラメータを含む関連するデバイスコンテキストを示すデバイスコンテキスト識別値に関連付けられる。
【0039】
本技術の装置では、同じ仮想化デバイスを利用する多くのソフトウェアアプリケーションがあり得、各アプリケーションは異なる要件を有する。したがって、それぞれは自体のデバイスコンテキストがあり、仮想化デバイスの1つ以上のパラメータを指定し、識別値に関連付けられる。これは、例えば、第2のソフトウェア又はインタフェースが、デバイスの使用を求める競合アプリケーション間で仮想化デバイス内のリソースの公平な配分を管理するサービス品質基準を管理できるようにするなど、インタフェースが受信する構成要求のソースを認識することに有用である。また、いくつかの実施例では、特定のソフトウェアアプリケーションからの特定の要求を仲介する必要がないため、第1のソフトウェアのアイデンティティに基づいて、インタフェースがそのような要求をいつ受信したかを識別できることに役立つ。デバイスコンテキスト識別値を提供すると、これを有効にするのに役立つ。
【0040】
処理回路からインタフェースに送信できる構成要求にはいくつかのタイプがあり、そのいくつかの例を示す。これらは、本技術を適用可能な構成コマンドのタイプのいくつかの例に過ぎず、同様に適切な他の多くのタイプもあり得ることが理解されるであろう。一例として、仮想化デバイスのリソースの電力管理に関連する要求がある。
【0041】
特権レベルの低いソフトウェアアプリケーション(第1のソフトウェアなど)は、仮想化デバイスのリソースを使用する他のソフトウェアを認識していない可能性がある。これは、第1のソフトウェアが、第1のソフトウェアがデバイスを使用しなくなると、デバイス又はデバイスの一部に電源を切るように指示することが安全であると信じる可能性があることを意味する。しかしながら、第1のソフトウェアが認識していないデバイスを使用している他のソフトウェアアプリケーションが存在する可能性があるため、デバイス又はデバイスの一部の電源を切ると、他のソフトウェアに悪影響を及ぼす。したがって、仮想化デバイスを利用するすべてのソフトウェアを認識している、より高い特権のソフトウェア(例えば、第2のソフトウェア)によって仲介されるこのような電力管理コマンドに役立つ。このようにして、本技術を電力管理に関連する構成コマンドに適用することが有益である。
【0042】
この技術を適用できる構成要求のタイプの別の例は、ハードウェアでサポートされていない要求である。
【0043】
このような要求は、仮想化デバイスに存在しないリソースを構成又は使用する要求、又は仮想化デバイスが、仮想化デバイスがハードウェアで実際にサポートしていない動作を実行するように要求する要求であってもよい。この場合、より高い特権のソフトウェア(第2のソフトウェアなど)は、構成コマンドに対する仮想化デバイスの応答をエミュレートしてもよい。したがって、仲介要求は、仮想化デバイスによって実行されるように要求されたサポートされていない動作をエミュレートするために、処理回路をトリガして第2のソフトウェアを実行してもよい。構成/仲介コマンド及び応答のアーキテクチャ的に定義されたフレームワーク、及びこれらのコマンドを第1及び第2のソフトウェア間で転送するためのハードウェアインタフェースを提供することにより、ソフトウェアエミュレーションを第1のソフトウェアに対して透過的にすることができるため、第1のソフトウェアは、構成が仮想化デバイス自体によって実行されると信じる。
【0044】
この技術を適用できる構成要求のタイプの更なる例は、未割り当てのデバイスコンテキストからの要求である。
【0045】
未割り当てのデバイスコンテキストを有するソフトウェアからの構成要求がインタフェースによって受信されると、この構成要求を仲介して、デバイスコンテキストに割り当てる利用可能なリソースがあるかどうか、又は未割り当てデバイスコンテキストが、リソースが他のデバイスコンテキストで使用されなくなるのを待つ必要があるかどうかを判定してもよい。このようにして、この場合にも、本技術も特に有益である。
【0046】
仮想化デバイスは、複数の可能な形式をとることができる。これらには、ハードウェアアクセラレータと入出力デバイスが含まれるが、他の多くの例も可能であることが理解されるであろう。
【0047】
ハードウェアアクセラレータは、汎用CPUで実行されるソフトウェアよりも効率的に特定の機能を実行するように設計された専用のコンピュータハードウェアである。ハードウェアアクセラレータの例には、グラフィックスプロセッシングユニット(GPU)、ニューラルプロセッシングユニット(NPU)などの人工知能(AI)アクセラレータ、又は暗号化アクセラレータが含まれる。ハードウェアアクセラレータと、入力ポート、ネットワークインタフェース、又はその他のタイプの入出力デバイスなどの入出力デバイスの両方を多くのソフトウェアアプリケーションで共有できるため、本技術を適用するのに特に有益な状況である。
【0048】
いくつかの実施例では、処理回路は、第1のソフトウェアからインタフェースにデバイスアクショントリガコマンドを送信するように構成されており、インタフェースは、デバイスアクショントリガコマンドを仮想化デバイスに送信するように構成されており、デバイスアクショントリガコマンドに応じて処理回路に仲介要求を送信することを省略する。
【0049】
デバイスアクショントリガコマンドは、仮想化デバイスにデータの処理などの特定のアクションを実行させるためのコマンドである。これらのコマンドは、仮想化デバイスが構成されていると仲介する必要がないため、仲介せずに仮想化デバイスに直接送信できる。このようにして、不必要な仲介を回避することにより、処理時間が節約される。
【0050】
例えば、仮想化デバイスがGPU又は他のハードウェアアクセラレータである場合、直接的なデバイスアクショントリガコマンドは、ハードウェアアクセラレータによるデータの処理を要求してもよいが、構成コマンドは、コマンドを発行するアプリケーションが使用できる処理リソースの共有を構成するための要求、アクセラレータの構成設定を変更するための要求、又はアクセラレータの電力モードを変更するための要求などである。
【0051】
いくつかの実施例では、仮想化デバイスは、特定のデバイスアクショントリガコマンドをサポートしない場合がある。この場合、インタフェースは、更なる仲介要求を第2のソフトウェアに転送するように構成され得る。そして、第2のソフトウェアは、デバイスアクショントリガコマンドを仲介し、仮想化デバイスをエミュレートして、デバイスアクショントリガコマンドへの応答を決定することができる。
【0052】
これにより、ハードウェアでサポートされていないコマンドを、あたかもサポートされているかのように処理できるようになり、システムの汎用性が向上する。
【0053】
いくつかの実施例では、本技術は、上記の例のいずれかに記載された装置による命令実行環境を提供するように、ホストデータ処理装置を制御するコンピュータプログラムを含む。コンピュータプログラムは、ホスト処理システムに処理回路(ソフトウェアの実行)及びインタフェース(処理プログラムロジックで実行される第1のソフトウェアから構成要求の受信、及び処理プログラムロジックで実行される第2のソフトウェアへの仲介要求の転送)の機能のいくつかを実行させるために、処理プログラムロジック及びインタフェースプログラムロジックを含むシミュレーションプログラムであってもよい。シミュレータプログラムは、ホストデータ処理装置で実行されると、これらのハードウェアコンポーネントの機能をエミュレートすることができるため、シミュレータプログラムの上で実行される(これらのコンポーネントを有するハードウェア装置で実行するように設計される)他のアプリケーションは、これらのハードウェアコンポーネントの一部又はすべてを有していないハードウェアプラットフォームで実行される場合でも、同様に動作し続けることができる。
【0054】
本技術は、複数のプロセスが異なる特権レベルで動作するシステムに関する。技術の詳細を説明する前に、特権レベルの概念の概要を例として示す。
【0055】
図1は、仮想化デバイスにアクセスできるプロセスの特権レベル(例外レベル)の一例を概略的に示す。特権レベルEL2(例外レベル2)で動作するのはハイパーバイザ102である。ハイパーバイザ102は、処理回路によって実行される一連の命令として、専用のハードウェアコンポーネントとして、又はソフトウェアで実装されてもよい。ハイパーバイザ102は、仮想マシン104の実行を管理し、仮想化デバイスのリソースへのそれらのアクセスを制御する。最高の特権レベルを有するハイパーバイザ102は、実行中のすべての仮想マシン104を認識し、それらにアクセスし、仮想マシン104から仮想化デバイスに送信される任意のコマンドを仲介することを可能にする。
【0056】
仮想マシン104は、次の特権レベルであるEL1で動作する。各仮想マシン104は、それらがすべて同じ例外レベルで動作するため、他の仮想マシンの動作を認識しない。これは、仮想マシン104の1つが、他の仮想マシン104の1つ以上に悪影響を与える仮想化デバイスに構成要求を無意識に発行する可能性があることを意味する。したがって、仮想マシン104からのいくつかの構成要求がハイパーバイザ102によって媒介されることに有用であり得る。
【0057】
複数のアプリケーション106は、各仮想マシン104内で実行され、アプリケーション106は、最低の特権レベルであるEL0で実行される。各仮想マシン104は、そのゲストオペレーティングシステム内で実行されるアプリケーション106を制御し、例えば、VM0 104aは、示されている最初の2つのアプリケーション106a、106bを制御するが、他の仮想マシン104で実行されるアプリケーション106を制御することができない。
【0058】
したがって、各特権レベルは、仮想化デバイスで実行される他のプロセスに対してプロセスが有する制御のレベルを定義し、EL2で実行されるプロセスは、EL1とEL0で実行されるプロセスを制御し、EL1で実行されるプロセスは、EL0で実行されるプロセスを制御する。さらに、各特権レベルは、特定セットのアクセス許可にリンクされており、特権の高いプロセスは、特権の低いプロセスよりもアクセスが大きい。一部のアーキテクチャでは、3つを超える特権レベルが定義され得ることが理解されるであろう。例えば、ハイパーバイザの特権レベルEL2よりも高い特権レベルEL3で実行されるセキュアモニタは、セキュアドメインと非セキュアドメイン間の遷移を制御し得る。これは、特権レベルの可能な階層の一例にすぎず、他の実装では、異なるセットの特権レベルを使用してもよいことを理解されるが、一般に、処理システムは、異なる特権レベルのソフトウェアプロセスの実行をサポートし、この場合に、より高い特権のプロセスは、特権の低いプロセスで許可されていないアクションを実行したり、データにアクセスしたりする権限がある。
【0059】
図2は、図1に示されているような、複数の特権レベルを有するシステム200の一例を示す。図2では、2つのソフトウェアプロセス202、204は、仮想化デバイス206にアクセスできる。ソフトウェア202、204は、処理回路(図示せず)上で実行され、処理回路は、両方のソフトウェアプロセス202、204を実行する同じ処理回路、又は処理回路の別個のセットのいずれかであり得る。仮想化デバイス206は、ソフトウェアプロセス202、204の制御下で動作を実行可能なハードウェアコンポーネントである。例えば、仮想化デバイス206は、入出力デバイス、又は専用のグラフィックスプロセッシングユニット(GPU)、人工知能アプリケーションで使用するAIアクセラレータ又はニューラルプロセッシングユニット(NPU)、又は暗号化動作を実行するための暗号化アクセラレータなど、汎用CPU上で実行されるソフトウェアよりも効率的に特定の機能を実行するように構成されたハードウェアアクセラレータであり得る。
【0060】
ソフトウェアプロセス202、204のそれぞれは、割り当てられた特権レベルを有し、一方はより高い特権のソフトウェア204であり、他方はより低い特権のソフトウェア202である。例えば、より低い特権のソフトウェア202は、図1に示されるような仮想マシン104であり得、より高い特権のソフトウェア204は、ハイパーバイザ102又はハイパーバイザ102内で実行される特定セットの命令であり得る。より高い特権及びより低い特権のソフトウェア202、204のそれぞれは、そのソフトウェアからデータ処理命令を受信するように、仮想化デバイス206を構成するための要求を送信することを望んでもよい。それはより低い特権レベルを有するため、より低い特権のソフトウェア202からの構成要求は、より高い特権のソフトウェア204によって仲介される必要がある。
【0061】
図2に示される構成では、仲介は、より低い特権のソフトウェア202とより高い特権のソフトウェア204との間の通信によって行われる。より低い特権のソフトウェア202は、より高い特権のソフトウェア204が、仮想化デバイス206のリソースにアクセスできる他のソフトウェアの知識に基づいて、より低い特権のソフトウェア202からの構成要求を許可するか拒否するかを判定することに応じて、仲介要求をより高い特権のソフトウェア204に送信する。そして、より高い特権のソフトウェア204は、構成要求が許可されるかどうかを示すより低い特権のソフトウェア202に仲介応答を返す。要求が許可されると、より低い特権のソフトウェア202は、構成要求を仮想化デバイス206に送信する。
【0062】
上記の構成要求及び応答には、例えば、合意されたアプリケーション固有のプロトコルに従って、メモリ内のデータ構造への書き込みが含まれ得る。そのような書き込みは、特定のアプリケーションのために特注された方法で、より高い特権のソフトウェア204及びより低い特権のソフトウェア202の両方のソフトウェア開発者の協力を必要とするであろう。このようにして、複数のより低い特権のソフトウェアアプリケーションが同じデバイスと相互作用しようとする場合、より高い特権のソフトウェア204の開発者は、より低い特権のソフトウェアの各アイテムと相互作用するための異なるデータ構造及びプロトコルに合意してもよい。
【0063】
図2に示されるように、より低い特権のソフトウェア202からの構成コマンドの仲介を要求することには、多くの利点がある。例えば、仲介は、仮想化デバイス206のリソースの競合によって引き起こされる問題の可能性を低減し、システム200のセキュリティを改善する。しかしながら、システムの効率と汎用性の観点から、この特定のアプローチには重大な欠点もある。1つの欠点は、例えば、仮想化デバイス206に送信される前に、より低い特権のソフトウェア202からの各構成要求が仲介される必要があることである。これは、要求が仮想化デバイスに到達するのにかかる処理時間を増加させ、システム200の効率を低下させる。別の欠点は、仲介が実行されるために、2つのソフトウェアプロセス202、204が直接通信する必要があることによる。これは、他のソフトウェアプロセスとの通信を可能にするために、各ソフトウェアプロセス202、204に特定のドライバ203、205を含ませる必要がある。これらのソフトウェアドライバ203、205は、ソフトウェアプロセスが交換されるたびに更新又は再インストールする必要があり、これは、システム200の汎用性が制限されることを意味する。これは、複数のユーザが単一のサーバへのアクセスを共有し、価格やその他の状況の変化に応じてユーザが1つのサーバから別のサーバに切り替える可能性がある、最近のシステムでは特に問題になる。したがって、システム200の効率及び汎用性を改善することに有益であろう。
【0064】
図3は、本技術の一例を使用するシステム300を示す。図3に示されたシステムでは、管理インタフェース302は、ソフトウェア202、204と仮想化デバイス206との間に提供される。この構成では、より低い特権のソフトウェア202は、より高い特権のソフトウェア204による仲介を、まず、要求することなく、構成要求を管理インタフェース302に送信するように構成されている。そして、管理インタフェース302は、構成要求に関して、仲介要求をより高い特権のソフトウェア204に送信する責任を負う。構成要求の仲介は、より高い特権のソフトウェア204によって実行されるが、仲介応答は、より低い特権のソフトウェア202ではなく、管理インタフェース302に返される。仲介応答が、構成要求が受け入れられることを示す場合、管理インタフェース302は、これを示す構成応答をより低い特権のソフトウェア202に送信し、構成要求に応じて構成されることになる仮想化デバイス206をトリガする。他方、仲介応答が、構成要求が拒絶されることを示す場合、管理インタフェース302は、これを示すために、例えばエラーインジケーションの形で、構成応答をより低い特権のソフトウェア202に送信する。
【0065】
上記の例では、仲介応答は、構成要求を受け入れるか拒否できるかを示す。
【0066】
しかしながら、他の例では、仲介応答は、インタフェース302に送信されて、仮想化デバイス206でのアクションを必要とせずに第1のソフトウェア202に転送され得る、構成要求に対するエミュレート応答を含み得る。例えば、これは、仮想化デバイスの特定のモデルによってハードウェアで実際にサポートされていない特定の構成アクションを処理することに役立つ。
【0067】
特定のアーキテクチャに準拠するハードウェアデバイスが、アーキテクチャに従って設計されたソフトウェアが予測可能な方法で動作することを保証するように、構成要求及び構成応答と、仲介要求及び仲介応答とをアーキテクチャ的に定義されてもよい。結果として、より高い特権及びより低い特権のソフトウェア204、202は、他のソフトウェアとの仲介プロトコルに合意する必要なしに、上記の方法で構成及び仲介の要求及び応答を使用するように設計することができる(プロトコルに関する合意は、2つのソフトウェアプロバイダ間ではなく、各ソフトウェアプロバイダとハードウェアプロバイダ又は標準の間で効果的に行われ、ソフトウェア開発にはより効率的である)。
【0068】
これは、より低い特権のソフトウェア202の観点から、構成要求が管理インタフェース302に送信され(あたかも構成要求を仮想化デバイス206に直接送信するかのように、より低い特権のソフトウェア202をプログラムすることさえ可能であり)、応答が管理インタフェース302から受信されるように、構成要求の仲介がより低い特権のソフトウェア202から隠されているという構成要求の透過的な仲介の例である。したがって、仲介は、より低い特権ソフトウェア202の関与なしに、そしてより低い特権ソフトウェア202がより高い特権ソフトウェア204の関与を認識する必要なしに実行される。
【0069】
この配置では、仲介要求は、より低い特権のソフトウェア202ではなく、管理インタフェース302によって送信されるため、より高い特権のソフトウェア204と通信するための専用ドライバ203は、より低い特権のソフトウェア202内に提供される必要がなく、より低い特権のソフトウェア202と通信するための専用ドライバ205も、より高い特権のソフトウェア204内に提供される必要がない。これは、システム300の汎用性を改善し、他のソフトウェアのドライバ203、205を更新又は再インストールする必要なしに、ソフトウェアプログラム202、204のいずれかを置き換えることを可能にする。さらに、この配置は、より高い特権のソフトウェア204がまず、要求を仲介するのを待たずに、より低い特権のソフトウェア202が、構成要求を管理インタフェース302に直接送信することを可能にする。このようにして、構成要求の送信に必要な処理時間が短縮され、全体的な効率が向上する。
【0070】
図3に示されている配置には、構成要求の仲介以外の用途もある。例えば、ほとんどのデバイスアクショントリガコマンド(図13~15を参照して詳細に説明)を仲介する必要がないが、仮想化デバイス206によってサポートされていないデバイスアクショントリガコマンドを仲介することができ、これは上記の技法に従って実行することができる。
【0071】
さらに、上記のメカニズムは、要求の仲介に役立つだけでなく、第1のソフトウェアと第2のソフトウェアの間の任意の他の通信を可能にするためにも使用できる。これにより、専用ドライバを必要とせずに、ソフトウェアアプリケーション間の通信を行うことができる。
【0072】
図4は、本技術を適用できるハードウェアシステム400のより詳細な例を示す。図4には、ネットワークインタフェース402、暗号化ユニット404、及びグラフィックス処理ユニット(GPU)406を含む、仮想化デバイスのいくつかの例が示されている。仮想化デバイス402、404、406のそれぞれは、図3に示される仮想化デバイス206の例であり、複数の処理ユニット408、410の1つ以上にアクセス可能であり、すべての処理ユニット408、410及び仮想化デバイス402、404、406は、共有メモリ412にアクセスすることができる。GPU406は、処理ユニット408、410上で実行される1つ以上のソフトウェアアプリケーションの制御下で動作を実行するための処理回路414を含む、複数のコンポーネントを含む。処理回路は、メモリ412から検索されたデータ又は命令を記憶するためのキャッシュ416、及びレジスタバンク418にアクセスすることができる。また、GPU406内には、管理インタフェース420が提供される。管理インタフェース420は、図3の管理インタフェース302と同じ機能を実行し、処理ユニット408、410から、構成要求を受信し、仲介要求を送信するように構成されている。この実施例では、管理インタフェース420は、GPU406のコンポーネントとして示されているが、ネットワークインタフェース402及び暗号化ユニット404のそれぞれに提供される管理インタフェース422、424によって示されるように、管理インタフェース420が仮想化デバイスに対する別個のコンポーネントであることも可能である。管理インタフェース420も、レジスタバンク418にアクセスすることができる。
【0073】
処理ユニット408、410のそれぞれは、命令を処理するための動作を実行するように構成された処理回路426、428を含む。処理回路426、428によって処理される命令は、それぞれが設定された特権レベルを有する、図3に示されるソフトウェアアプリケーション202、204などの1つ以上のソフトウェアアプリケーションを表してもよい。処理回路426は、レジスタバンク430、432、及びメモリ412から検索されたデータ又は命令を記憶するように構成されているキャッシュ434、436にアクセスすることができる。
【0074】
処理ユニット408のうちの1つの処理回路426上で実行される第1のソフトウェアが仮想化デバイスのうちの1つ、例えばGPU406の構成を要求する場合、処理回路426は、GPU406に関連する管理インタフェース420に構成要求を送信するように構成されている。管理インタフェースは、仲介要求を、より高い特権の第2のソフトウェアを実行する処理回路に転送することにより、構成要求に応答し、該処理回路は、第1のソフトウェアを実行する同じ処理回路426又は異なる処理回路428であり得る。仲介要求を受信する処理回路426、428は、構成要求を仲介し、仲介応答を管理インタフェース420に送信するように構成されており、管理インタフェース420は、第1のソフトウェアを実行する処理回路426に構成応答を送信し、構成要求に基づいて選択的にGPUの構成をトリガするように構成されている。
【0075】
図5は、本技術の一例に係るシステム500の概要を示す。システムは、管理インタフェース302を介して通信する仮想化デバイス206及び処理回路502を含む。図3に示されるより低い特権及びより高い特権のソフトウェア202、204の例である、異なる特権レベルを有する第1のソフトウェア504及び第2のソフトウェア506は、処理ソフトウェア502上で実行される。第2のソフトウェア506は、第1のソフトウェア504よりも高い特権レベルを有するため、第1のソフトウェア504が構成要求を管理インタフェース302に送信すると、仲介要求が管理インタフェース302から第2のソフトウェア506に送信される。管理インタフェース302は、第2のソフトウェア506から仲介応答を受信し、適切な構成応答を第1のソフトウェア504に送り返す。仲介が、構成要求が許可されることを示す場合、管理インタフェース302はまた、仮想化デバイス206が構成要求に従って構成されることになるようにトリガする。
【0076】
この例では、第1及び第2のソフトウェア504、506は、同じ処理回路502上で実行されることが示されている。しかしながら、これはただ1つの可能な構成であり、第1及び第2のソフトウェア504、506はまた、処理回路の別個のセットで実行され得ることが理解されるであろう。
【0077】
図6は、本技術の一例に係る、管理インタフェース(図3~5に示される管理インタフェース302、420、422、424など)によって実行される方法600の一例を示す流れ図である。
【0078】
第1のステップS602において、管理インタフェースは、第1のソフトウェア202、504を実行する処理回路426、428、502から構成要求を受信するように構成されている。構成要求は、管理インタフェースに関連する仮想化デバイスを構成する要求である。構成要求の受信に応じて、管理インタフェースは、S604に、仲介要求を、第2のソフトウェア204、506を実行する処理回路に転送する。仲介要求は、第1のソフトウェアからの構成要求を仲介する要求である。次に、仲介要求の送信に応じて、管理インタフェースは、S606に、構成要求が許可されるかどうかを示す、第2のソフトウェアから仲介応答を受信するように構成されている。そして、管理インタフェースは、S608に、構成要求が受け入れられるかどうかを示す、第1のソフトウェアを実行する処理回路に構成応答を送信する。最後に、S610に構成要求が受け入れられるかどうかの判定に続いて、プロセスは、仮想化デバイスの構成なしでS612に終了するか(構成要求が受け入れられなかった場合)、又はS614に構成要求に従って仮想化デバイスの構成をトリガした後に終了する。
【0079】
図7A及び7Bは、本技術に係るシステム300、400、500のコンポーネント間を通過する信号のいくつかを示すタイミング図である。図7Aでは、構成要求702は、まず、第1のソフトウェア704からインタフェース706に送信される。次に、仲介要求708は、インタフェースから第2のソフトウェア710に送信され、続いて仲介応答712は、第2のソフトウェア710からインタフェース706に送信される。そして、構成応答714は、インタフェースから第1のソフトウェアに送信される。これは、第2のソフトウェア710による構成要求の仲介の第1のソフトウェア704に対する不可視性を実証している。第1のソフトウェアによって送受信される信号に注目すると、構成要求702に応じて受信される構成応答714のみが見られる。第1のソフトウェア704と第2のソフトウェア710との間に直接通信がないため、第2のソフトウェアと通信するための専用ドライバ又はプロトコルを必要としない。第1のソフトウェア704は、図3及び5に示されるより低い特権のソフトウェア202、504の一例であり、第2のソフトウェア710は、図3及び5に示されるより高い特権のソフトウェア204、502の一例であり、インタフェース706は、図3~5に示される管理インタフェース302、420、422、424の一例である。
【0080】
一方、図7Bは、第1及び第2のソフトウェアを実行する処理回路720、インタフェース706、及び仮想化デバイス722の間を通過する信号を示し、処理回路720は、図4及び5に示される処理回路426、428、502の一例であり、仮想化デバイス722は、図3~5に示される仮想化デバイス206、402、404、406の一例である。図7Bでは、構成要求702は、処理回路720からインタフェース706に送信され、インタフェース706は、仲介要求708を処理回路720に送信することにより応答し、より高い特権のソフトウェアによる構成要求702の仲介を要求する。仲介応答712は、処理回路720によってインタフェース706に送信され、インタフェース706は、構成応答714を処理回路720に返す。構成応答714を処理回路に送信すると同時に、インタフェース706は、構成要求702に基づいて、構成コマンド724を仮想化デバイス722に送信し、構成コマンド724は、構成要求702に従って構成されることになるように仮想化デバイス722をトリガする。なお、構成コマンド724及び構成応答714は、同時に発生するものとして図7Bに示されているが、仲介応答712がインタフェースから受信される前にどちらも起こらない限り、それらがわずかに異なる時間に発生することも可能である。
【0081】
本技術のいくつかの実施例では、仲介有効状態又は仲介無効状態を設定することができる。仲介有効状態では、これまでに説明した技術に係る構成要求の仲介が容易である。仲介無効状態では、構成要求の仲介を実行しない。これは、構成要求の仲介の結果が常に同じである可能性が高い状況で役立つ。例えば、第1のソフトウェアが仮想化デバイス上の特定のリソースにアクセスする唯一のソフトウェアである場合、構成要求は常に許可される可能性がある。逆に、すべてのリソースが現在第1のソフトウェアよりも高い特権のソフトウェアによって使用されている場合、又は何らかの障害がある場合、構成要求は常に拒否される可能性がある。どちらの場合でも、仲介の結果が常に同じであるため、構成要求を仲介する必要がない。このようにして、不要な仲介の発生を防止することにより、処理時間と電力を節約するために、仲介無効状態に切り替えることが有益である。しかしながら、それ以外の場合でも、仲介が必要なため、仲介有効状態を設定する必要がある。
【0082】
仲介有効又は無効状態は、さまざまな方法で管理インタフェースで設定され得る。図8は、レジスタ804を含む、本技術に係る管理インタフェース802の一例を示し、管理インタフェース802は、図3~5、7A、及び7Bの管理インタフェース302、420、422、424、706の一例である。レジスタ804は、仲介有効状態又は仲介無効状態が設定されるかを示すイネーブルインジケータを記憶するエントリを含む。イネーブルインジケータは、単一ビットの形式(例えば、論理「1」の値が仲介有効状態を示し、論理「0」の値が仲介無効状態を示し、その逆も同様)でも、他の形式でもかまわない。仲介有効又は無効状態は、例えば、処理回路からの仲介設定コマンドに応じて、レジスタ内のイネーブルインジケータを変更することにより設定される。
【0083】
レジスタ804は、図8に示されるように、管理インタフェース802内に提供され得るか、又は、図4のGPU406におけるレジスタバンク418などの仮想化デバイス内のレジスタバンク内のレジスタであり得る。
【0084】
図8に示される管理インタフェース802はまた、第1のソフトウェアを実行する処理回路からの構成要求に応じて、レジスタ804に設定されたイネーブルインジケータに基づいて、第2のソフトウェアを実行する処理回路に仲介要求を送信するかどうかを判定するように構成された決定ロジック806を含む。
【0085】
いくつかの実施例では、管理インタフェースによって受信されたすべての構成要求に対して仲介有効状態又は仲介無効状態を設定するのではなく、いくつかの異なるタイプの構成コマンドごとに状態を個別に設定することができる。図9は、実装可能なレジスタ902の一例を示す。レジスタ902は、それぞれ異なるタイプの構成要求のための8つのエントリ904を有する。各エントリには、対応するタイプの構成コマンドに仲介有効状態と仲介無効状態のどちらが設定されるかを示すイネーブルインジケータが記憶されている。この例では、各イネーブルインジケータは単一ビット値であり、「1」はそのタイプの構成要求の仲介有効状態を表し、「0」はそのタイプの構成要求の仲介無効状態を表す。例えば、構成要求タイプB-D及びF-Gのエントリ904b-d、904f-gのイネーブルインジケータは「1」であり、これらのタイプのそれぞれに仲介有効状態が設定されていることを示す。これは、これらのタイプのいずれかの構成要求が管理インタフェースによって受信されると、仲介要求が上記の例に従って処理回路に転送されることを意味する。他方、構成要求タイプA、E、及びHのエントリ904a、904e、904hのイネーブルインジケータは「0」に設定され、仲介無効状態がこれらのタイプに設定されていることを示す。これは、これらのタイプのいずれかの構成要求が管理インタフェースによって受信されると、仲介要求は処理回路に転送されないことを意味する。
【0086】
図9に示されるレジスタ902は、8つのタイプの構成要求に対して8つのエントリ904のみを示すが、任意の数のエントリ904を含み得ることが理解できるであろう。参照された構成要求のタイプには、例えば、仮想化デバイス上のリソースの電力管理に関連する構成要求、ハードウェアでサポートされていない構成要求、及び未割り当てのデバイスコンテキストからの構成要求が含まれる場合がある。しかしながら、これらは構成要求のタイプの一例に過ぎない。他のタイプの構成要求も可能である。さらに、レジスタ902は、図8に示されるレジスタ804の一例に過ぎない。また、場合によっては、複数のタイプの要求が単一のインジケータ904を共有することができるため、それらのタイプのそれぞれは、共有インジケータの設定によって同時に有効/無効になり、他のタイプは、別個のイネーブル/ディセーブルインジケータ904を含んでもよい。
【0087】
図10は、本技術の例に係る管理インタフェースによって実行される方法1000の一例を示す流れ図である。この方法は、第1のソフトウェアを実行する処理回路から所与のタイプの構成要求を受信するステップS1002から始まる。次に、S1004に、所与のタイプの構成要求に対して仲介が有効にされているかどうかに関して、例えば、図8に示される決定ロジック806によって決定が行われる。例えば、これは、そのタイプの構成要求に対応するレジスタ902のエントリ904に記憶されたイネーブルインジケータ906を読み取る決定ロジック806を含み得る。所与のタイプの構成要求に対して仲介が無効であると決定された場合、該方法は、構成応答として第1のソフトウェアを実行する処理回路にエラーインジケーションを送信するステップS1006に移る。これは、第1のソフトウェアに対して、構成要求が拒否されたことを示す。そして、第1のソフトウェアは、仮想化デバイス自体の機能をソフトウェアでエミュレートすることにより、他の進行方法にフォールバックすることができる。
【0088】
一方、所与のタイプの構成要求に対して仲介が有効であると決定された場合、該方法は、仲介要求を第1のソフトウェアよりも高い特権レベルを有する第2のソフトウェアを実行する処理回路に転送するステップS1008に移る。S1010に、仲介要求に応じて、仲介応答は、構成要求が受け入れられるか拒否されるかを示す、第2のソフトウェアを実行する処理回路から受信される。S1012に、仲介応答が構成要求が受け入れられたことを示すかどうかに関して、例えば決定ロジック806によって決定が行われる。構成要求が拒否されたと判断された場合、S1006に、エラーインジケーションが構成応答として第1のソフトウェアを実行する処理回路に送信される。一方、構成要求が受け入れられた場合、該方法は、構成要求が受け入れられたことを示す、構成要求を形成するインジケーションを第1のソフトウェアを実行する処理回路に送信するステップS1014に移る。そして、S1016に、構成要求に基づいて、インタフェースは仮想化デバイスの構成をトリガする。
【0089】
図11は、本技術の例に係る、処理回路によって実行される方法1100の一例を示す。この方法は、処理回路上で実行される第1のソフトウェアからインタフェースに構成要求を送信するステップS1102から始まる。S1104に、これに応じて、仲介要求をインタフェースから受信する。S1106に、仲介要求は、処理回路上で実行される第2のソフトウェアによって処理され、第2のソフトウェアは、第1のソフトウェアよりも高い特権レベルを有し、仲介要求は、構成要求を仲介することによって処理される。仲介が完了すると、該方法は、構成要求が受け入れられるか拒否されるかを示す仲介応答をインタフェースに送信する最終ステップS1108に移る。
【0090】
図12A及び12Bは、それぞれ処理回路及びインタフェースによって実行される、仲介有効状態又は仲介無効状態の設定に関与する方法を示す流れ図である。
【0091】
図12Aは、S1202に所与の特権レベル以上のソフトウェアが動作していると決定された場合、S1204に仲介設定コマンドが処理回路によってインタフェースに送信されることを示す。これは、システムのセキュリティが確実に維持されるようにするためである。
【0092】
図12Bは、S1206にインタフェースが仲介設定コマンドを受信すると、S1208にレジスタに記憶されているイネーブルインジケータが変更されることを示す。
【0093】
図13は、本技術の一例を概略的に示す。該図は、仮想化アプリケーション1304の制御下で仮想化デバイスとして動作可能な1つ以上のデバイス1302を示す。仮想化アプリケーション1304(前の例で説明されたより低い特権の第1のソフトウェア202、504、704の例)は、仮想化デバイスインタフェース1308を介してデバイス1302に構成要求などの制御情報を送信するように構成されたCP(制御パス)ドライバ1306と、デバイス1302上で実行される特定の処理動作をトリガするために、コマンド(デバイスアクショントリガコマンド)をデバイス1302に送信するように構成されたDP(データパス)ドライバ1310と、を含む。
【0094】
構成要求がCPドライバ1306を介して、仮想化アプリケーション1304から仮想化デバイスインタフェース1308に送信されると、インタフェース1308は、仲介要求をデバイスインタフェース1312を介して特権的CPドライバ1314に転送することによって応答する。特権的CPドライバ1314は、デバイスインタフェース1312を介して仮想化デバイスインタフェース1308に仲介応答を返し、仮想化デバイスインタフェース1308は、CPドライバ1306を介して仮想化アプリケーション1304に対応する構成応答を送信する。仮想化デバイスインタフェース1308は、前の例に示されているように、管理インタフェース302、420、422、424、706、802の一例である。
【0095】
仮想化アプリケーションのDPドライバ1310を介して、又はデバイス1302に関連する他のDPドライバ1316によって送信されるデバイスアクショントリガコマンドは、通常、仲介される必要がないため、仮想化デバイスインタフェース1308及びデバイスインタフェース1312によってそれぞれデバイス1302に渡される。しかしながら、場合によっては、仲介する必要がある。例えば、デバイスアクショントリガコマンドが仮想化デバイスのハードウェアでサポートされていない場合、デバイスインタフェース1312は、処理回路上で実行される第2のソフトウェアに更なる仲介要求を転送するように構成され得る。そして、第2のソフトウェアは、デバイスアクショントリガコマンドを仲介し、デバイスアクショントリガコマンドに対する仮想化デバイスの応答をエミュレートすることもできる。
【0096】
図14は、本技術の適用が特に有利である状況の一例を示す。特に、図14は、デバイスインタフェースのオーバープロビジョニングへの本技術の適用を示す。
【0097】
図14では、仮想化デバイスインタフェース1308は、図13に示される仮想化アプリケーション1304と、追加の仮想化アプリケーション1404との間で共有されている。追加の仮想化アプリケーション1404は、DPドライバ1410及びCPドライバ1406とともに、第1の仮想化アプリケーション1304と同じ方法で配置される。この例では、仮想化デバイスインタフェース1308がオーバープロビジョニングされ、つまり、そのリソースの一部は、第1の仮想化アプリケーション1304と第2の仮想化アプリケーション1404の両方に割り当てられており、両方とも、それらがそれらのリソースにアクセスできる唯一のアプリケーションであると信じている。従来、この状況では、オーバープロビジョニングされたリソースにアクセスしようとすると、制御パス1402とデータパス1408の両方でのメモリアクセスをトラップ1412する必要がある。しかしながら、本技術によれば、制御パス1402上のメモリアクセスは、オーバープロビジョニングされたリソースの管理を担当するソフトウェア又はハードウェアによって、特権的CPドライバ1314を介して透過的に仲介されるため、トラップされる必要がない。
【0098】
図15に示すように、本技術が特に有利な状況の別の例は、ライブマイグレーションである。1つのホストデバイス1302から別のホストデバイス1502への仮想化アプリケーション1304のライブマイグレーションでは、より高い特権のソフトウェアは、仮想化アプリケーション1304が許可なしにデバイス1302の構成をそれ以上変更しないことを確実にしながら、割り当てられたコンテキストを第1のデバイス1302から第2のデバイス1502に事前にコピーする。従来、これは、仮想化アプリケーション1304又はCPドライバ1306にプログラムされる特定の動作を必要とするが、本技術に従って説明されるような構成コマンドの透過的な仲介は、これがもはや必要とされないことを意味する。
【0099】
さらに、第2のデバイス1502は、第1のデバイス1302とまったく同じ機能セットをサポートしない可能性があり、従来、ライブマイグレーションが正常に実行されることを妨げるであろう。一方、本技術は、第2のデバイス1502の欠落している機能をより高い特権のソフトウェアによりエミュレートすることを可能にし、より広い範囲のシステムでライブマイグレーションを実行することを可能にする。このようにして、本技術は、システムのセキュリティと汎用性の両方を改善する。
【0100】
本技術の適用が特に有益である状況の特定の例が図14及び15に示されているが、これらは単なる例であり、本技術が利点を提供する他の多くの状況があり得ることが理解できるであろう。
【0101】
図16は、使用され得るシミュレータの実装形態を示す。先に説明した実施形態は、当該技術をサポートする特定の処理ハードウェアを動作するための装置及び方法の観点から本発明を実装するものであるが、コンピュータプログラムを使用して実装される本明細書に記載の実施形態に従った命令実行環境を提供することも可能である。このようなコンピュータプログラムは、ハードウェアアーキテクチャのソフトウェアベースの実装形態を提供する限りにおいて、シミュレータと呼ばれることが多い。シミュレータコンピュータプログラムのタイプには、エミュレータ、仮想マシン、モデル、及び動的バイナリトランスレータを含むバイナリトランスレータが含まれる。典型的には、シミュレータの実装形態は、シミュレータプログラム1610をサポートする、任意選択的にホストオペレーティングシステム1620を実行するホストプロセッサ1630上で実行されてもよい。いくつかの構成では、ハードウェアと提供される命令実行環境との間に複数のシミュレーション層が存在してもよく、及び/又は、同じホストプロセッサ上で提供される複数の異なる命令実行環境が存在してもよい。歴史的に、合理的な速度で実行するシミュレータの実装形態を提供するためには、強力なプロセッサが必要とされてきたが、互換性又は再利用の理由から別のプロセッサにネイティブなコードを実行したい場合など、特定の状況では、そのようなアプローチが正当化される場合がある。例えば、シミュレータの実装形態では、ホストプロセッサのハードウェアではサポートされていない追加機能を有する命令実行環境を提供すること、又は異なるハードウェアアーキテクチャに典型的に関連する命令実行環境を提供することができる。シミュレーションの概要は、「Some Efficient Architecture Simulation Techniques」、Robert Bedichek、1990年冬USENIX Conference、53~63頁に記載されている。
【0102】
これまで、特定のハードウェア構成又は機能を参照して実施形態を説明してきたが、シミュレーションされた実施形態では、同等の機能を適切なソフトウェア構成又は機能によって提供することができる。例えば、特定の回路は、シミュレーションされた実施形態において、コンピュータプログラムロジックとして実装されてもよい。同様に、レジスタ又はキャッシュなどのメモリハードウェアは、ソフトウェアのデータ構造としてシミュレーションされた実施形態で実装することができる。先に説明した実施形態で参照されるハードウェア要素の1つ以上がホストハードウェア(例えば、ホストプロセッサ1630)上に存在する構成では、いくつかのシミュレートされた実施形態は、適切な場合にはホストハードウェアを利用してもよい。
【0103】
シミュレータプログラム1610は、コンピュータ読み取り可能な記憶媒体(非一時的媒体であってもよい)に記憶されてもよく、シミュレータプログラム1610によってモデル化されているハードウェアアーキテクチャのアプリケーションプログラムインタフェースと同じであるプログラムインタフェース(命令実行環境)をターゲットコード1600(アプリケーション、オペレーティングシステム、及びハイパーバイザを含んでもよい)に提供する。このようにして、構成要求及び応答と、仲介要求及び仲介応答と、上記のデバイスアクショントリガコマンドとを含む、ターゲットコード1600のプログラム命令及びそれらの命令によってトリガされるコマンドは、シミュレータプログラム1610を使用して命令実行環境内から実行されてもよく、その結果、上記の装置400のハードウェア機能を実際には有してないホストコンピュータ1630は、これらの機能をエミュレートすることができる。
【0104】
特に、上記のインタフェースの機能は、シミュレータプログラム1610内のプログラムロジックによってエミュレートされてもよい。ターゲットコード1600が、構成要求をインタフェースに送信することを要求する命令を含む場合、プログラムロジックは、仲介要求をより高い特権のソフトウェアに転送することにより、又は要求自体を仲介することで第2のソフトウェア自体をエミュレートすることにより、インタフェースの機能をエミュレートするように構成されてもよい。したがって、構成要求及び応答と、仲介要求及び応答と、仲介のプロセスはすべて、シミュレータコード1610内でエミュレートされてもよい。したがって、いくつかの例では、第2のソフトウェアは、実際には、シミュレータプログラム1610自体である可能性がある。他の例では、シミュレータプログラム1610とは別の第2のソフトウェアがある場合がある。
【0105】
本出願において、「~ように構成されている(configured to)」という用語は、装置の要素が、定義された動作を実行することができる構成を有することを意味するために使用される。このコンテキストにおいて、「構成」は、ハードウェア又はソフトウェアの相互接続の構成又は方法を意味する。例えば、装置は、定義された動作を提供する専用ハードウェアを有してもよく、又はプロセッサ若しくは他の処理デバイスは、機能を実行するようにプログラムされてもよい。「~ように構成されている」は、定義された動作を提供するために、装置要素を任意の方法で変更する必要を意味しない。
【0106】
本発明の例示的な実施形態が添付の図面を参照して本明細書で詳細に説明されてきたが、本発明はそれらの正確な実施形態に限定されず、添付の特許請求の範囲によって定義される本発明の範囲から逸脱することなく、当業者によってさまざまな変更及び修正を行うことができることを理解されたい。

図1
図2
図3
図4
図5
図6
図7A
図7B
図8
図9
図10
図11
図12A
図12B
図13
図14
図15
図16