Your SlideShare is downloading. ×
0
Google 20130218
Google 20130218
Google 20130218
Google 20130218
Google 20130218
Google 20130218
Google 20130218
Google 20130218
Google 20130218
Google 20130218
Google 20130218
Google 20130218
Google 20130218
Google 20130218
Google 20130218
Google 20130218
Google 20130218
Google 20130218
Google 20130218
Google 20130218
Google 20130218
Google 20130218
Google 20130218
Google 20130218
Google 20130218
Google 20130218
Google 20130218
Google 20130218
Google 20130218
Google 20130218
Google 20130218
Google 20130218
Google 20130218
Google 20130218
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Google 20130218

7,237

Published on

0 Comments
34 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
7,237
On Slideshare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
48
Comments
0
Likes
34
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. 計算機としてのFPGAの基礎知識 三好 健文 株式会社イーツリーズ・ジャパン 1
  • 2. 三好健文 - 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
  • 8. FPGA に関してよく聞くフレーズ 向いてる計算ならGPUやCPUより速いよ そんなのFPGAなら1クロックでできるし!! 8
  • 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
  • 11. で,実際FPGAってどんな素子なの? 「それ1クロックで...」の光と影 浮動小数点数演算が苦手? データの入出力ってどうやるの? メモリ使えるの? 高位合成言語について 11
  • 12. 「それ1クロックで...」の光と影 演算素子を好きにつなげられる データ移動に関するクロックコストは0 12
  • 13. 「それ1クロックで...」の光と影 演算素子/配線を通る時間は0ではない 遠い配線は演算素子で中継されることも δ n秒 δ n秒 δ n秒 δ n秒 δ n秒 δ n秒 δ n秒 クロックを長くしないと安定しない 13
  • 14. 用途にあわせてクロックを制御するのが技 適度にFFを入れてクロックを分割する パイプライン並列化でスループットの旨味も δ n秒 δ n秒 FF FF δ n秒 δ n秒 δ n秒 FF FF FF FF δ n秒 クロックを長くしないと安定しない 14
  • 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
  • 16. 1024bit カウンタの作り方(1)愚直に作ってみる(2)2段に分けて作ってみる 16
  • 17. 1024bit カウンタの作り方(1)愚直に作ってみる freq. 66.996MHz, 256スライス(2)2段に分けて作ってみる freq. 503.170MHz, 32スライス 17
  • 18. 1024bit カウンタの作り方 (1) (2) 18
  • 19. カウンタのbit幅と周波数の関係 Max Freq.(MHz) 1100 825 550 275 0 4 32 256 1024 2048 19
  • 20. 浮動小数点数演算が苦手?よくある全部入り浮動小数点数演算器を作ってみた 32bit 単精度コア XC7K325Tなら 最大動作周波数 約423MHz 59個入る? 838スライス(#.Regs.: 2592,#.LUTs:2122) 64bit 倍精度コア XC7K325Tなら 最大動作周波数 約413MHz 24個入る? 2032スライス(#. Regs.: 8145, #.LUTs: 5502) 20
  • 21. 浮動小数点数演算が苦手?コンポーネントだけなら 32bit 単精度コア XC7K325Tなら 291個入る? 加減算器 175スライス XC7K325Tなら 乗算器 49スライス,3DSP 280個入る? 64bit 倍精度コア XC7K325Tなら 169個入る? 加減算器 301スライス XC7K325Tなら 乗算器 143スライス,11DSP 76個入る?たぶん,こういう方向で何かあればいいんじゃないかなあ... 21
  • 22. データの入出力ってどうやるの? パソコンとの通信 PCIe,イーサネット,UART FPGA同士の通信 Rocket I/O,GPIO その他ペリフェラルとの通信 LVDS,GPIO 22
  • 23. データの入出力ってどうやるの? パソコンとの通信 PCIe,イーサネット,UART FPGA同士の通信 Rocket I/O,GPIO その他ペリフェラルとの通信 LVDS,GPIO 23
  • 24. FPGAHDLに実装した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
  • 26. DDR3メモリにアクセスしてみたとりあえず初期実装としてはこんな感じ いろんな  UPL 制御信号線 e7MemIface DDR3 100MHz 400MHz 49サイクル 76サイクル 26
  • 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 VGAWrapperJava % 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
  • 33. 高位合成言語HDL覚えなくてもHW設計ができる ...というのは言い過ぎかもですが http://d.hatena.ne.jp/nushio/20120708 33
  • 34. で,実際FPGAってどんな素子なの? 「それ1クロックで...」の光と影 要・工夫 浮動小数点数演算が苦手? やり方による データの入出力ってどうやるの? 豊富 メモリ使えるの? 使える. 大容量にはコスト有 高位合成言語について お試しください 34

×