FPGAはなぜ書き換え可能なハードウェアか
結論:実態はメモリの塊だから
FPGAは書き換え可能なハードウェアと言われますが
そんな便利なものがあれば、わざわざCPUとか毎年毎年新しいものを作って
店頭に並べる必要はないはずです。ソフトウェアのようにネット経由で配布して書き換えればいい。
当然、CPUは書き換え不可能なハードウェアで作るメリットがある ので
書き換え可能なハードウェアで作られていないわけです。
この記事では、そのあたりを掘り下げてみたいと思います。
ANDを電子部品で考えてみる
抽象的に半導体を語っていても話が難しいのでまずは具体的にANDの論理を電子部品で考えてみます。
まずトランジスタの動きを知らない人のためにご紹介
エミッタから大きな定格電流を流しておくと、ベース部分に流れた電圧に反応して
コレクタ部分へエミッタの電流に対応したベースに合った電圧で流れるというもの。

時々半導体のニュースで流れる「プロセスルール」、何nmの製造がどうこうって言っているのは
このトランジスタ1個あたりの大きさ…だったはず。
// TSMCとIntelで基準が違うとか一時期Intelが騒いでましたが
さてこのトランジスタをこう繋ぐとAND論理を構成できます。

同じ結果を書き換え可能な状態で得る
トランジスタで作ってしまうと当然書き換えができないので
書き換え可能な方法 で同じ結果を得るとしたら、こうするのが簡単

input をメモリのアドレスと見なしてメモリの中身をANDとなるようにしておけばoutputがANDになります。
// カプセル化や隠蔽やモジュール化とリファクタリングするときのことを考えば自然な考え
というわけで、FPGAというのは
機能としてはハードウェアと同じことができるようにしたメモリの塊
です。書いたソースコードは、そのメモリに書き込む内容に変換されているわけです。
Webアプリにせよ、WindowsやLinuxの上で動くソフトウェアでも
コンパイルしたバイナリファイルは一種のデータの塊といっても過言ではないはずなので似たようなものですね。
書き可能なメリットとデメリット
メリットに関しては方々で出ていますがハードウェアということで計算がとにかく速い。
100MHzで動かしても1計算が10ns秒なので
OSを介したソフトウェアで1msで処理を終わらせるのが厳しいとかは皆無。
TRONなどの RealTime-OSなものでもマイクロ秒単位の処理なので
あらゆるソフトウェアの100倍は速い。
その上、書き換えが可能なので多少バグってても試行錯誤で直すことが可能。
デメリットはハードウェアとしての効率が悪い。
ANDを例に取ってもトランジスタ2つでできていたことをメモリを使って構成しているので半導体としての製造効率が著しく悪い。
ハードウェア実装として効率が悪いということは、同じく動く部品が多いので消費電力も同一処理で見ると高くなります。
x86 CPUみたいな大量生産するものはがちがちのハードウェアとして最適製造するほうに分があるということで、毎年のごとく新製品が作られて店頭に並べられているわけですね。
余談:FPGAの構成要素の違い
メモリ、と抽象的に書いておきましたがメモリと言ってもいろいろあるわけです。
FPGA大手であるXilinx(AMD)もAltera(Intel)もSRAMベース、CPUのキャッシュに使われているのと同じもの、でFPGAを構成していたはず。
他メーカーにはSRAM以外のメモリをベースにしたFPGAも作っているようです。
microchip は flash ベースでFPGAを作っていたはず。
業界3位のlattice はどうだったかな。
Xilinxと提携しているようですが Efinix が通販サイトでも見かけるようになってきました。
テクノロジのページを見てるとメモリのベースが違うことで差別化しているのか、SRAMベースだけど作りを変えることで差別化しているのか、はわからない。
Discussion