Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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.
Zalecana akcja
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.