More Related Content Similar to Google 20130218 Similar to Google 20130218 (20) More from Takefumi MIYOSHI More from Takefumi MIYOSHI (20) Google 201302182. 三好健文 - e-trees. Japan, Inc.
東工大→東大→東工大→電通大→現在
コンパイラとかHW/SW協調設計とか
囲碁専用ハードウェア
CUDA/MPIコンパイラ
ネットワーク処理の専用ハードウェア化
ストリーム処理専用アーキテクチャ
JavaRock
2 2012.8.17 @虎ノ門
3. FPGAとは?
本章では,高位設計言語である Bluespec System Verilog を紹介する.こ
の言語では,コンパイル時にしっかりエラー検出ができ,また,さまざまなライブ
ラリも提供している.FPGA や ASIC が大規模化し複雑な回路を設計する機会が
Field Programmable Gate Array
増えてきた今,知っておくべき技術だろう. (編集部) 三好 健文
論理回路・データパスを自由に作り込める
Verilog HDL や VHDL を使った設計で,
HDL がドレスを着たお姫さまだとすると,コンパイル時
― あぁ∼,数字って 32 ビットだった.うっかりキャスト にエラーをしっかり検出してくれるが故にコンパイルを通
されていたよ… すのが困難な反面,コンパイルさえ通れば合成した回路が
・ クロックレベルの同期と並列性の活用
― テスト ベンチのステート マシンを書くのが面倒だな.
・ きちんと動作してくれる Bluespec はパワフルなツンデレ
― モジュールのインスタンシーエーションで入出力ピン 娘と筆者はイメージしています(図 2)
.
をつなぎ忘れていた
という思いをしたことはありませんか?
単純な記述の羅列や細かいミスへの注力が続くと,本来
力を入れるべき,アーキテクチャの設計まで億劫になって
しまいます.また,
「コンパイル(論理合成)は通るのに,
シミュレーションや FPGA 上で動作させると,何かおか
しい」という事態に頭を悩ませ,原因はうっかりミスだっ
たということも一度や二度ではないと思います.
記述の手間がもっと省けて,コンパイル時に強力にエ
ラー・チェックしてくれる HDL 言語ないかなあ…という
要 求 に 応 え て く れ る の が Bluespec System Verilog で す
(図 1)
.VHDL がまじめなキャリア・ウーマン,Verilog 出典: CQ出版 Interface 2011年2月号より
▲ 図 2 Bluespec System Verilog は ツ
ンデレ娘
3
4. FPGAの利用シーン
独自の回路を実現できるハードウェア
特定の処理を低消費電力で高性能処理
デバイスに近い処理を簡単に実現
自由なI/Oポートの定義
http://japan.xilinx.com/products/boards-and-kits/EK-K7-KC705-G.htm
ASIC開発のプロトタイプとして
http://www.micron.com/about/news-and-events/events/xfest-2012
特定用途向け少数生産の製品として
4
5. FPGAの利用シーン
独自の回路を実現できるハードウェア
特定の処理を低消費電力で高性能処理
デバイスに近い処理を簡単に実現
自由なI/Oポートの定義
http://japan.xilinx.com/products/boards-and-kits/EK-K7-KC705-G.htm
ASIC開発のプロトタイプとして
http://www.micron.com/about/news-and-events/events/xfest-2012
特定用途向け少数生産の製品として
あるいは,オリジナルの演算コンポーネントとして
5
6. freeocean ちょっ
と宣伝
ハードウェアWebキャッシュサーバ
最大スループット: 1Gbps
最大同時処理コネクション数: 50万
秒間同時接続数: 約2万HTTPリクエスト
最大消費電力: 約160W
Since 2006
http://e-trees.jp/index.php/製品/freeocean/
6
7. freeocean-ng 構想 ちょっ
と相談
ハードウェアWebキャッシュサーバ
最大スループット: 20Gbps
最大同時処理コネクション数: 50万
秒間同時接続数: 約2万HTTPリクエスト
最大消費電力: 200W以下
7
9. FPGA に関してよく聞くフレーズ
向いてる計算ならGPUやCPUより速いよ
そんなのFPGAなら1クロックでできるし!!
Smith-Waterman 法による多重配列アライメン ト処理とモンテカルロ法
ベースの金融シミュレーショ ンを FPGA で実行した場合,それぞれ CPU
に比べ て 228 倍と 545 倍高速に処理できた
[ 1 ] Reconfigurable Computing in the Multi-Core Era.
In Internal Workshop on Highly-Efficient Accelerators
and Reconfigurable Technologies, 2010.
9
10. FPGA に関してよく聞くフレーズ
向いてる計算ならGPUやCPUより速いよ
そんなのFPGAなら1クロックでできるし!!
と,いいながら
うーん,メモリ少ないんですよね...
浮動小数点数演算はちょっと苦手かも...
FPGAの性能に関して,ソフトウェア・アプリ開発者と
イメージを共有したい
10
15. FPGAの内部はどうなっているのか?
X-Ref Target - Figure 3
COUT
DI
DI2 CLK WE D
D6:D1 A6:A1 O6
WA6:WA1 O5 D Q
LUT CE D5Q
RAM CK MC31
ROM DI1 CARRY4 SRINIT0 CY DMUX
SRINIT1 XOR
DPRAM64 O5
DPRAM32 SR O6
SPRAM64
SPRAM32 D Q DQ
SRL16 FF
MC31 CE
SRL32 WA8 LATCH
CY CK
WA7 AND2L
XOR
MC31 OR2L
DX SRINIT0
O5 SRINIT1
DX O6
SR
CI
DI2 CLK WE
A6:A1 O6 C
C6:C1
WA6:WA1 O5 D Q
LUT CE
RAM CK C5Q
ROM DI1 SRINIT0 F7
SRINIT1 CY
DPRAM64 XOR CMUX
DPRAM32 SR O5
SPRAM64 O6
SPRAM32
SRL16
SRL32 WA8 F7
WA7 CY D Q CQ
FF
MC31 XOR CE LATCH
CX CK AND2L
CX O5 OR2L
CLK O6 SRINIT0
SRINIT1
SR
WE
CE
SR
BI
DI2 CLK WE B
B6:B1 A6:A1 O6
WA6:WA1 O5 D Q
LUT CE B5Q
RAM CK F8
ROM DI1 SRINIT0 CY
BMUX
SRINIT1 XOR
DPRAM64 O5
DPRAM32 SR O6
SPRAM64
SPRAM32 D FF Q BQ
SRL16 WA8 F8
CY
CE LATCH
SRL32 CK AND2L
WA7 XOR
MC31 BX OR2L
O5 SRINIT0
BX O6 SRINIT1
SR
6入力
AI
DI2 CLK WE A
A6:A1 A6:A1 O6
WA6:WA1 O5 D Q
LUT CE A5Q
RAM CK F7
ROM DI1 SRINIT0 CY
XOR AMUX
SRINIT1
DPRAM64 O5
DPRAM32 SR O6
SPRAM64
SPRAM32 D Q AQ
SRL16 WA8 F7 FF
CY
CE LATCH
SRL32
WA7 XOR CK AND2L
MC31 AX OR2L
O5 SRINIT0
O6 SRINIT1
SR
1
AX
CIN
ug384_03_042309
3 : SLICEM
15
21. 浮動小数点数演算が苦手?
コンポーネントだけなら
32bit 単精度コア XC7K325Tなら
291個入る?
加減算器 175スライス
XC7K325Tなら
乗算器 49スライス,3DSP 280個入る?
64bit 倍精度コア XC7K325Tなら
169個入る?
加減算器 301スライス
XC7K325Tなら
乗算器 143スライス,11DSP 76個入る?
たぶん,こういう方向で何かあればいいんじゃないかなあ...
21
24. FPGA
HDLに実装したUDP/IPの性能
959.1Mbps
スループット
FPGA 1000BASE-T
1Gbps
UDP
(Octet) (Mbps)
64 130 961538 486.4
256 322 388198 792.9
1024 1090 114678 940.6
1472 1538 81274 959.1
表 3 リソース使用量の比較結果
FPGA !!
レイテンシ(μ秒)
レジスタ数 LUT 数 占有スライス数 BRAM36E1
Native 1620 2212 779 12
JavaRock 1472 2084 785 12
e7UDP/IP IP FPGA
GbE
PC e7UDPIP-Core
user-module
MAC
RX BRAM
TX BRAM
16Byte 256Byte 1024Byte
図 7 イーサネットを介して PC と FPGA を接続するシステムの例
FPGA 61 77 120
PC(1)
JavaRock で合成した場合のハードウェアリソース量が下回っ
Pentium4 2.8GHz
PC(1) Java 228 200 222 たが,読み書きをカウンタするレジスタの使い方などの違いに
512MB
CentOS
よるもので本質的な違いはないと考えられる.また合成の結果
PC(1) C 149 149 196 得られた最高動作周波数はどちらも 211.751MHz であった.
4. 3 ケース 2: イーサネットで接続する場合
PC(2)
PC(2) Java 200 200 202 Core i7-3930K 3.2GHz
次に,協調設計の対象となる FPGA と CPU が UDP/IP 通
16GB
信を介してデータを共有するシステムを設計することを考える.
Windows7 Pro.
イーサネットインタフェイスは FPGA でも一般的になりつつ
あり,多くの評価ボードでもイーサネットポートが搭載されて
Xilinx ISE
いる.イーサネットを使うことで,接続する CPU や FPGA の
24
個数や物理的な配置を比較的自由に取り扱うことができるため,
25. メモリ使えるの?
FPGA内蔵LUTRAM
演算回路との共用.速い
FPGA内蔵BlockRAM
FPGA内の専用リソース.速い.
外部メモリ
SRAM: 速い.でも高い.
DRAM: 遅い.でも安い.
25
27. Universal Protocol Line ちょっ
と寄道
UPL
= w
a
b x
c y
d z
[a,b,c,d] w=a+b,x=b-c, [w,x,y,z]
y=w/x,z=d+1
a b c
w x y z
27
28. Universal Protocol Line ちょっ
と寄道
!
!
!
! ! ! !
! ! ! ! = =
MSB
MSB LSBLSB
25MHz 32bit
25MHz 32bit a a b b
c c
28
29. 高位合成言語
手軽なハードウェア開発を夢見て
Vol. 29 No. 1 Feb. 2012 81
表1 ベース言語別に分類した高位合成言語の例
ベースの言語 言語名
C BACH-C [5],Handel-C [6],DeepC Compiler [7],PICASSO [8],COBRA-ABS [9],
DEFACTO Compiler [10],Streams-C [11],GARP C Compiler [12],SA-C [13],
Impulse-C [14],SpecC [15],GorillaC [16]
C++ SystemC [17],OCAPI [18],HP-Machine [19]
Java Galadriel/Nenya [20],JHDL [21],Lime [22],MaxCompiler [23],Sea Cucumber [24],
JavaRock [25]
C# Kiwi [26]
Python PHDL [27],MyHDL [28]
Ruby RHDL [29]
ML CAPH [30]
Fortran DeepC Compiler [7],ROCCC [31],SRC-6 [32]
Haskell Lava [33], Bluespec System Verilog [34](BSV)
Matlab MATCH [35],DEFACTO Compiler [10]
た言語および言語処理系では,高水準言語の機能を また,オブジェクト指向言語において,クラスのイ
用いて記述された部分とハードウェア化の対象とな ンスタンスの動的な生成を実現するのは困難である. 29
30. 高位合成言語
タイプ別に高位合成言語を分けてみた
既存の高水準言語ベースのHDL:
ImpulseC, MaxCompiler など
既存の高水準言語をハードウェアに:
AutoESL, CyberWorkBench, Lime, JavaRock
モダンな概念を取り入れた新しいHDL:
Bluespec
30
31. JavaRock http://javarock.sourceforge.net/
JavaRockの目指すところ
JavaプログラムをそのままHW化する
追加構文,データ型は導入しない
記述に制限は加える
HDLで書けることをJavaで書けるようにする ではない Vol. 48 No. 5 FPGA 向け高位合成言語としての Java の活用手法の検討 9
Javaで書けることを全部HDLにする ではない
Vol. 48 No. 5 FPGA 向け高位合成言語としての Java の活用手法の検討
Game
2
player
Player
player
FPGAMain
9
monitor rs232c
ICFPTPlayer RandomPlayer MCPlayer MonitorWrapper RS232CWapper
calc
Calculator HDL modules HDL modules
player player
Game Player FPGAMain
2 Executable as Software Implement-able onto FPGA
monitor rs232c JVM FPGA
.java% ICFPTPlayer
calc
RandomPlayer MCPlayer MonitorWrapper RS232CWapper
図 15 connect6 のデバッグで用いたクラスのクラス図
Calculator HDL modules HDL modules
Java %
Executable as Software Implement-able onto FPGA
図 17 VGA グラフィクス描画ハードウェアをソフトウェアでデ
JVM
JVM% FPGA
SwingFrame
vga
VGAJavaTest
vga
VGAIf
バッグ
図 15 connect6 のデバッグで用いたクラスのクラス図
SwingCanvas monitor
VGAWrapper
Java % HDL modules
図 17 VGA グラフィクス描画ハードウェアをソフトウェアでデ
SwingFrame
vga
VGAJavaTest
vga
VGAIf
バッグ Executable as Software Implement-able onto FPGA
JVM FPGA
SwingCanvas monitor
図 16 グラフィクス描画ハードウェア設計のためのクラス構造
JavaRock%
VGAWrapper
.vhdl% /
HDL modules
と ICFTPPlayer.java として Java で実装する.
図 15 に ,Java で 実 装 し た connect6 を デ バッ
グ す る 際 に 利 用 し た ク ラ ス 群 の ク ラ ス 図 を 示 す.
Executable as Software Implement-able onto FPGA
JVM FPGA
ICFPTPlayer と Calculator からなる ICFPT で提 図 18 VGA グラフィクス描画ハードウェア
示された connect6 プレイヤは,他の幾つかのプレー
図 16 グラフィクス描画ハードウェア設計のためのクラス構造
ヤ実装と共に Player インターフェイスを実装するク
ラスである.このクラスのインスタンスは,Game と
作成した描画対象である SwingFrame をインスタンシ
エーションすることで図 17 に示すようにソフトウェ
31
と ICFTPPlayer.java として Java で実装する.
32. 高位合成言語
HDL覚えなくてもHW設計ができる
...というのは言い過ぎかもですが
ImpluseC
JavaRock
http://www.cs.tsukuba.ac.jp/~yoshiki/FPGA/Contest/index.php?FPGA2011%C1%B4%C2%D0%C0%EF%CD%FA%CE%F2
32