MAGAZINE ARTICLES

Features

画像処理プロセッサの基本を学ぶ 組み込み用途では「面積効率」と「並列度」が鍵に

[issued: 2010年1月号]

組み込み機器では、画像処理に特化した専用プロセッサを用いるケースが増えている。専用ハードウエアアクセラレータを設計するよりも短期間でシステムを構築することができ、汎用プロセッサやDSPよりも高いチップ面積効率が得られるからだ。ただし、専用プロセッサの実力を最大限に発揮するには、画像処理の詳細とプロセッサのアーキテクチャについて、「並列度」の観点から深く理解しておく必要がある。

中西 圭里  東芝 セミコンダクター社 半導体研究開発センター

1 2 Img_Page  page 1/2

「画像処理」は多種多様


図1 画像処理技術を利用した製品の例
この図に示した以外にも、プリンタ、医療用機器、セキュリティ機器など多数の応用範囲がある。
 画像情報を扱う組み込み機器の種類が着々と増えている。(デジタル)テレビや、DVDレコーダ/プレーヤ、パソコン、カメラ付き携帯電話機、デジタルカメラ(DSC)、携帯型カムコーダー(DVC)、車載機器、携帯型ゲーム機など、数え上げれば切りがない(図1)。

 ひと言で画像処理といっても、用途によってその内容はさまざまである(本稿では、画像認識も含め、画像情報に対する処理をまとめて画像処理と呼ぶことにする)。例えば、デジタルテレビやDVDレコーダ/プレーヤでは、MPEG-2、H.264などの動画像符号化/復号化処理(ビデオコーデック)が用いられている。よく知られているように、この種のビデオコーデックでは、16×16画素のブロック(マクロブロック)を中心としたブロック単位で、動きベクトルの探索やDCT(離散コサイン変換)、量子化などの処理が行われる。

 一方、デジタルカメラや、カメラ付き携帯電話機などでは、CCD/CMOSイメージセンサーから出力される生のデータ(RAWデータ)に対してISP(Image Signal Processing)と呼ばれる画像処理が行われる。ISPでは、レンズなど光学系の補正処理や、イメージセンサーのばらつきなどから生じる傷補正など、画素単位での処理が中心となる。

 他方、車載機器で用いられる歩行者認識や、デジタルカメラなどで用いられる顔認識などの画像認識処理では、画像データ中の特徴(量)を抽出し、参照データと比較することにより、ある種の判断を下すという流れのものが多い。

 ここで画像処理の例として紹介したビデオコーデック、ISP、画像認識は、後述する並列性の構成が大きく異なる。言い換えれば、この点が画像処理の違いを特徴付ける大きなポイントとなっている。

専用プロセッサの特徴


図2 プログラマビリティと性能の関係
 画像処理を実現するハードウエアとしては、高いプログラマビリティを持つ汎用プロセッサから、高い性能を持つ専用ハードウエアアクセラレータまでさまざまなものがある。汎用プロセッサは高いプログラマビリティを持つので機能変更が容易である。しかし、単位面積/単位消費電力当たりの性能は専用ハードウエアアクセラレータと比べて大きく劣る。逆に、専用ハードウエアアクセラレータは機能変更が行えず、プログラマビリティが非常に低い。

 このように、プログラマビリティと(単位面積/単位消費電力当たりの)性能は、トレードオフの関係にある(図2)。なぜなら、プログラマビリティと制御系回路の占める面積(消費電力)、そして性能と演算系回路の占める面積(消費電力)が、それぞれ比例関係にあるからである。

 一方で、組み込み機器では、単位面積/単位消費電力当たりの性能について、コストの面での許容領域が存在する。さらに、組み込み画像処理技術が用いられる製品分野が広がる中、各製品分野では短期開発による多品種展開が求められている。そのため、画像処理を実現するハードウエアには、ある程度のプログラマビリティを持つことが強く求められている。すなわち、ソフトウエアの入れ替えにより機能を変更できるプロセッサを用いて、画像処理を実現することが必要なのだ。図2において、これらの要求を満たすことができるのは、プログラマブルアクセラレータの領域である。この領域に属するのが、本稿で焦点を当てる組み込み画像処理専用プロセッサである。

 画像処理専用プロセッサは、さまざまな画像処理アプリケーションの中でも、ターゲットとするものに特化したアーキテクチャを備える。それにより、ターゲットアプリケーションで求められる処理において十分なプログラマビリティと高い性能を実現する。具体的には、まず必要十分な制御回路により、限られたターゲットアプリケーションにおけるプログラマビリティを保証する。その上で、多数の演算器をアプリケーションの性質に合わせて高い並列性で配置した演算回路構成により、単位面積/単位消費電力当たりの高い性能を実現させようというものである。


