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アーキテクチャに移植されることを想定して設計されているべきものなんだ。
次回は「エンディアン」の話をすることにしよう。
-
- 第1回 組込みシステムのこれから
- 第2回 IoTの成功はセキュリティ次第
- 第3回 組込みでもGPUやFPGAと早めに親しんでおこう
- 第4回 電子産業の紅白歌合戦、CEATECで垣間見えた未来
- 第5回 小口開発案件の集合市場、IoTの歩き方(上)
- 第6回 小口開発案件の集合市場、IoTの歩き方(下)
- 第7回 徹底予習:AI時代の組込みシステム開発のお仕事
- 第8回 いまどきのセンサー(上):ありのままの状態を知る
- 第9回 いまどきのセンサー(下):データを賢く取捨選択する
- 第10回 組込みブロックチェーンの衝撃(上)
- 第11回 組込みブロックチェーンの衝撃(下)
- 第12回 エネルギーハーベスティングの使い所、使い方
- 第13回 「人を育てる」から「道具を育てる」へ、農業から学ぶAI有効活用法
- 第14回 CPS時代に組込みシステム開発に求められることとは
- 第15回 次世代車のE/Eアーキテクチャに見る組込みの進む道
- 第16回 RISC-Vが拓く専用プロセッサの時代
- 第17回 振動計測の大進化で、熟練エンジニアのスキルを広く身近に
-
- 零の巻:組込みというお仕事
- 壱の巻:2進数と16進数を覚えよう!
- 弐の巻:割り込みとポーリング
- 参の巻:printf()が使えない?
- 四の巻:これにもIntelが入ってるの?
- 五の巻:Endianってなに?
- 六の巻:マルチタスクとは
- 七の巻:スタックってなあに?(1)
- 七の巻:スタックってなあに?(2)
- 八の巻:メモリを壊してみましょう
- 九の巻:コードが消える?~最適化の罠~
- 拾の巻:例外が発生しました
- 拾壱の巻:コードサイズを聞かれたら
- 拾弐の巻:キャッシュは諸刃の剣
- 拾参の巻:デバイスにアクセスするには
- 拾四の巻:セキュリティってなに?(1)
- 拾四の巻:セキュリティってなに?(2)
- 拾四の巻:セキュリティってなに?(3)
- 拾五の巻 :DMA対応と言われたら(1)
- 拾五の巻 :DMA対応と言われたら(2)
- 拾六の巻:ヒープとスタック
- 拾七の巻:フラグメンテーション
- 拾八の巻:CPU起動とブートローダ
- 拾九の巻:kmとKByteの「kとK」
- ビリーへの質問:DMAとキャッシュの関係
- ビリーへの質問:スタックオーバーフローについて
- ビリーへの質問:CPUレジスタについて