(57)【要約】【課題】非常に多数のグラフィックオブジェクトに関連する画像データを処理する方法及び装置を提供する。【解決手段】３Ｄ画像空間内のオブジェクトを、３Ｄ空間内の各部分空間に位置する複数のオブジェクトセットに応じてグループ化して、複数のオブジェクトの各々の最初の画像データに基づいて、オブジェクトセットの各オブジェクトの最後の画像データをマルチプロセッサシステムの複数のプロセッサの当該オブジェクトに対応するプロセッサを用いて算出する。現行のイメージフレームの最初の画像データに、先行のイメージフレームの最後の画像データを用いて、複数のイメージフレームの各々に対して上記の処理を繰り返す。【選択図】図２
2006221639.tif 000002
【特許請求の範囲】
【請求項１】
３次元画像空間内の複数のオブジェクトを、この３次元画像空間を分割した各部分空間に対応するオブジェクトセットとしてグループ化を行うステップと、
前記複数のオブジェクトの各々に対して、オブジェクトセット毎に、マルチプロセッサを構成する複数のプロセッサのいずれかを用いて、最初の画像データから最後の画像データを算出するステップと、を含み、
複数のイメージフレームの各々に対して、現在のイメージフレームの最初の画像データに直前のイメージフレームの最後の画像データを用いて、この最初の画像データから最後の画像データを算出する前記ステップを繰り返し行うことを特徴とする、
データ処理方法。
【請求項２】
各オブジェクトの前記画像データが、位置データ、力データ、速度データ、色データ、及び質量データの少なくとも１つを含むことを特徴とする、
請求項１記載のデータ処理方法。
【請求項３】
所定のオブジェクトの最後の画像データの前記算出は、オブジェクトの初期位置データと、前記速度データに基づく前記オブジェクトの初期速度、前記力データに基づく前記オブジェクトにかかる初期力、及び前記質量データに基づく前記オブジェクトの初期質量の少なくとも１つ以上をパラメータとして、当該オブジェクトの最後の位置データを算出するステップを含むことを特徴とする、
請求項２記載のデータ処理方法。
【請求項４】
所定のオブジェクトの最後の画像データの前記算出は、当該オブジェクトが、別のオブジェクトと衝突するかを算出するステップを含むことを特徴とする、
請求項１又は２記載のデータ処理方法。
【請求項５】
前記複数のオブジェクトを、前記３次元画像空間を分割した各部分空間に対応するオブジェクトセットとしてグループ化を行う前記ステップは、
最後の画像データを算出した結果、少なくとも１以上のオブジェクトの位置データが最初に所属する部分空間の外の位置を表す場合に、再グループ化を行うステップを含むことを特徴とする、
請求項１〜４のいずれかに記載のデータ処理方法。
【請求項６】
所定数の前記最後の画像データを２次元（２Ｄ）データに変換するステップと、ディスプレイスクリーン上に表示するための前記２Ｄデータをレンダリングするステップと、をさらに含むことを特徴とする、
請求項１〜５のいずれかに記載のデータ処理方法。
【請求項７】
前記プロセッサが、単一命令複数データ（ＳＩＭＤ）演算処理を実行するように動作可能であることを特徴とする、
請求項１〜６のいずれかに記載のデータ処理方法。
【請求項８】
前記オブジェクトの前記最後の画像データを、前記複数のプロセッサに動作可能に連結されたシステムメモリに格納するステップと、
前記オブジェクトセット及び前記部分空間に対応するように、前記システムメモリ内にある前記最後の画像データをグループ化するステップとをさらに含むことを特徴とする、
請求項１〜７のいずれかに記載のデータ処理方法。
【請求項９】
最後の画像データを算出した結果、少なくとも１以上のオブジェクトの位置データが最初に所属する部分空間の外の位置を表す場合に、再グループ化を行うステップを含むことを特徴とする、
請求項８記載のデータ処理方法。
【請求項１０】
前記プロセッサが、位置データ、力データ、速度データ、色データ、及び質量データの少なくとも１つを含む各オブジェクトの前記画像データを、各々が前記システムメモリ内の隣接領域にあるブロックから読み取り及び／又はブロックへ書き込みを行うように動作可能であることを特徴とする、
請求項８又は９記載のデータ処理方法。
【請求項１１】
すべての前記位置データ、すべての前記力データ、すべての前記速度データ、及びすべての前記色データ、の少なくとも１つが、対応する１以上の隣接した前記ブロックに格納されることを特徴とする、
請求項１０記載のデータ処理方法。
【請求項１２】
所定のオブジェクトのすべての前記画像データがシステムメモリの同一ブロックに格納されるステップ、
複数のオブジェクトのすべての前記画像データがシステムメモリの同一ブロック又は隣接ブロックに格納されるステップ、
所定のオブジェクトセットのすべての前記画像データがシステムメモリの同一ブロック又は隣接ブロックに格納されるステップ、
の少なくとも１つのステップをさらに含むことを特徴とする、
請求項１０記載のデータ処理方法。
【請求項１３】
所定のオブジェクトの前記画像データのすべてが、システムメモリの同一ブロック内に連続して格納されることを特徴とする、
請求項１２記載のデータ処理方法。
【請求項１４】
前記プロセッサが、単一命令複数データ（ＳＩＭＤ）演算処理を実行するように動作可能であり、
複数のデータ演算処理の数がＮ個の場合に、少なくともＮ個のオブジェクトの各々のオブジェクトセット用の所定数の画像データが、システムメモリの同一ブロック内に連続して格納されることを特徴とする、
請求項１０記載のデータ処理方法。
【請求項１５】
少なくともＮ個のオブジェクトの各々のオブジェクトセット用の、前記位置データ、前記力データ、前記速度データ、前記色データ、及び前記質量データの少なくとも１つが、システムメモリの同一ブロック内に連続して格納されることを特徴とする、
請求項１４記載のデータ処理方法。
【請求項１６】
前記プロセッサが利用可能になると、システムメモリから前記部分空間の前記オブジェクトセットの前記画像データを読み取り且つ処理するために、前記プロセッサを使用するステップをさらに含むことを特徴とする、
請求項８記載のデータ処理方法。
【請求項１７】
前記部分空間の１以上のサイズが、前記プロセッサの処理能力に応じて決定されることを特徴とする、
請求項１〜１６のいずれかに記載のデータ処理方法。
【請求項１８】
前記処理能力は、前記プロセッサが前記オブジェクトの前記画像データを演算処理すると見込まれるフレームレート、前記プロセッサがメモリにある前記画像データにアクセスできる速度、前記プロセッサが前記画像データを演算処理できる速度、及び前記所定のプロセッサの各々内のローカルメモリサイズ、の少なくとも１つを含むことを特徴とする、
請求項１７記載のデータ処理方法。
【請求項１９】
３次元画像空間内の複数のオブジェクトの各々の画像データを格納するように動作可能なシステムメモリと、複数のプロセッサとを含み、
前記複数のプロセッサの各々は、
３次元画像空間内の前記複数のオブジェクトを、この３次元画像空間を分割した各部分空間に対応するオブジェクトセットとしてグループ化し、
前記複数のオブジェクトの各々に対して、オブジェクトセット毎に、マルチプロセッサを構成する複数のプロセッサのいずれかを用いて、最初の画像データから最後の画像データを算出し、
複数のイメージフレームの各々に対して、現行のイメージフレームの前記最初の画像データに直前のイメージフレームの最後の画像データを用いて、前記グループ化及び算出を繰り返すように動作可能であることを特徴とする、
処理システム。
【請求項２０】
各オブジェクトの前記画像データは、位置データ、力データ、速度データ、色データ、及び質量データの少なくとも１つを含むことを特徴とする、
請求項１９記載の処理システム。
【請求項２１】
前記プロセッサは、
オブジェクトの初期位置データと、前記速度データに基づく前記オブジェクトの初期速度、前記力データに基づく前記オブジェクトにかかる初期力、及び前記質量データに基づく前記オブジェクトの初期質量の少なくとも１つ以上をパラメータとして、当該オブジェクトの最後の位置データを算出するように動作可能であることを特徴とする、
請求項２０記載の処理システム。
【請求項２２】
前記プロセッサは、所定のオブジェクトの最後の画像データの前記算出により、当該オブジェクトが、別のオブジェクトと衝突するかを算出するように動作可能であることを特徴とする、
請求項１９又は２０記載の処理システム。
【請求項２３】
前記プロセッサは、
前記オブジェクトを、前記３次元画像空間を分割した各部分空間に対応する前記オブジェクトセットに応じてグループ化して、最後の画像データを算出した結果、少なくとも１以上のオブジェクトの位置データが、当該オブジェクトが最初に所属する部分空間の外の位置にあることを示す場合に、再グループ化を行うように動作可能であることを特徴とする、
請求項１９〜２２のいずれかに記載の処理システム。
【請求項２４】
前記プロセッサは、所定数の前記最後の画像データを２次元（２Ｄ）データに変換して、ディスプレイスクリーン上に表示するための前記２Ｄデータをレンダリングするようにさらに動作可能であることを特徴とする、
請求項１９〜２３のいずれかに記載の処理システム。
【請求項２５】
前記プロセッサは、単一命令複数データ（ＳＩＭＤ）演算処理を実行するように動作可能であることを特徴とする、
請求項１９〜２４のいずれかに記載の処理システム。
【請求項２６】
前記プロセッサは、
前記オブジェクトの前記最後の画像データをシステムメモリに格納して、前記オブジェクトセット及び前記部分空間に対応するように、前記システムメモリ内にある前記最後の画像データをグループ化するようにさらに動作可能であることを特徴とする、
請求項１９〜２５のいずれかに記載の処理システム。
【請求項２７】
前記プロセッサは、
最後の画像データを算出した結果、少なくとも１以上のオブジェクトの位置データが最初に所属する部分空間の外の位置を表す場合に、再グループ化を行うようにさらに動作可能であることを特徴とする、
請求項２６記載の処理システム。
【請求項２８】
前記プロセッサは、
位置データ、力データ、速度データ、色データ、及び質量データの少なくとも１つを含む各オブジェクトの前記画像データを、各々が前記システムメモリ内の隣接領域にあるブロックから読み取り及び／又はブロックへ書き込みを行うように動作可能であることを特徴とする、
請求項２６又は２７記載の処理システム。
【請求項２９】
前記プロセッサは、
すべての前記位置データ、すべての前記力データ、すべての前記速度データ、及びすべての前記色データ、の少なくとも１つを、対応する１以上の隣接メモリブロックに格納することを特徴とする、
請求項２８記載の処理システム。
【請求項３０】
前記プロセッサは、
所定のオブジェクトのすべての前記画像データをシステムメモリの同一ブロックに格納する機能、
複数のオブジェクトのすべての前記画像データをシステムメモリの同一ブロック又は隣接ブロックに格納する機能、
所定のオブジェクトセットのすべての前記画像データをシステムメモリの同一ブロック又は隣接ブロックに格納する機能、
の少なくとも１つを備えることを特徴とする、
請求項２８記載の処理システム。
【請求項３１】
所定のオブジェクトの前記画像データのすべては、システムメモリの同一ブロック内に連続して格納されることを特徴とする、
請求項３０記載の処理システム。
【請求項３２】
前記プロセッサは、
単一命令複数データ（ＳＩＭＤ）演算処理を実行するように動作可能であり、
複数のデータ演算処理の数がＮ個の場合に、少なくともＮ個のオブジェクトの各々のオブジェクトセット用の所定数の画像データが、システムメモリの同一ブロック内に連続して格納されることを特徴とする、
請求項２８記載の処理システム。
【請求項３３】
少なくともＮ個のオブジェクトの各々のオブジェクトセット用の、前記位置データ、前記力データ、前記速度データ、前記色データ、及び前記質量データの少なくとも１つが、システムメモリの同一ブロック内に連続して格納されることを特徴とする、
請求項３２記載の処理システム。
【請求項３４】
前記複数のプロセッサの各々は、システムメモリから前記部分空間の前記オブジェクトセットの前記画像データを読み取り且つ処理することを特徴とする、
請求項２６記載の処理システム。
【請求項３５】
前記複数のプロセッサの各々は、前記部分空間の１以上のサイズを自身の処理能力に応じて決定することを特徴とする、
請求項１９〜３４のいずれかに記載の処理システム。
【請求項３６】
前記複数のプロセッサの各々の前記処理能力は、前記オブジェクトの前記画像データを演算処理すると見込まれるフレームレート、メモリにある前記画像データにアクセスできる速度、前記画像データを演算処理できる速度、及び自身が有するローカルメモリサイズ、の少なくとも１つにより決まることを特徴とする、
請求項３５記載の処理システム。
【請求項３７】
３次元画像空間内の複数のオブジェクトの各々の画像データを格納するように動作可能なシステムメモリに接続された複数のプロセッサを備えており、
前記複数のプロセッサの各々は、
３次元画像空間内の前記複数のオブジェクトを、この３次元画像空間を分割した各部分空間に対応するオブジェクトセットとしてグループ化し、
前記複数のオブジェクトの各々に対して、オブジェクトセット毎に、マルチプロセッサを構成する複数のプロセッサのいずれかを用いて、最初の画像データから最後の画像データを算出し、
複数のイメージフレームの各々に対して、現行のイメージフレームの前記最初の画像データに直前のイメージフレームの最後の画像データを用いて、前記グループ化及び算出を繰り返すように構成されていることを特徴とする、
データ処理装置。
【請求項３８】
３次元画像空間内の複数のオブジェクトの各々の画像データを格納するように動作可能なシステムメモリに接続された複数のプロセッサのうちの１以上に、
３次元画像空間内の前記複数のオブジェクトを、この３次元画像空間を分割した各部分空間に対応するオブジェクトセットとしてグループ化し、
前記複数のオブジェクトの各々に対して、オブジェクトセット毎に、マルチプロセッサを構成する複数のプロセッサのいずれかを用いて、最初の画像データから最後の画像データを算出し、
複数のイメージフレームの各々に対して、現行のイメージフレームの前記最初の画像データに直前のイメージフレームの最後の画像データを用いて、前記グループ化及び算出を繰り返す、
ことを特徴とする動作を実行させるためのコンピュータプログラム。
【請求項３９】
請求項３８に記載されたコンピュータプログラムが記録される、コンピュータが読み取り記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータグラフィックの分野に関し、さらに詳しく言えば、大量の画像データを処理するための方法及び装置に関する。
【背景技術】
【０００２】
最先端のコンピュータアプリケーションの複雑化及び処理システムに対する要求のさらなる高まりにより、近年はデータスループットが高く、より高速なコンピュータが常に望まれている。グラフィックアプリケーションは処理システムへの要求が大きいアプリケーションの１つであり、その理由は、グラフィックアプリケーションが所望のビジュアル結果を実現するために、比較的短時間で非常に多くのデータアクセス、データの演算処理、及びデータ操作を要求するからである。また、リアルタイムのマルチメディアアプリケーションも処理システムに対する要求が高く、実に、１秒間に数千メガビットのデータなどの非常に高速な処理速度を要求する。
【０００３】
例えば、３次元（３Ｄ）空間において移動している多数の小さなオブジェクト（例えば、雨滴、雪片、跳ね回るボールなど）のシミュレーションは、各フレームにおいて、各オブジェクトの空間位置の変化を定義するステップと、３Ｄ／２Ｄ変換、ポリゴン化を実行するステップと、ディスプレイスクリーン上に表示するためのオブジェクトをレンダリングするステップとを伴う。満足の行くビジュアル結果を実現するために、画像データは、一般に、リアルタイムの滑らかな動きとして人の目に映るように、約３０Ｈｚ（例えば、約３３ミリ秒／フレーム）のフレームレートでレンダリングされる。このようなリアルタイムの移動オブジェクトをシミュレートするのに要求される膨大な数の計算を行うために、コンピュータ処理システムに対する要求が高くなる。
【０００４】
高速処理を実現するためにシングルプロセッサを採用する処理システムもあれば、マルチプロセッサアーキテクチャを利用して実装されるものもある。マルチプロセッサシステムでは、所望の処理結果を実現するために、複数のサブプロセッサが並列に（又は少なくとも協調して）動作できる。マルチプロセッサシステムでモジュール構造を採用することも考えられてきており、その場合、演算モジュールは、広域ネットワーク（インターネットなど）上でアクセス可能であり、演算モジュールは、多くのユーザ間で共有されてもよい。本モジュール構造に関する詳細が、米国特許第６，５２６，４９１号に解説されており、該特許は参照として本願に組込まれる。
【０００５】
処理スループットを高めるために、単一命令複数データ（ＳＩＭＤ：Single Instruction Multiple Data）処理アーキテクチャを採用するマルチプロセッシングシステムもある。しかしながら、ＳＩＭＤ処理システムでも、１０６以上のオブジェクトのリアルタイムシミュレーションは不十分なこともある。
【特許文献１】米国特許第６，５２６，４９１号
【発明の開示】
【発明が解決しようとする課題】
【０００６】
従って、リアルタイムのシミュレーション結果を実現するために、非常に多数のグラフィックオブジェクトに関連する画像データを処理できる新規の方法及び装置が当業界において必要とされている。
【課題を解決するための手段】
【０００７】
本発明の１以上の態様によれば、特に、空間に１００万個以上などの著しい数のオブジェクトがある場合、各フレームにおいて、複数のオブジェクトの位置のあらゆる変化の計算が効率的に実行される。ＳＩＭＤ並列処理環境が採用される場合であっても、本発明の態様により、パラレルプロセッサ間でのオブジェクトデータの割り当て方法及び／又はメモリでのオブジェクトデータの格納方法を制御することができる。
【０００８】
例えば、３Ｄ空間のオブジェクトは、複数の部分空間（又はバケット）に区切られてもよく、この場合、各バケットはいくつかのオブジェクトを含む。各フレームにおいて、パラレルプロセッサの各々は、特定のバケットのオブジェクトデータ（最初の位置、速度、力、色など）を読み込み、該当するバケット内のオブジェクトの動き及び／又は衝突の計算（例えば、オイラーの等式を用いて）の両方を実行する。各プロセッサがバケットの計算を完了すると、データ（例えば、最後の位置、最後の速度、色など）がメモリに書き込まれて、次のバケットが処理される。
【０００９】
好ましくは、バケット間でのＤＭＡアクセス待ち時間を隠すために、各プロセッサは、メモリから／メモリへデータを読み書きするための「ダブルバッファ」技術を用いる。さらに、バケットサイズは、好ましくは、サイクル時間（フレームレート）、読み出しサイクル／バイト、書き込みサイクル／バイト、計算サイクル／バイト、及びローカルストレージのメモリサイズに応じて選択される。
【００１０】
粒子データは、好ましくは、３Ｄ空間における粒子位置と一致する順序でシステムメモリに格納される。例えば、特定のバケットにある粒子のすべては、システムメモリ内に互いに近接して格納される。これにより、システムメモリとプロセッサのローカルメモリとの間でのデータ転送（ＤＭＡ転送など）の効率性が高まる。さらに、ＳＩＭＤアーキテクチャが採用される場合、オブジェクトデータ（例えば、位置データ、速度データ、力データなど）のタイプは、好ましくは、プロセッサのＳＩＭＤ能力と一致するように互いに近接してグループ化（又はベクトル化）される。例えば、プロセッサが１つの命令で４ユニットのデータを実行可能であれば、４ユニットの位置データ、４ユニットの速度データ、及び４ユニットの力データなどは、好ましくは、ＳＩＭＤ処理速度を高めるために互いに近接して格納される。
【００１１】
オブジェクトデータが操作された後、データは、好ましくは、上述したような場所にあるシステムメモリ内に書き込まれ、フレームに対するオブジェクトの最後の位置に応じて、再体系化が必要な場合もある。
【００１２】
本発明の１以上の態様によれば、方法及び装置が、３次元（３Ｄ）画像空間内のオブジェクトを、３Ｄ空間内の各部分空間に位置する複数のオブジェクトセットに応じてグループ化するステップと、各オブジェクトの最初の画像データに基づいて、オブジェクトセットの各オブジェクトの最後の画像データを、マルチプロセッサシステムの複数のプロセッサの当該オブジェクトセットに対応するプロセッサを用いて算出するステップと、を含み、現行のイメージフレームの最初の画像データに、先行のイメージフレームの最後の画像データを用いて、複数のイメージフレームの各々に対して上記各ステップを繰り返す。
【００１３】
所定のオブジェクトの最後の画像データの算出は、オブジェクトの最初の位置データと、速度データからのオブジェクトの最初の速度、力データからのオブジェクトにかかる最初の力、及び質量データからのオブジェクトの最初の質量、の少なくとも１つとに応じて、オブジェクトの最後の位置データを算出するステップを含んでもよい。他の形態として、所定のオブジェクトの最後の画像データの算出は、オブジェクトが、別のオブジェクトと衝突するかを算出するステップを含んでもよい。
【００１４】
好ましくは、オブジェクトを３Ｄ空間の部分空間内のオブジェクトセットに応じてグループ化するステップは、最後の画像データの算出結果が、１以上のオブジェクトの最後の位置データがオブジェクトの最初の部分空間外にあることを示す場合、オブジェクトのいくつかを再グループ化するステップを含む。
【００１５】
この方法及び装置は、オブジェクトの最後の画像データを、複数のプロセッサに動作的に連結されたシステムメモリに格納するステップと、オブジェクトセット及び部分空間に対応するように、システムメモリ内にある最後の画像データをグループ化するステップと、をさらに含んでもよい。好ましくは、最後の画像データは、１以上のオブジェクトの最後の位置データがオブジェクトの最初の部分空間外にあることを最後の画像データの算出結果が示す場合、システムメモリ内で再グループ化される。
【００１６】
本発明の１以上のさらなる態様によれば、プロセッサは、各々がシステムメモリの隣接領域にあるブロックをなしたシステムメモリから／へ、データの読み取り／書き込みを行うように動作可能である。例えば、（i）位置データのすべてが対応する１以上の隣接メモリブロックに格納され、（ii）力データのすべてが対応する１以上の隣接メモリブロックに格納され、（iii）速度データのすべてが対応する１以上の隣接メモリブロックに格納され、及び（iv）色データのすべてが対応する１以上の隣接メモリブロックに格納される、の少なくとも１つを含む。
【００１７】
他の形態として、所定のオブジェクトの画像データのすべてがシステムメモリの同一ブロックに格納され、複数のオブジェクトの画像データのすべてがシステムメモリの同一ブロック又は隣接ブロックに格納され、所定のオブジェクトセットの画像データのすべてがシステムメモリの同一ブロック又は隣接ブロックに格納される、の少なくとも１つを含む。さらに、所定のオブジェクトの画像データのすべては、システムメモリの同一ブロック内に連続して格納されてもよい。
【００１８】
他の形態として、プロセッサは、単一命令複数データ（ＳＩＭＤ）演算処理を実行するように動作可能であってもよく、複数データ演算処理の数をＮとすると、Ｎ個のオブジェクトの対応するセットの画像データの少なくともいくつかは、システムメモリの同一ブロック内に連続して格納される。好ましくは、Ｎ個のオブジェクトの対応するセットの位置データ、力データ、速度データ、色データ、及び質量データの少なくとも１つが、システムメモリの同一ブロック内に連続して格納される。
【００１９】
上記方法及び装置は、好ましくは、プロセッサが利用可能になると、システムメモリから部分空間のオブジェクトセットの画像データを読み取り、処理するために、プロセッサを使用するステップを含む。
【００２０】
以下、添付の図面とともに本発明について記載することで、他の態様、特徴、利点などが当業者に明らかになるであろう。
【００２１】
様々な本発明の態様を例示するために、図面に、現在好ましいものである形態が示されているが、本発明は、図示した配置及び手段そのものに限定されるものではないことを理解されたい。
【発明を実施するための最良の形態】
【００２２】
本発明により、グラフィックオブジェクト、特に、多数のオブジェクト（例えば、約１０６以上）に関連する画像データを処理するため（例えば、コンピュータシミュレーションを実現するため）の有益な方法及び装置が提供される。例示的に、このようなオブジェクトは、雨滴、雪片などであってよく、その数は、特定のシミュレーション及びオブジェクトが位置する３Ｄ空間に応じて、数千、数十万、数百万以上であってもよい。この明細書においては、これら及び同様の移動オブジェクトを「粒子」と呼ぶ。
【００２３】
本発明の１以上の実施形態によれば、図１は、３Ｄ空間１０４において移動オブジェクト１０２をシミュレートするために使用されるコンピュータモデルを示す図１００である。３Ｄ空間１０４は、例示的に、幅１０６、高さ１０８、及び奥行き１１０を有し、複数のＮ個の個々の部分空間、いわゆるバケット１１２に区分けされる。本実施形態において、３Ｄ空間１０４は、例示的に、４つの区画１１４を含み、このような区画の各々は３６個のバケット１１２を有し、すべてのバケットは同じ寸法を有する。他の実施形態において、３Ｄ空間１０４は、任意の数のバケットを有する任意の数の区画を含んでもよい。さらにバケット１１２の寸法は、特定の用途に応じて変動するものであってもよい。
【００２４】
１以上の一般的な実施形態によれば、任意の時間に、各オブジェクト１０２は、質量（又は重量）Ｍ、特定の寸法、色属性Ｌ（ＲＧＢ、α）、速度Ｖ（ｘ，ｙ，ｚ）、オブジェクトに作用する力Ｆ（ｘ，ｙ，ｚ）、及び／又は空間位置Ｐ（ｘ，ｙ，ｚ）を有するものとして定義されてもよい。本明細書において、ｘ、ｙ、及びｚは、直交デカルト座標であり、省略形のＲＧＢは、慣例的に、標準的な（赤／緑／青）カラースキームに関し、αは、オブジェクト１０２のビジュアルイメージの強度である。本発明の趣旨及び範囲から逸脱することなく、他の座標系が採用されてもよく、他の色の取り決めが採用されてもよいことを理解されたい。
【００２５】
本実施形態において、すべてのオブジェクト１０２は、例示的に、同一の質量及び寸法を有する。しかしながら、さらなる実施形態（図示せず）において、このような限定が部分的又は全体的に外されてもよい。例えば、個々の特性（例えば、大きさや質量）は、所定のオブジェクト１０２の少なくとも一部分に割り当てられてもよい。さらに、オブジェクト１０２は、時間、表面の硬さなどの他の特性に選択的に関連されてもよい。従って、このような特性を有するオブジェクトについてシミュレートするために、より多くの演算処理用のリソースやより大きなメモリが要求されることもある。
【００２６】
本発明の１以上の態様によれば、オブジェクト１０２の各々の最初の画像データに基づいて、３Ｄ空間１０４にあるオブジェクト１０２の各々の最後の画像データが算出される。このような演算処理は、好ましくは、オブジェクト１０２が３Ｄ空間１０４内でリアルタイムに動くようにするために、画像データがレンダリングされて表示されるように、フレームごとに実行される。多くの応用において、フレームの持続時間は、好ましくは、約１／３０秒である。フレームにおいて、各バケット１１２が、３Ｄ空間１０４に共存するオブジェクト１０２の総数の任意の部分を含んでもよい。従って、隣接フレームにおいて、任意のバケット１１２内へ又はそこから移動しうるオブジェクト１０２もあるため、バケット１１２が、同数又は異なる数のオブジェクト１０２のいずれかを含むものであってもよい。
【００２７】
本発明の１以上のさらなる態様によれば、３Ｄ空間１０４におけるオブジェクト１０２の動きが演算処理されると、オブジェクト１０２間及び／又は壁、障壁、及びオプションとして３Ｄ空間１０４に配置されることがある他の障害物などの１以上の他のオブジェクト（図示せず）と、１以上の衝突が生じることがある。衝突は、弾性タイプ又は非弾性タイプのものであってもよい。当業界において、このようなタイプの衝突は、オブジェクト１０２の衝突後の軌跡を描くための既知の解析モデル（例えば、オイラーの等式又は同様の公式に基づいたもの）を有する。他の形態として衝突は、交差するオブジェクト１０２に選択的にかかる相互作用の特化された（すなわち、特有の）法則に従うものであってもよい。
【００２８】
図２は、本発明の１以上の実施形態による、画像データを処理する方法２００を示す流れ図である。図３は、方法２００の１以上の部分を実行可能な２以上のサブプロセッサ２５２及びシステムメモリ２５６を有するマルチプロセッサシステム２５０Ａの構造を例示した説明図である。プロセッサ２５２Ａ〜Ｄの各々は、好ましくは、関連するローカルメモリ２５４Ａ〜Ｄを含み、バス２５８によって主（システム）メモリ２５６に結合される。例示的に４つのプロセッサ２５２を示しているが、本発明の趣旨及び範囲から逸脱することなく、任意の数のものが利用されてもよい。プロセッサ２５２は、既知の技術の任意のものを用いて実装されてもよく、各プロセッサ２５２は、同様の構成のものでも、異なる構成のものであってもよい。
【００２９】
方法２００が開始され（ステップ２０２）てステップ２０４に進むと、このステップで、オブジェクト１０２の画像データが３Ｄ画像空間１０４内において複数のオブジェクトセットにグループ化され（体系化又はバケット化され）、各オブジェクトセットは、３Ｄ空間１０４内の対応する部分空間（又はバケット）１１２の位置を示す。画像データはまた、同一のバケット１１２にあるオブジェクト１０２に対応する画像データが、システムメモリ２５６において互いに近接した位置にあるように、システムメモリ２５６内に格納される。以下、本明細書において、図６〜図８を参照しながら、システムメモリ２５６におけるオブジェクト１０２の画像データを体系化及び格納する一般的な方法について記載する。ここでは、同様のタイプの画像データ（例えば、位置データＰ（ｘ，ｙ，ｚ）、速度データＶ（ｘ，ｙ，ｚ）、色属性データＬ（ＲＧＢ、α）など）が、コンピュータシステム２５０のサブプロセッシングユニット２５２の演算処理能力（例えば、データ処理速度）を最良に利用できるように体系化され、互いに近接して格納されることが好ましいと言えば十分である。
【００３０】
ステップ２０６において、オブジェクト１０２の最初の状態に関する画像データが入力される。これは、システムメモリ２５６からプロセッサ２５２のローカルメモリ２５４の１以上に画像データを読み取るステップを伴うものであってもよい。一例として、画像データは、３Ｄ空間１０４にある各オブジェクト１０２の最初の位置データＰ（ｘ，ｙ，ｚ）、最初の速度データＶ（ｘ，ｙ，ｚ）、及び最初の色属性データＬ（ＲＧＢ、α）を含んでもよい。
【００３１】
ステップ２０８において、オブジェクト１０２に適用された対応する最初の力Ｆ（ｘ，ｙ，ｚ）は、３Ｄ空間１０４にあるオブジェクト１０２の最初の位置Ｐ（ｘ，ｙ，ｚ）に規定される。最初の力データは、サブプロセッサ２５２によって採用された演算処理技術に従うように、残りの画像データとグループ化される。例えば、本明細書において以下に記載するように、サブプロセッサ２５２がＳＩＭＤ技術を採用する場合、画像データのある一定のグループ化により、より優れた結果が得られることがある。
【００３２】
ステップ２１０において、サブプロセッサ２５２は、最初の画像データに基づいて、オブジェクトセットの各オブジェクト１０２の最後の画像データを算出する。例えば、力Ｆ（ｘ，ｙ，ｚ）の場において移動中のオブジェクト１０２の最後の位置Ｐ（ｘ，ｙ，ｚ）は、所定のフレームにおいて演算処理される。さらに詳しく言えば、オブジェクト１０２の最後の位置データは、オブジェクト１０２の最初の位置データと、オブジェクト１０２の最初の速度、オブジェクト１０２の力データ、及びオブジェクト１０２の最初の質量の少なくとも１つと、に応じて算出されてもよい。この演算処理は、３Ｄ空間１０４にあるオブジェクト１０２の最後の位置、最後の速度、最後の色、最後の質量などを計算するために、解析モデリングスキームを適用するステップを伴うものであってもよい。演算処理はまた、オブジェクト１０２の１以上が、３Ｄ空間１０４にある他のオブジェクト１０２又は他の障害物と衝突するかどうかを決定するステップを伴うものであってもよい。
【００３３】
マルチプロセッサシステム２５０のサブプロセッサ２５２の対応する１つを用いて、オブジェクトセットの各々の対応する演算処理が実行されることが最も好ましい。実際のところ、所定のサブプロセッサ２５２が、隣接する部分空間１１２にあるオブジェクト１０２を考慮することなく所定の部分空間１１２のすべての動き及び／又は衝突（最後の画像データ）を演算処理することが好ましい。３Ｄ空間にあるすべてのオブジェクト１０２のリアルタイムの動きに関してこのように仮定すると、演算処理及びスループットの高効率化につながる。所定のサブプロセッサ２５２が、所定のオブジェクトセット（所定のフレーム）の最後の画像データの演算処理を完了した場合、このサブプロセッサ２５２は、演算処理用の別のオブジェクトセットを動的に自由に獲得する。
【００３４】
フレームにおける演算処理された動きの結果として、オブジェクト１０２の中には、それらの最初の位置が特定されたバケット１１２の外側に移動するものもある。すなわちオブジェクトには、他のバケット１１２に移動するものがある。さらに、オブジェクト１０２の中には、３Ｄ空間１０４から完全に離れるものがあり、このような場合、さらなるシミュレーションから除外されてもよい。動き及び／又は衝突（最後の画像データ）が、隣接する部分空間１１２にあるオブジェクト１０２を考慮することなく、所定の部分空間１１２に対して計算されるために、演算処理の複雑性が著しく低減される。実際のところ、所定の部分空間内において、別の部分空間１１２から該当する部分空間１１２に入るオブジェクトに関して、何ら考慮する必要がない。従って、別の部分空間１１２から部分空間１１２に入るオブジェクトに関する多くの衝突の可能性を演算処理する必要がない。これにより、演算処理を著しく低減することができる。
【００３５】
ステップ２１２において、すべてのオブジェクト１０２のいくつかは、最後の画像データの演算処理が、１以上のオブジェクト１０２がそれらの最初の部分空間１１２の外側に最後の位置データを有することを示す場合に、１以上の新しいオブジェクトセットに再グループ化される。好ましくは、このような再グループ化により、ステップ２０４を参照しながら上述したものと実質的に同様に、システムメモリ２５６にある画像データが再体系化される。
【００３６】
ステップ２１４において、ビデオディスプレイ（例えば、薄膜トランジスタ（ＴＦＴ）ディスプレイ、プラズマディスプレイ、陰極線管ディスプレイ（ＣＲＴ）、シネマスクリーンなど）上に表示するためのオブジェクトをレンダリングするために、最後の画像データの少なくともいくつかが使用される。これは、オブジェクト１０２の最後の位置データの３Ｄ／２Ｄデータ変換及びポリゴン化を含んでもよい。
【００３７】
好ましくは、ステップ２０８〜２１４に関連する動作は、３Ｄ空間１０４内でのオブジェクト１０２のリアルタイムな動きを十分にシミュレートできる速度でフレームごとに繰り返される。これに関して、現行のフレームの最初の画像データとして先行フレームからの最後の画像データが使用されることを理解されたい。従って、決定ステップ２１６において、方法２００は、すべてのフレームに対して、又は他の形態として、予め決定された時間間隔で最後の画像データがレンダリングされたかを、問い合わせる。ステップ２１６の決定の結果が否定的であれば、プロセスフローは、ステップ２０８にループバックする。ステップ２１６の決定の結果が肯定的であれば、プロセスフローは、プロセスが終了するステップ２１８に進む。
【００３８】
以下に本明細書で説明している１以上の特徴を実行するのに適したマルチプロセッサシステムの、好ましいコンピュータアーキテクチャを説明する。１以上の実施形態によれば、マルチプロセッサシステムは、ゲームシステム、家庭用端末、ＰＣシステム、サーバシステム、及びワークステーションなどのメディアリッチアプリケーションを、スタンドアローン処理、及び／又は分散処理するために動作することができる、シングルチップソリューションとして実装されうる。ゲームシステムや家庭用端末などのいくつかのアプリケーションでは、リアルタイムの演算処理は必須である。例えば、リアルタイムの分散ゲームアプリケーションでは、ユーザにリアルタイムの経験をしていると思わせる程速く、１以上のネットワークイメージの復元、３Ｄコンピュータグラフィック、オーディオ生成、ネットワーク通信、物理的シミュレーション、及び人工知能処理が実行される必要がある。従って、マルチプロセッサシステムの各プロセッサは、短時間で、かつ予測可能時間でタスクを完了する必要がある。
【００３９】
このために、また、本コンピュータアーキテクチャによれば、マルチプロセッシングコンピュータシステムの全プロセッサは、共通の演算モジュール（あるいはセル）から構成される。この共通の演算モジュールは、構造が一貫しており、また好ましくは、同じ命令セットアーキテクチャを採用している。マルチプロセッシングコンピュータシステムは、１以上のクライアント、サーバ、ＰＣ、モバイルコンピュータ、ゲームマシン、ＰＤＡ、セットトップボックス、電気器具、デジタルテレビ、及びコンピュータプロセッサを使用する他のデバイスから形成されうる。
【００４０】
複数のコンピュータシステムもまた、所望に応じてネットワークのメンバーとなりうる。一貫モジュール構造により、マルチプロセッシングコンピュータシステムによるアプリケーション及びデータの効率的な高速処理が可能になる。またネットワークが採用される場合は、ネットワーク上にアプリケーション及びデータの高速送信が可能になる。この構造はまた、大きさや処理能力が様々なネットワークのメンバーの構築を単純化し、また、これらのメンバーが処理するアプリケーションの準備を単純化する。
【００４１】
図４を参照すると、基本的な処理モジュールはプロセッサエレメント（ＰＥ）５００である。ＰＥ５００はＩ／Ｏインタフェース５０２、プロセッシングユニット（ＰＵ）５０４、及び複数のサブプロセッシングユニット５０８、すなわちサブプロセッシングユニット５０８Ａ、サブプロセッシングユニット５０８Ｂ、サブプロセッシングユニット５０８Ｃ、及びサブプロセッシングユニット５０８Ｄを備えている。なお、好適には、ＰＵとしてパワーＰＣ（ＰＰＥ：Power PC Element）を、ＳＰＵとしてシナジスティックプロセッシングエレメント（ＳＰＥ：Synergistic Processing Element）を用いる。ローカル（あるいは内部）ＰＥバス５１２は、データ及びアプリケーションを、ＰＵ５０４、サブプロセッシングユニット５０８、及びメモリインタフェース５１１間に送信する。ローカルＰＥバス５１２は、例えば従来のアーキテクチャを備えることができ、又、パケット−スイッチネットワークとして実装されることができる。パケットスイッチネットワークとして実装される場合は、更なるハードウェアが必要であるが、利用可能な帯域幅が増える。
【００４２】
ＰＥ５００は、デジタル論理回路を実装するよう様々な方法を用いて構成されうる。しかしながら、好ましくは、ＰＥ５００はＳＯＩ基板を用いた集積回路として構成され、あるいは、シリコン基板に相補性金属酸化膜半導体（ＣＭＯＳ：Complementary Metal Oxide Semiconductor）を用いた単一の集積回路とされることも好適な構成である。基板の他の材料には、ガリウムヒ素、ガリウムアルミウムヒ素、及び、様々なドーパントを採用している他の、いわゆる、III−Ｂ化合物を含む。ＰＥ５００はまた、高速単一磁束量子（ＲＳＦＱ：Rapid Single-flux-Quantum）論理回路などの超電導デバイスを用いて実装されうる。
【００４３】
ＰＥ５００は、高帯域のメモリ接続５１６を介して、共有（メイン）メモリ５１４と密接に結合される。なお、メモリ５１４をオンチップ化してもよい。好ましくは、メモリ５１４はダイナミックランダムアクセスメモリ（ＤＲＡＭ：Dynamic Random Access Memory）であるが、スタティックランダムアクセスメモリ（ＳＲＡＭ：Static Random Access Memory）、磁気ランダムアクセスメモリ（ＭＲＡＭ：Magnetic Random Access Memory）、光メモリ、ホログラフィックメモリなどとして、他の方法を用いて実装されてもよい。
【００４４】
ＰＵ５０４とサブプロセッシングユニット５０８は、好ましくは、それぞれダイレクトメモリアクセス（ＤＭＡ）の機能を備えたメモリフローコントローラ（ＭＦＣ：Memory Flow Controller）と結合されており、該コントローラはメモリインタフェース５１１と共に、ＰＥ５００のＤＲＡＭ５１４とサブプロセッシングユニット５０８、ＰＵ５０４間のデータ転送を促進する。ＤＭＡＣ及び／又はメモリインタフェース５１１は、サブプロセッシングユニット５０８及びＰＵ５０４に一体化して、或いは別個に配置されうる。更に、ＤＭＡＣの機能及び／又はメモリインタフェース５１１の機能は、１以上の（好ましくは全ての）サブプロセッシングユニット５０８及びＰＵ５０４と一体にしてもよい。ＤＲＡＭ５１４も同様に、ＰＥ５０４に一体化して、或いは別個に配置されうる。例えばＤＲＡＭ５１４は、実例で示しているように、チップ外に配置しても、あるいは一体化してオンチップ配置としてもよい。
【００４５】
ＰＵ５０４はデータ及びアプリケーションをスタンドアローン処理できる標準プロセッサなどでありうる。動作時、ＰＵ５０４は、好ましくは、サブプロセッシングユニットによるデータ及びアプリケーション処理をスケジューリングし、調整を行う。サブプロセッシングユニット５０８は好ましくは、単一命令複数データ（ＳＩＭＤ：Single Instruction Multiple Data）プロセッサである。ＰＵ５０４の管理下、サブプロセッシングユニット５０８は、並列かつ独立して、これらのデータ及びアプリケーション処理を行う。ＰＵ５０４は好ましくは、ＲＩＳＣ（Reduced Instruction Set Computing）技術を採用しているマイクロプロセッサアーキテクチャであるパワーＰＣ（PowerPC）コアを用いて実装される。ＲＩＳＣは、単純な命令の組合せを用いて、より複雑な命令を実行する。従って、プロセッサのタイミングは、単純で高速な動作に基づくものであり、マイクロプロセッサがより多くの命令を所定のクロック速度で実行できるようにする。
【００４６】
ＰＵ５０４は、サブプロセッシングユニット５０８のうちの、データ及びアプリケーション処理をスケジューリングし調整を行うメインプロセッシングユニットの役割を果たしている１つのサブプロセッシングユニット５０８により実現してもよい。更に、プロセッサエレメント５００内には１以上の実装されたＰＵ５０４が存在しうる。なお、オンチップのＰＵ５０４を複数設けるようにしてもよい。
【００４７】
本モジュール構造によれば、特定のコンピュータシステムにおけるＰＥ５００の数は、そのシステムが要求する処理能力に基づく。例えば、サーバにおけるＰＥ５００の数は４、ワークステーションにおけるＰＥ５００の数は２、ＰＤＡにおけるＰＥ５００の数は１とすることができる。特定のソフトウェアセルの処理に割当てられるＰＥ５００のサブプロセッシングユニット５０８の数は、セル内のプログラムやデータの複雑度や規模により決定される。このように、ＰＥ５００はモジュール構造を有していることから拡張性が高く、搭載するシステムのスケール、パフォーマンスに応じて容易に拡張することができる。
【００４８】
図５は、サブプロセッシングユニット（ＳＰＵ）５０８の好ましい構造及び機能の例示である。ＳＰＵ５０８アーキテクチャは、好ましくは、多目的プロセッサ（平均して高性能を広範なアプリケーションに実現するように設計されているもの）と、特殊目的プロセッサ（高性能を単一のアプリケーションに実現するように設計されているもの）間の間隙を埋める。ＳＰＵ５０８は、ゲームアプリケーション、メディアアプリケーション、ブロードバンドシステムなどに高性能を実現するように、また、リアルタイムアプリケーションのプログラマに高度な制御を提供するように設計される。ＳＰＵ５０８は、グラフィックジオメトリーパイプライン、サーフェースサブディビジョン、高速フーリエ変換、画像処理キーワード、ストリームプロセッシング、ＭＰＥＧのエンコード／デコード、暗号化、復号化、デバイスドライバの拡張、モデリング、ゲーム物理学、コンテンツ制作、音響合成及び処理が可能である。
【００４９】
サブプロセッシングユニット５０８は、ＳＰＵコア５１０Ａ及びメモリフローコントローラ（ＭＦＣ）５１０Ｂの２つの基本機能ユニットを有している。ＳＰＵコア５１０Ａはプログラムの実行、データ操作、などを行い、一方でＭＦＣ５１０ＢはシステムのＳＰＵコア５１０ＡとＤＲＡＭ５１４の間のデータ転送に関連する機能を実行する。
【００５０】
ＳＰＵコア５１０Ａは、ローカルメモリ５５０、命令ユニット（ＩＵ：Instruction Unit）５５２、レジスタ５５４、１以上の浮動小数点実行ステージ５５６、及び１以上の固定小数点実行ステージ５５８を有している。ローカルメモリ５５０は、好ましくは、ＳＲＡＭなどのシングルポートのランダムメモリアクセスを用いて実装される。殆どのプロセッサがキャッシュの導入によりメモリへのレイテンシを小さくする一方で、ＳＰＵコア５１０Ａは、キャッシュより小さいローカルメモリ５５０を実装している。更に、リアルタイムアプリケーション（及び本明細書に述べる他のアプリケーション）のプログラマに、一貫した、予測可能なメモリアクセスレイテンシを提供するために、ＳＰＵ５０８Ａ内のキャッシュメモリアーキテクチャは好ましくない。キャッシュメモリのキャッシュヒット／ミスという特徴のために、数サイクルから数百サイクルの、予測困難なメモリアクセス時間が生じる。そのような予測困難性により、例えばリアルタイムアプリケーションのプログラミングに望ましいアクセス時間の予測可能性が低下する。ＤＭＡ転送をデータの演算処理にオーバーラップさせることで、ローカルメモリＳＲＡＭ５５０においてレイテンシの隠蔽を実現しうる。これにより、リアルタイムアプリケーションのプログラミングが制御しやすくなる。ＤＭＡの転送に関連するレイテンシと命令のオーバーヘッドが、キャッシュミスにサービスしているレイテンシのオーバーヘッドを超過していることから、ＤＭＡの転送サイズが十分に大きく、十分に予測可能な場合（例えば、データが必要とされる前にＤＭＡコマンドが発行される場合）に、このＳＲＡＭのローカルメモリ手法による利点が得られる。
【００５１】
サブプロセッシングユニット５０８のうちの、所定の１つのサブプロセッシングユニット上で実行しているプログラムは、ローカルアドレスを使用している関連のローカルメモリ５５０を参照する。しかしながら、ローカルメモリ５５０のそれぞれの場所はまた、システムのメモリマップ全体内に実アドレス（ＲＡ：Real Address）も割当てられる。これにより、プリビレッジソフトウェア（Privilege Software）はローカルメモリ５５０をプロセスの有効アドレス（ＥＡ：Effective Address）にマッピングする、ローカルメモリ５５０と別のローカルメモリ５５０間のＤＭＡ転送を促進する。ＰＵ５０４はまた、有効アドレスを用いてローカルメモリ５５０に直接アクセスすることができる。好ましい実施形態では、ローカルメモリ５５０は５５６キロバイトのストレージを有し、またレジスタ５５２の容量は１２８×１２８ビットである。
【００５２】
ＳＰＵコア５１０Ａは、好ましくは、論理命令をパイプライン方式で処理するプロセッシングパイプラインを用いて実装される。パイプラインは命令が処理されるいずれの数のステージに分けられうるが、一般にパイプラインは１以上の命令のフェッチ、命令のデコード、命令間の依存性チェック、命令の発行、及び命令の実行ステップを有している。これに関連して、ＩＵ５５２は命令バッファ、命令デコード回路、依存性チェック回路、及び命令発行回路を有する。
【００５３】
命令バッファは、好ましくは、ローカルメモリ５５０と結合され、また、フェッチされる際に一時的に命令を格納するように動作できる、複数のレジスタを備えている。命令バッファは、好ましくは、全ての命令が一つのグループとしてレジスタから出て行く、つまり、実質的に同時に出て行くように動作する。命令バッファはいずれの大きさでもよいが、好ましくは、２あるいは３レジスタよりは大きくないサイズである。
【００５４】
一般に、デコード回路は、命令を分解して、対応する命令の関数を実施する論理的マイクロオペレーションを生成する。例えば、論理的マイクロオペレーションは、算術論理演算、ローカルメモリ５５０へのロード及びストアオペレーション、レジスタソースオペランド、及び／又は即値データオペランドを特定しうる。デコード回路はまた、ターゲットレジスタアドレス、構造リソース、機能ユニット、及び／又はバスなど、命令がどのリソースを使用するかを示しうる。デコード回路はまた、リソースが要求される命令パイプラインステージを示す情報を与えることができる。命令デコード回路は、好ましくは、命令バッファのレジスタ数に等しい数の命令を実質的に同時にデコードするように動作する。
【００５５】
依存性チェック回路は、所定の命令のオペランドがパイプラインの他の命令のオペランドに依存しているかどうかを判断するために試験を行う、デジタル論理回路を含む。その場合、所定の命令はそのような他のオペランドが（例えば、他の命令が実行の完了を許容することにより）アップデートされるまで、実行されない。依存性チェック回路は好ましくは、デコード回路から同時に送られる複数の命令の依存性を判断する。
【００５６】
命令発行回路は、浮動小数点実行ステージ５５６及び／又は固定小数点実行ステージ５５８へ命令を発行するように動作することができる。
【００５７】
レジスタ５５４は、好ましくは、１２８エントリのレジスタファイルなどの、相対的に大きな統一レジスタファイルとして実装される。これにより、レジスタが足りなくなる状態を回避するよう、レジスタリネーミングを必要としない、深くパイプライン化された高周波数の実装品が可能になる。一般に、ハードウェアリネーミングには、処理システムのかなりの割合の領域と電力を消費する。その結果、ソフトウェアのループ展開、又は他のインターリーブ技術によりレイテンシがカバーされると、最新のオペレーションが実現されうる。
【００５８】
ＳＰＵコア５１０Ａは、好ましくはスーパースカラアーキテクチャであり、これにより１以上の命令がクロックサイクル毎に発行される。ＳＰＵコア５１０Ａは、好ましくは、命令バッファから送られる同時命令の数、例えば２〜３命令（各クロックサイクル毎に２命令あるいは３命令が発行されることを意味する）に対応する程度まで、スーパースカラとして動作する。所望の処理能力に応じて、多数の、あるいは少数の浮動小数点実行ステージ５５６と、固定小数点実行ステージ５５８が採用される。好ましい実施形態では、浮動小数点実行ステージ５５６は１秒あたり３２０億の浮動小数点演算速度で演算し（３２ＧＦＬＯＰＳ）、また、固定小数点実行ステージ５５８は１秒あたり３２０億回（３２ＧＯＰＳ）の演算速度となっている。
【００５９】
ＭＦＣ５１０Ｂは、好ましくは、バスインタフェースユニット（ＢＩＵ：Bus Interface Unit）５６４、メモリ管理ユニット（ＭＭＵ：Memory Management Unit）５６２、及びダイレクトメモリアクセスコントローラ（ＤＭＡＣ：Direct Memory Access Controller）５６０を備えている。ＤＭＡＣ５６０は例外として、ＭＦＣ５１０Ｂは、好ましくは低電力化設計とするため、ＳＰＵコア５１０Ａやバス５１２と比べて半分の周波数で（半分の速度で）動作する。ＭＦＣ５１０Ｂはバス５１２からＳＰＵ５０８に入力されるデータや命令を処理するように動作することができ、ＤＭＡＣに対しアドレス変換を行い、また、データコヒーレンシに対しスヌープオペレーションを提供する。ＢＩＵ５６４は、バス５１２とＭＭＵ５６２及びＤＭＡＣ５６０との間にインタフェースを提供する。従って、ＳＰＵ５０８（ＳＰＵコア５１０Ａ及びＭＦＣ５１０Ｂを含む）及びＤＭＡＣ５６０は、バス５１２と物理的に及び／又は論理的に結合されている。
【００６０】
ＭＭＵ５６２は、好ましくは、メモリアクセスのために、実アドレスに有効アドレスを変換するように動作することができる。例えば、ＭＭＵ５６２は、有効アドレスの上位ビットを実アドレスビットに変換しうる。しかしながら下位のアドレスビットは、好ましくは変換不能であり、また、実アドレスの形成及びメモリへのアクセスリクエストに使用する場合には、ともに論理的及び物理的なものと考えられる。１以上の実施形態では、ＭＭＵ５６２は、６４ビットのメモリ管理モデルに基づいて実装され、また、４Ｋ−、６４Ｋ−、１Ｍ−、及び１６Ｍ−バイトのページサイズを有する２６４バイトの有効アドレススペースと、２５６ＭＢのセグメントサイズを提供しうる。ＭＭＵ５６２は、好ましくはＤＭＡコマンドに対し、２６５バイトまでの仮想メモリ、２４２バイト（４テラバイト）までの物理メモリをサポートするように動作することができる。ＭＭＵ５６２のハードウェアは、８−エントリでフルアソシエイティブのＳＬＢと、２５６−エントリと、４ウエイセットアソシエイティブのＴＬＢと、ＴＬＢに対してハードウェアＴＬＢのミスハンドリングに使用される４×４リプレースメント管理テーブル（ＲＭＴ：Replacement Management Table）と、を含む。
【００６１】
ＤＭＡＣ５６０は、好ましくは、ＳＰＵコア５１０Ａや、ＰＵ５０４、及び／又は他のＳＰＵなどの１以上の他のデバイスからのＤＭＡコマンドを管理するように動作することができる。ＤＭＡコマンドには３つのカテゴリが存在し、それらは、プットコマンド、ゲットコマンド、及びストレージ制御コマンドである。プットコマンドは、ローカルメモリ５５０から共有メモリ５１４へデータを移動させるよう動作する。ゲットコマンドは、共有メモリ５１４からローカルメモリ５５０へデータを移動させるよう動作する。また、ストレージ制御コマンドには、ＳＬＩコマンドと同期化コマンドが含まれる。この同期化コマンドは、アトミックコマンド（atomic command）、信号送信コマンド、及び専用バリアコマンドを有しうる。ＤＭＡコマンドに応答して、ＭＭＵ５６２は有効アドレスを実アドレスに変換し、実アドレスはＢＩＵ５６４へ送られる。
【００６２】
ＳＰＵコア５１０Ａは、好ましくは、ＤＭＡＣ５６０内のインタフェースと通信（ＤＭＡコマンド、ステータスなどを送る）するために、チャネルインタフェース及びデータインタフェースを使用する。ＳＰＵコア５１０Ａはチャネルインタフェースを介して、ＤＭＡＣ５６０のＤＭＡキューへＤＭＡコマンドを送る。ＤＭＡコマンドがＤＭＡキューに存在すると、そのコマンドはＤＭＡＣ５６０内の発行及び完了論理により処理される。ＤＭＡコマンドに対する全てのバストランザクションが終了すると、完了信号がチャネルインタフェースを越えて、ＳＰＵコア５１０Ａへ送られる。
【００６３】
図６はＰＵ５０４の好ましい構造及び機能を例示している。ＰＵ５０４は、ＰＵコア５０４Ａとメモリフローコントローラ（ＭＦＣ）５０４Ｂの２つの基本的な機能ユニットを有している。ＰＵコア５０４Ａは、プログラム実行、データ操作、マルチプロセッサマネージメント機能などを実施し、一方でＭＦＣ５０４Ｂはシステム１００のＰＵコア５０４Ａとメモリスペース間のデータ転送に関連する機能を実行する。
【００６４】
ＰＵコア５０４Ａは、Ｌ１キャッシュ５７０、命令ユニット５７２、レジスタ５７４、１以上の浮動小数点実行ステージ５７６、及び１以上の固定小数点実行ステージ５７８を有することができる。Ｌ１キャッシュ５７０は、共有メモリ１０６、プロセッサ１０２、又はＭＦＣ５０４Ｂを介してメモリスペースの他の部分から受信したデータに対するデータキャッシングの機能を提供する。ＰＵコア５０４Ａが、好ましくはスーパーパイプラインとして実装されるので、命令ユニット５７２は、好ましくはフェッチ、デコード、依存性チェック、発行などを含む、多くのステージを備えた命令パイプラインとして実装される。またＰＵコア５０４は、好ましくはスーパースカラ構成であり、一方で１以上の命令がクロックサイクル毎に命令ユニット５７２から発行される。高度な処理（演算）能力を実現するために、浮動小数点実行ステージ５７６と固定小数点実行ステージ５７８は、パイプライン構成で複数のステージを有する。要求される処理能力に応じて、多数の又は少数の浮動小数点実行ステージ５７６と固定小数点実行ステージ５７８が採用されうる。
【００６５】
ＭＦＣ５０４Ｂは、バスインタフェースユニット（ＢＩＵ）５８０、Ｌ２キャッシュメモリ５８２、キャッシュ不可能なユニット（ＮＣＵ：Non-Cachable Unit）５８４、コアインタフェースユニット（ＣＩＵ：Core Interface Unit）５８６、及びメモリ管理ユニット（ＭＭＵ）５８８を備えている。殆どのＭＦＣ５０４Ｂは、低電力化設計とするために、ＰＵコア５０４Ａ及びバス１０８と比べて半分の周波数（半分の速度）で動作する。
【００６６】
ＢＩＵ５８０は、バス１０８とＬ２キャッシュ５８２とＮＣＵ５８４論理ブロックとの間にインタフェースを提供する。このためにＢＩＵ５８０は、バス１０８上で、十分にコヒーレントなメモリオペレーションを実施するために、マスタデバイスとして、また同様にスレーブデバイスとして機能する。マスタデバイスとして、ＢＩＵ５８０はＬ２キャッシュ５８２とＮＣＵ５８４のために機能するため、バス１０８へロード／ストアリクエストを供給する。ＢＩＵ５８０はまた、バス１０８へ送信されうるコマンドの合計数を制限するコマンドに対し、フロー制御機構を実装しうる。バス１０８のデータオペレーションは、８ビート要するように設計され、そのために、ＢＩＵ５８０は、好ましくは１２８バイトキャッシュラインを有するように設計され、また、コヒーレンシーと同期化の粒度単位は１２８ＫＢである。
【００６７】
Ｌ２キャッシュメモリ５８２（及びサポートハードウェア論理回路）は、好ましくは、５１２ＫＢのデータをキャッシュするように設計されている。例えば、Ｌ２キャッシュ５８２は、キャッシュ可能なロード／ストア、データプリフェッチ、命令フェッチ、命令プリフェッチ、キャッシュオペレーション、及びバリアオペレーションを処理しうる。Ｌ２キャッシュ５８２は、好ましくは８ウエイのセットアソシエイティブシステムである。Ｌ２キャッシュ５８２は、６つのキャストアウトキュー（６つのＲＣマシンなど）と一致する６つのリロードキューと、８つ（６４バイト幅）のストアキューを備えうる。Ｌ２キャッシュ５８２は、Ｌ１キャッシュ５７０において、一部、あるいは全てのデータのコピーをバックアップするように動作しうる。この点は、処理ノードがホットスワップである場合に、状態を回復するのに便利である。このような構成により、Ｌ１キャッシュ５７０が少ないポート数でより速く動作することができ、また、より速くキャッシュツーキャッシュ転送ができる（リクエストがＬ２キャッシュ５８２でストップしうるため）。この構成はまた、キャッシュコヒーレンシー管理をＬ２キャッシュメモリ５８２へ送るための機構も提供しうる。
【００６８】
ＮＣＵ５８４は、ＣＩＵ５８６、Ｌ２キャッシュメモリ５８２、及びＢＩＵ５８０と連動しており、通常は、ＰＵコア５０４Ａとメモリシステム間のキャッシュ不可能なオペレーションに対して、キューイング／バッファリング回路として機能する。ＮＣＵ５８４は、好ましくはキャッシュ抑制ロード／ストア、バリアオペレーション、及びキャッシュコヒーレンシーオペレーションなどの、Ｌ２キャッシュ５８２により処理されないＰＵコア５０４Ａとのすべての通信を処理する。ＮＣＵ５８４は、好ましくは上述の低電力化目的を満たすように、半分の速度で動作されうる。
【００６９】
ＣＩＵ５８６は、ＭＦＣ５０４ＢとＰＵコア５０４Ａの境界に配置され、実行ステージ５７６、５７８、命令ユニット５７２、及びＭＭＵユニット５８８からのリクエストに対し、また、Ｌ２キャッシュ５８２及びＮＣＵ５８４へのリクエストに対し、ルーティング、アービトレーション、及びフロー制御ポイントして機能する。ＰＵコア５０４Ａ及びＭＭＵ５８８は、好ましくはフルスピードで実行され、一方でＬ２キャッシュ５８２及びＮＣＵ５８４は２：１の速度比で動作することができる。従って、周波数の境界がＣＩＵ５８６に存在し、その機能の一つは、２つの周波数ドメイン間でリクエストの送信及びデータのリロードを行いながら、周波数の差を適切に処理することである。
【００７０】
ＣＩＵ５８６は、ロードユニット、ストアユニット、及びリロードユニットの３つの機能ブロックを有している。更に、データプリフェッチ機能がＣＩＵ５８６により実施され、また好ましくは、ロードユニットの機能部である。ＣＩＵ５８６は、好ましくは、
（i）ＰＵコア５０４ＡとＭＭＵ５８８からのロード及びストアリクエストを受ける、
（ii）フルスピードのクロック周波数をハーフスピードに変換する（２：１のクロック周波数変換）、
（iii）キャッシュ可能なリクエストをＬ２キャッシュ５８２へ送り、キャッシュ不可能なリクエストをＮＣＵ５８４へ送る、
（iv）Ｌ２キャッシュ５８２に対するリクエストとＮＣＵ５８４に対するリクエストを公正に調停する、
（v）ターゲットウインドウでリクエストが受信されてオーバーフローが回避されるように、Ｌ２キャッシュ５８２とＮＣＵ５８４に対する転送のフロー制御を提供する、
（vi）ロードリターンデータを受信し、そのデータを実行ステージ５７６、５７８、命令ユニット５７２、又はＭＭＵ５８８へ送る、
（vii）スヌープリクエストを実行ステージ５７６、５７８、命令ユニット５７２、又はＭＭＵ５８８へ送る、
（viii）ロードリターンデータとスヌープトラフィックを、ハーフスピードからフルスピードへ変換する、
ように動作可能である。
【００７１】
ＭＭＵ５８８は、好ましくはＰＵコア５４０Ａに対して、第２レベルのアドレス変換機能などによりアドレス変換を行う。第１レベルの変換は、好ましくは、ＭＭＵ５８８よりも小型で高速でありうる、別々の命令及びデータＥＲＡＴ（Effective to Real Address Translation）アレイにより、ＰＵコア５０４Ａにおいて提供されうる。
【００７２】
好ましい実施形態では、ＰＵ５０４は、６４ビットの実装品で、４−６ＧＨｚ、１０Ｆ０４で動作する。レジスタは、好ましくは６４ビット長（１以上の特殊用途のレジスタは小型でありうるが）であり、また、有効アドレスは６４ビット長である。命令ユニット５７２、レジスタ５７４、及び実行ステージ５７６と５７８は、好ましくは、（ＲＩＳＣ）演算技術を実現するために、PowerPC技術を用いて実装される。
【００７３】
本コンピュータシステムのモジュール構造に関する更なる詳細は、米国特許第６，５２６，４９１号に解説されており、該特許は参照として本願に組込まれる。
【００７４】
上述したように、図４のＰＥ５００は、図２を参照しながら、詳細に上述したような方法２００を実行することができる。ＤＭＡＣ５０６のアクセス待ち時間を隠し、このようにして、反復的なメモリ動作中（例えば、システムメモリ５１４又はローカルメモリ５５０から／へのデータの読み取り及び書き込み）のデータ処理速度を上げるために、サブプロセッシングユニット５０８は、公知の「ダブルバッファ」技術を用いてもよいことに留意されたい。
【００７５】
以下、本発明の１以上の実施形態による図３及び／又は図４のコンピュータシステムのシステムメモリにおいて、画像データを体系化する異なる方法を示す図７〜図９を参照する。明確かつ簡潔に示すために、図７〜図９は、図４のＰＥ５００及びシステムメモリ５１４を参照しながら記述する。特に、プロセッサ５０８は、システムメモリ５１４において各々が隣接領域にあるブロックをなしたシステムメモリ５１４から／へデータの読み取り／書き込みを行うように動作可能である。この技術は、米国特許第６，５２６，４９１号に詳述されている。
【００７６】
図７に示すように、メモリ５１４は、多数の領域４０４ｉを含んでもよく、各領域には１以上の隣接するブロックがある。本発明のこの実施形態において、すべての力データＦ（ｘ，ｙ，ｚ）が、メモリの１以上の隣接するブロックを含む第１の領域４０４Ａに格納される。すべての位置データＰ（ｘ，ｙ，ｚ）が、メモリの１以上の隣接するブロックを含む第２の領域４０４Ｂに格納される。すべての速度データＶ（ｘ，ｙ，ｚ）が、メモリの１以上の隣接するブロックを含む第３の領域４０４Ｃに格納される。すべての色データＬが、メモリの１以上の隣接するブロックを含む第４の領域４０４Ｄに格納される。各オブジェクト１０２の対応する画像データは、例えば、参照番号４０６ｉで示すように、領域４０４ｉを横断することによって位置が特定されてもよい。上述したように、所定のオブジェクトセット内又は部分空間１１２内のオブジェクト１０２の画像データを、メモリ５１４内の互いに近い位置に置くことが望ましい。図７に示すように、このような近接は、２以上の領域４０４にオブジェクトセットの画像データを配置することによって実現することができる。
【００７７】
このような構成の場合、メモリ５１４は、領域４０４ｉの各々における未使用のメモリ位置の数を最小限に抑え及び／又は無くすために、効率的に使用される。さらに、プロセッサ５０８が画像データを取得できる速度は、データが異なるブロックに配置されていても、オブジェクト１０２及びオブジェクトセットごとに画像データが並んでいるため、比較的高速である。しかしながら、これらの利点を実現するために、メモリ５１４においてデータの体系化を実行するアプリケーションプログラムは、オブジェクト１０２が部分空間１１２内へ、又はそこから移動するとき、すべてのメモリ領域４０４ｉにおいて画像データを再体系化しなければならない。
【００７８】
図８に示すように、メモリ５１４は、多数の領域４０８を含んでもよく、各領域は、１以上の隣接するブロックを含んでもよい。本発明のこの実施形態において、所定のオブジェクト１０２のすべての画像データ（例えば、Ｆ、Ｐ、Ｖ、Ｌ）は、システムメモリ５１４の同じ領域又はブロックに格納される。所定のオブジェクトのすべての画像データは、参照番号４１０ｉによって示すように連続的に格納される。再度言うが、所定のオブジェクトセット内又は部分空間１１２内のオブジェクト１０２の画像データを、メモリ５１４の互いに近い位置に置くことが望ましい。図８に示すように、このような近接は、メモリ５１４の同じ領域４０４にオブジェクトセットの画像データを配置することによって実現することができる。
【００７９】
この構成の場合、適切な配置を確保するために、領域４０８の各々に多数の未使用メモリ位置が必要となるため、メモリ５１４は、図７の構成と比較するとあまり効率的に使用されないと考えられる。ＳＩＭＤプロセッサ５０８が採用される場合のようなマルチプロセッシング環境によっては、データタイプ（例えば、Ｆｘ、Ｆｙ、Ｆｚ、Ｐｘ、Ｐｙ、Ｐｚ、Ｖｘ、Ｖｙ、Ｖｚなど）が、単一の命令を用いて対応するデータセットが動作されうるようにベクトル化されなければならないため、プロセッサ５０８が画像データを取得及び処理するための速度は遅くなる。メモリ５１４におけるデータの体系化を実行するアプリケーションプログラムは、所定のオブジェクト１０２のすべての画像データが同じブロックに見付けられるため、すべてのメモリ領域４０８にある画像データを比較的容易に認識することができる。
【００８０】
図９に示すように、メモリ５１４は、多数の領域４１２を含んでもよく、各領域４１２は、１以上の隣接するブロックを含んでもよい。本発明のこの実施形態において、所定のオブジェクト１０２のすべての画像データ（例えば、Ｆ、Ｐ、Ｖ、Ｌ）は、システムメモリ５１４の同じ領域４１２又はブロックに格納される。画像データは、好ましくは、ブロックにＮ個のオブジェクトのデータを連続して格納することによってベクトル化される。例えば、Ｎが“４”であれば、力データの４つのＦｘ成分、力データの４つのＦｙ成分、及び力データの４つのＦｚ成分が、連続して格納される。同様に、位置データＰ、速度データＶ、色データＬなどに対して、同様の連続的なグループ化が施される。従って、所定のオブジェクト１０２の画像データは、参照番号４１４ｉによって示すように、メモリブロック内にある程度まで分散される。有益には、この構成により、ＳＩＭＤプロセッサ５０８が採用される場合に、データの処理速度が上がる。これは、データタイプ（例えば、Ｆｘ、Ｆｙ、Ｆｚ、Ｐｘ、Ｐｙ、Ｐｚ、Ｖｘ、Ｖｙ、Ｖｚなど）がメモリ５１４内ですでにベクトル化され、単一のＳＩＭＤ命令を用いて動作されてもよいためである。
【００８１】
しかしながら、この構成の場合、適切な配置及びベクトル化を確保するために、領域４１２の各々に多数の未使用メモリ位置が必要となるため、メモリ５１４は、図７の構成と比較すると、あまり効率的に使用されないと考えられる。メモリ５１４におけるデータの体系化を実行するアプリケーションプログラムは、オブジェクト１０２が部分空間１１２内へ又はそこから移動する場合に、すべてのメモリ領域４１２において画像データを認識するために、複雑化する可能性がある。
【００８２】
以下、各フレーム中、図４のプロセッサＳＰＵ１、ＳＰＵ２、ＳＰＵ３、及びＳＰＵ４（５０８Ａ〜Ｄ）などのプロセッサにおいて、所定の部分空間１１２の画像データの処理方法を示すタイミング図７００である図１０を参照する。オブジェクト１０２の所定の部分空間１１２の特定のＳＰＵ５０８への割り当ては、好ましくは、ＳＰＵ５０８が、所定の部分空間１１２のオブジェクトのすべてを処理するために利用可能であるかに基づくことに留意されたい。さらに、この割り当ては、ＰＵ５０４によって管理されてもよく、また、ＳＰＵ５０８そのものによって管理されてもよい。
【００８３】
時刻Ｔ１において、すべてのＳＰＵ５０８は、オブジェクトセットを処理するために利用可能であると仮定され、従って、各ＳＰＵ５０８は、所定の部分空間１１２の画像データを取得する。例えば、ＳＰＵ１〜ＳＰＵ４は、部分空間１１２１〜１１２４のそれぞれの画像データを取得する。所定のオブジェクトセットの画像データを処理するために所定のＳＰＵによって必要とされる時間は、一般的に、当該部分空間１１２内のオブジェクト１０２の数に比例する。従って、ＳＰＵ１〜ＳＰＵ４の各々は、異なる時間でこのような処理を完了してもよい。極端な場合では、所定の部分空間１１２がオブジェクト１０２を含まない場合があってもよく、従って、少なくとも所定の時間間隔に対して、迅速に処理され及び／又は完全に無視されてもよい。
【００８４】
ＳＰＵ３が、時刻Ｔ２付近で部分空間１１２３のオブジェクト１０２の計算を完了すると、ＳＰＵ３は、部分空間１１２５などの別の部分空間の画像データを取得する。同様に、時刻Ｔ３付近で、ＳＰＵ１は、部分空間１１２１の処理を完了し、部分空間１１２６のオブジェクト１０２の画像データを取得して、このようなデータの処理を開始してもよい。時刻Ｔ４付近で、ＳＰＵ４は、部分空間１１２４の処理を完了し、部分空間１１２７のオブジェクト１０２の画像データを取得して、該当するデータの処理を開始してもよい。最後に時刻Ｔ５付近で、ＳＰＵ２は、部分空間１１２２の処理を完了し、部分空間１１２８のオブジェクト１０２の画像データを取得して、該当するデータの処理を開始してもよい。このプロセスは、３Ｄ空間１０４のオブジェクト１０２のすべてが所定のフレーム内で、例えば、時刻ＴＥＮＤ内に処理される。
【００８５】
本発明の少なくとも１つのさらなる態様によれば、上述した方法及び装置は、図面に示すような適切なハードウェアを利用して達成されてもよい。このようなハードウェアは、標準的なデジタル回路などの任意の既知の技術、ソフトウェア及び／又はファームウェアプログラムを実行するのに動作可能な任意の既知のプロセッサ、プログラム可能な読み取り専用メモリ（ＰＲＯＭ）、プログラム可能なアレイ論理デバイス（ＰＡＬ）などの１以上のプログラム可能なディジタルデバイス又はシステムなどを利用して実装されてもよい。さらに、図面に示す装置は、ある一定の機能ブロックに区分けされて示されているが、このようなブロックは、別々の回路によって実装されてもよく、及び／又は１以上の機能ユニットに組み合わせられてもよい。さらに、本発明の様々な態様は、持ち運びや配送に適した１つ又は複数の格納媒体（フレキシブルディスク、メモリチップなど）に格納されてもよいソフトウェア及び／又はファームウェアプログラムによって実装されてもよい。
【００８６】
本明細書において、具体的な実施形態を用いて本発明を記載したが、これらの実施形態は本発明の原理及び用途の例を示すものに過ぎないことを理解されたい。このため、添付の請求の範囲に記載した本発明の趣旨及び範囲から逸脱することなく、これら例示的な実施形態を種々に変更し、上記以外の構成を考案し得ることが理解されたい。
【図面の簡単な説明】
【００８７】
【図１】本発明の１以上の実施形態による、オブジェクトの動きをシミュレートするために使用されるコンピュータモデルを例示した説明図。
【図２】本発明の１以上の実施形態による、図１のオブジェクトを操作するためのプロセスステップを例示した流れ図。
【図３】図２のプロセスステップを実行可能な２以上のサブプロセッサを有するマルチプロセッシングシステムの構造を例示したブロック図。
【図４】本発明の１以上の態様による、ＳＩＭＤ技術を採用した別のコンピュータアーキテクチャを例示したブロック図。
【図５】本発明の１以上のさらなる実施形態による、図４のシステムの一般的なサブプロセッシングユニット（ＳＰＵ）の構造を例示したブロック図。
【図６】本発明の１以上のさらなる実施形態による、図４のシステムのプロセッシングユニット（ＰＵ）の構造を例示したブロック図。
【図７】本発明の１以上の実施形態による、図３及び／又は図４のコンピュータシステムのシステムメモリにおいて画像データが体系化される方法を例示した説明図。
【図８】本発明の１以上のさらなる実施形態による、図３及び／又は図４のコンピュータシステムのシステムメモリにおいて画像データが体系化される方法に関する別のアプローチを例示した説明図。
【図９】本発明の１以上のさらなる実施形態による、図３及び／又は図４のコンピュータシステムのシステムメモリにおいて画像データが体系化される方法に関するさらなる別のアプローチを例示した説明図。
【図１０】本発明の１以上のさらなる実施形態による、図３及び／又は図４のコンピュータシステムを使用した画像データの並列処理を例示したタイミング図。
【符号の説明】
【００８８】
１０２  オブジェクト
１０４  ３Ｄ空間
１１２  部分空間
２５０Ａ  マルチプロセッサシステム
２５２Ａ〜Ｄ  プロセッサ
２５４Ａ〜Ｄ  ローカルメモリ
２５６  システムメモリ
５００  プロセッサエレメント
５０２  Ｉ／Ｏインタフェース
５０４  プロセッシングユニット
５０８Ａ〜５０８Ｄ  サブプロセッシングユニット
５１０Ａ  ＳＰＵコア
５１０Ｂ  メモリフローコントローラ
５１１  メモリインタフェース
５１４  共有メモリ
５５０  ローカルメモリ
５５２、５７２  命令ユニット
５５４、５７４  レジスタ
５５６、５７６  浮動小数点実行ステージ
５５８、５７８  固定小数点実行ステージ
５６０  ダイレクトメモリアクセスコントローラ
５６２、５８８  メモリ管理ユニット
５６４、５８０  バスインタフェースユニット
５７０  Ｌ１キャッシュ
５８２  Ｌ２キャッシュ
５８４  ＮＣＵ
５８６  ＣＩＵ
【図１】
2006221639.tif 000003
【図２】
2006221639.tif 000004
【図３】
2006221639.tif 000005
【図４】
2006221639.tif 000006
【図５】
2006221639.tif 000007
【図６】
2006221639.tif 000008
【図７】
2006221639.tif 000009
【図８】
2006221639.tif 000010
【図９】
2006221639.tif 000011
【図１０】
2006221639.tif 000012