69
FPGAを用いた世界最速の ソーティングハードウェアの 実現に向けた試み 小林 諒平 † 吉瀬 謙二† †東京工業大学 大学院情報理工学研究科 2015年06月19日 16:25-16:50 RECONF研究会(十周年記念)@京都大学吉田キャンパス FPGA応用および一般(1) 講演時間20分 + 質疑5分

FPGAを用いた世界最速のソーティングハードウェアの実現に向けた試み

Embed Size (px)

Citation preview

Page 1: FPGAを用いた世界最速のソーティングハードウェアの実現に向けた試み

FPGAを用いた世界最速の ソーティングハードウェアの

実現に向けた試み

小林 諒平† 吉瀬 謙二†

†東京工業大学 大学院情報理工学研究科

2015年06月19日 16:25-16:50 RECONF研究会(十周年記念)@京都大学吉田キャンパス FPGA応用および一般(1) 講演時間20分 + 質疑5分

Page 2: FPGAを用いた世界最速のソーティングハードウェアの実現に向けた試み

l FPGAを用いた世界最速のソーティングハードウェアの実現に向けたアプローチを紹介

概要

1

世界の頂点

Page 3: FPGAを用いた世界最速のソーティングハードウェアの実現に向けた試み

2

はじめに

Page 4: FPGAを用いた世界最速のソーティングハードウェアの実現に向けた試み

l FPGAによる高速化の研究が注目されている

FPGAベースのソーティングシステム

3

データベース[1] 画像処理[2] データ圧縮[3]

[1] Rene Mueller et al, Sorting Networks on FPGAs, The VLDB Journal 2012 [2] Ratnayake, K et al, An FPGA Architecture of Stable-Sorting on a Large Data Volume : Application to Video Signals, CISS 2007 [3] Martinez, J et al, An FPGA-based parallel sorting architecture for the Burrows Wheeler transform ReConFig 2005

Page 5: FPGAを用いた世界最速のソーティングハードウェアの実現に向けた試み

l スタンフォード大学のCasperらのシステムが 現在最も高性能 Ø FPGA2014で発表している ﹣ タイトル “Hardware Acceleration of Database Operation”

Ø 提案したシステムをXilinx Virtex-6 FPGA (XC6VSX475T)に実装し評価

l このシステムよりも高性能なハードウェアを実現するためのアプローチを紹介する

現在の世界最速のFPGAベースの ソーティングシステム

4

Page 6: FPGAを用いた世界最速のソーティングハードウェアの実現に向けた試み

l ベースとなるソーティングアーキテクチャ l マージソートツリーの複製 l ソートセルの改良 l ソーティング向けのデータ圧縮手法の提案

世界最速に向けたアプローチ

5

Page 7: FPGAを用いた世界最速のソーティングハードウェアの実現に向けた試み

l ベースとなるソーティングアーキテクチャ l マージソートツリーの複製 l ソートセルの改良 l ソーティング向けのデータ圧縮手法の提案

世界最速に向けたアプローチ

6

Page 8: FPGAを用いた世界最速のソーティングハードウェアの実現に向けた試み

7

ベースとなる ソーティングアーキテクチャ

Page 9: FPGAを用いた世界最速のソーティングハードウェアの実現に向けた試み

l 以下の2つのソーティングアーキテクチャを使用 Ø ソーティングネットワーク Ø マージソートツリー

ベースとなるアーキテクチャ*の概要

8

1

4

3

2

4

3

2

1 >

> >

ソーティングネットワーク

FPGA

マージソートツリー

* 小林諒平+,電子情報通信学会研究報告CPSY2015

Page 10: FPGAを用いた世界最速のソーティングハードウェアの実現に向けた試み

l ワイヤ,コンパレータから構成される,数列をソートするネットワーク

l 例:4つの要素をソートするネットワーク Ø 小さい要素が上に,大きい要素が下に移動している

ソーティングネットワーク*

9

1

4

3

2

4

3

2

1

バブルソートのネットワーク

* Donald E. Knuth. The Art of Computer Programming. 1998.

Page 11: FPGAを用いた世界最速のソーティングハードウェアの実現に向けた試み

l ソートセルを2分木状に接続することによって構成される,マージソートを実行するデータパス

マージソートツリー*

10

>

> >

FIFO

ソートセル >

4-way マージソートツリー

* Dirk Koch et al, FPGASort, FPGA’11

