発明の背景
[0001]本発明は、コンピュータグラフィックの分野に係る。多くのコンピュータグラフィック映像は、所与の視点からの三次元シーンと光との相互作用を数学的にモデリングすることにより生成される。レンダリングと称されるこのプロセスは、所与の視点からのシーンの二次元映像を生成し、これは、実世界シーンの写真を撮影するのと同様である。
[0002]コンピュータグラフィック、特に、リアルタイムコンピュータグラフィックの需要が高まるにつれて、レンダリングプロセスを加速するグラフィック処理サブシステムを伴うコンピュータシステムが普及してきた。これらのコンピュータシステムでは、レンダリングプロセスが、コンピュータの汎用中央処理ユニット(CPU)とグラフィック処理サブシステムとの間で分割される。通常、CPUは、高レベルオペレーションを実行し、例えば、所与のシーンにおいて物体の位置、動き及び衝突を決定する。これらの高レベルオペレーションから、CPUは、希望のレンダリングされた映像(1つ又は複数)を定義する1組のレンダリングコマンド及びデータを生成する。例えば、レンダリングコマンド及びデータは、シーンの幾何学形状、照明、陰影、テクスチャ、動き、及び/又はシーンに対するカメラパラメータを定義することができる。グラフィック処理サブシステムは、1組のレンダリングコマンド及びデータから1つ以上のレンダリングされた映像を生成する。
[0003]典型的なグラフィック処理サブシステムは、1つ以上の実行ユニット及び1つ以上のテクスチャユニットを有するグラフィック処理ユニットを備えている。他のタスクの中でも、実行ユニットは、幾何学形状及び照明情報を処理する役割を果たす。テクスチャユニットは、メモリに記憶されたテクスチャマップからテクセルデータを検索することによりシーンの幾何学形状のテクスチャマッピングを実行する。テクセルデータは、実行ユニットにより生成されるピクセルデータと合成されて、レンダリングされる映像のピクセルのカラー値を決定する。
[0004]実行ユニット及びテクスチャユニットは、通常、性能を最大にするために乗り越えるべき異なる障害がある。実行ユニットは、通常、深く主として固定された処理パイプラインを有し、これは、典型的な実行ユニットに対するパイプラインストールを性能に関して非常に高価なものにする。パイプラインストールを減少するために、レンダリングアプリケーションは、しばしば、多数の独立した実行スレッドに分割されて、実行ユニットを最大限利用するようにしている。
[0005]これに対して、テクスチャユニットの主たる性能上のボトルネックは、テクセルデータを検索することからメモリ待ち時間が生じることである。このボトルネックは、実行ユニットが、時間とともにテクスチャコマンドを配布するのではなく、テクスチャコマンドのバッチを一緒に発行するという傾向により、悪化される。多数のスレッドが多数の実行ユニットにおいて実行される状態では、テクスチャコマンドの不規則なタイミングは、テクスチャユニットの性能を著しく低下させる。
[0006]テクスチャコマンドのバーストを平坦化するために、バッファ、例えば、先入れ先出しバッファ(FIFO)を使用して、テクスチャユニットへ送られるテクスチャコマンドをキューイングすることができる。しかしながら、テクスチャコマンドは、しばしば、大量の関連データを含む。例えば、典型的なテクスチャコマンド及びその関連データは、100ビットのデータを大幅に越えることがある。この幅のFIFOは、グラフィック処理ユニットにおいて大量の回路面積を消費し、他の特徴部に使用できる面積の量を減少させる。
[0007]それ故、グラフィック処理システムが、大きなFIFOを使用せずに、テクスチャコマンドを効率的にキューイングすることが要望される。更に、テクスチャキューイングメカニズムを、多数の実行ユニット共に使用するときに効率的にスケーリングすることも要望される。
発明の簡単な概要
[0008]本発明は、グラフィック処理ユニットが、大きなテクスチャ要求バッファを必要とせずに、テクスチャ要求の可変性をバランスさせるように非常に多数のテクスチャ要求をキューイングできるようにする。一実施形態において、専用のテクスチャ要求バッファは、比較的小さなテクスチャコマンド及びパラメータをキューイングする。更に、各々のキューイングされるテクスチャコマンドに対して、通常はテクスチャコマンドより相当に大きい、関連する1組のテクスチャ引数(アーギュメント)が、汎用レジスタに記憶される。テクスチャユニットは、テクスチャ要求バッファからテクスチャコマンドを検索し、次いで、適当な汎用レジスタから関連するテクスチャ引数をフェッチする。更に別の実施形態では、テクスチャユニットにより計算された最終的なテクスチャ値の行先として指定された汎用レジスタにテクスチャ引数が記憶される。テクスチャコマンドがキューイングされるときに最終的なテクスチャ値に対して行先レジスタを割り当てねばならないので、テクスチャ引数をこのレジスタに記憶することで、付加的なレジスタが消費されることはない。
[0009]一実施形態では、グラフィック処理サブシステムは、テクスチャ要求バッファ及びレジスタファイルを含む実行ユニットを備えている。レジスタファイルは、複数の汎用レジスタを含む。実行ユニットは、テクスチャ要求バッファへテクスチャコマンドを発行すると共に、レジスタファイルにテクスチャ引数を記憶する。テクスチャユニットは、テクスチャ要求バッファからテクスチャコマンドを読み取ると共に、レジスタファイルからテクスチャ引数を検索する。テクスチャユニットは、更に、テクスチャコマンドに応答してテクスチャマップの一部分を検索するようにも適応される。テクスチャユニットは、テクスチャマップのその一部分から最終的なテクスチャ値を計算し、そしてその最終的なテクスチャ値をレジスタファイルの行先レジスタに記憶する。
[0010]更に別の実施形態では、実行ユニットは、複数のレジスタのうちの行先レジスタにテクスチャ引数を記憶し、テクスチャユニットは、最終的なテクスチャ値を記憶する際にテクスチャ引数にオーバーライトする。別の実施形態では、実行ユニットは、行先レジスタとは個別のソースレジスタにテクスチャ引数を記憶する。
[0011]別の実施形態では、テクスチャコマンドは、テクスチャパラメータを含む。又、テクスチャコマンドは、テクスチャマッピング形式及び/又はテクスチャマップを指定してもよい。更に別の実施形態では、テクスチャユニットは、テクスチャパラメータから、テクスチャ引数を記憶するソースレジスタを決定する。テクスチャパラメータは、複数のレジスタのうちの行先レジスタが、複数のレジスタのうちのソースレジスタでもあることを指定する。
[0012]更に別の実施形態では、実行ユニットは、テクスチャコマンドの発行に応答してテクスチャ引数に変化が生じるのを防止するために行先レジスタをロックする。実行ユニットは、テクスチャユニットが行先レジスタに最終的なテクスチャ値を記憶するのに応答して行先レジスタをアンロックする。
[0013]付加的な実施形態では、第2の実行ユニットが、第2のテクスチャ要求バッファ及び第2のレジスタファイルを備えている。この第2のレジスタファイルは、複数の汎用レジスタを含む。第2の実行ユニットは、第2のテクスチャ要求バッファへ第2のテクスチャコマンドを発行すると共に、第2のレジスタファイルに第2のテクスチャ引数を記憶する。テクスチャユニットは、更に、第2のテクスチャ要求バッファから第2のテクスチャコマンドを読み取り、第2のレジスタファイルから第2のテクスチャ引数を検索し、第2のテクスチャコマンドに応答してテクスチャメモリから第2のテクスチャマップの一部分を検索し、そのテクスチャマップの一部分から第2の最終的なテクスチャ値を計算し、そして第2のレジスタファイルの複数のレジスタのうちの行先レジスタに第2の最終的なテクスチャ値を記憶する。
[0014]以下、添付図面を参照して、本発明を説明する。
発明の詳細な説明
[0015]図1は、本発明の実施形態を実施するのに適したパーソナルコンピュータ、ビデオゲームコンソール、パーソナルデジタルアシスタント、セルラー電話、又は他のデジタル装置のようなコンピュータシステム100のブロック図である。このコンピュータシステム100は、ソフトウェアアプリケーション、及び任意であるが、オペレーティングシステムを実行するための中央処理ユニット(CPU)105を備えている。一実施形態では、CPU105は、実際には、パラレルに動作する多数の個別の中央処理ユニットである。メモリ110は、CPU105により使用するためのアプリケーション及びデータを記憶する。記憶装置115は、アプリケーション及びデータのための不揮発性記憶装置をなすもので、固定ディスクドライブ、取り外し可能なディスクドライブ、フラッシュメモリ又は他のソリッドステートデバイス、及びCD−ROM、DVD−ROM又は他の光学的記憶装置を含んでもよい。ユーザ入力装置120は、1人以上のユーザからのユーザ入力をコンピュータシステム100へ通信するもので、キーボード、マウス、ジョイスティック、タッチスクリーン、及び/又はマイクロホンを含んでもよい。ネットワークインターフェイス125は、コンピュータシステム100が電子通信ネットワークを経て他のコンピュータシステムと通信するのを許すもので、ローカルエリアネットワーク、及びインターネットのようなワイドエリアネットワークを経て行われるワイヤード又はワイヤレス通信を含んでもよい。CPU105、メモリ110、データ記憶装置115、ユーザ入力装置120、及びネットワークインターフェイス125を含むコンピュータシステム100のコンポーネントは、1つ以上のデータバス160を経て接続される。データバスは、例えば、ISA、PCI、AGP、PCI、PCI−X(3GIOとしても知られている)、及びHyperTransportデータバスを含む。
[0016]グラフィックサブシステム130は、データバス160、及びコンピュータシステム100のコンポーネントに更に接続される。グラフィックサブシステム130は、グラフィック処理ユニット(GPU)135及びグラフィックメモリを備えている。グラフィックメモリは、出力映像の各ピクセルに対してピクセルデータを記憶するのに使用される表示メモリ140(例えば、フレームバッファ)を備えている。ピクセルデータは、CPU105から表示メモリ140へ直接供給することができる。或いは、CPU105が、希望の出力映像を定義するデータ及び/又はコマンドをGPU135に与え、GPU135が1つ以上の出力映像のピクセルデータを生成する。希望の出力映像を定義するデータ及び/又はコマンドは、付加的なメモリ145に記憶される。一実施形態では、GPU135は、シーンの幾何学形状、照明、陰影、テクスチャ、動き、及び/又はカメラパラメータを定義するレンダリングコマンド及びデータから、出力映像のためのピクセルデータを生成する。
[0017]別の実施形態では、表示メモリ140及び/又は付加的なメモリ145は、メモリ110の一部分であり、CPU105と共有される。或いは、表示メモリ140及び/又は付加的なメモリ145は、グラフィックサブシステム130を排他的に使用するために設けられる1つ以上の個別のメモリである。グラフィックサブシステム130は、表示メモリ218からディスプレイ装置150に表示される映像のためのピクセルデータを周期的に出力する。ディスプレイ装置150は、コンピュータシステム100からの信号に応答して視覚情報を表示できる任意の装置で、CRT、LCD、プラズマ及びOLEDディスプレイ、並びに他の光放射及び光変調技術を含む装置である。コンピュータシステム100は、ディスプレイ装置150にアナログ又はデジタル信号を与えることができる。
[0018]更に別の実施形態において、グラフィック処理サブシステム130は、GPU135と同様の1つ以上の付加的なGPU155を備えている。更に別の実施形態では、グラフィック処理サブシステム130は、グラフィックコプロセッサ165を備えている。このグラフィック処理コプロセッサ165及び付加的なGPU155は、GPU135とパラレルに動作する。付加的なGPU155は、GPU135と同様に、レンダリングコマンドから出力イメージのためのピクセルデータを生成する。付加的なGPU155は、GPU135に関連して動作して、出力映像の異なる部分に対してピクセルデータを同時に生成することもできるし、或いは異なる出力映像に対してピクセルデータを同時に生成することもできる。一実施形態では、グラフィックコプロセッサ165は、GPU135及び/又は付加的なGPU155に対して幾何学形状の変換、シェーダー計算及び裏面抜粋(culling)オペレーションのようなレンダリング関連タスクを遂行する。
[0019]付加的なGPU155は、GPU135と同じ集積回路、モジュール、チップパッケージ、又は回路板に配置されて、データバス160への接続をGPU135と共有することもできるし、或いはデータバス160に個別に接続された付加的な回路板に配置することもできる。また、付加的なGPU155は、表示メモリ140及び付加的なメモリ145と同様に、それら自身の表示メモリ及び付加的なメモリを有することもできるし、或いはメモリ140及び145をGPU135と共有することもできる。一実施形態では、グラフィックコプロセッサ165は、データバス160を制御するのに使用されるノースブリッジ(Northbridge)又はサウスブリッジ(Southbridge)チップのようなコンピュータシステムチップセット(図示せず)と一体化される。
[0020]図2は、本発明の実施形態によるグラフィック処理ユニットのテクスチャキューイングメカニズム200を示す。制御ユニットは、テクスチャユニット210のオペレーションをグラフィック処理ユニットの他の部分と整合させる。テクスチャユニット210は、幾何学的プリミティブの所与のポイントに対して、カラー又はアルファ値のようなテクスチャ値を決定する役割を果たす。一実施形態では、テクスチャユニット210は、制御ユニット205からテクスチャコマンドを受け取る。テクスチャコマンドは、適用されるべきテクスチャマッピングの形式、マップされるべきテクスチャ、及びテクスチャ処理に必要な他のパラメータを指定する。更に、テクスチャコマンドは、通常、幾何学的プリミティブの所与のポイントに対応するテクスチャ座標を指定する関連する1組のテクスチャ引数を要求する。
[0021]制御ユニット205からテクスチャコマンドを受け取ると、テクスチャユニット210は、テクスチャマッピングオペレーションを実行する。一実施形態では、テクスチャマッピングオペレーションは、使用すべき1つ以上のテクスチャミップマップレベルを選択するための詳細決定レベルを含む。サンプリング決定は、等方性又は非等方性テクスチャフィルタリングに使用されるべきテクスチャサンプリングフットプリント及びサンプル重みを計算する。テクスチャマッピングオペレーションは、選択されたミップマップレベル、テクスチャサンプリングフットプリント、及びテクスチャ座標から1つ以上のテクセルメモリアドレスを決定する。
[0022]テクスチャマッピングユニットは、テクスチャメモリ215からテクセルメモリアドレスにおけるテクスチャ値を検索する。テクスチャメモリ215は、グラフィック処理ユニットの内部に1つ以上のレベルのテクスチャキャッシュを含むと共に、グラフィック処理ユニットの外部にテクスチャを記憶するメモリを含むことができる。必要なテクスチャ値がテクスチャメモリ215から受け取られると、テクスチャユニット210は、サンプリング重み及びミップマップ重みに基づいてテクスチャ値を合成して、最終的なテクスチャ値を生成する。この最終的なテクスチャ値は、テクスチャユニット210から出力され、そしてグラフィック処理ユニットの他の部分により使用されて、出力映像の1つ以上のピクセルに対するカラー値を決定する。
[0023]テクスチャキューイングメカニズム200において、制御ユニット205は、コマンド225のようなテクスチャコマンドを要求バッファ220に書き込む。ある実施形態では、要求バッファ220は、FIFOである。テクスチャコマンド225は、適用されるべきテクスチャマッピングの形式、マップされるべきテクスチャ、及びテクスチャユニット210から出力されるべき最終的なテクスチャ値の行先を含むテクスチャパラメータを指定する。一実施形態では、テクスチャコマンドは、32ビット長さであり、従って、要求バッファ220は32ビット巾を必要とするだけである。
[0024]テクスチャコマンド225に含まれるテクスチャパラメータに加えて、テクスチャユニット210は、1組のテクスチャ引数も要求し、これは、テクスチャユニット210により使用されるべきテクスチャ座標を含む。通常、テクスチャ引数は、4つのテクスチャ座標値を含む。各テクスチャ座標値が32ビットのフローティングポイント数で表わされる場合には、テクスチャ引数は128ビットを必要とする。1組のテクスチャ引数がテクスチャコマンドと共に要求バッファ220に含まれるべき場合には、要求バッファ220の必要な巾が実質的に増加する。例えば、32ビットのテクスチャコマンドと、128ビットのテクスチャ引数を一緒に記憶する場合には、160ビット巾の要求バッファが必要になる。
[0025]テクスチャコマンド及びそれに関連したテクスチャ引数の両方を受け容れるに充分な大きさの要求バッファを形成するのではなく、本発明の実施形態では、実行ユニットにより使用される1組の汎用レジスタの1つにテクスチャ引数を記憶する。実行ユニットは、レジスタファイル230と称される1組の汎用レジスタを、非テクスチャ関係オペレーションを含むその全ての計算に対して汎用の一時的ワーキングエリアとして使用する。テクスチャ引数をレジスタファイル230に記憶することにより、要求バッファ220のサイズが著しく減少される。更に、以下に述べるように、本発明の一実施形態では、レジスタファイルにテクスチャ引数を記憶することは、本質的に自由である。
[0026]テクスチャコマンド225に対応するテクスチャ引数235は、レジスタファイル230に記憶される。テクスチャユニット210は、要求バッファ220からテクスチャコマンドを次々に検索して処理する。要求バッファ220からテクスチャコマンド225を検索すると、テクスチャユニット210は、レジスタファイル230内のレジスタからテクスチャ引数235も検索する。
[0027]テクスチャユニット210は、テクスチャコマンド225と共に含まれたテクスチャパラメータから、対応する1組のテクスチャ引数を探索する。テクスチャコマンド225は、最終的なテクスチャ値を記憶するためにレジスタファイル230内の行先レジスタを指定する。一実施形態では、テクスチャ引数235は、最終的なテクスチャ値を記憶するのに使用される同じレジスタに位置される。この実施形態では、テクスチャ行先レジスタにテクスチャ引数235を記憶することで、余計なレジスタを消費しない。最終的なテクスチャ値のために、行先レジスタをとっておかねばならないからである。更に、未処理のテクスチャコマンドの数が、レジスタファイルにおけるレジスタの数のみにより制限される。テクスチャマッピングオペレーションが完了すると、テクスチャユニット210は、最終的なテクスチャ値240をレジスタファイル230へ出力し、そしてテクスチャ引数235にオーバーライトする(245)。
[0028]更に別の実施形態では、テクスチャ引数235及び/又は最終的なテクスチャ値240が単一レジスタより大きい。この実施形態では、レジスタファイル230における1組の多数のレジスタを組み合せて使用して、テクスチャ引数235及び/又は最終的なテクスチャ値240を記憶する。更に別の実施形態では、最終的なテクスチャ値240の行先として指定されるレジスタファイル230の1組のレジスタがテクスチャ引数235を記憶するために使用され、これにより、テクスチャコマンド225により必要とされるレジスタの数を減少する。
[0029]ある実施形態では、テクスチャ引数235に最終的なテクスチャ値240をオーバーライトするので、テクスチャ引数235を保存する必要がある場合には、制御ユニット205は、テクスチャコマンドを発行する前に、レジスタファイル230における付加的なレジスタ(1つ又は複数)にテクスチャ引数をコピーすることができる。別の実施形態では、テクスチャコマンド225は、個別のソース及び行先レジスタを指定し、そしてテクスチャユニット210は、指定されたソースレジスタからテクスチャ引数235を検索して、最終的なテクスチャ値240をレジスタファイル230における行先レジスタに記憶する。
[0030]更に別の実施形態では、スコアボードメカニズムを使用して、テクスチャコマンド225に関連したレジスタファイル230内のレジスタをロックし、テクスチャオペレーションが完了するまで実行ユニットがレジスタの内容を変更するのを防止する。ロックされたレジスタには、実行ユニットにより書き込みすることができないが、テクスチャユニット210は、ロックされたレジスタに依然としてアクセスすることができる。
[0031]テクスチャ引数が行先レジスタに記憶される場合には、制御ユニット205は、テクスチャコマンド225が要求バッファ220に入れられたときに、行先レジスタをロックする。行先レジスタは、最終的なテクスチャ値が行先レジスタに書き込まれるまでロックされたままである。上述したように、テクスチャコマンドが発行されたときから行先レジスタがロックされるので、テクスチャ引数を行先レジスタに記憶することで、実行ユニットから余計なレジスタが奪われることはない。
[0032]個別のソース及び行先レジスタの場合には、テクスチャコマンド225が発行されたときに両レジスタが制御ユニット205によりロックされる。テクスチャユニットがソースレジスタからテクスチャ引数を検索した後に、ソースレジスタがアンロックされる。最終的なテクスチャ値が行先レジスタに記憶された後に、行先レジスタもアンロックすることができる。
[0033]一実施形態において、テクスチャユニット210は、パイプライン型であり、異なるテクスチャパイプライン段において異なるテクスチャコマンドを同時に処理することができる。各テクスチャコマンドの結果が正しいレジスタに確実に記憶されるようにするために、テクスチャユニット210の一実施形態は、タグメモリ又はバッファ250を備えている。バッファ250は、その各部分がテクスチャパイプラインの各段に対応する。バッファ250の各部分は、それに対応するテクスチャパイプライン段により処理されるデータに対する行先レジスタを指定する行先レジスタ位置の値を記憶する。データがあるパイプライン段から別の段へ進むにつれて、それに対応する行先レジスタ位置の値が、バッファ250の対応部分へ移動される。
[0034]図3は、本発明の実施形態による多数の実行ユニットを有するグラフィック処理ユニット300のテクスチャキューイングメカニズムを示す。グラフィック処理ユニットは、上述したテクスチャユニット210と機能的に同様の少なくとも1つのテクスチャユニット305を備えている。このテクスチャユニット305は、テクスチャメモリ310に接続され、これは、外部テクスチャメモリに加えて、1つ以上のレベルの内部テクスチャキャッシュを含むことができる。
[0035]テクスチャユニット305は、多数の独立した実行ユニットに接続される。この実施形態では、4つの実行ユニット315、320、325及び330がテクスチャユニット305に接続されるが、グラフィック処理ユニット300の別の実施形態では、いかなる数の実行ユニットがテクスチャユニットに接続されてもよい。各実行ユニットは、幾何学データ、照明の計算及びシェーダープログラムの処理を含む多数の異なるレンダリング関係タスクを実行することができる。
[0036]実行ユニット315のような典型的な実行ユニットは、レンダリング関係タスクを実行するための実行ユニットコア335を備えている。又、実行ユニット315は、頻繁にアクセスされるインストラクション及びデータを記憶するためのキャッシュメモリ340を含むこともできる。あまり頻繁にアクセスされないデータについては、レジスタファイル345は、その全ての計算のための汎用の一時的ワーキングエリアを実行ユニット315に与える。
[0037]ある実施形態ではFIFOである要求バッファ350は、実行ユニットコア335により発行されたテクスチャコマンドを、それらがテクスチャユニット305により実行される準備ができるまで記憶する。実施形態200の場合と同様に、テクスチャコマンドは、要求バッファ350に記憶されるテクスチャパラメータを含む。テクスチャコマンドに関連したテクスチャ引数、例えば、テクスチャ座標は、レジスタファイル345のレジスタに記憶される。
[0038]テクスチャユニット305は、マルチプレクサ370を経て実行ユニット315、320、325及び330の要求バッファ350、355、360及び365に各々接続される。マルチプレクサ370を使用すると、テクスチャユニットは、各実行ユニットの要求バッファから1つ以上の保留中のテクスチャコマンドを交互に検索する。一実施形態では、テクスチャ要求が実行ユニットから「ラウンドロビン」スケジュールで検索される。別の実施形態では、裁定ブロックユニットが、全体的な性能利益を最大にする順序で、実行ユニットから保留中のテクスチャ要求を選択する。
[0039]所与の実行ユニットの要求バッファからテクスチャコマンドを検索するのに関連して、テクスチャユニット305は、実行ユニットのレジスタファイルから対応する1組のテクスチャ引数も検索する。例えば、テクスチャユニット305は、実行ユニット315の要求バッファ350からテクスチャコマンドを、そしてレジスタファイル345のレジスタから対応するテクスチャ引数を検索する。実行ユニット315のレジスタファイル350とテクスチャユニット305との間の通信を容易にするために、グラフィック処理ユニット300の実施形態では、レジスタファイル350とデータバス380との間にデータバス接続385を備え、データバス380は、次いで、データバス接続390を経てテクスチャユニット305に接続される。実行ユニット320、325及び330も、同様のデータバス接続を含むが、明瞭化のために図3から省略されている。更に別の実施形態では、テクスチャユニットの出力375がデータバス380に接続され、実行ユニットのレジスタファイルに最終的なテクスチャ値を通信する。
[0040]各々のテクスチャコマンドが多数の独立した実行ユニットの1つから生成され、又、その各々が多数の独立したスレッドをもち得るので、グラフィック処理ユニット300の別の実施形態では、各テクスチャコマンドのテクスチャコマンドパラメータとしてスレッド状態情報が含まれる。スレッド状態情報は、例えば、スレッド形式及びスレッド識別を含む。スレッド状態情報は、テクスチャユニット305により使用されて、テクスチャコマンドにより参照されたテクスチャを識別すると共に、最終的なテクスチャ値の行先を決定する。
[0041]図4は、本発明の実施形態によるグラフィック処理ユニットのロード及び記憶コマンドキューイングメカニズム400を示す図である。ロード及び記憶コマンドは、データをロード又は記憶するために外部メモリにアクセスするようにグラフィック処理ユニットに命令する。ロード及び記憶コマンドキューイングメカニズム400は、テクスチャキューイングメカニズム200と同様に動作する。
[0042]制御ユニット400は、ロード/記憶ユニット410のオペレーションを、グラフィック処理ユニットの残り部分と整合させる。ロード/記憶ユニット410外部メモリからデータを検索するか又は外部メモリ415にデータを記憶する役割を果たす。一実施形態では、ロード/記憶ユニット410は、制御ユニット205からロード/記憶コマンドを受け取る。ロード/記憶コマンドは、実行されるべきオペレーションの形式(例えば、ロード又は記憶)、及びオペレーションに必要な他のパラメータ、例えば、メモリアドレスを指定する。更に、ロード/記憶コマンドは、通常、メモリに記憶されるべきデータ、又はメモリからロードされるべきデータの行先を必要とする。
[0043]ロード/記憶コマンドキューイングメカニズム400では、制御ユニット405が、ロード/記憶コマンド、例えば、コマンド425を要求バッファ420に書き込む。一実施形態では、要求バッファ420がFIFOである。ロード/記憶コマンド425は、ロード/記憶オペレーションに対するパラメータを指定する。一実施形態では、ロード/記憶コマンドは32ビット長さであり、従って、要求バッファ420は32ビット巾しか必要としない。
[0044]ロード/記憶コマンド425に含まれるパラメータに加えて、ロード/記憶ユニット410は、記憶コマンドの場合にはデータを、又はロードコマンドの場合には行先レジスタを要求する。ロード/記憶コマンド及びその関連データの両方を受け容れるに充分な大きさの要求バッファを生成するのではなく、本発明の実施形態では、レジスタファイル430のレジスタ435に記憶コマンドに対するデータが記憶される。レジスタファイル430にテクスチャ引数を記憶することにより、要求バッファ420のサイズが相当に減少される。同様に、レジスタ435は、ロードオペレーションにより検索されたデータに対する行先レジスタとして働く。
[0045]ロード/記憶ユニット410は、要求バッファ420からロード/記憶コマンドを順次に検索して処理する。要求バッファ420から記憶コマンド425を検索すると、ロード/記憶ユニット410は、レジスタファイル430内のレジスタ435からもデータを検索する(450)。ロードコマンドは、ロードされるデータを記憶するために、レジスタファイル430内のレジスタ435のようなレジスタを指定する。ロードオペレーションが完了すると、ロード/記憶ユニット410は、ロードされるデータ455をレジスタファイル430へ出力し、該データはレジスタ435へ書き込まれる。
[0046]更に別の実施形態では、スコアボードメカニズムを使用して、ロード/記憶コマンド425に関連したレジスタファイル430内のレジスタをロックし、ロード/記憶オペレーションが完了するまで実行ユニットがレジスタの内容を変更するのを防止する。ロックされたレジスタは、実行ユニットによって書き込むことはできないが、ロード/記憶ユニット410は、ロックされたレジスタに依然としてアクセスすることができる。記憶オペレーションについては、記憶コマンドが要求バッファ420に入れられたときに、制御ユニット405がレジスタ435をロックする。このレジスタは、ロード/記憶ユニットがレジスタ435からデータを検索するまでロックされたままとなる。ロードオペレーションについては、ロードされるデータの行先レジスタとして働くレジスタ435は、要求バッファ420にロードコマンドが入れられたときにロックされる。このレジスタは、ロード/記憶ユニットがロードオペレーションを完了するまでロックされたままであり、ロードされるデータ455はレジスタ435に記憶される。
[0047]一実施形態では、ロード/記憶ユニット410は、パイプライン型であり、異なるテクスチャパイプライン段において異なるロード/記憶コマンドを同時に処理することができる。各ロードコマンドの結果が正しいレジスタに確実に記憶されるようにするために、ロード/記憶ユニット410の一実施形態は、タグメモリ又はバッファ465を備えている。
[0048]本発明は、グラフィック処理ユニットが、大きなテクスチャ要求バッファを必要とせずに、テクスチャ要求の可変性をバランスさせるように非常に多数のテクスチャ要求をキューイングできるようにする。一実施形態では、テクスチャユニットにより計算された最終的なテクスチャ値の行先として指定された汎用レジスタにテクスチャ引数が記憶される。テクスチャコマンドがキューイングされるときに最終的なテクスチャ値に対して行先レジスタを割り当てねばならないので、このレジスタにテクスチャ引数を記憶しても、付加的なレジスタを消費することにはならない。以上、本発明の特定の実施形態及び実施例を説明したが、これらは単なる例示に過ぎず、本発明を何ら限定するものではない。従って、本発明の範囲は、特許請求の範囲のみにより決定される。
本発明の実施形態を具現化するのに適したコンピュータシステムを示す図である。
本発明の実施形態によるグラフィック処理ユニットのテクスチャキューイングメカニズムを示す図である。
本発明の実施形態による多数の実行ユニットを有するグラフィック処理ユニットのテクスチャキューイングメカニズムを示す図である。
本発明の実施形態によるグラフィック処理ユニットのロード及び記憶コマンドキューイングメカニズムを示す図である。
符号の説明
100・・・コンピュータシステム、105・・・中央処理ユニット(CPU)、110・・・メモリ、115・・・記憶装置、120・・・ユーザ入力、125・・・ネットワークインターフェイス、130・・・グラフィックサブシステム、135・・・グラフィック処理ユニット(GPU)、140・・・表示メモリ、145・・・付加的なメモリ、150・・・ディスプレイ、200・・・テクスチャキューイングメカニズム、205・・・制御ユニット、210・・・テクスチャユニット、215・・・テクスチャメモリ、220・・・要求バッファ、225・・・コマンド、230・・・レジスタファイル、235・・・テクスチャ引数、240・・・最終的なテクスチャ値、250・・・タグメモリ又はバッファ、300・・・グラフィック処理ユニット、305・・・テクスチャユニット、310・・・テクスチャメモリ、315、320、325、330・・・実行ユニット、335・・・実行ユニットコア、340・・・キャッシュメモリ、345・・・レジスタファイル、350・・・要求バッファ、380・・・データバス、385、390・・・データバス接続、400・・・ロード及び記憶コマンドキューイングメカニズム、405・・・制御ユニット、410・・・ロード/記憶ユニット、420・・・要求バッファ、425・・・コマンド、430・・・レジスタファイル、465・・・タグメモリ又はバッファ。