最低硬體需求已更新

.NET 11 的最低硬體需求已更新,要求在 x86/x64 架構上使用更現代化的指令集。 此外,針對 x86/x64 和 Arm64 的 ReadyToRun(R2R) 編譯目標也已更新,以利用較新的硬體功能。

Arm64

對蘋果來說,最低硬體 ReadyToRun 和目標都沒有改變。 這些Apple M1晶片大致等效armv8.5-a,因此至少支援 AdvSimd (NEON)、CRC、DOTPROD、LSERCPCRCPC2RDMA及指令集。

對 Linux 來說,最低硬體不會有變動。 .NET 持續支援像 Raspberry Pi 這類可能只支援指令集的 AdvSimd 裝置。 ReadyToRun目標已更新以包含指令集LSE,這可能導致啟動應用程式時額外的即時編譯開銷。

對於 Windows,最低硬體配置沒有改變。 .NET 持續支援armv8.0-a裝置,包括不提供指令LSE集的 Windows 10 物聯網裝置。 ReadyToRun 目標已更新為 armv8.2-a + RCPC(這提供至少支援 AdvSimd、CRC、LSE、RCPC、RDMA),涵蓋大多數官方支援的硬體。 未達標的裝置仍可執行 .NET,但受影響ReadyToRun的影像會退回到 JIT 編譯。

作業系統 之前的 JIT/AOT 最低要求 新的 JIT/AOT 最低標準 先前的 R2R 目標 新的 R2R 目標
蘋果 蘋果 M1 (無變化) 蘋果 M1 (無變化)
Linux armv8.0-a (無變化) armv8.0-a armv8.0-a + LSE
窗戶 armv8.0-a (無變化) armv8.0-a armv8.2-a + RCPC

x86/x64

對於三種作業系統(Apple、Linux 和 Windows),基準值會從 x86-64-v1 更新到 x86-64-v2。 這使硬體從僅保證CMOV、CX8、SSE和SSE2,變成同時也保證CX16、POPCNT、SSE3、SSSE3、SSE4.1和SSE4.2。 此保證為 Windows 11 和所有在 Windows 10 上得到官方支援的 x86/x64 CPU 所需的。 它包含所有仍由 Intel/AMD 官方支援的晶片,最後一批較舊的晶片大約在 2013 年左右停止支援。

ReadyToRun該目標已更新至 x86-64-v3,適用於 Windows 和 Linux,而對 Apple 則保持不變。此外,蘋果還包含 AVX、AVX2、BMI1、BMI2、F16C、FMA、LZCNT 和 MOVBE 指令集。

作業系統 之前的 JIT/AOT 最低要求 新的 JIT/AOT 最低標準 先前的 R2R 目標 新的 R2R 目標
蘋果 x86-64-v1 x86-64-v2 x86-64-v2 (無變化)
Linux x86-64-v1 x86-64-v2 x86-64-v2 x86-64-v3
窗戶 x86-64-v1 x86-64-v2 x86-64-v2 x86-64-v3

推出的版本

.NET 11 預覽版 1

先前的行為

預設情況下,.NET 能在較舊的硬體上成功啟動並執行。 個別應用程式可能選擇了較高的基線,或明確使用硬體 內在元件 來提升其情境的基線。

新行為

從 .NET 11 開始,.NET 無法在不支援該x86-64-v2指令集的 x86/x64 硬體上執行,可能會印出類似的訊息。 (在某些情況下,可能會提供更具描述性的訊息,列出特定作業系統與架構的具體硬體需求。)

目前的 CPU 缺少一個或多個基線指令集。

對於 ReadyToRun具備 功能的組件,某些支援硬體可能會產生額外的啟動開銷,無法達到典型裝置的預期支援。

破壞性變更的類型

此變更為行為變更。

變更的原因

.NET 支援廣泛的硬體,通常超出底層作業系統(OS)所設定的最低硬體需求。 .NET 也內建支援,能利用其正在運行的硬體來處理 JIT 情境。 然而,這種支援會大幅增加程式碼庫的複雜度,尤其是對於較舊且不太可能仍在使用的硬體而言。 此外,它定義了一個「最低公分母」,這是 AOT 目標必須預設使用的,這在某些特定領域的情境中可能導致應用程式效能下降。

更新 x86/x64 最低基準是為了降低程式碼庫的維護複雜度,並更好地符合底層作業系統文件中(且常被強制執行)的硬體需求。 Arm64 的最低基準保持不變,因此 .NET 持續支援 Windows 10 IoT 所支援的硬體。

如果你使用的是已不再支援的 x86/x64 硬體,建議考慮更新。 此類硬體已正式停止支援,且可能無法在 .NET 支援的作業系統版本上啟動。

對於未達到新的 ReadyToRun 目標的受支援 Arm64 硬體,無須採取任何動作,但當受影響的 ReadyToRun 映像回復為 JIT 編譯時,應用程式的啟動可能會產生額外負荷。

受影響的 API

這項變更影響整個 .NET。

另請參閱