ラズベリーパイ 50%増量 (2012/09/20)

Raspberry Pi が最大50%高速化されたそうです。2012/09/20現在、最新の公式ディスクイメージ 2012-09-18-wheezy-raspbian では、ファームウェアが変更され、オーバーボルテイジ(電圧)と 1.0GHz までのオーバークロックが保証範囲内で可能となったとのことです。 これまで規定以上の電圧を使う設定にするとCPU内部のビットが切り替わって、保証が無効になっていましたが、今回の変更で保証範囲内のオーバークロックが可能になりました。

その他にもCPU温度やクロックの表示、USBドライバーの改善で10%の高速化、無線LANのドライバがサポート、OpenGL ES2を使ったゲーム (PenguinsPuzzle) がインストール済みなど盛りだくさんです。

cputemp

2012-09-18-wheezy-raspbian のインストール

「sudo apt-get update && apt-get upgrade」でもほとんどの機能がインストールされるようですが、安全に別のSDカードに 2012-09-18-wheezy-raspbian をインストールしました。 ダウンロードしたディスクイメージは以下のサイズです。

$ ls -lt 2012-09-18-wheezy-raspbian.zip
-rw-r--r--@ 1 jun  staff  459980310  9 19 05:18 2012-09-18-wheezy-raspbian.zip

イメージのハッシュが 3bc788d447bc88feaae8382d61364eaba1088e78 であることを確認しました。

$ shasum 2012-09-18-wheezy-raspbian.zip
3bc788d447bc88feaae8382d61364eaba1088e78  2012-09-18-wheezy-raspbian.zip

いつものようにMacBook Pro17 にUSB接続のmicroSDカードリーダを接続して、SDカードをアンマウント。

$ diskutil unmount /dev/disk1s1
Volume (null) on disk1s1 unmounted

古いイメージが入っていた 16GBのclass 10 microSDカード のパーティションレコードを一応初期化しました。

$ sudo fdisk -i /dev/disk1
fdisk: could not open MBR file /usr/standalone/i386/boot0: No such file or directory

  -----------------------------------------------------
  ------ ATTENTION - UPDATING MASTER BOOT RECORD ------
  -----------------------------------------------------

Do you wish to write new MBR and partition table? [n] y

パーティションを確認。

$ sudo fdisk /dev/disk1
Disk: /dev/disk1  geometry: 1947/255/63 [31291392 sectors]
Signature: 0xAA55
         Starting       Ending
 #: id  cyl  hd sec -  cyl  hd sec [     start -       size]
------------------------------------------------------------------------
*1: AB    0   1   1 - 1023 254  63 [        63 -      16384] Darwin Boot
 2: AF 1023 254  63 - 1023 254  63 [     16447 -   31274945] HFS+
 3: 00    0   0   0 -    0   0   0 [         0 -          0] unused
 4: 00    0   0   0 -    0   0   0 [         0 -          0] unused

zipファイルを展開します。

$ unzip 2012-09-18-wheezy-raspbian

$ ls -lt 2012-09-18-wheezy-raspbian*
-rw-r--r--@ 1 jun  staff   459980310  9 19 05:18 2012-09-18-wheezy-raspbian.zip
-rw-r--r--@ 1 jun  staff  1939865600  9 18 21:40 2012-09-18-wheezy-raspbian.img

SDカードに書き込みます。

$ sudo time dd bs=1m if=2012-09-18-wheezy-raspbian.img of=/dev/rdisk1
1850+0 records in
1850+0 records out
1939865600 bytes transferred in 107.927080 secs (17973854 bytes/sec)
      107.95 real         0.00 user         1.61 sys

ブート領域のファイルを確認します。

$ cd /Volumes/Untitled
$ ls -lt
total 71744
-rwxrwxrwx  1 jun  staff       137  9 18 13:40 issue.txt
-rwxrwxrwx  1 jun  staff       142  9 18 12:52 cmdline.txt
-rwxrwxrwx  1 jun  staff      1180  9 18 12:52 config.txt
-rwxrwxrwx  1 jun  staff   2467888  9 18 10:12 arm128_start.elf
-rwxrwxrwx  1 jun  staff   2467888  9 18 10:12 arm192_start.elf
-rwxrwxrwx  1 jun  staff   2467888  9 18 10:12 arm224_start.elf
-rwxrwxrwx  1 jun  staff    517508  9 18 10:12 arm240_start.elf
-rwxrwxrwx  1 jun  staff     16536  9 18 10:12 bootcode.bin
-rwxrwxrwx  1 jun  staff   5299140  9 18 10:12 kernel.img
-rwxrwxrwx  1 jun  staff   4225988  9 18 10:12 kernel_cutdown.img
-rwxrwxrwx  1 jun  staff  16444012  9 18 10:12 kernel_emergency.img
-rwxrwxrwx  1 jun  staff    278715  9 18 10:12 loader.bin
-rwxrwxrwx  1 jun  staff   2467888  9 18 10:12 start.elf

/boot/config.txt を確認してみます。とくに変更されていません。

