Hot Chips 21では、SiliconBlue、Altera、Xilinxの3社からFPGAの新製品の発表が各1件、FPGAで作られた計算処理アクセラレータの発表が2件と、合計5件ものFPGA関係の発表があり、FPGAの汎用性と重要性をアピールしていた。

魔法の汎用ロジック「FPGA」の原理

FPGAは、4入力の汎用ロジックを実現するLUT(Look Up Table)のアレイと、それらの入出力端子間を接続するためのX方向とY方向の格子状の配線で作られている。そして、それぞれのLUTの論理機能の指定と、LUTの4本の入力と1本の出力をX、Y方向の配線を選択して接続するスイッチと、どのスイッチをOnにするかを指定する情報を保持するFlip Flopで構成されている。

図1 SiliconBlueのプログラマブルロジックブロック

実際の製品の論理素子も原理は同じであるが、図1に見られるように、もっと機能が多く、LUTの出力をそのまま出力するか、それをDFF(D-Flip Flop)に記憶させたものを出力するかの選択が出来たり、加減算を行うためのキャリーの伝播ロジックが入ったりしている。また、4入力LUTではなく、より入力数の多いLUTを用いる製品もある。

図2 SiliconBlueのFPGAのPLBと配線の接続

このLUTからなるProgrammable Logic Block(PLB)のアレイの間には配線が走っており、この製品ではPLBの行と列の間に12本ずつの配線が4チャネル設けられている。そして左下のPLBのところに太線の矢印で書かれているように、PLBの入出力やクロックなどは対応するチャネルの12本の配線と接続するスイッチが設けられており、どの配線に接続するかを指定することが出来る。

また、この図は4列までの長さの短距離配線の図で、XY方向の乗り換えなどを行うスイッチボックスが4列ごとに設けられている。なお、同社のFPGAでは、8方向の隣接PLBへの接続線と、このSpan4の配線より長距離の12列の信号伝播を行うSpan12の接続線がある。

これらのPLBの論理機能と、PLBの機能や入出力の接続、配線のスイッチボックスの接続を指定するFlip Flopとスイッチがあり、これらは図には書かれていないが、 PLB自体よりもずっと多くのトランジスタを必要としている。なお、これらのFlip Flopはシフトレジスタになっており、専用の端子からシリアルに入力して設定するというのが一般的であるが、SiliconBlueのFPGAは不揮発性のメモリを内蔵し、このメモリに格納された設定情報をパワーオン時にFlip Flopに格納するので外部メモリは必要ない。

余談であるが、この設定情報を読み出されてしまうと、FPGAは一般品であるので、苦労して開発した機能がコピーされて海賊版の製品を作られてしまう。このため、設定情報に暗号化機能を持つFPGAもある。

一般のロジックを作る場合は汎用ロジックを実現するPLBでも良いが、Digital Signal Processor(DSP)で必要性が高い乗算器や、メモリなどをPLBで作るのは効率が悪いので、専用のマクロが使用される。SiliconBlueの配線の図でRAM4Kと書いてあるのは4KビットのRAMマクロであり、図に示すようにPLB 2個分の面積でできている。また、同様にDSP向けの18ビットx18ビットの乗算機のマクロを備えるのが一般的である。

最近のFPGAの売りはDDR2/3やPCI Expressなどの高速インタフェースをサポートしている点である。これらのI/Oマクロの設計は高速信号伝達トランシーバの設計ノウハウを必要とし簡単には開発できないので、このような高速信号インタフェースを実現するためにFPGAを利用するというケースも見られる。

そして、FPGAメーカーは、VerilogやVHDLで書かれた論理をPLBのLUTの論理と接続に変換し、それぞれの機能の物理的位置を決めて入出力を接続する配線を決めて、自社のFPGA用の論理やスイッチの接続情報を生成するツールしている。

図3 SiliconBlueのFPGA開発ツール

このVerilogからLUT論理への変換では、サイクルタイムが最小になるように最適化した論理を作るとか、一定のサイクルタイムを満足する範囲で、使用PLBの個数を最小化する、あるいは消費電力を最小化するなど、どのような論理を作りたいのかの指定ができるようになっている。

そして、FPGAの最大のメリットは開発コストの安さと、ターンアラウンドタイムが短い点である。一方、同じ機能をASICで作れば、チップ面積(=チップコスト)や遅延時間は小さくなるが、長い開発期間がかかり、開発コストも膨大となる。特に、ASICの開発コストは微細化が進むにつれて高騰しており、カスタムASIC化して経済的に成り立つ領域は生産量の多い製品だけに追い詰められ、単一品種の生産量の少ない製品ではFPGAの利用が進んでいる。