機能とインターフェイスの検出

このセクションでは、ゲスト ソフトウェアがハイパーバイザーの存在を検出し、アーキテクチャ固有の検出メカニズムを使用してその機能、機能、バージョン情報を照会する方法について説明します。

機能とインターフェイスの検出 (x64)

ゲスト ソフトウェアは、さまざまなメカニズムを通じてハイパーバイザーと対話します。 これらの多くは、基になるプロセッサと対話するためにソフトウェアによって使用される従来のメカニズムを反映しています。 そのため、これらのメカニズムはアーキテクチャ固有です。 x64 アーキテクチャでは、次のメカニズムが使用されます。

  • CPUID 命令 – 静的な機能とバージョン情報に使用されます。
  • MSR (モデル固有のレジスタ) – 状態と制御値に使用されます。
  • メモリ マップト レジスタ – 状態と制御値に使用されます。
  • プロセッサ割り込み – 非同期イベント、通知、およびメッセージに使用されます。

ハイパーバイザーは、これらのアーキテクチャ固有のインターフェイスに加えて、 ハイパーコールを使用して実装された単純な手続き型インターフェイスを提供します。

ハイパーバイザー検出

ハイパーバイザー インターフェイスを使用する前に、ソフトウェアはまず、仮想化された環境内で実行されているかどうかを判断する必要があります。 この仕様に準拠する x64 プラットフォームでは、これは入力 (EAX) 値 1 で CPUID 命令を実行することによって行われます。 実行時に、コードはレジスタ ECX のビット 31 ("ハイパーバイザー存在ビット") を確認する必要があります。 このビットが設定されている場合、ハイパーバイザーが存在します。 非仮想化環境では、ビットは明確になります。

CPUID.01h.ECX:31 // if set, virtualization present

"ハイパーバイザーの現在のビット" が設定されている場合は、準拠しているハイパーバイザーとその機能の詳細について、追加の CPUID リーフを照会できます。 このような葉は、 0x400000000x40000001の2つであることが保証されています。 続いて番号付きの葉も利用可能である。

Standard ハイパーバイザーの CPUID リーフ

0x40000000のリーフが照会されると、ハイパーバイザーは、ハイパーバイザーの最大 CPUID リーフ番号とベンダー ID 署名を提供する情報を返します。

Register 提供される情報
EAX ハイパーバイザー CPUID 情報の最大入力値
EBX ハイパーバイザー ベンダー ID 署名
ECX ハイパーバイザー ベンダー ID 署名
EDX ハイパーバイザー ベンダー ID 署名

0x40000001のリーフが照会されると、ベンダーに依存しないハイパーバイザー インターフェイスの識別を表す値が返されます。 これにより、 0x4000002 から 0x400000FFまでの葉のセマンティクスが決まります。

Register 提供される情報
EAX ハイパーバイザー インターフェイス署名。
EBX 予約済み
ECX 予約済み
EDX 予約済み

これら 2 つのリーフを使用すると、ゲストはハイパーバイザー ベンダー ID とインターフェイスに対して個別にクエリを実行できます。 ベンダー ID は、情報提供と診断の目的でのみ提供されます。 ソフトウェアは、リーフ 0x40000001を介して報告されるインターフェイス署名に基づく互換性の決定のみにすることをお勧めします。

Microsoft ハイパーバイザー CPUID リーフ

Microsoft ハイパーバイザー CPUID インターフェイスに準拠しているハイパーバイザーでは、 0x400000000x40000001 リーフ レジスタの値は次のようになります。

ハイパーバイザー CPUID リーフ範囲 - 0x40000000

EAX は、ハイパーバイザー CPUID リーフの最大数を決定します。 ハイパーバイザー ベンダー ID 署名を含む EBX-EDX。 ベンダー ID 署名は、レポートと診断の目的でのみ使用する必要があります。

Register 提供される情報
EAX ハイパーバイザー CPUID 情報の最大入力値。 Microsoft ハイパーバイザーでは、これは少なくとも 0x40000005になります。
EBX 0x7263694D— "Micr"
ECX 0x666F736F— "osof"
EDX 0x76482074— "t Hv"

ハイパーバイザー ベンダーに依存しないインターフェイスの識別 - 0x40000001

EAX には、ハイパーバイザー インターフェイス識別署名が含まれています。 これにより、 0x40000002 から 0x400000FFまでの葉のセマンティクスが決まります。

Register 提供される情報
EAX 0x31237648— "Hv#1"
EBX 予約済み
ECX 予約済み
EDX 予約済み

