Кіріспе

x86/x86 64 процессорларында аппараттық көмекпен виртуализация

x86 виртуализациясы – x86/x86 64 процессорларында аппараттық көмекпен виртуализация мүмкіндіктерін пайдалану. 1990 жылдардың соңында x86 виртуализациясы процессордың аппараттық көмекпен виртуализациялау мүмкіндіктерінің болмауына толыққанды жауап беру және лайықты өнімділікке қол жеткізу үшін күрделі бағдарламалық әдістермен жүзеге асырылды. 2005 және 2006 жылдары Intel (VT-x) және AMD (AMD-V) компаниялары шектеулі аппараттық виртуализация қолдауын ұсынды, бұл қарапайым виртуализациялық бағдарламалық жасақтамаға мүмкіндік берді, бірақ жылдамдық бойынша айтарлықтай артықшылықтарды қамтамасыз етпеді. Процессорлардың кейінгі үлгілерінде жылдамдықты едәуір арттыруға мүмкіндік беретін кеңейтілген аппараттық қолдау пайда болды.

Жабдықпен қамтамасыз етілген виртуализация

2005 және 2006 жылдары Intel және AMD (бір-бірінен тәуелсіз жұмыс істеп) x86 архитектурасына жаңа процессорлық кеңейтімдерді жасады. x86 аппараттық виртуализациясының бірінші буыны ерекше құқықтармен жұмыс жасайтын нұсқаулардың мәселесін шешті. Виртуалдандырылған жүйелік жадтың төмен өнімділігі мәселесі кейіннен чипсетке қосылған MMU виртуализациясы арқылы шешілді.

Виртуалды 8086 режімі

80286 қорғалған режиміндегі қиын тәжірибелерге сүйене отырып, ол DOS қосымшаларын бірдей уақытта жақсы іске қосуға қолайлы болмағандықтан, Intel өздерінің 80386 чипінде виртуалды 8086 режимін енгізді, бұл 386 және одан кейінгі чиптерде виртуалды 8086 процессорларын қамтамасыз етті. Дегенмен, қорғалған режимді виртуализациялауға арналған аппараттық қолдау 20 жыл өткен соң ғана қолжетімді болды.

AMD виртуализациясы (AMD-V)

AMD өзінің бірінші буындық виртуализациялық кеңейтулерін "Pacifica" кодтық атауымен әзірледі және бастапқыда оларды AMD Secure Virtual Machine (SVM) деп жариялады, бірақ кейіннен оларды AMD Virtualization, қысқартылған AMD V сауда белгісімен сатты. 2006 жылдың 23 мамырында AMD осы технологияны қолдауға алғашқы AMD процессорлары ретінде Athlon 64 ("Orleans"), Athlon 64 X2 ("Windsor") және Athlon 64 FX ("Windsor") процессорларын шығарды. AMD V мүмкіндіктері сондай-ақ Athlon 64 және Athlon 64 X2 процессорлар отбасында AM2 сокетінде "F" немесе "G" редакцияларымен, Turion 64 X2 және Opteron 2-ші және 3-ші буын, Phenom және Phenom II процессорларында қолдау көрсетіледі. APU Fusion процессорлары AMD V-ді қолдайды. AMD V Socket 939 процессорларында қолдау көрсетілмейді. Оны қолдайтын жалғыз Sempron процессорлары – APU және Huron, Regor, Sargas үстелдік процессорлары. AMD Opteron процессорлары 0x10 Barcelona отбасынан бастап және Phenom II процессорлары екінші буын аппараттық виртуализациялау технологиясын қолдайды, ол Rapid Virtualization Indexing деп аталады (әзірлеу кезінде Nested Page Tables деп белгіленген), кейін Intel Extended Page Tables (EPT) ретінде қабылдады. 2019 жылғы мәліметтер бойынша, барлық Zen негізіндегі AMD процессорлары AMD V-ді қолдайды. AMD V үшін CPU көрсеткіші "svm" болып табылады. Бұл BSD түйіндемелерінде dmesg немесе sysctl және Linux жүйесінде /proc/cpuinfo арқылы тексерілуі мүмкін.

Intel виртуализациясы (VT-x)

