説明

グラフィックスプロセッサユニットパイプラインにおける条件付き実行ビット

【課題】ハンドヘルド型装置において現実的な3−Dグラフィックスレンダリングを迅速に実行すること。
【解決手段】グラフィックスプロセッサユニットにおける算術論理ステージはある程度の台数の算術論理ユニット(ALU)を含む。命令は異なるピクセルと関連付けられているピクセルデータを備えるオペランドの組に適用される。条件付き実行ビットの値はオペランドの組の中のピクセルデータがALUによってどのように処理されるかを決定する。

【発明の詳細な説明】
【技術分野】
【0001】
[0001]本出願は、T.Bergland等により出願され、発明の名称が“Buffering Deserialized Pixel Data in a Graphics Processor Unit Pipeline”であり、代理人書類番号がNVID−P003219であり、本発明の譲受人に譲渡され、参照によって全体が本明細書に組み込まれている米国特許出願に関連している。
【0002】
[0002]本出願は、T.Bergland等により出願され、発明の名称が“Shared Readable and Writeable Global Values in a Graphics Processor Unit Pipeline”であり、代理人書類番号がNVID−P003476であり、本発明の譲受人に譲渡され、参照によって全体がそのまま本明細書に組み込まれている米国特許出願関連している。
【0003】
[0003]本発明の実施形態は一般的にコンピュータグラフィックスに関係する。
【背景技術】
【0004】
[0004]近年のコンピュータ性能における進歩は、グラフィックスシステムがパーソナルコンピュータ、ホームビデオゲームコンピュータ、ハンドヘルド型装置などを使用してより現実的なグラフィカルイメージを提供することを可能にさせている。このようなグラフィックスシステムでは、複数のプロシージャがグラフィックスプリミティブをシステムのスクリーンにレンダリングまたは描画するために実行される。グラフィックスプリミティブは、点、線、多角形などのようなグラフィックの基本コンポーネントである。レンダリングされたイメージは、これらのグラフィックスプリミティブの組み合わせを用いて形成される。多数のプロシージャが3次元(3−D)グラフィックスレンダリングを実行するために利用されてもよい。
【0005】
[0005]専用グラフィックスプロセッシングユニット(GPU)はグラフィックスレンダリングプロシージャが実行される速度を増加させるために開発されている。GPUは典型的に1個以上のレンダリングパイプラインを組み込む。各パイプラインは、グラフィックス命令/データの高速実行のため設計された複数のハードウェアに基づく機能ユニットを含む。一般に、命令/データはパイプラインのフロントエンドに供給され、計算結果がパイプラインのバックエンドに現れる。GPUのハードウェアに基づく機能ユニット、キャッシュメモリ、ファームウェアなどは、基本グラフィックスプリミティブに演算を行い、リアルタイムレンダリングされた3−Dイメージを生成するように設計される。
【発明の開示】
【発明が解決しようとする課題】
【0006】
[0006]電話機、個人情報端末(PDA)、および、その他の装置のような携帯型またはハンドヘルド型装置における3−Dグラフィカルイメージのレンダリングへの関心が高まっている。しかし、携帯型またはハンドヘルド型装置は、一般に、デスクトップコンピュータのようなフルサイズ型装置と比べて制限がある。たとえば、携帯型装置は典型的にバッテリー給電方式であるので、電力消費が懸案事項である。さらに、携帯型装置のサイズはより小さいので、携帯型装置の内部で利用可能な空間が制限される。要望は、このような装置の制限の範囲内で、ハンドヘルド型装置において現実的な3−Dグラフィックスレンダリングを迅速に実行することである。
【課題を解決するための手段】
【0007】
[0007]本発明の実施形態はグラフィックスプロセッサユニットパイプラインにおいてデータを迅速かつ効率的に処理する方法およびシステムを提供する。
【0008】
[0008]ピクセルのグループに対するピクセルデータは、算術論理ユニット(ALU)までグラフィックスパイプラインの下方へ集団で進む。ALUでは、同じ命令は、SIMD(単一命令多重データ)形式でグループ内の全ピクセルに適用される。たとえば、所与のクロックサイクルで、命令は、ピクセルのグループ内の1番目のピクセルのためのピクセルデータから選択されたオペランドの組を指定する。次のクロックサイクルで、命令はグループ内の2番目のピクセルのためのピクセルデータから選択された別のオペランドの組を指定し、以下同様に続く。本発明の実施形態によれば、条件付き実行ビットは、オペランドの各組と関連付けられている。条件付き実行ビットの値は、それぞれのオペランドの組がALUによって処理される方法(処理されるかどうか)を決定する。
【0009】
[0009]一般に、条件付き実行ビットが非実行にセットされるならば、その条件付き実行ビットと関連付けられたピクセルデータはALUによって演算されない。具体的には、一実施形態では、条件付き実行ビットが非実行にセットされるならば、ピクセルデータはALUによってラッチされず、このことは、フリップフロップがピクセルデータをクロックインしないようにALUへの入力フリップフロップをゲートすることにより達成され得る。したがって、ALUは、状態を変化させず、ALU内のラッチ(フリップフロップ)は前のクロックサイクルのときの状態と同じ状態のままである。電力はフリップフロップにクロックを入力しないことにより節約され、電力はさらに、組み合わせロジックへの入力がそのまま保持され、したがって、トランジスタが状態を変化させないので節約される(フリップフロップはある状態から別の状態へ遷移せず、条件付きビットが非実行にセットされるならば、オペランドはあるクロックから次のクロックまでそのまま保持される)。
【0010】
[0010]要約すると、命令はピクセルのグループの全体に供給されるが、必ずしもグループ内の各画素で命令を実行しなくてもよい。パイプラインの中で適切な順序を維持するため、命令はグループ内の各画素に供給され、オペランドの組がグループ内の画素毎に選択される。しかし、オペランドの組と関連付けられた条件付き実行ビットが非実行にセットされるならば、これらのオペランドはALUによって演算されず、関連付けられた命令はオペランドに関して実行されず、その代わりに、下流のオペランドが複製される。その結果として、フリップフロップは必ずしもクロック入力されず、組み合わせロジックは必ずしも切り替えられないので、電力を節約する。したがって、本発明の実施形態はハンドヘルド型およびその他の携帯型のバッテリー作動型装置におけるグラフィックス処理に好適である(ただし、本発明はこれらの種類の装置での使用に制限されない)。
【0011】
[0011]本発明の種々の実施形態の上記の目的および利点とその他の目的および利点とは、種々の図面に例示されている以下の実施形態の詳細な説明を読んだ後に、当業者によって理解されるであろう。
【0012】
[0012]本発明は、類似した参照番号が類似した要素を参照する添付図面中の図に一例として、かつ、非限定的に示されている。
【発明を実施するための最良の形態】
【0013】
[0022]今度は、その実施例が添付図面に示されている本発明の実施形態が詳細に参照される。本発明はこれらの実施形態と併せて説明されているが、これらの実施形態が発明をこれらの実施形態に限定することは意図されていないことが理解されるであろう。これに反して、本発明は、特許請求の範囲によって定義されるような発明の精神および範囲に含まれ得る代替物、変型例、および、均等物を対象とすることが意図されている。さらに、以下の本発明の実施形態の詳細な説明では、多数の特定の詳細が本発明の完全な理解を与えるために記載されている。しかし、本発明がこれらの特定の詳細を用いることなく実施され得ることが当業者によって認められる。他の例では、周知の方法、プロシージャ、コンポーネント、および、回路は、本発明の実施形態の態様を不必要に分かり難くすることがないように詳細には記載されていない。
【0014】
[0023]後続の詳細な説明の一部分は、コンピュータメモリ内のデータビットへの演算のプロシージャ、ステップ、論理ブロック、処理、および、その他の記号表現の観点から提示されている。これらの記載および表現は、データ処理技術における当業者が自分の業績の要旨を他の当業者へ最も効率的に伝達するためこの当業者によって使用される手段である。プロシージャ、コンピュータで実行されるステップ、論理ブロック、プロセスなどは、本明細書において、かつ、一般的に、所望の結果をもたらすステップまたは命令の首尾一貫した系列であると考えられる。ステップは、物理量の物理的な操作を要求するステップである。通常、不可欠ではないが、これらの量は、コンピュータシステムにおいて記憶され、転送され、合成され、比較され、および、そうでなければ、操作される能力をもつ電気信号または磁気信号の形をしている。主に一般的な用法上の理由のため、これらの信号をビット、値、要素、記号、文字、項、数などとして参照すると都合のよいときがあることが分かっている。
【0015】
[0024]しかし、これらの用語および類似した用語のすべては適切な物理量と関連付けられるべきであり、これらの量に当てはめられた便宜的なラベルに過ぎないことに注意を要する。以下の説明から明らかであるように、特に断らない限り、本発明の全体を通じて、「決定する」、「使用する」、「セットする」、「ラッチする」、「クロック入力する」、「特定する」、「選択する」、「処理する」、「制御する」などの用語を利用する説明は、コンピュータシステムのレジスタおよびメモリ内の物理(電子)量によって表現されたデータを操作し、コンピュータシステムメモリ若しくはレジスタ、または、その他のこのような情報記憶装置、伝送装置若しくは表示装置内で物理量として同様に表現されている他のデータへ変換する、コンピュータシステム(たとえば、図1のコンピュータシステム100)または類似した電子コンピューティング装置のアクションまたはプロセスに言及する。
【0016】
[0025]図1は本発明の一実施形態によるコンピュータシステム100を表している。コンピュータシステムは、ある種のハードウェアに基づく機能性およびソフトウェアに基づく機能性の実行プラットフォームを提供する本発明の実施形態による基本コンピュータシステムのコンポーネントを含む。一般に、コンピュータシステムは、少なくとも1台の中央プロセッシングユニット(CPU)101と、システムメモリ115と、少なくとも1台のグラフィックスプロセッサユニット(GPU)110とを備える。CPUはブリッジコンポーネント/メモリコントローラ(図示せず)を介してシステムメモリに連結されてもよく、または、CPUの内部にあるメモリコントローラ(図示せず)を介してシステムメモリに直結されてもよい。GPUはディスプレイ112に連結されている。1台以上の付加的なGPUが場合によっては計算能力をさらに高めるためにシステム100に連結されることがある。GPUがCPUおよびシステムメモリに連結されている。コンピュータシステムは、たとえば、専用グラフィックスレンダリングGPUに連結されている強力な汎用CPUを保有するデスクトップコンピュータシステムまたはサーバーコンピュータシステムとして実施されることがある。このような実施形態では、周辺バス、特殊用途グラフィックスメモリ、入力/出力(I/O)装置などを付加するコンポーネントが含まれることがある。同様に、コンピュータシステムは、ハンドヘルド型装置(たとえば、携帯電話機など)またはセットトップ型ビデオゲームコンソール装置として実施されることができる。
【0017】
[0026]GPUは、別個のコンポーネント、コネクタ(たとえば、アクセラレーテッド・グラフィックス・ポートスロット、ペリフェラル・コンポーネント・インターコネクト・エクスプレススロットなど)を介してコンピュータシステムに連結されるように設計された別個のグラフィックスカード、(たとえば、マザーボードに直接実装された)別個の集積回路ダイ、または、コンピュータシステムチップセットコンポーネント(図示せず)の集積回路ダイ若しくはPSOC(プログラマブルシステムオンチップ)の集積回路ダイに含まれている集積化されたGPUとして実施されることがある。付加的に、ローカルグラフィックスメモリ114が高帯域幅グラフィックスデータ記憶のためGPUのために含まれることがある。
【0018】
[0027]図2は本発明の一実施形態によるGPU110の内部コンポーネントとグラフィックスメモリ114とを示す図である。図2に描かれているように、GPUは、グラフィックスパイプライン210と、図示されているようにグラフィックスメモリ250に連結するフラグメントデータキャッシュ250とを含む。
【0019】
[0028]図2の実施例では、グラフィックスパイプライン210は複数の機能モジュールを含む。グラフィックスパイプラインの3個の機能モジュール、たとえば、プログラムシーケンサ220、算術論理ステージ(ALU)230、および、データ書き込みコンポーネント240が、グラフィックスアプリケーション(たとえば、グラフィックスドライバなど)から受信されたグラフィックスプリミティブをレンダリングすることにより機能する。機能モジュール220〜240は、フラグメントデータキャッシュ250を介してグラフィックスプリミティブに関連したピクセルをレンダリングする情報にアクセスする。フラグメントデータキャッシュは、グラフィックスメモリ(たとえば、フレームバッファメモリ)に記憶された情報のための高速キャッシュとして機能する。
【0020】
[0029]プログラムシーケンサはグラフィックスパイプラインの機能モジュールの演算を制御することによって機能する。プログラムシーケンサは、グラフィックスパイプラインの機能モジュールが情報を受信し、演算のため機能モジュール自体を設定し、グラフィックスプリミティブを処理する方法を制御するためにグラフィックスドライバ(たとえば、図1のCPU101上で動くグラフィックスドライバ)と相互作用可能である。たとえば、図2の実施形態では、グラフィックスレンダリングデータ(たとえば、プリミティブ、三角形片など)、パイプラインコンフィギュレーション情報(たとえば、モードセッティング、レンダリングプロファイルなど)、および、レンダリングプログラム(たとえば、ピクセルシェーダプログラム、頂点シェーダプログラムなど)が上流の機能モジュールから(たとえば、上流のラスタモジュールから、セットアップモジュールから、または、グラフィックスドライバから)共通入力260を介してグラフィックスパイプラインによって受信される。入力260は、グラフィックスパイプラインの機能モジュールの間で、主フラグメントデータ経路またはパイプラインとして機能する。プリミティブは一般にパイプラインのフロントエンドで受信され、パイプラインに沿って一方のモジュールから次のモジュールへ進むのにつれて、徐々にレンダリングされ、その結果としてレンダリングされたピクセルデータを生じる。
【0021】
[0030]一実施形態では、データはパケットベースのフォーマットで機能モジュール220〜240間を進む。たとえば、グラフィックスドライバは、パイプラインのフラグメントパイプ通信経路とインターフェイスをとり、かつ、フラグメントパイプ通信経路に沿って送信されるように特に設定されたデータパケットまたはピクセルパケットの形式でデータをGPUへ送信する。ピクセルパケットは、一般に、ピクセルのグループまたはタイル(たとえば、4個のピクセル、8個のピクセル、16個のピクセルなど)に関する情報と、ピクセルに関係する1個以上のプリミティブのためのカバレッジ情報とを含む。ピクセルパケットは、パイプラインの機能モジュールがその機能モジュール自体をレンダリング演算のため設定することを可能にさせるサイドバンド情報を含む可能性もある。たとえば、ピクセルパケットは、パイプラインの1個以上の機能モジュールによって使用され、かつ現在のレンダリングモードのため機能モジュール自体を設定することが可能であるコンフィギュレーションビット、命令、機能モジュールアドレスなどを含むことがある。ピクセルレンダリング情報および機能モジュールコンフィギュレーション情報に加えて、ピクセルパケットは、ピクセルに陰影処理を実行するようにパイプライン内の機能モジュールをプログラムするシェーダプログラム命令を含むことがある。たとえば、シェーダプログラムを構成する命令は、下方のグラフィックスパイプラインへ送信され、1個以上の指定された機能モジュールによってロードされることがある。一旦ロードされると、レンダリング演算中に、機能モジュールは所望のレンダリング効果を得るためピクセルデータにシェーダプログラムを実行可能である。
【0022】
[0031]このようにして、グラフィックスパイプライン内の機能モジュールによって実施される高度に最適化され、効果的なフラグメントパイプ通信経路は、機能モジュール(たとえば、モジュール220〜240)の間でピクセルデータを送信するためだけでなく、機能モジュール間でコンフィギュレーション情報およびシェーダプログラム命令もまた送信するために使用され得る。
【0023】
[0032]図3は本発明の一実施形態によるグラフィックスパイプライン210において選択されたステージを表すブロック図である。グラフィックスパイプラインは付加的なステージを含んでもよく、または、図3の実施例とは違って配置されてもよい。すなわち、本発明は図3のパイプラインとの関連で説明されているが、本発明は図3のパイプラインのように限定されるものではない。
【0024】
[0033]図3の実施例では、ラスタライザ310は、補間を使用して三角形をピクセルに変換する。ラスタライザは、様々な機能の中でも特に、頂点データを受信し、どのピクセルがどの三角形に対応しているかを決定し、カラー演算、テクスチャ演算、または、フォグ演算のようなレンダリングの一部としてピクセルに実行されるべきシェーダ処理演算を決定する。
【0025】
[0034]ラスタライザは処理されるべき三角形のピクセル毎にピクセルパケットを生成する。ピクセルパケットは、一般に、グラフィカルディスプレイのフレーム中のピクセルに対するピクセル値のインスタンスを計算に使用される記述の組である。ピクセルパケットは各フレーム中の各ピクセルと関連付けられる。各ピクセルはスクリーン座標の特定の場所(x,y)と関連付けられる。一実施形態では、グラフィックスシステムは、クワッドと呼ばれるディスプレイスクリーンの2ピクセル×2ピクセルの領域をレンダリングする。
【0026】
[0035]各ピクセルパケットは、処理(たとえば、カラー、テクスチャ、奥行き、フォグ、xおよびyロケーションなど)のため要求されるピクセル属性のペイロードと、サイドバンド情報とを含む(ピクセル属性データはデータフェッチステージ330によって供給される)。ピクセルパケットは1行のデータを格納することがあり、または、複数行のデータを格納することがある。行は、一般に、パイプラインバスのデータ部の幅である。
【0027】
[0036]データフェッチステージはピクセルパケットのためのデータをフェッチする。このようなデータは、ピクセルパケット毎のカラー情報、任意の奥行き情報、および、テクスチャ情報を含むことがある。フェッチされたデータは、ピクセルパケットを次のステージへ送信する前にピクセルデータの行内の、本明細書中ではレジスタと呼ばれることもある適切なフィールドに収容される。
【0028】
[0037]データフェッチステージから、ピクセルデータの行は算術論理ステージ230に入る。本実施形態では、1行のピクセルデータが各クロックサイクルで算術論理ステージに入る。一実施形態では、算術論理ステージは、たとえば、テクスチャ合成(テクスチャ環境)、ステンシル、フォグ、アルファブレンド、アルファテスト、および、奥行きテストのような、これらに限定されることのない、3次元グラフィックス演算に関係したシェーダプログラムを実行するように設定された4台のALU0、1、2および3(図5)を含む。各ALUはクロックサイクル毎に命令を実行し、各命令がピクセルパケットの内容に対応するオペランドに算術演算を実行する。一実施形態では、各ALUが4サイクルの奥行きを有するならば、1行のデータがALUで演算されるために4クロックサイクルを要する。
【0029】
[0038]算術論理ステージの出力はデータ書き込みステージへ進む。データ書き込みステージは、パイプライン結果をメモリ中(たとえば、図1および2のグラフィックスメモリ114またはメモリ115)の書き込みバッファまたはフレームバッファに格納する。場合によっては、ピクセルパケット/データは、データのさらなる処理が必要であるならば、データ書き込みステージから算術論理ステージへ再循環させられ得る。
【0030】
[0039]図4は、本発明の実施形態によるピクセルのグループに対するピクセルデータの連続、すなわち、ピクセルデータの一連の行を示している。図4の実施例では、ピクセルのグループは、4個のピクセル:P0、P1、P2およびP3のクワッドからなる。上述されているように、ピクセルに対するピクセルデータは、データの行またはサブセットに分離され得る。一実施形態では、1ピクセル当たり最大で4行のデータが存在する。たとえば、行0は、画素データの4個のフィールドまたはレジスタP0r0、P0r1、P0r2およびP0r3を含む(「r」は行内のフィールドまたはレジスタを指定し、「R」は行を指定する)。各行はピクセルデータの1個以上の属性を表現してもよい。これらの属性は、z奥行き値、テクスチャ座標、詳細のレベル、カラー、および、アルファを含むが、これらに限定されない。レジスタ値は、算術論理ステージ内のALUによって実行される演算におけるオペランドとして使用され得る。
【0031】
[0040]サイドバンド情報420はピクセルデータの各行と関連付けられる。サイドバンド情報は、特に、命令によって特定されたピクセルデータを使用してALUによって実行されるべき命令を特定または指摘する情報を含む。すなわち、行0と関連付けられたサイドバンド情報は、特に、命令I0を特定する。命令は、たとえば、実行されるべき算術演算の種類と、演算中でオペランドとして使用されるデータを格納しているレジスタとを指定する。
【0032】
[0041]一実施形態では、サイドバンド情報はピクセルデータの1行当たりの条件付き実行ビットを含む。条件付き実行ビットの値は、行が同じピクセルと関連付けられているとしても、ピクセルデータの行毎に異なってもよい。ピクセルデータの行と関連付けられた条件付き実行ビットは、関連付けられたピクセルのオペランドに関する命令の実行を阻止するためにセットされることがある。たとえば、P0R0と関連付けられた条件付き実行ビットが非実行にセットされるならば、命令I0はピクセルP0に対し実行されないであろう(しかし、依然として、グループ内の他のピクセルに対し実行される可能性がある)。条件付き実行ビットの機能は、図7Aと併せて、さらに後述されている。一実施形態では、条件付き実行ビットは長さが単一ビットである。
【0033】
[0042]図5は本発明の一実施形態による算術論理ステージ230のブロック図である。ある特定の要素だけが図5に表されているが、算術論理ステージは、図5に明らかにされ、後述されている要素以外に要素を含んでもよい。
【0034】
[0043]新しいクロックサイクル毎に、ピクセルデータの行はパイプラインのデータフェッチステージから算術論理ステージへ連続的に進む。たとえば、行0は第1のクロック時にパイプラインの下方へ進み、次のクロック時に行1が後に続き、以下同様である。特有のピクセルのグループ(たとえば、クワッド)と関連付けられた行の全部がパイプランにロードされると、次のクワッドと関連付けられた行をパイプラインにロードし始めることが可能である。
【0035】
[0044]一実施形態では、ピクセルのグループ内(たとえば、クワッド内)の各ピクセルのピクセルデータの行は、グループ内の他のピクセルのピクセルデータの行とインターリーブされる。たとえば、1ピクセル当たり4行を含む4ピクセルのグループの場合、ピクセルデータは、以下の順序、すなわち、1番目のピクセルの1行目(P0r0からP0r3)、2番目のピクセルの1行目(P1r0からP1r3)、3番目のピクセルの1行目(P2r0からP2r3)、4番目のピクセルの1行目(P3r0からP3r3)、1番目のピクセルの2行目(P0r4からP0r7)、2番目のピクセルの2行目(P1r4からP1r7)、3番目のピクセルの2行目(P2r4からP2r7)、4番目のピクセルの2行目(P3r4からP3r7)、以下同様に、P3r12からP3r15を含む15行目までの順序でパイプラインの下方へ進む。上述されているように、1ピクセル当たりの行数は4行未満でもよい。この形式でピクセルパケットの行をインターリーブすることにより、パイプラインの中でストールを回避することが可能であり、データスループットが増加され得る。
【0036】
[0045]したがって、本実施形態では、サイドバンド情報420を含むピクセルデータの行(たとえば、行0)が各クロックサイクルでデシリアライザ510へ供給される。図5の実施例では、デシリアライザはピクセルデータの行を非直列化する。上述されているように、ピクセルのグループ(たとえば、クワッド)のためのピクセルデータは行単位でインターリーブされてもよい。さらに、ピクセルデータは行単位で算術論理ステージに達する。このようにして、本明細書中で呼ばれているような非直列化はビット単位で実行されるのではなく、その代わりに、非直列化は行単位で実行される。グラフィックスパイプラインが4レジスタ幅であり、1ピクセル当たりに4行が存在するならば、デシリアライザはピクセルデータを1ピクセル当たり16個のレジスタに非直列化する。
【0037】
[0046]図5の実施例では、デシリアライザはピクセルのグループのピクセルデータをバッファ0、1または2のうちの1台に送信する。ピクセルデータはバッファのうちの1台に送信され、その間に他のバッファのうちの1台におけるピクセルデータはALUによって演算され、ALUによって既に演算されている残りのバッファ中のピクセルデータは、シリアライザ550によって直列化され、グラフィックスパイプラインの次のステージへ行単位で供給される。バッファが空になると、バッファは次のピクセルのグループのピクセルデータで充填される(上書きされる)状態にあり、バッファにロードされると、バッファが格納しているピクセルデータは演算される状態にあり、バッファ中のピクセルデータが演算されると、バッファは空にされる(上書きされる)状態にある。
【0038】
[0047]ピクセルのグループ(たとえば、クワッド0)のためのサイドバンド情報を含むピクセルデータは算術論理ステージに達し、その後に次のピクセルのグループ(たとえば、クワッド1)のためのサイドバンド情報を含むピクセルデータが続き、その後に次のピクセルのグループ(たとえば、クワッド2)のためのサイドバンド情報を含むピクセルデータが続く。
【0039】
[0048]特定のピクセルと関連付けられたピクセルデータの行のすべてが非直列化されると、そのピクセルのためのピクセルデータがALUによって演算され得る。一実施形態では、同じ命令がグループ(たとえば、クワッド)内の全ピクセルに適用される。ALUは、ピクセルのグループの全体にSIMD(単一命令、多重データ)形式で演算する効率的にパイプライン化されたプロセッサである。
【0040】
[0049]図6は任意に選択されたクロックサイクル0〜15の間にALUから出るピクセル結果を表している。クロック0〜3において、ピクセルP0〜P3のためのピクセルデータを使用する1番目の命令I0の実行と関連付けられたピクセル結果がALUから出る。同様に、ピクセルP0〜P3のためのピクセルデータを使用する2番目の命令I1の実行と関連付けられたピクセル結果がALUから出て行き、以下同様である。図4をもう一度参照すると、命令I0はピクセルP0〜P3のためのピクセルデータの行0と関連付けられ、命令I1はピクセルP0〜P3のためのピクセルデータの行1と関連付けられ、以下同様である。同じ命令がピクセルP0〜P3を通じて適用されるので、ALUはSIMD形式で動作する。
【0041】
[0050]図7Aは本発明の一実施形態によるALUのステージを流れるピクセルデータを表している。本実施形態では、ピクセルデータのオペランドを演算するため、具体的には、命令を実行するため4クロックサイクルを要する。本質的に、各ALUのパイプラインステージの奥行きは4段である。図7Bを同様に参照すると、1番目のクロックサイクル中に、1番目のピクセルのためのピクセルデータがALU(ALUのステージ1)に読み込まれる。2番目および3番目のクロックサイクル中に、計算がピクセルデータに関して実行され、たとえば、2番目のクロックサイクルでは、オペランドが乗算器において乗算され、3番目のクロックサイクルでは、乗算器結果が加算器(ALUのステージ2および3)において加算されてもよい。4番目のクロックサイクル中に(ALUのステージ4で)、ピクセルデータはバッファまたはグローバルレジスタに書き戻される。さらに2番目のクロックサイクル中に、2番目のピクセルのためのピクセルデータがALUに読み込まれ、そのピクセルデータはALUの残りのステージを通して1番目のピクセルのためのピクセルデータの行の後に続く。さらに3番目のクロックサイクル中に、3番目のピクセルのためのピクセルデータがALUに読み込まれ、そのピクセルデータはALUの残りのステージを通して2番目のピクセルのためのピクセルデータの後に続く。ALUが「準備」されると、まさに上述されているように、あるピクセルのためのピクセルデータがALUを通して別のピクセルのためのピクセルデータの後に続く。
【0042】
[0051]上述されているように、一実施形態では、1行当たりのサイドバンド情報から発生する同じ命令がグループ(たとえば、クワッド)内の全ピクセルに適用される。たとえば、所与のクロックサイクルで、命令はピクセルのグループ内の1番目のピクセルのためのピクセルデータから選択されたオペランドの組を指定する。次のクロックサイクルでは、命令はグループ内の2番目のピクセルのためのピクセルデータから選択された別のオペランドの組を指定し、以下同様である。本発明の実施形態によれば、1行当たりのサイドバンド情報から発生する条件付き実行ビットはオペランドの1つずつの組と関連付けられる。一般に、条件付き実行ビットは非実行にセットされ、その条件付き実行ビットと関連付けられているオペランドはALUによって演算されない。
【0043】
[0052]図7Aは本発明の一実施形態によるALUの各ステージにおけるオペランドの組を表している。たとえば、図7Bもまた参照すると、クロックサイクルN−1で、ALUのステージ1におけるオペランドの組は、命令I2(図中、P1.I2として示されている)によって指定されるようなピクセルP1のためのピクセルデータを含み、ステージ2はピクセル0のためのピクセルデータから選択されたオペランドの組に、命令I2(P0.I2)に応じて指定されている演算を行い、以下同様である。次の連続したクロックサイクルNにおいて、オペランドの各組は次のALUステージへ移り、ALUにロードされるべき次のオペランドの組はP2.I2である。
【0044】
[0053]図7Aの実施例では、オペランドP2.I2と関連付けられている条件付き実行ビットは、「非実行」にセットされる。条件付き実行ビットは、グラフィックスパイプラインの先頭(フロントエンド)でシェーダプログラムによってセットされることがある。代替的に、条件付き実行ビットは前に実行された命令の結果としてセット(またはリセット)されることがある。
【0045】
[0054]したがって、オペランドP2.I2はALUによって演算されない。具体的には、一実施形態では、条件付き実行ビットが非実行にセットされているならば、オペランドP2.I2はALUによってラッチされない。その結果として、これらのオペランドを演算することになっていたALUのパイプステージは状態を変えない。よって、クロックサイクルNで、ALUの両方のステージ1および2は、フリップフロップがラッチ状態ではなく、したがって、前のクロックサイクルN−1と同じ状態のままであるので、同じデータ(P1.I2)を格納している。したがって、ALUの下流のパイプステージにおける組み合わせロジックは遷移せず、電力は不必要に消費されない。
【0046】
[0055]クロックサイクルN+1では、オペランドが前のクロックサイクルにおけるオペランドと同じであるので、ALUのステージ2における組み合わせロジックは切り替えられない。同様に、クロックサイクルN+2では、ALUのステージ3における組み合わせロジックは切り替えられない。クロックサイクルN+3では、オペランドの組が前のクロックサイクルにおけるオペランドの組と同じであるので、ステージ4と関連付けられているフリップフロップは状態を変えない。
【0047】
[0056]条件付き実行ビットがオペランドP2.I2のため非実行にセットされているとしても、「不用な」オペランドが所定の位置でALUの中を効率的に伝播する。このようにして、グラフィックスパイプラインの中を通るデータの順序が維持され、ALU全体に亘るタイミングもまた維持される。
【0048】
[0057]一般に、条件付き実行ビットが非実行にセットされるとき、ALUは条件付き実行ビットと関連付けられたピクセルデータに基づいて少しも動作しない。実際において、条件付き実行ビットは許可ビットとしての役目を果たし、ビットが非実行にセットされているならば、データフリップフロップは有効にされず、新しい入力オペランドを捕捉しない。その代わりに、フリップフロップの出力は、それらの現在状態(データが前のクロックサイクルで捕捉されたときにもたらされた状態)を保持する。一実施形態では、これはフリップフロップのクロックをゲートすることによって達成される。条件付き実行ビットが非実行にセットされるならば、入力オペランドを捕捉するフリップフロップはクロック入力されず、すなわち、クロック信号が遷移しないので、新しいデータがフリップフロップによって捕捉されない。一実施形態では、条件付き実行ビットが非実行にセットされているならば、ALUの1段目のステージにおけるフリップフロップ(たとえば、図7Bのラッチ710)だけがクロック入力されないが、本発明はそのように限定されるものではない。すなわち、クロックはALUの1段以上のステージでゲートされてもよい。代替的に、クロックをゲートする代わりに、フリップフロップへのデータ入力が条件付き実行ビットの制御下でゲートされ得る。
【0049】
[0058]電力は、必要ではないときにALU内のフリップフロップにクロックを入力しないことによって節約される。オペランドはクロックとクロックの間で同じであるため、電力は、ALUの組み合わせロジックにおいて、スイッチング動作が組み合わせロジックで行われないので、同様に節約される。
【0050】
[0059]図8は本発明の一実施形態によるグラフィックスプロセッサユニットパイプラインにおいてピクセルデータを処理するコンピュータで実施される方法の実施例のフローチャート800である。特定のステップがフローチャートに開示されているが、このようなステップは例示的である。すなわち、本発明の実施形態は、種々のその他のステップ、または、フローチャートに列挙されたステップの変形を実行するために好適である。フローチャート中のステップは提示されている順序と異なる順序で実行されてもよい。
【0051】
[0060]ブロック810では、算術演算が命令に応じて実行される。同じ命令がピクセルデータの異なるオペランドの組に適用される。オペランドの各組はピクセルのグループ(たとえば、クワッド)内のそれぞれのピクセルと関連付けられている。条件付き実行ビットもまたオペランドの各組と関連付けられている。
【0052】
[0061]ブロック820では、オペランドの組と関連付けられた条件付き実行ビットの値は、これらのオペランドがALUにロードされるべきであるかどうかを決定するために使用される。具体的には、条件付き実行ビットが第1の値(たとえば、0または1)にセットされるならば、オペランドはALUにロードされ、ALUによって演算されるが、条件付き実行ビットが第2の値(それぞれ、たとえば、1または0)にセットされるならば、ALUにロードされるか、ALUによって演算されることがない。
【0053】
[0062]要約すると、命令はピクセルのグループの全体に適用されるが、必ずしもグループ内の各ピクセルのためのピクセルデータに命令を実行しなくてもよい。パイプラインの中で適切な順序を維持するため、命令はグループ内の各ピクセルに適用され、オペランドの組がグループ内の各ピクセルのためのピクセルデータから選択される。しかし、ピクセルのためのオペランドの組と関連付けられている条件付き実行ビットが非実行にセットされているならば、そのピクセルのためのオペランドはALUによって演算されない。その結果として、ALUのフリップフロップは必ずしもクロック入力および切り替えが行われないので、電力を節約する。したがって、本発明の実施形態はハンドヘルド型およびその他の携帯型のバッテリー作動型装置、ならびに、その他の種類の装置におけるグラフィックス処理のため好適である。
【0054】
[0063]本発明の特定の実施形態の上記の記載は、例示と説明の目的のため提示されている。これらの記載は、網羅的であること、または、発明を開示された形式と全く同一のものに限定することが意図されず、多数の変形例および変更が上記の教示内容の観点から可能である。たとえば、本発明の実施形態は、図2のGPU110と形式または機能が相違するGPU上で実施され得る。実施形態は、発明の原理および発明の実際的なアプリケーションを最もよく説明するために選択され、記載されているので、当業者が発明と、考慮されている特有の用途に適するように様々な変形を伴う様々な実施形態とを最もよく利用することが可能である。本発明の範囲は特許請求の範囲に記載された事項およびそれらの均等物によって定義されることが意図されている。
【図面の簡単な説明】
【0055】
【図1】本発明の一実施形態によるコンピュータシステムのコンポーネントを表すブロック図である。
【図2】本発明の一実施形態によるグラフィックスプロセッシングユニット(GPU)のコンポーネントを表すブロック図である。
【図3】本発明の一実施形態によるGPUパイプラインにおけるステージを示す図である。
【図4】本発明の一実施形態によるピクセルデータの一連の行を示す図である。
【図5】本発明の一実施形態によるGPU内の算術論理ユニットのブロック図である。
【図6】本発明の一実施形態による算術論理ユニットを出るピクセルデータを示す図である。
【図7A】本発明の一実施形態によるALUの種々のステージにおけるピクセルデータを示す図である。
【図7B】本発明の実施形態によるALUの種々のステージを示す図である。
【図8】本発明の一実施形態によるピクセルデータを処理するコンピュータで実施される方法のフローチャートである。
【符号の説明】
【0056】
100…コンピュータシステム、101…中央プロセッシングユニット、110…グラフィックスプロセッサユニット、114…グラフィックスメモリ、115…システムメモリ、210…グラフィックスパイプライン、220…プログラムシーケンサ、230…算術論理ユニット、240…データ書き込みコンポーネント、330…データフェッチコンポーネント、420…サイドバンド情報、510…デシリアライザ、550…シリアライザ