図3 専用プロセッサの動作周波数/ピーク性能
 上述したように、画像処理専用プロセッサは限られたターゲットアプリケーションに特化したアーキテクチャを有する。そのため、ターゲットから外れた処理に対しては、たとえそれが画像処理の範疇のものであっても十分な性能が得られないことがある。すなわち、汎用プロセッサやDSPのように広い範囲をカバーすることは難しい。しかし、ここ数年、国内外を問わず半導体メーカー各社から、ある範囲の画像処理アプリケーションにターゲットを絞った画像処理専用プロセッサが発表されており*1)*2)*3)*4)*5)、プロセッサの世界でも注目を浴びる分野の1つになっている。参考文献1〜5からわかるように、ISSCC(International Solid State Circuits Conference)においても、ほぼ毎年新しい画像処理専用プロセッサが発表されている。

 図3は、ISSCCを中心とした学会で発表されている最近の画像処理専用プロセッサの動作周波数とピーク性能を表したものである。この図において、縦軸のピーク性能を横軸の動作周波数で割ると「並列度」が得られる。図3では、この並列度が1000、500、200に相当するところを点線で表している。この図から、画像処理専用プロセッサは、総じて500〜1000程度の非常に高い並列度を有することがわかる。

 画像処理専用プロセッサの実力を最大限に引き出すには、この非常に高い並列度を使いこなすことがポイントとなる。実現したい画像処理アプリケーションにマッチする最適な画像処理専用プロセッサを選択して使いこなすためには、ターゲットとなるアプリケーションの並列性と画像処理専用プロセッサの並列性の両方について理解しておく必要がある。そこで、次節では画像処理アプリケーションにおける並列性について概観することにする。

3つの並列性

 ここでは、まず画像処理に限らず、処理一般における3つの並列性について説明する。一般に処理の並列性としては以下の3種類がある。

●データ並列性
●命令並列性
●スレッド並列性

 以下では、それぞれについて順に説明していく。

■データ並列性
 データ並列性とは、複数のデータに対して同時に同一の演算が行える性質のことを指す。例えば、横が100画素、縦が100画素の1枚の画像データに対して一律に定数Aを乗算する処理を考える。この場合、次の(1)と(2)とで処理結果は変わらない。

(1)1つの画素データに対して定数Aを乗じる命令を、1つずつ1万回実行する

(2)横方向の100個の画素データに対し、まとめて一律に定数Aを乗ずる命令を100回実行する


図4 データ並列性
 このように、複数のデータ(この例では横方向の100個の画素データ)をまとめて(並列に)、1度に同一の演算を施すことができる性質がデータ並列性である(図4)。

 データ並列性がある場合、(2)のように複数のデータ(横方向100個のデータ)を1つのベクトルデータとし、それに対して一律の演算を実行したと考えることができる。そのため、(2)の演算をベクトル演算と呼ぶことがある。あるいは、1命令で複数のデータに対して演算を行うことから、SIMD(Single Instruction Multiple Data)演算とも呼ばれる。(2)の例では、データ並列性による並列度は100である。乗算器を100個横に並べて1命令で1度に100個の乗算を行うので、命令数は(1)と比べて1/100となる。

 画像処理アプリケーションはデータ並列性を持つものが多い。また多くの場合、その並列度が高い。この種の代表的な処理としては、エッジ抽出、エッジ強調、低域通過フィルタなどの線形フィルタ群や、色空間変換などがある。

 一方、データ並列性を持たない処理としては、1枚の画像の連結領域に対するラベリング処理などがある。連結領域のラベリング処理の場合、横方向/縦方向ともに画素データの依存性があるため、ベクトル処理は行えない。

■命令並列性