Page 12: FPGAを用いた世界最速のソーティングハードウェアの実現に向けた試み

l マージソートツリーでソートが実行される様子 Ø 最左端のFIFOには必ずソートされたデータ系列が 格納される

マージソートツリーでのソート

11

>

> >

>

> >

>

> >

8 9 3 5

1 3 2 2 1

3

3 2 2

1 2

1

8 9 5

3 7 5

1 2

3

2

5

2 2 3 7 9 8

x

x: Invalid Value

Cycle N Cycle N+1 Cycle N+2

Page 13: FPGAを用いた世界最速のソーティングハードウェアの実現に向けた試み

ベースとなる ソーティングアーキテクチャ

12

デバッグ用の モジュール

>

> >

32 32 32 32

32 32

32 32

32

512-bit shift register

32

512-bit shift register

32

512-bit shift register

32

512-bit shift register

32

512

512

512

512

Input Buffer Merge Sorter Tree

512-bit shift register

Initial Data Generator

Sorting Network

512

512

512

512

DRAM Controller

UART Controller

Output Buffer 32 512 512

512 512

512

512

1

64

FPGA

IN OUT

Host PC

DRAM

Page 14: FPGAを用いた世界最速のソーティングハードウェアの実現に向けた試み

l データ型は32bitの整数型 Ø 512bitのワイヤでは16個の要素が並列に流れている

ベースとなる ソーティングアーキテクチャ

13 DRAM

Host PC

>

> >

32 32 32 32

32 32

32 32

32

512-bit shift register

32

512-bit shift register

32

512-bit shift register

32

512-bit shift register

32

512

512

512

512

Input Buffer Merge Sorter Tree

512-bit shift register

Initial Data Generator

Sorting Network

512

512

512

512

DRAM Controller

UART Controller

Output Buffer 32 512 512

512 512

512

512

1

64

FPGA

FPGAとDRAM間におけるデータ幅とDRAMの周波数に 依存している

Page 15: FPGAを用いた世界最速のソーティングハードウェアの実現に向けた試み

14

例:1~256のソーティング

Page 16: FPGAを用いた世界最速のソーティングハードウェアの実現に向けた試み

l Initial Data Generatorから生成された 初期データをDRAMにライトする

1~256を昇順にソートする

15

256 255 254 … 64 63 … 3 2 1

DRAM

Host PC

>

> >

32 32 32 32

32 32

32 32

32

512-bit shift register

32

512-bit shift register

32

512-bit shift register

32

512-bit shift register

32

512

512

512

512

Input Buffer Merge Sorter Tree

512-bit shift register

Initial Data Generator

Sorting Network

512

512

512

512

DRAM Controller

UART Controller

Output Buffer 32 512 512

512 512

512

512

1

64

FPGA

DRAMの中身

Page 17: FPGAを用いた世界最速のソーティングハードウェアの実現に向けた試み

l 降順の並びのデータ列がDRAMに書き込まれる Ø これを昇順にソートする

1~256を昇順にソートする

16

DRAM

Host PC

>

> >

32 32 32 32

32 32

32 32

32

512-bit shift register

32

512-bit shift register

32

512-bit shift register

32

512-bit shift register

32

512

512

512

512

Input Buffer Merge Sorter Tree

512-bit shift register

Initial Data Generator

Sorting Network

512

512

512

512

DRAM Controller

UART Controller

Output Buffer 32 512 512

512 512

512

512

1

64

FPGA

DRAMの中身

256 255 254 253 252

Page 18: FPGAを用いた世界最速のソーティングハードウェアの実現に向けた試み

l DRAMから読み出してSorting Networkに 転送する

1~256を昇順にソートする

17

DRAM

Host PC

>

> >

32 32 32 32

32 32

32 32

32

512-bit shift register

32

512-bit shift register

32

512-bit shift register

32

512-bit shift register

32

512

512

512

512

Input Buffer Merge Sorter Tree

512-bit shift register

Initial Data Generator

Sorting Network

512

512

512

512

DRAM Controller

UART Controller

Output Buffer 32 512 512

512 512

512

512

1

64

FPGA

DRAMの中身

256 255 254

64 63 … 3 2 1

256 255 254 253 252

IN OUT

Page 19: FPGAを用いた世界最速のソーティングハードウェアの実現に向けた試み

