マルチプロセッサで実現したH.264ビデオ・デコーダ ――コンフィギャラブル・プロセッサのユーザ定義命令とオンチップ・バスを活用

東原朋成

tag: 組み込み

技術解説 2006年8月31日

● DMAでデータを移動する

 RISCプロセッサの命令語は,レジスタ上のデータのみを処理します.したがって,メモリ上のデータはロード,ストア命令でレジスタとやりとりする必要があります.また,マルチプロセッサでは,プロセッサ間でデータのやりとりが必要になります.

 設計したデコーダでは,大ざっぱに図13に示すようなデータのやりとりが必要になります.

zu13_01.gif
図13 デコード処理におけるデータ移動
膨大なデータをプロセッサ-メモリ間で移動,または二つのプロセッサで共有する必要がある.DMAを用いることで,外部メモリを介さずにデータ移動が行える.また演算を並列化できる.

 プロセッサ間でデータを共有するとなると,キャッシュ・データの不一致の問題が生じます.それを避けるいちばん手っ取り早い手法は,共有データについてキャッシュを介さないことです.ただし,この場合,プロセッサの性能が大きく低下します(すべてのロードがキャッシュ・ミスということになる).また,共有データを適切に同期させなくてはなりません.こうしたことをソフトウェアで処理すると,大きなオーバヘッドにつながります.デコード・フローにはまったく現れないデータの移動になるためです.そこで筆者らは,プロセッサ間,プロセッサとメイン・メモリの間のデータのやりとりをDMAで実行することにしました.

 Xtensaは,データ・メモリや命令メモリを外部DMAが直接アクセスできるようなプロセッサ・インターフェースを備えています.デコード・フロー上では複数のデータがやりとりされますから,独立した複数のDMAチャネルを用意しました.個々のDMAチャネルはソフトウェアで完全に制御できます.DMAアクセスのオーバヘッドを極力最適化できるように,DMAは開始・終了をソフトウェア・ポーリング(DMAステータスをリードする),または割り込みの二つの手法で知ることができるようになっています.

 ソフトウェアでマルチバッファを構成し,データ処理とDMAによるデータ移動を並列化することで,データ移動のオーバヘッドを隠ぺいしています.

組み込みキャッチアップ

お知らせ 一覧を見る

電子書籍の最新刊! FPGAマガジン No.12『ARMコアFPGA×Linux初体験』好評発売中

FPGAマガジン No.11『性能UP! アルゴリズム×手仕上げHDL』好評発売中! PDF版もあります

PICK UP用語

EV(電気自動車)

関連記事

EnOcean

関連記事

Android

関連記事

ニュース 一覧を見る
Tech Villageブログ

渡辺のぼるのロボコン・プロモータ日記

2年ぶりのブログ更新w

2016年10月 9日

Hamana Project

Hamana-8最終打ち上げ報告(その2)

2012年6月26日