Upload
takefumi-miyoshi
View
2.634
Download
1
Embed Size (px)
DESCRIPTION
Accelerating I/O-Intensive Applications with FPGAs
Citation preview
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
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
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
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ドミナントではない会議での事例
などなどなど沢山
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
Ethernet IP
TCP
HTTP
Ethernet IP
TCP
TCP
・・・
TCP
TCP
TCP
・・・
HTTP
HTTP
Filesystem+
Storage
* モジュール構成はイメージです
✔ 専用回路ならではの並列性の活用
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
32
汎用入出力ポート✔ いろいろな用途に使われる✔ LEDチカチカとか...だけじゃない!!
✔ HP I/Oは1,866Mb/s(DDR3)や1,600Mb/s LVDSをサポート
Xilinx, WP393 より
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のサイクル数でヘッダを処理しなければいけない!!
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での読み書き性能の測定結果
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
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を使用することが多い)
✔ そんなに大きくはない + 自分で管理する必要がある
ハンドシェイクジョインの出力をうまく捌くための適応型マージネットワークの例
57
開発フロー
HDLを使ったRTL設計で所望のモジュールを実装
RTLシミュレーションによる動作検証
使用するFPGAにあわせた制約を定義
ツールで合成,配置配線,FPGA構成情報生成
実機で動作確認
ある程度のパソコンで設計可能
59
開発フロー
HDLを使ったRTL設計で所望のモジュールを実装
RTLシミュレーションによる動作検証
使用するFPGAにあわせた制約を定義
ツールで合成,配置配線,FPGA構成情報生成
実機で動作確認
ある程度のパソコンで設計可能
結構つらい,時間がかかる
60
標準I/FによるIPの活用✔ 検証済みモジュールを組み合わせてシステムを設計
✔ 浮動小数点数演算コア✔ FFT
✔ ビデオエンコーダ✔ プロトコルスタック などなどなど
✔ AXI,Avalonといった標準I/FをFPGAベンダが定義
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を設計中