かつて、電子工作におけるプロセッサ選びはさほど難しいことではありませんでした。当時は選択肢もあまりなく、Intel8080、Motorola6800、CBM6502、H8 といった主要なものを使用していればよかったのです。これらのチップは、現代のものとは異なり、メモリ未搭載のシンプルな8bitプロセッサーでした。
それが現在では非常に複雑な構成をもつようになってきました。特にNXP製マイクロコントローラを搭載したmbedモジュールは
クラウドによる開発環境を提供するにまでに至りました。今回の記事では、プロセッサの選び方を考えるとともに、このmbedモジュールの優位性をお話します。
近年、独自の命令セットとアーキテクチャを持った、8・16・32、さらには64bitのプロセッサが、多くのチップメーカーからリリースされています。さらに、ほとんどのマイクロコントローラーファミリーは、クロック速度、メモリサイズ、周辺制御などの部分で幅広い商品ラインナップを持っています。ここに、近年普及が著しいARM社製コアを搭載したモデルを考えると、状況はさらに複雑になっています。実質的にメインチップメーカーの主要製品にはARMのコアを使用している状況です。
一見選択が容易になるように思われますが、ARMコアには非常に多くのバリエーションがあり、フラストレーションが溜まり、頭をかきむしりたくなります。ARM7,ARM9,ARM11、そして新しいCortexシリーズとそれらすべてに亜種が存在しています。
これら全てを見ていくことは難しいので、今回はARM製品の中のCortexシリーズだけを見ていきましょう。CortexにはCortex-M、Cortex-A、Cortex-Rの3つの主要なグループがあります。他のARMコアからCortexデバイスに分ける主な共通の特徴は、組み込み制御システムにより適した内蔵の割り込みコントローラーです。
Cortex-A
Cortex-Aベースのデバイスは、プログラム用の外部動的RAMを使用しているため、非常に速いマイクロプロセッサです。RAMが使用されているのは、フラッシュメモリ技術では、ハイエンドのマルチディアや通信システムに必要な500MHzを超過するプロセッサのクロック速度には十分な速度が出せないからです。
Cortex-R
Cortex-Rベースもまたプログラム用に外部メモリを使用した高速なプロセッサです。さらにリアルタイム制御だけではなく、信頼性を確保するためエラー訂正などの機能を持っています。これにより自動車などの高信頼性を求められるアプリケーションに用いられます。Texas InstrumentsのHerculesのfault-tolerantマイコンはCortex-R4Fに基づいています。このテーマに関しては、こちらの記事を参照してください。
Cortex-M
Cortex-Mベースのデバイスはその応用範囲の広さが武器です。最も汎用の組込みアプリケーションに適したオンチップ・フラッシュ・プログラム・メモリ・を搭載したマイコンです。ほとんどのメーカーはそのラインナップにCortex-Mデバイスを採用しています。Mシリーズ内のそれぞれの違いを詳しく見ていきましょう。
最も人気のシリーズは、効率的で包括的な32bit命令セットを持つM3でしょう。Cortex-mデバイスは、32bitの力を使わずに効率を向上させる、"Thumb"と呼ばれる16bit命令セットを備えています。mbed 「NXP LPC 1768デバイス」などに採用されており、性能的にはマイクロチップ社のPIC32とほぼ同等であると考えられます。
つぎに、M3の命令セットにDSP用のセットを追加したM4。リアルタイム・デジタルFIRフィルタを実装したり、高速フーリエ変換(FFT)を用いて周波数分析を行うとき、遙かに効率的なコードをつくることができます。M4コアを持つ製品には、フリースケールのKinetis K40があります。
続いてM4セットに浮動小数点数学の命令が追加されたM4Fを見てきましょう。これらの命令を使用するコードは、ソフトウェア・ルーチンを使用した時、他のものよりも5~6回分高速に実行できます。STマイクロエレクトロニクス社がSTM32F4デバイスでこのコアを使用しています。
次にmbedモジュールの話に戻りましょう。mbed NXP LPC11U24は、Cortex-M0を採用したNXPのLPC11U24プロセッサを搭載しています。16bitのThumb命令セットを搭載したRISCマシンで、非常にシンプルで、安く、省電力で動作します。したがって、携帯機器・バッテリ駆動システムといったアプリケーションに用いられます。複数のスリープモードがあり、割り込みと次の割り込みの間をスリープ状態に戻ることで、消費電力を抑えています。詳しくはこちらの記事をご覧下さい。