増え続ける情報に対応するための
FPGA基礎知識
2015年6月24日 きしだなおき
FPGAとは
● Field Programmable Gate Array
– Field 現場で
– Programmable プログラム可能な
– Gate 論理素子が
– Array いっぱい並んだやつ
●
現場でプログラムできる論理回路
回路をプログラムできる
● 1chip MSX
– MSXという1983年のパソコン規格をFPGAで実現
– Z80 CPU
– V9938ディスプレイプロセッサ
– AY-3-8910サウンドジェネレータ(PSG)
FPGAの仕組み
回路の合成
● 例:3入力でORとANDの組み合わせ
回路にはいろいろある
● XORやNOTなどいろいろ組み合わせると大変
● 全部用意しようとすると使わない素子が多くなる
● 回路に無駄
回路の入出力の組み合わせ
入力 出力
000 0
100 0
010 0
110 1
001 1
101 1
011 1
111 1
LUT(LookUp Table)
● 入出力をあらかじめメモリにもっておけばいい
● 製品としては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
配線
● 論理ブロックが格子状に配置
● 周囲に配線
● アイランドスタイル
乗算回路とメモリ
● 乗算やメモリを論理ブロックの組み合わせで実現
すると効率がわるい
● 乗算回路やメモリ(SRAM)がのってる
FPGAは基本的にはメモリ回路
● LUTの基本はメモリ
● 配線スイッチもメモリ
● 配線データを書き込むだけ
FPGAとCPU
● CPUとは
– メモリから命令をよびだして、命令にしたがった回路で
処理を行う
– ノイマン型アーキテクチャ
FPGAなら
● 命令を読み込む必要なく、回路をやりたい処理の
とおり並べることができる
● 非ノイマン型アーキテクチャ
FPGAの利点
● 命令を読み込む必要がない
– 処理を行うまでのタイムラグが少ない
●
低レイテンシ
– 命令解析のための回路が不要
●
余分な回路がないので低消費電力
● 細かな並列化
ムーアの法則の限界
● ムーアの法則
– 1年半で集積度が倍になる
● そろそろ限界が見えてきている
●
チップ微細化の停滞によって、消費電力が決まれ
ばトランジスタ数が決まるようになる
– 限られたトランジスタ数で効率よい処理が必要になる
最近のできごと
● 2012 金融処理でのFPGA
● 2014 MicrosoftがサーバーにFPGA採用を発表
● 2014 DwangoがFPGA技術者を募集
● 2015 IntelがAlteraを買収
金融計算
● HFT(High Frequency Trade)
● 時間=お金
● 回路切り替えにも工夫
– 回路切り替えで処理が止まるならFPGAで時間短縮す
る意味がない
● FPGAが計算に利用できる
MicrosoftがサーバーにFPGA採用
● 1632台のFPGAサーバーでクラスタを構成
● ページランク処理でスループットを2倍
● スループット同一の場合は遅延を3割減
● サーバーに載せるFPGAの効率が実証される
DwangoがFPGA技術者を募集
● Dwangoの主力事業は動画配信
● 動画処理などをFPGAで高速化
● 日本のサービス会社がFPGAに注目している
IntelのAltera買収
● 2015年6月1日に買収発表
● AlteraはXilinxと1、2位を争うFPGAメーカー
● XeonとFPGAの組み合わせ
● 「Intelの予想では、2020年までにクラウドサービ
スプロバイダのサーバノードの最大1/3でFPGA
が活用される」
FPGAでの開発
● 回路記述
– VHDLやVerilogHDLなど
● 論理合成
– HDLを論理回路に変換
● 配置配線
– 論理回路を実際の回路に配置
●
コンフィギュレーション
– FPGAに回路情報を設定
HDLの問題点
●
書くのが面倒
● 書くのが面倒
● 論理合成に時間がかかる
– 数時間かかったりする
● デバッグが面倒
●
デバッグが面倒
● テストも面倒
● テストも面倒
●
いろいろ面倒
IPを使う
● Intellectual Property
● ようするにライブラリ
● だれかが作って検証してる
SoC
● System on Chip
● CPU回路のせちゃえ
– ソフトコアCPU
● 物理CPUのせちゃえ
– FPGAの微細化
– チップに余裕
– 再構成可能回路が大量にあってもしかたない
– そうだARMを乗せよう
高位合成
● CとかJavaとかで書いてHDLに変換
● アルゴリズムの検証がソフトウェアとして行える
– デバッガなどが使える
– コンパイルが速い
● OpenCL
– GPUやCPUでの並列にも対応
FPGAのつかいどころ
● ネットワーク処理
● 人工知能
● IoT
ネットワーク処理
● 40Gbイーサとか100Gbイーサとかが普及すると
処理についていけない
● 暗号化や認証、圧縮処理をFPGAで行うとよさげ
● CPUはアプリケーション処理に専念
人工知能
● 深層ニューラルネットワーク
● たくさんの掛け算・足し算を要素ごとに行う
IoT
● たくさんのセンサーから常時データが送られる
● ほとんどのデータは無駄
● 人工知能(深層ニューラルネットワーク)に学習さ
せて、必要なデータだけを送信
● 低消費電力
FPGAやりましょう

増え続ける情報に対応するためのFPGA基礎知識