Raspberry Pi 3和64位内核,armv7和armv8之间的区别


11

Raspberry Pi 3是否有64位内核?我环顾四周,从来源检查官方页面,并列出了以下内核:

  1. NOOBS-这是安装程序,本身没有操作系统,对吗?
  2. Rapsbian-只需下载一次,因此我假定与所有版本的Pi兼容32位
  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为armv7提供了第3阶段tarball。它将在armv8的Pi 3上运行吗?


“ Gentoo为armv7提供了第3阶段tarball。在Pi 3(armv8)上可以使用吗?” 同样,不是,不是没有很多黑客,而是因为pi内核不多,不是因为ARMv7在ARMv8上不起作用(当前Pi 2和3使用相同的内核)。
goldilocks

1
gentoo指南继续从github编译Pi内核源代码,因此我认为他们对此负责。我只是想知道是否可以在ARMv8板上使用ARMv7版本,看来是的
graywolf

Answers:


7

从我几乎没有发现的东西来看,没有什么稳定而正式的东西。有些已经可以编译了,但是驱动程序/模块出现了问题。

这些链接可能会使您对此主题感兴趣。

进入aarch64执行状态

RPibian Jessie(64bit)支持RPi3吗?


+1。真的很想尝试64位操作系统。我可能会尝试修补并为Pi编译一个非常轻量级的OS(轻量级,使事情变得容易)
PNDA

@ PandaLion98我对此非常感兴趣
Dan V

11

普遍的共识是64位内核不会提高Pi的性能,因为64位内核仅有的两个实际好处是:

  1. 较大的int值,您始终可以在32位内核中手动指定
  2. 可能有超过4 Gb的RAM,这在Pi上是无用的,因为RAM是内置的并且不可扩展。

此外,ARM芯片上的64位与32位相比,并不是x86芯片上的巨大性能飞跃,因为x86芯片升级到64位时具有重大的体系结构升级,而ARM芯片在32位版本中已经相当可靠。

随意尝试吧!:)


2
OP并未询问性能,而是询问了可用性。就我个人而言,我正在寻找Pi的64位发行版是因为最新的MongoDB放弃了对32位的支持。
Andrejs Cainikovs

此外,aarch64构建倾向于较少依赖“封闭源代码供应商库”,并释放了v8的潜力,而不是让您锁定v7的功能。
EarthmeLon

64位系统没有2038年的问题
ceving

7

每个人似乎都忘记了64位的一个好处是ARMv8的寄存器比ARMv7多得多。它的浮点性能也好得多。

它不仅是ARMv7的附件,还是一种全新的体系结构。



4

我发现在使用1.3 GHz ARM Cortex-A53的平板电脑上运行Android基准测试时,64位编译比32位编译有明显的性能提升。最新版本通过Eclipse编译,并在运行时检测CPU是ARM,Intel还是MIPS,然后是32位或64位体系结构。

在以前的针对Intel CPU的Windows编译中,由于使用SSE类型的SIMD指令,64位工作可能比32位快得多。但是,后来的32位编译器具有向后不兼容的功能,其产生的代码几乎相同,速度也差不多。

以下是Android基准测试的详细信息,其中显示了A53以及通过1.2 GHz Cortex-A9获得的32位和64位结果。最后是一些汇编代码清单,用于标识所使用的不同指令。以下是结果摘要。

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

磨刀石基准测试-(微小循环)相似的性能,总体额定值受使用EXP函数进行的测试编译的影响。

Dhrystone基准测试-最新的MIPS / MHz 1.09 32位,1.96 64位,1.10 A9-可能优化了64位。

Linpack基准测试-(N = 100)64位DP快1.97倍,SP 2.67倍-请参阅汇编代码。

Livermore Loops(24个内核)平均快1.5倍,范围是0.8到7.9倍

L1 / L2缓存和RAM测试

MemSpeed-浮点和整数计算-获得2.2倍的缓存,1.5倍的RAM。

BusSpeed-整数数据流和突发读取-流2.0 x L1、1.5 x L2、1.25 x RAM-突发2.6 x L1,类似L2和RAM。

RandMem-从相同的复杂索引结构进行串行和随机读取以及读取/写入-通常在读取时快一些,但读取/写入类似/慢一些。

然后是上述版本的MP版本,并尝试使用2.7 GFLOPS 32位和5.5 GFLOPS 64位的4个内核最大值来测量最大SP MFLOPS(MP-MFLOPS)。还有一个使用NEON内在函数的版本,其中64位编译器生成的替代指令的生成速度高达10.8 GFLOPS,而32位则为5.7-请参见程序集列表。我也有针对Windows 10和Android基于Intel Atom平板电脑的这些基准测试的版本-64位和32位Windows,32位Android-未完全实现的完整64位-64位Linux内核,但32位Android。

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

另外,我有32位和64位Linux / Intel版本。

罗伊·朗伯顿


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,内核源代码和带有模块的编译内核,我在Jenkins服务器上使用此脚本,因此请选择您需要的内容:

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内核

或者,您也可以在我的Jenkins上使用我的预构建版:https : //jenkins.sandpox.org/job/RPI3_KERNEL_AARCH64/


3

到今天为止,似乎FedoraArchlinux得到了很好的支持。

如果您采用Arch方式,将帮助您构建映像(对我来说,在linux / rpi3上是make linux),将帮助您启动wifi。

如果需要确定您拥有哪个覆盆子,请使用本指南

arm_control=0x200已弃用,而arm_64bit应在中使用/boot/config.txt

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.