x86 sanallaştırma - x86 virtualization

x86 sanallaştırma , bir x86/x86-64 CPU'da donanım destekli sanallaştırma özelliklerinin kullanılmasıdır.

1990'ların sonlarında x86 sanallaştırması, işlemcinin donanım destekli sanallaştırma yeteneklerindeki eksikliğini makul bir performans elde ederken telafi etmek için gerekli olan karmaşık yazılım teknikleriyle sağlandı. 2005 ve 2006'da hem Intel ( VT-x ) hem de AMD ( AMD-V ), daha basit sanallaştırma yazılımına izin veren ancak çok az hız avantajı sunan sınırlı donanım sanallaştırma desteği sundu. Önemli hız iyileştirmelerine izin veren daha büyük donanım desteği, sonraki işlemci modelleriyle birlikte geldi.

Yazılım tabanlı sanallaştırma

Aşağıdaki tartışma yalnızca x86 mimarisi korumalı modunun sanallaştırılmasına odaklanmaktadır .

Korumalı modda, işletim sistemi çekirdeği, halka 0 gibi daha yüksek bir ayrıcalıkta ve halka 3 gibi daha düşük bir ayrıcalıkta uygulamalar çalışır. Yazılım tabanlı sanallaştırmada, bir ana işletim sisteminin donanıma doğrudan erişimi vardır, konuk işletim sistemlerinin ise sınırlı erişimi vardır. donanım, tıpkı ana işletim sisteminin diğer uygulamaları gibi. Bu sınırlamanın üstesinden gelmek için x86 yazılım tabanlı sanallaştırmada kullanılan bir yaklaşım , konuk işletim sistemini 0'dan daha yüksek (daha az ayrıcalıklı) bir halkada çalıştırmayı içeren halka deprivileging olarak adlandırılır .

Korumalı modun sanallaştırılmasını mümkün kılan üç teknik:

  • İkili çeviri , aksi takdirde sessizce başarısız olacak veya halka 0'ın üzerinde yürütüldüğünde farklı davranacak, klasik tuzak ve öykünme sanallaştırmasını imkansız hale getiren , POPF gibi belirli halka 0 komutlarını halka 3 talimatları cinsinden yeniden yazmak için kullanılır . Performansı artırmak için çevrilmiş temel blokların , kod yamalarını ( örneğin VxD'lerde kullanılır ), sayfaların konuk işletim sistemi tarafından yeniden kullanımını ve hatta kendi kendini değiştiren kodu algılayan tutarlı bir şekilde önbelleğe alınması gerekir .
  • Bir işlemci tarafından kullanılan bir dizi anahtar veri yapısının gölgelenmesi gerekir . Çoğu işletim sistemi disk belleğine alınmış sanal bellek kullandığından ve konuk işletim sistemine MMU'ya doğrudan erişim izni verilmesi, sanallaştırma yöneticisi tarafından kontrolün kaybedilmesi anlamına geleceğinden , x86 MMU'nun bazı çalışmalarının bir teknik kullanılarak konuk işletim sistemi için yazılımda çoğaltılması gerekir. gölge sayfa tabloları olarak bilinir . Bu, erişim denemelerini yakalayarak ve bunun yerine yazılımda taklit ederek konuk işletim sisteminin gerçek sayfa tablosu girişlerine erişimini reddetmeyi içerir. x86 mimarisi, segment tanımlayıcılarını işlemcide depolamak için gizli durumu kullanır , bu nedenle segment tanımlayıcıları işlemciye yüklendikten sonra, yüklendikleri belleğin üzerine yazılabilir ve tanımlayıcıları işlemciden geri almanın bir yolu yoktur. . Bu nedenle, konuk işletim sistemi tarafından tanımlayıcı tablolarda yapılan değişiklikleri izlemek için gölge tanımlayıcı tabloları kullanılmalıdır.
  • G/Ç aygıt öykünmesi: Konuk işletim sistemindeki desteklenmeyen aygıtlar , ana işletim sisteminde çalışan bir aygıt öykünücüsü tarafından öykünmelidir .

Bu teknikler, IBM System/370 gibi yerel olarak sanallaştırılabilir bir mimaride çalışan bir VM ile karşılaştırıldığında, MMU sanallaştırma desteğinin olmaması nedeniyle bir miktar performans yüküne neden olur .

