Минимальные требования к оборудованию обновлены

Минимальные требования к оборудованию для .NET 11 были обновлены, чтобы требовать более современных наборов инструкций в архитектуре x86/x64 и Arm64. Кроме того, целевые объекты компиляции ReadyToRun (R2R) были обновлены, чтобы воспользоваться преимуществами новых возможностей оборудования.

Arm64

Для Apple нет изменений в минимальном оборудовании или целевом объекте ReadyToRun . Apple M1 Микросхемы примерно эквивалентны armv8.5-a и поэтому обеспечивают поддержку по крайней мере следующих наборов инструкций: AdvSimd (NEON), CRC, DOTPROD, LSE, RCPC, RCPC2 и RDMA.

Для Linux минимальные требования к оборудованию не изменятся. .NET продолжает поддерживать такие устройства, как Raspberry Pi, которые могут обеспечить поддержку только набора инструкций AdvSimd . Целевой ReadyToRun объект был обновлен, чтобы включить LSE набор инструкций, что может привести к дополнительным затратам на jitting при запуске приложения.

Базовый стандарт для Windows обновляется, чтобы требовать набор инструкций LSE. Это требуется Windows 11 и всеми ЦП Arm64 официально поддерживаемыми Windows 10. Кроме того, он соответствует Arm SBSA требованиям к (базовой системной архитектуре сервера). Таргет ReadyToRun был обновлен до armv8.2-a + RCPC (это обеспечивает поддержку по крайней мере AdvSimd, CRC, LSE, RCPC и RDMA), что охватывает большинство официально поддерживаемого оборудования.

OS Предыдущий JIT/AOT минимум Новый JIT/AOT минимум Предыдущий целевой объект R2R Новый целевой объект R2R
Яблоко Apple M1 (Нет изменений) Apple M1 (Нет изменений)
Линукс armv8.0-a (Нет изменений) armv8.0-a armv8.0-a + LSE
Виндоус armv8.0-a armv8.0-a + LSE armv8.0-a armv8.2-a + RCPC

x86/x64

Для всех трех операционных систем (Apple, Linux и Windows) базовые показатели обновляются начиная с x86-64-v1x86-64-v2. Это изменение оборудования, при котором гарантируется не только CMOV, CX8, SSE, и SSE2, но также CX16, POPCNT, SSE3, SSSE3, SSE4.1 и SSE4.2. Эта гарантия требуется Windows 11 и всеми ЦП x86/x64 официально поддерживаемыми в Windows 10. Он включает все чипы, которые всё ещё официально поддерживаются Intel/AMD, при этом последние старые чипы потеряли поддержку около 2013 года.

Целевой ReadyToRun объект был обновлен до x86-64-v3 Windows и Linux, в то время как он остается неизменным для Apple, который также включает AVXнаборы инструкций , AVX2BMI1BMI2F16CFMALZCNTMOVBE

OS Предыдущий JIT/AOT минимум Новый JIT/AOT минимум Предыдущий целевой объект R2R Новый целевой объект R2R
Яблоко x86-64-v1 x86-64-v2 x86-64-v2 (Нет изменений)
Линукс x86-64-v1 x86-64-v2 x86-64-v2 x86-64-v3
Виндоус x86-64-v1 x86-64-v2 x86-64-v2 x86-64-v3

Представленная версия

.NET 11( предварительная версия 1)

Предыдущее поведение

По умолчанию .NET успешно запускался и работал на более старом оборудовании. Отдельные приложения, возможно, выбрали более высокие уровни или явно использовали аппаратные встроенные компоненты, которые повысили уровень для их сценария.

Новое поведение

Начиная с .NET 11, .NET не работает на более старом оборудовании и может распечатать сообщение, аналогичное приведенному ниже. (В некоторых сценариях может быть предоставлено более описательное сообщение, в котором перечислены конкретные требования к оборудованию для данной операционной системы и архитектуры.)

Текущему ЦП не хватает одного или нескольких основных наборов инструкций.

Для сборок с поддержкой ReadyToRun может возникнуть дополнительное время запуска на некотором поддерживаемом оборудовании, не имеющем ожидаемой поддержки, как типичное устройство.

Тип разрушающего изменения

Это изменение поведения.

Причина изменения

.NET поддерживает широкий спектр оборудования, часто выше и выше минимальных требований к оборудованию, установленным базовой операционной системой (ОС). .NET также имеет встроенную поддержку использования оборудования, в котором он активно работает для сценариев JIT. Однако эта поддержка значительно усложняет базу кода, особенно для гораздо более старого оборудования, которое вряд ли будет использоваться. Кроме того, он определяет "самый низкий общий знаменатель", к которому по умолчанию должны стремиться целевые объекты AOT, что в некоторых специализированных сценариях может привести к снижению производительности для приложений.

Обновление до минимального базового плана было сделано, чтобы снизить сложность обслуживания базы кода и лучше соответствовать документированному (и часто принудительному) требованиям к оборудованию базовой ОС.

Если вы используете оборудование, которое больше не поддерживается, рассмотрите возможность обновления. Такое оборудование официально не поддерживается и может не загружаться в версиях операционной системы, поддерживаемых .NET.

Затронутые API

Это изменение влияет на все .NET.

См. также