マルチプロセッサで実現したH.264ビデオ・デコーダ ――コンフィギャラブル・プロセッサのユーザ定義命令とオンチップ・バスを活用
2.H.264ビデオ・デコーダ・システムの設計
マルチプロセッサ構成のビデオ・デコーダLSIの開発事例を紹介します.このデコーダ・システムはH.264のみならず,MPEG-2,MPEG-4,VC-1といったほかの規格もサポートします.今回はH.264に絞って解説しますが,H.264設計時に定義したユーザ拡張命令は,ほかの規格もサポートできるように設計されています.機能的に固定したハードウェアではなく,ゲートの有効利用ができているわけです.また,ソフトウェア・ベースの設計なので仕様の追加や変更に柔軟に対応します.H.264はビデオ圧縮の新しい規格です.ここでは規格の概要については触れませんので,参考文献(3)を参照してください.
● ソフトウェア・デコードを目ざす
図7に伸張(デコード)の処理フローを示します.ハード・ワイヤード論理のブロックを用いない完全ソフトウェア・デコードの設計を目ざしました.H.264の伸張フローは,従来の規格(MPEG-2など)と比較して複雑になっています.1プロセッサによる設計となると,非常に高い性能(Pentium級)が必要になります.組み込み向けLSIにおいては,これまで多くのハードウェア・ブロックを用いるハードウェア・ソフトウェア複合設計が主流です.ソフトウェアは制御のみをつかさどり,データ処理の大半はハードウェアで行うといったケースが多く見られました.
今回筆者らが設計したデコーダは,データの出し入れはソフトウェア制御されたハードウェア(DMA)で実行するが,データ処理はすべてソフトウェアで実行するというシステムです.ハード・ワイヤード論理を極力削減したので,
- ハードウェアの設計検証は最小
- ゲートの再利用が可能(固定した機能のハードウェア・モジュールが最小)
- 仕様変更,仕様追加に柔軟に対応できる
- 組み込んで検証を免れたハードウェアのバグの出現確率が低下する
などの利点があります.
図7 H.264デコードの処理フロー
ParserとPixelの二つのプロセッサ間のデータ移動ではDMAを実行する.同期は共有データのポーリングや割り込みなどで実現.