Loading...

IoTを支えるFPGAの実力とは

1985年、FPGAの原型となるデバイスが発表されました。以来、めざましい進歩を遂げてきたFPGAですが、昨今のビッグデータ解析やIoTの隆盛を受けて再び注目が高まっています。
FPGAとはどのようなものなのか、また、どのように活用されているのかを中心にご紹介します。

 

FPGAとは?

FPGA(Field Programmable Gate Array)は、ユーザーがプログラム可能な集積回路(LSI)のことです。プログラム可能な特徴を持つLSIは総称してPLDと呼ばれているため、FPGAもPLDのうちのひとつと捉えられています。
プログラム可能なLSIというと、CPUやGPUといったマイクロプロセッサと同じようなイメージを持ちます。特にGPUは最近ディープラーニングに活用できると注目されていますが、FPGAとは仕組みに違いがあります。
マイクロプロセッサは汎用的な回路を持ち、入力するデータ(ソフトウェア・プロブラム)でロジックを実装します。機能Aと機能Bを用意する場合、マイクロプロセッサの回路は変わらず、共通のハードウェアでデータを機能A用と機能B用に作成します。
それに対してFPGAは機能A用と機能B用にそれぞれ回路を変更します。つまり、機能ABを用意するためにハードウェア構成を変更するということになります。
<参考・参照元>
FPGA Watch(1):いま振り返るFPGA普及・発展の歴史 ~日本上陸からおよそ20年~ (1/2)|MONOist(モノイスト)

CPUと違うFPGAの特性

ソフトウェアを変更するマイクロプロセッサの方が、ハードウェアの構成を変更するFPGAより簡単に思えますが、FPGAの利点は専用の回路の作成により処理能力が高くなるということにあります。

  • 演算の高速化

ソフトウェアでは時間のかかる演算を一つにまとめて高速化することができます。

  • 複数のマイクロプロセッサを組み込める

ハードウェアをカスタマイズできるので、1つのFPGAで数百のマイクロプロセッサを組み込むことができます。

  • 効率のよい並列処理が可能

マイクロプロセッサでもマルチCPUにより並列化は可能ですが、CPUコア全体を搭載するため、使用しない部分も並列化しなければいけません。無駄な部分も並列化されるため、高速化の効果は低くなります。FPGAの場合は使う部分のみ並列化できるため、高速に処理ができます。

クラウドベンダーがFPGAを活用する理由とは

もともとFPGAは、液晶テレビや信号機などの大量の画像処理とデータ転送に多く活用されてきました。この大量データをさばいてリアルタイムに処理でき、省電力設計も可能という特性から、IoTエッジデバイスやディープラーニングの処理を行うサーバなどに活用されています。

その中でも最近の傾向として、大規模なコンピュータリソースを持つクラウドベンダーが、FPGAの採用を積極的に進めています。

  • Azure

Microsoftの研究機関Microsoft Researchでは、データセンターのサーバにFPGAを搭載する「Project Catapult」を実施しています。また、Azureにも自社で開発したFPGAを搭載しています。インフラ管理者向けの技術イベント「Ignite」の中でCEOであるサティア・ナデラ氏が行ったデモンストレーションでは、CPUでは20秒以上経過しても処理が終了しなかったロシア語の著書『戦争と平和』(トルストイ著)全1,440ページの英訳を、2.6秒という驚異的な速度で処理することに成功しています。

  • AWS

AWSではFPGAを利用する新しいインスタントタイプ「F1インスタンス」を発表しました。クラウドからFPGAが提供されることによって、ユーザーがFPGAに独自のロジックを実装し、Xilinx社のFPGAにパッケージングし、より高速化したワークロードを実行することができます。F1インスタンスはGPUが使用可能な「P2インスタンス」の上位モデルとなります。

その他、IBMやGoogleでもFPGAの実装と活用を進める予定です。
<参考・参照元>
ポストムーア時代に注目–AWS、MS、Google、IBM、クラウド各社の「FPGA」事情 |ZDNet Japan

FPGAは価格も高く、ハードウェア変更ということでソフトウェア技術者には敷居が高かったのですが、年々価格も減少し、開発も容易になりつつあります。クラウドサービスで利用できることでより活用が促進されることでしょう。