高性能なアクセラレータハードウェアを開発しても、実はアプリケーションからそれを利用するアーキテクチャがボトルネックとなって、ハードウェアの性能を発揮できないケースがほとんどです。弊社ではこのような状況の開発をお手伝いできます。
近年サーバー用途では、物理マシン上で直接アプリケーションを実行するケースは少なくなっており、仮想マシンもしくはコンテナでの実行が基本となっています。そのためFPGAも仮想マシンやコンテナから利用することを想定しなくてはなりません。 複数の仮想マシンから利用する場合、通常は右図に示すように、KVMやVirutalBoxなどを始めとするHypervisorがFPGAの排他利用を調停します。しかしこの方法だと、Hypervisorのソフトウェア処理がボトルネックとなってしまいます。
PCI expressの機能である、SR-IOV(Single Root-IO Virtualization) の手法を使うと、異なるVMのドライバから直接デバイスを制御が可能となります。その上でFPGA側は、分離した制御レジスタやコマンドキューを用意するなど対応することで、Hypervisorがボトルネックにならず、物理マシンからの利用時と同等の性能を発揮できます。 弊社では、SR-IOVで性能を発揮するためのロジック開発や、DMAとIOMMUの使いこなしを始めとする制御ドライバ開発のノウハウを生かして、仮想マシン対応のご支援をいたします。