Molte applicazioni Windows sono state scritte per x86 e tuttavia possono funzionare su CPU Arm. Ecco come è possibile.
Windows è sempre stato fatto per CPU x86 di Intel e AMD, ma da quando Windows RT è uscito dieci anni fa per gli smartphone, il sistema operativo è diventato lentamente più amichevole Armare le CPU. Oggi, sia Windows 10 che Windows 11 offrono il supporto completo per le CPU Arm, ma c'è un problema. Sebbene il sistema operativo stesso funzioni perfettamente su queste CPU, la maggior parte delle applicazioni non ha lanciato una versione compatibile con Arm. Sebbene Windows possa funzionare su chip Arm, avere pochi programmi da utilizzare effettivamente sarebbe un problema.
Tuttavia, Microsoft ha un asso nella manica: un emulatore per far funzionare le app x86 su macchine basate su Arm. È l'elemento fondamentale che ha dato slancio a Windows on Arm da quando il traduttore è uscito nel 2017. Ecco come funziona l'emulatore e perché i PC Arm devono utilizzarlo se desiderano eseguire software realizzato per chip x86.
Emula il codice x86 per le CPU Arm in tempo reale
L'idea di emulare il codice realizzato per un tipo di processore in modo che possa essere eseguito su un altro non è una novità. Ecco come funziona l'emulazione del gioco, che viene comunemente utilizzata per far funzionare i vecchi videogiochi su nuovi dispositivi con hardware molto diverso. Quando esegui un'app x86 su un PC Arm, Windows prende blocchi del codice dell'app e lo compila in qualcosa che può essere eseguito su un chip Arm. Tutto questo avviene in tempo reale e Windows deve memorizzare nella cache tutto il codice tradotto, il che significa che non deve ritradurlo più e più volte.
Sfortunatamente, le prestazioni saranno peggiori sulle app emulate rispetto al codice progettato per l'hardware. È difficile dire quante prestazioni si perdono eseguendo codice emulato su Windows poiché i dati di test sono molto scarsi, ma per confronto, Traduttore Rosetta 2 di Apple (che traduce anche le app x86 in Arm) perde circa il 20%. È possibile ridurre quel numero, ma di solito l'emulazione e la traduzione comportano una penalizzazione delle prestazioni, qualunque cosa accada.
Perché le applicazioni x86 non possono essere eseguite su Arm senza emulazione
Forse ti starai chiedendo perché il software debba essere scritto appositamente per x86, Arm e altri tipi di CPU. Si tratta di differenza nell'architetturae in questo caso stiamo parlando dell'architettura del set di istruzioni (ISA). Costituiscono la struttura fondamentale di un processore e determinano se qualcosa di semplice come la moltiplicazione o qualcosa di complesso come AVX può essere eseguito in modo nativo. La modifica dell'ISA influisce sul modo fondamentale in cui il software interagisce con l'hardware, fino agli zero e agli zero di base letti dalla CPU.
x86 è l'ISA delle CPU Intel e AMD, che storicamente sono state le uniche CPU su cui Windows può funzionare. Arm, nel frattempo, è stato utilizzato principalmente per gli smartphone e la sovrapposizione tra software per PC e software per telefono è molto ridotta. Naturalmente, la maggior parte dei programmi sono realizzati per x86 o Arm e per Windows on Arm questo era un grosso problema perché la traduzione non è stata pubblicata nel 2020, mentre Windows RT (la prima versione di Windows a supportare Arm) è uscito nel 2012.
È passato circa un decennio da quando Windows ha iniziato a supportare Arm, quindi dove sono tutte le app native? Il problema principale è che ci vogliono tempo ed esperienza per riscrivere il software per un ISA diverso, soprattutto se gli sviluppatori vogliono farlo bene. Gli sviluppatori che non prestano la dovuta attenzione nel trasferire un'app da un ISA a un altro possono causare problemi e bug. Un ottimo esempio di ciò è Photoshop per Windows on Arm. Funziona nativamente su Windows on Arm, nella nostra recensione del Lenovo Thinkpad X13s, abbiamo riscontrato diversi errori e numerosi avvisi relativi al fatto che OpenCL e OpenGL non erano supportati. Insieme a una base di utenti molto più piccola che utilizza Arm su Windows, c'è meno incentivo per gli sviluppatori a preoccuparsi.
Quindi, quando gli sviluppatori non possono o non vogliono dedicare le risorse alla creazione di software nativo, l'alternativa è l'emulazione. Sebbene la traduzione di app x86 per Windows su Arm non sia perfetta, è impressionante che funzioni e, a volte, vale la pena sapere che l'app funzionerà come previsto. Almeno fino a quando Windows on Arm non raggiungerà il punto in cui gli sviluppatori non potranno più ignorarlo, la traduzione e l'emulazione gli daranno la spinta tanto necessaria al suo ecosistema hardware-software.