Comment fonctionne la traduction x86 sous Windows sur Arm ?

click fraud protection

De nombreuses applications Windows ont été écrites pour x86 et peuvent pourtant fonctionner sur les processeurs Arm. Voici comment c'est possible.

Windows a toujours été fait pour Processeurs x86 d'Intel et AMD, mais depuis que Windows RT est sorti il ​​y a dix ans pour les smartphones, le système d'exploitation est progressivement devenu plus convivial. Armer les processeurs. Aujourd'hui, Windows 10 et Windows 11 offrent une prise en charge complète des processeurs Arm, mais il y a un problème. Bien que le système d'exploitation lui-même fonctionne parfaitement sur ces processeurs, la plupart des applications n'ont pas lancé de version compatible Arm. Bien que Windows puisse fonctionner sur des puces Arm, avoir peu de programmes à utiliser serait un problème.

Cependant, Microsoft a un tour dans son sac: un émulateur pour faire fonctionner des applications x86 sur des machines basées sur Arm. C'est l'élément clé qui a donné son élan à Windows on Arm depuis la sortie du traducteur en 2017. Voici comment fonctionne l'émulateur et pourquoi les PC Arm doivent l'utiliser s'ils souhaitent exécuter des logiciels conçus pour les puces x86.

Émulation du code x86 pour les processeurs Arm en temps réel

L’idée d’émuler du code conçu pour un type de processeur afin qu’il puisse être exécuté sur un autre n’a rien de nouveau. C’est ainsi que fonctionne l’émulation de jeu, qui est couramment utilisée pour faire fonctionner d’anciens jeux vidéo sur de nouveaux appareils dotés d’un matériel très différent. Lorsque vous exécutez une application x86 sur un PC Arm, Windows prend des blocs du code de l'application et le compile en quelque chose qui peut s'exécuter sur une puce Arm. Tout cela se fait en temps réel et Windows doit mettre en cache tout le code traduit, ce qui signifie qu'il n'a pas besoin de le retraduire encore et encore.

Malheureusement, les performances seront pires sur les applications émulées par rapport au code conçu pour le matériel. Il est difficile de dire combien de performances vous perdez en exécutant du code émulé sous Windows car les données de test sont très rares, mais à titre de comparaison, Le traducteur Rosetta 2 d'Apple (qui traduit également les applications x86 en Arm) perd environ 20 %. Il est possible de réduire ce nombre, mais généralement, l'émulation et la traduction entraînent une dégradation des performances, quoi qu'il arrive.

Pourquoi les applications x86 ne peuvent pas fonctionner sur Arm sans émulation

Vous vous demandez peut-être pourquoi les logiciels doivent être écrits spécifiquement pour les processeurs x86, Arm et autres types de processeurs. Cela revient au différence d'architecture, et dans ce cas, nous parlons de l'architecture de jeu d'instructions (ISA). Ils constituent la conception la plus fondamentale d'un processeur et déterminent si quelque chose de simple comme la multiplication ou quelque chose de complexe comme AVX peut être effectué de manière native. La modification de l'ISA affecte la manière la plus fondamentale dont le logiciel interagit avec le matériel, jusqu'aux valeurs de base et aux zéros que lit le processeur.

x86 est l'ISA des processeurs Intel et AMD, qui ont toujours été les seuls processeurs sur lesquels Windows peut même fonctionner. Arm, quant à lui, a principalement été utilisé pour les smartphones, et le chevauchement entre les logiciels PC et les logiciels téléphoniques est très faible. Naturellement, la plupart des programmes sont conçus pour x86 ou Arm, et pour Windows sur Arm, cela constituait un énorme problème car la traduction n'est pas sortie en 2020, tandis que Windows RT (la première version de Windows à prendre en charge Arm) est sorti en 2012.

Cela fait environ une décennie que Windows a commencé à prendre en charge Arm, alors où sont toutes les applications natives? Le principal problème est qu'il faut du temps et de l'expertise pour réécrire un logiciel pour un autre ISA, surtout si les développeurs veulent bien le faire. Les développeurs qui ne prennent pas les précautions nécessaires pour porter une application d'un ISA à un autre peuvent entraîner des problèmes et des bugs. Photoshop pour Windows sur Arm en est un bon exemple. Il fonctionne nativement sous Windows sur Arm, encore dans notre examen des Lenovo Thinkpad X13s, nous avons rencontré plusieurs erreurs et de nombreux avertissements indiquant qu'OpenCL et OpenGL n'étaient pas pris en charge. Couplé à une base d’utilisateurs beaucoup plus restreinte utilisant Arm sous Windows, les développeurs sont moins incités à s’en soucier.

Ainsi, lorsque les développeurs ne peuvent pas ou ne veulent pas consacrer les ressources à la création de logiciels natifs, l'alternative est l'émulation. Bien que la traduction des applications x86 pour Windows sur Arm ne soit pas parfaite, il est impressionnant que cela fonctionne, et parfois, une perte de performances vaut la peine de savoir que l'application fonctionnera comme prévu. Au moins jusqu'à ce que Windows on Arm atteigne le point où les développeurs ne peuvent plus l'ignorer, la traduction et l'émulation lui donnent un coup de pouce indispensable à son écosystème matériel-logiciel.