Raspberry Pi 3および64ビットカーネル、armv7とarmv8の違い


11

Raspberry Pi 3用の64ビットカーネルはありますか?私は周りを見回し、ソースから公式ページをチェックしました、そして以下のカーネルがそこにリストされています:

  1. NOOBS-これはインストーラーです。OS自体はありませんよね?
  2. Rapsbian-ダウンロードは1回だけなので、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を提供しています。これはarmv8であるPi 3で動作しますか?」繰り返しになりますが、ハッキングがそれほど多くないわけではありませんが、piカーネルがストックされていないため、ARMv7がARMv8で機能しないためではありません(現在、Pi 2と3は同じカーネルを使用しています)。
ゴルディロックス

1
gentooガイドはgithubからPiカーネルソースコードをコンパイルする際に使用するため、私は彼らがこれを説明していると思います。ARMv8ボードでARMv7バージョンを使用できるかどうかだけに関心がありました。そうです
グレイウルフ

回答:


7

私が見つけた小さなことから、安定した公式なものは何もありません。一部をコンパイルするようになっていますが、ドライバー/モジュールに問題があります。

これらのリンクは、このトピックに関して興味があるかもしれません。

aarch64実行状態に入る

Raspbian Jessie(64ビット)for RPi3?


+1。64ビットOSを実際に試してみたいと思います。Piの非常に軽量なOSにパッチを当ててコンパイルしようとするかもしれません(物事を簡単にするために軽量)
PNDA

@ PandaLion98私はこれに非常に興味があります
Dan V

11

一般的なコンセンサスは、64ビットカーネルの本当の2つの利点のみであるため、64ビットカーネルはPiのパフォーマンスを向上させないということです。

  1. とにかく32ビットカーネルで手動で指定できるより大きなint値
  2. RAMが内蔵されており、拡張できないため、4 GBを超えるRAMを搭載できる可能性があります。

さらに、ARMチップは32ビットバージョンですでにかなり安定していたのに対し、x86チップは64ビットに移行したときにアーキテクチャが大幅にアップグレードされたため、ARMチップでの64ビットと32ビットの比較は、x86チップでの大きな進歩ではありません。

でも実験してみてください!:)


2
OPはパフォーマンスについては尋ねませんでしたが、可用性については尋ねました。個人的に、私はPiの64ビットディストリビューションを検討しています。これは、最新のMongoDBが32ビットのサポートを中止したためです。
Andrejs Cainikovs 2017

さらに、aarch64ビルドは「クローズドソースベンダーライブラリ」への依存度が低くなる傾向があり、v7の機能に固定されたままではなく、v8の可能性を解放します。
earthmeLon

7

誰もが忘れているように見える64ビットの利点の1つは、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

Whetstone Benchmark-(小さなループ)同様のパフォーマンス。全体的な評価はEXP関数を使用したテストのコンパイルによって影響を受けます。

Dhrystoneベンチマーク-最新の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バージョンがあり、4コア最大2.7 GFLOPS 32ビットおよび5.5 GFLOPS 64ビットで最大SP MFLOPS(MP-MFLOPS)を測定しようとします。64ビットコンパイラが32ビットで5.7に対して最大10.8 GFLOPSで代替命令を生成するNEON組み込みを使用するバージョンもあります-アセンブリリストを参照してください。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を解凍し、SDカードに配置します。

重要:AARCH64カーネルを起動するには、config.txt にarm_control = 0x200を配置する必要があります

または、私の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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.