Simulator sistem komputer - apakah mereka terlihat seperti kenyataan

Dalam bahasa yang sederhana dan dapat diakses tentang istilah dasar dari bidang simulator, serta jenis dan tingkat detail model. Bahan untuk kenalan yang mudah dan cepat dengan area ini.

gambar

Jika saya ditanya tentang simulasi beberapa waktu lalu, hal pertama yang akan terjadi pada saya adalah anak saya, yang berbicara tentang sakit perutnya pada malam kontrol di sekolah. Namun, selama sepuluh tahun terakhir saya telah bekerja dengan simulator dari berbagai sistem komputer, dari telepon ke server berdasarkan mikroprosesor, SOC (System-On-Chip) dan chipset dari salah satu produsen terbesar (sayangnya, namanya di bawah NDA), dan ide saya tentang Simulasi telah berubah. Tetapi hal pertama yang pertama.

Saya yakin banyak dari Anda telah menemukan simulator, yang sering disebut mesin virtual, hypervisors. Seseorang menginstal Parallels Studio pada Mac mereka untuk menjalankan Windows dari MacOS, seseorang menggunakan produk dari VmWare - Workstation agar sistem operasi (OS) lain yang berjalan di dalamnya sudah terpasang. Mereka yang akrab dengan Linux lebih menyukai KVM dan QEMU. Juga populer di kalangan orang adalah VirtualBox. Orang-orang yang secara profesional mengembangkan perangkat keras berbasis FPGA (Programmable Logic Integrated Circuits) mengetahui VCS dari Synopsys dan Mentor Graphics Questa. Namun ini hanya sebagian kecil dari apa yang bisa disebut simulator.

Apa itu simulator?


Simulator adalah model, biasanya perangkat lunak, perangkat nyata. Dengan demikian, simulasi adalah proses model seperti itu yang mengulang operasi perangkat.

Pada prinsipnya, Anda dapat membuat model perangkat apa pun, tetapi yang paling umum adalah simulator perangkat mikroprosesor, yaitu perangkat yang komponen utamanya adalah mikroprosesor, dan sisa logikanya sudah dibangun di sekitarnya. Salah satu kegunaan utama simulator adalah untuk meluncurkan program yang dirancang untuk mikroprosesor itu sendiri. Pada saat yang sama, menggunakan perangkat nyata sulit karena satu dan lain alasan, misalnya, itu mungkin belum ada, jika kita berbicara tentang pemodelan generasi mikroprosesor masa depan.

Airbnb dalam simulasi - tamu dan tuan rumah


Kode yang berjalan di dalam simulator disebut "kode tamu", dapat berupa "program tamu" atau keseluruhan "sistem operasi tamu". Sistem simulasi itu sendiri hanya disebut "tamu". Pada gilirannya, sistem, komputer tempat simulator berjalan, disebut "host" (host Inggris), dan sistem operasi yang berjalan pada host di mana simulator berjalan disebut "host OS".

gambar

Dengan demikian, kita dapat mengatakan bahwa simulator yang mengimplementasikan serangkaian instruksi sistem tamu mensimulasikannya menggunakan alat sistem host yang tersedia.

Simulasi dan persaingan - nama mana yang benar?


Model dapat mengulangi perangkat dengan berbagai tingkat akurasi dan detail. Seringkali ini adalah simulasi hanya perilaku eksternal dari sistem yang tersedia untuk kode program. Kode tidak "peduli" bagaimana tepatnya ini atau itu instruksi prosesor diimplementasikan di dalam - yang utama adalah bahwa ia berfungsi. Versi simulasi ini umum, tidak sulit untuk dikembangkan dan cukup cepat, tidak melambat bahkan pada komputer pengguna biasa.

Namun, ini tidak cukup jika kita ingin tahu, misalnya, berapa lama program akan berjalan pada perangkat keras nyata. Ini membutuhkan pemodelan tidak hanya perilaku eksternal, tetapi juga pengulangan struktur internal dan logika kerja. Ini juga dapat dilakukan dengan berbagai tingkat detail dan akurasi. Lebih tepat menyebut emulator model seperti itu, yang benar-benar meniru perangkat, dan tidak “mensimulasikan” hasilnya.

Membuat emulator jauh lebih rumit karena jumlah fungsionalitas yang lebih besar yang harus diterapkan dalam model. Mereka juga berfungsi jauh lebih lambat dibandingkan dengan simulator dari perilaku eksternal perangkat. Dengan emulator, kita tidak berbicara tentang memulai Windows sama sekali - ini bisa memakan waktu bertahun-tahun. Tidak ada yang terlibat dalam pembuatan emulator perangkat lunak dari seluruh platform - ini sangat panjang dan mahal. Sebagai gantinya, masing-masing komponen sistem ditiru, seperti prosesor pusat yang sama, dan hanya sebagian dari proses simulasi yang diluncurkan di atasnya. Berbagai skema hibrid dimungkinkan, ketika bagian dari simulator adalah model tingkat tinggi, sebagian adalah model tingkat rendah, sebagian ada dalam FPGA, dan sebagian sebenarnya adalah bagian nyata dari besi.

gambar

4 tingkat detail simulasi


Seperti yang saya tulis di atas, opsi yang paling umum adalah simulasi di tingkat instruksi prosesor, yang disebut ISA (Instruction Set Architecture), atau, lebih tepatnya, hasil eksekusi mereka, yaitu. tanpa meniru semua logika internal tentang bagaimana ini terjadi pada prosesor nyata, dan tanpa memperhitungkan waktu eksekusi berbagai instruksi. Simulator ini juga disebut fungsional. Ini adalah bagaimana VirtualBox, Vmware Workstation, Wind River Simics, KVM dan QEMU bekerja. Ini memungkinkan Anda untuk dengan nyaman, tanpa tindakan tambahan yang tidak perlu, menjalankan program yang dirancang untuk perangkat yang disimulasikan. Dengan kata lain, kompilasi atau manipulasi lain dengan menjalankan program tidak diperlukan. Dalam kasus seperti itu, mereka mengatakan bahwa dimungkinkan untuk menjalankan kode biner yang tidak dimodifikasi.

