2019年7月10日に「夏のAI EdgeハードウェアMeetup in 福岡」で発表した資料です
FPGA入門夏のAI EdgeハードウェアMeetup in 福岡2019年7月10日 きしだなおき
View Slide
FPGAとは●Field Programmable Gate Array– Field 現場で– Programmable プログラム可能な– Gate 論理素子が– Array いっぱい並んだやつ● 現場でプログラムできる論理回路
FPGAの仕組み
回路の合成● 例:3入力でORとANDの組み合わせ
回路にはいろいろある●XORやNOTなどいろいろ組み合わせると大変● 全部用意しようとすると使わない素子が多くなる● 回路に無駄
回路の入出力の組み合わせ入力 出力000 0100 0010 0110 1001 1101 1011 1111 1
LUT(LookUp Table)● 入出力をあらかじめメモリにもっておけばいい● 製品としては4入力LUTや6入力LUT入力 出力000 0100 0010 0110 1001 1101 1011 1111 1
論理ブロック●Logical Element(LE) Intel(Altera)●Logical Cell(LC) Xilinx
配線● 論理ブロックが格子状に配置● 周囲に配線● アイランドスタイル
乗算回路とメモリ● 乗算やメモリを論理ブロックの組み合わせで実現すると効率がわるい● 乗算回路やメモリ(SRAM)がのってる
FPGAは基本的にはメモリ回路●LUTの基本はメモリ● 配線スイッチもメモリ● 配線データを書き込むだけ
FPGAとCPU●CPUとは– メモリから命令をよびだして、命令にしたがった回路で処理を行う– ノイマン型アーキテクチャ
FPGAなら● 命令を読み込む必要なく、回路をやりたい処理のとおり並べることができる● 非ノイマン型アーキテクチャ
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のつかいどころ● 画像・映像処理– Mac ProにはFPGAが載っていて動画エンコーディングなどに使える● ネットワーク処理● 「人工知能」●IoT
人工知能● 深層ニューラルネットワーク● たくさんの掛け算・足し算を要素ごとに行う
IoT● たくさんのセンサーから常時データが送られる● ほとんどのデータは無駄● 人工知能(深層ニューラルネットワーク)に学習させて、必要なデータだけを送信● 低消費電力
実際に試すには?●FPGA開発ボード– DE0-CVやDE0-nano(Intel)●WindowsかLinux●Macの場合はiverilogで信号の確認だけ・・・– VirtualBoxなどを使ってLinuxを動かせばOK
FPGAやりましょう