リアルなクモ型ロボットを制御する10米ドルマイコン「xCORE」:マイコン1つで26個のモーターを制御!(2/3 ページ)
東京エレクトロン デバイス(TED)は2014年6月、英国のマイコンメーカーであるXMOS(エックスモス)と販売代理店契約を締結し、子会社のパネトロンを通じ、XMOSのマルチコアマイコン「xCORE」の取り扱いを開始した。多数のモーターをリアルタイム制御できるなどのxCOREの特長を生かし、産業機器や車載機器市場での拡販を行っていく。
マルチコアで超高速応答
シングルコアのマイコンであれば、処理中に重要なイベントが発生した場合、割り込み処理を行う。仮に重要なタスクが同時に2つ、3つと増えた場合、優先順位の高いものから処理を行うため、比較的優先度の高い処理でも、“いつ処理が終わるか”は保証されない。そのため、確実に実行したい処理がある場合、FPGAなどを使った専用ハードを用意する必要がある。一方で、独立した4〜16のコアを持つxCOREでは、1つの処理を1つのコアで行うので、2つ目、3つ目の処理が発生した場合でも2つ目、3つ目のコアがそれぞれ処理を担当するため、基本的に処理待ち時間がなくなる。また、1コアごとの処理性能が保証されており、決まった時間で確実に処理を実行できる。
xCOREの処理性能は、1ダイ(XMOSは「タイル」と呼ぶ)当たり500MIPSとなっており、4コア搭載のダイであれば、1コア当たり125MIPS、8コア搭載ダイであれば1コア当たり62.5MIPSの処理性能が保証されている。なお、16コア品は8コア搭載ダイ2枚の構成で実現し、8コア品には、8コアダイ1つで構成する500MIPS品と4コアダイ2つで構成する1000MIPS品も存在する。内蔵メモリは、1ダイ当たり64Kバイト容量のSRAMのみ(セキュリティ用のOTP ROMを除く)と小さいが、「割り込みがないため、キャッシュメモリの必要性が極めて小さく64Kバイトで十分」(山本氏)という。なお、メモリは外付けすることも可能だ。
単純なプログラミングで対応可能
ただ、こうしたマルチコア構成の場合、各コアへのタスクの振り分けなどプログラムが煩雑になるケースが多い。それに対し、xCOREでは、複雑な割り込み処理が存在しないためリアルタイムOSが不要。さらに、さまざまな処理をスレッドとして定義しながら、C/C++でプログラムするだけで、各コアへのスレッドの振り分けなどは、コンパイラが自動的に行う開発環境が用意されている。スレッド間の連携などは、独自のXC言語を使う必要があるが、「C言語ベースであり難しいものではない。“このスレッドの次はこのスレッドを処理させる”など、処理構造のツリーを書くような感じで、単純に記述するだけで至って簡単だろう」(山本氏)とする。
柔軟なI/Oポート
多くの処理を行えるデバイスでも、I/Oポートの種類や数により、I/O用のデバイスを用意しなければならないことが多い。だが、コンフィギュアラブルなハードウェア レスポンス ポートによりxCOREでは、外付けI/O用デバイスの必要性を大きく抑えている。このハードウェア レスポンス ポートは、ソフトウェアでGPIO、PWM、SPI、I2Sなどの各種I/Oとして設定可能。設定用ソフトウェアは、IPとして無償で配布されているため、ユーザーは自在にI/O選択するというイメージでI/O設定できる。ポート数も48ピン品で28ポート、124ピン品で84ポートと十分用意されている。ハードウェア レスポンス ポートは、各コアにキャッシュやバスを挟まずに直結されており、応答速度も「10nsで高速」(山本氏)としている。
リアルタイム重視、多種多様な入出力求める用途
XMOSでは、こうした特長を持つxCOREの応用用途として、多種多様な入出力が必要で、高速な応答速度を求めるアプリケーションと想定し、まず、その1つとしてUSB-DACに焦点を当て事業を展開。コアを搭載したダイ(コアタイル)と、USB2.0 PHYや多チャンネルA/DコンバータなどUSB-DACを意識したペリフェラルを搭載したダイ(USBタイル)を1パッケージにした「xCORE USBファミリ」を製品化し、オーディオ機器市場でのシェアを獲得してきた。
Copyright © ITmedia, Inc. All Rights Reserved.