JP2008123497A - メモリ・キャッシュ内のデータを無効化する方法、コンピュータ可読媒体及びイメージ処理システム - Google Patents

メモリ・キャッシュ内のデータを無効化する方法、コンピュータ可読媒体及びイメージ処理システム Download PDF

Info

Publication number
JP2008123497A
JP2008123497A JP2007255065A JP2007255065A JP2008123497A JP 2008123497 A JP2008123497 A JP 2008123497A JP 2007255065 A JP2007255065 A JP 2007255065A JP 2007255065 A JP2007255065 A JP 2007255065A JP 2008123497 A JP2008123497 A JP 2008123497A
Authority
JP
Japan
Prior art keywords
memory
directory entry
cache
image processing
memory cache
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2007255065A
Other languages
English (en)
Other versions
JP4954005B2 (ja
Inventor
Jeffrey D Brown
ジェフリー・ディー・ブラウン
Eric O Mejdrich
エリック・オー・メイドリック
D Hoover Russell
ラッセル・ディー・フーバー
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2008123497A publication Critical patent/JP2008123497A/ja
Application granted granted Critical
Publication of JP4954005B2 publication Critical patent/JP4954005B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0875Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0808Multiuser, multiprocessor or multiprocessing cache systems with cache invalidating means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • G06F12/1045Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Graphics (AREA)
  • Image Generation (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

【課題】光線追跡法を効率的に実装するための方法及び装置を提供する。
【解決手段】配布されるタイム・ベース信号は、メモリ・キャッシュ内にあるデータのためにアドレス変換を提供する、メモリ・ディレクトリに結合される。メモリ・ディレクトリは、メモリ・ディレクトリ・エントリが配布されるタイム・ベース信号によってアクセスされたか否かを指示する属性ビットを有する。さらに、メモリ・ディレクトリは、配布されるタイム・ベース信号による1つのメモリ・ディレクトリ・エントリへのアクセスの後に、当該メモリ・ディレクトリ・エントリが無効であると見なすべきか否かを指示する属性ビットを有する。当該メモリ・ディレクトリ・エントリがタイム・ベース信号によるアクセスの後に無効であると見なすべきであれば、当該メモリ・ディレクトリ・エントリを使用する、如何なるアドレス変換の試みもキャッシュ・ミスを生じさせることになろう。
【選択図】図9

Description

本発明は、一般に、コンピュータ処理に係る。
3次元シーンから2次元イメージを描画(レンダリング)するプロセスは、一般に、イメージ処理と呼ばれる。現代のコンピュータ産業が発展するにつれて、イメージ処理も同様に発展してきた。イメージ処理の発展における1つの特定の目標は、3次元シーンのできるだけ現実的な2次元のシミュレーション又は表現を作成することである。現実的なイメージを描画する際の1つの制限は、最近のモニタがピクセルの使用を通してイメージを表示するということである。
ピクセルは、モニタ上で照射することができる最小の領域である。最新のモニタは、ディスプレイ全体又は描画されたシーンを構成するために、何十万又は何百万ものピクセルの組み合わせを使用する。個々のピクセルはグリッド・パターン状に配列されていて、モニタの表示領域全体を集合的にカバーする。各ピクセルを照射することにより、表示用の最終的なピクチャを描画することができる。
ピクセルを使用して2次元モニタ上に実世界の3次元シーンを描画するための1つの技術は、ラスタ化と呼ばれる。ラスタ化は、ベクトル形式(シーン内の幾何学的物体の数学的な表現)で表される2次元イメージを、モニタ上のディスプレイ用の個々のピクセルに変換するプロセスである。ラスタ化は、グラフィックスを速く描画することができ、しかも比較的少ない計算能力しか使用しないという利点を有する。しかし、ラスタ化は、幾つかの欠点を有する。例えば、ラスタ化は、光の物理的性質に基づいておらず、むしろ2次元平面上に投影される3次元シーン内の3次元の幾何学的物体の形状に基づいているので、しばしば現実感が不足する。さらに、ラスタ化を用いて3次元シーンを描画するのに必要な計算能力は、描画すべき3次元シーンがより複雑になるのに応じて直接的に増大する。イメージ処理がより現実的になるとともに、描画される3次元シーンもより複雑となる。従って、描画すべき3次元シーンがより複雑になるのに応じてラスタ化の計算能力が直接的に増大するので、イメージ処理が発展するとともに、ラスタ化を使用することは不利となる。
ピクセルを使用して2次元モニタ上に実世界の3次元シーンを描画するための他の技術は、光線追跡法(レイ・トレーシング法)と呼ばれる。光線追跡法は、モニタ・スクリーン上に描画すべき3次元シーンへの想像上の光線の伝搬を追跡する。これらの光線は、モニタ・スクリーンの後に位置する観察者の目から出て、モニタ・スクリーンを構成するピクセルを通過し、3次元シーンの方へ向かう。追跡される各光線は、3次元シーンに到達し、このシーン内の物体と交差することがある。もし、光線が3次元シーン内の物体と交差すれば、この物体の特性及び他の幾つかの要因を使用して、その交点における色及び光の量(又はその欠如)を計算する。次に、これらの計算を使用して、追跡される光線が通過したピクセルの最終的な色を決定する。
光線を追跡するプロセスは、単一の3次元シーンについて何度も行われる。例えば、ディスプレイ内の各ピクセルごとに、単一の光線を追跡することができる。一旦、モニタ・スクリーンの2次元ディスプレイを構成する全てのピクセルの色を決定するのに十分な数の光線が追跡されたならば、3次元シーンの2次元的な合成結果をモニタ・スクリーン上に表示して、観察者に提示することができる。
一般に、光線追跡法は、ラスタ化よりも優れた現実感を以て、実世界の3次元シーンを描画することができる。その1つの理由は、光線追跡法が、実世界の環境内で光がどのように進行し且つどのように振る舞うかをシミュレートしていて、ラスタ化のように単に3次元の形状を2次元平面上に投影していないという点にある。従って、光線追跡法を使用して描画されるグラフィックスは、観察者が実世界で観察するように、モニタ上に正確に現れることになる。
さらに、光線追跡法は、3次元シーンがより複雑になるにつれて、ラスタ化よりも良好に3次元シーンの複雑さの増大に対処する。光線追跡法が必要とする計算能力は、3次元シーンがより複雑になるのに応じて対数的に増大する。その1つの理由は、3次元シーンがより複雑になっても、同じ数の光線をかかる3次元シーンに当てることができるという点にある。従って、光線追跡法は、3次元シーンがより複雑になっても、ラスタ化のようには計算能力の要件の点で不利を被らない。
光線追跡法の1つの主要な欠点は、3次元シーンを描画するのに大量の計算、従って大きな処理能力が必要であるということである。このことが問題となるのは、速い描画が必要とされる場合、例えば、イメージ処理システムを用いて、ゲーム・コンソール内にアニメーション用のグラフィックスを描画する場合である。大量の計算が必要であるという光線追跡法の要件により、現実的に見えるほどアニメーションを速く描画するのは困難である(現実的なアニメーションは約20〜24フレーム/秒である)。
従って、光線追跡法を実装するためのより効率的な技術及び装置が要請されている。
本発明の目的は、光線追跡法を効率的に実装するための方法及び装置を提供することである。
本発明の第1の側面に従って、メモリ・キャッシュ内のデータを無効化する方法が提供される。この方法は、前記メモリ・キャッシュの第1の部分に対応する第1のメモリ・ディレクトリ・エントリ及び前記メモリ・キャッシュの第2の部分に対応する第2のメモリ・ディレクトリ・エントリを作成するステップを含み、前記第1及び第2のメモリ・ディレクトリ・エントリは、前記メモリ・キャッシュ内の前記データのための有効アドレス−実アドレス変換対を供給し、配布されるタイム・ベース信号を受信するときに前記第1のメモリ・ディレクトリ・エントリが無効であることを指示するように、前記第1のメモリ・ディレクトリ・エントリ内に第1のビットをセットするステップと、前記配布されるタイム・ベース信号を生成するステップと、前記配布されるタイム・ベース信号を受信することに応答して、前記第1及び第2のメモリ・ディレクトリ・エントリ内に第2のビットをセットするステップと、前記メモリ・キャッシュの前記第1の部分のためのメモリ・アドレス変換要求を受信するステップと、第1のメモリ・ディレクトリ・エントリ内の前記第1及び第2のビットを検査することにより、前記第1のメモリ・ディレクトリ・エントリが無効であることを決定するステップとをさらに含む。
本発明の第2の側面に従って、前記方法の各ステップをコンピュータに実行させるためのコンピュータ・プログラムを記録したコンピュータ可読媒体が提供される。
本発明の第3の側面に従って、イメージ処理システムが提供される。このイメージ処理システムは、第1の処理要素に結合され且つ配布されるタイム・ベース信号を周期的に生成するように構成されたフレーム・リフレッシュ・タイマ回路と、少なくとも第1の部分及び第2の部分を有するメモリ・キャッシュと、少なくとも第1及び第2のメモリ・ディレクトリ・エントリを有するメモリ・ディレクトリとを備え、前記第1のメモリ・ディレクトリ・エントリは、前記メモリ・キャッシュの前記第1の部分内のデータのための有効アドレス−実アドレス変換対を供給し、前記第2のメモリ・ディレクトリ・エントリは、前記メモリ・キャッシュの前記第2の部分内のデータのための有効アドレス−実アドレス変換対を供給し、前記第1の処理要素は、配布されるタイム・ベース信号を受信するときに前記第1のメモリ・ディレクトリ・エントリが無効であることを指示するように、前記第1のメモリ・ディレクトリ・エントリ内に第1のビットをセットをセットし、前記配布されるタイム・ベース信号を受信することに応答して、前記第1及び第2のメモリ・ディレクトリ・エントリ内に第2のビットをセットし、前記メモリ・キャッシュの前記第1の部分内のデータのためのメモリ・アドレス変換要求を受信し、前記第1のメモリ・ディレクトリ・エントリ内の前記第1及び第2のビットを検査することにより、前記第1のメモリ・ディレクトリ・エントリが無効であることを決定するように構成される。
本発明は、メモリ・キャッシュの選択した部分を無効化する一方、メモリ・キャッシュの他の部分の有効性を維持するための方法及びイメージ処理システムを提供する。本発明の1つの側面に従って、配布されるタイム・ベース信号をメモリ・ディレクトリ内の属性ビットと共に使用することにより、メモリ・キャッシュの選択した部分を無効化することができる。配布されるタイム・ベース信号は、メモリ・ディレクトリ内のエントリに結合することができる。タイム・ベース信号を配布するときに、メモリ・ディレクトリ・エントリ内の属性ビットをセットすることにより、配布されるタイム・ベース信号によってメモリ・ディレクトリ・エントリがアクセスされたことを指示することができる。さらに、メモリ・ディレクトリ・エントリは、無効化属性ビットも保持することができる。このビットがセットされると、メモリ・ディレクトリ・エントリは、次の配布されるタイム・ベース信号を受信するときに無効であると見なすように指示することができる。もし、或るメモリ・ディレクトリ・エントリ内の無効化属性ビットがセットされ、そしてこのメモリ・ディレクトリ・エントリがアクセスされたならば、このメモリ・ディレクトリ・エントリを通して以後に行われる任意のアドレス変換要求は、キャッシュ・ミスを生じさせることになろう。かかるキャッシュ・ミスが生ずる場合、処理要素は、メモリ(例えば、システム・メモリ)から有効データを取り出し、これをメモリ・キャッシュ内のデータと置き換えることができる。従って、配布されるタイム・ベース信号及びメモリ・ディレクトリ・エントリ内の属性ビットを使用することにより、或るメモリ・ディレクトリ・エントリがアドレス変換を供給したメモリ・キャッシュの部分を効率的に無効化することができる。
以下、本発明の実施形態を参照して説明する。しかし、本発明は、かかる特定の実施形態に限定されないことを理解すべきである。以下で説明する特徴及び要素の任意の組み合わせは、異なる実施形態に関係するか否かに拘わらず、本発明を実施するために考慮されているからである。さらに、種々の実施形態において、本発明は、先行技術からは期待できない多数の利点を提供する。しかし、本発明の実施形態が他の可能な解決策及び/又は先行技術からは期待できない利点を達成可能であるとしても、特定の実施形態によって特定の利点が達成されるか否かは本発明を限定するものではない。従って、以下で説明する側面、特徴、実施形態及び利点は、単なる例示であるに過ぎず、各請求項に明示的に記載されている場合を除き、各請求項を限定する要素と解すべきではない。同様に、「本発明」への言及は、本明細書に開示されている任意の発明的主題の一般化であると解すべきではないし、各請求項に明示的に記載されている場合を除き、各請求項を限定する要素であると解すべきでもない。
1つの側面において、本発明は、コンピュータ上で実行されるときに、メモリ・キャッシュ内のデータを無効化する動作を実行するプログラムを記録したコンピュータ可読媒体として実装される。このプログラムは、(本明細書で説明する方法を含む)実施形態の諸機能を定義し、種々のコンピュータ可読媒体上に記録することができる。コンピュータ可読媒体の例には、(1)CD−ROMディスクによって代表される非書き込み可能な記憶媒体、(2)フロッピ・ディスク又はハード・ディスク・ドライブによって代表される書き込み可能な記憶媒体、(3)コンピュータ・ネットワーク又は無線通信を含む電話ネットワークによって代表される通信媒体などがある。通信媒体は、インターネット及び他のネットワークから情報をダウンロードするものを含む。かかるコンピュータ可読媒体は、本発明の諸機能を定義するコンピュータ可読命令を担持する場合には、本発明の実施形態を表す。
一般に、本発明を実装するために実行されるルーチンは、オペレーティング・システムの一部であるか、或いは特定のアプリケーション、コンポーネント、プログラム、モジュール、オブジェクト又は命令のシーケンスとすることができる。一般に、本発明に従ったプログラムは、ネイティブ・コンピュータによって機械可読フォーマット(従って、実行可能命令)に変換される、多くの命令から構成される。さらに、このプログラムは、当該プログラムに対しローカルに存在するか、或いはメモリ内又は記憶デバイス上に置かれる、変数及びデータ構造から構成される。さらに、以下で説明する種々のプログラムは、発明の特定の実施形態内で当該プログラムがそのために実装されるアプリケーションに基づいて識別することができる。しかし、以下で使用されている任意のプログラム命名法は、単に説明の便宜上のものであるに過ぎないことを理解されたい。従って、本発明は、そのような命名法によって識別され及び/又は暗示される、任意の特定のアプリケーション内でのみ使用されるものと限定的に解すべきではない。
<プロセッサ・レイアウト及び通信ネットワーク>
図1は、本発明に従った多重コア処理要素100を示す。多重コア処理要素100は、複数の基本スループット・エンジン(BTE)105を含む。BTE105は、複数の処理スレッド及びコア・キャッシュ(例えば、L1キャッシュ)を含む。各BTE105の内部にある処理スレッドは、共有された多重コア処理要素キャッシュ110(例えば、L2キャッシュ)にアクセスする。
さらに、BTE105は、複数のインボックス115にもアクセスする。インボックス115は、メモリマップド・アドレス空間とすることができる。インボックス115は、各BTE105の内部にある処理スレッドにマップされる。各BTE105の内部にある各スレッドは、1つのメモリマップド・インボックスを有し、他の全てのメモリマップド・インボックス115にアクセスする。インボックス115は、BTE105によって使用される、低レイテンシ及び高帯域幅の通信ネットワークを構成する。
BTE105は、互いに通信し且つデータ処理作業を複数のBTE105間で再配布するためのネットワークとして、インボックス115を使用する。幾つかの実施形態については、例えば、BTE105による処理の結果を受信するために、別個のアウトボックスを通信ネットワーク内で使用することができる。他の実施形態については、インボックス115は、アウトボックスとしても作用することができる。例えば、1つのBTE105が処理機能の結果を他のBTE105のインボックスに直接的に書くと、後者のBTE105がその結果を使用するということである。
イメージ処理システムの総合性能は、BTE105がどれくらい良好に作業を分割し且つ再配布することができるかに関連づけられる。インボックス115のネットワークは、フレーム間コヒーレンシを有さないBTE通信情報パケットが共有された多重コア処理要素キャッシュ110内のデータを破損しないように、作業を収集し且つこれを他のBTE105に配布するために使用することができる。1フレーム当たり何百万もの3角形を描画可能なイメージ処理システムは、このように接続された多数のBTE105を含む。
本発明の1つの実施形態では、1つのBTE105のスレッドを、作業負荷マネージャ(WM)に割り当てる。イメージ処理システムは、種々のソフトウェア及びハードウェア・コンポーネントを使用して、3次元シーンから2次元イメージを描画する。本発明の1つの実施形態に従ったイメージ処理システムは、WMを使用して、このイメージ処理システムによって出された光線で空間インデックスを探査する。図4〜図6を参照して後述するように、空間インデックスは、比較的大きな3次元シーンを比較的小さなバウンディング・ボリュームへ分割するために使用される、木状のデータ構造として実装することができる。イメージ処理のために光線追跡法を使用するイメージ処理システムは、空間インデックスを使用して、光線−バウンディング・ボリューム交差を速やかに決定することができる。本発明1つの実施形態では、WMは、空間インデックスを使用して、光線−バウンディング・ボリューム交差テストを遂行することができる。
本発明の1つの実施形態では、多重コア処理要素100上にある各BTE105の他のスレッドは、ベクトル・スループット・エンジン(VTE)とすることができる。WMは、光線−バウンディング・ボリューム交差を決定した後、インボックス115を介して、複数のVTEのうちの1つに光線を出す(送る)ことができる。その後、かかるVTEは、この光線がバウンディング・ボリューム内に含まれるプリミティブと交差するか否かを決定することができる。また、VTEは、この光線が通過したピクセルの色の決定に関係する動作を遂行することができる。
図2は、本発明に従った多重コア処理要素のネットワーク200を示す。図2では、図1の1つのBTE105のスレッドが作業負荷マネージャ(WM)205であるものとして示されている。多重コア処理要素のネットワーク200内の各多重コア処理要素2201−Nは、1つのWM2051−Nを含む。また、多重コア処理要素のネットワーク200内の各多重コア処理要素2201−Nは、複数のVTE210を含むことができる。
WM2051−Nは、他のWM2051−N及び/又は他の多重コア処理要素2201−NのVTE210と通信するために、高速バス225を使用する。各VTE210は、高速バス225を使用して、他のVTE210又はWM2051−Nと通信する。WM2051−Nは、高速バス225を使用することにより、イメージ処理に関連するタスクを収集し且つこれを他のWM2051−Nに配布したり、又はタスクを他のVTE210に配布することができる。高速バス225を使用すると、WM2051−Nは、WMの通信と関係するデータ・パケットでメモリ・キャッシュ230に影響を与えることなく、通信を行うことができる。
<3次元シーン>
図3は、イメージ処理システムによって描画すべき3次元シーン305を例示する。3次元シーン305内には、物体320が存在する。図3の物体320は、互いに異なる幾何学的形状を有する。図3は、4つの物体320だけを示すが、典型的な3次元シーン内の物体の数は、これより多くてもよいし少なくてもよい。一般に、3次元シーンは、図3に示すものよりも多い物体を有するであろう。
図3に示すように、これらの物体の幾何学的形状及びサイズは、互いに異なる。例えば、図3の1つの物体は角錐320であり、他の物体は箱形320B−Dである。最近のイメージ処理システムでは、物体は、より小さく且つ単純な幾何学的形状(例えば、正方形、円、3角形など)へ分割されることが多い。その後、かかる多数の幾何学的形状によってより大きな物体が表される。一般に、かかる幾何学的形状は、プリミティブと呼ばれる。
3次元シーン305内には、光源325A−Bも示されている。これらの光源は、3次元シーン305内にある物体320を照射する。さらに、3次元シーン305内の光源325及び物体320の位置に依存して、これらの光源は、3次元シーン305内の物体上に影を投げかけることがある。
3次元シーン305は、イメージ処理システムによって、2次元ピクチャとして描画される。また、イメージ処理システムは、この2次元ピクチャをモニタ310上に表示させる。モニタ310は、最終的な2次元ピクチャを描画するために、異なる色の多数のピクセル330を使用する。
3次元シーン305を2次元ピクチャとして描画するためにイメージ処理システムによって使用される1つの方法は、光線追跡法と呼ばれる。光線追跡法は、観察者の視点315から3次元シーン305に向かう方向に想像上の光線を出す(撃ち込む)、イメージ処理システムによって行われる。これらの光線は、通常の光線に類似する特性及び振る舞いを有する。
図3に示されている1つの光線340は、視点315の位置から出て、3次元シーン305を通過する。光線340が視点315から3次元シーン305の方向に進行する際、光線340は、イメージ処理システムによって最終的な2次元ピクチャが描画されるような平面を通過する。図3では、この平面はモニタ310として表される。光線340がこの平面又はモニタ310を通過する点は、ピクセル335として表される。
既に簡述したように、殆どのイメージ処理システムは、モニタ310上に最終的なシーンを描画するために、何十万又は何百万ものピクセルのグリッド330を使用する。グリッド330は、フレームとも呼ばれる。各ピクセルは、モニタ310上に最終的な合成済みの2次元ピクチャを描画するために、異なる色を表示することができる。3次元シーンから2次元ピクチャを描画するために光線追跡法を用いるイメージ処理システムは、観察者の視点315から出た光線340が3次元シーン305内の物体に当たれば、その交点における色を計算するであろう。その後、イメージ処理システムは、光線340が観察者の視点315から3次元シーン305の方向に進行する過程で通過した特定のピクセルに対し、前記交点について計算された色を割り当てるであろう。
1ピクセル当たりに出される光線の数は、変わることがある。幾つかのピクセルは、描画すべき特定の3次元シーンについて出される多数の光線を有することがある。その場合、当該ピクセルの最終的な色は、当該ピクセルのために出された光線の全てからの各色の寄与によって決定される。他のピクセルには、2次元ピクチャ内の当該ピクセルの結果的な色を決定するために単一の光線だけが出されることがある。幾つかのピクセルには、イメージ処理システムによってどんな光線も出されないことがある。その場合、当該ピクセルの色は、イメージ処理システム内のアルゴリズムによって、決定、近似又は割り当てることができる。
2次元ピクチャ内のピクセル335の最終的な色を決定するために、イメージ処理システムは、光線340が3次元シーン305内の物体と交差するか否かを決定しなければならない。もし、光線340が3次元シーン305内のどの物体とも交差しなければ、それにはデフォルトの背景色(例えば、日中の空又は夜空を表す、青又は黒)を割り当てる。一方、光線340が3次元シーン305を通過する際に、3次元シーン305内の物体に当たることもある。そのような場合には、光線340が通過するピクセルに対し、当該物体の色を割り当てる。しかし、ピクセルに割り当てる前に、当該物体の色を決定しなければならない。
元の光線340が当たった物体の色には、多くの要因が寄与する。例えば、3次元シーン305内の光源325A−Bが物体を照射することがある。さらに、物体の物理的性質が、その物体の色に寄与することがある。例えば、この物体が反射又は透明の特性を有していれば、他の非光源物体がこの物体の色に寄与する。
3次元シーン305内の他の物体からの効果を決定するために、元の光線340と物体との交点から2次光線を出すことができる。例えば、元の光線340及び物体の交点への光の寄与を決定するために、影光線341を出すことができる。もし、この物体が半透明の特性を有していれば、イメージ処理システムは、どの色又は光がこの物体の本体を透過するかを決定するために透過光線344を出すことができる。もし、この物体が反射の特性を有していれば、イメージ処理システムは、どの色又は光が物体320上で反射されるかを決定するために、反射光線を出すことができる。
1つのタイプの2次光線は、影光線とすることができる。各影光線は、元の光線340及び物体の交点から3次元シーン305内の光源まで追跡することができる。もし、影光線がこの光源に到達する前に他の物体に遭遇せずに、影光線がこの光源に到達すれば、この光源は、元の光線340が物体に当たった点でその物体を照射するであろう。
例えば、影光線341は、元の光線340及び物体320の交点から出て、光源325に向かう方向に進行する。影光線341は、3次元シーン305内の他の任意の物体320に遭遇せずに、光源325に到達する。従って、光源325は、元の光線340及び物体320の交点において物体320を照射するであろう。
他の影光線は、元の光線340及び物体の交点と、3次元シーン内の他の物体によって阻止される光源との間にそれらの経路を有することができる。もし、元の光線340及び物体の交点と光源の間の経路を妨害する物体が不透明であれば、この光源は、元の光線340及び物体の交点において物体を照射しないであろう。従って、この光源は、元の光線340の色に寄与しないし、2次元ピクチャ内の描画すべきピクセルの色にも寄与しない。しかし、物体が半透明又は透明であれば、この光源は、元の光線340及び物体の交点において物体を照射する。
例えば、影光線341は、元の光線340及び物体320の交点から出て、光源325に向かう方向に進行する。この例において、影光線341の経路は、物体320によって阻止される。もし、物体320が不透明であれば、光源325は、元の光線340及び物体320の交点において物体320を照射しないであろう。しかし、物体320が半透明又は透明であれば、光源325は、元の光線340及び物体320の交点において物体320を照射する。
他のタイプの2次光線は、透過光線である。元の光線340と交差する物体が透明又は半透明の特性を有する場合(例えば、ガラス)、イメージ処理システムは、透過光線を出すことができる。透過光線は、元の光線340が物体に当たる角度に対し或る角度を以て、物体を通過する。例えば、図3では、透過光線344は、元の光線340と交差した物体320を通過するように図示されている。
他のタイプの2次光線は、反射光線である。元の光線340と交差した物体が反射の特性を有する場合(例えば、金属仕上げ)、イメージ処理システムは、どの色又は光が物体320上で反射されるかを決定するために、反射光線を出すことができる。反射光線は、元の光線340が物体に当たる角度に対し或る角度を以て、物体から離れるように進行する。例えば、イメージ処理システムは、元の光線340と交差した物体320上でどの色又は光が反射されるかを決定するために、反射光線343を出すことができる。
色及び光に対する全ての2次光線(例えば、影光線、透過光線、反射光線など)の総合的な寄与は、元の光線340が通過したピクセルの最終的な色に帰着するであろう。
<KDツリー>
光線追跡法を実装するときに遭遇する1つの問題は、出された光線が描画すべき3次元シーン内の任意の物体と交差するか否かを速やかに且つ効率的に決定することである。かかる光線の交差をより効率的に決定するための1つの公知の方法は、空間インデックスを使用するというものである。空間インデックスは、3次元シーン又は実世界を(この3次元シーン全体に比べて)小さなボリュームに分割する。これらの小さなボリュームは、プリミティブを含むこともあるし、含んでいないこともある。次に、イメージ処理システムは、これらの小さなボリュームの既知の境界を使用して、光線がこれらの小さなボリューム内に含まれるプリミティブと交差するか否かを決定する。もし、光線がプリミティブを含むボリュームと交差すれば、そのボリューム内に含まれるプリミティブの既知の位置及び次元に対する光線の軌跡を使用して、光線交差テストを行うことができる。もし、光線が特定のボリュームと交差しなければ、そのボリューム内に含まれるプリミティブについて光線−プリミティブ交差テストを行う必要はない。さらに、光線がプリミティブを含まないバウンディング・ボリュームと交差すれば、そのバウンディング・ボリュームについて光線−プリミティブ交差テストを行う必要はない。従って、空間インデックスを使用すると、必要な光線−プリミティブ交差テストの数を削減することができるので、光線追跡法を実装するイメージ処理システムの性能が大幅に向上する。異なる空間インデックス加速データ構造の幾つかの例には、オクトツリー、k次元のツリー(KDツリー)及び2分空間分割ツリー(BSPツリー)がある。幾つかの異なる空間インデックス構造が存在するが、本発明の実施形態を説明する便宜上、以下の例ではKDツリーを使用する。しかし、異なるタイプの空間インデックスのうち任意のものを本発明の実施形態に適用することができる。
KDツリーは、3次元シーン全体又は空間をより小さなボリュームへ分割するために、バウンディング・ボリュームに整列した軸を使用する。すなわち、KDツリーは、既知の軸と平行な分割用平面を使用することを通して、3次元シーンによって包含される3次元空間を分割することができる。かかる分割用平面は、1つのより大きな空間をより小さなバウンディング・ボリュームへ分割する。これらのより小さなバウンディング・ボリュームは、互いに3次元シーン内の空間全体を構成するものである。より大きな1つのバウンディング・ボリュームをより小さな2つのバウンディング・ボリュームに分割するという決定は、KDツリー構築アルゴリズムを使用することを通して、イメージ処理システムがこれを行うことができる。
1つのバウンディング・ボリュームをより小さなボリュームに分割すべき場合を決定するための1つの基準は、このバウンディング・ボリューム内に含まれるプリミティブの数である。すなわち、1つのバウンディング・ボリュームが予定のしきい値よりも多いプリミティブを含む限り、ツリー構築アルゴリズムは、より多くの分割用平面を引くことによって、ボリュームの分割を継続することができる。1つのバウンディング・ボリュームをより小さなボリュームに分割すべき場合を決定するための他の基準は、このバウンディング・ボリューム内に含まれる空間の量である。さらに、このバウンディング・ボリュームの分割を継続するという決定は、このバウンディング・ボリュームを作成する平面と交差するプリミティブの数に基づいてもよい。
3次元シーンの分割は、複数のノード、枝及び葉から構成された2分木構造によって表すことができる。この2分木内の各親ノードが、1つの比較的大きなバウンディング・ボリュームを表すのに対し、当該各親ノードから子ノードに延びる枝は、このバウンディング・ボリュームを1つの分割用平面によって分割した後に得られる、比較的小さな分割済みボリュームを表す。1つの軸に整列したKDツリーでは、各親ノードは、他のノードへの2つの枝を含むことができる。親ノードは、1つ又は2つの葉ノードへの枝(すなわち、ポインタ)を含むことができる。葉ノードは、より小さなボリュームへさらに細分されないノードであって、プリミティブへのポインタを含む。また、親ノードは、さらに細分される他の親ノードへの枝を含むことができる。さらに、親ノードは、分割用平面がどの軸のどの点に沿って引かれたかを決定するために必要な情報を保持することができる。
<バウンディング・ボリューム>
図4〜図6は、イメージ処理システムによって描画すべき2次元空間及び対応するKDツリーを示す。説明を簡単にするため、KDツリーを構築するのに2次元シーンが使用されるものとする。しかし、KDツリーは、3次元シーンを表すためにも使用することができる。図4〜図6の2次元的例では、3次元構造内で使用される分割用平面及びバウンディング・ボリュームの代わりに、分割用線及びバウンディング・エリアが示されている。しかし、これらの概念は、物体を含む3次元シーンにも容易に適用することができる。
図4は、モニタ310上に表示される最終的なピクチャ内で描画すべきプリミティブ410を含む、2次元シーン405を示す。このシーン全体を表す最大のボリュームは、バウンディング・ボリューム1(BV)によって包含される。対応するKDツリーでは、これは、ルート・ノードとも呼ばれる、最上位のノード450によって表すことができる。バウンディング・ボリュームが、例えば、3つ以上のプリミティブを含む場合、イメージ処理システムは、バウンディング・ボリュームをより小さなバウンディング・ボリュームに分割する動作を継続することができる。前述のように、1つのバウンディング・ボリュームをより小さなバウンディング・ボリュームに分割する動作を継続するという決定は、多くの要因に基づいてもよい。しかし、この例の説明を簡単にするため、1つのバウンディング・ボリュームの分割を継続するという決定は、プリミティブの数にのみ基づくものとする。図4から分かるように、BVは6つのプリミティブを含む。従って、KDツリー構築アルゴリズムは、BVをより小さなバウンディング・ボリュームに分割することができる。
図5は、図4と同じ2次元シーン405を示す。しかし、図5では、ツリー構築アルゴリズムは、BVをより小さな2つのバウンディング・ボリュームBV及びBVに分割している。BVの分割は、x軸上の点xにおいてx軸に沿って分割用平面SP415を引くことにより行われた。このBVの分割は、親ノードBV450の下にあり且つBV及びBVにそれぞれ対応する、2つのノード455及び460としてKDツリー内に反映されている。この時点で、BVを表す親ノードは、BVの下に位置する2つのノードBV及びBVへのポインタのような情報を格納することができる。
KDツリー構築アルゴリズムは、バウンディング・ボリュームBVが予定のしきい値(例えば、3以上)を超えるプリミティブを含むという理由で、BVの分割を継続することができる。しかし、KDツリー構築アルゴリズムは、バウンディング・ボリュームBVが予定のしきい以下のプリミティブしか含まないという理由で(例えば、BVは2つのプリミティブ410を含むに過ぎない)、BVの分割を継続しなくてもよい。BVのように、さらに分割又は細分されないノードは、葉ノードと呼ばれる。
図6は、図5と同じ2次元シーン405を示す。しかし、図6では、KDツリー構築アルゴリズムは、BVをより小さな2つのバウンディング・ボリュームBV及びBVに分割している。BVの分割は、y軸上の点yにおいてy軸に沿って分割用平面SP420を引くことにより行われた。BVは、2つの子ノードに分割されたので、今やこれを親ノードと呼ぶことができる。また、BVの分割は、BV及びBVにそれぞれ対応する、2つの葉ノード465及び470としてKDツリー内に反映されている。BV及びBVは、葉ノードである。というのは、それらが表すボリュームは、より小さなバウンディング・ボリュームにさらに分割されないからである。これらの2つの葉ノード、BV及びBVは、KDツリーにおいて、分割されたバウンディング・ボリュームを表す親ノードBVの下に位置する。
この時点で、BVを表す親ノードは、BVの下に位置する2つの葉ノードBV及びBVへのポインタのような情報を格納することができる。
この時点で、KDツリー構築アルゴリズムは、シーン内の全てのバウンディング・ボリュームが(1つのバウンディング・ボリューム内に含めることができる)予定のしきい以下のプリミティブしか含まないので、これらのバウンディング・ボリュームの分割を停止する。葉ノードは、各葉が表すバウンディング・ボリューム内に含まれるプリミティブへのポインタを保持する。例えば、葉ノードBVは、プリミティブ410へのポインタを保持し、葉ノードBVは、プリミティブ410へのポインタを保持し、葉ノードBVは、プリミティブ410へのポインタを保持する。
光線追跡法を実装するイメージ処理システムは、空間インデックス(KDツリー)を探査するために、図2の作業負荷マネージャ(WM)205を使用することができる。KDツリーの探査は、KDツリーの下位レベル(子ノード)への枝を選択することにより、光線がこの子ノード内に含まれるプリミティブと交差するか否かを決定するように進行する。WM205は、出された光線の座標及び軌跡を使用して、KDツリーを探査する。WM205は、光線−バウンディング・ボリューム交差テストを実行することにより、光線がKDツリー構造内のノードによって表されるバウンディング・ボリュームの1つの平面と交差するか否かを決定する。もし、光線がプリミティブだけを含む1つのバウンディング・ボリューム(すなわち、1つの葉ノード)と交差すれば、WM205は、光線及び関連する情報を光線−プリミティブ交差テストのためにベクトル・スループット・エンジン(VTE)210に送ることができる。光線−プリミティブ交差テストは、光線がこのバウンディング・ボリューム内のプリミティブと交差するか否かを決定するために実行することができる。この方法の利点は、シーン内に含まれる各プリミティブごとに光線−プリミティブ交差テストを実行することに比較すると、光線がシーン内の1つの物体と交差するか否かを決定するために必要とされる光線−プリミティブ交差テストの数がより少なくなるという点にある。
結果的に得られたKDツリー構造、すなわち空間インデックス構造は、図2のメモリ・キャッシュ230内に格納することができる。KDツリー及びKDツリーを構成する対応するデータのサイズは、メモリ・キャッシュ230内に格納するために最適化することができる。KDツリーをメモリ・キャッシュ230内に格納することにより、WM205は、光線がイメージ処理システムによって出されるごとにメモリからKDツリーを検索することなく、イメージ処理システムによって出された光線でKDツリーを探査することができる。
<複数の空間インデックス>
3次元シーンは、静的物体及び動的物体を有することがある。静的物体は、比較的長い期間(例えば、幾つかのフレーム)にわたって移動しないか又は形状を変えない物体である。例えば、建築物は、静的物体と見なすことができる。図7は、3次元シーン500内の建築物505を示す。この建築物505は、比較的長い期間にわたって移動しないか又は形状を変えないから、静的物体に相当する。
対照的に、動的物体は、比較的短い期間(例えば、1つ又は2つのフレーム)にわたって移動するか又は形状を変える物体である。自動車は、動的物体の1例である。例えば、図7の自動車510は、比較的短い期間にわたって3次元シーン500内で水平に移動することができる。
前述のように、イメージ処理システムは、空間インデックス(例えば、KDツリー)を使用して、3次元シーンから2次元イメージ(すなわち、フレーム)を描画することができる。もし、この3次元シーンが変われば(例えば、この3次元シーン内の物体が移動するか又は形状を変えれば)、イメージ処理システムは、次の2次元イメージ又はフレームを正確に描画するために、3次元シーン内の物体を表す空間インデックスを変更又は再構築しなければならないであろう。
もし、3次元シーン内の全ての物体がフレーム間で静的であれば(すなわち、移動しないか又は形状を変えないのであれば)、フレーム間で空間インデックスを再構築する必要はない。しかし、イメージ処理システムが光線追跡のために単一の空間インデックスのみを使用しており、しかもフレーム内の幾つかの物体が或るフレームから次のフレームまでの間に移動するか又は形状を変えるのであれば、3次元シーンを構成する物体の変化を正確に表すために、空間インデックスを再構築する必要がある。例えば、1つの動的物体が第1のフレーム内の第1の位置から第2のフレーム内の第2の位置に移動する場合、第1のフレーム内の当該物体の第1の位置を表す空間インデックスは、第2のフレーム内の当該物体の第2の位置を正確に表さないことがある。従って、空間インデックスは、第2のフレーム内の当該物体の第2の位置を正確に表すために、再構築されねばならないであろう。
イメージ処理システムによって空間インデックス全体を再構築することは、相当な量の処理サイクルを必要とし、その結果、3次元シーンの最小の部分だけが変化したに過ぎないとしても、3次元シーンから2次元イメージを描画するのに必要な時間の総量が増加することになろう。しかし、本発明によれば、3次元シーン内の物体の位置又は形状の変化に応答するのに必要な時間の量を削減するために、2つの別個の空間インデックスを構築することができる。かかる変化に応答するのに必要な時間の量を削減することによって、3次元シーンから2次元イメージを描画するのに必要な時間の量を同様に削減することができる。
図8は、3次元シーン内の全ての物体を表すことができる、2つの別個の空間インデックスを示す。1つの空間インデックスは、例えば、3次元シーン内の全ての静的物体を表す、静的空間インデックス605Aである。他の空間インデックスは、例えば、3次元シーン内の動的物体を表す、動的空間インデックス610Aである。
説明の便宜上、静的空間インデックス605Aに対応する3次元シーンは、図7の3次元シーン500であるものとする。従って、静的空間インデックス605Aは、図7の3次元シーン500内の静的物体である建築物505を表す。さらに、動的空間インデックス610Aは、図7の3次元シーン500内の動的物体(すなわち、自動車510)に対応する。
空間インデックスを探査するために図2の作業負荷マネージャ(WM)205を使用するイメージ処理システムは、空間インデックスを処理要素のメモリ・キャッシュ(例えば、図2のメモリ・キャッシュ230)内に格納することができる。空間インデックスをメモリ・キャッシュ内に格納すると、この空間インデックス内に格納された情報をWM205がアクセスするのに必要な時間が削減され、その結果、この空間インデックスを通して行われる光線の探査を促進させることができる。本発明によれば、静的空間インデックス605A及び動的空間インデックス610Aは、メモリ・キャッシュの別個の部分に格納することができる。メモリ・キャッシュの別個の部分に静的空間インデックス及び動的空間インデックスを格納すると、静的空間インデックスに影響せずに動的空間インデックスを更新することができる。
図8は、メモリ・キャッシュ620の別個の部分に空間インデックスが格納されている状況を示す。例えば、静的空間インデックス605Aをメモリ・キャッシュ620の静的空間インデックス部分625に格納し、動的空間インデックス610Aをメモリ・キャッシュ620の動的空間インデックス部分630に格納する。
図9は、静的空間インデックス及び動的空間インデックスを作成し、これらの空間インデックスをメモリ・キャッシュ内に格納するための、本発明に従った方法700のフローチャートを示す。この方法700は、ステップ705において開始し、そこでイメージ処理システムは、3次元シーン内の静的物体を表す1つの静的空間インデックス(例えば、図8の静的空間インデックス605A)を作成する。例えば、イメージ処理システムは、図4〜図6を参照して既に説明したようなKDツリーを構築する。また、ステップ705において、イメージ処理システムは、3次元シーン内の全ての動的物体を表す1つの動的空間インデックス(例えば、図8の動的空間インデックス610A)を作成する。イメージ処理システムは、静的空間インデックスと同じタイプの空間インデックス又は静的空間インデックスとは異なるタイプの空間インデックスを構築することができる。例えば、静的空間インデックス及び動的空間インデックスの両方がKDツリーであることもあるし、静的空間インデックスがKDツリーで且つ動的空間インデックスがBSPツリーであることもある。
次に、ステップ710において、イメージ処理システムは、静的空間インデックスをメモリ・キャッシュの静的空間インデックス部分に格納する。例えば、イメージ処理システムは、静的空間インデックスを図8のメモリ・キャッシュ620の静的空間インデックス部分625に格納する。静的空間インデックスの格納動作を終了した後、ステップ715に移行し、そこでイメージ処理システムは、動的空間インデックスをメモリ・キャッシュの動的空間インデックス部分に格納する。例えば、イメージ処理システムは、動的空間インデックスを図8のメモリ・キャッシュ620の動的空間インデックス部分630に格納する。
次に、ステップ720において、イメージ処理システムは、描画中の現フレームについて光線追跡を行う。ステップ720では、少なくとも1つのWM205(例えば、WM2051−N)は、静的空間インデックス605A及び動的空間インデックス610Aを使用して、3次元シーン500を通過する光線を追跡する。WM205が一方又は両方の空間インデックスの葉ノードへの光線を探査した後、WM205は、この光線を図2のベクトル・スループット・エンジン(VTE)に送る。VTE210は、この光線が探査済みの葉ノードに対応するバウンディング・ボリューム内に含まれる1つのプリミティブに当たるか否かを決定する。
光線は、静的空間インデックスの葉ノードに対応するバウンディング・ボリューム内のプリミティブ、及び動的空間インデックスの葉ノードに対応するバウンディング・ボリューム内のプリミティブに当たることがある。そうであれば、光線が通過したピクセルの色を決定するために、最初に交差したプリミティブが使用されるであろう。
イメージ処理システムは、視点(例えば、図3の視点315)と光線及びプリミティブの交点との間の距離を計算することにより、どのプリミティブが最初に交差したかを決定する。この最初に交差したプリミティブは、視点と光線及びプリミティブの交点との間の距離が最も短いものである。
イメージ処理システムは、3次元シーンから2次元イメージ(すなわち、フレーム)を描画するのに十分な数の光線追跡されるまで、3次元シーンを通過する光線の追跡を継続する。
現フレームのための光線追跡を終了した後、イメージ処理システムは、ステップ725に移行し、そこでメモリ・キャッシュ620の動的空間インデックス部分630を無効化する。メモリ・キャッシュ620の動的空間インデックス部分630の無効化は、陳腐化している動的空間インデックスをメモリ・キャッシュ620からパージするために行うことができる。メモリ・キャッシュの動的空間インデックス部分630の無効化は、イメージ処理システムによって描画すべき次のフレームのために新しい動的空間インデックスを作成し且つこれをメモリ・キャッシュ620内に保存する必要があるという予測に基づいて、行うことができる。新しい動的空間インデックスは、例えば、描画すべき次のフレーム内の動的物体の新しい位置を反映するために作成しなければならないことがある。
後述するように、キャッシュの動的空間インデックス部分の無効化は、配布されるタイム・ベース信号及びメモリ・ディレクトリ内の属性を使用することにより、行うことができる。メモリ・キャッシュは、フレーム単位で無効化することができる。
次に、ステップ730において、イメージ処理システムは、現時点が静的空間インデックスを更新すべき時間であるか否かを決定する。イメージ処理システムは、例えば、以前に静的物体と見なされていた物体が移動するか又は形状を変え、従って静的物体ではなく動的物体と見なす必要がある場合には、現時点が静的空間インデックスを更新すべき時間であると決定する。さらに、例えば、以前に動的であった物体がもはや移動していないか又は形状を変えておらず、そのため現在では静的物体と見なすことができる場合には、現時点が静的空間インデックスを更新すべき時間であると決定する。イメージ処理システムは、ステップ730において、時々、静的空間インデックスを更新する必要があると決定することができるが、この決定の頻度は、動的空間インデックスを更新する必要があると決定する頻度よりも低いのが普通である。例えば、新しい動的空間インデックスをフレームごとに作成する必要があり得るのに対し、静的空間インデックスは60フレームが経過した後にだけ更新する必要があるに過ぎない。
もし、現時点が静的空間インデックスを更新すべき時間であれば、イメージ処理システムは、ステップ705に戻り、そこで3次元シーン内の物体の変化に対応するように静的空間インデックス及び動的空間インデックスを更新する。
しかし、現時点が静的空間インデックスを更新すべき時間でなければ、イメージ処理システムは、ステップ735に移行し、そこでイメージ処理システムによって描画すべき次のフレームのために使用することができる、新しい動的空間インデックスを作成する。この新しい動的空間インデックスは、3次元シーン内の動的物体の新しい位置又は形状を反映することができる。
例えば、図10は、図7の3次元シーン500を示す。しかし、3次元シーン500内の動的物体(すなわち、自動車510)は、3次元シーン500内の第1の位置515Aから新しい位置515Bに移動している。一方、静的物体(すなわち、建築物505)は同じ位置に留まっている。従って、新しい3次元シーン500を適正に表すために、イメージ処理システムによって新しい動的空間インデックスを作成する。この新しい動的空間インデックスは、3次元シーン500内の動的物体(すなわち、自動車510)の移動を反映するものである。対照的に、静的物体は3次元シーン500内の位置を変えていないので、図7の静的物体を表すために作成された静的空間インデックスは、図10の静的物体を正確に表す。
従って、3次元シーン内の物体の移動に応答して3次元シーン内の全ての物体(すなわち、静的物体及び動的物体)を表す単一の空間インデックスを再構築する代わりに、3次元シーン内の物体の移動に対応するように動的空間インデックスだけを再構築しなければならない。3次元シーン内の物体の一部だけを表す空間インデックスの再構築は、全ての物体(すなわち、静的物体及び動的物体)を表す空間インデックスの再構築に比較して、より少ない時間を必要とするに過ぎない。
新しい動的空間インデックス610Bを作成した後、イメージ処理システムは、ステップ715に戻り、そこで新しい動的空間インデックス610Bをメモリ・キャッシュ620の動的空間インデックス部分630に格納する。
図11は、静的空間インデックス及び動的空間インデックスを格納するために使用された図8のメモリ・キャッシュ620を示す。しかし、イメージ処理システムは、3次元シーン内の物体の古い位置又は形状に対応する動的空間インデックスを、新しい動的空間インデックスで置き換えている。例えば、新しい動的空間インデックス610Bは、自動車510の新しい位置515Bを表す。この新しい動的空間インデックス610Bは、自動車510の第1の位置515Aを表していた動的空間インデックス610Aから僅かに異なっているに過ぎない。図11に示すように、古い動的空間インデックスと新しい動的空間インデックスとの間の違いは、動的空間インデックス610Bの部分615Bである。この部分615Bは、第1の位置515Aから第2の位置515Bまでの自動車510Bの位置の変化に対応する。
図11は、静的空間インデックス605Aも示す。静的物体(すなわち、建築物505)が3次元シーン500内でその位置又は形状を変えていないので、図11の静的空間インデックス605Aは、図8の静的空間インデックス605Aから変わっていない。
<データ依存有効期限による動的キャッシュ無効化>
前述のように、本発明に従ったイメージ処理システム内のメモリ・キャッシュは、動的空間インデックス及び静的空間インデックスの両方を保持する。さらに、メモリ・キャッシュは、静的空間インデックスを格納するための静的空間インデックス部分と、動的空間インデックスを格納するための動的空間インデックス部分とを有する。或る状況では、静的空間インデックス及び動的空間インデックスを別個に格納することが望ましいであろう。というのは、静的空間インデックスを格納するための静的空間インデックス部分を有効状態に維持している間に、動的空間インデックスを格納するための動的空間インデックス部分を周期的に無効化することができるからである。
動的空間インデックスを格納するための動的空間インデックス部分の周期的な無効化は、3次元シーン内の物体の(移動又は衝突に起因する)新しい位置に対応する新しい動的空間インデックスをイメージ処理システムが使用するであろうという予測に基づいて、これを行うことができる。従って、新しい動的空間インデックスを、メモリ・キャッシュ内に格納することができる。メモリ・キャッシュの動的空間インデックス部分だけを周期的に無効化すると、静的空間インデックスはメモリ・キャッシュ内に留まるが、古い動的空間インデックス(例えば、3次元シーン内の物体の古い位置を表すもの)は有効に廃棄することができる。その後、新しい動的空間インデックスを、古い動的空間インデックスが格納されていた記憶位置に格納することができる。
本発明の実施形態によれば、メモリ・キャッシュの動的空間インデックス部分は、配布されるタイム・ベース信号及びメモリ・ディレクトリ内のエントリに関連する属性ビットの組み合わせを使用して、無効化することができる。配布されるタイム・ベース信号は、イメージ処理システム内にある諸処理要素に配布することができ、それにより、多重コア処理要素のネットワークを通してそれぞれのメモリ・キャッシュの動的空間インデックス部分を同期的に且つ周期的に無効化することができるようになる。
メモリ・キャッシュの部分を無効化するために配布されるタイム・ベース信号及び追加の属性ビットの組み合わせを使用すると、フレームごとに何千又は何百万ものキャッシュ無効化命令を実行する必要性を排除することができる。これらの無効化命令を実行する必要性を排除すると、1つ又は複数の処理要素は他のイメージ処理に関係する他のタスクを実行することができ、その結果、イメージ処理システムの総合性能を改善することができる。
図12は、配布されるタイム・ベース信号を生成することができるフレーム・リフレッシュ・タイマ回路1010を含む、本発明に従った多重コア処理要素のネットワーク1000を示す。多重コア処理要素のネットワーク1000は、図2のネットワーク2に類似する。しかし、図10の多重コア処理要素のネットワーク1000は、さらにフレーム・リフレッシュ・タイマ回路1010を含む。フレーム・リフレッシュ・タイマ回路1010は、多重コア処理要素のネットワーク1000と同じチップ上に配置することができる。しかし、フレーム・リフレッシュ・タイマ回路1010は、多重コア処理要素のネットワーク1000とは別のチップ上に配置することもできる。
フレーム・リフレッシュ・タイマ回路1010は、配布されるタイム・ベース信号を生成する回路を含む。配布されるタイム・ベース信号は、多重コア処理要素のネットワーク1000内の多重コア処理要素2201−N間で配布される電気パルスとすることができる。フレーム・リフレッシュ・タイマ回路1010内の回路は、周期的な電気パルスを生成する任意の適切な回路とすることができる。例えば、かかる回路は、クロック発信器及びこのクロック発信器にゲートを接続した1つのトランジスタを含み、クロック発信器がトランジスタのゲートに電圧を供給するとき、トランジスタがそのソース及びドレインの間に電流を流すように構成することができる。生成されたパルスは、フレーム・リフレッシュ・タイマ回路1010と多重コア処理要素2201−Nの間の任意の適切な電気接続(例えば、銅線、トレースなど)を介して、配布することができる。
本発明に従って、配布されるタイム・ベース信号の期間は、イメージ処理システムのフレーム・リフレッシュ周波数に基づいて決定することができる。例えば、イメージ処理システムは、1フレームを毎秒60回描画又はリフレッシュする。イメージ処理システムが新しいフレームを描画する前に、3次元シーン内の物体の新しい位置を表すために新しい動的空間インデックスを作成することができる。この新しい動的空間インデックスは、メモリ・キャッシュ内に格納する必要がある。しかし、古い動的空間インデックス(すなわち、以前のフレームを描画するために使用されたもの)が、依然としてメモリ・キャッシュ内に格納されていることがある。新しいフレームを描画する場合には、イメージ処理システムが物体の古い位置を使用しないように、古い動的空間インデックスを無効化する必要がある。従って、イメージ処理システムが新しい動的空間インデックスを(例えば、毎秒60回)作成するごとに、古い動的空間インデックスを(例えば、毎秒60回)無効化する必要がある。
従って、配布されるタイム・ベース信号の期間は、イメージ処理システムによって必要とされるようなメモリ・キャッシュの動的空間インデックス部分を無効化するために、1/60秒とすることができる。
仮想アドレス変換を使用するイメージ処理システムは、それによって使用される有効アドレスを記憶位置に対応する実アドレスに変換/マップするために、メモリ・ディレクトリを使用することができる。図13は、有効アドレスをメモリ・キャッシュ620内の記憶位置に対応する実アドレスにマップするために使用することができる、メモリ・ディレクトリ1105を示す。本発明によれば、図13に示すように、配布されるタイム・ベース信号は、メモリ・ディレクトリ1105内の全てのエントリに結合することができる。配布されるタイム・ベース信号は、メモリ・キャッシュの空間インデックス部分を無効化するために、メモリ・ディレクトリと共に使用することができる。
前述のように、メモリ・キャッシュ620は、静的空間インデックスに関係するデータを格納するための静的空間インデックス部分625と、動的空間インデックスに関係するデータを格納するための動的空間インデックス部分630とを有する。メモリ・キャッシュ620の動的空間インデックス部分630内にあるデータにアクセスするために、メモリ・ディレクトリ・エントリを提供することができる。メモリ・ディレクトリ・エントリは、メモリ・キャッシュ620の動的空間インデックス部分630の有効アドレスを、メモリ・キャッシュ620の動的空間インデックス部分630の実アドレスにマップする。例えば、メモリ・ディレクトリ・エントリ1115は、メモリ・キャッシュ620の動的空間インデックス部分630の有効アドレスを、メモリ・キャッシュ620の動的空間インデックス部分630の実アドレスにマップする。
アドレス変換情報に加えて、メモリ・ディレクトリ1105内のメモリ・ディレクトリ・エントリは、属性ビット1120を保持する。これらの属性ビット1120は、メモリ・キャッシュ内のデータに関係する属性を定義する。本発明に従って、メモリ・ディレクトリ内の既存の属性ビットに、新しい第1の属性ビットが追加される。この新しい第1の属性ビットは、配布されるタイム・ベース信号がメモリ・ディレクトリ・エントリ1115によって次に受信されるときに、メモリ・ディレクトリ・エントリ1115を無効化すべきか否かを指示する。この新しい第1の属性ビットは、「配布されるタイム・ベース信号によるアクセス時にメモリ・ディレクトリ・エントリを無効化(inv_on_dtbs)」ビットと呼ばれる。さらに、本発明に従って、メモリ・ディレクトリ・エントリ1115は、新しい第2の属性ビットも保持する。この新しい第2の属性ビットは、メモリ・ディレクトリ・エントリ1115が、配布されるタイム・ベース信号(acc_by_dtbs)によってアクセスされたか否かを指示する。この新しい第2の属性ビットは、「配布されるタイム・ベース信号によるアクセス(acc_by_dtbs)」ビットと呼ばれる。
inv_on_dtbsビット及びacc_by_dtbsビットを比較すると、その結果に応じて、メモリ・ディレクトリ・エントリからマップされたキャッシュ内の記憶位置が有効であるか否かを指示することができる。例えば、図13のメモリ・ディレクトリ・エントリ1115は、acc_by_dtbsビット及びinv_on_dtbsビットの両方を有する。図13に示すように、メモリ・ディレクトリ・エントリ1115は、そのinv_on_dtbsビットをアサートしている(例えば、論理「1」)。 このことは、イメージ処理システムがメモリ・キャッシュ内にデータ(例えば、動的空間インデックス)を格納するのを望んでいること、具体的には、配布されるタイム・ベース信号を受信するときに無効化されるメモリ・ディレクトリ・エントリ1115内に保持される有効アドレスに対応するメモリ・キャッシュ内の記憶位置に前記データを格納するのを望んでいることを指示することができる。
さらに、図13に示すように、メモリ・ディレクトリ・エントリ1115は、そのacc_by_dtbsビットをアサートしている(例えば、論理「1」)。 このことは、メモリ・ディレクトリ・エントリ1115が、フレーム・リフレッシュ・タイマ回路1010から配布されるタイム・ベース信号(すなわち、パルス)を受信したことを指示する。従って、次に1つの処理要素がメモリ・キャッシュ620の動的空間インデックス部分630内にあるデータにアクセスするとき(すなわち、メモリ・キャッシュ620の動的空間インデックス部分630に対応する、メモリ・ディレクトリ・エントリ1115によって指定された範囲内で有効アドレスを変換しようとするとき)、acc_by_dtbsビット及びinv_on_dtbsビットを検査することにより、メモリ・ディレクトリ・エントリが無効であり、その結果、キャッシュ・ミスを引き起こすであろうということを指示することができる。
このキャッシュ・ミスに応答して、処理要素は、メモリ(例えば、システム・メモリ)から有効データを取り出し、この有効データをメモリ・キャッシュ1110内に配置することができる。メモリから取り出されるデータは、例えば、描画すべき次のフレームのためにイメージ処理システムによって作成される新しい動的空間インデックスであり得る。
従って、特定のメモリ・ディレクトリ・エントリ用のinv_on_dtbsビットをセットすることによって、イメージ処理システムは、周期的に無効化すべきメモリ・キャッシュの空間インデックス部分を指定することができる。さらに、この無効化の周波数は、イメージ処理システムのフレーム・リフレッシュ周波数に調節することができる、配布されるタイム・ベース信号の周波数によって決定される。
さらに、配布されるタイム・ベース信号は、各々が1つのメモリ・ディレクトリ及び1つのメモリ・キャッシュを有する、複数の多重コア処理要素(例えば、図12に示す各多重コア処理要素2201−N)に配布することができる。多重コア処理要素内の各メモリ・ディレクトリは、複数の属性ビットを保持することができる。これらの属性ビットは、配布されるタイム・ベース信号によって次にアクセスされるときに、キャッシュの特定の空間インデックス部分(例えば、動的空間インデックス部分630)が無効化されることを指示することができる。各メモリ・キャッシュ230の空間インデックス部分を無効化することによって、複数の多重コア処理要素間のメモリ・コヒーレンシを達成することができる。
例えば、多重コア処理要素の各々は、3次元シーンから単一フレームを描画することに関係するタスクを実行することができる。さらに、多重コア処理要素2201−Nの各メモリ・キャッシュ230は、同じ動的空間インデックスのコピーを保持することができる。フレームがイメージ処理システムによって描画された後、その動的空間インデックスに対応するメモリ・ディレクトリ・エントリは、配布されるタイム・ベース信号を使用することを通して、各メモリ・キャッシュ230内で同時に無効化することができる。その後、動的空間インデックスを保持する任意のメモリ・キャッシュ230の空間インデックス部分にアクセスするどんな将来の試みも、キャッシュ・ミスを引き起こし、その結果、処理要素(例えば、作業負荷マネージャ2051−N)はメモリ(例えば、システム・メモリ)から有効データを取り出すことを必要とするであろう
メモリ・キャッシュ全体を(例えば、フラッシュ無効化を通して)無効化するのとは対照的に、メモリ・キャッシュの一部を無効化する能力は、イメージ処理システムがフレーム間でキャッシュ内のデータ(例えば、静的空間インデックス)を維持する間に、キャッシュの他の部分(例えば、動的空間インデックス)を無効化することを可能にする。
アドレス変換を提供するメモリ・ディレクトリ1105に加えて、メモリ・キャッシュ620と共にキャッシュ・ディレクトリを使用することにより、実アドレスをメモリ・キャッシュ620内のエントリにマップすることができる。もし、メモリ・キャッシュ620内のキャッシュ・エントリを無効にせずに、メモリ・ディレクトリ1105においてキャッシュ・エントリが無効化されるならば、古いデータがメモリ・キャッシュ620内にそのまま残り、イメージ処理システムによって後でアクセスされる可能性がある。古いデータにアクセスすることができるのは、それがシステム・メモリからのデータ(例えば、新しい動的空間インデックス)と置き換えられておらず、しかもメモリ・キャッシュ620内の古いデータのアドレスのための変換を供給する、メモリ・ディレクトリ・エントリ内のacc_by_dtbsビットをイメージ処理システムがリセットする場合である。しかし、本発明によれば、スクラバ(scrubber)機能を使用することにより、配布されるタイム・ベース信号に応答してメモリ・キャッシュ620内の古いデータを無効化することができる。
例えば、図14は、キャッシュ・ディレクトリ1205を示す。各キャッシュ・ディレクトリ・エントリは、当該キャッシュ・ディレクトリ・エントリに対応するメモリ・キャッシュ620内のデータが有効又は無効であることを指示するための有効ビットを保持することができる。また、各キャッシュ・ディレクトリ・エントリは、メモリ・キャッシュ620が実アドレスに対応するエントリを保持しているか否かを決定するために使用される、タグ・ビット及びセット・ビットを保持することができる。
本発明によれば、スクラバ機能は、タイム・ベース無効化信号を受信するときに活動化することができる。活動化されると、スクラバ機能は、inv_on_dtbsビットがアサートされているエントリを求めて、メモリ・ディレクトリ1105を探索する。スクラバ機能は、各メモリ・ディレクトリ・エントリのinv_on_dtbsビットがアサートされているか否かを決定し、メモリ・ディレクトリ1105内の実アドレスと一致するエントリを求めてメモリ・キャッシュ620を探索し、キャッシュ・ディレクトリ1205内の対応する有効ビットを(例えば、「0」に)セットすることにより、対応するメモリ・キャッシュ・エントリを無効化することができる。従って、スクラバ機能によって無効化されたキャッシュ・エントリへの如何なるアクセスの試みも、キャッシュ・ミスを引き起こすであろう。従って、スクラバ機能は、配布されるタイム・ベース信号によって無効化されたメモリ・ディレクトリ・エントリに対応する、メモリ・キャッシュ620内の古いデータを無効化することによって、メモリ・キャッシュ620内の古いデータが将来においてアクセスされないことを保証することができる。
本明細書では、メモリ・キャッシュを無効化する方法及び装置は、動的空間インデックスを保持するメモリ・キャッシュの一部を無効化するものとして説明されたが、本発明は、動的空間インデックスのみを保持するキャッシュ・メモリ領域を無効化することに限定されないことを理解されたい。その代わりに、イメージ処理に関係するか否かに拘わらず、任意のタイプのデータを保持するメモリ・キャッシュの任意の部分を、本明細書で説明した方法及び装置によって無効化することができる。
本発明によれば、配布されるタイム・ベース信号は、メモリ・キャッシュ内にあるデータのためにアドレス変換を提供する、メモリ・ディレクトリに結合される。メモリ・ディレクトリは、メモリ・ディレクトリ・エントリが配布されるタイム・ベース信号によってアクセスされたか否かを指示する属性ビットを有する。さらに、メモリ・ディレクトリは、配布されるタイム・ベース信号による1つのメモリ・ディレクトリ・エントリへのアクセスの後に、当該メモリ・ディレクトリ・エントリが無効であると見なすべきか否かを指示する属性ビットを有する。もし、当該メモリ・ディレクトリ・エントリが配布されるタイム・ベース信号によってアクセスされ、しかも当該メモリ・ディレクトリ・エントリがタイム・ベース信号によるアクセスの後に無効であると見なすべきであれば、当該メモリ・ディレクトリ・エントリを使用する、如何なるアドレス変換の試みもキャッシュ・ミスを生じさせることになろう。キャッシュ・ミスに応じて、システム・メモリからの有効データの検索を開始することができる。
前述の説明は、本発明の実施形態に向けられているが、本発明の基本概念から逸脱することなく本発明の他の実施形態を想到し得ることは明らかである。本発明の範囲は、請求項の記載に基づいて決定されるべきものである。
本発明に従った多重コア処理要素を示す図である。 本発明に従った多重コア処理要素のネットワークを示す図である。 本発明に従ったイメージ処理システムによって描画すべき3次元シーンを示す図である。 本発明に従ったイメージ処理システムによって描画すべき2次元空間及びこのイメージ処理システムによって作成される対応する空間インデックスを示す図である。 本発明に従ったイメージ処理システムによって描画すべき2次元空間及びこのイメージ処理システムによって作成される対応する空間インデックスを示す図である。 本発明に従ったイメージ処理システムによって描画すべき2次元空間及び当該イメージ処理システムによって作成される対応する空間インデックスを示す図である。 本発明に従ったイメージ処理システムによって描画すべき3次元シーンを示す図である。 静的空間インデックス及び動的空間インデックスを保持するための、本発明に従ったメモリ・キャッシュを示す図である。 空間インデックスを作成し且つこれらの空間インデックスをメモリ・キャッシュ内に格納することを管理するための、本発明に従った方法を示すフローチャートである。 本発明に従ったイメージ処理システムによって描画すべき3次元シーンを示す図である。 静的空間インデックス及び動的空間インデックスを保持するための、本発明に従ったメモリ・キャッシュを示す図である。 本発明に従った多重コア処理要素のネットワークを示す図である。 本発明に従ったメモリ・ディレクトリ及びメモリ・キャッシュを示す図である。 本発明に従ったキャッシュ・ディレクトリ及びメモリ・キャッシュを示す図である。
符号の説明
100 多重コア処理要素
220 多重コア処理要素
620 メモリ・キャッシュ
625 静的空間インデックス部分
630 動的空間インデックス部分
1010 フレーム・リフレッシュ・タイマ回路
1105 メモリ・ディレクトリ
1115 メモリ・ディレクトリ・エントリ
1120 属性ビット

Claims (13)

  1. メモリ・キャッシュ内のデータを無効化する方法であって、
    前記メモリ・キャッシュの第1の部分に対応する第1のメモリ・ディレクトリ・エントリ及び前記メモリ・キャッシュの第2の部分に対応する第2のメモリ・ディレクトリ・エントリを作成するステップを含み、
    前記第1及び第2のメモリ・ディレクトリ・エントリは、前記メモリ・キャッシュ内の前記データのための有効アドレスを実アドレスに変換することを可能にし、
    配布されるタイム・ベース信号を受信することに応答して前記第1のメモリ・ディレクトリ・エントリが無効であることを指示するように、前記第1のメモリ・ディレクトリ・エントリ内に第1のビットをセットするステップと、
    前記配布されるタイム・ベース信号を生成するステップと、
    前記配布されるタイム・ベース信号を受信することに応答して、前記第1及び第2のメモリ・ディレクトリ・エントリ内に第2のビットをセットするステップと、
    前記メモリ・キャッシュの前記第1の部分のためのメモリ・アドレス変換要求を受信するステップと、
    前記第1のメモリ・ディレクトリ・エントリ内の前記第1及び第2のビットを検査することにより、前記第1のメモリ・ディレクトリ・エントリが無効であることを決定するステップとをさらに含む、方法。
  2. 前記配布されるタイム・ベース信号を受信することに応答して、前記メモリ・キャッシュの前記第1の部分を無効化するステップと、
    前記第1のメモリ・ディレクトリ・エントリに対応する第1の記憶位置内のデータを更新するステップと、
    前記第1及び第2のメモリ・ディレクトリ・エントリ内の前記第2のビットをクリアするステップと、
    前記メモリ・キャッシュの前記第1の部分のためのメモリ・アドレス変換要求を受信するステップと、
    前記第1のメモリ・ディレクトリ・エントリ内の前記第1及び第2のビットを検査することにより、前記第1のメモリ・ディレクトリ・エントリが有効であることを決定するステップとをさらに含む、請求項1に記載の方法。
  3. 前記メモリ・キャッシュの前記第1の部分が無効であることを決定するステップと、
    前記第1の記憶位置から前記データを検索するステップと、
    前記データを前記メモリ・キャッシュの前記第1の部分内に配置するステップとをさらに含む、請求項2に記載の方法。
  4. 前記メモリ・キャッシュの前記第2の部分のためのメモリ・アドレス変換要求を受信するステップと、
    前記第2のメモリ・ディレクトリ・エントリ内の前記第1及び第2のビットを検査することにより、前記第2のメモリ・ディレクトリ・エントリが有効であることを決定するステップとをさらに含み、
    前記第2のメモリ・ディレクトリ・エントリ内の前記第1のビットは、前記配布されるタイム・ベース信号を受信することに応答して前記第2のメモリ・ディレクトリ・エントリが有効であると見なすべきであることを指示する、請求項1に記載の方法。
  5. 前記配布されるタイム・ベース信号は、イメージ処理システムのフレーム・リフレッシュ周波数に従って周期的に生成される、請求項1に記載の方法。
  6. 前記配布されるタイム・ベース信号は、各々が少なくとも1つのメモリ・キャッシュを有する複数の多重コア処理要素に配布される、請求項1に記載の方法。
  7. 動的空間インデックスが前記メモリ・キャッシュの前記第1の部分に格納され、静的空間インデックスが前記メモリ・キャッシュの前記第2の部分に格納される、請求項1に記載の方法。
  8. 請求項1ないし請求項7の何れか1項に記載の方法の各ステップをコンピュータに実行させるためのコンピュータ・プログラムを記録したコンピュータ可読媒体。
  9. イメージ処理システムであって、
    第1の処理要素に結合され且つ配布されるタイム・ベース信号を周期的に生成するように構成されたフレーム・リフレッシュ・タイマ回路と、
    少なくとも第1及び第2の部分を有するメモリ・キャッシュと、
    少なくとも第1及び第2のメモリ・ディレクトリ・エントリを有するメモリ・ディレクトリとを備え、
    前記第1のメモリ・ディレクトリ・エントリは、前記メモリ・キャッシュの前記第1の部分内のデータのための有効アドレスを実アドレスに変換することを可能にし、前記第2のメモリ・ディレクトリ・エントリは、前記メモリ・キャッシュの前記第2の部分内のデータのための有効アドレスを実アドレスに変換することを可能にし、
    前記第1の処理要素は、配布されるタイム・ベース信号を受信することに応答して前記第1のメモリ・ディレクトリ・エントリが無効であることを指示するように、前記第1のメモリ・ディレクトリ・エントリ内に第1のビットをセットをセットし、前記配布されるタイム・ベース信号を受信することに応答して、前記第1及び第2のメモリ・ディレクトリ・エントリ内に第2のビットをセットし、前記メモリ・キャッシュの前記第1の部分内のデータのためのメモリ・アドレス変換要求を受信し、前記第1のメモリ・ディレクトリ・エントリ内の前記第1及び第2のビットを検査することにより、前記第1のメモリ・ディレクトリ・エントリが無効であることを決定するように構成される、イメージ処理システム。
  10. さらに、前記第1の処理要素は、
    前記配布されるタイム・ベース信号を受信することに応答して、前記メモリ・キャッシュの前記第1の部分を無効化し、
    前記第1のメモリ・ディレクトリ・エントリに対応する第1の記憶位置内のデータを更新し、
    前記第1及び第2のメモリ・ディレクトリ・エントリ内の前記第2のビットをクリアし、
    前記メモリ・キャッシュの前記第1の部分のためのメモリ・アドレス変換要求を受信し、
    前記第1のメモリ・ディレクトリ・エントリ内の前記第1及び第2のビットを検査することにより、前記第1のメモリ・ディレクトリ・エントリが有効であることを決定するように構成される、請求項9に記載のイメージ処理システム。
  11. さらに、前記第1の処理要素は、
    前記メモリ・キャッシュの前記第1の部分が無効であることを決定し、
    前記データを前記第1の記憶位置から検索し、
    前記データを前記メモリ・キャッシュの前記第1の部分内に配置するように構成される、請求項10に記載のイメージ処理システム。
  12. 前記フレーム・リフレッシュ・タイマ回路は、第2の処理要素にも結合される、請求項9に記載のイメージ処理システム。
  13. 動的空間インデックスが前記メモリ・キャッシュの前記第1の部分に格納され、静的空間インデックスが前記メモリ・キャッシュの前記第2の部分に格納される、請求項9に記載のイメージ処理システム。
JP2007255065A 2006-11-13 2007-09-28 メモリ・キャッシュ内のデータを無効化する方法、コンピュータ可読媒体及びイメージ処理システム Active JP4954005B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/559090 2006-11-13
US11/559,090 US7836258B2 (en) 2006-11-13 2006-11-13 Dynamic data cache invalidate with data dependent expiration

Publications (2)

Publication Number Publication Date
JP2008123497A true JP2008123497A (ja) 2008-05-29
JP4954005B2 JP4954005B2 (ja) 2012-06-13

Family

ID=39370540

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007255065A Active JP4954005B2 (ja) 2006-11-13 2007-09-28 メモリ・キャッシュ内のデータを無効化する方法、コンピュータ可読媒体及びイメージ処理システム

Country Status (4)

Country Link
US (1) US7836258B2 (ja)
JP (1) JP4954005B2 (ja)
KR (1) KR100961736B1 (ja)
CN (1) CN101183339B (ja)

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009295162A (ja) * 2008-06-04 2009-12-17 Arm Ltd グラフィックス処理システム
JP2010134919A (ja) * 2008-12-05 2010-06-17 Internatl Business Mach Corp <Ibm> アンビエント・オクルージョンを使用する写実的画像処理のためのシステム、方法、およびプログラム
JP2012018573A (ja) * 2010-07-08 2012-01-26 Square Enix Co Ltd 画像生成装置及び画像生成プログラム
JP2012511200A (ja) * 2008-12-06 2012-05-17 インターナショナル・ビジネス・マシーンズ・コーポレーション 写実的画像形成の処理負荷を分散するためのシステム及び方法
JP2014523554A (ja) * 2011-04-12 2014-09-11 トムソン ライセンシング メッシュモデルをエンコードする方法、エンコードされたメッシュモデル及びメッシュモデルをデコードする方法
JP2015197914A (ja) * 2014-04-02 2015-11-09 三星電子株式会社Samsung Electronics Co.,Ltd. マルチフレームの同一領域を連続してレンダリングする方法及びその装置
JP2015210672A (ja) * 2014-04-25 2015-11-24 株式会社スクウェア・エニックス 情報処理装置、制御方法、プログラム及び記録媒体
US10163238B2 (en) 2014-11-21 2018-12-25 Arm Limited Processing graphics primitives in a tile-based graphics processing system

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8327228B2 (en) * 2009-09-30 2012-12-04 Intel Corporation Home agent data and memory management
US8645752B2 (en) 2011-11-08 2014-02-04 Micron Technology, Inc. Apparatuses and methods for operating a memory device
GB2521227B (en) * 2013-12-16 2020-11-25 Advanced Risc Mach Ltd Invalidation of index items for a temporary data store
CN105993003B (zh) * 2014-07-21 2019-04-09 上海兆芯集成电路有限公司 转译后备缓冲器、操作转译后备缓冲器的方法以及处理器
US10095431B2 (en) 2015-06-18 2018-10-09 John Edward Benkert Device controller and method of enforcing time-based sector level security
US10147370B2 (en) * 2015-10-29 2018-12-04 Nvidia Corporation Variable refresh rate gamma correction
US10353895B2 (en) * 2015-11-24 2019-07-16 Sap Se Atomic visibility switch for transactional cache invalidation
US11468053B2 (en) 2015-12-30 2022-10-11 Dropbox, Inc. Servicing queries of a hybrid event index
US10262721B2 (en) 2016-03-10 2019-04-16 Micron Technology, Inc. Apparatuses and methods for cache invalidate
JP6942440B2 (ja) 2016-03-28 2021-09-29 三菱商事ライフサイエンス株式会社 米飯の品質改良用剤、及び、品質改良処理を施した米飯の製造方法
US10915456B2 (en) * 2019-05-21 2021-02-09 International Business Machines Corporation Address translation cache invalidation in a microprocessor
US11269784B1 (en) * 2019-06-27 2022-03-08 Amazon Technologies, Inc. System and methods for efficient caching in a distributed environment

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH03135641A (ja) * 1989-07-13 1991-06-10 Toshiba Corp マイクロプロセッサ
JPH06102857A (ja) * 1992-09-18 1994-04-15 Daikin Ind Ltd フレームバッファアクセス装置
JPH0784877A (ja) * 1993-08-27 1995-03-31 Internatl Business Mach Corp <Ibm> マルチプロセッサ・システムにおけるコヒーレンシィ制御装置及び維持方法
JPH10301850A (ja) * 1997-04-14 1998-11-13 Internatl Business Mach Corp <Ibm> データ処理システム内のキャッシュ・コヒーレンシを維持するためにセクタ化キャッシュ・メモリに疑似精密包含方式を設ける方法及びシステム
JP2000293709A (ja) * 1999-02-03 2000-10-20 Toshiba Corp 画像処理装置、画像処理システムおよび画像処理方法
US20050091476A1 (en) * 1999-07-01 2005-04-28 International Business Machines Corporation Apparatus for supporting a logically partitioned computer system

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5995107A (en) * 1996-08-02 1999-11-30 Autodesk, Inc. Caching in a three dimensional modeling and animation system
US5914730A (en) 1997-09-09 1999-06-22 Compaq Computer Corp. System and method for invalidating and updating individual GART table entries for accelerated graphics port transaction requests
JP4144507B2 (ja) * 2003-10-30 2008-09-03 ソニー株式会社 情報処理装置、および情報処理方法、並びにコンピュータ・プログラム
US7469318B2 (en) * 2005-02-10 2008-12-23 International Business Machines Corporation System bus structure for large L2 cache array topology with different latency domains

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH03135641A (ja) * 1989-07-13 1991-06-10 Toshiba Corp マイクロプロセッサ
JPH06102857A (ja) * 1992-09-18 1994-04-15 Daikin Ind Ltd フレームバッファアクセス装置
JPH0784877A (ja) * 1993-08-27 1995-03-31 Internatl Business Mach Corp <Ibm> マルチプロセッサ・システムにおけるコヒーレンシィ制御装置及び維持方法
JPH10301850A (ja) * 1997-04-14 1998-11-13 Internatl Business Mach Corp <Ibm> データ処理システム内のキャッシュ・コヒーレンシを維持するためにセクタ化キャッシュ・メモリに疑似精密包含方式を設ける方法及びシステム
JP2000293709A (ja) * 1999-02-03 2000-10-20 Toshiba Corp 画像処理装置、画像処理システムおよび画像処理方法
US20050091476A1 (en) * 1999-07-01 2005-04-28 International Business Machines Corporation Apparatus for supporting a logically partitioned computer system

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009295162A (ja) * 2008-06-04 2009-12-17 Arm Ltd グラフィックス処理システム
US8698828B2 (en) 2008-06-04 2014-04-15 Arm Limited Graphics processing systems
JP2010134919A (ja) * 2008-12-05 2010-06-17 Internatl Business Mach Corp <Ibm> アンビエント・オクルージョンを使用する写実的画像処理のためのシステム、方法、およびプログラム
JP2012511200A (ja) * 2008-12-06 2012-05-17 インターナショナル・ビジネス・マシーンズ・コーポレーション 写実的画像形成の処理負荷を分散するためのシステム及び方法
JP2012018573A (ja) * 2010-07-08 2012-01-26 Square Enix Co Ltd 画像生成装置及び画像生成プログラム
JP2014523554A (ja) * 2011-04-12 2014-09-11 トムソン ライセンシング メッシュモデルをエンコードする方法、エンコードされたメッシュモデル及びメッシュモデルをデコードする方法
US9348860B2 (en) 2011-04-12 2016-05-24 Thomson Licensing Method for encoding a mesh model, encoded mesh model and method for decoding a mesh model
JP2015197914A (ja) * 2014-04-02 2015-11-09 三星電子株式会社Samsung Electronics Co.,Ltd. マルチフレームの同一領域を連続してレンダリングする方法及びその装置
JP2015210672A (ja) * 2014-04-25 2015-11-24 株式会社スクウェア・エニックス 情報処理装置、制御方法、プログラム及び記録媒体
US10163238B2 (en) 2014-11-21 2018-12-25 Arm Limited Processing graphics primitives in a tile-based graphics processing system

Also Published As

Publication number Publication date
US20080114942A1 (en) 2008-05-15
CN101183339B (zh) 2010-06-02
KR20080043227A (ko) 2008-05-16
KR100961736B1 (ko) 2010-06-10
CN101183339A (zh) 2008-05-21
JP4954005B2 (ja) 2012-06-13
US7836258B2 (en) 2010-11-16

Similar Documents

Publication Publication Date Title
JP4954005B2 (ja) メモリ・キャッシュ内のデータを無効化する方法、コンピュータ可読媒体及びイメージ処理システム
JP5043939B2 (ja) 3次元シーンの境界ボリュームを定めるノードを有する空間インデックスを用いる光線追跡のための操作を行なうプログラムを含むコンピュータ可読媒体及びシステム
US7893936B2 (en) Generating efficient spatial indexes for predictably dynamic objects
US8139060B2 (en) Ray tracing image processing system
US7782318B2 (en) Method for reducing network bandwidth by delaying shadow ray generation
US7796128B2 (en) Dynamically load balancing game physics using real-time object scaling
US7940265B2 (en) Multiple spacial indexes for dynamic scene management in graphics rendering
US7773087B2 (en) Dynamically configuring and selecting multiple ray tracing intersection methods
US7719532B2 (en) Efficient and flexible data organization for acceleration data structure nodes
US8022950B2 (en) Stochastic culling of rays with increased depth of recursion
US8018453B2 (en) Deferred acceleration data structure optimization for improved performance
US8085267B2 (en) Stochastic addition of rays in a ray tracing image processing system
US7808500B2 (en) Method for improving spatial index efficiency by jittering splitting planes
US7852336B2 (en) Dynamic determination of optimal spatial index mapping to processor thread resources
US8284195B2 (en) Cooperative utilization of spatial indices between application and rendering hardware
US8826299B2 (en) Spawned message state determination
US8248402B2 (en) Adaptive ray data reorder for optimized ray temporal locality
US7996621B2 (en) Data cache invalidate with data dependent expiration using a step value
US8339398B2 (en) Integrated acceleration data structure for physics and ray tracing workload
US7688320B2 (en) Methods and systems for texture prefetching based on a most recently hit primitive algorithm
US20080122838A1 (en) Methods and Systems for Referencing a Primitive Located in a Spatial Index and in a Scene Index
US20080192054A1 (en) Combined Spatial Index for Static and Dynamic Objects Within a Three-Dimensional Scene
US20080192051A1 (en) Expanding Empty Nodes in an Acceleration Data Structure
US8102389B2 (en) Box casting using an integrated acceleration data structure

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20100525

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20120214

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20120221

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120313

R150 Certificate of patent or registration of utility model

Ref document number: 4954005

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150323

Year of fee payment: 3