Raspberry Pi 3 ve 64 bit çekirdek, armv7 ve armv8 arasındaki farklar


11

Raspberry Pi 3 için 64 bit çekirdek var mı? Etrafıma baktım ve kaynaklardan resmi sayfayı kontrol ediyorum ve aşağıdaki çekirdekler burada listeleniyor:

  1. NOOBS - bu yükleyici, kendi başına işletim sistemi yok, değil mi?
  2. Rapsbian - sadece bir indirme, bu yüzden Pi'nin tüm sürümüyle uyumlu 32 bit olduğunu varsayıyorum
  3. Ubuntu MATE - aarch32 (ARMv7)
  4. Ubuntu Ubuntu Core - sadece 32bit gibi görünüyor
  5. OSMC - "Raspberry Pi 2/3" için aynı indirmeler, bu yüzden 32 bit
  6. LibreELEC - 2 ve 3 için birleşik yapı, sadece 32 bit
  7. PiNet - bunun ne olduğunu bilmiyorum, ama şüphe 64 bit
  8. RISC OS - Linux gibi görünmüyor
  9. Hava İstasyonu - evet, sadece hayır

Yani resmi 64bit çekirdek mevcut değil mi? Resmi olmayan biri var mı? Sadece bir derleme ve çalışmasını bekleyebilir miyim (sanırım değil ama sormak acıyor ..)? En azından üzerinde çalışan var mı? Yerel 64 bit sayılara erişmeyi çok isterim.

Diğer yandan armv7 ve armv8 arasındaki fark nedir? Gentoo armv7 için 3. aşama tarball'ları sunuyor. Bu armv8 olan Pi 3 üzerinde çalışacak mı?


"Gentoo armv7 için 3. aşama tarballs sunuyor. Bu armv8 olan Pi 3 üzerinde çalışacak mı?" Yine, hayır, çok fazla saldırı olmadan değil, ama pi çekirdeği stok olmadığı için, ARMv7 ARMv8 üzerinde çalışmadığı için değil (şu anda Pi 2 ve 3 aynı çekirdeği kullanıyor).
goldilocks

1
Gentoo rehberi, github'dan Pi çekirdeği kaynak kodunu derlemeye devam ediyor, bu yüzden bunu hesaba katarlar. Ben ARMv8 gemide ARMv7 sürümünü kullanabilirsiniz eğer ben sadece ilgi oldu, evet görünüyor
graywolf

Yanıtlar:


7

Bulduğum kadarıyla istikrarlı ve resmi bir şey yok. Bazıları derlemek için bir tane aldı, ama sonra sürücüler / modüller ile ilgili sorunlar var.

Bu bağlantılar bu konuyla ilgili olarak ilginizi çekebilir.

Aarch64 yürütme durumuna girme

RPi3 için Raspbian Jessie (64bit)?


+1. Gerçekten 64-bit bir işletim sistemi denemek isterim. Pi için çok hafif bir işletim sistemi düzenlemeye ve derlemeye çalışabilirim (işleri kolaylaştırmak için hafif)
PNDA

@ PandaLion98 Bununla çok ilgilenirim
Dan V

11

Genel fikir birliği, 64 bitlik bir çekirdeğin Pi üzerindeki performansı artırmayacağıdır, çünkü 64 bitlik bir çekirdeğin sadece 2 gerçek faydası:

  1. 32bit çekirdeğinde manuel olarak belirleyebileceğiniz daha büyük int değerleri
  2. RAM yerleşik ve genişletilemez olduğu için Pi'de işe yaramayan 4 Gb'den fazla RAM'e sahip olma olasılığı.

Buna ek olarak, 64bit'e karşı ARM yongalarındaki 32bit, x86 yongalarındaki büyük performans sıçraması değildir, çünkü x86 yongaları 64bit'e gittiklerinde önemli mimari yükseltmelere sahipken, ARM yongaları 32bit sürümlerinde zaten oldukça sağlamdı.

Yine de denemekten çekinmeyin! :)


