SlideShare une entreprise Scribd logo
1  sur  69
Télécharger pour lire hors ligne
FPGAを用いた世界最速の
ソーティングハードウェアの
実現に向けた試み
小林 諒平† 吉瀬 謙二†
†東京工業大学 大学院情報理工学研究科
2015年06月19日 16:25-16:50
RECONF研究会(十周年記念)@京都大学吉田キャンパス
FPGA応用および一般(1)
講演時間20分 + 質疑5分
l FPGAを用いた世界最速のソーティングハード
ウェアの実現に向けたアプローチを紹介
概要
1
世界の頂点
2
はじめに
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
l スタンフォード大学のCasperらのシステムが
現在最も高性能
Ø FPGA2014で発表している
﹣ タイトル
Hardware Acceleration of Database Operation
Ø 提案したシステムをXilinx Virtex-6 FPGA
(XC6VSX475T)に実装し評価
l このシステムよりも高性能なハードウェアを実
現するためのアプローチを紹介する
現在の世界最速のFPGAベースの
ソーティングシステム
4
l ベースとなるソーティングアーキテクチャ
l マージソートツリーの複製
l ソートセルの改良
l ソーティング向けのデータ圧縮手法の提案
世界最速に向けたアプローチ
5
l ベースとなるソーティングアーキテクチャ
l マージソートツリーの複製
l ソートセルの改良
l ソーティング向けのデータ圧縮手法の提案
世界最速に向けたアプローチ
6
7
ベースとなる
ソーティングアーキテクチャ
l 以下の2つのソーティングアーキテクチャを使用
Ø ソーティングネットワーク
Ø マージソートツリー
ベースとなるアーキテクチャ*の概要
8
1
4
3
2
4
3
2
1
>
>
>
ソーティングネットワーク
FPGA
マージソートツリー
* 小林諒平+,電子情報通信学会研究報告CPSY2015
l ワイヤ,コンパレータから構成される,数列を
ソートするネットワーク
l 例:4つの要素をソートするネットワーク
Ø 小さい要素が上に,大きい要素が下に移動している
ソーティングネットワーク*
9
1
4
3
2
4
3
2
1
バブルソートのネットワーク
* Donald E. Knuth. The Art of Computer Programming. 1998.
l ソートセルを2分木状に接続することによって構
成される,マージソートを実行するデータパス
マージソートツリー*
10
>
>
>
FIFO
ソートセル>
4-way マージソートツリー
* Dirk Koch et al, FPGASort, FPGA 11
l マージソートツリーでソートが実行される様子
Ø 最左端のFIFOには必ずソートされたデータ系列が
格納される
マージソートツリーでのソート
11
>
>
>
>
>
>
>
>
>
89
35
13
22 1
3
3
22
1
2
1
89
5
3
7 5
1
2
3
2
5
22
3
7
98
x
x: Invalid Value
Cycle N Cycle N+1 Cycle N+2
ベースとなる
ソーティングアーキテクチャ
12
デバッグ用の
モジュール
>
>
>
32
32
32
32
3232
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 32512512
512
512
512
512
1
64
FPGA
IN OUT
Host PC
DRAM
l データ型は32bitの整数型
Ø 512bitのワイヤでは16個の要素が並列に流れている
ベースとなる
ソーティングアーキテクチャ
13DRAM
Host PC
>
>
>
32
32
32
32
3232
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 32512512
512
512
512
512
1
64
FPGA
FPGAとDRAM間におけるデータ幅とDRAMの周波数に
依存している
14
例:1 256のソーティング
l Initial Data Generatorから生成された
初期データをDRAMにライトする
1 256を昇順にソートする
15
256 255 254 … 64 63 …
3 2 1
DRAM
Host PC
>
>
>
32
32
32
32
3232
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 32512512
512
512
512
512
1
64
FPGA
DRAMの中身
l 降順の並びのデータ列がDRAMに書き込まれる
Ø これを昇順にソートする
1 256を昇順にソートする
16
DRAM
Host PC
>
>
>
32
32
32
32
3232
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 32512512
512
512
512
512
1
64
FPGA
DRAMの中身
256
255
254
253
252
1
l DRAMから読み出してSorting Networkに
転送する
1 256を昇順にソートする
17
DRAM
Host PC
>
>
>
32
32
32
32
3232
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 32512512
512
512
512
512
1
64
FPGA
DRAMの中身
256
255
254
…
6463…321
256
255
254
253
252
1
IN OUT
l Sorting Networkで16要素ずつソートされる
Ø ソート済みのデータ列が16個できる
1 256を昇順にソートする
18
DRAM
Host PC
>
>
>
32
32
32
32
3232
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 32512512
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
1
l Input Bufferに格納された後,Merge Sorter
Treeに送られる
1 256を昇順にソートする
19
DRAM
Host PC
>
>
>
32
32
32
32
3232
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 32512512
512
512
512
512
1
64
FPGA
DRAMの中身
241242243256…
225226240…
224…
208…
227
210211
194195
209
193
256
255
254
253
252
1
l Merge Sorter Treeの根からソートされた
データ列が出力される
1 256を昇順にソートする
20
DRAM
Host PC
>
>
>
32
32
32
32
3232
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 32512512
512
512
512
512
1
64
FPGA
DRAMの中身
241242243256…
226227240…
224…
208…
228
210211 209
193 194
195
…
196
201
202
225
203
256
255
254
253
252
1
l 16要素ずつソートされたデータ列がマージされ,
ソート済みのデータ列が4個できる
1 256を昇順にソートする
21
DRAM
Host PC
>
>
>
32
32
32
32
3232
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 32512512
512
512
512
512
1
64
FPGA
DRAMの中身
64 … 3 2 1 128 … 67 66 65 256 … 195 194 193
ソート済みのデータ列(64要素)
192 … 131 130 129256
255
254
253
252
1
l Merge Sorter Treeから出力されたデータ列を
DRAMにライトする
1 256を昇順にソートする
22
DRAM
Host PC
>
>
>
32
32
32
32
3232
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 32512512
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
1
l データ列が完全にソートされていない
(部分的にソートされた列が4つ)
Ø 再び,Merge Sorter Treeに通す必要がある
1 256を昇順にソートする
23
DRAM
Host PC
>
>
>
32
32
32
32
3232
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 32512512
512
512
512
512
1
64
FPGA
DRAMの中身
256
255
254
253
252
1
193
194
195
62
63
64
l DRAMから読み出してSorting Networkに
転送する
1 256を昇順にソートする
24
DRAM
Host PC
>
>
>
32
32
32
32
3232
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 32512512
512
512
512
512
1
64
FPGA
DRAMの中身
193
194
195
…
129130…626364
この領域からリード256
255
254
253
252
1
193
194
195
62
63
64
l このとき,Sorting Networkはただのデータの
通り道
Ø 既に部分ごとのソートは実行されているため
1 256を昇順にソートする
25
DRAM
Host PC
>
>
>
32
32
32
32
3232
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 32512512
512
512
512
512
1
64
FPGA
DRAMの中身
256
255
254
253
252
1
193
194
195
62
63
64
l Input Bufferに格納された後,Merge Sorter
Treeに送られる
1 256を昇順にソートする
26
DRAM
Host PC
>
>
>
32
32
32
32
3232
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 32512512
512
512
512
512
1
64
FPGA
DRAMの中身
256
255
254
253
252
1
193
194
195
62
63
64
193194195256…
129130192…
128…
64…
131
6667
23
65
1
l Merge Sorter Treeの根からソートされた
データ列が出力される
1 256を昇順にソートする
27
DRAM
Host PC
>
>
>
32
32
32
32
3232
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 32512512
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
193194195256…
129130192…
128…
131
6667 65
l Merge Sorter Treeから出力されたデータ列を
DRAMにライトする
1 256を昇順にソートする
28
DRAM
Host PC
>
>
>
32
32
32
32
3232
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 32512512
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
l データ列が完全にソートされた
Ø DRAM -> Sorting Network -> Merge Sorter Tree
-> DRAMのパスを通す事でデータ列をソートできる
﹣ パスを通す回数:logway数(要素数/16)
1 256を昇順にソートする
29
DRAM
Host PC
>
>
>
32
32
32
32
3232
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 32512512
512
512
512
512
1
64
FPGA
DRAMの中身
1
2
3
4
5
256
193
194
195
62
63
64
l 完全にソートされたデータ列をHost PCに送信
Ø ソフトウェアとソート結果を比較してアクセラレー
タが正しく動作しているかを検証
1 256を昇順にソートする
30
DRAM
Host PC
>
>
>
32
32
32
32
3232
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 32512512
512
512
512
512
1
64
FPGA
DRAMの中身
1
2
3
4
5
256
193
194
195
62
63
64
この領域からリード
1 2 3
4
56…
l ベースとなるソーティングアーキテクチャ
l マージソートツリーの複製
l ソートセルの改良
l ソーティング向けのデータ圧縮手法の提案
世界最速に向けたアプローチ
31
32
マージソートツリーの
複製による高速化
マージソートツリーを複製した
ソーティングアーキテクチャ
33
512-bit
shift register
512-bit
shift register
512-bit
shift register
>
>
>
32
32
32
32
3232
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 32512512
512
512
512
512
1
64
FPGA
Duplicated Logics
512-bit
shift register
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つ複製した場合のソーティング
l ベースとなるソーティングアーキテクチャ
l マージソートツリーの複製
l ソートセルの改良
l ソーティング向けのデータ圧縮手法の提案
世界最速に向けたアプローチ
35
36
ソートセルの改良による高速化
l 1サイクルに4要素出力できるソートセル
[Casper+, FPGA 14]
複数の要素を扱えるソートセル
37
>
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
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
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
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
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つの要素における最小値と最大値が決定する
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
残りの段を通過することで出力すべき要素と,
フィードバックされる要素が決定する
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
残りの段を通過することで出力すべき要素と,
フィードバックされる要素が決定する
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
残りの段を通過することで出力すべき要素と,
フィードバックされる要素が決定する
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
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
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
l マージソートツリーのスループットが向上
l マージソートツリーの複製とセットで使える
複数の要素を扱えるソートセルの効果
49
>
l ベースとなるソーティングアーキテクチャ
l マージソートツリーの複製
l ソートセルの改良
l ソーティング向けのデータ圧縮手法の提案
世界最速に向けたアプローチ
50
51
ソーティング向けのデータ圧縮手法
l ソーティングロジックのスループットを向上さ
せればより高速にソートできる
l が,そのスループットを満たすメモリバンド幅
の確保が問題となってくる
データ圧縮の必要性
52
l 圧縮の対象となるデータやそのデータを扱うア
プリケーション,その圧縮による影響をうける
ハードウェアを考慮して最適なアルゴリズムを
決定する必要がある
データ圧縮のアルゴリズム
53
どのアルゴリズム
がいいんだ?
Deflate圧縮?辞書ベース圧縮?
l 我々はデータ間の差分を利用する圧縮アルゴリ
ズム[Pekhimenko+, PACT 12]を利用
l なぜか?
Ø ソーティングの対象となるデータ系列は,ソート処
理が進むにつれて要素間の差分が小さくなるので,
このアルゴリズムの恩恵を受けやすい
Ø 実装がシンプル
﹣ 単純なベクタ加算とベクタ減算
ソーティングに適した圧縮アルゴリズム
54
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
データ圧縮/展開回路を組み込んだ
データパス(実装中)
56
>
>
>
32
32
32
32
3232
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 32512512
512
512
512
512
1
64
FPGA
Decompressor
512
Compressor
512
追加するモジュール
データ圧縮/展開回路を組み込んだ
データパス(実装中)
57
>
>
>
32
32
32
32
3232
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 32512512
512
512
512
512
1
64
FPGA
Decompressor
512
Compressor
512
追加するモジュール
ソートされたデータを圧縮して
メモリに転送
データ圧縮/展開回路を組み込んだ
データパス(実装中)
58
>
>
>
32
32
32
32
3232
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 32512512
512
512
512
512
1
64
FPGA
Decompressor
512
Compressor
512
追加するモジュール
圧縮された
データを展開
l 圧縮可能なブロックが2連続存在するなら,
ひとつの512-bitのデータとしてまとめる
Ø 全て圧縮可能ならメモリに転送するデータ量は1/2
データ圧縮を適用した概念
59
V15 V1 V0
V31 V17 V16
V47 V33 V32
V63 V49 V48
4 Bytes
Base0Δ1Δ15Base16Δ17Δ31
Base32Δ33Δ47Base48Δ49Δ63
Packing
Packing
512 bit
DRAM
512-bit
shiftregister
OutputBuffer32512512
Compressor
512
512 bit
60
現状のシステムと関連研究との比較
l マージソートツリーのway数
Ø 8
l ツリーの複製数
Ø 8
l ソートセルが扱える要素数
Ø 1
l データ圧縮機構
Ø なし
現状のシステムの構成
61
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
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.
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...
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...
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なら関連研究と比較して約半分の
ハードウェア量でほぼ同等の性能を達成可能
67
まとめと今後の課題
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

