Am Puls von Microsoft

Windows 10 auf ARM CPUs: So funktioniert die Emulation von x86 Programmen

In der letzten Woche hat Microsoft überraschend angekündigt, dass es ab dem kommenden Jahr Windows 10 PCs geben wird, die von einer ARM-CPU befeuert werden. Der Snapdragon 835 wird der erste Chip sein, der offiziell unterstützt wird. Windows auf ARM ist nichts Neues, mit Windows RT gab es bereits einen Anlauf, der – wie wir alle wissen – von maximalem Misserfolg gekrönt war.

Dieses Mal soll jedoch der Durchbruch gelingen, weil die neuen ARM-PCs in der Lage sein werden, x86 Desktop-Anwendungen auszuführen. Durch den integrierten Emulator sollen sich die neuen Geräte nicht von “herkömmlichen” Wintel-PCs unterscheiden. Ob wirklich 100 Prozent aller Desktop-Applikationen auf diesem Weg verfügbar werden, dazu schweigt sich Microsoft aktuell noch aus, auch über weitere technische Details ist noch nicht sehr viel bekannt.

Mich hat interessiert, wie die Emulation technisch umgesetzt wird, da gibt es ja durchaus verschiedene Ansätze. Also habe ich mich umgehört und in Erfahrung gebracht, dass hierfür ein so genannter JIT-Compiler zum Einsatz kommen wird.
Wer nicht in der IT, sondern in der Logistik arbeitet, dem sagt der Begriff ebenfalls etwas, und es hat auch in der Tat die gleiche Bedeutung. JIT steht für “Just In Time”. Der JIT-Emulator in der ARM-Version von Windows 10 wandelt die x86-Befehle also zur Laufzeit der Programme in Kommandos um, welche die ARM-CPUs versteht und ausführen kann.

Ein JIT-Compiler muss äußerst performant sein, schließlich soll der Benutzer ja gar nicht merken, dass hier ein Emulator arbeitet. Ebenso klar ist natürlich, dass ein auf diese Weise emuliertes Programm langsamer ist als eines, welches nativ für die entsprechende Plattform kompiliert wurde.

Dass zu vergleichen, dürfte allerdings schwierig bis unmöglich werden, allerdings ist das auch nicht wirklich wichtig. Diese ARM-PCs sind ja nicht die Speerspitze der Leistungsfähigkeit, sondern sie sollen Windows 10 PCs zu einem bisher nie dagewesenen Preis-/Leistungs-Verhältnis ermöglichen. Dass Photoshop auf einem solchen PC langsamer startet und arbeitet als auf einem aktuellen HighEnd-PC mit der stärksten Intel-CPU, liegt auf der Hand. Die einzig wirklich interessante Frage ist, ob die ARM-PCs dem Nutzer das Gefühl geben, für das investierte Geld eine angemessene Gegenleistung zu bekommen. Das können wir freilich erst beurteilen, wenn wir es ausprobiert haben.

Außerdem hat Microsoft noch ein Performance-As im Ärmel: Die Ergebnisse, die der JIT-Compiler ausspuckt, werden nämlich zwischengespeichert. Wird eine zuvor ausgeführte x86 Anwendung erneut gestartet, muss der JIT-Compiler nicht mehr aktiv werden, sondern er greift auf eine Referenz-Tabelle der übersetzten Befehle zu, die er sich bei der ersten Ausführung angelegt hat. Die Ausführung wird somit beschleunigt, wobei man auch hier wieder offen lassen muss, ob dieser Vorteil nur mess- oder tatsächlich auch spürbar ist.

Die gecachten JIT-Befehle belegen natürlich zusätzlichen Speicherplatz. Da sich das aber nur auf die ausführbaren Dateien beschränkt, muss man sich keine Sorgen machen, dass z.B. eine Photoshop-Installation plötzlich doppelt so viel Speicher belegt wie bisher. Man konnte mir auch leider noch nicht sagen, ob diese Cache-Datenbank grundsätzlich alle Resultate zwischenspeichert oder ob ähnlich wie beim Prefetching von Windows die am häufigsten genutzten Anwendungen in diesem Speicher vorgehalten werden. Eine weitere Variante wäre, dass der JIT-Cache eine feste Größe hat und die ältesten Einträge automatisch raus fallen, wenn diese Größe überschritten wird.

Über den Autor

Martin Geuß

Martin Geuß

Ich bin Martin Geuß, und wie unschwer zu erkennen ist, fühle ich mich in der Windows-Welt zu Hause. Seit mehr als 16 Jahren lasse ich die Welt an dem teilhaben, was mir zu Windows und anderen Microsoft-Produkten durch den Kopf geht, und manchmal ist das sogar interessant. Das wichtigste Motto meiner Arbeit lautet: Von mir - für Euch!

Anzeige