"Hv#1" インターフェイスに準拠するハイパーバイザーでも、少なくとも次のリーフが提供されます。

ハイパーバイザー システム ID - 0x40000002

Register ビット 提供される情報
EAX ビルド番号
EBX 31-16 メジャーバージョン
15-0 軽微なバージョン

ハイパーバイザー機能の識別 - 0x40000003

EAX と EBX は、現在のパーティション特権に基づいて、パーティションで使用できる機能を示します。

Register ビット 提供される情報
EAX HV_PARTITION_PRIVILEGE_MASKのビット 31 から 0 に対応します
EBX HV_PARTITION_PRIVILEGE_MASKのビット 63 から 32 に対応します
ECX 4-0 予約済み
5 インバリアント Mperf を使用できます
6 スーパーバイザ シャドウ スタックが使用可能
7 アーキテクチャ PMU を使用できます
例外トラップインターセプトが使用可能
31-9 予約済み
EDX 0 非推奨 (以前に示した MWAIT 命令の可用性)
1 ゲスト デバッグのサポートを利用できます
2 パフォーマンス モニターのサポートを利用できます
3 物理 CPU 動的パーティション分割イベントのサポートを利用できます
4 XMM レジスタを介したハイパーコール入力パラメーター ブロックの受け渡しのサポートを利用できます
5 仮想ゲストのアイドル状態のサポートを利用できます
6 ハイパーバイザーのスリープ状態のサポートを利用できます
7 NUMA 距離のクエリのサポートを利用できます
タイマー周波数の決定のサポートを利用できます
9 合成マシンチェックの挿入のサポートを利用できます
10 ゲスト クラッシュ MSR のサポートを利用できます
11 デバッグ MSR のサポートを利用できます
12 NPIEP のサポートを利用できます
13 DisableHypervisorAvailable
14 ExtendedGvaRangesForFlushVirtualAddressListAvailable
15 XMM レジスタを介してハイパーコール出力を返すサポートを利用できます
16 予約済み
17 SintPollingModeAvailable
18 HypercallMsrLockAvailable
19 直接合成タイマーを使用する
20 VSM で使用可能な PAT レジスタのサポート
21 (二十一) VSM で利用できる bndcfgs レジスタのサポート
22 予約済み
23 合成時間のアンハルト タイマーのサポートが利用可能
25-24 予約済み
26 サポートされている Intel の Last Branch Record (LBR) 機能
31-27 予約済み

実装に関する推奨事項 - 0x40000004

最適なパフォーマンスのために OS が実装することをハイパーバイザーが推奨する動作を示します。

Register ビット 提供される情報
EAX 0 MOV から CR3 命令ではなく、アドレス空間スイッチにハイパーコールを使用することをお勧めします。
1 INVLPG または MOV から CR3 命令ではなく、ローカル TLB フラッシュにハイパーコールを使用することをお勧めします。
2 プロセッサ間割り込みではなく、リモート TLB フラッシュにハイパーコールを使用することをお勧めします。
3 APIC レジスタの EOI、ICR、および TPR にアクセスするために、メモリ マップされた対応するレジスタではなく、MSR を使用することをお勧めします。
4 ハイパーバイザーによって提供される MSR を使用してシステムリセットを開始することをお勧めします。
5 このパーティションには緩やかなタイミングを使用することをお勧めします。 VM を使用する場合は、外部割り込みのタイムリーな配信に依存するウォッチドッグ タイムアウトを無効にする必要があります。
6 DMA の再マッピングの使用をお勧めします。
7 割り込み再マップの使用をお勧めします。
予約済み。
9 AutoEOI を非推奨にすることをお勧めします。
10 SyntheticClusterIpi ハイパーコールの使用をお勧めします。
11 新しい ExProcessorMasks インターフェイスを使用することをお勧めします。
12 ハイパーバイザーが Hyper-V パーティション内に入れ子になっていることを示します。
13 MBEC システム呼び出しに INT を使用することをお勧めします。
14 対応する VMCS インターフェイスを使用して、入れ子になったハイパーバイザーを推奨します。 また、追加の入れ子になった対応が使用できる可能性があることを示します (リーフ 0x4000000Aを参照)。
15 UseSyncedTimeline – パーティションがルート パーティションによって提供される QueryPerformanceCounter バイアスを使用する必要があることを示します。
16 予約済み
17 UseDirectLocalFlushEntire – ゲストが CR4 を切り替える必要があることを示します。PGE は TLB 全体をフラッシュします。これはハイパーコールを行うよりもパフォーマンスが高くなります。
18 NoNonArchitecturalCoreSharing - コア共有が不可能であることを示します。 これは、STIBP のパフォーマンス オーバーヘッドを回避するための最適化として使用できます。
31-19 予約済み
EBX エラーについてハイパーバイザーに通知する前に、スピンロックエラーを再試行する試行回数を推奨します。 0xFFFFFFFFは、通知しない旨を示します。
ECX 6-0 ImplementedPhysicalAddressBits – システムの物理プロセッサによって報告される物理アドレス幅 (MAXPHYADDR) を報告します。 すべてのビットに 0 が含まれている場合、この機能はサポートされていません。 報告される値は物理アドレス ビットの実際の数であり、その数を表すために使用されるビット位置ではないことに注意してください。
31-7 予約済み
EDX 予約済み

