(57)【要約】コンプレッサは、ブロック内の複数のピクセルのデルタカラー圧縮値を決定し、ブロック内の複数のピクセルを複数のグループに細分し、デルタ値を表す圧縮ビットストリームを送信するように構成されている。圧縮ビットストリームは、デルタ値を表すのに十分なビット数の範囲を示すブロックヘッダを表すビットと、複数のグループのうち対応するグループのデルタ値を表すのに十分なグループ最小ビット数をそれぞれ示す複数のグループヘッダと、デルタ値を含むグループのグループ最小ビット数を使用して符号化されたデルタ値と、を有する。デコンプレッサは、ブロックヘッダと、複数のグループヘッダと、符号化されたデルタ値と、に基づいて、圧縮ビットストリームを展開するように構成されている。【選択図】図１
2019525583.tif 000002
【特許請求の範囲】
【請求項１】
ブロック内の複数のピクセルのデルタ値を決定することであって、各デルタ値は、前記複数のピクセルのうち１つのピクセルの色と前記複数のピクセルから選択された基準ピクセルの基準色との間の差を表す、ことと、
前記複数のピクセルを複数のグループに細分することと、
前記デルタ値を表す圧縮ビットストリームを送信することであって、前記圧縮ビットストリームは、前記デルタ値を表すのに十分なビット数の範囲を示すブロックヘッダを表すビットと、前記複数のグループのうち対応するグループの前記デルタ値を表すのに十分なグループ最小ビット数をそれぞれ示す複数のグループヘッダと、前記デルタ値を含む前記グループの前記グループ最小ビット数を使用して符号化された前記デルタ値と、を有する、ことと、を含む、
方法。
【請求項２】
前記ブロック内の複数のピクセルのデルタ値を決定することは、色差及び前記デルタ値の符号を表すために所定数のビットを使用して各デルタ値を決定することを含み、前記圧縮ビットストリーム内のビットの総数は、前記複数のピクセルの前記デルタ値を表すために使用される前記所定数のビットの前記複数のピクセルに亘る合計未満である、
請求項１の方法。
【請求項３】
前記ブロックヘッダは、前記グループのうち何れかのグループの前記デルタ値を表すための最小ビット数（Ｍ）と、Ｍと前記デルタ値を表すのに十分なビット数の最大値を表す第２ビット数との間の差を表すのに十分な第１ビット数（Ｂ）と、を示すビットを含み、前記複数のグループヘッダの各々は、Ｍと前記複数のグループのうち対応するグループの前記デルタ値を表すグループ最小ビット数との間の差を示すビットを含む、
請求項１の方法。
【請求項４】
前記ブロックヘッダを表すビットは、Ｍ及びＢの全てのとり得る組み合わせを表すのに十分な第３ビット数を含み、
前記第３ビット数によって表される符号化値を形成するために、Ｍ及びＢの値の組み合わせを符号化することであって、前記ブロックヘッダは前記符号化値を含む、ことをさらに含む、
請求項３の方法。
【請求項５】
前記ブロック内の複数のピクセルを複数のグループに細分することは、
異なるグループ構成に従って、前記複数のピクセルを前記複数のグループに細分することと、
前記異なるグループ構成を使用して生成された前記圧縮ビットストリーム内のビットの総数を比較することと、
前記比較に基づいて、前記複数のグループを細分するための前記異なるグループ構成のうち１つのグループ構成を選択することと、を含む、
請求項１の方法。
【請求項６】
各グループの前記デルタ値が全て正の値、全て負の値、又は、正の値と負の値との混合であるか否かを判別することと、
グループの前記デルタ値が全て正の値又は全て負の値であると判別したことに応じて、当該グループの前記グループヘッダから前記デルタ値の符号を示すビットを除くことと、
グループの前記デルタ値が正の値と負の値との混合であると判別したことに応じて、当該グループの前記デルタ値が正の値と負の値との混合であることを示すビットを、当該グループの前記グループヘッダに含めることと、をさらに含む、
請求項１の方法。
【請求項７】
前記対応するグループの前記デルタ値が全て正の値、全て負の値、又は、正の値と負の値との混合であるか否かを示すビットを前記グループヘッダが含むか否かを示すバイパスビットを、前記ブロックヘッダに含めることと、
前記ブロック内の前記複数のピクセルに関連する全ての前記デルタ値がゼロに等しいと判別したことに応じて、前記バイパスビットを前記ブロックヘッダに含めるのをバイパスすることと、をさらに含む、
請求項６の方法。
【請求項８】
グループ内のピクセルの前記デルタ値の最大絶対値が２の累乗に等しいと判別したことに応じて、前記最大絶対値又は前記最大絶対値未満を有する前記デルタ値が最大の符号化ビット値によって表されるように、前記グループ最小ビット数未満のビットを使用して前記グループ内のデルタ値を符号化することと、
前記最大の符号化ビット値が前記最大絶対値又は前記最大絶対値未満を示すか否かを表すために、トレーリングビットを前記最大の符号化ビット値に追加することと、をさらに含む、
請求項６の方法。
【請求項９】
ブロック内の複数のピクセルのデルタ値を表す圧縮ビットストリームを受信することであって、前記圧縮ビットストリームは、前記デルタ値を表すのに十分なビット数の範囲を示すブロックヘッダを表すビットと、前記複数のグループのうち対応するグループの前記デルタ値を表すのに十分なグループ最小ビット数をそれぞれ示す複数のグループヘッダと、前記デルタ値を含む前記グループの前記グループ最小ビット数を使用して符号化された前記デルタ値と、を有する、ことと、
前記複数のピクセルのうち１つのピクセルの色と前記複数のピクセルから選択された基準ピクセルの基準色との間の差を表す前記デルタ値を回復するために、前記ブロックヘッダと、前記複数のグループヘッダと、前記符号化された前記デルタ値と、に基づいて、前記圧縮ビットストリームを展開することと、を含む、
方法。
【請求項１０】
前記圧縮ビットストリームを展開することは、色差及び前記デルタ値の符号を示す所定数のビットによって表される前記デルタ値を回復することを含み、前記圧縮ビットストリーム内のビットの総数は、前記複数のピクセルの前記デルタ値を表すために使用される前記所定数のビットの前記複数のピクセルに亘る合計未満である、
請求項９の方法。
【請求項１１】
前記ブロックヘッダは、前記グループのうち何れかのグループの前記デルタ値を表すのに十分な最小ビット数（Ｍ）と、Ｍと前記デルタ値を表すのに十分なビット数の最大値を表すのに十分な第２ビット数との間の差を表すのに十分な第１ビット数（Ｂ）と、を示すビットを含み、前記複数のグループヘッダの各々は、Ｍと前記複数のグループのうち対応するグループの前記デルタ値を表すのに十分なグループ最小ビット数との間の差を示すビットを含む、
請求項９の方法。
【請求項１２】
前記ブロックヘッダを表すビットは、Ｍ及びＢの全てのとり得る組み合わせを表すのに十分な第３ビット数を含み、
前記第３ビット数によって表されるＭ及びＢの値の組み合わせの符号化値を復号することであって、前記ブロックヘッダは前記符号化値を含む、ことをさらに含む、
請求項１１の方法。
【請求項１３】
前記対応するグループヘッダに含まれるビットに基づいて、各グループの前記デルタ値が全て正の値、全て負の値、又は、正の値と負の値との混合であるか否かを判別することと、
グループの前記デルタ値が全て正の値又は全て負の値であると判別したことに応じて、当該グループの前記グループヘッダから前記デルタ値の符号を示すビットを除くことと、
グループの前記デルタ値が正の値と負の値との混合であると判別したことに応じて、前記グループの前記デルタ値が正の値と負の値との混合であることを示すビットを、当該グループの前記グループヘッダに含めることと、をさらに含む、
請求項９の方法。
【請求項１４】
前記ブロック内の前記複数のピクセルに関連する少なくとも一部の前記デルタ値がゼロに等しくない場合に前記ブロックヘッダ内のバイパスビットを検出することであって、前記バイパスビットは、前記対応するグループの前記デルタ値が全て正の値、全て負の値、又は、正の値と負の値との混合であるか否かを示すビットを前記グループヘッダが含むか否かを示す、ことと、
前記バイパスビットの値に基づいて前記グループヘッダを復号することと、をさらに含む、
請求項１３の方法。
【請求項１５】
グループ内のピクセルの前記デルタ値の最大絶対値が２の累乗に等しいと判別することと、
前記グループ最小ビット数未満のビットを使用して前記グループ内のデルタ値を復号することと、
最大の符号化ビット値と、前記最大の符号化ビット値が前記最大絶対値又は前記最大絶対値未満を示すか否かを示すトレーリングビットと、に基づいて、前記最大の符号化ビット値によって表されるデルタ値を復号することと、をさらに含む、
請求項１３の方法。
【請求項１６】
コンプレッサを備えるデバイスであって、
前記コンプレッサは、
ブロック内の複数のピクセルのデルタ値を決定することであって、各デルタ値は、前記複数のピクセルのうち１つのピクセルの色と前記複数のピクセルから選択された基準ピクセルの基準色との間の差を表す、ことと、
前記ブロック内の前記複数のピクセルを複数のグループに細分することと、
前記デルタ値を表す圧縮ビットストリームを送信することであって、前記圧縮ビットストリームは、前記デルタ値を表すのに十分なビット数の範囲を示すブロックヘッダを表すビットと、前記複数のグループのうち対応するグループの前記デルタ値を表すのに十分なグループ最小ビット数をそれぞれ示す複数のグループヘッダと、前記デルタ値を含む前記グループの前記グループ最小ビット数を使用して符号化された前記デルタ値と、を有する、ことと、
を行うように構成されている、
デバイス。
【請求項１７】
前記ブロックヘッダは、前記グループのうち何れかのグループの前記デルタ値を表すのに十分な最小ビット数（Ｍ）と、Ｍと前記デルタ値を表すのに十分なビット数の最大値を表すのに十分な第２ビット数との間の差を表すのに十分な第１ビット数（Ｂ）と、を示すビットを含み、前記複数のグループヘッダの各々は、Ｍと前記複数のグループのうち対応するグループの前記デルタ値を表すのに十分なグループ最小ビット数との間の差を示すビットを含む、
請求項１６のデバイス。
【請求項１８】
前記ブロックヘッダを表すビットは、Ｍ及びＢの全てのとり得る組み合わせを表すのに十分な第３ビット数を含み、
前記コンプレッサは、
前記第３ビット数によって表される符号化値を形成するために、Ｍ及びＢの値の組み合わせを符号化することであって、前記ブロックヘッダは前記符号化値を含む、ことを行うように構成されている、
請求項１７のデバイス。
【請求項１９】
前記コンプレッサは、
各グループの前記デルタ値が全て正の値、全て負の値、又は、正の値と負の値との混合であるか否かを判別することと、
全て正の値又は全て負の値であるグループの前記デルタ値の符号を示すビットをドロップすることと、
前記対応するグループの前記デルタ値が全て正の値、全て負の値、又は、正の値と負の値との混合であるか否かを示すためのビットを、前記グループヘッダに含めることと、
を行うように構成されている、
請求項１６のデバイス。
【請求項２０】
前記コンプレッサは、
グループ内のピクセルの前記デルタ値の最大絶対値が２の累乗に等しいと判別したことに応じて、
前記最大絶対値又は前記最大絶対値未満を有する前記デルタ値が最大の符号化ビット値によって表されるように、前記グループ最小ビット数未満のビットを使用して前記グループ内の前記デルタ値を符号化することと、
前記最大の符号化ビット値が前記最大絶対値又は前記最大絶対値未満を示すか否かを表すために、トレーリングビットを前記最大の符号化ビット値に追加することと、
を行うように構成されている、
請求項１９のデバイス。
【請求項２１】
デコンプレッサを備えるデバイスであって、
前記デコンプレッサは、
ブロック内の複数のピクセルのデルタ値を表す圧縮ビットストリームを受信することであって、前記圧縮ビットストリームは、前記デルタ値を表すのに十分なビット数の範囲を示すブロックヘッダを表すビットと、前記複数のグループのうち対応するグループの前記デルタ値を表すのに十分なグループ最小ビット数をそれぞれ示す複数のグループヘッダと、前記デルタ値を含む前記グループの前記グループ最小ビット数を使用して符号化された前記デルタ値と、を有する、ことと、
前記複数のピクセルのうちの１つのピクセルの色と前記複数のピクセルから選択された基準ピクセルの基準色との間の差を表す前記デルタ値を回復するために、前記ブロックヘッダと、前記複数のグループヘッダと、前記符号化された前記デルタ値と、に基づいて、前記圧縮ビットストリームを展開することと、
を行うように構成されている、
デバイス。
【請求項２２】
前記ブロックヘッダは、前記グループのうち何れかのグループの前記デルタ値を表すのに十分な最小ビット数（Ｍ）と、Ｍと前記デルタ値を表すのに十分なビット数の最大値を表すのに十分な第２ビット数との間の差を表すのに十分な第１ビット数（Ｂ）と、を示すビットを含み、前記複数のグループヘッダの各々は、Ｍと前記複数のグループのうち対応するグループの前記デルタ値を表すのに十分なグループ最小ビット数との間の差を示すビットを含む、
請求項２１のデバイス。
【請求項２３】
前記ブロックヘッダを表すビットは、Ｍ及びＢの全てのとり得る組み合わせを表すのに十分な第３ビット数を含み、
前記デコンプレッサは、
前記第３ビット数によって表されるＭ及びＢの値の組み合わせの符号化値を復号することであって、前記ブロックヘッダは前記符号化を含む、ことを行うように構成されている、
請求項２２のデバイス。
【請求項２４】
前記デコンプレッサは、
前記対応するグループヘッダに含まれるビットに基づいて、各グループの前記デルタ値が全て正の値、全て負の値、又は、正の値と負の値との混合であるか否かを判別することと、
グループの前記デルタ値が全て正の値又は全て負の値であると判別したことに応じて、当該グループの前記グループヘッダから前記デルタ値の符号を示すビットを除くことと、
グループの前記デルタ値が正の値と負の値との混合であると判別したことに応じて、前記グループの前記デルタ値が正の値と負の値との混合であることを示すビットを、当該グループの前記グループヘッダに含めることと、
を行うように構成されている、
請求項２１のデバイス。
【請求項２５】
前記デコンプレッサは、
前記ブロック内の前記複数のピクセルに関連する少なくとも一部の前記デルタ値がゼロに等しくない場合に前記ブロックヘッダ内のバイパスビットを検出することであって、前記バイパスビットは、前記対応するグループの前記デルタ値が全て正の値、全て負の値、又は、正の値と負の値との混合であるか否かを示すビットを前記グループヘッダが含むか否かを示す、ことと、
前記バイパスビットの値に基づいて前記グループヘッダを復号することと、
を行うように構成されている、
請求項２４のデバイス。
【請求項２６】
前記デコンプレッサは、
グループ内のピクセルの前記デルタ値の最大絶対値が２の累乗に等しいと判別することと、
前記グループ最小ビット数未満のビットを使用して前記グループ内のデルタ値を復号することと、
最大の符号化ビット値と、前記最大の符号化ビット値が前記最大絶対値又は前記最大絶対値未満を示すか否かを示すトレーリングビットと、に基づいて、前記最大の符号化ビット値によって表されるデルタ値を復号することと、
を行うように構成されている、
請求項２４のデバイス。
【発明の詳細な説明】
【背景技術】
【０００１】
メモリ帯域幅の管理は、システムオンチップ（ＳＯＣ）の命令プロセッサを相互接続するバス上で、及び、ＳＯＣと例えばダイナミックランダムアクセスメモリ（ＤＲＡＭ）等の外部メモリとの間のインタフェースを介して、高帯域幅のフローを生成するＳＯＣ等の処理システムにおける課題である。例えば、グラフィックス処理は、スクリーン上に表示されるシーンの三次元（３-Ｄ）モデルをピクセルとしてレンダリングするために使用される。以下の目的のために、完全な画像はフレームと呼ばれ、フレーム内のピクセル数は、スクリーンのピクセル解像度によって決定される。フレーム内の各ピクセルの色は、特定の色範囲又は色域に亘る異なる色を表す特定の数のビットによって表される。例示すると、特定のピクセルが２５６色の何れを表すかを示すために８ビット値を使用することができる。ピクセルを表すために使用されるビット数は、通常、ピクセルの色深度又はビット深度と呼ばれる。各のフレームを表すために使用されるビットの総数は、各ピクセルを表すために使用されるビット数及びディスプレイ内のピクセル数に比例して増加する。シーン内の動きは、例えば３０フレーム／秒（ｆｐｓ）等の特定のフレームレートで連続するフレームを表示することによって表される。よって、バス又はインタフェースを介した伝送のためにグラフィックス処理ユニット（ＧＰＵ）によってビットが生成される速度は、フレーム速度に比例して増加する。次世代のＧＰＵは、より高いピクセル解像度、より大きな色深度又は色域、及び、より高いフレームレートをサポートする等の異なる方法によって、レンダリングされた画像の品質を改善することを試みてきた。したがって、ＧＰＵ、ディスプレイ及び外部メモリ等のシステム内の異なる要素間で通信されるトラフィックの量が大きくなり、継続的に増加している。
【０００２】
添付の図面を参照することによって本開示をより良く理解することができ、その多くの特徴及び利点が当業者に明らかとなるであろう。異なる図面における同じ参照記号の使用は、類似又は同一のアイテムを示す。
【図面の簡単な説明】
【０００３】
【図１】いくつかの実施形態による、処理システムのブロック図である。
【図２】いくつかの実施形態による、処理システムの一部のブロック図である。
【図３】いくつかの実施形態による、デルタカラー圧縮及びビットパッキングを実行する方法のフローチャートである。
【図４】いくつかの実施形態による、異なるグループ構成のピクセルのグループに細分することができるピクセルのブロックのブロック図である。
【図５】いくつかの実施形態による、ブロック内のピクセルのデルタ値を表す圧縮ビットストリームのブロック図である。
【図６】いくつかの実施形態による、全て正のデルタ値又は全て負のデルタ値を表すのに使用されるビット数を減らす方法のフローチャートである。
【図７】いくつかの実施形態による、２の累乗に等しい最大デルタ値を有するグループ内のデルタ値を符号化する方法のフローチャートである。
【図８】いくつかの実施形態による、２の累乗に等しい最大デルタ値を有するグループ内のデルタ値を復号する方法のフローチャートである。
【図９】いくつかの実施形態による、圧縮アルゴリズムの機能をバイパスするか否かを決定する方法のフローチャートである。
【発明を実施するための形態】
【０００４】
本明細書で説明するように、ビデオ／グラフィックス画像（又は、他のビットストリーム）によって消費される帯域幅は、基準ピクセルの色、及び、他のピクセルの色と基準ピクセルの色との間の差を表すデルタ値に基づいてブロック内のピクセルの色を表すためのデルタカラー圧縮を実行することによって減らすことができる。コンプレッサは、各ブロック内のピクセルを複数のグループに細分する。コンプレッサは、グループｉ内のピクセルのデルタ値を表すのに必要なビットの最小数Ｂ＿ｉを決定し、ブロックのグループ内のデルタ値を表すビットの数の最小値を表すビットの最小数（Ｍ）を決定する。また、コンプレッサは、ビットの最小数と、ブロックのグループ内のデルタ値を表すのに必要なビットの数の最大値を表すビットの最大数と、の間の差を示すのに必要なビット数（Ｂ）を決定する。Ｍ及びＢの値は、結果として生じる圧縮されたピクセルデータに関連して、コンプレッサからデコンプレッサに送信されるブロックヘッダに含まれる。Ｍ及びＢの値は、ブロックヘッダに含めるために別々に符号化されてもよいし、Ｍ及びＢの値の組み合わせは、Ｍ及びＢについての全てのとり得る組み合わせを表す符号化を使用して符号化されてもよい。また、コンプレッサは、Ｍと組み合わせて、対応するグループ内のデルタ値を表すビット数を示す、Ｂ＿ｉとＭ（Ｂ＿ｉ−Ｍ）との間の差の値を含むグループヘッダを生成する。コンプレッサは、対応するグループヘッダによって示されるビット数を使用して、各グループ内のピクセル毎のデルタ値を圧縮することができ、デコンプレッサは、ブロックヘッダ及びグループヘッダ内の情報を使用して、圧縮された情報を展開することができる。コンプレッサのいくつかの実施形態は、圧縮アルゴリズムを異なるグループ構成に適用し、最高レベルの圧縮をもたらす最良のグループ構成を選択する。コンプレッサは、選択されたグループ構成を示すブロックヘッダ内の情報を含む。
【０００５】
各グループ内のデルタ値は、ゼロ、正又は負の数であってもよい。そのため、グループ内のデルタ値毎に１つの符号ビットが必要とされる。コンプレッサのいくつかの実施形態は、グループ内のデルタ値の特性に基づいて、ブロック内のピクセルを表すのに使用されるビット数をさらに減らす。例えば、各デルタ値の符号を表すビットは、グループ内の全てのデルタ値が正（ゼロを含む）又は負（ゼロを含む）の何れかである場合、ドロップ（削除）されてもよい。コンプレッサは、グループが全て正、全て負、又は、混合であるかどうかを示すためのビットをグループヘッダに含めることができ、これにより、デコンプレッサは、デルタ値を展開する方法を知ることができる。コンプレッサのいくつかの実施形態は、選択された１ビットコード及び２ビットコードが異なるビット値で開始する限り、１つの構成（例えば、全てが正）用の１ビット、及び、他の２つの構成（例えば、全てが負及び混合）用の２ビットを使用する。これにより、デコンプレッサは、コードを区別することができる。他の可能性は、異なるグループに対して異なる１ビット及び２ビットコードを使用する代わりに、全てのグループの符号ビットを共に組み合わせて、全ての符号ビットに１つのコードを割り当てることである。デルタ値毎に１ビットを取り除くことによって節約されるビット数が、グループの符号を表すために追加されるビット数よりも多い場合には、圧縮における純益が生じる。本明細書で説明するように、グループ内のピクセルのデルタ値の最大絶対値が２の累乗に等しい場合、グループ内のデルタ値を表すのに使用されるビット数を減らすことができる。いくつかの変形例では、これらの機能を有効又は無効にするために、バイパスビットが各ブロックヘッダに含まれる。ブロック内の全てのデルタ値がゼロの場合（すなわち、ブロック内の全てのピクセルが同じ色値を有する場合）には、バイパスビットがドロップされてもよい。
【０００６】
図１は、いくつかの実施形態による、処理システム１００のブロック図である。処理システム１００は、例えばダイナミックランダムアクセスメモリ（ＤＲＡＭ）１１０等の１つ以上の外部メモリに接続された処理デバイス１０５を含む。処理デバイス１０５は、ＣＰＵ又はＧＰＵ等の複数の計算ユニット１１１，１１２，１１３，１１４（まとめて「計算ユニット１１１〜１１４」と呼ばれる）を含む。例えば、処理デバイス１０５は、基板上に形成されたアクセラレーテッドプロセッシングユニット（ＡＰＵ）又はアクセラレーテッドプロセッシングデバイス（ＡＰＤ）等のシステムオンチップ（ＳＯＣ）であってもよい。計算ユニット１１１〜１１４の各々は、異なる命令を同時に処理することができる複数のプロセッサコアを含む。また、計算ユニット１１１〜１１４は、キャッシュ、算術論理演算ユニット、浮動小数点演算ユニット、分岐予測ロジック、メモリ又はバスインタフェース等のように、プロセッサコアによって共有される１つ以上のリソースを含む。
【０００７】
処理デバイス１０５は、計算ユニット１１１〜１１４又は処理デバイス１０５内の他のエンティティによって使用され得る命令又はデータを記憶するためのデータ記憶ユニット１１５，１２０を含む。データ記憶ユニット１１５，１２０のいくつかの実施形態は、ＤＲＡＭを用いて実装される。メモリコントローラ（ＭＣ）１２５は、メモリインタフェース１３０を介して処理デバイス１０５とＤＲＡＭ１１０との間のデータフローを調整するために使用される。メモリコントローラ１２５は、ＤＲＡＭ１１０から情報を読み出し、ＤＲＡＭ１１０に情報を書き込むことを制御するために使用されるロジックを含む。計算ユニット１１１〜１１４は、バス１３５を使用して、データ記憶ユニット１１５，１２０と、メモリコントローラ１２５と、又は、処理システム１００内の他のエンティティと、互いに通信することができる。例えば、計算ユニット１１１〜１１４は、通常、信号をバス１３５にアサートし、対応する計算ユニット１１１〜１１４にアドレス指定された信号をバス１３５から受信するための物理層インタフェース又はバスインタフェースを含む。また、処理デバイス１０５のいくつかの実施形態は、処理デバイス１０５内のエンティティの間の通信を容易にするためのノースブリッジ又はサウスブリッジ等の１つ以上のブリッジを含む。
【０００８】
処理デバイス１０５は、オペレーティングシステム（ＯＳ）、又は、処理デバイス１０５内でワークロードを生成する１つ以上のアプリケーション１４０を実装する。ＯＳ／アプリケーション１４０の単一のインスタンスが図１に示されているが、処理デバイス１０５のいくつかの実施形態は、オペレーティングシステム又は１つ以上のアプリケーションの複数のインスタンスを実装する。例えば、計算ユニット１１１〜１１４上で実行する仮想マシンは、オペレーティングシステム又は１つ以上のアプリケーションの個別のインスタンスを実行することができる。
【０００９】
処理デバイス１０５のいくつかの実施形態は、グラフィックス処理を実行して、３Ｄモデルによって表されるシーンをレンダリングし、スクリーン１４５上に表示するための画像を生成する。例えば、計算ユニット１１１〜１１４のうち１つ以上は、バス１３５及びインタフェース１３０を介して、ＤＲＡＭ１１０に記憶された３Ｄモデルを表す情報にアクセスすることができる。次に、計算ユニット１１１〜１１４は、アクセスされた情報を使用して、シーンの一部をレンダリングし、スクリーン１４５上に表示するための画像を生成する。計算ユニット１１１〜１１４は、レンダリングされた画像を表す情報を、バス１３５を介してスクリーン１４５に送信する。情報は、処理システム１００内のエンティティ間でビットストリームとして伝達される。本明細書で説明するように、計算ユニット１１１〜１１４、ＤＲＡＭ１１０、データ記憶ユニット１１５、データ記憶ユニット１２０、スクリーン１４５、又は、処理システム１００内の他のエンティティによって生成されるトラフィック量は、特に、ビデオ又はグラフィックス情報を表すビットストリームを生成するグラフィックスアプリケーションのために、メモリインタフェース１３０、バス１３５、又は、処理システム１００内の他の相互接続において利用可能な帯域幅に大きな負担をかける可能性がある。
【００１０】
例えばスクリーン１４５上に表示するための画像を表すピクセルの色等のビデオ又はグラフィックス情報を表すビットストリームを圧縮するために、デルタカラー圧縮及びビットパッキングが使用される。計算ユニット１１１〜１１４（又は、ビットストリームを生成する処理システム１００内の他のエンティティ）のいくつかの実施形態は、デルタカラー圧縮及びビットパッキングを実行するためのコンプレッサ（図１には示されていない）を実装する。コンプレッサは、対応する計算ユニット１１１〜１１４上で実行可能なハードウェア、ファームウェア、ソフトウェア、又は、これらの組み合わせとして実装される。コンプレッサは、計算ユニット１１１〜１１４又は他のエンティティから情報を受信するスタンドアロンエンティティとして実装されてもよい。コンプレッサのいくつかの実施形態は、フレームを構成するブロック内のピクセルのデルタ値を計算する。例えば、各ブロックは、画像の正方形部分を表す８×８セットのピクセル（例えば、６４ピクセル）を含むことができる。各デルタ値は、対応するピクセルの色と、複数のピクセルから選択された基準ピクセルの基準色と、の間の差を表す。コンプレッサは、ブロック内のピクセルを、８つの８×１グループのピクセル又は８つの４×２グループのピクセル等のグループに細分することができる。次に、コンプレッサは、非圧縮ビットストリームよりも少ないビット数を使用して、デルタ値を表す圧縮ビットストリームを生成することができる。例えば、本明細書で説明するように、コンプレッサは、ピクセルのブロックに関連するブロックヘッダと、細分されたピクセルのグループに関連するグループヘッダと、符号化されたデルタ値と、を含む圧縮ビットストリームを生成することができる。グループ毎のデルタ値は、ブロックヘッダ及び対応するグループヘッダに含まれる情報によって示されるように、異なる数のビットを使用して符号化される。デコンプレッサ（図１には示されていない）は、本明細書で説明するように、圧縮ビットストリームを展開して、非圧縮ビットストリーム内のビットを回復することができる。
【００１１】
図２は、いくつかの実施形態による、処理システムの一部２００のブロック図である。一部２００は、ハードウェア、ファームウェア、ソフトウェア、又は、これらの組み合わせで実装されたコンプレッサ２０５及びデコンプレッサ２１０を含む。コンプレッサ２０５及びデコンプレッサ２１０のいくつかの実施形態は、図１に示す処理システム１００内の異なる位置に実装される。例えば、コンプレッサ２０５は、計算ユニット１１１〜１１４のうち１つの計算ユニットの一部として実装（又は、計算ユニット１１１〜１１４からビットを受信するように構成）されてもよく、デコンプレッサ２１０は、ＤＲＡＭ１１０又はスクリーン１４５の一部として実装（又は、ＤＲＡＭ１１０若しくはスクリーン１４５にビットを提供するように構成）されてもよい。コンプレッサ２０５は、場合によっては、フレーム内のピクセルの色を表す非圧縮ビットストリーム２１５を受信する。コンプレッサ２０５は、本明細書で説明するデルタカラー圧縮及びビットパッキング技術のいくつかの実施形態に従って非圧縮ビットストリーム２１５を圧縮して、デコンプレッサ２１０に提供される圧縮ビットストリーム２２０を生成する。デコンプレッサ２１０は、圧縮ビットストリーム２２０を展開して、非圧縮ビットストリーム２２５を回復する。非圧縮ビットストリーム２２５は、非圧縮ビットストリーム２１５と同じビットを含み、又は、圧縮が可逆若しくは不可逆であるか、圧縮ビットストリーム２２０の伝送においてエラーが発生したか否かに応じて、異なるビットを含む。
【００１２】
図３は、いくつかの実施形態による、デルタカラー圧縮及びビットパッキングを実行する方法３００のフローチャートである。方法３００は、図２に示すコンプレッサ２０５のいくつかの実施形態において実施される。方法３００は、例えば８×８ブロック（６４バイトのブロックサイズを使用することによってメモリのアドレス指定能力を保存する）等のピクセルのブロックに適用される。また、メモリのアドレス指定能力は、他のサイズのピクセルのブロックを選択して、これらが例えば６４バイト等の特定のバイト数に揃えられるようにすることによって、他のケースにおいて保存されてもよい。方法３００のいくつかの実施形態は繰り返して実行されてもよいし、方法３００の複数のインスタンスは、スクリーン上に表示する画像を表すピクセルのブロック等の複数のブロックに対してデルタカラー圧縮及びビットパッキングを実行するために（例えば、図１に示す計算ユニット１１１〜１１４に実装された複数のプロセッサコア上で）同時又は並行して実行されてもよい。方法３００に従って圧縮されたビットストリームの展開は、本明細書で説明するように、図２に示すデコンプレッサ２１０のいくつかの実施形態によって実行される。
【００１３】
ブロック３０５において、コンプレッサは、ブロック内のピクセルの中から基準ピクセルを選択し、基準ピクセルの色値を決定する。例えば、８ビットの色深度（又は、色域）がピクセルの色を表すために使用される場合、基準ピクセルの色値を８ビット値によって表してもよい。いくつかの変形例では、コンプレッサは、潜在的な基準ピクセルとして２つ以上のピクセルを選択し、次に、基準として使用するために、潜在的な基準ピクセルから１つのピクセルを選択する。潜在的な基準ピクセルを識別する情報は、対応するブロックヘッダに含まれる。次いで、コンプレッサは、基準ピクセルの色値とブロック内の他のピクセルの色値との間の差を表すデルタ値を定義する。ピクセルのデルタ値は、基準ピクセルの色及びピクセルの色の相対値に応じて、正又は負であってもよい。デルタ値を表すのに十分なピクセル数は、ブロック内のピクセルのとり得るデルタ値の範囲によって異なる。例えば、ピクセルが８ビットの色深度で表される場合、ピクセルのデルタ値は、−２５５〜＋２５５の範囲にある。８ビットは、０〜２５５の範囲にあるデルタ値の絶対値を表すのに十分であり、デルタ値の符号を表すために１つの付加ビットが必要である。いくつかの実施形態では、デルタ値の符号は、負の数を偶数に、正の数を奇数に変換することによって表される。例えば、一連のデルタ値｛０，１，−１，２，−２，３，−３｝は、正のデルタ値及び負のデルタ値を正の偶数及び正の奇数にそれぞれ符号化する連続数｛０，１，２，３，４，５，６｝に変換されてもよい。他の例では、値０〜２ｎ−１−１を、正のデルタ値を表すために使用してもよく、値２ｎ−１〜２ｎ−１を、負のデルタ値を表すために使用してもよい。正のデルタ値及び負のデルタ値を全て正の数に変換する他の符号化も使用することができる。
【００１４】
ブロック３１０において、コンプレッサは、ブロックをピクセルのグループに細分する。例えば、いくつかの変形例では、コンプレッサは、ブロックを、８×１構成で配置されたピクセルの８つのグループ、又は、４×２構成で配置されたピクセルの８つのグループに細分する。いくつかの変形例では、ピクセルグループ内のピクセルの値は、本明細書で説明するように、全て正の数に変換される。
【００１５】
ブロック３１５において、コンプレッサは、各グループ（ｉ）内のデルタ値を表すのに十分なグループ最小ビット数（Ｂ＿ｉ）を決定する。正のデルタ値及び負のデルタ値が一連の正の数に変換されている場合、グループ最小ビット数は、
【数１】
2019525583.tif 000003
を用いて決定される。ここで、Ｍ＿ｉは、グループ内のピクセルの最大デルタ値である。例えば、第１グループ（ｉ＝１）内のデルタ値は、０〜６の範囲のデルタ値を有することができ、そのため、第１グループのデルタ値を３ビット（Ｂ＿ｉ＝３）で表すことができる。第２グループ（ｉ＝２）内のデルタ値は、０〜１３の範囲のデルタ値を有することができ、そのため、第２グループのデルタ値を４ビット（Ｂ＿ｉ＝４）で表すことができる。第３グループ（ｉ＝３）内のデルタ値は、０〜２２の範囲のデルタ値を有することができ、そのため、第３グループのデルタ値を５ビット（Ｂ＿ｉ＝５）で表すことができる。この例では、残りのグループのデルタ値も３〜５ビットで表される。
【００１６】
ブロック３２０において、コンプレッサは、ブロックのグループのうち何れか１つのグループ内のデルタ値を表すのに十分なビットの最小数に等しい最小ビット数（Ｍ）を決定する。最小ビット数（Ｍ）は、
【数２】
2019525583.tif 000004
に従って、ブロック内の各グループを表すのに十分なグループの最小ビット数の最小値をとることによって決定される。よって、上記の例のように、グループのデルタ値を３〜５ビットで表すことができる場合、ブロックの最小ビット数Ｍ＝３である。
【００１７】
ブロック３２５において、コンプレッサは、Ｍと、ブロック内のデルタ値を表すのに十分なビットの最大数と、の間の差を表すのに十分なビット数（Ｂ）を決定する。最大ビット数は、ブロック内の各グループを表すのに十分なグループ最小ビット数の最大値をとることによって決定される。したがって、ビット数（Ｂ）は、
【数３】
2019525583.tif 000005
に従って決定されてもよい。よって、上記の例のように、グループのデルタ値を３〜５ビットで表すことができる場合、ブロック内のグループのビット数Ｂ＝２である。
【００１８】
ブロック３３０において、コンプレッサは、Ｍ及びＢを表すビットを含むブロックヘッダを生成する。ブロックヘッダのいくつかの実施形態は、Ｍを表すための第１ビット数と、Ｂを表すための第２ビット数と、を含む。例えば、ピクセルが８ビットの色深度で表される場合、ブロックヘッダ内の４ビットを使用してＭを表し、ブロックヘッダ内の４ビットを使用してＢを表してもよい。この場合、グループ内のデルタ値を表すために最大で９ビットが必要になる可能性がある。ブロックヘッダのいくつかの実施形態は、Ｍ及びＢの値の全てのとり得る組み合わせを表すために、代替的にいくつかのビットを含む。これは、ブロックヘッダに含まれるビットの総数を減らす。例えば、以下の表は、Ｍ及びＢの値の個別の符号化と、Ｍ及びＢの同じ値の組み合わされた符号化と、を示している。
【表１】
2019525583.tif 000006
【００１９】
ブロック３３５において、コンプレッサは、グループｉ毎にグループヘッダを生成する。グループヘッダのいくつかの実施形態は、対応するグループのＢｉ−Ｍの値を表すための１つ以上のビットを含む。同じビット数が量Ｂｉ−Ｍ及び量Ｂｉを表すために使用されるＭ＝０の場合を除いて、量Ｂｉ−Ｍを表すには、量Ｂｉを表すのに十分なビット数と比較してより少ないビットで十分である。その結果、各グループ内のデルタ値を表すのに十分なビット数を表すために量Ｂｉ−Ｍを使用することは、コンプレッサからデコンプレッサに送信される必要のあるビット数全体を減らすことができる。例えば、ブロックがピクセルに対して８ビットの色深度を使用している場合、量Ｍ及びＢが個別に符号化されていれば、量Ｍ及びＢの各々は４ビットで表される。量Ｂｉ−Ｍは、８×Ｂビットが８つのグループ全ての量Ｂｉ−Ｍを表すのに十分であるように、Ｂビットを使用して表されてもよい。
【００２０】
ブロック３４０において、コンプレッサは、デルタ値を表すためにＢｉビットを使用してグループｉ毎のデルタ値を符号化する。ブロック３１５の例に戻ると、第１グループ（ｉ＝１）内のデルタ値は３ビット（Ｂ＿ｉ＝３）を用いて符号化され、第２グループ（ｉ＝２）内のデルタ値は４ビット（Ｂ＿ｉ＝４）を用いて符号化され、第３グループ（ｉ＝３）内のデルタ値は５ビット（Ｂ＿ｉ＝５）を用いて符号化される。
【００２１】
ブロック３４５において、コンプレッサは、ブロックヘッダ、グループヘッダ及び符号化されたデルタ値をデコンプレッサに送信する。例えば、計算ユニット１１１〜１１４に関連するコンプレッサは、図１に示すように、ブロックヘッダ、グループヘッダ及び符号化されたデルタ値を、バス１３５を介してメモリコントローラ１２５又はスクリーン１４５に送信する。
【００２２】
ブロック３５０において、デコンプレッサは、ブロックヘッダ、グループヘッダ及び符号化されたデルタ値を表すビットを含むビットストリームを受信する。デコンプレッサは、ブロックヘッダ及びグループヘッダ内の情報を使用してデルタ値を表す非圧縮ビットを回復するために、ビットストリームを展開することができる。例えば、デコンプレッサは、ブロックヘッダからＢの値を読み出し、この値を用いて全てのグループの量Ｂｉ−Ｍを表すビット数（すなわち、ブロックが８つのグループに細分されている場合の８×Ｂビット）を決定する。また、デコンプレッサは、ブロックヘッダからＭの値を読み出す。デコンプレッサは、グループ毎に、対応するグループヘッダから量Ｂｉ−Ｍの値を読み出し、値Ｂｉ−Ｍを値Ｍと組み合わせて、対応するグループの量Ｂｉの値を決定する。デコンプレッサは、符号化されたデルタ値を正しく復号することができるように、符号化されたデルタ値を表すビットを解析するために量Ｂｉの値を使用する。例えば、或るグループの量Ｂｉ＝３である場合、デコンプレッサは、符号化されたデルタ値の各々がビットストリームにおいて３ビットで表されると判別する。
【００２３】
図４は、いくつかの実施形態による、異なるグループ構成においてピクセルのグループに細分することができるピクセルのブロック４００のブロック図である。ブロック４００は、８×８グリッドで配置された６４個のピクセル４０５（明確にするために、１つのみが参照符号で示されている）を含む。しかしながら、ブロック４００の他の実施形態では、異なるパターンで配置された異なる数のピクセルを含む。ブロック４００は、例えば、図２に示すコンプレッサ２０５等のコンプレッサによって、ピクセルのグループに細分される。第１グループ構成では、ブロック４００は、それぞれ８×１グリッド構成で配置された８つのグループ４１０（明確にするために、１つのみが参照符号で示されている）に細分される。第２グループ構成では、ブロック４００は、それぞれ４×２グリッド構成で配置された８つのグループ４１５（明確にするために、１つのみが参照符号で示されている）に細分される。ブロック４００をより多くの又はより少ないグループに細分するために、他のグループ構成が使用されてもよい。
【００２４】
コンプレッサのいくつかの実施形態は、ブロック４００が２つ以上の異なるグループ構成に従って異なるグループに細分される場合に、ピクセル４０５のデルタ値を符号化するのに必要なビット数を決定する。例えば、２つの異なるグループ構成の図示の場合では、ブロック４００は、第１グループ構成によるグループ４１０と、第２構成によるグループ４１５と、に細分されてもよい。次に、コンプレッサは、異なるグループ構成に従ってピクセル４０５のデルタ値を符号化するのに必要なビット数を推定するために、図３に示す方法３００の一部を実行する。次いで、コンプレッサは、ビット数の異なる値を比較し、圧縮ビットストリーム内のビット数が最小になるグループ構成を選択する。次に、選択されたグループ構成は、例えば、図３に示す方法３００のいくつかの実施形態に従って、ビットストリームを圧縮するために使用される。
【００２５】
図５は、いくつかの実施形態による、ブロック内のピクセルのデルタ値を表す圧縮ビットストリーム５００のブロック図である。ビットストリーム５００は、例えば図３に示す方法３００のいくつかの実施形態を実行することによって、図２に示す圧縮ビットストリーム２２０を形成するために、コンプレッサ２０５のいくつかの実施形態によって生成される。図５に示すビットストリーム５００は、８ビットの色深度を有するピクセルの色値に基づいて決定されたピクセルのデルタ値に基づいて、生成される。しかしながら、より多い又はより少ないビット数を有する色深度も使用することができる。
【００２６】
ビットストリーム５００は、ブロック内の何れかグループのデルタ値を表すのに十分な最小ビット数（Ｍ）を表すビットで形成されたブロックヘッダ５０５を含む。また、ブロックヘッダ５０５は、Ｍと、ブロック内のデルタ値を表すのに十分なビットの最大数と、の間の差を表すのに十分なビット数（Ｂ）を表すビットも含む。値Ｍ及びＢの各々は４ビットで表されるので、ブロックヘッダ５０５は、８ビットのピクセル深度に対して少なくとも８ビットを含む。しかしながら、本明細書で説明するように、値Ｍ及びＢを個別に表すのではなく、少数のビットをブロックヘッダ５０５に含めて、値Ｍ及びＢの全てのとり得る組み合わせを表すことができる。さらに、後述するように、圧縮アルゴリズムのいくつかの実施形態は、ブロックヘッダ５０５内のビット数を変更する機能を実施する。
【００２７】
また、ビットストリーム５００は、ブロックのデルタ値の各グループに関連するグループヘッダ５１０，５１５を含む。例えば、グループヘッダ５１０は、グループ１のＢ１−Ｍの値を表すビットを含み、グループヘッダ５１５は、グループ２のＢ２−Ｍの値を表すビットを含む。本明細書で説明するように、Ｂビットは、グループのＢｉ−Ｍの値を表すのに十分であるので、グループヘッダ５１０，５１５は、Ｂビットを含む。しかしながら、後述するように、圧縮アルゴリズムのいくつかの実施形態は、グループヘッダ５１０，５１５内のビット数を変更する機能を実施する。
【００２８】
さらに、ビットストリーム５００は、グループヘッダ５１０，５１５に対応するグループの符号化されたデルタ値を含む。例えば、ビットストリーム５００は、グループヘッダ５１０に関連するグループ１の符号化されたデルタ値５２０を含む。符号化されたデルタ値５２０は、符号化されたデルタ値毎にＢｉビットで表されてもよい。例えば、グループ１の８つの符号化されたデルタ値５２０の各々がＢｉ＝３ビットで表される場合、符号化されたデルタ値５２０は２４ビットで表される。しかしながら、後述するように、圧縮アルゴリズムのいくつかの実施形態は、符号化されたデルタ値５２０を表すのに十分なビット数を変更する機能を実施する。
【００２９】
図６は、いくつかの実施形態による、全て正のデルタ値又は全て負のデルタ値を表すのに使用されるビット数を減らす方法６００のフローチャートである。方法６００の異なる変形例では、デルタ値が全て正の値又は全て負の値であるか否かを判別する目的で、ゼロは正又は負とみなされる。方法６００は、図２に示すコンプレッサ２０５のいくつかの実施形態によって実施される。対応する展開処理は、方法６００に従って生成された圧縮ビットストリームを復号するために、図２に示すデコンプレッサ２１０のいくつかの実施形態において実施される。
【００３０】
ブロック６０５において、コンプレッサは、グループ内のデルタ値が全て正の値、全て負の値、又は、正の値と負の値との混合を有するかどうかを判別する。次に、コンプレッサは、全て正の値、全て負の値、又は、正の値と負の値との混合を示すためのビットを、対応するグループヘッダに追加することができる。グループ内のデルタ値の３つのとり得る状態を表すには、２ビットで十分である。
【００３１】
判別ブロック６１０において、コンプレッサは、グループ内のデルタ値が全て正の値を有するか否かを判別する。有する場合、コンプレッサは、ブロック６１５において、グループ内のデルタ値から符号ビットをドロップする。ブロック６２０において、コンプレッサは、グループ内のデルタ値が全て正の値を有することを示すために、対応するグループヘッダ内の第１符号ビットを１に設定する。図示した実施形態では、対応するグループヘッダ内の第２符号ビットの値は０又は１の何れかに設定されてもよいし、第２符号ビットは、ビット数をさらに減らすために、対応するグループヘッダから省かれてもよい。グループ内のデルタ値が全て正の値を有しない場合、方法は、判別ブロック６２５に移行する。
【００３２】
判別ブロック６２５において、コンプレッサは、グループ内のデルタ値が全て負の値を有するか否かを判別する。有する場合、コンプレッサは、ブロック６３０において、グループ内のデルタ値から符号ビットをドロップする。ブロック６３５において、コンプレッサは、グループ内のデルタ値が全て負の値を有することを示すために、対応するグループヘッダ内の第１符号ビット及び第２符号ビットを０に設定する。グループ内のデルタ値が全て負の値を有しない場合、方法は、判別ブロック６４０に移行する。
【００３３】
ブロック６４０において、コンプレッサは、グループ内のデルタ値が正の値と負の値との混合を有することを示すために、対応するグループヘッダ内の第１符号ビットを０に設定し、対応するグループヘッダ内の第２符号ビットを１に設定する。
【００３４】
図６に示す方法６００は、対応するグループ内のデルタ値が全て正、全て負、又は、混合であるか否かを示すために、各グループヘッダ内の１つ又は２つの符号ビットを使用する。しかしながら、いくつかの実施形態では、コンプレッサは、ブロック内のグループの状態の全てのとり得る組み合わせを表すために、より少ない数のビットを使用する。例えば、８つのグループ内のデルタ値の３つのとり得る状態は、３＾８＝６５６１の異なる組み合わせに対応し、これは、２＾１３＝８１９２であって、２＾１２＝４０９６であることから、１３ビットで表すことができる。グループ及びブロックの状態の組み合わせを表すビットは、ブロックヘッダに含まれてもよい。
【００３５】
図７は、いくつかの実施形態による、２の累乗に等しい最大デルタ値を有するグループ内のデルタ値を符号化する方法７００のフローチャートである。方法７００は、図２に示すコンプレッサ２０５のいくつかの実施形態において実施される。
【００３６】
ブロック７０５において、コンプレッサは、デルタ値を表す非圧縮ビットを読み出す。ブロック７１０において、コンプレッサは、本明細書で説明するように、デルタ値を全て正の値にマッピングする。コンプレッサは、符号最適化が使用されていることを示すために１つの付加ビットを追加し、デルタ値が全て負の値、又は、正の値と負の値との混合である場合には、デルタ値の符号を示すために１つ以上の付加ビットを追加する。例えば、コンプレッサは、図６に示す方法６００のいくつかの実施形態に従って、付加ビットの値を決定することができる。
【００３７】
判別ブロック７１５において、コンプレッサは、グループ内のピクセルのデルタ値の最大絶対値が２の累乗（例えば、ｋ＞０の場合、２ｋ）に等しいか否かを判別する。等しい場合、ブロック７１０においてグループが全て正の値にマッピングされているので、グループ内のデルタ値を表すために、ｋ＋１ビットが必要とされる。グループ内のピクセルのデルタ値の最大絶対値が２の累乗に等しくない場合、コンプレッサは、ブロック７２０において、例えば図３に示す方法３００のいくつかの実施形態に従って、非圧縮ビットを圧縮する。グループ内のピクセルのデルタ値の最大絶対値が２の累乗に等しい場合、コンプレッサは、ブロック７２５において、（ｋ＋１ビットを使用する代わりに）ｋビットを使用して各デルタ値を符号化する。
【００３８】
ｋビットを使用してデルタ値を符号化することによって、２ｋ又は２ｋ−１に等しいデルタ値を、同じｋビット数で表すことになる。縮退を解決するために、判別ブロック７３０において、コンプレッサは、デルタ値が２ｋ又は２ｋ−１に等しいか否かを判別する。等しい場合、コンプレッサは、（ブロック７３５において）トレーリングビットを追加し、対応するデルタ値が２ｋ−１又は２ｋに等しいか否かを示すようにトレーリングビットの値を設定する。デルタ値が２ｋ又は２ｋ−１に等しくない場合、コンプレッサは、（ブロック７４０において）トレーリングビットを追加することをバイパスする。
【００３９】
図７に示す例示的な圧縮アルゴリズムは、デルタ値の２つの縮退した符号化値を区別するために、トレーリングビットを使用する。しかしながら、いくつかの変形例では、より少ない数のビットを使用して基本的な符号化を実行することができる（例えば、ｋ＞０の場合にデルタ値の最大絶対値２ｋまでの範囲のデルタ値を符号化するために、ｋビット未満のビットを使用することができる）。次に、結果として生じる縮退を解決するために、追加のトレーリングビットが使用される。例えば、ブロック内のデルタ値が０、１、２、３、４、５である場合、デルタ値の最大絶対値は５（２＾２＋１又はｋ＝２）である。したがって、デルタ値の最大絶対値が２＾２＝４よりも大きいので、各デルタ値を表すために３ビットが必要である。よって、全てのデルタ値を表すには、合計６×３＝１８ビットが必要である。しかしながら、ブロック７１５において評価されたデルタ値の最大絶対値が２＾ｎ＋１に等しい場合、２＾ｎ−１、２＾ｎ、２＾ｎ＋１に等しいデルタ値は全て、２＾ｎ−１の縮退値として符号化される。追加のトレーリングビットは、２＾ｎ−１、２＾ｎ、２＾ｎ＋１の縮退値を区別するために、デルタ値に追加される。例えば、「１」のトレーリングビットが２＾ｎ−１に追加され、「０１」の２つのトレーリングビットが２＾ｎに追加され、「００」の２つのトレーリングビットが２＾ｎ＋１に追加される。次に、入力データストリーム０、１、２、３、４、５は、一連のバイナリ値００、０１、１０、１１１、１１０１、１１１１に圧縮される。圧縮バイナリストリーム内のビットの総数は、２＋２＋２＋３＋４＋４＝１７であり、これは、この例において１ビットの節約となる。
【００４０】
コンプレッサのいくつかの実施形態は、２の累乗の最適化が対応するブロックに対して使用されているかどうかを示すために、ビットをブロックヘッダに追加する。例えば、このビットは、ビット数が減らされていないとコンプレッサが判別した場合に、２の累乗の最適化が使用されていないことを示すために設定（又は、リセット）されてもよい。追加のビットを追加するとアルゴリズムの圧縮レートが低下するが、いくつかの変形例では、２の累乗の最適化が使用されているかどうかを示すために追加ビットが存在する場合、デコンプレッサは、ビットストリームを展開するのに必要な処理サイクルをより少なくすることができ、これにより、デコンプレッサに必要なクロックサイクル数を減らすことができる。
【００４１】
図８は、いくつかの実施形態による、２の累乗に等しい最大デルタ値を有するグループ内のデルタ値を復号する方法８００のフローチャートである。方法８００は、図２に示すデコンプレッサ２１０のいくつかの実施形態において実施される。デコンプレッサは、方法８００を使用して、図７の方法７００に示す圧縮アルゴリズム等の対応する圧縮アルゴリズムに従って圧縮されたビットストリームを展開する。
【００４２】
ブロック８０５において、デコンプレッサは、ブロックのグループ内のピクセルのデルタ値を表すビットを読み出す。デコンプレッサは、ブロックヘッダ及び対応するグループヘッダに含まれる情報を使用して、量Ｂｉの値を事前に決定している。グループ内のデルタ値は、Ｂｉビットを使用して符号化される。
【００４３】
判別ブロック８１０において、デコンプレッサは、デルタ値を表すビットによって示されるビット値が最大の符号化ビット値２＾（Ｂｉ）−１に等しいか否かを判別する。等しくない場合、デコンプレッサは、ブロック７１５において、ビット値に等しいデルタ値を設定する。デコンプレッサが、デルタ値を表すビットによって示されるビット値が２＾（Ｂｉ）−１に等しいと判別した場合、方法８００は、判別ブロック８２０に移行する。
【００４４】
判別ブロック８２０において、デコンプレッサは、トレーリングビットを読み出し、トレーリングビットが０又は１に等しいか否かを判別する。トレーリングビットが０に等しい場合、デコンプレッサは、ブロック８２５において、デルタ値が２＾（Ｂｉ）−１に等しいと判別する。トレーリングビットが１に等しい場合、デコンプレッサは、ブロック８３０において、デルタ値が２＾（Ｂｉ）に等しいと判別する。トレーリングビットとデルタ値との関連付けは任意であり、いくつかの実施形態では、逆のルール（opposite convention）が使用されてもよい。
【００４５】
図９は、いくつかの実施形態による、圧縮アルゴリズムの機能をバイパスするか否かを決定する方法９００のフローチャートである。方法９００は、図２に示すコンプレッサ２０５のいくつかの実施形態において実施される。対応する展開処理は、方法９００に従って生成された圧縮ビットストリームを復号するために、図２に示すデコンプレッサ２１０のいくつかの実施形態において実施される。
【００４６】
ブロック９０５において、コンプレッサは、コンプレッサによって実施される圧縮アルゴリズムの１つ以上の最適化に従ってブロック内のピクセルのデルタ値を符号化することによって、節約されるビット数を決定する。例えば、コンプレッサは、図３に示す方法３００のいくつかの実施形態に従って、デルタ値を符号化するのに十分な第１ビット数を決定することができる。また、コンプレッサは、図６に示す方法６００、図７に示す方法７００又は図８に示す方法８００のいくつかの実施形態に従って実施される機能等の追加の最適化機能が実施される場合、デルタ値を符号化するのに十分な第２ビット数を決定することができる。節約されるビット数は、第１ビット数と第２ビット数との間の差に等しい。
【００４７】
ブロック９１０において、コンプレッサは、１つ以上の最適化に従う、符号化デルタ値の圧縮をサポートするために、ブロックヘッダ又はグループヘッダに追加されるビット数を決定する。例えば、コンプレッサは、図３に示す方法３００のいくつかの実施形態に従ってデルタ値を符号化するのをサポートするために、ブロックヘッダ及びグループヘッダ内の値を表すのに必要とされる第１ビット数を決定することができる。また、コンプレッサは、図６に示す方法６００、図７に示す方法７００又は図８に示す方法８００のいくつかの実施形態に従って実施される機能等の追加の最適化機能が実施される場合、デルタ値を符号化するのをサポートするために、ブロックヘッダ及びグループヘッダ内の値を表すのに必要とされる第２ビット数を決定することができる。追加されるビット数は、第１ビット数と第２ビット数との間の差に等しい。
【００４８】
判別ブロック９１５において、コンプレッサは、節約されるビット数が追加されるビット数より大きいか否かを判別する。大きい場合、コンプレッサは、（ブロック９２０において）符号化されたデルタ値を圧縮するために追加の機能を使用していることを示すために、ブロックヘッダ内のバイパスビットをＦＡＬＳＥ（又は、の他の値）に設定する。節約されるビット数が追加されるビット数未満である場合、方法９００は、判別ブロック９２５に移行する。
【００４９】
判別ブロック９２５において、コンプレッサは、ブロック内のピクセルのデルタ値の全てがゼロに等しいか否かを判別する。等しくない場合、コンプレッサは、（ブロック９３０において）符号化されたデルタ値を圧縮するための追加の機能の使用をバイパスしていることを示すために、ブロックヘッダ内のバイパスビットをＴＲＵＥ（又は、他の値）に設定する。ブロック内のピクセルの全てのデルタ値がゼロに等しい場合、ブロック９３５においてブロックヘッダからバイパスビットをドロップして、ビット数をさらに減らすことができる。
【００５０】
いくつかの実施形態では、上述したデバイス及び技術は、図１〜図８を参照して上述した処理システム等の１つ以上の集積回路（ＩＣ）デバイス（集積回路パッケージ又はマイクロチップと呼ばれる）を含むシステムにおいて実施される。これらのＩＣデバイスの設計及び製造において、電子設計自動化（ＥＤＡ）及びコンピュータ支援設計（ＣＡＤ）ソフトウェアツールが使用されてもよい。これらの設計ツールは、通常、１つ以上のソフトウェアプログラムとして表される。１つ以上のソフトウェアプログラムは、回路を製造するための製造システムを設計又は適合するための処理の少なくとも一部を実行するように１つ以上のＩＣデバイスの回路を表すコードで動作するようにコンピュータシステムを操作する、コンピュータシステムによって実行可能なコードを含む。このコードは、命令、データ、又は、命令及びデータの組み合わせを含むことができる。設計ツール又は製造ツールを表すソフトウェア命令は、通常、コンピューティングシステムにアクセス可能なコンピュータ可読記憶媒体に記憶される。同様に、ＩＣデバイスの設計又は製造の１つ以上のフェーズを表すコードは、同じコンピュータ可読記憶媒体又は異なるコンピュータ可読記憶媒体に記憶されてもよく、同じコンピュータ可読記憶媒体又は異なるコンピュータ可読記憶媒体からアクセスされてもよい。
【００５１】
コンピュータ可読記憶媒体は、命令及び／又はデータをコンピュータシステムに提供するために、使用中にコンピュータシステムによってアクセス可能な任意の非一時的な記憶媒体、又は、非一時的な記憶媒体の組み合わせを含むことができる。かかる記憶媒体には、限定されないが、光媒体（例えば、コンパクトディスク（ＣＤ）、デジタル多用途ディスク（ＤＶＤ）、ブルーレイ（登録商標）ディスク）、磁気媒体（例えば、フロッピー（登録商標）ディスク、磁気テープ、磁気ハードドライブ）、揮発性メモリ（例えば、ランダムアクセスメモリ（ＲＡＭ）、キャッシュ）、不揮発性メモリ（例えば、読み出し専用メモリ（ＲＯＭ）、フラッシュメモリ）、又は、微小電気機械システム（ＭＥＭＳ）ベースの記憶媒体が含まれ得る。コンピュータ可読記憶媒体は、コンピュータシステム（例えば、システムＲＡＭ又はＲＯＭ）に内蔵されてもよいし、コンピュータシステム（例えば、磁気ハードドライブ）に固定的に取り付けられてもよいし、コンピュータシステム（例えば、光学ディスク又はユニバーサルシリアルバス（ＵＳＢ）ベースのフラッシュメモリ）に着脱可能に取り付けられてもよいし、有線又は無線のネットワークを介してコンピュータシステム（例えば、ネットワークアクセス可能なストレージ（ＮＡＳ））に接続されてもよい。
【００５２】
いくつかの実施形態では、上述した技術の特定の態様は、ソフトウェアを実行する処理システムの１つ以上のプロセッサによって実装されてもよい。ソフトウェアは、非一時的なコンピュータ可読記憶媒体に記憶され、又は、有形に実装された１つ以上の実行可能命令のセットを含む。ソフトウェアは、１つ以上のプロセッサによって実行された場合に、１つ以上のプロセッサを操作して、上述した技術の１つ以上の態様を実行する命令及び特定のデータを含むことができる。非一時的なコンピュータ可読記憶媒体は、例えば、磁気若しくは光ディスクストレージデバイス、フラッシュメモリ、キャッシュ、ランダムアクセスメモリ（ＲＡＭ）、又は、他の不揮発性メモリデバイス等のソリッドステート記憶デバイス等を含むことができる。非一時的なコンピュータ可読記憶媒体に記憶された実行可能命令は、ソースコード、アセンブリ言語コード、オブジェクトコード、又は、１つ以上のプロセッサによって解釈若しくは実行可能な他の命令フォーマットであってもよい。
【００５３】
上述したものに加えて、概要説明において説明した全てのアクティビティ又は要素が必要とされているわけではなく、特定のアクティビティ又はデバイスの一部が必要とされない場合があり、１つ以上のさらなるアクティビティが実行される場合があり、１つ以上のさらなる要素が含まれる場合があることに留意されたい。さらに、アクティビティが列挙された順序は、必ずしもそれらが実行される順序ではない。また、概念は、特定の実施形態を参照して説明された。しかしながら、当業者であれば、特許請求の範囲に記載されているような本発明の範囲から逸脱することなく、様々な変更及び変形を行うことができるのを理解するであろう。したがって、明細書及び図面は、限定的な意味ではなく例示的な意味で考慮されるべきであり、これらの変更形態の全ては、本発明の範囲内に含まれることが意図される。
【００５４】
利益、他の利点及び問題に対する解決手段を、特定の実施形態に関して上述した。しかし、利益、利点、問題に対する解決手段、及び、何かしらの利益、利点若しくは解決手段が発生又は顕在化する可能性のある機能は、何れか若しくは全ての請求項に重要な、必須の、又は、不可欠な機能と解釈されない。さらに、開示された発明は、本明細書の教示の利益を有する当業者には明らかな方法であって、異なっているが同様の方法で修正され実施され得ることから、上述した特定の実施形態は例示にすぎない。添付の特許請求の範囲に記載されている以外に本明細書に示されている構成又は設計の詳細については限定がない。したがって、上述した特定の実施形態は、変更又は修正されてもよく、かかる変更形態の全ては、開示された発明の範囲内にあると考えられることが明らかである。したがって、ここで要求される保護は、添付の特許請求の範囲に記載されている。
【図１】
2019525583.tif 000007
【図２】
2019525583.tif 000008
【図３】
2019525583.tif 000009
【図４】
2019525583.tif 000010
【図５】
2019525583.tif 000011
【図６】
2019525583.tif 000012
【図７】
2019525583.tif 000013
【図８】
2019525583.tif 000014
【図９】
2019525583.tif 000015
【手続補正書】
【提出日】平成31年4月11日(2019.4.11)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
ブロック内の複数のピクセルのデルタ値を決定することであって、各デルタ値は、前記複数のピクセルのうち１つのピクセルの色と前記複数のピクセルから選択された基準ピクセルの基準色との間の差を表す、ことと、
前記複数のピクセルを複数のグループに細分することと、
前記デルタ値を表す圧縮ビットストリームを送信することであって、前記圧縮ビットストリームは、前記デルタ値を表すのに十分なビット数の範囲を示すブロックヘッダを表すビットと、前記複数のグループのうち対応するグループの前記デルタ値を表すのに十分なグループ最小ビット数をそれぞれ示す複数のグループヘッダと、前記デルタ値を含む前記グループの前記グループ最小ビット数を使用して符号化された前記デルタ値と、を有する、ことと、を含む、
方法。
【請求項２】
前記ブロック内の複数のピクセルのデルタ値を決定することは、色差及び前記デルタ値の符号を表すために所定数のビットを使用して各デルタ値を決定することを含み、前記圧縮ビットストリーム内のビットの総数は、前記複数のピクセルの前記デルタ値を表すために使用される前記所定数のビットの前記複数のピクセルに亘る合計未満である、
請求項１の方法。
【請求項３】
前記ブロックヘッダは、前記グループのうち何れかのグループの前記デルタ値を表すための最小ビット数（Ｍ）と、Ｍと前記デルタ値を表すのに十分なビット数の最大値を表す第２ビット数との間の差を表すのに十分な第１ビット数（Ｂ）と、を示すビットを含み、前記複数のグループヘッダの各々は、Ｍと前記複数のグループのうち対応するグループの前記デルタ値を表すグループ最小ビット数との間の差を示すビットを含む、
請求項１の方法。
【請求項４】
前記ブロックヘッダを表すビットは、Ｍ及びＢの全てのとり得る組み合わせを表すのに十分な第３ビット数を含み、
前記第３ビット数によって表される符号化値を形成するために、Ｍ及びＢの値の組み合わせを符号化することであって、前記ブロックヘッダは前記符号化値を含む、ことをさらに含む、
請求項３の方法。
【請求項５】
前記ブロック内の複数のピクセルを複数のグループに細分することは、
異なるグループ構成に従って、前記複数のピクセルを前記複数のグループに細分することと、
前記異なるグループ構成を使用して生成された前記圧縮ビットストリーム内のビットの総数を比較することと、
前記比較に基づいて、前記複数のグループを細分するための前記異なるグループ構成のうち１つのグループ構成を選択することと、を含む、
請求項１の方法。
【請求項６】
各グループの前記デルタ値が全て正の値、全て負の値、又は、正の値と負の値との混合であるか否かを判別することと、
グループの前記デルタ値が全て正の値又は全て負の値であると判別したことに応じて、当該グループの前記グループヘッダから前記デルタ値の符号を示すビットを除くことと、
グループの前記デルタ値が正の値と負の値との混合であると判別したことに応じて、当該グループの前記デルタ値が正の値と負の値との混合であることを示すビットを、当該グループの前記グループヘッダに含めることと、をさらに含む、
請求項１の方法。
【請求項７】
前記対応するグループの前記デルタ値が全て正の値、全て負の値、又は、正の値と負の値との混合であるか否かを示すビットを前記グループヘッダが含むか否かを示すバイパスビットを、前記ブロックヘッダに含めることと、
前記ブロック内の前記複数のピクセルに関連する全ての前記デルタ値がゼロに等しいと判別したことに応じて、前記バイパスビットを前記ブロックヘッダに含めるのをバイパスすることと、をさらに含む、
請求項６の方法。
【請求項８】
グループ内のピクセルの前記デルタ値の最大絶対値が２の累乗に等しいと判別したことに応じて、前記最大絶対値又は前記最大絶対値未満を有する前記デルタ値が最大の符号化ビット値によって表されるように、前記グループ最小ビット数未満のビットを使用して前記グループ内のデルタ値を符号化することと、
前記最大の符号化ビット値が前記最大絶対値又は前記最大絶対値未満を示すか否かを表すために、トレーリングビットを前記最大の符号化ビット値に追加することと、をさらに含む、
請求項６の方法。
【請求項９】
ブロック内の複数のピクセルのデルタ値を表す圧縮ビットストリームを受信することであって、前記圧縮ビットストリームは、前記デルタ値を表すのに十分なビット数の範囲を示すブロックヘッダを表すビットと、前記複数のグループのうち対応するグループの前記デルタ値を表すのに十分なグループ最小ビット数をそれぞれ示す複数のグループヘッダと、前記デルタ値を含む前記グループの前記グループ最小ビット数を使用して符号化された前記デルタ値と、を有する、ことと、
前記複数のピクセルのうち１つのピクセルの色と前記複数のピクセルから選択された基準ピクセルの基準色との間の差を表す前記デルタ値を回復するために、前記ブロックヘッダと、前記複数のグループヘッダと、前記符号化された前記デルタ値と、に基づいて、前記圧縮ビットストリームを展開することと、を含む、
方法。
【請求項１０】
前記圧縮ビットストリームを展開することは、色差及び前記デルタ値の符号を示す所定数のビットによって表される前記デルタ値を回復することを含み、前記圧縮ビットストリーム内のビットの総数は、前記複数のピクセルの前記デルタ値を表すために使用される前記所定数のビットの前記複数のピクセルに亘る合計未満である、
請求項９の方法。
【請求項１１】
コンプレッサを備えるデバイスであって、
前記コンプレッサは、
ブロック内の複数のピクセルのデルタ値を決定することであって、各デルタ値は、前記複数のピクセルのうち１つのピクセルの色と前記複数のピクセルから選択された基準ピクセルの基準色との間の差を表す、ことと、
前記ブロック内の前記複数のピクセルを複数のグループに細分することと、
前記デルタ値を表す圧縮ビットストリームを送信することであって、前記圧縮ビットストリームは、前記デルタ値を表すのに十分なビット数の範囲を示すブロックヘッダを表すビットと、前記複数のグループのうち対応するグループの前記デルタ値を表すのに十分なグループ最小ビット数をそれぞれ示す複数のグループヘッダと、前記デルタ値を含む前記グループの前記グループ最小ビット数を使用して符号化された前記デルタ値と、を有する、ことと、
を行うように構成されている、
デバイス。
【請求項１２】
前記ブロックヘッダは、前記グループのうち何れかのグループの前記デルタ値を表すのに十分な最小ビット数（Ｍ）と、Ｍと前記デルタ値を表すのに十分なビット数の最大値を表すのに十分な第２ビット数との間の差を表すのに十分な第１ビット数（Ｂ）と、を示すビットを含み、前記複数のグループヘッダの各々は、Ｍと前記複数のグループのうち対応するグループの前記デルタ値を表すのに十分なグループ最小ビット数との間の差を示すビットを含む、
請求項１１のデバイス。
【請求項１３】
前記ブロックヘッダを表すビットは、Ｍ及びＢの全てのとり得る組み合わせを表すのに十分な第３ビット数を含み、
前記コンプレッサは、
前記第３ビット数によって表される符号化値を形成するために、Ｍ及びＢの値の組み合わせを符号化することであって、前記ブロックヘッダは前記符号化値を含む、ことを行うように構成されている、
請求項１２のデバイス。
【請求項１４】
前記コンプレッサは、
各グループの前記デルタ値が全て正の値、全て負の値、又は、正の値と負の値との混合であるか否かを判別することと、
全て正の値又は全て負の値であるグループの前記デルタ値の符号を示すビットをドロップすることと、
前記対応するグループの前記デルタ値が全て正の値、全て負の値、又は、正の値と負の値との混合であるか否かを示すためのビットを、前記グループヘッダに含めることと、
を行うように構成されている、
請求項１１のデバイス。
【請求項１５】
デコンプレッサを備えるデバイスであって、
前記デコンプレッサは、
ブロック内の複数のピクセルのデルタ値を表す圧縮ビットストリームを受信することであって、前記圧縮ビットストリームは、前記デルタ値を表すのに十分なビット数の範囲を示すブロックヘッダを表すビットと、前記複数のグループのうち対応するグループの前記デルタ値を表すのに十分なグループ最小ビット数をそれぞれ示す複数のグループヘッダと、前記デルタ値を含む前記グループの前記グループ最小ビット数を使用して符号化された前記デルタ値と、を有する、ことと、
前記複数のピクセルのうちの１つのピクセルの色と前記複数のピクセルから選択された基準ピクセルの基準色との間の差を表す前記デルタ値を回復するために、前記ブロックヘッダと、前記複数のグループヘッダと、前記符号化された前記デルタ値と、に基づいて、前記圧縮ビットストリームを展開することと、
を行うように構成されている、
デバイス。
【国際調査報告】
2019525583.tif 000016
2019525583.tif 000017
2019525583.tif 000018
2019525583.tif 000019