Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

FPGAって、何?

1,887 views

Published on

FPGA(Field-Programmable Gate Array)は、論理仕様をプログラムすることで任意の論理回路を実現できる論理デバイスです。ディープラーニングやIoT等の分野で、FPGAの名前を聞いたことがあるかと思います。 このセッションでは、そんなFPGAの特長や仕組み、設計方法、CPU・GPUとの違いなどの解説を通して、FPGAとはどんなもので、どんなことが出来そうかを少しでも知って頂けることを目標としています。

Published in: Technology
  • Be the first to comment

FPGAって、何?

  1. 1. FPGAって、何? .NETラボ勉強会 2017年 8月 2017/08/26 小松 豊彦 (KOMAT) © 2017 TOYOHIKO KOMATSU
  2. 2. このセッションの目的  FPGA(Field-Programmable Gate Array)は、論理仕様をプログラムす ることで任意の論理回路を実現できる論理デバイスです  ディープラーニングやIoT等の分野で、FPGAの名前を聞いたことが あるかと思います  そんなFPGAの特長や仕組み、設計方法、CPU・GPUとの違いなどの 解説を通して、FPGAとはどんなもので、どんなことが出来そうかを 少しでも知って頂けることを目標としています 1
  3. 3. 注意事項  本資料は、個人で準備した環境において、個人的に実施した結果や 調査をもとに作成されています  著者および発表者が、本資料の内容について、その正確さや個々の 目的への適合性を保証するものではありません  著者、発表者およびそれらの関係者を含む第三者は、本資料の利用 の結果として生じた損失・損害等について、一切責任を負いません  本資料に記載されている製品名は各社の商標または登録商標です。 本資料では登録商標マーク ® は省略しています 2
  4. 4. 自己紹介  小松 豊彦 (こまつ とよひこ) ・ komat (こまっと)  組込系のソフトウェア技術者らしい  C#が好き  デジタルガジェット大好き 3
  5. 5. こんなニュースがありました  インテル、アルテラ買収で合意 -- 買収額は167億ドル [2015/6/1] (※当時の相場で約2兆円) https://japan.cnet.com/article/35065319/ インテル(Intel):言わずと知れた世界第1位の半導体メーカー アルテラ(ALTERA):プログラマブルロジックデバイスの代表的企業 なぜ、インテルはこのような買収を行ったのか? 4
  6. 6. インテルのニュースリリース  インテル コーポレーション、アルテラの買収を完了 [2015/12/28] https://newsroom.intel.co.jp/news-releases/%E3%82%A4%E3%83%B3%E3%83%86%E3%83%AB- %E3%82%B3%E3%83%BC%E3%83%9D%E3%83%AC%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%80%81%E3%82%A2%E3%83%AB%E3%83%86%E3 %83%A9%E3%81%AE%E8%B2%B7%E5%8F%8E%E3%82%92%E5%AE%8C/ インテル コーポレーション 副社長 兼 プログラマブル・ソリューション事業本部長 ダン・マクナマラ氏のメッセージより: 『アルテラの業界をリードするFPGA技術や顧客サポートと、インテ ルの世界レベルの半導体製造技術を組み合わせることで、顧客はこれ までにない性能と電力効率を兼ね備えた次世代の電子システムを構築 することができます』 FPGA技術の可能性は計り知れない? 5
  7. 7. 一方、マイクロソフトでは  The moonshot that succeeded: How Bing and Azure are using an AI supercomputer in the cloud [2016/10/17] https://blogs.microsoft.com/ai/2016/10/17/the_moonshot_that_succeeded/ “A team of Microsoft engineers and researchers, working together, has created a system that uses a reprogrammable computer chip called a field programmable gate array, or FPGA, to accelerate Bing and Azure.” 『マイクロソフトの技術者と研究者は共同で、BingとAzureを加速させるために、 FPGA(field programmable gate array)と呼ばれる再プログラミング可能なコンピューター チップを使ったシステムを開発した』 FPGAを使ってそんなことも出来る! 6
  8. 8. FPGAの可能性  これまでにない性能と電力効率  クラウドコンピューティングの性能を加速 このようなことが出来るFPGAとは一体何者か? 7
  9. 9. 特長  様々な論理回路をプログラミング可能  単純な論理回路からCPUまで、様々なデバイスを実現  高速・汎用インタフェース  DDR SDRAMや他のデバイスとの間で高速なデータを転送が可能  複数の信号方式・信号レベルをサポート  再プログラミング可能  後から論理回路を変更できる。技術的には動作中にも変更可能  SoCタイプの製品  CPUコアを持つFPGAにより、更に柔軟で高性能なデバイスを実現 8
  10. 10. 利用分野・製品  主な利用分野・製品  ネットワーク機器  ASIC(特定用途向けIC)のプロトタイピング  画像処理  アクセラレータ  低価格化により、最近では下記のような利用方法もある  ASICの代用  MCU(マイコン)の代用 9
  11. 11. FPGAアクセラレータ  PCに接続して使用する、FPGA搭載のPCI Expressボード 例:Nallatech 510T Compute Acceleration Card http://www.nallatech.com/store/fpga-accelerated-computing/pcie-accelerator-cards/nallatech-510t-fpga-computing- acceleration-card/ 10 FPGA x2, PCIe x16, 4GB DDR4 SDRAM x8(全て直結)
  12. 12. Microsoft Project Brainwave  Microsoft unveils Project Brainwave for real-time AI https://www.microsoft.com/en-us/research/blog/microsoft-unveils-project-brainwave/  データセンターのネットワークにFPGAを直結 超低遅延な処理が可能  搭載FPGA: Intel Stratix 10 TX  100G Ethernet MAC Hard IP  Quad-Core 64bit ARM Cortex-A53  PCI Express (Gen3, x16) Hard IP 11
  13. 13. おいくら?  数百円~数百万円  Intel Stratix 10 GX [1SG280HU3F50E2VGS1] ※2,753,000LE, サンプル品 https://www.altera.co.jp/products/fpga/stratix-series/stratix-10/overview.html 24,470.12 USD (2,895,057円) ※550万LEの最上位品だと一体いくらするんだろうか・・・  Intel MAX 10 [10M02DCV36C8G] ※2,000LE https://www.altera.co.jp/products/fpga/max-series/max-10/overview.html 3.78 USD (447円) ※1個あたり。一括大量購入で単価は更に安価になる ※Digi Key調べ、2017/08/20現在 https://www.digikey.jp/ 12
  14. 14. 全体構造 13 http://chessprogramming.wikispaces.com/FPGA  Logic Block  論理ブロック。論理演算やデータの保持を行う  乗算器、メモリ等を有する製品もある  数百~数百万ブロック  Routing Channel  論理ブロックやI/Oとの信号の伝送を行う  信号の行き先を制御するための スイッチブロック・コネクションブロックを含む  I/O Pad  信号を外部に引き出す  信号形式やタイミング調整等を行うI/Oブロックを含む  細かいトポロジは製品毎に異なるが、概ねこんな感じ
  15. 15. 論理ブロックの構造  LUT (Lookup Table)  任意の論理回路を表現  FA (Full Adder)  全加算器  演算や比較を行う  DFF (D Flip Flop)  データの保持  タイミングの調整  MUX (Multiplexer)  内部信号の選択  製品によって構成は異なるが、概ねこんな感じ 14 https://commons.wikimedia.org/wiki/File:FPGA_cell_example.png
  16. 16. コンフィグレーション  FPGAは動作開始前に「コンフィグレーション」という処理が必要  FPGA内外に「コンフィグROM」が配置されている  コンフィグROMには、予めコンフィグレーションデータを書き込んでおく  コンフィグROMから、FPGA内のLUTやSRAMにデータを流し込む  この時、流し込まれたデータの復号化や検証も同時に行われる  コンフィグレーションは、必ずしもコンフィグROMを経由する必要はない 15 コンフィグレーション データ コンフィグROM FPGA プログラミング コンフィグレーション
  17. 17. 利用形態  ロジックデバイス (システム・ハードウェアの一部として)  ASIC(特定用途向けIC)  MCU(マイコン)  SoC(System on Chip)  アクセラレータ (高度な演算処理を肩代わり)  DSP (Digital Signal Processor)  ベクトルプロセッサ  その他 (上記の組み合わせ等) 16
  18. 18. まとめると  多数の高速な論理ブロックによって、様々な論理回路を構成  論理ブロックは単独でも連携しても動作可能  大雑把に言えば、論理ブロック数はスレッド数に相当  技術的には、論理回路を動的に書き換えることも可能 様々な処理・演算を高速に実行可能 17
  19. 19. CPU・GPUとのざっくり比較 FPGA CPU (GP)GPU 処理方式 フロー ステートマシン プログラム プログラム 同時処理数 論理ブロック単位 ~数十万以上 スレッド単位 ~数十 スレッド単位 ~数百以上 演算機能 LUTによる論理回路 組み合わせ次第 整数・SIMD・ 浮動小数点 整数・SIMD・ 浮動/固定小数点 ハードウェアレベルの スケーラビリティ 特に制限なし 1~4 同一製品に限る 1~3 同一製品に限る 特色 どんな演算や処理にも 対応・注力できる 最速ではないが 何でも演算出来る 大量の並列演算が得意 18 ※同列で比較するのはフェアではない項目もあります
  20. 20. CPU・GPUに比べて優位な点  必要な処理だけをプログラムしておくため、効率が良い  柔軟性のある高速・汎用インタフェースにより、 FPGA同士やCPU・GPU等との連携がしやすい  必要であれば、CPU機能を載せることも可能 (最初からCPUが内蔵されたFPGAもある)  単独でも動作が可能 19
  21. 21. CPUにもGPUにもなれるFPGA  技術的には、FPGAはCPUにもGPUにもなれる  全く同じことをさせようとすると、 専用のCPUやGPUには性能では劣る  しかし、CPUやGPUではFPGAの代わりになり得ない  シミュレーションは可能であり、設計に必要  エミュレーションは、現実的・実用的ではない (性能面、費用対効果、電力効率など) 20
  22. 22. 設計手法の移り変わり  以前はハードウェア記述言語(HDL)で記述して設計することが殆どだった HDL: Hardware description language  様々なモジュールをGUI上で接続するだけでSoCを構成できるソリュー ションが登場 【例】Intel Qsys : システム統合ツール https://www.altera.co.jp/products/design-software/fpga-design/quartus-prime/features/qts-qsys.html SoC: System on Chip  最近は高位合成(HLS)によって、ソフトウェアで設計して、そのままハー ドウェア化することも可能になった HLS: High Level Synthesis 21
  23. 23. 設計方法  回路図による設計  論理素子・モジュール  ハードウェア記述言語(HDL)による設計  Verilog(-HDL)  VHDL  高級言語による設計  C/C++ (OpenCL)  Python  MATLAB 22
  24. 24. 設計フロー  インタフェース設計・電力設計  論理設計  タイミング設計  シミュレーション  論理合成  プログラミング(コンフィグROMへの書き込み)  実機確認 23 高位合成では このプロセスを省力化可能
  25. 25. インタフェース設計・電力設計  信号レベル  CMOS, LVDS …  ピンアサイン  入力, 出力, データ, クロック …  プロトコル・タイミング  PCI Express, USB, Ethernet …  消費電力  論理規模や動作周波数によって消費電力が大きく変わる 24  FPGAを動かすには、FPGAをハードウェアに搭載す る必要がある  搭載するハードウェアが既にある場合(メーカー製 の拡張ボード等)は、その仕様に合わせる。メー カーが設計済みのデータを用意してある場合は、そ れを利用する  ハードウェアをこれから作る場合は、搭載予定の他 のデバイスとどのように通信するのかを、把握して おく必要がある
  26. 26. 論理設計  データフロー・ステートマシンによる設計が中心  データの保持・伝送にフリップフロップ(レジスタ)を用いるため RTL(Register Transfer Level)設計と呼ばれる  同期回路による論理設計  クロックに合わせてデータ転送や演算を行う回路を用いる  非同期回路による論理設計  論理合成の結果が性能や動作を左右し、結果を予測しづらい  クロック周波数が異なるブロックを接続する場合も、この設計となる 25 基本的に こちらを用いる
  27. 27. タイミング設計  データの伝達には時間がかかる (光速は超えられない)  同じデータでもビット毎に到達時間が異なる (スキューと呼ぶ)  どのデータがどんなタイミングで到達する必要があるのかを 予め設計しておく  論理合成時に、設計したタイミングで動作できるかを確認可能  必要に応じて、論理ブロックの配置を変更したり、 わざと遅延処理を入れたりして、タイミングを調整する 26
  28. 28. シミュレーション  信号・データの処理過程や結果を、シミュレーターで確認する  シミュレーションには下記の2つがある  RTLシミュレーション (高速、遅延時間は考慮しない)  ゲートレベル・シミュレーション (低速、遅延時間を考慮する) 参考 http://www.alteraforum.com/forum/showthread.php?t=41737  シミュレーションには数十秒~数時間かかる  あくまでもFPGA内での確認 外部との連携はインタフェース設計を信じるしかない 27
  29. 29. 論理合成  FPGA内での論理配置をソフトウェアにより自動決定する  設計者の思惑とは異なる結果もあり得る  ピンアサインを忘れると、それも勝手に決定されてしまう  数分~十数時間かかる  論理規模やPCのスペックによる  論理合成で「コンフィグレーションデータ」が生成される 28
  30. 30. プログラミング  FPGAの内外にある「コンフィグROM」に コンフィグレーションデータを書き込む  書き込み方法によっては数秒~十数分かかる  決められた方法・タイミングで書き込みできれば良いので、 コンフィグROMの代わりに別のデバイスや方法を使っても良い  マイコン内のフラッシュメモリ (ファームウェアの一部)  SDカード  PC 29
  31. 31. 実機確認  期待した動作になるとは限らない  FPGAでもソフトウェアでも同じ  論理設計のバグならともかく、 インタフェース設計・タイミング設計が原因のバグは厄介  ソフトウェアでは書いたとおりに動作するが、 FPGAだと書いたとおりに動作するとは限らない  インタフェース設計を誤ると、システムの故障に繋がる  FPGAを搭載したハードウェアの不具合だと更に厄介 30
  32. 32. 高位合成による設計  アルゴリズムやデータフローから直接論理設計および合成を行う  下記のような様々なHLSソリューションがある  OpenCL  Xilinx Vivado HLS  Intel HLS Compiler  MATLAB/SYMLINK + HDL Coder など… 31
  33. 33. OpenCL  OpenCL C言語による、異種混在の計算資源を利用した並列コン ピューティングのためのクロスプラットフォームなフレームワーク OpenCL: Open Computing Language https://ja.wikipedia.org/wiki/OpenCL  インテルのOpenCLソリューション  インテル FPGA SDK for OpenCL https://www.altera.co.jp/products/design-software/embedded-software- developers/opencl/overview.html 32 上記Webページにある動画「ソフトウェア・プログラマーのためのFPGA開発入門」はオススメ FPGA, CPU, GPU, DSP等を意識せず 処理を記述できる
  34. 34. 高位合成のメリット・注意点  メリット  HDLによる論理設計やタイミング設計を省略できる  ソフトウェアの開発手法でハードウェア化が可能  注意点  動作するレベルの論理回路が生成されるため、必ずしも高速にはならない。 高速化するにはチューニングが必要  確かにC言語では書けるが、並列処理による高速化を行うには フレームワーク等を利用する必要がある 33
  35. 35. もっと手軽に試したい  開発ボードは各社から発売されている  Terasic DE0 nano (Intel Cyclone IV) http://www.terasic.com.tw/cgi-bin/page/archive.pl?Language=English&No=593  開発ツールには無償版がある  Intel Quartus Prime Lite Edition (新しいデバイス向け: Cyclone IV~, MAX 10) https://www.altera.co.jp/products/design-software/fpga-design/quartus-prime/overview.html  Intel Quartus II Web Edition (古いデバイス向け: ~Cyclone III) 34 Terasic DE0 nano
  36. 36. まとめ  FPGAは様々な処理を実現できる論理デバイス  クラウドではFPGAは高性能なアクセラレータになる  FPGAでASICやマイコンの置き換えも可能 35
  37. 37. おわり END ご静聴ありがとうございました 36
  38. 38. デモ (時間が余ったら)  Terasic DE0 nano  Quartus Prime Lite Edition v17.0.2  1秒周期でLチカ 37 Terasic DE0 nano
  39. 39. DE0 nano  マニュアルから必要な情報を読み取る DE0-nano User Manualより  FPGA: Intel Cyclone IV EP4CE22F17C6N  コンフィグROM: EPCS64 (要Flash Loader)  緑色LED (A15ピン, Hレベルで点灯)  クロック発信器 (50MHz, R8ピン)  I/O standard 3.3V 38
  40. 40. 手順  New Project Wizard  FPGAは “EP4CE22F17C6”を選択。語尾のNは要らない。ここではファイルも追加しない  Pin Planner  “led0”と”clock_50”という名前のピンを、それぞれ”A15”ピンと”R8”ピンに設定。 Reserved列に信号方向を設定(それぞれOutput, Input)  “Create Top-Level Design File”で、Verilogファイル(.vファイル)を生成  生成されたVerilog ファイルにソースを追加  Compile  大量のWarningは気にしない。TimeQuestがどうのこうの出てくるのも気にしない  Programmer  FPGAに直接書き込んでも動作する (ただし書き込んだデータは電源オフで消える)  LED1~8がほんのり点灯するが、問題なし (未使用ピンがweak pullupされるため。本来ならLレベルにすべき) 39
  41. 41. Lチカのソース(追加部分) // {ALTERA_IO_BEGIN} DO NOT REMOVE THIS LINE! output led0; input clock_50; reg led0_reg = 1'b1; reg [31:0] counter = 0; assign led0 = led0_reg; parameter COUNT = (50000000 / 2) - 1; always @(posedge clock_50) begin led0_reg <= (counter == COUNT) ? ~led0_reg : led0_reg; counter <= (counter == COUNT) ? 0 : counter + 1; end // {ALTERA_IO_END} DO NOT REMOVE THIS LINE! 40 この部分を追加する
  42. 42. 参考文献・リンク集  FPGAの原理と構成 (天野英晴 著、オーム社 刊) http://shop.ohmsha.co.jp/shopdetail/000000004588/  高位合成について思ったこと http://nahitafu.cocolog-nifty.com/nahitafu/2015/09/post-912f.html  Inside the Microsoft FPGA-based configurable cloud https://azure.microsoft.com/en-us/resources/videos/build-2017- inside-the-microsoft-fpga-based-configurable-cloud/ 41
  43. 43. 参考文献・リンク集(つづき)  FPGA https://ja.wikipedia.org/wiki/FPGA  なぜインテルはアルテラを買収し、FPGAをXeonに統合しようとして いるのか? http://cn.teldevice.co.jp/column/detail/id/93  機械学習/Deep Learningの仕事が増える2017年、ソフトウェアエン ジニアがFPGAを学ぶべき理由 http://www.atmarkit.co.jp/ait/articles/1701/30/news007.html 42
  44. 44. 参考文献・リンク集(つづき)  エンタープライズ・IoT領域でのFPGA活用に関する研究開発成果 https://www.miraclelinux.com/labs/fpga  Xilinx Vivado Design Suite 評価版および WebPACK https://japan.xilinx.com/products/design-tools/vivado/vivado- webpack.html  Intel Stratix 10 https://www.altera.co.jp/products/fpga/stratix-series/stratix- 10/overview.html 43
  45. 45. 参考文献・リンク集(つづき)  Intel MAX 10 https://www.altera.co.jp/products/fpga/max-series/max- 10/overview.html  改訂 入門Verilog HDL記述 (小林 優 著, CQ出版社 刊) http://www.cqpub.co.jp/hanbai/books/33/33981.htm  Open Cores https://opencores.org/ ※オープンソースのハードウェアIPコア 44
  46. 46. 参考文献・リンク集(つづき)  Microsoft、リアルタイムAI向けアクセラレータを開発 http://pc.watch.impress.co.jp/docs/news/1076883.html 45

×