• 検索結果がありません。

H.264/AVCエンコーダのマルチコアプロセッサにおける階層的並列処理

N/A
N/A
Protected

Academic year: 2021

シェア "H.264/AVCエンコーダのマルチコアプロセッサにおける階層的並列処理"

Copied!
6
0
0

読み込み中.... (全文を見る)

全文

(1)Vol.2010-ARC-187 No.22 Vol.2010-EMB-15 No.22 2010/1/29. 情報処理学会研究報告 IPSJ SIG Technical Report. 1. はじめに. H.264/AVC エンコーダのマルチコア プロセッサにおける階層的並列処理 見神広紀 †. 宮本孝道 †. 木村啓二 †. HDTV やゲーム機,インターネットでの動画サービスの普及により大容量の動画を 効率よく圧縮する技術の重要性が高まっている. 動画圧縮は人間の感覚から冗長と考えられる情報の削減,および空間的・時間的な 共通部分の省略によって行う.動画圧縮方式であるH.264/AVC[ 1 ]は空間的・時間的な 冗長性を取り除く多くの手法を適用し,従来の圧縮方式を上回る高い圧縮効率を達成 している. その一方で,H.264/AVC は非常に高い計算能力を要求するという問題がある.特に リアルタイム処理を行う場合,このような性質は大きな障害となる.動画圧縮を高品 質で行うには,マルチコアプロセッサや特定用途向けのデバイスなどの計算能力の高 いプラットフォームが必要である. 現在,高速化には DSP や専用デバイスなどのハードウェアによる手法が主に用いら れている.しかしこれらのハードウェアの開発には高度な技術が必要であり,パラメ ータ設定に柔軟性に欠ける.さらに,サポートが求められる動画圧縮フォーマットの 数も増加する一途であることを考慮すると,ソフトウェアによる手法を用い汎用プロ セッサ上で並列処理を行うことで生産性及び機器構成自由度向上に寄与できると考え られる. H.264/AVCエンコーダのソフトウェアによる並列性に関しては,Yen-Kuang Chenら はHyper-threadingにおいてスライスレイヤーとフレームレイヤーを組み合わせた並列 処理を提案している[ 2 ]が,この手法では遅延が大きくデータがストリームで流れてく る場合やリアルタイム処理には不向きである.さらに,スライスレイヤーの並列性は 符号化効率とのトレードオフであるため複数階層を用いても大きな並列性を引き出し にくい.またTom R. Jacobsらはスライスレイヤーでの並列処理を提案している[ 3 ]が, それと同時にビットレートが 20%程度増加するといった符号化効率の低下を指摘して いる. 本稿では,動画圧縮という観点から並列処理時の符号化効率の維持を重視し,並列 処理による符号化効率の低下が理論上ゼロであるフレームレイヤーとマクロブロック レイヤーに注目した.さらに今後幅広く利用可能になると予測されるメニーコアでの 適用を目指し,できるだけ多くの並列性を抽出したい.従って本稿ではこの 2 レイヤ ーを組み合わせて並列処理を行う“H.264/AVC エンコーダのフレームレイヤーとマク ロブロックレイヤーでの階層的並列処理”を提案する.本手法により,符号化効率を 維持したままコア数の増加とともに性能向上が可能であることを確認した.. 笠原博徳 †. 本稿ではビデオコーデックである H.264/AVC エンコーダの高速化手法としてフ レームおよびマクロブロックでの階層的な並列処理を提案する.H.264/AVC エン コーダの一実装である x264 上にマクロブロックでの並列処理機能を実装し,64 コアのマルチコアシステム上での処理性能の評価を行った.その結果,2 コア集 積のマルチコアである Intel Itanium2 (Montvale)を 32 基搭載した 64 コア構成の ccNUMA サーバである SGI Altix450 において,フレームでの並列処理のみの場合 が 6.3 倍であったのに対しフレームおよびマクロブロックの 2 階層で行った場合 は 10.6 倍の性能向上が得られた.. Hierarchical Parallel Processing of H.264/AVC Encoder on an Multicore Processor Hiroki Mikami†. Takamichi Miyamoto† and Hironori Kasahara†. Keiji Kimura†. This paper proposes hierarchical parallel processing method of H.264/AVC encoder. Data structures and data dependencies are analyzed to exploit multi-level parallelization as frame-level and macroblock-level. We implemented macroblock-level parallel processing on the x264, an open source H.264/AVC encoder. As a result, on SGI Altix450 (Intel Itanium2 (Montvale), 64 cores ccNUMA server), speed up is saturated by using 8 cores when execute encoder in only frame-level parallelization. However, scalable speedup is attained when execute encoder in frame and macroblock multi-level parallelization.. †. 1. 早稲田大学 基幹理工学部 情報理工学科 Dept. of Computer Science and Engineering, Waseda University. ⓒ2010 Information Processing Society of Japan.

