fpga
DESCRIPTION
第一回情報科学苦手の会 FPGAの話TRANSCRIPT
![Page 1: FPGA](https://reader036.vdocuments.pub/reader036/viewer/2022080212/559b653d1a28ab3b3c8b4647/html5/thumbnails/1.jpg)
FPGA とは何ぞや
hotpepsi@twitter
![Page 2: FPGA](https://reader036.vdocuments.pub/reader036/viewer/2022080212/559b653d1a28ab3b3c8b4647/html5/thumbnails/2.jpg)
自己紹介
hatena: firewood twitter: hotpepsi 組み込みソフトウェア技術者
FPGA は何となく知ってるレベル
![Page 3: FPGA](https://reader036.vdocuments.pub/reader036/viewer/2022080212/559b653d1a28ab3b3c8b4647/html5/thumbnails/3.jpg)
LSI と PLD
どちらも大規模集積回路
普通の LSI 製造後は回路が変更できない
CPU など、機能が変更できるものはある
PLD (特殊な LSI ) 製造後に論理回路を変更できる
![Page 4: FPGA](https://reader036.vdocuments.pub/reader036/viewer/2022080212/559b653d1a28ab3b3c8b4647/html5/thumbnails/4.jpg)
PLD と FPGA
PLD Programmable Logic Device プログラム可能な論理回路
FPGA Field Programmable Gate Array 大規模にプログラム可能な PLD 近年は PLD+ 高速 I/F+CPU+ メモリ
![Page 5: FPGA](https://reader036.vdocuments.pub/reader036/viewer/2022080212/559b653d1a28ab3b3c8b4647/html5/thumbnails/5.jpg)
ところで
わからないことがわからないと質問もできないらしい… http://www.tate-
lab.net/mt/2009/11/post-143.html
![Page 6: FPGA](https://reader036.vdocuments.pub/reader036/viewer/2022080212/559b653d1a28ab3b3c8b4647/html5/thumbnails/6.jpg)
わからないのいろいろ
歴史 どういう経緯で今みたいなのになったのか
論理回路 同期、非同期
どういう構造・実装になっているのか ex) 頭の中で電子の流れが想像できる
どう使うのか VerilogHDL 、 VHDL
![Page 7: FPGA](https://reader036.vdocuments.pub/reader036/viewer/2022080212/559b653d1a28ab3b3c8b4647/html5/thumbnails/7.jpg)
歴史
1975 Signetics 社が FPLA として 82S100を発表 AND アレイのヒューズを焼き切る( 1 回のみ)
1985 Xilinx 社が FPGA として LCA を発表 LUT ( LookUp Table )用に SRAM を載せて ON/OFF を制御
大規模化&高速化して現在に至る
![Page 8: FPGA](https://reader036.vdocuments.pub/reader036/viewer/2022080212/559b653d1a28ab3b3c8b4647/html5/thumbnails/8.jpg)
論理回路
AND
OR
基本論理回路の組み合わせで何でも実装できる
![Page 9: FPGA](https://reader036.vdocuments.pub/reader036/viewer/2022080212/559b653d1a28ab3b3c8b4647/html5/thumbnails/9.jpg)
FF – フリップフロップ
論理状態を保持できる ラッチ回路
SRAM の基本要素
![Page 10: FPGA](https://reader036.vdocuments.pub/reader036/viewer/2022080212/559b653d1a28ab3b3c8b4647/html5/thumbnails/10.jpg)
同期と非同期
非同期回路 クロック信号に同期しない
同期回路 クロック信号に同期する
![Page 11: FPGA](https://reader036.vdocuments.pub/reader036/viewer/2022080212/559b653d1a28ab3b3c8b4647/html5/thumbnails/11.jpg)
非同期式回路
基本は非同期 クロック信号に同期しない
複雑な回路の設計が難しい 伝播遅延の差によりハザードなどが発生
ハザード : 動作が速い素子の出力が先に出る
![Page 12: FPGA](https://reader036.vdocuments.pub/reader036/viewer/2022080212/559b653d1a28ab3b3c8b4647/html5/thumbnails/12.jpg)
同期式回路
クロック信号( CLK )に同期する CLK の変化に合わせて状態遷移 立ち上がりまたは立ち下がり _|  ̄ |_
同期= CLK が変化するまで状態が変化しない 微妙な入力の遅延は問題にならなくなる
非同期に比べ、人間が設計しやすい ただし CLK 信号の遅延やノイズなどの問題も 1 クロックに収まる処理だけが可能
![Page 13: FPGA](https://reader036.vdocuments.pub/reader036/viewer/2022080212/559b653d1a28ab3b3c8b4647/html5/thumbnails/13.jpg)
任意の回路( 1 )
論理回路を書き換える=任意の論理回路を、任意の場所に置きたい
しかし、物理的に存在しないものは置けない
![Page 14: FPGA](https://reader036.vdocuments.pub/reader036/viewer/2022080212/559b653d1a28ab3b3c8b4647/html5/thumbnails/14.jpg)
任意の回路( 2 )
ON/OFF できる回路を最初から置いておく
使いたいロジック間の接続だけを ONにすることで、配置の代わりにする LUT に ON/OFF 情報を格納し、参照する
![Page 15: FPGA](https://reader036.vdocuments.pub/reader036/viewer/2022080212/559b653d1a28ab3b3c8b4647/html5/thumbnails/15.jpg)
任意の回路( 3 )
FPGA =ロジック、配線、 LUT のかたまり
ロジック ロジック
ロジック ロジック
![Page 16: FPGA](https://reader036.vdocuments.pub/reader036/viewer/2022080212/559b653d1a28ab3b3c8b4647/html5/thumbnails/16.jpg)
HDL - ハードウェア記述言語
VerilogHDL と VHDL できることはほぼ同じ
論理回路が言語(抽象的な記述)で書ける
C のように、変数や代入がある タイミングや制約条件を記述する 非同期回路も記述できるが、普通は同期回路
![Page 17: FPGA](https://reader036.vdocuments.pub/reader036/viewer/2022080212/559b653d1a28ab3b3c8b4647/html5/thumbnails/17.jpg)
で FPGA って何ができるの
ソフトウェア技術者から見ると… 色々な処理のアクセラレーション 例えば「全ビットをひっくり返す」などの新しい命令が作れる
PLD+ 高速 I/F+CPU+ メモリ 柔軟なハードウェア=ソフトウェア?
![Page 18: FPGA](https://reader036.vdocuments.pub/reader036/viewer/2022080212/559b653d1a28ab3b3c8b4647/html5/thumbnails/18.jpg)
DR ( 1 )
Dynamically Reconfigurable Device 動作中に機能が変更できるデバイス
FPGA 、 Reconfigurable Processor 、 GPGPU などが該当
粒度が異なる(以下小さい順) FPGA … ロジック単位 Reconfigurable Processor … エレメント単位
GPGPU … ストリーミングプロセッサ単位
![Page 19: FPGA](https://reader036.vdocuments.pub/reader036/viewer/2022080212/559b653d1a28ab3b3c8b4647/html5/thumbnails/19.jpg)
適切な粒度
アプリケーションによって異なる CPU vs GPGPU のどちらが優れているか?
粒度を細かくすると小回りがきくが、面積効率や電力効率が落ちる 伝送路も電力を消費する
粒度を粗くするとパフォーマンスが上がるが、柔軟性が下がる
![Page 20: FPGA](https://reader036.vdocuments.pub/reader036/viewer/2022080212/559b653d1a28ab3b3c8b4647/html5/thumbnails/20.jpg)
DR ( 2 )
粒度を上げていくと Larrabee に?
CPU CPU
CPU CPU