Post on 12-Aug-2015
USB3.0接続の手軽で高速なFPGAアクセラレータの設計と実装
2015/01/30 リコンフィギャラブルシステム研究会@日吉FPGA応用システム (14:55-15:15) 発表17分 + 質疑応答3分
☆臼井 琢真†1 小林 諒平†2 吉瀬 謙二†2
†1 東京工業大学 工学部情報工学科†2東京工業大学 大学院情報理工学研究科
Design and Implementation of
Portable and High-speed FPGA Accelerator
employing USB3.0
発表概要
FPGAアクセラレータを用いたアプリ高速化のトレンド
FPGAアクセラレータを個人レベルで「手軽に」使う手段?►様々なPCで使えて,かつなるべく持ち運べるものが望ましい
►ホストPCとFPGAアクセラレータを繋ぐインターフェイスに注目
USB3.0をインターフェイスに選択►USBを搭載する様々なPCで使える
►モバイル環境での使用も可能
►様々なPCで評価
高速化するアプリにソーティング(int型32M個)を選択
アクセラレータを設計・実装・評価1
発表の流れ
Motivation
►題目「手軽」 - USB3.0検討
►予備評価 – ホストPCにおけるソーティング
FPGAアクセラレータの設計・実装►System Architecture, Merge Sorter Tree
►実装・検証
評価►評価環境
►ソーティング性能評価・分析
結論・今後の課題
2
発表の流れ
Motivation
►題目「手軽」 - USB3.0検討
►予備評価 – ホストPCにおけるソーティング
FPGAアクセラレータの設計・実装►System Architecture, Merge Sorter Tree
►実装・検証
評価►評価環境
►ソーティング性能評価・分析
結論・今後の課題
3
題目「手軽」
4
Portable
様々な環境で簡単に使える
持ち運べる
手軽
Interface
FPGAとの接続Interface比較
接続方法 UART USB3.0 PCI Express Ethernet
最高速度(理論値) 数Mbps 5Gbps 8GB/s @2.0 x8
1GB/s @2.0 x1
1Gbps@GbE
10Gbps@XGbE
接続の容易さ 簡単 簡単 少々面倒 簡単
ホットスワップ × ○ ○ ○
バスパワー × 900mA, 5V 25W/75W@ x16 ×
最新PCでの普及率 × ○ △ ○(GbE)
USB3.0はUARTよりは圧倒的に速い
PCI ExpressやXGbEには速度が劣る
しかし接続が非常に容易→手軽
6
我々の提案するFPGAアクセラレータ
6
持ち運べる
手軽様々な環境で簡単に使える
USB3.0
対象アプリ: 32bitのint型要素32M個(128MB)のソーティング
発表の流れ
Motivation
►題目「手軽」 - USB3.0検討
►予備評価 – ホストPCにおけるソーティング
FPGAアクセラレータの設計・実装►System Architecture, Merge Sorter Tree
►実装・検証
評価►評価環境
►ソーティング性能評価・分析
結論・今後の課題
7
32M要素(int型)のソーティング (@Core i7 3770K)
8
2.75 0.00 0.00 4.20 1.56 1.49 0
1
2
3
4
5
6
7
8
9
10
Random Sorted Reverse
Ela
pse
d T
ime[s
]
Type of Sequence
Quick Sort
Merge Sort
Over
2h
Over
2hMerge Sortを
比較対象
2時間以上(最悪計算𝑂(𝑛2))
2.75 0.00 0.00 4.20 1.56 1.49 0
1
2
3
4
5
6
7
8
9
10
Random Sorted Reverse
Ela
pse
d T
ime[s
]
Type of Sequence
Quick Sort
Merge Sort
Over
2h
Over
2h
32M要素(int型)のソーティング (@Core i7 3770K)
9
目標
発表の流れ
Motivation
►題目「手軽」 - USB3.0検討
►予備評価 – ホストPCにおけるソーティング
FPGAアクセラレータの設計・実装►System Architecture, Merge Sorter Tree
►実装・検証
評価►評価環境
►ソーティング性能評価・分析
結論・今後の課題
10
System Architecture
11
32bit
64bit,
2要素ずつソート
64bit
400MB/s
Merge Sorter Tree
複数のソート済みデータ列を1つにマージするデータパス
ソート対象のデータ列がway数より多い場合は複数回通す必要
図は4-wayだが,実際は8-wayのものを実装
12参考: A high performance sorting architecture exploiting run-time reconfiguration on fpgas for large problem sorting.
(Dirk Koch and Jim Torresen, FPGA ’11,)
入力レーン数=
way数
>
>
> > Comparator
Short FIFO
Merge Sorter Tree
data = {2, 4, 6, 5, 3, 1, 7, 8}
13
2
Memory
>
>
>
4
6
5
3
1
7
8
Unit: ソート済みデータ列
Merge Sorter Tree
data = {2, 4, 6, 5, 3, 1, 7, 8}
14
Memory
>
>
>
2
6
3
7
8
2
4
6
5
3
1
7
Merge Sorter Tree
data = {2, 4, 6, 5, 3, 1, 7, 8}
15
Memory
>
>
>
2
6
3
7
4
5
1
83
28
4
5
1
Merge Sorter Tree
data = {2, 4, 6, 5, 3, 1, 7, 8}
16
Memory
>
>
>
6
7
2
3
7
6 28
4
5
1
8
4
5
1
Merge Sorter Tree
data = {2, 4, 6, 5, 3, 1, 7, 8}
17
Memory
>
>
>
6
37
38
2
4
5
1
8
4
5
1
Merge Sorter Tree
data = {2, 4, 6, 5, 3, 1, 7, 8}
18
Memory
>
> 6
7
68
2
3>
4
5
1
8
4
5
1
Merge Sorter Tree
data = {2, 4, 6, 5, 3, 1, 7, 8} Unit数は8
19
Memory
>
>
>
4
5
1
8
2
3
6
7
Merge Sorter Tree
data = {2, 4, 6, 5, 3, 1, 7, 8}
20
Memory
>
>
>
1
4
5
8
完全にはソートされておらずもう一度通す必要
Unit
Unit
Unit数は1/[way数]となる
2
3
6
7
Merge Sorter Tree
data = {2, 4, 6, 5, 3, 1, 7, 8}
21
Memory
>
>
>
1
2
3
4
5
6
7
8
Merge Sorter Tree
data = {2, 4, 5, 6, 1, 3, 7, 8}
22
2
Memory
>
>
>
4
5
6
1
3
7
8
2
5
1
7
System Architecture (First step)
23
System Architecture (First step)
24
System Architecture (First step)
25
System Architecture (First step)
26
System Architecture (First step)
27
Not Fully
Sorted!
System Architecture (First step)
28
System Architecture (First step)
29
System Architecture (First step)
30
一度に書き込む量を増やす
一度に書き込むデータが
少ないと低速
System Architecture (First step)
31
System Architecture (Intermediate steps)
32
DRAMから読み出し
System Architecture (Intermediate steps)
33
System Architecture (Last step)
34
Fully
Sorted!
System Architecture (Last step)
35
Send back the
Fully Sorted Data
発表の流れ
Motivation
►題目「手軽」 - USB3.0検討
►予備評価 – ホストPCにおけるソーティング
FPGAアクセラレータの設計・実装►System Architecture, Merge Sorter Tree
►実装・検証
評価►評価環境
►ソーティング性能評価・分析
結論・今後の課題
36
特電 Artix-7 評価ボード
37
72mm
50mm
USB3.0 Peripheral
Controller
持ち運べる
実装・検証
FPGA
Xilinx Artix-7 XC7A100T @ 100MHz
ハードウェア記述言語: Verilog HDL
DRAM Controller: Xilinx Memory Interface
Generator(MIG) 7
Interface Moduleに特電IP(VHDL)を使用
H/W使用量 – Block RAM: 20%, Slice: 18%
検証アプリ
VisualStudio2013にてC言語で開発
OS: Windows 7
38
検証アプリコード概略
43
01:#define ELM = 32*1024*1024;02:int data[ELM];03:04:int (main){05: init(data); // データ列生成・初期化06:07: start = getTime();08: USBWrite(data,ELM); // Send09: USBRead(data,ELM); // Receive10: end = getTime();11: 12: errchk();13: elapsed_time = end – start;14: finalize(data, elapsed_time);15:}
01:#define ELM = 32*1024*1024;02:int data[ELM];03:04:int (main){05: init(data);06:07: start = getTime();08: MergeSort(data,0,ELM-1);09:10: end = getTime();11: 12: errchk();13: elapsed_time = end – start;14: finalize(data, elapsed_time);15:}
FPGAアクセラレータにソーティングさせる場合
ホストPC上のみでソーティングを行う場合
USB3.0の通信速度
40
0.25 3.84
39.1
221
330 354
0.13 2.04 25.1
196
334 355
0
50
100
150
200
250
300
350
400
16 Bytes 256 Bytes 4K Bytes 64K Bytes 1M Bytes 16M Bytes
Ban
dw
idth
[MB
/s]
Data Size
Host PC → FPGA
FPGA → Host PC
公称限界値: 360[MB/s]
今回ソート対象のデータ列は32M要素で128MB限界転送速度達成の見込み
発表の流れ
Motivation
►題目「手軽」 - USB3.0検討
►予備評価 – ホストPCにおけるソーティング
FPGAアクセラレータの設計・実装►System Architecture, Merge Sorter Tree
►実装・検証
評価►評価環境
►ソーティング性能評価・分析
結論・今後の課題
41
評価
パフォーマンスだけでなく高いPortabilityも評価するため評価環境としてPCを4台用意►USB3.0対応2台,USB2.0対応2台
►デスクトップとラップトップ
対象アプリ: 4バイトint型32M要素のソーティング
各PCにて,以下の二つの場合の実行時間を比較►FPGAアクセラレータにソーティングをオフロード
►ホストPC上のみでマージソート
42
4種類の評価環境 – Computer A
43
Core i7-3770K
@3.50GHz
16GB DDR3 Memory
Supports USB3.0
High
Performance!
4種類の評価環境 – Computer B
44Supports USB3.0
Core i3-4010U
@1.70GHz
4GB DDR3 Memory
Portable!
4種類の評価環境 – Computer C
45
Supports only USB2.0
Core i7-870
@2.93GHz
4GB DDR3 Memory
4種類の評価環境 – Computer D
46
Core Duo T2400
@1.83GHz
1GB DDR2 Memory
Supports only USB2.0
発表の流れ
Motivation
►題目「手軽」 - USB3.0検討
►予備評価 – ホストPCにおけるソーティング
FPGAアクセラレータの設計・実装►System Architecture, Merge Sorter Tree
►実装・検証
評価►評価環境
►ソーティング性能評価・分析
結論・今後の課題
47
0
2
4
6
8
10
12
FPGA CPU FPGA CPU FPGA CPU FPGA CPU
Computer A Computer B Computer C Computer D
Ela
pse
d T
ime[s
]
Sorting
Data Transfer from Host PC to FPGA
Data Transfer from FPGA to Host PC
評価結果
48
USB3.0
USB2.0
評価結果 – 分析
49
0
2
4
6
8
10
12
FPGA CPU FPGA CPU FPGA CPU FPGA CPU
Computer A Computer B Computer C Computer D
Ela
pse
d T
ime[s
]
Sorting
Data Transfer from Host PC to FPGA
Data Transfer from FPGA to Host PC
性能向上不可能
USB2.0
USB3.0通信時間 > CPUにおけるソーティング時間
評価結果 – 分析
50
0
2
4
6
8
10
12
FPGA CPU FPGA CPU FPGA CPU FPGA CPU
Computer A Computer B Computer C Computer D
Ela
pse
d T
ime[s
]
Sorting
Data Transfer from Host PC to FPGA
Data Transfer from FPGA to Host PC
通信時間大幅減
ソーティング自体の時間変化なし
USB3.0で性能向上
USB3.0
評価結果
51
3.27 4.20 3.33 8.67 0
1
2
3
4
5
6
7
8
9
10
FPGA CPU FPGA CPU
Computer A Computer B
Ela
pse
d T
ime[s
]
1.28x
Faster
2.60x
Faster
USB3.0環境
様々な環境で簡単に使える
発表の流れ
Motivation
►題目「手軽」 - USB3.0検討
►予備評価 – ホストPCにおけるソーティング
FPGAアクセラレータの設計・実装►System Architecture, Merge Sorter Tree
►実装・検証
評価►評価環境
►ソーティング性能評価・分析
結論・今後の課題
52
結論
USB3.0接続の手軽かつ高速なFPGAアクセラレータを提案
対象アプリ: ソーティング
USB2.0環境では提案するFPGAアクセラレータを用いても性能が向上しない►特に,Computer C では
通信時間がCPUにおけるソーティング時間を上回っている
USB3.0環境では性能が向上►デスクトップPC比 1.28倍
►モバイルPC比 2.60倍
►高いPortabilityで手軽
53
今後の課題
Merge Sorter Tree のway数拡張►更なる性能向上の見込み
他のアプリの高速化►グラフ処理,画像処理,データ圧縮 etc…
54