8c70b10682aa2e3d34d5fe407fa4bc0a1-150x150

掌の上のパソコン(前編)Raspberry Piの仕様を読み解く

  • このエントリーをはてなブックマークに追加

by [2014年11月28日]

Raspberry Pi model A+

最近、ごく小さな低消費電力のパソコンが流行するようになっています。

これは半導体製造プロセス技術の進歩で小さなチップにCPUやGPU、あるいはいわゆるチップセットを構成する各種機能を(ある程度の性能を維持したまま)統合集積するのが容易になったことや、ディスクストレージとしてこれまた低消費電力のフラッシュメモリが利用できるようになったこと、IoT(Internet of Things)に代表されるようにコンパクトかつ低消費電力のコンピュータ機器の需要が増えてきたこと、それに特に日本では東北の震災以降電力事情が悪化したことなど、様々な事情がからんで起きたトレンドであると言えます。

そんなコンパクトかつ低消費電力のパソコンの一つとして、イギリスのラズベリーパイ財団が開発したRaspberry Piが注目を集めるようになっています。

元々ミニマムな教育用コンピュータとして開発されたこの機種は、掌の上に載る程度のごく小さなプリント基板上に統合プロセッサやSDカードスロット、各種入出力端子を実装してあります。

そのため、所定の手順でOSを書き込んだSDメモリカードをスロットに挿入し給電用USBポートあるいはGPIOピンヘッダに5V給電用ケーブルを接続して給電すれば、それだけで一つの独立したコンピュータとして機能するように設計されています。

今回はこのRaspberry Piについて考えてみたいと思います。
前編では主にハードウェアやOSなどを見ていきましょう。

Raspberry Piの主な仕様

Raspberry Piの主な仕様は以下のとおりです。

  • 対応OS:Raspbian・PIDORA・OpenELEC・RaspBMC・RISC OS Piなど
  • チップセット:Broadcom BCM2835(ARM1176JZF-S 700MHz シングルコア)
  • 基板サイズ:85.0mm × 56.0mm(model A・B・B+)65.0mm × 55mm(model A+)
  • 内蔵メモリ
    • RAM:256MB(Model A・A+)・512MB(Model B・B+)
    • 拡張スロット:SD/MMC/SDIO(Model A・B)・microSD(Model A+・B+)
  • GPU:
    • Broadcom VideoCore IV
    • ※ビデオメモリはメインメモリの内16MB/32MB/64MB/128MB/256MBを選択の上で占有。model A系の場合はメインメモリ256MB実装のため256MBは選択不可
  • カメラ
    • 専用インターフェイス端子に対応カメラ接続にて利用可能
    • ※チップセットの仕様上は最大解像度20メガピクセルのカメラモジュールまで対応
  • LAN:
    • なし(Model A・Model A+)・100Base-TX(Model B・B+)
  • USB:
    • USB 2.0×1(Model A・Model A+)・USB 2.0×2(Model B)・USB 2.0×4(Model B+)
  • その他入出力端子:
    • GPIOヘッダーピン 26ピン(Model A・B)・40ピン(Model A+・B+)
    • 映像出力:コンポジットRCA(NTSC/PAL:model A・B)・HDMI(1080P)
    • 音声出力:ステレオミニプラグ・HDMI
    • 電源:micro USBあるいはGPIOヘッダーピン経由での5V給電

以上で明らかなとおり、記事執筆時点でRaspberry Piには大きく分けてメモリ256MB・LANなしのmodel A系とメモリ512MB・LANありのmodel B系(※注1)があり、さらにGPIOヘッダーピンの構成の相違やRCAコンポジットビデオ出力端子の有無などによってA・BとA+・B+に分かれていて合計4モデルが存在しています。

 ※注1:model A・model Bの初期出荷分はそれぞれメモリ128MB・256MB搭載であったようです。

これだけの機能・性能のコンピュータが掌に載る小さな基板に収まってしまい、しかもトータルでわずか1.5W~3.5Wという小電力で動作するわけです。

Linuxが基本のOS

Raspbian公式サイト
「hard float」コードのサポートが特徴であることが明記されている。

