Partager via


Fonctionnement de l’émulation sur Arm

L’émulation rend l’écosystème riche d’applications Windows disponibles sur Arm, ce qui permet aux utilisateurs d’exécuter les applications qu’ils s’intéressent sans aucune modification à l’application. L’émulation est transparente pour l’utilisateur et fait partie de Windows ; il ne nécessite pas d’installation de composants supplémentaires.

Windows 11 sur Arm prend en charge l’émulation des applications x86 et x64 et des performances a été améliorée avec l’introduction du nouvel émulateur Prism dans Windows 11 24H2. Windows 10 sur Arm prend également en charge l’émulation, mais uniquement pour les applications x86.

Prism

Prism est le nouvel émulateur inclus dans Windows 11 24H2. Par rapport à la technologie d’émulation précédente incluse dans Windows, elle inclut des optimisations significatives qui améliorent les performances et réduisent l’utilisation du processeur des applications sous émulation.

Prism est optimisé et paramétré spécifiquement pour les processeurs Snap millisecondes. Certaines fonctionnalités de performances dans Prism nécessitent des fonctionnalités matérielles uniquement disponibles dans la série Snapgator X, mais Prism est disponible pour tous les appareils Windows 11 pris en charge sur Arm avec Windows 11 24H2.

Fonctionnement de l’émulation

L’émulation fonctionne en tant que simulateur logiciel, blocs de compilation juste-à-temps d’instructions x86 dans des instructions Arm64 avec des optimisations pour améliorer les performances du code Arm64 émis.

Un service met en cache ces blocs de code traduits pour réduire le traitement de la traduction des instructions et permettre l’optimisation lorsque le code s’exécute à nouveau. Les caches sont générés pour chaque module, afin que d’autres applications puissent les utiliser lors du premier lancement.

Pour les applications x86, la couche WOW64 de Windows permet au code x86 de s’exécuter sur la version Arm64 de Windows, tout comme il permet au code x86 de s’exécuter sur la version x64 de Windows. Cela signifie que les applications x86 sur Arm sont protégées par le système de fichiers et la redirection de Registre.

Pour les applications x64, il n’existe aucune couche WOW64 et aucun registre ou dossier distinct des fichiers binaires système Windows. Au lieu de cela, les fichiers binaires système sont compilés en tant que fichiers PE Arm64X qui peuvent être chargés dans les processus x64 et Arm64 à partir du même emplacement sans avoir besoin de redirection de système de fichiers. Cela signifie que les applications x64 peuvent accéder à l’ensemble du système d’exploitation, à la fois au système de fichiers et au Registre, sans avoir besoin de code spécial.

Notez que l’émulation prend uniquement en charge le code en mode utilisateur et ne prend pas en charge les pilotes ; tous les composants en mode noyau doivent être compilés en tant qu’Arm64.

Détection de l’émulation

Une application x86 ou x64 ne sait pas qu’elle s’exécute sur un PC Arm, sauf si elle appelle des API spécifiques conçues pour transmettre des connaissances de l’hôte Arm64, comme IsWoW64Process2. Les applications sous émulation qui interrogent les détails du processeur, y compris les métadonnées ou fonctionnalités, reçoivent des détails correspondant au processeur virtuel émulé. Pour des raisons de compatibilité, l’API GetNativeSystemInfo retourne également les détails du processeur émulé lors de l’exécution à partir d’une application sous émulation.

Pour les applications qui cherchent à détecter les fonctionnalités d’émulation du système d’exploitation, utilisez l’API GetMachineTypeAttributes.

Mise à jour pour prendre en charge une version Arm de votre application

Bien que votre application s’exécute sous l’émulation sur les appareils Arm est un excellent point de départ, votre application bénéficie des gains de performances natifs et des qualités uniques des appareils arm si vous régénérez pour ajouter la prise en charge Arm à votre application.

Pour obtenir des conseils sur la création d’une version Arm de vos applications, ainsi que sur les avantages, les défis et les outils associés, consultez la prise en charge d’Arm pour obtenir des conseils sur la création d’une version Arm de vos applications et sur les avantages, les défis et les outils associés.