Windows on Arm: voici comment fonctionne l'émulation 64 bits – Resoudre les problemes d’un serveur MineCraft
[bzkshopping keyword= »Minecraft » count= »8″ template= »grid »]
Les applications 64 bits sur Windows on Arm sont un travail en cours: certaines sont natives, beaucoup fonctionnent bien avec la nouvelle émulation 64 bits, mais d'autres devront attendre plus de support dans les versions initiales de Windows.
Lorsque Microsoft a lancé Windows 10 sur Arm pour la première fois, il ne pouvait exécuter que des applications x86 32 bits en émulation. Microsoft nous a dit que leur télémétrie montrait que la plupart des applications Windows que les clients souhaitaient exécuter avaient des versions 32 bits, en particulier les anciennes applications où les développeurs étaient peu susceptibles de les recompiler pour Arm. Mais cela ne couvrait en aucun cas toutes les applications Windows.
De nombreux jeux sont en 64 bits, mais Microsoft nous a dit que les jeux étaient « en dehors du client cible '' pour les appareils initiaux. Il existe des versions 32 bits d'Adobe Photoshop, Illustrator, InDesign et Dreamweaver, mais celles-ci proviennent d'une version plus ancienne (Creative Cloud 2018) et manquent de fonctionnalités plus récentes.
VOIR: Microsoft 365: Une feuille de triche (PDF gratuit) (TechRepublic)
CorelDRAW a toujours une version 32 bits, mais les nouvelles fonctionnalités basées sur l'IA ne fonctionnent que dans la version 64 bits. De nombreux installateurs, même pour les logiciels 32 bits, sont également 64 bits.
L'émulation 64 bits arrive sur Windows on Arm pour vous aider. Il est toujours en version interne, mais les résultats des tests sont encourageants.
Sommaire
Des outils pour passer au 64 bits
Microsoft espérait peut-être que beaucoup plus de développeurs recompileraient les applications en tant que versions Arm natives, car la raison pour laquelle elles étaient 64 bits au départ était souvent pour des raisons de performances, donc les exécuter en émulation ne serait pas idéal.
Cela signifie obtenir le support du langage et du framework dont les développeurs ont besoin, et encore une fois, cela a été un processus graduel.
Chromium, Chromium Embedded Framework et Electron sont disponibles pour Windows on Arm depuis fin 2019, les versions natives de Chromium étant arrivées début 2020.NET 5 a apporté le support ARM64, mais le support pour WPF et WinForms est très récent, arrivant dans le premier aperçu de .NET 6. Le .NET 6 complet ne sortira pas avant novembre 2021, et les discussions sur le temps qu'il faudra pour obtenir la prise en charge de WPF ARM64 .NET 5 sont toujours en cours.
L'acquisition de jClarity par Microsoft signifiait qu'il a pris en charge le travail de portage d'OpenJDK sur Arm pour Windows 10. Il existe des versions natives pour Python et Rust. IIS n'est pas encore disponible et l'absence de version native officielle de Go retarde Git pour Windows – bien qu'il existe déjà une version initiale non officielle de Go-lang pour Windows on Arm pour ARM64, spécifiquement pour activer l'application Wireguard VPN. Le pack de compatibilité OpenCL et OpenGL a été initialement développé pour aider Adobe à intégrer Photoshop natif – qui repose fortement sur l'accélération GPU – à Windows 10 on Arm. Il existe une version préliminaire qui prend en charge d'autres applications OpenCL et OpenGL, mais ce n'est que pour OpenCL 1.2 et versions antérieures et OpenGL 3.3 et versions antérieures.
Mais alors que les développeurs ont rapidement rendu leurs applications natives pour les appareils M1 Arm d'Apple, les progrès ont été plus lents sur Windows, même pour les propres applications de Microsoft. Office et Edge fonctionnent en mode natif, tout comme la version Windows 10 (Bedrock) de Minecraft, mais pas la version Java d'origine (elle nécessite une version beaucoup plus récente d'OpenGL). Visual Studio Code n'est pris en charge que récemment sur Arm, Power Toys est toujours bloqué par un certain nombre de dépendances) et il n'y a actuellement aucun plan pour une version Arm native de Visual Studio. Microsoft s'attend à ce que les développeurs effectuent une compilation croisée à partir d'un système x86 plus puissant plutôt que de faire leur travail de développement sur un PC Arm – bien que les développeurs de Clang aient créé un compilateur natif pour Windows sur Arm, qui exécute les builds deux fois plus vite que dans l'émulation.
Adobe a publié une version Arm de Lightroom pour Windows et Mac M1 en décembre, et il existe une version ARM64 native de Photoshop en version bêta; la dernière version ajoute certains des outils clés tels que le pinceau de correction des taches et le remplissage et le déplacement sensibles au contenu. Mais comme vous ne pouvez pas exécuter deux versions de l'application Creative Cloud Desktop et que la version bêta nécessite la version 5.3 ou ultérieure (qui n'installera que les applications 64 bits), vous ne pouvez pas installer d'anciennes applications Adobe 32 bits à exécuter en émulation parallèlement it – et les concepteurs utilisent généralement plusieurs applications Creative Cloud dans leur flux de travail.
Le programme d'installation autonome de la version x64 la plus récente de Photoshop échoue également, en raison de la configuration système requise, mais nous avons pu installer les versions Windows 64 bits de Creative Cloud 2019 de plusieurs applications Adobe (y compris Photoshop) parallèlement à la version bêta native de Photoshop et elles ont fonctionné. bien avec la nouvelle émulation 64 bits. Souvent, la chose la plus difficile est d'obtenir la version 64 bits: les installateurs intelligents installeront souvent la version 32 bits automatiquement, vous devrez peut-être trouver la version 64 bits et l'installer directement.
L'état de l'émulation 64 bits
La façon dont Windows émule les applications x86 dans le logiciel sur Arm est basée sur la façon dont il émule les applications x86 à l'aide de l'émulation d'instructions matérielles sur les PC x64 – la couche d'abstraction «Windows sur Windows». Le système s'appelle toujours WoW64 sur ARM64 (où il émule en fait les applications x86 et ARM32, en utilisant respectivement XTAJIT.DLL et WOWARMW.DLL, car un certain nombre d'applications Windows de boîte de réception comme le Store sont toujours 32 bits sur Arm). Mais l'émulation X64 n'utilise pas réellement WoW.
Bien que la technologie de base pour la traduction des binaires vers l'architecture Arm soit similaire à WoW, et qu'elle soit basée sur ce que Microsoft avait appris en émulation x86, lorsque vous regardez les écrous et les boulons, il s'agit d'une nouvelle approche de la compatibilité.
Comme Microsoft nous l'a dit à l'époque, l'ajout du support x64 serait plus de travail; cela a pris du temps et c'est toujours en cours.
Les premières versions Insider de l'émulation x64 sont sorties fin 2020. À l'époque, Hari Pulapaka, principal responsable de programme de groupe de l'équipe du noyau Windows, a indiqué que la version finale de l'émulation 64 bits devrait exécuter les applications aussi rapidement que – grâce à l'espace d'adressage plus grand disponible pour les applications 64 bits et à la manière dont le code 64 bits utilise les registres – plus rapide que 32 bits.
"En général, les performances des applications émulées x86 et x64 devraient être similaires, à l'exception de l'espace d'adressage plus grand. Nous sommes encore au début de notre émulation et toutes les optimisations n'ont donc pas été ajoutées pour x64. Cela se produira au cours des prochains mois, "Dit Pulapaka.
De même, l'émulation x86 a continué de s'améliorer; il existe de nouvelles optimisations qui accélèrent certaines opérations dans les applications .NET comme TurboTax et Quicken actuellement dans les versions Insider. Sur les appareils Windows on Arm de troisième génération tels que Surface Pro X et Galaxy Book S, ces instructions spécifiques peuvent être émulées deux fois plus rapidement qu'auparavant.
Les applications x64 que nous avons testées sur un Surface Pro X d'origine fonctionnaient généralement bien, bien que certaines applications se soient plantées ou se soient simplement fermées dès que nous les avons ouvertes (et certaines se sont plantées la première fois mais ont ensuite fonctionné avec bonheur). Pour de meilleures performances, exécutez les applications deux fois: la première fois que le code est converti pour s'exécuter sur Arm; la deuxième fois, il s'exécute à partir du cache (et une optimisation supplémentaire a été effectuée par Windows pendant sa mise en cache, améliorant encore les performances).
Les nouvelles versions d'initiés ajouteront plus de DLL système ARM64, ce qui améliorera la compatibilité et permettra à plus d'applications de s'exécuter avec succès, et nous avons déjà vu des applications fonctionner qui ne fonctionneraient pas en émulation plus tôt.
VOIR: Logiciel en tant que service (SaaS): une feuille de triche (PDF gratuit) (TechRepublic)
Les versions 64 bits de Signal, Slack, Bluestacks, Power BI Desktop, GIMP, Photoshop et l'application Xbox sont toutes installées et fonctionnent bien. Les applications qui nécessitent l'installation et l'exécution du framework Uranium, mais qui sont plutôt lentes. Le carnet de croquis d'Autodesk avait d'excellentes performances, même pour les outils de dessin exigeants, mais était enclin à planter; nous avons eu des problèmes similaires avec Affinity Photo, qui a bien fonctionné sauf quand il s'est fermé de manière inattendue.
D'autres applications 64 bits ont eu plus de problèmes. CorelDRAW et PHOTO-PAINT installés et ouverts, puis fermés immédiatement. Camtasia installé en tant qu'administrateur mais s'est écrasé lorsque nous avons essayé d'enregistrer. Ce sont les types de problèmes susceptibles d'être résolus rapidement au fur et à mesure que de nouvelles versions d'initiés sortent avec les DLL requises par les applications. Il existe également des applications comme le client de synchronisation Dropbox qui nécessitent des pilotes natifs que Dropbox n'a pas fournis et qui ne fonctionneront donc pas du tout dans l'émulation.
Nous avons comparé les performances de l'émulation 32 bits et 64 bits pour Photoshop, GIMP et Power BI Desktop sur diverses tâches (même si nous n'avons pas toujours été en mesure de trouver la même version du logiciel). Pour les tâches d'édition courantes, la version 32 bits de Photoshop exécutée en émulation était souvent très légèrement plus rapide que les versions 64 bits natives et 64 bits émulées, qui avaient des performances très similaires: car les deux sont en version bêta et n'ont pas été entièrement optimisé ce n'est pas inattendu, mais la différence était généralement entre un effet prenant deux secondes et trois secondes à finaliser et de nombreuses tâches d'édition courantes exécutées instantanément dans les deux versions. La version native avait un net avantage sur une séquence complexe de tâches comme une photomerge panoramique: elle était deux fois plus rapide que la version 32 bits, et quatre fois plus rapide que la version 64 bits en émulation.
De même, la retouche photo simple était un peu plus rapide dans la version 32 bits de GIMP que dans la version 64 bits jusqu'à ce que nous exécutions des actions de script plus complexes, lorsque l'émulation 64 bits était deux à quatre fois plus rapide.
Power BI Desktop était également légèrement plus rapide pour charger les rapports et importer des données à partir d'Excel lors de l'exécution en émulation 32 bits, bien que les performances de l'émulation 64 bits se soient considérablement améliorées avec la dernière version d'initiés de Windows. Microsoft travaille clairement dur pour étendre et optimiser l'émulation 64 bits sur Arm.
Bras côté serveur
Microsoft a annoncé son intention d'amener Windows Server à armer bien avant sa sortie avec les ordinateurs portables Windows pour Arm. Il a été utilisé pour exécuter une infrastructure Azure interne, telle que le stockage, l'indexation et la recherche, là où le matériel à faible consommation d'énergie et à faible coût et l'efficacité de calcul sont particulièrement importants. Les choses ont peut-être été retardées par les fournisseurs de cartes mères de serveurs retardant ou annulant des projets, mais Microsoft a testé Windows Server sur le silicium Arm d'Ampere Altra, Fujitsu et Marvell ThunderX2 pour Azure, et Marvell a déclaré en 2019 que son portefeuille Arm était utilisé pour « interne, serveurs de niveau production ».
Lors du Arm DevSummit 2020, un collègue technique Arun Kishan de l'équipe du noyau Windows a déclaré que Microsoft explorait également l'utilisation de Windows Server sur ARM64 pour les services d'hébergement de VM et travaillait avec la certification Arm on SystemReady pour les serveurs, ce qui inclurait l'exécution de Windows Server. un pas de plus vers l'activation du déploiement dans Microsoft Azure ".
Cela ne veut pas dire que Windows Server on Arm à part entière est nécessairement juste au coin de la rue, mais l'émulation 64 bits serait essentielle pour les clients de charges de travail du serveur Arm qui voudraient s'exécuter, et pourrait être une autre raison pour Microsoft de l'ajouter au Client Windows.
Le serveur Arm dans Azure remplira également une pièce manquante critique pour les développeurs ciblant Windows 10 sur Arm: la possibilité de créer un système CI / CD (Continuous Integration / Continuous Deployment) avec un outil comme Azure Pipelines, afin qu'ils puissent facilement tester et rouler des corrections de bogues et un nouveau code.
Les développeurs doivent pouvoir travailler directement sur les appareils Arm pour les tests, explique Ed Vielmetti, qui dirige le projet d'écosystème Works On ARM chez Equinix. Works On Arm fournit des projets open source avec l'infrastructure Arm – y compris Go, Node.js et plusieurs bibliothèques Python – pour aider les développeurs à faire fonctionner leur code sur Arm, afin qu'il puisse s'exécuter dans des centres de données.
«Dès que vous pouvez faire des builds natifs et des tests natifs, vous voulez commencer à le faire. Vous obtenez beaucoup plus de fidélité dans l'environnement de test en testant sur la réalité. Et si vous pouvez convaincre un développeur d'utiliser l'architecture cible comme leur chauffeur quotidien, alors vous pouvez réparer toutes sortes de choses, car ils vont les réparer dans l'entêtement et la frustration », a déclaré Vielmetti.
Plusieurs projets open-source sont intéressés par le portage de leur code sur Windows, nous a dit Vielmetti, mais ils veulent fonctionner sur Windows Server ainsi que sur Windows de bureau; ce n'est pas encore disponible pour Arm. Ils ont également besoin d'armer des machines virtuelles dans le cloud pour pouvoir effectuer leurs tests à grande échelle. Cela bloque NodeJS et des outils comme GitHub Desktop qui en dépendent.
"Si vous développez un système d'exploitation ou un langage, ou une sorte de bibliothèque complexe en mouvement, il est vraiment important d'avoir suffisamment d'infrastructure en place pour que vous puissiez non seulement créer votre logiciel une fois pour la distribution, mais aussi le construire en continu tel quel. évolue et change avec le temps », a déclaré Vielmetti.
"Le problème avec le code à grande échelle n'est pas qu'un seul développeur écrivant du code qu'il compile sur sa propre machine et publie; c'est une horde de développeurs qui contribuent tous sur une variété de plates-formes, avec des tests qui sont largement automatisés."
Et ces tests automatisés nécessitent une infrastructure cloud avec, dans ce cas, des machines virtuelles Arm.
«La disponibilité de l'infrastructure cloud est transformatrice car vous pouvez commencer à prendre en charge des projets dont le taux de changement est plus rapide que ce que le matériel de bureau peut gérer», a expliqué Vielmetti. «Sans ce genre d'accès complet à cette offre de calcul, il est vraiment difficile d'imaginer de grands projets ayant beaucoup de chance de maintenir une sorte de cadence de publication. Si vous essayez de développer un système complexe, à quelle vitesse je peux transformer une nouvelle version et le test de fumée, cela fait vraiment une grande différence. En l'absence de cet écosystème, les développeurs Windows ont plus de mal à mettre en place ce cycle vertueux de «construire, tester, essayer». »
Espérons que lorsque Azure Pipelines obtiendra finalement des machines virtuelles Arm, cela débloquera de nombreux développeurs pour apporter du code à Windows on Arm. En attendant, l'émulation s'améliore constamment pour prendre en charge une gamme plus large, voire complète, de logiciels.
Regarde aussi
Commentaires
Laisser un commentaire