ハイパーバイザー実装の制限 - 0x40000005

現在のハイパーバイザー実装でサポートされているスケール制限について説明します。 値が 0 の場合、ハイパーバイザーは対応する情報を公開しません。それ以外の場合は、これらの意味があります。

Register 提供される情報
EAX サポートされている仮想プロセッサの最大数
EBX サポートされている論理プロセッサの最大数
ECX 割り込み再マップに使用できる物理割り込みベクトルの最大数。
EDX 予約済み

実装ハードウェア機能 - 0x40000006

どのハードウェア固有の機能が検出され、現在ハイパーバイザーで使用されているかを示します。

Register ビット 提供される情報
EAX 0 APIC オーバーレイ アシストのサポートが検出され、使用中です。
1 MSR ビットマップのサポートが検出され、使用中です。
2 アーキテクチャ パフォーマンス カウンターのサポートが検出され、使用中です。
3 第 2 レベルのアドレス変換のサポートが検出され、使用中です。
4 DMA 再マッピングのサポートが検出され、使用中です。
5 割り込み再マップのサポートが検出され、使用中です。
6 メモリ 巡回スクラバーがハードウェアに存在することを示します。
7 DMA 保護が使用されています。
HPET が要求されます。
9 合成タイマーは揮発性です。
13-10 現在のゲストのハイパーバイザー レベル - 入れ子になっていない場合は '0' です。
14 物理宛先モードが必要です。
15 エイリアス マップ スイッチには VMFUNC を使用します。
16 ハードウェア メモリゼロのサポートが存在します。
17 無制限ゲストのサポートが存在します。
18 リソースの割り当て (RDT-A、PQOS-A) のサポートが存在します。
19 リソース監視 (RDT-M、PQOS-M) のサポートが存在します。
20 ゲスト仮想 PMU のサポートが存在します。
21 (二十一) ゲスト仮想 LBR のサポートが存在します。
22 ゲスト仮想 IPT のサポートが存在します。
23 APIC エミュレーションのサポートが存在します。
二十四 ACPI WDAT テーブルが検出され、ハイパーバイザーによって使用中です。
31-25 予約済み
EBX 予約済み
ECX 予約済み
EDX 予約済み

入れ子になったハイパーバイザー機能の識別 - 0x40000009

入れ子になった状態で実行するときにハイパーバイザーによってパーティションに公開される機能について説明します。 EAX では、仮想 MSR へのアクセスについて説明します。 EDX では、ハイパーコールへのアクセスについて説明します。

Register ビット 提供される情報
EAX 1-0 予約済み
2 AccessSynicRegs
3 予約済み
4 AccessIntrCtrlRegs
5 AccessHypercallMsrs
6 AccessVpIndex
11-7 予約済み
12 AccessReenlightenmentControls
31-13 予約済み
EBX 予約済み
ECX 予約済み
EDX 3-0 予約済み
4 XmmRegistersForFastHypercallAvailable
14-5 予約済み
15 FastHypercallOutputAvailable
16 予約済み
17 SintPollingModeAvailable
31-18 予約済み

ハイパーバイザーの入れ子になった仮想化機能 - 0x4000000A

入れ子になったハイパーバイザーで使用できる入れ子になった仮想化の最適化を示します。

