(57)【要約】【課題】画像に対するフィルタ処理の効率向上を図る。【解決手段】フィルタ処理装置（１００）は、フィルタ回路（２０８）と制御回路（２０９）とを含む。上記フィルタ回路は、データを格納可能な第１のレジスタ（２０６）と、上記第１のレジスタの出力データに基づいて第１のフィルタ処理を実行可能な第１の演算器（２０７）と、その演算結果を格納可能な第２のレジスタ（２０６）と、上記第２のレジスタの出力データに基づいて第２のフィルタ処理を実行可能な第２の演算器（２０７）とを含む。上記制御回路は、上記第１のフィルタ処理のタップ数と、上記第１のフィルタ処理の実行結果のサイズと、上記第２の演算器の数に応じて、上記第１のレジスタに１サイクル当たりに入力するデータの数を調整し、第１のフィルタ処理を速やかに完了させる。【選択図】図２
2010192983.tif 000002
【特許請求の範囲】
【請求項１】
入力されたデータに対してフィルタ処理を行うフィルタ回路と、上記フィルタ回路の動作を制御する制御回路と、を含むフィルタ処理装置であって、
上記フィルタ回路は、データを格納可能な第１のレジスタと、
上記第１のレジスタの出力データに基づいて第１のフィルタ処理を実行可能な第１の演算器と、
上記第１の演算器の演算結果を格納可能な第２のレジスタと、
上記第２のレジスタの出力データに基づいて第２のフィルタ処理を実行可能な第２の演算器と、を含み、
上記制御回路は、上記第１のフィルタ処理のタップ数と、上記第１のフィルタ処理の実行結果のサイズと、上記第２の演算器の数に応じて、上記第１のレジスタに１サイクル当たりに入力するデータの数を調整可能にされて成ることを特徴とするフィルタ処理装置。
【請求項２】
入力されたデータに対してフィルタ処理を行うフィルタ回路と、上記フィルタ回路の動作を制御する制御回路と、を含むフィルタ処理装置であって、
上記フィルタ回路は、データを格納可能な第１のレジスタと、
上記第１のレジスタの出力データに基づいて第１のフィルタ処理を実行可能な第１の演算器と、
上記第１の演算器の演算結果を格納可能な第２のレジスタと、
上記第２のレジスタの出力データに基づいて第２のフィルタ処理を実行可能な第２の演算器と、
上記第２の演算器の演算結果を格納する第３のレジスタと、を含み、
上記制御回路は、上記第１のフィルタ処理のタップ数と、上記第１のフィルタ処理の実行結果のサイズと、上記第２の演算器の数に応じて、上記第１のレジスタに１サイクル当たりに入力するデータの数を調整し、上記第２のフィルタ処理のタップ数と、上記第２のフィルタ処理の実行結果サイズと、上記第１の演算器の数に応じて上記第２のレジスタに１サイクル当たりに入力するデータの数を調整することを特徴とするフィルタ処理装置。
【請求項３】
上記制御回路は、演算パラメータを算出可能な演算パラメータ算出部と、
上記演算パラメータに基づいて上記フィルタ回路の動作を制御する制御部と、を含み、
上記演算パラメータ算出部は、画像の第１のフィルタ処理のタップ数を保持する第１のタップ数レジスタと、
画像の第２のフィルタ処理のタップ数を保持する第２のタップ数レジスタと、
上記第１のフィルタ処理のための演算器の数を保持する第１の演算要素数レジスタと、
上記第２のフィルタ処理のための演算器の数を保持する第２の演算要素数レジスタと、
上記第１のフィルタ処理の実行結果のサイズを保持する第１の出力サイズレジスタと、
上記第２のフィルタ処理の実行結果のサイズを保持する第２の出力サイズレジスタと、
上記第２のフィルタ処理のタップ数と上記第２のフィルタ処理の実行結果のサイズと上記第１のフィルタ処理のための演算器の数から第１のフィルタ処理の回数を算出する第１のフィルタ処理回数算出器と、
上記第１のフィルタ処理のタップ数と上記第１のフィルタ処理の実行結果のサイズと上記第２のフィルタ処理のための演算器の数から第２のフィルタ処理の回数を算出する第２のフィルタ処理回数算出器と、
上記第１のフィルタ処理のタップ数と上記第２のフィルタ処理の回数と上記第１のフィルタ処理の実行結果のサイズから上記第１のレジスタに１サイクル当たりに入力するデータの数を算出する第１の入力サイズ算出器と、
上記第２のフィルタ処理のタップ数と上記第１のフィルタ処理の回数と上記第２のフィルタ処理の実行結果のサイズから上記第２のレジスタに１サイクル当たりに入力するデータの数を算出する第２の入力サイズ算出器と、を含み、
上記制御部は、上記第１のレジスタに１サイクル当たりに入力するデータの数と、上記第２のレジスタに１サイクル当たりに入力するデータの数と、上記第１のフィルタ処理の回数と、上記第２のフィルタ処理の回数に応じてフィルタ処理をする請求項２記載のフィルタ処理装置。
【請求項４】
上記制御部は、上記第１のタップ数レジスタと上記第２のタップ数レジスタと上記第１の出力サイズレジスタと上記第２の出力サイズレジスタと上記第１の演算要素数レジスタと上記第２の演算要素数レジスタの更新を指示するための命令を実行するＣＰＵを含む請求項３記載のフィルタ処理装置。
【請求項５】
上記演算パラメータ算出部は、符号化された画像の符号化形式から上記第１のフィルタ処理のタップ数と、上記第２のフィルタ処理のタップ数と、上記第１のフィルタ処理の実行結果のサイズと、上記第２のフィルタ処理の実行結果のサイズを算出するタップ数・出力サイズ算出部と、
上記第１のフィルタ処理のための演算器の数を保持する第１の演算要素数レジスタと、
上記第２のフィルタ処理のための演算器の数を保持する第２の演算要素数レジスタと、
上記第２のフィルタ処理のタップ数と上記第２のフィルタ処理の実行結果のサイズと上記第１のフィルタ処理のための演算器の数から第１のフィルタ処理の回数を算出する第１のフィルタ処理回数算出器と、
上記第１のフィルタ処理のタップ数と上記第１のフィルタ処理の実行結果のサイズと上記第２のフィルタ処理のための演算器の数から第２のフィルタ処理の回数を算出する第２のフィルタ処理回数算出器と、
上記第１のフィルタ処理のタップ数と上記第２のフィルタ処理の回数と上記第１のフィルタ処理の実行結果のサイズから上記第１のレジスタに１サイクル当たりに入力するデータの数を算出する第１の入力サイズ算出器と、
上記第２のフィルタ処理のタップ数と上記第１のフィルタ処理の回数と上記第２のフィルタ処理の実行結果のサイズから上記第２のレジスタに１サイクル当たりに入力するデータの数を算出する第２の入力サイズ算出器と、を含み、
上記制御部は、上記第１のレジスタに１サイクル当たりに入力するデータの数と、上記第２のレジスタに１サイクル当たりに入力するデータの数と、上記第１のフィルタ処理の回数と、上記第２のフィルタ処理の回数に応じてフィルタ処理をする請求項２記載のフィルタ処理装置。
【請求項６】
上記フィルタ処理装置は、バスに結合され、上記バスを介して、符号化された画像が入力され、上記符号化された画像であるストリーム中にあるパラメータを基に上記第１のレジスタに１サイクル当たりに入力するデータの数と上記第２のレジスタに１サイクル当たりに入力するデータの数を調整することを特徴とする請求項２記載のフィルタ処理装置。
【請求項７】
入力された命令をデコードする命令デコーダと、
上記命令デコーダを介して与えられたフィルタ処理に関するパラメータを基に第１のフィルタ処理の処理回数と第２のフィルタ処理の処理回数と第１のフィルタ処理のための演算器に１サイクルで投入するデータの数を算出すると第２のフィルタ処理のための演算器に１サイクルで投入するデータの数を算出する演算パラメータ算出器と、
上記命令デコーダを介して取り込まれたソースインデックスを上記演算パラメータ算出器によって算出された第１のフィルタ処理の処理回数または第２のフィルタ処理の処理回数を基に補正することにより補正ソースインデックスを生成するインデックス生成器と、
上記ソースインデックスに対応するデータを出力する内部レジスタと、
上記内部レジスタから出力されたデータをフィルタリングする演算器と、
画像を入力し、上記演算パラメータ算出器から出力された演算パラメータを基に画像の形式を変換し、上記内部レジスタに入力するデータ生成回路と、を含む半導体装置であって、
上記演算器は、上記内部レジスタから出力されたデータをシフト可能なシフトレジスタと、
上記シフトレジスタの出力データを演算処理するＳＩＭＤ演算器と、を含み
上記演算パラメータ算出器は、画像の第１のフィルタ処理のタップ数を保持する第１のタップ数レジスタと、
画像の第２のフィルタ処理のタップ数を保持する第２のタップ数レジスタと、
上記第１のフィルタ処理のための演算器の数を保持する第１の演算要素数レジスタと、
上記第２のフィルタ処理のための演算器の数を保持する第２の演算要素数レジスタと、
上記第１のフィルタ処理の実行結果のサイズを保持する第１の出力サイズレジスタと、
上記第２のフィルタ処理の実行結果のサイズを保持する第２の出力サイズレジスタと、
上記第２のフィルタ処理のタップ数と上記第２のフィルタ処理の実行結果のサイズと上記第１のフィルタ処理のための演算器の数から第１のフィルタ処理の回数を算出する第１のフィルタ処理回数算出器と、
上記第１のフィルタ処理のタップ数と上記第１のフィルタ処理の実行結果のサイズと上記第２のフィルタ処理のための演算器の数から第２のフィルタ処理の回数を算出する第２のフィルタ処理回数算出器と、
上記第１のフィルタ処理のタップ数と上記第２のフィルタ処理の回数と上記第１のフィルタ処理の実行結果のサイズから上記第１のレジスタに１サイクル当たりに入力するデータの数を算出する第１の入力サイズ算出器と、
上記第２のフィルタ処理のタップ数と上記第１のフィルタ処理の回数と上記第２のフィルタ処理の実行結果のサイズから上記第２のレジスタに１サイクル当たりに入力するデータの数を算出する第２の入力サイズ算出器と、を含むことを特徴とする半導体装置。
【請求項８】
上記命令デコーダは、上記第１のタップ数レジスタ、第２のタップ数レジスタ、第１の演算要素数レジスタ、第２の演算要素数レジスタ、第１の出力サイズレジスタ、及び第２の出力サイズレジスタの少なくとも一つを更新する命令をデコードする請求項７記載の半導体装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、フィルタ処理技術、さらには当該技術が適用されたフィルタ処理装置及び半導体装置に関する。
【背景技術】
【０００２】
フィルタ処理（畳み込み演算）は、フィルタ係数を順次呼び出し、読み出した係数ごとに入力データと積和演算を行い、その結果を累積加算することで、演算器の個数を越えたタップ数の演算処理を可能にしている。
【０００３】
例えば特許文献１には、使用するフィルタのタップ数が大きくなってもハードウエア規模の増大に繋がらないように構成されたデジタルフィルタが示される。この技術によれば、書き込まれたフィルタ係数あるいは制御データに基づき、装置の制御が行われるため、メモリ手段に書き込むデータを変更することにより装置規模の増加を招くことなく、フィルタやサンプリングレート変換率の変更を行うことができる。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００１−２４４７９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
従来のフィルタ処理技術について本願発明者が検討したところ、以下のように、画像などの２次元データに対する２次元フィルタ処理の効率向上を図る必要のあることが見いだされた。これ以降、２次元データの例として画像を用いる。
【０００６】
画像に対する２次元フィルタ処理は、多くの場合、画像の水平方向と垂直方向に２度実施される。処理の流れは、まず、第２のフィルタ処理に必要な数のデータを第１のフィルタ処理を行う複数個の演算器に順次投入して同時に第１のフィルタ処理が行われ、上記第１のフィルタ処理の結果を第２のフィルタ処理に相当する複数個の演算器に順次投入して第２のフィルタ処理が行われる。このため、第１のフィルタ処理を行う演算器の要素数よりも第２のフィルタ処理に必要なデータが多い場合、第２のフィルタ処理に必要なデータに対する処理が終わるまでに複数回のフィルタ処理をすることになり、その結果、第２のフィルタ処理を開始するタイミングが遅れる虞れがある。また、第１のフィルタ処理を行う演算器の要素数よりも第２のフィルタ処理に必要なデータが極端に少ない場合には、第１のフィルタ処理を無駄に行う演算器が多くなる。
【０００７】
特許文献１記載技術は、フィルタ処理のタップ数、及び複数の演算器が同時に生成するデータのサイズに応じて、１サイクル当たりに入力されるデータの数を調整するものではなく、上記課題を解決することはできない。
【０００８】
本発明の目的は、画像などの２次元データに対する２次元フィルタ処理の効率を向上させるための技術を提供することにある。
【０００９】
本発明の上記並びにその他の目的と新規な特徴は本明細書の記述及び添付図面から明らかになるであろう。
【課題を解決するための手段】
【００１０】
本願において開示される発明のうち代表的なものについて簡単に説明すれば下記のとおりである。
【００１１】
すなわち、フィルタ処理装置は、フィルタ回路と制御回路とを含む。上記フィルタ回路は、データを格納可能な第１のレジスタと、上記第１のレジスタの出力データに基づいて第１のフィルタ処理を実行可能な第１の演算器と、上記第１の演算器の演算結果を格納可能な第２のレジスタと、上記第２のレジスタの出力データに基づいて第２のフィルタ処理を実行可能な第２の演算器とを含む。上記制御回路は、上記第１のフィルタ処理のタップ数と、上記第１のフィルタ処理の実行結果のサイズと、上記第２の演算器の数に応じて、上記第１のレジスタに１サイクル当たりに入力するデータの数を調整し、第１のフィルタ処理を速やかに完了させる。
【発明の効果】
【００１２】
本願において開示される発明のうち代表的なものによって得られる効果を簡単に説明すれば下記のとおりである。
【００１３】
すなわち、本発明によれば、画像に対するフィルタ処理の効率向上を図ることができる。
【図面の簡単な説明】
【００１４】
【図１】本発明の実施の形態１に係る画像処理装置の構成例ブロック図である。
【図２】上記画像処理装置におけるフィルタ処理ユニットの構成例ブロック図である。
【図３】図２に示されるフィルタ処理ユニットにおける演算パラメータ算出回路の構成例ブロック図である。
【図４】図２に示されるフィルタ処理ユニットにおいて、フィルタ処理するのに必要な画像、メモリに格納される画像の形式、内部レジスタに格納される画像の形式についての説明図である。
【図５】図２に示されるフィルタ処理ユニットにおいて、フィルタ処理するのに必要な画像、メモリに格納される画像の形式、内部レジスタに格納される画像の形式についての別の説明図である。
【図６】上記画像処理装置におけるフィルタ処理ユニットの別の構成例ブロック図である。
【図７】図６に示されるフィルタ処理ユニットにおいて、フィルタ処理するのに必要な画像、メモリに格納される画像の形式、内部レジスタに格納される画像の形式についての説明図である。
【図８】図６に示されるフィルタ処理ユニットにおいて、フィルタ処理するのに必要な画像、メモリに格納される画像の形式、内部レジスタに格納される画像の形式についての別の説明図である。
【図９】本発明の実施の形態３に係るプロセッサの構成例ブロック図である。
【図１０】上記プロセッサにおけるフィルタ処理ユニットの構成例ブロック図である。
【図１１】画像の形式と転送についての説明図である。
【図１２】本発明の実施の形態４に係る演算パラメータ算出回路の構成例ブロック図である。
【発明を実施するための形態】
【００１５】
１．実施の形態の概要
先ず、本願において開示される発明の代表的な実施の形態について概要を説明する。代表的な実施の形態についての概要説明で括弧を付して参照する図面中の参照符号はそれが付された構成要素の概念に含まれるものを例示するに過ぎない。
【００１６】
〔１〕本発明の代表的な実施の形態に係るフィルタ処理装置（１００）は、入力されたデータに対してフィルタ処理を行うフィルタ回路（２０８）と、上記フィルタ回路の動作を制御する制御回路（２０９）とを含む。上記フィルタ回路は、データを格納可能な第１のレジスタ（２０６）と、上記第１のレジスタの出力データに基づいて第１のフィルタ処理を実行可能な第１の演算器（２０７）とを含む。さらに上記フィルタ回路は、上記第１の演算器の演算結果を格納可能な第２のレジスタ（２０６）と、上記第２のレジスタの出力データに基づいて第２のフィルタ処理を実行可能な第２の演算器（２０７）とを含む。上記制御回路は、上記第１のフィルタ処理のタップ数と、上記第１のフィルタ処理の実行結果のサイズと、上記第２の演算器の数に応じて、上記第１のレジスタに１サイクル当たりに入力するデータの数を調整可能にされて成る。
【００１７】
上記の構成によれば、上記制御回路は、上記第１のフィルタ処理のタップ数と、上記第１のフィルタ処理の実行結果のサイズと、上記第２の演算器の数に応じて、上記第１のレジスタに１サイクル当たりに入力するデータの数を調整する。それにより第１のフィルタ処理を速やかに完了して、その結果を第２のフィルタ処理に供することができ、第２のフィルタ処理の開始タイミングを従来に比べて早めることができる。
【００１８】
〔２〕別の観点によれば、上記フィルタ回路は、第１のレジスタ（２０６）、第１の演算器（２０７）、第２のレジスタ（２０６）、第２の演算器（２０７）、第３のレジスタ（２０６）を含んで構成することができる。上記第１のレジスタ（２０６）には上記データが格納される。上記第１の演算器（２０７）は、上記第１のレジスタの出力データに基づいて第１のフィルタ処理を実行する。上記第２のレジスタ（２０６）には、上記第１の演算器の演算結果が格納される。上記第２の演算器（２０７）は、上記第２のレジスタの出力データに基づいて第２のフィルタ処理を実行する。上記第３のレジスタ（２０６）には、上記第２の演算器の演算結果が格納される。
【００１９】
〔２〕別の観点によれば、上記フィルタ回路は、上記データを格納可能な第１のレジスタ（２０６）と、可能な第１の演算器（２０７）と、可能な第２のレジスタ（２０６）と、上記第２のレジスタの出力データに基づいて第２のフィルタ処理を実行可能な第２の演算器（２０７）と、上記第２の演算器の演算結果を格納する第３のレジスタ（２０６）とを含む。
【００２０】
上記制御回路は、上記第１のフィルタ処理のタップ数と、上記第１のフィルタ処理の実行結果のサイズと、上記第２の演算器の数に応じて、上記第１のレジスタに１サイクル当たりに入力するデータの数を調整する。そして上記制御回路は、上記第２のフィルタ処理のタップ数と、上記第２のフィルタ処理の実行結果サイズと、上記第１の演算器の数に応じて上記第２のレジスタに１サイクル当たりに入力するデータの数を調整する。
【００２１】
上記の構成によれば、上記制御回路は、上記第１のフィルタ処理のタップ数と、上記第１のフィルタ処理の実行結果のサイズと、上記第２の演算器の数に応じて、上記第１のレジスタに１サイクル当たりに入力するデータの数を調整する。それにより第１のフィルタ処理を速やかに完了して、その結果を第２のフィルタ処理に供することができ、第２のフィルタ処理の開始タイミングを従来に比べて早めることができる。また、上記第２のフィルタ処理のタップ数と、上記第２のフィルタ処理の実行結果サイズと、上記第１の演算器の数に応じて上記第２のレジスタに１サイクル当たりに入力するデータの数が調整されることにより、第１のフィルタ処理を行う演算器の要素数よりも第２のフィルタ処理に必要なデータが極端に少ない場合を回避することができる。
【００２２】
〔３〕上記〔２〕において、上記制御回路は、演算パラメータを算出可能な演算パラメータ算出部（２０４）と、上記演算パラメータに基づいて上記フィルタ回路の動作を制御する制御部（２０２）とを含んで構成することができる。
【００２３】
上記演算パラメータ算出部は、第１のタップ数レジスタ（３０１）、第２のタップ数レジスタ（３１１）、第１の演算要素数レジスタ（３１２）、第２の演算要素数レジスタ（３０２）、第１の出力サイズレジスタ（３０３）、第２の出力サイズレジスタ（３１３）、第１のフィルタ処理回数算出器（３１４）と、第２のフィルタ処理回数算出器（３０４）、第１の入力サイズ算出器（３０５）、及び第２の入力サイズ算出器（３１５）を含んで構成することができる。第１のタップ数レジスタ（３０１）は、画像の第１のフィルタ処理のタップ数を保持する。第２のタップ数レジスタ（３１１）は、画像の第２のフィルタ処理のタップ数を保持する。第１の演算要素数レジスタ（３１２）は、上記第１のフィルタ処理のための演算器の数を保持する。第２の演算要素数レジスタ（３０２）は、上記第２のフィルタ処理のための演算器の数を保持する。第１の出力サイズレジスタ（３０３）は、上記第１のフィルタ処理の実行結果のサイズを保持する。第２の出力サイズレジスタ（３１３）は、上記第２のフィルタ処理の実行結果のサイズを保持する。第１のフィルタ処理回数算出器（３１４）は、上記第２のフィルタ処理のタップ数と上記第２のフィルタ処理の実行結果のサイズと上記第１のフィルタ処理のための演算器の数から第１のフィルタ処理の回数を算出する。第２のフィルタ処理回数算出器（３０４）は、上記第１のフィルタ処理のタップ数と上記第１のフィルタ処理の実行結果のサイズと上記第２のフィルタ処理のための演算器の数から第２のフィルタ処理の回数を算出する。第１の入力サイズ算出器（３０５）は、上記第１のフィルタ処理のタップ数と上記第２のフィルタ処理の回数と上記第１のフィルタ処理の実行結果のサイズから上記第１のレジスタに１サイクル当たりに入力するデータの数を算出する。第２の入力サイズ算出器（３１５）は、上記第２のフィルタ処理のタップ数と上記第１のフィルタ処理の回数と上記第２のフィルタ処理の実行結果のサイズから上記第２のレジスタに１サイクル当たりに入力するデータの数を算出する。
【００２４】
上記制御部は、上記第１のレジスタに１サイクル当たりに入力するデータの数と、上記第２のレジスタに１サイクル当たりに入力するデータの数と、上記第１のフィルタ処理の回数と、上記第２のフィルタ処理の回数に応じてフィルタ処理をする。
【００２５】
上記の構成によれば、第１のフィルタ処理系と第２のフィルタ処理系とがそれぞれ別個に設けられているため、第１の入力サイズ算出結果と、第２の入力サイズ算出結果とを速やかに得ることができる。
【００２６】
〔４〕上記〔３〕において、上記制御部は、上記第１のタップ数レジスタと上記第２のタップ数レジスタと上記第１の出力サイズレジスタと上記第２の出力サイズレジスタと上記第１の演算要素数レジスタと上記第２の演算要素数レジスタの更新を指示するための命令を実行するＣＰＵを含む。
【００２７】
〔５〕上記〔２〕において、上記フィルタ処理装置は、バスに結合され、上記バスを介して、符号化された画像が入力され、上記符号化された画像であるストリーム中にあるパラメータを基に上記第１のレジスタに１サイクル当たりに入力するデータの数と上記第２のレジスタに１サイクル当たりに入力するデータの数を調整する。
【００２８】
〔６〕別の観点によれば、半導体装置は、命令デコーダ（１００２）、演算パラメータ算出器（１００４）、インデックス生成器（１００５）、内部レジスタ（１００６）、演算器（１００９）、及びデータ生成回路（１０１０）を含んで構成することができる。上記命令デコーダ（１００２）は、入力された命令をデコードする。上記演算パラメータ算出器（１００４）は、上記命令デコーダを介して与えられたフィルタ処理に関するパラメータを基に第１のフィルタ処理の処理回数と第２のフィルタ処理の処理回数と第１のフィルタ処理のための演算器に１サイクルで投入するデータの数を算出すると、第２のフィルタ処理のための演算器に１サイクルで投入するデータの数を算出する。上記インデックス生成器（１００５）は、上記命令デコーダを介して取り込まれたソースインデックスを上記演算パラメータ算出器によって算出された第１のフィルタ処理の処理回数または第２のフィルタ処理の処理回数を基に補正することにより補正ソースインデックスを生成する。内部レジスタ（１００６）は、上記ソースインデックスに対応するデータを出力する。上記演算器（１００９）は、上記内部レジスタから出力されたデータをフィルタリングする。上記データ生成回路（１０１０）は、画像を入力し、上記演算パラメータ算出器から出力された演算パラメータを基に画像の形式を変換し、上記内部レジスタに入力する。
【００２９】
上記演算器は、上記内部レジスタから出力されたデータをシフト可能なシフトレジスタ（１００７）と、上記シフトレジスタの出力データを演算処理するＳＩＭＤ演算器（１００８）とを含む。
【００３０】
上記演算パラメータ算出器は、第１のタップ数レジスタ（３０１）、第２のタップ数レジスタ（３１１）、第１の演算要素数レジスタ（３１２）、第２の演算要素数レジスタ（３０２）、及び第１の出力サイズレジスタ（３０３）を含む。また上記演算パラメータ算出器は、第２の出力サイズレジスタ（３１３）、第１のフィルタ処理回数算出器（３１４）、第２のフィルタ処理回数算出器（３０４）、第１の入力サイズ算出器（３０５）、第２の入力サイズ算出器（３１５）とを含む。
【００３１】
ここで上記第１のタップ数レジスタ（３０１）は、画像の第１のフィルタ処理のタップ数を保持する。上記第２のタップ数レジスタ（３１１）は、画像の第２のフィルタ処理のタップ数を保持する。上記第１の演算要素数レジスタ（３１２）は、上記第１のフィルタ処理のための演算器の数を保持する。上記第２の演算要素数レジスタ（３０２）は、上記第２のフィルタ処理のための演算器の数を保持する。上記第１の出力サイズレジスタ（３０３）は、上記第１のフィルタ処理の実行結果のサイズを保持する。上記第２の出力サイズレジスタ（３１３）は、上記第２のフィルタ処理の実行結果のサイズを保持する。上記第１のフィルタ処理回数算出器（３１４）は、上記第２のフィルタ処理のタップ数と上記第２のフィルタ処理の実行結果のサイズと上記第１のフィルタ処理のための演算器の数から第１のフィルタ処理の回数を算出する。上記第２のフィルタ処理回数算出器（３０４）は、上記第１のフィルタ処理のタップ数と上記第１のフィルタ処理の実行結果のサイズと上記第２のフィルタ処理のための演算器の数から第２のフィルタ処理の回数を算出する。上記第１の入力サイズ算出器（３０５）は、上記第１のフィルタ処理のタップ数と上記第２のフィルタ処理の回数と上記第１のフィルタ処理の実行結果のサイズから上記第１のレジスタに１サイクル当たりに入力するデータの数を算出する。上記第２の入力サイズ算出器（３１５）は、上記第２のフィルタ処理のタップ数と上記第１のフィルタ処理の回数と上記第２のフィルタ処理の実行結果のサイズから上記第２のレジスタに１サイクル当たりに入力するデータの数を算出する。
【００３２】
〔７〕上記〔６〕において、上記命令デコーダは、上記第１のタップ数レジスタ、第２のタップ数レジスタ、第１の演算要素数レジスタ、第２の演算要素数レジスタ、第１の出力サイズレジスタ、及び第２の出力サイズレジスタの少なくとも一つを更新する命令をデコードする。
【００３３】
２．実施の形態の詳細
次に、実施の形態について更に詳述する。
【００３４】
以降では、画像の垂直方向へのフィルタ処理を垂直フィルタ、画像の水平方向へのフィルタ処理を水平フィルタと表記する。尚、各図面において、同一の符号が付されている構成要素は同一の機能を有することとする。
【００３５】
＜実施の形態１＞
図１には、本発明の実施の形態１に係る画像処理装置が示される。
【００３６】
図１に示される画像処理装置は、フィルタ処理ユニット（ＦＩＬ）１００と、ホストプロセッサ（ＨＳＴ）１０１と、メモリインタフェース（ＭＩＦ）１０２と、Ｉ／Ｏ（入出力回路）１０３と、外部メモリ（ＥＸＴ−ＭＥＭ）１０４を含み、それらがバス１０５を介して結合されて構成される。
【００３７】
ホストプロセッサ１０１は、所定のプログラムを実行することで画像処理装置の全体的な動作制御を行う。
【００３８】
外部メモリ１０４は、ホストプロセッサ１０１で実行されるプログラムや、各種データが格納されており、バス１０５、メモリインタフェース１０２を介してデータをやり取りする。
【００３９】
Ｉ／Ｏ１０３は、画像やビデオやオーディオを扱うデバイス１０６とのインタフェースであり、バス１０５経由でデータをやり取りする。Ｉ／Ｏ１０３に接続されるデバイスの例として、地上デジタルチューナーに代表される映像入力装置や、撮像デバイスに代表される画像入力装置や、ＬＣＤ（Ｌｉｑｕｉｄ  Ｃｒｙｓｔａｌ  Ｄｉｓｐｌａｙ）に代表される表示装置などがある。映像入力装置からはビデオデータが入力され、画像入力装置からは画像が入力される。一方、表示装置には画像処理装置で処理された画像が出力される。
【００４０】
フィルタ処理ユニット１００は、バス１０５を介して伝達された画像に対してフィルタ処理を行う。具体的にはＦＩＲ（Ｆｉｎｉｔｅ  Ｉｍｐｕｌｓｅ  Ｒｅｓｐｏｎｓｅ）フィルタ処理を行う。
【００４１】
図２には、上記フィルタ処理ユニット１００の構成例が示される。
【００４２】
フィルタ処理ユニット１００は、バスインタフェース（ＢＩＦ）２０１、制御部（ＣＴＲＬ）２０２、メモリ（ＭＥＭ）２０３、演算パラメータ算出部（ＡＣＰ）２０４、フィルタ回路２０８を含み、例えば単結晶シリコン基板などの一つの半導体基板に形成される。制御部（ＣＴＲＬ）２０２と演算パラメータ算出部（ＡＣＰ）２０４とを含んで、制御回路２０９が形成される。
【００４３】
バスインタフェース２０１は、バス１０５に結合されたホストプロセッサ１０１との間で各種情報をやり取りする。この各種情報には、フィルタ処理前後の画像や、フィルタ処理に関する各種制御情報などが含まれる。
【００４４】
制御部２０２は、例えばバスインタフェース２０１を介して与えられた命令を実行するＣＰＵ（中央演算装置）を含んで形成され、演算パラメータ算出部２０４の制御に用いる制御信号２１１や、フィルタ回路２０８の制御に用いる制御信号２１２を生成する。また、バス１０５を介してメモリ２０３に転送する画像の形式を決定し、バスインタフェース２０１に外部メモリ１０４からデータを転送する指示を送る。
【００４５】
メモリ２０３は、フィルタ処理ユニット１００で行われるフィルタ処理のタップ数や、演算結果のサイズや、フィルタ処理の対象の画像や、フィルタ処理後の画像などを一時的に保存するために用いられる。
【００４６】
フィルタ回路２０８は、内部レジスタ（ＩＮＴ−ＲＥＧ）２０６及び演算器（ＥＸＥ）２０７を含み、上記制御部２０２の制御下でフィルタ処理を行う。内部レジスタ２０６は、メモリ２０３から演算器２０７での演算処理に用いられるデータを受け取り、それを保持する。また、内部レジスタ２０６には演算器２０７での演算結果が書かれ、内部レジスタ２０６に保持されている演算結果はメモリ２０３に書かれる。演算器２０７は、特に制限されないが、ＦＩＲ（Ｆｉｎｉｔｅ  Ｉｍｐｕｌｓｅ  Ｒｅｓｐｏｎｓｅ）フィルタ処理を行う。
【００４７】
演算パラメータ算出部２０４は、メモリ２０３からフィルタ処理に関するパラメータを入力し、水平フィルタを処理する回数と、垂直フィルタを処理する回数と、水平フィルタ処理に対する入力サイズと、垂直フィルタ処理に対する入力サイズを算出する。以降では、それぞれ、水平フィルタ処理回数、垂直フィルタ処理回数、水平入力サイズ、垂直入力サイズと表記する。そして、水平フィルタ処理回数と垂直フィルタ処理回数から成るフィルタ処理回数信号２１３と水平入力サイズと垂直入力サイズから成る入力サイズ信号２１４を制御部２０２に入力する。
【００４８】
図３は、演算パラメータ算出部２０４の構成の一例である。
【００４９】
演算パラメータ算出部２０４は、垂直タップ数レジスタ（ＴＦＶ−ＲＥＧ）３０１、水平演算要素数レジスタ（ＮＨＯ−ＲＥＧ）３０２、垂直出力サイズレジスタ（ＶＯＳ−ＲＥＧ）３０３、水平フィルタ処理回数算出器（ＣＮＨＦＯ）３０４、垂直入力サイズ算出器（ＣＶＳＩ）３０５を含む。また、演算パラメータ算出部２０４は、水平タップ数レジスタ（ＴＦＨ−ＲＥＧ）３１１、垂直演算要素数レジスタ（ＮＶＯ−ＲＥＧ）３１２、水平出力サイズレジスタ（ＨＯＳ−ＲＥＧ）３１３、垂直フィルタ処理回数算出器（ＣＮＶＦＯ）３１４、水平入力サイズ算出器（ＣＨＳＩ）３１５を含む。以降、垂直タップ数をＴvと、水平演算用素数をＥhと、垂直出力サイズをＯvと、水平タップ数をＴhと、垂直演算用素数をＥvと、水平出力サイズをＯhと表記する。
【００５０】
垂直タップ数レジスタ３０１は、２次元画像における垂直方向のフィルタ処理のタップ数を保持する。
【００５１】
水平演算要素数レジスタ３０２は、２次元画像における水平方向のデータに対して演算器２０７が１サイクルで同時に行える積和演算の数を保持する。
【００５２】
垂直出力サイズレジスタ３０３は、２次元画像における垂直方向のフィルタ処理の演算結果のサイズを保持する。
【００５３】
水平フィルタ処理回数算出器３０４は、水平方向の出力サイズの画像を得るために必要な水平方向のフィルタ処理の回数Ｋhを算出する。水平方向のフィルタ処理の回数は垂直タップ数と、水平演算要素数と、垂直出力サイズを基に算出する。前記算出方法は、水平方向のフィルタを先に処理し、後に垂直フィルタを処理する場合は、Ｋ（Ｔv＋Ｏv−１）≦Ｅhを満たす最大の正の整数Ｋが存在するとき、１／Ｋを処理回数とする。また、水平フィルタ処理回数算出器３０４は、Ｋ（Ｔv＋Ｏv−１）≦Ｅhを満たす最大の正の整数Ｋが存在せず、かつ、Ｔv＋Ｏv／Ｋ−１≦Ｅh、かつ、Ｏv／Ｋの剰余＝０を満たす最小の正の整数Ｋが存在するときはＫを処理回数とする。一方、垂直方向のフィルタを先に処理し、後に水平方向のフィルタを処理する場合は、垂直フィルタの処理回数をＫvと表記したとき、Ｋ（Ｏv×Ｋv）≦Ｅhを満たす最大の正の整数Ｋが存在するとき、１／Ｋを処理回数とする。そして、Ｋ（Ｏv×Ｋv）≦Ｅhを満たす最大の正の整数Ｋが存在せず、かつ、（Ｏv×Ｋv）／Ｋ≦Ｅh、かつ、（Ｏv×Ｋv）／Ｋの剰余＝０を満たす最小の正の整数Ｋが存在するときはＫを処理回数とする。
【００５４】
図４に垂直フィルタのタップ数Ｔv＝４、垂直出力サイズＯv＝４、水平演算要素数Ｅh＝１０、垂直フィルタ処理回数Ｋv＝２、垂直方向のフィルタを先に処理し、後に水平方向のフィルタ処理をする例を示す。本例ではＫ（４×２）≦１０を満たす最小の正の整数１が存在することから、水平フィルタの処理回数Ｋh＝１となる。
【００５５】
垂直フィルタのタップ数Ｔv＝４、垂直出力サイズＯv＝８、水平演算要素数Ｅh＝１０、水平方向のフィルタを先に処理し、後に垂直方向のフィルタ処理をする例では、Ｋ（４＋８−１）≦１０を満たす最大の正数Ｋは存在せず、２＋８／Ｋ−１≦１０且つ８／Ｋの剰余＝０を満たす最小の正の整数は２であり、水平フィルタの処理回数Ｋh＝２となる。
【００５６】
垂直入力サイズ算出器３０５は、垂直タップ数と、水平フィルタ処理回数と、垂直出力サイズを基に、垂直方向のフィルタ処理する時に演算器２０７に１サイクルで投入するデータのサイズを算出する。算出方法は、水平フィルタ処理回数Ｋhとしたとき、Ｋh≧１のときはＴv＋Ｏv／Ｋh−１を入力データサイズとし、０＜Ｋh＜１のときは、（Ｔv＋Ｏv−１）／Ｋhを入力データサイズとする。図４の例では、Ｋh＝１であることから、垂直入力サイズは７となり、前記の垂直フィルタのタップ数Ｔv＝４、垂直出力サイズＯv＝８の例では、垂直入力サイズは７となる。
【００５７】
水平タップ数レジスタ３１１は、２次元画像における水平方向のフィルタ処理のタップ数を保持する。
【００５８】
垂直演算要素数レジスタ３１２は、２次元画像における垂直方向のデータに対して演算器２０７が１サイクルで同時に行える積和演算の数を保持する。
【００５９】
水平出力サイズレジスタ３１３は、２次元画像における水平方向のフィルタ処理の演算結果のサイズを保持する。
【００６０】
垂直フィルタ処理回数算出器３１４は、垂直方向の出力サイズの画像を得るために必要な垂直方向のフィルタ処理の回数Ｋhを算出する。垂直方向のフィルタ処理の回数は水平タップ数と、垂直演算要素数と、水平出力サイズを基に算出する。前記算出方法は、水平方向のフィルタを先に処理し、後に垂直フィルタを処理する場合は、水平フィルタの処理回数をＫｈと表記したとき、Ｋ（Ｏh×Ｋh）≦Ｅvを満たす最大の正の整数Ｋが存在するとき、１／Ｋを処理回数とする。Ｋ（Ｏh×Ｋh）≦Ｅvを満たす最大の正の整数Ｋが存在せず、かつ、（Ｏh×Ｋh）／Ｋ≦Ｅv、かつ、（Ｏh×Ｋh）／Ｋの剰余＝０を満たす最小の正の整数Ｋが存在するときはＫを処理回数とする。一方、垂直方向のフィルタを先に処理し、後に水平方向のフィルタを処理する場合は、Ｋ（Ｔh＋Ｏh−１）≦Ｅvを満たす最大の正の整数Ｋが存在するとき、１／Ｋを処理回数とする。Ｋ（Ｔh＋Ｏh−１）≦Ｅvを満たす最大の正の整数Ｋが存在せず、かつ、Ｔh＋Ｏh／Ｋ−１≦Ｅv、かつ、Ｏh／Ｋの剰余＝０を満たす最小の正の整数Ｋが存在するときはＫを処理回数とする。
【００６１】
図４の例では水平フィルタのタップ数Ｔh＝４、水平出力サイズＯh＝８、水平演算要素数Ｅh＝１０、垂直方向のフィルタを先に処理し、後に水平方向のフィルタ処理をする例を示す。本例では
Ｋ（４＋８−１）≦１０を満たす最小の正の整数は存在せず、４×８／Ｋ−１≦１０、かつ、８／Ｋの剰余＝０を満たすＫ＝２が存在することから、垂直水平フィルタの処理回数Ｋv＝２となる。
【００６２】
図５の例では水平フィルタのタップ数Ｔh＝２、水平出力サイズＯh＝４、水平演算要素数Ｅh＝１０、垂直方向のフィルタを先に処理し、後に水平方向のフィルタ処理をする例を示す。本例では
Ｋ（２＋４−１）≦１０を満たす最小の正の整数Ｋ＝２が存在することから、垂直フィルタの処理回数Ｋv＝１／２となる。
【００６３】
水平入力サイズ算出器３１５は、水平タップ数と、垂直フィルタ処理回数と、水平出力サイズを基に、水平方向のフィルタ処理する時に演算器２０７に１サイクルで投入するデータのサイズを算出する。算出方法は、水平フィルタ処理回数Ｋvとしたとき、Ｋv≧１のときはＴh＋Ｏh／Ｋv−１を入力データサイズとし、０＜Ｋv＜１のときは、（Ｔh＋Ｏh−１）／Ｋvを入力データサイズとする。
【００６４】
図４の例では、Ｋv＝２であることから、水平入力サイズは７となり、図５の例ではＫh＝１／２であることから、水平入力サイズは１０となる。
【００６５】
実施の形態１の構成における動作の流れは、メモリ２０３に入力する画像の形式を決定するために、フィルタ処理に必要な各種情報がメモリ２０３に入力される。ホストプロセッサ１０１からバス１０５を介して制御部２０２に起動指示が与えられると、フィルタ処理ユニット１００でのフィルタ処理が開始される。制御部２０２は、制御信号２１１を介してメモリ２０３に格納されている水平フィルタのタップ数、水平フィルタ処理要素数、水平出力サイズ、垂直フィルタのタップ数、垂直フィルタ処理要素数、垂直出力サイズを演算パラメータ算出部２０４に設定する。尚、水平フィルタのタップ数、水平フィルタ処理要素数、水平出力サイズ、垂直フィルタのタップ数、垂直フィルタ処理要素数、垂直出力サイズはメモリへ保持せず、演算パラメータ算出部２０４内部のレジスタへ直接書き込んでもよい。水平フィルタのタップ数、水平フィルタ処理要素数、水平出力サイズ、垂直フィルタのタップ数、垂直フィルタ処理要素数、垂直出力サイズの設定完了後、演算パラメータ算出部２０４は、水平フィルタ処理回数と、水平入力サイズと、垂直フィルタ処理回数と、垂直入力サイズを算出する。そして演算パラメータ算出部２０４は、水平フィルタ処理回数と垂直フィルタ処理回数から成るフィルタ処理回数信号２１３と水平入力サイズと垂直入力サイズから成る入力サイズ信号２１４を制御部２０２に入力する。制御部２０２は、フィルタ処理回数信号２１３と入力サイズ信号２１４によって入力された水平フィルタ処理回数と、水平入力サイズと、垂直フィルタ処理回数と、垂直入力サイズと、水平フィルタのタップ数と、垂直フィルタのタップ数に基づいて、外部メモリ１０４からメモリ２０３に入力する画像の形式を決定する。制御部２０２は上記形式の情報をバスインタフェース２０１に送り、外部メモリ１０４はバス１０５を介して上記形式に沿った画像をメモリ２０３に入力する。メモリ２０３に入力された画像はフィルタ回路２０８に送られ、フィルタ回路２０８はフィルタ処理を行い、メモリ２０３にデータを書き戻す。
【００６６】
ここで、フィルタ処理に必要な画像をＩ（Ｘ、Ｙ）（Ｘは水平方向の座標、Ｙは垂直方向の座標）、水平フィルタ処理回数をＫｈ、水平入力サイズをＩｈ、垂直フィルタ処理回数をＫｖ、垂直入力サイズをＩｖ、水平出力サイズをＯｈ、垂直出力サイズをＯｖとすると、上記画像の形式と転送は次のように行われる。
【００６７】
例えば図１１に示されるように、画像１１１が外部メモリ１０４に格納されている場合において、この画像１１１が複数の画像１１１−１、１１１−２に分割されてフィルタ処理ユニット１００に転送される。画像１１１−１、１１１−２のサイズは、垂直入力サイズＩｖと水平入力サイズＩｈとで決定される。また、画像１１１−１、１１１−２の基点１１２−１、１１２−２は、垂直フィルタ処理回数Ｋｖ、水平フィルタ処理回数Ｋｈ、水平出力サイズＯｈ、垂直出力サイズＯｖを利用して決定される。垂直フィルタ処理回数Ｋｖ、水平フィルタ処理回数Ｋｈは、演算パラメータ算出部２０４で算出されて、制御部２０２に伝達される。水平出力サイズＯｈ、垂直出力サイズＯｖは、ユーザによって設定される値であり、バス１０５を介してホストプロセッサ１０１からフィルタ処理ユニット１００に与えられる。
【００６８】
上記画像の形式と転送方法に関して、以下の９つの条件を挙げることができる。
（１）Ｋv＞１、かつ、Ｋｈ＞１の場合
画像の形式は、画像Ｉ内をＫv×Ｋｈ分割した画像Ｖｊm（ｊ＝０、１、・・・、Ｋv−１、ｍ＝０、１、・・・、Ｋh−１）とする。画像Vｊmは、画像Ｉ上の座標（Ｘ、Ｙ）＝（ｊ×Ｏｈ／Ｋv、ｍ×Ｏｖ／Ｋh）から幅Ｉh、高さＩvの画像である。転送は、V００、Ｖ０１、・・・、Ｖ０ Ｋｈ−１、・・・、ＶＫv−１ Ｋｈ−１の順に行う。
（２）Ｋv＞１、かつ、Ｋｈ＝１の場合
画像の形式は、画像I内をＫv分割した画像Ｖｊ（ｊ＝０、１、・・・、Ｋv−１）とする。画像Ｖｊは画像Ｉ上の座標（Ｘ、Ｙ）＝（ｊ×Ｏｈ／Ｋv、０）から幅Ｉh、高さＩｖの画像である。Ｖ０、Ｖ１、・・・、ＶＫv−１の順に画像が転送される。
（３）Ｋv＞１、かつ、Ｋｈ＜１の場合
画像の形式は、画像Ｉ内をＫv分割した画像を垂直方向に1／Ｋh個結合した画像Ｖｊ（ｊ＝０、１、・・・、Ｋv−１）とする。画像Ｖｊは画像Ｉ上の座標（Ｘ、Ｙ）＝（ｊ×Ｏｈ／Ｋv、０）から幅Ｉh、高さＩｖ×Ｋｈの画像を垂直方向に1／Ｋh個結合した画像である。Ｖ０、Ｖ１、・・・、ＶＫv−１の順に画像が転送される。
（４）Ｋv＝１、かつ、Ｋｈ＞１の場合
画像の形式は、画像Ｉ内をＫｈ分割した画像をＶm（ｍ＝０、１、・・・、Ｋh−１）とする。画像Ｖｋは画像Ｉ上の座標（Ｘ、Ｙ）＝（０、ｍ×Ｏｖ／Ｋh）から幅Ｉh、高さＩvの画像である。Ｖ０、Ｖ１、・・・、ＶＫｈ−１の順に画像が転送される。
（５）Ｋv＝１、かつ、Ｋｈ＝１の場合
画像の形式は画像Ｉとし、画像Iが転送される。
（６）Ｋv＝１、かつ、Ｋｈ＜１の場合
画像の形式は、画像Ｉを垂直方向に1／Ｋh個結合した画像Ｖとし、画像Ｖが転送される。
（７）Ｋv＜１、かつ、Ｋｈ＞１の場合
画像の形式は、画像Ｉ内をＫｈ分割した画像を水平方向に1／Ｋｖ個結合した画像Ｖｍ（ｍ＝０、１、・・・、Ｋh−１）とする。画像Ｖｍは画像I上の座標（Ｘ、Ｙ）＝（０、ｍ×Ｏｖ／Ｋh）から幅Ｉh×Ｋｖ、高さＩvの画像を水平方向に1／Ｋｖ個結合した画像である。Ｖ０、Ｖ１、・・・、ＶＫｈ−１の順に画像が転送される。
（８）Ｋv＜１、かつ、Ｋｈ＝１の場合
画像の形式は、画像Ｉを水平方向に1／Ｋｖ個結合した画像Ｖとし、画像Ｖが転送される。
（９）Ｋv＜１、かつ、Ｋｈ＜１の場合
画像の形式は、画像Ｉを垂直方向に1／Ｋｈ個結合し、水平方向に1／Ｋｖ個結合した画像Ｖとし、画像Ｖが転送される。
【００６９】
図４には、フィルタ処理するのに必要な画像と、メモリ２０３に格納される画像の形式と、内部レジスタ２０６に格納される画像の形式の一例が示される。図４では、垂直方向のフィルタを先に処理し、後に水平方向のフィルタを処理し、水平フィルタのタップ数Ｔhが４、水平演算要素数Ｅhが１０、水平出力サイズＯhが８、垂直フィルタのタップ数Ｔvが４、垂直演算要素数Ｅvが１０、垂直出力サイズＯvが４の例を表す。演算パラメータ算出部２０４から水平フィルタ処理回数Ｋhが１、垂直フィルタ処理回数Ｋvが２、水平入力サイズＩｈが７、垂直入力サイズＩｖが７となり、画像の形式と転送方法は上記条件（２）に該当する。外部メモリ１０４からメモリ２０３に転送される画像の形式は、Ｏｈ＝８、Ｏv＝４の画像を生成するために必要な幅１１、高さが７の画像４０１上の座標（Ｘ、Ｙ）＝（０、０）から幅７、高さ７の画像４０２と、画像４０１上の座標（Ｘ、Ｙ）＝（４、０）から幅７、高さが７の画像４０３である。メモリ２０３には、８バイト幅になるように画像４０２と画像４０３のそれぞれの水平方向に1画素無効なデータを追加し、画像４０２、画像４０３の順に並んだ画像４０４の形式で格納される。内部レジスタには１０画素が１エントリとして格納され、画像４０５に示されるように計１４エントリに画像４０２と画像４０３が格納される。画像４０２と画像４０３が内部レジスタ２０６に格納された後、演算器２０７により垂直方向に４タップのフィルタ処理が処理され、演算結果が画像４０６の形式で内部レジスタに入力される。垂直フィルタ処理が処理された後、垂直フィルタ処理結果（画像４０６）の水平方向に対して４タップのフィルタ処理が処理され、演算結果が内部レジスタ２０６に画像４０７の形式で格納される。
【００７０】
図５には、フィルタ処理するのに必要な画像と、メモリ２０３に格納された画像の形式と、内部レジスタ２０６に格納された画像のデータ形式の一例が示される。図５では先に垂直方向のフィルタ、後に水平方向のフィルタを処理し、水平フィルタのタップ数Ｔhが２、水平演算要素数Ｅhが１０、水平出力サイズＯhが４、垂直フィルタのタップ数Ｔvが２、垂直演算要素数Ｅvが１０、垂直出力サイズＯvが８の例を表す。演算パラメータ算出部２０４から水平フィルタ処理回数Ｋhが１、垂直フィルタ処理回数Ｋvが１／２、水平入力サイズＩｈが１０、垂直入力サイズＩｖが９、となり、画像の形式と転送方法は上記条件（８）に該当する。外部メモリ１０４からメモリ２０３に転送される画像の形式は、Ｏｈ＝４、Ｏv＝８の画像を生成するために必要な幅が５、高さが９の画像５０１と、画像５０２を結合した画像である。メモリ２０３には画像５０１と画像５０２を結合した画像５０３の形式で格納される。内部レジスタには１０画素のデータが１エントリとして格納され、画像５０４に示すように計９エントリに画像５０１と画像５０２が格納される。画像５０１と画像５０２が内部レジスタに入力された後、演算器２０７により垂直方向の４タップのフィルタ処理が処理され、演算結果が内部レジスタに画像５０５の形式で格納される。演算結果（画像５０５）に対して水平方向に４タップのフィルタ処理が処理され、その演算結果が内部レジスタ２０６に画像５０６の形式で格納される。
【００７１】
ここで、従来技術に従えば、第２のフィルタ処理に必要な数のデータを複数個の積和演算器に順次投入して同時に第１のフィルタ処理が行われ、上記第１のフィルタ処理の結果を積和演算器に順次投入して第２のフィルタ処理が行われる。このため、第１のフィルタ処理を行う演算器の要素数よりも第２のフィルタ処理に必要なデータが多い場合、例えば第１のフィルタ処理を行う演算要素数が８、第２のフィルタ処理に必要なデータとの関係で入力されるデータが１１画素の場合、この１１画素のデータを８画素と３画素に分け、２度フィルタ処理しなければならない。この結果、第２のフィルタ処理に必要なデータに対する演算が終わるまでに２度のフィルタ処理に必要なサイクルがかかり、その結果、第２のフィルタ処理を開始するタイミングが遅れる虞れがある。第２のフィルタ処理開始タイミングの遅れは、２次元画像に対するフィルタ処理に要する時間の短縮を阻害する。
【００７２】
これに対して実施の形態１によれば、フィルタ処理のタップ数と複数の演算器が同時に生成するデータのサイズ（演算要素数）に応じて、第１のレジスタに１サイクル当たりに入力されるデータの数が調整されることにより、第１のフィルタ処理を速やかに完了して、その結果を第２のフィルタ処理に供することができる。それにより第２のフィルタ処理の開始タイミングを従来に比べて早めることができる。例えば図４（条件（２）に該当）に示されるように、外部メモリ１０４からメモリ２０３に転送される画像が、Ｏｈ＝８、Ｏv＝４の画像を生成するために必要な幅１１、高さが７の画像４０１から、画像４０１上の座標（Ｘ、Ｙ）＝（０、０）から幅７、高さ７の画像４０２と、画像４０１上の座標（Ｘ、Ｙ）＝（４、０）から幅７、高さが７の画像４０３の２つに分割されることで、第２のフィルタ処理に必要なデータが７、第１のレジスタに１サイクル当たりに入力されるデータの数が７となる。これにより第１のフィルタ処理を速やかに完了して、その結果を第２のフィルタ処理に供することができる。
【００７３】
また、第２のフィルタ処理のタップ数と、第２のフィルタ処理の実行結果サイズと、第１のフィルタ処理を行う演算器の数に応じて第１のレジスタに１サイクル当たりに入力するデータの数が調整されることにより、第１のフィルタ処理を無駄に行う演算器が多くなる場合を回避することができる。例えば図５（条件（８）に該当）に示されるように、外部メモリ１０４からメモリ２０３に転送される画像が、Ｏｈ＝４、Ｏv＝８の画像を生成するために必要な幅が５、高さが９の画像５０１から、画像５０１と画像５０２を結合した画像になることで、第１のレジスタに１サイクル当たりに入力されるデータの数が１０となる。これにより第１のフィルタ処理を行う演算器が同時に生成可能なデータのサイズ分の演算が同時に行われ、無駄がなくなる。
【００７４】
上記実施の形態１によれば、以下の作用効果を得ることができる。
【００７５】
フィルタ処理のタップ数と複数の演算器が同時に生成するデータのサイズに応じて、第１のレジスタに１サイクル当たりに入力されるデータの数が調整されることにより、第１のフィルタ処理を速やかに完了して、その結果を第２のフィルタ処理に供することができる。これにより、第２のフィルタ処理の開始タイミングを従来に比べて早めることができる。また、第２のフィルタ処理のタップ数と、第２のフィルタ処理の実行結果サイズと、第１のフィルタ処理を行う演算器の数に応じて第１のレジスタに１サイクル当たりに入力するデータの数が調整されることにより、第１のフィルタ処理を行う演算器による無駄な演算を減らすことができる。
【００７６】
以上のことから、２次元画像の２次元フィルタ処理を効率良く行うことができる。
【００７７】
＜実施の形態２＞
図６には、本発明の実施の形態２に係るフィルタ処理ユニット１００の構成例が示される。
【００７８】
図６に示される構成は、図２に示されるフィルタ処理ユニットと類似した構成であるが、図２に示されるのと相違するのは、データ生成回路（ＤＡＴＡ−ＣＩＲ）６０５が設けられ、メモリ６０３に格納された画像をフィルタ回路６０８に転送するときに、データ生成回路６０５によってデータ形式が変換される点である。尚、図６においては、制御部６０２と演算パラメータ算出部６０４とを含んで制御回路６０９が形成される。
【００７９】
データ生成回路６０５は、演算パラメータ算出部６０４で算出された演算パラメータに基づいてメモリ６０３に格納されている画像を入力し、形式を変換してフィルタ回路６０８に転送する。
【００８０】
実施の形態２の構成における動作の流れは、まず、バス１０５を介して転送された画像やフィルタ処理に必要な各種情報が、バスインタフェース６０１を介してメモリ６０３に格納される。ホストプロセッサ１０１からバス１０５を介して制御部６０２に起動指示が与えられると、フィルタ処理ユニット１００でのフィルタ処理が開始される。制御部６０２は、メモリ６０３に格納されている水平フィルタのタップ数、水平フィルタ処理要素数、水平出力サイズ、垂直フィルタのタップ数、垂直フィルタ処理要素数、垂直出力サイズを演算パラメータ算出部６０４に設定する。尚、水平フィルタのタップ数、水平フィルタ処理要素数、水平出力サイズ、垂直フィルタのタップ数、垂直フィルタ処理要素数、垂直出力サイズはメモリ６０３へ保持せず、演算パラメータ算出部６０４内部のレジスタへ直接書き込んでもよい。水平フィルタのタップ数、水平フィルタ処理要素数、水平出力サイズ、垂直フィルタのタップ数、垂直フィルタ処理要素数、垂直出力サイズの設定完了後、演算パラメータ算出部６０４は、水平フィルタ処理回数と、水平入力サイズと、垂直フィルタ処理回数と、垂直入力サイズを算出し、データ生成回路６０５に送る。データ生成回路６０５は、入力された水平フィルタ処理回数と、水平入力サイズと、垂直フィルタ処理回数と、垂直入力サイズと、水平フィルタのタップ数と、垂直フィルタのタップ数に基づいて、フィルタ回路６０８に入力する画像の形式を決定し、上記形式に沿って画像を変換し、フィルタ回路６０８に転送する。上記画像の形式は実施の形態１と同様である。フィルタ回路６０６はフィルタ処理を行い、メモリ６０３にデータを書き戻す。
【００８１】
図７には、実施の形態２における上記条件（２）の場合のフィルタ処理に必要な画像と、メモリ６０３に格納された画像の形式と、内部レジスタ６０６に格納された画像の形式の一例が示される。図７に示される例と図４に示される例とで相違するのは、図４ではメモリ２０３に格納された時点でフィルタ処理に最適な画像形式で格納されているのに対して、図７では内部レジスタで初めてフィルタ処理に最適な画像形式で格納される点である。尚、図７における画像７０１、７０４、７０５、７０６、７０７は、それぞれ図４における画像４０１、４０４、４０５、４０６、４０７に対応する。
【００８２】
図８は、実施の形態２における上記条件（８）の場合のフィルタ処理に必要な画像と、メモリ６０３に格納された画像の形式と、内部レジスタ６０６に格納された画像の形式の一例である。図８に示される例と図５に示される例とで相違するのは、図５ではメモリ２０３に格納された時点でフィルタ処理に最適な画像形式で格納されているのに対して、図８では内部レジスタで初めてフィルタ処理に最適な画像形式で格納される点である。尚、図８における画像８０１、８０２、８０３、８０４、８０５、８０６は、それぞれ図５における画像５０１、５０２、５０３、５０４、５０５、５０６に対応する。
【００８３】
上記実施の形態２によれば、元画像をフィルタ処理ユニット１００内部のメモリ６０３に転送することにより、分割された画像を転送する場合に比べて少ないサイズになる。
【００８４】
＜実施の形態３＞
図９には、本発明の実施の形態３に係るプロセッサが示される。
【００８５】
図９に示されるプロセッサは、半導体装置の一例とされ、公知の半導体集積回路技術により単結晶シリコン基板などのひとつの半導体基板に形成される。
【００８６】
図９に示されるプロセッサは、フィルタ処理ユニット（ＦＩＬ）９００と、命令キャッシュ（ＩＣＡＣＨＥ）９０１と、メモリインタフェース（ＭＩＦ）９０２と、Ｉ／Ｏ（入出力回路）９０３と、外部メモリ（ＥＸＴ−ＭＥＭ）９０４、及びデータキャッシュ９０７を含み、それらがバス９０５を介して結合されて構成される。
【００８７】
フィルタ処理ユニット９００は、命令キャッシュ９０１を介してフェッチされた命令を実行することで、所定の演算処理を行う。演算した結果をストア命令等により出力する場合、データキャッシュ９０７で一旦保持される、あるいはバス９０５、メモリインタフェース９０２を介して外部メモリ９０４で保持される。また、ビデオやオーディオ等のデバイスとのインタフェースであるＩ／Ｏ９０３とバス９０５経由でやりとりすることもできる。Ｉ／Ｏ９０３に接続されるデバイスの例として、地上デジタルチューナーに代表される映像入力装置や、撮像デバイスに代表される画像入力装置や、ＬＣＤに代表される表示装置などがある。
【００８８】
図１０には、本発明の実施の形態３に係るフィルタ処理ユニット９００の構成例が示される。
【００８９】
このフィルタ処理ユニット９００は、バスインタフェース（ＢＩＦ）１００１、命令デコーダ（ＩＤＥＣ）１００２、演算パラメータ算出部（ＡＣＰ）１００４、インデックス生成器（ＩＮＤ−ＧＥＮ）１００５、内部レジスタ（ＩＮＴ−ＲＥＧ）１００６、フィルタ処理器１００９、データ生成回路（ＤＡＴＡ−ＣＩＲ）１０１０を含んで成る。
【００９０】
命令デコーダ１００２は、入力された命令をデコードすることによって、フィルタ処理に関するパラメータ信号と、ソースインデックス、フィルタ処理制御信号を生成する。フィルタ処理に関するパラメータは、具体的には、垂直タップ数、水平演算要素数、垂直出力サイズ、水平フィルタ処理回数、垂直入力サイズ、水平タップ数、垂直演算要素数、水平出力サイズ、垂直フィルタ処理回数、水平入力サイズである。
【００９１】
演算パラメータ算出部１００４は、上記命令デコーダ１００２から入力されたフィルタ処理に関するパラメータを基に、２次元画像における水平方向のフィルタ処理の処理回数と、垂直方向のフィルタ処理の処理回数とを算出する。また、演算パラメータ算出部１００４は、上記命令デコーダ１００２から入力されたフィルタ処理に関するパラメータを基に、水平方向のフィルタ処理を演算する演算器に１サイクルで投入する２次元画像の水平方向のサイズと、水平方向のフィルタ処理を演算する演算器に１サイクルで投入する２次元画像の水平方向のサイズを算出する。そして演算パラメータ算出部１００４は、水平フィルタ処理回数と垂直フィルタ処理回数をフィルタ処理器１００９に送り、水平入力データサイズと垂直入力データサイズをデータ生成回路１０１０に送る。演算パラメータ算出部１００４は、図３と同様の構成である。この場合において、演算パラメータ算出部１００４における垂直タップ数レジスタ３０１、水平演算要素数レジスタ３０２、垂直出力サイズレジスタ３０３、水平タップ数レジスタ３１１、垂直演算要素数レジスタ３１２、及び水平出力サイズレジスタ３１３の少なくとも一つを更新するための命令が、上記命令デコーダ１００２でデコードされる。それにより、対応するレジスタが更新される。
【００９２】
インデックス生成器１００５は、フィルタ処理の開始時は演算パラメータ算出部１００４から入力された水平フィルタ処理回数と垂直フィルタ処理回数を基に、上記命令デコーダ１００２を介して入力されたソースインデックスを補正して、補正ソースインデックスを生成し、内部で保持する。フィルタ処理中の場合は補正ソースインデックスをインクリメントする。
【００９３】
内部レジスタ１００６は、フィルタ処理対象として取り込まれたデータを保持すると共に、上記インデックス生成器１００５から入力された補正ソースインデックスに対応するデータを出力する。
【００９４】
フィルタ処理器１００９は、特に制限されないが、データのシフトが可能なシフトレジスタ（ＳＦＴ−ＲＥＧ）１００７、上記シフトレジスタ１００７でのデータシフトを制御するシフト制御回路（ＳＦＴ−ＣＴＲＬ）１００３、上記内部レジスタ１００６の出力データの演算処理を行うＳＩＭＤ演算器１００８から構成される。ＳＩＭＤとはSingle Instruction/Multiple Data（単一命令／複数データ）の略であり、ＳＩＭＤ演算とは1つの命令で複数のデータに対して処理を行う演算方式を意味する。ＳＩＭＤ演算器１００８での演算結果は上記内部レジスタ１００６に書き戻される。また、フィルタ処理器１００９では、演算パラメータ算出部１００４から入力されたフィルタ処理回数分のフィルタ処理を行う。
【００９５】
データ生成回路１０１０は、外部メモリ９０４またはデータキャッシュ９０７に格納されている画像を入力し、演算パラメータ算出部１００４から入力された演算パラメータに基づいて画像形式を変換し、内部レジスタ１００６に転送する。この画像の形式は実施の形態１の制御部２０２によって決定される形式と同様である。
【００９６】
上記の構成において、命令デコーダ１００２に入力されたコマンドによってフィルタ処理が指示された場合、まず命令デコーダ１００２から、内部レジスタに格納されている読み出し対象データの基点であるソースインデックスをインデックス生成器１００５へ入力する。また、命令デコーダ１００２から、フィルタ処理に関する各種パラメータを演算パラメータ算出部１００４に入力する。演算パラメータ算出部１００４は、上記実施の形態１、２の場合と同様に、水平フィルタ処理回数と、水平入力サイズと、垂直フィルタ処理回数と、垂直入力サイズを算出し、上記パラメータ全てをデータ生成回路１０１０に入力し、水平フィルタ処理回数と垂直フィルタ処理回数をインデックス生成器１００５に入力する。インデックス生成器１００５は、水平フィルタ処理回数と、垂直フィルタ処理回数と、ソースインデックスを基に補正ソースインデックスを算出し、内部レジスタ１００６に入力する。内部レジスタ１００６は補正ソースインデックスに対応したレジスタのデータをフィルタ処理器１００９のシフトレジスタ１００７へ入力する。シフトレジスタ１００７はシフト制御回路１００３によってデータをシフトするか、内部レジスタ１００６からのデータを入力する。シフトレジスタのデータをシフトする場合は、水平フィルタ処理の場合である。シフトレジスタ１００７からのデータがＳＩＭＤ演算器１００８に入力され、その演算結果が内部レジスタ１００６に書き戻され、フィルタ処理を完了する。
【００９７】
上記の構成の半導体装置においても、演算パラメータ算出部１００４は、上記実施の形態１、２の場合と同様に、水平フィルタ処理回数と、水平入力サイズと、垂直フィルタ処理回数と、垂直入力サイズを算出する。そしてこの演算パラメータ算出部１００４で算出されたパラメータに基づいてフィルタ処理器１００９でのフィルタ処理が行われる。このとき、回路１０１０は、外部メモリ９０４またはデータキャッシュ９０７に格納されている画像を入力し、演算パラメータ算出部１００４から入力された演算パラメータに基づいて画像形式を変換し、内部レジスタ１００６に転送する。この画像の形式は実施の形態１の制御部２０２によって決定される形式と同様であることから、第１のフィルタ処理のタップ数と、第１のフィルタ処理の実行結果のサイズと、第２の演算器の数に応じて、内部レジスタ１００６に１サイクル当たりに入力するデータの数を調整することができる。また、上記第２のフィルタ処理のタップ数と、第２のフィルタ処理の実行結果サイズと、第１の演算器の数に応じて内部レジスタ１００６に１サイクル当たりに入力するデータの数を調整することができる。それにより、このフィルタ処理ユニット９００においても、上記実施の形態１、２の場合と同様の効果を得ることができる。
【００９８】
＜実施の形態４＞
図１２には、演算パラメータ算出部２０４の別の構成例が示される。
【００９９】
図１２に示される演算パラメータ算出部２０４が図３に示されるのと相違するのは、タップ数・出力サイズ生成部１２０１が符号化情報１２００を用いて、垂直タップ数、垂直出力サイズ、水平タップ数、水平出力サイズを設定する点である。
【０１００】
例えば、ＭＰＥＧ１、ＭＰＥＧ２の輝度画像における動き予測処理では、垂直タップ数が２、水平タップ数が２、垂直出力サイズが８、水平出力サイズが８となる。また、ＶＣ−１（ＷＭＶ９）と呼ばれる符号化方式では、動き予測処理にバイキュービック法を用いる場合は、垂直タップ数が４、水平タップ数が４、垂直出力サイズが８、水平出力サイズが８となる。
【０１０１】
上記実施の形態４によれば、外部から入力する信号が垂直タップ数、垂直出力サイズ、水平タップ数、水平出力サイズではなく、フィルタ処理回路内で符号化方式１２００を判定し、垂直タップ数、垂直出力サイズ、水平タップ数、水平出力サイズを設定可能になる。符号化された画像と符号化情報だけで上記実施の形態１、２の場合と同様の効果を得ることができる。
【０１０２】
以上、本発明者によってなされた発明を具体的に説明したが、本発明はそれに限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。
【０１０３】
例えば、上記実施の形態では、本発明における第１のレジスタ、第２のレジスタ、及び第３のレジスタを内部レジスタ２０６によって形成したが、第１のレジスタ、第２のレジスタ、及び第３のレジスタをそれぞれ別個のレジスタで形成することができる。また、上記実施の形態では、本発明における第１の演算器及び第２の演算器を演算器２０７によって形成したが、第１の演算器及び第２の演算器ををそれぞれ別個の演算器で形成することができる。
【０１０４】
図９におけるフィルタ処理ユニット９００として、図２に示される構成を採用しても良い。
【符号の説明】
【０１０５】
１００、９００  フィルタ処理ユニット
１０１  ホストプロセッサ
１０２、９０２  メモリインタフェース
１０３、９０３  Ｉ／Ｏ
１０４、９０４  外部メモリ
１０５、９０５  バス
２０１、１００１  バスインタフェース
２０２  制御部
２０３  メモリ
２０４  演算パラメータ算出部
２０６  内部レジスタ
２０７  演算器
２０８  フィルタ回路
２０８  インデックスデータ取得部
２０９、６０９  制御回路
３０１  垂直タップ数レジスタ
３０２  水平演算要素数レジスタ
３０３  垂直出力サイズレジスタ
３０４  水平フィルタ処理回数算出器
３０５  垂直入力サイズ算出器
３１１  水平タップ数レジスタ
３１２  垂直演算要素数レジスタ
３１３  水平出力サイズレジスタ
３１４  垂直フィルタ処理回数算出器
３１５  水平入力サイズ算出器
１００２  命令デコーダ
１００３  シフト制御回路
１００４  演算パラメータ算出部
１００５  インデックス生成器
１００６  内部レジスタ
１００７  シフトレジスタ
１００８  ＳＩＭＤ演算器
１００９  フィルタ処理器
１０１０  データ生成回路
１２０１  タップ数・出力サイズ生成器
【図１】
2010192983.tif 000003
【図２】
2010192983.tif 000004
【図３】
2010192983.tif 000005
【図４】
2010192983.tif 000006
【図５】
2010192983.tif 000007
【図６】
2010192983.tif 000008
【図７】
2010192983.tif 000009
【図８】
2010192983.tif 000010
【図９】
2010192983.tif 000011
【図１０】
2010192983.tif 000012
【図１１】
2010192983.tif 000013
【図１２】
2010192983.tif 000014