Popek og Goldberg virtualiseringskrav - Popek and Goldberg virtualization requirements

De Popek og Goldberg virtualisering krav er et sæt af betingelser tilstrækkelige for en computer-arkitektur til support system virtualisering effektivt. De blev introduceret af Gerald J. Popek og Robert P. Goldberg i deres artikel i 1974 "Formelle krav til virtualiserbare tredje generationsarkitekturer". Selvom kravene er afledt under forenklede antagelser, repræsenterer de stadig en bekvem måde at bestemme, om en computerarkitektur understøtter effektiv virtualisering og giver retningslinjer for design af virtualiserede computerarkitekturer.

VMM-definition

System virtuelle maskiner er i stand til at virtualisere et komplet sæt hardwareressourcer, herunder en processor (eller processorer), hukommelses- og lagerressourcer og perifere enheder. En skærm til virtuel maskine (VMM, også kaldet hypervisor ) er det stykke software, der giver abstraktion af en virtuel maskine. Der er tre egenskaber af interesse, når man analyserer miljøet oprettet af en VMM:

Ækvivalens / troskab
Et program, der kører under VMM, skal udvise en adfærd, der i det væsentlige er identisk med den, der vises, når man kører direkte på en tilsvarende maskine.
Ressource kontrol / sikkerhed
VMM skal have fuld kontrol over de virtualiserede ressourcer.
Effektivitet / ydeevne
En statistisk dominerende brøkdel af maskininstruktioner skal udføres uden VMM-intervention.

I terminologien Popek og Goldberg skal en VMM præsentere alle tre egenskaber. I terminologien brugt i referencebogen fra Smith og Nair (2005) antages VMM'er typisk at tilfredsstille ækvivalens- og ressourcestyringsegenskaberne, og de derudover opfylder ydeevneegenskaberne kaldes effektive VMM'er .

Popek og Goldberg beskriver de egenskaber, som den fysiske maskines instruktions sætarkitektur (ISA) skal have for at køre VMM'er, der har ovennævnte egenskaber. Deres analyse afleder sådanne egenskaber ved hjælp af en model af "tredje generationens arkitekturer" (f.eks. IBM 360, Honeywell 6000, DEC PDP-10), der alligevel er generel nok til at blive udvidet til moderne maskiner. Denne model inkluderer en processor, der fungerer i enten system- eller brugertilstand og har adgang til lineær, ensartet adresserbar hukommelse. Det antages, at et undersæt af instruktionssættet kun er tilgængeligt, når det er i systemtilstand, og at hukommelsen adresseres i forhold til et omplaceringsregister. I / O og afbrydelser er ikke modelleret.

Virtualiseringsteoremer

For at udlede deres virtualiseringsteoremer, som giver tilstrækkelige (men ikke nødvendige) betingelser for virtualisering, introducerer Popek og Goldberg en klassificering af nogle instruktioner fra en ISA i 3 forskellige grupper:

Privilegerede instruktioner
Dem, der fælder, hvis processoren er i brugertilstand, og ikke fælder, hvis den er i systemtilstand ( supervisor-tilstand ).
Kontroller følsomme instruktioner
Dem, der forsøger at ændre konfigurationen af ​​ressourcer i systemet.
Adfærdsfølsomme instruktioner
Dem, hvis opførsel eller resultat afhænger af konfigurationen af ​​ressourcer (indholdet af omplaceringsregistret eller processorens tilstand).

Hovedresultatet af Popek og Goldbergs analyse kan derefter udtrykkes som følger.

Sætning 1 . For enhver konventionel tredjegenerationscomputer kan der konstrueres en effektiv VMM, hvis sættet med følsomme instruktioner til den pågældende computer er et delsæt af sættet med privilegerede instruktioner.

Sætningen siger intuitivt, at det er tilstrækkeligt at opbygge en VMM, at alle instruktioner, der kan påvirke den korrekte funktion af VMM (følsomme instruktioner) altid fælder og videregiver kontrol til VMM. Dette garanterer ressource kontrol ejendom. Ikke-privilegerede instruktioner skal i stedet udføres indbygget (dvs. effektivt). Beholdningen af ​​ækvivalensegenskaben følger også.

Denne sætning giver også en simpel teknik til implementering af en VMM, kaldet trap-and-emulate virtualization , for nylig kaldet classic virtualization : fordi alle følsomme instruktioner opfører sig pænt, alt hvad VMM skal gøre er at fange og emulere hver eneste gang af dem.

Et relateret problem er at udlede tilstrækkelige betingelser for rekursiv virtualisering, det vil sige de betingelser, hvorunder en VMM, der kan køre på en kopi af sig selv, kan bygges. Popek og Goldberg præsenterer følgende (tilstrækkelige) betingelser.

Sætning 2 . En konventionel tredjegenerationscomputer kan rekursivt virtualiseres, hvis:

  1. det kan virtualiseres og
  2. en VMM uden nogen tidsafhængighed kan konstrueres til den.

Nogle arkitekturer, som den ikke-hardware-assisterede x86 , opfylder ikke disse betingelser, så de kan ikke virtualiseres på den klassiske måde. Men arkitekturer kan stadig virtualiseres fuldt ud (i x86-tilfælde betyder det på CPU- og MMU-niveau) ved hjælp af forskellige teknikker som binær oversættelse, som erstatter de følsomme instruktioner, der ikke genererer fælder, som undertiden kaldes kritiske instruktioner. Denne ekstra behandling gør dog VMM mindre effektiv i teorien, men hardwarefælder har også ikke-ubetydelige ydelsesomkostninger. Et velindstillet caching-binært oversættelsessystem kan muligvis opnå sammenlignelig ydeevne, og det gør det i tilfælde af x86-binær oversættelse i forhold til første generation af x86-hardwareassistent, som blot gjorde følsomme instruktioner let tilgængelige. Dette giver effektivt en sætning med forskellige betingelser for tilstrækkelighed.

