xCORE徹底研究

XMOS コーナ
簡易スペアナづくりにも挑戦
オーディオ/モータ/信号処理…タスク数個のゴリゴリリアルタイム用途にピタッ!
並列処理プロセッサ
xCORE 徹底研究
第3回
MCU
でも
FPG
Aでも
ない
ヘンテ
コッ
!?
ソフトでリアルタイムI/O を簡単に実現するメカニズム
前回は,英国 XMOS 社がリリースした,複数の 32
ビット CPU コアを内蔵してプログラムを並列処理す
る組み込み向けマルチコア・プロセッサ xCORE の
アーキテクチャと,専用プログラム言語 XC による
並列プログラムの記述方法を解説しました.xCORE
は 1 デバイスあたり 4 個から最大 32 個の CPU コアを
内蔵して並列処理させるものであり,それらのコア
を効率的にどのように使いこなすかに悩むことは大
変楽しいものです.入手性のよい安価な評価ボード
「startKIT」が リ リ ー ス さ れ て お り 誰 で も 簡 単 に
xCORE アーキテクチャに触れることができます.
今回は,xCORE の特徴の一つである,ハードウェ
ア機能をソフトウェアで柔軟に実現する機能と,そ
の XC 言語での記述方法について解説します.
周辺機能に対する基本思想
● 参考:一般のマイコンの場合…ソフトで実現
すると正確なタイミングを実現しにくい
一般のマイコンで CPU によるソフトウェアを使っ
てタイミングに応じた処理をする場合,周辺機能のタ
イマなどから受ける割り込み要求に同期させたり,周
辺機能のレジスタをポーリングするなどで同期させた
りするなどの方法があります.しかし,割り込みによ
る方法の場合,割り込み応答時間の長さにより高精度
なタイミング同期ができず,また優先順位が高い割り
込みサービスを処理中だと,さらに応答時間が長くな
る問題が出て,あまり正確なタイミング処理ができま
せん.レジスタをポーリングする方法では,待ち時間
が長くなりマイコン内の唯一の CPU リソースを無駄
にしてしまう問題があります.
● ハードウェア制御に不可欠なタイミングの概念
● シリアルやタイマなどの簡単な周辺機能はソフ
トで実現する
xCORE というデバイスは,複数の 32 ビット CPU
コ ア を 内 蔵 し た マ ル チ コ ア な 組 み 込 み 向 け MCU
(Micro Controller Unit)です.各コアは DSP(Digital
Signal Processor)機能も含んでおり,そのトータル
性能は,8 コア内蔵品で最高 500MIPS,16 コア内蔵品
で最高 1000MIPS にのぼり,非常に高性能なマイコン
です.
一方,周辺機能としては,USB 2.0(Universal Serial
Bus)や A-D 変換器は内蔵していますが,一般的なマ
イコンが持つシリアル通信機能や波形入出力用タイマ
機能といった,比較的シンプルな論理回路で実現でき
る機能は内蔵されていません.シリアルやタイマなど
は,CPU コアとタイミング制御付きの I/O 機能を使っ
てソフトウェアで実現するのが基本的な考え方になっ
ています.
この考え方によりxCORE は,FPGA(Field Progra
mmable Gate Array)のようなハードウェアに対する
フレキシビリティも提供できるのです.
2015 年 3 月号
圓山 宗智
外部の入出力信号を相手にするシリアル通信機能や
タイマ機能は,一般に論理回路というハードウェアで
実現しており,その動作にはクロック信号が必要で
す.そのクロックを基準にして,外部からの入力信号
をサンプリングしたり,外部への出力信号の変化タイ
ミングを決めたりします.
xCORE で外部の入出力信号を相手にするハード
ウェア機能を実現する場合も,XC 言語によるソフト
ウェアで記述しますが,クロックに対応するタイミン
グ概念を簡単かつ効率的に実現する方法を提供してく
れています.以下,その実例をいくつか説明します.
ソフトからタイミング制御するキモ!
10ns 刻みハードウェア・タイマ
● 時計機能を実現するハードウェア・タイマ
xCORE ア ー キ テ ク チ ャ に は,10ns 刻 み で カ ウ ン
ト・アップするカウンタ(ハードウェア・タイマ)が
内蔵されており,それを基準時計としてソフトウェア
から簡単にアクセスできます.
ハードウェア・タイマ を XC 言語から読み取る方
法をリスト 1(a)に示します.timer という型の変数
第1回 アーキテクチャと開発環境(2014年12月号)
第2回 K&Rベース拡張C言語XCによる並列処理プログラミング入門(2015年1月号)
145