(2) Vol.2010-ARC-187 No.22 Vol.2010-EMB-15 No.22 2010/1/29. 情報処理学会研究報告 IPSJ SIG Technical Report. H.264/AVC エンコードはこれらの処理がスライスレイヤーにおいて行われる.各マ クロブロック単位で画像フレームの左上から右下へと順番に予測を行い,スライス単 位で符号化される.. 2. H.264/AVC エンコーダの並列性 本章では,まず H.264/AVC エンコーダのデータ構造およびアルゴリズムについて述 べる.次に,よりよい高速化を行うための並列性の抽出手法および今回採用した手法 の特徴について述べる.. シーケンス層. シーケンスヘッダ. GOP. シーケンスヘッダ. GOP. 2.1 H.264/AVC エンコードアルゴリズム. H.264/AVC ビデオのデータ構造 は図 1 に示すように階層的な構造をしている. ビデオシーケンスはビデオデータ全体である.ビデオシーケンスはシーケンスヘッ ダとグループオブピクチャ(GOP)で構成される.GOP はいくつかのピクチャをグル ーピングしてしたものである.ピクチャは画像フレーム 1 枚を指し,その内部はいく つかのスライスからなっている.スライスは 1 ピクチャのうち任意個のマクロブロッ クの集合であり,H.264/AVC ではスライスがエンコードの基本単位となる.マクロブ ロックは,16×16 ピクセルブロックのルミナンスブロックと 2 つの 8×8 ピクセルブ ロックのクロミナンスブロックから構成されており, 予測の単位として用いられる. 最後に最も小さいのが 8×8 および 4×4 ピクセルブロックのブロックレイヤーであり, DCT 処理の単位として用いられる. 次に,H.264/AVC エンコードの処理内容について説明する.H.264/AVC エンコード は,図 2 に示すように大きく分けて以下の 6 つのステージからなる. 動きベクトル検出 隣接するブロックまたは任意の 2 枚のピクチャから動きベクトルの探索を行う. 動き補償 ブロックレベルで適切なピクセルサイズを選択しつつ,すでに符号化したフレーム から動きを予測する. DCT/量子化 符号化対象ピクチャに対してブロックレベルで離散コサイン変換を適用し,係数行 列の量子化を行う.H.264/AVC では 16bit 整数の精度で変換を行う. エントロピー符号化 コンテキスト適応型可変長符号化(CAVLC)またはコンテキスト適用型算術符号化 (CABAC)を行う. 逆量子化/逆 DCT 後続のエンコーディングで参照するピクチャを生成するために,量子化適用後のピ クチャに対して逆量子化および逆変換を適用する. デブロッキング・フィルタ 動き補償予測による予測誤差からブロックノイズの影響を除くために,ブロック境 界の平滑化を行い,バッファに格納する.. GOP層. ピクチャ. ピクチャ. ピクチャ. ピクチャ. ピクチャ層. スライス. スライス. スライス. スライス. マクロ ブロック. スライス層. ブロック. マクロブロック層. ブロック層. 画面内予測. 動きベクトル検出 図 2. 2. ブロック. ブロック. マクロ ブロック. ブロック. H.264/AVC ビデオのデータ構造. 動き補償. P/B Picture. ブロック. マクロ ブロック. DCT符号化データ 図 1. I Picture. マクロ ブロック. DCT/量子化. エントロピー符号化. 逆量子化/逆DCT デブロッキング・ フィルタ. ビットストリーム 出力. H.264/AVC エンコーダの構成(概略) ⓒ2010 Information Processing Society of Japan.