Contenu connexe

Tendances

Verilog-HDL Tutorial (1)
Verilog-HDL Tutorial (1)Verilog-HDL Tutorial (1)
Verilog-HDL Tutorial (1)Hiroki Nakahara
 
NVIDIA TESLA V100・CUDA 9 のご紹介
NVIDIA TESLA V100・CUDA 9 のご紹介NVIDIA TESLA V100・CUDA 9 のご紹介
NVIDIA TESLA V100・CUDA 9 のご紹介NVIDIA Japan
 
電波望遠鏡用の分光器をAltera SDK for OpenCL使ってサクッと作ってみた
電波望遠鏡用の分光器をAltera SDK for OpenCL使ってサクッと作ってみた電波望遠鏡用の分光器をAltera SDK for OpenCL使ってサクッと作ってみた
電波望遠鏡用の分光器をAltera SDK for OpenCL使ってサクッと作ってみたHiroki Nakahara
 
200625material naruse
200625material naruse200625material naruse
200625material naruseRCCSRENKEI
 
20170726 py data.tokyo
20170726 py data.tokyo20170726 py data.tokyo
20170726 py data.tokyoManaMurakami1
 
PL/CUDA - GPU Accelerated In-Database Analytics
PL/CUDA - GPU Accelerated In-Database AnalyticsPL/CUDA - GPU Accelerated In-Database Analytics
PL/CUDA - GPU Accelerated In-Database AnalyticsKohei KaiGai
 