Geleneksel anabilgisayarlarda, klasik tip 1 hiper yönetici kendi kendine ayaktaydı ve herhangi bir işletim sistemine bağlı değildi veya herhangi bir kullanıcı uygulamasını kendisi çalıştırmıyordu. Buna karşılık, ilk x86 sanallaştırma ürünleri iş istasyonu bilgisayarlarına yönelikti ve hipervizörü ana işletim sistemi (tip 2 hiper yönetici) altında çalışan bir çekirdek modülüne yerleştirerek bir ana işletim sistemi içinde konuk işletim sistemini çalıştırdı.

Popek ve Goldberg tarafından açıklandığı gibi, donanım yardımı olmayan x86 mimarisinin sanallaştırılabilir olup olmadığı konusunda bazı tartışmalar olmuştur . VMware araştırmacıları 2006 yılındaki bir ASPLOS makalesinde, klasik tuzak ve öykünme tekniğiyle olmasa da, yukarıdaki tekniklerin, Popek ve Goldberg'in üç kriterini karşılama anlamında x86 platformunu sanallaştırılabilir hale getirdiğine dikkat çekti .

Farklı bir rota gibi diğer sistemler tarafından çekildi Denali , L4 ve Xen olarak bilinen sanallaştırma içerir, taşıma sanallaştırın zor gerçek x86 komut setinin parçalarını uygulamıyor çıkan sanal makine üzerinde çalıştırmak için işletim sistemlerini . Paravirtualized I/O, orijinal SOSP '03 Xen belgesinde gösterildiği gibi önemli performans avantajlarına sahiptir .

x86-64'ün ( AMD64 ) ilk sürümü, uzun modda segmentasyon desteğinin olmaması nedeniyle yalnızca yazılıma yönelik tam sanallaştırmaya izin vermedi , bu da hipervizörün belleğinin korunmasını, özellikle de tuzak işleyicisinin korunmasını imkansız hale getirdi. konuk çekirdek adres alanında çalışır. Revizyon D ve sonraki 64-bit AMD işlemciler (bir kural olarak, 90 nm veya daha az üretilenler) uzun modda segmentasyon için temel destek ekleyerek ikili çeviri yoluyla 64-bit ana bilgisayarlarda 64-bit konukları çalıştırmayı mümkün kıldı . Intel, x86-64 uygulamasına ( Intel 64 ) segmentasyon desteği eklemedi , bu da Intel CPU'larda yalnızca 64 bit yazılım sanallaştırmasını imkansız hale getirdi, ancak Intel VT-x desteği, Intel platformunda 64 bit donanım destekli sanallaştırmayı mümkün kılıyor.

Bazı platformlarda, temel işlemci 64-bit ise ve gerekli sanallaştırma uzantılarını destekliyorsa, 32-bit ana işletim sisteminde 64-bit misafir çalıştırmak mümkündür.

Donanım destekli sanallaştırma

2005 ve 2006'da Intel ve AMD (bağımsız çalışarak) x86 mimarisine yeni işlemci uzantıları oluşturdu . İlk nesil x86 donanım sanallaştırması, ayrıcalıklı talimatlar sorununu ele aldı. Sanallaştırılmış sistem belleğinin düşük performans sorunu , yonga setine sonradan eklenen MMU sanallaştırma ile giderildi .

Merkezi işlem birimi

Sanal 8086 modu

Dayanarak acı deneyimleri ile 80286 kendisi tarafından eşzamanlı çalıştırmak için yeterli uygun değildi korumalı mod, DOS iyi uygulamaları Intel tanıtıldı sanal 8086 modu kendi içinde 80.386 386 ve üstü yongaları üzerinde 8086 işlemcileri sanallaştırılmış sundu çip. Bununla birlikte, korumalı modun kendisini sanallaştırmaya yönelik donanım desteği, 20 yıl sonra kullanılabilir hale geldi.

AMD sanallaştırma (AMD-V)

AMD Fenom İşlemci