Jika kita berbicara tentang tingkat abstraksi yang lebih tinggi, maka ini akan menjadi implementasi ABI tertentu (Application Binary Interface). Singkatnya, ABI menggambarkan antarmuka biner untuk interaksi dua program - biasanya program pengguna dan perpustakaan atau OS. ABI mencakup konvensi pemanggilan (cara menyampaikan parameter dan mengembalikan nilai), ukuran tipe data, melakukan panggilan sistem. Bagaimana itu bekerja? Misalnya, jika sebuah program yang ditulis untuk Linux perlu membuat utas tambahan (dari utas Inggris) untuk dieksekusi, maka fungsi pthread_create () dipanggil. Tetapi bagaimana jika Anda membuat perpustakaan dengan fungsi seperti itu di Windows dan menerapkan mekanisme yang diperlukan untuk menghubungkan aplikasi dan perpustakaan (tautan dinamis)? Dalam hal ini, Anda dapat menjalankan aplikasi Linux dari Windows. Windows akan "mensimulasikan" Linux.Inilah yang dilakukan di subsistem Windows untuk Linux pada Windows 10, yang memungkinkan Anda untuk menjalankan aplikasi Linux biner yang tidak dimodifikasi pada Windows.

Sekarang mari kita lihat bagaimana tingkat simulasi level bawah dan detail terlihat. Ini akan menjadi tingkat mikroarsitektur di mana algoritma internal yang nyata dan blok prosesor disimulasikan, seperti dekoder instruksi, antrian, unit pemrosesan yang tidak sesuai pesanan, prediktor cabang, cache, penjadwal, dan penghitungan perangkat itu sendiri. Pemodelan seperti itu memungkinkan kita untuk menganalisis kecepatan nyata dari eksekusi program dan, misalnya, mengoptimalkannya untuk arsitektur yang ada. Dan dalam hal mensimulasikan prototipe mikroprosesor di masa depan, prediksi dan evaluasi kinerja perangkat ini dimungkinkan.

Di bawah level simulasi mikroarsitektur adalah level emulasi elemen-elemen logis yang dibuat dari chip modern. Emulator semacam itu adalah perangkat lunak dan perangkat keras yang menggunakan FPGA. Logika FPGA dijelaskan menggunakan RTL (Register Transfer Level) di Verilog, VHDL, dll. Setelah kompilasi, sebuah gambar (bitstream) diperoleh, yang kemudian di-flash ke FPGA. Dan untuk ini, tidak perlu menggunakan besi solder dan memahami teknik listrik. Papan tersambung ke komputer, misalnya, melalui antarmuka USB atau JTAG, dan perangkat lunak khusus dari produsen kartu FPGA melakukan perekaman. Biaya papan semacam itu mulai dari sepuluh dolar untuk opsi paling sederhana hingga jutaan dolar untuk papan FPGA besar seukuran kabinet yang digunakan di perusahaan manufaktur chip besar.Di perusahaan seperti itu, simulasi FPGA adalah tahap terakhir sebelum RTL dimasukkan ke dalam produksi.

Jika kita berbicara tentang perangkat sederhana, kemudian memiliki gambar FPGA, Anda dapat menghubungi perusahaan khusus yang akan membuat perangkat nyata (non-FPGA) dengan logika terprogram.

Gambar di bawah ini menunjukkan level simulasi yang dijelaskan.

gambar

Selain level simulasi ini, saya juga harus berurusan dengan simulator hybrid. Bahkan, mereka adalah simulator yang terhubung satu sama lain, memodelkan berbagai bagian sistem pada tingkat yang berbeda. Misalnya, Anda perlu menganalisis bandwidth kartu jaringan baru yang bekerja bersama dengan driver yang dikembangkan untuk OS tertentu. Perangkat jaringan seperti itu, serta sejumlah perangkat terkait, dapat diimplementasikan pertama kali di tingkat mikroarsitektur untuk analisis awal, dan kemudian di FPGA, di tingkat elemen logika, untuk pemeriksaan akhir. Pada saat yang sama, seluruh sistem, yang hanya terlibat sebagian, diimplementasikan pada tingkat instruksi. Anda tidak dapat melakukannya tanpanya, karena itu perlu, misalnya, untuk memuat OS, dan tidak masuk akal untuk mengimplementasikannya pada tingkat yang lebih rendah dan lebih kompleks.

Jadi bagaimana dengan membandingkan simulator dan kenyataan?

Seperti yang sekarang sudah jelas, tidak ada tugas untuk membuat simulator ini atau itu semirip mungkin dengan kenyataan. Ada tugas yang ditimbulkan oleh bisnis, dan simulasi dilakukan dengan tingkat "kesamaan" dengan kenyataan, yang minimal cukup untuk menyelesaikan masalah ini, tanpa menghabiskan uang dan waktu ekstra. Dalam satu kasus, ini bisa berupa perpustakaan sederhana yang mengimplementasikan antarmuka biner yang diperlukan (ABI), dan dalam kasus lain, simulator mikroarsitektur terperinci tidak dapat dihilangkan.

Ini adalah informasi paling mendasar tentang apa itu simulator dan apa itu simulator. Pada artikel selanjutnya saya akan menjelaskan detail implementasi simulator platform penuh, mengalahkan model dan bekerja dengan trek.

All Articles