IEICE technical report (RECONF), January 2015

Preview:

Citation preview

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

Recommended