(57)【特許請求の範囲】
【請求項１】
複数の処理クラスタを含むマルチスレッド型コアアレイと、
前記複数の処理クラスタを、画像の画素と関連づけられた画素データを格納するフレームバッファに接続するクロスバーであって、該フレームバッファが複数の区画に区分けされている、クロスバーと、を備えるグラフィックスプロセッサであって、
各処理クラスタは、
複数のプログラムを実行するように動作可能な複数の処理コアの集合と、
カバレッジデータを受信し、該受信したカバレッジデータに対してピクセルシェーダープログラムを前記複数の処理コアの少なくとも一つに実行するように命令して、画素値を生成する、ピクセルモジュールと、
前記複数の処理コアの少なくとも一つによって生成された前記画素値を受信し、該受信した画素値に基づいて、前記フレームバッファに格納された前記画素データを更新する、ラスタ演算ユニットと、を含み、
各処理クラスタの前記ラスタ演算ユニットは、前記クロスバーに連結されて、前記フレームバッファの各区画が、前記ラスタ演算ユニットの各一つにアクセス可能である、
グラフィックスプロセッサ。
【請求項２】
前記フレームバッファの区画の数が前記ラスタ演算ユニットの数と異なる、請求項１に記載のグラフィックスプロセッサ。
【請求項３】
前記フレームバッファの区画の数が前記ラスタ演算ユニットの数と等しい、請求項１に記載のグラフィックスプロセッサ。
【請求項４】
各処理クラスタは、
頂点データを受信し、該受信した頂点データに対してバーテックスシェーダープログラム又はジオメトリシェーダープログラムのうち少なくとも一つを前記複数の処理コアの少なくとも一つに実行するように命令する、ジオメトリモジュールをさらに含む、請求項１に記載のグラフィックスプロセッサ。
【請求項５】
複数の処理クラスタを含むマルチスレッド型コアアレイと、
複数の画素の各々についてのカバレッジデータを生成するラスタライザと、
前記カバレッジデータの一部を、前記ラスタライザから前記マルチスレッド型コアアレイ内の前記処理クラスタの一つに配信する画素分配論理と、
前記複数の処理クラスタを、画像の画素を格納するフレームバッファに接続するクロスバーであって、該フレームバッファが複数の区画に区分けされている、クロスバーと、を備えるグラフィックスプロセッサであって、
各処理クラスタは、
複数のプログラム命令を実行するように動作可能な複数の処理コアの集合と、
前記ラスタライザから前記カバレッジデータの一部を受信し、該受信したカバレッジデータに対してピクセルシェーダープログラムを前記複数の処理コアの少なくとも一つに実行するように命令して、画素値を生成する、ピクセルモジュールと、
前記複数の処理コアの少なくとも一つによって生成された前記画素値を受信し、該受信した画素値を、前記フレームバッファ内の画像の画素と組み合せる、ラスタ演算ユニットと、を含んでおり、
各処理クラスタの前記ラスタ演算ユニットは、前記クロスバーに連結されて、前記フレームバッファの各区画が、前記ラスタ演算ユニットの各一つにアクセス可能である、グラフィックスプロセッサ。
【請求項６】
前記フレームバッファの区画の数が前記ラスタ演算ユニットの数と異なる、請求項５に記載のグラフィックスプロセッサ。
【請求項７】
前記フレームバッファの区画の数が前記ラスタ演算ユニットの数と等しい、請求項５に記載のグラフィックスプロセッサ。
【請求項８】
各処理クラスタは、
頂点データを受信し、該受信した頂点データに対してバーテックスシェーダープログラム又はジオメトリシェーダープログラムのうち少なくとも一つを前記複数の処理コアの少なくとも一つに実行するように命令する、ジオメトリモジュールをさらに含む、請求項５に記載のグラフィックスプロセッサ。
【請求項９】
画像エリアが複数のタイルに分割され、各タイルが前記処理クラスタの一つに割り当てられ、
前記画素分配論理が、前記複数のタイルのうちどれが前記画像エリア内の第１の画素を含むかに関する判断に基づいて、前記処理クラスタのうちの前記一つを選択する、請求項５に記載のグラフィックスプロセッサ。
【請求項１０】
前記複数のタイルの少なくとも二つが前記処理クラスタの各々に割り当てられ、
各処理クラスタについて、該処理クラスタに割り当てられた前記タイルが相互に隣接していない、請求項９に記載のグラフィックスプロセッサ。
【請求項１１】
複数の処理クラスタを含むマルチスレッド型コアアレイと、
前記複数の処理クラスタを、画像の画素と関連づけられた異なる属性についての画素データを格納する複数のフレームバッファに接続するクロスバーであって、該複数のフレームバッファの各々が複数の区画に区分けされている、クロスバーと、を備えるグラフィックスプロセッサであって、
各処理クラスタは、
複数のプログラムを実行するように動作可能な複数の処理コアの集合と、
カバレッジデータを受信し、該受信したカバレッジデータに対してピクセルシェーダープログラムを前記複数の処理コアの少なくとも一つに実行するように命令して、画素値を生成する、ピクセルモジュールと、
前記複数の処理コアの少なくとも一つによって生成された前記画素値を受信し、該受信した画素値に基づいて、前記フレームバッファに格納された前記画素データを更新する、ラスタ演算ユニットと、を含み、
各処理クラスタの前記ラスタ演算ユニットは、前記クロスバーに連結されて、前記フレームバッファの各一つの各区画が、前記ラスタ演算ユニットの各一つにアクセス可能である、グラフィックスプロセッサ。
【請求項１２】
前記複数のフレームバッファが、前記画像の前記画素についてのＺデータを格納する第１フレームバッファと、前記画像の前記画素についての色データを格納する第２フレームバッファとを含む、請求項１１に記載のグラフィックスプロセッサ。
【請求項１３】
前記第１フレームバッファが第１の数の区画に区分され、前記第２フレームバッファが第２の数の区画に区分され、前記第１の数と前記第２の数とが異なる、請求項１２に記載のグラフィックスプロセッサ。
【請求項１４】
前記第１フレームバッファと前記第２フレームバッファとが各々同数の区画に区分されている、請求項１２に記載のグラフィックスプロセッサ。
【請求項１５】
各処理クラスタは、
頂点データを受信し、該受信した頂点データに対してバーテックスシェーダープログラム又はジオメトリシェーダープログラムのうち少なくとも一つを前記複数の処理コアの少なくとも一つに実行するように命令する、ジオメトリモジュールをさらに含む、請求項１１に記載のグラフィックスプロセッサ。
【請求項１６】
前記複数のフレームバッファが、第１の数の区画に区分された第１フレームバッファと、第２の数の区画に区分された第２フレームバッファとを含み、前記第１の数と前記第２の数とが異なる、請求項１１に記載のグラフィックスプロセッサ。
【請求項１７】
前記複数のフレームバッファが第１フレームバッファと第２フレームバッファとを含み前記第１フレームバッファと前記第２フレームバッファとが各々同数の区画に区分されている、請求項１１に記載のグラフィックスプロセッサ。
【発明の詳細な説明】
【関連出願の相互参照】
【０００１】
[0001]本出願は、２００５年１２月１９日に出願され、あらゆる目的のため参照によって全体が本明細書に組み込まれる米国仮出願第６０／７５２，２６５号の優先権を主張する。
【０００２】
[0002]本出願は、あらゆる目的のため参照によって全体がそのまま本明細書に組み込まれる、以下の同一出願人による同時係属中の米国特許出願：２００５年１１月２９日に出願された出願番号第１１／２９０，３０３号、２００５年１１月２９日に出願された出願番号第１１／２８９，８２８号、及び、２００５年１２月１９日に出願された出願番号第１１／３１１，９３３号に関係している。
【発明の背景】
【０００３】
[0003]本発明は、一般に、グラフィックスプロセッサに係わり、特に、グラフィックスプロセッサの並列アレイアーキテクチャに関係する。
【０００４】
[0004]並列処理技術は、複数の独立した計算が実行される必要があるときにプロセッサ又はマルチプロセッサシステムのスループットを高める。計算はプログラムによって定義されるタスクに分割され、各タスクが別個のスレッドとして実行される。（本明細書で使用されるように、「スレッド」は、一般に、特殊な入力データを使用する特殊なプログラムの実行のインスタンスであり、「プログラム」は入力データから結果データを生成する実行可能な命令のシーケンスである。）並列スレッドは、プロセッサ内部の異なる処理エンジンを使用して同時に実行される。
【０００５】
[0005]多数の既存のプロセッサアーキテクチャが並列処理をサポートする。最初のこのようなアーキテクチャは一緒にネットワーク化された複数のディスクリートプロセッサを使用した。最近、複数の処理コアがシングルチップ上に製作されている。これらのコアは様々な方法で制御される。一部の事例では、多重命令多重データ（ＭＩＭＤ）マシンとして知られ、各コアがコア固有の命令を独立にフェッチし、コア固有の処理エンジン（又は複数の処理エンジン）へ発行する。他の事例では、単一命多重データ（ＳＩＭＤ）マシンとして知られ、コアは、異なる入力オペランドに関する命令を実行する複数の処理エンジンへ同じ命令を並列に発行する単一命令ユニットを有する。ＳＩＭＤマシンは、一般に、（唯一の命令ユニットだけが必要とされるので）チップ面積の点、したがって、コストの点で有利であり、不利な面は、並列化が利用できる程度が、同じ命令の複数のインスタンスが同時に実行され得る程度に限られることである。
【０００６】
[0006]従来型のグラフィックスプロセッサは、画像レンダリングアプリケーションにおいて高いスループットを実現するために非常に広範なＳＩＭＤアーキテクチャを使用する。このようなアプリケーションは、一般に、多数の物体（頂点又は画素）に同じプログラム（バーテックスシェーダー又はピクセルシェーダー）を実行することを必然的に伴う。各物体は、他のすべての物体と独立に処理されるが、同じ演算のシーケンスを使用するので、ＳＩＭＤアーキテクチャは妥当なコストでかなりの性能強化を提供する。典型的に、ＧＰＵは、バーテックスシェーダープログラムを実行する１個のＳＩＭＤコアと、ピクセルシェーダープログラムを実行する匹敵するサイズの別のＳＩＭＤコアとを含む。ハイエンドＧＰＵでは、さらに一層高い並列度をサポートするためにＳＩＭＤコアの複数の組が設けられることがある。
【０００７】
[0007]これらの設計はいくつかの欠点がある。第一に、バーテックスプログラムとシェーダープログラムのための別個の処理コアは別々に設計され試験され、多くの場合に、少なくとも若干の重複した取り組みの原因となる。第二に、頂点演算と画素演算との間のグラフィックス処理負荷の分割はアプリケーションによって大きく変動する。当分野で公知のように、バーテックスシェーダーコア側の負荷を増加させる多くの小さなプリミティブを使用することにより、及び／又は、ピクセルシェーダーコア側の負荷を増加させる複雑なテクスチャマッピング及びピクセルシェーディング演算を使用することによりディテールが画像に追加されることがある。殆どの場合、負荷が完全に均衡することはなく、一方のコア又は他方のコアが十分に利用されない。たとえば、画素集中型のアプリケーションでは、ピクセルシェーダーコアが最大スループットで作動することがあり、一方、バーテックスコアはアイドル状態であり、処理済みの頂点がパイプラインのピクセルシェーダーステージへ移るのを待機している。逆に、頂点集中型のアプリケーションでは、バーテックスシェーダーコアが最大スループットで作動することがあり、一方、ピクセルコアはアイドル状態であり、新しい頂点が供給されるのを待機する。いずれの場合も、利用可能な処理サイクルのうちのある一部分は事実上浪費されている。
【０００８】
[0008]したがって、高い並列度を維持したままで、異なるシェーダーの変動する負荷に適応できるグラフィックスプロセッサを提供することが望ましい。
【発明の概要】
【０００９】
[0009]本発明の実施形態は、レンダリング演算中にバーテックスシェーダープログラム、ジオメトリシェーダープログラム、及び／又は、ピクセルシェーダープログラムを任意の組み合わせで実行するためにスケーラブルマルチスレッド型コアアレイを使用するグラフィックスプロセッサを提供する。コアアレイは、１つ以上のクラスタに配置されたいくつものマルチスレッド型処理コアを含み、同じクラスタ中のコアが共用コアインターフェイスによって制御される。
【００１０】
[0010]ピクセルシェーダープログラムが実行されるべき実施形態では、プログラムを実行すべきクラスタ又はコアは、画像エリア内の画素の位置に基づいて有利に選択される。一実施形態では、スクリーンはタイル化され、各タイルが一方の処理クラスタ又は別の処理クラスタ（或いは、処理クラスタ内の特定のコア）に割り当てられている。所与の処理クラスタ又はコアに割り当てられたタイルは、近似的な負荷均衡化のためスクリーン全体に有利に散在させられる。
【００１１】
[0011]ある実施形態では、処理コア又はクラスタは、新たに生成された画素データをフレームバッファ中の既存データと統合するラスタ演算ユニットを含む。フレームバッファは、処理クラスタの個数と一致するように区分け可能であり、各クラスタがこのクラスタのデータの全部を１つのパーティションに書き込む。他の実施形態では、フレームバッファのパーティションの個数は使用されている処理クラスタの個数と一致しなくてもよい。クロスバー又は類似した回路構成が処理クラスタとフレームバッファパーティションとの間に設定可能なカップリングを提供することがあるので、処理クラスタはどれでも、どのフレームバッファパーティションにでも連結させることが可能であり、一部の実施形態では、クロスバーが省かれ、メモリ局所性を高める。
[0012]以下の詳細な説明は、添付図面と共に、本発明の本質及び利点のより良い理解を与える。
【図面の簡単な説明】
【００１２】
【図１】本発明の実施形態によるコンピュータシステムのブロック図である。
【図２】本発明の実施形態によるグラフィックスプロセッサで実施され得るレンダリングパイプラインのブロック図である。
【図３】本発明の実施形態によるグラフィックスプロセッサのマルチスレッド型コアアレイのブロック図である。
【図４】本発明の実施形態による画像領域のいくつものタイルへの１つの可能なタイル化の説明図である。
【図５】本発明の実施形態による処理クラスタとフレームバッファとの間のカップリングを説明する略ブロック図である。
【図６】本発明の別の実施形態による処理クラスタとフレームバッファとの間のカップリングを説明する略ブロック図である。
【発明の詳細な説明】
【００１３】
システム概要
[0019]図１は本発明の実施形態によるコンピュータシステム１００のブロック図である。コンピュータシステム１００は、中央処理ユニット（ＣＰＵ）１０２と、メモリブリッジ１０５を含むバス経路を介して通信するシステムメモリ１０４とを含む。メモリブリッジ１０５は、バス経路１０６を介して、Ｉ／Ｏ（入力／出力）ブリッジ１０７に接続されている。Ｉ／Ｏブリッジ１０７は、１台以上のユーザ入力装置１０８（たとえば、キーボード、マウス）からユーザ入力を受信し、バス１０６及びメモリブリッジ１０５を介して入力をＣＰＵ１０２へ転送する。可視出力がバス１１３を介してメモリブリッジ１０５に連結されたグラフィックスサブシステム１１２の制御の下で動作する画素ベースの表示装置１１０（たとえば、従来型のＣＲＴ又はＬＣＤベースのモニター）上に提供される。システムディスク１１４はさらにＩ／Ｏブリッジ１０７に接続されている。スイッチ１１６は、Ｉ／Ｏブリッジ１０７と、ネットワークアダプタ１１８及び種々のアドインカード１２０、１２１のような他のコンポーネントとの間で接続を行う。ＵＳＢ又は他のポート接続、ＣＤドライブ、ＤＶＤドライブなどを含むその他のコンポーネント（明示的に示されていない）もまたＩ／Ｏブリッジ１０７に接続されてもよい。種々のコンポーネント間でのバス接続は、ＰＣＩ（ペリフェラル・コンポーネント・インターコネクト）、ＰＣＩエクスプレス（ＰＣＩ−Ｅ）、ＡＧＰ（アクセラレーテッド・グラフィックス・ポート）、ハイパートランスポート、又は、その他の（複数の）バスプロトコルのようなバスプロトコルを使用して実施可能であり、様々な装置間の接続は当分野で公知のような異なるプロトコルを使用してもよい。
【００１４】
[0020]グラフィックス処理サブシステム１１２は、たとえば、プログラマブルプロセッサ、特定用途向け集積回路（ＡＳＩＣ）、及び、メモリ装置のような１台以上の集積回路装置を使用して実施されてもよいグラフィックス処理ユニット（ＧＰＵ）１２２及びグラフィックスメモリ１２４を含む。ＧＰＵ１２２は、メモリブリッジ１０５及びバス１１３を介してＣＰＵ１０２及び／又はシステムメモリ１０４によって供給されたグラフィックスデータからの画素データの生成、画素データを格納し更新するためのグラフィックスメモリ１２４との相互作用などに関連した種々のタスクを実行するように構成されてもよい。たとえば、ＧＰＵ１２２は、ＣＰＵ１０２上で動く種々のプログラムによって供給された２次元又は３次元シーンデータから画素データを生成してもよい。ＧＰＵ１２２は、メモリブリッジ１０５を介して受信された画素データを、さらなる処理の有無にかかわらず、グラフィックスメモリ１２４に格納することもある。ＧＰＵ１２２は、グラフィックスメモリ１２４から表示装置１１０へ画素データを配信するように構成されたスキャンアウトモジュールをさらに含む。
【００１５】
[0021]ＣＰＵ１０２は、システム１００のマスタープロセッサとして動作し、他のシステムコンポーネントの動作を制御し協調させる。特に、ＣＰＵ１０２は、ＧＰＵ１２２の動作を制御するコマンドを発行する。一部の実施形態では、ＣＰＵ１０２は、ＧＰＵ１２２のためのコマンドのストリームを、システムメモリ１０４、グラフィクスメモリ１２４、又は、ＣＰＵ１０２及びＣＰＵ１２２の両方からアクセス可能な別の記憶場所に存在し得るコマンドバッファに書き込む。ＧＰＵ１２２は、コマンドバッファからコマンドストリームを読み出し、ＣＰＵ１０２の動作と非同期にコマンドを実行する。コマンドは、画像を生成する従来型のレンダリングコマンド、ならびに、画像生成とは無関係であり得るデータ処理のためＣＰＵ１０２上で動くアプリケーションがＧＰＵ１２２の計算パワーを利用することを可能にさせる汎用レンダリングコマンドを含んでもよい。
【００１６】
[0022]本明細書で明らかにされているシステムは例示であり、変形及び変更が可能であることがわかるであろう。ブリッジの個数及び配置を含むバストポロジーは必要に応じて変更されてもよい。たとえば、一部の実施形態では、システムメモリ１０４は、ブリッジ経由ではなく、直接的にＣＰＵ１０２に接続され、他の装置がメモリブリッジ１０５及びＣＰＵ１０２を介してシステムメモリ１０４と通信する。他の代替的なトポロジーでは、グラフィックスサブシステム１１２は、メモリブリッジ１０５ではなく、Ｉ／Ｏブリッジ１０７に接続されている。さらに他の実施形態では、Ｉ／Ｏブリッジ１０７及びメモリブリッジ１０５はシングルチップに集積化されてもよい。本明細書で明らかにされている特有のコンポーネントは自由に選択でき、たとえば、任意の個数のアドインカード又は周辺装置がサポートされてもよい。一部の実施形態では、スイッチ１１６は省略され、ネットワークアダプタ１１８及びアドインカード１２０、１２１がＩ／Ｏブリッジ１０７に直接的に接続されている。
【００１７】
[0023]システム１００の残りの部分へのＧＰＵ１２２の接続もまた変更されてもよい。一部の実施形態では、グラフィックスシステム１１２は、システム１００の拡張スロットに挿入され得るアドインカードとして実施される。他の実施形態では、ＧＰＵは、メモリブリッジ１０５又はＩ／Ｏブリッジ１０７のようなバスブリッジと共にシングルチップに集積化されている。
【００１８】
[0024]ＧＰＵは、任意の量のローカルグラフィックスメモリが設けられてもよく、ローカルメモリが設けられないこともあり、ローカルメモリとシステムメモリを任意の組み合わせで使用してもよい。たとえば、ユニファイド・メモリ・アーキテクチャ（ＵＭＡ）の実施形態では、専用グラフィックスメモリ装置が設けられず、ＧＰＵはシステムメモリを独占的又はほぼ独占的に使用する。ＵＭＡの実施形態では、ＧＰＵは、バスブリッジチップに集積化されてもよく、又は、ＧＰＵをブリッジチップ及びシステムメモリに接続する高速バス（たとえば、ＰＣＩ−Ｅ）付きのディスクリートチップとして設けられてもよい。
【００１９】
[0025]たとえば、複数のＧＰＵを単一のグラフィックスカードに組み込むことにより、又は、複数のグラフィックスカードをバス１１３に接続することにより、任意の台数のＣＰＵがシステムに組み込まれてもよいこともまた理解されるべきである。
【００２０】
[0026]その上、本発明の態様を具現化するＧＰＵは、汎用コンピュータシステムと、ビデオゲームコンソール及びその他の特殊目的コンピュータシステムと、ＤＶＤプレーヤーと、携帯電話機又は携帯情報端末のようなハンドヘルド装置などの多種多様の装置に組み込まれてもよい。
【００２１】
レンダリングパイプライン概要
[0027]図２は本発明の実施形態による図１のＧＰＵ１２２で実施され得るレンダリングパイプライン２００のブロック図である。本実施形態では、レンダリングパイプライン２００は、適用可能なバーテックスシェーダープログラム、ジオメトリシェーダープログラム、及び、ピクセルシェーダープログラムが、本明細書で「マルチスレッド型コアアレイ」２０２と呼ばれる同じ並列処理ハードウェアを使用して実行されるアーキテクチャを使用して実施される。マルチスレッド型コアアレイ２０２は後述されている。
【００２２】
[0028]マルチスレッド型コアアレイ２０２に加えて、レンダリングパイプライン２００は、フロントエンド２０４及びデータアセンブラ２０６と、セットアップモジュール２０８と、ラスタライザ２１０と、カラーアセンブリモジュール２１２と、ラスタ演算モジュール（ＲＯＰ）２１４とを含み、これらの１つずつが従来型の集積回路テクノロジー又はその他のテクノロジーを使用して実施され得る。
【００２３】
[0029]フロントエンド２０４は、たとえば、図１のＣＰＵ１０２から、状態情報（ＳＴＡＴＥ）、レンダリングコマンド（ＣＭＤ）、及び、ジオメトリデータ（ＧＤＡＴＡ）を受信する。一部の実施形態では、ジオメトリデータを直接的に提供するのではなく、ＣＰＵ１０２はジオメトリデータが格納されているシステムメモリ１０４中の場所への参照情報を提供し、データアセンブラ２０６がシステムメモリ１０４からデータを取り出す。状態情報、レンダリングコマンド、及び、ジオメトリデータは、一般的に従来型の内容でもよく、シーンのジオメトリ、照明、陰影、テクスチャ、動き、及び／又は、カメラパラメータを含む所望の描画画像又は複数の描画画像を定義するために使用されてもよい。
【００２４】
[0030]一実施形態では、ジオメトリデータは、シーンに存在し得る物体（たとえば、机、椅子、人又は動物）についてのいくつもの物体定義を含む。物体は、頂点への参照情報によって定義されるプリミティブ（たとえば、点、線、三角形、及び／又は、その他の多角形）のグループとして、有利にモデル化される。頂点毎に、位置が物体座標系内で特定され、モデル化されている物体と相対的に頂点の位置を表現する。位置の他に、各頂点は様々なその他の属性が頂点に関連付けられている。一般に、頂点の属性は、頂点毎に特定された任意の特性を含むことがあり、たとえば、一部の実施形態では、頂点属性は、頂点の色、テクスチャ、透明度、照明、陰影及びアニメーションのような質を決定するために使用されるスカラ属性又はベクトル属性と、頂点に付随する幾何プリミティブとを含む。
【００２５】
[0031]上述されているようなプリミティブは、一般に、プリミティブの頂点を参照することによって定義され、単一の頂点が任意の個数のプリミティブに含まれていてもよい。一部の実施形態では、各頂点は（一意の識別子であればよい）インデックスが割り当てられ、プリミティブはプリミティブを構成する頂点に関するインデックスの順序付きリストを規定することによって定義される。プリミティブを定義するその他の技術（トライアングルストリップ又はトライアングルファンのような従来型の技術を含む）が使用されてもよい。
【００２６】
[0032]状態情報及びレンダリングコマンドは、レンダリングパイプライン２００の種々のステージの処理パラメータ及びアクションを定義する。フロントエンド２０４は、状態情報及びレンダリングコマンドを、（明示的に示されていない）制御経路を介して、レンダリングパイプライン２００の他のコンポーネントへ導く。当分野で公知のように、これらのコンポーネントは、処理中にアクセスされる種々の制御レジスタ中の値を記憶又は更新することにより、受信された状態情報に応答でき、パイプライン中で受信されたデータを処理することにより、レンダリングコマンドに応答できる。
【００２７】
[0033]フロントエンド２０４はジオメトリデータをデータアセンブラ２０６へ導く。データアセンブラ２０６は、ジオメトリデータをフォーマット化し、マルチスレッド型コアアレイ２０２中のジオメトリモジュール２１８への配信のためジオメトリデータを準備する。
【００２８】
[0034]ジオメトリモジュール２１８は、フロントエンド２０４によって供給された状態情報に応答して選択されているバーテックスシェーダープログラム及び／又はジオメトリシェーダープログラムを頂点データに関して実行するようにマルチスレッド型コアアレイ２０２内のプログラマブル処理エンジン（明示的に示されていない）に命令する。バーテックス及び／又はジオメトリシェーダープログラムは、当分野で公知のようなレンダリングアプリケーションによって指定することが可能であり、様々なシェーダープログラムが様々な頂点及び／又はプリミティブに適用され得る。使用されるべき（複数の）シェーダープログラムは、システムメモリ又はグラフィックスメモリに格納可能であり、当分野で公知の適当なレンダリングコマンド及び状態情報によってマルチスレッド型コアアレイ２０２によって特定され得る。一部の実施形態では、バーテックスシェーダー及び／又はジオメトリシェーダープログラムは、複数回の経路で実行可能であり、異なる処理演算が各経路中に実行される。バーテックスシェーダープログラム及び／又はジオメトリシェーダープログラムの１つずつは、経路の回数及び各経路中に実行されるべき演算を決定する。バーテックス及び／又はジオメトリシェーダープログラムは、頂点及びその他のデータに広範囲の数学演算及び論理演算を使用するアルゴリズムを実施可能であり、プログラムは、条件付き又は分岐実行経路と直接及び間接メモリアクセスとを含んでもよい。
【００２９】
[0035]バーテックスシェーダープログラム及びジオメトリシェーダープログラムは、照明効果及び陰影効果を含む多種多様の視覚効果を実施するために使用され得る。たとえば、簡単な実施形態では、バーテックスプログラムは、頂点をこの頂点の３次元物体座標系から３次元クリップ空間又はワールド空間座標系に変換する。この変換はシーン中の異なる物体の相対位置を定義する。一実施形態では、変換は、物体の物体座標系からクリップ空間座標に変換する変換行列をレンダリングコマンド及び／又は各物体を定義するデータに組み入れることによりプログラムされ得る。バーテックスシェーダープログラムは、物体を構成するプリミティブの各頂点にこの変換行列を適用する。より複雑なバーテックスシェーダープログラムは、照明及び陰影と、手続き型ジオメトリと、アニメーション演算とを含む多種多様の視覚効果を実施するため使用され得る。このような頂点毎の演算の多数の例は技術的に公知であり、詳細な説明は本発明の理解に重要ではないので省かれている。
【００３０】
[0036]ジオメトリシェーダープログラムは、ジオメトリシェーダープログラムが個々の頂点ではなくプリミティブ（頂点のグループ）に作用する点でバーテックスシェーダープログラムと異なる。よって、一部の事例では、ジオメトリプログラムは、新しい頂点を作成し、及び／又は、処理されている物体の組から頂点又はプリミティブを削除してもよい。一部の実施形態では、バーテックスシェーダープログラムを通る経路とジオメトリシェーダープログラムを通る経路はジオメトリデータを処理するために交互にされてもよい。
【００３１】
[0037]一部の実施形態では、バーテックスシェーダープログラム及びジオメトリシェーダープログラムは、マルチスレッド型コアアレイ２０２内の同じプログラマブル処理エンジンを使用して実行される。よって、ある時点で、所与の処理エンジンは、バーテックスシェーダーとして動作し、バーテックスプログラム命令を受信し実行し、他の時点で、同じ処理エンジンがジオメトリシェーダーとして動作し、ジオメトリプログラム命令を受信し実行することができる。処理エンジンはマルチスレッド化が可能であり、異なるタイプのシェーダープログラムを実行する異なるスレッドがマルチスレッド型コアアレイ２０２内で同時にフライト状態であり得る。
【００３２】
[0038]バーテックス及び／又はジオメトリシェーダープログラムが実行された後、ジオメトリモジュール２１８は、処理済みのジオメトリデータ（ＧＤＡＴＡ’）をセットアップモジュール２０８へ送る。一般的に従来型の設計でもよいセットアップモジュール２０８は、各プリミティブのクリップ空間又はスクリーン空間座標からエッジ方程式を生成し、エッジ方程式はスクリーン空間内の点がプリミティブの内側又は外側のいずれにあるかを判定するため有利に使用できる。
【００３３】
[0039]セットアップモジュール２０８は、各プリミティブ（ＰＲＩＭ）をラスタライザ２１０へ供給する。一般的に従来型の設計でもよいラスタライザ２１０は、たとえば、従来型の走査変換アルゴリズムを使用して、プリミティブによって覆われた（もしあるとしたら）画素を判定する。本明細書で使用されているように、「画素」（又は「フラグメント」）は、一般的に、単一のカラー値が決定されるべき２次元スクリーン空間内の領域を指し、画素の個数及び配置はレンダリングパイプライン２００の設定可能なパラメータでもよく、特有の表示装置のスクリーン解像度と相関していても相関していなくてもよい。当分野で公知のように、画素カラーは（たとえば、従来型のスーパーサンプリング技術又はマルチサンプリング技術を使用して）画素内の複数の場所でサンプリングされることがあり、一部の実施形態では、スーパーサンプリング又はマルチサンプリングはピクセルシェーダー内で取り扱われる。
【００３４】
[0040]プリミティブによって覆われた画素を判定した後、ラスタライザ２１０は、プリミティブによって覆われた画素のスクリーン座標（Ｘ，Ｙ）のリストと共に、プリミティブ（ＰＲＩＭ）をカラーアセンブリモジュール２１２に供給する。カラーアセンブリモジュール２１２は、プリミティブ、及び、ラスタライザ２１０から受信されたカバレッジ情報をプリミティブの頂点の属性（たとえば、色成分、テクスチャ座標、表面法線）と関連付け、スクリーン座標空間内の位置の関数として属性の一部又は全部を定義する平面方程式（又はその他の適当な式）を生成する。
【００３５】
[0041]これらの属性式は、プリミティブ内の任意の場所で属性の値を補間するためピクセルシェーダープログラムにおいて有利に使用でき、従来型の技術は式を生成するために使用され得る。たとえば、一実施形態では、カラーアセンブリモジュール２１２は、属性Ｕ毎に、Ｕ＝Ａｘ＋Ｂｙ＋Ｃという形式の平面方程式の係数Ａ、Ｂ及びＣを生成する。
【００３６】
[0042]カラーアセンブリモジュール２１２は、少なくとも１個の画素を覆うプリミティブ毎の属性式（たとえば、平面方程式の係数Ａ、Ｂ及びＣを含んでもよいＥＱＳ）と覆われた画素のスクリーン座標（Ｘ，Ｙ）のリストとをマルチスレッド型コアアレイ２０２内のピクセルモジュール２２４へ供給する。ピクセルモジュール２２４は、プリミティブによって覆われた画素毎に、フロントエンド２０４によって供給された状態情報に応答して選択される１つ以上のピクセルシェーダープログラムを実行するようにマルチスレッド型コアアレイ２０２内の（明示的に示されていない）プログラマブル処理エンジンに命令する。バーテックスシェーダープログラム及びジオメトリシェーダープログラムの場合と同様に、レンダリングアプリケーションは、所与の画素の組のため使用されるべきピクセルシェーダープログラムを指定することが可能である。ピクセルシェーダープログラムは、照明及び陰影効果と、反射と、テクスチャブレンディングと、手続き型テクスチャ生成などを含む多種多様な視覚効果を実施するために使用され得る。このような画素当たり演算の多数の実施例は技術的に公知であり、詳細な説明は本発明の理解に重要ではないので省かれている。ピクセルシェーダープログラムは、画素及びその他のデータに広範囲の数学演算及び論理演算を使用してアルゴリズムを実施可能であり、プログラムは、条件付き実行経路又は分岐実行経路と、直接及び間接メモリアクセスとを含んでもよい。
【００３７】
[0043]ピクセルシェーダープログラムは、バーテックスシェーダープログラム及び／又はジオメトリシェーダープログラムも実行する同じプログラマブル処理エンジンを使用してマルチスレッド型コアアレイ２０２で有利に実行される。よって、ある時点で、所与の処理エンジンは、バーテックスシェーダーとして動作し、バーテックスプログラム命令を受信し実行し、他の時点で、同じ処理エンジンがジオメトリシェーダーとして動作し、ジオメトリプログラム命令を受信し実行し、さらに他の時点で、同じ処理エンジンがピクセルシェーダーとして動作し、ピクセルシェーダープログラム命令を受信し実行する。マルチスレッド型コアアレイは、画素処理と頂点処理との間で固有の負荷均衡化を行うことが可能であり、アプリケーションがジオメトリ集中型（たとえば、多数の小さいプリミティブ）であるならば、マルチスレッド型コアアレイ２０２内の処理サイクルのより多くがバーテックスシェーダー及び／又はジオメトリシェーダーに振り向けられる傾向があり、アプリケーションが画素集中型である（たとえば、少数及び多数のプリミティブが、複数のテクスチャなどと共に、複雑なピクセルシェーダープログラムを使用して陰影を付けられる）ならば、処理サイクルのより多くがピクセルシェーダーに振り向けられる傾向がある。
【００３８】
[0044]画素又は画素のグループに対する処理が完了すると、ピクセルモジュール２２４は、処理済みの画素（ＰＤＡＴＡ）をＲＯＰ２１４へ供給する。一般的に従来型の設計でもよいＲＯＰ２１４は、ピクセルモジュール２２４から受信された画素値を、たとえば、グラフィックスメモリ１２４内にあるフレームバッファ２２６において構築中の画像の画素と統合する。一部の実施形態では、ＲＯＰ２１４は、描画されている画像に既に書き込まれた画素を用いて画素をマスクし、又は、描画されている画像に既に書き込まれた画素と新しい画素を融合することが可能である。奥行きバッファ、アルファバッファ、及び、ステンシルバッファは、（もしあれば）描画された画像に対する各入力画素の寄与度を決定するためにも使用され得る。各入力画素と既に記憶されている画素値との適切な組み合わせに対応する画素データＰＤＡＴＡ’はフレームバッファ２２６へ書き戻される。画像が完成すると、フレームバッファ２２６は表示装置へスキャンアウトされ、及び／又は、さらなる処理の対象とされ得る。
【００３９】
[0045]本明細書に記載されているレンダリングパイプラインは例示であり、変形及び変更が可能であることがわかる。パイプラインは、図示されているユニットのうちの様々なユニットを含んでもよく、処理イベントのシーケンスは本明細書に記載されているシーケントと異なってもよい。たとえば、一部の実施形態では、ラスタ化は、もしあるとするならば、三角形が覆う（又は部分的に覆う）ブロックがどれであるかを決定するために、スクリーン全体をブロック（たとえば、１６×１６画素）の単位で処理する「粗い」ラスタライザを用い、その後に、少なくとも部分的に覆われることが決定されるブロック内の個別の画素を処理する「細かい」ラスタライザを用いて、複数のステージで実行されてもよい。このような一実施形態では、細かいラスタライザはピクセルモジュール２２４内に収容されている。別の実施形態では、従来はＲＯＰによって実行される一部の演算が、画素データがＲＯＰ２１４へ転送される前に、ピクセルモジュール２２４内で実行されることもある。
【００４０】
[0046]さらに、本明細書に記載されているモジュールの一部又は全部の複数のインスタンスが並列に作動されてもよい。このような一実施形態では、マルチスレッド型コアアレイ２０２は、２個以上のジオメトリモジュール２１８と、並列に動作する等しい個数のピクセルモジュール２２４とを含む。各ジオメトリモジュール及びピクセルモジュールは、マルチスレッド型コアアレイ２０２内の処理エンジンの異なる一部を共同で制御する。
【００４１】
マルチスレッド型コアアレイコンフィギュレーション
[0047]一実施形態では、マルチスレッド型コアアレイ２０２は、様々に組み合わされたバーテックスシェーダープログラム、ジオメトリシェーダープログラム、及び／又は、ピクセルシェーダープログラムの非常に多数のインスタンスの同時実行をサポートする高度な並列アーキテクチャを提供する。図３は本発明の実施形態によるマルチスレッド型コアアレイ２０２のブロック図である。
【００４２】
[0048]本実施形態では、マルチスレッド型コアアレイ２０２は、ある個数（Ｎ）の処理クラスタ３０２を含む。本明細書では、オブジェクトのようなマルチプルインスタンスは、必要に応じて、オブジェクトを特定する参照番号とインスタンスを特定する括弧付き番号とを用いて示されている。処理クラスタの任意の個数Ｎ（たとえば、１、４、８又はその他の任意の個数）が与えられてもよい。図３では、１個の処理クラスタ３０２が詳細に示されているが、他の処理クラスタ３０２も同様の設計又は同一の設計であることが理解されるべきである。
【００４３】
[0049]各処理クラスタ３０２は、（図２のジオメトリモジュール２１８を実施する）ジオメトリコントローラ３０４と、（図２のピクセルモジュール２２４を実施する）ピクセルコントローラ３０６とを含む。ジオメトリコントローラ３０４及びピクセルコントローラ３０６は、それぞれが、コアインターフェイス３０８と通信する。コアインターフェイス３０８は、マルチスレッド型コアアレイ２０２の処理エンジンを含むある個数（Ｍ）のコア３１０を制御する。任意の個数Ｍ（たとえば、１、２、４又はその他の個数）のコア３１０が単一のコアインターフェイスに接続されてもよい。各コア３１０は、バーテックススレッド、ジオメトリスレッド及びピクセルスレッドの組を含む多数の（たとえば、１００個以上の）同時実行スレッド（ここで、用語「スレッド」は特有の入力データの組に関して動く特有のプログラムのインスタンスを指している）をサポートする能力をもつマルチスレッド型実行コアとして有利に実施される。一実施形態では、各コア３１０は、Ｐ個のスレッドを並列に実行するためにＰウェイＳＩＭＤアーキテクチャを実施し、ここで、Ｐは任意の整数（たとえば、８、１６、３２）であり、Ｐ個のスレッドからなる個数Ｇ（たとえば、１８、２４など）のグループを同時に管理する能力がある。コア３１０の詳細な説明は、あらゆる目的のため参照によって全体がそのまま本明細書に組み込まれる、２００５年１２月１９日に出願された米国仮出願第６０／７５２，２６５号に見ることができる。
【００４４】
[0050]コアインターフェイス３０８は、コア３１０の間で共用されるテクスチャパイプライン３１４をさらに制御する。一般的に従来型の設計でもよいテクスチャパイプライン３１４は、テクスチャ座標を受信し、メモリからテクスチャ座標に対応するテクスチャデータをフェッチし、種々のアルゴリズムに応じてテクスチャデータをフィルタ処理するように構成された論理回路を有利に含む。バイリニアフィルタリング及びトリリニアフィルタリングを含む従来型のフィルタリングアルゴリズムが使用されてもよい。コア３１０がコアのスレッドのうちの１つでテクスチャ命令を受けるとき、コアは、コアインターフェイス３０８を介してテクスチャ座標をテクスチャパイプライン３１４へ供給する。テクスチャパイプライン３１４はテクスチャ命令を処理し、コアインターフェイス３０８を介して結果をコア３１０へ返す。パイプライン３１４によるテクスチャ処理は非常に多数のクロックサイクルを消費することがあり、スレッドがテクスチャ結果を待っている間に、コア３１０は他のスレッドを有利に実行し続ける。
【００４５】
[0051]動作中に、データアセンブラ２０６（図２）は、ジオメトリデータＧＤＡＴＡを処理クラスタ３０２へ供給する。一実施形態では、データアセンブラ２０６は、ジオメトリデータの入力ストリームを部分に分割し、たとえば、実行リソースの可用性に基づいて、ジオメトリデータの次の部分を受信する処理クラスタ３０２を選択する。その部分は選択された処理クラスタ３０２中のジオメトリコントローラ３０４へ配信される。
【００４６】
[0052]ジオメトリコントローラ３０４は、受信されたデータをコアインターフェイス３０８へ転送し、コアインターフェイスは頂点データをコア３１０にロードし、次に、適切なバーテックスシェーダープログラムを始めるようにコア３１０に命令する。バーテックスシェーダープログラムの完了時に、コアインターフェイス３０８はジオメトリコントローラ３０４に信号を送る。ジオメトリシェーダープログラムが実行されるべきならば、ジオメトリコントローラ３０４は、ジオメトリシェーダープログラムを始めるようにコアインターフェイス３０８に命令する。一部の実施形態では、処理済みの頂点データは、バーテックスシェーダープログラムの完了時にジオメトリコントローラ３０４へ返送され、ジオメトリコントローラ３０４は、ジオメトリシェーダープログラムを実行する前に、データを再びロードするようにコアインターフェイス３０８に命令する。バーテックスシェーダープログラム及び／又はジオメトリシェーダープログラムの完了後、ジオメトリコントローラ３０４は、処理済みのジオメトリデータ（ＧＤＡＴＡ’）を図２のセットアップモジュール２０８へ供給する。
【００４７】
[0053]画素ステージで、カラーアセンブリモジュール２１２（図２）は、プリミティブと、プリミティブによって覆われた画素の画素座標（Ｘ，Ｙ）とに関する属性式ＥＱＳを処理クラスタ３０２へ供給する。一実施形態では、カラーアセンブリモジュール２１２は、カバレッジデータの入力ストリームを部分に分割し、たとえば、実行リソースの可用性又はスクリーン座標中のプリミティブの場所に基づいて、データの次の部分を受信すべき処理クラスタ３０２を選択する。その部分は選択された処理クラスタ３０２中のピクセルコントローラ３０６へ配信される。
【００４８】
[0054]ピクセルコントローラ３０６は、データをコアインターフェイス３０８へ配信し、コアインターフェイスは画素データをコア３１０にロードし、次に、ピクセルシェーダープログラムを始めるようにコア３１０に命令する。コア３１０がマルチスレッド型であるならば、ピクセルシェーダープログラム、ジオメトリシェーダープログラム、及び、バーテックスシェーダープログラムは、すべてが同じコア３１０中で同時に実行され得る。ピクセルシェーダープログラムの完了時に、コアインターフェイス３０８は処理済み画素データをピクセルコントローラ３０６へ配信し、ピクセルコントローラは画素データＰＤＴＡをＲＯＰユニット２１４（図２）へ転送する。
【００４９】
[0055]本明細書に記載されているマルチスレッド型コアアレイは例示であり、変形及び変更が可能であることがわかる。任意の個数の処理クラスタが設けられ、各処理クラスタは任意の個数のコアを含んでもよい。一部の実施形態では、あるタイプのシェーダーは、ある特定の処理クラスタ又はある特定のコア中での実行に制限されてもよく、たとえば、ジオメトリシェーダーは各処理クラスタのコア３１０（０）中での実行に制限されてもよい。このような設計上の選択は、当分野で公知のように、ハードウェアサイズ、及び、複雑さと性能の対比を考慮して行われてもよい。共用テクスチャパイプラインもまた随意的であり、一部の実施形態では、各コアは、コアの固有のテクスチャパイプラインを有してもよく、又は、テクスチャ計算を実行するために汎用機能ユニットを利用してもよい。
【００５０】
[0056]処理されるべきデータは様々な方法で処理クラスタへ分配され得る。一実施形態では、データアセンブラ（又はジオメトリデータのその他のソース）及びカラーアセンブリモジュール（又はピクセルシェーダー入力データのその他のソース）は、種々のタイプの付加的なスレッドを取り扱うために処理クラスタ又は個別のコアの可用性を示す情報を受信し、スレッド毎に宛先処理クラスタ又はコアを選択する。別の実施形態では、入力データは、データを処理する能力をもつ処理クラスタがデータを受け入れるまで、ある処理クラスタから次の処理クラスタへ転送される。さらに別の実施形態では、処理クラスタは、処理されるべき画素のスクリーン座標のような入力データの特性に基づいて選択される。
【００５１】
[0057]マルチスレッド型コアアレイは、レンダリング画像に関係している、又は、関係していないことがある汎用計算を実行するためにも利用され得る。一実施形態では、データ並列分解において表現され得る計算は、シングルコア中で実行するスレッドのアレイとして、マルチスレッド型コアアレイによって取り扱われ得る。このような計算の結果は、フレームバッファに書き込まれ、システムメモリにもう一度読み取られてもよい。
【００５２】
ピクセルシェーダー作業の割り付け
[0058]本発明の実施形態によれば、ピクセルシェーダープログラムによって処理されるべき画素は、画像エリア内の画素の位置に基づいて処理クラスタ３０２（図３）へ向けられる。たとえば、画像エリアはある数のタイルに分割され得る。各タイルは、１つのクラスタに関連付けられたタイルが画像エリアの全体に散在させられるように、処理クラスタ３０２のうちの１つが関連付けられている（すなわち、１つの処理クラスタに関連付けられているタイルの少なくとも一部は相互に隣接していない）。
【００５３】
[0059]図４は、本発明の実施形態による、多数のタイル４０２への画像エリア４００の１つの可能なタイル化を示している。各タイル４０２は、たとえば、１６×１６個の画素でもよく、又は、その他の都合のよいサイズでもよい。本実施形態では、図３のマルチスレッド型コアアレイ２０２は、８個の処理クラスタ３０２（０）〜３０２（７）を含む。図４の各タイル４０２は、当該タイル内の画素を処理する処理コア３０２（ｉ）を示す番号ｉ（０〜７）を格納している。図４においてわかるように、各処理クラスタ３０２は、画像エリア４００内の等しい（又はほぼ等しい）個数のタイル４０２が割り当てられ、各クラスタ３０２に割り当てられたタイルは相互に隣接していない。多数のグラフィックアプリケーションに対し、このような分配作業は、処理クラスタ３０２の間で適切な負荷均衡化を行うことが期待される。適当な画素分配論理は、レンダリングパイプライン２００、たとえば、図２のカラーアセンブリモジュール２１２に組み込まれ得る。
【００５４】
[0060]図４に示されているタイル化は例示であり、変形及び変更が可能であることがわかるであろう。タイルはどのようなサイズでもよい。一部の実施形態では、タイルのサイズ及び個数は設定可能であり、サイズは、マルチサンプリングモードが使用されるかどうかといったアプリケーション特性に基づいて選択される。各処理クラスタに割り当てられるタイルの配置は必要に応じて変化し得る。
【００５５】
[0061]タイルは、特有のＧＰＵに存在する処理クラスタの総数までの任意の個数の処理クラスタに割り当てられる。一部の実施形態では、タイルは、全部に満たない数の処理クラスタに割り当てられる。したがって、ＧＰＵは、ピクセルスレッドを処理するために、ＧＰＵの処理クラスタの一部だけを使用して画像を描画することが可能である。少なくとも１個の処理クラスタが利用可能である限り、ＧＰＵは、スループットが低下しているが、画像を描画することが可能である。一部のクラスタのピクセルスレッドの処理が無効にされた状態で実行することは、たとえば、（一部のコア又はクラスタは、他のコア又はクラスタが動作している間に、電力が低下する）省電力モードでの動作、（様々なＧＰＵの可用性を要求しない）最低限の性能要件の決定、及び／又は、一方又は別のコア内の欠陥に対する許容度の提供のために役立つことがある。
【００５６】
[0062]一部の代替的な実施形態では、タイルは、処理クラスタ３０２ではなく、特有のコア３１０に割り当てられる。
【００５７】
フレームバッファへのピクセルシェーダーカップリング
[0063]一部の実施形態では、図２に提案されている集中型ＲＯＰ２１４ではなく、図３の各ピクセルコントローラ３０６は、画素を図２のフレームバッファ２２６へ通信する固有のＲＯＰを含む。このような実施形態では、処理クラスタ３０２からフレームバッファへのカップリングが行われる。
【００５８】
[0064]Ｎ個の処理クラスタを含む一実施形態では、フレームバッファ２２６はＮ個の区画に区分される。各クラスタ３０２はＮ個の区画のうちの別々の１区画に連結されている。
【００５９】
[0065]図５は本発明の実施形態による処理クラスタ３０２とフレームバッファ５００との間のカップリングを説明する略ブロック図である。図２のフレームバッファ２２６は複数のフレームバッファ５００を含むことがあり、各フレームバッファ５００は同じ画像に対し画素単位で指定された量を格納することが理解されるべきである。たとえば、一実施形態では、フレームバッファ２２６は、Ｚバッファと、（たとえば、赤、緑及び青の色成分のための）色成分バッファと、透明度（アルファ）バッファとを含む。任意の個数のフレームバッファ５００が設けられ、本明細書で使用されるような「画素」は、所与の表示装置のアクティブ画素の個数に対応する場合と対応しない場合とがある画像内のサンプリング場所を示すことが理解されるべきである。簡単にするため、唯一のフレームバッファ５００だけが表されているが、同じ区分法がある画像に対する各フレームバッファに適用され得ることが理解されるべきである。
【００６０】
[0066]フレームバッファ５００は、Ｎ個の区画５０２に（物理的又は論理的に）区分けされ、各区画は画像中の画素の少なくとも１／Nのデータを格納するために十分な大きさである。N個の処理クラスタ３０２のそれぞれは、N個の区画５０２のうちの１つに連結されている。よって、処理クラスタ３０２（０）は、この処理クラスタの出力画素データのすべてを区画５０２（０）に格納し、処理クラスタ３０２（１）は区画５０２（１）に格納し、以下同様である。所与の処理クラスタ３０２によって処理されるタイルが隣接しない範囲で、所与のフレームバッファ区画５０２中のデータは隣接しないタイルに由来することに注意を要する。表示（スキャンアウト）論理は、フレームバッファ５００にアクセスするときに、データの正しい表示順を守る方が有利であり、特に、区画が順次に読み出されることを必要としない。
【００６１】
[0067]上述されているように、一部の実施形態では、全部の処理コア３０２に満たない数の処理コアが画素を生成するため使用されてもよい。図５に示されている実施形態では、処理クラスタ３０２（０）だけが画素をフレームバッファ区画５０２（０）へ供給する。したがって、処理クラスタ３０２（０）が画素を生成するため作動されていないならば、フレームバッファ区画５０２（０）は使用されない。画像エリアは、再タイル化可能であり、又は、エリアがＮ−１個の処理クラスタの間で分割されるように、タイルが処理クラスタ３０２（１）〜３０２（Ｎ−１）の間で再割り当て可能である。一部の実施形態では、たとえば、フレームバッファ区画５０２（１）〜５０２（Ｎ−１）が元のサンプリング分解能で画像の画素データの全部を格納するために十分な空間を提供しないならば、サンプリング分解能は削減されなくてもよい。区画が物理的ではなく論理的である実施形態では、フレームバッファ５００は利用可能な処理クラスタ３０２の個数と一致するように再区分され得る。
【００６２】
[0068]代替的な実施形態では、各処理クラスタは複数のフレームバッファ区画にアクセス可能である。図６は本発明の実施形態による処理クラスタ３０２とフレームバッファ６００との間のカップリングを説明する略ブロック図である。図２のフレームバッファ２２６は複数のフレームバッファ６００を含むことがあり、各フレームバッファ６００は、フレームバッファ５００に関して上述されているように、同じ画像に対し画素単位で指定された量を格納することが理解されるべきである。いかなる個数のフレームバッファ６００が設けられてもよいことが理解されるべきである。簡単にするため、唯一のフレームバッファ６００だけが示されているが、同じ区分法がある画像に対する各フレームバッファに適用され得ることが理解されるべきである。
【００６３】
[0069]フレームバッファ６００はＢ個の区画６０２に（物理的又は論理的に）区分けされ、ここで、Ｂは処理クラスタ３０２の個数Ｎと等しくても異なっていてもよい。処理クラスタ３０２はクロスバー６０４を介して区画６０２に連結されている。各クラスタ３０２は、Ｂ個の区画６０２のうちのいずれか１個（又は１個以上）の区画に画素データを書き込むことが可能である。
【００６４】
[0070]本実施形態では、クロスバー６０４は設定可能であり、処理クラスタ３０２からフレームバッファ区画６０２へのカップリングが必要に応じて変更されることを可能にする。たとえば、上述されているように、一部の実施形態では、全部の処理コア３０２に満たない数の処理コアが画素を生成するため使用されてもよい。図６に示された実施形態では、処理コア３０２（０）が無効状態にされるならば、クロスバー６０４は、すべてのフレームバッファ区画６０２が一方又は別の処理コア３０２から依然としてアクセスできるように再構成され得る。表示（スキャンアウト）ロジックは、クロスバー６０４のコンフィギュレーション又は処理コア３０２へのタイルの割り当てとは無関係にフレームバッファデータが正確にスキャンアウトされるように、有利には設定可能である。
【００６５】
[0071]複数のフレームバッファ（たとえば、Ｚバッファ、カラーバッファ、アルファバッファなど）が存在する場合、各フレームバッファは上述されている方法でＢ個の区画に区分けされてもよい。一部の実施形態では、区画の個数はすべてのフレームバッファに対し同じではないが、たとえば、Ｚバッファはカラーバッファより多数又は少数の区画を有してもよい。
【００６６】
さらなる実施形態
[0072]本発明は特定の実施形態に関して説明されているが、当業者は数多くの変形例が可能であることを認める。したがって、本発明は特定の実施形態に関して説明されているが、本発明が特許請求の範囲に記載された事項の範囲内のすべての変更及び均等物に及ぶように意図されていることが認められる。
【図１】
0005345226.tif 000002
【図２】
0005345226.tif 000003
【図３】
0005345226.tif 000004
【図４】
0005345226.tif 000005
【図５】
0005345226.tif 000006
【図６】
0005345226.tif 000007