第15回 ARMプロセッサを知らずに暮らせない:頭脳放談(2/2 ページ)
Pentium IIIよりも販売数量が多い32bitプロセッサ「ARM」。ゲーム端末など意外な製品にもARMは使われている。ARMがこのように成功できた理由を解説しよう。
このようなARMを支えるプロセッサ・アーキテクチャであるが、一言でいって癖の強いものだ。基本のARM命令セットでは、全命令に条件コード部が付けられ(条件が成立している場合だけ命令を実行する)、論理演算命令以外の転送や算術演算命令でもシフトが可能、そして割り込み対応の複数レジスタ・バンクを持つという具合である。RISCではあるが、どちらかというとCISC的な色彩が強い命令セットだ。CISCのようにコーディング・テクニックを駆使してチューンすることで、プロセッサの動作クロック以上の性能を出すことができる。このような性質はどちらかといえば「クラシカル」な概念に基づくもので、目の前の問題解決には役立つが、将来インプリメンテーションを変えて、より高度なマイクロアーキテクチャにしようとするときには足かせとなりかねない。条件コードの多用は、投機的実行する場合の困難さにつながるだろうし、ほとんどの命令でできるシフトは基本的算術演算処理回路のパスを長くし、周波数の引き上げを阻害する要因ともなりかねない。そういう不利なところをARMプロセッサは数々の拡張で覆い隠してきた。
組み込み用途向きということで、MIPS16やSHと比べてコード・サイズが問題になれば「Thumb(サム)」と呼ぶ16bitコードの実行モードを取り入れ、信号処理の要求がでればDSP的な命令を追加し、Javaが注目されればJavaのバイト・コードのARM命令への変換アクセラレータを追加するといった具合である。実に業界の動向に沿って、早からず遅からず拡張を投入し、それをデファクト・スタンダード化するうまさがある。
ARMは拡張で生き延びる
もう少しARMの各バージョン(モデル)の違いを見ていこう。ARMプロセッサは、命令セット的にいくつかのバージョンがあるが、基本的な命令セットは高い互換性が保たれている。ARM7で実行可能なソフトウェアは、ARM9でもARM10でも実行できるという関係を維持している。ただし、注意しなければならないのはMMU(Memory Management Unit:メモリ空間を管理するためのハードウェア)の存在である。ARM7からARM9までは、ARM7TDMIやARM9TDMIなどのプロセッサ・コアのみ、ARM74xやARM94xなどのキャッシュ付き、キャッシュとMMUが実装された最上位機種のARM720T、ARM92xといったバリエーションが存在する。ARM10では、キャッシュとMMUの実装されたARM1020しかリリースされていない(性能を考えれば当然といえば当然だ)。ARM10へのロードマップを見ると、ARM720T−ARM92x−ARM1020というのがソフトウェア的な「直系」の流れとなる。
また用途に応じて、いくつかの「サブ命令セット」的なものを持つのがARMプロセッサの特徴でもある。代表的なサブ命令セットは、「T」付きで呼ばれるThumb命令である。これは32bit固定長のARM命令セットに対し、16bit固定長の短縮命令セットであり、ROM容量の削減などに貢献するものだ。これは最近のARMコアにはすべて実装されており、これが使えないのはかなり古いものだけである。ほかには、「E」付きで呼ばれるDSP命令拡張、「J」付きで呼ばれるJavaネイティブ・コードの一部をARM命令に変換する拡張などがあるが、これらの機能が使えるモデルは新しいものに限られる。さらにARM10では、コ・プロセッサ命令という位置付けで浮動小数点演算命令が追加されている。
ARMプロセッサの実装
実装的には、基本となるARM7系が3段パイプラインという短いパイプラインを採用し、小さく、また絶対値的には消費電力も小さいコアを実現している。しかしパイプラインの短さは、動作クロックの上限周波数を上げられないという欠点をもたらす。各社各様のプロセスで製造されているARMプロセッサなので一概にはいえないが、ARM7の動作周波数帯は数十MHzくらいのものが多い。これに対し、ARM9では5段、ARM10では6段とパイプラインは長くなり、ARM9は200MHz前後、ARM10では300MHz以上といったレンジを達成している。ARMの特徴の1つは、動作クロックを上げても、その割にはMHz当たりの消費電力が増えないところにある。ただし、同じプロセスと動作クロックであれば、ARM9はARM7より消費電力が高い。もちろん、消費電力は動作クロックに比例するから、50MHzのARM7と200MHzのARM9では、動作クロック的に4倍+パイプラインの深い分1.5〜2倍程度の消費電力が増加すると考えなければならない。なおARM10では、パイプラインが深くなりペナルティが大きいため、分岐予測を採用している。
また、コアの上限動作クロックに比例して、キャッシュ構成などの変更も行われている。ARM7では内部にユニファイド・キャッシュ(命令キャッシュとデータ・キャッシュを一緒にしたもの)を搭載し、外部バスは16bitというシステム構成であったが、ARM9では内部により容量の大きいセパレート・キャッシュ(命令とデータを分離したキャッシュ)、外部バスは32bitになり、ARM10では同じセパレート・キャッシュでもノンブロッキング・タイプ(キャッシュ・ミスの処理中でも、プロセッサ・コアからキャッシュへアクセス可能にすることで性能を高める技術)で、またさらに容量も拡張し、外部バスもデュアル構成の64bitと、格段に豪華な構成が要求される。 当然、ARM10は独立したロード/ストア・ユニットを持つ。
ARM10は、ARMの中では突出して機能が豊富なプロセッサであるが、それでも近頃のx86系プロセッサに比べれば実装トランジスタ数は少なくて済む。そういう視点で見ると、ARM7は超軽量、ARM9はそこそこ軽量といってよいだろう。この軽快さこそがARMの低消費電力の原点である。
ARMが米国3強ベンダを従えられるか?
製品的にも市場的にも拡大してきたARMであるが、懸念はいくつかある。直近のところでは、昨今の携帯電話市場の落ちこみである。多様化したといっても携帯電話はARMの主力市場であるので、ここから得られるロイヤリティが2001年は減る可能性は高いとみている。しかし、製造の鈍化によるロイヤリティ減があったとしても、それを補って余る新ライセンスのライセンス料が増える可能性が十分ある。すぐには立ち上がらないとはいえ、各社は第3世代携帯電話向けにより性能の高いARM9クラスの導入を進めており、今年が導入のピークになりそうだ。
だが、こういった携帯電話の市場の変動より、ARMのライセンスを受ける側の変動の方が、ARMに大きな影響を与える可能性がある。本連載の「第12回 キミはARMを知っているかい?」で書いたとおり、業界の老舗がARMベースの製品に力を入れてきたからだ。それはIntel、Motorola、TIという米国半導体ベンダ3強である。これら3強は、それぞれの強みを生かして、IntelはPC、Motorolaは自動車と通信、TIはDSP(ちなみに携帯電話はARM+TIのDSPというのが定番)で、それぞれ世界市場をリードしてきた。今度はARMを舞台に、3強がいままでの強さを武器にガツガツとシェアを伸ばせば、30社からなるほかのARMライセンシーの多くは振り落とされてしまうだろう。すると、せっかく半導体顧客が享受してきた、多数の半導体ベンダから購買ができるというメリットが、寡占によって失われることになる。また、ARM社にしても多くのライセンシーの上に成り立っているという、いまの体制のうまみを失うことになる。まぁ、3強以外のほかのライセンシーの頑張りや戦術と、半導体顧客の冷静な判断、そして、何よりARM社がみんなのためといわず、自社のためにも3社をうまく飼いならすことを期待し、3社による寡占のシナリオだけは御免被りたい。もちろん、ARMだけ儲け、半導体ベンダは鵜飼いの鵜というシナリオにも不満はつのるのだが……。
筆者紹介
Massa POP Izumida
日本では数少ないx86プロセッサのアーキテクト。某米国半導体メーカーで8bitと16bitの、日本のベンチャー企業でx86互換プロセッサの設計に従事する。その後、出版社の半導体事業部を経て、現在は某半導体メーカーでRISCプロセッサを中心とした開発を行っている。
「頭脳放談」
Copyright© Digital Advantage Corp. All Rights Reserved.