MemoryPlus Workshop
MemoryPlus WorkshopMemoryPlus Workshop
MemoryPlus WorkshopHitoshi Sato
 
FPGAX6_hayashi
FPGAX6_hayashiFPGAX6_hayashi
FPGAX6_hayashi愛美 林
 
Pythonによる高位設計フレームワークPyCoRAMでFPGAシステムを開発してみよう
Pythonによる高位設計フレームワークPyCoRAMでFPGAシステムを開発してみようPythonによる高位設計フレームワークPyCoRAMでFPGAシステムを開発してみよう
Pythonによる高位設計フレームワークPyCoRAMでFPGAシステムを開発してみようShinya Takamaeda-Y
 
RFID Tag Data Grouping Encoding
RFID Tag Data Grouping EncodingRFID Tag Data Grouping Encoding
RFID Tag Data Grouping EncodingSatomi Suyama
 
Verilog-HDL Tutorial (4)
Verilog-HDL Tutorial (4)Verilog-HDL Tutorial (4)
Verilog-HDL Tutorial (4)Hiroki Nakahara
 
OpenCLに触れてみよう
OpenCLに触れてみようOpenCLに触れてみよう
OpenCLに触れてみようYou&I
 

Tendances (13)

Verilog-HDL Tutorial (1)
Verilog-HDL Tutorial (1)Verilog-HDL Tutorial (1)
Verilog-HDL Tutorial (1)
 