Register ビット 提供される情報
EAX 7-0 対応 VMCS バージョン (低)
15-8 対応 VMCS バージョン (高)
16 予約済み
17 直接仮想フラッシュ ハイパーコールのサポートを示します。
18 HvCallFlushGuestPhysicalAddressSpace および HvCallFlushGuestPhysicalAddressList ハイパーコールのサポートを示します (x64 プラットフォーム上)。
19 対応する MSR ビットマップの使用のサポートを示します。
20 ページ フォールト例外クラスで仮想化例外を組み合わせることのサポートを示します。
21 (二十一) VMCS の 0x00002802 (GuestIa32DebugCtl) フィールドの 0 以外の値のサポートを示します。
22 AMD プラットフォームでの対応 TLB のサポートを示します。 ASID フラッシュは、NPT から派生した TLB エントリには影響しません。 NPT TLB エントリを無効にするには、ハイパーコールを使用する必要があります。 HvCallFlushGuestPhysicalAddressSpace と HvCallFlushGuestPhysicalAddressList ハイパーコールのサポートも示します。
31-21 予約済み
EBX 0 対応する VMCS の GuestPerfGlobalCtrl フィールドと HostPerfGlobalCtrl フィールドのサポートを示します。
31-1 予約済み
ECX 予約済み
EDX 予約済み

バージョン管理

ハイパーバイザーのバージョン情報は、リーフ 0x40000002でエンコードされます。 メイン バージョンとサービス バージョンの 2 つのバージョン番号が用意されています。

メイン バージョンには、メジャー バージョン番号とマイナー バージョン番号とビルド番号が含まれます。 これらは、Microsoft Windows のリリース番号に対応しています。 サービスバージョンは、メインバージョンに加えられた変更を記述します。

クライアントは、CPUID を使用してハイパーバイザー機能をチェックすることを強くお勧めします。バージョン範囲と比較するのではなく、0x40000003を使用して0x40000005を残します。

機能とインターフェイスの検出 (ARM64)

ARM64 アーキテクチャでは、機能とインターフェイスの検出に次のメカニズムが使用されます。

  • HvCallGetVpRegisters を使用した HvRegister クエリ – 静的な機能とバージョン情報に使用されます。
  • メモリ マップト レジスタ – 状態と制御値に使用されます。

ハイパーバイザーは、これらのアーキテクチャ固有のインターフェイスに加えて、 ハイパーコールを使用して実装された単純な手続き型インターフェイスを提供します。

ハイパーバイザー検出

ほとんどのハイパーバイザー インターフェイスを使用する前に、ソフトウェアはまず、仮想化された環境内で実行されているかどうかを判断する必要があります。

ARM64 では、ゲスト ソフトウェアは SMCCC (SMC 呼び出し規則) 標準インターフェイスを使用してハイパーバイザーを検出できます。 検出は、X0 の関数 ID 0xC600FF0 を持つ HVC または SMC 命令を使用して実行されます (これは、64 ビットベンダー固有のハイパーバイザー呼び出しVENDOR_HYP_FUNCTION_CODE_UIDに対応します)。 この呼び出しは、0 の imm16 を含む SMCCC 規則に従います。 Microsoft ハイパーバイザーは、GUID 4d32ba58-cd24-4764-8eef-6c7516597024を表す次の値を返します。

Register 価値
X0 0x4d32ba58
X1 0xcd244764
X2 0x8eef6c75
X3 0x16597024

ハイパーバイザーが検出されると、ゲスト ソフトウェアは HvCallGetVpRegisters ハイパーコール を使用して合成レジスタを介してハイパーバイザー機能を照会できます。 ゲスト OS ID レジスタが設定される前に、いくつかのキー レジスタを照会できるため、起動時にハイパーバイザー機能を早期に検出できます。

ハイパーバイザー機能レジスタ

ARM64 プラットフォームは、CPUID 命令ではなく、合成レジスタを使用してハイパーバイザー情報を照会します。 これらのレジスタは、対応する x64 CPUID に相当する情報を提供し、 HvCallGetVpRegisters 経由でアクセスします。 すべての機能レジスタは、128 ビット値を返します。

ハイパーバイザー システム ID - HvRegisterHypervisorVersion

128 ビット値でエンコードされたバージョン情報を返します。 レイアウトは x64 CPUID リーフ 0x40000002と同じです。x64 レジスタ値は 128 ビットの結果にパックされます (ビット 31-0 の EAX、ビット 63-32 の EBX、ビット 95 から 64 の ECX、ビット 127 から 96 の EDX)。

ハイパーバイザー機能の識別 - HvRegisterPrivilegesAndFeaturesInfo

x64 CPUID リーフ 0x40000003に相当します。 現在のパーティション特権に基づいて、パーティションで使用できる機能を示します。 次のフィールドを含む 128 ビット値を返します。

