FPGAによるメニーコアシミュレータScalableCoreシステムの正当性検証

21
FPGAによるメニーコアシミュレータ ScalableCoreシステムの正当性検証 ◎高前田 伸也,笹河 良介,吉瀬 謙二 東京工業大学 大学院情報理工学研究科 2011-01-18 リコンフィギュラブルシステム研究会@日吉

description

2010-01-18 リコンフィギュラブルシステム研究会@慶応大学日吉

Transcript of FPGAによるメニーコアシミュレータScalableCoreシステムの正当性検証

Page 1: FPGAによるメニーコアシミュレータScalableCoreシステムの正当性検証

FPGAによるメニーコアシミュレータ ScalableCoreシステムの正当性検証

◎高前田 伸也,笹河 良介,吉瀬 謙二 東京工業大学 大学院情報理工学研究科

2011-01-18 リコンフィギュラブルシステム研究会@日吉

Page 2: FPGAによるメニーコアシミュレータScalableCoreシステムの正当性検証

はじめに

n  FPGAベースシミュレータ ScalableCoreシステムと ソフトウェアシミュレータ SimMcの動作比較 l  RTLとソフトウェアシミュレータは 振る舞いが一致

l 実機とサイクル数を比較 •  ソフトウェアによる同期を 入れた場合,最大2%程度の差異

•  ハードウェアによる同期を 入れた場合,完全に一致

2

SimMc ScalableCore

system (RTL)

ScalableCore system

(SW sync)

ScalableCore system

(HW sync)

≒ 98%

Same Behavior

Page 3: FPGAによるメニーコアシミュレータScalableCoreシステムの正当性検証

メニーコアプロセッサの登場です!

3

Intel Single Chip Cloud Computer 48 cores (x86)

TILERA TILE-Gx100 100 cores (MIPS)

Page 4: FPGAによるメニーコアシミュレータScalableCoreシステムの正当性検証

M-Core/SimMc 1.1 [植原ら, IEICEシステム開発論文特集号2010] n  2Dメッシュネットワークにより接続されたNode

l 計算ノードにはコア,ノードメモリ, INCC(ネットワークインターフェース),ルータ

4

MemoryNode(0,0)

PathNode(1,0)

PathNode(2,0)

PathNode(0,1)

PathNode(0,2)

PathNode(0,N)

Comp.Node(1,1)

Comp.Node(2,1)

Comp.Node(1,2)

Comp.Node(2,2)

Comp.Node(M,1)

Comp.Node(M,2)

Comp.Node(1,N)

Comp.Node(2,N)

Comp.Node(M,N)

Many-core processor chip

Off chip main memory

PathNode(M,0)

Core

INCCNodeMemory

Router

Comp. Node(X,Y)

Y-

Y+

X+X-

Pagebuffer

INCC

Router

Mem. Node(0,0)

Y+

X+

Off chip main memory

Router

Path Node(X,Y)

Y-

Y+

X+X-

(b)

(c)

(a)

Page 5: FPGAによるメニーコアシミュレータScalableCoreシステムの正当性検証

何で評価するのか? n 柔軟性 vs. 速度

l 大きいベンチマークを高速に走らせたい・・・よね?

5

Difficulty to construct

Rea

lity

ソフトウェア シミュレーション

FPGA シミュレーション

実チップ 制作

より実チップに近い構成を 高速にシミュレーション

ハードウェア制約のない理想的な構成を

手軽に実現 リアルだが高価

Page 6: FPGAによるメニーコアシミュレータScalableCoreシステムの正当性検証

多数のFPGAを用いた評価環境ScalableCoreシステム [坂口ら,RECONF2010-09] [高前田ら,IPSJ-ACS32]

n  1つのコアを1つのFPGAにマウント→つなげる!! l 各FPGAに独立した…

•  コンフィギュレーションROM •  クロックオシレータ •  SRAM

6

ScalableCore Unit (FPGA) シミュレーション対象の構成要素

Simulation Display: シミュレーション情報を表示

