72
FPGAI/O/2014.12.1

ICD/CPSY 201412

Embed Size (px)

DESCRIPTION

Accelerating I/O-Intensive Applications with FPGAs

Citation preview

FPGAによるI/Oインテンシブなデータ処理の高性能化

株式会社イーツリーズ・ジャパン/わさらぼ合同会社

三好 健文

2014.12.1

2

(株)イーツリーズ・ジャパンFPGAでWeb(キャッシュ)サーバを作ってきた(いる)会社

20002002

20042006

20082010

2012

IPv4TCP HTTP/1.0

IP filterIPv6 Redundant load balancing

TCP band width ctrl.TCP port forwarding

Authentication

“FPGA” で “高速ネットワーク処理”

HTTP/1.1

〜2014

3

わさらぼ合同会社 - Synthesijer✔ JavaプログラムをFPGA上のハードウェアに変換する高位合成処理系

✔ ソフトウェアとして実行可能.動作の確認、検証に✔ 複雑なアルゴリズムのハードウェア実装が楽に✔ オブクジェクト指向設計による再利用性の向上

✔ 特殊な記法,追加構文はない✔ 書けるプログラムに制限は加える(動的なnew,再帰などは不可)

Javaコンパイラフロントエンド

Synthesijerエンジン

Javaコンパイラバックエンド

合成配置配線

while(){ if(...){ … }else{ … … } ….}

複雑な状態遷移も,Javaの制御構文を使って楽に設計できる 同じJavaプログラムをソフトウェアとしてもFPGA上のハードウェアとしても実行可能

Opensource

HW開発フロー

(いつもの)SW開発フロー

http://synthesijer.sourceforge.net

4

コンテンツ✔ FPGAとは?✔ FPGAを使ったアプリケーション研究開発事例✔ データ(I/O)処理システムとしてのFPGA

✔ FPGAの開発環境について

5

コンテンツ✔ FPGAとは?✔ FPGAを使ったアプリケーション研究開発事例✔ データ(I/O)処理システムとしてのFPGA

✔ FPGAの開発環境について

6

FPGAとは?

✔ 論理回路・データパスを自由に作り込めるLSI

✔ クロックレベルの同期と並列性を活用した処理を実現

Field Programmable Gate Array

7

FPGAとは?

✔ 論理回路・データパスを自由に作り込めるLSI

✔ I/Oを自由に使える

Field Programmable Gate Array

8

FPGAとは?

✔ 論理回路・データパスを自由に作り込めるLSI

✔ I/Oを自由に使える

✔ クロックレベルの同期と並列性を活用した処理を実現

Field Programmable Gate Array

9

FPGAとは?

✔ 論理回路・データパスを自由に作り込めるLSI

✔ I/Oを自由に使える✔ クロックレベルの同期と並列性を活用した処理を実現

✔ ASIC開発のプロトタイプとして✔ 特定用途向け(少数生産)の製品として

Field Programmable Gate Array

10

FPGAの中身についてもう少し“論理回路を作り込める”仕組みXilinx社 Virtex-7のSliceの構造 Altera社 Stratix-VのLABの構造

Xilinx, WP405 Altera, Logic Array Blocks and Adaptive Logic Modules in Stratix V Devices

01

00

2 0

63 1〜〜〜〜

11

FPGAの中身についてもう少し“論理回路を作り込める”仕組み

✔ 汎用の論理構成要素 +

✔ 多ポートの内蔵メモリ✔ DSP

✔ DDRメモリコントローラ✔ 高速I/Oコントローラ(SERDES,符号化ユニット)

✔ 汎用マイクロプロセッサ

12

FPGAの中身についてもう少し“論理回路を作り込める”仕組みのオーバヘッド

Logic Only Logic & DSP Logic & Memory

Logic, Memory & DSP

Area Ratio 40 28 37 21

Critical PathDelay(Fastest Grade) 3.2 3.4 2.3 2.1

Critical PathDelay(Slowest Grade) 4.3 4.5 3.1 2.8

Dynamic PowerConsumption 12 12 9.2 9.0

