(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-04-11
(45)【発行日】2024-04-19
(54)【発明の名称】仮想化のためのプロセッサ特徴ID応答
(51)【国際特許分類】
G06F 9/455 20180101AFI20240412BHJP
G06F 9/48 20060101ALI20240412BHJP
【FI】
G06F9/455 150
G06F9/48 300Z
(21)【出願番号】P 2020555025
(86)(22)【出願日】2019-05-13
(86)【国際出願番号】 US2019031930
(87)【国際公開番号】W WO2019226380
(87)【国際公開日】2019-11-28
【審査請求日】2022-04-14
(32)【優先日】2018-05-25
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】314015767
【氏名又は名称】マイクロソフト テクノロジー ライセンシング,エルエルシー
(74)【代理人】
【識別番号】100079108
【氏名又は名称】稲葉 良幸
(74)【代理人】
【識別番号】100109346
【氏名又は名称】大貫 敏史
(74)【代理人】
【識別番号】100117189
【氏名又は名称】江口 昭彦
(74)【代理人】
【識別番号】100134120
【氏名又は名称】内藤 和彦
(74)【代理人】
【識別番号】100108213
【氏名又は名称】阿部 豊隆
(74)【代理人】
【識別番号】100134027
【氏名又は名称】松田 達也
(72)【発明者】
【氏名】シャーウィン,ブルース ジェイ.,ジュニア
【審査官】坂東 博司
(56)【参考文献】
【文献】特開2006-252565(JP,A)
【文献】米国特許出願公開第2012/0084777(US,A1)
【文献】特開2013-218738(JP,A)
【文献】特表2017-520959(JP,A)
【文献】米国特許出願公開第2015/0082305(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 9/455
G06F 9/48
(57)【特許請求の範囲】
【請求項1】
仮想化をサポートするための方法であって、
プロセッサ特徴ID値についてのゲストパーティションから発信された要求を物理プロセッサによって受信する前に、監視パーティションからのプロセッサ特徴ID値を前記物理プロセッサによって受信することであって、
前記プロセッサ特徴ID値は、前記ゲストパーティションのポータビリティまたはパフォーマンスの強化のために、前記監視パーティションが取得したプロセッサ特徴ID値が変更なしで記憶されるべきか、または異なる値が記憶されるべきかどうか判定して決定され、前記プロセッサ特徴ID値は、仮想マシン制御構造(VMCS)又は仮想マシン制御ブロック(VMCB)について指定され、異なるプロセッサ特徴ID値が異なるVMCS又はVMCBについて指定される、ことと、
前記物理プロセッサによってアクセス可能なハードウェアレジスタにプロセッサ特徴ID値を前記物理プロセッサによって記憶することと、
前記プロセッサ特徴ID値についてのゲストパーティションから発信された要求を前記物理プロセッサによって受信することと、
前記要求に応答して、要求されたプロセッサ特徴ID値を、前記物理プロセッサによってアクセス可能なハードウェアレジスタから前記ゲストパーティションに前記物理プロセッサによって、前記監視パーティションの介入なしに、提供することと、
を含む、方法。
【請求項2】
前記プロセッサ特徴ID値は、前記ゲストパーティション、ゲスト仮想プロセッサ、又はゲスト仮想プロセッサ仮想信頼レベルのうちの少なくとも1つのセットアップ動作と併せて前記監視パーティションから受信され、前記受信されたプロセッサ特徴ID値を前記物理プロセッサによって記憶することを含む、請求項1に記載の方法。
【請求項3】
前記ゲストパーティション、ゲスト仮想プロセッサ、又はゲスト仮想プロセッサ仮想信頼レベルのうちの少なくとも1つのセットアップ動作は、前記ゲストパーティション、ゲスト仮想プロセッサ、又はゲスト仮想プロセッサ仮想信頼レベルのうちの少なくとも1つの生成、インスタンス化、又は起動のうちの少なくとも1つを含む、請求項2に記載の方法。
【請求項4】
前記プロセッサ特徴ID値は、前記物理プロセッサによってネイティブにサポートされていない第1の特徴のサポート、又は前記物理プロセッサによってネイティブにサポートされている第2の特徴のサポートの欠如を表す、請求項1に記載の方法。
【請求項5】
前記プロセッサ特徴ID値は、前記物理プロセッサの製造元によって割り当てられた値とは異なる、請求項1に記載の方法。
【請求項6】
前記プロセッサ特徴ID値は、仮想プロセッサ又は仮想プロセッサの仮想信頼レベルコンテキストについて指定され、異なるプロセッサ特徴ID値が異なる仮想プロセッサ又は仮想プロセッサの仮想信頼レベルコンテキストについて指定される、請求項1に記載の方法。
【請求項7】
コンピューティングデバイスであって、
コンピューティングデバイスに動作を実行させるための命令を含む、命令を記憶および実行するようにそれぞれ構成されているメモリおよびプロセッサを備え、
前記動作は、
プロセッサ特徴ID値についてのゲストパーティションで実行するソフトウェアからの要求の前に、前記プロセッサ特徴ID値についてのゲストパーティションで実行するソフトウェアからの要求に応答して、前記プロセッサによって戻されるべき前記プロセッサ特徴ID値を監視パーティションにより判定することであって、
前記ゲストパーティションのポータビリティまたはパフォーマンスの強化のために、前記監視パーティションが取得したプロセッサ特徴ID値が変更なしで記憶されるべきか、または異なる値が記憶されるべきかどうか判定することを含み、前記プロセッサ特徴ID値は、仮想マシン制御構造(VMCS)又は仮想マシン制御ブロック(VMCB)について指定され、異なるプロセッサ特徴ID値が異なるVMCS又はVMCBについて指定される、ことと、
前記プロセッサがハードウェアレジスタに記憶し、後でハードウェアレジスタからの前記プロセッサ特徴ID値についての前記ソフトウェアからの要求に応答して、前記監視パーティションの介入なしに前記プロセッサが使用するために、前記監視パーティションにより、前記判定されたプロセッサ特徴ID値を前記プロセッサに提供することと、
を含むコンピューティングデバイス。
【請求項8】
前記動作は、前記プロセッサ特徴ID値についての前記ソフトウェアからの要求に応答して、前記プロセッサによる後の使用のために、前記提供されたプロセッサ特徴ID値を、前記プロセッサにより記憶することを含む、請求項7に記載のコンピューティングデバイス。
【請求項9】
前記提供されたプロセッサ特徴ID値は、前記プロセッサのプロセッサ特徴IDレジスタに記憶される、請求項7に記載のコンピューティングデバイス。
【請求項10】
前記動作は、
前記プロセッサ特徴ID値についての前記ソフトウェアからの要求を前記プロセッサにより受信することと、
前記要求に応答して、前記要求されたプロセッサ特徴ID値を、前記監視パーティションにより提供されたプロセッサ特徴ID値に基づいて、前記プロセッサにより提供することと、
を含む、請求項7に記載のコンピューティングデバイス。
【請求項11】
前記プロセッサ特徴ID値は、CPU ID値を含む、請求項7に記載のコンピューティングデバイス。
【請求項12】
前記プロセッサ特徴ID値は、前記プロセッサによってネイティブにサポートされていない少なくとも1つの特徴のサポートの表示、又は前記プロセッサによってネイティブにサポートされている少なくとも1つの他の特徴のサポートの欠如の表示を含む、請求項7に記載のコンピューティングデバイス。
【請求項13】
コンピューティングデバイス上で仮想マシンを動作させるための方法であって、
前記コンピューティングデバイス上で実行される前記仮想マシンによって、前記仮想マシンによる使用のためにプロセッサ特徴ID値が取得されるべきであると判定することと、
前記仮想マシンによって、プロセッサ特徴ID値についての要求を前記コンピューティングデバイスのプロセッサに送信することと、
前記要求に応答して、前記要求されたプロセッサ特徴ID値を前記プロセッサから受信することと、
を含み、
前記受信されたプロセッサ特徴ID値は、前記プロセッサによりアクセス可能なハードウェアレジスタに記憶されている情報から、監視パーティションの介入なしに、前記プロセッサにより提供されており、
前記プロセッサによりアクセス可能なハードウェアレジスタに記憶されている情報は、前記プロセッサの前に、前記監視パーティションにより、
前記仮想マシンのポータビリティまたはパフォーマンスの強化のために、前記監視パーティションが取得したプロセッサ特徴ID値が変更なしで記憶されるべきか、または異なる値が記憶されるべきかどうか判定して提供され、
前記プロセッサ特徴ID値は、仮想マシン制御構造(VMCS)又は仮想マシン制御ブロック(VMCB)について指定され、異なるプロセッサ特徴ID値が異なるVMCS又はVMCBについて指定されている、方法。
【請求項14】
前記要求されたプロセッサ特徴ID値は、仮想マシンエグジットなしに、前記プロセッサから受信される、請求項13に記載の方法。
【請求項15】
前記プロセッサ特徴ID値は、前記プロセッサによってネイティブにサポートされていない第1のプロセッサ特徴のサポートを表すか、又は前記プロセッサによってネイティブにサポートされている第2のプロセッサ特徴のサポートの欠如を表す、請求項13に記載の方法。
【請求項16】
前記プロセッサ特徴ID値は、前記仮想マシン、仮想プロセッサ又は仮想プロセッサの信頼レベルのうちの少なくとも1つに固有であり、異なるプロセッサ特徴ID値は、前記コンピューティングデバイス上の別の仮想マシン、別の仮想プロセッサ、又は別の仮想プロセッサの信頼レベルに固有である、請求項13に記載の方法。
【請求項17】
前記プロセッサ特徴ID値は、前記プロセッサの製造元によって割り当てられた値とは異なる、請求項13に記載の方法。
【請求項18】
前記プロセッサ特徴ID値は、CPU ID値を含む、請求項13に記載の方法。
【請求項19】
前記プロセッサ特徴ID値は、前記仮想マシン、仮想プロセッサ、又は仮想プロセッサの信頼レベルのうちの少なくとも1つのセットアップ動作と併せて前記監視パーティションから受信され、前記仮想マシン、仮想プロセッサ、又は仮想プロセッサの信頼レベルのうちの前記少なくとも1つの前記セットアップ動作は、前記仮想マシン、仮想プロセッサ、又は仮想プロセッサの信頼レベルの生成、インスタンス化、又は起動のうちの少なくとも1つを含む、請求項13に記載の方法。
【発明の詳細な説明】
【背景技術】
【0001】
仮想化技術が様々な状況において採用されている。例えば、仮想化技術は、ゲストパーティションから物理コンピューティングリソースを抽出し、物理コンピューティングリソースの利用率を高めることを可能にし、物理デバイス間でゲストパーティションのポータビリティを可能にし、ゲストパーティション内で実行される悪意のあるおよび/または誤ったコードから物理コンピューティングリソースを保護し、秘密を保護し、セキュリティ要件またはポリシーを強化するなどのために採用されている。以前の仮想化技術では、特定の動作に応答して、ゲストエグジット(例えば、ゲストパーティションからハイパーバイザなどの監視パーティションへのプロセッサの制御の移行)が発生する場合がある。例えば、ゲストエグジットは、プロセッサ特徴ID情報についての要求に応答して発生する場合がある。
【発明の概要】
【0002】
この概要は、以下の発明を実施するための形態でさらに説明される選定された概念を簡略化された形式で紹介するために提供される。この概要は、特許請求される主題の主要な特徴または本質的な特徴を特定することを意図しておらず、特許請求される主題の範囲を制限するために使用されることも意図していない。
【0003】
簡単に言えば、開示される技術は、概して、仮想化技術を対象としている。開示される技術は、仮想マシン(VM)、仮想化アプリケーション、仮想化ベースのセキュリティ(VBS)ユーザモードプロセス、VBSカーネルモードプロセス、または他のゲストパーティションによって、またはそれらから要求されたプロセッサ特徴ID情報をプロセッサによって提供することを含む。そのような情報は、例えば、ハイパーバイザなどの監視パーティションによって、プロセッサに事前に提供される情報に基づいて提供され得る。開示される技術はまた、例えば、そのような情報をプロセッサに提供する監視パーティションを含み、そのような情報を受信するゲストパーティションを含む。
【0004】
開示される技術の他の態様および用途は、添付の図および説明を読んで理解することで認識されよう。
【図面の簡単な説明】
【0005】
本開示の非限定的かつ非網羅的な例が、以下の図面を参照しながら説明される。図面では、同様の参照番号は、特に明記しない限り、様々な図全体を通して同様の部分を指す。これらの図面は、必ずしも縮尺どおりに描かれているわけではない。
【0006】
本開示をよりよく理解するために、添付の図面と併せて読まれるべきである、以下の発明を実施するための形態について言及する。
【
図1】開示される技術の態様による好適なコンピューティングデバイスの一例の物理図を示すブロック図である。
【
図2】開示される技術の態様による例示的なコンピューティングデバイスの論理図を示すブロック図である。
【
図3】開示される技術の態様による例示的なプロセスを示す。
【
図4】開示される技術の追加の態様による別の例示的なプロセスを示す。
【
図5】開示される技術の他の態様によるさらに別の例示的なプロセスを示す。
【発明を実施するための形態】
【0007】
以下の説明は、本技術の様々な例を完全に理解し、説明を可能にするための具体的な詳細を提供する。当業者は、本技術がこれらの多くの詳細なしに実践され得ることを理解されよう。場合によっては、本技術の例の説明を不必要に曖昧にすることを避けるために、公知の構造および機能は、詳細には図示または説明されていない。本開示で使用される用語は、本技術の特定の例の詳細な説明と併せて使用されている場合でも、その最も広い合理的な方法で解釈されるべきであることが意図されている。以下で特定の用語を強調する場合があるが、制限された方法で解釈されることを意図されているいかなる用語も、この発明を実施するための形態の項では、そのように明確かつ具体的に定義される。本明細書および特許請求の範囲を通じて、以下の用語は、文脈が別段の指示をしない限り、少なくとも本明細書に明示的に関連付けられた意味をとる。以下で識別される意味は、必ずしも用語を制限するものではなく、単に用語の説明的な例を提供するものである。例えば、「に基づく(based on)」および「に基づく(based upon)」という用語の各々は、それぞれ排他的でなく、「に少なくとも部分的に基づく」という用語と同等であり、本明細書にそのいくつかが記載されていない場合がある追加の要因に基づく選択肢を含む。別の例として、「を介して」という用語は排他的でなく、「を少なくとも部分的に介して」という用語と同等であり、本明細書にそのいくつかが記載されていない可能性がある追加の要因を介する選択肢を含む。「において」の意味は、「において」および「の上で」を含む。本明細書で使用される「一実施形態において」または「一例において」という句は、必ずしも同じ実施形態または例を指すとは限らないが、そうである場合もある。特定のテキスト数値指定子の使用は、より小さい値の数値指定子の存在を示唆するものではない。例えば、「3番目のfooおよび4番目のbarから構成されるグループから選択されたウィジェット」と具陳すること自体は、少なくとも3つのfooがあることを示唆せず、また少なくとも4つのbarがあることを示唆しない。単数形での言及は、単に読みやすくするために行われており、複数形の言及が特に除外されていない限り、複数形の言及を含む。「または」という用語は、特に明示されていない限り、包括的「または」演算子である。例えば、「AまたはB」という句は、「A、B、またはAおよびB」を意味する。本明細書で使用される場合、「コンポーネント」および「システム」という用語は、ハードウェア、ソフトウェア、またはハードウェアとソフトウェアの様々な組み合わせを包含することを意図している。したがって、例えば、システムまたはコンポーネントは、プロセス、コンピューティングデバイス上で実行されるプロセス、コンピューティングデバイス、またはそれらの一部であり得る。
【0008】
簡潔に言えば、開示される技術は、概して、仮想化技術を対象としている。開示される技術は、仮想マシン(VM)、仮想化アプリケーション、仮想化ベースのセキュリティ(VBS)ユーザモードプロセス、VBSカーネルモードプロセス、または他のゲストパーティションによって、またはそれらから要求されたプロセッサ特徴ID情報をプロセッサによって提供することを含む。例えば、そのような要求は、ゲストパーティション内のゲスト仮想プロセッサ上で実行されるコードによって生成され得る。そのような情報は、例えば、ハイパーバイザなどの監視パーティションによって、プロセッサに事前に提供される情報に基づいて提供され得る。開示される技術はまた、例えば、そのような情報をプロセッサに提供する監視パーティションを含み、そのような情報を受信するゲストパーティションを含む。
【0009】
いくつかの例では、開示される技術は、仮想化/仮想化されたシステム内で採用され得る。例えば、本技術は、ハイパーバイザ、仮想マシン、仮想化アプリケーション、仮想化ベースのセキュリティ(VBS)ユーザモードプロセス、VBSカーネルモードプロセスなどと併せて採用することができる。例えば、本技術は、ハイパーバイザまたは他の監視パーティションによって、プロセッサ特徴ID情報の事前計算、またはそれを他の方法で判定することと、例えば、ゲストパーティションからの、プロセッサ特徴ID情報についての要求に応答する際の後で使用のために、判定されたプロセッサ特徴ID情報をコンピューティングデバイスのプロセッサに提供することと、を含み得る。例えば、ゲストパーティションからのそのような情報についての要求は、その後、監視パーティションの介入なしにプロセッサによって処理することができる。
【0010】
開示される技術の使用は、監視パーティションコードを実行するためにシステムがゲストコードの実行で終了するVMエグジットまたは他のゲストエグジットの頻度を低減および/または排除するために採用され得る。ゲストエグジットの一例として、プロセッサ特徴ID情報に対するゲストのクエリに応答して、監視パーティションプロセスは、ゲストパーティションからプロセッサの制御を取得し、プロセッサのプロセッサ特徴IDレジスタをセットアップし、次に、プロセッサの制御をゲストパーティションに戻すことができる。
【0011】
特定の以前の仮想化システムでは、ゲストパーティションから実行される特定の動作に応答してゲストエグジットが発生する。例えば、ゲストエグジットは、CPU IDまたは他のプロセッサ特徴ID情報が要求されるゲストパーティションから実行される動作に応答して発生する場合がある。そのようなエグジットは、通常、時間、電力、およびコンピューティングパフォーマンスの点で「高価」である。例えば、ゲストエグジットは、ゲストパーティションコード(例えば、意図されたワークロード)よりも、監視パーティションコード(例えば、オーバーヘッド)のための処理帯域幅の使用に関連付けられ得る。ゲストエグジットはまた、監視パーティションコードなどによるプロセッサデータおよび/または命令キャッシュ位置の上書きによる追加のコンテキスト切り替えオーバーヘッドに関連付けられ得る。
【0012】
例示的な物理コンピューティングデバイス
図1は、本技術の態様を実践することができるコンピューティングデバイス100の物理図の一例を示す図である。コンピューティングデバイス100は、事実上、任意のタイプの汎用または特定目的のコンピューティングデバイスであり得る。例えば、コンピューティングデバイス100は、デスクトップコンピュータ、ラップトップコンピュータ、タブレットコンピュータ、ディスプレイデバイス、カメラ、プリンタ、またはスマートフォンなどのユーザデバイスであり得る。同様に、コンピューティングデバイス100はまた、アプリケーションサーバコンピュータ、仮想コンピューティングホストコンピュータ、またはファイルサーバコンピュータなどのサーバデバイスであり得る。コンピューティングデバイス100はまた、IoTサービスを受信するためにネットワークに接続するIoTデバイスであり得る。同様に、コンピュータデバイス100は、以下でより詳細に考察されるように、
図2~
図5において示されるかまたは言及されるデバイスのいずれかの例であり得る。
図1に示すように、コンピューティングデバイス100は、処理回路110、動作メモリ120、メモリコントローラ130、データ記憶メモリ150、入力インターフェース160、出力インターフェース170、およびネットワークアダプタ180を含む。コンピューティングデバイス100のこれらの前述のコンポーネントの各々は、少なくとも1つのハードウェア要素を含む。
【0013】
コンピューティングデバイス100は、本明細書で説明するワークロード、プロセス、または技術を実装するための命令などの命令を実行するように構成されている少なくとも1つの処理回路110を含む。処理回路110は、マイクロプロセッサ、マイクロコントローラ、グラフィックスプロセッサ、コプロセッサ、フィールドプログラマブルゲートアレイ、プログラマブルロジックデバイス、信号プロセッサ、またはデータを処理するのに好適な他の任意の回路を含み得る。処理回路110は、コアの一例である。前述の命令は、他のデータ(例えば、データセット、メタデータ、オペレーティングシステム命令など)とともに、コンピューティングデバイス100の実行中に動作メモリ120に記憶され得る。動作メモリ120はまた、揮発性メモリ、半揮発性メモリ、ランダムアクセスメモリ、スタティックメモリ、キャッシュ、バッファ、または実行時の情報を記憶するために使用される他の媒体などの様々なデータ記憶デバイス/コンポーネントのいずれかを含み得る。一例では、動作メモリ120は、コンピューティングデバイス100の電源がオフにされたときに情報を保持しない。むしろ、コンピューティングデバイス100は、起動または他のロードプロセスの一部として、不揮発性データ記憶コンポーネント(例えば、データ記憶コンポーネント150)から動作メモリ120に命令を転送するように構成され得る。
【0014】
動作メモリ120は、第4世代のダブルデータレート(DDR4)メモリ、第3世代のダブルデータレート(DDR3)メモリ、他のダイナミックランダムアクセスメモリ(DRAM)、高帯域幅メモリ(HBM)、ハイブリッドメモリキューブメモリ、3Dスタックメモリ、スタティックランダムアクセスメモリ(SRAM)、または他のメモリを含み得、そのようなメモリは、DIMM、SIMM、SODIMM、または他のパッケージに統合された1つ以上のメモリ回路を含み得る。そのような動作メモリモジュールまたはデバイスは、チャネル、ランク、およびバンクに従って編成することができる。例えば、動作メモリデバイスは、チャネル内のメモリコントローラ130を介して処理回路110に結合され得る。コンピューティングデバイス100の一例は、チャネルごとに1つまたは2つのDIMMを含み得、チャネルごとに1つまたは2つのランクを含む。ランク内の動作メモリは、共有クロック、ならびに共有アドレスおよびコマンドバスで動作する場合がある。また、動作メモリデバイスはいくつかのバンクに編成される場合があり、バンクは、行と列によってアドレス指定されるアレイと考えることができる。このような動作メモリの編成に基づいて、動作メモリ内の物理アドレスは、チャネル、ランク、バンク、行、および列のタプルによって参照される場合がある。
【0015】
上記の考察にもかかわらず、動作メモリ120は、具体的には、通信媒体、任意の通信媒体、または任意の信号自体を含まないか、または包含しない。
【0016】
メモリコントローラ130は、処理回路110を動作メモリ120とインターフェース接続するように構成されている。例えば、メモリコントローラ130は、動作メモリ120と処理回路110との間でコマンド、アドレス、およびデータをインターフェース接続するように構成され得る。メモリコントローラ130はまた、処理回路110からまたは処理回路110のために、メモリ管理の特定の態様を抽出するか、または他の方法で管理するように構成され得る。メモリコントローラ130は、処理回路110とは別の単一のメモリコントローラとして示されているが、他の例では、複数のメモリコントローラを採用することができ、メモリコントローラ(複数可)を動作メモリ120などと統合することができる。さらに、メモリコントローラ(複数可)は、処理回路110に統合され得る。これらおよび他の変形態が可能である。
【0017】
コンピューティングデバイス100では、データ記憶メモリ150、入力インターフェース160、出力インターフェース170、およびネットワークアダプタ180が、バス140によって処理回路110にインターフェース接続されている。
図1は、バス140を単一のパッシブバスとして示しているが、バスの集合、ポイントツーポイントリンクの集合、入出力コントローラ、ブリッジ、他のインターフェース回路、またはそれらの任意の集合などの他の構成もまた、データ記憶メモリ150、入力インターフェース160、出力インターフェース170、またはネットワークアダプタ180を処理回路110にインターフェース接続するために好適に採用されてもよい。
【0018】
コンピューティングデバイス100では、データ記憶メモリ150は、長期の不揮発性データ記憶のために採用される。データ記憶メモリ150は、不揮発性メモリ、ディスク、ディスクドライブ、ハードドライブ、ソリッドステートドライブ、または情報の不揮発性記憶に使用することができる他の任意の媒体など、様々な不揮発性データ記憶デバイス/コンポーネントのいずれかを含み得る。しかしながら、データ記憶メモリ150は、具体的には、通信媒体、任意の通信媒体、または任意の信号自体を含まないか、または包含しない。動作メモリ120とは対照的に、データ記憶メモリ150は、実行時データ記憶ではなく、不揮発性の長期データ記憶のためにコンピューティングデバイス100によって採用される。
【0019】
また、コンピューティングデバイス100は、プロセッサ可読記憶媒体(例えば、動作メモリ120およびデータ記憶メモリ150)ならびに通信媒体(例えば、通信信号および電波)などの任意のタイプのプロセッサ可読媒体を含むか、またはそれらに結合され得る。プロセッサ可読記憶媒体という用語は、動作メモリ120およびデータ記憶メモリ150を含むが、「プロセッサ可読記憶媒体」という用語は、本明細書および特許請求の範囲全体で、単数形で使用されるか複数形で使用されるかにかかわらず、「プロセッサ可読記憶媒体」という用語が、通信媒体、任意の通信媒体、または任意の信号自体を特に除外し、これらを包含しないように、本明細書において定義されている。しかしながら、「プロセッサ可読記憶媒体」という用語は、プロセッサキャッシュ、ランダムアクセスメモリ(RAM)、レジスタメモリなどを包含する。
【0020】
コンピューティングデバイス100はまた、コンピューティングデバイス100がユーザまたは他のデバイスからの入力を受信することを可能にするように構成され得る、入力インターフェース160を含む。さらに、コンピューティングデバイス100は、コンピューティングデバイス100からの出力を提供するように構成され得る、出力インターフェース170を含む。一例では、出力インターフェース170は、フレームバッファ、グラフィックスプロセッサ、グラフィックスプロセッサまたはアクセラレータを含み(モニタ、プロジェクタ、仮想コンピューティングクライアントコンピュータなどの)、別個の視覚的ディスプレイデバイス上に提示するための表示をレンダリングするように構成されている。別の例では、出力インターフェース170は、視覚的ディスプレイデバイスを含み、閲覧のために表示をレンダリングおよび提示するように構成されている。さらに別の例では、入力インターフェース160および/または出力インターフェース170は、ユニバーサル非同期受信機/送信機(「UART」)、シリアルペリフェラルインターフェース(「SPI」)、インター集積回路(「I1C」)、汎用入出力(GPIO)などを含み得る。さらに、入力インターフェース160および/または出力インターフェース170は、任意の数もしくはタイプの周辺機器を含むか、またはそれらにインターフェース接続され得る。
【0021】
図示の例では、コンピューティングデバイス100は、ネットワークアダプタ180を介して、他のコンピューティングデバイスまたはエンティティと通信するように構成されている。ネットワークアダプタ180は、有線ネットワークアダプタ、例えば、イーサネットアダプタ、トークンリングアダプタ、またはデジタル加入者線(DSL)アダプタを含み得る。ネットワークアダプタ180はまた、無線ネットワークアダプタ、例えば、Wi-Fiアダプタ、Bluetoothアダプタ、ZigBeeアダプタ、Long Term Evolution(LTE)アダプタ、または5Gアダプタを含み得る。
【0022】
コンピューティングデバイス100は、特定の配置で構成されている特定のコンポーネントとともに示されているが、これらのコンポーネントおよび配置は、本技術が採用され得るコンピューティングデバイスの一例にすぎない。他の例では、データ記憶メモリ150、入力インターフェース160、出力インターフェース170、またはネットワークアダプタ180は、処理回路110に直接結合され得るか、または入出力コントローラ、ブリッジ、もしくは他のインターフェース回路を介して処理回路110に結合され得る。技術の他の変形態が可能である。
【0023】
コンピューティングデバイス100のいくつかの例は、実行時データを記憶するように適合された少なくとも1つのメモリ(例えば、動作メモリ120)と、実行に応答してコンピューティングデバイス100がアクションを実行できるようにする、プロセッサ実行可能コードを実行するように適合された少なくとも1つのプロセッサ(例えば、処理ユニット110)とを含む。
【0024】
例示的な論理コンピューティングデバイス
図2は、本技術の態様を実践することができるコンピューティングデバイス200の論理図の一例を示す図である。コンピューティングデバイス200は、
図1のコンピューティングデバイス100の一例であり得る。
図2の図では、コンピューティングデバイス200の論理コンポーネントは、ゲストパーティション211~213、監視パーティション230、物理リソース241~243、およびプロセッサ特徴ID250を含む。
【0025】
物理リソース241~243は、プロセッサコンポーネント、入出力(I/O)コンポーネント、および/または他のコンポーネントもしくはデバイスなど、様々な物理コンポーネントを含む場合がある。例えば、物理リソース241~243は、
図1に関連して考察されるものなど、物理コンポーネントの好適な組み合わせを含む場合がある。コンピューティングデバイス200の一部として示されているが、1つ以上の物理リソース241~243(例えば、1つ以上のデータ記憶メモリ)は、コンピューティングデバイス200の外部に実装することができる。監視パーティション230を含む、コンピューティングデバイス200上で実行される様々なコンポーネントまたはモジュールは、物理リソース241~243を介して提供される機能(複数可)に直接および/または他のコンポーネントもしくはモジュールを介して間接的にアクセスすることができる。
【0026】
監視パーティション230は、任意の数のゲストパーティション、例えば、ゲストパーティション211~213を生成することができる。ゲストパーティション211~213の各々は、VM、仮想化アプリケーション、VBS実行環境、ユーザモードプロセスなどであり得る。例えば、ゲストパーティション211は、オペレーティングシステム(OS)221とアプリケーション222を備えたVMとして示され、ゲストパーティション212は、仮想化アプリケーション223として示され、ゲストパーティション224は、プロセス224がそこから実行されるものとして示されている。
【0027】
ゲストパーティション211~213の各々は、オペレーティングシステムおよび/または他のソフトウェアが実行される分離の論理ユニットである。ゲストパーティション211~213の各々はまた、ゲスト仮想プロセッサを含み得る。ゲストパーティション211~213の各々内で実行されるソフトウェアは、他のゲストパーティションの各々内で実行されるソフトウェアから分離されている。例えば、ゲストパーティション211~213の各々内で実行されるソフトウェアは、他のゲストパーティションの各々内で実行されるソフトウェアにアクセスすることができず、それを認識する必要はない。物理リソース241~243はゲストパーティション211~213に仮想化され、物理リソース241~243へのアクセスは監視パーティション230によって管理される。
【0028】
図示のように、コンピューティングデバイス100は監視パーティション230を含む。監視パーティション230は、物理リソース241~243によって提供される機能へのアクセスを管理する仮想マシンモニタなどのハイパーバイザを含み得る。別の例では、監視パーティション230は、VBSを採用するOSなど、OSのカーネルまたはカーネルモードプロセスである。
【0029】
コンピューティングデバイス200はまた、1つ以上のプロセッサ特徴ID250を含む。例えば、プロセッサ特徴ID250は、x86 CPU IDリーフ情報を含むレジスタ(またはレジスタのセット)、高度縮小命令セット計算マシン(ARM)プロセッサのIDレジスタなど、物理プロセッサの物理ハードウェアIDレジスタ(またはレジスタのセット)を表すことができる。プロセッサ特徴ID250はまた、プロセッサによってサポートされている特徴、プロセッサによってサポートされている特徴セット、プロセッサの物理的特性などを表すことができる。例えば、プロセッサ特徴ID250は、プロセッサ周波数、サポートされる物理アドレス幅、クロック乗数、電力設定、命令の可用性、ステッピング番号、シリアル番号などを表すことができる。
【0030】
例示的なプロセス
明確にするために、本明細書で説明されるプロセスは、システムの特定のデバイスまたはコンポーネントによって特定の順序で実行される動作に関して説明される。しかしながら、他のプロセスは、記載された順序、デバイス、またはコンポーネントに限定されないことが分かる。例えば、特定の行為は、そのような順序、並行性、行為、または特徴が本明細書に記載されているかどうかにかかわらず、異なる順序で実行され、並行して実行され、省略され得るか、または追加の行為もしくは特徴によって補足され得る。同様に、本開示に記載されている技術のいずれも、その技術がプロセスと併せて具体的に説明されているかどうかにかかわらず、説明されているプロセスまたは他のプロセスに組み込むことができる。開示されるプロセスはまた、そのようなデバイス、コンポーネント、またはシステムが本明細書に記載されているかどうかにかかわらず、他のデバイス、コンポーネント、またはシステム上で、またはそれらによって実行され得る。これらのプロセスはまた、様々な方法で具体化することもできる。例えば、それらは、例えば、プロセッサ可読記憶媒体に記憶されたプロセッサ可読命令として製造品に具体化されるか、またはコンピュータ実装プロセスとして実行され得る。代替の例として、これらのプロセスは、プロセッサ実行可能命令としてエンコードされ、通信媒体を介して送信され得る。
【0031】
図3は、コンピューティングデバイスのプロセッサ、例えば、
図1の処理回路110または
図2の物理リソース241、242、または243の観点から示される例示的なプロセス300を示す。プロセス300は、プロセッサ特徴IDについての要求が受信される381において開始する。例えば、この要求は物理プロセッサによって受信され得、この要求はゲストパーティションから発信され得る。例えば、この要求は、ゲストパーティション内のゲスト仮想プロセッサ上で実行されるコードによって生成され得る。
【0032】
381から、処理は382に流れ、ここで、例えば、プロセッサは、プロセッサ特徴IDを検索する。一例では、プロセッサは、プロセッサ特徴IDレジスタ、プロセッサにアクセス可能なメモリ構造、プロセッサ特徴IDルックアップテーブルなどからプロセッサ特徴IDを検索する。この検索はまた、例えば、
図4のプロセス400と併せてさらに考察されるように、ハイパーバイザまたは他の監視パーティションによってプロセッサに事前に提供された情報に基づくことができる。
【0033】
次に、処理は383に流れ、そこで、例えば、ゲストエグジットなしで、プロセッサ特徴IDが提供される。これは、プロセッサが、ゲストパーティションからの要求プロセスなどに対して、要求されたプロセッサ特徴IDをゲストパーティションに提供することを含む場合がある。提供されるプロセッサ特徴IDは、プロセッサに事前に提供された情報に基づくことができる。383に続いて、処理は他の動作に戻る。
【0034】
図4は、監視パーティション、例えば、ハイパーバイザの観点から示されている例示的なプロセス400を示す。例えば、プロセス400は、
図2の監視パーティション230の観点から示されている。
【0035】
プロセス400は、プロセッサ特徴IDの値が取得される481において開始する。この値は、ゲストパーティション、ゲスト仮想プロセッサ、またはゲスト仮想プロセッサ仮想信頼レベルのうちの少なくとも1つのセットアップ動作と併せて、またはそれに応答して、監視パーティションによって取得され得る。例えば、そのようなセットアップ動作は、ゲストパーティション、ゲスト仮想プロセッサ、またはゲスト仮想プロセッサ仮想信頼レベルの生成、インスタンス化、または起動のうちの少なくとも1つを含み得る。値は、例えば、コンピューティングデバイスの物理プロセッサの対応するハードウェアレジスタ値を読み取ることによって取得することができる。一例として、取得されたプロセッサ特徴ID値は、物理プロセッサの製造元によって割り当てられた値(例えば、オンチップ値)であり得、ならびに/またはプロセッサによってサポートされている特徴/特徴セットを表すおよび/もしくは示すことができる。
【0036】
任意選択的に、処理は、482に流れ、そこで、記憶されるプロセッサ特徴IDが計算されるか、または他の方法で判定される。例えば、482は、取得されたプロセッサ機能ID値が変更なしで記憶されるべきかどうか、または異なる値が記憶されるべきかどうかを判定することを含み得る。例えば、監視パーティションが、例えば、ゲストパーティションのポータビリティ、パフォーマンスの強化、および/または他の理由のために、プロセッサによってネイティブにサポートされているものとは異なるプロセッサ特徴のセットをゲストパーティションに「供給」する場合、異なる値が記憶され得る。482において、取得されたプロセッサ機能ID値の複数の値も判定され得、例えば、各々は、異なるゲストパーティションおよび/またはゲスト仮想プロセッサおよび/または信頼レベルコンテキストに関連付けられ、および/またはそれらに対して指定され得る。いくつかの例では、異なるプロセッサ機能ID値は、仮想プロセッサコンテキストまたは仮想プロセッサの仮想信頼レベルコンテキストごとに採用され得る。仮想プロセッサコンテキストまたは仮想プロセッサの仮想信頼レベルコンテキストごとの例は、仮想マシン制御構造(VMCS)、仮想マシン制御ブロック(VMCB)、ゲストコンテキストを含むシステムレジスタのセット、またはゲストコンテキストの他の仮想化命令セットアーキテクチャ固有コレクションである。
【0037】
処理は483に流れ、そこで、482のプロセッサ特徴IDがプロセッサに提供される。例えば、監視パーティションは、プロセッサ特徴ID情報についてのゲストパーティションソフトウェアからの要求に応答する際のプロセッサによる後の使用のために、482で判定されたプロセッサ特徴IDをプロセッサに提供することができる。483において、プロセッサはまた、監視パーティションからこのプロセッサ特徴ID情報を受信することができる。
【0038】
その後、処理は484に流れる。484において、提供されたプロセッサ特徴IDが記憶される。例えば、484は、プロセッサに、提供されたプロセッサ特徴IDを記憶させる監視プロセスによるアクション、および/または記憶を実行するためにプロセッサによって行われるアクションを含み得る。例えば、この記憶は、プロセッサ特徴IDをプロセッサ特徴IDレジスタ、メモリ内のプロセッサ特徴IDルックアップテーブルなどに記憶することを含み得る。さらに別の例では、監視パーティションコードは、ID_REGISTER_WRITE命令などのプロセッサインターフェース命令を介して、プロセッサ特徴IDを記憶することができる。
【0039】
さらに別の例では、プロセッサ特徴IDは、プロセッサにアクセス可能なメモリ構造に書き込まれ得、そのメモリ構造の位置は、プロセッサレジスタにプログラムされ得る。この例および他の例では、例えば、異なるゲストパーティション、異なるVMCS、仮想プロセッサコンテキスト、信頼レベルコンテキストなどに対して異なるプロセッサ機能ID値の使用を可能にするために、複数のメモリ構造を採用することができる。使用中、異なるメモリ構造間のコンテキスト切り替えは、例えば、あるゲストパーティション、ゲスト仮想プロセッサ、またはゲスト仮想プロセッサ仮想信頼レベルから別のゲストパーティション、ゲスト仮想プロセッサ、またはゲスト仮想プロセッサ仮想信頼レベルへのプロセッサ切り替えの制御に応答して、プロセッサまたは監視パーティションコード230のいずれかによって実行され得る。
【0040】
任意選択的に、484はまた、ゲストパーティションからの所与の要求に対して複数の値/メモリ構造のうちの適切な値/メモリ構造にプロセッサを向ける条件式をプロセッサに記憶することを含み得る。例えば、式は、ID_REGISTER_WRITE(VP_CONTEXT、REGISTER_NAME、CONDITIONAL、VALUE)命令などの命令を介して記憶することができる。
【0041】
上で考察されるように、この記憶はまた、プロセッサによる、プロセッサ特徴IDのその後の使用を可能にして、ゲストエグジットを引き起こさずにゲストパーティションからの要求に応答することができる。プロセス400は、追加のプロセッサ機能IDのために繰り返され得るか、または複数のプロセッサ機能IDが、プロセス400の単一の繰り返しで取得、判定、提供、かつ記憶され得る。484に続いて、処理は、他の動作に戻る。
【0042】
図5は、ゲストパーティション、例えば、
図2のゲストパーティション211、212、または213の観点から示されている例示的なプロセス500を示す。プロセス500は581において開始し、そこで、プロセッサ特徴IDが取得されるべきであるという判定が行われる。例えば、この判定は、ゲストパーティションから実行されるアプリケーションまたは他のプロセスからのプロセッサ特徴ID情報についての要求に応答して、ゲストパーティションによって、またはゲストパーティション上で行われ得る。別の例として、この判定は、仮想マシンで使用するためにプロセッサ特徴IDを取得するという仮想マシンによる要求を表す場合がある。
【0043】
次に、処理は582に流れ、そこで、プロセッサ特徴IDについての要求がゲストパーティションから送信される。この要求は、プロセッサに送信される場合がある。582の要求に応答して、583において、プロセッサ特徴IDがプロセッサから受信され得る。上で考察されるように、受信されたプロセッサ特徴IDは、監視パーティションによってプロセッサに事前に提供された情報と一致し得る。583から、処理は584に流れ得、そこで、受信されたプロセッサ特徴IDがリクエスタ、例えば、ゲストパーティション上のアプリケーションまたは他のプロセスに提供される。584に続いて、処理は他の動作に戻る。
結論
【0044】
上記の発明を実施するための形態は、本技術の特定の例を説明し、考えられる最良のモードを説明するが、上記のことが本文でどれほど詳細に表わされていても、本技術は多くの方法で実践することができる。詳細は、実装において異なる場合があるが、依然として本明細書に記載の技術に包含されている。上記のように、本技術の特定の特徴または態様を説明するときに使用される特定の用語は、その用語が関連する特定の特性、特徴、または態様に限定されるように、その用語が本明細書において再定義されていることを示唆するとみなすべきではない。一般に、以下の特許請求の範囲で使用される用語は、発明を実施するための形態がそのような用語を明示的に定義していない限り、本技術を本明細書で開示される特定の例に限定するものと解釈されるべきではない。したがって、本技術の実際の範囲は、開示される例だけでなく、本技術を実践または実装するためのすべての同等な方法も包含する。