組み込み開発におけるARM入門

スマートフォンの普及に伴って、最近ではよく聞かれるようになった“ARM(アーム)”。
身の回りのあらゆるデジタル機器に使われていて、対応能力の高さと低消費電力という特徴から、ますますシェアが拡大するといわれています。
入門編となる本コラムでは、「ARMって何?」という初心者にも比較的わかりやすく、ARMの使われ方と成り立ちについて説明します。

組み込み開発におけるARM入門

組み込み開発におけるARMとは?

組み込み開発に携わる技術者なら耳にしたことがあると思いますが、ARMとは組み込みシステムを制御しているCPU(マイクロプロセッサやマイクロコントローラ、単にプロセッサという言い方もしますが、ここではPCや組み込み機器の中で、コアとなって演算処理を司るチップのことをCPUという呼称で統一します)アーキテクチャの一つです。

組込みシステムとは(またはエンベデッドシステムともいいますが)、デジタル機器や家電製品などに組み込まれ、特定の機能を実行するコンピュータシステムのことです。そして組込み開発は、一般的な情報システムの開発と比較して、「性能が低い」「メモリーが少ない」「高度なリアルタイム性」が求められる実行環境、CPUの種類が多く、CPU毎に変わる開発ツールと開発環境、そして、ソフトウェアの変更や更新が複雑な場合が多いという運用環境が特徴です。

また、開発対象となるOSにも違いがあります。情報システムが開発対象とする代表的なOSは、Windows、Linux、UNIXであるのに対し、組み込みシステムでは、TRON、VxWORKS、TOPPERS、Windows CE、Linux、pSOS、QNXと豊富です。

CPUについて詳しく知る

ARMを語る前に、まずCPUについて詳しく述べておきましょう。CPUとは、セントラル・プロセッシング・ユニットの略で、日本語で「中央処理装置」を指す電子回路のことです。コンピュータの中核を担い、コンピュータ全体の処理や計算を行う、まさに「頭脳」といってもいい部分です。

CPUの同義語として使われる「プロセッサ」や「マイクロプロセッサ」という言葉がありますが、本来プロセッサとは処理装置の総称のこと。マイクロプロセッサとはマイクロチップに実装されたプロセッサのこと、そしてCPUはコンピュータのコア的役割を持つプロセッサのことです。Core i7、 Core i5、 Core i3などの高性能CPU、あるいはPentium、 Athlonが有名どころで、これらはすべてPCの動作を決めるプログラムを処理するハードウェア(LSI)のことです。

実は、同じCPUでも組み込みシステム用とPC用では、搭載されているCPUが少し異なります。PC用のCPUは高性能を追求するため、消費電力の高いものが多くなります。一方で、例えば冷蔵庫のように一日中、一年中動作する組み込み機器になると、消費電力が高ければ電気代が跳ね上がってしまいます。そのため、組み込みシステムでは低消費電力であることが重視されるのです。また、PC用のCPUは、高性能のものになると非常に高価格です。しかし実際問題、家電製品などにいちいち高額なCPUを搭載するわけにいきません。ですから、低消費電力であると同時に低コストであることが重視されるのです。

CPUが小さくなり、家電製品などの組み込みシステムを制御する場合、すなわちそれはマイコンといえるでしょう。マイコンとは、マイクロコンピュータやマイコンピュータの略としても使われますが、ここではマイクロコントローラを指します。炊飯器で「マイコンジャー」と呼ばれるものは、マイコンシステムを搭載し、炊飯、保温、停止、温度管理などをCPUによって制御しているのです。

ちなみにプログラムの話になりますが、CPUの中でどのような処理が行われているかを理解するためには、アセンブラを知っておくといいでしょう。アセンブラとは、低水準言語であるアセンブリ言語によって書かれたプログラムを、コンピュータが実行できるコードに変換するソフトウェアのことを指します。CPUはC言語でのプログラミングが常識になっていますが、これだとCPUの中で実際にどのような処理が行われているか、わかりにくいものです。そこで、人間にも読めるように英語で命令を表記したアセンブリ言語が生み出されたのです。

また、CPUの種類は非常に多く、CPUが違えばそれぞれに命令も異なります。もちろん、すべての命令を覚えるのは不可能に近いでしょう。しかし、命令を共通する種類をざっくりと分けて覚えることで、さまざまなCPUが扱えるようになります。データ移動命令、論理演算命令、算術演算命令、分岐命令、その他(制御命令)の5種類です。CPUはこれら5種類の組み合わせによってプログラムが可能なので、異なるCPUでもアセンブリ語でプログラムが作成できるようになります。

