(57)【特許請求の範囲】
【請求項１】
複数の処理モジュールが処理データを共有して並列処理を行う画像処理装置であって、
上記複数の処理モジュールは、
少なくともフィルタリング処理に関するデータが記憶されるメモリモジュールと、
フィルタリング処理用テクスチャデータを得るとともに、処理データに基づいてあらかじめ対応するメモリインターリーブで決められた担当する処理を行う処理回路と、
自処理モジュールがピクセルを担当する場合に、上記処理回路で得られた担当する処理データおよび各処理モジュールにおける担当するテクセルのみのフィルタ値の部分演算データを受けて、各部分演算データを加算して最終的なフィルタリング後のテクスチャ値を求める演算処理を行う第１の演算器と、
上記処理回路で得られた自処理モジュールが担当するフィルタリング処理用データおよび上記メモリモジュールに記憶されているフィルタリング処理に関するデータに基づいて担当するテクセルのみのフィルタ値の部分演算を行い、上記第１の演算器による演算処理データを受けて上記メモリモジュールに対して描画する複数の第２の演算器と、
を有し、
さらに、上記各処理モジュールの複数の第１の演算器と複数の第２の演算器間を相互に接続するグローバルバスであって、各処理モジュールにおいて上記処理回路で得られたフィルタリング処理用データを同一の処理モジュールの第２の演算器に供給し、各処理モジュールの第２の演算器によるフィルタリング後の上記部分演算データを、ピクセルを担当する処理モジュールの第１の演算器に集約し、当該第１の演算器による演算処理データを第２の演算器に供給するクロスバー回路
を有する画像処理装置。
【請求項２】
フレームバッファおよびテクスチャバッファ共に、全メモリモジュールにインターリーブされている
請求項１記載の画像処理装置。
【請求項３】
プリミティブの頂点データに対する演算を行い、１プリミティブをセットアップして、各処理モジュールの処理回路にそれぞれ担当するデータを出力するセットアップ回路
を有する請求項１記載の画像処理装置。
【請求項４】
上記セットアップ回路は、全テクスチャ情報を各処理モジュールの処理回路に分配する
請求項３記載の画像処理装置。
【請求項５】
複数の処理モジュールが処理データを共有して並列処理を行う画像処理方法であって、
各処理モジュールにおいて、フィルタリング処理用テクスチャデータを得るとともに、処理データに基づいてあらかじめ対応するメモリインターリーブで決められた担当する処理を行い、
各処理モジュールにおいて、自処理モジュールが担当するフィルタリング処理用データおよび上記メモリモジュールに記憶されているフィルタリング処理に関するデータに基づいて担当するテクセルのみのフィルタ値の部分演算を行い、
各処理モジュールにおける上記部分演算データを、グローバルバスを介してピクセルを担当する処理モジュールに集約し、
上記部分演算データが集約された処理モジュールにおいて、各部分演算データを加算して最終的なフィルタリング後のテクスチャ値を求め、
当該最終的な演算処理データを上記メモリモジュールに対して描画する
画像処理方法。
【請求項６】
フレームバッファおよびテクスチャバッファ共に、全メモリモジュールにインターリーブされる
請求項５記載の画像処理方法。
【請求項７】
全テクスチャ情報を各処理モジュールに分配する
請求項５記載の画像処理方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、複数の演算処理装置が処理データを共有して並列処理を行う画像処理装置およびその方法に関するものである。
【０００２】
【従来の技術】
近年、３次元コンピュータグラフィックス（３Ｄ  Ｃｏｍｐｕｔｅｒ  Ｇｒａｐｈｉｃｓ）をハードウェアで高速に実行するグラフィックスＬＳＩの普及は著しく、特にゲーム機やパーソナルコンピュータ（ＰＣ）では、このグラフィックスＬＳＩを標準で搭載しているものが多い。
また、グラフィックスＬＳＩにおける技術的進歩は早く、「ＤｉｒｅｃｔＸ」で採用された「Ｖｅｒｔｅｘ  Ｓｈａｄｅｒ」や「Ｐｉｘｅ１  Ｓｈａｄｅｒ」に代表される機能面での拡張が続けられているとともに、ＣＰＵを上回るペースで性能が向上している。
【０００３】
グラフィックスＬＳＩの性能を向上させるには、ＬＳＩの動作周波数を上げるだけではなく、並列処理の手法を利用することが有効である。並列処理の手法を大別すると以下のようになる。
第１は領域分割による並列処理法であり、第２はプリミティブレベルでの並列処理法であり、第３はピクセルレベルでの並列処理法である。
【０００４】
上記分類は並列処理の粒度に基づいており、領域分割並列処理の粒度が最もあらく、ピクセルレベル並列処理の粒度が最も細かい。それぞれの手法の概要を以下に述べる。
【０００５】
領域分割による並列処理
画面を複数の矩形領域に分割し、複数の処理ユニットそれぞれが担当する領域を割り当てながら並列処理する手法である。
【０００６】
プリミティブレベルでの並列処理
複数の処理ユニットに別々のプリミティブ（たとえば三角形）を与えて並列動作させる手法である。
プリミティブレベルでの並列化処理について概念的に示したものを図１に示す。
図１において、ＰＭ０〜ＰＭｎ−１がそれぞれ異なるプリミティブを示し、ＰＵ０〜ＰＵｎ−１が処理ユニット、ＭＭ０〜ＭＭｎ−１がメモリモジュールをそれぞれ示している。
各処理ユニットＰＵ０〜ＰＵｎ−１に比較的均等な大きさのプリミティブＰＭ０〜ＰＭｎ−１が与えられているときには、各処理ユニットＰＵ０〜ＰＵｎ−１に対する負荷のバランスがとれ、効率的並列処理が行える。
【０００７】
ピクセルレベルでの並列処理
最も粒度の細かい並列処理の手法である。
図２は、ピクセルレベルでの並列処理の手法に基づくプリミティブレベルでの並列化処理について概念的に示す図である。
図２のように、ピクセルレベルでの並列処理の手法では三角形をラスタライズする際に、２×８のマトリクス状に配列されたピクセルからなるピクセルスタンプ（Ｐｉｘｅｌ  Ｓｔａｍｐ）ＰＳと呼ばれる矩形領域単位にピクセルが生成される。
図２の例では、ピクセルスタンプＰＳ０からピクセルスタンプＰＳ７までの合計８個のピクセルスタンプが生成されている。これらピクセルスタンプＰＳ０〜ＰＳ７に含まれる最大１６個のピクセルが同時に処理される。
この手法は、他の手法に比べ粒度が細かい分、並列処理の効率が良い。
【０００８】
【発明が解決しようとする課題】
しかしながら、上述した領域分割による並列処理の場合、各処理ユニットを効率良く並列動作させるためには、各領域に描画されるべきオブジェクトをあらかじめ分類する必要があり、シーンデータ解析の負荷が重い。
また、１フレーム分のシーンデータが全て揃った上で描画を開始するのではなく、オブジェクトデータが与えられると即描画を開始するいわゆるイミーディエートモードでの描画を行う際には並列性を引き出すことができない。
【０００９】
また、プリミティブレベルでの並列処理の場合、実際には、オブジェクトを構成するプリミティブＰＭ０〜ＰＭｎ−１の大きさにはバラツキがあることから、処理ユニットＰＵ０〜ＰＵｎ−１ごとに一つのプリミティブを処理する時間に差が生じる。この差が大きくなった際には、処理ユニットが描画する領域も大きく異なり、データのローカリティが失われるので、メモリモジュールを構成するたとえばＤＲＡＭのページミスが頻発し性能が低下する。
また、この手法の場合には、配線コストが高いという問題点もある。一般に、グラフィックス処理を行うハードウェアでは、メモリのバンド幅を広げるために、複数メモリモジュールを用いてメモリインターリーブを行う。
その際、図１に示すように、各処理ユニットＰＵ０〜ＰＵｎ−１と各内蔵メモリモジュールＭＭ０〜ＭＭｎ−１を全て結ぶ必要がある。
【００１０】
一方、ピクセルレベルでの並列処理の場合、上述したように、粒度が細かい分、並列処理の効率が良いという利点があり、実際のフィルタリングを含む処理としては図３に示すような手順で行われている。
【００１１】
すなわち、ＤＤＡ（Ｄｉｇｉｔａｌ  Ｄｉｆｆｅｒｅｎｔｉａｌ  Ａｎａｌｙｚｅｒ）パラメータ、たとえばラスタライゼーション（Ｒａｓｔｅｒｉｚａｔｉｏｎ）に必要な各種データ（Ｚ、テクスチャ座標、カラーなど）の傾き等のＤＤＡパラメータを算出する（ＳＴ１）。
次に、メモリからテクスチャデータを読み出し（ＳＴ２）、サブワード再配置処理を行った後（ＳＴ３）、クロスバー回路により各処理ユニットにグローバル分配する（ＳＴ４）。
次に、テクスチャフィルタリング（Ｔｅｘｔｕｒｅ  Ｆｉｌｔｅｒｉｎｇ）を行う（ＳＴ５）。この場合、処理ユニットＰＵ０〜ＰＵ３は、読み出されたテクスチャデータと、（ｕ，ｖ）アドレスは算出時に得た小数部を使って４近傍補間などのフィルタリング処理を行う。
次に、ピクセルレベルの処理（Ｐｅｒ−Ｐｉｘｅｌ  Ｏｐｅｒａｔｉｏｎ）、具体的には、フィルタリング後のテクスチャデータと、ラスタライズ後の各種データを用いて、ピクセル単位の演算を行う（ＳＴ５）。
そして、ピクセルレベルの処理における各種テストをパスしたピクセルデータを、メモリモジュールＭＭ０〜ＭＭ３上のフレームバッファおよびＺバッファに描画する（ＳＴ６）。
【００１２】
ところで、テクスチャリード系のメモリアクセスは、描画系のメモリアクセスとは異なるため、他のモジュールに属すメモリからの読み出しが必要となる。
したがって、テクスチャリード系のメモリアクセスに関しては、上述したようにクロスバー回路のような配線を必要とする。
【００１３】
しかしながら、従来の画像処理装置では、上述したように、クロスバー回路により各処理ユニットにグローバル分配し、その後、テクスチャフィルタリングを行っていることから、グローバル分配するデータ量が多く（たとえば４Ｔｂｐｓ）、グローバルバスとしてのクロスバー回路が大型化し、配線遅延の観点等から処理の高速化の妨げとなるという不利益がある。
【００１４】
本発明は、かかる事情に鑑みてなされたものであり、その目的、クロスバー回路の小型化を図れ、また処理の高速化を図れる画像処理装置およびその方法を提供することにある。
【００１５】
【課題を解決するための手段】
上記目的を達成するため、本発明の第１の観点は、複数の処理モジュールが処理データを共有して並列処理を行う画像処理装置であって、上記複数の処理モジュールは、少なくともフィルタリング処理に関するデータが記憶されるメモリモジュールと、フィルタリング処理用テクスチャデータを得るとともに、処理データに基づいてあらかじめ対応するメモリインターリーブで決められた担当する処理を行う処理回路と、自処理モジュールがピクセルを担当する場合に、上記処理回路で得られた担当する処理データおよび各処理モジュールにおける担当するテクセルのみのフィルタ値の部分演算データを受けて、各部分演算データを加算して最終的なフィルタリング後のテクスチャ値を求める演算処理を行う第１の演算器と、上記処理回路で得られた自処理モジュールが担当するフィルタリング処理用データおよび上記メモリモジュールに記憶されているフィルタリング処理に関するデータに基づいて担当するテクセルのみのフィルタ値の部分演算を行い、上記第１の演算器による演算処理データを受けて上記メモリモジュールに対して描画する複数の第２の演算器と、を有し、さらに、上記各処理モジュールの複数の第１の演算器と複数の第２の演算器間を相互に接続するグローバルバスであって、各処理モジュールにおいて上記処理回路で得られたフィルタリング処理用データを同一の処理モジュールの第２の演算器に供給し、各処理モジュールの第２の演算器によるフィルタリング後の上記部分演算データを、ピクセルを担当する処理モジュールの第１の演算器に集約し、当該第１の演算器による演算処理データを第２の演算器に供給するクロスバー回路を有する。
【００１６】
第１の観点では、フレームバッファおよびテクスチャバッファ共に、全メモリモジュールにインターリーブされている。
【００１７】
また、第１の観点では、プリミティブの頂点データに対する演算を行い、１プリミティブをセットアップして、各処理モジュールの処理回路にそれぞれ担当するデータを出力するセットアップ回路を有する。
【００１８】
また、好適には、上記セットアップ回路は、全テクスチャ情報を各処理モジュールの処理回路に分配する。
【００１９】
本発明の第２の観点は、複数の処理モジュールが処理データを共有して並列処理を行う画像処理方法であって、各処理モジュールにおいて、フィルタリング処理用テクスチャデータを得るとともに、処理データに基づいてあらかじめ対応するメモリインターリーブで決められた担当する処理を行い、各処理モジュールにおいて、自処理モジュールが担当するフィルタリング処理用データおよび上記メモリモジュールに記憶されているフィルタリング処理に関するデータに基づいて担当するテクセルのみのフィルタ値の部分演算を行い、各処理モジュールにおける上記部分演算データを、グローバルバスを介してピクセルを担当する処理モジュールに集約し、上記部分演算データが集約された処理モジュールにおいて、各部分演算データを加算して最終的なフィルタリング後のテクスチャ値を求め、当該最終的な演算処理データを上記メモリモジュールに対して描画する。
【００２０】
第２の観点では、フレームバッファおよびテクスチャバッファ共に、全メモリモジュールにインターリーブされる。
【００２１】
また、第２の観点では、全テクスチャ情報を各処理モジュールに分配する。
【００２２】
本発明によれば、たとえばセットアップ回路において、頂点データに対する演算が行われ、１プリミティブがセットアップされ、各処理モジュールにそれぞれ担当テクスチャ分のセットアップ情報が出力される。
各処理モジュールにおける処理回路では、セットアップ回路による情報に基づいてたとえばＤＤＡパラメータ、具体的には、ラスタライゼーションに必要な各種データ（Ｚ、テクスチャ座標、カラーなど）の傾き等のＤＤＡパラメータが算出される。
また、各処理回路では、パラメータデータに基づいて、たとえば三角形が自分が担当する領域であるか否かを判断し、担当領域である場合には、ラスタライゼーションが行われる。
さらに、各処理回路では、ＬＯＤ計算によるミップマップレベルの算出や、テクスチャアクセスのための（ｕ，ｖ）アドレス計算が行われる。
【００２３】
そして、各処理回路では、得られたテクスチャ座標や、テクスチャアクセスのためのアドレス情報等が第２の演算器に出力される。
一方、各処理回路では、得られたテクスチャ以外のカラー等の情報が第１の演算器にそれぞれ供給される。
そして、各処理モジュールの第２の演算器では、処理回路から供給されたテクスチャに関する座標データやアドレスデータを受けて、メモリモジュールからテクスチャデータが読み出されて、読み出されたテクスチャデータと、（ｕ，ｖ）アドレスは算出時に得た小数部を使って４近傍補間などのテクスチャフィルタリングが行われる。このとき、各処理モジュールの第２の演算器では、担当するテクセルのみのフィルタ値の部分演算が行われる。
この第２の演算器によるフィルタリング後の各部分演算データが、クロスバー回路を介して、ピクセルを担当する処理モジュールの第１の演算器に供給される。
この処理モジュールの第１の演算器では、各処理モジュールにおける担当するテクセルのみのフィルタ値の部分演算データを受けて、各部分演算データを加算して最終的なフィルタリング後のテクスチャ値を求める演算処理が行われ、その結果が第２の演算器に出力される。
そして、第２の演算器では、第１の演算器により供給されたピクセルレベルの処理結果を受けて、ピクセルレベルの処理における各種テストをパスしたピクセルデータをメモリモジュールに描画される。
以上の処理が各モジュールで並列的に行われる。
【００２４】
【発明の実施の形態】
図４は、本発明の係る画像処理装置の一実施形態を示すブロック構成図である。
【００２５】
本実施形態に係る画像処理装置１０は、図４に示すように、セットアップ回路１１、処理モジュール１２−０〜１２−３、およびクロスバー回路１３を有している。
【００２６】
本画像処理装置１０では、セットアップ回路１１に対して複数個、本実施形態では４個の処理モジュール１２−０〜１２−３が並列に接続されて、複数の処理モジュール１２−０〜１２−３で処理データを共有し並列に処理する。
そして、テクスチャリード系に関しては、他の処理モジュールに対するメモリアクセスを必要とするが、このアクセスにはグローバルアクセスバスとしてのクロスバー回路１３が用いられる。
【００２７】
以下に各構成要素の構成および機能について、図面に関連付けて順を追って説明する。
【００２８】
セットアップ回路１１は、ＣＰＵや外部メモリとのデータの授受、並びに各処理モジュール１２−０〜１２−３とのデータの授受を司るとともに、頂点データに対する演算を行い、１プリミティブをセットアップして、各処理モジュール１２−０〜１２−３にそれぞれ担当テクスチャ分のセットアップ情報を出力する。
具体的には、セットアップ回路１１は、データが入力されると、Ｐｅｒ−Ｖｅｒｔｅｘオペレーションを行う。
この処理においては、３次元座標、法線ベクトル、テクスチャ座標の各頂点データが入力されると、頂点データに対する演算が行われる。代表的な演算としては、物体の変形やスクリーンへの投影などを行う座標変換の演算処理、ライティング（Ｌｉｇｈｔｉｎｇ）の演算処理、クリッピング（Ｃｌｉｐｐｉｎｇ）の演算処理がある。
【００２９】
処理モジュール１２−０は、処理回路としてのＤＤＡ（Ｄｉｇｉｔａｌ  Ｄｉｆｆｅｒｅｎｔｉａｌ  Ａｎａｌｙｚｅｒ）回路１２１−０、第１の演算器（演算器１）１２２−０、第２の演算器（演算器２）１２３−０、およびたとえばＤＲＡＭからなるメモリモジュール（ＭＥＭ）１２４−０を有している。
【００３０】
同様に、処理モジュール１２−１は、処理回路としてのＤＤＡ回路１２１−１、第１の演算器（演算器１）１２２−１、第２の演算器（演算器２）１２３−１、およびたとえばＤＲＡＭからなるメモリモジュール（ＭＥＭ）１２４−１を有している。
処理モジュール１２−２は、処理回路としてのＤＤＡ回路１２１−２、第１の演算器（演算器１）１２２−２、第２の演算器（演算器２）１２３−２、およびたとえばＤＲＡＭからなるメモリモジュール（ＭＥＭ）１２４−２を有している。
処理モジュール１２−３は、処理回路としてのＤＤＡ回路１２１−３、第１の演算器（演算器１）１２２−３、第２の演算器（演算器２）１２３−３、およびたとえばＤＲＡＭからなるメモリモジュール（ＭＥＭ）１２４−３を有している。
【００３１】
そして、各処理モジュール１２−０〜１２−３の第１の演算器１２２−０〜１２２−３と第２の演算器１２３−０〜１２３−３が、後で詳述するように、クロスバー回路１３を介して相互に接続されている。
【００３２】
図５は、本実施形態に係る画像処理装置の基本的なアーキテクチャおよび処理フローを示す図である。なお、図５において、丸印を付した矢印はテクスチャに関するデータの流れを示し、丸印を付していない矢印はピクセルに関するデータの流れを示している。
【００３３】
本実施形態では、各処理モジュール１２−０〜１２−３は、メモリモジュール１２４−０〜１２４−３が所定の大きさ、たとえば４×４の矩形領域単位にインターリーブされている。
具体的には、図５に示すように、いわゆるフレームバッファおよびテクスチャバッファ共に、全メモリモジュールにインターリーブされている。
【００３４】
処理モジュール１２−０におけるＤＤＡ回路１２１−０は、セットアップ回路１１による情報に基づいてＤＤＡパラメータを計算する。
この処理では、ラスタライゼーション（Ｒａｓｔｅｒｉｚａｔｉｏｎ）に必要な各種データ（Ｚ、テクスチャ座標、カラーなど）の傾き等のＤＤＡパラメータを算出する。
また、ＤＤＡ回路１２１−０は、パラメータデータに基づいて、たとえば三角形が自分が担当する領域であるか否かを判断し、担当領域である場合には、ラスタライゼーション（Ｒａｓｔｅｒｉｚａｔｉｏｎ）を行う。
具体的には、その三角形が自分が担当する領域、たとえば４×４ピクセルの矩形領域単位でインターリーブされた領域に属しているか否かを判断し、属している場合には、各種データ（Ｚ、テクスチャ座標、カラーなど）をラスタライズする。この場合、生成単位は、１ローカルモジュール当たり１サイクルで２×２ピクセルである。
次に、ＤＤＡ回路１２１−０は、テクスチャ座標のパースペクティブコレクション（Ｐｅｒｓｐｅｃｔｉｖｅ  Ｃｏｒｒｅｃｔｉｏｎ）を行う。また、この処理ステージにはＬＯＤ（Ｌｅｖｅｌ  ｏｆ  Ｄｅｔａｉｌ）計算によるミップマップ（ＭｉｐＭａｐ）レベルの算出や、テクスチャアクセスのための（ｕ，ｖ）アドレス計算も含まれる。
【００３５】
そして、ＤＤＡ回路１２１−０は、たとえば図６に示すように、テクスチャ系のＤＤＡ部１２１１によりテクスチャ座標や、テクスチャアクセスのためのアドレス情報等のテクスチャ用処理を行い、テクスチャに関する情報を第１の演算器１２２−０、クロスバー回路１３を介して第２の演算器１２３−０に出力する。
一方、ＤＤＡ回路１２１−０は、テクスチャ以外のカラー等の処理はその他のＤＤＡ部１２１２で行って第１の演算器１２２−０に出力する。
本実施形態においては、ＤＤＡ回路１２１（−０〜３）には、その他のＤＤＡ部１２１２のデータ入力側にのみＦＩＦＯ（Ｆｉｒｓｔ−Ｉｎ  Ｆｉｒｓｔ−Ｏｕｔ）を設け、テクスチャ系のフィルタリング処理の時間を考慮した時間調整を行っている。
また、テクスチャ系のＤＤＡ部１２１１は全ピクセルに関する担当するテクスチャのデータを発生し、その他のＤＤＡ部１２１２はメモリインターリーブによる担当部分にのみ発生する。
【００３６】
第１の演算器１２２−０は、ＤＤＡ回路１２１−０により供給されたテクスチャ情報以外のデータ、および、クロスバー回路１３を介して受信する各処理モジュール１２−０〜１２−３の第２の演算器１２３−０〜１２３−３でテクスチャフィルタリング処理後の部分演算データを受けて、各部分演算データを加算して最終的なフィルタリング後のテクスチャ値を求める演算処理を行うピクセルレベルの処理（Ｐｅｒ−Ｐｉｘｅｌ  Ｏｐｅｒａｔｉｏｎ）を行い、その結果をクロスバー回路１３を介して第２の演算器１２３−０に出力する。
このピクセルレベルの処理においては、フィルタリング後のテクスチャデータと、ラスタライズ後の各種データを用いて、ピクセル単位の演算が行われる。ここで行われる処理は、ピクセルレベルでのライティング（Ｐｅｒ−ＰｉｘｅｌＬｉｇｈｔｉｎｇ）などいわゆるＰｉｘｅｌ  Ｓｈａｄｅｒに相当する。
【００３７】
第２の演算器１２３−０は、ＤＤＡ回路１２１−０から供給されたテクスチャに関する座標データやアドレスデータを受けて、メモリモジュール１２４−０からテクスチャデータを読み出し、テクスチャフィルタリング（ＴｅｘｔｕｒｅＦｉｌｔｅｒｉｎｇ）を行う。
このとき第２の演算器１２３−０は、担当するテクセルのみのフィルタ値の部分演算のみを行い、フィルタリング後の部分演算データを、クロスバー回路１３を介して、スタンプに対応するフレームバッファを持つ処理モジュールの第１の演算器１２２−０〜１２２−３のいずれかに出力する。
この場合、第２の演算器１２３−０は、読み出されたテクスチャデータと、（ｕ，ｖ）アドレスは算出時に得た小数部を使って４近傍補間などのフィルタリング処理を行う。
また、第２の演算器１２３−０は、第１の演算器１２２−０により供給されたピクセルレベルの処理結果を受けて、ピクセルレベルの処理における各種テストをパスしたピクセルデータをメモリモジュール１２４−０に描画する。
【００３８】
処理モジュール１２−１におけるＤＤＡ回路１２１−１は、セットアップ回路１１による情報に基づいてＤＤＡパラメータ、具体的には、ラスタライゼーションに必要な各種データ（Ｚ、テクスチャ座標、カラーなど）の傾き等のＤＤＡパラメータを算出する。
また、ＤＤＡ回路１２１−１は、パラメータデータに基づいて、たとえば三角形が自分が担当する領域であるか否かを判断し、担当領域である場合には、ラスタライゼーションを行う。
具体的には、その三角形が自分が担当する領域、たとえば４×４ピクセルの矩形領域単位でインターリーブされた領域に属しているか否かを判断し、属している場合には、各種データ（Ｚ、テクスチャ座標、カラーなど）をラスタライズする。この場合、生成単位は、１ローカルモジュール当たり１サイクルで２×２ピクセルである。
次に、ＤＤＡ回路１２１−１は、テクスチャ座標のパースペクティブコレクション（Ｐｅｒｓｐｅｃｔｉｖｅ  Ｃｏｒｒｅｃｔｉｏｎ）を行う。また、この処理ステージにはＬＯＤ計算によるミップマップレベルの算出や、テクスチャアクセスのための（ｕ，ｖ）アドレス計算も含まれる。
【００３９】
そして、ＤＤＡ回路１２１−１は、たとえば図６に示すように、テクスチャ系のＤＤＡ部１２１１によりテクスチャ座標や、テクスチャアクセスのためのアドレス情報等のテクスチャ用処理を行い、テクスチャに関する情報を第１の演算器１２２−１、クロスバー回路１３を介して第２の演算器１２３−１に出力する。
一方、ＤＤＡ回路１２１−１は、テクスチャ以外のカラー等の処理はその他のＤＤＡ部１２１２で行って第１の演算器１２２−１に出力する。
【００４０】
第１の演算器１２２−１は、ＤＤＡ回路１２１−１により供給されたテクスチャ情報以外のデータ、および、クロスバー回路１３を介して受信する各処理モジュール１２−０〜１２−３の第２の演算器１２３−０〜１２３−３でテクスチャフィルタリング処理後の部分演算データを受けて、各部分演算データを加算して最終的なフィルタリング後のテクスチャ値を求める演算処理を行うピクセルレベルの処理を行い、その結果をクロスバー回路１３を介して第２の演算器１２３−１に出力する。
このピクセルレベルの処理においては、フィルタリング後のテクスチャデータと、ラスタライズ後の各種データを用いて、ピクセル単位の演算が行われる。ここで行われる処理は、ピクセルレベルでのライティングなどいわゆるＰｉｘｅｌ
Ｓｈａｄｅｒに相当する。
【００４１】
第２の演算器１２３−１は、ＤＤＡ回路１２１−１から供給されたテクスチャに関する座標データやアドレスデータを受けて、メモリモジュール１２４−１からテクスチャデータを読み出し、テクスチャフィルタリング（ＴｅｘｔｕｒｅＦｉｌｔｅｒｉｎｇ）を行う。
このとき第２の演算器１２３−１は、担当するテクセルのみのフィルタ値の部分演算のみを行い、フィルタリング後の部分演算データを、クロスバー回路１３を介して、スタンプに対応するフレームバッファを持つ処理モジュールの第１の演算器１２２−０〜１２２−３のいずれかに出力する。
この場合、第２の演算器１２３−１は、読み出されたテクスチャデータと、（ｕ，ｖ）アドレスは算出時に得た小数部を使って４近傍補間などのフィルタリング処理を行う。
また、第２の演算器１２３−１は、第１の演算器１２２−１により供給されたピクセルレベルの処理結果を受けて、ピクセルレベルの処理における各種テストをパスしたピクセルデータをメモリモジュール１２４−１に描画する。
【００４２】
処理モジュール１２−２におけるＤＤＡ回路１２１−２は、セットアップ回路１１による情報に基づいてＤＤＡパラメータ、具体的には、ラスタライゼーションに必要な各種データ（Ｚ、テクスチャ座標、カラーなど）の傾き等のＤＤＡパラメータを算出する。
また、ＤＤＡ回路１２１−２は、パラメータデータに基づいて、たとえば三角形が自分が担当する領域であるか否かを判断し、担当領域である場合には、ラスタライゼーションを行う。
具体的には、その三角形が自分が担当する領域、たとえば４×４ピクセルの矩形領域単位でインターリーブされた領域に属しているか否かを判断し、属している場合には、各種データ（Ｚ、テクスチャ座標、カラーなど）をラスタライズする。この場合、生成単位は、１ローカルモジュール当たり１サイクルで２×２ピクセルである。
次に、ＤＤＡ回路１２１−２は、テクスチャ座標のパースペクティブコレクション（Ｐｅｒｓｐｅｃｔｉｖｅ  Ｃｏｒｒｅｃｔｉｏｎ）を行う。また、この処理ステージにはＬＯＤ計算によるミップマップレベルの算出や、テクスチャアクセスのための（ｕ，ｖ）アドレス計算も含まれる。
【００４３】
そして、ＤＤＡ回路１２１−２は、たとえば図６に示すように、テクスチャ系のＤＤＡ部１２１１によりテクスチャ座標や、テクスチャアクセスのためのアドレス情報等のテクスチャ用処理を行い、テクスチャに関する情報を第１の演算器１２２−２、クロスバー回路１３を介して第２の演算器１２３−２に出力する。
一方、ＤＤＡ回路１２１−２は、テクスチャ以外のカラー等の処理はその他のＤＤＡ部１２１２で行って第１の演算器１２２−２に出力する。
【００４４】
第１の演算器１２２−２は、ＤＤＡ回路１２１−２により供給されたテクスチャ情報以外のデータ、および、クロスバー回路１３を介して受信する各処理モジュール１２−０〜１２−３の第２の演算器１２３−０〜１２３−３でテクスチャフィルタリング処理後の部分演算データを受けて、各部分演算データを加算して最終的なフィルタリング後のテクスチャ値を求める演算処理を行うピクセルレベルの処理を行い、その結果をクロスバー回路１３を介して第２の演算器１２３−２に出力する。
このピクセルレベルの処理においては、フィルタリング後のテクスチャデータと、ラスタライズ後の各種データを用いて、ピクセル単位の演算が行われる。ここで行われる処理は、ピクセルレベルでのライティングなどいわゆるＰｉｘｅｌ
Ｓｈａｄｅｒに相当する。
【００４５】
第２の演算器１２３−２は、ＤＤＡ回路１２１−２から供給されたテクスチャに関する座標データやアドレスデータを受けて、メモリモジュール１２４−２からテクスチャデータを読み出し、テクスチャフィルタリング（ＴｅｘｔｕｒｅＦｉｌｔｅｒｉｎｇ）を行う。
このとき第２の演算器１２３−２は、担当するテクセルのみのフィルタ値の部分演算のみを行い、フィルタリング後の部分演算データを、クロスバー回路１３を介して、スタンプに対応するフレームバッファを持つ処理モジュールの第１の演算器１２２−０〜１２２−３のいずれかに出力する。
この場合、第２の演算器１２３−２は、読み出されたテクスチャデータと、（ｕ，ｖ）アドレスは算出時に得た小数部を使って４近傍補間などのフィルタリング処理を行う。
また、第２の演算器１２３−２は、第１の演算器１２２−２により供給されたピクセルレベルの処理結果を受けて、ピクセルレベルの処理における各種テストをパスしたピクセルデータをメモリモジュール１２４−２に描画する。
【００４６】
処理モジュール１２−３におけるＤＤＡ回路１２１−３は、セットアップ回路１１による情報に基づいてＤＤＡパラメータ、具体的には、ラスタライゼーションに必要な各種データ（Ｚ、テクスチャ座標、カラーなど）の傾き等のＤＤＡパラメータを算出する。
また、ＤＤＡ回路１２１−３は、パラメータデータに基づいて、たとえば三角形が自分が担当する領域であるか否かを判断し、担当領域である場合には、ラスタライゼーションを行う。
具体的には、その三角形が自分が担当する領域、たとえば４×４ピクセルの矩形領域単位でインターリーブされた領域に属しているか否かを判断し、属している場合には、各種データ（Ｚ、テクスチャ座標、カラーなど）をラスタライズする。この場合、生成単位は、１ローカルモジュール当たり１サイクルで２×２ピクセルである。
次に、ＤＤＡ回路１２１−３は、テクスチャ座標のパースペクティブコレクション（Ｐｅｒｓｐｅｃｔｉｖｅ  Ｃｏｒｒｅｃｔｉｏｎ）を行う。また、この処理ステージにはＬＯＤ計算によるミップマップレベルの算出や、テクスチャアクセスのための（ｕ，ｖ）アドレス計算も含まれる。
【００４７】
そして、ＤＤＡ回路１２１−３は、たとえば図６に示すように、テクスチャ系のＤＤＡ部１２１１によりテクスチャ座標や、テクスチャアクセスのためのアドレス情報等のテクスチャ用処理を行い、テクスチャに関する情報を第１の演算器１２２−３、クロスバー回路１３を介して第２の演算器１２３−３に出力する。
一方、ＤＤＡ回路１２１−３は、テクスチャ以外のカラー等の処理はその他のＤＤＡ部１２１２で行って第１の演算器１２２−３に出力する。
【００４８】
第１の演算器１２２−３は、ＤＤＡ回路１２１−３により供給されたテクスチャ情報以外のデータ、および、クロスバー回路１３を介して受信する各処理モジュール１２−０〜１２−３の第２の演算器１２３−０〜１２３−３でテクスチャフィルタリング処理後の部分演算データを受けて、各部分演算データを加算して最終的なフィルタリング後のテクスチャ値を求める演算処理を行うピクセルレベルの処理を行い、その結果をクロスバー回路１３を介して第２の演算器１２３−３に出力する。
このピクセルレベルの処理においては、フィルタリング後のテクスチャデータと、ラスタライズ後の各種データを用いて、ピクセル単位の演算が行われる。ここで行われる処理は、ピクセルレベルでのライティングなどいわゆるＰｉｘｅｌ
Ｓｈａｄｅｒに相当する。
【００４９】
第２の演算器１２３−３は、ＤＤＡ回路１２１−３から供給されたテクスチャに関する座標データやアドレスデータを受けて、メモリモジュール１２４−３からテクスチャデータを読み出し、テクスチャフィルタリング（ＴｅｘｔｕｒｅＦｉｌｔｅｒｉｎｇ）を行う。
このとき第２の演算器１２３−３は、担当するテクセルのみのフィルタ値の部分演算のみを行い、フィルタリング後の部分演算データを、クロスバー回路１３を介して、スタンプに対応するフレームバッファを持つ処理モジュールの第１の演算器１２２−０〜１２２−３のいずれかに出力する。
この場合、第２の演算器１２３−３は、読み出されたテクスチャデータと、（ｕ，ｖ）アドレスは算出時に得た小数部を使って４近傍補間などのフィルタリング処理を行う。
また、第２の演算器１２３−３は、第１の演算器１２２−３により供給されたピクセルレベルの処理結果を受けて、ピクセルレベルの処理における各種テストをパスしたピクセルデータをメモリモジュール１２４−３に描画する。
【００５０】
図７は、本実施形態に係るクロスバー回路のグローバルバス系統の一構成例を示す図である。
このクロスバー回路１３は、図７に示すように、４本のテクスチャラインを１グループとして、４グループの第１〜第４の配線群ＧＲＰ０〜ＧＲＰ３を有している。
第１の配線群ＧＲＰ０は４本の配線ｔｅｘ００〜ｔｅｘ０３を有し、第２の配線群ＧＲＰ１は４本の配線ｔｅｘ１０〜ｔｅｘ１３を有し、第３の配線群ＧＲＰ２は４本の配線ｔｅｘ２０〜ｔｅｘ２３を有し、第４の配線群ＧＲＰ３は４本の配線ｔｅｘ３０〜ｔｅｘ３３を有している。
そして、処理モジュール１２−０の第２の演算器１２３−０の端子が第１の配線群ＧＲＰ０の配線ｔｅｘ００、第２の配線群ＧＲＰ１の配線ｔｅｘ１０、第３の配線群ＧＲＰ２の配線ｔｅｘ２０、第４の配線群ＧＲＰ３の配線ｔｅｘ３０に接続されている。
同様に、処理モジュール１２−１の第２の演算器１２３−１の端子が第１の配線群ＧＲＰ０の配線ｔｅｘ０１、第２の配線群ＧＲＰ１の配線ｔｅｘ１１、第３の配線群ＧＲＰ２の配線ｔｅｘ２１、第４の配線群ＧＲＰ３の配線ｔｅｘ３１に接続されている。
処理モジュール１２−２の第２の演算器１２３−２の端子が第１の配線群ＧＲＰ０の配線ｔｅｘ０２、第２の配線群ＧＲＰ１の配線ｔｅｘ１２、第３の配線群ＧＲＰ２の配線ｔｅｘ２２、第４の配線群ＧＲＰ３の配線ｔｅｘ３２に接続されている。
処理モジュール１２−３の第２の演算器１２３−３の端子が第１の配線群ＧＲＰ０の配線ｔｅｘ０３、第２の配線群ＧＲＰ１の配線ｔｅｘ１３、第３の配線群ＧＲＰ２の配線ｔｅｘ２３、第４の配線群ＧＲＰ３の配線ｔｅｘ３３に接続されている。
【００５１】
そして、第１の配線群ＧＲＰ０の４本の配線ｔｅｘ００〜ｔｅｘ０３が処理モジュール１２−０の第１の演算器１２２−０の各端子に接続されている。
同様に、第２の配線群ＧＲＰ１の４本の配線ｔｅｘ１０〜ｔｅｘ１３が処理モジュール１２−１の第１の演算器１２２−１の各端子に接続されている。
第３の配線群ＧＲＰ２の４本の配線ｔｅｘ２０〜ｔｅｘ２３が処理モジュール１２−２の第１の演算器１２２−２の各端子に接続されている。
第４の配線群ＧＲＰ３の４本の配線ｔｅｘ３０〜ｔｅｘ３３が処理モジュール１２−３の第１の演算器１２２−３の各端子に接続されている。
【００５２】
次に、上記図４の構成による動作を、図５に関連付けて説明する。
【００５３】
まず、セットアップ回路１１において、頂点データに対する演算が行われ、１プリミティブがセットアップされ、各処理モジュール１２−０〜１２−３にそれぞれ担当テクスチャ分のセットアップ情報が出力される。
【００５４】
各処理モジュール１２−０〜１２−３におけるＤＤＡ回路１２１−０〜１２１−３では、セットアップ回路１１による情報に基づいてＤＤＡパラメータ、具体的には、ラスタライゼーションに必要な各種データ（Ｚ、テクスチャ座標、カラーなど）の傾き等のＤＤＡパラメータが算出される。
また、ＤＤＡ回路１２１−０〜１２１−３では、パラメータデータに基づいて、たとえば三角形が自分が担当する領域であるか否かを判断し、担当領域である場合には、ラスタライゼーションが行われる。
さらに、ＤＤＡ回路１２１−０〜１２１−３では、ＬＯＤ計算によるミップマップレベルの算出や、テクスチャアクセスのための（ｕ，ｖ）アドレス計算が行われる。
【００５５】
そして、ＤＤＡ回路１２１−０〜１２１−３では、テクスチャ系のＤＤＡ部１２１１により得られたテクスチャ座標や、テクスチャアクセスのためのアドレス情報等が第１の演算器１２２−０〜１２２−３、クロスバー回路１３を介して第２の演算器１２３−０〜１２３−３に出力される。
一方、ＤＤＡ回路１２１−０〜１２１−３では、その他のＤＤＡ部１２１２で得られたテクスチャ以外のカラー等の情報が第１の演算器１２２−０〜１２２−３にそれぞれ供給される。
【００５６】
そして、各処理モジュール１２−０〜１２−３の第２の演算器１２３−０〜１２３−３では、ＤＤＡ回路１２１−０〜１２１−３から供給されたテクスチャに関する座標データやアドレスデータを受けて、メモリモジュール１２４−０〜１２４−３からテクスチャデータが読み出されて、読み出されたテクスチャデータと、（ｕ，ｖ）アドレスは算出時に得た小数部を使って４近傍補間などの部分テクスチャフィルタリングが行われる。
すなわち、このとき、第２の演算器１２３−０〜１２３−３では、担当するテクセルのみのフィルタ値の部分演算が行われる。
この第２の演算器１２３−０〜１２３−３によるフィルタリング後の各部分演算データが、クロスバー回路１３を介して、スタンプに対応するフレームバッファを持つたとえば処理モジュール１２−１の第１の演算器１２２−１に供給される。
【００５７】
処理モジュール１２−１の第１の演算器１２２−１では、ＤＤＡ回路１２１−１により供給されたテクスチャ情報以外のデータ、および、クロスバー回路１３を介して受信する各処理モジュール１２−０〜１２−３の第２の演算器１２３−０〜１２３−３でテクスチャフィルタリング処理後の部分演算データを受けて、各部分演算データを加算して最終的なフィルタリング後のテクスチャ値を求める演算処理を行うピクセルレベルの処理が行われ、その結果がクロスバー回路１３を介して第２の演算器１２３−１に出力される。
【００５８】
そして、第２の演算器１２３−１では、第１の演算器１２２−１により供給されたピクセルレベルの処理結果を受けて、ピクセルレベルの処理における各種テストをパスしたピクセルデータがメモリモジュール１２４−１に描画される。
【００５９】
以上の処理が各モジュールで並列的に行われる。
【００６０】
以上説明したように、本実施形態によれば、図８に示すように、ＤＤＡ処理後（ＳＴ１１）、メモリからテクスチャデータを読み出し（ＳＴ１２）、サブワード再配置処理を行った後（ＳＴ１３）、テクセルについての部分フィルタリングを行い（ＳＴ１４）、その後、クロスバー回路１３により各処理モジュールの第１の演算器にグローバル分配し（ＳＴ１５）、ピクセルレベルの処理、具体的には、フィルタリング後の部分演算データを受けて、各部分演算データを加算して最終的なフィルタリング後のテクスチャ値を求める演算処理を行うピクセル単位の演算を行い（ＳＴ１６）、ピクセルレベルの処理における各種テストをパスしたピクセルデータを、メモリモジュール上のフレームバッファに描画する（ＳＴ１７）ことから、以下の効果を得ることができる。
【００６１】
すなわち、処理モジュール間のテクセル転送量を削減できることから、グローバルバスとしてのクロスバー回路１３を小型化できる。
また、メモリの配置がグローバルで良い。すなわち、フレームバッファと同じ配置にできることから、フレームバッファをテクスチャメモリとして用いることが可能である。また、サイズの違うマップも効率的に配置することができる。
また、特定のテクセルに対するキャッシュが１箇所だけになることから、キャッシュの利用効率が高い。
また、処理モジュール間で４×４単位のインターリーブとした場合、２×２の４近傍補間フィルタで１ピクセル当たり、２５／１６テクセルの転送で処理可能である。
なお、本実施形態によらない場合には、４８／１６テクセルの転送となる。リクエストマージを行っても３２／１６テクセルの転送である。
【００６２】
【発明の効果】
以上説明したように、本発明によれば、複数の処理装置が処理データを共有して並列処理する際に、クロスバー回路の配線本数を削減し、小型化することができる。その結果、設計が容易で、配線コスト、配線遅延を低減できる画像処理装置を実現できる利点がある。
【図面の簡単な説明】
【図１】プリミティブレベルでの並列化処理について概念的に示す図である。
【図２】ピクセルレベルでの並列処理の手法に基づくプリミティブレベルでの並列化処理について概念的に示す図である。
【図３】従来の画像処理装置のテクスチャフィルタリングを含む処理手順を説明するための図である。
【図４】本発明の係る画像処理装置の一実施形態を示すブロック構成図である。
【図５】本実施形態に係る画像処理装置の基本的なアーキテクチャおよび処理フローを示す図である。
【図６】本実施形態に係るＤＤＡ回路の要部の構成例を示す図である。
【図７】本実施形態に係るクロスバー回路の具体的な構成例を示す図である。
【図８】本実施形態に係る画像処理装置の概念的な処理フローを示す図である。
【符号の説明】
１０…画像処理装置、１１…セットアップ回路、１２−０〜１２−３…処理モジュール、１２１−０〜１２１−３…ＤＤＡ回路、１２２−０〜１２２−３…第１の演算器、１２３−０〜１２３−３…第２の演算器、１２４−０〜１２４−３…メモリモジュール、１３…クロスバー回路。
【図１】
0004000880.tif 000002
【図２】
0004000880.tif 000003
【図３】
0004000880.tif 000004
【図４】
0004000880.tif 000005
【図５】
0004000880.tif 000006
【図６】
0004000880.tif 000007
【図７】
0004000880.tif 000008
【図８】
0004000880.tif 000009