x86
仮想化は、x86アーキテクチャを基盤とするゲストOSを、別のx86ベースのホストOS上で、ほとんどあるいは全く修正を加えることなく動作させる技術です。この技術は、複数のOSを一つの
ハードウェア上で同時に実行することを可能にし、リソースの効率的な利用や開発環境の柔軟性を高める上で不可欠です。
x86アーキテクチャと仮想化の課題
初期のx86アーキテクチャは、命令セット内に特権命令ではないものの、
仮想化環境下で問題を引き起こす可能性のあるセンシティブな命令を含んでいました。このため、完全な
仮想化を実現するための基本的な要件である「
PopekとGoldbergの仮想化要件」を満たすことが困難でした。しかし、2005年と2006年に、
インテルとAMDがそれぞれx86アーキテクチャを拡張し、これらの問題に対処しました。
1999年、
VMwareが初のx86
仮想化製品をリリースしました。この製品では、
ハードウェア仮想化支援機能がないx86環境での
仮想化を実現するために、特定の命令の実行を捉えて動的に置き換える「動的命令変換技法」が用いられました。しかし、この手法は、本質的に
仮想化しやすいアーキテクチャと比較して、性能面でのオーバーヘッドが発生するという課題がありました。
オープンソースの分野でも、x86
仮想化の試みがなされました。
Bochs、
QEMU、
VirtualBoxなどが、x86プロセッサの命令実行をエミュレートする方式を採用しました。また、
マイクロソフトもVirtual PCや
Hyper-Vといったx86
仮想化製品を提供しています。
実験的なシステムであるDenali、L4、Xenは、
ハードウェアと
仮想機械の実装を変更することでx86
仮想化の高性能化を追求しました。これらのシステムでは、ゲストOSを
仮想機械向けに移植することで、x86命令セットの
仮想化しにくい部分を回避する「準
仮想化」という手法が採用されました。Xenは後に
ハードウェア仮想化支援を利用した完全
仮想化もサポートし、OSの変更を不要にしました。
インテルとAMDは、x86アーキテクチャの
仮想化を支援するために、それぞれ独自の拡張機能を開発しました。これらの機能により、
仮想機械ハイパーバイザ上でゲストOSを修正することなく動作させることが可能になり、性能も大幅に向上しました。これらの機能は「
ハードウェア仮想化支援機能」(HAV)と呼ばれ、
インテル製品にはIntel VT、AMD製品にはAMD-Vという名称で提供されています。
プロセッサの仮想化技術
- - Intel VT-x: インテルが提供するx86プラットフォームの仮想化技術で、当初はVanderpoolというコードネームで呼ばれていました。
- - AMD-V: AMDが提供するx86アーキテクチャのハードウェア仮想化拡張技術で、セキュリティ機能も含まれます。以前はPacificaというコードネームで呼ばれていました。
SLATプロセッサ
Second Level Address Translation (SLAT)は、メモリ管理に関する
仮想化を支援する
CPU機能です。仮想マシンごとに独立した仮想アドレスと、ホスト環境の物理アドレスの変換を
ハードウェアレベルで支援します。Intel EPTやAMD RVIなどがその実装として知られています。
チップセットの仮想化支援
メモリとI/Oの
仮想化は、チップセットによって実行されます。これらの機能を利用するためには、BIOSの設定が適切に行われている必要があります。
IO MMU の仮想化
Input/Output Memory Management Unit (
IOMMU)は、DMAのスルーと割り込みの再割り当てにより、ゲスト仮想マシンからの直接的な物理デバイスの利用を可能にします。Intel VT-dとAMD-Viが主な仕様として知られています。
- - Intel VT-d: インテルのI/O処理の仮想化支援機能で、Nehalemベースのプロセッサに搭載されています。
- - AMD-Vi: AMDのIOMMU仕様で、個々の仮想機械への割り込み配信設定や、DMA使用時の仮想機械間の分離を実現します。
ネットワークの仮想化
- - Intel VT-c: インテルのI/O仮想化を支援する技術で、Virtual Machine Device Queues (VMDq)などが含まれます。
PCI-SIGによるI/O仮想化
PCI-SIG I/O virtualization (IOV)は、
PCI Expressベースの
ハードウェアI/O
仮想化技術の総称です。IOV対応デバイスは、ゲストOS間でリソースを共有できます。Address translation services(ATS), Single-Root IOV (SR-IOV)と Multi-Root IOV (MR-IOV)などの規格があります。
以下の
ソフトウェアは、条件により
ハードウェア仮想化技術を利用しています。
性能
Standard Performance Evaluation Corporation (SPEC)は、
仮想化技術の性能比較のための業界標準手法を確立するためのワーキンググループを創設しました。これにより、
仮想化環境における性能評価がより正確に行えるようになることが期待されています。
まとめ
x86
仮想化技術は、
ソフトウェアと
ハードウェアの両面から進化を遂げ、現代のコンピュータシステムにおいて不可欠な要素となっています。
ハードウェア支援機能の導入により、性能と効率が大幅に向上し、より柔軟で強力な
仮想化環境が実現しました。