ARM : Windows émule (enfin) les applications x86 64 bits

Anthony Nelzin-Santos |

Microsoft présente la première build publique de Windows 10 pour ARM capable d’émuler les applications 64 bits. Depuis son lancement en 2017, Windows 10 pour ARM était capable d’émuler l’immense majorité des applications x86 historiques, déclinées dans une version 32 bits. Mais la plupart des applications récentes sont disponibles dans une version 64 bits.

Microsoft Surface Pro X, un PC convertible avec un processeur ARM. Image Microsoft.

Windows 10 pour ARM intègre une couche d’émulation des instructions x86, dont les objectifs sont similaires à Rosetta sur macOS. Les instructions x86 sont « traduites » en instructions ARM, un système de cache conservant des traductions courantes en mémoire pour accélérer les performances. Dans son incarnation originale, cette couche d’émulation ne prenait en charge ni les vieilles applications 16 bits, ni les applications 64 bits récentes.

Bien sûr, Microsoft promeut la compilation native des applications pour l’architecture ARM. Elle montre elle-même l’exemple avec de nouvelles versions optimisées de Visual Studio Code et de Microsoft Teams. Reste que l’immense majorité de la logithèque Windows est composée d’applications x86. La plupart sont compilées pour 32 et 64 bits, comme Google Chrome, mais les plus récentes et plus exigeantes sont disponibles uniquement en 64 bits, comme Autodesk Sketchbook.

Avec cette annonce, Microsoft résout le problème de la transparence de la couche d’émulation. Dans les mois qui viennent, les utilisateurs de machines ARM n’auront plus à se soucier de la compatibilité de leurs applications avec telle ou telle architecture. Va-t-elle aussi résoudre le problème des performances, point noir de l’émulation x86 sur Windows ?

Une chose est sûre : Microsoft boucle un long chantier, indispensable à la généralisation des machines ARM, même si les applications natives se multiplient. Espérons qu’elle considèrera bientôt Windows 10 pour ARM comme un produit fini, digne d’une « édition » en bonne et due forme. Les builds de développement peuvent être virtualisées sur les Mac M1, mais une reconnaissance officielle serait bienvenue.


avatar byte_order | 

@Furious Angel
> Ce n’est que le début des emmerdes pour eux, la transition sera beaucoup plus dure
> que chez Apple vu qu’ils ne maîtrisent pas le hardware.

Nul besoin de maitriser le matériel pour mettre en place une solution de transcompilation.
Roseta 1 c'était du PowerPC vers Intel, 2 CPUs, 2 jeux d'insctruction non conçus par Apple (et d'ailleurs le jeu d'instruction du M1 n'est pas conçu non plus par Apple), et cela n'a pas empêché d'avoir un bon support pour assurer une transition pour autant.

> Les fabricants hésiteront à faire du matériel faute d’apps

Si 99% des apps x86 32bits comme 64bits sont supportés via transcompilation avec un niveau de performance suffisante, ce point n'existe plus.

avatar Furious Angel | 

@byte_order

Encore faut-il que le boulot soit bien fait. Jusqu’à présent l’émulation est une calamité et ça n’a pas l’air bien plus brillant avec cette étape. Il ne « suffit » pas d’une émulation, il faut qu’elle soit bonne.

avatar Valiran | 

L'émulation Rosetta 2 est très bonne, mais certaines app ne fonctionnent pas.
En tout cas de ce que j'ai lu à droite à gauche, une app émulée via Rosetta 2 et qui fonctionne fonctionne au moins aussi bien qu'en natif.

avatar Rajindael | 

@Furious Angel

Dans tout ce bazare, il ne faudrait pas oublier le mic-mac de framework qui fait le lien entre materiel/os/utilisateur. Et de ce coté, tant chez Apple que chez Microsoft, un gros travail a été fait.

Rosetta2, M1, c’est aussi étroitement lié au gros travail de fond effectué depuis des années sur le rapprochement des API iOS/macOS. Il n’y a pas que de la magie matériel.

Du coté Microsoft, y’a qu’a voir le taff sur .Net Framework (Standard et Core) et plus encore avec la sortie prochaine du .Net Framework 5 qui fini d’achever la transition. Ca suit peu ou prou un chemin similaire, et ils vont y arriver, seulement il y a une certaine inertie du fait de l’omniprésence de Windows.

Et ensuite de manière plus générique, et compte tenu du travail d’opti de Google sur Chrome pour puce M1, on devrait assister à une mise à dispo du framework nodeJS/Electron optimisé pour ARM, et là pouf magie on va retrouver un paquet d’appli commune. Un certain nombre d’appli sont partiellement (voir totalement pour certaines) des wrapper de techno web (amazon, netflix, visual studio code, teams, etc...).

Je ne suis pas inquiet pour les aspect grand public, les briques sont là, et l’ouverture de MS à l’open source n’est pas pour faire jolie non plus.
Je ne doute pas non plus sur la capacité d’Oracle à pondre une JVM opti pour ARM.

Sur le secteur des infrastructures par contre, y’a encore du chemin, mais les solutions cloud public/privée/hybride/serverless vont aider (encore une couche d’abstraction vers le matériel).

Bref, ca s’agite en coulisse, là l’émulation du 64bits, AMD qui se met à ARM, Adobe qui à initié des refontes de ses apps, etc..., ca avance, doucement mais surement.
Avec de la chance Apple va peut être aider à accélérer cette transition :)

