La virtualització x86 és l'ús de capacitats de virtualització assistides per maquinari en una CPU x86/x86-64.
A finals de la dècada de 1990, la virtualització x86 es va aconseguir mitjançant tècniques de programari complexes, necessàries per compensar la manca de capacitats de virtualització assistides per maquinari del processador alhora que s'aconseguia un rendiment raonable. El 2005 i el 2006, tant Intel (VT-x) com AMD (AMD-V) van introduir un suport limitat de virtualització de maquinari que va permetre un programari de virtualització més senzill però oferia molt pocs avantatges de velocitat. Un major suport de maquinari, que va permetre millores substancials de velocitat, va venir amb models de processadors posteriors.
La discussió següent se centra només en la virtualització del mode protegit de l'arquitectura x86.
En mode protegit, el nucli del sistema operatiu s'executa amb un privilegi superior, com ara l'anell 0, i les aplicacions amb un privilegi inferior, com l'anell 3. En la virtualització basada en programari, un sistema operatiu amfitrió té accés directe al maquinari mentre que els sistema operatius convidats tenen accés limitat al maquinari, igual que qualsevol altra aplicació del sistema operatiu amfitrió. Un enfocament que s'utilitza en la virtualització basada en programari x86 per superar aquesta limitació s'anomena ring deprivileging, que implica executar el sistema operatiu convidat en un anell superior (menys privilegis) que 0.[1]
Tres tècniques van fer possible la virtualització del mode protegit:
Aquestes tècniques comporten una certa sobrecàrrega de rendiment a causa de la manca de suport de virtualització MMU, en comparació amb una màquina virtual que s'executa en una arquitectura virtualitzable de forma nativa com l'IBM System/370.[2] :10[3]
En els mainframes tradicionals, el clàssic hipervisor tipus 1 era autònom i no depenia de cap sistema operatiu ni executava cap aplicació d'usuari. En canvi, els primers productes de virtualització x86 estaven dirigits a ordinadors d'estació de treball i executaven un sistema operatiu convidat dins d'un sistema operatiu amfitrió incrustant l'hipervisor en un mòdul del nucli que funcionava sota el sistema operatiu amfitrió (hipervisor tipus 2).
El 2005 i el 2006, Intel i AMD (treballant de manera independent) van crear noves extensions de processador per a l'arquitectura x86. La primera generació de virtualització de maquinari x86 va abordar el problema de les instruccions privilegiades. El problema del baix rendiment de la memòria del sistema virtualitzat es va abordar amb la virtualització MMU que es va afegir al chipset més tard.
Basant-se en experiències doloroses amb el mode protegit 80286, que per si sol no era prou adequat per executar bé aplicacions DOS concurrents, Intel va introduir el mode 8086 virtual al seu xip 80386, que oferia processadors 8086 virtualitzats als xips 386 i posteriors. El suport de maquinari per virtualitzar el propi mode protegit, però, va estar disponible 20 anys després.[4]
AMD va desenvolupar les seves extensions de virtualització de primera generació amb el nom en codi "Pacifica", i inicialment les va publicar com AMD Secure Virtual Machine (SVM),[5] però més tard les va comercialitzar amb la marca registrada AMD Virtualization, abreujada AMD-V.
El 23 de maig de 2006, AMD va llançar l'Athlon 64 ("Orleans"), l'Athlon 64 X2 ("Windsor") i l'Athlon 64 FX ("Windsor") com els primers processadors AMD a donar suport a aquesta tecnologia.
Anteriorment anomenat "Vanderpool", VT-x representa la tecnologia d'Intel per a la virtualització a la plataforma x86. El 13 de novembre de 2005, Intel va llançar dos models de Pentium 4 (Model 662 i 672) com els primers processadors Intel amb suport VT-x. El senyalador de la CPU per a la capacitat de VT-x és "vmx"; a Linux, això es pot comprovar mitjançant /proc/cpuinfo
, o a macOS mitjançant sysctl machdep.cpu.features
.
La virtualització gràfica no forma part de l'arquitectura x86. La tecnologia de virtualització gràfica d'Intel (GVT) proporciona virtualització gràfica com a part d'arquitectures gràfiques de generació més recents. Tot i que les APU d'AMD implementen el conjunt d'instruccions x86-64, implementen arquitectures gràfiques pròpies d'AMD (TeraScale, GCN i RDNA) que no admeten la virtualització gràfica. Larrabee era l'única microarquitectura gràfica basada en x86, però probablement no incloïa suport per a la virtualització gràfica.
La virtualització de memòria i E/S la realitza el chipset.[6] Normalment, aquestes funcions han de ser habilitades per la BIOS, que ha de ser capaç de suportar-les i també estar configurada per utilitzar-les.