CPU Virtualization 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 ? Trap types : 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) : 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 : 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: In virtualization techniques : 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.
CPU Virtualization 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 : Solusi : 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 Hardware Interrupt 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 non-root 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.