Raspberry Pi 3 และเคอร์เนล 64- บิตความแตกต่างระหว่าง armv7 และ armv8


11

มีเคอร์เนล 64 บิตสำหรับ Raspberry Pi 3 หรือไม่? ฉันมองไปรอบ ๆ และจากแหล่งข้อมูลฉันตรวจสอบหน้าอย่างเป็นทางการและมีการติดตามเมล็ดอยู่ที่นั่น:

  1. NOOBS - เป็นตัวติดตั้งไม่มี OS ด้วยตัวเองใช่ไหม
  2. Rapsbian - ดาวน์โหลดเพียงครั้งเดียวดังนั้นฉันสมมติว่าใช้งานได้ 32 บิตกับ Pi ทุกรุ่น
  3. Ubuntu MATE - aarch32 (ARMv7)
  4. Ubuntu Ubuntu Core - ดูเหมือนว่า 32 บิตเท่านั้น
  5. OSMC - ดาวน์โหลดแบบเดียวกันสำหรับ "Raspberry Pi 2/3" ดังนั้น 32 บิต
  6. LibreELEC - รวมบิลด์สำหรับ 2 & 3 ดังนั้น 32 บิตเท่านั้น
  7. PiNet - ไม่ทราบว่านี่คืออะไร แต่สงสัย 64 บิต
  8. RISC OS - ไม่ดูเหมือน linux
  9. สถานีอากาศ - ใช่ไม่

ดังนั้นดูเหมือนว่าจะไม่มีเคอร์เนล 64 บิตอย่างเป็นทางการหรือไม่ มีผู้ใดที่ไม่เป็นทางการหรือไม่? ฉันสามารถรวบรวมและคาดหวังว่ามันจะทำงาน (ฉันเดาไม่ได้ แต่ไม่เจ็บถาม .. )? อย่างน้อยทุกคนทำงานกับมันได้หรือไม่ ฉันชอบที่จะเข้าถึงหมายเลข 64 บิตแบบดั้งเดิม

ในหมายเหตุอื่น ๆ ความแตกต่างระหว่าง armv7 และ armv8 แตกต่างกันอย่างไร? Gentoo เสนอ tarballs ระดับ 3 สำหรับ armv7 มันจะใช้ได้กับ Pi 3 ซึ่งเป็น armv8 หรือไม่?


"Gentoo เสนอ tarballs ขั้นที่ 3 สำหรับ armv7 นั่นจะใช้ได้กับ Pi 3 ซึ่งเป็น armv8 หรือไม่" ไม่ใช่เพราะไม่มีแฮ็ค แต่เป็นเพราะเคอร์เนล pi ไม่มีสต็อคไม่ใช่เพราะ ARMv7 ไม่ทำงานบน ARMv8 (ปัจจุบัน Pi 2 และ 3 ใช้เคอร์เนลเดียวกัน)
goldilocks

1
คำแนะนำ gentoo ดำเนินต่อไปพร้อมกับการคอมไพล์ซอร์สโค้ดเคอร์เนล Pi จาก github ดังนั้นฉันจะถือว่าพวกมันคำนึงถึงเรื่องนี้ ฉันแค่สนใจถ้าฉันสามารถใช้รุ่น ARMv7 บนกระดาน ARMv8 ดูเหมือนว่าใช่
graywolf

คำตอบ:


7

จากสิ่งเล็ก ๆ น้อย ๆ ที่ฉันพบว่าไม่มีอะไรที่มั่นคงและเป็นทางการ บางเครื่องมีคอมไพล์แล้ว แต่ก็มีปัญหากับไดรเวอร์ / โมดูล

ลิงค์เหล่านี้อาจสนใจคุณเกี่ยวกับหัวข้อนี้

เข้าสู่สถานะการดำเนินการ aarch64

Raspbian Jessie (64 บิต) สำหรับ RPi3


+1 รักที่จะทดลองกับระบบปฏิบัติการ 64 บิต ฉันอาจพยายามแก้ไขและรวบรวมระบบปฏิบัติการที่มีน้ำหนักเบามากสำหรับ Pi (น้ำหนักเบาเพื่อทำให้สิ่งต่าง ๆ ง่ายขึ้น)
PNDA

@ PandaLion98 ฉันจะสนใจสิ่งนี้มาก
Dan V

11