(3) Vol.2010-ARC-187 No.22 Vol.2010-EMB-15 No.22 2010/1/29. 情報処理学会研究報告 IPSJ SIG Technical Report 2.2 抽出可能な並列性. ムやマクロブロックで行うとよいが,並列処理性能が制限される. 本稿では、符号化効率を維持しつつ並列性を最大限利用するという目的で、フレー ムレイヤーとマクロブロックレイヤーの階層的な並列処理を行う。. H.264/AVC エンコードから並列性を抽出するために,データ構造に注目する. H.264/AVC ビデオデータは前節で述べたように階層的な構造をしており,各レイヤー のデータはランダムアクセス性の確保やエラー耐性の補償などのためにデータ同士で その独立性が確保されている部分がある.ここでは,各レイヤーでのデータの独立性 に注目し,並列性の抽出を行なう. GOP レイヤーでは,GOP 単位でのランダムアクセス性の確保のために各 GOP 間に はデータ依存がない.このため GOP 単位で効率のよい並列処理を行える.しかし GOP は複数のピクチャで構成されるため並列処理に伴う遅延が大きく,GOP の切れ目を符 号化前に判断する必要があるため符号化効率も低下する. ピクチャレイヤーでは,時間冗長度削減によるデータ圧縮のために各ピクチャは参 照関係を持つことによるデータ依存関係がある.この時間冗長度削減方法は 3 つのタ イプが定義されており,それぞれ I ピクチャ,P ピクチャ,B ピクチャと呼ばれる.I ピ クチャは,他のピクチャの情報を使用せず自身のピクチャの情報のみで符号化を行な う.P ピクチャは,1 枚の I ピクチャまたは P ピクチャを参照ピクチャとし,動き予 測で符号化される.B ピクチャは 2 枚の I ピクチャまたは P ピクチャを参照ピクチャ として予測符号化される. I/P フレームは他のフレームから参照されるが,B フレーム は基本的に参照されないため,図 3 で示すように P フレームのエンコードが完了すれ ば後続の P/B フレームを並列処理することができる.本手法ではフレームを複数枚プ ールしておく必要があるため並列処理による遅延が生ずる.しかし,符号化効率は変 化しない. スライスレイヤーでは,エラー補償のために各スライス間は独立して符号化される. このためスライス単位で効率のよい並列処理を行える.さらに並列処理による遅延も ゼロである.しかし空間冗長度削減のための探索空間が狭くなるため,スライス数を 増やすに従って符号化効率が大幅に低下する. マクロブロックレイヤーでは,図 4 のように左上・上・左の隣接マクロブロックの 情報を元に動きベクトルの計算を行なうことによるデータ依存がある.この依存関係 からマクロブロック単位で並列処理を行なうためには図 5 のようなwave-front手法を 用いる必要がある[ 4 ].図 5 においてマクロブロック 1 行を同一プロセッサで処理する. 従って並列処理効率はよくないが,並列処理に伴う遅延や符号化効率の低下は生じな い. 以上のように,H.264/AVC エンコーダを並列処理する際にはトレードオフが存在す る.並列処理性能を重視する場合は,GOP またはスライスのレイヤーで行うとよいが, それにより符号化効率の低下が生じる.遅延を最小に押さえたい場合は,スライスや マクロブロックのレイヤーでおこなうのがよいが,前者には符号化効率低下,後者に は並列処理性能があがらないといった問題がある.符号化効率を重視する際はフレー. 0(I). 3(P). 図 3. 1,0. 図 5 3. 9(P). 12(P). 1(B). 4(B). 7(B). 2(B). 5(B). 8(B). フレームレイヤーでの並列処理イメージ. 図 4. 0,0. 6(P). MB D. MB B. MB C. MB A. Current MB. 近接マクロブロックの参照関係. 2,0. 3,0. 4,0. 5,0. 6,0. 7,0. 8,0. 9,0. 10,0. 0,1. 1,1. 2,1. 3,1. 4,1. 5,1. 6,1. 7,1. 8,1. 9,1. 10,1. 0,2. 1,2. 2,2. 3,2. 4,2. 5,2. 6,2. 7,2. 8,2. 9,2. 10,2. 0,3. 1,3. 2,3. 3,3. 4,3. 5,3. 6,3. 7,3. 8,3. 9,3. 10,3. 0,4. 1,4. 2,4. 3,4. 4,4. 5,4. 7,4. 7,4. 8,4. 9,4. 10,4. 0,5. 1,5. 2,5. 3,5. 4,5. 5,5. 6,5. 7,5. 8,5. 9,5. 10 ,5. 0,6. 1,6. 2,6. 3,6. 4,6. 5,6. 6,6. 7,6. 8,6. 9,6. 10 ,6. 0,7. 1,7. 2,7. 3,7. 4,7. 5,7. 6,7. 7,7. 8,7. 9,7. 10 ,7. 0,8. 1,8. 2,8. 3,8. 4,8. 5,8. 6,8. 7,8. 8,8. 9,8. 10,8. wave-front 手法を用いたマクロブロックレイヤーでの並列処理イメージ ⓒ2010 Information Processing Society of Japan.