avatar byte_order | 

@Furious Angel
> Encore faut-il que le boulot soit bien fait. Jusqu’à présent l’émulation

Transcompilation. Y'a pas d'émulation, ni dans Rosetta ni dans son équivalent dans Windows ARM.

> est une calamité et ça n’a pas l’air bien plus brillant avec cette étape.

Sur une surface X.
Sur un mac ARM, Windows ARM fait tourner des apps 32bits de manière très correcte.
Indice : le point commun n'est pas le code du transcompiler de Microsoft, mais les trop faibles performance de la puce SQ1.
Pb purement matériel.

> Il ne « suffit » pas d’une émulation, il faut qu’elle soit bonne.

Vous croyez vraiment que chez Microsoft ils n'ont personne de capable de pondre un transcompileur x86[_64] -> ARM64 ? Que personne ne connait LLVM chez eux ?

Les perfs même natives de la puce SQ1 sont décevantes. C'est la source du pb.
Qui est matériel.
Si ou plutôt quand NVidia ou AMD vont sortir des puces ARM64 performantes, ce pb n'en sera plus un.

avatar romainB84 | 

@Furious Angel

Il y a la maîtrise du matériel, mais il y a surtout l’ampleur du parc ^^ (on est loin du pauvre petit parc sous macOS^^)
D’ici à ce que le parc de machine Intel sous Windows décroisse... c’est pas pour demain que les dev vont faire du arm pour Windows ^^.

avatar YetOneOtherGit | 

@romainB84

"c’est pas pour demain que les dev vont faire du arm pour Windows "

Porter une application sur une nouvelle architecture est une opération quasiment triviale et déjà des acteurs majeurs de l’industrie annoncent leur solution en natif Windows ARM.

C’est aujourd’hui un faux pb.

Comme pour MacOS d’ailleurs

avatar iSc0tty | 

Peut-être une solution concrète pour les logiciels Intel Windows sur Mac M1?

Windows ARM en VM, qui émule les logiciels x64?

avatar oomu | 

@iSc0tty

c'est LA solution.

en attendant que l'industrie commence à fournir des applications windows nativement ARM. à ce moment là, les utilisateurs Mac pourront commencer à remigrer à uniquement de la virtualisation des apps windows.

avatar YetOneOtherGit | 

Amusant de constater que la détestation de MS, en grande partie créée par le marketing d’Apple dans le passé pour fabriquer de l’adhésion, continue à faire sous-estimer incroyablement la force de l’entreprise. 😳

avatar Rajindael | 

@YetOneOtherGit

