SLAT

SLAT , joka tunnetaan myös nimellä sisäkkäinen sivutus , on laitteisto - avusteinen virtualisointitekniikka , joka välttää ohjelmiston hallinnoimiin varjosivutaulukoihin liittyvät ylimääräiset kustannukset .

AMD on tukenut SLAT:ta Rapid Virtualization Indexing (RVI) -tekniikalla 3. sukupolven Opteron-prosessorien (koodinimeltään Barcelona) julkaisusta lähtien. Intelin SLAT- toteutus , joka tunnetaan nimellä Extended Page Table (EPT), otettiin käyttöön Nehalem-mikroarkkitehtuurissa, joka löytyy joistakin Core i7-, Core i5- ja Core i3 -suorittimista.

ARM - virtualisointilaajennukset tukevat SLAT:ita, jotka tunnetaan Stage 2 -sivutaulukoina, joita Stage-2 MMU:t tarjoavat. Vieras käyttää MMU Stage-1:tä. Tuki on lisätty valinnaisena ARMv7ve-arkkitehtuuriin, ja sitä tuetaan myös ARMv8-arkkitehtuureissa (32-bittinen ja 64-bittinen).

Yleiskatsaus

Nykyaikaiset prosessorit käyttävät fyysisen muistin ja virtuaalimuistin käsitteitä; Käynnissä olevat prosessit käyttävät virtuaalisia osoitteita ja kun käsky pyytää muistin käyttöä, prosessori kääntää virtuaaliosoitteen fyysiseksi osoitteeksi käyttämällä sivutaulukkoa tai TLB:tä. Kun virtuaalijärjestelmä käynnistyy, se varaa isäntävirtuaalimuistin, joka toimii fyysisenä muistina vieraalle, ja sama osoitteenmuunnosprosessi jatkuu vieraassa. Tämä lisää muistin käytön kustannuksia, koska osoitteen käännös on tehtävä kahdesti - kerran vierastilassa (käyttäen varjosivuemulointia) ja kerran isäntäkoneen sisällä (käyttäen laitteistosivutaulukkoa).

Tehostaakseen tätä käännöstä tehokkaampaa prosessoritoimittajat ovat ottaneet käyttöön tekniikoita, joita yleisesti kutsutaan nimellä SLAT. Käsittelemällä jokaista fyysistä vierasosoitetta virtuaalisena isäntänä, pieni laajennus laitteistosta, jota käytetään ei-virtualisoimattoman sivutaulukon ( nyt vierassivutaulukon) läpikulkuun, voi kulkea sivupohjataulukon läpi. Monitasoisissa sivutaulukoissa sivupohjataulukkoa voidaan pitää käsitteellisesti vierassivutaulukon sisäkkäisenä. Sivutaulukon laitteistoisäntä voi käsitellä ylimääräistä käännöskerrosta melkein kuin tasojen lisäämistä sivutaulukkoon .

SLAT- ja monitasoisten sivutaulukoiden avulla käännöksen löytämiseen tarvittavien tasojen määrä kaksinkertaistuu, kun vieraan fyysinen osoite on samankokoinen kuin vieraan virtuaalinen osoite ja samankokoisia sivuja käytetään. Tämä lisää pää- ja vierassivutaulukoiden välitasojen arvojen välimuistin merkitystä. On myös hyödyllistä käyttää suuria sivuja sivupohjataulukoissa tasojen määrän vähentämiseksi (esim. x86-64:ssä 2 Mt:n sivun käyttö poistaa yhden tason sivutaulukosta ) . Koska muisti on tyypillisesti varattu karkearakeisille virtuaalikoneen, suurten sivujen käyttäminen vierailijan fyysiseen kääntämiseen on ilmeistä optimointia, mikä vähentää sivupohjataulukoiden hakusyvyyttä ja muistia.

Toteutukset

Nopea virtualisoinnin indeksointi

