クリプキクローネ日記帳

ある種の音楽と数学とランニングはミニマルなところが似ていると思う。

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
  1. --/--/--(--) --:--:--|
  2. スポンサー広告

FPGAの原理と構成 [天野英晴(編)]

前から思っていたんですが、CPUによって動くものを「プログラム」とか「ソフトウェア」とか呼びますが、
FPGAによって動くものを同じようにぴったり表した単語がないんですよね。
強いて言えば「回路」なんだと思いますが、これでは少し広すぎる気がします。
「HDL」は「プログラミング言語」と同じ位置づけの言葉だし。
というわけでなんとなくFPGAの中で動くものもFPGAと呼んでしまったりします。

そういうわけで、FPGAといったときになんとなくコーディングまで含めて考えてしまいがちですが、
この本は全くもってそんなことはなく、本当の意味でのFPGAすなわちゲートアレイの本です。
文法なんて全く出てきません。
CPUのアーキテクチャの本みたいで楽しかったです。

よく考えれば「プログラム」もCPUだけでなくGPUやパンチカードでも動くので、
別に「回路」では広すぎるなんてことはないのかもしれません。



FPGAの論理ブロックにはプロダクトターム方式やLUT方式やマルチプレクサ方式があって、現在はLUT方式が主流。
数理論理学好きとしてはANDアレイとORアレイを繋げて積和標準形だけでつくるプロダクトターム方式が楽しいですが、
LUTの方が拡張性は高そう。
LUTの入力数は4,5,6あたりが面積効率がよくて、6,7あたりは遅延が少ない。
4が主流だったけど増える傾向。
勝手なイメージで16とか32とかだと思ってた。

LUTとFFとセレクタのセットをBLE(Basic Logic Element)という。
BLEをいくつかグループにしたものを論理クラスタという。
論理クラスタ内は配線遅延や消費電力が少ない。
なのでなるべく関連の強い回路が同じ論理クラスタに入るようにする。
(クラスタリングツールが)

FPGAのレイアウトはどれも楽しい。
現在主流のアイランドスタイルはまるで都市計画のよう。
論理ブロックが全組み合わせで結合している全結合型はツールの設計が楽そう。
1次アレイ型はCCDの電荷を運ぶところとか、ヨーロッパのターミナル駅のよう。
階層型は大通りから静かな小道に入って家が並ぶ住宅街みたい。
そしてなんとなくフラクタルなところもいい。
階層型はかっこいいけど、階層をまたいだときの配線遅延が大きくて現在はあまり使われていない模様。

スイッチブロックのトポロジーもおもしろい。
縦線と横線をどう結合するか。
同じ番号同士を繋ぐかずらして繋ぐかで全然違う。

コネクションブロックは論理ブロックから配線に出てくるところをどう繋ぐか。
論理ブロックのすべての線が配線のすべてに繋がっているわけではない。
配置配線ツールは本当に大変だ。

IOブロックは入出力にバッファをかませたり、プルアッププルダウンを選べるように両方ついていたり、
一部のブロックはLVDSに対応していたり。
そもそもピンによって対応電圧がそれぞれ違ったりしている。
最近の新しいDDRは低電圧だから電圧の種類も多くて大変だ。

DSPブロック大事。ついFPGAでいろいろな計算をやりたくなるし。
内臓メモリも大事。

論理合成したネットリストをLUTに対応づけるテクノロジーマッピングはグラフだらけで楽しい。
なるべく少ないLUTで多くのゲートをカバーする的な。

配置配線で論理ブロックを配置するときもなるべく小さい矩形に関連する論理ブロックが収まるようにするグラフ理論。
最適な配置はNP困難なので、お馴染みの焼きなまし法(SA:シミュレーテッドアニーリング法)でやる。
だんだん冷えてくるのでランダムに入れ替える頻度が減ってきて、最適っぽいところに近づいていく。

低消費電力化ツールは、配線遅延よりも消費電力を優先して小さくする。
通常行われる論理ブロックの複製では配線遅延は小さくなるけど消費電力は大きくなるのでやらない、とか。
消費電力と性能のトレードオフは難しそう。
電源がバッテリーかどうかで大きく変わりそう。

パイプラインはソフトウェア特有の話でFPGAには出てこないかと思っていたけどしっかり出てきた。
やっぱり長いと配線遅延が大きくなるので、細かくブロックを区切ってパイプラインするらしい。

シストリックアルゴリズムは多数の計算要素(Processing Element : PE)が隣同士でデータを受け渡しして処理するアルゴリズムの総称。
それぞれのPEが隣からデータをもらって最大値判定することで、結果としてソートができる。とか。
他にも信号処理画像処理パターンマッチングGCDグラフ行列構文解析FFTリードソロモン動的計画法などなどなんでもあり。
すごい。
でも扱うデータの数に応じてPEが増えるから上限を決めておかないと困ったことになりそう。
ソフトでやるときもデータを格納するメモリの限界があるから同じか。

データ駆動マシンやペトリネットは命令にデータがついて回る感じで、ノイマン型に慣れてると驚く。
ライフゲームで有名なセルオートマトンは確かにFPGAでやると楽しそうな気がする。

文字列のパターンマッチングや正規表現マッチングも非決定性オートマトン(NFA)でできるので、FPGAに落とし込める。
すごくソフトっぽい話だけどもうなんでもありだな。

そしてFPGAの適用範囲にも驚く。
組み込み機器ばかりかと思っていたけど、ネットワークコントローラや金融でも人気。
株式の高頻度取引(HFT)はどうやってそんなに早く計算しているのかなと前から思っていたけど、部分的にわかった。
人工知能は確かにビッグデータをソフトでやると時間かかるからFPGAありかもしれないけど、
どうしてもファジーなところが多い領域だからGPUには勝てないか。
とにかくCPUのアクセラレータとして検索でも画像処理でもなんでもできますよという気持ちになりました。

FPGAの先の話として、演算器を並べたCGRAもある。いよいよGPUっぽい。
FPGAを動的にコンフィグし直して回路を切り替えながら使うという考え方もある。

あと、同期回路だとクロックで電力をくったり、スキューのせいで性能が上がらなかったりするので、
非同期式FPGAというのがある。
演算モジュール間でハンドシェイクしてクロック使わずにデータを渡す模様。
回路規模が大きくなるのがネック。

クロックや電源を部分的に切って電力削減、というジャンルも盛ん。
クリティカルパスだけ高電力、とか。

他にも3次元FPGAとかホログラムFPGAとか夢いっぱい。
楽しいです。

  1. 2017/05/28(日) 02:34:00|
  2. | トラックバック:0
  3. | コメント:0
<<プログラムの不思議を解く -実力派プログラマのための教養としてのアセンブラ入門- [日向俊二(著)] | ホーム | モダンC言語プログラミング [花井志生(著)]>>

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック

トラックバックURLはこちら
http://myumbrella.blog42.fc2.com/tb.php/377-6a6108db
この記事にトラックバックする(FC2ブログユーザー)
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。