x86/x86-64 CPU 上のハードウェア支援仮想化

x86 仮想化は、 x86 / x86-64 CPU上でハードウェア支援による仮想化機能を使用することです

1990年代後半、x86仮想化は複雑なソフトウェア技術によって実現され、プロセッサのハードウェア支援による仮想化機能の欠如を補いながら、妥当なパフォーマンスを達成するために必要でした。2005年と2006年には、IntelVT-x)とAMDAMD-V)の両社が、よりシンプルな仮想化ソフトウェアを可能にする限定的なハードウェア仮想化サポートを導入しましたが、速度面でのメリットはほとんどありませんでした。[ 1 ]大幅な速度向上を可能にする、より広範なハードウェアサポートは、後のプロセッサモデルで実現されました。

ソフトウェアベースの仮想化

[編集]

以下の説明では、x86 アーキテクチャ保護モードの仮想化のみに焦点を当てます。

保護モードでは、オペレーティング システム カーネルはカーネル空間内で最高権限レベル (リング0)で実行され、 MMUの構成、物理メモリの管理、I/O 周辺機器の直接制御が可能になります。一方、アプリケーションはユーザー空間内でより低い権限レベル (リング 3 など) で実行され、独自の仮想アドレス空間に制限されるため、システム コールを呼び出してカーネルから I/O 操作やその他の権限サービスを要求する必要があります。

ソフトウェアベースの仮想化では、ホストOSはハードウェアに直接アクセスできますが、ゲストOSはホストOSの他のユーザー空間アプリケーションと同様に、ハードウェアへのアクセスが制限されています。x86ソフトウェアベースの仮想化でこのメカニズムを実装する手法の一つに、リング特権解除( ring deprivileging )があります。これは、ゲストOSを0よりも高い(より低い権限を持つ)リングで実行することで、特権命令の実行をハイパーバイザーが傍受し、処理できるようにするものです。[ 2 ]

保護モードの仮想化を可能にしたのは、次の 3 つの技術です。

  • バイナリ変換は、 POPFなどの特定のリング0命令をリング3命令に書き換えるために使用されます。これらの命令は、そうでなければ、リング0より上で実行されたときに暗黙的に失敗したり、異なる動作をしたりするため、 [ 3 ] [ 4 ] : 3 従来のトラップアンドエミュレート仮想化は不可能になります。[ 4 ] : 1  [ 5 ]パフォーマンスを向上させるには、変換された基本ブロックを、コードパッチ(たとえばVxDで使用)、ゲストOSによるページの再利用、さらには自己書き換えコードを検出する一貫した方法でキャッシュする必要があります[ 6 ]
  • プロセッサが使用する主要なデータ構造の多くはシャドウイングする必要がある。ほとんどのオペレーティングシステムはページングされた仮想メモリを使用しており、ゲスト OS にMMUへの直接アクセスを許可すると仮想化マネージャによる制御が失われるため、x86 MMU の作業の一部を、シャドウページテーブルと呼ばれる手法を使用してゲスト OS 用にソフトウェアで複製する必要がある[ 7 ] : 5  [ 4 ] : 2 これには、アクセス試行をトラップし、代わりにソフトウェアでエミュレートすることで、ゲスト OS による実際のページテーブルエントリへのアクセスを拒否することが含まれる。x86 アーキテクチャは、セグメント記述子をプロセッサに格納するために隠し状態を使用するため、セグメント記述子がプロセッサにロードされると、ロード元のメモリが上書きされる可能性があり、プロセッサから記述子を取得する方法がない。したがって、シャドウ記述子テーブルを使用して、ゲスト OS による記述子テーブルの変更を追跡する必要がある。[ 5 ]
  • I/Oデバイスエミュレーション:ゲストOS上でサポートされていないデバイスは、ホストOS上で動作するデバイスエミュレータによってエミュレートする必要がある。 [ 8 ]

