(57)【特許請求の範囲】
【請求項１】
複数のモジュールが処理データを共有して並列処理を行う画像処理装置であって、
グローバルモジュールと、複数のローカルモジュールとを含み、
上記グローバルモジュールは、
上記複数のローカルモジュールが並列に接続され、上記ローカルモジュールで必要な処理データが記憶されるグローバルキャッシュを有し、ローカルモジュールからローカルキャッシュフィルリクエストを受けると、上記グローバルキャッシュにある要求に応じたデータを当該リクエストを出したローカルモジュールに出力し、
上記複数のローカルモジュールは、
画像に関するデータが記憶されるメモリモジュールと、
少なくとも上記処理データを記憶するローカルキャッシュと、
演算用パラメータおよび上記ローカルキャッシュに記憶されている処理データに基づいてあらかじめ対応するメモリインターリーブで決められた担当する処理を行う処理ユニットとを有し、
処理に必要な処理データが上記ローカルキャッシュに無い場合には、必要なデータを要求するローカルキャッシュフィルリクエストを出力し、当該リクエストに応じて送られてきたデータで上記ローカルキャッシュを更新する
画像処理装置。
【請求項２】
上記グローバルモジュールは、ローカルモジュールからローカルキャッシュフィルリクエストを受けると、グローバルキャッシュのエントリーをチェックし、エントリーがあった場合には、要求されたブロックデータを読み出し、読み出したデータをリクエストを送出したローカルモジュールに送出する
請求項１記載の画像処理装置。
【請求項３】
上記ローカルモジュールは、グローバルキャッシュフィルリクエストを受けると、要求されたブロックデータを上記グローバルモジュールに出力し、
上記グローバルモジュールは、ローカルモジュールからローカルキャッシュフィルリクエストを受けると、グローバルキャッシュのエントリーをチェックし、エントリーがなかった場合には、要求されたブロックデータを保持するターゲットのローカルモジュールに対してグローバルキャッシュフィルリクエストを送り、その後ターゲットのローカルモジュールから送られてきたブロックデータでグローバルキャッシュを更新するとともに、当該ブロックデータを読み出し、読み出したデータをローカルキャッシュフィルリクエストを送ってきたローカルモジュールに対して送出する
請求項１記載の画像処理装置。
【請求項４】
上記ローカルモジュールは、グローバルキャッシュフィルリクエストを受けると、要求されたブロックデータを上記グローバルモジュールに出力し、
上記グローバルモジュールは、ローカルモジュールからローカルキャッシュフィルリクエストを受けると、グローバルキャッシュのエントリーをチェックし、エントリーがあった場合には、要求されたブロックデータを読み出し、読み出したデータをリクエストを送出したローカルモジュールに送出し、エントリーがなかった場合には、要求されたブロックデータを保持するターゲットのローカルモジュールに対してグローバルキャッシュフィルリクエストを送り、その後ターゲットのローカルモジュールから送られてきたブロックデータでグローバルキャッシュを更新するとともに、当該ブロックデータを読み出し、読み出したデータをローカルキャッシュフィルリクエストを送ってきたローカルモジュールに対して送出する
請求項１記載の画像処理装置。
【請求項５】
上記演算用パラメータを生成するコントローラを有し、
上記グローバルモジュールは、上記コントローラで生成された演算用パラメータを上記複数のローカルモジュールに供給する
請求項１記載の画像処理装置。
【請求項６】
上記グローバルモジュールは、各ローカルモジュール対応に設けられた複数のチャネルブロックを有し、
上記複数のチャネルブロックは、対応するローカルモジュールとローカルキャッシュフィルリクエストおよびデータの授受を行う
請求項１記載の画像処理装置。
【請求項７】
上記グローバルモジュールは、各ローカルモジュール対応に設けられた複数のチャネルブロックを有し、
上記複数のチャネルブロックは、対応するローカルモジュールとローカルキャッシュフィルリクエスト、グローバルキャッシュフィルリクエストおよびデータの授受を行う
請求項４記載の画像処理装置。
【請求項８】
複数のモジュールが処理データを共有して並列処理を行う画像処理装置であって、
グローバルモジュールと、複数のローカルモジュールとを含む複数のクラスタを有し、
上記各クラスタの上記グローバルモジュールは、
上記複数のローカルモジュールが並列に接続され、上記ローカルモジュールで必要な処理データが記憶されるグローバルキャッシュを有し、ローカルモジュールからローカルキャッシュフィルリクエストを受けると、上記グローバルキャッシュにある要求に応じたデータを当該リクエストを出したローカルモジュールに出力し、
上記複数のローカルモジュールは、
画像に関するデータが記憶されるメモリモジュールと、
少なくとも上記処理データを記憶するローカルキャッシュと、
演算用パラメータおよび上記ローカルキャッシュに記憶されている処理データに基づいてあらかじめ対応するメモリインターリーブで決められた担当する処理を行う処理ユニットとを有し、
処理に必要な処理データが上記ローカルキャッシュに無い場合には、必要なデータを要求するローカルキャッシュフィルリクエストを出力し、当該リクエストに応じて送られてきたデータで上記ローカルキャッシュを更新し、
各クラスタのグローバルモジュールが互いにデータの授受を行う
画像処理装置。
【請求項９】
上記複数のクラスタは、マトリクス状に配置され、各クラスタのグローバルモジュールはリング状に接続されている
請求項８記載の画像処理装置。
【請求項１０】
上記グローバルモジュールは、ローカルモジュールからローカルキャッシュフィルリクエストを受けると、グローバルキャッシュのエントリーをチェックし、エントリーがあった場合には、要求されたブロックデータを読み出し、読み出したデータをリクエストを送出したローカルモジュールに送出する
請求項８記載の画像処理装置。
【請求項１１】
上記ローカルモジュールは、グローバルキャッシュフィルリクエストを受けると、要求されたブロックデータを上記グローバルモジュールに出力し、
上記グローバルモジュールは、ローカルモジュールからローカルキャッシュフィルリクエストを受けると、グローバルキャッシュのエントリーをチェックし、エントリーがなかった場合には、要求されたブロックデータを保持するターゲットのローカルモジュールに対してグローバルキャッシュフィルリクエストを送り、その後ターゲットのローカルモジュールから送られてきたブロックデータでグローバルキャッシュを更新するとともに、当該ブロックデータを読み出し、読み出したデータをローカルキャッシュフィルリクエストを送ってきたローカルモジュールに対して送出する
請求項８記載の画像処理装置。
【請求項１２】
上記ローカルモジュールは、グローバルキャッシュフィルリクエストを受けると、要求されたブロックデータを上記グローバルモジュールに出力し、
上記グローバルモジュールは、ローカルモジュールからローカルキャッシュフィルリクエストを受けると、グローバルキャッシュのエントリーをチェックし、エントリーがあった場合には、要求されたブロックデータを読み出し、読み出したデータをリクエストを送出したローカルモジュールに送出し、エントリーがなかった場合には、要求されたブロックデータを保持するターゲットのローカルモジュールに対してグローバルキャッシュフィルリクエストを送り、その後ターゲットのローカルモジュールから送られてきたブロックデータでグローバルキャッシュを更新するとともに、当該ブロックデータを読み出し、読み出したデータをローカルキャッシュフィルリクエストを送ってきたローカルモジュールに対して送出する
請求項８記載の画像処理装置。
【請求項１３】
上記演算用パラメータを生成するコントローラを有し、
上記グローバルモジュールは、上記コントローラで生成された演算用パラメータを上記複数のローカルモジュールに供給する
請求項１記載の画像処理装置。
【請求項１４】
上記グローバルモジュールは、各ローカルモジュール対応に設けられた複数のチャネルブロックを有し、
上記複数のチャネルブロックは、対応するローカルモジュールとローカルキャッシュフィルリクエストおよびデータの授受を行う
請求項８記載の画像処理装置。
【請求項１５】
上記グローバルモジュールは、各ローカルモジュール対応に設けられた複数のチャネルブロックを有し、
上記複数のチャネルブロックは、対応するローカルモジュールとローカルキャッシュフィルリクエスト、グローバルキャッシュフィルリクエストおよびデータの授受を行う
請求項１２記載の画像処理装置。
【請求項１６】
複数のモジュールが処理データを共有して並列処理を行う画像処理方法であって、
一つのグローバルモジュールに対して複数のローカルモジュールを並列に接続し、
キャッシュの階層として、複数のローカルモジュールが共有するグローバルキャッシュと、各ローカルモジュールがローカルに持つローカルキャッシュの２階層とし、
グローバルモジュールにおいて、
グローバルキャッシュにローカルモジュールで必要な処理データを記憶して、ローカルモジュールからローカルキャッシュフィルリクエストを受けると、上記グローバルキャッシュにある要求に応じたデータを当該リクエストを出したローカルモジュールに出力し、
上記複数のローカルモジュールにおいて、
上記ローカルキャッシュに少なくとも上記処理データを記憶して、演算用パラメータおよびローカルキャッシュに記憶されている処理データに基づいてあらかじめ対応するメモリインターリーブで決められた担当する処理を行い、
処理に必要な処理データが上記ローカルキャッシュに無い場合には、必要なデータを要求するローカルキャッシュフィルリクエストを出力し、当該リクエストに応じて送られてきたデータで上記ローカルキャッシュを更新する
画像処理方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、複数の演算処理装置が処理データを共有して並列処理を行う画像処理装置およびその方法に関するものである。
【０００２】
【従来の技術】
近年、３次元コンピュータグラフィックス（３Ｄ  Ｃｏｍｐｕｔｅｒ  Ｇｒａｐｈｉｃｓ）をハードウェアで高速に実行するグラフィックスＬＳＩの普及は著しく、特にゲーム機やパーソナルコンピュータ（ＰＣ）では、このグラフィックスＬＳＩを標準で搭載しているものが多い。
また、グラフィックスＬＳＩにおける技術的進歩は早く、「ＤｉｒｅｃｔＸ」で採用された「Ｖｅｒｔｅｘ  Ｓｈａｄｅｒ」や「Ｐｉｘｅ１  Ｓｈａｄｅｒ」に代表される機能面での拡張が続けられているとともに、ＣＰＵを上回るペースで性能が向上している。
【０００３】
グラフィックスＬＳＩの性能を向上させるには、ＬＳＩの動作周波数を上げるだけではなく、並列処理の手法を利用することが有効である。並列処理の手法を大別すると以下のようになる。
第１は領域分割による並列処理法であり、第２はプリミティブレベルでの並列処理法であり、第３はピクセルレベルでの並列処理法である。
【０００４】
上記分類は並列処理の粒度に基づいており、領域分割並列処理の粒度が最もあらく、ピクセル・レベル並列処理の粒度が最も細かい。それぞれの手法の概要を以下に述べる。
【０００５】
領域分割による並列処理
画面を複数の矩形領域に分割し、複数の処理ユニットそれぞれが担当する領域を割り当てながら並列処理する手法である。
【０００６】
プリミティブレベルでの並列処理
複数の処理ユニットに別々のプリミティブ（たとえば三角形）を与えて並列動作させる手法である。
プリミティブレベルでの並列化処理について概念的に示したものを図１に示す。
図１において、ＰＭ０〜ＰＭｎ−１がそれぞれ異なるプリミティブを示し、ＰＵ０〜ＰＵｎ−１が処理ユニット、ＭＭ０〜ＭＭｎ−１がメモリモジュールをそれぞれ示している。
各処理ユニットＰＵ０〜ＰＵｎ−１に比較的均等な大きさのプリミティブＰＭ０〜ＰＭｎ−１が与えられているときには、各処理ユニットＰＵ０〜ＰＵｎ−１に対する負荷のバランスがとれ、効率的並列処理が行える。
【０００７】
ピクセルレベルでの並列処理
最も粒度の細かい並列処理の手法である。
図２は、ピクセルレベルでの並列処理の手法に基づくプリミティブ・レベルでの並列化処理について概念的に示す図である。
図２のように、ピクセルレベルでの並列処理の手法では三角形をラスタライズする際に、２×８のマトリクス状に配列されたピクセルからなるピクセルスタンプ（Ｐｉｘｅｌ  Ｓｔａｍｐ）ＰＳと呼ばれる矩形領域単位にピクセルが生成される。
図２の例では、ピクセルスタンプＰＳ０からからピクセルスタンプＰＳ７までの合計８個のピクセルスタンプが生成されている。これらピクセルスタンプＰＳ０〜ＰＳ７に含まれる最大１６個のピクセルが同時に処理される。
この手法は、他の手法に比べ粒度が細かい分、並列処理の効率が良い。
【０００８】
【発明が解決しようとする課題】
しかしながら、上述した領域分割による並列処理の場合、各処理ユニットを効率良く並列動作させるためには、各領域に描画されるべきオブジェクトをあらかじめ分類する必要があり、シーンデータ解析の負荷が重い。
また、１フレーム分のシーンデータが全て揃った上で描画を開始するのではなく、オブジェクトデータが与えられると即描画を開始するいわゆるイミーディエートモードでの描画を行う際には並列性を引き出すことができない。
【０００９】
また、プリミティブレベルでの並列処理の場合、実際には、オブジェクトを構成するプリミティブＰＭ０〜ＰＭｎ−１の大きさにはバラツキがあることから、処理ユニットＰＵ０〜ＰＵｎ−１ごとに一つのプリミティブを処理する時間に差が生じる。この差が大きくなった際には、処理ユニットが描画する領域も大きく異なり、データのローカリティが失われるので、メモリモジュールを構成するたとえばＤＲＡＭのページミスが頻発し性能が低下する。
また、この手法の場合には、配線コストが高いという問題点もある。一般に、グラフィックス処理を行うハードウェアでは、メモリのバンド幅を広げるために、複数メモリモジュールを用いてメモリインターリーブを行う。
その際、図１に示すように、各処理ユニットＰＵ０〜ＰＵｎ−１と各内蔵メモリモジュールＭＭ０〜ＭＭｎ−１を全て結ぶ必要がある。
【００１０】
また、ピクセルレベルでの並列処理の場合、グラフィックスで処理されるプリミティブの大きさは小さくなる傾向にあることから、ピクセルスタンプのサイズを大きくしても無効なピクセルが増えるだけで実行効率が上がらない。
したがって、この手法によって並列処理できるピクセルの数には限界がある。
【００１１】
そこで、上述した各並列処理手法の特性に基づき、以下のような並列処理手法をとることが考えられる。
すなわち、並列処理の粒度という観点からはピクセルレベルの並列処理を採用する。
ただし、ピクセルレベルの並列処理では並列度に限界があるので、複数のプリミティブを同時処理する。
また、処理ユニットとメモリモジュールを直結できる処理分配とし、配線コストを低減する。
【００１２】
図３は、ピクセルレベルの並列処理を採用し、複数のプリミティブを同時処理し、処理ユニットとメモリモジュールを直結できる処理分配とする画像処理装置の構成を概念的に示す図である。
【００１３】
画像処理装置１は、図３に示すように、ストリームデータコントローラ（Ｓｔｒｅａｍｉｎｇ  Ｄａｔａ  Ｃｏｎｔｒｏ１１ｅｒ：ＳＤＣ）２、およびＳＤＣ２に対して並列に接続されたｎ個のモジュール３−０〜３−ｎ−１を有している。
各モジュール３−０〜３−ｎ−１は、それぞれ処理ユニットＰＵ（０〜ｎ−１）およびメモリモジュールＭＭ（０〜ｎ−１）を含む。
【００１４】
図３において、各メモリモジュールＭＭ０〜ＭＭｎ−１はインターリーブされているとする。
また、ＳＤＣ２は、ＣＰＵや外部メモリとのデータの授受を司るとともに、処理ユニットＰＵ０〜ＰＵｎ−１におけるラスタライゼーションに必要なパラメータを生成する。これらのパラメータは、全処理ユニットＰＵ０〜ＰＵｎ−１に対して供給される。
各処理ユニットＰＵ０〜ＰＵｎ−１は、あらかじめ対応するメモリインターリーブが決められており、それぞれ担当するピクセルのみを生成する。
【００１５】
図４は、図３の画像処理装置におけるピクセル生成について説明するための図である。
【００１６】
図４の例では、メモリが４×４の矩形領域単位にインターリーブされている。それぞれの矩形領域をＬｓｔａｍｐ（Ｌａｒｇｅ  ｓｔａｍｐ）と呼ぶこととする。ここでは、図３で示した処理ユニットＰＵとメモリモジュールＭＭで構成されるモジュールの数は４個（３−０〜３−３）を想定している。また、モジュールの番号と図４における矩形領域に付与した番号とが対応している。
したがって、図４に示した三角形の場合、モジュール３−０は２個のＬｓｔａｍｐ、モジュール３−１から３−３はそれぞれ３個のＬｓｔａｍｐを担当している。
図４からもわかるように、Ｌｓｔａｍｐ内には多くの無効ピクセルが含まれている。そこで、図３の画像処理装置１において、Ｌｓｔａｍｐをさらに２×２の矩形領域４個に分割し（スモールスタンプ：Ｓｍａｌｌ  ｓｔａｍｐ：Ｓｓｔａｍｐ）、有効ピクセルを含むスモールスタンプＳｓｔａｍｐのみ後段で処理することにより演算リソースを有効利用することも可能である。
【００１７】
上述した図３の並列化手法により、グラフィックス処理の描画系に関しては、処理ユニットとメモリモジュールを直結できる処理分配が可能で、配線コストを低減できる。
【００１８】
しかしながら、テクスチャリード系のメモリアクセスは、描画系のメモリアクセスとは異なるため、他のモジュールに属すメモリからの読み出しが必要となる。
したがって、テクスチャリード系のメモリアクセスに関しては何らかのクロスバーのような配線を必要とするが、それを実現する際には以下の重複アクセス、およびスケーラビリティの各課題を解決しなければならない。
【００１９】
重複アクセス
一般に、スクリーン上の矩形領域をテクスチャ空間に投影すると形状と大きさが異なる領域を占める。
図５（Ａ），（Ｂ）は、スクリーン上の矩形領域をテクスチャ空間に投影する様子を概念的に示す図である。
ここで、テクスチャデータは、フレームバッファやＺバッファのデータと同様に、インターリーブされたメモリに均等に格納されているとする。
すなわち、４×４の矩形領域は、付与された番号に対応するモジュール内のメモリに格納される。図では、図５（Ａ）に示すスクリーン空間（ＳｃｒｅｅｎＳｐａｃｅ）上で隣接する４×４の矩形領域４つが、図５（Ｂ）に示すテクスチャ空間（Ｔｅｘｔｕｒｅ  Ｓｐａｃｅ）上に投影されている様子を示している。
たとえば、図５（Ｂ）において“モジュール３−０の領域（Ｒｅｇｉｏｎ  ｆｏｒ  Ｍｏｄｕｌｅ３−０）”と記載された領域は、モジュール３−０が担当するスクリーン空間上で４×４の矩形領域に対してマッピングされるテクスチャデータを示す。
【００２０】
この場合、図５（Ａ），（Ｂ）に示すように、あるモジュール内に格納されているテクスチャデータに対して、他の複数のモジュールがアクセスを行う。しかもアクセスするタイミングは、それぞれ異なってくる。
したがって、モジュール間の転送単位が４×４テクセル単位であるとすると、図５（Ｂ）のテクスチャ空間において網掛けで示されたデータは、４回転送されることになる。
このように、同一のデータを複数回転送することは、電気的、物理的条件で制約されるメモリバンド幅を浪費し、性能低下を招く。
【００２１】
スケーラビリティ
図６は、複数の処理ユニットで並列処理を行うシステムにおいて、テクスチャリード系のメモリアクセスに必要となるクロスバーを最も直接的な形で実現した例を示す図である。
図６において、ＧＡＢで示すグローバルアクセスバス（Ｇｌｏｂａｌ  Ａｃｃｅｓｓ  Ｂｕｓ）がテクスチャアクセス用のクロスバーに相当する。
【００２２】
１つのメモリモジュールから読み出されるデータのビット数をＭビット、並列処理するモジュールの数をｎ個とすると、テクスチャアクセスに必要なデータ配線本数は、Ｍ×ｎ本である。
図６に示したシステムをＬＳＩ化する際には、前記本数（Ｍ×ｎ本）のデータ線が全モジュールに亘って横方向に配線されるのみならず、各処理ユニットに引き込むための縦方向の配線も必要となる。
このような形態でのクロスバーは、スケーラビリティを実現する上で以下の、処理ユニットのインターフェース、配線コスト、および配線遅延という不利益をもたらす。
【００２３】
処理ユニットインターフェース
図６において破線の楕円で示すように、各モジュール３−０〜３−ｎ−１における処理ユニットＰＵ０〜ＰＵｎ−１は、ｎ個のメモリモジュールＭＭ０〜ＭＭｎ−１から読み出されたデータを受取り、必要なデータを選択するためのインターフェースを必要とする。
このインターフェースは、集積されるモジュールの個数に依存するため、並列度を変えるたびに再設計しなければならない。
【００２４】
配線コスト
前述した重複アクセスやフィルタリング処理に起因するバンド幅増大を考慮せず、読み出されたテクスチャ・データが１００％有効利用される理想的状態において、最低限必要とされるグローバルアクセスバスＧＡＢの配線本数を算出してみる。
今、各処理ユニットでは、１サイクル当たり４ピクセルの処理を行い、４つのテクスチャを同時アクセス可能とする。
このとき、１ピクセルあたり平均して１テクセルしか必要としない状態でも、１モジュール当たり４×４×３２＝５１２ビットのバンド幅を必要とする。したがって、ｎ個のモジュールを集積したシステムの場合のグローバルアクセスバスＧＡＢの配線幅ＷB は以下のように求まる。
【００２５】
【数１】
ＷB ＝（５１２×Ｎ×Ｗp ）／ＮL
【００２６】
ここで、Ｗp は配線ピッチ、ＮL は配線に使うレイヤ数である。たとえば、想定する０．０７μプロセスでの参考値として、Ｗp ＝０．９μ、ＮL ＝２を適用すると、モジュール数を変えたときの配線幅は以下のようになる。
【００２７】
４モジュール  ：０．９ｍｍ、
８モジュール  ：１．８ｍｍ、
１６モジュール：３．６ｍｍ
【００２８】
チップサイズが１０ｍｍ角だとすると、８モジュールの場合で、チップサイズの２０％をグローバルアクセスバスＧＡＢの横配線のみで使用してしまう。
しかも、理想状態における最低限必要な配線であり、実際にはその倍以上はないと実行性能がでない。
【００２９】
配線遅延
プロセスが微細化し、動作周波数も上がってくると、配線による遅延が支配的となる。たとえば、１ＧＨｚ動作の場合、配線できる長さは１ｍｍから２ｍｍ程度と言われる。
したがって、図６に示したようなグローバルアクセスバスＧＡＢの場合、バスの端から端までが１０ｍｍを越えることもある。その結果、配線にパイプラインレジスタを必要とし、読み出しレイテンシーが増大する。
しかも、処理ユニットとメモリモジュールの組み合わせによって配線長が異なるため、組み合わせごとのタイミングの最適化を行わなければならず、設計しにくいという問題もある。
【００３０】
本発明は、かかる事情に鑑みてなされたものであり、その目的、複数の処理装置が処理データを共有して並列処理する際に、重複アクセスを低減でき、配線本数の多いクロスバーが不要で、設計が容易で、配線コスト、配線遅延を低減できる画像処理装置およびその方法を提供することにある。
【００３１】
【課題を解決するための手段】
上記目的を達成するため、本発明の第１の観点は、複数のモジュールが処理データを共有して並列処理を行う画像処理装置であって、グローバルモジュールと、複数のローカルモジュールとを含み、上記グローバルモジュールは、上記複数のローカルモジュールが並列に接続され、上記ローカルモジュールで必要な処理データが記憶されるグローバルキャッシュを有し、ローカルモジュールからローカルキャッシュフィルリクエストを受けると、上記グローバルキャッシュにある要求に応じたデータを当該リクエストを出したローカルモジュールに出力し、上記複数のローカルモジュールは、画像に関するデータが記憶されるメモリモジュールと、少なくとも上記処理データを記憶するローカルキャッシュと、演算用パラメータおよび上記ローカルキャッシュに記憶されている処理データに基づいてあらかじめ対応するメモリインターリーブで決められた担当する処理を行う処理ユニットとを有し、処理に必要な処理データが上記ローカルキャッシュに無い場合には、必要なデータを要求するローカルキャッシュフィルリクエストを出力し、当該リクエストに応じて送られてきたデータで上記ローカルキャッシュを更新する。
【００３２】
本発明の第２の観点は、複数のモジュールが処理データを共有して並列処理を行う画像処理装置であって、グローバルモジュールと、複数のローカルモジュールとを含む複数のクラスタを有し、上記各クラスタの上記グローバルモジュールは、上記複数のローカルモジュールが並列に接続され、上記ローカルモジュールで必要な処理データが記憶されるグローバルキャッシュを有し、ローカルモジュールからローカルキャッシュフィルリクエストを受けると、上記グローバルキャッシュにある要求に応じたデータを当該リクエストを出したローカルモジュールに出力し、上記複数のローカルモジュールは、画像に関するデータが記憶されるメモリモジュールと、少なくとも上記処理データを記憶するローカルキャッシュと、演算用パラメータおよび上記ローカルキャッシュに記憶されている処理データに基づいてあらかじめ対応するメモリインターリーブで決められた担当する処理を行う処理ユニットとを有し、処理に必要な処理データが上記ローカルキャッシュに無い場合には、必要なデータを要求するローカルキャッシュフィルリクエストを出力し、当該リクエストに応じて送られてきたデータで上記ローカルキャッシュを更新し、各クラスタのグローバルモジュールが互いにデータの授受を行う。
【００３３】
また、本発明の第２の観点では、上記複数のクラスタは、マトリクス状に配置され、各クラスタのグローバルモジュールはリング状に接続されている。
【００３４】
本発明の第１または第２の観点では、上記グローバルモジュールは、ローカルモジュールからローカルキャッシュフィルリクエストを受けると、グローバルキャッシュのエントリーをチェックし、エントリーがあった場合には、要求されたブロックデータを読み出し、読み出したデータをリクエストを送出したローカルモジュールに送出する。
【００３５】
本発明の第１または第２の観点では、上記ローカルモジュールは、グローバルキャッシュフィルリクエストを受けると、要求されたブロックデータを上記グローバルモジュールに出力し、上記グローバルモジュールは、ローカルモジュールからローカルキャッシュフィルリクエストを受けると、グローバルキャッシュのエントリーをチェックし、エントリーがなかった場合には、要求されたブロックデータを保持するターゲットのローカルモジュールに対してグローバルキャッシュフィルリクエストを送り、その後ターゲットのローカルモジュールから送られてきたブロックデータでグローバルキャッシュを更新するとともに、当該ブロックデータを読み出し、読み出したデータをローカルキャッシュフィルリクエストを送ってきたローカルモジュールに対して送出する。
【００３６】
本発明の第１または第２の観点では、上記ローカルモジュールは、グローバルキャッシュフィルリクエストを受けると、要求されたブロックデータを上記グローバルモジュールに出力し、上記グローバルモジュールは、ローカルモジュールからローカルキャッシュフィルリクエストを受けると、グローバルキャッシュのエントリーをチェックし、エントリーがあった場合には、要求されたブロックデータを読み出し、読み出したデータをリクエストを送出したローカルモジュールに送出し、エントリーがなかった場合には、要求されたブロックデータを保持するターゲットのローカルモジュールに対してグローバルキャッシュフィルリクエストを送り、その後ターゲットのローカルモジュールから送られてきたブロックデータでグローバルキャッシュを更新するとともに、当該ブロックデータを読み出し、読み出したデータをローカルキャッシュフィルリクエストを送ってきたローカルモジュールに対して送出する。
【００３７】
好適には、上記演算用パラメータを生成するコントローラを有し、上記グローバルモジュールは、上記コントローラで生成された演算用パラメータを上記複数のローカルモジュールに供給する。
【００３８】
本発明の第１または第２の観点では、上記グローバルモジュールは、各ローカルモジュール対応に設けられた複数のチャネルブロックを有し、上記複数のチャネルブロックは、対応するローカルモジュールとローカルキャッシュフィルリクエストおよびデータの授受を行う。
【００３９】
好適には、上記複数のローカルモジュールは、上記グローバルモジュールを中心として、当該グローバルモジュールの周辺近傍に配置されている。
また、好適には、上記複数のローカルモジュールは、上記グローバルモジュールを中心として、当該グローバルモジュールの周辺近傍で、かつ、対応するチャネルブロックの近傍にそれぞれ配置されている。
【００４０】
本発明の第１または第２の観点では、上記グローバルモジュールは、各ローカルモジュール対応に設けられた複数のチャネルブロックを有し、上記複数のチャネルブロックは、対応するローカルモジュールとローカルキャッシュフィルリクエスト、グローバルキャッシュフィルリクエストおよびデータの授受を行う。
【００４１】
好適には、上記並列処理は、ピクセルレベルでの並列処理である。
また、上記並列処理はテクスチャに関する処理である。
【００４２】
本発明の第３の観点は、複数のモジュールが処理データを共有して並列処理を行う画像処理方法であって、一つのグローバルモジュールに対して複数のローカルモジュールを並列に接続し、キャッシュの階層として、複数のローカルモジュールが共有するグローバルキャッシュと、各ローカルモジュールがローカルに持つローカルキャッシュの２階層とし、グローバルモジュールにおいて、グローバルキャッシュにローカルモジュールで必要な処理データを記憶して、ローカルモジュールからローカルキャッシュフィルリクエストを受けると、上記グローバルキャッシュにある要求に応じたデータを当該リクエストを出したローカルモジュールに出力し、上記複数のローカルモジュールにおいて、上記ローカルキャッシュに少なくとも上記処理データを記憶して、演算用パラメータおよびローカルキャッシュに記憶されている処理データに基づいてあらかじめ対応するメモリインターリーブで決められた担当する処理を行い、処理に必要な処理データが上記ローカルキャッシュに無い場合には、必要なデータを要求するローカルキャッシュフィルリクエストを出力し、当該リクエストに応じて送られてきたデータで上記ローカルキャッシュを更新する。
【００４３】
本発明の第３の観点では、上記グローバルモジュールがローカルモジュールからローカルキャッシュフィルリクエストを受けると、グローバルキャッシュのエントリーをチェックし、エントリーがあった場合には、要求されたブロックデータを読み出し、読み出したデータをリクエストを送出したローカルモジュールに送出する。
【００４４】
本発明の第３の観点では、上記ローカルモジュールがグローバルキャッシュフィルリクエストを受けると、要求されたブロックデータを上記グローバルモジュールに出力し、上記グローバルモジュールが、ローカルモジュールからローカルキャッシュフィルリクエストを受けると、グローバルキャッシュのエントリーをチェックし、エントリーがなかった場合には、要求されたブロックデータを保持するターゲットのローカルモジュールに対してグローバルキャッシュフィルリクエストを送り、その後ターゲットのローカルモジュールから送られてきたブロックデータでグローバルキャッシュを更新するとともに、当該ブロックデータを読み出し、読み出したデータをローカルキャッシュフィルリクエストを送ってきたローカルモジュールに対して送出する。
【００４５】
本発明の第３の観点では、上記ローカルモジュールがグローバルキャッシュフィルリクエストを受けると、要求されたブロックデータを上記グローバルモジュールに出力し、上記グローバルモジュールがローカルモジュールからローカルキャッシュフィルリクエストを受けると、グローバルキャッシュのエントリーをチェックし、エントリーがあった場合には、要求されたブロックデータを読み出し、読み出したデータをリクエストを送出したローカルモジュールに送出し、エントリーがなかった場合には、要求されたブロックデータを保持するターゲットのローカルモジュールに対してグローバルキャッシュフィルリクエストを送り、その後ターゲットのローカルモジュールから送られてきたブロックデータでグローバルキャッシュを更新するとともに、当該ブロックデータを読み出し、読み出したデータをローカルキャッシュフィルリクエストを送ってきたローカルモジュールに対して送出する。
【００４６】
本発明によれば、たとえばテクスチャ系の処理に場合には、コントローラにおいて演算用パラメータが生成され、生成されたパラメータはたとえばグローバルモジュールを介してローカルモジュールにブロードキャストされる。
各ローカルモジュールでは、処理ユニットにおいて、たとえば以下の処理が行われる。
すなわち、処理ユニットにおいては、ブロードキャストされたパラメータを受け取ると、その三角形が自分が担当する領域、たとえば４×４ピルセルの矩形領域単位でインターリーブされた領域に属しているか否かが判断される。その結果、属している場合には、各種データ（Ｚ、テクスチャ座標、カラーなど）がラスタライズされる。
次に、ＬＯＤ（Ｌｅｖｅｌ  ｏｆ  Ｄｅｔａｉｌ）計算によるミップマップ（ＭｉｐＭａｐ）レベルの算出や、テクスチャアクセスのための（ｕ，ｖ）アドレス計算が行われる。
そして、次に、テクスチャの読み出しが行われる。
この場合、各ローカルモジュールの処理ユニットでは、テクスチャリードの際に、まず、ローカルキャッシュのエントリーがチェックされる。
その結果、エントリーがあった場合には、必要なテクスチャデータが読み出される。
必要とするテクスチャデータがローカルキャッシュ内に無い場合には、各処理ユニットでは、グローバルモジュールに対してローカルキャッシュフィルのリクエストが送出される。
【００４７】
グローバルモジュールにおいては、要求されたブロックデータがグローバルキャッシュにあると、対応するグローバルキャッシュのアドレスから読み出されてチャネルを通してリクエストを送出したローカルモジュールに送り返される。
一方、要求されたブロックデータがグローバルキャッシュにないと当該ブロックを保持するローカルモジュールに対してグローバルキャッシュフィルのリクエストが送られる。
グローバルキャッシュフィルのリクエストを受けたローカルモジュールにおいては、メモリから該当するブロックデータが読み出され、グローバルインターフェースを通してグローバルモジュールに送出される。
その後、グローバルモジュールでは、ブロックデータが所望のグローバルキャッシュにフィルされるとともに、リクエストを送ってきたローカルモジュールに対して所望のチャネルからデータが送出される。
【００４８】
グローバルモジュールから要求したブロックデータが送られてくると、該当するローカルモジュールでは、ローカルキャッシュが更新され、処理ユニットによりブロックデータが読み出される。
次に、ローカルモジュールでは、読み出されたテクスチャデータと、（ｕ，ｖ）アドレスを算出時に得た小数部を使って４近傍補間などのフィルタリング処理が行われる。
次に、フィルタリング後のテクスチャデータと、ラスタライズ後の各種データを用いて、ピクセル単位の演算が行われる。
そして、ピクセルレベルの処理における各種テストをパスしたピクセルデータは、メモリモジュール、たとえば内蔵ＤＲＡＭメモリ上のフレームバッファおよびＺバッファに書き込まれる。
【００４９】
【発明の実施の形態】
図７は、本発明の係る画像処理装置の一実施形態を示すブロック構成図である。
【００５０】
本実施形態に係る画像処理装置１０は、図７に示すように、ストリームデータコントローラ（ＳＤＣ）１１、グローバルモジュール１２、およびローカルモジュール１３−０〜１３−３を有している。
【００５１】
本画像処理装置１０では、ＳＤＣ１１とグローバルモジュール１２とがデータの授受を行い、一つのグローバルモジュール１２に対して複数個、本実施形態では４個のローカルモジュール１３−０〜１３−３が並列に接続されて、複数のローカルモジュール１３−０〜１３−３で処理データを共有し並列に処理する。
そして、テクスチャリード系に関しては、他のローカルモジュールに対するメモリアクセスを必要とするが、グローバルアクセスバスの形態をとる代わりに、ルータとしての機能を有する一つのグローバルモジュール１２を介したアクセスを行う。
また、後で詳述するように、グローバルモジュール１２はグローバルキャッシュを有し、各ローカルモジュール１３−０〜１３−３はローカルキャッシュをそれぞれ有する。
すなわち、本画像処理装置１０は、キャッシュの階層として、たとえば４つのローカルモジュール１３−０〜１３−３が共有するグローバルキャッシュと、各ローカルモジュールがローカルに持つローカルキャッシュの２階層を有する。
【００５２】
以下に各構成要素の構成および機能について、図面に関連付けて順を追って説明する。
【００５３】
ＳＤＣ１１は、ＣＰＵや外部メモリとのデータの授受、並びにグローバルモジュール１２とのデータの授受を司るとともに、頂点データに対する演算、各ローカルモジュール１３−０〜１３−３の処理ユニットにおけるラスタライゼーションに必要なパラメータの生成等の処理を行う。
【００５４】
ＳＤＣ１１における具体的な処理内容は以下の通りである。また、ＳＤＣ１１の処理手順を図８に示す。
【００５５】
ＳＤＣ１１は、まず、データが入力されると（ＳＴ１）、Ｐｅｒ−Ｖｅｒｔｅｘオペレーションを行う（ＳＴ２）。
この処理においては、３次元座標、法線ベクトル、テクスチャ座標の各頂点データが入力されると、頂点データに対する演算が行われる。代表的な演算としては、物体の変形やスクリーンへの投影などを行う座標変換の演算処理、ライティング（Ｌｉｇｈｔｉｎｇ）の演算処理、クリッピング（Ｃｌｉｐｐｉｎｇ）の演算処理がある。
ここで行われる処理は、いわゆるＶｅｒｔｅｘ  Ｓｈａｄｅｒの実行に相当する。
【００５６】
次に、ＤＤＡ（Ｄｉｇｉｔａｌ  Ｄｉｆｆｅｒｅｎｔｉａｌ  Ａｎａｒｉｚｅｒ）パラメータを計算する（ＳＴ３）。
この処理では、ラスタライゼーション（Ｒａｓｔｅｒｉｚａｔｉｏｎ）に必要な各種データ（Ｚ、テクスチャ座標、カラーなど）の傾き等のＤＤＡパラメータを算出する。
【００５７】
次に、算出したＤＤＡパラメータをグローバルモジュール１２を介して全ローカルモジュール１３−０〜１３−３にブロードキャストする（ＳＴ４）。
この処理において、ブロードキャストされたパラメータは、後述するキャッシュフィルとは別のチャネルを用いて、グローバルモジュール１２を介して各ローカルモジュール１３−０〜１３−３に渡される。ただし、グローバルキャッシュの内容には影響を与えない。
【００５８】
グローバルモジュール１２は、ルータ機能および全ローカルモジュールで共用するグローバルキャッシュ１２１を有する。
グローバルモジュール１２は、ＳＤＣ１１によるＤＤＡパラメータを並列に接続された全ローカルモジュール１３−０〜１３−３にブロードキャストする。
【００５９】
また、グローバルモジュール１２は、あるローカルモジュールからローカルキャッシュフィル（Ｌｏｃａｌ  Ｃａｃｈｅ  Ｆｉｌｌ）ＬＣＦのリクエストを受けると、図９に示すように、グローバルキャッシュのエントリーをチェックし（ＳＴ１１）、エントリーがあった場合には（ＳＴ１２）、要求されたブロックデータを読み出し（ＳＴ１３）、読み出したデータをリクエストを送出したローカルモジュールに送出し（ＳＴ１４）、エントリーがなかった場合には（ＳＴ１２）、当該ブロックデータを保持するターゲットのローカルモジュールに対してグローバルキャッシュフィル（Ｇｌｏｂａｌ  Ｃａｃｈｅ  Ｆｉｌｌ）ＧＣＦのリクエストを送り（ＳＴ１５）、その後送られてきたブロックデータでグローバルキャッシュを更新するとともに（ＳＴ１６，ＳＴ１７）、ブロックデータを読み出し（ＳＴ１３）、読み出したデータをローカルキャッシュフィルＬＤＦのリクエストを送ってきたローカルモジュールに対して送出する（ＳＴ１４）。
【００６０】
図１０は、図７のグローバルモジュールの具体的な構成例を示す回路図である。
【００６１】
本グローバルモジュール１２は、主としてローカルモジュール１３−０とのデータの授受を行うチャネルブロックＣＢＬＫ０と、主としてローカルモジュール１３−１とのデータの授受を行うチャネルブロックＣＢＬＫ１と、主としてローカルモジュール１３−２とのデータの授受を行うチャネルブロックＣＢＬＫ２と、主としてローカルモジュール１３−３とのデータの授受を行うチャネルブロックＣＢＬＫ３とを有する。
そして、本実施形態においては、各チャネルブロックＣＢＬＫ０〜ＣＢＬＫ３にそれぞれ所定容量のグローバルキャッシュ１２１−０〜１２１−３が配置されている。
【００６２】
チャネルブロックＣＢＬＫ０は、グローバルキャッシュ１２１−０に加えて、ローカルキャッシュフィル用チャネル１２０１−０、グローバルキャッシュフィル用チャネル１２０２−０、セレクタ１２０３−０、タグ回路（Ｔａｇ）１２０４−０、アービタ（Ａｒｂｉｔｏｒ）１２０５−０、およびたとえばＦＩＦＯ（Ｆｉｓｔｔ−Ｉｎ  Ｆｉｒｓｔ−Ｏｕｔ）からなるキュー（Ｑｕｅｕｅ）レジスタ１２０６−０〜１２１０−０を有している。
【００６３】
同様に、チャネルブロックＣＢＬＫ１は、グローバルキャッシュ１２１−１に加えて、ローカルキャッシュフィル用チャネル１２０１−１、グローバルキャッシュフィル用チャネル１２０２−１、セレクタ１２０３−１、タグ回路（Ｔａｇ）１２０４−１、アービタ（Ａｒｂｉｔｏｒ）１２０５−１、およびキュー（Ｑｕｅｕｅ）レジスタ１２０６−１〜１２１０−１を有している。
【００６４】
チャネルブロックＣＢＬＫ２は、グローバルキャッシュ１２１−２に加えて、ローカルキャッシュフィル用チャネル１２０１−２、グローバルキャッシュフィル用チャネル１２０２−２、セレクタ１２０３−２、タグ回路（Ｔａｇ）１２０４−２、アービタ（Ａｒｂｉｔｏｒ）１２０５−２、およびキュー（Ｑｕｅｕｅ）レジスタ１２０６−２〜１２１０−２を有している。
【００６５】
チャネルブロックＣＢＬＫ３は、グローバルキャッシュ１２１−３に加えて、ローカルキャッシュフィル用チャネル１２０１−３、グローバルキャッシュフィル用チャネル１２０２−３、セレクタ１２０３−３、タグ回路（Ｔａｇ）１２０４−３、アービタ（Ａｒｂｉｔｏｒ）１２０５−３、およびキュー（Ｑｕｅｕｅ）レジスタ１２０６−３〜１２１０−３を有している。
【００６６】
チャネルブロックＣＢＬＫ０におけるローカルキャッシュフィル用チャネル１２０１−０は、リクエスト用キューレジスタ１２０１１−０およびデータ用キューレジスタ１２０１２−０を有している。
リクエスト用キューレジスタ１２０１１−０は、ローカルモジュール１３−０から転送されたローカルキャッシュフィルＬＣＦのリクエストを入力し、キューレジスタ１２０６−０およびチャネルブロックＣＢＬＫ１のキューレジスタ１２０６−１、チャネルブロックＣＢＬＫ２のキューレジスタ１２０６−２、およびチャネルブロックＣＢＬＫ３のキューレジスタ１２０６−３に出力する。
データ用キューレジスタ１２０１２−０は、グローバルキャッシュ１２１−０、１２１−１、１２１−２、または１２１−３から読み出されセレクタ１２０３−０で選択されたブロックデータを受けて、ローカルモジュール１３−０に出力する。
【００６７】
チャネルブロックＣＢＬＫ０におけるグローバルキャッシュフィル用チャネル１２０２−０は、リクエスト用キューレジスタ１２０２１−０およびデータ用キューレジスタ１２０２２−０を有している。
リクエスト用キューレジスタ１２０２１−０は、タグ回路１２０４−０によるグローバルキャッシュフィルＧＣＦのリクエストを受けて、要求するブロックデータを保持するターゲットのローカルモジュール１３−０に出力する。
データ用キューレジスタ１２０２２−０は、グローバルキャッシュフィルリクエストを受けたターゲットのローカルモジュール１３−０から転送されたブロックデータを受けて、グローバルキャッシュ１２１−０に供給する。
【００６８】
チャネルブロックＣＢＬＫ０におけるセレクタ１２０３−０は、グローバルキャッシュ１２１−０、１２１−１、１２１−２、または１２１−３から読み出されブロックデータを図示しない制御系の指示に応じて選択し、ローカルキャッシュフィル用チャネル１２０１−０のデータ用キューレジスタ１２０１２−０に供給する。
【００６９】
チャネルブロックＣＢＬＫ０におけるタグ回路１２０４−０は、グロ−バルキャッシュ１２１−０に記憶されているブロックデータのアドレスタグを記憶するメモリを有し、キューレジスタ１２０６−０〜１２０９−０に保持されている各チャネルプロックＣＢＬＫ〜ＣＢＬＫ３を介した各ローカルモジュール１３−０〜１３−３によるローカルキャッシュフィルリクエストの中からアービタ１２０５−０により選択されたリクエストが要求するブロックデータのアドレスと前記タグ回路１２０４−０内に記憶されたアドレスタグを比較し、一致するものがあれば当該アドレスタグに対応するグローバルキャッシュ１２１−０のデータが読み出され、各チャネルブロックＣＢＬＫ０〜ＣＢＬＫ３のセレクタ１２０３−０〜１２０３−３に供給される。
このとき、ローカルキャッシュフィルリクエストを送って来たローカルモジュールとデータの授受を行うチャネルブロックのセレクタにおいてチャネルブロックＣＢＬＫ０のグローバルキャッシュ１２１−０から読み出されたデータを選択するように、図示しない制御系により指示される。
一方、タグ回路１２０４−０は、アドレスタグとの比較の結果、グローバルキャッシュ１２１−０に、ローカルモジュール１３−０〜１２−３のいずれかから要求されたブロックデータが記憶されていないことが判明した場合には、グローバルキャシュ１２１−０のどのアドレスにデータが有るかを示すフラグをセットし、そのアドレスをキューレジスタ１２１０−０にセットするとともに、グローバルキャッシュフィルリクエストをグローバルキャッシュ用チャネル１２０２−０のリクエスト用キューレジスタ１２０２１−０に供給する。グローバルキャッシュ１２１−０においては、グローバルキャッシュ用チャネル１２０２−０用キューレジスタ１２０２２−０にローカルモジュール１３−０から要求したデータが送られてくると、キューレジスタ１２１０−０にセットされたアドレスに基づいて当該データでグローバルキャッシュ１２１−０の内容を更新するとともに、各チャネルブロックＣＢＬＫ０〜ＣＢＬＫ３のセレクタ１２０３−０〜１２０３−３にローカルキャッシュフィルリクエストで要求されていたデータを供給する。
【００７０】
チャネルブロックＣＢＬＫ０のアービタ１２０５−０は、キューレジスタ１２０６−０〜１２０９−０に保持されている各チャネルブロックＣＢＬＫ０〜ＣＢＬＫ３を介した各ローカルモジュール１３−０〜１３−３によるローカルキャッシュフィルリクエストを受けて調停作業を行い、グローバルキャッシュ１２１−０から同時読み出し可能なブロックデータの数に応じてリクエストを選択し、タグ回路１２０４−０に出力する。
【００７１】
チャネルブロックＣＢＬＫ０のキューレジスタ１２０６−０は、チャネル１２０１−０を介したローカルモジュール１３−０によるローカルキャッシュフィルリクエストのうち、ローカルモジュール１３−０のメモリモジュールに記憶されているものと判断されたリクエストを保持する。
キューレジスタ１２０７−０は、チャネルブロックＣＢＬＫ１のチャネル１２０１−１を介したローカルモジュール１３−１によるローカルキャッシュフィルリクエストのうち、ローカルモジュール１３−０のメモリモジュールに記憶されているものと判断されたリクエストを保持する。
キューレジスタ１２０８−０は、チャネルブロックＣＢＬＫ２のチャネル１２０１−２を介したローカルモジュール１３−２によるローカルキャッシュフィルリクエストのうち、ローカルモジュール１３−０のメモリモジュールに記憶されているものと判断されたリクエストを保持する。
キューレジスタ１２０９−０は、チャネルブロックＣＢＬＫ３のチャネル１２０１−３を介したローカルモジュール１３−３によるローカルキャッシュフィルリクエストのうち、ローカルモジュール１３−０のメモリモジュールに記憶されているものと判断されたリクエストを保持する。
【００７２】
チャネルブロックＣＢＬＫ１におけるローカルキャッシュフィル用チャネル１２０１−１は、リクエスト用キューレジスタ１２０１１−１およびデータ用キューレジスタ１２０１２−１を有している。
リクエスト用キューレジスタ１２０１１−１は、ローカルモジュール１３−１から転送されたローカルキャッシュフィルＬＣＦのリクエストを入力し、キューレジスタ１２０７−１およびチャネルブロックＣＢＬＫ０のキューレジスタ１２０７−０、チャネルブロックＣＢＬＫ２のキューレジスタ１２０７−２、およびチャネルブロックＣＢＬＫ３のキューレジスタ１２０７−３に出力する。
データ用キューレジスタ１２０１２−１は、グローバルキャッシュ１２１−０、１２１−１、１２１−２、または１２１−３から読み出されセレクタ１２０３−１で選択されたブロックデータを受けて、ローカルモジュール１３−１に出力する。
【００７３】
チャネルブロックＣＢＬＫ１におけるグローバルキャッシュフィル用チャネル１２０２−１は、リクエスト用キューレジスタ１２０２１−１およびデータ用キューレジスタ１２０２２−１を有している。
リクエスト用キューレジスタ１２０２１−１は、タグ回路１２０４−１によるグローバルキャッシュフィルＧＣＦのリクエストを受けて、要求するブロックデータを保持するターゲットのローカルモジュール１３−１に出力する。
データ用キューレジスタ１２０２２−１は、グローバルキャッシュフィルリクエストを受けたターゲットのローカルモジュール１３−１から転送されたブロックデータを受けて、グローバルキャッシュ１２１−１に供給する。
【００７４】
チャネルブロックＣＢＬＫ１におけるセレクタ１２０３−１は、グローバルキャッシュ１２１−０、１２１−１、１２１−２、または１２１−３から読み出されブロックデータを図示しない制御系の指示に応じて選択し、ローカルキャッシュフィル用チャネル１２０１−１のデータ用キューレジスタ１２０１２−１に供給する。
【００７５】
チャネルブロックＣＢＬＫ１におけるタグ回路１２０４−１は、グロ−バルキャッシュ１２１−１に記憶されているブロックデータのアドレスタグを記憶するメモリを有し、キューレジスタ１２０６−１〜１２０９−１に保持されている各チャネルプロックＣＢＬＫ〜ＣＢＬＫ３を介した各ローカルモジュール１３−０〜１３−３によるローカルキャッシュフィルリクエストの中からアービタ１２０５−１により選択されたリクエストが要求するブロックデータのアドレスと前記タグ回路１２０４−１内に記憶されたアドレスタグを比較し、一致するものがあれば当該アドレスタグに対応するグローバルキャッシュ１２１−１のデータが読み出され、各チャネルブロックＣＢＬＫ０〜ＣＢＬＫ３のセレクタ１２０３−０〜１２０３−３に供給される。
このとき、ローカルキャッシュフィルリクエストを送って来たローカルモジュールとデータの授受を行うチャネルブロックのセレクタにおいてチャネルブロックＣＢＬＫ１のグローバルキャッシュ１２１−１から読み出されたデータを選択するように、図示しない制御系により指示される。
一方、タグ回路１２０４−１は、アドレスタグとの比較の結果、グローバルキャッシュ１２１−１に、ローカルモジュール１３−０〜１２−３のいずれかから要求されたブロックデータが記憶されていないことが判明した場合には、グローバルキャシュ１２１−１のどのアドレスにデータが有るかを示すフラグをセットし、そのアドレスをキューレジスタ１２１０−１にセットするとともに、グローバルキャッシュフィルリクエストをグローバルキャッシュ用チャネル１２０２−１のリクエスト用キューレジスタ１２０２１−１に供給する。グローバルキャッシュ１２１−１においては、グローバルキャッシュ用チャネル１２０２−１用キューレジスタ１２０２２−１にローカルモジュール１３−０から要求したデータが送られてくると、キューレジスタ１２１０−１にセットされたアドレスに基づいて当該データでグローバルキャッシュ１２１−１の内容を更新するとともに、各チャネルブロックＣＢＬＫ０〜ＣＢＬＫ３のセレクタ１２０３−０〜１２０３−３にローカルキャッシュフィルリクエストで要求されていたデータを供給する
【００７６】
チャネルブロックＣＢＬＫ１のアービタ１２０５−１は、キューレジスタ１２０６−１〜１２０９−１に保持されている各チャネルブロックＣＢＬＫ０〜ＣＢＬＫ３を介した各ローカルモジュール１３−０〜１３−３によるローカルキャッシュフィルリクエストを受けて調停作業を行い、グローバルキャッシュ１２１−１から同時読み出し可能なブロックデータの数に応じてリクエストを選択し、タグ回路１２０４−１に出力する。
【００７７】
チャネルブロックＣＢＬＫ１のキューレジスタ１２０６−１は、チャネルブロックＣＢＬＫ０のチャネル１２０１−０を介したローカルモジュール１３−０によるローカルキャッシュフィルリクエストのうち、ローカルモジュール１３−１のメモリモジュールに記憶されているものと判断されたリクエストを保持する。キューレジスタ１２０７−１は、チャネルブロックＣＢＬＫ１のチャネル１２０１−１を介したローカルモジュール１３−１によるローカルキャッシュフィルリクエストのうち、ローカルモジュール１３−１のメモリモジュールに記憶されているものと判断されたリクエストを保持する。
キューレジスタ１２０８−１は、チャネルブロックＣＢＬＫ２のチャネル１２０１−２を介したローカルモジュール１３−２によるローカルキャッシュフィルリクエストのうち、ローカルモジュール１３−１のメモリモジュールに記憶されているものと判断されたリクエストを保持する。
キューレジスタ１２０９−１は、チャネルブロックＣＢＬＫ３のチャネル１２０１−３を介したローカルモジュール１３−３によるローカルキャッシュフィルリクエストのうち、ローカルモジュール１３−１のメモリモジュールに記憶されているものと判断されたリクエストを保持する。
【００７８】
チャネルブロックＣＢＬＫ２におけるローカルキャッシュフィル用チャネル１２０１−２は、リクエスト用キューレジスタ１２０１１−２およびデータ用キューレジスタ１２０１２−２を有している。
リクエスト用キューレジスタ１２０１１−２は、ローカルモジュール１３−２から転送されたローカルキャッシュフィルＬＣＦのリクエストを入力し、キューレジスタ１２０８−２およびチャネルブロックＣＢＬＫ０のキューレジスタ１２０８−０、チャネルブロックＣＢＬＫ１のキューレジスタ１２０８−１、およびチャネルブロックＣＢＬＫ３のキューレジスタ１２０８−３に出力する。
データ用キューレジスタ１２０１２−２は、グローバルキャッシュ１２１−０、１２１−１、１２１−２、または１２１−３から読み出されセレクタ１２０３−２で選択されたブロックデータを受けて、ローカルモジュール１３−２に出力する。
【００７９】
チャネルブロックＣＢＬＫ２におけるグローバルキャッシュフィル用チャネル１２０２−２は、リクエスト用キューレジスタ１２０２１−２およびデータ用キューレジスタ１２０２２−２を有している。
リクエスト用キューレジスタ１２０２１−２は、タグ回路１２０４−２によるグローバルキャッシュフィルＧＣＦのリクエストを受けて、要求するブロックデータを保持するターゲットのローカルモジュール１３−２に出力する。
データ用キューレジスタ１２０２２−２は、グローバルキャッシュフィルリクエストを受けたターゲットのローカルモジュール１３−２から転送されたブロックデータを受けて、グローバルキャッシュ１２１−２に供給する。
【００８０】
チャネルブロックＣＢＬＫ２におけるセレクタ１２０３−２は、グローバルキャッシュ１２１−０、１２１−１、１２１−２、または１２１−３から読み出されブロックデータを図示しない制御系の指示に応じて選択し、ローカルキャッシュフィル用チャネル１２０１−２のデータ用キューレジスタ１２０１２−２に供給する。
【００８１】
チャネルブロックＣＢＬＫ２におけるタグ回路１２０４−２は、グロ−バルキャッシュ１２１−２に記憶されているブロックデータのアドレスタグを記憶するメモリを有し、キューレジスタ１２０６−２〜１２０９−２に保持されている各チャネルプロックＣＢＬＫ〜ＣＢＬＫ３を介した各ローカルモジュール１３−０〜１３−３によるローカルキャッシュフィルリクエストの中からアービタ１２０５−２により選択されたリクエストが要求するブロックデータのアドレスと前記タグ回路１２０４−２内に記憶されたアドレスタグを比較し、一致するものがあれば当該アドレスタグに対応するグローバルキャッシュ１２１−２のデータが読み出され、各チャネルブロックＣＢＬＫ０〜ＣＢＬＫ３のセレクタ１２０３−０〜１２０３−３に供給される。
このとき、ローカルキャッシュフィルリクエストを送って来たローカルモジュールとデータの授受を行うチャネルブロックのセレクタにおいてチャネルブロックＣＢＬＫ２のグローバルキャッシュ１２１−２から読み出されたデータを選択するように、図示しない制御系により指示される。
一方、タグ回路１２０４−２は、アドレスタグとの比較の結果、グローバルキャッシュ１２１−２に、ローカルモジュール１３−０〜１２−３のいずれかから要求されたブロックデータが記憶されていないことが判明した場合には、グローバルキャシュ１２１−２のどのアドレスにデータが有るかを示すフラグをセットし、そのアドレスをキューレジスタ１２１０−２にセットするとともに、グローバルキャッシュフィルリクエストをグローバルキャッシュ用チャネル１２０２−２のリクエスト用キューレジスタ１２０２１−２に供給する。グローバルキャッシュ１２１−２においては、グローバルキャッシュ用チャネル１２０２−２用キューレジスタ１２０２２−２にローカルモジュール１３−０から要求したデータが送られてくると、キューレジスタ１２１０−２にセットされたアドレスに基づいて当該データでグローバルキャッシュ１２１−２の内容を更新するとともに、各チャネルブロックＣＢＬＫ０〜ＣＢＬＫ３のセレクタ１２０３−０〜１２０３−３にローカルキャッシュフィルリクエストで要求されていたデータを供給する。
【００８２】
チャネルブロックＣＢＬＫ２のアービタ１２０５−２は、キューレジスタ１２０６−２〜１２０９−２に保持されている各チャネルブロックＣＢＬＫ０〜ＣＢＬＫ３を介した各ローカルモジュール１３−０〜１３−３によるローカルキャッシュフィルリクエスト調停作業を行い、グローバルキャッシュ１２１−２から同時読み出し可能なブロックデータの数に応じてリクエストを選択し、タグ回路１２０４−２に出力する。
【００８３】
チャネルブロックＣＢＬＫ２のキューレジスタ１２０６−２は、チャネルブロックＣＢＬＫ０のチャネル１２０１−０を介したローカルモジュール１３−０によるローカルキャッシュフィルリクエストのうち、ローカルモジュール１３−２のメモリモジュールに記憶されているものと判断されたリクエストを保持する。
キューレジスタ１２０７−２は、チャネルブロックＣＢＬＫ１のチャネル１２０１−１を介したローカルモジュール１３−１によるローカルキャッシュフィルリクエストのうち、ローカルモジュール１３−２のメモリモジュールに記憶されているものと判断されたリクエストを保持する。
キューレジスタ１２０８−２は、チャネルブロックＣＢＬＫ２のチャネル１２０１−２を介したローカルモジュール１３−２によるローカルキャッシュフィルリクエストのうち、ローカルモジュール１３−２のメモリモジュールに記憶されているものと判断されたリクエストを保持する。
キューレジスタ１２０９−２は、チャネルブロックＣＢＬＫ３のチャネル１２０１−３を介したローカルモジュール１３−３によるローカルキャッシュフィルリクエストのうち、ローカルモジュール１３−２のメモリモジュールに記憶されているものと判断されたリクエストを保持する。
【００８４】
チャネルブロックＣＢＬＫ３におけるローカルキャッシュフィル用チャネル１２０１−３は、リクエスト用キューレジスタ１２０１１−３およびデータ用キューレジスタ１２０１２−３を有している。
リクエスト用キューレジスタ１２０１１−３は、ローカルモジュール１３−３から転送されたローカルキャッシュフィルＬＣＦのリクエストを入力し、キューレジスタ１２０９−３およびチャネルブロックＣＢＬＫ０のキューレジスタ１２０９−０、チャネルブロックＣＢＬＫ１のキューレジスタ１２０９−１、およびチャネルブロックＣＢＬＫ２のキューレジスタ１２０９−２に出力する。
データ用キューレジスタ１２０１２−３は、グローバルキャッシュ１２１−０、１２１−１、１２１−２、または１２１−３から読み出されセレクタ１２０３−３で選択されたブロックデータを受けて、ローカルモジュール１３−３に出力する。
【００８５】
チャネルブロックＣＢＬＫ３におけるグローバルキャッシュフィル用チャネル１２０２−３は、リクエスト用キューレジスタ１２０２１−３およびデータ用キューレジスタ１２０２２−３を有している。
リクエスト用キューレジスタ１２０２１−３は、タグ回路１２０４−３によるグローバルキャッシュフィルＧＣＦのリクエストを受けて、要求するブロックデータを保持するターゲットのローカルモジュール１３−３に出力する。
データ用キューレジスタ１２０２２−３は、グローバルキャッシュフィルリクエストを受けたターゲットのローカルモジュール１３−３から転送されたブロックデータを受けて、グローバルキャッシュ１２１−３に供給する。
【００８６】
チャネルブロックＣＢＬＫ３におけるセレクタ１２０３−３は、グローバルキャッシュ１２１−０、１２１−１、１２１−２、または１２１−３から読み出されブロックデータを図示しない制御系の指示に応じて選択し、ローカルキャッシュフィル用チャネル１２０１−３のデータ用キューレジスタ１２０１２−３に供給する。
【００８７】
チャネルブロックＣＢＬＫ３におけるタグ回路１２０４−３は、グロ−バルキャッシュ１２１−３に記憶されているブロックデータのアドレスタグを記憶するメモリを有し、キューレジスタ１２０６−３〜１２０９−３に保持されている各チャネルプロックＣＢＬＫ〜ＣＢＬＫ３を介した各ローカルモジュール１３−０〜１３−３によるローカルキャッシュフィルリクエストの中からアービタ１２０５−３により選択されたリクエストが要求するブロックデータのアドレスと前記タグ回路１２０４−３内に記憶されたアドレスタグを比較し、一致するものがあれば当該アドレスタグに対応するグローバルキャッシュ１２１−２のデータが読み出され、各チャネルブロックＣＢＬＫ０〜ＣＢＬＫ３のセレクタ１２０３−０〜１２０３−３に供給される。
このとき、ローカルキャッシュフィルリクエストを送って来たローカルモジュールとデータの授受を行うチャネルブロックのセレクタにおいてチャネルブロックＣＢＬＫ３のグローバルキャッシュ１２１−３から読み出されたデータを選択するように、図示しない制御系により指示される。
一方、タグ回路１２０４−３は、アドレスタグとの比較の結果、グローバルキャッシュ１２１−３に、ローカルモジュール１３−０〜１２−３のいずれかから要求されたブロックデータが記憶されていないことが判明した場合には、グローバルキャシュ１２１−３のどのアドレスにデータが有るかを示すフラグをセットし、そのアドレスをキューレジスタ１２１０−３にセットするとともに、グローバルキャッシュフィルリクエストをグローバルキャッシュ用チャネル１２０２−３のリクエスト用キューレジスタ１２０２１−３に供給する。グローバルキャッシュ１２１−３においては、グローバルキャッシュ用チャネル１２０２−３用キューレジスタ１２０２２−３にローカルモジュール１３−０から要求したデータが送られてくると、キューレジスタ１２１０−３にセットされたアドレスに基づいて当該データでグローバルキャッシュ１２１−３の内容を更新するとともに、各チャネルブロックＣＢＬＫ０〜ＣＢＬＫ３のセレクタ１２０３−０〜１２０３−３にローカルキャッシュフィルリクエストで要求されていたデータを供給する。
【００８８】
チャネルブロックＣＢＬＫ３のアービタ１２０５−３は、キューレジスタ１２０６−３〜１２０９−３に保持されている各チャネルブロックＣＢＬＫ０〜ＣＢＬＫ３を介した各ローカルモジュール１３−０〜１３−３によるローカルキャッシュフィルリクエスト調停作業を行い、グローバルキャッシュ１２１−３から同時読み出し可能なブロックデータの数に応じてリクエストを選択し、タグ回路１２０４−３に出力する。
【００８９】
チャネルブロックＣＢＬＫ３のキューレジスタ１２０６−３は、チャネルブロックＣＢＬＫ０のチャネル１２０１−０を介したローカルモジュール１３−０によるローカルキャッシュフィルリクエストのうち、ローカルモジュール１３−３のメモリモジュールに記憶されているものと判断されたリクエストを保持する。キューレジスタ１２０７−３は、チャネルブロックＣＢＬＫ１のチャネル１２０１−１を介したローカルモジュール１３−１によるローカルキャッシュフィルリクエストのうち、ローカルモジュール１３−３のメモリモジュールに記憶されているものと判断されたリクエストを保持する。
キューレジスタ１２０８−３は、チャネルブロックＣＢＬＫ２のチャネル１２０１−２を介したローカルモジュール１３−２によるローカルキャッシュフィルリクエストのうち、ローカルモジュール１３−３のメモリモジュールに記憶されているものと判断されたリクエストを保持する。
キューレジスタ１２０９−３は、チャネルブロックＣＢＬＫ３のチャネル１２０１−３を介したローカルモジュール１３−３によるローカルキャッシュフィルリクエストのうち、ローカルモジュール１３−３のメモリモジュールに記憶されているものと判断されたリクエストを保持する。
【００９０】
なお、図１０の構成は一例であり、グローバルキャッシュ１２１を各チャネルブロック毎にそれぞれ配置した構成の代わりに、一つのキャッシュを設けて各チャネルブロックからアクセスする等、種々の態様が可能である。
【００９１】
ローカルモジュール１３−０は、処理ユニット１３１−０、たとえばＤＲＡＲＭからなるメモリモジュール１３２−０、モジュール固有のローカルキャッシュ１３３−０、およびグローバルモジュール１２のチャネルブロックＣＢＬＫ０とのインターフェースを司るグローバルインターフェース（Ｇｌｏｂａｌ  ＡｃｃｅｓｓＩｎｔｅｒｆａｃｅ：ＧＡＩＦ））１３４−０を有している。
【００９２】
同様に、ローカルモジュール１３−１は、処理ユニット１３１−１、たとえばＤＲＡＲＭからなるメモリモジュール１３２−１、モジュール固有のローカルキャッシュ１３３−１、およびグローバルモジュール１２のチャネルブロックＣＢＬＫ１とのインターフェースを司るグローバルインターフェース（ＧＡＩＦ）１３４−１を有している。
ローカルモジュール１３−２は、処理ユニット１３１−２、たとえばＤＲＡＲＭからなるメモリモジュール１３２−２、モジュール固有のローカルキャッシュ１３３−２、およびグローバルモジュール１２のチャネルブロックＣＢＬＫ２とのインターフェースを司るグローバルインターフェース（ＧＡＩＦ）１３４−２を有している。
ローカルモジュール１３−３は、処理ユニット１３１−３、たとえばＤＲＡＲＭからなるメモリモジュール１３２−３、モジュール固有のローカルキャッシュ１３３−３、およびグローバルモジュール１２のチャネルブロックＣＢＬＫ３とのインターフェースを司るグローバルインターフェース（ＧＡＩＦ）１３４−３を有している。
【００９３】
各ローカルモジュール１３−０〜１３−３は、メモリモジュール１３２−０〜１３２−３が所定の大きさ、たとえば４×４の矩形領域単位にインターリーブされており、メモリモジュール１３２−０と処理ユニット１３１−０、メモリモジュール１３２−１と処理ユニット１３１−１、メモリモジュール１３２−２と処理ユニット１３１−２、およびメモリモジュール１３２−３と処理ユニット１３１−３は、担当領域は１対１に対応しており、描画系については他のローカルモジュールに対するメモリアクセスが発生しない
一方、各ローカルモジュール１３−０〜１３−３は、テクスチャリード系に関しては、他のローカルモジュールに対するメモリアクセスを必要とするが、この場合、グローバルモジュール１２を介したアクセスを行う。
【００９４】
各ローカルモジュール１３−０〜１３−３の処理ユニット１３１−０〜１３１−３はそれぞれ以下の処理を行う。また、処理ユニット１３１−０〜１３１−３の処理手順を図１１に示す。
【００９５】
処理ユニット１３１は、ブロードキャストされたパラメータデータが入力されると（ＳＴ２１）、三角形が自分が担当する領域であるか否かを判断し（ＳＴ２２）、担当領域である場合には、ラスタライゼーション（Ｒａｓｔｅｒｉｚａｔｉｏｎ）を行う（ＳＴ２３）。
すなわち、ブロードキャストされたパラメータを受け取ると、その三角形が自分が担当する領域、たとえば４×４ピクセルの矩形領域単位でインターリーブされた領域に属しているか否かを判断し、属している場合には、各種データ（Ｚ、テクスチャ座標、カラーなど）をラスタライズする。この場合、生成単位は、１ローカルモジュール当たり１サイクルで２×２ピクセルである。
【００９６】
次に、テクスチャ座標のパースペクティブコレクション（Ｐｅｒｓｐｅｃｔｉｖｅ  Ｃｏｒｒｅｃｔｉｏｎ）を行う（ＳＴ２４）。また、この処理ステージにはＬＯＤ（Ｌｅｖｅｌ  ｏｆ  Ｄｅｔａｉｌ）計算によるミップマップ（ＭｉｐＭａｐ）レベルの算出や、テクスチャアクセスのための（ｕ，ｖ）アドレス計算も含まれる。
【００９７】
次に、テクスチャの読み出しを行う（ＳＴ２５）。
この場合、各ローカルモジュール１３−０〜１３−３の処理ユニット１３１−０〜１３１−３は、図１２に示すように、テクスチャリードの際に、まずは、ローカルキャッシュ１３３−０〜１３３−３のエントリーをチェックし（ＳＴ３１）、エントリーがあった場合には（ＳＴ３２）、必要なテクスチャデータを読み出す（ＳＴ３３）。
必要とするテクスチャ・データがローカルキャッシュ１３３−０〜１３３−３内に無い場合には、各処理ユニット１３１−０〜１３１−３は、グローバルインターフェース１３４−０〜１３４−３を通して、グローバルモジュール１２に対してローカルキャッシュフィルのリクエストを送る（ＳＴ３４）。
そして、グローバルモジュール１２は、要求されたブロックをリクエストを送出したローカルモジュールに返すが、なかった場合には上述したように（図９に関連付けて説明）、当該ブロックを保持するローカルモジュールに対してグローバルキャッシュフィルのリクエストを送る。その後ブロックデータをグローバルキャッシュにフィルするとともに、リクエストを送ってきたローカルモジュールに対してデータを送出する。
グローバルモジュール１２から要求したブロックデータが送られてくると、該当するローカルモジュールは、ローカルキャッシュを更新し（ＳＴ３５，ＳＴ３６）、処理ユニットはブロックデータを読み出す（ＳＴ３３）。
なお、ここでは、最大４テクスチャの同時処理を想定しており、読み出すテクスチャデータの数は、１ピクセルにつき１６テクセルである。
【００９８】
次に、テクスチャフィルタリング（Ｔｅｘｔｕｒｅ  Ｆｉｌｔｅｒｉｎｇ）を行う（ＳＴ２６）。
この場合、処理ユニット１３３−０〜１３３−３は、読み出されたテクスチャデータと、（ｕ，ｖ）アドレスを算出時に得た小数部を使って４近傍補間などのフィルタリング処理を行う。
【００９９】
次に、ピクセルレベルの処理（Ｐｅｒ−Ｐｉｘｅｌ  Ｏｐｅｒａｔｉｏｎ）を行う（ＳＴ２７）。
この処理においては、フィルタリング後のテクスチャデータと、ラスタライズ後の各種データを用いて、ピクセル単位の演算が行われる。ここで行われる処理は、ピクセルレベルでのライティング（Ｐｅｒ−Ｐｉｘｅｌ  Ｌｉｇｈｔｉｎｇ）などいわゆるＰｉｘｅｌ  Ｓｈａｄｅｒに相当する。また、それ以外にも以下の処理が含まれる。
すなわち、アルファテスト、シザリング、Ｚバッファテスト、ステンシルテスト、アルファブレンディング、ロジカルオペレーション、ディザリングの各処理である。
【０１００】
そして、ピクセルレベルの処理における各種テストをパスしたピクセルデータを、メモリモジュール１３２−０〜１３２−３、たとえば内蔵ＤＲＡＭメモリ上のフレームバッファおよびＺバッファに書き込まれる（ＳＴ２８：ＭｅｍｏｒｙＷｒｉｔｅ）。
【０１０１】
各ローカルモジュール１３−０〜１３−３のローカルキャッシュ１３３−０〜１３３−３は、処理ユニット１３１−０〜１３１−３の処理に必要な描画データやテクスチャデータを格納し、処理ユニット１３１−０〜１３１−３とのデータの授受、並びにメモリモジュール１３２−０〜１３２−３とのデータの授受（書き込み、読み出し）を行う。
【０１０２】
図１３は、各ローカルモジュール１３−０〜１３−３のローカルキャッシュ１３３−０〜１３３−３の構成例を示すブロック図である。
【０１０３】
ローカルキャッシュ１３３は、図１３に示すように、リードオンリーキャッシュ１３３１、リード・ライトキャッシュ１３３２、リオーダバッファ（Ｒｅｏｒｄｅｒ  Ｂｕｆｆｅｒ）１３３３、およびメモリコントローラ１３３４を含む。
リードオンリーキャッシュ１３３１はテクスチャ系データの記憶に用いられ、リード・ライトキャッシュ１３３２は描画系データの記憶に用いられる。
【０１０４】
また、図１４は、テクスチャ系に用いられるリードオンリーキャッシュ１３３１の構成例を示す図である。
図１４に示すように、このリードオンリーキャッシュ１３３１は、１つのローカルモジュールで４つのテクスチャを処理することから、これに対応して４個のキャッシュＣＳＨ０〜ＣＳＨ３が設けられている。
また、各キャッシュＣＳＨ０〜ＣＳＨ３には、４近傍補間などのフィルタリング処理を行うために、ピクセル毎に４つのデータを必要とすることから、それぞれ４つのメモリバンクＢＫ０〜ＢＫ３が設けられる。
【０１０５】
リオーダバッファ１３３３は、いわゆる待ち合わせバッファであり、ローカルキャッシュの必要なデータがない場合、ローカルキャッシュフィルのリクエストを出したときに、グローバルモジュール１２が送られてくるデータの順番が異なる場合があるので、この順番を遵守し、処理ユニット１３１−０〜１３１−３に要求順に戻すようにデータの順番を調整する。
【０１０６】
また、図１５は、メモリコントローラ１３３４のテクスチャ系の構成例を示すブロック図である。
このメモリコントローラ１３３４は、図１５に示すように、４つのキャッシュＣＳＨ０〜ＣＳＨ３に対応するキャッシュコントローラ１３３４０〜１３３４３と、各キャッシュコントローラ１３３４０〜１３３４３から出力されるローカルキャッシュフィルリクエストを調停しグローバルインターフェース１３４｛−０〜３｝に出力するアービタ１３３４４と、グローバルインターフェース１３４｛−０〜３｝を介して入力したグローバルキャッシュフィルリクエストを受けて、データ転送の制御を行うメモリインターフェース１３３４５を含む。
【０１０７】
また、キャッシュコントローラ１３３４０〜１３３４３は、４つのピクセルＰＸ０〜ＰＸ３それぞれに対応するデータに対して４近傍補間を行う際に必要な各データの２次元アドレスＣＯｕｖ００〜ＣＯｕｖ０３、ＣＯｕｖ１０〜ＣＯｕｖ１３、ＣＯｕｖ２０〜ＣＯｕｖ２３、ＣＯｕｖ３０〜ＣＯｕｖ３３を受けてアドレスの競合をチェックし分配するコンフリクトチェッカＣＣ１０と、コンフリクトチェッカＣＣ１０で分配されたアドレスをチェックしリードオンリーキャッシュ１３３１にアドレスで示されたデータが存在するか否かを判断するタグ回路ＴＡＧ１０と、キューレジスタＱＲ１０を有している。
タグ回路ＴＡＧ１０内は後述するバンクのインターリーブに関するアドレッシングに対応する４つのタグメモリＢＸ１０〜ＢＸ１３を有し、リードオンリーキャッシュ１３３１に記憶されている。
ブロックデータのアドレスタグを保持するコンフリクトチェッカＣＣ１０で分配されたアドレスと上記アドレスタグを比較し、一致したか否かのフラグと前記アドレスをキューレジスタＱＲ１０にセットするとともに、一致しなかった場合には前記アドレスをアービタ１３３４４に送出する。
アービタ１３３４４は、キャッシュコントローラ１３３４０〜１３３４３から送出されるアドレスを受けて調停作業を行い、グローバルインターフェース（ＧＡＩＦ）１３４を介して同時に送出できるリクエストの数に応じてアドレスを選択し、ローカルキャッシュフィルリクエストとしてグローバルインターフェース（ＧＡＩＦ）１３４に出力する。
グローバルインターフェース（ＧＡＩＦ）１３４を介して送出されたローカルキャッシュフィルリクエストに対応してグローバルキャッシュ１２からデータが送られてくると、リオーダバッファ１３３３にセットされる。
キャッシュコントローラ１３３４０〜１３３４３は、キューレジスタＱＲＬ０の先頭にあるフラグをチェックし、一致したことを示すフラグがセットされていた場合には、キューレジスタＱＲＬ０の先頭にあるアドレスに基づいて、リードオンリーキャッシュ１３３１のデータを読み出し、処理ユニット１３１に与える。一方、一致したことを示すフラグがセットされていなかった場合には、対応するデータがリオーダバッファ１３３３にセットされた時点でリオーダバッファ１３３３から読み出し、キューレジスタＱＲＬ０のアドレスに基づいて当該ブロックデータでリードオンリーキャッシュ１３３１を更新するとともに、処理ユニット１３１に出力する。
【０１０８】
次に、本実施形態に係るバンクのインターリーブに関するアドレッシングについて、図１６および図１７に関連付けて説明する（文献：Ｓｔａｎｆｏｒｄ  Ｕｎｉｖｅｒｓｉｔｙ  「Ｐｒｅｆｅｔｃｈｉｎｇ  ｉｎ  ａ  ＴｅｘｔｕｒｅＣａｓｈｅ  Ａｒｃｈｉｔｅｃｔｕｒｅ」  参照）。
【０１０９】
この場合、図１６（Ａ）に示すように、２次元画像データを、たとえば４×４のマトリクスとして図中縦方向をＶsuper 、横方向をＵsuper とする。
そして、一つのブロックを図１６（Ｂ）に示すように、８×８のキャッシュサイズのスーパーブロックのマトリクスとして、図中縦方向Ｖblock を、横方向をＵblock とする。
このスーパーブロックに、図１６（Ｃ）に示すように、４近傍のブロックに０〜３の番号を付与する。
また、スーパーブロックの一つを図１６（Ｄ）に示すように、４×４のブロックのマトリクスとして、図中縦方向をＶoffset、横方向をＵoffsetとする。
このブロックに、図１６（Ｅ）に示すように、４近傍のブロックに０〜３の番号を付与する。
そして、図１７（Ａ）に示すような、Ｖ方向に関するＶsuper 、Ｖblock 、およびＶoffsetと、Ｕ方向に関する係るＵsuper 、Ｕblock 、およびＵoffsetとを合体して、図１７（Ｂ）に示すように、各０フィールドの後続して、Ｖsuper フィールド、Ｕsuper フィールド、Ｖblock フィールド、Ｕblock フィールド、Ｖoffsetフィールド、Ｕoffsetフィールドとなるようにソートする。
さらに、図１７（Ｃ）に示すような、０フィールド〜Ｕblock フィールドに対応する領域をベースアドレスフィールドとを合体して、図１７（Ｄ）に示すように、タグフィールド、ブロックインデックスフィールド、ブロックオフセットフィールドからなるアドレスが生成される。
【０１１０】
次に、メモリモジュールとしてのＤＲＲＡＭと、ローカルキャッシュと、グローバルキャッシュのメモリ容量について説明する。
メモリ容量の関係は、当然のことながらＤＲＡＭ＞グローバルキャッシュ＞ローカルキャッシュであるが、その割合については、アプリケーションに依存する。
キャッシュブロックサイズとしては、キャッシュフィル時に下位階層のメモリから読み出すデータサイズに相当する。
ＤＲＡＭの特性として、ランダムアクセス時には性能が低下するが、同一行（ＲＯＷ）に属するデータの連続アクセスは速いという点をあげることができる。
【０１１１】
グローバルキャッシュは、ＤＲＡＭからデータを読み出す関係上、前記連続アクセスを行う方が性能上好ましい。
したがって、キャッシュブロックのサイズを大きく設定する。
たとえば、グローバルキャッシュのキャッシュブロックのサイズはＤＲＡＭマクロの１行分（８２９２ｂｉｔ）をブロックサイズにすることができる。
【０１１２】
一方、ローカルキャッシュの場合には、ブロックサイズを大きくすると、キャッシュに入れても、使われないデータの割合が増えるのと、下位階層がグローバルキャッシュでＤＲＡＭでなく連続アクセスに必要性がないことから、ブロックサイズは小さく設定する。
ローカルキャッシュのブロックサイズとしては、メモリインターリーブの矩形領域のサイズに近い値が適当で、本実施形態の場合、４×４ピクセル分、すなわち５１２ビットとする。
【０１１３】
次に、テクスチャ圧縮について説明する。
１ピクセルの処理を行うのに複数のテクスチャデータを必要とするので、テクスチャ読み出しバンド幅がボトルネックになる場合が多いが、これを軽減するためテクスチャを圧縮する方法がよく採用される。
圧縮方法には、いろいろあるが、４×４ピクセルのように小さな矩形領域単位で圧縮／伸長できる方法の場合には、グローバルキャッシュには圧縮されたままのデータを置き、ローカルキャッシュには、伸長後のデータを置くことが好ましい。
【０１１４】
また、グローバルモジュール１２と各ローカルモジュール１３−０〜１３−３との配置関係としては、図７に示すように、グローバルモジュール１２を中心として各ローカルモジュール１３−０〜１３−３をその周辺近傍に配置することが望ましい。
具体的には、グローバルモジュール１２のチャネルブロックＣＢＬＫ０の近傍にチャネルブロックＣＢＬＫ０とデータの授受を行うローカルモジュール１３−０を配置し、グローバルモジュール１２のチャネルブロックＣＢＬＫ１の近傍にチャネルブロックＣＢＬＫ１とデータの授受を行うローカルモジュール１３−１を配置し、グローバルモジュール１２のチャネルブロックＣＢＬＫ２の近傍にチャネルブロックＣＢＬＫ２とデータの授受を行うローカルモジュール１３−２を配置し、グローバルモジュール１２のチャネルブロックＣＢＬＫ３の近傍にチャネルブロックＣＢＬＫ３とデータの授受を行うローカルモジュール１３−３を配置する。
これにより、各対応するチャネルブロックとローカルモジュールまでの距離を均一に保つことができ、配線領域を整然と並べることができ、平均配線長を短くできる。したがって、配線遅延や配線コストを低減でき、処理速度の向上を図ることが可能となる。
【０１１５】
次に、上記構成による動作を説明する。
ここでは、テクスチャ系の処理について説明する。
【０１１６】
まず、ＳＤＣ１１において、３次元座標、法線ベクトル、テクスチャ座標の各頂点データが入力されると、頂点データに対する演算が行われる。
次に、ラスタライゼーション（Ｒａｓｔｅｒｉｚａｔｉｏｎ）に必要な各種データ（Ｚ、テクスチャ座標、カラーなど）の傾き等のＤＤＡパラメータが算出される。
そして、ＳＤＣ１１においては、算出したＤＤＡパラメータをグローバルモジュール１２を介して全ローカルモジュール１３−０〜１３−３にブロードキャストされる。
この処理において、ブロードキャストされたパラメータは、後述するキャッシュフィルとは別のチャネルを用いて、グローバルモジュール１２を介して各ローカルモジュール１３−０〜１３−３に渡される。ただし、グローバルキャッシュの内容には影響を与えない。
【０１１７】
各ローカルモジュール１３−０〜１３−３では、処理ユニット１３１−０〜１３１−３において、以下の処理が行われる。
すなわち、処理ユニット１３１（−０〜３）においては、ブロードキャストされたパラメータを受け取ると、その三角形が自分が担当する領域、たとえば４×４ピルセルの矩形領域単位でインターリーブされた領域に属しているか否かが判断される。その結果、属している場合には、各種データ（Ｚ、テクスチャ座標、カラーなど）がラスタライズされる。
次に、ＬＯＤ（Ｌｅｖｅｌ  ｏｆ  Ｄｅｔａｉｌ）計算によるミップマップ（ＭｉｐＭａｐ）レベルの算出や、テクスチャアクセスのための（ｕ，ｖ）アドレス計算が行われる。
【０１１８】
そして、次に、テクスチャの読み出しが行われる。
この場合、各ローカルモジュール１３−０〜１３−３の処理ユニット１３１−０〜１３１−３では、テクスチャリードの際に、まず、ローカルキャッシュ１３３−０〜１３３−３のエントリーがチェックされる。
その結果、エントリーがあった場合には、必要なテクスチャデータが読み出される。
必要とするテクスチャデータがローカルキャッシュ１３３−０〜１３３−３内に無い場合には、各処理ユニット１３１−０〜１３１−３では、グローバルインターフェース１３４−０〜１３４−３を通して、グローバルモジュール１２に対してローカルキャッシュフィルのリクエストが送出される。
【０１１９】
グローバルモジュール１２においては、要求されたブロックデータがグローバルキャッシュ１２１−０〜１２１−３のいずれかにあると各チャネルブロックＣＢＬＫ０〜ＣＢＬＫ３のタグ回路１２０４−０〜１２０４−３のうちのいずれかで判断されると、対応するグローバルキャッシュ１２１−０〜１２１−３のいずれかから読み出されてチャネル１２０１−０〜１２０１−３を通してリクエストを送出したローカルモジュールに送り返される。
【０１２０】
一方、要求されたブロックデータがグローバルキャッシュ１２１−０〜１２１−３のいずれかにもないと各チャネルブロックＣＢＬＫ０〜ＣＢＬＫ３のタグ回路１２０４−０〜１２０４−３で判断されると、所望のチャネル１２０２−０〜１２０２−３のいずれかから当該ブロックを保持するローカルモジュールに対してグローバルキャッシュフィルのリクエストが送られる。
グローバルキャッシュフィルのリクエストを受けたローカルモジュールにおいては、メモリから該当するブロックデータが読み出され、グローバルインターフェースを通してグローバルモジュール１２に送出される。
その後、グローバルモジュール１２では、ブロックデータが所望のグローバルキャッシュにフィルされるとともに、リクエストを送ってきたローカルモジュールに対して所望のチャネルからデータが送出される。
【０１２１】
グローバルモジュール１２から要求したブロックデータが送られてくると、該当するローカルモジュールでは、ローカルキャッシュが更新され、処理ユニットによりブロックデータが読み出される。
【０１２２】
次に、ローカルモジュール１３−０〜１３−３では、読み出されたテクスチャデータと、（ｕ，ｖ）アドレスは算出時に得た小数部を使って４近傍補間などのフィルタリング処理が行われる。
次に、フィルタリング後のテクスチャデータと、ラスタライズ後の各種データを用いて、ピクセル単位の演算が行われる。
そして、ピクセルレベルの処理における各種テストをパスしたピクセルデータを、メモリモジュール１３２−０〜１３２−３、たとえば内蔵ＤＲＡＭメモリ上のフレームバッファおよびＺバッファに書き込まれる。
【０１２３】
以上説明したように、本実施形態によれば、ＳＤＣ１１とグローバルモジュール１２とがデータの授受を行い、一つのグローバルモジュール１２に対して複数個（本実施形態では４個）のローカルモジュール１３−０〜１３−３が並列に接続されて、複数のローカルモジュール１３−０〜１３−３で処理データを共有し並列に処理し、グローバルモジュール１２はグローバルキャッシュを有し、各ローカルモジュール１３−０〜１３−３はローカルキャッシュをそれぞれ有し、キャッシュの階層として、４つのローカルモジュール１３−０〜１３−３が共有するグローバルキャッシュと、各ローカルモジュールがローカルに持つローカルキャッシュの２階層を有することから、複数の処理装置が処理データを共有して並列処理する際に、重複アクセスを低減でき、配線本数の多いクロスバーが不要となる。その結果、設計が容易で、配線コスト、配線遅延を低減できる画像処理装置を実現できる利点がある。
【０１２４】
また、本実施形態によれば、グローバルモジュール１２と各ローカルモジュール１３−０〜１３−３との配置関係としては、図７に示すように、グローバルモジュール１２を中心として各ローカルモジュール１３−０〜１３−３をその周辺近傍に配置することから、各対応するチャネルブロックとローカルモジュールまでの距離を均一に保つことができ、配線領域を整然と並べることができ、平均配線長を短くできる。したがって、配線遅延や配線コストを低減でき、処理速度の向上を図ることができる利点がある。
【０１２５】
なお、本実施形態においては、テクスチャデータが内蔵ＤＲＡＭ上にあるケースを例に述べているが、他のケースとして、内蔵ＤＲＡＭには、カラーデータおよびｚデータのみが置かれ、テクスチャデータは外部メモリに置かれることも可能である。この場合には、グローバルキャッシュでミスが発生すると、外部ＤＲＡＭに対してキャッシュフィル要求が出されることになる。
【０１２６】
また、上述の説明では、図７の構成、すなわち、一つのグローバルモジュール１２に対して複数個（本実施形態では４個）のローカルモジュール１３−０〜１３−３が並列に接続した画像処理装置１０を例に並列処理を行う場合に特化した形態となっているが、図７の構成を一つのクラスタＣＬＳＴとして、たとえば図１８に示すように、４つのクラスタＣＬＳＴ０〜ＣＬＳＴ４をマトリクス状に配置して、各クラスタＣＬＳＴ０〜ＣＬＳＴ４のグローバルモジュール１２−０〜１２−３間でデータの授受を行うように構成することも可能である。
図１８の例では、クラスタＣＬＳＴ０のグローバルモジュール１２−０とクラスタＣＬＳＴ１のグローバルモジュール１２−１とを接続し、クラスタＣＬＳＴ１のグローバルモジュール１２−１とクラスタＣＬＳＴ３のグローバルモジュール１２−３とを接続し、クラスタＣＬＳＴ３のグローバルモジュール１２−３とクラスタＣＬＳＴ２のグローバルモジュール１２−２とを接続し、クラスタＣＬＳＴ２のグローバルモジュール１２−２とクラスタＣＬＳＴ０のグローバルモジュール１２−０とを接続している。
すなわち、複数のクラスタＣＬＳＴ０〜ＣＬＳＴ４のグローバルモジュール１２−０〜１２−３をリング状に接続している。
なお、図１８の構成の場合には、一つのＳＤＣからパラメータがＣＬＳＴ０〜ＣＬＳＴ４のグローバルモジュール１２−０〜１２−３にブロドキャストされるように構成することが可能である。
【０１２７】
このような構成を採用することにより、より精度の高い画像処理を実現でき、また、各クラスタ間の配線も単純に双方向として一系統で接続するので、各クラスタ間の負荷を均一に保つことができ、配線領域を整然と並べることができ、平均配線長を短くできる。したがって、配線遅延や配線コストを低減でき、処理速度の向上を図ることが可能となる。
【０１２８】
【発明の効果】
以上説明したように、本発明によれば、複数の処理装置が処理データを共有して並列処理する際に、重複アクセスを低減でき、配線本数の多いクロスバーが不要となる。その結果、設計が容易で、配線コスト、配線遅延を低減できる画像処理装置を実現できる利点がある。
【図面の簡単な説明】
【図１】プリミティブレベルでの並列化処理について概念的に示す図である。
【図２】ピクセルレベルでの並列処理の手法に基づくプリミティブ・レベルでの並列化処理について概念的に示す図である。
【図３】ピクセルレベルの並列処理を採用し、複数のプリミティブを同時処理し、処理ユニットとメモリ・モジュールを直結できる処理分配とする画像処理装置の構成を概念的に示す図である。
【図４】図３の画像処理装置におけるピクセル生成について説明するための図である。
【図５】スクリーン上の矩形領域をテクスチャ空間に投影する様子を概念的に示す図である。
【図６】複数の処理ユニットで並列処理を行うシステムにおいて、テクスチャリード系のメモリアクセスに必要となるクロスバーを最も直接的な形で実現した例を示す図である。
【図７】本発明の係る画像処理装置の一実施形態を示すブロック構成図である。
【図８】本実施形態に係るストリームデータコントローラ（ＳＤＣ）の主な処理を説明するためのフローチャートである。
【図９】本実施形態に係るグローバルモジュールの機能を説明するためのフローチャートである。
【図１０】図７のグローバルモジュールの具体的な構成例を示す回路図である。
【図１１】本実施形態に係るローカルモジュールにおける処理ユニットの主な処理を説明するための図である。
【図１２】本実施形態に係るテクスチャリード時のローカルモジュールの動作を説明するためのフローチャートである。
【図１３】本実施形態に係るローカルモジュールにおけるローカルキャッシュの構成例を示すブロック図である。
【図１４】本実施形態に係るローカルキャッシュのリードオンリーキャッシュの構成例を示すブロック図である。
【図１５】本実施形態に係るローカルキャッシュのメモリコントローラの構成例を示すブロック図である。
【図１６】本実施形態に係るバンクのインターリーブに関するアドレッシングについて説明するための図である。
【図１７】本実施形態に係るバンクのインターリーブに関するアドレッシングについて説明するための図である。
【図１８】本発明の係る画像処理装置の他の実施形態を示すブロック構成図である。
【符号の説明】
１０，１０Ａ…画像処理装置、１１…ストリームデータコントローラ（ＳＤＣ）、１２−０〜１２−３…グローバルモジュール、１２１−０〜１２１−３…グローバルキャッシュ、１３−０〜１３−３…ローカルモジュール、１３１−０〜１３１−３…処理ユニット、１３２−０〜１３２−３…メモリモジュール、１３３−０〜１３３−３…ローカルキャッシュ、１３４−０〜１３４−３…グローバルインターフェース（ＧＡＩＦ）、ＣＬＳＴ０〜ＣＬＳＴ…クラスタ、１２０１−０〜１２０１−３…ローカルキャッシュフィル用チャネル、１２０２−０〜１２０２−３…グローバルキャッシュフィル用チャネル、１２０３−０〜１２０３−３…セレクタ、１２０４−０〜１２０４−３…タグ回路、１２０５−０〜１２０５−３…アービタ。
【図１】
0003840966.tif 000002
【図２】
0003840966.tif 000003
【図３】
0003840966.tif 000004
【図４】
0003840966.tif 000005
【図５】
0003840966.tif 000006
【図６】
0003840966.tif 000007
【図７】
0003840966.tif 000008
【図８】
0003840966.tif 000009
【図９】
0003840966.tif 000010
【図１０】
0003840966.tif 000011
【図１１】
0003840966.tif 000012
【図１２】
0003840966.tif 000013
【図１３】
0003840966.tif 000014
【図１４】
0003840966.tif 000015
【図１５】
0003840966.tif 000016
【図１６】
0003840966.tif 000017
【図１７】
0003840966.tif 000018
【図１８】
0003840966.tif 000019