【特許請求の範囲】
【請求項1】
命令に応じて算術演算を実行するため動作可能である複数台の算術論理ユニット(ALU)を備え、
前記命令がピクセルデータを含む複数組のオペランドの組に適用され、前記複数組のオペランドの組中のオペランドの組が複数個のピクセルのうちの1個ずつのピクセルおよび1個ずつの条件付き実行ビットと関連付けられ、
前記複数組のオペランドの組中の第1のオペランドの組と関連付けられた条件付き実行ビットの値が前記第1のオペランド中の前記ピクセルデータが前記ALUによってどのように処理されるかを決定する、
グラフィックスプロセッサユニットパイプライン。
【請求項2】
前記第1のオペランドの組と関連付けられた前記条件付き実行ビットが第1の値にセットされるならば、前記第1のオペランドの組が前記ALUによって演算され、前記条件付き実行ビットが第2の値にセットされるならば、前記第1のオペランドの組が前記ALUによって演算されることがない、請求項1に記載のグラフィックスプロセッサユニットパイプライン。
【請求項3】
前記複数個のピクセルが前記ピクセルのためのピクセルデータの複数のサブセットを含むピクセルを含み、
前記ピクセルのためのピクセルデータのあるサブセットと関連付けられた第1の条件付き実行ビットと前記ピクセルのためのピクセルデータの別のサブセットと関連付けられた第2の条件付き実行ビットとが異なる値を保有する、
請求項1に記載のグラフィックスプロセッサユニットパイプライン。
【請求項4】
前記ALUが複数個のラッチを含む複数段のステージを備え、
前記条件付き実行ビットの前記値が前記第1のオペランドの組が前記ALUによってラッチされるかどうかを決定する、
請求項1に記載のグラフィックスプロセッサユニットパイプライン。
【請求項5】
前記ラッチがゲート化されたクロックを備え、
前記ゲート化されたクロックが前記条件付き実行ビットの制御下で有効化状態と無効化状態にされる、
請求項4に記載のグラフィックスプロセッサユニットパイプライン。
【請求項6】
前記条件付き実行ビットが前記パイプラインの中で前記第1のオペランドの組に先行した第2のオペランドの組に関する演算の結果に応じてセットされる、請求項1に記載のグラフィックスプロセッサユニットパイプライン。
【請求項7】
前記複数個のピクセルが4個のピクセルを含む、請求項1に記載のグラフィックスプロセッサユニットパイプライン。
【請求項8】
データフェッチステージと、
前記データフェッチステージに連結された複数台の算術論理ユニット(ALU)と、
を備え、
連続したクロックサイクル中で第1の命令が前記ALUのための第1のオペランドおよび前記ALUのための第2のオペランドを特定し、
前記第1のオペランドが第1のピクセルおよび第1の条件付き実行ビットと関連付けられ、前記第2のオペランドが第2のピクセルおよび第2の条件付き実行ビットと関連付けられ、
前記第1の条件付き実行ビットの値が前記第1のオペランドが前記ALUによって演算されるかどうかを決定し、
前記第2の条件付き実行ビットの値が前記第2のオペランドが前記ALUによって演算されるかどうかを決定する、
グラフィックスプロセッサユニットにおけるグラフィックスパイプライン。
【請求項9】
前記第1のピクセルが前記第1のピクセルのためのピクセルデータの複数のサブセットを含み、
前記第1のピクセルのためのピクセルデータのあるサブセットと関連付けられた条件付き実行ビットと前記第1のピクセルのためのピクセルデータの別のサブセットと関連付けられた条件付き実行ビットとが異なる値を保有する、
請求項8に記載のグラフィックスパイプライン。
【請求項10】
前記第1のピクセルのための前記複数のサブセットが最大で4組のピクセルデータのサブセットを含む、請求項9に記載のグラフィックスパイプライン。
【請求項11】
前記ALUが複数個のフリップフロップを備え、
前記第1の条件付き実行ビットの前記値が前記第1のオペランドが前記ALUによってラッチされるかどうかを決定し、
前記第2の条件付き実行ビットの前記値が前記第2のオペランドが前記ALUによってラッチされるかどうかを決定する、
請求項8に記載のグラフィックスパイプライン。
【請求項12】
前記フリップフロップがゲート化されたクロックを備え、
前記ゲート化されたクロックが前記第1の条件付き実行ビットおよび前記第2の条件付き実行ビットによって順番に制御される、
請求項11に記載のグラフィックスパイプライン。
【請求項13】
前記第1の条件付き実行ビットの前記値が前記第1の命令より時間的に先行した第2の命令に応じて実行された演算の結果に応じてセットされる、請求項8に記載のグラフィックスパイプライン。
【請求項14】
前記第1のピクセルおよび前記第2のピクセルが前記グラフィックスパイプラインの中を集団で進むピクセルのクワッドの一部である、請求項8に記載のグラフィックスパイプライン。
【請求項15】
グラフィックスプロセッサユニットパイプラインにおいてデータを処理するコンピュータで実施される方法であって、
複数組のオペランドの各組が複数個のピクセルのうちの1個ずつのピクセルおよび1個ずつの条件付き実行ビットと関連付けられ、ピクセルデータの複数組のオペランドの組に適用される命令に応じて算術論理ユニット(ALU)において算術演算を実行するステップと、
第1のオペランドの組と関連付けられている条件付き実行ビットの値を使用して、前記第1のオペランドの組中の前記ピクセルデータが前記ALUにロードされるべきであるかどうかを決定するステップと、
を備える方法。
【請求項16】
前記第1のオペランドの組と関連付けられている前記条件付き実行ビットが第1の値にセットされているならば、前記第1のオペランドの組を演算するステップをさらに備え、前記第1の実行ビットが第2の値にセットされているならば、前記第1のオペランドの組が前記ALUにロードされない、請求項15に記載の方法。
【請求項17】
前記複数個のピクセルが前記ピクセルのためのピクセルデータの複数組のサブセットを含むピクセルを含み、
前記ピクセルのためのピクセルデータのあるサブセットと関連付けられた第1の条件付き実行ビットと前記ピクセルのためのピクセルデータの別のサブセットと関連付けられた第2の条件付き実行ビットとが異なる値を保有する、
請求項15に記載の方法。
【請求項18】
前記条件付き実行ビットの値に基づいて前記第1のオペランドの組をラッチするかどうかを決定するステップをさらに備える、請求項15に記載の方法。
【請求項19】
前記条件付き実行ビットを使用して前記ALUにおいてゲート化されたクロックを制御するステップをさらに備える、請求項15に記載の方法。
【請求項20】
前記パイプラインの中で前記第1のオペランドの組より先行した第2のオペランドの組に関する演算の結果に応じて前記条件付き実行ビットをセットするステップをさらに備える、請求項15に記載の方法。
【請求項21】
グラフィックスプロセッサユニットにおける算術論理ユニット(ALU)パイプステージであって、
複数個のピクセルと関連付けられている複数個のオペランドを記憶するメモリと、
前記メモリに連結され、前記複数個のピクセルの1個ずつのオペランドに関して命令を実行する複数段のパイプ段を備え、前記複数個のピクセルと関連付けられているオペランドが各クロックサイクル時に1ピクセルずつALUに入り、オペランドの各組が複数個のピクセルのうちのそれぞれのピクセルと関連付けられ、前記メモリが前記複数個のピクセルの各ピクセルのためのそれぞれのフラグビットをさらに記憶する、パイプライン化されたALUと、
前記ALUに連結され、前記複数個のピクセルのうちの第1のピクセルに関連付けられているフラグビットがセットされているならば、前記複数第1のピクセルと関連付けられているオペランドが第1のクロックサイクル時に前記ALUに入ることを阻止するゲーティングロジックと、
を備えるALUパイプラインステージ。
【請求項22】
前記フラグビットが前記第1のピクセルと関連付けられている前記オペランドが前記ALUの前記複数段のパイプステージによって処理されることを阻止する、請求項21に記載のALUパイプラインステージ。
【請求項23】
前記フラグビットがセットされている時、前記第1のピクセルと関連付けられている前記オペランドが前記ALUの第1のパイプステージに入るのではなく、前記第1のパイプステージが前記第1のクロックサイクルの直前のクロックサイクル時に前記第1のパイプステージに入った第2のピクセルと関連付けられているオペランドの値を維持する、請求項22に記載のALUパイプラインステージ。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7A】
image rotate

【図7B】
image rotate

【図8】
image rotate


【公開番号】特開2009−80797(P2009−80797A)
【公開日】平成21年4月16日(2009.4.16)
【国際特許分類】
【外国語出願】
【出願番号】特願2008−209007(P2008−209007)
【出願日】平成20年8月14日(2008.8.14)
【出願人】(501261300)エヌヴィディア コーポレイション (166)
【Fターム(参考)】