La traduzione degli indirizzi di secondo livello (Second Level Address Translation - SLAT), nota anche come paginazione annidata, è una tecnologia di virtualizzazione assistita dall'hardware che consente di evitare il sovraccarico associato alla gestione software delle tabelle di pagina ombra da parte dell'hypervisor.

AMD supporta la SLAT tramite la tecnologia Rapid Virtualization Indexing (RVI) fin dall'introduzione dei processori di terza generazione Opteron (nome in codice Barcelona). L'implementazione della SLAT da parte di Intel, nota come Extended Page Table (EPT), è stata introdotta nella microarchitettura Nehalem presente in alcuni processori Core i7, Core i5 e Core i3.

Anche le estensioni di virtualizzazione dei processori ARM ricorrono alla SLAT, segmentando la gestione della memoria virtuale in due fasi. Il sistema guest utilizza un'unità di gestione della memoria (MMU) di Stage-1, mentre una MMU di Stage-2 gestisce le tabelle di pagina della memoria fisica del sistema host. Il supporto è stato aggiunto come opzione nell'architettura ARMv7ve ed è supportato anche nelle architetture ARMv8 (a 32 e 64 bit).

Panoramica Nelle architetture x86 l'introduzione, a partire dal processore Intel 80286, della modalità protetta ha esteso anche alle architetture tradizionali i concetti di memoria fisica e memoria virtuale. Quando i processi utilizzano indirizzi virtuali e un'istruzione richiede l'accesso alla memoria, il processore traduce l'indirizzo virtuale in un indirizzo fisico utilizzando una tabella delle pagine o un buffer di traduzione lookaside (TLB). Quando si esegue un sistema virtuale, viene allocata la memoria virtuale del sistema host che funge da memoria fisica per il sistema guest, e lo stesso processo di traduzione degli indirizzi viene eseguito anche all'interno del sistema guest. Ciò aumenta il costo di accesso alla memoria poiché la traduzione degli indirizzi deve essere eseguita due volte. una volta all'interno del sistema guest (utilizzando la tabella delle pagine guest emulata dal software) e una volta all'interno del sistema host (utilizzando la mappa fisica [pmap]).

Una tabella ombra realizzata via software è la soluzione comune per ridurre il sovraccarico computazionale derivante dalla doppia traduzione degli indirizzi di memoria. Le tabelle di pagina ombra traducono gli indirizzi di memoria virtuali del sistema guest direttamente in indirizzi fisici del sistema host. Ogni istanza guest ha una tabella ombra separata e l'hypervisor è responsabile della loro gestione. Sebbene il meccanismo delle tabelle di pagina ombra sia più veloce della doppia traduzione, è una tecnica comunque costosa rispetto all'esecuzione in una macchina non virtuale, in quanto ogni volta che il sistema guest aggiorna le proprie tabelle di memoria anche l'hypervisor è costretto a modificare le rispettive tabelle ombra per mantenere la sincronia con il guest.

Per rendere questa traduzione più efficiente, nei processori sono state implementate tecnologie costruttive chiamate appunto SLAT. Trattando ogni indirizzo fisico del sistema guest come un indirizzo virtuale del sistema host, una minima frazione dell'hardware utilizzato per leggere la struttura di una tabella non virtualizzata (ovvero la tabella di memoria paginata del sistema guest) può leggere anche la tabella delle pagine del sistema host. Con le tabelle multilivello, la tabella di memoria del sistema host può essere vista concettualmente come annidata all'interno della tabella di memoria del sistema guest. Un hardware dedicato per la lettura delle pagine di memoria può trattare lo strato di traduzione aggiuntivo quasi come se fossero altri livelli aggiunti alla tabella delle pagine.

Implementazioni

Rapid Virtualization Indexing La Rapid Virtualization Indexing (RVI), che in fase di sviluppo veniva chiamata Nested Page Tables (NPT), è una tecnologia di virtualizzazione assistita da hardware di seconda generazione di AMD per le proprie unità di gestione della memoria (MMU). La RVI è stata introdotao a partire dalla terza generazione di processori Opteron, nome in codice Barcelona.

Uno studio di ricerca VMware ha scoperto che la RVI offre fino al 42% di guadagno in termini di prestazioni rispetto all'implementazione via software (tabella di pagine ombra). Test condotti da Red Hat hanno mostrato un raddoppio delle prestazioni nell'esecuzione dei benchmark OLTP.

Extended Page Tables Extended Page Tables (EPT) è il nome che Intel ha dato alla tecnologia di virtualizzazione x86 di seconda generazione per le proprie unità di gestione della memoria (MMU). Il supporto EPT è presente, tra gli altri, nei processori Intel Core i3, Core i5, Core i7 e Core i9. È presente anche in alcune CPU VIA più recenti. EPT è necessario per avviare un processore logico direttamente in modalità reale, una funzionalità chiamata "guest senza restrizioni" nel gergo Intel e introdotta nella microarchitettura Westmere."Intel ha aggiunto la modalità guest senza restrizioni sulla microarchitettura Westmere e sulle CPU Intel successive; utilizza EPT per tradurre l'accesso all'indirizzo fisico del guest in indirizzo fisico dell'host. Con questa modalità, è consentito l'uso di VMENter senza abilitazione del paging."

Secondo un documento valutativo di VMware, "EPT fornisce un guadagno di prestazioni fino al 48% per benchmark ad alta intensità d'uso della MMU, e fino al 600% per microbenchmark ad alta intensità d'uso della MMU", anche se in alcuni casi limite può effettivamente causare un'esecuzione del codice più lenta di un'implementazione software.

Tabelle delle pagine di fase 2 Il supporto delle tabelle delle pagine Stage-2 è presente nei processori ARM che implementano il livello di eccezione 2 (EL2).

Software che ne fanno uso Gli hypervisor che supportano la SLAT includono:

Hyper-V per Windows Server 2008 R2, Windows 8 e versioni successive. Hyper-V per Windows 8 (e versioni successive di Microsoft Windows) richiede la SLAT. Hypervisor.framework, un hypervisor nativo di macOS, disponibile da macOS 10.10. KVM, dalla versione 2.6.26 del kernel Linux principale. Parallels Desktop per Mac, dalla versione 5. VirtualBox, dalla versione 2.0.0. VMware ESX, dalla versione 3.5. VMware Workstation . VMware Workstation 14 (e successive VMware Workstation) richiede SLAT. Xen, dalla versione 3.2.0. Qubes OS — SLAT obbligatorio. bhyve — SLAT obbligatorio. vmm, un hypervisor nativo su OpenBSD — SLAT obbligatorio.vmm(4) — virtual machine monitor ACRN, un hypervisor open-source leggero, che tiene in considerazione gli aspetti critici della sicurezza e dell'esecuzione real-time, ottimizzato per gli utilizzi IoT ed Edge. QEMU - un hypervisor incorporabile e un emulatore di chipset open-source.

Alcuni degli hypervisor sopra menzionati necessitano di SLAT per funzionare (non solo più velocemente) poiché non implementano tabelle di pagine ombra via software; l'elenco non è completamente aggiornato per riflettere questa situazione.

Voci correlate AMD-V (nome in codice Pacifica) prima generazione del supporto alla virtualizzazione hardware di AMD VT-x

Riferimenti

Collegamenti esterni

Metodo e sistema per una traduzione di indirizzi di secondo livello in un ambiente di macchina virtuale (brevetto) Vantaggi della traduzione degli indirizzi di secondo livello in Hyper-V R2 Virtualizzazione in Linux KVM + QEMU (PDF)

Categoria:Microprocessori Intel x86 Categoria:Software di virtualizzazione