(57)【要約】  グラフィック処理ユニットは、大きなテクスチャ要求バッファを必要とせずに、テクスチャ要求の可変性をバランスさせるように非常に多数のテクスチャ要求をキューイングできる。専用のテクスチャ要求バッファは、比較的小さなテクスチャコマンド及びパラメータをキューイングする。更に、各々のキューイングされるテクスチャコマンドに対して、通常はテクスチャコマンドより相当に大きい、関連する１組のテクスチャ引数が、汎用レジスタに記憶される。テクスチャユニットは、テクスチャ要求バッファからテクスチャコマンドを検索し、次いで、適当な汎用レジスタから関連するテクスチャ引数をフェッチする。テクスチャユニットにより計算された最終的なテクスチャ値の行先として指定された汎用レジスタにテクスチャ引数が記憶される。テクスチャコマンドがキューイングされるときに最終的なテクスチャ値に対して行先レジスタを割り当てねばならないので、テクスチャ引数をこのレジスタに記憶することで、付加的なレジスタが消費されることはない。【選択図】      図２
2007525768.tif 000002
【特許請求の範囲】
【請求項１】
ピクセルをテクスチャ処理する方法であって、
レジスタファイルの汎用レジスタにテクスチャ引数を記憶するステップと、
前記テクスチャ引数に関連したテクスチャコマンドをテクスチャ要求バッファへ発行するステップと、
前記テクスチャ要求バッファから前記テクスチャコマンドを検索するステップと、
前記汎用レジスタから前記テクスチャ引数を検索するステップと、
前記テクスチャコマンドを実行して、最終的なテクスチャ値を生成するステップと、
前記最終的なテクスチャ値を前記レジスタファイルに記憶するステップと、
を含む方法。
【請求項２】
前記最終的なテクスチャ値を前記レジスタファイルの前記汎用レジスタに記憶し、これにより、前記テクスチャ引数にオーバーライトする、請求項１に記載の方法。
【請求項３】
前記最終的なテクスチャ値を前記レジスタファイルの第２の汎用レジスタに記憶する、請求項１に記載の方法。
【請求項４】
前記テクスチャコマンドはテクスチャパラメータを含む、請求項１に記載の方法。
【請求項５】
前記テクスチャパラメータはテクスチャマッピング形式を指定する、請求項４に記載の方法。
【請求項６】
前記テクスチャパラメータはテクスチャマップを指定する、請求項４に記載の方法。
【請求項７】
テクスチャ引数を検索する前記ステップは、前記テクスチャパラメータから前記汎用レジスタを識別することを含む、請求項４に記載の方法。
【請求項８】
前記テクスチャパラメータは、前記最終的なテクスチャ値を記憶するための行先レジスタとして前記汎用レジスタを指定する、請求項７に記載の方法。
【請求項９】
前記テクスチャパラメータは、前記テクスチャ引数を記憶する前記汎用レジスタと、前記最終的なテクスチャ値を記憶する第２の汎用レジスタとを指定する、請求項７に記載の方法。
【請求項１０】
テクスチャコマンドの発行に応答して前記テクスチャ引数への変化を防止するために前記汎用レジスタをロックするステップと、
前記最終的なテクスチャ値を記憶するのに続いて、前記汎用レジスタをアンロックするステップと、
を更に含む請求項１に記載の方法。
【請求項１１】
前記レジスタファイル及び前記テクスチャ要求バッファは、第１実行ユニットに含まれており、
前記方法は、
テクスチャ引数を記憶し、テクスチャコマンドを発行し、テクスチャコマンドを検索し、テクスチャ引数を検索し、テクスチャコマンドを実行し、そして最終的なテクスチャ値を記憶するという前記ステップを、第２レジスタファイル及び第２テクスチャ要求バッファを含む第２実行ユニットに対して繰り返すステップ、
を更に含む請求項１に記載の方法。
【請求項１２】
前記テクスチャ引数は１組のテクスチャ座標を含む、請求項１に記載の方法。
【請求項１３】
テクスチャ要求バッファと複数の汎用レジスタを含むレジスタファイルとを有する実行ユニットであって、前記テクスチャ要求バッファへテクスチャコマンドを発行すると共に、前記レジスタファイルにテクスチャ引数を記憶する実行ユニットと、
前記テクスチャ要求バッファから前記テクスチャコマンドを読み取ると共に、前記レジスタファイルから前記テクスチャ引数を検索するテクスチャユニットと、を備え、
前記テクスチャユニットは、更に、前記テクスチャコマンドに応答してテクスチャマップの一部分を検索し、前記テクスチャマップの一部分から最終的なテクスチャ値を計算し、そしてその最終的なテクスチャ値を前記レジスタファイルの複数のレジスタの行先レジスタに記憶する、グラフィック処理サブシステム。
【請求項１４】
前記実行ユニットは、前記複数のレジスタの行先レジスタに前記テクスチャ引数を記憶し、前記テクスチャユニットは、前記最終的なテクスチャ値を記憶する際に前記テクスチャ引数にオーバーライトする、請求項１３に記載のグラフィック処理サブシステム。
【請求項１５】
前記実行ユニットは、前記複数のレジスタのソースレジスタに前記テクスチャ引数を記憶し、前記ソースレジスタは、前記行先レジスタとは個別である、請求項１３に記載のグラフィック処理サブシステム。
【請求項１６】
前記テクスチャコマンドはテクスチャパラメータを含む、請求項１３に記載のグラフィック処理サブシステム。
【請求項１７】
前記テクスチャパラメータはテクスチャマッピング形式を指定する、請求項１６に記載のグラフィック処理サブシステム。
【請求項１８】
前記テクスチャパラメータはテクスチャマップを指定する、請求項１６に記載のグラフィック処理サブシステム。
【請求項１９】
前記テクスチャユニットは、更に、前記テクスチャ引数を記憶する前記複数のレジスタのソースレジスタを前記テクスチャパラメータから決定する、請求項１６に記載のグラフィック処理サブシステム。
【請求項２０】
前記テクスチャパラメータは、前記複数のレジスタの行先レジスタが前記複数のレジスタのソースレジスタでもあることを指定する、請求項１９に記載のグラフィック処理サブシステム。
【請求項２１】
前記テクスチャパラメータは、前記複数のレジスタのソースレジスタ及び行先レジスタを指定し、前記ソースレジスタは前記行先レジスタとは個別である、請求項１９に記載のグラフィック処理サブシステム。
【請求項２２】
前記実行ユニットは、更に、テクスチャコマンドの発行に応答して前記テクスチャ引数への変化を防止するために前記行先レジスタをロックし、前記テクスチャユニットが前記行先レジスタに前記最終的なテクスチャ値を記憶するのに応答して前記行先レジスタをアンロックする、請求項１３に記載のグラフィック処理サブシステム。
【請求項２３】
前記実行ユニットは、テクスチャコマンドの発行に応答して前記テクスチャ引数への変化を防止するために前記ソースレジスタをロックし、前記テクスチャユニットが前記レジスタファイルから前記テクスチャ引数を検索するのに応答して前記ソースレジスタをアンロックする、請求項１５に記載のグラフィック処理サブシステム。
【請求項２４】
第２のテクスチャ要求バッファと複数の汎用レジスタを含む第２のレジスタファイルとを有する第２の実行ユニットであって、前記第２のテクスチャ要求バッファへ第２のテクスチャコマンドを発行すると共に、前記第２のレジスタファイルに第２のテクスチャ引数を記憶する第２の実行ユニットを更に備え、
前記テクスチャユニットは、更に、前記第２のテクスチャ要求バッファから前記第２のテクスチャコマンドを読み取り、前記第２のレジスタファイルから前記第２のテクスチャ引数を検索し、前記第２のテクスチャコマンドに応答して前記テクスチャメモリから第２のテクスチャマップの一部分を検索し、前記テクスチャマップの一部分から第２の最終的なテクスチャ値を計算し、そしてその第２の最終的なテクスチャ値を前記第２のレジスタファイルの複数のレジスタのうちの行先レジスタに記憶する、請求項１３に記載のグラフィック処理サブシステム。
【請求項２５】
前記第１実行ユニット及び第２実行ユニットを前記テクスチャユニットに交互に接続するマルチプレクサスイッチを更に備える、請求項２４に記載のグラフィック処理サブシステム。
【請求項２６】
前記テクスチャユニットは、ラウンドロビンスケジュールに基づいて前記第１実行ユニット及び第２実行ユニットに接続される、請求項２５に記載のグラフィック処理サブシステム。
【請求項２７】
前記テクスチャユニットは、前記グラフィック処理サブシステムの性能を最大にするためのプライオリティファンクションに基づいて、前記第１実行ユニット及び第２実行ユニットに接続される、請求項２５に記載のグラフィック処理サブシステム。
【請求項２８】
前記テクスチャユニットに接続されて、テクスチャマップを記憶するテクスチャメモリを更に備える、請求項１３に記載のグラフィック処理サブシステム。
【発明の詳細な説明】
【発明の背景】
【０００１】
[0001]本発明は、コンピュータグラフィックの分野に係る。多くのコンピュータグラフィック映像は、所与の視点からの三次元シーンと光との相互作用を数学的にモデリングすることにより生成される。レンダリングと称されるこのプロセスは、所与の視点からのシーンの二次元映像を生成し、これは、実世界シーンの写真を撮影するのと同様である。
【０００２】
[0002]コンピュータグラフィック、特に、リアルタイムコンピュータグラフィックの需要が高まるにつれて、レンダリングプロセスを加速するグラフィック処理サブシステムを伴うコンピュータシステムが普及してきた。これらのコンピュータシステムでは、レンダリングプロセスが、コンピュータの汎用中央処理ユニット（ＣＰＵ）とグラフィック処理サブシステムとの間で分割される。通常、ＣＰＵは、高レベルオペレーションを実行し、例えば、所与のシーンにおいて物体の位置、動き及び衝突を決定する。これらの高レベルオペレーションから、ＣＰＵは、希望のレンダリングされた映像（１つ又は複数）を定義する１組のレンダリングコマンド及びデータを生成する。例えば、レンダリングコマンド及びデータは、シーンの幾何学形状、照明、陰影、テクスチャ、動き、及び／又はシーンに対するカメラパラメータを定義することができる。グラフィック処理サブシステムは、１組のレンダリングコマンド及びデータから１つ以上のレンダリングされた映像を生成する。
【０００３】
[0003]典型的なグラフィック処理サブシステムは、１つ以上の実行ユニット及び１つ以上のテクスチャユニットを有するグラフィック処理ユニットを備えている。他のタスクの中でも、実行ユニットは、幾何学形状及び照明情報を処理する役割を果たす。テクスチャユニットは、メモリに記憶されたテクスチャマップからテクセルデータを検索することによりシーンの幾何学形状のテクスチャマッピングを実行する。テクセルデータは、実行ユニットにより生成されるピクセルデータと合成されて、レンダリングされる映像のピクセルのカラー値を決定する。
【０００４】
[0004]実行ユニット及びテクスチャユニットは、通常、性能を最大にするために乗り越えるべき異なる障害がある。実行ユニットは、通常、深く主として固定された処理パイプラインを有し、これは、典型的な実行ユニットに対するパイプラインストールを性能に関して非常に高価なものにする。パイプラインストールを減少するために、レンダリングアプリケーションは、しばしば、多数の独立した実行スレッドに分割されて、実行ユニットを最大限利用するようにしている。
【０００５】
[0005]これに対して、テクスチャユニットの主たる性能上のボトルネックは、テクセルデータを検索することからメモリ待ち時間が生じることである。このボトルネックは、実行ユニットが、時間とともにテクスチャコマンドを配布するのではなく、テクスチャコマンドのバッチを一緒に発行するという傾向により、悪化される。多数のスレッドが多数の実行ユニットにおいて実行される状態では、テクスチャコマンドの不規則なタイミングは、テクスチャユニットの性能を著しく低下させる。
【０００６】
[0006]テクスチャコマンドのバーストを平坦化するために、バッファ、例えば、先入れ先出しバッファ（ＦＩＦＯ）を使用して、テクスチャユニットへ送られるテクスチャコマンドをキューイングすることができる。しかしながら、テクスチャコマンドは、しばしば、大量の関連データを含む。例えば、典型的なテクスチャコマンド及びその関連データは、１００ビットのデータを大幅に越えることがある。この幅のＦＩＦＯは、グラフィック処理ユニットにおいて大量の回路面積を消費し、他の特徴部に使用できる面積の量を減少させる。
【０００７】
[0007]それ故、グラフィック処理システムが、大きなＦＩＦＯを使用せずに、テクスチャコマンドを効率的にキューイングすることが要望される。更に、テクスチャキューイングメカニズムを、多数の実行ユニット共に使用するときに効率的にスケーリングすることも要望される。
【発明の簡単な概要】
【０００８】
[0008]本発明は、グラフィック処理ユニットが、大きなテクスチャ要求バッファを必要とせずに、テクスチャ要求の可変性をバランスさせるように非常に多数のテクスチャ要求をキューイングできるようにする。一実施形態において、専用のテクスチャ要求バッファは、比較的小さなテクスチャコマンド及びパラメータをキューイングする。更に、各々のキューイングされるテクスチャコマンドに対して、通常はテクスチャコマンドより相当に大きい、関連する１組のテクスチャ引数（アーギュメント）が、汎用レジスタに記憶される。テクスチャユニットは、テクスチャ要求バッファからテクスチャコマンドを検索し、次いで、適当な汎用レジスタから関連するテクスチャ引数をフェッチする。更に別の実施形態では、テクスチャユニットにより計算された最終的なテクスチャ値の行先として指定された汎用レジスタにテクスチャ引数が記憶される。テクスチャコマンドがキューイングされるときに最終的なテクスチャ値に対して行先レジスタを割り当てねばならないので、テクスチャ引数をこのレジスタに記憶することで、付加的なレジスタが消費されることはない。
【０００９】
[0009]一実施形態では、グラフィック処理サブシステムは、テクスチャ要求バッファ及びレジスタファイルを含む実行ユニットを備えている。レジスタファイルは、複数の汎用レジスタを含む。実行ユニットは、テクスチャ要求バッファへテクスチャコマンドを発行すると共に、レジスタファイルにテクスチャ引数を記憶する。テクスチャユニットは、テクスチャ要求バッファからテクスチャコマンドを読み取ると共に、レジスタファイルからテクスチャ引数を検索する。テクスチャユニットは、更に、テクスチャコマンドに応答してテクスチャマップの一部分を検索するようにも適応される。テクスチャユニットは、テクスチャマップのその一部分から最終的なテクスチャ値を計算し、そしてその最終的なテクスチャ値をレジスタファイルの行先レジスタに記憶する。
【００１０】
[0010]更に別の実施形態では、実行ユニットは、複数のレジスタのうちの行先レジスタにテクスチャ引数を記憶し、テクスチャユニットは、最終的なテクスチャ値を記憶する際にテクスチャ引数にオーバーライトする。別の実施形態では、実行ユニットは、行先レジスタとは個別のソースレジスタにテクスチャ引数を記憶する。
【００１１】
[0011]別の実施形態では、テクスチャコマンドは、テクスチャパラメータを含む。又、テクスチャコマンドは、テクスチャマッピング形式及び／又はテクスチャマップを指定してもよい。更に別の実施形態では、テクスチャユニットは、テクスチャパラメータから、テクスチャ引数を記憶するソースレジスタを決定する。テクスチャパラメータは、複数のレジスタのうちの行先レジスタが、複数のレジスタのうちのソースレジスタでもあることを指定する。
【００１２】
[0012]更に別の実施形態では、実行ユニットは、テクスチャコマンドの発行に応答してテクスチャ引数に変化が生じるのを防止するために行先レジスタをロックする。実行ユニットは、テクスチャユニットが行先レジスタに最終的なテクスチャ値を記憶するのに応答して行先レジスタをアンロックする。
【００１３】
[0013]付加的な実施形態では、第２の実行ユニットが、第２のテクスチャ要求バッファ及び第２のレジスタファイルを備えている。この第２のレジスタファイルは、複数の汎用レジスタを含む。第２の実行ユニットは、第２のテクスチャ要求バッファへ第２のテクスチャコマンドを発行すると共に、第２のレジスタファイルに第２のテクスチャ引数を記憶する。テクスチャユニットは、更に、第２のテクスチャ要求バッファから第２のテクスチャコマンドを読み取り、第２のレジスタファイルから第２のテクスチャ引数を検索し、第２のテクスチャコマンドに応答してテクスチャメモリから第２のテクスチャマップの一部分を検索し、そのテクスチャマップの一部分から第２の最終的なテクスチャ値を計算し、そして第２のレジスタファイルの複数のレジスタのうちの行先レジスタに第２の最終的なテクスチャ値を記憶する。
【００１４】
[0014]以下、添付図面を参照して、本発明を説明する。
【発明の詳細な説明】
【００１５】
[0015]図１は、本発明の実施形態を実施するのに適したパーソナルコンピュータ、ビデオゲームコンソール、パーソナルデジタルアシスタント、セルラー電話、又は他のデジタル装置のようなコンピュータシステム１００のブロック図である。このコンピュータシステム１００は、ソフトウェアアプリケーション、及び任意であるが、オペレーティングシステムを実行するための中央処理ユニット（ＣＰＵ）１０５を備えている。一実施形態では、ＣＰＵ１０５は、実際には、パラレルに動作する多数の個別の中央処理ユニットである。メモリ１１０は、ＣＰＵ１０５により使用するためのアプリケーション及びデータを記憶する。記憶装置１１５は、アプリケーション及びデータのための不揮発性記憶装置をなすもので、固定ディスクドライブ、取り外し可能なディスクドライブ、フラッシュメモリ又は他のソリッドステートデバイス、及びＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ又は他の光学的記憶装置を含んでもよい。ユーザ入力装置１２０は、１人以上のユーザからのユーザ入力をコンピュータシステム１００へ通信するもので、キーボード、マウス、ジョイスティック、タッチスクリーン、及び／又はマイクロホンを含んでもよい。ネットワークインターフェイス１２５は、コンピュータシステム１００が電子通信ネットワークを経て他のコンピュータシステムと通信するのを許すもので、ローカルエリアネットワーク、及びインターネットのようなワイドエリアネットワークを経て行われるワイヤード又はワイヤレス通信を含んでもよい。ＣＰＵ１０５、メモリ１１０、データ記憶装置１１５、ユーザ入力装置１２０、及びネットワークインターフェイス１２５を含むコンピュータシステム１００のコンポーネントは、１つ以上のデータバス１６０を経て接続される。データバスは、例えば、ＩＳＡ、ＰＣＩ、ＡＧＰ、ＰＣＩ、ＰＣＩ−Ｘ（３ＧＩＯとしても知られている）、及びＨｙｐｅｒＴｒａｎｓｐｏｒｔデータバスを含む。
【００１６】
[0016]グラフィックサブシステム１３０は、データバス１６０、及びコンピュータシステム１００のコンポーネントに更に接続される。グラフィックサブシステム１３０は、グラフィック処理ユニット（ＧＰＵ）１３５及びグラフィックメモリを備えている。グラフィックメモリは、出力映像の各ピクセルに対してピクセルデータを記憶するのに使用される表示メモリ１４０（例えば、フレームバッファ）を備えている。ピクセルデータは、ＣＰＵ１０５から表示メモリ１４０へ直接供給することができる。或いは、ＣＰＵ１０５が、希望の出力映像を定義するデータ及び／又はコマンドをＧＰＵ１３５に与え、ＧＰＵ１３５が１つ以上の出力映像のピクセルデータを生成する。希望の出力映像を定義するデータ及び／又はコマンドは、付加的なメモリ１４５に記憶される。一実施形態では、ＧＰＵ１３５は、シーンの幾何学形状、照明、陰影、テクスチャ、動き、及び／又はカメラパラメータを定義するレンダリングコマンド及びデータから、出力映像のためのピクセルデータを生成する。
【００１７】
[0017]別の実施形態では、表示メモリ１４０及び／又は付加的なメモリ１４５は、メモリ１１０の一部分であり、ＣＰＵ１０５と共有される。或いは、表示メモリ１４０及び／又は付加的なメモリ１４５は、グラフィックサブシステム１３０を排他的に使用するために設けられる１つ以上の個別のメモリである。グラフィックサブシステム１３０は、表示メモリ２１８からディスプレイ装置１５０に表示される映像のためのピクセルデータを周期的に出力する。ディスプレイ装置１５０は、コンピュータシステム１００からの信号に応答して視覚情報を表示できる任意の装置で、ＣＲＴ、ＬＣＤ、プラズマ及びＯＬＥＤディスプレイ、並びに他の光放射及び光変調技術を含む装置である。コンピュータシステム１００は、ディスプレイ装置１５０にアナログ又はデジタル信号を与えることができる。
【００１８】
[0018]更に別の実施形態において、グラフィック処理サブシステム１３０は、ＧＰＵ１３５と同様の１つ以上の付加的なＧＰＵ１５５を備えている。更に別の実施形態では、グラフィック処理サブシステム１３０は、グラフィックコプロセッサ１６５を備えている。このグラフィック処理コプロセッサ１６５及び付加的なＧＰＵ１５５は、ＧＰＵ１３５とパラレルに動作する。付加的なＧＰＵ１５５は、ＧＰＵ１３５と同様に、レンダリングコマンドから出力イメージのためのピクセルデータを生成する。付加的なＧＰＵ１５５は、ＧＰＵ１３５に関連して動作して、出力映像の異なる部分に対してピクセルデータを同時に生成することもできるし、或いは異なる出力映像に対してピクセルデータを同時に生成することもできる。一実施形態では、グラフィックコプロセッサ１６５は、ＧＰＵ１３５及び／又は付加的なＧＰＵ１５５に対して幾何学形状の変換、シェーダー計算及び裏面抜粋(culling)オペレーションのようなレンダリング関連タスクを遂行する。
【００１９】
[0019]付加的なＧＰＵ１５５は、ＧＰＵ１３５と同じ集積回路、モジュール、チップパッケージ、又は回路板に配置されて、データバス１６０への接続をＧＰＵ１３５と共有することもできるし、或いはデータバス１６０に個別に接続された付加的な回路板に配置することもできる。また、付加的なＧＰＵ１５５は、表示メモリ１４０及び付加的なメモリ１４５と同様に、それら自身の表示メモリ及び付加的なメモリを有することもできるし、或いはメモリ１４０及び１４５をＧＰＵ１３５と共有することもできる。一実施形態では、グラフィックコプロセッサ１６５は、データバス１６０を制御するのに使用されるノースブリッジ(Northbridge)又はサウスブリッジ(Southbridge)チップのようなコンピュータシステムチップセット（図示せず）と一体化される。
【００２０】
[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]本発明は、グラフィック処理ユニットが、大きなテクスチャ要求バッファを必要とせずに、テクスチャ要求の可変性をバランスさせるように非常に多数のテクスチャ要求をキューイングできるようにする。一実施形態では、テクスチャユニットにより計算された最終的なテクスチャ値の行先として指定された汎用レジスタにテクスチャ引数が記憶される。テクスチャコマンドがキューイングされるときに最終的なテクスチャ値に対して行先レジスタを割り当てねばならないので、このレジスタにテクスチャ引数を記憶しても、付加的なレジスタを消費することにはならない。以上、本発明の特定の実施形態及び実施例を説明したが、これらは単なる例示に過ぎず、本発明を何ら限定するものではない。従って、本発明の範囲は、特許請求の範囲のみにより決定される。
【図面の簡単な説明】
【００４９】
【図１】本発明の実施形態を具現化するのに適したコンピュータシステムを示す図である。
【図２】本発明の実施形態によるグラフィック処理ユニットのテクスチャキューイングメカニズムを示す図である。
【図３】本発明の実施形態による多数の実行ユニットを有するグラフィック処理ユニットのテクスチャキューイングメカニズムを示す図である。
【図４】本発明の実施形態によるグラフィック処理ユニットのロード及び記憶コマンドキューイングメカニズムを示す図である。
【符号の説明】
【００５０】
１００・・・コンピュータシステム、１０５・・・中央処理ユニット（ＣＰＵ）、１１０・・・メモリ、１１５・・・記憶装置、１２０・・・ユーザ入力、１２５・・・ネットワークインターフェイス、１３０・・・グラフィックサブシステム、１３５・・・グラフィック処理ユニット（ＧＰＵ）、１４０・・・表示メモリ、１４５・・・付加的なメモリ、１５０・・・ディスプレイ、２００・・・テクスチャキューイングメカニズム、２０５・・・制御ユニット、２１０・・・テクスチャユニット、２１５・・・テクスチャメモリ、２２０・・・要求バッファ、２２５・・・コマンド、２３０・・・レジスタファイル、２３５・・・テクスチャ引数、２４０・・・最終的なテクスチャ値、２５０・・・タグメモリ又はバッファ、３００・・・グラフィック処理ユニット、３０５・・・テクスチャユニット、３１０・・・テクスチャメモリ、３１５、３２０、３２５、３３０・・・実行ユニット、３３５・・・実行ユニットコア、３４０・・・キャッシュメモリ、３４５・・・レジスタファイル、３５０・・・要求バッファ、３８０・・・データバス、３８５、３９０・・・データバス接続、４００・・・ロード及び記憶コマンドキューイングメカニズム、４０５・・・制御ユニット、４１０・・・ロード／記憶ユニット、４２０・・・要求バッファ、４２５・・・コマンド、４３０・・・レジスタファイル、４６５・・・タグメモリ又はバッファ。
【図１】
2007525768.tif 000003
【図２】
2007525768.tif 000004
【図３】
2007525768.tif 000005
【図４】
2007525768.tif 000006
【国際調査報告】
2007525768.tif 000007
2007525768.tif 000008
2007525768.tif 000009