[7] I. Kuon and J. Rose, “Measuring the gap between fpgas and asics,” Proceedings of the 2006 ACM/SIGDA 14th Inter- national Symposium on Field Programmable Gate Arrays, pp.21–30, FPGA ’06, ACM, New York, NY, USA, 2006.

Ratio = FPGA/ASIC, 種々のベンチマークの相乗平均

13

FPGAとは?

✔ 論理回路・データパスを自由に作り込めるLSI

✔ I/Oを自由に使える✔ クロックレベルの同期と並列性を活用した処理を実現

✔ ASIC開発のプロトタイプとして✔ 特定用途向け(少数生産)の製品として

Field Programmable Gate Array

14

プラットフォームとしてのFPGAプロセッサの場合

FPGAの場合 高性能低消費電力コンパクト

15

コンテンツ✔ FPGAとは?✔ FPGAを使ったアプリケーション研究開発事例✔ データ(I/O)処理システムとしてのFPGA

✔ FPGAの開発環境について

16

“アプリケーション”は様々

EE Times - Google's Project ARA Smartphones to Use Lattice ECP5 FPGAs http://www.eetimes.com/document.asp?doc_id=1321936

FPGA入門 - どこで使われているか?http://www.fpga.co.jp/nyumon2.html

17

“アプリケーション”は様々

Node 0

Node 1

Node N

+ Node i

Op

Op

Op

...

e-trees.Japanの場合

などなど

18

アプリケーション研究事例- Fast, Power-Efficient Biophotonic Simulations for Cancer Treatment Using FPGAs

- SMCGen: Generating Reconfigurable Design for Sequential Monte Carlo Applications

- FPGA Gaussian Random Number Generators with Guaranteed Statistical Accuracy

- FPGA Implementation of EM Algorithm for 3D CT Reconstruction

- A Scalable Multi-engine Xpress9 Compressor with Asynchronous Data Transfer

- FPGA Accelerated Online Boosting for Multi-target Tracking

- High-Throughput Implementation of a Million-Point Sparse Fourier Transform

- Power-efficient Re-gridding Architecture for Accelerating Non-uniform Fast Fourier Transform

- Radix-4 and Radix-8 Booth Encoded Interleaved Modular Multipliers Over General Fp

- Dataflow Acceleration of Krylov Subspace Sparse Banded Problems

- A Highly-efficient and Green Data Flow Engine for Solving Euler Atmospheric Equations

- An Efficient FPGA-based Hardware Framework for Natural Feature Extraction and Related Computer Vision Tasks

- An Efficient Sparse Conjugate Gradient Solver Using a Benes Permutation Network

- Efficient 3D Triangulation in Hardware for Dense Structure-from-Motion in Low-Speed Automotive Scenarios

- FPGA-based Biophysically-Meaningful Modeling of Olivocerebellar Neurons

- Square-Rich Fixed Point Polynomial Evaluation on FPGAs

- Hardware Acceleration of Database Operations

- A Scalable Sparse Matrix-Vector Multiplication Kernel For Energy-Efficient Sparse-BLAS On FPGAs

- Binary Stochastic Implementation of Digital Logic

- Accelerating Parameter Estimation for Multivariate Self-Exciting Point Processes

- Energy-Efficient Multiplier-Less Discrete Convolver through Probabilistic Domain Transformation

- …..

@FCCM2014,FPL2014,FPGA2014

19

アプリケーション研究事例

- The Click2NetFPGA Toolchain @USENIX ATC2012

- SURF Algorithm in FPGA: a Novel Architecture for High Demanding Industrial Applications @DATE2012

- Achieving 10Gbps line-rate key-value stores with FPGAs @USENIX HotCloud 2013

- FPGA Acceleration for the Frequent Item Problem @ICDE 2010

- An FPGA-based pattern classifier using data compression @IEEEI 2010

- A reconfigurable fabric for accelerating large-scale datacenter services @ISCA 2014

- LINQits: big data on little clients @ISCA 2013

- Parallel Real-time Garbage Collection of Multiple Heaps in Reconfigurable Hardware @ISMM2014

