(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-05-23
(45)【発行日】2022-05-31
(54)【発明の名称】圧縮されたリソースへのシェーダ書き込み
(51)【国際特許分類】
G06T 15/00 20110101AFI20220524BHJP
G06F 12/0875 20160101ALI20220524BHJP
【FI】
G06T15/00 501
G06F12/0875 106
(21)【出願番号】P 2019533618
(86)(22)【出願日】2017-12-20
(86)【国際出願番号】 US2017067697
(87)【国際公開番号】W WO2018119131
(87)【国際公開日】2018-06-28
【審査請求日】2020-12-15
(32)【優先日】2016-12-22
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】591016172
【氏名又は名称】アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド
【氏名又は名称原語表記】ADVANCED MICRO DEVICES INCORPORATED
(73)【特許権者】
【識別番号】508301087
【氏名又は名称】エーティーアイ・テクノロジーズ・ユーエルシー
【氏名又は名称原語表記】ATI TECHNOLOGIES ULC
【住所又は居所原語表記】One Commerce Valley Drive East, Markham, Ontario, L3T 7X6 Canada
(74)【代理人】
【識別番号】100108833
【氏名又は名称】早川 裕司
(74)【代理人】
【識別番号】100111615
【氏名又は名称】佐野 良太
(74)【代理人】
【識別番号】100162156
【氏名又は名称】村雨 圭介
(72)【発明者】
【氏名】ジムシェド ミルザ
(72)【発明者】
【氏名】クリストファー ジェイ. ブレナン
(72)【発明者】
【氏名】アンソニー チャン
(72)【発明者】
【氏名】レオン ライ
【審査官】片岡 利延
(56)【参考文献】
【文献】特表2014-502807(JP,A)
【文献】特開2004-005352(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06T 15/00
G06F 12/0875
(57)【特許請求の範囲】
【請求項1】
キャッシュと、
前記キャッシュに接続された1つ以上のシェーダユニットと、を備えるプロセッサであって、
前記1つ以上のシェーダユニットのうち何れかのシェーダユニットは、圧縮表面を対象とする書き込み要求に応じて、
前記書き込み要求の対象となる前記圧縮表面の第1ブロックを識別することと、
前記第1ブロックをフェッチして圧縮解除するロジックをアクティブにするかどうかを決定することと、
第1条件を検出したことに応じて、前記第1ブロックをフェッチして圧縮解除するロジックがアクティブにされるのを抑制することと、前記書き込み要求のデータを圧縮して、新たな第1ブロックを形成することと、前記新たな第1ブロックを前記キャッシュに書き込むことと、
を行うように構成されている、
プロセッサ。
【請求項2】
前記第1条件は、前記第1ブロックのデータが単一の値に設定されているのを判別することであり、前記シェーダユニットは、前記書き込み要求のデータを前記単一の値のデータと統合した後に、前記統合されたデータを圧縮して前記新たな第1ブロックを形成することを行うように構成されている、
請求項1のプロセッサ。
【請求項3】
前記第1条件は、前記書き込み要求のデータが前記第1ブロック全体を更新することを判別することであり、前記シェーダユニットは、前記キャッシュ内の前記第1ブロックを前記新たな第1ブロックで上書きすることを行うように構成されている、
請求項1のプロセッサ。
【請求項4】
前記シェーダユニットは、第2条件を検出したことに応じて、
前記第1ブロックをフェッチして圧縮解除するロジックをアクティブにすることと、
前記書き込み要求のデータを前記圧縮解除された第1ブロックと統合して、新たな第1ブロックを形成することと、
前記新たな第1ブロックを圧縮して前記キャッシュに書き込むことと、
を行うように構成されている、
請求項1のプロセッサ。
【請求項5】
前記第2条件は、前記書き込み要求のデータが前記第1ブロック全体未満を対象としていることを判別することである、
請求項4のプロセッサ。
【請求項6】
前記シェーダユニットは、前記第1ブロックに関連するメタデータにアクセスすることを行うように構成されており、前記メタデータは、前記第1ブロックを圧縮するのに使用される圧縮のタイプを指定する情報を含む、
請求項5のプロセッサ。
【請求項7】
前記シェーダユニットは、前記第1ブロックを圧縮解除するために前記情報を利用することを行うように構成されている、
請求項6のプロセッサ。
【請求項8】
コンピューティングデバイスで使用される方法であって、
圧縮表面を対象とする第1書き込み要求を受信することと、
シェーダユニットが、前記第1書き込み要求の対象となる前記圧縮表面の第1ブロックを識別することと、
前記シェーダユニットが、前記第1ブロックをフェッチして圧縮解除するロジックをアクティブにするかどうかを決定することと、
前記シェーダユニットが、
第1条件を検出したことに応じて、前記第1ブロックをフェッチして圧縮解除するロジックがアクティブにされるのを抑制することと、前記書き込み要求のデータを圧縮して、新たな第1ブロックを形成することと、前記新たな第1ブロック
をキャッシュに書き込むことと、を含む、
方法。
【請求項9】
前記第1条件は、前記第1ブロックのデータが単一の値に設定されているのを判別することであり、前記方法は、前記書き込み要求のデータを前記単一の値のデータと統合した後に、前記統合されたデータを圧縮して前記新たな第1ブロックを形成することを含む、
請求項8の方法。
【請求項10】
前記第1条件は、前記書き込み要求のデータが前記第1ブロック全体を更新することを判別することであり、前記方法は、前記キャッシュ内の前記第1ブロックを前記新たな第1ブロックで上書きすることを含む、
請求項8の方法。
【請求項11】
前記方法は、第2条件を検出したことに応じて、
前記第1ブロックをフェッチして圧縮解除するロジックをアクティブにすることと、
前記書き込み要求の前記データを前記圧縮解除された第1ブロックと統合して、新たな第1ブロックを形成することと、
前記新たな第1のブロックを圧縮して前記キャッシュに書き込むことと、を含む、
請求項8の方法。
【請求項12】
前記第2条件は、前記書き込み要求のデータが前記第1ブロック全体未満を対象としていることを判別することである、
請求項11の方法。
【請求項13】
前記第1ブロックに関連するメタデータにアクセスすることを含み、前記メタデータは、前記第1ブロックを圧縮するのに使用される圧縮のタイプを指定する情報を含む、
請求項12の方法。
【請求項14】
前記第1ブロックを圧縮解除するために前記情報を利用することを含む、
請求項
13の方法。
【請求項15】
メモリと、
前記メモリに接続されたプロセッサであって、1つ以上のシェーダユニットを含むプロセッサと、を備えるシステムであって、
前記1つ以上のシェーダユニットのうち何れかのシェーダユニットは、圧縮表面を対象とする書き込み要求に応じて、
前記書き込み要求の対象となる前記圧縮表面の第1ブロックを識別することと、
前記第1ブロックをフェッチして圧縮解除するロジックをアクティブにするかどうかを決定することと、
第1条件を検出したことに応じて、前記第1ブロックをフェッチして圧縮解除するロジックがアクティブにされるのを抑制することと、前記書き込み要求のデータを圧縮して、新たな第1ブロックを形成することと、前記新たな第1ブロック
をキャッシュに書き込むことと、
を行うように構成されている、
システム。
【請求項16】
前記第1条件は、前記第1ブロックのデータが単一の値に設定されているのを判別することであり、前記シェーダユニットは、前記書き込み要求のデータを前記単一の値のデータと統合した後に、前記統合されたデータを圧縮して前記新たな第1ブロックを形成することを行うように構成されている、
請求項15のシステム。
【請求項17】
前記第1条件は、前記書き込み要求のデータが前記第1ブロック全体を更新することを判別することであり、前記シェーダユニットは、前記キャッシュ内の前記第1ブロックを前記新たな第1ブロックで上書きすることを行うように構成されている、
請求項15のシステム。
【請求項18】
前記シェーダユニットは、第2条件を検出したことに応じて、
前記第1ブロックをフェッチして圧縮解除するロジックをアクティブにすることと、
前記書き込み要求のデータを前記圧縮解除された第1ブロックと統合して、新たな第1ブロックを形成することと、
前記新たな第1ブロックを圧縮して前記キャッシュに書き込むことと、
を行うように構成されている、
請求項15のシステム。
【請求項19】
前記第2条件は、前記書き込み要求のデータが前記第1ブロック全体未満を対象としていることを判別することである、
請求項
18のシステム。
【請求項20】
前記シェーダユニットは、前記第1ブロックに関連するメタデータにアクセスすることを行うように構成されており、前記メタデータは、前記第1ブロックを圧縮するのに使用される圧縮のタイプを指定する情報を含む、
請求項19のシステム。
【発明の詳細な説明】
【背景技術】
【0001】
グラフィックス処理ユニット(GPU)は、グラフィックス処理タスクを実行するように構成された複雑な集積回路である。例えば、GPUは、ビデオゲームアプリケーション等のエンドユーザアプリケーションが必要とするグラフィックス処理タスクを実行することができる。GPUは、個別のデバイスであってもよいし、例えば中央処理装置(CPU)等の別のプロセッサと同じデバイスに含まれていてもよい。GPUは、レンダリングと呼ばれる処理において、コンポーネントの上位レベルの記述から、イメージを構成するピクセルを生成する。GPUは、通常、ピクセル、テクスチャ及び幾何学的データを処理するための計算要素を使用することによって、連続的なレンダリングの概念を利用する。計算要素は、ラスタライザ、セットアップエンジン、カラーブレンダ、隠面消去、テクスチャマッピング等の機能を実行することができる。これらの計算要素は、シェーダ、シェーダプロセッサ、シェーダアレイ、シェーダユニット、シェーダエンジン等と呼ばれることが多く、「シェーダ」は、コンピュータグラフィックスにおける用語であり、レンダリングエフェクトを実行するためにグラフィックスリソースによって用いられるソフトウェア命令のセット又はプログラムを指す。また、「シェーダ」は、ソフトウェア命令を実行するために使用される実際のハードウェアコンポーネント又はプロセッサを指すことができる。シェーダプロセッサ又はプログラムは、データを読み出してレンダリングし、何れかのタイプのデータ処理を実行することができる。
【0002】
複雑なグラフィックシーンの生成に伴う処理の多くは、テクスチャデータに関係する。テクスチャは、例えば、色、透明度、ルックアップテーブル、他のデータ等の様々なタイプのデータとすることができる。いくつかの実施形態では、テクスチャは、視覚的な詳細を追加するために幾何学的形状に描かれるデジタル化された画像とすることができる。モデルをレンダリングして目的のイメージを生成する際に、テクスチャを使用して、大量の詳細をグラフィカルモデルの表面にマッピングすることができる。テクスチャマッピングの目的は、オブジェクトの表面に現実的な外観を与えることである。テクスチャは、色、鏡面反射等の表面プロパティ、法線マップやバンプマップの形式での表面の詳細等の多くのプロパティを指定することができる。また、テクスチャは、画像データ、色又は透明度データ、粗度/平滑度データ、反射性データ等とすることができる。
【0003】
3Dコンピュータグラフィックスでは、通常、テクスチャを使用して、オブジェクトの表面の詳細を追加する。例えば、レンガ壁の2Dビットマップ画像を、テクスチャマッピングを使用して、建物の3Dモデルを表すポリゴンのセットに適用し、当該オブジェクトの3Dレンダリングに対してレンガから構成された外観を与えることができる。現実的なコンピュータグラフィックスを実現するには、通常、多くの高品質で詳細なテクスチャを必要とする。テクスチャを使用すると、大量のストレージ空間及び帯域幅を消費する可能性があり、結果として、ストレージ空間及び帯域幅の利用を低減するためにテクスチャを圧縮することができる。
【0004】
テクスチャ及び表面を圧縮すると、グラフィックスシステムのストレージコスト及び帯域幅コストを低減することができると共に、元のテクスチャ及び表面の品質をできるだけ維持することができる。グラフィックス処理の1つの課題は、メモリ又はキャッシュの帯域幅によってGPUの機能が制限されていることである。圧縮を使用すると、GPUによる処理のためにメモリ又はキャッシュからフェッチされるデータの量を低減することができる。GPUが出力イメージ又は深さ/ステンシル表面を生成する場合、GPUは、これらの表面を圧縮して、メモリ/キャッシュの帯域幅及び利用を減らすことができる。ソフトウェアアプリケーションは、最終的なイメージをディスプレイに送信する前に、これらの表面を後処理することができる。通常、ソフトウェアアプリケーションは、出力イメージの任意の部分を更新する前に、出力イメージ全体を圧縮解除する。しかしながら、GPUによってレンダリングされるシーンでは、シーンが時間と共に変化する場合に、シーンの一部のみの更新を要する場合がある。例えば、ビデオゲームアプリケーションでは、ユーザは、壁に発射して、壁に弾痕を生じさせることができる。壁を表す表面を更新するために、壁の一部のみを更新する必要がある。しかしながら、圧縮されたリソース(圧縮リソース)の一部を更新する処理は、非効率である場合がある。したがって、圧縮リソースを管理するための改善された技術が望まれている。
【0005】
添付の図面と共に以下の説明を参照することによって、本明細書で説明する方法及びメカニズムの利点をより良く理解することができる。
【図面の簡単な説明】
【0006】
【
図1】コンピューティングシステムの一実施形態のブロック図である。
【
図3】キャッシュアービタ及びキャッシュの一実施形態のブロック図である。
【
図4】コンプレッサモジュールの一実施形態のブロック図である。
【
図5】圧縮された表面(圧縮表面)への書き込みを実行する方法の一実施形態を示す一般化されたフロー図である。
【
図6】表面の圧縮されたブロック(圧縮ブロック)への書き込み要求を処理する方法の一実施形態を示す一般化されたフロー図である。
【
図7】表面の圧縮されていないブロック(非圧縮ブロック)への書き込み要求を処理する方法の一実施形態を示す一般化されたフロー図である。
【
図8】圧縮表面への書き込みを実行する方法の別の実施形態を示す一般化されたフロー図である。
【発明を実施するための形態】
【0007】
以下の説明では、本明細書で提示される方法及びメカニズムの完全な理解を提供するために、多くの特定の詳細が示される。しかしながら、当業者は、様々な実施形態がこれらの特定の詳細無しに実施されてもよいことを認識するべきである。いくつかの例では、周知の構造、コンポーネント、信号、コンピュータプログラム命令及び技術は、本明細書で説明するアプローチを不明瞭にしないように、詳細に示されていない。説明を簡単且つ明確にするために、図面に示す要素は必ずしも縮尺通りに描かれていないことが認識されよう。例えば、一部の要素の寸法は、他の要素に対して誇張されてもよい。
【0008】
圧縮リソースへのシェーダ書き込みを実行する様々なシステム、装置、方法及びコンピュータ可読記憶媒体が開示される。一実施形態では、プロセッサは、少なくともキャッシュと、1つ以上のシェーダユニットと、を含む。一実施形態では、プロセッサの第1シェーダユニットは、圧縮表面を対象とする書き込み要求を受信するように構成されている。第1シェーダユニットは、書き込み要求の対象となる圧縮表面の第1ブロックを識別するように構成されている。また、第1シェーダは、書き込み要求のデータの対象が第1ブロック全体よりも少ないかどうかを判別するように構成されている。第1シェーダユニットは、書き込み要求のデータの対象が第1ブロック全体よりも少ないと判別した場合、第1ブロックをキャッシュから読み出し、第1ブロックを圧縮解除する。次に、第1シェーダユニットは、書き込み要求のデータを、圧縮解除された第1ブロックと統合する。次いで、シェーダユニットは、統合されたデータを圧縮してキャッシュに書き込む。一実施形態では、第1シェーダユニットは、書き込み要求のデータが第1ブロック全体を更新すると判別した場合、書き込み要求のデータを圧縮し、次に、キャッシュ内の第1ブロックを圧縮されたデータ(圧縮データ)で上書きする。
【0009】
一実施形態では、第1シェーダユニットは、第1ブロックに関連するメタデータにアクセスするように構成されており、メタデータは、第1ブロックを圧縮するのに使用される圧縮のタイプを指定する情報を含む。一実施形態では、メタデータは、メタデータキャッシュに記憶されている。第1シェーダユニットは、第1ブロックを圧縮解除するために情報を利用するように構成されている。一実施形態では、第1シェーダユニットは、第1ブロックが定数値に設定されているかどうかを判別するように構成されている。第1ブロックが定数値に設定されている場合、第1シェーダユニットは、キャッシュから第1ブロックを読み出すのをスキップすることができる。代わりに、第1シェーダユニットは、書き込み要求のデータを定数値のデータと統合する。次いで、第1シェーダユニットは、統合されたデータを圧縮してキャッシュに書き込む。
【0010】
ここで、
図1を参照すると、コンピューティングシステム100の一実施形態のブロック図が示されている。一実施形態では、コンピューティングシステム100は、メモリ150に接続されたシステムオンチップ(SoC)105を含む。SoC105は、集積回路(IC)と呼ぶこともできる。一実施形態では、SoC105は、処理ユニット115A~115Nと、入出力(I/O)インタフェース110と、共有キャッシュ120A~120Bと、ファブリック125と、グラフィックス処理ユニット130と、メモリコントローラ140と、を含む。また、SoC105は、図面を曖昧にすることを避けるために、
図1に示されていない他のコンポーネントを含むことができる。処理ユニット115A~115Nは、任意の数及びタイプの処理ユニットを表す。一実施形態では、処理ユニット115A~115Nは、中央処理装置(CPU)コアである。別の実施形態では、処理ユニット115A~115Nのうち1つ以上は、他のタイプの処理ユニット(例えば、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、デジタルシグナルプロセッサ(DSP))である。処理ユニット115A~115Nは、共有キャッシュ120A~120B及びファブリック125に接続されている。
【0011】
一実施形態では、処理ユニット115A~115Nは、特定の命令セットアーキテクチャ(ISA)の命令を実行するように構成されている。各処理ユニット115A~115Nは、1つ以上の実行ユニット、キャッシュメモリ、スケジューラ及び分岐予測回路等を含む。一実施形態では、処理ユニット115A~115Nは、システム100の主要な制御ソフトウェア(オペレーティングシステム等)を実行するように構成されている。概して、使用中に処理ユニット115A~115Nによって実行されるソフトウェアは、システム100の所望の機能を実現するために、システム100の他のコンポーネントを制御することができる。また、処理ユニット115A~115Nは、アプリケーションプログラム等の他のソフトウェアを実行することもできる。
【0012】
GPU130は、コンプレッサモジュール135と、キャッシュ138と、計算ユニット145A~145Nと、を含み、計算ユニット145A~145Nは、グラフィックス又は汎用処理に使用される任意の数及びタイプの計算ユニットを表す。GPU130は、共有キャッシュ120A~120B及びファブリック125に接続されている。一実施形態では、GPU130は、描画コマンド、ピクセル演算、幾何学的計算、及び、画像をディスプレイにレンダリングするための他の演算等のグラフィックスパイプライン演算を実行するように構成されている。別の実施形態では、GPU130は、グラフィックスに関連しない演算を実行するように構成されている。更なる実施形態では、GPU130は、グラフィックス演算及び非グラフィック関連演算の両方を実行するように構成されている。
【0013】
一実施形態では、GPU130は、キャッシュ138に記憶された圧縮表面への書き込み動作を実行するように構成されている。一実施形態では、圧縮表面のブロックの一部への書き込み要求について、GPU130は、書き込み要求のデータをブロックの他の部分と統合するように構成されている。次に、GPU130は、コンプレッサモジュール135を用いて、統合されたデータを圧縮し、圧縮データをキャッシュ138に書き込む。一実施形態では、GPU130は、書き込み要求を受信したことに応じて、書き込み要求が表面の圧縮ブロックを対象としているかどうかを判別するように構成されている。書き込み要求が表面の非圧縮ブロックを対象としている場合、GPU130は、圧縮解除ステップをスキップし、書き込み要求のデータを非圧縮ブロックと統合する。各ブロックのサイズは、実施形態毎に変えることができる。
【0014】
I/Oインタフェース110は、ファブリック125に接続されており、任意の数及びタイプのインタフェース(例えば、周辺機器相互接続(PCI)バス、PCI拡張(PCI-X)、PCIE(PCIエクスプレス)バス、ギガビットイーサネット(登録商標)(GBE)バス、ユニバーサルシリアルバス(USB))を表す。様々なタイプの周辺デバイスをI/Oインタフェース110に接続することができる。かかる周辺デバイスは、ディスプレイ、キーボード、マウス、プリンタ、スキャナ、ジョイスティック又は他のタイプのゲームコントローラ、メディア記録デバイス、外部ストレージデバイス、及び、ネットワークインタフェースカード等を含むが、これらに限定されない。
【0015】
SoC105は、1つ以上のメモリモジュールを含むメモリ150に接続されている。各メモリモジュールは、自身に取り付けられた1つ以上のメモリデバイスを含む。いくつかの実施形態では、メモリ150は、マザーボード、又は、SoC105が取り付けられた他のキャリアに取り付けられている1つ以上のメモリデバイスを含む。一実施形態では、メモリ150は、動作中にSoC105と共に使用されるランダムアクセスメモリ(RAM)を実装するために使用される。実装されるRAMは、スタティックRAM(SRAM)、ダイナミックRAM(DRAM)、抵抗変化RAM(ReRAM)、相変化RAM(PCRAM)、又は、他の揮発性若しくは不揮発性RAMとすることができる。メモリ150を実装するために使用されるDRAMのタイプは、ダブルデータレート(DDR)DRAM、DDR2 DRAM、DDR3 DRAM等を含むが、これらに限定されない。
図1に明確に示されていないが、SoC105は、処理ユニット115A~115N及び/又は計算ユニット145A~145Nの内部にある1つ以上のキャッシュメモリを含むことができる。いくつかの実施形態では、SoC105は、処理ユニット115A~115N及び計算ユニット145A~145Nによって利用される共有キャッシュ120A~120Bを含む。一実施形態では、キャッシュ120A~120Bは、キャッシュコントローラを含むキャッシュサブシステムの一部である。
【0016】
様々な実施形態では、コンピューティングシステム100は、コンピュータ、ラップトップ、モバイルデバイス、サーバ、又は、様々な他のタイプのコンピューティングシステム若しくはデバイスとすることができる。コンピューティングシステム100及び/又はSoC105のコンポーネントの数は、実施形態毎に変えることができることに留意されたい。各コンポーネント/サブコンポーネントの数は、
図1に示す数より多くてもよいし、少なくてもよい。例えば、別の実施形態では、SoC105は、複数のメモリに接続された複数のメモリコントローラを含むことができる。コンピューティングシステム100及び/又はSoC105は、
図1に示されていない他のコンポーネントを含むことができることに留意されたい。また、他の実施形態では、コンピューティングシステム100及びSoC105を、
図1に示す以外の方法で構成することができる。
【0017】
次に、
図2を参照すると、グラフィックス処理ユニット(GPU)200の一実施形態のブロック図が示されている。一実施形態では、GPU200のロジックは、(
図1の)GPU130に含まれている。一実施形態では、GPU200は、少なくともシェーダアレイ215A~215Dと、コマンドセンタハブ(command center hub)220と、ファブリック225と、キャッシュ230と、を含む。図面を曖昧にすることを避けるために、GPU200は、
図2に示されていない他のロジック及び/又は他のコンポーネントを含むことに留意されたい。GPU200の構造は、一実施形態で使用される構造の一例に過ぎないことにも留意されたい。他の実施形態では、GPU200を他の方法で構成することができる。
【0018】
シェーダアレイ215A~215Dは、GPU200に含まれる任意の数及びタイプのシェーダ計算リソースを表す。シェーダアレイ215A~215Dを、「シェーダユニット」と呼ぶこともできる。各シェーダアレイ215A~Dは、グラフィックスをレンダリングするために、幾何学的形状、頂点、ピクセル、及び/又は、他のシェーディング操作を実行するための様々な計算リソースを含む。様々な実施形態では、計算リソースは、命令をフェッチ及び復号するためのコンポーネント、算術計算を実行するための1つ以上の算術ロジックユニット「ALU」、及び、他のリソースを含む。
図2に示されていないが、各シェーダアレイ215A~215Dは、レベル1(L1)キャッシュを含むことができる。シェーダアレイ215A~215Dは、ファブリック225を介してキャッシュ230に接続されている。一実施形態では、キャッシュ230は、レベル2(L2)キャッシュである。実施形態に応じて、キャッシュ230は、メモリ(図示省略)又は別のレベルのキャッシュ(図示省略)に接続されている。コマンドセンタハブ220は、任意の数及びタイプのコマンドプロセッサ、スケジューラ、及び、他のコマンド処理リソースを表す。
【0019】
一実施形態では、コンプレッサモジュール235は、キャッシュ230内に配置されている。別の実施形態では、コンプレッサモジュール235は、ファブリック225内に配置されている。一実施形態では、GPU200が表面への書き込み要求を処理する場合、コンプレッサモジュール235は、書き込み要求のデータを、表面の対象ブロックの非圧縮データと統合するように構成されている。次いで、統合されたデータは、圧縮され、キャッシュ230に書き戻される。
【0020】
次に、
図3を参照すると、キャッシュアービタ302及びキャッシュ304の一実施形態のブロック図が示されている。一実施形態では、キャッシュアービタ302は、キャッシュ304のインタフェースブロック306に接続されている。キャッシュアービタ302は、キャッシュ304に記憶されたデータを対象とする要求のために、読み出し及び書き込み要求をインタフェースブロック306に送るように構成されている。インタフェースブロック306は、非圧縮表面を対象とする要求をタグアレイ312に送り、圧縮表面を対象とする要求をコンプレッサモジュール308に送る。非圧縮の書き込みデータは、ソース先入れ先出しモジュール(FIFO)310に送られる。
【0021】
コンプレッサモジュール308は、メタデータキャッシュ314のルックアップを実行して、対象とする表面の所定のブロックが圧縮されているかどうか、及び、対象とする表面の所定のブロックがどのように圧縮されているかを判別する。コンプレッサモジュール308は、データアレイ316からデータを受信し、圧縮データを圧縮解除する。一実施形態では、コンプレッサモジュール308は、書き込みデータを、圧縮解除された所定の表面ブロックからのデータと統合する。次に、コンプレッサモジュール308は、統合されたデータを再圧縮し、再圧縮され統合されたデータを、ソースFIFO310に送信する。他の実施形態では、表面の圧縮ブロックへの書き込みを管理し、データを圧縮解除し、データを統合し、データを圧縮するためのロジックを、キャッシュ304内で他の方法で構成することができることに留意されたい。
【0022】
次に、
図4を参照すると、コンプレッサモジュール402の一実施形態のブロック図が示されている。一実施形態では、コンプレッサモジュール402のコンポーネントは、(
図3の)コンプレッサモジュール308に含まれている。圧縮表面を対象とする要求は、仮想FIFO404に送られ、非圧縮表面を対象とする要求は、タグアレイ(図示省略)に送られる。仮想FIFO404は、相互に順序付けられた要求のアドレスを維持する。一実施形態では、リンクリスト構造を利用して、仮想FIFO404内の相互要求の順序を維持する。また、仮想FIFO404は、表面のブロックの一部のみを対象とする書き込み要求のために、読み出し要求をプリフェッチすることを可能にする。例えば、仮想FIFO404内の要求が、圧縮解除及び統合パス上で読み出し-変更-書き込みを必要とする場合、要求が仮想FIFO404内で待機している間、当該要求に対してプリフェッチ要求が生成される。一実施形態では、所定の数のプリフェッチ要求を所定時間未処理とすることができ、当該所与の数は、実施形態毎に異なる。プリフェッチ要求が戻ってくると、データが統合され、コンプレッサ434をアービトレートする。仮想FIFO404に記憶された書き込み要求が、対象とするブロック全体を完全に上書きする場合には、要求を処理する前に、キャッシュからブロックをプリフェッチするための読み出し要求が生成されない。要求は、仮想FIFO404から物理FIFO406に排出される。一実施形態では、物理FIFO406は、フロップベースのFIFOである。
【0023】
書き込み要求が表面のブロック全体を上書きする場合、プリフェッチ要求が生成されず、書き込み要求は、1つのコンプレッサ434をアービトレートする。次に、ソースデータは、要求が最初に書き込んだソースデータRAM424からフェッチされる。次いで、ソースデータは、キャッシュへのパスに書き込まれる。対象とするブロックの一部のみを対象とする書き込み要求の場合、対象とするブロックの他の部分をキャッシュから読み出すプリフェッチ読み出し要求が生成される。リードバックデータは、リターン制御ロジック438に送られ、次に、リードデータRAM426及びフロップ432に送られる。
【0024】
要求物理FIFO406は、バースト書き込み制御ロジック408と、マルチプレクサ(又は、mux)412,414,428,430と、に接続されている。読み出し制御ロジック418及び非オペレーション書き込み制御ロジック420の各々は、mux428,430の各々に対して選択信号を提供する。統合制御ロジック416は、mux412,414に対して選択信号を提供する。対象とするブロックの一部のみを上書きするデータを有する書き込み要求の場合、統合制御ロジック416は、書き込みデータを、対象とするブロックの他の影響を受けない部分と統合するように構成されている。統合制御ロジック416は、要求キュー状態410と、mux412,414と、フロップ432と、圧縮制御ロジック422と、に接続されている。統合データは、圧縮制御ロジック422に送られ、次に、コンプレッサ434に送られて圧縮された後にキャッシュに書き込まれる。また、コンプレッサ434は、mux440に接続された書き込み制御ロジック436に接続されており、mux440の出力は、メタデータキャッシュ(図示省略)に接続されている。
【0025】
様々な構造の隣に表示される文字「N」は、概して、当該構造に関する要素の数(例えば、1つの記憶要素を含む要求仮想FIFO404内の記憶要素の数)を示すことを意味することに留意されたい。また、文字「N」を使用する
図4の異なる符号(例えば、仮想FIFO404及び要求キュー状態410)は、同じ数の異なる要素が設けられていることを示すことを意図していない(例えば、要求仮想FIFO404内の記憶要素の数は、要求キュー状態410の記憶要素の数と異なることがある)。
【0026】
次に、
図5を参照すると、圧縮表面への書き込みを実行する方法500の一実施形態が示されている。説明目的として、本実施形態におけるステップ及び
図6~
図8のステップが順番に示されている。しかしながら、説明する方法の様々な実施形態では、説明する要素のうち1つ以上は、同時に実行されてもよいし、図示したものとは異なる順序で実行されてもよいし、完全に省略されてもよいことに留意されたい。必要に応じて、他の追加の要素が実行されてもよい。本明細書で説明する様々なシステム又は装置は、方法500を実施するように構成されている。
【0027】
プロセッサのシェーダユニットは、圧縮表面を対象とする書き込み要求を受信する(ブロック505)。プロセッサは、実施形態に応じて、任意の数のシェーダユニットを含む。次に、シェーダユニットは、書き込み要求の対象となる圧縮表面の第1ブロックを識別する(ブロック510)。一実施形態では、表面は、複数のブロックに区画され、ブロックの各々は、他のブロックから独立して圧縮される。表面の「ブロック」は、本明細書では、表面の「一部」と呼ぶこともできることに留意されたい。
【0028】
次に、シェーダユニットは、書き込み要求のデータが第1ブロックの全体未満を対象としているかどうかを判別する(条件付きブロック515)。書き込み要求のデータが第1ブロックの全体未満を対象としている場合(条件付きブロック515:「はい」)、シェーダユニットは、第1ブロックをキャッシュから読み出して圧縮解除する(ブロック520)。別の実施形態では、シェーダユニットは、第1ブロックをメモリから読み出す。次に、シェーダユニットは、書き込み要求のデータを、圧縮解除された第1ブロックと統合する(ブロック525)。次いで、シェーダユニットは、統合されたデータを圧縮してキャッシュに書き込む(ブロック530)。別の実施形態では、シェーダユニットは、統合されたデータをメモリに書き込む。
【0029】
書き込み要求のデータが第1ブロック全体を対象とする場合(条件付きブロック515:「いいえ」)、シェーダユニットは、書き込み要求のデータを圧縮する(ブロック535)。この場合、シェーダユニットは、第1ブロックをキャッシュからフェッチし、第1ブロックを圧縮解除するステップをスキップする。次に、第1シェーダは、キャッシュ内の第1ブロックを、書き込み要求の圧縮データで上書きする(ブロック540)。ブロック530,540の後、方法500は終了する。
【0030】
次に、
図6を参照すると、表面の圧縮ブロックへの書き込み要求を処理する方法600の一実施形態が示されている。プロセッサのシェーダユニットは、表面の圧縮ブロックを対象とする書き込み要求を受信する(ブロック605)。シェーダユニットは、書き込み要求を受信したことに応じて、圧縮ブロックに関連するメタデータにアクセスする(ブロック610)。一実施形態では、メタデータは、第1ブロックを圧縮するのに使用される圧縮のタイプを指定する情報を含む。一実施形態では、デルタカラー圧縮(DCC)は、第1ブロックを圧縮するのに使用される圧縮のタイプである。一実施形態では、メタデータは、メタデータキャッシュに記憶される。
【0031】
次に、シェーダユニットは、圧縮ブロックのデータが単一の値に設定されているかどうかを、メタデータから判別する(条件付きブロック615)。一実施形態では、圧縮ブロックがDCCを使用して圧縮される場合、クリア設定は、圧縮ブロックが単一の値(例えば、0.0、1.0)に設定されることを示す。説明目的として、書き込み要求のデータが圧縮ブロック全体を上書きしないことを想定する。圧縮ブロックが単一の値に設定されている場合(条件付きブロック615:「はい」)、シェーダユニットは、書き込み要求のデータを、単一の値のデータと統合する(ブロック620)。次に、シェーダユニットは、統合されたデータを圧縮してキャッシュに書き込む(ブロック625)。圧縮ブロックが単一の値に設定されていない場合(条件付きブロック615:「いいえ」)、シェーダユニットは、圧縮ブロックをフェッチして圧縮解除する(ブロック630)。次に、シェーダユニットは、書き込み要求のデータを、圧縮解除されたブロックのデータと統合する(ブロック635)。次いで、シェーダユニットは、統合されたデータを圧縮してキャッシュに書き込む(ブロック625)。ブロック625の後、方法600は終了する。
【0032】
次に、
図7を参照すると、表面の非圧縮ブロックへの書き込みを処理する方法700の一実施形態が示されている。プロセッサのシェーダユニットは、表面の非圧縮ブロックを対象とする書き込み要求を受信する(ブロック705)。次に、シェーダユニットは、非圧縮ブロックをキャッシュから読み出す(ブロック710)。次いで、シェーダユニットは、書き込み要求のデータを非圧縮ブロックと統合する(ブロック715)。説明目的として、書き込み要求のデータが圧縮ブロック全体を上書きしないことを想定する。しかしながら、書き込み要求のデータが圧縮ブロック全体に上書きする場合、ブロック710,715をスキップすることができる。次に、シェーダユニットは、統合されたデータをキャッシュに書き戻す(ブロック720)。場合によっては、シェーダユニットは、統合されたデータを圧縮することができ、圧縮され統合されたデータをキャッシュに書き戻すことができる。ブロック720の後、方法700は終了する。
【0033】
次に、
図8を参照すると、圧縮表面への書き込みを処理する方法800の別の実施形態が示されている。シェーダユニットは、圧縮表面を対象とする書き込み要求を受信する(ブロック805)。シェーダユニットは、書き込み要求の対象となる圧縮表面の第1ブロックを識別する(ブロック810)。次に、シェーダユニットは、第1ブロックをフェッチして圧縮解除するロジックをアクティブにするかどうかを決定する(ブロック815)。一実施形態では、第1ブロックをフェッチして圧縮解除するロジックをアクティブにするかどうかの決定は、1つ以上の条件の検出に基づいている。
【0034】
シェーダユニットは、第1条件を検出した場合(条件付きブロック820:「はい」)、シェーダユニットは、第1ブロックをフェッチして圧縮解除するロジックがアクティブにされるのを抑制する(ブロック825)。一実施形態では、第1条件は、第1ブロックの全てのデータが単一の値に設定されているのを判別することである。一実施形態では、シェーダユニットは、第1ブロックに関連するメタデータを取り出すことによって、第1ブロックの全てのデータが単一の値に設定されているのを判別する。単一の値は、0.0、1.0、又は、これらの間の別の値とすることができる。第1ブロックのデータがクリアされていることをメタデータが示す場合、第1ブロックが単一の値に設定されていることを示している。別の実施形態では、第1条件は、書き込み要求のデータが第1ブロック全体を更新すると判別することである。他の実施形態では、第1条件は、他のイベント及び/又は指標を含むことができる。
【0035】
ブロック825の後、シェーダユニットは、書き込み要求のデータを圧縮して、新たな第1ブロックを形成する(ブロック830)。一実施形態では、書き込み要求のデータは、「ピクセルデータ」又は「ピクセル」と呼ぶこともできる。次に、シェーダユニットは、新たな第1ブロックをキャッシュに書き込む(ブロック835)。実施形態に応じて、シェーダユニットは、新たな第1ブロックをキャッシュに書き込む前に、新たな第1ブロックを圧縮してもよいし、圧縮しなくてもよい。
【0036】
シェーダユニットが第1条件を検出しない場合(条件付きブロック820:「いいえ」)、シェーダユニットは、第2条件が検出されたかどうかを判別する(条件付きブロック840)。一実施形態では、第2条件は、書き込み要求のデータが第1ブロック全体未満を対象としていると判別することである。他の実施形態では、第2条件は、他のイベント及び/又は指標を含むことができる。第2条件が検出された場合(条件付きブロック840:「はい」)、シェーダユニットは、第1ブロックをフェッチして圧縮解除するロジックをアクティブにする(ブロック845)。次に、シェーダユニットは、書き込み要求のデータを圧縮解除された第1ブロックと統合して、新たな第1ブロックを形成する(ブロック850)。次いで、シェーダユニットは、新たな第1ブロックを圧縮してキャッシュに書き込む(ブロック855)。
【0037】
第2条件が検出されない場合(条件付きブロック840:「いいえ」)、シェーダユニットは、第1ブロックをフェッチして圧縮解除するロジックがアクティブにされるのを抑制する(ブロック860)。一実施形態では、第2条件が検出されない場合には、書き込み要求のデータが第1ブロック全体を対象としていることを示す。ブロック860の後、シェーダユニットは、書き込み要求のデータを圧縮して、新たな第1ブロックを形成する(ブロック865)。次に、シェーダユニットは、キャッシュ内の第1ブロックを、新たな第1ブロックで上書きする(ブロック870)。ブロック835,855,870の後、方法800は終了する。
【0038】
様々な実施形態では、ソフトウェアアプリケーションのプログラム命令を用いて、上述した方法及び/又はメカニズムを実施する。プログラム命令は、高水準プログラミング言語(例えば、C等)でハードウェアの動作を記述する。或いは、Verilog等のハードウェア設計言語(HDL)が使用される。プログラム命令は、非一時的なコンピュータ可読記憶媒体に記憶される。多くのタイプの記憶媒体が利用可能である。記憶媒体は、使用中にコンピューティングシステムによってアクセス可能であり、プログラム命令及びこれに付随するデータを、プログラムの実行のためにコンピューティングシステムに提供する。コンピューティングシステムは、少なくとも1つ以上のメモリと、プログラム命令を実行するように構成された1つ以上のプロセッサと、を含む。
【0039】
上述した実施形態は、実装態様の非限定的な例に過ぎないことを強調しておきたい。上記の開示が十分に理解されれば、多くの変形及び修正が当業者に明らかになるであろう。以下の特許請求の範囲は、このような変形及び修正を全て包含するように解釈されることが意図される。