LoginSignup
4
1

More than 3 years have passed since last update.

raspberry pi 3b+ 32bitと64bitどっちが速い?

Last updated at Posted at 2019-07-17

1. イメージファイルの準備

 Raspberry pi 3b+を64bit OSで動作させた場合、32bit OSとの性能に差が出るのかな?という疑問からベンチマークソフトを使用して性能を数値化、比較します。
今回はubuntu 18.04を使用します。
ubuntu wikiより2つのイメージを用意してunix benchをインストールする流れ。

  1). armhf (32bit版)
    ubuntu-18.04.2-preinstalled-server-armhf+raspi3.img.xz

  2). arm64 (64bit版)
    ubuntu-18.04.2-preinstalled-server-arm64+raspi3.img.xz

2. ubuntu18.04 (32bit)

 まずarmhf (32bit版)を解凍したイメージファイルをWin32 Disk Imagerを使ってMicro SDカードに書き込みます。
Wifi設定 apt update apt upgradeを行った後に、Kernelのビット数を確認。

$ getconf LONG_BIT
32

 期待通り32ビットでKernelが動作しているようです。
 使用するベンチマークソフトはunix bench、~/byte-unixbench/UnixBench以下にあるREADMEを参考に実行します。

$ git clone https://github.com/kdlucas/byte-unixbench.git
$ cd ./byte-unixbench/UnixBench
$ make
$ ./Run

 途中、gccとmakeがインストールされていなかったためsudo apt install gcc makeを実行しています。
 試験後はresultsフォルダにログがあるので3回$ ./Runした結果を平均してみました。

table 2-1 ubuntu18.04 (32bit)

Test Score Unit Index
Dhrystone 2 using register variables 24,926,396.5 lps 2,135.9
Double-Precision Whetstone 4,554.6 MWIPS 828.1
Execl Throughput 2,493.6 lps 579.9
File Copy 1024 bufsize 2000 maxblocks 242,929.9 KBps 613.5
File Copy 256 bufsize 500 maxblocks 65,960.3 KBps 398.5
File Copy 4096 bufsize 8000 maxblocks 553,033.8 KBps 953.5
Pipe Throughput 972,812.5 lps 782.0
Pipe-based Context Switching 177,506.3 lps 443.8
Process Creation 5,494.6 lps 436.1
Shell Scripts (1 concurrent) 4,716.2 lpm 1,112.3
Shell Scripts (8 concurrent) 607.1 lpm 1,011.8
System Call Overhead 1,940,369.4 lps 1,293.6
System Benchmarks Index Score: 782.3

3. ubuntu18.04 (64bit)

 続いてarm64 (64bit版)、32bit版同様に64bitでKernelが動作しているかを確認します。

$ cat /boot/firmware/config.txt
enable_uart=1
kernel=kernel8.bin
device_tree_address=0x03000000
dtparam=i2c_arm=on
dtparam=spi=on
arm_64bit=1           ← 64bit設定の確認
$ getconf LONG_BIT
64

 Wifi設定など32bit版の時と同様にセットアップを完了させた後、Unix Benchをgit clone, makeして実行します。

table 3-1 ubuntu18.04 (64bit)

Test Score Unit Index
Dhrystone 2 using register variables 29,659,405.9 lps 2528.0
Double-Precision Whetstone 5,346.0 MWIPS 969.8
Execl Throughput 2,313.4 lps 532.7
File Copy 1024 bufsize 2000 maxblocks 262,512.9 KBps 653.5
File Copy 256 bufsize 500 maxblocks 72,269.9 KBps 432.6
File Copy 4096 bufsize 8000 maxblocks 587,768.7 KBps 1004.8
Pipe Throughput 1,122,159.4 lps 899.0
Pipe-based Context Switching 168,999.8 lps 422.4
Process Creation 5,454.6 lps 434.4
Shell Scripts (1 concurrent) 4,437.5 lpm 1045.9
Shell Scripts (8 concurrent) 573.8 lpm 954.0
System Call Overhead 1,785,716.7 lps 1189.8
System Benchmarks Index Score: 803.7

4. 結果

 整数演算処理、浮動小数演算処理は64bitで動作していた時が速く (Dhrystone2, Double-Precision)、メモリ幅も大きいのでファイルコピー(キャッシング?)の効率もよくなっているようです。
 ただし、使用するメモリ量も多くなったのでシェルスクリプトやシステムコールの実行速度で32bitに逆展されているようです。スワップメモリを設定することで改善するのか?これは宿題ですね。訂正、スワップメモリを使用するほどの処理ではありませんでした。
 64bit版のシェルの処理速度が最適化されていないのかな。
 Figure 4-1にベンチマークの比較グラフを記載します。

Figure 4-1 UnixBench 32bit, 64bit比較

UnixBench.png

4
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
1