l Sorting Networkで16要素ずつソートされる Ø ソート済みのデータ列が16個できる

1~256を昇順にソートする

18

DRAM

Host PC

>

> >

32 32 32 32

32 32

32 32

32

512-bit shift register

32

512-bit shift register

32

512-bit shift register

32

512-bit shift register

32

512

512

512

512

Input Buffer Merge Sorter Tree

512-bit shift register

Initial Data Generator

Sorting Network

512

512

512

512

DRAM Controller

UART Controller

Output Buffer 32 512 512

512 512

512

512

1

64

FPGA

DRAMの中身

16 … 3 2 1 32 … 19 18 17 256 … 243 242 241

ソート済みのデータ列(16要素) 256 255 254 253 252

Page 20: FPGAを用いた世界最速のソーティングハードウェアの実現に向けた試み

l Input Bufferに格納された後,Merge Sorter Treeに送られる

1~256を昇順にソートする

19

DRAM

Host PC

>

> >

32 32 32 32

32 32

32 32

32

512-bit shift register

32

512-bit shift register

32

512-bit shift register

32

512-bit shift register

32

512

512

512

512

Input Buffer Merge Sorter Tree

512-bit shift register

Initial Data Generator

Sorting Network

512

512

512

512

DRAM Controller

UART Controller

Output Buffer 32 512 512

512 512

512

512

1

64

FPGA

DRAMの中身

241 242 243 256… 225 226 240…

224… 208…

227 210 211 194 195

209 193

256 255 254 253 252

Page 21: FPGAを用いた世界最速のソーティングハードウェアの実現に向けた試み

l Merge Sorter Treeの根からソートされた データ列が出力される

1~256を昇順にソートする

20

DRAM

Host PC

>

> >

32 32 32 32

32 32

32 32

32

512-bit shift register

32

512-bit shift register

32

512-bit shift register

32

512-bit shift register

32

512

512

512

512

Input Buffer Merge Sorter Tree

512-bit shift register

Initial Data Generator

Sorting Network

512

512

512

512

DRAM Controller

UART Controller

Output Buffer 32 512 512

512 512

512

512

1

64

FPGA

DRAMの中身

241 242 243 256… 226 227 240…

224… 208…

228 210 211 209

193 194 195

196 201

202

225

203

256 255 254 253 252

Page 22: FPGAを用いた世界最速のソーティングハードウェアの実現に向けた試み

l 16要素ずつソートされたデータ列がマージされ,ソート済みのデータ列が4個できる

1~256を昇順にソートする

21

DRAM

Host PC

>

> >

32 32 32 32

32 32

32 32

32

512-bit shift register

32

512-bit shift register

32

512-bit shift register

32

512-bit shift register

32

512

512

512

512

Input Buffer Merge Sorter Tree

512-bit shift register

Initial Data Generator

Sorting Network

512

512

512

512

DRAM Controller

UART Controller

Output Buffer 32 512 512

512 512

512

512

1

64

FPGA

DRAMの中身

64 … 3 2 1 128 … 67 66 65 256 … 195 194 193

ソート済みのデータ列(64要素) 192 … 131 130 129 256

255 254 253 252

Page 23: FPGAを用いた世界最速のソーティングハードウェアの実現に向けた試み

l Merge Sorter Treeから出力されたデータ列を DRAMにライトする

1~256を昇順にソートする

22

DRAM

Host PC

>

> >

32 32 32 32

32 32

32 32

32

512-bit shift register

32

512-bit shift register

32

512-bit shift register

32

512-bit shift register

32

512

512

512

512

Input Buffer Merge Sorter Tree

512-bit shift register

Initial Data Generator

Sorting Network

512

512

512

512

DRAM Controller

UART Controller

Output Buffer 32 512 512

512 512

512

512

1

64

FPGA

DRAMの中身

193 194 195 196 197 198 199 200 201 202 203 204 ……

この領域にライト 256 255 254 253 252

Page 24: FPGAを用いた世界最速のソーティングハードウェアの実現に向けた試み

l データ列が完全にソートされていない (部分的にソートされた列が4つ) Ø 再び,Merge Sorter Treeに通す必要がある

1~256を昇順にソートする

23

DRAM

Host PC

>

> >

32 32 32 32

32 32

32 32

32

512-bit shift register

32

512-bit shift register

32

512-bit shift register

32

512-bit shift register

32

512

512

512

512