Sætning 3 . En hybrid VMM kan konstrueres til enhver tredje generation maskine, hvor sættet af brugersensitive instruktioner er et delsæt af sættet med privilegerede instruktioner:

Håndtering af kritiske instruktioner

Betingelserne for ISA-virtualisering udtrykt i sætning 1 kan lempes på bekostning af effektivitetsegenskaben. VMM'er til ikke-virtualiserbare ISA'er (i Popek og Goldbergs forstand) er rutinemæssigt blevet bygget.

Virtualisering af sådanne arkitekturer kræver korrekt håndtering af kritiske instruktioner , dvs. følsomme men uprivilegerede instruktioner. En tilgang, kendt som patching , vedtager teknikker, der almindeligvis anvendes i dynamisk rekompilering : kritiske instruktioner opdages ved kørsel og erstattes med en fælde i VMM. Forskellige mekanismer, såsom caching af emuleringskode eller hardwareassistenter , er blevet foreslået for at gøre patches mere effektive. En anden tilgang er paravirtualisering , som kræver, at gæstens operativsystemer ændres ( porteres ), inden de kører i det virtuelle miljø.

Instruktions sæt af almindelige arkitekturer

Dette afsnit præsenterer nogle relevante arkitekturer, og hvordan de relaterer sig til virtualiseringskravene.

PDP-10

Den PDP-10 arkitektur har et par instruktioner, der er følsomme (alter eller forespørgsel processorens tilstand) men ikke privilegerede. Disse instruktioner gemmer eller gendanner betingelseskoder, der indeholder USER- eller IOT-bits:

  • JSR: spring til subrutine
  • JSP: spring og gem programtælleren
  • PUSHJ: skub ned og spring
  • JRST: spring og gendan

System / 370

Alle følsomme instruktioner i System / 370 er privilegerede: det opfylder virtualiseringskravene.

Motorola MC68000

Den Motorola MC68000 har en enkelt upriviligerede følsom instruktion:

  • FLYT fra SR

Denne instruktion er følsom, fordi den giver adgang til hele statusregistret, som ikke kun inkluderer betingelseskoder, men også bruger / supervisor-bit, afbrydelsesniveau og sporingskontrol. I de fleste senere familiemedlemmer, startende med MC68010 , blev MOVE fra SR-instruktionen gjort privilegeret, og en ny MOVE fra CCR-instruktion blev leveret for kun at give adgang til betingelseskoderegistret.

IA-32 (x86)

Den IA-32 instruktionssæt af Pentium processor indeholder 18 følsomme, upriviligerede instruktioner. De kan kategoriseres i to grupper:

  • Følsomme registerinstruktioner: læs eller skift følsomme registre eller hukommelsesplaceringer såsom et urregister eller afbryd registre:
    • SGDT, SIDT, SLDT
    • SMSW
    • PUSHF, POPF
  • Instruktioner til beskyttelsessystemet: henvis til lagringsbeskyttelsessystemet, hukommelsen eller adresseoverflytningssystemet
    • LAR, LSL, VERR, VERW
    • POP
    • SKUBBE
    • OPKALD FAR, JMP FAR, INT n, RETF
    • STR
    • MOV (segmentregistre)

Introduktionen af AMD-V og Intel VT-x instruktionssæt i 2005 giver x86-processorer mulighed for at opfylde Popek og Goldberg virtualiseringskravene.

IA-64

Den nødvendige indsats for at understøtte virtualisering af IA-64- arkitekturen er beskrevet i en artikel fra 2000 af Magenheimer og Christian.

SPARC

En "hyperprivilegeret" tilstand til UltraSPARC- arkitekturen blev specificeret i UltraSPARC Architecture 2005. ' Den definerer en sun4v- platform, der er et super-sæt af sun4u- platformen, men stadig er i overensstemmelse med SPARC v9 niveau-1-specifikationen.

PowerPC

Alle følsomme instruktioner i PowerPC- instruktionssættet er privilegerede.

Præstation i praksis

Effektivitetskravet i Popek og Goldbergs definition af en VMM vedrører kun udførelsen af ​​ikke-privilegerede instruktioner, som skal udføres indbygget. Dette er, hvad der adskiller en VMM fra den mere generelle klasse af hardware emulering software. Desværre, selv på en arkitektur, der lever op til Popek og Goldbergs krav, kan ydelsen på en virtuel maskine afvige væsentligt fra den egentlige hardware. Tidlige eksperimenter udført på System / 370 (som opfylder de formelle krav i sætning 1) viste, at ydeevnen for en virtuel maskine i nogle benchmarks kunne være så lav som 21% af den oprindelige maskine. Omkostningerne ved at fange og efterligne privilegerede instruktioner i VMM kan være betydelige. Dette fik IBM-ingeniørerne til at introducere en række hardware-assists , som omtrent fordoblede ydeevnen for System / 370 virtuelle maskiner. Assists blev tilføjet i flere faser. I sidste ende var der over 100 assists på de sene modeller System / 370.

En af de vigtigste drivfaktorer for udviklingen af ​​hardware-assists til System / 370 var den virtuelle hukommelse i sig selv. Når gæst var et operativsystem, der selv implementerede virtuel hukommelse, kunne selv ikke-privilegerede instruktioner opleve længere udførelsestider - en straf, der er pålagt af kravet om at få adgang til oversættelsestabeller, der ikke bruges i indfødt udførelse (se skyggesidetabeller ).

Referencer

Bemærkninger