XMOSのコンテキストスイッチング - Tokyo Metropolitan …...XMOSチップ概要. •...

Preview:

Citation preview

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で対応    

Recommended