これらの技術は、IBM System/370などのネイティブに仮想化可能なアーキテクチャ上で実行されるVMと比較して、MMU仮想化サポートが不足しているため、パフォーマンスのオーバーヘッドが発生します[ 4 ]:10  [ 9 ]:17および21 

従来のメインフレームでは、古典的なタイプ1ハイパーバイザーは自立型であり、いかなるオペレーティングシステムにも依存せず、ユーザーアプリケーション自体も実行しませんでした。対照的に、初期のx86仮想化製品はワークステーションコンピュータを対象としており、ホストOS上で動作するカーネルモジュールにハイパーバイザーを埋め込むことで、ホストOS内でゲストOSを実行していました(タイプ2ハイパーバイザー)。[ 8 ]

ハードウェア支援のないx86アーキテクチャがPopekとGoldbergによって説明されたように仮想化可能かどうかについては、議論がある。VMwareの研究者は2006年のASPLOS論文で、上記の技術により、古典的なトラップ・アンド・エミュレート技術ではないものの、PopekとGoldbergの3つの基準を満たすという意味でx86プラットフォームを仮想化できると指摘した。[ 4 ]:2–3 

DenaliL4Xenといった他のシステムでは、準仮想化と呼ばれる別の手法が採用されました。これは、オペレーティングシステムを移植し、生成された仮想マシン上で実行させる手法です。この仮想マシンは、実際のx86命令セットのうち仮想化が難しい部分を実装していません。準仮想化I/Oは、SOSP '03 Xenのオリジナル論文で実証されているように、大幅なパフォーマンス向上をもたらします。[ 10 ]

x86-64 ( AMD64 )の初期バージョンでは、ロング モードでのセグメント化サポートが不足していたため、ソフトウェアのみの完全な仮想化は許可されていませんでした。そのため、ハイパーバイザーのメモリ、特にゲスト カーネル アドレス空間で実行されるトラップ ハンドラーの保護が不可能でした。[ 11 ] [ 12 ] : 11 および 20 リビジョン D 以降の 64 ビット AMD プロセッサー (経験則として、90 nm 以下で製造されたもの) では、ロング モードでのセグメント化の基本サポートが追加され、バイナリ変換によって 64 ビット ホストで 64 ビット ゲストを実行できるようになりました。 Intel は x86-64 実装 ( Intel 64 ) にセグメント化のサポートを追加しなかったため、Intel CPU 上で 64 ビットのソフトウェアのみの仮想化は不可能でしたが、Intel VT-x のサポートにより、Intel プラットフォーム上で 64 ビットのハードウェア支援による仮想化が可能になります。[ 13 ] [ 14 ] : 4 

一部のプラットフォームでは、基盤となるプロセッサが 64 ビットであり、必要な仮想化拡張機能をサポートしている場合、32 ビット ホスト OS 上で 64 ビット ゲストを実行できます。

ハードウェア支援による仮想化

[編集]

第一世代のx86ハードウェア仮想化は、特権命令の問題に対処しました。仮想化システムメモリの低パフォーマンス問題は、後にチップセットに追加されたMMU仮想化によって解決されました。2005年と2006年に、 IntelAMDは(それぞれ独立して)x86アーキテクチャに新しいプロセッサ拡張機能を開発し、バイナリ互換性のない2つの独立したx86仮想化拡張機能、IntelのVT-xとAMD-Vが誕生しました。

中央処理装置

[編集]

仮想8086モード

[編集]

Intel 80286チップはプロテクトモードではDOSアプリケーションを並列実行できなかったため、Intelは80386チップに仮想8086モードを導入し、386以降のチップ上で仮想化された8086プロセッサを実現しました。しかし、プロテクトモード自体を仮想化するハードウェアサポートは20年後に利用可能になりました。[ 15 ]

AMD 仮想化 (AMD-V)

[編集]
AMD Phenomダイ

AMDは第一世代の仮想化拡張機能を「Pacifica」というコード名で開発し、当初はAMD Secure Virtual Machine(SVM)として公開しましたが、[ 16 ]後にAMD Virtualization(略してAMD-V)という商標で販売しました

