JP2004118713A - 画像処理装置 - Google Patents
画像処理装置 Download PDFInfo
- Publication number
- JP2004118713A JP2004118713A JP2002283831A JP2002283831A JP2004118713A JP 2004118713 A JP2004118713 A JP 2004118713A JP 2002283831 A JP2002283831 A JP 2002283831A JP 2002283831 A JP2002283831 A JP 2002283831A JP 2004118713 A JP2004118713 A JP 2004118713A
- Authority
- JP
- Japan
- Prior art keywords
- data
- unit
- information
- register
- control information
- 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.)
- Pending
Links
Images
Landscapes
- Image Processing (AREA)
- Microcomputers (AREA)
- Image Generation (AREA)
Abstract
【課題】大量の演算器を効率よく利用することが可能で、アルゴリズムの自由度が高く、柔軟性が高く、しかも回路規模の増大、コスト増を招くことなく演算処理を高速に実現できる画像処理装置を提供する。
【解決手段】制御情報を受けて所望の演算器の論理接続と演算内容、およびクロスバー回路を電気的接続を変更することが可能な制御回路301を有し、制御回路301は、現在の制御情報(現制御情報)と、次に行うべき制御に関する情報(次制御情報)の2つを保持し、演算データは、当該演算データが演算に使用する最終データであることが識別可能な制御信号と同期して送られ、制御回路は、最終データであることが識別された場合、現在実行中の演算が完了すると、現制御情報を次制御情報で書き換える。
【選択図】 図14
【解決手段】制御情報を受けて所望の演算器の論理接続と演算内容、およびクロスバー回路を電気的接続を変更することが可能な制御回路301を有し、制御回路301は、現在の制御情報(現制御情報)と、次に行うべき制御に関する情報(次制御情報)の2つを保持し、演算データは、当該演算データが演算に使用する最終データであることが識別可能な制御信号と同期して送られ、制御回路は、最終データであることが識別された場合、現在実行中の演算が完了すると、現制御情報を次制御情報で書き換える。
【選択図】 図14
Description
【0001】
【発明の属する技術分野】
本発明は、複数の処理データを共有して並列処理を行う画像処理装置に関するものである。
【0002】
【従来の技術】
昨今のコンピュータシステムにおける演算速度の向上や描画機能の強化とも相俟って、コンピュータ資源を用いて図形や画像の作成や処理を行う「コンピュータ・グラフィックス(CG)」技術が盛んに研究・開発され、さらに実用化されている。
【0003】
たとえば、3次元グラフィックスは、3次元オブジェクトが所定の光源によって照らされたときの光学現象を数学モデルで表現して、このモデルに基づいてオブジェクト表面に陰影や濃淡を付けたり、さらには模様を貼り付けたりして、よりリアルで3次元的な2次元高精細画像を生成するものである。
このようなコンピュータ・グラフィックスは、科学、工学、製造などの開発分野でのCAD/CAM、その他の各種応用分野においてますます盛んに利用されるようになってきている。
【0004】
3次元グラフィックスは、一般には、フロントエンドとして位置づけられる「ジオメトリ・サブシステム」と、バックエンドとして位置づけられる「ラスタ・サブシステム」とにより構成される。
【0005】
ジオメトリ・サブシステムとは、ディスプレイ・スクリーン上に表示する3次元オブジェクトの位置や姿勢などの幾何学的な演算処理を行う過程のことである。
ジオメトリ・サブシステムでは、一般にオブジェクトは多数のポリゴンの集合体として扱われ、ポリゴン単位で、「座標変換」、「クリッピング」、「光源計算」などの幾何学的な演算処理が行われる。
【0006】
一方、ラスタ・サブシステムは、オブジェクトを構成する各ピクセル(pixel)を塗りつぶす過程のことである。
ラスタライズ処理は、たとえばポリゴンの頂点毎に求められた画像パラメータを基にして、ポリゴン内部に含まれるすべてのピクセルの画像パラメータを補間することによって実現される。
ここで言う画像パラメータには、いわゆるRGB形式などで表される色(描画色)データ、奥行き方向の距離を表すz値などがある。
また、最近の高精細な3次元グラフィクス処理では、遠近感を醸し出すためのf(fog:霧)や、物体表面の素材感や模様を表現してリアリティを与えるテクスチャ(texture)なども、画像パラメータの1つとして含まれている。
【0007】
ここで、ポリゴンの頂点情報からポリゴン内部のピクセルを発生する処理では、よくDDA(Digital Differential Analyzer)と呼ばれる線形補間手法を用いて実行される。
DDAプロセスでは、頂点情報からポリゴンの辺方向へのデータの傾きを求め、この傾きを用いて辺上のデータを算出した後、続いてラスタ走査方向(X方向)の傾きを算出し、この傾きから求めたパラメータの変化分を走査の開始点のパラメータ値に加えていくことで、内部のピクセルを発生していく。
【0008】
従来の3次元グラフィックス用LSIでは、テクスチャフィルタ用の演算機構を有し、2ピクセル×2ピクセル程度の小領域に対してフィルタリング処理を行うことが可能である。
【0009】
【発明が解決しようとする課題】
ところで、従来の画像処理処理では、たとえば2ピクセル×2ピクセルを超える大カーネルのフィルタリング処理を行う場合、マルチパスレンダリング技法を応用するなどして実現され得るが、その場合の処理能力は低い。
また、従来のテクスチャ演算機構を流用する画像処理では、1処理毎に画像データをメモリから読み出す必要があることから、以下に示すような問題が発生する。
すなわち、処理能力を上げようとすると、演算機構とメモリ間のバンド幅を上げるために、大規模なクロスバー状の接続回路網を必要とし、回路規模が大幅に増大する。
また、毎サイクルデータをメモリから読み出すために、メモリとしてDRAM等を使用すると、読み出しアクセスが集中した場合にページブレイクが多発し処理能力が低下する。
【0010】
今後、MPEG/JPEGに代表されるような画像処理や、被写界深度の効果等をもたせたよりリアルな3次元グラフィックス描画を行うためには大規模なフィルタリング処理等、2ピクセル×2ピクセルを超えるカーネルサイズでの画像処理の重要度が増すと予想され、それらの処理を効率良く実行する必要が生じてくる。
【0011】
また、ピクセルレベルでの並列処理の場合、粒度が細かい分、並列処理の効率が良いという利点があり、実際のフィルタリングを含む処理としては図1に示すような手順で行われる。
【0012】
すなわち、DDAパラメータ、たとえばラスタライゼーション(Rasterization)に必要な各種データ(Z、テクスチャ座標、カラーなど)の傾き等のDDAパラメータを算出する(ST1)。
次に、メモリからテクスチャデータを読み出し(ST2)、サブワード再配置処理を行った後(ST3)、クロスバー回路により複数の演算器を含む処理ユニットにグローバル分配する(ST4)。
次に、テクスチャフィルタリング(Texture Filtering)を行う(ST5)。この場合、処理ユニット(演算器)は、読み出されたテクスチャデータと、(u,v)アドレスは算出時に得た小数部を使って4近傍補間などのフィルタリング処理を行う。
次に、ピクセルレベルの処理(Per−Pixel Operation)、具体的には、フィルタリング後のテクスチャデータと、ラスタライズ後の各種データを用いて、ピクセル単位の演算を行う(ST5)。
そして、ピクセルレベルの処理における各種テストをパスしたピクセルデータを、複数のメモリモジュール上のフレームバッファおよびZバッファに描画する(ST6)。
【0013】
ところで、上述した従来の画像処理装置は、通常の画像処理ではなくグラフィックス処理に特化した専用のプロセッサである。
従来、画像処理専用プロセッサとグラフィックス処理専用プロセッサは知られているが、画像処理とグラフィックス処理の機能を合わせ持つ装置を実現する場合には、単純に画像処理専用プロセッサとグラフィックス処理専用プロセッサの各機能ブロックを用いて一つの画像処理装置として構成することが考えられる。しかしながら、単純に両プロセッサを組み合わせただけでは、回路規模が増大し、コスト増を招く等の不利益がある。
【0014】
また、画像処理やグラフィックス処理に特化したプロセッサとしては、たとえばVLIW型メディアプロセッサ(Media Processor )やDSP、あるいはハードワイヤードロジック(Hard−wired Logic)による専用プロセッサが知られている。
【0015】
VLIW型メディアプロセッサやDSPは、命令レベルでの並列化により複数の演算器を効率よく使用することにより処理能力の向上を図るアプローチをとっている。このアプローチは、細かい粒度での分岐制御が可能で、複雑な処理シーケンスを持つプログラムにも柔軟に対応できる。
一方、命令レベルの並列化では、並列度に限界があり、大量の演算器を効率よく利用することには向いていない。
【0016】
ハードワイヤードロジックによる専用プロセッサの代表は、従来型の3次元レンダリングプロセッサ(3D Rendering Processor)である。従来型の3Dレンダリングプロセッサは、処理レーテンシーが問題にならない(Latency Tolerant)点を活かして、固定アルゴリズムを専用ハードウェアによる非常に深いパイプラインで実装することにより、高スループットを達成する。
このアプローチは、演算器間の接続が固定で、配線オーバーヘッドが少ないため対面積性能比が高いが、アルゴリズムの自由度がなく、柔軟性が低いという不利益がある。
すなわち、機能、実行できる演算が固定されているので、多様なアルゴリズムの実行が困難で、また、画素単位の色計算等も困難である。
【0017】
また、従来の3次元グラフィックス用画像処理装置では、演算を実行する回路の構成がLSI製造時点が限定されてしまい、開発時点で想定していない演算方式を適用しようとしても、困難であるか、あるいは不可能である。
【0018】
本発明は、かかる事情に鑑みてなされたものであり、その目的、大量の演算器を効率よく利用することが可能で、アルゴリズムの自由度が高く、柔軟性が高く、しかも回路規模の増大、コスト増を招くことなく演算処理を高速に実現できる画像処理装置を提供することにある。
【0019】
【課題を解決するための手段】
上記目的を達成するため、本発明の第1の観点は、複数の処理データを並列処理する画像処理装置であって、複数のレジスタを有するレジスタユニットと、再構成可能であって、論理接続と演算内容を指定可能であり、上記レジスタユニットの複数のレジスタに対応した複数の演算器を含み、上記レジスタユニットの対応するレジスタに設定された画像に関する処理データに基づいて演算処理を行う機能ユニットと、少なくとも上記レジスタユニットの各レジスタおよび上記機能ユニットの各演算器の出力が接続されたクロスバー回路と、制御情報を受けて所望の上記演算器の論理接続と演算内容、および上記クロスバー回路を電気的接続を変更することが可能な制御回路と、を有し、上記機能ユニットの複数の演算器は、複数の演算器群に分割され、上記クロスバー回路は、上記制御回路の指示に従って、上記画像に関する処理データを上記レジスタユニットの所望の演算器に対応する上記レジスタに入力させ、上記機能ユニットの各演算器の演算結果を他の上記演算器群の演算器に対応する上記レジスタにおよび/または他の処理部に転送する。
【0020】
本発明の第2の観点は、複数のモジュールが処理データを共有して並列処理を行う画像処理装置であって、グローバルモジュールと、グラフィックス処理機能および画像処理機能を有する複数のローカルモジュールと、を有し、上記グローバルモジュールは、上記複数のローカルモジュールが並列に接続され、ローカルモジュールからリクエストを受けると、上記リクエストに応じた当該リクエストを出したローカルモジュールに処理データを出力し、上記複数のローカルモジュールは、複数のレジスタを有するレジスタユニットと、再構成可能であって、論理接続と演算内容を指定可能であり、上記レジスタユニットの複数のレジスタに対応した複数の演算器を含み、上記レジスタユニットの対応するレジスタに設定された画像に関する処理データに基づいて演算処理を行う機能ユニットと、少なくとも上記レジスタユニットの各レジスタおよび上記機能ユニットの各演算器の出力が接続されたクロスバー回路と、制御情報を受けて所望の上記演算器の論理接続と演算内容、および上記クロスバー回路を電気的接続を変更することが可能な制御回路と、を有し、上記機能ユニットの複数の演算器は、複数の演算器群に分割され、上記クロスバー回路は、上記制御回路の指示に従って、上記画像に関する処理データを上記レジスタユニットの所望の演算器に対応する上記レジスタに入力させ、上記機能ユニットの各演算器の演算結果を他の上記演算器群の演算器に対応する上記レジスタにおよび/または他の処理部に転送する。
【0021】
本発明では、上記制御回路は、個々の演算器および接続網の個々の接続点に対応してそれぞれ設けられ、各制御回路は、次に行うべき演算に関する情報を保持し、一連の演算の終了を検出した際に、自動的に次の演算に向けた制御に切り替える。
【0022】
本発明では、上記制御回路は、個々の演算器および接続網の個々の接続点に対応してそれぞれ設けられ、各演算器に対応して設けたれた各制御回路は、次に行うべき演算に関する情報を保持し、一連の演算の終了を検出した際に、自動的に次の演算に向けた制御に切り替え、接続網の個々の接続点に対応して設けられた各制御回路は、次にとるべき接続構成に関する情報を保持し、一連のデータ転送の終了を検出した際に、自動的に接続点を制御の切り替える。
【0023】
本発明では、上記制御回路は、現在の制御情報(現制御情報)と、次に行うべき制御に関する情報(次制御情報)の2つを保持し、演算データは、当該演算データが演算に使用する最終データであることが識別可能な制御信号と同期して送られ、上記制御回路は、最終データであることが識別された場合、現在実行中の演算が完了すると、現制御情報を次制御情報で書き換える。
【0024】
本発明では、上記制御回路は、現在の制御情報(現制御情報)と現在実行中の演算を識別するための情報(現識別情報)と、次に行うべき制御に関する情報(次制御情報)とを保持し、演算データは、当該演算データが演算に使用する最終データであることが識別可能な情報、およびそのデータが一の演算処理に対するもので有効であるが、他の演算処理に対するもので無効であるかを識別可能な情報を示す制御信号と同期して送られ、上記制御回路は、送られてきたデータが、最終データであり、かつ現識別情報で示される演算に対するものであることが識別された場合、現在実行中の演算が完了すると、現制御情報を次制御情報で書き換える。
【0025】
本発明では、演算データは、当該演算データが演算に使用する新しいデータであることが識別可能な情報、およびそのデータが現在の演算処理に対するものであるか、他の演算処理に対するものであるかを識別可能な情報、現制御情報および次制御情報が有効であるか無効であるかを示す制御信号と同期して送られ、上記制御回路は、送られてきたデータが、少なくとも新しいデータであり、かつ現在の演算に対するものであり、有効な処理を行っているものと識別した場合、デリミタとして検出し、上記制御回路は、デリミタ検出の有無に応じて、上記現制御情報と現在実行中の演算を識別するための情報を保持する現制御情報レジスタと、次に行うべき制御に関する情報を保持する次制御情報レジスタとの保持データの制御を行う。
【0026】
本発明では、上記複数の演算器群に含まれる複数の演算器は、フォワーディングパスにより接続されている。
【0027】
本発明では、上記機能ユニットは、スカラ演算を行う第1の演算器群と、ベクタ演算を行う第2の演算器群に分割されている。
本発明では、上記機能ユニットの複数の演算器および上記レジスタユニットのレジスタが、上記クロスバー回路を挟んで対称な関係をもって配置されている。
【0028】
本発明によれば、たとえば画像に関する処理データが制御回路により電気的接続が設定されたクロスバー回路を介してレジスタユニットの所定のレジスタに設定される。
所定のレジスタに保持された画像に関する処理データが、このレジスタに直接的に接続されている所望の演算器群の演算器に入力される。
処理データが入力された演算器は、制御回路により論理接続と演算内容を指定されており、指定に従った演算を行って、たとえばフォワーディングパスを通して次段の演算器に入力される。
たとえばフォワーディングパスを通して前段の演算結果が入力された演算器では、さらに制御回路により指定された演算処理が行われる。
そして、この演算結果がたとえばクロスバー回路に転送される。クロスバー回路に転送された演算結果は、他の演算器群の演算器に対応するレジスタに入力され、あるいは他の処理部に転送される。
演算結果がレジスタに設定された他の演算器群の演算器では、入力演算データに対して制御回路により指定された処理が行われ、その演算結果は、たとえば上述と同様に、フォワーディングパスを通して次段の演算器に入力される。
たとえばフォワーディングパスを通して前段の演算結果が入力された演算器では、さらに制御回路により指定された演算処理が行われる。
そして、この演算結果が制御回路により電気的接続が設定されたクロスバー回路に転送される。
【0029】
【発明の実施の形態】
図2は、本発明に係る画像処理装置の一実施形態を示すブロック構成図である。
【0030】
本実施形態に係る画像処理装置10は、図2に示すように、ストリームデータコントローラ(SDC)11、グローバルモジュール12、および複数のローカルモジュール13−0〜13−3を有している。
【0031】
本画像処理装置10では、SDC11とグローバルモジュール12とがデータの授受を行い、一つのグローバルモジュール12に対して複数個m、本実施形態では4個のローカルモジュール13−0〜13−3が並列に接続されて、複数のローカルモジュール13−0〜13−3で処理データを共有し並列に処理する。そして、テクスチャリード系に関しては、他のローカルモジュールに対するメモリアクセスを必要とするが、グローバルアクセスバスの形態をとる代わりに、ルータとしての機能を有する一つのグローバルモジュール12を介したアクセスを行う。
また、グローバルモジュール12はグローバルキャッシュを有し、各ローカルモジュール13−0〜13−3はローカルキャッシュをそれぞれ有する。
すなわち、本画像処理装置10は、キャッシュの階層として、たとえば4つのローカルモジュール13−0〜13−3が共有するグローバルキャッシュと、各ローカルモジュールがローカルに持つローカルキャッシュの2階層を有する。
【0032】
以下に各構成要素の構成および機能について、図面に関連付けて順を追って説明する。
【0033】
SDC11は、CPUや外部メモリとのデータの授受、並びにグローバルモジュール12とのデータの授受を司るとともに、頂点データに対する演算、各ローカルモジュール13−0〜13−3の処理ユニットにおけるラスタライゼーション(Rasterization)に必要なパラメータの生成等の処理を行う。
【0034】
SDC11における具体的な処理内容は以下の通りである。また、SDC11の処理手順を図3に示す。
【0035】
SDC11は、まず、データが入力されると(ST1)、Per−Vertexオペレーションを行う(ST2)。
この処理においては、3次元座標、法線ベクトル、テクスチャ座標の各頂点データが入力されると、頂点データに対する演算が行われる。代表的な演算としては、物体の変形やスクリーンへの投影などを行う座標変換の演算処理、ライティング(Lighting)の演算処理、クリッピング(Clipping)の演算処理がある。
ここで行われる処理は、いわゆるVertex Shaderの実行に相当する。
【0036】
次に、DDA(Digital Differential Analyzer)パラメータを計算する(ST3)。
この処理では、ラスタライゼーションに必要な各種データ(Z、テクスチャ座標、カラーなど)の傾き等のDDAパラメータを算出する。
【0037】
次に、算出したDDAパラメータをグローバルモジュール12を介して全ローカルモジュール13−0〜13−3にブロードキャストする(ST4)。
この処理において、ブロードキャストされたパラメータは、キャッシュフィルとは別のチャネルを用いて、グローバルモジュール12を介して各ローカルモジュール13−0〜13−3に渡される。ただし、グローバルキャッシュの内容には影響を与えない。
【0038】
グローバルモジュール12は、ルータ機能および全ローカルモジュールで共用するグローバルキャッシュ121を有する。
グローバルモジュール12は、SDC11によるDDAパラメータを並列に接続された全ローカルモジュール13−0〜13−3にブロードキャストする。
【0039】
また、グローバルモジュール12は、たとえばあるローカルモジュールからローカルキャッシュフィル(Local Cache Fill)LCFのリクエストを受けると、図4に示すように、グローバルキャッシュのエントリーをチェックし(ST11)、エントリーがあった場合には(ST12)、要求されたブロックデータを読み出し(ST13)、読み出したデータをリクエストを送出したローカルモジュールに送出し(ST14)、エントリーがなかった場合には(ST12)、当該ブロックデータを保持するターゲットのローカルモジュールに対してグローバルキャッシュフィル(Global Cache Fill)GCFのリクエストを送り(ST15)、その後送られてきたブロックデータでグローバルキャッシュを更新するとともに(ST16,ST17)、ブロックデータを読み出し(ST13)、読み出したデータをローカルキャッシュフィルLDFのリクエストを送ってきたローカルモジュールに対して送出する(ST14)。
【0040】
ローカルモジュール13−0は、処理ユニット131−0、たとえばDRAMからなるメモリモジュール132−0、モジュール固有のローカルキャッシュ133−0、およびグローバルモジュール12とのインターフェースを司るグローバルインターフェース(Global Access Interface:GAIF))134−0を有している。
【0041】
同様に、ローカルモジュール13−1は、処理ユニット131−1、たとえばDRAMからなるメモリモジュール132−1、モジュール固有のローカルキャッシュ133−1、およびグローバルモジュール12とのインターフェースを司るグローバルインターフェース(GAIF)134−1を有している。
ローカルモジュール13−2は、処理ユニット131−2、たとえばDRAMからなるメモリモジュール132−2、モジュール固有のローカルキャッシュ133−2、およびグローバルモジュール12とのインターフェースを司るグローバルインターフェース(GAIF)134−2を有している。
ローカルモジュール13−3は、処理ユニット131−3、たとえばDRAMからなるメモリモジュール132−3、モジュール固有のローカルキャッシュ133−3、およびグローバルモジュール12とのインターフェースを司るグローバルインターフェース(GAIF)134−3を有している。
【0042】
各ローカルモジュール13−0〜13−3は、メモリモジュール132−0〜132−3が所定の大きさ、たとえば4×4の矩形領域単位にインターリーブされており、メモリモジュール132−0と処理ユニット131−0、メモリモジュール132−1と処理ユニット131−1、メモリモジュール132−2と処理ユニット131−2、およびメモリモジュール132−3と処理ユニット131−3は、担当領域は1対1に対応しており、描画系については他のローカルモジュールに対するメモリアクセスが発生しない。
一方、各ローカルモジュール13−0〜13−3は、テクスチャリード系に関しては、他のローカルモジュールに対するメモリアクセスを必要とするが、この場合、グローバルモジュール12を介したアクセスを行う。
【0043】
各ローカルモジュール13−0〜13−3の処理ユニット131−0〜131−3はそれぞれ、画像処理とグラフィックス処理に特徴的な、いわゆるストリーミングデータ処理を高スループットで実行するストリーミングプロセッサである。
【0044】
各ローカルモジュール13−0〜13−3の処理ユニット131−0〜131−3は、たとえばそれぞれ以下のグラフィックス処理および画像処理を行う。
【0045】
まず、処理ユニット131−0〜131−3のグラフィックス処理の概要を図5および図6のフローチャートに関連付けて説明する。
【0046】
処理ユニット131(−0〜−3)は、ブロードキャストされたパラメータデータが入力されると(ST21)、三角形が自分が担当する領域であるか否かを判断し(ST22)、担当領域である場合には、ラスタライゼーションを行う(ST23)。
すなわち、ブロードキャストされたパラメータを受け取ると、その三角形が自分が担当する領域、たとえば4×4ピクセルの矩形領域単位でインターリーブされた領域に属しているか否かを判断し、属している場合には、各種データ(Z、テクスチャ座標、カラーなど)をラスタライズする。この場合、生成単位は、1ローカルモジュール当たり1サイクルで2×2ピクセルである。
【0047】
次に、テクスチャ座標のパースペクティブコレクション(Perspective Correction)を行う(ST24)。また、この処理ステージにはLOD(Level of Detail)計算によるミップマップ(MipMap)レベルの算出や、テクスチャアクセスのための(u,v)アドレス計算も含まれる。
【0048】
次に、テクスチャの読み出しを行う(ST25)。
この場合、各ローカルモジュール13−0〜13−3の処理ユニット131−0〜131−3は、図6に示すように、テクスチャリードの際に、まずは、ローカルキャッシュ133−0〜133−3のエントリーをチェックし(ST31)、エントリーがあった場合には(ST32)、必要なテクスチャデータを読み出す(ST33)。
必要とするテクスチャ・データがローカルキャッシュ133−0〜133−3内に無い場合には、各処理ユニット131−0〜131−3は、グローバルインターフェース134−0〜134−3を通して、グローバルモジュール12に対してローカルキャッシュフィルのリクエストを送る(ST34)。
そして、グローバルモジュール12は、要求されたブロックをリクエストを送出したローカルモジュールに返すが、なかった場合には上述したように(図4に関連付けて説明)、当該ブロックを保持するローカルモジュールに対してグローバルキャッシュフィルのリクエストを送る。その後ブロックデータをグローバルキャッシュにフィルするとともに、リクエストを送ってきたローカルモジュールに対してデータを送出する。
グローバルモジュール12から要求したブロックデータが送られてくると、該当するローカルモジュールは、ローカルキャッシュを更新し(ST35,ST36)、処理ユニットはブロックデータを読み出す(ST33)。
なお、ここでは、最大4テクスチャの同時処理を想定しており、読み出すテクスチャデータの数は、1ピクセルにつき16テクセルである。
【0049】
次に、テクスチャフィルタリング(Texture Filtering)を行う(ST26)。
この場合、処理ユニット133−0〜133−3は、読み出されたテクスチャデータと、(u,v)アドレスを算出時に得た小数部を使って4近傍補間などのフィルタリング処理を行う。
【0050】
次に、ピクセルレベルの処理(Per−Pixel Operation)を行う(ST27)。
この処理においては、フィルタリング後のテクスチャデータと、ラスタライズ後の各種データを用いて、ピクセル単位の演算が行われる。ここで行われる処理は、ピクセルレベルでのライティング(Per−Pixel Lighting)などいわゆるPixel Shaderに相当する。また、それ以外にも以下の処理が含まれる。
すなわち、アルファテスト、シザリング、Zバッファテスト、ステンシルテスト、アルファブレンディング、ロジカルオペレーション、ディザリングの各処理である。
【0051】
そして、ピクセルレベルの処理における各種テストをパスしたピクセルデータを、メモリモジュール132−0〜132−3、たとえば内蔵DRAMメモリ上のフレームバッファおよびZバッファに書き込まれる(ST28:Memory
Write)。
【0052】
次に、処理ユニット131−0〜131−3の画像処理の概要を図7のフローチャートに関連付けて説明する。
【0053】
画像処理を実行する前に、メモリモジュール132(−0〜−3)に画像データがロードされる。
そして、処理ユニット131(−0〜−3)では、画像処理に必要な読み出し(ソース:Source)アドレスおよび書き込み(デスティネーション:Destination)アドレスの生成に必要なコマンドやデータが入力される(ST41)。
そして、処理ユニット131(−0〜−3)において、ソースアドレスおよびデスティネーションアドレスが生成される(ST42)。
次に、ソース画像がメモリモジュール132(−0〜−3)から読み出され、あるいはグローバルモジュール12から供給され(ST43)、たとえばテンプレートマッチング等の所定の画像処理が行われる(ST44)。
そして、必要に応じて所定の演算処理が行われ(ST45)、その結果がメモリモジュール132(−0〜−3)のデスティネーションアドレスで指定された領域に書き込まれる(ST46)。
【0054】
各ローカルモジュール13−0〜13−3のローカルキャッシュ133−0〜133−3は、処理ユニット131−0〜131−3の処理に必要な描画データやテクスチャデータを格納し、処理ユニット131−0〜131−3とのデータの授受、並びにメモリモジュール132−0〜132−3とのデータの授受(書き込み、読み出し)を行う。
【0055】
図8は、各ローカルモジュール13−0〜13−3のローカルキャッシュ133−0〜133−3の構成例を示すブロック図である。
【0056】
ローカルキャッシュ133は、図8に示すように、リードオンリーキャッシュ(RO$)1331、リードライトキャッシュ(RW$)1332、リオーダバッファ(Reorder Buffer:RB)1333、およびメモリコントローラ(MC)1334を含む。
【0057】
リードオンリーキャッシュ1331は、演算処理のソース画像などを読み出すための読み出し専用キャッシュであって、たとえばテクスチャ系データ等の記憶に用いられる。
リードライトキャッシュ1332は、たとえばグラフィックス処理におけるリードモディファイライト(Read Modify Write )に代表される読み出しと書き込みの両方を必要とするオペレーションを実行するためのキャッシュであって、たとえば描画系データの記憶に用いられる。
【0058】
リオーダバッファ1333は、いわゆる待ち合わせバッファであり、ローカルキャッシュに必要なデータがない場合、ローカルキャッシュフィルのリクエストを出したときに、グローバルモジュール12に送られてくるデータの順番が異なる場合があるので、この順番を遵守し、処理ユニット131−0〜131−3に要求順に戻すようにデータの順番を調整する。
【0059】
また、図9は、メモリコントローラ1334のテクスチャ系の構成例を示すブロック図である。
このメモリコントローラ1334は、図9に示すように、4つのキャッシュCSH0〜CSH3に対応するキャッシュコントローラ13340〜13343と、各キャッシュコントローラ13340〜13343から出力されるローカルキャッシュフィルリクエストを調停しグローバルインターフェース134{−0〜3}に出力するアービタ13344と、グローバルインターフェース134{−0〜3}を介して入力したグローバルキャッシュフィルリクエストを受けて、データ転送の制御を行うメモリインターフェース13345を含む。
【0060】
また、キャッシュコントローラ13340〜13343は、4つのピクセルPX0〜PX3それぞれに対応するデータに対して4近傍補間を行う際に必要な各データの2次元アドレスCOuv00〜COuv03、COuv10〜COuv13、COuv20〜COuv23、COuv30〜COuv33を受けてアドレスの競合をチェックし分配するコンフリクトチェッカCC10と、コンフリクトチェッカCC10で分配されたアドレスをチェックしリードオンリーキャッシュ1331にアドレスで示されたデータが存在するか否かを判断するタグ回路TAG10と、キューレジスタQR10を有している。
タグ回路TAG10内は後述するバンクのインターリーブに関するアドレッシングに対応する4つのタグメモリBX10〜BX13を有し、リードオンリーキャッシュ1331に記憶されている。
ブロックデータのアドレスタグを保持するコンフリクトチェッカCC10で分配されたアドレスと上記アドレスタグを比較し、一致したか否かのフラグと前記アドレスをキューレジスタQR10にセットするとともに、一致しなかった場合には前記アドレスをアービタ13344に送出する。
アービタ13344は、キャッシュコントローラ13340〜13343から送出されるアドレスを受けて調停作業を行い、グローバルインターフェース(GAIF)134を介して同時に送出できるリクエストの数に応じてアドレスを選択し、ローカルキャッシュフィルリクエストとしてグローバルインターフェース(GAIF)134に出力する。
グローバルインターフェース(GAIF)134を介して送出されたローカルキャッシュフィルリクエストに対応してグローバルキャッシュ12からデータが送られてくると、リオーダバッファ1333にセットされる。
キャッシュコントローラ13340〜13343は、キューレジスタQRL0の先頭にあるフラグをチェックし、一致したことを示すフラグがセットされていた場合には、キューレジスタQRL0の先頭にあるアドレスに基づいて、リードオンリーキャッシュ1331のデータを読み出し、処理ユニット131に与える。一方、一致したことを示すフラグがセットされていなかった場合には、対応するデータがリオーダバッファ1333にセットされた時点でリオーダバッファ1333から読み出し、キューレジスタQRL0のアドレスに基づいて当該ブロックデータでリードオンリーキャッシュ1331を更新するとともに、処理ユニット131に出力する。
【0061】
次に、メモリモジュールとしてのDRAMと、ローカルキャッシュと、グローバルキャッシュのメモリ容量について説明する。
メモリ容量の関係は、当然のことながらDRAM>グローバルキャッシュ>ローカルキャッシュであるが、その割合については、アプリケーションに依存する。
キャッシュブロックサイズとしては、キャッシュフィル時に下位階層のメモリから読み出すデータサイズに相当する。
DRAMの特性として、ランダムアクセス時には性能が低下するが、同一行(ROW)に属するデータの連続アクセスは速いという点をあげることができる。
【0062】
グローバルキャッシュは、DRAMからデータを読み出す関係上、前記連続アクセスを行う方が性能上好ましい。
したがって、キャッシュブロックのサイズを大きく設定する。
たとえば、グローバルキャッシュのキャッシュブロックのサイズはDRAMマクロの1行分をブロックサイズにすることができる。
【0063】
一方、ローカルキャッシュの場合には、ブロックサイズを大きくすると、キャッシュに入れても、使われないデータの割合が増えることと、下位階層がグローバルキャッシュでDRAMでなく連続アクセスに必要性がないことから、ブロックサイズは小さく設定する。
ローカルキャッシュのブロックサイズとしては、メモリインターリーブの矩形領域のサイズに近い値が適当で、本実施形態の場合、4×4ピクセル分、すなわち512ビットとする。
【0064】
次に、テクスチャ圧縮について説明する。
1ピクセルの処理を行うのに複数のテクスチャデータを必要とするので、テクスチャ読み出しバンド幅がボトルネックになる場合が多いが、これを軽減するためテクスチャを圧縮する方法がよく採用される。
圧縮方法には、いろいろあるが、4×4ピクセルのように小さな矩形領域単位で圧縮/伸長できる方法の場合には、グローバルキャッシュには圧縮されたままのデータを置き、ローカルキャッシュには、伸長後のデータを置くことが好ましい。
【0065】
次に、ローカルモジュール13−0〜13−3の処理ユニット131−0〜131−3の具体的な構成例について説明する。
【0066】
図10は、本実施形態に係るローカルモジュールの処理ユニットの具体的な構成例を示すブロック図である。
【0067】
ローカルモジュール13(−0〜−3)の処理ユニット131(−0〜−3)は、図10に示すように、ラスタライザ(Rasterizer:RSTR)1311およびコア(Core)1312を有している。
これらの構成要素のうち、コア1312が本アーキテクチャの演算処理部として機能し、コア1312はラスタライザ1311によりアドレスや座標等のグラフィックス処理および画像処理のための各種データが供給される。
【0068】
ラスタライザ1311は、グラフィックス処理の場合には、グローバルモジュール12からブロードキャストされたパラメータデータを受けて、たとえば三角形が自分が担当する領域であるか否かを判断し、担当領域である場合には、入力した三角形頂点データに基づいてラスタライゼーションを行い、生成したピクセルデータをコア1312に供給する。
ラスタライザ1311において生成されるピクセルデータには、ウィンドウ座標(X,Y,Z)、プライマリカラー(Primary Color:PC)(Rp,Gp,Bp,Ap)、セカンダリカラー(Secondary Color:SC)(Rs,Gs,Bs,As)、Fog係数(f)、テクスチャ座標、法線ベクトル、視線ベクトル、ライトベクトル((V1x,V1y,V1z),(V2x,V2y,V2z))等の各種データが含まれる。
なお、ラスタライザ1311からコア1312へのデータの供給ラインは、たとえばウィンドウ座標(X,Y,Z)の供給ラインと、他のプライマリカラー(Rp,Gp,Bp,Ap)、セカンダリカラー(Rs,Gs,Bs,As)、Fog係数(f)、テクスチャ座標(V1x,V1y,V1z)、および(V2x,V2y,V2z)の供給ラインとは、異なる配線により形成される。
【0069】
ラスタライザ1311は、画像処理の場合には、たとえばグローバルモジュール12を介して図示しない上位装置から出力された、メモリモジュール132(−0〜−3)から画像データを読み出すためのソースアドレスおよび画像処理結果を書き込むためのデスティネーションアドレスの生成に必要なコマンドやデータ、たとえば探索矩形領域の幅、高さデータ(Ws,Hs)、ブロックサイズデータ(Wbk,Hbk)を入力し、入力データに基づいて、ソースアドレス(X1s,Y1s)および/または(X2s,Y2s)を生成するとともに、デスティネーションアドレス(Xd,Yd)を生成し、コア1312に供給する。
画像処理時のラスタライザ1311からコア1312へのデータの供給ラインは、たとえばデスティネーションアドレス(Xd,Yd)に関してはグラフィックス処理時のウィンドウ座標(X,Y,Z)の供給ラインが共用され、ソースアドレス(X1s,Y1s),(X2s,Y2s)に関してはテクスチャ座標(V1x,V1y,V1z)、および(V2x,V2y,V2z)等の供給ラインが共用される。
【0070】
コア1312は、上述したように、本アーキテクチャの演算処理部として機能し、コア1312はラスタライザ1311により各種データが供給される。
コア1312は、ストリームデータに対して演算処理を行う以下の機能ユニットを有している。
すなわち、コア1312は、第1の機能ユニットとしてのグラフィックスユニット(Graphics Unit :GRU)13121、第3の機能ユニットとしてのピクセルエンジン(Pixel Engine:PXE)13122、および第2の機能ユニットとしてのピクセル演算プロセッサ(Pixel 0peration Processor :POP)群13123を有している。
コア1312は、たとえばデータフローグラフ(Data Flow Graph : DFG)に応じてこれらの機能ユニット間の接続を切り替えることにより様々なアルゴリズムに対応する。
さらに、コア1312は、レジスタユニット(Register Unit :RGU)13124、およびクロスバー回路(Interconnection X−Bar :IXB)13125を有している。また、コア1312は、たとえば後述する制御情報供給回路13126を有する。
【0071】
グラフィックスユニット(GRU)13121は、グラフィックス処理を実行する際に、専用ハードウェアを付加することがコストパフォーマンス上明らかに有利なものをハードワイヤードロジックで実装している機能ユニットである。
グラフィックスユニット13121は、グラフィックス処理に関連するものとして、パースペクティブコレクション(Perspective Correction)、MIPMAPレベル算出等の機能を実装している。
【0072】
グラフィックスユニット13121は、クロスバー回路13125、レジスタユニット(RGU)13124を介してラスタライザ1311により供給されたテクスチャ座標(V1x,V1y,V1z)、および/またはラスタライザ1311またはピクセルエンジン(PXE)13122により供給されたテクスチャ座標(V2x,V2y,V2z)データを入力し、入力データに基づいて、パースペクティブコレクション、LOD(Level of Detail)計算によるミップマップ(MIPMAP)レベルの算出、立方体マップ(Cube Map)の面選択や正規化テクセル座標(s,t)の算出処理を行い、たとえば正規化テクセル座標(s,t)およびLODデータ(lod)を含むグラフィックスデータ(s1,t1,lod1)および/または(s2,t2,lod2)をピクセル演算プロセッサ(POP)群13123に出力する。
なお、グラフィックスユニット13121の出力グラフィックスデータ(s1,t1,lod1),(s2,t2,lod2)は、クロスバー回路13125、レジスタユニット(RGU)13124を通して、あるいは図10中、破線で示すように、別の配線で直接的にピクセル演算プロセッサ(POP)群13123に供給される。
【0073】
第3の機能ユニットとしてのピクセルエンジン(PXE)13122は、ストリームデータ処理を行う機能ユニットであって、内部に複数の演算器を有する。ピクセルエンジン13122は、ピクセル演算プロセッサ(POP)群13123に比べて演算器間の接続自由度が高く、かつ演算器の機能も豊富である。
【0074】
ピクセルエンジン(PXE)13122は、描画対象に関する情報やピクセル演算プロセッサ(POP)群13123における演算結果が、たとえばクロスバー回路13125によりレジスタユニット(RGU)13124の所望のFIFOレジスタに設定された後、クロスバー回路13125を介さず、レジスタユニット(RGU)13124を介して直接的に供給される。
ピクセルエンジン(PXE)13122に入力されるデータとしては、たとえば描画する対象の表面に関する情報(面の方向、色、反射率、模様(テクスチャ)等)、表面にあたる光に関する情報(入射方向、強さなど)、過去の演算結果(演算の中間値)等が一般的である。
【0075】
ピクセルエンジン(PXE)13122は、複数の演算器を有し、たとえば外部からの制御により演算経路を再構成可能な演算ユニットであって、所望の演算を実現するように、内部の演算器間の電気的接続を確立し、レジスタユニット(RGU)13124を介して入力されたデータを、演算器と電気的接続網(インターコネクト)から形成される一連の演算器のデータパスに入力することで演算を行い、演算結果を出力する。
【0076】
すなわち、ピクセルエンジン13122は、再構成可能なデータパスをたとえば複数有し、演算器(加算器、乗算器、乗加算器等)を、電気的な接続網で接続し、複数個の演算器からなる演算回路を構成する。
そして、ピクセルエンジン13122は、このようにして再構成された演算回路に対して、連続してデータを入力し、演算を行うことが可能であり、たとえば2入力1出力の逆二分木状のDFG(データフローグラフ)で表現される演算を、効率よくかつ少ない回路規模で実現できる接続網を使用して演算回路を構成することが可能である。
【0077】
以上の構成を有するピクセルエンジン(PXE)13122は、たとえばグラフィックス処理時に、クロスバー回路13125を介してレジスタユニット(RGU)13124の所望のFIFOレジスタに設定され、FIFOレジスタから直接的に入力されたピクセル演算プロセッサ(POP)群13123における演算結果データ(TR1,TG1,TB1,TA1)および(TR2,TG2,TB2,TA2)、並びに、ラスタライザ1311によりレジスタユニット(RGU)13124の所望のFIFOレジスタに設定され、FIFOレジスタから直接的に入力されたプライマリカラー(PC)、セカンダリカラー(SC)、Fog係数(F)に基づいて、たとえばピクセルシェーダ(Pixel Shader)のような演算を行い、色データ(FR1,FG1,FB1)および混合値(ブレンド値:FA1)を求める。
ピクセルエンジン(PXE)13122は、このデータ(FR1,FG1,FB1,FA1)を、クロスバー回路13125、レジスタユニット(RGU)13124を介して、ピクセル演算プロセッサ(POP)群13123の所定のPOP内あるいは別個に設けられたライトユニットWUに転送する。
【0078】
図11は、ピクセルエンジン(PXE)13122の第1の構成例、およびレジスタユニット(RGU)13124、クロスバー回路13125との接続例を示す図である。
【0079】
このピクセルエンジン(PXE)13122は、図11に示すように、2または3入力MAC(Multiply and Accumulator)を基本とした複数(図11の例では18個)の演算器OP1〜OP9,OP10〜OP18を有し、クロスバー回路(IXB)を挟んで、演算器OP1〜OP9を含む第1の演算器群としてのスカラ演算部13122Aと演算器OP10〜OP18を含む第2の演算器群としてのベクタ演算部13122Bとに分かれた構成を有している。
【0080】
図11に示すように、スカラ演算部13122A内の各演算器OP1〜OP9の2本の入力は、レジスタユニット(RGU)13124のFIFO(First−IN
First−Out) レジスタFREGと直結している。
そして、各演算器OP1〜OP9の出力は、クロスバー回路13125に接続されている。
【0081】
さらに、図11の例では、スカラ演算部13122Aにおいては、演算器OP1の出力がフォワーディングパスにより演算器OP2〜OP9の3入力にそれぞれ接続されている。同様に、演算器OP2の出力がフォワーディングパスにより演算器OP3〜OP9の3入力にそれぞれ接続されている。演算器OP3の出力がフォワーディングパスにより演算器OP4〜OP9の3入力にそれぞれ接続されている。演算器OP4の出力がフォワーディングパスにより演算器OP5〜OP9の3入力にそれぞれ接続されている。演算器OP5の出力がフォワーディングパスにより演算器OP6〜OP9の3入力にそれぞれ接続されている。演算器OP6の出力がフォワーディングパスにより演算器OP7〜OP9の3入力にそれぞれ接続されている。演算器OP7の出力がフォワーディングパスにより演算器OP8,OP9の3入力にそれぞれ接続されている。演算器OP8の出力がフォワーディングパスにより演算器OP9の3入力にそれぞれ接続されている。
【0082】
このような構成を有するスカラ演算部13122Aは、各演算器OP1〜OP9個別に論理接続と演算内容を指定可能であり、高い接続の自由度と演算器の個別制御という特性をいかし、多様なスカラ演算を実行可能に構成されている。
また、スカラ演算部13122Aは、後述するように、ベクタ処理にも使用可能で、スカラ演算、3次/4次ベクタ演算比率の変動に対処可能に構成されている。
【0083】
図11に示すように、ベクタ演算部13122B内の各演算器OP10〜OP18の2本の入力は、レジスタユニット(RGU)13124のFIFOレジスタFREGと直結している。
そして、各演算器OP10〜OP18の出力は、クロスバー回路13125に接続されている。
【0084】
さらに、図11の例では、ベクタ演算部13122Bにおいては、演算器OP10の出力がフォワーディングパスにより演算器OP11,OP12の3入力にそれぞれ接続されている。同様に、演算器OP11の出力がフォワーディングパスにより演算器OP12の3入力にそれぞれ接続されている。
演算器OP13の出力がフォワーディングパスにより演算器OP14,OP15の3入力にそれぞれ接続されている。同様に、演算器OP14の出力がフォワーディングパスにより演算器OP15の3入力にそれぞれ接続されている。
演算器OP16の出力がフォワーディングパスにより演算器OP17,OP18の3入力にそれぞれ接続されている。同様に、演算器OP17の出力がフォワーディングパスにより演算器OP18の3入力にそれぞれ接続されている。
【0085】
このような構成を有するベクタ演算部13122Bにおいて、演算器OP10,OP13,OP16は演算処理が同一内容であり、演算器OP11,OP14,OP17は演算処理が同一内容であり、演算器OP12,OP15,OP18は演算処理が同一内容である。
ベクタ演算部13122Bは、演算器の制御の共通化と、フォワーディングパスを採用することにより構成を簡略化して、回路規模を低減し、かつ、必要な接続自由度を維持しながら回路規模を低減した構成となっている。
【0086】
ここで、フォワーディングパスを採用することにより構成を簡略でき、回路規模を低減できる理由について、図12に関連付けて説明する。
【0087】
3次元コンピュータグラフィックスにおいては、多項の積和演算が多用される。
このとき、たとえば、図12(A)に示すように、乗算、加算を別々な演算器で行う場合、具体的にはN個の乗算器(MUL)とN個の加算器(ADD)を用いて演算を行う構成においては、回路数は〔{乗算器(MUL)の数+加算器(ADD)の数}×(2個のFIFO)〕となり、4N個のFIFOレジスタFREGが必要となる。
また、図12(B)に示すように、N個の3入力乗加算器(MA)を用いて演算を行う構成においては、回路数は〔乗加算器(MA)の数×(3個のFIFO)〕となり、3N個のFIFOレジスタFREGが必要となる。
一方、図12(C)に示すように、N個の3入力乗加算器(MA)およびフォワーディングパスを用いて演算を行う構成においては、回路数は〔乗加算器(MA)の数×(2個のFIFO)〕となり、2N個のFIFOレジスタFREGが必要となる。
すなわち、フォワーディングパスを用いることにより、構成を簡略化でき、回路規模を低減することが可能となる。
【0088】
スカラ演算部13122Aおよびベクタ演算部13122Bを構成する各演算器OP1〜OP9,OP10〜OP18は、上述したように、再構成可能なデータパスをたとえば複数有し、演算器(加算器、乗算器、乗加算器等)を、電気的な接続網で接続し、複数個の演算器からなる演算回路を構成する。
【0089】
スカラ演算部13122Aおよびベクタ演算部13122Bを構成する各演算器OP1〜OP9,OP10〜OP18は、たとえば基本演算として、減算、乗算、加算、およびアキュムレート(Acc)等の演算処理を組み合わせて、たとえば以下の各種演算処理を行う。
【0090】
・(A±B)×C±B、
・(A±B)×C±Acc、
・(A±B)2 ±Acc、
・A±B±C、
・A±B±Acc、
・A×B、
・論理演算(たとえばAND,OR,NOT)、
・ソースオペランドへの定数設定(1〜2個)、
・クランプ(Clamp)/サチュレーション(Saturation)、
・ソースデータの1,2ビット左シフト、
・演算結果の算術1,2,8ビット右シフト。
【0091】
図13は、上記の各種演算処理を行う演算器の具体的な構成例を示す回路図である。
【0092】
演算器200(OP1〜OP18)は、図13に示すように、加減算器201、PPG(Partial Product Generator)/CSA(CarrySave Adder)202、加減算器203、論理演算器204、アキュムレータ205、左シフタ(L−Shift)206、右シフタ(R−Shift)207、クランプ(Clamp)/サチュレーション(Sat)回路208、3入力セレクタ209〜213、4入力セレクタ214,215、および2入力セレクタ216〜220を有している。
【0093】
演算器200内の3入力セレクタ209〜213、4入力セレクタ214,215、および2入力セレクタ216〜220は、たとえばコア1312に存在する図示しない制御レジスタの設定データにより制御される。
この演算器200においては、3入力セレクタ209〜211に対して、対応する2つのFIFOレジスタFREGの出力、前段の演算器(OP1〜OP17)の出力(フォワードパス)データが供給され、演算器200の演算結果であるクランプ(Clamp)/サチュレーション(Sat)回路208の出力がクロスバー回路13125に供給される。
左シフタ(L−Shift)206では、セレクタ212により選択されるパラメータ0,1,2に応じて2n の演算が行われる。また、右シフタ(R−Shift)207では、セレクタ215により選択されるパラメータ0,1,2,8に応じて1/2n の演算が行われる。
3入力セレクタ209の出力は加減算器201および2入力セレクタ219の一方の入力に供給される。3入力セレクタ210の出力は2入力セレクタ216,220、および4入力セレクタ214の第1入力に供給される。3入力セレクタ211の出力は左シフタ(L−Shift)206に供給される。また、2入力セレクタ217の一方の入力に選択データのMSB8ビットが、他方の入力にLSBの8ビットが入力される。セレクタ218の一方の入力のMSBの8ビットにはセレクタ217から出力される8ビットの値が入力され、同入力のLSBの8ビットには、セレクタ211の出力のLSBの8ビットが入力される。
2入力セレクタ216の他方の入力にはパラメータ0が供給され、その出力が加減算器201の他方の入力に供給される。加減算器201の出力は2入力セレクタ218の他方の入力およびPPG/CSA202の一方の入力に供給され、セレクタ218の出力がPPG/CSA202の他方の入力に供給される。PPGは乗算の為の部分積を生成する。この部分積をワラス等で知られるツリー状に構成したCSAで加算していくことで、一方の出力にキャリー出力が出力され、他方の出力にサム出力が出力される。この二つの出力を加減算器203で加算することにより乗算結果が得られる。
PPG/CSA202の一方の出力(キャリー出力)が2入力セレクタ219の他方の入力に供給され、他方の出力が2入力セレクタ220の他方の入力(サム出力)に供給される。
4入力セレクタ214の第2入力にはパラメータ0が供給され、第3入力に左シフタ(L−Shift)206の出力が供給され、第4入力にアキュムレータ205の出力が供給される。
2入力セレクタ219の出力が加減算器203の第1入力および論理演算器204の一方の入力に供給され、2入力セレクタ220の出力が加減算器203の第2入力および論理演算器204の他方の入力に供給され、4入力セレクタ214の出力が加減算器203の第3入力に供給される。
加減算器203の出力がアキュムレータ205および3入力セレクタ213の第1入力に供給され、論理演算器204の出力が3入力セレクタ213の第2入力に供給され、セレクタ213の第3入力にアキュムレータ205の出力が供給される。
そして、セレクタ213の出力が右シフタ(R−Shift)207に供給され、右シフタ(R−Shift)207の出力が(Clamp)/サチュレーション(Sat)回路208に供給される。
【0094】
以上のように、演算器200(OP1〜OP18)は動的に再構成可能に構成されている。
以下に、動的再構築を実現する演算器OP(200)およびクロスバー回路(IXB)13125の切り替え制御系について説明する。
【0095】
図14は、演算器およびクロスバー回路(IXB)の切り替え制御系の一例を示す構成図である。
なお、図14においては、演算器OPに対する制御系を例として示しているが、クロスバー回路13125においては、演算器OPに代わりにセレクタが配置される。
【0096】
この切り替え制御系は、制御回路301と、現在の制御情報(現制御情報)CIFMと、次に行うべき制御に関する情報(次制御情報)NIFMの2つを保持するための現制御情報レジスタ302および次制御情報レジスタ303を有している。
【0097】
この切り替え制御系において、図14に示すように、各演算器OPに対する制御回路301は、たとえばコア1312に配置される制御情報供給回路13126(図10)から供給される現在の制御情報(現制御情報)CIFMと、次に行うべき制御に関する情報(次制御情報)NIFMの2つを、制御情報レジスタ302および次制御情報レジスタ303に保持させる。
制御回路301は、現制御情報CINFおよび次制御情報NINFの有効・無効を管理する。そして、いずれか1つでも無効である場合に、制御情報供給回路13126に対して制御情報要求REQINFを送出し、制御情報を要求する。そして、演算データOPDT1,OPDT2は、それが演算に使用する最終データであることが識別可能な制御信号CTL1,CTL2と同期して送られてくる。
制御回路301は、最終データであることが識別された場合、現在実行中の演算の完了と同時に、現制御情報CIFMを次制御情報NIFMで書き換える。
これにより、演算回路の制御を変更することが可能であり、異なる演算を実行することが可能となる。
クロスバー回路13125に関しても同様であり、図14に示すように、制御信号CTLにより最終データであることが識別された場合、制御回路301は、現在実行中のデータ転送の完了と同時に、現制御情報CIFMを次制御情報NIFMで書き換える。
これにより、接続回路網の制御を変更することが可能であり、異なる電気的接続を実現することが可能となる。
【0098】
上述したように、本実施形態においては、演算データOPDTに対して付帯情報として制御信号CTLが同期して送られてくる。制御信号CTLは主にストール時の問題に対処する目的で用いられる。
以下に、制御信号CTLについて説明する。
【0099】
たとえば、自分は受け取ることができるが、他の機能ブロックの都合でストールする場合がある。
具体的には、下流側の都合でストールする場合と、同一セグメント内の上流側の都合でストールする場合である。
【0100】
同一データを重複して受け取らないためには、データの切り替わりを示す必要がある。
また、データに付帯情報を付与することで、第1に演算の最終データであることを示す、第2に演算データではなく、制御情報をデータバスを使用して送る、というように、演算に使用するデータのみならず、制御に使用する情報をデータバスを使用して送ることが可能となる。
【0101】
たとえば以下に示すような、2ビットの制御信号CTLを使用することで、データの切り替わりを示すことと、特別な付帯情報(特別データ)であるか否かを示すことができる。
【0102】
具体的には、上述したように、2ビットの制御信号(2本の制御線)を使用し、図15(A)〜(C)に示すように、信号の遷移によりデータの切り替わりを示す。前サイクルの制御信号の状態から以下のいずれかへ値を変化することで、新しいデータが送られたことを示す。
2ビットの制御信号CTLが「00」の場合には「無効」を示し、「01」および「10」の場合には「有効」を示し、「11」の場合には「有効かつ特別データ」を示す。
すなわち、制御信号CTLの値が変化することで、データの切り替わりを示している。
【0103】
また、パイプライン的に演算処理を行う必要がある場合あるいは機能ユニット(演算ブロック)においては、図16に示すように、パイプラインに沿って制御情報を伝播させることで、間断なく処理を切り替えることができる。
図16において、現制御情報レジスタ302から演算器OPに至る経路には、たとえはデコード回路が配置される。次段に伝播する制御情報は、後段で必要になる一部の情報でも良いし、制御情報がデコードされた情報でも良い。
【0104】
本実施形態においては、演算処理の内容を切り替える場合、可能な限り性能低下を低減するという観点から、現在実行中の処理の最終データを検出し、各制御回路301が自立的に動作を切り替えるように構成している。
これにより、演算器や演算ブロックは、現在実行中の処理に連続して次の処理を開始できるため、性能低下を抑止することが可能である。
【0105】
これを実現するために、現在の処理の終了を示す情報を、各演算器や演算ブロックに対してデータ経路を経由して流す(デリミタ)。デリミタとしては、たとえば有効な最終データに対して付与する第1の方法と、有効な最終データを出力した後に処理の対象とならないデータとして流す第2の方法を採用可能である。第2の方法の場合、データの代わりに何らかの制御情報を送るようにすることも可能である。
本実施形態においては、現在実行中の処理を既定する現制御情報CINFと、次に行う処理を既定する次制御情報NINFを保持するが、デリミタを検出した場合、次制御情報NINFを現制御情報CINFに移すことで間断なく動作を切り替え、処理を継続させることが可能で、並行して異なる処理を行うことができる。
たとえば、複数のテクスチャを並行に処理可能な場合、各演算ブロック単位で同様の動作が可能である。
【0106】
図17は、デリミタ検出機能を有する制御回路301の構成例を示すブロック図である。
制御回路301は、図17に示すように、複数のデリミタ検出回路(DLMT)3011−1,3011−2・・、論理和回路(OR)3012、シーケンサ(SEQ)3013、およびセレクタ3014−1,3014−2を有している。
【0107】
制御回路301は、制御情報で制御される演算器の各入力データOPDTに付随する制御信号CTL1,CTL2,・・が各々に対して対応して設けられたデリミタ検出回路3011−1,3011−2・・に入力させる。
各デリミタ検出回路3011−1,3011−2・・の出力が論理和回路3012で論理和され、その結果がデリミタ検出信号S3012としてシーケンサ3013に入力される。
すなわち、現在の処理で参照しているデータの1つ以上にデリミタが検出された場合には、デリミタ検出信号S3012がアサートされる。
シーケンサ3013は、デリミタ検出信号S3012と書き込み信号WRSに基づいて、現制御情報レジスタ302と次制御情報レジスタ303の入力段に配置されたセレクタ3014−2,3014−1が制御情報供給回路13126から供給された書き込みデータWRD(制御情報INF)かレジスタの保持データのいずれを選択するかを制御し、また、必要に応じて制御情報要求REQINFを制御情報供給回路13126に送出する。
【0108】
図18は、図17のデリミタ検出回路3011(−1,・・)の構成例を示すブロック図である。
【0109】
本デリミタ検出回路3011は、図18に示すように、制御信号保持レジスタ30111、不一致判定回路(INCONSIS)30112、信号値判定回路(SGNVAL)30113、デコード回路(DEC)30114、および3入力ANDゲート30115を有している。
【0110】
制御信号保持レジスタ30111は、1クロック前の制御信号CTLを保持する。
【0111】
不一致判定回路30112は、入力端Aに入力される制御信号保持レジスタ30111に保持されている1クロック前の制御信号CTLの値と、入力端Bに入力される現時刻での制御信号CTLの値とを比較し、値が一致した場合に論理「1」を、一致しない場合には論理「1」をANDゲート30115に出力する。これにより、新しいデータとこれに同期した制御信号が到達した際には、出力端Yに「1」が出力される。
【0112】
信号値判定回路30113は、入力端Aに入力される制御信号CTLの値を判定して、特別データを示す信号値の場合には論理「1」を、そうでない場合には論理「0」をADNゲート30115に出力する。
【0113】
デコード回路30114は、制御情報INFをデコードし、現在の処理データnが参照されているか否かを判定し、参照されている場合に論理「1」を、されていない場合には論理「0」をADNゲート30115に出力する。
【0114】
ANDゲート30115は、不一致判定回路30112、信号値判定回路30113、およびデコード回路30114の出力の論理積をとり、新しいデータが到達し、かつそのデータ入力が現在の処理で参照されており、かつそれが特別データであり、かつ現在有効な処理を行っている場合に「1」をアサートし、データnに対するデリミタ検出を示す。
【0115】
また、図19は、図17のシーケンサの状態遷移例を示す図である。
【0116】
シーケンサ3013は、図19に示すように、第1状態C IV N IV、第2状態C V N IV、および第3状態C V N Vの3つの状態をとりえる。
図20に示すように、第1状態C IV N IVの場合、現制御情報CINFは無効であり、次制御情報NINFも無効である。
第2状態C V N IVの場合、現制御情報CINFは有効であり、次制御情報NINFは無効である。
第3状態C V N Vの場合、現制御情報CINFは有効であり、次制御情報NINFも有効である。
【0117】
また、図21は、各遷移条件に対応する現制御情報レジスタ302、次制御情報レジスタ303の書き込まれる値、並びに制御情報要求REQINFの状態を示す図である。
図21中のおいて、現制御情報レジスタ302、次制御情報レジスタ303の書き込まれる値の欄に「−」が記されているのは、そのレジスタは次状態では無効であるためレジスタにはどのような値が保持されるようになっても良いことを示している。
【0118】
リセット発生時には、常に第1状態C IV N IVに遷移する。なお、リセット後は制御回路301から制御情報要求REQINFはアサートされない。最初の制御情報INFは、制御回路301から制御情報要求REQINFをアサートしなくても、制御情報供給回路13126が起動された後に自律的に書き込む(ライトする)。
【0119】
条件0はリセットであり、図21の例では制御情報要求REQINFをアサートする。
条件1は第1状態C IV N IVにおけるライト(Write)無しであり、制御情報要求REQINFはネゲートである。
条件2はライトであり、第1状態C IV N IVから第2状態C V NIVに遷移させる条件である。この場合、現制御情報レジスタ302に供給された書き込みデータWRDの値を書き込む。このとき、制御情報要求REQINFをアサートする。
条件3は、ライト無し&デリミタ有りであり、第2状態C V N IVから第1状態C IV N IVに遷移させる条件である。この場合、制御情報要求REQINFをアサートする。
条件4は第2状態C V N IVにおけるライト有り&デリミタ有りであり、現制御情報レジスタ302に供給された書き込みデータWRDの値を書き込む。このとき、制御情報要求REQINFをアサートする。
条件5は第2状態C V N IVにおけるライト無し&デリミタ無しであり、現制御情報レジスタ302に現制御情報レジスタ302に保持されていた現制御情報CINFを書き込む。このとき、制御情報要求REQINFはネゲートである。
条件6は、ライト有り&デリミタ無しであり、第2状態C V N IVから第3状態C V N Vに遷移させる条件である。この場合、現制御情報レジスタ302に現制御情報レジスタ302に保持されていた現制御情報CINFを書き込み、次制御情報レジスタ303に供給された書き込みデータWRDの値を書き込む。このとき、制御情報要求REQINFはネゲートである。
条件7は、デリミタであり、第3状態C V N Vから第2状態C V NIVに遷移させる条件である。この場合、現制御情報レジスタ302に次制御情報レジスタ303に保持されていた次制御情報NINFを書き込む。このとき、制御情報要求REQINFをアサートする。
条件8は第3状態C V N Vにおけるデリミタ無しであり、現制御情報レジスタ302に現制御情報レジスタ302に保持されていた現制御情報CINFを書き込み、次制御情報レジスタ303に次制御情報レジスタ303に保持されていた次制御情報NINFを書き込む。このとき、制御情報要求REQINFはネゲートである。
【0120】
切り替え制御系は、上述したように、リセット時には現制御情報CINFと次制御情報NINFとも無効となる。
各演算器(演算ブロック)の演算内容は現制御情報CINFの内容により決定される。
現制御情報CINFと次制御情報NINFの有効/無効は、制御情報供給回路13126からの書き込み(ライト)およびデリミタの検出時に自動的に変更される。
現制御情報レジスタ302、次制御情報レジスタ303へのライトおよびデリミタ検出時の制御情報レジスタの状態変化について、以下に述べる。
【0121】
制御情報供給回路13126からのライトがあり、デリミタが検出されていない場合であって、現制御情報CINFと次制御情報NINFとが共に無効である場合、ライトされた命令、世代番号は現制御情報レジスタ302に格納され、現制御情報CINFが有効となり、次制御情報NINFが無効となる。
現制御情報CINFが有効で次制御情報NINFが無効である場合、ライトされた命令は次制御情報レジスタ303に格納され、現制御情報CINFと次制御情報NINFとが共に有効になる。
現制御情報CINFが無効で次制御情報NINFが有効である場合は存在しない。
現制御情報CINFと次制御情報NINFとが共に有効である場合も存在しない。
【0122】
制御情報供給回路13126からのライトがなく、デリミタが検出された場合であって、現制御情報CINFと次制御情報NINFとが共に無効である場合、現制御情報CINFと次制御情報NINFとが共に無効となる。
現制御情報CINFが有効で次制御情報NINFが無効である場合も、現制御情報CINFと次制御情報NINFとが共に無効となる。
現制御情報CINFが無効で次制御情報NINFが有効である場合は存在しない。
現制御情報CINFと次制御情報NINFとが共に有効である場合、現制御情報は有効となり、次制御情報は無効となる。
【0123】
制御情報供給回路13126からのライトとデリミタが同時の場合であって、現制御情報CINFと次制御情報NINFとが共に無効である場合、ライトされた命令は現制御情報レジスタ302に格納され、現制御情報CINFが有効となり、次制御情報NINFが無効となる。
現制御情報CINFが有効で次制御情報NINFが無効である場合、ライトされた命令は現制御情報レジスタ302に格納され、現制御情報CINFが有効となり、次制御情報NINFが無効となる。
現制御情報CINFが無効で次制御情報NINFが有効である場合は存在しない。
現制御情報CINFと次制御情報NINFとが共に有効である場合、現制御情報CINFと次制御情報NINFは共に有効である。
【0124】
ここで、図11のピクセルエンジン13122における動的に再構成された演算回路の演算処理例を図22および図23に関連付けて説明する。
【0125】
まず、グラフィックス処理におけるいわゆる依存テクスチャ有りの場合の演算処理例について図22に関連付けて説明する。
【0126】
この場合、上述した切り替え制御系により、スカラ演算部13122Aの演算器OP1,OP4が乗算器として機能し、演算器OP2,OP3,OP5〜OP7が減算機能を含む乗加算器として機能するように再構成される。
また、ベクタ演算部13122の演算器OP10,OP13,OP16が乗算器として機能するように再構成される。
【0127】
スカラ演算部13122Aにおいては、視線ベクトルEおよび法線ベクトルNのx成分E.x,tex(N).xが演算器OP1に入力されて乗算され、この乗算結果E.x・tex(N).xが演算器OP2に入力される。
演算器OP2には、EおよびNのy成分E.y,tex(N).yが入力されて乗算され、この乗算結果E.y・tex(N).yに演算器OP1の乗算結果E.x・tex(N).xが加算され、この加算結果(E.x・tex(N).x+E.y・tex(N).y)が演算器OP3に入力される。
演算器OP3には、EおよびNのz成分E.z,tex(N).zが入力されて乗算され、この乗算結果E.z・tex(N).zに演算器OP2の演算結果(E.x・tex(N).x+E.y・tex(N).y)が加算され、この加算結果(E.x・tex(N).x+E.y・tex(N).y+E.z・tex(N).z)が演算器OP4に入力される。この演算器OP3の演算結果がEとNと内積であり、以下dot(E,tex(N))として表す。
演算器OP4には、定数2が入力され、定数2と演算器OP3の演算結果が乗算され、その乗算結果2×dot(E,tex(N))が演算器OP5,OP6,OP7に入力される。
演算器OP5には、EおよびNのx成分E.x,tex(N).xが入力され演算器OP4の乗算結果2×dot(E,tex(N))にNのx成分tex(N).xが乗算され、この乗算結果2×dot(E,tex(N))×tex(N).xからEのx成分E.xが減算され、この減算結果(2×dot(E,tex(N))×tex(N).x−E.x)が反射ベクトルのx成分Rxとしてクロスバー回路13125に転送される。
演算器OP6には、EおよびNのy成分E.y,tex(N).yが入力され演算器OP4の乗算結果2×dot(E,tex(N))にNのy成分tex(N).yが乗算され、この乗算結果2×dot(E,tex(N))×tex(N).yからEのy成分E.yが減算され、この減算結果(2×dot(E,tex(N))×tex(N).y−E.y)が反射ベクトルのy成分Ryとしてクロスバー回路13125に転送される。
演算器OP7には、EおよびNのz成分E.z,tex(N).zが入力され演算器OP4の乗算結果2×dot(E,tex(N))にNのz成分tex(N).zが乗算され、この乗算結果2×dot(E,tex(N))×tex(N).zからEのz成分E.zが減算され、この減算結果(2×dot(E,tex(N))×tex(N).z−E.z)が反射ベクトルのz成分Rzとしてクロスバー回路13125に転送される。
【0128】
また、ベクタ演算部13122Bにおいて、演算器OP10には、テクスチャのR(赤)成分tex(R).rとパラメータKs.r(ベクタ値)が入力されて乗算されブレンドされる。そして、演算器OP10から、乗算結果tex(R).r・パラメータKs.rがカラーデータCrとしてクロスバー回路13125に転送される。
演算器OP13には、テクスチャのG(緑)成分tex(R).gとパラメータKs.g(ベクタ値)が入力されて乗算されブレンドされる。そして、演算器OP13から、乗算結果tex(R).g・パラメータKs.gがカラーデータCgとしてクロスバー回路13125に転送される。
演算器OP16には、テクスチャのB(青)成分tex(R).bとパラメータKs.b(ベクタ値)が入力されて乗算されブレンドされる。そして、演算器OP16から、乗算結果tex(R).b・パラメータKs.bがカラーデータCbとしてクロスバー回路13125に転送される。
【0129】
次に、グラフィックス処理におけるいわゆる依存テクスチャ無しの場合の演算処理例について図23に関連付けて説明する。
【0130】
この場合、スカラ演算部13122Aの演算器OP1〜OP9は用いられず、ベクタ演算部13122Bの演算器OP10,OP13,OP16が乗算器として機能するように再構成される。
【0131】
ベクタ演算部13122Bにおいて、演算器OP10には、テクスチャデータのR(赤)成分texl.rとプライマリカラーPC.rが入力されて乗算される。そして、演算器OP10から、乗算結果texl.r・PC.rがクロスバー回路13125に転送される。
演算器OP13には、テクスチャデータのG(緑)成分texl.gとプライマリカラーPC.gが入力されて乗算される。そして、演算器OP13から、乗算結果texl.g・PC.gがクロスバー回路13125に転送される。
演算器OP16には、テクスチャデータのB(青)成分texl.BとプライマリカラーPC.Bが入力されて乗算される。そして、演算器OP16から、乗算結果texl.b・PC.bがクロスバー回路13125に転送される。
【0132】
図24は、ピクセルエンジン(PXE)13122の第2の構成例、およびレジスタユニット(RGU)13124、クロスバー回路13125との接続例を示す図である。
【0133】
図24のピクセルエンジン(PXE)13122は、2または3入力MACを基本とした対称構造を実現可能な複数(図24の例では16個)の演算器OP1〜OP4,OP5〜OP8,演算器OP9〜OP12,OP13〜OP16を有し、演算器4個を1つの演算器群として4つの演算器群OPGRP1〜OPGRP4が、クロスバー回路(IXB)13125を挟んで対称な配置となるように構成されている。
具体的には、図24中、クロスバー回路13125の左側に、演算器群OPGRP1およびOPGRP2が配置され、これと対称となるように、クロスバー回路13125の右側に演算器群OPGRP3およびOPGRP4が配置されている。
【0134】
この場合も、図11のピクセルエンジンの場合と同様に、各演算器OP1〜OP16の構成を個別に制御可能であり、ここでは、演算器およびクロスバー回路13125の切り替え制御系についての説明は省略する。
図24の構成によれば、スカラ演算、3次ベクタ演算、4次ベクタ演算の比率変動に対処可能である。
【0135】
図24に示すように、演算器群OPGRP1〜OPGRP4内の各演算器OP1〜OP4,OP5〜OP8,OP9〜OP12,OP13〜OP16の2本の入力は、レジスタユニット(RGU)13124のFIFOレジスタFREGと直結している。
そして、各演算器OP1〜OP16の出力は、クロスバー回路13125に接続されている。
【0136】
図24の例では、演算器群OPGRP1においては、演算器OP1の出力がフォワーディングパスにより演算器OP2〜OP4の3入力にそれぞれ接続されている。同様に、演算器OP2の出力がフォワーディングパスにより演算器OP3,OP4の3入力にそれぞれ接続されている。演算器OP3の出力がフォワーディングパスにより演算器OP4の3入力にそれぞれ接続されている。
演算器群OPGRP2においては、演算器OP5の出力がフォワーディングパスにより演算器OP6〜OP8の3入力にそれぞれ接続されている。同様に、演算器OP6の出力がフォワーディングパスにより演算器OP7,OP8の3入力にそれぞれ接続されている。演算器OP7の出力がフォワーディングパスにより演算器OP8の3入力にそれぞれ接続されている。
演算器群OPGRP3においては、演算器OP9の出力がフォワーディングパスにより演算器OP10〜OP12の3入力にそれぞれ接続されている。同様に、演算器OP10の出力がフォワーディングパスにより演算器OP11,OP12の3入力にそれぞれ接続されている。演算器OP11の出力がフォワーディングパスにより演算器OP12の3入力にそれぞれ接続されている。
演算器群OPGRP4においては、演算器OP13の出力がフォワーディングパスにより演算器OP14〜OP16の3入力にそれぞれ接続されている。同様に、演算器OP14の出力がフォワーディングパスにより演算器OP15,OP16の3入力にそれぞれ接続されている。演算器OP15の出力がフォワーディングパスにより演算器OP16の3入力にそれぞれ接続されている。
【0137】
ここで、図24のピクセルエンジン13122における動的に再構成された演算回路の演算処理例を図25および図26に関連付けて説明する。
【0138】
まず、グラフィックス処理における依存テクスチャ有りの場合の演算処理例について図25に関連付けて説明する。
【0139】
この場合、上述した切り替え制御系により、演算器群OPGRP1の演算器OP1,OP4が乗算器として機能し、演算器OP2,OP3が乗加算器として機能するように再構成される。
演算器群OPGRP2の演算器OP5,OP6が乗算器として機能し、演算器OP7が減算器として機能するように再構成される。
演算器群OPGRP3の演算器OP9,OP10が乗算器として機能し、演算器OP11が減算器として機能するように再構成される。
演算器群OPGRP4の演算器OP13,OP14が乗算器として機能し、演算器OP15が減算器として機能するように再構成される。
【0140】
演算器群OPGRP1においては、視線ベクトルEおよび法線ベクトルNのx成分E.x,tex(N).xが演算器OP1に入力されて乗算され、この乗算結果E.x・tex(N).xが演算器OP2に入力される。
演算器OP2には、EおよびNのy成分E.y,tex(N).yが入力されて乗算され、この乗算結果E.y・tex(N).yに演算器OP1の乗算結果E.x・tex(N).xが加算され、この加算結果(E.x・tex(N).x+E.y・tex(N).y)が演算器OP3に入力される。
演算器OP3には、EおよびNのz成分E.z,tex(N).zが入力されて乗算され、この乗算結果E.z・tex(N).zに演算器OP2の演算結果(E.x・tex(N).x+E.y・tex(N).y)が加算され、この加算結果(E.x・tex(N).x+E.y・tex(N).y+E.z・tex(N).z)が演算器OP4に入力される。この演算器OP3の演算結果がEとNと内積であり、上述したようにdot(E,tex(N))として表す。
演算器OP4には、定数2が入力され、定数2と演算器OP3の演算結果が乗算され、その乗算結果2×dot(E,tex(N))がクロスバー回路13125に転送され、演算器群OPGRP2の演算器OP6、演算器群OPGRP3の演算器OP10、および演算器群OPGRP4の演算器OP14に入力される。
【0141】
演算器群OPGRP2の演算器OP6には、Nのx成分tex(N).xが入力され演算器OP4の乗算結果2×dot(E,tex(N))にNのx成分tex(N).xが乗算され、この乗算結果2×dot(E,tex(N))×tex(N).xが演算器OP7に入力される。
演算器OP7には、Eのx成分E.xが入力され、演算器OP6の乗算結果2×dot(E,tex(N))×tex(N).xからEのx成分E.xが減算され、この減算結果(2×dot(E,tex(N))×tex(N).x−E.x)が反射ベクトルのx成分Rxとしてクロスバー回路13125に転送される。
【0142】
演算器群OPGRP3の演算器OP10には、Nのy成分tex(N).yが入力され演算器OP4の乗算結果2×dot(E,tex(N))にNのy成分tex(N).yが乗算され、この乗算結果2×dot(E,tex(N))×tex(N).yが演算器OP11に入力される。
演算器OP11には、Eのy成分E.yが入力され、演算器OP10の乗算結果2×dot(E,tex(N))×tex(N).yからEのy成分E.yが減算され、この減算結果(2×dot(E,tex(N))×tex(N).y−E.y)が反射ベクトルのy成分Ryとしてクロスバー回路13125に転送される。
【0143】
演算器群OPGRP4の演算器OP14には、Nのz成分tex(N).zが入力され演算器OP4の乗算結果2×dot(E,tex(N))にNのz成分tex(N).zが乗算され、この乗算結果2×dot(E,tex(N))×tex(N).zが演算器OP15に入力される。
演算器OP15には、Eのz成分E.zが入力され、演算器OP14の乗算結果2×dot(E,tex(N))×tex(N).zからEのz成分E.zが減算され、この減算結果(2×dot(E,tex(N))×tex(N).z−E.z)が反射ベクトルのz成分Rzとしてクロスバー回路13125に転送される。
【0144】
また、演算器群OPGRP2において、演算器OP5には、テクスチャのR(赤)成分tex(R).rとパラメータKs.r(ベクタ値)が入力されて乗算されブレンドされる。そして、演算器OP5から、乗算結果tex(R).r・パラメータKs.rがカラーデータCrとしてクロスバー回路13125に転送される。
演算器群OPGRP3において、演算器OP9には、テクスチャのG(緑)成分tex(R).gとパラメータKs.g(ベクタ値)が入力されて乗算されブレンドされる。そして、演算器OP9から、乗算結果tex(R).g・パラメータKs.gがカラーデータCgとしてクロスバー回路13125に転送される。
演算器群OPGRP4において、演算器OP13には、テクスチャのB(青)成分tex(R).bとパラメータKs.b(ベクタ値)が入力されて乗算されブレンドされる。そして、演算器OP16から、乗算結果tex(R).b・パラメータKs.bがカラーデータCbとしてクロスバー回路13125に転送される。
【0145】
次に、グラフィックス処理における依存テクスチャ無しの場合の演算処理例について図26に関連付けて説明する。
【0146】
この場合、演算器群OPGRP1の演算器OP1が乗算器として機能し、演算器群OPGRP2の演算器OP5が乗算器として機能し、演算器群OPGRP3の演算器OP9が乗算器として機能するように再構成される。
【0147】
演算器群OPGRP1において、演算器OP1には、テクスチャデータのR(赤)成分texl.rとプライマリカラーPC.rが入力されて乗算される。そして、演算器OP1から、乗算結果texl.r・PC.rがクロスバー回路13125に転送される。
演算器群OPGRP2において、演算器OP5には、テクスチャデータのG(緑)成分texl.gとプライマリカラーPC.gが入力されて乗算される。そして、演算器OP5から、乗算結果texl.g・PC.gがクロスバー回路13125に転送される。
演算器群OPGRP3において、演算器OP9には、テクスチャデータのB(青)成分texl.BとプライマリカラーPC.Bが入力されて乗算される。そして、演算器OP9から、乗算結果texl.b・PC.bがクロスバー回路13125に転送される。
【0148】
図27は、ピクセルエンジン(PXE)13122の第3の構成例、およびレジスタユニット(RGU)13124、クロスバー回路13125との接続例を示す図である。
【0149】
図27のピクセルエンジン(PXE)13122が、図24の構成と異なる点は、以下の点にある。
すなわち、クロスバー回路13125の図中左側辺部に沿って演算器群OPGRP1A用のフォワーディング接続回路網FCCN1および演算器群OPGRP2A用のフォワーディング接続回路網FCCN2が配置され、図中右側辺部に沿って演算器群OPGRP3A用のフォワーディング接続回路網FCCN3および演算器群OPGRP4A用のフォワーディング接続回路網FCCN4が配置されている。
さらに、各演算器群OPGRP1A〜OPGRP4Aは、演算器OPと入力段となるレジスタユニット13124の2つのFIFOレジスタFREGを演算器ユニットOPUとして4個並列に配置した形態をとっている。
そして、演算器ユニットOPU1〜OPU4を含む演算器群OPGRP1Aがフォワーディング接続回路網FCCN1の図中上段側に並設され(近接配置され)、演算器ユニットOPU5〜OPU8を含む演算器群OPGRP2Aがフォワーディング接続回路網FCCN2の図中下段側に並設され(近接配置され)、演算器ユニットOPU9〜OPU12を含む演算器群OPGRP3Aがフォワーディング接続回路網FCCN3の図中上段側に並設され(近接配置され)、演算器ユニットOPU13〜OPU16を含む演算器群OPGRP4Aがフォワーディング接続回路網FCCN4の図中下段側に並設されている(近接配置されている)。
【0150】
このように、図27の回路は、クロスバー回路(IXB)13125を挟んで完全な対称構造をとっている。
このようにクロスバー回路13125を中心としてその周辺に4つのフォワーディング接続回路網FCCN1〜FCCN4、並びに演算器群OPGRP1A〜OPGRP4Aを配置することにより、対応する演算器群OPGRP1A〜OPGRP4Aまでの距離を均一に保つことができ、配線領域を整然と並べることができ、平均配線長を短くできる。したがって、配線遅延や配線コストを低減でき、ひいては処理速度を向上を図ることができる。
【0151】
この場合も、図11のピクセルエンジンの場合と同様に、各演算器OP1〜OP16の構成を個別に制御可能であり、ここでは、演算器およびクロスバー回路13125の切り替え制御系についての説明は省略する。
【0152】
演算器群OPGRP1Aにおいて、演算器ユニットOPU1では、クロスバー回路13125からフォワーディング接続回路網FCCN1へ配線された2本の信号線FL11,FL12が2つのFIFOレジスタFREGの入力端に延引され接続されている。2つのFIFOレジスタの出力が演算器OP1の入力端に接続され、演算器OP1の出力がフォワーディング接続回路網FCCN1へ配線された信号線OL11により演算器ユニットOPU2〜OPU4の各演算器OP2〜OP4の1入力端に接続されているとともに、クロスバー回路13125に接続されている。
演算器ユニットOPU2では、クロスバー回路13125からフォワーディング接続回路網FCCN1へ配線された2本の信号線FL13,FL14が2つのFIFOレジスタFREGの入力端に延引され接続されている。2つのFIFOレジスタの出力が演算器OP2の入力端に接続され、演算器OP2の出力がフォワーディング接続回路網FCCN1へ配線された信号線OL12(およびOL11)により演算器ユニットOPU3,OPU4の各演算器OP3,OP4の1入力端に接続されているとともに、クロスバー回路13125に接続されている。演算器ユニットOPU3では、クロスバー回路13125からフォワーディング接続回路網FCCN1へ配線された2本の信号線FL15,FL16が2つのFIFOレジスタFREGの入力端に延引され接続されている。2つのFIFOレジスタの出力が演算器OP3の入力端に接続され、演算器OP3の出力がフォワーディング接続回路網FCCN1へ配線された信号線OL13(およびOL11)により演算器ユニットOPU4の演算器OP4の1入力端に接続されているとともに、クロスバー回路13125に接続されている。
演算器ユニットOPU4では、クロスバー回路13125からフォワーディング接続回路網FCCN1へ配線された2本の信号線FL17,FL18が2つのFIFOレジスタFREGの入力端に延引され接続されている。2つのFIFOレジスタの出力が演算器OP4の入力端に接続され、演算器OP4の出力がフォワーディング接続回路網FCCN1へ配線された信号線OL14によりクロスバー回路13125に接続されている。
【0153】
演算器群OPGRP2Aにおいて、演算器ユニットOPU5では、クロスバー回路13125からフォワーディング接続回路網FCCN2へ配線された2本の信号線FL21,FL22が2つのFIFOレジスタFREGの入力端に延引され接続されている。2つのFIFOレジスタの出力が演算器OP5の入力端に接続され、演算器OP5の出力がフォワーディング接続回路網FCCN2へ配線された信号線OL21により演算器ユニットOPU6〜OPU8の各演算器OP6〜OP8の1入力端に接続されているとともに、クロスバー回路13125に接続されている。
演算器ユニットOPU6では、クロスバー回路13125からフォワーディング接続回路網FCCN2へ配線された2本の信号線FL23,FL24が2つのFIFOレジスタFREGの入力端に延引され接続されている。2つのFIFOレジスタの出力が演算器OP6の入力端に接続され、演算器OP6の出力がフォワーディング接続回路網FCCN2へ配線された信号線OL22(およびOL21)により演算器ユニットOPU7,OPU8の各演算器OP7,OP8の1入力端に接続されているとともに、クロスバー回路13125に接続されている。演算器ユニットOPU7では、クロスバー回路13125からフォワーディング接続回路網FCCN2へ配線された2本の信号線FL25,FL26が2つのFIFOレジスタFREGの入力端に延引され接続されている。2つのFIFOレジスタの出力が演算器OP7の入力端に接続され、演算器OP7の出力がフォワーディング接続回路網FCCN2へ配線された信号線OL23(およびOL21)により演算器ユニットOPU8の演算器OP8の1入力端に接続されているとともに、クロスバー回路13125に接続されている。
演算器ユニットOPU8では、クロスバー回路13125からフォワーディング接続回路網FCCN2へ配線された2本の信号線FL27,FL28が2つのFIFOレジスタFREGの入力端に延引され接続されている。2つのFIFOレジスタの出力が演算器OP8の入力端に接続され、演算器OP8の出力がフォワーディング接続回路網FCCN2へ配線された信号線OL24によりクロスバー回路13125に接続されている。
【0154】
演算器群OPGRP3Aにおいて、演算器ユニットOPU9では、クロスバー回路13125からフォワーディング接続回路網FCCN3へ配線された2本の信号線FL31,FL32が2つのFIFOレジスタFREGの入力端に延引され接続されている。2つのFIFOレジスタの出力が演算器OP9の入力端に接続され、演算器OP9の出力がフォワーディング接続回路網FCCN3へ配線された信号線OL31により演算器ユニットOPU10〜OPU12の各演算器OP11〜OP12の1入力端に接続されているとともに、クロスバー回路13125に接続されている。
演算器ユニットOPU10では、クロスバー回路13125からフォワーディング接続回路網FCCN3へ配線された2本の信号線FL33,FL34が2つのFIFOレジスタFREGの入力端に延引され接続されている。2つのFIFOレジスタの出力が演算器OP10の入力端に接続され、演算器OP10の出力がフォワーディング接続回路網FCCN3へ配線された信号線OL32(およびOL31)により演算器ユニットOPU11,OPU12の各演算器OP11,OP12の1入力端に接続されているとともに、クロスバー回路13125に接続されている。
演算器ユニットOPU11では、クロスバー回路13125からフォワーディング接続回路網FCCN3へ配線された2本の信号線FL35,FL36が2つのFIFOレジスタFREGの入力端に延引され接続されている。2つのFIFOレジスタの出力が演算器OP11の入力端に接続され、演算器OP11の出力がフォワーディング接続回路網FCCN3へ配線された信号線OL33(およびOL31)により演算器ユニットOPU12の演算器OP12の1入力端に接続されているとともに、クロスバー回路13125に接続されている。
演算器ユニットOPU12では、クロスバー回路13125からフォワーディング接続回路網FCCN3へ配線された2本の信号線FL37,FL38が2つのFIFOレジスタFREGの入力端に延引され接続されている。2つのFIFOレジスタの出力が演算器OP12の入力端に接続され、演算器OP12の出力がフォワーディング接続回路網FCCN3へ配線された信号線OL34によりクロスバー回路13125に接続されている。
【0155】
演算器群OPGRP4Aにおいて、演算器ユニットOPU13では、クロスバー回路13125からフォワーディング接続回路網FCCN4へ配線された2本の信号線FL41,FL42が2つのFIFOレジスタFREGの入力端に延引され接続されている。2つのFIFOレジスタの出力が演算器OP13の入力端に接続され、演算器OP13の出力がフォワーディング接続回路網FCCN4へ配線された信号線OL41により演算器ユニットOPU14〜OPU16の各演算器OP14〜OP16の1入力端に接続されているとともに、クロスバー回路13125に接続されている。
演算器ユニットOPU14は、クロスバー回路13125からフォワーディング接続回路網FCCN4へ配線された2本の信号線FL43,FL44が2つのFIFOレジスタFREGの入力端に延引され接続されている。2つのFIFOレジスタの出力が演算器OP14の入力端に接続され、演算器OP14の出力がフォワーディング接続回路網FCCN4へ配線された信号線OL42(およびOL41)により演算器ユニットOPU15,OPU16の各演算器OP15,OP16の1入力端に接続されているとともに、クロスバー回路13125に接続されている。
演算器ユニットOPU15では、クロスバー回路13125からフォワーディング接続回路網FCCN4へ配線された2本の信号線FL45,FL46が2つのFIFOレジスタFREGの入力端に延引され接続されている。2つのFIFOレジスタの出力が演算器OP15の入力端に接続され、演算器OP15の出力がフォワーディング接続回路網FCCN4へ配線された信号線OL43(およびOL41)により演算器ユニットOPU16の演算器OP16の1入力端に接続されているとともに、クロスバー回路13125に接続されている。
演算器ユニットOPU16では、クロスバー回路13125からフォワーディング接続回路網FCCN4へ配線された2本の信号線FL47,FL48が2つのFIFOレジスタFREGの入力端に延引され接続されている。2つのFIFOレジスタの出力が演算器OP16の入力端に接続され、演算器OP16の出力がフォワーディング接続回路網FCCN4へ配線された信号線OL44によりクロスバー回路13125に接続されている。
【0156】
そして、フォワーディング接続回路網FCCN1に配線された信号線FL11、フォワーディング接続回路網FCCN2に配線された信号線FL21、フォワーディング接続回路網FCCN3に配線された信号線FL31、およびフォワーディング接続回路網FCCN4に配線された信号線FL41は同一長さとなるように配線されている。
同様に、フォワーディング接続回路網FCCN1に配線された信号線FL12、フォワーディング接続回路網FCCN2に配線された信号線FL22、フォワーディング接続回路網FCCN3に配線された信号線FL32、およびフォワーディング接続回路網FCCN4に配線された信号線FL42は同一長さとなるように配線されている。
フォワーディング接続回路網FCCN1に配線された信号線FL13、フォワーディング接続回路網FCCN2に配線された信号線FL23、フォワーディング接続回路網FCCN3に配線された信号線FL33、およびフォワーディング接続回路網FCCN4に配線された信号線FL43は同一長さとなるように配線されている。
フォワーディング接続回路網FCCN1に配線された信号線FL14、フォワーディング接続回路網FCCN2に配線された信号線FL24、フォワーディング接続回路網FCCN3に配線された信号線FL34、およびフォワーディング接続回路網FCCN4に配線された信号線FL44は同一長さとなるように配線されている。
フォワーディング接続回路網FCCN1に配線された信号線FL15、フォワーディング接続回路網FCCN2に配線された信号線FL25、フォワーディング接続回路網FCCN3に配線された信号線FL35、およびフォワーディング接続回路網FCCN4に配線された信号線FL45は同一長さとなるように配線されている。
フォワーディング接続回路網FCCN1に配線された信号線FL16、フォワーディング接続回路網FCCN2に配線された信号線FL26、フォワーディング接続回路網FCCN3に配線された信号線FL36、およびフォワーディング接続回路網FCCN4に配線された信号線FL46は同一長さとなるように配線されている。
フォワーディング接続回路網FCCN1に配線された信号線FL17、フォワーディング接続回路網FCCN2に配線された信号線FL27、フォワーディング接続回路網FCCN3に配線された信号線FL37、およびフォワーディング接続回路網FCCN4に配線された信号線FL47は同一長さとなるように配線されている。
フォワーディング接続回路網FCCN1に配線された信号線FL18、フォワーディング接続回路網FCCN2に配線された信号線FL28、フォワーディング接続回路網FCCN3に配線された信号線FL38、およびフォワーディング接続回路網FCCN4に配線された信号線FL48は同一長さとなるように配線されている。
【0157】
さらに、フォワーディング接続回路網FCCN1に配線された信号線OL11、フォワーディング接続回路網FCCN2に配線された信号線OL21、フォワーディング接続回路網FCCN3に配線された信号線OL31、およびフォワーディング接続回路網FCCN4に配線された信号線OL41は同一長さとなるように配線されている。
同様に、フォワーディング接続回路網FCCN1に配線された信号線OL12、フォワーディング接続回路網FCCN2に配線された信号線OL22、フォワーディング接続回路網FCCN3に配線された信号線OL32、およびフォワーディング接続回路網FCCN4に配線された信号線OL42は同一長さとなるように配線されている。
フォワーディング接続回路網FCCN1に配線された信号線OL13、フォワーディング接続回路網FCCN2に配線された信号線OL23、フォワーディング接続回路網FCCN3に配線された信号線OL33、およびフォワーディング接続回路網FCCN4に配線された信号線OL43は同一長さとなるように配線されている。
フォワーディング接続回路網FCCN1に配線された信号線OL14、フォワーディング接続回路網FCCN2に配線された信号線OL24、フォワーディング接続回路網FCCN3に配線された信号線OL34、およびフォワーディング接続回路網FCCN4に配線された信号線OL44は同一長さとなるように配線されている。
【0158】
また、本実施形態においては、たとえば図28に示すように、各演算器群OPGRP1A〜OPGRP4Aは、各演算器ユニットOPU1〜OPU16における2つのFIFOレジスタFREGの入力段、各演算器OP1〜OP16のフォワーディングパスの入力段および出力段に間隙レジスタとして機能するフリップフロップFFを配置し、経路上の伝送をパイプライン化し、高速周波数化を容易にしている。
なお、図28は、図面の簡単化のためフォワーディング接続回路網FCCN1および演算器群OPRP1Aのみを示している。他のフォワーディング接続回路網FCCN2〜FCCN4および演算器群OPRP1A〜OPRP4Aにおいても同様にフリップフロップFFが配置される。
【0159】
また、本実施形態においては、たとえば図29に示すように、フォワーディング接続回路網FCCN1〜FCCN4のクロスバー回路13125から配線された信号線FL11〜FL18,FL21〜FL28,FL31〜FL38,FL41〜FL48、並びに各演算器間並びにクロスバー回路13125へ配線された信号線OL11〜OL14,OL21〜OL28,OL31〜OL38,OL41〜OL48にステージレジスタとしてのフリップフロップFF設けることも可能である。
この場合、フォワーディング接続回路網FCCN1〜FCCN4のステージングは伝播遅延に応じて決定し、スキューマージンを持って行う。
【0160】
図29のような構成により、図中矢印▲1▼で示すように、同一ステージ内にあるセグメントへのフォワードパスのセットアップ、ホールドの確保が容易である。また、図中矢印▲2▼と▲3▼で示すように、セグメントの出入り口と、フォワーディング接続回路網のステージレジスタのスキュー調整は容易である。
また、ピクセルエンジン回路13122のアーキテクチャは、セグメント化されているので、セグメント内は小領域で閉じてスキュー合わせが可能である。
【0161】
また、図30および図31は、クロスバー回路13125を完全クロスバーにより構成した場合の各フォワーディング接続回路網FCCN1〜FCCN4との対応関係を示す図である。
【0162】
図30においては、各フォワーディング接続回路網FCCN1〜FCCN4からのデータの入力段、フォワーディング接続回路網FCCN1とFCCN2、およびフォワーディング接続回路網FCCN3とFCCN4の信号経路境界部にステージレジスタとしてのフリップフロップFFを設けている。
このような構成により、クロスバー回路13125の任意の位置でステージングを行うことが可能となり、クロックスキューを最小化することが容易となり、ストリームデータを的確にかつ高速に処理できる。
【0163】
また、図31においては、図30に比べて、データの入力段を除き、各フォワーディング接続回路網FCCN1、FCCN2、FCCN3、およびFCCN4の信号経路途中(この例では経路半分)境界部にステージレジスタとしてのフリップフロップFFを設けている。
このような構成により、クロックスキューを最小化することがさらに容易となり、ストリームデータをさらに的確にかつ高速に処理できる。
【0164】
本実施形態に係るピクセルエンジン13122は、データドリブンな自律分散制御を行い、各演算器ユニット間の動作の同期は、データに同期した制御信号CTLのみで制御される(疎結合)。これにより、演算器ユニット間でクロックスキューに対し注意を払わなければならない箇所が限定される(削減できる)。
また、データドリブンな動作同期をとっていることから、各演算器ユニットは、演算で参照するFIFOレジスタの出力に有効なデータが揃った時点で演算を行い、データをFIFOからデキューする。
演算で参照するFIFOレジスタの1つでもエンプティの場合には、演算を行わない。この間、他のFIFOレジスタに到達したデータはFIFOレジスタにエンキューされる。
各演算器ユニットに入力されるデータのスループットが変化しなければ、任意の位置で接続回路網をステージングしてもよい。
同一演算器への入力に対する接続回路網上のステージング段数は、接続回路の論理的接続により変化するが、FIFOによって吸収される。
そして、フォーワーディング接続回路網を通るフォワードパスは、セットアップ/ホールドの確保が容易である。
フォーワーディング接続回路網のステージングは、クロックマージンを確保して決める。
フォーワーディング接続回路網のステージが異なるセグメント間のスキュー調整は厳格ではない。
【0165】
ここで、図27のピクセルエンジン13122における動的に再構成された演算回路の演算処理例を図32および図33に関連付けて説明する。
【0166】
まず、グラフィックス処理における依存テクスチャ有りの場合の演算処理例について図32に関連付けて説明する。
【0167】
この場合、上述した切り替え制御系により、演算器群OPGRP1Aの演算器OP1,OP4が乗算器として機能し、演算器OP2,OP3乗加算器として機能するように再構成される。
演算器群OPGRP2Aの演算器OP5,OP6が乗算器として機能し、演算器OP7が減算器として機能するように再構成される。
演算器群OPGRP3Aの演算器OP9,OP10が乗算器として機能し、演算器OP11が減算器として機能するように再構成される。
演算器群OPGRP4Aの演算器OP13,OP14が乗算器として機能し、演算器OP15が減算器として機能するように再構成される。
【0168】
演算器群OPGRP1Aにおいては、視線ベクトルEおよび法線ベクトルNのx成分E.x,tex(N).xが演算器OP1に入力されて乗算され、この乗算結果E.x・tex(N).xが演算器OP2に入力される。
演算器OP2には、EおよびNのy成分E.y,tex(N).yが入力されて乗算され、この乗算結果E.y・tex(N).yに演算器OP1の乗算結果E.x・tex(N).xが加算され、この加算結果(E.x・tex(N).x+E.y・tex(N).y)が演算器OP3に入力される。
演算器OP3には、EおよびNのz成分E.z,tex(N).zが入力されて乗算され、この乗算結果E.z・tex(N).zに演算器OP2の演算結果(E.x・tex(N).x+E.y・tex(N).y)が加算され、この加算結果(E.x・tex(N).x+E.y・tex(N).y+E.z・tex(N).z)が演算器OP4に入力される。この演算器OP3の演算結果がEとNと内積であり、上述したようにdot(E,tex(N))として表す。
演算器OP4には、定数2が入力され、定数2と演算器OP3の演算結果が乗算され、その乗算結果2×dot(E,tex(N))が信号線L14を介してクロスバー回路13125に転送され、各FIFOレジスタFREGを介して演算器群OPGRP2の演算器OP6、演算器群OPGRP3の演算器OP10、および演算器群OPGRP4の演算器OP14にそれぞれ入力される。
【0169】
演算器群OPGRP2Aの演算器OP6には、Nのx成分tex(N).xが入力され演算器OP4の乗算結果2×dot(E,tex(N))にNのx成分tex(N).xが乗算され、この乗算結果2×dot(E,tex(N))×tex(N).xが演算器OP7に入力される。
演算器OP7には、Eのx成分E.xが入力され、演算器OP6の乗算結果2×dot(E,tex(N))×tex(N).xからEのx成分E.xが減算され、この減算結果(2×dot(E,tex(N))×tex(N).x−E.x)が反射ベクトルのx成分Rxとして信号線OL23を介してクロスバー回路13125に転送される。
【0170】
演算器群OPGRP3Aの演算器OP10には、Nのy成分tex(N).yが入力され演算器OP4の乗算結果2×dot(E,tex(N))にNのy成分tex(N).yが乗算され、この乗算結果2×dot(E,tex(N))×tex(N).yが演算器OP11に入力される。
演算器OP11には、Eのy成分E.yが入力され、演算器OP10の乗算結果2×dot(E,tex(N))×tex(N).yからEのy成分L.yが減算され、この減算結果(2×dot(E,tex(N))×tex(N).y−E.y)が反射ベクトルのy成分Ryとして信号線OL33を介してクロスバー回路13125に転送される。
【0171】
演算器群OPGRP4Aの演算器OP14には、Nのz成分tex(N).zが入力され演算器OP4の乗算結果2×dot(E,tex(N))にNのz成分tex(N).zが乗算され、この乗算結果2×dot(E,tex(N))×tex(N).zが演算器OP15に入力される。
演算器OP15には、Eのz成分E.zが入力され、演算器OP14の乗算結果2×dot(E,tex(N))×tex(N).zからEのz成分E.zが減算され、この減算結果(2×dot(E,tex(N))×tex(N).z−E.z)が反射ベクトルのz成分Rzとして信号線OL43を介してクロスバー回路13125に転送される。
【0172】
また、演算器群OPGRP2Aにおいて、演算器OP5には、テクスチャのR(赤)成分tex(R).rとパラメータKs.r(ベクタ値)が入力されて乗算されブレンドされる。そして、演算器OP5から、乗算結果tex(R).r・パラメータKs.rがカラーデータCrとして信号線OL21を介してクロスバー回路13125に転送される。
演算器群OPGRP3において、演算器OP9には、テクスチャのG(緑)成分tex(R).gとパラメータKs.g(ベクタ値)が入力されて乗算されブレンドされる。そして、演算器OP9から、乗算結果tex(R).g・パラメータKs.gがカラーデータCgとして信号線OL31を介してクロスバー回路13125に転送される。
演算器群OPGRP4において、演算器OP13には、テクスチャのB(青)成分tex(R).bとパラメータKs.b(ベクタ値)が入力されて乗算されブレンドされる。そして、演算器OP16から、乗算結果tex(R).b・パラメータKs.bがカラーデータCbとして信号線OL41を介してクロスバー回路13125に転送される。
【0173】
次に、グラフィックス処理における依存テクスチャ無しの場合の演算処理例について図33に関連付けて説明する。
【0174】
この場合、演算器群OPGRP1Aの演算器OP1が乗算器として機能し、演算器群OPGRP2Aの演算器OP5が乗算器として機能し、演算器群OPGRP3Aの演算器OP9が乗算器として機能するように再構成される。
【0175】
演算器群OPGRP1Aにおいて、演算器OP1には、テクスチャデータのR(赤)成分texl.rとプライマリカラーPC.rが入力されて乗算される。そして、演算器OP1から、乗算結果texl.r・PC.rが信号線OL11を介してクロスバー回路13125に転送される。
演算器群OPGRP2Aにおいて、演算器OP5には、テクスチャデータのG(緑)成分texl.gとプライマリカラーPC.gが入力されて乗算される。そして、演算器OP5から、乗算結果texl.g・PC.gが信号線OL21を介してクロスバー回路13125に転送される。
演算器群OPGRP3において、演算器OP9には、テクスチャデータのB(青)成分texl.BとプライマリカラーPC.Bが入力されて乗算される。そして、演算器OP9から、乗算結果texl.b・PC.bが信号線OL31を介してクロスバー回路13125に転送される。
【0176】
以上のように、本実施形態に係るピクセルエンジン13122は、小規模な演算器を疎な結合で結び、いわゆるデーアドリブン方式で動作の同期をとっている。
データドリブン方式では、ある演算器の出力が、次段の演算器の入力に至るのに有するクロックサイクル数の変動に寛容であるので、演算器間のデータ転送に要するクロック数が一様でなくても正常に演算を行うことができる。
したがって、本実施形態に係るピクセルエンジン13122によれば、データドリブン方式で動作の同期をとる方式とすることで、接続回路網上の任意の位置でステージングすることが可能である。
クロックスキューを最小化する必要がある領域を演算器ブロックという小領域内に限定することで、クロックスキューを最小化することが容易となり、高速な演算器ブロックが容易に実現できる。
演算器間の接続は、信号の伝播遅延時間とその電圧、温度、製造プロセスの変動、経年変化、クロストーク、クロックのジッタ、スキュー等を考慮した上でステージングする位置を決定することができる。
マイクロプロセッサ等の場合、高周波数化のためにステージングを増やすと、処理能力の低下要因となるため、ステージング数の決定には細心の注意を要するが、この方式では、容易にステージング数を決定することが可能である。
【0177】
ピクセル演算プロセッサ(POP)群13123は、メモリバンド幅を活かした高並列の演算処理を行う機能ユニットであるPOPを複数、本実施形態ではたとえば図34に示すように、POP0〜POP3の4個を有する。
各POPは、並列に配列されたPOPE(Pixel Operation Processing Element)と呼ばれる複数の演算器を有している。また、メモリに対するアドレス生成機能も有する。
ピクセル演算プロセッサ(POP)群13123とキャッシュ間は広いバンド幅で接続されており、かつメモリアクセスのためのアドレス生成機能を内蔵しているので、演算器の演算能力を最大限引き出すだけのストリームデータの供給が可能である。
【0178】
ピクセル演算プロセッサ(POP)群13123は、グラフィックス処理時には、たとえば以下の処理を行う。
たとえばグラフィックスユニット(GRU)13121から直接的に供給された(s1,t1,lod1),(s2,t2,lod2)の値に基づいて、テクスチャアクセスのための(u,v)アドレス計算を行い、アドレスデータ(ui,vi,lodi)に基づいて4近傍フィルタリングを行うための4近傍の(u,v)座標、すなわち、(u0,v0),(u1,v1),(u2,v2),(u3,v3)を計算してメモリコントローラMCに供給して、メモリモジュール132から所望のテクセルデータをたとえばリードオンリーキャッシュRO$を通して各POPEに読み出す。
また、ピクセル演算プロセッサ(POP)群13123は、係数生成のためのデータ(uf,vf,lodf)に基づいてテクスチャフィルタ係数Kを計算して各POPEに供給する。
そして、ピクセル演算プロセッサ(POP)群13123の各POPにおいて、色データ(TR,TG,TB)および混合値(ブレンド値:TA)を求め、(TR,TG,TB,TA)をクロスバー回路13125、レジスタユニット(RGU)13124を介してピクセルエンジン(PXE)13122に転送する。
【0179】
一方、ピクセル演算プロセッサ(POP)群13123は、画像処理時には、たとえば以下の処理を行う。
ピクセル演算プロセッサ(POP)群13123は、たとえばラスタライザ1311で生成されてレジスタユニット(RGU)13124に設定され、グラフィックスユニット(GRU)13121を素通りしてクロスバー回路13125を介さずに直接的に供給されたソースアドレス(X1s,Y1s)および(X2s,Y2s)に基づいて、たとえばリードオンリーキャッシュRO$および/またはリードライトキャッシュRW$を介して、メモリモジュール132にされている画像データを読み出し、読み出しデータに対して所定の演算処理を行って、演算結果をクロスバー回路13125、レジスタユニット(RGU)13124を介してライトユニットWUに転送する。
【0180】
なお、上述した機能を有するPOPのさらに具体的な構成については、後で詳述する。
【0181】
レジスタユニット(RGU)13124は、コア1312内の各機能ユニットで処理されるストリームデータを格納するFIFO構造のレジスタファイルである。
また、ハードウェアリソースの関係で、DFGを複数のサブDFG(Sub−DFG)に分割して実行しなければならない場合に、サブDFG間の中間値格納バッファとしても機能する。
図12に示すように、レジスタユニット(RGU)13124内のFIFOレジスタFREGの出力と機能ユニットであるピクセルエンジン(PXE)13122、ピクセル演算プロセッサ(POP)群13123の各演算器の入力ポートとは、1対1に対応する。
【0182】
クロスバー回路13125は、コア1312が、DFGに応じて機能ユニット間の接続を替えることにより様々なアルゴリズムに対応可能なように、この接続切り替えを実現する。
上述したように、レジスタユニット(RGU)13124内のFIFOレジスタFREGの出力と機能ユニットの入力ポートは固定で1対1に対応するが、機能ユニットの出力ポートとレジスタユニット(RGU)13124内のFIFOレジスタFREGの入力をクロスバー回路13125で切り替える。
【0183】
図35は、POP(ピクセル演算プロセッサ)とメモリ間の接続形態およびPOPの構成例を示す図である。
なお、図35の例は、各POP(0〜3)は、並列に配列された4個の演算器POPE0〜POPE3を有する場合である。
【0184】
また、本実施形態においては、ローカルモジュール13(−0〜−3)のメモリモジュール132(−0〜−3)には画像データが記憶されるが、ローカルモジュール13(−0〜−3)は、POP(0〜3)とメモリモジュール132間にそれぞれ分割ローカルキャッシュD133(−0〜−3)を有している。
このような構成において、POP0〜3でピクセルレベルの並列演算処理を行う場合、画像データのアクセスには、次の2通りの方法がある。
第1は、メモリモジュール132に格納されている画像データを直接読み出して演算を行う方法である。
第2は、メモリモジュール132に格納されている画像データのうち、演算に必要とされる一部のデータをローカルキャッシュ133に格納し、ローカルキャッシュ133のデータを読み出して演算を行う方法である。
【0185】
本実施形態においては、上述した第2の方法を採用している。
ローカルキャッシュ133は、POP(0〜3)の各POPE0〜POPE3に対応してそれぞれリードオンリーキャッシュRO$0〜RO$3、並びに、リードライトキャッシュRW$0〜RW$3が配置されている。
【0186】
また、ローカルキャッシュ133は、図35に示すように、セレクタSEL1〜SEL12を有する。
セレクタSEL1〜SEL4は、メモリモジュール132の対応するリードラインポートp(0)〜p(3)からの32ビット幅の読み出しデータまたは他のポートからの読み出しデータのいずれかを選択して、リードライトキャッシュRW$0〜RW$3およびセレクタSEL9〜SEL12に出力する。
セレクタSEL5は、POPのPOPE0の演算結果またはライトユニットWUの処理結果のいずれかを選択してリードライトキャッシュRW$0に供給する。
セレクタSEL6は、POPのPOPE1の演算結果またはライトユニットWUの処理結果のいずれかを選択してリードライトキャッシュRW$1に供給する。
セレクタSEL7は、POPのPOPE2の演算結果またはライトユニットWUの処理結果のいずれかを選択してリードライトキャッシュRW$2に供給する。
セレクタSEL8は、POPのPOPE3の演算結果またはライトユニットWUの処理結果のいずれかを選択してリードライトキャッシュRW$3に供給する。
セレクタSEL9は、セレクタSEL1によるデータまたはグローバルモジュール12により転送されたデータのいずれかを選択してリードオンリーキャッシュRO$0に供給する。
セレクタSEL10は、セレクタSEL2によるデータまたはグローバルモジュール12により転送されたデータのいずれかを選択してリードオンリーキャッシュRO$1に供給する。
セレクタSEL11は、セレクタSEL3によるデータまたはグローバルモジュール12により転送されたデータのいずれかを選択してリードオンリーキャッシュRO$2に供給する。
セレクタSEL12は、セレクタSEL4によるデータまたはグローバルモジュール12により転送されたデータのいずれかを選択してリードオンリーキャッシュRO$3に供給する。
【0187】
各POP(0〜3)は、並列に配列された4個の演算器POPE0〜POPE3に加えて第4の機能ユニットとしてのライトユニットWU、フィルタ機能ユニットFFU、出力選択回路OSLC、およびアドレス生成器AGを有している。
【0188】
ライトユニットWUは、グラフィックス処理の場合には、レジスタユニット(RGU)13124からのソースデータ、具体的には色データ(RGB)および混合値データ(A)、並びに奥行きデータ(Z)と、リードライトキャッシュRW$からのデスティネーション色データ(RGB)および混合値データ(A)、並びに奥行きデータ(Z)に基づいて、αブレンディング、各種テスト、ロジカルオペレーションといったグラフィックス処理のピクセル書き込みに必要な演算を行い、演算結果をリードライトキャッシュRW$に書き戻す。
また、ライトユニットWUは、画像処理の場合には、ピクセル演算プロセッサ(POP)群13123による演算結果のデータを、たとえばレジスタユニット(RGU)13124の特定のFIFOレジスタから直接的に入力したデスティネーションアドレス(Xd,Yd)に、リードライトキャッシュRW$を介してメモリモジュール132に格納する。
【0189】
なお、図35の例では、ライトユニットWUを各POPに設けている例を示しているが、一つのPOPのみに設けて複数の分割ローカルキャッシュD133に供給する、あるいは2個のPOPに対して一つを設けて対応する分割ローカルキャッシュD133に供給する、あるいはPOPとは別個に設ける等、種々の態様で構成可能である。
【0190】
フィルタ機能ユニットFFUは、各POPE0〜POPE3にレジスタユニットレジスタ(RGU)13124のFIFOレジスタにセットされる演算用パラメータ、具体的には、レジスタユニット(RGU)13124を介して、あるいはグラフィックスユニット(GRU)13121から直接的に供給された(s,t,lod)の値に基づいて、(u,v)アドレス計算を行い、アドレスデータ(si,ti,lodi)をアドレス生成器AGに出力し、係数生成のためのデータ(sf,tf,lodf)に基づいてテクスチャフィルタ係数Kを算出し、算出したフィルタ係数を対応する各POPE0〜POPE3に供給する。
【0191】
アドレス生成器AGは、フィルタ機能ユニットFFUにより供給されたアドレスデータ(si,ti,lodi)に基づいて4近傍フィルタリングを行うための4近傍の(u,v)座標、すなわち、(u0,v0),(u1,v1),(u2,v2),(u3,v3)を計算し、メモリコントローラMCに供給する。
【0192】
なお、メモリコントローラMCは、リードオンリーキャッシュRO$をグローバルバスから送られるデータのローカルキャッシュとして用いる場合には、(u,v)座標を基に物理アドレスを計算し、キャッシュヒット、グローバルバスへのリクエスト送出、リードオンリーキャッシュRO$フィルなどを行い、リードオンリーキャッシュRO$から対応するPOPにデータを送出させる。
メモリコントローラMCは、リードライトキャッシュRW$をメモリモジュール132への書き込みキャッシュとして用いる場合には、デスティネーションアドレス(Xd,Yd)を基に物理アドレスを計算し、キャッシュ、メモリモジュール132への書き戻し制御を行う。
【0193】
POPE0は、リードオンリーキャッシュRO$0またはリードライトキャッシュRW$0から読み出された32ビット幅のデータおよびフィルタ機能ユニットFFUによる演算パラメータ(たとえばフィルタ係数)を受けて所定の演算(たとえば加算)を行って、演算結果を次段のPOPE1に出力する。また、POPE0は、この所定の演算結果を出力選択回路OSLCに出力する8ビット×4の出力ラインOTL0を有する。
また、POPE0は、クロスバー回路13125を転送され、レジスタユニット(RGU)13124に設定されたデータを受けて所定の演算を行い、この演算結果を分割ローカルキャッシュD133(0)のセレクタSEL5を介してリードライトキャッシュRW$0に出力する。
【0194】
POPE1は、リードオンリーキャッシュRO$1またはリードライトキャッシュRW$1から読み出された32ビット幅のデータおよびフィルタ機能ユニットFFUによる演算パラメータを受けて所定の演算(たとえば加算)を行い、この演算結果とPOPE0により演算結果を加算して次段のPOPE2に出力する。また、POPE1は、この所定の演算結果を出力選択回路OSLCに出力する8ビット×4の出力ラインOTL1を有する。
また、POPE1は、クロスバー回路13125を転送され、レジスタユニット(RGU)13124に設定されたデータを受けて所定の演算を行い、この演算結果を分割ローカルキャッシュD133(0)のセレクタSEL6を介してリードライトキャッシュRW$1に出力する。
【0195】
POPE2は、リードオンリーキャッシュRO$2またはリードライトキャッシュRW$2から読み出された32ビット幅のデータおよびフィルタ機能ユニットFFUによる演算パラメータを受けて所定の演算(たとえば加算)を行い、この演算結果とPOPE1により演算結果を加算して次段のPOPE3に出力する。また、POPE2は、この所定の演算結果を出力選択回路OSLCに出力する8ビット×4の出力ラインOTL2を有する。
また、POPE2は、クロスバー回路13125を転送され、レジスタユニット(RGU)13124に設定されたデータを受けて所定の演算を行い、この演算結果を分割ローカルキャッシュD133(0)のセレクタSEL7を介してリードライトキャッシュRW$2に出力する。
【0196】
POPE3は、リードオンリーキャッシュRO$3またはリードライトキャッシュRW$3から読み出された32ビット幅のデータおよびフィルタ機能ユニットFFUによる演算パラメータを受けて所定の演算(たとえば加算)を行い、この演算結果とPOPE2により演算結果を加算して、この演算結果(一つのPOP内の総計)を8ビット×4の出力ラインOTL3により出力選択回路OSLCに出力する。
また、POPE3は、クロスバー回路13125を転送され、レジスタユニット(RGU)13124に設定されたデータを受けて所定の演算を行い、この演算結果を分割ローカルキャッシュD133(0)のセレクタSEL8を介してリードライトキャッシュRW$3に出力する。
【0197】
図36は、本実施形態に係るPOPE(0〜3)の具体的な構成例を示す回路図である。
本POPEは、図36に示すように、マルチプレクサ(MUX)401〜405、加減算器(addsub)406、乗算器(mul)407、加減算器(addsub)408、および積算レジスタ409を有している。
【0198】
マルチプレクサ401は、レジスタユニット(RGU)13124によるデータ、フィルタ機能ユニットFFUによる演算パラメータ、リードオンリーキャッシュRO$(0〜3)、またはリードライトキャッシュRW$(0〜3)から読み出されたデータのうちの一つを選択して、加減算器406に供給する。
【0199】
マルチプレクサ402は、レジスタユニット(RGU)13124によるデータ、リードオンリーキャッシュRO$(0〜3)、またはリードライトキャッシュRW$(0〜3)から読み出されたデータのうちの一つを選択して、加減算器406に供給する。
【0200】
マルチプレクサ403は、レジスタユニット(RGU)13124によるデータ、フィルタ機能ユニットFFUによる演算パラメータ、リードオンリーキャッシュRO$(0〜3)、またはリードライトキャッシュRW$(0〜3)から読み出されたデータのうちの一つを選択して、乗算器407に供給する。
【0201】
マルチプレクサ404は、前段のPOPE(0〜2)の演算結果または積算レジスタ409の出力データのうちのいずれかを選択して加減算器408に供給する。
【0202】
マルチプレクサ405は、レジスタユニット(RGU)13124によるデータ、フィルタ機能ユニットFFUによる演算パラメータ、リードオンリーキャッシュRO$(0〜3)、またはリードライトキャッシュRW$(0〜3)から読み出されたデータのうちの一つを選択して、加減算器408に供給する。
【0203】
加減算器406は、マルチプレクサ401の選択データとマルチプレクサ402の選択データを加算(減算)して、乗算器407に出力する。
乗算器407は、加減算器406の出力データとマルチプレクサ403の選択データを乗算器して、加減算器408に出力する。
加減算器408は、乗算器407と出力データ、マルチプレクサ404の選択データ、マルチプレクサ405の選択データを加算(減算)して積算レジスタ409に出力する。
そして、積算レジスタ409の保持されたデータが、各POPEの演算結果ととして、出力選択回路OSLCおよび次段のPOPE(1〜3)に出力される。
【0204】
出力選択回路OSLCは、各POPE0〜P0PE3の出力ラインOTL0〜OTL3を転送された演算データのうちのいずれかの演算データを選択して、クロスバー回路13125に出力する機能を有する。
本実施形態では、出力選択回路OSLCは、一つのPOP内の総計を出力するPOPE3の出力ラインOTL3を転送された演算データを選択し、クロスバー回路13125に出力するように構成されている。
クロスバー回路13125に出力された演算データは、レジスタユニット13124に設定され、この設定データがクロスバー回路13125を介さずに直接的にピクセルエンジン13122の所定の演算器に供給される。
【0205】
アドレス生成器AGは、図37に示すように、メモリモジュール132からのデータ転送は、1列(4つのPOP分)同時に行われ、各分割ローカルキャッシュD133(0)〜D133(3)の各リードオンリーキャッシュRO$0〜RO$3またはリードライトキャッシュRW$0〜RW$3へのアクセスは、独立して行われることから、各リードオンリーキャッシュRO$0〜RO$3またはリードライトキャッシュRW$0〜RW$3に、メモリモジュール132のポートp(0)〜p(3)から並列的に読み出されている要素データを、対応するPOPE0〜POPE3に読み出すためのキャッシュアドレスCADR0〜CADR3をそれぞれ生成し、供給する。
アドレス生成器AGは、たとえばPOPE0の演算結果OPR0が、POPE1の演算が終了するタイミングでPOPE1に供給され、POPE1の演算結果(POPE0の演算結果OPR0を加算した結果)OPR1が、POPE2の演算が終了するタイミングでPOPE2に供給され、POPE2の演算結果(POPE1の演算結果OPR1を加算した結果)OPR2が、POPE3の演算が終了するタイミングでPOPE3に供給されるように、各リードオンリーキャッシュRO$0〜RO$3またはリードライトキャッシュRW$0〜RW$3に所定タイミングをずらしてキャッシュアドレスCADR0〜CADR3を供給する。たとえば各POPE0〜POPE3に供給される要素データ数が同じであり、各POPE0〜POPE3で要素データを順に加算して行く場合には、アドレス供給タイミングを1アドレスずつ順にずらしてアドレス供給が行われる。
これにより、ミスのない演算を効率的に行える。すなわち、本実施形態に係るコア1312では、演算効率の向上が図られている。
【0206】
次に、メモリのデータの基づいてピクセル演算プロセッサ群13123で演算処理を行い、さらにピクセルエンジン13122で演算を行う場合の動作を、図38〜図41に関連付けて説明する。
なお、ここでは、図39(A)に示すように、縦16、横16の16×16の16列の要素データについて演算を行う場合を例に説明する。
【0207】
ステップST51
まず、ステップST51において、メモリモジュール(eDRAM)132からローカルキャッシュ133のリードオンリーキャッシュRO$0〜RO$3へ1列(4つのPOP分)同時に転送される。
次に、図40(A),(C),(E),(G)に示すように、アドレス生成器AGにより各キャッシュに独立に、かつ、1POP内のPOPE0〜POPE3に1アドレスずつ順にずらしてキャッシュアドレスCADR0〜CADR3の供給が行われる。
これにより、各POP0〜POP3の各POPE0〜POPE3に16個の要素データが順に読み出される。
【0208】
たとえば分割ローカルキャッシュD133(0)のリードオンリーキャッシュRO$0にキャッシュアドレスCADR00〜CADR0Fが順に与えられ、これに応じてPOP0のPOPE0に1列分のデータ00〜0Fが読み出される。同様に、分割ローカルキャッシュD133(0)のリードオンリーキャッシュRO$1にキャッシュアドレスCADR10〜CADR1Fが順に与えられ、これに応じてPOP0のPOPE1に1列分のデータ10〜1Fが読み出される。分割ローカルキャッシュD133(0)のリードオンリーキャッシュRO$2にキャッシュアドレスCADR20〜CADR2Fが順に与えられ、これに応じてPOP0のPOPE2に1列分のデータ20〜2Fが読み出される。
分割ローカルキャッシュD133(0)のリードオンリーキャッシュRO$3にキャッシュアドレスCADR30〜CADR3Fが順に与えられ、これに応じてPOP0のPOPE3に1列分のデータ30〜3Fが読み出される。
【0209】
分割ローカルキャッシュD133(1)のリードオンリーキャッシュRO$0にキャッシュアドレスCADR40〜CADR4Fが順に与えられ、これに応じてPOP1のPOPE0に1列分のデータ40〜4Fが読み出される。
同様に、分割ローカルキャッシュD133(1)のリードオンリーキャッシュRO$1にキャッシュアドレスCADR50〜CADR5Fが順に与えられ、これに応じてPOP1のPOPE1に1列分のデータ50〜5Fが読み出される。
分割ローカルキャッシュD133(1)のリードオンリーキャッシュRO$2にキャッシュアドレスCADR60〜CADR6Fが順に与えられ、これに応じてPOP1のPOPE2に1列分のデータ60〜6Fが読み出される。
分割ローカルキャッシュD133(1)のリードオンリーキャッシュRO$3にキャッシュアドレスCADR70〜CADR7Fが順に与えられ、これに応じてPOP1のPOPE3に1列分のデータ70〜7Fが読み出される。
【0210】
分割ローカルキャッシュD133(2)のリードオンリーキャッシュRO$0にキャッシュアドレスCADR80〜CADR8Fが順に与えられ、これに応じてPOP2のPOPE0に1列分のデータ80〜8Fが読み出される。
同様に、分割ローカルキャッシュD133(2)のリードオンリーキャッシュRO$1にキャッシュアドレスCADR90〜CADR9Fが順に与えられ、これに応じてPOP2のPOPE1に1列分のデータ90〜9Fが読み出される。
分割ローカルキャッシュD133(2)のリードオンリーキャッシュRO$2にキャッシュアドレスCADRA0〜CADRAFが順に与えられ、これに応じてPOP2のPOPE2に1列分のデータA0〜AFが読み出される。
分割ローカルキャッシュD133(2)のリードオンリーキャッシュRO$3にキャッシュアドレスCADRB0〜CADRBFが順に与えられ、これに応じてPOP2のPOPE3に1列分のデータB0〜BFが読み出される。
【0211】
分割ローカルキャッシュD133(3)のリードオンリーキャッシュRO$0にキャッシュアドレスCADRC0〜CADRCFが順に与えられ、これに応じてPOP3のPOPE0に1列分のデータC0〜CFが読み出される。
同様に、分割ローカルキャッシュD133(3)のリードオンリーキャッシュRO$1にキャッシュアドレスCADRD0〜CADRDFが順に与えられ、これに応じてPOP3のPOPE1に1列分のデータD0〜DFが読み出される。
分割ローカルキャッシュD133(3)のリードオンリーキャッシュRO$2にキャッシュアドレスCADRE0〜CADREFが順に与えられ、これに応じてPOP3のPOPE2に1列分のデータE0〜EFが読み出される。
分割ローカルキャッシュD133(3)のリードオンリーキャッシュRO$3にキャッシュアドレスCADRF0〜CADRFFが順に与えられ、これに応じてPOP3のPOPE3に1列分のデータF0〜FFが読み出される。
【0212】
ステップST52
ステップST52において、各POP(0〜3)の各POPE0〜POPE3で、1要素が1列分(16個)加算される。
具体的には、POP0のPOPE0では、図40(B)に示すように、データ00〜0Fが順次に加算され、演算結果OPR0がPOPE1に出力される。
POP0のPOPE1では、図40(D)に示すように、データ10〜1Fが順次に加算される。
POP0のPOPE2では、図40(F)に示すように、データ20〜2Fが順次に加算される。
POP0のPOPE3では、図40(H)に示すように、データ30〜3Fが順次に加算される。
他のPOP1〜POP3においても同様に行われる。
【0213】
ステップST53
ステップST53においては、各POP(0〜3)の各POPE0〜POPE3の演算結果が加算され、16×4要素の加算結果を得る。
具体的には、図40(B),(D)に示すように、POP0のPOPE0の演算結果OPR0がPOPE1に出力される。
POP0のPOPE1では、図40(D),(F)に示すように、自身の演算結果に、POP0のPOPE0の演算結果OPR0が加算され、その演算結果OPR1がPOPE2に出力される。
POP0のPOPE2では、図40(F),(H)に示すように、自身の演算結果に、POP0のPOPE1の演算結果OPR1が加算され、その演算結果OPR2がPOPE3に出力される。
そして、POP0のPOPE3では、図40(H)に示すように、自身の演算結果に、POP0のPOPE2の演算結果OPR2が加算され、その演算結果OPR3が出力選択回路OSLCに出力される。
他のPOP1〜POP3においても同様に行われる。
【0214】
ステップST54
ステップST54においては、各POP0〜POP3の出力選択回路OSLCから総演算結果OPR3がクロスバー回路13125を介してレジスタユニット(RGU)13124に転送される。
たとえば図41に示すように、POP0のPOPE3の総演算結果OPR3は、クロスバー回路13125を経由してレジスタユニット(RGU)13124のFIFOレジスタFREG1に格納される。
POP1のPOPE3の総演算結果OPR3は、クロスバー回路13125を経由してレジスタユニット(RGU)13124のFIFOレジスタFREG2に格納される。
POP2のPOPE3の総演算結果OPR3は、クロスバー回路13125を経由してレジスタユニット(RGU)13124のFIFOレジスタFREG3に格納される。
POP3のPOPE3の総演算結果OPR3は、クロスバー回路13125を経由してレジスタユニット(RGU)13124のFIFOレジスタFREG4に格納される。
【0215】
ステップST55
ステップST55においては、レジスタユニット(RGU)13124のFIFOレジスタFREG1およびFREG2にセットされたPOP0とPOP1の総演算結果が、ピクセルエンジン(PXE)13122の第1の加算器ADD1で加算され、この演算結果がクロスバー回路13125を介してレジスタユニット(RGU)13124のFIFOレジスタFREG5に格納される。
また、レジスタユニット(RGU)13124のFIFOレジスタFREG3およびFREG4にセットされたPOP2とPOP3の総演算結果が、ピクセルエンジン(PXE)13122の第2の加算器ADD2で加算され、この演算結果がクロスバー回路13125を介してレジスタユニット(RGU)13124のFIFOレジスタFREG6に格納される。
そして、レジスタユニット(RGU)13124のFIFOレジスタFREG5およびFREG6にセットされた第1および第2の加算器ADD1,ADD2の演算結果が、ピクセルエンジン(PXE)13122の第3の加算器ADD3で加算される。
【0216】
ステップST56
ステップST56では、図40(P)に示すように、ピクセルエンジン(PXE)13122の第3の加算器ADD3の加算結果が一連の演算結果として出力される。
【0217】
図42は、本実施形態に係る処理ユニットにおけるコアのピクセルエンジン(PXE)13122、ピクセル演算プロセッサ(POP)群13123、レジスタユニット(RGU)13124、並びにメモリ部分を含む動作概要を示す図である。
【0218】
図42において、破線はアドレス系データの流れを、一点鎖線はリードデータの流れを、実線はライトデータの流れをそれぞれ示している。
また、レジスタユニット(RGU)13124において、FREGA1,FREGA2はアドレス系に用いられるFIFOレジスタを、FREGRはリードデータに用いられるFIFOレジスタを、FREGWはライトデータに用いられるFIFOレジスタをそれぞれ示している。
【0219】
図42の例では、ラスタライザ1311によって生成されるたとえばソース(読み出し用)アドレスデータが、クロスバー回路13125を介してレジスタユニット(RGU)13124のFIFOレジスタFREGA1,FREGA2にセットされる。
そして、FIFOレジスタFREGA1にセットされたアドレスデータは、たとえばクロスバー回路13125を介さずに直接的にピクセル演算プロセッサ(POP)13123のアドレス生成器AG1に供給される。アドレス生成器AG1において読み出すべきデータのアドレスが生成され、これに基づきメモリモジュール132からリードオンリーキャッシュ1331に読み出された所望のデータがピクセル演算プロセッサ(POP)13123の各演算器(POPE)に供給される。
【0220】
ピクセル演算プロセッサ(POP)13123の各演算器(POPE)の演算結果がクロスバー回路13125を介してレジスタユニット(RGU)13124のFIFOレジスタFREGRにセットされる。
FIFOレジスタFREGRにセットされたデータは、クロスバー回路13125を介さずに直接的にピクセルエンジン(PXE)13122の各演算器OPに供給される。
そして、ピクセルエンジン(PXE)13122の各演算器OPの演算結果がクロスバー回路13125を介してレジスタユニット(RGU)13124のFIFOレジスタFREGWにセットされる。
FIFOレジスタFREGWにセットされたデータは、ピクセル演算プロセッサ(POP)13123の各演算器(POPE)に供給される。
【0221】
また、ラスタライザ1311によって生成されるデスティネーション(書き込み用)アドレスデータが、クロスバー回路13125を介してレジスタユニット(RGU)13124のFIFOレジスタFREGA2にセットされる。
そして、FIFOレジスタFREGA2にセットされたアドレスデータは、クロスバー回路13125を介さず直接的にピクセル演算プロセッサ(POP)13123のアドレス生成器AG2に供給される。アドレス生成器AG2において書き込むべきデータのアドレスが生成され、これに基づきピクセル演算プロセッサ(POP)13123の各演算器(POPE)の演算結果がリードライトキャッシュ1332に書き込まれ、さらにメモリモジュール132に書き込まれる。
【0222】
なお、図42の例では、リードライトキャッシュ1332は書き込みだけを行うように記述しているが、上述したリードオンリーキャッシュ1331の場合と同様な動作で読み出しも行う。
【0223】
次に、以上の構成を有する処理ユニット131(−0〜−3)におけるグラフィックス処理および画像処理の場合の具体的な動作を図面に関連付けて説明する。
【0224】
まず、依存テクスチャ無しの場合のグラフィックス処理を図43および図44に関連付けて説明する。
【0225】
この場合、ラスタライザ1311において、グローバルモジュール12からブロードキャストされたパラメータデータを受けて、たとえば三角形が自分が担当する領域であるか否かが判断され、担当領域である場合には、入力した三角形頂点データに基づいて、各ピクセルデータが生成されてコア1312に供給される。
具体的には、ラスタライザ1311において、ウィンドウ座標(X,Y,Z)、プライマリカラー(PC;Rp,Gp,Bp,Ap)、セカンダリカラー(SC;Rs,Gs,Bs,As)、Fog係数(f)、テクスチャ座標や各種ベクトル(V1x,V1y,V1z),(V2x,V2y,V2z)の各種ピクセルデータが生成される。
【0226】
そして、生成されたウィンドウ座標(X,Y,Z)は、レジスタユニット(RGU)13124の特定のFIFOレジスタを通して、直接的にピクセル演算プロセッサ(POP)群13123内に、あるいは別個に設けられたライトユニットWUに供給される。
また、生成された2組のテクスチャ座標データや各種ベクトル(V1x,V1y,V1z),(V2x,V2y,V2z)が、クロスバー回路13125、レジスタユニット(RGU)13124のFIFOレジスタを通してグラフィックスユニット(GRU)12121に供給される。
さらに、生成されたプライマリカラー(PC)、セカンダリカラー(SC)、Fog係数(F)が、クロスバー回路13125、レジスタユニット(RGU)13124のFIFOレジスタを通してピクセルエンジン(PXE)13122に供給される。
【0227】
グラフィックスユニット(GRU)13121では、供給されたテクスチャ座標データや各種ベクトル(V1x,V1y,V1z)、および(V2x,V2y,V2z)に基づいて、パースペクティブコレクション、LOD(Level
of Detail)計算によるミップマップ(MIPMAP)レベルの算出、立方体マップ(CubeMap)の面選択や正規化テクセル座標(s,t)の算出処理が行われる。
そして、グラフィックスユニット(GRU)13121で生成された、たとえば正規化テクセル座標(s,t)およびLODデータ(lod)を含む2組のデータ(s1,t1,lod1),(s2,t2,lod2)が、たとえばクロスバー回路13125を通さず個別の配線を介して直接的にピクセル演算プロセッサ(POP)群13123に供給される。
【0228】
ピクセル演算プロセッサ(POP)群13123では、図44に示すように、フィルタ機能ユニットFFUにおいてグラフィックスユニット(GRU)13121から直接的に供給された(s1,t1,lod1),(s2,t2,lod2)の値に基づいて、テクスチャアクセスのための(u,v)アドレス計算が行われ、アドレスデータ(ui,vi,lodi)がアドレス生成器AGに供給され、係数計算のためにデータ(uf,vf,lodf)が係数生成部COFに供給される。
【0229】
アドレス生成器AGにおいては、アドレスデータ(ui,vi,lodi)を受けて、4近傍フィルタリングを行うための4近傍の(u,v)座標、すなわち、(u0,v0),(u1,v1),(u2,v2),(u3,v3)が計算され、メモリコントローラMCに供給される。
これにより、メモリモジュール132から所望のテクセルデータがたとえばリードオンリーキャッシュRO$を通して、ピクセル演算プロセッサ(POP)群13123の各POPEに読み出される。
また、係数生成器COFでは、データ(uf,vf,lodf)を受けて、テクスチャフィルタ係数K(0〜3)が計算され、ピクセル演算プロセッサ(POP)群13123の対応する各POPEに供給される。
そして、ピクセル演算プロセッサ(POP)群13123の各POPにおいて、色データ(TR,TG,TB)および混合値(ブレンド値:TA)が求められ、2組のデータ(TR1,TG1,TB1,TA1)および(TR2,TG2,TB2,TA2)が、クロスバー回路13125を転送されてレジスタユニット(RGU)13124の所定のFIFOレジスタに設定され、この設定データがクロスバー回路13125を介さずに直接的にピクセルエンジン(PXE)13122に供給される。
【0230】
ピクセルエンジン(PXE)13122では、ピクセル演算プロセッサ(POP)群13123によるデータ(TR1,TG1,TB1,TA1)および(TR2,TG2,TB2,TA2)、並びに、ラスタライザ1311によるプライマリカラー(PC)、セカンダリカラー(SC)、Fog係数(F)に基づいて、たとえばPixel Shaderの演算が行われ、色データ(FR1,FG1,FB1)および混合値(ブレンド値:FA1)が求められ、このデータ(FR1,FG1,FB1,FA1)が、クロスバー回路13125を転送されてレジスタユニット(RGU)13124の所定のFIFOレジスタに設定され、この設定データがクロスバー回路13125を介さずに直接的にピクセル演算プロセッサ(POP)群13123の所定のPOP内あるいは別個に設けられたライトユニットWUに供給される。
【0231】
ライトユニットWUでは、ラスタライザ1311によるウィンドウ座標(X,Y,Z)に基づき、たとえばリードライトキャッシュRW$を通してメモリモジュール132からデスティネーション色データ(RGB)および混合値データ(A)、並びに奥行きデータ(Z)が読み出される。
そして、ライトユニットWUでは、ピクセルエンジン(PXE)13122によるデータ(FR1,FG1,FB1,FA1)、およびリードライトキャッシュRW$を通してメモリモジュール132から読み出しデスティネーション色データ(RGB)および混合値データ(A)、並びに奥行きデータ(Z)に基づいて、αブレンディング、各種テスト、ロジカルオペレーションといったグラフィックス処理のピクセル書き込みに必要な演算が行われ、演算結果がリードライトキャッシュRW$に書き戻される。
【0232】
次に、依存テクスチャ有りの場合のグラフィックス処理を図45および図44に関連付けて説明する。
【0233】
この場合、ラスタライザ1311において、ウィンドウ座標(X,Y,Z)、プライマリカラー(PC;Rp,Gp,Bp,Ap)、セカンダリカラー(SC;Rs,Gs,Bs,As)、Fog係数(f)、テクスチャ座標(V1x,V1y,V1z)の各種ピクセルデータが生成される。
【0234】
そして、生成されたウィンドウ座標(X,Y,Z)は、レジスタユニット(RGU)13124の特定のFIFOレジスタを通して、直接的にピクセル演算プロセッサ(POP)群13124に供給される。
また、生成されたテクスチャ座標(V1x,V1y,V1z)が、クロスバー回路13125、レジスタユニット(RGU)13124のFIFOレジスタを通してグラフィックスユニット(GRU)12121に供給される。
さらに、生成されたプライマリカラー(PC)、セカンダリカラー(SC)、Fog係数(F)が、クロスバー回路13125、レジスタユニット(RGU)13124のFIFOレジスタを通してピクセルエンジン(PXE)13122に供給される。
【0235】
グラフィックスユニット(GRU)13121では、供給されたテクスチャ座標(V1x,V1y,V1z)データに基づいて、パースペクティブコレクション、LOD計算によるミップマップ(MIPMAP)レベルの算出、立方体マップ(CubeMap)の面選択や正規化テクセル座標(s,t)の算出処理が行われる
そして、グラフィックスユニット(GRU)13121で生成された、たとえば正規化テクセル座標(s,t)およびLODデータ(lod)を含む1組のデータ(s1,t1,lod1)が、たとえばクロスバー回路13125を通さず直接的にピクセル演算プロセッサ(POP)群13123に供給される。
【0236】
ピクセル演算プロセッサ(POP)群13123では、図44に示すように、フィルタ機能ユニットFFUにおいてグラフィックスユニット(GRU)13121から直接的に供給された(s1,t1,lod1)の値に基づいて、テクスチャアクセスのための(u,v)アドレス計算が行われ、アドレスデータ(ui,vi,lodi)がアドレス生成器AGに供給され、係数計算のためにデータ(uf,vf,lodf)が係数生成部COFに供給される。
【0237】
アドレス生成器AGにおいては、アドレスデータ(ui,vi,lodi)を受けて、4近傍フィルタリングを行うための4近傍の(u,v)座標、すなわち、(u0,v0),(u1,v1),(u2,v2),(u3,v3)が計算され、メモリコントローラMCに供給される。
これにより、メモリモジュール132から所望のテクセルデータがたとえばリードオンリーキャッシュRO$を通して、ピクセル演算プロセッサ(POP)群13123の各POPEに読み出される。
また、係数生成器COFでは、データ(uf,vf,lodf)を受けて、テクスチャフィルタ係数K(0〜3)が計算され、ピクセル演算プロセッサ(POP)群13123の各POPEに供給される。
そして、ピクセル演算プロセッサ(POP)群13123の各POPにおいて、色データ(TR,TG,TB)および混合値(ブレンド値:TA)が求められ、データ(TR1,TG1,TB1,TA1)が、クロスバー回路13125を転送されてレジスタユニット(RGU)13124の所定のFIFOレジスタに設定され、この設定データがクロスバー回路13125を介さずに直接的にピクセルエンジン(PXE)13122に供給される。
【0238】
ピクセルエンジン(PXE)13122では、ピクセル演算プロセッサ(POP)群13123によるデータ(TR1,TG1,TB1,TA1)、並びに、ラスタライザ1311によるプライマリカラー(PC)、セカンダリカラー(SC)、Fog係数(F)に基づいて、たとえばPixel Shaderの演算が行われ、テクスチャ座標(V2x,V2y,V2z)が生成され、クロスバー回路13125、レジスタユニット(RGU)13124を介してグラフィックスユニット(GRU)13121に供給される。
【0239】
グラフィックスユニット(GRU)13121では、供給されたテクスチャ座標(V2x,V2y,V2z)データに基づいて、パースペクティブコレクション、LOD計算によるミップマップ(MIPMAP)レベルの算出、立方体マップ(CubeMap)の面選択や正規化テクセル座標(s,t)の算出処理が行われる。
そして、グラフィックスユニット(GRU)13121で生成された、たとえば正規化テクセル座標(s,t)およびLODデータ(lod)を含むデータ(s2,t2,lod2)が、たとえばクロスバー回路13125を通さず直接的にピクセル演算プロセッサ(POP)群13123に供給される。
【0240】
ピクセル演算プロセッサ(POP)群13123では、図44に示すように、フィルタ機能ユニットFFUにおいてグラフィックスユニット(GRU)13121から直接的に供給された(s2,t2,lod2)の値に基づいて、テクスチャアクセスのための(u,v)アドレス計算が行われ、アドレスデータ(ui,vi,lodi)がアドレス生成器AGに供給され、係数計算のためにデータ(uf,vf,lodf)が係数生成部COFに供給される。
【0241】
アドレス生成器AGにおいては、アドレスデータ(ui,vi,lodi)を受けて、4近傍フィルタリングを行うための4近傍の(u,v)座標、すなわち、(u0,v0),(u1,v1),(u2,v2),(u3,v3)が計算され、メモリコントローラMCに供給される。
これにより、メモリモジュール132から所望のテクセルデータがたとえばリードオンリーキャッシュRO$を通して、ピクセル演算プロセッサ(POP)群13123の各POPEに読み出される。
また、係数生成器COFでは、データ(uf,vf,lodf)を受けて、テクスチャフィルタ係数K(0〜3)が計算され、ピクセル演算プロセッサ(POP)群13123の各POPEに供給される。
そして、ピクセル演算プロセッサ(POP)群13123の各POPにおいて、色データ(TR,TG,TB)および混合値(ブレンド値:TA)が求められ、データ(TR2,TG2,TB2,TA2)が、クロスバー回路13125を転送されてレジスタユニット(RGU)13124の所定のFIFOレジスタに設定され、この設定データがクロスバー回路13125を介さずに直接的にピクセルエンジン(PXE)13122に供給される。
【0242】
ピクセルエンジン(PXE)13122では、ピクセル演算プロセッサ(POP)群13123によるデータ(TR2,TG2,TB2,TA2)、並びに、ラスタライザ1311によるプライマリカラー(PC)、セカンダリカラー(SC)、Fog係数(F)に基づいて、4近傍補間等の所定のフィルタリング演算処理が行われ、色データ(FR1,FG1,FB1)および混合値(ブレンド値:FA1)が求められ、このデータ(FR1,FG1,FB1,FA1)が、クロスバー回路13125を転送されてレジスタユニット(RGU)13124の所定のFIFOレジスタに設定され、この設定データがクロスバー回路13125を介さずに直接的にピクセル演算プロセッサ(POP)群13123の所定のPOP内あるいは別個に設けられてライトユニットWUに供給される。
【0243】
ライトユニットWUでは、ラスタライザ1311によるウィンドウ座標(X,Y,Z)に基づき、たとえばリードライトキャッシュRW$を通してメモリモジュール132からデスティネーション色データ(RGB)および混合値データ(A)、並びに奥行きデータ(Z)が読み出される。
そして、ライトユニットWUでは、ピクセルエンジン(PXE)13122によるデータ(FR1,FG1,FB1,FA1)、およびリードライトキャッシュRW$を通してメモリモジュール132から読み出しデスティネーション色データ(RGB)および混合値データ(A)、並びに奥行きデータ(Z)に基づいて、αブレンディング、各種テスト、ロジカルオペレーションといったグラフィックス処理のピクセル書き込みに必要な演算が行われ、演算結果がリードライトキャッシュRW$に書き戻される。
【0244】
次に、画像処理について説明する。
【0245】
まず、図46に示すようなSAD(Summed Absolute Difference)処理を行う場合の動作について、図47に関連付けて説明する。
【0246】
SAD処理では、図46(A)に示すような元画像ORIMの1ブロック(X1s,Y1s)に対して、図46(B)に示すような参照画像RFIMの探索矩形領域SRGN内を1ピクセルずつずらしながら、対応ブロックBLK内のSAD(絶対値差)を求めていく。
その中で、SADが最小となるブロックの位置(X2s,y2s)とSAD値を図46(C)に示すように、(Xd,Yd)に格納する。
(X1s,Y1s)はコンテキストとして図示しない上位位置からPOP内のレジスタに設定される。
【0247】
この場合、ラスタライザ1311に対して、たとえばグローバルモジュール12を介して図示しない上位装置から出力された、メモリモジュール132(−0〜−3)から参照画像データを読み出すためのソースアドレスおよび画像処理結果を書き込むためのデスティネーションアドレスの生成に必要なコマンドやデータ、たとえば探索矩形領域SRGNの幅、高さ(Ws,Hs)データ、ブロックサイズ(Wbk,Hbk)データが入力される。
ラスタライザ1311では、入力データに基づいて、メモリモジュール132に格納されている参照画像RFIMのソースアドレス(X2s,Y2s)が生成されるとともに、処理結果をメモリモジュール132に格納するためのデスティネーションアドレス(Xd,Yd)が生成される。
【0248】
生成されたデスティネーションアドレス(Xd,Yd)は、グラフィックス処理時のウィンドウ座標(X,Y,Z)の供給ラインが共用され、レジスタユニット(RGU)13124の特定のFIFOレジスタを通して、直接的にピクセル演算プロセッサ(POP)群13124のライトユニットWUに供給される。
また、生成された参照画像RFIMのソースアドレス(X2s,Y2s)が、クロスバー回路13125、レジスタユニット(RGU)13124のFIFOレジスタを通してグラフィックスユニット(GRU)12121に供給される。ソースアドレス(X2s,Y2s)は、グラフィックスユニット(GRU)12121は素通りして、たとえばクロスバー回路13125を通さず直接的にピクセル演算プロセッサ(POP)群13123に供給される。
【0249】
ピクセル演算プロセッサ(POP)群13123では、供給されたソースアドレス(X1s,Y1s)および(X2s,Y2s)に基づいて、たとえばリードオンリーキャッシュRO$、リードライトキャッシュRW$を介して、メモリモジュール132に格納されている元画像ORIMおよび参照画像RFIMの各データが読み出される。
ここで、元画像ORIMの座標はコトテキストとしてレジスタに設定される。参照画像RFIMの座標は、たとえば4つのPOPそれぞれが担当するサブブロックの座標が与えられる。
そして、ピクセル演算プロセッサ(POP)群13123では、元画像ORIMの1ブロック(X1s,Y1s)に対して、参照画像RFIMの探索矩形領域SRGN内を1ピクセルずつずらしながら、対応サブブロックBLK内のSAD(絶対値差)が随時求められる。
そして、各サブブロックの位置位置(X2s,y2s)と各SAD値が、クロスバー回路13125を転送されてレジスタユニット(RGU)13124の所定のFIFOレジスタに設定され、この設定データがクロスバー回路13125を介さずに直接的にピクセルエンジン(PXE)13122に転送される。
【0250】
ピクセルエンジン(PXE)3122では、ブロック全体のSADが集計され、ブロックの位置(X2s,y2s)とSAD値が、クロスバー回路13125を転送されてレジスタユニット(RGU)13124の所定のFIFOレジスタに設定され、この設定データがクロスバー回路13125を介さずに直接的にライトユニットWUに転送される。
【0251】
ライトユニットWUでは、ピクセルエンジン(PXE)13122によるブロックの位置(X2s,y2s)とSAD値の、ラスタライザ1311によるデスティネーションアドレス(Xd,Yd)への格納処理が行われる。
この場合、たとえば隠面除去(Hidden Surface Removal)を行う機能(Z比較)を用いて、たとえばメモリモジュール132からリードライトキャッシュRW$に読み出されたSAD値とピクセルエンジン(PXE)13122によるSAD値が比較される。
そして、比較の結果、格納されている値よりピクセルエンジン(PXE)13122によるSAD値が小さい場合に、ピクセルエンジン(PXE)13122によるブロックの位置(X2s,y2s)とSAD値がデスティネーションアドレス(Xd,Yd)にリードライトキャッシュRW$を介して書き込まれる(更新される)。
【0252】
次に、図48に示すようなコンボリューションフィルタ(Convolution Filter)処理を行う場合の動作について、図49に関連付けて説明する。
【0253】
コンボリューションフィルタ処理では、図48(A)に示すような対象画像OBIMの各ピクセル(X1s,Y1s)に対して、フィルタカーネルサイズの周辺ピクセルを読み出し、フィルタ係数を乗算したものを足し合わせ、その結果を図48(B)に示すようにデスティネーションアドレス(Xd,Yd)に格納する。
なお、フィルタカーネル係数の格納アドレスは、コンテキストとしてPOP内のレジスタに設定する。
【0254】
この場合、ラスタライザ1311に対して、たとえばグローバルモジュール12を介して図示しない上位装置から出力された、メモリモジュール132(−0〜−3)から画像データ(ピクセルデータ)を読み出すためのソースアドレスおよび画像処理結果を書き込むためのデスティネーションアドレスの生成に必要なコマンドやデータ、たとえばフィルタカーネルサイズデータ(Wk,Hk)が入力される。
ラスタライザ1311では、入力データに基づいて、メモリモジュール132に格納されている対象画像OBIMのソースアドレス(X1s,Y1s)が生成されるとともに、処理結果をメモリモジュール132に格納するためのデスティネーションアドレス(Xd,Yd)が生成される。
【0255】
生成されたデスティネーションアドレス(Xd,Yd)は、グラフィックス処理時のウィンドウ座標(X,Y,Z)の供給ラインが共用され、レジスタユニット(RGU)13124の特定のFIFOレジスタを通して、直接的にピクセル演算プロセッサ(POP)群13124のライトユニットWUに供給される。
また、生成された対象画像OBIMのソースアドレス(X1s,Y1s)が、クロスバー回路13125、レジスタユニット(RGU)13124のFIFOレジスタを通してグラフィックスユニット(GRU)12121に供給される。ソースアドレス(X1s,Y1s)は、グラフィックスユニット(GRU)12121は素通りして、たとえばクロスバー回路13125を通さず直接的にピクセル演算プロセッサ(POP)群13123に供給される。
【0256】
ピクセル演算プロセッサ(POP)群13123では、供給されたソースアドレス(X1s,Y1s)に基づいて、たとえばリードオンリーキャッシュRO$を介して、メモリモジュール132に可能されているカーネルサイズの周辺ピクセルが読み出される。
そして、ピクセル演算プロセッサ(POP)群13123では、所定のフィルタ係数が読み出したデータに掛け合わさ、さらにこれらが足し合わされて、その結果である色データ(R,G,B)および混合値データ(A)を含むデータ(R,G,B,A)がクロスバー回路13125、レジスタユニット(RGU)13124を介してライトユニットWUに転送される。
【0257】
ライトユニットWUでは、ピクセル演算プロセッサ(POP)群13123によるデータが、リードライトキャッシュRW$を介してデスティネーションアドレス(Xd,Yd)に格納される。
【0258】
最後に、図2のシステム構成による動作を説明する。
ここでは、テクスチャ系の処理について説明する。
【0259】
まず、SDC11において、3次元座標、法線ベクトル、テクスチャ座標の各頂点データが入力されると、頂点データに対する演算が行われる。
次に、ラスタライゼーション(Rasterization)に必要な各種パラメータが算出される。
そして、SDC11においては、算出したパラメータが、グローバルモジュール12を介して全ローカルモジュール13−0〜13−3にブロードキャストされる。
この処理において、ブロードキャストされたパラメータは、後述するキャッシュフィルとは別のチャネルを用いて、グローバルモジュール12を介して各ローカルモジュール13−0〜13−3に渡される。ただし、グローバルキャッシュの内容には影響を与えない。
【0260】
各ローカルモジュール13−0〜13−3では、処理ユニット131−0〜131−3において、以下の処理が行われる。
すなわち、処理ユニット131(−0〜3)においては、ブロードキャストされたパラメータを受け取ると、その三角形が自分が担当する領域、たとえば4×4ピクセルの矩形領域単位でインターリーブされた領域に属しているか否かが判断される。その結果、属している場合には、各種データ(Z、テクスチャ座標、カラーなど)がラスタライズされる。
次に、LOD(Level of Detail)計算によるミップマップ(MIPMAP)レベルの算出や、テクスチャアクセスのための(u,v)アドレス計算が行われる。
【0261】
そして、次に、テクスチャの読み出しが行われる。
この場合、各ローカルモジュール13−0〜13−3の処理ユニット131−0〜131−3では、テクスチャリードの際に、まず、ローカルキャッシュ133−0〜133−3のエントリーがチェックされる。
その結果、エントリーがあった場合には、必要なテクスチャデータが読み出される。
必要とするテクスチャデータがローカルキャッシュ133−0〜133−3内に無い場合には、各処理ユニット131−0〜131−3では、グローバルインターフェース134−0〜134−3を通して、グローバルモジュール12に対してローカルキャッシュフィルのリクエストが送出される。
【0262】
グローバルモジュール12においては、要求されたブロックデータがグローバルキャッシュ121−0〜121−3のいずれかにあると判断されると、対応するグローバルキャッシュ121−0〜121−3のいずれかから読み出されて所定のチャネルを通してリクエストを送出したローカルモジュールに送り返される。
【0263】
一方、要求されたブロックデータがグローバルキャッシュ121−0〜121−3のいずれかにもないと判断されると、所望のチャネルのいずれかから当該ブロックを保持するローカルモジュールに対してグローバルキャッシュフィルのリクエストが送られる。
グローバルキャッシュフィルのリクエストを受けたローカルモジュールにおいては、メモリから該当するブロックデータが読み出され、グローバルインターフェースを通してグローバルモジュール12に送出される。
その後、グローバルモジュール12では、ブロックデータが所望のグローバルキャッシュにフィルされるとともに、リクエストを送ってきたローカルモジュールに対して所望のチャネルからデータが送出される。
【0264】
グローバルモジュール12から要求したブロックデータが送られてくると、該当するローカルモジュールでは、ローカルキャッシュが更新され、処理ユニットによりブロックデータが読み出される。
【0265】
次に、ローカルモジュール13−0〜13−3では、読み出されたテクスチャデータと、(u,v)アドレスは算出時に得た小数部を使って4近傍補間などのフィルタリング処理が行われる。
次に、フィルタリング後のテクスチャデータと、ラスタライズ後の各種データを用いて、ピクセル単位の演算が行われる。
そして、ピクセルレベルの処理における各種テストをパスしたピクセルデータを、メモリモジュール132−0〜132−3、たとえば内蔵DRAMメモリ上のフレームバッファおよびZバッファに書き込まれる。
【0266】
以上説明したように、本実施形態によれば、グラフィックス処理時には、グローバルモジュール12からブロードキャストされたパラメータデータを受けて、ウィンドウ座標、プライマリカラー(PC)、セカンダリカラー(SC)、Fog係数(f)、テクスチャ座標等の各種ピクセルデータを生成し、画像処理時には、入力データに基づいて、ソースアドレスを生成するとともに、デスティネーションアドレスを生成するラスタライザ1311と、複数のFIFOレジスタを有するレジスタユニット13124と、上記レジスタユニット13124のFIFOレジスタに設定されたテクスチャ座標に基づいてテクセル座標(s,t)およびLODデータを含むグラフィックスデータ(s,t,l)を生成し、ソースアドレスを素通りさせて出力するグラフィックスユニット13121と、グラフィックス処理時には、グラフィックスデータ(s,t,l)に基づいて所定の演算処理を行い、演算データをクロスバー回路13125を転送させてレジスタユニット13124の所定のレジスタに設定させ、画像処理時には、ソースアドレスに応じた画像データを読み出して所定の画像処理演算を行い、この演算データをクロスバー回路13125を転送させてレジスタユニット13124の所定のレジスタに設定させるピクセル演算プロセッサ13123と、色データに基づいてレジスタに設定されたピクセル演算プロセッサ13123の演算データに対して所定の演算処理を行い、この演算データをクロスバー回路13125を転送させてレジスタユニット13124の所定のレジスタに設定させるピクセルエンジン13122と、グラフィックス処理時には、レジスタに設定されたウィンドウ座標およびピクセルエンジン13122の演算データに基づいてピクセル書き込みに必要な処理を行って、必要に応じて処理結果をメモリに書き込み、画像処理時には、レジスタに設定されたピクセル演算プロセッサ13123の演算データをメモリのデスティネーションアドレスに書き込むライトユニットWUとを設けたので、以下の効果を得ることができる。
【0267】
すなわち、本実施形態によれば、大量の演算器を効率よく利用することが可能で、アルゴリズムの自由度が高く、柔軟性が高く、しかも回路規模の増大、コスト増を招くことなく、複雑な処理を高スループットで処理することができる。
【0268】
また、制御情報を受けて所望の演算器の論理接続と演算内容、およびクロスバー回路を電気的接続を変更することが可能な制御回路301を有し、制御回路301は、現在の制御情報(現制御情報)と、次に行うべき制御に関する情報(次制御情報)の2つを保持し、演算データは、当該演算データが演算に使用する最終データであることが識別可能な制御信号と同期して送られ、制御回路は、最終データであることが識別された場合、現在実行中の演算が完了すると、現制御情報を次制御情報で書き換えるように構成したので、各種演算に対応でき、かつ開発時点で想定されていなかった演算方式にも容易に対応できる利点がある。
【0269】
また、ピクセルエンジン13122は、複数の再構成可能な演算器が複数の演算器群に分割され、各演算器群においては、各演算器がフォワーディングパスにより縦続接続されていることから、必要な接続自由度を確保しながら回路規模を低減することが可能である。
【0270】
また、クロスバー回路13125を中心としてその周辺に4つのフォワーディング接続回路網FCCN1〜FCCN4、並びに演算器群OPGRP1A〜OPGRP4Aを配置し、レジスタの入力段、演算器の出力段、フォワーディング接続回路網FCCN1〜FCCN4の各信号線にレジスタとしてのフリップフロップFFを配置したので、配線距離を均一に保つことができ、配線領域を整然と並べることができ、平均配線長を短くできる。したがって、配線遅延や配線コストを低減でき、また、クロックスキューを容易に最小化することが可能である。
【0271】
また、処理ユニット131(−0〜−3)は、分岐のないデータフローグラフ(Data Flow Graph :DFG)で表現されるアルゴリズムを実行し、DFGのノートとエッジは、演算器や演算ユニットとその接続関係と見ることができることができる。したがって、処理ユニット131(−0〜−3)は、実行するDFGに応じて、演算リソース間の接続を動的に切り替える、いわゆる動的再構成可能なハードウェアであり、演算器で実行する機能やそれらの接続関係が処理ユニットのマイクロプログラムに相当し、ストリームデータの各要素に適用されるDFGは同じであるので、命令発行のバンド幅を低くおさえることができる。
【0272】
また、処理ユニット131(−0〜−3)は、演算機能の指定や演算器間接続の切り替え制御は、データドリブンであり、分散自立型制御といえる。
このような動的スケジューリングを採用することにより、DFGが切り替わる際に、エピローグ/ プロローグのオーバーラップが可能であり、DFGの切り替えのオーバーヘッドを低減することができる。
【0273】
また、DFGの規模が大きくなるとアルゴリズムを内部演算リソースに一度にマッピングすることができなくなる。このような場合には、複数のサブDFG(sub−DFG )に分割する必要がある。
複数のサブDFGに分けて実行する方法として、サブDFG間の中間値をメモリに格納するマルチパス手法があげられる。この方法では、パス数が増大するとメモリバンド幅を消費し性能低下を招く。
処理ユニット131(−0〜−3)は、前述するように演算器や演算ユニット間のストリームデータの受け渡しをFIFO型のレジスタユニット(RGU)を介して行うことから、DFG分割実行時に、このレジスタファイルを介して中間値を渡すことが可能で、マルチパスの回数を低減することができる。
DFGの分割そのものは、コンパイラにより静的に行われるが、分割されたDFGの実行制御はハードウエアが行うのでソフトウエアへの負担が軽いという利点がある。
【0274】
また、本実施形態によれば、メモリバンド幅を活かした高並列の演算処理を行う機能ユニットである複数のPOP0〜POP3を有し、各POPは、並列に配列された演算器POPE0〜POPE3を有し、各POPE0〜POPE3は、キャッシュから読み出された32ビット幅のデータおよびフィルタ機能ユニットFFUによる演算パラメータを受けて所定の演算(たとえば加算)を行って演算結果を次段のPOPEに出力し、次段のPOPEは自身の演算結果に前段の演算結果を加算し、その演算結果を次段のPOPEに出力し、最終段のPOPE3において、全POPE0〜POPE3の演算結果の総和を求め、各POPは、複数のPOPEの演算出力から一つのPOPE3の演算結果のみを選択してクロスバー回路13125に出力する出力選択回路OSLCを有するピクセル演算プロセッサ(POP)群13123を設けたことから、クロスバー回路の小型化を図れ、処理の高速化を図ることができる。
【0275】
さらに、本実施形態では、クロスバー回路13125を転送してレジスタユニット13124のFIFOレジスタに設定したストリームデータをクロスバー回路を通さずに直接的に、グラフィックスユニット(GRU)13121、ピクセルエンジン(PXE)13122、ピクセル演算プロセッサ(POP)群13123、およびライトユニットWUに供給し、また、グラフィックスユニット13121により得られたグラフィックス演算データをクロスバー回路を通さずに特定の配線を介して直接的にピクセル演算プロセッサ(POP)群13123に供給することから、さらにクロスバー回路の簡単化、小型化を図ることができ、また、マルチパス回数を低減でき、ひいては処理のさらなる高速化を図ることができる。
【0276】
また、本実施形態においては、本アーキテクチャを実現する演算処理部としてのコア1312を一つだけ設けた構成を例に説明したが、たとえば図50に示すように、一つのラスタライザ1311に対して複数個のコア1312−1〜1312−nを並列に設ける構成を採用することも可能である。
この場合でも、各コアで実行されるDFGは同一である。
また、複数のコアを設ける構成の並列化の単位としては、たとえばグラフィックス処理の場合には小矩形領域(スタンプ)単位、画像処理の場合にはブロック単位である。この場合、細かい粒度での並列処理を実現できる利点がある。
【0277】
また、本実施形態では、ピクセル演算プロセッサ(POP)群13123とキャッシュ間は広いバンド幅で接続されており、かつメモリアクセスのためのアドレス生成機能を内蔵しているので、演算器の演算能力を最大限引き出すだけのストリームデータの供給が可能である。
【0278】
また、本実施形態では、メモリの近傍に出力データ幅を合わせた形で演算器を高密度に配置し、処理データの規則性を利用していることから、大量の演算を最低限の演算器でしかも簡単構成で実現することができ、ひいてはコスト低減を図れる利点がある。
【0279】
また、本実施形態によれば、SDC11とグローバルモジュール12とがデータの授受を行い、一つのグローバルモジュール12に対して複数個(本実施形態では4個)のローカルモジュール13−0〜13−3が並列に接続されて、複数のローカルモジュール13−0〜13−3で処理データを共有し並列に処理し、グローバルモジュール12はグローバルキャッシュを有し、各ローカルモジュール13−0〜13−3はローカルキャッシュをそれぞれ有し、キャッシュの階層として、4つのローカルモジュール13−0〜13−3が共有するグローバルキャッシュと、各ローカルモジュールがローカルに持つローカルキャッシュの2階層を有することから、複数の処理装置が処理データを共有して並列処理する際に、重複アクセスを低減でき、配線本数の多いクロスバーが不要となる。その結果、設計が容易で、配線コスト、配線遅延を低減できる画像処理装置を実現できる利点がある。
【0280】
また、本実施形態によれば、グローバルモジュール12と各ローカルモジュール13−0〜13−3との配置関係としては、図2に示すように、グローバルモジュール12を中心として各ローカルモジュール13−0〜13−3をその周辺近傍に配置することから、各対応するチャネルブロックとローカルモジュールまでの距離を均一に保つことができ、配線領域を整然と並べることができ、平均配線長を短くできる。したがって、配線遅延や配線コストを低減でき、処理速度の向上を図ることができる利点がある。
【0281】
なお、本実施形態においては、テクスチャデータが内蔵DRAM上にあるケースを例に述べているが、他のケースとして、内蔵DRAMには、カラーデータおよびzデータのみが置かれ、テクスチャデータは外部メモリに置かれることも可能である。この場合には、グローバルキャッシュでミスが発生すると、外部DRAMに対してキャッシュフィル要求が出されることになる。
【0282】
また、上述の説明では、図2の構成、すなわち、一つのグローバルモジュール12に対して複数個(本実施形態では4個)のローカルモジュール13−0〜13−3が並列に接続した画像処理装置10を例に並列処理を行う場合に特化した形態となっているが、図2の構成を一つのクラスタCLSTとして、たとえば図51に示すように、4つのクラスタCLST0〜CLST3をマトリクス状に配置して、各クラスタCLST0〜CLST3のグローバルモジュール12−0〜12−3間でデータの授受を行うように構成することも可能である。
図51の例では、クラスタCLST0のグローバルモジュール12−0とクラスタCLST1のグローバルモジュール12−1とを接続し、クラスタCLST1のグローバルモジュール12−1とクラスタCLST3のグローバルモジュール12−3とを接続し、クラスタCLST3のグローバルモジュール12−3とクラスタCLST2のグローバルモジュール12−2とを接続し、クラスタCLST2のグローバルモジュール12−2とクラスタCLST0のグローバルモジュール12−0とを接続している。
すなわち、複数のクラスタCLST0〜CLST3のグローバルモジュール12−0〜12−3をリング状に接続している。
なお、図51の構成の場合には、一つのSDCからパラメータがCLST0〜CLST3のグローバルモジュール12−0〜12−3にブロードキャストされるように構成することが可能である。
【0283】
このような構成を採用することにより、より精度の高い画像処理を実現でき、また、各クラスタ間の配線も単純に双方向として一系統で接続するので、各クラスタ間の負荷を均一に保つことができ、配線領域を整然と並べることができ、平均配線長を短くできる。したがって、配線遅延や配線コストを低減でき、処理速度の向上を図ることが可能となる。
【0284】
【発明の効果】
以上説明したように、本発明によれば、大量の演算器を効率よく利用することが可能で、アルゴリズムの自由度が高く、柔軟性が高く、しかも回路規模の増大、コスト増を招くことなく、少ない回路規模で実現できる接続網を使用して演算回路を構成することができる。
また、各種演算に対応でき、かつ開発時点で想定されていなかった演算方式にも容易に対応できる利点がある。
【図面の簡単な説明】
【図1】一般的な画像処理装置におけるテクスチャフィルタリングを含む処理手順を説明するための図である。
【図2】本発明に係る画像処理装置の一実施形態を示すブロック構成図である。
【図3】本実施形態に係るストリームデータコントローラ(SDC)の主な処理を説明するためのフローチャートである。
【図4】本実施形態に係るグローバルモジュールの機能を説明するためのフローチャートである。
【図5】本実施形態に係るローカルモジュールにおける処理ユニットのグラフィックス処理を説明するための図である。
【図6】本実施形態に係るテクスチャリード時のローカルモジュールの動作を説明するためのフローチャートである。
【図7】本実施形態に係るローカルモジュールにおける処理ユニットの画像処理を説明するための図である。
【図8】本実施形態に係るローカルモジュールにおけるローカルキャッシュの構成例を示すブロック図である。
【図9】本実施形態に係るローカルキャッシュのメモリコントローラの構成例を示すブロック図である。
【図10】本実施形態に係るローカルモジュールの処理ユニットの具体的な構成例を示すブロック図である。
【図11】本実施形態に係るピクセルエンジンの第1の構成例、およびレジスタユニット(RGU)、クロスバー回路との接続例を示す図である。
【図12】フォワーディングパスの採用により構成を簡略化でき、回路規模を低減できる理由について説明するための図である。
【図13】本実施形態に係るピクセルエンジンの演算器の具体的な構成例を示す回路図である。
【図14】本実施形態に係る演算器およびクロスバー回路の切り替え制御系の一例を示す図である。
【図15】付帯情報としての制御信号の値の変化によりデータの切り替わりを示す具体的な例を示す図である。
【図16】本実施形態に係る演算器およびクロスバー回路の切り替え制御系の他例を示す図である。
【図17】本実施形態に係るデリミタ検出機能を有する制御回路の構成例を示すブロック図である。
【図18】図17のデリミタ検出回路の構成例を示すブロック図である。
【図19】図17のシーケンサの状態遷移例を示す図である。
【図20】図17のシーケンサの各状態によって現制御情報と次制御情報を有効/無効のいずれとして判断するかを示す図である。
【図21】図17のシーケンサの各遷移条件に対応する現制御情報レジスタ、次制御情報レジスタの書き込まれる値、並びに制御情報要求の状態を示す図である。
【図22】図11のピクセルエンジンにおける動的に再構成された演算回路によるテクスチャ依存有りの場合の演算処理例を説明するための図である。
【図23】図11のピクセルエンジンにおける動的に再構成された演算回路によるテクスチャ依存無しの場合の演算処理例を説明するための図である。
【図24】本実施形態に係るピクセルエンジンの第2の構成例、およびレジスタユニット(RGU)、クロスバー回路との接続例を示す図である。
【図25】図24のピクセルエンジンにおける動的に再構成された演算回路によるテクスチャ依存有りの場合の演算処理例を説明するための図である。
【図26】図24のピクセルエンジンにおける動的に再構成された演算回路によるテクスチャ依存無しの場合の演算処理例を説明するための図である。
【図27】本実施形態に係るピクセルエンジンの第3の構成例、およびレジスタユニット(RGU)、クロスバー回路との接続例を示す図である。
【図28】図27の演算器群の演算器ユニットにレジスタとしてのフリップフロップを設けた構成例を示す図である。
【図29】図27のフォワーディング接続回路網にレジスタとしてのフリップフロップを設けた構成例を示す図である。
【図30】図27のクロスバー回路を完全クロスバーにより構成し、レジスタとしてのフリップフロップを設けた場合の各フォワーディング接続回路網との対応関係の一例を示す図である。
【図31】図27のクロスバー回路を完全クロスバーにより構成し、レジスタとしてのフリップフロップを設けた場合の各フォワーディング接続回路網との対応関係の他例を示す図である。
【図32】図27のピクセルエンジンにおける動的に再構成された演算回路によるテクスチャ依存有りの場合の演算処理例を説明するための図である。
【図33】図27のピクセルエンジンにおける動的に再構成された演算回路によるテクスチャ依存無しの場合の演算処理例を説明するための図である。
【図34】本実施形態に係るピクセル演算プロセッサ(POP)群の構成例を示す図である。
【図35】本実施形態に係るPOP(ピクセル演算プロセッサ)とメモリ間の接続形態およびPOPの構成例を示す図である。
【図36】本実施形態に係るPOPEの具体的な構成例を示す回路図である。
【図37】本実施形態に係るメモリからキャッシュへのデータの読み出し形態およびキャッシュから各POPEへのデータを読み出し形態を示す図である。
【図38】本実施形態に係るメモリのデータに基づいてピクセル演算プロセッサ群で演算処理を行い、さらにピクセルエンジンで演算を行う場合の動作を説明するためのフローチャートである。
【図39】本実施形態に係るメモリのデータに基づいてピクセル演算プロセッサ群で演算処理を行い、さらにピクセルエンジンで演算を行う場合の動作を説明するための図である。
【図40】本実施形態に係るメモリのデータに基づいてピクセル演算プロセッサ群で演算処理を行い、さらにピクセルエンジンで演算を行う場合の動作を説明するためのタイミングチャートである。
【図41】本実施形態に係るメモリのデータに基づいてピクセル演算プロセッサ群で演算処理を行い、さらにピクセルエンジンで演算を行う場合の動作を説明するためのブロック図である。
【図42】本実施形態に係る処理ユニットにおけるコアのピクセルエンジン(PXE)、ピクセル演算プロセッサ(POP)、レジスタユニット(RGU)、並びにメモリ部分を含む動作概要を示す図である。
【図43】本実施形態に係る処理ユニットにおける依存テクスチャ無しの場合のグラフィックス処理を説明するための図である。
【図44】本実施形態に係る処理ユニットにおけるグラフィックス処理のピクセル演算プロセッサ(POP)群の具体的な動作を説明するための図である。
【図45】本実施形態に係る処理ユニットにおける依存テクスチャ有りの場合のグラフィックス処理を説明するための図である。
【図46】SAD(Summed Absolute Difference)処理を説明するための図である。
【図47】本実施形態に係る処理ユニットにおけるSAD処理を説明するための図である。
【図48】コンボリューションフィルタ(Convolution Filter)処理を説明するための図である。
【図49】本実施形態に係る処理ユニットにおけるコンボリューションフィルタ処理を説明するための図である。
【図50】本実施形態に係る処理ユニットにおける他の構成例(コアを複数設けた例)を示す図である。
【図51】本発明に係る画像処理装置の他の実施形態を示すブロック構成図である。
【符号の説明】
10,10A…画像処理装置、11…ストリームデータコントローラ(SDC)、12−0〜12−3…グローバルモジュール、121−0〜121−3…グローバルキャッシュ、13−0〜13−3…ローカルモジュール、131−0〜131−3…処理ユニット、132−0〜132−3…メモリモジュール、133−0〜133−3…ローカルキャッシュ、134−0〜134−3…グローバルインターフェース(GAIF)、CLST0〜CLST…クラスタ、1311…ラスタライザ、1312,1312−1〜1312−n…コア、13121…グラフィックスユニット(GRU)、13122…ピクセルエンジン(PXE)、13122A…スカラ演算部、13122B…ベクタ演算部、13123…ピクセル演算プロセッサ(POP)群、13124…レジスタユニット(RGU)、13125…クロスバー回路(IXB)、13126…制御情報供給回路、301…制御回路、302…現制御情報レジスタ、303…次制御情報レジスタ、3011−1,3011−2,・・…デリミタ検出回路(DLMT)、3012…論理和回路、3013…シーケンサ(SEQ)、3014−1,3014−2…セレクタ、FREG…FIFOレジスタ、OP1〜OP18…演算器、OPGRP1〜OPGRP4,OPGRP1A〜OPGRP4A…演算器群、OPU1〜OPU16…演算器ユニット、FCCM1〜FCCN4…フォワーディング接続回路網、FF…フリップフロップ(レジスタ)、POPE0〜3…演算器、OSLC…出力選択回路。
【発明の属する技術分野】
本発明は、複数の処理データを共有して並列処理を行う画像処理装置に関するものである。
【0002】
【従来の技術】
昨今のコンピュータシステムにおける演算速度の向上や描画機能の強化とも相俟って、コンピュータ資源を用いて図形や画像の作成や処理を行う「コンピュータ・グラフィックス(CG)」技術が盛んに研究・開発され、さらに実用化されている。
【0003】
たとえば、3次元グラフィックスは、3次元オブジェクトが所定の光源によって照らされたときの光学現象を数学モデルで表現して、このモデルに基づいてオブジェクト表面に陰影や濃淡を付けたり、さらには模様を貼り付けたりして、よりリアルで3次元的な2次元高精細画像を生成するものである。
このようなコンピュータ・グラフィックスは、科学、工学、製造などの開発分野でのCAD/CAM、その他の各種応用分野においてますます盛んに利用されるようになってきている。
【0004】
3次元グラフィックスは、一般には、フロントエンドとして位置づけられる「ジオメトリ・サブシステム」と、バックエンドとして位置づけられる「ラスタ・サブシステム」とにより構成される。
【0005】
ジオメトリ・サブシステムとは、ディスプレイ・スクリーン上に表示する3次元オブジェクトの位置や姿勢などの幾何学的な演算処理を行う過程のことである。
ジオメトリ・サブシステムでは、一般にオブジェクトは多数のポリゴンの集合体として扱われ、ポリゴン単位で、「座標変換」、「クリッピング」、「光源計算」などの幾何学的な演算処理が行われる。
【0006】
一方、ラスタ・サブシステムは、オブジェクトを構成する各ピクセル(pixel)を塗りつぶす過程のことである。
ラスタライズ処理は、たとえばポリゴンの頂点毎に求められた画像パラメータを基にして、ポリゴン内部に含まれるすべてのピクセルの画像パラメータを補間することによって実現される。
ここで言う画像パラメータには、いわゆるRGB形式などで表される色(描画色)データ、奥行き方向の距離を表すz値などがある。
また、最近の高精細な3次元グラフィクス処理では、遠近感を醸し出すためのf(fog:霧)や、物体表面の素材感や模様を表現してリアリティを与えるテクスチャ(texture)なども、画像パラメータの1つとして含まれている。
【0007】
ここで、ポリゴンの頂点情報からポリゴン内部のピクセルを発生する処理では、よくDDA(Digital Differential Analyzer)と呼ばれる線形補間手法を用いて実行される。
DDAプロセスでは、頂点情報からポリゴンの辺方向へのデータの傾きを求め、この傾きを用いて辺上のデータを算出した後、続いてラスタ走査方向(X方向)の傾きを算出し、この傾きから求めたパラメータの変化分を走査の開始点のパラメータ値に加えていくことで、内部のピクセルを発生していく。
【0008】
従来の3次元グラフィックス用LSIでは、テクスチャフィルタ用の演算機構を有し、2ピクセル×2ピクセル程度の小領域に対してフィルタリング処理を行うことが可能である。
【0009】
【発明が解決しようとする課題】
ところで、従来の画像処理処理では、たとえば2ピクセル×2ピクセルを超える大カーネルのフィルタリング処理を行う場合、マルチパスレンダリング技法を応用するなどして実現され得るが、その場合の処理能力は低い。
また、従来のテクスチャ演算機構を流用する画像処理では、1処理毎に画像データをメモリから読み出す必要があることから、以下に示すような問題が発生する。
すなわち、処理能力を上げようとすると、演算機構とメモリ間のバンド幅を上げるために、大規模なクロスバー状の接続回路網を必要とし、回路規模が大幅に増大する。
また、毎サイクルデータをメモリから読み出すために、メモリとしてDRAM等を使用すると、読み出しアクセスが集中した場合にページブレイクが多発し処理能力が低下する。
【0010】
今後、MPEG/JPEGに代表されるような画像処理や、被写界深度の効果等をもたせたよりリアルな3次元グラフィックス描画を行うためには大規模なフィルタリング処理等、2ピクセル×2ピクセルを超えるカーネルサイズでの画像処理の重要度が増すと予想され、それらの処理を効率良く実行する必要が生じてくる。
【0011】
また、ピクセルレベルでの並列処理の場合、粒度が細かい分、並列処理の効率が良いという利点があり、実際のフィルタリングを含む処理としては図1に示すような手順で行われる。
【0012】
すなわち、DDAパラメータ、たとえばラスタライゼーション(Rasterization)に必要な各種データ(Z、テクスチャ座標、カラーなど)の傾き等のDDAパラメータを算出する(ST1)。
次に、メモリからテクスチャデータを読み出し(ST2)、サブワード再配置処理を行った後(ST3)、クロスバー回路により複数の演算器を含む処理ユニットにグローバル分配する(ST4)。
次に、テクスチャフィルタリング(Texture Filtering)を行う(ST5)。この場合、処理ユニット(演算器)は、読み出されたテクスチャデータと、(u,v)アドレスは算出時に得た小数部を使って4近傍補間などのフィルタリング処理を行う。
次に、ピクセルレベルの処理(Per−Pixel Operation)、具体的には、フィルタリング後のテクスチャデータと、ラスタライズ後の各種データを用いて、ピクセル単位の演算を行う(ST5)。
そして、ピクセルレベルの処理における各種テストをパスしたピクセルデータを、複数のメモリモジュール上のフレームバッファおよびZバッファに描画する(ST6)。
【0013】
ところで、上述した従来の画像処理装置は、通常の画像処理ではなくグラフィックス処理に特化した専用のプロセッサである。
従来、画像処理専用プロセッサとグラフィックス処理専用プロセッサは知られているが、画像処理とグラフィックス処理の機能を合わせ持つ装置を実現する場合には、単純に画像処理専用プロセッサとグラフィックス処理専用プロセッサの各機能ブロックを用いて一つの画像処理装置として構成することが考えられる。しかしながら、単純に両プロセッサを組み合わせただけでは、回路規模が増大し、コスト増を招く等の不利益がある。
【0014】
また、画像処理やグラフィックス処理に特化したプロセッサとしては、たとえばVLIW型メディアプロセッサ(Media Processor )やDSP、あるいはハードワイヤードロジック(Hard−wired Logic)による専用プロセッサが知られている。
【0015】
VLIW型メディアプロセッサやDSPは、命令レベルでの並列化により複数の演算器を効率よく使用することにより処理能力の向上を図るアプローチをとっている。このアプローチは、細かい粒度での分岐制御が可能で、複雑な処理シーケンスを持つプログラムにも柔軟に対応できる。
一方、命令レベルの並列化では、並列度に限界があり、大量の演算器を効率よく利用することには向いていない。
【0016】
ハードワイヤードロジックによる専用プロセッサの代表は、従来型の3次元レンダリングプロセッサ(3D Rendering Processor)である。従来型の3Dレンダリングプロセッサは、処理レーテンシーが問題にならない(Latency Tolerant)点を活かして、固定アルゴリズムを専用ハードウェアによる非常に深いパイプラインで実装することにより、高スループットを達成する。
このアプローチは、演算器間の接続が固定で、配線オーバーヘッドが少ないため対面積性能比が高いが、アルゴリズムの自由度がなく、柔軟性が低いという不利益がある。
すなわち、機能、実行できる演算が固定されているので、多様なアルゴリズムの実行が困難で、また、画素単位の色計算等も困難である。
【0017】
また、従来の3次元グラフィックス用画像処理装置では、演算を実行する回路の構成がLSI製造時点が限定されてしまい、開発時点で想定していない演算方式を適用しようとしても、困難であるか、あるいは不可能である。
【0018】
本発明は、かかる事情に鑑みてなされたものであり、その目的、大量の演算器を効率よく利用することが可能で、アルゴリズムの自由度が高く、柔軟性が高く、しかも回路規模の増大、コスト増を招くことなく演算処理を高速に実現できる画像処理装置を提供することにある。
【0019】
【課題を解決するための手段】
上記目的を達成するため、本発明の第1の観点は、複数の処理データを並列処理する画像処理装置であって、複数のレジスタを有するレジスタユニットと、再構成可能であって、論理接続と演算内容を指定可能であり、上記レジスタユニットの複数のレジスタに対応した複数の演算器を含み、上記レジスタユニットの対応するレジスタに設定された画像に関する処理データに基づいて演算処理を行う機能ユニットと、少なくとも上記レジスタユニットの各レジスタおよび上記機能ユニットの各演算器の出力が接続されたクロスバー回路と、制御情報を受けて所望の上記演算器の論理接続と演算内容、および上記クロスバー回路を電気的接続を変更することが可能な制御回路と、を有し、上記機能ユニットの複数の演算器は、複数の演算器群に分割され、上記クロスバー回路は、上記制御回路の指示に従って、上記画像に関する処理データを上記レジスタユニットの所望の演算器に対応する上記レジスタに入力させ、上記機能ユニットの各演算器の演算結果を他の上記演算器群の演算器に対応する上記レジスタにおよび/または他の処理部に転送する。
【0020】
本発明の第2の観点は、複数のモジュールが処理データを共有して並列処理を行う画像処理装置であって、グローバルモジュールと、グラフィックス処理機能および画像処理機能を有する複数のローカルモジュールと、を有し、上記グローバルモジュールは、上記複数のローカルモジュールが並列に接続され、ローカルモジュールからリクエストを受けると、上記リクエストに応じた当該リクエストを出したローカルモジュールに処理データを出力し、上記複数のローカルモジュールは、複数のレジスタを有するレジスタユニットと、再構成可能であって、論理接続と演算内容を指定可能であり、上記レジスタユニットの複数のレジスタに対応した複数の演算器を含み、上記レジスタユニットの対応するレジスタに設定された画像に関する処理データに基づいて演算処理を行う機能ユニットと、少なくとも上記レジスタユニットの各レジスタおよび上記機能ユニットの各演算器の出力が接続されたクロスバー回路と、制御情報を受けて所望の上記演算器の論理接続と演算内容、および上記クロスバー回路を電気的接続を変更することが可能な制御回路と、を有し、上記機能ユニットの複数の演算器は、複数の演算器群に分割され、上記クロスバー回路は、上記制御回路の指示に従って、上記画像に関する処理データを上記レジスタユニットの所望の演算器に対応する上記レジスタに入力させ、上記機能ユニットの各演算器の演算結果を他の上記演算器群の演算器に対応する上記レジスタにおよび/または他の処理部に転送する。
【0021】
本発明では、上記制御回路は、個々の演算器および接続網の個々の接続点に対応してそれぞれ設けられ、各制御回路は、次に行うべき演算に関する情報を保持し、一連の演算の終了を検出した際に、自動的に次の演算に向けた制御に切り替える。
【0022】
本発明では、上記制御回路は、個々の演算器および接続網の個々の接続点に対応してそれぞれ設けられ、各演算器に対応して設けたれた各制御回路は、次に行うべき演算に関する情報を保持し、一連の演算の終了を検出した際に、自動的に次の演算に向けた制御に切り替え、接続網の個々の接続点に対応して設けられた各制御回路は、次にとるべき接続構成に関する情報を保持し、一連のデータ転送の終了を検出した際に、自動的に接続点を制御の切り替える。
【0023】
本発明では、上記制御回路は、現在の制御情報(現制御情報)と、次に行うべき制御に関する情報(次制御情報)の2つを保持し、演算データは、当該演算データが演算に使用する最終データであることが識別可能な制御信号と同期して送られ、上記制御回路は、最終データであることが識別された場合、現在実行中の演算が完了すると、現制御情報を次制御情報で書き換える。
【0024】
本発明では、上記制御回路は、現在の制御情報(現制御情報)と現在実行中の演算を識別するための情報(現識別情報)と、次に行うべき制御に関する情報(次制御情報)とを保持し、演算データは、当該演算データが演算に使用する最終データであることが識別可能な情報、およびそのデータが一の演算処理に対するもので有効であるが、他の演算処理に対するもので無効であるかを識別可能な情報を示す制御信号と同期して送られ、上記制御回路は、送られてきたデータが、最終データであり、かつ現識別情報で示される演算に対するものであることが識別された場合、現在実行中の演算が完了すると、現制御情報を次制御情報で書き換える。
【0025】
本発明では、演算データは、当該演算データが演算に使用する新しいデータであることが識別可能な情報、およびそのデータが現在の演算処理に対するものであるか、他の演算処理に対するものであるかを識別可能な情報、現制御情報および次制御情報が有効であるか無効であるかを示す制御信号と同期して送られ、上記制御回路は、送られてきたデータが、少なくとも新しいデータであり、かつ現在の演算に対するものであり、有効な処理を行っているものと識別した場合、デリミタとして検出し、上記制御回路は、デリミタ検出の有無に応じて、上記現制御情報と現在実行中の演算を識別するための情報を保持する現制御情報レジスタと、次に行うべき制御に関する情報を保持する次制御情報レジスタとの保持データの制御を行う。
【0026】
本発明では、上記複数の演算器群に含まれる複数の演算器は、フォワーディングパスにより接続されている。
【0027】
本発明では、上記機能ユニットは、スカラ演算を行う第1の演算器群と、ベクタ演算を行う第2の演算器群に分割されている。
本発明では、上記機能ユニットの複数の演算器および上記レジスタユニットのレジスタが、上記クロスバー回路を挟んで対称な関係をもって配置されている。
【0028】
本発明によれば、たとえば画像に関する処理データが制御回路により電気的接続が設定されたクロスバー回路を介してレジスタユニットの所定のレジスタに設定される。
所定のレジスタに保持された画像に関する処理データが、このレジスタに直接的に接続されている所望の演算器群の演算器に入力される。
処理データが入力された演算器は、制御回路により論理接続と演算内容を指定されており、指定に従った演算を行って、たとえばフォワーディングパスを通して次段の演算器に入力される。
たとえばフォワーディングパスを通して前段の演算結果が入力された演算器では、さらに制御回路により指定された演算処理が行われる。
そして、この演算結果がたとえばクロスバー回路に転送される。クロスバー回路に転送された演算結果は、他の演算器群の演算器に対応するレジスタに入力され、あるいは他の処理部に転送される。
演算結果がレジスタに設定された他の演算器群の演算器では、入力演算データに対して制御回路により指定された処理が行われ、その演算結果は、たとえば上述と同様に、フォワーディングパスを通して次段の演算器に入力される。
たとえばフォワーディングパスを通して前段の演算結果が入力された演算器では、さらに制御回路により指定された演算処理が行われる。
そして、この演算結果が制御回路により電気的接続が設定されたクロスバー回路に転送される。
【0029】
【発明の実施の形態】
図2は、本発明に係る画像処理装置の一実施形態を示すブロック構成図である。
【0030】
本実施形態に係る画像処理装置10は、図2に示すように、ストリームデータコントローラ(SDC)11、グローバルモジュール12、および複数のローカルモジュール13−0〜13−3を有している。
【0031】
本画像処理装置10では、SDC11とグローバルモジュール12とがデータの授受を行い、一つのグローバルモジュール12に対して複数個m、本実施形態では4個のローカルモジュール13−0〜13−3が並列に接続されて、複数のローカルモジュール13−0〜13−3で処理データを共有し並列に処理する。そして、テクスチャリード系に関しては、他のローカルモジュールに対するメモリアクセスを必要とするが、グローバルアクセスバスの形態をとる代わりに、ルータとしての機能を有する一つのグローバルモジュール12を介したアクセスを行う。
また、グローバルモジュール12はグローバルキャッシュを有し、各ローカルモジュール13−0〜13−3はローカルキャッシュをそれぞれ有する。
すなわち、本画像処理装置10は、キャッシュの階層として、たとえば4つのローカルモジュール13−0〜13−3が共有するグローバルキャッシュと、各ローカルモジュールがローカルに持つローカルキャッシュの2階層を有する。
【0032】
以下に各構成要素の構成および機能について、図面に関連付けて順を追って説明する。
【0033】
SDC11は、CPUや外部メモリとのデータの授受、並びにグローバルモジュール12とのデータの授受を司るとともに、頂点データに対する演算、各ローカルモジュール13−0〜13−3の処理ユニットにおけるラスタライゼーション(Rasterization)に必要なパラメータの生成等の処理を行う。
【0034】
SDC11における具体的な処理内容は以下の通りである。また、SDC11の処理手順を図3に示す。
【0035】
SDC11は、まず、データが入力されると(ST1)、Per−Vertexオペレーションを行う(ST2)。
この処理においては、3次元座標、法線ベクトル、テクスチャ座標の各頂点データが入力されると、頂点データに対する演算が行われる。代表的な演算としては、物体の変形やスクリーンへの投影などを行う座標変換の演算処理、ライティング(Lighting)の演算処理、クリッピング(Clipping)の演算処理がある。
ここで行われる処理は、いわゆるVertex Shaderの実行に相当する。
【0036】
次に、DDA(Digital Differential Analyzer)パラメータを計算する(ST3)。
この処理では、ラスタライゼーションに必要な各種データ(Z、テクスチャ座標、カラーなど)の傾き等のDDAパラメータを算出する。
【0037】
次に、算出したDDAパラメータをグローバルモジュール12を介して全ローカルモジュール13−0〜13−3にブロードキャストする(ST4)。
この処理において、ブロードキャストされたパラメータは、キャッシュフィルとは別のチャネルを用いて、グローバルモジュール12を介して各ローカルモジュール13−0〜13−3に渡される。ただし、グローバルキャッシュの内容には影響を与えない。
【0038】
グローバルモジュール12は、ルータ機能および全ローカルモジュールで共用するグローバルキャッシュ121を有する。
グローバルモジュール12は、SDC11によるDDAパラメータを並列に接続された全ローカルモジュール13−0〜13−3にブロードキャストする。
【0039】
また、グローバルモジュール12は、たとえばあるローカルモジュールからローカルキャッシュフィル(Local Cache Fill)LCFのリクエストを受けると、図4に示すように、グローバルキャッシュのエントリーをチェックし(ST11)、エントリーがあった場合には(ST12)、要求されたブロックデータを読み出し(ST13)、読み出したデータをリクエストを送出したローカルモジュールに送出し(ST14)、エントリーがなかった場合には(ST12)、当該ブロックデータを保持するターゲットのローカルモジュールに対してグローバルキャッシュフィル(Global Cache Fill)GCFのリクエストを送り(ST15)、その後送られてきたブロックデータでグローバルキャッシュを更新するとともに(ST16,ST17)、ブロックデータを読み出し(ST13)、読み出したデータをローカルキャッシュフィルLDFのリクエストを送ってきたローカルモジュールに対して送出する(ST14)。
【0040】
ローカルモジュール13−0は、処理ユニット131−0、たとえばDRAMからなるメモリモジュール132−0、モジュール固有のローカルキャッシュ133−0、およびグローバルモジュール12とのインターフェースを司るグローバルインターフェース(Global Access Interface:GAIF))134−0を有している。
【0041】
同様に、ローカルモジュール13−1は、処理ユニット131−1、たとえばDRAMからなるメモリモジュール132−1、モジュール固有のローカルキャッシュ133−1、およびグローバルモジュール12とのインターフェースを司るグローバルインターフェース(GAIF)134−1を有している。
ローカルモジュール13−2は、処理ユニット131−2、たとえばDRAMからなるメモリモジュール132−2、モジュール固有のローカルキャッシュ133−2、およびグローバルモジュール12とのインターフェースを司るグローバルインターフェース(GAIF)134−2を有している。
ローカルモジュール13−3は、処理ユニット131−3、たとえばDRAMからなるメモリモジュール132−3、モジュール固有のローカルキャッシュ133−3、およびグローバルモジュール12とのインターフェースを司るグローバルインターフェース(GAIF)134−3を有している。
【0042】
各ローカルモジュール13−0〜13−3は、メモリモジュール132−0〜132−3が所定の大きさ、たとえば4×4の矩形領域単位にインターリーブされており、メモリモジュール132−0と処理ユニット131−0、メモリモジュール132−1と処理ユニット131−1、メモリモジュール132−2と処理ユニット131−2、およびメモリモジュール132−3と処理ユニット131−3は、担当領域は1対1に対応しており、描画系については他のローカルモジュールに対するメモリアクセスが発生しない。
一方、各ローカルモジュール13−0〜13−3は、テクスチャリード系に関しては、他のローカルモジュールに対するメモリアクセスを必要とするが、この場合、グローバルモジュール12を介したアクセスを行う。
【0043】
各ローカルモジュール13−0〜13−3の処理ユニット131−0〜131−3はそれぞれ、画像処理とグラフィックス処理に特徴的な、いわゆるストリーミングデータ処理を高スループットで実行するストリーミングプロセッサである。
【0044】
各ローカルモジュール13−0〜13−3の処理ユニット131−0〜131−3は、たとえばそれぞれ以下のグラフィックス処理および画像処理を行う。
【0045】
まず、処理ユニット131−0〜131−3のグラフィックス処理の概要を図5および図6のフローチャートに関連付けて説明する。
【0046】
処理ユニット131(−0〜−3)は、ブロードキャストされたパラメータデータが入力されると(ST21)、三角形が自分が担当する領域であるか否かを判断し(ST22)、担当領域である場合には、ラスタライゼーションを行う(ST23)。
すなわち、ブロードキャストされたパラメータを受け取ると、その三角形が自分が担当する領域、たとえば4×4ピクセルの矩形領域単位でインターリーブされた領域に属しているか否かを判断し、属している場合には、各種データ(Z、テクスチャ座標、カラーなど)をラスタライズする。この場合、生成単位は、1ローカルモジュール当たり1サイクルで2×2ピクセルである。
【0047】
次に、テクスチャ座標のパースペクティブコレクション(Perspective Correction)を行う(ST24)。また、この処理ステージにはLOD(Level of Detail)計算によるミップマップ(MipMap)レベルの算出や、テクスチャアクセスのための(u,v)アドレス計算も含まれる。
【0048】
次に、テクスチャの読み出しを行う(ST25)。
この場合、各ローカルモジュール13−0〜13−3の処理ユニット131−0〜131−3は、図6に示すように、テクスチャリードの際に、まずは、ローカルキャッシュ133−0〜133−3のエントリーをチェックし(ST31)、エントリーがあった場合には(ST32)、必要なテクスチャデータを読み出す(ST33)。
必要とするテクスチャ・データがローカルキャッシュ133−0〜133−3内に無い場合には、各処理ユニット131−0〜131−3は、グローバルインターフェース134−0〜134−3を通して、グローバルモジュール12に対してローカルキャッシュフィルのリクエストを送る(ST34)。
そして、グローバルモジュール12は、要求されたブロックをリクエストを送出したローカルモジュールに返すが、なかった場合には上述したように(図4に関連付けて説明)、当該ブロックを保持するローカルモジュールに対してグローバルキャッシュフィルのリクエストを送る。その後ブロックデータをグローバルキャッシュにフィルするとともに、リクエストを送ってきたローカルモジュールに対してデータを送出する。
グローバルモジュール12から要求したブロックデータが送られてくると、該当するローカルモジュールは、ローカルキャッシュを更新し(ST35,ST36)、処理ユニットはブロックデータを読み出す(ST33)。
なお、ここでは、最大4テクスチャの同時処理を想定しており、読み出すテクスチャデータの数は、1ピクセルにつき16テクセルである。
【0049】
次に、テクスチャフィルタリング(Texture Filtering)を行う(ST26)。
この場合、処理ユニット133−0〜133−3は、読み出されたテクスチャデータと、(u,v)アドレスを算出時に得た小数部を使って4近傍補間などのフィルタリング処理を行う。
【0050】
次に、ピクセルレベルの処理(Per−Pixel Operation)を行う(ST27)。
この処理においては、フィルタリング後のテクスチャデータと、ラスタライズ後の各種データを用いて、ピクセル単位の演算が行われる。ここで行われる処理は、ピクセルレベルでのライティング(Per−Pixel Lighting)などいわゆるPixel Shaderに相当する。また、それ以外にも以下の処理が含まれる。
すなわち、アルファテスト、シザリング、Zバッファテスト、ステンシルテスト、アルファブレンディング、ロジカルオペレーション、ディザリングの各処理である。
【0051】
そして、ピクセルレベルの処理における各種テストをパスしたピクセルデータを、メモリモジュール132−0〜132−3、たとえば内蔵DRAMメモリ上のフレームバッファおよびZバッファに書き込まれる(ST28:Memory
Write)。
【0052】
次に、処理ユニット131−0〜131−3の画像処理の概要を図7のフローチャートに関連付けて説明する。
【0053】
画像処理を実行する前に、メモリモジュール132(−0〜−3)に画像データがロードされる。
そして、処理ユニット131(−0〜−3)では、画像処理に必要な読み出し(ソース:Source)アドレスおよび書き込み(デスティネーション:Destination)アドレスの生成に必要なコマンドやデータが入力される(ST41)。
そして、処理ユニット131(−0〜−3)において、ソースアドレスおよびデスティネーションアドレスが生成される(ST42)。
次に、ソース画像がメモリモジュール132(−0〜−3)から読み出され、あるいはグローバルモジュール12から供給され(ST43)、たとえばテンプレートマッチング等の所定の画像処理が行われる(ST44)。
そして、必要に応じて所定の演算処理が行われ(ST45)、その結果がメモリモジュール132(−0〜−3)のデスティネーションアドレスで指定された領域に書き込まれる(ST46)。
【0054】
各ローカルモジュール13−0〜13−3のローカルキャッシュ133−0〜133−3は、処理ユニット131−0〜131−3の処理に必要な描画データやテクスチャデータを格納し、処理ユニット131−0〜131−3とのデータの授受、並びにメモリモジュール132−0〜132−3とのデータの授受(書き込み、読み出し)を行う。
【0055】
図8は、各ローカルモジュール13−0〜13−3のローカルキャッシュ133−0〜133−3の構成例を示すブロック図である。
【0056】
ローカルキャッシュ133は、図8に示すように、リードオンリーキャッシュ(RO$)1331、リードライトキャッシュ(RW$)1332、リオーダバッファ(Reorder Buffer:RB)1333、およびメモリコントローラ(MC)1334を含む。
【0057】
リードオンリーキャッシュ1331は、演算処理のソース画像などを読み出すための読み出し専用キャッシュであって、たとえばテクスチャ系データ等の記憶に用いられる。
リードライトキャッシュ1332は、たとえばグラフィックス処理におけるリードモディファイライト(Read Modify Write )に代表される読み出しと書き込みの両方を必要とするオペレーションを実行するためのキャッシュであって、たとえば描画系データの記憶に用いられる。
【0058】
リオーダバッファ1333は、いわゆる待ち合わせバッファであり、ローカルキャッシュに必要なデータがない場合、ローカルキャッシュフィルのリクエストを出したときに、グローバルモジュール12に送られてくるデータの順番が異なる場合があるので、この順番を遵守し、処理ユニット131−0〜131−3に要求順に戻すようにデータの順番を調整する。
【0059】
また、図9は、メモリコントローラ1334のテクスチャ系の構成例を示すブロック図である。
このメモリコントローラ1334は、図9に示すように、4つのキャッシュCSH0〜CSH3に対応するキャッシュコントローラ13340〜13343と、各キャッシュコントローラ13340〜13343から出力されるローカルキャッシュフィルリクエストを調停しグローバルインターフェース134{−0〜3}に出力するアービタ13344と、グローバルインターフェース134{−0〜3}を介して入力したグローバルキャッシュフィルリクエストを受けて、データ転送の制御を行うメモリインターフェース13345を含む。
【0060】
また、キャッシュコントローラ13340〜13343は、4つのピクセルPX0〜PX3それぞれに対応するデータに対して4近傍補間を行う際に必要な各データの2次元アドレスCOuv00〜COuv03、COuv10〜COuv13、COuv20〜COuv23、COuv30〜COuv33を受けてアドレスの競合をチェックし分配するコンフリクトチェッカCC10と、コンフリクトチェッカCC10で分配されたアドレスをチェックしリードオンリーキャッシュ1331にアドレスで示されたデータが存在するか否かを判断するタグ回路TAG10と、キューレジスタQR10を有している。
タグ回路TAG10内は後述するバンクのインターリーブに関するアドレッシングに対応する4つのタグメモリBX10〜BX13を有し、リードオンリーキャッシュ1331に記憶されている。
ブロックデータのアドレスタグを保持するコンフリクトチェッカCC10で分配されたアドレスと上記アドレスタグを比較し、一致したか否かのフラグと前記アドレスをキューレジスタQR10にセットするとともに、一致しなかった場合には前記アドレスをアービタ13344に送出する。
アービタ13344は、キャッシュコントローラ13340〜13343から送出されるアドレスを受けて調停作業を行い、グローバルインターフェース(GAIF)134を介して同時に送出できるリクエストの数に応じてアドレスを選択し、ローカルキャッシュフィルリクエストとしてグローバルインターフェース(GAIF)134に出力する。
グローバルインターフェース(GAIF)134を介して送出されたローカルキャッシュフィルリクエストに対応してグローバルキャッシュ12からデータが送られてくると、リオーダバッファ1333にセットされる。
キャッシュコントローラ13340〜13343は、キューレジスタQRL0の先頭にあるフラグをチェックし、一致したことを示すフラグがセットされていた場合には、キューレジスタQRL0の先頭にあるアドレスに基づいて、リードオンリーキャッシュ1331のデータを読み出し、処理ユニット131に与える。一方、一致したことを示すフラグがセットされていなかった場合には、対応するデータがリオーダバッファ1333にセットされた時点でリオーダバッファ1333から読み出し、キューレジスタQRL0のアドレスに基づいて当該ブロックデータでリードオンリーキャッシュ1331を更新するとともに、処理ユニット131に出力する。
【0061】
次に、メモリモジュールとしてのDRAMと、ローカルキャッシュと、グローバルキャッシュのメモリ容量について説明する。
メモリ容量の関係は、当然のことながらDRAM>グローバルキャッシュ>ローカルキャッシュであるが、その割合については、アプリケーションに依存する。
キャッシュブロックサイズとしては、キャッシュフィル時に下位階層のメモリから読み出すデータサイズに相当する。
DRAMの特性として、ランダムアクセス時には性能が低下するが、同一行(ROW)に属するデータの連続アクセスは速いという点をあげることができる。
【0062】
グローバルキャッシュは、DRAMからデータを読み出す関係上、前記連続アクセスを行う方が性能上好ましい。
したがって、キャッシュブロックのサイズを大きく設定する。
たとえば、グローバルキャッシュのキャッシュブロックのサイズはDRAMマクロの1行分をブロックサイズにすることができる。
【0063】
一方、ローカルキャッシュの場合には、ブロックサイズを大きくすると、キャッシュに入れても、使われないデータの割合が増えることと、下位階層がグローバルキャッシュでDRAMでなく連続アクセスに必要性がないことから、ブロックサイズは小さく設定する。
ローカルキャッシュのブロックサイズとしては、メモリインターリーブの矩形領域のサイズに近い値が適当で、本実施形態の場合、4×4ピクセル分、すなわち512ビットとする。
【0064】
次に、テクスチャ圧縮について説明する。
1ピクセルの処理を行うのに複数のテクスチャデータを必要とするので、テクスチャ読み出しバンド幅がボトルネックになる場合が多いが、これを軽減するためテクスチャを圧縮する方法がよく採用される。
圧縮方法には、いろいろあるが、4×4ピクセルのように小さな矩形領域単位で圧縮/伸長できる方法の場合には、グローバルキャッシュには圧縮されたままのデータを置き、ローカルキャッシュには、伸長後のデータを置くことが好ましい。
【0065】
次に、ローカルモジュール13−0〜13−3の処理ユニット131−0〜131−3の具体的な構成例について説明する。
【0066】
図10は、本実施形態に係るローカルモジュールの処理ユニットの具体的な構成例を示すブロック図である。
【0067】
ローカルモジュール13(−0〜−3)の処理ユニット131(−0〜−3)は、図10に示すように、ラスタライザ(Rasterizer:RSTR)1311およびコア(Core)1312を有している。
これらの構成要素のうち、コア1312が本アーキテクチャの演算処理部として機能し、コア1312はラスタライザ1311によりアドレスや座標等のグラフィックス処理および画像処理のための各種データが供給される。
【0068】
ラスタライザ1311は、グラフィックス処理の場合には、グローバルモジュール12からブロードキャストされたパラメータデータを受けて、たとえば三角形が自分が担当する領域であるか否かを判断し、担当領域である場合には、入力した三角形頂点データに基づいてラスタライゼーションを行い、生成したピクセルデータをコア1312に供給する。
ラスタライザ1311において生成されるピクセルデータには、ウィンドウ座標(X,Y,Z)、プライマリカラー(Primary Color:PC)(Rp,Gp,Bp,Ap)、セカンダリカラー(Secondary Color:SC)(Rs,Gs,Bs,As)、Fog係数(f)、テクスチャ座標、法線ベクトル、視線ベクトル、ライトベクトル((V1x,V1y,V1z),(V2x,V2y,V2z))等の各種データが含まれる。
なお、ラスタライザ1311からコア1312へのデータの供給ラインは、たとえばウィンドウ座標(X,Y,Z)の供給ラインと、他のプライマリカラー(Rp,Gp,Bp,Ap)、セカンダリカラー(Rs,Gs,Bs,As)、Fog係数(f)、テクスチャ座標(V1x,V1y,V1z)、および(V2x,V2y,V2z)の供給ラインとは、異なる配線により形成される。
【0069】
ラスタライザ1311は、画像処理の場合には、たとえばグローバルモジュール12を介して図示しない上位装置から出力された、メモリモジュール132(−0〜−3)から画像データを読み出すためのソースアドレスおよび画像処理結果を書き込むためのデスティネーションアドレスの生成に必要なコマンドやデータ、たとえば探索矩形領域の幅、高さデータ(Ws,Hs)、ブロックサイズデータ(Wbk,Hbk)を入力し、入力データに基づいて、ソースアドレス(X1s,Y1s)および/または(X2s,Y2s)を生成するとともに、デスティネーションアドレス(Xd,Yd)を生成し、コア1312に供給する。
画像処理時のラスタライザ1311からコア1312へのデータの供給ラインは、たとえばデスティネーションアドレス(Xd,Yd)に関してはグラフィックス処理時のウィンドウ座標(X,Y,Z)の供給ラインが共用され、ソースアドレス(X1s,Y1s),(X2s,Y2s)に関してはテクスチャ座標(V1x,V1y,V1z)、および(V2x,V2y,V2z)等の供給ラインが共用される。
【0070】
コア1312は、上述したように、本アーキテクチャの演算処理部として機能し、コア1312はラスタライザ1311により各種データが供給される。
コア1312は、ストリームデータに対して演算処理を行う以下の機能ユニットを有している。
すなわち、コア1312は、第1の機能ユニットとしてのグラフィックスユニット(Graphics Unit :GRU)13121、第3の機能ユニットとしてのピクセルエンジン(Pixel Engine:PXE)13122、および第2の機能ユニットとしてのピクセル演算プロセッサ(Pixel 0peration Processor :POP)群13123を有している。
コア1312は、たとえばデータフローグラフ(Data Flow Graph : DFG)に応じてこれらの機能ユニット間の接続を切り替えることにより様々なアルゴリズムに対応する。
さらに、コア1312は、レジスタユニット(Register Unit :RGU)13124、およびクロスバー回路(Interconnection X−Bar :IXB)13125を有している。また、コア1312は、たとえば後述する制御情報供給回路13126を有する。
【0071】
グラフィックスユニット(GRU)13121は、グラフィックス処理を実行する際に、専用ハードウェアを付加することがコストパフォーマンス上明らかに有利なものをハードワイヤードロジックで実装している機能ユニットである。
グラフィックスユニット13121は、グラフィックス処理に関連するものとして、パースペクティブコレクション(Perspective Correction)、MIPMAPレベル算出等の機能を実装している。
【0072】
グラフィックスユニット13121は、クロスバー回路13125、レジスタユニット(RGU)13124を介してラスタライザ1311により供給されたテクスチャ座標(V1x,V1y,V1z)、および/またはラスタライザ1311またはピクセルエンジン(PXE)13122により供給されたテクスチャ座標(V2x,V2y,V2z)データを入力し、入力データに基づいて、パースペクティブコレクション、LOD(Level of Detail)計算によるミップマップ(MIPMAP)レベルの算出、立方体マップ(Cube Map)の面選択や正規化テクセル座標(s,t)の算出処理を行い、たとえば正規化テクセル座標(s,t)およびLODデータ(lod)を含むグラフィックスデータ(s1,t1,lod1)および/または(s2,t2,lod2)をピクセル演算プロセッサ(POP)群13123に出力する。
なお、グラフィックスユニット13121の出力グラフィックスデータ(s1,t1,lod1),(s2,t2,lod2)は、クロスバー回路13125、レジスタユニット(RGU)13124を通して、あるいは図10中、破線で示すように、別の配線で直接的にピクセル演算プロセッサ(POP)群13123に供給される。
【0073】
第3の機能ユニットとしてのピクセルエンジン(PXE)13122は、ストリームデータ処理を行う機能ユニットであって、内部に複数の演算器を有する。ピクセルエンジン13122は、ピクセル演算プロセッサ(POP)群13123に比べて演算器間の接続自由度が高く、かつ演算器の機能も豊富である。
【0074】
ピクセルエンジン(PXE)13122は、描画対象に関する情報やピクセル演算プロセッサ(POP)群13123における演算結果が、たとえばクロスバー回路13125によりレジスタユニット(RGU)13124の所望のFIFOレジスタに設定された後、クロスバー回路13125を介さず、レジスタユニット(RGU)13124を介して直接的に供給される。
ピクセルエンジン(PXE)13122に入力されるデータとしては、たとえば描画する対象の表面に関する情報(面の方向、色、反射率、模様(テクスチャ)等)、表面にあたる光に関する情報(入射方向、強さなど)、過去の演算結果(演算の中間値)等が一般的である。
【0075】
ピクセルエンジン(PXE)13122は、複数の演算器を有し、たとえば外部からの制御により演算経路を再構成可能な演算ユニットであって、所望の演算を実現するように、内部の演算器間の電気的接続を確立し、レジスタユニット(RGU)13124を介して入力されたデータを、演算器と電気的接続網(インターコネクト)から形成される一連の演算器のデータパスに入力することで演算を行い、演算結果を出力する。
【0076】
すなわち、ピクセルエンジン13122は、再構成可能なデータパスをたとえば複数有し、演算器(加算器、乗算器、乗加算器等)を、電気的な接続網で接続し、複数個の演算器からなる演算回路を構成する。
そして、ピクセルエンジン13122は、このようにして再構成された演算回路に対して、連続してデータを入力し、演算を行うことが可能であり、たとえば2入力1出力の逆二分木状のDFG(データフローグラフ)で表現される演算を、効率よくかつ少ない回路規模で実現できる接続網を使用して演算回路を構成することが可能である。
【0077】
以上の構成を有するピクセルエンジン(PXE)13122は、たとえばグラフィックス処理時に、クロスバー回路13125を介してレジスタユニット(RGU)13124の所望のFIFOレジスタに設定され、FIFOレジスタから直接的に入力されたピクセル演算プロセッサ(POP)群13123における演算結果データ(TR1,TG1,TB1,TA1)および(TR2,TG2,TB2,TA2)、並びに、ラスタライザ1311によりレジスタユニット(RGU)13124の所望のFIFOレジスタに設定され、FIFOレジスタから直接的に入力されたプライマリカラー(PC)、セカンダリカラー(SC)、Fog係数(F)に基づいて、たとえばピクセルシェーダ(Pixel Shader)のような演算を行い、色データ(FR1,FG1,FB1)および混合値(ブレンド値:FA1)を求める。
ピクセルエンジン(PXE)13122は、このデータ(FR1,FG1,FB1,FA1)を、クロスバー回路13125、レジスタユニット(RGU)13124を介して、ピクセル演算プロセッサ(POP)群13123の所定のPOP内あるいは別個に設けられたライトユニットWUに転送する。
【0078】
図11は、ピクセルエンジン(PXE)13122の第1の構成例、およびレジスタユニット(RGU)13124、クロスバー回路13125との接続例を示す図である。
【0079】
このピクセルエンジン(PXE)13122は、図11に示すように、2または3入力MAC(Multiply and Accumulator)を基本とした複数(図11の例では18個)の演算器OP1〜OP9,OP10〜OP18を有し、クロスバー回路(IXB)を挟んで、演算器OP1〜OP9を含む第1の演算器群としてのスカラ演算部13122Aと演算器OP10〜OP18を含む第2の演算器群としてのベクタ演算部13122Bとに分かれた構成を有している。
【0080】
図11に示すように、スカラ演算部13122A内の各演算器OP1〜OP9の2本の入力は、レジスタユニット(RGU)13124のFIFO(First−IN
First−Out) レジスタFREGと直結している。
そして、各演算器OP1〜OP9の出力は、クロスバー回路13125に接続されている。
【0081】
さらに、図11の例では、スカラ演算部13122Aにおいては、演算器OP1の出力がフォワーディングパスにより演算器OP2〜OP9の3入力にそれぞれ接続されている。同様に、演算器OP2の出力がフォワーディングパスにより演算器OP3〜OP9の3入力にそれぞれ接続されている。演算器OP3の出力がフォワーディングパスにより演算器OP4〜OP9の3入力にそれぞれ接続されている。演算器OP4の出力がフォワーディングパスにより演算器OP5〜OP9の3入力にそれぞれ接続されている。演算器OP5の出力がフォワーディングパスにより演算器OP6〜OP9の3入力にそれぞれ接続されている。演算器OP6の出力がフォワーディングパスにより演算器OP7〜OP9の3入力にそれぞれ接続されている。演算器OP7の出力がフォワーディングパスにより演算器OP8,OP9の3入力にそれぞれ接続されている。演算器OP8の出力がフォワーディングパスにより演算器OP9の3入力にそれぞれ接続されている。
【0082】
このような構成を有するスカラ演算部13122Aは、各演算器OP1〜OP9個別に論理接続と演算内容を指定可能であり、高い接続の自由度と演算器の個別制御という特性をいかし、多様なスカラ演算を実行可能に構成されている。
また、スカラ演算部13122Aは、後述するように、ベクタ処理にも使用可能で、スカラ演算、3次/4次ベクタ演算比率の変動に対処可能に構成されている。
【0083】
図11に示すように、ベクタ演算部13122B内の各演算器OP10〜OP18の2本の入力は、レジスタユニット(RGU)13124のFIFOレジスタFREGと直結している。
そして、各演算器OP10〜OP18の出力は、クロスバー回路13125に接続されている。
【0084】
さらに、図11の例では、ベクタ演算部13122Bにおいては、演算器OP10の出力がフォワーディングパスにより演算器OP11,OP12の3入力にそれぞれ接続されている。同様に、演算器OP11の出力がフォワーディングパスにより演算器OP12の3入力にそれぞれ接続されている。
演算器OP13の出力がフォワーディングパスにより演算器OP14,OP15の3入力にそれぞれ接続されている。同様に、演算器OP14の出力がフォワーディングパスにより演算器OP15の3入力にそれぞれ接続されている。
演算器OP16の出力がフォワーディングパスにより演算器OP17,OP18の3入力にそれぞれ接続されている。同様に、演算器OP17の出力がフォワーディングパスにより演算器OP18の3入力にそれぞれ接続されている。
【0085】
このような構成を有するベクタ演算部13122Bにおいて、演算器OP10,OP13,OP16は演算処理が同一内容であり、演算器OP11,OP14,OP17は演算処理が同一内容であり、演算器OP12,OP15,OP18は演算処理が同一内容である。
ベクタ演算部13122Bは、演算器の制御の共通化と、フォワーディングパスを採用することにより構成を簡略化して、回路規模を低減し、かつ、必要な接続自由度を維持しながら回路規模を低減した構成となっている。
【0086】
ここで、フォワーディングパスを採用することにより構成を簡略でき、回路規模を低減できる理由について、図12に関連付けて説明する。
【0087】
3次元コンピュータグラフィックスにおいては、多項の積和演算が多用される。
このとき、たとえば、図12(A)に示すように、乗算、加算を別々な演算器で行う場合、具体的にはN個の乗算器(MUL)とN個の加算器(ADD)を用いて演算を行う構成においては、回路数は〔{乗算器(MUL)の数+加算器(ADD)の数}×(2個のFIFO)〕となり、4N個のFIFOレジスタFREGが必要となる。
また、図12(B)に示すように、N個の3入力乗加算器(MA)を用いて演算を行う構成においては、回路数は〔乗加算器(MA)の数×(3個のFIFO)〕となり、3N個のFIFOレジスタFREGが必要となる。
一方、図12(C)に示すように、N個の3入力乗加算器(MA)およびフォワーディングパスを用いて演算を行う構成においては、回路数は〔乗加算器(MA)の数×(2個のFIFO)〕となり、2N個のFIFOレジスタFREGが必要となる。
すなわち、フォワーディングパスを用いることにより、構成を簡略化でき、回路規模を低減することが可能となる。
【0088】
スカラ演算部13122Aおよびベクタ演算部13122Bを構成する各演算器OP1〜OP9,OP10〜OP18は、上述したように、再構成可能なデータパスをたとえば複数有し、演算器(加算器、乗算器、乗加算器等)を、電気的な接続網で接続し、複数個の演算器からなる演算回路を構成する。
【0089】
スカラ演算部13122Aおよびベクタ演算部13122Bを構成する各演算器OP1〜OP9,OP10〜OP18は、たとえば基本演算として、減算、乗算、加算、およびアキュムレート(Acc)等の演算処理を組み合わせて、たとえば以下の各種演算処理を行う。
【0090】
・(A±B)×C±B、
・(A±B)×C±Acc、
・(A±B)2 ±Acc、
・A±B±C、
・A±B±Acc、
・A×B、
・論理演算(たとえばAND,OR,NOT)、
・ソースオペランドへの定数設定(1〜2個)、
・クランプ(Clamp)/サチュレーション(Saturation)、
・ソースデータの1,2ビット左シフト、
・演算結果の算術1,2,8ビット右シフト。
【0091】
図13は、上記の各種演算処理を行う演算器の具体的な構成例を示す回路図である。
【0092】
演算器200(OP1〜OP18)は、図13に示すように、加減算器201、PPG(Partial Product Generator)/CSA(CarrySave Adder)202、加減算器203、論理演算器204、アキュムレータ205、左シフタ(L−Shift)206、右シフタ(R−Shift)207、クランプ(Clamp)/サチュレーション(Sat)回路208、3入力セレクタ209〜213、4入力セレクタ214,215、および2入力セレクタ216〜220を有している。
【0093】
演算器200内の3入力セレクタ209〜213、4入力セレクタ214,215、および2入力セレクタ216〜220は、たとえばコア1312に存在する図示しない制御レジスタの設定データにより制御される。
この演算器200においては、3入力セレクタ209〜211に対して、対応する2つのFIFOレジスタFREGの出力、前段の演算器(OP1〜OP17)の出力(フォワードパス)データが供給され、演算器200の演算結果であるクランプ(Clamp)/サチュレーション(Sat)回路208の出力がクロスバー回路13125に供給される。
左シフタ(L−Shift)206では、セレクタ212により選択されるパラメータ0,1,2に応じて2n の演算が行われる。また、右シフタ(R−Shift)207では、セレクタ215により選択されるパラメータ0,1,2,8に応じて1/2n の演算が行われる。
3入力セレクタ209の出力は加減算器201および2入力セレクタ219の一方の入力に供給される。3入力セレクタ210の出力は2入力セレクタ216,220、および4入力セレクタ214の第1入力に供給される。3入力セレクタ211の出力は左シフタ(L−Shift)206に供給される。また、2入力セレクタ217の一方の入力に選択データのMSB8ビットが、他方の入力にLSBの8ビットが入力される。セレクタ218の一方の入力のMSBの8ビットにはセレクタ217から出力される8ビットの値が入力され、同入力のLSBの8ビットには、セレクタ211の出力のLSBの8ビットが入力される。
2入力セレクタ216の他方の入力にはパラメータ0が供給され、その出力が加減算器201の他方の入力に供給される。加減算器201の出力は2入力セレクタ218の他方の入力およびPPG/CSA202の一方の入力に供給され、セレクタ218の出力がPPG/CSA202の他方の入力に供給される。PPGは乗算の為の部分積を生成する。この部分積をワラス等で知られるツリー状に構成したCSAで加算していくことで、一方の出力にキャリー出力が出力され、他方の出力にサム出力が出力される。この二つの出力を加減算器203で加算することにより乗算結果が得られる。
PPG/CSA202の一方の出力(キャリー出力)が2入力セレクタ219の他方の入力に供給され、他方の出力が2入力セレクタ220の他方の入力(サム出力)に供給される。
4入力セレクタ214の第2入力にはパラメータ0が供給され、第3入力に左シフタ(L−Shift)206の出力が供給され、第4入力にアキュムレータ205の出力が供給される。
2入力セレクタ219の出力が加減算器203の第1入力および論理演算器204の一方の入力に供給され、2入力セレクタ220の出力が加減算器203の第2入力および論理演算器204の他方の入力に供給され、4入力セレクタ214の出力が加減算器203の第3入力に供給される。
加減算器203の出力がアキュムレータ205および3入力セレクタ213の第1入力に供給され、論理演算器204の出力が3入力セレクタ213の第2入力に供給され、セレクタ213の第3入力にアキュムレータ205の出力が供給される。
そして、セレクタ213の出力が右シフタ(R−Shift)207に供給され、右シフタ(R−Shift)207の出力が(Clamp)/サチュレーション(Sat)回路208に供給される。
【0094】
以上のように、演算器200(OP1〜OP18)は動的に再構成可能に構成されている。
以下に、動的再構築を実現する演算器OP(200)およびクロスバー回路(IXB)13125の切り替え制御系について説明する。
【0095】
図14は、演算器およびクロスバー回路(IXB)の切り替え制御系の一例を示す構成図である。
なお、図14においては、演算器OPに対する制御系を例として示しているが、クロスバー回路13125においては、演算器OPに代わりにセレクタが配置される。
【0096】
この切り替え制御系は、制御回路301と、現在の制御情報(現制御情報)CIFMと、次に行うべき制御に関する情報(次制御情報)NIFMの2つを保持するための現制御情報レジスタ302および次制御情報レジスタ303を有している。
【0097】
この切り替え制御系において、図14に示すように、各演算器OPに対する制御回路301は、たとえばコア1312に配置される制御情報供給回路13126(図10)から供給される現在の制御情報(現制御情報)CIFMと、次に行うべき制御に関する情報(次制御情報)NIFMの2つを、制御情報レジスタ302および次制御情報レジスタ303に保持させる。
制御回路301は、現制御情報CINFおよび次制御情報NINFの有効・無効を管理する。そして、いずれか1つでも無効である場合に、制御情報供給回路13126に対して制御情報要求REQINFを送出し、制御情報を要求する。そして、演算データOPDT1,OPDT2は、それが演算に使用する最終データであることが識別可能な制御信号CTL1,CTL2と同期して送られてくる。
制御回路301は、最終データであることが識別された場合、現在実行中の演算の完了と同時に、現制御情報CIFMを次制御情報NIFMで書き換える。
これにより、演算回路の制御を変更することが可能であり、異なる演算を実行することが可能となる。
クロスバー回路13125に関しても同様であり、図14に示すように、制御信号CTLにより最終データであることが識別された場合、制御回路301は、現在実行中のデータ転送の完了と同時に、現制御情報CIFMを次制御情報NIFMで書き換える。
これにより、接続回路網の制御を変更することが可能であり、異なる電気的接続を実現することが可能となる。
【0098】
上述したように、本実施形態においては、演算データOPDTに対して付帯情報として制御信号CTLが同期して送られてくる。制御信号CTLは主にストール時の問題に対処する目的で用いられる。
以下に、制御信号CTLについて説明する。
【0099】
たとえば、自分は受け取ることができるが、他の機能ブロックの都合でストールする場合がある。
具体的には、下流側の都合でストールする場合と、同一セグメント内の上流側の都合でストールする場合である。
【0100】
同一データを重複して受け取らないためには、データの切り替わりを示す必要がある。
また、データに付帯情報を付与することで、第1に演算の最終データであることを示す、第2に演算データではなく、制御情報をデータバスを使用して送る、というように、演算に使用するデータのみならず、制御に使用する情報をデータバスを使用して送ることが可能となる。
【0101】
たとえば以下に示すような、2ビットの制御信号CTLを使用することで、データの切り替わりを示すことと、特別な付帯情報(特別データ)であるか否かを示すことができる。
【0102】
具体的には、上述したように、2ビットの制御信号(2本の制御線)を使用し、図15(A)〜(C)に示すように、信号の遷移によりデータの切り替わりを示す。前サイクルの制御信号の状態から以下のいずれかへ値を変化することで、新しいデータが送られたことを示す。
2ビットの制御信号CTLが「00」の場合には「無効」を示し、「01」および「10」の場合には「有効」を示し、「11」の場合には「有効かつ特別データ」を示す。
すなわち、制御信号CTLの値が変化することで、データの切り替わりを示している。
【0103】
また、パイプライン的に演算処理を行う必要がある場合あるいは機能ユニット(演算ブロック)においては、図16に示すように、パイプラインに沿って制御情報を伝播させることで、間断なく処理を切り替えることができる。
図16において、現制御情報レジスタ302から演算器OPに至る経路には、たとえはデコード回路が配置される。次段に伝播する制御情報は、後段で必要になる一部の情報でも良いし、制御情報がデコードされた情報でも良い。
【0104】
本実施形態においては、演算処理の内容を切り替える場合、可能な限り性能低下を低減するという観点から、現在実行中の処理の最終データを検出し、各制御回路301が自立的に動作を切り替えるように構成している。
これにより、演算器や演算ブロックは、現在実行中の処理に連続して次の処理を開始できるため、性能低下を抑止することが可能である。
【0105】
これを実現するために、現在の処理の終了を示す情報を、各演算器や演算ブロックに対してデータ経路を経由して流す(デリミタ)。デリミタとしては、たとえば有効な最終データに対して付与する第1の方法と、有効な最終データを出力した後に処理の対象とならないデータとして流す第2の方法を採用可能である。第2の方法の場合、データの代わりに何らかの制御情報を送るようにすることも可能である。
本実施形態においては、現在実行中の処理を既定する現制御情報CINFと、次に行う処理を既定する次制御情報NINFを保持するが、デリミタを検出した場合、次制御情報NINFを現制御情報CINFに移すことで間断なく動作を切り替え、処理を継続させることが可能で、並行して異なる処理を行うことができる。
たとえば、複数のテクスチャを並行に処理可能な場合、各演算ブロック単位で同様の動作が可能である。
【0106】
図17は、デリミタ検出機能を有する制御回路301の構成例を示すブロック図である。
制御回路301は、図17に示すように、複数のデリミタ検出回路(DLMT)3011−1,3011−2・・、論理和回路(OR)3012、シーケンサ(SEQ)3013、およびセレクタ3014−1,3014−2を有している。
【0107】
制御回路301は、制御情報で制御される演算器の各入力データOPDTに付随する制御信号CTL1,CTL2,・・が各々に対して対応して設けられたデリミタ検出回路3011−1,3011−2・・に入力させる。
各デリミタ検出回路3011−1,3011−2・・の出力が論理和回路3012で論理和され、その結果がデリミタ検出信号S3012としてシーケンサ3013に入力される。
すなわち、現在の処理で参照しているデータの1つ以上にデリミタが検出された場合には、デリミタ検出信号S3012がアサートされる。
シーケンサ3013は、デリミタ検出信号S3012と書き込み信号WRSに基づいて、現制御情報レジスタ302と次制御情報レジスタ303の入力段に配置されたセレクタ3014−2,3014−1が制御情報供給回路13126から供給された書き込みデータWRD(制御情報INF)かレジスタの保持データのいずれを選択するかを制御し、また、必要に応じて制御情報要求REQINFを制御情報供給回路13126に送出する。
【0108】
図18は、図17のデリミタ検出回路3011(−1,・・)の構成例を示すブロック図である。
【0109】
本デリミタ検出回路3011は、図18に示すように、制御信号保持レジスタ30111、不一致判定回路(INCONSIS)30112、信号値判定回路(SGNVAL)30113、デコード回路(DEC)30114、および3入力ANDゲート30115を有している。
【0110】
制御信号保持レジスタ30111は、1クロック前の制御信号CTLを保持する。
【0111】
不一致判定回路30112は、入力端Aに入力される制御信号保持レジスタ30111に保持されている1クロック前の制御信号CTLの値と、入力端Bに入力される現時刻での制御信号CTLの値とを比較し、値が一致した場合に論理「1」を、一致しない場合には論理「1」をANDゲート30115に出力する。これにより、新しいデータとこれに同期した制御信号が到達した際には、出力端Yに「1」が出力される。
【0112】
信号値判定回路30113は、入力端Aに入力される制御信号CTLの値を判定して、特別データを示す信号値の場合には論理「1」を、そうでない場合には論理「0」をADNゲート30115に出力する。
【0113】
デコード回路30114は、制御情報INFをデコードし、現在の処理データnが参照されているか否かを判定し、参照されている場合に論理「1」を、されていない場合には論理「0」をADNゲート30115に出力する。
【0114】
ANDゲート30115は、不一致判定回路30112、信号値判定回路30113、およびデコード回路30114の出力の論理積をとり、新しいデータが到達し、かつそのデータ入力が現在の処理で参照されており、かつそれが特別データであり、かつ現在有効な処理を行っている場合に「1」をアサートし、データnに対するデリミタ検出を示す。
【0115】
また、図19は、図17のシーケンサの状態遷移例を示す図である。
【0116】
シーケンサ3013は、図19に示すように、第1状態C IV N IV、第2状態C V N IV、および第3状態C V N Vの3つの状態をとりえる。
図20に示すように、第1状態C IV N IVの場合、現制御情報CINFは無効であり、次制御情報NINFも無効である。
第2状態C V N IVの場合、現制御情報CINFは有効であり、次制御情報NINFは無効である。
第3状態C V N Vの場合、現制御情報CINFは有効であり、次制御情報NINFも有効である。
【0117】
また、図21は、各遷移条件に対応する現制御情報レジスタ302、次制御情報レジスタ303の書き込まれる値、並びに制御情報要求REQINFの状態を示す図である。
図21中のおいて、現制御情報レジスタ302、次制御情報レジスタ303の書き込まれる値の欄に「−」が記されているのは、そのレジスタは次状態では無効であるためレジスタにはどのような値が保持されるようになっても良いことを示している。
【0118】
リセット発生時には、常に第1状態C IV N IVに遷移する。なお、リセット後は制御回路301から制御情報要求REQINFはアサートされない。最初の制御情報INFは、制御回路301から制御情報要求REQINFをアサートしなくても、制御情報供給回路13126が起動された後に自律的に書き込む(ライトする)。
【0119】
条件0はリセットであり、図21の例では制御情報要求REQINFをアサートする。
条件1は第1状態C IV N IVにおけるライト(Write)無しであり、制御情報要求REQINFはネゲートである。
条件2はライトであり、第1状態C IV N IVから第2状態C V NIVに遷移させる条件である。この場合、現制御情報レジスタ302に供給された書き込みデータWRDの値を書き込む。このとき、制御情報要求REQINFをアサートする。
条件3は、ライト無し&デリミタ有りであり、第2状態C V N IVから第1状態C IV N IVに遷移させる条件である。この場合、制御情報要求REQINFをアサートする。
条件4は第2状態C V N IVにおけるライト有り&デリミタ有りであり、現制御情報レジスタ302に供給された書き込みデータWRDの値を書き込む。このとき、制御情報要求REQINFをアサートする。
条件5は第2状態C V N IVにおけるライト無し&デリミタ無しであり、現制御情報レジスタ302に現制御情報レジスタ302に保持されていた現制御情報CINFを書き込む。このとき、制御情報要求REQINFはネゲートである。
条件6は、ライト有り&デリミタ無しであり、第2状態C V N IVから第3状態C V N Vに遷移させる条件である。この場合、現制御情報レジスタ302に現制御情報レジスタ302に保持されていた現制御情報CINFを書き込み、次制御情報レジスタ303に供給された書き込みデータWRDの値を書き込む。このとき、制御情報要求REQINFはネゲートである。
条件7は、デリミタであり、第3状態C V N Vから第2状態C V NIVに遷移させる条件である。この場合、現制御情報レジスタ302に次制御情報レジスタ303に保持されていた次制御情報NINFを書き込む。このとき、制御情報要求REQINFをアサートする。
条件8は第3状態C V N Vにおけるデリミタ無しであり、現制御情報レジスタ302に現制御情報レジスタ302に保持されていた現制御情報CINFを書き込み、次制御情報レジスタ303に次制御情報レジスタ303に保持されていた次制御情報NINFを書き込む。このとき、制御情報要求REQINFはネゲートである。
【0120】
切り替え制御系は、上述したように、リセット時には現制御情報CINFと次制御情報NINFとも無効となる。
各演算器(演算ブロック)の演算内容は現制御情報CINFの内容により決定される。
現制御情報CINFと次制御情報NINFの有効/無効は、制御情報供給回路13126からの書き込み(ライト)およびデリミタの検出時に自動的に変更される。
現制御情報レジスタ302、次制御情報レジスタ303へのライトおよびデリミタ検出時の制御情報レジスタの状態変化について、以下に述べる。
【0121】
制御情報供給回路13126からのライトがあり、デリミタが検出されていない場合であって、現制御情報CINFと次制御情報NINFとが共に無効である場合、ライトされた命令、世代番号は現制御情報レジスタ302に格納され、現制御情報CINFが有効となり、次制御情報NINFが無効となる。
現制御情報CINFが有効で次制御情報NINFが無効である場合、ライトされた命令は次制御情報レジスタ303に格納され、現制御情報CINFと次制御情報NINFとが共に有効になる。
現制御情報CINFが無効で次制御情報NINFが有効である場合は存在しない。
現制御情報CINFと次制御情報NINFとが共に有効である場合も存在しない。
【0122】
制御情報供給回路13126からのライトがなく、デリミタが検出された場合であって、現制御情報CINFと次制御情報NINFとが共に無効である場合、現制御情報CINFと次制御情報NINFとが共に無効となる。
現制御情報CINFが有効で次制御情報NINFが無効である場合も、現制御情報CINFと次制御情報NINFとが共に無効となる。
現制御情報CINFが無効で次制御情報NINFが有効である場合は存在しない。
現制御情報CINFと次制御情報NINFとが共に有効である場合、現制御情報は有効となり、次制御情報は無効となる。
【0123】
制御情報供給回路13126からのライトとデリミタが同時の場合であって、現制御情報CINFと次制御情報NINFとが共に無効である場合、ライトされた命令は現制御情報レジスタ302に格納され、現制御情報CINFが有効となり、次制御情報NINFが無効となる。
現制御情報CINFが有効で次制御情報NINFが無効である場合、ライトされた命令は現制御情報レジスタ302に格納され、現制御情報CINFが有効となり、次制御情報NINFが無効となる。
現制御情報CINFが無効で次制御情報NINFが有効である場合は存在しない。
現制御情報CINFと次制御情報NINFとが共に有効である場合、現制御情報CINFと次制御情報NINFは共に有効である。
【0124】
ここで、図11のピクセルエンジン13122における動的に再構成された演算回路の演算処理例を図22および図23に関連付けて説明する。
【0125】
まず、グラフィックス処理におけるいわゆる依存テクスチャ有りの場合の演算処理例について図22に関連付けて説明する。
【0126】
この場合、上述した切り替え制御系により、スカラ演算部13122Aの演算器OP1,OP4が乗算器として機能し、演算器OP2,OP3,OP5〜OP7が減算機能を含む乗加算器として機能するように再構成される。
また、ベクタ演算部13122の演算器OP10,OP13,OP16が乗算器として機能するように再構成される。
【0127】
スカラ演算部13122Aにおいては、視線ベクトルEおよび法線ベクトルNのx成分E.x,tex(N).xが演算器OP1に入力されて乗算され、この乗算結果E.x・tex(N).xが演算器OP2に入力される。
演算器OP2には、EおよびNのy成分E.y,tex(N).yが入力されて乗算され、この乗算結果E.y・tex(N).yに演算器OP1の乗算結果E.x・tex(N).xが加算され、この加算結果(E.x・tex(N).x+E.y・tex(N).y)が演算器OP3に入力される。
演算器OP3には、EおよびNのz成分E.z,tex(N).zが入力されて乗算され、この乗算結果E.z・tex(N).zに演算器OP2の演算結果(E.x・tex(N).x+E.y・tex(N).y)が加算され、この加算結果(E.x・tex(N).x+E.y・tex(N).y+E.z・tex(N).z)が演算器OP4に入力される。この演算器OP3の演算結果がEとNと内積であり、以下dot(E,tex(N))として表す。
演算器OP4には、定数2が入力され、定数2と演算器OP3の演算結果が乗算され、その乗算結果2×dot(E,tex(N))が演算器OP5,OP6,OP7に入力される。
演算器OP5には、EおよびNのx成分E.x,tex(N).xが入力され演算器OP4の乗算結果2×dot(E,tex(N))にNのx成分tex(N).xが乗算され、この乗算結果2×dot(E,tex(N))×tex(N).xからEのx成分E.xが減算され、この減算結果(2×dot(E,tex(N))×tex(N).x−E.x)が反射ベクトルのx成分Rxとしてクロスバー回路13125に転送される。
演算器OP6には、EおよびNのy成分E.y,tex(N).yが入力され演算器OP4の乗算結果2×dot(E,tex(N))にNのy成分tex(N).yが乗算され、この乗算結果2×dot(E,tex(N))×tex(N).yからEのy成分E.yが減算され、この減算結果(2×dot(E,tex(N))×tex(N).y−E.y)が反射ベクトルのy成分Ryとしてクロスバー回路13125に転送される。
演算器OP7には、EおよびNのz成分E.z,tex(N).zが入力され演算器OP4の乗算結果2×dot(E,tex(N))にNのz成分tex(N).zが乗算され、この乗算結果2×dot(E,tex(N))×tex(N).zからEのz成分E.zが減算され、この減算結果(2×dot(E,tex(N))×tex(N).z−E.z)が反射ベクトルのz成分Rzとしてクロスバー回路13125に転送される。
【0128】
また、ベクタ演算部13122Bにおいて、演算器OP10には、テクスチャのR(赤)成分tex(R).rとパラメータKs.r(ベクタ値)が入力されて乗算されブレンドされる。そして、演算器OP10から、乗算結果tex(R).r・パラメータKs.rがカラーデータCrとしてクロスバー回路13125に転送される。
演算器OP13には、テクスチャのG(緑)成分tex(R).gとパラメータKs.g(ベクタ値)が入力されて乗算されブレンドされる。そして、演算器OP13から、乗算結果tex(R).g・パラメータKs.gがカラーデータCgとしてクロスバー回路13125に転送される。
演算器OP16には、テクスチャのB(青)成分tex(R).bとパラメータKs.b(ベクタ値)が入力されて乗算されブレンドされる。そして、演算器OP16から、乗算結果tex(R).b・パラメータKs.bがカラーデータCbとしてクロスバー回路13125に転送される。
【0129】
次に、グラフィックス処理におけるいわゆる依存テクスチャ無しの場合の演算処理例について図23に関連付けて説明する。
【0130】
この場合、スカラ演算部13122Aの演算器OP1〜OP9は用いられず、ベクタ演算部13122Bの演算器OP10,OP13,OP16が乗算器として機能するように再構成される。
【0131】
ベクタ演算部13122Bにおいて、演算器OP10には、テクスチャデータのR(赤)成分texl.rとプライマリカラーPC.rが入力されて乗算される。そして、演算器OP10から、乗算結果texl.r・PC.rがクロスバー回路13125に転送される。
演算器OP13には、テクスチャデータのG(緑)成分texl.gとプライマリカラーPC.gが入力されて乗算される。そして、演算器OP13から、乗算結果texl.g・PC.gがクロスバー回路13125に転送される。
演算器OP16には、テクスチャデータのB(青)成分texl.BとプライマリカラーPC.Bが入力されて乗算される。そして、演算器OP16から、乗算結果texl.b・PC.bがクロスバー回路13125に転送される。
【0132】
図24は、ピクセルエンジン(PXE)13122の第2の構成例、およびレジスタユニット(RGU)13124、クロスバー回路13125との接続例を示す図である。
【0133】
図24のピクセルエンジン(PXE)13122は、2または3入力MACを基本とした対称構造を実現可能な複数(図24の例では16個)の演算器OP1〜OP4,OP5〜OP8,演算器OP9〜OP12,OP13〜OP16を有し、演算器4個を1つの演算器群として4つの演算器群OPGRP1〜OPGRP4が、クロスバー回路(IXB)13125を挟んで対称な配置となるように構成されている。
具体的には、図24中、クロスバー回路13125の左側に、演算器群OPGRP1およびOPGRP2が配置され、これと対称となるように、クロスバー回路13125の右側に演算器群OPGRP3およびOPGRP4が配置されている。
【0134】
この場合も、図11のピクセルエンジンの場合と同様に、各演算器OP1〜OP16の構成を個別に制御可能であり、ここでは、演算器およびクロスバー回路13125の切り替え制御系についての説明は省略する。
図24の構成によれば、スカラ演算、3次ベクタ演算、4次ベクタ演算の比率変動に対処可能である。
【0135】
図24に示すように、演算器群OPGRP1〜OPGRP4内の各演算器OP1〜OP4,OP5〜OP8,OP9〜OP12,OP13〜OP16の2本の入力は、レジスタユニット(RGU)13124のFIFOレジスタFREGと直結している。
そして、各演算器OP1〜OP16の出力は、クロスバー回路13125に接続されている。
【0136】
図24の例では、演算器群OPGRP1においては、演算器OP1の出力がフォワーディングパスにより演算器OP2〜OP4の3入力にそれぞれ接続されている。同様に、演算器OP2の出力がフォワーディングパスにより演算器OP3,OP4の3入力にそれぞれ接続されている。演算器OP3の出力がフォワーディングパスにより演算器OP4の3入力にそれぞれ接続されている。
演算器群OPGRP2においては、演算器OP5の出力がフォワーディングパスにより演算器OP6〜OP8の3入力にそれぞれ接続されている。同様に、演算器OP6の出力がフォワーディングパスにより演算器OP7,OP8の3入力にそれぞれ接続されている。演算器OP7の出力がフォワーディングパスにより演算器OP8の3入力にそれぞれ接続されている。
演算器群OPGRP3においては、演算器OP9の出力がフォワーディングパスにより演算器OP10〜OP12の3入力にそれぞれ接続されている。同様に、演算器OP10の出力がフォワーディングパスにより演算器OP11,OP12の3入力にそれぞれ接続されている。演算器OP11の出力がフォワーディングパスにより演算器OP12の3入力にそれぞれ接続されている。
演算器群OPGRP4においては、演算器OP13の出力がフォワーディングパスにより演算器OP14〜OP16の3入力にそれぞれ接続されている。同様に、演算器OP14の出力がフォワーディングパスにより演算器OP15,OP16の3入力にそれぞれ接続されている。演算器OP15の出力がフォワーディングパスにより演算器OP16の3入力にそれぞれ接続されている。
【0137】
ここで、図24のピクセルエンジン13122における動的に再構成された演算回路の演算処理例を図25および図26に関連付けて説明する。
【0138】
まず、グラフィックス処理における依存テクスチャ有りの場合の演算処理例について図25に関連付けて説明する。
【0139】
この場合、上述した切り替え制御系により、演算器群OPGRP1の演算器OP1,OP4が乗算器として機能し、演算器OP2,OP3が乗加算器として機能するように再構成される。
演算器群OPGRP2の演算器OP5,OP6が乗算器として機能し、演算器OP7が減算器として機能するように再構成される。
演算器群OPGRP3の演算器OP9,OP10が乗算器として機能し、演算器OP11が減算器として機能するように再構成される。
演算器群OPGRP4の演算器OP13,OP14が乗算器として機能し、演算器OP15が減算器として機能するように再構成される。
【0140】
演算器群OPGRP1においては、視線ベクトルEおよび法線ベクトルNのx成分E.x,tex(N).xが演算器OP1に入力されて乗算され、この乗算結果E.x・tex(N).xが演算器OP2に入力される。
演算器OP2には、EおよびNのy成分E.y,tex(N).yが入力されて乗算され、この乗算結果E.y・tex(N).yに演算器OP1の乗算結果E.x・tex(N).xが加算され、この加算結果(E.x・tex(N).x+E.y・tex(N).y)が演算器OP3に入力される。
演算器OP3には、EおよびNのz成分E.z,tex(N).zが入力されて乗算され、この乗算結果E.z・tex(N).zに演算器OP2の演算結果(E.x・tex(N).x+E.y・tex(N).y)が加算され、この加算結果(E.x・tex(N).x+E.y・tex(N).y+E.z・tex(N).z)が演算器OP4に入力される。この演算器OP3の演算結果がEとNと内積であり、上述したようにdot(E,tex(N))として表す。
演算器OP4には、定数2が入力され、定数2と演算器OP3の演算結果が乗算され、その乗算結果2×dot(E,tex(N))がクロスバー回路13125に転送され、演算器群OPGRP2の演算器OP6、演算器群OPGRP3の演算器OP10、および演算器群OPGRP4の演算器OP14に入力される。
【0141】
演算器群OPGRP2の演算器OP6には、Nのx成分tex(N).xが入力され演算器OP4の乗算結果2×dot(E,tex(N))にNのx成分tex(N).xが乗算され、この乗算結果2×dot(E,tex(N))×tex(N).xが演算器OP7に入力される。
演算器OP7には、Eのx成分E.xが入力され、演算器OP6の乗算結果2×dot(E,tex(N))×tex(N).xからEのx成分E.xが減算され、この減算結果(2×dot(E,tex(N))×tex(N).x−E.x)が反射ベクトルのx成分Rxとしてクロスバー回路13125に転送される。
【0142】
演算器群OPGRP3の演算器OP10には、Nのy成分tex(N).yが入力され演算器OP4の乗算結果2×dot(E,tex(N))にNのy成分tex(N).yが乗算され、この乗算結果2×dot(E,tex(N))×tex(N).yが演算器OP11に入力される。
演算器OP11には、Eのy成分E.yが入力され、演算器OP10の乗算結果2×dot(E,tex(N))×tex(N).yからEのy成分E.yが減算され、この減算結果(2×dot(E,tex(N))×tex(N).y−E.y)が反射ベクトルのy成分Ryとしてクロスバー回路13125に転送される。
【0143】
演算器群OPGRP4の演算器OP14には、Nのz成分tex(N).zが入力され演算器OP4の乗算結果2×dot(E,tex(N))にNのz成分tex(N).zが乗算され、この乗算結果2×dot(E,tex(N))×tex(N).zが演算器OP15に入力される。
演算器OP15には、Eのz成分E.zが入力され、演算器OP14の乗算結果2×dot(E,tex(N))×tex(N).zからEのz成分E.zが減算され、この減算結果(2×dot(E,tex(N))×tex(N).z−E.z)が反射ベクトルのz成分Rzとしてクロスバー回路13125に転送される。
【0144】
また、演算器群OPGRP2において、演算器OP5には、テクスチャのR(赤)成分tex(R).rとパラメータKs.r(ベクタ値)が入力されて乗算されブレンドされる。そして、演算器OP5から、乗算結果tex(R).r・パラメータKs.rがカラーデータCrとしてクロスバー回路13125に転送される。
演算器群OPGRP3において、演算器OP9には、テクスチャのG(緑)成分tex(R).gとパラメータKs.g(ベクタ値)が入力されて乗算されブレンドされる。そして、演算器OP9から、乗算結果tex(R).g・パラメータKs.gがカラーデータCgとしてクロスバー回路13125に転送される。
演算器群OPGRP4において、演算器OP13には、テクスチャのB(青)成分tex(R).bとパラメータKs.b(ベクタ値)が入力されて乗算されブレンドされる。そして、演算器OP16から、乗算結果tex(R).b・パラメータKs.bがカラーデータCbとしてクロスバー回路13125に転送される。
【0145】
次に、グラフィックス処理における依存テクスチャ無しの場合の演算処理例について図26に関連付けて説明する。
【0146】
この場合、演算器群OPGRP1の演算器OP1が乗算器として機能し、演算器群OPGRP2の演算器OP5が乗算器として機能し、演算器群OPGRP3の演算器OP9が乗算器として機能するように再構成される。
【0147】
演算器群OPGRP1において、演算器OP1には、テクスチャデータのR(赤)成分texl.rとプライマリカラーPC.rが入力されて乗算される。そして、演算器OP1から、乗算結果texl.r・PC.rがクロスバー回路13125に転送される。
演算器群OPGRP2において、演算器OP5には、テクスチャデータのG(緑)成分texl.gとプライマリカラーPC.gが入力されて乗算される。そして、演算器OP5から、乗算結果texl.g・PC.gがクロスバー回路13125に転送される。
演算器群OPGRP3において、演算器OP9には、テクスチャデータのB(青)成分texl.BとプライマリカラーPC.Bが入力されて乗算される。そして、演算器OP9から、乗算結果texl.b・PC.bがクロスバー回路13125に転送される。
【0148】
図27は、ピクセルエンジン(PXE)13122の第3の構成例、およびレジスタユニット(RGU)13124、クロスバー回路13125との接続例を示す図である。
【0149】
図27のピクセルエンジン(PXE)13122が、図24の構成と異なる点は、以下の点にある。
すなわち、クロスバー回路13125の図中左側辺部に沿って演算器群OPGRP1A用のフォワーディング接続回路網FCCN1および演算器群OPGRP2A用のフォワーディング接続回路網FCCN2が配置され、図中右側辺部に沿って演算器群OPGRP3A用のフォワーディング接続回路網FCCN3および演算器群OPGRP4A用のフォワーディング接続回路網FCCN4が配置されている。
さらに、各演算器群OPGRP1A〜OPGRP4Aは、演算器OPと入力段となるレジスタユニット13124の2つのFIFOレジスタFREGを演算器ユニットOPUとして4個並列に配置した形態をとっている。
そして、演算器ユニットOPU1〜OPU4を含む演算器群OPGRP1Aがフォワーディング接続回路網FCCN1の図中上段側に並設され(近接配置され)、演算器ユニットOPU5〜OPU8を含む演算器群OPGRP2Aがフォワーディング接続回路網FCCN2の図中下段側に並設され(近接配置され)、演算器ユニットOPU9〜OPU12を含む演算器群OPGRP3Aがフォワーディング接続回路網FCCN3の図中上段側に並設され(近接配置され)、演算器ユニットOPU13〜OPU16を含む演算器群OPGRP4Aがフォワーディング接続回路網FCCN4の図中下段側に並設されている(近接配置されている)。
【0150】
このように、図27の回路は、クロスバー回路(IXB)13125を挟んで完全な対称構造をとっている。
このようにクロスバー回路13125を中心としてその周辺に4つのフォワーディング接続回路網FCCN1〜FCCN4、並びに演算器群OPGRP1A〜OPGRP4Aを配置することにより、対応する演算器群OPGRP1A〜OPGRP4Aまでの距離を均一に保つことができ、配線領域を整然と並べることができ、平均配線長を短くできる。したがって、配線遅延や配線コストを低減でき、ひいては処理速度を向上を図ることができる。
【0151】
この場合も、図11のピクセルエンジンの場合と同様に、各演算器OP1〜OP16の構成を個別に制御可能であり、ここでは、演算器およびクロスバー回路13125の切り替え制御系についての説明は省略する。
【0152】
演算器群OPGRP1Aにおいて、演算器ユニットOPU1では、クロスバー回路13125からフォワーディング接続回路網FCCN1へ配線された2本の信号線FL11,FL12が2つのFIFOレジスタFREGの入力端に延引され接続されている。2つのFIFOレジスタの出力が演算器OP1の入力端に接続され、演算器OP1の出力がフォワーディング接続回路網FCCN1へ配線された信号線OL11により演算器ユニットOPU2〜OPU4の各演算器OP2〜OP4の1入力端に接続されているとともに、クロスバー回路13125に接続されている。
演算器ユニットOPU2では、クロスバー回路13125からフォワーディング接続回路網FCCN1へ配線された2本の信号線FL13,FL14が2つのFIFOレジスタFREGの入力端に延引され接続されている。2つのFIFOレジスタの出力が演算器OP2の入力端に接続され、演算器OP2の出力がフォワーディング接続回路網FCCN1へ配線された信号線OL12(およびOL11)により演算器ユニットOPU3,OPU4の各演算器OP3,OP4の1入力端に接続されているとともに、クロスバー回路13125に接続されている。演算器ユニットOPU3では、クロスバー回路13125からフォワーディング接続回路網FCCN1へ配線された2本の信号線FL15,FL16が2つのFIFOレジスタFREGの入力端に延引され接続されている。2つのFIFOレジスタの出力が演算器OP3の入力端に接続され、演算器OP3の出力がフォワーディング接続回路網FCCN1へ配線された信号線OL13(およびOL11)により演算器ユニットOPU4の演算器OP4の1入力端に接続されているとともに、クロスバー回路13125に接続されている。
演算器ユニットOPU4では、クロスバー回路13125からフォワーディング接続回路網FCCN1へ配線された2本の信号線FL17,FL18が2つのFIFOレジスタFREGの入力端に延引され接続されている。2つのFIFOレジスタの出力が演算器OP4の入力端に接続され、演算器OP4の出力がフォワーディング接続回路網FCCN1へ配線された信号線OL14によりクロスバー回路13125に接続されている。
【0153】
演算器群OPGRP2Aにおいて、演算器ユニットOPU5では、クロスバー回路13125からフォワーディング接続回路網FCCN2へ配線された2本の信号線FL21,FL22が2つのFIFOレジスタFREGの入力端に延引され接続されている。2つのFIFOレジスタの出力が演算器OP5の入力端に接続され、演算器OP5の出力がフォワーディング接続回路網FCCN2へ配線された信号線OL21により演算器ユニットOPU6〜OPU8の各演算器OP6〜OP8の1入力端に接続されているとともに、クロスバー回路13125に接続されている。
演算器ユニットOPU6では、クロスバー回路13125からフォワーディング接続回路網FCCN2へ配線された2本の信号線FL23,FL24が2つのFIFOレジスタFREGの入力端に延引され接続されている。2つのFIFOレジスタの出力が演算器OP6の入力端に接続され、演算器OP6の出力がフォワーディング接続回路網FCCN2へ配線された信号線OL22(およびOL21)により演算器ユニットOPU7,OPU8の各演算器OP7,OP8の1入力端に接続されているとともに、クロスバー回路13125に接続されている。演算器ユニットOPU7では、クロスバー回路13125からフォワーディング接続回路網FCCN2へ配線された2本の信号線FL25,FL26が2つのFIFOレジスタFREGの入力端に延引され接続されている。2つのFIFOレジスタの出力が演算器OP7の入力端に接続され、演算器OP7の出力がフォワーディング接続回路網FCCN2へ配線された信号線OL23(およびOL21)により演算器ユニットOPU8の演算器OP8の1入力端に接続されているとともに、クロスバー回路13125に接続されている。
演算器ユニットOPU8では、クロスバー回路13125からフォワーディング接続回路網FCCN2へ配線された2本の信号線FL27,FL28が2つのFIFOレジスタFREGの入力端に延引され接続されている。2つのFIFOレジスタの出力が演算器OP8の入力端に接続され、演算器OP8の出力がフォワーディング接続回路網FCCN2へ配線された信号線OL24によりクロスバー回路13125に接続されている。
【0154】
演算器群OPGRP3Aにおいて、演算器ユニットOPU9では、クロスバー回路13125からフォワーディング接続回路網FCCN3へ配線された2本の信号線FL31,FL32が2つのFIFOレジスタFREGの入力端に延引され接続されている。2つのFIFOレジスタの出力が演算器OP9の入力端に接続され、演算器OP9の出力がフォワーディング接続回路網FCCN3へ配線された信号線OL31により演算器ユニットOPU10〜OPU12の各演算器OP11〜OP12の1入力端に接続されているとともに、クロスバー回路13125に接続されている。
演算器ユニットOPU10では、クロスバー回路13125からフォワーディング接続回路網FCCN3へ配線された2本の信号線FL33,FL34が2つのFIFOレジスタFREGの入力端に延引され接続されている。2つのFIFOレジスタの出力が演算器OP10の入力端に接続され、演算器OP10の出力がフォワーディング接続回路網FCCN3へ配線された信号線OL32(およびOL31)により演算器ユニットOPU11,OPU12の各演算器OP11,OP12の1入力端に接続されているとともに、クロスバー回路13125に接続されている。
演算器ユニットOPU11では、クロスバー回路13125からフォワーディング接続回路網FCCN3へ配線された2本の信号線FL35,FL36が2つのFIFOレジスタFREGの入力端に延引され接続されている。2つのFIFOレジスタの出力が演算器OP11の入力端に接続され、演算器OP11の出力がフォワーディング接続回路網FCCN3へ配線された信号線OL33(およびOL31)により演算器ユニットOPU12の演算器OP12の1入力端に接続されているとともに、クロスバー回路13125に接続されている。
演算器ユニットOPU12では、クロスバー回路13125からフォワーディング接続回路網FCCN3へ配線された2本の信号線FL37,FL38が2つのFIFOレジスタFREGの入力端に延引され接続されている。2つのFIFOレジスタの出力が演算器OP12の入力端に接続され、演算器OP12の出力がフォワーディング接続回路網FCCN3へ配線された信号線OL34によりクロスバー回路13125に接続されている。
【0155】
演算器群OPGRP4Aにおいて、演算器ユニットOPU13では、クロスバー回路13125からフォワーディング接続回路網FCCN4へ配線された2本の信号線FL41,FL42が2つのFIFOレジスタFREGの入力端に延引され接続されている。2つのFIFOレジスタの出力が演算器OP13の入力端に接続され、演算器OP13の出力がフォワーディング接続回路網FCCN4へ配線された信号線OL41により演算器ユニットOPU14〜OPU16の各演算器OP14〜OP16の1入力端に接続されているとともに、クロスバー回路13125に接続されている。
演算器ユニットOPU14は、クロスバー回路13125からフォワーディング接続回路網FCCN4へ配線された2本の信号線FL43,FL44が2つのFIFOレジスタFREGの入力端に延引され接続されている。2つのFIFOレジスタの出力が演算器OP14の入力端に接続され、演算器OP14の出力がフォワーディング接続回路網FCCN4へ配線された信号線OL42(およびOL41)により演算器ユニットOPU15,OPU16の各演算器OP15,OP16の1入力端に接続されているとともに、クロスバー回路13125に接続されている。
演算器ユニットOPU15では、クロスバー回路13125からフォワーディング接続回路網FCCN4へ配線された2本の信号線FL45,FL46が2つのFIFOレジスタFREGの入力端に延引され接続されている。2つのFIFOレジスタの出力が演算器OP15の入力端に接続され、演算器OP15の出力がフォワーディング接続回路網FCCN4へ配線された信号線OL43(およびOL41)により演算器ユニットOPU16の演算器OP16の1入力端に接続されているとともに、クロスバー回路13125に接続されている。
演算器ユニットOPU16では、クロスバー回路13125からフォワーディング接続回路網FCCN4へ配線された2本の信号線FL47,FL48が2つのFIFOレジスタFREGの入力端に延引され接続されている。2つのFIFOレジスタの出力が演算器OP16の入力端に接続され、演算器OP16の出力がフォワーディング接続回路網FCCN4へ配線された信号線OL44によりクロスバー回路13125に接続されている。
【0156】
そして、フォワーディング接続回路網FCCN1に配線された信号線FL11、フォワーディング接続回路網FCCN2に配線された信号線FL21、フォワーディング接続回路網FCCN3に配線された信号線FL31、およびフォワーディング接続回路網FCCN4に配線された信号線FL41は同一長さとなるように配線されている。
同様に、フォワーディング接続回路網FCCN1に配線された信号線FL12、フォワーディング接続回路網FCCN2に配線された信号線FL22、フォワーディング接続回路網FCCN3に配線された信号線FL32、およびフォワーディング接続回路網FCCN4に配線された信号線FL42は同一長さとなるように配線されている。
フォワーディング接続回路網FCCN1に配線された信号線FL13、フォワーディング接続回路網FCCN2に配線された信号線FL23、フォワーディング接続回路網FCCN3に配線された信号線FL33、およびフォワーディング接続回路網FCCN4に配線された信号線FL43は同一長さとなるように配線されている。
フォワーディング接続回路網FCCN1に配線された信号線FL14、フォワーディング接続回路網FCCN2に配線された信号線FL24、フォワーディング接続回路網FCCN3に配線された信号線FL34、およびフォワーディング接続回路網FCCN4に配線された信号線FL44は同一長さとなるように配線されている。
フォワーディング接続回路網FCCN1に配線された信号線FL15、フォワーディング接続回路網FCCN2に配線された信号線FL25、フォワーディング接続回路網FCCN3に配線された信号線FL35、およびフォワーディング接続回路網FCCN4に配線された信号線FL45は同一長さとなるように配線されている。
フォワーディング接続回路網FCCN1に配線された信号線FL16、フォワーディング接続回路網FCCN2に配線された信号線FL26、フォワーディング接続回路網FCCN3に配線された信号線FL36、およびフォワーディング接続回路網FCCN4に配線された信号線FL46は同一長さとなるように配線されている。
フォワーディング接続回路網FCCN1に配線された信号線FL17、フォワーディング接続回路網FCCN2に配線された信号線FL27、フォワーディング接続回路網FCCN3に配線された信号線FL37、およびフォワーディング接続回路網FCCN4に配線された信号線FL47は同一長さとなるように配線されている。
フォワーディング接続回路網FCCN1に配線された信号線FL18、フォワーディング接続回路網FCCN2に配線された信号線FL28、フォワーディング接続回路網FCCN3に配線された信号線FL38、およびフォワーディング接続回路網FCCN4に配線された信号線FL48は同一長さとなるように配線されている。
【0157】
さらに、フォワーディング接続回路網FCCN1に配線された信号線OL11、フォワーディング接続回路網FCCN2に配線された信号線OL21、フォワーディング接続回路網FCCN3に配線された信号線OL31、およびフォワーディング接続回路網FCCN4に配線された信号線OL41は同一長さとなるように配線されている。
同様に、フォワーディング接続回路網FCCN1に配線された信号線OL12、フォワーディング接続回路網FCCN2に配線された信号線OL22、フォワーディング接続回路網FCCN3に配線された信号線OL32、およびフォワーディング接続回路網FCCN4に配線された信号線OL42は同一長さとなるように配線されている。
フォワーディング接続回路網FCCN1に配線された信号線OL13、フォワーディング接続回路網FCCN2に配線された信号線OL23、フォワーディング接続回路網FCCN3に配線された信号線OL33、およびフォワーディング接続回路網FCCN4に配線された信号線OL43は同一長さとなるように配線されている。
フォワーディング接続回路網FCCN1に配線された信号線OL14、フォワーディング接続回路網FCCN2に配線された信号線OL24、フォワーディング接続回路網FCCN3に配線された信号線OL34、およびフォワーディング接続回路網FCCN4に配線された信号線OL44は同一長さとなるように配線されている。
【0158】
また、本実施形態においては、たとえば図28に示すように、各演算器群OPGRP1A〜OPGRP4Aは、各演算器ユニットOPU1〜OPU16における2つのFIFOレジスタFREGの入力段、各演算器OP1〜OP16のフォワーディングパスの入力段および出力段に間隙レジスタとして機能するフリップフロップFFを配置し、経路上の伝送をパイプライン化し、高速周波数化を容易にしている。
なお、図28は、図面の簡単化のためフォワーディング接続回路網FCCN1および演算器群OPRP1Aのみを示している。他のフォワーディング接続回路網FCCN2〜FCCN4および演算器群OPRP1A〜OPRP4Aにおいても同様にフリップフロップFFが配置される。
【0159】
また、本実施形態においては、たとえば図29に示すように、フォワーディング接続回路網FCCN1〜FCCN4のクロスバー回路13125から配線された信号線FL11〜FL18,FL21〜FL28,FL31〜FL38,FL41〜FL48、並びに各演算器間並びにクロスバー回路13125へ配線された信号線OL11〜OL14,OL21〜OL28,OL31〜OL38,OL41〜OL48にステージレジスタとしてのフリップフロップFF設けることも可能である。
この場合、フォワーディング接続回路網FCCN1〜FCCN4のステージングは伝播遅延に応じて決定し、スキューマージンを持って行う。
【0160】
図29のような構成により、図中矢印▲1▼で示すように、同一ステージ内にあるセグメントへのフォワードパスのセットアップ、ホールドの確保が容易である。また、図中矢印▲2▼と▲3▼で示すように、セグメントの出入り口と、フォワーディング接続回路網のステージレジスタのスキュー調整は容易である。
また、ピクセルエンジン回路13122のアーキテクチャは、セグメント化されているので、セグメント内は小領域で閉じてスキュー合わせが可能である。
【0161】
また、図30および図31は、クロスバー回路13125を完全クロスバーにより構成した場合の各フォワーディング接続回路網FCCN1〜FCCN4との対応関係を示す図である。
【0162】
図30においては、各フォワーディング接続回路網FCCN1〜FCCN4からのデータの入力段、フォワーディング接続回路網FCCN1とFCCN2、およびフォワーディング接続回路網FCCN3とFCCN4の信号経路境界部にステージレジスタとしてのフリップフロップFFを設けている。
このような構成により、クロスバー回路13125の任意の位置でステージングを行うことが可能となり、クロックスキューを最小化することが容易となり、ストリームデータを的確にかつ高速に処理できる。
【0163】
また、図31においては、図30に比べて、データの入力段を除き、各フォワーディング接続回路網FCCN1、FCCN2、FCCN3、およびFCCN4の信号経路途中(この例では経路半分)境界部にステージレジスタとしてのフリップフロップFFを設けている。
このような構成により、クロックスキューを最小化することがさらに容易となり、ストリームデータをさらに的確にかつ高速に処理できる。
【0164】
本実施形態に係るピクセルエンジン13122は、データドリブンな自律分散制御を行い、各演算器ユニット間の動作の同期は、データに同期した制御信号CTLのみで制御される(疎結合)。これにより、演算器ユニット間でクロックスキューに対し注意を払わなければならない箇所が限定される(削減できる)。
また、データドリブンな動作同期をとっていることから、各演算器ユニットは、演算で参照するFIFOレジスタの出力に有効なデータが揃った時点で演算を行い、データをFIFOからデキューする。
演算で参照するFIFOレジスタの1つでもエンプティの場合には、演算を行わない。この間、他のFIFOレジスタに到達したデータはFIFOレジスタにエンキューされる。
各演算器ユニットに入力されるデータのスループットが変化しなければ、任意の位置で接続回路網をステージングしてもよい。
同一演算器への入力に対する接続回路網上のステージング段数は、接続回路の論理的接続により変化するが、FIFOによって吸収される。
そして、フォーワーディング接続回路網を通るフォワードパスは、セットアップ/ホールドの確保が容易である。
フォーワーディング接続回路網のステージングは、クロックマージンを確保して決める。
フォーワーディング接続回路網のステージが異なるセグメント間のスキュー調整は厳格ではない。
【0165】
ここで、図27のピクセルエンジン13122における動的に再構成された演算回路の演算処理例を図32および図33に関連付けて説明する。
【0166】
まず、グラフィックス処理における依存テクスチャ有りの場合の演算処理例について図32に関連付けて説明する。
【0167】
この場合、上述した切り替え制御系により、演算器群OPGRP1Aの演算器OP1,OP4が乗算器として機能し、演算器OP2,OP3乗加算器として機能するように再構成される。
演算器群OPGRP2Aの演算器OP5,OP6が乗算器として機能し、演算器OP7が減算器として機能するように再構成される。
演算器群OPGRP3Aの演算器OP9,OP10が乗算器として機能し、演算器OP11が減算器として機能するように再構成される。
演算器群OPGRP4Aの演算器OP13,OP14が乗算器として機能し、演算器OP15が減算器として機能するように再構成される。
【0168】
演算器群OPGRP1Aにおいては、視線ベクトルEおよび法線ベクトルNのx成分E.x,tex(N).xが演算器OP1に入力されて乗算され、この乗算結果E.x・tex(N).xが演算器OP2に入力される。
演算器OP2には、EおよびNのy成分E.y,tex(N).yが入力されて乗算され、この乗算結果E.y・tex(N).yに演算器OP1の乗算結果E.x・tex(N).xが加算され、この加算結果(E.x・tex(N).x+E.y・tex(N).y)が演算器OP3に入力される。
演算器OP3には、EおよびNのz成分E.z,tex(N).zが入力されて乗算され、この乗算結果E.z・tex(N).zに演算器OP2の演算結果(E.x・tex(N).x+E.y・tex(N).y)が加算され、この加算結果(E.x・tex(N).x+E.y・tex(N).y+E.z・tex(N).z)が演算器OP4に入力される。この演算器OP3の演算結果がEとNと内積であり、上述したようにdot(E,tex(N))として表す。
演算器OP4には、定数2が入力され、定数2と演算器OP3の演算結果が乗算され、その乗算結果2×dot(E,tex(N))が信号線L14を介してクロスバー回路13125に転送され、各FIFOレジスタFREGを介して演算器群OPGRP2の演算器OP6、演算器群OPGRP3の演算器OP10、および演算器群OPGRP4の演算器OP14にそれぞれ入力される。
【0169】
演算器群OPGRP2Aの演算器OP6には、Nのx成分tex(N).xが入力され演算器OP4の乗算結果2×dot(E,tex(N))にNのx成分tex(N).xが乗算され、この乗算結果2×dot(E,tex(N))×tex(N).xが演算器OP7に入力される。
演算器OP7には、Eのx成分E.xが入力され、演算器OP6の乗算結果2×dot(E,tex(N))×tex(N).xからEのx成分E.xが減算され、この減算結果(2×dot(E,tex(N))×tex(N).x−E.x)が反射ベクトルのx成分Rxとして信号線OL23を介してクロスバー回路13125に転送される。
【0170】
演算器群OPGRP3Aの演算器OP10には、Nのy成分tex(N).yが入力され演算器OP4の乗算結果2×dot(E,tex(N))にNのy成分tex(N).yが乗算され、この乗算結果2×dot(E,tex(N))×tex(N).yが演算器OP11に入力される。
演算器OP11には、Eのy成分E.yが入力され、演算器OP10の乗算結果2×dot(E,tex(N))×tex(N).yからEのy成分L.yが減算され、この減算結果(2×dot(E,tex(N))×tex(N).y−E.y)が反射ベクトルのy成分Ryとして信号線OL33を介してクロスバー回路13125に転送される。
【0171】
演算器群OPGRP4Aの演算器OP14には、Nのz成分tex(N).zが入力され演算器OP4の乗算結果2×dot(E,tex(N))にNのz成分tex(N).zが乗算され、この乗算結果2×dot(E,tex(N))×tex(N).zが演算器OP15に入力される。
演算器OP15には、Eのz成分E.zが入力され、演算器OP14の乗算結果2×dot(E,tex(N))×tex(N).zからEのz成分E.zが減算され、この減算結果(2×dot(E,tex(N))×tex(N).z−E.z)が反射ベクトルのz成分Rzとして信号線OL43を介してクロスバー回路13125に転送される。
【0172】
また、演算器群OPGRP2Aにおいて、演算器OP5には、テクスチャのR(赤)成分tex(R).rとパラメータKs.r(ベクタ値)が入力されて乗算されブレンドされる。そして、演算器OP5から、乗算結果tex(R).r・パラメータKs.rがカラーデータCrとして信号線OL21を介してクロスバー回路13125に転送される。
演算器群OPGRP3において、演算器OP9には、テクスチャのG(緑)成分tex(R).gとパラメータKs.g(ベクタ値)が入力されて乗算されブレンドされる。そして、演算器OP9から、乗算結果tex(R).g・パラメータKs.gがカラーデータCgとして信号線OL31を介してクロスバー回路13125に転送される。
演算器群OPGRP4において、演算器OP13には、テクスチャのB(青)成分tex(R).bとパラメータKs.b(ベクタ値)が入力されて乗算されブレンドされる。そして、演算器OP16から、乗算結果tex(R).b・パラメータKs.bがカラーデータCbとして信号線OL41を介してクロスバー回路13125に転送される。
【0173】
次に、グラフィックス処理における依存テクスチャ無しの場合の演算処理例について図33に関連付けて説明する。
【0174】
この場合、演算器群OPGRP1Aの演算器OP1が乗算器として機能し、演算器群OPGRP2Aの演算器OP5が乗算器として機能し、演算器群OPGRP3Aの演算器OP9が乗算器として機能するように再構成される。
【0175】
演算器群OPGRP1Aにおいて、演算器OP1には、テクスチャデータのR(赤)成分texl.rとプライマリカラーPC.rが入力されて乗算される。そして、演算器OP1から、乗算結果texl.r・PC.rが信号線OL11を介してクロスバー回路13125に転送される。
演算器群OPGRP2Aにおいて、演算器OP5には、テクスチャデータのG(緑)成分texl.gとプライマリカラーPC.gが入力されて乗算される。そして、演算器OP5から、乗算結果texl.g・PC.gが信号線OL21を介してクロスバー回路13125に転送される。
演算器群OPGRP3において、演算器OP9には、テクスチャデータのB(青)成分texl.BとプライマリカラーPC.Bが入力されて乗算される。そして、演算器OP9から、乗算結果texl.b・PC.bが信号線OL31を介してクロスバー回路13125に転送される。
【0176】
以上のように、本実施形態に係るピクセルエンジン13122は、小規模な演算器を疎な結合で結び、いわゆるデーアドリブン方式で動作の同期をとっている。
データドリブン方式では、ある演算器の出力が、次段の演算器の入力に至るのに有するクロックサイクル数の変動に寛容であるので、演算器間のデータ転送に要するクロック数が一様でなくても正常に演算を行うことができる。
したがって、本実施形態に係るピクセルエンジン13122によれば、データドリブン方式で動作の同期をとる方式とすることで、接続回路網上の任意の位置でステージングすることが可能である。
クロックスキューを最小化する必要がある領域を演算器ブロックという小領域内に限定することで、クロックスキューを最小化することが容易となり、高速な演算器ブロックが容易に実現できる。
演算器間の接続は、信号の伝播遅延時間とその電圧、温度、製造プロセスの変動、経年変化、クロストーク、クロックのジッタ、スキュー等を考慮した上でステージングする位置を決定することができる。
マイクロプロセッサ等の場合、高周波数化のためにステージングを増やすと、処理能力の低下要因となるため、ステージング数の決定には細心の注意を要するが、この方式では、容易にステージング数を決定することが可能である。
【0177】
ピクセル演算プロセッサ(POP)群13123は、メモリバンド幅を活かした高並列の演算処理を行う機能ユニットであるPOPを複数、本実施形態ではたとえば図34に示すように、POP0〜POP3の4個を有する。
各POPは、並列に配列されたPOPE(Pixel Operation Processing Element)と呼ばれる複数の演算器を有している。また、メモリに対するアドレス生成機能も有する。
ピクセル演算プロセッサ(POP)群13123とキャッシュ間は広いバンド幅で接続されており、かつメモリアクセスのためのアドレス生成機能を内蔵しているので、演算器の演算能力を最大限引き出すだけのストリームデータの供給が可能である。
【0178】
ピクセル演算プロセッサ(POP)群13123は、グラフィックス処理時には、たとえば以下の処理を行う。
たとえばグラフィックスユニット(GRU)13121から直接的に供給された(s1,t1,lod1),(s2,t2,lod2)の値に基づいて、テクスチャアクセスのための(u,v)アドレス計算を行い、アドレスデータ(ui,vi,lodi)に基づいて4近傍フィルタリングを行うための4近傍の(u,v)座標、すなわち、(u0,v0),(u1,v1),(u2,v2),(u3,v3)を計算してメモリコントローラMCに供給して、メモリモジュール132から所望のテクセルデータをたとえばリードオンリーキャッシュRO$を通して各POPEに読み出す。
また、ピクセル演算プロセッサ(POP)群13123は、係数生成のためのデータ(uf,vf,lodf)に基づいてテクスチャフィルタ係数Kを計算して各POPEに供給する。
そして、ピクセル演算プロセッサ(POP)群13123の各POPにおいて、色データ(TR,TG,TB)および混合値(ブレンド値:TA)を求め、(TR,TG,TB,TA)をクロスバー回路13125、レジスタユニット(RGU)13124を介してピクセルエンジン(PXE)13122に転送する。
【0179】
一方、ピクセル演算プロセッサ(POP)群13123は、画像処理時には、たとえば以下の処理を行う。
ピクセル演算プロセッサ(POP)群13123は、たとえばラスタライザ1311で生成されてレジスタユニット(RGU)13124に設定され、グラフィックスユニット(GRU)13121を素通りしてクロスバー回路13125を介さずに直接的に供給されたソースアドレス(X1s,Y1s)および(X2s,Y2s)に基づいて、たとえばリードオンリーキャッシュRO$および/またはリードライトキャッシュRW$を介して、メモリモジュール132にされている画像データを読み出し、読み出しデータに対して所定の演算処理を行って、演算結果をクロスバー回路13125、レジスタユニット(RGU)13124を介してライトユニットWUに転送する。
【0180】
なお、上述した機能を有するPOPのさらに具体的な構成については、後で詳述する。
【0181】
レジスタユニット(RGU)13124は、コア1312内の各機能ユニットで処理されるストリームデータを格納するFIFO構造のレジスタファイルである。
また、ハードウェアリソースの関係で、DFGを複数のサブDFG(Sub−DFG)に分割して実行しなければならない場合に、サブDFG間の中間値格納バッファとしても機能する。
図12に示すように、レジスタユニット(RGU)13124内のFIFOレジスタFREGの出力と機能ユニットであるピクセルエンジン(PXE)13122、ピクセル演算プロセッサ(POP)群13123の各演算器の入力ポートとは、1対1に対応する。
【0182】
クロスバー回路13125は、コア1312が、DFGに応じて機能ユニット間の接続を替えることにより様々なアルゴリズムに対応可能なように、この接続切り替えを実現する。
上述したように、レジスタユニット(RGU)13124内のFIFOレジスタFREGの出力と機能ユニットの入力ポートは固定で1対1に対応するが、機能ユニットの出力ポートとレジスタユニット(RGU)13124内のFIFOレジスタFREGの入力をクロスバー回路13125で切り替える。
【0183】
図35は、POP(ピクセル演算プロセッサ)とメモリ間の接続形態およびPOPの構成例を示す図である。
なお、図35の例は、各POP(0〜3)は、並列に配列された4個の演算器POPE0〜POPE3を有する場合である。
【0184】
また、本実施形態においては、ローカルモジュール13(−0〜−3)のメモリモジュール132(−0〜−3)には画像データが記憶されるが、ローカルモジュール13(−0〜−3)は、POP(0〜3)とメモリモジュール132間にそれぞれ分割ローカルキャッシュD133(−0〜−3)を有している。
このような構成において、POP0〜3でピクセルレベルの並列演算処理を行う場合、画像データのアクセスには、次の2通りの方法がある。
第1は、メモリモジュール132に格納されている画像データを直接読み出して演算を行う方法である。
第2は、メモリモジュール132に格納されている画像データのうち、演算に必要とされる一部のデータをローカルキャッシュ133に格納し、ローカルキャッシュ133のデータを読み出して演算を行う方法である。
【0185】
本実施形態においては、上述した第2の方法を採用している。
ローカルキャッシュ133は、POP(0〜3)の各POPE0〜POPE3に対応してそれぞれリードオンリーキャッシュRO$0〜RO$3、並びに、リードライトキャッシュRW$0〜RW$3が配置されている。
【0186】
また、ローカルキャッシュ133は、図35に示すように、セレクタSEL1〜SEL12を有する。
セレクタSEL1〜SEL4は、メモリモジュール132の対応するリードラインポートp(0)〜p(3)からの32ビット幅の読み出しデータまたは他のポートからの読み出しデータのいずれかを選択して、リードライトキャッシュRW$0〜RW$3およびセレクタSEL9〜SEL12に出力する。
セレクタSEL5は、POPのPOPE0の演算結果またはライトユニットWUの処理結果のいずれかを選択してリードライトキャッシュRW$0に供給する。
セレクタSEL6は、POPのPOPE1の演算結果またはライトユニットWUの処理結果のいずれかを選択してリードライトキャッシュRW$1に供給する。
セレクタSEL7は、POPのPOPE2の演算結果またはライトユニットWUの処理結果のいずれかを選択してリードライトキャッシュRW$2に供給する。
セレクタSEL8は、POPのPOPE3の演算結果またはライトユニットWUの処理結果のいずれかを選択してリードライトキャッシュRW$3に供給する。
セレクタSEL9は、セレクタSEL1によるデータまたはグローバルモジュール12により転送されたデータのいずれかを選択してリードオンリーキャッシュRO$0に供給する。
セレクタSEL10は、セレクタSEL2によるデータまたはグローバルモジュール12により転送されたデータのいずれかを選択してリードオンリーキャッシュRO$1に供給する。
セレクタSEL11は、セレクタSEL3によるデータまたはグローバルモジュール12により転送されたデータのいずれかを選択してリードオンリーキャッシュRO$2に供給する。
セレクタSEL12は、セレクタSEL4によるデータまたはグローバルモジュール12により転送されたデータのいずれかを選択してリードオンリーキャッシュRO$3に供給する。
【0187】
各POP(0〜3)は、並列に配列された4個の演算器POPE0〜POPE3に加えて第4の機能ユニットとしてのライトユニットWU、フィルタ機能ユニットFFU、出力選択回路OSLC、およびアドレス生成器AGを有している。
【0188】
ライトユニットWUは、グラフィックス処理の場合には、レジスタユニット(RGU)13124からのソースデータ、具体的には色データ(RGB)および混合値データ(A)、並びに奥行きデータ(Z)と、リードライトキャッシュRW$からのデスティネーション色データ(RGB)および混合値データ(A)、並びに奥行きデータ(Z)に基づいて、αブレンディング、各種テスト、ロジカルオペレーションといったグラフィックス処理のピクセル書き込みに必要な演算を行い、演算結果をリードライトキャッシュRW$に書き戻す。
また、ライトユニットWUは、画像処理の場合には、ピクセル演算プロセッサ(POP)群13123による演算結果のデータを、たとえばレジスタユニット(RGU)13124の特定のFIFOレジスタから直接的に入力したデスティネーションアドレス(Xd,Yd)に、リードライトキャッシュRW$を介してメモリモジュール132に格納する。
【0189】
なお、図35の例では、ライトユニットWUを各POPに設けている例を示しているが、一つのPOPのみに設けて複数の分割ローカルキャッシュD133に供給する、あるいは2個のPOPに対して一つを設けて対応する分割ローカルキャッシュD133に供給する、あるいはPOPとは別個に設ける等、種々の態様で構成可能である。
【0190】
フィルタ機能ユニットFFUは、各POPE0〜POPE3にレジスタユニットレジスタ(RGU)13124のFIFOレジスタにセットされる演算用パラメータ、具体的には、レジスタユニット(RGU)13124を介して、あるいはグラフィックスユニット(GRU)13121から直接的に供給された(s,t,lod)の値に基づいて、(u,v)アドレス計算を行い、アドレスデータ(si,ti,lodi)をアドレス生成器AGに出力し、係数生成のためのデータ(sf,tf,lodf)に基づいてテクスチャフィルタ係数Kを算出し、算出したフィルタ係数を対応する各POPE0〜POPE3に供給する。
【0191】
アドレス生成器AGは、フィルタ機能ユニットFFUにより供給されたアドレスデータ(si,ti,lodi)に基づいて4近傍フィルタリングを行うための4近傍の(u,v)座標、すなわち、(u0,v0),(u1,v1),(u2,v2),(u3,v3)を計算し、メモリコントローラMCに供給する。
【0192】
なお、メモリコントローラMCは、リードオンリーキャッシュRO$をグローバルバスから送られるデータのローカルキャッシュとして用いる場合には、(u,v)座標を基に物理アドレスを計算し、キャッシュヒット、グローバルバスへのリクエスト送出、リードオンリーキャッシュRO$フィルなどを行い、リードオンリーキャッシュRO$から対応するPOPにデータを送出させる。
メモリコントローラMCは、リードライトキャッシュRW$をメモリモジュール132への書き込みキャッシュとして用いる場合には、デスティネーションアドレス(Xd,Yd)を基に物理アドレスを計算し、キャッシュ、メモリモジュール132への書き戻し制御を行う。
【0193】
POPE0は、リードオンリーキャッシュRO$0またはリードライトキャッシュRW$0から読み出された32ビット幅のデータおよびフィルタ機能ユニットFFUによる演算パラメータ(たとえばフィルタ係数)を受けて所定の演算(たとえば加算)を行って、演算結果を次段のPOPE1に出力する。また、POPE0は、この所定の演算結果を出力選択回路OSLCに出力する8ビット×4の出力ラインOTL0を有する。
また、POPE0は、クロスバー回路13125を転送され、レジスタユニット(RGU)13124に設定されたデータを受けて所定の演算を行い、この演算結果を分割ローカルキャッシュD133(0)のセレクタSEL5を介してリードライトキャッシュRW$0に出力する。
【0194】
POPE1は、リードオンリーキャッシュRO$1またはリードライトキャッシュRW$1から読み出された32ビット幅のデータおよびフィルタ機能ユニットFFUによる演算パラメータを受けて所定の演算(たとえば加算)を行い、この演算結果とPOPE0により演算結果を加算して次段のPOPE2に出力する。また、POPE1は、この所定の演算結果を出力選択回路OSLCに出力する8ビット×4の出力ラインOTL1を有する。
また、POPE1は、クロスバー回路13125を転送され、レジスタユニット(RGU)13124に設定されたデータを受けて所定の演算を行い、この演算結果を分割ローカルキャッシュD133(0)のセレクタSEL6を介してリードライトキャッシュRW$1に出力する。
【0195】
POPE2は、リードオンリーキャッシュRO$2またはリードライトキャッシュRW$2から読み出された32ビット幅のデータおよびフィルタ機能ユニットFFUによる演算パラメータを受けて所定の演算(たとえば加算)を行い、この演算結果とPOPE1により演算結果を加算して次段のPOPE3に出力する。また、POPE2は、この所定の演算結果を出力選択回路OSLCに出力する8ビット×4の出力ラインOTL2を有する。
また、POPE2は、クロスバー回路13125を転送され、レジスタユニット(RGU)13124に設定されたデータを受けて所定の演算を行い、この演算結果を分割ローカルキャッシュD133(0)のセレクタSEL7を介してリードライトキャッシュRW$2に出力する。
【0196】
POPE3は、リードオンリーキャッシュRO$3またはリードライトキャッシュRW$3から読み出された32ビット幅のデータおよびフィルタ機能ユニットFFUによる演算パラメータを受けて所定の演算(たとえば加算)を行い、この演算結果とPOPE2により演算結果を加算して、この演算結果(一つのPOP内の総計)を8ビット×4の出力ラインOTL3により出力選択回路OSLCに出力する。
また、POPE3は、クロスバー回路13125を転送され、レジスタユニット(RGU)13124に設定されたデータを受けて所定の演算を行い、この演算結果を分割ローカルキャッシュD133(0)のセレクタSEL8を介してリードライトキャッシュRW$3に出力する。
【0197】
図36は、本実施形態に係るPOPE(0〜3)の具体的な構成例を示す回路図である。
本POPEは、図36に示すように、マルチプレクサ(MUX)401〜405、加減算器(addsub)406、乗算器(mul)407、加減算器(addsub)408、および積算レジスタ409を有している。
【0198】
マルチプレクサ401は、レジスタユニット(RGU)13124によるデータ、フィルタ機能ユニットFFUによる演算パラメータ、リードオンリーキャッシュRO$(0〜3)、またはリードライトキャッシュRW$(0〜3)から読み出されたデータのうちの一つを選択して、加減算器406に供給する。
【0199】
マルチプレクサ402は、レジスタユニット(RGU)13124によるデータ、リードオンリーキャッシュRO$(0〜3)、またはリードライトキャッシュRW$(0〜3)から読み出されたデータのうちの一つを選択して、加減算器406に供給する。
【0200】
マルチプレクサ403は、レジスタユニット(RGU)13124によるデータ、フィルタ機能ユニットFFUによる演算パラメータ、リードオンリーキャッシュRO$(0〜3)、またはリードライトキャッシュRW$(0〜3)から読み出されたデータのうちの一つを選択して、乗算器407に供給する。
【0201】
マルチプレクサ404は、前段のPOPE(0〜2)の演算結果または積算レジスタ409の出力データのうちのいずれかを選択して加減算器408に供給する。
【0202】
マルチプレクサ405は、レジスタユニット(RGU)13124によるデータ、フィルタ機能ユニットFFUによる演算パラメータ、リードオンリーキャッシュRO$(0〜3)、またはリードライトキャッシュRW$(0〜3)から読み出されたデータのうちの一つを選択して、加減算器408に供給する。
【0203】
加減算器406は、マルチプレクサ401の選択データとマルチプレクサ402の選択データを加算(減算)して、乗算器407に出力する。
乗算器407は、加減算器406の出力データとマルチプレクサ403の選択データを乗算器して、加減算器408に出力する。
加減算器408は、乗算器407と出力データ、マルチプレクサ404の選択データ、マルチプレクサ405の選択データを加算(減算)して積算レジスタ409に出力する。
そして、積算レジスタ409の保持されたデータが、各POPEの演算結果ととして、出力選択回路OSLCおよび次段のPOPE(1〜3)に出力される。
【0204】
出力選択回路OSLCは、各POPE0〜P0PE3の出力ラインOTL0〜OTL3を転送された演算データのうちのいずれかの演算データを選択して、クロスバー回路13125に出力する機能を有する。
本実施形態では、出力選択回路OSLCは、一つのPOP内の総計を出力するPOPE3の出力ラインOTL3を転送された演算データを選択し、クロスバー回路13125に出力するように構成されている。
クロスバー回路13125に出力された演算データは、レジスタユニット13124に設定され、この設定データがクロスバー回路13125を介さずに直接的にピクセルエンジン13122の所定の演算器に供給される。
【0205】
アドレス生成器AGは、図37に示すように、メモリモジュール132からのデータ転送は、1列(4つのPOP分)同時に行われ、各分割ローカルキャッシュD133(0)〜D133(3)の各リードオンリーキャッシュRO$0〜RO$3またはリードライトキャッシュRW$0〜RW$3へのアクセスは、独立して行われることから、各リードオンリーキャッシュRO$0〜RO$3またはリードライトキャッシュRW$0〜RW$3に、メモリモジュール132のポートp(0)〜p(3)から並列的に読み出されている要素データを、対応するPOPE0〜POPE3に読み出すためのキャッシュアドレスCADR0〜CADR3をそれぞれ生成し、供給する。
アドレス生成器AGは、たとえばPOPE0の演算結果OPR0が、POPE1の演算が終了するタイミングでPOPE1に供給され、POPE1の演算結果(POPE0の演算結果OPR0を加算した結果)OPR1が、POPE2の演算が終了するタイミングでPOPE2に供給され、POPE2の演算結果(POPE1の演算結果OPR1を加算した結果)OPR2が、POPE3の演算が終了するタイミングでPOPE3に供給されるように、各リードオンリーキャッシュRO$0〜RO$3またはリードライトキャッシュRW$0〜RW$3に所定タイミングをずらしてキャッシュアドレスCADR0〜CADR3を供給する。たとえば各POPE0〜POPE3に供給される要素データ数が同じであり、各POPE0〜POPE3で要素データを順に加算して行く場合には、アドレス供給タイミングを1アドレスずつ順にずらしてアドレス供給が行われる。
これにより、ミスのない演算を効率的に行える。すなわち、本実施形態に係るコア1312では、演算効率の向上が図られている。
【0206】
次に、メモリのデータの基づいてピクセル演算プロセッサ群13123で演算処理を行い、さらにピクセルエンジン13122で演算を行う場合の動作を、図38〜図41に関連付けて説明する。
なお、ここでは、図39(A)に示すように、縦16、横16の16×16の16列の要素データについて演算を行う場合を例に説明する。
【0207】
ステップST51
まず、ステップST51において、メモリモジュール(eDRAM)132からローカルキャッシュ133のリードオンリーキャッシュRO$0〜RO$3へ1列(4つのPOP分)同時に転送される。
次に、図40(A),(C),(E),(G)に示すように、アドレス生成器AGにより各キャッシュに独立に、かつ、1POP内のPOPE0〜POPE3に1アドレスずつ順にずらしてキャッシュアドレスCADR0〜CADR3の供給が行われる。
これにより、各POP0〜POP3の各POPE0〜POPE3に16個の要素データが順に読み出される。
【0208】
たとえば分割ローカルキャッシュD133(0)のリードオンリーキャッシュRO$0にキャッシュアドレスCADR00〜CADR0Fが順に与えられ、これに応じてPOP0のPOPE0に1列分のデータ00〜0Fが読み出される。同様に、分割ローカルキャッシュD133(0)のリードオンリーキャッシュRO$1にキャッシュアドレスCADR10〜CADR1Fが順に与えられ、これに応じてPOP0のPOPE1に1列分のデータ10〜1Fが読み出される。分割ローカルキャッシュD133(0)のリードオンリーキャッシュRO$2にキャッシュアドレスCADR20〜CADR2Fが順に与えられ、これに応じてPOP0のPOPE2に1列分のデータ20〜2Fが読み出される。
分割ローカルキャッシュD133(0)のリードオンリーキャッシュRO$3にキャッシュアドレスCADR30〜CADR3Fが順に与えられ、これに応じてPOP0のPOPE3に1列分のデータ30〜3Fが読み出される。
【0209】
分割ローカルキャッシュD133(1)のリードオンリーキャッシュRO$0にキャッシュアドレスCADR40〜CADR4Fが順に与えられ、これに応じてPOP1のPOPE0に1列分のデータ40〜4Fが読み出される。
同様に、分割ローカルキャッシュD133(1)のリードオンリーキャッシュRO$1にキャッシュアドレスCADR50〜CADR5Fが順に与えられ、これに応じてPOP1のPOPE1に1列分のデータ50〜5Fが読み出される。
分割ローカルキャッシュD133(1)のリードオンリーキャッシュRO$2にキャッシュアドレスCADR60〜CADR6Fが順に与えられ、これに応じてPOP1のPOPE2に1列分のデータ60〜6Fが読み出される。
分割ローカルキャッシュD133(1)のリードオンリーキャッシュRO$3にキャッシュアドレスCADR70〜CADR7Fが順に与えられ、これに応じてPOP1のPOPE3に1列分のデータ70〜7Fが読み出される。
【0210】
分割ローカルキャッシュD133(2)のリードオンリーキャッシュRO$0にキャッシュアドレスCADR80〜CADR8Fが順に与えられ、これに応じてPOP2のPOPE0に1列分のデータ80〜8Fが読み出される。
同様に、分割ローカルキャッシュD133(2)のリードオンリーキャッシュRO$1にキャッシュアドレスCADR90〜CADR9Fが順に与えられ、これに応じてPOP2のPOPE1に1列分のデータ90〜9Fが読み出される。
分割ローカルキャッシュD133(2)のリードオンリーキャッシュRO$2にキャッシュアドレスCADRA0〜CADRAFが順に与えられ、これに応じてPOP2のPOPE2に1列分のデータA0〜AFが読み出される。
分割ローカルキャッシュD133(2)のリードオンリーキャッシュRO$3にキャッシュアドレスCADRB0〜CADRBFが順に与えられ、これに応じてPOP2のPOPE3に1列分のデータB0〜BFが読み出される。
【0211】
分割ローカルキャッシュD133(3)のリードオンリーキャッシュRO$0にキャッシュアドレスCADRC0〜CADRCFが順に与えられ、これに応じてPOP3のPOPE0に1列分のデータC0〜CFが読み出される。
同様に、分割ローカルキャッシュD133(3)のリードオンリーキャッシュRO$1にキャッシュアドレスCADRD0〜CADRDFが順に与えられ、これに応じてPOP3のPOPE1に1列分のデータD0〜DFが読み出される。
分割ローカルキャッシュD133(3)のリードオンリーキャッシュRO$2にキャッシュアドレスCADRE0〜CADREFが順に与えられ、これに応じてPOP3のPOPE2に1列分のデータE0〜EFが読み出される。
分割ローカルキャッシュD133(3)のリードオンリーキャッシュRO$3にキャッシュアドレスCADRF0〜CADRFFが順に与えられ、これに応じてPOP3のPOPE3に1列分のデータF0〜FFが読み出される。
【0212】
ステップST52
ステップST52において、各POP(0〜3)の各POPE0〜POPE3で、1要素が1列分(16個)加算される。
具体的には、POP0のPOPE0では、図40(B)に示すように、データ00〜0Fが順次に加算され、演算結果OPR0がPOPE1に出力される。
POP0のPOPE1では、図40(D)に示すように、データ10〜1Fが順次に加算される。
POP0のPOPE2では、図40(F)に示すように、データ20〜2Fが順次に加算される。
POP0のPOPE3では、図40(H)に示すように、データ30〜3Fが順次に加算される。
他のPOP1〜POP3においても同様に行われる。
【0213】
ステップST53
ステップST53においては、各POP(0〜3)の各POPE0〜POPE3の演算結果が加算され、16×4要素の加算結果を得る。
具体的には、図40(B),(D)に示すように、POP0のPOPE0の演算結果OPR0がPOPE1に出力される。
POP0のPOPE1では、図40(D),(F)に示すように、自身の演算結果に、POP0のPOPE0の演算結果OPR0が加算され、その演算結果OPR1がPOPE2に出力される。
POP0のPOPE2では、図40(F),(H)に示すように、自身の演算結果に、POP0のPOPE1の演算結果OPR1が加算され、その演算結果OPR2がPOPE3に出力される。
そして、POP0のPOPE3では、図40(H)に示すように、自身の演算結果に、POP0のPOPE2の演算結果OPR2が加算され、その演算結果OPR3が出力選択回路OSLCに出力される。
他のPOP1〜POP3においても同様に行われる。
【0214】
ステップST54
ステップST54においては、各POP0〜POP3の出力選択回路OSLCから総演算結果OPR3がクロスバー回路13125を介してレジスタユニット(RGU)13124に転送される。
たとえば図41に示すように、POP0のPOPE3の総演算結果OPR3は、クロスバー回路13125を経由してレジスタユニット(RGU)13124のFIFOレジスタFREG1に格納される。
POP1のPOPE3の総演算結果OPR3は、クロスバー回路13125を経由してレジスタユニット(RGU)13124のFIFOレジスタFREG2に格納される。
POP2のPOPE3の総演算結果OPR3は、クロスバー回路13125を経由してレジスタユニット(RGU)13124のFIFOレジスタFREG3に格納される。
POP3のPOPE3の総演算結果OPR3は、クロスバー回路13125を経由してレジスタユニット(RGU)13124のFIFOレジスタFREG4に格納される。
【0215】
ステップST55
ステップST55においては、レジスタユニット(RGU)13124のFIFOレジスタFREG1およびFREG2にセットされたPOP0とPOP1の総演算結果が、ピクセルエンジン(PXE)13122の第1の加算器ADD1で加算され、この演算結果がクロスバー回路13125を介してレジスタユニット(RGU)13124のFIFOレジスタFREG5に格納される。
また、レジスタユニット(RGU)13124のFIFOレジスタFREG3およびFREG4にセットされたPOP2とPOP3の総演算結果が、ピクセルエンジン(PXE)13122の第2の加算器ADD2で加算され、この演算結果がクロスバー回路13125を介してレジスタユニット(RGU)13124のFIFOレジスタFREG6に格納される。
そして、レジスタユニット(RGU)13124のFIFOレジスタFREG5およびFREG6にセットされた第1および第2の加算器ADD1,ADD2の演算結果が、ピクセルエンジン(PXE)13122の第3の加算器ADD3で加算される。
【0216】
ステップST56
ステップST56では、図40(P)に示すように、ピクセルエンジン(PXE)13122の第3の加算器ADD3の加算結果が一連の演算結果として出力される。
【0217】
図42は、本実施形態に係る処理ユニットにおけるコアのピクセルエンジン(PXE)13122、ピクセル演算プロセッサ(POP)群13123、レジスタユニット(RGU)13124、並びにメモリ部分を含む動作概要を示す図である。
【0218】
図42において、破線はアドレス系データの流れを、一点鎖線はリードデータの流れを、実線はライトデータの流れをそれぞれ示している。
また、レジスタユニット(RGU)13124において、FREGA1,FREGA2はアドレス系に用いられるFIFOレジスタを、FREGRはリードデータに用いられるFIFOレジスタを、FREGWはライトデータに用いられるFIFOレジスタをそれぞれ示している。
【0219】
図42の例では、ラスタライザ1311によって生成されるたとえばソース(読み出し用)アドレスデータが、クロスバー回路13125を介してレジスタユニット(RGU)13124のFIFOレジスタFREGA1,FREGA2にセットされる。
そして、FIFOレジスタFREGA1にセットされたアドレスデータは、たとえばクロスバー回路13125を介さずに直接的にピクセル演算プロセッサ(POP)13123のアドレス生成器AG1に供給される。アドレス生成器AG1において読み出すべきデータのアドレスが生成され、これに基づきメモリモジュール132からリードオンリーキャッシュ1331に読み出された所望のデータがピクセル演算プロセッサ(POP)13123の各演算器(POPE)に供給される。
【0220】
ピクセル演算プロセッサ(POP)13123の各演算器(POPE)の演算結果がクロスバー回路13125を介してレジスタユニット(RGU)13124のFIFOレジスタFREGRにセットされる。
FIFOレジスタFREGRにセットされたデータは、クロスバー回路13125を介さずに直接的にピクセルエンジン(PXE)13122の各演算器OPに供給される。
そして、ピクセルエンジン(PXE)13122の各演算器OPの演算結果がクロスバー回路13125を介してレジスタユニット(RGU)13124のFIFOレジスタFREGWにセットされる。
FIFOレジスタFREGWにセットされたデータは、ピクセル演算プロセッサ(POP)13123の各演算器(POPE)に供給される。
【0221】
また、ラスタライザ1311によって生成されるデスティネーション(書き込み用)アドレスデータが、クロスバー回路13125を介してレジスタユニット(RGU)13124のFIFOレジスタFREGA2にセットされる。
そして、FIFOレジスタFREGA2にセットされたアドレスデータは、クロスバー回路13125を介さず直接的にピクセル演算プロセッサ(POP)13123のアドレス生成器AG2に供給される。アドレス生成器AG2において書き込むべきデータのアドレスが生成され、これに基づきピクセル演算プロセッサ(POP)13123の各演算器(POPE)の演算結果がリードライトキャッシュ1332に書き込まれ、さらにメモリモジュール132に書き込まれる。
【0222】
なお、図42の例では、リードライトキャッシュ1332は書き込みだけを行うように記述しているが、上述したリードオンリーキャッシュ1331の場合と同様な動作で読み出しも行う。
【0223】
次に、以上の構成を有する処理ユニット131(−0〜−3)におけるグラフィックス処理および画像処理の場合の具体的な動作を図面に関連付けて説明する。
【0224】
まず、依存テクスチャ無しの場合のグラフィックス処理を図43および図44に関連付けて説明する。
【0225】
この場合、ラスタライザ1311において、グローバルモジュール12からブロードキャストされたパラメータデータを受けて、たとえば三角形が自分が担当する領域であるか否かが判断され、担当領域である場合には、入力した三角形頂点データに基づいて、各ピクセルデータが生成されてコア1312に供給される。
具体的には、ラスタライザ1311において、ウィンドウ座標(X,Y,Z)、プライマリカラー(PC;Rp,Gp,Bp,Ap)、セカンダリカラー(SC;Rs,Gs,Bs,As)、Fog係数(f)、テクスチャ座標や各種ベクトル(V1x,V1y,V1z),(V2x,V2y,V2z)の各種ピクセルデータが生成される。
【0226】
そして、生成されたウィンドウ座標(X,Y,Z)は、レジスタユニット(RGU)13124の特定のFIFOレジスタを通して、直接的にピクセル演算プロセッサ(POP)群13123内に、あるいは別個に設けられたライトユニットWUに供給される。
また、生成された2組のテクスチャ座標データや各種ベクトル(V1x,V1y,V1z),(V2x,V2y,V2z)が、クロスバー回路13125、レジスタユニット(RGU)13124のFIFOレジスタを通してグラフィックスユニット(GRU)12121に供給される。
さらに、生成されたプライマリカラー(PC)、セカンダリカラー(SC)、Fog係数(F)が、クロスバー回路13125、レジスタユニット(RGU)13124のFIFOレジスタを通してピクセルエンジン(PXE)13122に供給される。
【0227】
グラフィックスユニット(GRU)13121では、供給されたテクスチャ座標データや各種ベクトル(V1x,V1y,V1z)、および(V2x,V2y,V2z)に基づいて、パースペクティブコレクション、LOD(Level
of Detail)計算によるミップマップ(MIPMAP)レベルの算出、立方体マップ(CubeMap)の面選択や正規化テクセル座標(s,t)の算出処理が行われる。
そして、グラフィックスユニット(GRU)13121で生成された、たとえば正規化テクセル座標(s,t)およびLODデータ(lod)を含む2組のデータ(s1,t1,lod1),(s2,t2,lod2)が、たとえばクロスバー回路13125を通さず個別の配線を介して直接的にピクセル演算プロセッサ(POP)群13123に供給される。
【0228】
ピクセル演算プロセッサ(POP)群13123では、図44に示すように、フィルタ機能ユニットFFUにおいてグラフィックスユニット(GRU)13121から直接的に供給された(s1,t1,lod1),(s2,t2,lod2)の値に基づいて、テクスチャアクセスのための(u,v)アドレス計算が行われ、アドレスデータ(ui,vi,lodi)がアドレス生成器AGに供給され、係数計算のためにデータ(uf,vf,lodf)が係数生成部COFに供給される。
【0229】
アドレス生成器AGにおいては、アドレスデータ(ui,vi,lodi)を受けて、4近傍フィルタリングを行うための4近傍の(u,v)座標、すなわち、(u0,v0),(u1,v1),(u2,v2),(u3,v3)が計算され、メモリコントローラMCに供給される。
これにより、メモリモジュール132から所望のテクセルデータがたとえばリードオンリーキャッシュRO$を通して、ピクセル演算プロセッサ(POP)群13123の各POPEに読み出される。
また、係数生成器COFでは、データ(uf,vf,lodf)を受けて、テクスチャフィルタ係数K(0〜3)が計算され、ピクセル演算プロセッサ(POP)群13123の対応する各POPEに供給される。
そして、ピクセル演算プロセッサ(POP)群13123の各POPにおいて、色データ(TR,TG,TB)および混合値(ブレンド値:TA)が求められ、2組のデータ(TR1,TG1,TB1,TA1)および(TR2,TG2,TB2,TA2)が、クロスバー回路13125を転送されてレジスタユニット(RGU)13124の所定のFIFOレジスタに設定され、この設定データがクロスバー回路13125を介さずに直接的にピクセルエンジン(PXE)13122に供給される。
【0230】
ピクセルエンジン(PXE)13122では、ピクセル演算プロセッサ(POP)群13123によるデータ(TR1,TG1,TB1,TA1)および(TR2,TG2,TB2,TA2)、並びに、ラスタライザ1311によるプライマリカラー(PC)、セカンダリカラー(SC)、Fog係数(F)に基づいて、たとえばPixel Shaderの演算が行われ、色データ(FR1,FG1,FB1)および混合値(ブレンド値:FA1)が求められ、このデータ(FR1,FG1,FB1,FA1)が、クロスバー回路13125を転送されてレジスタユニット(RGU)13124の所定のFIFOレジスタに設定され、この設定データがクロスバー回路13125を介さずに直接的にピクセル演算プロセッサ(POP)群13123の所定のPOP内あるいは別個に設けられたライトユニットWUに供給される。
【0231】
ライトユニットWUでは、ラスタライザ1311によるウィンドウ座標(X,Y,Z)に基づき、たとえばリードライトキャッシュRW$を通してメモリモジュール132からデスティネーション色データ(RGB)および混合値データ(A)、並びに奥行きデータ(Z)が読み出される。
そして、ライトユニットWUでは、ピクセルエンジン(PXE)13122によるデータ(FR1,FG1,FB1,FA1)、およびリードライトキャッシュRW$を通してメモリモジュール132から読み出しデスティネーション色データ(RGB)および混合値データ(A)、並びに奥行きデータ(Z)に基づいて、αブレンディング、各種テスト、ロジカルオペレーションといったグラフィックス処理のピクセル書き込みに必要な演算が行われ、演算結果がリードライトキャッシュRW$に書き戻される。
【0232】
次に、依存テクスチャ有りの場合のグラフィックス処理を図45および図44に関連付けて説明する。
【0233】
この場合、ラスタライザ1311において、ウィンドウ座標(X,Y,Z)、プライマリカラー(PC;Rp,Gp,Bp,Ap)、セカンダリカラー(SC;Rs,Gs,Bs,As)、Fog係数(f)、テクスチャ座標(V1x,V1y,V1z)の各種ピクセルデータが生成される。
【0234】
そして、生成されたウィンドウ座標(X,Y,Z)は、レジスタユニット(RGU)13124の特定のFIFOレジスタを通して、直接的にピクセル演算プロセッサ(POP)群13124に供給される。
また、生成されたテクスチャ座標(V1x,V1y,V1z)が、クロスバー回路13125、レジスタユニット(RGU)13124のFIFOレジスタを通してグラフィックスユニット(GRU)12121に供給される。
さらに、生成されたプライマリカラー(PC)、セカンダリカラー(SC)、Fog係数(F)が、クロスバー回路13125、レジスタユニット(RGU)13124のFIFOレジスタを通してピクセルエンジン(PXE)13122に供給される。
【0235】
グラフィックスユニット(GRU)13121では、供給されたテクスチャ座標(V1x,V1y,V1z)データに基づいて、パースペクティブコレクション、LOD計算によるミップマップ(MIPMAP)レベルの算出、立方体マップ(CubeMap)の面選択や正規化テクセル座標(s,t)の算出処理が行われる
そして、グラフィックスユニット(GRU)13121で生成された、たとえば正規化テクセル座標(s,t)およびLODデータ(lod)を含む1組のデータ(s1,t1,lod1)が、たとえばクロスバー回路13125を通さず直接的にピクセル演算プロセッサ(POP)群13123に供給される。
【0236】
ピクセル演算プロセッサ(POP)群13123では、図44に示すように、フィルタ機能ユニットFFUにおいてグラフィックスユニット(GRU)13121から直接的に供給された(s1,t1,lod1)の値に基づいて、テクスチャアクセスのための(u,v)アドレス計算が行われ、アドレスデータ(ui,vi,lodi)がアドレス生成器AGに供給され、係数計算のためにデータ(uf,vf,lodf)が係数生成部COFに供給される。
【0237】
アドレス生成器AGにおいては、アドレスデータ(ui,vi,lodi)を受けて、4近傍フィルタリングを行うための4近傍の(u,v)座標、すなわち、(u0,v0),(u1,v1),(u2,v2),(u3,v3)が計算され、メモリコントローラMCに供給される。
これにより、メモリモジュール132から所望のテクセルデータがたとえばリードオンリーキャッシュRO$を通して、ピクセル演算プロセッサ(POP)群13123の各POPEに読み出される。
また、係数生成器COFでは、データ(uf,vf,lodf)を受けて、テクスチャフィルタ係数K(0〜3)が計算され、ピクセル演算プロセッサ(POP)群13123の各POPEに供給される。
そして、ピクセル演算プロセッサ(POP)群13123の各POPにおいて、色データ(TR,TG,TB)および混合値(ブレンド値:TA)が求められ、データ(TR1,TG1,TB1,TA1)が、クロスバー回路13125を転送されてレジスタユニット(RGU)13124の所定のFIFOレジスタに設定され、この設定データがクロスバー回路13125を介さずに直接的にピクセルエンジン(PXE)13122に供給される。
【0238】
ピクセルエンジン(PXE)13122では、ピクセル演算プロセッサ(POP)群13123によるデータ(TR1,TG1,TB1,TA1)、並びに、ラスタライザ1311によるプライマリカラー(PC)、セカンダリカラー(SC)、Fog係数(F)に基づいて、たとえばPixel Shaderの演算が行われ、テクスチャ座標(V2x,V2y,V2z)が生成され、クロスバー回路13125、レジスタユニット(RGU)13124を介してグラフィックスユニット(GRU)13121に供給される。
【0239】
グラフィックスユニット(GRU)13121では、供給されたテクスチャ座標(V2x,V2y,V2z)データに基づいて、パースペクティブコレクション、LOD計算によるミップマップ(MIPMAP)レベルの算出、立方体マップ(CubeMap)の面選択や正規化テクセル座標(s,t)の算出処理が行われる。
そして、グラフィックスユニット(GRU)13121で生成された、たとえば正規化テクセル座標(s,t)およびLODデータ(lod)を含むデータ(s2,t2,lod2)が、たとえばクロスバー回路13125を通さず直接的にピクセル演算プロセッサ(POP)群13123に供給される。
【0240】
ピクセル演算プロセッサ(POP)群13123では、図44に示すように、フィルタ機能ユニットFFUにおいてグラフィックスユニット(GRU)13121から直接的に供給された(s2,t2,lod2)の値に基づいて、テクスチャアクセスのための(u,v)アドレス計算が行われ、アドレスデータ(ui,vi,lodi)がアドレス生成器AGに供給され、係数計算のためにデータ(uf,vf,lodf)が係数生成部COFに供給される。
【0241】
アドレス生成器AGにおいては、アドレスデータ(ui,vi,lodi)を受けて、4近傍フィルタリングを行うための4近傍の(u,v)座標、すなわち、(u0,v0),(u1,v1),(u2,v2),(u3,v3)が計算され、メモリコントローラMCに供給される。
これにより、メモリモジュール132から所望のテクセルデータがたとえばリードオンリーキャッシュRO$を通して、ピクセル演算プロセッサ(POP)群13123の各POPEに読み出される。
また、係数生成器COFでは、データ(uf,vf,lodf)を受けて、テクスチャフィルタ係数K(0〜3)が計算され、ピクセル演算プロセッサ(POP)群13123の各POPEに供給される。
そして、ピクセル演算プロセッサ(POP)群13123の各POPにおいて、色データ(TR,TG,TB)および混合値(ブレンド値:TA)が求められ、データ(TR2,TG2,TB2,TA2)が、クロスバー回路13125を転送されてレジスタユニット(RGU)13124の所定のFIFOレジスタに設定され、この設定データがクロスバー回路13125を介さずに直接的にピクセルエンジン(PXE)13122に供給される。
【0242】
ピクセルエンジン(PXE)13122では、ピクセル演算プロセッサ(POP)群13123によるデータ(TR2,TG2,TB2,TA2)、並びに、ラスタライザ1311によるプライマリカラー(PC)、セカンダリカラー(SC)、Fog係数(F)に基づいて、4近傍補間等の所定のフィルタリング演算処理が行われ、色データ(FR1,FG1,FB1)および混合値(ブレンド値:FA1)が求められ、このデータ(FR1,FG1,FB1,FA1)が、クロスバー回路13125を転送されてレジスタユニット(RGU)13124の所定のFIFOレジスタに設定され、この設定データがクロスバー回路13125を介さずに直接的にピクセル演算プロセッサ(POP)群13123の所定のPOP内あるいは別個に設けられてライトユニットWUに供給される。
【0243】
ライトユニットWUでは、ラスタライザ1311によるウィンドウ座標(X,Y,Z)に基づき、たとえばリードライトキャッシュRW$を通してメモリモジュール132からデスティネーション色データ(RGB)および混合値データ(A)、並びに奥行きデータ(Z)が読み出される。
そして、ライトユニットWUでは、ピクセルエンジン(PXE)13122によるデータ(FR1,FG1,FB1,FA1)、およびリードライトキャッシュRW$を通してメモリモジュール132から読み出しデスティネーション色データ(RGB)および混合値データ(A)、並びに奥行きデータ(Z)に基づいて、αブレンディング、各種テスト、ロジカルオペレーションといったグラフィックス処理のピクセル書き込みに必要な演算が行われ、演算結果がリードライトキャッシュRW$に書き戻される。
【0244】
次に、画像処理について説明する。
【0245】
まず、図46に示すようなSAD(Summed Absolute Difference)処理を行う場合の動作について、図47に関連付けて説明する。
【0246】
SAD処理では、図46(A)に示すような元画像ORIMの1ブロック(X1s,Y1s)に対して、図46(B)に示すような参照画像RFIMの探索矩形領域SRGN内を1ピクセルずつずらしながら、対応ブロックBLK内のSAD(絶対値差)を求めていく。
その中で、SADが最小となるブロックの位置(X2s,y2s)とSAD値を図46(C)に示すように、(Xd,Yd)に格納する。
(X1s,Y1s)はコンテキストとして図示しない上位位置からPOP内のレジスタに設定される。
【0247】
この場合、ラスタライザ1311に対して、たとえばグローバルモジュール12を介して図示しない上位装置から出力された、メモリモジュール132(−0〜−3)から参照画像データを読み出すためのソースアドレスおよび画像処理結果を書き込むためのデスティネーションアドレスの生成に必要なコマンドやデータ、たとえば探索矩形領域SRGNの幅、高さ(Ws,Hs)データ、ブロックサイズ(Wbk,Hbk)データが入力される。
ラスタライザ1311では、入力データに基づいて、メモリモジュール132に格納されている参照画像RFIMのソースアドレス(X2s,Y2s)が生成されるとともに、処理結果をメモリモジュール132に格納するためのデスティネーションアドレス(Xd,Yd)が生成される。
【0248】
生成されたデスティネーションアドレス(Xd,Yd)は、グラフィックス処理時のウィンドウ座標(X,Y,Z)の供給ラインが共用され、レジスタユニット(RGU)13124の特定のFIFOレジスタを通して、直接的にピクセル演算プロセッサ(POP)群13124のライトユニットWUに供給される。
また、生成された参照画像RFIMのソースアドレス(X2s,Y2s)が、クロスバー回路13125、レジスタユニット(RGU)13124のFIFOレジスタを通してグラフィックスユニット(GRU)12121に供給される。ソースアドレス(X2s,Y2s)は、グラフィックスユニット(GRU)12121は素通りして、たとえばクロスバー回路13125を通さず直接的にピクセル演算プロセッサ(POP)群13123に供給される。
【0249】
ピクセル演算プロセッサ(POP)群13123では、供給されたソースアドレス(X1s,Y1s)および(X2s,Y2s)に基づいて、たとえばリードオンリーキャッシュRO$、リードライトキャッシュRW$を介して、メモリモジュール132に格納されている元画像ORIMおよび参照画像RFIMの各データが読み出される。
ここで、元画像ORIMの座標はコトテキストとしてレジスタに設定される。参照画像RFIMの座標は、たとえば4つのPOPそれぞれが担当するサブブロックの座標が与えられる。
そして、ピクセル演算プロセッサ(POP)群13123では、元画像ORIMの1ブロック(X1s,Y1s)に対して、参照画像RFIMの探索矩形領域SRGN内を1ピクセルずつずらしながら、対応サブブロックBLK内のSAD(絶対値差)が随時求められる。
そして、各サブブロックの位置位置(X2s,y2s)と各SAD値が、クロスバー回路13125を転送されてレジスタユニット(RGU)13124の所定のFIFOレジスタに設定され、この設定データがクロスバー回路13125を介さずに直接的にピクセルエンジン(PXE)13122に転送される。
【0250】
ピクセルエンジン(PXE)3122では、ブロック全体のSADが集計され、ブロックの位置(X2s,y2s)とSAD値が、クロスバー回路13125を転送されてレジスタユニット(RGU)13124の所定のFIFOレジスタに設定され、この設定データがクロスバー回路13125を介さずに直接的にライトユニットWUに転送される。
【0251】
ライトユニットWUでは、ピクセルエンジン(PXE)13122によるブロックの位置(X2s,y2s)とSAD値の、ラスタライザ1311によるデスティネーションアドレス(Xd,Yd)への格納処理が行われる。
この場合、たとえば隠面除去(Hidden Surface Removal)を行う機能(Z比較)を用いて、たとえばメモリモジュール132からリードライトキャッシュRW$に読み出されたSAD値とピクセルエンジン(PXE)13122によるSAD値が比較される。
そして、比較の結果、格納されている値よりピクセルエンジン(PXE)13122によるSAD値が小さい場合に、ピクセルエンジン(PXE)13122によるブロックの位置(X2s,y2s)とSAD値がデスティネーションアドレス(Xd,Yd)にリードライトキャッシュRW$を介して書き込まれる(更新される)。
【0252】
次に、図48に示すようなコンボリューションフィルタ(Convolution Filter)処理を行う場合の動作について、図49に関連付けて説明する。
【0253】
コンボリューションフィルタ処理では、図48(A)に示すような対象画像OBIMの各ピクセル(X1s,Y1s)に対して、フィルタカーネルサイズの周辺ピクセルを読み出し、フィルタ係数を乗算したものを足し合わせ、その結果を図48(B)に示すようにデスティネーションアドレス(Xd,Yd)に格納する。
なお、フィルタカーネル係数の格納アドレスは、コンテキストとしてPOP内のレジスタに設定する。
【0254】
この場合、ラスタライザ1311に対して、たとえばグローバルモジュール12を介して図示しない上位装置から出力された、メモリモジュール132(−0〜−3)から画像データ(ピクセルデータ)を読み出すためのソースアドレスおよび画像処理結果を書き込むためのデスティネーションアドレスの生成に必要なコマンドやデータ、たとえばフィルタカーネルサイズデータ(Wk,Hk)が入力される。
ラスタライザ1311では、入力データに基づいて、メモリモジュール132に格納されている対象画像OBIMのソースアドレス(X1s,Y1s)が生成されるとともに、処理結果をメモリモジュール132に格納するためのデスティネーションアドレス(Xd,Yd)が生成される。
【0255】
生成されたデスティネーションアドレス(Xd,Yd)は、グラフィックス処理時のウィンドウ座標(X,Y,Z)の供給ラインが共用され、レジスタユニット(RGU)13124の特定のFIFOレジスタを通して、直接的にピクセル演算プロセッサ(POP)群13124のライトユニットWUに供給される。
また、生成された対象画像OBIMのソースアドレス(X1s,Y1s)が、クロスバー回路13125、レジスタユニット(RGU)13124のFIFOレジスタを通してグラフィックスユニット(GRU)12121に供給される。ソースアドレス(X1s,Y1s)は、グラフィックスユニット(GRU)12121は素通りして、たとえばクロスバー回路13125を通さず直接的にピクセル演算プロセッサ(POP)群13123に供給される。
【0256】
ピクセル演算プロセッサ(POP)群13123では、供給されたソースアドレス(X1s,Y1s)に基づいて、たとえばリードオンリーキャッシュRO$を介して、メモリモジュール132に可能されているカーネルサイズの周辺ピクセルが読み出される。
そして、ピクセル演算プロセッサ(POP)群13123では、所定のフィルタ係数が読み出したデータに掛け合わさ、さらにこれらが足し合わされて、その結果である色データ(R,G,B)および混合値データ(A)を含むデータ(R,G,B,A)がクロスバー回路13125、レジスタユニット(RGU)13124を介してライトユニットWUに転送される。
【0257】
ライトユニットWUでは、ピクセル演算プロセッサ(POP)群13123によるデータが、リードライトキャッシュRW$を介してデスティネーションアドレス(Xd,Yd)に格納される。
【0258】
最後に、図2のシステム構成による動作を説明する。
ここでは、テクスチャ系の処理について説明する。
【0259】
まず、SDC11において、3次元座標、法線ベクトル、テクスチャ座標の各頂点データが入力されると、頂点データに対する演算が行われる。
次に、ラスタライゼーション(Rasterization)に必要な各種パラメータが算出される。
そして、SDC11においては、算出したパラメータが、グローバルモジュール12を介して全ローカルモジュール13−0〜13−3にブロードキャストされる。
この処理において、ブロードキャストされたパラメータは、後述するキャッシュフィルとは別のチャネルを用いて、グローバルモジュール12を介して各ローカルモジュール13−0〜13−3に渡される。ただし、グローバルキャッシュの内容には影響を与えない。
【0260】
各ローカルモジュール13−0〜13−3では、処理ユニット131−0〜131−3において、以下の処理が行われる。
すなわち、処理ユニット131(−0〜3)においては、ブロードキャストされたパラメータを受け取ると、その三角形が自分が担当する領域、たとえば4×4ピクセルの矩形領域単位でインターリーブされた領域に属しているか否かが判断される。その結果、属している場合には、各種データ(Z、テクスチャ座標、カラーなど)がラスタライズされる。
次に、LOD(Level of Detail)計算によるミップマップ(MIPMAP)レベルの算出や、テクスチャアクセスのための(u,v)アドレス計算が行われる。
【0261】
そして、次に、テクスチャの読み出しが行われる。
この場合、各ローカルモジュール13−0〜13−3の処理ユニット131−0〜131−3では、テクスチャリードの際に、まず、ローカルキャッシュ133−0〜133−3のエントリーがチェックされる。
その結果、エントリーがあった場合には、必要なテクスチャデータが読み出される。
必要とするテクスチャデータがローカルキャッシュ133−0〜133−3内に無い場合には、各処理ユニット131−0〜131−3では、グローバルインターフェース134−0〜134−3を通して、グローバルモジュール12に対してローカルキャッシュフィルのリクエストが送出される。
【0262】
グローバルモジュール12においては、要求されたブロックデータがグローバルキャッシュ121−0〜121−3のいずれかにあると判断されると、対応するグローバルキャッシュ121−0〜121−3のいずれかから読み出されて所定のチャネルを通してリクエストを送出したローカルモジュールに送り返される。
【0263】
一方、要求されたブロックデータがグローバルキャッシュ121−0〜121−3のいずれかにもないと判断されると、所望のチャネルのいずれかから当該ブロックを保持するローカルモジュールに対してグローバルキャッシュフィルのリクエストが送られる。
グローバルキャッシュフィルのリクエストを受けたローカルモジュールにおいては、メモリから該当するブロックデータが読み出され、グローバルインターフェースを通してグローバルモジュール12に送出される。
その後、グローバルモジュール12では、ブロックデータが所望のグローバルキャッシュにフィルされるとともに、リクエストを送ってきたローカルモジュールに対して所望のチャネルからデータが送出される。
【0264】
グローバルモジュール12から要求したブロックデータが送られてくると、該当するローカルモジュールでは、ローカルキャッシュが更新され、処理ユニットによりブロックデータが読み出される。
【0265】
次に、ローカルモジュール13−0〜13−3では、読み出されたテクスチャデータと、(u,v)アドレスは算出時に得た小数部を使って4近傍補間などのフィルタリング処理が行われる。
次に、フィルタリング後のテクスチャデータと、ラスタライズ後の各種データを用いて、ピクセル単位の演算が行われる。
そして、ピクセルレベルの処理における各種テストをパスしたピクセルデータを、メモリモジュール132−0〜132−3、たとえば内蔵DRAMメモリ上のフレームバッファおよびZバッファに書き込まれる。
【0266】
以上説明したように、本実施形態によれば、グラフィックス処理時には、グローバルモジュール12からブロードキャストされたパラメータデータを受けて、ウィンドウ座標、プライマリカラー(PC)、セカンダリカラー(SC)、Fog係数(f)、テクスチャ座標等の各種ピクセルデータを生成し、画像処理時には、入力データに基づいて、ソースアドレスを生成するとともに、デスティネーションアドレスを生成するラスタライザ1311と、複数のFIFOレジスタを有するレジスタユニット13124と、上記レジスタユニット13124のFIFOレジスタに設定されたテクスチャ座標に基づいてテクセル座標(s,t)およびLODデータを含むグラフィックスデータ(s,t,l)を生成し、ソースアドレスを素通りさせて出力するグラフィックスユニット13121と、グラフィックス処理時には、グラフィックスデータ(s,t,l)に基づいて所定の演算処理を行い、演算データをクロスバー回路13125を転送させてレジスタユニット13124の所定のレジスタに設定させ、画像処理時には、ソースアドレスに応じた画像データを読み出して所定の画像処理演算を行い、この演算データをクロスバー回路13125を転送させてレジスタユニット13124の所定のレジスタに設定させるピクセル演算プロセッサ13123と、色データに基づいてレジスタに設定されたピクセル演算プロセッサ13123の演算データに対して所定の演算処理を行い、この演算データをクロスバー回路13125を転送させてレジスタユニット13124の所定のレジスタに設定させるピクセルエンジン13122と、グラフィックス処理時には、レジスタに設定されたウィンドウ座標およびピクセルエンジン13122の演算データに基づいてピクセル書き込みに必要な処理を行って、必要に応じて処理結果をメモリに書き込み、画像処理時には、レジスタに設定されたピクセル演算プロセッサ13123の演算データをメモリのデスティネーションアドレスに書き込むライトユニットWUとを設けたので、以下の効果を得ることができる。
【0267】
すなわち、本実施形態によれば、大量の演算器を効率よく利用することが可能で、アルゴリズムの自由度が高く、柔軟性が高く、しかも回路規模の増大、コスト増を招くことなく、複雑な処理を高スループットで処理することができる。
【0268】
また、制御情報を受けて所望の演算器の論理接続と演算内容、およびクロスバー回路を電気的接続を変更することが可能な制御回路301を有し、制御回路301は、現在の制御情報(現制御情報)と、次に行うべき制御に関する情報(次制御情報)の2つを保持し、演算データは、当該演算データが演算に使用する最終データであることが識別可能な制御信号と同期して送られ、制御回路は、最終データであることが識別された場合、現在実行中の演算が完了すると、現制御情報を次制御情報で書き換えるように構成したので、各種演算に対応でき、かつ開発時点で想定されていなかった演算方式にも容易に対応できる利点がある。
【0269】
また、ピクセルエンジン13122は、複数の再構成可能な演算器が複数の演算器群に分割され、各演算器群においては、各演算器がフォワーディングパスにより縦続接続されていることから、必要な接続自由度を確保しながら回路規模を低減することが可能である。
【0270】
また、クロスバー回路13125を中心としてその周辺に4つのフォワーディング接続回路網FCCN1〜FCCN4、並びに演算器群OPGRP1A〜OPGRP4Aを配置し、レジスタの入力段、演算器の出力段、フォワーディング接続回路網FCCN1〜FCCN4の各信号線にレジスタとしてのフリップフロップFFを配置したので、配線距離を均一に保つことができ、配線領域を整然と並べることができ、平均配線長を短くできる。したがって、配線遅延や配線コストを低減でき、また、クロックスキューを容易に最小化することが可能である。
【0271】
また、処理ユニット131(−0〜−3)は、分岐のないデータフローグラフ(Data Flow Graph :DFG)で表現されるアルゴリズムを実行し、DFGのノートとエッジは、演算器や演算ユニットとその接続関係と見ることができることができる。したがって、処理ユニット131(−0〜−3)は、実行するDFGに応じて、演算リソース間の接続を動的に切り替える、いわゆる動的再構成可能なハードウェアであり、演算器で実行する機能やそれらの接続関係が処理ユニットのマイクロプログラムに相当し、ストリームデータの各要素に適用されるDFGは同じであるので、命令発行のバンド幅を低くおさえることができる。
【0272】
また、処理ユニット131(−0〜−3)は、演算機能の指定や演算器間接続の切り替え制御は、データドリブンであり、分散自立型制御といえる。
このような動的スケジューリングを採用することにより、DFGが切り替わる際に、エピローグ/ プロローグのオーバーラップが可能であり、DFGの切り替えのオーバーヘッドを低減することができる。
【0273】
また、DFGの規模が大きくなるとアルゴリズムを内部演算リソースに一度にマッピングすることができなくなる。このような場合には、複数のサブDFG(sub−DFG )に分割する必要がある。
複数のサブDFGに分けて実行する方法として、サブDFG間の中間値をメモリに格納するマルチパス手法があげられる。この方法では、パス数が増大するとメモリバンド幅を消費し性能低下を招く。
処理ユニット131(−0〜−3)は、前述するように演算器や演算ユニット間のストリームデータの受け渡しをFIFO型のレジスタユニット(RGU)を介して行うことから、DFG分割実行時に、このレジスタファイルを介して中間値を渡すことが可能で、マルチパスの回数を低減することができる。
DFGの分割そのものは、コンパイラにより静的に行われるが、分割されたDFGの実行制御はハードウエアが行うのでソフトウエアへの負担が軽いという利点がある。
【0274】
また、本実施形態によれば、メモリバンド幅を活かした高並列の演算処理を行う機能ユニットである複数のPOP0〜POP3を有し、各POPは、並列に配列された演算器POPE0〜POPE3を有し、各POPE0〜POPE3は、キャッシュから読み出された32ビット幅のデータおよびフィルタ機能ユニットFFUによる演算パラメータを受けて所定の演算(たとえば加算)を行って演算結果を次段のPOPEに出力し、次段のPOPEは自身の演算結果に前段の演算結果を加算し、その演算結果を次段のPOPEに出力し、最終段のPOPE3において、全POPE0〜POPE3の演算結果の総和を求め、各POPは、複数のPOPEの演算出力から一つのPOPE3の演算結果のみを選択してクロスバー回路13125に出力する出力選択回路OSLCを有するピクセル演算プロセッサ(POP)群13123を設けたことから、クロスバー回路の小型化を図れ、処理の高速化を図ることができる。
【0275】
さらに、本実施形態では、クロスバー回路13125を転送してレジスタユニット13124のFIFOレジスタに設定したストリームデータをクロスバー回路を通さずに直接的に、グラフィックスユニット(GRU)13121、ピクセルエンジン(PXE)13122、ピクセル演算プロセッサ(POP)群13123、およびライトユニットWUに供給し、また、グラフィックスユニット13121により得られたグラフィックス演算データをクロスバー回路を通さずに特定の配線を介して直接的にピクセル演算プロセッサ(POP)群13123に供給することから、さらにクロスバー回路の簡単化、小型化を図ることができ、また、マルチパス回数を低減でき、ひいては処理のさらなる高速化を図ることができる。
【0276】
また、本実施形態においては、本アーキテクチャを実現する演算処理部としてのコア1312を一つだけ設けた構成を例に説明したが、たとえば図50に示すように、一つのラスタライザ1311に対して複数個のコア1312−1〜1312−nを並列に設ける構成を採用することも可能である。
この場合でも、各コアで実行されるDFGは同一である。
また、複数のコアを設ける構成の並列化の単位としては、たとえばグラフィックス処理の場合には小矩形領域(スタンプ)単位、画像処理の場合にはブロック単位である。この場合、細かい粒度での並列処理を実現できる利点がある。
【0277】
また、本実施形態では、ピクセル演算プロセッサ(POP)群13123とキャッシュ間は広いバンド幅で接続されており、かつメモリアクセスのためのアドレス生成機能を内蔵しているので、演算器の演算能力を最大限引き出すだけのストリームデータの供給が可能である。
【0278】
また、本実施形態では、メモリの近傍に出力データ幅を合わせた形で演算器を高密度に配置し、処理データの規則性を利用していることから、大量の演算を最低限の演算器でしかも簡単構成で実現することができ、ひいてはコスト低減を図れる利点がある。
【0279】
また、本実施形態によれば、SDC11とグローバルモジュール12とがデータの授受を行い、一つのグローバルモジュール12に対して複数個(本実施形態では4個)のローカルモジュール13−0〜13−3が並列に接続されて、複数のローカルモジュール13−0〜13−3で処理データを共有し並列に処理し、グローバルモジュール12はグローバルキャッシュを有し、各ローカルモジュール13−0〜13−3はローカルキャッシュをそれぞれ有し、キャッシュの階層として、4つのローカルモジュール13−0〜13−3が共有するグローバルキャッシュと、各ローカルモジュールがローカルに持つローカルキャッシュの2階層を有することから、複数の処理装置が処理データを共有して並列処理する際に、重複アクセスを低減でき、配線本数の多いクロスバーが不要となる。その結果、設計が容易で、配線コスト、配線遅延を低減できる画像処理装置を実現できる利点がある。
【0280】
また、本実施形態によれば、グローバルモジュール12と各ローカルモジュール13−0〜13−3との配置関係としては、図2に示すように、グローバルモジュール12を中心として各ローカルモジュール13−0〜13−3をその周辺近傍に配置することから、各対応するチャネルブロックとローカルモジュールまでの距離を均一に保つことができ、配線領域を整然と並べることができ、平均配線長を短くできる。したがって、配線遅延や配線コストを低減でき、処理速度の向上を図ることができる利点がある。
【0281】
なお、本実施形態においては、テクスチャデータが内蔵DRAM上にあるケースを例に述べているが、他のケースとして、内蔵DRAMには、カラーデータおよびzデータのみが置かれ、テクスチャデータは外部メモリに置かれることも可能である。この場合には、グローバルキャッシュでミスが発生すると、外部DRAMに対してキャッシュフィル要求が出されることになる。
【0282】
また、上述の説明では、図2の構成、すなわち、一つのグローバルモジュール12に対して複数個(本実施形態では4個)のローカルモジュール13−0〜13−3が並列に接続した画像処理装置10を例に並列処理を行う場合に特化した形態となっているが、図2の構成を一つのクラスタCLSTとして、たとえば図51に示すように、4つのクラスタCLST0〜CLST3をマトリクス状に配置して、各クラスタCLST0〜CLST3のグローバルモジュール12−0〜12−3間でデータの授受を行うように構成することも可能である。
図51の例では、クラスタCLST0のグローバルモジュール12−0とクラスタCLST1のグローバルモジュール12−1とを接続し、クラスタCLST1のグローバルモジュール12−1とクラスタCLST3のグローバルモジュール12−3とを接続し、クラスタCLST3のグローバルモジュール12−3とクラスタCLST2のグローバルモジュール12−2とを接続し、クラスタCLST2のグローバルモジュール12−2とクラスタCLST0のグローバルモジュール12−0とを接続している。
すなわち、複数のクラスタCLST0〜CLST3のグローバルモジュール12−0〜12−3をリング状に接続している。
なお、図51の構成の場合には、一つのSDCからパラメータがCLST0〜CLST3のグローバルモジュール12−0〜12−3にブロードキャストされるように構成することが可能である。
【0283】
このような構成を採用することにより、より精度の高い画像処理を実現でき、また、各クラスタ間の配線も単純に双方向として一系統で接続するので、各クラスタ間の負荷を均一に保つことができ、配線領域を整然と並べることができ、平均配線長を短くできる。したがって、配線遅延や配線コストを低減でき、処理速度の向上を図ることが可能となる。
【0284】
【発明の効果】
以上説明したように、本発明によれば、大量の演算器を効率よく利用することが可能で、アルゴリズムの自由度が高く、柔軟性が高く、しかも回路規模の増大、コスト増を招くことなく、少ない回路規模で実現できる接続網を使用して演算回路を構成することができる。
また、各種演算に対応でき、かつ開発時点で想定されていなかった演算方式にも容易に対応できる利点がある。
【図面の簡単な説明】
【図1】一般的な画像処理装置におけるテクスチャフィルタリングを含む処理手順を説明するための図である。
【図2】本発明に係る画像処理装置の一実施形態を示すブロック構成図である。
【図3】本実施形態に係るストリームデータコントローラ(SDC)の主な処理を説明するためのフローチャートである。
【図4】本実施形態に係るグローバルモジュールの機能を説明するためのフローチャートである。
【図5】本実施形態に係るローカルモジュールにおける処理ユニットのグラフィックス処理を説明するための図である。
【図6】本実施形態に係るテクスチャリード時のローカルモジュールの動作を説明するためのフローチャートである。
【図7】本実施形態に係るローカルモジュールにおける処理ユニットの画像処理を説明するための図である。
【図8】本実施形態に係るローカルモジュールにおけるローカルキャッシュの構成例を示すブロック図である。
【図9】本実施形態に係るローカルキャッシュのメモリコントローラの構成例を示すブロック図である。
【図10】本実施形態に係るローカルモジュールの処理ユニットの具体的な構成例を示すブロック図である。
【図11】本実施形態に係るピクセルエンジンの第1の構成例、およびレジスタユニット(RGU)、クロスバー回路との接続例を示す図である。
【図12】フォワーディングパスの採用により構成を簡略化でき、回路規模を低減できる理由について説明するための図である。
【図13】本実施形態に係るピクセルエンジンの演算器の具体的な構成例を示す回路図である。
【図14】本実施形態に係る演算器およびクロスバー回路の切り替え制御系の一例を示す図である。
【図15】付帯情報としての制御信号の値の変化によりデータの切り替わりを示す具体的な例を示す図である。
【図16】本実施形態に係る演算器およびクロスバー回路の切り替え制御系の他例を示す図である。
【図17】本実施形態に係るデリミタ検出機能を有する制御回路の構成例を示すブロック図である。
【図18】図17のデリミタ検出回路の構成例を示すブロック図である。
【図19】図17のシーケンサの状態遷移例を示す図である。
【図20】図17のシーケンサの各状態によって現制御情報と次制御情報を有効/無効のいずれとして判断するかを示す図である。
【図21】図17のシーケンサの各遷移条件に対応する現制御情報レジスタ、次制御情報レジスタの書き込まれる値、並びに制御情報要求の状態を示す図である。
【図22】図11のピクセルエンジンにおける動的に再構成された演算回路によるテクスチャ依存有りの場合の演算処理例を説明するための図である。
【図23】図11のピクセルエンジンにおける動的に再構成された演算回路によるテクスチャ依存無しの場合の演算処理例を説明するための図である。
【図24】本実施形態に係るピクセルエンジンの第2の構成例、およびレジスタユニット(RGU)、クロスバー回路との接続例を示す図である。
【図25】図24のピクセルエンジンにおける動的に再構成された演算回路によるテクスチャ依存有りの場合の演算処理例を説明するための図である。
【図26】図24のピクセルエンジンにおける動的に再構成された演算回路によるテクスチャ依存無しの場合の演算処理例を説明するための図である。
【図27】本実施形態に係るピクセルエンジンの第3の構成例、およびレジスタユニット(RGU)、クロスバー回路との接続例を示す図である。
【図28】図27の演算器群の演算器ユニットにレジスタとしてのフリップフロップを設けた構成例を示す図である。
【図29】図27のフォワーディング接続回路網にレジスタとしてのフリップフロップを設けた構成例を示す図である。
【図30】図27のクロスバー回路を完全クロスバーにより構成し、レジスタとしてのフリップフロップを設けた場合の各フォワーディング接続回路網との対応関係の一例を示す図である。
【図31】図27のクロスバー回路を完全クロスバーにより構成し、レジスタとしてのフリップフロップを設けた場合の各フォワーディング接続回路網との対応関係の他例を示す図である。
【図32】図27のピクセルエンジンにおける動的に再構成された演算回路によるテクスチャ依存有りの場合の演算処理例を説明するための図である。
【図33】図27のピクセルエンジンにおける動的に再構成された演算回路によるテクスチャ依存無しの場合の演算処理例を説明するための図である。
【図34】本実施形態に係るピクセル演算プロセッサ(POP)群の構成例を示す図である。
【図35】本実施形態に係るPOP(ピクセル演算プロセッサ)とメモリ間の接続形態およびPOPの構成例を示す図である。
【図36】本実施形態に係るPOPEの具体的な構成例を示す回路図である。
【図37】本実施形態に係るメモリからキャッシュへのデータの読み出し形態およびキャッシュから各POPEへのデータを読み出し形態を示す図である。
【図38】本実施形態に係るメモリのデータに基づいてピクセル演算プロセッサ群で演算処理を行い、さらにピクセルエンジンで演算を行う場合の動作を説明するためのフローチャートである。
【図39】本実施形態に係るメモリのデータに基づいてピクセル演算プロセッサ群で演算処理を行い、さらにピクセルエンジンで演算を行う場合の動作を説明するための図である。
【図40】本実施形態に係るメモリのデータに基づいてピクセル演算プロセッサ群で演算処理を行い、さらにピクセルエンジンで演算を行う場合の動作を説明するためのタイミングチャートである。
【図41】本実施形態に係るメモリのデータに基づいてピクセル演算プロセッサ群で演算処理を行い、さらにピクセルエンジンで演算を行う場合の動作を説明するためのブロック図である。
【図42】本実施形態に係る処理ユニットにおけるコアのピクセルエンジン(PXE)、ピクセル演算プロセッサ(POP)、レジスタユニット(RGU)、並びにメモリ部分を含む動作概要を示す図である。
【図43】本実施形態に係る処理ユニットにおける依存テクスチャ無しの場合のグラフィックス処理を説明するための図である。
【図44】本実施形態に係る処理ユニットにおけるグラフィックス処理のピクセル演算プロセッサ(POP)群の具体的な動作を説明するための図である。
【図45】本実施形態に係る処理ユニットにおける依存テクスチャ有りの場合のグラフィックス処理を説明するための図である。
【図46】SAD(Summed Absolute Difference)処理を説明するための図である。
【図47】本実施形態に係る処理ユニットにおけるSAD処理を説明するための図である。
【図48】コンボリューションフィルタ(Convolution Filter)処理を説明するための図である。
【図49】本実施形態に係る処理ユニットにおけるコンボリューションフィルタ処理を説明するための図である。
【図50】本実施形態に係る処理ユニットにおける他の構成例(コアを複数設けた例)を示す図である。
【図51】本発明に係る画像処理装置の他の実施形態を示すブロック構成図である。
【符号の説明】
10,10A…画像処理装置、11…ストリームデータコントローラ(SDC)、12−0〜12−3…グローバルモジュール、121−0〜121−3…グローバルキャッシュ、13−0〜13−3…ローカルモジュール、131−0〜131−3…処理ユニット、132−0〜132−3…メモリモジュール、133−0〜133−3…ローカルキャッシュ、134−0〜134−3…グローバルインターフェース(GAIF)、CLST0〜CLST…クラスタ、1311…ラスタライザ、1312,1312−1〜1312−n…コア、13121…グラフィックスユニット(GRU)、13122…ピクセルエンジン(PXE)、13122A…スカラ演算部、13122B…ベクタ演算部、13123…ピクセル演算プロセッサ(POP)群、13124…レジスタユニット(RGU)、13125…クロスバー回路(IXB)、13126…制御情報供給回路、301…制御回路、302…現制御情報レジスタ、303…次制御情報レジスタ、3011−1,3011−2,・・…デリミタ検出回路(DLMT)、3012…論理和回路、3013…シーケンサ(SEQ)、3014−1,3014−2…セレクタ、FREG…FIFOレジスタ、OP1〜OP18…演算器、OPGRP1〜OPGRP4,OPGRP1A〜OPGRP4A…演算器群、OPU1〜OPU16…演算器ユニット、FCCM1〜FCCN4…フォワーディング接続回路網、FF…フリップフロップ(レジスタ)、POPE0〜3…演算器、OSLC…出力選択回路。
Claims (16)
- 複数の処理データを並列処理する画像処理装置であって、
複数のレジスタを有するレジスタユニットと、
再構成可能であって、論理接続と演算内容を指定可能であり、上記レジスタユニットの複数のレジスタに対応した複数の演算器を含み、上記レジスタユニットの対応するレジスタに設定された画像に関する処理データに基づいて演算処理を行う機能ユニットと、
少なくとも上記レジスタユニットの各レジスタおよび上記機能ユニットの各演算器の出力が接続されたクロスバー回路と、
制御情報を受けて所望の上記演算器の論理接続と演算内容、および上記クロスバー回路を電気的接続を変更することが可能な制御回路と、
を有し、
上記機能ユニットの複数の演算器は、複数の演算器群に分割され、
上記クロスバー回路は、上記制御回路の指示に従って、上記画像に関する処理データを上記レジスタユニットの所望の演算器に対応する上記レジスタに入力させ、上記機能ユニットの各演算器の演算結果を他の上記演算器群の演算器に対応する上記レジスタにおよび/または他の処理部に転送する
画像処理装置。 - 上記制御回路は、個々の演算器および接続網の個々の接続点に対応してそれぞれ設けられ、各制御回路は、次に行うべき演算に関する情報を保持し、一連の演算の終了を検出した際に、自動的に次の演算に向けた制御に切り替える
請求項1記載の画像処理装置。 - 上記制御回路は、個々の演算器および接続網の個々の接続点に対応してそれぞれ設けられ、各演算器に対応して設けたれた各制御回路は、次に行うべき演算に関する情報を保持し、一連の演算の終了を検出した際に、自動的に次の演算に向けた制御に切り替え、
接続網の個々の接続点に対応して設けられた各制御回路は、次にとるべき接続構成に関する情報を保持し、一連のデータ転送の終了を検出した際に、自動的に接続点を制御の切り替える
請求項1記載の画像処理装置。 - 上記制御回路は、現在の制御情報(現制御情報)と、次に行うべき制御に関する情報(次制御情報)の2つを保持し、
演算データは、当該演算データが演算に使用する最終データであることが識別可能な制御信号と同期して送られ、
上記制御回路は、最終データであることが識別された場合、現在実行中の演算が完了すると、現制御情報を次制御情報で書き換える
請求項1記載の画像処理装置。 - 上記制御回路は、現在の制御情報(現制御情報)と現在実行中の演算を識別するための情報(現識別情報)と、次に行うべき制御に関する情報(次制御情報)とを保持し、
演算データは、当該演算データが演算に使用する最終データであることが識別可能な情報、およびそのデータが現在の演算処理に対するもので有効であるか、他の演算処理に対するもので無効であるかを識別可能な情報を示す制御信号と同期して送られ、
上記制御回路は、送られてきたデータが、最終データであり、かつ現識別情報で示される演算に対するものであることが識別された場合、現在実行中の演算が完了すると、現制御情報を次制御情報で書き換える
請求項1記載の画像処理装置。 - 演算データは、当該演算データが演算に使用する新しいデータであることが識別可能な情報、およびそのデータが現在の演算処理に対するものであるか、他の演算処理に対するものであるかを識別可能な情報と同期して送られ、
上記制御回路は、送られてきたデータが、少なくとも新しいデータであり、かつ現在の演算に対するものであり、有効な処理を行っている場合、デリミタとして検出し、
上記制御回路は、デリミタ検出の有無に応じて、上記現制御情報と現在実行中の演算を識別するための情報を保持する現制御情報レジスタと、次に行うべき制御に関する情報を保持する次制御情報レジスタとの保持データの制御を行う
請求項1記載の画像処理装置。 - 上記複数の演算器群に含まれる複数の演算器は、フォワーディングパスにより接続されている
請求項1記載の画像処理装置。 - 上記機能ユニットは、スカラ演算を行う第1の演算器群と、ベクタ演算を行う第2の演算器群に分割されている
請求項1記載の画像処理装置。 - 上記機能ユニットの複数の演算器および上記レジスタユニットのレジスタが、上記クロスバー回路を挟んで対称な関係をもって配置されている
請求項1記載の画像処理装置。 - 複数のモジュールが処理データを共有して並列処理を行う画像処理装置であって、
グローバルモジュールと、
グラフィックス処理機能および画像処理機能を有する複数のローカルモジュールと、を有し、
上記グローバルモジュールは、
上記複数のローカルモジュールが並列に接続され、ローカルモジュールからリクエストを受けると、上記リクエストに応じた当該リクエストを出したローカルモジュールに処理データを出力し、
上記複数のローカルモジュールは、
複数のレジスタを有するレジスタユニットと、
再構成可能であって、論理接続と演算内容を指定可能であり、上記レジスタユニットの複数のレジスタに対応した複数の演算器を含み、上記レジスタユニットの対応するレジスタに設定された画像に関する処理データに基づいて演算処理を行う機能ユニットと、
少なくとも上記レジスタユニットの各レジスタおよび上記機能ユニットの各演算器の出力が接続されたクロスバー回路と、
制御情報を受けて所望の上記演算器の論理接続と演算内容、および上記クロスバー回路を電気的接続を変更することが可能な制御回路と、
を有し、
上記機能ユニットの複数の演算器は、複数の演算器群に分割され、
上記クロスバー回路は、上記制御回路の指示に従って、上記画像に関する処理データを上記レジスタユニットの所望の演算器に対応する上記レジスタに入力させ、上記機能ユニットの各演算器の演算結果を他の上記演算器群の演算器に対応する上記レジスタにおよび/または他の処理部に転送する
画像処理装置。 - 上記制御回路は、個々の演算器および接続網の個々の接続点に対応してそれぞれ設けられ、各制御回路は、次に行うべき演算に関する情報を保持し、一連の演算の終了を検出した際に、自動的に次の演算に向けた制御に切り替える
請求項10記載の画像処理装置。 - 上記制御回路は、個々の演算器および接続網の個々の接続点に対応してそれぞれ設けられ、各演算器に対応して設けたれた各制御回路は、次に行うべき演算に関する情報を保持し、一連の演算の終了を検出した際に、自動的に次の演算に向けた制御に切り替え、
接続網の個々の接続点に対応して設けられた各制御回路は、次にとるべき接続構成に関する情報を保持し、一連のデータ転送の終了を検出した際に、自動的に接続点を制御の切り替える
請求項10記載の画像処理装置。 - 上記制御回路は、現在の制御情報(現制御情報)と、次に行うべき制御に関する情報(次制御情報)の2つを保持し、
演算データは、当該演算データが演算に使用する最終データであることが識別可能な制御信号と同期して送られ、
上記制御回路は、最終データであることが識別された場合、現在実行中の演算が完了すると、現制御情報を次制御情報で書き換える
請求項10記載の画像処理装置。 - 上記制御回路は、現在の制御情報(現制御情報)と現在実行中の演算を識別するための情報(現識別情報)と、次に行うべき制御に関する情報(次制御情報)とを保持し、
演算データは、当該演算データが演算に使用する最終データであることが識別可能な情報、およびそのデータが現在の演算処理に対するもので有効であるか、他の演算処理に対するもので無効であるかを識別可能な情報を示す制御信号と同期して送られ、
上記制御回路は、送られてきたデータが、最終データであり、かつ現識別情報で示される演算に対するものであることが識別された場合、現在実行中の演算が完了すると、現制御情報を次制御情報で書き換える
請求項10記載の画像処理装置。 - 上記制御回路は、演算データは、当該演算データが演算に使用する新しいデータであることが識別可能な情報、およびそのデータが現在の演算処理に対するものであるか、他の演算処理に対するものであるかを識別可能な情報と同期して送られ、
上記制御回路は、送られてきたデータが、少なくとも新しいデータであり、かつ現現在の演算に対するものであり、有効な処理を行っている場合、デリミタとして検出し、
上記制御回路は、デリミタ検出の有無に応じて、上記現制御情報と現在実行中の演算を識別するための情報を保持する現制御情報レジスタと、次に行うべき制御に関する情報を保持する次制御情報レジスタとの保持データの制御を行う
請求項10記載の画像処理装置。 - 上記複数の演算器群に含まれる複数の演算器は、フォワーディングパスにより接続されている
請求項10記載の画像処理装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002283831A JP2004118713A (ja) | 2002-09-27 | 2002-09-27 | 画像処理装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002283831A JP2004118713A (ja) | 2002-09-27 | 2002-09-27 | 画像処理装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2004118713A true JP2004118713A (ja) | 2004-04-15 |
Family
ID=32277584
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002283831A Pending JP2004118713A (ja) | 2002-09-27 | 2002-09-27 | 画像処理装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2004118713A (ja) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2006018539A (ja) * | 2004-06-30 | 2006-01-19 | Fujitsu Ltd | 時分割多重処理可能なリコンフィギュラブル回路 |
JP2007122209A (ja) * | 2005-10-26 | 2007-05-17 | Nec System Technologies Ltd | 3次元グラフィックス描画装置、その方法及びプログラム |
JP2008299662A (ja) * | 2007-05-31 | 2008-12-11 | Sony Corp | 情報処理装置、および情報処理方法、並びにコンピュータ・プログラム |
US7680962B2 (en) | 2004-12-22 | 2010-03-16 | Nec Electronics Corporation | Stream processor and information processing apparatus |
JPWO2015125960A1 (ja) * | 2014-02-24 | 2017-03-30 | 株式会社ニコン | 情報処理装置、デジタルカメラおよびプロセッサ |
JP6132902B1 (ja) * | 2015-12-28 | 2017-05-24 | 株式会社ディジタルメディアプロフェッショナル | コンピュータグラフィック装置 |
-
2002
- 2002-09-27 JP JP2002283831A patent/JP2004118713A/ja active Pending
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2006018539A (ja) * | 2004-06-30 | 2006-01-19 | Fujitsu Ltd | 時分割多重処理可能なリコンフィギュラブル回路 |
JP4546775B2 (ja) * | 2004-06-30 | 2010-09-15 | 富士通株式会社 | 時分割多重処理可能なリコンフィギュラブル回路 |
US8055880B2 (en) | 2004-06-30 | 2011-11-08 | Fujitsu Limited | Reconfigurable circuit having a pipeline structure for carrying out time division multiple processing |
US7680962B2 (en) | 2004-12-22 | 2010-03-16 | Nec Electronics Corporation | Stream processor and information processing apparatus |
JP2007122209A (ja) * | 2005-10-26 | 2007-05-17 | Nec System Technologies Ltd | 3次元グラフィックス描画装置、その方法及びプログラム |
JP2008299662A (ja) * | 2007-05-31 | 2008-12-11 | Sony Corp | 情報処理装置、および情報処理方法、並びにコンピュータ・プログラム |
US8624896B2 (en) | 2007-05-31 | 2014-01-07 | Sony Corporation | Information processing apparatus, information processing method and computer program |
JPWO2015125960A1 (ja) * | 2014-02-24 | 2017-03-30 | 株式会社ニコン | 情報処理装置、デジタルカメラおよびプロセッサ |
JP6132902B1 (ja) * | 2015-12-28 | 2017-05-24 | 株式会社ディジタルメディアプロフェッショナル | コンピュータグラフィック装置 |
JP2017120594A (ja) * | 2015-12-28 | 2017-07-06 | 株式会社ディジタルメディアプロフェッショナル | コンピュータグラフィック装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4158413B2 (ja) | 画像処理装置 | |
US7522171B1 (en) | On-the-fly reordering of 32-bit per component texture images in a multi-cycle data transfer | |
US7447873B1 (en) | Multithreaded SIMD parallel processor with loading of groups of threads | |
US7594095B1 (en) | Multithreaded SIMD parallel processor with launching of groups of threads | |
US8074224B1 (en) | Managing state information for a multi-threaded processor | |
US8077174B2 (en) | Hierarchical processor array | |
JP5345226B2 (ja) | グラフィックスプロセッサの並列アレイアーキテクチャ | |
US7365753B2 (en) | Texture engine state variable synchronizer | |
US7750915B1 (en) | Concurrent access of data elements stored across multiple banks in a shared memory resource | |
US6762764B2 (en) | System and method for processing image, and compiler for use in this system | |
US6819332B2 (en) | Antialias mask generation | |
CN109978751A (zh) | 多gpu帧渲染 | |
US7747842B1 (en) | Configurable output buffer ganging for a parallel processor | |
US7484076B1 (en) | Executing an SIMD instruction requiring P operations on an execution unit that performs Q operations at a time (Q<P) | |
US20070233975A1 (en) | Data processor with a built-in memory | |
KR20040022706A (ko) | 연산 장치 및 화상 처리 장치 | |
JP2004145838A (ja) | 画像処理装置 | |
JP4264529B2 (ja) | 画像処理装置およびその方法 | |
JP2004118713A (ja) | 画像処理装置 | |
JP4264530B2 (ja) | 画像処理装置およびその方法 | |
JP2004127227A (ja) | 画像処理装置 | |
JP4186561B2 (ja) | 画像処理装置およびその方法 | |
JP4264526B2 (ja) | 画像処理装置およびその方法 | |
US7489315B1 (en) | Pixel stream assembly for raster operations | |
JP2004118822A (ja) | 画像処理装置 |