Popek a Goldberg požadavky na virtualizaci - Popek and Goldberg virtualization requirements

Požadavky na virtualizaci Popek a Goldberg jsou souborem podmínek dostatečných k tomu, aby počítačová architektura mohla efektivně podporovat virtualizaci systému . Představili je Gerald J. Popek a Robert P. Goldberg ve svém článku z roku 1974 „Formální požadavky na virtualizovatelné architektury třetí generace“. I když jsou požadavky odvozeny podle zjednodušujících předpokladů, stále představují pohodlný způsob, jak určit, zda počítačová architektura podporuje efektivní virtualizaci, a poskytnout pokyny pro návrh virtualizovaných počítačových architektur.

Definice VMM

Systémové virtuální stroje jsou schopné virtualizovat celou sadu hardwarových prostředků, včetně procesoru (nebo procesorů), paměťových a úložných prostředků a periferních zařízení. Virtuální počítač monitor (VMM, nazývaný také hypervisor ) je kus softwaru, který zajišťuje odběr virtuálním stroji. Při analýze prostředí vytvořeného VMM existují tři zajímavé vlastnosti: There are three properties of interest when analyzing the environment created by a VMM:

Rovnocennost / věrnost
Program spuštěný pod VMM by měl vykazovat chování v podstatě identické s chováním, které bylo prokázáno při přímém spuštění na ekvivalentním počítači.
Řízení zdrojů / bezpečnost
VMM musí mít úplnou kontrolu nad virtualizovanými prostředky.
Účinnost / výkon
Statisticky dominantní zlomek strojových instrukcí musí být proveden bez zásahu VMM.

V terminologii Popka a Goldberga musí VMM představovat všechny tři vlastnosti. V terminologii použité v referenční knize Smitha a Naira (2005) se VMM obvykle předpokládá, že splňují vlastnosti ekvivalence a řízení prostředků, a ty, které navíc splňují vlastnost výkonu, se nazývají efektivní VMM .

Popek a Goldberg popisují vlastnosti, které musí mít architektura instrukční sady (ISA) fyzického stroje, aby bylo možné provozovat VMM, které mají výše uvedené vlastnosti. Jejich analýza odvozuje takové charakteristiky pomocí modelu „architektur třetí generace“ (např. IBM 360, Honeywell 6000, DEC PDP-10), který je nicméně dostatečně obecný, aby mohl být rozšířen na moderní stroje. Tento model obsahuje procesor, který pracuje v systémovém nebo uživatelském režimu a má přístup k lineární jednotně adresovatelné paměti. Předpokládá se, že podmnožina sady instrukcí je k dispozici pouze v režimu systému a že paměť je adresována relativně k registru přemístění. I / O a přerušení nejsou modelovány.

Věty o virtualizaci

Pro odvození svých virtualizačních vět, které poskytují dostatečné (ale ne nutné) podmínky pro virtualizaci, Popek a Goldberg zavádějí klasifikaci některých pokynů ISA do 3 různých skupin:

Privilegované pokyny
Ty, které zachycují, pokud je procesor v uživatelském režimu, a nezachytávají, pokud je v systémovém režimu ( režim správce ).
Ovládejte citlivé pokyny
Ti, kteří se pokoušejí změnit konfiguraci prostředků v systému.
Pokyny citlivé na chování
Ti, jejichž chování nebo výsledek závisí na konfiguraci zdrojů (obsah registru přemístění nebo režim procesoru).

Hlavní výsledek Popekovy a Goldbergovy analýzy lze vyjádřit následovně.

Věta 1 . Pro jakékoliv konvenční třetí generace počítače , An efektivní VMM mohou být konstruovány v případě, že sada citlivých instrukcí pro tento počítač je podmnožinou množiny privilegovaných instrukcí.

Věta intuitivně uvádí, že k vytvoření VMM stačí, aby všechny pokyny, které by mohly ovlivnit správné fungování VMM (citlivé pokyny), vždy zachytily a předaly řízení VMM. To zaručuje vlastnost řízení prostředků. Neprivilegované pokyny musí být místo toho prováděny nativně (tj. Efektivně). Následuje také držení vlastnosti ekvivalence.

Tato věta také poskytuje jednoduchou techniku ​​implementace VMM, která se nazývá virtualizace trap-and-emulate , nověji klasická virtualizace : protože všechny citlivé pokyny se chovají pěkně, vše, co VMM musí udělat, je trap a emulace pokaždé.

Souvisejícím problémem je odvození dostatečných podmínek pro rekurzivní virtualizaci, tj. Podmínky, za kterých lze vytvořit VMM, který může běžet na jeho kopii. Popek a Goldberg představují následující (dostatečné) podmínky.

Věta 2 . Konvenční počítač třetí generace je rekurzivně virtualizovatelný, pokud:

  1. je to virtualizovatelné a
  2. lze pro ni zkonstruovat VMM bez jakýchkoli závislostí načasování.

Některé architektury, jako například x86 bez hardwaru , tyto podmínky nesplňují, takže je nelze virtualizovat klasickým způsobem. Ale architektury lze stále plně virtualizovat (v případě x86, což znamená na úrovni CPU a MMU) pomocí různých technik, jako je binární překlad, který nahradí citlivé instrukce, které negenerují pasti, které se někdy nazývají kritické instrukce. Toto dodatečné zpracování však činí VMM teoreticky méně efektivní, ale hardwarové pasti mají také nezanedbatelné náklady na výkon. Dobře vyladěný binární překladový systém ukládání do mezipaměti může dosáhnout srovnatelného výkonu, a to v případě binárního překladu x86 ve srovnání s hardwarovou pomocí x86 první generace, která pouze učinila citlivé instrukce zachycitelnými. Účinně to dá teorém s různými podmínkami dostatečnosti.

