SlideShare a Scribd company logo
ソフトウェア技術者はFPGAを 
どのように使うか 
2013年8月31日 きしだなおき
FPGAとは 
● Field Programmable Gate Array 
– Field 現場で 
– Programmable プログラム可能な 
– Gate 論理素子 
– Array いっぱい並んだやつ 
● 現場でプログラムできる論理回路
回路の合成 
● 例:3入力でORとANDの組み合わせ
回路にはいろいろある 
● XORやNOTなどいろいろ組み合わせると大変 
● 使われない素子が多くなる 
● 回路に無駄
LUT 
入力出力 
000 0 
100 0 
010 0 
110 1 
001 1 
101 1 
011 1 
111 1
LUT 
● あらかじめメモリにもっておけばいい 
● 製品としては4入力LUTや6入力LUT 
入力出力 
000 0 
100 0 
010 0 
110 1 
001 1 
101 1 
011 1 
111 1
論理ブロック 
● Logical Element(LE) Altera 
● Logical Cell(LC) Xilinx
配線 
● LUTが格子状に配置 
● 周囲に配線 
● アイランドスタイル
乗算回路とメモリ 
● 乗算やメモリを論理ブロックの組み合わせで実現 
すると効率がわるい 
● 乗算回路やメモリがのってる
FPGAとASIC 
● ASIC 
– Application Specific Integrated Circuit 
– 特定用途向け集積回路 
– 設計・製造に時間がかかる 
– 大量に生産する必要がある 
– 製造に数千万円から数億円 
– ひとつあたりのコストは安い 
– 大量生産向き 
– つまりふつうのチップ
ASICと比べたFPGA 
● 設計してすぐ動かせる 
● ひとつから作れる 
● ひとつあたりのコストは高い 
● 消費電力や速度はASICより不利 
● 少量生産やプロトタイプなど
FPGAとCPU 
● CPUとは
FPGAなら 
● 命令を読み込まず回路をそのとおり並べれる
FPGAの利点 
● 命令を読み込む必要がない 
● 処理間のデータのやりとりにメモリを介する必要 
がない 
● 細かな並列化 
● 大量のI/O 
– CPUでのI/Oは命令のひとつ 
● でもCPUは最適化が進んでいるし高性能製品が 
ある
GPUとFPGA 
● GPUとは 
– 浮動小数演算器をたくさんならべてデータを配って同 
時に計算
スループットとレイテンシ 
● スループット 
– 単位時間あたりの処理量 
● レイテンシ 
– ひとつの処理にかかる時間 
● シングルスレッドなら 
– スループット=単位時間÷レイテンシ 
– レイテンシ=単位時間÷スループット
スループット
データが処理時間の倍の速さで来たら
GPUの場合
処理がABに分割できたら
FPGAとGPU 
● GPU 
– 浮動小数計算が得意 
– 製品が安い 
– 大量のコア 
– 最悪レイテンシが遅くなる 
– データ間演算が苦手 
– CPUが必要
FPGAとGPU 
● FPGA 
– レイテンシをコントロールできる 
– 浮動小数計算は苦手 
– データ間演算もできる 
– 単独で動かせる 
● でもGPUが高性能低価格化してる 
– 性質としてFPGAが優れてても製品としてGPUが進ん 
でいる
FPGAでの開発 
● 回路記述 
– VHDLやVerilogHDLなど 
● 論理合成 
– HDLを論理回路に変換 
● 配置配線 
– 論理回路を実際の回路に配置 
● コンフィギュレーション 
– FPGAに回路情報を設定
HDLの問題点 
● 書くのが面倒 
● 書くのが面倒 
● 論理合成に時間がかかる 
– 数時間かかったりする 
● デバッグが面倒 
● デバッグが面倒 
● テストも面倒 
● テストも面倒 
● いろいろ面倒
IPを使う 
● Intellectual Property 
● ようするにライブラリ 
● だれかが作って検証してる
SoC 
● System on Chip 
● CPU回路のせちゃえ 
– ソフトコアCPU 
● 物理CPUのせちゃえ 
– FPGAの微細化 
– チップに余裕 
– 再構成可能回路が大量にあってもしかたない 
– そうだARMを乗せよう
高位合成 
● CとかJavaとかで書いてHDLに変換 
● アルゴリズムの検証がソフトウェアとして行える 
– デバッガなどが使える 
– コンパイルが速い
FPGAのつかいどころ 
● 信号処理 
● 金融計算 
● ネットワーク処理 
● 科学計算?
信号処理 
● 4K2Kテレビなど情報量が増大 
● レイテンシも重要 
● 浮動小数演算に課題 
– 浮動小数演算器が載ってくる
金融計算 
● 時間=お金 
● 回路切り替えにも工夫 
– 回路切り替えで処理が止まるならFPGAで時間短縮す 
る意味がない
ネットワーク処理 
● 40Gbイーサとか100Gbイーサとかが普及すると 
処理についていけない 
● 暗号処理や圧縮処理をFPGAで行うとよさげ 
● CPUはアプリケーション処理に専念
科学計算 
● 並列処理ができるので科学計算に期待されてい 
た 
● いまはだいたいGPUでおk 
– レイテンシは問題にならない 
– GPU安い 
– 大量に導入できる 
– すでに製品が普及してる
データストリーム処理 
● FPGAに向いているのはレイテンシが重要な処理 
● データ処理に従来のDBMSは使えない
DBMS 
● データベースマネージメントシステム 
● データが保存 
● さまざまなクエリーが流れる
DSMS 
● データストリームマネージメントシステム 
● クエリーが保存 
● データが流れる
ソフトウェア技術者とFPGA 
● ハードウェアの勉強によい 
– CPUの動きを実感できる 
– ハードウェアに興味がもてる 
● いまメモリなどハードウェアの革変器 
● ついていきやすい! 
● 実用は? 
– まだ手軽に使える製品がない
普及のシナリオ1 
● FPGAにCPUも乗る 
● ふつうにパソコンのCPUとして使われる 
● みんなFPGA
普及のシナリオ2 
● ネットワークカードにFPGAが乗る 
● 大規模サービスが採用 
● 小規模サービスも採用 
● FPGA付きネットワークカードが当然に 
● みんなFPGA 
● GPGPUならぬGPFPGA! 
● 本命

