Wie funktioniert die x86-Übersetzung unter Windows on Arm?

click fraud protection

Viele Windows-Anwendungen wurden für x86 geschrieben und können dennoch auf ARM-CPUs ausgeführt werden. So ist es möglich.

Windows wurde schon immer dafür gemacht x86-CPUs von Intel und AMD, aber seit Windows RT vor einem Jahrzehnt für Smartphones herauskam, ist das Betriebssystem langsam benutzerfreundlicher geworden CPUs bewaffnen. Heutzutage bieten sowohl Windows 10 als auch Windows 11 vollständige Unterstützung für ARM-CPUs, aber es gibt einen Haken. Während das Betriebssystem selbst auf diesen CPUs einwandfrei läuft, haben die meisten Anwendungen keine Arm-kompatible Version gestartet. Obwohl Windows auf ARM-Chips laufen kann, wäre es ein Problem, nur wenige Programme tatsächlich nutzen zu können.

Allerdings hat Microsoft einen Trick im Ärmel: ein Emulator, um x86-Apps auf Arm-basierten Maschinen zum Laufen zu bringen. Das ist der Schlüsselfaktor, der Windows on Arm seit der Veröffentlichung des Übersetzers im Jahr 2017 so viel Schwung verliehen hat. Hier erfahren Sie, wie der Emulator funktioniert und warum Arm-PCs ihn verwenden müssen, wenn sie Software für x86-Chips ausführen möchten.

Emulation von x86-Code für Arm-CPUs in Echtzeit

Die Idee, Code, der für einen Prozessortyp erstellt wurde, so zu emulieren, dass er auf einem anderen Prozessortyp ausgeführt werden kann, ist nichts Neues. So funktioniert die Spieleemulation, die häufig verwendet wird, um alte Videospiele auf neuen Geräten mit völlig anderer Hardware zum Laufen zu bringen. Wenn Sie eine x86-App auf einem Arm-PC ausführen, kompiliert Windows Blöcke des App-Codes und kompiliert sie zu etwas, das auf einem Arm-Chip ausgeführt werden kann. Dies geschieht alles in Echtzeit, und Windows muss den gesamten übersetzten Code zwischenspeichern, sodass er nicht immer wieder neu übersetzen muss.

Leider ist die Leistung bei emulierten Apps schlechter als bei dem für die Hardware entwickelten Code. Es ist schwer zu sagen, wie viel Leistung Sie verlieren, wenn Sie emulierten Code unter Windows ausführen, da die Testdaten sehr spärlich sind, aber zum Vergleich: Apples Rosetta 2-Übersetzer (das auch x86-Apps in Arm übersetzt) ​​verliert etwa 20 %. Es ist möglich, diese Zahl zu reduzieren, aber normalerweise führen Emulation und Übersetzung auf jeden Fall zu Leistungseinbußen.

Warum x86-Anwendungen ohne Emulation nicht auf Arm ausgeführt werden können

Sie fragen sich vielleicht, warum Software speziell für x86, ARM und andere Arten von CPUs geschrieben werden muss. Es kommt darauf an Unterschied in der Architektur, und in diesem Fall sprechen wir von der Befehlssatzarchitektur (ISA). Sie stellen das grundlegendste Design eines Prozessors dar und bestimmen, ob etwas Einfaches wie eine Multiplikation oder etwas Komplexes wie AVX nativ ausgeführt werden kann. Die Änderung der ISA wirkt sich auf die grundlegendste Art und Weise aus, wie Software mit Hardware interagiert, bis hin zu den grundlegenden Einsen und Nullen, die die CPU liest.

x86 ist die ISA von Intel- und AMD-CPUs, die historisch gesehen die einzigen CPUs waren, auf denen Windows überhaupt ausgeführt werden kann. Arm wird inzwischen hauptsächlich für Smartphones verwendet, und die Überschneidung zwischen PC-Software und Telefonsoftware ist sehr gering. Natürlich sind die meisten Programme entweder für x86 oder Arm gemacht, und für Windows on Arm war das ein massives Problem, weil Die Übersetzung erschien 2020 nicht, während Windows RT (die erste Version von Windows, die Arm unterstützte) herauskam 2012.

Es ist etwa ein Jahrzehnt her, seit Windows Arm unterstützt. Wo sind also all die nativen Apps? Das Hauptproblem besteht darin, dass es Zeit und Fachwissen erfordert, Software für eine andere ISA neu zu schreiben, insbesondere wenn Entwickler es gut machen wollen. Entwickler, die bei der Portierung einer App von einer ISA auf eine andere nicht die nötige Sorgfalt walten lassen, können zu Störungen und Fehlern führen. Ein gutes Beispiel hierfür ist Photoshop für Windows on Arm. Es läuft nativ unter Windows on Arm, noch in unserem Testbericht zum Lenovo Thinkpad X13s, sind wir auf mehrere Fehler und viele Warnungen gestoßen, dass OpenCL und OpenGL nicht unterstützt werden. In Verbindung mit einer viel kleineren Benutzerbasis, die Arm unter Windows verwendet, besteht für Entwickler weniger Anreiz, sich darum zu kümmern.

Wenn Entwickler also keine Ressourcen für die Erstellung nativer Software aufwenden können oder wollen, ist die Alternative die Emulation. Obwohl die Übersetzung von x86-Apps für Windows on Arm nicht perfekt ist, ist es beeindruckend, dass sie überhaupt funktioniert, und manchmal ist es wichtig zu wissen, dass die App wie erwartet läuft, wenn sie an Leistung verliert. Zumindest bis Windows on Arm den Punkt erreicht, an dem Entwickler es nicht mehr ignorieren können, geben Übersetzung und Emulation dem Hardware-Software-Ökosystem den dringend benötigten Auftrieb.