Page 7: FPGAによるメニーコアシミュレータScalableCoreシステムの正当性検証

M-Core on ScalableCoreシステム n M-Coreのサイクルアキューレートな シミュレーション環境 l 各UnitにM-Coreの計算ノードを1つ実装

•  MIPSコア,メモリ,ルータ,ネットワークインターフェース l スケーラブルなシミュレーション速度

•  64ノードシミュレーションで14.2倍高速

7

プログラムローダ

Page 8: FPGAによるメニーコアシミュレータScalableCoreシステムの正当性検証

疑問点 n ソフトウェアシミュレータとScalableCoreシステム どの程度の同じ挙動をするのか? l サイクルレベルで同じ?それともわずかに異なる? l 心配な要素

•  FPGA間同期 –  異なるクロックドメイン・隣接するFPGA間のみ同期

•  ターゲットの1サイクルとFPGA上の1サイクルの違い –  FPGA上の複数サイクルがターゲットの1サイクルに

8

0

3 4

2

1

Sending to Unit 0 Sending to Unit 1 Sending to Unit 2 Sending to Unit 3

Receiving from Unit 0 Receiving from Unit 1

Receiving from Unit 2 Receiving from Unit 3

Sending to Unit 0 Sending to Unit 1 Sending to Unit 2 Sending to Unit 3

Receiving from Unit 0 Receiving from Unit 1

Receiving from Unit 2 Receiving from Unit 3

Cycle 1 Cycle 2

Page 9: FPGAによるメニーコアシミュレータScalableCoreシステムの正当性検証

この発表の目標

n  ScalableCoreシステムの振る舞いの正しさを検証する l  ScalableCoreシステムとソフトウェアシミュレータSimMc, 2つの振る舞いを比較

n  2段階の比較・検討 l  ScalableCoreシステム RTL vs. SimMc (1)

•  サイクルレベルで各状態を比較 l  ScalableCoreシステム 実機 vs. SimMc

•  シミュレーション実行サイクル数を比較 •  プログラムの実行開始・完了に同期を挿入

–  ソフトウェアによる同期 (2) –  ハードウェアによる同期 (3)

9

Page 10: FPGAによるメニーコアシミュレータScalableCoreシステムの正当性検証

ScalableCoreシステム RTL vs. SimMc n ターゲットプロセッサの構成: M-Core

l ノード数: 最大4×4の16ノード l コア: MIPS32 1命令/1サイクル・シングルサイクル l ローカルメモリ: 512KB・4ポート (IF,MA,INCC-R, INCC-W) l ルータ: 仮想チャネル無し・8ビット幅・入力バッファ4エントリ スイッチアロケーションは固定された優先度に従う

10

MemoryNode(0,0)

PathNode(1,0)

PathNode(2,0)

PathNode(0,1)

PathNode(0,2)

PathNode(0,N)

Comp.Node(1,1)

Comp.Node(2,1)

Comp.Node(1,2)

Comp.Node(2,2)

Comp.Node(M,1)

Comp.Node(M,2)

Comp.Node(1,N)

Comp.Node(2,N)

Comp.Node(M,N)

Many-core processor chip

Off chip main memory

PathNode(M,0)

Core

INCCNodeMemory

Router

Comp. Node(X,Y)

Y-

Y+

X+X-

Pagebuffer

INCC

Router

Mem. Node(0,0)

Y+

X+

Off chip main memory

Router

Path Node(X,Y)

Y-

Y+

X+X-

(b)

(c)

(a)

Page 11: FPGAによるメニーコアシミュレータScalableCoreシステムの正当性検証

RTL vs. SimMc: 実験環境

n  RTL: Icarus Verilog 0.9.3 n  SimMc: 1.0 (ルータ幅 8ビット)

n 各項目をファイルに出力し,grep & diffで比較 l コアID l サイクル番号 l 実行命令 l プログラムカウンタ l  INCC(ネットワークインターフェース)の入出力

11

Page 12: FPGAによるメニーコアシミュレータScalableCoreシステムの正当性検証