Ouep Microsoft est un colosse, loin d’être délogé de son trône. Ils ont les ressources pour sortir qq jolies trucs, mais bien souvent trop tôt (tablet PC, surface RT, etc...). C’est pas du manque de vision, c’est juste qu’ils ont du mal à rendre le truc attrayant, ou alors du mal à l’expliquer, enfin ca reste maladroit pour les non initiés.

avatar YetOneOtherGit | 

@Rajindael

"Ouep Microsoft est un colosse, loin d’être délogé de son trône"

Yep est même les années Ballmer sont très loin de la caricature facile qu’en font certain ici.

avatar rolmeyer | 

@YetOneOtherGit

Ben y qu’à regarder le chiffre d’affaire avant Ballmer et après. idem pour la capitalisation boursière.
Pareil pour le très décrié Cook ici. Mine de rien, il mène bien la barque devenue paquebot...

avatar Macriart | 

donc si windows arm optimisé sera disponible sous peut (automne 2021?)
est-ce que on pourra installer windows en Boot Camp? sur les nouveau iMac arm à venir
si oui ça serait super. mon iMac présentement tourne sur les 2 platforms, en windows pour les jeux AAA et OSX pour le travail.

avatar fabricepsb71 | 

@Macriart
pour les jeux AAA, avec un peu de chance, ce sont Far Cry 10 et Call Of Duty 30 qui tourneront nativement sous Windows ARM :-)

avatar YetOneOtherGit | 

@fabricepsb71

"pour les jeux AAA"

Strictement rien ne s’oppose théoriquement que des jeux exigeants tournent dans le futur sur des architectures ARM.

avatar fabricepsb71 | 

toute la question est de savoir si les jeux intel seront portés sur arm ou seulement les nouveaux projets
je crois savoir que les plateformes les plus rentables sont les consoles.
Sur PC (Windows), il va falloir en vendre des PC ARM pour inciter à faire les portages.

avatar Frodon | 

Sauf si l'effort de portage est faible. Je doute qu'il y ait un effort énorme pour porter un jeu Windows 10 x86/x64 en ARM64.

avatar YetOneOtherGit | 

@fabricepsb71

"toute la question est de savoir si les jeux intel seront portés sur arm ou seulement les nouveaux projets"

La question est déjà d’avoir des machines ARM Window performantes ce qui est loin d’être le cas aujourd’hui.

Pour le moment les gamers ne sont absolument pas la cible 😉

avatar reborn | 

Bon, manque plus que des jeux AAA en natif ARM maintenant 😎

avatar ech1965 | 

Je n'ai pas vu si ça avait été évoqué mais je me permets d'ajouter que toutes les applis .NET ne nécessitent PAS de "transcompilation" additionnelle vu que de tous temps, le code .NET est compilé sous forme de code intermédiaire qui est "transpilé" soit à la demande ( JIT just in time ) soit lors de l'installation.

avatar YetOneOtherGit | 

@ech1965

"Je n'ai pas vu si ça avait été évoqué mais je me permets d'ajouter que toutes les applis .NET ne nécessitent PAS de "transcompilation" additionnelle vu que de tous temps, le code .NET est compilé sous forme de code intermédiaire qui est "transpilé" soit à la demande ( JIT just in time ) soit lors de l'installation. "

C’est le cas pour une part conséquente de l’informatique actuelle qui tourne sur VM, c’est un des changement majeur de l’industrie qui pousse encore plus vers l’indépendance vis-à-vis du matériel.

avatar Macriart | 

l'émulation x64 est arrivée à Windows sur ARM voir article

https://www.windowscentral.com/64-bit-app-emulation-enters-preview-windows-10-arm

https://www.theverge.com/2020/12/10/22168542/x64-emulation-windows-on-arm-surface-pro-x

si je comprend bien ont pourra jouer à tout les jeux et utiliser toutes les application déjà disponible via windows arm, corriger moi si je me trompe

avatar olivierfaure | 

au moins Microsoft fait tourner les applications 32bits, ça aurait marrant si Rosetta incluait aussi l'émulation 32bits, le retour de certaines app sur M1 du coup :)

Pages

CONNEXION UTILISATEUR