AMD, ilk nesil sanallaştırma uzantılarını "Pacifica" kod adı altında geliştirdi ve başlangıçta bunları AMD Secure Virtual Machine (SVM) olarak yayınladı, ancak daha sonra bunları AMD Virtualization ticari markası altında pazarladı , kısaltılmış AMD-V .

23 Mayıs 2006'da AMD , bu teknolojiyi destekleyen ilk AMD işlemcileri olarak Athlon 64 ( "Orleans" ), Athlon 64 X2 ( "Windsor" ) ve Athlon 64 FX'i ( "Windsor" ) piyasaya sürdü .

AMD-V özelliği , soket AM2 , Turion 64 X2 ve Opteron 2. nesil ve üçüncü nesil, Phenom ve Phenom II işlemcilerde "F" veya "G" revizyonlarına sahip Athlon 64 ve Athlon 64 X2 işlemci ailesinde de bulunur . APU Fusion işlemcileri AMD-V destekler. AMD-V, hiçbir Soket 939 işlemci tarafından desteklenmez. Bunu destekleyen tek Sempron işlemciler APU'lar ve Huron , Regor , Sargas masaüstü CPU'larıdır.

Family 0x10 Barcelona serisi ile başlayan AMD Opteron CPU'lar ve Phenom II CPU'lar, Rapid Virtualization Indexing (daha önce geliştirme sırasında Nested Page Tables olarak biliniyordu) adı verilen ve daha sonra Intel tarafından Genişletilmiş Sayfa Tabloları (EPT) olarak kabul edilen ikinci nesil bir donanım sanallaştırma teknolojisini destekler. .

2019 itibariyle, tüm Zen tabanlı AMD işlemciler AMD-V'yi destekler.

İşlemci bayrağı AMD-V için "SVM" dir. Bu kontrol edilebilir BSD türevleri aracılığıyla dmesg veya sysctl ve Linux yoluyla . AMD-V'deki talimatlar arasında VMRUN, VMLOAD, VMSAVE, CLGI, VMMCALL, INVLPGA, SKINIT ve STGI bulunur. /proc/cpuinfo

Bazı anakartlarda , uygulamaların kullanabilmesi için kullanıcıların BIOS kurulumunda AMD SVM özelliğini etkinleştirmeleri gerekir .

Intel sanallaştırma (VT-x)

Intel Core i7 (Bloomfield) CPU

Daha önce kod adı "Vanderpool" olan VT-x, Intel'in x86 platformunda sanallaştırma teknolojisini temsil eder. 13 Kasım 2005'te Intel, VT-x'i destekleyen ilk Intel işlemcileri olarak iki Pentium 4 modelini (Model 662 ve 672) piyasaya sürdü . VT-x yeteneği için CPU bayrağı "vmx"; Linux'ta bu, aracılığıyla /proc/cpuinfoveya macOS'ta aracılığıyla kontrol edilebilir sysctl machdep.cpu.features.

"VMX", 13 yeni talimat ekleyen Sanal Makine Uzantıları anlamına gelir: VMPTRLD, VMPTRST, VMCLEAR, VMREAD, VMWRITE, VMCALL, VMLAUNCH, VMRESUME, VMXOFF, VMXON, INVEPT, INVID ve VMFUNC. Bu talimatlar, konuk işletim sisteminin kendisini tam ayrıcalıkla (ring 0) çalışıyor olarak algıladığı, ancak ana işletim sisteminin korunduğu bir sanal yürütme moduna girip çıkmanıza izin verir.

2015 itibariyle, neredeyse tüm yeni sunucu, masaüstü ve mobil Intel işlemciler VT-x'i destekler ve bazı Intel Atom işlemcileri birincil istisnadır. Bazı anakartlarda , uygulamaların kullanabilmesi için kullanıcıların BIOS kurulumunda Intel'in VT-x özelliğini etkinleştirmeleri gerekir .

Intel , 2008'de piyasaya sürülen Nehalem mimarisinden bu yana, sayfa tablosu sanallaştırması için bir teknoloji olan Genişletilmiş Sayfa Tablolarını (EPT) dahil etmeye başladı . 2010'da Westmere , mantıksal işlemciyi doğrudan gerçek modda başlatmak için destek ekledi  - "sınırsız misafir" olarak adlandırılan bir özellik ", EPT'nin çalışması gerekir.

