説明

グラフィックス処理システム

【課題】グラフィックス処理システムにおけるフレームバッファ生成および類似のオペレーションに対する改善を提供すること。
【解決手段】トランザクション排除ハードウェアユニット5は、タイルベースのグラフィックスプロセッサによって生成されるタイルのメモリ2内のフレームバッファへの書き込みを制御する。トランザクション排除ハードウェアユニット5は、タイル毎にタイルの内容を表す署名を生成する署名生成器20を有する。署名比較器23は、グラフィックスプロセッサからの新しいタイルの署名をフレームバッファ内のタイルの署名と比較する。署名が一致しない場合、署名比較器23は、書き込みコントローラ24を制御して、新しいタイルをフレームバッファに書き込む。署名が一致する場合、フレームバッファにデータは何も書き込まれず、既存のタイルがフレームバッファ内に残る。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、グラフィックス処理システムに関するものであり、具体的には、グラフィックス処理システムにおけるフレームバッファ生成および類似のオペレーションに関するものである。
【背景技術】
【0002】
当技術分野で知られているように、表示すべきグラフィックス処理システムの出力は、通常、表示する準備が整っているときにメモリ内のいわゆる「フレームバッファ」に書き込まれる。次いで、フレームバッファは、ディスプレイコントローラによって読み出され、表示するためディスプレイ(例えば、画面またはプリンタ)に出力される。
【0003】
グラフィックスデータをフレームバッファを書き込むときに、比較的かなりの量の電力およびメモリ帯域幅が消費されるが、特に、フレームバッファがグラフィックスプロセッサの外部にあるメモリ内に常駐する場合、典型的にはそうである。例えば、新しいフレームを毎秒30フレーム以上のフレームレートでフレームバッファに書き込む必要があり、またそれぞれのフレームは、特に高解像度ディスプレイおよび高精細度(HD)グラフィックスのために、かなりの量のデータを必要とすることがある。
【0004】
したがって、フレームバッファオペレーションの電力消費を低減することを試みることが望ましいことは知られており、さまざまな技術が、このような低減を達成することを試みるために提案されている。
【0005】
これらの技術は、オンチップ(外部とは反対に)フレームバッファの形成、フレームバッファキャッシング(バッファリング)、フレームバッファ圧縮および動的色深度制御を含む。しかし、これらの技術のそれぞれは、それぞれの欠点と不利点を有する。
【0006】
例えば、オンチップフレームバッファを使用すると、特に、高解像度ディスプレイの場合に、大量のオンチップリソースが必要になることがある。フレームバッファキャッシングまたはバッファリングは、フレーム生成が典型的にはフレームバッファ表示に対し非同期であるため、実用的とはいえない。フレームバッファ圧縮は役に立つことがあるが、必要なロジックは比較的複雑なものであり、フレームバッファフォーマットが変更される。不可逆フレームバッファ圧縮を使用すると、画質が低下する。動的色深度制御も、同様に、不可逆な方式であり、したがって、画質が低下する。
【発明の概要】
【発明が解決しようとする課題】
【0007】
したがって、出願人は、グラフィックス処理システムにおけるフレームバッファ生成および類似のオペレーションに対する改善の余地がまだあると確信している。
【課題を解決するための手段】
【0008】
本発明の第1の態様によれば、グラフィックス処理システムによって生成されるデータがデータの出力配列を出力バッファ内に形成するために使用されるグラフィックス処理システムを操作する方法が提供され、この方法は、
グラフィックス処理システムがデータの出力配列の特定の領域を表すデータのブロックを出力バッファに書き込むことによってデータの出力配列を出力バッファ内に格納するステップと、
データのブロックが出力データ配列に対して生成されているときに、グラフィックス処理システムがデータのそのブロックをデータの少なくとも1つの他のブロックと比較し、この比較に基づいてデータの生成されたブロックを出力バッファに書き込むかどうかを決定するステップとを含む。
【0009】
本発明の第2の態様によれば、グラフィックス処理システムが実現され、このシステムは、
グラフィックスプロセッサによって供給されるべきデータの出力配列を形成するためのデータを生成するための手段を備えるグラフィックスプロセッサと、
グラフィックスプロセッサによって生成されたデータを、データの配列の特定の領域を表すデータのブロックを出力バッファに書き込むことによってデータの配列として出力バッファ内に格納するための手段とを備え、
グラフィックス処理システムは、
出力データ配列に対して生成されたデータのブロックをデータの少なくとも1つの他のブロックと比較し、その比較に基づいてデータの生成されたブロックを出力バッファに書き込むかどうかを決定するための手段をさらに備える。
【0010】
本発明の第3の態様によれば、グラフィックスプロセッサが実現され、このプロセッサは、
グラフィックスプロセッサによって生成され、グラフィックスプロセッサによって供給されるべきデータの出力配列の特定の領域を表す、データのブロックを出力バッファに書き込むための手段と、
出力データ配列に対して生成されたデータのブロックをデータの少なくとも1つの他のブロックと比較し、その比較に基づいてデータのブロックを出力バッファに書き込むかどうかを決定するための手段とを備える。
【0011】
本発明は、データの出力配列の特定の領域を表すデータのブロック(これは、例えば、グラフィックスプロセッサによって生成されるレンダリング済みタイルとすることも可能であり、また好ましい一実施形態では、グラフィックスプロセッサによって生成されるレンダリング済みタイルである)を出力バッファに書き込むことによってデータの出力配列(これは、例えば、表示されるべきフレームとすることも可能であり、また好ましい一実施形態では、表示されるべきフレームである)が出力バッファ(これは、例えば、フレームバッファとすることも可能であり、また好ましい一実施形態では、フレームバッファである)に格納されるグラフィックス処理システムに関するものであり、またそのようなグラフィックス処理システムにおいて実装される。
【0012】
したがって、本質的に、本発明は、グラフィックス処理システムの「最終」出力全体が、単一の出力「フレーム」丸ごと直接的にではなく、ブロック毎にメモリ内に格納されるグラフィックス処理システムに関係するものであり、またそのようなグラフィックス処理システムにおいて実装されることが意図されている。
【0013】
例えば、また当業者であれば理解するように、これは、タイルベースのグラフィックス処理システムに当てはまり、その場合、本発明の仕方で考察され、比較されるデータのそれぞれのブロックは、グラフィックスプロセッサのレンダリングプロセスが生成する「タイル」に対応するものとしてよい(また好ましい一実施形態では対応する)(ただし、以下でさらに説明するように、このことは本質的ではない)。
【0014】
(当技術分野で知られているように、タイルベースのレンダリングでは、レンダリングプロセスの二次元出力配列またはフレーム(「レンダーターゲット」)(例えば、また典型的には、レンダリングされているシーンを表示するために表示されることになる)は、レンダリングプロセスのために、通常「タイル(tiles)」と称される、複数のより小さな領域に細分または区分化される。タイル(部分領域)は、それぞれ個別にレンダリングされる(典型的には次から次へと)。次いで、レンダリング済みタイル(部分領域)は、再結合されて、例えば表示するために、完全な出力配列(フレーム)(レンダーターゲット)を形成する。
【0015】
「タイリング(tiling)」および「タイルベース(tile based)」レンダリングに通常使用される他の用語として、「チャンキング(chunking)」(部分領域は、「チャンク(chunks)」と称される)および「バケット(bucket)」レンダリングが挙げられる。「タイル」および「タイリング」という用語は、本明細書では、便宜上使用されるものであるが、これらの用語は、すべての代替えおよび同等の用語および技術を包含することが意図されていることは理解されるであろう。
【0016】
本発明では、それぞれの出力データブロック(例えば、レンダリング済みタイル)が準備整い次第単純にフレームバッファに書き出されるのではなく、その代わりに、出力データブロックは、他の1つまたは複数のデータブロック(例えば、1つまたは複数のタイル)(少なくとも1つのデータブロック)と最初に比較され、次いで、その比較に基づいて(新しい)データブロックを出力(例えば、フレーム)バッファに書き込む(かどうか)が判定される。
【0017】
以下でさらに詳しく説明されるように、出願人は、このプロセスを使用することにより、使用時に出力(例えば、フレーム)バッファに書き込まれるデータブロック(例えば、レンダリング済みタイル)の個数を著しく減らし、それにより、出力(例えば、フレーム)バッファトランザクションの回数を著しく減らし、したがって、出力(例えば、フレーム)バッファオペレーションに関係する電力およびメモリ帯域幅消費を著しく減らすことができることを発見し、理解した。
【0018】
例えば、新たに生成されたデータブロックが出力バッファ内にすでに存在している、またはすでに存在することになるデータブロック(例えば、レンダリング済みタイル)と同じであるとわかった場合、新たに生成されたデータブロックを出力バッファに書き込む必要はないと判定することができ(また好ましくは判定し)、それにより、出力バッファ「トランザクション」が不要になる。
【0019】
さらに、出願人は、例えばフレーム毎に変化しない画像のいくつかの領域(空、カメラ位置が静止しているときのプレイフィールド、多くのアプリケーションに対するユーザーインターフェイスの大半など)において、新しいデータブロック(例えば、レンダリング済みタイル)が出力(例えば、フレーム)バッファにすでに存在しているか、またはすでに存在することになるデータブロック(例えば、レンダリング済みタイル)と同じであるか、または類似しているのは比較的よくありうることと認識している。したがって、そのような領域(例えばタイル)を識別し、次いで、所望するなら、そのような領域(例えばタイル)を出力(例えば、フレーム)バッファに再び書き込むことを回避することを行いやすくすることによって、出力(例えば、フレーム)バッファへの書き込みトラヒック(書き込みトランザクション)の大幅節減を達成することができる。
【0020】
例えば、出願人は、いくつかのよくあるゲームの場合に、それぞれのフレーム内のレンダリング済みタイルの最大20%(またはさらにそれ以上)が変更されていないことがあることを発見した。フレーム内のタイルの20%が、(本発明を使用することによって)フレームバッファに再書き込みされない場合、毎秒30フレーム(fps)のHD1080pのグラフィックスでは、推定される電力およびメモリ帯域幅の節減量は、約30mWおよび50MB/sとなることがある。さらに多くのレンダリング済みタイルがフレーム毎に変化しない場合、さらに大きな電力および帯域幅の節減が達成されうる。例えば、レンダリング済みタイルの90%が再書き込みされない(変更されていない)場合、この節減量は、135mWおよび220MB/sのオーダーとしてよい。
【0021】
したがって、本発明を使用し、不要な出力(例えば、フレーム)バッファトランザクションの識別および排除を事実上しやすくすることによって、フレームおよび他の出力バッファオペレーションに使用される消費電力およびメモリ帯域幅を著しく低減することができる。
【0022】
さらに、上述の従来技術の方式に比べて、本発明では、必要なオンチップハードウェアが比較的わずかで済み、不可逆プロセスとすることができ、またフレームバッファフォーマットを変更しない。また、既存のフレームバッファ電力低減方式と連携して、またそれを補完する形で容易に使用することができ、これにより、所望するならさらに節電しやすくすることができる。
【0023】
グラフィックス処理システムによって生成されるデータを使用して形成されるデータの出力配列は、好適な、望ましいそのようなデータの配列、つまり、グラフィックスプロセッサを使用して生成することができるデータの配列とすることができる。特に好ましい一実施形態では、これは、表示するための出力フレームを含むが、これは、グラフィックステクスチャ(例えば、レンダー「ターゲット」が、グラフィックスプロセッサを使用して生成するテクスチャである(例えば、「テクスチャにレンダー」オペレーションにおいて))またはグラフィックスプロセッサシステムの出力の書き込み先となる他の表面などのグラフィックスプロセッサの他の出力を含むこともできるか、またはその代わりに含むことができる。
【0024】
同様に、データの書き込み先となる出力バッファは、好適なそのような任意のバッファを含むことができ、また好適な、望ましい仕方でメモリ内に構成することができる。例えば、これは、オンチップバッファでもよいが、外部バッファでもよい(また、実際には、以下で説明されるように、外部バッファ(メモリ)である可能性が高いものとしてよい)。同様に、これは、この目的に合わせた専用メモリとすることができるか、または他のデータにも使用されるメモリの一部とすることもできる。好ましい一実施形態では、出力バッファは、グラフィックス処理システム用の、および/またはグラフィックス処理システムの出力の供給先となるディスプレイ用のフレームバッファである。
【0025】
生成されたデータブロックが比較される他の1つまたは複数のデータブロックを必要に応じて選択することができる。特に好ましい一実施形態では、これらは、出力バッファ内にすでに格納されているデータブロックである。
【0026】
したがって、特に好ましい一実施形態では、データブロック比較は、出力データ配列に対して生成されている(例えば、好ましくは出力バッファを書き込む準備ができている)データのブロックを出力バッファ内にすでに格納されているデータの少なくとも1つの他のブロックと比較する(次いで、その比較に基づいてデータの新しいブロックを出力バッファに書き込むかどうかを決定する)ステップ(または手段)を含む。
【0027】
この場合、出力バッファ内にすでに格納されているデータの(複数の)ブロックは、現在の出力データ配列に対してすでに格納されているデータのブロックとしてよいが、特に好ましい一実施形態では、前のデータ配列(つまり、出力バッファ内にすでに格納されているデータ配列)からのデータの1つの(または複数の)ブロックであるか、またはそのようなブロックでもある。したがって、好ましい一実施形態では、生成されたデータブロックは、前の出力データ配列からの1つまたは複数のブロックと比較される。好ましい一実施形態では、生成されたデータブロックは、前の出力データ配列からの1つまたは複数のブロックとのみ比較される。
【0028】
したがって、特に好ましい一実施形態では、この比較は、出力(例えば、フレーム)バッファ内にすでに格納されている前のデータ配列からのデータブロックを含む。次いで、これにより、類似のデータブロックを、前のデータ配列からの出力バッファ内にすでに存在している場合に、再び現在の(新しい)データ配列に対する出力バッファに書き込まなくて済むようにできる。これは、一連の類似のデータ配列(ビデオシーケンスのフレームなど)が生成されている場合に特に有用であると思われる。
【0029】
他の好ましい実施形態では、データブロック比較プロセスは、同じデータ配列(現在のデータ配列)のみについて生成されているブロックに関して(ブロックを比較することによって)実行される。
【0030】
この場合、例えば、出力バッファにすでに格納されている現在の配列に対するデータブロックとの比較を行うことができ、および/または現在の出力配列について生成されているが、出力バッファにはまだ格納されていない他のブロックとの比較を行うことができる(好ましい一実施形態では、そのような比較を行う)。
【0031】
この場合、データ配列に書き込まれるべきそれぞれのデータブロックが生成されるときに、これは、別の1つのデータブロックまたはデータ配列の複数のブロックと比較され、次いで、新しいデータブロックが、その比較に基づいて書き込まれるか、または書き込まれないようにできる。したがって、特に好ましい一実施形態では、データ配列に対するデータブロックが完成したときに、そのデータブロックをデータ配列に対する少なくとも1つの他のデータブロックと比較し、比較に基づいて完成したデータブロックをデータ配列に書き込むかどうかを決定するステップまたは手段がある。
【0032】
特に好ましい一実施形態では、今の(現在の)データ配列に対するデータブロックおよび出力バッファにすでに格納されている前のデータ配列のデータブロックの両方とのデータブロック比較が行われる。
【0033】
したがって、好ましい一実施形態では、出力バッファ内に格納されるべき、またはすでに格納されているデータブロックとの比較が行われる。
【0034】
現在の出力データ配列に対する他のデータブロックとの比較があり、これによりその配列に対して生成されたデータブロックが、注目しているデータブロック位置に対して出力バッファ内にデータブロックがすでにないとしても出力バッファに書き込むことができない場合、データブロックそれ自体は出力バッファに書き込めないけれども、好ましくは、データ配列の他のブロックが処理されなければならないことを示す注目しているブロック位置に対するメタデータが注目するブロック位置について生成され、格納される。そこで、データ配列を使用するか、または処理することになっているデバイスは、注目するブロックについてデータ配列の他のどのデータブロックを処理すべきかを識別することができる。
【0035】
考察され、比較されるデータのブロックは、それぞれ、出力バッファ内に格納されるべきデータの出力配列全体の好適な、所望の任意の領域(エリア)を表すことができる。データの出力配列全体が、それぞれ出力配列全体の一部を表す複数の識別可能なより小さな領域に分割または区分化される限り、またそれに応じて本発明の仕方で識別され、比較されうるデータのブロックとして表すことができる限り、データのブロックへの出力配列の細分を必要に応じて実行することができる。
【0036】
データのそれぞれの生成されたブロックは、好ましくは、出力配列全体の異なる部分(部分領域)を表す(これらのブロックは、所望するなら重なり合うことも可能である)。それぞれのブロックは、配列内の複数のデータ位置などの、出力配列の適切な部分(エリア)を表すであろう。好適なデータブロックサイズは、出力データ配列内において8×8、16×16、または32×32のデータ位置となる。
【0037】
特に好ましい一実施形態では、データの出力配列は、規則正しいサイズおよび形状の領域(データのブロック)に、好ましくは正方形または矩形の形の領域に分割される。しかし、これは本質的でなく、他の配置構成も、所望するなら使用することが可能である。
【0038】
特に好ましい一実施形態では、それぞれのデータブロックは、グラフィックスプロセッサがそのレンダリング出力として生成するレンダリング済みタイルに対応する。これは、本発明を実装する特に単純明快な方法であり、この方法では、グラフィックスプロセッサがレンダリングタイルを直接生成し、したがって、本発明の仕方で考察され、比較されるデータブロックを「生成する」ためにさらなる処理を必要としない。したがって、この場合、グラフィックスプロセッサによって生成されるそれぞれのレンダリング済みタイルが出力(例えば、フレーム)バッファに書き込まれるときに、他のレンダリング済みの1つまたは複数のタイルと比較され、次いで、その比較に基づいて、新たにレンダリング済みタイルが出力バッファに書き込まれるか、または書き込まれない。
【0039】
したがって、本発明の第4の態様によれば、タイルベースのグラフィックス処理システムを操作する方法であって、グラフィックス処理システムによって生成されるレンダリング済みタイルが、生成された後、出力バッファに書き込まれる、方法が提供され、この方法は、
出力バッファに出力するためのタイルが完成したときに、グラフィックス処理システムがそのタイルを出力バッファにすでに格納されているか、または格納すべき少なくとも1つの他のタイルと比較し、この比較に基づいて完成したタイルを出力バッファに書き込むかどうかを決定するステップを含む。
【0040】
本発明の第5の態様によれば、グラフィックス処理システムが実現され、このシステムは、
グラフィックスプロセッサによって供給されるべき出力の出力タイルを生成するための手段を備えるタイルベースのグラフィックスプロセッサと、
グラフィックスプロセッサによって生成される出力タイルを、出力タイルが完成した後に出力バッファに書き込むための手段とを備え、
グラフィックス処理システムは、
完成した出力タイルを出力バッファにすでに格納されているか、または格納すべき少なくとも1つのタイルと比較し、その比較に基づいて完成したタイルを出力バッファに書き込むかどうかを決定するための手段をさらに備える。
【0041】
本発明の第6の態様によれば、タイルベースのグラフィックスプロセッサが実現され、このグラフィックスプロセッサは、
グラフィックスプロセッサによって供給されるべき出力の出力タイルを生成するための手段と、
グラフィックスプロセッサによって生成される出力タイルを、出力タイルが完成した後に出力バッファに書き込むための手段と、
グラフィックスプロセッサが完成させた出力タイルを出力バッファにすでに格納されているか、または格納すべき少なくとも1つのタイルと比較し、その比較に基づいて完成したタイルを出力バッファに書き込むかどうかを決定するための手段とを備える。
【0042】
当業者であれば理解するように、本発明のこれらの態様および実施形態は、適宜、本明細書で説明されている本発明の好ましい、およびオプションの機能の1つまたは複数あるいはすべてを備えることができ、好ましくは備える。したがって、例えば、好ましい一実施形態における出力バッファは、フレームバッファである。
【0043】
本発明のこれらの態様および配置構成において、レンダーターゲット(出力データ配列)は、レンダリングのために、所望の、および好適な任意のサイズおよび形状のいくつかの(レンダリング)タイルに分割することができる。レンダリング済みタイルは、好ましくは、当技術分野で知られているように、すべて同じサイズおよび形状であるが、ただし、これは本質的なことではない。好ましい一実施形態では、それぞれのレンダリング済みタイルは、矩形であり、好ましくは、サイズに関して8×8、16×16、または32×32のサンプリング位置をとる。
【0044】
特に好ましい一実施形態では、本発明は、レンダリングプロセスが操作する(生成する)タイルと異なるサイズおよび/または形状のデータブロックを使用して、前記に加えて、または前記の代わりに実行されうるが、好ましくは、前記に加えて、または前記の代わりに実行される。
【0045】
例えば、好ましい一実施形態では、本発明において考察され、比較される1つの、またはそれぞれのデータブロックは、一組の複数の「レンダリング済み」タイルで構成され、および/またはレンダリング済みタイルの小部分のみを含みうる。これらの場合には、実際には、グラフィックスプロセッサが生成する1つまたは複数のレンダリング済みタイルから所望のデータブロックを「生成する」中間段階がありうる。
【0046】
好ましい一実施形態では、同じブロック(領域)構成(サイズおよび形状)が、データの出力配列全体にわたって使用される。しかし、他の好ましい実施形態では、異なるブロック構成(例えば、そのサイズおよび/または形状に関して)が、所定の出力データ配列の異なる領域に対して使用される。したがって、好ましい一実施形態では、異なるデータブロックサイズが、同じ出力データ配列の異なる領域に対して使用されうる。
【0047】
特に好ましい一実施形態では、ブロック構成(例えば、考察されているブロックのサイズおよび/または形状に関して)は、使用中に、例えば、出力データ配列に基づいて出力データ配列(例えば、出力フレーム)上で変更することができる。最も好ましくは、ブロック構成は、排除される(回避される)出力バッファトランザクションの数または割合に応じて、例えば、また好ましくは、使用中に適応変更することができる。例えば、また好ましくは、特定のブロックサイズを使用しても、ブロックが出力バッファに書き込まれる必要がない確率が低いだけであることがわかっていれば、データのブロックを出力バッファに書き込まなくて済むようにする確率を高めることを試みるため、考察されているブロックサイズをデータのその後の出力配列に対して変更する(例えば、また好ましくは、小さくする)ことが可能である。
【0048】
データブロックサイズを使用中に変更する場合、その変更は、例えば、出力データ配列全体にわたって、または出力データ配列の特定の部分のみにわたって、望み通りに実行できる。
【0049】
新たに生成された出力データブロック(例えば、レンダリング済みタイル)と他のデータブロックとの比較を、望み通りに、また好適な任意の仕方で実行することができる。比較は、好ましくは、新しいデータブロックが他のデータブロックと同じである(または少なくとも十分に類似している)かどうかを判定できるような比較である。したがって、例えば、新しいデータブロックの内容の一部または全部を、他のデータブロックの内容の一部または全部と比較することができる(好ましい一実施形態では、これが実行される)。
【0050】
特に好ましい一実施形態では、この比較は、新しい出力データブロックの内容を表し、および/または新しい出力データブロックの内容から導出される情報を、他のデータブロックの内容を表し、および/または他のデータブロックの内容から導出される情報と比較して、例えば、また好ましくは、データブロックの類似度かあるいはそれと違う何かを評価することによって実行される。
【0051】
それぞれのデータブロックの内容を表す情報(例えば、レンダリング済みタイル)は、好適な任意の形式のものとしてよいが、好ましくは、データブロック上の内容に基づくか、またはデータブロック上の内容から導出される。最も好ましくは、これは、データブロックの内容から生成されるか、またはデータブロックの内容に基づくデータブロックに対する「署名」の形をとる。このようなデータブロックの内容の「署名」は、例えば、また好ましくは、データブロックから導出される(データブロックに関して生成される)チェックサム、CRC、またはハッシュ値などの、データブロックの内容を表すと考えることができる好適な任意の一組の導出情報を含むことができる。好適な署名としては、CRC32などの標準的なCRC、またはMD5、SHA-1などの他の形式の署名が挙げられる。
【0052】
したがって、特に好ましい一実施形態では、データブロックの内容を示すか、または表す、および/またはデータブロックの内容から導出される署名は、比較されるべきデータブロック毎に生成され、この比較プロセスは、各データブロックの署名を比較するステップを含む。
【0053】
したがって、特に好ましい一実施形態では、システムが本発明の仕方で動作している場合、CRC値などの署名は、出力データ配列に対して生成されるデータブロック毎に(例えば、また好ましくは、生成される出力レンダリング済みタイル毎に)生成される。CRC関数またはハッシュ関数などの好適な任意の「署名」生成プロセスを使用して、データブロックに対する署名を生成することができる。好ましくは、データブロック(例えば、タイル)データは、データブロックの署名を生成する際に、選択された、好ましくは特定のもしくは所定の、順序で処理される。これは、消費電力を低減するのにさらに役立ちうる。好ましい一実施形態では、データは、ヒルベルト順序(ヒルベルト曲線)を使用して処理される。
【0054】
必要な場合に、出力(例えば、フレーム)バッファ内に格納されているデータブロック(例えば、レンダリング済みタイル)に対する署名を適宜格納すべきである。好ましくは、出力(例えば、フレーム)バッファにより格納される。次いで、署名を比較する必要が生じたときに、データブロックに対する格納されている署名を適宜取り出すことができる。
【0055】
好ましくは、1つまたは複数のデータブロックに対する、および好ましくは複数のデータブロックに対する、署名を、例えばグラフィックスプロセッサそれ自体のローカルの比較段階または手段に、例えば、オンチップ署名(例えば、CRC)バッファ内にキャッシュされるようにでき、またキャッシュされる。この方法は、比較を行うたび毎に外部バッファからデータブロックの署名をフェッチする必要をなくすことができ、したがって、データブロックの署名を読み出すために使用されるメモリ帯域幅を低減するのに役立つ。
【0056】
データブロック署名などのデータブロック内容の表現が、ローカルにキャッシュされる、例えば、オンチップバッファ内に格納される場合、データブロックは、好ましくは、ヒルベルト順序などの好適な順序で処理され、これにより、署名などがローカルにキャッシュされている(オンチップバッファ内に格納されている)(複数の)データブロックと一致する可能性が高まる。
【0057】
当業者であれば理解するように、データブロック(例えば、レンダリング済みタイル)に対する署名の生成および格納は、ある程度の処理およびメモリリソースを必要とするけれども、出願人は、これよりも、本発明によって実現できる電力消費およびメモリ帯域幅に関する潜在的節減の方が勝ると確信している。
【0058】
例えば、1つの、例えばRGBA、データブロック(例えば、レンダリング済みタイル)に対する単一の署名を生成することが可能であるか、またはそれぞれの色平面に対し別の署名(例えば、CRC)を生成することが可能である。同様に、色変換を実行し、別の署名を必要に応じてY、U、V平面に対し生成することが可能である。
【0059】
当業者であれば理解するように、データブロックに対し生成される署名が長ければ長いほど(署名がデータブロックをより正確に表すほど)、署名間の誤った「一致」(したがって、例えば、新しいデータブロックを出力バッファに書き込まないという誤り)が生じる可能性が低くなる。そこで、一般的に、必要な精度に応じて(および例えば署名生成および処理に必要なメモリおよび処理リソースに関するトレードオフとして)、使用する署名(例えば、CRC)を長くも短くもすることが可能である。
【0060】
特に好ましい一実施形態では、署名は、データブロックの内容の他の態様と比較してデータブロックの内容の特定の態様に向けて(例えば、また好ましくは、データブロックに対するデータ(データブロックの内容を表すデータ)の特定の態様または部分に対して)重み付けされる。これにより、例えば、所定の全長を持つ署名が、出力全体に対しより効果のあるデータブロック内容(データ)の部分に対し署名を重み付けすることによって全体的な結果を改善することができる(例えば、画像を見る人によって知覚されるように)。
【0061】
好ましいそのような一実施形態において、色のLSBビットと比較して色のMSBビットに対してより長い(より正確な)署名が生成される。(一般に、色のLSBビットは、MSBビットに比べてあまり重要でなく、したがって、出願人は、異なる出力データブロック(例えば、レンダリング済みタイル)に対するLSBビットを比較する際の誤差は、出願人の考えるところでは、出力全体に対する影響がそれほど悪くないため、LSBビットに対して比較的精度の落ちる署名を使用しても許容されうると認識している。)
【0062】
例えば、アプリケーション、例えば、ディスプレイ、の要件に応じて、異なるアプリケーションなどに対する異なる長さの署名を使用することも可能である。これは、消費電力を低減するのにさらに役立ちうる。したがって、好ましい一実施形態では、使用される署名の長さは、使用中に変更することができる。好ましくは、署名の長さは、使用中のアプリケーションに応じて変更することができる(使用しているアプリケーションに応じて適応チューニングすることができる)。
【0063】
特に好ましい一実施形態では、完成したデータブロック(例えば、レンダリング済みタイル)は、比較の結果として、そのデータブロックが出力配列に対する他のデータブロックと(例えば、また好ましくは、出力バッファにすでに格納されているデータブロックと)同じであると考えるべきと判定される場合に出力バッファに書き込まれない。このことから、出力バッファ内にすでに格納されているか、または格納されることになっているデータブロックと同じであると判定されるデータブロックは、出力バッファに書き込まなくて済む。
【0064】
したがって、特に好ましい一実施形態では、本発明において、データブロックの内容(例えば、レンダリング済みタイル)を表す署名を、出力(例えば、フレーム)バッファに格納されているか、格納されるべきであるデータブロック(例えば、タイル)の署名を比較し、署名が同じである場合に(新しい)データブロック(例えば、タイル)を出力バッファに書き込まない(が、署名が異なる場合には、(新しい)データブロック(例えば、タイル)を出力バッファに書き込む)。
【0065】
新しいブロックが出力バッファに書き込まれないように、一致すると考えられるブロックについて比較されるデータブロック間(例えば、それらの署名間)で正確な一致を比較プロセスが必要とする場合、誤って一致するブロックによる効果を無視すれば、本発明は、実際には、可逆プロセスを構成するであろう。比較プロセスが、十分に類似度の高い一致(ただし正確な一致ではなく)を必要とするだけであれば、このプロセスは、データブロックがこれの正確な一致でないデータブロックで置換されうるという点で、「不可逆」となる。
【0066】
現在の、完成しているデータブロック(例えば、レンダリング済みタイル)(例えば、また好ましくは、その署名)は、1つの、または複数の、他のデータブロック(例えば、出力バッファ内にすでに格納されているデータブロック)と比較することができる。
【0067】
好ましくは、(新しい)データブロックが比較される比較相手となるデータブロック(例えば、タイル)のうちの少なくとも1つ(または(新しい)データブロックが比較される比較相手となるデータブロックのみ)は、完成している、新しいデータブロックの書き込み先と同じ位置(同じデータブロック(例えば、タイル)位置)を占有する出力バッファ内に格納されているデータブロックを含む。したがって、好ましい一実施形態では、新たに生成されたデータブロックは、出力バッファ内にすでに格納されている同等のデータブロック(または適切であれば複数のブロック)と比較される。
【0068】
好ましい一実施形態では、現在の(新しい)データブロックは、単一の他のデータブロックのみと比較される。
【0069】
好ましい他の実施形態では、現在の、完成しているデータブロック(例えば、その署名)は、(例えば、出力バッファ内にすでに格納されている)複数の他のデータブロック(の署名)と比較される。これは、出力データ配列内の他の位置にあるデータブロックと同じであるデータブロック書き込みをなくすことができるため、出力バッファに書き込む必要のあるデータブロックの個数をさらに減らすのに役立ちうる。
【0070】
この場合、データブロックがデータ配列内の異なる位置にあるデータブロックと一致する場合、システム側で、好ましくは、注目するデータブロック位置に対してどの他のデータブロックを使用すべきかを示す情報を出力し、格納する。例えば、データブロックが異なるデータブロック位置(座標)を有する出力データ配列内の他のデータブロックと同じであるかどうかを示すリストを保持するとよい。次いで、例えば、表示することを目的としてデータブロックを読み込むときに、対応するリスト中のエントリを読み込んで、それが、例えば、「null」であれば、「通常の」データブロックが読み込まれるが、異なるデータブロックのアドレスを含んでいる場合には、その異なるデータブロックが読み込まれる。これも、データブロックが現在の出力配列に対し生成される他のデータブロック(つまり、出力バッファ内に必ずしもすでには格納されていない)と比較される場合に、上述のように、好ましくは実行され、次いでこれにより、その場合に出力配列を読み込むデバイスは、データ配列に対して出力バッファに書き込まれなかったデータブロックの代わりにどのデータブロックを処理するべきかを知ることができる。
【0071】
データブロックが、複数の他のデータブロック(例えば、出力バッファ内にすでに格納されている)と比較される場合、それぞれのデータブロックを出力配列に対する他のすべての(例えば、既存の)データブロック(例えば、出力バッファ内の他のすべてのブロック)と比較することが可能であるが、好ましくは、それぞれのデータブロックは、出力配列に対する他のデータブロックの全部ではなく一部と、例えば、また好ましくは、(例えば、出力バッファ内の)新しいデータブロックと同じ、出力データ配列のエリア内のデータブロックとのみ比較される(例えば、これらのデータブロックは新しいデータブロックの意図された位置を覆い、取り囲む)。これは、出力配列内のすべてのデータブロックをチェックしなくても、データブロックの一致を検出する可能性を高める。
【0072】
好ましい一実施形態では、出力データ配列に対して生成されるあらゆるデータブロックは、他の1つまたは複数データブロックと比較される。しかし、これは本質的なことではなく、したがって、他の好ましい実施形態では、所定の出力データ配列(例えば、出力フレーム)のデータブロックの全部ではなく一部に関して比較が実行される。
【0073】
特に好ましい一実施形態では、各出力データ配列に対する他の1つまたは複数のデータブロックと比較されるデータブロックの個数は、例えば、また好ましくは、出力配列毎に(例えば、フレーム毎に)、または出力配列(例えば、フレーム)の複数のシーケンスに基づいて変更される。これは、好ましくは、連続する出力データ配列(例えば、フレーム)間の予期される相関に基づく(か、または基づかない)。
【0074】
したがって、本発明は、好ましくは、所定の出力データ配列に対して他の1つまたは複数のデータブロックと比較されるべき、出力バッファに書き込まれるべきデータブロックの個数を選択するための手段またはそのようなデータブロックの個数を選択するステップを含む。
【0075】
好ましくは、異なる出力データ配列間にほとんど相関がない(と予期される)場合には比較対象とされるデータブロックは少ないが(例えば、その場合に比較的少ないデータブロック上で署名が生成される)、異なる出力データ配列間に多くの相関がある(多くの相関があることが予期される)場合には比較段階の対象となる出力データ配列内のデータブロック(また署名がこれらのデータブロックに対して生成されている)は多い(および好ましくはすべてそうである)(したがって、多数の新たに生成されたデータブロックは、出力バッファ内で重複することが予期されるであろう)。このことは、排除されるデータブロック書き込みトランザクションの数が少ないことが予期される場合に実行される(電力およびリソースを消費する)比較および署名生成などの量を低減することに役立ち(出力データ配列間に相関がほとんどない場合)、その一方で、それが特に有利と予期される場合に(つまり、出力データ配列間の相関が多い場合に)本発明の比較プロセスの使用をなおも容易にする。
【0076】
これらの配置構成において、異なる(例えば、連続する)出力データ配列間の(予期される)相関の量は、好ましくは、この目的のために推定される。これは、望む通りに実行することができるが、好ましくは、はじめの方の出力データ配列間の相関に基づく。最も好ましくは、出力データ配列の前のペアまたはシーケンス内の一致するデータブロックの個数(例えば、また好ましくは、本発明の仕方でデータブロックを比較することによって決定されるような)、最も好ましくは、出力データ配列(例えば、出力フレーム)の直前のペア内の一致するデータブロックの個数は、現在の出力データ配列に対する予期される相関の尺度として使用される。したがって、特に好ましい一実施形態では、前の出力データ配列内で一致することが判明しているデータブロックの個数を使用して、現在の出力データ配列内のいくつのデータブロックを本発明の仕方で比較すべきかを選択する。
【0077】
特に好ましい一実施形態では、本発明の仕方で比較されるデータブロックの個数は、出力データ配列の異なる領域間の場合のように変更される可能性があり、また好ましくは変更される。このような一配置構成において、これは、出力配列内の前のデータブロック一致の配置に基づく、つまり、これにより、高い相関を持つと予期される出力配列の領域の推定が(逆も同様に)決定され、次いで、本発明の仕方で処理されるべき出力配列の異なる領域内のデータブロックの個数がそれに応じて制御され、選択される。例えば、また好ましくは、前のデータブロック一致の配置を使用して、出力配列の領域が同じままである可能性が高いかどうか、またどの領域がそうであるかを判定し、次いで本発明の仕方で処理されるデータブロックの個数は、それらの領域内で増やすことができる。
【0078】
好ましい一実施形態では、ソフトウェアアプリケーション(例えば、グラフィックス処理システムによって生成される出力配列を使用し、および/または受け取る)が出力データ配列のどの領域が本発明の仕方で処理されるかを指示し、制御し、特に、また好ましくは、データブロック署名計算プロセスが、出力配列のどの領域のために実行されるべきかを指示することが可能である。次いで、これにより、署名計算は、アプリケーションが常に更新されることを「知っている」出力配列の領域に対してアプリケーションによって「オフにする」ことができる。
【0079】
これは、望む通りに達成されうる。好ましい一実施形態では、出力配列領域に対してデータブロック(例えば、レンダリング済みタイル)署名計算を有効/無効にするレジスタを備え、そこで、ソフトウェアアプリケーションがレジスタをしかるべく設定する(例えば、グラフィックスプロセッサドライバを介して)。このようなレジスタの個数は、例えば、レジスタに必要な追加ロジック、制御の所望の細かさ、および署名計算を無効にすることができることで得られる潜在的な節約の間のトレードオフとして選択することができる。
【0080】
特に好ましい一実施形態では、システムは、新たに生成されたデータブロックを出力バッファに、定期的に、例えば、1秒に1回、それぞれの所定のデータブロック(データブロック位置)に関して、常に書き込むように構成される。したがって、新しいデータブロックはすべてのデータブロック位置について少なくとも定期的に出力バッファ内に確実に書き込まれるようになり、これにより、例えば、誤って一致するデータブロックが(例えば、データブロックの内容が実際には異なっているとしてもデータブロック署名がたまたま一致するせいで)、所定の、例えば、所望のもしくは選択された、期間の間、出力バッファ内に保持されることが回避される。
【0081】
これは、例えば、新しい出力データ配列を丸ごと定期的に(例えば、1秒に1回)単純に書き出すことによって実行されうる。しかし、特に好ましい一実施形態では、新しいデータブロックは、ローリングベースで個別に出力バッファに書き出され、したがって、新しい出力配列が丸ごと一度で書き出されるのではなく、出力配列内のデータブロックの選択された部分が、新しい出力配列が生成されるたび毎に、循環パターンで出力バッファに書き出され、時間が経つうちに、すべてのデータブロックが最終的には新規として書き出される。好ましいこのような一配置構成において、システムは、データブロックの(異なる)選択された1/nの部分(例えば、1/25の部分)が出力配列(例えば、フレーム)毎に完全に書き出され、n(例えば、25)個の出力配列(例えば、フレーム)のシーケンスの終わりまでに、すべてのデータブロックが、少なくとも1回は、出力バッファに完全に書き出されているように構成される。
【0082】
このオペレーションは、好ましくは、関連するデータブロック(つまり、出力バッファに全部書き込まれるデータブロック)に対するデータブロック比較を無効にすることによって達成される。(データブロック署名は、好ましくは、それでも、出力バッファに全部書き込まれるデータブロックについて生成されるが、それは、これらのブロックをこれ以降のデータブロックと比較することができるからである)。
【0083】
本発明は、二重バッファ型出力(例えば、フレーム)バッファ、つまり、2つの出力配列(例えば、フレーム)、例えば、表示中の出力配列と表示されてしまっている、したがって表示する次の出力配列(例えば、フレーム)として書き込まれる出力配列を同時に格納する出力バッファとともに使用される場合、本発明の比較プロセスは、好ましくは、新たに生成されたデータブロックを出力バッファ内の最も古い出力配列と比較する(つまり、新たに生成されたデータブロックを現在は表示されていないが、表示すべき次の出力配列として書き込まれる出力配列と比較する)。
【0084】
特に好ましい一実施形態では、本発明は、他のフレーム(または他の出力)バッファの1つまたは複数の電力および帯域幅低減方式、例えば、また好ましくは、出力(例えば、フレーム)バッファの圧縮(必要に応じて、不可逆または可逆とすることができる)と併せて使用される。
【0085】
後者の場合の好ましい一配置構成では、比較プロセスの後に、新たに生成されたデータブロックが出力(例えば、フレーム)バッファに書き込まれる場合、そのデータブロックは、しかるべく圧縮されてから、出力(例えば、フレーム)バッファに書き込まれる。
【0086】
データブロックが出力バッファに書き込まれる前に圧縮などの何らかの処理をさらに受ける場合、例えば、圧縮などの追加の処理をデータブロックにとにかく実行し、次いで、比較に基づいてそのように処理されたデータブロックを出力バッファに書き込むか、または書き込まないことが可能である。しかし、特に好ましい一実施形態では、本発明の比較プロセスが最初に実行され、データブロックの、圧縮などのさらなる処理は、データブロックを出力バッファに書き込むと決定した場合にのみ実行される。次いで、これにより、ブロックを出力バッファに書き込む必要がないと決定された場合に、データブロックのさらなる処理を回避することができる。
【0087】
タイル比較プロセス(および使用される場合には、署名生成)は、グラフィックスプロセッサの一体となる部分で実装することができるか、または例えば、グラフィックスプロセッサと出力(例えば、フレーム)バッファとの中間にある別々の「ハードウェア要素」がありうる。
【0088】
特に好ましい一実施形態では、比較プロセスを実行し、出力バッファへのデータブロックの書き込み(または書き込まないこと)を制御する「トランザクション排除」ハードウェア要素がある。このハードウェア要素は、好ましくは、それが完了している場合、署名生成も行う(格納されているデータブロックの署名をキャッシュする)。同様に、本発明で操作するデータブロックが、例えば、レンダリングプロセスが生成するレンダリング済みタイルと同じでない場合、このハードウェア要素は、好ましくは、レンダリングプロセスが生成するレンダリング済みタイルからデータブロックを生成または組み立てる。
【0089】
好ましい一実施形態では、このハードウェア要素は、グラフィックスプロセッサとは別のものであり、他の好ましい実施形態では、グラフィックスプロセッサ(の一部)に組み込まれている。したがって、好ましい一実施形態では、比較手段などは、グラフィックスプロセッサそれ自体の一部であるが、他の好ましい実施形態では、グラフィックス処理システムは、グラフィックスプロセッサ、および比較手段などを備える別の「トランザクション排除」ユニットまたは要素を備える。
【0090】
本発明は、グラフィックスプロセッサが出力バッファに供給している可能性のある出力の形態に関係なく使用することができる。したがって、これは、例えば、データブロックおよび出力データ配列が(例えば、画面もしくはプリンタ上に)表示する画像を形成することが意図されている場合に使用することができる(また好ましい一実施形態では、これはその場合である)。しかし、本発明は、出力が表示を目的としていない場合に、例えば、出力データ配列(レンダーターゲット)が、グラフィックスプロセッサを使用して生成するテクスチャである場合(例えば、「テクスチャにレンダー」オペレーションにおいて)、または実際に、グラフィックスプロセッサを使用して生成する出力が、他の形態のデータ配列である場合にも使用されうる。
【0091】
同様に、本発明は、グラフィックスプロセッサオペレーションを特に参照して上で説明されているけれども、出願人は、本発明の原理が、例えばタイルベースのグラフィックス処理システムに類似の仕方でブロックの形態のデータを処理する他のシステムにも同様に適用することができることを認識している。したがって、本発明は、例えば、ビデオ処理(ビデオ処理はグラフィックス処理においてタイルに類似するデータのブロックに対し行われるので)、また合成画像処理(ここでもまた、合成フレームバッファはデータの異なるブロックとして処理されるので)にも等しく使用することができる。
【0092】
本発明は、例えば、デジタルカメラがカメラのセンサーによって生成されるデータ(画像)を処理している場合に、使用することもできる。カメラ(ビデオまたは静止画像)は、例えば、メモリに格納するためにブロック毎にそのセンサーによって生成される画像を処理することができる。この場合、カメラのセンサーからのデータは、例えば、メモリへの画像データの書き込みを制御するカメラのコントローラによって上述のように処理することが可能である。
【0093】
したがって、本発明の第7の態様によれば、データ処理システムによって生成されるデータがデータの出力配列を出力バッファ内に形成するために使用されるデータ処理システムを操作する方法が提供され、この方法は、
データ処理システムがデータの出力配列の特定の領域を表すデータのブロックを出力バッファに書き込むことによってデータの出力配列を出力バッファ内に格納するステップと、
データのブロックが出力データ配列に対して生成されているときに、データ処理システムがデータのそのブロックをデータの少なくとも1つの他のブロックと比較し、この比較に基づいてデータの生成されたブロックを出力バッファに書き込むかどうかを決定するステップとを含む。
【0094】
本発明の第8の態様によれば、データ処理システムが実現され、このシステムは、
データプロセッサによって供給されるべきデータの出力配列を形成するためのデータを生成するための手段を備えるデータプロセッサと、
データプロセッサによって生成されたデータを、データの配列の特定の領域を表すデータのブロックを出力バッファに書き込むことによってデータの配列として出力バッファ内に格納するための手段とを備え、
データ処理システムは、
出力データ配列に対して生成されたデータのブロックをデータの少なくとも1つの他のブロックと比較し、その比較に基づいてデータの生成されたブロックを出力バッファに書き込むかどうかを決定するための手段をさらに備える。
【0095】
本発明の第9の態様によれば、データプロセッサが実現され、このプロセッサは、
データプロセッサによって生成され、データプロセッサによって供給されるべきデータの出力配列の特定の領域を表す、データのブロックを出力バッファに書き込むための手段と、
出力データ配列に対して生成されたデータのブロックをデータの少なくとも1つの他のブロックと比較し、その比較に基づいてデータの生成されたブロックを出力バッファに書き込むかどうかを決定するための手段をさらに備える。
【0096】
本発明は、本発明の比較およびその結果の判定を実行するための特定のハードウェア要素の装備にも拡張される。上述のように、例えば、このハードウェア要素(ロジック)は、1つの、例えば、グラフィックスプロセッサの一体となる部分として構成されるか、または例えば、グラフィックスプロセッサと外部メモリコントローラとを、例えばインターフェイスすることができるスタンドアロン要素とすることができる。これは、プログラム可能な、または専用のハードウェア要素であってもよい。
【0097】
したがって、本発明の第10の態様によれば、データ処理システムによって生成されるデータの出力配列がデータの出力配列の特定の領域を表すデータのブロックを出力バッファに書き込むことによって出力バッファ内に格納されるデータ処理システムにおいて使用するための書き込みトランザクション排除装置が実現され、この装置は、
出力データ配列に対して生成されたデータのブロックをデータの少なくとも1つの他のブロックと比較し、比較に基づいてデータの生成されたブロックを出力バッファに書き込むかどうかを決定するための手段をさらに備える。
【0098】
当業者であれば理解するように、本発明のこれらの態様および実施形態はすべて、本明細書で説明されている本発明の好ましい、およびオプションの機能の1つまたは複数あるいはすべてを備えることができ、好ましくは備える。したがって、例えば、比較は、好ましくは、各データブロックの内容を表す署名を比較するステップを含む。同様に、データブロック比較ステップまたは手段は、好ましくは、出力バッファに書き込む準備ができているデータのブロックを出力バッファ内にすでに格納されている(および/または出力バッファに書き込まれるべき)データの少なくとも1つのブロックと比較し、この比較に基づいてデータのブロックを出力バッファに書き込むかどうかを判定するステップまたは手段を備える。
【0099】
これらの配置構成において、データブロックは、例えば、タイルベースのグラフィックス処理システム(グラフィックスプロセッサ)によって生成されるレンダリング済みタイル、ビデオ処理システム(ビデオプロセッサ)によって生成されるビデオデータブロック、合成処理システムによって生成される合成フレームタイル、および/またはカメラセンサーによって生成される画像ブロックなどとすることができ、また好ましくはそれらのものである。
【0100】
例えば、すべて、データブロックを出力バッファに書き込む複数のマスターがある場合に、本発明を使用することが可能でもある。これは、例えば、ホストプロセッサが、グラフィックスプロセッサによって生成されている画像上に表示すべき「オーバーレイ」を生成する場合としてよい。
【0101】
そのような場合、異なるマスターデバイスのすべてが、例えば、データブロック比較プロセスが作用する出力を有することができる。あるいは、出力データ配列に対してデータブロックを生成する2つまたはそれ以上のマスターデバイスがある場合にデータブロック比較プロセスを無効にすることもできる。このような場合、比較プロセスは、例えば、出力データ配列全体について、または2つのマスターデバイスが出力データブロックを生成している可能性がある出力データ配列の部分のみについて(例えば、ホストプロセッサの「オーバーレイ」が表示されることになる出力データ配列の領域のみについて)無効にすることができる。
【0102】
特に好ましい一実施形態では、本発明で使用するために生成されるデータブロック署名は、作成時に「ソルト」が付けられている(つまり、他の数値(ソルト値)が生成された署名値に付加されている)。ソルト値は、都合のよいことに、例えば、起動以降のデータ出力配列(例えば、フレーム)の数値、またはランダム値としてよい。これは、当技術分野で知られているように、本発明の比較プロセスにおける不正確さによって引き起こされる誤りを非決定論的にするのに役立つ(つまり、例えば、プロセスが映画またはテレビ番組を表示するために使用されている場合など、画像の所定のシーケンスの反復ビューイングについて同じ点で誤りが常に発生するのを回避する)。
【0103】
典型的には、同じソルト値が、1つのフレームに対して使用される。ソルト値は、フレーム毎に、または定期的に更新することができる。定期的ソルティングの場合、署名を書き込む帯域幅を最小限度に抑えるために、署名比較が無効化される(それが行われる場合に)のと同時にソルト値を変更するのがよい。
【0104】
出願人は、本発明の技術を使用して、例えば、本発明において識別されるデータブロック(例えば、タイル)の「一致」数をカウントすることによって、例えば、タイルベースのグラフィックス処理システムにおいて、連続する出力データ配列(例えば、フレーム)および/または出力データ配列(例えば、フレーム)のシーケンスの間の相関(つまり、出力データ配列(例えば、フレーム)が互いに類似している程度)を評価または推定することができることをさらに認識している。さらに、出願人は、この情報は、例えば、連続するフレームが同じである(相関が高い)ことを示している場合に、それが、例えば、画像が一定期間静止していることを示唆するので、有用であることも認識している。その場合、例えば、フレームレートを削減することが可能である。
【0105】
したがって、本発明のさらなる態様によれば、データの出力配列の特定の領域を表すデータのブロックを出力バッファに書き込んでデータの出力配列を格納するデータ処理システムによってデータの出力配列が生成されるデータ処理システムを操作する方法が提供され、この方法は、
データ処理システムが、出力バッファにデータのブロックが書き込まれるときに、データのそのブロックを出力バッファ内にすでに格納されているデータの少なくとも1つのブロックと比較し、データの複数のブロックに対する比較の結果を使用してデータ処理システムの異なる出力配列間の相関を推定するステップを含む。
【0106】
本発明の他の態様によれば、データ処理システムが実現され、このシステムは、
データ処理システムによって供給されるべきデータの出力配列を形成するためのデータを生成するための手段と、
データ処理システムによって生成されたデータを、データの配列の特定の領域を表すデータのブロックを出力バッファに書き込むことによってデータの配列として出力バッファ内に格納するための手段と、
出力バッファに書き込まれるデータブロックを出力バッファ内にすでに格納されている少なくとも1つのデータブロックと比較するための手段と、
データの複数のブロックに対する比較の結果を使用してデータ処理システムの異なる出力配列間の相関を推定するための手段とを備える。
【0107】
当業者であれば理解するように、本発明のこれらの態様および実施形態はすべて、本明細書で説明されている本発明の好ましい、およびオプションの機能の1つまたは複数あるいはすべてを備えることができ、好ましくは備える。したがって、例えば、比較は、好ましくは、各データブロックの内容を表す署名を比較するステップを含む。
【0108】
同様に、データブロックは、例えば、タイルベースのグラフィックス処理システムによって生成されるレンダリング済みタイル、ビデオ処理システムによって生成されるビデオデータブロック、および/または合成処理システムによって生成される合成フレームタイルなどとすることができ、また好ましくはそれらのものである。
【0109】
これらの配置構成において、異なる出力配列(例えば、フレーム)間の推定された相関は、好ましくは、生成の頻度および/またはフォーマットなど、出力配列またはフレームに関するシステムのさらなるプロセスを制御するために使用される。したがって、特に好ましい一実施形態では、出力配列(フレーム)生成レートおよび/または表示リフレッシュレート、および/または出力配列(フレーム)に使用されるアンチエイリアシングの形態は、異なる出力配列(フレーム)間の推定された相関に基づいて制御もしくは選択される。
【0110】
本発明は、適宜構成されたマイクロプロセッサベースのシステムなどの、好適なシステムにおいて実装することができる。好ましい一実施形態では、本発明は、コンピュータおよび/またはマイクロプロセッサベースのシステムにおいて実装される。
【0111】
本発明のさまざまな機能は、所望の、また好適な仕方で実行されうる。例えば、本発明の機能は、必要に応じて、ハードウェアまたはソフトウェアで実装することができる。したがって、例えば、本発明のさまざまな機能要素および「手段」は、適切に専用化されたハードウェア要素および/または所望の仕方で動作するようにプログラムすることができるプログラム可能なハードウェア要素などの、さまざまな機能などを実行するように動作可能な、好適な1つまたは複数のプロセッサ、1つまたは複数のコントローラ、機能ユニット、回路、処理ロジック、マイクロプロセッサ配置構成などを含むものとしてよい。
【0112】
好ましい一実施形態では、グラフィックスプロセッサおよび/またはトランザクション排除ユニットは、ハードウェア要素(例えば、ASIC)として実装される。したがって、他の態様では、本発明は、本明細書で説明されている本発明の態様のうちの1つまたは複数の装置、または本明細書で説明されている本発明の態様のうちの1つまたは複数の方法に従って動作する装置を含む、ハードウェア要素を備える。
【0113】
また、当業者であれば理解するように、本発明のさまざまな機能などは、所定のプロセッサ上に複製され、および/または所定のプロセッサ上で並列実行されうることに留意されたい。
【0114】
本発明は、「パイプライン化された」レンダリング配置構成をとるプロセッサなどの、グラフィックスプロセッサおよびレンダラーの好適な形態もしくは構成に適用可能である(この場合、レンダラーは、レンダリングパイプラインの形態をとる)。これは、タイルベースのグラフィックスプロセッサおよびグラフィックス処理システムに特に適用可能である。
【0115】
上記から理解されるように、本発明は、もっぱらというわけではないが、2Dおよび3Dグラフィックスプロセッサならびに処理デバイスに特に適用可能であり、それに応じて、本明細書で説明されている本発明の複数の態様のうちの1つまたは複数の態様の装置を含む、または本明細書で説明されている本発明の複数の態様のうちの1つまたは複数の態様の方法に従って動作する、2Dおよび/または3Dグラフィックスプロセッサならびに2Dおよび/または3Dグラフィックス処理プラットフォームにも拡大適用される。上述の特定の機能を実行するためにハードウェアが必要であることを前提条件とすると、そのような2Dおよび/または3Dグラフィックスプロセッサは、他の何らかの方法で、2Dおよび/または3Dグラフィックスプロセッサが備える、通常の機能ユニットなどの1つまたは複数またはすべてを備えることができる。
【0116】
当業者であれば、本発明の説明されている態様および実施形態はすべて、適宜、本明細書で説明されている好ましい、およびオプションの機能の1つまたは複数あるいはすべてを備えることができることも理解するであろう。
【0117】
本発明による方法は、少なくとも部分的にはソフトウェアを使用して、例えばコンピュータプログラムを使用して実装されうる。そのため、他の態様から見たときに、本発明は、データ処理手段にインストールされたときに方法または本明細書で説明されている方法を実行するように特に適合されたコンピュータソフトウェア、データ処理手段上でプログラム要素が実行されたときに本明細書で説明されている方法を実行するコンピュータソフトウェアコード部分を含むコンピュータプログラム要素、およびデータ処理システム上でプログラムが実行されたときに本明細書で説明されている1つまたは複数の方法のすべてのステップを実行するように適合されたコード手段を含むコンピュータプログラムを提供することがわかる。データ処理システムは、マイクロプロセッサ、プログラム可能なFPGA(フィールドプログラマブルゲートアレイ)などとしてよい。
【0118】
本発明は、さらに、データ処理手段を備えるグラフィックスプロセッサ、レンダラー、または他のシステムを動作させるために使用されたときに前記データ処理手段と併せて前記プロセッサ、レンダラー、またはシステムに本発明の方法のステップを実行させるそのようなソフトウェアを含むコンピュータソフトウェアキャリアにも拡大適用される。このようなコンピュータソフトウェアキャリアは、ROMチップ、CD ROM、またはディスクなどの物理的記憶媒体とすることが可能であるか、またはケーブル上の電子信号、光信号、または衛星もしくは同様のものなどへの無線信号などの信号とすることが可能である。
【0119】
さらに、本発明の方法のステップすべてが、コンピュータソフトウェアによって実行される必要はないことは理解されるであろうし、したがって、さらに広い観点から、本発明は、本明細書で説明されている方法の複数のステップのうちの少なくとも1つを実行するために、コンピュータソフトウェアおよびコンピュータソフトウェアキャリア上にインストールされたそのようなソフトウェアを提供する。
【0120】
したがって、本発明は、コンピュータシステムとともに使用するためのコンピュータプログラム製品として適宜実現されうる。そのような実装は、コンピュータ可読媒体、例えば、ディスケット、CD ROM、ROM、またはハードディスクなどの、有形の非一時的な媒体上に固定された、あるいは限定はしないが、光またはアナログ通信回線を含む有形の媒体上で、あるいは限定はしないが、マイクロ波、赤外線、または他の伝送技術を含む無線技術の無形の手段を使用して、モデムまたは他のインターフェイスデバイスを介して、コンピュータシステムに伝送可能な、一連のコンピュータ可読命令を含むことができる。これら一連のコンピュータ可読命令は、本明細書ですでに説明されている機能の全部または一部を実現する。
【0121】
当業者であれば、このようなコンピュータ可読命令は、多くのコンピュータアーキテクチャまたはオペレーティングシステムとともに使用するために多くのプログラミング言語で作成されうることを理解するであろう。さらに、このような命令は、限定はしないが半導体、磁気、または光を含む、現在の、または将来のメモリ技術を使用して格納されるか、または、限定はしないが光、赤外線、またはマイクロ波を含む、現在の、または将来の通信技術を使用して伝送されうる。このようなコンピュータプログラム製品は、印刷または電子文書を添付した取り外し可能媒体、例えばシステムROMまたは固定ディスク上のコンピュータシステムにプリインストールされている、例えば市販ソフトウェアとして配布されるか、あるいはサーバーまたはネットワーク、例えばインターネットまたはワールドワイドウェブ上の電子掲示板から配布されうることが企図される。
【0122】
本発明の多数の好ましい実施形態について、付属の図面を参照しつつ、実施例のみを使って説明する。
【図面の簡単な説明】
【0123】
【図1】本発明がタイルベースのグラフィックスプロセッサと連携して使用される第1の実施形態の概略を示す図である。
【図2】本発明の第1の実施形態において関連するデータがメモリ内にどのように格納されるかの概略を示す図である。
【図3】図1に示されている実施形態のトランザクション排除ハードウェアユニットの概略および詳細を示す図である。
【図4a】本発明の好ましい一実施形態のオペレーションに対する可能な修正の概略を示す図である。
【図4b】本発明の好ましい一実施形態のオペレーションに対する可能な修正の概略を示す図である。
【図5】表示用に出力を形成する複数の画像ソースの合成を示す図である。
【図6】複数の画像ソースがある本発明の一実施形態の概略を示す図である。
【図7】複数の画像ソースがある本発明の他の実施形態の概略を示す図である。
【図8】本発明の他の実施形態を示す図である。
【図9】本発明の他の実施形態を示す図である。
【発明を実施するための形態】
【0124】
次に、本発明の多数の好ましい実施形態について説明する。これらの実施形態は、グラフィックス処理システムにおいてもっぱら本発明を使用することに関して説明されているが、上記のように、本発明は、ビデオ処理などの、出力全体の一部分を表すデータをブロック単位で処理する他のデータ処理システムに適用可能である。
【0125】
同様に、以下の実施形態は、もっぱら本発明の仕方でタイルベースのグラフィックスプロセッサによって生成されるレンダリング済みタイルの比較に関して説明されるが、ここでもまた、上記のように、本発明はそのような配置構成に限定されない。
【0126】
図1は、本発明に従うグラフィックス処理システムの配置構成の概略を示す。
【0127】
グラフィックス処理システムは、図1に示されているように、タイルベースのグラフィックスプロセッサまたはグラフィックスプロセッシングユニット(GPU)1を備え、これは、当技術分野で知られているように、生成されるべき出力フレームなどの、出力データ配列のタイルを生成する。出力データ配列は、当技術分野で知られているように、典型的には、画面もしくはプリンタなどの、表示デバイス上に表示することが意図されている出力フレームとすることができるが、例えば、グラフィックスプロセッサなどの「テクスチャにレンダー」出力を含んでいてもよい。
【0128】
当技術分野で知られているように、このような配置構成では、タイルは、グラフィックスプロセッサ1によって生成された後、通常であれば、メモリコントローラ4に接続されている相互接続部3を介してメモリ2(このメモリはDDR-SDRAMでもよい)内のフレームバッファに書き込まれる。いつか後になってフレームバッファが、例えば、ディスプレイコントローラによって読み込まれ、ディスプレイに出力される。
【0129】
本発明の実施形態において、このプロセスは、メモリ2内のフレームバッファへのグラフィックスプロセッサ1によって生成されるタイルの書き込みを制御する、トランザクション排除ハードウェアユニット5の使用によって修正される。本質的に、また以下でさらに詳しく説明されるように、トランザクション排除ハードウェア5は、タイルの内容を表す署名をタイル毎に生成するように動作し、次いで、署名が一致しているかどうかを確認するためその署名をフレームバッファ内にすでに格納されている1つまたは複数のタイルの署名と比較する。(したがって、この実施形態では、比較されるデータブロックは、グラフィックスプロセッサによって生成されるレンダリング済みタイルを含む。)
【0130】
署名が一致した場合、次いで、新しいタイルがフレームバッファ内にすでに格納されているタイルと同じであると仮定され、そこで、トランザクション排除ハードウェアユニット5は、新しいタイルをフレームバッファに書き込むのを差し控える。
【0131】
このようにして、本発明の実施形態では、一方のフレームから次のフレームへと実際には変化しないフレームバッファのセクションに対する書き込みトラヒックを回避することができる(ゲームの場合には、これは、ユーザーインターフェイス、空などの大部分、さらにはカメラ位置が静止しているときのプレイフィールドの大半に対する場合である)。これにより、フレームバッファオペレーションに関して帯域幅および電力消費のかなりの量を節減することができる。
【0132】
他方で、署名が一致しない場合、新しいタイルがフレームバッファに書き込まれ、そのタイルに対する生成された署名も、メモリに書き込まれる。
【0133】
図2は、これに対する例示的なメモリレイアウトを示しており、フレームを構成するタイルはメモリの一部分10(したがって、「フレームバッファ」を形成する)内に格納され、フレームを構成するタイルに対する関連する署名は、メモリの他の部分11に格納される。(他の処理方法も、もちろん、可能である。)高精細度(HD)フレームについては、16×16の32ビットタイルである場合、32ビット署名を使用することで、8MBフレームに30KBを加える。
【0134】
(フレームバッファが、二重バッファ型である場合、好ましくは、フレーム毎に(またそれぞれのフレームとともに)署名データが格納される。次いで、新しいタイルが、メモリ内の最も古いフレームと比較される。)
【0135】
図3は、トランザクション排除ハードウェアユニット5をさらに詳しく示している。
【0136】
図3に示されているように、グラフィックスプロセッサ1からトランザクション排除ハードウェアユニット5が受け取ったタイルデータは、署名生成および比較プロセスが実行されている間にタイルデータを一時的に格納するバッファ21に渡されるとともに、署名生成器20にも渡される。
【0137】
署名生成器20は、タイルに必要な署名を生成するように動作する。本発明の実施形態では、署名は、タイルに対して32ビットCRCの形をとる。
【0138】
他の署名生成関数、およびハッシュ関数などの署名の他の形式も、または代わりに、所望するなら、使用することが可能である。例えば、1つのRGBAタイルに対する単一の署名、または色平面毎に別の署名を生成することも可能である。同様に、色変換を実行し、別の署名をY、U、およびVのそれぞれに対し生成することが可能である。電力消費量を低減するために、署名生成器20によって処理されるタイルデータの順序を、必要に応じて変更することが可能である(例えば、ヒルベルト曲線を使用して)。
【0139】
新しいタイルに対する署名が生成されると、このタイルは、新しいタイルの署名をフレームバッファ内にあるか、またはすでに存在している1つまたは複数のタイルの1つまたは複数の署名と比較する動作をする署名比較器23に渡される。本発明の実施形態では、比較は、注目するタイルに対するタイル位置におけるフレームバッファ内にすでにあるタイルの署名との比較である。
【0140】
前のフレームからの複数のタイルに対する署名は、システムの動作時に簡単に取り出せるようにトランザクション排除ハードウェアユニット5の署名バッファ22(このバッファは、さまざまな形で、例えばバッファまたはキャッシュとして実装されうる)内にキャッシュされ、したがって、署名比較器23は、そこにもし存在すれば署名バッファ22から関連する署名をフェッチし(または当技術分野で知られているように、メインメモリ2からの署名のフェッチをトリガーし)、前のフレームのタイルの署名を署名生成器から受け取った署名と比較して一致があるか調べる。
【0141】
署名が一致しない場合、署名比較器23は、書き込みコントローラ24を制御して、新しいタイルおよびその署名をフレームバッファおよびメモリ2内の関連する署名データストアに書き込む。その一方で、署名比較器により、新しいタイルの署名とフレームバッファ内にすでに格納されているタイルの署名とが一致していることがわかると、書き込みコントローラ24は、タイルを無効化し、フレームバッファにはデータは一切書き込まれない(つまり、既存のタイルをフレームバッファ内に残すことができ、その署名は保持される)。
【0142】
このようにして、署名比較によってメモリ2内にすでに格納されているタイルと異なることが判明した場合にメモリ2内のフレームバッファにのみタイルが書き込まれる。これは、フレームが生成されているときにメモリ2への書き込みトランザクションの回数を減らすのに役立つ。
【0143】
本発明の実施形態では、不正に一致したタイルがフレームバッファ内にあまりに長い長期間存在することを止めさせるために、フレームバッファ内のそれぞれの格納されているタイルに対する署名比較は、定期的に無効にされる(好ましくは1秒に1回)。このことは、署名比較が無効にされているタイルが、新たに生成された場合、その新たに生成されたタイルが、メモリ2内のフレームバッファに書き込まれるのは避けられないことを意味している。このようにして、不一致タイルは、時間が経つうちに、常に、完全に新しい(したがって正しい)タイルで置き換えられることを確実にすることができる。(ランダムタイルでは、例えば、32ビットCRCは、タイル2^32個に1回の割合で偽りの一致(つまり、同じ署名が異なる内容を持つタイルに対して生成される状況)を発生し、毎秒30フレームの1080 HD解像度では、約4時間おきの比較プロセスのせいでタイル不一致に至る。)
【0144】
本発明の実施形態では、格納されているタイルの署名の比較は、所定の、循環する、シーケンスで無効にされ、これにより、1秒毎に(および/または例えば25または30フレームを一組としてこの一組にわたって)、それぞれの個別タイルでは、その署名比較を1回無効にする(したがって、それに対する新しいタイルが書き込まれる)。
【0145】
他の処理方法も可能であろう。例えば、システムは、完全に新しいフレームを定期的に(例えば、1秒に1回)、MPEGビデオと同様にして書き出すように単純に構成することが可能である。それに加えて、または代替として、より長い署名をそれぞれのタイルについて使用することが可能であり、これにより、実際に異なるタイルに対する署名が同一であることによる偽りのタイル一致が生じる割合を著しく低減する。例えば、64ビットCRCなどのより大きなCRCでは、このような不一致を120万年に1回の割合にまで減らすことが可能である。
【0146】
(あるいは、そのような偽りのタイル一致は、タイルがともかく依然として類似しており、不一致のタイルが1/30秒以下のオーダーでしか表示される可能性がないという事実により知覚される可能性はないので、この点で予防は不要であると決定することができる。)
【0147】
例えば、より重要であると考えられるタイルの内容の態様に対し署名生成を重み付けすることも可能である(例えば、ユーザーが最終的な表示タイルをどのように知覚するかに関して)。例えば、色のLSBビットに比べて色のMSBビットに対してより長い署名を生成することが可能である(一般的に、色のLSBビットはMSBビットよりも重要度が下がるため)。署名の長さは、電力消費を最小にすることを補助するために、例えば、アプリケーションに応じて使用中に変更することも可能である。
【0148】
特に好ましい一実施形態では、本発明で使用するために生成されるデータブロック署名は、作成時に「ソルト」が付けられている(つまり、他の数値(ソルト値)が生成された署名値に付加されている)。ソルト値は、都合のよいことに、例えば、起動以降のデータ出力配列(例えば、フレーム)の数値、またはランダム値としてよい。これは、当技術分野で知られているように、本発明の比較プロセスにおける不正確さによって引き起こされる誤りを非決定論的にするのに役立つ(つまり、例えば、プロセスが映画またはテレビ番組を表示するために使用されている場合など、画像の所定のシーケンスの反復ビューイングについて同じ点で誤りが常に発生するのを回避する)。
【0149】
上述のように、本発明の実施形態では、署名比較プロセスは、新たに生成されたタイルをフレームバッファ内の対応するタイル位置に対して格納されているタイルと比較するように動作する。
【0150】
しかし、他の好ましい実施形態では、所定の生成されたタイルは、フレームバッファ内にすでに格納されている複数のタイルと比較される。この場合、そのタイルに対して生成された署名は、フレームバッファ内に格納されている複数のタイルの署名としかるべく比較される。この場合、トランザクション排除ハードウェアユニット5の署名バッファ22内に格納されているタイルの署名との(つまり、フレームに対する格納されているすべてのタイルの部分集合との)そのような比較が実行されることが好ましいが、すべての格納されているタイルとの新しいタイルの比較などの他の構成も、所望するなら可能である。好ましくは、署名が署名バッファ22内に格納されるタイルとの一致の可能性を高めるために、タイルをヒルベルト順序などの適切な順序で処理する。
【0151】
この場合、新しいタイルについて生成される署名は、それに応じて、現在の出力フレーム内の複数のタイルの署名と比較される(これらのタイルは、当業者であれば理解するように、現在のフレームに新しく書き込まれたタイル、または現在のフレームのタイルと一致したため現在のフレームへ実際に「繰り越された」前の(複数の)フレームからのタイルとすることができる)。
【0152】
この実施形態では、タイルが、前のフレーム内の異なるタイル座標を持つ他のタイルと同じであるかどうかを示すリストが保持される。次いで、表示されるべきタイルを読み込んだときに、対応するリストエントリが読み込まれる。リストエントリ値がゼロ(null)の場合、そのタイルに対する通常タイル位置に格納されているデータが読み込まれる。さもなければ、リストエントリは、例えば、現在のタイル位置について読み込まれるべきフレームバッファ内のタイルの位置を決定するためにトランザクション排除ハードウェアユニット5によって自動的に変換されうる、読み込むべき異なるタイルのアドレスを含む。
【0153】
本発明の好ましい一実施形態では、タイル比較プロセスが、生成されるあらゆるタイルについて実行される。しかし、好ましい他の実施形態では、フレーム間にほとんど相関がないと予期される場合に分析するタイルを減らす適応的方式が使用される。この配置構成では、タイル一致の履歴的な数が、フレーム間の相関の尺度として使用される(多数のタイルの一致がある場合に、フレーム間に多数の相関があると想定することができ、また逆も同様である)。トランザクション排除ハードウェアは、このオペレーションを実行するための好適なコントローラを備えることができる。
【0154】
したがって、この場合、フレーム間に相関が多数ある(つまり、タイルの内の多くがフレームバッファ内にすでに存在しているタイルと一致している)と判定された場合、タイルのすべてについて署名が生成され比較されるが、フレーム間にほとんど相関がない(フレームバッファ内にすでに格納されているタイルと一致することが判明しているタイルがほとんどまたは全くない)と判定された場合、より少ないタイルについて署名が生成され、タイル比較プロセスが実行される。
【0155】
図4は、このことを示している。図4aは、フレーム間の相関が多数あり、すべてのタイルについて署名が生成される場合を示している。図4bは、フレーム間の相関がほとんどなく、この場合、タイルの部分集合31のみについて署名が生成され比較される逆の状況を示している。
【0156】
これらの原理を使用して、例えば、フレームのどの特定の部分がより高い相関を有するかを判定し、次いで、所望するなら、そのフレームのみの特定の領域における比較を受けるタイルの数を増やすことを試みることも可能である。
【0157】
当業者であれば理解するように、トランザクション排除ハードウェアユニット5は、グラフィックスフレームバッファ、ステクスチャにグラフィックレンダーなどの、グラフィックスプロセッサ1が生成する出力に関して動作可能である。
【0158】
当業者であれば理解するように、グラフィックスプロセッサ1を備える典型的なシステムでは、GUI、グラフィックス、およびビデオなどの多数の画像ソースがありうる。これらのソースは、レイヤを使用するディスプレイコントローラ、または専用合成エンジンを使用して、または例えば、グラフィックスプロセッサを使用して合成することができる。図5は、このような合成フレームの一例を示している。
【0159】
このような配置構成では、本発明のトランザクション排除プロセスは、例えば、グラフィックスプロセッサのみに関して、使用することも可能である。図6は、このような配置構成に対する可能なシステム構成を示している。この場合、グラフィックスプロセッサ1、ビデオコーデック60、およびCPU 61があり、それぞれ表示用に潜在的画像ソースを生成する。トランザクション排除ユニット5は、グラフィックスプロセッサ1とメモリ相互接続部3との中間に配置される。
【0160】
しかし、出願人は、本発明のトランザクション排除プロセスは、ビデオフレームバッファ用にビデオブロックを生成するビデオプロセッサ(ビデオコーデック)などのタイルベースのグラフィックスプロセッサのタイルに似た仕方でブロック単位で処理される他の形式のデータに、またグラフィックスプロセッサ画像合成にも等しく使用することが可能であることを認識している。したがって、本発明のトランザクション排除プロセスは、例えばビデオプロセッサ60によって生成されている画像などにも等しく適用することができる。
【0161】
したがって、図7は、グラフィックスプロセッサ1、ビデオプロセッサ60、およびCPU 61のどれかからの適切な画像出力を処理するためにトランザクション排除ハードウェアユニット5が上述の仕方で動作可能な代替構成を示している。この配置構成において、トランザクション排除ハードウェアユニット5は、特定のマスターIDおよび/またはアドレスマップの特定の定義済みおよび選択済み部分について動作するように有効にされる。
【0162】
他の配置構成も、もちろん、可能である。
【0163】
例えば、すべて、データブロックを出力バッファに書き込む複数のマスターがある場合に、本発明を使用することが可能でもある。これは、例えば、ホストプロセッサが、グラフィックスプロセッサによって生成されている画像上に表示すべき「オーバーレイ(overlay)」を生成する場合としてよい。
【0164】
そのような場合、異なるマスターデバイスのすべてが、例えば、データブロック比較プロセスが作用する出力を有することができる。あるいは、データブロック比較プロセスは、出力データ配列に対して、出力データ配列全体に対して、または2つのマスターデバイスが出力データブロックを生成している可能性のある場合の出力データ配列の部分に対してのみ(例えば、ホストプロセッサの「オーバーレイ」が表示されるべき出力データ配列の領域に対してのみ)データブロックを生成する2つ以上のマスターデバイスがあるときに無効にすることができる。
【0165】
図8および9は、本発明の他の実施形態を示す。図8は、この実施形態の配置構成の概略を示し、図9は、この実施形態におけるデータブロック比較プロセスのステップを示す流れ図である。
【0166】
この実施形態において、図8に示されているように、トランザクション排除ハードウェアユニットは、グラフィックプロセッサ(GPU)1の一体となる部分である。トランザクション排除ハードウェアユニット5は、以下でさらに説明されるように、新しいデータブロックを注目している出力配列(フレーム)に対して生成された他のデータブロックと比較し、出力データ配列内にすでに格納されているデータブロックとは比較しないようにも、動作する。
【0167】
したがって、この実施形態では、グラフィックスプロセッサ1は、そのタイルレンダリングロジック40の後に、データブロック生成ロジック41およびブロック比較ロジック43を備えるトランザクション排除ユニット5を備える。ブロック生成ロジック41は、タイルレンダリングロジック40によって生成されるタイルから適切なデータブロックを生成するように動作する。本発明の実施形態では、ブロック生成ロジックは、タイルレンダリングロジック40によって生成されるタイルの部分タイルに対応するブロックを生成する。しかし、本明細書で説明されているように、他のサイズおよび形式のデータブロックも可能であり、所望するなら、ブロック生成ロジック41によって生成することも可能である。
【0168】
ブロック生成ロジックは、バッファ42内に生成する連続ブロックを格納する。次いで、比較ロジック43は、バッファ42内に格納されている各データブロックを比較し(この場合は、新しいデータブロックと直前のデータブロックとの比較)、この比較に基づいてそれらのブロックが同じと考えられるかどうかを示す出力メタデータビットを生成する。複数のブロックに対するメタデータ出力ビットが収集され、1つのバッファ内にマージされ(メモリ効率を高めるため)、次いで、注目する出力データ配列に関連付けられているメインメモリ2内のメタデータビットマップ45に適宜格納される(オフチップメモリに書き込まれる)。(他の処理方法も、もちろん、可能である。)
【0169】
データブロックは、バッファ42からも読み込まれ、後述の書き込み排除プロセスが実行され、メモリ2内のフレーム(出力)バッファ4内に適宜格納される。
【0170】
この実施形態では、メタデータは、メモリ2内の出力データ配列44内のそれぞれのデータブロック(部分タイル)位置が、メタデータビットマップ45内のビットに関連付けられるように構成され、データブロックに対するビットマップ内のビットは、データブロックが出力データ配列内の前のデータブロックと同じであると考えられた場合には「1」に設定され、データブロックが前のデータブロックと異なると考えられた場合には「0」に設定される。次いで、これにより、以下でさらに説明されるように、出力データ配列44を読み込んでいるデバイスが、それぞれのデータブロック位置に関してどのデータブロックを使用すべきかを決定することができる。
【0171】
このオペレーションを容易にするために、出力フレームを構成するデータブロックは、特定の定義済み順序で処理される(フレームバッファに書き込む場合とそこから読み込む場合の両方)。ブロック間の空間的コヒーレンスを利用することができる順序が、好ましくは使用される。
【0172】
データ配列およびメタデータ生成プロセスが、図9に流れ図として示されている。
【0173】
図9に示されているように、ブロック生成ロジック41は、タイルレンダリングロジック40によって生成されたレンダリング済みタイルからデータブロック(この場合には、部分タイルに対応する)を生成する(ステップ51)。次いで、データブロックが、バッファ42に格納される。
【0174】
次いで、比較ロジック43は、新しいデータブロックを前のデータブロックと比較する(これは、バッファ42内にすでに格納されている)(ステップ52)。本実施形態では、比較ロジック43は、データブロックの内容同士を比較する。他の処理方法も可能であろう。例えば、比較ロジックは、上述のように、ブロックの実際の内容ではなく、ブロックに対する署名を比較することが可能である。
【0175】
次いで、比較ロジックは、新しいブロックを前のブロックに類似していると考えるべきかどうかを判定する(ステップ53)。本発明の実施形態では、この評価は、比較されている2つのブロックの内容がどの程度類似しているかに基づく。例えば、ピクセルのLSBにおける差の特定の量の閾値が設定され、2つのブロックの内容の差が、この閾値より小さければ、ブロックは類似していると判定され、また逆も同様である。
【0176】
(この閾値は、使用中に変更する(例えば、プログラムする)ことができる。例えば、静的フレームデータと動的フレームデータの割合に基づき、および/または使用中の電力モード(例えば、低電力モードかどうか)に基づき、アプリケーション毎に設定することが可能である。)
【0177】
他のデータブロック比較方式も、所望するなら使用することが可能である。
【0178】
ブロックが、ステップ53において比較ロジックにより異なる(類似していない)と判定される場合、比較ロジックは、値「0」をメタデータビットマップ45内の適切な位置に書き込むように動作する(ステップ54)。この新しいデータブロックは、バッファ42からメインメモリ2内のフレームバッファ44に書き込まれる(ステップ55)。
【0179】
その一方で、ステップ53において、ブロックが類似していると考えるべきであると判定された場合、比較ロジック43は、「1」をメタデータビットマップ45内の適切な位置に書き込ませるように動作する(ステップ56)。
【0180】
さらに、2つのブロックが、互いに類似していると考えられる場合、新しいブロックは、フレームバッファ44内のデータ配列内に書き込まれない(ステップ58)。
【0181】
この結果、データブロックが前のデータブロックと同じである(つまり、フレームバッファ44内に格納される前のデータブロックと同じである)と判定された場合も、同様に、新しいデータブロックはフレームバッファ44に書き込まれない。このようにして、互いに同じであるデータ配列(フレームバッファ)44のセクションに対する書き込みトラヒックは回避されうる。(その一方で、データブロックが、異なると判定された場合、新しいデータブロックが、フレームバッファ44に書き込まれる。)
【0182】
この配置構成では、ディスプレイコントローラなどのデバイスが、出力データ配列44を読み込むようになると、これは、対応するメタデータビットマップ45も読み込む。処理することになっているデータ配列のそれぞれのデータブロックについて、対応するビットマップエントリを読み込み、そのビットマップエントリが「1」に設定されている場合に、そのデータブロックが出力データ配列44内に格納されている前のデータブロックと同じであると考えられたことを知り、したがって、出力データ配列44内の前の適切なデータブロックを新しいブロックとして表示する。あるいは、処理されるべきデータブロックに関連付けられているメタデータが、「0」である場合、ディスプレイコントローラは、データ配列44から新しいデータブロックを読み込んで、その新しいブロックを表示すべきであることを知る。
【0183】
このようにして、データ配列44がデータ配列44内のあらゆるデータブロック位置についてデータブロックエントリを含みえないとしても、適切なデータブロックデータが読み込まれて処理されうる。
【0184】
(したがって、これらの配置構成では、データブロックそれ自体が、データ配列44に書き込まれない場合があるけれども、データ配列を読み込んでいる処理デバイス(ディスプレイコントローラなど)が他のどのブロックが代わりにされるべきかを判定するためにその情報を使用するので、比較メタデータ45が注目するブロック位置について生成され、格納されるべきである。)
【0185】
類似のブロックのシーケンスがある場合に、メタデータはそれに対応して、この実施形態において、「1」のシーケンスを含み、データ配列を読み込むデバイスは、それぞれの連続する類似ブロックに対してこのシーケンス内の第1のブロックを再利用することは理解されるであろう。
【0186】
1つのデータブロックをデータ配列の複数の他のブロック(例えば、複数の前のデータブロック)と比較して、それが他のブロックのどれかと類似しているかどうかを調べることも可能である。この場合、それぞれのメタデータエントリは、複数のビットを含み、これにより、他のデータブロックのうちのどれに、注目するブロックが類似していると考えられたかを示すことができる。
【0187】
上述のように、この実施形態の特に好ましい一配置構成において、データブロック比較が正確でない(実際には異なるのに誤って一致するブロックであるとする)場合、システムは、新たに生成されたデータブロックをフレームバッファ44に定期的に、例えば、1秒に1回、それぞれの所定のデータブロック(データブロック位置)に関して、常に書き込むように構成される。
【0188】
上記の実施形態および本発明の他の多数の代替形態および配置構成を必要に応じて使用することが可能である。
【0189】
例えば、特定のフレーム領域に対するタイル署名計算を有効/無効にするハードウェアレジスタを備え、これにより、タイルに対して、そのタイルが置かれているフレーム領域用のレジスタが設定されている場合にのみトランザクション排除署名生成および比較が実行されるようにすることが可能である。
【0190】
次いで、グラフィックスプロセッサ(例えば)のドライバを、ソフトウェアアプリケーションがこれらのタイル署名有効/無効レジスタにアクセスし、設定することを可能にし、これにより、ソフトウェアアプリケーションは、署名生成および比較が実行されるかどうか、またどこで実行されるか(どのフレーム領域に対して)を直接制御する機会を与えられるように構成することが可能である。これにより、ソフトウェアアプリケーションは、例えば、署名計算および比較がどのように実行されるか、また実行されるかどうかを制御することができる。次いで、これを利用して、例えば、アプリケーション側で常に更新されると「知っている」出力フレームの領域に対して署名計算によって消費される電力を排除することが可能である(次いで、システムは、常に、最初に署名チェックを実行することなくフレームのそのような領域を更新する)。
【0191】
そのようなレジスタの数は、例えば、それらを実装し使用する必要な付加ロジックと制御の所望された細かさとの間のトレードオフとして選択することができる。
【0192】
また、上述のように、フレーム内のタイル一致の数を連続するフレーム間の相関の尺度として使用することができるという事実をさらに利用することが可能である。例えば、カウンターを使用して所定のフレーム内のタイル一致の数を追跡することによって、連続するフレーム間および/または一定期間のように画像が静的であるかどうかを判定することが可能である。これにより、画像が一定期間静的であると判定された場合、例えば、プロセッサフレームレートを低減することが可能であり(節電につながる)、ディスプレイリフレッシュレートを低減することが可能であり、および/またはよりよいアンチエイリアシングを使用してフレームを再レンダリングすることが可能であり(これにより(知覚される)画質が向上する)、また逆も同様である。
【0193】
本発明の配置構成は、フレーム-バッファ圧縮などの、他のフレームバッファ電力および帯域幅低減技術と連携して使用することもできる。この場合、本発明の仕方による書き込みトランザクション排除は、好ましくは最初に実行され、その後、圧縮(または他の)オペレーションが実行される。次いで、圧縮プロセスでタイルの署名が同じであることを発見した場合、前の圧縮タイルを現在の出力フレーム内で使用すべきタイルとして保持することができるが、タイルが「排除」されない場合、新しいタイルがフレームバッファ圧縮(または他の)ハードウェアに送られ、次いで、メモリ内のフレームバッファに送られる。そのため、このことは、タイルの署名が一致する場合に、圧縮オペレーションを回避するとができることを意味する。
【0194】
本実施形態が、とりわけ、フレームバッファに書き込まれるべきレンダリング済みタイルの比較に関して、上で説明されているが、本明細書で説明されているように、比較される出力データ配列の領域を形成するデータブロック(および例えば、それらに対して生成される署名を有するもの)はグラフィックスプロセッサによって生成されるレンダリング済みタイルに正確に対応する必要はない。
【0195】
例えば、考察され比較されるデータブロックは、複数のレンダリング済みタイルから構成することが可能であり、および/またはレンダリング済みタイルの小部分を含むことが可能である。実際、異なるデータブロックサイズを同じ出力配列(例えば、出力フレーム)の異なる領域に使用することができ、および/またはデータブロックのサイズおよび形状を、所望するなら、例えば、書き込みトランザクション排除率に応じて適応変更することが可能である。
【0196】
レンダリング済みタイルのサイズに正確に対応しないデータブロックサイズが使用されている場合、トランザクション排除ハードウェアユニット5は、都合よく、実際に、グラフィックスプロセッサ(または出力配列用にデータをこれに供給する他のプロセッサ)から受け取る、レンダリング済みタイルなどの、データから適切なデータブロック(および例えば、これらのデータブロックに対する署名)を組み立てるか、または生成するように構成されうる。
【0197】
上記のことから、本発明は、少なくともその好ましい実施形態において、例えば、グラフィックスプロセッサの電力消費およびメモリ帯域幅を低減するのに役立ちうることがわかる。
【0198】
これは、少なくとも本発明の好ましい実施形態では、不要なフレームバッファメモリトランザクションを排除することによって、達成される。これにより、フレームバッファにレンダリングされるデータの量が低減され、したがって、システムの電力消費量およびメモリ帯域幅の消費量が大幅に低減される。これは、グラフィックスフレームバッファ、テクスチャにグラフィックスレンダー、ビデオフレームバッファ、および合成フレームバッファトランザクションなどに適用することができる。
【0199】
出願人は、グラフィックスおよびビデオオペレーションに関して、トランザクション低減率は、0から30%までの間にある可能性があることを発見した。(Quake 4およびDoom 3などのいくつかのふつうのゲームの分析結果から、それぞれのフレーム内のタイルの0から30%までは典型的に同じであることがわかった。)合成フレームバッファオペレーションでは、トランザクション排除率は、この時間の大半の間マウスポインタのみが動いているので、非常に高い(90%を超える)可能性があると考えられる。
【0200】
本発明を使用した時の節電効果は、比較的大きくなる可能性がある。
【0201】
例えば、32ビットモバイルDDR-SDRAM転送は、32ビット転送1回につき約2.4nJを消費しうる。したがって、グラフィックスプロセッサのフレーム出力レートを30Hzと想定し、一次効果のみを考えると、グラフィックスプロセッサのフレームバッファ書き込みは(本発明がない場合)、HDグラフィックスに対して約(1920×1080×4)×(2.4nJ/4)×30=150mWを消費する。
【0202】
その一方で、HDグラフィックスについて、フレームバッファトラヒックの20%を排除することができれば、約30mW(および50MB/s)の節減となる。HD合成フレームバッファについては、フレームバッファトラヒックの90%を取り除くと、135mW(および220MB/s)の低減となる。
【符号の説明】
【0203】
1 タイルベースのグラフィックスプロセッサまたはグラフィックスプロセッシングユニット(GPU)
2 メモリ
3 相互接続部
4 メモリコントローラ
5 トランザクション排除ハードウェア
10、11 部分
20 署名生成器
21 バッファ
22 署名バッファ
23 署名比較器
24 書き込みコントローラ
31 部分集合
40 タイルレンダリングロジック
41 データブロック生成ロジック
42 バッファ
43 ブロック比較ロジック
44 フレームバッファ
45 メタデータビットマップ
60 ビデオコーデック
61 CPU

【特許請求の範囲】
【請求項1】
データ処理システムによって生成されるデータが、データの出力配列を出力バッファ内に形成するために使用されるデータ処理システムの動作方法であって、
前記データ処理システムがデータの前記出力配列の特定の領域を表すデータのブロックを前記出力バッファに書き込むことによってデータの前記出力配列を前記出力バッファ内に格納するステップと、
データのブロックが前記出力データ配列に対して生成されている場合、前記データ処理システムがデータのそのブロックをデータの少なくとも1つの他のブロックと比較し、前記比較に基づいてデータの前記生成されたブロックを前記出力バッファに書き込むかどうかを決定するステップとを含む方法。
【請求項2】
前記比較プロセスは、前記各データブロックの内容を表す署名を比較するステップを含む請求項1に記載の方法。
【請求項3】
前記生成されたデータブロックは、ただ1つの他のデータブロックと比較される請求項1または2に記載の方法。
【請求項4】
前記データブロック比較は、所定の出力データ配列に対して生成されるべき前記データブロックのうちの全部ではなく一部に関して実行される請求項1から3のいずれか一項に記載の方法。
【請求項5】
前記データ処理システムは、それぞれのデータブロック位置に関して新たに生成されたデータブロックを前記出力バッファに定期的に常に書き込むように構成される請求項1から4のいずれか一項に記載の方法。
【請求項6】
前記データ処理システムは、タイルベースのグラフィックス処理システムであり、それぞれのデータブロックは、前記グラフィックス処理システムが生成するレンダリング済みタイルに対応する請求項1から5のいずれか一項に記載の方法。
【請求項7】
前記データ処理システムは、グラフィックス処理システムであり、前記出力データ配列は、前記グラフィックス処理システムによって生成されるべき出力フレームである請求項1から6のいずれか一項に記載の方法。
【請求項8】
前記データ処理システムは、グラフィックス処理システムであり、前記出力バッファは、前記グラフィックス処理システムの前記出力の書き込み先となるフレームバッファである請求項1から7のいずれか一項に記載の方法。
【請求項9】
前記データ処理システムは、グラフィックス処理システムであり、前記出力バッファは、前記グラフィックス処理システムの前記出力の書き込み先となるテクスチャまたは他のサーフェスである請求項1から8のいずれか一項に記載の方法。
【請求項10】
データプロセッサによって供給されるべきデータの出力配列を形成するためのデータを生成するための手段を備えるデータプロセッサと、
前記データプロセッサによって生成されたデータを、データの前記配列の特定の領域を表すデータのブロックを出力バッファに書き込むことによってデータの配列として前記出力バッファ内に格納するための手段とを備え、
前記出力データ配列に対して生成されたデータのブロックをデータの少なくとも1つの他のブロックと比較し、その比較に基づいてデータの前記生成されたブロックを前記出力バッファに書き込むかどうかを決定するための手段をさらに備えるデータ処理システム。
【請求項11】
データ処理システムによって生成されるデータの出力配列がデータの前記出力配列の特定の領域を表すデータのブロックを出力バッファに書き込むことによって前記出力バッファ内に格納される前記データ処理システムにおいて使用するための書き込みトランザクション排除装置であって、
前記出力データ配列に対して生成されたデータのブロックをデータの少なくとも1つの他のブロックと比較し、前記比較に基づいてデータの前記生成されたブロックを前記出力バッファに書き込むかどうかを決定するための手段を備える書き込みトランザクション排除装置。
【請求項12】
前記比較手段は、前記各データブロックの内容を表す署名を比較するための手段を含む請求項10に記載のシステムまたは請求項11に記載の装置。
【請求項13】
前記生成されたデータブロックは、ただ1つの他のデータブロックと比較される請求項10から12のいずれか一項に記載のシステムまたは装置。
【請求項14】
所定の出力データ配列に対して他の1つまたは複数のデータブロックと比較されるべき前記生成されるデータブロックの個数を選択するための手段をさらに備える請求項10から13のいずれか一項に記載のシステムまたは装置。
【請求項15】
前記データ処理システムまたは書き込みトランザクション排除装置は、それぞれのデータブロック位置に関して新たに生成されたデータブロックを前記出力バッファに定期的に常に書き込むように構成される請求項10から14のいずれか一項に記載のシステムまたは装置。
【請求項16】
前記データ処理システムは、タイルベースのグラフィックス処理システムであり、それぞれのデータブロックは、前記グラフィックス処理システムが生成するレンダリング済みタイルに対応する請求項10から15のいずれか一項に記載のシステムまたは装置。
【請求項17】
前記データ処理システムは、グラフィックス処理システムであり、前記出力バッファは、前記グラフィックス処理システムの前記出力の書き込み先となるフレームバッファである請求項10から16のいずれか一項に記載のシステムまたは装置。
【請求項18】
前記データ処理システムは、グラフィックス処理システムであり、前記出力バッファは、前記グラフィックス処理システムの前記出力の書き込み先となるテクスチャまたは他のサーフェスである請求項10から16のいずれか一項に記載のシステムまたは装置。
【請求項19】
前記データプロセッサによって生成されたデータを、データの前記配列の特定の領域を表すデータのブロックを出力バッファに書き込むことによってデータの配列として前記出力バッファ内に格納するための手段を備える書き込みトランザクション排除ハードウェア要素と、前記出力データ配列に対して生成されたデータのブロックをデータの少なくとも1つの他のブロックと比較し、その比較に基づいてデータの前記生成されたブロックを前記出力バッファに書き込むかどうかを決定するための手段とを備える請求項10または請求項12から18のいずれか一項に記載のシステム。
【請求項20】
前記書き込みトランザクション排除ハードウェア要素は、前記データプロセッサの一体となる部分である請求項19に記載のシステム。
【請求項21】
データの出力配列の特定の領域を表すデータのブロックを出力バッファに書き込んでデータの前記出力配列を格納するデータ処理システムによってデータの前記出力配列が生成される前記データ処理システムの動作方法であって、
前記データ処理システムが、前記出力バッファにデータのブロックが書き込まれるときに、データのそのブロックを前記出力バッファ内にすでに格納されているデータの少なくとも1つのブロックと比較し、データの複数のブロックに対する前記比較の結果を使用して前記データ処理システムの異なる出力配列間の相関を推定するステップを含む方法。
【請求項22】
データ処理システムであって、
前記データ処理システムによって供給されるべきデータの出力配列を形成するためのデータを生成するための手段と、
前記データ処理システムによって生成されたデータを、データの配列の特定の領域を表すデータのブロックを出力バッファに書き込むことによってデータの前記配列として前記出力バッファ内に格納するための手段と、
前記出力バッファに書き込まれるべきデータブロックを前記出力バッファ内にすでに格納されている少なくとも1つのデータブロックと比較するための手段と、
データの複数のブロックに対する前記比較の結果を使用して前記データ処理システムの異なる出力配列間の相関を推定するための手段とを備えるデータ処理システム。
【請求項23】
コンピュータプログラム要素であって、
前記プログラム要素がデータ処理手段上で実行されたときに請求項1から9または21のいずれか一項に記載の方法を実行するコンピュータソフトウェアコード部分を備えるコンピュータプログラム要素。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4a】
image rotate

【図4b】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate


【公開番号】特開2011−70672(P2011−70672A)
【公開日】平成23年4月7日(2011.4.7)
【国際特許分類】
【外国語出願】
【出願番号】特願2010−213509(P2010−213509)
【出願日】平成22年9月24日(2010.9.24)
【出願人】(504394342)アーム・リミテッド (134)
【Fターム(参考)】