JP2010192983A - フィルタ処理装置及び半導体装置 - Google Patents

フィルタ処理装置及び半導体装置 Download PDF

Info

Publication number
JP2010192983A
JP2010192983A JP2009032687A JP2009032687A JP2010192983A JP 2010192983 A JP2010192983 A JP 2010192983A JP 2009032687 A JP2009032687 A JP 2009032687A JP 2009032687 A JP2009032687 A JP 2009032687A JP 2010192983 A JP2010192983 A JP 2010192983A
Authority
JP
Japan
Prior art keywords
filter processing
register
filter
size
data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Withdrawn
Application number
JP2009032687A
Other languages
English (en)
Inventor
Yoshitaka Hiramatsu
義崇 平松
Keimei Nakada
啓明 中田
Masakazu Ehama
真和 江浜
Seiji Mochizuki
誠二 望月
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Renesas Electronics Corp
Original Assignee
Renesas Electronics Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Renesas Electronics Corp filed Critical Renesas Electronics Corp
Priority to JP2009032687A priority Critical patent/JP2010192983A/ja
Priority to US12/705,898 priority patent/US20100211623A1/en
Publication of JP2010192983A publication Critical patent/JP2010192983A/ja
Withdrawn legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/15Correlation function computation including computation of convolution operations
    • G06F17/153Multidimensional correlation or convolution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03HIMPEDANCE NETWORKS, e.g. RESONANT CIRCUITS; RESONATORS
    • H03H17/00Networks using digital techniques
    • H03H17/02Frequency selective networks
    • H03H17/0202Two or more dimensional filters; Filters for complex signals

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computing Systems (AREA)
  • Algebra (AREA)
  • Computer Hardware Design (AREA)
  • Databases & Information Systems (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Image Processing (AREA)
  • Picture Signal Circuits (AREA)

Abstract

【課題】画像に対するフィルタ処理の効率向上を図る。
【解決手段】フィルタ処理装置(100)は、フィルタ回路(208)と制御回路(209)とを含む。
上記フィルタ回路は、データを格納可能な第1のレジスタ(206)と、上記第1のレジスタの出力データに基づいて第1のフィルタ処理を実行可能な第1の演算器(207)と、その演算結果を格納可能な第2のレジスタ(206)と、上記第2のレジスタの出力データに基づいて第2のフィルタ処理を実行可能な第2の演算器(207)とを含む。上記制御回路は、上記第1のフィルタ処理のタップ数と、上記第1のフィルタ処理の実行結果のサイズと、上記第2の演算器の数に応じて、上記第1のレジスタに1サイクル当たりに入力するデータの数を調整し、第1のフィルタ処理を速やかに完了させる。
【選択図】図2

Description

本発明は、フィルタ処理技術、さらには当該技術が適用されたフィルタ処理装置及び半導体装置に関する。
フィルタ処理(畳み込み演算)は、フィルタ係数を順次呼び出し、読み出した係数ごとに入力データと積和演算を行い、その結果を累積加算することで、演算器の個数を越えたタップ数の演算処理を可能にしている。
例えば特許文献1には、使用するフィルタのタップ数が大きくなってもハードウエア規模の増大に繋がらないように構成されたデジタルフィルタが示される。この技術によれば、書き込まれたフィルタ係数あるいは制御データに基づき、装置の制御が行われるため、メモリ手段に書き込むデータを変更することにより装置規模の増加を招くことなく、フィルタやサンプリングレート変換率の変更を行うことができる。
特開2001−24479号公報
従来のフィルタ処理技術について本願発明者が検討したところ、以下のように、画像などの2次元データに対する2次元フィルタ処理の効率向上を図る必要のあることが見いだされた。これ以降、2次元データの例として画像を用いる。
画像に対する2次元フィルタ処理は、多くの場合、画像の水平方向と垂直方向に2度実施される。処理の流れは、まず、第2のフィルタ処理に必要な数のデータを第1のフィルタ処理を行う複数個の演算器に順次投入して同時に第1のフィルタ処理が行われ、上記第1のフィルタ処理の結果を第2のフィルタ処理に相当する複数個の演算器に順次投入して第2のフィルタ処理が行われる。このため、第1のフィルタ処理を行う演算器の要素数よりも第2のフィルタ処理に必要なデータが多い場合、第2のフィルタ処理に必要なデータに対する処理が終わるまでに複数回のフィルタ処理をすることになり、その結果、第2のフィルタ処理を開始するタイミングが遅れる虞れがある。また、第1のフィルタ処理を行う演算器の要素数よりも第2のフィルタ処理に必要なデータが極端に少ない場合には、第1のフィルタ処理を無駄に行う演算器が多くなる。
特許文献1記載技術は、フィルタ処理のタップ数、及び複数の演算器が同時に生成するデータのサイズに応じて、1サイクル当たりに入力されるデータの数を調整するものではなく、上記課題を解決することはできない。
本発明の目的は、画像などの2次元データに対する2次元フィルタ処理の効率を向上させるための技術を提供することにある。
本発明の上記並びにその他の目的と新規な特徴は本明細書の記述及び添付図面から明らかになるであろう。
本願において開示される発明のうち代表的なものについて簡単に説明すれば下記のとおりである。
すなわち、フィルタ処理装置は、フィルタ回路と制御回路とを含む。上記フィルタ回路は、データを格納可能な第1のレジスタと、上記第1のレジスタの出力データに基づいて第1のフィルタ処理を実行可能な第1の演算器と、上記第1の演算器の演算結果を格納可能な第2のレジスタと、上記第2のレジスタの出力データに基づいて第2のフィルタ処理を実行可能な第2の演算器とを含む。上記制御回路は、上記第1のフィルタ処理のタップ数と、上記第1のフィルタ処理の実行結果のサイズと、上記第2の演算器の数に応じて、上記第1のレジスタに1サイクル当たりに入力するデータの数を調整し、第1のフィルタ処理を速やかに完了させる。
本願において開示される発明のうち代表的なものによって得られる効果を簡単に説明すれば下記のとおりである。
すなわち、本発明によれば、画像に対するフィルタ処理の効率向上を図ることができる。
本発明の実施の形態1に係る画像処理装置の構成例ブロック図である。 上記画像処理装置におけるフィルタ処理ユニットの構成例ブロック図である。 図2に示されるフィルタ処理ユニットにおける演算パラメータ算出回路の構成例ブロック図である。 図2に示されるフィルタ処理ユニットにおいて、フィルタ処理するのに必要な画像、メモリに格納される画像の形式、内部レジスタに格納される画像の形式についての説明図である。 図2に示されるフィルタ処理ユニットにおいて、フィルタ処理するのに必要な画像、メモリに格納される画像の形式、内部レジスタに格納される画像の形式についての別の説明図である。 上記画像処理装置におけるフィルタ処理ユニットの別の構成例ブロック図である。 図6に示されるフィルタ処理ユニットにおいて、フィルタ処理するのに必要な画像、メモリに格納される画像の形式、内部レジスタに格納される画像の形式についての説明図である。 図6に示されるフィルタ処理ユニットにおいて、フィルタ処理するのに必要な画像、メモリに格納される画像の形式、内部レジスタに格納される画像の形式についての別の説明図である。 本発明の実施の形態3に係るプロセッサの構成例ブロック図である。 上記プロセッサにおけるフィルタ処理ユニットの構成例ブロック図である。 画像の形式と転送についての説明図である。 本発明の実施の形態4に係る演算パラメータ算出回路の構成例ブロック図である。
1.実施の形態の概要
先ず、本願において開示される発明の代表的な実施の形態について概要を説明する。代表的な実施の形態についての概要説明で括弧を付して参照する図面中の参照符号はそれが付された構成要素の概念に含まれるものを例示するに過ぎない。
〔1〕本発明の代表的な実施の形態に係るフィルタ処理装置(100)は、入力されたデータに対してフィルタ処理を行うフィルタ回路(208)と、上記フィルタ回路の動作を制御する制御回路(209)とを含む。上記フィルタ回路は、データを格納可能な第1のレジスタ(206)と、上記第1のレジスタの出力データに基づいて第1のフィルタ処理を実行可能な第1の演算器(207)とを含む。さらに上記フィルタ回路は、上記第1の演算器の演算結果を格納可能な第2のレジスタ(206)と、上記第2のレジスタの出力データに基づいて第2のフィルタ処理を実行可能な第2の演算器(207)とを含む。上記制御回路は、上記第1のフィルタ処理のタップ数と、上記第1のフィルタ処理の実行結果のサイズと、上記第2の演算器の数に応じて、上記第1のレジスタに1サイクル当たりに入力するデータの数を調整可能にされて成る。
上記の構成によれば、上記制御回路は、上記第1のフィルタ処理のタップ数と、上記第1のフィルタ処理の実行結果のサイズと、上記第2の演算器の数に応じて、上記第1のレジスタに1サイクル当たりに入力するデータの数を調整する。それにより第1のフィルタ処理を速やかに完了して、その結果を第2のフィルタ処理に供することができ、第2のフィルタ処理の開始タイミングを従来に比べて早めることができる。
〔2〕別の観点によれば、上記フィルタ回路は、第1のレジスタ(206)、第1の演算器(207)、第2のレジスタ(206)、第2の演算器(207)、第3のレジスタ(206)を含んで構成することができる。上記第1のレジスタ(206)には上記データが格納される。上記第1の演算器(207)は、上記第1のレジスタの出力データに基づいて第1のフィルタ処理を実行する。上記第2のレジスタ(206)には、上記第1の演算器の演算結果が格納される。上記第2の演算器(207)は、上記第2のレジスタの出力データに基づいて第2のフィルタ処理を実行する。上記第3のレジスタ(206)には、上記第2の演算器の演算結果が格納される。
〔2〕別の観点によれば、上記フィルタ回路は、上記データを格納可能な第1のレジスタ(206)と、可能な第1の演算器(207)と、可能な第2のレジスタ(206)と、上記第2のレジスタの出力データに基づいて第2のフィルタ処理を実行可能な第2の演算器(207)と、上記第2の演算器の演算結果を格納する第3のレジスタ(206)とを含む。
上記制御回路は、上記第1のフィルタ処理のタップ数と、上記第1のフィルタ処理の実行結果のサイズと、上記第2の演算器の数に応じて、上記第1のレジスタに1サイクル当たりに入力するデータの数を調整する。そして上記制御回路は、上記第2のフィルタ処理のタップ数と、上記第2のフィルタ処理の実行結果サイズと、上記第1の演算器の数に応じて上記第2のレジスタに1サイクル当たりに入力するデータの数を調整する。
上記の構成によれば、上記制御回路は、上記第1のフィルタ処理のタップ数と、上記第1のフィルタ処理の実行結果のサイズと、上記第2の演算器の数に応じて、上記第1のレジスタに1サイクル当たりに入力するデータの数を調整する。それにより第1のフィルタ処理を速やかに完了して、その結果を第2のフィルタ処理に供することができ、第2のフィルタ処理の開始タイミングを従来に比べて早めることができる。また、上記第2のフィルタ処理のタップ数と、上記第2のフィルタ処理の実行結果サイズと、上記第1の演算器の数に応じて上記第2のレジスタに1サイクル当たりに入力するデータの数が調整されることにより、第1のフィルタ処理を行う演算器の要素数よりも第2のフィルタ処理に必要なデータが極端に少ない場合を回避することができる。
〔3〕上記〔2〕において、上記制御回路は、演算パラメータを算出可能な演算パラメータ算出部(204)と、上記演算パラメータに基づいて上記フィルタ回路の動作を制御する制御部(202)とを含んで構成することができる。
上記演算パラメータ算出部は、第1のタップ数レジスタ(301)、第2のタップ数レジスタ(311)、第1の演算要素数レジスタ(312)、第2の演算要素数レジスタ(302)、第1の出力サイズレジスタ(303)、第2の出力サイズレジスタ(313)、第1のフィルタ処理回数算出器(314)と、第2のフィルタ処理回数算出器(304)、第1の入力サイズ算出器(305)、及び第2の入力サイズ算出器(315)を含んで構成することができる。第1のタップ数レジスタ(301)は、画像の第1のフィルタ処理のタップ数を保持する。第2のタップ数レジスタ(311)は、画像の第2のフィルタ処理のタップ数を保持する。第1の演算要素数レジスタ(312)は、上記第1のフィルタ処理のための演算器の数を保持する。第2の演算要素数レジスタ(302)は、上記第2のフィルタ処理のための演算器の数を保持する。第1の出力サイズレジスタ(303)は、上記第1のフィルタ処理の実行結果のサイズを保持する。第2の出力サイズレジスタ(313)は、上記第2のフィルタ処理の実行結果のサイズを保持する。第1のフィルタ処理回数算出器(314)は、上記第2のフィルタ処理のタップ数と上記第2のフィルタ処理の実行結果のサイズと上記第1のフィルタ処理のための演算器の数から第1のフィルタ処理の回数を算出する。第2のフィルタ処理回数算出器(304)は、上記第1のフィルタ処理のタップ数と上記第1のフィルタ処理の実行結果のサイズと上記第2のフィルタ処理のための演算器の数から第2のフィルタ処理の回数を算出する。第1の入力サイズ算出器(305)は、上記第1のフィルタ処理のタップ数と上記第2のフィルタ処理の回数と上記第1のフィルタ処理の実行結果のサイズから上記第1のレジスタに1サイクル当たりに入力するデータの数を算出する。第2の入力サイズ算出器(315)は、上記第2のフィルタ処理のタップ数と上記第1のフィルタ処理の回数と上記第2のフィルタ処理の実行結果のサイズから上記第2のレジスタに1サイクル当たりに入力するデータの数を算出する。
上記制御部は、上記第1のレジスタに1サイクル当たりに入力するデータの数と、上記第2のレジスタに1サイクル当たりに入力するデータの数と、上記第1のフィルタ処理の回数と、上記第2のフィルタ処理の回数に応じてフィルタ処理をする。
上記の構成によれば、第1のフィルタ処理系と第2のフィルタ処理系とがそれぞれ別個に設けられているため、第1の入力サイズ算出結果と、第2の入力サイズ算出結果とを速やかに得ることができる。
〔4〕上記〔3〕において、上記制御部は、上記第1のタップ数レジスタと上記第2のタップ数レジスタと上記第1の出力サイズレジスタと上記第2の出力サイズレジスタと上記第1の演算要素数レジスタと上記第2の演算要素数レジスタの更新を指示するための命令を実行するCPUを含む。
〔5〕上記〔2〕において、上記フィルタ処理装置は、バスに結合され、上記バスを介して、符号化された画像が入力され、上記符号化された画像であるストリーム中にあるパラメータを基に上記第1のレジスタに1サイクル当たりに入力するデータの数と上記第2のレジスタに1サイクル当たりに入力するデータの数を調整する。
〔6〕別の観点によれば、半導体装置は、命令デコーダ(1002)、演算パラメータ算出器(1004)、インデックス生成器(1005)、内部レジスタ(1006)、演算器(1009)、及びデータ生成回路(1010)を含んで構成することができる。上記命令デコーダ(1002)は、入力された命令をデコードする。上記演算パラメータ算出器(1004)は、上記命令デコーダを介して与えられたフィルタ処理に関するパラメータを基に第1のフィルタ処理の処理回数と第2のフィルタ処理の処理回数と第1のフィルタ処理のための演算器に1サイクルで投入するデータの数を算出すると、第2のフィルタ処理のための演算器に1サイクルで投入するデータの数を算出する。上記インデックス生成器(1005)は、上記命令デコーダを介して取り込まれたソースインデックスを上記演算パラメータ算出器によって算出された第1のフィルタ処理の処理回数または第2のフィルタ処理の処理回数を基に補正することにより補正ソースインデックスを生成する。内部レジスタ(1006)は、上記ソースインデックスに対応するデータを出力する。上記演算器(1009)は、上記内部レジスタから出力されたデータをフィルタリングする。上記データ生成回路(1010)は、画像を入力し、上記演算パラメータ算出器から出力された演算パラメータを基に画像の形式を変換し、上記内部レジスタに入力する。
上記演算器は、上記内部レジスタから出力されたデータをシフト可能なシフトレジスタ(1007)と、上記シフトレジスタの出力データを演算処理するSIMD演算器(1008)とを含む。
上記演算パラメータ算出器は、第1のタップ数レジスタ(301)、第2のタップ数レジスタ(311)、第1の演算要素数レジスタ(312)、第2の演算要素数レジスタ(302)、及び第1の出力サイズレジスタ(303)を含む。また上記演算パラメータ算出器は、第2の出力サイズレジスタ(313)、第1のフィルタ処理回数算出器(314)、第2のフィルタ処理回数算出器(304)、第1の入力サイズ算出器(305)、第2の入力サイズ算出器(315)とを含む。
ここで上記第1のタップ数レジスタ(301)は、画像の第1のフィルタ処理のタップ数を保持する。上記第2のタップ数レジスタ(311)は、画像の第2のフィルタ処理のタップ数を保持する。上記第1の演算要素数レジスタ(312)は、上記第1のフィルタ処理のための演算器の数を保持する。上記第2の演算要素数レジスタ(302)は、上記第2のフィルタ処理のための演算器の数を保持する。上記第1の出力サイズレジスタ(303)は、上記第1のフィルタ処理の実行結果のサイズを保持する。上記第2の出力サイズレジスタ(313)は、上記第2のフィルタ処理の実行結果のサイズを保持する。上記第1のフィルタ処理回数算出器(314)は、上記第2のフィルタ処理のタップ数と上記第2のフィルタ処理の実行結果のサイズと上記第1のフィルタ処理のための演算器の数から第1のフィルタ処理の回数を算出する。上記第2のフィルタ処理回数算出器(304)は、上記第1のフィルタ処理のタップ数と上記第1のフィルタ処理の実行結果のサイズと上記第2のフィルタ処理のための演算器の数から第2のフィルタ処理の回数を算出する。上記第1の入力サイズ算出器(305)は、上記第1のフィルタ処理のタップ数と上記第2のフィルタ処理の回数と上記第1のフィルタ処理の実行結果のサイズから上記第1のレジスタに1サイクル当たりに入力するデータの数を算出する。上記第2の入力サイズ算出器(315)は、上記第2のフィルタ処理のタップ数と上記第1のフィルタ処理の回数と上記第2のフィルタ処理の実行結果のサイズから上記第2のレジスタに1サイクル当たりに入力するデータの数を算出する。
〔7〕上記〔6〕において、上記命令デコーダは、上記第1のタップ数レジスタ、第2のタップ数レジスタ、第1の演算要素数レジスタ、第2の演算要素数レジスタ、第1の出力サイズレジスタ、及び第2の出力サイズレジスタの少なくとも一つを更新する命令をデコードする。
2.実施の形態の詳細
次に、実施の形態について更に詳述する。
以降では、画像の垂直方向へのフィルタ処理を垂直フィルタ、画像の水平方向へのフィルタ処理を水平フィルタと表記する。尚、各図面において、同一の符号が付されている構成要素は同一の機能を有することとする。
<実施の形態1>
図1には、本発明の実施の形態1に係る画像処理装置が示される。
図1に示される画像処理装置は、フィルタ処理ユニット(FIL)100と、ホストプロセッサ(HST)101と、メモリインタフェース(MIF)102と、I/O(入出力回路)103と、外部メモリ(EXT−MEM)104を含み、それらがバス105を介して結合されて構成される。
ホストプロセッサ101は、所定のプログラムを実行することで画像処理装置の全体的な動作制御を行う。
外部メモリ104は、ホストプロセッサ101で実行されるプログラムや、各種データが格納されており、バス105、メモリインタフェース102を介してデータをやり取りする。
I/O103は、画像やビデオやオーディオを扱うデバイス106とのインタフェースであり、バス105経由でデータをやり取りする。I/O103に接続されるデバイスの例として、地上デジタルチューナーに代表される映像入力装置や、撮像デバイスに代表される画像入力装置や、LCD(Liquid Crystal Display)に代表される表示装置などがある。映像入力装置からはビデオデータが入力され、画像入力装置からは画像が入力される。一方、表示装置には画像処理装置で処理された画像が出力される。
フィルタ処理ユニット100は、バス105を介して伝達された画像に対してフィルタ処理を行う。具体的にはFIR(Finite Impulse Response)フィルタ処理を行う。
図2には、上記フィルタ処理ユニット100の構成例が示される。
フィルタ処理ユニット100は、バスインタフェース(BIF)201、制御部(CTRL)202、メモリ(MEM)203、演算パラメータ算出部(ACP)204、フィルタ回路208を含み、例えば単結晶シリコン基板などの一つの半導体基板に形成される。制御部(CTRL)202と演算パラメータ算出部(ACP)204とを含んで、制御回路209が形成される。
バスインタフェース201は、バス105に結合されたホストプロセッサ101との間で各種情報をやり取りする。この各種情報には、フィルタ処理前後の画像や、フィルタ処理に関する各種制御情報などが含まれる。
制御部202は、例えばバスインタフェース201を介して与えられた命令を実行するCPU(中央演算装置)を含んで形成され、演算パラメータ算出部204の制御に用いる制御信号211や、フィルタ回路208の制御に用いる制御信号212を生成する。また、バス105を介してメモリ203に転送する画像の形式を決定し、バスインタフェース201に外部メモリ104からデータを転送する指示を送る。
メモリ203は、フィルタ処理ユニット100で行われるフィルタ処理のタップ数や、演算結果のサイズや、フィルタ処理の対象の画像や、フィルタ処理後の画像などを一時的に保存するために用いられる。
フィルタ回路208は、内部レジスタ(INT−REG)206及び演算器(EXE)207を含み、上記制御部202の制御下でフィルタ処理を行う。内部レジスタ206は、メモリ203から演算器207での演算処理に用いられるデータを受け取り、それを保持する。また、内部レジスタ206には演算器207での演算結果が書かれ、内部レジスタ206に保持されている演算結果はメモリ203に書かれる。演算器207は、特に制限されないが、FIR(Finite Impulse Response)フィルタ処理を行う。
演算パラメータ算出部204は、メモリ203からフィルタ処理に関するパラメータを入力し、水平フィルタを処理する回数と、垂直フィルタを処理する回数と、水平フィルタ処理に対する入力サイズと、垂直フィルタ処理に対する入力サイズを算出する。以降では、それぞれ、水平フィルタ処理回数、垂直フィルタ処理回数、水平入力サイズ、垂直入力サイズと表記する。そして、水平フィルタ処理回数と垂直フィルタ処理回数から成るフィルタ処理回数信号213と水平入力サイズと垂直入力サイズから成る入力サイズ信号214を制御部202に入力する。
図3は、演算パラメータ算出部204の構成の一例である。
演算パラメータ算出部204は、垂直タップ数レジスタ(TFV−REG)301、水平演算要素数レジスタ(NHO−REG)302、垂直出力サイズレジスタ(VOS−REG)303、水平フィルタ処理回数算出器(CNHFO)304、垂直入力サイズ算出器(CVSI)305を含む。また、演算パラメータ算出部204は、水平タップ数レジスタ(TFH−REG)311、垂直演算要素数レジスタ(NVO−REG)312、水平出力サイズレジスタ(HOS−REG)313、垂直フィルタ処理回数算出器(CNVFO)314、水平入力サイズ算出器(CHSI)315を含む。以降、垂直タップ数をTvと、水平演算用素数をEhと、垂直出力サイズをOvと、水平タップ数をThと、垂直演算用素数をEvと、水平出力サイズをOhと表記する。
垂直タップ数レジスタ301は、2次元画像における垂直方向のフィルタ処理のタップ数を保持する。
水平演算要素数レジスタ302は、2次元画像における水平方向のデータに対して演算器207が1サイクルで同時に行える積和演算の数を保持する。
垂直出力サイズレジスタ303は、2次元画像における垂直方向のフィルタ処理の演算結果のサイズを保持する。
水平フィルタ処理回数算出器304は、水平方向の出力サイズの画像を得るために必要な水平方向のフィルタ処理の回数Khを算出する。水平方向のフィルタ処理の回数は垂直タップ数と、水平演算要素数と、垂直出力サイズを基に算出する。前記算出方法は、水平方向のフィルタを先に処理し、後に垂直フィルタを処理する場合は、K(Tv+Ov−1)≦Ehを満たす最大の正の整数Kが存在するとき、1/Kを処理回数とする。また、水平フィルタ処理回数算出器304は、K(Tv+Ov−1)≦Ehを満たす最大の正の整数Kが存在せず、かつ、Tv+Ov/K−1≦Eh、かつ、Ov/Kの剰余=0を満たす最小の正の整数Kが存在するときはKを処理回数とする。一方、垂直方向のフィルタを先に処理し、後に水平方向のフィルタを処理する場合は、垂直フィルタの処理回数をKvと表記したとき、K(Ov×Kv)≦Ehを満たす最大の正の整数Kが存在するとき、1/Kを処理回数とする。そして、K(Ov×Kv)≦Ehを満たす最大の正の整数Kが存在せず、かつ、(Ov×Kv)/K≦Eh、かつ、(Ov×Kv)/Kの剰余=0を満たす最小の正の整数Kが存在するときはKを処理回数とする。
図4に垂直フィルタのタップ数Tv=4、垂直出力サイズOv=4、水平演算要素数Eh=10、垂直フィルタ処理回数Kv=2、垂直方向のフィルタを先に処理し、後に水平方向のフィルタ処理をする例を示す。本例ではK(4×2)≦10を満たす最小の正の整数1が存在することから、水平フィルタの処理回数Kh=1となる。
垂直フィルタのタップ数Tv=4、垂直出力サイズOv=8、水平演算要素数Eh=10、水平方向のフィルタを先に処理し、後に垂直方向のフィルタ処理をする例では、K(4+8−1)≦10を満たす最大の正数Kは存在せず、2+8/K−1≦10且つ8/Kの剰余=0を満たす最小の正の整数は2であり、水平フィルタの処理回数Kh=2となる。
垂直入力サイズ算出器305は、垂直タップ数と、水平フィルタ処理回数と、垂直出力サイズを基に、垂直方向のフィルタ処理する時に演算器207に1サイクルで投入するデータのサイズを算出する。算出方法は、水平フィルタ処理回数Khとしたとき、Kh≧1のときはTv+Ov/Kh−1を入力データサイズとし、0<Kh<1のときは、(Tv+Ov−1)/Khを入力データサイズとする。図4の例では、Kh=1であることから、垂直入力サイズは7となり、前記の垂直フィルタのタップ数Tv=4、垂直出力サイズOv=8の例では、垂直入力サイズは7となる。
水平タップ数レジスタ311は、2次元画像における水平方向のフィルタ処理のタップ数を保持する。
垂直演算要素数レジスタ312は、2次元画像における垂直方向のデータに対して演算器207が1サイクルで同時に行える積和演算の数を保持する。
水平出力サイズレジスタ313は、2次元画像における水平方向のフィルタ処理の演算結果のサイズを保持する。
垂直フィルタ処理回数算出器314は、垂直方向の出力サイズの画像を得るために必要な垂直方向のフィルタ処理の回数Khを算出する。垂直方向のフィルタ処理の回数は水平タップ数と、垂直演算要素数と、水平出力サイズを基に算出する。前記算出方法は、水平方向のフィルタを先に処理し、後に垂直フィルタを処理する場合は、水平フィルタの処理回数をKと表記したとき、K(Oh×Kh)≦Evを満たす最大の正の整数Kが存在するとき、1/Kを処理回数とする。K(Oh×Kh)≦Evを満たす最大の正の整数Kが存在せず、かつ、(Oh×Kh)/K≦Ev、かつ、(Oh×Kh)/Kの剰余=0を満たす最小の正の整数Kが存在するときはKを処理回数とする。一方、垂直方向のフィルタを先に処理し、後に水平方向のフィルタを処理する場合は、K(Th+Oh−1)≦Evを満たす最大の正の整数Kが存在するとき、1/Kを処理回数とする。K(Th+Oh−1)≦Evを満たす最大の正の整数Kが存在せず、かつ、Th+Oh/K−1≦Ev、かつ、Oh/Kの剰余=0を満たす最小の正の整数Kが存在するときはKを処理回数とする。
図4の例では水平フィルタのタップ数Th=4、水平出力サイズOh=8、水平演算要素数Eh=10、垂直方向のフィルタを先に処理し、後に水平方向のフィルタ処理をする例を示す。本例では
K(4+8−1)≦10を満たす最小の正の整数は存在せず、4×8/K−1≦10、かつ、8/Kの剰余=0を満たすK=2が存在することから、垂直水平フィルタの処理回数Kv=2となる。
図5の例では水平フィルタのタップ数Th=2、水平出力サイズOh=4、水平演算要素数Eh=10、垂直方向のフィルタを先に処理し、後に水平方向のフィルタ処理をする例を示す。本例では
K(2+4−1)≦10を満たす最小の正の整数K=2が存在することから、垂直フィルタの処理回数Kv=1/2となる。
水平入力サイズ算出器315は、水平タップ数と、垂直フィルタ処理回数と、水平出力サイズを基に、水平方向のフィルタ処理する時に演算器207に1サイクルで投入するデータのサイズを算出する。算出方法は、水平フィルタ処理回数Kvとしたとき、Kv≧1のときはTh+Oh/Kv−1を入力データサイズとし、0<Kv<1のときは、(Th+Oh−1)/Kvを入力データサイズとする。
図4の例では、Kv=2であることから、水平入力サイズは7となり、図5の例ではKh=1/2であることから、水平入力サイズは10となる。
実施の形態1の構成における動作の流れは、メモリ203に入力する画像の形式を決定するために、フィルタ処理に必要な各種情報がメモリ203に入力される。ホストプロセッサ101からバス105を介して制御部202に起動指示が与えられると、フィルタ処理ユニット100でのフィルタ処理が開始される。制御部202は、制御信号211を介してメモリ203に格納されている水平フィルタのタップ数、水平フィルタ処理要素数、水平出力サイズ、垂直フィルタのタップ数、垂直フィルタ処理要素数、垂直出力サイズを演算パラメータ算出部204に設定する。尚、水平フィルタのタップ数、水平フィルタ処理要素数、水平出力サイズ、垂直フィルタのタップ数、垂直フィルタ処理要素数、垂直出力サイズはメモリへ保持せず、演算パラメータ算出部204内部のレジスタへ直接書き込んでもよい。水平フィルタのタップ数、水平フィルタ処理要素数、水平出力サイズ、垂直フィルタのタップ数、垂直フィルタ処理要素数、垂直出力サイズの設定完了後、演算パラメータ算出部204は、水平フィルタ処理回数と、水平入力サイズと、垂直フィルタ処理回数と、垂直入力サイズを算出する。そして演算パラメータ算出部204は、水平フィルタ処理回数と垂直フィルタ処理回数から成るフィルタ処理回数信号213と水平入力サイズと垂直入力サイズから成る入力サイズ信号214を制御部202に入力する。制御部202は、フィルタ処理回数信号213と入力サイズ信号214によって入力された水平フィルタ処理回数と、水平入力サイズと、垂直フィルタ処理回数と、垂直入力サイズと、水平フィルタのタップ数と、垂直フィルタのタップ数に基づいて、外部メモリ104からメモリ203に入力する画像の形式を決定する。制御部202は上記形式の情報をバスインタフェース201に送り、外部メモリ104はバス105を介して上記形式に沿った画像をメモリ203に入力する。メモリ203に入力された画像はフィルタ回路208に送られ、フィルタ回路208はフィルタ処理を行い、メモリ203にデータを書き戻す。
ここで、フィルタ処理に必要な画像をI(X、Y)(Xは水平方向の座標、Yは垂直方向の座標)、水平フィルタ処理回数をK、水平入力サイズをI、垂直フィルタ処理回数をK、垂直入力サイズをI、水平出力サイズをO、垂直出力サイズをOとすると、上記画像の形式と転送は次のように行われる。
例えば図11に示されるように、画像111が外部メモリ104に格納されている場合において、この画像111が複数の画像111−1、111−2に分割されてフィルタ処理ユニット100に転送される。画像111−1、111−2のサイズは、垂直入力サイズIと水平入力サイズIとで決定される。また、画像111−1、111−2の基点112−1、112−2は、垂直フィルタ処理回数K、水平フィルタ処理回数K、水平出力サイズO、垂直出力サイズOを利用して決定される。垂直フィルタ処理回数K、水平フィルタ処理回数Kは、演算パラメータ算出部204で算出されて、制御部202に伝達される。水平出力サイズO、垂直出力サイズOは、ユーザによって設定される値であり、バス105を介してホストプロセッサ101からフィルタ処理ユニット100に与えられる。
上記画像の形式と転送方法に関して、以下の9つの条件を挙げることができる。
(1)Kv>1、かつ、K>1の場合
画像の形式は、画像I内をKv×K分割した画像Vjm(j=0、1、・・・、Kv−1、m=0、1、・・・、Kh−1)とする。画像Vjmは、画像I上の座標(X、Y)=(j×O/Kv、m×O/Kh)から幅Ih、高さIvの画像である。転送は、V00、V01、・・・、V Kh−1、・・・、VKv−1 Kh−1の順に行う。
(2)Kv>1、かつ、K=1の場合
画像の形式は、画像I内をKv分割した画像V(j=0、1、・・・、Kv−1)とする。画像Vは画像I上の座標(X、Y)=(j×O/Kv、0)から幅Ih、高さIの画像である。V、V、・・・、VKv−1の順に画像が転送される。
(3)Kv>1、かつ、K<1の場合
画像の形式は、画像I内をKv分割した画像を垂直方向に1/Kh個結合した画像V(j=0、1、・・・、Kv−1)とする。画像Vは画像I上の座標(X、Y)=(j×O/Kv、0)から幅Ih、高さI×Kの画像を垂直方向に1/Kh個結合した画像である。V、V、・・・、VKv−1の順に画像が転送される。
(4)Kv=1、かつ、K>1の場合
画像の形式は、画像I内をK分割した画像をVm(m=0、1、・・・、Kh−1)とする。画像Vは画像I上の座標(X、Y)=(0、m×O/Kh)から幅Ih、高さIvの画像である。V、V、・・・、VKh−1の順に画像が転送される。
(5)Kv=1、かつ、K=1の場合
画像の形式は画像Iとし、画像Iが転送される。
(6)Kv=1、かつ、K<1の場合
画像の形式は、画像Iを垂直方向に1/Kh個結合した画像Vとし、画像Vが転送される。
(7)Kv<1、かつ、K>1の場合
画像の形式は、画像I内をK分割した画像を水平方向に1/K個結合した画像V(m=0、1、・・・、Kh−1)とする。画像Vは画像I上の座標(X、Y)=(0、m×O/Kh)から幅Ih×K、高さIvの画像を水平方向に1/K個結合した画像である。V、V、・・・、VKh−1の順に画像が転送される。
(8)Kv<1、かつ、K=1の場合
画像の形式は、画像Iを水平方向に1/K個結合した画像Vとし、画像Vが転送される。
(9)Kv<1、かつ、K<1の場合
画像の形式は、画像Iを垂直方向に1/K個結合し、水平方向に1/K個結合した画像Vとし、画像Vが転送される。
図4には、フィルタ処理するのに必要な画像と、メモリ203に格納される画像の形式と、内部レジスタ206に格納される画像の形式の一例が示される。図4では、垂直方向のフィルタを先に処理し、後に水平方向のフィルタを処理し、水平フィルタのタップ数Thが4、水平演算要素数Ehが10、水平出力サイズOhが8、垂直フィルタのタップ数Tvが4、垂直演算要素数Evが10、垂直出力サイズOvが4の例を表す。演算パラメータ算出部204から水平フィルタ処理回数Khが1、垂直フィルタ処理回数Kvが2、水平入力サイズIが7、垂直入力サイズIが7となり、画像の形式と転送方法は上記条件(2)に該当する。外部メモリ104からメモリ203に転送される画像の形式は、O=8、Ov=4の画像を生成するために必要な幅11、高さが7の画像401上の座標(X、Y)=(0、0)から幅7、高さ7の画像402と、画像401上の座標(X、Y)=(4、0)から幅7、高さが7の画像403である。メモリ203には、8バイト幅になるように画像402と画像403のそれぞれの水平方向に1画素無効なデータを追加し、画像402、画像403の順に並んだ画像404の形式で格納される。内部レジスタには10画素が1エントリとして格納され、画像405に示されるように計14エントリに画像402と画像403が格納される。画像402と画像403が内部レジスタ206に格納された後、演算器207により垂直方向に4タップのフィルタ処理が処理され、演算結果が画像406の形式で内部レジスタに入力される。垂直フィルタ処理が処理された後、垂直フィルタ処理結果(画像406)の水平方向に対して4タップのフィルタ処理が処理され、演算結果が内部レジスタ206に画像407の形式で格納される。
図5には、フィルタ処理するのに必要な画像と、メモリ203に格納された画像の形式と、内部レジスタ206に格納された画像のデータ形式の一例が示される。図5では先に垂直方向のフィルタ、後に水平方向のフィルタを処理し、水平フィルタのタップ数Thが2、水平演算要素数Ehが10、水平出力サイズOhが4、垂直フィルタのタップ数Tvが2、垂直演算要素数Evが10、垂直出力サイズOvが8の例を表す。演算パラメータ算出部204から水平フィルタ処理回数Khが1、垂直フィルタ処理回数Kvが1/2、水平入力サイズIが10、垂直入力サイズIが9、となり、画像の形式と転送方法は上記条件(8)に該当する。外部メモリ104からメモリ203に転送される画像の形式は、O=4、Ov=8の画像を生成するために必要な幅が5、高さが9の画像501と、画像502を結合した画像である。メモリ203には画像501と画像502を結合した画像503の形式で格納される。内部レジスタには10画素のデータが1エントリとして格納され、画像504に示すように計9エントリに画像501と画像502が格納される。画像501と画像502が内部レジスタに入力された後、演算器207により垂直方向の4タップのフィルタ処理が処理され、演算結果が内部レジスタに画像505の形式で格納される。演算結果(画像505)に対して水平方向に4タップのフィルタ処理が処理され、その演算結果が内部レジスタ206に画像506の形式で格納される。
ここで、従来技術に従えば、第2のフィルタ処理に必要な数のデータを複数個の積和演算器に順次投入して同時に第1のフィルタ処理が行われ、上記第1のフィルタ処理の結果を積和演算器に順次投入して第2のフィルタ処理が行われる。このため、第1のフィルタ処理を行う演算器の要素数よりも第2のフィルタ処理に必要なデータが多い場合、例えば第1のフィルタ処理を行う演算要素数が8、第2のフィルタ処理に必要なデータとの関係で入力されるデータが11画素の場合、この11画素のデータを8画素と3画素に分け、2度フィルタ処理しなければならない。この結果、第2のフィルタ処理に必要なデータに対する演算が終わるまでに2度のフィルタ処理に必要なサイクルがかかり、その結果、第2のフィルタ処理を開始するタイミングが遅れる虞れがある。第2のフィルタ処理開始タイミングの遅れは、2次元画像に対するフィルタ処理に要する時間の短縮を阻害する。
これに対して実施の形態1によれば、フィルタ処理のタップ数と複数の演算器が同時に生成するデータのサイズ(演算要素数)に応じて、第1のレジスタに1サイクル当たりに入力されるデータの数が調整されることにより、第1のフィルタ処理を速やかに完了して、その結果を第2のフィルタ処理に供することができる。それにより第2のフィルタ処理の開始タイミングを従来に比べて早めることができる。例えば図4(条件(2)に該当)に示されるように、外部メモリ104からメモリ203に転送される画像が、O=8、Ov=4の画像を生成するために必要な幅11、高さが7の画像401から、画像401上の座標(X、Y)=(0、0)から幅7、高さ7の画像402と、画像401上の座標(X、Y)=(4、0)から幅7、高さが7の画像403の2つに分割されることで、第2のフィルタ処理に必要なデータが7、第1のレジスタに1サイクル当たりに入力されるデータの数が7となる。これにより第1のフィルタ処理を速やかに完了して、その結果を第2のフィルタ処理に供することができる。
また、第2のフィルタ処理のタップ数と、第2のフィルタ処理の実行結果サイズと、第1のフィルタ処理を行う演算器の数に応じて第1のレジスタに1サイクル当たりに入力するデータの数が調整されることにより、第1のフィルタ処理を無駄に行う演算器が多くなる場合を回避することができる。例えば図5(条件(8)に該当)に示されるように、外部メモリ104からメモリ203に転送される画像が、O=4、Ov=8の画像を生成するために必要な幅が5、高さが9の画像501から、画像501と画像502を結合した画像になることで、第1のレジスタに1サイクル当たりに入力されるデータの数が10となる。これにより第1のフィルタ処理を行う演算器が同時に生成可能なデータのサイズ分の演算が同時に行われ、無駄がなくなる。
上記実施の形態1によれば、以下の作用効果を得ることができる。
フィルタ処理のタップ数と複数の演算器が同時に生成するデータのサイズに応じて、第1のレジスタに1サイクル当たりに入力されるデータの数が調整されることにより、第1のフィルタ処理を速やかに完了して、その結果を第2のフィルタ処理に供することができる。これにより、第2のフィルタ処理の開始タイミングを従来に比べて早めることができる。また、第2のフィルタ処理のタップ数と、第2のフィルタ処理の実行結果サイズと、第1のフィルタ処理を行う演算器の数に応じて第1のレジスタに1サイクル当たりに入力するデータの数が調整されることにより、第1のフィルタ処理を行う演算器による無駄な演算を減らすことができる。
以上のことから、2次元画像の2次元フィルタ処理を効率良く行うことができる。
<実施の形態2>
図6には、本発明の実施の形態2に係るフィルタ処理ユニット100の構成例が示される。
図6に示される構成は、図2に示されるフィルタ処理ユニットと類似した構成であるが、図2に示されるのと相違するのは、データ生成回路(DATA−CIR)605が設けられ、メモリ603に格納された画像をフィルタ回路608に転送するときに、データ生成回路605によってデータ形式が変換される点である。尚、図6においては、制御部602と演算パラメータ算出部604とを含んで制御回路609が形成される。
データ生成回路605は、演算パラメータ算出部604で算出された演算パラメータに基づいてメモリ603に格納されている画像を入力し、形式を変換してフィルタ回路608に転送する。
実施の形態2の構成における動作の流れは、まず、バス105を介して転送された画像やフィルタ処理に必要な各種情報が、バスインタフェース601を介してメモリ603に格納される。ホストプロセッサ101からバス105を介して制御部602に起動指示が与えられると、フィルタ処理ユニット100でのフィルタ処理が開始される。制御部602は、メモリ603に格納されている水平フィルタのタップ数、水平フィルタ処理要素数、水平出力サイズ、垂直フィルタのタップ数、垂直フィルタ処理要素数、垂直出力サイズを演算パラメータ算出部604に設定する。尚、水平フィルタのタップ数、水平フィルタ処理要素数、水平出力サイズ、垂直フィルタのタップ数、垂直フィルタ処理要素数、垂直出力サイズはメモリ603へ保持せず、演算パラメータ算出部604内部のレジスタへ直接書き込んでもよい。水平フィルタのタップ数、水平フィルタ処理要素数、水平出力サイズ、垂直フィルタのタップ数、垂直フィルタ処理要素数、垂直出力サイズの設定完了後、演算パラメータ算出部604は、水平フィルタ処理回数と、水平入力サイズと、垂直フィルタ処理回数と、垂直入力サイズを算出し、データ生成回路605に送る。データ生成回路605は、入力された水平フィルタ処理回数と、水平入力サイズと、垂直フィルタ処理回数と、垂直入力サイズと、水平フィルタのタップ数と、垂直フィルタのタップ数に基づいて、フィルタ回路608に入力する画像の形式を決定し、上記形式に沿って画像を変換し、フィルタ回路608に転送する。上記画像の形式は実施の形態1と同様である。フィルタ回路606はフィルタ処理を行い、メモリ603にデータを書き戻す。
図7には、実施の形態2における上記条件(2)の場合のフィルタ処理に必要な画像と、メモリ603に格納された画像の形式と、内部レジスタ606に格納された画像の形式の一例が示される。図7に示される例と図4に示される例とで相違するのは、図4ではメモリ203に格納された時点でフィルタ処理に最適な画像形式で格納されているのに対して、図7では内部レジスタで初めてフィルタ処理に最適な画像形式で格納される点である。尚、図7における画像701、704、705、706、707は、それぞれ図4における画像401、404、405、406、407に対応する。
図8は、実施の形態2における上記条件(8)の場合のフィルタ処理に必要な画像と、メモリ603に格納された画像の形式と、内部レジスタ606に格納された画像の形式の一例である。図8に示される例と図5に示される例とで相違するのは、図5ではメモリ203に格納された時点でフィルタ処理に最適な画像形式で格納されているのに対して、図8では内部レジスタで初めてフィルタ処理に最適な画像形式で格納される点である。尚、図8における画像801、802、803、804、805、806は、それぞれ図5における画像501、502、503、504、505、506に対応する。
上記実施の形態2によれば、元画像をフィルタ処理ユニット100内部のメモリ603に転送することにより、分割された画像を転送する場合に比べて少ないサイズになる。
<実施の形態3>
図9には、本発明の実施の形態3に係るプロセッサが示される。
図9に示されるプロセッサは、半導体装置の一例とされ、公知の半導体集積回路技術により単結晶シリコン基板などのひとつの半導体基板に形成される。
図9に示されるプロセッサは、フィルタ処理ユニット(FIL)900と、命令キャッシュ(ICACHE)901と、メモリインタフェース(MIF)902と、I/O(入出力回路)903と、外部メモリ(EXT−MEM)904、及びデータキャッシュ907を含み、それらがバス905を介して結合されて構成される。
フィルタ処理ユニット900は、命令キャッシュ901を介してフェッチされた命令を実行することで、所定の演算処理を行う。演算した結果をストア命令等により出力する場合、データキャッシュ907で一旦保持される、あるいはバス905、メモリインタフェース902を介して外部メモリ904で保持される。また、ビデオやオーディオ等のデバイスとのインタフェースであるI/O903とバス905経由でやりとりすることもできる。I/O903に接続されるデバイスの例として、地上デジタルチューナーに代表される映像入力装置や、撮像デバイスに代表される画像入力装置や、LCDに代表される表示装置などがある。
図10には、本発明の実施の形態3に係るフィルタ処理ユニット900の構成例が示される。
このフィルタ処理ユニット900は、バスインタフェース(BIF)1001、命令デコーダ(IDEC)1002、演算パラメータ算出部(ACP)1004、インデックス生成器(IND−GEN)1005、内部レジスタ(INT−REG)1006、フィルタ処理器1009、データ生成回路(DATA−CIR)1010を含んで成る。
命令デコーダ1002は、入力された命令をデコードすることによって、フィルタ処理に関するパラメータ信号と、ソースインデックス、フィルタ処理制御信号を生成する。フィルタ処理に関するパラメータは、具体的には、垂直タップ数、水平演算要素数、垂直出力サイズ、水平フィルタ処理回数、垂直入力サイズ、水平タップ数、垂直演算要素数、水平出力サイズ、垂直フィルタ処理回数、水平入力サイズである。
演算パラメータ算出部1004は、上記命令デコーダ1002から入力されたフィルタ処理に関するパラメータを基に、2次元画像における水平方向のフィルタ処理の処理回数と、垂直方向のフィルタ処理の処理回数とを算出する。また、演算パラメータ算出部1004は、上記命令デコーダ1002から入力されたフィルタ処理に関するパラメータを基に、水平方向のフィルタ処理を演算する演算器に1サイクルで投入する2次元画像の水平方向のサイズと、水平方向のフィルタ処理を演算する演算器に1サイクルで投入する2次元画像の水平方向のサイズを算出する。そして演算パラメータ算出部1004は、水平フィルタ処理回数と垂直フィルタ処理回数をフィルタ処理器1009に送り、水平入力データサイズと垂直入力データサイズをデータ生成回路1010に送る。演算パラメータ算出部1004は、図3と同様の構成である。この場合において、演算パラメータ算出部1004における垂直タップ数レジスタ301、水平演算要素数レジスタ302、垂直出力サイズレジスタ303、水平タップ数レジスタ311、垂直演算要素数レジスタ312、及び水平出力サイズレジスタ313の少なくとも一つを更新するための命令が、上記命令デコーダ1002でデコードされる。それにより、対応するレジスタが更新される。
インデックス生成器1005は、フィルタ処理の開始時は演算パラメータ算出部1004から入力された水平フィルタ処理回数と垂直フィルタ処理回数を基に、上記命令デコーダ1002を介して入力されたソースインデックスを補正して、補正ソースインデックスを生成し、内部で保持する。フィルタ処理中の場合は補正ソースインデックスをインクリメントする。
内部レジスタ1006は、フィルタ処理対象として取り込まれたデータを保持すると共に、上記インデックス生成器1005から入力された補正ソースインデックスに対応するデータを出力する。
フィルタ処理器1009は、特に制限されないが、データのシフトが可能なシフトレジスタ(SFT−REG)1007、上記シフトレジスタ1007でのデータシフトを制御するシフト制御回路(SFT−CTRL)1003、上記内部レジスタ1006の出力データの演算処理を行うSIMD演算器1008から構成される。SIMDとはSingle Instruction/Multiple Data(単一命令/複数データ)の略であり、SIMD演算とは1つの命令で複数のデータに対して処理を行う演算方式を意味する。SIMD演算器1008での演算結果は上記内部レジスタ1006に書き戻される。また、フィルタ処理器1009では、演算パラメータ算出部1004から入力されたフィルタ処理回数分のフィルタ処理を行う。
データ生成回路1010は、外部メモリ904またはデータキャッシュ907に格納されている画像を入力し、演算パラメータ算出部1004から入力された演算パラメータに基づいて画像形式を変換し、内部レジスタ1006に転送する。この画像の形式は実施の形態1の制御部202によって決定される形式と同様である。
上記の構成において、命令デコーダ1002に入力されたコマンドによってフィルタ処理が指示された場合、まず命令デコーダ1002から、内部レジスタに格納されている読み出し対象データの基点であるソースインデックスをインデックス生成器1005へ入力する。また、命令デコーダ1002から、フィルタ処理に関する各種パラメータを演算パラメータ算出部1004に入力する。演算パラメータ算出部1004は、上記実施の形態1、2の場合と同様に、水平フィルタ処理回数と、水平入力サイズと、垂直フィルタ処理回数と、垂直入力サイズを算出し、上記パラメータ全てをデータ生成回路1010に入力し、水平フィルタ処理回数と垂直フィルタ処理回数をインデックス生成器1005に入力する。インデックス生成器1005は、水平フィルタ処理回数と、垂直フィルタ処理回数と、ソースインデックスを基に補正ソースインデックスを算出し、内部レジスタ1006に入力する。内部レジスタ1006は補正ソースインデックスに対応したレジスタのデータをフィルタ処理器1009のシフトレジスタ1007へ入力する。シフトレジスタ1007はシフト制御回路1003によってデータをシフトするか、内部レジスタ1006からのデータを入力する。シフトレジスタのデータをシフトする場合は、水平フィルタ処理の場合である。シフトレジスタ1007からのデータがSIMD演算器1008に入力され、その演算結果が内部レジスタ1006に書き戻され、フィルタ処理を完了する。
上記の構成の半導体装置においても、演算パラメータ算出部1004は、上記実施の形態1、2の場合と同様に、水平フィルタ処理回数と、水平入力サイズと、垂直フィルタ処理回数と、垂直入力サイズを算出する。そしてこの演算パラメータ算出部1004で算出されたパラメータに基づいてフィルタ処理器1009でのフィルタ処理が行われる。このとき、回路1010は、外部メモリ904またはデータキャッシュ907に格納されている画像を入力し、演算パラメータ算出部1004から入力された演算パラメータに基づいて画像形式を変換し、内部レジスタ1006に転送する。この画像の形式は実施の形態1の制御部202によって決定される形式と同様であることから、第1のフィルタ処理のタップ数と、第1のフィルタ処理の実行結果のサイズと、第2の演算器の数に応じて、内部レジスタ1006に1サイクル当たりに入力するデータの数を調整することができる。また、上記第2のフィルタ処理のタップ数と、第2のフィルタ処理の実行結果サイズと、第1の演算器の数に応じて内部レジスタ1006に1サイクル当たりに入力するデータの数を調整することができる。それにより、このフィルタ処理ユニット900においても、上記実施の形態1、2の場合と同様の効果を得ることができる。
<実施の形態4>
図12には、演算パラメータ算出部204の別の構成例が示される。
図12に示される演算パラメータ算出部204が図3に示されるのと相違するのは、タップ数・出力サイズ生成部1201が符号化情報1200を用いて、垂直タップ数、垂直出力サイズ、水平タップ数、水平出力サイズを設定する点である。
例えば、MPEG1、MPEG2の輝度画像における動き予測処理では、垂直タップ数が2、水平タップ数が2、垂直出力サイズが8、水平出力サイズが8となる。また、VC−1(WMV9)と呼ばれる符号化方式では、動き予測処理にバイキュービック法を用いる場合は、垂直タップ数が4、水平タップ数が4、垂直出力サイズが8、水平出力サイズが8となる。
上記実施の形態4によれば、外部から入力する信号が垂直タップ数、垂直出力サイズ、水平タップ数、水平出力サイズではなく、フィルタ処理回路内で符号化方式1200を判定し、垂直タップ数、垂直出力サイズ、水平タップ数、水平出力サイズを設定可能になる。符号化された画像と符号化情報だけで上記実施の形態1、2の場合と同様の効果を得ることができる。
以上、本発明者によってなされた発明を具体的に説明したが、本発明はそれに限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。
例えば、上記実施の形態では、本発明における第1のレジスタ、第2のレジスタ、及び第3のレジスタを内部レジスタ206によって形成したが、第1のレジスタ、第2のレジスタ、及び第3のレジスタをそれぞれ別個のレジスタで形成することができる。また、上記実施の形態では、本発明における第1の演算器及び第2の演算器を演算器207によって形成したが、第1の演算器及び第2の演算器ををそれぞれ別個の演算器で形成することができる。
図9におけるフィルタ処理ユニット900として、図2に示される構成を採用しても良い。
100、900 フィルタ処理ユニット
101 ホストプロセッサ
102、902 メモリインタフェース
103、903 I/O
104、904 外部メモリ
105、905 バス
201、1001 バスインタフェース
202 制御部
203 メモリ
204 演算パラメータ算出部
206 内部レジスタ
207 演算器
208 フィルタ回路
208 インデックスデータ取得部
209、609 制御回路
301 垂直タップ数レジスタ
302 水平演算要素数レジスタ
303 垂直出力サイズレジスタ
304 水平フィルタ処理回数算出器
305 垂直入力サイズ算出器
311 水平タップ数レジスタ
312 垂直演算要素数レジスタ
313 水平出力サイズレジスタ
314 垂直フィルタ処理回数算出器
315 水平入力サイズ算出器
1002 命令デコーダ
1003 シフト制御回路
1004 演算パラメータ算出部
1005 インデックス生成器
1006 内部レジスタ
1007 シフトレジスタ
1008 SIMD演算器
1009 フィルタ処理器
1010 データ生成回路
1201 タップ数・出力サイズ生成器

Claims (8)

  1. 入力されたデータに対してフィルタ処理を行うフィルタ回路と、上記フィルタ回路の動作を制御する制御回路と、を含むフィルタ処理装置であって、
    上記フィルタ回路は、データを格納可能な第1のレジスタと、
    上記第1のレジスタの出力データに基づいて第1のフィルタ処理を実行可能な第1の演算器と、
    上記第1の演算器の演算結果を格納可能な第2のレジスタと、
    上記第2のレジスタの出力データに基づいて第2のフィルタ処理を実行可能な第2の演算器と、を含み、
    上記制御回路は、上記第1のフィルタ処理のタップ数と、上記第1のフィルタ処理の実行結果のサイズと、上記第2の演算器の数に応じて、上記第1のレジスタに1サイクル当たりに入力するデータの数を調整可能にされて成ることを特徴とするフィルタ処理装置。
  2. 入力されたデータに対してフィルタ処理を行うフィルタ回路と、上記フィルタ回路の動作を制御する制御回路と、を含むフィルタ処理装置であって、
    上記フィルタ回路は、データを格納可能な第1のレジスタと、
    上記第1のレジスタの出力データに基づいて第1のフィルタ処理を実行可能な第1の演算器と、
    上記第1の演算器の演算結果を格納可能な第2のレジスタと、
    上記第2のレジスタの出力データに基づいて第2のフィルタ処理を実行可能な第2の演算器と、
    上記第2の演算器の演算結果を格納する第3のレジスタと、を含み、
    上記制御回路は、上記第1のフィルタ処理のタップ数と、上記第1のフィルタ処理の実行結果のサイズと、上記第2の演算器の数に応じて、上記第1のレジスタに1サイクル当たりに入力するデータの数を調整し、上記第2のフィルタ処理のタップ数と、上記第2のフィルタ処理の実行結果サイズと、上記第1の演算器の数に応じて上記第2のレジスタに1サイクル当たりに入力するデータの数を調整することを特徴とするフィルタ処理装置。
  3. 上記制御回路は、演算パラメータを算出可能な演算パラメータ算出部と、
    上記演算パラメータに基づいて上記フィルタ回路の動作を制御する制御部と、を含み、
    上記演算パラメータ算出部は、画像の第1のフィルタ処理のタップ数を保持する第1のタップ数レジスタと、
    画像の第2のフィルタ処理のタップ数を保持する第2のタップ数レジスタと、
    上記第1のフィルタ処理のための演算器の数を保持する第1の演算要素数レジスタと、
    上記第2のフィルタ処理のための演算器の数を保持する第2の演算要素数レジスタと、
    上記第1のフィルタ処理の実行結果のサイズを保持する第1の出力サイズレジスタと、
    上記第2のフィルタ処理の実行結果のサイズを保持する第2の出力サイズレジスタと、
    上記第2のフィルタ処理のタップ数と上記第2のフィルタ処理の実行結果のサイズと上記第1のフィルタ処理のための演算器の数から第1のフィルタ処理の回数を算出する第1のフィルタ処理回数算出器と、
    上記第1のフィルタ処理のタップ数と上記第1のフィルタ処理の実行結果のサイズと上記第2のフィルタ処理のための演算器の数から第2のフィルタ処理の回数を算出する第2のフィルタ処理回数算出器と、
    上記第1のフィルタ処理のタップ数と上記第2のフィルタ処理の回数と上記第1のフィルタ処理の実行結果のサイズから上記第1のレジスタに1サイクル当たりに入力するデータの数を算出する第1の入力サイズ算出器と、
    上記第2のフィルタ処理のタップ数と上記第1のフィルタ処理の回数と上記第2のフィルタ処理の実行結果のサイズから上記第2のレジスタに1サイクル当たりに入力するデータの数を算出する第2の入力サイズ算出器と、を含み、
    上記制御部は、上記第1のレジスタに1サイクル当たりに入力するデータの数と、上記第2のレジスタに1サイクル当たりに入力するデータの数と、上記第1のフィルタ処理の回数と、上記第2のフィルタ処理の回数に応じてフィルタ処理をする請求項2記載のフィルタ処理装置。
  4. 上記制御部は、上記第1のタップ数レジスタと上記第2のタップ数レジスタと上記第1の出力サイズレジスタと上記第2の出力サイズレジスタと上記第1の演算要素数レジスタと上記第2の演算要素数レジスタの更新を指示するための命令を実行するCPUを含む請求項3記載のフィルタ処理装置。
  5. 上記演算パラメータ算出部は、符号化された画像の符号化形式から上記第1のフィルタ処理のタップ数と、上記第2のフィルタ処理のタップ数と、上記第1のフィルタ処理の実行結果のサイズと、上記第2のフィルタ処理の実行結果のサイズを算出するタップ数・出力サイズ算出部と、
    上記第1のフィルタ処理のための演算器の数を保持する第1の演算要素数レジスタと、
    上記第2のフィルタ処理のための演算器の数を保持する第2の演算要素数レジスタと、
    上記第2のフィルタ処理のタップ数と上記第2のフィルタ処理の実行結果のサイズと上記第1のフィルタ処理のための演算器の数から第1のフィルタ処理の回数を算出する第1のフィルタ処理回数算出器と、
    上記第1のフィルタ処理のタップ数と上記第1のフィルタ処理の実行結果のサイズと上記第2のフィルタ処理のための演算器の数から第2のフィルタ処理の回数を算出する第2のフィルタ処理回数算出器と、
    上記第1のフィルタ処理のタップ数と上記第2のフィルタ処理の回数と上記第1のフィルタ処理の実行結果のサイズから上記第1のレジスタに1サイクル当たりに入力するデータの数を算出する第1の入力サイズ算出器と、
    上記第2のフィルタ処理のタップ数と上記第1のフィルタ処理の回数と上記第2のフィルタ処理の実行結果のサイズから上記第2のレジスタに1サイクル当たりに入力するデータの数を算出する第2の入力サイズ算出器と、を含み、
    上記制御部は、上記第1のレジスタに1サイクル当たりに入力するデータの数と、上記第2のレジスタに1サイクル当たりに入力するデータの数と、上記第1のフィルタ処理の回数と、上記第2のフィルタ処理の回数に応じてフィルタ処理をする請求項2記載のフィルタ処理装置。
  6. 上記フィルタ処理装置は、バスに結合され、上記バスを介して、符号化された画像が入力され、上記符号化された画像であるストリーム中にあるパラメータを基に上記第1のレジスタに1サイクル当たりに入力するデータの数と上記第2のレジスタに1サイクル当たりに入力するデータの数を調整することを特徴とする請求項2記載のフィルタ処理装置。
  7. 入力された命令をデコードする命令デコーダと、
    上記命令デコーダを介して与えられたフィルタ処理に関するパラメータを基に第1のフィルタ処理の処理回数と第2のフィルタ処理の処理回数と第1のフィルタ処理のための演算器に1サイクルで投入するデータの数を算出すると第2のフィルタ処理のための演算器に1サイクルで投入するデータの数を算出する演算パラメータ算出器と、
    上記命令デコーダを介して取り込まれたソースインデックスを上記演算パラメータ算出器によって算出された第1のフィルタ処理の処理回数または第2のフィルタ処理の処理回数を基に補正することにより補正ソースインデックスを生成するインデックス生成器と、
    上記ソースインデックスに対応するデータを出力する内部レジスタと、
    上記内部レジスタから出力されたデータをフィルタリングする演算器と、
    画像を入力し、上記演算パラメータ算出器から出力された演算パラメータを基に画像の形式を変換し、上記内部レジスタに入力するデータ生成回路と、を含む半導体装置であって、
    上記演算器は、上記内部レジスタから出力されたデータをシフト可能なシフトレジスタと、
    上記シフトレジスタの出力データを演算処理するSIMD演算器と、を含み
    上記演算パラメータ算出器は、画像の第1のフィルタ処理のタップ数を保持する第1のタップ数レジスタと、
    画像の第2のフィルタ処理のタップ数を保持する第2のタップ数レジスタと、
    上記第1のフィルタ処理のための演算器の数を保持する第1の演算要素数レジスタと、
    上記第2のフィルタ処理のための演算器の数を保持する第2の演算要素数レジスタと、
    上記第1のフィルタ処理の実行結果のサイズを保持する第1の出力サイズレジスタと、
    上記第2のフィルタ処理の実行結果のサイズを保持する第2の出力サイズレジスタと、
    上記第2のフィルタ処理のタップ数と上記第2のフィルタ処理の実行結果のサイズと上記第1のフィルタ処理のための演算器の数から第1のフィルタ処理の回数を算出する第1のフィルタ処理回数算出器と、
    上記第1のフィルタ処理のタップ数と上記第1のフィルタ処理の実行結果のサイズと上記第2のフィルタ処理のための演算器の数から第2のフィルタ処理の回数を算出する第2のフィルタ処理回数算出器と、
    上記第1のフィルタ処理のタップ数と上記第2のフィルタ処理の回数と上記第1のフィルタ処理の実行結果のサイズから上記第1のレジスタに1サイクル当たりに入力するデータの数を算出する第1の入力サイズ算出器と、
    上記第2のフィルタ処理のタップ数と上記第1のフィルタ処理の回数と上記第2のフィルタ処理の実行結果のサイズから上記第2のレジスタに1サイクル当たりに入力するデータの数を算出する第2の入力サイズ算出器と、を含むことを特徴とする半導体装置。
  8. 上記命令デコーダは、上記第1のタップ数レジスタ、第2のタップ数レジスタ、第1の演算要素数レジスタ、第2の演算要素数レジスタ、第1の出力サイズレジスタ、及び第2の出力サイズレジスタの少なくとも一つを更新する命令をデコードする請求項7記載の半導体装置。
JP2009032687A 2009-02-16 2009-02-16 フィルタ処理装置及び半導体装置 Withdrawn JP2010192983A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2009032687A JP2010192983A (ja) 2009-02-16 2009-02-16 フィルタ処理装置及び半導体装置
US12/705,898 US20100211623A1 (en) 2009-02-16 2010-02-15 Filter processing module and semiconductor device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2009032687A JP2010192983A (ja) 2009-02-16 2009-02-16 フィルタ処理装置及び半導体装置

Publications (1)

Publication Number Publication Date
JP2010192983A true JP2010192983A (ja) 2010-09-02

Family

ID=42560817

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009032687A Withdrawn JP2010192983A (ja) 2009-02-16 2009-02-16 フィルタ処理装置及び半導体装置

Country Status (2)

Country Link
US (1) US20100211623A1 (ja)
JP (1) JP2010192983A (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102235803B1 (ko) * 2017-03-31 2021-04-06 삼성전자주식회사 반도체 장치

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4344148A (en) * 1977-06-17 1982-08-10 Texas Instruments Incorporated System using digital filter for waveform or speech synthesis
JP2009015637A (ja) * 2007-07-05 2009-01-22 Renesas Technology Corp 演算ユニット及び画像フィルタリング装置

Also Published As

Publication number Publication date
US20100211623A1 (en) 2010-08-19

Similar Documents

Publication Publication Date Title
JP5587422B2 (ja) 画素速度での画像処理のための方法および装置
US10749502B2 (en) Apparatus and method for performing horizontal filter operations
Yan et al. Implementation of HEVC decoder on x86 processors with SIMD optimization
US20100321579A1 (en) Front End Processor with Extendable Data Path
JP2004199222A (ja) 対称型画像フィルタ処理装置、プログラム、及びその方法
EP3622389B1 (en) Circuit to perform dual input value absolute value and sum operation
JP2012151638A (ja) 画像変換装置、画像変換方法、プログラム、および電子機器
JP2013171296A (ja) 信号処理装置及び半導体装置
US7787021B2 (en) Programmable architecture for flexible camera image pipe processing
JP2010192983A (ja) フィルタ処理装置及び半導体装置
JP2009015637A (ja) 演算ユニット及び画像フィルタリング装置
Zhi-Yong et al. An improved low-cost adaptive bicubic interpolation arithmetic and VLSI implementation
JP4621944B2 (ja) 画像フィルタ装置、方法およびコンピュータプログラム
Dilip et al. Bilinear interpolation image scaling processor for VLSI architecure
CN112422976B (zh) 一种视频编码标准中的亮度分量运动补偿方法及视频编码方法
JP5246045B2 (ja) 動画像処理装置およびそれを用いたビデオカメラ装置
JP2002008025A (ja) 画素演算装置
WO2010001562A1 (ja) フィルタ処理装置及び半導体装置
WO2021035715A1 (zh) 数据处理方法和装置
JP5790933B2 (ja) ノイズ除去装置、電子機器
JP2009232441A (ja) オーバーラップフィルタリングとコア変換を行うための方法及び装置
KR20080028608A (ko) 리프팅 이산 웨이블릿 변환 장치 및 시스템
JP4451693B2 (ja) データをフィルタリングする方法
Anima et al. Designing an Image Scaling Processor for Highly Enhanced Image
Karthic Implementation of High-Performance Image Scaling Processor using VLSI

Legal Events

Date Code Title Description
A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A712

Effective date: 20100527

A300 Application deemed to be withdrawn because no request for examination was validly filed

Free format text: JAPANESE INTERMEDIATE CODE: A300

Effective date: 20120501