RaspberryPiのCPU比較 どれが64bitで動くの?
初代RaspberryPiが発売になったのは2013年の春ころです。
その年は話題にはあがるけど、日本では全然売っていない、買えないという状況が続きました。そんな中、夏頃にリビジョンが上がって、8pinの追加IO端子からI2S信号を出せるという嬉しい知らせが入りました。
2013年の年末に購入してVolumioを試したのがこの記事でした。
そんな昔話はどうでもいいですね。
本日は、それぞれ動作するカーネルと64bitカーネルはどのラズパイで動かせるのかをまとめました。
ラズパイの標準OSであるRaspbianは、起動時に自動でCPUに適切なカーネルが選択される仕組みが入っていて、同じSDカードでPi1/0からPi4まで意識することなく使えるというユーザーに優しいディスクイメージが提供されています。
そんなわけでRaspbianの/boot フォルダの中には4つのカーネルイメージが入っています。kernel8.imgだけサイズが2倍以上大きいのは圧縮されていないからです。
そして、各ラズパイが使用するカーネルは以下のようになっています。
ラズパイの種類 | CPUコア | 使用するkernel |
初代Raspberry Pi B | ARM11 | kernel |
初代Raspberry Pi A | ARM11 | kernel |
Raspberry Pi B+ | ARM11 | kernel |
Raspberry Pi A+ | ARM11 | kernel |
Raspberry Pi ZERO | ARM11 | kernel |
Raspberry Pi ZERO W | ARM11 | kernel |
Raspberry Pi 2 B | Cortex-A7 | kernel7 |
Raspberry Pi 2 B v1.2 | Cortex-A53 | kernel7 / kernel8 |
Raspberry Pi 3 B | Cortex-A53 | kernel7 / kernel8 |
Raspberry Pi 3 B+ | Cortex-A53 | kernel7 / kernel8 |
Raspberry Pi 3 A+ | Cortex-A53 | kernel7 / kernel8 |
Raspberry Pi 4 B | Cortex-A72 | kernel7l / kernel8 |
この中の「kernel8」が64bitカーネルです。
Cortex-A53/A72はARMv8というアーキテクチャになっていて、32bitのAArch32と64bitのAArch64の2つの実行モードが搭載されています。
Cortex-A53以降のCPUを搭載しているラズパイは、/boot/config.txtに「arm_64bit=1」と記述をいれると64bitモードで起動させることができます。
ラズパイも種類が増えてきたので、少しややこしくなってきましたね。末尾に「A」「B」が付いているのは リビジョンやバージョンではなくModel 名称です。A=有線LANを省いたモデルで搭載RAMも少なめ。 B=フルスペックモデル。
ARM11系のラズパイがなくなれば、潔く64bitを標準にできるのでしょうけど、昔の基板もサポートし続けるのは某A社とは違うところです。
今からラズパイを購入するという方におススメは、、、
やはり最新版ということでPi 4になります。
ただ、発熱の多さや消費電流の多さなどからすべての用途で最適とは言えません。。。
夏場の暑さも考えると、気楽に使えるのはPi 3B+ですかね。Wi-Fiの受信感度もチップアンテナを使っていたPi 3よりも良いようですし。
ベンチマーク 32bit 対 64bit
いろいろなwebサイトで簡易的にベンチマークソフト(Unix Benchなど)を走らせて32bitモードと64bitモードとを比較していますが、現在のRaspbianは64bitのバイナリを作るgccが整備されていません。
つまり、gitして、makeして、実行しただけでは、
32bitカーネル上での32bitプログラム
と
64bitカーネル上での32bitプログラム
の比較をしていることになります。
それも意味がないわけではありませんが、64bitのCPUを有効に使うにはプログラムも64bit化したものを使うのが適切な気がしています。intelのx86もそうですが、64bit CPUで32bitのバイナリ(プログラム)が全く問題なく動作するのってスゴイですよね。ARM社は、そればかりか32bit専用だった頃のCPUよりも高速に32bitプログラムが動くと言っています。いや~ 恐れ入ります。
でもでも、はやくAArch64のgcc、glibでてこないかな~
にほんブログ村
ブログランキングに参加中です。 めざせ1位!
もしよろしければ「ぽちっと」お願いします。
« RaspberryPi kernelとDriverのクロスコンパイル方法 | トップページ | 2/21(金)2/22(土)OSC東京は駒澤大学にて »
「Raspberry Pi」カテゴリの記事
- ラズパイをUSB-DACとしてスマホに認識させる方法 gadget mode(USB Audio Class 2.0)(2020.10.16)
- Raspberry Pi OSがkernel 5.x系に移行 ドライバモジュールのコンパイル方法も変更に(2020.10.05)
- ラズパイをUSB-DACとしてSoundgenic-NAS、Linuxに認識させる方法 gadget mode(USB Audio Class 2.0)(2020.09.24)
- ラズパイをUSB-DACとしてWindows10に認識させる方法 gadget mode(OTG Mode)(2020.09.22)
- 最新Volumio2でPi4の温度上昇をみてみる。(2020.03.19)
コメント
« RaspberryPi kernelとDriverのクロスコンパイル方法 | トップページ | 2/21(金)2/22(土)OSC東京は駒澤大学にて »
https://www.tal.org/tutorials/raspberry-pi3-build-64-bit-kernel
ここをみる限り、gccを自分でbuildすればaarch64なものは入るように思えます。ご参考まで。
投稿: | 2020年3月 2日 (月) 16時42分
ありがとうございます。実はこの記事を書いた直後から1週間ほど、あれこれチャレンジして撃沈していました。
1回目のgccのビルドまでは行きますが、そのあとのglibがコンパイルエラーでたり、2回目のgccがエラーで止まったりと。。。 cleanしたあと再度最初からトライすると、今度は1度目のgccでもエラーが出たり。
同様にやり方を書いているサイトがいくつかあって、それぞれの方法で試していたら1週間かかりました。
で、全滅です。Pi4でやったのがNGだった可能性もありますが、原因判らず。
懲りずにx86上でクロスコンパイルしてaarch64用gccビルドも挑戦したのですがそちらもエラーを回避できず、撃沈。
投稿: たかじん | 2020年3月 3日 (火) 21時18分