Freigeben über


Funktionsweise der Emulation auf Arm

Emulation macht das reichhaltige Ökosystem von Windows-Apps auf Arm verfügbar, sodass Sie die Apps ausführen können, die Sie ohne Änderungen an der App interessieren. Emulation ist für Sie 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. Die Leistung wird 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, bietet es erhebliche Optimierungen, die die Leistung steigern und die CPU-Auslastung von Apps unter Emulation verringern.

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 treiber nicht 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 zum Vermitteln von Wissen über den Arm64-Host konzipiert sind, z. B. IsWoW64Process2. Apps unter Emulation, die 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

Wenn Sie Ihre App unter Emulation auf Arm-Geräten ausführen, ist das ein guter Ausgangspunkt. Ihre App profitiert jedoch von den nativen Leistungssteigerungen und den einzigartigen Eigenschaften von Arm-basierten Geräten, wenn Sie die Arm-Integration vornehmen.

Anleitungen zum Erstellen einer Arm-Version Ihrer Apps und zu den Vorteilen, Herausforderungen und Tooloptionen finden Sie unter Hinzufügen der Arm-Unterstützung zu Ihrer Windows-App. Dieser Artikel behandelt auch die verfügbare Unterstützung für das Erstellen einer Arm-Version Ihrer App und aller zugehörigen Abhängigkeiten.