8月26日のHOT CHIPSの最初のセッションはFPGAのセッションである。FPGA(Field Programmable Gate Array)は、チップを製造後、フィールド(一般には製造工場を出て製品が稼動している場所を意味するが、ここでは半導体製造工場を出た後の意味)で機能をプログラムできるゲートアレイという意味である。
今回のHOT CHIPSでの発表について述べる前に、復習の意味でFPGAとはどんなものかの概要を解説しておこう。FPGAは、LUT(Look-up Table)と呼ばれる汎用ロジックゲートを、接続を可変できる配線で接続するというのが基本構造である。
FPGAの基本構造 |
FPGAは、この図のように赤線で書いた水平方向の配線と、青線で書いた垂直方向の配線のグリッドの間に汎用ロジックであるLUTとFlip Flop(FF)からなるロジックエレメントが置かれている。この図では、水平の赤線は4本、垂直の青線は6本しか描かれていないが、実際のFPGAでは、もっと多くの配線がある。また、水平方向の赤線は、図には一組しか書かれていないが、いくつかのロジックエレメントごとに周期的に存在している。
そして、図の○印はCMOSスイッチであり、1個1個のスイッチにOn/Off状態を制御するラッチ(メモリのビットと同等)がついている。これらのラッチに情報を書き込むことにより、これらのスイッチのOn/Offさせ、ロジックエレメントにどの青線の入力を接続するか、ロジックエレメントからの出力をどの青線に出力するか、更に、どの青線と赤線を接続するかを決めることができる。
ロジックエレメントは、次の図のような回路になっており、別の見方をするとC0~C15の16ビットのメモリ(Look-up Table)のアドレスを入力ビットで指定することが出来るという回路構成である。従って、C0~C15に格納する値によって、任意のロジックを実現することが出来る。そしてこの図には明示されていないが、このLook-up Tableの出力は、FFを素通しで出力することも出来るし、FFで次のサイクルまで保持することも出来るようになっている。
4入力LUTを持つロジックエレメントの構造 |
このようなロジックエレメントが通常の2入力NANDなどに換算して何ゲート分に相当するかは使い方によるが、FPGAメーカーは10ゲート程度に相当すると主張している。
つまり、FPGAは、LUTというプログラム可能な汎用ロジック回路と、固定の水平と垂直のグリッド配線間の接続をコントロールするスイッチを持ったLSIで、ロジックエレメントの機能と、接続関係をプログラムすることにより、任意の論理機能を実現できるという仕掛けになっている。
ここで述べたのは、基本的な構造であり、先端のFPGAでは、ロジックエレメントの機能が改善されているし、このような単純なロジックエレメントだけではなく、SRAMアレイや、信号処理用のDSP機能を実現するのに適した18x18ビットの乗算器、それに加えて組み込み用のコンパクトなマイクロプロセサも垂直、水平の配線に接続できるようになっている。また、初期には、FPGAチップへの入力は単純なCMOSレベルの信号であったが、最近では、DDR2/3などのメモリインタフェースやPCI Expressなどの高速シリアル伝送を行うマクロなども利用できるようになっている。ということで、非常に便利であり、もっとも成功した半導体製品の一つであると言える。
しかし、このようにFPGAのロードする情報で任意の機能を実現するためのオーバヘッドはかなり大きく、最大規模のFPGAチップは3cm角を越えるという巨大チップであり、お値段も数十万円と高価である。しかし、それほど大きな規模でなければ1万円以下のものもあり、例えば、生産数量が1000個以下であれば、カスタムLSIの開発費用を払うよりもFPGAを使う方が安上がりである。
また、LUTは単純なゲートより遅延時間が長いとか、配線も長くなるなどの問題があり、ASICとして作る場合と比較すると、実現できるクロック周波数が低い、消費電力が大きいなどの問題もある。