Rapid Virtualization Indexing (RVI), joka tunnettiin kehityshetkellä Nested Pages Tables (NPT) -taulukoina, on AMD:n toisen sukupolven laitteiston virtualisointitekniikka suorittimen muistinhallintayksikölle (MMU).

VMwaren tutkimus osoitti, että RVI parantaa suorituskykyä jopa 42 % verrattuna ohjelmistojen toteutukseen (varjosivutaulukot). Red Hatin suorittamat testit osoittivat OLTP-testien suorituskyvyn kaksinkertaistuvan.

RVI esiteltiin kolmannen sukupolven Opteron-prosessoreissa, koodinimeltään Barcelona.

Laajennetut sivutaulukot

Extended Page Tables (EPT) on toisen sukupolven x86-virtualisointitekniikka muistinhallintayksikölle (MMU). EPT-tuki löytyy Intel Core i3-, Core i5- ja Core i7 -prosessoreista.

EPT:tä tarvitaan loogisen prosessorin käyttämiseen suoraan reaalitilassa, jota kutsutaan Intelin ammattikielellä "rajoittamattomaksi vieraaksi" ja joka on otettu käyttöön Westmeren mikroarkkitehtuurissa.

VMware-arviointiasiakirjan mukaan: "EPT tarjoaa jopa 48 % suorituskyvyn parannuksia MMU-intensiivisille testeille ja jopa 600 % MMU-intensiivisille mikroobjekteille", vaikka se voi itse asiassa hidastaa koodin suorittamista kuin ohjelmiston toteutus jossain nurkassa. tapaukset. ) tapaukset.

Shadow Pages

Varjomoottori tai varjosivumoottori on tekniikka, joka tarjoaa atomisuuden ja luotettavuuden (kaksi neljästä ACID-vaatimuksesta) tietokantajärjestelmissä.

"Sivulla" tässä yhteydessä tarkoitetaan fyysisessä (ulkoisessa muistissa) olevaa muistia, jonka koko on tyypillisesti 210-216 tavua .

Varjosivumekanismi on tekniikka paikallisten sivujen päivityksen estämiseksi. Joitakin sivuja muokatessa muistia varataan varjosivulle. Koska varjosivulle ei viitata muilta levyllä olevilta sivuilta, sitä voidaan muokata ilman pelkoa tietojen johdonmukaisuuden rajoituksista. Kun sivu on valmis hankkimaan kestävyysominaisuuden, kaikki alkuperäiseen viittaavat sivut on päivitettävä osoittamaan uudelle sivulle.

Jos viittaavat sivut on päivitettävä myös varjoilmoituksella, tämä toimenpide voidaan toistaa useita kertoja, mikä johtaa huomattavan paljon aikaa. Ainoa WAFL:n tuottama ratkaisu on tiedostojärjestelmä, joka helpottaa sivujen luomista. (välimuisti "kirjoittaa taakse"). Tämä parantaa suorituskykyä välttämällä useita kirjoituksia hotspoteissa ja viitehierarkian yläpuolella (tiedostojärjestelmän superblock) korkean viiveen kustannuksella.

WAL on suositumpi ratkaisu, joka käyttää paikallisia päivityksiä.

CPU-tietokantajärjestelmissä käytetään "vanha isäntä-uusi isäntä" -varjosivumekanismia. Näissä järjestelmissä jokaisen eräajon (ehkä työpäivän) tulos kirjoitettiin kahdelle erilliselle levylle tai muulle tallennusvälineelle. Toinen säilytettiin varmuuskopiona ja toista käytettiin seuraavan päivän työn lähtökohtana.

Varjosivumekanismi on myös samanlainen kuin puhtaasti toiminnallinen tietorakenne, koska se välttää paikalliset päivitykset.

Ohjelmistotuki

SLAT:ia tukevat hypervisorit sisältävät seuraavat:

Jotkut yllä olevista hypervisoreista todella vaativat SLAT:n toimiakseen ollenkaan (eikä vain nopeammin), koska ne eivät toteuta ohjelmallisesti varjosivutaulukkoa. Luetteloa ei ole täysin päivitetty vastaamaan tätä.