ビット 提供される情報
31-0 HV_PARTITION_PRIVILEGE_MASKのビット 31 から 0 に対応します
63-32 HV_PARTITION_PRIVILEGE_MASKのビット 63 から 32 に対応します
64 ゲスト デバッグのサポートを利用できます。
65 パフォーマンス モニターのサポートを利用できます。
66 物理 CPU 動的パーティション分割イベントのサポートを利用できます。
67 仮想ゲストアイドル状態のサポートを利用できます。
68 ハイパーバイザーのスリープ状態のサポートを利用できます。
69 NUMA 距離のクエリのサポートを利用できます。
70 タイマー周波数の決定をサポートしています。
71 合成マシンのチェックの挿入のサポートを利用できます。
72 ゲスト クラッシュ レジスタのサポートを利用できます。
73 予約済み。
74 DisableHypervisorAvailable。
75 予約済み。
76 SintPollingModeAvailable。
77 直接合成タイマーを使用します。
127-78 予約済み。

実装に関する推奨事項 - HvRegisterFeaturesInfo

x64 CPUID リーフ 0x40000004に相当します。 最適なパフォーマンスのために OS が実装することをハイパーバイザーが推奨する動作を示します。 128 ビット値を返します。

ビット 提供される情報
0 UseHvRegisterForReset - ARM64 では、これは常に false です (パーティションでは、代わりに PSCI SYSTEM_RESETを使用する必要があります)。
1 このパーティションには緩やかなタイミングを使用することをお勧めします。 VM を使用する場合は、外部割り込みのタイムリーな配信に依存するウォッチドッグ タイムアウトを無効にする必要があります。
2 SyntheticClusterIpi ハイパーコールの使用をお勧めします。 ARM64 では、ルート パーティション (ICC_SGI1R_EL1を直接使用する必要があります) の場合は false、ゲスト パーティションの場合は true です。
3 新しい ExProcessorMasks インターフェイスを使用することをお勧めします。
4 ハイパーバイザーが Hyper-V パーティション内に入れ子になっていることを示します。
5 パーティションがルート パーティションによって提供される QueryPerformanceCounter バイアスを使用する必要があることを示します。
20-6 予約済み
21 (二十一) UseHypercallForMmioAccess
22 UseGpaPinningHypercall
23 WakeVps
25-24 予約済み
26 MapPartitionEventLogBuffer
31-27 予約済み
63-32 エラーについてハイパーバイザーに通知する前に、スピンロックエラーを再試行する試行回数を推奨します。 0xFFFFFFFFは、通知しない旨を示します。
127-64 予約済み

ハイパーバイザー実装の制限 - HvRegisterImplementationLimitsInfo

現在のハイパーバイザー実装でサポートされているスケール制限について説明します。 値が 0 の場合、ハイパーバイザーは対応する情報を公開しません。 x64 CPUID リーフ 0x40000005と同じレイアウトの 128 ビット値を返 します。x64 レジスタ値は 128 ビットの結果にパックされます (EAX はビット 31-0、EBX はビット 63-32、ECX はビット 95-64、EDX はビット 127-96)。

実装ハードウェア機能 - HvRegisterHardwareFeaturesInfo

x64 CPUID リーフ 0x40000006に相当します。 どのハードウェア固有の機能が検出され、現在ハイパーバイザーで使用されているかを示します。 128 ビット値を返します。

ビット 提供される情報
0 アーキテクチャ パフォーマンス カウンターのサポートが検出され、使用中です。
1 第 2 レベルのアドレス変換のサポートが検出され、使用中です。
2 DMA 再マッピングのサポートが検出され、使用中です。
3 割り込み再マップのサポートが検出され、使用中です。
4 メモリ 巡回スクラバーがハードウェアに存在することを示します。
5 DMA 保護が使用されています。
6 合成タイマーは揮発性です。
127-7 予約済み

コア パフォーマンス監視ユニット (PMU) イベントの種類

Arm アーキテクチャのコア PMU イベントのベースライン セットは、すべての ARM64 プラットフォームのゲスト パーティションで使用できます。 その他のコア PMU イベントは、Azure Cobalt 100 および Azure Cobalt 200 で利用できます。 イベント番号と名前は、Arm アーキテクチャの PMU イベント定義に従います。

