Termin x86-64v3 po raz kolejny stał się przedmiotem dyskusji wśród użytkowników Linuksa, wywołując ciekawość i pytania o jego znaczenie dla platformy. Ale co to jest, dlaczego ma to znaczenie dla Linuksa i o co to całe zamieszanie? Poniżej znajdziesz wszystko, co musisz wiedzieć o x86-64v3.
Krótki przegląd historii mikroarchitektury
Historia zestawu instrukcji x86 rozpoczęła się około 39 lat temu wraz z wprowadzeniem na rynek procesora Intel 80386, powszechnie określanego jako 386. Był to kluczowy moment w historii współczesnych komputerów stacjonarnych i serwerów. Wprowadzony na rynek w 1985 roku procesor 386 był pierwszym 32-bitowym procesorem Intela i był wyposażony w pełną jednostkę zarządzania pamięcią, umożliwiającą uruchamianie systemów operacyjnych wykorzystujących pamięć wirtualną. Jednak ewolucja technologii x86 nie zatrzymała się na 386. Z biegiem czasu ten starszy układ, jego mikroarchitektura i instrukcje zostały wycofane. Debian Linux zaprzestał obsługi systemu 386 w 2005 r. i całkowicie go usunął w 2007 r. Jądro Linuksa poszło w jego ślady w 2012 r., pomimo pierwotnego rozwoju Linuksa na maszynach 386 i 486. Modele 586, 686 i tak dalej podążały za swoimi poprzednikami, które później nazwano Pentium, Pentium II i tak dalej. Każda nowa wersja wprowadzała dodatkowe instrukcje do zestawu instrukcji x86 i nowe rozszerzenia, takie jak MMX i SSE. Ostatecznie popularne systemy operacyjne zaczęły całkowicie wycofywać obsługę 32-bitowego systemu x86, rozpoczynając erę 64-bitową. Na przykład Windows 11 jest wyłącznie 64-bitowy, Ubuntu zaprzestał obsługi 32-bitowych komputerów PC w 2018 r., a macOS przeszedł na pełną wersję 64-bitową w 2011 r. x86-64v3 zasadniczo dodaje AVX2, MOVBE, FMA i kilka dodatkowych instrukcji manipulacji bitami. Jednak nadejście ery 64-bitowej nie oznaczało końca postępu dla x86. Pierwszym kamieniem milowym było wprowadzenie podstawowego zestawu instrukcji AMD64 x86-64 z MMX, SSE i SSE2. Było to zasadniczo wykorzystywane w rodzinie procesorów AMD K8 z 2003 roku i zapewniało kompatybilność z pierwszymi EMT64T — 64-bitowymi procesorami Intela. Krótko mówiąc, procesory AMD jako pierwsze zostały wypuszczone w wersji 64-bitowej i to one zdefiniowały architekturę x86-64-bitową. Następna ewolucja tego podstawowego zestawu instrukcji jest określana jako x86-64v2, która obejmuje SSE3 , SSE4.1 i SSE4.2. Odpowiada to głównym procesorom z lat 2008–2011, takim jak AMD Bulldozer i Intel Nehalem. Od maja 2023 r. Red Hat Enterprise Linux 9 zaprzestał obsługi starszych podstawowych procesorów x86-64-bitowych, wymagając zamiast tego obsługi procesorów x86-64v2. Pod koniec 2023 r. openSUSE Tumbleweed również rozpoczęło przejście na procesory w wersji 2. SUSE Linux Enterprise Server zaleca wersję 2 w celu uzyskania optymalnej wydajności i może w przyszłości zaprzestać obsługi starszych procesorów.
Co to jest x86-64v3?
Oliver Cragg / Android Authorityx86-64v3 zasadniczo dodaje instrukcje wektorowe do AVX2, MOVBE, FMA i kilka dodatkowych instrukcji manipulacji bitami. AVX2, znany również jako instrukcje Haswell, rozszerza się do oryginalnego zestawu instrukcji AVX wprowadzonego w mikroarchitekturze Haswell firmy Intel. Instrukcja MOVBE pozwala na szybką konwersję do Little-endian i Big-Endian sprzętowo poprzez zamianę bajtów podczas odczytu z pamięci lub zapisu do pamięci. Instrukcja FMA (fusion multiply-add) łączy mnożenie i dodawanie w jedną operację, która oblicza wynik pośredni ze skończoną precyzją. Jest to szczególnie przydatne w grach, operacjach na matrycy i aplikacjach sieci neuronowych. x86v3 został po raz pierwszy zaimplementowany w procesorach Intel Haswell pierwszej generacji w 2013 r., a AMD wdrożyło go w 2015 r. wraz z mikroarchitekturą Excavator. Jednak linia produktów Intel Atom dodała obsługę wersji 3 z mikroarchitekturą Gracemont dopiero w 2021 r. Mimo to Intel w dalszym ciągu wypuszczał procesory Atom bez AVX i AVX2, w tym linię Parker Ridge w 2022 r. i niektóre warianty Elkhart Lake w 2023 r. Dlatego właśnie wersja 3 powoli stał się nowym punktem odniesienia, ponieważ nie wszystkie procesory Intel go obsługują, co sprawia, że jego mandat jest problematyczny. Są to jednak procesory Atom, a nie procesory serwerowe. Dlatego nie gwarantuje się obsługi wersji 3 i należy ją sprawdzić dla każdego konkretnego procesora. Warto również wspomnieć, że na platformach Intel Skylake i AMD Zen 4 wprowadzono wersję x86-64v4, która dodaje AVX-512. Aby sprawdzić, czy Twój procesor obsługuje architekturę x86-64, użyj narzędzia poziomu x86-64 dostępnego na GitHubie lub w witrynie Polecenie ld-linux w systemie Ubuntu w innych dystrybucjach. Oto przykładowy ciąg dla Ubuntu:/usr/lib64/ld-linux-x86-64.so.2 –helpTo wyświetli listę i wskaże, czy obsługuje v2, v3 i v4.
Dlaczego wszyscy mówią o x86-64v3?
Edgar Cervantes / Android Authority Szum wynika przede wszystkim z przejścia Red Hat Linux Enterprise Linux 10 na wersję bazową v3. Gentoo oferuje teraz pakiety v3, a istnieją eksperymentalne kompilacje Ubuntu Server wykorzystujące v3. Zasadniczo oznacza to, że podczas kompilacji używają odpowiednich flag kompilatora, aby zapewnić, że AVX2 będzie mógł zostać użyty w razie potrzeby, ale wymaga to wsparcia sprzętowego. Różne dystrybucje Linuksa będą udostępniać tę obsługę na różnych etapach. Na przykład NixOS przejdzie na wersję 2 w 2024 r., a następnie na wersję 3 do 2027 r. Porównania dystrybucji Linuksa skompilowanych z wersją podstawową lub wersją 2 z dystrybucjami z wersją 3 pokazują różne wyniki wydajności. W niektórych przypadkach następuje wzrost wydajności, podczas gdy w innych następuje spadek wydajności. Jest to dojrzała technologia dotycząca flag kompilatora i kodu tworzonego przez kompilator dla różnych przypadków użycia. To, że dystrybucja wymaga określonego poziomu mikroarchitektury, nie oznacza, że sam Linux tego wymaga. Należy jednak pamiętać, że to, że dystrybucja wymaga określonego poziomu mikroarchitektury, nie oznacza, że sam Linux tego wymaga. Na przykład 32-bitowe dystrybucje Linuksa są nadal dostępne. Dlatego zawsze możesz znaleźć wersję dystrybucji Linuksa, która będzie pasować do Twojego konkretnego sprzętu, zwłaszcza jeśli masz starszy komputer. Skupiamy się tutaj na tym, co robią wiodące i najpopularniejsze dystrybucje. Oczywiście, gdyby jądro Linuksa porzuciło obsługę określonego poziomu mikroarchitektury, tak jak miało to miejsce w przypadku modelu 386, byłaby to inna sprawa. Jednak nie jesteśmy jeszcze na tym etapie. Wreszcie dotyczy to tylko 64-bitowych procesorów do komputerów stacjonarnych x86 firm Intel lub AMD. Nie dotyczy to np. procesorów Arm, które można znaleźć w Raspberry Pi lub w smartfonie. Co więcej, system Windows 11 nakazał już użycie nowoczesnych procesorów, co wymagało procesora Intel Core lub Zen 2 ósmej generacji do oficjalnego działania systemu Windows 11. Uwagi