Input Buffer Merge Sorter Tree

512-bit shift register

Initial Data Generator

Sorting Network

512

512

512

512

DRAM Controller

UART Controller

Output Buffer 32 512 512

512 512

512

512

1

64

FPGA

DRAMの中身

256 255 254 253 252

1 193 194 195

62 63 64

Page 25: FPGAを用いた世界最速のソーティングハードウェアの実現に向けた試み

l DRAMから読み出してSorting Networkに 転送する

1~256を昇順にソートする

24

DRAM

Host PC

>

> >

32 32 32 32

32 32

32 32

32

512-bit shift register

32

512-bit shift register

32

512-bit shift register

32

512-bit shift register

32

512

512

512

512

Input Buffer Merge Sorter Tree

512-bit shift register

Initial Data Generator

Sorting Network

512

512

512

512

DRAM Controller

UART Controller

Output Buffer 32 512 512

512 512

512

512

1

64

FPGA

DRAMの中身

193 194 195

129 130 … 62 63 64

この領域からリード 256 255 254 253 252

1 193 194 195

62 63 64

Page 26: FPGAを用いた世界最速のソーティングハードウェアの実現に向けた試み

l このとき,Sorting Networkはただのデータの通り道 Ø 既に部分ごとのソートは実行されているため

1~256を昇順にソートする

25

DRAM

Host PC

>

> >

32 32 32 32

32 32

32 32

32

512-bit shift register

32

512-bit shift register

32

512-bit shift register

32

512-bit shift register

32

512

512

512

512

Input Buffer Merge Sorter Tree

512-bit shift register

Initial Data Generator

Sorting Network

512

512

512

512

DRAM Controller

UART Controller

Output Buffer 32 512 512

512 512

512

512

1

64

FPGA

DRAMの中身

256 255 254 253 252

1 193 194 195

62 63 64

Page 27: FPGAを用いた世界最速のソーティングハードウェアの実現に向けた試み

l Input Bufferに格納された後,Merge Sorter Treeに送られる

1~256を昇順にソートする

26

DRAM

Host PC

>

> >

32 32 32 32

32 32

32 32

32

512-bit shift register

32

512-bit shift register

32

512-bit shift register

32

512-bit shift register

32

512

512

512

512

Input Buffer Merge Sorter Tree

512-bit shift register

Initial Data Generator

Sorting Network

512

512

512

512

DRAM Controller

UART Controller

Output Buffer 32 512 512

512 512

512

512

1

64

FPGA

DRAMの中身

256 255 254 253 252

1 193 194 195

62 63 64

193 194 195 256… 129 130 192…

128… 64…

131 66 67 2 3

65 1

Page 28: FPGAを用いた世界最速のソーティングハードウェアの実現に向けた試み

l Merge Sorter Treeの根からソートされた データ列が出力される

1~256を昇順にソートする

27

DRAM

Host PC

>

> >

32 32 32 32

32 32

32 32

32

512-bit shift register

32

512-bit shift register

32

512-bit shift register

32

512-bit shift register

32

512

512

512

512

Input Buffer Merge Sorter Tree

512-bit shift register

Initial Data Generator

Sorting Network

512

512

512

512

DRAM Controller

UART Controller

Output Buffer 32 512 512

512 512

512

512

1

64

FPGA

DRAMの中身

256 255 254 253 252

1 193 194 195

62 63 64

64…

1 2 3

4

51 52

225

53

193 194 195 256… 129 130 192…

128… 131

66 67 65

Page 29: FPGAを用いた世界最速のソーティングハードウェアの実現に向けた試み

l Merge Sorter Treeから出力されたデータ列を DRAMにライトする

1~256を昇順にソートする

28

DRAM

Host PC

>

> >

32 32 32 32

32 32

32 32

32

512-bit shift register

32

512-bit shift register

32

512-bit shift register

32

512-bit shift register

32

512

512

512

512

Input Buffer Merge Sorter Tree

512-bit shift register

Initial Data Generator

Sorting Network

512

512

512

512

DRAM Controller

UART Controller

Output Buffer 32 512 512

512 512

512

512

1

64

FPGA

DRAMの中身

1 2 3 4 5 6 7 8 9 10 11 12 ……

この領域にライト 256 255 254 253 252

1 193 194 195

62 63 64

Page 30: FPGAを用いた世界最速のソーティングハードウェアの実現に向けた試み

