Arm 上的 Windows
Windows 傳統上在由 x86/x64 處理器提供支援的電腦上執行,但最近也會在由 Arm 處理器提供支援的裝置上執行。
Arm 支援的裝置特別有趣,因為 Arm 架構的節電本質可讓這些裝置提供較長的電池使用時間,同時提供絕佳的效能。 晶片上的 Arm 系統 (SoC) 通常包含其他重要功能,例如強大的 CPU、GPU、Wi-Fi 和行動數據網路,以及加速 AI 工作負載的神經處理器單元 (NPU)。
建置在 Arm 上執行的 Windows 應用程式
Windows 10 可讓現有的未修改 x86 應用程式在 Arm 裝置上執行。 Windows 11 新增在 Arm 裝置上執行未修改 x64 Windows 應用程式的功能! 讓使用者具有在 Arm 裝置上執行 x86 和 x64 應用程式的能力,即使大部分現有應用程式和工具都在新的 Arm 裝置上,也能順利執行。
為了獲得最佳效能、回應能力和電池續航力,使用者需要擁有 Arm 原生 Windows 應用程式,這表示開發人員需要建置或移植 Arm 原生 Windows 應用程式。
虛擬機器
您可以使用 Azure 上的 Ampere Altra Arm 處理器來建立及部署 Windows 11 Arm64 VM。 在這篇快速入門文章中了解運作方式。
深入了解如何在 Arm 虛擬機器上使用 Windows:
- Arm 虛擬機器上的 Windows 常見問題集
- Azure 虛擬機器採用 Ampere Altra Arm 型處理器:正式發行
- 使用 Terraform 部署 Arm 型的 Azure Kubernetes Service (AKS) 叢集 - ARM 開發人員中樞
- 深入了解透過雲端裝載的持續整合/持續部署 (CI/CD) 建置和測試自動化,例如 Azure DevOps 或 GitHub。
Arm 開發人員裝置
想要在 Windows 上建置及測試 Arm 原生應用程式的開發人員可用的選項數目一直在成長。
Copilot+ 電腦 透過各種裝置製造商提供類神經處理單元 (NPU) 和最新的 AI 功能和運算容量。 其中許多由 Arm 型 Snapdragon® X 系列處理器提供動力,每秒提供 45 萬億個作業 (TOPS) 來搭配使用。
Windows Dev Kit 2023 (程式代碼名稱 “Project Volterra”) 已不再可供購買新專案,但仍可作為支援 Windows 開發、AI 研究和測試的 Arm 型裝置,以將 AI 整合到應用程式和體驗中。
支援 Arm 上現有的 Windows 應用程式
Arm 上的 Windows 會執行原生 Arm 應用程式,以及許多未修改的 x86 和 x64 應用程式,但為了達到最佳效能和電池續航力,應用程式應盡可能建置為 Arm 原生應用程式。 Windows 應用程式可以利用許多不同的工具和技術來建置,包括原生 C/C++ Win32 應用程式、傳統 .NET Framework WinForms/WPF 應用程式、新式 .NET 或 MAUI 應用程式,甚至是使用 Java、Python、節點等建置的應用程式。
尋找適用於 Arm 開發的工具
Microsoft 會持續提供 Arm 原生開發人員工具集更新,以建置和移植應用程式 (針對原生支援 Windows ARM 的裝置),就像 x64 那樣輕鬆。 支援 Arm 上的應用程式開發。
- Arm-native Visual Studio 包括 Visual C++、.NET & .NET Framework 和 Java,使開發人員能夠在基於 Arm 的裝置上以原生方式建置和偵錯 Arm 應用程式。 深入了解:Arm64 Visual Studio 正式推出!(2022 年 11 月),Visual Studio 2022 17.7 中的 MSVC ARM64 最佳化 (2023 年 9 月)。
- Visual Studio Code 原生支援 Arm,而且可以安裝在 Arm 裝置上。 VS Code C++ 延伸模組也提供 C++ IntelliSense,並建置支援開發以原生方式在 Arm64 裝置上執行的 Windows 應用程式。
- .NET 6+ 已經支援 Arm,適用於原生 Arm 執行和 x64 模擬。 若要開發以原生方式在 Arm64 裝置上執行的 .NET 應用程式,建議您安裝新的 Arm 原生 Visual Studio 2022 17.4 和 .NET 8 Arm64 SDK。 若要詳細了解 .NET 8 對 Arm 的支援以及 Arm64 的效能改進,請造訪 .NET 部落格:.NET 8 中的 Arm64 效能改進 (2023 年 10 月)。
- .NET 6 Arm64 SDK:根據預設,如果使用
dotnet run
Arm64 SDK 的 .NET 6 應用程式,它會以 Arm64 形式執行。 此dotnet-runtimeinfo
工具可用來探索供 .NET 執行的環境。 若要深入了解,請參閱Arm64 支援的 .NET 6 部落格公告。 - VC++ 工具鏈 (Arm Developer) 是 Arm 生產的 GNU 工具鏈,適用於 Arm 架構版本,能讓合作夥伴、開發人員和社群使用最新的 Arm 架構,以及開放原始碼專案 GCC、Binutils、glibc、Newlib 和 GDB 的新功能。
- OpenJDK 中對 Arm 的 Java 支援:宣布推出適用於 ARM 上 Windows 的 OpenJDK (2020 年 6 月)
- GitHub Actions:GitHub Actions,GitHub 的 CI/CD 工作流程引擎是許多開發人員工作流程中不可或缺的一部分,他們使用它來持續建置、測試和部署應用程式。 GitHub Actions 現在可用於 Arm 上的 Windows,有 2 種版本:1. 可以託管在 Arm VM 或 Arm 裝置上的自我裝載執行程序,以及 2. GitHub 託管的執行程序 (目前僅可在私人測試版中使用,但即將推出正式版本)。
- Docker Desktop:容器是一個非常受歡迎的部署目標,原因有很多,包括簡化的開發工作流程、隔離和安全性、高效率的資源利用、可移植性和可重複性。 Docker Desktop 現可在 Arm 上的 Windows 上以原生方式執行。
注意
我們針對在 Arm64 上執行 Windows 桌面版本的電腦 (也稱為 AArch64) 處理器,以簡寫 Arm 來表示。 我們在這裡使用 Arm32 做為 32 位元 Arm 架構的簡寫 (在其他文件中通常稱為 Arm)。 由 Arm 支援的電腦也提供絕佳的應用程式相容性,並可讓您執行現有的未修改 x86 win32 應用程式而無需修改。 Arm 應用程式以原生方式執行,而沒有任何模擬,而 x86 和 x64 應用程式則以模擬方式在 Arm 裝置上執行。
Arm64EC - 協助更新 Windows 應用程式以在 Arm 上執行
Arm64EC (「模擬相容」) 可讓您以增量方式建置新的應用程式,或移植現有的應用程式,以充分利用原生 Arm 效能,同時利用現有的 x64 程式碼和程式庫,直到完全遷移為止。 深入了解:
開發在 Arm 裝置上執行的 Windows 應用程式的其他秘訣
建議使用 MSIX 來封裝您的應用程式以進行分發。 如需有關 MSIX 如何支援 Arm 和 Arm64 的詳細資訊,請參閱應用程式套件架構:Arm 和 Arm64。
並非所有 Visual Studio 專案都會設定為在您從 Arm 裝置啟動偵錯 (F5) 時,於本機啟動專案。 即使您的應用程式是在本機執行,您仍可能需要設定 Visual Studio 進行遠端偵錯。 如需詳細資訊,請參閱 [遠端偵錯]。
若要在 Visual Studio 上尋找並安裝建議的套件,請瀏覽 Visual Studio 下載頁面。
- Visual Studio 2022 的遠端工具,捲動至 [所有下載] 區段下方,然後展開 [Visual Studio 2022 的工具] 下拉式功能表。 Visual Studio 2022 的遠端工具將會列出。 請務必勾選 Arm64 選項按鈕,然後按 [下載]。
- 若為 Microsoft C++ 可轉散發套件,請捲動至 [所有下載] 區段下方,然後展開 [其他工具和架構] 下拉式功能表。 適用於 Visual Studio 2022 的 Microsoft C++ 可轉散發套件 將會列出。 請務必勾選 Arm64 選項按鈕,然後按 [下載]。
- 如果使用舊版的 Visual Studio,請選取頁面底部的 [舊版下載] 連結,以搜尋與您 Visual Studio 版本相關聯的下載。
當使用者從 Microsoft Store 將您的應用程式安裝在 Arm 裝置上時,Windows 11 會自動選取可用的應用程式最佳版本。 如果您將 x86、Arm32 和 Arm64 版本的應用程式提交至 Microsoft Store,作業系統會自動安裝應用程式的 Arm64 版本。 如果您只提交應用程式的 x86 和 Arm32 版本,則作業系統會安裝 Arm32 版本。 如果您只提交應用程式的 x86 版本,作業系統會安裝該版本,並在模擬下執行。
當指定應用程式架構的選擇項目時,請選擇 32 位元 x86 版本,以在 Arm 電腦上的 Windows 上執行應用程式的 32 位元版本。 如果應用程式的 x64 Win32 版本無法運作,大部分的應用程式都有可用的 x86 版本。
如需架構的詳細資訊,請參閱應用程式套件架構。
用程式保證 Arm 諮詢服務
我們在指引將 Arm 支援新增至 Windows 應用程式時,會逐步引導您建立應用程式的 Arm 最佳化版本。 如果您遇到停滯狀態,應用程式保證 Arm 諮詢服務可助您一臂之力。 這項服務是對我們現有承諾的補充:您的應用程式將會在 Arm 上的 Windows 上執行,如果您遇到任何問題,Microsoft 將會協助補救。 深入了解。
註冊 Windows Arm Advisory Service。
其他資源
- Satya Nadella 的組建 2022 主題演講宣告推出 “Project Volterra”
- x86 模擬在 Arm 上的運作方式
- 對 x86 傳統型應用程式進行疑難排解
- 對 Arm UWP 應用程式進行疑難排解
- Arm 上的程式相容性疑難排解員
- 使用 WDK 建置 Arm64 驅動程式:建置 Arm64 驅動程式的指示。
- 在 Arm 上偵錯 x86 應用程式| 在 Arm 上偵錯 x86 應用程式的指引。
- 影片:建置 Arm64 Win32 C++ 應用程式
- 適用於開發人員的 Arm 上的 Windows 10 (Microsoft Build 2018 影片簡報)
- 部落格:對 Arm 開發的 Windows 10 支援原始公告
- 回報錯誤 (bug)