(57)【特許請求の範囲】
【請求項１】
命令に応じて算術演算を実行するため動作可能である複数台の算術論理ユニット（ＡＬＵ）を備えるグラフィックスプロセッサユニットパイプラインであって、
前記命令がピクセルデータを含む複数組のオペランドの組に適用され、前記複数組のオペランドの組中のオペランドの各組が複数個のピクセルのうちの１個ずつのピクセルおよび１個ずつの条件付き実行ビットと関連付けられ、
前記複数個のピクセルが一のピクセルを含み、該ピクセルが該ピクセルのためのピクセルデータの複数のサブセットを含み、
前記ピクセルのためのピクセルデータのあるサブセットと関連付けられた第１の条件付き実行ビットと、前記ピクセルのためのピクセルデータの別のサブセットと関連付けられた第２の条件付き実行ビットと、が異なる値を保有しており、
前記複数個のピクセルの一のピクセルのピクセルデータのサブセットは、当該グラフィックスプロセッサユニットパイプラインにおいて、前記複数個のピクセルの他のピクセルのピクセルデータのサブセットとインターリーブされ、
前記各条件付き実行ビットは、前記インターリーブされた対応するピクセルデータのサブセット当たりに割り当てられた１ビットであり、前記インターリーブされた対応するピクセルデータのサブセットを含むピクセルパケットに含まれており、
前記複数組のオペランドの組中の第１のオペランドの組と関連付けられた条件付き実行ビットの値が、前記第１のオペランドの組中の前記ピクセルデータのサブセットが前記ＡＬＵによってどのように処理されるかを決定する、グラフィックスプロセッサユニットパイプライン。
【請求項２】
グラフィックスプロセッサユニットにおけるグラフィックスパイプラインであって、
データフェッチステージと、
前記データフェッチステージに連結された複数台の算術論理ユニット（ＡＬＵ）と、
を備え、
連続したクロックサイクル中で第１の命令が前記ＡＬＵのための第１のオペランドおよび前記ＡＬＵのための第２のオペランドを特定し、
前記第１のオペランドが第１のピクセルおよび第１の条件付き実行ビットと関連付けられ、前記第２のオペランドが第２のピクセルおよび第２の条件付き実行ビットと関連付けられ、
前記第１のピクセルが、前記第１のピクセルのためのピクセルデータの複数のサブセットを含み、
前記第２のピクセルが、前記第２のピクセルのためのピクセルデータの複数のサブセットを含み、
前記第１のピクセルのためのピクセルデータのあるサブセットと関連付けられた条件付き実行ビットと、前記第１のピクセルのためのピクセルデータの別のサブセットと関連付けられた条件付き実行ビットと、が異なる値を保有しており、
前記第１の条件付き実行ビットの値が前記第１のオペランドが前記ＡＬＵによって演算されるかどうかを決定し、
前記第２の条件付き実行ビットの値が前記第２のオペランドが前記ＡＬＵによって演算されるかどうかを決定し、
前記第１のピクセルのピクセルデータのサブセットが当該グラフィックスパイプラインにおいて前記第２のピクセルのピクセルデータのサブセットとインターリーブされ、
前記第１及び第２の条件付き実行ビットの各々は、前記インターリーブされた対応するピクセルデータのサブセット当たりに割り当てられた１ビットであり、前記インターリーブされた対応するピクセルデータのサブセットを含むピクセルパケットに含まれている、
グラフィックスパイプライン。
【請求項３】
前記ＡＬＵが複数個のフリップフロップを備え、
前記第１の条件付き実行ビットの前記値が前記第１のオペランドが前記ＡＬＵによってラッチされるかどうかを決定し、
前記第２の条件付き実行ビットの前記値が前記第２のオペランドが前記ＡＬＵによってラッチされるかどうかを決定する、
請求項２に記載のグラフィックスパイプライン。
【請求項４】
前記フリップフロップがゲート化されたクロックを備え、
前記ゲート化されたクロックが前記第１の条件付き実行ビットおよび前記第２の条件付き実行ビットによって順番に制御される、
請求項３に記載のグラフィックスパイプライン。
【請求項５】
前記第１の条件付き実行ビットの前記値が前記第１の命令より時間的に先行した第２の命令に応じて実行された演算の結果に応じてセットされる、請求項２に記載のグラフィックスパイプライン。
【請求項６】
前記複数台のＡＬＵに結合された複数のバッファを更に備え、複数のバッファは、前記複数台のＡＬＵによって演算されているピクセルデータを格納する第１のバッファと、前記複数台のＡＬＵによって既に演算されたピクセルデータを格納する第２のバッファと、前記複数台のＡＬＵによって演算されるべきピクセルデータを格納する第３のバッファと、を備える、請求項１に記載のグラフィックスプロセッサユニットパイプライン。
【請求項７】
前記複数台のＡＬＵに結合された複数のバッファを更に備え、複数のバッファは、前記複数台のＡＬＵによって演算されているピクセルデータを格納する第１のバッファと、前記複数台のＡＬＵによって既に演算されたピクセルデータを格納する第２のバッファと、前記複数台のＡＬＵによって演算されるべきピクセルデータを格納する第３のバッファと、を備える、請求項２〜５のいずれか一項に記載のグラフィックスパイプライン。
【発明の詳細な説明】
【技術分野】
【０００１】
[0001]本出願は、Ｔ．Ｂｅｒｇｌａｎｄ等により出願され、発明の名称が“Ｂｕｆｆｅｒｉｎｇ  Ｄｅｓｅｒｉａｌｉｚｅｄ  Ｐｉｘｅｌ  Ｄａｔａ  ｉｎ  ａ  Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｏｒ  Ｕｎｉｔ  Ｐｉｐｅｌｉｎｅ”であり、代理人書類番号がＮＶＩＤ−Ｐ００３２１９であり、本発明の譲受人に譲渡され、参照によって全体が本明細書に組み込まれている米国特許出願に関連している。
【０００２】
[0002]本出願は、Ｔ．Ｂｅｒｇｌａｎｄ等により出願され、発明の名称が“Ｓｈａｒｅｄ  Ｒｅａｄａｂｌｅ  ａｎｄ  Ｗｒｉｔｅａｂｌｅ  Ｇｌｏｂａｌ  Ｖａｌｕｅｓ  ｉｎ  ａ  Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｏｒ  Ｕｎｉｔ  Ｐｉｐｅｌｉｎｅ”であり、代理人書類番号がＮＶＩＤ−Ｐ００３４７６であり、本発明の譲受人に譲渡され、参照によって全体がそのまま本明細書に組み込まれている米国特許出願関連している。
【０００３】
[0003]本発明の実施形態は一般的にコンピュータグラフィックスに関係する。
【背景技術】
【０００４】
[0004]近年のコンピュータ性能における進歩は、グラフィックスシステムがパーソナルコンピュータ、ホームビデオゲームコンピュータ、ハンドヘルド型装置などを使用してより現実的なグラフィカルイメージを提供することを可能にさせている。このようなグラフィックスシステムでは、複数のプロシージャがグラフィックスプリミティブをシステムのスクリーンにレンダリングまたは描画するために実行される。グラフィックスプリミティブは、点、線、多角形などのようなグラフィックの基本コンポーネントである。レンダリングされたイメージは、これらのグラフィックスプリミティブの組み合わせを用いて形成される。多数のプロシージャが３次元（３−Ｄ）グラフィックスレンダリングを実行するために利用されてもよい。
【０００５】
[0005]専用グラフィックスプロセッシングユニット（ＧＰＵ）はグラフィックスレンダリングプロシージャが実行される速度を増加させるために開発されている。ＧＰＵは典型的に１個以上のレンダリングパイプラインを組み込む。各パイプラインは、グラフィックス命令／データの高速実行のため設計された複数のハードウェアに基づく機能ユニットを含む。一般に、命令／データはパイプラインのフロントエンドに供給され、計算結果がパイプラインのバックエンドに現れる。ＧＰＵのハードウェアに基づく機能ユニット、キャッシュメモリ、ファームウェアなどは、基本グラフィックスプリミティブに演算を行い、リアルタイムレンダリングされた３−Ｄイメージを生成するように設計される。
【発明の開示】
【発明が解決しようとする課題】
【０００６】
[0006]電話機、個人情報端末（ＰＤＡ）、および、その他の装置のような携帯型またはハンドヘルド型装置における３−Ｄグラフィカルイメージのレンダリングへの関心が高まっている。しかし、携帯型またはハンドヘルド型装置は、一般に、デスクトップコンピュータのようなフルサイズ型装置と比べて制限がある。たとえば、携帯型装置は典型的にバッテリー給電方式であるので、電力消費が懸案事項である。さらに、携帯型装置のサイズはより小さいので、携帯型装置の内部で利用可能な空間が制限される。要望は、このような装置の制限の範囲内で、ハンドヘルド型装置において現実的な３−Ｄグラフィックスレンダリングを迅速に実行することである。
【課題を解決するための手段】
【０００７】
[0007]本発明の実施形態はグラフィックスプロセッサユニットパイプラインにおいてデータを迅速かつ効率的に処理する方法およびシステムを提供する。
【０００８】
[0008]ピクセルのグループに対するピクセルデータは、算術論理ユニット（ＡＬＵ）までグラフィックスパイプラインの下方へ集団で進む。ＡＬＵでは、同じ命令は、ＳＩＭＤ（単一命令多重データ）形式でグループ内の全ピクセルに適用される。たとえば、所与のクロックサイクルで、命令は、ピクセルのグループ内の１番目のピクセルのためのピクセルデータから選択されたオペランドの組を指定する。次のクロックサイクルで、命令はグループ内の２番目のピクセルのためのピクセルデータから選択された別のオペランドの組を指定し、以下同様に続く。本発明の実施形態によれば、条件付き実行ビットは、オペランドの各組と関連付けられている。条件付き実行ビットの値は、それぞれのオペランドの組がＡＬＵによって処理される方法（処理されるかどうか）を決定する。
【０００９】
[0009]一般に、条件付き実行ビットが非実行にセットされるならば、その条件付き実行ビットと関連付けられたピクセルデータはＡＬＵによって演算されない。具体的には、一実施形態では、条件付き実行ビットが非実行にセットされるならば、ピクセルデータはＡＬＵによってラッチされず、このことは、フリップフロップがピクセルデータをクロックインしないようにＡＬＵへの入力フリップフロップをゲートすることにより達成され得る。したがって、ＡＬＵは、状態を変化させず、ＡＬＵ内のラッチ（フリップフロップ）は前のクロックサイクルのときの状態と同じ状態のままである。電力はフリップフロップにクロックを入力しないことにより節約され、電力はさらに、組み合わせロジックへの入力がそのまま保持され、したがって、トランジスタが状態を変化させないので節約される（フリップフロップはある状態から別の状態へ遷移せず、条件付きビットが非実行にセットされるならば、オペランドはあるクロックから次のクロックまでそのまま保持される）。
【００１０】
[0010]要約すると、命令はピクセルのグループの全体に供給されるが、必ずしもグループ内の各画素で命令を実行しなくてもよい。パイプラインの中で適切な順序を維持するため、命令はグループ内の各画素に供給され、オペランドの組がグループ内の画素毎に選択される。しかし、オペランドの組と関連付けられた条件付き実行ビットが非実行にセットされるならば、これらのオペランドはＡＬＵによって演算されず、関連付けられた命令はオペランドに関して実行されず、その代わりに、下流のオペランドが複製される。その結果として、フリップフロップは必ずしもクロック入力されず、組み合わせロジックは必ずしも切り替えられないので、電力を節約する。したがって、本発明の実施形態はハンドヘルド型およびその他の携帯型のバッテリー作動型装置におけるグラフィックス処理に好適である（ただし、本発明はこれらの種類の装置での使用に制限されない）。
【００１１】
[0011]本発明の種々の実施形態の上記の目的および利点とその他の目的および利点とは、種々の図面に例示されている以下の実施形態の詳細な説明を読んだ後に、当業者によって理解されるであろう。
【００１２】
[0012]本発明は、類似した参照番号が類似した要素を参照する添付図面中の図に一例として、かつ、非限定的に示されている。
【発明を実施するための最良の形態】
【００１３】
[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]本発明の特定の実施形態の上記の記載は、例示と説明の目的のため提示されている。これらの記載は、網羅的であること、または、発明を開示された形式と全く同一のものに限定することが意図されず、多数の変形例および変更が上記の教示内容の観点から可能である。たとえば、本発明の実施形態は、図２のＧＰＵ１１０と形式または機能が相違するＧＰＵ上で実施され得る。実施形態は、発明の原理および発明の実際的なアプリケーションを最もよく説明するために選択され、記載されているので、当業者が発明と、考慮されている特有の用途に適するように様々な変形を伴う様々な実施形態とを最もよく利用することが可能である。本発明の範囲は特許請求の範囲に記載された事項およびそれらの均等物によって定義されることが意図されている。
【図面の簡単な説明】
【００５５】
【図１】本発明の一実施形態によるコンピュータシステムのコンポーネントを表すブロック図である。
【図２】本発明の一実施形態によるグラフィックスプロセッシングユニット（ＧＰＵ）のコンポーネントを表すブロック図である。
【図３】本発明の一実施形態によるＧＰＵパイプラインにおけるステージを示す図である。
【図４】本発明の一実施形態によるピクセルデータの一連の行を示す図である。
【図５】本発明の一実施形態によるＧＰＵ内の算術論理ユニットのブロック図である。
【図６】本発明の一実施形態による算術論理ユニットを出るピクセルデータを示す図である。
【図７Ａ】本発明の一実施形態によるＡＬＵの種々のステージにおけるピクセルデータを示す図である。
【図７Ｂ】本発明の実施形態によるＡＬＵの種々のステージを示す図である。
【図８】本発明の一実施形態によるピクセルデータを処理するコンピュータで実施される方法のフローチャートである。
【符号の説明】
【００５６】
１００…コンピュータシステム、１０１…中央プロセッシングユニット、１１０…グラフィックスプロセッサユニット、１１４…グラフィックスメモリ、１１５…システムメモリ、２１０…グラフィックスパイプライン、２２０…プログラムシーケンサ、２３０…算術論理ユニット、２４０…データ書き込みコンポーネント、３３０…データフェッチコンポーネント、４２０…サイドバンド情報、５１０…デシリアライザ、５５０…シリアライザ
【図１】
0005435253.tif 000002
【図２】
0005435253.tif 000003
【図３】
0005435253.tif 000004
【図４】
0005435253.tif 000005
【図５】
0005435253.tif 000006
【図６】
0005435253.tif 000007
【図７Ａ】
0005435253.tif 000008
【図７Ｂ】
0005435253.tif 000009
【図８】
0005435253.tif 000010