Věta 3 . Hybridní VMM mohou být konstruovány pro jakékoli generace stroj třetí, ve kterém sada uživatelských citlivých návod je podmnožinou množiny privilegovaných instrukcí:

Zacházení s kritickými pokyny

Podmínky pro virtualizaci ISA vyjádřené ve větě 1 mohou být uvolněny na úkor vlastnosti účinnosti. Rutinně byly vytvořeny nástroje VMM pro virtualizovatelné ISA (ve smyslu Popka a Goldberga).

Virtualizace těchto architektur vyžaduje správné zacházení s kritickými instrukcemi , tj. Citlivými, ale neprivilegovanými instrukcemi. Jeden přístup, známý jako oprava , využívá techniky běžně používané v dynamické rekompilaci : kritické pokyny jsou objeveny za běhu a nahrazeny pastí do VMM. K zefektivnění procesu opravy byly navrženy různé mechanismy, jako je ukládání do mezipaměti emulačního kódu nebo hardwarové asistence . Jiný přístup je přístup paravirtualizace , která vyžaduje, aby byly před spuštěním ve virtuálním prostředí modifikovány ( portovány ) hostující operační systémy .

Instrukční sady běžných architektur

Tato část představuje některé relevantní architektury a jejich vztah k požadavkům na virtualizaci.

PDP-10

Architektura PDP-10 obsahuje několik instrukcí, které jsou citlivé (mění nebo dotazují režim procesoru), ale nejsou privilegované. Tyto pokyny ukládají nebo obnovují stavové kódy obsahující bity USER nebo IOT:

  • JSR: přejít na podprogram
  • JSP: skok a uložení počitadla programu
  • PUSHJ: zatlačte dolů a skočte
  • JRST: skok a obnovení

Systém / 370

Všechny citlivé pokyny v systému / 370 jsou privilegované: splňují požadavky na virtualizaci.

Motorola MC68000

Motorola MC68000 má jediný neoprávněnému citlivé instrukce:

  • PŘESUNOUT ze SR

Tato instrukce je citlivá, protože umožňuje přístup k celému stavovému registru, který zahrnuje nejen stavové kódy, ale také bit uživatele / nadřízeného, ​​úroveň přerušení a kontrolu trasování. U většiny pozdějších členů rodiny, počínaje MC68010 , byla instrukce MOVE from SR privilegována a byla poskytnuta nová instrukce MOVE from CCR, která umožňuje přístup pouze do registru stavového kódu.

IA-32 (x86)

Sada instrukcí IA-32 procesoru Pentium obsahuje 18 citlivých, neprivilegovaných instrukcí. Lze je rozdělit do dvou skupin:

  • Pokyny k citlivému registru: čtení nebo změna citlivých registrů nebo paměťových míst, jako je registr hodin nebo registry přerušení:
    • SGDT, SIDT, SLDT
    • SMSW
    • PUSHF, POPF
  • Pokyny k systému ochrany: odkaz na systém ochrany úložiště, systém přemístění paměti nebo adresy:
    • LAR, LSL, VERR, VERW
    • POP
    • TAM
    • CALL FAR, JMP FAR, INT n, RETF
    • STR
    • MOV (segmentové registry)

Zavedení instrukčních sad AMD-V a Intel VT-x v roce 2005 umožňuje procesorům x86 splnit virtualizační požadavky Popek a Goldberg.

IA-64

Úsilí potřebné k podpoře virtualizace na architektuře IA-64 je popsáno v článku z roku 2000 Magenheimer a Christian.

SPARC

"Ultraprivilegovaný" režim pro architekturu UltraSPARC byl specifikován v UltraSPARC Architecture 2005. ' Definuje platformu sun4v, která je super sadou platformy sun4u , ale stále odpovídá specifikaci SPARC v9 úrovně 1.

PowerPC

Všechny citlivé instrukce v sadě instrukcí PowerPC jsou privilegované.

Výkon v praxi

Požadavek na efektivitu v Popekově a Goldbergově definici VMM se týká pouze provádění neprivilegovaných instrukcí, které se musí provádět nativně. To je to, co odlišuje VMM od obecnější třídy hardwarového emulačního softwaru. Bohužel i na architektuře, která splňuje požadavky Popka a Goldberga, se výkon virtuálního stroje může výrazně lišit od skutečného hardwaru. Rané experimenty prováděné na systému / 370 (který splňuje formální požadavky věty 1) ukázaly, že výkon virtuálního stroje může být v některých benchmarcích až 21% nativního stroje. Náklady na soutisk a emulaci privilegovaných pokynů ve VMM mohou být značné. To vedlo inženýry IBM k zavedení řady hardwarových asistencí , které zhruba zdvojnásobily výkon virtuálních strojů System / 370. Asistence byly přidány v několika fázích. Nakonec bylo na pozdních modelech System / 370 více než 100 asistencí.

Jedním z hlavních hnacích faktorů pro vývoj hardwarových asistencí pro System / 370 byla samotná virtuální paměť. Když byl hostem operační systém, který sám implementoval virtuální paměť, mohly se i neprivilegované instrukce setkat s delšími časy provádění - pokuta uložená požadavkem na přístup k překladovým tabulkám, které se nepoužívají při nativním provádění (viz tabulky stínových stránek ).

Reference

Poznámky