話をARMに戻しましょう。ARMについて厳密に言うと、Intel社のCore i7やアップルコンピュータ、IBM、モトローラの提携(AIM連合)によって開発されたPowerPCのように、特定のメーカーの特定のCPUシリーズを指すのではなく、CPUの“アーキテクチャ”の名前です。マイクロプロセッサーの設計や開発を行っている、イギリスのARM Ltd.によって策定され、CPUメーカー各社がライセンスを受けて製造しています。つまり、A社のARM、B社のARMというふうに、各社それぞれのARM CPUが存在します。

例えば、ARM社が2005年に発表した「Cortex」。CortexとはCPUファミリーの名称で、Cortex-Aシリーズ、Cortex-Rシリーズ、Cortex-Mシリーズの3種類からなっています。Cortex-Aシリーズは、3つの中では最もハイエンドなシリーズで、高度なOS向けのアプリケーションプロセッサ。Cortex-Rシリーズは、リアルタイム制御が必要になる組み込みに最適のシリーズ。マイクロコントローラの「M」を付したCortex-Mシリーズは、コストを重視し、アプリケーションに最も適した組み込み用プロセッサ。3つの中ではローエンドに位置します。その中でもCortexM3は、リアルタイムアプリケーションに向けた32bitプロセッサで、低消費電力下での制限に応えつつ、高い性能と優れたシステム応答を備えています。一方でCortex-M0は、ARM社が提供するARMプロセッサの中で最も小さいものです。小さなシリコン面積や低消費電力、最小限のコードフットプリントの実現により、8ビットレベルの価格にして16ビットデバイスを超え、32bitの性能が得られるのが特徴です。

ARMは組み込み開発はもちろん、これをベースとしたハードウェア開発やソフトウェア開発、ソフトウェア設計の現場でも必要となってくる知識ですので、徹底して頭に入れておきましょう。

どういう製品に使われているの?一般的な使用例

それでは、ARM CPUは一体どのような製品に使われているのでしょうか。身近でわかりやすい一般的な使用例を挙げてみましょう。冒頭でも述べたようにARM CPUを使った最も一般的な製品は、今はスマートフォンです。ざっと各企業のスマートフォンのCPUを見ていくと、A7、Snapdragon、Tegra 3のように、よくカタログでも目にする名前が並びます。しかし、これらのスマートフォン・携帯電話以外にも、実はARMは非常に幅広い分野で採用されています。たとえばSDカードの中に無線LANが入っている製品は、非常に小さいながらもARMで制御されるコンピューターです。一方で、MicrosoftはARM向けのWindows「Windows RT」もリリースしています。Windows RTとは、Windows8と同じユーザーインターフェースを持った、タッチパネルとARM搭載モバイル機器向けのOSのことです。スマートフォンやタブレットで馴染みのあるARMアーキテクチャで動作するWindowsを目指し、Microsoftが開発したOSでもあります。

さらにハイエンドになるとサーバーにも進出しています。携帯型ゲーム機であるニンテンドーDSやPSP Vita、お掃除ロボットのルンバにも使われています。他にも、多くの家電製品をはじめ、デジタルカメラ、プリンタ、ルータ、AV機器など、実は気が付いていないだけで、身の回りにあるかなりの製品で利用されているのです。特に携帯型デジタル機器でのシェアは圧倒的です。

ARMアーキテクチャがこれほどまでに幅広い製品実装をサポートするのには訳があります。組込み開発でマイクロコントローラを選ぶ際、マイコンの製造中止や仕様変更に備えて高い入手性と幅広いラインナップを確保しておく必要があります。Cortex-Mシリーズでは、ARM社設計によるプロセッサを中心に、メーカー独自のペリフェラル(周辺機器)を内蔵したマイコンが、世界各国のメーカーから提供されているという強みがあるのです。

ARMの歴史

現在のデジタル機器で大幅なシェアをとるARMですが、ここでちょっとだけ歴史を振り返ってみましょう。
ARMの開発は1983年にイギリスのケンブリッジに設立されたAcorn Computersで開始されました。Acorn ComputersはイギリスのAppleとも言われる、イギリスの教育市場を独占したコンピューターメーカーです。小さなハードウェア規模でシンプルな命令セットを持つ、より高速なプロセッサを目指しており、開発にはApple(当時はApple Computer)も参加しています。ちなみに、命令セットというのはCPUが理解できる「命令の集合」のことをいい、ARM以外にもx86、MIPS、IA-64、PowerPCなどがあります。
1991年のARM6で初めて外部にリリースされ、Apple Computerが開発した世界初の個人用携帯情報端末(PDA)であるNewton Message Padに採用されました。その後ARM7ではちょうど普及期に入った各社の携帯電話やPDAに採用され、携帯端末を中心として広まったことで、今現在のシェアを得るに至っています。