Arm64EC (「模擬相容」) 可讓您建置新的原生應用程式,或累加轉換現有的 x64 應用程式,以利用 Arm 支援裝置可能的原生速度和效能,包括更好的耗電量、電池使用時間,以及加速的 AI 和 ML 工作負載。
Arm64EC 是新應用程式二進位介面 (ABI),適用於使用 Windows 11 在 Arm 裝置上執行的應用程式。 這是 Windows 11 的一項功能,需要使用 Windows 11 SDK,並且在 Arm 上的 Windows 10 上不可用。
互通性
建置為 Arm64EC 的程式代碼會與相同進程內模擬下執行的 x64 程式代碼互通。 進程中的 Arm64EC 程式碼會以原生效能執行,而任何 x64 程式碼都會使用 Windows 11 內建的模擬來執行。 即使應用程式依賴尚未支援 Arm 的現有相依性或外掛程式,您仍可開始將應用程式的元件重建為 Arm64EC,以獲益於原生效能的優點。
Arm64EC 遵循 x64 軟體慣例,包括呼叫慣例、堆疊使用方式、資料結構配置和前置處理器定義,以保證與 x64 的互通性。 不過,Arm64EC 程式代碼與建置為 Arm64 的程式代碼不相容,其使用一組不同的軟體慣例。
Arm 作業系統本身的 Windows 11 高度依賴 Arm64EC 的互通性,以啟用執行 x64 應用程式。 在 Arm 上的 Windows 11 上執行的 x64 應用程式所載入的大部分作業系統程式碼都會編譯為 Arm64EC,在應用程式不知情的情況下為該程式碼啟用原生效能。
x64 或 Arm64EC 處理序可以載入並呼叫 x64 和 Arm64EC 二進位檔,而 Arm64 處理序只能載入 Arm64 二進位檔。 這兩種架構都可以載入 Arm64X二進位檔,因為這些二進位檔同時包含 x64 和 Arm64 的程式碼。
| 處理架構 | x64 二進位 | Arm64EC 二進位 | Arm64 二進位 |
|---|---|---|---|
| x64/Arm64EC | Supported | Supported | 不支援 |
| Arm64 | 不支援 | 不支援 | Supported |
同樣的,在建置時,Arm64EC 二進位檔可以在 x64 和 Arm64EC libs 中連結,而 Arm64 二進位檔只能在 Arm64 lib 中連結。
| PE 架構 | x64 函式庫 | Arm64EC 庫 | Arm64 函式庫 |
|---|---|---|---|
| Arm64EC | Supported | Supported | 不支援 |
| Arm64 | 不支援 | 不支援 | Supported |
如需有關 Arm64EC ABI 如何啟用互通性的詳細資訊,請參閱了解 Arm64EC ABI 和組件程式碼。
使用 Arm64EC 讓現有應用程式在 Arm 上的 Windows 11 執行速度加快
Arm64EC 可讓您以 累加方式 將現有應用程式中的程式代碼從模擬轉換成原生。 在過程中的每個步驟中,您的應用程式能持續順利執行,不需要一次全部重新編譯。
上圖顯示一個完全模擬 x64 工作負載的簡化範例,需要一些時間,然後接著使用 Arm64EC 逐步改進。
- 以完全模擬的 x64 工作負載開始|
- 重新編譯最耗 CPU 的部分以當作 Arm64EC 之後
- 一段時間後繼續重新編譯更多 x64 模組
- 完全原生 Arm64EC 應用程式的最終結果
藉由將花費最多時間或最耗用 CPU 的模組從 x64 重新編譯為 Arm64EC,您可以在每個步驟中以最少的工作量獲得最大的改進。
應用程式相依性
當您使用 Arm64EC 重建應用程式時,請使用 Arm64EC 版本的相依性,但您也可以依賴 x64 版本的相依性。 您無法使用 Arm64 版本的依賴項。
Arm64EC 進程中的任何 x64 程式代碼,包括來自相依性的程式代碼,都會在應用程式的模擬下執行。 排定最耗用 CPU 的相依性,以從 x64 轉換至 Arm64EC,以改善應用程式的效能。
識別 Arm64EC 二進位檔和應用程式
在 Arm 上的 Windows 11 上執行的應用程式會與 Arm64EC 二進位檔互動,就像它們是 x64 二進位檔一樣。 應用程式不需要知道二進位檔中的程式代碼會在多大程度上重新編譯為 Arm64EC。
若要識別這些二進位檔,您可以使用 在開發人員命令提示字元 link /dump /headers中查看它們。
File Type: EXECUTABLE IMAGE
FILE HEADER VALUES
8664 machine (x64) (ARM64X)
(x64) 和 (ARM64X) 的組合表示二進位檔的某些部分會重新編譯為 Arm64EC,即使二進位檔看起來仍是 x64。 具有包含 (ARM64) 和 (ARM64X) 之電腦標頭的二進位檔,是可以載入至 x64 和 Arm64 應用程式的 Arm64X PE 檔案。
您也可以使用 Windows 工作管理員 來識別應用程式是否編譯為 Arm64EC。 在 [工作管理員] 的 [詳細數據] 索引標籤中,[ 架構] 資料行會顯示 ARM64 (x64 相容) ,適用於主要可執行檔部分或完全編譯為 Arm64EC 的應用程式。
下一步
請參閱開始使用 Arm64EC,了解如何使用 Arm64EC 建置或更新 Win32 應用程式。