Requisitos mínimos de hardware actualizados

Los requisitos mínimos de hardware para .NET 11 se han actualizado para requerir conjuntos de instrucciones más modernos en arquitecturas x86/x64. Además, los destinos de compilación ReadyToRun (R2R) para x86/x64 y Arm64 se han actualizado para aprovechar las funcionalidades de hardware más recientes.

Arm64

Para Apple, no hay ningún cambio en el hardware mínimo o el ReadyToRun destino. Los Apple M1 chips son aproximadamente equivalentes a armv8.5-a y, por lo tanto, proporcionan compatibilidad con al menos los AdvSimd conjuntos de instrucciones (NEON), CRC, DOTPROD, LSE, RCPC, RCPC2y RDMA .

Para Linux, no hay ningún cambio en el hardware mínimo. .NET sigue admitiendo dispositivos como Raspberry Pi que solo pueden proporcionar compatibilidad con el AdvSimd conjunto de instrucciones. El ReadyToRun objetivo se ha actualizado para incluir el LSE conjunto de instrucciones, lo que podría dar lugar a una sobrecarga de Jitting adicional al iniciar una aplicación.

Para Windows, no hay ningún cambio en el hardware mínimo. .NET sigue admitiendo armv8.0-a dispositivos, incluidos Windows 10 dispositivos IoT que no proporcionan el LSE conjunto de instrucciones. El ReadyToRun objetivo se ha actualizado para que sea armv8.2-a + RCPC (esto proporciona soporte para al menos AdvSimd, CRC, LSE, RCPC, y RDMA), que cubre la mayoría del hardware admitido oficialmente. Los dispositivos que no cumplen este objetivo aún pueden ejecutar .NET, pero las imágenes ReadyToRun afectadas recurren a la compilación JIT.

Sistema operativo JIT/AOT mínimo anterior Nuevo JIT/AOT mínimo Destino de R2R anterior Nuevo destino de R2R
Manzana Apple M1 (Sin cambios) Apple M1 (Sin cambios)
Linux armv8.0-a (Sin cambios) armv8.0-a armv8.0-a + LSE
Windows armv8.0-a (Sin cambios) armv8.0-a armv8.2-a + RCPC

x86/x64

Para los tres sistemas operativos (Apple, Linux y Windows), la línea base se actualiza de x86-64-v1 a x86-64-v2. Esto cambia el hardware de solo garantizar CMOV, CX8, SSE y SSE2 a también garantizar CX16, POPCNT, SSE3, SSSE3, SSE4.1 y SSE4.2. Esta garantía es necesaria para Windows 11 y para todas las CPU x86/x64 compatibles oficialmente con Windows 10. Incluye todos los chips aún admitidos oficialmente por Intel/AMD, con los últimos chips más antiguos que han salido de soporte alrededor de 2013.

El ReadyToRun objetivo se ha actualizado a x86-64-v3 para Windows y Linux, mientras que permanece sin cambios para Apple, que además incluye los conjuntos de instrucciones AVX, AVX2, BMI1, BMI2, F16C, FMA, LZCNT y MOVBE.

Sistema operativo JIT/AOT mínimo anterior Nuevo JIT/AOT mínimo Destino de R2R anterior Nuevo destino de R2R
Manzana x86-64-v1 x86-64-v2 x86-64-v2 (Sin cambios)
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

Versión introducida

.NET 11 versión preliminar 1

Comportamiento anterior

De forma predeterminada, .NET se inició y ejecutó correctamente en hardware anterior. Es posible que las aplicaciones individuales hayan optado por tener líneas base superiores o hayan usado explícitamente intrínsecos de hardware que elevaron la línea base para su escenario.

Nuevo comportamiento

A partir de .NET 11, .NET no se puede ejecutar en hardware x86/x64 que no admite el x86-64-v2 conjunto de instrucciones y podría imprimir un mensaje similar al siguiente. (En algunos escenarios, puede proporcionarse un mensaje más descriptivo que muestre los requisitos de hardware concretos para un sistema operativo y una arquitectura determinados).

La CPU actual carece de uno o más de los conjuntos de instrucciones de línea base.

En el caso de ensamblados capaces de ReadyToRun, puede haber una sobrecarga de inicio adicional en algún hardware compatible que no cumpla con el soporte esperado para un dispositivo típico.

Tipo de cambio disruptivo

Este es un cambio de comportamiento.

Motivo del cambio

.NET admite una amplia gama de hardware, a menudo por encima y más allá de los requisitos mínimos de hardware establecidos por el sistema operativo (SO) subyacente. .NET también tiene compatibilidad integrada para aprovechar el hardware en el que se ejecuta activamente para escenarios JIT. Sin embargo, esta compatibilidad agrega una complejidad significativa al código base, especialmente para hardware mucho más antiguo que es poco probable que todavía esté en uso. Además, define un "denominador común más bajo" al que los destinos de AOT deben tener como valor predeterminado, lo que puede, en algunos escenarios específicos del dominio, dar lugar a una reducción del rendimiento de las aplicaciones.

La actualización a la línea base mínima x86/x64 se realizó para reducir la complejidad de mantenimiento del código base y para alinearse mejor con los requisitos de hardware documentados (y a menudo aplicados) del sistema operativo subyacente. La línea base mínima arm64 permanece sin cambios para que .NET siga admitiendo hardware compatible con Windows 10 IoT.

Si usa hardware x86/x64 que ya no se admite, considere la posibilidad de actualizar. Este hardware no es compatible oficialmente y es posible que no arranque en versiones del sistema operativo compatibles con .NET.

No se requiere ninguna acción para el hardware Arm64 compatible que no cumple el nuevo objetivo ReadyToRun, pero es posible que las aplicaciones tengan una sobrecarga de inicio adicional cuando las imágenes afectadas ReadyToRun recurran a la compilación JIT.

Las APIs afectadas

Este cambio afecta a todo .NET.

Consulte también