ゲスト ソフトウェアは、 MIDR_EL1 レジスタを読み取り、実装者、バリアント、アーキテクチャ、パーツ、またはリビジョン の各フィールドをマスクすることなく、次の表の値と完全に等しいかどうかを低い 32 ビットで比較することで、プラットフォームを識別できます。 これは、追加のコア PMU イベントの種類にアクセスする前に使用できるかどうかを判断するために推奨されるヒューリスティックです。

Platform MIDR_EL1
Azure コバルト 100 0x410FD490
Azure Cobalt 200 0x410FD841

次の表では、チェックマーク (✓) は、対応するプラットフォームのゲスト パーティションでコア PMU イベントの種類がサポートされていることを示しています。

イベント番号 イベント名 すべての ARM64 プラットフォーム Azure コバルト 100 Azure Cobalt 200
0x0000 SW_INCR
0x0001 L1I_CACHE_REFILL
0x0002 L1I_TLB_REFILL
0x0003 L1D_CACHE_REFILL
0x0004 L1D_CACHE
0x0005 L1D_TLB_REFILL
0x0008 INST_RETIRED
0x0010 BR_MIS_PRED
0x0011 CPU_CYCLES
0x0012 BR_PRED
0x0013 MEM_ACCESS
0x0014 L1I_CACHE
0x0016 L2D_CACHE
0x0017 L2D_CACHE_REFILL
0x001A MEMORY_ERROR
0x001B INST_SPEC
0x001C TTBR_WRITE_RETIRED
0x0020 L2D_CACHE_ALLOCATE
0x0021 BR_RETIRED
0x0022 BR_MIS_PRED_RETIRED
0x0023 STALL_FRONTEND
0x0024 STALL_BACKEND
0x0025 L1D_TLB
0x0026 L1I_TLB
0x0029 L3D_CACHE_ALLOCATE
0x002D L2D_TLB_REFILL
0x002F L2D_TLB
0x0031 REMOTE_ACCESS
0x0034 DTLB_WALK
0x0035 ITLB_WALK
0x0036 LL_CACHE_RD
0x0037 LL_CACHE_MISS_RD
0x0039 L1D_CACHE_LMISS_RD
0x003A OP_RETIRED
0x003B OP_SPEC
0x003C STALL
0x003D STALL_SLOT_BACKEND
0x003E STALL_SLOT_FRONTEND
0x003F STALL_SLOT
0x0040 L1D_CACHE_RD
0x0041 L1D_CACHE_WR
0x0042 L1D_CACHE_REFILL_RD
0x0043 L1D_CACHE_REFILL_WR
0x0044 L1D_CACHE_REFILL_INNER
0x0045 L1D_CACHE_REFILL_OUTER
0x0046 L1D_CACHE_WB_VICTIM
0x004C L1D_TLB_REFILL_RD
0x004D L1D_TLB_REFILL_WR
0x004E L1D_TLB_RD
0x004F L1D_TLB_WR
0x0050 L2D_CACHE_RD
0x0051 L2D_CACHE_WR
0x0052 L2D_CACHE_REFILL_RD
0x0053 L2D_CACHE_REFILL_WR
0x0056 L2D_CACHE_WB_VICTIM
0x005C L2D_TLB_REFILL_RD
0x005D L2D_TLB_REFILL_WR
0x005E L2D_TLB_RD
0x005F L2D_TLB_WR
0x0066 MEM_ACCESS_RD
0x0067 MEM_ACCESS_WR
0x0068 UNALIGNED_LD_SPEC
0x0069 UNALIGNED_ST_SPEC
0x0070 LD_SPEC
0x0071 ST_SPEC
0x0073 DP_SPEC
0x0074 ASE_SPEC
0x0075 VFP_SPEC
0x0077 CRYPTO_SPEC
0x0078 BR_IMMED_SPEC
0x007A BR_INDIRECT_SPEC
0x01B8 L2D_CACHE_L1HWPRF
0x01B9 L2D_CACHE_REFILL_L1HWPRF
0x4004 CNT_CYCLES
0x4005 STALL_BACKEND_MEM
0x4006 L1I_CACHE_LMISS
0x4009 L2D_CACHE_LMISS_RD
0x4020 LDST_ALIGN_LAT
0x4021 LD_ALIGN_LAT
0x4022 ST_ALIGN_LAT
0x4024 MEM_ACCESS_CHECKED
0x4025 MEM_ACCESS_CHECKED_RD
0x4026 MEM_ACCESS_CHECKED_WR
0x8006 SVE_INST_SPEC

バージョン管理

ハイパーバイザーのバージョン情報は HvRegisterHypervisorVersion でエンコードされます。 この形式は、対応する x64 と一致します。