l データ列が完全にソートされた Ø DRAM -> Sorting Network -> Merge Sorter Tree -> DRAMのパスを通す事でデータ列をソートできる ﹣ パスを通す回数:logway数(要素数/16)

1~256を昇順にソートする

29

DRAM

Host PC

>

> >

32 32 32 32

32 32

32 32

32

512-bit shift register

32

512-bit shift register

32

512-bit shift register

32

512-bit shift register

32

512

512

512

512

Input Buffer Merge Sorter Tree

512-bit shift register

Initial Data Generator

Sorting Network

512

512

512

512

DRAM Controller

UART Controller

Output Buffer 32 512 512

512 512

512

512

1

64

FPGA

DRAMの中身

1 2 3 4 5

256 193 194 195

62 63 64

Page 31: FPGAを用いた世界最速のソーティングハードウェアの実現に向けた試み

l 完全にソートされたデータ列をHost PCに送信 Ø ソフトウェアとソート結果を比較してアクセラレータが正しく動作しているかを検証

1~256を昇順にソートする

30

DRAM

Host PC

>

> >

32 32 32 32

32 32

32 32

32

512-bit shift register

32

512-bit shift register

32

512-bit shift register

32

512-bit shift register

32

512

512

512

512

Input Buffer Merge Sorter Tree

512-bit shift register

Initial Data Generator

Sorting Network

512

512

512

512

DRAM Controller

UART Controller

Output Buffer 32 512 512

512 512

512

512

1

64

FPGA

DRAMの中身

1 2 3 4 5

256 193 194 195

62 63 64

この領域からリード

1 2 3 4

5 6 …

Page 32: FPGAを用いた世界最速のソーティングハードウェアの実現に向けた試み

l ベースとなるソーティングアーキテクチャ l マージソートツリーの複製 l ソートセルの改良 l ソーティング向けのデータ圧縮手法の提案

世界最速に向けたアプローチ

31

Page 33: FPGAを用いた世界最速のソーティングハードウェアの実現に向けた試み

32

マージソートツリーの 複製による高速化

Page 34: FPGAを用いた世界最速のソーティングハードウェアの実現に向けた試み

マージソートツリーを複製した ソーティングアーキテクチャ

33

512-bit shift register 512-bit

shift register 512-bit

shift register

>

> >

32 32 32 32

32 32

32 32

32

512-bit shift register

32

512-bit shift register

32

512-bit shift register

32

512-bit shift register

32

512

512

512

512

Input Buffer Merge Sorter Tree

Initial Data Generator

Sorting Network

512

512

512

512

DRAM Controller

UART Controller

Output Buffer 32 512 512

512 512

512

512

1

64

FPGA

Duplicated Logics

512-bit shift register

Page 35: FPGAを用いた世界最速のソーティングハードウェアの実現に向けた試み

l 複製の効果 Ø データ系列を分割してソートできる Ø ただし,最後は任意のツリーでマージしなければ ならない

マージソートツリーを複製した ソーティングアーキテクチャ

34

193 194 … 256 129 130 … 192 65 66 … 128 1 2 … 64

256 … 194 193 192 … 130 129 128 … 66 65 64 … 2 1 Initial Data Sequence

複製したツリーで並列にソート ツリー0 ツリー1 ツリー2 ツリー3

任意のツリーでマージ

1 2 3 4 5 6 7 8 … … … … 253 254 255 256 Sorting is done!!!

4-way マージソートツリーを4つ複製した場合のソーティング

Page 36: FPGAを用いた世界最速のソーティングハードウェアの実現に向けた試み

l ベースとなるソーティングアーキテクチャ l マージソートツリーの複製 l ソートセルの改良 l ソーティング向けのデータ圧縮手法の提案

世界最速に向けたアプローチ

35

Page 37: FPGAを用いた世界最速のソーティングハードウェアの実現に向けた試み

36

ソートセルの改良による高速化

Page 38: FPGAを用いた世界最速のソーティングハードウェアの実現に向けた試み

l 1サイクルに4要素出力できるソートセル[Casper+, FPGA’14]

複数の要素を扱えるソートセル

37

>

Page 39: FPGAを用いた世界最速のソーティングハードウェアの実現に向けた試み

l FIFO内の先頭の4つの要素において最小の値が比較される

ソートの様子 (Cycle 0)

38

> 2 4 6 8

3 3 5 7

