XMOSプログラミング入門
XMOS? キャッチフレーズ Inmos社がかつて開発したTransputerの流れを汲むプロセッサ (TransputerはOccamで記述される,超並列マシン) それがXMOSという名前で生まれ変わった XMOSを使用すれば…. FPGA並みの処理をソフトウェアで実現できる RTOSなしで並列処理を実現できる キャッチフレーズ Event-driven multi-threaded processor XMOS = CSPモデル・チップ
XMOSとは まえがき XMOSのコアがイベント駆動型のマルチコアであり、複数のイベントを 複数のコアで同時に処理できる 32bitマルチコアプロセッサ XMOSのコアがイベント駆動型のマルチコアであり、複数のイベントを 複数のコアで同時に処理できる コア間の同期・情報交換のチャネル通信により,悩ましいプログラミン グから解放される リアルタイムOSを必要としないので、設計開発の過程が簡素化 応答が早く、FPGAの領域にも利用できる 安全なプログラム開発 柔軟性や拡張性に富む システム開発の期間が大幅に短縮できる 開発コストが激減 開発言語にC言語を拡張したXC言語を使用
FPGAとの比較 XMOS FPGA ASIC Design Entry C/C++/XC Verilog/VHDL “Compile”Times Seconds Hours Days Design Chaneges Recompile single source Repeat chip level P&R, timing closure and verification IP Migration Rapid retarget Often redesign to new rules & specs “Program” Data ~few Kbytes ~Mbytes Archieving necessary Performance “Thread scheduler” ensures guaranteed performance of function Hand-fitting and low level manipulation of the silicon and the design tools. Subsequent design changes can force repeating the hand-fitting process
Chapter1 XMOSプロセッサ
XMOSプロセッサの構成 XMOSはいくつかのコア(プロセス処理部分)が存在し, それぞれが通信機能を持って並列に処理していく XC言語でプログラムした動作を行う → 論理コア(Logical Core) 複数の論理コアと通信機能・I/Oポート等を付加したもの → “xCORE Tile” 複数のxCORE Tileによって構成されているもの → ”xCORE” 論理コアやxCORE Tileの数はデバイスによって異なり, 必要に応じてコアの数を選択できる 例えば:4つのxCORE Tileにそれぞれ8個の論理コア →32個のプロセスを並列に動かせる
デバイスの構成単位 xCORE Tile XCで開発したソフトウェアを格納するOTP(On-Time Programmable)メモリ?
xCOREの構成 先のスライド及び左の図がxCORE Tile 右が複数のxCORE Tileで構成されたxCORE xCORE Tile
XS1-L8 xCORE Tile一つで構成されているデバイスで今後,進めていく (汎用デバイス XS1-L8) 8個の論理コア 8個の論理コア 400MHz or 500MHz xCORE Tileが400MHzの場合,論理コア内の周波数は400を分割したものになる 例:論理コアが8つの場合,それぞれは400/8 = 50MHz I/Oポート xCONNECT 論理コア間の接続機能
I/Oポート XMOSプロセッサの主な役目 計算結果を得ることではなく,I/Oピンの動作を得ること I/Oポートを各論理コアで操作して,任意の動作をするICチップの実現 I/Oピンの応答に特化し,10ns単位で操作できる 各論理コアがI/Oポートのイベントを入力待ちできる為, イベント駆動型のマルチコアといわれる I/Oポートのイベントを入力待ちする間,プログラムの進行を停止できる 熱問題・エネルギー問題など地球環境を考慮した,今必要とされる設計モデル
リンクによる通信と同期 論理コア間の接続機能を担うブロックをxCONNECTと呼ぶ 任意の論理コア間に対し一対一通信を実現 “Channel End” チャネル端子 送信データと相手先のアドレス情報ともにセット “Internal Link” 内部リンク 通信経路 “Switch” 添付されたアドレス情報を元にデータの行く経路を設定 “External Link” 外部リンク 他タイルへの通信経路
アドレス情報に基づき, 自動的にSwitchによって同期する経路を決定する
論理コア間の同期 送受信するコアの処理は,送受信タイミングで同期が取られる プロセス チャネル 論理コアがチャネル端子からデータを受け取るとき,データ到着イベントを入力待ち (この間,停止状態) 送信側も,相手の受信完了イベントの到着を待って次のイベントに遷移する 送受信するコアの処理は,送受信タイミングで同期が取られる →データの取りこぼしが原理的に生じない 複数の論理コアが同期通信しながら処理を同時に進行する動作モデル これはCSPモデルに他ならない 論理コアで実行するプログラム プロセス リンクとスイッチで構成される通信路 チャネル
割り込みとイベント駆動 リアルタイムシステム:システム外部の要因で処理時間が制約を受けるシステム ただ単に速い処理速度以外に,“瞬時に”,“適時に”処理する その一つの解決策がリアルタイムOS 懸念として 割り込みの遅延は許されるのか 処理しなければならない事象が2つ 発生した場合は? XMOSならば独立した論理コアにより “同時に”処理できるので割り込まれた 処理などは原理的に存在しない 時間 通常処理 割り込み発生 復帰命令 PC,SRなどの復帰 PC,SRなどを退避 割り込み処理へジャンプ 割り込み処理
開発言語 C/C++言語を拡張したXC言語が用いられる 拡張された部分もあるが,制限がかかる部分もある C XC 浮動小数点演算 ポインタ 通信,I/O,イベントの扱い 並列性の記述 複数パラメータ・リターン
プロセスの記述 XMOSの動作モデルはCSPモデルに他ならない 通信機能を持ったプロセスP1・P2・P3が→が示すチャネルに従って通信する XMOSでは 各論理コアでのプログラム = プロセス チャネル端子とリンクなどで作られる通信経路 = チャネルに対応 P1 P2 P3
プロセス表記の拡張 DFDにおけるプロセスの挙動を詳しく表現するための修飾記号 セレクト入出力 パラレル入出力 外部イベント入出力 入力の早いものを選択 タイマイベント・I/Oポートイベントにも使用できる Process パラレル入出力 すべての入力を受け取った時点でチャネル入力を完了する Process 外部イベント入出力 外界とのインターフェイスできる 左側が外界 取得したイベントはプロセスに並列に処理 Process
拡張プロセス表記の例 個別指導の学習塾 営業報告 入庫 管理 駐車場の入出庫管理 出庫 ゲート 生徒1 生徒2 先生 生徒3 営業1 支店長 営業2 営業3 本社 営業報告 入庫 管理 駐車場の入出庫管理 出庫 ゲート
Chapter3 開発環境のインストール Windowsでも起動できます
Chapter4 XMOSプログラミング
Send-read Send Read ch 送信する度,値を1増やす
select Send1 Send2 Read Send3 準備ができたものからReadは取得する Sendはそれぞれ贈る感覚を変えている
parallel Send1 Send2 Read Send3 ReadはすべてのSendからプロセスを 取得しなければ,次のプロセスに進めない
哲学者の食事問題 Fork Philos(0) Philos(1) Philos(2) Philos(3)
Fork Philos(0) Philos(1) Philos(2) Philos(3) FootMan
Philos Tile 0 Tile 1 Philos1 Fork1 Philos2 Fork2 Philos3 Fork3 Philos4
Tile 2 Tile 0 Tile 1 Printer Philos1 Fork1 Philos2 Fork2 Philos3 Fork3