(57)【要約】圧縮表面へのシェーダ書き込みを実行するシステム、装置及び方法が開示される。一実施形態では、プロセッサは、少なくともメモリと、１つ以上のシェーダユニットと、を備える。一実施形態では、プロセッサの第１シェーダユニットは、圧縮表面を対象とする書き込み要求を受信するように構成されている。第１シェーダユニットは、書き込み要求の対象となる圧縮表面の第１ブロックを識別するように構成されている。第１シェーダユニットは、書き込み要求のデータが第１ブロック全体未満を対象としていると判別したことに応じて、第１ブロックをキャッシュから読み出し、第１ブロックを圧縮解除する。次に、第１シェーダユニットは、書き込み要求のデータを、圧縮解除された第１ブロックと統合する。次いで、シェーダユニットは、統合されたデータを圧縮してキャッシュに書き込む。【選択図】図２
2020518876.tif 000002
【特許請求の範囲】
【請求項１】
キャッシュと、
前記キャッシュに接続された１つ以上のシェーダユニットと、を備えるプロセッサであって、
前記１つ以上のシェーダユニットのうち何れかのシェーダユニットは、圧縮表面を対象とする書き込み要求に応じて、
前記書き込み要求の対象となる前記圧縮表面の第１ブロックを識別することと、
前記第１ブロックをフェッチして圧縮解除するロジックをアクティブにするかどうかを決定することと、
第１条件を検出したことに応じて、前記第１ブロックをフェッチして圧縮解除するロジックがアクティブにされるのを抑制することと、前記書き込み要求のデータを圧縮して、新たな第１ブロックを形成することと、前記新たな第１ブロックを前記キャッシュに書き込むことと、
を行うように構成されている、
プロセッサ。
【請求項２】
前記第１条件は、前記第１ブロックのデータが単一の値に設定されているのを判別することであり、前記シェーダユニットは、前記書き込み要求のデータを前記単一の値のデータと統合した後に、前記統合されたデータを圧縮して前記新たな第１ブロックを形成することを行うように構成されている、
請求項１のプロセッサ。
【請求項３】
前記第１条件は、前記書き込み要求のデータが前記第１ブロック全体を更新することを判別することであり、前記シェーダユニットは、前記キャッシュ内の前記第１ブロックを前記新たな第１ブロックで上書きすることを行うように構成されている、
請求項１のプロセッサ。
【請求項４】
前記シェーダユニットは、第２条件を検出したことに応じて、
前記第１ブロックをフェッチして圧縮解除するロジックをアクティブにすることと、
前記書き込み要求のデータを前記圧縮解除された第１ブロックと統合して、新たな第１ブロックを形成することと、
前記新たな第１ブロックを圧縮して前記キャッシュに書き込むことと、
を行うように構成されている、
請求項１のプロセッサ。
【請求項５】
前記第２条件は、前記書き込み要求のデータが前記第１ブロック全体未満を対象としていることを判別することである、
請求項４のプロセッサ。
【請求項６】
前記シェーダユニットは、前記第１ブロックに関連するメタデータにアクセスすることを行うように構成されており、前記メタデータは、前記第１ブロックを圧縮するのに使用される圧縮のタイプを指定する情報を含む、
請求項５のプロセッサ。
【請求項７】
前記シェーダユニットは、前記第１ブロックを圧縮解除するために前記情報を利用することを行うように構成されている、
請求項６のプロセッサ。
【請求項８】
コンピューティングデバイスで使用される方法であって、
圧縮表面を対象とする第１書き込み要求を受信することと、
シェーダユニットが、前記第１書き込み要求の対象となる前記圧縮表面の第１ブロックを識別することと、
前記シェーダユニットが、前記第１ブロックをフェッチして圧縮解除するロジックをアクティブにするかどうかを決定することと、
前記シェーダユニットが、前記第１ブロックが定数値に設定されていると判別したことに応じて、前記第１ブロックをフェッチして圧縮解除するロジックがアクティブにされるのを抑制することと、前記書き込み要求のデータを圧縮して、新たな第１ブロックを形成することと、前記新たな第１ブロックを前記キャッシュに書き込むことと、を含む、
方法。
【請求項９】
前記第１条件は、前記第１ブロックのデータが単一の値に設定されているのを判別することであり、前記方法は、前記書き込み要求のデータを前記単一の値のデータと統合した後に、前記統合されたデータを圧縮して前記新たな第１ブロックを形成することを含む、
請求項８の方法。
【請求項１０】
前記第１条件は、前記書き込み要求のデータが前記第１ブロック全体を更新することを判別することであり、前記方法は、前記キャッシュ内の前記第１ブロックを前記新たな第１ブロックで上書きすることを含む、
請求項８の方法。
【請求項１１】
前記方法は、第２条件を検出したことに応じて、
前記第１ブロックをフェッチして圧縮解除するロジックをアクティブにすることと、
前記書き込み要求の前記データを前記圧縮解除された第１ブロックと統合して、新たな第１ブロックを形成することと、
前記新たな第１のブロックを圧縮して前記キャッシュに書き込むことと、を含む、
請求項８の方法。
【請求項１２】
前記第２条件は、前記書き込み要求のデータが前記第１ブロック全体未満を対象としていることを判別することである、
請求項１１の方法。
【請求項１３】
前記第１ブロックに関連するメタデータにアクセスすることを含み、前記メタデータは、前記第１ブロックを圧縮するのに使用される圧縮のタイプを指定する情報を含む、
請求項１２の方法。
【請求項１４】
前記第１ブロックを圧縮解除するために前記情報を利用することを含む、
請求項１１の方法。
【請求項１５】
メモリと、
前記メモリに接続されたプロセッサであって、１つ以上のシェーダユニットを含むプロセッサと、を備えるシステムであって、
前記１つ以上のシェーダユニットのうち何れかのシェーダユニットは、圧縮表面を対象とする書き込み要求に応じて、
前記書き込み要求の対象となる前記圧縮表面の第１ブロックを識別することと、
前記第１ブロックをフェッチして圧縮解除するロジックをアクティブにするかどうかを決定することと、
第１条件を検出したことに応じて、前記第１ブロックをフェッチして圧縮解除するロジックがアクティブにされるのを抑制することと、前記書き込み要求のデータを圧縮して、新たな第１ブロックを形成することと、前記新たな第１ブロックを前記キャッシュに書き込むことと、
を行うように構成されている、
システム。
【請求項１６】
前記第１条件は、前記第１ブロックのデータが単一の値に設定されているのを判別することであり、前記シェーダユニットは、前記書き込み要求のデータを前記単一の値のデータと統合した後に、前記統合されたデータを圧縮して前記新たな第１ブロックを形成することを行うように構成されている、
請求項１５のシステム。
【請求項１７】
前記第１条件は、前記書き込み要求のデータが前記第１ブロック全体を更新することを判別することであり、前記シェーダユニットは、前記キャッシュ内の前記第１ブロックを前記新たな第１ブロックで上書きすることを行うように構成されている、
請求項１５のシステム。
【請求項１８】
前記シェーダユニットは、第２条件を検出したことに応じて、
前記第１ブロックをフェッチして圧縮解除するロジックをアクティブにすることと、
前記書き込み要求のデータを前記圧縮解除された第１ブロックと統合して、新たな第１ブロックを形成することと、
前記新たな第１ブロックを圧縮して前記キャッシュに書き込むことと、
を行うように構成されている、
請求項１５のシステム。
【請求項１９】
前記第２条件は、前記書き込み要求のデータが前記第１ブロック全体未満を対象としていることを判別することである、
請求項１５のシステム。
【請求項２０】
前記シェーダユニットは、前記第１ブロックに関連するメタデータにアクセスすることを行うように構成されており、前記メタデータは、前記第１ブロックを圧縮するのに使用される圧縮のタイプを指定する情報を含む、
請求項１９のシステム。
【発明の詳細な説明】
【背景技術】
【０００１】
グラフィックス処理ユニット（ＧＰＵ）は、グラフィックス処理タスクを実行するように構成された複雑な集積回路である。例えば、ＧＰＵは、ビデオゲームアプリケーション等のエンドユーザアプリケーションが必要とするグラフィックス処理タスクを実行することができる。ＧＰＵは、個別のデバイスであってもよいし、例えば中央処理装置（ＣＰＵ）等の別のプロセッサと同じデバイスに含まれていてもよい。ＧＰＵは、レンダリングと呼ばれる処理において、コンポーネントの上位レベルの記述から、イメージを構成するピクセルを生成する。ＧＰＵは、通常、ピクセル、テクスチャ及び幾何学的データを処理するための計算要素を使用することによって、連続的なレンダリングの概念を利用する。計算要素は、ラスタライザ、セットアップエンジン、カラーブレンダ、隠面消去、テクスチャマッピング等の機能を実行することができる。これらの計算要素は、シェーダ、シェーダプロセッサ、シェーダアレイ、シェーダユニット、シェーダエンジン等と呼ばれることが多く、「シェーダ」は、コンピュータグラフィックスにおける用語であり、レンダリングエフェクトを実行するためにグラフィックスリソースによって用いられるソフトウェア命令のセット又はプログラムを指す。また、「シェーダ」は、ソフトウェア命令を実行するために使用される実際のハードウェアコンポーネント又はプロセッサを指すことができる。シェーダプロセッサ又はプログラムは、データを読み出してレンダリングし、何れかのタイプのデータ処理を実行することができる。
【０００２】
複雑なグラフィックシーンの生成に伴う処理の多くは、テクスチャデータに関係する。テクスチャは、例えば、色、透明度、ルックアップテーブル、他のデータ等の様々なタイプのデータとすることができる。いくつかの実施形態では、テクスチャは、視覚的な詳細を追加するために幾何学的形状に描かれるデジタル化された画像とすることができる。モデルをレンダリングして目的のイメージを生成する際に、テクスチャを使用して、大量の詳細をグラフィカルモデルの表面にマッピングすることができる。テクスチャマッピングの目的は、オブジェクトの表面に現実的な外観を与えることである。テクスチャは、色、鏡面反射等の表面プロパティ、法線マップやバンプマップの形式での表面の詳細等の多くのプロパティを指定することができる。また、テクスチャは、画像データ、色又は透明度データ、粗度／平滑度データ、反射性データ等とすることができる。
【０００３】
３Ｄコンピュータグラフィックスでは、通常、テクスチャを使用して、オブジェクトの表面の詳細を追加する。例えば、レンガ壁の２Ｄビットマップ画像を、テクスチャマッピングを使用して、建物の３Ｄモデルを表すポリゴンのセットに適用し、当該オブジェクトの３Ｄレンダリングに対してレンガから構成された外観を与えることができる。現実的なコンピュータグラフィックスを実現するには、通常、多くの高品質で詳細なテクスチャを必要とする。テクスチャを使用すると、大量のストレージ空間及び帯域幅を消費する可能性があり、結果として、ストレージ空間及び帯域幅の利用を低減するためにテクスチャを圧縮することができる。
【０００４】
テクスチャ及び表面を圧縮すると、グラフィックスシステムのストレージコスト及び帯域幅コストを低減することができると共に、元のテクスチャ及び表面の品質をできるだけ維持することができる。グラフィックス処理の１つの課題は、メモリ又はキャッシュの帯域幅によってＧＰＵの機能が制限されていることである。圧縮を使用すると、ＧＰＵによる処理のためにメモリ又はキャッシュからフェッチされるデータの量を低減することができる。ＧＰＵが出力イメージ又は深さ／ステンシル表面を生成する場合、ＧＰＵは、これらの表面を圧縮して、メモリ／キャッシュの帯域幅及び利用を減らすことができる。ソフトウェアアプリケーションは、最終的なイメージをディスプレイに送信する前に、これらの表面を後処理することができる。通常、ソフトウェアアプリケーションは、出力イメージの任意の部分を更新する前に、出力イメージ全体を圧縮解除する。しかしながら、ＧＰＵによってレンダリングされるシーンでは、シーンが時間と共に変化する場合に、シーンの一部のみの更新を要する場合がある。例えば、ビデオゲームアプリケーションでは、ユーザは、壁に発射して、壁に弾痕を生じさせることができる。壁を表す表面を更新するために、壁の一部のみを更新する必要がある。しかしながら、圧縮されたリソース（圧縮リソース）の一部を更新する処理は、非効率である場合がある。したがって、圧縮リソースを管理するための改善された技術が望まれている。
【０００５】
添付の図面と共に以下の説明を参照することによって、本明細書で説明する方法及びメカニズムの利点をより良く理解することができる。
【図面の簡単な説明】
【０００６】
【図１】コンピューティングシステムの一実施形態のブロック図である。
【図２】ＧＰＵの一実施形態のブロック図である。
【図３】キャッシュアービタ及びキャッシュの一実施形態のブロック図である。
【図４】コンプレッサモジュールの一実施形態のブロック図である。
【図５】圧縮された表面（圧縮表面）への書き込みを実行する方法の一実施形態を示す一般化されたフロー図である。
【図６】表面の圧縮されたブロック（圧縮ブロック）への書き込み要求を処理する方法の一実施形態を示す一般化されたフロー図である。
【図７】表面の圧縮されていないブロック（非圧縮ブロック）への書き込み要求を処理する方法の一実施形態を示す一般化されたフロー図である。
【図８】圧縮表面への書き込みを実行する方法の別の実施形態を示す一般化されたフロー図である。
【発明を実施するための形態】
【０００７】
以下の説明では、本明細書で提示される方法及びメカニズムの完全な理解を提供するために、多くの特定の詳細が示される。しかしながら、当業者は、様々な実施形態がこれらの特定の詳細無しに実施されてもよいことを認識するべきである。いくつかの例では、周知の構造、コンポーネント、信号、コンピュータプログラム命令及び技術は、本明細書で説明するアプローチを不明瞭にしないように、詳細に示されていない。説明を簡単且つ明確にするために、図面に示す要素は必ずしも縮尺通りに描かれていないことが認識されよう。例えば、一部の要素の寸法は、他の要素に対して誇張されてもよい。
【０００８】
圧縮リソースへのシェーダ書き込みを実行する様々なシステム、装置、方法及びコンピュータ可読記憶媒体が開示される。一実施形態では、プロセッサは、少なくともキャッシュと、１つ以上のシェーダユニットと、を含む。一実施形態では、プロセッサの第１シェーダユニットは、圧縮表面を対象とする書き込み要求を受信するように構成されている。第１シェーダユニットは、書き込み要求の対象となる圧縮表面の第１ブロックを識別するように構成されている。また、第１シェーダは、書き込み要求のデータの対象が第１ブロック全体よりも少ないかどうかを判別するように構成されている。第１シェーダユニットは、書き込み要求のデータの対象が第１ブロック全体よりも少ないと判別した場合、第１ブロックをキャッシュから読み出し、第１ブロックを圧縮解除する。次に、第１シェーダユニットは、書き込み要求のデータを、圧縮解除された第１ブロックと統合する。次いで、シェーダユニットは、統合されたデータを圧縮してキャッシュに書き込む。一実施形態では、第１シェーダユニットは、書き込み要求のデータが第１ブロック全体を更新すると判別した場合、書き込み要求のデータを圧縮し、次に、キャッシュ内の第１ブロックを圧縮されたデータ（圧縮データ）で上書きする。
【０００９】
一実施形態では、第１シェーダユニットは、第１ブロックに関連するメタデータにアクセスするように構成されており、メタデータは、第１ブロックを圧縮するのに使用される圧縮のタイプを指定する情報を含む。一実施形態では、メタデータは、メタデータキャッシュに記憶されている。第１シェーダユニットは、第１ブロックを圧縮解除するために情報を利用するように構成されている。一実施形態では、第１シェーダユニットは、第１ブロックが定数値に設定されているかどうかを判別するように構成されている。第１ブロックが定数値に設定されている場合、第１シェーダユニットは、キャッシュから第１ブロックを読み出すのをスキップすることができる。代わりに、第１シェーダユニットは、書き込み要求のデータを定数値のデータと統合する。次いで、第１シェーダユニットは、統合されたデータを圧縮してキャッシュに書き込む。
【００１０】
ここで、図１を参照すると、コンピューティングシステム１００の一実施形態のブロック図が示されている。一実施形態では、コンピューティングシステム１００は、メモリ１５０に接続されたシステムオンチップ（ＳｏＣ）１０５を含む。ＳｏＣ１０５は、集積回路（ＩＣ）と呼ぶこともできる。一実施形態では、ＳｏＣ１０５は、処理ユニット１１５Ａ〜１１５Ｎと、入出力（Ｉ／Ｏ）インタフェース１１０と、共有キャッシュ１２０Ａ〜１２０Ｂと、ファブリック１２５と、グラフィックス処理ユニット１３０と、メモリコントローラ１４０と、を含む。また、ＳｏＣ１０５は、図面を曖昧にすることを避けるために、図１に示されていない他のコンポーネントを含むことができる。処理ユニット１１５Ａ〜１１５Ｎは、任意の数及びタイプの処理ユニットを表す。一実施形態では、処理ユニット１１５Ａ〜１１５Ｎは、中央処理装置（ＣＰＵ）コアである。別の実施形態では、処理ユニット１１５Ａ〜１１５Ｎのうち１つ以上は、他のタイプの処理ユニット（例えば、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、デジタルシグナルプロセッサ（ＤＳＰ））である。処理ユニット１１５Ａ〜１１５Ｎは、共有キャッシュ１２０Ａ〜１２０Ｂ及びファブリック１２５に接続されている。
【００１１】
一実施形態では、処理ユニット１１５Ａ〜１１５Ｎは、特定の命令セットアーキテクチャ（ＩＳＡ）の命令を実行するように構成されている。各処理ユニット１１５Ａ〜１１５Ｎは、１つ以上の実行ユニット、キャッシュメモリ、スケジューラ及び分岐予測回路等を含む。一実施形態では、処理ユニット１１５Ａ〜１１５Ｎは、システム１００の主要な制御ソフトウェア（オペレーティングシステム等）を実行するように構成されている。概して、使用中に処理ユニット１１５Ａ〜１１５Ｎによって実行されるソフトウェアは、システム１００の所望の機能を実現するために、システム１００の他のコンポーネントを制御することができる。また、処理ユニット１１５Ａ〜１１５Ｎは、アプリケーションプログラム等の他のソフトウェアを実行することもできる。
【００１２】
ＧＰＵ１３０は、コンプレッサモジュール１３５と、キャッシュ１３８と、計算ユニット１４５Ａ〜１４５Ｎと、を含み、計算ユニット１４５Ａ〜１４５Ｎは、グラフィックス又は汎用処理に使用される任意の数及びタイプの計算ユニットを表す。ＧＰＵ１３０は、共有キャッシュ１２０Ａ〜１２０Ｂ及びファブリック１２５に接続されている。一実施形態では、ＧＰＵ１３０は、描画コマンド、ピクセル演算、幾何学的計算、及び、画像をディスプレイにレンダリングするための他の演算等のグラフィックスパイプライン演算を実行するように構成されている。別の実施形態では、ＧＰＵ１３０は、グラフィックスに関連しない演算を実行するように構成されている。更なる実施形態では、ＧＰＵ１３０は、グラフィックス演算及び非グラフィック関連演算の両方を実行するように構成されている。
【００１３】
一実施形態では、ＧＰＵ１３０は、キャッシュ１３８に記憶された圧縮表面への書き込み動作を実行するように構成されている。一実施形態では、圧縮表面のブロックの一部への書き込み要求について、ＧＰＵ１３０は、書き込み要求のデータをブロックの他の部分と統合するように構成されている。次に、ＧＰＵ１３０は、コンプレッサモジュール１３５を用いて、統合されたデータを圧縮し、圧縮データをキャッシュ１３８に書き込む。一実施形態では、ＧＰＵ１３０は、書き込み要求を受信したことに応じて、書き込み要求が表面の圧縮ブロックを対象としているかどうかを判別するように構成されている。書き込み要求が表面の非圧縮ブロックを対象としている場合、ＧＰＵ１３０は、圧縮解除ステップをスキップし、書き込み要求のデータを非圧縮ブロックと統合する。各ブロックのサイズは、実施形態毎に変えることができる。
【００１４】
Ｉ／Ｏインタフェース１１０は、ファブリック１２５に接続されており、任意の数及びタイプのインタフェース（例えば、周辺機器相互接続（ＰＣＩ）バス、ＰＣＩ拡張（ＰＣＩ−Ｘ）、ＰＣＩＥ（ＰＣＩエクスプレス）バス、ギガビットイーサネット（登録商標）（ＧＢＥ）バス、ユニバーサルシリアルバス（ＵＳＢ））を表す。様々なタイプの周辺デバイスをＩ／Ｏインタフェース１１０に接続することができる。かかる周辺デバイスは、ディスプレイ、キーボード、マウス、プリンタ、スキャナ、ジョイスティック又は他のタイプのゲームコントローラ、メディア記録デバイス、外部ストレージデバイス、及び、ネットワークインタフェースカード等を含むが、これらに限定されない。
【００１５】
ＳｏＣ１０５は、１つ以上のメモリモジュールを含むメモリ１５０に接続されている。各メモリモジュールは、自身に取り付けられた１つ以上のメモリデバイスを含む。いくつかの実施形態では、メモリ１５０は、マザーボード、又は、ＳｏＣ１０５が取り付けられた他のキャリアに取り付けられている１つ以上のメモリデバイスを含む。一実施形態では、メモリ１５０は、動作中にＳｏＣ１０５と共に使用されるランダムアクセスメモリ（ＲＡＭ）を実装するために使用される。実装されるＲＡＭは、スタティックＲＡＭ（ＳＲＡＭ）、ダイナミックＲＡＭ（ＤＲＡＭ）、抵抗変化ＲＡＭ（ＲｅＲＡＭ）、相変化ＲＡＭ（ＰＣＲＡＭ）、又は、他の揮発性若しくは不揮発性ＲＡＭとすることができる。メモリ１５０を実装するために使用されるＤＲＡＭのタイプは、ダブルデータレート（ＤＤＲ）ＤＲＡＭ、ＤＤＲ２  ＤＲＡＭ、ＤＤＲ３  ＤＲＡＭ等を含むが、これらに限定されない。図１に明確に示されていないが、ＳｏＣ１０５は、処理ユニット１１５Ａ〜１１５Ｎ及び／又は計算ユニット１４５Ａ〜１４５Ｎの内部にある１つ以上のキャッシュメモリを含むことができる。いくつかの実施形態では、ＳｏＣ１０５は、処理ユニット１１５Ａ〜１１５Ｎ及び計算ユニット１４５Ａ〜１４５Ｎによって利用される共有キャッシュ１２０Ａ〜１２０Ｂを含む。一実施形態では、キャッシュ１２０Ａ〜１２０Ｂは、キャッシュコントローラを含むキャッシュサブシステムの一部である。
【００１６】
様々な実施形態では、コンピューティングシステム１００は、コンピュータ、ラップトップ、モバイルデバイス、サーバ、又は、様々な他のタイプのコンピューティングシステム若しくはデバイスとすることができる。コンピューティングシステム１００及び／又はＳｏＣ１０５のコンポーネントの数は、実施形態毎に変えることができることに留意されたい。各コンポーネント／サブコンポーネントの数は、図１に示す数より多くてもよいし、少なくてもよい。例えば、別の実施形態では、ＳｏＣ１０５は、複数のメモリに接続された複数のメモリコントローラを含むことができる。コンピューティングシステム１００及び／又はＳｏＣ１０５は、図１に示されていない他のコンポーネントを含むことができることに留意されたい。また、他の実施形態では、コンピューティングシステム１００及びＳｏＣ１０５を、図１に示す以外の方法で構成することができる。
【００１７】
次に、図２を参照すると、グラフィックス処理ユニット（ＧＰＵ）２００の一実施形態のブロック図が示されている。一実施形態では、ＧＰＵ２００のロジックは、（図１の）ＧＰＵ１３０に含まれている。一実施形態では、ＧＰＵ２００は、少なくともシェーダアレイ２１５Ａ〜２１５Ｄと、コマンドセンタハブ（command center hub）２２０と、ファブリック２２５と、キャッシュ２３０と、を含む。図面を曖昧にすることを避けるために、ＧＰＵ２００は、図２に示されていない他のロジック及び／又は他のコンポーネントを含むことに留意されたい。ＧＰＵ２００の構造は、一実施形態で使用される構造の一例に過ぎないことにも留意されたい。他の実施形態では、ＧＰＵ２００を他の方法で構成することができる。
【００１８】
シェーダアレイ２１５Ａ〜２１５Ｄは、ＧＰＵ２００に含まれる任意の数及びタイプのシェーダ計算リソースを表す。シェーダアレイ２１５Ａ〜２１５Ｄを、「シェーダユニット」と呼ぶこともできる。各シェーダアレイ２１５Ａ〜Ｄは、グラフィックスをレンダリングするために、幾何学的形状、頂点、ピクセル、及び／又は、他のシェーディング操作を実行するための様々な計算リソースを含む。様々な実施形態では、計算リソースは、命令をフェッチ及び復号するためのコンポーネント、算術計算を実行するための１つ以上の算術ロジックユニット「ＡＬＵ」、及び、他のリソースを含む。図２に示されていないが、各シェーダアレイ２１５Ａ〜２１５Ｄは、レベル１（Ｌ１）キャッシュを含むことができる。シェーダアレイ２１５Ａ〜２１５Ｄは、ファブリック２２５を介してキャッシュ２３０に接続されている。一実施形態では、キャッシュ２３０は、レベル２（Ｌ２）キャッシュである。実施形態に応じて、キャッシュ２３０は、メモリ（図示省略）又は別のレベルのキャッシュ（図示省略）に接続されている。コマンドセンタハブ２２０は、任意の数及びタイプのコマンドプロセッサ、スケジューラ、及び、他のコマンド処理リソースを表す。
【００１９】
一実施形態では、コンプレッサモジュール２３５は、キャッシュ２３０内に配置されている。別の実施形態では、コンプレッサモジュール２３５は、ファブリック２２５内に配置されている。一実施形態では、ＧＰＵ２００が表面への書き込み要求を処理する場合、コンプレッサモジュール２３５は、書き込み要求のデータを、表面の対象ブロックの非圧縮データと統合するように構成されている。次いで、統合されたデータは、圧縮され、キャッシュ２３０に書き戻される。
【００２０】
次に、図３を参照すると、キャッシュアービタ３０２及びキャッシュ３０４の一実施形態のブロック図が示されている。一実施形態では、キャッシュアービタ３０２は、キャッシュ３０４のインタフェースブロック３０６に接続されている。キャッシュアービタ３０２は、キャッシュ３０４に記憶されたデータを対象とする要求のために、読み出し及び書き込み要求をインタフェースブロック３０６に送るように構成されている。インタフェースブロック３０６は、非圧縮表面を対象とする要求をタグアレイ３１２に送り、圧縮表面を対象とする要求をコンプレッサモジュール３０８に送る。非圧縮の書き込みデータは、ソース先入れ先出しモジュール（ＦＩＦＯ）３１０に送られる。
【００２１】
コンプレッサモジュール３０８は、メタデータキャッシュ３１４のルックアップを実行して、対象とする表面の所定のブロックが圧縮されているかどうか、及び、対象とする表面の所定のブロックがどのように圧縮されているかを判別する。コンプレッサモジュール３０８は、データアレイ３１６からデータを受信し、圧縮データを圧縮解除する。一実施形態では、コンプレッサモジュール３０８は、書き込みデータを、圧縮解除された所定の表面ブロックからのデータと統合する。次に、コンプレッサモジュール３０８は、統合されたデータを再圧縮し、再圧縮され統合されたデータを、ソースＦＩＦＯ３１０に送信する。他の実施形態では、表面の圧縮ブロックへの書き込みを管理し、データを圧縮解除し、データを統合し、データを圧縮するためのロジックを、キャッシュ３０４内で他の方法で構成することができることに留意されたい。
【００２２】
次に、図４を参照すると、コンプレッサモジュール４０２の一実施形態のブロック図が示されている。一実施形態では、コンプレッサモジュール４０２のコンポーネントは、（図３の）コンプレッサモジュール３０８に含まれている。圧縮表面を対象とする要求は、仮想ＦＩＦＯ４０４に送られ、非圧縮表面を対象とする要求は、タグアレイ（図示省略）に送られる。仮想ＦＩＦＯ４０４は、相互に順序付けられた要求のアドレスを維持する。一実施形態では、リンクリスト構造を利用して、仮想ＦＩＦＯ４０４内の相互要求の順序を維持する。また、仮想ＦＩＦＯ４０４は、表面のブロックの一部のみを対象とする書き込み要求のために、読み出し要求をプリフェッチすることを可能にする。例えば、仮想ＦＩＦＯ４０４内の要求が、圧縮解除及び統合パス上で読み出し−変更−書き込みを必要とする場合、要求が仮想ＦＩＦＯ４０４内で待機している間、当該要求に対してプリフェッチ要求が生成される。一実施形態では、所定の数のプリフェッチ要求を所定時間未処理とすることができ、当該所与の数は、実施形態毎に異なる。プリフェッチ要求が戻ってくると、データが統合され、コンプレッサ４３４をアービトレートする。仮想ＦＩＦＯ４０４に記憶された書き込み要求が、対象とするブロック全体を完全に上書きする場合には、要求を処理する前に、キャッシュからブロックをプリフェッチするための読み出し要求が生成されない。要求は、仮想ＦＩＦＯ４０４から物理ＦＩＦＯ４０６に排出される。一実施形態では、物理ＦＩＦＯ４０６は、フロップベースのＦＩＦＯである。
【００２３】
書き込み要求が表面のブロック全体を上書きする場合、プリフェッチ要求が生成されず、書き込み要求は、１つのコンプレッサ４３４をアービトレートする。次に、ソースデータは、要求が最初に書き込んだソースデータＲＡＭ４２４からフェッチされる。次いで、ソースデータは、キャッシュへのパスに書き込まれる。対象とするブロックの一部のみを対象とする書き込み要求の場合、対象とするブロックの他の部分をキャッシュから読み出すプリフェッチ読み出し要求が生成される。リードバックデータは、リターン制御ロジック４３８に送られ、次に、リードデータＲＡＭ４２６及びフロップ４３２に送られる。
【００２４】
要求物理ＦＩＦＯ４０６は、バースト書き込み制御ロジック４０８と、マルチプレクサ（又は、ｍｕｘ）４１２，４１４，４２８，４３０と、に接続されている。読み出し制御ロジック４１８及び非オペレーション書き込み制御ロジック４２０の各々は、ｍｕｘ４２８，４３０の各々に対して選択信号を提供する。統合制御ロジック４１６は、ｍｕｘ４１２，４１４に対して選択信号を提供する。対象とするブロックの一部のみを上書きするデータを有する書き込み要求の場合、統合制御ロジック４１６は、書き込みデータを、対象とするブロックの他の影響を受けない部分と統合するように構成されている。統合制御ロジック４１６は、要求キュー状態４１０と、ｍｕｘ４１２，４１４と、フロップ４３２と、圧縮制御ロジック４２２と、に接続されている。統合データは、圧縮制御ロジック４２２に送られ、次に、コンプレッサ４３４に送られて圧縮された後にキャッシュに書き込まれる。また、コンプレッサ４３４は、ｍｕｘ４４０に接続された書き込み制御ロジック４３６に接続されており、ｍｕｘ４４０の出力は、メタデータキャッシュ（図示省略）に接続されている。
【００２５】
様々な構造の隣に表示される文字「Ｎ」は、概して、当該構造に関する要素の数（例えば、１つの記憶要素を含む要求仮想ＦＩＦＯ４０４内の記憶要素の数）を示すことを意味することに留意されたい。また、文字「Ｎ」を使用する図４の異なる符号（例えば、仮想ＦＩＦＯ４０４及び要求キュー状態４１０）は、同じ数の異なる要素が設けられていることを示すことを意図していない（例えば、要求仮想ＦＩＦＯ４０４内の記憶要素の数は、要求キュー状態４１０の記憶要素の数と異なることがある）。
【００２６】
次に、図５を参照すると、圧縮表面への書き込みを実行する方法５００の一実施形態が示されている。説明目的として、本実施形態におけるステップ及び図６〜図８のステップが順番に示されている。しかしながら、説明する方法の様々な実施形態では、説明する要素のうち１つ以上は、同時に実行されてもよいし、図示したものとは異なる順序で実行されてもよいし、完全に省略されてもよいことに留意されたい。必要に応じて、他の追加の要素が実行されてもよい。本明細書で説明する様々なシステム又は装置は、方法５００を実施するように構成されている。
【００２７】
プロセッサのシェーダユニットは、圧縮表面を対象とする書き込み要求を受信する（ブロック５０５）。プロセッサは、実施形態に応じて、任意の数のシェーダユニットを含む。次に、シェーダユニットは、書き込み要求の対象となる圧縮表面の第１ブロックを識別する（ブロック５１０）。一実施形態では、表面は、複数のブロックに区画され、ブロックの各々は、他のブロックから独立して圧縮される。表面の「ブロック」は、本明細書では、表面の「一部」と呼ぶこともできることに留意されたい。
【００２８】
次に、シェーダユニットは、書き込み要求のデータが第１ブロックの全体未満を対象としているかどうかを判別する（条件付きブロック５１５）。書き込み要求のデータが第１ブロックの全体未満を対象としている場合（条件付きブロック５１５：「はい」）、シェーダユニットは、第１ブロックをキャッシュから読み出して圧縮解除する（ブロック５２０）。別の実施形態では、シェーダユニットは、第１ブロックをメモリから読み出す。次に、シェーダユニットは、書き込み要求のデータを、圧縮解除された第１ブロックと統合する（ブロック５２５）。次いで、シェーダユニットは、統合されたデータを圧縮してキャッシュに書き込む（ブロック５３０）。別の実施形態では、シェーダユニットは、統合されたデータをメモリに書き込む。
【００２９】
書き込み要求のデータが第１ブロック全体を対象とする場合（条件付きブロック５１５：「いいえ」）、シェーダユニットは、書き込み要求のデータを圧縮する（ブロック５３５）。この場合、シェーダユニットは、第１ブロックをキャッシュからフェッチし、第１ブロックを圧縮解除するステップをスキップする。次に、第１シェーダは、キャッシュ内の第１ブロックを、書き込み要求の圧縮データで上書きする（ブロック５４０）。ブロック５３０，５４０の後、方法５００は終了する。
【００３０】
次に、図６を参照すると、表面の圧縮ブロックへの書き込み要求を処理する方法６００の一実施形態が示されている。プロセッサのシェーダユニットは、表面の圧縮ブロックを対象とする書き込み要求を受信する（ブロック６０５）。シェーダユニットは、書き込み要求を受信したことに応じて、圧縮ブロックに関連するメタデータにアクセスする（ブロック６１０）。一実施形態では、メタデータは、第１ブロックを圧縮するのに使用される圧縮のタイプを指定する情報を含む。一実施形態では、デルタカラー圧縮（ＤＣＣ）は、第１ブロックを圧縮するのに使用される圧縮のタイプである。一実施形態では、メタデータは、メタデータキャッシュに記憶される。
【００３１】
次に、シェーダユニットは、圧縮ブロックのデータが単一の値に設定されているかどうかを、メタデータから判別する（条件付きブロック６１５）。一実施形態では、圧縮ブロックがＤＣＣを使用して圧縮される場合、クリア設定は、圧縮ブロックが単一の値（例えば、０．０、１．０）に設定されることを示す。説明目的として、書き込み要求のデータが圧縮ブロック全体を上書きしないことを想定する。圧縮ブロックが単一の値に設定されている場合（条件付きブロック６１５：「はい」）、シェーダユニットは、書き込み要求のデータを、単一の値のデータと統合する（ブロック６２０）。次に、シェーダユニットは、統合されたデータを圧縮してキャッシュに書き込む（ブロック６２５）。圧縮ブロックが単一の値に設定されていない場合（条件付きブロック６１５：「いいえ」）、シェーダユニットは、圧縮ブロックをフェッチして圧縮解除する（ブロック６３０）。次に、シェーダユニットは、書き込み要求のデータを、圧縮解除されたブロックのデータと統合する（ブロック６３５）。次いで、シェーダユニットは、統合されたデータを圧縮してキャッシュに書き込む（ブロック６２５）。ブロック６２５の後、方法６００は終了する。
【００３２】
次に、図７を参照すると、表面の非圧縮ブロックへの書き込みを処理する方法７００の一実施形態が示されている。プロセッサのシェーダユニットは、表面の非圧縮ブロックを対象とする書き込み要求を受信する（ブロック７０５）。次に、シェーダユニットは、非圧縮ブロックをキャッシュから読み出す（ブロック７１０）。次いで、シェーダユニットは、書き込み要求のデータを非圧縮ブロックと統合する（ブロック７１５）。説明目的として、書き込み要求のデータが圧縮ブロック全体を上書きしないことを想定する。しかしながら、書き込み要求のデータが圧縮ブロック全体に上書きする場合、ブロック７１０，７１５をスキップすることができる。次に、シェーダユニットは、統合されたデータをキャッシュに書き戻す（ブロック７２０）。場合によっては、シェーダユニットは、統合されたデータを圧縮することができ、圧縮され統合されたデータをキャッシュに書き戻すことができる。ブロック７２０の後、方法７００は終了する。
【００３３】
次に、図８を参照すると、圧縮表面への書き込みを処理する方法８００の別の実施形態が示されている。シェーダユニットは、圧縮表面を対象とする書き込み要求を受信する（ブロック８０５）。シェーダユニットは、書き込み要求の対象となる圧縮表面の第１ブロックを識別する（ブロック８１０）。次に、シェーダユニットは、第１ブロックをフェッチして圧縮解除するロジックをアクティブにするかどうかを決定する（ブロック８１５）。一実施形態では、第１ブロックをフェッチして圧縮解除するロジックをアクティブにするかどうかの決定は、１つ以上の条件の検出に基づいている。
【００３４】
シェーダユニットは、第１条件を検出した場合（条件付きブロック８２０：「はい」）、シェーダユニットは、第１ブロックをフェッチして圧縮解除するロジックがアクティブにされるのを抑制する（ブロック８２５）。一実施形態では、第１条件は、第１ブロックの全てのデータが単一の値に設定されているのを判別することである。一実施形態では、シェーダユニットは、第１ブロックに関連するメタデータを取り出すことによって、第１ブロックの全てのデータが単一の値に設定されているのを判別する。単一の値は、０．０、１．０、又は、これらの間の別の値とすることができる。第１ブロックのデータがクリアされていることをメタデータが示す場合、第１ブロックが単一の値に設定されていることを示している。別の実施形態では、第１条件は、書き込み要求のデータが第１ブロック全体を更新すると判別することである。他の実施形態では、第１条件は、他のイベント及び／又は指標を含むことができる。
【００３５】
ブロック８２５の後、シェーダユニットは、書き込み要求のデータを圧縮して、新たな第１ブロックを形成する（ブロック８３０）。一実施形態では、書き込み要求のデータは、「ピクセルデータ」又は「ピクセル」と呼ぶこともできる。次に、シェーダユニットは、新たな第１ブロックをキャッシュに書き込む（ブロック８３５）。実施形態に応じて、シェーダユニットは、新たな第１ブロックをキャッシュに書き込む前に、新たな第１ブロックを圧縮してもよいし、圧縮しなくてもよい。
【００３６】
シェーダユニットが第１条件を検出しない場合（条件付きブロック８２０：「いいえ」）、シェーダユニットは、第２条件が検出されたかどうかを判別する（条件付きブロック８４０）。一実施形態では、第２条件は、書き込み要求のデータが第１ブロック全体未満を対象としていると判別することである。他の実施形態では、第２条件は、他のイベント及び／又は指標を含むことができる。第２条件が検出された場合（条件付きブロック８４０：「はい」）、シェーダユニットは、第１ブロックをフェッチして圧縮解除するロジックをアクティブにする（ブロック８４５）。次に、シェーダユニットは、書き込み要求のデータを圧縮解除された第１ブロックと統合して、新たな第１ブロックを形成する（ブロック８５０）。次いで、シェーダユニットは、新たな第１ブロックを圧縮してキャッシュに書き込む（ブロック８５５）。
【００３７】
第２条件が検出されない場合（条件付きブロック８４０：「いいえ」）、シェーダユニットは、第１ブロックをフェッチして圧縮解除するロジックがアクティブにされるのを抑制する（ブロック８６０）。一実施形態では、第２条件が検出されない場合には、書き込み要求のデータが第１ブロック全体を対象としていることを示す。ブロック８６０の後、シェーダユニットは、書き込み要求のデータを圧縮して、新たな第１ブロックを形成する（ブロック８６５）。次に、シェーダユニットは、キャッシュ内の第１ブロックを、新たな第１ブロックで上書きする（ブロック８７０）。ブロック８３５，８５５，８７０の後、方法８００は終了する。
【００３８】
様々な実施形態では、ソフトウェアアプリケーションのプログラム命令を用いて、上述した方法及び／又はメカニズムを実施する。プログラム命令は、高水準プログラミング言語（例えば、Ｃ等）でハードウェアの動作を記述する。或いは、Ｖｅｒｉｌｏｇ等のハードウェア設計言語（ＨＤＬ）が使用される。プログラム命令は、非一時的なコンピュータ可読記憶媒体に記憶される。多くのタイプの記憶媒体が利用可能である。記憶媒体は、使用中にコンピューティングシステムによってアクセス可能であり、プログラム命令及びこれに付随するデータを、プログラムの実行のためにコンピューティングシステムに提供する。コンピューティングシステムは、少なくとも１つ以上のメモリと、プログラム命令を実行するように構成された１つ以上のプロセッサと、を含む。
【００３９】
上述した実施形態は、実装態様の非限定的な例に過ぎないことを強調しておきたい。上記の開示が十分に理解されれば、多くの変形及び修正が当業者に明らかになるであろう。以下の特許請求の範囲は、このような変形及び修正を全て包含するように解釈されることが意図される。
【図１】
2020518876.tif 000003
【図２】
2020518876.tif 000004
【図３】
2020518876.tif 000005
【図４】
2020518876.tif 000006
【図５】
2020518876.tif 000007
【図６】
2020518876.tif 000008
【図７】
2020518876.tif 000009
【図８】
2020518876.tif 000010
【国際調査報告】
2020518876.tif 000011
2020518876.tif 000012