図5 命令並列性
 命令並列性とは、複数の命令を同時に実行できる性質のことである。例として、図5に示した構成のプロセッサで、「処理の例」に示した3つの加算を処理するケースを考える。3つの加算のうち、図5のような構成のプロセッサでは、(C)と(D)の加算は同時に実行できる。この場合、(C)と(D)は命令並列性を持つと言う。それに対し、加算(G)は、(C)と(D)の結果を得てからでなければ実行できない。このように、(G)と(C)と(D)の3演算の組は命令並列性を持たない。ただし、命令並列性は名前のとおり、プロセッサがどのような命令セットを持つかによって決まるものである。そのため、プロセッサの構成によっては、(G)と(C)と(D)が命令並列性を持つことがある(詳細は後述)。このように、命令並列性は処理内容とプロセッサの命令セットのペアで考えなければならないので注意が必要だ。

 命令並列性を実現する方式としては、同時実行する複数の命令を動的にハードウエアが選んで実行する方式と、コンパイラが静的に解析して選ぶ方式の2通りがある。前者はスーパースカラ型、後者はVLIW(Very Long Instruction Word)型と呼ばれている。

 スーパースカラ型の利点は、ハードウエアを拡張する際にオブジェクトコード(バイナリとなった命令列)に互換性があることだ。これは、ユーザー(ソフトウエア開発者)にとっては非常に大きなメリットとなる。ただし、スーパースカラ型には、同時に実行できる命令を管理するための制御系回路の面積が大きくなるという欠点がある。

 一方、VLIW型では、ハードウエアを拡張するとオブジェクトコードの互換性がなくなってしまう。すなわち、ソースコードを書き換えたり、再コンパイルしたりする必要が生じ、ユーザーにとってはソフトウエア資産の再利用性が下がることになる。ただし、VLIW型では同時実行命令を管理するハードウエアが不要なので、制御系回路の面積と消費電力は少なくて済む。そのため、コスト重視の組み込み用途では、VLIW型のプロセッサが多用される。

■スレッド並列性

図6 スレッド並列性
 スレッド並列性とは、複数のプログラム、関数など、ある大きさの処理単位(スレッド)のレベルで同時に処理できる状態のことを言う。例として、フレーム中のブロックを入出力としてラスタスキャン順に進む、関数A、Bから成る処理を考える(図6)。この場合、入力フレーム中のブロックnに対する関数Aの処理と、中間フレーム中のブロックnに対する関数Bの処理は同時には実行できない。しかし、入力フレーム中のブロックn+1に対する関数Aの処理と中間フレーム中のブロックnに対する関数Bの処理であれば、同時に並列実行することができる。このような状況がスレッド並列性を持つ例である。

 このように、スレッドはある程度の大きさの命令列とデータを持つ。そのため、スレッドとハードウエアの対応としては、1つのスレッドに対して1つのプロセッサコアを与えることが多い。すなわち、スレッドを並列処理する方式としては、マルチコアプロセッサを利用して複数のプロセッサコアを同時に動作させるという手法がとられる。マルチコアプロセッサでは、各コアで複数のデータが複数の命令によって処理されるため、MIMD(Multiple Instruction Multiple Data)処理の一形態であると考えることができる。マルチコアプロセッサでスレッド並列性を利用して効率良く処理を行う上でポイントとなるのは、スレッドの分割の仕方と各プロセッサコアへのスレッドの分配の仕方である。一連の処理をいくつかのスレッドに分割する作業は、現状ではコンパイラなどのツールではなく、手作業で行うことが多い。分割後のスレッドの各コアへの分配は、全体制御用のプロセッサが各スレッドの依存関係を分析した上で各プロセッサコアに割り当てることなどにより行われる。
脚注:
  • ※1…M. Nakajima, et al., "A 40GOPS 250mW Massively Parallel Processor based on Matrix Architecture", ISSCC Dig. Tech. Papers, Session 22.5, Feb, 2006
  • ※2…S. Arakawa et al., "A 512GOPS Fully Programmable Digital Image Processor with Full HD 1080p Processing Capabilities", ISSCC Dig. Tech. Papers, pp.312〜313, Feb, 2008
  • ※3…S. Nomura, et al., "A 9.7mW AAC-Decoding, 620mW H.264 720p 60fps Decoding, 8-Core Media Processor with Embedded Forward-Body-Biasing and Power-Gating Circuit in 65nm CMOS technology", ISSCC Dig. Tech. Papers, pp.12〜13, Feb, 2008
  • ※4…K. Nakanishi, et al., "A 128-Parallel SIMD Image Signal Coprocessor with High Area Efficiency", COOL Chips XII, pp.377〜379, April, 2009
  • ※5…S. Kyo, et al., "IMAPCAR2: A Dynamic SIMD/MIMD Mode Switching Processor for Embedded Systems", HOT CHIPS 21, August, 2009
< 前へ 1 2 次へ >
この記事の目次 :

Sponsor Links [ PR ]

関連情報  by  Supplier Showcase

EDN RESOURCE CENTERpowered by Supplier Showcase

SPECIAL CONTENTS [ PR ]

最新ニュース

このコーナーのバックナンバー

キーワードタグ一覧