(57)【要約】      （修正有）【課題】画像データ処理に好適な半導体装置を提供する。【解決手段】半導体装置は、第１のプログラムで動作し、記憶部から画素データを読み出す第１のプロセッサ４１と、第２のプログラムで動作し、画素データに対する処理を行い、前記記憶部に処理後の画素データを書き戻す第２のプロセッサ４３と、第１のプロセッサから第２のプロセッサへ画素データを転送するバッファ回路４２と、を有する。【選択図】図２
2014149691.tif 000002
【特許請求の範囲】
【請求項１】
第１のプログラムにより指定された方式に従って記憶部から画素データを読み出す第１のプロセッサと、
前記第１のプロセッサが読み出した前記画素データを保持するバッファ回路と、
前記バッファ回路から前記画素データを読み出し、第２のプログラムにより指定された方式に従って前記画素データを処理し、処理後の前記画素データを前記記憶部に書き戻す第２のプロセッサと、
を有する半導体装置。
【請求項２】
前記第２のプロセッサは、前記第１のプロセッサが前記画素データを読み出した前記記憶部に対して前記処理後の前記画素データを書き戻す請求項１に記載の半導体装置。
【請求項３】
前記バッファ回路は、
前記画素データを一時的に記憶するバッファメモリと、
前記バッファメモリの書き込み許可状態を示すロックフラグを格納するロックフラグレジスタと、を有し、
前記第１のプロセッサは、前記画素データを前記バッファメモリに書き込むと共に前記ロックフラグレジスタを書き込み禁止状態とし、
前記第２のプロセッサは、前記画素データを前記バッファメモリから読み出すと共に前記ロックフラグレジスタを書き込み許可状態とする請求項１に記載の半導体装置。
【請求項４】
前記バッファ回路は、
それぞれが前記画素データを一時的に記憶する複数のバッファメモリと、
前記複数のバッファメモリのそれぞれに対する書き込み許可状態を示すロックフラグを格納するロックフラグレジスタと、
前記複数のバッファメモリのうち書き込み対象となるバッファメモリを示すライトポインタを出力するライトポインタ生成部と、
前記複数のバッファメモリのうち読み出し対象となるバッファメモリを示すリードポインタを出力するリードポインタ生成部と、を有し、
前記第１のプロセッサは、前記ライトポインタが示す前記バッファメモリへの前記画素データの書き込み時に、前記リードポインタが示す前記バッファメモリに対応する前記ロックフラグレジスタを書き込み禁止状態とすると共に前記ライトポインタの値を増加させ、
前記第２のプロセッサは、前記リードポインタが示す前記バッファメモリから前記画素データの読み出し時に、前記リードポインタが示す前記バッファメモリに対応する前記ロックフラグレジスタを書き込み許可状態とすると共に前記リードポインタの値を増加さる請求項１に記載の半導体装置。
【請求項５】
前記第１のプロセッサと前記第２のプロセッサとの間に設けられ、一方のプロセッサからの指示に基づき他方のプロセッサの処理を停止させるウェイト信号と、前記一方のプロセッサの処理結果に応じた処理を前記他方のプロセッサに指示する同期信号と、を出力する同期処理部を更に有する請求項１に記載の半導体装置。
【請求項６】
前記第１のプロセッサは、読み出し対象となる前記画素データの座標情報を生成する座標生成部を有する請求項１に記載の半導体装置。
【請求項７】
前記座標生成部は、
アクセスモードを設定するモード設定値を出力するアクセスモード設定部と、
前記アクセスモードに対応して設けられ、それぞれが前記アクセスモードのいずれか１つに対応した前記座標情報を生成する複数のモード対応座標生成部と、
前記モード設定値に基づき前記複数のモード対応座標生成部が出力した前記座標情報のいずれか１つを選択して出力するセレクタと、を有する請求項６に記載の半導体装置。
【請求項８】
前記第１のプロセッサと前記第２のプロセッサを少なくとも含む画像処理演算部を複数有し、
複数の前記画像処理演算部の前記第１のプロセッサのそれぞれに対して前記画像データの座標情報を与える座標生成部をさらに有する請求項１に記載の半導体装置。
【請求項９】
前記第１のプロセッサは、複数の第１のプロセッサを含み、
前記第２のプロセッサは、複数の第２のプロセッサを含み、
書き込み可能状態となった前記バッファ回路の記憶領域を示すバッファ番号を順次蓄積し、蓄積した順に前記バッファ番号を前記複数の第１のプロセッサに提示するライトキューと、
読み出し可能状態となった前記バッファ回路の記憶領域を示すバッファ番号を順次蓄積し、蓄積した順に前記バッファ番号を前記複数の第２のプロセッサに提示するリードキューと、を更に有する請求項１に記載の半導体装置。
【請求項１０】
前記第１のプログラム及び前記第２のプログラムは、前記記憶部に格納され、前記第１のプロセッサ及び第２のプロセッサにより読み出される請求項１に記載の半導体装置。
【請求項１１】
第１のプログラムに従って動作する第１のプロセッサと、第２のプログラム第２のプロセッサと、前記第１のプロセッサから前記第２のプロセッサに転送するデータを一時保存するバッファ回路と、を有する半導体装置におけるデータ処理方法であって、
前記第１のプロセッサにより記憶部から画素データを読み出して前記バッファ回路に格納し、
前記第１のプロセッサにより前記画素データの書き込み処理の完了に応じて前記バッファ回路を書き込み禁止状態とし、
前記第２のプロセッサにより前記バッファ回路から前記画素データを読み出し、
前記第２のプロセッサにより前記画素データの読み出し処理の完了に応じて前記バッファ回路を書き込み許可状態とし、
前記第２のプロセッサにより読み出した前記画素データを処理して処理後の前記画素データを前記記憶部に書き戻すデータ処理方法。
【請求項１２】
前記第２のプロセッサは、前記第１のプロセッサが前記画素データを読み出した前記記憶部に対して前記処理後の前記画素データを書き戻す請求項１１に記載のデータ処理方法。
【請求項１３】
前記バッファ回路は、前記書き込み禁止状態となっている期間は読み出し許可状態であって、前記書き込み許可状態となっている期間は読み出し禁止状態となる請求項１１に記載のデータ処理方法。
【請求項１４】
前記バッファ回路は、複数の記憶領域を有し、前記複数の記憶領域毎に前記書き込み禁止状態と前記書き込み許可状態とを制御する請求項１１に記載のデータ処理方法。
【請求項１５】
前記第１のプロセッサと前記第２のプロセッサとのうちの一方のプロセッサからの指示に基づき他方のプロセッサの処理を停止させるウェイト処理と、
前記一方のプロセッサの処理結果に応じた処理を前記他方のプロセッサに指示する請求項１１に記載のデータ処理方法。
【請求項１６】
前記第１のプロセッサは、読み出し対象となる前記画素データの座標情報を生成する請求項１１に記載のデータ処理方法。
【請求項１７】
前記第１のプロセッサは、アクセスモード毎に異なるアクセス規則に従って前記座標情報を生成する請求項１６に記載したデータ処理方法。
【請求項１８】
前記第１のプロセッサと前記第２のプロセッサを少なくとも含む画像処理演算部を複数有し、
前記第１のプロセッサのそれぞれに対して互いに関連性を有する前記画像データの座標情報を与える請求項１１に記載のデータ処理方法。
【請求項１９】
前記第１のプロセッサは、複数の第１のプロセッサを含み、
前記第２のプロセッサは、複数の第２のプロセッサを含み、
前記複数の第１のプロセッサが出力する前記画素データを記憶し、受信した順に前記バッファ回路に出力し、
前記複数の第２のプロセッサが出力するリード要求を受信した順に前記バッファ回路から前記画素データを読み出し、
前記リード要求を出力した前記第２のプロセッサに読み出した画素データを出力する請求項１１に記載のデータ処理方法。
【請求項２０】
前記第１のプログラム及び前記第２のプログラムは、前記記憶部に格納され、前記第１のプロセッサ及び第２のプロセッサにより読み出される請求項１１に記載のデータ処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は半導体装置及びそのデータ処理方法に関し、例えば画像データを処理する半導体装置及びデータ処理方法に関する。
【背景技術】
【０００２】
近年、カメラで撮影した画像から様々な情報を読み取り、機器の制御を行うことが行われている。このような装置の制御に利用される画像処理には高速な処理が要求されている。また、装置の制御に利用される画像処理は複数あり、このような画像処理に利用される半導体装置は複数の画像処理方法に対応する必要がある。そこで、画像処理のうち画像の描画を高速化する技術が特許文献１に開示されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１１−０９０６６３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本願の発明者等は、画像処理装置等に用いられる半導体装置の開発に際し、様々な課題を見出した。本願で開示される各実施の形態は、例えば、画像処理装置に好適な半導体装置を提供する。その他の課題と新規な特徴は、本明細書の記述および添付図面から明らかになるであろう。
【課題を解決するための手段】
【０００５】
一実施の形態に係る半導体装置は、第１のプログラムで動作し、記憶部から画素データを読み出す第１のプロセッサと、第２のプログラムで動作し、画素データに対する処理を行い、前記記憶部に処理後の画素データを書き戻す第２のプロセッサと、第１のプロセッサから第２のプロセッサへ前記画素データを転送するバッファ回路と、を有する。
【発明の効果】
【０００６】
前記一実施の形態によれば、良質な半導体装置及びそれを備えた画像処理装置を提供することができる。
【図面の簡単な説明】
【０００７】
【図１】実施の形態１にかかるデータ処理装置のブロック図である。
【図２】実施の形態１にかかる画像処理装置のブロック図である。
【図３】実施の形態１にかかるロードプロセッサのブロック図である。
【図４】実施の形態１にかかるメモリアドレス生成部のブロック図である。
【図５】実施の形態１にかかるバッファ回路のブロック図である。
【図６】実施の形態１にかかるピクセル処理プロセッサのブロック図である。
【図７】実施の形態１にかかるロードプロセッサからバッファ回路へのデータ書き込みを行う場合のロードプロセッサの処理手順を示すフローチャートである。
【図８】実施の形態１にかかるピクセル処理プロセッサがバッファ回路からデータ読み込みを行う場合のピクセル処理プロセッサの処理手順を示すフローチャートである。
【図９】実施の形態１にかかる画像処理装置における画像処理の一例を示す概略図である。
【図１０】図９に示した画像処理を行う場合の実施の形態１にかかる画像処理装置の動作を示すタイミングチャートである。
【図１１】実施の形態１にかかる画像処理装置における画像処理の別の例を示す概略図である。
【図１２】図１１に示した画像処理を行う場合の実施の形態１にかかる画像処理装置の動作を示すタイミングチャートである。
【図１３】第１の比較例にかかる画像処理装置のブロック図である。
【図１４】第２の比較例にかかる画像処理装置のブロック図である。
【図１５】第３の比較例にかかる画像処理装置のブロック図である。
【図１６】実施の形態２にかかる画像処理装置のブロック図である。
【図１７】実施の形態３にかかる画像処理装置のブロック図である。
【図１８】実施の形態４にかかる画像処理装置のブロック図である。
【図１９】実施の形態５にかかる画像処理装置のブロック図である。
【図２０】実施の形態６にかかる画像処理装置のブロック図である。
【発明を実施するための形態】
【０００８】
＜実施の形態１＞
以下、図面を参照しつつ、実施の形態について説明する。なお、図面は簡略的なものであるから、この図面の記載を根拠として実施の形態の技術的範囲を狭く解釈してはならない。また、同一の要素には、同一の符号を付し、重複する説明は省略する。
【０００９】
以下の実施の形態においては便宜上その必要があるときは、複数のセクションまたは実施の形態に分割して説明するが、特に明示した場合を除き、それらはお互いに無関係なものではなく、一方は他方の一部または全部の変形例、応用例、詳細説明、補足説明等の関係にある。また、以下の実施の形態において、要素の数等（個数、数値、量、範囲等を含む）に言及する場合、特に明示した場合および原理的に明らかに特定の数に限定される場合等を除き、その特定の数に限定されるものではなく、特定の数以上でも以下でもよい。
【００１０】
また、以下の実施の形態において、その構成要素（動作ステップ等も含む）は、特に明示した場合および原理的に明らかに必須であると考えられる場合等を除き、必ずしも必須のものではない。同様に、以下の実施の形態において、構成要素等の形状、位置関係等に言及するときは、特に明示した場合および原理的に明らかにそうでないと考えられる場合等を除き、実質的にその形状等に近似または類似するもの等を含むものとする。このことは、上記数等（個数、数値、量、範囲等を含む）についても同様である。
【００１１】
さらに、説明の明確化のため、以下の記載及び図面は、適宜、省略、及び簡略化がなされている。また、様々な処理を行う機能ブロックとして図面に記載される各要素は、ハードウェア的には、ＣＰＵ、メモリ、その他の回路で構成することができ、ソフトウェア的には、メモリにロードされたプログラムなどによって実現される。したがって、これらの機能ブロックがハードウェアのみ、ソフトウェアのみ、またはそれらの組み合わせによっていろいろな形で実現できることは当業者には理解されるところであり、いずれかに限定されるものではない。なお、各図面において、同一の要素には同一の符号が付されており、必要に応じて重複説明は省略されている。
【００１２】
また、上述したプログラムは、様々なタイプの非一時的なコンピュータ可読媒体（ｎｏｎ−ｔｒａｎｓｉｔｏｒｙ  ｃｏｍｐｕｔｅｒ  ｒｅａｄａｂｌｅ  ｍｅｄｉｕｍ）を用いて格納され、コンピュータに供給することができる。非一時的なコンピュータ可読媒体は、様々なタイプの実体のある記録媒体（ｔａｎｇｉｂｌｅ  ｓｔｏｒａｇｅ  ｍｅｄｉｕｍ）を含む。非一時的なコンピュータ可読媒体の例は、磁気記録媒体（例えばフレキシブルディスク、磁気テープ、ハードディスクドライブ）、光磁気記録媒体（例えば光磁気ディスク）、ＣＤ−ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）ＣＤ−Ｒ、ＣＤ−Ｒ／Ｗ、半導体メモリ（例えば、マスクＲＯＭ、ＰＲＯＭ（Ｐｒｏｇｒａｍｍａｂｌｅ  ＲＯＭ）、ＥＰＲＯＭ（Ｅｒａｓａｂｌｅ  ＰＲＯＭ）、フラッシュＲＯＭ、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ））を含む。また、プログラムは、様々なタイプの一時的なコンピュータ可読媒体（ｔｒａｎｓｉｔｏｒｙ  ｃｏｍｐｕｔｅｒ  ｒｅａｄａｂｌｅ  ｍｅｄｉｕｍ）によってコンピュータに供給されてもよい。一時的なコンピュータ可読媒体の例は、電気信号、光信号、及び電磁波を含む。一時的なコンピュータ可読媒体は、電線及び光ファイバ等の有線通信路、又は無線通信路を介して、プログラムをコンピュータに供給できる。
【００１３】
＜実施の形態１にかかる画像処理装置が搭載される半導体装置の説明＞
まず、実施の形態１にかかる画像処理装置は、当該機能を有する単一の半導体装置として構成されていても良く、他の機能回路と共に１つ半導体装置として構成されても良い。そこで、実施の形態１にかかる画像処理装置が他の機能回路と共に１つの半導体装置として構成されている例について説明する。
【００１４】
図１に実施の形態１にかかる半導体装置のブロック図を示す。図１に示す例では、半導体装置１０と記憶部（例えば、メインメモリ１１）とによりデータ処理装置が構築される。半導体装置１０は、実施の形態１にかかる画像処理装置を含むものである。半導体装置１０は、汎用演算部２０、入力インタフェース２１、出力インタフェース２２、メモリインタフェース２３、キャッシュメモリ２４、画像処理演算部２５を有する。
【００１５】
汎用演算部２０は、演算コア３１、３２、キャッシュ３３を有する。汎用演算部２０は、演算コアにおいてプログラムを実施することで、例えば、メインメモリ１１に蓄積された画像データの解析、或いは、他の機器の制御等を行う。キャッシュ３３は、演算コア３１、演算コア３２で行われる演算で利用される一時記憶装置である。
【００１６】
入力インタフェース２１は、外部に接続されるカメラ、センサ等の入力装置からの信号を受信し、メインメモリ１１等に蓄積する。出力インタフェース２２は、外部に接続される他の装置に制御信号を送出する。メモリインタフェース２３は、外部に接続されるメインメモリ１１の入出力インタフェースである。キャッシュメモリ２４は、画像処理演算部２５の処理で利用される一時記憶装置である。
【００１７】
画像処理演算部２５は、実施の形態１にかかる画像処理装置において画像処理を行うブロックである。画像処理演算部２５は、ロードプロセッサ４１、バッファ回路４２、ピクセル処理プロセッサ４３を有する。以下では、この画像処理演算部２５を含む画像処理装置について説明する。
【００１８】
なお、画像処理装置は、このように他の機能ブロックと共に半導体装置１０に搭載されることで、画像処理以外の処理を高速に処理することができる。
【００１９】
＜実施の形態１にかかる画像処理装置１の構成例＞
図２に実施の形態１にかかる画像処理装置１のブロック図を示す。図２に示すように、実施の形態１にかかる画像処理装置１は、図１の画像処理演算部２５及びメインメモリ１１により構成することができる。なお、実装の際には、キャッシュメモリ２４、メモリインタフェース２３等の他の回路が必要になることがあるが、これらは実施の形態１にかかる画像処理装置１において行われる処理のうち付随的な処理を提供するものであり、本質的な動作に関係するものではないため、ここでは説明を省略する。
【００２０】
図２に示すように、画像処理演算部２５は、第１のプロセッサ（例えば、ロードプロセッサ４１）、バッファ回路４２、第２のプロセッサ（例えば、ピクセル処理プロセッサ４３）を有する。また、メインメモリ１１には、第１のプログラム（例えば、ロードプログラム）、第２のプログラム（例えば、ピクセル処理プログラム）、画像データが含まれる。
【００２１】
ロードプロセッサ４１は、ロードプログラムにより指定された方式に従って記憶部から画像データを読み出す。ここで、ロードプロセッサ４１は、画像データを画素データ単位で読み出す。また、ロードプロセッサ４１が読み出す画素データ単位には、少なくとも１画素の画素データが含まれる。また、ロードプロセッサ４１は、メインメモリ１１からロードプログラムを読み出して、読み出したロードプログラムを実行する。
【００２２】
バッファ回路４２は、ロードプロセッサ４１が読み出した画素データを保持する。また、バッファ回路４２は、ピクセル処理プロセッサ４３からのリード要求に従って保持している画素データをピクセル処理プロセッサ４３に出力する。なお、詳しくは後述するが、ピクセル処理プロセッサ４３は、画素データと共に当該画素データに対応する座標情報をロードプロセッサ４１からピクセル処理プロセッサ４３に伝達する。
【００２３】
ピクセル処理プロセッサ４３は、バッファ回路４２から画素データを読み出し、ピクセル処理プログラムにより指定された方式に従って画素データを処理し、処理後の画素データをメインメモリ１１に書き戻す。つまり、ピクセル処理プロセッサ４３は、ロードプロセッサ４１が画素データを読み出したメインメモリ１１に対して処理後の画素データを書き戻す。
【００２４】
続いて、ロードプロセッサ４１、バッファ回路４２、ピクセル処理プロセッサ４３について更に詳細に説明する。
【００２５】
＜ロードプロセッサ４１の説明＞
まず、図３に実施の形態１にかかるロードプロセッサ４１のブロック図を示す。図３に示すように、ロードプロセッサ４１は、座標生成部５０、レジスタ群５４、演算器群５５、ロードユニット５６を有する。
【００２６】
（座標生成部５０の説明）
座標生成部５０は、読み出し対象となる画素データの座標情報を生成する。より具体的には、座標生成部５０は、アクセスモード設定部５１、モード対応座標生成部５２１〜５２ｍ（ｍはモード対応座標生成部の個数を示す整数）を有する。アクセスモード設定部５１は、アクセスモードを設定するモード設定値を出力する。モード対応座標生成部５２１〜５２ｍは、アクセスモードに対応して設けられ、それぞれがアクセスモードのいずれか１つに対応した座標情報を生成する。セレクタ６３は、モード設定値に基づきモード対応座標生成部５２１〜５２ｍが出力した座標情報のいずれか１つを選択して出力する。
【００２７】
（アクセスモードの説明）
ここで、アクセスモードについて説明する。ロードプロセッサ４１は、アクセスモードに基づき画素データの読み出し規則を切り替える。例えば、ロードプロセッサ４１が第１のアクセスモードから第４のアクセスモードとして以下の（１）式〜（４）式に基づく規則を有している場合について説明する。なお、（１）式〜（４）式におけるｘ、ｙはそれぞれ画像データのｘ座標とｙ座標である。
（ｘ、ｙ）←（ｓｘ＋ｔｘ、ｓｙ＋ｔｙ）・・・（１）
（ｘ、ｙ）←（ｓｘ＋ｄｘ１＊ｔｘ＋ｄｘ２、ｓｙ＋ｄｙ１＊ｔｙ＋ｄｙ２）・・・（２）
（ｘ、ｙ）←（ｌｉｓｔＸ［ｔ］、ｌｉｓｔＹ［ｔ］）・・・（３）
（ｘ、ｙ）←（０、０）・・・（４）
【００２８】
（１）式は、第１のアクセスモードの読み出し規則である。第１のアクセスモードでは、矩形領域に含まれる画素データを１画素毎に読み出す。なお、（１）式のｓｘ、ｓｙは、画像データへのアクセスを開始する座標値である。ｔｘ、ｔｙは、二重ループのループ変数であって、それぞれ０〜ｌｘ−１、０〜ｌｙ−１の値を取り得る。すなわち、ｔｘ及びｔｙは０が開始値である。そして、ｔｘは、１つ画素データ単位のロード処理毎に値がインクリメントされ、値がｌｘ１に達した時点で０に戻る。また、ｔｘがｌｘ−１から０に戻ったことに応じてｔｙがインクリメントされる。そして、ｔｘ及びｔｙのインクリメント処理はｔｙがｌｘ−１に達するまで繰り返される。
【００２９】
（２）式は、第２のアクセスモードの読み出し規則である。第２のアクセスモードでは、矩形領域に含まれる画素データを１画素毎に読み出す。（２）式におけるｓｘ、ｔｘ、ｓｙ、ｔｙに関する処理は（１）式と同じである。一方、（２）式では、ｓｘ、ｔｘ、ｓｙ、ｔｙに加えてｄｘ１、ｄｘ２、ｄｙ１、ｄｙ２を有する。ｄｘ１、ｄｘ２、ｄｙ１、ｄｙ２矩形の傾きを示す変数である。なお、ｄｘ１、ｄｘ２、ｄｙ１、ｄｙ２をｄｘ１＝２、ｄｘ２＝０、ｄｙ１＝１、ｄｙ２＝０と設定すれば、画像上の画素を間引いた状態の座標値を出力する事が出来る。
【００３０】
（３）式は、第３のアクセスモードの読み出し規則である。第３のアクセスモードでは、ユーザーが指定した座標配列に従って任意の順序で画素データを読み出す。ｌｉｓｔＸ［ｔ］、ｌｉｓｔＹ［ｔ］は、ユーザーが与える座標配列である。
【００３１】
（４）式は、第４のアクセスモードの読み出し規則である。第４のアクセスモードでは、常に（０、０）が出力されると言う意味である。画像情報に従ってアクセス先を変える場合などに使用する。
【００３２】
（レジスタ群の説明）
レジスタ群５４は、演算器群５５及びロードユニット５６で利用されるデータを格納する複数のレジスタを有する。より具体的には、レジスタ群５４は、座標レジスタ５４１、画像指定レジスタ５４２、汎用レジスタ５４３、プログラムカウンタ５４４を有する。座標レジスタ５４１は、座標生成部５０から与えられる座標情報を保持する。座標レジスタ５４１に格納された座標情報は演算器群５５及びロードユニット５６で利用される。また、座標レジスタ５４１に格納された座標情報は、バッファ回路４２に座標情報ＡＤとして出力される。画像指定レジスタ５４２は、処理対象の画像番号を指定する画像指定値を保持する。汎用レジスタ５４３は、任意のデータを保持する。プログラムカウンタ５４４は、ロードプロセッサ４１で実行されているプログラム中の命令の番号を示すプログラムカウント値を保持する。なお、座標生成部５０、座標レジスタ５４１及び画像指定レジスタ５４２は複数が実装されていても良い。座標生成部５０、座標レジスタ５４１及び画像指定レジスタ５４２を複数個実装することで複数の画像にアクセスする場合等において異なるアクセス方法を用いて複数の画像データにアクセスを実施することができる。
【００３３】
（演算器群５５及びロードユニット５６の説明）
演算器群５５は、ロードプログラムによって指定された命令に従ってレジスタ群５４に配置された値を用い、四則演算、分岐命令などの演算を行う。ロードユニット５６は、メインメモリ１１に格納されている画像データから画素データを読み出す。このロードユニット５６は、ロードプログラムによって指定された画素データをロードする。また、ロードユニット５６がメインメモリ１１から読み出した画素データは、例えば、汎用レジスタ５４３を介してバッファ回路４２に画素データＰＤとして出力される。座標レジスタの値は後述する座標バッファに自動で送信されるようにして良いし、ユーザーが命令などで明示的に送信しても良いが、本実施の形態では、座標レジスタの更新時に自動で送信されるものとして扱う。また、ロードした画素データは後述するデータバッファの番地を指定するなどして書き込む。
【００３４】
さらに、ロードユニット５６は、座標情報に基づきメモリアクセスアドレスＡＤＤを生成するメモリアドレス生成部５７を有する。メモリアドレス生成部５７を備えることで、画素データの座標情報に基づき具体的なメモリアクセスアドレスＡＤＤを生成することができる。
【００３５】
（ロードプログラムのロード処理に関するプログラム記述の説明）
ここで、ロードプログラムのロード処理に関するプログラム記述について説明する。ロードプログラムにおけるデータのロードの記述としては、例えば、座標レジスタ５４１に設定された座標情報からの相対座標（ａ、ｂ）を指定して画素データを取得するものが考えられる。座標レジスタ５４１に格納された座標情報からの相対座標で読み出す画素データを指定する事で、例えばメモリアクセスアドレスで読み出す画素データを指定したり、絶対座標で読み出す画素データを指定したりする場合に比べてプログラムを簡易に作成することができる。以下に、相対座標を用いて読み出す画素データを指定する例を示す。
ＬＤＰ    Ｒ＃            ・・・命令１
ＬＤＲ    Ｒ＃、ａ、ｂ    ・・・命令２
ＬＤＰ命令及びＬＤＲ命令は命令コードである。Ｒ＃はオペランドであり、＃番目の汎用レジスタを示す。ＬＤＰ命令は、画像指定レジスタ５４２に設定された画像メモリの中から、座標レジスタ５４１に設定された座標値を読み込む命令である。このＬＤＰ命令によれば、画像指定レジスタ５４２に１が格納され、座標レジスタ５４１に（ｘ、ｙ）が格納されていた場合、画像１の（ｘ、ｙ）の画素データを汎用レジスタ＃に読み出すことができる。ＬＤＲ命令は、相対座標（ａ、ｂ）を用いて画像データにアクセスする命令である。ＬＤＲ命令によれば、画像指定レジスタ５４２に１が格納され、座標レジスタ５４１に（ｘ、ｙ）が格納されていた場合、画像１の座標（ｘ＋ａ、ｙ＋ｂ）の画素データを汎用レジスタ＃に読み出すことができる。
【００３６】
このように、相対座標で指定された座標からデータを読み込むためには、座標情報をメモリアクセスアドレスへ変換する機構が必要である。そこで、ロードプロセッサ４１では、メモリアドレス生成部５７を用いて座標情報からメモリアクセスアドレスＡＤＤを生成する。ここで、メモリアドレス生成部５７のブロック図を図４に示す。
【００３７】
（メモリアドレス生成部５７の説明）
図４に示すように、メモリアドレス生成部５７は、ストライド設定レジスタ６０１〜６０Ｎ（Ｎは対応する画像データの種類の数を示す整数）、ベースアドレス設定レジスタ６１１〜６１Ｎ、セレクタ６２、セレクタ６３、乗算器６４、加算器６５、６６、メモリアドレスレジスタ６７を有する。
【００３８】
ストライド設定レジスタ６０１〜６０Ｎには、予め各画像番号に対応した画像データのバイト幅を示すストライド値が格納される。ベースアドレス設定レジスタ６１１〜６１Ｎには、画像が格納されている先頭のベースアドレスが格納される。
【００３９】
セレクタ６２は、画像指定レジスタ５４２に格納されている画像番号に応じてストライド設定レジスタ６０１〜６０Ｎのいずれか１つを選択し、選択したストライド設定レジスタに格納されているストライド値を出力する。セレクタ６３は、画像指定レジスタ５４２に格納されている画像番号に応じてベースアドレス設定レジスタ６１１〜６１Ｎのいずれか１つを選択し、選択したベースアドレス設定レジスタに格納されているベースアドレスを出力する。
【００４０】
乗算器６４は、読み出し対象の画素データのＹ座標の値とストライド値とを乗算した値を出力する。加算器６５は、乗算器６４が出力した乗算値に読み出し対象の画素データのＸ座標の値を加算した値を出力する。加算器６６は、加算器６５が出力した加算値にベースアドレスの値を加算した値を出力し、メモリアドレスレジスタ６７に格納する。メモリアドレスレジスタ６７に格納された値は、メモリアクセスアドレスＡＤＤとして出力される。
【００４１】
ここで、座標情報をメモリアクセスアドレスＡＤＤに変換する手順について具体例を用いて説明する。ここでは例として、座標レジスタ５４１に格納された座標情報（ｘ、ｙ）に対して相対座標が（ａ、ｂ）となる画素データに対応するメモリアクセスアドレスＡＤＤを生成する手順を説明する。また、以下の説明では、ストライド値をＳ、ベースアドレスをＢとして説明する。
【００４２】
この場合、ロードプログラム上で、画素データの座標が（ｘ＋ａ、ｙ＋ｂ）と算出される。そのため、乗算器６４出力値は、Ｓ＊（ｙ＋ｂ）となる。そして、加算器６５の出力は、Ｓ＊（ｙ＋ｂ）＋（ｘ＋ａ）となる。さらに、加算器６６の出力は、Ｓ＊（ｙ＋ｂ）＋（ｘ＋ａ）＋Ｂとなる。つまり、最終的なメモリアクセスアドレスＡＤＤは、Ｓ＊（ｙ＋ｂ）＋（ｘ＋ａ）＋Ｂとなる。
【００４３】
なお、画素あたりのバイト数が１でない場合、ａを逓倍して与えるか、バイト／画素で算出される第１の値を画像毎に設定して画素データの座標情報として与えられたｘ＋ａをその第１の値で逓倍する、等の処理が可能な構成をメモリアドレス生成部５７に追加すれば良い。
【００４４】
＜バッファ回路４２の説明＞
続いて、バッファ回路４２について詳細に説明する。図５にバッファ回路４２のブロック図を示す。バッファ回路は、ライトポインタ生成部７１、リードポインタ生成部７２、バッファ分割数指定部７３、バッファメモリ（例えば、データバッファ７４）、座標バッファ７５、ロックフラグレジスタ７６、セレクタＳＥＬ１〜ＳＥＬ４を有する。
【００４５】
データバッファ７４は、画素データＰＤを一時的に記憶する。座標バッファ７５は、画像データと共にロードプロセッサ４１から出力される座標情報ＡＤを一時的に記憶する。ロックフラグレジスタ７６は、データバッファ７４の書き込み許可状態を示すロックフラグを格納する。そして、ロードプロセッサ４１は、画素データＰＤをデータバッファ７４に書き込むと共にロックフラグレジスタを書き込み禁止状態とし、ピクセル処理プロセッサ４３は、画素データＰＤをデータバッファ７４から読み出すと共にロックフラグレジスタを書き込み許可状態とする。
【００４６】
ここで、図５に示す例では、データバッファ７４と座標バッファ７５とは、複数のバッファメモリに分割されている。また、ロックフラグレジスタ７６は、データバッファ７４と座標バッファ７５との分割数と同じ数のロックフラグを少なくとも保持する。そして、バッファ回路４２では、複数のバッファメモリを利用するために、ライトポインタ生成部７１、リードポインタ生成部７２、バッファ分割数指定部７３を有する。このバッファメモリの記憶領域の分割数は、バッファ分割数指定部７３によって設定される。なお、図５では、分割数をＫで示した。
【００４７】
ライトポインタ生成部７１は、複数のデータバッファ７４及び複数の座標バッファ７５のうち書き込み対象となるデータバッファ７４及び座標バッファ７５を示すライトポインタを出力する。セレクタＳＥＬ１は、ライトポインタで示されたデータバッファ７４に画素データＰＤを与える。セレクタＳＥＬ２は、ライトポインタで示された座標バッファ７５に座標情報ＡＤを与える。
【００４８】
リードポインタ生成部７２は、複数のデータバッファ７４及び複数の座標バッファ７５のうち読み出し対象となるデータバッファ７４及び座標バッファ７５を示すリードポインタを出力する。セレクタＳＥＬ３は、リードポインタで示されたデータバッファ７４から画素データＰＤを読み出してピクセル処理プロセッサ４３に与える。セレクタＳＥＬ４は、リードポインタで示された座標バッファ７５から座標情報ＡＤ読み出してピクセル処理プロセッサ４３に与える。
【００４９】
そして、ロードプロセッサ４１は、ライトポインタが示すデータバッファ７４への画素データＰＤの書き込み時に、リードポインタが示すデータバッファ７４に対応するロックフラグレジスタ７６を書き込み禁止状態とすると共にライトポインタの値を増加させる。また、座標バッファ７５には、データバッファ７４への画素データＰＤの書き込み時に座標情報ＡＤが書き込まれる。ピクセル処理プロセッサ４３は、リードポインタが示すデータバッファ７４からの画素データＰＤの読み出し時に、リードポインタが示すデータバッファ７４に対応するロックフラグレジスタ７６を書き込み許可状態とすると共にリードポインタの値を増加さる。また、ピクセル処理プロセッサ４３は、データバッファ７４からの画素データＰＤの読み出し時に座標バッファ７５から座標情報ＡＤを読み出す。
【００５０】
なお、ロックフラグはＯＮ状態であれば書き込み禁止状態であり、ＯＦＦ状態であれば書き込み許可状態である。また、ロックフラグがＯＮ状態のときは、読み出し許可状態であり、ロックフラグがＯＦＦ状態の時は読み出し禁止状態である。
【００５１】
＜ピクセル処理プロセッサ４３の説明＞
続いて、ピクセル処理プロセッサ４３の詳細について説明する。図６にピクセル処理プロセッサ４３のブロック図を示す。図６に示すように、ピクセル処理プロセッサ４３は、レジスタ群８１、演算器群８２、ロードストアユニット８３を有する。
【００５２】
（レジスタ群８１の説明）
レジスタ群８１は、演算器群８２及びロードストアユニット８３で利用されるデータを格納する複数のレジスタを有する。より具体的には、レジスタ群８１は、座標レジスタ８１１、画像指定レジスタ８１２、汎用レジスタ８１３、プログラムカウンタ８１４を有する。座標レジスタ８１１は、バッファ回路４２の座標バッファ７５から読み出した座標情報ＡＤを保持する。座標レジスタ８１１１に格納された座標情報は演算器群８２及びロードストアユニット８３で利用される。画像指定レジスタ８１２は、処理対象の画像番号を指定する画像指定値を保持する。汎用レジスタ８１３は、画素データＰＤを含む任意のデータを保持する。プログラムカウンタ８１４は、ピクセル処理プロセッサ４３で実行されているプログラム中の命令の番号を示すプログラムカウント値を保持する。なお、座標レジスタ８１１及び画像指定レジスタ８１２は複数が実装されていても良い。座標レジスタ８１１及び画像指定レジスタ８１２を複数個実装することで複数の画像にアクセスする場合等において異なるアクセス方法を用いて複数の画像データにアクセスを実施することができる。
【００５３】
（演算器群８２及びロードストアユニット８３の説明）
演算器群８２は、ピクセル処理プログラムによって指定された命令に従ってレジスタ群８１に配置された値を用い、積和演算、ヒストグラム処理、大小判定、分岐命令などの演算を行う。演算器群８２における具体的な処理は、ピクセル処理プログラムにより指定される。ロードストアユニット８３は、メインメモリ１１からピクセル処理プログラムを読み出すと共に、メインメモリ１１に処理後の画素データを格納する。また、ロードプロセッサ５６と同様に、ロードストアユニット８３も座標レジスタ８１１に格納された値からの相対座標でメモリアクセスアドレスＡＤＤを指定すると効率が良い。そこで、ロードストアユニット８３は、メモリアドレス生成部５７と同様の機構を有するメモリアドレス生成部８４を有する。
【００５４】
ピクセル処理プロセッサ４３は、座標情報ＡＤをロードプロセッサ４１から受け継ぐことにより、メインメモリ１１のいずれの箇所に自身が処理したデータをストアすればよいかが分かる。これは画像処理が通常、入力画像の座標情報ＡＤが分かれば出力画像の座標が分かる性質を利用している。但し、ヒストグラム処理などは処理結果によって出力先のアドレスが決定されるためこの限りではない。
【００５５】
＜バッファ回路４３に対するアクセスの説明＞
ここで、ロードプロセッサ４１、バッファ回路４２及びピクセル処理プロセッサ４３の処理関係を説明する。まず、図７にバッファ回路４２への画素データの書き込みを行う場合のロードプロセッサ４１の動作手順を示すフローチャートを示す。
【００５６】
図７に示すように、ロードプロセッサ４１は、バッファ回路４２に対する動作を開始する場合、まず、ロックフラグがＯＦＦ状態であるか否かを確認する（ステップＳ１）。このステップＳ１においてロックフラグがＯＦＦ状態であった場合（ステップＳ１のＮＯの枝）、バッファ回路４２に対する書き込み処理は行わない。一方、ステップＳ１においてロックフラグがＯＮ状態であった場合（ステップＳ１のＹＥＳの枝）、ロードプロセッサ４１はロードプログラムを起動する（ステップＳ２）。次いで、ロードプロセッサ４１は、ロードした画素データＰＤと座標情報ＡＤをバッファ回路４２に送信する（ステップＳ３）。次いで、ロードプロセッサ４１は、ロックフラグをＯＦＦ状態からＯＮ状態に書き換える（ステップＳ４）。また、ロードプロセッサ４１はライトポインタを増加させる（ステップＳ５）。そして、ロードプロセッサ４１は、ステップＳ１〜Ｓ５の処理が完了すると、処理状態をステップＳ１に戻す。
【００５７】
図８にバッファ回路４２から画素データの読み出しを行う場合のピクセル処理プロセッサ４３の動作手順を示すフローチャートを示す。図８に示すように、ピクセル処理プロセッサ４３は、バッファ回路４２に対する動作を開始する場合、まず、ロックフラグがＯＮ状態であるか否かを確認する（ステップＳ１１）。このステップＳ１１においてロックフラグがＯＮ状態であった場合（ステップＳ１１のＮＯの枝）、バッファ回路４２に対する読み出し処理は行わない。一方、ステップＳ１１においてロックフラグがＯＦＦ状態であった場合（ステップＳ１１のＹＥＳの枝）、ピクセル処理プロセッサ４３はピクセル処理処理プログラムを起動する（ステップＳ１２）。次いで、ピクセル処理プロセッサ４３は、画素データＰＤと座標情報ＡＤとをバッファ回路４２から受信する（ステップＳ１３）。次いで、ピクセル処理プロセッサ４３は、ロックフラグをＯＮ状態からＯＦＦ状態に書き換える（ステップＳ１４）。また、ピクセル処理プロセッサ４３はリードポインタを増加させる（ステップＳ１５）。そして、ピクセル処理プロセッサ４３は、ステップＳ１１〜Ｓ１５の処理が完了すると、処理状態をステップＳ１１に戻す。
【００５８】
＜画像処理装置の動作の説明＞
続いて、実施の形態１にかかる画像処理装置１の動作について説明する。以下では、２つの動作例を挙げて、実施の形態１にかかる画像処理装置１の動作について説明する。そこで、実施の形態１にかかる画像処理装置１の第１の動作例の処理の内容を示す概略図を図９に示す。図９に示すように、第１の動作例では、第１の画像から３画素単位で画素データを読み出し、何らかの処理を加えた後に画素データを第２の画像に書き込む。
【００５９】
ここで、何らかの処理とは、例えば、色空間変換などが考えられる。ＲＧＢ色空間から輝度値Ｙを生成する処理は例えば（５）式で実現される。このような処理をデータ加工と呼び、ピクセル処理プログラム処理の内容が記述される。
Ｙ＝０．２９９Ｒ＋０．５８７Ｇ＋０．１１４Ｂ  ・・・（５）
【００６０】
次いで、図９に示した処理を行う場合の実施の形態１にかかる画像処理装置１の動作を示すタイミングチャートを図１０に示す。まず、画像処理装置１が図９に示したような動作を行う場合、ロードプロセッサ４１で実行されるロードプログラムは、アクセスモードを（２）式に基づき画素データの読み出し座標情報を生成する第２のアクセスモードとする。そして、ロードプログラムは、ｓｘ＝０、ｓｙ＝０、ｄｘ１＝３、ｄｙ１＝１、ｄｘ２＝０、ｄｙ２＝０、ｌｘ＝９、ｌｙ＝２とする。これにより、ロードプロセッサ４１は、ｘ方向に３画素ずつ飛ぶ座標情報が生成される。
【００６１】
また、図１０に示す第１の動作例では、バッファ分割数指定部７３に設定される値は２とする。すなわち、データバッファ７４及び座標バッファ７５は２分割される。ライトポインタ及びリードポインタは、それぞれ１番目のバッファをさす場合は０、２番目のバッファをさす場合は１を示す。ライトポインタ及びリードポインタの値は、値が１の状態でインクリメントされた場合は０に戻る。すなわち、ライトポインタ及びリードポインタは、インクリメントされる毎に０と１とを交互にとる。なお，ロードプロセッサ４１の画像指定レジスタ５１２には、画像番号として読み出し元の画像の番号である１が設定され、ピクセル処理プロセッサ４３の画像指定レジスタ８１２には、画像番号として書き込み先の画像の番号である２が設定される。
【００６２】
図１０に示すように、実施の形態１にかかる画像処理装置１において、ロードプロセッサ４１においてロードプログラムを起動する毎に１画素データ単位を読み込む。このとき、ロードプロセッサ４１は、ｘ座標が３つずつ増加する座標にある画素データ単位（図９に示した例ではデータＡ０〜Ａ２）を読み込む。
【００６３】
そして、ロードプロセッサ４１は、ライトポインタが０の時は、１番目のデータバッファ７４及び座標バッファ７５に読み込んだ画像データ及び当該画像データの座標情報を書き込む。また、ロードプロセッサ４１は、ライトポインタが１の時は、２番目のデータバッファ７４及び座標バッファ７５に読み込んだ画像データ及び当該画像データの座標情報を書き込む。ロードプロセッサ４１は、書き込み処理を行う毎にライトポインタを１つインクリメントするため、データＡ０及びＡ２は、１番目のデータバッファ７４及び座標バッファ７５に書き込まれ、データＡ１は２番目のデータバッファ７４及び座標バッファ７５に書き込まれる。また、ロードプロセッサ４１は、画素データをデータバッファ７４に書き込む毎にロックフラグをＯＦＦ状態からＯＮ状態に遷移させる。
【００６４】
ピクセル処理プロセッサ４３は、リードポインタが０の時は、１番目のデータバッファ７４及び座標バッファ７５から画像データ及び当該画像データの座標情報を読み出す。また、ピクセル処理プロセッサ４３は、ライトポインタが１の時は、２番目のデータバッファ７４及び座標バッファ７５から画像データ及び当該画像データの座標情報を読み出す。ピクセル処理プロセッサ４３は、読み出し処理を行う毎にリードポインタを１つインクリメントするため、データＡ０〜Ａ２が順次読み出される。また、ピクセル処理プロセッサ４３は、画素データを読み出す毎に読み出し対象のデータバッファ７４に対応付けられたロックフラグをＯＮ状態からＯＦＦ状態に遷移させる。
【００６５】
そして、ピクセル処理プロセッサ４３は、読み出したデータＡ０〜Ａ２に対して画像処理を施してデータＢ０〜Ｂ２を生成する。そして、ピクセル処理プロセッサ４３は、データＢ０〜Ｂ２をデータＡ０〜Ａ２の座標情報に対応する第２の画像の座標に書き込む。
【００６６】
続いて、第２の動作例について説明する。そこで、実施の形態１にかかる画像処理装置１の第２の動作例の処理の内容を示す概略図を図１１に示す。図１１に示すように、第２の動作例では、第１の画像の画素データを１画素ずつ読み出し、読み出した画素データの値が０であれば何もせず、画素データの値が１であれば、第２の画像の同じ座標の画素とその左右の画素の合計３つの画素データを読み出す。そして、第２の動作例では、第２の画像から読み出した画素データに対して画像処理（例えば平均値処理）を施して、第３の画像において第１の画像で値が１と判断された画素の座標に対応する座標に処理後の画像データを書き込む。つまり、第２の動作例では、フラグ情報を持った第１の画像とそれに対応した第２の画像が存在し、フラグ情報が１であれば、所定の処理を行うし、フラグ情報が０であれば、何もしないという処理である。図１１に示した例では、座標（２、０）と（１、１）にフラグが立っている。そのため、第２の画像の座標（２、０）を中心とする３画素のデータがデータＡ０として読み出され、第２の画像の座標（１、１）を中心とする３画素のデータがデータＡ１として読み出される。また、第３の画像の座標（２、０）にはデータＡ０を加工したデータＢ０が書き込まれ、第３の画像の座標（１、１）にはデータＡ１を加工したデータＢ１が書き込まれる。
【００６７】
図１２に、図１１に示した第２の動作例の動作を行う場合の実施の形態１にかかる画像処理装置１の動作を示すタイミングチャートを示す。この第２の動作例では、ロードプロセッサ４１は、（１）式で示される第１のアクセスモードに基づき全画素スキャンを行う。（１）式のパラメータは、ｓｘ＝１、ｓｙ＝０、ｌｘ＝３、ｌｙ＝２である。また、バッファ分割指定数Ｋは２とする。また、ロードプロセッサ４１の起動回数ｔは０から５が与えられるため、スキップスキャンの座標生成方法に従って座標レジスタ５４１に与えられる座標情報は（１，０）、（２，０）、（３，０）、（１，１）、（２，１）、（３，１）が順次与えられる。
【００６８】
図１２に示すように、第２の動作例では、ロードプロセッサ４１は、値が１となる第１の画像の画素データが読み出されたことに応じて第２の画像の対応する座標のデータを含むデータＡ０、Ａ１を読み出す。そして、ロードプロセッサ４１は、データＡ０、Ａ１をライトポインタで示されたデータバッファ７５に格納する。また、ロードプロセッサ４１は、データＡ０及びＡ１に対応する座標情報をライトポインタで示された座標バッファ７５に格納する。
【００６９】
そして、ピクセル処理プロセッサ４３は、ロックフラグがＯＮ状態となったことに応じてリードポインタが示すデータバッファ７４からデータを読み出すと共に座標バッファ７５から座標情報を読み出す。その後、ピクセル処理プロセッサ４３は、読み出したデータＡ０、Ａ１に対して加工を施してデータＢ０、Ｂ１を生成する。また、ピクセル処理プロセッサ４３は、生成したデータＢ０、Ｂ１をデータＡ０、Ａ１と共に取得した座標情報で示される第３の画像の座標に書き込む。
【００７０】
＜実施の形態１にかかる画像処理装置１の効果＞
上記説明より、実施の形態１にかかる画像処理装置１では、メインメモリ１１から画素データを読み込むロードプロセッサ４１と画素データに対して画像処理を施して、処理後の画素データをメインメモリ１１に書き戻すピクセル処理プロセッサ４３とを別々に設ける。また、ロードプロセッサ４１をロードプログラムに基づき動作させ、ピクセル処理プロセッサ４３をピクセル処理プログラムに基づき動作させる。これにより、実施の形態１にかかる画像処理装置１は、処理の柔軟性を高めながら、回路規模を小さくすることができる。
【００７１】
より具体的には、実施の形態１にかかる画像処理装置１は、ロード処理に特化したロードプロセッサ４１と、画像処理とストア処理に特化したピクセル処理プロセッサ４３とを別々に設けることで回路規模を小さくすることができる。また、ロードプロセッサ４１とをロードプログラムに基づき動作させることでメモリアクセスの柔軟性を高めることができる。また、ピクセル処理プロセッサ４３をピクセル処理プログラムで動作させることで画像処理の柔軟性を高めることができる。
【００７２】
また、実施の形態１にかかる画像処理装置１は、ロードプロセッサ４１とピクセル処理プロセッサ４３とを並列して動作させることができるため、高い処理能力を実現することができる。さらに、画像処理装置１では、ロードプロセッサ４１とピクセル処理プロセッサ４３とのデータ転送をバッファ回路４２を介して行うため、ロードプロセッサ４１の処理とピクセル処理プロセッサ４３の処理との独立性を高めることができる。これにより、画像処理装置１は、さらに高い処理能力を実現することができる。
【００７３】
（比較例）
ここで、上記効果をさらに説明するために、画像処理に利用される画像処理装置における構成及び課題について説明する。ここで、上記効果をさらに説明するために、本発明者らが検討した比較例について説明する。図１３〜図１５に比較例の画像処理装置のブロック図を示す。
【００７４】
図１３に示す画像処理装置１０１は、汎用的な演算を実行可能な演算部１１０と、プログラム及び画像データを格納するメインメモリ１１１を有する。この画像処理装置１０１は、メインメモリ１１１に格納されたプログラムに基づき演算部１１０を動作させる。また、演算部１１０は、プログラムに従って画像データを処理する。
【００７５】
この画像処理装置１０１は、プログラムに基づき様々な画像処理を実行可能であるが、汎用性を維持するために回路規模が大きくなる問題がある。また、画像処理装置１０１では、演算部１１０がプログラムの実行とデータの読み書きを行わなければならないためデータのスループット量が低下して処理性能が不足する問題がある。
【００７６】
図１４に示す画像処理装置１０２は、画像処理演算部１２０とメインメモリ１２１とを有する。画像処理演算部１２０は、アドレスプロセッサ１２２、ラインメモリ１２３、画像処理プロセッサ１２４を有する。また、メインメモリ１２１上には画像データが格納される。
【００７７】
画像処理装置１０２は、アドレスプロセッサ１２２が規定の方式でアドレスを生成してラインメモリ１２３にデータをロードし、画像処理プロセッサ１２４がデータを処理する。この画像処理装置１０２では、各ブロックが固定された機能に特化して処理を行うため、小さな回路面積で高い処理能力を実現することができる。しかしながら、画像処理装置１０２では、各ブロックの機能が固定化されているため、処理の柔軟性が低い問題がある。この柔軟性を持たせた場合、回路規模が大きくなり、さらに複数の機能を実現するために必要な回路等による処理遅延が生じる問題がある。
【００７８】
図１５に示す画像処理装置１０３は、画像処理演算部１３０とメインメモリ１３１とを有する。画像処理演算部１３０は、バーテックスプロセッサ１３２、ピクセル処理プロセッサ１３３を有する。また、メインメモリ１３１には、バーテックスプログラム、ピクセル処理プログラム及び画像データが格納される。
【００７９】
画像処理装置１０３は、バーテックスプロセッサが画像データ中の読み出し範囲を演算するバーテックス処理により決定し、ピクセル処理プロセッサが画像データの読み書き処理及び画像処理を行う。この画像処理装置１０３は、バーテックスプロセッサ１３２とピクセル処理プロセッサとをそれぞれの処理に特化したハードウェアとして構成することで回路規模が小さい。しかしながら、画像処理装置１０３は、画像認識処理に不必要なバーテックス処理が必要であり、処理に無駄があるため画像認識処理等を行う場合に処理能力が不足する問題がある。また、バーテックスプロセッサ１３２とピクセル処理プロセッサとを一体で形成すると回路規模が増加する問題がある。
【００８０】
上記のように、比較例にかかる画像処理装置では、回路規模、処理能力、処理の柔軟性のいずれかで課題が生じる。しかしながら、実施の形態１にかかる画像処理装置１を用いることで、回路規模、処理能力、処理の柔軟性のいずれの問題も解決することができる。
【００８１】
＜実施の形態２＞
実施の形態２では、実施の形態１にかかる画像処理装置１の変形例について説明する。そこで、実施の形態２にかかる画像処理装置２のブロック図を図１６に示す。図１６に示すように、実施の形態２にかかる画像処理装置２は、実施の形態１にかかる画像処理装置１のロードユニット５６及びロードストアユニット８３に内蔵されるメモリアドレス生成部を共通化してメモリアドレス生成部９１を構成したものである。そのため、実施の形態２では、ロードユニット５６を有さないロードプロセッサ４１としてロードプロセッサ４４を示し、メモリアドレス生成部８４を有さないピクセル処理プロセッサ４３としてピクセル処理プロセッサ４５を示した。
【００８２】
図１６に示す例では、メモリアドレス生成部９１は、画像処理演算部２５の外部であって、ロードプロセッサ４４が画像データにアクセスする経路と、ピクセル処理プロセッサ４５が画像データにアクセスする経路とを含む位置に設けた。
【００８３】
このように、共通する機能を共通化して設けることで、実施の形態２にかかる画像処理装置２は回路規模を実施の形態１にかかる画像処理装置１よりも小さくすることができる。
【００８４】
＜実施の形態３＞
実施の形態３では、実施の形態１にかかる画像処理装置１の変形例について説明する。そこで、実施の形態３にかかる画像処理装置３のブロック図を図１７に示す。図１７に示すように、実施の形態３にかかる画像処理装置３は、実施の形態１にかかる画像処理装置１の画像処理演算部２５と、メインメモリ１１との間に中間メモリとして機能するキャッシュ９２を設けたものである。
【００８５】
このように、画像処理演算部２５とメインメモリ１１との間にキャッシュ９２を設けることで、アクセス頻度の高いデータに関するアクセス時間を短縮することができる。
【００８６】
＜実施の形態４＞
実施の形態４では、実施の形態１にかかる画像処理装置１の変形例について説明する。そこで、実施の形態４にかかる画像処理装置４のブロック図を図１８に示す。図１８に示すように、画像処理装置４は、実施の形態１にかかる画像処理演算部２５に同期処理部４６を追加した画像処理演算部２６を有する。
【００８７】
同期処理部４６は、ロードプロセッサ４１とピクセル処理プロセッサ４３との間に設けられ、一方のプロセッサからの指示に基づき他方のプロセッサの処理を停止させるウェイト信号と、一方のプロセッサの処理結果に応じた処理を他方のプロセッサに指示する同期信号と、を出力する。なお、同期処理部４６は、ウェイト信号と同期信号とのいずれか一方のみを出力する構成としても良い。
【００８８】
この同期処理部４６を設けることで、例えば、ピクセル処理プロセッサ４３の処理結果を受けて、ロードプロセッサ４１が画素データのロード位置を変えるような処理を行うことができる。このような処理を行う場合、ロードプロセッサ４１がピクセル処理プロセッサ４３の動作を待つ必要があるため、同期処理部４６がウェイト信号をロードプロセッサ４１に出力する。また、ロードプロセッサ４１がピクセル処理プロセッサ４３の処理結果を参照することを指示するために同期信号が用いられる。
【００８９】
実装上は、バッファメモリ（例えば、データバッファ７４及び座標バッファ７５）の分割数Ｋを１とし、ユーザーの権限でロードプロセッサ４１がピクセル処理プロセッサ４３に画素データを送る領域と、ピクセル処理プロセッサ４３がロードプロセッサ４１に画素データを送る領域と、を切り分ける。次にロックフラグがＯＦＦ状態の場合にはロードプロセッサ４１に読み込みと書き込みを許可し、ロックフラグがＯＮ状態の場合にはピクセル処理プロセッサ４３に読み込みと書き込みを許可する。このように、同期処理部４６を設けることで逐次的な動作が可能になる。
【００９０】
上記説明より、実施の形態４にかかる画像処理装置４を用いることで、実施の形態１にかかる画像処理装置１よりも高い柔軟性を有する処理を実現することができる。また、バッファ回路４２に対するロードプロセッサ４１及びピクセル処理プロセッサ４３のアクセスを双方向にすることで、メインメモリ１１を介することなく双方の画素データの参照が可能になるため、画像処理装置４は画像処理装置１を用いて同様な処理を行う場合に比べてより処理能力を高めることができる。
【００９１】
＜実施の形態５＞
実施の形態５では、実施の形態１にかかる画像処理装置１の変形例について説明する。そこで、実施の形態５にかかる画像処理装置５のブロック図を図１９に示す。図１９に示すように、実施の形態５にかかる画像処理装置５は、それぞれがロードプロセッサ４１、バッファ回路４２、ピクセル処理プロセッサ４３を含む複数の画像処理演算部（例えば、画像処理演算部２５１〜２５ｍ）を有する。
【００９２】
また、実施の形態５にかかる画像処理装置５では、画像処理演算部２５１〜２５ｍのロードプロセッサ４１の座標生成部５０を共通化して座標生成部９３として設けた。また、図１９では、ロードプロセッサ４１から座標生成部５０を除いたロードプロセッサの符号を４７とした。つまり、座標生成部９３は、画像処理演算部２５１〜２５ｍに対して１つ設けられ、画像処理演算部２５１〜２５ｍのロードプロセッサ４７に座標情報をそれぞれ与える。また、座標生成部９３が出力する画素情報は、互いに関連性を有する画像データの座標情報であっても良いし、互いに独立した座標情報であっても良い。
【００９３】
上記説明より、実施の形態５にかかる画像処理装置５は、複数の画像処理演算部を有することで、並列処理による処理の高速化を実現できる。この場合、座標生成部９３は、互いに関連性を有する画像データの座標情報を出力することが好ましい。また、画像処理装置５は、複数の画像処理演算部を独立して動作させることで複数の画像データを同時に処理することができる。この場合、座標生成部９３は、互いに独立した座標情報を出力することが好ましい。なお、実施の形態５にかかる画像処理装置５においても、実施の形態４にかかる同期処理部４６を各画像処理演算部に設けることは可能である。
【００９４】
＜実施の形態６＞
実施の形態６では、実施の形態１のロードプロセッサ４１及びピクセル処理プロセッサ４３をそれぞれ複数設けた画像処理装置６について説明する。そこで、実施の形態６にかかる画像処理装置６のブロック図を図２０に示す。
【００９５】
図２０に示すように、実施の形態６にかかる画像処理装置６は、Ｑ個のロードプロセッサ４７と、Ｒ個のピクセル処理プロセッサ４３を有する。ロードプロセッサ４７は、ロードプロセッサ４１から座標生成部５０を除いたものである。そのため、実施の形態６にかかる画像処理装置６においても、複数のロードプロセッサ４７に対して１つ座標生成部９３が設けられている。また、画像処理装置６は、ライトキュー４８及びリードキュー４９が追加されている。
【００９６】
ライトキュー４８は、書き込み可能状態となったバッファ回路４２の記憶領域を示すバッファ番号を順次蓄積し、蓄積した順にバッファ番号を複数のロードプロセッサ４７に提示する。リードキュー４９は、読み出し可能状態となったバッファ回路４２の記憶領域を示すバッファ番号を順次蓄積し、蓄積した順にバッファ番号を複数のピクセル処理プロセッサ４３に提示する。ライトキュー４８及びリードキュー４９は、ＦＩＦＯ（First In First Out）構成を有するメモリである。このライトキュー４８及びリードキュー４９を設けることで、複数のプロセッサ間のリード／ライトが競合することを防ぐことができる。
【００９７】
実施の形態６にかかる画像処理装置６では、ロードプロセッサ４７は、ライトキュー４８により示されたバッファ番号に対応するデータバッファ７４に画素データＰＤを書き込む。このとき、バッファ回路４２では、画素データＰＤが書き込まれたデータバッファ７４に対応するロックフラグを書き込み禁止状態とする。また、ライトキュー４８では、参照されたバッファ番号を廃棄する。
【００９８】
また、実施の形態６にかかる画像処理装置６では、ピクセル処理プロセッサ４３は、リードキュー４９により示されたバッファ番号に対応するデータバッファ７４から画素データＰＤを読み出す。このとき、バッファ回路４２では、画素データＰＤが読み出されたデータバッファ７４に対応するロックフラグを読み出し禁止状態とする。また、リードキュー４９では、参照されたバッファ番号を廃棄する。
【００９９】
上記説明より、実施の形態６にかかる画像処理装置６は、ロードプロセッサ４７とピクセル処理プロセッサ４３とをそれぞれ複数有する。また、ロードプロセッサ４７の数とピクセル処理プロセッサ４３の数はそれぞれ独立に設定することができる。これにより、例えば、画像処理に比べロード処理は短時間で処理が完了するような場合は、ピクセル処理プロセッサ４３の数に比べロードプロセッサ４７の数を減らす等のハードウェアリソースの最適化を実施することができる。これにより、実施の形態６にかかる画像処理装置６は、処理能力を高めながらと回路面積を削減することができる。
【０１００】
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は既に述べた実施の形態に限定されるものではなく、その要旨を逸脱しない範囲において種々の変更が可能であることはいうまでもない。
【符号の説明】
【０１０１】
１〜６  画像処理装置
１０  半導体装置
１１  メインメモリ
２０  汎用演算部
２１  入力インタフェース
２２  出力インタフェース
２３  メモリインタフェース
２４  キャッシュメモリ
２５、２６、２５１〜２５ｍ  画像処理演算部
３１、３２  演算コア
３３  キャッシュ
４１、４４、４７  ロードプロセッサ
４２  バッファ回路
４３、４５  ピクセル処理プロセッサ
４６  同期処理部
４８  ライトキュー
４９  リードキュー
５０、９３  座標生成部
５１  アクセスモード設定部
５２１〜５２ｍ  モード対応座標生成部
５３  セレクタ
５４  レジスタ群
５４１  座標レジスタ
５４２  画像指定レジスタ
５４３  汎用レジスタ
５４４  プログラムカウンタ
５５  演算器群
５６  ロードユニット
５７  メモリアドレス生成部
６０１  ストライド設定レジスタ
６１１  ベースアドレス設定レジスタ
６２、６３  セレクタ
６４  乗算器
６５、６６  加算器
６６  加算器
６７  メモリアドレスレジスタ
７１  ライトポインタ生成部
７２  リードポインタ生成部
７３  バッファ分割数指定部
７４  データバッファ
７５  座標バッファ
７６  ロックフラグレジスタ
８１  レジスタ群
８１１  座標レジスタ
８１２  画像指定レジスタ
８１３  汎用レジスタ
８１４  プログラムカウンタ
８２  演算器群
８３  ロードストアユニット
８４  メモリアドレス生成部
９１  メモリアドレス生成部
９２  キャッシュ
９３  座標生成部
ＳＥＬ１〜ＳＥＬ４  セレクタ
【図１】
2014149691.tif 000003
【図２】
2014149691.tif 000004
【図３】
2014149691.tif 000005
【図４】
2014149691.tif 000006
【図５】
2014149691.tif 000007
【図６】
2014149691.tif 000008
【図７】
2014149691.tif 000009
【図８】
2014149691.tif 000010
【図９】
2014149691.tif 000011
【図１０】
2014149691.tif 000012
【図１１】
2014149691.tif 000013
【図１２】
2014149691.tif 000014
【図１３】
2014149691.tif 000015
【図１４】
2014149691.tif 000016
【図１５】
2014149691.tif 000017
【図１６】
2014149691.tif 000018
【図１７】
2014149691.tif 000019
【図１８】
2014149691.tif 000020
【図１９】
2014149691.tif 000021
【図２０】
2014149691.tif 000022