元々、Linuxベースの組み込み向けマルチメディア端末用アプリケーションプロセッサとして開発され、ARM v6系アーキテクチャによるARM 11というCPUコアを搭載するBroadcomのBCM2835というチップを統合プロセッサとして採用したため、このRaspberry PiではDebianディストリビューションベースでこのハードウェアに合わせてカスタマイズした、RaspbianというLinuxの専用ディストリビューションが標準的なOSとして推奨されています。

ちなみにBroadcomは通信コントローラチップ開発では大手で、イーサネットコントローラなどで知られている会社です。

なお、通常のDebianディストリビューションではなくわざわざ専用のカスタマイズ版が推奨されているのは、このRaspbianではターゲットとなるプロセッサをBCM2835で決め打ちしてOSやアプリケーションソフトをコンパイルすることで、アプリやライブラリのバイナリがARM v6世代までのプロセッサでオプション扱いだったVFP(Vector Floating Point )と呼ばれる単精度/倍精度浮動小数点演算ユニットによる「hard float」コードと呼ばれる命令コード(※注2)を使用するように最適化されていて、VFP機能をサポートしているBCM2835の内蔵CPUコアの性能がフルに発揮可能であるためです。

 ※注2:ADF命令やMUF命令などの浮動小数点演算命令コード。VFP機能を搭載しないARM v6系プロセッサではサポートされず、非搭載プロセッサでは未定義命令扱いされて例外エラーとなります。

通常のDebianディストリビューションだとこのあたりの浮動小数点演算は、特定のハードウェアに依存せずARM v6命令セットに対応する機種汎用で利用可能なようにバイナリをコンパイルするため、VFP非搭載で浮動小数点演算命令をサポートしないプロセッサでの動作の可能性があることからVFPを一切使用せず、全てソフトウェアによって浮動小数点演算処理を行うのが一般的(※注3)です。

 ※注3:「hard float」命令を使用するとこれをサポートしないプロセッサでは未定義命令の実行による例外エラーが発生し、OS内部でコンテキストスイッチ処理を行って代替処理ルーチンでソフトウェアによりエラー内容をトラップ処理するように設計されています。このため最初からVFPを完全に無視し、プログラム中の浮動小数点演算を一律にソフトウェア処理するように書かれている場合と比較してコンテキストスイッチ処理や例外割り込み処理などが余計に必要になることから、処理速度が大幅に低下します。そのため、一般的なディストリビューションではVFP搭載機種での性能低下を忍んででもプログラムのポータビリティとその状態での性能を優先し、浮動小数点演算をソフトウェアで処理するようになっています。

そのため浮動小数点演算について、BCM2835のCPUコアの持つVFPを利用する「hard float」命令を利用するように決め打ちでコンパイルしてある専用ディストリビューションにはそれなりに大きな利用価値があるわけです。

現行スマホより一世代古いCPUコア

このRaspberry Piに搭載されている統合プロセッサであるBCM2835は、ARM1176JZF-SというARM v6命令セット対応のARM 11系CPUコアを内蔵しています。

ARM v6というのは2001年にARM11系プロセッサ用として開発・発表された命令セットで、現在のスマートフォンで広く利用されているARM v7系命令セット(2005年発表)の一世代前にあたる32ビット命令セットです。

さらに、BCM2835の場合は内蔵CPUコアがARM1176JZF-Sであると明示されていることから、その中でもSIMD拡張命令を標準でサポートし、Jazelle DBXというJavaアプリケーションを高速実行するためのハードウェアアクセラレータを搭載していてVFPにはオプションで対応する、ARM v6KZという命令セットに対応することがわかります。

ちなみにこのARM v6KZ、主にマルチメディア演算処理や3Dグラフィック演算などに用いられるSIMD拡張命令(ベクトル命令)に対応し、さらにJavaアプリケーションを高速実行するためのアクセラレータ搭載、というアウトラインでお気づきの方もおられるかと思いますが元々Javaアプリの高速実行が求められた携帯電話用の統合プロセッサのために開発されたアーキテクチャで、初代iPhoneやiPhone 3Gなど、初期のスマートフォンの統合プロセッサにも採用されていた命令セットであったりします。

初代iPhoneなどだとこの系統の命令セットをサポートするCPUコアを定格よりも大幅に低い412MHzで動作させていて、メモリ容量もわずか128MBしかありませんでしたから、700MHz駆動を公称しより大きな容量のメインメモリを搭載するこのRaspberry Piは、少なくとも初代iPhoneクラスのスマートフォンに搭載のプロセッサよりは高速かつ快適な動作が期待できるわけです。

