JP2006221639A - グラフィック処理を用いた粒子操作方法及び装置 - Google Patents

グラフィック処理を用いた粒子操作方法及び装置 Download PDF

Info

Publication number
JP2006221639A
JP2006221639A JP2006029227A JP2006029227A JP2006221639A JP 2006221639 A JP2006221639 A JP 2006221639A JP 2006029227 A JP2006029227 A JP 2006029227A JP 2006029227 A JP2006029227 A JP 2006029227A JP 2006221639 A JP2006221639 A JP 2006221639A
Authority
JP
Japan
Prior art keywords
data
image data
objects
image
processor
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
JP2006029227A
Other languages
English (en)
Other versions
JP4316574B2 (ja
Inventor
Masahiro Yasue
正宏 安江
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.)
Sony Interactive Entertainment Inc
Original Assignee
Sony Computer Entertainment Inc
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 Sony Computer Entertainment Inc filed Critical Sony Computer Entertainment Inc
Publication of JP2006221639A publication Critical patent/JP2006221639A/ja
Application granted granted Critical
Publication of JP4316574B2 publication Critical patent/JP4316574B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T17/00Three dimensional [3D] modelling, e.g. data description of 3D objects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T13/00Animation
    • G06T13/203D [Three Dimensional] animation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T13/00Animation
    • G06T13/203D [Three Dimensional] animation
    • G06T13/603D [Three Dimensional] animation of natural phenomena, e.g. rain, snow, water or plants
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General purpose rendering architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2210/00Indexing scheme for image generation or computer graphics
    • G06T2210/52Parallel processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2210/00Indexing scheme for image generation or computer graphics
    • G06T2210/56Particle system, point based geometry or rendering

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Graphics (AREA)
  • Geometry (AREA)
  • Software Systems (AREA)
  • Image Generation (AREA)
  • Processing Or Creating Images (AREA)
  • Image Processing (AREA)

Abstract

【課題】非常に多数のグラフィックオブジェクトに関連する画像データを処理する方法及び装置を提供する。
【解決手段】3D画像空間内のオブジェクトを、3D空間内の各部分空間に位置する複数のオブジェクトセットに応じてグループ化して、複数のオブジェクトの各々の最初の画像データに基づいて、オブジェクトセットの各オブジェクトの最後の画像データをマルチプロセッサシステムの複数のプロセッサの当該オブジェクトに対応するプロセッサを用いて算出する。現行のイメージフレームの最初の画像データに、先行のイメージフレームの最後の画像データを用いて、複数のイメージフレームの各々に対して上記の処理を繰り返す。
【選択図】図2

Description

