Minimalne wymagania sprzętowe zostały zaktualizowane

Minimalne wymagania sprzętowe dla .NET 11 zostały zaktualizowane, aby wymagać bardziej nowoczesnych zestawów instrukcji w architekturach x86/x64. Ponadto cele kompilacji ReadyToRun (R2R) dla wersji x86/x64 i Arm64 zostały zaktualizowane w celu skorzystania z nowszych możliwości sprzętowych.

Arm64

W przypadku firmy Apple nie ma żadnych zmian w minimalnych wymaganiach sprzętowych ani sprzęcie docelowym ReadyToRun. Mikroukłady Apple M1 są w przybliżeniu równoważne armv8.5-a i dlatego zapewniają obsługę co najmniej AdvSimd (NEON), CRC, DOTPROD, LSE, RCPC, RCPC2 i RDMA zestawów instrukcji.

W przypadku systemu Linux nie ma żadnych zmian w minimalnym sprzęcie. Platforma .NET nadal obsługuje urządzenia, takie jak Raspberry Pi, które mogą obsługiwać tylko zestaw instrukcji AdvSimd. Element ReadyToRun docelowy został zaktualizowany w celu uwzględnienia LSE zestawu instrukcji, co może spowodować dodatkowe obciążenie jitting po uruchomieniu aplikacji.

W przypadku Windows nie ma żadnych zmian w minimalnym sprzęcie. .NET nadal obsługuje urządzenia armv8.0-a, w tym urządzenia IoT z systemem Windows 10, które nie obsługują zestawu instrukcji LSE. Element ReadyToRun docelowy został zaktualizowany, aby być armv8.2-a + RCPC (zapewnia to obsługę co najmniej AdvSimd, CRC, LSE, RCPC i RDMA), co obejmuje większość sprzętu oficjalnie obsługiwanego. Urządzenia, które nie spełniają tego wymogu, mogą nadal uruchamiać platformę .NET, ale objęte tym ReadyToRun obrazy przechodzą na kompilację JIT.

System operacyjny Poprzednie minimum JIT/AOT Nowe minimum trybu JIT/AOT Poprzedni cel R2R Nowy cel R2R
Jabłko Apple M1 (Brak zmian) Apple M1 (Brak zmian)
Linux armv8.0-a (Brak zmian) armv8.0-a armv8.0-a + LSE
Windows armv8.0-a (Brak zmian) armv8.0-a armv8.2-a + RCPC

x86/x64

W przypadku wszystkich trzech systemów operacyjnych (Apple, Linux i Windows) punkt odniesienia jest aktualizowany z x86-64-v1 do x86-64-v2. Spowoduje to, że sprzęt, który gwarantował tylko CMOV, CX8, SSE i SSE2, teraz dodatkowo będzie gwarantował również CX16, POPCNT, SSE3, SSSE3, SSE4.1 i SSE4.2. Ta gwarancja jest wymagana przez system Windows 11 i przez wszystkie procesory x86/x64 oficjalnie obsługiwane w systemie Windows 10. Obejmuje wszystkie chipy nadal oficjalnie wspierane przez Intel/AMD, podczas gdy ostatnie starsze układy przestały być wspierane około 2013 roku.

Element docelowy ReadyToRun został zaktualizowany dla systemów Windows i Linux, chociaż pozostaje niezmieniony dla Apple, co dodatkowo obejmuje zestawy instrukcji x86-64-v3, AVX, AVX2, BMI1, BMI2, F16C, FMA i LZCNT.

System operacyjny Poprzednie minimum JIT/AOT Nowe minimum trybu JIT/AOT Poprzedni cel R2R Nowy cel R2R
Jabłko x86-64-v1 x86-64-v2 x86-64-v2 (Brak zmian)
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

Wersja wprowadzona

.NET 11 (wersja zapoznawcza 1)

Poprzednie zachowanie

Domyślnie platforma .NET została pomyślnie wprowadzona i działała na starszym sprzęcie. Poszczególne aplikacje mogły zdecydować się na wyższy podstawowy poziom lub jawnie używać instrukcji sprzętowych, które podniosły podstawowy poziom dla swojego scenariusza.

Nowe zachowanie

Począwszy od .NET 11, nie można uruchomić .NET na sprzęcie x86/x64, który nie obsługuje x86-64-v2 zestawu instrukcji i może wyświetlić komunikat podobny do poniższego. (W niektórych scenariuszach można podać bardziej opisowy komunikat, który zawiera listę konkretnych wymagań sprzętowych dla danego systemu operacyjnego i architektury).

Obecnemu procesorowi CPU brakuje jednego lub więcej bazowych zestawów instrukcji.

W przypadku zestawów z obsługą ReadyToRun może wystąpić dodatkowe obciążenie podczas uruchamiania na niektórych obsługiwanych urządzeniach, które nie spełniają oczekiwanych standardów typowego wsparcia.

Typ zmiany przełamującej

Ta zmiana jest zmianą behawioralną.

Przyczyna zmiany

Platforma .NET obsługuje szeroką gamę sprzętu, często powyżej i poza minimalnymi wymaganiami sprzętowymi wprowadzonymi przez bazowy system operacyjny. Platforma .NET ma również wbudowaną obsługę korzystania ze sprzętu, na którym aktywnie działa w scenariuszach JIT. Jednak ta obsługa zwiększa znaczną złożoność bazy kodu, szczególnie w przypadku znacznie starszego sprzętu, który jest mało prawdopodobne, aby nadal był używany. Ponadto definiuje "najniższy wspólny mianownik", na który cele AOT muszą być domyślnie ustawione, co w niektórych scenariuszach specyficznych dla domeny może prowadzić do obniżenia wydajności aplikacji.

Aktualizacja minimalnej linii bazowej x86/x64 została podjęta w celu zmniejszenia złożoności konserwacji bazy kodu i lepszego dopasowania do udokumentowanych (i często wymuszanych) wymagań sprzętowych bazowego systemu operacyjnego. Minimalny poziom bazowy dla Arm64 pozostaje bez zmian, dzięki czemu platforma .NET nadal obsługuje sprzęt obsługiwany przez system Windows 10 IoT.

Jeśli używasz sprzętu x86/x64, który nie jest już obsługiwany, rozważ aktualizację. Taki sprzęt jest oficjalnie nieobsługiwany i może nie być uruchamiany w wersjach systemu operacyjnego obsługiwanych przez platformę .NET.

Nie jest wymagana żadna akcja dla obsługiwanego sprzętu Arm64, który nie spełnia nowego ReadyToRun celu, ale aplikacje mogą mieć dodatkowe obciążenie uruchamiania, gdy obrazy, których dotyczy problem ReadyToRun , wracają do kompilacji JIT.

Interfejsy API, których dotyczy problem

Ta zmiana ma wpływ na całą platformę .NET.

Zobacz także