x86仮想化命令のリスト

ハードウェア仮想化をサポートするためにx86 命令セットに追加された命令セット拡張。これらの拡張は、仮想実行コンテキストへの出入り命令と、ゲストとホストの状態を保持する仮想マシン制御構造(VMCS)のロード命令、および仮想マシン内のプロセッサの動作を制御するフィールドを提供します。

AMD-V説明書

命令 オペコード 指示の説明 使用者 追加された
基本的なSVM(セキュア仮想マシン)命令[1]
INVLPGA rAX,ECX[あ] 0F 01 DF rAX で指定された仮想ページと ECX で指定された ASID (アドレス空間識別子) の TLB マッピングを無効にします。 VMM K8 [b]
VMRUN rAX[あ] 0F 01 D8 rAX 内の物理アドレスで指定された VMCB (仮想マシン制御ブロック) によって管理される仮想マシンを実行します。
VMLOAD rAX[あ] 0F 01 DA rAXレジスタの物理アドレスで指定されたVMCBからプロセッサ状態の特定のサブセットをロードします。[c] 通常、VMM [d]
VMSAVE rAX[あ] 0F 01 DB プロセッサ状態の特定のサブセットをrAXレジスタの物理アドレスで指定されたVMCBに保存します。[c]
STGI 0F 01 DC GIF (グローバル割り込みフラグ) を設定します。 通常、VMM [e]
CLGI 0F 01 DD クリアなGIF。
VMMCALL NFx 0F 01 D9 VMEXIT を発生させてゲストから VM モニターを呼び出します。 ゲスト
SKINIT EAX 0F 01 DE 認証付きセキュア初期化およびジャンプ。CPU
を既知の状態に初期化し、EAXで指定された64KBのメモリ領域をSLB(「セキュアローダーブロック」)として指定し、メモリ領域のコピーをシステムTPMに送信してデジタル署名による検証を行い、SLBにジャンプします。
VMM トゥリオン「ライオン」[2]
オプテロン「シャンハイ」
フェノムII
セキュア暗号化仮想化(SEV):暗号化状態(SEV-ES)命令
VMGEXIT F2/F3 0F 01 D9 SEV-ES VMMへの出口。SEV
-ES VMはVMMと明示的に通信します。[f]
ゲスト 禅1
セキュアネストページング(SEV-SNP):リバースマップテーブル(RMP)命令
PSMASH F3 0F 01 FF ページスマッシュ:2MBページのRMPエントリを、対応する連続した4KBページのRMPエントリセットに拡張します。2MBページのシステム物理アドレスはRAXレジスタで指定されます。 VMM 禅3
RMPUPDATE F2 0F 01 FE 新しいRMPエントリを書き込みます。RMPエントリが変更されたページのシステム物理アドレスは、RAXレジスタで指定されます。RCXレジスタは、新しいRMP状態を含む16バイトのデータ構造の実効アドレスを提供します。
PVALIDATE F2 0F 01 FF ゲストページのRMPエントリの検証を有効または無効にする。ゲストの仮想アドレスはレジスタオペランドrAXで指定される。[a] ゲスト
RMPADJUST F3 0F 01 FE ゲストページのRMP権限を調整します。ゲストの仮想アドレスはRAXレジスタで指定します。ページサイズはRCX[0]で指定します。ターゲットVMPL(仮想マシン特権レベル)とその権限はRDXレジスタで指定します。
RMPQUERY F3 0F 01 FD ゲストページのRMPパーミッションマスクを読み取ります。ゲスト仮想アドレスはRAXレジスタで指定します。ターゲットVMPLはRDX[7:0]で指定します。指定されたVMPLのRMPパーミッションはRDX[63:8]とRCXレジスタで返されます。 ゲスト 禅4
RMPREAD F2 0F 01 FD RMPエントリを読み取ります。RMPエントリを読み取るページのシステム物理アドレスは、RAXレジスタで指定します。RCXレジスタは、RMPエントリが書き込まれる16バイトのデータ構造の実効アドレスを提供します。 VMM 禅5
  1. ^ abcde 、、、および命令rAX 引数の場合、AX/EAX/RAX の選択はアドレス サイズによって決まり、67h プレフィックスで上書きできます。VMRUNVMLOADVMSAVEINVLPGAPVALIDATE
  2. ^ AMD-V のサポートは AMD K8 のステッピング F で追加され、それ以前のステッピングでは利用できません。
  3. ^ ab 命令VMRUNはCPU状態の限定されたサブセットのみをロードします。追加の状態をロードするには、VMLOAD事前に実行する必要があります。同様に、#VMEXIT はゲスト状態のうち限定された量のみをVMCBに保存するため、追加の状態を保存するために必要です。VMMが/によって処理される状態項目を使用する必要がない単純なインターセプト条件では、VMMは で仮想マシンに再入する前に/を実行しないことでパフォーマンスを向上させることができますVMRUN
    VMSAVE
    VMSAVEVMLOADVMSAVEVMLOADVMRUN
  4. ^ VMLOAD/VMSAVE 仮想化をサポートする CPU ( Excavator以降) では、VMLOADおよびVMSAVE命令をゲスト モードでも実行できます。
  5. ^ 仮想 GIF をサポートする CPU ( Excavator以降) では、STGIおよびCLGI命令をゲスト モードでも実行できます。
  6. ^ は 、SEV-ES ゲストによって実行されていないかのようVMGEXITに実行されます。VMMCALL

