SPJÄLA

SLAT , även känd som kapslad personsökning , är en maskinvaruassisterad virtualiseringsteknik som undviker omkostnader som är förknippade med mjukvaruhanterade skuggsidtabeller .

AMD har stött SLAT med Rapid Virtualization Indexing (RVI) teknologi sedan introduktionen av sin 3:e generationens Opteron-processorer (kodnamnet Barcelona). En implementering av Intels SLAT, känd som Extended Page Table (EPT), introducerades i Nehalem-mikroarkitekturen som finns i vissa Core i7-, Core i5- och Core i3-processorer.

ARM - virtualiseringstillägg stöder SLAT, så kallade Stage 2 page-tables, som tillhandahålls av Stage-2 MMU. Gästen använder MMU Stage-1. Stöd har lagts till som tillval i ARMv7ve-arkitekturen och stöds även i ARMv8 (32-bitars och 64-bitars) arkitekturer.

Översikt

Moderna processorer använder begreppen fysiskt minne och virtuellt minne; Körande processer använder virtuella adresser och när en instruktion begär minnesåtkomst, översätter processorn den virtuella adressen till en fysisk adress med hjälp av sidtabellen eller TLB. När ett virtuellt system startar allokerar det virtuellt värdminne, som fungerar som fysiskt minne för gästen, och samma adressöversättningsprocess fortsätter i gästen. Detta ökar kostnaden för minnesåtkomst eftersom adressöversättningen måste göras två gånger - en gång inuti gästen (med emulering av skuggsidor) och en gång inuti värden (med hjälp av maskinvarutabellen).

För att göra denna översättning mer effektiv har processorleverantörer implementerat teknologier som vanligtvis kallas SLAT. Genom att behandla varje fysisk gästadress som en virtuell värd kan en liten förlängning av hårdvaran som används för att korsa den icke-virtualiserade sidtabellen (nu gästsidtabellen) gå igenom huvudsidtabellen. I sidtabeller flera nivåer kan huvudsidtabellen begreppsmässigt betraktas som kapslad i gästsidtabellen. Sidtabellens maskinvaruvärd kan behandla det extra översättningslagret nästan som att lägga till lager i sidtabellen.

Genom att använda SLAT- och flernivåsidtabeller fördubblas antalet nivåer som krävs för att navigera för att hitta en översättning när gästens fysiska adress har samma storlek som gästens virtuella adress och sidor av samma storlek används. Detta ökar vikten av att cachelagra värden från mellannivåerna i huvud- och gästsidetabellerna. Det är också användbart att använda stora sidor i mallsidetabeller för att minska antalet nivåer (t.ex. på x86-64, om du använder 2 MB av en sida tas en nivå i sidtabellen bort ). Eftersom minne vanligtvis allokeras till grovkorniga virtuella maskiner, är det en uppenbar optimering att använda stora sidor för att fysiskt översätta gästen, vilket minskar uppslagsdjupet och minnet som krävs för huvudsidtabellerna.

Implementeringar

Snabb virtualiseringsindexering

Rapid Virtualization Indexing (RVI), känd som Nested Pages Tables (NPT) vid tidpunkten för dess utveckling, är AMD:s andra generationens hårdvaruvirtualiseringsteknik för processorminneshanteringsenheten (MMU).

En forskningsartikel från VMware visade att RVI ger upp till 42 % prestandavinster jämfört med mjukvaruimplementering (skuggsidtabeller). Tester utförda av Red Hat visade en fördubbling av prestanda för OLTP-tester.

RVI introducerades i den tredje generationen Opteron-processorer, kodnamnet Barcelona.

Utökade sidtabeller

Extended Page Tables (EPT) är en andra generationens x86-virtualiseringsteknik för Memory Management Unit (MMU). EPT-stöd finns bland Intel Core i3-, Core i5- och Core i7-processorer.

EPT behövs för att köra den logiska processorn direkt i verkligt läge, kallat "unrestricted guest" på Intel-jargong och introducerat i Westmeres mikroarkitektur.

Enligt VMwares utvärderingsdokument: "EPT ger prestandavinster på upp till 48% för MMU-intensiva tester och upp till 600% för MMU-intensiva mikroobjekt", även om det faktiskt kan göra att koden körs långsammare än mjukvaruimplementering i något hörn fall. ) fall.

Shadow Pages

Skuggmotorn eller skuggsidans motor är en teknik som ger atomicitet och tillförlitlighet (två av de fyra ACID-kraven) i databassystem.

Med "sida" avses i detta sammanhang en bit minne i fysisk lagring (på externt minne), vanligtvis mellan 210 och 216 byte i storlek.

Skuggsidans mekanism är en teknik för att förhindra lokala siduppdateringar. När du redigerar en sida tilldelas minne för skuggsidan. Eftersom skuggsidan inte refereras från andra sidor på disken, kan den redigeras utan rädsla för datakonsistensbegränsningar. När en sida är redo att förvärva hållbarhetsegenskapen måste alla sidor som refererar till originalet uppdateras för att peka på den nya sidan.

Om hänvisningssidor också måste uppdateras via skuggavisering, kan denna procedur upprepas många gånger, vilket resulterar i en betydande tid. Den enda lösningen som produceras av WAFL är ett filsystem som underlättar skapandet av sidor. (cachar "write-behind"). Detta förbättrar prestandan genom att undvika flera skrivningar vid hotspots och över referenshierarkin (filsystems superblock) på bekostnad av hög latens.

WAL är en mer populär lösning som använder lokala uppdateringar.

Den "gamla master-new master"-skuggsidemekanismen används i CPU-databassystem. I dessa system skrevs utdata från varje batchkörning (kanske en dags arbete) till två separata diskar eller någon annan form av lagringsmedium. Den ena behölls för backup och den andra användes som utgångspunkt för nästa dags arbete.

Skuggsidans mekanism liknar också en rent funktionell datastruktur genom att den undviker lokala uppdateringar.

Programvarustöd

Hypervisorer som stöder SLAT inkluderar följande:

Vissa av ovanstående hypervisorer kräver faktiskt SLAT för att fungera alls (och inte bara snabbare) eftersom de inte implementerar en skuggsidtabell programmatiskt. Listan har inte uppdaterats helt för att återspegla detta.