Lägsta maskinvarukrav har uppdaterats

Minimikraven på maskinvara för .NET 11 har uppdaterats för att kräva modernare instruktionsuppsättningar för x86/x64-arkitekturer. Dessutom har ReadyToRun-kompileringsmålen (R2R) för x86/x64 och Arm64 uppdaterats för att dra nytta av nyare maskinvarufunktioner.

Arm64

För Apple sker ingen ändring av minimimaskinvaran ReadyToRun eller målet. Chipsen Apple M1 är ungefär likvärdiga armv8.5-a med och ger därför stöd för åtminstone AdvSimd (NEON), CRC, DOTPROD, LSE, RCPC, RCPC2och RDMA instruktionsuppsättningar.

För Linux sker ingen ändring av den minsta maskinvaran. .NET fortsätter att stödja enheter som Raspberry Pi som kanske endast stöder instruktionsuppsättningen AdvSimd . Målet ReadyToRun har uppdaterats för att inkludera instruktionsuppsättningen LSE, vilket kan leda till ytterligare jittingkostnader om du startar ett program.

För Windows sker ingen ändring av minimimaskinvaran. .NET fortsätter att stödja armv8.0-a enheter, inklusive Windows 10 IoT-enheter som inte tillhandahåller instruktionsuppsättningenLSE. Målet ReadyToRun har uppdaterats till armv8.2-a + RCPC (detta ger stöd för minst AdvSimd, CRC, LSE, RCPC, och RDMA), vilket täcker majoriteten av maskinvaran som stöds officiellt. Enheter som inte uppfyller det här målet kan fortfarande köra .NET, men berörda ReadyToRun bilder återgår till JIT-kompilering.

OS Föregående JIT/AOT minimum Ny JIT/AOT minimum Föregående R2R-mål Nytt R2R-mål
Äpple Apple M1 (Ingen ändring) Apple M1 (Ingen ändring)
Linux armv8.0-a (Ingen ändring) armv8.0-a armv8.0-a + LSE
Windows armv8.0-a (Ingen ändring) armv8.0-a armv8.2-a + RCPC

x86/x64

För alla tre operativsystemen (Apple, Linux och Windows) uppdateras baslinjen från x86-64-v1 till x86-64-v2. Detta ändrar maskinvaran från att endast garantera CMOV, CX8, SSE och SSE2 till att även garantera CX16, POPCNT, SSE3, SSSE3, SSE4.1 och SSE4.2. Den här garantin krävs av Windows 11 och av alla x86/x64-processorer som stöds officiellt i Windows 10. Den innehåller alla chips som fortfarande stöds officiellt av Intel/AMD, där de sista äldre chipsen har gått ur support runt 2013.

Målet ReadyToRun har uppdaterats till x86-64-v3 för Windows och Linux, medan det förblir oförändrat för Apple, vilket dessutom innehåller instruktionsuppsättningarna AVX, AVX2, BMI1, BMI2, F16C, FMALZCNToch MOVBE .

OS Föregående JIT/AOT minimum Ny JIT/AOT minimum Föregående R2R-mål Nytt R2R-mål
Äpple x86-64-v1 x86-64-v2 x86-64-v2 (Ingen ändring)
Linux x86-64-v1 x86-64-v2 x86-64-v2 x86-64-v3
Windows x86-64-v1 x86-64-v2 x86-64-v2 x86-64-v3

Version lanserad

.NET 11 Förhandsversion 1

Tidigare beteende

Som standard har .NET startats och körts på äldre maskinvara. Enskilda program kan ha valt högre baslinjer eller uttryckligen använt maskinvaruinbyggda objekt som höjde baslinjen för deras scenario.

Nytt beteende

Från och med .NET 11 kan .NET inte köras på x86/x64-maskinvara som inte stöder instruktionsuppsättningen x86-64-v2 och kan skriva ut ett meddelande som liknar följande. (I vissa scenarier kan ett mer beskrivande meddelande tillhandahållas som visar de konkreta maskinvarukraven för ett visst operativsystem och en viss arkitektur.)

Den aktuella processorn saknar en eller flera av baslinjeinstruktionsuppsättningarna.

För ReadyToRun-kompatibla sammansättningar kan det finnas ytterligare startkostnader för viss maskinvara som stöds och som inte uppfyller det förväntade stödet för en typisk enhet.

Typ av brytande ändring

Den här ändringen är en beteendeförändring.

Orsak till ändring

.NET har stöd för ett brett utbud av maskinvara, ofta utöver de minimikrav på maskinvara som det underliggande operativsystemet (OS) ställer. .NET har också inbyggt stöd för att dra nytta av den maskinvara som det aktivt körs på för JIT-scenarier. Det här stödet lägger dock till betydande komplexitet i kodbasen, särskilt för mycket äldre maskinvara som sannolikt inte fortfarande används. Dessutom definierar den en "minsta gemensamma nämnare" som AOT-mål måste vara standard för, vilket i vissa domänspecifika scenarier kan leda till lägre prestanda för program.

Uppdateringen av den minsta baslinjen x86/x64 gjordes för att minska underhållskomplexiteten för kodbasen och för att bättre anpassa till de dokumenterade (och ofta framtvingade) maskinvarukraven för det underliggande operativsystemet. Arm64-minimibaslinjen förblir oförändrad så att .NET fortsätter att stödja maskinvara som stöds av Windows 10 IoT.

Om du använder x86/x64-maskinvara som inte längre stöds kan du överväga att uppdatera. Sådan maskinvara saknar officiellt stöd och kanske inte startar på operativsystemversioner som stöds av .NET.

Ingen åtgärd krävs för arm64-maskinvara som stöds som inte uppfyller det nya ReadyToRun målet, men program kan ha ytterligare startkostnader när berörda ReadyToRun avbildningar återgår till JIT-kompilering.

Berörda API:er

Den här ändringen påverkar hela .NET.

Se även