説明

メモリからのデータの配列の読み込みを制御する方法および装置

【課題】フレームバッファ、読み込みオペレーションなど、データ配列に対する改善を提供すること。
【解決手段】ディスプレイコントローラ7は、フレームバッファ3からデータブロックを読み込み、ローカルメモリバッファ8内に格納し、それらのデータブロックをディスプレイ2に出力する。ディスプレイコントローラ7は、類似度メタデータ10を使用して、表示処理されるべき新しいデータブロックがディスプレイコントローラ7のローカルメモリ8内にすでに格納されているブロックに類似しているかどうかを判定する。処理すべきデータブロックがローカルバッファ8内のデータブロックに類似している場合、ディスプレイコントローラは、フレームバッファ3から新しいデータブロックを読み込まず、バッファ8内にある既存のデータブロックをディスプレイ2に供給する。

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

【特許請求の範囲】
【請求項1】
データの配列を処理する方法であって、処理デバイスはデータの前記配列を、それぞれがデータの前記配列の特定の領域を表すデータの連続するブロックを処理することによって処理し、データの前記配列の特定の領域を表すデータのブロックはデータの前記配列が格納されている第1のメモリから読み込まれ、前記処理デバイスによってデータの前記ブロックが処理される前に前記処理デバイスのメモリ内に格納される方法において、
前記データ配列に対して処理されるべきデータのブロックが、前記処理デバイスの前記メモリ内にすでに格納されているデータのブロックに類似しているかどうかを判定し、前記類似度判定に基づいて、処理すべきデータの前記ブロックに対して前記処理デバイスの前記メモリ内にすでに格納されているデータのブロック、または前記第1のメモリ内に格納されているデータの前記配列からのデータの新しいブロックを処理するステップを含む方法。
【請求項2】
前記データ配列に対して処理されるべきデータのブロックが、前記処理デバイスの前記メモリ内にすでに格納されているデータのブロックに類似しているかどうかを判定し、前記類似度判定に基づいて、処理すべきデータの前記ブロックに対して前記処理デバイスの前記メモリ内にすでに格納されているデータのブロック、または前記第1のメモリ内に格納されているデータの前記配列からのデータの新しいブロックを処理するステップは、
処理すべきデータのブロックが、前記処理デバイスの前記ローカルメモリ内にすでに格納されているデータのブロックに類似していると考えられると判定された場合に、データの新しいブロックを、前記第1のメモリ内に格納されている前記データ配列から読み込まず、前記処理デバイスの前記メモリ内に格納するが、その代わりに、前記処理デバイスの前記メモリ内のデータの既存の前記ブロックを、前記処理デバイスによって処理されるべきデータのブロックとして処理するステップと、
処理すべきデータのブロックが、前記処理デバイスの前記メモリ内にすでに格納されているデータのブロックに類似していると考えられないと判定された場合に、データの新しいブロックを、前記第1のメモリ内に格納されている前記データ配列から読み込み、前記処理デバイスの前記メモリ内に格納し、次いで、データのその新しいブロックを、前記処理デバイスによって処理されるべきデータのブロックとして処理するステップとを含む請求項1に記載の方法。
【請求項3】
前記処理デバイスは、ディスプレイコントローラ、CPU、ビデオプロセッサ、およびグラフィックスプロセッサのうちの1つである請求項1または2のいずれか一項に記載の方法。
【請求項4】
前記類似度判定プロセスは、データの前記配列に関連付けられている類似度情報を使用して処理すべきデータブロックが前記処理デバイスの前記メモリ内にすでに格納されているブロックに類似しているかどうかを判定する請求項1から3のいずれか一項に記載の方法。
【請求項5】
前記データ配列は、前記データ配列内の各それぞれのデータブロックについてそのデータブロックが前記データ配列内の他のデータブロックに類似しているかどうかを示す類似度情報を関連付けられており、前記類似度判定プロセスは、前記データブロックに対する前記関連する類似度情報を使用して処理すべきデータブロックが前記処理デバイスの前記メモリ内にすでに格納されているデータブロックに類似しているかどうかを判定する請求項1から4のいずれか一項に記載の方法。
【請求項6】
メモリ内に格納されているデータの配列を処理するときに使用するためのメタデータを生成する方法であって、
処理すべきデータの配列の特定の領域を表すデータの1つまたは複数のブロックのそれぞれについて、
データの前記ブロックが、前記データ配列に対するデータの他のブロックに類似していると考えるべきかどうかを判定するステップと、
データの前記ブロックが、前記データ配列のデータの他のブロックに類似していると判定されたかどうかを示す類似度情報を生成するステップと、
データの前記ブロックが、データの前記配列に関連して前記データ配列に対するデータの他のブロックに類似していると判定されたかどうかを示す前記類似度情報を格納するステップとを含む方法。
【請求項7】
データの前記ブロックが前記データ配列に対するデータの他のブロックに類似していると考えるべきであるかどうかを判定する前記ステップは、前記データブロックの前記実際の内容の一部または全部を比較して前記データブロックが類似していると考えられるかどうかを判定するステップを含む請求項6に記載の方法。
【請求項8】
データの配列を処理する方法であって、
処理すべきデータの配列を生成するステップと、
処理すべきデータの前記配列の特定の領域を表すデータの1つまたは複数のブロックのそれぞれについて、
データの前記ブロックが、前記データ配列に対するデータの他のブロックに類似していると考えるべきかどうかを判定するステップと、
データの前記ブロックが、前記データ配列のデータの他のブロックに類似していると判定されたかどうかを示す類似度情報を生成するステップと、
データの前記配列およびその関連する生成された類似度情報を格納するステップと、
データの前記格納されている配列からデータの前記配列の特定の領域をそれぞれ表すデータのブロックを読み込み、データの前記ブロックが処理デバイスによって処理される前に前記データ配列を処理すべき前記処理デバイスのメモリ内にデータのブロックを格納するステップと、
前記データ配列に対して生成された前記類似度情報を使用して、前記データ配列に対して処理すべきデータのブロックが前記処理デバイスの前記メモリ内にすでに格納されているデータのブロックに類似しているかどうかを判定するステップと、
処理すべきデータの前記ブロックに対して、前記類似度判定に基づいて、前記処理デバイスの前記メモリ内にすでに格納されているデータのブロックを、または前記第1のメモリ内に格納されているデータの前記配列からデータの新しいブロックを処理するステップとを含む方法。
【請求項9】
メモリ内の前記データ配列へのデータブロックの書き込みを、そのデータブロックが前記データ配列に対する他のデータブロックに類似していると考えるべきであると判定された場合には、行わないようにするステップをさらに含む請求項6から8のいずれか一項に記載の方法。
【請求項10】
データの前記配列は、画像を表すデータである請求項1から9のいずれか一項に記載の方法。
【請求項11】
考察されているデータのブロックは、それぞれ、前記データ配列のキャッシュラインまたは2D部分タイルを含む請求項1から10のいずれか一項に記載の方法。
【請求項12】
処理すべきデータの配列を格納するための第1のメモリと、
前記第1のメモリ内に格納されているデータの配列を、それぞれがデータの前記配列の特定の領域を表すデータの連続するブロックを処理することによって処理する、ローカルメモリを有する処理デバイスと、
前記第1のメモリ内に格納されているデータの配列の特定の領域を表すデータのブロックを読み込み、データの前記ブロックが前記処理デバイスによって処理される前に前記処理デバイスの前記ローカルメモリ内にデータの前記ブロックを格納するように構成された読み込みコントローラと、
前記データ配列に対して処理されるべきデータのブロックが、前記処理デバイスの前記メモリ内にすでに格納されているデータのブロックに類似しているかどうかを判定し、前記類似度判定に基づいて、処理すべきデータの前記ブロックに対して、前記処理デバイスの前記メモリ内にすでに格納されているデータのブロック、または前記第1のメモリ内に格納されているデータの前記配列からのデータの新しいブロックを前記処理デバイスに処理させるように構成されたコントローラとを備えるシステム。
【請求項13】
前記読み込みコントローラおよびコントローラは、前記処理デバイスの一部である請求項12に記載のシステム。
【請求項14】
第1のメモリ内に格納されているデータの配列を処理するときに使用するための装置であって、
前記第1のメモリ内に格納されているデータの配列の特定の領域を表すデータのブロックを読み込み、データの前記ブロックが処理デバイスによって処理される前にデータの前記配列を処理すべき前記処理デバイスのローカルメモリ内にデータの前記ブロックを格納するように構成された読み込みコントローラと、
前記データ配列に対して処理されるべきデータのブロックが、前記処理デバイスの前記メモリ内にすでに格納されているデータのブロックに類似しているかどうかを判定し、前記類似度判定に基づいて、処理すべきデータの前記ブロックに対して、前記処理デバイスの前記メモリ内にすでに格納されているデータのブロック、または前記第1のメモリ内に格納されているデータの前記配列からのデータの新しいブロックを前記処理デバイスに処理させるように構成された制御回路とを備える装置。
【請求項15】
前記コントローラは、
処理すべきデータのブロックが、前記処理デバイスの前記ローカルメモリ内にすでに格納されているデータのブロックに類似していると考えられると判定された場合に、前記読み込みコントローラに、データの新しいブロックを前記第1のメモリ内に格納されている前記データ配列から読み込ませず、データの前記新しいブロックを前記処理デバイスの前記メモリ内に格納させ、前記処理デバイスに、前記処理デバイスの前記メモリ内のデータの既存の前記ブロックを、前記処理デバイスによって処理されるべきデータのブロックとして処理させ、
処理すべきデータのブロックが、前記処理デバイスの前記メモリ内にすでに格納されているデータのブロックに類似していると考えられないと判定された場合に、読み込みコントローラに、データの新しいブロックを前記第1のメモリ内に格納されている前記データ配列から読み込ませ、前記処理デバイスの前記メモリ内に格納させ、次いで、前記処理デバイスに、データのその新しいブロックを前記処理デバイスによって処理されるべきデータのブロックとして処理させるように構成される請求項12、13、または14のいずれか一項に記載のシステムまたは装置。
【請求項16】
前記処理デバイスは、ディスプレイコントローラ、CPU、ビデオプロセッサ、およびグラフィックスプロセッサのうちの1つである請求項12、13、14、または15のいずれか一項に記載のシステムまたは装置。
【請求項17】
前記コントローラは、データの前記配列に関連付けられている類似度情報を使用して処理すべきデータブロックが前記処理デバイスの前記メモリ内にすでに格納されているブロックに類似しているかどうかを判定する請求項12から16のいずれか一項に記載のシステムまたは装置。
【請求項18】
前記データ配列は、前記データ配列の各それぞれのデータブロックについてそのデータブロックが前記データ配列内の他のデータブロックに類似しているかどうかを示す類似度情報を関連付けられており、前記コントローラは、前記そのデータブロックに対する前記関連する類似度情報を使用して処理すべきデータブロックが前記処理デバイスの前記メモリ内にすでに格納されているデータブロックに類似しているかどうかを判定する請求項12から17のいずれか一項に記載のシステムまたは装置。
【請求項19】
データの配列を生成して処理するためのデータプロセッサと、
データの配列の特定の領域を表すデータの1つまたは複数のブロックのそれぞれについて、データの前記ブロックが前記データ配列に対するデータの他のブロックに類似していると考えるべきかどうかを判定するための手段と、
データの前記ブロックが、前記データ配列に対するデータの他のブロックに類似していると判定されたかどうかを示す類似度情報を生成するための手段と、
データのブロックが、データの前記配列に関連して前記データ配列に対するデータの他のブロックに類似していると判定されたかどうかを示す前記類似度情報を格納するための手段とを備えるデータ処理システム。
【請求項20】
データの前記配列の特定の領域を表すデータの1つまたは複数のブロックのそれぞれについて、データの前記ブロックが前記データ配列に対するデータの他のブロックに類似していると考えるべきかどうかを判定するための前記手段、データの前記ブロックが前記データ配列に対するデータの他のブロックに類似していると判定されたかどうかを示す類似度情報を生成するための前記手段、およびデータのブロックがデータの前記配列に関連して前記データ配列に対するデータの他のブロックに類似していると判定されたかどうかを示す前記類似度情報を格納するための前記手段は前記データプロセッサの一部である請求項19に記載のシステム。
【請求項21】
前記データプロセッサは、カメラコントローラ、グラフィックスプロセッサ、CPU、およびビデオプロセッサのうちの1つである請求項19または20のいずれか一項に記載のシステム。
【請求項22】
データの前記ブロックが前記データ配列に対するデータの他のブロックに類似していると考えるべきであるかどうかを判定するための前記手段は、前記データブロックの前記実際の内容の一部または全部を比較して前記データブロックが類似していると考えられるかどうかを判定するための手段を含む請求項19、20、または21のいずれか一項に記載のシステム。
【請求項23】
データ処理システムによって生成されるデータの配列がデータの前記配列の特定の領域を表すデータのブロックを出力バッファから読み込むことによって前記出力バッファから読み込まれる前記データ処理システムにおいて使用するための装置であって、
前記データ配列に対するデータのブロックを前記データ配列に対するデータの少なくとも1つの他のブロックと比較し、前記比較に基づいてデータの前記ブロックが前記データ配列に対するデータの他のブロックに類似していると考えるべきかどうかを示す情報を生成するための手段と、
前記データ配列に関連してその類似度情報を格納するための手段とを備える装置。
【請求項24】
処理すべきデータの配列を生成するためのデータプロセッサと、
データの前記配列の特定の領域を表すデータの1つまたは複数のブロックのそれぞれについて、データの前記ブロックが前記データ配列に対するデータの他のブロックに類似していると考えるべきかどうかを判定するための手段と、
データの前記ブロックが、前記データ配列に対するデータの他のブロックに類似していると判定されたかどうかを示す類似度情報を生成するための手段と、
データの前記配列およびその関連する生成された類似度情報を格納するための手段と、
データの前記格納されている配列を、それぞれがデータの前記配列の特定の領域を表すデータの連続するブロックを処理することによって処理する、ローカルメモリを有する処理デバイスと、
データの前記格納されている配列からデータの前記配列の特定の領域を表すデータのブロックを読み込み、データの前記ブロックが前記処理デバイスによって処理される前に前記処理デバイスの前記ローカルメモリ内にデータの前記ブロックを格納するように構成された読み込みコントローラと、
前記データ配列に対して生成された前記類似度情報を使用して、前記データ配列に対して処理されるべきデータのブロックが、前記処理デバイスの前記メモリ内にすでに格納されているデータのブロックに類似しているかどうかを判定し、前記類似度判定に基づいて、処理すべきデータの前記ブロックに対して、前記処理デバイスの前記メモリ内にすでに格納されているデータのブロック、または前記第1のメモリ内に格納されているデータの前記配列からのデータの新しいブロックを前記処理デバイスに処理させるように構成されたコントローラとを備えるデータ処理システム。
【請求項25】
メモリ内の前記データ配列へのデータブロックの書き込みを、そのデータブロックが前記データ配列に対する他のデータブロックに類似していると考えるべきであると判定された場合には、行わないようにするための手段をさらに備える請求項19から24のいずれか一項に記載のシステムまたは装置。
【請求項26】
データの前記配列は、画像を表すデータである請求項12から25のいずれか一項に記載のシステムまたは装置。
【請求項27】
考察されているデータのブロックは、それぞれ、前記データ配列のキャッシュラインまたは2D部分タイルを含む請求項12から26のいずれか一項に記載のシステムまたは装置。
【請求項28】
前記プログラムがデータ処理システム上で実行されたときに請求項1から12のいずれか一項に記載の方法のすべてのステップを実行するためのコードを含むコンピュータプログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate


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