マルチプロセッサで実現したH.264ビデオ・デコーダ ――コンフィギャラブル・プロセッサのユーザ定義命令とオンチップ・バスを活用
ゲートを再利用でき,かつ仕様の変更や追加に柔軟に対応できることは,ソフトウェアの利点です.ソフトウェア処理の弱点としては,ソフトウェアの並列度とハードウェアの並列度の決定的な違い,命令メモリの必要性などがあります.ハードウェアは究極のパラレル・マシンであるため,潜在的バグの検証の難しさがあります.また,機能的に固定しているのでゲートを有効利用しているとは言えず,命令メモリを必要とするソフトウェアと比較して得失の比較は難しくなります.
● ヘテロジニアスな機能分割型を採用
図8が,筆者らの開発したデコーダ・システムです.二つのプロセッサ・コアを用いたヘテロジニアスなマルチプロセッサ・システムになっています.
- Parser:デコード・フローの前半部を担当.また,データの出し入れをつかさどるDMAエンジンの制御を担当.
- Pixel:デコード・フローの後半部を担当.後半部は制御系の処理は少なく,ピクセル・レベルの演算が中心.
- DMA:データの出し入れを担当.
- PIF,TIEポート,TIEキュー:プロセッサ,DMAを接続するネットワーク.PIFはプロセッサ・インターフェース.PIFネットワークのほかにプロセッサ間を直接TIEポートでインターフェースし,ネットワーク遅延の影響を受けることなく割り込み処理などを伝える.
設計したデコーダは,機能分割型のアプローチをとりました.H.264規格を分析すると,MPEG-2とはパケット(構文上の区切り)がずいぶん異なることがわかります.MPEG-2はスライス・レイヤからくる制限がありました.つまり1ピクチャは複数のスライスで構成され,スライス・レイヤ・レベルでデータ並列処理が可能でした.しかし,H.264にはこうした制限がなく,きれいなデータ・レベルの並列処理ポイントを発見できませんでした.そこで筆者らは,デコード・フローを機能分割することにしたのです.
図8 設計したH.264ビデオ・デコーダ
機能分割型ヘテロジニアス構成である.一つのコンフィギャラブル・プロセッサを異なるコンフィグレーションで使用しているので,共通のツールやフローで開発できた.