มติทั่วไปคือเคอร์เนล 64 บิตจะไม่เพิ่มประสิทธิภาพใน Pi เนื่องจากประโยชน์ที่แท้จริงเพียง 2 ประการของเคอร์เนล 64 บิตคือ:

  1. ค่า int ที่ใหญ่กว่าซึ่งคุณสามารถระบุด้วยตนเองในเคอร์เนล 32 บิตอย่างไรก็ตาม
  2. ความเป็นไปได้ของการมี RAM มากกว่า 4 Gb ซึ่งไม่มีประโยชน์ใน Pi เนื่องจาก RAM มีอยู่ในตัวและไม่สามารถขยายได้

นอกจากนี้ 64 บิตเทียบกับ 32 บิตบนชิป ARM ไม่ใช่การก้าวกระโดดครั้งใหญ่ที่มันเกิดขึ้นบนชิป x86 เนื่องจากชิป x86 มีการอัพเกรดสถาปัตยกรรมที่สำคัญเมื่อพวกเขาไปที่ 64 บิตในขณะที่ชิป ARM นั้นค่อนข้างแข็งแกร่งในรุ่น 32 บิต

ลองทดสอบดูสิ! :)


2
OP ไม่ได้ถามเกี่ยวกับประสิทธิภาพ แต่เกี่ยวกับความพร้อมใช้งาน โดยส่วนตัวฉันกำลังมองหาการมี distro 64 บิตสำหรับ Pi เป็นเพราะ MongoDB ล่าสุดลดการสนับสนุน 32 บิต
Andrejs Cainikovs

นอกจากนี้ aarch64 builds มีแนวโน้มที่จะพึ่งพาน้อยลงใน'ไลบรารีผู้จำหน่ายที่มาปิด'และปลดล็อกศักยภาพ v8 แทนที่จะทำให้คุณถูกล็อคในความสามารถ v7
earthmeLon

ระบบ 64bit ไม่ได้มีปี 2038 ปัญหา
ceving

7

ข้อดีอย่างหนึ่งของ 64 บิตที่ทุกคนดูเหมือนจะลืมคือ ARMv8 มีการลงทะเบียนมากกว่า ARMv7 อย่างมากมันมีประสิทธิภาพที่ดีกว่าเช่นกัน

มันไม่ได้เป็นแค่ส่วนเสริมของ ARMv7 แต่เป็นสถาปัตยกรรมใหม่ทั้งหมด



4

ฉันได้พบประสิทธิภาพที่สำคัญบางอย่างจากการรวบรวม 64 บิตเทียบกับ 32 บิตเมื่อใช้การวัดประสิทธิภาพ Android บนแท็บเล็ตโดยใช้ ARM Cortex-A53 1.3 GHz ล่าสุดถูกรวบรวมผ่าน Eclipse และในขณะดำเนินการตรวจสอบว่า CPU เป็น ARM, Intel หรือ MIPS จากนั้นสถาปัตยกรรม 32 บิตหรือ 64 บิต

ในการรวบรวม Windows ก่อนหน้าสำหรับ CPU ของ Intel การทำงาน 64 บิตอาจเร็วกว่า 32 บิตเนื่องจากการใช้คำสั่ง SSD ประเภท SIME อย่างไรก็ตามคอมไพเลอร์ 32 บิตในภายหลังซึ่งมีความเข้ากันไม่ได้ย้อนหลังสร้างรหัสเดียวกันและความเร็วใกล้เคียงกัน

รายละเอียดของเกณฑ์มาตรฐาน Android ดังต่อไปนี้ซึ่งแสดงผลลัพธ์ 32 บิตและ 64 บิตจาก A53 และผ่าน 1.2 GHz Cortex-A9 ในตอนท้ายรายการแอสเซมบลีโค้ดบางรายการที่ระบุคำสั่งต่าง ๆ ด้านล่างนี้เป็นบทสรุปของผลลัพธ์

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

เกณฑ์มาตรฐาน Whetstone - (ลูปจิ๋ว) ประสิทธิภาพที่คล้ายกันโดยคะแนนโดยรวมได้รับอิทธิพลจากการรวบรวมการทดสอบโดยใช้ฟังก์ชั่น EXP

Dhrystone Benchmark - MIPS ล่าสุด / MHz 1.09 32 บิต, 1.96 64 บิต, 1.10 A9 - อาจเพิ่มประสิทธิภาพ 64 บิต

