ソフトウェアで機能を定義するLSIを使ってみた ―― XMOS Semiconductor社「XS1-G」レビュー
3. XCコンパイラによる開発
XMOSアーキテクチャの特徴は,チップとそのプログラムを簡単に行えるXCコンパイラにあります.C言語からの拡張部分を説明します.
● par構文
XCコンパイラの特徴がpar文です(リスト1)
それぞれのスレッドとして定義したプログラム(サブルーチン)をpar文でくくることによって並列に動作させることができます.特にそれぞれのスレッドの優先順位などを定義する必要もありません.並列に動作させることができます.
● chanチャネル
スレッド間のデータの受け渡しを行うチャネルを定義します(リスト2).これによってチャネルがきたときにスレッドを動かすなどの,タスク間の通信を実行できます.Aタスクが終了したらBタスクを動かすなど,OSでいうセマフォやメール・ボックスのような役目も果たすことができます.このチャネルは,1クロック・ステートにて実行されます.
● I/O定義文
XS1_PORT_(アドレス)という形でハードウェア・ポートを定義できます(リスト3).もちろんCPUのI/Oレジスタのような,定義された構成はありませんので,すべてソフトウェアにて定義することができます.
また,ポートへのデータ書き込みもリスト3のような形で書くことができます.
● タイマ変数
時間間隔を生成するためにタイマ関数があります(リスト4).フリー・カウント・タイマとして動作するので,カウンタの値でハードウェアの時間間隔などを作成できます.各スレッドのクロック周波数にて登録可能です.
以上のように,タスク間のチャネルなどの機能があるのみで,タスクの実行順位などOS的な機能,定義は一切ありません.このようにC言語のみでリアルタイム制御を定義できます.FPGAとは違った新しいアーキテクチャを持ったプログラマブル・デバイスといえます.FPGAでプログラムを行うより,チューリング・マシン的な処理になれたソフトウェア・エンジニアにとっては,簡単にハードウェアまでを構成できる方式ともいえます.
● まとめ
XMOSアーキテクチャを考えると,まだまだいろいろな可能性が考えられます.今までインバータ制御や温度制御など,リアルタイムの組み込みシステムを組んできた方であれば,割り込みやタスクのディスパッチを考えないプログラムなど考えられなかった方式です.今後,いろいろな用途での応用が可能なデバイスではないかと思います.
XS1-Gの評価キットには,LCD表示器やA-D/D-Aコンバータなどもついており,ゲームやMP3の再生,グラフィック・イコライザのデモンストレーションなどもXS1のチップで行っており,マルチメディア系にも十分に活用できる性能を持っています.また機会があれば,紹介したいと思います.
XMOSの情報については,ポータル・サイトとしてXlinker(図11)というサイトが運営されています.さまざまなexampleやIPコア的なプログラムが登録され活用することができます.
(
そうだ・やすし
西山工業(株)