Бұрын "Vanderpool" деп аталған VT x – x86 платформасында виртуализациялау технологиясының Intel өкілі болып табылады. 2005 жылдың 13 қарашасында Intel, VT x қолдауын көрсететін алғашқы Intel процессорлары ретінде Pentium 4 (Model 662 және 672) екі моделін шығарды. VT x мүмкіндігі үшін CPU көрсеткіші "vmx" болып табылады; Linux жүйесінде оны /proc/cpuinfo арқылы, ал macOS жүйесінде sysctl machdep арқылы тексеруге болады. cpu.features. "VMX" – Virtual Machine Extensions (виртуалды машина кеңейтімдері) дегенді білдіреді, ол 13 жаңа команданы қосады: VMPTRLD, VMPTRST, VMCLEAR, VMREAD, VMWRITE, VMCALL, VMLAUNCH, VMRESUME, VMXOFF, VMXON, INVEPT, INVVPID және VMFUNC. Бұл командалар виртуалды орындау режиміне кіруге және одан шығуға мүмкіндік береді, онда қонақ жүйе өзін толық құқықтармен (сақина 0) жұмыс істеп тұр деп есептейді, бірақ хост жүйе қорғалған күйде қалады. 2015 жылдан бастап, Intel-дің жаңа серверлік, десктоптық және мобильді процессорларының көпшілігі VT x-ты қолдайды, ал кейбір Intel Atom процессорлары негізгі ерекшелік болып табылады. Кейбір аналық платаларда қолданбалар оны пайдалану үшін пайдаланушылар BIOS орнатуларында Intel-дің VT x мүмкіндігін қосуы керек. Intel 2008 жылы шыққан Nehalem архитектурасынан бастап, беттік кестелерді виртуализациялау технологиясы Extended Page Tables (EPT) енгізе бастады. 2010 жылы Westmere логикалық процессорды тікелей нақты режимде іске қосу мүмкіндігін қосты, бұл "шексіз қонақ" деп аталатын мүмкіндік, ол жұмыс істеу үшін EPT қажет. Intel, 2013 жылы жарияланған Haswell микроархитектурасынан бастап, VMM-нің ішкі виртуализациясын жеделдететін технология ретінде VMCS көлеңкелеуін енгізе бастады. Виртуалды машинаны басқару құрылымы (VMCS) – жадыдағы дерек құрылымы, ол VMM басқаратын кезде әрбір виртуалды машина үшін бір рет ғана болады. Виртуалды машиналар арасындағы орындау контексінің өзгеруімен, VMCS ағымдағы виртуалды машина үшін қалпына келтіріледі, виртуалды машинаның виртуалды процессор күйін анықтайды. Егер бірнеше VMM немесе ішкі VMM пайдаланылса, бұрын сипатталғандай, көлеңкелі беттік кестелерді басқаруды ойлап табуға ұқсас мәселе туындайды. Мұндай жағдайларда VMCS бірнеше рет көлеңкеленуі керек (ішкі жағдайларда) және процессордың аппараттық қолдауы болмаған жағдайда бағдарламалық қамтамасыз етуде ішінара жүзеге асырылуы керек. Көлеңкелі VMCS-ті тиімді басқару үшін Intel VMCS көлеңкелеуіне аппараттық қолдауды енгізді.

VIA виртуализациясы (VIA VT)

VIA Nano 3000 сериялы процессорлар және одан жоғары Intel VT-x технологиясымен үйлесімді VIA VT виртуализациялық технологиясын қолдайды. EPT, Nano C4350AL-ға ұқсас VIA QuadCore E & Eden X4 процессорларының вариациясы болып табылатын Zhaoxin ZX C процессорларында қолдауға ие.

Графикалық өңдеу қондырғысы

Графикалық виртуализация x86 архитектурасының құрамына кірмейді. Intel Graphics Virtualization Technology (GVT) графикалық виртуализацияны жаңағы Gen графикалық архитектураларының бір бөлігі ретінде ұсынады. AMD APU x86 64 командалар жиынтығын қолдағанмен, графикалық виртуализацияны қолдамайтын AMD-нің өзіндік графикалық архитектураларын (TeraScale, GCN және RDNA) іске асырады. Larrabee x86 негізіндегі жалғыз графикалық микроархитектура болды, бірақ графикалық виртуализацияны қолдау мүмкіндігі болмаған.

Чипсет

Жад және кіріс-шығыс виртуализациясы чипсет арқылы жүзеге асырылады. Әдетте, бұл мүмкіндіктерді BIOS-тан қосу қажет, ол оларды қолдай білуі керек және оларды пайдалану үшін конфигурацияланған болуы керек.

Желілік виртуализация (VT-c)

Intel компаниясының "Байланыс үшін виртуализация технологиясы" (VT c).