2006 年 5 月 23 日、AMD はこのテクノロジをサポートする最初の AMD プロセッサとして、Athlon 64 ( 「Orleans」 )、Athlon 64 X2 ( 「Windsor」 )、および Athlon 64 FX ( 「Windsor」 ) をリリースしました。

AMD-V機能は、ソケットAM2のリビジョン「F」または「G」のAthlon 64およびAthlon 64 X2ファミリープロセッサTurion 64 X2第2世代Opteron [ 17 ]および第3世代[ 18 ]のPhenomおよびPhenom IIプロセッサにも搭載されています。APU FusionプロセッサはAMD-Vをサポートしています。AMD-VはSocket 939プロセッサではサポートされていません。SempronプロセッサでAPUとHuron、Regor、SargasデスクトップCPUのみAMD - Vサポートいます。

Family 0x10 Barcelona ライン以降の AMD Opteron CPU および Phenom II CPU は、Rapid Virtualization Indexing (開発当時は Nested Page Tables と呼ばれていました) と呼ばれる第 2 世代のハードウェア仮想化テクノロジをサポートしています。これは後に Intel によってExtended Page Tables (EPT) として採用されました。

2019 年現在、すべてのZenベースの AMD プロセッサは AMD-V をサポートしています。

AMD-VのCPUフラグは「svm」です。これはBSD派生システムではdmesgまたはsysctl 、 Linuxでは[ 19 ]確認できます。AMD -Vの命令にはVMRUN、VMLOAD、VMSAVE、CLGI、VMMCALL、INVLPGA、SKINIT、STGIなどがあります。 /proc/cpuinfo

一部のマザーボードでは、アプリケーションがAMD SVM機能を利用する前に、BIOSセットアップでAMD SVM機能を有効にする必要があります。 [ 20 ]

Intel 仮想化 (VT-x)

[編集]
Intel Core i7 (ブルームフィールド) CPU

以前は「Vanderpool」というコードネームで呼ばれていたVT-xは、x86プラットフォームにおけるIntelの仮想化技術です。2005年11月14日、IntelはVT-xをサポートする最初のIntelプロセッサとして、 Pentium 4/proc/cpuinfoの2つのモデル(モデル662と672)をリリースしました。VT-x対応のCPUフラグは「vmx」です。Linuxでは、macOSでは で確認できますsysctl machdep.cpu.features[ 19 ] [ 21 ] [ 22 ]

VMXはVirtual Machine Extensionsの略で、VMPTRLD、VMPTRST、VMCLEAR、VMREAD、VMWRITE、VMCALL、VMLAUNCH、VMRESUME、VMXOFF、VMXON、INVEPT、INVVPID、VMFUNCという13個の新しい命令を追加します。[ 23 ]これらの命令は、ゲストOSが完全な権限(リング0)で実行されていると認識する仮想実行モードの開始と終了を許可しますが、ホストOSは保護されたままです。

2015年現在[アップデート]、ほぼすべての新しいサーバー、デスクトップ、モバイルのIntelプロセッサーはVT-xをサポートしていますが、一部のIntel Atomプロセッサーは主な例外です。[ 24 ]一部のマザーボードでは、アプリケーションがVT-x機能を使用する前に、ユーザーはBIOSセットアップでIntelのVT-x機能を有効にする必要があります。 [ 25 ]

インテルは、 2008年にリリースされたNehalemアーキテクチャ[ 28 ] [ 29 ]以降、ページテーブル仮想化技術である拡張ページテーブル(EPT)[ 26 ] [ 27 ]を搭載し始めました。 2010年にWestmereは、論理プロセッサをリアルモードで直接起動するためのサポートを追加しました 。これは「無制限ゲスト」と呼ばれる機能で、EPTが動作するために必要です。[ 30 ] [ 31 ]