เกณฑ์มาตรฐาน Linpack - (N = 100) 64 บิต DP 1.97 x เร็วขึ้น SP 2.67 x - ดูรหัสประกอบ

Livermore Loops - (24 เมล็ด) เร็วขึ้น 1.5 เท่าเฉลี่ย 0.8 ถึง 7.9 เท่า

การทดสอบแคช L1 / L2 และ RAM

MemSpeed ​​- การคำนวณแบบลอยและจำนวนเต็ม - เพิ่มแคช 2.2 x, RAM 1.5 x

BusSpeed ​​- การสตรีมข้อมูลจำนวนมากและการอ่านข้อมูลต่อเนื่อง - สตรีมมิ่ง 2.0 x L1, 1.5 x L2, 1.25 x RAM - ระเบิด 2.6 x L1, L2 และ RAM ที่คล้ายกัน

RandMem - การอ่านและอ่าน / เขียนแบบอนุกรมและสุ่มจากโครงสร้างการจัดทำดัชนีที่ซับซ้อน - โดยทั่วไปแล้วการอ่านจะเร็วขึ้นเล็กน้อย แต่การอ่าน / เขียนที่คล้ายกัน / ช้ากว่า

จากนั้นมี MP เวอร์ชันด้านบนและพยายามวัด SP MFLOPS สูงสุด (MP-MFLOPS) ด้วย 4 คอร์สูงสุด 2.7 GFLOPS 32 บิตและ 5.5 GFLOPS 64 บิต นอกจากนี้ยังมีรุ่นที่ใช้ NEON intrinsics ที่คอมไพเลอร์ 64 บิตสร้างคำสั่งทางเลือกที่มากถึง 10.8 GFLOPS vs 5.7 ที่ 32 บิต - ดูรายการประกอบ ฉันยังมีรุ่นมาตรฐานเหล่านี้สำหรับแท็บเล็ตที่ใช้ Windows 10 และ Android Intel Atom - 64 บิตและ 32 บิต Windows, Android 32 บิต - ไม่ได้ใช้งานเต็มที่ 64 บิต - เคอร์เนล Linux 64 บิต แต่ Android 32 บิต

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

นอกจากนี้ฉันมีรุ่น Linux / Intel 32 บิตและ 64 บิต

Roy Longbottom


3

นี่คือวิธีที่ฉันรวบรวมเคอร์เนล RPI3 Aarch64:

ขั้นแรกคุณจะต้องใช้ 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

คลายการบีบอัดวางไว้ที่ใดที่หนึ่งตัวอย่าง: /opt/toolchains/gcc-linaro-6.2.1-2016.11-x86_64_aarch64-linux-gnu

นี่คือสคริปต์ของฉันเพื่อดาวน์โหลดเฟิร์มแวร์ VC แหล่งเคอร์เนลและเคอร์เนลคอมไพล์กับโมดูลฉันใช้สคริปต์นี้สำหรับเซิร์ฟเวอร์เจนกินส์ของฉันเพื่อเลือกสิ่งที่คุณต้องการ:

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

ตอนนี้เพียงปลด BOOT.tar.gz และนำไปไว้ใน sdcard ของคุณ

สำคัญ : คุณต้องใส่arm_control = 0x200เพื่อ config.txt เพื่อทำการบูต AARCH64 เคอร์เนล

หรือคุณสามารถใช้ prebuilt ของฉันกับเจนกินส์ของฉัน: https://jenkins.sandpox.org/job/RPI3_KERNEL_AARCH64/


3

ณ วันนี้ดูเหมือนว่าFedoraและArchlinuxจะได้รับการสนับสนุนเป็นอย่างดี

ถ้าคุณไปทาง Arch สิ่งนี้จะช่วยคุณสร้างภาพ (สำหรับฉันบน linux / rpi3 เดิมmake linux) และสิ่งนี้จะช่วยคุณเริ่ม wifi

ในกรณีที่คุณต้องแน่ใจว่าราสเบอร์รี่ตัวใดที่คุณมีให้ใช้คู่มือนี้

นอกจากนี้ยังarm_control=0x200มีการเลิกใช้แล้วและควรจะนำมาใช้แทนในarm_64bit/boot/config.txt

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.