X86 çevirisi Windows on Arm'da nasıl çalışır?

click fraud protection

Pek çok Windows uygulaması x86 için yazılmıştır ve yine de Arm CPU'larda çalışabilir. İşte bu nasıl mümkün?

Windows her zaman bunun için yaratılmıştır Intel ve AMD'den x86 CPU'larancak Windows RT on yıl önce akıllı telefonlar için çıktığından beri, işletim sistemi yavaş yavaş kullanıcılar için daha uygun hale geliyor. CPU'ları devreye alın. Bugün hem Windows 10 hem de Windows 11, Arm CPU'ları için tam destek sunuyor, ancak bir sorun var. İşletim sisteminin kendisi bu CPU'larda gayet iyi çalışıyor olsa da çoğu uygulama Arm uyumlu bir sürümü başlatmadı. Her ne kadar Windows Arm çipleri üzerinde çalışabilse de, gerçekten kullanılacak programların az olması sorun yaratabilir.

Ancak Microsoft'un bir hilesi var: Arm tabanlı makinelerde x86 uygulamalarının çalışmasını sağlayan bir emülatör. Çevirmen 2017'de çıktığından beri Windows on Arm'a ivme kazandıran en önemli şey bu. Emülatörün nasıl çalıştığını ve Arm PC'lerinin x86 yongaları için yapılmış yazılımı çalıştırmak istiyorlarsa neden onu kullanmaları gerektiğini burada bulabilirsiniz.

Arm CPU'ları için x86 kodunu gerçek zamanlı olarak taklit etme

Bir tür işlemci için yapılmış kodu taklit ederek başka bir işlemcide çalıştırılabilmesi fikri yeni bir şey değil. Eski video oyunlarının çok farklı donanımlara sahip yeni cihazlarda çalışmasını sağlamak için yaygın olarak kullanılan oyun emülasyonu bu şekilde çalışır. Bir Arm PC'de bir x86 uygulamasını çalıştırdığınızda, Windows, uygulamanın kod bloklarını alır ve onu bir Arm çipinde çalışabilecek bir şey halinde derler. Bunların hepsi gerçek zamanlı olarak yapılır ve Windows'un çevrildiği tüm kodu önbelleğe alması gerekir; bu, tekrar tekrar yeniden çevrilmesi gerekmediği anlamına gelir.

Ne yazık ki, taklit uygulamalarda performans, donanım için tasarlanan kodla karşılaştırıldığında daha kötü olacak. Test verileri çok seyrek olduğu için Windows'ta öykünülmüş kod çalıştırarak ne kadar performans kaybettiğinizi söylemek zor, ancak karşılaştırma için, Apple'ın Rosetta 2 tercümanı (aynı zamanda x86 uygulamalarını Arm'a çevirir) yaklaşık %20 kaybeder. Bu sayıyı azaltmak mümkündür, ancak genellikle öykünme ve çeviri ne olursa olsun performans kaybıyla sonuçlanır.

X86 uygulamaları neden emülasyon olmadan Arm'da çalışamıyor?

Yazılımın neden özellikle x86, Arm ve diğer CPU türleri için yazılması gerektiğini merak ediyor olabilirsiniz. Şuna geliyor mimarlık farkıve bu durumda talimat seti mimarisinden (ISA) bahsediyoruz. Bunlar bir işlemcinin en temel tasarımıdır ve çarpma gibi basit bir işlemin veya AVX gibi karmaşık bir işlemin yerel olarak yapılıp yapılamayacağını belirler. ISA'nın değiştirilmesi, CPU'nun okuduğu temel olanlara ve sıfırlara kadar, yazılımın donanımla etkileşiminin en temel yolunu etkiler.

x86, tarihsel olarak Windows'un üzerinde çalışabileceği tek CPU olan Intel ve AMD CPU'larının ISA'sıdır. Bu arada Arm, çoğunlukla akıllı telefonlar için kullanılıyor ve PC yazılımı ile telefon yazılımı arasındaki örtüşme çok az. Doğal olarak çoğu program ya x86 ya da Arm için yapılmıştır ve Windows on Arm için bu çok büyük bir sorundu çünkü çeviri 2020'de çıkmadı, Windows RT (Windows'un Arm'ı destekleyen ilk sürümü) çıktı 2012.

Windows'un Arm'ı desteklemeye başlamasından bu yana yaklaşık on yıl geçti, peki tüm yerel uygulamalar nerede? Temel sorun, özellikle geliştiriciler bunu iyi yapmak istiyorsa, yazılımı farklı bir ISA için yeniden yazmanın zaman ve uzmanlık gerektirmesidir. Bir uygulamayı bir ISA'dan diğerine taşımak için gerekli özeni göstermeyen geliştiriciler aksaklıklara ve hatalara neden olabilir. Bunun harika bir örneği Arm'da Windows için Photoshop'tur. Yerel olarak Windows on Arm'da çalışır, henüz Lenovo Thinkpad X13s incelememizde, OpenCL ve OpenGL'nin desteklenmediğine dair çeşitli hatalarla ve çok sayıda uyarıyla karşılaştık. Arm'ı Windows'ta kullanan çok daha küçük bir kullanıcı tabanıyla birleştiğinde, geliştiricilerin umursaması daha az teşvik olur.

Dolayısıyla geliştiriciler kaynakları yerel yazılım oluşturmaya ayıramadıklarında veya ayırmadıklarında alternatif emülasyondur. Windows on Arm için x86 uygulamalarını çevirmek mükemmel olmasa da, işe yaraması etkileyici ve bazen performans kaybı, uygulamanın beklendiği gibi çalışacağını bilmeye değer. En azından Windows on Arm, geliştiricilerin bunu artık görmezden gelemeyeceği noktaya gelene kadar, çeviri ve öykünme, donanım-yazılım ekosistemine çok ihtiyaç duyulan desteği sağlıyor.