- Accelerating Machine-Learning Algorithms on FPGAs using Pattern-Based Decomposition @J. of Sig. Process. Syst.

- Willow: A User-Programmable SSD @USENIX OSDI2014

- Hardware Enforcement of Application Security Policies Using Tagged Memory @USENIX OSDI2008

- Histograms as a Side Effect of Data Movement for Big Data @SIGMOD2014

- Flexible Query Processor on FPGAs @VLDB2013

- Complex Event Detection at Wire Speed with FPGAs @VLDB2010

- Data Processing on FPGAs @VLDB2009

- …..

FPGAドミナントではない会議での事例

などなどなど沢山

20

“アプリケーション”は様々今回は “I/Oインテンシブ” で “高性能” な話

FPGA

高いスループットでたくさんのデータを処理

21

“アプリケーション”は様々今回は “I/Oインテンシブ” で “高性能” な話

1) http://www.theregister.co.uk/Print/2011/12/12/ibm_vs_oracle_data_centre_optimisation/

2) http://www.redbooks.ibm.com/redpapers/pdfs/redp4725.pdf

DB,金融,油田探索...

1)

2)

例: IBM Netteza

22

アプリケーション研究事例

- The Click2NetFPGA Toolchain @USENIX ATC2012

- SURF Algorithm in FPGA: a Novel Architecture for High Demanding Industrial Applications @DATE2012

- Achieving 10Gbps line-rate key-value stores with FPGAs @USENIX HotCloud 2013

- FPGA Acceleration for the Frequent Item Problem @ICDE 2010

- An FPGA-based pattern classifier using data compression @IEEEI 2010

- A reconfigurable fabric for accelerating large-scale datacenter services @ISCA 2014

- LINQits: big data on little clients @ISCA 2013

- Parallel Real-time Garbage Collection of Multiple Heaps in Reconfigurable Hardware @ISMM2014

- Accelerating Machine-Learning Algorithms on FPGAs using Pattern-Based Decomposition @J. of Sig. Process. Syst.

- Willow: A User-Programmable SSD @USENIX OSDI2014

- Hardware Enforcement of Application Security Policies Using Tagged Memory @USENIX OSDI2008

- Histograms as a Side Effect of Data Movement for Big Data @SIGMOD2014

- Flexible Query Processor on FPGAs @VLDB2013

- Complex Event Detection at Wire Speed with FPGAs @VLDB2010

- Data Processing on FPGAs @VLDB2009

- …..

FPGAドミナントではない会議での事例

などなどなど沢山

23

[email protected] によるWebサーバー

ネットワークI/F 100/1000BASE-T x 4

対応プロトコル HTTP/1.1, (IPv4, IPv6, TCP, ICMP)

メモリ(コンテンツ用) DDR2 SDRAM 4GB〜32GB

最大同時コネクション数 491,520

サイズ 1.5U(430x603x66 mm)

最大消費電力 300W未満

24

[email protected]

Ethernet IP

TCP

HTTP

Ethernet IP

TCP

TCP

・・・

TCP

TCP

TCP

・・・

HTTP

HTTP

Filesystem+

Storage

* モジュール構成はイメージです

✔ 専用回路ならではの並列性の活用

25

[email protected]✔ 専用回路ならではの並列性の活用

KB

ps

26

[email protected]✔ [参考] 今時のApache/PCにabで負荷をかけてみる

✔ PCのスペック

✔ 結果

CPU Intel(R) Core(TM) i5-3570 [email protected]

メモリ 32GB

ディスク Intel SSDC2W24

OS Fedora release 17

Apache Apache/2.2.23

並列度 スループット(kBps)

10 40225

100 48865

1000 12494

並列度 スループット(kBps)

10 114565

100 114568

1000 N/A

➔ 1kB ➔ 1MB

27

Memcached@Xilinx, ETH Zurich

10G if

DRAM

Networkadapter

FPGA

Network stack Memcached

x86 DRAM

motherboard

✔ Memcached部分はデータフローアーキテクチャ✔ レイテンシ = 481Cycles@156MHz

Hash table Value store

