模擬使 Windows 應用程序的豐富生態系統可在 Arm 上使用,因此您可以運行您關心的應用程序,而無需對應用程序進行任何修改。 模擬對您來說是透明的,並且是 Windows 的一部分;它不需要安裝任何額外的組件。
Arm 上的 Windows 11 支援模擬 x86 和 x64 應用程式。 Windows 11 24H2 中引入了新的模擬器 Prism,效能得到了增強。 Arm 上的 Windows 10 也支援模擬,但僅適用於 x86 應用程式。
Prism \(英文\)
Prism 是 Windows 11 24H2 隨附的新模擬器。 與 Windows 中先前包含的模擬技術相比,它包括顯著的最佳化,可提高模擬中應用程式的效能並降低 CPU 使用率。
Prism 已針對 Qualcomm Snapdragon 處理器進行優化和調整。 Prism 中的某些效能功能只需要 Snapdragon X 系列中可用的硬體功能,但 Prism 適用於具有 Windows 11 24H2 的 Arm 裝置上所有支援的 Windows 11。
仿真的運作方式
模擬可作為軟體模擬器,將 x86 指令的 Just-In-Time 編譯區塊編譯成具有優化功能的 Arm64 指令,以改善所發出 Arm64 程式代碼的效能。
服務會快取這些轉譯的程式碼區塊,以減少指令轉譯的額外負荷,並允許在程式碼再次執行時進行最佳化。 每個模組都會產生快取,讓其他應用程式可以在第一次啟動時加以使用。
針對 x86 應用程式, WOW64 層的 Windows 允許 x86 程式代碼在 Arm64 版本的 Windows 上執行,就像它允許 x86 程式代碼在 x64 版本的 Windows 上執行一樣。 這表示 Arm 上的 x86 應用程式會受到檔案系統和登錄重新導向的保護。
對於 x64 應用程序,沒有 WOW64 層,也沒有單獨的 Windows 系統二進製文件登錄或文件夾。 相反地,系統會將系統二進制檔編譯為 Arm64X PE 檔案,這些檔案 可以從相同的位置載入 x64 和 Arm64 進程,而不需要文件系統重新導向。 這表示 x64 應用程式可以存取整個作業系統,無論是檔案系統還是登錄,而不需要特殊程式碼。
請注意,模擬僅支援使用者模式程式碼,不支援驅動程式。 任何核心模式元件都必須編譯為 Arm64。
偵測模擬
x86 或 x64 應用程式無法得知它是在 Arm 電腦上的 Windows 上執行,除非它呼叫設計來傳遞 Arm64 主機資訊的特定應用程式介面(API),例如 IsWoW64Process2。 模擬中的應用程式會查詢處理器詳細資料,包括中繼資料或功能功能,會收到對應至模擬虛擬處理器的詳細資料。 基於相容性理由,API GetNativeSystemInfo 也會在從模擬中的應用程式執行時傳回模擬的處理器詳細數據。
對於想要偵測操作系統模擬功能的應用程式,請使用 API GetMachineTypeAttributes。
更新以支援您應用程式的 Arm 版本
雖然在 Arm 裝置上以模擬方式執行應用程式是很好的起點,但當您重新建置以添加 Arm 支援時,您的應用程式將受益於原生效能和 Arm 驅動裝置的獨特品質。
如需如何建立應用程式的 Arm 版本,以及涉及哪些優點、挑戰和工具選項的指引,請參閱 將 Arm 支援新增至您的 Windows 應用程式。 本文也涵蓋建立應用程式 Arm 版本和任何相關相依性的可用支援。