また、メインメモリがmodel A系でも256MB、model B系だと512MB搭載されているため、後述するGPUが占有する部分を差し引いてもそれなりの容量が確保できます。

もっともメモリ消費量の大きなGUI環境でそれなりに快適な利用を望む場合には、メインメモリを256MBしか搭載しておらず増設もできないmodel A系での利用は心許ないといえ、そうした用途ではmodel B系を選択する必要があります。

1080Pでの動画再生をサポートするGPU

このRaspberry Piの仕様の中で最もインパクトのある部分、それは恐らく1080P解像度(1,920 × 1,080ピクセル:フルHD解像度) 30フレーム/秒でのH.264動画の再生とエンコードをサポートするGPU周りのスペックではないでしょうか。

OpenGL-ES 1.1/2.0での3Dグラフィック描画をサポートし、フィルレートが1ギガピクセル/秒、つまり1秒間に10億のピクセルを描画可能な性能を備えているとされるこのGPU、さすがに3Dグラフィック描画性能は高くなく(※注4)、1080P解像度で30フレーム/秒の動画再生を保証するのが精一杯(※注5)といった印象です。

 ※注4:DRAM混載でバス幅2,560ビットという驚愕のスペックを実現していたPlayStation 2のGraphicSynthesizer(GS)のフィルレートが2.4ギガピクセル/秒ですから、メインメモリをCPUコアと共有するというハンデを考慮すればそれなりにがんばっているとは言えるものの、このVideoCore IVはフルHD解像度で実用的なフレームレートを維持しつつ今風のリッチな3Dグラフィック描画を実現するには全く不十分な性能しか備えていません。

 ※注5:フルHD解像度の画面の画素数が2,073,600ピクセルですから、30フレームで単純計算すると1080P解像度での動画再生には最低でもフィルレートが62,208,000ピクセル/秒必要で、フィルレートが内部的な画面の重ね合わせ処理などでも消費されることを考慮すると、1ギガピクセル/秒というのは動画再生を行う場合でも決して余裕のある数字ではありません。

とはいえ、このクラスのマシンでこの数字が実現できていること自体はかなり立派なものではあるのですが。

なお、GPUレベルでは1080P解像度対応ですがmodel A・Bに搭載のコンポジット映像出力端子経由で出力する場合には、NTSCあるいはPAL規格に従うため、解像度は大幅に低下します。

本国であるイギリスでも日本でも、地上波テレビのデジタル化が完了してコンポジット映像入力しかないテレビは激減していますから、最大解像度の低いこの端子が後発のmodel A+・B+で省略されているのは当然でしょう。

ストレージはSDメモリカードが基本

Broadcom BCM2835の場合、OSなどをインストールし起動に用いるストレージはチップに搭載されたSDカードインターフェイスに接続されたSDメモリカードを使用するように設計されています。

OSそのもののファイルサイズやファイルシステムの関係からOSインストール用には概ね容量4GB以上の容量のものが利用可能で、当然ながらOSをインストールされたSDメモリカードはOSの動作中に抜き差しできません。

OSインストール先となるSDメモリカードについてはSDXCあるいはmicro SDXCタイプでの動作報告もありますが、入手性や各種OSでの動作の確実性を考えると、現状ではSDHCあるいはmicro SDHCタイプのSDメモリカードを利用するのが無難です。

また、SDメモリカードのアクセス速度などによるいわゆる相性問題も発生しているようです。Class 4など低速な規格のものはOSの動作パフォーマンスにてきめんに悪影響があるので、これをデータ保存用とするのはともかくOSインストール先にするのは避けた方が良さそうです。

なお、USBインターフェイス経由でハードディスクドライブを接続しデータ保存先として利用することは可能ですが、Broadcom BCM2835の仕様上OSインストール先としてUSBハードディスクを利用するのは難しいようです。

モデルによっては非搭載のLAN

さて、このRaspberry PiではLANインターフェイスの搭載の有無がモデル区分の基準の一つになっています。

「パソコン」として利用するならば、今や必要不可欠のインターフェイスとなっているLANですが、組み込み用途などでこのRaspberry Piをスタンドアローン動作にて利用するのであれば、外部からの悪意ある侵入を防ぐ意味でむしろ非搭載の方が望ましいケースが少なくありません。