https://www.usenix.org/sites/default/files/conference/protected-files/blott_hotcloud13_slides.pdf

28

Memcached@Xilinx, ETH Zurich

https://www.usenix.org/sites/default/files/conference/protected-files/blott_hotcloud13_slides.pdf

29

コンテンツ✔ FPGAとは?✔ FPGAを使ったアプリケーション研究開発事例✔ データ(I/O)処理システムとしてのFPGA

✔ FPGAの開発環境について

30

I/O処理システムとしてのFPGA✔ FPGAが持っているI/Oと関連コンポーネント✔ I/O性能の予備的な評価✔ 高性能化のためのアーキテクチャ設計

31

I/Oと関連コンポーネント✔ 汎用入出力ポート (GPIO)

✔ 高速シリアル通信ブロック

✔ 光トランシーバ

32

汎用入出力ポート✔ いろいろな用途に使われる✔ LEDチカチカとか...だけじゃない!!

✔ HP I/Oは1,866Mb/s(DDR3)や1,600Mb/s LVDSをサポート

Xilinx, WP393 より

33

高速シリアル通信ブロック✔ 12.5Gb/s,13.1Gbpsといった高速転送をサポート✔ PCIeやSATA,あるいは生で利用.

Xilinx, UG476 より

34

FPGA x 光

http://www.hitechglobal.com/Boards/Virtex7_PCIE_Gen3.htm

12chの高速トランシーバを光で伝送

35

I/O性能の予備的な評価✔ システムを作るにはI/Oは必須✔ 作り始める前に大体の性能を知っておきたい

FPGAGbE, 10GbE

PCIe

SATA

例えば↓のようなシステムを想定したときのだいたいの性能見積もりをしたい

HDD,SSD

ホストコンピュータ

LANWAN

36

GbE

FPGA

PHY(ex. 88E1111)

8-bit TX/RX

GMII,RGMIIやSGMIIでPHYとFPGAを接続✔ PCS/PMA/PMDはPHYがやってくれる✔ FPGAは125MHz*8bitでEthernetフレームを送受

プリアンブル SFD 送り先MACアドレス 送り先MACアドレス SFDPID データ

MAC層

@125MHz

37

GbE

UDPデータ長

Ethernet/IP/UDPヘッダ長

Ethernetプリアンブル/ FCS/フレーム間ギャップ

トータルパケット占有長(Octet)

最大パケット数/1Gbps

最大UDP転送データレート(Mbps)

64 14+20+8 8+4+12 130 961538 492.3

256 14+20+8 8+4+12 322 388198 795.0

1024 14+20+8 8+4+12 1090 114678 939.4

1472 14+20+8 8+4+12 1538 81274 957.1

FPGAによるUDP/IPプロトコルスタックの転送性能(e7UDP/IP @ e-trees.Japan)

38

10GbESFIでSFP+と接続

FPGA

10.3125Gbps高速シリアルI/O

PCS/PMA層

MAC層

64-bit TX/[email protected]

プリアンブル SFD 送り先MACアドレス 送り先MACアドレス SFDPID データ

GbEの時の1/8のサイクル数でヘッダを処理しなければいけない!!

39

10GbE

= 約9.3Gbpsの転送レートは達成できている

10GbEのコアを対向で接続したときの折り返しレイテンシとスループットを測定

40

PCIe Gen2✔ よくあるアクセラレータの実装を想定✔ KC705

41

PCIe Gen2

42

PCIe Gen3

PCIeIntegratedBlock

cccq

pcie2axilite(xapp1201)

rcrq bmd_writer/

bmd_reader

config./status

DMAEngine

SW

HostMemory MIG

On-boardDDR3

FIFO

FIFO

axi_writer

axi_reader

bmd_writer/bmd_reader

Controllerint.

AXI-ST256bit250MHz

AXI-MM256bit250MHz

PC->FPGA: 2KByteFPGA->PC: 128Byte

src(64bit), dest(64bit),Length(<= 8MB), dir

FPGA VC709

43

PCIe Gen3

0 2000 4000 6000 8000 10000120001400016000180000

200

400

600

800

1000

1200

