Secondo gli sviluppatori di FEX-Emu, emulare il modello di funzionamento della memoria dei computer è molto più difficile di quanto si pensi quando entrano in gioco cache e più processori. Il modello Total Store Ordering di x86 offre solide garanzie sulla visibilità delle operazioni di memoria, mentre il modello più debole di ARM consente il riordinamento per migliorare le prestazioni. Sebbene gli emulatori possano compensare con operazioni acquire/release, il costo aumenta; le estensioni LRCPC e la modalità TSO compatibile con x86 presente su Apple Silicon riducono il carico.
Gli accessi disallineati incompatibili e le operazioni atomiche aumentano i problemi. FEX può rilevare gli errori di allineamento e aggiungere barriere al codice tradotto; le operazioni split-lock, invece, possono diventare centinaia o migliaia di volte più lente del normale ricorrendo al kernel e ai gestori dei segnali. I core Oryon di Qualcomm e l’ottimizzazione di Linux da parte di Valve riducono alcuni di questi problemi.
Nella memoria write-combined scritta dalla GPU mancano equivalenti ARM adeguati; nel caso peggiore, la larghezza di banda può diminuire di 800×, portando i giochi al di sotto di 1 FPS. I sistemi UMA offrono risultati migliori. L’emulazione consiste più nel riprodurre le ipotesi architetturali che nel tradurre le istruzioni.
Perché è importante
Questa differenza tecnica rende difficile preservare contemporaneamente compatibilità e prestazioni negli emulatori che eseguono software x86 su hardware basato su ARM. Poiché il problema non si limita alla traduzione delle istruzioni del processore, aspetti come l’uso multi-core, le operazioni atomiche e l’accesso alla memoria della GPU possono produrre risultati diversi su hardware differenti. Di conseguenza, i risultati dipendono non solo dal processore e dall’architettura della memoria utilizzati, ma anche dalle ottimizzazioni applicate dal sistema operativo e dall’emulatore; Apple Silicon, Oryon, le ottimizzazioni di Valve e i design UMA mostrano che questa differenza può essere ridotta. La questione ancora aperta è in quali carichi di lavoro questi miglioramenti saranno sufficienti e fino a che punto sarà possibile sostenere il costo aggiuntivo necessario per la compatibilità.