(57)【要約】【課題】クロスバーが不要で処理の高速化を図れる画像処理装置を提供する。【解決手段】複数の読み出しポートを有するメモリ１３２と、演算器ＰＯＰＥ０〜ＰＯＰＥ７と、第１のシフトチェーンＬＳＦＴＣと第２のシフトチェーンＵＳＦＴＣとを含み、第１のシフトチェーンＬＳＦＴＣはデータを次段に出力する複数の第１のシフトレジスタＬＳＲＧ０〜７と、対応する読み出しポートからの処理データまたは前段シフトレジスタの出力データのいずれかを選択して自段のシフトレジスタに入力させる第１のセレクタＬＳＬＣ０〜７とを含み、第２のシフトチェーンＵＳＦＴＣはデータを次段および対応する演算器に出力する複数の第２のシフトレジスタＵＳＲＧ０〜７と、対応する読み出しポートからの処理データまたは前段シフトレジスタの出力データのいずれかを選択して自段のシフトレジスタに入力させる第２のセレクタＵＳＬＣ０〜７とを含む。【選択図】　　　図２１
2004013873.tif 000002
【特許請求の範囲】
【請求項１】
複数の処理データを共有して並列処理を行う画像処理装置であって、
少なくとも上記処理データを記憶し、複数の読み出しポートを有するメモリと、
演算用パラメータおよび上記メモリに記憶されている処理データに基づいて所定の演算処理を行う複数の演算器と、
上記メモリの複数の読み出しポートから読み出された各処理データを一方向に順次にシフトさせながら上記複数の演算器に供給するデータシフトチェーンと、を有し、
上記データシフトチェーンは、
上記メモリの複数の読み出しポートおよび複数の演算器の入力段に対応するように設けられ、クロックに同期して保持したデータを次段および対応する演算器に出力する複数のシフトレジスタと、
上記複数のシフトレジスタの入力側に、制御信号に応じて、対応するメモリの読み出しポートから読み出された処理データまたは前段のシフトレジスタの出力データのうちのいずれかを選択して自段のシフトレジスタに入力させる複数のセレクタと、を含む
画像処理装置。
【請求項２】
上記データシフトチェーンのクリティカルパスには、クロックに同期してデータを一時的に保持する少なくとも一つの間隙レジスタが配置されている
請求項１記載の画像処理装置。
【請求項３】
上記データシフトチェーンへのデータロードのタイミングに応じて上記間隙レジスタの数を調整する間隙調整部を有する
請求項２記載の画像処理装置。
【請求項４】
上記複数の演算器にデータを供給する各シフトレジスタに有効なデータがあるか否かを検知し、有効なデータが無く有効な演算が行えない場には有効なデータがないシフトレジスタの出力データが供給される演算器が無効なデータに基づいて演算を行なわないように制御する手段を有する
請求項２記載の画像処理装置。
【請求項５】
シフトの初段となる上記シフトレジスタの入力側にセレクタが配置されず、メモリの読み出しポートが直接接続されている
請求項１記載の画像処理装置。
【請求項６】
上記並列処理は、ピクセルレベルでの並列処理である
請求項１記載の画像処理装置。
【請求項７】
複数の処理データを共有して並列処理を行う画像処理装置であって、
少なくとも上記処理データを記憶し、複数の読み出しポートを有するメモリと、
演算用パラメータおよび上記メモリに記憶されている処理データに基づいて所定の演算処理を行う複数の演算器と、
上記メモリの複数の読み出しポートから読み出された各処理データを一方向に順次にシフトさせながら上記複数の演算器に供給するデータシフトチェーンと、を有し、
上記データシフトチェーンは、第１のシフトチェーンと第２のシフトチェーンとを含み、
上記第１のシフトチェーンは、
上記メモリの複数の読み出しポートおよび複数の演算器の入力段に対応するように設けられ、クロックに同期して保持したデータを次段に出力する複数の第１のシフトレジスタと、
上記複数のシフトレジスタの入力側に、制御信号に応じて、対応するメモリの読み出しポートから読み出された処理データまたは前段のシフトレジスタの出力データのうちのいずれかを選択して自段のシフトレジスタに入力させる複数の第１のセレクタと、を含み、
上記第２のシフトチェーンは、
上記メモリの複数の読み出しポートおよび複数の演算器の入力段に対応するように設けられ、クロックに同期して保持したデータを次段および対応する演算器に出力する複数の第２のシフトレジスタと、
上記複数のシフトレジスタの入力側に、制御信号に応じて、対応するメモリの読み出しポートから読み出された処理データまたは前段のシフトレジスタの出力データのうちのいずれかを選択して自段のシフトレジスタに入力させる複数の第２のセレクタと、を含み、
上記第１のシフトチェーンのシフトの最終段の第１のシフトレジスタの出力と上記第２のシフトチェーンのシフトの初段の第２のセレクタの一方の入力とが接続されている
画像処理装置。
【請求項８】
上記データシフトチェーンのクリティカルパスには、クロックに同期してデータを一時的に保持する少なくとも一つの間隙レジスタが配置されている
請求項７記載の画像処理装置。
【請求項９】
上記データシフトチェーンへのデータロードのタイミングに応じて上記間隙レジスタの数を調整する間隙調整部を有する
請求項８記載の画像処理装置。
【請求項１０】
上記複数の演算器にデータを供給する各シフトレジスタに有効なデータがあるか否かを検知し、有効なデータが無く有効な演算が行えない場には有効なデータがないシフトレジスタの出力データが供給される演算器が無効なデータに基づいて演算を行なわないように制御する制御手段を有する
請求項８記載の画像処理装置。
【請求項１１】
上記複数の演算器は複数の演算ブロックに区分けされ、上記間隙レジスタは上記第１のシフトチェーンの所定の演算ブロック間、上記第２のシフトチェーンの所定の演算ブロック間、および上記第１のシフトチェーンと第２のシフトチェーンとの接続経路間に設けられ、
データを上記データシフトチェーンにロードするに際し、間隙レジスタにより区分けされた複数の領域のうち終端側領域のデータを上記第１のシフトチェーンの対応する第１のシフトレジスタにロードさせ、第１のシフトチェーンの後ろ側から順次、隙間を埋めるようにデータをシフトし全てのシフトレジスタおよび間隙レジスタにデータをロードさせた後、上記第２のシフトチェーンにデータをロードさせる制御手段、を有する
請求項８記載の画像処理装置。
【請求項１２】
上記制御手段は、上記第１のシフトチェーンにデータをロードさせる際、終端側領域のデータを対応する第１のシフトレジスタにロードさせた後、当該終端側ブロックの各後続ブロックに対応する第１のシフトレジスタには、上記終端側ブロックとの間に配置された間隙レジスタの数のクロック後にデータをロードさせる
請求項１１記載の画像処理装置。
【請求項１３】
上記第１のシフトチェーンにシフトの初段となる上記第１のシフトレジスタの入力側にセレクタが配置されず、メモリの読み出しポートが直接接続されている
請求項７記載の画像処理装置。
【請求項１４】
上記並列処理は、ピクセルレベルでの並列処理である
請求項７記載の画像処理装置。
【請求項１５】
複数のモジュールが処理データを共有して並列処理を行う画像処理装置であって、
グローバルモジュールと複数のローカルモジュールとを含み、
上記グローバルモジュールは、
上記複数のローカルモジュールが並列に接続され、ローカルモジュールからリクエストを受けると、上記リクエストに応じた処理データを当該リクエストを出したローカルモジュールに出力し、
上記複数のローカルモジュールは、
少なくとも上記処理データを記憶し、複数の読み出しポートを有するメモリと、
演算用パラメータおよび上記メモリに記憶されている処理データに基づいて所定の演算処理を行う複数の演算器と、
上記メモリの複数の読み出しポートから読み出された各処理データを一方向に順次にシフトさせながら上記複数の演算器に供給するデータシフトチェーンと、を有し、
上記データシフトチェーンは、
上記メモリの複数の読み出しポートおよび複数の演算器の入力段に対応するように設けられ、クロックに同期して保持したデータを次段および対応する演算器に出力する複数のシフトレジスタと、
上記複数のシフトレジスタの入力側に、制御信号に応じて、対応するメモリの読み出しポートから読み出された処理データまたは前段のシフトレジスタの出力データのうちのいずれかを選択して自段のシフトレジスタに入力させる複数のセレクタと、を含む
画像処理装置。
【請求項１６】
複数のモジュールが処理データを共有して並列処理を行う画像処理装置であって、
グローバルモジュールと複数のローカルモジュールとを含み、
上記グローバルモジュールは、
上記複数のローカルモジュールが並列に接続され、ローカルモジュールからリクエストを受けると、上記リクエストに応じた処理データを当該リクエストを出したローカルモジュールに出力し、
上記複数のローカルモジュールは、
少なくとも上記処理データを記憶し、複数の読み出しポートを有するメモリと、
演算用パラメータおよび上記メモリに記憶されている処理データに基づいて所定の演算処理を行う複数の演算器と、
上記メモリの複数の読み出しポートから読み出された各処理データを一方向に順次にシフトさせながら上記複数の演算器に供給するデータシフトチェーンと、を有し、
上記データシフトチェーンは、第１のシフトチェーンと第２のシフトチェーンとを含み、
上記第１のシフトチェーンは、
上記メモリの複数の読み出しポートおよび複数の演算器の入力段に対応するように設けられ、クロックに同期して保持したデータを次段に出力する複数の第１のシフトレジスタと、
上記複数のシフトレジスタの入力側に、制御信号に応じて、対応するメモリの読み出しポートから読み出された処理データまたは前段のシフトレジスタの出力データのうちのいずれかを選択して自段のシフトレジスタに入力させる複数の第１のセレクタと、を含み、
上記第２のシフトチェーンは、
上記メモリの複数の読み出しポートおよび複数の演算器の入力段に対応するように設けられ、クロックに同期して保持したデータを次段および対応する演算器に出力する複数の第２のシフトレジスタと、
上記複数のシフトレジスタの入力側に、制御信号に応じて、対応するメモリの読み出しポートから読み出された処理データまたは前段のシフトレジスタの出力データのうちのいずれかを選択して自段のシフトレジスタに入力させる複数の第２のセレクタと、を含み、
上記第１のシフトチェーンのシフトの最終段の第１のシフトレジスタの出力と上記第２のシフトチェーンのシフトの初段の第２のセレクタの一方の入力とが接続されている
画像処理装置。
【請求項１７】
上記ローカルモジュールのデータシフトチェーンのクリティカルパスには、クロックに同期してデータを一時的に保持する少なくとも一つの間隙レジスタが配置されている
請求項１６記載の画像処理装置。
【請求項１８】
上記データシフトチェーンへのデータロードのタイミングに応じて上記間隙レジスタの数を調整する間隙調整部を有する
請求項１７記載の画像処理装置。
【請求項１９】
上記複数の演算器にデータを供給する各シフトレジスタに有効なデータがあるか否かを検知し、有効なデータが無く有効な演算が行えない場には有効なデータがないシフトレジスタの出力データが供給される演算器が無効なデータに基づいて演算を行なわないように制御する制御手段を有する
請求項１７記載の画像処理装置。
【請求項２０】
上記複数の演算器は複数の演算ブロックに区分けされ、上記間隙レジスタは上記第１のシフトチェーンの所定の演算ブロック間、上記第２のシフトチェーンの所定の演算ブロック間、および上記第１のシフトチェーンと第２のシフトチェーンとの接続経路間に設けられ、
データを上記データシフトチェーンにロードするに際し、間隙レジスタにより区分けされた複数の領域のうち終端側領域のデータを上記第１のシフトチェーンの対応する第１のシフトレジスタにロードさせ、第１のシフトチェーンの後ろ側から順次、隙間を埋めるようにデータをシフトし全てのシフトレジスタおよび間隙レジスタにデータをロードさせた後、上記第２のシフトチェーンにデータをロードさせる制御手段、を有する
請求項１７記載の画像処理装置。
【請求項２１】
上記制御手段は、上記第１のシフトチェーンにデータをロードさせる際、終端側領域のデータを対応する第１のシフトレジスタにロードさせた後、当該終端側ブロックの各後続ブロックに対応する第１のシフトレジスタには、上記終端側ブロックとの間に配置された間隙レジスタの数のクロック後にデータをロードさせる
請求項２０記載の画像処理装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、複数の処理データを共有して並列処理を行う画像処理装置に関するものである。
【０００２】
【従来の技術】
昨今のコンピュータシステムにおける演算速度の向上や描画機能の強化とも相俟って、コンピュータ資源を用いて図形や画像の作成や処理を行う「コンピュータ・グラフィクス（ＣＧ）」技術が盛んに研究・開発され、さらに実用化されている。
【０００３】
たとえば、３次元グラフィクスは、３次元オブジェクトが所定の光源によって照らされたときの光学現象を数学モデルで表現して、このモデルに基づいてオブジェクト表面に陰影や濃淡を付けたり、さらには模様を貼り付けたりして、よりリアルで３次元的な２次元高精細画像を生成するものである。
このようなコンピュータ・グラフィクスは、科学、工学、製造などの開発分野でのＣＡＤ／ＣＡＭ、その他の各種応用分野においてますます盛んに利用されるようになってきている。
【０００４】
３次元グラフィクスは、一般には、フロントエンドとして位置づけられる「ジオメトリ・サブシステム」と、バックエンドとして位置づけられる「ラスタ・サブシステム」とにより構成される。
【０００５】
ジオメトリ・サブシステムとは、ディスプレイ・スクリーン上に表示する３次元オブジェクトの位置や姿勢などの幾何学的な演算処理を行う過程のことである。
ジオメトリ・サブシステムでは、一般にオブジェクトは多数のポリゴンの集合体として扱われ、ポリゴン単位で、「座標変換」、「クリッピング」、「光源計算」などの幾何学的な演算処理が行われる。
【０００６】
一方、ラスタ・サブシステムは、オブジェクトを構成する各ピクセル（ｐｉｘｅｌ）を塗りつぶす過程のことである。
ラスタライズ処理は、たとえばポリゴンの頂点毎に求められた画像パラメータを基にして、ポリゴン内部に含まれるすべてのピクセルの画像パラメータを補間することによって実現される。
ここで言う画像パラメータには、いわゆるＲＧＢ形式などで表される色（描画色）データ、奥行き方向の距離を表すｚ値などがある。
また、最近の高精細な３次元グラフィクス処理では、遠近感を醸し出すためのｆ（ｆｏｇ：霧）や、物体表面の素材感や模様を表現してリアリティを与えるテクスチャｔ（ｔｅｘｔｕｒｅ）なども、画像パラメータの１つとして含まれている。
【０００７】
ここで、ポリゴンの頂点情報からポリゴン内部のピクセルを発生する処理では、よくＤＤＡ（Ｄｉｇｉｔａｌ　Ｄｉｆｆｅｒｅｎｔｉａｌ　Ａｎａｌｙｚｅｒ）と呼ばれる線形補間手法を用いて実行される。
ＤＤＡプロセスでは、頂点情報からポリゴンの辺方向へのデータの傾きを求め、この傾きを用いて辺上のデータを算出した後、続いてラスタ走査方向（Ｘ方向）の傾きを算出し、この傾きから求めたパラメータの変化分を走査の開始点のパラメータ値に加えていくことで、内部のピクセルを発生していく。
【０００８】
従来の３次元グラフィックス用ＬＳＩでは、テクスチャフィルタ用の演算機構を有し、２ピクセル×２ピクセル程度の小領域に対してフィルタリング処理を行うことが可能である。
【０００９】
【発明が解決しようとする課題】
ところで、従来の画像処理装置では、たとえば２ピクセル×２ピクセルを超える大カーネルのフィルタリング処理を行う場合、マルチパスレンダリング技法を応用するなどして実現され得るが、その場合の処理能力は低い。
また、従来のテクスチャ演算機構を流用する画像処理では、１処理ごとに画像データをメモリから読む出す必要があることから、以下に示すような問題が発生し得る。
すなわち、処理能力を上げようとすると、演算機構とメモリ間のバンド幅を上げるために、大規模なクロスバー状の接続回路網を必要とし、回路規模が大幅に増大する。
また、毎サイクルデータをメモリから読み出すために、メモリとしてＤＲＡＭ等を使用すると、読み出しアクセスが集中した場合にページブレークが多発し処理能力が低下する。
【００１０】
今後、ＭＰＥＧ／ＪＰＥＧに代表されるような画像処理や、被写界深度の効果等をもたせたよりリアルな３次元グラフィックス描画を行うためには大規模なフィルタ処理等、２ピクセル×２ピクセルを超える大カーネルでの画像処理の重要度が増すと予想され、それらの処理を効率よく実行する必要が生じてくる。
【００１１】
また、ピクセルレベルでの並列処理の場合、上述したように、粒度が細かい分、並列処理の効率が良いという利点があり、実際のフィルタリングを含む処理としては図１に示すような手順で行われている。
【００１２】
すなわち、ＤＤＡパラメータ、たとえばラスタライゼーション（Ｒａｓｔｅｒｉｚａｔｉｏｎ）に必要な各種データ（Ｚ、テクスチャ座標、カラーなど）の傾き等のＤＤＡパラメータを算出する（ＳＴ１）。
次に、メモリからテクスチャデータを読み出し（ＳＴ２）、サブワード再配置処理を行った後（ＳＴ３）、クロスバー回路により各処理ユニット（演算器）にグローバル分配する（ＳＴ４）。
次に、テクスチャフィルタリング（Ｔｅｘｔｕｒｅ　Ｆｉｌｔｅｒｉｎｇ）を行う（ＳＴ５）。この場合、各処理ユニット（演算器）は、読み出されたテクスチャデータと、（ｕ，ｖ）アドレスは算出時に得た小数部を使って４近傍補間などのフィルタリング処理を行う。
次に、ピクセルレベルの処理（Ｐｅｒ−Ｐｉｘｅｌ　Ｏｐｅｒａｔｉｏｎ）、具体的には、フィルタリング後のテクスチャデータと、ラスタライズ後の各種データを用いて、ピクセル単位の演算を行う（ＳＴ５）。
そして、ピクセルレベルの処理における各種テストをパスしたピクセルデータを、複数のメモリモジュール上のフレームバッファおよびＺバッファに描画する（ＳＴ６）。
【００１３】
ところで、テクスチャリード系のメモリアクセスは、描画系のメモリアクセスとは異なるため、他のモジュールに属すメモリからの読み出しが必要となる。
したがって、テクスチャリード系のメモリアクセスに関しては、上述したようにクロスバー回路のような配線を必要とする。
【００１４】
以下に、図２に示すように、（幅Ｗピクセル×高さＨピクセル）の画像データ（データの２次元配列）の並列処理について説明する。
【００１５】
この並列処理は、たとえば図３（Ａ）に示すように、幅Ｋｘ、高さＫｙの処理サイズの処理領域ＲＧＮ（Ｋｘ×Ｋｙ）に含まれるピクセルに対して処理を行い、一つの演算結果を得る。
その処理を、１ピクセルずつずれた位置で行い、図３（Ｂ）に示すように、各位置毎に演算結果を得る。
具体的には、横方向（ｘ方向）に処理領域ＲＧＮを１ピクセルずつずらした位置に対しても同様の演算を行い、結果を求める。
高さ方向（ｙ方向）にも１ピクセルずつずらした位置に対しても同様の演算を行い、２次元領域全体に対して処理を行う。
なお、連続した２次元領域であれば、図３（Ｂ）に示すように、左上から開始する必要はない。
【００１６】
このような２次元配列の画像データをメモリに格納する場合、たとえば図４に示すように、Ｍ個のメモリＭＲＹ（０）〜ＭＲＹ（Ｍ−１）で、インターリーブして格納される。
ここで、メモリＭＲＹ（ｉ）に格納する横方向のピクセル数をＷｍ（ｉ）とすると、Ｗｍ（０）個の幅のピクセルデータはメモリＭＲＹ（０）に格納され、Ｗｍ（１）個の幅のピクセルデータはメモリＭＲＹ（１）に格納される。同様にして、Ｗｍ（Ｍ−１）個の幅のピクセルデータはメモリＭＲＹ（Ｍ−１）に格納される。
そして、次のＷｍ（０）個の幅のピクセルデータはメモリＭＲＹ（０）に格納され、以後同様に、Ｗｍ（１）個の幅のピクセルデータはメモリＭＲＹ（１）に格納され、Ｗｍ（Ｍ−１）個の幅のピクセルデータはメモリＭＲＹ（Ｍ−１）に格納され、また、メモリＭＲＹ（０）から順に繰り返して格納される。
【００１７】
画像処理装置においては、上述したように、テクスチャリード系のメモリアクセスは、他のメモリモジュールに属すメモリからの読み出しが必要となることから、テクスチャリード系のメモリアクセスに関しては、クロスバー回路により各処理ユニット（演算器）にグローバル分配する必要がある。
【００１８】
図５は、複数の演算器とメモリとの間にクロスバー回路を配置した構成を模式的に示す図である。
【００１９】
図５の例の場合、メモリＭＲＹがｗ個のメモリモジュールＭＪＬ（０）〜ＭＪＬ（ｗ−１）に分割され、これに対してｗ個の演算器ＯＰ（０）〜ＯＰ（ｗ−１）が並列に配置され、ｗ個のメモリモジュールＭＪＬ（０）〜ＭＪＬ（ｗ−１）の入出力ポートｐ（０）〜ｐ（ｗ−１）とｗ個の演算器ＯＰ（０）〜ＯＰ（ｗ−１）との入出力ポート間がクロスバー回路ＸＢＡＲにより接続されている。
【００２０】
このような回路を用いて次式の処理を行う場合を考察する。
【００２１】
【数１】
2004013873.tif 000003
【００２２】
この場合、項数ｎ、メモリに対する演算器数をＷ、メモリ数をＶとすると、最低ＭＩＮ（ｎ−１，Ｗ＊Ｖ）本のバスが必要となる。
これでは、セレクタ等が配置されるノードが大量に必要で、グローバルバスとしてのクロスバー回路が大型化し、また、負荷容量も大きく、配線が長く配線遅延の観点等から処理の高速化の妨げとなるという不利益がある。
【００２３】
本発明は、かかる事情に鑑みてなされたものであり、その目的は、クロスバー回路が不要で、また処理の高速化を図れる画像処理装置を提供することにある。
【００２４】
【課題を解決するための手段】
上記目的を達成するため、本発明の第１の観点は、複数の処理データを共有して並列処理を行う画像処理装置であって、少なくとも上記処理データを記憶し、複数の読み出しポートを有するメモリと、演算用パラメータおよび上記メモリに記憶されている処理データに基づいて所定の演算処理を行う複数の演算器と、上記メモリの複数の読み出しポートから読み出された各処理データを一方向に順次にシフトさせながら上記複数の演算器に供給するデータシフトチェーンと、を有し、上記データシフトチェーンは、上記メモリの複数の読み出しポートおよび複数の演算器の入力段に対応するように設けられ、クロックに同期して保持したデータを次段および対応する演算器に出力する複数のシフトレジスタと、上記複数のシフトレジスタの入力側に、制御信号に応じて、対応するメモリの読み出しポートから読み出された処理データまたは前段のシフトレジスタの出力データのうちのいずれかを選択して自段のシフトレジスタに入力させる複数のセレクタと、を含む。
【００２５】
本発明の第２の観点は、複数の処理データを共有して並列処理を行う画像処理装置であって、少なくとも上記処理データを記憶し、複数の読み出しポートを有するメモリと、演算用パラメータおよび上記メモリに記憶されている処理データに基づいて所定の演算処理を行う複数の演算器と、上記メモリの複数の読み出しポートから読み出された各処理データを一方向に順次にシフトさせながら上記複数の演算器に供給するデータシフトチェーンと、を有し、上記データシフトチェーンは、第１のシフトチェーンと第２のシフトチェーンとを含み、上記第１のシフトチェーンは、上記メモリの複数の読み出しポートおよび複数の演算器の入力段に対応するように設けられ、クロックに同期して保持したデータを次段に出力する複数の第１のシフトレジスタと、上記複数のシフトレジスタの入力側に、制御信号に応じて、対応するメモリの読み出しポートから読み出された処理データまたは前段のシフトレジスタの出力データのうちのいずれかを選択して自段のシフトレジスタに入力させる複数の第１のセレクタと、を含み、上記第２のシフトチェーンは、上記メモリの複数の読み出しポートおよび複数の演算器の入力段に対応するように設けられ、クロックに同期して保持したデータを次段および対応する演算器に出力する複数の第２のシフトレジスタと、上記複数のシフトレジスタの入力側に、制御信号に応じて、対応するメモリの読み出しポートから読み出された処理データまたは前段のシフトレジスタの出力データのうちのいずれかを選択して自段のシフトレジスタに入力させる複数の第２のセレクタと、を含み、上記第１のシフトチェーンのシフトの最終段の第１のシフトレジスタの出力と上記第２のシフトチェーンのシフトの初段の第２のセレクタの一方の入力とが接続されている。
【００２６】
本発明の第３の観点は、複数のモジュールが処理データを共有して並列処理を行う画像処理装置であって、グローバルモジュールと複数のローカルモジュールとを含み、上記グローバルモジュールは、上記複数のローカルモジュールが並列に接続され、ローカルモジュールからリクエストを受けると、上記リクエストに応じた処理データを当該リクエストを出したローカルモジュールに出力し、上記複数のローカルモジュールは、少なくとも上記処理データを記憶し、複数の読み出しポートを有するメモリと、演算用パラメータおよび上記メモリに記憶されている処理データに基づいて所定の演算処理を行う複数の演算器と、上記メモリの複数の読み出しポートから読み出された各処理データを一方向に順次にシフトさせながら上記複数の演算器に供給するデータシフトチェーンと、を有し、上記データシフトチェーンは、上記メモリの複数の読み出しポートおよび複数の演算器の入力段に対応するように設けられ、クロックに同期して保持したデータを次段および対応する演算器に出力する複数のシフトレジスタと、上記複数のシフトレジスタの入力側に、制御信号に応じて、対応するメモリの読み出しポートから読み出された処理データまたは前段のシフトレジスタの出力データのうちのいずれかを選択して自段のシフトレジスタに入力させる複数のセレクタと、を含む。
【００２７】
本発明の第４の観点は、複数のモジュールが処理データを共有して並列処理を行う画像処理装置であって、グローバルモジュールと複数のローカルモジュールとを含み、上記グローバルモジュールは、上記複数のローカルモジュールが並列に接続され、ローカルモジュールからリクエストを受けると、上記リクエストに応じた処理データを当該リクエストを出したローカルモジュールに出力し、上記複数のローカルモジュールは、少なくとも上記処理データを記憶し、複数の読み出しポートを有するメモリと、演算用パラメータおよび上記メモリに記憶されている処理データに基づいて所定の演算処理を行う複数の演算器と、上記メモリの複数の読み出しポートから読み出された各処理データを一方向に順次にシフトさせながら上記複数の演算器に供給するデータシフトチェーンと、を有し、上記データシフトチェーンは、第１のシフトチェーンと第２のシフトチェーンとを含み、上記第１のシフトチェーンは、上記メモリの複数の読み出しポートおよび複数の演算器の入力段に対応するように設けられ、クロックに同期して保持したデータを次段に出力する複数の第１のシフトレジスタと、上記複数のシフトレジスタの入力側に、制御信号に応じて、対応するメモリの読み出しポートから読み出された処理データまたは前段のシフトレジスタの出力データのうちのいずれかを選択して自段のシフトレジスタに入力させる複数の第１のセレクタと、を含み、上記第２のシフトチェーンは、上記メモリの複数の読み出しポートおよび複数の演算器の入力段に対応するように設けられ、クロックに同期して保持したデータを次段および対応する演算器に出力する複数の第２のシフトレジスタと、上記複数のシフトレジスタの入力側に、制御信号に応じて、対応するメモリの読み出しポートから読み出された処理データまたは前段のシフトレジスタの出力データのうちのいずれかを選択して自段のシフトレジスタに入力させる複数の第２のセレクタと、を含み、上記第１のシフトチェーンのシフトの最終段の第１のシフトレジスタの出力と上記第２のシフトチェーンのシフトの初段の第２のセレクタの一方の入力とが接続されている。
【００２８】
本発明では、上記データシフトチェーンのクリティカルパスには、クロックに同期してデータを一時的に保持する少なくとも一つの間隙レジスタが配置されている。
【００２９】
好適には、上記データシフトチェーンへのデータロードのタイミングに応じて上記間隙レジスタの数を調整する間隙調整部を有する。
【００３０】
本発明では、上記複数の演算器にデータを供給する各シフトレジスタに有効なデータがあるか否かを検知し、有効なデータが無く有効な演算が行えない場には有効なデータがないシフトレジスタの出力データが供給される演算器が無効なデータに基づいて演算を行なわないように制御する制御手段を有する。
【００３１】
また、本発明では、上記複数の演算器は複数の演算ブロックに区分けされ、上記間隙レジスタは上記第１のシフトチェーンの所定の演算ブロック間、上記第２のシフトチェーンの所定の演算ブロック間、および上記第１のシフトチェーンと第２のシフトチェーンとの接続経路間に設けられ、データを上記データシフトチェーンにロードするに際し、間隙レジスタにより区分けされた複数の領域のうち終端側領域のデータを上記第１のシフトチェーンの対応する第１のシフトレジスタにロードさせ、第１のシフトチェーンの後ろ側から順次、隙間を埋めるようにデータをシフトし全てのシフトレジスタおよび間隙レジスタにデータをロードさせた後、上記第２のシフトチェーンにデータをロードさせる制御手段、を有する。
【００３２】
好適には、上記制御手段は、上記第１のシフトチェーンにデータをロードさせる際、終端側領域のデータを対応する第１のシフトレジスタにロードさせた後、当該終端側ブロックの各後続ブロックに対応する第１のシフトレジスタには、上記終端側ブロックとの間に配置された間隙レジスタの数のクロック後にデータをロードさせる。
【００３３】
また、本発明では、上記第１のシフトチェーンにシフトの初段となる上記第１のシフトレジスタの入力側にセレクタが配置されず、メモリの読み出しポートが直接接続されている。
【００３４】
また、本発明では、上記並列処理は、ピクセルレベルでの並列処理である。
【００３５】
本発明によれば、たとえばデータシフトチェーンにおいて、メモリの複数の読み出しポートおよび複数の演算器の入力段に対応するように設けられた複数のシフトレジスタにクロックに同期してデータ保持され、さらには順次にシフトされて、選択的に、保持したデータが次段および対応する演算器に出力される。
各演算器では、演算用パラメータおよびデータシフトチェーンの所定段のシフトレジスタから供給された処理データに基づいて所定の演算処理が行われる。
【００３６】
また、本発明によれば、たとえばテクスチャ系の処理に場合には、コントローラにおいて演算用パラメータが生成され、生成されたパラメータはたとえばグローバルモジュールを介してローカルモジュールにブロードキャストされる。
各ローカルモジュールでは、たとえば以下の処理が行われる。
すなわちブロードキャストされたパラメータを受け取ると、その三角形が自分が担当する領域、たとえば４×４ピルセルの矩形領域単位でインターリーブされた領域に属しているか否かが判断される。その結果、属している場合には、各種データ（Ｚ、テクスチャ座標、カラーなど）がラスタライズされる。
次に、ＬＯＤ（Ｌｅｖｅｌ　ｏｆ　Ｄｅｔａｉｌ）計算によるミップマップ（ＭｉｐＭａｐ）レベルの算出や、テクスチャアクセスのための（ｕ，ｖ）アドレス計算が行われる。
そして、次に、テクスチャの読み出しが行われる。
次に、ローカルモジュールでは、読み出されたテクスチャデータと、（ｕ，ｖ）アドレスを算出時に得た小数部を使って４近傍補間などのフィルタリング処理が行われる。
次に、フィルタリング後のテクスチャデータと、ラスタライズ後の各種データを用いて、ピクセル単位の演算が行われる。
そして、ピクセルレベルの処理における各種テストをパスしたピクセルデータは、メモリモジュール、たとえば内蔵ＤＲＡＭメモリ上のフレームバッファおよびＺバッファに書き込まれる。
【００３７】
【発明の実施の形態】
図６は、本発明に係る画像処理装置の一実施形態を示すブロック構成図である。
【００３８】
本実施形態に係る画像処理装置１０は、図６に示すように、ストリームデータコントローラ（ＳＤＣ）１１、グローバルモジュール１２、および複数のローカルモジュール１３−０〜１３−３を有している。
【００３９】
本画像処理装置１０では、ＳＤＣ１１とグローバルモジュール１２とがデータの授受を行い、一つのグローバルモジュール１２に対して複数個ｍ、本実施形態では４個のローカルモジュール１３−０〜１３−３が並列に接続されて、複数のローカルモジュール１３−０〜１３−３で処理データを共有し並列に処理する。
そして、テクスチャリード系に関しては、他のローカルモジュールに対するメモリアクセスを必要とするが、グローバルアクセスバスの形態をとる代わりに、ルータとしての機能を有する一つのグローバルモジュール１２を介したアクセスを行う。
また、グローバルモジュール１２はグローバルキャッシュを有し、各ローカルモジュール１３−０〜１３−３はローカルキャッシュをそれぞれ有する。
すなわち、本画像処理装置１０は、キャッシュの階層として、たとえば４つのローカルモジュール１３−０〜１３−３が共有するグローバルキャッシュと、各ローカルモジュールがローカルに持つローカルキャッシュの２階層を有する。
【００４０】
以下に各構成要素の構成および機能について、図面に関連付けて順を追って説明する。
【００４１】
ＳＤＣ１１は、ＣＰＵや外部メモリとのデータの授受、並びにグローバルモジュール１２とのデータの授受を司るとともに、頂点データに対する演算、各ローカルモジュール１３−０〜１３−３の処理ユニットにおけるラスタライゼーション（Ｒａｓｔｅｒｉｚａｔｉｏｎ）に必要なパラメータの生成等の処理を行う。
【００４２】
ＳＤＣ１１における具体的な処理内容は以下の通りである。また、ＳＤＣ１１の処理手順を図７に示す。
【００４３】
ＳＤＣ１１は、まず、データが入力されると（ＳＴ１）、Ｐｅｒ−Ｖｅｒｔｅｘオペレーションを行う（ＳＴ２）。
この処理においては、３次元座標、法線ベクトル、テクスチャ座標の各頂点データが入力されると、頂点データに対する演算が行われる。代表的な演算としては、物体の変形やスクリーンへの投影などを行う座標変換の演算処理、ライティング（Ｌｉｇｈｔｉｎｇ）の演算処理、クリッピング（Ｃｌｉｐｐｉｎｇ）の演算処理がある。
ここで行われる処理は、いわゆるＶｅｒｔｅｘ　Ｓｈａｄｅｒの実行に相当する。
【００４４】
次に、ＤＤＡ（Ｄｉｇｉｔａｌ　Ｄｉｆｆｅｒｅｎｔｉａｌ　Ａｎａｌｙｚｅｒ）パラメータを計算する（ＳＴ３）。
この処理では、ラスタライゼーションに必要な各種データ（Ｚ、テクスチャ座標、カラーなど）の傾き等のＤＤＡパラメータを算出する。
【００４５】
次に、算出したＤＤＡパラメータをグローバルモジュール１２を介して全ローカルモジュール１３−０〜１３−３にブロードキャストする（ＳＴ４）。
この処理において、ブロードキャストされたパラメータは、キャッシュフィルとは別のチャネルを用いて、グローバルモジュール１２を介して各ローカルモジュール１３−０〜１３−３に渡される。ただし、グローバルキャッシュの内容には影響を与えない。
【００４６】
グローバルモジュール１２は、ルータ機能および全ローカルモジュールで共用するグローバルキャッシュ１２１を有する。
グローバルモジュール１２は、ＳＤＣ１１によるＤＤＡパラメータを並列に接続された全ローカルモジュール１３−０〜１３−３にブロードキャストする。
【００４７】
また、グローバルモジュール１２は、たとえばあるローカルモジュールからローカルキャッシュフィル（Ｌｏｃａｌ　Ｃａｃｈｅ　Ｆｉｌｌ）ＬＣＦのリクエストを受けると、図８に示すように、グローバルキャッシュのエントリーをチェックし（ＳＴ１１）、エントリーがあった場合には（ＳＴ１２）、要求されたブロックデータを読み出し（ＳＴ１３）、読み出したデータをリクエストを送出したローカルモジュールに送出し（ＳＴ１４）、エントリーがなかった場合には（ＳＴ１２）、当該ブロックデータを保持するターゲットのローカルモジュールに対してグローバルキャッシュフィル（Ｇｌｏｂａｌ　Ｃａｃｈｅ　Ｆｉｌｌ）ＧＣＦのリクエストを送り（ＳＴ１５）、その後送られてきたブロックデータでグローバルキャッシュを更新するとともに（ＳＴ１６，ＳＴ１７）、ブロックデータを読み出し（ＳＴ１３）、読み出したデータをローカルキャッシュフィルＬＤＦのリクエストを送ってきたローカルモジュールに対して送出する（ＳＴ１４）。
【００４８】
ローカルモジュール１３−０は、処理ユニット１３１−０、たとえばＤＲＡＭからなるメモリモジュール１３２−０、モジュール固有のローカルキャッシュ１３３−０、およびグローバルモジュール１２とのインターフェースを司るグローバルインターフェース（Ｇｌｏｂａｌ　Ａｃｃｅｓｓ　Ｉｎｔｅｒｆａｃｅ：ＧＡＩＦ））１３４−０を有している。
【００４９】
同様に、ローカルモジュール１３−１は、処理ユニット１３１−１、たとえばＤＲＡＭからなるメモリモジュール１３２−１、モジュール固有のローカルキャッシュ１３３−１、およびグローバルモジュール１２とのインターフェースを司るグローバルインターフェース（ＧＡＩＦ）１３４−１を有している。
ローカルモジュール１３−２は、処理ユニット１３１−２、たとえばＤＲＡＭからなるメモリモジュール１３２−２、モジュール固有のローカルキャッシュ１３３−２、およびグローバルモジュール１２とのインターフェースを司るグローバルインターフェース（ＧＡＩＦ）１３４−２を有している。
ローカルモジュール１３−３は、処理ユニット１３１−３、たとえばＤＲＡＭからなるメモリモジュール１３２−３、モジュール固有のローカルキャッシュ１３３−３、およびグローバルモジュール１２とのインターフェースを司るグローバルインターフェース（ＧＡＩＦ）１３４−３を有している。
【００５０】
各ローカルモジュール１３−０〜１３−３は、メモリモジュール１３２−０〜１３２−３が所定の大きさ、たとえば４×４の矩形領域単位にインターリーブされており、メモリモジュール１３２−０と処理ユニット１３１−０、メモリモジュール１３２−１と処理ユニット１３１−１、メモリモジュール１３２−２と処理ユニット１３１−２、およびメモリモジュール１３２−３と処理ユニット１３１−３は、担当領域は１対１に対応しており、描画系については他のローカルモジュールに対するメモリアクセスが発生しない。
一方、各ローカルモジュール１３−０〜１３−３は、テクスチャリード系に関しては、他のローカルモジュールに対するメモリアクセスを必要とするが、この場合、グローバルモジュール１２を介したアクセスを行う。
【００５１】
各ローカルモジュール１３−０〜１３−３の処理ユニット１３１−０〜１３１−３はそれぞれ、画像処理とグラフィックス処理に特徴的な、いわゆるストリーミングデータ処理を高スループットで実行するストリーミングプロセッサである。
【００５２】
各ローカルモジュール１３−０〜１３−３の処理ユニット１３１−０〜１３１−３は、たとえばそれぞれ以下のグラフィックス処理および画像処理を行う。
【００５３】
まず、処理ユニット１３１−０〜１３１−３のグラフィックス処理の概要を図９および図１０のフローチャートに関連付けて説明する。
【００５４】
処理ユニット１３１（−０〜−３）は、ブロードキャストされたパラメータデータが入力されると（ＳＴ２１）、三角形が自分が担当する領域であるか否かを判断し（ＳＴ２２）、担当領域である場合には、ラスタライゼーションを行う（ＳＴ２３）。
すなわち、ブロードキャストされたパラメータを受け取ると、その三角形が自分が担当する領域、たとえば４×４ピクセルの矩形領域単位でインターリーブされた領域に属しているか否かを判断し、属している場合には、各種データ（Ｚ、テクスチャ座標、カラーなど）をラスタライズする。この場合、生成単位は、１ローカルモジュール当たり１サイクルで２×２ピクセルである。
【００５５】
次に、テクスチャ座標のパースペクティブコレクション（Ｐｅｒｓｐｅｃｔｉｖｅ　Ｃｏｒｒｅｃｔｉｏｎ）を行う（ＳＴ２４）。また、この処理ステージにはＬＯＤ（Ｌｅｖｅｌ　ｏｆ　Ｄｅｔａｉｌ）計算によるミップマップ（ＭｉｐＭａｐ）レベルの算出や、テクスチャアクセスのための（ｕ，ｖ）アドレス計算も含まれる。
【００５６】
次に、テクスチャの読み出しを行う（ＳＴ２５）。
この場合、各ローカルモジュール１３−０〜１３−３の処理ユニット１３１−０〜１３１−３は、図１０に示すように、テクスチャリードの際に、まずは、ローカルキャッシュ１３３−０〜１３３−３のエントリーをチェックし（ＳＴ３１）、エントリーがあった場合には（ＳＴ３２）、必要なテクスチャデータを読み出す（ＳＴ３３）。
必要とするテクスチャ・データがローカルキャッシュ１３３−０〜１３３−３内に無い場合には、各処理ユニット１３１−０〜１３１−３は、グローバルインターフェース１３４−０〜１３４−３を通して、グローバルモジュール１２に対してローカルキャッシュフィルのリクエストを送る（ＳＴ３４）。
そして、グローバルモジュール１２は、要求されたブロックをリクエストを送出したローカルモジュールに返すが、なかった場合には上述したように（図５に関連付けて説明）、当該ブロックを保持するローカルモジュールに対してグローバルキャッシュフィルのリクエストを送る。その後ブロックデータをグローバルキャッシュにフィルするとともに、リクエストを送ってきたローカルモジュールに対してデータを送出する。
グローバルモジュール１２から要求したブロックデータが送られてくると、該当するローカルモジュールは、ローカルキャッシュを更新し（ＳＴ３５，ＳＴ３６）、処理ユニットはブロックデータを読み出す（ＳＴ３３）。
なお、ここでは、最大４テクスチャの同時処理を想定しており、読み出すテクスチャデータの数は、１ピクセルにつき１６テクセルである。
【００５７】
次に、テクスチャフィルタリング（Ｔｅｘｔｕｒｅ　Ｆｉｌｔｅｒｉｎｇ）を行う（ＳＴ２６）。
この場合、処理ユニット１３３−０〜１３３−３は、読み出されたテクスチャデータと、（ｕ，ｖ）アドレスを算出時に得た小数部を使って４近傍補間などのフィルタリング処理を行う。
【００５８】
次に、ピクセルレベルの処理（Ｐｅｒ−Ｐｉｘｅｌ　Ｏｐｅｒａｔｉｏｎ）を行う（ＳＴ２７）。
この処理においては、フィルタリング後のテクスチャデータと、ラスタライズ後の各種データを用いて、ピクセル単位の演算が行われる。ここで行われる処理は、ピクセルレベルでのライティング（Ｐｅｒ−Ｐｉｘｅｌ　Ｌｉｇｈｔｉｎｇ）などいわゆるＰｉｘｅｌ　Ｓｈａｄｅｒに相当する。また、それ以外にも以下の処理が含まれる。
すなわち、アルファテスト、シザリング、Ｚバッファテスト、ステンシルテスト、アルファブレンディング、ロジカルオペレーション、ディザリングの各処理である。
【００５９】
そして、ピクセルレベルの処理における各種テストをパスしたピクセルデータが、メモリモジュール１３２−０〜１３２−３、たとえば内蔵ＤＲＡＭメモリ上のフレームバッファおよびＺバッファに書き込まれる（ＳＴ２８：ＭｅｍｏｒｙＷｒｉｔｅ）。
【００６０】
次に、処理ユニット１３１−０〜１３１−３の画像処理の概要を図１１のフローチャートに関連付けて説明する。
【００６１】
画像処理を実行する前に、メモリモジュール１３２（−０〜−３）に画像データがロードされる。
そして、処理ユニット１３１（−０〜−３）では、画像処理に必要な読み出し（ソース：Ｓｏｕｒｃｅ）アドレスおよび書き込み（デスティネーション：Ｄｅｓｔｉｎａｔｉｏｎ）アドレスの生成に必要なコマンドやデータが入力される（ＳＴ４１）。
そして、処理ユニット１３１（−０〜−３）において、ソースアドレスおよびデスティネーションアドレスが生成される（ＳＴ４２）。
次に、ソース画像がメモリモジュール１３２（−０〜−３）から読み出され、あるいはグローバルモジュール１２から供給され（ＳＴ４３）、たとえばテンプレートマッチング等の所定の画像処理が行われる（ＳＴ４４）。
そして、必要に応じて所定の演算処理が行われ（ＳＴ４５）、その結果がメモリモジュール１３２（−０〜−３）のデスティネーションアドレスで指定された領域に書き込まれる（ＳＴ４６）。
【００６２】
各ローカルモジュール１３−０〜１３−３のローカルキャッシュ１３３−０〜１３３−３は、処理ユニット１３１−０〜１３１−３の処理に必要な描画データやテクスチャデータを格納し、処理ユニット１３１−０〜１３１−３とのデータの授受、並びにメモリモジュール１３２−０〜１３２−３とのデータの授受（書き込み、読み出し）を行う。
【００６３】
図１２は、各ローカルモジュール１３−０〜１３−３のローカルキャッシュ１３３−０〜１３３−３の構成例を示すブロック図である。
【００６４】
ローカルキャッシュ１３３は、図１２に示すように、リードオンリーキャッシュ（ＲＯ＄）１３３１、リードライトキャッシュ（ＲＷ＄）１３３２、リオーダバッファ（Ｒｅｏｒｄｅｒ　Ｂｕｆｆｅｒ：ＲＢ）１３３３、およびメモリコントローラ（ＭＣ）１３３４を含む。
【００６５】
リードオンリーキャッシュ１３３１は、演算処理のソース画像などを読み出すための読み出し専用キャッシュであって、たとえばテクスチャ系データ等の記憶に用いられる。
リードライトキャッシュ１３３２は、たとえばグラフィックス処理におけるリードモディファイライト（Ｒｅａｄ　Ｍｏｄｉｆｙ　Ｗｒｉｔｅ）に代表される読み出しと書き込みの両方を必要とするオペレーションを実行するためのキャッシュであって、たとえば描画系データの記憶に用いられる。
【００６６】
リオーダバッファ１３３３は、いわゆる待ち合わせバッファであり、ローカルキャッシュに必要なデータがない場合、ローカルキャッシュフィルのリクエストを出したときに、グローバルモジュール１２に送られてくるデータの順番が異なる場合があるので、この順番を遵守し、処理ユニット１３１−０〜１３１−３に要求順に戻すようにデータの順番を調整する。
【００６７】
また、図１３は、メモリコントローラ１３３４のテクスチャ系の構成例を示すブロック図である。
このメモリコントローラ１３３４は、図１３に示すように、４つのキャッシュＣＳＨ０〜ＣＳＨ３に対応するキャッシュコントローラ１３３４０〜１３３４３と、各キャッシュコントローラ１３３４０〜１３３４３から出力されるローカルキャッシュフィルリクエストを調停しグローバルインターフェース１３４｛−０〜３｝に出力するアービタ１３３４４と、グローバルインターフェース１３４｛−０〜３｝を介して入力したグローバルキャッシュフィルリクエストを受けて、データ転送の制御を行うメモリインターフェース１３３４５を含む。
【００６８】
また、キャッシュコントローラ１３３４０〜１３３４３は、４つのピクセルＰＸ０〜ＰＸ３それぞれに対応するデータに対して４近傍補間を行う際に必要な各データの２次元アドレスＣＯｕｖ００〜ＣＯｕｖ０３、ＣＯｕｖ１０〜ＣＯｕｖ１３、ＣＯｕｖ２０〜ＣＯｕｖ２３、ＣＯｕｖ３０〜ＣＯｕｖ３３を受けてアドレスの競合をチェックし分配するコンフリクトチェッカＣＣ１０と、コンフリクトチェッカＣＣ１０で分配されたアドレスをチェックしリードオンリーキャッシュ１３３１にアドレスで示されたデータが存在するか否かを判断するタグ回路ＴＡＧ１０と、キューレジスタＱＲ１０を有している。
タグ回路ＴＡＧ１０内は後述するバンクのインターリーブに関するアドレッシングに対応する４つのタグメモリＢＸ１０〜ＢＸ１３を有し、リードオンリーキャッシュ１３３１に記憶されている。
ブロックデータのアドレスタグを保持するコンフリクトチェッカＣＣ１０で分配されたアドレスと上記アドレスタグを比較し、一致したか否かのフラグと前記アドレスをキューレジスタＱＲ１０にセットするとともに、一致しなかった場合には前記アドレスをアービタ１３３４４に送出する。
アービタ１３３４４は、キャッシュコントローラ１３３４０〜１３３４３から送出されるアドレスを受けて調停作業を行い、グローバルインターフェース（ＧＡＩＦ）１３４を介して同時に送出できるリクエストの数に応じてアドレスを選択し、ローカルキャッシュフィルリクエストとしてグローバルインターフェース（ＧＡＩＦ）１３４に出力する。
グローバルインターフェース（ＧＡＩＦ）１３４を介して送出されたローカルキャッシュフィルリクエストに対応してグローバルキャッシュ１２からデータが送られてくると、リオーダバッファ１３３３にセットされる。
キャッシュコントローラ１３３４０〜１３３４３は、キューレジスタＱＲＬ０の先頭にあるフラグをチェックし、一致したことを示すフラグがセットされていた場合には、キューレジスタＱＲＬ０の先頭にあるアドレスに基づいて、リードオンリーキャッシュ１３３１のデータを読み出し、処理ユニット１３１に与える。一方、一致したことを示すフラグがセットされていなかった場合には、対応するデータがリオーダバッファ１３３３にセットされた時点でリオーダバッファ１３３３から読み出し、キューレジスタＱＲＬ０のアドレスに基づいて当該ブロックデータでリードオンリーキャッシュ１３３１を更新するとともに、処理ユニット１３１に出力する。
【００６９】
次に、メモリモジュールとしてのＤＲＡＭと、ローカルキャッシュと、グローバルキャッシュのメモリ容量について説明する。
メモリ容量の関係は、当然のことながらＤＲＡＭ＞グローバルキャッシュ＞ローカルキャッシュであるが、その割合については、アプリケーションに依存する。
キャッシュブロックサイズとしては、キャッシュフィル時に下位階層のメモリから読み出すデータサイズに相当する。
ＤＲＡＭの特性として、ランダムアクセス時には性能が低下するが、同一行（ＲＯＷ）に属するデータの連続アクセスは速いという点をあげることができる。
【００７０】
グローバルキャッシュは、ＤＲＡＭからデータを読み出す関係上、前記連続アクセスを行う方が性能上好ましい。
したがって、キャッシュブロックのサイズを大きく設定する。
たとえば、グローバルキャッシュのキャッシュブロックのサイズはＤＲＡＭマクロの１行分をブロックサイズにすることができる。
【００７１】
一方、ローカルキャッシュの場合には、ブロックサイズを大きくすると、キャッシュに入れても、使われないデータの割合が増えることと、下位階層がグローバルキャッシュでＤＲＡＭでなく連続アクセスに必要性がないことから、ブロックサイズは小さく設定する。
ローカルキャッシュのブロックサイズとしては、メモリインターリーブの矩形領域のサイズに近い値が適当で、本実施形態の場合、４×４ピクセル分、すなわち５１２ビットとする。
【００７２】
次に、テクスチャ圧縮について説明する。
１ピクセルの処理を行うのに複数のテクスチャデータを必要とするので、テクスチャ読み出しバンド幅がボトルネックになる場合が多いが、これを軽減するためテクスチャを圧縮する方法がよく採用される。
圧縮方法には、いろいろあるが、４×４ピクセルのように小さな矩形領域単位で圧縮／伸長できる方法の場合には、グローバルキャッシュには圧縮されたままのデータを置き、ローカルキャッシュには、伸長後のデータを置くことが好ましい。
【００７３】
次に、ローカルモジュール１３−０〜１３−３の処理ユニット１３１−０〜１３１−３の具体的な構成例について説明する。
【００７４】
図１４は、本実施形態に係るローカルモジュールの処理ユニットの具体的な構成例を示すブロック図である。
【００７５】
ローカルモジュール１３（−０〜−３）の処理ユニット１３１（−０〜−３）は、図１４に示すように、ラスタライザ（Ｒａｓｔｅｒｉｚｅｒ：ＲＳＴＲ）１３１１およびコア（Ｃｏｒｅ）１３１２を有している。
これらの構成要素のうち、本アーキテクチャを実現する演算処理部がコア１３１２であり、コア１３１２はラスタライザ１３１１によりアドレスや座標等のグラフィックス処理および画像処理のための各種データが供給される。
【００７６】
ラスタライザ１３１１は、グラフィックス処理の場合には、グローバルモジュール１２からブロードキャストされたパラメータデータを受けて、たとえば三角形が自分が担当する領域であるか否かを判断し、担当領域である場合には、入力した三角形頂点データに基づいてラスタライゼーションを行い、生成したピクセルデータをコア１３１２に供給する。
ラスタライザ１３１１において生成されるピクセルデータには、ウィンドウ座標（Ｘ，Ｙ，Ｚ）、プライマリカラー（Ｐｒｉｍａｒｙ　Ｃｏｌｏｒ：ＰＣ）（Ｒｐ，Ｇｐ，Ｂｐ，Ａｐ）、セカンダリカラー（Ｓｅｃｏｎｄａｒｙ　Ｃｏｌｏｒ：ＳＣ）（Ｒｓ，Ｇｓ，Ｂｓ，Ａｓ）、Ｆｏｇ係数（ｆ）、テクスチャ座標、法線ベクトル、視線ベクトル、ライトベクトル（（Ｖ１ｘ，Ｖ１ｙ，Ｖ１ｚ），（Ｖ２ｘ，Ｖ２ｙ，Ｖ２ｚ））等の各種データが含まれる。
なお、ラスタライザ１３１１からコア１３１２へのデータの供給ラインは、たとえばウィンドウ座標（Ｘ，Ｙ，Ｚ）の供給ラインと、他のプライマリカラー（Ｒｐ，Ｇｐ，Ｂｐ，Ａｐ）、セカンダリカラー（Ｒｓ，Ｇｓ，Ｂｓ，Ａｓ）、Ｆｏｇ係数（ｆ）、テクスチャ座標（Ｖ１ｘ，Ｖ１ｙ，Ｖ１ｚ）、および（Ｖ２ｘ，Ｖ２ｙ，Ｖ２ｚ）の供給ラインとは、異なる配線により形成される。
【００７７】
ラスタライザ１３１１は、画像処理の場合には、たとえばグローバルモジュール１２を介して図示しない上位装置から出力された、メモリモジュール１３２（−０〜−３）から画像データを読み出すためのソースアドレスおよび画像処理結果を書き込むためのデスティネーションアドレスの生成に必要なコマンドやデータ、たとえば探索矩形領域の幅、高さデータ（Ｗｓ，Ｈｓ）、ブロックサイズデータ（Ｗｂｋ，Ｈｂｋ）を入力し、入力データに基づいて、ソースアドレス（Ｘ１ｓ，Ｙ１ｓ）および／または（Ｘ２ｓ，Ｙ２ｓ）を生成するとともに、デスティネーションアドレス（Ｘｄ，Ｙｄ）を生成し、コア１３１２に供給する。
画像処理時のラスタライザ１３１１からコア１３１２へのデータの供給ラインは、たとえばデスティネーションアドレス（Ｘｄ，Ｙｄ）に関してはグラフィックス処理時のウィンドウ座標（Ｘ，Ｙ，Ｚ）の供給ラインが共用され、ソースアドレス（Ｘ１ｓ，Ｙ１ｓ），（Ｘ２ｓ，Ｙ２ｓ）に関してはテクスチャ座標（Ｖ１ｘ，Ｖ１ｙ，Ｖ１ｚ）、および（Ｖ２ｘ，Ｖ２ｙ，Ｖ２ｚ）等の供給ラインが共用される。
【００７８】
コア１３１２は、本アーキテクチャを実現する演算処理部であり、コア１３１２はラスタライザ１３１１により各種データが供給される。
コア１３１２は、ストリームデータに対して演算処理を行う以下の機能ユニットを有している。
すなわち、コア１３１２は、第１の機能ユニットとしてのグラフィックスユニット（Ｇｒａｐｈｉｃｓ　Ｕｎｉｔ：ＧＲＵ）１３１２１、第３の機能ユニットとしてのピクセルエンジン（Ｐｉｘｅｌ　Ｅｎｇｉｎｅ：ＰＸＥ）１３１２２、および第２の機能ユニットとしてのピクセル演算プロセッサ（Ｐｉｘｅｌ　Ｏｐｅｒａｔｉｏｎ　Ｐｒｏｃｅｓｓｏｒ：ＰＯＰ）群１３１２３を有している。
コア１３１２は、たとえばデータフローグラフ（Ｄａｔａ　Ｆｌｏｗ　Ｇｒａｐｈ：ＤＦＧ）に応じてこれらの機能ユニット間の接続を切り替えることにより様々なアルゴリズムに対応する。　さらに、コア１３１２は、レジスタユニット（Ｒｅｇｉｓｔｅｒ　Ｕｎｉｔ：ＲＧＵ）１３１２４、およびクロスバー回路（Ｉｎｔｅｒｃｏｎｎｅｃｔｉｏｎ　Ｘ−Ｂａｒ：ＩＸＢ）１３１２５を有している。
【００７９】
グラフィックスユニット（ＧＲＵ）１３１２１は、グラフィックス処理を実行する際に、専用ハードウェアを付加することがコストパフォーマンス上明らかに有利なものをハードワイヤードロジックで実装している機能ユニットである。
グラフィックスユニット１３１２１は、グラフィックス処理に関連するものとして、パースペクティブコレクション（Ｐｅｒｓｐｅｃｔｉｖｅ　Ｃｏｒｒｅｃｔｉｏｎ）、ＭＩＰＭＡＰレベル算出等の機能を実装している。
【００８０】
グラフィックスユニット１３１２１は、クロスバー回路１３１２５、レジスタユニット（ＲＧＵ）１３１２４を介してラスタライザ１３１１により供給されたテクスチャ座標（Ｖ１ｘ，Ｖ１ｙ，Ｖ１ｚ）、および／またはラスタライザ１３１１またはピクセルエンジン（ＰＸＥ）１３１２２により供給されたテクスチャ座標（Ｖ２ｘ，Ｖ２ｙ，Ｖ２ｚ）データを入力し、入力データに基づいて、パースペクティブコレクション、ＬＯＤ（ＬｅｖｅｌｏｆＤｅｔａｉｌ）計算によるミップマップ（ＭＩＰＭＡＰ）レベルの算出、立方体マップ（Ｃｕｂｅ　Ｍａｐ）の面選択や正規化テクセル座標（ｓ，ｔ）の算出処理を行い、たとえば正規化テクセル座標（ｓ，ｔ）およびＬＯＤデータ（ｌｏｄ）を含むグラフィックスデータ（ｓ１，ｔ１，ｌｏｄ１）および／または（ｓ２，ｔ２，ｌｏｄ２）をピクセル演算プロセッサ（ＰＯＰ）群１３１２３に出力する。
なお、グラフィックスユニット１３１２１の出力グラフィックスデータ（ｓ１，ｔ１，ｌｏｄ１），（ｓ２，ｔ２，ｌｏｄ２）は、クロスバー回路１３１２５、レジスタユニット（ＲＧＵ）１３１２４を通して、あるいは図１４中、破線で示すように、別の配線で直接的にピクセル演算プロセッサ（ＰＯＰ）群１３１２３に供給される。
【００８１】
第３の機能ユニットとしてのピクセルエンジン（ＰＸＥ）１３１２２は、ストリームデータ処理を行う機能ユニットであって、内部に複数の演算器を有する。
ピクセルエンジン１３１２２は、ピクセル演算プロセッサ（ＰＯＰ）群１３１２３に比べて演算器間の接続自由度が高く、かつ演算器の機能も豊富である。
【００８２】
ピクセルエンジン（ＰＸＥ）１３１２２は、描画対象に関する情報やピクセル演算プロセッサ（ＰＯＰ）群１３１２３における演算結果を、たとえばクロスバー回路１３１２５によりレジスタユニット（ＲＧＵ）１３１２４の所望のＦＩＦＯレジスタに設定された後、クロスバー回路１３１２５を介さず、レジスタユニット（ＲＧＵ）１３１２４を介して直接的に供給される。
ピクセルエンジン（ＰＸＥ）１３１２２に入力されるデータとしては、たとえば描画する対象の表面に関する情報（面の方向、色、反射率、模様（テクスチャ）等）、表面にあたる光に関する情報（入射方向、強さなど）、過去の演算結果（演算の中間値）等が一般的である。
【００８３】
ピクセルエンジン（ＰＸＥ）１３１２２は、複数の演算器を有し、たとえば外部からの制御により演算経路を再構成可能な演算ユニットであって、所望の演算を実現するように、内部の演算器間の電気的接続を確立し、レジスタユニット（ＲＧＵ）１３１２４を介して入力されたデータを、演算器と電気的接続網（インターコネクト）から形成される一連の演算器のデータパスに入力することで演算を行い、演算結果を出力する。
【００８４】
すなわち、ピクセルエンジン１３１２２は、再構成可能なデータパスをたとえば複数有し、演算器（加算器、乗算器、乗加算器等）を、電気的な接続網で接続し、複数個の演算器からなる演算回路を構成する。
そして、ピクセルエンジン１３１２２は、このようにして再構成された演算回路に対して、連続してデータを入力し、演算を行うことが可能であり、たとえば二分木状のＤＦＧ（データフローグラフ）で表現される演算を、効率よくかつ少ない回路規模で実現できる接続網を使用して演算回路を構成することが可能である。
【００８５】
図１５は、ピクセルエンジン（ＰＸＥ）１３１２２の構成例、およびレジスタユニット（ＲＧＵ）１３１２４、クロスバー回路１３１２５との接続例を示す図である。
【００８６】
このピクセルエンジン（ＰＸＥ）１３１２２は、図１５に示すように、２または３入力ＭＡＣ（Ｍｕｌｔｉｐｌｙ　ａｎｄ　Ａｃｃｕｍｕｌａｔｏｒ）を基本とした複数（図１２の例では１６個）の演算器ＯＰ１〜ＯＰ８，ＯＰ１１〜ＯＰ１８と、１または複数（図１２の例では４個）ルックアップテーブルＬＵＴ１，ＬＵＴ２、ＬＵＴ１１，ＬＵＴ１２とを有している。
【００８７】
図１５に示すように、ピクセルエンジン（ＰＸＥ）１３１２２内の各演算器ＯＰ１〜ＯＰ８，ＯＰ１１〜ＯＰ１８の２本の入力は、レジスタユニット（ＲＧＵ）１３１２４のＦＩＦＯ（Ｆｉｒｓｔ−ＩＮ　Ｆｉｒｓｔ−Ｏｕｔ）レジスタＦＲＥＧと直結している。
同様に、ルックアップテーブルＬＵＴ１，ＬＵＴ２、ＬＵＴ１１，ＬＵＴ１２の１本の入力はレジスタユニット（ＲＧＵ）１３１２４のＦＩＦＯレジスタＦＲＥＧと直結している。
そして、各演算器ＯＰ１〜ＯＰ８，ＯＰ１１〜ＯＰ１８およびルックアップテーブルＬＵＴ１，ＬＵＴ２、ＬＵＴ１１，ＬＵＴ１２の出力は、クロスバー回路１３１２５に接続されている。
【００８８】
さらに、図１５の例では、演算器ＯＰ１の出力が演算器ＯＰ３，ＯＰ４の２入力および３入力演算器ＯＰ２の１入力にそれぞれ接続されている。同様に、演算器ＯＰ２の出力が演算器ＯＰ４の２入力および３入力演算器ＯＰ３の１入力にそれぞれ接続されている。また、演算器ＯＰ３の出力が３入力演算器ＯＰ４の１入力に接続されている。
演算器ＯＰ５の出力が演算器ＯＰ７，ＯＰ８の２入力および３入力演算器ＯＰ６の１入力にそれぞれ接続されている。同様に、演算器ＯＰ６の出力が演算器ＯＰ８の２入力および３入力演算器ＯＰ７の１入力にそれぞれ接続されている。また、演算器ＯＰ７の出力が３入力演算器ＯＰ８の１入力に接続されている。
さらに、演算器ＯＰ１１の出力が演算器ＯＰ１３，ＯＰ１４の２入力および３入力演算器ＯＰ１２の１入力にそれぞれ接続されている。同様に、演算器ＯＰ１２の出力が演算器ＯＰ１４の２入力および３入力演算器ＯＰ１３の１入力にそれぞれ接続されている。また、演算器ＯＰ１３の出力が３入力演算器ＯＰ１４の１入力に接続されている。
演算器ＯＰ１５の出力が演算器ＯＰ１７，ＯＰ１８の２入力および３入力演算器ＯＰ１６の１入力にそれぞれ接続されている。同様に、演算器ＯＰ１６の出力が演算器ＯＰ１８の２入力および３入力演算器ＯＰ１７の１入力にそれぞれ接続されている。また、演算器ＯＰ１７の出力が３入力演算器ＯＰ１８の１入力に接続されている。
【００８９】
このように、図１５のピクセルエンジン（ＰＸＥ）１３１２２内においては、演算器ＯＰ１の出力がフォワーディングパスにより演算器ＯＰ２，ＯＰ３、ＯＰ４に接続されており、演算器ＯＰ２，ＯＰ３、ＯＰ４は、演算器ＯＰ１の出力をソースオペランドとして参照可能である。
演算器ＯＰ２の出力がフォワーディングパスにより演算器ＯＰ３、ＯＰ４に接続されており、演算器ＯＰ３、ＯＰ４は、演算器ＯＰ２の出力をソースオペランドとして参照可能である。
演算器ＯＰ３の出力がフォワーディングパスにより演算器ＯＰ４に接続されており、演算器ＯＰ４は、演算器ＯＰ３の出力をソースオペランドとして参照可能である。
演算器ＯＰ５の出力がフォワーディングパスにより演算器ＯＰ６，ＯＰ７、ＯＰ８に接続されており、演算器ＯＰ６，ＯＰ７、ＯＰ８、演算器ＯＰ５の出力をソースオペランドとして参照可能である。
演算器ＯＰ６の出力がフォワーディングパスにより演算器ＯＰ７、ＯＰ８に接続されており、演算器ＯＰ７、ＯＰ８は、演算器ＯＰ６の出力をソースオペランドとして参照可能である。
演算器ＯＰ７の出力がフォワーディングパスにより演算器ＯＰ８に接続されており、演算器ＯＰ８は、演算器ＯＰ７の出力をソースオペランドとして参照可能である。
同様に、演算器ＯＰ１１の出力がフォワーディングパスにより演算器ＯＰ１２，ＯＰ１３、ＯＰ１４に接続されており、演算器ＯＰ１２，ＯＰ１３、ＯＰ１４は、演算器ＯＰ１１の出力をソースオペランドとして参照可能である。
演算器ＯＰ１２の出力がフォワーディングパスにより演算器ＯＰ１３、ＯＰ１４に接続されており、演算器ＯＰ１３、ＯＰ１４は、演算器ＯＰ１２の出力をソースオペランドとして参照可能である。
演算器ＯＰ１３の出力がフォワーディングパスにより演算器ＯＰ１４に接続されており、演算器ＯＰ１４は、演算器ＯＰ１３の出力をソースオペランドとして参照可能である。
演算器ＯＰ１５の出力がフォワーディングパスにより演算器ＯＰ１６，ＯＰ１７、ＯＰ１８に接続されており、演算器ＯＰ１６，ＯＰ１７、ＯＰ１８、演算器ＯＰ１５の出力をソースオペランドとして参照可能である。
演算器ＯＰ１６の出力がフォワーディングパスにより演算器ＯＰ１７、ＯＰ１８に接続されており、演算器ＯＰ１７、ＯＰ１８は、演算器ＯＰ１６の出力をソースオペランドとして参照可能である。
演算器ＯＰ１７の出力がフォワーディングパスにより演算器ＯＰ１８に接続されており、演算器ＯＰ１８は、演算器ＯＰ１７の出力をソースオペランドとして参照可能である。
また、ルックアップテーブルＬＵＴ１，ＬＵＴ２、ＬＵＴ１１，ＬＵＴ１２は、たとえば任意に定義可能なＲＡＭ−ＬＵＴであり、１コンテキストでは最大Ｌ（Ｌ：同時参照可能なテーブル数）個まで参照可能である。ルックアップテーブルＬＵＴ１，ＬＵＴ２、ＬＵＴ１１，ＬＵＴ１２には、たとえばｓｉｎ／ｃｏｓ等の初等関数等が保持される。
【００９０】
以上の構成において、ピクセルエンジン（ＰＸＥ）１３１２２とレジスタユニット（ＲＧＵ）１３１２４間の接続数に関しては、ピクセルエンジン（ＰＸＥ）１３１２２からクロスバー回路（ＩＢＸ）１３１２５への接続数ＣＮ１は次のようになる。
【００９１】
【数２】
ＣＮ１＝（演算器数＋同時参照可能なＬＵＴ数）×１
【００９２】
また、レジスタユニット（ＲＧＵ）１３１２４からピクセルエンジン（ＰＸＥ）１３１２２への接続数ＣＮ２は次のようになる。
【００９３】
【数３】
ＣＮ２＝演算器数×２＋同時参照可能なＬＵＴ数×１
【００９４】
以上の構成を有するピクセルエンジン（ＰＸＥ）１３１２２は、たとえばグラフィックス処理時に、クロスバー回路１３１２５を介してレジスタユニット（ＲＧＵ）１３１２４の所望のＦＩＦＯレジスタに設定され、ＦＩＦＯレジスタから直接的に入力されたピクセル演算プロセッサ（ＰＯＰ）群１３１２３における演算結果データデータ（ＴＲ１，ＴＧ１，ＴＢ１，ＴＡ１）および（ＴＲ２，ＴＧ２，ＴＢ２，ＴＡ２）、並びに、ラスタライザ１３１１によりレジスタユニット（ＲＧＵ）１３１２４の所望のＦＩＦＯレジスタに設定され、ＦＩＦＯレジスタから直接的に入力されたプライマリカラー（ＰＣ）、セカンダリカラー（ＳＣ）、Ｆｏｇ係数（Ｆ）に基づいて、たとえばピクセルシェーダ（Ｐｉｘｅｌ　Ｓｈａｄｅｒ）のような演算を行い、色データ（ＦＲ１，ＦＧ１，ＦＢ１）および混合値（ブレンド値：ＦＡ１）を求める。
ピクセルエンジン（ＰＸＥ）１３１２２は、このデータ（ＦＲ１，ＦＧ１，ＦＢ１，ＦＡ１）を、クロスバー回路１３１２５、レジスタユニット（ＲＧＵ）１３１２４を介して、ピクセル演算プロセッサ（ＰＯＰ）群１３１２３の所定のＰＯＰ内あるいは別個に設けられたライトユニットＷＵに転送する。
【００９５】
ピクセル演算プロセッサ（ＰＯＰ）群１３１２３は、メモリバンド幅を活かした高並列の演算処理を行う機能ユニットであるＰＯＰを複数、本実施形態ではたとえば図１３に示すように、ＰＯＰ０〜ＰＯＰ３の４個を有する。
各ＰＯＰは、並列に配列されたＰＯＰＥ（Ｐｉｘｅｌ　Ｏｐｅｒａｔｉｏｎ　Ｐｒｏｃｅｓｓｉｎｇ　Ｅｌｅｍｅｎｔ）と呼ばれる複数の演算器を有している。また、メモリに対するアドレス生成機能も有する。
ピクセル演算プロセッサ（ＰＯＰ）群１３１２３とキャッシュ間は広いバンド幅で接続されており、かつメモリアクセスのためのアドレス生成機能を内蔵しているので、演算器の演算能力を最大限引き出すだけのストリームデータの供給が可能である。
【００９６】
ピクセル演算プロセッサ（ＰＯＰ）群１３１２３は、グラフィックス処理時には、たとえば以下の処理を行う。
たとえばグラフィックスユニット（ＧＲＵ）１３１２１から直接的に供給された（ｓ１，ｔ１，ｌｏｄ１），（ｓ２，ｔ２，ｌｏｄ２）の値に基づいて、テクスチャアクセスのための（ｕ，ｖ）アドレス計算を行い、アドレスデータ（ｕｉ，ｖｉ，ｌｏｄｉ）に基づいて４近傍フィルタリングを行うための４近傍の（ｕ，ｖ）座標、すなわち、（ｕ０，ｖ０），（ｕ１，ｖ１），（ｕ２，ｖ２），（ｕ３，ｖ３）を計算してメモリコントローラＭＣに供給して、メモリモジュール１３２から所望のテクセルデータをたとえばリードオンリーキャッシュＲＯ＄を通して各ＰＯＰＥに読み出す。
また、ピクセル演算プロセッサ（ＰＯＰ）群１３１２３は、係数生成のためのデータ（ｕｆ，ｖｆ，ｌｏｄｆ）に基づいてテクスチャフィルタ係数Ｋを計算して各ＰＯＰＥに供給する。
そして、ピクセル演算プロセッサ（ＰＯＰ）群１３１２３の各ＰＯＰにおいて、色データ（ＴＲ，ＴＧ，ＴＢ）および混合値（ブレンド値：ＴＡ）を求め、（ＴＲ，ＴＧ，ＴＢ，ＴＡ）をクロスバー回路１３１２５、レジスタユニット（ＲＧＵ）１３１２４を介してピクセルエンジン（ＰＸＥ）１３１２２に転送する。
【００９７】
一方、ピクセル演算プロセッサ（ＰＯＰ）群１３１２３は、画像処理時には、たとえば以下の処理を行う。
ピクセル演算プロセッサ（ＰＯＰ）群１３１２３は、たとえばラスタライザ１３１１で生成されてレジスタユニット（ＲＧＵ）１３１２４に設定され、グラフィックスユニット（ＧＲＵ）１３１２１を素通りしてクロスバー回路１３１２５を介さずに直接的に供給されたソースアドレス（Ｘ１ｓ，Ｙ１ｓ）および（Ｘ２ｓ，Ｙ２ｓ）に基づいて、たとえばリードオンリーキャッシュＲＯ＄および／またはリードライトキャッシュＲＷ＄を介して、メモリモジュール１３２にされている画像データを読み出し、読み出しデータに対して所定の演算処理を行って、演算結果をクロスバー回路１３１２５、レジスタユニット（ＲＧＵ）１３１２４を介してライトユニットＷＵに転送する。
【００９８】
なお、上述した機能を有するＰＯＰのさらに具体的な構成については、後で詳述する。
【００９９】
レジスタユニット（ＲＧＵ）１３１２４は、コア１３１２内の各機能ユニットで処理されるストリームデータを格納するＦＩＦＯ構造のレジスタファイルである。
また、ハードウェアリソースの関係で、ＤＦＧを複数のサブＤＦＧ（Ｓｕｂ−ＤＦＧ）に分割して実行しなければならない場合に、サブＤＦＧ間の中間値格納バッファとしても機能する。
図１５に示すように、レジスタユニット（ＲＧＵ）１３１２４内のＦＩＦＯレジスタＦＲＥＧの出力と機能ユニットであるピクセルエンジン（ＰＸＥ）１３１２２、ピクセル演算プロセッサ（ＰＯＰ）群１３１２３の各演算器の入力ポートとは、１対１に対応する。
【０１００】
クロスバー回路１３１２５は、コア１３１２が、ＤＦＧに応じて機能ユニット間の接続を替えることにより様々なアルゴリズムに対応可能なように、この接続切り替えを実現する。
上述したように、レジスタユニット（ＲＧＵ）１３１２４内のＦＩＦＯレジスタＦＲＥＧの出力と機能ユニットの入力ポートは固定で１対１に対応するが、機能ユニットの出力ポートとレジスタユニット（ＲＧＵ）１３１２４内のＦＩＦＯレジスタＦＲＥＧの入力をクロスバー回路１３１２５で切り替える。
【０１０１】
本画像処理装置１０において、ローカルモジュール１３（−０〜−３）のメモリモジュール１３２（−０〜−３）には画像データが記憶されるが、ローカルモジュール１３（−０〜−３）は、ピクセル演算プロセッサ（ＰＯＰ）１３１４４とメモリモジュール間にローカルキャッシュ１３３（−０〜−３）を有している。
このような構成において、ピクセル演算プロセッサ（ＰＯＰ）１３１２３でピクセルレベルの並列演算処理を行う場合、画像データのアクセスには、次の２通りの方法がある。
第１は、メモリモジュール１３２に格納されている画像データを直接読み出して演算を行う方法である。
第２は、メモリモジュール１３２に格納されている画像データのうち、演算に必要とされる一部のデータをローカルキャッシュ１３３に格納し、ローカルキャッシュ１３３のデータを読み出して演算を行う方法である。
【０１０２】
本実施形態においては、上述した第１の方法および第２の方法にかかわらず、メモリモジュール１３２またはローカルキャッシュ１３３からピクセル演算プロセッサ（ＰＯＰ）１３１４４の各演算器ＰＯＰＥへの並列的なデータ読み出し系は、クロスバー回路ではなく、複数のメモリのデータ出力ポートに跨がる１または２本のバスと、各バスに各出力ポートに対応するように配置されたセレクタとシフトレジスタの複数のセットからなる１段または２段のデータシフトチェーンにより構成している。
以下、このメモリモジュール１３２またはローカルキャッシュ１３３からピクセル演算プロセッサ（ＰＯＰ）１３１２３の各演算器ＰＯＰＥへの並列的なデータ読み出し系について、図面に関連付けて詳細に説明する。
【０１０３】
図１６は、メモリモジュール１３２に格納されている画像データをピクセル演算プロセッサ（ＰＯＰ）１３１４４の各演算器ＰＯＰＥに直接読み出して演算を行う場合のデータ読み出し系を示す図である。
また、図１７は、メモリモジュール１３２に格納されている画像データのうち、演算に必要とされる一部のデータをローカルキャッシュ１３３に格納し、ローカルキャッシュ１３３のデータを読み出して演算を行う場合のデータ読み出し系を示す図である。
【０１０４】
図１６および図１７は、データシフトチェーンは第１のシフトチェーンとしての下段シフトチェーンＬＳＦＴＣ（メモリモジュール側）と第２のシフトチェーンとしての上段シフトチェーンＵＳＦＴＣ（ＰＯＰＥ側）の２段構造の場合で、かつ、データシフトチェーンを一つのＰＯＰ内で閉じた場合の構成例である。
また、図１６および図１７は、ピクセル演算プロセッサ（ＰＯＰ）１３１２３の各演算器ＰＯＰＥは０〜７の８個を並列に配置した場合の例である。
また、図１７は、下段シフトチェーンＬＳＦＴＣの左端から上段シフトチェーンＵＳＦＴＣの右端までの距離が長いので、後で説明するように、高動作周波数化を容易にする等のために間隙レジスタＧＲＥＧ１，ＧＲＥＧ２および間隙調整部ＧＡＤＪを配置した場合の例である。なお、この間隙レジスタや間隙調整部は、図１６の場合にも必要に応じて配置される。
【０１０５】
下段シフトチェーンＬＳＦＴＣは、図に示すように、たとえばフリップフロップからなる第１のシフトレジスタＬＳＲＧ０〜ＬＳＲＧ７および第１のセレクタＬＳＬＣ０〜ＬＳＬＣ６を有している。
下段シフトチェーンＬＳＦＴＣは、メモリモジュール１３２の出力ポートｐ（７）から出力ポートｐ（０）に向かって、図面の右側から左側にデータをシフトするように構成されている。
【０１０６】
具体的には、シフトレジスタＬＳＲＧ７の入力がメモリモジュール１３２の出力ポートｐ（７）またはキャッシュＣＨＥ７のポートに接続され、出力が次段のセレクタＬＳＬＣ６の第１入力に接続されている。
セレクタＬＳＬＣ６の第２入力がメモリモジュール１３２の出力ポートｐ（６）またはキャッシュＣＨＥ６のポートに接続され、出力がシフトレジスタＬＳＲＧ６の入力に接続されている。シフトレジスタＬＳＲＧ６の出力が次段のセレクタＬＳＬＣ５の第１入力に接続されている。
セレクタＬＳＬＣ５の第２入力がメモリモジュール１３２の出力ポートｐ（５）またはキャッシュＣＨＥ５のポートに接続され、出力がシフトレジスタＬＳＲＧ５の入力に接続されている。シフトレジスタＬＳＲＧ５の出力が次段のセレクタＬＳＬＣ４の第１入力に接続されている。
セレクタＬＳＬＣ４の第２入力がメモリモジュール１３２の出力ポートｐ（４）またはキャッシュＣＨＥ４のポートに接続され、出力がシフトレジスタＬＳＲＧ４の入力に接続されている。シフトレジスタＬＳＲＧ４の出力が次段のセレクタＬＳＬＣ３の第１入力に接続されている。
セレクタＬＳＬＣ３の第２入力がメモリモジュール１３２の出力ポートｐ（３）またはキャッシュＣＨＥ３のポートに接続され、出力がシフトレジスタＬＳＲＧ３の入力に接続されている。シフトレジスタＬＳＲＧ３の出力が次段のセレクタＬＳＬＣ２の第１入力に接続されている。
セレクタＬＳＬＣ２の第２入力がメモリモジュール１３２の出力ポートｐ（２）またはキャッシュＣＨＥ２のポートに接続され、出力がシフトレジスタＬＳＲＧ２の入力に接続されている。シフトレジスタＬＳＲＧ２の出力が次段のセレクタＬＳＬＣ１の第１入力に接続されている。
セレクタＬＳＬＣ１の第２入力がメモリモジュール１３２の出力ポートｐ（１）またはキャッシュＣＨＥ１のポートに接続され、出力がシフトレジスタＬＳＲＧ１の入力に接続されている。シフトレジスタＬＳＲＧ１の出力が次段のセレクタＬＳＬＣ０の第１入力に接続されている。
セレクタＬＳＬＣ０の第２入力がメモリモジュール１３２の出力ポートｐ（０）またはキャッシュＣＨＥ０のポートに接続され、出力がシフトレジスタＬＳＲＧ０の入力に接続されている。
そして、シフトレジスタＬＳＲＧ０の出力が上段シフトチェーンＵＳＦＴＣの右端に配置されたセレクタの第１入力に接続されている。
【０１０７】
下段シフトチェーンＬＳＦＴＣの各セレクタＬＳＬＣ０〜ＬＳＬＣ６は、図示しない制御系によるセレクト信号に応じて第１入力または第２入力へのデータの、すなわち、前段のシフトレジスタＬＳＲＧ１〜ＬＳＲＧ７の出力データか、メモリモジュール１３２の対応する出力ポートｐ（０）〜ｐ（６）からの読み出しデータのいずれかを選択してシフトレジスタＬＳＲＧ０〜ＬＳＲＧ６に入力させる。
【０１０８】
上段シフトチェーンＵＳＦＴＣは、図に示すように、たとえばフリップフロップからなる第２のシフトレジスタＵＳＲＧ０〜ＵＳＲＧ７および第２のセレクタＵＳＬＣ０〜ＵＳＬＣ７を有している。
上段シフトチェーンＵＳＦＴＣは、下段シフトチェーンＬＳＦＴＣと同様に、メモリモジュール１３２の出力ポートｐ（７）から出力ポートｐ（０）に向かって、図面の右側から左側にデータをシフトするように構成されている。
【０１０９】
具体的には、セレクタＵＳＬＣ７の第１入力が下段シフトチェーンＬＳＦＴＣのシフトレジスタＬＳＲＧ０の出力に接続され、第２入力がメモリモジュール１３２の出力ポートｐ（７）またはキャッシュＣＨＥ７のポートに接続されている。セレクタＵＳＬＣ７の出力がシフトレジスタＵＳＲＧ７の入力に接続されている。シフトレジスタＵＳＲＧ７の出力が次段のセレクタＵＳＬＣ６の第１入力、並びにＰＯＰＥ７の第１入力に接続されている。
セレクタＵＳＬＣ６の第２入力がメモリモジュール１３２の出力ポートｐ（６）またはキャッシュＣＨＥ６のポートに接続され、出力がシフトレジスタＵＳＲＧ６の入力に接続されている。シフトレジスタＵＳＲＧ６の出力が次段のセレクタＵＳＬＣ５の第１入力、並びにＰＯＰＥ６の第１入力に接続されている。
セレクタＵＳＬＣ５の第２入力がメモリモジュール１３２の出力ポートｐ（５）またはキャッシュＣＨＥ５のポートに接続され、出力がシフトレジスタＵＳＲＧ５の入力に接続されている。シフトレジスタＵＳＲＧ５の出力が次段のセレクタＵＳＬＣ４の第１入力、並びにＰＯＰＥ５の第１入力に接続されている。
セレクタＵＳＬＣ４の第２入力がメモリモジュール１３２の出力ポートｐ（４）またはキャッシュＣＨＥ４のポートに接続され、出力がシフトレジスタＵＳＲＧ４の入力に接続されている。シフトレジスタＵＳＲＧ４の出力が次段のセレクタＵＳＬＣ３の第１入力、並びにＰＯＰＥ４の第１入力に接続されている。
セレクタＵＳＬＣ３の第２入力がメモリモジュール１３２の出力ポートｐ（３）またはキャッシュＣＨＥ３のポートに接続され、出力がシフトレジスタＵＳＲＧ３の入力に接続されている。シフトレジスタＵＳＲＧ３の出力が次段のセレクタＵＳＬＣ２の第１入力、並びにＰＯＰＥ３の第１入力に接続されている。
セレクタＵＳＬＣ２の第２入力がメモリモジュール１３２の出力ポートｐ（２）またはキャッシュＣＨＥ２のポートに接続され、出力がシフトレジスタＵＳＲＧ２の入力に接続されている。シフトレジスタＵＳＲＧ２の出力が次段のセレクタＵＳＬＣ１の第１入力、並びにＰＯＰＥ２の第１入力に接続されている。
セレクタＵＳＬＣ１の第２入力がメモリモジュール１３２の出力ポートｐ（１）またはキャッシュＣＨＥ１のポートに接続され、出力がシフトレジスタＵＳＲＧ１の入力に接続されている。シフトレジスタＵＳＲＧ１の出力が次段のセレクタＵＳＬＣ０の第１入力、並びにＰＯＰＥ１の第１入力に接続されている。
セレクタＵＳＬＣ０の第２入力がメモリモジュール１３２の出力ポートｐ（０）またはキャッシュＣＨＥ０のポートに接続され、出力がシフトレジスタＵＳＲＧ０の入力に接続されている。
そして、シフトレジスタＵＳＲＧ０の出力がＰＯＰＥ０の第１入力に接続されている。
【０１１０】
上段シフトチェーンＵＳＦＴＣの各セレクタＵＳＬＣ０〜ＵＳＬＣ７は、図示しない制御系によるセレクト信号に応じて第１入力または第２入力へのデータの、すなわち、前段のシフトレジスタＬＳＲＧ０，ＵＳＲＧ１〜ＵＳＲＧ７の出力データか、メモリモジュール１３２の対応する出力ポートｐ（０）〜ｐ（６）からの読み出しデータのいずれかを選択してシフトレジスタＵＳＲＧ０〜ＵＳＲＧ６、並びにＰＯＰＥ０〜ＰＯＰＥ７の第１入力に入力させる。
【０１１１】
また、各ＰＯＰＥ０〜ＰＯＰＥ７の第２入力側には、ソース入力ＳＩ用のソースレジスタＳＣＲＧ０〜ＳＣＲＧ７が配置されている。
【０１１２】
また、下段シフトチェーンＬＳＦＴＣの左端から上段シフトチェーンＵＳＦＴＣの右端までの間には、図１７のように、間隙レジスタＧＲＥＧ１，ＧＲＥＧ２および間隙調整部ＧＡＤＪを配置する場合の他、間隙レジスタＧＲＥＧのみを配置する場合等、構成に応じた態様が採られる。
間隙調整部ＧＡＤＪはセレクタＧＳＥＬと間隙レジスタＡＲＥＧにより構成される。図１７の例の場合、セレクタＧＳＥＬの第１入力および間隙レジスタＡＲＥＧの入力が間隙レジスタＧＲＥＧ２の出力に接続され、間隙レジスタＡＲＥＧの出力がセレクタＧＳＥＬの第２入力に接続されている。
セレクタＧＳＥＬは、図示しない制御系によるセレクト信号に応じて第１入力または第２入力へのデータの、すなわち、間隙レジスタＧＲＥＧ２の出力データから、さらに調整した間隙レジスタＡＲＥＧの出力データのいずれかを選択して上段シフトチェーンＵＳＦＴＣのセレクタＵＳＬＣ７の第１入力に入力させる。
【０１１３】
以下に、クロスバー回路の代わりにデータシフトチェーンを用いる利点、データシフトチェーンを１段ではなく下段および上段の２段構造にした理由、間隙レジスタおよび間隙調整部を設ける理由、２段構造のデータシフトチェーンに対する好適なデータの読み出し制御、および好適な構成および演算動作例を、図面に関連付けて順を追って説明する。
【０１１４】
図１８は、複数並列に配置された演算器ＰＯＰＥとメモリモジュールとの間のデータ読み出し系にデータシフトチェーンを１段だけ設けた場合を模式的に示す図である。
【０１１５】
図１８の例では、一つのメモリモジュール１３２が複数のメモリＭＲＹ（０），ＭＲＹ（１）、…、ＭＲＹ（ｉ）の区分けされ、各メモリＭＲＹ（ｉ）がｗ個の出力ポートｐ（０）〜ｐ（ｗ−１）を有して、これに対応してピクセル演算プロセッサ（ＰＯＰ）１３１４４にＷ個の演算器ＰＯＰＥ０〜ＰＯＰＥｗ−１を設けている。また、これに対応して各演算器ＰＯＰＥ０〜ＰＯＰＥｗ−１の第２入力側にそれぞれソースレジスタＳＣＲＧ０〜ＳＣＲＧｗ−１が配置されている。データシフトチェーンＳＦＴＣは、複数のメモリモジュールＭＲＹ（０），ＭＲＹ（１）、…、ＭＲＹ（ｉ）に跨って横方向に１つのバスＢＳが配置され、これに応じてセレクタＳＬＣ０〜ＳＬＣｗ−１およびシフトレジスタＳＲＧ０〜ＳＲＧｗ−１がセットで配置されている。
なお、各入出力端の接続形態は、図２１および図２２の場合と基本的には同様であることが、ここではその詳細な説明は省略する。
【０１１６】
また、図２３は、各演算器ＰＯＰＥ０〜ＰＯＰＥｗ−１が、乗算器ＭＵＬ、加算器ＡＤＤ、および積算レジスタＭＲＥＧにより構成されている例を示す図である。
乗算器ＭＵＬは、第１入力がデータシフトチェーンＳＦＴＣの対応する段のシフトレジスタＳＲＧ０〜ＳＲＧｗ−１の出力が接続され、第２入力がソースレジスタＳＣＲＧ０〜ＳＣＲＧｗ−１の出力に接続され、出力が加算器ＡＤＤの第１入力に接続されている。
加算器ＡＤＤの第１入力は積和レジスタＭＲＥＧの出力に接続され、加算器ＡＤＤの出力が積和レジスタＭＲＥＧの入力に接続されている。
【０１１７】
このような構成において、たとえば図１８（Ａ）に示すように、幅Ｋｘ、高さＫｙの処理サイズの処理領域ＲＧＮ（Ｋｘ×Ｋｙ）に含まれるピクセルに対して並列処理を行って一つの演算結果を得る場合には、次のような処理が行われる。ピクセル演算プロセッサ（ＰＯＰ）１３１４４の各演算器ＰＯＰＥ０〜ＰＯＰＥｗ−１は、各１ピクセルずつずれた領域位置での演算を担当する。
そして、横方向のバスＢＳを使用して、幅Ｋｘの領域に対する演算を行う。
横方向（ｘ方向）の演算を行ったならば、縦方向（ｙ方向）に１ピクセルずれた位置で同様に横方向の演算を行う。
以上をＫｙ回繰り返すことで、幅Ｋｘ、高さＫｙの処理サイズの処理領域ＲＧＮ（Ｋｘ×Ｋｙ）に対する演算を行う。
【０１１８】
たとえば次式で示すようなコンボリューションフィルタ演算を行う場合には、以下のような処理が行われる。
【０１１９】
【数４】
2004013873.tif 000004
【０１２０】
すなわち、図１９に示すように、ピクセル演算プロセッサ（ＰＯＰ）１３１４４の各演算器ＰＯＰＥ０〜ＰＯＰＥｗ−１の第２入力にソースレジスタＳＣＲＧ０〜ＳＣＲＧｗ−１を介してフィルタ係数ｋ（ｉ：図２３ではｉ＝４）を供給する。
そして、データシフトチェーンＳＦＴＣを用いてメモリＭＲＹの所望の出力ポートからの読み出しデータを図中左方向に順次にシフトさせて各演算器ＰＯＰＥ０〜ＰＯＰＥｗ−１で演算を行わせる。
【０１２１】
図１８に示すような構成の場合、メモリ数Ｖ、メモリに対する演算器数Ｗにかかわらず、複数のメモリに跨がるバスＢＳ１本で良いことから、配線を削減することができる。
また、各演算器ＰＯＰＥに対して１セレクタを設けるだけで良いことから、セレクタ数を削減でき、回路規模の縮小化を実現できる。
さらに、バスがシフトレジスタを構成するフリップフロップにより分割された構成を採ることから、配線遅延、配線容量を低減でき、またノード数が少ないことから、負荷容量を低減でき、ひいては高速化を図ることができる。
【０１２２】
また、図１８に示すような構成の場合、いわゆるコンボリューションフィルタを実現でき、また、乗算機能に加えて、差分絶対値あるいは差分自乗値を求める演算機能を持たせることでＭＥ（動き検出）、ブロックマッチングのいずれの動作も、次の単一動作モデル化できる。
【０１２３】
【数５】
2004013873.tif 000005
【０１２４】
ここで、コンボリューションフィルタの場合、ｆは乗算、ｋはフィルタ係数を示し、ＭＥ，ブロックマッチングの場合、ｆは差分絶対値演算または差分自乗演算で、ｋは参照画像のピクセル値を示す。
【０１２５】
これにより、ブロックサイズが異なっても、メモリ境界を跨ぐか否かを考慮する必要がなく、同一の計算アルゴリズムが使用可能というアルゴリズムのスケーラビリティを実現することができる利点がある。
【０１２６】
次に、データシフトチェーンを下段と上段の２段構造にした理由について説明する。
【０１２７】
２次元配列の画像データをメモリに格納する場合、たとえば図４および図２０に示すように、Ｍ個のメモリＭＲＹ（０）〜ＭＲＹ（Ｍ−１）で、インターリーブして格納される。
ここで、メモリＭＲＹ（ｉ）に格納する横方向のピクセル数をＷｍ（ｉ）とすると、Ｗｍ（０）個の幅のピクセルデータはメモリＭＲＹ（０）に格納され、Ｗｍ（１）個の幅のピクセルデータはメモリＭＲＹ（１）に格納される。同様にして、Ｗｍ（Ｍ−１）個の幅のピクセルデータはメモリＭＲＹ（Ｍ−１）に格納される。
そして、次のＷｍ（０）個の幅のピクセルデータはメモリＭＲＹ（０）に格納され、以後同様に、Ｗｍ（１）個の幅のピクセルデータはメモリＭＲＹ（１）に格納され、Ｗｍ（Ｍ−１）個の幅のピクセルデータはメモリＭＲＹ（Ｍ−１）に格納され、また、メモリＭＲＹ（０）から順に繰り返して格納される。
【０１２８】
そして、図１８および図１９に関連付けて説明したように、並列に配列された全ての演算器ＰＯＰＥを有効に動作させようとした場合、図２０に示すように、隣接領域をシフトインする必要がある。
ＲＧＮ０で示す領域のデータは、演算器直下のメモリから読み出す必要がある。
ＲＧＮ１で示す領域のデータは、連続した位置にあるＫｘ−１個のデータを読み出して、データシフトチェーンにロードしてやる必要がある。
そこで、図２６に示すように、データシフトチェーンを下段シフトチェーンＬＳＦＴＣと上段シフトチェーンＵＳＦＴＣの２段構造としている。
具体的に、下段シフトチェーンＬＳＦＴＣの左端と上段シフトチェーンＵＳＦＴＣの右端とが配線ＷＩにより接続されて２段構造を実現している。
【０１２９】
図２１の構成は、ｗ個の出力ポートを有するメモリＭＲＹが（０）〜ＭＲＹ（Ｍ−１）個のＭ個配列され、全てのメモリＭＲＹ（０）〜ＭＲＹ（Ｍ−１）を跨るように、下段シフトチェーンＬＳＦＴＣと上段シフトチェーンＵＳＦＴＣが形成されている。
図２１の構成において、Ｋｘが（Ｋｘ−１）≦Ｌの条件を満足する場合、下段シフトチェーンＬＳＦＴＣはＫｘ−１段の長さがあればよい。
たとえばＭＰＥＧのＭＥならばＫｘ＝１６であることから、左から１５段のデータシフトチェーンで良い。
【０１３０】
このような２段データシフトチェーン構造にして、図２０の領域ＲＧＮ０のデータを上段シフトチェーンＵＳＦＴＣに転送、格納し、領域ＲＧＮ１のデータを下段シフトチェーンＬＳＦＴＣに転送、格納すると、図２０に示すように領域ＲＧＮ０から領域ＲＧＮ１と連続したデータがデータシフトチェーン上に存在することになり、上記したアルゴリズムにより処理を行うことが可能となる。
【０１３１】
ところで、図２１の構成において、図２２に示すようにＫｘが（Ｋｘ−１）＞Ｌの場合、下段シフトチェーンＬＳＦＴＣと上段シフトチェーンＵＳＦＴＣに全てのデータをロードすることができないことから、単純には処理できない。
図２２に示すように、領域ＲＧＮ０のＬ個のデータは上段シフトチェーンＵＳＦＴＣに格納でき、領域ＲＧＮ０の連続する次の領域ＲＧＮ１のＬ個のデータは下段シフトチェーンＬＳＦＴＣに格納できる。
ところが、Ｋｘ−１＞Ｌであると、領域ＲＧＮ１に連続する次の領域ＲＧＮ２のデータをデータシフトチェーンにロードすることができない。
【０１３２】
そこでその対策して、領域ＲＧＮ１，ＲＧＮ２のデータを時分割で読み出して、（Ｋｘ−１）＞Ｌの場合を演算を行う。
具体的には、領域ＲＧＮ０のＬ個のデータは上段シフトチェーンＵＳＦＴＣにロードする。
そして、領域ＲＧＮ１，ＲＧＮ２のデータについては、最初に左からＬ個のデータを読み出し、下段シフトチェーンＬＳＦＴＣにロードする。
次に、Ｌサイクルの左シフトおよび演算を行う。
以後、データの読み出し、シフトを必要な数、すなわち（Ｋｘ−１）の領域ＲＧＮ１，ＲＧＮ２のデータを読み出して、総計で（Ｋｘ−１）回のシフトを行うまで繰り返す。
この場合、前回読み出した領域ＲＧＮ１に隣接（連続）する領域ＲＧＮ２のデータを読み出す。
（Ｋｘ−１）−（ここまでシフト回数）≧ＬならばＬ回、シフトおよび演算を行う。
（Ｋｘ−１）−（ここまでシフト回数）＜Ｌならば、｛（Ｋｘ−１）−（ここまでシフト回数）｝回のシフトおよび演算を行う。
以上のようにして、領域ＲＧＮ１，ＲＧＮ２のデータを時分割で読み出し、（Ｋｘ−１）＞Ｌの場合を演算を行うことにより、所定の処理を実現することができる。
【０１３３】
次に、データシフトチェーンに間隙レジスタおよび／または間隙調整部を設ける理由について説明する。
【０１３４】
たとえば図２１の構成において、データシフトチェーンの構成要素となる複数のシフトレジスタ間、あるいは下段シフトチェーンＬＳＦＴＣの出力端（左端）と上段シフトチェーンＵＳＦＴＣの入力端（右端）間の物理的な距離が長い場合、配線遅延が大きく、配線容量が大きくなることから、たとえばＧＨｚオーダーの高い周波数での動作が困難となるおそれがある。
【０１３５】
このことについて、たとえば大規模集積回路（ＬＳＩ）で演算器アレイ、複数のメモリ、データシフトチェーンの配置を、図２３（Ａ），（Ｂ）に示すような形態で行った場合を例に説明する。
【０１３６】
この場合、分割されるメモリ数Ｍを４、すなわちＭＲＹ（０）〜ＭＲＹ（３）とし、演算器アレイを含むたとえばピクセル演算プロセッサ（ＰＯＰ）１３１４４をＬＳＩの中心部に配置し、ピクセル演算プロセッサ（ＰＯＰ）１３１４４の図中上側にメモリＭＲＹ（０），ＭＲＹ（１）を並列に配置し、下側のメモリＭＲＹ（２），ＭＲＹ（３）を並列に配置し、各メモリＭＲＹ（０）〜ＭＲＹ（３）毎に下段下段シフトチェーンＬＳＦＴＣと上段シフトチェーンＵＳＦＴを２段（重）構造で配置している例である。
【０１３７】
このような配置構造の場合に、データシフトチェーンの接続は、通常図２３（Ａ）に示すように行われる。
メモリＭＲＹ（３）用下段シフトチェーンＬＳＦＴＣ（３）の右端とメモリＭＲＹ（２）の下段シフトチェーンＬＳＦＴＣ（２）の左端とを配線ＷＩ１により接続する。
メモリＭＲＹ（２）用下段シフトチェーンＬＳＦＴＣ（２）の右端とメモリＭＲＹ（１）の下段シフトチェーンＬＳＦＴＣ（１）の右端とを配線ＷＩ２により接続する。
メモリＭＲＹ（１）用下段シフトチェーンＬＳＦＴＣ（１）の左端とメモリＭＲＹ（０）の下段シフトチェーンＬＳＦＴＣ（０）の右端とを配線ＷＩ３により接続する。
メモリＭＲＹ（０）用下段シフトチェーンＬＳＦＴＣ（０）の左端とメモリＭＲＹ（３）の上段シフトチェーンＵＳＦＴＣ（３）の左端とを配線ＷＩ４により接続する。
メモリＭＲＹ（３）用上段シフトチェーンＵＳＦＴＣ（３）の右端とメモリＭＲＹ（２）の上段シフトチェーンＵＳＦＴＣ（２）の左端とを配線ＷＩ５により接続する。
メモリＭＲＹ（２）用上段シフトチェーンＵＳＦＴＣ（２）の右端とメモリＭＲＹ（１）の上段シフトチェーンＵＳＦＴＣ（１）の右端とを配線ＷＩ６により接続する。
メモリＭＲＹ（１）用上段シフトチェーンＵＳＦＴＣ（１）の左端とメモリＭＲＹ（０）の上段シフトチェーンＵＳＦＴＣ（０）の右端とを配線ＷＩ７により接続する。
【０１３８】
以上の構成において、所定のシフトおよび演算を行うことにより、所定の処理を実現することができる。
【０１３９】
ところが、図２３（Ａ）の構成において、左右に隣接するデータシフトチェーン同士を接続する配線ＷＩ１，ＷＩ３，ＷＩ５，ＷＩ７の長さは問題とはならないが、演算器アレイ（ＰＯＰ）を挟んで隣接するデータシフトチェーン同士を接続する配線ＷＩ２，ＷＩ４，ＷＩ６は長いため、配線遅延が大きく、配線容量が大きくなることから、たとえばＧＨｚオーダーの高い周波数での動作が困難となるおそれがある。
【０１４０】
そこで、本実施形態においては、図２３（Ｂ）に示すように、データシフトチェーン上で、配線が長いことに起因して高速化を困難にしている部分、すなわち配線ＷＩ２，ＷＩ４，ＷＩ６（クリティカルパス）に、一個以上のフリップフロップからなる間隙レジスタを挿入し、経路上の伝送をパイプライン化し、高動作周波数化を容易にしている。
具体的には、メモリＭＲＹ（２）用下段シフトチェーンＬＳＦＴＣ（２）の右端とメモリＭＲＹ（１）の下段シフトチェーンＬＳＦＴＣ（１）の右端とを接続する配線ＷＩ２に間隙レジスタＧＲＥＧ２１，ＧＲＥＧ２２を挿入している。
また、メモリＭＲＹ（０）用下段シフトチェーンＬＳＦＴＣ（０）の左端とメモリＭＲＹ（３）の上段シフトチェーンＵＳＦＴＣ（３）の左端とを接続する配線ＷＩ４に間隙ＧＲＥＧ４１，ＧＲＥＧ４２を挿入している。
また、メモリＭＲＹ（２）用上段シフトチェーンＵＳＦＴＣ（２）の右端とメモリＭＲＹ（１）の上段シフトチェーンＵＳＦＴＣ（１）の右端とを接続する配線ＷＩ６に間隙ＧＲＥＧ６１，ＧＲＥＧ６２を挿入している。
【０１４１】
図２４は、図２３（Ｂ）の例と同様に、メモリがＭＲＹ（０）〜ＭＲＹ（３）の４個で、３つのクリティカルパスＷＩ２，ＷＩ４，ＷＩ６にフリップフロップからなる２個の間隙レジスタを挿入した例を示す回路図である。
図２４の例は、全データシフトチェーンがセレクタＳＬＣとフリップフロップからなるシフトレジスタＳＲＧを１セットとするシフト段が４段縦続接続した構成を有している。なお、データシフトチェーンのデータ入力の初段となる下段シフトチェーンＬＳＦＴＣ（３）のみ、セレクタが１つ少なくなっている。
下段シフトチェーンＬＳＦＴＣ（０）はセレクタＬＳＬＣ０〜ＬＳＬＣ３とシフトレジスタＬＳＲＧ０〜ＬＳＲＧ３により構成されている。下段シフトチェーンＬＳＦＴＣ（１）はセレクタＬＳＬＣ４〜ＬＳＬＣ７とシフトレジスタＬＳＲＧ４〜ＬＳＲＧ７により構成されている。下段シフトチェーンＬＳＦＴＣ（２）はセレクタＬＳＬＣ８〜ＬＳＬＣ１１とシフトレジスタＬＳＲＧ８〜ＬＳＲＧ１１により構成されている。下段シフトチェーンＬＳＦＴＣ（３）はセレクタＬＳＬＣ１２〜ＬＳＬＣ１４とシフトレジスタＬＳＲＧ１２〜ＬＳＲＧ１５により構成されている。
同様に、上段シフトチェーンＵＳＦＴＣ（０）はセレクタＵＳＬＣ０〜ＵＳＬＣ３とシフトレジスタＬＳＲＧ０〜ＬＳＲＧ３により構成されている。上段シフトチェーンＵＳＦＴＣ（１）はセレクタＵＳＬＣ４〜ＵＳＬＣ７とシフトレジスタＵＳＲＧ４〜ＵＳＲＧ７により構成されている。上段シフトチェーンＵＳＦＴＣ（２）はセレクタＵＳＬＣ８〜ＵＳＬＣ１１とシフトレジスタＵＳＲＧ８〜ＵＳＲＧ１１により構成されている。上段シフトチェーンＵＳＦＴＣ（３）はセレクタＵＳＬＣ１２〜ＵＳＬＣ１５とシフトレジスタＵＳＲＧ１２〜ＵＳＲＧ１５により構成されている。
【０１４２】
また、演算器アレイにおいて各メモリに対応してピクセル演算プロセッサＰＯＰ（０〜３）が設けらており、各ＰＯＰ０〜ＰＯＰ３にはそれぞれ４個の演算器ＰＯＰＥ００〜ＰＯＰＥ０３、ＰＯＰＥ１０〜ＰＯＰＥ１３、ＰＯＰＥ２０〜ＰＯＰＥ２３、ＰＯＰＥ３０〜ＰＯＰＥ３３が配置されている。
なお、各演算器ＰＯＰＥ００〜ＰＯＰＥ０３、ＰＯＰＥ１０〜ＰＯＰＥ１３、ＰＯＰＥ２０〜ＰＯＰＥ２３、ＰＯＰＥ３０〜ＰＯＰＥ３３は、図２３の場合と同様に、乗算器ＭＵＬ、加算器ＡＤＤ、および積和レジスタＭＲＥＧにより構成されている。
【０１４３】
以上の構成において、各構成要素の接続は、たとえば図１６、図１７、図１８の場合と同様に行われることから、ここではその詳細な説明は省略する。
【０１４４】
以下、図２４の構成を例に、間隙レジスタを設けた場合の好適な動作形態について図２４を模式的に示す図２５〜図２８に関連に付けて説明する。
なお、これらの図においては、簡単化のため、各データシフトチェーンのシフトレジスタおよび間隙レジスタを四角形で示し、各シフトレジスタとＰＯＰ０〜ＰＯＰ３の各演算器ＰＯＰＥ００〜ＰＯＰＥ０３、ＰＯＰＥ１０〜ＰＯＰＥ１３、ＰＯＰＥ２０〜ＰＯＰＥ２３、ＰＯＰＥ３０〜ＰＯＰＥ３３との単純な接続状態のみを示している。
また、これらの図において、有効なデータを保持しているレジスタを示す四角には斜線を施し、有効なデータを保持していないレジスタは白抜きの四角で示している。
【０１４５】
図２５（Ａ）は、すべてのデータシフトチェーンＬＳＦＴＣ（０），ＬＳＦＴＣ（１），ＵＳＦＴＣ（０），ＵＳＦＴＣ（１）のシフトレジスタにデータがロードされている状態を示す。
図２５（Ｂ）は、図２５（Ａ）の状態から１クロック後のデータのロード状態を示す。
【０１４６】
このように、クロック毎にデータをシフトしていくと、無効なデータもシフトされていくので、演算器ＰＯＰＥの入力に有効なデータが無い状態が生じる。
図２５の例では、ＰＯＰ１の演算器ＰＯＰＥ１３の入力にあるシフトレジスタＵＳＲＧ７、およびＰＯＰ３の演算器ＰＯＰＥ３３の入力にあるシフトレジスタＵＳＲＧ１５には有効なデータがロードされていない。したがって、演算器ＰＯＰＥ１３およびＰＯＰＥ３３において演算を行うことができない。
したがって、このような状態を検知し、有効な演算を行えない場合には演算器を停止、演算器が無効なデータに基づいて演算を行わないように制御する必要がある。
また、上述したように、単純にシフトして演算を行う方法では、演算器が有効な処理を行えないサイクルが生じ、処理能力が低下する。
そこで、連続して演算を行うことが可能なシフト制御を行う必要がある。
【０１４７】
また、無効な演算を行わないようにする制御方式について説明する。
【０１４８】
図２４および図２５の構成において、データシフトチェーン上の各データ用シフトレジスタに対し、各１ビットのフラグレジスタＦＲＥＧを設け、データシフトチェーンと同様にシフトチェーンを構成する。
【０１４９】
具体的には、図２６に示すように、下段シフトチェーンＬＳＦＴＣ（０）のシフトレジスタＬＳＲＧ０〜ＬＳＲＧ３に対して、それぞれフラグレジスタＬＦＲＥＧ０〜ＬＦＲＥＧ３を設けている。
同様に、下段シフトチェーンＬＳＦＴＣ（１）のシフトレジスタＬＳＲＧ４〜ＬＳＲＧ７に対して、それぞれフラグレジスタＬＦＲＥＧ４〜ＬＦＲＥＧ７を設けている。
下段シフトチェーンＬＳＦＴＣ（２）のシフトレジスタＬＳＲＧ８〜ＬＳＲＧ１１に対して、それぞれフラグレジスタＬＦＲＥＧ８〜ＬＦＲＥＧ１１を設けている。
下段シフトチェーンＬＳＦＴＣ（３）のシフトレジスタＬＳＲＧ１２〜ＬＳＲＧ１５に対して、それぞれフラグレジスタＬＦＲＥＧ１２〜ＬＦＲＥＧ１５を設けている。
上段シフトチェーンＬＳＦＴＣ（０）のシフトレジスタＵＳＲＧ０〜ＵＳＲＧ３に対して、それぞれフラグレジスタＵＦＲＥＧ０〜ＵＦＲＥＧ３を設けている。
上段シフトチェーンＵＳＦＴＣ（１）のシフトレジスタＵＳＲＧ４〜ＬＳＲＧ７に対して、それぞれフラグレジスタＵＦＲＥＧ４〜ＵＦＲＥＧ７を設けている。
上段シフトチェーンＵＳＦＴＣ（２）のシフトレジスタＵＳＲＧ８〜ＵＳＲＧ１１に対して、それぞれフラグレジスタＵＦＲＥＧ８〜ＵＦＲＥＧ１１を設けている。
上段シフトチェーンＵＳＦＴＣ（３）のシフトレジスタＵＳＲＧ１２〜ＵＳＲＧ１５に対して、それぞれフラグレジスタＵＦＲＥＧ１２〜ＵＦＲＥＧ１５を設けている。
さらに、配線ＷＩ２に挿入された間隙レジスタＧＲＥＧ２１，ＧＲＥＧ２２に対して、それぞれフラグレジスタＧＦＲＥＧ２１，ＧＦＲＥＧ２２を設けている。
同様に、配線ＷＩ４に挿入された間隙レジスタＧＲＥＧ４１，ＧＲＥＧ４２に対して、それぞれフラグレジスタＧＦＲＥＧ４１，ＧＦＲＥＧ４２を設けている。
配線ＷＩ６に挿入された間隙レジスタＧＲＥＧ６１，ＧＲＥＧ６２に対して、それぞれフラグレジスタＧＦＲＥＧ６１，ＧＦＲＥＧ６２を設けている。
【０１５０】
図２７（Ａ）〜（Ｃ）は、フラグレジスタを設けた構成におけるデータシフトとフラグレジスタの設定状態を説明するための図である。
また、図２７において、有効なデータを保持しているレジスタを示す四角には斜線を施し、有効なデータを保持していないレジスタは白抜きの四角で示している。また、Ｖはデータが有効であることを示すフラグレジスタを示し、Ｉはデータが無効であることを示すフラグレジスタを示している。
【０１５１】
このような構成において、初期状態では、図２７（Ａ）に示すように、全てのフラグレジスタは、対応するデータレジスタの値が無効であることを示す状態（たとえば０）に初期化される。
次に、データシフトチェーンにデータがセットされる際、図２７（Ｂ）に示すように、データがセットされる各シフトレジスタに対応する各フラグレジスタを、対応するデータレジスタの値が有効であることを示す状態（たとえば１）にセットする。
そして、図２７（Ｃ）に示すように、データシフトチェーン上のデータをシフトさせるのと同期して、フラグシフトチェーンをシフトさせる。
図２７（Ｃ）の例では、ＰＯＰ１の演算器ＰＯＰＥ１３の入力にあるシフトレジスタＵＳＲＧ７、およびＰＯＰ３の演算器ＰＯＰＥ３３の入力にあるシフトレジスタＵＳＲＧ１５には有効なデータがロードされていない。
したがって、シフトレジスタＵＳＲＧ７およびシフトレジスタＵＳＲＧ１５に対して設けられたフラグレジスタＵＦＲＥＧ７およびフラグレジスタＵＦＲＥＧ１５にはデータが無効であることが示される。
その結果、演算器ＰＯＰＥ１３およびＰＯＰＥ３３各サイクルで入力されるデータが有効であるか無効であるかを判断することが可能となる。
【０１５２】
次に、連続して演算を行うことが可能なシフト制御について説明する。
【０１５３】
たとえば隣接領域のデータを先に読み出し、データシフトチェーン上にロードし、データシフトチェーンの後ろ側から順次、隙間を埋めるようにデータをシフトしすべて隙間を埋めた後、上段シフトチェーンＵＳＦＴＣにデータを読み出す。
このようにすることで、連続して演算が可能になる。
【０１５４】
図２８（Ａ）〜（Ｅ）は、この連続して演算を行うことが可能なシフト制御について説明するための図である。
【０１５５】
まず、図２８（Ａ）に示すように、データがロードされていない初期状態において、図２８（Ｂ）に示すように、隣接領域の終端側の読み出しを行う。具体的に、メモリＭＲＹ（２），ＭＲＹ（３）のデータを下段シフトチェーンＬＳＦＴＣ（２），ＬＳＦＴＣ（３）にロードする。
次に、図２８（Ｃ）に示すように、２クロック後、左シフトと同時にその左側のデータをセットする。
次に、図２８（Ｄ）に示すように、４クロック後、左２シフトと同時に、上段右側のデータシフトチェーンＵＳＦＴＣ（２），ＵＳＦＴＣ（３）にデータをロードする。これ以降、右半分の演算器、すなわちＰＯＰ２，ＰＯＰ３の演算器ＰＯＰＥ２０〜ＰＯＰＥ２３，ＰＯＰＥ３０〜ＰＯＰＥ３３は継続して演算を行うことができる。
次に、図２８（Ｅ）に示すように、６クロック後、左２シフトと同時に、上段左側のデータシフトチェーンＵＳＦＴＣ（１），ＵＳＦＴＣ（０）にデータをロードする。これ以降、すべての演算器、すなわちＰＯＰ０，ＰＯＰ１，ＰＯＰ２，ＰＯＰ３の演算器ＰＯＰＥ００〜ＰＯＰＥ０３，ＰＯＰＥ１０〜ＰＯＰＥ１３，ＰＯＰＥ２０〜ＰＯＰＥ２３，ＰＯＰＥ３０〜ＰＯＰＥ３３は継続して演算を行うことができる。
【０１５６】
全画面領域に対して演算を行うには、縦方向に１ピクセルずれた位置から演算を行いまた、横方向にＬピクセルずれた位置から演算を行う、という動作を組み合わせることで実現できる。
縦方向に１ピクセル、開始位置をずらして動作を行うと、図２９に示すようになる。また、横方向にＬピクセル、開始位置をずらして動作を行うと、図３０に示すようになる。
なお、縦方向に１ピクセルずれしてから横にＬピクセルずらすように処理することも可能であり、また、横方向にＬピクセルずらしてから縦に１ピクセルずらすように処理することも可能である。
【０１５７】
ここで、Ｋｘ＝４の場合で、縦方向に順次、演算を行っていく場合の動作例を図３１および図３２に関連付けて説明する。
【０１５８】
まず、図３１（Ａ）に示すように、データがロードされていない初期状態において、図３１（Ｂ）に示すように、先頭行の隣接データを下段シフトチェーンＬＳＦＴＣ（０）のシフトレジスタＬＳＲＧ０〜ＬＳＲＧ２にロードする。
次に、図３１（Ｃ）に示すように、１クロックで左１シフトを行った後、図３１（Ｄ）に示すように、２クロック後、シフトと同時に、上段の右側のデータシフトチェーンＵＳＦＴＣ（２），ＵＳＦＴＣ（３）にデータをセットする。
次に、図３１（Ｅ）に示すように、３クロックで左３シフトを行った後、図３６（Ｆ）に示すように、４クロック後、左シフトと同時に、上段の左側のデータシフトチェーンＵＳＦＴＣ（０），ＵＳＦＴＣ（１）にデータをセットする。このとき、下段の左側のデータシフトチェーンＵＳＦＴＣ（０），ＵＳＦＴＣ（１）に次行の隣接データをロードする。
そして、図３１（Ｇ）に示すように、５クロック後、右半分の演算器、すなわちＰＯＰ２，ＰＯＰ３の演算器ＰＯＰＥ２０〜ＰＯＰＥ２３，ＰＯＰＥ３０〜ＰＯＰＥ３３は第１行目の演算を完了する。
次に、図３１（Ｈ）に示すように、６クロック後、シフトと同時に上段の右側のデータシフトチェーンＵＳＦＴＣ（２），ＵＳＦＴＣ（３）に２行目の先頭データをセットする。
さらに、図３２（Ｉ）に示すように、７クロック後、左シフトを行う。
そして、図３２（Ｊ）に示すように、８クロック後、シフトと同時に、上段の左側のデータシフトチェーンＵＳＦＴＣ（０），ＵＳＦＴＣ（１）に２行目のデータをセットする。このとき、下段右側のデータシフトチェーンＬＳＦＴＣ（０）に３行目の隣接データをロードする。
この状態は、４クロック後の状態と同じである。
以後、４クロックから７クロック後までの動作を繰り返して行うことにより、常に連続して演算を行うことができる。
【０１５９】
なお、各演算器ＰＯＰＥ００〜ＰＯＰＥ０３，ＰＯＰＥ１０〜ＰＯＰＥ１３，ＰＯＰＥ２０〜ＰＯＰＥ２３，ＰＯＰＥ３０〜ＰＯＰＥ３３は、直下のシフトレジスタにデータがロードされる際、０回目、４回目、８回目、…、すなわちＫｙ×ｎ回目（ｎは０以上の整数）のロードの際に、アキュムレータを初期化することで、縦方向に４ずつずれた位置での演算が行われる。
【０１６０】
ここで、データシフトチェーン上で、間隙レジスタＧＲＥＧを含まない一連のシフトレジスタ（実際はセレクタを含む）とこれに対応する演算器のアレイであるピクセル演算プロセッサＰＯＰにより構成される要素集合体をブロックとして定義する。なお、メモリの構成とは同一である必要はない。
【０１６１】
図３３は、このブロックについて模式的に示す図である。
図３３の例では、ＰＯＰ０とＰＯＰ１、これらに対応する上段、下段のデータシフトチェーン用シフトレジスタによりブロックＢＬＫ０が構成されており、ＰＯＰ２と、これらに対応する上段、下段のデータシフトチェーン用シフトレジスタによりブロックＢＬＫ１が構成されており、ＰＯＰ３と、これらに対応する上段、下段のデータシフトチェーン用シフトレジスタによりブロックＢＬＫ２が構成されている。
そして、ブロックＢＬＫ０とブロックＢＫ１との間の配線には２個の間隙レジスタＧＲＥＧが挿入され、ブロックＢＬＫ１とブロックＢＬＫ２ＴＯの間の配線には１個の間隙レジスタＧＲＥＧが挿入され、ブロックＢＬＫ０とブロックＢＫ２との間の配線には２個の間隙レジスタＧＲＥＧが挿入されている。
なお、図３３は一例であり、たとえば各ＰＯＰを一つのブロックとして位置付けすることも可能である。
【０１６２】
このようにブロックを定義した場合のメモリから上段、下段のシフトチェーンにデータをロードするタイミングは、基本的には、まず、隣接領域終端にあるブロックが、データを下段シフトチェーンにロードする。
そして、下段シフトチェーンから上段シフトチェーンに連なる各シフトレジスタは、自シフトレジスタの右に隣接するシフトレジスタに有効なデータが書き込まれるのと同時に、自シフトレジスタに有効なデータを書き込む。
すなわち、下段シフトチェーンも上段シフトチェーンも、スキャンチェーン上に空きができないようにデータをロードしていく。
【０１６３】
図３４は、このブロックを定義した場合のメモリから上段、下段のデータシフトチェーンにデータをロードするタイミングについて模式的に示す図である。
まず、図３４（Ａ）に示すような初期状態から、図３４（Ｂ）に示すように、隣接領域の終端側データを読み出す。
そして、この例では、間隙レジスタが２段であることから、図３４（Ｃ），（Ｄ）に示すように、２クロック後、左２シフトと同時にその左側のデータをセットする。
すなわち、動作は、隣接領域の終端に対応するブロック（隣接領域終端ブロックという）を、図３４（Ｂ）に示すように、隣接領域のデータを下段シフトチェーンＬＳＦＴＣ（２），ＬＳＦＴＣ（３）にセットする。
下段シフトチェーン上で、メモリの左側に位置するブロックは、自ブロックの左端と、隣接領域終端ブロックの右端との間にある間隙レジスタＧＲＥＧの段数と等しいクロックサイクル後に、直下のメモリからデータをロードする。
たとえば間隙レジスタが０段の場合には同時に、間隙レジスタが１段の場合には、１クロック後に、間隙レジスタが２段の場合には２クロック後に、直下のメモリからデータをロードする。
【０１６４】
図３５は、ブロックを定義した場合のメモリから上段、下段のデータシフトチェーンにデータをロードするタイミングの例について模式的に示す図である。
この例では、各ＰＯＰ０〜ＰＯＰ３および対応する上段、下段シフトチェーンのそれぞれがブロックＢＬＫ０〜ＢＬＫ３を構成し、ブロックＢＬＫ０とブロックＢＬＫ１間には１段の間隙レジスタが配置され、ブロックＢＬＫ１とブロックＢＬＫ２間には２段の間隙レジスタが配置され、ブロックＢＬＫ２とブロックＢＬＫ３間には１段の間隙レジスタが配置され、ブロックＢＬＫ０とブロックＢＬＫ３間には２段の間隙レジスタが配置されている。
【０１６５】
そして、ブロックＢＬＫ３が隣接領域終端ブロックである場合、ブロックＢＬＫ２はブロックＢＬＫ３との間に１段の間隙レジスタがあるので、１クロック後に下段シフトチェーンにデータをロードする。
ブロックＢＬＫ１はブロックＢＬＫ３との間に３段の間隙レジスタがあるので、３クロック後に下段シフトチェーンにデータをロードする。
ブロックＢＬＫ０はブロックＢＬＫ３との間に４段の間隙レジスタがあるので、４クロック後に下段シフトチェーンにデータをロードする。
【０１６６】
具体的には、図３５（Ａ）の初期状態から図３５（Ｂ）に示すように、ブロックＢＬＫ３が隣接領域終端のデータをロードする。
次に、図３５（Ｃ）に示すように、１クロック後、ブロックＢＬＫ２が隣接領域のデータをロードする。
図３５（Ｄ），（Ｅ）に示すように、２クロック、さらに３クロック後、ブロックＢＬＫ１が隣接領域のデータをロードする。
そして、図３５（Ｆ）に示すように、ブロックＢＬＫ０が隣接領域のデータをロードする。
【０１６７】
次に、自ブロックの下段シフトチェーンと上段シフトチェーンの両方に同時にデータをロードしなければならない場合について考察する。
【０１６８】
たとえば図３３に示すような構成の場合、データシフトチェーン上に存在する間隙レジスタの個数とＫｘの関係によっては、自ブロックの下段シフトチェーンと上段シフトチェーンの両方に同時にデータをロードしなければならないタイミングが生じる。
【０１６９】
簡単な解決策としては、第１に、下段または上段のデータシフトチェーンに先にデータをロードし、次サイクルに残りの方にデータをロードする。
この場合、シフト動作が一旦停止するため、処理能力が低下する。
【０１７０】
第２に、２つの異なるデータを同時に行えるメモリを使用し、それぞれの読み出し（リード）ポートから上段用データ、下段用データを同時に読み出し、それぞれをデータシフトチェーンにロードする。
この場合、一般に２リードポートのメモリは、１リードポートのメモリに比較してシリコン面積が大きく、コスト高となる。
【０１７１】
ここで、Ｋｘ−１≦Ｗの場合の動作の周期性について考察する。
下段シフトチェーンへのデータのロードに関しては、１行の演算はＫｘサイクルで終了することから、下段シフトチェーンへのロードはＫｘサイクル毎に行えば良い。
上段シフトチェーンへのデータのロードタイミングに関しては、あるブロックに着目した場合、自ブロックの下段シフトチェーンの左から、次ブロックの上段シフトチェーンの右端の間に存在する間隙レジスタの総数をＧｔとする。
上述した手順でシフト動作と、上段、下段のシフトチェーンへのデータロードを行っていた場合、自ブロックの下段シフトチェーンへのデータのロード後、Ｇｔサイクル後に上段シフトチェーンにデータをロードする必要がある。
上述したように、下段シフトチェーンへのデータロードは、Ｋｘサイクル毎に行うので、Ｇｔ＝Ｋｘの場合、上段シフトチェーンへのデータロードタイミングと、下段シフトチェーンへのデータロードタイミングが同じになり、前述したような問題が生じる。
【０１７２】
この問題の解決策としては、次の２つの方法を採ることができる。
【０１７３】
第１の解決策は、Ｋｘのとり得る値が既知の場合、全てのブロックに対してＫｘ≠Ｇとなるように、間隙レジスタの個数を調整する。
たとえば、２≦Ｋｘ＜ｎならば、Ｇｔ＝１またはＧｔ≧ｎとなるように間隙レジスタを調整する。
Ｋｘ｛２，４，５｝ならば、Ｇｔ＝３となるように間隙レジスタを調整する。
【０１７４】
第２の解決策は、２≦Ｋｘ＜ｎで前記のような遅延時間の問題からＧｔ＝１とできず、かつ、ｎが大きいためＧｔ≧ｎとすると回路が大幅に大きくなってしまう場合、実効的に動作する間隙レジスタの個数を変えられるようにしておき、使用するＫｘに応じてＧｔ＝Ｋｘとならないように調整する。
具体的には、図３６（または図１７）に示すように、セレクタＧＳＥＬと間隙レジスタＡＲＥＧからなる間隙調整部ＧＡＤＪを設ける。
図３６の例では、セレクタＧＳＥＬで下側の入力を選択すれば、実効的に間隙レジスタ数は２であり、セレクタＧＳＥＬで上側の入力を選択すれば、実効的に間隙レジスタ数は３となる。
【０１７５】
Ｋｘ−１≦Ｗの場合の動作の周期性のうち、演算器の直下のメモリから上段シフトチェーンへの読み出しの周期性については、横幅Ｋｘの領域内にあるデータに対して演算を行うのであることから、Ｋｘサイクル毎に１行分の演算が終了する。
演算器の直下のメモリから上段シフトチェーンへの読み出しを行うことは、各行の先頭データをセットすることである。
したがって、演算器の直下のメモリから上段シフトチェーンへの読み出しは、Ｋｘサイクル毎に行えば良い。
下段シフトチェーンへのデータロードに関しては、上記したと同様に、１行の演算は、Ｋｘサイクル毎に終了することから、下段シフトチェーンへのロードはＫｘサイクル毎に行えば良い。
【０１７６】
図３７は、間隙レジスタおよび間隙調整部を設けた具体的な回路例を示す図である。
この例は、一つのメモリＭＲＹ（０）と、４つの演算器ＰＯＰＥ０〜ＰＯＰＥ３からなるＰＯＰ０と、下段シフトチェーンＬＳＦＴＣ（０）と、上段シフトチェーンＵＳＦＴＣ（０）とを含むブロックＢＬＫ０において、下段シフトチェーンＬＳＦＴＣ（０）の出力側に、２個の間隙レジスタＬＧＲＥＧ１１，ＬＧＲＥＧ１２、および間隙調整部ＬＧＡＤＪ１を縦続接続し、上段シフトチェーンＵＳＦＴＣ（０）の出力側に、２個の間隙レジスタＵＧＲＥＧ１１，ＵＧＲＥＧ１２、および間隙調整部ＵＧＡＤＪ１を縦続接続して構成されている。
そして、下段シフトチェーンＬＳＦＴＣ（０）と、上段シフトチェーンＵＳＦＴＣ（０）の各セレクタＬＳＬＣ０〜ＬＳＬＣ３，ＵＳＬＣ０〜ＵＳＬＣ３の選択制御は制御回路ＣＴＬ１により制御信号Ｓ１，Ｓ２を用いて行われる。
一方、間隙調整部ＬＧＡＤＪ１およびＵＧＡＤＪ１のセレクタＬＳＥＬ１，ＵＳＥＬ２１の選択制御は制御回路ＣＴＬ２により制御信号Ｓ３，Ｓ４を用いて行われる。
また、各演算器ＰＯＰＥ０〜ＰＯＰＥ３は、乗算器ＭＵＬ，加算器ＡＤＤ、セレクタＳＥＬ、および積和レジスタＭＲＥＧにより構成されている。
【０１７７】
制御回路ＣＴＬ１は、メモリＭＲＹ（０）からのデータ読み出しと、シフトレジスタへのデータのロードを制御する。
メモリＭＲＹ（０）からの出力を、上段シフトチェーンＵＳＦＴＣ（０）にセットする場合には、セレクタＵＳＬＣ０〜ＵＳＬＣ３を制御してメモリＭＲＹ（０）の出力を選択し、メモリＭＲＹ（０）からの出力が、シフトレジスタＵＳＲＧ０〜ＵＳＲＧ３に入力されるように制御する。
上段シフトチェーンＵＳＦＴＣ（０）上のデータをシフトさせる場合には、同セレクタは、シフトチェーン上の下段のレジスタの出力を選択する。
メモリＭＲＹ（０）からの出力を、下段シフトチェーンＬＳＦＴＣ（０）にセットする場合には、セレクタＬＳＬＣ０〜ＬＳＬＣ３を制御し、メモリＭＲＹ（０）の出力を選択し、シフトレジスタＬＳＲＧ０〜ＬＳＲＧ３に入力されるように制御する。
【０１７８】
制御回路ＣＴＬ２は、間隙レジスタの段数を制御する。制御回路ＣＴＬ２の内部には、制御情報を保持する図示しないレジスタを有し、動作開始前に、外部から制御情報が書き込まれる。
たとえば全体の動作を制御するＣＰＵが、これから行おうとする処理のＫｘから判断しＫｘ≠Ｇｔとなるように制御情報を決定し、制御回路ＣＴＬ２内のレジスタにセットする。
たとえば図中下段の間隙レジスタＬＧＲＥＧ１１，ＬＧＲＥＧ１２に関してＫｘの値から判断してＧｔが２以外でなければならないと判断された場合、制御回路ＣＴＬ２に対して、間隙調整部ＬＧＡＤＪ１のセレクタＬＧＳＥＬ１が間隙レジスタＬＡＲＥＧ１の出力を選択するように制御情報を書き込み、Ｇｔ＝３となるように制御する。
また、Ｇｔが３以外でなければならないと判断された場合、間隙レジスタＬＡＲＥＧ１の出力を選択しないように制御情報を書き込み、Ｇｔ＝２とする。上側の間隙調整部ＵＧＡＤＪ１に関しても同様である。
【０１７９】
なお、図３７中、ＳＯＬ０は下段シフトチェーンのシフトアウトデータを示し、隣接するブロックの下段シフトチェーンの入力、または下段シフトチェーンの最左側の場合は、上段シフトチェーンの最右側の入力に供給される。
また、ＳＯＵ０は、上段シフトチェーンのシフトアウトデータを示し、隣接するブロックの上段シフトチェーンの入力に供給される。
【０１８０】
次に、図３８に示すような回路を用いた具体的な動作例に説明する。
図４３の回路は、簡単化のため、一つのリードポートを有する８つのメモリＭＲＹ（０）〜ＭＲＹ（７）と、８つの演算器ＰＯＰＥ０〜ＰＯＰＥ７からなるＰＯＰ０と、下段シフトチェーンＬＳＦＴＣ（０）と、上段シフトチェーンＵＳＦＴＣ（０）とを含むブロックＢＬＫ０において、下段シフトチェーンＬＳＦＴＣ（０）の出力側（左端）と上段シフトチェーンＵＳＦＴＣ（０）の右端間に２個の間隙レジスタＬＧＲＥＧ１１，ＬＧＲＥＧ１２、および間隙調整部ＬＧＡＤＪ１を縦続接続した構成を有している。
そして、下段シフトチェーンＬＳＦＴＣ（０）と、上段シフトチェーンＵＳＦＴＣ（０）の各セレクタＬＳＬＣ０〜ＬＳＬＣ６，ＵＳＬＣ０〜ＵＳＬＣ７の選択制御は制御回路ＣＴＬ１により制御信号Ｓ１，Ｓ２を用いて行われる。
一方、間隙調整部ＬＧＡＤＪ１のセレクタＬＳＥＬ１の選択制御は制御回路ＣＴＬ２により制御信号Ｓ３を用いて行われる。
また、各演算器ＰＯＰＥ０〜ＰＯＰＥ３は、乗算器ＭＵＬ，加算器ＡＤＤ、セレクタＳＥＬ、および積和レジスタＭＲＥＧにより構成されている。
【０１８１】
ここで、カーネルサイズ３×３のコンボリューションフィルタリング処理について説明する。
図３９に示すような、画面領域において、Ｐ（ｘ，ｙ）は位置ｘ，ｙにあたるピクセルの値を表す。
縦３ピクセル×横３ピクセルの領域内のピクセルに対して、以下の式で表される演算を行う。
【０１８２】
【数６】
2004013873.tif 000006
【０１８３】
以下の動作例では、ｘ＝０〜７、ｙ＝０についてｓ（ｘ，ｙ）を求める。
図３８の回路において、メモリＭＲＹ（０）〜ＭＲＹ（７）からは、それぞれ図４０に示す太線内のピクセルの値を読み出すことができるものとする。
具体的には、図４０に示すように、メモリＭＲＹ（０）はＰ（０，０）、Ｐ（０，１）、Ｐ（０，２）を保持し、メモリＭＲＹ（１）はＰ（１，０）、Ｐ（１，１）、Ｐ（１，２）を保持し、メモリＭＲＹ（２）はＰ（２，０）、Ｐ（２，１）、Ｐ（２，２）を保持し、メモリＭＲＹ（３）はＰ（３，０）、Ｐ（３，１）、Ｐ（３，２）を保持し、メモリＭＲＹ（４）はＰ（４，０）、Ｐ（４，１）、Ｐ（４，２）を保持し、メモリＭＲＹ（５）はＰ（５，０）、Ｐ（５，１）、Ｐ（５，２）を保持し、メモリＭＲＹ（６）はＰ（６，０）、Ｐ（６，１）、Ｐ（６，２）を保持し、メモリＭＲＹ（７）はＰ（７，０）、Ｐ（７，１）、Ｐ（７，２）を保持する。
以下同様にして、メモリＭＲＹ（０）はＰ（８，０）、Ｐ（８，１）、Ｐ（８，２）を保持し、メモリＭＲＹ（１）はＰ（９，０）、Ｐ（９，１）、Ｐ（９，２）を保持する。
【０１８４】
このような状態における動作を、図４１に関連付けて説明する。
【０１８５】
まず、事前準備として間隙レジスタの段数の調整を行う。
３×３のコンポリューションフィルタの場合、Ｋｘ＝３であることから、間隙レジスタの段数は３であってはいけない。したがって、制御回路ＣＴＬ２に対し制御情報を与え、間隙調整セレクタＬＧＳＥＬ１を間隙レジスタＬＧＲＥＧ１２の出力を選択するように制御する。
【０１８６】
サイクル１：
サイクル１では、メモリＭＲＹ（０）、ＭＲＹ（１）を制御し、各々からデータＰ（８，０），Ｐ（９，０）を読み出す。
制御回路ＣＴＬ１の制御信号Ｓ１により下段シフトチェーンＬＳＦＴＣ（０）のセレクタＬＳＬＣ０〜ＬＳＬＣ６を制御し、各メモリＭＲＹ（０）〜ＭＲＹ（７）からの出力を選択する。
【０１８７】
サイクル２：
下段シフトチェーンＬＳＦＴＣ（０）のシフトレジスタＬＳＲＧ０、ＬＳＲＧ１に各々メモリＭＲＹ（０），ＭＲＹ（１）から読み出された値がセットされる。
制御回路ＣＴＬ１の制御信号Ｓ１により下段シフトチェーンＬＳＦＴＣ（０）のセレクタＬＳＬＣ０〜ＬＳＬＣ６を制御し、下段シフトチェーン前段からの出力を選択する。
【０１８８】
サイクル３：
ソース入力ＳＩ０〜ＳＩ７にフィルター係数Ｋ（０，０）を入力する。
そして、データシフトチェーン全体が１段シフトされる。
制御回路ＣＲＬ１によりメモリＭＲＹ（０）〜ＭＲＹ（７）を制御し、各メモリＭＲＹ（０）〜ＭＲＹ（７）からそれぞれＰ（０，０）〜Ｐ（７，０）の値を読み出す。
制御回路ＣＴＬ１の制御信号Ｓ２により上段シフトチェーンＵＳＦＴＣ（０）のセレクタＵＳＬＣ０〜ＵＳＬＣ７を制御し、各メモリＭＲＹ（０）〜ＭＲＹ（７）からの出力を選択する。
【０１８９】
サイクル４：
ソース入力ＳＩ０〜ＳＩ７の値がソースレジスタＳＣＲＧ０〜ＳＣＲＧ７にセットされる。
ソース入力ＳＩ０〜ＳＩ７にフィルター係数Ｋ（１，０）を入力する。
制御回路ＣＴＬ１によりメモリＭＲＹ（０），ＭＲＹ（１）を制御し、各々からＰ（８，１），Ｐ（９，１）を読み出す。
制御回路ＣＴＬ１の制御信号Ｓ１により下段シフトチェーンＬＳＦＴＣ（０）のセレクタＬＳＬＣ０〜ＬＳＬＣ６を制御し、各メモリＭＲＹ（０）〜（ＭＲＹ（７）からの出力を選択する。
間隙レジスタＬＧＲＥＧ１１，ＬＧＲＥＧ１２、下段シフトチェーンＬＳＦＴＣ（０）上の値が１段シフトされる。
上段シフトチェーンＵＳＦＴＣ（０）のシフトレジスタＵＳＲＧ０〜ＵＳＲＧ７に、メモリＭＲＹ（０）〜ＭＲＹ（７）からの出力値がセットされる。
制御回路ＣＴＬ１の制御信号Ｓ２により上段シフトチェーンＵＳＦＴＣ（０）のセレクタＵＳＬＣ０〜ＵＳＬＣ７を制御し、シフトチェーン前段からの入力を選択する。
制御回路ＣＲＬ１は制御信号Ｓ５により、演算器ＰＯＰＥ０〜ＰＯＰＥ７内のセレクタＳＥＬを制御し、乗算器ＭＵＬの出力を選択させる。
これにより、乗算器ＭＵＬからの乗算結果が積算レジスタＭＲＥＧにロードされる。
【０１９０】
サイクル５：
ソース入力ＳＩ０〜ＳＩ７の値がソースレジスタＳＣＲＧ０〜ＳＣＲＧ７にセットされる。
ソース入力ＳＩ０〜ＳＩ７にフィルタ係数Ｋ（２，０）を入力する。
上段シフトチェーンＵＳＦＴＣ（０）、間隙レジスタＬＧＲＥＧ１１，ＬＧＲＥＧ１２上の値が１段シフトされる。
下段シフトチェーンＬＳＦＴＣ（０）のシフトレジスタＬＳＲＧ０、ＬＳＲＧ１に各々メモリＭＲＹ（０），ＭＲＹ（１）から読み出された値がセットされる。
制御回路ＣＴＬ１の制御信号Ｓ１により下段シフトチェーンＬＳＦＴＣ（０）のセレクタＬＳＬＣ０〜ＬＳＬＣ６を制御し、下段シフトチェーン前段からの出力を選択する。
制御回路ＣＴＬ１は制御信号Ｓ５により、演算器ＰＯＰＥ０〜ＰＯＰＥ７内のセレクタＳＥＬを制御し、加算器ＡＤＤの出力を選択させる。
これにより、乗算器ＭＵＬからの乗算結果と積算器の出力の和が積算レジスタＭＲＥＧにロードされる。
【０１９１】
サイクル６：
ソース入力ＳＩ０〜ＳＩ７の値がソースレジスタＳＣＲＧ０〜ＳＣＲＧ７にセットされる。
ソース入力ＳＩ０〜ＳＩ７にフィルター係数Ｋ（０，１）を入力する。
データシフトチェーン全体が１段シフトされる。
制御回路ＣＴＬ１によりメモリＭＲＹ（０）〜ＭＲＹ（７）を制御し、各メモリＭＲＹ（０）〜ＭＲＹ（７）からそれぞれＰ（０，１）〜Ｐ（７，１）の値を読み出す。
制御回路ＣＴＬ１の制御信号Ｓ２により上段シフトチェーンＵＳＦＴＣ（０）のセレクタＵＳＬＣ０〜ＵＳＬＣ７を制御し、各メモリＭＲＹ（０）〜ＭＲＹ（７）からの出力を選択する。
制御回路ＣＴＬ１は制御信号Ｓ５により、演算器ＰＯＰＥ０〜ＰＯＰＥ７内のセレクタＳＥＬを制御し、加算器ＡＤＤの出力を選択させる。
これにより、乗算器ＭＵＬからの乗算結果と積算器の出力の和が積算レジスタＭＲＥＧにロードされる。
【０１９２】
サイクル７：
ソース入力ＳＩ０〜ＳＩ７の値がソースレジスタＳＣＲＧ０〜ＳＣＲＧ７にセットされる。
ソース入力ＳＩ０〜ＳＩ７にフィルター係数Ｋ（１，１）を入力する。
制御回路ＣＴＬ１によりメモリＭＲＹ（０），ＭＲＹ（１）を制御し、各メモリＭＲＹ（０），ＭＲＹ（１）からＰ（８，２）、Ｐ（９，２）を読み出す。
制御回路ＣＴＬ１の制御信号Ｓ１により下段シフトチェーンＬＳＦＴＣ（０）のセレクタＬＳＬＣ０〜ＬＳＬＣ６を制御し、各メモリＭＲＹ（０）〜（ＭＲＹ（７）からの出力を選択する。
間隙レジスタＬＧＲＥＧ１１，ＬＧＲＥＧ１２、下段シフトチェーンＬＳＦＴＣ（０）上の値が１段シフトされる。
上段シフトチェーンＵＳＦＴＣ（０）のシフトレジスタＵＳＲＧ０〜ＵＳＲＧ７に、メモリＭＲＹ（０）〜ＭＲＹ（７）からの出力値がセットされる。
制御回路ＣＴＬ１の制御信号Ｓ２により上段シフトチェーンＵＳＦＴＣ（０）のセレクタＵＳＬＣ０〜ＵＳＬＣ７を制御し、データシフトチェーン前段からの入力を選択する。
制御回路ＣＴＬ１は制御信号Ｓ５により、演算器ＰＯＰＥ０〜ＰＯＰＥ７内のセレクタＳＥＬを制御し、加算器ＡＤＤの出力を選択させる。
これにより、乗算器ＭＵＬからの乗算結果と積算器の出力の和が積算レジスタＭＲＥＧにロードされる。
【０１９３】
サイクル８：
ソース入力ＳＩ０〜ＳＩ７の値がソースレジスタＳＣＲＧ０〜ＳＣＲＧ７にセットされる。
ソース入力ＳＩ０〜ＳＩ７にフィルタ係数Ｋ（２，１）を入力する。
上段シフトチェーンＵＳＦＴＣ（０）、間隙レジスタＬＧＲＥＧ１１，ＬＧＲＥＧ１２上の値が１段シフトされる。
下段シフトチェーンＬＳＦＴＣ（０）のシフトレジスタＬＳＲＧ０，ＬＳＲＧ１に各々メモリＭＲＹ（０），ＭＲＹ（１）から読み出された値がセットされる。
制御回路ＣＴＬ１の制御信号Ｓ１により下段シフトチェーンＬＳＦＴＣ（０）のセレクタＬＳＬＣ０〜ＬＳＬＣ６を制御し、下段シフトチェーン前段からの出力を選択する。
制御回路ＣＴＬ１は制御信号Ｓ５により、演算器ＰＯＰＥ０〜ＰＯＰＥ７内のセレクタＳＥＬを制御し、加算器ＡＤＤの出力を選択させる。
これにより、乗算器ＭＵＬからの乗算結果と積算器の出力の和が積算レジスタＭＲＥＧにロードされる。
【０１９４】
サイクル９：
ソース入力ＳＩ０〜ＳＩ７の値がソースレジスタＳＣＲＧ０〜ＳＣＲＧ７にセットされる。
ソース入力ＳＩ０〜ＳＩ７にフィルタ係数Ｋ（０，２）を入力する。
データシフトチェーン全体が１段シフトされる。
制御回路ＣＲＬ１によりメモリＭＲＹ（０）〜ＭＲＹ（７）を制御し、各メモリＭＲＹ（０）〜ＭＲＹ（７）からそれぞれＰ（０，２）〜Ｐ（７，２）の値を読み出す。
制御回路ＣＴＬ１の制御信号Ｓ２により上段シフトチェーンＵＳＦＴＣ（０）のセレクタＵＳＬＣ０〜ＵＳＬＣ７を制御し、各メモリＭＲＹ（０）〜ＭＲＹ（７）からの出力を選択する。
制御回路ＣＴＬ１は制御信号Ｓ５により、演算器ＰＯＰＥ０〜ＰＯＰＥ７内のセレクタＳＥＬを制御し、加算器ＡＤＤの出力を選択させる。
これにより、乗算器ＭＵＬからの乗算結果と積算器の出力の和が積算レジスタＭＲＥＧにロードされる。
【０１９５】
サイクル１０：
ソース入力ＳＩ０〜ＳＩ７の値がソースレジスタＳＣＲＧ０〜ＳＣＲＧ７にセットされる。
ソース入力ＳＩ０〜ＳＩ７にフィルタ係数Ｋ（１，２）を入力する。
間隙レジスタＬＧＲＥＧ１１，ＬＧＲＥＧ１２、下段シフトチェーンＬＳＦＴＣ（０）上の値が１段シフトされる。
上段シフトチェーンＵＳＦＴＣ（０）のシフトレジスタＵＳＲＧ０〜ＵＳＲＧ７に、メモリＭＲＹ（０）〜ＭＲＹ（７）からの出力値がセットされる。
制御回路ＣＴＬ１の制御信号Ｓ２により上段シフトチェーンＵＳＦＴＣ（０）のセレクタＵＳＬＣ０〜ＵＳＬＣ７を制御し、データシフトチェーン前段からの入力を選択する。
制御回路ＣＴＬ１は制御信号Ｓ５により、演算器ＰＯＰＥ０〜ＰＯＰＥ７内のセレクタＳＥＬを制御し、加算器ＡＤＤの出力を選択させる。
これにより、乗算器ＭＵＬからの乗算結果と積算器の出力の和が積算レジスタＭＲＥＧにロードされる。
【０１９６】
サイクル１１：
ソース入力ＳＩ０〜ＳＩ７の値がソースレジスタＳＣＲＧ０〜ＳＣＲＧ７にセットされる。
ソース入力ＳＩ０〜ＳＩ７にフィルタ係数Ｋ（２，２）を入力する。
上段シフトチェーンＵＳＦＴＣ（０）、間隙レジスタＬＧＲＥＧ１１，ＬＧＲＥＧ１２上の値が１段シフトされる。
制御回路ＣＴＬ１は制御信号Ｓ５により、演算器ＰＯＰＥ０〜ＰＯＰＥ７内のセレクタＳＥＬを制御し、加算器ＡＤＤの出力を選択させる。
これにより、乗算器ＭＵＬからの乗算結果と積算器の出力の和が積算レジスタＭＲＥＧにロードされる。
【０１９７】
サイクル１２：
ソース入力ＳＩ０〜ＳＩ７の値がソースレジスタＳＣＲＧ０〜ＳＣＲＧ７にセットされる。
データシフトチェーン全体が１段シフトされる。
これにより、乗算器ＭＵＬからの乗算結果と積罪器の出力の和が積算レジスタＭＲＥＧにロードされる。
【０１９８】
以上のような動作を行うと、乗算器ｎの入力にはサイクル４以降、以下の値が順次入力される。
｛ｋ（０，０），Ｐ（ｎ＋０，０）｝，｛ｋ（１，０），Ｐ（ｎ＋１，０｝，｛ｋ（２，０），Ｐ（ｎ＋２，０）｝，｛ｋ（０，１），Ｐ（ｎ＋０，１）｝；，｛ｋ（１，１），Ｐ（ｎ＋１，１｝，｛ｋ（２，１），Ｐ（ｎ＋２，１）｝，｛ｋ（０，２），Ｐ（ｎ＋０，２）｝，｛ｋ（１，２），Ｐ（ｎ＋１，２｝，｛ｋ（２，２），Ｐ（ｎ＋２，２）｝
【０１９９】
演算器ＰＯＰＥ０〜ＰＯＰＥ７内では、サイクル４では、乗算器ＭＵＬからの積が積算レジスタＭＲＥＧにロードされ、以降、積算レジスタＭＲＥＧの値と、そのサイクルの乗算器ＭＵＬからの積の和がロードされていく。
その結果、サイクル１２の次サイクルでは、各演算出力ｎ＝ｓ（ｎ，０）には次式で示される値が出力され、ｙ＝０，ｘ＝０〜７についてのｓ（ｘ，ｙ）が求まる。
【０２００】
【数７】
2004013873.tif 000007
【０２０１】
次に、依存テクスチャ有りの場合のグラフィックス処理を図４２および図４３に関連付けて説明する。
【０２０２】
この場合、ラスタライザ１３１１において、ウィンドウ座標（Ｘ，Ｙ，Ｚ）、プライマリカラー（ＰＣ；Ｒｐ，Ｇｐ，Ｂｐ，Ａｐ）、セカンダリカラー（ＳＣ；Ｒｓ，Ｇｓ，Ｂｓ，Ａｓ）、Ｆｏｇ係数（ｆ）、テクスチャ座標（Ｖ１ｘ，Ｖ１ｙ，Ｖ１ｚ）の各種ピクセルデータが生成される。
【０２０３】
そして、生成されたウィンドウ座標（Ｘ，Ｙ，Ｚ）は、レジスタユニット（ＲＧＵ）１３１２４の特定のＦＩＦＯレジスタを通して、直接的にピクセル演算プロセッサ（ＰＯＰ）群１３１２４に供給される、
また、生成されたテクスチャ座標（Ｖ１ｘ，Ｖ１ｙ，Ｖ１ｚ）が、クロスバー回路１３１２５、レジスタユニット（ＲＧＵ）１３１２４のＦＩＦＯレジスタを通してグラフィックスユニット（ＧＲＵ）１２１２１に供給される。
さらに、生成されたプライマリカラー（ＰＣ）、セカンダリカラー（ＳＣ）、Ｆｏｇ係数（Ｆ）が、クロスバー回路１３１２５、レジスタユニット（ＲＧＵ）１３１２４のＦＩＦＯレジスタを通してピクセルエンジン（ＰＸＥ）１３１２２に供給される。
【０２０４】
グラフィックスユニット（ＧＲＵ）１３１２１では、供給されたテクスチャ座標（Ｖ１ｘ，Ｖ１ｙ，Ｖ１ｚ）データに基づいて、パースペクティブコレクション、ＬＯＤ計算によるミップマップ（ＭＩＰＭＡＰ）レベルの算出、立方体マップ（ＣｕｂｅＭａｐ）の面選択や正規化テクセル座標（ｓ，ｔ）の算出処理が行われる
そして、グラフィックスユニット（ＧＲＵ）１３１２１で生成された、たとえば正規化テクセル座標（ｓ，ｔ）およびＬＯＤデータ（ｌｏｄ）を含む１組のデータ（ｓ１，ｔ１，ｌｏｄ１）が、たとえばクロスバー回路１３１２５を通さず直接的にピクセル演算プロセッサ（ＰＯＰ）群１３１２３に供給される。
【０２０５】
ピクセル演算プロセッサ（ＰＯＰ）群１３１２３では、図４３に示すように、フィルタ機能ユニットＦＦＵにおいてグラフィックスユニット（ＧＲＵ）１３１２１から直接的に供給された（ｓ１，ｔ１，ｌｏｄ１）の値に基づいて、テクスチャアクセスのための（ｕ，ｖ）アドレス計算が行われ、アドレスデータ（ｕｉ，ｖｉ，ｌｏｄｉ）がアドレス生成器ＡＧに供給され、係数計算のためにデータ（ｕｆ，ｖｆ，ｌｏｄｆ）が係数生成部ＣＯＦに供給される。
【０２０６】
アドレス生成器ＡＧにおいては、アドレスデータ（ｕｉ，ｖｉ，ｌｏｄｉ）を受けて、４近傍フィルタリングを行うための４近傍の（ｕ，ｖ）座標、すなわち、（ｕ０，ｖ０），（ｕ１，ｖ１），（ｕ２，ｖ２），（ｕ３，ｖ３）が計算され、メモリコントローラＭＣに供給される。
これにより、メモリモジュール１３２から所望のテクセルデータがたとえばリードオンリーキャッシュＲＯ＄を通して、ピクセル演算プロセッサ（ＰＯＰ）群１３１２３の各ＰＯＰＥに読み出される。
また、係数生成器ＣＯＦでは、データ（ｕｆ，ｖｆ，ｌｏｄｆ）を受けて、テクスチャフィルタ係数Ｋ（０〜３）が計算され、ピクセル演算プロセッサ（ＰＯＰ）群１３１２３の各ＰＯＰＥに供給される。
そして、ピクセル演算プロセッサ（ＰＯＰ）群１３１２３の各ＰＯＰにおいて、色データ（ＴＲ，ＴＧ，ＴＢ）および混合値（ブレンド値：ＴＡ）が求められ、データ（ＴＲ１，ＴＧ１，ＴＢ１，ＴＡ１）が、クロスバー回路１３１２５を転送されてレジスタユニット（ＲＧＵ）１３１２４の所定のＦＩＦＯレジスタに設定され、この設定データがクロスバー回路１３１２５を介さずに直接的にピクセルエンジン（ＰＸＥ）１３１２２に供給される。
【０２０７】
ピクセルエンジン（ＰＸＥ）１３１２２では、ピクセル演算プロセッサ（ＰＯＰ）群１３１２３によるデータ（ＴＲ１，ＴＧ１，ＴＢ１，ＴＡ１）、並びに、ラスタライザ１３１１によるプライマリカラー（ＰＣ）、セカンダリカラー（ＳＣ）、Ｆｏｇ係数（Ｆ）に基づいて、たとえばＰｉｘｅｌ　Ｓｈａｄｅｒの演算が行われ、テクスチャ座標（Ｖ２ｘ，Ｖ２ｙ，Ｖ２ｚ）が生成され、クロスバー回路１３１２５、レジスタユニット（ＲＧＵ）１３１２４を介してグラフィックスユニット（ＧＲＵ）１３１２１に供給される。
【０２０８】
グラフィックスユニット（ＧＲＵ）１３１２１では、供給されたテクスチャ座標（Ｖ２ｘ，Ｖ２ｙ，Ｖ２ｚ）データに基づいて、パースペクティブコレクション、ＬＯＤ計算によるミップマップ（ＭＩＰＭＡＰ）レベルの算出、立方体マップ（ＣｕｂｅＭａｐ）の面選択や正規化テクセル座標（ｓ，ｔ）の算出処理が行われる。
そして、グラフィックスユニット（ＧＲＵ）１３１２１で生成された、たとえば正規化テクセル座標（ｓ，ｔ）およびＬＯＤデータ（ｌｏｄ）を含むデータ（ｓ２，ｔ２，ｌｏｄ２）が、たとえばクロスバー回路１３１２５を通さず直接的にピクセル演算プロセッサ（ＰＯＰ）群１３１２３に供給される。
【０２０９】
ピクセル演算プロセッサ（ＰＯＰ）群１３１２３では、図４３に示すように、フィルタ機能ユニットＦＦＵにおいてグラフィックスユニット（ＧＲＵ）１３１２１から直接的に供給された（ｓ２，ｔ２，ｌｏｄ２）の値に基づいて、テクスチャアクセスのための（ｕ，ｖ）アドレス計算が行われ、アドレスデータ（ｕｉ，ｖｉ，ｌｏｄｉ）がアドレス生成器ＡＧに供給され、係数計算のためにデータ（ｕｆ，ｖｆ，ｌｏｄｆ）が係数生成部ＣＯＦに供給される。
【０２１０】
アドレス生成器ＡＧにおいては、アドレスデータ（ｕｉ，ｖｉ，ｌｏｄｉ）を受けて、４近傍フィルタリングを行うための４近傍の（ｕ，ｖ）座標、すなわち、（ｕ０，ｖ０），（ｕ１，ｖ１），（ｕ２，ｖ２），（ｕ３，ｖ３）が計算され、メモリコントローラＭＣに供給される。
これにより、メモリモジュール１３２から所望のテクセルデータがたとえばリードオンリーキャッシュＲＯ＄を通して、ピクセル演算プロセッサ（ＰＯＰ）群１３１２３の各ＰＯＰＥに読み出される。
また、係数生成器ＣＯＦでは、データ（ｕｆ，ｖｆ，ｌｏｄｆ）を受けて、テクスチャフィルタ係数Ｋ（０〜３）が計算され、ピクセル演算プロセッサ（ＰＯＰ）群１３１２３の各ＰＯＰＥに供給される。
そして、ピクセル演算プロセッサ（ＰＯＰ）群１３１２３の各ＰＯＰにおいて、色データ（ＴＲ，ＴＧ，ＴＢ）および混合値（ブレンド値：ＴＡ）が求められ、データ（ＴＲ２，ＴＧ２，ＴＢ２，ＴＡ２）が、クロスバー回路１３１２５を転送されてレジスタユニット（ＲＧＵ）１３１２４の所定のＦＩＦＯレジスタに設定され、この設定データがクロスバー回路１３１２５を介さずに直接的にピクセルエンジン（ＰＸＥ）１３１２２に供給される。
【０２１１】
ピクセルエンジン（ＰＸＥ）１３１２２では、ピクセル演算プロセッサ（ＰＯＰ）群１３１２３によるデータ（ＴＲ２，ＴＧ２，ＴＢ２，ＴＡ２）、並びに、ラスタライザ１３１１によるプライマリカラー（ＰＣ）、セカンダリカラー（ＳＣ）、Ｆｏｇ係数（Ｆ）に基づいて、４近傍補間等の所定のフィルタリング演算処理が行われ、色データ（ＦＲ１，ＦＧ１，ＦＢ１）および混合値（ブレンド値：ＦＡ１）が求められ、このデータ（ＦＲ１，ＦＧ１，ＦＢ１，ＦＡ１）が、クロスバー回路１３１２５を転送されてレジスタユニット（ＲＧＵ）１３１２４の所定のＦＩＦＯレジスタに設定され、この設定データがクロスバー回路１３１２５を介さずに直接的にピクセル演算プロセッサ（ＰＯＰ）群１３１２３の所定のＰＯＰ内あるいは別個に設けられてライトユニットＷＵに供給される。
【０２１２】
ライトユニットＷＵでは、ラスタライザ１３１１によるウィンドウ座標（Ｘ，Ｙ，Ｚ）に基づき、たとえばリードライトキャッシュＲＷ＄を通してメモリモジュール１３２からデスティネーション色データ（ＲＧＢ）および混合値データ（Ａ）、並びに奥行きデータ（Ｚ）が読み出される。
そして、ライトユニットＷＵでは、ピクセルエンジン（ＰＸＥ）１３１２２によるデータ（ＦＲ１，ＦＧ１，ＦＢ１，ＦＡ１）、およびリードライトキャッシュＲＷ＄を通してメモリモジュール１３２から読み出しデスティネーション色データ（ＲＧＢ）および混合値データ（Ａ）、並びに奥行きデータ（Ｚ）に基づいて、αブレンディング、各種テスト、ロジカルオペレーションといったグラフィックス処理のピクセル書き込みに必要な演算が行われ、演算結果がリードライトキャッシュＲＷ＄に書き戻される。
【０２１３】
次に、画像処理について説明する。
【０２１４】
まず、図４５に示すようなＳＡＤ（Ｓｕｍｍｅｄ　Ａｂｓｏｌｕｔｅ　Ｄｉｆｆｅｒｅｎｃｅ）処理を行う場合の動作について、図４６に関連付けて説明する。
【０２１５】
ＳＡＤ処理では、図４５（Ａ）に示すような元画像ＯＲＩＭの１ブロック（Ｘ１ｓ，Ｙ１ｓ）に対して、図４５（Ｂ）に示すような参照画像ＲＦＩＭの探索矩形領域ＳＲＧＮ内を１ピクセルずつずらしながら、対応ブロックＢＬＫ内のＳＡＤ（絶対値差）を求めていく。
その中で、ＳＡＤが最小となるブロックの位置（Ｘ２ｓ，ｙ２ｓ）とＳＡＤ値を図４５（Ｃ）に示すように、（Ｘｄ，Ｙｄ）に格納する。
（Ｘ１ｓ，Ｙ１ｓ）はコンテキストとして図示しない上位位置からＰＯＰ内のレジスタに設定される。
【０２１６】
この場合、ラスタライザ１３１１に対して、たとえばグローバルモジュール１２を介して図示しない上位装置から出力された、メモリモジュール１３２（−０〜−３）から参照画像データを読み出すためのソースアドレスおよび画像処理結果を書き込むためのデスティネーションアドレスの生成に必要なコマンドやデータ、たとえば探索矩形領域ＳＲＧＮの幅、高さ（Ｗｓ，Ｈｓ）データ、ブロックサイズ（Ｗｂｋ，Ｈｂｋ）データが入力される。
ラスタライザ１３１１では、入力データに基づいて、メモリモジュール１３２に格納されている参照画像ＲＦＩＭのソースアドレス（Ｘ２ｓ，Ｙ２ｓ）が生成されるとともに、処理結果をメモリモジュール１３２に格納するためのデスティネーションアドレス（Ｘｄ，Ｙｄ）が生成される。
【０２１７】
生成されたデスティネーションアドレス（Ｘｄ，Ｙｄ）は、グラフィックス処理時のウィンドウ座標（Ｘ，Ｙ，Ｚ）の供給ラインが共用され、レジスタユニット（ＲＧＵ）１３１２４の特定のＦＩＦＯレジスタを通して、直接的にピクセル演算プロセッサ（ＰＯＰ）群１３１２４のライトユニットＷＵに供給される。
また、生成された参照画像ＲＦＩＭのソースアドレス（Ｘ２ｓ，Ｙ２ｓ）が、クロスバー回路１３１２５、レジスタユニット（ＲＧＵ）１３１２４のＦＩＦＯレジスタを通してグラフィックスユニット（ＧＲＵ）１２１２１に供給される。ソースアドレス（Ｘ２ｓ，Ｙ２ｓ）は、グラフィックスユニット（ＧＲＵ）１２１２１は素通りして、たとえばクロスバー回路１３１２５を通さず直接的にピクセル演算プロセッサ（ＰＯＰ）群１３１２３に供給される。
【０２１８】
ピクセル演算プロセッサ（ＰＯＰ）群１３１２３では、供給されたソースアドレス（Ｘ１ｓ，Ｙ１ｓ）および（Ｘ２ｓ，Ｙ２ｓ）に基づいて、たとえばリードオンリーキャッシュＲＯ＄、リードライトキャッシュＲＷ＄を介して、メモリモジュール１３２に格納されている元画像ＯＲＩＭおよび参照画像ＲＦＩＭの各データが読み出される。
ここで、元画像ＯＲＩＭの座標はコトテキストとしてレジスタに設定される。参照画像ＲＦＩＭの座標は、たとえば４つのＰＯＰそれぞれが担当するサブブロックの座標が与えられる。
そして、ピクセル演算プロセッサ（ＰＯＰ）群１３１２３では、元画像ＯＲＩＭの１ブロック（Ｘ１ｓ，Ｙ１ｓ）に対して、参照画像ＲＦＩＭの探索矩形領域ＳＲＧＮ内を１ピクセルずつずらしながら、対応サブブロックＢＬＫ内のＳＡＤ（絶対値差）が随時求められる。
そして、各サブブロックの位置位置（Ｘ２ｓ，ｙ２ｓ）と各ＳＡＤ値が、クロスバー回路１３１２５を転送されてレジスタユニット（ＲＧＵ）１３１２４の所定のＦＩＦＯレジスタに設定され、この設定データがクロスバー回路１３１２５を介さずに直接的にピクセルエンジン（ＰＸＥ）１３１２２に転送される。
【０２１９】
ピクセルエンジン（ＰＸＥ）３１２２では、ブロック全体のＳＡＤが集計され、ブロックの位置（Ｘ２ｓ，ｙ２ｓ）とＳＡＤ値が、クロスバー回路１３１２５を転送されてレジスタユニット（ＲＧＵ）１３１２４の所定のＦＩＦＯレジスタに設定され、この設定データがクロスバー回路１３１２５を介さずに直接的にライトユニットＷＵに転送される。
【０２２０】
ライトユニットＷＵでは、ピクセルエンジン（ＰＸＥ）１３１２２によるブロックの位置（Ｘ２ｓ，ｙ２ｓ）とＳＡＤ値の、ラスタライザ１３１１によるデスティネーションアドレス（Ｘｄ，Ｙｄ）への格納処理が行われる。
この場合、たとえば隠面除去（Ｈｉｄｄｅｎ　Ｓｕｒｆａｃｅ　Ｒｅｍｏｖａｌ）を行う機能（Ｚ比較）を用いて、たとえばメモリモジュール１３２からリードライトキャッシュＲＷ＄に読み出されたＳＡＤ値とピクセルエンジン（ＰＸＥ）１３１２２によるＳＡＤ値が比較される。
そして、比較の結果、格納されている値よりピクセルエンジン（ＰＸＥ）１３１２２によるＳＡＤ値が小さい場合に、ピクセルエンジン（ＰＸＥ）１３１２２によるブロックの位置（Ｘ２ｓ，ｙ２ｓ）とＳＡＤ値がデスティネーションアドレス（Ｘｄ，Ｙｄ）にリードライトキャッシュＲＷ＄を介して書き込まれる（更新される）。
【０２２１】
次に、図４７に示すようなコンボリューションフィルタ（Ｃｏｎｖｏｌｕｔｉｏｎ　Ｆｉｌｔｅｒ）処理を行う場合の動作について、図４８に関連付けて説明する。
【０２２２】
コンボリューションフィルタ処理では、図４７（Ａ）に示すような対象画像ＯＢＩＭの各ピクセル（Ｘ１ｓ，Ｙ１ｓ）に対して、フィルタカーネルサイズの周辺ピクセルを読み出し、フィルタ係数を乗算したものを足し合わせ、その結果を図４７（Ｂ）に示すようにデスティネーションアドレス（Ｘｄ，Ｙｄ）に格納する。
なお、フィルタカーネル係数の格納アドレスは、コンテキストとしてＰＯＰ内のレジスタに設定する。
【０２２３】
この場合、ラスタライザ１３１１に対して、たとえばグローバルモジュール１２を介して図示しない上位装置から出力された、メモリモジュール１３２（−０〜−３）から画像データ（ピクセルデータ）を読み出すためのソースアドレスおよび画像処理結果を書き込むためのデスティネーションアドレスの生成に必要なコマンドやデータ、たとえばフィルタカーネルサイズデータ（Ｗｋ，Ｈｋ）が入力される。
ラスタライザ１３１１では、入力データに基づいて、メモリモジュール１３２に格納されている対象画像ＯＢＩＭのソースアドレス（Ｘ１ｓ，Ｙ１ｓ）が生成されるとともに、処理結果をメモリモジュール１３２に格納するためのデスティネーションアドレス（Ｘｄ，Ｙｄ）が生成される。
【０２２４】
生成されたデスティネーションアドレス（Ｘｄ，Ｙｄ）は、グラフィックス処理時のウィンドウ座標（Ｘ，Ｙ，Ｚ）の供給ラインが共用され、レジスタユニット（ＲＧＵ）１３１２４の特定のＦＩＦＯレジスタを通して、直接的にピクセル演算プロセッサ（ＰＯＰ）群１３１２４のライトユニットＷＵに供給される。
また、生成された対象画像ＯＢＩＭのソースアドレス（Ｘ１ｓ，Ｙ１ｓ）が、クロスバー回路１３１２５、レジスタユニット（ＲＧＵ）１３１２４のＦＩＦＯレジスタを通してグラフィックスユニット（ＧＲＵ）１２１２１に供給される。ソースアドレス（Ｘ１ｓ，Ｙ１ｓ）は、グラフィックスユニット（ＧＲＵ）１２１２１は素通りして、たとえばクロスバー回路１３１２５を通さず直接的にピクセル演算プロセッサ（ＰＯＰ）群１３１２３に供給される。
【０２２５】
ピクセル演算プロセッサ（ＰＯＰ）群１３１２３では、供給されたソースアドレス（Ｘ１ｓ，Ｙ１ｓ）に基づいて、たとえばリードオンリーキャッシュＲＯ＄を介して、メモリモジュール１３２に可能されているカーネルサイズの周辺ピクセルが読み出される。
そして、ピクセル演算プロセッサ（ＰＯＰ）群１３１２３では、所定のフィルタ係数が読み出したデータに掛け合わさ、さらにこれらが足し合わされて、その結果である色データ（Ｒ，Ｇ，Ｂ）および混合値データ（Ａ）を含むデータ（Ｒ，Ｇ，Ｂ，Ａ）がクロスバー回路１３１２５、レジスタユニット（ＲＧＵ）１３１２４を介してライトユニットＷＵに転送される。
【０２２６】
ライトユニットＷＵでは、ピクセル演算プロセッサ（ＰＯＰ）群１３１２３によるデータが、リードライトキャッシュＲＷ＄を介してデスティネーションアドレス（Ｘｄ，Ｙｄ）に格納される。
【０２２７】
最後に、図６のシステム構成による動作を説明する。
ここでは、テクスチャ系の処理について説明する。
【０２２８】
まず、ＳＤＣ１１において、３次元座標、法線ベクトル、テクスチャ座標の各頂点データが入力されると、頂点データに対する演算が行われる。
次に、ラスタライゼーション（Ｒａｓｔｅｒｉｚａｔｉｏｎ）に必要な各種パラメータが算出される。
そして、ＳＤＣ１１においては、算出したパラメータが、グローバルモジュール１２を介して全ローカルモジュール１３−０〜１３−３にブロードキャストされる。
この処理において、ブロードキャストされたパラメータは、後述するキャッシュフィルとは別のチャネルを用いて、グローバルモジュール１２を介して各ローカルモジュール１３−０〜１３−３に渡される。ただし、グローバルキャッシュの内容には影響を与えない。
【０２２９】
各ローカルモジュール１３−０〜１３−３では、処理ユニット１３１−０〜１３１−３において、以下の処理が行われる。
すなわち、処理ユニット１３１（−０〜３）においては、ブロードキャストされたパラメータを受け取ると、その三角形が自分が担当する領域、たとえば４×４ピクセルの矩形領域単位でインターリーブされた領域に属しているか否かが判断される。その結果、属している場合には、各種データ（Ｚ、テクスチャ座標、カラーなど）がラスタライズされる。
次に、ＬＯＤ（Ｌｅｖｅｌ　ｏｆ　Ｄｅｔａｉｌ）計算によるミップマップ（ＭＩＰＭＡＰ）レベルの算出や、テクスチャアクセスのための（ｕ，ｖ）アドレス計算が行われる。
【０２３０】
そして、次に、テクスチャの読み出しが行われる。
この場合、各ローカルモジュール１３−０〜１３−３の処理ユニット１３１−０〜１３１−３では、テクスチャリードの際に、まず、ローカルキャッシュ１３３−０〜１３３−３のエントリーがチェックされる。
その結果、エントリーがあった場合には、必要なテクスチャデータが読み出される。
必要とするテクスチャデータがローカルキャッシュ１３３−０〜１３３−３内に無い場合には、各処理ユニット１３１−０〜１３１−３では、グローバルインターフェース１３４−０〜１３４−３を通して、グローバルモジュール１２に対してローカルキャッシュフィルのリクエストが送出される。
【０２３１】
グローバルモジュール１２においては、要求されたブロックデータがグローバルキャッシュ１２１−０〜１２１−３のいずれかにあると判断されると、対応するグローバルキャッシュ１２１−０〜１２１−３のいずれかから読み出されて所定のチャネルを通してリクエストを送出したローカルモジュールに送り返される。
【０２３２】
一方、要求されたブロックデータがグローバルキャッシュ１２１−０〜１２１−３のいずれかにもないと判断されると、所望のチャネルのいずれかから当該ブロックを保持するローカルモジュールに対してグローバルキャッシュフィルのリクエストが送られる。
グローバルキャッシュフィルのリクエストを受けたローカルモジュールにおいては、メモリから該当するブロックデータが読み出され、グローバルインターフェースを通してグローバルモジュール１２に送出される。
その後、グローバルモジュール１２では、ブロックデータが所望のグローバルキャッシュにフィルされるとともに、リクエストを送ってきたローカルモジュールに対して所望のチャネルからデータが送出される。
【０２３３】
グローバルモジュール１２から要求したブロックデータが送られてくると、該当するローカルモジュールでは、ローカルキャッシュが更新され、処理ユニットによりブロックデータが読み出される。
【０２３４】
次に、ローカルモジュール１３−０〜１３−３では、読み出されたテクスチャデータと、（ｕ，ｖ）アドレスは算出時に得た小数部を使って４近傍補間などのフィルタリング処理が行われる。
次に、フィルタリング後のテクスチャデータと、ラスタライズ後の各種データを用いて、ピクセル単位の演算が行われる。
そして、ピクセルレベルの処理における各種テストをパスしたピクセルデータを、メモリモジュール１３２−０〜１３２−３、たとえば内蔵ＤＲＡＭメモリ上のフレームバッファおよびＺバッファに書き込まれる。
【０２３５】
以上説明したように、本実施形態によれば、メモリモジュール１３２またはローカルキャッシュ１３３からピクセル演算プロセッサ（ＰＯＰ）１３１２３の各演算器ＰＯＰＥへの並列的なデータ読み出し系は、クロスバー回路ではなく、複数のメモリのデータ出力ポートに跨がる１または２本のバスと、各バスに各出力ポートに対応するように配置されたセレクタとシフトレジスタの複数のセットからなる１段または２段のシフトチェーンにより構成したので、複数の処理装置が処理データを共有して並列処理する際に、配線本数の多いクロスバーが不要となる。その結果、設計が容易で、配線コスト、配線遅延を低減でき、画像処理の高速化を実現できる利点がある。
【０２３６】
また、本実施形態によれば、グラフィックス処理時には、グローバルモジュール１２からブロードキャストされたパラメータデータを受けて、ウィンドウ座標、プライマリカラー（ＰＣ）、セカンダリカラー（ＳＣ）、Ｆｏｇ係数（ｆ）、テクスチャ座標等の各種ピクセルデータを生成し、画像処理時には、入力データに基づいて、ソースアドレスを生成するとともに、デスティネーションアドレスを生成するラスタライザ１３１１と、複数のＦＩＦＯレジスタを有するレジスタユニット１３１２４と、上記レジスタユニット１３１２４のＦＩＦＯレジスタに設定されたテクスチャ座標に基づいてテクセル座標（ｓ，ｔ）およびＬＯＤデータを含むグラフィックスデータ（ｓ，ｔ，ｌ）を生成し、ソースアドレスを素通りさせて出力するグラフィックスユニット１３１２１と、グラフィックス処理時には、グラフィックスデータ（ｓ，ｔ，ｌ）に基づいて所定の演算処理を行い、演算データをクロスバー回路１３１２５を転送させてレジスタユニット１３１２４の所定のレジスタに設定させ、画像処理時には、ソースアドレスに応じた画像データを読み出して所定の画像処理演算を行い、この演算データをクロスバー回路１３１２５を転送させてレジスタユニット１３１２４の所定のレジスタに設定させるピクセル演算プロセッサ１３１２３と、色データに基づいてレジスタに設定されたピクセル演算プロセッサ１３１２３の演算データに対して所定の演算処理を行い、この演算データをクロスバー回路１３１２５を転送させてレジスタユニット１３１２４の所定のレジスタに設定させるピクセルエンジン１３１２２と、グラフィックス処理時には、レジスタに設定されたウィンドウ座標およびピクセルエンジン１３１２２の演算データに基づいてピクセル書き込みに必要な処理を行って、必要に応じて処理結果をメモリに書き込み、画像処理時には、レジスタに設定されたピクセル演算プロセッサ１３１２３の演算データをメモリのデスティネーションアドレスに書き込むライトユニットＷＵとを設けたので、以下の効果を得ることができる。
【０２３７】
すなわち、本実施形態によれば、大量の演算器を効率よく利用することが可能で、アルゴリズムの自由度が高く、柔軟性が高く、しかも回路規模の増大、コスト増を招くことなく、複雑な処理を高スループットで処理することができる。
【０２３８】
また、処理ユニット１３１（−０〜−３）は、分岐のないデータフローグラフ（Ｄａｔａ　Ｆｌｏｗ　Ｇｒａｐｈ：ＤＦＧ）で表現されるアルゴリズムを実行し、ＤＦＧのノートとエッジは、演算器や演算ユニットとその接続関係と見ることができることができる。したがって、処理ユニット１３１（−０〜−３）は、実行するＤＦＧに応じて、演算リソース間の接続を動的に切り替える、いわゆる動的再構成可能なハードウェアであり、演算器で実行する機能やそれらの接続関係が処理ユニットのマイクロプログラムに相当し、ストリームデータの各要素に適用されるＤＦＧは同じであるので、命令発行のバンド幅を低くおさえることができる。
【０２３９】
また、処理ユニット１３１（−０〜−３）は、演算機能の指定や演算器間接続の切り替え制御は、データドリブンであり、分散自立型制御といえる。
このような動的スケジューリングを採用することにより、ＤＦＧが切り替わる際に、エピローグ／プロローグのオーバーラップが可能であり、ＤＦＧの切り替えのオーバーヘッドを低減することができる。
【０２４０】
また、ＤＦＧの規模が大きくなるとアルゴリズムを内部演算リソースに一度にマッピングすることができなくなる。このような場合には、複数のサブＤＦＧ（ｓｕｂ−ＤＦＧ）に分割する必要がある。
複数のサブＤＦＧに分けて実行する方法として、サブＤＦＧ間の中間値をメモリに格納するマルチパス手法があげられる。この方法では、パス数が増大するとメモリバンド幅を消費し性能低下を招く。
処理ユニット１３１（−０〜−３）は、前述するように演算器や演算ユニット間のストリームデータの受け渡しをＦＩＦＯ型のレジスタユニット（ＲＧＵ）を介して行うことから、ＤＦＧ分割実行時に、このレジスタファイルを介して中間値を渡すことが可能で、マルチパスの回数を低減することができる。
ＤＦＧの分割そのものは、コンパイラにより静的に行われるが、分割されたＤＦＧの実行制御はハードウエアが行うのでソフトウエアへの負担が軽いという利点がある。
【０２４１】
また、本実施形態によれば、メモリバンド幅を活かした高並列の演算処理を行う機能ユニットである複数のＰＯＰ０〜ＰＯＰ３を有し、各ＰＯＰは、並列に配列された演算器ＰＯＰＥ０〜ＰＯＰＥ３を有し、各ＰＯＰＥ０〜ＰＯＰＥ３は、キャッシュから読み出された３２ビット幅のデータおよびフィルタ機能ユニットＦＦＵによる演算パラメータを受けて所定の演算（たとえば加算）を行って演算結果を次段のＰＯＰＥに出力し、次段のＰＯＰＥは自身の演算結果に前段の演算結果を加算し、その演算結果を次段のＰＯＰＥに出力し、最終段のＰＯＰＥ３において、全ＰＯＰＥ０〜ＰＯＰＥ３の演算結果の総和を求め、各ＰＯＰは、複数のＰＯＰＥの演算出力から一つのＰＯＰＥ３の演算結果のみを選択してクロスバー回路１３１２５に出力する出力選択回路ＯＳＬＣを有するピクセル演算プロセッサ（ＰＯＰ）群１３１２３を設けたことことから、クロスバー回路の小型化を図れ、処理の高速化を図ることができる。
【０２４２】
さらに、本実施形態では、クロスバー回路１３１２５を転送してレジスタユニット１３１２４のＦＩＦＯレジスタに設定したストリームデータをクロスバー回路を通さずに直接的に、グラフィックスユニット（ＧＲＵ）１３１２１、ピクセルエンジン（ＰＸＥ）１３１２２、ピクセル演算プロセッサ（ＰＯＰ）群１３１２３、およびライトユニットＷＵに供給し、また、グラフィックスユニット１３１２１により得られたグラフィックス演算データをクロスバー回路を通さずに特定の配線を介して直接的にピクセル演算プロセッサ（ＰＯＰ）群１３１２３に供給することから、さらにクロスバー回路の簡単化、小型化を図ることができ、また、マルチパス回数を低減でき、ひいては処理のさらなる高速化を図ることができる。
【０２４３】
また、本実施形態においては、本アーキテクチャを実現する演算処理部としてのコア１３１２を一つだけ設けた構成を例に説明したが、たとえば図４９に示すように、一つのラスタライザ１３１１に対して複数個のコア１３１２−１〜１３１２−ｎを並列に設ける構成を採用することも可能である。
この場合でも、各コアで実行されるＤＦＧは同一である。
また、複数のコアを設ける構成の並列化の単位としては、たとえばグラフィックス処理の場合には小矩形領域（スタンプ）単位、画像処理の場合にはブロック単位である。この場合、細かい粒度での並列処理を実現できる利点がある。
【０２４４】
また、本実施形態では、ピクセル演算プロセッサ（ＰＯＰ）群１３１２３とキャッシュ間は広いバンド幅で接続されており、かつメモリアクセスのためのアドレス生成機能を内蔵しているので、演算器の演算能力を最大限引き出すだけのストリームデータの供給が可能である。
【０２４５】
また、本実施形態では、メモリの近傍に出力データ幅を合わせた形で演算器を高密度に配置し、処理データの規則性を利用していることから、大量の演算を最低限の演算器でしかも簡単構成で実現することができ、ひいてはコスト低減を図れる利点がある。
【０２４６】
また、本実施形態によれば、ＳＤＣ１１とグローバルモジュール１２とがデータの授受を行い、一つのグローバルモジュール１２に対して複数個（本実施形態では４個）のローカルモジュール１３−０〜１３−３が並列に接続されて、複数のローカルモジュール１３−０〜１３−３で処理データを共有し並列に処理し、グローバルモジュール１２はグローバルキャッシュを有し、各ローカルモジュール１３−０〜１３−３はローカルキャッシュをそれぞれ有し、キャッシュの階層として、４つのローカルモジュール１３−０〜１３−３が共有するグローバルキャッシュと、各ローカルモジュールがローカルに持つローカルキャッシュの２階層を有することから、複数の処理装置が処理データを共有して並列処理する際に、重複アクセスを低減でき、配線本数の多いクロスバーが不要となる。その結果、設計が容易で、配線コスト、配線遅延を低減できる画像処理装置を実現できる利点がある。
【０２４７】
また、本実施形態によれば、グローバルモジュール１２と各ローカルモジュール１３−０〜１３−３との配置関係としては、図６に示すように、グローバルモジュール１２を中心として各ローカルモジュール１３−０〜１３−３をその周辺近傍に配置することから、各対応するチャネルブロックとローカルモジュールまでの距離を均一に保つことができ、配線領域を整然と並べることができ、平均配線長を短くできる。したがって、配線遅延や配線コストを低減でき、処理速度の向上を図ることができる利点がある。
【０２４８】
なお、本実施形態においては、テクスチャデータが内蔵ＤＲＡＭ上にあるケースを例に述べているが、他のケースとして、内蔵ＤＲＡＭには、カラーデータおよびｚデータのみが置かれ、テクスチャデータは外部メモリに置かれることも可能である。この場合には、グローバルキャッシュでミスが発生すると、外部ＤＲＡＭに対してキャッシュフィル要求が出されることになる。
【０２４９】
また、上述の説明では、図６の構成、すなわち、一つのグローバルモジュール１２に対して複数個（本実施形態では４個）のローカルモジュール１３−０〜１３−３が並列に接続した画像処理装置１０を例に並列処理を行う場合に特化した形態となっているが、図３の構成を一つのクラスタＣＬＳＴとして、たとえば図５０に示すように、４つのクラスタＣＬＳＴ０〜ＣＬＳＴ３をマトリクス状に配置して、各クラスタＣＬＳＴ０〜ＣＬＳＴ３のグローバルモジュール１２−０〜１２−３間でデータの授受を行うように構成することも可能である。
図５０の例では、クラスタＣＬＳＴ０のグローバルモジュール１２−０とクラスタＣＬＳＴ１のグローバルモジュール１２−１とを接続し、クラスタＣＬＳＴ１のグローバルモジュール１２−１とクラスタＣＬＳＴ３のグローバルモジュール１２−３とを接続し、クラスタＣＬＳＴ３のグローバルモジュール１２−３とクラスタＣＬＳＴ２のグローバルモジュール１２−２とを接続し、クラスタＣＬＳＴ２のグローバルモジュール１２−２とクラスタＣＬＳＴ０のグローバルモジュール１２−０とを接続している。
すなわち、複数のクラスタＣＬＳＴ０〜ＣＬＳＴ３のグローバルモジュール１２−０〜１２−３をリング状に接続している。
なお、図５０の構成の場合には、一つのＳＤＣからパラメータがＣＬＳＴ０〜ＣＬＳＴ３のグローバルモジュール１２−０〜１２−３にブロードキャストされるように構成することが可能である。
【０２５０】
このような構成を採用することにより、より精度の高い画像処理を実現でき、また、各クラスタ間の配線も単純に双方向として一系統で接続するので、各クラスタ間の負荷を均一に保つことができ、配線領域を整然と並べることができ、平均配線長を短くできる。したがって、配線遅延や配線コストを低減でき、処理速度の向上を図ることが可能となる。
【０２５１】
【発明の効果】
以上説明したように、本発明によれば、複数の処理装置が処理データを共有して並列処理する際に、重複アクセスを低減でき、配線本数の多いクロスバーが不要となる。その結果、設計が容易で、配線コスト、配線遅延を低減でき、画像処理の高速化を実現できる利点がある。
【図面の簡単な説明】
【図１】一般的な画像処理装置におけるテクスチャフィルタリングを含む処理手順を説明するための図である。
【図２】（幅Ｗピクセル×高さＨピクセル）の画像データ（データの２次元配列）の並列処理について説明するための図である。
【図３】（幅Ｗピクセル×高さＨピクセル）の画像データ（データの２次元配列）の並列処理を具体的に説明するための図である。
【図４】２次元配列の画像データをメモリに格納する方法を説明するための図である。
【図５】複数の演算器とメモリとの間にクロスバー回路を配置した構成を模式的に示す図である。
【図６】本発明に係る画像処理装置の一実施形態を示すブロック構成図である。
【図７】本実施形態に係るストリームデータコントローラ（ＳＤＣ）の主な処理を説明するためのフローチャートである。
【図８】本実施形態に係るグローバルモジュールの機能を説明するためのフローチャートである。
【図９】本実施形態に係るローカルモジュールにおける処理ユニットのグラフィックス処理を説明するための図である。
【図１０】本実施形態に係るテクスチャリード時のローカルモジュールの動作を説明するためのフローチャートである。
【図１１】本実施形態に係るローカルモジュールにおける処理ユニットの画像処理を説明するための図である。
【図１２】本実施形態に係るローカルモジュールにおけるローカルキャッシュの構成例を示すブロック図である。
【図１３】本実施形態に係るローカルキャッシュのメモリコントローラの構成例を示すブロック図である。
【図１４】本実施形態に係るローカルモジュールの処理ユニットの具体的な構成例を示すブロック図である。
【図１５】本実施形態に係るピクセルエンジンの構成例、およびレジスタユニット（ＲＧＵ）、クロスバー回路との接続例を示す図である。
【図１６】メモリモジュールに格納されている画像データをピクセル演算プロセッサ（ＰＯＰ）の各演算器ＰＯＰＥに直接読み出して演算を行う場合のデータ読み出し系を示す図である。
【図１７】メモリモジュールに格納されている画像データのうち、演算に必要とされる一部のデータをローカルキャッシュに格納し、ローカルキャッシュのデータを読み出して演算を行う場合のデータ読み出し系を示す図である。
【図１８】複数並列に配置された演算器ＰＯＰＥとメモリモジュールとの間のデータ読み出し系にシフトチェーンを１段だけ設けた場合を模式的に示す図である。
【図１９】図１８の構成でコンボリューションフィルタ演算を行う場合の説明図である。
【図２０】シフトチェーンを下段と上段の２段構造にした理由について説明するための図である。
【図２１】シフトチェーンを下段シフトチェーンと上段シフトチェーンの２段構造にした理由について説明するための図である。
【図２２】２段構造のシフトチェーンに保持可能なデータより長いデータを処理する場合の好適な動作例を説明するための図である。
【図２３】シフトチェーンの所望の位置に間隙レジスタを挿入する理由を説明するための図である。
【図２４】図２３（Ｂ）の例と同様に、メモリがＭＲＹ（０）〜ＭＲＹ（３）の４個で、３つのクリティカルパスにフリップフロップからなる２個の間隙レジスタを挿入した例を示す回路図である。
【図２５】図２３の構成において、データをシフトしていくと演算器の入力に有効なデータが無い状態が生じることを説明するための図である。
【図２６】無効な演算を行わないようにする制御方式について説明するための図であって、データシフトチェーン上の各データ用シフトレジスタに対し、各１ビットのフラグレジスタＦＲＥＧを設け、データシフトチェーンと同様にシフトチェーンを構成する例を示す図である。
【図２７】フラグレジスタを設けた構成におけるデータシフトとフラグレジスタの設定状態を説明するための図である。
【図２８】連続して演算を行うことが可能なシフト制御について説明するための図である。
【図２９】全画面領域に対して演算を行う場合に縦方向に１ピクセルずれた位置から演算を行う動作を模式的に示す図である。
【図３０】全画面領域に対して演算を行う場合に横方向にＬピクセルずれた位置から演算を行う動作を模式的に示す図である。
【図３１】Ｋｘ＝４の場合で、縦方向に順次、演算を行っていく場合の動作例を説明するための図である。
【図３２】Ｋｘ＝４の場合で、縦方向に順次、演算を行っていく場合の動作例を説明するための図である。
【図３３】本実施形態に係るブロックについて模式的に示す図である。
【図３４】ブロックを定義した場合のメモリから上段、下段のデータシフトチェーンにデータをロードするタイミングについて模式的に示す図である。
【図３５】ブロックを定義した場合のメモリから上段、下段のデータシフトチェーンにデータをロードするタイミングの他の例について模式的に示す図である。
【図３６】本実施形態に係る間隙レジスタ数を調整する間隙調整回路の構成例を示す図である。
【図３７】本実施形態に係る間隙レジスタおよび間隙調整部を設けた具体的な回路例を示す図である。
【図３８】本実施形態に係る具体的な動作例を説明するための回路図である。
【図３９】カーネルサイズ３×３のコンボリューションフィルタリング処理について説明するための図である。
【図４０】図３８の回路において各メモリＭＲＹから読み出すことができるピクセルの値の一例を示す図である。
【図４１】図３８の回路の動作を説明するための図である。
【図４２】本実施形態に係る処理ユニットにおける依存テクスチャ無しの場合のグラフィックス処理を説明するための図である。
【図４３】本実施形態に係る処理ユニットにおけるグラフィックス処理のピクセル演算プロセッサ（ＰＯＰ）群の具体的な動作を説明するための図である。
【図４４】本実施形態に係る処理ユニットにおける依存テクスチャ有りの場合のグラフィックス処理を説明するための図である。
【図４５】ＳＡＤ（Ｓｕｍｍｅｄ　Ａｂｓｏｌｕｔｅ　Ｄｉｆｆｅｒｅｎｃｅ）処理を説明するための図である。
【図４６】本実施形態に係る処理ユニットにおけるＳＡＤ処理を説明するための図である。
【図４７】コンボリューションフィルタ（Ｃｏｎｖｏｌｕｔｉｏｎ　Ｆｉｌｔｅｒ）処理を説明するための図である。
【図４８】本実施形態に係る処理ユニットにおけるコンボリューションフィルタ処理を説明するための図である。
【図４９】本実施形態に係る処理ユニットにおける他の構成例（コアを複数設けた例）を示す図である。
【図５０】本発明に係る画像処理装置の他の実施形態を示すブロック構成図である。
【符号の説明】
１０，１０Ａ…画像処理装置、１１…ストリームデータコントローラ（ＳＤＣ）、１２−０〜１２−３…グローバルモジュール、１２１−０〜１２１−３…グローバルキャッシュ、１３−０〜１３−３…ローカルモジュール、１３１−０〜１３１−３…処理ユニット、１３２−０〜１３２−３…メモリモジュール、１３３−０〜１３３−３…ローカルキャッシュ、１３４−０〜１３４−３…グローバルインターフェース（ＧＡＩＦ）、ＣＬＳＴ０〜ＣＬＳＴ…クラスタ、１３１１…ラスタライザ、１３１２，１３１２−１〜１３１２−ｎ…コア、１３１２１…グラフィックスユニット（ＧＲＵ）、１３１２２…ピクセルエンジン（ＰＸＥ）、１３１２３…ピクセル演算プロセッサ（ＰＯＰ）群、１３１２４…レジスタユニット（ＲＧＵ）、１３１２５…クロスバー回路（ＩＸＢ）、ＰＯＰＥ０〜３…演算器、ＯＳＬＣ…出力選択回路、ＳＦＴＣ…データシフトチェーン、ＬＳＦＴＣ…下段シフトチェーン、ＵＳＦＴＣ…上段シフトチェーン、ＬＳＲＧ０〜ＬＳＲＧ１５，ＵＳＲＧ０〜ＵＳＲＧ１５…シフトレジスタ、ＬＳＬＣ０〜ＬＳＬＣ１５，ＵＳＬＣ０〜ＵＳＬＣ１５…セレクタ、ＦＲＥＧ，ＬＦＲＥＧ０〜ＬＦＲＥＧ１５，ＵＦＲＥＧ０〜ＵＦＲＥＧ１５…フラグレジスタ。
【図１】
2004013873.tif 000008
【図２】
2004013873.tif 000009
【図３】
2004013873.tif 000010
【図４】
2004013873.tif 000011
【図５】
2004013873.tif 000012
【図６】
2004013873.tif 000013
【図７】
2004013873.tif 000014
【図８】
2004013873.tif 000015
【図９】
2004013873.tif 000016
【図１０】
2004013873.tif 000017
【図１１】
2004013873.tif 000018
【図１２】
2004013873.tif 000019
【図１３】
2004013873.tif 000020
【図１４】
2004013873.tif 000021
【図１５】
2004013873.tif 000022
【図１６】
2004013873.tif 000023
【図１７】
2004013873.tif 000024
【図１８】
2004013873.tif 000025
【図１９】
2004013873.tif 000026
【図２０】
2004013873.tif 000027
【図２１】
2004013873.tif 000028
【図２２】
2004013873.tif 000029
【図２３】
2004013873.tif 000030
【図２４】
2004013873.tif 000031
【図２５】
2004013873.tif 000032
【図２６】
2004013873.tif 000033
【図２７】
2004013873.tif 000034
【図２８】
2004013873.tif 000035
【図２９】
2004013873.tif 000036
【図３０】
2004013873.tif 000037
【図３１】
2004013873.tif 000038
【図３２】
2004013873.tif 000039
【図３３】
2004013873.tif 000040
【図３４】
2004013873.tif 000041
【図３５】
2004013873.tif 000042
【図３６】
2004013873.tif 000043
【図３７】
2004013873.tif 000044
【図３８】
2004013873.tif 000045
【図３９】
2004013873.tif 000046
【図４０】
2004013873.tif 000047
【図４１】
2004013873.tif 000048
【図４２】
2004013873.tif 000049
【図４３】
2004013873.tif 000050
【図４４】
2004013873.tif 000051
【図４５】
2004013873.tif 000052
【図４６】
2004013873.tif 000053
【図４７】
2004013873.tif 000054
【図４８】
2004013873.tif 000055
【図４９】
2004013873.tif 000056
【図５０】
2004013873.tif 000057