1400

1600

Write (FPGA Board DDR3 -> Host Memory)

Bytes

MB

ps

0 2000 4000 6000 8000 10000120001400016000180000

200

400

600

800

1000

1200

1400

1600

1800

2000

Read (Host Memory -> FPGA Board DDR3)

Bytes

MB

ps

✔ *** Gen2 x8での読み書き性能の測定結果

44

SATA✔ e7SATA: コア+専用FPGAボード 2Gb DDR3L

Spartan6XC6SLX45T

FMC

45

SATA✔ e7SATA: コア+専用FPGAボード

46

SATA✔ e7SATA FPGAボード内での読み出し性能測定

0 500000 1000000 1500000 2000000 2500000 3000000 3500000 4000000 45000000

50

100

150

200

250

300

MicronIntelFujitsu(1st)Fujitsu (2nd 〜 )

Micron: RealSSD C400, Intel: Intel SSD 330 Series, Fujitsu: MHV2080BS(HDD)Bytes

MBps

47

LVDSによる高速通信これを活用して,1.6Gbpsなどの高速通信を行う

48

LVDSによる高速通信たとえばADC/DACなどを接続するとき

ADC→FPGA: 245.76MHz DDR * 14bitFPGA→DAC: 491.52MHz DDR * 8bit

http://www.sdlabo.org

FMC150@4DSP

49

なぜFPGAでデータ処理をするか?

10G if

DRAM

Networkadapter

FPGA

Network stack Memcached

x86 DRAM

motherboard

Hash table Value store

図は https://www.usenix.org/sites/default/files/conference/protected-files/blott_hotcloud13_slides.pdf より

データはどうせ移動させる移動途中で副次的に処理できる

50

高性能化のためのアーキテクチャ✔ 組み合わせ回路(アプリケーション特化演算器)と データ並列性の活用

✔ パイプライン並列化✔ データハンドリング機構

リソース使用量,配線遅延を考慮しつつ性能を最大化する実装をみつける必要がある

51

駄目な例...signal c: unsigned(WIDTH-1 downto 0);…

process(clk)begin if clk'event and clk = '1' then c <= c + 1; end if;end process;...

52

組み合わせ回路/データ並列性の活用✔ プロセッサと比べてFPGA回路のφは圧倒的に低速✔ 高速データ処理では1クロックでデータを捌く必要も✔ 時にはソフトウェア実装とは全く違う場合も

条件

・・・

条件

v.s

53

パイプライン並列化

パケットデータが d [byte] のとき全データ入力を受け取るのにかかる時間 = (d/w)*(1/f) [sec]同様に、全データの出力にかかる時間 = (d/w)*(1/f) [sec]

スループットT [bps]を実現するとき、パケットデータを(8*d)*(1/T) [sec]内で処理し続ける必要がある

→ 各モジュールで処理に使える時間 t は 8*d/T-2*d/(w*f) [sec] → (8*d/T-2*d/(w*f))/(1/f) [cycle]

 たとえば、d=1500, T=1G, w=4, f=100Mのとき 1パケットあたりの処理にかけられるサイクル数は450サイクル.

    f=200Mなら1650サイクル,w=16なら1012サイクル

FIFO

スループット T [bps]

w [byte]f [Hz]

実行ステージ

FIFO

実行ステージ

実行ステージ

54

データハンドリング機構✔ I/O(外部メモリや各種I/F)は共有する必要がある✔ データ処理結果の一時的なバッファリングが必要 (FIFOやBRAMを使用することが多い)

✔ そんなに大きくはない + 自分で管理する必要がある

ハンドシェイクジョインの出力をうまく捌くための適応型マージネットワークの例

55

コンテンツ✔ FPGAとは?✔ FPGAを使ったアプリケーション研究開発事例✔ データ(I/O)処理システムとしてのFPGA

✔ FPGAの開発環境について

56

FPGAの開発環境について✔ 開発フロー✔ 標準インターフェースでIPの活用が容易に(なりつつある)

✔ 様々なDSLベースのFPGAシステム開発✔ 高位合成言語/高位合成処理系による開発

