3/16/2016デバイスの小型化、軽量化、スマート化が進むなか、組込みデバイスによっては、ハードリアルタイムの速度で高性能計算を実行する必要があります。小型軽量のデバイスが膨大な量のデータを設定されたアルゴリズムで処理するケースとしては、周囲の環境を検知して自動駐車を行う自動車、フライトコントロールシステムを実行する無人飛行ドローン、厳格な制御システムを搭載したロボットアームだけでなく、携帯端末での検索アルゴリズムの実行、地図情報の計算、金融データの複雑な演算処理なども挙げられます。ウインドリバーではアルテラ社と協力して、コンフィギュレーション可能なアルゴリズムハードウェアアクセラレーションを、VxWorksリアルタイムOS(RTOS)で実現しています。SoCに搭載されているFPGAは、複数のハードウェア並列計算処理にまたがってデータ処理アルゴリズムを実行するように構成できます。リアルタイム要件を満たすように計算処理を高速化したり、処理をメインプロセッサからオフロードするメリットがあります。CPUを解放して、他のリアルタイムアプリケーションを実行させることが可能です。SoC開発キットで、最新のVxWorksを試してみました。アルテラには、OpenCLエンジンとしてFPGAコンフィギュレーションセットアップを支給してもらいました。大量の計算を要するアルゴリズムには、さまざまな倍率で計算するマンデルブロ集合を用いました。SoC開発キットのSDi出力から結果を表示します。860画素の表示領域上に図形の画素を描画します。ハードウェアモードでは、計算はFPGAで実行され、結果はCPUに戻されて表示されます。ソフトウェアモードでは、CPUが計算を実行します。2つの動作モードでは、歴然とした違いが見られます。結果はこちらの動画で確認できます。比較しやすいように、ハードウェア計算モードとソフトウェア計算モードを簡単に切り替えられる、グラフィカルユーザインタフェースを追加しました。VxWorksでは、人間とのグラフィカルな対話を必要とするデバイス向けのユーザインタフェース機能として、ボタンやスクロールバーのようなグラフィカルなウィジェットを用意しています。完成したインタフェースは、上記の画像でご覧いただけます。ハードウェアモードでは、拡大倍率5万倍で、デバイスは1秒当たり約3.3フレームを描画できます。ソフトウェアモードでは、1秒当たり0.10フレームに落ちます。ハードウェアアクセラレーションによって、計算速度が20~30倍向上します。