fpga

20
FPGA とは何ぞや hotpepsi@twitter

Upload: firewood

Post on 07-Jul-2015

2.798 views

Category:

Documents


1 download

DESCRIPTION

第一回情報科学苦手の会 FPGAの話

TRANSCRIPT

Page 1: FPGA

FPGA とは何ぞや

hotpepsi@twitter

Page 2: FPGA

自己紹介

hatena: firewood twitter: hotpepsi 組み込みソフトウェア技術者

FPGA は何となく知ってるレベル

Page 3: FPGA

LSI と PLD

どちらも大規模集積回路

普通の LSI 製造後は回路が変更できない

CPU など、機能が変更できるものはある

PLD (特殊な LSI ) 製造後に論理回路を変更できる

Page 4: FPGA

PLD と FPGA

PLD Programmable Logic Device プログラム可能な論理回路

FPGA Field Programmable Gate Array 大規模にプログラム可能な PLD 近年は PLD+ 高速 I/F+CPU+ メモリ

Page 5: FPGA

ところで

わからないことがわからないと質問もできないらしい… http://www.tate-

lab.net/mt/2009/11/post-143.html

Page 6: FPGA

わからないのいろいろ

歴史 どういう経緯で今みたいなのになったのか

論理回路 同期、非同期

どういう構造・実装になっているのか ex) 頭の中で電子の流れが想像できる

どう使うのか VerilogHDL 、 VHDL

Page 7: FPGA

歴史

1975 Signetics 社が FPLA として 82S100を発表 AND アレイのヒューズを焼き切る( 1 回のみ)

1985 Xilinx 社が FPGA として LCA を発表 LUT ( LookUp Table )用に SRAM を載せて ON/OFF を制御

大規模化&高速化して現在に至る

Page 8: FPGA

論理回路

AND

OR

基本論理回路の組み合わせで何でも実装できる

Page 9: FPGA

FF – フリップフロップ

論理状態を保持できる ラッチ回路

SRAM の基本要素

Page 10: FPGA

同期と非同期

非同期回路 クロック信号に同期しない

同期回路 クロック信号に同期する

Page 11: FPGA

非同期式回路

基本は非同期 クロック信号に同期しない

複雑な回路の設計が難しい 伝播遅延の差によりハザードなどが発生

ハザード : 動作が速い素子の出力が先に出る

Page 12: FPGA

同期式回路

クロック信号( CLK )に同期する CLK の変化に合わせて状態遷移 立ち上がりまたは立ち下がり _|  ̄ |_

同期= CLK が変化するまで状態が変化しない 微妙な入力の遅延は問題にならなくなる

非同期に比べ、人間が設計しやすい ただし CLK 信号の遅延やノイズなどの問題も 1 クロックに収まる処理だけが可能

Page 13: FPGA

任意の回路( 1 )

論理回路を書き換える=任意の論理回路を、任意の場所に置きたい

しかし、物理的に存在しないものは置けない

Page 14: FPGA

任意の回路( 2 )

ON/OFF できる回路を最初から置いておく

使いたいロジック間の接続だけを ONにすることで、配置の代わりにする LUT に ON/OFF 情報を格納し、参照する

Page 15: FPGA

任意の回路( 3 )

FPGA =ロジック、配線、 LUT のかたまり

ロジック ロジック

ロジック ロジック

Page 16: FPGA

HDL - ハードウェア記述言語

VerilogHDL と VHDL できることはほぼ同じ

論理回路が言語(抽象的な記述)で書ける

C のように、変数や代入がある タイミングや制約条件を記述する 非同期回路も記述できるが、普通は同期回路

Page 17: FPGA

で FPGA って何ができるの

ソフトウェア技術者から見ると… 色々な処理のアクセラレーション 例えば「全ビットをひっくり返す」などの新しい命令が作れる

PLD+ 高速 I/F+CPU+ メモリ 柔軟なハードウェア=ソフトウェア?

Page 18: FPGA

DR ( 1 )

Dynamically Reconfigurable Device 動作中に機能が変更できるデバイス

FPGA 、 Reconfigurable Processor 、 GPGPU などが該当

粒度が異なる(以下小さい順) FPGA … ロジック単位 Reconfigurable Processor … エレメント単位

GPGPU … ストリーミングプロセッサ単位

Page 19: FPGA

適切な粒度

アプリケーションによって異なる CPU vs GPGPU のどちらが優れているか?

粒度を細かくすると小回りがきくが、面積効率や電力効率が落ちる 伝送路も電力を消費する

粒度を粗くするとパフォーマンスが上がるが、柔軟性が下がる

Page 20: FPGA

DR ( 2 )

粒度を上げていくと Larrabee に?

CPU CPU

CPU CPU