Intel 仮想化命令。VT-x は、VIA および Zhaoxin の一部のプロセッサでもサポートされています。

命令 オペコード 指示の説明 [a]によって使用される 追加された
VMX(仮想マシン拡張機能)の基本的な手順
VMXON m64[b] F3 0F C7 /6 VMX操作に入る – ハードウェアでサポートされている仮想化環境に入ります。[c] VMM プレスコット 2M
ヨナ
センタートン
VIA Nano 2000 [d]
VMXOFF NP 0F 01 C4 VMX 操作を終了する - ハードウェアでサポートされている仮想化環境を停止します。
VMPTRLD m64[b] NP 0F C7 /6 メモリから仮想マシン制御構造 (VMCS) へのポインターをロードし、有効としてマークします。
VMPTRST m64[b] NP 0F C7 /7 現在の VMCS へのポインタをメモリに格納します。
VMCLEAR m64[b] 66 0F C7 /6 VMCSデータをCPUからメモリ内のVMCS領域にフラッシュします。指定されたVMCSが現在のVMCSである場合、現在のVMCSは無効としてマークされます。
VMLAUNCH NP 0F 01 C2 現在の VMCS によって管理されている仮想マシンを起動します。
VMRESUME NP 0F 01 C3 現在の VMCS によって管理されている仮想マシンを再開します。
VMREAD r/m,reg NP 0F 78 /r 現在のVMCSから指定されたフィールドを読み取ります。reg引数は読み取るフィールドを指定します。結果は に格納されますr/m 通常、VMM [e]
VMWRITE reg,r/m NP 0F 79 /r 現在のVMCSの指定されたフィールドに書き込みます。reg引数は書き込むフィールドを指定し、r/m引数はそのフィールドに書き込むデータ項目を提供します。
VMCALL NP 0F 01 C1 VMEXIT を発生させてゲストから VM モニターを呼び出します。 通常、ゲスト[f]
拡張ページテーブル(EPT)命令
INVEPT reg,m128 66 0F 38 80 /r TLBおよびページング構造キャッシュ内のEPT由来のエントリを無効化します。reg引数は無効化の種類を指定し、メモリ引数は128ビットの記述子を指定します。[g] VMM ネハレム
センタートン[4]
張江
INVVPID reg,m128 66 0F 38 81 /r VPID(仮想プロセッサID)に基づいて、TLBおよびページング構造キャッシュ内のエントリを無効化します。引数はreg無効化の種類を指定し、メモリ引数は128ビットの記述子を指定します。[h]
VMFUNC NP 0F 01 D4 EAXで指定されたVM関数を呼​​び出します。[i] ゲスト ハスウェル
シルバーモント
陸家嘴
信頼ドメイン拡張(TDX):セキュアアービトレーションモード(SEAM)命令[6]
SEAMOPS 66 0F 01 CE SEAM固有の操作を呼び出す。実行する操作はRAXで指定される。[j] SEAM
ルート
サファイアラピッズ[7])、
エメラルドラピッズ[8]
SEAMRET 66 0F 01 CD SEAM VMX ルート操作から従来の VMX ルート操作に戻ります。
SEAMCALL 66 0F 01 CF 従来の VMX ルート操作から SEAM VMX ルート操作を呼び出します。 VMM
TDCALL 66 0F 01 CC VMEXIT を発生させて、TD ゲストから VM モニターを呼び出します。 TDゲスト
  1. ^ VMゲスト内でVT-x VMM命令を実行すると、VMEXITが発生します。VMX
    操作が を介して開始されていない場合VMXON、すべてのVT-x命令( を除くVMXON)は#UDを引き起こします。
  2. ^ abcd 、、およびの m64 引数は64 ビットの物理アドレスです。VMPTRLDVMPTRSTVMCLEARVMXON
  3. ^ m64 引数はVMXON、「VMXON領域」への64ビット物理アドレスです。これは4KBの領域であり、4KB境界でアラインメントされている必要があります。この領域は、プロセッサが実装依存の方法でVMX操作をサポートするために使用される場合があり、プロセッサがVMXOFF命令によってVMX操作を終了するまで、ソフトウェアからアクセスしてはなりません。複数の論理CPUを備えたシステムでは、複数のCPUでVMX操作を開始するには、各CPUごとに個別の「VMXON領域」が必要です。
  4. ^ VIA Nano CPUでは、VMXはステップ3以降でのみサポートされます。[3]
  5. ^ 「VMCS シャドウイング」が有効になっている場合 ( Haswell以降で利用可能)、VMREADおよびVMWRITE命令もゲストで実行できます。
  6. ^ このVMCALL命令は VMM でも実行できます。実行すると、特別な SMM VM 終了が発生します。
  7. ^ の引数に使用できる無効化タイプは次のとおりです。 regINVEPT
    価値 関数
    1 シングルコンテキストの無効化: 記述子のビット 63:0 の EPT ポインタに関連付けられたすべてのマッピングを無効にします。
    2 グローバル無効化: すべての EPT ポインターに関連付けられたすべてのマッピングを無効にします。
  8. ^ の引数に使用できる無効化タイプは次のとおりです。 regINVVPID
    価値 関数
    0 記述子で指定された線形アドレスとVPIDのマッピングを無効にします。
    (とは異なりINVLPGINVVPID非正規アドレスで使用すると失敗します。[5]
    1 記述子に指定された VPID のすべてのマッピングを無効にします。
    2 全コンテキストの無効化: VPID 0 を除くすべての VPID のマッピングをすべて無効にします。
    3 グローバル変換を除き、記述子に指定された VPID のすべてのマッピングを無効にします。
  9. ^ EAXレジスタで 使用できる機能は次のとおりです。VMFUNC
    イーアックス 関数
    0 EPTP切り替え:拡張ページテーブルポインタを、VMホストによって事前に用意された最大512個のテーブルポインタのいずれかに切り替えます。ECX
    は、512個のポインタのうちどれを使用するかを指定します。
    1-63 (予約済み、VMEXIT が発生します)
    ≥64 無効です。#UD が発生します。
  10. ^ RAX レジスタで 使用できる操作は次のとおりです。SEAMOPS
    ラックス 手術
    0 (機能) RAX でサポートされている SEAMOPS リーフのビットマップを返します。
    1 (シームレポート) SEAMREPORT 構造を生成します。

    RAX でサポートされていない値を指定すると、#GP(0) 例外が発生します。

参考文献

  1. ^ AMD、AMD64仮想化コードネーム「Pacifica」テクノロジー、発行番号33407、改訂3.01、2005年5月。2011年6月13日アーカイブ。
  2. ^ CPU-World、AMD Turion 64 X2 RM-75のCPUID、2022年3月5日。2023年4月19日アーカイブ。
  3. ^ Jesse Ahrens、「Re: KVM on Via Nano (Isaiah) CPUs?」、KVM メーリング リスト、2009 年 4 月 1 日。
  4. ^ Intel、「Intel® Atom™ プロセッサー S1200 製品ファミリー (Microserver 向け) データシート」、第 1 巻/全 2 巻、注文番号 328194-001、2012 年 12 月、44 ページ。2012 年 12 月 24 日にアーカイブ。
  5. ^ Vulners、VMX:非正規アドレスでのINVLPGのインターセプト問題、2016年1月20日。2021年7月28日アーカイブ。
  6. ^ Intel、「Trust Domain CPU Architectural Extensions」、注文番号343754-002、2021年5月。2022年12月26日アーカイブ。
  7. ^ SecurityWeek、Intelが第4世代Xeonプロセッサーの発売に合わせて機密コンピューティングポートフォリオにTDXを追加、2023年1月10日。2023年1月10日アーカイブ。
  8. ^ Intel、「Intel XeonプロセッサーはIntel Trust Domain Extensions(Intel TDX)をサポートしていますか?」、2024年6月11日 - Emerald Rapids CPUではTDXが一般市場で入手可能ですが、Sapphire Rapids CPUでは限定的に入手可能です。2024年6月13日アーカイブ。
「https://en.wikipedia.org/w/index.php?title=List_of_x86_virtualization_instructions&oldid=1297925843」から取得