Requisitos mínimos de hardware atualizados

Os requisitos mínimos de hardware para .NET 11 foram atualizados para exigir conjuntos de instruções mais modernos em arquiteturas x86/x64. Além disso, os destinos de compilação ReadyToRun (R2R) para x86/x64 e Arm64 foram atualizados para aproveitar os recursos de hardware mais recentes.

Arm64

Para a Apple, não há nenhuma alteração no hardware mínimo ou no ReadyToRun alvo. Os Apple M1 chips são aproximadamente equivalentes a armv8.5-a e, portanto, dão suporte a pelo menos os conjuntos de instruções AdvSimd (NEON), CRC, DOTPROD, LSE, RCPC, RCPC2, e RDMA.

Para Linux, não há nenhuma alteração no hardware mínimo. O .NET continua a dar suporte a dispositivos como Raspberry Pi que só podem fornecer suporte para o AdvSimd conjunto de instruções. O alvo ReadyToRun foi atualizado para incluir o conjunto de instruções LSE o que pode resultar em sobrecarga adicional de JIT ao executar um aplicativo.

Para Windows, não há nenhuma alteração no hardware mínimo. .NET continua a oferecer suporte a dispositivos armv8.0-a, incluindo dispositivos IoT com Windows 10 que não oferecem suporte ao conjunto de instruções LSE. O ReadyToRun alvo foi atualizado para ser armv8.2-a + RCPC (isso fornece suporte para, pelo menos, AdvSimd, CRC, LSE, RCPC e RDMA), que abrange a maioria do hardware com suporte oficial. Os dispositivos que não atendem a esse requisito ainda podem executar o .NET, mas as imagens ReadyToRun afetadas passam a usar a compilação JIT.

Sistema operacional Mínimo de JIT/AOT anterior Novo mínimo JIT/AOT Destino R2R anterior Novo destino R2R
Maçã Apple M1 (Nenhuma alteração) Apple M1 (Nenhuma alteração)
Linux armv8.0-a (Nenhuma alteração) armv8.0-a armv8.0-a + LSE
Windows armv8.0-a (Nenhuma alteração) armv8.0-a armv8.2-a + RCPC

x86/x64

Para todos os três sistemas operacionais (Apple, Linux e Windows), a linha de base é atualizada de x86-64-v1 para x86-64-v2. Isso altera o hardware de apenas garantir CMOV, CX8, SSE, SSE2 para também garantir CX16, POPCNT, SSE3, SSSE3, SSE4.1, e SSE4.2. Essa garantia é exigida pelo Windows 11 e por todas as CPUs x86/x64 com suporte oficial no Windows 10. Ele inclui todos os chips ainda oficialmente suportados pela Intel/AMD, com os últimos chips mais antigos tendo perdido suporte por volta de 2013.

O alvo ReadyToRun foi atualizado para x86-64-v3 no Windows e no Linux, enquanto permanece inalterado para a Apple, que também inclui os conjuntos de instruções AVX, AVX2, BMI1, BMI2, F16C, FMA, LZCNT e MOVBE.

Sistema operacional Mínimo de JIT/AOT anterior Novo mínimo JIT/AOT Destino R2R anterior Novo destino R2R
Maçã x86-64-v1 x86-64-v2 x86-64-v2 (Nenhuma alteração)
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

Versão introduzida

.NET 11 Versão Prévia 1

Comportamento anterior

Por padrão, o .NET foi iniciado e executado com êxito em hardware mais antigo. Aplicativos individuais podem ter optado por linhas de base mais altas ou usaram explicitamente intrínsecos de hardware que elevaram a linha de base para seu cenário.

Novo comportamento

A partir do .NET 11, .NET falha ao executar em hardware x86/x64 que não dá suporte ao x86-64-v2 conjunto de instruções e pode imprimir uma mensagem semelhante à seguinte. (Em alguns cenários, uma mensagem mais descritiva pode ser fornecida que lista os requisitos concretos de hardware para um determinado sistema operacional e arquitetura.)

A CPU atual está sem um ou mais dos conjuntos de instruções de base.

Para assemblies compatíveis com ReadyToRun, pode haver uma sobrecarga adicional de inicialização em alguns hardwares suportados que não atendam às expectativas de suporte para um dispositivo típico.

Tipo de mudança disruptiva

Essa alteração é uma mudança comportamental.

Motivo da alteração

O .NET dá suporte a uma ampla gama de hardware, muitas vezes acima e além dos requisitos mínimos de hardware colocados em prática pelo sistema operacional subjacente (SO). O .NET também tem suporte interno para aproveitar o hardware em que está sendo executado ativamente para cenários JIT. No entanto, esse suporte adiciona complexidade significativa à base de código, especialmente para hardwares muito mais antigos que é improvável que ainda estejam em uso. Além disso, define um "mínimo denominador comum" que os alvos AOT devem usar por padrão, o que pode, em alguns cenários específicos, levar à redução do desempenho dos aplicativos.

A atualização para a linha de base mínima x86/x64 foi feita para reduzir a complexidade de manutenção da base de código e para se alinhar melhor aos requisitos de hardware documentados (e muitas vezes impostos) do sistema operacional subjacente. A linha de base mínima do Arm64 permanece inalterada para que .NET continue a dar suporte ao hardware compatível com Windows 10 IoT.

Se você estiver usando o hardware x86/x64 que não tem mais suporte, considere a atualização. Esse hardware está oficialmente sem suporte e pode não ser inicializado em versões do sistema operacional compatíveis com o .NET.

Nenhuma ação é necessária para o hardware Arm64 compatível que não atenda ao novo alvo ReadyToRun, mas os aplicativos podem ter sobrecarga adicional de inicialização quando as imagens ReadyToRun afetadas recorrerem à compilação JIT.

APIs afetadas

Essa alteração afeta todo o .NET.

Consulte também