SlideShare a Scribd company logo
FPGAことはじめ
Takahiro Nakayama, 2015/03/02
目次
1. FPGAとは
2. FPGAの立ち位置
3. FPGAとGPU / CPU
4. FPGAの使い道
1. FPGAとは
1. FPGAとは?
 FPGAとは?
Field-Programmable Gate Array
→ 現場書き換え可能なゲートアレイ ???
まったくわからん
1. FPGAとは?
 Field ― 現場?
そのまま。
工場、研究室ではなく現場。仕事場。
1. FPGAとは?
 Programmable ― 書き換え可能?
回路構成を書き換えられる。
書き換えのための言語が
HDL(Hardware Description Language)。
1. FPGAとは?
 Gate Array ― ゲートアレイ?
回路の構成要素。
ANDゲート、ORゲートなど回路構成上、定番の要素を
並べたもの。
並べ方の問題のため、一口にゲートアレイといっても
いろいろある。
1. FPGAとは?
 FPGAのイメージ
AND
OR
スイッチで出力を制御
全体でANDにもORにもなれる
≒ 回路構成を書き換え
IN
OUT
2. FPGAの立ち位置
2. FPGAの立ち位置
 FPGAとは?
IC(Integrated Curcuit, 集積回路)チップの一種
ICチップ
FPGA
2. FPGAの立ち位置
 ICチップの中では?
PLD(Programmable Logic Device)の一種
ICチップ
PLD
FPGA
2. FPGAの立ち位置
 FPGA以外のPLDは?
PAL(Programmable Array Logic)とか
CPLD(Complex PLD)がある
ICチップ
PLD
FPGA
CPLD
PAL
2. FPGAの立ち位置
 FPGAとの違いは?
とてもざっくり言うと回路規模(ゲートアレイ数)
PAL < CPLD < FPGA
ICチップ
PLD
FPGA
CPLD
PAL
2. FPGAの立ち位置
 非PLDって何?
ASIC(Application Specific IC, 特定用途向けIC)
ICチップ
PLD ASIC
FPGA
CPLD
PAL
2. FPGAの立ち位置
 ASICの例は?
NW処理チップや画像処理チップ、
広義にはGPU / CPUも入る
ICチップ
PLD ASIC
FPGA
CPLD
PAL
GPU / CPU
画像処理チップ
NW処理チップ
2. FPGAの立ち位置
ICチップ
PLD ASIC
FPGA
CPLD
PAL
GPU / CPU
画像処理チップ
NW処理チップ
処理チップの他にはメモリなども
ICチップの一種
再構成可能
≒ 非特定処理向け
再構成不可能
≒ 特定処理向け
3. FPGAとGPU / CPU
これまでの話からすると、
FPGA 再構成可能な非特定処理向けIC
CPU 再構成不可能な特定処理向けIC
ICチップ
PLD ASIC
FPGA
CPLD
PAL
GPU / CPU
画像処理チップ
NW処理チップ
しかし、
CPUは汎用処理向けICでは ... ?
“ 特定 ”処理向けICというのは違和感が ...
汎用 ≒ 特定 ???
ICチップ
PLD ASIC
FPGA
CPLD
PAL
GPU / CPU
画像処理チップ
NW処理チップ
特定処理向け?
3. FPGAとGPU / CPU
 GPUとは
Graphic Processing Unit
画像演算ユニット。
その名の通り、画像処理に特化したASIC。
画像処理に特化したGPUで汎用処理を動かす、
GPGPU(General Purpose GPU)
という思想もある。
3. FPGAとGPU / CPU
 CPUとは
Central Processing Unit
中央演算ユニット。
変な言い方だが、“ 汎用処理に特化 “ したASIC。
汎用処理に特化しているため、当然処理あたりの
回路稼働率は他のASICに比べ低い。
3. FPGAとGPU / CPU
 FPGAとGPU / CPU
ICが物理設計レベルで何らかの処理に特化していないため、
(原理上)処理に向き不向きが存在しない
ICが物理設計レベルで何らかの処理に特化しているため、
処理に向き不向きが存在する
FPGA
GPU / CPU
処理に適した論理設計が見つかるかどうかは
また別の話
4. FPGAの使い道
4. FPGAの使い道
 FPGAの長所
回路構成を論理的に書き換えることができるので、
実行したい処理に最適な回路へ随時変更できる。
回路全体をその処理のために動かすので、
一般にCPUやGPUよりも電力効率がよいとされる。
4. FPGAの使い道
 FPGAの短所
