CPU Virtualization

advertisement
Emulation techniques
Trap and emulate model
Hardware assistance
CPU VIRTUALIZATION
Virtualization Technique
• Dari emulasi ke virtualisasi :
• Ketika teknik emulasi mengemulasikan dari guest ke host, dimana ISA
(instruction set architecture) berbeda dengan guest, di teknik
virtualisasi, guest dan host mempunyai ISA yang sama.
• Beberapa problem di emulasi yang tidak akan ada di virtualisasi :
• Tidak perlu untuk mentranslate setiap instruksi biner kepada hosa ISA.
• Tidak perlu khawatir akan adanya mapping special register yang tidak
sama.
• Beberapa masalah yang baru di virtualisasi :
• Privileges instruksi harus bisa dikrontrol dengan baik.
• Tujuan dari virtualisasi :
• Menjalankan atau mensimulasi
semua instruksi dari OS guest
Virtualization Technique
• Kebutuhan virtualisasi menurut Popek dan Goldberg :
• Popek dan goldberg memberikan sebuah set yang cukup untuk
sebuah arsitektur komputer untuk secara efisien mensuport
sistem virtualisasi.
• Popek dan Goldberg memberikan tuntunan untuk desain dari
virtualisasi arsitektur komputer.
• Dan sebuah terminologi Popek dan Goldberg, sebuah VMM
harus mempunyai 3 properti :
• Equivalence (Same as real machine)
• Resource control (Totally control)
• Efficiency (Native execution)
CPU Architecture
• Status CPU moderen biasanya diklasifikasi dalam beberapa
mode.
• Umumnya, dibagi dalam dua mode :
• Kernel mode (Ring 0)
• CPU melakukan operasi yang hanya dibloehkan oleh arsitektur itu
sendiri, termasuk eksekusi instruksi, operasi IO, area memori akses,
dan lain sebagainya.
• OS tradisional menjalankan kernel di mode ring 1.
• User mode (Ring 1 ~ 3)
• CPU secara tipikal hanya dapat melakukan eksekusi sebuah subset
dari beberapa instruksi di mode kernel.
• Aplikasi tradisional berjalan di mode ring 3.
CPU Architecture
• Klasifikasi dari mode CPU, instruksi dibagi menjadi 4 tipe :
• Privileged instruction
• Adalah instruksi-instruksi yang trap jika ketika mesin dalan mode
user dan tidak trap jika mesin dalam mode kernel.
• Sensitive instructions
• Adalah instruksi yang berinteraksi dengan hardware, dimana
termasuk instruksi control-sensitive dan behavior-sensitive..
• Innocuous instruction
• Semua instruksi lainnya.
• Critical instruction
• Semua Sensitive instructions tapi bukan Privileged instruction.
CPU Architecture
CPU Architecture
• What is trap ?
• Ketika CPU berjalan di mode, beberapa event internal dan eksternal,
beberapa butuh di handel dalam mode kernel, maka even tersebut
akan ditaruh di mode kernel.
• Lalu CPU akan lompat ke hardware exeption handler vector, dan
mengeksekusi sistem operasi di mode kernel.
• Trap types :
• System Call
• Dipanggil oleh aplikasi dalam mode user.
• Contohnya, aplikasi meminta OS untuk sistem IO.
• Hardware Interrupts
• Dipanggil oleh beberapa even hardware di mode apapun.
• Contohnya, even hardware clock timer trigger.
• Exception
• Dipanggil ketika error yang tidak terduga atau sistem malfungsi terjadi.
• Contohnya, mengeksekusi privilege instructions di user mode.
Trap and Emulate Model
• Jika kita ingin virtualisasi CPU menjadi efisien, bagaimana caranya
mengimplementasi VMM ?
• Kita harus membuat kode biner dari guest berjalan secepat mungkin.
• Secara teori, jika kita dapat menjalankan sebuah kode biner guest
secara natif maka tidak akan ada namanya overhead.
• Tapi ita tidak bisa membuat guest OS menghandel semuanya, VMM
harus bisa mengontrol semua resource hardware.
• Solusi :
• Ring Compression
• Mengubah OS tradisional dari mode kernel (ring 0) ke mode user (ring 1)
dan menjalankan VMM di mode kernel.
• Maka VMM akan dapat mencegah sebuah even trapping.
Trap and Emulate Model
• VMM paradigma virtualisasi (trap and emulate) :
1.
2.
3.
Biarkan instruksi normal dan OS guest berjalan langsung di
dalam prosesor dalam mode user.
Ketika mengeksekusi privileged instructions hardware akan
membuat trap prosesor kedalam VMM.
VMM akan mengemulasikan efek dari privileged instructions
untuk OS guest dan dikembalikan ke guest
Trap and Emulate Model
• OS tradisional :
• Ketika aplikasi memanggil
sebuah system call :
• CPU akan melakukan trap
untuk melakukan interrupt
handler vector di OS.
• CPU akan berubah ke mode
kernel (ring 0) dan
mengeksekusi instruksi OS.
• Ketika even eksekusi :
• Hardware akan
menginterupsi eksekusi CPU,
dan loncat ke interrupt
handler di OS.
Trap and Emulate Model
• VMM and Guest OS :
• System Call
• CPU akan melakukan trap untuk
interrupt handler vector dari
VMM.
• VMM kembali ke dalam guest OS.
• Hardware Interrupt
• Hardware melakukan CPU trap
untuk interrupt handler dari
VMM.
• VMM lompat ke interrup handler
yang bersangkutan dari OS guest.
• Privilege Instruction
• Menjalankan privilege
instructions di OS akan di trap ke
VMM untuk emulasi instruksi.
• Setelah emulasi, VMM lompat
kembali ke guest OS.
Context
Switch
• Langkah-langkah dari VMM beralih ke virtual machines yang berbeda :
1.
2.
3.
4.
5.
6.
7.
8.
Time menginterupsi dalam VM yang berjalan.
Context beralih ke VMM.
VMM menympan state dari VM yang berjalan.
VMM menentukan VM selanjutnya untuk eksekusi.
VMM melakukan timer interval untuk interupsi.
VMM mengembalikan state dari VM selanjutnya VM.
VMM mengeset PC untuk timer interrupt handler dari VM
selanjutnya.
VM selanjutnya aktif.
System State Management
• Virtualisasi system state :
• VMM akan menahan system state dari
VM dalam memori.
• Ketika context dari VMM berubah dari
satu VM ke lainnya
• Tulis nilai register kembali ke memori
• Mengkopi nilai register dari guest OS
selanjutnya ke register CPU.
Virtualization Theorem
• Subset theorem :
• Untuk semua komputer generasi ketiga biasa, sebuah VMM mungkin
dapat dibentuk ketika sebuah set sensitive instructions adalah
sebuah subset dari set of privileged instructions..
• Recursive Emulation :
• Adalah fitur dari sebuah hypervisor dimana membolehkan Vmnya
untuk bertindak sebagai hypervisor dan memulai VM sendiri
• Sebuah komputer generasi ketiga dapat divirtualisasi secara rekursif
apabila
• Dapat di virtualisasi
• VMM tanpa adanya dependensi/ketergantungan waktu yang dapat di
konstruksi untuk VMM tersebut.
Teknik Virtualisasi
• Bagaimana memvirtualisasi hardware yang tidak dapat
divirtualisasi:
• Para-virtualization
• Memodifikasi guest OS untuk melewati critical instructions.
• Mengimplementasi beberapa hyper-calls untuk melakukan trap
kepada guest OS VMM.
• Binary translation
• Menggunakan teknik emulasi untuk membuat hardware dapat
divirtualisasi.
• Melewati critical instructions melalui transasi ini.
• Hardware assistance
• Modifikasi atau menambah ISA dari hardware untuk menyediakan
arsitektur yang dapet divirtualisasi.
• Mengurangi kompleksitas dari implementasi VMM.
Para-Virtualization
• Para-Virtualization implementation :
• Di teknik para-virtualization, OS guest dimodifikasi untuk mencegah
pemanggilan critical instructions.
• Guest OS tetap mengetahui keberadaan dari VMM dan berkolaborasi
secara baik.
• VMM akan menyediakan interface hyper-call, yang akan digunakan
untuk canel berkomunikasi antara guest dengan host.
Binary Translation
• Di teknik emulasi:
• Mosul binary translation digunakan untuk mengoptimisasi block
kode biner dan mentranslasi biner dari guest ISA ke host ISA.
• In virtualization techniques :
• Modul Binary translation digunakan untuk melewati atau
memodifikasi guest OS block kode biner yang di dalamnya terdapat
critical istructions.
• Mentranslate critical instructions kedalam beberapa privilege
instructions yang akan di trap ke dalam VMM untuk emulasi lebih
lanjut.
Binary Translation
• Static vs. Dynamic :
• Static binary translation
• Semua file yang dapat dieksekusi di translasi kedalam sebuah target
arsitektur yang dapat di eksekusi.
• Hal ini sangat sulit di lakukan dengan benar karena semua kode tidak
dapat diketemukan oleh sebuah translator.
• Dynamic binary translation
• Melihat pada sebuah urutan pendek dari kode, biasanya pada urutan
dari sebuah basic bock, mentranslasikannya dan memasukkan hasil
urutan kedalam cache.
• Kode hanya ditranslasikan ketika ditemukan dan ketika
memungkinkan, branch instructions digunakan untuk menunjukkan
ke kode yang sudah ditransasikan dan menyimpan kode tersebut.
Binary Translation
• Dynamic binary translation dan optimisasi
• VMM dapat secara dinamis mentranslasi kode biner dan
mengumpulkan data profiling untuk optimisasi lebih lanjut.
Some Difficulties
• Kesulitan dari binary translation :
• Self-modifying code
• Jika OS guest akan memodifikasi kode binernya sendiri dalam runtime,
binary translation butuh menghilangkan cache kode yang bersangkutan
dan mentranslasi ulang block kode.
• Self-reference code
• Jika kode guest butuh di referensikan (dibaca) oleh kode dalam runtime
dirinya sendiri, VMM butuh untuk membuatnya mereferensikan kembali
kepada lokasi biner yang asli.
• Real-time system
• Untuk waktu kritikal OS guest, environment emulasi akan kehilangan
waktu yang tepat, dan masalah ini belum dapat dipecahkan.
• Kesulitan dari para-virtualization :
• Modifikasi guest OS
• User minimal haru mempunyai sesource code dari guest OS dan
memodfikasi kernelnya, jika tidak para-virtualization tidak dapat
digunakan.
Emulation techniques
Trap and emulate model
Hardware assistance
CPU VIRTUALIZATION
Hardware Solution
• Kenapa banyak masalah dan kesulitan ?
• Critical instructions tidak di trap di mode user.
• Meskipun jika kita memakai critical instructions trap, informasi
semantiknya mungkin juga akan berubah, maka tidak akan valid.
• intinya, legacy processor tidak di desain untuk tujuan
virtualisasi dari awal.
• Jika prosesor dapat mengetahui perbedaan behavior antara guest
dan host, desain VMM akan lebih efisien dan simpel.
Hardware Solution
• Kembali ke trap model :
• Beberapa tipe trap tidak membutuhkan VMM.
• Contohnya, semua system call dipanggil oleh aplikasi di OS guest harus
diterima hanya oleh OS guest. Tidak dibutuhkan untuk melakukan trap
kepada VMM dan lalu di forward kembali ke OS guest, dimana akan
dimasukkan context switch overhead.
• Beberapa critical instructions tidak boleh dieksekusi oleh OS guest.
• Meskipun kita membuat critical instrutions trap ke VMM, VMM tidak
dapat mengidentifikasi apakah tindakan trap diakibatkan dengan tujuan
emulasi atau OS execution exception yang sebenarnya.
• Solusi :
• Butuh mendefinisikan informasi semantik dari beberapa instruksi.
• Butuh memperkenalkan paradigma kontrol CPU yang baru.
Intel VT-x
• Untuk memecahkan masalah tersebut, intel memperkenalkan
operation mode di arsitektur x86.
• VMX Root Operation (Root Mode)
• Semua behavior instruksi di mode ini tidak berbeda dengan yang
tradisional.
• Semua legacy software dapat berjalan di mode ini secara benar.
• VMM harus berjalan di mode ini dan mengontrol semua system
resource.
• VMX Non-Root Operation (Non-Root Mode)
• Semua behavior sensitive instruction di mode ini di definisikan
kembali.
• sensitive instructions akan di trap ke Root Mode.
• OS guest harus berjalan di mode ini dan divirtualisasi penuh melalui
“trap and emulation model”.
Intel VT-x
• VMM dengan VT-x :
• System Call
• CPU akan langsung
melakukan trap untuk
melakukan interrupt
handler vector dari OS
guest.
• Hardware Interrupt
• Even hardware tetap haru
di handel oleh VMM dulu.
• Sensitive Instruction
• Tidak melakukan trap pada
semua privilege
instructions, OS guest yang
berjalan pada mode nonroot akan melakukan trap
hanya pada trap sensitive
instruction.
Context Switch
• VMM melakukan pergantian VM yang berbeda dengan
menggunakan intel VT-x :
• VMXON/VMXOFF
• Dua instruksi ini digunakan untuk menyalakan dan mematikan CPU di
mode root.
• VM Entry
• Biasanya dikarenakan eksekusi dari instruksi VMLAUNCH/VMRESUME, yang
akan merubah mode CPU dari mode root ke mode non-root.
• VM Exit
• Hal ini dikarenakan banyak sebab, seperti interupsi hardware atau
eksekusi sensitive instruction.
• Merubah CPU dari mode non-root ke mode root.
System State Management
• Intel memperkenalkan hardware yang lebih efisien untuk
perpindahan register dengan VMCS (Virtual Machine Control
Structure) :
• State Area
• Menyimpan OS host system state ketika dalam VM-Entry.
• Menyimpan OS guest system state ketika dalam VM-Exit.
• Control Area
• Behavior control instruction dalam mode Non-Root.
• Mngontrol proses VM-Entry dan VM-Exit.
• Exit Information
• Menyediakan alasan VM-Exit dan beberapa informasi hardware.
• Kapanpun VM entry atau VM exit terjadi, CPU akan secara
otomatis membaca atau menulis informasi yang bersangkutan ke
dalam VMCS.
System State Management
• Menggabungkan VM ke virtual CPU:
• VCPU (Virtual CPU) mempunyai 2 bagian
• VMCS menjaga virtual system states, yang dilakukan oleh hardware.
• Non-VMCS menjaga sistem informasi non-essential, yang dilakukan oleh
software.
• VMM butuh menghandel bagian non-VCMS.
Download