Haswellマイクロアーキテクチャ(2013年発表)以降、IntelはVMMのネストされた仮想化を加速する技術としてVMCSシャドウイングを組み込み始めました。 [ 32 ] 仮想マシン制御構造(VMCS)はメモリ内のデータ構造で、VMごとに1つだけ存在し、VMMによって管理されます。異なるVM間で実行コンテキストが変更されるたびに、現在のVMのVMCSが復元され、VMの仮想プロセッサの状態が定義されます。[ 33 ]複数のVMMまたはネストされたVMMが使用されるとすぐに、前述のシャドウページテーブル管理の発明を必要としたのと同様の問題が発生します。このような場合、VMCSは複数回シャドウ化される必要があり(ネストの場合)、プロセッサによるハードウェアサポートがない場合は部分的にソフトウェアで実装する必要があります。シャドウVMCSの処理をより効率的にするために、IntelはVMCSシャドウイングのハードウェアサポートを実装しました。[ 34 ]

VIA仮想化(VIA VT)

[編集]

VIA Nano 3000シリーズプロセッサ以上は、Intel VT-xと互換性のあるVIA VT仮想化技術をサポートしています。[ 35 ] EPTは、Nano C4350ALに似たVIA QuadCore-EEden X4の後継であるZhaoxin ZX-Cに搭載されています[ 36 ]

割り込み仮想化(AMD AVICおよびIntel APICv)

[編集]

2012年、AMDは仮想化環境における割り込みオーバーヘッドの削減を目的としたAdvanced Virtual Interrupt ControllerAVIC )を発表しました。 [ 37 ]この技術は発表時点ではx2APICをサポートしていません[ 38 ] 2016年現在、AVICはAMDファミリー15hモデル6Xh(Carrizo)プロセッサ以降で利用可能です。[ 39 ]

2012年、インテルは割り込みとAPIC仮想化のための同様の技術を発表しましたが、発表当時はブランド名がありませんでした。[ 40 ]その後、 APIC仮想化APICv としてブランド化され[ 41 ] 、インテルCPUのIvy Bridge EPシリーズ で市販され、 Xeon E5-26xx v2(2013年後半発売)およびXeon E5-46xx v2(2014年初頭発売)として販売されました。[ 42 ]

グラフィックス処理ユニット

[編集]

グラフィックス仮想化はx86アーキテクチャの一部ではありません。Intel Graphics Virtualization Technology (GVT) は、最新世代のグラフィックスアーキテクチャの一部としてグラフィックス仮想化を提供します。AMD APUはx86-64命令セットを実装していますが、グラフィックス仮想化をサポートしていないAMD独自のグラフィックスアーキテクチャ(TeraScaleGCNRDNA )を実装しています。 [要出典] Larrabeeはx86ベースの唯一のグラフィックスマイクロアーキテクチャでしたが、グラフィックス仮想化のサポートは含まれていなかった可能性があります。

チップセット

[編集]

メモリとI/Oの仮想化はチップセットによって実行されます。[ 43 ]通常、これらの機能はBIOSによって有効化される必要があり、BIOSはこれらの機能をサポートし、使用できるように設定されている必要があります。

I/O MMU仮想化(AMD-ViおよびIntel VT-d)

[編集]
AMD-Vi情報を表示するLinuxカーネルログ

入出力メモリ管理ユニット(IOMMU)は、ゲスト仮想マシンがDMA割り込み再マッピングを介して、イーサネット、アクセラレーショングラフィックカード、ハードドライブコントローラなどの周辺機器を直接使用することを可能にします。これはPCIパススルーと呼ばれることもあります[ 44 ]

IOMMUは、メモリアドレス変換を用いることで、オペレーティングシステムが自身のメモリアドレス空間よりも小さいメモリアドレス空間を持つ周辺機器との通信に必要なバウンスバッファを削減することを可能にします。同時に、IOMMUは、オペレーティングシステムとハイパーバイザーが、バグのあるハードウェアや悪意のあるハードウェアによるメモリセキュリティ侵害を防ぐことも可能にします。