本発明は、コンピュータグラフィックの分野に関し、さらに詳しく言えば、大量の画像データを処理するための方法及び装置に関する。
最先端のコンピュータアプリケーションの複雑化及び処理システムに対する要求のさらなる高まりにより、近年はデータスループットが高く、より高速なコンピュータが常に望まれている。グラフィックアプリケーションは処理システムへの要求が大きいアプリケーションの1つであり、その理由は、グラフィックアプリケーションが所望のビジュアル結果を実現するために、比較的短時間で非常に多くのデータアクセス、データの演算処理、及びデータ操作を要求するからである。また、リアルタイムのマルチメディアアプリケーションも処理システムに対する要求が高く、実に、1秒間に数千メガビットのデータなどの非常に高速な処理速度を要求する。
例えば、3次元(3D)空間において移動している多数の小さなオブジェクト(例えば、雨滴、雪片、跳ね回るボールなど)のシミュレーションは、各フレームにおいて、各オブジェクトの空間位置の変化を定義するステップと、3D/2D変換、ポリゴン化を実行するステップと、ディスプレイスクリーン上に表示するためのオブジェクトをレンダリングするステップとを伴う。満足の行くビジュアル結果を実現するために、画像データは、一般に、リアルタイムの滑らかな動きとして人の目に映るように、約30Hz(例えば、約33ミリ秒/フレーム)のフレームレートでレンダリングされる。このようなリアルタイムの移動オブジェクトをシミュレートするのに要求される膨大な数の計算を行うために、コンピュータ処理システムに対する要求が高くなる。
高速処理を実現するためにシングルプロセッサを採用する処理システムもあれば、マルチプロセッサアーキテクチャを利用して実装されるものもある。マルチプロセッサシステムでは、所望の処理結果を実現するために、複数のサブプロセッサが並列に(又は少なくとも協調して)動作できる。マルチプロセッサシステムでモジュール構造を採用することも考えられてきており、その場合、演算モジュールは、広域ネットワーク(インターネットなど)上でアクセス可能であり、演算モジュールは、多くのユーザ間で共有されてもよい。本モジュール構造に関する詳細が、米国特許第6,526,491号に解説されており、該特許は参照として本願に組込まれる。
処理スループットを高めるために、単一命令複数データ(SIMD:Single Instruction Multiple Data)処理アーキテクチャを採用するマルチプロセッシングシステムもある。しかしながら、SIMD処理システムでも、10以上のオブジェクトのリアルタイムシミュレーションは不十分なこともある。
米国特許第6,526,491号
従って、リアルタイムのシミュレーション結果を実現するために、非常に多数のグラフィックオブジェクトに関連する画像データを処理できる新規の方法及び装置が当業界において必要とされている。
本発明の1以上の態様によれば、特に、空間に100万個以上などの著しい数のオブジェクトがある場合、各フレームにおいて、複数のオブジェクトの位置のあらゆる変化の計算が効率的に実行される。SIMD並列処理環境が採用される場合であっても、本発明の態様により、パラレルプロセッサ間でのオブジェクトデータの割り当て方法及び/又はメモリでのオブジェクトデータの格納方法を制御することができる。
例えば、3D空間のオブジェクトは、複数の部分空間(又はバケット)に区切られてもよく、この場合、各バケットはいくつかのオブジェクトを含む。各フレームにおいて、パラレルプロセッサの各々は、特定のバケットのオブジェクトデータ(最初の位置、速度、力、色など)を読み込み、該当するバケット内のオブジェクトの動き及び/又は衝突の計算(例えば、オイラーの等式を用いて)の両方を実行する。各プロセッサがバケットの計算を完了すると、データ(例えば、最後の位置、最後の速度、色など)がメモリに書き込まれて、次のバケットが処理される。
好ましくは、バケット間でのDMAアクセス待ち時間を隠すために、各プロセッサは、メモリから/メモリへデータを読み書きするための「ダブルバッファ」技術を用いる。さらに、バケットサイズは、好ましくは、サイクル時間(フレームレート)、読み出しサイクル/バイト、書き込みサイクル/バイト、計算サイクル/バイト、及びローカルストレージのメモリサイズに応じて選択される。
粒子データは、好ましくは、3D空間における粒子位置と一致する順序でシステムメモリに格納される。例えば、特定のバケットにある粒子のすべては、システムメモリ内に互いに近接して格納される。これにより、システムメモリとプロセッサのローカルメモリとの間でのデータ転送(DMA転送など)の効率性が高まる。さらに、SIMDアーキテクチャが採用される場合、オブジェクトデータ(例えば、位置データ、速度データ、力データなど)のタイプは、好ましくは、プロセッサのSIMD能力と一致するように互いに近接してグループ化(又はベクトル化)される。例えば、プロセッサが1つの命令で4ユニットのデータを実行可能であれば、4ユニットの位置データ、4ユニットの速度データ、及び4ユニットの力データなどは、好ましくは、SIMD処理速度を高めるために互いに近接して格納される。
オブジェクトデータが操作された後、データは、好ましくは、上述したような場所にあるシステムメモリ内に書き込まれ、フレームに対するオブジェクトの最後の位置に応じて、再体系化が必要な場合もある。
本発明の1以上の態様によれば、方法及び装置が、3次元(3D)画像空間内のオブジェクトを、3D空間内の各部分空間に位置する複数のオブジェクトセットに応じてグループ化するステップと、各オブジェクトの最初の画像データに基づいて、オブジェクトセットの各オブジェクトの最後の画像データを、マルチプロセッサシステムの複数のプロセッサの当該オブジェクトセットに対応するプロセッサを用いて算出するステップと、を含み、現行のイメージフレームの最初の画像データに、先行のイメージフレームの最後の画像データを用いて、複数のイメージフレームの各々に対して上記各ステップを繰り返す。
所定のオブジェクトの最後の画像データの算出は、オブジェクトの最初の位置データと、速度データからのオブジェクトの最初の速度、力データからのオブジェクトにかかる最初の力、及び質量データからのオブジェクトの最初の質量、の少なくとも1つとに応じて、オブジェクトの最後の位置データを算出するステップを含んでもよい。他の形態として、所定のオブジェクトの最後の画像データの算出は、オブジェクトが、別のオブジェクトと衝突するかを算出するステップを含んでもよい。
好ましくは、オブジェクトを3D空間の部分空間内のオブジェクトセットに応じてグループ化するステップは、最後の画像データの算出結果が、1以上のオブジェクトの最後の位置データがオブジェクトの最初の部分空間外にあることを示す場合、オブジェクトのいくつかを再グループ化するステップを含む。
この方法及び装置は、オブジェクトの最後の画像データを、複数のプロセッサに動作的に連結されたシステムメモリに格納するステップと、オブジェクトセット及び部分空間に対応するように、システムメモリ内にある最後の画像データをグループ化するステップと、をさらに含んでもよい。好ましくは、最後の画像データは、1以上のオブジェクトの最後の位置データがオブジェクトの最初の部分空間外にあることを最後の画像データの算出結果が示す場合、システムメモリ内で再グループ化される。
本発明の1以上のさらなる態様によれば、プロセッサは、各々がシステムメモリの隣接領域にあるブロックをなしたシステムメモリから/へ、データの読み取り/書き込みを行うように動作可能である。例えば、(i)位置データのすべてが対応する1以上の隣接メモリブロックに格納され、(ii)力データのすべてが対応する1以上の隣接メモリブロックに格納され、(iii)速度データのすべてが対応する1以上の隣接メモリブロックに格納され、及び(iv)色データのすべてが対応する1以上の隣接メモリブロックに格納される、の少なくとも1つを含む。
他の形態として、所定のオブジェクトの画像データのすべてがシステムメモリの同一ブロックに格納され、複数のオブジェクトの画像データのすべてがシステムメモリの同一ブロック又は隣接ブロックに格納され、所定のオブジェクトセットの画像データのすべてがシステムメモリの同一ブロック又は隣接ブロックに格納される、の少なくとも1つを含む。さらに、所定のオブジェクトの画像データのすべては、システムメモリの同一ブロック内に連続して格納されてもよい。
他の形態として、プロセッサは、単一命令複数データ(SIMD)演算処理を実行するように動作可能であってもよく、複数データ演算処理の数をNとすると、N個のオブジェクトの対応するセットの画像データの少なくともいくつかは、システムメモリの同一ブロック内に連続して格納される。好ましくは、N個のオブジェクトの対応するセットの位置データ、力データ、速度データ、色データ、及び質量データの少なくとも1つが、システムメモリの同一ブロック内に連続して格納される。
上記方法及び装置は、好ましくは、プロセッサが利用可能になると、システムメモリから部分空間のオブジェクトセットの画像データを読み取り、処理するために、プロセッサを使用するステップを含む。
以下、添付の図面とともに本発明について記載することで、他の態様、特徴、利点などが当業者に明らかになるであろう。
様々な本発明の態様を例示するために、図面に、現在好ましいものである形態が示されているが、本発明は、図示した配置及び手段そのものに限定されるものではないことを理解されたい。
本発明により、グラフィックオブジェクト、特に、多数のオブジェクト(例えば、約10以上)に関連する画像データを処理するため(例えば、コンピュータシミュレーションを実現するため)の有益な方法及び装置が提供される。例示的に、このようなオブジェクトは、雨滴、雪片などであってよく、その数は、特定のシミュレーション及びオブジェクトが位置する3D空間に応じて、数千、数十万、数百万以上であってもよい。この明細書においては、これら及び同様の移動オブジェクトを「粒子」と呼ぶ。
本発明の1以上の実施形態によれば、図1は、3D空間104において移動オブジェクト102をシミュレートするために使用されるコンピュータモデルを示す図100である。3D空間104は、例示的に、幅106、高さ108、及び奥行き110を有し、複数のN個の個々の部分空間、いわゆるバケット112に区分けされる。本実施形態において、3D空間104は、例示的に、4つの区画114を含み、このような区画の各々は36個のバケット112を有し、すべてのバケットは同じ寸法を有する。他の実施形態において、3D空間104は、任意の数のバケットを有する任意の数の区画を含んでもよい。さらにバケット112の寸法は、特定の用途に応じて変動するものであってもよい。
1以上の一般的な実施形態によれば、任意の時間に、各オブジェクト102は、質量(又は重量)M、特定の寸法、色属性L(RGB、α)、速度V(x,y,z)、オブジェクトに作用する力F(x,y,z)、及び/又は空間位置P(x,y,z)を有するものとして定義されてもよい。本明細書において、x、y、及びzは、直交デカルト座標であり、省略形のRGBは、慣例的に、標準的な(赤/緑/青)カラースキームに関し、αは、オブジェクト102のビジュアルイメージの強度である。本発明の趣旨及び範囲から逸脱することなく、他の座標系が採用されてもよく、他の色の取り決めが採用されてもよいことを理解されたい。
本実施形態において、すべてのオブジェクト102は、例示的に、同一の質量及び寸法を有する。しかしながら、さらなる実施形態(図示せず)において、このような限定が部分的又は全体的に外されてもよい。例えば、個々の特性(例えば、大きさや質量)は、所定のオブジェクト102の少なくとも一部分に割り当てられてもよい。さらに、オブジェクト102は、時間、表面の硬さなどの他の特性に選択的に関連されてもよい。従って、このような特性を有するオブジェクトについてシミュレートするために、より多くの演算処理用のリソースやより大きなメモリが要求されることもある。
本発明の1以上の態様によれば、オブジェクト102の各々の最初の画像データに基づいて、3D空間104にあるオブジェクト102の各々の最後の画像データが算出される。このような演算処理は、好ましくは、オブジェクト102が3D空間104内でリアルタイムに動くようにするために、画像データがレンダリングされて表示されるように、フレームごとに実行される。多くの応用において、フレームの持続時間は、好ましくは、約1/30秒である。フレームにおいて、各バケット112が、3D空間104に共存するオブジェクト102の総数の任意の部分を含んでもよい。従って、隣接フレームにおいて、任意のバケット112内へ又はそこから移動しうるオブジェクト102もあるため、バケット112が、同数又は異なる数のオブジェクト102のいずれかを含むものであってもよい。
本発明の1以上のさらなる態様によれば、3D空間104におけるオブジェクト102の動きが演算処理されると、オブジェクト102間及び/又は壁、障壁、及びオプションとして3D空間104に配置されることがある他の障害物などの1以上の他のオブジェクト(図示せず)と、1以上の衝突が生じることがある。衝突は、弾性タイプ又は非弾性タイプのものであってもよい。当業界において、このようなタイプの衝突は、オブジェクト102の衝突後の軌跡を描くための既知の解析モデル(例えば、オイラーの等式又は同様の公式に基づいたもの)を有する。他の形態として衝突は、交差するオブジェクト102に選択的にかかる相互作用の特化された(すなわち、特有の)法則に従うものであってもよい。
図2は、本発明の1以上の実施形態による、画像データを処理する方法200を示す流れ図である。図3は、方法200の1以上の部分を実行可能な2以上のサブプロセッサ252及びシステムメモリ256を有するマルチプロセッサシステム250Aの構造を例示した説明図である。プロセッサ252A〜Dの各々は、好ましくは、関連するローカルメモリ254A〜Dを含み、バス258によって主(システム)メモリ256に結合される。例示的に4つのプロセッサ252を示しているが、本発明の趣旨及び範囲から逸脱することなく、任意の数のものが利用されてもよい。プロセッサ252は、既知の技術の任意のものを用いて実装されてもよく、各プロセッサ252は、同様の構成のものでも、異なる構成のものであってもよい。
方法200が開始され(ステップ202)てステップ204に進むと、このステップで、オブジェクト102の画像データが3D画像空間104内において複数のオブジェクトセットにグループ化され(体系化又はバケット化され)、各オブジェクトセットは、3D空間104内の対応する部分空間(又はバケット)112の位置を示す。画像データはまた、同一のバケット112にあるオブジェクト102に対応する画像データが、システムメモリ256において互いに近接した位置にあるように、システムメモリ256内に格納される。以下、本明細書において、図6〜図8を参照しながら、システムメモリ256におけるオブジェクト102の画像データを体系化及び格納する一般的な方法について記載する。ここでは、同様のタイプの画像データ(例えば、位置データP(x,y,z)、速度データV(x,y,z)、色属性データL(RGB、α)など)が、コンピュータシステム250のサブプロセッシングユニット252の演算処理能力(例えば、データ処理速度)を最良に利用できるように体系化され、互いに近接して格納されることが好ましいと言えば十分である。
ステップ206において、オブジェクト102の最初の状態に関する画像データが入力される。これは、システムメモリ256からプロセッサ252のローカルメモリ254の1以上に画像データを読み取るステップを伴うものであってもよい。一例として、画像データは、3D空間104にある各オブジェクト102の最初の位置データP(x,y,z)、最初の速度データV(x,y,z)、及び最初の色属性データL(RGB、α)を含んでもよい。
ステップ208において、オブジェクト102に適用された対応する最初の力F(x,y,z)は、3D空間104にあるオブジェクト102の最初の位置P(x,y,z)に規定される。最初の力データは、サブプロセッサ252によって採用された演算処理技術に従うように、残りの画像データとグループ化される。例えば、本明細書において以下に記載するように、サブプロセッサ252がSIMD技術を採用する場合、画像データのある一定のグループ化により、より優れた結果が得られることがある。
ステップ210において、サブプロセッサ252は、最初の画像データに基づいて、オブジェクトセットの各オブジェクト102の最後の画像データを算出する。例えば、力F(x,y,z)の場において移動中のオブジェクト102の最後の位置P(x,y,z)は、所定のフレームにおいて演算処理される。さらに詳しく言えば、オブジェクト102の最後の位置データは、オブジェクト102の最初の位置データと、オブジェクト102の最初の速度、オブジェクト102の力データ、及びオブジェクト102の最初の質量の少なくとも1つと、に応じて算出されてもよい。この演算処理は、3D空間104にあるオブジェクト102の最後の位置、最後の速度、最後の色、最後の質量などを計算するために、解析モデリングスキームを適用するステップを伴うものであってもよい。演算処理はまた、オブジェクト102の1以上が、3D空間104にある他のオブジェクト102又は他の障害物と衝突するかどうかを決定するステップを伴うものであってもよい。
マルチプロセッサシステム250のサブプロセッサ252の対応する1つを用いて、オブジェクトセットの各々の対応する演算処理が実行されることが最も好ましい。実際のところ、所定のサブプロセッサ252が、隣接する部分空間112にあるオブジェクト102を考慮することなく所定の部分空間112のすべての動き及び/又は衝突(最後の画像データ)を演算処理することが好ましい。3D空間にあるすべてのオブジェクト102のリアルタイムの動きに関してこのように仮定すると、演算処理及びスループットの高効率化につながる。所定のサブプロセッサ252が、所定のオブジェクトセット(所定のフレーム)の最後の画像データの演算処理を完了した場合、このサブプロセッサ252は、演算処理用の別のオブジェクトセットを動的に自由に獲得する。
フレームにおける演算処理された動きの結果として、オブジェクト102の中には、それらの最初の位置が特定されたバケット112の外側に移動するものもある。すなわちオブジェクトには、他のバケット112に移動するものがある。さらに、オブジェクト102の中には、3D空間104から完全に離れるものがあり、このような場合、さらなるシミュレーションから除外されてもよい。動き及び/又は衝突(最後の画像データ)が、隣接する部分空間112にあるオブジェクト102を考慮することなく、所定の部分空間112に対して計算されるために、演算処理の複雑性が著しく低減される。実際のところ、所定の部分空間内において、別の部分空間112から該当する部分空間112に入るオブジェクトに関して、何ら考慮する必要がない。従って、別の部分空間112から部分空間112に入るオブジェクトに関する多くの衝突の可能性を演算処理する必要がない。これにより、演算処理を著しく低減することができる。
ステップ212において、すべてのオブジェクト102のいくつかは、最後の画像データの演算処理が、1以上のオブジェクト102がそれらの最初の部分空間112の外側に最後の位置データを有することを示す場合に、1以上の新しいオブジェクトセットに再グループ化される。好ましくは、このような再グループ化により、ステップ204を参照しながら上述したものと実質的に同様に、システムメモリ256にある画像データが再体系化される。
ステップ214において、ビデオディスプレイ(例えば、薄膜トランジスタ(TFT)ディスプレイ、プラズマディスプレイ、陰極線管ディスプレイ(CRT)、シネマスクリーンなど)上に表示するためのオブジェクトをレンダリングするために、最後の画像データの少なくともいくつかが使用される。これは、オブジェクト102の最後の位置データの3D/2Dデータ変換及びポリゴン化を含んでもよい。
好ましくは、ステップ208〜214に関連する動作は、3D空間104内でのオブジェクト102のリアルタイムな動きを十分にシミュレートできる速度でフレームごとに繰り返される。これに関して、現行のフレームの最初の画像データとして先行フレームからの最後の画像データが使用されることを理解されたい。従って、決定ステップ216において、方法200は、すべてのフレームに対して、又は他の形態として、予め決定された時間間隔で最後の画像データがレンダリングされたかを、問い合わせる。ステップ216の決定の結果が否定的であれば、プロセスフローは、ステップ208にループバックする。ステップ216の決定の結果が肯定的であれば、プロセスフローは、プロセスが終了するステップ218に進む。
以下に本明細書で説明している1以上の特徴を実行するのに適したマルチプロセッサシステムの、好ましいコンピュータアーキテクチャを説明する。1以上の実施形態によれば、マルチプロセッサシステムは、ゲームシステム、家庭用端末、PCシステム、サーバシステム、及びワークステーションなどのメディアリッチアプリケーションを、スタンドアローン処理、及び/又は分散処理するために動作することができる、シングルチップソリューションとして実装されうる。ゲームシステムや家庭用端末などのいくつかのアプリケーションでは、リアルタイムの演算処理は必須である。例えば、リアルタイムの分散ゲームアプリケーションでは、ユーザにリアルタイムの経験をしていると思わせる程速く、1以上のネットワークイメージの復元、3Dコンピュータグラフィック、オーディオ生成、ネットワーク通信、物理的シミュレーション、及び人工知能処理が実行される必要がある。従って、マルチプロセッサシステムの各プロセッサは、短時間で、かつ予測可能時間でタスクを完了する必要がある。
このために、また、本コンピュータアーキテクチャによれば、マルチプロセッシングコンピュータシステムの全プロセッサは、共通の演算モジュール(あるいはセル)から構成される。この共通の演算モジュールは、構造が一貫しており、また好ましくは、同じ命令セットアーキテクチャを採用している。マルチプロセッシングコンピュータシステムは、1以上のクライアント、サーバ、PC、モバイルコンピュータ、ゲームマシン、PDA、セットトップボックス、電気器具、デジタルテレビ、及びコンピュータプロセッサを使用する他のデバイスから形成されうる。
複数のコンピュータシステムもまた、所望に応じてネットワークのメンバーとなりうる。一貫モジュール構造により、マルチプロセッシングコンピュータシステムによるアプリケーション及びデータの効率的な高速処理が可能になる。またネットワークが採用される場合は、ネットワーク上にアプリケーション及びデータの高速送信が可能になる。この構造はまた、大きさや処理能力が様々なネットワークのメンバーの構築を単純化し、また、これらのメンバーが処理するアプリケーションの準備を単純化する。
図4を参照すると、基本的な処理モジュールはプロセッサエレメント(PE)500である。PE500はI/Oインタフェース502、プロセッシングユニット(PU)504、及び複数のサブプロセッシングユニット508、すなわちサブプロセッシングユニット508A、サブプロセッシングユニット508B、サブプロセッシングユニット508C、及びサブプロセッシングユニット508Dを備えている。なお、好適には、PUとしてパワーPC(PPE:Power PC Element)を、SPUとしてシナジスティックプロセッシングエレメント(SPE:Synergistic Processing Element)を用いる。ローカル(あるいは内部)PEバス512は、データ及びアプリケーションを、PU504、サブプロセッシングユニット508、及びメモリインタフェース511間に送信する。ローカルPEバス512は、例えば従来のアーキテクチャを備えることができ、又、パケット−スイッチネットワークとして実装されることができる。パケットスイッチネットワークとして実装される場合は、更なるハードウェアが必要であるが、利用可能な帯域幅が増える。
PE500は、デジタル論理回路を実装するよう様々な方法を用いて構成されうる。しかしながら、好ましくは、PE500はSOI基板を用いた集積回路として構成され、あるいは、シリコン基板に相補性金属酸化膜半導体(CMOS:Complementary Metal Oxide Semiconductor)を用いた単一の集積回路とされることも好適な構成である。基板の他の材料には、ガリウムヒ素、ガリウムアルミウムヒ素、及び、様々なドーパントを採用している他の、いわゆる、III−B化合物を含む。PE500はまた、高速単一磁束量子(RSFQ:Rapid Single-flux-Quantum)論理回路などの超電導デバイスを用いて実装されうる。
PE500は、高帯域のメモリ接続516を介して、共有(メイン)メモリ514と密接に結合される。なお、メモリ514をオンチップ化してもよい。好ましくは、メモリ514はダイナミックランダムアクセスメモリ(DRAM:Dynamic Random Access Memory)であるが、スタティックランダムアクセスメモリ(SRAM:Static Random Access Memory)、磁気ランダムアクセスメモリ(MRAM:Magnetic Random Access Memory)、光メモリ、ホログラフィックメモリなどとして、他の方法を用いて実装されてもよい。
PU504とサブプロセッシングユニット508は、好ましくは、それぞれダイレクトメモリアクセス(DMA)の機能を備えたメモリフローコントローラ(MFC:Memory Flow Controller)と結合されており、該コントローラはメモリインタフェース511と共に、PE500のDRAM514とサブプロセッシングユニット508、PU504間のデータ転送を促進する。DMAC及び/又はメモリインタフェース511は、サブプロセッシングユニット508及びPU504に一体化して、或いは別個に配置されうる。更に、DMACの機能及び/又はメモリインタフェース511の機能は、1以上の(好ましくは全ての)サブプロセッシングユニット508及びPU504と一体にしてもよい。DRAM514も同様に、PE504に一体化して、或いは別個に配置されうる。例えばDRAM514は、実例で示しているように、チップ外に配置しても、あるいは一体化してオンチップ配置としてもよい。
PU504はデータ及びアプリケーションをスタンドアローン処理できる標準プロセッサなどでありうる。動作時、PU504は、好ましくは、サブプロセッシングユニットによるデータ及びアプリケーション処理をスケジューリングし、調整を行う。サブプロセッシングユニット508は好ましくは、単一命令複数データ(SIMD:Single Instruction Multiple Data)プロセッサである。PU504の管理下、サブプロセッシングユニット508は、並列かつ独立して、これらのデータ及びアプリケーション処理を行う。PU504は好ましくは、RISC(Reduced Instruction Set Computing)技術を採用しているマイクロプロセッサアーキテクチャであるパワーPC(PowerPC)コアを用いて実装される。RISCは、単純な命令の組合せを用いて、より複雑な命令を実行する。従って、プロセッサのタイミングは、単純で高速な動作に基づくものであり、マイクロプロセッサがより多くの命令を所定のクロック速度で実行できるようにする。
PU504は、サブプロセッシングユニット508のうちの、データ及びアプリケーション処理をスケジューリングし調整を行うメインプロセッシングユニットの役割を果たしている1つのサブプロセッシングユニット508により実現してもよい。更に、プロセッサエレメント500内には1以上の実装されたPU504が存在しうる。なお、オンチップのPU504を複数設けるようにしてもよい。
本モジュール構造によれば、特定のコンピュータシステムにおけるPE500の数は、そのシステムが要求する処理能力に基づく。例えば、サーバにおけるPE500の数は4、ワークステーションにおけるPE500の数は2、PDAにおけるPE500の数は1とすることができる。特定のソフトウェアセルの処理に割当てられるPE500のサブプロセッシングユニット508の数は、セル内のプログラムやデータの複雑度や規模により決定される。このように、PE500はモジュール構造を有していることから拡張性が高く、搭載するシステムのスケール、パフォーマンスに応じて容易に拡張することができる。
図5は、サブプロセッシングユニット(SPU)508の好ましい構造及び機能の例示である。SPU508アーキテクチャは、好ましくは、多目的プロセッサ(平均して高性能を広範なアプリケーションに実現するように設計されているもの)と、特殊目的プロセッサ(高性能を単一のアプリケーションに実現するように設計されているもの)間の間隙を埋める。SPU508は、ゲームアプリケーション、メディアアプリケーション、ブロードバンドシステムなどに高性能を実現するように、また、リアルタイムアプリケーションのプログラマに高度な制御を提供するように設計される。SPU508は、グラフィックジオメトリーパイプライン、サーフェースサブディビジョン、高速フーリエ変換、画像処理キーワード、ストリームプロセッシング、MPEGのエンコード/デコード、暗号化、復号化、デバイスドライバの拡張、モデリング、ゲーム物理学、コンテンツ制作、音響合成及び処理が可能である。
サブプロセッシングユニット508は、SPUコア510A及びメモリフローコントローラ(MFC)510Bの2つの基本機能ユニットを有している。SPUコア510Aはプログラムの実行、データ操作、などを行い、一方でMFC510BはシステムのSPUコア510AとDRAM514の間のデータ転送に関連する機能を実行する。
SPUコア510Aは、ローカルメモリ550、命令ユニット(IU:Instruction Unit)552、レジスタ554、1以上の浮動小数点実行ステージ556、及び1以上の固定小数点実行ステージ558を有している。ローカルメモリ550は、好ましくは、SRAMなどのシングルポートのランダムメモリアクセスを用いて実装される。殆どのプロセッサがキャッシュの導入によりメモリへのレイテンシを小さくする一方で、SPUコア510Aは、キャッシュより小さいローカルメモリ550を実装している。更に、リアルタイムアプリケーション(及び本明細書に述べる他のアプリケーション)のプログラマに、一貫した、予測可能なメモリアクセスレイテンシを提供するために、SPU508A内のキャッシュメモリアーキテクチャは好ましくない。キャッシュメモリのキャッシュヒット/ミスという特徴のために、数サイクルから数百サイクルの、予測困難なメモリアクセス時間が生じる。そのような予測困難性により、例えばリアルタイムアプリケーションのプログラミングに望ましいアクセス時間の予測可能性が低下する。DMA転送をデータの演算処理にオーバーラップさせることで、ローカルメモリSRAM550においてレイテンシの隠蔽を実現しうる。これにより、リアルタイムアプリケーションのプログラミングが制御しやすくなる。DMAの転送に関連するレイテンシと命令のオーバーヘッドが、キャッシュミスにサービスしているレイテンシのオーバーヘッドを超過していることから、DMAの転送サイズが十分に大きく、十分に予測可能な場合(例えば、データが必要とされる前にDMAコマンドが発行される場合)に、このSRAMのローカルメモリ手法による利点が得られる。
サブプロセッシングユニット508のうちの、所定の1つのサブプロセッシングユニット上で実行しているプログラムは、ローカルアドレスを使用している関連のローカルメモリ550を参照する。しかしながら、ローカルメモリ550のそれぞれの場所はまた、システムのメモリマップ全体内に実アドレス(RA:Real Address)も割当てられる。これにより、プリビレッジソフトウェア(Privilege Software)はローカルメモリ550をプロセスの有効アドレス(EA:Effective Address)にマッピングする、ローカルメモリ550と別のローカルメモリ550間のDMA転送を促進する。PU504はまた、有効アドレスを用いてローカルメモリ550に直接アクセスすることができる。好ましい実施形態では、ローカルメモリ550は556キロバイトのストレージを有し、またレジスタ552の容量は128×128ビットである。
SPUコア510Aは、好ましくは、論理命令をパイプライン方式で処理するプロセッシングパイプラインを用いて実装される。パイプラインは命令が処理されるいずれの数のステージに分けられうるが、一般にパイプラインは1以上の命令のフェッチ、命令のデコード、命令間の依存性チェック、命令の発行、及び命令の実行ステップを有している。これに関連して、IU552は命令バッファ、命令デコード回路、依存性チェック回路、及び命令発行回路を有する。
命令バッファは、好ましくは、ローカルメモリ550と結合され、また、フェッチされる際に一時的に命令を格納するように動作できる、複数のレジスタを備えている。命令バッファは、好ましくは、全ての命令が一つのグループとしてレジスタから出て行く、つまり、実質的に同時に出て行くように動作する。命令バッファはいずれの大きさでもよいが、好ましくは、2あるいは3レジスタよりは大きくないサイズである。
一般に、デコード回路は、命令を分解して、対応する命令の関数を実施する論理的マイクロオペレーションを生成する。例えば、論理的マイクロオペレーションは、算術論理演算、ローカルメモリ550へのロード及びストアオペレーション、レジスタソースオペランド、及び/又は即値データオペランドを特定しうる。デコード回路はまた、ターゲットレジスタアドレス、構造リソース、機能ユニット、及び/又はバスなど、命令がどのリソースを使用するかを示しうる。デコード回路はまた、リソースが要求される命令パイプラインステージを示す情報を与えることができる。命令デコード回路は、好ましくは、命令バッファのレジスタ数に等しい数の命令を実質的に同時にデコードするように動作する。
依存性チェック回路は、所定の命令のオペランドがパイプラインの他の命令のオペランドに依存しているかどうかを判断するために試験を行う、デジタル論理回路を含む。その場合、所定の命令はそのような他のオペランドが(例えば、他の命令が実行の完了を許容することにより)アップデートされるまで、実行されない。依存性チェック回路は好ましくは、デコード回路から同時に送られる複数の命令の依存性を判断する。
命令発行回路は、浮動小数点実行ステージ556及び/又は固定小数点実行ステージ558へ命令を発行するように動作することができる。
レジスタ554は、好ましくは、128エントリのレジスタファイルなどの、相対的に大きな統一レジスタファイルとして実装される。これにより、レジスタが足りなくなる状態を回避するよう、レジスタリネーミングを必要としない、深くパイプライン化された高周波数の実装品が可能になる。一般に、ハードウェアリネーミングには、処理システムのかなりの割合の領域と電力を消費する。その結果、ソフトウェアのループ展開、又は他のインターリーブ技術によりレイテンシがカバーされると、最新のオペレーションが実現されうる。
SPUコア510Aは、好ましくはスーパースカラアーキテクチャであり、これにより1以上の命令がクロックサイクル毎に発行される。SPUコア510Aは、好ましくは、命令バッファから送られる同時命令の数、例えば2〜3命令(各クロックサイクル毎に2命令あるいは3命令が発行されることを意味する)に対応する程度まで、スーパースカラとして動作する。所望の処理能力に応じて、多数の、あるいは少数の浮動小数点実行ステージ556と、固定小数点実行ステージ558が採用される。好ましい実施形態では、浮動小数点実行ステージ556は1秒あたり320億の浮動小数点演算速度で演算し(32GFLOPS)、また、固定小数点実行ステージ558は1秒あたり320億回(32GOPS)の演算速度となっている。
MFC510Bは、好ましくは、バスインタフェースユニット(BIU:Bus Interface Unit)564、メモリ管理ユニット(MMU:Memory Management Unit)562、及びダイレクトメモリアクセスコントローラ(DMAC:Direct Memory Access Controller)560を備えている。DMAC560は例外として、MFC510Bは、好ましくは低電力化設計とするため、SPUコア510Aやバス512と比べて半分の周波数で(半分の速度で)動作する。MFC510Bはバス512からSPU508に入力されるデータや命令を処理するように動作することができ、DMACに対しアドレス変換を行い、また、データコヒーレンシに対しスヌープオペレーションを提供する。BIU564は、バス512とMMU562及びDMAC560との間にインタフェースを提供する。従って、SPU508(SPUコア510A及びMFC510Bを含む)及びDMAC560は、バス512と物理的に及び/又は論理的に結合されている。
MMU562は、好ましくは、メモリアクセスのために、実アドレスに有効アドレスを変換するように動作することができる。例えば、MMU562は、有効アドレスの上位ビットを実アドレスビットに変換しうる。しかしながら下位のアドレスビットは、好ましくは変換不能であり、また、実アドレスの形成及びメモリへのアクセスリクエストに使用する場合には、ともに論理的及び物理的なものと考えられる。1以上の実施形態では、MMU562は、64ビットのメモリ管理モデルに基づいて実装され、また、4K−、64K−、1M−、及び16M−バイトのページサイズを有する264バイトの有効アドレススペースと、256MBのセグメントサイズを提供しうる。MMU562は、好ましくはDMAコマンドに対し、265バイトまでの仮想メモリ、242バイト(4テラバイト)までの物理メモリをサポートするように動作することができる。MMU562のハードウェアは、8−エントリでフルアソシエイティブのSLBと、256−エントリと、4ウエイセットアソシエイティブのTLBと、TLBに対してハードウェアTLBのミスハンドリングに使用される4×4リプレースメント管理テーブル(RMT:Replacement Management Table)と、を含む。
DMAC560は、好ましくは、SPUコア510Aや、PU504、及び/又は他のSPUなどの1以上の他のデバイスからのDMAコマンドを管理するように動作することができる。DMAコマンドには3つのカテゴリが存在し、それらは、プットコマンド、ゲットコマンド、及びストレージ制御コマンドである。プットコマンドは、ローカルメモリ550から共有メモリ514へデータを移動させるよう動作する。ゲットコマンドは、共有メモリ514からローカルメモリ550へデータを移動させるよう動作する。また、ストレージ制御コマンドには、SLIコマンドと同期化コマンドが含まれる。この同期化コマンドは、アトミックコマンド(atomic command)、信号送信コマンド、及び専用バリアコマンドを有しうる。DMAコマンドに応答して、MMU562は有効アドレスを実アドレスに変換し、実アドレスはBIU564へ送られる。
SPUコア510Aは、好ましくは、DMAC560内のインタフェースと通信(DMAコマンド、ステータスなどを送る)するために、チャネルインタフェース及びデータインタフェースを使用する。SPUコア510Aはチャネルインタフェースを介して、DMAC560のDMAキューへDMAコマンドを送る。DMAコマンドがDMAキューに存在すると、そのコマンドはDMAC560内の発行及び完了論理により処理される。DMAコマンドに対する全てのバストランザクションが終了すると、完了信号がチャネルインタフェースを越えて、SPUコア510Aへ送られる。
図6はPU504の好ましい構造及び機能を例示している。PU504は、PUコア504Aとメモリフローコントローラ(MFC)504Bの2つの基本的な機能ユニットを有している。PUコア504Aは、プログラム実行、データ操作、マルチプロセッサマネージメント機能などを実施し、一方でMFC504Bはシステム100のPUコア504Aとメモリスペース間のデータ転送に関連する機能を実行する。
PUコア504Aは、L1キャッシュ570、命令ユニット572、レジスタ574、1以上の浮動小数点実行ステージ576、及び1以上の固定小数点実行ステージ578を有することができる。L1キャッシュ570は、共有メモリ106、プロセッサ102、又はMFC504Bを介してメモリスペースの他の部分から受信したデータに対するデータキャッシングの機能を提供する。PUコア504Aが、好ましくはスーパーパイプラインとして実装されるので、命令ユニット572は、好ましくはフェッチ、デコード、依存性チェック、発行などを含む、多くのステージを備えた命令パイプラインとして実装される。またPUコア504は、好ましくはスーパースカラ構成であり、一方で1以上の命令がクロックサイクル毎に命令ユニット572から発行される。高度な処理(演算)能力を実現するために、浮動小数点実行ステージ576と固定小数点実行ステージ578は、パイプライン構成で複数のステージを有する。要求される処理能力に応じて、多数の又は少数の浮動小数点実行ステージ576と固定小数点実行ステージ578が採用されうる。
MFC504Bは、バスインタフェースユニット(BIU)580、L2キャッシュメモリ582、キャッシュ不可能なユニット(NCU:Non-Cachable Unit)584、コアインタフェースユニット(CIU:Core Interface Unit)586、及びメモリ管理ユニット(MMU)588を備えている。殆どのMFC504Bは、低電力化設計とするために、PUコア504A及びバス108と比べて半分の周波数(半分の速度)で動作する。
BIU580は、バス108とL2キャッシュ582とNCU584論理ブロックとの間にインタフェースを提供する。このためにBIU580は、バス108上で、十分にコヒーレントなメモリオペレーションを実施するために、マスタデバイスとして、また同様にスレーブデバイスとして機能する。マスタデバイスとして、BIU580はL2キャッシュ582とNCU584のために機能するため、バス108へロード/ストアリクエストを供給する。BIU580はまた、バス108へ送信されうるコマンドの合計数を制限するコマンドに対し、フロー制御機構を実装しうる。バス108のデータオペレーションは、8ビート要するように設計され、そのために、BIU580は、好ましくは128バイトキャッシュラインを有するように設計され、また、コヒーレンシーと同期化の粒度単位は128KBである。
L2キャッシュメモリ582(及びサポートハードウェア論理回路)は、好ましくは、512KBのデータをキャッシュするように設計されている。例えば、L2キャッシュ582は、キャッシュ可能なロード/ストア、データプリフェッチ、命令フェッチ、命令プリフェッチ、キャッシュオペレーション、及びバリアオペレーションを処理しうる。L2キャッシュ582は、好ましくは8ウエイのセットアソシエイティブシステムである。L2キャッシュ582は、6つのキャストアウトキュー(6つのRCマシンなど)と一致する6つのリロードキューと、8つ(64バイト幅)のストアキューを備えうる。L2キャッシュ582は、L1キャッシュ570において、一部、あるいは全てのデータのコピーをバックアップするように動作しうる。この点は、処理ノードがホットスワップである場合に、状態を回復するのに便利である。このような構成により、L1キャッシュ570が少ないポート数でより速く動作することができ、また、より速くキャッシュツーキャッシュ転送ができる(リクエストがL2キャッシュ582でストップしうるため)。この構成はまた、キャッシュコヒーレンシー管理をL2キャッシュメモリ582へ送るための機構も提供しうる。
NCU584は、CIU586、L2キャッシュメモリ582、及びBIU580と連動しており、通常は、PUコア504Aとメモリシステム間のキャッシュ不可能なオペレーションに対して、キューイング/バッファリング回路として機能する。NCU584は、好ましくはキャッシュ抑制ロード/ストア、バリアオペレーション、及びキャッシュコヒーレンシーオペレーションなどの、L2キャッシュ582により処理されないPUコア504Aとのすべての通信を処理する。NCU584は、好ましくは上述の低電力化目的を満たすように、半分の速度で動作されうる。
CIU586は、MFC504BとPUコア504Aの境界に配置され、実行ステージ576、578、命令ユニット572、及びMMUユニット588からのリクエストに対し、また、L2キャッシュ582及びNCU584へのリクエストに対し、ルーティング、アービトレーション、及びフロー制御ポイントして機能する。PUコア504A及びMMU588は、好ましくはフルスピードで実行され、一方でL2キャッシュ582及びNCU584は2:1の速度比で動作することができる。従って、周波数の境界がCIU586に存在し、その機能の一つは、2つの周波数ドメイン間でリクエストの送信及びデータのリロードを行いながら、周波数の差を適切に処理することである。
CIU586は、ロードユニット、ストアユニット、及びリロードユニットの3つの機能ブロックを有している。更に、データプリフェッチ機能がCIU586により実施され、また好ましくは、ロードユニットの機能部である。CIU586は、好ましくは、
(i)PUコア504AとMMU588からのロード及びストアリクエストを受ける、
(ii)フルスピードのクロック周波数をハーフスピードに変換する(2:1のクロック周波数変換)、
(iii)キャッシュ可能なリクエストをL2キャッシュ582へ送り、キャッシュ不可能なリクエストをNCU584へ送る、
(iv)L2キャッシュ582に対するリクエストとNCU584に対するリクエストを公正に調停する、
(v)ターゲットウインドウでリクエストが受信されてオーバーフローが回避されるように、L2キャッシュ582とNCU584に対する転送のフロー制御を提供する、
(vi)ロードリターンデータを受信し、そのデータを実行ステージ576、578、命令ユニット572、又はMMU588へ送る、
(vii)スヌープリクエストを実行ステージ576、578、命令ユニット572、又はMMU588へ送る、
(viii)ロードリターンデータとスヌープトラフィックを、ハーフスピードからフルスピードへ変換する、
ように動作可能である。
MMU588は、好ましくはPUコア540Aに対して、第2レベルのアドレス変換機能などによりアドレス変換を行う。第1レベルの変換は、好ましくは、MMU588よりも小型で高速でありうる、別々の命令及びデータERAT(Effective to Real Address Translation)アレイにより、PUコア504Aにおいて提供されうる。
好ましい実施形態では、PU504は、64ビットの実装品で、4−6GHz、10F04で動作する。レジスタは、好ましくは64ビット長(1以上の特殊用途のレジスタは小型でありうるが)であり、また、有効アドレスは64ビット長である。命令ユニット572、レジスタ574、及び実行ステージ576と578は、好ましくは、(RISC)演算技術を実現するために、PowerPC技術を用いて実装される。
本コンピュータシステムのモジュール構造に関する更なる詳細は、米国特許第6,526,491号に解説されており、該特許は参照として本願に組込まれる。
上述したように、図4のPE500は、図2を参照しながら、詳細に上述したような方法200を実行することができる。DMAC506のアクセス待ち時間を隠し、このようにして、反復的なメモリ動作中(例えば、システムメモリ514又はローカルメモリ550から/へのデータの読み取り及び書き込み)のデータ処理速度を上げるために、サブプロセッシングユニット508は、公知の「ダブルバッファ」技術を用いてもよいことに留意されたい。
以下、本発明の1以上の実施形態による図3及び/又は図4のコンピュータシステムのシステムメモリにおいて、画像データを体系化する異なる方法を示す図7〜図9を参照する。明確かつ簡潔に示すために、図7〜図9は、図4のPE500及びシステムメモリ514を参照しながら記述する。特に、プロセッサ508は、システムメモリ514において各々が隣接領域にあるブロックをなしたシステムメモリ514から/へデータの読み取り/書き込みを行うように動作可能である。この技術は、米国特許第6,526,491号に詳述されている。
図7に示すように、メモリ514は、多数の領域404iを含んでもよく、各領域には1以上の隣接するブロックがある。本発明のこの実施形態において、すべての力データF(x,y,z)が、メモリの1以上の隣接するブロックを含む第1の領域404Aに格納される。すべての位置データP(x,y,z)が、メモリの1以上の隣接するブロックを含む第2の領域404Bに格納される。すべての速度データV(x,y,z)が、メモリの1以上の隣接するブロックを含む第3の領域404Cに格納される。すべての色データLが、メモリの1以上の隣接するブロックを含む第4の領域404Dに格納される。各オブジェクト102の対応する画像データは、例えば、参照番号406iで示すように、領域404iを横断することによって位置が特定されてもよい。上述したように、所定のオブジェクトセット内又は部分空間112内のオブジェクト102の画像データを、メモリ514内の互いに近い位置に置くことが望ましい。図7に示すように、このような近接は、2以上の領域404にオブジェクトセットの画像データを配置することによって実現することができる。
このような構成の場合、メモリ514は、領域404iの各々における未使用のメモリ位置の数を最小限に抑え及び/又は無くすために、効率的に使用される。さらに、プロセッサ508が画像データを取得できる速度は、データが異なるブロックに配置されていても、オブジェクト102及びオブジェクトセットごとに画像データが並んでいるため、比較的高速である。しかしながら、これらの利点を実現するために、メモリ514においてデータの体系化を実行するアプリケーションプログラムは、オブジェクト102が部分空間112内へ、又はそこから移動するとき、すべてのメモリ領域404iにおいて画像データを再体系化しなければならない。
図8に示すように、メモリ514は、多数の領域408を含んでもよく、各領域は、1以上の隣接するブロックを含んでもよい。本発明のこの実施形態において、所定のオブジェクト102のすべての画像データ(例えば、F、P、V、L)は、システムメモリ514の同じ領域又はブロックに格納される。所定のオブジェクトのすべての画像データは、参照番号410iによって示すように連続的に格納される。再度言うが、所定のオブジェクトセット内又は部分空間112内のオブジェクト102の画像データを、メモリ514の互いに近い位置に置くことが望ましい。図8に示すように、このような近接は、メモリ514の同じ領域404にオブジェクトセットの画像データを配置することによって実現することができる。
この構成の場合、適切な配置を確保するために、領域408の各々に多数の未使用メモリ位置が必要となるため、メモリ514は、図7の構成と比較するとあまり効率的に使用されないと考えられる。SIMDプロセッサ508が採用される場合のようなマルチプロセッシング環境によっては、データタイプ(例えば、Fx、Fy、Fz、Px、Py、Pz、Vx、Vy、Vzなど)が、単一の命令を用いて対応するデータセットが動作されうるようにベクトル化されなければならないため、プロセッサ508が画像データを取得及び処理するための速度は遅くなる。メモリ514におけるデータの体系化を実行するアプリケーションプログラムは、所定のオブジェクト102のすべての画像データが同じブロックに見付けられるため、すべてのメモリ領域408にある画像データを比較的容易に認識することができる。
図9に示すように、メモリ514は、多数の領域412を含んでもよく、各領域412は、1以上の隣接するブロックを含んでもよい。本発明のこの実施形態において、所定のオブジェクト102のすべての画像データ(例えば、F、P、V、L)は、システムメモリ514の同じ領域412又はブロックに格納される。画像データは、好ましくは、ブロックにN個のオブジェクトのデータを連続して格納することによってベクトル化される。例えば、Nが“4”であれば、力データの4つのFx成分、力データの4つのFy成分、及び力データの4つのFz成分が、連続して格納される。同様に、位置データP、速度データV、色データLなどに対して、同様の連続的なグループ化が施される。従って、所定のオブジェクト102の画像データは、参照番号414iによって示すように、メモリブロック内にある程度まで分散される。有益には、この構成により、SIMDプロセッサ508が採用される場合に、データの処理速度が上がる。これは、データタイプ(例えば、Fx、Fy、Fz、Px、Py、Pz、Vx、Vy、Vzなど)がメモリ514内ですでにベクトル化され、単一のSIMD命令を用いて動作されてもよいためである。
しかしながら、この構成の場合、適切な配置及びベクトル化を確保するために、領域412の各々に多数の未使用メモリ位置が必要となるため、メモリ514は、図7の構成と比較すると、あまり効率的に使用されないと考えられる。メモリ514におけるデータの体系化を実行するアプリケーションプログラムは、オブジェクト102が部分空間112内へ又はそこから移動する場合に、すべてのメモリ領域412において画像データを認識するために、複雑化する可能性がある。
以下、各フレーム中、図4のプロセッサSPU1、SPU2、SPU3、及びSPU4(508A〜D)などのプロセッサにおいて、所定の部分空間112の画像データの処理方法を示すタイミング図700である図10を参照する。オブジェクト102の所定の部分空間112の特定のSPU508への割り当ては、好ましくは、SPU508が、所定の部分空間112のオブジェクトのすべてを処理するために利用可能であるかに基づくことに留意されたい。さらに、この割り当ては、PU504によって管理されてもよく、また、SPU508そのものによって管理されてもよい。
時刻Tにおいて、すべてのSPU508は、オブジェクトセットを処理するために利用可能であると仮定され、従って、各SPU508は、所定の部分空間112の画像データを取得する。例えば、SPU1〜SPU4は、部分空間112〜112のそれぞれの画像データを取得する。所定のオブジェクトセットの画像データを処理するために所定のSPUによって必要とされる時間は、一般的に、当該部分空間112内のオブジェクト102の数に比例する。従って、SPU1〜SPU4の各々は、異なる時間でこのような処理を完了してもよい。極端な場合では、所定の部分空間112がオブジェクト102を含まない場合があってもよく、従って、少なくとも所定の時間間隔に対して、迅速に処理され及び/又は完全に無視されてもよい。
SPU3が、時刻T付近で部分空間112のオブジェクト102の計算を完了すると、SPU3は、部分空間112などの別の部分空間の画像データを取得する。同様に、時刻T付近で、SPU1は、部分空間112の処理を完了し、部分空間112のオブジェクト102の画像データを取得して、このようなデータの処理を開始してもよい。時刻T付近で、SPU4は、部分空間112の処理を完了し、部分空間112のオブジェクト102の画像データを取得して、該当するデータの処理を開始してもよい。最後に時刻T付近で、SPU2は、部分空間112の処理を完了し、部分空間112のオブジェクト102の画像データを取得して、該当するデータの処理を開始してもよい。このプロセスは、3D空間104のオブジェクト102のすべてが所定のフレーム内で、例えば、時刻TEND内に処理される。
本発明の少なくとも1つのさらなる態様によれば、上述した方法及び装置は、図面に示すような適切なハードウェアを利用して達成されてもよい。このようなハードウェアは、標準的なデジタル回路などの任意の既知の技術、ソフトウェア及び/又はファームウェアプログラムを実行するのに動作可能な任意の既知のプロセッサ、プログラム可能な読み取り専用メモリ(PROM)、プログラム可能なアレイ論理デバイス(PAL)などの1以上のプログラム可能なディジタルデバイス又はシステムなどを利用して実装されてもよい。さらに、図面に示す装置は、ある一定の機能ブロックに区分けされて示されているが、このようなブロックは、別々の回路によって実装されてもよく、及び/又は1以上の機能ユニットに組み合わせられてもよい。さらに、本発明の様々な態様は、持ち運びや配送に適した1つ又は複数の格納媒体(フレキシブルディスク、メモリチップなど)に格納されてもよいソフトウェア及び/又はファームウェアプログラムによって実装されてもよい。
本明細書において、具体的な実施形態を用いて本発明を記載したが、これらの実施形態は本発明の原理及び用途の例を示すものに過ぎないことを理解されたい。このため、添付の請求の範囲に記載した本発明の趣旨及び範囲から逸脱することなく、これら例示的な実施形態を種々に変更し、上記以外の構成を考案し得ることが理解されたい。
本発明の1以上の実施形態による、オブジェクトの動きをシミュレートするために使用されるコンピュータモデルを例示した説明図。 本発明の1以上の実施形態による、図1のオブジェクトを操作するためのプロセスステップを例示した流れ図。 図2のプロセスステップを実行可能な2以上のサブプロセッサを有するマルチプロセッシングシステムの構造を例示したブロック図。 本発明の1以上の態様による、SIMD技術を採用した別のコンピュータアーキテクチャを例示したブロック図。 本発明の1以上のさらなる実施形態による、図4のシステムの一般的なサブプロセッシングユニット(SPU)の構造を例示したブロック図。 本発明の1以上のさらなる実施形態による、図4のシステムのプロセッシングユニット(PU)の構造を例示したブロック図。 本発明の1以上の実施形態による、図3及び/又は図4のコンピュータシステムのシステムメモリにおいて画像データが体系化される方法を例示した説明図。 本発明の1以上のさらなる実施形態による、図3及び/又は図4のコンピュータシステムのシステムメモリにおいて画像データが体系化される方法に関する別のアプローチを例示した説明図。 本発明の1以上のさらなる実施形態による、図3及び/又は図4のコンピュータシステムのシステムメモリにおいて画像データが体系化される方法に関するさらなる別のアプローチを例示した説明図。 本発明の1以上のさらなる実施形態による、図3及び/又は図4のコンピュータシステムを使用した画像データの並列処理を例示したタイミング図。
符号の説明
102 オブジェクト
104 3D空間
112 部分空間
250A マルチプロセッサシステム
252A〜D プロセッサ
254A〜D ローカルメモリ
256 システムメモリ
500 プロセッサエレメント
502 I/Oインタフェース
504 プロセッシングユニット
508A〜508D サブプロセッシングユニット
510A SPUコア
510B メモリフローコントローラ
511 メモリインタフェース
514 共有メモリ
550 ローカルメモリ
552、572 命令ユニット
554、574 レジスタ
556、576 浮動小数点実行ステージ
558、578 固定小数点実行ステージ
560 ダイレクトメモリアクセスコントローラ
562、588 メモリ管理ユニット
564、580 バスインタフェースユニット
570 L1キャッシュ
582 L2キャッシュ
584 NCU
586 CIU