RTL vs. SimMc: 検証ベンチマーク

n  7つの検証 l 単一ノード上でのプログラム実行 l  1対1通信 l  1対全通信 l 全対1通信 (Small) l 全対1通信 (Large) l 全対全通信 l  Equation Solver Kernel

•  2次元配列の各要素について,4近傍と自身との平均値を新しい 自身の値として採用することを繰り返す

12

Page 13: FPGAによるメニーコアシミュレータScalableCoreシステムの正当性検証

RTL vs. SimMc: 検証結果

n 検証の各段階でSimMcのバグを発見・修正 l 信号の更新のタイミングが(想定と)違う

•  1つのforループの中で解放と割り当てを同時に行ったり

n 修正の結果すべてのベンチマークで 毎サイクルの各状態が両者で一致 l プロセッサコアの振る舞い l ネットワークに起因するメモリ状態の変化タイミング l ネットワーク内の調停

13

Page 14: FPGAによるメニーコアシミュレータScalableCoreシステムの正当性検証

ScalableCoreシステム実機 vs. SimMc n 各ノードの起動タイミングが異なる

l  SimMcでは全ノードがいっせいのせいでスタート l  ScalableCoreではNode(0,1)が先に起動 他を後から起こす → SimMcと挙動が異なる

•  プログラムロードなどの初期設定

n  2つの方法 l ソフトウェアによる同期

•  DMA転送でフラグの配布 & フラグのスヌーピング l ハードウェアによる同期

•  実行開始時刻の設定と自律的な起動

14

各ノードのプログラム実行開始を同期したい

Page 15: FPGAによるメニーコアシミュレータScalableCoreシステムの正当性検証

ソフトウェアによる同期 n  DMA転送による フラグの配布と フラグのスヌーピング l  Node(0,1)が send_startflag()で 全員にフラグを設定

l その他のNodeは start_flagが 0でなくなるまで待機

15

volatile static int start_flag = 0; volatile int end_flag [RANKY_MAX][RANKX_MAX]; void send_startflag(int rank) { int rank_x, rank_y; rank_x = getidx(rank); rank_y = getidy(rank);

int dst,x,y; for(y=1;y<=max_rank_y;y++){ for(x=1;x<=max_rank_x;x++){ end_flag[y-1][x-1] = 0; } } for(x=1;x<=rank_x;x++){ for(y=1;y<=rank_y;y++){ if(x==1 && y==1) continue; setidxy(&dst, x, y); MC_dma_put_4b(dst, (int *)&start_flag, 1);

} } } void wait_startflag() { while(!start_flag); }

Page 16: FPGAによるメニーコアシミュレータScalableCoreシステムの正当性検証

ハードウェアによる同期

16

Node (0,1)

Node (0,2)

Node (0,3)

Node (1,1)

Node (2,1)

Node (3,1)

Node (1,2)

Node (2,2)

Node (3,2)

Node (1,3)

Node (2,3)

Node (3,3)

計算ノード全員の 起動タイミングを 確実に揃えるために Node(0,*)を追加

Node(1,1)~ Node(RX,RY)が

全員同じタイミングで起動する

Node(0,1)が その他全員の

タイミングを設定

起動タイミングは (512KB転送時間)×(ノード数) をベースに,大きめに設定

Page 17: FPGAによるメニーコアシミュレータScalableCoreシステムの正当性検証

起動タイミングの設定と自律的なスタート n 仮想サイクル8で3人が同時に起動する場合

17

time

0 1 2 3 4 5 6 7 8 9 10 11

0 1 2 3 4 5 6 7 8 9 10 11

0 1 2 3 4 5 6 7 8 9 10 11

Node 0

Node 1

Node 2

起動タイミング設定待ち 起動待ち 起動完了

Page 18: FPGAによるメニーコアシミュレータScalableCoreシステムの正当性検証

検証の構成 n ノード数

l  10×1,5×2,3×3,2×2

n ベンチマーク: 4種 l  do nothing