(4) Vol.2010-ARC-187 No.22 Vol.2010-EMB-15 No.22 2010/1/29. 情報処理学会研究報告 IPSJ SIG Technical Report 2.3 複数階層での並列処理の問題点. IDLE. PE0で処理. 複数階層で並列処理を行う際は,限られたリソースを適切に割り振ることが重要で ある.本節ではマクロブロックレイヤーでの並列処理に注目し,プロセッサの割り当 てについて述べる. マクロブロックレイヤーでは wave-front 手法を用いて並列処理を行うために,以下 のような問題点がある. (1) 同時実行可能なマクロブロック数に限界がある (2) プロセッサ間の同期が多くデータ転送も伴うためオーバーヘッドが大きい このため,潤沢なリソースがある環境でも単純に全てのプロセッサに処理を割り当 てるのではなく適切な数だけ割り当てないと,効率のよい並列処理は実現できない. そこで,まず理論値による予測を行う.. IDLE. PE1で処理. IDLE. IDLE. PE2で処理. 図6. ... .... IDLE. IDLE. PE3で処理. IDLE. プロセッサが過剰な場合のマクロブロックレイヤー並列処理例. 14 12. 1 ピクチャにおける横のマクロブロック数を wmb ,縦のマクロブロック数を hmb とす 10 速度向上率(理論値). ると,同期のコストが限りなく小さい場合でもマクロブロックレイヤーで必要なプロ セッサ数は最大で. ⎛ ⎞ ⎛w ⎞ min⎜⎜ ceil ⎜ mb ⎟, hmb ⎟⎟ ⎝ 2 ⎠ ⎝ ⎠ である.図 6 に wmb = 6 , hmb = 8 の場合を 4 プロセッサで処理した例を挙げる.図 6. 8 6 4. が示すように,必要以上のプロセッサを割り当ててもプロセッサのアイドル時間が増 えるだけでありエンコード速度の高速化に寄与しない. また,理想的な場合においてマクロブロックレイヤーでの並列処理性能の最大は. 2 0. wmb + 2( hwb − 1) wmb hmb. 0. 図7. となる.図 7 に理想的な環境下で SD (640×480)の動画をマクロブロックレイヤーで並 列化したときの並列処理性能を示す.プロセッサ数が少ない場合は効率的に並列処理 されているのに対し,プロセッサ数が横のマクロブロック数の半分を超えた付近から 急激に処理効率が落ちていることがわかる. 以上より,マクロブロックに割り当てるプロセッサ数を少なくし,残りのプロセッ サをより粒度の高いレイヤーで並列処理することが良いとわかる.. 4. 8. 12. 16 プロセッサ数. 20. 24. 28. 理想的環境下での SD 動画のマクロブロック並列処理性能 (理論値). 3. 性能評価 3.1 評価環境. 評価アプリケーションとして,オープンソースで開発が進められているH.264/AVC エンコーダである“x264”[ 5 ]を使用した。x264 はすでにフレームレイヤーでの並列 処理が実装されているためフレームレイヤーに関しては実装をそのまま使用し,マク. 4. ⓒ2010 Information Processing Society of Japan.

