XMOSのコンテキストスイッチング 首都大学東京・数理情報科学専攻 福永 力 24.05.2014 1 第13回CSP研究会 於東洋大学白山キャンパス
XMOSのコンテキストスイッチング
首都大学東京・数理情報科学専攻 福永 力
24.05.2014 1
第13
回CSP研
究会
於東
洋大
学白
山キ
ャン
パス
目次
1. XMOSについて (なぜ今XMOSのハードウェア?) 2. XMOSの特許書類の調査 3. XMOSのハードウェア概要
i. ハードウェアによるEvent、Interrupt、Channelの実現 ii. Thread Scheduling (コンテキストスイッチング) iii. System switching (Network) iv. System switch ルーティング構造
4. まとめ
24.05.2014 第13回CSP研究会 於東洋大学白山キャンパス 2
なぜ今XMOSのハードウェアの話題か?
• XMOSに関する研究、応用実例は本研究会でも取り上げられてきている. • 応用事例、製品紹介、プログラム書法に関する発表が主で、そのハードウェ
アに関する報告があまりなされていない. • XMOS設計の基本原理はCSPモデルにほかならない、つまりtransputerの21世
紀版プロセッサといえる. • transputerは3段のスタックレジスタとメモリのみでCSPの基本原理を実現. • XMOSはevent、channel、parallel processing(MulH-‐thread)、Network switch
などのCSPコンストラクタを専用回路で実現しているとされる.
• 今、画像解析や車載エレキ制御にメニーコアによる実現が注目されている. • 単純な割込み処理でのエンジン制御は限界に来ている. • CSP based XMOSは次世代車載エレキのプロセッサ候補になりえるか? • ハードを知ることによりその可能性に対する評価が下せるのではないか. • 今回はその第一歩としてハードウェアでの各種CSPコンストラクタがどのよう
に実現されたかについて紹介したい. 24.05.2014 第13回CSP研究会 於東洋大学白山キャンパス 3
XMOSチップ概要 • xCOREチップは複数(4~16)のlogical cores(独立プロセッサ)をもつHMT • 動作周波数は400~500MHz • 1つのLogical coreは125MIPSなので、チップ全体で400~1000MIPSの計算能力
があるとされる (データ、図ともにXMOSのホームページより借用).
• それらはxCONNECT(Network switch)で繋がれている. • 各Logical coreは外部portsからの入出力処理(event)を担当.PortのH/Wは
標準化され、その先にどのようなI/O deviceがあっても共通なI/O処理を実行 • Logical core間の、また他のxCORE HleのLogical coreとのコミュニケーション
がchannelを通して行える. • Channelはその相手がどこにいるか
表面(S/W)上は意識しない. • なおこのトークではxCOREを(I/O)
Processor、Logical coreをthread、 xCONNECTをsystem switchなどと 表現する場合もあります.
24.05.2014 第13回CSP研究会 於東洋大学白山キャンパス 4
今回のハードウェア概略に使用した特許資料 1. EP2365440A1 Program flow route constructor 2. EP2369489A1 Structural analyzer 3. JP2010525436A 時限ポート
4. JP2010526383A コンパクト命令セットの符号化
5. JP2010528384A プロセッサにおけるスレッドのスケジューリング
6. JP2010532540A トークンプロトコール
7. JPA_2010521731 メッセージルーティング構造
8. US2009013331A1 Token Protocol 9. US2009013397A1 Processor communicaHon tokens 10. US2011066825A1 Message rouHng scheme 11. US2011131558A1 Link-‐Hme resource allocaHon for a mulH-‐thread processor architecture 12. US2011131559A1 Compiling and linking 13. WO2008110804A1 Processor instrucHon set 14. WO2008110807A1 Processor instrucHon set 15. WO2008125669A1 Clocked port 16. WO2009007169A1 SynchronizaHon in a mulH-‐thread processor 17. WO2009007170A1 Data transfer between thread register sets 18. WO2009007171A1 Processor communicaHon tokens 19. WO2010000749A1 Integrated circuit structure 20. WO2010046314A1 So^ware development environment 21. WO2011067254A1 Timing analysis
24.05.2014 第13回CSP研究会 於東洋大学白山キャンパス 5
xCORE-‐Logic cores(14)
xCONNECT(7)
H/W response port(8)
XMOSアイデアの原型(1)
• XMOSはMobile端末利用として考案された. • 各Logic coreは外部(標準)ポートとのIntelligent Interface Processorと
して利用し、繋がれた外部デバイスの多様性はlogical coreにインストールされるs/wが吸収.
24.05.2014 第13回CSP研究会 於東洋大学白山キャンパス 6
XMOS特許資料より
XMOSアイデアの原型(2)
• 最初からメニーコア用のProcessorを意識 • Processor (xCORE) Tile (xCORE) network
24.05.2014 第13回CSP研究会 於東洋大学白山キャンパス 7
xCONNECT xCORE(14)
Processor(xCORE) structure
• Processor(xCORE) – Thread(Logical core)ごとにregister set(20) – Thread scheduler(動的スケジュール管理)(18) – 入出力用ports(22) – Threadごとの命令
バッファ(19) – 各部分はバスではなく
ダイレクト結線 (27,28,29,30,31)
– 実行部(ExecuHon unit;16)とメモリ(24) はバス結合(13)
XMOSのハードウェア概要-‐Processor
24.05.2014 第13回CSP研究会 於東洋大学白山キャンパス 8
I/O Portとevent
24.05.2014 第13回CSP研究会 於東洋大学白山キャンパス 9
Registers for Port I/O
Enable Ready
• event(I/O portからの割込み)手続き (黒:Thread scheduler、赤:Port) – Portに対してVECTOR(event後の実行アドレス)設定 – TID(Thread ID)に該当Thread ID書き込み – CTRLとDATA(ガード用条件とデータ)設定(Portからの入力のみ) – Port Enable(39)設定
– Thread SR Event Enable設定(SR=Status Register;この図には示されず) – Thread event-‐wait命令発行 – ThreadのINSTRバッファクリア – Portにデータ→Readyセット – TID、VECTOR値をThread
scheduler, ExecuHon unit に戻す
– SR Event disable – VECTOR(アドレス)から実行再開
Port Structure
INSTR
Logical core registers
24.05.2014 第13回CSP研究会 於東洋大学白山キャンパス 10
• 各Logical core(Thread)ごとに同一なregister set(20) – Control Registers 【Program Counter (PC), Status Register (SR)】 – Access registers 【GP(Global), DP(Data), SP(Stack), LR(Link)】 – Operand register (OP1..OP12)
(汎用registerとして使用)
• ThreadごとのINSTR buffer(19) – 64bit (InstrucHon 16bit×4)
• Thread Scheduler(18) – 実行可能なthreadsをrun setに設定 – Threads in run setはround-‐robinで実行 – event/channel instrucHonでpaused threadは
run setから外れる(paused table)
• Interconnect system-‐xCONNECT(40) • 各SRとThread Schedulerは専用ダイレクト結線(高速応答)
Paused table
Channel input buffer Channel output buffer
Interconnect system(xCONNECT)とChannel End
24.05.2014 第13回CSP研究会 於東洋大学白山キャンパス 11
• xCONNECTとchannel End – 2 Logical cores(20)間channel通信はそれぞれ独立にxCONNECT(40)内の
異なるchannel end(42)を利用し、channel通信を行う. – xCORE内に8個(3bit)のLogical cores、32個(5bit)のchannel ends(8bit) – Channel output buffer: Channel endごとにoutput命令において相手先
Addr. (接続情報) – Channel input buffer:
input命令用入力情報
CTRL
DATA
ready
ready enable
Channel end unit
connect claim
• Port構造に似ているが、I/Oで別仕立て • I/O独立にbuffer(44,46)とword count
reg. #(47) • 2 ends間でFull duplex通信ができる • Connect flag(43):相手先Ch. End
とのconnecHon成立 • Claimed flag(45)by Logical core • CEID(Channel End ID)(41):
自分のアドレス(通信相手が書き込む) • Ready flag(37’) • Enable flag(39’; Inputのみ) • Port registerと同じCh. End registers(38’)
(Inputのみ) • Streamed channel (in xCORE)&
PackeHzed channel(message end=END token)
Channel end構造
24.05.2014 第13回CSP研究会 於東洋大学白山キャンパス 12
Token 10bit for a byte
Passing Message 例
• System switch – Link system(222,220,218) – Full duplex channel(双方向通信)接続
• 各方向Dual rail NRTZ(2 lines)のシリアル転送 • 各方向5 lines×4Hmesの4bit同時シリアル転送
(one-‐of-‐five code)(218)
– Token交換時以外Switchは完全静止状態
• Token(2メッセージ単位=1バイト) – メッセージ(データ)、制御信号は
Token列で転送される – Token(900)は1バイト(901)+1bit(データ/制御識別;902)
+1bit(903;偶奇バランス)(2 linesの場合)
System switchとToken構造
24.05.2014 第13回CSP研究会 於東洋大学白山キャンパス 13
Look-‐up table
• Look-‐up table in switch – 各switchにlook-‐up tableを置き、
メッセージヘッダーのNode/Processor/ channel end情報から最適ルートの 迅速な決定
– 上位bitから区域を狭めていく
• 1次元、2次元ネットワーク最適化例
メッセージルーティング構造
24.05.2014 第13回CSP研究会 於東洋大学白山キャンパス 14
000へgo! 1100へgo! x100へ xx00へ
xxx0へ x00へ
xx0へ
3次元、4次元トポロジーへの対応可能
• メニーコアにホットな視線が様々な方面から集まってきている. • 自動運転を含めた車載エレクトロニクスの新しい動きにメニーコアを応用しよう
という動きもある. • このような流れの中でCSPのセマンティクスを実現させたXMOSにメニーコアの1
コアが担えるか検討していきたい. • XMOSはevent、channel、mulH-‐threadingを完全にハードウェアのみで実現
させていることがわかった.またchannel通信の普遍性も実現されている. • XMOSをメニーコアに導入すればCSPのもつthreads間channel利用による安全
(safe)で決定論的(determinisHc)な通信、同期がはかれると期待できる. • Channel通信の普遍性から相手方threadがlocal/remote問わず通信が簡単な
プロトコールで実現される.したがってスケーラブルな拡張(thread→ processor → core Hle →)で大規模なメニーコアシステムが短期間で完成できると期待.
• 今後実際のパフォーマンス、消費電力などの評価を踏まえてXMOSのメニーコア組込みの可能性を検討していきたい.
まとめ
24.05.2014 第13回CSP研究会 於東洋大学白山キャンパス 15
• 冒頭で上げたXMOS特許資料以外にXMOS社が発行している以下の資料を参考にしました. – David May, The XMOS XS1 Architecture – XS1 Link Performance and Design Guidelines – XS1-‐L4A-‐64-‐TQ48 Datasheet
参考文献
24.05.2014 第13回CSP研究会 於東洋大学白山キャンパス 16
• Narrow, serial mode(Dual rail NRTZ) – 一方向2本のラインでシリアル転送(1Byte=10回)
logical 1(1になる時レベル変化)とlogical 0(0になる時レベル変化) – System switchを静止状態に保つため常に偶数回の転送
• Wide, fast mode(1-‐to-‐5 mode) – 一方向5本のライン(4本でそのどれか1つが1で数値:x0001=0〜x1000=3).
これを4回繰り返し43v1+42v2+41v3+v4で0から255までのデータを表す. – xはescape信号、v1v2v3v4で0から256のデータ、xv2v3v4、v1xv3v4、v1v2xv4、
v1v2v3xで4種類のコントロールトークン(それぞれ64個)を示す.
Link Mode (Back up1)
24.05.2014 第13回CSP研究会 於東洋大学白山キャンパス 17
• 4段のpipe-‐line structure/thread
ExecuHon unit構造 (Back up2)
24.05.2014 第13回CSP研究会 於東洋大学白山キャンパス 18
INSTR buffer (4 instrucHons/thread)
ExecuHon unit
ハードウェアによるプロセス待ち行列の実現
• TPCOREは複数の組み合わせネットワークで並列処理を実現するとともに単体でも並列処理が実現 できるようになっている (CSPのプロセス記述の階層化).
• TPCORE単体の複数プロセス並列実現のためプロセス待ち行列をハードウェアで実現している.
• 現在実行されているプロセスの情報のアドレスはWptrで管理され、Fptrが待ちの先頭、Bptrが末尾プロセスを指し示す.Wptri-‐2に次プロセスの情報ブロックがポイントされ待ち行列が作られる.
24.05.2014 第13回CSP研究会 於東洋大学白山キャンパス 19
Back up 3
チャンネル通信(内部) (Back up 4)
24.05.2014 第13回CSP研究会 於東洋大学白山キャンパス 20
PROC P (CHAN in) INT i : in? i:PROC Q (CHAN out) INT j: out! j:
PROC MAIN PAR P(in) Q(out):
• 1 TPCORE内のプロセス間チャンネル通信 • μcodeROMで対応