NVIDIA TESLA V100・CUDA 9 のご紹介
NVIDIA TESLA V100・CUDA 9 のご紹介NVIDIA TESLA V100・CUDA 9 のご紹介
NVIDIA TESLA V100・CUDA 9 のご紹介
 
電波望遠鏡用の分光器をAltera SDK for OpenCL使ってサクッと作ってみた
電波望遠鏡用の分光器をAltera SDK for OpenCL使ってサクッと作ってみた電波望遠鏡用の分光器をAltera SDK for OpenCL使ってサクッと作ってみた
電波望遠鏡用の分光器をAltera SDK for OpenCL使ってサクッと作ってみた
 
200625material naruse
200625material naruse200625material naruse
200625material naruse
 
20170726 py data.tokyo
20170726 py data.tokyo20170726 py data.tokyo
20170726 py data.tokyo
 
PL/CUDA - GPU Accelerated In-Database Analytics
PL/CUDA - GPU Accelerated In-Database AnalyticsPL/CUDA - GPU Accelerated In-Database Analytics
PL/CUDA - GPU Accelerated In-Database Analytics
 
MemoryPlus Workshop
MemoryPlus WorkshopMemoryPlus Workshop
MemoryPlus Workshop
 
FPGAX6_hayashi
FPGAX6_hayashiFPGAX6_hayashi
FPGAX6_hayashi
 