実行したい処理に最適な回路を開発する必要がある。
また、HDLによる開発ノウハウが一般には少ない。
現状は市場規模や実用研究の歴史の影響から
ASICおよびCPU / GPUが強く、
FPGAの性能競争力がごく一部の分野を除いて弱い。
→ 暗号解析、金融計算、科学計算など
4. FPGAの使い道
 FPGAの使い道
現時点では前述の特定分野のみ。
ただ、将来的にはいかなる処理系も代替可能。
スイッチやルータがただの ” NICの多いサーバ “ になる。
最近では、CPUやGPUをとりあえず載っけてしまい、
それらを切り替えて使う方法がメジャーになっているらしい。
Deep Learning等の機械学習研究が進み、
論理回路の設計/開発が任せられれば … ?
ex. FPGAの利用事例
ex. FPGAの利用事例
 JP Morgan Chase
• FPGAによるデリバティブ専用HPC実装
 Bitcoin
• FPGAによるハッシュマイニング
ex. FPGAの利用事例
 Microsoft
• FPGAによる検索エンジン(bing)実装
• FPGAによるDeep-Learning支援
 Baidu
• FPGAによるDeep-Learning支援
ex. FPGAの利用事例
 IBM
• FPGAによるストレージ高速化(FlashSystem)
• FPGAによるPOWER8システム高速化
 Fusion-io
• FPGAによるストレージ高速化(ioDrive)
ex. FPGAの求人
ex. FPGAの求人
 ドワンゴ
【ニコニコ事業】ハードウェア開発エンジニア (正社員)
• (必須)FPGAを用いた開発
• (必須)ゲートレベルの回路設計
• (必須)ソフトウェアアルゴリズムのハードウェア実装
• (必須)デバイスドライバの開発
• (推奨)音声/画像処理、コーデックの開発
• (推奨)HDLによる回路開発
etc …
→ 要するにすごい人
ex. FPGAの求人
 Intel
インテルが求める「FPGAアプリケーションエンジニア」とはこんな人
• (必須)HDLの開発
• (必須)C/C++の開発
• (必須)マルチスレッドプログラムの設計/開発/デバッグ
• (必須)TCP/IP, ファイルシステム, Linuxシステムの理解
• (推奨)CPU/GPUアーキテクチャの理解
• (推奨)音声/画像認識、圧縮アルゴリズムの開発
etc …
→ 要するにスーパーマン
おわり

More Related Content

What's hot

研究者のための Python による FPGA 入門
研究者のための Python による FPGA 入門研究者のための Python による FPGA 入門
研究者のための Python による FPGA 入門
ryos36
 
Pynq祭り資料
Pynq祭り資料Pynq祭り資料
Pynq祭り資料
一路 川染
 
Pynqでカメラ画像をリアルタイムfastx コーナー検出
Pynqでカメラ画像をリアルタイムfastx コーナー検出Pynqでカメラ画像をリアルタイムfastx コーナー検出
Pynqでカメラ画像をリアルタイムfastx コーナー検出
marsee101
 
FPGAのトレンドをまとめてみた
FPGAのトレンドをまとめてみたFPGAのトレンドをまとめてみた
FPGAのトレンドをまとめてみたTakefumi MIYOSHI
 
FPGAによるHDMI to LVDS変換器
FPGAによるHDMI to LVDS変換器FPGAによるHDMI to LVDS変換器
FPGAによるHDMI to LVDS変換器
I_HaL
 
20161120_HPCでFPGAを使ってみたい_fpgastartup
20161120_HPCでFPGAを使ってみたい_fpgastartup20161120_HPCでFPGAを使ってみたい_fpgastartup
20161120_HPCでFPGAを使ってみたい_fpgastartup
HPCシステムズ株式会社
 
PYNQ 祭り: Pmod のプログラミング
PYNQ 祭り: Pmod のプログラミングPYNQ 祭り: Pmod のプログラミング
PYNQ 祭り: Pmod のプログラミング
ryos36
 
Synthesijer.Scala (PROSYM 2015)
Synthesijer.Scala (PROSYM 2015)Synthesijer.Scala (PROSYM 2015)
Synthesijer.Scala (PROSYM 2015)
Takefumi MIYOSHI
 
FPGA・リコンフィギャラブルシステム研究の最新動向
FPGA・リコンフィギャラブルシステム研究の最新動向FPGA・リコンフィギャラブルシステム研究の最新動向
FPGA・リコンフィギャラブルシステム研究の最新動向
Shinya Takamaeda-Y
 