More Related Content

PDF
Gpu vs fpga
PPTX
shared_ptrとゲームプログラミングでのメモリ管理
PPTX
研究者のための Python による FPGA 入門
PDF
高位合成ツールVivado hlsのopen cv対応
PPTX
はりぼて OS で ELF なアプリを起動してみた
PDF
Halide による画像処理プログラミング入門
PDF
2015年度先端GPGPUシミュレーション工学特論 第5回 GPUのメモリ階層の詳細 (様々なメモリの利用)
PDF
ARM CPUにおけるSIMDを用いた高速計算入門
Gpu vs fpga
shared_ptrとゲームプログラミングでのメモリ管理
研究者のための Python による FPGA 入門
高位合成ツールVivado hlsのopen cv対応
はりぼて OS で ELF なアプリを起動してみた
Halide による画像処理プログラミング入門
2015年度先端GPGPUシミュレーション工学特論 第5回 GPUのメモリ階層の詳細 (様々なメモリの利用)
ARM CPUにおけるSIMDを用いた高速計算入門

What's hot (20)

PDF
ソフトウェア技術者から見たFPGAの魅力と可能性
PDF
計算機アーキテクチャを考慮した高能率画像処理プログラミング
PDF
Deflate
PDF
HPC 的に H100 は魅力的な GPU なのか?
PDF
カスタムメモリマネージャと高速なメモリアロケータについて
PDF
1072: アプリケーション開発を加速するCUDAライブラリ
PDF
Hopper アーキテクチャで、変わること、変わらないこと
PDF
Tensor flow usergroup 2016 (公開版)
PDF
Sw技術者に送るfpga入門
PDF
1076: CUDAデバッグ・プロファイリング入門
PPTX
H2O Waveを使ったAIアプリケーション作成入門
PDF
eBPFは何が嬉しいのか
PDF
About GStreamer 1.0 application development for beginners
PDF
Apache Drill を利用した実データの分析
PDF
HalideでつくるDomain Specific Architectureの世界
PDF
Magnum IO GPUDirect Storage 最新情報
PDF
Ultra96ボードでYOLOを高速化
PDF
いまさら聞けない!CUDA高速化入門
PDF
CUDAプログラミング入門
PDF
EthernetやCPUなどの話
ソフトウェア技術者から見たFPGAの魅力と可能性
計算機アーキテクチャを考慮した高能率画像処理プログラミング
Deflate
HPC 的に H100 は魅力的な GPU なのか?
カスタムメモリマネージャと高速なメモリアロケータについて
1072: アプリケーション開発を加速するCUDAライブラリ
Hopper アーキテクチャで、変わること、変わらないこと
Tensor flow usergroup 2016 (公開版)
Sw技術者に送るfpga入門
1076: CUDAデバッグ・プロファイリング入門
H2O Waveを使ったAIアプリケーション作成入門
eBPFは何が嬉しいのか
About GStreamer 1.0 application development for beginners
Apache Drill を利用した実データの分析
HalideでつくるDomain Specific Architectureの世界
Magnum IO GPUDirect Storage 最新情報
Ultra96ボードでYOLOを高速化
いまさら聞けない!CUDA高速化入門
CUDAプログラミング入門
EthernetやCPUなどの話
Ad

Viewers also liked (7)

PPTX
$30で始めるFPGA
PDF
15.06.27 実録 ソフトウェア開発者が FPGAを独習した最初の3歩@RTLを語る会(9)
PDF
FPGAのトレンドをまとめてみた
PPTX
FPGAことはじめ
PPTX
Zynq + Vivado HLS入門
PDF
FPGAを用いたシリアル入力型VGA映像出力装置の設計と実装
PDF
増え続ける情報に対応するためのFPGA基礎知識
$30で始めるFPGA
15.06.27 実録 ソフトウェア開発者が FPGAを独習した最初の3歩@RTLを語る会(9)
FPGAのトレンドをまとめてみた
FPGAことはじめ
Zynq + Vivado HLS入門
FPGAを用いたシリアル入力型VGA映像出力装置の設計と実装
増え続ける情報に対応するためのFPGA基礎知識
Ad

