Bagaimana cara kerja terjemahan x86 di Windows di Arm?

click fraud protection

Banyak aplikasi Windows yang ditulis untuk x86, namun dapat bekerja pada CPU Arm. Begini caranya.

Windows selalu dibuat untuk itu CPU x86 dari Intel dan AMD, namun sejak Windows RT dirilis satu dekade lalu untuk ponsel pintar, sistem operasi ini perlahan menjadi lebih ramah terhadapnya Lengan CPU. Saat ini, baik Windows 10 dan Windows 11 menawarkan dukungan lengkap untuk CPU Arm, tetapi ada kendalanya. Meskipun sistem operasinya sendiri berjalan dengan baik pada CPU ini, sebagian besar aplikasi belum meluncurkan versi yang kompatibel dengan Arm. Meskipun Windows dapat berjalan pada chip Arm, memiliki sedikit program untuk digunakan akan menjadi masalah.

Namun, Microsoft punya triknya: sebuah emulator untuk menjalankan aplikasi x86 di mesin berbasis Arm. Ini adalah hal utama yang memberikan momentum pada Windows on Arm sejak penerjemahnya dirilis pada tahun 2017. Berikut cara kerja emulator, dan mengapa PC Arm perlu menggunakannya jika ingin menjalankan perangkat lunak yang dibuat untuk chip x86.

Meniru kode x86 untuk CPU Arm secara real time

Ide untuk meniru kode yang dibuat untuk satu jenis prosesor sehingga dapat dijalankan pada prosesor lain bukanlah hal baru. Beginilah cara kerja emulasi game, yang populer digunakan untuk menjalankan video game lama di perangkat baru dengan perangkat keras yang sangat berbeda. Saat Anda menjalankan aplikasi x86 di PC Arm, Windows mengambil blok kode aplikasi dan mengompilasinya menjadi sesuatu yang dapat dijalankan pada chip Arm. Ini semua dilakukan secara real-time, dan Windows harus menyimpan semua kode yang diterjemahkan ke dalam cache, artinya tidak perlu menerjemahkan ulang lagi dan lagi.

Sayangnya, performa pada aplikasi yang ditiru akan menjadi lebih buruk dibandingkan dengan kode yang dirancang untuk perangkat keras. Sulit untuk mengatakan berapa banyak kinerja yang hilang dengan menjalankan kode emulasi pada Windows karena data pengujian sangat sedikit, namun sebagai perbandingan, Penerjemah Rosetta 2 dari Apple (yang juga menerjemahkan aplikasi x86 ke Arm) kehilangan sekitar 20%. Jumlah tersebut dapat dikurangi, tetapi biasanya, emulasi dan terjemahan akan mengakibatkan penalti kinerja, apa pun yang terjadi.

Mengapa aplikasi x86 tidak dapat berjalan di Arm tanpa emulasi

Anda mungkin bertanya-tanya mengapa perangkat lunak perlu ditulis khusus untuk x86, Arm, dan jenis CPU lainnya. Itu tergantung pada perbedaan dalam arsitektur, dan dalam hal ini, kita berbicara tentang arsitektur set instruksi (ISA). Ini adalah desain prosesor yang paling mendasar dan menentukan apakah sesuatu yang sederhana seperti perkalian atau sesuatu yang rumit seperti AVX dapat dilakukan secara asli. Mengubah ISA mempengaruhi cara paling mendasar antara perangkat lunak dan perangkat keras, hingga ke dasar dan angka nol yang dibaca CPU.

x86 adalah ISA CPU Intel dan AMD, yang secara historis merupakan satu-satunya CPU yang dapat dijalankan di Windows. Sementara itu, Arm sebagian besar telah digunakan untuk telepon pintar, dan tumpang tindih antara perangkat lunak PC dan perangkat lunak telepon sangat sedikit. Tentu saja, sebagian besar program dibuat untuk x86 atau Arm, dan untuk Windows di Arm, ini merupakan masalah besar karena terjemahan tidak keluar pada tahun 2020, sementara Windows RT (versi pertama Windows yang mendukung Arm) keluar pada 2012.

Sudah sekitar satu dekade sejak Windows mulai mendukung Arm, jadi di mana semua aplikasi aslinya? Masalah utamanya adalah dibutuhkan waktu dan keahlian untuk menulis ulang perangkat lunak untuk ISA yang berbeda, terutama jika pengembang ingin melakukannya dengan baik. Pengembang yang tidak berhati-hati dalam mem-porting aplikasi dari satu ISA ke ISA lainnya dapat mengakibatkan gangguan dan bug. Contoh yang bagus dari hal ini adalah Photoshop untuk Windows di Arm. Ini berjalan secara asli di Windows on Arm, namun dalam ulasan kami tentang Lenovo Thinkpad X13s, kami menemui beberapa kesalahan dan banyak peringatan bahwa OpenCL dan OpenGL tidak didukung. Ditambah dengan basis pengguna yang jauh lebih kecil yang menggunakan Arm di Windows, insentif bagi pengembang untuk peduli akan berkurang.

Jadi, ketika pengembang tidak dapat atau tidak mau mencurahkan sumber dayanya untuk membuat perangkat lunak asli, alternatifnya adalah emulasi. Meskipun menerjemahkan aplikasi x86 untuk Windows di Arm tidaklah sempurna, sangat mengesankan bahwa ia berfungsi sama sekali, dan terkadang kehilangan kinerja layak untuk diketahui bahwa aplikasi akan berjalan seperti yang diharapkan. Setidaknya hingga Windows on Arm mencapai titik di mana pengembang tidak dapat lagi mengabaikannya, terjemahan dan emulasi memberikan dorongan yang sangat dibutuhkan bagi ekosistem perangkat keras-perangkat lunaknya.