Raspberry Pi 3 và 64-bit kernel, sự khác biệt giữa armv7 và armv8


11

Có kernel 64 bit nào cho Raspberry Pi 3 không? Tôi nhìn xung quanh và từ các nguồn tôi kiểm tra trang chính thức và các hạt nhân sau được liệt kê ở đó:

  1. NOOBS - đây là trình cài đặt, không có HĐH, phải không?
  2. Rapsbian - chỉ một lần tải xuống, vì vậy tôi giả sử 32 bit tương thích với tất cả các phiên bản của Pi
  3. Ubuntu MATE - aarch32 (ARMv7)
  4. Ubuntu Ubuntu Core - dường như chỉ có 32 bit
  5. OSMC - tải xuống tương tự cho "Raspberry Pi 2/3", vì vậy 32 bit
  6. LibreELEC - bản dựng kết hợp cho 2 & 3, vì vậy chỉ có 32 bit
  7. PiNet - không biết đây là gì, nhưng nghi ngờ 64 bit
  8. Hệ điều hành RISC - không giống như linux
  9. Trạm thời tiết - vâng, chỉ là không

Vì vậy, dường như không có hạt nhân 64 bit chính thức có sẵn? Có bất kỳ một không chính thức? Tôi chỉ có thể biên dịch một cái và mong nó hoạt động (tôi đoán là không nhưng không đau khi hỏi ..)? Có ai ít nhất làm việc trên nó? Tôi rất thích có quyền truy cập vào các số 64 bit gốc.

Mặt khác, sự khác biệt lớn giữa armv7 và armv8 như thế nào? Gentoo cung cấp tarball giai đoạn 3 cho armv7. Nó sẽ hoạt động trên Pi 3, armv8 chứ?


"Gentoo cung cấp tarball giai đoạn 3 cho armv7. Nó có hoạt động trên Pi 3 là armv8 không?" Một lần nữa, không, không phải không có nhiều hack, nhưng vì kernel pi không phải là stock, không phải vì ARMv7 không hoạt động trên ARMv8 (hiện tại Pi 2 và 3 sử dụng cùng kernel).
goldilocks

1
Hướng dẫn gentoo tiếp tục với việc biên dịch mã nguồn hạt nhân Pi từ github, vì vậy tôi sẽ giả sử họ giải thích cho việc này. Tôi chỉ quan tâm nếu tôi có thể sử dụng phiên bản ARMv7 trên bo mạch ARMv8, dường như là có
Graywolf

Câu trả lời:


7

Từ những gì tôi đã tìm thấy không có gì ổn định và chính thức. Một số đã nhận được một để biên dịch, nhưng sau đó có vấn đề với trình điều khiển / mô-đun.

Các liên kết này có thể bạn quan tâm đến chủ đề này.

Đang vào trạng thái thực thi aarch64

Raspbian Jessie (64 bit) cho RPi3?


+1. Rất thích thử nghiệm với HĐH 64 bit. Tôi có thể thử vá và biên dịch một hệ điều hành rất nhẹ cho Pi (nhẹ để giúp mọi việc dễ dàng hơn)
PNDA

@ PandaLion98 Tôi sẽ rất thích thú với điều này
Dan V

11

Sự đồng thuận chung là hạt nhân 64 bit sẽ không tăng hiệu năng trên Pi, vì 2 lợi ích thực sự duy nhất của hạt nhân 64 bit là:

  1. giá trị int lớn hơn, mà bạn có thể chỉ định thủ công trong kernel 32 bit
  2. khả năng có hơn 4 Gb RAM, điều này vô dụng trên Pi vì RAM được tích hợp và không thể mở rộng.

Ngoài ra, 64bit so với 32 bit trên chip ARM không phải là bước nhảy vọt về hiệu năng lớn so với chip x86, bởi vì chip x86 đã nâng cấp kiến ​​trúc đáng kể khi chúng lên 64 bit, trong khi chip ARM đã khá chắc chắn trong các phiên bản 32 bit.

Hãy thử nghiệm mặc dù! :)


2
OP không hỏi về hiệu suất, nhưng về tính khả dụng. Cá nhân, tôi đang mong muốn có bản phân phối 64 bit cho Pi là vì MongoDB mới nhất đã giảm hỗ trợ 32 bit.
Andrejs Cainikovs

Ngoài ra, các bản dựng aarch64 có xu hướng phụ thuộc ít hơn vào 'thư viện nhà cung cấp nguồn đóng' và giải phóng tiềm năng v8 thay vì giữ cho bạn bị khóa trong các khả năng của v7.
earthmeLon

7

Một lợi ích của 64 bit mọi người dường như quên là ARMv8 có số lượng đăng ký nhiều hơn đáng kể so với ARMv7 Nó cũng có hiệu năng điểm nổi tốt hơn nhiều.

Đây không chỉ là một tiện ích bổ sung cho ARMv7, đây là một kiến ​​trúc hoàn toàn mới.



4

Tôi đã tìm thấy một số mức tăng hiệu suất đáng kể của các phần tổng hợp 64 bit so với 32 bit khi chạy các điểm chuẩn Android của tôi trên máy tính bảng sử dụng ARM Cortex-A53 1,3 GHz. Bản mới nhất được biên dịch qua Eclipse và, trong thời gian chạy, phát hiện xem CPU là ARM, Intel hay MIPS, sau đó là kiến ​​trúc 32 bit hay 64 bit.