Claims (39)

  1. 3次元画像空間内の複数のオブジェクトを、この3次元画像空間を分割した各部分空間に対応するオブジェクトセットとしてグループ化を行うステップと、
    前記複数のオブジェクトの各々に対して、オブジェクトセット毎に、マルチプロセッサを構成する複数のプロセッサのいずれかを用いて、最初の画像データから最後の画像データを算出するステップと、を含み、
    複数のイメージフレームの各々に対して、現在のイメージフレームの最初の画像データに直前のイメージフレームの最後の画像データを用いて、この最初の画像データから最後の画像データを算出する前記ステップを繰り返し行うことを特徴とする、
    データ処理方法。
  2. 各オブジェクトの前記画像データが、位置データ、力データ、速度データ、色データ、及び質量データの少なくとも1つを含むことを特徴とする、
    請求項1記載のデータ処理方法。
  3. 所定のオブジェクトの最後の画像データの前記算出は、オブジェクトの初期位置データと、前記速度データに基づく前記オブジェクトの初期速度、前記力データに基づく前記オブジェクトにかかる初期力、及び前記質量データに基づく前記オブジェクトの初期質量の少なくとも1つ以上をパラメータとして、当該オブジェクトの最後の位置データを算出するステップを含むことを特徴とする、
    請求項2記載のデータ処理方法。
  4. 所定のオブジェクトの最後の画像データの前記算出は、当該オブジェクトが、別のオブジェクトと衝突するかを算出するステップを含むことを特徴とする、
    請求項1又は2記載のデータ処理方法。
  5. 前記複数のオブジェクトを、前記3次元画像空間を分割した各部分空間に対応するオブジェクトセットとしてグループ化を行う前記ステップは、
    最後の画像データを算出した結果、少なくとも1以上のオブジェクトの位置データが最初に所属する部分空間の外の位置を表す場合に、再グループ化を行うステップを含むことを特徴とする、
    請求項1〜4のいずれかに記載のデータ処理方法。
  6. 所定数の前記最後の画像データを2次元(2D)データに変換するステップと、ディスプレイスクリーン上に表示するための前記2Dデータをレンダリングするステップと、をさらに含むことを特徴とする、
    請求項1〜5のいずれかに記載のデータ処理方法。
  7. 前記プロセッサが、単一命令複数データ(SIMD)演算処理を実行するように動作可能であることを特徴とする、
    請求項1〜6のいずれかに記載のデータ処理方法。
  8. 前記オブジェクトの前記最後の画像データを、前記複数のプロセッサに動作可能に連結されたシステムメモリに格納するステップと、
    前記オブジェクトセット及び前記部分空間に対応するように、前記システムメモリ内にある前記最後の画像データをグループ化するステップとをさらに含むことを特徴とする、
    請求項1〜7のいずれかに記載のデータ処理方法。
  9. 最後の画像データを算出した結果、少なくとも1以上のオブジェクトの位置データが最初に所属する部分空間の外の位置を表す場合に、再グループ化を行うステップを含むことを特徴とする、
    請求項8記載のデータ処理方法。
  10. 前記プロセッサが、位置データ、力データ、速度データ、色データ、及び質量データの少なくとも1つを含む各オブジェクトの前記画像データを、各々が前記システムメモリ内の隣接領域にあるブロックから読み取り及び/又はブロックへ書き込みを行うように動作可能であることを特徴とする、
    請求項8又は9記載のデータ処理方法。
  11. すべての前記位置データ、すべての前記力データ、すべての前記速度データ、及びすべての前記色データ、の少なくとも1つが、対応する1以上の隣接した前記ブロックに格納されることを特徴とする、
    請求項10記載のデータ処理方法。
  12. 所定のオブジェクトのすべての前記画像データがシステムメモリの同一ブロックに格納されるステップ、
    複数のオブジェクトのすべての前記画像データがシステムメモリの同一ブロック又は隣接ブロックに格納されるステップ、
    所定のオブジェクトセットのすべての前記画像データがシステムメモリの同一ブロック又は隣接ブロックに格納されるステップ、
    の少なくとも1つのステップをさらに含むことを特徴とする、
    請求項10記載のデータ処理方法。
  13. 所定のオブジェクトの前記画像データのすべてが、システムメモリの同一ブロック内に連続して格納されることを特徴とする、
    請求項12記載のデータ処理方法。
  14. 前記プロセッサが、単一命令複数データ(SIMD)演算処理を実行するように動作可能であり、
    複数のデータ演算処理の数がN個の場合に、少なくともN個のオブジェクトの各々のオブジェクトセット用の所定数の画像データが、システムメモリの同一ブロック内に連続して格納されることを特徴とする、
    請求項10記載のデータ処理方法。
  15. 少なくともN個のオブジェクトの各々のオブジェクトセット用の、前記位置データ、前記力データ、前記速度データ、前記色データ、及び前記質量データの少なくとも1つが、システムメモリの同一ブロック内に連続して格納されることを特徴とする、
    請求項14記載のデータ処理方法。
  16. 前記プロセッサが利用可能になると、システムメモリから前記部分空間の前記オブジェクトセットの前記画像データを読み取り且つ処理するために、前記プロセッサを使用するステップをさらに含むことを特徴とする、
    請求項8記載のデータ処理方法。
  17. 前記部分空間の1以上のサイズが、前記プロセッサの処理能力に応じて決定されることを特徴とする、
    請求項1〜16のいずれかに記載のデータ処理方法。
  18. 前記処理能力は、前記プロセッサが前記オブジェクトの前記画像データを演算処理すると見込まれるフレームレート、前記プロセッサがメモリにある前記画像データにアクセスできる速度、前記プロセッサが前記画像データを演算処理できる速度、及び前記所定のプロセッサの各々内のローカルメモリサイズ、の少なくとも1つを含むことを特徴とする、
    請求項17記載のデータ処理方法。
  19. 3次元画像空間内の複数のオブジェクトの各々の画像データを格納するように動作可能なシステムメモリと、複数のプロセッサとを含み、
    前記複数のプロセッサの各々は、
    3次元画像空間内の前記複数のオブジェクトを、この3次元画像空間を分割した各部分空間に対応するオブジェクトセットとしてグループ化し、
    前記複数のオブジェクトの各々に対して、オブジェクトセット毎に、マルチプロセッサを構成する複数のプロセッサのいずれかを用いて、最初の画像データから最後の画像データを算出し、
    複数のイメージフレームの各々に対して、現行のイメージフレームの前記最初の画像データに直前のイメージフレームの最後の画像データを用いて、前記グループ化及び算出を繰り返すように動作可能であることを特徴とする、
    処理システム。
  20. 各オブジェクトの前記画像データは、位置データ、力データ、速度データ、色データ、及び質量データの少なくとも1つを含むことを特徴とする、
    請求項19記載の処理システム。
  21. 前記プロセッサは、
    オブジェクトの初期位置データと、前記速度データに基づく前記オブジェクトの初期速度、前記力データに基づく前記オブジェクトにかかる初期力、及び前記質量データに基づく前記オブジェクトの初期質量の少なくとも1つ以上をパラメータとして、当該オブジェクトの最後の位置データを算出するように動作可能であることを特徴とする、
    請求項20記載の処理システム。
  22. 前記プロセッサは、所定のオブジェクトの最後の画像データの前記算出により、当該オブジェクトが、別のオブジェクトと衝突するかを算出するように動作可能であることを特徴とする、
    請求項19又は20記載の処理システム。
  23. 前記プロセッサは、
    前記オブジェクトを、前記3次元画像空間を分割した各部分空間に対応する前記オブジェクトセットに応じてグループ化して、最後の画像データを算出した結果、少なくとも1以上のオブジェクトの位置データが、当該オブジェクトが最初に所属する部分空間の外の位置にあることを示す場合に、再グループ化を行うように動作可能であることを特徴とする、
    請求項19〜22のいずれかに記載の処理システム。
  24. 前記プロセッサは、所定数の前記最後の画像データを2次元(2D)データに変換して、ディスプレイスクリーン上に表示するための前記2Dデータをレンダリングするようにさらに動作可能であることを特徴とする、
    請求項19〜23のいずれかに記載の処理システム。
  25. 前記プロセッサは、単一命令複数データ(SIMD)演算処理を実行するように動作可能であることを特徴とする、
    請求項19〜24のいずれかに記載の処理システム。
  26. 前記プロセッサは、
    前記オブジェクトの前記最後の画像データをシステムメモリに格納して、前記オブジェクトセット及び前記部分空間に対応するように、前記システムメモリ内にある前記最後の画像データをグループ化するようにさらに動作可能であることを特徴とする、
    請求項19〜25のいずれかに記載の処理システム。
  27. 前記プロセッサは、
    最後の画像データを算出した結果、少なくとも1以上のオブジェクトの位置データが最初に所属する部分空間の外の位置を表す場合に、再グループ化を行うようにさらに動作可能であることを特徴とする、
    請求項26記載の処理システム。
  28. 前記プロセッサは、
    位置データ、力データ、速度データ、色データ、及び質量データの少なくとも1つを含む各オブジェクトの前記画像データを、各々が前記システムメモリ内の隣接領域にあるブロックから読み取り及び/又はブロックへ書き込みを行うように動作可能であることを特徴とする、
    請求項26又は27記載の処理システム。
  29. 前記プロセッサは、
    すべての前記位置データ、すべての前記力データ、すべての前記速度データ、及びすべての前記色データ、の少なくとも1つを、対応する1以上の隣接メモリブロックに格納することを特徴とする、
    請求項28記載の処理システム。
  30. 前記プロセッサは、
    所定のオブジェクトのすべての前記画像データをシステムメモリの同一ブロックに格納する機能、
    複数のオブジェクトのすべての前記画像データをシステムメモリの同一ブロック又は隣接ブロックに格納する機能、
    所定のオブジェクトセットのすべての前記画像データをシステムメモリの同一ブロック又は隣接ブロックに格納する機能、
    の少なくとも1つを備えることを特徴とする、
    請求項28記載の処理システム。
  31. 所定のオブジェクトの前記画像データのすべては、システムメモリの同一ブロック内に連続して格納されることを特徴とする、
    請求項30記載の処理システム。
  32. 前記プロセッサは、
    単一命令複数データ(SIMD)演算処理を実行するように動作可能であり、
    複数のデータ演算処理の数がN個の場合に、少なくともN個のオブジェクトの各々のオブジェクトセット用の所定数の画像データが、システムメモリの同一ブロック内に連続して格納されることを特徴とする、
    請求項28記載の処理システム。
  33. 少なくともN個のオブジェクトの各々のオブジェクトセット用の、前記位置データ、前記力データ、前記速度データ、前記色データ、及び前記質量データの少なくとも1つが、システムメモリの同一ブロック内に連続して格納されることを特徴とする、
    請求項32記載の処理システム。
  34. 前記複数のプロセッサの各々は、システムメモリから前記部分空間の前記オブジェクトセットの前記画像データを読み取り且つ処理することを特徴とする、
    請求項26記載の処理システム。
  35. 前記複数のプロセッサの各々は、前記部分空間の1以上のサイズを自身の処理能力に応じて決定することを特徴とする、
    請求項19〜34のいずれかに記載の処理システム。
  36. 前記複数のプロセッサの各々の前記処理能力は、前記オブジェクトの前記画像データを演算処理すると見込まれるフレームレート、メモリにある前記画像データにアクセスできる速度、前記画像データを演算処理できる速度、及び自身が有するローカルメモリサイズ、の少なくとも1つにより決まることを特徴とする、
    請求項35記載の処理システム。
  37. 3次元画像空間内の複数のオブジェクトの各々の画像データを格納するように動作可能なシステムメモリに接続された複数のプロセッサを備えており、
    前記複数のプロセッサの各々は、
    3次元画像空間内の前記複数のオブジェクトを、この3次元画像空間を分割した各部分空間に対応するオブジェクトセットとしてグループ化し、
    前記複数のオブジェクトの各々に対して、オブジェクトセット毎に、マルチプロセッサを構成する複数のプロセッサのいずれかを用いて、最初の画像データから最後の画像データを算出し、
    複数のイメージフレームの各々に対して、現行のイメージフレームの前記最初の画像データに直前のイメージフレームの最後の画像データを用いて、前記グループ化及び算出を繰り返すように構成されていることを特徴とする、
    データ処理装置。
  38. 3次元画像空間内の複数のオブジェクトの各々の画像データを格納するように動作可能なシステムメモリに接続された複数のプロセッサのうちの1以上に、
    3次元画像空間内の前記複数のオブジェクトを、この3次元画像空間を分割した各部分空間に対応するオブジェクトセットとしてグループ化し、
    前記複数のオブジェクトの各々に対して、オブジェクトセット毎に、マルチプロセッサを構成する複数のプロセッサのいずれかを用いて、最初の画像データから最後の画像データを算出し、
    複数のイメージフレームの各々に対して、現行のイメージフレームの前記最初の画像データに直前のイメージフレームの最後の画像データを用いて、前記グループ化及び算出を繰り返す、
    ことを特徴とする動作を実行させるためのコンピュータプログラム。
  39. 請求項38に記載されたコンピュータプログラムが記録される、コンピュータが読み取り記録媒体。