Similar to ソフトウェア技術者はFPGAをどのように使うか (20)

PPT
FPGA
PDF
[DL Hacks]FPGA入門
PPT
20140310 fpgax
PPTX
FPGAで遊んでみた
PPTX
Myoshimi extreme
PPTX
FPGAって、何?
PDF
ACRi_webinar_20220118_miyo
PDF
FPGA・リコンフィギャラブルシステム研究の最新動向
PDF
FPGAX6_hayashi
PDF
20apr2012 kernelvm7-main
PPTX
VHDL-2008が好きなんです
PDF
Lagopus performance
PDF
ICD/CPSY 201412
PDF
電波望遠鏡用の分光器をAltera SDK for OpenCL使ってサクッと作ってみた
PPTX
動き検出勉強会リメイク。過去の発表のリメイク版です。動き検出のアルゴリズムとOpencvのオプションについてまとめました
PPTX
PYNQ 祭り: Pmod のプログラミング
PDF
Lagos running on small factor machine
PDF
FPGA+SoC+Linux実践勉強会資料
PPTX
FPGAでベンチマークしたときに苦労した話@fpgax#12
PDF
PyCoRAMによるPythonを用いたポータブルなFPGAアクセラレータ開発 (チュートリアル@ESS2014)
FPGA
[DL Hacks]FPGA入門
20140310 fpgax
FPGAで遊んでみた
Myoshimi extreme
FPGAって、何?
ACRi_webinar_20220118_miyo
FPGA・リコンフィギャラブルシステム研究の最新動向
FPGAX6_hayashi
20apr2012 kernelvm7-main
VHDL-2008が好きなんです
Lagopus performance
ICD/CPSY 201412
電波望遠鏡用の分光器をAltera SDK for OpenCL使ってサクッと作ってみた
動き検出勉強会リメイク。過去の発表のリメイク版です。動き検出のアルゴリズムとOpencvのオプションについてまとめました
PYNQ 祭り: Pmod のプログラミング
Lagos running on small factor machine
FPGA+SoC+Linux実践勉強会資料
FPGAでベンチマークしたときに苦労した話@fpgax#12
PyCoRAMによるPythonを用いたポータブルなFPGAアクセラレータ開発 (チュートリアル@ESS2014)

More from なおき きしだ (20)

PDF
GraalVMの紹介とTruffleでPHPぽい言語を実装したら爆速だった話
PDF
GraalVM at Fukuoka LT
PDF
これからのコンピューティングの変化とこれからのプログラミング in 福岡 2018/12/8
PDF
GraalVMについて
PDF
VRカメラが楽しいのでブラウザで見たくなった話
PDF
最近のJava事情
PDF
怖いコードの話 2018/7/18
PDF
Java新機能観察日記 - JJUGナイトセミナー
PDF
プログラマになるためになにを勉強するか at 九州学生エンジニアLT大会
PDF
これからのコンピューティングの変化とこれからのプログラミング at 広島
PDF
Summary of JDK10 and What will come into JDK11
PDF
Summary of JDK10 and What will come into JDK11
PDF
Java10 and Java11 at JJUG CCC 2018 Spr
PPTX
New thing in JDK10 even that scala-er should know
PPTX
Java Release Model (on Scala Matsuri)
PDF
これからのJava言語と実行環境
PDF
JavaOne報告2017
PDF
JavaOne2017で感じた、Javaのいまと未来 in 大阪
PDF
Java8 コーディングベストプラクティス and NetBeansのメモリログから...
PDF
NetBeansのメモリ使用ログから機械学習できしだが働いてるかどうか判定する
GraalVMの紹介とTruffleでPHPぽい言語を実装したら爆速だった話
GraalVM at Fukuoka LT
これからのコンピューティングの変化とこれからのプログラミング in 福岡 2018/12/8
GraalVMについて
VRカメラが楽しいのでブラウザで見たくなった話
最近のJava事情
怖いコードの話 2018/7/18
Java新機能観察日記 - JJUGナイトセミナー
プログラマになるためになにを勉強するか at 九州学生エンジニアLT大会
これからのコンピューティングの変化とこれからのプログラミング at 広島
Summary of JDK10 and What will come into JDK11
Summary of JDK10 and What will come into JDK11
Java10 and Java11 at JJUG CCC 2018 Spr
New thing in JDK10 even that scala-er should know
Java Release Model (on Scala Matsuri)
これからのJava言語と実行環境
JavaOne報告2017
JavaOne2017で感じた、Javaのいまと未来 in 大阪
Java8 コーディングベストプラクティス and NetBeansのメモリログから...
NetBeansのメモリ使用ログから機械学習できしだが働いてるかどうか判定する

ソフトウェア技術者はFPGAをどのように使うか