学校では教えてくれないこと

これにもIntelが入ってるの?

2006.8

CPU

「Intel入ってる」というCMがあったよね。今回はこのCPUについての話。

パソコンの世界ではPentium, CeleronといったIntel系CPUが圧倒的に有名だけど、実はCPUの種類はもっとたくさんあるんだ。 この種類のことをCPUアーキテクチャと呼んでいて、現在のパソコンの世界では、Intel系, PowerPC系のほぼ2つに分けられるんだ。

「PowerPCって聞かないよ?」と思ったかもしれないけど、これはMachintoshに使われているCPUの種類なんだ。PowerPC系のCPUは、IBM, Motorola, FreeScaleなどが開発している。

組込み向けのCPU

みんなの身近には携帯電話をはじめ、ゲーム機、デジタルテレビ、DVDプレーヤ、HDDレコーダ、オーディオ、カーナビなどたくさんのデジタル機器があるよね。 これらにも「Intel入ってる」んだろうか?

答えは「No」。 全く無いとは言い切れないけど、ほとんどはIntel系ではないんだ。 組込み機器にはパソコンとは異なる「組込みに適したCPU」が使われているんだ。 代表的なアーキテクチャとしてSH, V850, ARM, MIPS, PowerPCなどがある。

組込み向けCPUは「マイコン」と呼ばれることもあるんだ。 マイクロコンピュータの略だが、現在のように「パーソナル」なコンピュータが普及していなかった頃は、コンピュータといえばマイコンだったんだ。

マイコンの世界は日本のメーカが高いシェアをもっている。 ルネサステクノロジのSHシリーズなどは幅広いジャンルの製品に採用されていて、セガのゲーム機「DreamCast」にも搭載された。SHは「Super Hitachi」の略なんだ。 ルネサス社は日立製作所と三菱電機の半導体部門が合併してできた会社なんだけど、SH系は日立製作所の半導体部門で開発されていたのでこの名前が付いているんだよ。このほか、NECエレクトロニクスのV850は自動車などに数多く使われているんだ。

携帯電話とデジタルカメラでは、ARM系が多い。 高性能、低消費電力が特徴のCPUだから、その他にもバッテリー駆動の機器で多く採用されているみたいだよ。 ARM系のCPUの面白いところは、開発元の英ARM社がチップを作っていないとこ。 ARM社は、コア部分の設計図をライセンス提供するだけで、各半導体メーカがこの設計図を元に実際のチップを作る方式になっているんだ。 このため、ARM系のCPUは非常にたくさんの種類があるんだよ。 ARMコアのみというものはほとんどなく、各社独自の周辺機能を追加して1チップにまとめたSoC(System On Chip)として販売されている。

MIPS系は、AV家電によく使われている。 ソニーのゲーム機「PlayStation」やロボット犬「AIBO」にもMIPS系のCPUが採用されているんだよ。

PowerPC系は通信インフラやレーザプリンタ複合機などの業務用機器で多く採用されているんだ。

もちろん、Intel系にも組込み向けラインアップがあることはあるんだけど、どうしてもマイナー路線であることは否めない。

互換性

それぞれのCPUアーキテクチャ間には互換性はないんだ。 異なるCPUアーキテクチャの環境で動作させるため場合には、ソフトウエア側も変える必要がある。 CPUが理解できる命令セットや書式などが異なるためなんだ。 プログラムをアセンブラ言語で記述する場合には、完全にそのCPUアーキテクチャに合わせないといけない。

しかし、C言語などの高級言語の場合には、このアーキテクチャの差をコンパイラが吸収してくれるんだ。 つまり、CPUアーキテクチャにあわせたコンパイラがあるということだね。 Cのソースコードを開発する側では「さほど」アーキテクチャを意識する必要はない。

・・・ここで「さほど」と書いているのがポイント(笑)実際には、

-------------------------------------------------------------------------------
Intel系システムで動いていたソースコードを
SH系コンパイラでコンパイルしてSH系システムで動かすと、例外になった。
-------------------------------------------------------------------------------
                

なんていうことが日常茶飯事で起こってしまうんだ。

ユーザアプリケーションなど上位レイヤであれば問題となることは少ないと思うけど、デバイスドライバなどのハードウエアに近い下位レイヤを開発する場合には、少なからずCPUアーキテクチャを意識したソースコードを書くスキルが必要になってくるんだ。

それが「エンディアン」であったり、「アライメント」であったり、「NULLポインタアクセス」だったりする。 これらについては、いずれこのコラムでも取り上げていく予定だ。

組込み開発の業務内容ではこのような「異なるアーキテクチャへの移植」が大きなウェイトを占めているのも事実。しかし、組込み向けのソフトウエアは、異なるCPUアーキテクチャに移植されることを想定して設計されているべきものなんだ。

次回は「エンディアン」の話をすることにしよう。

ページのトップへ