AMD と Intel はどちらも IOMMU 仕様を公開しています。

  • AMDのI/O仮想化技術「AMD-Vi」(当初は「IOMMU」と呼ばれていた)[ 45 ]
  • インテルの「仮想化テクノロジー for Directed I/O」(VT-d)[ 46 ]は、 Core 2アーキテクチャ以降のほとんどのハイエンド(ただしすべてではない)のIntelプロセッサに搭載されています。[ 47 ]

IOMMU I/O 仮想化機能を使用するには、CPU サポートに加えて、マザーボードの チップセットとシステム ファームウェア ( BIOSまたはUEFI )の両方がこの機能に完全に対応している必要があります。仮想マシン間でさまざまなデバイス機能を再割り当てするには機能レベル リセット(FLR) が必要なため、この方法で仮想化できるのは FLR をサポートする PCIまたはPCI Expressデバイスだけです[ 48 ] [ 49 ] 割り当てるデバイスがメッセージ シグナル割り込み(MSI) をサポートしていない場合は、割り当てを可能にするために他のデバイスと割り込みラインを共有してはなりません。 [ 50 ] PCI/ PCI-Xから PCI Express へのブリッジの背後にルーティングされる従来の PCIデバイスは すべて、一度にすべてゲスト仮想マシンに割り当てることができます。PCI Express デバイスにはこのような制限はありません。

ネットワーク仮想化(VT-c)

[編集]
  • インテルの「コネクティビティのための仮想化テクノロジー」(VT-c)。[ 51 ]
PCI-SIG シングルルート I/O 仮想化 (SR-IOV)
[編集]

PCI-SIGシングルルートI/O仮想化(SR-IOV)は、PCI-SIGによって標準化されたPCI Express(PCIe)ネイティブハードウェアに基づく一般的な(x86に特化しない)I/O仮想化方式のセットを提供します。 [ 52 ]

  • アドレス変換サービス(ATS)は、アドレス変換を介してPCI Expressを介したネイティブIOVをサポートします。このような変換を構成するには、新しいトランザクションのサポートが必要です。
  • シングルルートIOV(SR-IOVまたはSRIOV)は、既存のシングルルートの複雑なPCI ExpressトポロジにおけるネイティブIOVをサポートします。複数の仮想化された構成空間を構成するには、新しいデバイス機能のサポートが必要です。 [ 53 ]
  • マルチルート IOV (MR-IOV) は、 SR-IOV を基盤として共通の PCI Express 階層を共有する複数のルート コンプレックスを提供することで、新しいトポロジ (ブレード サーバーなど) でネイティブ IOV をサポートします。

最も一般的なSR-IOVでは、ホストVMMがサポートされているデバイスを構成し、その構成空間の仮想「シャドウ」を作成して割り当てることで、仮想マシンゲストがそのような「シャドウ」デバイスリソースを直接構成およびアクセスできるようにします。[ 54 ] SR-IOVを有効にすると、仮想化されたネットワークインターフェースにゲストが直接アクセスできるようになり、[ 55 ] VMMの関与を回避して全体的なパフォーマンスが向上します。[ 53 ]例えば、SR-IOVはNASAの仮想化データセンター[ 56 ]Amazonパブリッククラウドでベアメタルネットワーク帯域幅の95%以上を達成しています[ 57 ] [ 58 ]

参照

[編集]

参考文献

