Czy jest jakieś 64-bitowe jądro dla Raspberry Pi 3? Rozejrzałem się i ze źródeł sprawdzam oficjalną stronę i tam wymienione są następujące jądra:
- NOOBS - to jest instalator, sam system operacyjny nie ma, prawda?
- Rapsbian - tylko jedno pobranie, więc zakładam 32-bitowy kompatybilny ze wszystkimi wersjami Pi
- Ubuntu MATE - aarch32 (ARMv7)
- Ubuntu Core Ubuntu - wydaje się tylko 32-bitowy
- OSMC - te same pliki do pobrania dla „Raspberry Pi 2/3”, więc 32-bitowe
- LibreELEC - kombinowana wersja dla 2 i 3, więc tylko wersja 32-bitowa
- PiNet - nie wiem co to jest, ale wątpię w 64-bit
- RISC OS - nie wygląda jak Linux
- Stacja pogodowa - tak, po prostu nie
Więc nie wydaje się, że dostępne jest oficjalne 64-bitowe jądro? Czy jest jakiś nieoficjalny? Czy mogę po prostu skompilować jeden i oczekiwać, że zadziała (chyba nie, ale nie zaszkodzi zapytać ...)? Czy ktoś przynajmniej nad tym pracuje? Chciałbym mieć dostęp do natywnych liczb 64-bitowych.
Z drugiej strony, jak duża jest różnica między armv7 a armv8? Gentoo oferuje pakiety archiwalne trzeciego poziomu dla armv7. Czy to zadziała na Pi 3, który jest armv8?
Odpowiedzi:
Z tego, co niewiele znalazłem, nie ma nic stabilnego i oficjalnego. Niektórym udało się je skompilować, ale występują problemy ze sterownikami / modułami.
Te linki mogą Cię zainteresować w tym temacie.
Wejście w stan wykonania aarch64
Raspbian Jessie (64-bitowy) dla RPi3?
źródło
Ogólny konsensus jest taki, że 64-bitowe jądro nie zwiększy wydajności Pi, ponieważ jedynymi 2 rzeczywistymi zaletami 64-bitowego jądra są:
Ponadto 64-bitowe vs 32-bitowe na układach ARM nie jest dużym skokiem wydajności w porównaniu z układami x86, ponieważ układy x86 miały znaczące ulepszenia architektury, gdy przeszły do 64-bitowych, podczas gdy układy ARM były już dość solidne w wersjach 32-bitowych.
Zapraszamy do eksperymentowania! :)
źródło
Jedną z zalet 64-bitowej pamięci, o której wszyscy zapominają, jest to, że ARMv8 ma znacznie więcej rejestrów niż ARMv7. Ma także znacznie lepszą wydajność zmiennoprzecinkową.
To nie tylko dodatek do ARMv7, to zupełnie nowa architektura.
źródło
OpenSUSE wydało 64-bitowy obraz Raspberry Pi.
https://en.opensuse.org/HCL:Raspberry_Pi3
źródło
Znalazłem znaczący wzrost wydajności kompilacji 64-bitowych w porównaniu z 32-bitowymi po uruchomieniu testów porównawczych Androida na tablecie przy użyciu ARM Cortex-A53 1,3 GHz. Najnowsze są kompilowane za pomocą Eclipse i w czasie wykonywania wykrywają, czy procesor to ARM, Intel czy MIPS, a następnie architektura 32- lub 64-bitowa.
W poprzednich kompilacjach Windows dla procesorów Intel, 64-bitowa praca może być znacznie szybsza niż 32-bitowa dzięki zastosowaniu instrukcji SIMD typu SSE. Jednak późniejszy 32-bitowy kompilator z wsteczną niekompatybilnością wytwarza praktycznie ten sam kod i podobną prędkość.
Szczegóły testów porównawczych dla Androida przedstawiono poniżej, pokazując 32-bitowe i 64-bitowe wyniki z A53 i przez 1,2 GHz Cortex-A9. Na końcu jest kilka list kodów asemblera, które identyfikują różne używane instrukcje. Poniżej znajduje się podsumowanie wyników.
http://www.roylongbottom.org.uk/android%2064%20bit%20benchmarks.htm#anchorStart
Whetstone Benchmark - (małe pętle) podobna wydajność, na ogólną ocenę wpływ miała kompilacja testu z wykorzystaniem funkcji EXP.
Dhrystone Benchmark - najnowsze MIPS / MHz 1,09 32 bity, 1,96 64 bity, 1,10 A9 - może 64 bity ponad zoptymalizowane.
Linpack Benchmark - (N = 100) 64-bitowy DP 1,97 x szybszy, SP 2,67 x - patrz kod zestawu.
Pętle Livermore - (24 jądra) średnio 1,5 raza szybciej, zakres 0,8 do 7,9 razy
Testy pamięci podręcznej i pamięci RAM L1 / L2
MemSpeed - obliczenia zmiennoprzecinkowe i całkowite - zyskuje pamięci podręczne 2,2 x, RAM 1,5 x.
BusSpeed - całkowite przesyłanie danych i odczyt impulsowy - przesyłanie strumieniowe 2,0 x L1, 1,5 x L2, 1,25 x RAM - impulsy 2,6 x L1, podobne L2 i RAM.
RandMem - szeregowy i losowy odczyt i odczyt / zapis z tej samej złożonej struktury indeksowania - generalnie trochę szybszy podczas odczytu, ale podobny / wolniejszy odczyt / zapis.
Następnie istnieją wersje MP powyższej wersji i próby zmierzenia maksymalnego SP MFLOPS (MP-MFLOPS) z maksymalnie 4 rdzeniami 2,7 GFLOPS w wersji 32-bitowej i 5,5 GFLOPS w wersji 64-bitowej. Istnieje również wersja wykorzystująca elementy wewnętrzne NEON, w której 64-bitowy kompilator generuje alternatywne instrukcje przy maksymalnie 10,8 GFLOPS vs 5,7 przy 32 bitach - patrz zestawienie. Mam również wersje tych testów wydajności dla tabletów z systemem Windows 10 i Android Intel Atom - 64-bitowy i 32-bitowy system Windows, 32-bitowy system Android - pełny 64-bitowy brak pełnej implementacji - 64-bitowe jądro Linuksa, ale 32-bitowe Android.
http://www.roylongbottom.org.uk/android%20benchmarks.htm
Dodatkowo mam 32-bitowe i 64-bitowe wersje Linux / Intel.
Roy Longbottom
źródło
Oto jak kompiluję jądro Aarch64 RPI3:
Po pierwsze potrzebujesz Linaro aarch64: https://releases.linaro.org/components/toolchain/binaries/latest/aarch64-linux-gnu/gcc-linaro-6.2.1-2016.11-x86_64_aarch64-linux-gnu.tar .xz
Rozpakuj, umieść gdzieś, przykład: /opt/toolchains/gcc-linaro-6.2.1-2016.11-x86_64_aarch64-linux-gnu
Oto mój skrypt do pobierania oprogramowania układowego, VC, źródła jądra i kompilacji jądra z modułami. Używam tego skryptu dla mojego serwera Jenkins, więc wybieram to, czego potrzebujesz:
Teraz wystarczy rozpakować plik BOOT.tar.gz i umieścić go na karcie SD.
WAŻNE : Musisz ustawić arm_control = 0x200 w config.txt, aby uruchomił jądro AARCH64
Lub możesz po prostu użyć mojej wstępnie zbudowanej na moim Jenkins: https://jenkins.sandpox.org/job/RPI3_KERNEL_AARCH64/
źródło
Na dzień dzisiejszy wydaje się, że Fedora i Archlinux są dobrze obsługiwane.
Jeśli przejdziesz drogę łuk, to pomoże zbudować obraz (dla mnie na Linux / rpi3 to było
make linux
), a to pomoże Ci zacząć wifi.Jeśli chcesz się upewnić, którą masz malinę, skorzystaj z tego przewodnika .
arm_control=0x200
Jest również przestarzałe iarm_64bit
powinno się go używać w/boot/config.txt
.źródło