(5) Vol.2010-ARC-187 No.22 Vol.2010-EMB-15 No.22 2010/1/29. 情報処理学会研究報告 IPSJ SIG Technical Report. ロブロックレイヤーでの並列処理を実装した.入力データとしては,PARSECベンチ マーク[ 6 ]でも使用されているSD (640×320) 解像度のElephants Dream[ 7 ] 128 フレ ーム分を使用した.エンコードパラメータはベースラインプロファイルの品質固定圧 縮モードで行なった. また評価には 2 コア集積の Intel Itanium2(Montvale)を 32 基搭載したマルチコアシ ステムである SGI Altix450 を用いた.SGI Altix450 は 2 基の Intel Itanium2 とローカル メモリ(DDR2 DIMM)を Hub で接続したものを 1 ブレードとし,ブレード間を NUMALink で結合している.各プロセッサはローカルメモリを持つが,全メモリで論 理的に共有メモリを構成する ccNUMA アーキテクチャのマルチコアシステムである. 使用した Intel Itanium2 のメモリ構成は表 1 に示した. 表 1. 時で 1.9 倍,4 プロセッサ時で 3.6 倍,8 プロセッサ時で 6.3 倍の速度向上率が得られ た.しかしながらフレームレベルのみでは 8PE で並列性能の限界に達している. 一方,フレームレベルとマクロブロックレベルで複数階層並列処理を行い処理時間 を 比較したところ,2 プロセッサ使用時には 1.2 倍,4 プロセッサ時で 2.3 倍とフレー ムレベルのみでの並列性能に劣るものの,8 プロセッサ時で 4.6 倍,16 プロセッサ時 で 7.9 倍,32 プロセッサ時で 8.7 倍,64 プロセッサ時で 10.6 倍と 8 プロセッサ以上で もコア数の増加とともに性能向上が得られた. 特に複数階層で並列化した場合,フレームに 8 プロセッサ以上を割り当てても速度 向上が見られる.これは x264 のフレームでの並列処理の実装として 1 ピクチャが完全 に符号化されるのを待たず,符号化可能な部分から随時実行を開始するため,1 ピク チャの処理時間が短くなると符号化を開始できるフレームが増えるためだと考えられ る.. Intel Itanium2(Montvale)のメモリ構成. CPU. Intel Dual-core Itanium2(Montvale) 1.66GHz. L1 I-cache. 16KB/1PE. L1 D-cache. 16KB/1PE. L2 D-cache. 256KB/1PE. L2 I-cache. 1MB/1PE. L3 cache. 12MB/2PE. 1.4. 1.3. 1.2 1 速度向上率. 3.2 マクロブロックでの並列処理. 図 8 にマクロブロックだけで並列処理した時の性能を示す.横軸はマクロブロック に割り当てたスレッド数,縦軸は速度向上率を示している.2 スレッドで処理した場 合は 1.3 倍となったが,4 スレッドで処理した場合は逆に 0.7 倍となった. これは使用した Intel Itanium2 が 2 コア集積であり,2 プロセッサまでは共有 L3 キ ャッシュを用いて同期およびデータ転送が行えるのに対し,4 プロセッサでは Hub を 介した通信が必要である.Hub を介したメインメモリへのアクセスレイテンシは L3 キャッシュでの通信に比べ 40 倍遅く,オーバーヘッドが無視できなくなったものと考 えられる.. 1.0 0.9. 0.8. 0.7. 0.6 0.4 0.2 0 1. 2. 3. 4. スレッド数. 3.3 複数階層での並列処理. 図 8. 図 9 にフレームレイヤーとマクロブロックレイヤーの複数階層で並列処理した時の, 並列処理性能を示す.横軸は総スレッド数,縦軸は速度向上率を示している.右側の 網掛けはフレームのみでエンコードを行った場合,左側の斜線はマクロブロックに 2 プロセッサを割り当てた場合の速度向上率を示している.SD 画像においてフレーム レベルの並列処理のみで処理時間を比較したところ,逐次実行に対して 2 プロセッサ. 5. マクロブロックでの並列処理性能. ⓒ2010 Information Processing Society of Japan.