2 4 6 8

10 12 14 16

11 13 17 19

Page 40: FPGAを用いた世界最速のソーティングハードウェアの実現に向けた試み

l FIFOからデキューされた最初の要素は必ずソートセル内のレジスタに格納される

ソートの様子 (Cycle 0)

39

> 2 4 6 8

3 3 5 7

2 4 6 8

10 12 14 16

11 13 17 19

Page 41: FPGAを用いた世界最速のソーティングハードウェアの実現に向けた試み

l FIFOからデキューされた要素とフィードバックされた要素を比較して並び替える

ソートの様子 (Cycle 1)

40

>

3 3 5 7

2 4 6 8

11 13 17 19

10 12 14 16

18 20 22 24

Page 42: FPGAを用いた世界最速のソーティングハードウェアの実現に向けた試み

l FIFOからデキューされた要素とフィードバックされた要素を比較して並び替える

ソートの様子 (Cycle 1)

41

>

3 3 5 7

2

11 13 17 19

10 12 14 16

18 20 22 24

3

3 4

6 5

8 7 2

4 6 8

Page 43: FPGAを用いた世界最速のソーティングハードウェアの実現に向けた試み

l FIFOからデキューされた要素とフィードバックされた要素を比較して並び替える

ソートの様子 (Cycle 1)

42

>

3 3 5 7

2

11 13 17 19

10 12 14 16

18 20 22 24

3

3 4

6 5

8 7 2

4 6 8

最初の段で8つの要素における最小値と最大値が決定する

Page 44: FPGAを用いた世界最速のソーティングハードウェアの実現に向けた試み

l FIFOからデキューされた要素とフィードバックされた要素を比較して並び替える

ソートの様子 (Cycle 1)

43

>

3 3 5 7

2

11 13 17 19

10 12 14 16

18 20 22 24

3

3 4

6 5

8 7 2

4 6 8

残りの段を通過することで出力すべき要素と, フィードバックされる要素が決定する

Page 45: FPGAを用いた世界最速のソーティングハードウェアの実現に向けた試み

l FIFOからデキューされた要素とフィードバックされた要素を比較して並び替える

ソートの様子 (Cycle 1)

44

>

3 3 5 7

2

11 13 17 19

10 12 14 16

18 20 22 24

3

3 4

6 5

8 7 2

4 6 8

残りの段を通過することで出力すべき要素と, フィードバックされる要素が決定する

Page 46: FPGAを用いた世界最速のソーティングハードウェアの実現に向けた試み

l FIFOからデキューされた要素とフィードバックされた要素を比較して並び替える

ソートの様子 (Cycle 1)

45

>

3 3 5 7

2

11 13 17 19

10 12 14 16

18 20 22 24

3

3 4

6 5

8 7 2

4 6 8

残りの段を通過することで出力すべき要素と, フィードバックされる要素が決定する

Page 47: FPGAを用いた世界最速のソーティングハードウェアの実現に向けた試み

l 小さい要素群が出力され,残りはレジスタに 格納される

ソートの様子 (Cycle 1)

46

>

3 3 5 7

5 6 7 8

11 13 17 19

10 12 14 16

18 20 22 24

2 3 3 4

Page 48: FPGAを用いた世界最速のソーティングハードウェアの実現に向けた試み

l FIFOからデキューされた要素とフィードバックされた要素を比較して並び替える

ソートの様子 (Cycle 2)

47

>

5 6 7 8

11 13 17 19

10 12 14 16

18 20 22 24

23 29 31 37

10 12 14 16

Page 49: FPGAを用いた世界最速のソーティングハードウェアの実現に向けた試み

l 小さい要素群が出力され,残りはレジスタに 格納される

ソートの様子 (Cycle 2)

48

> 5 6 7 8

11 13 17 19

10 12 14 16

18 20 22 24

23 29 31 37

10 12 14 16

Page 50: FPGAを用いた世界最速のソーティングハードウェアの実現に向けた試み

l マージソートツリーのスループットが向上 l マージソートツリーの複製とセットで使える

複数の要素を扱えるソートセルの効果

49

>

Page 51: FPGAを用いた世界最速のソーティングハードウェアの実現に向けた試み

l ベースとなるソーティングアーキテクチャ l マージソートツリーの複製 l ソートセルの改良 l ソーティング向けのデータ圧縮手法の提案

世界最速に向けたアプローチ

