多数のFPGAを活用する ScalableCoreシステムのすすめ
高前田 伸也 東京工業大学 大学院情報理工学研究科
SWoPP2010@金沢 BoF-2
概要 シンプルなハードウェア ScalableCoreシステムで 楽しいアーキテクチャ検証をしましょう!
10-08-05 SWoPP2010-BoF-2 2
!"#$%&'"()*+&,
!"#$%&'"()*+&-
!"#$%&'"()*+&.
!"#$%&/+012&,&
!"#$%&/+012&-&
!"#$%&/+012&.&
3*(14)2*"+&'*504)6&
7,8,9& 7:8,9&
7:8:9&7,8:9&
マルチコアからメニーコアへ・・・?
10-08-05 SWoPP2010-BoF-2 3
Single-core Multi-core Many-core !
評価はソフトウェアシミュレータで・・・? 実装するのは楽!でも速度が・・・
メニーコアシミュレータSimMcの場合
10-08-05 SWoPP2010-BoF-2 4
0
200
400
600
800
1000
1200
1400
1600
20 40 60 80 100
Sim
ulat
ion
Spee
d (k
ilo c
ycle
/ se
c)
# nodes
SimMc
64コアの シミュレーションで
70Kcycle/sec
100コアの シミュレーションで
43Kcycle/sec
じゃあ何で評価する? チップは作れないけど, リアルタイムっぽく動作するものを見たいよね?
10-08-05 SWoPP2010-BoF-2 5 Difficulty to construct
Rea
lity
ソフトウェア シミュレーション
FPGA シミュレーション
実チップ 制作
より実チップに近い構成を 高速にシミュレーション
ハードウェア制約のない理想的な構成を
手軽に実現 リアルだが高価
FPGAシミュレーションのメリット はやい
ソフトウェアシミュレータ比で10倍~200倍高速 実験→検討→実験のループが短くなる
(思ったより)やすい 64コア用のシステムで30万円~80万円
• ScalableCoreシステムは64ノード分で30万円くらい • RAMP Goldは$750らしい
うまい たくさんシミュレーションできてうまい!
• たくさん実験結果が出る・・・かもしれない • たくさん論文が書ける・・・かもしれない
10-08-05 SWoPP2010-BoF-2 6
シミュレーションが高速になると・・・ OSとかランタイムとか含めた 動的なベンチマークで評価できる・・・かも
10-08-05 SWoPP2010-BoF-2 7
Processor
Application
Processor
OS
Runtime
Application
more detailed
そこでScalableCoreシステムですよ! 多数のFPGAを 並べて構成される メニーコアの 評価環境 [高前田ら,SACSIS2010]
Spartan-3Eを 並べた!
10-08-05 SWoPP2010-BoF-2 8
!"#$%&'"()*+&,
!"#$%&'"()*+&-
!"#$%&'"()*+&.
!"#$%&/+012&,&
!"#$%&/+012&-&
!"#$%&/+012&.&
3*(14)2*"+&'*504)6&
7,8,9& 7:8,9&
7:8:9&7,8:9&
ScalableCoreシステムの構成
10-08-05 SWoPP2010-BoF-2 9
ScalableCore Unit (FPGA) シミュレーション対象の構成要素
ScalableCore Board: Unitを接続する基板
Simulation Display: シミュレーション情報を 表示するディスプレイ
タイル状に配置した“Unit”を “Board”で接続する
プロトタイピングシステムの概念
スケールします: 1コア (1×1)
10-08-05 SWoPP2010-BoF-2 10
45cm
30cm
スケールします: 4コア (2×2)
10-08-05 SWoPP2010-BoF-2 11
45cm
30cm
スケールします: 16コア (4×4)
10-08-05 SWoPP2010-BoF-2 12
45cm
30cm
スケールします: 64コア (8×8)
10-08-05 SWoPP2010-BoF-2 13
!"#$%&'"()*+&,
!"#$%&'"()*+&-
!"#$%&'"()*+&.
!"#$%&/+012&,&
!"#$%&/+012&-&
!"#$%&/+012&.&
3*(14)2*"+&'*504)6&
7,8,9& 7:8,9&
7:8:9&7,8:9&
ScalableCoreシステム v1.1の構成 M-Coreのサイクルアキューレートな シミュレーション環境 各UnitにM-Coreの計算ノードを1つ実装
• MIPSコア,メモリ,ルータ,ネットワークコントローラ 64ノードシミュレーションで14.2倍高速
• 電力効率では23倍高効率
10-08-05 SWoPP2010-BoF-2 14
プログラムローダ
シミュレーション速度 64ノードで14.2倍の高速化
もっと頑張りましょう.
10-08-05 SWoPP2010-BoF-2 15
0
200
400
600
800
1000
1200
1400
1600
20 40 60 80 100 0
5
10
15
20
Sim
ulat
ion
Spee
d (k
ilo v
irtua
l cyc
le /
sec)
Spee
dup
# nodes
SpeedupSimMc
ScalableCore system
適用例: 高機能ルータアーキテクチャ ルータによるプロセッサの信頼性向上手法SmartCoreシステムを実装 ルータをちょっと書き換えると実装できる!
10-08-05 SWoPP2010-BoF-2 16
SD
Loader (0,1)
物理ID (1,1)
Path (0,2)
物理ID (1,2)
物理ID (2,1)
物理ID (2,2)
物理ID (3,1)
物理ID (3,2)
物理ID (4,1)
物理ID (4,2)
Path (0,3)
物理ID (1,3)
物理ID (2,3)
物理ID (3,3)
物理ID (4,3)
論理ID (1,1)
論理ID (1,2)
論理ID (1,3)
論理ID (2,1)
論理ID (2,2)
論理ID (2,3)
電源 Master Mirror Master Mirror Master 物理ID (1,1) 論理ID (1,1)
Mirror 物理ID (2,1) 論理ID (1,1)
Router Router
INCC INCC
Masterに来たパケットをMirrorへコピー
宛先が物理ID(1,1)のパケット 宛先が物理ID(2,1)のパケット
Master 物理ID (1,1) 論理ID (1,1)
Mirror 物理ID (2,1) 論理ID (1,1)
Router Router
INCC INCC
宛先が物理ID(1,3)のパケット 宛先が物理ID(1,1)のパケット
(1) MasterとMirrorからの パケットを待ち合わせる
(2) Mirrorから来たパケットとMasterが出すパケットを比較
(3) 一致ならパケットをマージ
宛先をMasterに 書き換える
ScalableCoreシステムがあると・・・ 手元で64コア(以上)が動作する!
ソフトウェアシミュレータで動作するのより 嬉しい!
たくさんシミュレーションできる! デモンストレーションできる!
目立つ! 研究室公開にも使える!
HDLを書くモチベーションになる!(?) ちょっとは実回路構成考えてみるかー ソフトウェアよりちょっとだけ現実的な構成
10-08-05 SWoPP2010-BoF-2 17
実際に作ってみて・・・ シンプルなはずなのに動かない!
たくさん並べるのはやっぱり難しい 非決定的な部分がたくさん
動いたとき嬉しい! ソフトウェアシミュレータ・HDLシミュレーションで動くのと訳が違う!
非決定性に勝った!!!
予想外に珍しいらしい ハードウェア作っている人って実は多くない?
10-08-05 SWoPP2010-BoF-2 18
まとめ シンプルなハードウェア ScalableCoreシステムで 楽しいアーキテクチャ検証をしましょう!
実際にハードウェア作るのは楽しいです♪
10-08-05 SWoPP2010-BoF-2 19