Pythonによる高位設計フレームワークPyCoRAMでFPGAシステムを開発してみよう
Pythonによる高位設計フレームワークPyCoRAMでFPGAシステムを開発してみようPythonによる高位設計フレームワークPyCoRAMでFPGAシステムを開発してみよう
Pythonによる高位設計フレームワークPyCoRAMでFPGAシステムを開発してみよう
 
RFID Tag Data Grouping Encoding
RFID Tag Data Grouping EncodingRFID Tag Data Grouping Encoding
RFID Tag Data Grouping Encoding
 
Verilog-HDL Tutorial (4)
Verilog-HDL Tutorial (4)Verilog-HDL Tutorial (4)
Verilog-HDL Tutorial (4)
 
Reconf 201901
Reconf 201901Reconf 201901
Reconf 201901
 
OpenCLに触れてみよう
OpenCLに触れてみようOpenCLに触れてみよう
OpenCLに触れてみよう
 

En vedette

3bOS: A flexible and lightweight embedded OS operated using only 3 buttons
3bOS: A flexible and lightweight embedded OS operated using only 3 buttons3bOS: A flexible and lightweight embedded OS operated using only 3 buttons
3bOS: A flexible and lightweight embedded OS operated using only 3 buttonsRyohei Kobayashi
 
CMPP 2012 held in conjunction with ICNC’12
CMPP 2012 held in conjunction with ICNC’12CMPP 2012 held in conjunction with ICNC’12
CMPP 2012 held in conjunction with ICNC’12Ryohei Kobayashi
 
A survey of how to efficiently implement application-specific hardware on an ...
A survey of how to efficiently implement application-specific hardware on an ...A survey of how to efficiently implement application-specific hardware on an ...
A survey of how to efficiently implement application-specific hardware on an ...Ryohei Kobayashi
 
IEICE technical report (RECONF), January 2013.
IEICE technical report (RECONF), January 2013.IEICE technical report (RECONF), January 2013.
IEICE technical report (RECONF), January 2013.Ryohei Kobayashi
 