(6) Vol.2010-ARC-187 No.22 Vol.2010-EMB-15 No.22 2010/1/29. 情報処理学会研究報告 IPSJ SIG Technical Report. 参考文献. 12 10.6 8.7. 8.5 7.9. 8 速度向上率. 1) ISO/IEC 14496-10:2003. Coding of audiovisual objects - part 10: Advanced video coding (2003). 2) Yen-Kuang Chen, Xinmin Tian, Steven Ge, and Millnd Girkar. Towards efficient multi-level threading of h.264 encoder on intel hyper-threading architectures. Proc. of 18th International Parallel and Distributed Processing Symposium (2004). 3) Tom R. Jacobs, Vassilios A. Chouliaras, and David J. Mulvancy. Thread-parallel mpeg-2, mpeg-4 and h.264 video encoders for soc multi-processor architectures. IEEE Transactions on Consumer Electronics, 52(1):269–275, Feb (2006). 4) Z.Zhao and P.Liang. A highly efficient parallel algorithm for h.264 video encoder circuits and systems. Proc. of IEEE International Symposium on Circuits and Systems (2006). 5) x264 - a free h264/avc encoder. http://www.videolan.org/developers/x264.html 6) Christian Bienia, Sanjeev Kumar, Jaswinder Pal Singh and Kai Li. “The PARSEC Benchmark Suite: Characterization and Architectural Implications.” Technical Report TR-811- 08, Princeton University, Jan (2008). 7) Blender Foundation and Netherlands Media Art Institute. Elephants dream. http://www.elephantsdream.org/.. 9.8. 10. 6.3. 6.0. 5.6. 6. 6.4. 6.7. 7.2. 4.6 3.6. 4. 2. 1.0. 1.9 1.2. 2.3. 0 1. 2. 4. 8. 16. 24. 32. 48. 64. 総スレッド数 マクロブロックに割り当てる スレッド数 1Thread. マクロブロックに割り当てる スレッド数 2Thread. 図 9 複数階層での並列処理性能. 4. おわりに 本稿ではビデオコーデックである H.264/AVC エンコーダの高速化手法としてフレー ムおよびマクロブロックでの階層的な並列処理を提案した.オープンソース H.264/AVC エンコーダの x264 に対してマクロブロックでの並列処理を実装し,64 コ アのマルチコアシステム上での処理性能の評価を行った.その結果,2 コア集積のマ ルチコアである Intel Itanium2(Montvale)を 32 基搭載した 64 コア構成の ccNUMA サ ーバである SGI Altix450 において,フレームでの並列処理のみの場合が 6.3 倍であっ たのに対しフレームおよびマクロブロックの 2 階層において適切にプロセッサを割り 当てた場合は 10.6 倍の性能向上が得られ,フレーム並列処理の性能を引き出すことで 64 コアまでスケールアップすることが確認できた. 謝辞 本研究の一部は NEDO“情報家電用ヘテロジニアス・マルチコア技術の研究 開発”,NEDO“低消費電力メニーコアプロセッサシステム技術の先導研究”および早 稲田大学グローバル COE“アンビエント SoC”の支援により行われた.. 6. ⓒ2010 Information Processing Society of Japan.

(7)

表   1 Intel Itanium2 ( Montvale )のメモリ構成

参照

関連したドキュメント

下記の 〈資料 10〉 は段階 2 における話し合いの意見の一部であり、 〈資料 9〉 中、 (1)(2). に関わるものである。ここでは〈資料

なお︑本稿では︑これらの立法論について具体的に検討するまでには至らなかった︒

図-2 と図-3 に,それぞれ B/H =0( 未改良 ) と B/H =1.5 における 400Gal 加振時の水平土圧の時系列を示す.図-2 と図-3 より,加振前の静止 土圧は, B/H

算処理の効率化のliM点において従来よりも優れたモデリング手法について提案した.lMil9f

本節では本研究で実際にスレッドのトレースを行うた めに用いた Linux ftrace 及び ftrace を利用する Android Systrace について説明する.. 2.1

および皮膚性状の変化がみられる患者においては,コ.. 動性クリーゼ補助診断に利用できると述べている。本 症 例 に お け る ChE/Alb 比 は 入 院 時 に 2.4 と 低 値

H.264 ま ま また た たは は はMPEG MPEG MPEG---44 4 Part Part 10/A Part 10/AVC 10/A VC VC

層の項目 MaaS 提供にあたっての目的 データ連携を行う上でのルール MaaS に関連するプレイヤー ビジネスとしての MaaS MaaS