マルチプロセッサで実現したH.264ビデオ・デコーダ ――コンフィギャラブル・プロセッサのユーザ定義命令とオンチップ・バスを活用
● ワークロードの割り当てが重要
マルチプロセッサ・システムを設計する際に重要なポイントは,
- ワークロード(作業負荷)の適切な割り当て
- データ構造,とくに共有データの取り扱い
- モジュール間同期
があります.
プロセッサが固定される場合,ワークロードの割り当ては,ことのほか重要かつ複雑な問題になります.処理性能が1命令分だけでも不足すると,システムとして動作しなくなるためです.しかし,当初の見積もりで機能分割し(アーキテクチャ設計),その後実際のソフトウェア開発に入ってプロセッサの性能不足が見つかる,という開発プロジェクトが後を絶ちません.ソフトウェアのマイクロ・レベルの最適化(アセンブリ言語による直接的な設計にまで至ることもある),ツール・レベルの最適化など,さまざまなアプローチを経た末,アーキテクチャの変更や仕様変更に至るケースも見受けられます.
筆者らは,幸いにしてコンフィギャラブル・プロセッサをベースに設計を進めたので,こうした問題を回避することができました.米国Tensilica社のXtensaプロセッサは,ユーザが構成(例えばキャッシュ・メモリの容量など)を変更したり,ユーザ拡張命令を追加できるプロセッサです(コラム「Xtensaプロセッサによる開発」を参照).