(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-11-01
(45)【発行日】2022-11-10
(54)【発明の名称】ビデオへのデルタカラー圧縮の適用
(51)【国際特許分類】
H04N 19/90 20140101AFI20221102BHJP
H04N 1/64 20060101ALI20221102BHJP
【FI】
H04N19/90
H04N1/64
(21)【出願番号】P 2019546114
(86)(22)【出願日】2018-02-22
(86)【国際出願番号】 US2018019201
(87)【国際公開番号】W WO2018156750
(87)【国際公開日】2018-08-30
【審査請求日】2021-02-19
(32)【優先日】2017-02-24
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2017-03-03
(33)【優先権主張国・地域又は機関】EP
(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)【発明者】
【氏名】クリストファー ジェイ. ブレナン
【審査官】鉢呂 健
(56)【参考文献】
【文献】特開2004-015226(JP,A)
【文献】特開2012-151573(JP,A)
【文献】国際公開第2012/147350(WO,A1)
【文献】特表2009-524315(JP,A)
【文献】特開2001-332978(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
H04N 19/00-19/98
H04N 1/64
(57)【特許請求の範囲】
【請求項1】
メモリサブシステムと、
前記メモリサブシステムに接続されたプロセッサと、を備え、
前記プロセッサは、
対応するNビットコンテナ内で整列された最上位ビット(MSB)である複数のMビット画素成分を受信することであって、N及びMは整数であり、NはMよりも大き
く、前記Nビットコンテナのうち最上位のMビットのみが画素データを記憶する、ことと、
前記Mビット画素成分を前記Nビットコンテナの最下位ビット(LSB)位置にシフトすることと、
前記
対応するNビットコンテナを複数のMビットコンテナに変換することと、
前記複数のMビットコンテナを圧縮して、画素データの圧縮ブロックを生成することと、
前記画素データの圧縮ブロックを前記メモリサブシステムに記憶することと、
を行うように構成されている、
システム。
【請求項2】
前記プロセッサは、
前記複数のMビットコンテナ内の画素データが定数値と等しいかどうかを判別することと、
前記複数のMビットコンテナ内の前記画素データが定数値と等しいと判別したことに応じて、前記画素データを破棄し、定数値が検出されたことを示すメタデータキーを生成することと、
を行うように構成されている、
請求項1のシステム。
【請求項3】
前記プロセッサは、
前記複数のMビットコンテナ内の前記画素データが、黒の符号化値又は白の符号化値の何れかと等しいかどうかを判別することと、
前記複数のMビットコンテナ内の前記画素データが黒の符号化値と等しいと判別したことに応じて、前記画素データが全て黒画素を含むことを示す第1メタデータキーを生成することと、
前記複数のMビットコンテナ内の前記画素データが白の符号化値と等しいと判別したことに応じて、前記画素データが全て白画素を含むことを示す第2メタデータキーを生成することと、
を行うように構成されている、
請求項2のシステム。
【請求項4】
前記プロセッサは、
前記メモリサブシステムに記憶された前記画素データの圧縮ブロックを復元する要求を受信したことに応じて、
前記画素データの圧縮ブロックを前記メモリサブシステムから取得することと、
前記画素データの圧縮ブロックを復元して、Mビットコンテナ内の画素成分を生成することと、
前記MビットコンテナをNビットコンテナに拡張することと、
前記画素成分を前記NビットコンテナのMSB位置にシフトすることと、
を行うように構成されている、
請求項1のシステム。
【請求項5】
前記プロセッサは、前記NビットコンテナのMSB位置における画素成分をクライアントに伝達することを行うように構成されている、
請求項4のシステム。
【請求項6】
前記プロセッサは、
前記画素データの圧縮ブロック
のサイズが閾値よりも大きいかどうかを判別することと、
前記画素データの圧縮ブロック
のサイズが閾値よりも大きいと判別したことに応じて、前記画素データの圧縮ブロックを破棄することと、
を行うように構成されている、
請求項1のシステム。
【請求項7】
前記プロセッサは、前記画素データの圧縮ブロック
のサイズが閾値よりも大きいと判別したことに応じて、前記複数のMビット画素成分をまとめてパックすることを行うように構成されている、
請求項6のシステム。
【請求項8】
対応するNビットコンテナ内で整列された最上位ビット(MSB)である複数のMビット画素成分を受信することであって、N及びMは整数であり、NはMよりも大き
く、前記Nビットコンテナのうち最上位のMビットのみが画素データを記憶する、ことと、
前記Mビット画素成分を前記Nビットコンテナの最下位ビット(LSB)位置にシフトすることと、
前記
対応するNビットコンテナを複数のMビットコンテナに変換することと、
前記複数のMビットコンテナを圧縮して、画素データの圧縮ブロックを作成することと、
前記画素データの圧縮ブロックをメモリサブシステムに記憶することと、を含む、
方法。
【請求項9】
前記複数のMビットコンテナ内の画素データが定数値と等しいかどうかを判別することと、
前記複数のMビットコンテナ内の前記画素データが定数値と等しいと判別したことに応じて、前記画素データを破棄し、定数値が検出されたことを示すメタデータキーを生成することと、を含む、
請求項8の方法。
【請求項10】
前記複数のMビットコンテナ内の前記画素データが、黒の符号化値又は白の符号化値の何れかと等しいかどうかを判別することと、
前記複数のMビットコンテナ内の前記画素データが黒の符号化値と等しいと判別したことに応じて、前記画素データが全て黒画素を含むことを示す第1メタデータキーを生成することと、
前記複数のMビットコンテナ内の前記画素データが白の符号化値と等しいと判別したことに応じて、前記画素データが全て白画素を含むことを示す第2メタデータキーを生成することと、を含む、
請求項9の方法。
【請求項11】
前記メモリサブシステムに記憶された前記画素データの圧縮ブロックを復元する要求を受信したことに応じて、
前記画素データの圧縮ブロックを前記メモリサブシステムから取得することと、
前記画素データの圧縮ブロックを復元して、Mビットコンテナ内の画素成分を生成することと、
前記MビットコンテナをNビットコンテナに拡張することと、
前記画素成分を前記NビットコンテナのMSB位置にシフトすることと、を含む、
請求項8の方法。
【請求項12】
前記Nビットコンテナの前記MSB位置における画素成分をクライアントに伝達することを含む、
請求項11の方法。
【請求項13】
前記画素データの圧縮ブロック
のサイズが閾値よりも大きいかどうかを判別することと、
前記画素データの圧縮ブロック
のサイズが閾値よりも大きいと判別したことに応じて、前記画素データの圧縮ブロックを破棄することと、を含む、
請求項8の方法。
【請求項14】
前記画素データの圧縮ブロック
のサイズが前記閾値よりも大きいと判別したことに応じて、前記複数のMビット画素成分をまとめてパックすることを含む、
請求項13の方法。
【請求項15】
メモリサブシステムと、
コンプレッサモジュールと、を備え、
前記コンプレッサモジュールは、
対応するNビットコンテナ内で整列された最上位ビット(MSB)である複数のMビット画素成分を受信することであって、N及びMは整数であり、NはMよりも大き
く、前記Nビットコンテナのうち最上位のMビットのみが画素データを記憶する、ことと、
前記Mビット画素成分を前記Nビットコンテナの最下位ビット(LSB)位置にシフトすることと、
前記
対応するNビットコンテナを複数のMビットコンテナに変換することと、
前記複数のMビットコンテナを圧縮して、画素データの圧縮ブロックを生成することと、
前記画素データの圧縮ブロックを前記メモリサブシステムに記憶することと、
を行うように構成されている、
装置。
【請求項16】
前記コンプレッサモジュールは、
前記複数のMビットコンテナ内の画素データが定数値と等しいかどうかを判別することと、
前記複数のMビットコンテナ内の前記画素データが定数値と等しいと判別したことに応じて、前記画素データを破棄し、定数値が検出されたことを示すメタデータキーを生成することと、
を行うように構成されている、
請求項15の装置。
【請求項17】
前記コンプレッサモジュールは、
前記複数のMビットコンテナ内の前記画素データが、黒の符号化値又は白の符号化値の何れかと等しいかどうかを判別することと、
前記複数のMビットコンテナ内の前記画素データが黒の符号化値と等しいと判別したことに応じて、前記画素データが全て黒画素を含むことを示す第1メタデータキーを生成することと、
前記複数のMビットコンテナ内の前記画素データが白の符号化値と等しいと判別したことに応じて、前記画素データが全て白画素を含むことを示す第2メタデータキーを生成することと、
を行うように構成されている、
請求項16の装置。
【請求項18】
前記コンプレッサモジュールは、
前記メモリサブシステムに記憶された前記画素データの圧縮ブロックを復元する要求を受信したことに応じて、
前記画素データの圧縮ブロックを前記メモリサブシステムから取得することと、
前記画素データの圧縮ブロックを復元して、Mビットコンテナ内の画素成分を生成することと、
前記MビットコンテナをNビットコンテナに拡張することと、
前記画素成分を前記NビットコンテナのMSB位置にシフトすることと、
を行うように構成されている、
請求項15の装置。
【請求項19】
前記コンプレッサモジュールは、前記NビットコンテナのMSB位置における画素成分をクライアントに伝達することを行うように構成されている、
請求項18の装置。
【請求項20】
前記コンプレッサモジュールは、
前記画素データの圧縮ブロック
のサイズが閾値よりも大きいかどうかを判別することと、
前記画素データの圧縮ブロック
のサイズが閾値よりも大きいと判別したことに応じて、前記画素データの圧縮ブロックを破棄することと、
を行うように構成されている、
請求項15の装置。
【発明の詳細な説明】
【背景技術】
【0001】
グラフィックス処理ユニット(GPU)は、グラフィックス処理タスクを実行するように構成された複雑な集積回路である。例えば、GPUは、ビデオゲームアプリケーション等のエンドユーザアプリケーションに必要なグラフィックス処理タスクを実行することができる。GPUは、個別のデバイスであってもよいし、中央処理装置(CPU)等の別のプロセッサと同じデバイスに含めることもできる。GPUは、レンダリングと呼ばれる処理において、コンポーネントの上位レベルの記述から、画像を構成する画素を生成する。GPUは、通常、コンピューティング要素の使用による連続的なレンダリングの概念を利用して、画素、テクスチャ及び幾何学データを処理する。コンピューティング要素は、ラスタライザ、セットアップエンジン、カラーブレンダ、隠面消去、テクスチャマッピング等の機能を実行することができる。これらのコンピューティング要素は、多くの場合、シェーダ、シェーダプロセッサ、シェーダアレイ、シェーダユニット、シェーダエンジン等と呼ばれ、「シェーダ」は、レンダリングエフェクトを実行するためにグラフィックスリソースによって使用されるソフトウェア命令のセット又はプログラムを指す、コンピュータグラフィックスにおける用語である。また、「シェーダ」は、ソフトウェア命令を実行するために使用される実際のハードウェアコンポーネント又はプロセッサを指すこともある。シェーダプロセッサ又はプログラムは、データを読み出してレンダリングし、任意のタイプのデータの処理を実行することができる。
【0002】
複雑なグラフィックスシーンの生成に含まれる処理の多くが、テクスチャデータを含む。テクスチャは、色、透明度、ルックアップテーブル又は他のデータ等の様々なタイプのデータのうち何れかであってもよい。いくつかの実施形態では、テクスチャは、視覚的詳細を追加するために幾何学的形状に描かれるデジタル画像であってもよい。モデルをレンダリングして目的の画像を生成する場合、テクスチャを使用することにより、大量の詳細をグラフィカルモデルの表面にマッピングすることができる。テクスチャマッピングの目的は、オブジェクトの表面にリアルな外観を提供することである。テクスチャは、色、鏡面反射等の表面プロパティ、又は、法線マップ又はバンプマップの形式での細かい表面の詳細等の多くのプロパティを指定することができる。また、テクスチャは、画像データ、色又は透明度データ、粗度/平滑度データ、反射率データ等であってもよい。
【0003】
テクスチャ及び表面において、最小の情報項目は、「画素」と呼ばれる。便宜上、画素は、通常、規則的な2次元グリッドに配列される。このような構成を使用することによって、同じ操作を各画素に均一に個別に適用することで多くの共通の操作を実施することができる。特定の色を表すために、各画素は3つの値を有することができ、それぞれ所望の色に存在する赤、緑、青の量に対応する。いくつかの画素フォーマットは、画素の透明度を表すアルファと呼ばれる4番目の値を含むことができる。このフォーマットは、通常、ARGB又はRGBAと呼ばれる。画素の色を表す別のフォーマットは、YCbCrである。ここで、Yは、画素の輝度または明度に対応し、Cb及びCrは、青の色差(Cb)及び赤の色差(Cr)を表す2つの色差クロミナンス成分に対応する。ソース画素の個別の値を、本明細書では「画素成分」(例えば、赤の画素成分、青の画素成分、青の色差彩度画素成分、輝度画素成分)と呼ぶことができる。
【0004】
3Dコンピュータグラフィックスでは、オブジェクトの表面の詳細は、通常、テクスチャを使用して追加される。例えば、煉瓦の壁の2Dビットマップ画像を、テクスチャマッピングを使用して、建物の3Dモデルを表すポリゴンのセットに適用し、当該オブジェクトの3Dレンダリングに対して煉瓦で作られたという外観を与えることができる。通常、リアルなコンピュータグラフィックスを提供するには、高品質で詳細なテクスチャを多く必要とする。テクスチャを使用すると大量のストレージスペース及び帯域幅を消費する場合があるので、テクスチャを圧縮してストレージスペース及び帯域幅の使用を削減することができる。
【0005】
テスクチャ及び表面を圧縮すると、元のテクスチャ及び表面の品質を可能な限り維持しながら、グラフィックスシステムのストレージ及び帯域幅のコストを低減することができる。グラフィックス処理の制限の1つは、メモリ又はキャッシュの帯域幅によってGPUがフル機能に到達できないということである。GPUによる処理のためにメモリ又はキャッシュからフェッチされるデータ量を減らすために、圧縮を使用することができる。しかしながら、既存のタイプの圧縮は、GPUで処理されているテクスチャ及び表面の圧縮にあまり適していない。
【0006】
本明細書で説明する方法及びメカニズムの利点は、添付の図面と共に以下の説明を参照することによって、より良く理解することができる。
【図面の簡単な説明】
【0007】
【
図1】コンピューティングシステムの一実施形態のブロック図である。
【
図2】グラフィックス処理ユニット(GPU)の一実施形態のブロック図である。
【
図3】画素データを圧縮する技術の一実施形態のブロック図である。
【
図4】黒及び白の画素値の符号化値を指定する2つのテーブルを示す図である。
【
図5】画素データを圧縮する方法の一実施形態を示す一般化されたフロー図である。
【
図6】画素データの圧縮ブロックを復元する方法の一実施形態を示す一般化されたフロー図である。
【
図7】一定の画素データを圧縮する方法の一実施形態を示す一般化されたフロー図である。
【
図8】画素データを圧縮する方法の別の実施形態を示す一般化されたフロー図である。
【
図9】アルファチャネルを有する画素データを圧縮する方法の別の実施形態を示す一般化されたフロー図である。
【発明を実施するための形態】
【0008】
以下の説明では、本明細書に提示される方法及びメカニズムの十分な理解を提供するために、いくつかの具体的な詳細を示す。しかしながら、当業者は、様々な実施形態を、これらの特定の詳細なしに実施することができるのを認識すべきである。いくつかの場合、周知の構造、コンポーネント、信号、コンピュータプログラム命令及び技術は、本明細書で説明するアプローチを曖昧にすることを避けるために、詳細に示していない。説明を簡単且つ明確にするために、図に示された要素は必ずしも縮尺通りに描かれていないことが理解されるであろう。例えば、一部の要素の寸法は、他の要素に対して誇張されている場合がある。
【0009】
本明細書では、画素データを圧縮するためのシステム、装置及び方法が開示されている。一実施形態では、システムは、メモリサブシステムに接続されたプロセッサを少なくとも含む。メモリサブシステムは、1つ以上のレベルのキャッシュ及び/又は1つ以上のメモリを含む。一実施形態では、プロセッサは、Nビットコンテナ内で整列された最上位ビット(MSB)である複数のMビット画素成分を受信するように構成されており、N及びMは整数であり、NはMよりも大きい。次に、プロセッサは、Mビット画素成分をNビットコンテナの最下位ビット(LSB)位置にシフトする。次いで、プロセッサは、複数のNビットコンテナを複数のMビットコンテナに変換する。次に、プロセッサは、複数のMビットコンテナを圧縮して、画素データの圧縮ブロックを生成する。次いで、プロセッサは、画素データの圧縮ブロックをメモリサブシステムに記憶する。
【0010】
メモリサブシステムに記憶された画素データの圧縮ブロックを復元する要求を受信したことに応じて、プロセッサは、画素データの圧縮ブロックを取得するように構成されている。次に、プロセッサは、画素データの圧縮ブロックを復元して、Mビットコンテナ内に画素成分を生成する。次いで、プロセッサは、MビットコンテナをNビットコンテナに拡張する。次に、プロセッサは、Mビット画素成分をNビットコンテナのMSB位置にシフトする。次いで、プロセッサは、Nビットコンテナ内の画素成分をクライアント(例えば、シェーダ)に伝達する。
【0011】
図1を参照すると、コンピューティングシステム100の一実施形態のブロック図が示されている。一実施形態では、コンピューティングシステム100は、メモリ150に接続されたシステムオンチップ(SoC)105を含む。SoC105は、集積回路(IC)とも呼ばれ得る。一実施形態では、SoC105は、中央処理装置(CPU)165の処理ユニット175A~175Nと、入出力(I/O)インタフェース155と、キャッシュ160A~160Bと、ファブリック120と、グラフィックス処理ユニット(GPU)130と、ローカルメモリ110と、メモリコントローラ140と、を含む。SoC105は、図を曖昧にすることを避けるために、
図1に示されていない他のコンポーネントを含みことができる。処理ユニット175A~175Nは、任意の数及びタイプの処理ユニットを表している。一実施形態では、処理ユニット175A~175Nは、CPUコアである。別の実施形態では、処理ユニット175A~175Nのうち1つ以上は、他のタイプの処理ユニット(例えば、特定用途集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、デジタル信号プロセッサ(DSP)等)である。CPU165の処理ユニット175A~175Nは、キャッシュ160A~160B及びファブリック120に接続されている。
【0012】
一実施形態では、処理ユニット175A~175Nは、特定の命令セットアーキテクチャ(ISA)の命令を実行するように構成されている。各処理ユニット175A~175Nは、1つ以上の実行ユニットと、キャッシュメモリと、スケジューラと、分岐予測回路等と、を含む。一実施形態では、処理ユニット175A~175Nは、オペレーティングシステム等のシステム100のメイン制御ソフトウェアを実行するように構成されている。概して、使用中に処理ユニット175A~175Nによって実行されるソフトウェアは、システム100の所望の機能を実現するために、システム100の他のコンポーネントを制御することができる。また、処理ユニット175A~175Nは、アプリケーションプログラム等の他のソフトウェアを実行することができる。
【0013】
GPU130は、コンプレッサモジュール135と、キャッシュ138と、コンピュートユニット145A~145Nと、を少なくとも含む。コンプレッサモジュール135は、「圧縮モジュール」又は「圧縮ユニット」とも呼ばれ得ることに留意されたい。コンピュートユニット145A~145Nは、グラフィックス又は汎用処理に使用される任意の数及びタイプのコンピュートユニットを表す。各コンピュートユニット145A~145Nは、任意の数の実行ユニットを含み、コンピュートユニット毎の実行ユニットの数は、実施形態によって異なる。GPU130は、ローカルメモリ110及びファブリック120に接続されている。一実施形態では、ローカルメモリ110は、高帯域メモリ(HBM)を使用して実装されている。一実施形態では、GPU130は、描画コマンド、画素操作、幾何学的計算、及び、画像をディスプレイにレンダリングするための他の動作等のグラフィックスパイプライン動作を実行するように構成されている。別の実施形態では、GPU130は、グラフィックスに無関係の動作を実行するように構成されている。さらなる実施形態では、GPU130は、グラフィックス動作及び非グラフィックス関連動作の両方を実行するように構成されている。
【0014】
一実施形態では、GPU130は、Nビットコンテナにおいて整列された最上位ビット(MSB)である複数のMビット画素成分を受信するように構成されており、N及びMは整数であり、NはMよりも大きい。GPU130は、複数のMビット画素成分を受信した後、Mビット画素成分をNビットコンテナの最下位ビット(LSB)位置にシフトダウンする。次いで、GPU130は、複数のNビットコンテナを複数のMビットコンテナに変換する。次に、GPU130は、複数のMビットコンテナを圧縮して、画素データの圧縮ブロックを生成する。次いで、GPU130は、画素データの圧縮ブロックをローカルメモリ110に記憶する。
【0015】
I/Oインタフェース155は、ファブリック120に接続されており、任意の数及びタイプのインタフェース(例えば、周辺機器相互接続(PCI)バス、PCI-Extended(PCI-X)、PCIE(PCIExpress)バス、ギガビットイーサネット(登録商標)(GBE)バス、ユニバーサルシリアルバス(USB)等)を表す。様々なタイプの周辺デバイスを、I/Oインタフェース155に接続することができる。このような周辺デバイスは、ディスプレイ,キーボード、マウス、プリンタ、スキャナ、ジョイスティック又は他のタイプのゲームコントローラ、メディア記録デバイス、外部記憶デバイス、ネットワークインタフェースカード等を含むが、これらに限定されない。
【0016】
SoC105は、1つ以上のメモリモジュールを含むメモリ150に接続されている。各メモリモジュールは、その上に搭載された1つ以上のメモリデバイスを含む。いくつかの実施形態では、メモリ150は、SoC105が搭載されたマザーボード又は他のキャリアに搭載された1つ以上のメモリデバイスを含む。一実施形態では、メモリ150は、動作中にSoC105と共に使用されるランダムアクセスメモリ(RAM)を実装するために使用される。実装されるRAMは、スタティックRAM(SRAM)、ダイナミックRAM(DRAM)、抵抗RAM(ReRAM)、相変化RAM(PCRAM)、又は、他の任意の揮発性RAM若しくは不揮発性RAMであってもよい。メモリ150を実装するために使用されるDRAMのタイプは、ダブルデータレート(DDR)DRAM、DDR2DRAM、DDR3DRAM等を含むが、これらに限定されない。
図1に明示的に示されていないが、SoC105は、処理ユニット175A~175N及び/又はコンピュートユニット145A~145Nの内部にある1つ以上のキャッシュメモリを含むことができる。いくつかの実施形態では、SoC105は、処理ユニット175A~175Nによって利用されるキャッシュ160A~160Bを含む。一実施形態では、キャッシュ160A~160Bは、キャッシュコントローラを含むキャッシュサブシステムの一部である。
【0017】
本明細書において様々な構造の隣に表示される「N」という文字は、その構造の任意の数の要素(例えば、1つの処理ユニットを含むCPU165内の任意の数の処理ユニット175A~175N)を概して示すことを意図していることに留意されたい。さらに、「N」という文字を使用する
図1内の異なる符号(例えば、コンピュートユニット145A~145N)は、異なる要素が同じ数だけ設けられていることを意図していない(例えば、CPU165内の処理ユニット175A~175Nの数は、GPU130のコンピュートユニット145A~145Nの数と異なってもよい)。
【0018】
様々な実施形態では、コンピューティングシステム100は、コンピュータ、ラップトップ、モバイルデバイス、サーバ、又は、他の様々なタイプのコンピューティングシステム若しくはデバイスの何れかであってもよい。コンピューティングシステム100及び/又はSoC105のコンポーネントの数は、実施形態によって異なり得ることに留意されたい。コンポーネント/サブコンポーネントの各々の数は、
図1に示す数より多くてもよいし少なくてもよい。例えば、別の実施形態では、SoC105は、複数のメモリに接続された複数のメモリコントローラを含むことができる。また、コンピューティングシステム100及び/又はSoC105は、
図1に示されていない他のコンポーネントを含むことができることに留意されたい。さらに、他の実施形態では、コンピューティングシステム100及びSoC105は、
図1に示す以外の方法で構成することができる。
【0019】
図2を参照すると、グラフィックス処理ユニット(GPU)200の一実施形態のブロック図が示されている。一実施形態では、GPU200のロジックは、(
図1の)GPU130に含まれている。一実施形態では、GPU200は、シェーダアレイ215A~215Dと、コマンドセンターハブ220と、ファブリック225と、キャッシュ230と、を少なくとも含む。GPU200は、図面を不明瞭にするのを避けるために、
図2に示されていない他のロジック及び/又は他のコンポーネントも含むことに留意されたい。GPU200の構造は、一実施形態で使用される構造の一例に過ぎないことにも留意されたい。他の実施形態では、GPU200は、他の方法で編成されてもよい。
【0020】
シェーダアレイ215A~215Dは、GPU200に含まれる任意の数及びタイプのシェーダコンピュートリソースを表す。シェーダアレイ215A~215Dは、「シェーダユニット」とも呼ばれ得る。各シェーダアレイ215A~215Dは、ジオメトリ、頂点、画素、及び/又は、他のシェーディング動作を実行してグラフィックスをレンダリングするための様々なコンピュートリソースを含む。様々な実施形態では、コンピュートリソースは、命令をフェッチ及びデコードするためのコンポーネントと、算術計算を実行するための1つ以上の算術論理ユニット「ALU」と、他のリソースと、を含む。
図2に示されていないが、各シェーダアレイ215A~215Dは、レベル1(L1)キャッシュを含むことができる。シェーダアレイ215A~215Dは、ファブリック225を介してキャッシュ230に接続されている。一実施形態では、キャッシュ230は、レベル2(L2)キャッシュである。キャッシュ230は、実施形態に応じて、メモリ(図示省略)又は別のレベルのキャッシュ(図示省略)に接続される。コマンドセンターハブ220は、任意の数及びタイプのコマンドプロセッサ、スケジューラ及び他のコマンド処理リソースを表す。
【0021】
一実施形態では、コンプレッサモジュール235は、キャッシュ230内に配置されている。別の実施形態では、コンプレッサモジュール235は、ファブリック225内に配置されている。一実施形態では、GPU200が画素データを受信すると、コンプレッサモジュール235は、デルタカラー圧縮(DCC)を用いて画素データを圧縮するように構成されている。次いで、圧縮データがキャッシュ230に書き込まれる。一実施形態では、コンプレッサモジュール235は、圧縮データを復元し、復元データをクライアント(例えば、シェーダアレイ215A~215D)に伝達するように構成されている。
【0022】
図3を参照すると、画素データを圧縮する技術の一実施形態のブロック図が示されている。一実施形態では、プロセッサは、Nビットコンテナ内で整列された最上位ビット(MSB)であるMビット画素データを受信する。ここで、説明のために、N及びMは整数であり、NはMよりも大きいと仮定する。これは、
図3の上部のNビットコンテナ305において示されている。本明細書で用いられるように、コンテナは、複数のストレージ位置として定義され、ストレージ位置は、任意の適切なタイプのストレージ要素(例えば、レジスタ、メモリ、キャッシュ、処理レーン)で実装され、ストレージ要素のタイプは、実施形態によって異なる。図示するように、画素値の各ビット(PM-1,PM-2等)は、Nビットコンテナ305のMSB位置内に示されている。また、Nビットコンテナ305の最下位ビット(LSB)は、全て0ビットである。例えば、一実施形態において、Nは16に等しく、Mは10に等しく、10ビットの画素値は16ビットコンテナの上位10ビットに記憶され、下位6ビットは0に等しい。
【0023】
Nビットコンテナ305を圧縮する前に、Nビットコンテナ305内の画素データは、Mビットコンテナ310のLSBにシフトダウンされる。或いは、Nビットコンテナ305のLSBの0は、Mビットコンテナ310を生成するためにドロップされる。次に、Mビットコンテナ310内の画素データがDCCを用いて圧縮されると、隣接する画素間のデルタ値が減少し、その結果、画素データは、Nビットコンテナ305内の画素データが圧縮された場合よりも高い圧縮率で圧縮される。
【0024】
Mビット画素データを有するNビットコンテナを圧縮するスキームの例示的なブロック図が
図3の下部に示されている。Nビットコンテナ内の画素データは、プロセッサによって受信され、シフトユニット315に送られる。シフトユニット315は、Nビットコンテナ内のデータをMビットコンテナ内のデータに変換する。次に、Mビットコンテナ内のデータは、コンプレッサモジュール320への入力として送られる。コンプレッサモジュール320は、Mビットコンテナ内のデータを圧縮するためにDCCを利用するように構成されており、圧縮データをメモリサブシステム325に書き込む。メモリサブシステム325は、任意の数のキャッシュレベル及び/又はメモリデバイスを含む。
【0025】
次に、デコンプレッサモジュール330は、メモリサブシステム325から圧縮データを取得し、圧縮データを復元してMビットコンテナ内のデータを生成する。次に、拡張ユニット335は、Mビットコンテナ内のデータを拡張して、Nビットコンテナ内のデータを生成することができる。次いで、Nビットコンテナ内のデータがクライアント(例えば、シェーダ)に伝達される。シフトユニット315、コンプレッサモジュール320、デコンプレッサモジュール330及び拡張ユニット335は、ハードウェア及び/又はソフトウェアの任意の適切な組み合わせを用いて実装可能であることに留意されたい。実施形態に応じて、シフトユニット315、コンプレッサモジュール320、デコンプレッサモジュール330及び拡張ユニット335を一緒に組み合わせてもよいし、別々に実装してもよいことに留意されたい。
【0026】
図4を参照すると、黒及び白の画素値の符号化値を指定する2つのテーブルが示されている。一実施形態では、YCbCr色空間のY、Cb、Cr成分のうち所定の画素成分において黒を表すのに使用される符号化値は、数値表現においてあり得る最低値ではない。むしろ、Y、Cb、Cr成分の黒を表すのに使用される符号化値は、0以外の値である。また、白を表すのに使用される符号化値は、数値表現においてあり得る最大値ではない。例えば、テーブル400は、Y及びC(Cb及びCr)成分の黒及び白の各々の画素値を表すのに使用される、8ビット符号化値410と、対応するビット表現415,417とを示している。黒は、列415,417に示される対応するビット表現を有する8ビット符号化値に関して、16のY成分及び128のC成分で表される。また、白は、列415,417に示される対応するビット表現を有する8ビット符号化値に関して、235のY成分及び128のC成分で表される。コンプレッサモジュールが黒画素のみを含むデータブロックを検出した場合、プロセッサは、当該ブロックが黒画素のみを含むことを示す第1メタデータキーを生成し、第1メタデータキーのみを記憶する一方で、当該データブロックを破棄する。コンプレッサモジュールが白画素のみを含むデータブロックを検出した場合、プロセッサは、当該ブロックが白画素のみを含むことを示す第2メタデータキーを生成し、第2メタデータキーのみを記憶する一方で、当該データブロックを破棄する。
【0027】
テーブル420は、黒値及び白値についての10ビット符号化値430と、対応するビット表現435,437とを示している。黒についての10ビット符号化値430は、64のY成分及び512のC成分であり、対応するビット表現が列435,437に示されている。白についての10ビット符号化値430は、940のY成分及び512のC成分であり、対応するビット表現が列435,437に示されている。他の実施形態は、符号化値毎に他の数のビットを利用することができ、その値は、8ビット及び10ビット表現について示された同じパターンに従って黒及び白を表すのに使用されることに留意されたい。コンプレッサモジュール(例えば、
図1のコンプレッサモジュール135)は、画素値が特定の黒及び白の値に合致するかを判断するように構成されることにも留意されたい。所定のデータブロックの画素成分の全てが黒又は白の値と等しい場合、コンプレッサモジュールは、データブロック全体を圧縮し、次に、当該データブロックについて何れの値(黒又は白)が検出されたかを示すメタデータキーを生成する。
【0028】
図5を参照すると、ビデオ画素データを圧縮する方法500の一実施形態が示されている。説明のために、本実施形態のステップ及び
図6~
図9のステップは、順番に示されている。しかしながら、説明する方法の様々な実施形態では、説明する要素の1つ以上は、同時に行われてもよいし、図示した順序と異なる順序で行われてもよいし、完全に省略されてもよいことに留意されたい。必要に応じて、他の追加要素を実行することができる。本明細書で説明する様々なシステム又は装置は、方法500を実施するように構成されている。
【0029】
プロセッサは、Nビットコンテナ内で整列された最上位ビット(MSB)である複数のMビット画素成分を受信する(ブロック505)。ここで、N及びMは整数であり、NはMよりも大きい。一実施形態では、プロセッサは、コンプレッサモジュールを含み、キャッシュ及び/又はメモリに接続されている。次に、プロセッサは、Mビット画素成分をNビットコンテナの最下位ビット(LSB)位置にシフトダウンする(ブロック510)。次いで、プロセッサは、複数のNビットコンテナを複数のMビットコンテナに変換する(ブロック515)。別の実施形態では、プロセッサは、Nビットコンテナ内の各画素成分の(N-M)の最下位ビット(LSB)を破棄して、複数のMビットコンテナを生成する。次に、プロセッサは、複数のMビット画素成分を圧縮して、画素データの圧縮ブロックを生成する(ブロック520)。次いで、プロセッサは、画素データの圧縮ブロックをメモリサブシステムに記憶する(ブロック525)。ブロック525の後に、方法500は終了する。
【0030】
図6を参照すると、画素データの圧縮ブロックを復元する方法600の一実施形態が示されている。プロセッサは、画素データの圧縮ブロックをメモリサブシステムから取得する(ブロック605)。一実施形態では、プロセッサは、コンプレッサモジュールを含み、メモリサブシステムは、1つ以上のレベルのキャッシュ及び/又は1つ以上のメモリを含む。次に、プロセッサは、画素データの圧縮ブロックを復元して、Mビットコンテナ内の画素成分を生成する(ブロック610)。次いで、プロセッサは、MビットコンテナをNビットコンテナに拡張する(ブロック615)。次に、プロセッサは、画素成分をNビットコンテナのMSB位置にシフトする(ブロック620)。次いで、プロセッサは、NビットコンテナのMSB位置における画素成分をクライアントに伝達する(ブロック625)。一実施形態では、クライアントはシェーダである。ブロック625の後に、方法600は終了する。
【0031】
図7を参照すると、一定の画素データを圧縮する方法700の一実施形態が示されている。コンプレッサモジュールは、画素データのブロックを受信する(ブロック705)。コンプレッサモジュールは、ハードウェア及び/又はソフトウェアの任意の適切な組み合わせで実装される。一実施形態では、コンプレッサモジュールは、固定サイズのデータブロックを受信するように構成されている。一実施形態では、固定サイズは256バイトである。他の実施形態では、固定サイズは、他の量のデータを含むことができる。次に、コンプレッサモジュールは、受信した画素データが定数値と等しいかどうかを判別する(条件ブロック710)。
【0032】
受信した画素データが定数値と等しい場合(条件ブロック710:Yes)、コンプレッサモジュールは、定数値が黒の符号化値と等しいかどうかを判別する(条件ブロック720)。2つの異なる実施形態について、黒の符号化値を(
図4の)テーブル400,420に示す。受信した画素データが定数値と等しくない場合(条件ブロック710:No)、コンプレッサモジュールは、画素データのブロックを圧縮し、画素データのブロックがどのように圧縮されたかを示すメタデータキーを生成する(ブロック715)。次に、コンプレッサモジュールは、データの圧縮ブロックを記憶する(ブロック718)。次いで、コンプレッサモジュールは、メタデータキーを記憶する(ブロック745)。ブロック745の後に、方法700は終了する。
【0033】
定数値が黒の符号化値と等しい場合(条件ブロック720:Yes)、コンプレッサモジュールは、データブロックが全て黒画素で構成されていることを示すメタデータキーを生成する(ブロック725)。次に、コンプレッサモジュールは、画素データのブロックを破棄し(ブロック740)、メタデータキーを記憶する(ブロック745)。定数値が黒の符号化値と等しくない場合(条件ブロック720:No)、コンプレッサモジュールは、定数値が白色の符号化値と等しいかどうかを判別する(条件ブロック730)。2つの異なる実施形態について、白の符号化値をテーブル400,420に示す。定数値が白の符号化値と等しい場合(条件ブロック730:Yes)、コンプレッサモジュールは、データブロックが全て白画素で構成されていることを示すメタデータキーを生成する(ブロック735)。次に、コンプレッサモジュールは、画素データのブロックを破棄し(ブロック740)、メタデータキーを記憶する(ブロック745)。
【0034】
定数値が白の特別な符号化値と等しくない場合(条件ブロック730:No)、コンプレッサモジュールは、定数値の指標を記憶する(ブロック750)。一実施形態では、定数値は、レジスタに記憶される。次に、コンプレッサモジュールは、画素データのブロックが、黒ではなく、白ではない定数値の画素で構成されていることを指定するためのメタデータキーを生成する(ブロック755)。ブロック755の後に、コンプレッサモジュールは、画素データのブロックを破棄し(ブロック740)、メタデータキーを記憶する(ブロック745)。
【0035】
図8を参照すると、画素データを圧縮する方法800の別の実施形態が示されている。コンプレッサモジュールは、複数の画素成分を受信する(ブロック805)。次に、コンプレッサモジュールは、画素データのブロックをデータの圧縮ブロックに圧縮する(ブロック810)。一実施形態では、コンプレッサモジュールは、デルタカラー圧縮(DCC)を利用して、データブロックを圧縮する。
【0036】
データの圧縮ブロックのサイズが閾値よりも大きい場合(条件ブロック815:Yes)、コンプレッサモジュールは、データの圧縮ブロックを破棄する(ブロック820)。次に、複数の元の画素成分をまとめてパックして、コンテナ内の未使用ビットを除去する(ブロック825)。次いで、コンプレッサモジュールは、パックされた画素成分を記憶する(ブロック830)。一の実施形態では、或る量のスペースのみが、圧縮されたデータブロックを記憶するために割り当てられる。本実施形態では、閾値を、データの圧縮ブロックに割り当てられるメモリフットプリントのサイズと等しく設定することができる。一実施形態では、受信した画素成分が256バイトであり、閾値が192バイトである。例えば、本実施形態では、192バイトは、データの圧縮ブロックを記憶するために割り当てられるスペースの量であってもよい。他の実施形態では、受信した画素成分及び/又は閾値のサイズは、他のバイト数であってもよい。データの圧縮グループのサイズが閾値以下である場合(条件ブロック815:No)、コンプレッサモジュールは、データの圧縮ブロックを記憶する(ブロック835)。ブロック830,835の後に、方法800は終了する。
【0037】
図9を参照すると、アルファチャネルを有する画素データを圧縮する方法900の一実施形態が示されている。圧縮モジュールは、アルファチャネルを含む画素データのブロックを受信する(ブロック905)。画素データのブロックのアルファ成分が0に等しい場合には(条件ブロック910:Yes)、他の画素成分が定数値と等しく設定される(ブロック915)。例えば、一実施形態では、他の画素成分は、所定値に設定される。一実施形態では、他の画素成分は、0に設定される。他の実施形態では、他の画素成分は、様々な他の定数値の何れかに設定される。次に、画素データのブロックを定数値として圧縮する(ブロック920)。画素データのブロックを定数値として圧縮することは、達成される圧縮量を増加させるのに役立つ。そうではなく、画素データのブロックのアルファ成分が0に等しくない場合には(条件ブロック910:No)、圧縮モジュールは、画素データのブロックの通常の圧縮を実行する(ブロック925)。ブロック920,925の後に、方法900は終了する。
【0038】
様々な実施形態では、ソフトウェアアプリケーションのプログラム命令を使用して、上述した方法及び/又はメカニズムを実施する。プログラム命令は、C言語等の高水準プログラミング言語でハードウェアの動作を記述する。或いは、Verilog等のハードウェア設計言語(HDL)が使用される。プログラム命令は、非一時的なコンピュータ可読記憶媒体に記憶される。多くのタイプの記憶媒体を利用することができる。記憶媒体は、使用中にコンピューティングシステムによってアクセス可能であり、プログラム命令及び付随するデータを、プログラムの実行のためにコンピューティングシステムに提供する。コンピューティングシステムは、プログラム命令を実行するように構成された少なくとも1つ以上のメモリ及び1つ以上のプロセッサを含む。
【0039】
上述した実施形態は、実施態様の非限定な例に過ぎないことを強調しておきたい。上記の開示が十分に理解されれば、多くの変形及び修正が当業者に明らかになるであろう。以下の特許請求の範囲はこのような全ての変形及び修正を包含するように解釈されることを意図している。