Come funziona l'emulazione su Arm
L'emulazione rende disponibile l'ecosistema avanzato di app di Windows in Arm, consentendo agli utenti di eseguire le app di cui si preoccupano senza apportare modifiche all'app. L'emulazione è trasparente per l'utente ed è parte di Windows; non richiede l'installazione di componenti aggiuntivi.
Windows 11 su Arm supporta l'emulazione delle app x86 e x64 e delle prestazioni è stata migliorata con l'introduzione del nuovo emulatore Prism in Windows 11 24H2. Windows 10 in Arm supporta anche l'emulazione, ma solo per le app x86.
Prism
Prism è il nuovo emulatore incluso in Windows 11 24H2. Rispetto alla tecnologia di emulazione precedente inclusa in Windows, include ottimizzazioni significative che migliorano le prestazioni e ridurre l'utilizzo della CPU delle app nell'emulazione.
Prism è ottimizzato e ottimizzato in modo specifico per i processori Qualcomm Eseguion. Alcune funzionalità di prestazioni all'interno di Prism richiedono funzionalità hardware disponibili solo nella serie X Di Windows, ma Prism è disponibile per tutti i dispositivi Windows 11 supportati su Arm con Windows 11 24H2.
Funzionamento dell'emulazione
L'emulazione funziona come simulatore software, blocchi di compilazione JIT di istruzioni x86 nelle istruzioni arm64 con ottimizzazioni per migliorare le prestazioni del codice Arm64 generato.
Un servizio memorizza nella cache questi blocchi di codice tradotti per ridurre l'overhead della traduzione delle istruzioni e consentire l'ottimizzazione quando il codice viene eseguito di nuovo. Le cache vengono prodotte per ogni modulo in modo che le altre app possano utilizzarle al primo avvio.
Per le app x86, il livello WOW64 di Windows consente l'esecuzione del codice x86 nella versione arm64 di Windows, proprio come consente l'esecuzione del codice x86 nella versione x64 di Windows. Ciò significa che le app x86 in Arm sono protette con il file system e il reindirizzamento del Registro di sistema.
Per le app x64, non esiste alcun livello WOW64 e nessun registro o cartella separati dei file binari di sistema di Windows. I file binari di sistema vengono invece compilati come file ARM64X PE che possono essere caricati nei processi x64 e Arm64 dallo stesso percorso senza la necessità di reindirizzamento del file system. Ciò significa che le applicazioni x64 possono accedere all'intero sistema operativo, sia nel file system che nel Registro di sistema, senza la necessità di codice speciale.
Si noti che l'emulazione supporta solo il codice in modalità utente e non supporta i driver; tutti i componenti in modalità kernel devono essere compilati come Arm64.
Rilevamento dell'emulazione
Un'app x86 o x64 non saprà che è in esecuzione in un PC Windows su Arm, a meno che non chiami API specifiche progettate per comunicare la conoscenza dell'host Arm64, ad esempio IsWoW64Process2. Le app sotto emulazione che eseguono query per i dettagli del processore, inclusi i metadati o le funzionalità, riceveranno i dettagli corrispondenti al processore virtuale emulato. Per motivi di compatibilità, l'API GetNativeSystemInfo restituirà anche i dettagli del processore emulati durante l'esecuzione da un'app in emulazione.
Per le app che cercano di rilevare le funzionalità di emulazione del sistema operativo, usare l'API GetMachineTypeAttributes.
Aggiornamento per supportare una versione arm dell'app
Anche se l'app viene eseguita con emulazione nei dispositivi Arm è un ottimo punto di partenza, l'app trarrà vantaggio dai miglioramenti delle prestazioni native e dalle qualità uniche dei dispositivi basati su Arm se si ricompila per aggiungere il supporto arm all'app.
Vedi Aggiungere il supporto arm alla tua app di Windows per indicazioni su come creare una versione arm delle tue app e su quali tipi di vantaggi, sfide e strumenti possono essere coinvolti, oltre al supporto disponibile per la creazione di una versione arm della tua app (e di eventuali dipendenze correlate).