[編集]
  1. ^ x86仮想化におけるソフトウェアとハ​​ードウェア技術の比較、Keith AdamsとOle Agesen、VMware、ASPLOS'06、2006年10月21~25日、カリフォルニア州サンノゼ、米国。 2022年10月24日 アーカイブ、 Wayback Machineより。「驚くべきことに、第一世代のハードウェアサポートは、既存のソフトウェア技術に比べてパフォーマンス上の優位性を提供することはほとんどないことがわかりました。この状況は、VMM/ゲストの移行コストの高さと、これらの移行の頻度やコストを管理するソフトウェアの柔軟性をほとんど残さない、厳格なプログラミングモデルに起因すると考えられます。」
  2. ^ 「Intel Virtualization Technology Processor Virtualization Extensions and Intel Trusted Execution Technology」 (PDF) . Intel.com. 2007年. 2015年5月21日時点のオリジナルよりアーカイブ (PDF) . 2016年12月12日閲覧
  3. ^ 「USENIX Technical Program - Abstract - Security Symposium - 2000」 . Usenix.org. 2002年1月29日. 2010年6月10日時点のオリジナルよりアーカイブ2010年5月2日閲覧。
  4. ^ a b c d e 「x86仮想化におけるソフトウェアとハ​​ードウェアの技術の比較」(PDF)。VMware。2010年8月20日時点のオリジナルよりアーカイブ(PDF) 。 2010年9月8日閲覧
  5. ^ a b 米国特許6,397,242
  6. ^ 米国特許6,704,925
  7. ^ 「仮想化:アーキテクチャ上の考慮事項とその他の評価基準」(PDF) VMware。2011年2月6日時点のオリジナルよりアーカイブ(PDF) 。 2010年9月8日閲覧
  8. ^ a b 米国特許6,496,847
  9. ^ 「VMwareとハードウェアアシストテクノロジー」(PDF)2011年7月17日時点のオリジナルよりアーカイブ(PDF) 。 2010年9月8日閲覧
  10. ^ 「Xenと仮想化の芸術」(PDF)2014年9月29日時点のオリジナルよりアーカイブ(PDF) 。
  11. ^ 「AMD64ロングモードのセグメンテーション廃止がVMwareに与えた影響」 Pagetable.com、2006年11月9日。2011年7月18日時点のオリジナルよりアーカイブ2010年5月2日閲覧。
  12. ^ 「VMware と CPU 仮想化テクノロジー」(PDF)。VMware。2011年7月17日時点のオリジナルよりアーカイブ(PDF) 。 2010年9月8日閲覧
  13. ^ 「VMware KB: 64ビットゲストオペレーティングシステムのハードウェアおよびファームウェア要件」 . Kb.vmware.com. 2010年4月19日時点のオリジナルからのアーカイブ。 2010年5月2日閲覧
  14. ^ 「x86仮想化のためのソフトウェアとハ​​ードウェアのテクニック」(PDF) 。 2010年1月5日時点のオリジナル(PDF)からアーカイブ2010年5月2日閲覧。
  15. ^ Yager, Tom (2004年11月5日). 「ハードウェアの仕事をソフトウェアに任せる | ハードウェア - InfoWorld」 . Images.infoworld.com. 2014年10月18日時点のオリジナルよりアーカイブ。 2014年1月8日閲覧
  16. ^ "33047_SecureVirtualMachineManual_3-0.book" (PDF) . 2012年3月5日時点のオリジナルよりアーカイブ(PDF) . 2010年5月2日閲覧
  17. ^ 「第2世代AMD Opteronプロセッサと第1世代AMD Opteronプロセッサの主な違いは何ですか?」 amd.com 2009年4月15日時点のオリジナルよりアーカイブ。 2012年2月4日閲覧
  18. ^ 「クアッドコアAMD Opteronプロセッサはどのような仮想化拡張機能を備えているか?」 amd.com 2009年4月16日時点のオリジナルよりアーカイブ。 2012年2月4日閲覧
  19. ^ a b プロセッサがハードウェア仮想化をサポートしているかどうかを確認するには、 Wayback Machineに 2012 年 11 月 25 日にアーカイブされています。Intel 2012。
  20. ^ 「Intel VTxとAMD SVMを有効にするには?」サポートQNAP Systems, Inc. 2018年3月7日時点のオリジナルよりアーカイブ2020年12月23日閲覧。
  21. ^ 「Intel Pentium 4 662 - HH80547PG1042MH」。www.cpu -world.com
  22. ^ 「Intel Pentium 4 672 - HH80547PG1122MH」。www.cpu -world.com
  23. ^ INTEL (2019年10月). 「Intel® 64 and IA-32 Architectures Software Developer's Manual」 . intel.com . Intel Corporation . 2020年1月4日閲覧。
  24. ^ 「Intel Virtualization Technology List」 . Ark.intel.com. 2010年10月27日時点のオリジナルよりアーカイブ2010年5月2日閲覧。
  25. ^ 「Windows Virtual PC: BIOSの構成」。Microsoft。2010年9月6日時点のオリジナルよりアーカイブ2010年9月8日閲覧。
  26. ^ Neiger, Gil; A. Santoni; F. Leung; D. Rodgers; R. Uhlig (2006). 「Intel Virtualization Technology: Hardware Support for Efficient Processor Virtualization」(PDF) . Intel Technology Journal . 10 (3). Intel: 167– 178. doi : 10.1535/itj.1003.01 . 2012年9月25日時点のオリジナル(PDF)からのアーカイブ。 2008年7月6日閲覧
  27. ^ Gillespie, Matt (2007-11-12). 「Intel Virtualization Technology: EPT and VT-dによる準仮想化強化のベストプラクティス」 . Intel Software Network . Intel. 2008年12月26日時点のオリジナルよりアーカイブ。 2008年7月6日閲覧
  28. ^ 「まずはティック、次はトック:次世代インテルマイクロアーキテクチャ(Nehalem)」(PDF)(プレスリリース)。インテル。2009年1月26日時点のオリジナルよりアーカイブ(PDF) 。 2008年7月6日閲覧
  29. ^ 「テクノロジ概要:IntelマイクロアーキテクチャNehalem仮想化テクノロジー」(PDF) . Intel. 2009年3月25日. 2011年6月7日時点のオリジナルよりアーカイブ(PDF) . 2009年11月3日閲覧
  30. ^ [1]「IntelはWestmereマイクロアーキテクチャ以降のIntel CPUに無制限のゲストモードを追加しました。このモードでは、EPTを使用してゲストの物理アドレスアクセスをホストの物理アドレスに変換します。このモードでは、ページングを有効にせずにVMEnterが許可されます。」
  31. ^ [2]「「無制限ゲスト」VM実行制御が1の場合、「EPTを有効にする」VM実行制御も1である必要があります」
  32. ^ 「Intel VMCSシャドウイング搭載第4世代Intel Core vProプロセッサー」(PDF) . Intel . 2013 . 2014年12月16日閲覧
  33. ^ Intel Virtualization Technology (VT) について。 2014年9月8日 アーカイブ Wayback Machine 2014年9月1日閲覧
  34. ^ VMCSシャドウイングの「何、どこで、なぜ」。 2014年9月3日に Wayback Machineアーカイブ。 2014年9月1日閲覧。
  35. ^ VIA、新型VIA Nano 3000シリーズプロセッサを発表 2013年1月22日アーカイブ、 Wayback Machine
  36. ^ 「ノートブックソリューション:Kaixian ZX-Cプロセッサ + VX11PHチップセット」(PDF)2020年6月12日時点のオリジナル(PDF)からアーカイブ。 2020年6月12日閲覧
  37. ^ Wei Huang、「AMD Advanced Virtual Interrupt Controller の紹介」、 2014年7月14日アーカイブ、Wayback Machine、XenSummit 2012
  38. ^ Jörg Rödel (2012年8月). 「KVM向け次世代割り込み仮想化」(PDF) . AMD. 2016年3月4日時点のオリジナルよりアーカイブ(PDF) . 2014年7月12日閲覧.
  39. ^ "[Xen-devel] [RFC PATCH 0/9] AMD SVM AVIC の導入" www.mail-archive.com . 2017年2月2日時点のオリジナルよりアーカイブ。 2018年5月4日閲覧
  40. ^ Jun Nakajimaa (2012-12-13). 「割り込み/APIC仮想化における未使用機能と新機能のレビュー」(PDF) . Intel. 2015年4月21日時点のオリジナルよりアーカイブ(PDF) . 2014年7月12日閲覧
  41. ^ Khang Nguyen (2013-12-17). 「APIC仮想化パフォーマンステストとIozone」 . software.intel.com . 2014年7月14日時点のオリジナルよりアーカイブ。 2014年7月12日閲覧
  42. ^ 「Intel Xeon プロセッサー E5-4600 v2 製品ファミリー製品概要」(PDF) . Intel. 2014年3月14日. 2014年7月14日時点のオリジナルよりアーカイブ(PDF) . 2014年7月12日閲覧
  43. ^ 「Intel プラットフォームのハードウェアによる I/O 仮想化のサポート」 Intel.com、2006 年 8 月 10 日。2007年 1 月 20 日時点のオリジナルよりアーカイブ。2012年 2 月 4 日閲覧
  44. ^ 「Linux仮想化とPCIパススルー」 IBM。2009年11月1日時点のオリジナルよりアーカイブ2010年11月10日閲覧。
  45. ^ 「AMD I/O仮想化テクノロジー(IOMMU)仕様リビジョン1.26」(PDF)2011年1月24日時点のオリジナルよりアーカイブ(PDF) 。 2011年5月24日閲覧
  46. ^ 「Intel Virtualization Technology for Directed I/O (VT-d) Architecture Specification」 2013年4月3日時点のオリジナルよりアーカイブ。 2012年2月4日閲覧
  47. ^ 「Intel Virtualization Technology for Directed I/O (VT-d) 対応CPUリスト」 Ark.intel.com。2010年10月27日時点のオリジナルよりアーカイブ。 2012年2月4日閲覧
  48. ^ 「PCI-SIG エンジニアリング変更通知:機能レベルリセット(FLR)」(PDF) . pcisig.com . 2006年6月27日. 2016年3月4日時点のオリジナルよりアーカイブ(PDF) . 2014年1月10日閲覧
  49. ^ "Xen VT-d" . xen.org . 2013年6月6日. 2014年2月9日時点のオリジナルよりアーカイブ2014年1月10日閲覧。
  50. ^ 「KVMでVT-dを使用してデバイスを割り当てる方法」 . linux-kvm.org . 2014年4月23日. 2015年3月10日時点のオリジナルよりアーカイブ2015年3月5日閲覧。
  51. ^ 「Intel Virtualization Technology for Connectivity (VT-c)」(PDF) . Intel.com. 2016年2月22日時点のオリジナルよりアーカイブ(PDF) . 2018年2月14日閲覧
  52. ^ 「PCI-SIG I/O仮想化(IOV)仕様」 . Pcisig.com. 2011年3月31日. 2012年1月15日時点のオリジナルよりアーカイブ2012年2月4日閲覧。
  53. ^ a b 「Intel Look Inside: Intel Ethernet」(PDF) . Intel . 2014年11月27日. p. 104. 2016年3月4日時点のオリジナル(PDF)からアーカイブ。 2015年3月26日閲覧
  54. ^ Yaozu Dong、Zhao Yu、Greg Rose (2008). 「XenにおけるSR-IOVネットワーク:アーキテクチャ、設計、実装」 . usenix.org . USENIX . 2014年1月9日時点のオリジナルよりアーカイブ。 2014年1月10日閲覧
  55. ^ Patrick Kutch、Brian Johnson、Greg Rose (2011年9月). 「SR-IOVテクノロジーを使用したIntelフレキシブルポートパーティショニングの紹介」(PDF) . Intel . 2015年8月7日時点のオリジナル(PDF)からアーカイブ。 2015年9月24日閲覧
  56. ^ 「NASA​​の柔軟なクラウドファブリック:クラスターアプリケーションのクラウドへの移行」(PDF) . Intel . 2012年12月22日時点のオリジナル(PDF)からアーカイブ。 2014年1月8日閲覧
  57. ^ 「AWSクラウドにおける拡張ネットワーク」 Scalable Logic、2013年12月31日。2014年1月9日時点のオリジナルよりアーカイブ2014年1月8日閲覧。
  58. ^ 「AWSクラウドにおける拡張ネットワーク - パート2」 Scalable Logic、2013年12月31日。2014年1月10日時点のオリジナルよりアーカイブ。 2014年1月8日閲覧
[編集]