Bagikan melalui


Cara kerja emulasi di Arm

Emulasi membuat ekosistem aplikasi Windows yang kaya tersedia di Arm, memungkinkan pengguna untuk menjalankan aplikasi yang mereka pedulikan tanpa modifikasi apa pun pada aplikasi. Emulasi transparan kepada pengguna dan merupakan bagian dari Windows; tidak memerlukan komponen tambahan untuk diinstal.

Windows 11 on Arm mendukung emulasi aplikasi dan performa x86 dan x64 telah ditingkatkan dengan pengenalan Emulator Prism baru di Windows 11 24H2. Windows 10 on Arm juga mendukung emulasi, tetapi hanya untuk aplikasi x86.

Prism

Prism adalah emulator baru yang disertakan dengan Windows 11 24H2. Relatif terhadap teknologi emulasi sebelumnya yang disertakan dalam Windows, ini termasuk pengoptimalan signifikan yang meningkatkan performa dan penggunaan CPU aplikasi yang lebih rendah di bawah emulasi.

Prism dioptimalkan dan disetel khusus untuk prosesor Qualcomm Snapdragon. Beberapa fitur performa dalam Prism memerlukan fitur perangkat keras yang hanya tersedia di seri Snapdragon X, tetapi Prism tersedia untuk semua perangkat Windows 11 yang didukung di Arm dengan Windows 11 24H2.

Cara kerja emulasi

Emulasi berfungsi sebagai simulator perangkat lunak, blok kompilasi just-in-time instruksi x86 ke dalam instruksi Arm64 dengan pengoptimalan untuk meningkatkan performa kode Arm64 yang dikeluarkan.

Layanan menyimpan cache blok kode yang diterjemahkan ini untuk mengurangi overhead terjemahan instruksi dan memungkinkan pengoptimalan saat kode berjalan lagi. Cache diproduksi untuk setiap modul sehingga aplikasi lain dapat menggunakannya pada peluncuran pertama.

Untuk aplikasi x86, lapisan WOW64 Windows memungkinkan kode x86 berjalan pada Windows versi Arm64, sama seperti yang memungkinkan kode x86 berjalan pada Windows versi x64. Ini berarti bahwa aplikasi x86 di Arm dilindungi dengan sistem file dan pengalihan registri.

Untuk aplikasi x64, tidak ada lapisan WOW64 dan tidak ada registri atau folder biner sistem Windows yang terpisah. Sebaliknya, biner sistem dikompilasi sebagai file Arm64X PE yang dapat dimuat ke dalam proses x64 dan Arm64 dari lokasi yang sama tanpa perlu pengalihan sistem file. Ini berarti bahwa aplikasi x64 dapat mengakses seluruh OS, baik sistem file maupun registri, tanpa perlu kode khusus.

Perhatikan bahwa emulasi hanya mendukung kode mode pengguna dan tidak mendukung driver; komponen mode kernel apa pun harus dikompilasi sebagai Arm64.

Mendeteksi emulasi

Aplikasi x86 atau x64 tidak akan tahu bahwa aplikasi berjalan pada Windows di ARM PC, kecuali jika memanggil API tertentu yang dirancang untuk menyampaikan pengetahuan tentang host Arm64, seperti IsWoW64Process2. Aplikasi di bawah emulasi bahwa kueri untuk detail prosesor termasuk metadata atau kemampuan fitur akan menerima detail yang sesuai dengan prosesor virtual yang ditiru. Untuk alasan kompatibilitas, API GetNativeSystemInfo juga akan mengembalikan detail prosesor yang ditiru saat dijalankan dari aplikasi di bawah emulasi.

Untuk aplikasi yang ingin mendeteksi kemampuan emulasi sistem operasi, gunakan API GetMachineTypeAttributes.

Memperbarui untuk mendukung versi Arm aplikasi Anda

Meskipun aplikasi Anda berjalan di bawah emulasi di perangkat Arm adalah tempat yang bagus untuk memulai, aplikasi Anda akan mendapat manfaat dari perolehan performa asli dan kualitas unik perangkat bertenaga Arm jika Anda membangun kembali untuk menambahkan dukungan Arm ke aplikasi Anda.

Lihat Menambahkan dukungan Arm ke aplikasi Windows Anda untuk panduan tentang cara membuat versi Arm aplikasi Anda dan jenis keuntungan, tantangan, dan alat apa yang mungkin terlibat, serta dukungan yang tersedia untuk membuat versi Arm aplikasi Anda (dan dependensi terkait).