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.
Upcoming SlideShare
What to Upload to SlideShare
What to Upload to SlideShare
Loading in …3
×
1 of 45

Sw技術者に送るfpga入門

0

Share

Download to read offline

「SW技術者に送るFPGA入門」
講演者:FPGAインフォメーション/小山忠昭様

Related Books

Free with a 30 day trial from Scribd

See all

Sw技術者に送るfpga入門

  1. 1. SW技術者に送るFPGA入門 2021年11月2日 小山忠昭(basaro_k)
  2. 2. 自己紹介 小山 忠昭 (basaro_k@twitter) 有限会社FPGAインフォメーション所属(www.fpga.co.jp) FPGA歴も30年以上 主に、XILINXのFPGAのなんでも屋さんをしています。 (トレーニング、設計、コンサルなど、、、) FPGAが好きで、FPGAをやっています。
  3. 3. 目次 なぜFPGAをつかうのか 2021年版FPGA入門 HLSの魅力(C言語設計の破壊力)
  4. 4. なぜFPGAを使うのか FPGAができて、35年。XILINX社のXC2000シリーズが最初。  FPGAの開発元、XILINX創業が1985年 デジタル回路なら何でもできるという触れ込み。  ただし、性能は低かったので、どこに使えばいいのか、わからなかった。 LC:200個(CLB 100個) 動作周波数:最大100 MHz 実質10~20MHz
  5. 5. なぜFPGAを使うのか それでも、使ってくれるところがあった。  通信と、画像処理。 FPGAを育ててくれました。
  6. 6. なぜFPGAを使うのか 今の時代のFPGA LC 1Mオーバー(500000倍) 周波数 500MHz以上 (50倍) CPU(ARM64bit) 内蔵メモリー DSP(演算ブロック) 高速トランシーバー 昔のFPGAと全く異なる性能
  7. 7. なぜFPGAを使うのか、 今でも、通信と、画像処理は、 FPGAの主な使用目的の一つ。 通信も、画像処理も、処理能力は格段に増えた。
  8. 8. なぜFPGAを使うのか 通信と、画像処理に育てられた、FPGAは、他の活用方法にも活用されます。 一部の業界で、常に速さを求められる。 金融業界、サーチエンジンの業界にも採用され始めた。 そして、、、いままで、FPGAを使っていない業界にも、期待されている。 より、高速化を求められる分野にもFPGAが検討される。
  9. 9. FPGAが高速化に向いている理由 FPGAは動作速度を早くできる。  1:計算能力が高い  2:反応速度が早い
  10. 10. FPGAが高速化に向いている理由 動作速度が早い。 簡単にいうと、計算できるブロックが沢山使えるということ。 性能は違うが演算を司る、 ALUは、CPUが数個から100個程度。 GPUが数千個程度 FPGAは、1000000個(LC) 高性能のALU  で勝負 ALU ALU ALU ALU ALU ALU ALU ALU ALU ALU ALU ALU CPUの場合  FPGAの場合
  11. 11. FPGAが高速化に向いている理由 MPU メモリー FPGA メモリー 動作速度が早い。 CPU、GPUは計算ごとに、メモリーへの下記戻しが必要 FPGAは、内部メモリーで保存したまま、次の工程を実行できる。 速度のボトルネックになりやすい、メモリーとのデータのやり取りが FPGAでは少なくなる。
  12. 12. FPGAが高速化に向いている理由 反応速度が早い CPUや、GPUは、入出力データは、一度メモリーに保存する必要がある。 FPGAはメモリーを通さなくても、処理はできる。 CPU、GPU メモリ 処 理 FPGA 処 理 I/O I/O メモリ
  13. 13. 2021年版FPGA入門 トレーニングをやっている関係上、よく質問が来ます。 どこを見れば、(何から始めれば)FPGAはできるか。 どこの情報を見れば、FPGAを動かすことができるのか? XILINXトップページをみても、できる気がしません?  やりたいことに対して、どの情報が必要なのか、わからない。
  14. 14. 2021年版FPGA入門 今までのFPGAを動かすのに、必要なこと。 最初からやると、かなり大変。 (もちろん、やっている人もいますけど) プリント基板(ボード) FPGA ハードウェア設計 インターフェース、ドライバー設計 OS(組み込みLinux) アプリケーション 開発ツール Vivado 開発ツール Petalinux 開発ツール Viits
  15. 15. 2021年版FPGA入門 ソフトウェア技術者にでも、使える FPGAとは? 数年前から、すでに始まってました。 C言語だけで、FPGAのアクセスができるというツールです。
  16. 16. 2021年版FPGA入門 2019年からVitisというツールに変わりました。 プラットフォームを提供して、どの FPGAでも同じ用に開発できるようにする。 極力デバイスの違いを意識しないようにする。 ライブラリーを沢山揃える ソフトウェア感覚で動かせるようにしています。
  17. 17. 2021年版FPGA入門 Vitis プラットフォーム FPGA単体だけではなくて、 OSも含めた形で、FPGA開発環境を提供してくれる。 プリント基板(ボード) FPGA ハードウェア設計 インターフェース、ドライバー設計 OS(組み込みLinux) アプリケーション(FPGA設計含む) 開発ツール Vivado 開発ツール Petalinux 開発ツール Viits 枠の部分は XILINXが用意 してくれる。
  18. 18. 2021年版FPGA入門 現在ではFPGAは沢山の種類が増えてきてます。 パソコンやサーバータイプ FPGA単体で、CPUもついて、動作させるタイプ(組み込み型) 情報が多いものを中心に FPGA基板をご紹介。 プリント基板(ボード)
  19. 19. 2021年版FPGA入門 PCに入れるタイプ PCI Expressに接続します。 XILINX ALVEO U200 U50など。 この中に大規模なFPGAが入っています。 主にFPGAの大規模、高速演算性を期待しています。
  20. 20. 2021年版FPGA入門 FPGAをクラウドで使う 無料または、有料で、 FPGAが乗ったクラウドサーバーが使用できます。 Acriでは、無料でネットで FPGAボードが使える https://www.acri.c.titech.ac.jp/wp/ Amazon AWS F1では、FPGAボードが使える https://aws.amazon.com/jp/ec2/instance-types/f1/
  21. 21. 2021年版FPGA入門 XILINXの純正ボード、代理店のボードを使う ZCU102 ZCU104 Ultra96V2  情報量が多いのが特徴 特にUltra96v2は安価なのが特徴
  22. 22. 2021年版FPGA入門 Kria KV260 を使う 今年、発表されたFPGAボード コストパフォーマンスがとても良い。 $199で購入できる。
  23. 23. 2021年版FPGA入門 Vitisプラットフォーム FPGAのベースの部分や、 OSの部分がまとまったファイル群。 アプリケーションで、ハードウェアを作成することができるようになったので、 各ボードによって、異なる。 すでに用意している場合や、自分で作成することもできる。 FPGA ハードウェア設計 インターフェース、ドライバー設計 OS(組み込みLinux)
  24. 24. 2021年版FPGA入門 プラットフォーム すでに用意してある場合。 XILINXのホームページから、ダウンロードできる。
  25. 25. 2021年版FPGA入門 ソースファイルからビルドも可能。 プロジェクトはオープンソースで公開されているので、プラットフォームをカスタマイズ したい人にも使用することができます。 特に、FPGAのハードウェアを 得意としている方は、 今後のプラットフォームの 作り方の参考になります。
  26. 26. 2021年版FPGA入門 Vitisでアプリケーションを作る。 Vitisはソフトを開発するためのツール CPUで動くソフトだけではなくて、 FPGAで動く、ハードウェアも作成できる。 アプリケーション(ハードウェア含む)
  27. 27. 2021年版FPGA入門 プラットフォームは一覧が出るので、そのなかから選択することができる。 お好みのがなければ、追加することが可能。
  28. 28. 2021年版FPGA入門 サンプルが沢山 参考になり、設計が楽になる。 ダウンロードして、使います。ツールが勝手にダウンロードしてくれる。
  29. 29. 2021年版FPGA入門 その他にも、Githubでアクセレータ(ハードウェア)ライブラリーを用意。 自分で作らなくても、ライブラリーをしようすれば ハードウェアが構成できる。 アプリケーション
  30. 30. 2021年版FPGA入門 Vitis 開発ツールの作業画面 この画面で、設計が行える。
  31. 31. 2021年版FPGA入門 Vitis で、SDカードイメージまで、作成してくれます。 後は、書き込みソフトや、コマンドで、 SDカードに書き込んだら、起動します。
  32. 32. 2021年版FPGA入門 FPGA基板がなくても、開発は進みます。 HW-SW協調エミュレータが搭載されました。 ソフトウェアの部分とハードウェアの部分が、パソコン上で動作確認できます。
  33. 33. 2021年版FPGA入門 Vitis プラットフォームを使うと、ベースの部分は XILINXが用意してくれる。 面倒な、インターフェースやドライバーもツールが作成してくれる。 ライブラリーも用意してくれる。 SDカードイメージまで作成してくれるので、手間が少なくなる。 設計者はアプリケーション作りに専念できる。 プリント基板(ボード) FPGA ハードウェア設計 インターフェース、ドライバー設計 OS(組み込みLinux) アプリケーション(FPGA設計含む) 開発ツール Vivado 開発ツール Petalinux 開発ツール Viits
  34. 34. HLSの魅力(C言語設計の破壊力) VITIS と HLSの位置関係 Vitisには、HLSが含まれる。設計する仕組みは同じ Vitisは動作SDイメージまで作ってくれるが、 HLS単体だと、他のツールで 組み込む必要がある。 自分でインターフェース、ドライバーまで作らないと動作しない。 VITIS HLS
  35. 35. HLSの魅力(C言語設計の破壊力) HLSとは、高位合成ツールの略で、主にC言語から、ハードウェアを作成する。 今まで、(RTL)の設計に比べると、設計時間が早い。 また、設計の自由度は高い ソフトウェア RTL(Verilog VHDL) HLS 設計時間 とても早い  とても時間がかかる ソフトより遅いが、 RTLよりは早い 動作速度 遅い はやい はやい ときにはRTLよりも
  36. 36. HLSの魅力(C言語設計の破壊力) C言語設計の期待と結果 XILINXのHLS が無料になったのは、2015年です。 このときから、FPGAにHLSの波が始まりました。 期待:世の中のCで作ったソースが、そのまま、ハードウェア化できる 結果:C言語の形はしているけど、まるで、新しい言語を覚えているみたい。。(失望) 新規設計には、向いているが、今まである Cソースコードをそのまま動くのとは違う。
  37. 37. HLSの魅力(C言語設計の破壊力) Acri の HLS チャレンジ ハフマンエンコードの高速化にチャレンジ 1024キャラクタをエンコードする
  38. 38. void encode(uint8_t data[SIZE], uint64_t code[256], uint64_t code_size[256], uint8_t out[SIZE*8]) { uint64_t out_bits = 0; for (int i = 0; i < SIZE; i++) { uint64_t c = code [data[i]]; uint64_t s = code_size[data[i]]; while (s > 0) { int b = std::min(s, 8 - out_bits % 8); out[out_bits / 8] |= ((c >> (s - b)) & (( 1 << b) - 1)) << (8 - out_bits % 8 - b); out_bits += b; s -= b; } } } ハフマンコードのエンコーダ部分 SWにやるにしろ、HWにやるにしろ、Loopの中が苦手な構造。
  39. 39. HLSの魅力(C言語設計の破壊力) ハフマンエンコードは圧縮技術によく使われ、 ZIPなどの、圧縮ファイルや JPEGなどの画像ファイルなどで、よく使われます。 有名なので、オープンソースもかなり見ます。 一般的に、圧縮技術は、ワード可変長になるため、高速化するのが難しく、 時間がかかる要因の一つになっている。 1クロックあたり、2キャラクタできれば実現できれば、早い方。
  40. 40. HLSの魅力(C言語設計の破壊力) 設計は Cシミュレーション C論理合成 Coシミュレーション で行っていきます。 C言語でプログラムを書いていく感じで進みます。 ソースコード自体はそのままでも、動作はします。
  41. 41. HLSの魅力(C言語設計の破壊力) ここで、高速化のためにソースコードをいじります。 並列化とパイプライン化 HLSのツールの結果をみながら、高速化を試します。
  42. 42. HLSの魅力(C言語設計の破壊力) HLSで2日ほど、かけて高速化してみました。 1クロックあたり、16キャラクタの処理ができるようになりました。
  43. 43. HLSの魅力(C言語設計の破壊力) 詳しいことは、他の人が解説してくれると思いますが、 設計当初は、1クロック1キャラクタでれば、かなり早いのではと 思って設計してました。 ここまで、高速化になったのは、最近の HLSのバージョンのできごとです。 2年前のHLSでしたら、ここまでの高速化は不可能でした。 できたとしても、記述も変更していいかもしれません。
  44. 44. HLSの魅力(C言語設計の破壊力) 同じことを、RTL(Verilog、VHDL)で可能かと考えたとき、同じことができるか できたとしても、2日では無理で、1ヶ月ぐらいかかってたかもしれません RTLの場合、高速化に必要な、並列化及びパイプライン化は設計に時間がかかります。
  45. 45. ご清聴ありがとうございました FPGAも日々進化して、使いやすくなっています。 ぜひ、FPGAライフ楽しんでくださいね。

×