Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
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.
Rekommenderad åtgärd
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.