50

Page 52: FPGAを用いた世界最速のソーティングハードウェアの実現に向けた試み

51

ソーティング向けのデータ圧縮手法

Page 53: FPGAを用いた世界最速のソーティングハードウェアの実現に向けた試み

l ソーティングロジックのスループットを向上させればより高速にソートできる

l が,そのスループットを満たすメモリバンド幅の確保が問題となってくる

データ圧縮の必要性

52

Page 54: FPGAを用いた世界最速のソーティングハードウェアの実現に向けた試み

l 圧縮の対象となるデータやそのデータを扱うアプリケーション,その圧縮による影響をうけるハードウェアを考慮して最適なアルゴリズムを決定する必要がある

データ圧縮のアルゴリズム

53

どのアルゴリズムがいいんだ?

Deflate圧縮? 辞書ベース圧縮?

Page 55: FPGAを用いた世界最速のソーティングハードウェアの実現に向けた試み

l 我々はデータ間の差分を利用する圧縮アルゴリズム[Pekhimenko+, PACT’12]を利用

l なぜか? Ø ソーティングの対象となるデータ系列は,ソート処理が進むにつれて要素間の差分が小さくなるので,このアルゴリズムの恩恵を受けやすい

Ø 実装がシンプル ﹣ 単純なベクタ加算とベクタ減算

ソーティングに適した圧縮アルゴリズム

54

Page 56: FPGAを用いた世界最速のソーティングハードウェアの実現に向けた試み

l 圧縮の対象となるデータは任意の値(Base)とそのベースとの差分(Δ)の配列で表現される

差分を利用したデータ圧縮/展開

55

V3 V2 V1 V0

V3 V2 V1 V0

4 Bytes

Base Δ1 Δ2 Δ3

4 Bytes

- - -

1B

Base Δ1 Δ2 Δ3

+ + +

Before

After

Before

After

(a) Compression (b) Decompression

Page 57: FPGAを用いた世界最速のソーティングハードウェアの実現に向けた試み

データ圧縮/展開回路を組み込んだ データパス(実装中)

56

>

> >

32 32 32 32

32 32

32 32

32

512-bit shift register

32

512-bit shift register

32

512-bit shift register

32

512-bit shift register

32

512

512

512

512

Input Buffer Merge Sorter Tree

512-bit shift register

Initial Data Generator

Sorting Network

512

512

512

512

DRAM Controller

UART Controller

Output Buffer 32 512 512

512 512

512

512 1

64

FPGA

Decompressor

512 Compressor 512

追加するモジュール

Page 58: FPGAを用いた世界最速のソーティングハードウェアの実現に向けた試み

データ圧縮/展開回路を組み込んだ データパス(実装中)

57

>

> >

32 32 32 32

32 32

32 32

32

512-bit shift register

32

512-bit shift register

32

512-bit shift register

32

512-bit shift register

32

512

512

512

512

Input Buffer Merge Sorter Tree

512-bit shift register

Initial Data Generator

Sorting Network

512

512

512

512

DRAM Controller

UART Controller

Output Buffer 32 512 512

512 512

512

512 1

64

FPGA

Decompressor

512 Compressor 512

追加するモジュール

ソートされたデータを圧縮して メモリに転送

Page 59: FPGAを用いた世界最速のソーティングハードウェアの実現に向けた試み

データ圧縮/展開回路を組み込んだ データパス(実装中)

58

>

> >

32 32 32 32

32 32

32 32

32

512-bit shift register

32

512-bit shift register

32

512-bit shift register

32

512-bit shift register

32

512

512

512

512

Input Buffer Merge Sorter Tree

512-bit shift register

Initial Data Generator

Sorting Network

512

512

512

512

DRAM Controller

UART Controller

Output Buffer 32 512 512

512 512

512

512 1

64

FPGA

Decompressor

512 Compressor 512

追加するモジュール

圧縮された データを展開

Page 60: FPGAを用いた世界最速のソーティングハードウェアの実現に向けた試み

l 圧縮可能なブロックが2連続存在するなら, ひとつの512-bitのデータとしてまとめる Ø 全て圧縮可能ならメモリに転送するデータ量は1/2

データ圧縮を適用した概念

59

V15 V1 V0 V31 V17 V16 V47 V33 V32 V63 V49 V48

4 Bytes

Base0 Δ1 Δ15 Base16 Δ17 Δ31

