PopekとGoldbergの仮想化要件

ウィキペディアから、無料の百科事典
ナビゲーションにジャンプ 検索にジャンプ

PopekとGoldbergの仮想化要件は、コンピューターアーキテクチャがシステム仮想化を効率的にサポートするために十分な一連の条件です。それらは、1974年の記事「仮想化可能な第3世代アーキテクチャの正式な要件」でジェラルドJ.ポペックロバートP.ゴールドバーグによって紹介されました。[1]要件は単純化された仮定の下で導き出されますが、それでも、コンピューターアーキテクチャーが効率的な仮想化をサポートしているかどうかを判断し、仮想化されたコンピューターアーキテクチャーの設計のガイドラインを提供する便利な方法を表します。

VMM定義

システム仮想マシンは、1つまたは複数のプロセッサ、メモリとストレージリソース、および周辺機器を含む、ハードウェアリソースのフルセットを仮想化することができます。仮想マシンモニター(VMM、ハイパーバイザーとも呼ばれます)は、仮想マシンの抽象化を提供するソフトウェアです。VMMによって作成された環境を分析する場合、3つの重要なプロパティがあります。[2]

同等性/忠実度
VMMで実行されているプログラムは、同等のマシンで直接実行されている場合と基本的に同じ動作を示す必要があります。
資源管理/安全
VMMは、仮想化されたリソースを完全に制御する必要があります。
効率/パフォーマンス
統計的に支配的なマシン命令の一部は、VMMの介入なしに実行する必要があります。

PopekとGoldbergの用語では、VMMは3つのプロパティすべてを提示する必要があります。Smith and Nair(2005)の参考書で使用されている用語では、VMMは通常、同等性とリソース制御のプロパティを満たすと想定され、パフォーマンスプロパティをさらに満たすものは効率的なVMMと呼ばれます。[3]

PopekとGoldbergは、上記のプロパティを持つVMMを実行するために、物理マシンの命令セットアーキテクチャ(ISA)が持つ必要のある特性について説明しています。彼らの分析は、「第3世代アーキテクチャ」(IBM 360、Honeywell 6000、DEC PDP-10など)のモデルを使用してそのような特性を導き出しますが、それでも最新のマシンに拡張できるほど一般的です。このモデルには、システムモードまたはユーザーモードのいずれかで動作し、線形で均一にアドレス指定可能なメモリにアクセスできるプロセッサが含まれています。命令セットのサブセットは、システムモードの場合にのみ使用可能であり、メモリは再配置レジスタに関連してアドレス指定されると想定されています。I/Oと割り込みはモデル化されていません。

仮想化の定理

仮想化に十分な(ただし必須ではない)条件を与える仮想化定理を導き出すために、PopekとGoldbergは、ISAのいくつかの命令を3つの異なるグループに分類することを導入します。

特権的な指示
プロセッサがユーザーモードの場合はトラップし、システムモード(スーパーバイザーモード)の場合はトラップしないもの
機密性の高い命令を制御する
システム内のリソースの構成を変更しようとするもの。
行動に敏感な指示
動作または結果がリソースの構成(再配置レジスターの内容またはプロセッサーのモード)に依存するもの。

ポペックとゴールドバーグの分析の主な結果は、次のように表すことができます。

定理1従来の第3世代コンピュータの場合、そのコンピュータの機密性の高い命令のセットが特権命令のセットのサブセットである場合 効果的なVMMを構築できます。

直感的には、この定理は、VMMを構築するには、VMMの正しい機能に影響を与える可能性のあるすべての命令(機密性の高い命令)が常にトラップしてVMMに制御を渡すだけで十分であると述べています。これにより、リソース制御プロパティが保証されます。非特権命令は、代わりにネイティブに(つまり効率的に)実行する必要があります。等価性の保持も同様です。

この定理は、トラップアンドエミュレート仮想化と呼ばれる、最近ではクラシック仮想化と呼ばれるVMMを実装するための簡単な手法も提供します。すべての機密命令は適切に動作するため、VMMが行う必要があるのは、それらを毎回トラップしてエミュレートすることだけです。[4] [5]

関連する問題は、再帰的な仮想化のための十分条件、つまり、それ自体のコピーで実行できるVMMを構築できる条件を導出することです。PopekとGoldbergは、次の(十分)条件を示します。

定理2従来の第3世代コンピューターは、次の場合に再帰的に仮想化できます。

  1. それは仮想化可能であり、
  2. タイミング依存性のないVMMを構築できます。