Haswell mikro mimarisinden (2013'te duyurulmuştu) bu yana Intel, VMM'lerin iç içe sanallaştırmasını hızlandıran bir teknoloji olarak VMCS gölgelemeyi dahil etmeye başladı . Sanal makine kontrol yapısı (VMCS) a, veri yapısı bu VMM tarafından yönetilmektedir ise, tam olarak VM başına bir kez bulunur bellekte. Farklı VM'ler arasındaki yürütme bağlamındaki her değişiklikle, VMCS, VM'nin sanal işlemcisinin durumunu tanımlayarak mevcut VM için geri yüklenir. Birden fazla VMM veya iç içe VMM kullanılır kullanılmaz, yukarıda açıklandığı gibi , icat edilmesi gereken gölge sayfa tablosu yönetimine benzer bir sorun ortaya çıkar . Bu gibi durumlarda, VMCS'nin birden çok kez gölgelenmesi (nesting durumunda) ve işlemci tarafından donanım desteği olmaması durumunda kısmen yazılımda uygulanması gerekir. Gölge VMCS işlemeyi daha verimli hale getirmek için Intel, VMCS gölgeleme için donanım desteği uyguladı.

VIA sanallaştırma (VIA VT)

VIA Nano 3000 Serisi İşlemciler ve üstü, Intel VT-x ile uyumlu VIA VT sanallaştırma teknolojisini destekler. EPT, Nano C4350AL'ye benzer şekilde VIA QuadCore-E ve Eden X4'ün soyundan gelen Zhaoxin ZX-C'de bulunur .

Kesinti sanallaştırması (AMD AVIC ve Intel APICv)

2012'de AMD , sanallaştırma ortamlarında kesinti ek yükünü azaltmayı hedefleyen Gelişmiş Sanal Kesinti Denetleyicisini ( AVIC ) duyurdu . Bu teknoloji, duyurulduğu üzere x2APIC'i desteklemiyor . 2016'da AVIC, AMD ailesinin 15h modellerinde 6Xh (Carrizo) ve daha yeni modellerde mevcuttur.

Yine 2012'de Intel , duyuru zamanında bir marka adı olmayan kesme ve APIC sanallaştırma için benzer bir teknoloji duyurdu. Daha sonra, APIC sanallaştırma ( APICv ) olarak markalandı ve Xeon E5-26xx v2 (2013'ün sonlarında piyasaya sürüldü) ve Xeon E5-46xx v2 (lansmanı) olarak satılan Ivy Bridge EP serisi Intel CPU'larında ticari olarak kullanılabilir hale geldi. 2014 başlarında).

Grafik İşleme Ünitesi

Grafik sanallaştırma, x86 mimarisinin bir parçası değildir. Intel Grafik Sanallaştırma Teknolojisi (GVT), daha yeni Nesil grafik mimarilerinin bir parçası olarak grafik sanallaştırma sağlar. Her ne kadar AMD APU uygulamak X86-64 komut setini, bunlar AMD'nin kendi grafik mimarileri (uygulamak TeraScale , GCN ve rDNA grafik sanallaştırma desteği yok). Larrabee , x86 tabanlı tek grafik mikromimarisiydi , ancak muhtemelen grafik sanallaştırma desteği içermiyordu.

yonga seti

Bellek ve G/Ç sanallaştırması yonga seti tarafından gerçekleştirilir . Tipik olarak, bu özellikler BIOS tarafından etkinleştirilmelidir, bu da onları destekleyebilmeli ve ayrıca bunları kullanacak şekilde ayarlanmalıdır.

G/Ç MMU sanallaştırma (AMD-Vi ve Intel VT-d)

AMD-Vi bilgilerini gösteren bir Linux çekirdek günlüğü

Bir giriş/çıkış bellek yönetim birimi (IOMMU), konuk sanal makinelerin Ethernet, hızlandırılmış grafik kartları ve sabit sürücü denetleyicileri gibi çevresel aygıtları DMA ve kesinti yeniden eşleme yoluyla doğrudan kullanmasına olanak tanır . Buna bazen PCI geçidi denir .

