(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2025-01-09
(45)【発行日】2025-01-20
(54)【発明の名称】データアレイのエンコード
(51)【国際特許分類】
H04N 1/64 20060101AFI20250110BHJP
H04N 19/90 20140101ALI20250110BHJP
H04N 19/426 20140101ALI20250110BHJP
G06T 9/40 20060101ALI20250110BHJP
【FI】
H04N1/64
H04N19/90
H04N19/426
G06T9/40
(21)【出願番号】P 2021044836
(22)【出願日】2021-03-18
【審査請求日】2024-01-05
(32)【優先日】2020-03-18
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】500395107
【氏名又は名称】アーム・リミテッド
(74)【代理人】
【識別番号】110000855
【氏名又は名称】弁理士法人浅村特許事務所
(72)【発明者】
【氏名】チェン・ワン
(72)【発明者】
【氏名】ホーカン・ラーズヨーラン・パーソン
【審査官】鈴木 明
(56)【参考文献】
【文献】特開2005-295307(JP,A)
【文献】特開2004-194155(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
H04N 1/64
H04N 19/90
H04N 19/426
G06T 9/40
(57)【特許請求の範囲】
【請求項1】
データ要素のアレイを処理するときにデータ処理システムを動作させる方法であって、
前記データ処理システムは
第1のデータフォーマットで配置されたデータセットを処理するように構成された第1のエンコード方式を実行するように動作可能なデータエンコーダであって、前記第1のデータフォーマットは、ビットの第1の配置を使用して、データ要素のアレイの要素を表し、前記データエンコーダは、したがって、前記第1のデータフォーマットで提供された1つ以上のデータセットを、前記第1のエンコード方式を使用して、エンコードされたデータパケットとしてエンコードするように動作可能である、データエンコーダ、を含み、
前記方法は
前記データエンコーダによってエンコードするために、
異なる第2
のデータフォーマットの複数のデータセットを受信することであって、前記第2のデータフォーマットは、ビットの第2の異なる配置を使用して、データ要素のアレイの要素を表し、前記第2のデータフォーマットで前記受信されたデータセットのそれぞれはしたがって、前記第2の
データフォーマットでデータ要素のアレイの関連する要素を表すためのビットのそれぞれのシーケンスを含む、ことと、
前記第2のデータフォーマットの前記受信された複数のデータセットのうちの少なくともいくつかのビットを並べ替えて、前記第2のデータフォーマットの前記受信された複数のデータセットのうちの少なくともいくつかの前記ビットを、前記第1のデータフォーマットに関連付けられた前記ビットの第1の配置にマッピングすることであって、それによって、前記第2のデータフォーマットの前記受信された複数のデータセットから、前記第1のデータフォーマットの1つ以上のデータセットを生成する、ことと、を含み、
前記データエンコーダは、前記第1のエンコード方式を使用して、前記第1のデータフォーマットの前記生成されたデータセットを処理し、それによって、前記第2のデータフォーマットの前記受信された複数のデータセットを、前記第1のデータフォーマットに関連付けられた1つ以上のエンコードされたデータパケットとしてエンコード
し、
前記第2のデータフォーマットの前記受信された複数のデータセットのうちの少なくともいくつかのビットを並べ替えて、前記第2のデータフォーマットの前記受信された複数のデータセットのうちの少なくともいくつかの前記ビットを、前記第1のデータフォーマットに関連付けられた前記ビットの第1の配置にマッピングすることは、
複数のデータ要素を表す前記第2のデータフォーマットの複数のデータセットを、前記第1のデータフォーマットの単一のデータ要素として処理するための単一のデータセットへと一緒に結合すること、及び
1つのデータ要素を表す前記第2のデータフォーマットの1つのデータセットを、前記第1のデータフォーマットの複数のデータ要素として処理するための複数のデータセットへと分割すること
のうちの少なくとも1つを含む、方法。
【請求項2】
前記第2のデータフォーマットの前記受信された複数のデータセットのうちの少なくともいくつかのビットを並べ替えて、前記第2のデータフォーマットの前記受信された複数のデータセットのうちの前記少なくともいくつかの前記ビットを、前記第1のデータフォーマットに関連付けられた前記ビットの第1の配置にマッピングすることは、
複数のデータ要素を表す前記第2のデータフォーマットの複数のデータセットを、
単一のデータ要素として処理するための前記第1のデータフォーマットの単一のデータセットへと一緒
に結合することを含む、請求項1に記載の方法。
【請求項3】
前記第2のデータフォーマットの前記受信された複数のデータセットのうちの少なくともいくつかのビットを並べ替えて、前記第2のデータフォーマットの前記受信された複数のデータセットのうちの前記少なくともいくつかの前記ビットを、前記第1のデータフォーマットに関連付けられた前記ビットの第1の配置に前記マッピングすることは、
1つのデータ要素を表す前記第2のデータフォーマットの
1つのデータセットを、
複数のデータ要素として処理するための前記第1のデータフォーマットの複数のデータセットへと分割することを含む、請求項1に記載の方法。
【請求項4】
前記第2のデータフォーマットの前記受信された複数のデータセットのうちの前記少なくともいくつかの前記ビットを前記並べ替えることは、予期されるデータ類似性に基づいて実行される、請求項1から3のいずれか一項に記載の方法。
【請求項5】
前記ビットを前記並べ替えることは、単一のデータ要素の構成要素、及び/又は異なるデータ要素の構成要素に対する最上位ビットを、前記第1のデータフォーマットの前記
生成されたデータセットに一緒に配置するように実行される、請求項4に記載の方法。
【請求項6】
前記ビットを前記並べ替えることは、1つ以上のデータ要素の特定の構成要素を表すビットを、前記第1のデータフォーマットの前記生成されたデータセットに一緒に配置するように実行される、請求項4又は5に記載の方法。
【請求項7】
前記データ要素のアレイは、値の空間分布を表す、請求項1から6のいずれか一項に記載の方法。
【請求項8】
前記データ要素のアレイは画像データを表し、前記データセットは画像データのアレイ内の個々の画素を表す、請求項7に記載の方法。
【請求項9】
前記エンコードされたデータパケットをデコードするときに使用するために、前記データエンコーダによって処理される前記第1のデータフォーマットの前記1つ以上のデータセットを生成するために使用される、前記ビットの前記並べ替えを識別するための情報が提供される、請求項1から8のいずれか一項に記載の方法。
【請求項10】
データ要素のアレイを処理するときにデータ処理システムを動作させる方法であって、
前記データ処理システムは1つ以上のエンコードされたデータパケットを、第1のデータフォーマットで配置された1つ以上のデータセットへとデコードするように構成された第1のデコード方式を実行するように動作可能なデータデコーダであって、前記第1のデータフォーマットは、ビットの第1の配置を使用してデータ要素のアレイの要素を表す、データデコーダ、を含み、
前記方法は
前記データデコーダによってデコードするために、エンコードされたデータパケットを受信することであって、
前記データデコーダは、前記第1のデコード方式を使用して前記エンコードされたデータパケットを処理し、それによって、前記第1のデータフォーマットの1つ以上のデコードされたデータセットを生成する、ことと、
前記第1のデータフォーマットの前記デコードされたデータセットのビットを、
異なる第2
のデータフォーマットに関連付けられたビットの第2の異なる配置に並べ替えることであって、前記第2のデータフォーマットは、前記ビットの第2の配置を使用してデータ要素のアレイの要素を表し、それによって、前記第1のデータフォーマットの前記デコードされたデータセットから、前記第2のデータフォーマットの1つ以上のデータセットを生成する、ことと、
を含
み、
前記第1のデータフォーマットの前記デコードされたデータセットのビットを、異なる前記第2のデータフォーマットに関連付けられたビットの前記第2の異なる配置に並べ替えることは、
複数のデータ要素としてデコードされる前記第1のデータフォーマットの複数のデータセットを、前記第2のデータフォーマットの単一のデータ要素を表す単一のデータセットへと一緒に結合すること、及び
1つのデータ要素としてデコードされる前記第1のデータフォーマットの1つのデータセットを、前記第2のデータフォーマットの複数のデータ要素を表す複数のデータセットへと分割すること
のうちの少なくとも1つを含む、方法。
【請求項11】
データ要素のアレイを処理するためのデータ処理システムであって、
前記データ処理システムは、
第1のデータフォーマットで配置されたデータセットを処理するように構成された第1のエンコード方式を実行するように構成されたデータエンコーダであって、前記第1のデータフォーマットは、ビットの第1の配置を使用して、データ要素のアレイの要素を表し、前記データエンコーダは、したがって、前記第1のデータフォーマットで提供された1つ以上のデータセットを、前記第1のエンコード方式を使用して、エンコードされたデータパケットとしてエンコードするように構成されている、データエンコーダと、
前記データエンコーダに関連付けられたデータ調整回路であって、ビットの第2の異なる配置を使用して、値の空間分布を表すデータ要素のアレイの要素を表す、
異なる第2
のデータフォーマットを有する複数のデータセットのうちの少なくともいくつかのビットを並べ替えて、前記第2のデータフォーマットの前記複数のデータセットのうちの前記少
なくともいくつかの前記ビットを、前記第1のデータフォーマットに関連付けられた前記ビットの第1の配置にマッピングし、それによって、前記第2のデータフォーマットの前記複数のデータセットから、前記第1のデータフォーマットの1つ以上のデータセットを生成し、前記第1のデータフォーマットの前記生成されたデータセットを、処理のために前記データエンコーダに提供する、ように構成されている、データ調整回路と、
を備
え、
前記データ調整回路は、
複数のデータ要素を表す前記第2のデータフォーマットの複数のデータセットを、単一のデータ要素として処理するための、前記第1のデータフォーマットの単一のデータセットへと一緒に結合すること、及び
1つのデータ要素を表す前記第2のデータフォーマットの1つのデータセットを、複数のデータ要素として処理するための、前記第1のデータフォーマットの複数のデータセットへと分割すること
のうちの少なくとも1つを行うように構成されている、データ処理システム。
【請求項12】
前記データ調整回路による前記第2のデータフォーマット
の受信された
前記複数のデータセットのうちの前記少なくともいくつかの前記ビットの前記並べ替えは、予期されるデータ類似性に基づいて実行される、請求項
11に記載のシステム。
【請求項13】
前記データ調整回路による前記ビットの前記並べ替えは、単一のデータ要素の構成要素、及び/又は異なるデータ要素の構成要素に対する最上位ビットを一緒に配置するように実行される、請求項
12に記載のシステム。
【請求項14】
前記データ調整回路による前記ビットの前記並べ替えは、1つ以上のデータ要素の特定の構成要素を表すビットを一緒に配置するように実行される、請求項
12又は
13に記載のシステム。
【請求項15】
前記データ要素のアレイは、値の空間分布を表す、請求項11から
14のいずれか一項に記載のシステム。
【請求項16】
前記データ要素のアレイは画像データを表し、前記データセットは画像データのアレイ内の個々の画素を表す、請求項
15に記載のシステム。
【請求項17】
前記エンコードされたデータパケットをデコードするときに使用するために、前記データエンコーダによって処理される前記第1のデータフォーマットの前記1つ以上のデータセットを生成するために使用される、前記ビットの前記並べ替えを識別するための情報が提供される、請求項11から
16のいずれか一項に記載のシステム。
【請求項18】
データ要素のアレイを処理するためのデータ処理システムであって、
前記データ処理システムは、
1つ以上のエンコードされたデータパケットを
、第1のデータフォーマットで配置された1つ以上のデータセットへとデコードするように構成された第1のデコード方式を実行するように動作可能なデータデコーダであって、
前記第1のデータフォーマットは、ビットの第1の配置を使用してデータ要素のアレイの要素を表す、データデコーダと、
前記データデコーダに関連付けられたデータ調整回路であって、前記データデコーダからの前記第1のデータフォーマットのデコードされた複数のデータセットのうちの少なくともいくつかのビットを並べ替えて、前記ビットを、
異なる第2
のデータフォーマットに関連付けられた第2の異なるビットの配置へとマッピングするように構成されており、前記第2のデータフォーマットは、前記ビット
の第2の配置を使用して値の空間分布
を表すデータ要素のアレイの要素を表し、それによって、前記第1のデータフォーマットの前記データセットから、前記第2のデータフォーマットの1つ以上のデータセットを生成する、データ調整回路と、
を備
え、
前記データ調整回路は、
複数のデータ要素としてデコードされる前記第1のデータフォーマットの複数のデータセットを、前記第2のデータフォーマットの単一のデータ要素を表す単一のデータセットへと一緒に結合すること、及び
1つのデータ要素としてデコードされる前記第1のデータフォーマットの1つのデータセットを、前記第2のデータフォーマットの複数のデータ要素を表す複数のデータセットへと分割すること
のうちの少なくとも1つを行うように構成されている、データ処理システム。
【請求項19】
データプロセッサ上で実行すると、データ要素のアレイを処理するときにデータ処理システムを動作させる、請求項1から10のいずれか一項に記載の方法を実行する、ソフトウェアコードを記憶する非一時的コンピュータ可読記憶媒体。
【請求項20】
データ要素のアレイを処理するときにデータ処理システムを動作させる方法であって、
前記データ処理システムは
第1のデータフォーマットで配置されたデータセットを処理するように構成された第1のエンコード方式を実行するように動作可能なデータエンコーダであって、前記第1のデータフォーマットは、ビットの第1の配置を使用して、データ要素のアレイの要素を表し、前記データエンコーダは、したがって、前記第1のデータフォーマットで提供された1つ以上のデータセットを、前記第1のエンコード方式を使用して、エンコードされたデータパケットとしてエンコードするように動作可能である、データエンコーダ、を含み、
前記方法は
前記データエンコーダによってエンコードするために、異なる第2のデータフォーマットの複数のデータセットを受信することであって、前記第2のデータフォーマットは、ビットの第2の異なる配置を使用して、データ要素のアレイの要素を表し、前記第2のデータフォーマットで前記受信されたデータセットのそれぞれはしたがって、前記第2のデータフォーマットでデータ要素のアレイの関連する要素を表すためのビットのそれぞれのシーケンスを含む、ことと、
前記第2のデータフォーマットの前記受信された複数のデータセットのうちの少なくともいくつかのビットを並べ替えて、前記第2のデータフォーマットの前記受信された複数のデータセットのうちの少なくともいくつかの前記ビットを、前記第1のデータフォーマットに関連付けられた前記ビットの第1の配置にマッピングすることであって、それによって、前記第2のデータフォーマットの前記受信された複数のデータセットから、前記第1のデータフォーマットの1つ以上のデータセットを生成する、ことと、を含み、
前記データエンコーダは、前記第1のエンコード方式を使用して、前記第1のデータフォーマットの前記生成されたデータセットを処理し、それによって、前記第2のデータフォーマットの前記受信された複数のデータセットを、前記第1のデータフォーマットに関連付けられた1つ以上のエンコードされたデータパケットとしてエンコードし、
前記ビットを前記並べ替えることは、単一のデータ要素の構成要素、及び/又は異なるデータ要素の構成要素に対する最上位ビットを、前記第1のデータフォーマットの前記生成されたデータセットに一緒に配置するように実行される、方法。
【請求項21】
データ要素のアレイを処理するときにデータ処理システムを動作させる方法であって、
前記データ処理システムは
第1のデータフォーマットで配置されたデータセットを処理するように構成された第1のエンコード方式を実行するように動作可能なデータエンコーダであって、前記第1のデータフォーマットは、ビットの第1の配置を使用して、データ要素のアレイの要素を表し、前記データエンコーダは、したがって、前記第1のデータフォーマットで提供された1つ以上のデータセットを、前記第1のエンコード方式を使用して、エンコードされたデータパケットとしてエンコードするように動作可能である、データエンコーダ、を含み、
前記方法は
前記データエンコーダによってエンコードするために、異なる第2のデータフォーマットの複数のデータセットを受信することであって、前記第2のデータフォーマットは、ビットの第2の異なる配置を使用して、データ要素のアレイの要素を表し、前記第2のデータフォーマットで前記受信されたデータセットのそれぞれはしたがって、前記第2のデータフォーマットでデータ要素のアレイの関連する要素を表すためのビットのそれぞれのシーケンスを含む、ことと、
前記第2のデータフォーマットの前記受信された複数のデータセットのうちの少なくともいくつかのビットを並べ替えて、前記第2のデータフォーマットの前記受信された複数のデータセットのうちの少なくともいくつかの前記ビットを、前記第1のデータフォーマットに関連付けられた前記ビットの第1の配置にマッピングすることであって、それによって、前記第2のデータフォーマットの前記受信された複数のデータセットから、前記第1のデータフォーマットの1つ以上のデータセットを生成する、ことと、を含み、
前記データエンコーダは、前記第1のエンコード方式を使用して、前記第1のデータフォーマットの前記生成されたデータセットを処理し、それによって、前記第2のデータフォーマットの前記受信された複数のデータセットを、前記第1のデータフォーマットに関連付けられた1つ以上のエンコードされたデータパケットとしてエンコードし、
前記ビットを前記並べ替えることは、複数のデータ要素の特定の構成要素を表すビットを、前記第1のデータフォーマットの前記生成されたデータセットに一緒に配置するように実行される、方法。
【発明の詳細な説明】
【背景技術】
【0001】
本明細書に記載される技術は、グラフィック処理システムなどのデータ処理システムに関し、具体的には、そのようなデータ処理システムにおいてデータをエンコードするためのデータエンコーダ(回路)の動作に関する。
【0002】
グラフィック処理動作は、グラフィックプロセッサ(グラフィック処理ユニット(GPU))によって実行されてもよく、典型的には、非圧縮形態のデータを処理する。そのような動作が特定の出力(例えばフレーム)を生成した場合、出力データは次いで、更なる処理(例えば、フレームの表示)の前に記憶するために、例えばメインメモリ内の(例えばフレーム)バッファに書き込まれ得る。
【0003】
使用中の非圧縮データの記憶及びアクセスにより、グラフィック処理デバイスに対して、比較的高いストレージ及び/又は帯域幅の要件を課す場合がある(又は、逆に、そのような要件が満たされない場合、パフォーマンスの損失につながることがある)。このことは、そのようなデバイスが、それらの、例えば、ストレージ、帯域幅、並びに電力のリソース及び能力に本質的に制限されるため、グラフィック処理を実行するモバイルデバイス及びハンドヘルドデバイスにとって特に重要である。
【0004】
グラフィック処理動作中に、メモリとの間で転送する必要があるデータの量、並びにそのようなデータを前後に移動させる関連電力コストを低減するために、データは、例えばメモリに書き込まれる前に圧縮され得る。これにより、データを、圧縮された(エンコードされた)フォーマットで記憶することが可能になる。更なる処理のためにデータが必要とされる場合、圧縮データは次いで、メモリから読み出され、更にグラフィック処理動作に好適なフォーマットになるように、復元(デコード)される。
【0005】
したがって、この動作を容易にするために、好適なデータエンコーダは、例えば、グラフィックプロセッサと、その中に圧縮データが記憶されるメモリシステムとの間に配置される、グラフィック処理システムに含まれてもよい。例えば、そのようなグラフィック(又は他の)データを好適にエンコードすることができる、米国特許第8,542,939号(Arm Limited)に記載されているものを含む、エンコード方式の様々な例が存在する。したがって、データエンコーダは、典型的には、例えば(異なる)好適なそのエンコード方式をそれぞれ実行するように動作可能である、1つ以上のコーデックを含むことができる。例えば、1つのコーデックは、好適な可変レート圧縮方式を実行するように構成されてもよく、別のコーデックは、代替的な、例えば固定レート圧縮方式を実行するように構成されている。
【0006】
グラフィック処理の文脈における例が上記に示されているが、同様の考慮事項はまた、特定の1つの情報の記憶及び/又は送信に必要とされるデータの量を低減することが望まれるデータ処理の様々な他の例にも適用され、そのようなデータエンコードが採用され得る状況の様々な他の例が存在する。
【0007】
それにもかかわらず、出願人らは、データ処理システムにおけるそのようなエンコード動作に対する改善の余地が依然として存在すると考える。
【図面の簡単な説明】
【0008】
本明細書に記載される技術の様々な実施形態を、単なる例として、添付図面を参照して説明する。
【
図1】本明細書に記載される技術が実装され得る例示的なグラフィック処理システムを示す。
【
図2】本明細書に記載される技術が実装され得る例示的なグラフィック処理システムの構成要素をより詳細に示す。
【
図3】データエンコーダの一実施形態をより詳細に示す。
【
図4】本明細書に記載される技術の一実施形態に係るエンコード処理の一例を概略的に示す。
【
図5】本明細書に記載される技術の一実施形態に係るデコードプロセスの一例を概略的に示す概略的に示す。
【
図6】本明細書に記載される技術の一実施形態に係る第1のデータビットインターリーブ方式の一例を示す。
【
図7】本明細書に記載される技術の一実施形態に係る第2のデータビットインターリーブ方式の一例を示す。
【
図8】本明細書に記載される技術の一実施形態に係る第3のデータビットインターリーブ方式の一例を示す。
【
図9】本明細書に記載される技術の一実施形態に係る第4のデータビットインターリーブ方式の一例を示す。 適切な場合、図面中の同様の要素及び特徴に対して、同様の参照番号が使用される。
【発明を実施するための形態】
【0009】
本明細書に記載される技術の第1の実施形態は、データ要素のアレイを処理するときにデータ処理システムを動作させる方法を含み、
データ処理システムは、
第1のデータフォーマットで配置されたデータセットを処理するように構成された第1のエンコード方式を実行するように動作可能なデータエンコーダであって、第1のデータフォーマットは、ビットの第1の配置を使用して、データ要素のアレイの要素を表し、データエンコーダは、第1のデータフォーマットで提供された1つ以上のデータセットを、第1のエンコード方式を使用して、エンコードされたデータパケットとしてエンコードするように動作可能である、データエンコーダ、を備え、
方法は、
データエンコーダによってエンコードするために、第2の異なるデータフォーマットの複数のデータセットを受信することであって、第2のデータフォーマットは、ビットの第2の異なる配置を使用して、データ要素のアレイの要素を表し、第2のデータフォーマットで受信されたデータセットのそれぞれは、したがって、第2のフォーマットでデータ要素のアレイの関連する要素を表すビットのそれぞれのシーケンスを含む、ことと、
第2のデータフォーマットの受信された複数のデータセットのうちの少なくともいくつかのビットを並べ替えて、第2のデータフォーマットの受信された複数のデータセットのうちの少なくともいくつかのビットを、第1のデータフォーマットに関連付けられたビットの第1の配置にマッピングすることであって、それによって、第2のデータフォーマットの受信された複数のデータセットから、第1のデータフォーマットの1つ以上のデータセットを生成する、ことと、を含み、
データエンコーダは、第1のエンコード方式を使用して、第1のデータフォーマットの生成されたデータセットを処理し、それによって、第2のデータフォーマットで受信された複数のデータセットを、第1のエンコード方式を使用して、1つ以上のエンコードされたデータパケットとしてエンコードする。
【0010】
本明細書に記載される技術の第2の実施形態は、データ要素のアレイを処理するためのデータ処理システムを含み、
データ処理システムは、
第1のデータフォーマットで配置されたデータセットを処理するように構成された第1のエンコード方式を実行するように構成されたデータエンコーダであって、第1のデータフォーマットは、ビットの第1の配置を使用して、データ要素のアレイの要素を表し、データエンコーダは、第1のデータフォーマットで提供された1つ以上のデータセットを、第1のエンコード方式を使用して、エンコードされたデータパケットとしてエンコードするように構成されている、データエンコーダと、
データエンコーダに関連付けられたデータ調整回路であって、ビットの第2の異なる配置を使用して、データ要素のアレイの要素を表す、第2の異なるデータフォーマットを有する複数のデータセットのうちの少なくともいくつかのビットを並べ替えて、第2のデータフォーマットの複数のデータセットのうちの少なくともいくつかのビットを、第1のデータフォーマットに関連付けられたビットの第1の配置にマッピングし、それによって、第2のデータフォーマットの複数のデータセットから、第1のデータフォーマットの1つ以上のデータセットを生成し、第1のデータフォーマットの生成されたデータセットを処理のためにデータエンコーダに提供する、ように構成されている、データ調整回路と、を備える。
【0011】
本明細書に記載される技術は、例えば、データの記憶及び/又は送信の要件を低減するために、データをエンコードされた(例えば、一実施形態では、圧縮された)形態へとエンコードするように構成されたデータ処理システム内のデータエンコーダの動作に関する。したがって、データ処理動作中に生成及び/又は要求されるデータは、まずデータエンコーダに渡されてもよく、データエンコーダは次に、エンコードされたデータが次いで、例えば、(メインメモリ、若しくはメモリ階層内の他のストレージ(例えばキャッシュ)であり得る)メモリシステムに書き出される、又は別の処理ユニットなどに送信される前に、データの所望のエンコードを実行する。
【0012】
具体的には、本明細書に記載される技術では、1つのデータフォーマットでデータエンコーダによって受信されたデータセットは、例えば、改善されたエンコードスループットを容易にするために、及び一実施形態ではまた、以下で更に説明されるように、データをより効率的にエンコードするために、(例えば、そのビットを適切に並べ替えることによって)別の異なるデータフォーマットへと「調整」される。
【0013】
この点に関して、本明細書に記載される技術は、データエンコーダが、典型的には、第1の事前定義されたフォーマット(又は、例えば、データエンコーダが複数の異なるエンコードモードで動作可能である、複数の事前定義されたフォーマット)のデータを(最適に)処理するように構成されていることを認識している。例えば、データエンコーダは、典型的には、1つ以上のコーデックを含み、例えば、(異なる)エンコード方式を実行するようにそれぞれ動作可能であり、各エンコード方式は、特定のデータフォーマットで使用するように設計されている。したがって、データエンコーダは(典型的には)、使用されているエンコード方式に応じて、特定のデータフォーマットに関連付けられた特定のサイズ(ビット数)を有するデータユニット(「データセット」)でデータを最適に処理するように設計され得る。
【0014】
したがって、本明細書に記載される技術では、データ要素のアレイ内の(各)データ要素は、データ要素のデータ値を表すデータセットに関連付けられ、このデータは、例えば、該当のデータ要素のデータ値を表すために、異なる配置(及び数)のビットを使用して、複数の異なるデータフォーマットで記憶されてもよい。
【0015】
例えば、一実施形態では、データ要素のアレイは画像データを表し、したがって、データ要素は、画像内の個々の画素を表すことができる(ただし、様々な他の配置が可能であり、要素は一般に画像の任意のサブユニットを表し得る)。その場合、一実施形態では、本明細書に記載される技術において処理されるデータセットは、個々の画素を表し、各画素は、該当の画素の(例えば)色値(例えば、画素データがRGB(A)画素フォーマットで記憶されている場合、RGB(A)構成要素値)を表すデータを含む関連するデータセットを有する。
【0016】
画素データを記憶するための様々な異なるフォーマットが存在する。例えば、X個のビットが赤色(R)チャネルを表すために使用され、Y個のビットが緑色(G)チャネルを表すために使用され、Z個のビットが青色(B)チャネルを表すために使用され、W個のビットが、アルファ(A、「透過性」)チャネルを表すために使用される、「RXGYBZAW」画素フォーマットを使用して、画素を表すことができる。この画素フォーマットの典型的な例には、R8G8B8画素フォーマット(1画素当たり24ビットを使用)、R8G8B8A8(1画素当たり32ビットを使用)、R5G6B5(1画素当たり16ビットを使用)などが含まれる。
【0017】
例えばYUVフォーマットなどを含む、異なる色空間を使用して画像データを表し得る他の画素フォーマットも存在する。
【0018】
したがって、データエンコーダは、特定のフォーマット(例えば、サイズ)のデータ要素(例えば、画素)を(最適に)処理するように予め構成されており、このフォーマット(サイズ)のデータ要素を表すデータセットは、エンコードパイプラインを通過することができる最大の構成要素である。例えば、データエンコーダの処理チャネルは、(データエンコーダが、「N」個の並列処理チャネルがある場合に、そのフォーマット(サイズ)の「N」個のデータ要素(例えば画素)を処理できるように)そのフォーマット(サイズ)の1つのデータ要素(例えば画素)を表すデータセットを単一のサイクルで(正確に)処理でき、したがって、これによって、最大エンコーディング(例えば画素)スループットが判定されるように設計され得る。
【0019】
したがって、実施形態では、データエンコーダは、単一の処理サイクルにおいて、第1のデータフォーマットの「N」個のデータ要素(すなわち、それを表すデータセット)を処理するように構成されており、これは、(エンコードスループットが、単一サイクルで処理できるデータ要素の数によって制約されるように)単一サイクルで処理することができるデータ要素の最大数である。
【0020】
したがって、出願人は、特定の量のデータ(例えば、単一のメモリページ、キャッシュラインなど)をエンコードするためのエンコードスループット及びパフォーマンスが、データがデータエンコーダによって受信されるデータフォーマットに依存し得ることを認識した。例えば、R5G6B5フォーマットの256バイトキャッシュラインは、128画素を含むが、R8G8B8A8フォーマットでは、それは64画素を含み、R16G16B16A16では、それは32画素のみを含む。したがって、データエンコーダが1サイクル当たり16画素の最大スループットを有する場合、R5G6B5フォーマットのキャッシュラインをエンコードするには8サイクルを要するのに対し、R8G8B8A8フォーマットでエンコードするには4サイクルを、及びR16G16B16A16には2サイクルのみを要する。
【0021】
しかしながら、データ処理システムによって使用中に生成されるデータは、(例えば、上述のように、異なる画素フォーマットを使用してデータが生成される場合)第2の異なるデータフォーマットで、データエンコーダによってエンコードするために生成されて提供され得る。例えば、エンコードされるデータを生成するアプリケーションに応じて、エンコーダによってエンコードするために受信されるデータセットは、例えば、エンコーダが処理するように設計された、異なる数及び配置のビットを有する、異なるデータフォーマットで受信される場合であってもよい。
【0022】
例えば、データエンコーダは、R8G8B8A8(32ビット)フォーマットの画素を処理するように設計されてもよいが、画素データは、R5G6B5(16ビット)フォーマットでエンコードされるように受信される。別の例として、データエンコーダは、R8G8B8A8フォーマットの画素を処理するように設計されてもよいが、画素データは、使用中にYUV画素フォーマットで生成される。使用中、データが生成され、異なるフォーマットの範囲でデータエンコーダに提供されてもよい。
【0023】
データ処理システム内で効果的に動作するために、データエンコーダは、一般的に、使用中にデータ処理システムによって生成され得る全てのデータ(例えば画素)フォーマットを処理することができる必要がある。しかしながら、データ処理システムによってエンコードされる必要があり得る全ての可能なデータフォーマットを効率的に処理することができるデータエンコーダを設計することは、データエンコーダの複雑さ(したがって面積)を増大させ、したがって非実用的であり得る。
【0024】
出願人らは、データエンコーダがデータ要素のサイズとは異なる(より小さい)サイズを有するフォーマットでデータを処理することがなおも可能であり得ることに関して、データエンコーダが、例えば、データセットをゼロでパディングすることによって処理するように構成されているが、これはエンコードリソースの最も効率的な使用法ではない可能性があることを更に認識しており、これは、エンコードスループットが、単一の処理サイクルで処理できるデータ要素(例えば画素)の数によって依然として制約され、データ要素のサイズがデータエンコーダと一致しない場合、エンコードパイプラインがしたがって十分に活用されないからである。
【0025】
したがって、本明細書に記載される技術の実施形態は、ビットインターリーブ、すなわち、受信されたデータパケットのビットをシャッフルして、データエンコーダが設計されたフォーマットに使用されるビットの配置とよりよく一致させることによって、画素データを並べ替える方法、を含むビット並べ替えを使用し、それによって、例えば、エンコードパイプラインがより良好であること、及び一実施形態では完全に利用されることを確実にすることによって、利用可能なエンコードリソースのより効率的な使用法を提供する。
【0026】
更に、例えば、データエンコーダにおける追加のハードウェアの複雑性を必要とすることなく、ビット(単独)の好適な並べ替えによって達成され得ることが、本明細書に記載される技術の利益である。
【0027】
これはまた、例えば、より一貫したエンコードプロセスを提供するために、元々生成/受信されたデータフォーマットにかかわらず、単一の共通フォーマット(すなわち、データエンコーダが設計されているデータフォーマット)で、データをエンコードすることができることを意味する。
【0028】
例えば、複数のデータ要素が、エンコーダが処理するように構成されたデータ要素のサイズよりも小さい(すなわち、より少ないビットを使用する)フォーマットで受信される(しかし、受信したデータ要素のそれぞれは通常、互いに同じサイズであるが、そうである必要はなく、ここで説明される技術は、原則として、複数の異なるデータフォーマットを同時に処理するためにも使用できる)場合、したがって、データ要素の一部又は全てのビットを適切に再シャッフルして、受信したデータ要素のビットを、エンコーダが処理するように構成されたターゲットデータフォーマットに使用されるビットの配置に配置されたどんなデータフォーマットにもマッピングすることができる。
【0029】
次いで、複数のデータ要素は、エンコーダが処理するように構成されたより大きいサイズの1つ以上の「疑似」データ要素として、例えば単一の処理ステップにおいて、データエンコーダによって一緒に処理され得る。
【0030】
例えば、エンコーダが、例えば、データエンコーダの各処理チャネルが、単一の処理サイクルにおいて1つの32ビット画素を処理するように動作可能であるが、入力データが、ビットの適切な並べ替えによってR5G6B5(16ビット)画素の形態で提供されるように、例えば、R8G8B8A8(32ビット)画素を処理するように構成されている場合、R5G6B5(16ビット)フォーマットで定義された画素のうちの2つをR8G8B8A8(32ビット)表現内の1つの単一画素に、効果的に一緒に結合することが可能である。次いで、R5G6B5(16ビット)フォーマットの2つの画素は、1つの処理サイクルにおいてR8G8B8A8(32ビット)フォーマットの単一の「疑似」画素として一緒に処理され得る(それによって、必要とされる処理サイクル数を効果的に半減する)。
【0031】
データエンコーダによって処理するための任意のサイズ画素を画素の所望の配置に適切にマッピングするために、対応する技術を使用することができる。
【0032】
したがって、実施形態では、第2のデータフォーマットは、データエンコーダが処理するように構成された第1のデータフォーマットの対応する要素を表すために使用されるよりも少ないビットを使用して、関連するデータ要素(例えば、画素)を表す。したがって、一実施形態では、並べ替えることは、例えば、対応する2つ以上のデータ要素を表す、第2のデータフォーマットの2つ以上のデータセットを、第1のデータフォーマットの1つ以上のデータセットへと、また一実施形態では、第1のデータフォーマットの単一のデータセットへと、結合することを含む。それによって、この並べ替えによって生成された第1のデータフォーマットのデータセット(単数又は複数)は、第1のデータフォーマットの「疑似」データ要素を効果的に表す。こうして、第1のデータフォーマットの「疑似」データ要素を表すデータセットは、第1のフォーマットに関連付けられた第1のエンコード方式を使用して、データエンコーダによって処理され得る(処理される)。
【0033】
本明細書に記載される技術では、第2のフォーマットのデータ要素を表すデータセットは、それによって、第1のフォーマットの「疑似」データ要素を表すデータセットへと「調整」される。疑似データ要素は第1のデータフォーマットで生成されず、したがって、ビットの配置は、特定のデータ要素の実データ値を直接表すことができないが、疑似データ要素を表す第1のデータフォーマットのデータセットは、代わりに、第2のフォーマットで受信されたデータセットによって表される複数のデータ要素に関連付けられたデータを含み、しかし、このデータはここで、処理上の理由のために第1のデータフォーマットに従って配置される、ことが理解されるであろう。
【0034】
データが第1のデータフォーマットのデータセットへと調整されると、第1のデータフォーマットの(すなわち、第1のデータフォーマットの疑似データ要素を表す)データセットは次いで、それに応じて、例えば第1のエンコード方式を使用して、例えば、第1のデータフォーマットで元々提供されたデータに対して行われるのと同じ方法で、データエンコーダによって処理することができる。すなわち、第1のデータフォーマットで疑似データ要素を生成するためのビットの並べ替えに続いて、第1のデータフォーマットの疑似データ要素は、次いで、一実施形態では、エンコードパイプラインに渡されて、第1のデータフォーマットの「実際の」データ要素とまったく同じ様式でエンコードされる得ることが理解されるであろう。
【0035】
換言すれば、本明細書に記載される技術では、エンコーダによって受信されるフォーマットでデータを処理しようと試みるのではなく、本明細書に記載の技術が更に認識するものは、比較的非効率的であり得、エンコードされるデータが、エンコーダが処理するように構成されたデータパケットのサイズよりも小さいサイズを有する場合、受信したデータセットの一部又は全てを、エンコーダが処理するように構成されたデータ要素のサイズと一致するより大きなデータセットへと結合することができる。
【0036】
このようにして、エンコードスループットは、データエンコーダに提供されたデータ要素のサイズを、データエンコーダが単一のサイクルで処理できるデータ要素の最大サイズと一致させることにより、増大させることができ、それによって、エンコードパイプラインは、処理することができる最大のデータユニットでいっぱいにされ、特定の量のデータをエンコードするために必要な処理サイクルがより少なくなるように(したがって、エンコード速度が向上するように)、エンコードパイプラインがよりよく、又は完全に利用されることが保証され得る。
【0037】
ビットの並べ替えは、場合によっては、ストレージ要件を低減するのに役立ち得る。例えば、複数のデータ要素を単一のより大きい「疑似」データ要素に結合することによって、データ要素の総数を低減することができ、これにより、記憶する必要があるデータの量を低減することができる。例えば、エンコード方式が関連するデータを、例えば、ヘッダの形態で各データ要素に対して生成する場合、データ要素の数を低減することにより、関連するヘッダの数が低減され、したがって、ストレージ要件が低減される。
【0038】
ビットの並べ替えはまた、エンコード自体を強化するための(すなわち、例えばより高い圧縮比で、より効果的なエンコードを提供し、並びに上述の様式でエンコードスループットを改善するための)更なる可能性を開く。
【0039】
例えば、データアレイの(予期される)特性を利用して、例えば、データアレイの(予期される)空間的局所性の利点を用いることによって(例えば、画像データの場合、互いに接近している画像の領域(例えば画素)は、同様の外観を有すると予期され得、この情報は、エンコードを容易にするために使用され得る)、エンコードを改善しようと試みるエンコード方式の様々な例が存在する。
【0040】
例えば、多くのエンコード方式は、差分値を使用してデータをエンコードする。したがって、値の間の差がより小さく(又はゼロ)なり得るように、同様の値でデータ値を一緒にグループ化することにより、差を記憶するために必要とされるデータの量を低減することができる。
【0041】
そのようなエンコード方式の一例は、米国特許第8,542,939号(Arm Limited)に記載されているものであり、実施形態では、データエンコーダは、このタイプのエンコード方式を実行するように動作可能である。
【0042】
一実施形態では、ビットの並べ替えは、したがって、例えば、一実施形態ではデータ局所性に基づいて、例えば、同様のデータ値を有することが予期されるデータ要素を表すビットが、例えば、空間的局所性に起因して、ビットの配置が同様の値を有すると予期されるデータ値がエンコードを容易にするような様式で配置されるようなものである、第1のデータフォーマットのデータのセットに再配置されるように、そのような予期されるデータ類似性を更に利用するために実行される。
【0043】
したがって、実施形態では、ビットの並べ替えは、例えば、同様であると予期されるデータ値が、より良好な圧縮を提供するような様式で配置されるように、データ内の予期される類似性に基づいて実行される。
【0044】
「best」がエンコードを容易にするビットの配置は、エンコード方式に依存し得ることが理解されるであろう。しかしながら、少なくともいくつかの実施形態では、並べ替えは、(特に、エンコードが値の間の差をエンコードする場合)、ビットを一緒に配置することを含んでもよく、それらのビットのデータ値は、これがエンコードを容易にし得るため、類似していると予期される。
【0045】
以下で更に説明するように、様々な実施形態がこの点に関して想定される。
【0046】
例えば、ビットの並べ替えは、最上位ビットを一緒にグループ化するために、及び/又は少なくとも有効ビットを一緒にグループ化するために実行され得る。これは、単一のデータ要素の異なる構成要素に対して、又は異なるデータ要素からの構成要素に対して、最上位ビット及び/又は少なくとも有効ビットを一緒にグループ化するために行われ得る。
【0047】
例えば、データ要素が個々の画素、例えば、RGBA画素フォーマットの画素を表す場合、最上位ビットと単一の構成要素の最下位ビットとの間に存在するものよりも、異なる構成要素の最上位ビット間のデータ値の変動が少ないことが予期され、この予期される類似性に基づいて並べ替えを実行することができる。
【0048】
したがって、同じ画素の異なる構成要素(例えば、RGBA構成要素)からのビットは、各構成要素に対して最上位ビットを一緒にグループ化するために(及び/又は各構成要素の少なくとも有効ビットを一緒にグループ化するために)インターリーブされ得る。
【0049】
別の例として、ビットの並べ替えは、異なるデータ要素から、同じ構成要素からのビットを一緒にグループ化することを含み得る。重ねて、単一のデータ要素に対する異なる構成要素のデータ値間に存在するよりも、異なるデータ要素間の単一の構成要素のデータ値の変動が少ないことが予期され得る。
【0050】
実施形態では、例えば、異なるデータ要素からの異なる構成要素に対して、ビットが最上位ビットにインターリーブされて一緒にグループ化され得るように、これらの手法の組み合わせが実行されてもよい。
【0051】
更に別の例として、データ要素のアレイ内で互いに(物理的に)近いデータ要素のデータ値を一緒に移動させるように、ビットを並べ替えることができる。例えば、このための使用例は、例えば、YUVフォーマットの画素がRGBフォーマットでエンコードされる場合である。そのとき、例えば、YUVフォーマットの画素の2×2ブロックを、複数のRGB画素としてエンコードすることが望ましい場合がある。その場合、YUV構成要素を表すビットは、YUVアレイ内で物理的に互いにより接近するデータ画素のRGBセットで、効果的に一緒にグループ化するようにブロック内部で並べ替えられてもよく、これは一般に、より類似したデータ値を有することが予期され得るからである。
【0052】
当然ながら、処理されているデータ及び/又は使用されるエンコード方式に応じて、他の配置も可能である。
【0053】
出願人らはまた、場合によっては、受信されたデータ要素が、エンコーダが処理するように設計されたデータ要素のサイズよりも大きくてもよいことも認識している。その場合、複数のデータ要素のデータを、処理するためのより大きなデータ要素に結合するのではなく、より大きいサイズの1つ以上のデータ要素(単数又は複数)に対するデータセットを、例えば、ターゲットの複数の疑似データ要素を表す、より小さいサイズのデータセットに分割してもよく、これはその後、それに応じて処理される。
【0054】
例えば、データエンコーダがR8G8B8A8(32ビット)フォーマットの画素を処理するように設計されているが、エンコードされるデータが、R16G16B16A16(64ビット)フォーマットで受信される場合、64ビットの画素は、R8G8B8A8フォーマットで処理するために、2つのより小さい32ビット「疑似」画素に分割され得る。
【0055】
したがって、実施形態では、第2のデータフォーマットの受信された複数のデータセットのうちの少なくともいくつかのビットを並べ替えて、第2のデータフォーマットの受信された複数のデータセットのうちの少なくともいくつかのビットを、第1のデータフォーマットに関連付けられたビットの第1の配置にマッピングするステップは、第2のデータフォーマットで受信された1つ以上のデータセットのビットを、第1のデータフォーマットの複数のデータセットに並べ替えて、それによって、第2のデータフォーマットの1つ以上のデータセットから、第1のデータフォーマットの複数のデータセットを生成することを含む。
【0056】
この点に関して、様々な最適化が可能である。例えば、上述と同様の方法で、予期されるデータ類似性を利用するために、例えば、一実施形態では、データ内の空間的局所性に基づいて、第2のデータフォーマットで受信されたデータセットが分割されるときに、これは、例えば、ほとんどの有効ビット又は類似の構成要素が、処理のために一緒にグループ化されるように、予期されるデータ類似性を利用する方法で行われる実施形態である。
【0057】
例えば、R16G16B16A16画素は、赤色(R)構成要素を表すビットの全てがターゲットデータフォーマットのデータの単一のセットなどに一緒にグループ化される様式で、複数のより小さい画素に分割されてもよい。別の例として、各構成要素からの最上位ビットは、ターゲットデータフォーマットの単一のデータセットに配置されて、一緒に処理されてもよい。
【0058】
上記のように、一実施形態におけるデータ要素のアレイ(単数又は複数)は、値の空間分布を表す。すなわち、一実施形態におけるデータ要素のアレイ(単数又は複数)は、空間領域内に分布したデータ値のセットを表す。そのため、各データ要素は、空間分布内の特定の位置に関連付けられたデータ要素のデータ値のセットによって表され得る。したがって、実施形態では、データ要素のアレイ(単数又は複数)は、データ位置のアレイに(それぞれ)対応し得る。実施形態では、データ要素又は位置のアレイ(単数又は複数)は、(例えば、表示のための)静止画像又はビデオフレームなどの所望の(例えば、画像)出力の全て又は一部に対応してもよい。すなわち、一実施形態におけるデータ要素のアレイ(単数又は複数)は、画像データのアレイ(単数又は複数)、すなわち、表示のために画像を生成するために使用され得るデータを含む。したがって、実施形態におけるデータのアレイは、エンコードされる単一の静止画像に対応し得る。他の実施形態では、データのアレイは、エンコードされるビデオフレームのストリームのビデオフレームに対応し得る。
【0059】
実施形態は、画像及び/又はビデオデータを含むデータアレイ(単数又は複数)に関連するが、所望であればデータアレイ配置の他の例が可能であり、一般に、データ要素のアレイ(単数又は複数)は、本明細書に記載される技術に従って好適に又は望ましくはエンコードされ得る任意のデータアレイを含んでもよい。
【0060】
実際に、本明細書に記載される実施形態のいずれにおいても、データ要素のアレイ(単数又は複数)は、任意の所望の好適な形態をとることができる。
【0061】
例えば、一般に、データ要素又は位置と所望の出力との間に、任意の所望の好適な対応が存在し得る。例えば、アレイ(単数又は複数)のデータ要素又は位置はそれぞれ、所望の出力の画素又は画素群に対応し得る。しかしながら、もちろん、他の構成も可能である。
【0062】
データ要素のアレイ(単数又は複数)は、データ要素又は位置に関して任意の所望の好適なサイズ又は形状であり得るが、一実施形態では(正方形を含む)矩形である。
【0063】
データ要素はまた、例えば、画像データ値(例えば、色値)を表す、任意の所望の好適なフォーマットを有してもよい。
【0064】
本明細書に記載される実施形態のいずれにおいても、データ要素のアレイ(単数又は複数)は、任意の所望の好適な方法で提供され得る。実施形態は、アレイ(単数又は複数)のデータ要素(の少なくとも一部又は全て)を生成することを含み得る。実施形態はまた、あるいはその代わりに、例えばメモリからの、アレイ(単数又は複数)のデータ要素(の少なくとも一部又は全て)の読み取りを含み得る。
【0065】
アレイ(単数又は複数)のデータ要素は、任意の所望の好適な方法で生成され得る。実施形態では、アレイのデータ要素は、ビデオカメラなどのカメラによって生成されてもよい。他の実施形態では、アレイのデータ要素の生成は、レンダリングプロセスを含み得る。レンダリングプロセスは、(例えば、プリミティブをラスタライズしてグラフィックフラグメントを生成することによって、及び/又はグラフィックフラグメントをレンダリングすることによって)アレイのデータ要素によって表されるデータ値を導出することを含み得る。グラフィックプロセッサ(グラフィック処理パイプライン)は、アレイのデータ要素を生成するために使用されてもよい。グラフィック処理パイプラインは、アレイのデータ要素を生成するために、頂点シェーダ、ラスタライズステージ(ラスタライザ)、レンダリングステージ(レンダラ)などの、グラフィックパイプライン及びプロセッサが含み得る任意の好適な所望の処理ステージを含み得る。
【0066】
典型的には、データアレイ(単数又は複数)のデータ要素は、例えばブロックベースでブロック上で、データ要素の「ブロック」としてエンコードされてもよい。例えば、データ要素のアレイ(単数又は複数)は、ブロックベースでブロック上でエンコードされる複数のブロックに分割されてもよい。したがって、データアレイ又はデータアレイのデータ要素を処理又はエンコードするための本明細書における任意の参照は、そのようなデータ要素のブロックを処理又はエンコードすることを含み、典型的には伴うものと見なされるべきである。「ブロック」は、一般に、データ要素のN×M(一実施形態ではN×N)アレイを含み得る。
【0067】
したがって、一実施形態では、例えばフレーム(画像)全体を表す、データ要素のアレイ(全体)をエンコードする場合、データ要素のアレイ(全体)は複数のブロックに分割され、次いで、各ブロックは、エンコードされたデータパケットの対応するセットを提供するようにエンコードされる。すなわち、データ要素のより大きいアレイ内のデータ要素の各ブロックは、一実施形態では、エンコードされたデータパケットとしてエンコードされる(圧縮される)(それによって、エンコードされたデータパケットが、したがって、複数のデータ要素、例えば、データ要素のブロック内の複数のデータ要素を表すデータを典型的に含み得る)。したがって、一実施形態では、エンコードされるデータアレイは、より大きいデータアレイ全体からのデータ要素のブロックを含む(これは、一実施形態では、データアレイ全体を構成する複数のブロックのそれぞれに対して繰り返される)。次いで、ブロックのそれぞれのデータパケットは、特定の順序で、データ要素のアレイ全体のデータを含むエンコードされたデータストリームに好適に結合され得る。
【0068】
データ要素は、例えば、基準フレーム又はブロックと比較した、差分値を含んでもよい。しかしながら、より多くの場合、エンコード方式が生データをエンコードするために使用され、したがって、データ要素は(生の)画素値を表し得る。
【0069】
エンコードは、データエンコード回路及び/又はエンコードされるデータの構成に応じて、任意の好適な様式で実行され得る。
【0070】
例えば、上記のように、データエンコーダは、米国特許第8,542,939号(Arm Limited)に記載されているようなエンコード方式を実行するように動作可能であってもよい。しかしながら、必要に応じて、他のエンコード方式も使用することができる。
【0071】
データエンコーダは、上述の様式でビットをどのように並べ替えるか(及び並べ替えるかどうか)を判定するように構成され得る。例えば、特定の(第2の)データフォーマットで受信された任意のデータは、ターゲット(第1の)データフォーマットへと並べ替えされるべきであることと事前判定され得る。したがって、データエンコーダは、エンコードのために受信したデータのデータフォーマットを確認し、次いで、データフォーマットに基づいて、適切な並べ替え方式を選択するための回路構成を含み得る。あるいは、並べ替え方式は、例えば好適なドライバによって指定されてもよい。
【0072】
この点に関して、様々な配置が可能である。
【0073】
本明細書に記載される技術では、データはエンコードされ、次いで、例えば、メモリ及び/又は帯域幅の要件を低減するために、そのエンコードされた形態で記憶及び/又は送信され得る。
【0074】
エンコードされたデータがその後、例えば、データプロセッサによって使用される必要がある場合、エンコードされたデータは、したがって元のデータ(又は、例えば、損失エンコードが使用される場合、少なくともその表現)を再構築するために、好適にデコード(例えば、復元)される必要がある。
【0075】
したがって、データ処理システムはまた、エンコードされたデータパケットをデコードするように構成されたデータデコーダ(データエンコーダと同じ構成要素であってもよく、又は別個の構成要素であってもよい)を含み得る。
【0076】
一般に、デコーダは、エンコードされたデータをデコードして、エンコードされた元のソースデータ(例えば、画像)を回復し、次いでこのデータを所望に応じて使用(例えば、表示)するように動作可能である。したがって、エンコードされたデータがデコードされると、デコーダは次いで、デコードされたデータを使用して、得られたデータを表示する、又は表示のために出力するように構成されてもよい。
【0077】
したがって、実施形態では、本明細書に記載される技術の様式で、エンコードされたデータパケットとしてエンコードされているデータがその後使用される場合、エンコードされたデータは、データデコーダに渡され、ここで、それに応じてエンコードされたデータパケットがデコードされる。
【0078】
本明細書に記載される技術はまた、(例えば、本明細書に記載される技術に従ってエンコードされた)データアレイ自体をエンコードするデータをデコードするための対応する方法及び装置に及ぶ。
【0079】
デコードプロセスは、本質的に、本明細書に記載される技術のエンコードとは逆に機能する。
【0080】
例えば、デコーダは、一実施形態では、例えば、第1のエンコード方式を逆にするデコード方式を実装することによって、第1のデータフォーマットのデータをデコードするように構成されている。したがって、デコーダは、エンコードされたデータパケットを、第1のデータフォーマットの1つ以上のデコードされたデータセットに(最初に)デコードすることができる。
【0081】
元のデータを、すなわち元の第2のデータフォーマットに再構築するために、デコーダは、一実施形態では、データエンコーダに関して上述したものと同様のデータ調整回路に(同様に)関連付けられているが、第1のデータフォーマットのデコードされたデータセットのビットを並べ替えて、第2のデータフォーマットに関連付けられたビットの第2の配置にビットをマッピングし、それによって、第1のデータフォーマットのデコードされたデータセットから、(エンコードされた第2のデータフォーマットの元のデータを表す)第2のデータフォーマットの1つ以上のデータセットを生成するように構成される。
【0082】
デコード中に実行される並べ替えは、エンコード中に実行される並べ替えの逆であるべきであることを理解されたい。
【0083】
この動作を容易にするために、デコーダは、エンコード中に実行されるビットの並べ替えを識別するための情報を提供することができる。この情報は、例えば、デコードがいつ行われたかをデコーダが識別することを可能にするために、エンコードされたデータパケットの一部として又はそれと共に、好適に含まれ得る。例えば、この情報は、メタデータとして、例えば、好適なヘッダ、又はサイドバンド情報として提供されてもよい。
【0084】
そのような情報が提供される場合、デコーダは次いで、そのような情報を使用して、ビットが並べ替えられたこと及びその方法を識別することができ、更に第2のデータフォーマットで元のデータアレイを再構築するために、適切な逆並べ替え動作を実行することができる。
【0085】
しかしながら、他の構成も可能である。例えば、上記のように、特定の(第2の)データフォーマットで受信されたデータが、ターゲット(第1の)データフォーマットに常に並べ替えられるように、固定マッピングに基づいて、事前判定された並べ替えが行われてもよく、デコーダは、そのような固定マッピングに気付くことができる。又は、並べ替え方式は、例えば、好適なドライバによって指定され得る。
【0086】
本明細書に記載される技術の別の実施形態は、データ要素のアレイを処理するときにデータ処理システムを動作させる方法を含み、
データ処理システムは、
1つ以上のエンコードされたデータパケットを、第1のデータフォーマットで配置された1つ以上のデータセットへとデコードするように構成された第1のデコード方式を実行するように動作可能なデータデコーダであって、第1のデータフォーマットは、ビットの第1の配置を使用してデータ要素のアレイの要素を表す、データデコーダ、を備え、
方法は、
データデコーダによってデコードするためのエンコードされたデータパケットを受信することと、
データデコーダによって第1のデコード方式を使用してエンコードされたデータパケットを処理して、それによって、第1のデータフォーマットの1つ以上のデコードされたデータセットを生成することと、
第1のデータフォーマットのデコードされたデータセットのビットを、第2の異なるデータフォーマットに関連付けられた第2の異なるビットの配置に並べ替えることであって、第2のデータフォーマットは、ビットの第2の配置を使用して、データ要素のアレイの要素を表し、それによって、第1のデータフォーマットでデコードされたデータセットから、第2のデータフォーマットの1つ以上のデータセットを生成する、ことと、
を含む。
【0087】
本明細書に記載される技術の更なる実施形態は、データ要素のアレイを処理するためのデータ処理システムを含み、
データ処理システムは、
1つ以上のエンコードされたデータパケットを、第1のデータフォーマットで配置された1つ以上のデータセットへとデコードするように構成された第1のデコード方式を実行するように動作可能なデータデコーダであって、第1のデータフォーマットは、ビットの第1の配置を使用してデータ要素のアレイの要素を表す、データデコーダと、
データデコーダに関連付けられたデータ調整回路であって、データデコーダから第1のデータフォーマットのデコードされた複数のデータセットのうちの少なくともいくつかのビットを並べ替えて、ビットを、第2の異なるデータフォーマットに関連付けられた第2の異なるビットの配置にマッピングするように構成されており、第2のデータフォーマットは、ビットの第2の配置を使用してデータ要素のアレイの要素を表し、それによって、第1のデータフォーマットのデータセットから、第2のデータフォーマットの1つ以上のデータセットを生成する。データ調整回路と、
を備える。
【0088】
上記から理解されるように、本明細書に記載される技術は、一実施形態では、メモリシステムと、キャッシュシステムと、グラフィックプロセッサ(グラフィック処理ユニット(GPU))と、を備えるグラフィック処理システムに実装される。(例えば、レンダリング出力(例えば表示される画像)を生成する)グラフィック処理動作を実行するためのデータは、一実施形態では、メモリシステムのメモリに記憶される。
【0089】
グラフィックプロセッサは、一実施形態では、上述の様式で、メモリからの必要なデータのフェッチ、及びキャッシュシステム内のその記憶をトリガするように配置されている。次いで、グラフィックプロセッサは、一実施形態では、例えば上述の様式で、(例えば、レンダリング出力を生成する)グラフィック処理動作を実行するために、キャッシュシステムから必要なデータを読み出す。グラフィック処理動作(例えば、レンダリング出力)からの出力は、このようにして生成されると、次いでキャッシュシステムを介してメモリシステムに書き戻され、一実施形態では、例えば、電話、タブレット、テレビ、コンピュータ画面などの電子デバイスのディスプレイ上に表示される。
【0090】
グラフィックプロセッサ(グラフィック処理ユニット)は、グラフィック処理動作を実行するグラフィック処理パイプラインを実装して実行することができ、一実施形態では、グラフィック処理パイプラインを実装して実行する。
【0091】
グラフィック処理パイプラインは、グラフィック処理パイプラインが通常、プリミティブ設定ステージ、ラスタライザ、レンダラなどを(一実施形態では、プログラム可能なフラグメントシェーダ(シェーダコア)の形態で)含み得る、処理ステージのうちの任意の1つ以上、一実施形態ではその全てを含んでもよく、一実施形態では、それらを含む。
【0092】
一実施形態では、グラフィックプロセッサ(処理パイプライン)はまた、頂点シェーディングステージ、ハルシェーダ、テッセレーションステージ(例えば、ここでテッセレーションはシェーダプログラムを実行することによって実行される)、領域(評価)シェーディングステージ(シェーダ)、ジオメトリシェーディングステージ(シェーダ)、及びフラグメントシェーダ、のうちの1つ以上、一実施形態ではその全てなどの、1つ以上のプログラム可能なシェーディングステージを含む。
【0093】
グラフィックプロセッサ(処理パイプライン)はまた、グラフィック処理パイプラインが深さ(又は深さ及びステンシル)テスタ(単数又は複数)、ブレンダ、タイルバッファ又はバッファ、書き出しユニットなどを含み得る、任意の他の好適な所望の処理ステージを含んでもよい。
【0094】
本明細書に記載される技術は、任意の好適な所望のグラフィック処理システム及びプロセッサ内で、それらと共に使用され得る。
【0095】
一例として、本明細書に記載される技術は、タイルレンダラ(タイルベースのグラフィック処理システム)と共に使用されてもよい。したがって、一実施形態では、グラフィックプロセッサ(処理パイプライン)はタイルベースのグラフィックプロセッサ(処理パイプライン)である。当然ながら、他の構成も可能である。
【0096】
しかしながら、一般に、任意の実施形態で本明細書に記載されるエンコード/デコードプロセスは、任意の所望の好適なデータ処理システムのコンテキスト内で実行され得る。
【0097】
一実施形態では、本明細書に記載される本明細書に記載される技術の様々な機能は、データ要素のアレイを提供及び/又は使用する単一データ(例えば、画像)処理プラットフォーム上で実行される。
【0098】
例えば、上述のエンコード装置及びデコード装置は、一般に、デジタルカメラなどのカメラ、携帯電話、又はタブレットを含む、画像及び/又はビデオ処理システムの一部として提供されてもよい。
【0099】
任意の実施形態で本明細書に記載されるデータ処理装置は、システムオンチップ(SoC)を備えてもよく、又はシステムオンチップ(SoC)であってもよく、又はその一部を形成してもよい。
【0100】
一実施形態では、データ処理システム及び/又はプロセッサはまた、本明細書に記載されるデータを記憶する、及び/又は本明細書に記載されるプロセスを実行するためのソフトウェアを記憶する、1つ以上のメモリ及び/又はメモリデバイスを備え、及び/又はそれらと通信する。データ処理システム及び/又はプロセッサはまた、ホストマイクロプロセッサと通信してもよく、及び/又はプロセッサ(処理パイプライン)によって生成されたデータに基づいて画像を表示するためにディスプレイと通信してもよい。
【0101】
本明細書で言及されるメモリは、データ処理装置の又はデータ処理装置用の任意の所望の好適なメモリであってもよい。メモリは、データ処理装置、例えば、ビデオプロセッサ及び/又はシステムオンチップ(SoC)の外部にあってもよい。メモリは、例えば、メインシステムメモリであってもよい。
【0102】
本明細書に記載される技術のエンコード/デコード装置は、例えばホスト(例えば、中央)プロセッサを含む全体的なデータ処理システムの一部であってもよい。ホストプロセッサは、例えば、エンコード/デコード装置によるデータ処理を必要とするアプリケーションを実行し得る。ホストプロセッサは、適切なコマンド及びデータをエンコード/デコード装置に送信して、それを、データエンコード/デコード動作を実行し、かつ、ホストプロセッサ上で実行されるアプリケーションによって必要とされる出力を生成及び/又は使用するように制御することができる。これを容易にするために、ホストプロセッサは、エンコード/デコード装置に対するドライバを実行することができる。
【0103】
本明細書に記載される技術は、好適に構成されたマイクロプロセッサベースのシステムなど、任意の好適なシステムに実装され得る。いくつかの実施形態では、本明細書に記載される技術は、コンピュータ及び/又はマイクロプロセッサベースのシステムに実装される。
【0104】
本明細書に記載される技術の様々な機能は、任意の所望の好適な様式で実行され得る。例えば、本明細書に記載される技術の機能は、所望に応じて、ハードウェア又はソフトウェアで実装されてもよい。したがって、例えば、本明細書に記載される技術の様々な機能要素及びステージは、好適なプロセッサ(単数又は複数)、コントローラ(単数又は複数)、機能ユニット、回路/回路構成、処理ロジック、マイクロプロセッサ構成などを備えてもよく、それらは、適切に専用化されたハードウェア要素(処理回路/回路構成)、及び/又は所望の様式で動作するようにプログラムされ得るプログラム可能なハードウェア要素(処理回路/回路構成)などの、様々な機能などを実行するように動作可能である。
【0105】
本明細書では、当業者には理解されるように、本明細書に記載される技術の様々な機能などが、所与のプロセッサ上で並行して複製及び/又は実行されてもよいことにも留意されたい。同様に、様々な処理ステージは、所望される場合、処理回路/回路構成などを共有し得る。
【0106】
更に、本明細書に記載される技術の処理ステージのうちのいずれか1つ以上又は全ては、処理ステージ回路/回路構成として、例えば、1つ以上の固定機能ユニット(ハードウェア)(処理回路/回路構成)の形態で、及び/又は所望の動作を実行するようにプログラムされ得るプログラム可能な処理回路/回路構成の形態で具現化されてもよい。同様に、本明細書に記載される技術の処理ステージ及び処理ステージ回路/回路構成のうちのいずれか1つ以上は、他の処理ステージ若しくは処理ステージ回路/回路構成のうちの任意の1つ以上に別個の回路要素として提供されてもよく、並びに/又は処理ステージ及び処理ステージ回路/回路構成のうちのいずれか1つ以上又は全ては、共有処理回路/回路構成から少なくとも部分的に形成されてもよい。
【0107】
本明細書に記載される技術の記載された実施形態の全てが、適切に、本明細書に記載される特徴のうちのいずれか1つ以上又は全てを含むことができることも当業者には理解されるであろう。
【0108】
本明細書に記載される技術による方法は、ソフトウェア、例えば、コンピュータプログラムを少なくとも部分的に使用して実施することができる。したがって、更なる実施形態から見ると、本明細書に記載される技術は、データプロセッサにインストールされたときに本明細書に記載される方法を実行するように特に適合されたコンピュータソフトウェア、プログラム要素がデータプロセッサ上で実行されると本明細書に記載される方法を実行するためのコンピュータソフトウェアコード部分を含むコンピュータプログラム要素、及びプログラムがデータ処理システム上で実行されると本明細書に記載される方法(単数又は複数)の全てのステップを実行するように適合されたコードを含むコンピュータプログラム、を提供する。データ処理システムは、マイクロプロセッサ、プログラム可能なFPGA(フィールドプログラマブルゲートアレイ)などであってもよい。
【0109】
本明細書に記載される技術はまた、グラフィックプロセッサを動作させるために使用されると、データプロセッサを備えるレンデラ又は他のシステムが、当該データプロセッサ、当該プロセッサ、レンデラ、又はシステムと連携して本明細書に記載される技術の方法のステップを実行させるようなソフトウェアを含むコンピュータソフトウェアキャリアにも及ぶ。そのようなコンピュータソフトウェアキャリアは、ROMチップ、CD ROM、RAM、フラッシュメモリ、若しくはディスクなどの物理的記憶媒体であってもよく、又は有線を介した電子信号、光信号、若しくは衛星などの無線信号などの信号であってもよい。
【0110】
本明細書に記載される技術の方法の全てのステップが、コンピュータソフトウェアによって実行される必要はなく、したがって、更に広義の実施形態から、本明細書に記載される技術は、コンピュータソフトウェア、及び本明細書に提示された方法のステップの少なくとも1つを実行するためのコンピュータソフトウェアキャリアにインストールされたそのようなソフトウェアを提供することが更に理解されるであろう。
【0111】
したがって、本明細書に記載される技術は、コンピュータシステムと共に使用するためのコンピュータプログラム製品として好適に具現化され得る。そのような実装形態は、コンピュータ可読媒体、例えば、ディスケット、CD ROM、ROM、RAM、フラッシュメモリ、又はハードディスクなどの、有形の非一時的媒体上に固定された一連のコンピュータ可読命令を含んでもよい。それはまた、モデム又は他のインタフェースデバイスを介して、光通信回線又はアナログ通信回線を含むがこれらに限定されない有形の媒体経由で、又はマイクロ波、赤外線、若しくは他の伝送技術を含むがこれらに限定されない無線技術を無形に使用してコンピュータシステムに伝達可能な、一連のコンピュータ可読命令を含み得る。一連のコンピュータ可読命令は、本明細書で前述した機能の全て又は一部を具現化する。
【0112】
当業者であれば、そのようなコンピュータ可読命令は、多くのコンピュータアーキテクチャ又はオペレーティングシステムと共に使用するための複数のプログラミング言語で書き込まれ得ることを理解するであろう。更に、そのような命令は、半導体、磁気、若しくは光学を含むがこれらに限定されない現在又は将来の任意のメモリ技術を使用して記憶され得る、あるいは、光学、赤外線、若しくはマイクロ波を含むがこれらに限定されない現在又は将来の任意の通信技術を使用して送信され得る。そのようなコンピュータプログラム製品は、例えば、システムROM若しくは固定ディスク上のコンピュータシステムにプリロードされた、あるいは、サーバー若しくは電子掲示板からネットワーク、例えばインターネット若しくはワールドワイドウェブの上に配信されている、付随する印刷文書又は電子文書を有する取り外し可能な媒体、例えば、市販のソフトウェアとして配布されてもよいことが想定される。
【0113】
ここで、本明細書に記載される技術の複数の実施形態が、グラフィック処理システムのコンテキストで説明される。
【0114】
図1は、本明細書に記載される技術及び本実施形態が実装され得る例示的なグラフィック処理システムを示す。
【0115】
図1に示す例示的なグラフィック処理システムは、中央処理装置(CPU)1と、グラフィックプロセッサ(グラフィック処理ユニット(GPU))10と、ビデオコーデック2と、ディスプレイコントローラ3と、メモリコントローラ4と、を含む、ホストプロセッサを備える。
図1に示すように、これらのユニットは、相互接続5を介して通信し、オフチップメモリシステム(メモリ)6へのアクセスを有する。このシステムでは、GPU10、ビデオコーデック2、及び/又はCPU1は、表示されるフレーム(画像)を生成し、次いでディスプレイコントローラ3は、表示のためにディスプレイ7にフレームを提供する。
【0116】
このシステムを使用する際、ホストプロセッサ(CPU)1上で実行するゲームなどのアプリケーション8は、例えば、ディスプレイ7上のフレームの表示を必要とする。これを行うために、アプリケーション8は、CPU1上で実行しているグラフィック処理ユニット10用のドライバ9に、適切なコマンド及びデータを送信する。次いで、ドライバ9は、適切なコマンド及びデータを生成して、グラフィック処理ユニット10に、表示のために適切なフレームをレンダリングさせ、適切なフレームバッファ内に、例えば、メインメモリ6内にそれらのフレームを記憶させる。次に、ディスプレイコントローラ3は、それらのフレームをディスプレイ用のバッファに読み込み、そこからデータを読み出して、ディスプレイ7の表示パネルに表示する。
【0117】
この処理の一部として、グラフィックプロセッサ10は、メモリ6からテクスチャ、レンダリングすべきジオメトリなどのデータを読み込み、そのデータを処理し、次いでデータを(例えば、表示される処理されたテクスチャ及び/又はフレームの形態で)メモリ6に返し、例えば上述したように、データが更に、ディスプレイ7上に表示するために、例えばディスプレイコントローラ3によってメモリから読み出される。したがって、グラフィックプロセッサ10との間で(特に、グラフィックプロセッサ10の処理コアとの間で)、及びメモリ6との間で、データを転送する必要がある。
【0118】
これを容易にし、かつ、グラフィック処理動作中にメモリとの間で転送される必要があるデータの量を低減するために、データは、メモリ内に圧縮された形態で記憶され得る。
【0119】
グラフィックプロセッサ10が非圧縮形態のデータ上で動作する必要がある(及び非圧縮形態のデータを生成する)ため、これはしたがって、圧縮形態でメモリに記憶されるデータが、グラフィックプロセッサによって処理される前に最初に復元される必要があることを意味する。それに対応して、グラフィックプロセッサ10によって生成されたデータは、メモリ6に(最後に)記憶される前にまず圧縮される必要がある。
【0120】
本実施形態は、特に、メモリ6とグラフィックプロセッサ10との間のデータのそのような圧縮及び復元を実行するための改良された技術に関する。
【0121】
図2は、本実施形態の動作に関連するグラフィック処理システムの要素、具体的には、メモリシステム6及びグラフィックプロセッサ10との間のデータの圧縮形態での転送を、概略的かつより詳細に示している。当業者には理解されるように、
図2には示されていないシステムなどの他の要素が存在してもよい。
【0122】
図2は、メモリシステム6及びグラフィックプロセッサ10を示す。
図2に示されるように、メモリシステム6とグラフィックプロセッサ10との間には、メモリシステム6からグラフィックプロセッサ10に(具体的には、グラフィックプロセッサ10の処理コア(シェーダコア)25に)データを転送し、かつ、逆に、グラフィックプロセッサ10の処理コア25によって生成されたデータをメモリ6に転送し戻すように動作可能なキャッシュシステム20が存在する。
【0123】
図2に示されるように、この実施形態では、データは、メモリシステム6からキャッシュシステム20に転送され、次いでキャッシュシステム20からシェーダコア25に転送される(その逆も行われる)。
【0124】
必要とされる場合に、メモリシステム6からの圧縮データの処理を容易にするために(及び圧縮データをメモリシステム6に戻すために)、
図2に示されるように、キャッシュシステム20は、この実施形態では(もちろん、他の構成も可能であろうが)キャッシュシステム20とメモリシステム6との間に配置されたデータエンコーダ/デコーダ22に関連付けられている。
【0125】
以下で更に論じるように、このデータエンコーダは、メモリシステム6から受信したデータを復元し、そのデータを、グラフィックプロセッサのシェーダコア25によって使用するためにキャッシュシステム20内に非圧縮形態で記憶するように動作可能であり、かつ、逆に、そのデータをメモリシステム6に書き戻す前にキャッシュシステム20から除去されるデータを圧縮するように動作可能である。このデータエンコーダ22の動作については、以下でより詳細に説明する。
【0126】
図3は、本実施形態での、データエンコーダ/デコーダ22の一実施形態を示す。
図3に示されるように、データエンコーダ(及び各データエンコーダ)は、キャッシュシステム及びメモリシステムからデータを読み出し、キャッシュシステム及びメモリシステムにデータを書き込むようにそれぞれ動作可能な、それぞれの読み取りユニット(回路)60及び書き込みユニット(回路)61を含む。データエンコーダ/デコーダ22はまた、シェーダコア及びキャッシュコントローラから読み取り要求及び書き込み要求を受信し、かつ、データエンコーダ/デコーダ22を制御してそれらの要求に適宜に適切に応答する、好適な制御ユニット(回路)62を含む。
【0127】
図3に示されるように、データエンコーダ/デコーダ22はまた、データが処理されている間、及び/又はそのデータがキャッシュシステム又はメモリシステムに書き込まれるのを待っている間、データエンコーダ/デコーダ22にデータを一時的に記憶するための1つ以上のコーデック63、64及びデータバッファのセット65を含む。
【0128】
データエンコーダ/デコーダ22は、例えば、それぞれが異なるエンコード(圧縮)方式を実行するようにそれぞれ動作可能である、任意の所望の数のコーデックを含むことができる。例えば、1つのコーデックは、適切な可変レート圧縮方式を実行するように構成されてもよく、他のコーデックは、代替的な、例えば固定レート圧縮方式を実行するように構成されている。
【0129】
当然ながら、他の構成も可能である。
【0130】
コーデックは、典型的に、それぞれ、特定の画素フォーマット、又は画素フォーマットのセットで動作するように設計されている。例えば、データエンコーダ/デコーダ22は、処理サイクル中に特定の画素フォーマットを使用して表される「N」個の画素を処理することができるように設計されてもよい。
【0131】
しかしながら、使用時に、データは、データエンコーダ/デコーダ22が設計されている画素フォーマット(単数又は複数)に一致しないことがある様々な異なる画素フォーマットで、データエンコーダ/デコーダ22によってエンコードされる必要があり得る。
【0132】
例えば、メモリページ圧縮中、異なる画素フォーマットの固定サイズメモリページ(例えば、256バイト)が圧縮される必要があり得る。
【0133】
メモリページブロック内の画素数は、画素フォーマットに応じて異なることが理解されるであろう。
【0134】
例えば、256バイトのメモリページがR5G6B5画素フォーマットを用いて表される場合、メモリページは128個の画素を含むことになる。一方、R8G8B8A8画素フォーマットを使用する場合、256バイトのメモリページは、64個の画素のみを含むことになる。
【0135】
メモリページブロックを統一された圧縮フォーマットで(すなわち、データエンコーダが動作するように設計されたいずれかのフォーマットで)エンコードすることが望ましいことがあり、又はそれが必要であり得る。しかしながら、データがその画素フォーマットとは異なる圧縮フォーマットで直接エンコードされなければならない場合、これにより、圧縮効率が低くなる結果となり得る。
【0136】
本実施形態は、画素データがデータエンコーダ/デコーダ22によってどのように処理されるかに関する。具体的には、エンコード効率は、エンコードのためにデータが生成/受信される画素フォーマットとは異なる特定の圧縮フォーマットで画素を圧縮するように構成されたエンコード方式を使用して、画素バッファをエンコードする際に、構成要素ビットをインターリーブすることによって改善される。
【0137】
図4は、本実施形態によるエンコード動作を示す。図示されているエンコード動作では、入力画素データが特定の画素フォーマットで受信される(ステップ40)。次いで、入力画素データは、入力画素データをバッファリングし、受信された画素のビットを並べ替える好適なデータ調整回路に渡されて(ステップ42)、データエンコーダ/デコーダ22が処理するように構成されている画素フォーマットと一致する異なる画素フォーマットで、インターリーブされた画素データセットを生成する(ステップ43)。
【0138】
ビットがどのように並べ替えられるかを制御するために、インターリーブ制御が実行される(ステップ41)。例えば、この並べ替えは、入力画素データの画素フォーマット及びターゲット画素フォーマットに基づいて事前判定されてもよい。その場合、並べ替えは、固定マッピングに従って実行され得る。しかしながら、もちろん、他の構成も可能である。例えば、並べ替えは、ソフトウェアによって構成されてもよい。
【0139】
次いで、データエンコーダ/デコーダ22は、インターリーブされた画素をエンコードし(ステップ44)、このエンコードに基づいて圧縮された画素データを出力する(ステップ45)。
【0140】
図5は次いで、本実施形態に係るデコード動作を示す。デコード動作は、本質的に、上述のエンコード動作の逆である。
【0141】
したがって、圧縮データは、データエンコーダ/デコーダ22に入力され(ステップ50)、次いでデコードされて(ステップ51)、インターリーブされた画素フォーマットの画素データセットを生成する(ステップ52)。次に、インターリーブされた画素データをバッファリングし、逆インターリーブを実行し(ステップ54)、元の画素フォーマットの出力用の画素データを生成する(ステップ55)。
【0142】
デコード中に実行される並べ替えは、エンコード中に実行されるものの逆である。これを容易にするために、並べ替え(すなわち、
図4のステップ41におけるインターリーブ制御)を識別する情報が、データエンコーダ/デコーダ22がビットを並べ替えて所望の元のデータフォーマットでデータを再構築する方法を判定できるようにするために、データエンコーダ/デコーダ22にそうさせる圧縮データと共にデータエンコーダ/デコーダ22に提供され得る(ステップ53)。
【0143】
このようにして画素を並べ替えることによって、データエンコーダ/デコーダ22が処理のために最適化され、したがってエンコードスループットを増大させる画素のサイズに、入力画素を一致させることが可能である。
【0144】
例えば、入力画素データ内のデータ局所性に基づいて、予期されるデータ類似性を利用することによって、エンコード自体の効率を向上させることも可能である。
【0145】
この点に関して、
図6~
図9に示されるように、様々な例が想定される。
【0146】
図6は、同じ画素の異なる構成要素からのビットがインターリーブされてより良好な圧縮を提供する、第1のビットインターリーブ方法の一例を示している。具体的には、
図6に示されるように、(青色チャネルB[0]、...、B[4]の構成要素がそれぞれビット位置0、...、4に含まれ、緑色チャネルG[0]、...、G[5]の構成要素がそれぞれビット位置5、...、10に含まれ、赤色チャネルR[0]、...、R[4]の構成要素がそれぞれビット位置11、...、15に含まれる)R5G6B5画素フォーマットで受信された画素のビットは、最上位ビットが同様のデータ値を有し、かつ、これが圧縮を容易にし得ることが予期されることに基づいて、R5G6B5画素フォーマットで受信された画素の様々な構成要素(RGB)の最上位ビットが(
図6では、最上位ビットG[5]、R[4]、G[4]、B[4]がそれぞれビット位置11~15などに含まれるように)一緒にグループ化されるような様式で並べ替えが実行されて、単一の構成要素のR16画素フォーマットへと並べ替えられる。
【0147】
図7は、異なる画素の同じ構成要素からのビットがインターリーブされる、別のビットインターリーブ方法の一例を示している。例えば、
図7では、2つのR4G4B4A4画素が、エンコードのために1つのR8G8B8A8画素に一緒に結合される。エンコードを容易にするために、2つの異なる画素の(RGB構成要素の)同じ構成要素ビットは、異なる画素の赤色構成要素ビットの全てが一緒にグループ化されるように、一緒にグループ化される。(簡潔にするため、
図7は、ビット位置8~31のみを示すことに留意されたい。)
【0148】
重ねて、異なる構成要素間に予期されるデータ類似性が存在し得るため、より良好な圧縮を提供する助けとなり得る。
【0149】
図6及び
図7の両方の例では、2つ以上のより小さい画素が一緒に結合されて、処理のためのより大きな画素が得られる。しかしながら、入力画素フォーマットが、所望のエンコード画素フォーマットよりも大きい場合もあり得る。その場合、
図8に示されるように、より大きい画素は、ターゲットサイズの複数のより小さい画素に分割され得る。
【0150】
例えば、R16G16B16A16フォーマットの入力画素が、R8G8B8A8フォーマットでエンコードされることが望ましい場合、入力画素のそれぞれの16ビット構成要素は、
図8に示されるように、2つの8ビット構成要素部分に分割されてもよい。重ねて、これは、
図6の例と同様に、最上位ビットが一緒にグループ化されるように行われることが望ましい。
【0151】
図9は、YUVフォーマットの入力画素がエンコードのためにRGBフォーマットに並べ替えられる別の例を示す。例えば、
図9は、R4G4B4画素としてエンコードされるYUV420フォーマットの2つの2×2入力ブロックの例を示す。この例では、2×2ブロックの順序は、構成要素Y0Y1Y2Y3が彩度値U0V0を共有するのに対し、構成要素Y4Y5Y6Y7が彩度値U1V1を共有するようになっている。次いで、Y0Y1Y2Y3構成要素がR4G4B4画素の赤色チャネルにマッピングされるように、2つの2×2ブロック内部でシャッフルされるが、Y4Y5Y6Y7マップは青色チャネルにマッピングされる。
【0152】
これは、YUVフォーマットの元の画素(すなわち、構成要素Y0Y1Y2Y3を有する第1の画素及び構成要素Y4Y5Y6Y7を有する第2の画素)が、より良好な圧縮を提供することが予期され得る同じRGB構成要素にマッピングされることを確実にするのに役立つ(これは、RチャネルにマッピングされたY0Y1Y2Y3構成要素値が、同様のデータ値を有し、したがって圧縮が良好になると予期されるからである)。
【0153】
本実施形態は、メモリシステム内のデータを圧縮されたフォーマットで記憶するためにキャッシュシステムからメモリシステムに書き込まれているときにデータをエンコードするコンテキストで上述されてきたが、本明細書に記載される技術は、例えば、ストレージに書き込まれている又は送信されているときに、データを圧縮することが望ましい任意の他の例に使用され得ることが理解されるであろう。
【0154】
更に、本実施形態は、グラフィック処理システムにおけるグラフィックプロセッサを具体的に参照して上述されてきたが、出願人らは、上述した本実施形態の様式でデータエンコーダを使用することが、グラフィックプロセッサのコンテキストにおいてのみではなく、他のデータ処理構成及びシステムにおいて有用であることを認識した。
【0155】
前述の詳細な説明は、例示及び説明の目的のために提示されている。本明細書に記載される技術を、網羅すること、又は開示される正確な形態に限定することを意図するものではない。上記の教示に照らして、多くの修正及び変形が可能である。記載される実施形態は、本明細書に記載される技術及びその実用的な用途の原理を最良に説明するために選択され、それによって、当業者が、様々な実施形態において想定される特定の用途に適した様々な修正を用いて、本明細書に記載される技術を最良に利用することが可能となる。範囲は、本明細書に添付の特許請求の範囲によって定義されることが意図されている。