FPGA

複数のFPGAを用いてシステム構築を行う際の性能劣化

More than 3 years have passed since last update.

■複数のFPGAを用いた場合の性能劣化、考えていますか?
1つのFPGAでは搭載しきれない回路でも複数のFPGAを使えば合成可能なのだから複数のFPGAを用いたシステムを導入しよう!
そんな事を考えた事があるとしたらちょっと待ちましょう。

[1]や[2]等に見られるように複数のFPGAを搭載したボードやシステムが以前からリリースされています。
しかし、複数のFPGAへ回路の分割を行うとFPGA間通信によって性能劣化が起きるということを[3]の論文をもとに紹介いたします。

[3]の著者はFLEXRAS TECHNOLOGIES[4]という複数のFPGAへの回路分割を行っている会社の方のようです。
著者らは複数のFPGAに回路を分割する際のI/Oの構築方法として
1.通常のFFによる分割を行う
2.FPGAのI/Oに備わった高速IFであるISERDES/OSERDESを使う
3.MGTブロックを使う
4.2.3.の両方を使う
を提案し、全パタンによる性能劣化度合を比較しています

■結果何が分かったと?
結論から言うと
1.複数のFPGAに分割した際のシステム動作周波数は1~10MHz程度
  (単一のFPGAの場合は10~100MHz程度)
2.FPGA間分割にはISERDES/OSERDESを使う事が優位
  ただし、多重度54以上ではMGTとISERDES/OSERDESを両方使う事が優位
という事です。

『1つのFPGAでは回路が乗らないから、複数のFPGAを用いたよ。そしたら性能が数MHzになっちゃった。悔しい!』
そんな事が無いよう注意ください。

■なんでそうなったの?
FPGAを分割する際に、分割前後でまったく同じ挙動を示す事が求められています。
一方FPGA間のピン数は数が限られているため、そのまま回路をマッピングするとピン不足に陥ってしまいます。そこで、FPGAのピンを時分割します。

システム全体の動作周波数と、送受信の動作周波数を別々に分けて動作するシステムを構築したうえで、
送信側では、複数のピンのデータを1本のピンにまとめて伝送して、
受信側では、1本のピンのデータを複数のデータ配線に展開することを行い、元の形に戻します。

この際、分割するピンの本数が問題となります。
ピン2本多重の場合、送受信回路の動作周波数はシステムに対して2倍、ピン3本多重の場合は3倍、…と
ピンの多重度に応じてシステム周波数よりも送受信回路では高い周波数での動作が必要となります。

FPGAボード間の動作周波数限界はおおむね100~1000MHz程度ですので、
ピンの多重度を増やせば増やすほどシステムの性能を下げざるを得なくなってしまいます。

ちなみに[3]の著者らは上記システム性能劣化を問題視しており、
FPGA間高速IFとしてISERDES/OSERDESやMGTを使うことで、システムに対して送受信回路の動作を高速化し、性能劣化の解消を図っています。

■じゃあボード選定の際はどうすべき?
目的を明確にしてからボード選定をしていきましょう
1.大規模回路のプロトタイプが目的で
  低速動作で問題無い場合は複数のFPGAが搭載されたボード
2.FPGAを用いたシステム構築が目的で
  一定以上の性能が必要な場合は単一FPGAのボード
といった大まかな切り分けが必要です。

[1]http://www.eetimes.com/document.asp?doc_id=1317593
[2]http://www.mish.co.jp/picodigitizer_250_01.html
[3]『Multi-FPGA prototyping board issue: the FPGA I/O bottleneck』
[4]http://www.flexras.com/