.NET 11 の最小ハードウェア要件が更新され、x86/x64 アーキテクチャと Arm64 アーキテクチャの両方で最新の命令セットが必要になります。 さらに、ReadyToRun (R2R) コンパイル ターゲットが更新され、新しいハードウェア機能が利用されました。
Arm64
Apple の場合、最小ハードウェアまたは ReadyToRun ターゲットに変更はありません。
Apple M1チップはarmv8.5-aとほぼ同等であるため、少なくともAdvSimd (NEON)、CRC、DOTPROD、LSE、RCPC、RCPC2、およびRDMA命令セットのサポートが提供されます。
Linux の場合、最小ハードウェアに変更はありません。 .NET は、 AdvSimd 命令セットのサポートのみを提供する Raspberry Pi などのデバイスを引き続きサポートします。
ReadyToRunターゲットが更新され、LSE命令セットが含まれるため、アプリケーションを起動すると、追加のジッティング オーバーヘッドが発生する可能性があります。
Windows の場合、ベースラインが更新され、 LSE 命令セットが必要になります。 これは、 Windows 11 と、Windows 10 で 正式にサポートされているすべての Arm64 CPU で必要です。 さらに、 Arm SBSA (サーバー ベース システム アーキテクチャ) の要件にインラインで対応しています。
ReadyToRunターゲットがarmv8.2-a + RCPCに更新されました (これにより、少なくともAdvSimd、CRC、LSE、RCPC、RDMAがサポートされます)。これは、公式にサポートされているハードウェアの大部分をカバーします。
| OS | 以前の JIT/AOT の最小値 | 新しい JIT/AOT 最小値 | 以前の R2R ターゲット | 新しい R2R ターゲット |
|---|---|---|---|---|
| 林檎 | Apple M1 | (変更なし) | Apple M1 | (変更なし) |
| Linux | armv8.0-a | (変更なし) | armv8.0-a | armv8.0-a + LSE |
| ウィンドウズ | armv8.0-a | armv8.0-a + LSE | armv8.0-a | armv8.2-a + RCPC |
x86/x64
3 つのオペレーティング システム (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ターゲットは Windows および Linux 用にx86-64-v3に更新されましたが、Apple では変更されず、AVX、AVX2、BMI1、BMI2、F16C、FMA、LZCNT、およびMOVBE命令セットも含まれます。
| OS | 以前の 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 Preview 1
以前の動作
既定では、.NET は正常に起動し、古いハードウェアで実行されました。 個々のアプリケーションでは、上位のベースラインにオプトインしたり、シナリオのベースラインを引き上げた ハードウェア組み込みを 明示的に使用したりする場合があります。
新しい動作
.NET 11 以降では、.NET は古いハードウェアで実行できず、次のようなメッセージが出力される可能性があります。 (一部のシナリオでは、特定のオペレーティング システムとアーキテクチャの具体的なハードウェア要件を示す、よりわかりやすいメッセージが表示される場合があります)。
現在の CPU に 1 つ以上のベースライン命令セットがありません。
ReadyToRun対応アセンブリの場合、一般的なデバイスの予想されるサポートを満たしていない、サポートされているハードウェアによっては、追加のスタートアップ オーバーヘッドが発生する可能性があります。
破壊的変更の種類
この変更は 動作の変更です。
変更の理由
.NET では、多くの場合、基になるオペレーティング システム (OS) によって設定される最小ハードウェア要件を超える、幅広いハードウェアがサポートされています。 .NET には、JIT シナリオでアクティブに実行されているハードウェアを利用するためのサポートも組み込まれています。 ただし、このサポートにより、コードベースが大幅に複雑になります。特に、まだ使用される可能性が低いはるかに古いハードウェアの場合です。 さらに、AOT ターゲットが既定で必要とする "最低共通分母" を定義します。これにより、一部のドメイン固有のシナリオでは、アプリケーションのパフォーマンスが低下する可能性があります。
最小ベースラインの更新は、コードベースのメンテナンスの複雑さを軽減し、基になる OS の文書化された (および多くの場合に適用される) ハードウェア要件に合わせて行われました。
推奨されるアクション
サポートされなくなったハードウェアを使用している場合は、更新を検討してください。 このようなハードウェアは正式にはサポートされていないため、.NET でサポートされているオペレーティング システムのバージョンでは起動しない可能性があります。
影響を受ける API
この変更は、すべての .NET に影響します。
こちらも参照ください
.NET