非ハードウェア支援x86などの一部のアーキテクチャは、これらの条件を満たしていないため、従来の方法で仮想化することはできません。ただし、トラップを生成しない機密性の高い命令[4]を置き換えるバイナリ変換などのさまざまな手法を使用することで、アーキテクチャを完全に仮想化できます(x86の場合はCPUおよびMMUレベルを意味します)[4]。ただし、この追加の処理により、理論的にはVMMの効率が低下しますが[5]、ハードウェアトラップのパフォーマンスコストも無視できません。[要出典]適切に調整されたキャッシングバイナリ変換システムは、同等のパフォーマンスを実現する可能性があります。x86バイナリ変換の場合、第1世代のx86ハードウェアアシストと比較して、機密性の高い命令をトラップ可能にするだけです。[6]事実上、これは異なる十分条件を持つ定理を与えます。[要出典]

定理3ハイブリッドVMMは、ユーザーセンシティブな命令のセットが特権命令のセットのサブセットである第3世代のマシン用に構築できます

重要な指示の処理

定理1で表されるISA仮想化の条件は、効率特性を犠牲にして緩和される可能性があります。仮想化不可能なISA(PopekとGoldbergの意味で)のVMMは、日常的に構築されています。

このようなアーキテクチャの仮想化には、重要な命令、つまり機密性が高いが特権のない命令を正しく処理する必要があります。パッチ適用と呼ばれる1つのアプローチは、動的再コンパイルで一般的に使用される手法を採用しています。重要な命令は実行時に検出され、VMMへのトラップに置き換えられます。パッチ適用プロセスをより効率的にするために、エミュレーションコードのキャッシングやハードウェアアシストなどのさまざまなメカニズムが提案されています。別のアプローチは準仮想化のアプローチであり、仮想環境で実行する前に ゲストオペレーティングシステムを変更(移植)する必要があります。

一般的なアーキテクチャの命令セット

このセクションでは、いくつかの関連するアーキテクチャと、それらが仮想化要件にどのように関連するかを示します。

PDP-10

PDP-10アーキテクチャには、機密性が高い(プロセッサのモードを変更または照会する)が、特権を持たない命令がいくつかあります。[7] これらの命令は、USERまたはIOTビットを含む条件コードを保存または復元します。

  • JSR:サブルーチンにジャンプ
  • JSP:ジャンプしてプログラムカウンターを保存する
  • PUSHJ:押し下げてジャンプ
  • JRST:ジャンプして復元

システム/370

System / 370の機密性の高い命令はすべて特権があり、仮想化の要件を満たしています。[8]

モトローラMC68000

Motorola MC68000には、特権のない機密性の高い命令が1つあります

  • SRから移動

この命令は、条件コードだけでなく、ユーザー/スーパーバイザビット、割り込みレベル、およびトレース制御を含むステータスレジスタ全体にアクセスできるため、機密性が高くなります。MC68010以降のほとんどのファミリメンバーでは、MOVE from SR命令が特権化され、条件コードレジスタのみにアクセスできるように新しいMOVEfromCCR命令が提供されました。[9] [10]

IA-32(x86)

PentiumプロセッサIA-32命令セットには、 18個の機密性の高い非特権命令が含まれています。[11]それらは2つのグループに分類することができます:

  • センシティブレジスタ命令:センシティブレジスタまたはクロックレジスタや割り込みレジスタなどのメモリ位置の読み取りまたは変更:
    • SGDT、SIDT、SLDT
    • SMSW
    • PUSHF、POPF
  • 保護システムの説明:ストレージ保護システム、メモリー、またはアドレス再配置システムを参照してください。
    • LAR、LSL、VERR、VERW
    • ポップ
    • 押す
    • CALL FAR、JMP FAR、INT n、RETF
    • STR
    • MOV(セグメントレジスタ)

2005年にAMD-VおよびIntelVT-x命令セットが導入されたことにより、x86プロセッサはPopekおよびGoldbergの仮想化要件を満たすことができます。

IA-64

IA-64アーキテクチャで仮想化をサポートするために必要な取り組みは、MagenheimerとChristianによる2000年の記事で説明されています。[12]

SPARC

UltraSPARCアーキテクチャの「超特権」モードは、UltraSPARCアーキテクチャ2005で指定されました[13]これはsun4uプラットフォームのスーパーセットであるsun4vプラットフォーム[14]を定義しますそれでもSPARCv9レベル1 [15]仕様に準拠しています。

