FEX-Emu geliştiricilerine göre bilgisayar belleğinin çalışma modelini emüle etmek, önbellekler ve birden fazla işlemci devreye girdiğinde sanıldığından çok daha zor. x86’in Total Store Ordering modeli, bellek işlemlerinin görünürlüğü için güçlü güvenceler sunarken ARM’ın daha zayıf modeli performans için yeniden sıralamaya izin veriyor. Emülatörler bunu acquire/release işlemleriyle telafi edebilse de maliyet yükseliyor; LRCPC uzantıları ve Apple Silicon’daki x86 uyumlu TSO modu yükü azaltıyor.
Uyumsuz hizalanmış erişimler ile atomik işlemler sorunları artırıyor. FEX, hizalama hatalarını yakalayıp çevrilmiş koda bariyerler ekleyebiliyor; split-lock işlemleri ise çekirdek ve sinyal işleyicilerine başvurarak normalden yüzlerce veya binlerce kat yavaşlayabiliyor. Qualcomm’un Oryon çekirdekleri ve Valve’ın Linux optimizasyonu bazı sorunları azaltıyor.
GPU’ya yazılan write-combined bellekte ARM eşdeğerleri eksik kalıyor; en kötü durumda bant genişliği 800× düşerek oyunları 1 FPS’in altına indirebiliyor. UMA sistemler daha iyi sonuç veriyor. Emülasyon, talimat çevirmekten çok mimari varsayımları yeniden üretmeye dayanıyor.
Neden önemli
Bu teknik fark, x86 yazılımlarını ARM tabanlı donanımda çalıştıran emülatörlerde uyumluluk ile performansın aynı anda korunmasını zorlaştırıyor. Sorun yalnızca işlemci talimatlarının çevrilmesiyle sınırlı kalmadığı için çok çekirdekli kullanım, atomik işlemler ve GPU belleğine erişim gibi yollar farklı donanımlarda ayrı sonuçlar doğurabiliyor. Bu nedenle sonuçlar, kullanılan işlemci ve bellek mimarisinin yanı sıra işletim sistemi ile emülatörün hangi optimizasyonları uyguladığına da bağlı hale geliyor; Apple Silicon, Oryon, Valve optimizasyonları ve UMA tasarımları bu farkın azaltılabildiğini gösteriyor. Açık kalan soru, bu iyileştirmelerin hangi iş yüklerinde yeterli olacağı ve uyumluluk için gereken ek maliyetin ne ölçüde sürdürülebileceği.