メディア
特集
» 2006年02月01日 00時00分 公開

ハードウエアアクセラレータの実装――システム性能向上の鍵は、アーキテクチャの最適化 (1/3)

ハードウエアによるアルゴリズム処理を高速化する場合、ソフトウエアとハードウエアを組み合わせた並列処理を採用すれば単なるソフトウエアへの置き換えよりもはるかに高い性能を得られる。

[Ian Ferguson(米QuickLogic社),EDN]

 組み込みシステムに求められる処理能力は日増しに高まりつつある。今日、アルゴリズムを1つの高性能CPUでソフトウエア処理しようとする場合、設計者は2つの問題に直面する。その1つは、システムの消費電力およびコストの増加だ。携帯機器におけるバッテリの寿命という明らかな問題は別としても、消費電力の増加によって放熱および補助冷却装置への要件が厳しくなることは確かだ。2つ目は、CPUの処理が基本的なシステムの機能によって占有されてしまった場合、付加価値となる機能をシステムにどのように実装するかという問題である。外付け部品の追加が許されないシステムであれば、この問題はなおさら深刻だ。

 どのような選択肢があるだろうか?選択肢は大きく3つに分類できる。CPUの命令セットをアプリケーションに合わせてカスタマイズすることが第一の方法だ。アルゴリズムの処理効率は格段に上がる。コア開発ツールの有用性もここ数年で著しく向上している。しかしこの方法では、特定形式の実装しか行なえないために、時間の経過とともにレガシーソフトウエアが問題を起こしかねない。

 もし設計者が、アプリケーションを十分に定義された、ある程度独立したタスクに分割できれば、複数のCPUコアを使用することでアルゴリズムの処理効率を向上させることが可能であり、これが第二の方法だ。アプリケーション設計の規模がASICによる検証に値するものでないなら、他社製のCPUコア内蔵FPGAや、システム要件に一致するASSP(application specific standard product)プロセッサを使用することで実現できる。

 残る選択肢が、この原稿の本題である。それは、アルゴリズムの中でパフォーマンスを要する部分をハードウエアに組み込む方法である。実装は、ASIC、ストラクチャードASIC、ASSP、FPGAのいずれでも可能だ。この手法に関わるプロセスと課題を示すため、MPEG-2デコーダをプログラマブルSoC(system on chip)上のハードウエアとソフトウエアのハイブリッドモジュールとして開発した米QuickLogic社(http://www.quicklogic.com)のプロジェクトを見ていくことにする。ここで取り上げる内容はMPEG-2デコーダに特有のものだが、その過程やシステム設計上の注意点は幅広い組み込みシステムに当てはまる。

 最初のステップは、アルゴリズムの高速化に適した部分を特定することだ。まずマイクロプロセッサの時間を最も消費するコード領域を理解する必要がある。そのためにはコードをプロファイリングすればよい。プロファイリングコードの挿入によって処理速度が低下し、アプリケーションの性能に影響が出る可能性はあるが、最初の足掛かりとしてコード内の主なボトルネックを見つけることができる。最近のLinux OSではプロファイリングへの対応も始まっており、影響は大幅に軽減されるだろう。

 QuickLogic社のプロジェクトチームは、GNU-Cコンパイラを使用して、バイナリ形式の実行ファイルに特殊な統計測定コードを構築した。プロファイリングサポート機能を用いて構築されたプログラムからは、gmon.outファイルが生成される。このファイルにはプログラム実行中に収集される統計データが含まれている。gmon.outファイルを変換するgprofユーティリティは、各関数の実行回数と、その関数の処理時間の合計を示すテキストファイルを生成する。

 上位レベルの機能ごとに、MPEG-2デコード処理を行う個々の関数をグループ化すると、関数ごとの実行時間の割合(%)をまとめたヒストグラムが生成され、それらの合計がアルゴリズム全体に占める割合が示される(図1)。MPEG-2デコードアルゴリズムでは、上位4つの機能が実行時間の99%以上を占めていた。

       1|2|3 次のページへ

Copyright © ITmedia, Inc. All Rights Reserved.

RSSフィード

公式SNS

EDN 海外ネットワーク

All material on this site Copyright © ITmedia, Inc. All Rights Reserved.
This site contains articles under license from AspenCore LLC.