PyCoRAMを用いたグラフ処理FPGAアクセラレータ
PyCoRAMを用いたグラフ処理FPGAアクセラレータPyCoRAMを用いたグラフ処理FPGAアクセラレータ
PyCoRAMを用いたグラフ処理FPGAアクセラレータ
Shinya Takamaeda-Y
 
Reconf_201409
Reconf_201409Reconf_201409
Reconf_201409
Takefumi MIYOSHI
 
PythonとPyCoRAMでお手軽にFPGAシステムを開発してみよう
PythonとPyCoRAMでお手軽にFPGAシステムを開発してみようPythonとPyCoRAMでお手軽にFPGAシステムを開発してみよう
PythonとPyCoRAMでお手軽にFPGAシステムを開発してみよう
Shinya Takamaeda-Y
 
Linux : PSCI
Linux : PSCILinux : PSCI
Linux : PSCI
Mr. Vengineer
 
ICD/CPSY 201412
ICD/CPSY 201412ICD/CPSY 201412
ICD/CPSY 201412
Takefumi MIYOSHI
 
FPGAスタートアップ資料
FPGAスタートアップ資料FPGAスタートアップ資料
FPGAスタートアップ資料
marsee101
 
FPGA+SoC+Linux実践勉強会資料
FPGA+SoC+Linux実践勉強会資料FPGA+SoC+Linux実践勉強会資料
FPGA+SoC+Linux実践勉強会資料
一路 川染
 
FPGA startup 第一回 LT
FPGA startup 第一回 LTFPGA startup 第一回 LT
FPGA startup 第一回 LT
Yamato Kazuhiro
 
電波望遠鏡用の分光器をAltera SDK for OpenCL使ってサクッと作ってみた
電波望遠鏡用の分光器をAltera SDK for OpenCL使ってサクッと作ってみた電波望遠鏡用の分光器をAltera SDK for OpenCL使ってサクッと作ってみた
電波望遠鏡用の分光器をAltera SDK for OpenCL使ってサクッと作ってみた
Hiroki Nakahara
 
プロファイラGuiを用いたコード分析 20160610
プロファイラGuiを用いたコード分析 20160610プロファイラGuiを用いたコード分析 20160610
プロファイラGuiを用いたコード分析 20160610
HIDEOMI SUZUKI
 

What's hot (20)

Gpu vs fpga
Gpu vs fpgaGpu vs fpga
Gpu vs fpga
 
研究者のための Python による FPGA 入門
研究者のための Python による FPGA 入門研究者のための Python による FPGA 入門
研究者のための Python による FPGA 入門
 
Pynq祭り資料
Pynq祭り資料Pynq祭り資料
Pynq祭り資料
 
Pynqでカメラ画像をリアルタイムfastx コーナー検出
Pynqでカメラ画像をリアルタイムfastx コーナー検出Pynqでカメラ画像をリアルタイムfastx コーナー検出
Pynqでカメラ画像をリアルタイムfastx コーナー検出
 
FPGAのトレンドをまとめてみた
FPGAのトレンドをまとめてみたFPGAのトレンドをまとめてみた
FPGAのトレンドをまとめてみた
 
FPGAによるHDMI to LVDS変換器
FPGAによるHDMI to LVDS変換器FPGAによるHDMI to LVDS変換器
FPGAによるHDMI to LVDS変換器
 
20161120_HPCでFPGAを使ってみたい_fpgastartup
20161120_HPCでFPGAを使ってみたい_fpgastartup20161120_HPCでFPGAを使ってみたい_fpgastartup
20161120_HPCでFPGAを使ってみたい_fpgastartup
 
PYNQ 祭り: Pmod のプログラミング
PYNQ 祭り: Pmod のプログラミングPYNQ 祭り: Pmod のプログラミング
PYNQ 祭り: Pmod のプログラミング
 
Synthesijer.Scala (PROSYM 2015)
Synthesijer.Scala (PROSYM 2015)Synthesijer.Scala (PROSYM 2015)
Synthesijer.Scala (PROSYM 2015)
 
FPGA・リコンフィギャラブルシステム研究の最新動向
FPGA・リコンフィギャラブルシステム研究の最新動向FPGA・リコンフィギャラブルシステム研究の最新動向
FPGA・リコンフィギャラブルシステム研究の最新動向
 
