SLAT , cunoscut și sub numele de paginare imbricată , este o tehnologie de virtualizare asistată de hardware care evită supraîncărcarea asociată tabelelor de pagini umbră gestionate de software .
AMD a susținut SLAT cu tehnologia Rapid Virtualization Indexing (RVI) de la introducerea procesoarelor sale Opteron de a treia generație (nume de cod Barcelona). O implementare a SLAT Intel , cunoscută sub numele de Extended Page Table (EPT), a fost introdusă în microarhitectura Nehalem găsită în unele procesoare Core i7, Core i5 și Core i3.
Extensiile de virtualizare ARM acceptă SLAT-uri, cunoscute sub numele de tabele de pagini de Etapa 2, furnizate de MMU-urile Etapa-2. Invitatul folosește MMU Stage-1. Suportul a fost adăugat ca opțional în arhitectura ARMv7ve și este, de asemenea, acceptat în arhitecturile ARMv8 (32 de biți și 64 de biți).
Procesoarele moderne folosesc conceptele de memorie fizică și memorie virtuală; Procesele de rulare folosesc adrese virtuale și atunci când o instrucțiune solicită acces la memorie, procesorul traduce adresa virtuală într-o adresă fizică folosind tabelul de pagini sau TLB. Când pornește un sistem virtual, acesta alocă memorie virtuală gazdă, care servește ca memorie fizică pentru oaspete, iar același proces de traducere a adresei continuă în invitat. Acest lucru crește costul accesului la memorie deoarece traducerea adresei trebuie făcută de două ori - o dată în interiorul invitatului (folosind emularea paginii umbră) și o dată în interiorul gazdei (folosind tabelul paginilor hardware).
Pentru a face această traducere mai eficientă, furnizorii de procesoare au implementat tehnologii denumite în mod obișnuit SLAT. Tratând fiecare adresă fizică a oaspetelui ca o gazdă virtuală, o mică extensie a hardware-ului folosită pentru a traversa tabelul paginii nevirtualizate (acum tabelul paginii invitaților) poate traversa tabelul paginii master. În tabelele cu pagini pe mai multe niveluri , tabelul paginii master poate fi considerat conceptual ca fiind imbricat în tabelul paginii invitate. Gazda hardware a tabelului de pagini poate trata stratul de traducere suplimentar aproape ca și cum ar adăuga straturi la tabelul de pagini.
Folosind SLAT și tabele de pagini cu mai multe niveluri , numărul de niveluri necesare pentru a naviga pentru a găsi o traducere se dublează atunci când adresa fizică a oaspetelui are aceeași dimensiune cu adresa virtuală a oaspetelui și sunt utilizate pagini de aceeași dimensiune. Acest lucru crește importanța stocării în cache a valorilor de la nivelurile intermediare ale tabelelor paginilor master și invitate. De asemenea, este util să folosiți pagini mari în tabelele de pagini principale pentru a reduce numărul de niveluri (de exemplu, pe x86-64, utilizarea a 2 MB dintr-o pagină elimină un nivel din tabelul de pagini ). Deoarece memoria este de obicei alocată mașinilor virtuale cu granulație grosieră, utilizarea paginilor mari pentru a traduce fizic invitatul este o optimizare evidentă, reducând adâncimea căutării și memoria necesară pentru tabelele paginilor master.
Rapid Virtualization Indexing (RVI), cunoscut sub numele de Nested Pages Tables (NPT) la momentul dezvoltării sale, este a doua generație de tehnologie de virtualizare hardware de la AMD pentru unitatea de gestionare a memoriei procesorului (MMU).
O lucrare de cercetare VMware a arătat că RVI oferă câștiguri de performanță de până la 42% față de implementarea software-ului (tabele de pagini umbra). Testele efectuate de Red Hat au arătat o dublare a performanței pentru testele OLTP.
RVI a fost introdus în a treia generație de procesoare Opteron, cu numele de cod Barcelona.
Extended Page Tables (EPT) este o tehnologie de virtualizare x86 de a doua generație pentru unitatea de gestionare a memoriei (MMU). Suportul EPT se găsește printre procesoarele Intel Core i3, Core i5 și Core i7.
EPT este necesar pentru a rula procesorul logic direct în modul real, numit „oaspete nerestricționat” în jargonul Intel și introdus în microarhitectura Westmere.
Potrivit documentului de evaluare VMware: „EPT oferă câștiguri de performanță de până la 48% pentru testele cu MMU intensive și până la 600% pentru micro-obiectele cu MMU intensive”, deși poate face ca codul să ruleze mai lent decât implementarea software într-un colț. cazuri. ) cazuri.
Motorul umbră sau motorul paginii umbră este o tehnică care oferă atomicitate și fiabilitate (două dintre cele patru cerințe ACID) în sistemele de baze de date.
Prin „pagină” în acest context se înțelege o bucată de memorie în stocare fizică (pe memorie externă), de obicei între 210 și 216 octeți .
Mecanismul paginii umbră este o tehnică de prevenire a actualizărilor de pagini locale. În timpul editării unei pagini, este alocată memorie pentru pagina umbră. Deoarece pagina umbră nu este referită din alte pagini de pe disc, poate fi editată fără teama de restricții privind consistența datelor. Când o pagină este gata să dobândească proprietatea de durabilitate, toate paginile care se referă la original trebuie actualizate pentru a indica noua pagină.
Dacă paginile de referință trebuie și ele actualizate prin notificare umbră, această procedură poate fi repetată de mai multe ori, rezultând o perioadă semnificativă de timp. Singura soluție produsă de WAFL este un sistem de fișiere care facilitează crearea de pagini. (caching „write-behind”). Acest lucru îmbunătățește performanța prin evitarea scrierilor multiple în hotspot-uri și deasupra ierarhiei referențiale (superbloc al sistemului de fișiere) în detrimentul unei latențe mari.
WAL este o soluție mai populară care utilizează actualizări locale.
Mecanismul de pagină umbră „vechi master-nou master” este utilizat în sistemele de baze de date CPU. În aceste sisteme, rezultatul fiecărei execuții lot (poate o zi de lucru) a fost scris pe două discuri separate sau pe o altă formă de mediu de stocare. Unul a fost păstrat pentru rezervă, iar celălalt a fost folosit ca punct de plecare pentru munca de a doua zi.
Mecanismul paginii umbră este, de asemenea, similar cu o structură de date pur funcțională, prin aceea că evită actualizările locale.
Hypervisorii care acceptă SLAT includ următoarele:
Unii dintre hipervizorii de mai sus necesită de fapt SLAT să funcționeze deloc (și nu doar mai rapid), deoarece nu implementează în mod programatic un tabel de pagini umbră. Lista nu a fost complet actualizată pentru a reflecta acest lucru.