Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
La configuration matérielle minimale requise pour .NET 11 a été mise à jour pour exiger des ensembles d’instructions plus modernes sur les architectures x86/x64. En outre, les cibles de compilation ReadyToRun (R2R) pour x86/x64 et Arm64 ont été mises à jour pour tirer parti des fonctionnalités matérielles plus récentes.
Arm64
Pour Apple, il n’y a aucune modification du matériel minimal ou de la ReadyToRun cible. Les puces Apple M1 sont approximativement équivalentes à armv8.5-a et fournissent donc la prise en charge d’au moins des jeux d’instructions AdvSimd (NEON), CRC, DOTPROD, LSE, RCPC, RCPC2, et RDMA.
Pour Linux, il n’existe aucune modification du matériel minimal. .NET continue de prendre en charge des appareils tels que Raspberry Pi qui peuvent uniquement fournir la prise en charge du jeu d’instructions AdvSimd . La cible ReadyToRun a été mise à jour pour inclure le jeu d’instructions LSE, ce qui peut entraîner une surcharge JIT supplémentaire au lancement d’une application.
Pour Windows, aucun changement n'est apporté au matériel minimal. .NET continue de prendre en charge les appareils armv8.0-a, y compris les appareils Windows 10 IoT qui ne prennent pas en charge le jeu d’instructions LSE. La ReadyToRun cible a été mise à jour pour être armv8.2-a + RCPC (cela fournit la prise en charge d’au moins AdvSimd, CRC, LSE, RCPCet RDMA), qui couvre la majorité du matériel officiellement pris en charge. Les appareils qui n’atteignent pas cet objectif peuvent toujours exécuter .NET, mais les images ReadyToRun concernées basculent vers une compilation JIT.
| Système d'exploitation | Minimum précédent JIT/AOT | Nouveau JIT/AOT minimum | Cible R2R précédente | Nouvelle cible R2R |
|---|---|---|---|---|
| Pomme | Apple M1 | (Aucune modification) | Apple M1 | (Aucune modification) |
| Linux | armv8.0-a | (Aucune modification) | armv8.0-a | armv8.0-a + LSE |
| Fenêtres | armv8.0-a | (Aucune modification) | armv8.0-a | armv8.2-a + RCPC |
x86/x64
Pour les trois systèmes d’exploitation (les Apple, les Linux et les Windows), la base de référence est mise à jour de x86-64-v1 à x86-64-v2. Cela modifie le matériel pour passer de garantir uniquement CMOV, CX8, SSE, et SSE2 à garantir également CX16, POPCNT, SSE3, SSSE3, SSE4.1, et SSE4.2. Cette garantie est requise par Windows 11 et par tous les processeurs x86/x64 officiellement pris en charge sur Windows 10. Il inclut toutes les puces toujours officiellement prises en charge par Intel/AMD, avec les dernières plus anciennes puces ayant disparu de la prise en charge vers 2013.
La ReadyToRun cible a été mise à jour à x86-64-v3 pour Windows et Linux, alors qu’elle reste inchangée pour Apple, qui inclut également les ensembles d’instructions AVX, AVX2, BMI1, BMI2, F16C, FMA, LZCNT, et MOVBE.
| Système d'exploitation | Minimum précédent JIT/AOT | Nouveau JIT/AOT minimum | Cible R2R précédente | Nouvelle cible R2R |
|---|---|---|---|---|
| Pomme | x86-64-v1 | x86-64-v2 | x86-64-v2 | (Aucune modification) |
| Linux | x86-64-v1 | x86-64-v2 | x86-64-v2 | x86-64-v3 |
| Fenêtres | x86-64-v1 | x86-64-v2 | x86-64-v2 | x86-64-v3 |
Version introduite
.NET 11 Preview 1
Comportement précédent
Par défaut, .NET a correctement lancé et exécuté sur du matériel plus ancien. Les applications individuelles peuvent avoir choisi des bases de référence plus élevées ou utiliser explicitement des fonctions intrinsèques matérielles qui ont augmenté la base de référence pour leur scénario.
Nouveau comportement
À compter de .NET 11, .NET ne parvient pas à s'exécuter sur du matériel x86/x64 qui ne prend pas en charge le x86-64-v2 jeu d'instructions et peut imprimer un message similaire à ce qui suit. (Dans certains scénarios, un message plus descriptif peut être fourni qui répertorie les exigences matérielles concrètes d’un système d’exploitation et d’une architecture donnés.)
L’UC actuelle ne dispose pas d’un ou plusieurs des ensembles d’instructions de base.
Pour les assemblages compatibles ReadyToRun, il peut y avoir une surcharge supplémentaire lors du démarrage sur certains matériels pris en charge qui ne satisfont pas les exigences de support attendues pour un appareil standard.
Type de changement cassant
Ce changement est un changement de comportement.
Raison de la modification
.NET prend en charge un large éventail de matériels, souvent au-delà de la configuration matérielle minimale requise par le système d’exploitation sous-jacent. .NET dispose également d’une prise en charge intégrée pour tirer parti du matériel sur lequel il s’exécute activement pour les scénarios JIT. Toutefois, cette prise en charge ajoute une complexité significative à la base de code, en particulier pour le matériel beaucoup plus ancien qui n’est pas encore en cours d’utilisation. En outre, il définit un « dénominateur commun le plus bas » auquel les cibles AOT doivent être par défaut susceptibles, dans certains scénarios spécifiques au domaine, de réduire les performances pour les applications.
La mise à jour de la base de référence minimale x86/x64 a été effectuée pour réduire la complexité de maintenance du codebase et mieux s’aligner sur les exigences matérielles documentées (et souvent appliquées) du système d’exploitation sous-jacent. La base de référence minimale Arm64 reste inchangée afin que .NET continue de prendre en charge le matériel pris en charge par Windows 10 IoT.
Action recommandée
Si vous utilisez du matériel x86/x64 qui n’est plus pris en charge, envisagez de mettre à jour. Ce matériel est officiellement hors prise en charge et peut ne pas démarrer sur les versions du système d’exploitation prises en charge par .NET.
Aucune action n’est requise pour le matériel Arm64 pris en charge qui n’atteint pas la nouvelle cible ReadyToRun, mais les applications peuvent subir un surcoût au démarrage lorsque les images affectées ReadyToRun basculent vers une compilation JIT.
API affectées
Cette modification affecte l’ensemble de .NET.