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

FPGA

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