•  何もしないプログラム l  bottom-right to Node(1,1)

•  右下のノードから左上のノードへの1回のDMA転送 l mm_canon

•  行列積 (行列サイズ: 60, 120, 180) l  random traffic

•  ランダム通信

18

Page 19: FPGAによるメニーコアシミュレータScalableCoreシステムの正当性検証

SW sync: シミュレーションサイクル数の比較

n  3×3構成のランダム通信で2%程度の誤差 l  SimMcで739472サイクル l  ScalableCoreシステムで754695サイクル l 約15000サイクルの差異

•  バタフライ効果

19

!"#! $#% &#& %#% !"#! $#% &#& %#%'()*(+,-*. !/0 !$1 !$$ !"% !/0 !$1 !$$ !"%

2(++(345-.,+)+()6('78!9!: %!/ %!/ %!& !$1 %!0 %!0 %!& !1"33;<=*(*>)1" 4 4 &$1?!! 1/0&"/ 4 4 &$1?!! 1/0&"033;<=*(*>)!%" 4 4 %&%@%@! /?!&%&1 4 4 %&%@%0? /?!&%&133;<=*(*>)!0" 4 4 ?&$?@"1 !$/&@&%% 4 4 ?&$?@"1 !$/&@&&05=*'(3)+5=AA-< !!011%% 0$?@!? ?&@/?% 100/%& !!0"!?% 01$$!1 ?$/1@$ 100/%1

B-3C< B<=D=2D7E(57)8B(A+F=57)BG*<:HIID-<=+-(*

!"#! $#% &#& %#%"J"""K "J"""K "J"""K "J"""K!J01@K !J01@K "J"""K %J$1/K4 4 "J"""K "J""!K4 4 "J"""K "J"""K4 4 "J"""K "J"""K

4"J$//K "J001K %J"$@K "J"""K

L-AA757*+-=D)M=+7

Page 20: FPGAによるメニーコアシミュレータScalableCoreシステムの正当性検証

HW sync: シミュレーションサイクル数の比較

n すべての構成でシミュレーションサイクル数が一致

20

!"#! $#% &#& %#% !"#! $#% &#& %#%'()*(+,-*. &$ &$ &$ &$ &$ &$ &$ &$

/(++(012-.,+)+()3('45!6!7 !"$ !"! !"! 89 !"$ !"! !"! 8900:;<*(*=)>" 1 1 &$>$&! >?@%&& 1 1 &$>$&! >?@%&&00:;<*(*=)!%" 1 1 %&%8!"9 ?9!&!$9 1 1 %&%8!"9 ?9!&!$900:;<*(*=)!@" 1 1 9&$99&? !$?&8%?9 1 1 9&$99&? !$?&8%?92<*'(0)+2<AA-; !!8!@%% @98?@" 9?!8&? >@@&$& !!8!@%% @98?@" 9?!8&? >@@&$&

B-0C; B;<D</D4E(24)5F<2'G<24)BH*;7IJJD-;<+-(*

!"#! $#% &#& %#%"K"""L "K"""L "K"""L "K"""L"K"""L "K"""L "K"""L "K"""L1 1 "K"""L "K"""L1 1 "K"""L "K"""L1 1 "K"""L "K"""L

"K"""L "K"""L "K"""L "K"""L

M-AA424*+-<D)N<+4

Page 21: FPGAによるメニーコアシミュレータScalableCoreシステムの正当性検証

まとめ n  ScalableCoreシステムとSimMcの動作比較

l  ScalableCoreシステム RTL vs. SimMc l  ScalableCoreシステム 実機 vs. SimMc

•  with SW synchronization •  with HW synchronization

n  RTLとソフトウェアシミュレータは振る舞いが一致 n 実機とサイクル数を比較

l ソフトウェアによる同期を 入れた場合,最大2%程度

l ハードウェアによる同期を 入れた場合,完全に一致

21

SimMc ScalableCore

system (RTL)

ScalableCore system

(SW sync)

ScalableCore system

(HW sync)

≒ 98%

Same Behavior