先進運転支援システム(ADAS)、多軸加工機のモーター制御ユニットからデータセンターのサーバーまで、マイクロプロセッサーをベースにして開発した電子システムはたくさんある。ところが最近、中核デバイスをマイコンや汎用プロセッサーからFPGA(Field Programmable Gate Array)に置き換えて電子システムを開発する例が、さまざまな分野で目立ち始めた。中には、FPGAベンダーさえ想定外の用途で使われる例さえある。これは、一部の先駆的な企業だけの動きではない。世界の名だたる企業が、製品開発競争に勝ち抜くために競うように進める、大きな潮流である。エンジニアは、電子システム開発の大前提が変わるこの動きに、すぐにでも備える必要がある。
組み込みシステムから大規模なITシステムまで、電子システムを開発するエンジニアの仕事が大きく変わろうとしている。
これまでの電子システムの開発では、機器の仕様にあったマイコンや汎用マイクロプロセッサーを選択し、その性能を生かし切るソフトをいかに開発するかが重要だった。これが、システムの中核に据えるデバイスがFPGAへと変わり、その潜在能力をいかに引き出すかに主眼を置いた開発が求められるようになる。
FPGAは、プログラムを書き込むことでハードを柔軟、迅速、低コストで実現できる他にはない特徴を持ったデバイスである。ASICやASSPのような専用LSIの高性能、低消費電力と、マイクロプロセッサーと同等の柔軟性を兼ね備える理想的なデバイスとして、システム開発の新しい潮流を作り出している。
電子システムの中核にFPGAを置く動きは、産業機器、車載機器、ネットワーク機器など、広範囲な分野で同時多発的に起こっている(図1)。もはやこれらの機器開発では、FPGAの利用なくして機能や性能の向上は考えられない。
さらに、組み込みシステムのみならず、クラウド・コンピューティングを支えるデータセンターのサーバーでも、FPGAを中核に置いたシステム開発が始まった。一般人の目にはなかなか最先端の技術開発動向が見えにくい分野だが、確実に大きな地殻変動が起きている。既に、マイクロソフト社などが、FPGAベースのデータセンター向けサーバーを開発し、検索の高速化などを狙って配備する予定を明らかにしている。そして驚いたことに、FPGA向けのプログラムは、サーバー向けソフトの開発と同様に、サーバーのユーザー企業のエンジニアが開発するという。SNSプロバイダーなども、競うようにこの動きに追随し始めている。
なぜ多くの電子システムの開発で、FPGAが主役に踊り出ることになったのか。大きく2つの理由がある。
1つは、マイクロプロセッサーの高性能化が頭打ちになり、ニーズに応えられなくなっていることだ。動作周波数は、発熱や消費電力の増大が原因となって、特別な冷却装置を付けない限り3GHz台で頭打ちになった。かつては、半導体の微細加工技術の世代が進みさえすれば、問題なく動作周波数を向上できたが、現時点で解決策が見えない状態に陥っている。
こうした高性能化の袋小路は、機器メーカーやサービス・プロバイダーにとって、深刻な事態だ。例えば自動運転の実現を目指す動きが本格化してきた自動車の分野。今後、より高精細な画像データや多種多様なセンサーから集めたデータを基に、周辺環境をリアルタイムで認識する技術を進化させていく。このため、性能を桁違いに高めた処理デバイスを求めている。また、ビッグデータの時代を前にしたクラウドサービスを提供するプロバイダーも、競合他社より高性能なサーバーが必要になる。
もう1つは、一度開発したソフトの資産性が薄れていることだ。これは、高性能化を実現するための手段として、動作周波数の向上に代わってマルチコア化が進んできたことに起因している。マルチコアを効果的に活用するためには、コアの構成に合わせてソフト全体の構造を最適化する必要がある。過去の資産の上に、新しい機能を重ねて新しいシステムを作る従来のシステム開発手法が継続できなくなってきた。マルチコア化によって、機能のソフト化にこだわる理由が希薄になってきている側面がある。
電子システムの中核にFPGAを置くことによって、マイコンやマイクロプロセッサーが抱えていた問題が解決し、それらでは実現できなかった数々の利点が生まれる。以下にFPGA採用の利点を4つにまとめる。
1番目の利点は、ソフト処理のハード化で圧倒的な高性能と低消費電力を実現できることだ。マイクロプロセッサーでは、ソフトのコードを順に読み出し、命令を解釈し、持っている演算器のリソースに合わせて実行する順番をスケジューリングし、同じ演算器を使い回しながら処理を進める。こうした一連の作業が、性能向上を阻み、消費電力を増大させるオーバーヘッドとなる。これに対しFPGAでは、複雑な処理を一気に実行できる専用回路を作り込むことができる。特に、複雑な数値演算アルゴリズムを実行するときに大きな効果を発揮する。
また、必要に応じた並列化が可能であることも高性能化に大いに寄与する。アルテラ社のデータでは、マイクロプロセッサーとFPGAで電力当たりの性能を比較した場合、検索処理では約10倍、画像のスケーリング処理では約9倍、複雑な金融モデルの解析では実に約25倍もFPGAの方が高いというデータを出している(図2)。
2番目の利点は、技術標準の変化に迅速に追随できることだ。画像処理、グラフィックス処理や通信プロトコル処理など、国際標準や業界標準の技術規格に準拠すべき処理は数多くある。組み込みシステムでは、こうした処理を実行する専用回路を搭載したマイコンやASSPを利用することが多い。しかし、標準が決まったばかりの技術や特殊用途の仕様に対応するデバイスを、タイムリーに利用することは困難である。FPGAならば、こうした専用回路さえも柔軟に仕様の変更や更新ができる。
3番目の利点は、過不足のない機能集積で、低コスト化が可能になることだ。マイコンに集積されるコアや周辺回路は、半導体メーカーの商品企画によって決まる。このためユーザー側がシステムを設計するとき、どうしても過不足が生じる。足りない機能は別チップで補われるため、高性能、低電力、低コスト、高信頼性に向けて、1チップ化を進めようにも限界がある。これに対しFPGAは、チップの規模が許す限り、必要な機能を必要な分だけ集積できる。
FPGAは、チップ内にマイクロプロセッサー・コアを搭載することもできる。アルテラが開発した「NiosII」のようなFPGAへの搭載に最適化したソフト・コアもあるが、近年では、業界標準であるARMベースのプロセッサー・コアをハードIPで搭載した「アルテラSoC」のような製品も登場している。このため、ソフトで実現する機能もハードで実現する機能も、同じチップの中で最適な形で柔軟に使い分けることができる。最近では、これまで別チップで用意する必要があったプログラム格納用のフラッシュメモリーをチップ内に搭載した、「MAX 10 FPGA」のような、より集積性を向上させた製品も登場している(図3)。
4番目の利点は、チップの製造中止、いわゆる"EOL(end of life)"の不安とは無縁なことである。マイコンやASSPは、比較的短い期間で、製造中止(ディスコン)になってしまうことがある。近年では、半導体メーカーの合併・吸収・廃業などによって、使っていたチップが、突然調達できなくなる可能性もある。これに対し、FPGAはプログラムさえあれば、実現したい機能のチップを必ず入手できる。しかもFPGA自体の供給期間も長い。アルテラによると、同社のFPGAは、市場投入してから平均15年間以上、供給し続けている実績があるという。
クラウドシステムの開発に関わるエンジニアはもとより、組み込みシステムのエンジニアも、仕事の内容から陣容を見れば、C言語などソフト開発言語を操ってコード記述するソフト設計者が多数派であろう。ところが、これまでFPGAに書き込むプログラムを開発するためには、「VHDL」などハードウェア記述言語を使って電子回路の機能を記述する必要があった。このためFPGAを中心とした組み込みシステムの開発をしたくても、とても対応できないと考える人が多いだろう。しかし、その心配は杞憂になりつつある。
まず、「OpenCL」で記述したコードをFPGAに書き込めるプログラムに変換するコンパイラが実用化している(図4)。OpenCLは、Khronos Groupが標準化を進めている、GPUとマイクロプロセッサーを併用するヘテロジニアスなマルチコア向けの並列記述フレームワークである。プログラムはC言語で記述するため、ソフト・エンジニアにとってなじみやすい。アルテラは、自社製FPGA向けのOpenCL対応開発環境「Altera SDK for OpenCL」をリリース済みだ。
また、アルゴリズム開発者の中には、マスワークス社の数値解析ソフトウェア「MATLAB/Simulink」上で検討を進めている人も多いだろう。アルテラは、MATLAB/Simulinkで開発したアルゴリズムを直接VHDLに変換できる「DSP Builder アドバンスト・ブロックセット」を提供している。
電子システムの中核で、FPGAが当たり前のように活用されるこれからの時代、システム開発者にはどのような要求されるのだろうか。
まず、システムに組み込む機能をソフトで実現すべきなのか、それともハードで実現すべきなのか、的確に見抜く眼が求められる。こうしたスキルは、これまでも重要だった。しかし、システム開発自体がソフト開発に偏重していた面があったため、実際には重要性が薄れていた面があった。GUI(graphical user interface)のような操作に応じた複雑な処理はソフト処理が向いている。算術演算、論理演算、比較、分岐などを高速で処理する必要があるアルゴリズムの実行や並列実行が可能な処理はハードの方が向いている。
また、ハード処理に向いたアルゴリズム開発も重要性が高まる。これまではアルゴリズムをシミュレーション動作させたソフトをいかに限られたプロセッサー能力で高速動作させるかが重要であった。しかしながら、FPGAの存在感が増すことで自由で柔軟性のあるハード処理による高速アルゴリズムの開発が必要になった。多くのソフト・エンジニアが、OpenCLを使用したFPGAによる高速化の恩恵を受けることができる。ハード設計者にとっても自由な独自ハードを構成してアルゴリズムを実現できるFPGAはますます好都合である。
電子システムの開発において、FPGAの利用は、もはや差異化要因ではなく、エンジニアの必須科目になりつつある。
Copyright © ITmedia, Inc. All Rights Reserved.
提供:日本アルテラ株式会社
アイティメディア営業企画/制作:MONOist 編集部/掲載内容有効期限:2015年1月31日