Freigeben über


Funktionsweise der Emulation auf Arm

Emulation macht das reichhaltige Ökosystem von Windows-Apps auf Arm verfügbar, sodass Benutzer die Apps ausführen können, die sie ohne Änderungen an der App interessieren. Emulation ist für den Benutzer transparent und Teil von Windows; es ist nicht erforderlich, dass zusätzliche Komponenten installiert werden.

Windows 11 on Arm unterstützt die Emulation von x86- und x64-Apps und -Leistung wurde durch die Einführung des neuen Emulators Prism in Windows 11 24H2 verbessert. Windows 10 auf Arm unterstützt auch emulation, aber nur für x86-Apps.

Prism

Prism ist der neue Emulator, der in Windows 11 24H2 enthalten ist. Im Vergleich zu früheren Emulationstechnologien, die in Windows enthalten sind, umfasst es erhebliche Optimierungen, die die Leistung verbessern und die CPU-Auslastung von Apps unter der Emulation verbessern.

Prism ist speziell für Qualcomm Snapdragon-Prozessoren optimiert und abgestimmt. Einige Leistungsfeatures in Prism erfordern Hardwarefeatures nur in der Snapdragon X-Serie, aber Prism ist für alle unterstützten Windows 11 auf Arm-Geräten mit Windows 11 24H2 verfügbar.

Funktionsweise der Emulation

Emulation funktioniert als Softwaresimulator, just-in-time Kompilieren von Blöcken von x86-Anweisungen in Arm64-Anweisungen mit Optimierungen, um die Leistung des ausgegebenen Arm64-Codes zu verbessern.

Ein Dienst speichert diese übersetzten Codeblöcke zwischen, um den Aufwand für die Übersetzung von Anweisungen zu verringern und eine Optimierung zu ermöglichen, wenn der Code erneut ausgeführt wird. Die Caches werden für jedes Modul erstellt, sodass andere Apps sie beim ersten Start nutzen können.

Für x86-Apps ermöglicht die WOW64-Ebene von Windows die Ausführung von x86-Code auf der Arm64-Version von Windows, genau wie die Ausführung von x86-Code auf der x64-Version von Windows. Dies bedeutet, dass x86-Apps auf Arm durch Dateisystem- und Registrierungsumleitung geschützt sind.

Für x64-Apps gibt es keine WOW64-Ebene und keine separate Registrierung oder keinen separaten Ordner von Windows-Systembinärdateien. Stattdessen werden Systembinärdateien als Arm64X PE-Dateien kompiliert, die sowohl in x64- als auch Arm64-Prozesse von demselben Speicherort geladen werden können, ohne dass dateisystemumleitung erforderlich ist. Dies bedeutet, dass x64-Anwendungen ohne besonderen Code auf das gesamte Betriebssystem zugreifen können, sowohl auf das Dateisystem als auch auf die Registrierung.

Beachten Sie, dass die Emulation nur Benutzermoduscode unterstützt und keine Treiber unterstützt. Alle Kernelmoduskomponenten müssen als Arm64 kompiliert werden.

Erkennen der Emulation

Eine x86- oder x64-App weiß nicht, dass sie auf einem Windows auf Arm-PC ausgeführt wird, es sei denn, sie ruft bestimmte APIs auf, die für die Vermittlung von Kenntnissen des Arm64-Hosts konzipiert sind, z . B. IsWoW64Process2. Apps, die nach Prozessordetails abfragen, einschließlich Metadaten oder Featurefunktionen, erhalten Details, die dem emulierten virtuellen Prozessor entsprechen. Aus Kompatibilitätsgründen gibt die API GetNativeSystemInfo auch emulierte Prozessordetails zurück, wenn sie von einer App unter Emulation ausgeführt werden.

Für Apps, die die Emulationsfunktionen des Betriebssystems ermitteln möchten, verwenden Sie die API GetMachineTypeAttributes.

Aktualisieren, um eine Arm-Version Ihrer App zu unterstützen

Während Ihre App unter Emulation auf Arm-Geräten ausgeführt wird, ist ein guter Ausgangspunkt, ihre App profitiert von systemeigenen Leistungsgewinnen und den einzigartigen Qualitäten von Arm-basierten Geräten, wenn Sie die Arm-Unterstützung zur App neu erstellen.

Unter "Arm-Unterstützung hinzufügen" zu Ihrer Windows-App finden Sie Anleitungen zum Erstellen einer Arm-Version Ihrer Apps und zu den möglichen Vorteilen, Herausforderungen und Tools sowie zur verfügbaren Unterstützung für die Erstellung einer Arm-Version Ihrer App (und aller zugehörigen Abhängigkeiten).