Trên các phần tổng hợp Windows trước đây cho CPU Intel, hoạt động 64 bit có thể nhanh hơn 32 bit do sử dụng các hướng dẫn SIMD loại SSE. Tuy nhiên, trình biên dịch 32 bit sau này, với khả năng không tương thích ngược, tạo ra hầu như cùng mã và tốc độ tương tự.

Chi tiết về các điểm chuẩn của Android là như sau, hiển thị kết quả 32 bit và 64 bit từ A53 và thông qua Cortex-A9 1,2 GHz. Cuối cùng là một số danh sách mã lắp ráp xác định các hướng dẫn khác nhau đang được sử dụng. Dưới đây là một bản tóm tắt các kết quả.

http://www.roylongbottom.org.uk/android%2064%20bit%20benchmark.htmlm#anchorStart

Whetstone Benchmark - (các vòng lặp nhỏ) hiệu suất tương tự, với xếp hạng tổng thể bị ảnh hưởng bởi việc tổng hợp kiểm tra bằng các hàm EXP.

Điểm chuẩn Dhstallone - MIPS / MHz 1.09 32 bit mới nhất, 1.96 64 bit, 1.10 A9 - có thể được tối ưu hóa hơn 64 bit.

Linpack Benchmark - (N = 100) 64 bit DP 1.97 x nhanh hơn, SP 2.67 x - xem mã lắp ráp.

Vòng lặp Ganmore - (24 hạt nhân) trung bình nhanh hơn 1,5 lần, phạm vi 0,8 đến 7,9 lần

Kiểm tra bộ nhớ cache và RAM L1 / L2

MemSpeed ​​- tính toán số nguyên và số nguyên - tăng bộ nhớ cache 2.2 x, RAM 1.5 x.

BusSpeed ​​- truyền dữ liệu số nguyên và đọc bùng nổ - truyền phát 2.0 x L1, 1.5 x L2, 1.25 x RAM - cụm 2.6 x L1, L2 và RAM tương tự.

RandMem - đọc và đọc ngẫu nhiên nối tiếp và ngẫu nhiên từ cùng một cấu trúc lập chỉ mục phức tạp - thường nhanh hơn một chút khi đọc nhưng tương tự / đọc / ghi chậm hơn.

Sau đó, có các phiên bản MP ở trên và cố gắng đo SP MFLOPS tối đa (MP-MFLOPS) với tối đa 4 lõi là 2,7 GFLOPS 32 bit và 5,5 GFLOPS 64 bit. Ngoài ra còn có một phiên bản sử dụng nội tại NEON trong đó trình biên dịch 64 bit tạo ra các hướng dẫn thay thế ở mức tối đa 10,8 GFLOPS so với 5,7 tại 32 bit - xem danh sách lắp ráp. Tôi cũng có các phiên bản điểm chuẩn này cho máy tính bảng dựa trên Windows 10 và Android Intel Atom - Windows 64 bit và 32 bit, Android 32 bit - 64 bit đầy đủ không được triển khai đầy đủ - kernel Linux 64 bit nhưng Android 32 bit.

http://www.roylongbottom.org.uk/android%20benchmark.htmlm

Thêm vào đó, tôi có các phiên bản Linux / Intel 32 bit và 64 bit.

Roy Longbottom


3

Đây là cách tôi biên dịch kernel RPI3 Aarch64:

Trước tiên, bạn sẽ cần Linaro aarch64: https://release.linaro.org/components/toolchain/binaries/latest/aarch64-linux-gnu/gcc-linaro-6.2.1-2016.11-x86_64_aarch64-linux-gnu.tar .xz

Giải nén, đặt nó ở đâu đó, ví dụ: /opt/toolchains/gcc-linaro-6.2.1-2016.11-x86_64_aarch64-linux-gnu

Đây là tập lệnh của tôi để tải firmware, VC, nguồn kernel và biên dịch kernel với các mô-đun, tôi sử dụng tập lệnh này cho máy chủ Jenkins của tôi để chọn những gì bạn cần:

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

Bây giờ chỉ cần gỡ bỏ BOOT.tar.gz và đặt nó vào sdcard của bạn.

QUAN TRỌNG : Bạn phải đặt arm_control = 0x200 để config.txt để khởi động kernel AARCH64

Hoặc bạn chỉ có thể sử dụng bản dựng sẵn của tôi trên Jenkins của tôi: https://jenkins.sandpox.org/job/RPI3_KERNEL_AARCH64/


3

Cho đến hôm nay, có vẻ như FedoraArchlinux được hỗ trợ tốt.

Nếu bạn đi theo cách Arch, điều này sẽ giúp bạn xây dựng hình ảnh (đối với tôi trên linux / rpi3 make linux) và điều này sẽ giúp bạn bắt đầu wifi.

Trong trường hợp bạn cần chắc chắn rằng bạn có quả mâm xôi nào, hãy sử dụng hướng dẫn này .

Cũng arm_control=0x200không được dùng nữa và arm_64bitnên được sử dụng thay thế trong /boot/config.txt.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.