模擬在 Arm 上的運作方式
模擬讓 Arm 上提供豐富的 Windows 應用程式生態系統,讓使用者能夠執行他們關心的應用程式,而不需要修改應用程式。 模擬對使用者而言是透明的,而且是 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 支援新增至應用程式時,讓 app 在 Arm 裝置上執行模擬時,您的 app 將受益於原生效能提升和 Arm 支援的獨特品質。
如需 如何建立 App 的 Arm 版本,以及可能涉及何種優點、挑戰和工具,以及建立 App Arm 版本的可用支援,請參閱將 Arm 支援新增至您的 Windows 應用程式 ,以取得相關指引。