Fully-Functional FPGA Prototype with Fine-Grain Programmable Body Biasing (FP...
Fully-Functional FPGA Prototype with Fine-Grain Programmable Body Biasing (FP...Fully-Functional FPGA Prototype with Fine-Grain Programmable Body Biasing (FP...
Fully-Functional FPGA Prototype with Fine-Grain Programmable Body Biasing (FP...Ryohei Kobayashi
 
FACE: Fast and Customizable Sorting Accelerator for Heterogeneous Many-core S...
FACE: Fast and Customizable Sorting Accelerator for Heterogeneous Many-core S...FACE: Fast and Customizable Sorting Accelerator for Heterogeneous Many-core S...
FACE: Fast and Customizable Sorting Accelerator for Heterogeneous Many-core S...Ryohei Kobayashi
 
私が上智に通って唯一誇れること
私が上智に通って唯一誇れること私が上智に通って唯一誇れること
私が上智に通って唯一誇れることRyohei Kobayashi
 
『モバゲーの大規模データマイニング基盤におけるHadoop活用』-Hadoop Conference Japan 2011- #hcj2011
『モバゲーの大規模データマイニング基盤におけるHadoop活用』-Hadoop Conference Japan 2011- #hcj2011 『モバゲーの大規模データマイニング基盤におけるHadoop活用』-Hadoop Conference Japan 2011- #hcj2011
『モバゲーの大規模データマイニング基盤におけるHadoop活用』-Hadoop Conference Japan 2011- #hcj2011 Koichi Hamada
 
A High-speed Verilog HDL Simulation Method using a Lightweight Translator
A High-speed Verilog HDL Simulation Method using a Lightweight TranslatorA High-speed Verilog HDL Simulation Method using a Lightweight Translator
A High-speed Verilog HDL Simulation Method using a Lightweight TranslatorRyohei Kobayashi
 

En vedette (11)

hpc2013_20131223
hpc2013_20131223hpc2013_20131223
hpc2013_20131223
 
3bOS: A flexible and lightweight embedded OS operated using only 3 buttons
3bOS: A flexible and lightweight embedded OS operated using only 3 buttons3bOS: A flexible and lightweight embedded OS operated using only 3 buttons
3bOS: A flexible and lightweight embedded OS operated using only 3 buttons
 
CMPP 2012 held in conjunction with ICNC’12
CMPP 2012 held in conjunction with ICNC’12CMPP 2012 held in conjunction with ICNC’12
CMPP 2012 held in conjunction with ICNC’12
 
A survey of how to efficiently implement application-specific hardware on an ...
A survey of how to efficiently implement application-specific hardware on an ...A survey of how to efficiently implement application-specific hardware on an ...
A survey of how to efficiently implement application-specific hardware on an ...
 
IEICE technical report (RECONF), January 2013.
IEICE technical report (RECONF), January 2013.IEICE technical report (RECONF), January 2013.
IEICE technical report (RECONF), January 2013.
 
Fully-Functional FPGA Prototype with Fine-Grain Programmable Body Biasing (FP...
Fully-Functional FPGA Prototype with Fine-Grain Programmable Body Biasing (FP...Fully-Functional FPGA Prototype with Fine-Grain Programmable Body Biasing (FP...
Fully-Functional FPGA Prototype with Fine-Grain Programmable Body Biasing (FP...
 
FACE: Fast and Customizable Sorting Accelerator for Heterogeneous Many-core S...
FACE: Fast and Customizable Sorting Accelerator for Heterogeneous Many-core S...FACE: Fast and Customizable Sorting Accelerator for Heterogeneous Many-core S...
FACE: Fast and Customizable Sorting Accelerator for Heterogeneous Many-core S...
 
私が上智に通って唯一誇れること
私が上智に通って唯一誇れること私が上智に通って唯一誇れること
私が上智に通って唯一誇れること
 
Presentacion de orange institucional
Presentacion de orange institucionalPresentacion de orange institucional
Presentacion de orange institucional
 
『モバゲーの大規模データマイニング基盤におけるHadoop活用』-Hadoop Conference Japan 2011- #hcj2011
『モバゲーの大規模データマイニング基盤におけるHadoop活用』-Hadoop Conference Japan 2011- #hcj2011 『モバゲーの大規模データマイニング基盤におけるHadoop活用』-Hadoop Conference Japan 2011- #hcj2011
『モバゲーの大規模データマイニング基盤におけるHadoop活用』-Hadoop Conference Japan 2011- #hcj2011
 
A High-speed Verilog HDL Simulation Method using a Lightweight Translator
A High-speed Verilog HDL Simulation Method using a Lightweight TranslatorA High-speed Verilog HDL Simulation Method using a Lightweight Translator
A High-speed Verilog HDL Simulation Method using a Lightweight Translator
 

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

High-speed Sorting using Portable FPGA Accelerator (IPSJ 77th National Conven...
High-speed Sorting using Portable FPGA Accelerator (IPSJ 77th National Conven...High-speed Sorting using Portable FPGA Accelerator (IPSJ 77th National Conven...
High-speed Sorting using Portable FPGA Accelerator (IPSJ 77th National Conven...Takuma Usui
 
IEICE technical report (RECONF), January 2015.
IEICE technical report (RECONF), January 2015.IEICE technical report (RECONF), January 2015.
IEICE technical report (RECONF), January 2015.Takuma Usui
 
第162回情報処理学会ハイパフォーマンスコンピューティング研究発表会
第162回情報処理学会ハイパフォーマンスコンピューティング研究発表会第162回情報処理学会ハイパフォーマンスコンピューティング研究発表会
第162回情報処理学会ハイパフォーマンスコンピューティング研究発表会Hitoshi Sato
 
Osc2012 tokyo fall_home_san_nayamaguti
Osc2012 tokyo fall_home_san_nayamagutiOsc2012 tokyo fall_home_san_nayamaguti
Osc2012 tokyo fall_home_san_nayamagutiNoriyuki Yamaguchi
 
CUDAプログラミング入門
CUDAプログラミング入門CUDAプログラミング入門
CUDAプログラミング入門NVIDIA Japan
 
オリジナルMIDIシーケンサ 開発ノート
オリジナルMIDIシーケンサ 開発ノートオリジナルMIDIシーケンサ 開発ノート
オリジナルMIDIシーケンサ 開発ノートyou_ucchy
 
20170421 tensor flowusergroup
20170421 tensor flowusergroup20170421 tensor flowusergroup
20170421 tensor flowusergroupManaMurakami1
 
Singularityで分散深層学習
Singularityで分散深層学習Singularityで分散深層学習
Singularityで分散深層学習Hitoshi Sato
 
Linux kernelのbspとupstream
Linux kernelのbspとupstreamLinux kernelのbspとupstream
Linux kernelのbspとupstreamwata2ki
 
Cell/B.E. プログラミング事始め
Cell/B.E. プログラミング事始めCell/B.E. プログラミング事始め
Cell/B.E. プログラミング事始めYou&I
 
katagaitaictf7_hw_ysk
katagaitaictf7_hw_yskkatagaitaictf7_hw_ysk
katagaitaictf7_hw_yskysk256
 
2015年度GPGPU実践基礎工学 第14回 GPGPU組込開発環境
2015年度GPGPU実践基礎工学 第14回 GPGPU組込開発環境2015年度GPGPU実践基礎工学 第14回 GPGPU組込開発環境
2015年度GPGPU実践基礎工学 第14回 GPGPU組込開発環境智啓 出川
 
2013 06-22osc nagoya-netmf
2013 06-22osc nagoya-netmf2013 06-22osc nagoya-netmf
2013 06-22osc nagoya-netmfAtomu Hidaka
 
PBL1-v0-200j.pptx
PBL1-v0-200j.pptxPBL1-v0-200j.pptx
PBL1-v0-200j.pptxNAIST
 
IEEE ITSS Nagoya Chapter NVIDIA
IEEE ITSS Nagoya Chapter NVIDIAIEEE ITSS Nagoya Chapter NVIDIA
IEEE ITSS Nagoya Chapter NVIDIATak Izaki
 
NVIDIA deep learning最新情報in沖縄
NVIDIA deep learning最新情報in沖縄NVIDIA deep learning最新情報in沖縄
NVIDIA deep learning最新情報in沖縄Tak Izaki
 

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

High-speed Sorting using Portable FPGA Accelerator (IPSJ 77th National Conven...
High-speed Sorting using Portable FPGA Accelerator (IPSJ 77th National Conven...High-speed Sorting using Portable FPGA Accelerator (IPSJ 77th National Conven...
High-speed Sorting using Portable FPGA Accelerator (IPSJ 77th National Conven...
 
IEICE technical report (RECONF), January 2015.
IEICE technical report (RECONF), January 2015.IEICE technical report (RECONF), January 2015.
IEICE technical report (RECONF), January 2015.
 
第162回情報処理学会ハイパフォーマンスコンピューティング研究発表会
第162回情報処理学会ハイパフォーマンスコンピューティング研究発表会第162回情報処理学会ハイパフォーマンスコンピューティング研究発表会
第162回情報処理学会ハイパフォーマンスコンピューティング研究発表会
 
Zenkoku78
Zenkoku78Zenkoku78
Zenkoku78
 
Osc2012 tokyo fall_home_san_nayamaguti
Osc2012 tokyo fall_home_san_nayamagutiOsc2012 tokyo fall_home_san_nayamaguti
Osc2012 tokyo fall_home_san_nayamaguti
 
CUDAプログラミング入門
CUDAプログラミング入門CUDAプログラミング入門
CUDAプログラミング入門
 
オリジナルMIDIシーケンサ 開発ノート
オリジナルMIDIシーケンサ 開発ノートオリジナルMIDIシーケンサ 開発ノート
オリジナルMIDIシーケンサ 開発ノート
 
Janog60 yosou
Janog60 yosouJanog60 yosou
Janog60 yosou
 
20170421 tensor flowusergroup
20170421 tensor flowusergroup20170421 tensor flowusergroup
20170421 tensor flowusergroup
 
GTC Japan 2017
GTC Japan 2017GTC Japan 2017
GTC Japan 2017
 
Singularityで分散深層学習
Singularityで分散深層学習Singularityで分散深層学習
Singularityで分散深層学習
 
Linux kernelのbspとupstream
Linux kernelのbspとupstreamLinux kernelのbspとupstream
Linux kernelのbspとupstream
 
Cell/B.E. プログラミング事始め
Cell/B.E. プログラミング事始めCell/B.E. プログラミング事始め
Cell/B.E. プログラミング事始め
 
katagaitaictf7_hw_ysk
katagaitaictf7_hw_yskkatagaitaictf7_hw_ysk
katagaitaictf7_hw_ysk
 
2015年度GPGPU実践基礎工学 第14回 GPGPU組込開発環境
2015年度GPGPU実践基礎工学 第14回 GPGPU組込開発環境2015年度GPGPU実践基礎工学 第14回 GPGPU組込開発環境
2015年度GPGPU実践基礎工学 第14回 GPGPU組込開発環境
 
2013 06-22osc nagoya-netmf
2013 06-22osc nagoya-netmf2013 06-22osc nagoya-netmf
2013 06-22osc nagoya-netmf
 
PBL1-v0-200j.pptx
PBL1-v0-200j.pptxPBL1-v0-200j.pptx
PBL1-v0-200j.pptx
 
IEEE ITSS Nagoya Chapter NVIDIA
IEEE ITSS Nagoya Chapter NVIDIAIEEE ITSS Nagoya Chapter NVIDIA
IEEE ITSS Nagoya Chapter NVIDIA
 
NVIDIA deep learning最新情報in沖縄
NVIDIA deep learning最新情報in沖縄NVIDIA deep learning最新情報in沖縄
NVIDIA deep learning最新情報in沖縄
 
Kernel vm-2014-05-25
Kernel vm-2014-05-25Kernel vm-2014-05-25
Kernel vm-2014-05-25
 

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