PowerPC

PowerPC命令セット内のすべての機密性の高い命令には特権があります。[16] [17]

実際のパフォーマンス

PopekとGoldbergによるVMMの定義の効率要件は、ネイティブに実行する必要がある非特権命令の実行のみに関係します。これが、VMMをより一般的なクラスのハードウェアエミュレーションソフトウェアと区別するものです。残念ながら、PopekとGoldbergの要件を満たすアーキテクチャでも、仮想マシンのパフォーマンスは実際のハードウェアと大幅に異なる可能性があります。System / 370(定理1の正式な要件を満たす)で実行された初期の実験では、一部のベンチマークでは、仮想マシンのパフォーマンスがネイティブマシンの21%まで低下する可能性があることが示されました。VMMで特権命令をトラップしてエミュレートするコストは、かなりの額になる可能性があります。これにより、IBMエンジニアは多くのハードウェア支援を導入しました、これにより、System/370仮想マシンのパフォーマンスが約2倍になりました。[18]アシストはいくつかの段階で追加されました。結局、後期モデルのSystem/370には100を超えるアシストがありました。[19]

System / 370のハードウェアアシストを開発するための主な推進要因の1つは、仮想メモリ自体でした。ゲスト自体が仮想メモリを実装しているオペレーティングシステムの場合、特権のない命令でも実行時間が長くなる可能性があります。これは、ネイティブ実行で使用されない変換テーブルにアクセスする必要があるために課せられるペナルティです(シャドウページテーブルを参照)。[20]

参照

  1. ^ Popek、GJ ; ゴールドバーグ、RP(1974年7月)。「仮想化可能な第3世代アーキテクチャの正式な要件」。ACMの通信17(7):412–421。土井10.1145/361011.361073S2CID12680060 _
  2. ^ Rogier Dittner、David Rule、最高のサーバー仮想化の本の期間、Syngress、2007年、 ISBN 1-59749-217-5、p。19 
  3. ^ スミスとネア、p。387
  4. ^ a b Adams and Agesen、2006年、2〜3ページ
  5. ^ a b スミスとナーヤル、p。391
  6. ^ アダムスとアゲセン、p。1と5
  7. ^ SWギャレー(1969)。「PDP-10仮想マシン」。Proc。ACMSIGARCH-仮想コンピュータシステムに関するSIGOPSワークショップpp。30–34。
  8. ^ スミスとネア、p。395
  9. ^ M68000 8- / 16-32ビットマイクロプロセッサユーザーズマニュアル、第9版米国アリゾナ州フェニックス:Motorola、Inc.1993。
  10. ^ MotorolaM68000ファミリプログラマーズリファレンスマニュアル米国アリゾナ州フェニックス:Motorola、Inc.1992。
  11. ^ ジョンスコットロビンとシンシアE.アーバイン(2000)。「安全な仮想マシンモニターをサポートするIntelPentiumの機能の分析」Proc。第9回USENIXセキュリティシンポジウム
  12. ^ ダニエルJ.マゲンハイマーとトーマスW.クリスチャン(2000)。「vBlades:Itaniumプロセッサフ​​ァミリ用に最適化された準仮想化」Proc。第3回仮想マシン研究技術シンポジウムUSENIX。pp。73–82。
  13. ^ ウィーバー、デビッド(2007-05-17)。UltraSPARCアーキテクチャ2005:1つのアーキテクチャ....複数の革新的な実装(DraftD0.9)(PDF)米国サンタクララ:Sun Microsystems、Inc. 2009年2月19日のオリジナル(PDF)からアーカイブ。
  14. ^ Sun Microsystems、Inc.(2006-01-24)。UltraSPARC仮想マシン仕様(PDF)米国カリフォルニア州サンタクララ。2007年9月27日にオリジナル(PDF)からアーカイブされました
  15. ^ ウィーバー、デビッドL .; トム・ガーモンド(1994)。SPARCアーキテクチャマニュアル:バージョン9米国カリフォルニア州サンノゼ:SPARC International、Inc. ISBN 0-13-825001-4
  16. ^ 「仮想化:エレガントな方法とx86の方法–pagetable.com」
  17. ^ https://www.cs.cmu.edu/~410-s07/lectures/L38_Virtualization.pdf [裸のURLPDF ]
  18. ^ スミスとネア、p。415-416および426
  19. ^ ガム、p。535
  20. ^ ガム、p。533
ノート