Bir IOMMU ayrıca, işletim sistemlerinin, bellek adres çevirisi kullanarak, bellek adres alanları işletim sisteminin bellek adres alanından daha küçük olan çevresel aygıtlarla iletişim kurmalarına izin vermek için ihtiyaç duyulan geri dönme arabelleklerini ortadan kaldırmasına olanak tanır. Aynı zamanda, bir IOMMU, işletim sistemlerinin ve hipervizörlerin hatalı veya kötü niyetli donanımların bellek güvenliğinden ödün vermesini önlemesine de olanak tanır .

Hem AMD hem de Intel, IOMMU özelliklerini yayınladı:

  • AMD'nin G/Ç Sanallaştırma Teknolojisi, "AMD-Vi", orijinal adı "IOMMU"
  • Intel'in "Yönlendirilmiş G/Ç için Sanallaştırma Teknolojisi" (VT-d), Core 2 mimarisinden bu yana en üst düzey (hepsi değil) daha yeni Intel işlemcilerinde bulunur.

CPU desteğine ek olarak, hem anakart yonga seti hem de sistem üretici yazılımının ( BIOS veya UEFI ) kullanılabilir olması için IOMMU I/O sanallaştırma işlevini tam olarak desteklemesi gerekir. Sanal makineler arasında çeşitli aygıt işlevlerini yeniden atamak için gerekli olduğundan, yalnızca işlev düzeyi sıfırlamayı (FLR) destekleyen PCI veya PCI Express aygıtları bu şekilde sanallaştırılabilir . Atanacak bir cihaz Mesaj Sinyalli Kesintileri (MSI) desteklemiyorsa , atamanın mümkün olması için kesme hatlarını diğer cihazlarla paylaşmamalıdır . Bir PCI/ PCI-X - PCI Express köprüsünün arkasına yönlendirilen tüm geleneksel PCI aygıtları , konuk sanal makineye yalnızca bir kerede atanabilir; PCI Express aygıtlarında böyle bir kısıtlama yoktur.

Ağ sanallaştırma (VT-c)

  • Intel'in "Bağlantı için Sanallaştırma Teknolojisi" (VT-c).
PCI-SIG Tek Köklü G/Ç Sanallaştırma (SR-IOV)

PCI-SIG Tek Köklü G/Ç Sanallaştırması (SR-IOV) , PCI-SIG tarafından standartlaştırıldığı gibi , PCI Express (PCIe) yerel donanımına dayalı bir dizi genel ( x86'ya özgü olmayan) G/Ç sanallaştırma yöntemi sağlar :

  • Adres çeviri hizmetleri (ATS) , adres çevirisi aracılığıyla PCI Express genelinde yerel IOV'u destekler. Bu tür çevirileri yapılandırmak için yeni işlemler için destek gerektirir.
  • Tek köklü IOV (SR-IOV veya SRIOV) , mevcut tek köklü karmaşık PCI Express topolojilerinde yerel IOV'yi destekler. Birden çok sanallaştırılmış yapılandırma alanını yapılandırmak için yeni cihaz yetenekleri için destek gerektirir.
  • Çok köklü IOV (MR-IOV) , ortak bir PCI Express hiyerarşisini paylaşan birden çok kök kompleksi sağlamak için SR-IOV üzerine inşa ederek yeni topolojilerde (örneğin blade sunucular) yerel IOV'yi destekler.

Bunların en yaygını olan SR-IOV'da, bir ana bilgisayar VMM, desteklenen cihazları yapılandırma alanlarının sanal "gölgelerini" oluşturacak ve tahsis edecek şekilde yapılandırır, böylece sanal makine misafirleri bu tür "gölge" cihaz kaynaklarını doğrudan yapılandırabilir ve bunlara erişebilir. SR-IOV etkinleştirildiğinde, sanallaştırılmış ağ arayüzlerine konuklar tarafından doğrudan erişilebilir, bu da VMM'nin katılımını önler ve yüksek genel performans sağlar; örneğin, SR-IOV , NASA'nın sanallaştırılmış veri merkezinde ve Amazon Public Cloud'da yalın donanım ağ bant genişliğinin %95'inden fazlasını elde eder .

Ayrıca bakınız

Referanslar

Dış bağlantılar