そうした使途を前提とするとディスプレイ出力もせいぜいステータス表示などの文字表示で利用される程度で、ビデオメモリに割り当てるメインメモリ容量もごく小さくて済むようになります。

モデルA系でLANインターフェイスの搭載省略と併せてメインメモリもmodel B系の半分で済まされているのはこのためで、消費電力の大きなDRAM容量が半減するため、必然的にmodel A系ではRaspberry Pi全体の消費電力も1.5ワット程度とmodel B系の半減に近いレベルに減少します。

これは消費電力の制約の厳しい組み込み用途などでは大きな利点であると言えます。

ポート数は違えどルートハブの数は同じUSB

Raspberry Piはmodelにより異なった数のUSBポートを搭載しています。

しかし、実はこれはBCM2835に複数のUSBホストコントローラが内蔵されているのではなく、SMSC(現・microchip)のLAN9512(model B)あるいはLAN9514(model B+)という100Base-TX イーサネットコントローラ内蔵USBハブを利用してポート数を拡張しており、通信速度的には1ポートの機種に外付けUSBハブを接続して利用するのと2ポートあるいは4ポート搭載する機種を利用するのとで基本的には変わりありません(※注6)。

 ※注6:そのため、1ポートの機種でも4ポートの機種でも、USB接続で利用できる転送帯域は最大480 Mbps(USB 2.0接続時)の枠内に収まることになります。なお、イーサネットコントローラそのものもUSB接続であるため、USB 2.0ホストコントローラによるデータ通信の帯域を圧迫します。

実用上、キーボードとマウスを接続し、さらにそれ以外の機器を、となると3ポート以上必要となるため、パソコンとして使用する場合は4ポート搭載のmodel B+を選んで直に各種機器を接続するか、さもなくばいずれかの機種でUSBハブを外付け接続してポート数を増やした上で使うか(※注)、ということになります。

 ※注7:バスパワード接続対応機器のように消費電力の大きなUSB機器を利用したい場合は、本体に搭載のUSBポートでは給電できないため、機種によらずACアダプタなどを別途接続して給電するセルフパワータイプのUSBハブを接続して利用する必要があります。

上位互換性を保つピンヘッダ

Raspberry Piは元々教育用として開発されたという経緯もあって、GPIO(General Purpose Input/Output:汎用入出力)ヘッダーピンと呼ばれるその名の通り汎用に利用可能な入出力可能デジタルインターフェイスを搭載しています。

このヘッダーピンには8本のGPIOの他、UART(Universal Asynchronous Receiver Transmitter:パラレルインターフェイス)やSPI(Serial Peripheral Interface:シリアルインターフェイス)、それにI2C(シリアルインターフェイス)といった各種低速汎用入出力インターフェイスや給電ピンが割り当てられており、レガシーなものを含めて様々な機器との接続が可能なように設計されています。

このあたりのデバイスは例えばカーネルがモダンな機能をサポートするWindows NT系になったWindows 2000やWindows XP以降のWindowsだと、システム保護の必要性などから特別なデバイスドライバを書かねば直接扱えないようになっているなど、煩雑な操作・手続きを必要とするものが多く、また最近のパソコンだとシリアルやパラレルといったレガシーなインターフェイスは搭載しないのが当たり前となってきています。

そうした事情から、教育用としてこうしたインターフェイスを直にそれも手軽に扱える機器が必要とされ、このRaspberry Piが設計されたという経緯があったりします。

後編では、Raspberry Piで考えられる使用例をあげてみたいと思います。

▼参考リンク
Raspberry Pi

High Definition 1080p Embedded Multimedia Applications Processor – BCM2835 | Broadcom
ARM11プロセッサ ファミリ – ARM
LAN9512 – USB to Ethernet
LAN9514 – USB to Ethernet

FrontPage – Raspbian
Pidora – Raspberry Pi Fedora Remix
OpenELEC Mediacenter – Home
Raspbmc
Welcome to RISC OS Pi in Documentation
RPi SD cards – eLinux.org(Raspberry Piで動作するSDメモリカードの互換性リスト掲載ページ)

コメントは受け付けていません。

PageTopへ