2
OP performans hakkında değil, kullanılabilirlik hakkında sordu. Şahsen, Pi için 64bit dağıtımına bakıyorum çünkü en son MongoDB 32bit desteğini düşürdü.
Andrejs Cainikovs

Ek olarak, aarch64 yapıları 'kapalı kaynak satıcı kitaplıklarına' daha az bağımlı olma eğilimindedir ve sizi v7 özelliklerine kilitli tutmak yerine v8 potansiyelinin kilidini açar.
earthmeLon

64bit sistemlerde Yıl 2038 sorunu yoktur
ceving

7

Herkesin unutduğu 64 bitlik bir avantaj, ARMv8'in ARMv7'den önemli ölçüde daha fazla sicile sahip olması da çok daha iyi kayan nokta performansına sahiptir.

Bu sadece ARMv7'ye bir eklenti değil, tamamen yeni bir mimari.



4

1.3 gHz ARM Cortex-A53 kullanarak bir tablette Android karşılaştırmalarımı çalıştırırken 64 bit derlemelere kıyasla 32 bitlik bazı önemli performans kazanımları buldum. En son Eclipse ile derlenir ve çalışma zamanında CPU'nun ARM, Intel veya MIPS, sonra 32 bit veya 64 bit mimari olup olmadığını tespit eder.

Intel CPU'lar için önceki Windows derlemelerinde, SSE tipi SIMD talimatları kullanıldığından 64 bit çalışma 32 bit'ten çok daha hızlı olabilir. Ancak, geriye dönük uyumsuzluğa sahip sonraki 32 bit derleyici neredeyse aynı kodu ve benzer hızı üretir.

Android kıyaslamalarının detayları A53'ten 32 bit ve 64 bit sonuçları ve 1.2 GHz Cortex-A9 üzerinden aşağıda gösterilmiştir. Sonunda, kullanılan farklı talimatları tanımlayan bazı montaj kodu listeleri bulunur. Aşağıda sonuçların bir özeti bulunmaktadır.

http://www.roylongbottom.org.uk/android%2064%20bit%20benchmarks.htm#anchorStart

Whetstone Benchmark - (küçük döngüler) benzer performans, EXP fonksiyonları kullanılarak testin derlenmesinden etkilenen genel derecelendirme.

Dhrystone Benchmark - en son MIPS / MHz 1.09 32 bit, 1.96 64 bit, 1.10 A9 - belki 64 bit fazla optimize edilmiş.

Linpack Benchmark - (N = 100) 64 bit DP 1.97 x daha hızlı, SP 2.67 x - montaj koduna bakın.

Livermore Döngüler - (24 çekirdek) ortalama 1,5 kat daha hızlı, aralık 0,8 ila 7,9 kez

L1 / L2 Önbellek ve RAM Testleri

MemSpeed ​​- float ve tamsayı hesaplamaları - önbellekleri 2.2 x, RAM 1.5 x kazanır.

BusSpeed ​​- tamsayı veri akışı ve seri okuma - veri akışı 2.0 x L1, 1.5 x L2, 1.25 x RAM - 2.6 x L1, benzer L2 ve RAM patlamaları.

RandMem - aynı karmaşık indeksleme yapısından seri ve rastgele okuma ve okuma / yazma - genellikle okumada biraz daha hızlı ama benzer / yavaş okuma / yazma.

Daha sonra yukarıdakilerin MP versiyonları vardır ve maksimum 4 çekirdek maksimum 2.7 GFLOPS 32 bit ve 5.5 GFLOPS 64 bit ile maksimum SP MFLOPS (MP-MFLOPS) ölçmeye çalışır. NEON intrinsics kullanan bir versiyon da var, burada 64 bit derleyici 10.8 GFLOPS vs 5.7 32 bitte alternatif talimatlar üretiyor - montaj listesine bakınız. Ayrıca Windows 10 ve Android Intel Atom tabanlı tabletler için bu kriterlerin sürümlerine sahibim - 64 bit ve 32 bit Windows, 32 bit Android - tam 64 bit tam olarak uygulanmadı - 64 bit Linux çekirdeği ancak 32 bit Android.

