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