Base32 Δ33 Δ47 Base48 Δ49 Δ63

Packing

Packing

512 bit

DRAM

512-bit

shift register

Output Buffer

32

512

512

Compressor 512

512 bit

Page 61: FPGAを用いた世界最速のソーティングハードウェアの実現に向けた試み

60

現状のシステムと関連研究との比較

Page 62: FPGAを用いた世界最速のソーティングハードウェアの実現に向けた試み

l マージソートツリーのway数 Ø 8

l ツリーの複製数 Ø 8

l ソートセルが扱える要素数 Ø 1

l データ圧縮機構 Ø なし

現状のシステムの構成

61

Page 63: FPGAを用いた世界最速のソーティングハードウェアの実現に向けた試み

l 使用したプラットフォーム Ø Xilinx FPGA VC707評価キット

ハードウェアの実装(1/2)

62

Power In

UART Port

JTAG Port

DDR3 SO-DIMM DRAM (4GB*, 800MHz/1600Mbps)

* 評価ボード付属のメモリは1GB 800MHz/1600MbpsのDDR3 SO-DIMMメモリ

Virtex-7 VX485T FPGA

Page 64: FPGAを用いた世界最速のソーティングハードウェアの実現に向けた試み

l Verilog HDLで回路を記述 l 論理合成ツールはVivado2014.4

Ø 合成オプションの設定はデフォルト l DRAMコントローラの実装

Ø Xilinxが提供しているIPコアを利用 l Initial Data Generator

Ø 疑似乱数生成器Xorshift*によるランダムな数列を 256M個生成

l 動作周波数 Ø ロジック:200MHz,DRAM:800MHz

ハードウェアの実装(2/2)

63 * George Marsaglia, Xorshift RNGs, Journal of Statistical Software 2003.

Page 65: FPGAを用いた世界最速のソーティングハードウェアの実現に向けた試み

0

0.5

1

1.5

2

2.5

8-way/8-parallel Intel Core i7 4-core @ 3.2GHz 4k-way/2-parallel/4-scell

Throughput[GB/s]

現状のシステムの位置づけ

64

Performance of the fastest FPGA-based sorting hardware

*

* [Satish+, SIGMOD’10]

7x higher...

Page 66: FPGAを用いた世界最速のソーティングハードウェアの実現に向けた試み

0

0.5

1

1.5

2

2.5

8-way/8-parallel Intel Core i7 4-core @ 3.2GHz 4k-way/2-parallel/4-scell

Throughput[GB/s]

現状のシステムの位置づけ

65

Performance of the fastest FPGA-based sorting hardware

*

* [Satish+, SIGMOD’10]

3.2x higher...

Page 67: FPGAを用いた世界最速のソーティングハードウェアの実現に向けた試み

0

0.5

1

1.5

2

2.5

8-way/8-parallel Intel Core i7 4-core @ 3.2GHz 4k-way/2-parallel/4-scell

Throughput[GB/s]

現状のシステムの位置づけ

66

Performance of the fastest FPGA-based sorting hardware

*

* [Satish+, SIGMOD’10]

性能モデルから算出 4k-way/2-parallel/4-scell(データ圧縮あり) @200MHzなら関連研究と比較して約半分の ハードウェア量でほぼ同等の性能を達成可能

Page 68: FPGAを用いた世界最速のソーティングハードウェアの実現に向けた試み

67

まとめと今後の課題

Page 69: FPGAを用いた世界最速のソーティングハードウェアの実現に向けた試み

l  FPGAを用いた世界最速のソーティングハードウェアの実現に向けたアプローチを紹介 Ø  2つの手法を組み合わせたベーシックなアーキテクチャ Ø マージソートツリーの複製 Ø ソートセルの改良 Ø データ圧縮

l  現状のシステムの性能(8-way/8-parallel) @ 200MHz Ø スループット:313MB/s

﹣ [Casper+, FPGA’14]と比較して約7倍低速 l  性能モデルによる見積もり

Ø  4k-way/2-parallel/4-scell(データ圧縮あり)@200MHzなら関連研究と比較して約半分のハードウェア量でほぼ同等の性能を達成可能 ﹣ 関連研究は8k-way/2-parallel @ 200MHzの構成

l  今後の課題

Ø ソーティング向けのデータ圧縮手法を実現する回路の実装 および検証

まとめと今後の課題

68