$ cat -n config.txt
     1  # uncomment if you get no picture on HDMI for a default "safe" mode
     2  #hdmi_safe=1
     3
     4  # uncomment this if your display has a black border of unused pixels visible
     5  # and your display can output without overscan
     6  #disable_overscan=1
     7
     8  # uncomment the following to adjust overscan. Use positive numbers if console
     9  # goes off screen, and negative if there is too much border
    10  #overscan_left=16
    11  #overscan_right=16
    12  #overscan_top=16
    13  #overscan_bottom=16
    14
    15  # uncomment to force a console size. By default it will be display's size minus
    16  # overscan.
    17  #framebuffer_width=1280
    18  #framebuffer_height=720
    19
    20  # uncomment if hdmi display is not detected and composite is being output
    21  #hdmi_force_hotplug=1
    22
    23  # uncomment to force a specific HDMI mode (this will force VGA)
    24  #hdmi_group=1
    25  #hdmi_mode=1
    26
    27  # uncomment to force a HDMI mode rather than DVI. This can make audio work in
    28  # DMT (computer monitor) modes
    29  #hdmi_drive=2
    30
    31  # uncomment to increase signal to HDMI, if you have interference, blanking, or
    32  # no display
    33  #config_hdmi_boost=4
    34
    35  # uncomment for composite PAL
    36  #sdtv_mode=2
    37
    38  #uncomment to overclock the arm. 700 MHz is the default.
    39  #arm_freq=800
    40
    41  # for more options see https://elinux.org/RPi_config.txt

新しいイメージで起動

インストールしたSDカードをRaspberry Piにセットして、再起動。

raspi-config

起動時に表示される raspi-config です。「overclock」という項目が増えているのが分かります。

選択すると、「オーバークロックするとRaspberry Piの寿命を縮める可能性があります。もしオーバークロックしてシステムが不安定になったら、もっとマイルドな設定を試して下さい。詳細は https://elinux.org/RPi_Overclocking を参照してね。」という感じの注意書きが表示されます。

デフォルトの 700MHz から 1GHz までの選択肢が表示されます。「0 overvolt」 は 1.2V、「6 overvolt」は電圧を1.35Vに設定することを示します。ここで選択した設定には CPU が85%以上の負荷になると切り替わります。CPUがアイドル状態になると元 (700MHz) に戻ります。また、CPU の温度が 85 ℃を超えると 700MHz に戻ります。

最も速い設定に変更してみました。

raspi-configを使ったオーバークロック設定では、オーバークロック状態でブートすることはないと思いますが、万一システムが不安定になってブートに失敗する場合でも、起動時にシフトキーを押し続けることで遅いクロックで起動させる事が出来るようです。

新しい config.txt

pi@raspberrypi /boot $ cat -n config.txt
     1  # uncomment if you get no picture on HDMI for a default "safe" mode
     2  #hdmi_safe=1
     3
     4  # uncomment this if your display has a black border of unused pixels visible
     5  # and your display can output without overscan
     6  #disable_overscan=1
     7
     8  # uncomment the following to adjust overscan. Use positive numbers if console
     9  # goes off screen, and negative if there is too much border
    10  #overscan_left=16
    11  #overscan_right=16
    12  #overscan_top=16
    13  #overscan_bottom=16
    14
    15  # uncomment to force a console size. By default it will be display's size minus
    16  # overscan.
    17  #framebuffer_width=1280
    18  #framebuffer_height=720
    19
    20  # uncomment if hdmi display is not detected and composite is being output
    21  #hdmi_force_hotplug=1
    22
    23  # uncomment to force a specific HDMI mode (this will force VGA)
    24  #hdmi_group=1
    25  #hdmi_mode=1
    26
    27  # uncomment to force a HDMI mode rather than DVI. This can make audio work in
    28  # DMT (computer monitor) modes
    29  #hdmi_drive=2
    30
    31  # uncomment to increase signal to HDMI, if you have interference, blanking, or
    32  # no display
    33  #config_hdmi_boost=4
    34
    35  # uncomment for composite PAL
    36  #sdtv_mode=2
    37
    38  #uncomment to overclock the arm. 700 MHz is the default.
    39  arm_freq=1000
    40
    41  # for more options see https://elinux.org/RPi_config.txt
    42  core_freq=500
    43  sdram_freq=500
    44  over_voltage=6

config.txt の後ろに設定が追加されています。

温度の確認

CPUの温度が取得できるようになっています。/sys/class/thermal/thermal_zone0/temp を読みだすことで、1000分の1度単位の温度が取得できます。

pi@raspberrypi ~ $ cat /sys/class/thermal/thermal_zone0/temp
50306

クロックの確認

kHz単位でARMのクロックが確認できます。

pi@raspberrypi ~ $ cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq
700000

CPUに負荷をかけるとオーバークロックで設定した周波数に動的に切り替わります。CPUがアイドル状態に戻るとクロックも元に戻ります。

pi@raspberrypi ~ $ cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq
1000000

テスト

cube

OpenGL ES2で100個の立方体を回してみました。頂点数と法線ベクトルはそれぞれ3200個になります。フレームレートは30fps程度に落ちていますが、CPUの負荷は10%程度なので「Turbo」モードに切り替わりませんね。Raspberry Pi速すぎ。

さらに...

オーバークロック関連の話題は 本家フォーラム に色々あります。 「3000円程度のPCの保証なんて気にしない」ならば、もっと多くの面白そうな設定を試すことができます。保証範囲外になる上、ファームウェアのバージョンでいろいろ変わるかもしれないので、ここには書きませんが、興味のある方はご自分でお試しください。


続く...