PyCoRAMを用いたグラフ処理FPGAアクセラレータ
PyCoRAMを用いたグラフ処理FPGAアクセラレータPyCoRAMを用いたグラフ処理FPGAアクセラレータ
PyCoRAMを用いたグラフ処理FPGAアクセラレータ
 
Reconf_201409
Reconf_201409Reconf_201409
Reconf_201409
 
PythonとPyCoRAMでお手軽にFPGAシステムを開発してみよう
PythonとPyCoRAMでお手軽にFPGAシステムを開発してみようPythonとPyCoRAMでお手軽にFPGAシステムを開発してみよう
PythonとPyCoRAMでお手軽にFPGAシステムを開発してみよう
 
Linux : PSCI
Linux : PSCILinux : PSCI
Linux : PSCI
 
ICD/CPSY 201412
ICD/CPSY 201412ICD/CPSY 201412
ICD/CPSY 201412
 
FPGAスタートアップ資料
FPGAスタートアップ資料FPGAスタートアップ資料
FPGAスタートアップ資料
 
FPGA+SoC+Linux実践勉強会資料
FPGA+SoC+Linux実践勉強会資料FPGA+SoC+Linux実践勉強会資料
FPGA+SoC+Linux実践勉強会資料
 
FPGA startup 第一回 LT
FPGA startup 第一回 LTFPGA startup 第一回 LT
FPGA startup 第一回 LT
 
電波望遠鏡用の分光器をAltera SDK for OpenCL使ってサクッと作ってみた
電波望遠鏡用の分光器をAltera SDK for OpenCL使ってサクッと作ってみた電波望遠鏡用の分光器をAltera SDK for OpenCL使ってサクッと作ってみた
電波望遠鏡用の分光器をAltera SDK for OpenCL使ってサクッと作ってみた
 
プロファイラGuiを用いたコード分析 20160610
プロファイラGuiを用いたコード分析 20160610プロファイラGuiを用いたコード分析 20160610
プロファイラGuiを用いたコード分析 20160610
 

Similar to FPGAことはじめ

FPGAで遊んでみた
FPGAで遊んでみたFPGAで遊んでみた
FPGAで遊んでみた
Akira Kaneda
 
FPGAでベンチマークしたときに苦労した話@fpgax#12
FPGAでベンチマークしたときに苦労した話@fpgax#12FPGAでベンチマークしたときに苦労した話@fpgax#12
FPGAでベンチマークしたときに苦労した話@fpgax#12
Jun Ando
 
ACRi_webinar_20220118_miyo
ACRi_webinar_20220118_miyoACRi_webinar_20220118_miyo
ACRi_webinar_20220118_miyo
Takefumi MIYOSHI
 
[DL Hacks]FPGA入門
[DL Hacks]FPGA入門[DL Hacks]FPGA入門
[DL Hacks]FPGA入門
Deep Learning JP
 
Fuji sakuraでmbedを!
Fuji sakuraでmbedを!Fuji sakuraでmbedを!
Fuji sakuraでmbedを!Tetsuya Noguchi
 
Lagopus performance
Lagopus performanceLagopus performance
Lagopus performance
Masaru Oki
 
Spark CL
Spark CLSpark CL
Spark CL
力世 山本
 

Similar to FPGAことはじめ (9)

FPGAで遊んでみた
FPGAで遊んでみたFPGAで遊んでみた
FPGAで遊んでみた
 
FPGAでベンチマークしたときに苦労した話@fpgax#12
FPGAでベンチマークしたときに苦労した話@fpgax#12FPGAでベンチマークしたときに苦労した話@fpgax#12
FPGAでベンチマークしたときに苦労した話@fpgax#12
 
ACRi_webinar_20220118_miyo
ACRi_webinar_20220118_miyoACRi_webinar_20220118_miyo
ACRi_webinar_20220118_miyo
 
[DL Hacks]FPGA入門
[DL Hacks]FPGA入門[DL Hacks]FPGA入門
[DL Hacks]FPGA入門
 
Fuji sakuraでmbedを!
Fuji sakuraでmbedを!Fuji sakuraでmbedを!
Fuji sakuraでmbedを!
 
Lagopus performance
Lagopus performanceLagopus performance
Lagopus performance
 
Fpga local 20130322
Fpga local 20130322Fpga local 20130322
Fpga local 20130322
 
2012-11-17-SakuraDC
2012-11-17-SakuraDC2012-11-17-SakuraDC
2012-11-17-SakuraDC
 
Spark CL
Spark CLSpark CL
Spark CL
 

FPGAことはじめ