57

開発フロー

HDLを使ったRTL設計で所望のモジュールを実装

RTLシミュレーションによる動作検証

使用するFPGAにあわせた制約を定義

ツールで合成,配置配線,FPGA構成情報生成

実機で動作確認

ある程度のパソコンで設計可能

58

開発フロー開発の様子の例

59

開発フロー

HDLを使ったRTL設計で所望のモジュールを実装

RTLシミュレーションによる動作検証

使用するFPGAにあわせた制約を定義

ツールで合成,配置配線,FPGA構成情報生成

実機で動作確認

ある程度のパソコンで設計可能

結構つらい,時間がかかる

60

標準I/FによるIPの活用✔ 検証済みモジュールを組み合わせてシステムを設計

✔ 浮動小数点数演算コア✔ FFT

✔ ビデオエンコーダ✔ プロトコルスタック などなどなど

✔ AXI,Avalonといった標準I/FをFPGAベンダが定義

61

IPの活用Xilinx IPインテグレータの設計画面の例

62

IP接続向けの標準I/F✔ AXIやAvalonといたインターフェース✔ メモリマップド or ストリーム

クロック

リセット

アドレス

長さ

サイズ

各種ctrl/設定

データ

ストローブ

データ有効

データ

ストローブ

データ有効

各種ステータス

63

様々なDSLベースのシステム開発(1)

✔ MyHDL (Pythonベース)

✔ JHDL (Javaベース)

✔ Chisel (Scalaベース)

✔ MaxCompiler (Javaベース)

などなどなど

RTL設計(あるいは少し抽象的なHW設計)をより楽にするためのDSL

64

様々なDSLベースのシステム開発(2)

✔ Bluespec (並行プログラミング)

✔ DIL (パイプラインプログラミング)

✔ FloPoCo (浮動小数点数パイプライン)

などなどなど

使用するプログラミングモデルに特化したDSL

65

様々なDSLベースのシステム開発(3)

✔ Spiral ←Linear Digital Processing

✔ HDL Coder ← 信号処理(Matlab)

✔ Optimus ← ストリーム処理✔ LINQ ← クエリプロセッシングなどなどなど

✔ DSLを作るツールも.(たとえば,LMS/Scala)

実装したいアプリケーションに特化したDSL

66

Synthesijer.scala とは

✔ ''Scala''ベースのDSL

✔ signal, port: 状態を変更可能なオブジェクト✔ expr: 副作用なしの式✔ sequencer: 状態遷移機械✔ module: モジュール全体

✔ 上記のオブジェクトをScalaでインスタンス化.つなぎ合わせる.

私もSynthesijer.scalaというのを設計中

67

Synthesijer.scala の例(1)

✔ Lチカdef generate_led() : Module = { val m = new Module("led") val q = m.outP("q") val counter = m.signal(32) q <= ref(counter, 5) val seq = m.sequencer("main") counter <= (seq.idle, VECTOR_ZERO) val s0 = seq.idle -> seq.add() counter <= (s0, counter + 1) return m}

def generate_sim(target:Module, name:String) : SimModule = { val sim = new SimModule(name) val inst = sim.instance(target, "U") val (clk, reset, counter) = sim.system(10) inst.sysClk <= clk inst.sysReset <= reset return sim}

68

高位合成言語/高位合成処理系✔ Vivado HLS

✔ OpenCL対象の処理系✔ CyberWorkBench

✔ Cynthesizer

✔ Symphony C Compiler

✔ ImpulseC

✔ Lime

などなどなど

...私もSynthesijerを設計中

69

コンテンツ✔ FPGAとは?✔ FPGAを使ったアプリケーション研究開発事例✔ データ(I/O)処理システムとしてのFPGA

✔ FPGAの開発環境について

70

ポテンシャルをどう活かすか!!

https://www.youtube.com/watch?v=FCmfcfPt4T4

71

牧本先生の講演を生で

72

コンテンツ✔ FPGAとは?✔ FPGAを使ったアプリケーション研究開発事例✔ データ(I/O)処理システムとしてのFPGA

✔ FPGAの開発環境について