<第1の実施形態>
以下、本発明の実施形態について、図面を参照して説明する。図1は、本発明の第1の実施形態における画像処理装置の概略構成を示したブロック図である。図1に示した画像処理装置1は、DMAバス10と、DRAM20と、画像処理部30と、を備えている。また、画像処理部30は、接続切り替え部31と、入力DMAモジュール32と、3つの画像処理モジュール33−1〜画像処理モジュール33−3と、出力DMAモジュール34と、を備えている。画像処理装置1は、例えば、静止画用カメラなどの撮像装置に備えられる。
なお、図1においては、画像処理装置1に備えられ、DMAバス10に接続される他の構成要素の図示を省略している。画像処理装置1に備える他の構成要素としては、例えば、撮像装置に備えたレンズによって結像された被写体の光学像を光電変換する固体撮像素子を制御する撮像処理部、画像処理部30によって処理された画像のデータを記録するための記録処理を行う記録処理部、画像処理部30によって処理された画像のデータを画像処理装置1に備えた表示部に表示させるための表示処理部などがある。また、例えば、画像処理装置1に備える他の構成要素としては、画像処理装置1に備えたそれぞれの構成要素を制御するシステム制御部などもある。
DRAM20は、DMAバス10に接続され、撮像装置において処理される様々なデータを記憶する。例えば、撮像装置に備えた図示しない固体撮像素子から出力された静止画像のデータを記憶する。画像処理装置1においては、DRAM20に記憶された1フレームの静止画像のデータを、予め定めた複数の小さなブロックに分割し、画像処理部30が、それぞれのブロックごとに画像処理を行う。
画像処理部30は、図1に示したように、入力DMAモジュール32、画像処理モジュール33−1、画像処理モジュール33−2、画像処理モジュール33−3、および出力DMAモジュール34が直列に接続されたパイプライン処理によって、画像処理装置1における画像処理を順次行う。以下の説明においては、1フレームの静止画像のデータを分割したそれぞれのブロックに含まれるデータを、「ブロック画像データ」という。画像処理部30は、ブロック画像データに含まれるそれぞれの画素のデータ(以下、「画素データ」という)を、例えば、予め定めた数の列ごとにDRAM20から読み出し、読み出した画素データを1つの処理単位として画像処理を行う。以下の説明においては、画像処理部30が画像処理を行う1つの処理単位の画素データにおいて、同じ列に含まれる連続した複数の画素データを、「ユニットライン」という。
また、画像処理部30は、1フレームの静止画像のデータに対して行う画像処理を選択する機能を備えている。より具体的には、画像処理部30は、画像処理モジュール33−1、画像処理モジュール33−2、および画像処理モジュール33−3のそれぞれによる画像処理を順次行うこともできるが、画像処理モジュール33−1〜画像処理モジュール33−3のいずれか1つまたは複数によって画像処理を行ったり、画像処理モジュール33−1〜画像処理モジュール33−3の順番を変更して画像処理を行ったりすることができる。以下の説明においては、画像処理モジュール33−1〜画像処理モジュール33−3のそれぞれを区別せずに表すときには、「画像処理モジュール33」という。
接続切り替え部31は、画像処理部30に備えたそれぞれの構成要素が出力した画像データの出力先を切り替える、つまり、画像処理部30に備えたそれぞれの構成要素同士の接続を切り替える。例えば、画像処理部30によって画像処理モジュール33−2のみの画像処理を行う場合には、入力DMAモジュール32の出力端子と画像処理モジュール33−2の入力端子とを接続し、画像処理モジュール33−2の出力端子と出力DMAモジュール34の入力端子とを接続するように、それぞれの構成要素の接続を切り替える。また、例えば、画像処理部30によって画像処理モジュール33−3、画像処理モジュール33−1の順番で画像処理を行う場合には、入力DMAモジュール32の出力端子と画像処理モジュール33−3の入力端子とを接続し、画像処理モジュール33−3の出力端子と画像処理モジュール33−1の入力端子とを接続し、画像処理モジュール33−1の出力端子と出力DMAモジュール34の入力端子とを接続するように、それぞれの構成要素の接続を切り替える。なお、接続切り替え部31は、例えば、画像処理装置1に備えた不図示のシステム制御部からの制御に応じて、画像処理部30に備えたそれぞれの構成要素の接続の切り替えを行う。
入力DMAモジュール32は、DRAM20に記憶されているブロック画像データに含まれるそれぞれの画素データをユニットラインごとに読み出し、読み出した画素データを、接続切り替え部31を介して、次に画像処理を行う処理モジュールであるいずれかの画像処理モジュール33に出力するための処理モジュールである。入力DMAモジュール32は、例えば、画像処理装置1に備えた不図示のシステム制御部からの制御に応じて、DMAバス10を介してDRAM20から画素データを読み出し、読み出した画素データを接続切り替え部31によって接続が切り替えられた接続先の画像処理モジュール33に出力する。
なお、入力DMAモジュール32は、予め定めた数のユニットライン分の画素データを一時的に記憶することができるデータバッファを備えている。このため、入力DMAモジュール32は、DMAバス10を介してDRAM20から読み出した画素データをデータバッファに一時記憶し、データバッファに一時記憶した画素データを、接続切り替え部31によって接続が切り替えられた接続先の画像処理モジュール33に出力することもできる。
画像処理モジュール33−1〜画像処理モジュール33−3のそれぞれは、接続切り替え部31によって接続が切り替えられた接続先の入力DMAモジュール32または画像処理モジュール33から、接続切り替え部31を介して入力された画素データに対して予め定めた種々のデジタル的な画像処理を行う処理モジュールである。画像処理モジュール33−1〜画像処理モジュール33−3のそれぞれが行う画像処理には、例えば、それぞれの画素データに対応するY(輝度)信号とC(色)信号とを生成するYC処理、それぞれの画素データに含まれるノイズを低減するノイズ低減処理、それぞれの画素データで表される画像における倍率色収差などの補正を行う歪補正処理などが含まれている。画像処理モジュール33−1〜画像処理モジュール33−3のそれぞれは、例えば、画像処理装置1に備えた不図示のシステム制御部からの制御に応じて、接続切り替え部31を介して入力された画素データに対して画像処理を施し、画像処理を施した画素データを、接続切り替え部31によって接続が切り替えられた接続先の画像処理モジュール33または出力DMAモジュール34に出力する。
なお、画像処理モジュール33−1〜画像処理モジュール33−3のそれぞれにも、予め定めた数のユニットライン分の画素データを一時的に記憶することができるデータバッファを備えている。ただし、画像処理モジュール33−1〜画像処理モジュール33−3のそれぞれでは、接続切り替え部31を介して入力された画素データをデータバッファに一時記憶するか否かが、パイプライン処理における画素データの流れに基づいて制御される。
なお、以下の説明においては、画像処理を施した画素データを、DRAM20に記憶されている画像処理を行う対象の画素データと区別して表す場合には、「処理画素データ」という。
出力DMAモジュール34は、接続切り替え部31によって接続が切り替えられた接続先の画像処理モジュール33から、接続切り替え部31を介して入力された処理画素データを、DRAM20に書き込む(記憶する)ための処理モジュールである。出力DMAモジュール34は、例えば、画像処理装置1に備えた不図示のシステム制御部からの制御に応じて、接続切り替え部31を介して入力された処理画素データを、DMAバス10を介してDRAM20に出力する。
なお、出力DMAモジュール34も、予め定めた数のユニットライン分の処理画素データを一時的に記憶することができるデータバッファを備えている。このため、出力DMAモジュール34は、接続切り替え部31を介して入力された処理画素データをデータバッファに一時記憶し、データバッファに一時記憶した処理画素データを、DMAバス10を介してDRAM20に出力することもできる。
このように、画像処理部30では、それぞれの処理モジュールが、1フレームの静止画像のデータをブロック画像データに分割し、例えば、画像処理装置1に備えた不図示のシステム制御部からの制御に応じた画像処理を、それぞれのブロック画像データに含まれる画素データに対してユニットラインごとに順次を行うことによって、それぞれのブロック画像データに対する一連の画像処理を行う。
次に、画像処理部30に備えたそれぞれの処理モジュールの構成および動作について説明する。まず、画像処理部30に備えたそれぞれの処理モジュール間の画素データの受け渡し方法について説明する。
図2は、本発明の第1の実施形態の画像処理装置1に備えた画像処理部30における画像処理モジュール33間のデータの転送方法の一例を示した図である。図2には、画像処理モジュール33−1が画像処理を行った処理画素データを、画像処理モジュール33−2に出力する場合の一例を示している。なお、上述したように、画像処理部30においては、それぞれの処理モジュールが出力する画素データは、接続切り替え部31を介して次に処理を行う処理モジュールに出力される。しかし、図2においては、接続切り替え部31の図示を省略し、画像処理モジュール33−1から画像処理モジュール33−2に、処理画素データを直接出力するものとして示している。
上述したように、画像処理部30では、それぞれの処理モジュールが、複数のユニットラインを1つの処理単位として画像処理を行う。このため、画像処理部30に備えたそれぞれの処理モジュール間での画素データの受け渡しも、1つの処理単位ごとに行われる。図2には、前段の画像処理モジュール33−1が、8つのユニットラインのそれぞれの処理画素データを1つの処理単位として、後段の画像処理モジュール33−2に出力する場合を示している。なお、1つのユニットラインには、画像処理を施した同じ列に含まれる連続した複数の処理画素データが含まれている。
なお、図2においては、画像処理モジュール33−1と画像処理モジュール33−2との間の処理画素データの受け渡し方法(転送方法)の一例を示しているが、入力DMAモジュール32と画像処理モジュール33との間の画素データの受け渡し方法や、画像処理モジュール33と出力DMAモジュール34との間の処理画素データの受け渡し方法も、図2と同様である。また、図2においては、8つのユニットラインのそれぞれの処理画素データを1つの処理単位として受け渡している一例を示しているが、それぞれの処理モジュールの間で受け渡しを行うユニットラインの数は、図2に示した数、つまり、8つに限定されるものではない。
<第1の構成>
次に、画像処理部30に備えたそれぞれの処理モジュールの第1の構成について説明する。図3は、本発明の第1の実施形態の画像処理装置1に備えた画像処理部30における画像処理モジュール33の概略構成を示したブロック図である。図3には、第1の構成の画像処理モジュール33における基本的な構成を示している。図3に示した第1の構成の画像処理モジュール33は、入力バッファ331と、セレクタ332と、演算部333と、制御部334と、を備えている。
入力バッファ331は、画像処理モジュール33に入力された入力データを、一時的に記憶するデータバッファである。入力バッファ331は、例えば、SRAM(Static Random Access Memory)などのメモリで構成される。入力バッファ331は、前段の処理モジュールから入力された予め定めた数のユニットライン分の画素データを、入力データとして記憶することができる記憶容量をもっている。入力バッファ331は、制御部334から入力された制御信号に応じて、入力された入力データを一時記憶する。
なお、入力バッファ331は、予め定めた数のユニットライン分の画素データ(入力データ)を記憶する記憶容量の組を2つ備え、一方の記憶容量の組への画素データの書き込みと、他方の記憶容量の組からの画素データの読み出しとを交互に切り替えることによって、1つの処理単位の画素データの入出力を同時期に行うことができるように動作する、いわゆる、ダブルバッファで構成されていてもよい。
セレクタ332は、演算部333に出力する画素データを選択する選択部である。セレクタ332は、制御部334から入力された制御信号に応じて、入力バッファ331に一時記憶された入力データ(画素データ)、または画像処理モジュール33に現在入力されている入力データ(画素データ)のいずれか一方の入力データ(画素データ)を、演算部333に出力する。つまり、セレクタ332は、前段の処理モジュールから入力されて入力バッファ331に一時記憶された画素データ、または前段の処理モジュールから現在入力されているそのままの画素データのいずれか一方の画素データを、演算部333に出力する。
演算部333は、入力された画素データに対して予め定めた種々のデジタル的な画像処理の演算を行う。演算部333は、画像処理の演算を行って生成した処理画素データを、出力データとして画像処理モジュール33の外部に出力する。つまり、演算部333は、生成した処理画素データを、接続切り替え部31を介して他の画像処理モジュール33または出力DMAモジュール34に出力する。
制御部334は、画像処理モジュール33の動作状態の通知と、画像処理モジュール33に備えたそれぞれの構成要素の制御とを行う。制御部334は、画像処理モジュール33の動作状態を表す状態通知信号を、前段の処理モジュールに出力する。また、制御部334は、入力バッファ331に空いている記憶容量があるか否かによって、入力バッファ331の動作を制御する。
より具体的には、入力バッファ331に空いている記憶容量がある場合、入力バッファ331は、画像処理モジュール33に入力された入力データを一時記憶することができる状態である。この場合、制御部334は、前段の処理モジュールからの入力データを受け付けることができる状態であることを表す状態通知信号として、画素データの出力を要求する信号を、前段の処理モジュールに出力する。そして、制御部334は、出力した画素データの出力を要求する状態通知信号に応じて前段の処理モジュールから入力された入力データを一時記憶する(書き込む)ように、入力バッファ331を制御する。
また、入力バッファ331に空いている記憶容量がない場合、入力バッファ331は、画像処理モジュール33に入力された入力データを一時記憶することができない状態である。この場合、制御部334は、前段の処理モジュールからの入力データを受け付けることができない状態であることを表す状態通知信号として、画素データの出力を要求しないことを表す信号を、前段の処理モジュールに出力する。なお、このときの状態通知信号は、前段の処理モジュールに画素データの出力を要求しないことを、画素データの出力を要求する信号の論理レベルで表してもよいし、例えば、パイプライン処理が(一時)停止していることを表すパイプラインストール信号など、画素データの出力を要求する信号と異なる信号で表してもよい。
また、制御部334は、入力バッファ331に一時記憶されている画素データの読み出しの動作と、セレクタ332が演算部333に出力する画素データの選択(切り替え)とを制御する。制御部334における入力バッファ331からの画素データの読み出し動作の制御やセレクタ332の切り替えの制御は、入力バッファ331に空いている記憶容量があるか否かの判定結果、および後段の処理モジュールから入力された状態通知信号に基づいて行う。なお、後段の処理モジュールから入力される状態通知信号は、演算部333が生成した処理画素データの出力先である後段の処理モジュールに備えた制御部334が出力する状態通知信号であり、上述したように、後段の処理モジュールが処理画素データを受け付けることができる状態であるか否かを表す信号、つまり、処理画素データの出力を要求するか否かを表す信号などが含まれている。
そして、制御部334は、後段の処理モジュールから入力された状態通知信号が、処理画素データを受け付けることができる状態であることを表している場合、入力バッファ331の記憶容量が空いているか否かによってセレクタ332を制御し、入力バッファ331に一時記憶された画素データ、または画像処理モジュール33に現在入力されている画素データのいずれか一方の画素データを、演算部333に出力させる。
より具体的には、入力バッファ331の記憶容量が全て空いていない場合、入力バッファ331には、少なくとも1つのユニットライン分の画素データが一時記憶されている状態である。この場合、制御部334は、一時記憶された画素データを読み出すように入力バッファ331を制御すると共に、入力バッファ331から出力された画素データを演算部333に転送するようにセレクタ332を制御する。これにより、演算部333は、入力バッファ331に一時記憶された画素データに対して画像処理の演算を行って生成した処理画素データを、後段の画像処理モジュール33に出力する。このとき、制御部334は、出力した画素データの出力を要求する状態通知信号に応じた入力データが前段の処理モジュールから入力された場合には、入力された入力データを空いている記憶容量に一時記憶する(書き込む)ように、入力バッファ331を制御する。
また、入力バッファ331の記憶容量が全て空いている場合、入力バッファ331には、1つのユニットライン分の画素データも一時記憶されていない状態である。この場合、制御部334は、動作を停止するように入力バッファ331を制御する。これにより、画像処理モジュール33では、入力バッファ331の消費電力を削減することができる。そして、制御部334は、画像処理モジュール33に現在入力されている画素データをそのまま、つまり、現在入力されている画素データを入力バッファ331に一時記憶せずに直接、演算部333に出力するようにセレクタ332を制御する。これにより、演算部333は、画像処理モジュール33に現在入力されている画素データに対して画像処理の演算を行って生成した処理画素データを、後段の画像処理モジュール33に出力する。
一方、制御部334は、後段の処理モジュールから入力された状態通知信号が、処理画素データを受け付けることができない状態であることを表しており、かつ、入力バッファ331の記憶容量が空いている場合、制御部334は、画像処理モジュール33に入力された入力データを空いている記憶容量に一時記憶する(書き込む)ように、入力バッファ331を制御する。
なお、後段の処理モジュールから入力された状態通知信号が、処理画素データを受け付けることができない状態であることを表しており、かつ、入力バッファ331の記憶容量が空いていない場合は、制御部334は、入力データを受け付けることができない状態であることを表す状態通知信号を前段の処理モジュールに出力しているため、前段の処理モジュールからは入力データが入力されない。このため、制御部334は、入力バッファ331の動作を制御しない。
このような構成によって画像処理部30に備えたそれぞれの処理モジュールは、入力バッファ331の記憶容量の空き状態に基づいて、前段の処理モジュールからの入力データの受け付けと、演算部333が画像処理の演算を行う画素データの選択(切り替え)とを行う。
次に、画像処理部30に備えたそれぞれの処理モジュールの動作について説明する。図4は、本発明の第1の実施形態の画像処理装置1に備えた画像処理部30における画像処理モジュール33の動作の一例を示したタイミングチャートである。図4には、画像処理部30が、図1に示したように、入力DMAモジュール32、第1の構成の画像処理モジュール33−1〜画像処理モジュール33−3、および出力DMAモジュール34が直列に接続(パイプライン接続)された構成によってパイプライン処理を行う場合において、画像処理モジュール33−1から画像処理モジュール33−2への処理画素データの受け渡しの一例を示している。
図4には、画像処理モジュール33−1および画像処理モジュール33−2のそれぞれについて、入力される入力データ、入力バッファ331への入力データの書き込みを表すバッファライト、入力バッファ331からの入力データの読み出しを表すバッファリード、および出力する出力データを示している。また、図4には、画像処理モジュール33−1および画像処理モジュール33−2のそれぞれが前段の処理モジュールに出力する状態通知信号として、入力データの出力を要求する信号(以下、「データリクエスト信号」という)を示している。なお、図4には、画像処理モジュール33−2の後段に接続された画像処理モジュール33−3が状態通知信号として出力するデータリクエスト信号も示している。
なお、図4の説明においては、1つのユニットラインを1つの処理単位として画像処理を行うものとして説明する。そして、図4には、入力データ、バッファライト、バッファリード、および出力データのそれぞれに、何番目のユニットラインであるかを表す数字を示している。また、画像処理部30に備えたそれぞれの処理モジュールは、2つのユニットライン分の画素データを記憶することができる容量のデータバッファを備えているものとして説明する。また、以下の説明においては、画像処理モジュール33−1に備えたそれぞれの構成要素と、画像処理モジュール33−2に備えたそれぞれの構成要素とを区別するため、それぞれの構成要素に付与した符号に続いて、画像処理モジュール33に付与した「−」と、それに続く数字の部分を付与して表す。例えば、画像処理モジュール33−1に備えた制御部334を「制御部334−1」とし、画像処理モジュール33−2に備えた制御部334を「制御部334−2」として表す。
画像処理部30がパイプライン処理を開始すると、画像処理モジュール33−1、画像処理モジュール33−2、画像処理モジュール33−3、および出力DMAモジュール34のそれぞれは、入力データの出力を要求するデータリクエスト信号を、前段の処理モジュールに出力する。これは、画像処理部30がパイプライン処理を開始した最初の段階では、それぞれの画像処理モジュール33に備えた入力バッファ331の記憶容量は全て空いているため、入力データを受け付けることができる状態であるからである。この場合、画像処理モジュール33−1に備えた演算部333−1、および画像処理モジュール33−2に備えた演算部333−2は、入力された画素データに対する画像処理をすぐに行うことができる状態である。また、画像処理部30がパイプライン処理を開始した最初の段階では、出力DMAモジュール34は、入力された入力データ(処理画素データ)を、すぐにDMAバス10を介してDRAM20に出力することができる状態であるからである。
なお、図4においては、データリクエスト信号が“High”レベルの期間が、それぞれの処理モジュールが画素データを受け付けることができる状態であるリクエスト期間を表し、データリクエスト信号が“Low”レベルの期間が、それぞれの処理モジュールが画素データを受け付けることができない状態であるリクエストネゲート期間を表している。
入力DMAモジュール32は、後段の画像処理モジュール33−1からデータリクエスト信号が入力されると、まず、DRAM20に記憶されている1つ目のユニットラインのそれぞれの画素データを、DMAバス10を介してユニットラインごとに順次読み出す。そして、入力DMAモジュール32は、読み出した画素データを画像処理モジュール33−1に出力する。このとき、入力DMAモジュール32の後段に接続された画像処理モジュール33−1は、“High”レベルのデータリクエスト信号を出力することによって、画素データを受け付けることができる状態であることを示している。このため、入力DMAモジュール32は、読み出した画素データをデータバッファに一時記憶せずに、そのまま画像処理モジュール33−1に出力する。このとき、入力DMAモジュール32では、データバッファの動作を停止して、データバッファの消費電力を削減する。その後、入力DMAモジュール32は、DRAM20に記憶されている2つ目のユニットラインのそれぞれの画素データを読み出して、画像処理モジュール33−1への出力を開始する。
また、画像処理モジュール33−1は、後段の画像処理モジュール33−2からデータリクエスト信号が入力されると、入力DMAモジュール32から入力された1つ目のユニットラインのそれぞれの画素データに対して画像処理を行う。このとき、画像処理モジュール33−1は、上述したように、入力バッファ331−1の記憶容量が全て空いている状態であり、演算部333−1が入力された画素データに対する画像処理をすぐに行うことができる状態である。また、このとき、画像処理モジュール33−1の後段に接続された画像処理モジュール33−2は、“High”レベルのデータリクエスト信号を出力することによって、処理画素データを受け付けることができる状態であることを示している。このため、制御部334−1は、前段の入力DMAモジュール32から現在入力されている1つ目のユニットラインのそれぞれの画素データを、そのまま演算部333−1に出力するようにセレクタ332−1を制御する。また、制御部334−1は、入力バッファ331−1の動作を停止するように制御して、入力バッファ331−1の消費電力を削減する。これにより、演算部333−1は、セレクタ332−1を介して入力された1つ目のユニットラインのそれぞれの画素データに対して画像処理の演算を行って生成した処理画素データを、後段の画像処理モジュール33−2に出力する。なお、画像処理モジュール33−1から出力される処理画素データは、演算部333−1が画像処理の演算を行うことによって発生する、画素データが入力されてから処理画素データが出力されるまでの遅延時間(以下、「レイテンシ」という)だけ遅れて出力される。その後、画像処理モジュール33−1は、入力DMAモジュール32から入力された2つ目のユニットラインのそれぞれの画素データに対する画像処理を開始する。
また、画像処理モジュール33−2は、後段の画像処理モジュール33−3からデータリクエスト信号が入力されると、画像処理モジュール33−1から入力された1つ目のユニットラインに対応した処理画素データに対して画像処理を行う。このとき、画像処理モジュール33−2も、上述したように、入力バッファ331−2の記憶容量が全て空いている状態であり、演算部333−2が入力された処理画素データに対する画像処理をすぐに行うことができる状態である。また、このとき、画像処理モジュール33−2の後段に接続された画像処理モジュール33−3も、“High”レベルのデータリクエスト信号を出力することによって、処理画素データを受け付けることができる状態であることを示している。このため、制御部334−2も、前段の画像処理モジュール33−1から現在入力されている1つ目のユニットラインに対応する処理画素データを、そのまま演算部333−2に出力するようにセレクタ332−2を制御する。また、制御部334−2は、入力バッファ331−2の動作を停止するように制御して、入力バッファ331−2の消費電力を削減する。これにより、演算部333−2は、セレクタ332−2を介して入力された1つ目のユニットラインに対応する処理画素データに対して画像処理の演算を行い、演算部333−2におけるレイテンシだけ遅れた処理画素データを画像処理モジュール33−3に出力する。その後、画像処理モジュール33−2も、画像処理モジュール33−1から入力された2つ目のユニットラインに対応する処理画素データに対する画像処理を開始する。
このようにして、画像処理部30では、それぞれの処理モジュールが、パイプライン接続された後段の処理モジュールに、入力された入力データを順次受け渡す。このとき、それぞれの処理モジュールは、処理モジュール自身に備えた入力バッファ331の記憶容量が全て空いている状態で、かつ、後段の処理モジュールが入力データを受け付けることができる状態であるため、前段の処理モジュールから入力された入力データを入力バッファ331に一時記憶せずに、そのまま、またはすぐに画像処理の演算を行って、後段の処理モジュールに出力する。図4には、画像処理モジュール33−1と画像処理モジュール33−2とのそれぞれのバッファライトおよびバッファリードに、入力データを入力バッファ331に一時記憶しない期間、すなわち、入力バッファ331を介さずに演算部333に入力データを転送する期間を、バッファスルーの期間として示している。
そして、画像処理部30では、それぞれの処理モジュールが、処理モジュール自身に備えたデータバッファ(入力バッファ331)の動作を停止するように制御する。つまり、画像処理部30では、それぞれの処理モジュールにおけるバッファスルーの期間のデータバッファ(入力バッファ331)の動作を停止する。これにより、画像処理部30では、それぞれの処理モジュールに備えたデータバッファ(入力バッファ331)の消費電力を削減することができる。
ここで、画像処理モジュール33−2が2つ目のユニットラインに対応した処理画素データを出力しているときに、後段の画像処理モジュール33−3が何らかの要因によって処理画素データを受け付けることができない状態になった場合の動作について説明する。この場合、画像処理モジュール33−3は、画像処理モジュール33−2に出力しているデータリクエスト信号を“Low”レベルにすることによって、処理画素データを受け付けることができない状態である、つまり、入力データの出力を要求しないことを表す。なお、それぞれの処理モジュールが、入力データの出力を要求しないことを前段の処理モジュールに伝える方法は、上述したように、データリクエスト信号の論理レベルによる方法に限定されるものではなく、パイプラインストール信号を出力することによって、画素データを受け付けることができない状態であることを通知する方法であってもよい。
このとき、画像処理モジュール33−2は、入力バッファ331−2の記憶容量が全て空いている状態(2つのユニットライン分の記憶容量が空いている状態)であるため、制御部334−2は、前段の画像処理モジュール33−1から現在入力されている3つ目のユニットラインに対応した処理画素データを一時記憶するように、入力バッファ331−2を制御する。これにより、入力バッファ331−2は、3つ目のユニットラインに対応した処理画素データを記憶し、1つのユニットライン分の記憶容量が空いている(残っている)状態になる。
さらに、画像処理モジュール33−2では、制御部334−2が、前段の画像処理モジュール33−1から現在入力されている4つ目のユニットラインに対応した処理画素データを一時記憶するように、入力バッファ331−2を制御する。これにより、入力バッファ331−2は、4つ目のユニットラインに対応した処理画素データも記憶し、空いている記憶容量がない状態になる。つまり、画像処理モジュール33−2は、画像処理モジュール33−1からの処理画素データを受け付けることができない状態になる。このため、制御部334−2は、画像処理モジュール33−2が処理画素データを受け付けることができない状態になったことを表すために、画像処理モジュール33−1に出力しているデータリクエスト信号を“Low”レベルにする。
これにより、画像処理モジュール33−1では、制御部334−1が、画像処理モジュール33−2に備えた制御部334−2と同様に、入力DMAモジュール32から入力された5つ目と6つ目のユニットラインのそれぞれの画素データを一時記憶するように、入力バッファ331−1を制御する。これにより、入力バッファ331−1は、5つ目と6つ目のユニットラインのそれぞれの画素データを記憶し、画像処理モジュール33−1は、入力DMAモジュール32からの画素データを受け付けることができない状態になる。このため、制御部334−1も、制御部334−2と同様に、画像処理モジュール33−1が画素データを受け付けることができない状態になったことを表すために、入力DMAモジュール32に出力しているデータリクエスト信号を“Low”レベルにする。
これにより、入力DMAモジュール32は、DRAM20に記憶されている7つ目のユニットラインのそれぞれの画素データの読み出しを保留する。なお、入力DMAモジュール32にも、2つのユニットライン分の画素データを記憶することができる容量のデータバッファを備えている。このため、入力DMAモジュール32は、7つ目と8つ目のユニットラインのそれぞれの画素データを読み出して、データバッファに一旦記憶してから、9つ目のユニットラインのそれぞれの画素データの読み出しを保留してもよい。
このようにして、画像処理部30では、パイプライン接続された後段の処理モジュールから入力されたデータリクエスト信号が、画素データを受け付けることができない状態であることを表している場合、それぞれの処理モジュールは、後段の処理モジュールへの出力データの出力を停止する。そして、それぞれの処理モジュールは、処理モジュール自身に備えた入力バッファ331の記憶容量が空いている分の画素データを一時記憶した後に、処理モジュール自身が画素データを受け付けることができない状態になったことを通知する。
なお、画像処理部30では、それぞれの処理モジュールが、処理単位ごとに処理を行っている。従って、それぞれの処理モジュールが1つの処理単位の画素データを後段の処理モジュールに出力している途中で画素データを受け付けることができない状態であることが通知された場合でも、現在出力している処理単位の全ての画素データを出力した後に、後段の処理モジュールへの出力データの出力を停止する。
続いて、画像処理モジュール33−3が処理画素データを受け付けることができる状態になった場合の動作について説明する。この場合、画像処理モジュール33−3は、画像処理モジュール33−2に出力しているデータリクエスト信号を“High”レベルにすることによって、処理画素データを受け付けることができる状態である、つまり、入力データの出力を要求することを表す。なお、それぞれの処理モジュールが、再び入力データの出力を要求することを前段の処理モジュールに伝える方法は、上述したように、データリクエスト信号の論理レベルによる方法に限定されるものではなく、パイプラインストール信号の出力を停止することによって、画素データを受け付けることができる状態であることを通知する方法であってもよい。
このとき、画像処理モジュール33−2は、入力バッファ331−2に空いている記憶容量がない状態(3つ目と4つ目のユニットラインに対応したそれぞれの処理画素データを一時記憶している状態)である。このため、制御部334−2は、まず、入力バッファ331−2に記憶している3つ目のユニットラインに対応した処理画素データを入力バッファ331−2から読み出して演算部333−2に出力するように、入力バッファ331−2およびセレクタ332−2を制御する。これにより、入力バッファ331−2は、記憶している3つ目のユニットラインに対応した処理画素データをセレクタ332−2に出力し、セレクタ332−2は、入力バッファ331−2から入力された3つ目のユニットラインに対応した処理画素データを演算部333−2に出力する。そして、演算部333−2は、セレクタ332−2から出力された3つ目のユニットラインに対応した処理画素データに対して画像処理の演算を行い、演算部333−2におけるレイテンシだけ遅れた処理画素データを、後段の画像処理モジュール33−3に出力する。
また、入力バッファ331−2は、3つ目のユニットラインに対応した処理画素データを出力することにより、1つのユニットライン分の記憶容量が空いている(残っている)状態になる。つまり、画像処理モジュール33−2は、画像処理モジュール33−1からの処理画素データを受け付けることができる状態になる。このため、制御部334−2は、画像処理モジュール33−2が処理画素データを受け付けることができる状態になったことを表すために、画像処理モジュール33−1に出力しているデータリクエスト信号を“High”レベルにする。
さらに、画像処理モジュール33−2では、入力バッファ331−2に空いている記憶容量があるが、4つ目のユニットラインに対応した処理画素データを一時記憶している状態である。このため、制御部334−2は、入力バッファ331−2に記憶している4つ目のユニットラインに対応した処理画素データを入力バッファ331−2から読み出して演算部333−2に出力するように、入力バッファ331−2およびセレクタ332−2を制御する。これにより、演算部333−2に、入力バッファ331−2に記憶している4つ目のユニットラインに対応した処理画素データが、セレクタ332−2を介して入力される。そして、演算部333−2は、セレクタ332−2を介して入力された4つ目のユニットラインに対応した処理画素データに対して画像処理の演算を行って生成した処理画素データを、画像処理モジュール33−3に出力する。
また、画像処理モジュール33−1では、後段の画像処理モジュール33−2から入力されたデータリクエスト信号が“High”レベルになり、画像処理モジュール33−2が処理画素データを受け付けることができる状態になったことが通知されると、制御部334−1は、画像処理モジュール33−2に備えた制御部334−2と同様に、5つ目と6つ目のユニットラインに対応した処理画素データを画像処理モジュール33−2に出力する。より具体的には、制御部334−1が、入力バッファ331−1に記憶された5つ目と6つ目のユニットラインのそれぞれの画素データを順次読み出して演算部333−1に出力するように、入力バッファ331−2およびセレクタ332−2を制御する。これにより、演算部333−1は、セレクタ332−1を介して順次入力された5つ目と6つ目のユニットラインのそれぞれの画素データに対して画像処理の演算を行い、演算部333−1におけるレイテンシだけ遅れた処理画素データを、後段の画像処理モジュール33−2に出力する。
また、入力バッファ331−1は、5つ目のユニットラインのそれぞれの画素データを出力したときに、1つのユニットライン分の記憶容量が空いている(残っている)状態になり、画像処理モジュール33−1が入力DMAモジュール32からの画素データを受け付けることができる状態になる。このため、制御部334−1は、制御部334−2と同様に、画像処理モジュール33−1が画素データを受け付けることができる状態になったことを表すために、入力DMAモジュール32に出力しているデータリクエスト信号を“High”レベルにする。
これにより、入力DMAモジュール32は、DRAM20に記憶されている7つ目のユニットラインから、画素データの読み出しを再開し、読み出した画素データを画像処理モジュール33−1に出力する。なお、入力DMAモジュール32が、DRAM20に記憶されている画素データの読み出しを保留する際に、7つ目と8つ目のユニットラインのそれぞれの画素データをデータバッファに記憶している場合には、データバッファに記憶している7つ目のユニットラインのそれぞれの画素データを画像処理モジュール33−1に出力した後に、9つ目のユニットラインから、画素データの読み出しを再開してもよい。
このようにして、画像処理部30では、パイプライン接続された後段の処理モジュールから入力されたデータリクエスト信号が、再び画素データを受け付けることができる状態に変わった場合、それぞれの処理モジュールは、後段の処理モジュールへの出力データの出力を再開する。このとき、それぞれの処理モジュールは、処理モジュール自身に備えた入力バッファ331に記憶している画素データから順次、後段の処理モジュールに出力する。そして、それぞれの処理モジュールは、処理モジュール自身に備えた入力バッファ331の記憶容量が空いている状態になった後に、処理モジュール自身が画素データを受け付けることができる状態になったことを通知する。その後、それぞれの処理モジュールは、入力された画素データを処理モジュール自身に備えた入力バッファ331に一旦記憶してから読み出して、後段の処理モジュールに順次出力する。
以降、上述したような動作を繰り返すことによって、画像処理部30では、パイプライン接続されたそれぞれの処理モジュールによるパイプライン処理を、それぞれのブロック画像データに含まれる画素データに対してユニットラインごとに順次を行うことによって、それぞれのブロック画像データに対する一連の画像処理を行う。
なお、図4に示した画像処理モジュール33の動作のタイミングチャートの一例には示していないが、それぞれの処理モジュールによる後段の処理モジュールへの出力データの出力を再開した後、再び入力バッファ331を介さずに入力データを後段の処理モジュールにそのまま出力することができる状態になった場合には、図4に示したパイプライン処理を開始した最初の段階と同様に、入力バッファ331の動作を停止するように制御する。これにより、画像処理部30では、それぞれの処理モジュールに備えた入力バッファ331の消費電力を削減することができる。
次に、画像処理モジュール33に備えた制御部334の構成について説明する。図5は、本発明の第1の実施形態の画像処理装置1に備えた画像処理部30における画像処理モジュール33の構成を示したブロック図である。図5には、第1の構成の画像処理モジュール33に備えた制御部334の概略構成を示している。なお、図5には、第1の構成の画像処理モジュール33に備えた入力バッファ331、セレクタ332、および演算部333も併せて示している。図5に示した制御部334は、データ量管理部3341と、バッファスルー判定部3342と、入力バッファ書き込み管理部3343と、入力バッファ読み出し管理部3344と、を備えている。
データ量管理部3341は、入力バッファ331に一時記憶する入力データ(画素データ)のデータ量を管理するため、入力バッファ331に一時記憶するユニットラインの数を管理する。より具体的には、データ量管理部3341は、前段の処理モジュールから入力されるデータ有効信号に基づいて、現在入力された画素データが、入力バッファ331に一時記憶すべき有効な画素データであるか否かを判定する。なお、データ有効信号は、ユニットラインに含まれるそれぞれの画素データが、有効な画素データであるか否かを表す信号である。データ量管理部3341は、有効な画素データの数を計数することによって、現在の入力されているユニットラインに含まれる全ての有効な画素データが、前段の処理モジュールから入力されたか否かを判定する。
また、データ量管理部3341は、有効な画素データを含むユニットラインが入力されると、入力バッファ331に一時記憶されているユニットラインの数を表す情報(以下、「バッファ内データ量情報」という)を更新する。例えば、データ量管理部3341は、前段の処理モジュールから有効な画素データを含むユニットラインが入力されるごとに、バッファ内データ量情報が表すユニットライン数を1ずつ加算する。データ量管理部3341がバッファ内データ量情報を加算するタイミングは、ユニットラインにおいて1つ目の有効な画素データを判定したタイミングである。これは、1つのユニットラインにおいて1つ目の有効な画素データが入力されると、その後、このユニットラインに含まれる有効な画素データが引き続き入力されるからである。
また、データ量管理部3341は、入力バッファ読み出し管理部3344が入力バッファ331に一時記憶した画素データを読み出すバッファリード信号に基づいて、入力バッファ331から読み出した画素データの数を計数し、現在の出力するユニットラインに含まれる全ての画素データが、入力バッファ331から読み出されたか否かを判定する。データ量管理部3341は、ユニットラインに含まれる全ての画素データが読み出されたと判定すると、バッファ内データ量情報を更新する。例えば、データ量管理部3341は、1つのユニットラインが読み出されたと判定するごとに、バッファ内データ量情報が表すユニットライン数を1ずつ減算する。データ量管理部3341がバッファ内データ量情報を減算するタイミングは、ユニットラインに含まれる最後の画素データの読み出し判定したタイミング、つまり、1つのユニットラインに含まれる全ての画素データを入力バッファ331から読み出したタイミングである。これは、1つのユニットラインに含まれる全ての画素データの読み出しが終わらないと、他のユニットラインのそれぞれの画素データを入力バッファ331に一時記憶することができないからである。
このように、データ量管理部3341は、入力バッファ331に一時記憶されているユニットラインの数を管理する。そして、データ量管理部3341は、バッファ内データ量情報を、バッファスルー判定部3342および入力バッファ読み出し管理部3344に出力する。
また、データ量管理部3341は、入力バッファ331に一時記憶されているデータ量(ユニットラインの数)を管理した結果、入力バッファ331に空いている記憶容量があると判定した場合には、入力データの出力を要求するデータリクエスト信号を、前段の処理モジュールに出力する。より具体的には、データ量管理部3341は、入力バッファ331に一時記憶することができるユニットラインの最大数から、バッファ内データ量情報が表すユニットライン数、つまり、入力バッファ331に一時記憶している現在のユニットライン数を減算した値が、「0」よりも大きい値である場合には、入力バッファ331に空いている記憶容量があると判定し、入力データの出力を要求することを表すデータリクエスト信号を前段の処理モジュールに出力する。つまり、バッファ内データ量情報が表すユニットライン数が、入力バッファ331に一時記憶することができるユニットラインの最大数よりも小さい値である場合には、入力データの出力を要求することを表すデータリクエスト信号を前段の処理モジュールに出力する。また、データ量管理部3341は、入力バッファ331に一時記憶することができるユニットラインの最大数から、バッファ内データ量情報が表すユニットライン数を減算した値が、「0」である場合には、入力バッファ331に空いている記憶容量がないと判定し、前段の処理モジュールに出力しているデータリクエスト信号を、入力データの出力を要求しないことを表す論理レベルにする。また、このとき、データ量管理部3341は、入力データの出力を要求しないことを表すパイプラインストール信号を前段の処理モジュールに出力する。つまり、バッファ内データ量情報が表すユニットライン数が、入力バッファ331に一時記憶することができるユニットラインの最大数と同じ値である場合には、前段の処理モジュールに出力しているデータリクエスト信号を、入力データの出力を要求しないことを表す論理レベルにし、パイプラインストール信号を前段の処理モジュールに出力する。
なお、上述したデータ量管理部3341の動作では、バッファ内データ量情報が表すユニットライン数が、入力バッファ331に一時記憶することができるユニットラインの最大数よりも小さい値である場合に、入力データの出力を要求することを表すデータリクエスト信号を前段の処理モジュールに出力する動作を示した。しかし、データ量管理部3341は、例えば、入力データの出力を要求することを表すデータリクエスト信号に応じて前段の処理モジュールから入力データが入力されるまでの遅延時間(レイテンシ)が予めわかっている場合には、入力バッファ331からの画素データの読み出しが終了するタイミングを予想し、画素データの読み出しが終了する前のタイミングで、入力データの出力を要求するデータリクエスト信号を出力してもよい。
バッファスルー判定部3342は、データ量管理部3341から入力されたバッファ内データ量情報と、後段の処理モジュールから入力されたデータリクエスト信号およびパイプラインストール信号とに基づいて、入力バッファ331の制御方法を判定する。すなわち、バッファスルー判定部3342は、画像処理モジュール33に入力された入力データを入力バッファ331に一時記憶する(書き込む)か否かの判定、入力バッファ331に一時記憶している入力データ(画素データ)を読み出すか否かの判定、および演算部333に出力する入力データ(画素データ)の選択(切り替え)の判定を行う。そして、バッファスルー判定部3342は、判定した結果に基づいて、入力バッファ書き込み管理部3343と、入力バッファ読み出し管理部3344とのそれぞれに、入力バッファ331に対する動作を指示するための指示信号(以下、「バッファ動作指示信号」という)を出力する。また、バッファスルー判定部3342は、セレクタ332を制御するための制御信号(以下、「バッファスルー信号」という)を出力する。
より具体的には、バッファスルー判定部3342は、後段の処理モジュールからデータリクエスト信号が入力され、かつ、パイプラインストール信号が入力されていない場合には、後段の処理モジュールが処理画素データを受け付けることができる状態であると判定する。そして、バッファスルー判定部3342は、バッファ内データ量情報が表すユニットライン数が「0」よりも大きい値であるときには、入力バッファ331に少なくとも1つのユニットライン分の画素データが一時記憶されていると判定する。この場合、バッファスルー判定部3342は、入力バッファ書き込み管理部3343に、画像処理モジュール33に入力された入力データを一時記憶する(書き込む)ように指示するバッファ動作指示信号を出力する。また、バッファスルー判定部3342は、入力バッファ読み出し管理部3344に、入力バッファ331に一時記憶している画素データを読み出すように指示するバッファ動作指示信号を出力する。さらに、バッファスルー判定部3342は、セレクタ332に、入力バッファ331から出力された画素データを演算部333に出力するように制御するバッファスルー信号を出力する。これにより、画像処理モジュール33に現在入力されている画素データは、入力バッファ331に一時記憶された後に読み出されて、つまり、入力バッファ331に一旦記憶されてから、演算部333に転送される。
また、バッファスルー判定部3342が後段の処理モジュールが処理画素データを受け付けることができる状態であると判定した場合において、バッファ内データ量情報が表すユニットライン数が「0」であるときには、入力バッファ331に1つのユニットライン分の画素データも一時記憶されていないと判定する。つまり、バッファスルー判定部3342は、処理画素データの流れが滞らずに、パイプライン処理がスムーズに行われている状態であると判定する。この場合、バッファスルー判定部3342は、入力バッファ書き込み管理部3343に、入力バッファ331の動作を停止させるように指示するバッファ動作指示信号を出力する。また、バッファスルー判定部3342は、入力バッファ読み出し管理部3344に、入力バッファ331に一時記憶している画素データの読み出しを行わないように指示するバッファ動作指示信号を出力する。さらに、バッファスルー判定部3342は、セレクタ332に、画像処理モジュール33に現在入力されている入力データ(画素データ)をそのまま演算部333に出力するように制御するバッファスルー信号を出力する。これにより、画像処理モジュール33に現在入力されている画素データが、入力バッファ331に一時記憶されずに直接、つまり、入力バッファ331をスルーして演算部333に転送される。
また、バッファスルー判定部3342は、後段の処理モジュールからデータリクエスト信号が入力されていない場合、または後段の処理モジュールからデータリクエスト信号が入力されているが、パイプラインストール信号が入力されている場合には、後段の処理モジュールが処理画素データを受け付けることができない状態であると判定する。この場合において、バッファスルー判定部3342は、バッファ内データ量情報が表すユニットライン数が、入力バッファ331に一時記憶することができるユニットラインの最大数よりも小さい値であるときには、入力バッファ331に少なくとも1つのユニットライン分の画素データを一時記憶することができると判定する。この場合、バッファスルー判定部3342は、入力バッファ書き込み管理部3343に、画像処理モジュール33に入力された入力データを一時記憶する(書き込む)ように指示するバッファ動作指示信号を出力する。これにより、画像処理モジュール33に現在入力されている画素データは、入力バッファ331に一時記憶される。
なお、このとき、バッファスルー判定部3342は、入力バッファ読み出し管理部3344に、入力バッファ331に一時記憶している画素データの読み出しを行わないように指示するバッファ動作指示信号を出力する。さらに、バッファスルー判定部3342は、セレクタ332に、入力バッファ331から出力された画素データを演算部333に出力するように制御するバッファスルー信号を出力する。これにより、画像処理モジュール33に現在入力されて入力バッファ331に一時記憶している画素データと同じ画素データ(現在は画像処理の演算対象ではない画素データ)が、入力バッファ331をスルーする経路を通って演算部333に出力されることがなくなり、演算部333が不要な動作を行って電力を消費してしまうことを回避することができる。
また、画像処理モジュール33では、後段の処理モジュールが処理画素データを受け付けることができない状態であると判定した場合で、かつ、バッファ内データ量情報が表すユニットライン数が、入力バッファ331に一時記憶することができるユニットラインの最大数と同じ値であるとき、データ量管理部3341が入力データの出力を要求しないことを表すパイプラインストール信号を前段の処理モジュールに出力している。このため、画像処理モジュール33には、前段の処理モジュールからの入力データが入力されない。このとき、バッファスルー判定部3342は、入力バッファ書き込み管理部3343および入力バッファ読み出し管理部3344のそれぞれに、入力バッファ331への書き込みおよび読み出しの動作をしないように指示する。すなわち、バッファスルー判定部3342は、入力バッファ331に一時記憶している画素データを保持するように指示する。このときも、バッファスルー判定部3342は、セレクタ332に、入力バッファ331から出力された画素データを演算部333に出力するように制御するバッファスルー信号を出力する。これにより、演算部333には、画素データが入力されることがなくなる。
入力バッファ書き込み管理部3343は、バッファスルー判定部3342から入力されたバッファ動作指示信号に応じて、入力バッファ331に対する入力データの書き込み動作を行うための制御信号(以下、「バッファライト信号」という)を生成し、入力バッファ331に出力する。より具体的には、入力バッファ書き込み管理部3343は、画像処理モジュール33に入力された入力データを一時記憶する(書き込む)ように指示するバッファ動作指示信号が入力された場合、前段の処理モジュールから入力されたデータ有効信号が有効であることを表している入力データ(画素データ)を、入力バッファ331に入力データを書き込むためのバッファライト信号を生成し、入力バッファ331に出力する。また、入力バッファ書き込み管理部3343は、入力バッファ331の動作を停止させるように指示するバッファ動作指示信号が入力された場合、入力バッファ331に入力データを書き込むためのバッファライト信号を入力バッファ331に出力しない。なお、入力バッファ書き込み管理部3343は、入力バッファ331の動作を停止させるように指示するバッファ動作指示信号が入力された場合、例えば、入力バッファ331をスリープ状態にして動作を停止させるための制御信号を生成し、入力バッファ331に出力してもよい。なお、図5においては、バッファライト信号のみを図示し、例えば、スリープ信号など、入力バッファ331の動作を停止させるための制御信号の図示は省略している。
入力バッファ読み出し管理部3344は、バッファスルー判定部3342から入力されたバッファ動作指示信号に応じて、入力バッファ331に対する画素データの読み出し動作を行うための制御信号(以下、「バッファリード信号」という)を生成し、入力バッファ331に出力する。より具体的には、入力バッファ読み出し管理部3344は、入力バッファ331に一時記憶している画素データを読み出すように指示するバッファ動作指示信号が入力された場合、入力バッファ331に一時記憶しているユニットラインの内、最も早く一時記憶されたユニットラインから順次読み出すためのバッファリード信号を生成し、入力バッファ331に出力する。また、入力バッファ読み出し管理部3344は、入力バッファ331に一時記憶している画素データの読み出しを行わないように指示するバッファ動作指示信号が入力された場合、入力バッファ331に一時記憶しているユニットラインのそれぞれの画素データを読み出すためのバッファリード信号を入力バッファ331に出力しない。
ここで、バッファスルー判定部3342が行うそれぞれの判定処理について説明する。図6は、本発明の第1の実施形態の画像処理装置1に備えた画像処理部30における画像処理モジュール33の処理手順を示したフローチャートである。図6には、第1の構成の画像処理モジュール33に備えたバッファスルー判定部3342における入力バッファ331の制御方法の判定の処理手順を示している。
画像処理部30がパイプライン処理を開始すると、バッファスルー判定部3342は、まず、後段の処理モジュールからデータリクエスト信号が入力されたか否か、つまり、後段の処理モジュールが処理画素データの出力を要求しているか否かを判定する(ステップS100)。ステップS100において、データリクエスト信号が入力されていない、つまり、後段の処理モジュールが処理画素データの出力を要求していないと判定した場合(ステップS100の“NO”)、バッファスルー判定部3342は、ステップS105に進む。
一方、ステップS100において、データリクエスト信号が入力された、つまり、後段の処理モジュールが処理画素データの出力を要求していると判定した場合(ステップS100の“YES”)、バッファスルー判定部3342は、後段の処理モジュールのパイプライン処理が(一時)停止し、処理画素データを受け付けることができないパイプラインストール状態であるか否かを判定する(ステップS101)。このステップS101における判定は、後段の処理モジュールからパイプラインストール信号が入力されているか否かによって行うことができる。
ステップS101において、後段の処理モジュールがパイプラインストール状態ではないと判定した場合(ステップS101の“NO”)、バッファスルー判定部3342は、ステップS102において、データ量管理部3341から入力されたバッファ内データ量情報が表すユニットライン数が「0」であるか否かを判定する。
ステップS102において、バッファ内データ量情報が表すユニットライン数が「0」ではない、つまり、バッファ内データ量情報が表すユニットライン数が「0」よりも大きい値である場合(ステップS102の“NO”)、バッファスルー判定部3342は、入力バッファ331に少なくとも1つのユニットライン分の画素データが一時記憶されていると判定する。そして、バッファスルー判定部3342は、入力バッファ書き込み管理部3343、入力バッファ読み出し管理部3344、およびセレクタ332のそれぞれを、画像処理モジュール33に現在入力されている画素データを入力バッファ331に一旦記憶した後に読み出して演算部333に転送するように制御する(ステップS103)。より具体的には、バッファスルー判定部3342は、入力バッファ書き込み管理部3343に、画像処理モジュール33に入力された入力データを一時記憶する(書き込む)ように指示するバッファ動作指示信号を出力し、入力バッファ読み出し管理部3344に、入力バッファ331に一時記憶している画素データを読み出すように指示するバッファ動作指示信号を出力する。また、バッファスルー判定部3342は、セレクタ332に、入力バッファ331から出力された画素データを演算部333に出力するように制御するバッファスルー信号を出力する。
一方、ステップS102において、バッファ内データ量情報が表すユニットライン数が「0」である場合(ステップS102の“YES”)、バッファスルー判定部3342は、入力バッファ331に1つのユニットライン分の画素データも一時記憶されていない、つまり、入力バッファ331の記憶容量が全て空いている状態であると判定する。これは、画素データの流れが滞らずに、パイプライン処理がスムーズに行われている状態である。このため、バッファスルー判定部3342は、入力バッファ書き込み管理部3343、入力バッファ読み出し管理部3344、およびセレクタ332のそれぞれを、画像処理モジュール33に現在入力されている画素データを直接、演算部333に転送するように制御する(ステップS104)。すなわち、バッファスルー判定部3342は、画像処理モジュール33に現在入力されている画素データを、入力バッファ331をスルーして演算部333に転送するように制御する。より具体的には、バッファスルー判定部3342は、入力バッファ書き込み管理部3343に、入力バッファ331の動作を停止させるように指示するバッファ動作指示信号を出力し、入力バッファ読み出し管理部3344に、入力バッファ331の読み出しを行わないように指示するバッファ動作指示信号を出力する。また、バッファスルー判定部3342は、セレクタ332に、画像処理モジュール33に現在入力されている入力データ(画素データ)をそのまま演算部333に出力するように制御するバッファスルー信号を出力する。
一方、ステップS101において、後段の処理モジュールがパイプラインストール状態であると判定した場合(ステップS101の“YES”)、またはステップS100において、後段の処理モジュールが処理画素データの出力を要求していないと判定した場合(ステップS100の“NO”)、バッファスルー判定部3342は、ステップS105に進む。ステップS105において、バッファスルー判定部3342は、データ量管理部3341から入力されたバッファ内データ量情報が表すユニットライン数が、入力バッファ331に一時記憶することができるユニットラインの最大数よりも小さい値であるか否かを判定する。
ステップS105において、バッファ内データ量情報が表すユニットライン数が入力バッファ331に一時記憶することができるユニットラインの最大数よりも小さい値である場合(ステップS105の“YES”)、バッファスルー判定部3342は、入力バッファ331に少なくとも1つのユニットライン分の画素データを一時記憶することができると判定する。そして、バッファスルー判定部3342は、入力バッファ書き込み管理部3343、入力バッファ読み出し管理部3344、およびセレクタ332のそれぞれを、画像処理モジュール33に現在入力されている画素データを入力バッファ331に一旦記憶しておくように制御する(ステップS106)。より具体的には、バッファスルー判定部3342は、入力バッファ書き込み管理部3343に、画像処理モジュール33に入力された入力データを一時記憶する(書き込む)ように指示するバッファ動作指示信号を出力し、入力バッファ読み出し管理部3344に、入力バッファ331に一時記憶している画素データの読み出しを行わないように指示するバッファ動作指示信号を出力する。また、バッファスルー判定部3342は、セレクタ332に、入力バッファ331から出力された画素データを演算部333に出力するように制御するバッファスルー信号を出力する。
一方、ステップS105において、バッファ内データ量情報が表すユニットライン数が入力バッファ331に一時記憶することができるユニットラインの最大数よりも小さい値ではない、つまり、バッファ内データ量情報が表すユニットライン数が入力バッファ331に一時記憶することができるユニットラインの最大数と同じ値である場合(ステップS105の“NO”)、バッファスルー判定部3342は、入力バッファ331に入力データ(画素データ)を一時記憶することができないと判定する。そして、バッファスルー判定部3342は、入力バッファ書き込み管理部3343、入力バッファ読み出し管理部3344、およびセレクタ332のそれぞれが動作をしないように、つまり、入力バッファ331に一時記憶している画素データを保持するように制御する(ステップS107)。なお、このとき、画像処理モジュール33では、データ量管理部3341が入力データの出力を要求しないことを表すデータリクエスト信号やパイプラインストール信号を前段の処理モジュールに出力している。
このような処理によって、バッファスルー判定部3342は、入力バッファ331の制御方法を判定し、判定した結果に基づいて、入力バッファ書き込み管理部3343と、入力バッファ読み出し管理部3344と、セレクタ332とを制御する。なお、バッファスルー判定部3342における入力バッファ331の制御方法の判定を、画像処理部30におけるパイプライン処理が終了するまで繰り返す。
このような構成および処理によって第1の構成の画像処理モジュール33に備えた制御部334は、入力バッファ331の記憶容量の空き状態に基づいて、前段の処理モジュールに対して入力データ(画素データ)を要求する。また、制御部334は、入力バッファ331の記憶容量の空き状態と、後段の処理モジュールの動作状態とに基づいて、前段の処理モジュールから画像処理モジュール33に入力された入力データ(画素データ)の入力バッファ331への書き込み、入力バッファ331に一時記憶している画素データの読み出し、演算部333が画像処理の演算を行う画素データの選択(切り替え)とを行う。これにより、演算部333は、入力された画素データに対して画像処理の演算を行って生成した処理画素データを、後段の処理モジュールに出力する。なお、図5においては、画像処理の演算を行って生成したユニットラインに含まれるそれぞれの処理画素データが、有効な処理画素データであるか否かを表すデータ有効信号を、演算部333が生成して、後段の処理モジュールに出力する構成を示している。
次に、図5に示した第1の構成の画像処理モジュール33の動作について説明する。図7は、本発明の第1の実施形態の画像処理装置1に備えた画像処理部30における画像処理モジュール33の動作の一例を示したタイミングチャートである。図7には、図5に示した第1の構成の画像処理モジュール33における画素データの受け渡しの一例を示している。
図7には、画像処理モジュール33に後段の処理モジュールから入力されるデータリクエスト信号およびパイプラインストール信号と、画像処理モジュール33が後段の処理モジュールに出力する出力データと、を示している。また、図7には、画像処理モジュール33が前段の処理モジュールに出力するデータリクエスト信号、パイプラインストール信号、およびデータ有効信号と、画像処理モジュール33に前段の処理モジュールから入力されるデータ有効信号および入力データと、を示している。さらに、図7には、画像処理モジュール33に備えた制御部334がセレクタ332に出力するバッファスルー信号と、画像処理モジュール33に備えた制御部334内の入力バッファ書き込み管理部3343が入力バッファ331に出力するバッファライト信号と、画像処理モジュール33に備えた制御部334内の入力バッファ読み出し管理部3344が入力バッファ331に出力するバッファリード信号と、を示している。さらに、図7には、画像処理モジュール33に備えた制御部334内の信号であるバッファ内データ量情報と、画像処理モジュール33に備えた演算部333に入力される画素データとを示している。
なお、図7の説明においては、1つのユニットラインを1つの処理単位として画像処理を行うものとして説明する。また、画像処理モジュール33の備えた入力バッファ331は、2つのユニットライン分の画素データを記憶することができる記憶容量をもっているものとして説明する。
画像処理部30がパイプライン処理を開始すると、画像処理部30に備えたそれぞれの処理モジュールは、タイミングt1において、前段の処理モジュールに入力データの出力を要求するデータリクエスト信号を出力する。画像処理モジュール33では、データ量管理部3341が、前段の処理モジュールにデータリクエスト信号を出力する。また、画像処理モジュール33には、後段の処理モジュールからデータリクエスト信号が入力される。
なお、上述したように、画像処理部30がパイプライン処理を開始した最初の段階では、画像処理モジュール33は、入力された画素データに対する画像処理をすぐに行うことができる状態であるため、制御部334は、入力バッファ331をスルーして演算部333に転送するように制御をする。しかし、以下の説明においては、バッファ内データ量情報の変化の説明を容易にするため、画像処理部30がパイプライン処理を開始した最初の段階において、制御部334が、画像処理モジュール33に入力された画素データを入力バッファ331に一旦記憶した後に読み出して演算部333に転送するように制御するものとして説明する。
画像処理モジュール33には、タイミングt1において出力したデータリクエスト信号に応じて前段の処理モジュールから入力データとデータ有効信号とが入力される。データ量管理部3341は、入力されたデータ有効信号に基づいて、バッファ内データ量情報を更新する。より具体的には、データ量管理部3341は、データ有効信号の“High”レベルによって、有効な画素データを含むユニットラインが入力されたと判定すると、タイミングt2において、バッファ内データ量情報が表すユニットライン数に「1」を加算する。これにより、バッファ内データ量情報=「1」となる。
また、バッファスルー判定部3342は、後段の処理モジュールから入力されたデータリクエスト信号の“High”レベルおよびパイプラインストール信号の“High”レベルに応じて、前段の処理モジュールから入力された入力データを、入力バッファ331に一旦記憶してから演算部333に転送するように指示する。これにより、入力バッファ書き込み管理部3343は、タイミングt2において、バッファライト信号を入力バッファ331に出力する。なお、バッファライト信号は、現在入力されているユニットラインのそれぞれの画素データを入力バッファ331に一時記憶(書き込む)ための複数のパルス信号が含まれた信号であるが、図7においては、“High”レベルの信号として示している。また、バッファスルー判定部3342は、タイミングt2において、入力バッファ331から出力された画素データを演算部333に出力するようにセレクタ332を制御するため、“Low”レベルのバッファスルー信号を出力する。
その後、現在入力されているユニットラインが入力バッファ331に一時記憶されると、入力バッファ読み出し管理部3344は、タイミングt3において、バッファリード信号を入力バッファ331に出力する。なお、バッファリード信号も、入力バッファ331に一時記憶されているユニットラインのそれぞれの画素データを読み出すための複数のパルス信号が含まれた信号であるが、図7においては、バッファライト信号と同様に、“High”レベルの信号として示している。これにより、演算部333には、入力バッファ331から読み出しされた画素データがセレクタ332を介して順次入力される。そして、演算部333は、入力された画素データに対して画像処理の演算を行い、演算部333におけるレイテンシだけ遅れた処理画素データを、出力データとして後段の処理モジュールに出力する。このとき、演算部333は、出力データに含まれる有効な画素データを表すデータ有効信号も後段の処理モジュールに出力する。
その後、データ量管理部3341は、有効な画素データを含む次のユニットラインが入力されたと判定すると、タイミングt4において、バッファ内データ量情報を更新する。これにより、バッファ内データ量情報=「2」となる。
また、データ量管理部3341は、現在読み出しているユニットラインに含まれる全ての画素データを入力バッファ331から読み出したと判定すると、タイミングt5において、バッファ内データ量情報を更新する。より具体的には、データ量管理部3341は、バッファ内データ量情報が表すユニットライン数から「1」を減算する。これにより、バッファ内データ量情報=「1」となる。
以降、同様に、入力バッファ書き込み管理部3343による現在入力されているユニットラインのそれぞれの画素データの入力バッファ331への一時記憶(書き込み)および入力バッファ読み出し管理部3344による現在読み出しているユニットラインのそれぞれの画素データの入力バッファ331からの読み出しと、データ量管理部3341によるバッファ内データ量情報の更新とを繰り返す。これにより、演算部333は、入力バッファ331に一旦記憶してから転送された画素データに対して画像処理の演算を行った処理画素データとデータ有効信号とを後段の処理モジュールに出力する。
その後、入力バッファ読み出し管理部3344によって入力バッファ331に一時記憶された全てのユニットラインのそれぞれの画素データの読み出しが終了すると、タイミングt6において、データ量管理部3341が更新したバッファ内データ量情報が「0」となる。これにより、バッファスルー判定部3342は、後段の処理モジュールから入力されているデータリクエスト信号の“High”レベルおよびパイプラインストール信号の“High”レベルと、バッファ内データ量情報=「0」とに応じて、前段の処理モジュールから入力された入力データをそのまま画素データとして演算部333に出力するように制御し、バッファスルー信号を“High”レベルにする。
これにより、その後のタイミングt7において、前段の処理モジュールから有効な画素データを含むユニットラインが入力されると、それぞれの画素データは、セレクタ332を介してそのまま、演算部333に順次入力される。そして、演算部333は、入力された画素データに対して画像処理の演算を行った処理画素データとデータ有効信号とを後段の処理モジュールに出力する。
以降、同様に、前段の処理モジュールから現在入力されているユニットラインのそれぞれの画素データが演算部333に直接入力され、演算部333は、処理画素データとデータ有効信号との後段の処理モジュールへの出力を繰り返す。
その後、タイミングt8において、後段の処理モジュールから入力されているパイプラインストール信号が、パイプラインストール状態であるため処理画素データを受け付けることができないことを表す“Low”レベルになると、バッファスルー判定部3342は、前段の処理モジュールから現在入力されているユニットラインのそれぞれの画素データの演算部333への転送が終了した後に、バッファスルー信号を“Low”レベルにする。また、バッファスルー判定部3342は、後段の処理モジュールから入力されたデータリクエスト信号の“High”レベルおよびパイプラインストール信号の“Low”レベルに応じて、前段の処理モジュールから入力された入力データを、入力バッファ331に一旦記憶するように制御する。
これにより、タイミングt9において前段の処理モジュールから入力された入力データは、入力バッファ書き込み管理部3343から入力バッファ331に出力されたバッファライト信号に応じて、入力バッファ331に一旦記憶される。このとき、データ量管理部3341は、バッファ内データ量情報を更新する。これにより、バッファ内データ量情報=「1」となる。
その後、タイミングt10において、後段の処理モジュールから入力されているパイプラインストール信号が、パイプラインストール状態が解消されたため処理画素データを受け付けることができることを表す“High”レベルになる。すると、バッファスルー判定部3342は、後段の処理モジュールから入力されたデータリクエスト信号およびパイプラインストール信号の“High”レベルと、バッファ内データ量情報=「1」とに応じて、前段の処理モジュールから入力された入力データを、入力バッファ331に一旦記憶してから演算部333に転送するように指示する。これにより、入力バッファ読み出し管理部3344は、前段の処理モジュールから現在入力されているユニットラインのそれぞれの画素データの入力バッファ331への一時記憶(書き込み)が終了した後に、タイミングt11において、バッファリード信号を入力バッファ331に出力する。そして、入力バッファ331から読み出しされた画素データが演算部333に順次入力され、演算部333は、入力された画素データに対して画像処理の演算を行った処理画素データとデータ有効信号とを、演算部333におけるレイテンシだけ遅れて後段の処理モジュールに出力する。
なお、図7では、現在入力されているユニットラインのそれぞれの画素データの入力バッファ331への一時記憶(書き込み)が終了した後のタイミングt11においてバッファリード信号を出力している。これは、バッファスルー判定部3342が、入力された入力データを入力バッファ331に一旦記憶してから演算部333に転送するように指示したときには、まだ入力バッファ331に1つのユニットライン分の画素データが一時記憶されていない状態であるからである。従って、バッファスルー判定部3342が指示したときに、すでに入力バッファ331に1つ以上のユニットライン分の画素データが一時記憶されている場合には、入力バッファ読み出し管理部3344は、現在入力されているユニットラインのそれぞれの画素データの入力バッファ331への一時記憶(書き込み)の終了を待たずに、バッファリード信号を入力バッファ331に出力してもよい。
以降、同様に、入力バッファ書き込み管理部3343による現在入力されているユニットラインのそれぞれの画素データの入力バッファ331への一時記憶(書き込み)および入力バッファ読み出し管理部3344による現在読み出しているユニットラインのそれぞれの画素データの入力バッファ331からの読み出しと、データ量管理部3341によるバッファ内データ量情報の更新とを繰り返す。これにより、演算部333は、入力バッファ331に一旦記憶してから転送された画素データに対して画像処理の演算を行った処理画素データとデータ有効信号とを後段の処理モジュールに出力する。
その後、タイミングt12において、後段の処理モジュールから入力されているパイプラインストール信号が“Low”レベルになると、入力バッファ書き込み管理部3343による入力されたユニットラインのそれぞれの画素データの入力バッファ331への一時記憶(書き込み)のみを継続する。そして、データ量管理部3341は、バッファ内データ量情報=「2」となった後のタイミングt13において、前段の処理モジュールに出力するパイプラインストール信号を、パイプラインストール状態であるため処理画素データを受け付けることができないことを表す“Low”レベルにする。これにより、現在のユニットラインのそれぞれの画素データの入力が終了した後に、前段の処理モジュールからの入力データの出力が一旦停止する。
その後、タイミングt14において、後段の処理モジュールから入力されているパイプラインストール信号が“High”レベルになると、バッファスルー判定部3342は、後段の処理モジュールから入力されたデータリクエスト信号およびパイプラインストール信号の“High”レベルと、バッファ内データ量情報=「2」とに応じて、前段の処理モジュールから入力された入力データを、入力バッファ331に一旦記憶してから演算部333に転送するように指示する。これにより、入力バッファ読み出し管理部3344は、バッファリード信号を入力バッファ331に出力し、演算部333は、入力バッファ331から読み出しされた画素データに対して画像処理の演算を行った処理画素データとデータ有効信号とを、演算部333におけるレイテンシだけ遅れて後段の処理モジュールに出力する。
また、入力バッファ読み出し管理部3344によって現在読み出しているユニットラインの全ての画素データの読み出しが終了すると、タイミングt15において、データ量管理部3341が更新したバッファ内データ量情報が「1」となる。これにより、データ量管理部3341は、前段の処理モジュールに出力するパイプラインストール信号を、パイプラインストール状態が解消されたため処理画素データを受け付けることができることを表す“High”レベルにする。これにより、前段の処理モジュールは、タイミングt16において、データリクエスト信号に応じた入力データとデータ有効信号との出力を再開する。
以降、同様に、入力バッファ書き込み管理部3343による現在入力されているユニットラインのそれぞれの画素データの入力バッファ331への一時記憶(書き込み)および入力バッファ読み出し管理部3344による現在読み出しているユニットラインのそれぞれの画素データの入力バッファ331からの読み出しと、データ量管理部3341によるバッファ内データ量情報の更新とを繰り返す。そして、演算部333は、入力バッファ331から入力された画素データに対応する処理画素データとデータ有効信号とを後段の処理モジュールへの出力を繰り返す。
その後、画像処理モジュール33は、タイミングt17において、後段の処理モジュールに対して、全てのユニットラインに対応する処理画素データとデータ有効信号との出力が終了すると、処理を終了する。そして、画像処理部30に備えたそれぞれの処理モジュールによる処理が終了すると、画像処理部30は、パイプライン処理を終了する。
本第1の実施形態における第1の構成によれば、メモリ(DRAM20)と、入力されたデータ(画素データまたは処理画素データ)に対して予め定めた処理を行う複数の処理モジュール(画像処理モジュール33−1〜画像処理モジュール33−3)が直列に接続されたパイプラインが構成され、それぞれの処理モジュール(画像処理モジュール33)が処理を順次行うことによってパイプライン処理を行う画像処理部(画像処理部30)とがデータバス(DMAバス10)に接続された画像処理装置(画像処理装置1)であって、画像処理モジュール33のそれぞれは、画素データまたは処理画素データを処理の単位ごとに一時的に記憶するデータバッファ(入力バッファ331)と、パイプライン処理における処理画素データの流れの状態と、入力バッファ331に記憶している画素データまたは処理画素データの状態とに基づいて、画素データまたは処理画素データを入力バッファ331に記憶するか否かを判定し、判定した結果に基づいて画素データまたは処理画素データを(演算部333に)転送する画像処理モジュール33内の経路を選択すると共に、入力バッファ331の動作を制御する制御部(制御部334)と、を備える画像処理装置(画像処理装置1)が構成される。
また、本第1の実施形態における第1の構成によれば、制御部334は、入力バッファ331が有する記憶容量に画素データまたは処理画素データが記憶されている状態で、入力バッファ331にさらに画素データまたは処理画素データを記憶することができる状態である場合、画素データまたは処理画素データを入力バッファ331に一旦記憶してから読み出して(演算部333に)転送する経路を選択すると共に、入力バッファ331を動作させ、パイプライン処理における画素データまたは処理画素データの流れが滞っている状態(パイプラインストール状態である状態)で、入力バッファ331にさらに画素データまたは処理画素データを記憶することができない状態である場合、画素データまたは処理画素データを入力バッファ331に一旦記憶してから読み出して(演算部333に)転送する経路を選択すると共に、入力バッファ331を、記憶している画素データまたは処理画素データを保持させるように動作させ、パイプライン処理における画素データまたは処理画素データの流れが滞っていない状態(パイプラインストール状態ではない状態)で、入力バッファ331が有する全ての記憶容量に画素データまたは処理画素データが記憶されていない状態である場合に、入力バッファ331に記憶せずにスルーして画素データまたは処理画素データを(演算部333に)転送する経路を選択すると共に、入力バッファ331の動作を停止させる画像処理装置1が構成される。
また、本第1の実施形態における第1の構成によれば、制御部334は、パイプラインの構成における前段の画像処理モジュール33に、制御部334自身を備えた画像処理モジュール33の動作状態を表す状態通知信号を出力し、パイプラインの構成における後段の画像処理モジュール33から入力された状態通知信号に基づいて、パイプライン処理における画素データまたは処理画素データの流れの状態を判定する画像処理装置1が構成される。
また、本第1の実施形態における第1の構成によれば、制御部334は、パイプラインの構成における後段の複数の画像処理モジュール33から入力された状態通知信号に基づいて、パイプライン処理における画素データまたは処理画素データの流れの状態を判定する画像処理装置1が構成される。
また、本第1の実施形態における第1の構成によれば、状態通知信号は、前段の画像処理モジュール33が処理を行った画素データまたは処理画素データを受け付けることができるか否かを表す信号であり、前段の画像処理モジュール33が処理を行った処理画素データの出力を要求するデータリクエスト信号を含み、制御部334は、後段の画像処理モジュール33から処理画素データの出力を要求するデータリクエスト信号が入力された場合に、パイプライン処理における画素データまたは処理画素データの流れが滞っていない状態(パイプラインストール状態ではない状態)であると判定する画像処理装置1が構成される。
また、本第1の実施形態における第1の構成によれば、制御部334は、入力バッファ331に画素データまたは処理画素データを記憶することができる状態である場合に、処理画素データの出力を要求するデータリクエスト信号を、前段の画像処理モジュール33に出力する画像処理装置1が構成される。
また、本第1の実施形態における第1の構成によれば、画像処理モジュール33は、入力バッファ331から読み出した画素データまたは処理画素データを(演算部333に)転送する経路、および入力バッファ331をスルーして画素データまたは処理画素データを(演算部333に)転送する経路のいずれか一方の経路を、画素データまたは処理画素データを(演算部333に)転送する経路として選択するセレクタ(セレクタ332)、をさらに備え、制御部334は、入力バッファ331に記憶する画素データまたは処理画素データの量を管理し、監視した画素データまたは処理画素データの量を表すデータ量情報(バッファ内データ量情報)を出力するデータ量管理部(データ量管理部3341)と、バッファ内データ量情報とパイプライン処理における処理画素データの流れの状態とに基づいて、入力バッファ331に行わせる動作を判定し、判定した結果に基づいて、入力バッファ331への画素データまたは処理画素データの書き込みおよび入力バッファ331からの画素データまたは処理画素データの読み出しの指示信号(バッファ動作指示信号)と、画素データまたは処理画素データを(演算部333に)転送する経路を選択するための制御信号(バッファスルー信号)とを出力するバッファスルー判定部(バッファスルー判定部3342)と、入力バッファ331への画素データまたは処理画素データの書き込みのバッファ動作指示信号に応じて、入力バッファ331への画素データまたは処理画素データの書き込みを制御するための制御信号であるバッファライト信号を生成するバッファ書き込み管理部(入力バッファ書き込み管理部3343)と、入力バッファ331からの画素データまたは処理画素データの読み出しのバッファ動作指示信号に応じて、入力バッファ331からの画素データまたは処理画素データの読み出しを制御するための制御信号であるバッファリード信号を生成するバッファ読み出し管理部(入力バッファ読み出し管理部3344)と、を備え、データ量管理部3341は、入力された画素データまたは処理画素データの数と、バッファリード信号とに基づいて画素データまたは処理画素データの量を管理し、バッファスルー判定部3342は、バッファ内データ量情報が、画素データまたは処理画素データの量が0よりも大きい値であることを表している場合、入力バッファ331への画素データまたは処理画素データの書き込みおよび入力バッファ331からの画素データまたは処理画素データの読み出しを行うことを指示するバッファ動作指示信号と、画素データまたは処理画素データを入力バッファ331に一旦記憶してから読み出して(演算部333に)転送する経路を選択するバッファスルー信号とを出力し、バッファ内データ量情報が、画素データまたは処理画素データの量が0であることを表している場合、入力バッファ331への画素データまたは処理画素データの書き込みおよび入力バッファ331からの画素データまたは処理画素データの読み出しを停止することを指示するバッファ動作指示信号と、入力バッファ331をスルーして画素データまたは処理画素データを(演算部333に)転送する経路を選択するバッファスルー信号とを出力し、セレクタ332は、バッファスルー信号に応じた経路を、画素データまたは処理画素データを(演算部333に)転送する経路として選択する画像処理装置1が構成される。
また、本第1の実施形態における第1の構成によれば、メモリ(DRAM20)と、入力されたデータ(画素データまたは処理画素データ)に対して予め定めた処理を行う複数の処理モジュール(画像処理モジュール33−1〜画像処理モジュール33−3)が直列に接続されたパイプラインが構成され、それぞれの処理モジュール(画像処理モジュール33)が処理を順次行うことによってパイプライン処理を行う画像処理部(画像処理部30)とがデータバス(DMAバス10)に接続された画像処理装置(画像処理装置1)における画像処理方法であって、画像処理モジュール33のそれぞれが、パイプライン処理における処理画素データの流れの状態と、画素データまたは処理画素データを処理の単位ごとに一時的に記憶するデータバッファ(入力バッファ331)に記憶している画素データまたは処理画素データの状態とに基づいて、画素データまたは処理画素データを入力バッファ331に記憶するか否かを判定し、判定した結果に基づいて画素データまたは処理画素データを(演算部333に)転送する画像処理モジュール33内の経路を選択すると共に、入力バッファ331の動作を制御する制御ステップ、を含む画像処理方法が構成される。
上記に述べたとおり、第1の構成の画像処理モジュール33は、入力バッファ331の記憶容量の空き状態に基づいて、パイプライン構成において前段に接続された処理モジュールに対して入力データを要求し、前段の処理モジュールから入力された入力データ(画素データ)の入力バッファ331への一時記憶(書き込み)を制御する。また、第1の構成の画像処理モジュール33は、入力バッファ331の記憶容量の空き状態と、パイプライン構成において後段に接続された処理モジュールの動作状態とに基づいて、入力バッファ331に一時記憶している画素データの読み出しと、演算部333が画像処理の演算を行う画素データの選択(切り替え)とを制御する。これにより、第1の構成の画像処理モジュール33では、後段の処理モジュールがパイプラインストール状態ではなく、入力バッファ331の記憶容量が全て空いている状態である場合に、前段の処理モジュールから入力された入力データを、入力バッファ331をスルーして演算部333に転送するように制御することができる。そして、第1の構成の画像処理モジュール33では、演算部333が、入力バッファ331をスルーして転送された前段の処理モジュールからの入力データに対して、画像処理の演算を直接行った処理画素データを、後段の処理モジュールに出力することができる。また、第1の構成の画像処理モジュール33では、前段の処理モジュールから入力された入力データを、入力バッファ331をスルーして演算部333に転送することにより、このときの入力バッファ331の動作を停止させて、入力バッファ331の消費電力を削減することができる。このことにより、第1の構成の画像処理モジュール33でパイプラインを構成した画像処理部30では、従来の処理モジュールでパイプラインを構成したときのように必ずデータバッファへのデータの書き込みとデータバッファからのデータの読み出しとを行わなくても、所望の画像処理を行うことができ、パイプライン処理の性能を低下させずに、パイプライン処理における消費電力を低減することができる。
なお、図4および図7を用いて説明した第1の構成の画像処理モジュール33の動作では、前段の処理モジュールから入力された入力データを、入力バッファ331に一旦記憶した後に読み出して演算部333に転送するように制御した後、再び入力バッファ331をスルーして演算部333に転送するように、積極的に制御することは行っていなかった。つまり、図4および図7に示した第1の構成の画像処理モジュール33の動作では、入力バッファ331をスルーして入力データを演算部333に転送するように制御するのは、前段の処理モジュールおよび後段の処理モジュールの動作状態に依存していた。しかし、第1の構成の画像処理モジュール33では、制御部334が、意図的に入力バッファ331をスルーして入力データを演算部333に転送する状態に制御することもできる。
ここで、画像処理部30に備えた画像処理モジュール33が、意図的に入力バッファ331をスルーして入力データを演算部333に転送する状態に制御する動作について説明する。図8は、本発明の第1の実施形態の画像処理装置1に備えた画像処理部30における画像処理モジュール33の別の動作の一例を示したタイミングチャートである。図8には、図4に示した第1の構成の画像処理モジュール33の動作の一例と同様に、画像処理部30が、入力DMAモジュール32、第1の構成の画像処理モジュール33−1〜画像処理モジュール33−3、および出力DMAモジュール34が直列に接続(パイプライン接続)された構成によってパイプライン処理を行う場合において、画像処理モジュール33−1から画像処理モジュール33−2への処理画素データの受け渡しの一例を示している。
図8には、図4に示した画像処理モジュール33の動作の一例と同様に、画像処理モジュール33−1および画像処理モジュール33−2のそれぞれについて、入力データ、バッファライト、バッファリード、および出力データを示し、それぞれの画像処理モジュール33が前段の処理モジュールに出力する状態通知信号として、データリクエスト信号を示している。
なお、図8の説明においても、図4に示した画像処理モジュール33の動作の一例と同様に、1つのユニットラインを1つの処理単位として画像処理を行うものとし、入力データ、バッファライト、バッファリード、および出力データのそれぞれに、何番目のユニットラインであるかを表す数字を示して説明する。また、図8の説明においても、図4に示した画像処理モジュール33の動作の一例と同様に、画像処理部30に備えたそれぞれの処理モジュールは、2つのユニットライン分の画素データを記憶することができる容量のデータバッファを備えているものとして説明する。そして、図8の説明においても、図4に示した画像処理モジュール33の動作の一例と同様に、それぞれの画像処理モジュール33に備えたそれぞれの構成要素を区別するため、それぞれの構成要素に付与した符号に続いて、画像処理モジュール33に付与した「−」と、それに続く数字の部分を付与して表す。
なお、図8においても、図4に示した画像処理モジュール33の動作の一例と同様に、データリクエスト信号が“High”レベルの期間が、それぞれの画像処理モジュール33が画素データを受け付けることができる状態であるリクエスト期間を表し、データリクエスト信号が“Low”レベルの期間が、それぞれの画像処理モジュール33が画素データを受け付けることができない状態であるリクエストネゲート期間を表している。
画像処理部30がパイプライン処理を開始すると、画像処理モジュール33−1、画像処理モジュール33−2、画像処理モジュール33−3、および出力DMAモジュール34のそれぞれは、入力データの出力を要求するデータリクエスト信号を、前段の処理モジュールに出力する。なお、図8に示した画像処理モジュール33の動作のタイミングチャートにおいて、画像処理部30がパイプライン処理を開始した最初の段階の動作は、図4に示した画像処理モジュール33の動作の一例と同様である。従って、それぞれの処理モジュールの動作に関する詳細な説明は省略する。また、図8に示した画像処理モジュール33の動作のタイミングチャートにおいて、画像処理モジュール33−2のリクエストネゲート期間が終了するまでのそれぞれの処理モジュールの動作も、図4に示した画像処理モジュール33の動作の一例と同様であるため、詳細な説明は省略する。
続いて、画像処理モジュール33−3が処理画素データを受け付けることができる状態になり、画像処理モジュール33−2に出力しているデータリクエスト信号を“High”レベルにすることによって、処理画素データを受け付けることができる状態である(入力データの出力を要求する)ことを表した場合の動作について説明する。
このとき、画像処理モジュール33−2は、入力バッファ331−2に3つ目と4つ目のユニットラインに対応したそれぞれの処理画素データを一時記憶している状態(空いている記憶容量がない状態)である。このため、制御部334−2は、まず、入力バッファ331−2に記憶している3つ目のユニットラインに対応した処理画素データを入力バッファ331−2から読み出して演算部333−2に出力するように、入力バッファ331−2およびセレクタ332−2を制御する。これにより、入力バッファ331−2は、記憶している3つ目のユニットラインに対応した処理画素データをセレクタ332−2に出力し、セレクタ332−2は、入力バッファ331−2から入力された3つ目のユニットラインに対応した処理画素データを演算部333−2に出力する。そして、演算部333−2は、セレクタ332−2から出力された3つ目のユニットラインに対応した処理画素データに対して画像処理の演算を行い、演算部333−2におけるレイテンシだけ遅れた処理画素データを、後段の画像処理モジュール33−3に出力する。
これにより、入力バッファ331−2は、図4に示した画像処理モジュール33の動作の一例と同様に、3つ目のユニットラインに対応した処理画素データを出力することによって、1つのユニットライン分の記憶容量が空いている(残っている)状態になり、画像処理モジュール33−2は、画像処理モジュール33−1からの処理画素データを受け付けることができる状態になる。このとき、図4に示した画像処理モジュール33の動作の一例では、制御部334−2が、画像処理モジュール33−2が処理画素データを受け付けることができる状態になったことを表すために、画像処理モジュール33−1に出力しているデータリクエスト信号を“High”レベルにしていた。しかし、図8に示した画像処理モジュール33の動作の一例では、制御部334は、データリクエスト信号を“High”レベルにせず、“Low”レベルの状態を維持する。つまり、画像処理モジュール33−2は、画像処理モジュール33−1からの処理画素データを受け付けることができない状態を意図的に維持するために、データリクエスト信号の“High”レベルへの変更を保留する。これは、画像処理モジュール33−2が、入力バッファ331−2に一時記憶している4つ目のユニットラインに対応した処理画素データを出力することによって、入力バッファ331−2に一時記憶しているユニットラインのそれぞれの画素データを全て読み出し、入力バッファ331−2の記憶容量が全て空いている状態にするためである。
そして、制御部334−2は、入力バッファ331−2に記憶している4つ目のユニットラインに対応した処理画素データを入力バッファ331−2から読み出して演算部333−2に出力するように、入力バッファ331−2およびセレクタ332−2を制御する。これにより、演算部333−2に、入力バッファ331−2に記憶している4つ目のユニットラインに対応した処理画素データが、セレクタ332−2を介して入力される。そして、演算部333−2は、セレクタ332−2を介して入力された4つ目のユニットラインに対応した処理画素データに対して画像処理の演算を行って生成した処理画素データを、画像処理モジュール33−3に出力する。
入力バッファ331−2は、4つ目のユニットラインに対応した処理画素データを出力することにより、全ての記憶容量が空いている状態になる。つまり、画像処理モジュール33−2は、画像処理モジュール33−1からの処理画素データを受け付け、受け付けた処理画素データを入力バッファ331−2に一時記憶せずに演算部333−2に直接転送することができる状態になる。ここで、制御部334−2は、画像処理モジュール33−2が処理画素データを受け付けることができる状態になったことを表すために、画像処理モジュール33−1に出力しているデータリクエスト信号を“High”レベルにする。
また、制御部334−2は、画像処理モジュール33−1から以降に入力されたユニットラインのそれぞれの処理画素データを、そのまま演算部333−2に出力するようにセレクタ332−2を制御する。さらに、制御部334−2は、入力バッファ331−2の動作を停止するように制御して、入力バッファ331−2の消費電力を削減する。
画像処理モジュール33−1では、後段の画像処理モジュール33−2から入力されたデータリクエスト信号が“High”レベルになり、画像処理モジュール33−2が処理画素データを受け付けることができる状態になったことが通知されると、制御部334−1は、画像処理モジュール33−2に備えた制御部334−2と同様に、5つ目と6つ目のユニットラインに対応した処理画素データを画像処理モジュール33−2に出力する。より具体的には、制御部334−1が、入力バッファ331−1に記憶された5つ目と6つ目のユニットラインのそれぞれの画素データを順次読み出して演算部333−1に出力するように、入力バッファ331−2およびセレクタ332−2を制御する。これにより、演算部333−1は、セレクタ332−1を介して順次入力された5つ目と6つ目のユニットラインのそれぞれの画素データに対して画像処理の演算を行い、演算部333−1におけるレイテンシだけ遅れた処理画素データを、後段の画像処理モジュール33−2に出力する。このとき、制御部334−1も、画像処理モジュール33−2に備えた制御部334−2と同様に、5つ目のユニットラインのそれぞれの画素データの読み出した後にはデータリクエスト信号を“High”レベルにせず、6つ目のユニットラインのそれぞれの画素データの読み出しが終了した後、つまり、入力バッファ331−1の全ての記憶容量が空いている状態になったときに、データリクエスト信号を“High”レベルにする。つまり、画像処理モジュール33−1も、入力DMAモジュール32からの画素データを受け付けることができる状態になったとき、すぐに画素データを受け付けることができる状態になったことを通知するのではなく、受け付け画素データを入力バッファ331−1に一時記憶せずに演算部333−1に直接転送することができる状態になったときに、画素データを受け付けることができる状態になったことを通知する。
また、制御部334−1は、画像処理モジュール33−2に備えた制御部334−2と同様に、入力DMAモジュール32から以降に入力されたユニットラインのそれぞれの画素データを、そのまま演算部333−1に出力するようにセレクタ332−1を制御する。さらに、制御部334−1は、画像処理モジュール33−2に備えた制御部334−2と同様に、入力バッファ331−1の動作を停止するように制御して、入力バッファ331−1の消費電力を削減する。
入力DMAモジュール32は、後段の画像処理モジュール33−1から入力されたデータリクエスト信号によって、画像処理モジュール33−2が処理画素データを受け付けることができる状態になったことが通知されると、DRAM20に記憶されている7つ目のユニットラインから、画素データの読み出しを再開し、読み出した画素データを画像処理モジュール33−1に出力する。なお、入力DMAモジュール32が、DRAM20に記憶されている画素データの読み出しを保留する際に、7つ目と8つ目のユニットラインのそれぞれの画素データをデータバッファに記憶している場合には、データバッファに記憶している7つ目および8つ目のユニットラインのそれぞれの画素データを画像処理モジュール33−1に出力した後に、9つ目のユニットラインから、画素データの読み出しを再開してもよい。
このようにして、画像処理部30では、パイプライン接続された後段の処理モジュールから入力されたデータリクエスト信号が、再び画素データを受け付けることができる状態に変わった場合、それぞれの処理モジュールは、後段の処理モジュールへの出力データの出力を再開する。このとき、それぞれの処理モジュールは、処理モジュール自身に備えた入力バッファ331に記憶している画素データから順次、後段の処理モジュールに出力する。そして、それぞれの処理モジュールは、処理モジュール自身に備えた入力バッファ331の記憶容量が全て空いている状態になった後に、処理モジュール自身が画素データを受け付けることができる状態になったことを通知する。そして、それぞれの処理モジュールは、入力された画素データを、処理モジュール自身に備えた入力バッファ331に一時記憶せずに後段の処理モジュールに順次出力する。また、それぞれの処理モジュールは、処理モジュール自身に備えた入力バッファ331の動作を停止するように制御して、入力バッファ331の消費電力を削減する。
以降、上述したような動作を繰り返すことによって、画像処理部30では、パイプライン接続されたそれぞれの処理モジュールによるパイプライン処理を、それぞれのブロック画像データに含まれる画素データに対してユニットラインごとに順次を行うことによって、それぞれのブロック画像データに対する一連の画像処理を行う。
なお、図8に示した第1の構成の画像処理モジュール33の動作のタイミングチャートの一例では、それぞれの処理モジュールが、処理モジュール自身に備えた入力バッファ331の記憶容量が全て空いている状態になった後に画素データを受け付けることができる状態になったことを通知する場合について説明した。そして、それぞれの処理モジュールに入力された画素データを入力バッファ331に一時記憶せずに後段の処理モジュールに順次出力し、入力バッファ331の動作を停止して消費電力を削減する合について説明した。しかし、それぞれの処理モジュール自身に備えた入力バッファ331が、多くのユニットライン分の画素データを記憶することができる記憶容量をもっている場合、それぞれの処理モジュール自身に備えた入力バッファ331の記憶容量が全て空いている状態なってから画素データを受け付けることができる状態になったことを通知すると、パイプライン処理が完了するまでに多くの時間を要してしまうことも考えられる。従って、それぞれの処理モジュールに備えた制御部334は、入力バッファ331に一時記憶しているユニットラインの数に基づいて、入力された画素データを入力バッファ331に一旦記憶した後に読み出して演算部333に転送するように制御するか、入力された画素データを入力バッファ331に一時記憶せずにそのまま演算部333に転送するように制御するかを判定するようにしてもよい。
より具体的には、後段の処理モジュールが画素データを受け付けることができる状態になったことを通知してきたときに、入力バッファ331が一時記憶することができるユニットライン数に基づいて予め定めたユニットライン数の閾値と、バッファ内データ量情報が表すユニットライン数と比較し、この比較結果によって入力バッファ331の動作を切り替えてもよい。例えば、入力バッファ331が10個のユニットライン分の画素データを記憶することができる記憶容量をもっており、予め定めたユニットライン数の閾値が「5」である場合を考える。この場合、後段の処理モジュールが画素データを受け付けることができる状態になったことを通知してきたときのバッファ内データ量情報が表すユニットライン数が「5」以下である場合には、以降に入力された画素データを入力バッファ331に一時記憶せずにそのまま演算部333に転送するように制御する、つまり、図8に示した画像処理モジュール33の動作の一例と同様に制御する。一方、後段の処理モジュールが画素データを受け付けることができる状態になったことを通知してきたときのバッファ内データ量情報が表すユニットライン数が「5」よりも大きい場合には、以降に入力された画素データを入力バッファ331に一旦記憶した後に読み出して演算部333に転送するように制御する、つまり、図4に示した画像処理モジュール33の動作の一例と同様に制御する。これにより、画像処理部30では、それぞれの処理モジュールに備えた入力バッファ331の消費電力の削減を優先する制御と、パイプライン処理に要する処理時間の短縮を優先する制御とを切り替えることができる。
本第1の実施形態における第1の構成によれば、制御部(制御部334)は、データバッファ(入力バッファ331)が有する全ての記憶容量にデータが記憶されていない状態になるまで、画素データまたは処理画素データの出力を要求するデータリクエスト信号の前段の処理モジュール(画像処理モジュール33)への出力を保留し、入力バッファ331が有する全ての記憶容量に画素データまたは処理画素データが記憶されていない状態になった後に、前段の画像処理モジュール33にデータリクエスト信号を出力し、入力バッファ331をスルーして画素データまたは処理画素データを転送する経路を選択すると共に、入力バッファ331の動作を停止させる画像処理装置(画像処理装置1)が構成される。
上記に述べたとおり、第1の構成の画像処理モジュール33は、入力バッファ331の記憶容量の空き状態に基づいて、パイプライン構成において前段に接続された処理モジュールに対して入力データを要求するタイミングを制御することによって、意図的に入力バッファ331をスルーして入力データを演算部333に転送する状態に制御する。これにより、第1の構成の画像処理モジュール33では、このときの入力バッファ331の動作を停止させて、入力バッファ331の消費電力を削減することができる。このことにより、第1の構成の画像処理モジュール33でパイプラインを構成した画像処理部30では、所望の画像処理を行うときのパイプライン処理の性能を低下させずに、パイプライン処理における消費電力を低減することができる。
なお、第1の構成の画像処理モジュール33では、前段の処理モジュールから入力された入力データの入力バッファ331への一時記憶(書き込み)を制御する構成を示した。つまり、第1の構成の画像処理モジュール33では、画像処理の演算を行う際の入力側にデータバッファ(入力バッファ331)を備えている処理モジュールの構成を示した。しかし、パイプライン処理を行うそれぞれの処理モジュールの構成は、上述したような入力側にデータバッファを備えた構成に限定されるものではなく、画像処理の演算を行う際の出力側にデータバッファを備える構成であってもよい。
<第2の構成>
次に、画像処理部30に備えたそれぞれの処理モジュールの第2の構成について説明する。図9は、本発明の第1の実施形態の画像処理装置1に備えた画像処理部30における画像処理モジュールの概略構成を示したブロック図である。図9には、出力側にデータバッファを備えた第2の構成の画像処理モジュール(以下、「画像処理モジュール43」という)における基本的な構成を示している。図9に示した第2の構成の画像処理モジュール43は、演算部433と、出力バッファ431と、セレクタ432と、制御部434と、を備えている。画像処理モジュール43も、第1の構成の画像処理モジュール33と同様に、画像処理部30においてパイプライン処理を行う構成要素である。
演算部433は、第1の構成の画像処理モジュール33に備えた演算部333と同様に、入力された画素データに対して予め定めた種々のデジタル的な画像処理の演算を行う。演算部433は、画像処理の演算を行って生成した処理画素データを、出力データとして出力バッファ431およびセレクタ432に出力する
出力バッファ431は、演算部433から入力された処理画素データを、一時的に記憶するデータバッファである。出力バッファ431は、第1の構成の画像処理モジュール33に備えた入力バッファ331と同様に、例えば、SRAMなどのメモリで構成される。出力バッファ431は、演算部433から入力された予め定めた数のユニットライン分の処理画素データを、出力データとして記憶することができる記憶容量をもっている。出力バッファ431は、制御部434から入力された制御信号に応じて、入力された処理画素データを一時記憶する。
なお、出力バッファ431も、第1の構成の画像処理モジュール33に備えた入力バッファ331と同様に、演算部433から入力された予め定めた数のユニットライン分の処理画素データ(出力データ)を記憶する記憶容量の組を2つ備え、一方の記憶容量の組への処理画素データの書き込みと、他方の記憶容量の組からの処理画素データの読み出しとを交互に切り替える、いわゆる、ダブルバッファで構成されていてもよい。
セレクタ432は、出力データとして画像処理モジュール43の外部に出力する処理画素データを選択する選択部である。セレクタ432は、第1の構成の画像処理モジュール33に備えたセレクタ332と同様の構成である。セレクタ432は、制御部434から入力された制御信号に応じて、出力バッファ431に一時記憶された出力データ(処理画素データ)、または演算部433から現在出力されている出力データ(処理画素データ)のいずれか一方の出力データ(処理画素データ)を、画像処理モジュール43の外部に出力する。つまり、セレクタ432は、演算部433から出力されて出力バッファ431に一時記憶された処理画素データ、または演算部433から現在出力されているそのままの処理画素データのいずれか一方の処理画素データを、接続切り替え部31を介して他の画像処理モジュール43または出力DMAモジュール34に出力する。
制御部434は、第1の構成の画像処理モジュール33に備えた制御部334と同様に、画像処理モジュール43の動作状態の通知と、画像処理モジュール43に備えたそれぞれの構成要素の制御とを行う。制御部434は、画像処理モジュール43の動作状態を表す状態通知信号を、前段の処理モジュールに出力する。また、制御部434は、出力バッファ431に空いている記憶容量があるか否かによって、出力バッファ431の動作を制御する。
より具体的には、出力バッファ431に空いている記憶容量がある場合、出力バッファ431は、演算部433から出力された処理画素データを一時記憶することができる状態である。この場合、制御部434は、前段の処理モジュールからの入力データを受け付けることができる状態であることを表す状態通知信号として、画素データの出力を要求する信号(データリクエスト信号)を、前段の処理モジュールに出力する。そして、制御部434は、出力した画素データの出力を要求する状態通知信号に応じて前段の処理モジュールから入力された入力データに対して演算部433が画像処理の演算を行って生成した処理画素データを一時記憶する(書き込む)ように、出力バッファ431を制御する。
また、出力バッファ431に空いている記憶容量がない場合、出力バッファ431は、演算部433から出力された処理画素データを一時記憶することができない状態である。この場合、制御部434は、前段の処理モジュールからの入力データを受け付けることができない状態であることを表す状態通知信号として、画素データの出力を要求しないことを表す信号(画素データの出力を要求しないことを表す論理レベルのデータリクエスト信号)を、前段の処理モジュールに出力する。なお、このときの状態通知信号は、第1の構成の画像処理モジュール33に備えた制御部334と同様に、パイプラインストール信号であってもよい。
また、制御部434は、出力バッファ431に一時記憶されている処理画素データの読み出しの動作と、セレクタ432が画像処理モジュール43の外部に出力する処理画素データ(出力データ)の選択(切り替え)とを制御する。制御部434における出力バッファ431からの処理画素データの読み出し動作の制御やセレクタ432の切り替えの制御は、第1の構成の画像処理モジュール33に備えた制御部334と同様に、出力バッファ431に空いている記憶容量があるか否かの判定結果、および後段の処理モジュールから入力された状態通知信号に基づいて行う。なお、後段の処理モジュールから入力される状態通知信号は、セレクタ432によって選択して出力した処理画素データの出力先である後段の処理モジュールに備えた制御部434が出力する状態通知信号であり、上述したように、後段の処理モジュールが処理画素データを受け付けることができる状態であるか否かを表す信号、つまり、処理画素データの出力を要求するか否かを表す信号などが含まれている。
そして、制御部434は、後段の処理モジュールから入力された状態通知信号が、処理画素データを受け付けることができる状態であることを表している場合、出力バッファ431の記憶容量が空いているか否かによってセレクタ432を制御し、出力バッファ431に一時記憶された処理画素データ、または演算部433から現在出力されている処理画素データのいずれか一方の処理画素データを、出力データとして画像処理モジュール43の外部に出力させる。つまり、制御部434も、第1の構成の画像処理モジュール33に備えた制御部334と同様に、処理画素データの流れが滞らずにパイプライン処理がスムーズに行われているか否かによって、出力バッファ431の動作の制御やセレクタ432の切り替えの制御を行う。
より具体的には、出力バッファ431の記憶容量が全て空いていない場合、出力バッファ431には、少なくとも1つのユニットライン分の処理画素データが一時記憶されている状態である。この場合、制御部434は、一時記憶された処理画素データを読み出すように出力バッファ431を制御すると共に、出力バッファ431から出力された処理画素データを外部に出力するようにセレクタ432を制御する。これにより、セレクタ432は、出力バッファ431に一時記憶された後に読み出された処理画素データを、後段の画像処理モジュール43に出力する。このとき、制御部434は、出力した画素データの出力を要求する状態通知信号に応じた入力データが前段の処理モジュールから入力された場合には、入力された入力データに対して演算部433が画像処理の演算を行って生成した処理画素データを空いている記憶容量に一時記憶する(書き込む)ように、出力バッファ431を制御する。
また、出力バッファ431の記憶容量が全て空いている場合、出力バッファ431には、1つのユニットライン分の処理画素データも一時記憶されていない状態である。この場合、制御部434は、動作を停止するように出力バッファ431を制御する。これにより、画像処理モジュール43では、出力バッファ431の消費電力を削減することができる。そして、制御部434は、演算部433から現在出力されている処理画素データをそのまま、つまり、現在入力されている画素データに対して演算部433が画像処理の演算を行って生成した処理画素データを出力バッファ431に一時記憶せずに直接、外部に出力するようにセレクタ432を制御する。これにより、演算部433は、画像処理モジュール43に現在入力されている入力データ(画素データ)に対して画像処理の演算を行って生成した処理画素データを、後段の画像処理モジュール43に出力する。
一方、制御部434は、後段の処理モジュールから入力された状態通知信号が、処理画素データを受け付けることができない状態であることを表しており、かつ、出力バッファ431の記憶容量が空いている場合、制御部434は、画像処理モジュール43に入力された入力データに対して演算部433が画像処理の演算を行って生成した処理画素データを空いている記憶容量に一時記憶する(書き込む)ように、出力バッファ431を制御する。
なお、後段の処理モジュールから入力された状態通知信号が、処理画素データを受け付けることができない状態であることを表しており、かつ、出力バッファ431の記憶容量が空いていない場合は、制御部434は、入力データを受け付けることができない状態であることを表す状態通知信号を前段の処理モジュールに出力しているため、前段の処理モジュールからは入力データが入力されない。このため、制御部434は、出力バッファ431の動作を制御しない。
このような構成によって画像処理部30に備えたそれぞれの第2の構成の処理モジュールは、出力バッファ431の記憶容量の空き状態に基づいて、前段の処理モジュールからの入力データの受け付けと、外部に出力する処理画素データの選択(切り替え)とを行う。
次に、画像処理部30に備えたそれぞれの第2の構成の処理モジュールの動作について説明する。図10は、本発明の第1の実施形態の画像処理装置1に備えた画像処理部30における画像処理モジュール43の動作の一例を示したタイミングチャートである。図10には、図4に示した第1の構成の画像処理モジュール33の動作の一例と同様に、画像処理部30が、入力DMAモジュール32、第2の構成の画像処理モジュール43−1〜画像処理モジュール43−3、および出力DMAモジュール34が直列に接続(パイプライン接続)された構成によってパイプライン処理を行う場合において、画像処理モジュール43−1から画像処理モジュール43−2への処理画素データの受け渡しの一例を示している。
図10には、画像処理モジュール43−1および画像処理モジュール43−2のそれぞれについて、入力される入力データ、演算部433が画像処理の演算を行って出力する処理画素データ、出力バッファ431への処理画素データの書き込みを表すバッファライト、出力バッファ431からの処理画素データの読み出しを表すバッファリード、および出力する出力データを示している。また、図10には、画像処理モジュール43−1および画像処理モジュール43−2のそれぞれが前段の処理モジュールに出力する状態通知信号として、入力データの出力を要求するデータリクエスト信号を示している。なお、図10には、画像処理モジュール43−2の後段に接続された画像処理モジュール43−3が状態通知信号として出力するデータリクエスト信号も示している。
なお、図10の説明においても、図4に示した第1の構成の画像処理モジュール33の動作の一例と同様に、1つのユニットラインを1つの処理単位として画像処理を行うものとし、入力データ、処理画素データ、バッファライト、バッファリード、および出力データのそれぞれに、何番目のユニットラインであるかを表す数字を示して説明する。また、図10の説明においても、図4に示した第1の構成の画像処理モジュール33の動作の一例と同様に、画像処理部30に備えたそれぞれの処理モジュールは、2つのユニットライン分の画素データを記憶することができる容量のデータバッファを備えているものとして説明する。そして、図10の説明においても、図4に示した第1の構成の画像処理モジュール33の動作の一例と同様に、それぞれの画像処理モジュール43に備えたそれぞれの構成要素を区別するため、それぞれの構成要素に付与した符号に続いて、画像処理モジュール43に付与した「−」と、それに続く数字の部分を付与して表す。例えば、画像処理モジュール43−1に備えた制御部434を「制御部434−1」とし、画像処理モジュール43−2に備えた制御部434を「制御部434−2」として表す。
画像処理部30がパイプライン処理を開始すると、画像処理モジュール43−1、画像処理モジュール43−2、画像処理モジュール43−3、および出力DMAモジュール34のそれぞれは、入力データの出力を要求するデータリクエスト信号を、前段の処理モジュールに出力する。これは、図4に示した第1の構成の画像処理モジュール33の動作の一例と同様に、画像処理部30がパイプライン処理を開始した最初の段階では、それぞれの画像処理モジュール43に備えた出力バッファ431の記憶容量は全て空いているため、処理画素データを一時記憶することができる状態であり、入力データを受け付けることができる状態であるからである。すなわち、画像処理モジュール43−1に備えた演算部433−1、および画像処理モジュール43−2に備えた演算部433−2は、入力された画素データに対する画像処理をすぐに行うことができる状態であるからである。また、画像処理部30がパイプライン処理を開始した最初の段階では、出力DMAモジュール34も、図4に示した第1の構成の画像処理モジュール33の動作の一例と同様に、入力された入力データ(処理画素データ)を、すぐにDMAバス10を介してDRAM20に出力することができる状態である。
なお、図10においても、図4に示した第1の構成の画像処理モジュール33の動作の一例と同様に、データリクエスト信号が“High”レベルの期間が、それぞれの処理モジュールが画素データを受け付けることができる状態であるリクエスト期間を表し、データリクエスト信号が“Low”レベルの期間が、それぞれの処理モジュールが画素データを受け付けることができない状態であるリクエストネゲート期間を表している。
入力DMAモジュール32は、後段の画像処理モジュール43−1からデータリクエスト信号が入力されると、まず、DRAM20に記憶されている1つ目のユニットラインのそれぞれの画素データを、DMAバス10を介してユニットラインごとに順次読み出す。そして、入力DMAモジュール32は、読み出した画素データを画像処理モジュール43−1に出力する。このとき、入力DMAモジュール32の後段に接続された画像処理モジュール43−1は、“High”レベルのデータリクエスト信号を出力することによって、画素データを受け付けることができる状態であることを示している。このため、入力DMAモジュール32は、読み出した画素データをデータバッファに一時記憶せずに、そのまま画像処理モジュール43−1に出力する。このとき、入力DMAモジュール32では、データバッファの動作を停止して、データバッファの消費電力を削減する。その後、入力DMAモジュール32は、DRAM20に記憶されている2つ目のユニットラインのそれぞれの画素データを読み出して、画像処理モジュール43−1への出力を開始する。
また、画像処理モジュール43−1は、後段の画像処理モジュール43−2からデータリクエスト信号が入力されると、入力DMAモジュール32から入力された1つ目のユニットラインのそれぞれの画素データに対して画像処理を行う。このとき、画像処理モジュール43−1は、上述したように、出力バッファ431−1の記憶容量が全て空いている状態であり、演算部433−1が入力された画素データに対する画像処理をすぐに行うことができる状態である。また、このとき、画像処理モジュール43−1の後段に接続された画像処理モジュール43−2は、“High”レベルのデータリクエスト信号を出力することによって、処理画素データを受け付けることができる状態であることを示している。このため、制御部434−1は、前段の入力DMAモジュール32から現在入力されている1つ目のユニットラインのそれぞれの画素データに対して演算部433−1が画像処理の演算を行って生成した処理画素データを、そのまま出力データとして外部に出力するようにセレクタ432−1を制御する。また、制御部434−1は、出力バッファ431−1の動作を停止するように制御して、出力バッファ431−1の消費電力を削減する。これにより、セレクタ432−1は、演算部433−1から出力された処理画素データをそのまま、出力データとして後段の画像処理モジュール43−2に出力する。なお、画像処理モジュール43−1から出力される出力データ(処理画素データ)は、演算部433−1が画像処理の演算を行うことによって発生する遅延時間(レイテンシ)だけ遅れて出力される。その後、画像処理モジュール43−1は、入力DMAモジュール32から入力された2つ目のユニットラインのそれぞれの画素データに対する画像処理を開始する。
また、画像処理モジュール43−2は、後段の画像処理モジュール43−3からデータリクエスト信号が入力されると、画像処理モジュール43−1から入力された1つ目のユニットラインに対応した処理画素データに対して画像処理を行う。このとき、画像処理モジュール43−2も、上述したように、出力バッファ431−2の記憶容量が全て空いている状態であり、演算部433−2が入力された処理画素データに対する画像処理をすぐに行うことができる状態である。また、このとき、画像処理モジュール43−2の後段に接続された画像処理モジュール43−3も、“High”レベルのデータリクエスト信号を出力することによって、処理画素データを受け付けることができる状態であることを示している。このため、制御部434−2も、前段の画像処理モジュール43−1から現在入力されている1つ目のユニットラインに対応する処理画素データに対して演算部433−2が画像処理の演算を行って生成した処理画素データを、そのまま出力データとして外部に出力するようにセレクタ432−2を制御する。また、制御部434−2は、出力バッファ431−2の動作を停止するように制御して、出力バッファ431−2の消費電力を削減する。これにより、セレクタ432−2は、演算部433−2におけるレイテンシだけ遅れて演算部433−2から出力された処理画素データをそのまま、出力データとして後段の画像処理モジュール43−3に出力する。その後、画像処理モジュール43−2も、画像処理モジュール43−1から入力された2つ目のユニットラインに対応する処理画素データに対する画像処理を開始する。
このようにして、画像処理部30では、それぞれの第2の構成の処理モジュールが、パイプライン接続された後段の処理モジュールに、入力された入力データを順次受け渡す。このとき、それぞれの第2の構成の処理モジュールは、処理モジュール自身に備えた出力バッファ431の記憶容量が全て空いている状態で、かつ、後段の処理モジュールが入力データを受け付けることができる状態であるため、前段の処理モジュールから入力された入力データをそのまま、または入力データに対する画像処理の演算をすぐに行って、出力バッファ431に一時記憶せずに後段の処理モジュールに出力する。図10には、画像処理モジュール43−1と画像処理モジュール43−2とのそれぞれのバッファライトおよびバッファリードに、入力データを出力バッファ431に一時記憶しない期間、すなわち、出力バッファ431を介さずに処理画素データを外部に出力する期間を、バッファスルーの期間として示している。
そして、画像処理部30では、それぞれの第2の構成の処理モジュールが、処理モジュール自身に備えたデータバッファ(出力バッファ431)の動作を停止するように制御する。つまり、画像処理部30では、それぞれの処理モジュールにおけるバッファスルーの期間のデータバッファ(出力バッファ431)の動作を停止する。これにより、画像処理部30では、それぞれの処理モジュールに備えたデータバッファ(出力バッファ431)の消費電力を削減することができる。
ここで、画像処理モジュール43−2が2つ目のユニットラインに対応した処理画素データを出力しているときに、後段の画像処理モジュール43−3が何らかの要因によって処理画素データを受け付けることができない状態になった場合の動作について説明する。この場合、画像処理モジュール43−3は、画像処理モジュール43−2に出力しているデータリクエスト信号を“Low”レベルにすることによって、処理画素データを受け付けることができない状態である、つまり、入力データの出力を要求しないことを表す。なお、それぞれの第2の構成の処理モジュールが、入力データの出力を要求しないことを前段の処理モジュールに伝える方法は、上述したように、データリクエスト信号の論理レベルによる方法に限定されるものではなく、パイプラインストール信号を出力することによって、画素データを受け付けることができない状態であることを通知する方法であってもよい。
このとき、画像処理モジュール43−2は、出力バッファ431−2の記憶容量が全て空いている状態(2つのユニットライン分の記憶容量が空いている状態)であるため、制御部434−2は、前段の画像処理モジュール43−1から現在入力されている3つ目のユニットラインに対応した処理画素データに対して演算部433−2が画像処理の演算を行った処理画素データを一時記憶するように、出力バッファ431−2を制御する。これにより、出力バッファ431−2は、3つ目のユニットラインに対応した処理画素データに対してさらに画像処理の演算を行った処理画素データを記憶し、1つのユニットライン分の記憶容量が空いている(残っている)状態になる。
さらに、画像処理モジュール43−2では、制御部434−2が、前段の画像処理モジュール43−1から現在入力されている4つ目のユニットラインに対応した処理画素データに対して演算部433−2が画像処理の演算を行った処理画素データを一時記憶するように、出力バッファ431−2を制御する。これにより、出力バッファ431−2は、4つ目のユニットラインに対応した処理画素データに対してさらに画像処理の演算を行った処理画素データも記憶し、空いている記憶容量がない状態になる。つまり、画像処理モジュール43−2は、画像処理モジュール43−1からの処理画素データを受け付けることができない状態になる。このため、制御部434−2は、画像処理モジュール43−2が処理画素データを受け付けることができない状態になったことを表すために、画像処理モジュール43−1に出力しているデータリクエスト信号を“Low”レベルにする。
これにより、画像処理モジュール43−1では、制御部434−1が、画像処理モジュール43−2に備えた制御部434−2と同様に、入力DMAモジュール32から入力された5つ目と6つ目のユニットラインのそれぞれの画素データに対して演算部433−1が画像処理の演算を行った処理画素データを一時記憶するように、出力バッファ431−1を制御する。これにより、出力バッファ431−1は、5つ目と6つ目のユニットラインのそれぞれの画素データに対して画像処理の演算を行った処理画素データを記憶し、画像処理モジュール43−1は、入力DMAモジュール32からの画素データを受け付けることができない状態になる。このため、制御部434−1も、制御部434−2と同様に、画像処理モジュール43−1が画素データを受け付けることができない状態になったことを表すために、入力DMAモジュール32に出力しているデータリクエスト信号を“Low”レベルにする。
これにより、入力DMAモジュール32は、DRAM20に記憶されている7つ目のユニットラインのそれぞれの画素データの読み出しを保留する。なお、入力DMAモジュール32にも、2つのユニットライン分の画素データを記憶することができる容量のデータバッファを備えているため、7つ目と8つ目のユニットラインのそれぞれの画素データを読み出して、データバッファに一旦記憶してから、9つ目のユニットラインのそれぞれの画素データの読み出しを保留してもよい。
このようにして、画像処理部30では、パイプライン接続された後段の処理モジュールから入力されたデータリクエスト信号が、画素データを受け付けることができない状態であることを表している場合、それぞれの処理モジュールは、後段の処理モジュールへの出力データの出力を停止する。そして、それぞれの処理モジュールは、処理モジュール自身に備えた出力バッファ431の記憶容量が空いている分の処理画素データを一時記憶した後に、処理モジュール自身が画素データを受け付けることができない状態になったことを通知する。
なお、画像処理部30でも、それぞれの第2の構成の処理モジュールが、処理単位ごとに処理を行っている。従って、それぞれの処理モジュールが1つの処理単位の画素データを後段の処理モジュールに出力している途中で画素データを受け付けることができない状態であることが通知された場合でも、現在出力している処理単位の全ての画素データを出力した後に、後段の処理モジュールへの出力データの出力を停止する。
続いて、画像処理モジュール43−3が処理画素データを受け付けることができる状態になった場合の動作について説明する。この場合、画像処理モジュール43−3は、画像処理モジュール43−2に出力しているデータリクエスト信号を“High”レベルにすることによって、処理画素データを受け付けることができる状態である、つまり、入力データの出力を要求することを表す。なお、それぞれの第2の構成の処理モジュールが、再び入力データの出力を要求することを前段の処理モジュールに伝える方法は、上述したように、データリクエスト信号の論理レベルによる方法に限定されるものではなく、パイプラインストール信号の出力を停止することによって、画素データを受け付けることができる状態であることを通知する方法であってもよい。
このとき、画像処理モジュール43−2は、出力バッファ431−2に空いている記憶容量がない状態(3つ目と4つ目のユニットラインに対応したそれぞれの処理画素データに対して演算部433−2が画像処理の演算を行って生成した処理画素データを一時記憶している状態)である。このため、制御部434−2は、まず、出力バッファ431−2に記憶している3つ目のユニットラインに対応した処理画素データに対してさらに画像処理の演算を行った処理画素データを出力バッファ431−2から読み出して外部に出力するように、出力バッファ431−2およびセレクタ432−2を制御する。これにより、出力バッファ431−2は、記憶している3つ目のユニットラインに対応した処理画素データに対してさらに画像処理の演算を行った処理画素データをセレクタ432−2に出力し、セレクタ432−2は、出力バッファ431−2から入力された3つ目のユニットラインに対応した処理画素データに対してさらに画像処理の演算を行った処理画素データを出力データとして外部に出力する。なお、画像処理モジュール43−2が出力バッファ431−2に記憶している処理画素データは、すでに演算部433−2によって画像処理の演算が行われた処理画素データであるため、演算部433−2におけるレイテンシだけ遅れることなく、後段の画像処理モジュール43−3に出力することができる。
また、出力バッファ431−2は、3つ目のユニットラインに対応した処理画素データに対してさらに画像処理の演算を行った処理画素データを出力することにより、1つのユニットライン分の記憶容量が空いている(残っている)状態になる。つまり、画像処理モジュール43−2は、画像処理モジュール43−1からの処理画素データを受け付けることができる状態になる。このため、制御部434−2は、画像処理モジュール43−2が処理画素データを受け付けることができる状態になったことを表すために、画像処理モジュール43−1に出力しているデータリクエスト信号を“High”レベルにする。
さらに、画像処理モジュール43−2では、出力バッファ431−2に空いている記憶容量があるが、4つ目のユニットラインに対応した処理画素データを一時記憶している状態である。このため、制御部434−2は、出力バッファ431−2に記憶している4つ目のユニットラインに対応した処理画素データに対してさらに画像処理の演算を行った処理画素データを出力バッファ431−2から読み出して外部に出力するように、出力バッファ431−2およびセレクタ432−2を制御する。これにより、出力バッファ431−2は、記憶している4つ目のユニットラインに対応した処理画素データに対してさらに画像処理の演算を行った処理画素データを、出力データとして画像処理モジュール43−3に出力する。
また、画像処理モジュール43−1では、後段の画像処理モジュール43−2から入力されたデータリクエスト信号が“High”レベルになり、画像処理モジュール43−2が処理画素データを受け付けることができる状態になったことが通知されると、制御部434−1は、画像処理モジュール43−2に備えた制御部434−2と同様に、5つ目と6つ目のユニットラインに対応した処理画素データを画像処理モジュール43−2に出力する。より具体的には、制御部434−1が、出力バッファ431−1に記憶された5つ目と6つ目のユニットラインのそれぞれの画素データに対して画像処理の演算を行った処理画素データを順次読み出して外部に出力するように、出力バッファ431−2およびセレクタ432−2を制御する。これにより、出力バッファ431−1は、記憶している5つ目と6つ目のユニットラインのそれぞれの画素データに対して画像処理の演算を行った処理画素データを出力データとして後段の画像処理モジュール43−2に出力する。なお、画像処理モジュール43−1が出力バッファ431−1に記憶している処理画素データも、すでに演算部433−1によって画像処理の演算が行われた処理画素データであるため、演算部433−1におけるレイテンシだけ遅れることなく、後段の画像処理モジュール43−2に出力することができる。
また、出力バッファ431−1は、5つ目のユニットラインのそれぞれの画素データに対して画像処理の演算を行った処理画素データを出力したときに、1つのユニットライン分の記憶容量が空いている(残っている)状態になり、画像処理モジュール43−1が入力DMAモジュール32からの画素データを受け付けることができる状態になる。このため、制御部434−1は、制御部434−2と同様に、画像処理モジュール43−1が画素データを受け付けることができる状態になったことを表すために、入力DMAモジュール32に出力しているデータリクエスト信号を“High”レベルにする。
これにより、入力DMAモジュール32は、DRAM20に記憶されている7つ目のユニットラインから、画素データの読み出しを再開し、読み出した画素データを画像処理モジュール43−1に出力する。なお、入力DMAモジュール32が、DRAM20に記憶されている画素データの読み出しを保留する際に、7つ目と8つ目のユニットラインのそれぞれの画素データをデータバッファに記憶している場合には、データバッファに記憶している7つ目のユニットラインのそれぞれの画素データを画像処理モジュール43−1に出力した後に、9つ目のユニットラインから、画素データの読み出しを再開してもよい。
このようにして、画像処理部30では、パイプライン接続された後段の処理モジュールから入力されたデータリクエスト信号が、再び画素データを受け付けることができる状態に変わった場合、それぞれの第2の構成の処理モジュールは、後段の処理モジュールへの出力データの出力を再開する。このとき、それぞれの第2の構成の処理モジュールは、処理モジュール自身に備えた出力バッファ431に記憶している画素データから順次、後段の処理モジュールに出力する。そして、それぞれの第2の構成の処理モジュールは、処理モジュール自身に備えた出力バッファ431の記憶容量が空いている状態になった後に、処理モジュール自身が画素データを受け付けることができる状態になったことを通知する。その後、それぞれの第2の構成の処理モジュールは、処理モジュール自身に備えた演算部433が入力された画素データに対して画像処理の演算を行って生成した処理画素データを、処理モジュール自身に備えた出力バッファ431に一旦記憶してから読み出して、後段の処理モジュールに順次出力する。
以降、上述したような動作を繰り返すことによって、画像処理部30では、パイプライン接続されたそれぞれの第2の構成の処理モジュールによるパイプライン処理を、それぞれのブロック画像データに含まれる画素データに対してユニットラインごとに順次を行うことによって、それぞれのブロック画像データに対する一連の画像処理を行う。
なお、図10に示した画像処理モジュール43の動作のタイミングチャートの一例には示していないが、それぞれの第2の構成の処理モジュールによる後段の処理モジュールへの出力データの出力を再開した後、再び出力バッファ431を介さずに入力データに対して画像処理の演算を行って生成した処理画素データを後段の処理モジュールにそのまま出力することができる状態になった場合には、図10に示したパイプライン処理を開始した最初の段階と同様に、出力バッファ431の動作を停止するように制御する。これにより、画像処理部30では、それぞれの第2の構成の処理モジュールに備えた出力バッファ431の消費電力を削減することができる。
上記に述べたとおり、第2の構成の画像処理モジュール43は、出力バッファ431の記憶容量の空き状態に基づいて、パイプライン構成において前段に接続された処理モジュールに対して入力データを要求し、前段の処理モジュールから入力された入力データ(画素データ)に対して画像処理の演算を行った後の処理画素データの出力バッファ431への一時記憶(書き込み)を制御する。また、第2の構成の画像処理モジュール43は、出力バッファ431の記憶容量の空き状態と、パイプライン構成において後段に接続された処理モジュールの動作状態とに基づいて、出力バッファ431に一時記憶している処理画素データの読み出し、後段の処理モジュールに出力する処理画素データの選択(切り替え)を制御する。これにより、第2の構成の画像処理モジュール43では、後段の処理モジュールがパイプラインストール状態ではなく、出力バッファ431の記憶容量が全て空いている状態である場合に、前段の処理モジュールから入力された入力データに対して演算部433が画像処理の演算を行った後の処理画素データを、出力バッファ431をスルーして後段の処理モジュールに出力するように制御することができる。また、第2の構成の画像処理モジュール43では、前段の処理モジュールから入力された入力データに対して演算部433が画像処理の演算を行った後の処理画素データを、出力バッファ431をスルーして後段の処理モジュールに出力することにより、このときの出力バッファ431の動作を停止させて、出力バッファ431の消費電力を削減することができる。このことにより、第2の構成の画像処理モジュール43でパイプラインを構成した画像処理部30でも、従来の処理モジュールでパイプラインを構成したときのように必ずデータバッファへのデータの書き込みとデータバッファからのデータの読み出しとを行わなくても、所望の画像処理を行うことができ、パイプライン処理の性能を低下させずに、パイプライン処理における消費電力を低減することができる。
なお、画像処理モジュール43に備えた制御部434の構成、判定処理、および動作は、図5〜図7に示した第1の構成の画像処理モジュール33の構成、判定処理、および動作と同様に考えることができる。従って、画像処理モジュール43に備えた制御部434の構成、判定処理、および動作に関する詳細な説明は省略する。ただし、第2の構成の画像処理モジュール43は、前段の処理モジュールから入力された入力データに対して、まず、演算部433が画像処理の演算を行う構成である。このため、第2の構成の画像処理モジュール43では、演算部433が入力データに対して画像処理の演算を行うタイミングと、制御部434がバッファ内データ量情報を更新するタイミングと、制御部434が出力バッファ431に処理画素データを書き込むためのバッファライト信号のタイミングと、画像処理モジュール43が後段の処理モジュールに出力するデータ有効信号のタイミングとが、第1の構成の画像処理モジュール33と異なる。
より具体的には、演算部433は、前段の処理モジュールから入力されたデータ有効信号が、ユニットラインに含まれるそれぞれの画素データが有効な画素データであることを表している画素データに対して画像処理の演算を行う。また、第1の構成の画像処理モジュール33の制御部334に備えたデータ量管理部3341に対応する、制御部434に備えたデータ量管理部は、バッファ内データ量情報が表すユニットライン数を1ずつ加算して更新する際に、演算部433から出力されたデータ有効信号を、第1の構成の画像処理モジュール33において前段の処理モジュールから入力されたデータ有効信号であるものとしてバッファ内データ量情報を更新する。また、第1の構成の画像処理モジュール33の制御部334に備えた入力バッファ書き込み管理部3343に対応する、制御部434に備えた出力バッファ書き込み管理部は、演算部433から出力されたデータ有効信号が有効であることを表している処理画素データに基づいて、出力バッファ431に処理画素データを書き込むためのバッファライト信号を生成し、出力バッファ431に出力する。また、セレクタ432は、選択した(切り替えた)処理画素データに対応するデータ有効信号を出力するように、外部に出力するデータ有効信号も選択する(切り替える)。つまり、セレクタ432は、演算部433が画像処理の演算を行った処理画素データを外部に出力する際には、演算部433から出力されたデータ有効信号を出力し、出力バッファ431−1に記憶された処理画素データを外部に出力する際には、出力バッファ431から処理画素データを読み出すタイミングに応じたデータ有効信号を出力するように、外部に出力するデータ有効信号を選択する(切り替える)。なお、出力バッファ431から処理画素データを読み出すタイミングに応じたデータ有効信号は、第1の構成の画像処理モジュール33の制御部334に備えた入力バッファ読み出し管理部3344に対応する、制御部434に備えた出力バッファ読み出し管理部が生成してセレクタ432に出力してもよいし、セレクタ432が、制御部434から出力バッファ431に出力されたバッファリード信号に基づいて生成してもよい。
なお、図10を用いて説明した第2の構成の画像処理モジュール43の動作では、前段の処理モジュールから入力された入力データに対して画像処理の演算を行った処理画素データを、出力バッファ431に一旦記憶した後に読み出して後段の処理モジュールに出力するように制御した後、再び出力バッファ431をスルーして演算部433が生成した処理画素データを外部に出力するように、積極的に制御することは行っていなかった。つまり、図10に示した第2の構成の画像処理モジュール43の動作でも、図4および図7に示した第1の構成の画像処理モジュール33の動作と同様に、演算部433が画像処理の演算を行って生成した処理画素データを、出力バッファ431をスルーして外部に出力するように制御するのは、前段の処理モジュールおよび後段の処理モジュールの動作状態に依存していた。しかし、第2の構成の画像処理モジュール43でも、第1の構成の画像処理モジュール33と同様に、制御部434が、意図的に出力バッファ431をスルーして演算部433が画像処理の演算を行って生成した処理画素データを外部に出力する状態に制御することもできる。このときの動作は、図8に示した第1の構成の画像処理モジュール33の動作と同様に考えることができる。従って、画像処理モジュール43が、意図的に出力バッファ431をスルーして演算部433が画像処理の演算を行って生成した処理画素データを外部に出力する状態に制御する動作に関する詳細な説明は省略する。
上記に述べたとおり、第1の実施形態の画像処理装置1では、画像処理部30に備えられたパイプラインを構成するそれぞれの処理モジュールが、それぞれの処理モジュールに備えたデータバッファの記憶容量の空き状態に基づいて、前段に接続された処理モジュールに対して入力データを要求し、データバッファへのデータの一時記憶(書き込み)を制御する。また、第1の実施形態の画像処理装置1では、画像処理部30に備えられたそれぞれの処理モジュールが、それぞれの処理モジュールに備えたデータバッファの記憶容量の空き状態と、後段に接続された処理モジュールの動作状態とに基づいて、データバッファに一時記憶しているデータの読み出しと、外部に出力する出力データの選択(切り替え)とを制御する。このとき、それぞれの処理モジュールでは、後段の処理モジュールがパイプラインストール状態ではなく、データバッファの記憶容量が全て空いている状態である場合に、データバッファをスルーするように制御し、データバッファの動作を停止させる。これにより、それぞれの処理モジュールでは、データバッファの消費電力を削減することができる。このとき、画像処理部30では、データバッファをスルーするように制御した処理モジュールと、その後段の処理モジュールとが1つの処理モジュールであるのと同様に見なすことができる。一方、それぞれの処理モジュールでは、後段の処理モジュールがパイプラインストール状態である場合には、データバッファをスルーしないように制御する。これにより、それぞれの処理モジュール自身がパイプラインストール状態となるのを防止することができる。このことにより、第1の実施形態の画像処理装置1では、画像処理部30に備えられたそれぞれの処理モジュールによるパイプライン処理によって、所望の画像処理を行うときのパイプライン処理の性能を低下させずに、パイプライン処理における消費電力を低減することができる。
なお、第1の実施形態の画像処理装置1では、画像処理部30に備えられたパイプラインを構成するそれぞれの処理モジュールが、パイプライン構成における直後の処理モジュールの動作状態に基づいて、それぞれの処理モジュールに備えたデータバッファをスルーするか否かを判定する構成について説明した。しかし、それぞれの処理モジュールにおけるデータバッファをスルーするか否かは、第1の実施形態に示した直後の処理モジュールの動作状態によって判定する構成に限定されるものではない。例えば、それぞれの処理モジュールが、パイプライン構成における複数の後段の処理モジュール、または後段の全ての処理モジュールの動作状態に基づいて、それぞれの処理モジュールに備えたデータバッファをスルーするか否かを判定する構成であってもよい。より具体的には、複数の後段の処理モジュールから出力されたパイプラインストール信号を論理積(AND)した結果に基づいてデータバッファをスルーするか否かを判定する構成であってもよい。この場合、それぞれの処理モジュールは、論理積して入力されたパイプラインストール信号に基づいてデータバッファをスルーするか否かを判定することができる。つまり、それぞれの処理モジュールは、パイプラインストール信号を論理積した後段の処理モジュールの全てがパイプラインストール状態でない場合に、データバッファをスルーすると判定することができる。また、それぞれの処理モジュールが、後段の処理モジュールに備えたデータバッファの記憶容量の空き状態の情報も状態通知信号として得ることができる場合には、後段の処理モジュールに備えたデータバッファの記憶容量も、処理モジュール自身に備えたデータバッファの記憶容量の一部であると見なして、データバッファをスルーするか否かを判定することができる。
また、第1の実施形態の画像処理装置1では、例えば、図7に示したように、データバッファをスルーしないように制御した後、再びデータバッファをスルーするように積極的に制御する方法として、それぞれの処理モジュールが、データバッファに一時記憶された全てのデータを読み出した後に、前段の処理モジュールに対して入力データを要求する方法を示した。しかし、それぞれの処理モジュールにおいて積極的にデータバッファをスルーするように制御する方位は、第1の実施形態に示した方法に限定されるものではない。例えば、それぞれの処理モジュールが、複数の後段の処理モジュールからの入力データの要求が、継続して予め定めた時間以上出力されている場合に、データバッファをスルーするように制御するようにしてもよい。
なお、第1の実施形態の画像処理装置1では、画像処理部30に備えられたパイプラインを構成するそれぞれの処理モジュールが、後段の処理モジュールにおけるパイプラインストール状態に基づいて、データバッファをスルーするか否かの判定をそれぞれ行う、つまり、それぞれの処理モジュールごとに、データバッファをスルーするか否かの判定を行っている。しかし、画像処理装置1の全体を考えると、画像処理部30におけるパイプライン処理がパイプラインストール状態になってしまう要因としては、DMAバス10におけるデータの流れ(バストラフィック)の滞りも考えられる。これは、画像処理装置1においてDMAバス10に接続された複数の構成要素が、DMAバス10を介してDRAM20との間で処理を行うデータの受け渡しを行っているからである。このため、画像処理部30におけるパイプライン処理の性能を低下させないためには、DMAバス10におけるバストラフィックも考慮することが望ましい。
<第2の実施形態>
次に、本発明の第2の実施形態の画像処理装置について説明する。図11は、本発明の第2の実施形態における画像処理装置の概略構成を示したブロック図である。図11に示した画像処理装置2は、DMAバス10と、DRAM20と、画像処理部50と、センサインタフェース(I/F)部60と、ビデオインタフェース(I/F)部70と、メモリカードインタフェース(I/F)部80と、CPU(Central Processing Unit)90と、を備えている。また、画像処理部50は、接続切り替え部31と、入力DMAモジュール32と、3つの画像処理モジュール33−1〜画像処理モジュール33−3と、出力DMAモジュール34と、バストラフィック監視部55と、を備えている。画像処理装置2も画像処理装置1と同様に、例えば、静止画用カメラなどの撮像装置に備えられる。
なお、画像処理装置2の構成要素には、図1に示した第1の実施形態の画像処理装置1に備えた構成要素と同様の構成要素を含んでいる。従って、以下の説明においては、画像処理装置2の構成要素において、第1の実施形態の画像処理装置1の構成要素と同様の構成要素には同一の符号を付与し、それぞれの構成要素に関する詳細な説明は省略する。
センサインタフェース部60は、DMAバス10に接続され、撮像装置に備えたレンズによって結像された被写体の光学像を光電変換する固体撮像素子(イメージセンサ)を制御する撮像処理部である。センサインタフェース部60は、イメージセンサによって撮像したそれぞれのフレームの静止画像のデータを、DMAバス10を介してDRAM20に記憶させる。画像処理装置2においては、センサインタフェース部60によってDRAM20に記憶された1フレームの静止画像のデータを、予め定めた複数の小さなブロックに分割し、画像処理部50が、それぞれのブロックごとに画像処理を行う。
ビデオインタフェース部70は、DMAバス10に接続され、画像処理部50が画像処理を施してDRAM20に記憶した表示用の画像のデータを、撮像装置に備えた不図示の表示部に表示させるための表示処理部である。ビデオインタフェース部70は、表示用の画像のデータを、DMAバス10を介してDRAM20から読み出し、読み出した表示用の画像のデータを表示部に表示させる。
メモリカードインタフェース部80は、DMAバス10に接続され、画像処理部50が画像処理を施してDRAM20に記憶した記録用の画像のデータを、撮像装置に着脱可能な構成で接続されたメモリカードなどの記録媒体に記録するための記録処理部である。メモリカードインタフェース部80は、記録用の画像のデータを、DMAバス10を介してDRAM20から読み出し、読み出した記録用の画像のデータを記録媒体に記録させる。
CPU90は、DMAバス10に接続され、画像処理装置2に備えたそれぞれの構成要素や撮像装置に備えた構成要素を制御するシステム制御部である。CPU90は、それぞれの構成要素を制御するためのプログラムやデータを、DMAバス10を介して読み出し、読み出したプログラムやデータに応じて、撮像装置の全体を制御する。
以下の説明においては、DMAバス10に接続され、DMAバス10を介してDRAM20にアクセスするセンサインタフェース部60、ビデオインタフェース部70、メモリカードインタフェース部80、およびCPU90を区別せずに表すときには、「バスマスタ」という。
画像処理部50は、第1の実施形態の画像処理装置1に備えた画像処理部30と同様に、DRAM20に記憶された1フレームの静止画像のデータを、予め定めた複数の小さなブロックに分割し、それぞれのブロックごとに画像処理を行う。画像処理部50も、DMAバス10に接続されたバスマスタである。画像処理部50は、図11に示したように、入力DMAモジュール32、画像処理モジュール33−1、画像処理モジュール33−2、画像処理モジュール33−3、および出力DMAモジュール34が直列に接続されたパイプライン処理によって、画像処理装置2における画像処理を順次行う。
なお、画像処理部50の構成要素にも、図1に示した第1の実施形態の画像処理装置1に備えた画像処理部30の構成要素と同様の構成要素を含んでいる。従って、以下の説明においては、画像処理部50の構成要素において、第1の実施形態の画像処理装置1に備えた画像処理部30の構成要素と異なる点のみを説明し、第1の実施形態の画像処理装置1に備えた画像処理部30と同様の構成要素には同一の符号を付与して詳細な説明は省略する。
接続切り替え部31は、CPU90からの制御に応じて、画像処理部50に備えたそれぞれの処理モジュール同士の接続の切り替えを行う。
バストラフィック監視部55は、画像処理部50においてDMAバス10に接続されたそれぞれのバスマスタによるDRAM20へのアクセスを監視することによって、DMAバス10のバストラフィックを監視する。そして、バストラフィック監視部55は、監視したDMAバス10のバストラフィックに基づいて、入力バッファ331をスルーして入力データを演算部333に出力するように指示するための指示信号(以下、「バッファスルー指示信号」という)を、それぞれの画像処理モジュール33に出力する。
より具体的には、バストラフィック監視部55は、DMAバス10に接続されたそれぞれのバスマスタが、DMAバス10を介してDRAM20との間でデータの受け渡し(読み書き)を行う際のDMA制御信号を監視する。このDMA制御信号は、例えば、それぞれのバスマスタがDMAによるDRAM20へのアクセスを要求する際に出力するDMAリクエスト信号や、それぞれのバスマスタによるDMAでのDRAM20へのアクセスを調停するバスアービタ(不図示)がアクセス要求を許可するバスマスタに出力するDMAアクノリッジ信号などである。そして、バストラフィック監視部55は、監視したDMAバス10のバストラフィックに基づいて、DMAバス10に流れているデータが少ないと判定した場合に、入力バッファ331をスルーして入力データを演算部333に出力するように指示するバッファスルー指示信号を出力する。
なお、バストラフィック監視部55は、監視したDMAバス10のバストラフィックが予め定めた条件を満足する場合に、DMAバス10に流れているデータが少ないと判定する。バストラフィック監視部55がDMAバス10に流れているデータが少ないと判定する条件は、例えば、それぞれのバスマスタから出力されたDMAリクエスト信号の間隔や、バスマスタからDMAリクエスト信号が出力されているか否かなどの条件がある。より具体的には、バストラフィック監視部55は、それぞれのバスマスタによるDMAリクエスト信号の間隔、つまり、それぞれのバスマスタがDMAバス10を介して行うDRAM20へのアクセスを行う間隔が、予め定めた間隔の閾値よりも長い場合に、DMAバス10に流れているデータが少ないと判定する。また、バストラフィック監視部55は、それぞれのバスマスタがDMAによってDRAM20にアクセスしていない期間が、予め定めた間隔の閾値よりも長い場合に、DMAバス10に流れているデータが少ないと判定する。
画像処理モジュール33のそれぞれは、第1の実施形態の画像処理装置1において画像処理部30に備えられた画像処理モジュール33と同様の構成の処理モジュールである。ただし、画像処理装置2では、バストラフィック監視部55が出力したバッファスルー指示信号に応じて、入力データを、入力バッファ331をスルーして演算部333に出力するか、入力バッファ331に一旦記憶してから演算部333に出力するかを選択する(切り替える)。図5に示した画像処理モジュール33の構成では、後段の処理モジュールから入力されるパイプラインストール信号の代わりに、バストラフィック監視部55から出力されたバッファスルー指示信号を入力することによって、バッファスルー判定部3342は、第1の実施形態の画像処理装置1に備えた画像処理部30と同様に動作することができる。すなわち、バッファスルー判定部3342は、バッファスルー指示信号に基づいてセレクタ332を制御するためのバッファスルー信号を出力することができる。
なお、パイプラインストール信号は、パイプライン処理が(一時)停止しているため入力データの出力を要求しないことを表している信号であり、バッファスルー指示信号は、入力バッファ331をスルーして入力データを演算部333に出力するように指示することを表している信号である。つまり、パイプラインストール信号が表す意味とバッファスルー指示信号が表す意味とは逆の意味になっている。従って、図5に示した画像処理モジュール33の構成においてバッファスルー判定部3342は、パイプラインストール信号の代わりに入力されるバッファスルー指示信号の意味を逆に捉えて、入力バッファ331(すなわち、入力バッファ書き込み管理部3343および入力バッファ読み出し管理部3344)と、セレクタ332との制御方法を判定する。
そして、それぞれの画像処理モジュール33は、バッファスルー指示信号が入力バッファ331をスルーして入力データを演算部333に出力するように指示することを表し、入力バッファ331の記憶容量が全て空いている状態である場合に、前段の処理モジュールから入力された入力データを、入力バッファ331をスルーして演算部333に転送するように制御する。このとき、それぞれの画像処理モジュール33は、入力バッファ331の動作を停止させて、入力バッファ331の消費電力を削減する。
次に、バストラフィック監視部55におけるDMAバス10のバストラフィックの監視動作について説明する。図12は、本発明の第2の実施形態の画像処理装置2に備えた画像処理部50におけるバストラフィック監視部55の動作の一例を示したタイミングチャートである。図12には、画像処理装置2に備えたそれぞれのバスマスタがDRAM20へのアクセスを要求する際に出力するDMAリクエスト信号と、画像処理部50に備えた入力DMAモジュール32および出力DMAモジュール34がDRAM20へのアクセスを要求する際に出力するDMAリクエスト信号との一例を示している。また、図12には、バストラフィック監視部55がDMAバス10のバストラフィックを監視した結果に応じて出力するバッファスルー指示信号の一例を併せて示している。
画像処理装置2に備えたそれぞれのバスマスタは、処理の状況に応じてDMAによるDRAM20へのアクセス要求(DMAリクエスト信号)をバスアービタ(不図示)に出力する。そして、バスアービタ(不図示)は、それぞれのバスマスタから入力されたDMAリクエスト信号を調停し、アクセス要求を許可するバスマスタに対してDMAアクノリッジ信号を出力する。これにより、DMAアクノリッジ信号が入力されたバスマスタ、すなわち、アクセス要求が許可されたバスマスタは、DMAによってDRAM20にアクセスする。ここで、それぞれのバスマスタによるDRAM20へのアクセスは、図12に示したように、一定の間隔では行われない。
バストラフィック監視部55は、画像処理部50以外のバスマスタがDMAによって行うDRAM20へのアクセスを監視することによって、DMAバス10のバストラフィックを監視する。より具体的には、バストラフィック監視部55は、画像処理部50以外のそれぞれのバスマスタが出力するDMAリクエスト信号の間隔を、バスマスタごとに計測する。これにより、DMAバス10のバストラフィックの状態を判定することができる。例えば、予め定めた間隔の閾値よりも短い間隔で1つのバスマスタからDMAリクエスト信号が出力されている場合には、このバスマスタによるDMAバス10の占有率が高く、DRAM20へのアクセスが頻繁に行われていることにより、DMAバス10に多くのデータが流れていると判定することができる。また、例えば、それぞれのバスマスタが出力するDMAリクエスト信号の間隔は予め定めた間隔の閾値よりも長いが、同時期に複数のバスマスタからDMAリクエスト信号が出力されている場合には、それぞれのバスマスタによるDMAバス10の占有率が低いものの、複数のバスマスタによってDRAM20は頻繁にアクセスされていることにより、DMAバス10に多くのデータが流れていると判定することができる。
このように、DMAバス10に多くのデータが流れていると、画像処理部50がDMAでのDRAM20へのアクセスを要求した場合でも、アクセス要求が許可される間隔が長くなり、画像処理部50におけるパイプライン処理が滞ってしまう、つまり、パイプラインストール状態になってしまうことが考えられる。このため、バストラフィック監視部55は、入力バッファ331をスルーして入力データを演算部333に出力するように指示することを表すバッファスルー指示信号を出力しない。図12に示したタイミングチャートでは、バッファスルー指示信号を“Low”レベルにすることよって、入力バッファ331をスルーして入力データを演算部333に出力するように指示しないことを表している。これにより、画像処理部50に備えたそれぞれの画像処理モジュール33では、バッファスルー判定部3342が、入力された入力データを入力バッファ331に一旦記憶した後に読み出して演算部333に転送するように制御する。そして、それぞれの画像処理モジュール33では、演算部333によって画像処理の演算を行った処理画素データを、後段の処理モジュールに順次出力することによって、パイプライン処理を行う。
また、図12に示したタイミングチャートにおけるタイミングt1以降のように、画像処理部50以外のバスマスタが出力するDMAリクエスト信号がなくなり、つまり、画像処理部50以外のバスマスタによるDRAM20へのアクセスがなくなり、この状態が予め定めた期間よりも長く続いている場合には、バストラフィック監視部55は、DMAバス10に流れているデータが少ないと判定する。そして、バストラフィック監視部55は、入力バッファ331をスルーして入力データを演算部333に出力するように指示することを表すバッファスルー指示信号を出力する。図12に示したタイミングチャートでは、タイミングt2からバッファスルー指示信号を“High”レベルにすることによって、入力バッファ331をスルーして入力データを演算部333に出力するように指示することを表している。これにより、画像処理部50に備えたそれぞれの画像処理モジュール33では、バッファスルー判定部3342が、入力された入力データを、入力バッファ331をスルーして演算部333に出力するようにセレクタ332を制御し、入力バッファ331の動作を停止させて入力バッファ331の消費電力を削減する。そして、それぞれの画像処理モジュール33では、入力バッファ331をスルーして転送された入力データに対して演算部333が画像処理の演算を行った処理画素データを、後段の処理モジュールに順次出力することによって、パイプライン処理を行う。
また、図12に示したタイミングチャートにおけるタイミングt3以降のように、画像処理部50以外のバスマスタからDMAリクエスト信号が出力された場合、つまり、画像処理部50以外のバスマスタによるDRAM20へのアクセスが行われるようになった場合、バストラフィック監視部55は、DMAバス10に流れるデータがこれから多くなると判定する。このため、バストラフィック監視部55は、タイミングt4から、バッファスルー指示信号を再び“Low”レベルにすることよって、入力バッファ331をスルーして入力データを演算部333に出力するように指示しないことを表す。これにより、画像処理部50に備えたそれぞれの画像処理モジュール33では、バッファスルー判定部3342が、入力された入力データを入力バッファ331に一旦記憶した後に読み出して演算部333に転送するように制御する。
このように、バストラフィック監視部55は、DMAバス10に接続されたそれぞれのバスマスタによるDRAM20へのアクセスに基づいて、DMAバス10のバストラフィックを監視する。そして、バストラフィック監視部55は、監視したDMAバス10のバストラフィックに基づいて、画像処理部50においてパイプラインを構成するそれぞれの画像処理モジュール33に、入力バッファ331をスルーして入力された入力データを演算部333に転送するか否かを制御するためのバッファスルー指示信号を出力する。
なお、バストラフィック監視部55がバストラフィックを判定する条件、つまり、DMAバス10に流れるデータが多いか少ないかを判定する条件は、上述したような、それぞれのバスマスタから出力されたDMAリクエスト信号の間隔や、バスマスタからDMAリクエスト信号が出力されているか否かの条件に限定されるものではなく、他の条件を満足するか否かによって判定してもよい。例えば、DRAM20にアクセスするバスマスタの数によってバストラフィックを判定してもよい。この場合、バストラフィック監視部55は、DRAM20にアクセスするバスマスタの数が予め定めた数の閾値よりも少ない場合にDMAバス10に流れるデータが少ないと判定し、DRAM20にアクセスするバスマスタの数が予め定めた数の閾値以上である場合にDMAバス10に流れるデータが多いと判定する。また、例えば、それぞれのバスマスタがDMAリクエスト信号を出力してからDMAアクノリッジ信号が入力されるまでの時間によってバストラフィックを判定してもよい。この場合、バストラフィック監視部55は、DMAリクエスト信号を出力してからDMAアクノリッジ信号が入力されるまでの時間が予め定めた時間の閾値よりも短い場合にDMAバス10に流れるデータが少ないと判定し、DMAリクエスト信号を出力してからDMAアクノリッジ信号が入力されるまでの時間が予め定めた時間の閾値以上である場合にDMAバス10に流れるデータが多いと判定する。
本第2の実施形態によれば、画像処理部(画像処理部50)は、データバス(DMAバス10)に接続された複数のバスマスタ(センサインタフェース部60、ビデオインタフェース部70、メモリカードインタフェース部80、CPU90など)によるメモリ(DRAM20)へのアクセスを監視することによって、DMAバス10におけるバストラフィックを監視するバストラフィック監視部(バストラフィック監視部55)、をさらに備え、バストラフィック監視部55は、監視したバストラフィックに基づいてDMAバス10に流れているデータが少ないと判定した場合に、それぞれの処理モジュール(画像処理モジュール33)に、データバッファ(入力バッファ331)をスルーしてデータ(画素データまたは処理画素データ)を(演算部333に)転送する経路の選択を指示するバッファスルー指示信号を出力し、それぞれの画像処理モジュール33内の制御部(制御部334)は、バッファスルー指示信号が入力された場合に、パイプライン処理における画素データまたは処理画素データの流れが滞っていない状態であると判定する画像処理装置(画像処理装置2)が構成される。
上記に述べたとおり、第2の実施形態の画像処理装置2では、画像処理部50に備えられたバストラフィック監視部55が、画像処理装置2に備えた他のバスマスタによるDRAM20へのアクセスを監視することによって、DMAバス10におけるバストラフィックを監視する。そして、第2の実施形態の画像処理装置2では、バストラフィック監視部55が、監視したバストラフィックに基づいて、画像処理部50に備えられたパイプラインを構成するそれぞれの画像処理モジュール33に入力された入力データを、入力バッファ331をスルーして演算部333に転送するか否かを制御する。このとき、それぞれの画像処理モジュール33では、入力バッファ331をスルーして入力された入力データを演算部333に転送する場合、入力バッファ331の動作を停止させる。これにより、それぞれの画像処理モジュール33では、入力バッファ331における消費電力を削減することができる。このことにより、第2の実施形態の画像処理装置2でも、第1の実施形態の画像処理装置1と同様に、画像処理部50に備えられたそれぞれの画像処理モジュール33によるパイプライン処理によって、所望の画像処理を行うときのパイプライン処理の性能を低下させずに、パイプライン処理における消費電力を低減することができる。
なお、第2の実施形態の画像処理装置2では、画像処理部50に備えられたバストラフィック監視部55が監視したDMAバス10のバストラフィックに基づいて出力したバッファスルー指示信号に応じて、それぞれの画像処理モジュール33が、入力データを、入力バッファ331をスルーして演算部333に出力するか、入力バッファ331に一旦記憶してから演算部333に出力するかを選択する(切り替える)構成について説明した。しかし、それぞれの画像処理モジュール33は、バッファスルー指示信号に加えて、第1の実施形態の画像処理装置1と同様に、後段(複数の後段も含む)の画像処理モジュール33の動作状態も併せて入力バッファ331をスルーするか否かを判定する構成であってもよい。この場合、画像処理部50に備えられたそれぞれの画像処理モジュール33内のバッファスルー判定部3342が、バッファスルー指示信号と後段に接続された処理モジュールの動作状態とに基づいて、入力バッファ書き込み管理部3343、入力バッファ読み出し管理部3344、およびセレクタ332を制御することができる。そして、第1の実施形態の画像処理装置1と同様に、意図的に入力バッファ331をスルーして入力データを演算部333に転送する状態に制御することもできる。
また、第2の実施形態の画像処理装置2では、画像処理部50内にバストラフィック監視部55を備えた構成について説明した。しかし、バストラフィック監視部55は、画像処理部50の外部に備える構成であってもよい。例えば、画像処理装置2に備えたバスアービタ(不図示)が、バストラフィック監視部55と同様に、DMAバス10のバストラフィックを監視する機能を有している場合も考えられる。この場合、画像処理部50に備えられたそれぞれの画像処理モジュール33内のバッファスルー判定部3342が、バスアービタ(不図示)が監視したDMAバス10のバストラフィックの状態を表す信号に基づいて、入力バッファ331をスルーするか否かを判定し、入力バッファ書き込み管理部3343、入力バッファ読み出し管理部3344、およびセレクタ332を制御する構成にすることができる。そして、第1の実施形態の画像処理装置1と同様に、意図的に入力バッファ331をスルーして入力データを演算部333に転送する状態に制御することもできる。
また、第2の実施形態の画像処理装置2では、画像処理部50に備えられたパイプラインを構成するそれぞれの処理モジュールが、第1の実施形態の画像処理装置1において画像処理部30に備えられた第1の構成の画像処理モジュール33と同様の構成の処理モジュールである場合について説明した。しかし、画像処理部50に備えられたパイプラインを構成するそれぞれの処理モジュールは、第1の構成の画像処理モジュール33に限定されるものではなく、第2の構成の画像処理モジュール43であってもよい。なお、画像処理部50に備えられたパイプラインを構成するそれぞれの処理モジュールが第2の構成の画像処理モジュール43である場合であっても、第2の実施形態の画像処理装置2および画像処理部50の動作は、上述した動作と同様に考えることができる。従って、画像処理部50に備えられたパイプラインを構成するそれぞれの処理モジュールが第2の構成の画像処理モジュール43である場合の動作に関する詳細な説明は省略する。
上記に述べたとおり、本発明を実施するための形態によれば、画像処理部においてパイプラインを構成するそれぞれの処理モジュールに、処理モジュール自身に備えたデータバッファをスルーするか否かを選択する(切り替える)構成を備える。そして、本発明を実施するための形態では、処理モジュール自身に備えたデータバッファの記憶容量の空き状態と、パイプライン構成において後段(複数の後段も含む)に接続された処理モジュールの動作状態とに基づいて、処理モジュール自身に備えたデータバッファをスルーするか否かの選択(切り替え)を制御する。また、本発明を実施するための形態では、画像処理部が接続されたDMAバスのバストラフィックを監視し、監視したバストラフィックに基づいて、処理モジュール自身に備えたデータバッファをスルーするか否かの選択(切り替え)を制御する。このとき、本発明を実施するための形態では、処理モジュール自身に備えたデータバッファの記憶容量の空き状態に基づいて、パイプライン構成において前段に接続された処理モジュールに対する入力データの要求を意図的に制御することもできる。そして、本発明を実施するための形態では、それぞれの処理モジュールにおいてデータバッファをスルーするように制御した場合、データバッファの動作を停止するように制御する。これにより、本発明を実施するための形態では、それぞれの処理モジュールにおいて画像処理の演算を行う際に、処理モジュール自身に備えたデータバッファにおける消費電力を削減することができる。このことにより、本発明を実施するための形態では、画像処理部に備えられたそれぞれの処理モジュールによるパイプライン処理によって、所望の画像処理を行うときのパイプライン処理の性能を低下させずに、パイプライン処理における消費電力を低減することができる。
なお、本発明を実施するための形態では、画像処理装置に備えた画像処理部において、パイプラインを構成するそれぞれの画像処理モジュールに、画像処理モジュール自身に備えたデータバッファをスルーするか否かの選択(切り替え)を制御する機能を備えた構成について説明した。しかし、上述したように、画像処理部においてパイプラインを構成する処理モジュールである入力DMAモジュールと出力DMAモジュールとにもデータバッファを備えている。従って、入力DMAモジュールや出力DMAモジュールにも、画像処理モジュールと同様に、自身に備えたデータバッファをスルーするか否かの選択(切り替え)を制御する機能を備えてもよい。この機能を備えることによって、入力DMAモジュールや出力DMAモジュールでも、画像処理モジュールと同様の効果を得ることができる。
また、本発明を実施するための形態では、画像処理装置に備えた画像処理部内にパイプラインを構成するそれぞれの処理モジュールを備えた構成について説明した。しかし、パイプライン構成によって一連の処理を行う処理装置は、画像処理装置の他にも種々の処理装置が考えられる。従って、本発明の考え方を適用することができる処理装置は、本発明を実施するための形態で示した画像処理装置に限定されるものではなく、複数の処理モジュールを直列に接続することによってパイプラインを構成してパイプライン処理を行う処理装置であれば、本発明の考え方を同様に適用することができ、本発明と同様の効果を得ることができる。
以上、本発明の実施形態について、図面を参照して説明してきたが、具体的な構成はこの実施形態に限定されるものではなく、本発明の趣旨を逸脱しない範囲においての種々の変更も含まれる。