http://www.roylongbottom.org.uk/android%20benchmarks.htm

Ayrıca, 32 bit ve 64 bit Linux / Intel sürümlerim var.

Roy Longbottom


3

RPI3 Aarch64 çekirdeğini şöyle derlerim:

İlk önce Linaro aarch64'e ihtiyacınız olacak: 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

Açma, bir yere koyun, örnek: /opt/toolchains/gcc-linaro-6.2.1-2016.11-x86_64_aarch64-linux-gnu

İşte firmware, VC, çekirdek kaynağı ve modülleri ile çekirdek derlemek için benim script, ben Jenkins sunucum için bu komut dosyası kullanın böylece ihtiyacınız olanı alır:

git clone https://github.com/raspberrypi/linux.git -b rpi-4.8.y --depth=1
cd linux
export CROSS_COMPILE=/opt/toolchains/gcc-linaro-6.2.1-2016.11-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-
export ARCH=arm64
export INSTALL_MOD_PATH=MODULES/
export KERNEL=kernel8

rm -rf BOOT
rm -rf MODULES
rm -rf rpi-proprietary/

mkdir -p BOOT/overlays
mkdir MODULES

git clone https://github.com/Hexxeh/rpi-firmware.git --depth=1 rpi-proprietary/

cp ./rpi-proprietary/COPYING.linux ./BOOT/
cp ./rpi-proprietary/LICENCE.broadcom ./BOOT/
cp ./rpi-proprietary/bootcode.bin ./BOOT/
cp ./rpi-proprietary/fixup.dat ./BOOT/
cp ./rpi-proprietary/fixup_cd.dat ./BOOT/
cp ./rpi-proprietary/fixup_db.dat ./BOOT/
cp ./rpi-proprietary/fixup_x.dat ./BOOT/
cp ./rpi-proprietary/start.elf ./BOOT/
cp ./rpi-proprietary/start_cd.elf ./BOOT/
cp ./rpi-proprietary/start_db.elf ./BOOT/
cp ./rpi-proprietary/start_x.elf ./BOOT/

cd ./rpi-proprietary/vc/hardfp/opt/

tar -cvzf VC.tar.gz vc/

cd ../../../../
mv ./rpi-proprietary/vc/hardfp/opt/VC.tar.gz ./
rm -rf rpi-proprietary/

make bcmrpi3_defconfig
make modules
make module_install
make -j10

rm -rf MODULES/lib/modules/*v8*/build MODULES/lib/modules/*v8*/source

cp ./arch/arm64/boot/Image ./BOOT/kernel8.img
cp ./arch/arm64/boot/dts/broadcom/*.dtb ./BOOT/
cp ./arch/arm64/boot/dts/overlays/*.dtbo ./BOOT/overlays/
cp ./arch/arm64/boot/dts/overlays/README ./BOOT/overlays/

tar -cvzf MODULES.tar.gz MODULES/
tar -cvzf BOOT.tar.gz BOOT/

make mrproper

Şimdi sadece BOOT.tar.gz dosyasını açın ve sdcard'ınıza koyun.

ÖNEMLİ : AARCH64 çekirdeğini önyükleyebilmesi için config.txt dosyasına arm_control = 0x200 koymalısınız

Ya da önceden oluşturduğumu Jenkins'imde kullanabilirsiniz: https://jenkins.sandpox.org/job/RPI3_KERNEL_AARCH64/


3

Bugün itibariyle Fedora ve Archlinux iyi destekleniyor gibi görünüyor .

Arch yoluna giderseniz, bu görüntüyü oluşturmanıza yardımcı olacaktır (benim için linux / rpi3'te make linux) ve bu wifi'yi başlatmanıza yardımcı olacaktır.

Hangi ahududuya sahip olduğunuzdan emin olmanız gerekiyorsa, bu kılavuzu kullanın .

Ayrıca arm_control=0x200kullanımdan kaldırılmıştır ve arm_64bityerine kullanılmalıdır /boot/config.txt.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.