JP2006029227A 2005-02-07 2006-02-07 グラフィック処理を用いた粒子操作方法及び装置 Expired - Fee Related JP4316574B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US65066305P 2005-02-07 2005-02-07

Publications (2)

Publication Number Publication Date
JP2006221639A true JP2006221639A (ja) 2006-08-24
JP4316574B2 JP4316574B2 (ja) 2009-08-19

Family

ID=36777623

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006029227A Expired - Fee Related JP4316574B2 (ja) 2005-02-07 2006-02-07 グラフィック処理を用いた粒子操作方法及び装置

Country Status (6)

Country Link
US (1) US20060177122A1 (ja)
EP (1) EP1846895A2 (ja)
JP (1) JP4316574B2 (ja)
KR (1) KR100878424B1 (ja)
CN (1) CN101401128A (ja)
WO (1) WO2006083045A2 (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009043245A (ja) * 2007-07-17 2009-02-26 Prometech Software Inc 近傍粒子探索に用いるデータ構造の構築方法、そのプログラム、およびそのプログラムを格納した記憶媒体
JP2010526295A (ja) * 2007-04-24 2010-07-29 株式会社ソニー・コンピュータエンタテインメント ビデオカメラとtvモニタを使用した3次元オブジェクトのスキャン
JP2011514592A (ja) * 2008-02-22 2011-05-06 クゥアルコム・インコーポレイテッド グラフィックス処理の命令レイテンシ減少のためのシステムおよび方法
US8223144B2 (en) 2007-01-11 2012-07-17 Sony Corporation Entertainment Inc. Method and apparatus for processing object collision

Families Citing this family (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8687010B1 (en) 2004-05-14 2014-04-01 Nvidia Corporation Arbitrary size texture palettes for use in graphics systems
US8736628B1 (en) 2004-05-14 2014-05-27 Nvidia Corporation Single thread graphics processing system and method
US8736620B2 (en) 2004-05-14 2014-05-27 Nvidia Corporation Kill bit graphics processing system and method
US8743142B1 (en) 2004-05-14 2014-06-03 Nvidia Corporation Unified data fetch graphics processing system and method
US8860722B2 (en) 2004-05-14 2014-10-14 Nvidia Corporation Early Z scoreboard tracking system and method
US8633927B2 (en) * 2006-07-25 2014-01-21 Nvidia Corporation Re-render acceleration of frame with lighting change
US8537168B1 (en) 2006-11-02 2013-09-17 Nvidia Corporation Method and system for deferred coverage mask generation in a raster stage
US8599208B2 (en) * 2007-08-15 2013-12-03 Nvidia Corporation Shared readable and writeable global values in a graphics processor unit pipeline
US8521800B1 (en) 2007-08-15 2013-08-27 Nvidia Corporation Interconnected arithmetic logic units
US8314803B2 (en) * 2007-08-15 2012-11-20 Nvidia Corporation Buffering deserialized pixel data in a graphics processor unit pipeline
US8775777B2 (en) * 2007-08-15 2014-07-08 Nvidia Corporation Techniques for sourcing immediate values from a VLIW
US8736624B1 (en) 2007-08-15 2014-05-27 Nvidia Corporation Conditional execution flag in graphics applications
US9183607B1 (en) 2007-08-15 2015-11-10 Nvidia Corporation Scoreboard cache coherence in a graphics pipeline
US20090046105A1 (en) * 2007-08-15 2009-02-19 Bergland Tyson J Conditional execute bit in a graphics processor unit pipeline
GB2465812A (en) * 2008-12-01 2010-06-02 Imagination Tech Ltd Distributed processing for rendering 3D images
US9411595B2 (en) 2012-05-31 2016-08-09 Nvidia Corporation Multi-threaded transactional memory coherence
US9824009B2 (en) 2012-12-21 2017-11-21 Nvidia Corporation Information coherency maintenance systems and methods
US10102142B2 (en) 2012-12-26 2018-10-16 Nvidia Corporation Virtual address based memory reordering
US9317251B2 (en) 2012-12-31 2016-04-19 Nvidia Corporation Efficient correction of normalizer shift amount errors in fused multiply add operations
US9569385B2 (en) 2013-09-09 2017-02-14 Nvidia Corporation Memory transaction ordering
US20190220680A1 (en) * 2016-03-07 2019-07-18 HangZhou HaiCun Information Technology Co., Ltd. Distributed Pattern Processor Package
CN105957085A (zh) * 2016-05-09 2016-09-21 中国科学院深圳先进技术研究院 三维医学影像数据处理方法及装置
CN107230242B (zh) * 2017-06-07 2020-09-25 广州酷狗计算机科技有限公司 粒子映射方法和装置
CN109598777B (zh) * 2018-12-07 2022-12-23 腾讯科技(深圳)有限公司 图像渲染方法、装置、设备及存储介质

Family Cites Families (68)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4855903A (en) * 1984-12-20 1989-08-08 State University Of New York Topologically-distributed-memory multiprocessor computer
GB8713819D0 (en) * 1987-06-12 1987-12-16 Smiths Industries Plc Information processing systems
US4893116A (en) * 1987-11-16 1990-01-09 Ncr Corporation Logical drawing and transparency circuits for bit mapped video display controllers
US4953101A (en) * 1987-11-24 1990-08-28 Digital Equipment Corporation Software configurable memory architecture for data processing system having graphics capability
DE68926043T2 (de) * 1989-07-20 1996-08-22 Toshiba Kawasaki Kk Mehrprozessor-Computersystem
US5377129A (en) * 1990-07-12 1994-12-27 Massachusetts Institute Of Technology Particle interaction processing system
US5557711A (en) * 1990-10-17 1996-09-17 Hewlett-Packard Company Apparatus and method for volume rendering
US5640496A (en) * 1991-02-04 1997-06-17 Medical Instrumentation And Diagnostics Corp. (Midco) Method and apparatus for management of image data by linked lists of pixel values
US5442733A (en) * 1992-03-20 1995-08-15 The Research Foundation Of State University Of New York Method and apparatus for generating realistic images using a discrete representation
US5280428A (en) * 1992-07-14 1994-01-18 General Electric Company Method and apparatus for projecting diagnostic images from volumed diagnostic data accessed in data tubes
US5321809A (en) * 1992-09-11 1994-06-14 International Business Machines Corporation Categorized pixel variable buffering and processing for a graphics system
US5500925A (en) * 1992-12-01 1996-03-19 Xaos Tools Dynamic image processing using particle systems
US5550972A (en) * 1993-06-30 1996-08-27 Microsoft Corporation Method and apparatus for efficient transfer of data to memory
JPH07319436A (ja) * 1994-03-31 1995-12-08 Mitsubishi Electric Corp 半導体集積回路装置およびそれを用いた画像データ処理システム
US5557734A (en) * 1994-06-17 1996-09-17 Applied Intelligent Systems, Inc. Cache burst architecture for parallel processing, such as for image processing
US5548694A (en) * 1995-01-31 1996-08-20 Mitsubishi Electric Information Technology Center America, Inc. Collision avoidance system for voxel-based object representation
US6025853A (en) * 1995-03-24 2000-02-15 3Dlabs Inc. Ltd. Integrated graphics subsystem with message-passing architecture
US5777629A (en) * 1995-03-24 1998-07-07 3Dlabs Inc. Ltd. Graphics subsystem with smart direct-memory-access operation
US5764243A (en) * 1995-03-24 1998-06-09 3Dlabs Inc. Ltd. Rendering architecture with selectable processing of multi-pixel spans
US5692183A (en) * 1995-03-31 1997-11-25 Sun Microsystems, Inc. Methods and apparatus for providing transparent persistence in a distributed object operating environment
US5765182A (en) * 1995-04-13 1998-06-09 Lsi Logic Corporation Interleaving memory on separate boards
US5742797A (en) * 1995-08-11 1998-04-21 International Business Machines Corporation Dynamic off-screen display memory manager
US6348919B1 (en) * 1995-12-18 2002-02-19 3Dlabs Inc, Ltd. Graphics system with optimized use of unified local and frame buffers
US5781195A (en) * 1996-04-16 1998-07-14 Microsoft Corporation Method and system for rendering two-dimensional views of a three-dimensional surface
US5920492A (en) * 1996-04-26 1999-07-06 Southwest Research Institute Display list generator for fire simulation system
US6104417A (en) * 1996-09-13 2000-08-15 Silicon Graphics, Inc. Unified memory computer architecture with dynamic graphics memory allocation
US6111582A (en) * 1996-12-20 2000-08-29 Jenkins; Barry L. System and method of image generation and encoding using primitive reprojection
US6057847A (en) * 1996-12-20 2000-05-02 Jenkins; Barry System and method of image generation and encoding using primitive reprojection
US6278645B1 (en) * 1997-04-11 2001-08-21 3Dlabs Inc., Ltd. High speed video frame buffer
US6008813A (en) * 1997-08-01 1999-12-28 Mitsubishi Electric Information Technology Center America, Inc. (Ita) Real-time PC based volume rendering system
US6496187B1 (en) * 1998-02-17 2002-12-17 Sun Microsystems, Inc. Graphics system configured to perform parallel sample to pixel calculation
US6532017B1 (en) * 1998-11-12 2003-03-11 Terarecon, Inc. Volume rendering pipeline
US6512517B1 (en) * 1998-11-12 2003-01-28 Terarecon, Inc. Volume rendering integrated circuit
US6266071B1 (en) * 1998-11-20 2001-07-24 Silicon Graphics, Inc. Method of producing fluid-like animations using a rapid and stable solver for the Navier-Stokes equations
US6480190B1 (en) * 1999-01-29 2002-11-12 Mitsubishi Electric Research Laboratories, Inc Graphical objects represented as surface elements
US6498607B1 (en) * 1999-01-29 2002-12-24 Mitsubishi Electric Research Laboratories, Inc. Method for generating graphical object represented as surface elements
US6348924B1 (en) * 1999-03-10 2002-02-19 Silicon Graphics, Inc. Method and apparatus for interactively painting volumetric particle flow paths and controlling a flow of the flow paths
US6500008B1 (en) * 1999-03-15 2002-12-31 Information Decision Technologies, Llc Augmented reality-based firefighter training system and method
AU2001239926A1 (en) * 2000-02-25 2001-09-03 The Research Foundation Of State University Of New York Apparatus and method for volume processing and rendering
US6580425B1 (en) * 2000-02-28 2003-06-17 Mitsubishi Electric Research Laboratories, Inc. Hierarchical data structures for surface elements
US6509902B1 (en) * 2000-02-28 2003-01-21 Mitsubishi Electric Research Laboratories, Inc. Texture filtering for surface elements
US6583787B1 (en) * 2000-02-28 2003-06-24 Mitsubishi Electric Research Laboratories, Inc. Rendering pipeline for surface elements
JP2001357415A (ja) * 2000-04-13 2001-12-26 Sony Corp 画像処理装置および方法、記録媒体、並びにプログラム
US6940508B2 (en) * 2000-06-22 2005-09-06 Microsoft Corp. Method and apparatus for modeling and real-time rendering of surface detail
US6801202B2 (en) * 2000-06-29 2004-10-05 Sun Microsystems, Inc. Graphics system configured to parallel-process graphics data using multiple pipelines
US6633297B2 (en) * 2000-08-18 2003-10-14 Hewlett-Packard Development Company, L.P. System and method for producing an antialiased image using a merge buffer
US6618046B1 (en) * 2000-09-29 2003-09-09 Intel Corporation System and method for estimating the rendering cost for images
US6526491B2 (en) * 2001-03-22 2003-02-25 Sony Corporation Entertainment Inc. Memory protection system and method for computer architecture for broadband networks
JP2004524627A (ja) * 2001-03-26 2004-08-12 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ マルチメディア・アイテムの格納
JP3478334B2 (ja) * 2001-03-28 2003-12-15 株式会社ナムコ プログラム、情報記憶媒体及びゲーム装置
US7102636B2 (en) * 2001-03-31 2006-09-05 Intel Corporation Spatial patches for graphics rendering
US6661423B2 (en) * 2001-05-18 2003-12-09 Sun Microsystems, Inc. Splitting grouped writes to different memory blocks
US6731300B2 (en) * 2001-05-18 2004-05-04 Sun Microsystems, Inc. Efficient anti-aliased dot rasterization
US20030083854A1 (en) * 2001-10-26 2003-05-01 Cronin Thomas M. Particle control using a path
JP3861690B2 (ja) * 2002-01-07 2006-12-20 ソニー株式会社 画像編集装置及び画像編集方法、記憶媒体、並びにコンピュータ・プログラム
US7427991B2 (en) * 2002-02-12 2008-09-23 Sony Corporation System and process for digital generation, placement, animation and display of feathers and other surface-attached geometry for computer generated imagery
US6833831B2 (en) * 2002-02-26 2004-12-21 Sun Microsystems, Inc. Synchronizing data streams in a graphics processor
US6963342B2 (en) * 2002-02-28 2005-11-08 Sun Microsystems, Inc. Arbitration scheme for efficient parallel processing
US7159212B2 (en) * 2002-03-08 2007-01-02 Electronic Arts Inc. Systems and methods for implementing shader-driven compilation of rendering assets
GB2387094B (en) * 2002-03-26 2005-12-07 Imagination Tech Ltd 3-D Computer graphics rendering system
US6985153B2 (en) * 2002-07-15 2006-01-10 Sun Microsystems, Inc. Sample request mechanism for supplying a filtering engine
US7265753B1 (en) * 2002-12-09 2007-09-04 Bentley Systems, Inc. Particle tracing with on-demand meshing
US7069387B2 (en) * 2003-03-31 2006-06-27 Sun Microsystems, Inc. Optimized cache structure for multi-texturing
US7233335B2 (en) * 2003-04-21 2007-06-19 Nividia Corporation System and method for reserving and managing memory spaces in a memory resource
KR100500897B1 (ko) * 2003-09-03 2005-07-14 한국전자통신연구원 방향을 갖는 질점과 일반화된 스프링 모델을 이용한비정형 물체의 애니메이션 방법
US7349832B2 (en) * 2004-02-17 2008-03-25 Pixar Water particle manipulation
US7292250B2 (en) * 2004-03-31 2007-11-06 Dreamworks Animation, Llc Character deformation pipeline for computer-generated animation
US7505036B1 (en) * 2004-07-30 2009-03-17 3Dlabs Inc. Ltd. Order-independent 3D graphics binning architecture

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8223144B2 (en) 2007-01-11 2012-07-17 Sony Corporation Entertainment Inc. Method and apparatus for processing object collision
JP2010526295A (ja) * 2007-04-24 2010-07-29 株式会社ソニー・コンピュータエンタテインメント ビデオカメラとtvモニタを使用した3次元オブジェクトのスキャン
JP2009043245A (ja) * 2007-07-17 2009-02-26 Prometech Software Inc 近傍粒子探索に用いるデータ構造の構築方法、そのプログラム、およびそのプログラムを格納した記憶媒体
JP2011514592A (ja) * 2008-02-22 2011-05-06 クゥアルコム・インコーポレイテッド グラフィックス処理の命令レイテンシ減少のためのシステムおよび方法

Also Published As

Publication number Publication date
US20060177122A1 (en) 2006-08-10
WO2006083045A3 (en) 2007-06-14
JP4316574B2 (ja) 2009-08-19
KR20070085411A (ko) 2007-08-27
EP1846895A2 (en) 2007-10-24
CN101401128A (zh) 2009-04-01
KR100878424B1 (ko) 2009-01-13
WO2006083045A2 (en) 2006-08-10

Similar Documents

Publication Publication Date Title
JP4316574B2 (ja) グラフィック処理を用いた粒子操作方法及び装置
JP4322259B2 (ja) マルチプロセッサシステムにおけるローカルメモリへのデータアクセスを同期化する方法および装置
TWI489385B (zh) 一種用於預先擷取快取線的電腦實作方法與子系統
TWI624791B (zh) 用於在多緒處理單元中改善性能之技術
JP4246204B2 (ja) マルチプロセッサシステムにおける共有メモリの管理のための方法及び装置
JP4421561B2 (ja) ハイブリッドdmaキュー及びdmaテーブルのデータ処理方法、装置及びシステム
TWI361981B (en) Methods, apparatus and program for resource management, and storage medium
JP4645973B2 (ja) 命令セットのエミュレーションのための方法、装置及びシステム
TWI498819B (zh) 執行成型記憶體存取作業的系統和方法
JP4346612B2 (ja) 情報処理方法および装置
TWI533222B (zh) 處理任務的工作分配控制
TWI501150B (zh) 無指令解碼而排程指令的方法和裝置
US9069609B2 (en) Scheduling and execution of compute tasks
JP2006323829A (ja) 動的にリンクするプログラムのオーバーレイのための方法及び装置
JP4134182B2 (ja) タスク変更アプリケーションプログラミングインタフェースを提供する方法及び装置
CN112288619A (zh) 用于在渲染图形时预加载纹理的技术
JP2006260556A (ja) ラッチポイントを制御することにより、演算処理能力を改善する方法、装置ならびにシステム
TW201351276A (zh) 計算工作的排程和執行
JP4024271B2 (ja) マルチプロセッサシステムにおいて命令を処理するための方法と装置
JP2006260555A (ja) 命令の従属関係検査の深度を利用して処理能力の改善するための方法および装置

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20081118

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090107

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090310

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090323

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: 20090519

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: 20090520

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20120529

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20130529

Year of fee payment: 4

LAPS Cancellation because of no payment of annual fees