JP4264527B2 - 画像処理装置およびその方法 - Google Patents
画像処理装置およびその方法 Download PDFInfo
- Publication number
- JP4264527B2 JP4264527B2 JP2002149384A JP2002149384A JP4264527B2 JP 4264527 B2 JP4264527 B2 JP 4264527B2 JP 2002149384 A JP2002149384 A JP 2002149384A JP 2002149384 A JP2002149384 A JP 2002149384A JP 4264527 B2 JP4264527 B2 JP 4264527B2
- Authority
- JP
- Japan
- Prior art keywords
- data
- arithmetic
- unit
- processing
- stage
- 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.)
- Expired - Fee Related
Links
Images
Landscapes
- Complex Calculations (AREA)
- Image Processing (AREA)
- Microcomputers (AREA)
- Image Generation (AREA)
Description
【発明の属する技術分野】
本発明は、複数の処理データを共有して並列処理を行う画像処理装置およびその方法に関するものである。
【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】
ところで、グラフィックスLSIの性能を向上させるには、LSIの動作周波数を上げるだけではなく、並列処理の手法を利用することが有効である。並列処理の手法を大別すると以下のようになる。
第1は領域分割による並列処理法であり、第2はプリミティブレベルでの並列処理法であり、第3はピクセルレベルでの並列処理法である。
【0009】
上記分類は並列処理の粒度に基づいており、領域分割並列処理の粒度が最もあらく、ピクセル・レベル並列処理の粒度が最も細かい。それぞれの手法の概要を以下に述べる。
【0010】
領域分割による並列処理
画面を複数の矩形領域に分割し、複数の処理ユニットそれぞれが担当する領域を割り当てながら並列処理する手法である。
【0011】
プリミティブレベルでの並列処理
複数の処理ユニットに別々のプリミティブ(たとえば三角形)を与えて並列動作させる手法である。
【0012】
ピクセルレベルでの並列処理
最も粒度の細かい並列処理の手法である。
図1は、ピクセルレベルでの並列処理の手法に基づくプリミティブレベルでの並列化処理について概念的に示す図である。
図1のように、ピクセルレベルでの並列処理の手法では三角形をラスタライズする際に、2×8のマトリクス状に配列されたピクセルからなるピクセルスタンプ(Pixel Stamp)PSと呼ばれる矩形領域単位にピクセルが生成される。
図1の例では、ピクセルスタンプPS0からからピクセルスタンプPS7までの合計8個のピクセルスタンプが生成されている。これらピクセルスタンプPS0〜PS7に含まれる最大16個のピクセルが同時に処理される。
この手法は、他の手法に比べ粒度が細かい分、並列処理の効率が良い。
【0013】
【発明が解決しようとする課題】
しかしながら、上述した領域分割による並列処理の場合、各処理ユニットを効率良く並列動作させるためには、各領域に描画されるべきオブジェクトをあらかじめ分類する必要があり、シーンデータ解析の負荷が重い。
また、1フレーム分のシーンデータが全て揃った上で描画を開始するのではなく、オブジェクトデータが与えられると即描画を開始するいわゆるイミーディエートモードでの描画を行う際には並列性を引き出すことができない。
【0014】
また、プリミティブレベルでの並列処理の場合、実際には、オブジェクトを構成するプリミティブの大きさにはバラツキがあることから、処理ユニットごとに一つのプリミティブを処理する時間に差が生じる。この差が大きくなった際には、処理ユニットが描画する領域も大きく異なり、データのローカリティが失われるので、メモリモジュールを構成するたとえばDRAMのページミスが頻発し性能が低下する。
また、この手法の場合には、配線コストが高いという問題点もある。一般に、グラフィックス処理を行うハードウェアでは、メモリのバンド幅を広げるために、複数メモリモジュールを用いてメモリインターリーブを行う。
その際、各処理ユニットと各内蔵メモリモジュールを全て結ぶ必要がある。
【0015】
一方、ピクセルレベルでの並列処理の場合、上述したように、粒度が細かい分、並列処理の効率が良いという利点があり、実際のフィルタリングを含む処理としては図2に示すような手順で行われている。
【0016】
すなわち、DDAパラメータ、たとえばラスタライゼーション(Rasterization)に必要な各種データ(Z、テクスチャ座標、カラーなど)の傾き等のDDAパラメータを算出する(ST1)。
次に、メモリからテクスチャデータを読み出し(ST2)、複数の演算器を含む第1の機能ユニットでサブワード再配置処理を行った後(ST3)、クロスバー回路により複数の演算器を含む第2の機能ユニットに集約する(ST4)。
次に、テクスチャフィルタリング(Texture Filtering)を行う(ST5)。この場合、第2の機能ユニットは、読み出されたテクスチャデータと、(u,v)アドレスは算出時に得た小数部を使って4近傍補間などのフィルタリング処理を行う。
次に、ピクセルレベルの処理(Per−Pixel Operation)、具体的には、フィルタリング後のテクスチャデータと、ラスタライズ後の各種データを用いて、ピクセル単位の演算を行う(ST5)。
そして、ピクセルレベルの処理における各種テストをパスしたピクセルデータを、複数のメモリモジュール上のフレームバッファおよびZバッファに描画する(ST6)。
【0017】
ところで、テクスチャリード系のメモリアクセスは、描画系のメモリアクセスとは異なるため、他のモジュールに属すメモリからの読み出しが必要となる。
したがって、テクスチャリード系のメモリアクセスに関しては、上述したようにクロスバー回路のような配線を必要とする。
【0018】
しかしながら、従来の画像処理装置においては、第1の機能ユニットは、複数の演算器によりメモリから読み出されたデータに対して大量の演算処理を行うことから、構成が複雑化する。また、得られたデータを各演算器からクロスバー回路に出力することから、クロスバー回路が大型化し、配線遅延の観点から処理の高速化の妨げとなるという不利益がある。
【0019】
本発明は、かかる事情に鑑みてなされたものであり、その目的は、処理ユニットの簡単化を図れ、また、クロスバー回路の小型化を図れ、処理の高速化を図れる画像処理装置およびその方法を提供することにある。
【0020】
【課題を解決するための手段】
上記目的を達成するため、本発明の第1の観点は、規則性を有する複数の処理データを共有して並列処理を行う画像処理装置であって、少なくとも上記処理データを記憶し、複数のポートを有するメモリと、上記メモリの複数のポートに対応して設けられ、演算用パラメータおよび上記メモリから読み出された処理データに基づいて並列演算処理を行い、連続するストリームデータを生成する複数の演算器を含む複数の第1の機能ユニットと、上記各第1の機能ユニットで生成されたストリームデータに対する演算処理を行う複数の演算器を含む第2の機能ユニットと、上記複数の第1の機能ユニットと上記第2の機能ユニットの複数の演算器とを相互に接続するクロスバー回路と、を有し、上記各第1の機能ユニットの上記各演算器は、初段から最終段に向かって縦続接続され、各演算器はそれぞれ上記メモリの各ポートから読み出された要素データに対して所定の演算処理を行って次段の演算器に出力し、当該次段の演算器は自段の演算結果に前段の演算結果を加算し、当該加算結果を次段の演算器に出力し、最終段の演算器で全演算器の総和を求め、当該最終段の演算結果をストリームデータとして出力し、上記第2の機能ユニットは、制御信号に応じて再構成可能であって、上記演算器を上記制御信号に応じた電気的な接続網で接続し、複数の演算器の電気的接続を確立して複数の演算器からなる演算回路を形成可能で、個々の演算器に対して付加されている制御回路が、次に行うべき演算に関する情報を保持し、一連の演算の終了を検出した際に、自動的に次の演算に向けた制御に切り替える機能を有し、上記接続網の個々の接続点に対し付与された制御回路が、次にとるべき接続構成に関する情報を保持し、一連のデータ転送の終了を検出した際に、個々の制御回路が自動的に接続点の制御を切り替える機能を有する。
【0021】
好適には、グローバルモジュールと複数のローカルモジュールとを含み、上記グローバルモジュールは、上記複数のローカルモジュールが並列に接続され、ローカルモジュールからリクエストを受けると、上記リクエストに応じた当該リクエストを出したローカルモジュールに処理データを出力し、上記複数のローカルモジュールは、少なくとも上記処理データを記憶し、複数のポートを有する上記メモリと、上記メモリの複数のポートに対応して設けられ、演算用パラメータおよび上記メモリから読み出された処理データに基づいて並列演算処理を行い、連続するストリームデータを生成する複数の演算器を含む上記複数の第1の機能ユニットと、上記各第1の機能ユニットで生成されたストリームデータに対する演算処理を行う複数の演算器を含む上記第2の機能ユニットと、上記複数の第1の機能ユニットと上記第2の機能ユニットの複数の演算器とを相互に接続する上記クロスバー回路と、を有し、上記各第1の機能ユニットの上記各演算器は、初段から最終段に向かって縦続接続され、各演算器はそれぞれ上記メモリの各ポートから読み出された要素データに対して所定の演算処理を行って次段の演算器に出力し、当該次段の演算器は自段の演算結果に前段の演算結果を加算し、当該加算結果を次段の演算器に出力し、最終段の演算器で全演算器の総和を求め、当該最終段の演算結果をストリームデータとして出力し、上記第2の機能ユニットは、制御信号に応じて再構成可能であって、上記演算器を上記制御信号に応じた電気的な接続網で接続し、複数の演算器の電気的接続を確立して複数の演算器からなる演算回路を形成可能で、個々の演算器に対して付加されている制御回路が、次に行うべき演算に関する情報を保持し、一連の演算の終了を検出した際に、自動的に次の演算に向けた制御に切り替える機能を有し、上記接続網の個々の接続点に対し付与された制御回路が、次にとるべき接続構成に関する情報を保持し、一連のデータ転送の終了を検出した際に、個々の制御回路が自動的に接続点の制御を切り替える機能を有する。
【0022】
本発明では、上記メモリから上記機能ユニットの各演算器へのデータの読み出しが、初段から順にデータが入力され、かつ、前段の演算器の演算結果の入力が、自段の演算が終了し前段の演算器の演算結果を加算できるタイミングとなるようにアドレスを生成して上記メモリに供給するアドレス生成器を有する。
【0023】
本発明では、少なくとも上記メモリの各ポートから読み出された処理データを記憶し、記憶データをキャッシュアドレスに応じて上記機能ユニットの各演算器に供給するキャッシュと、上記メモリから上記機能ユニットの各演算器へのデータの読み出しが、初段から順にデータが入力され、かつ、前段の演算器の演算結果の入力が、自段の演算が終了し前段の演算器の演算結果を加算できるタイミングとなるようにアドレスを生成して上記キャッシュに供給するアドレス生成器とを有する。
【0025】
また、本発明では、上記並列処理は、ピクセルレベルでの並列処理である。
【0029】
本発明の第2の観点は、規則性を有する複数の処理データを共有して並列処理を行う画像処理方法であって、複数の第1の機能ユニットの縦続接続された複数の演算ステージにおいて、演算用パラメータおよびそれぞれ複数のポートを有するメモリの各ポートから読み出された処理データに対して所定の演算処理を行い、次段の演算ステージでは、自段の演算結果に前段の演算結果を加算し、最終段の演算ステージで全演算ステージの総和を求め、当該最終段の演算結果をストリームデータとしてクロスバー回路に出力し、上記クロスバー回路を転送された複数のストリームデータに対して制御信号に応じて再構成可能な第2の機能ユニットで演算処理を行い、上記第2の機能ユニットにおいては、上記演算器を上記制御信号に応じた電気的な接続網で接続し、複数の演算器の電気的接続を確立して複数の演算器からなる演算回路を形成して上記演算処理を行い、当該演算処理において、個々の演算器に対して付加されている制御回路が、次に行うべき演算に関する情報を保持し、一連の演算の終了を検出した際に、自動的に次の演算に向けた制御に切り替え、上記接続網の個々の接続点に対し付与された制御回路が、次にとるべき接続構成に関する情報を保持し、一連のデータ転送の終了を検出した際に、個々の制御回路が自動的に接続点の制御を切り替える。
【0030】
本発明によれば、たとえばメモリに格納されている処理データ(たとえば要素データ)がメモリの各ポートから読み出され、たとえば一旦キャッシュに格納された後、各第1の機能ユニットの対応する各演算器に供給される。
各第1の機能ユニットの各演算器では、キャッシュから供給された要素データに対して所定の演算処理が行われる。
このとき、縦続接続された複数の演算器において、それぞれメモリの各ポートから読み出された要素データに対して所定の演算処理が行われ、次段の演算器では、自段の演算結果に前段の演算結果が加算され、最終段の演算ステージで全演算ステージの総和が求められる。
そして、当該最終段の演算結果がストリームデータとしてクロスバー回路に出力される。
クロスバー回路を転送された各第1の機能ユニットによる複数のストリームデータは、第2の機能ユニットに供給される。
第2の機能ユニットは、制御信号により演算に適した演算回路が再構成されており、この演算回路により、各第1の機能ユニットによる複数のストリームデータに対して集約的な演算処理が行われる。
【0031】
また、本発明によれば、たとえばテクスチャ系の処理に場合には、コントローラにおいて演算用パラメータが生成され、生成されたパラメータはたとえばグローバルモジュールを介してローカルモジュールにブロードキャストされる。
各ローカルモジュールでは、たとえば以下の処理が行われる。
すなわちブロードキャストされたパラメータを受け取ると、その三角形が自分が担当する領域、たとえば4×4ピルセルの矩形領域単位でインターリーブされた領域に属しているか否かが判断される。その結果、属している場合には、各種データ(Z、テクスチャ座標、カラーなど)がラスタライズされる。
次に、LOD(Level of Detail)計算によるミップマップ(MipMap)レベルの算出や、テクスチャアクセスのための(u,v)アドレス計算が行われる。
そして、次に、メモリから第1の機能ユニットへのテクスチャの読み出しが行われる。
次に、ローカルモジュールの第1の機能ユニットでは、読み出されたテクスチャデータと、(u,v)アドレスを算出時に得た小数部を使って4近傍補間などのフィルタリング処理が行われる。
次に、フィルタリング後のテクスチャデータと、ラスタライズ後の各種データを用いて、第2の機能ユニットにおいてピクセル単位の演算が行われる。
そして、ピクセルレベルの処理における各種テストをパスしたピクセルデータは、メモリモジュール、たとえば内蔵DRAMメモリ上のフレームバッファおよびZバッファに書き込まれる。
【0032】
【発明の実施の形態】
図3は、本発明に係る画像処理装置の一実施形態を示すブロック構成図である。
【0033】
本実施形態に係る画像処理装置10は、図3に示すように、ストリームデータコントローラ(SDC)11、グローバルモジュール12、および複数のローカルモジュール13−0〜13−3を有している。
【0034】
本画像処理装置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階層を有する。
【0035】
以下に各構成要素の構成および機能について、図面に関連付けて順を追って説明する。
【0036】
SDC11は、CPUや外部メモリとのデータの授受、並びにグローバルモジュール12とのデータの授受を司るとともに、頂点データに対する演算、各ローカルモジュール13−0〜13−3の処理ユニットにおけるラスタライゼーション(Rasterization)に必要なパラメータの生成等の処理を行う。
【0037】
SDC11における具体的な処理内容は以下の通りである。また、SDC11の処理手順を図4に示す。
【0038】
SDC11は、まず、データが入力されると(ST1)、Per−Vertexオペレーションを行う(ST2)。
この処理においては、3次元座標、法線ベクトル、テクスチャ座標の各頂点データが入力されると、頂点データに対する演算が行われる。代表的な演算としては、物体の変形やスクリーンへの投影などを行う座標変換の演算処理、ライティング(Lighting)の演算処理、クリッピング(Clipping)の演算処理がある。
ここで行われる処理は、いわゆるVertex Shaderの実行に相当する。
【0039】
次に、DDA(Digital Differential Analyzer)パラメータを計算する(ST3)。
この処理では、ラスタライゼーションに必要な各種データ(Z、テクスチャ座標、カラーなど)の傾き等のDDAパラメータを算出する。
【0040】
次に、算出したDDAパラメータをグローバルモジュール12を介して全ローカルモジュール13−0〜13−3にブロードキャストする(ST4)。
この処理において、ブロードキャストされたパラメータは、キャッシュフィルとは別のチャネルを用いて、グローバルモジュール12を介して各ローカルモジュール13−0〜13−3に渡される。ただし、グローバルキャッシュの内容には影響を与えない。
【0041】
グローバルモジュール12は、ルータ機能および全ローカルモジュールで共用するグローバルキャッシュ121を有する。
グローバルモジュール12は、SDC11によるDDAパラメータを並列に接続された全ローカルモジュール13−0〜13−3にブロードキャストする。
【0042】
また、グローバルモジュール12は、たとえばあるローカルモジュールからローカルキャッシュフィル(Local Cache Fill)LCFのリクエストを受けると、図5に示すように、グローバルキャッシュのエントリーをチェックし(ST11)、エントリーがあった場合には(ST12)、要求されたブロックデータを読み出し(ST13)、読み出したデータをリクエストを送出したローカルモジュールに送出し(ST14)、エントリーがなかった場合には(ST12)、当該ブロックデータを保持するターゲットのローカルモジュールに対してグローバルキャッシュフィル(Global Cache Fill)GCFのリクエストを送り(ST15)、その後送られてきたブロックデータでグローバルキャッシュを更新するとともに(ST16,ST17)、ブロックデータを読み出し(ST13)、読み出したデータをローカルキャッシュフィルLDFのリクエストを送ってきたローカルモジュールに対して送出する(ST14)。
【0043】
ローカルモジュール13−0は、処理ユニット131−0、たとえばDRAMからなるメモリモジュール132−0、モジュール固有のローカルキャッシュ133−0、およびグローバルモジュール12とのインターフェースを司るグローバルインターフェース(Global Access Interface:GAIF))134−0を有している。
【0044】
同様に、ローカルモジュール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を有している。
【0045】
各ローカルモジュール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を介したアクセスを行う。
【0046】
各ローカルモジュール13−0〜13−3の処理ユニット131−0〜131−3はそれぞれ、画像処理とグラフィックス処理に特徴的な、いわゆるストリーミングデータ処理を高スループットで実行するストリーミングプロセッサである。
【0047】
各ローカルモジュール13−0〜13−3の処理ユニット131−0〜131−3は、たとえばそれぞれ以下のグラフィックス処理および画像処理を行う。
【0048】
まず、処理ユニット131−0〜131−3のグラフィックス処理の概要を図6および図7のフローチャートに関連付けて説明する。
【0049】
処理ユニット131(−0〜−3)は、ブロードキャストされたパラメータデータが入力されると(ST21)、三角形が自分が担当する領域であるか否かを判断し(ST22)、担当領域である場合には、ラスタライゼーションを行う(ST23)。
すなわち、ブロードキャストされたパラメータを受け取ると、その三角形が自分が担当する領域、たとえば4×4ピクセルの矩形領域単位でインターリーブされた領域に属しているか否かを判断し、属している場合には、各種データ(Z、テクスチャ座標、カラーなど)をラスタライズする。この場合、生成単位は、1ローカルモジュール当たり1サイクルで2×2ピクセルである。
【0050】
次に、テクスチャ座標のパースペクティブコレクション(Perspective Correction)を行う(ST24)。また、この処理ステージにはLOD(Level of Detail)計算によるミップマップ(MipMap)レベルの算出や、テクスチャアクセスのための(u,v)アドレス計算も含まれる。
【0051】
次に、テクスチャの読み出しを行う(ST25)。
この場合、各ローカルモジュール13−0〜13−3の処理ユニット131−0〜131−3は、図7に示すように、テクスチャリードの際に、まずは、ローカルキャッシュ133−0〜133−3のエントリーをチェックし(ST31)、エントリーがあった場合には(ST32)、必要なテクスチャデータを読み出す(ST33)。
必要とするテクスチャ・データがローカルキャッシュ133−0〜133−3内に無い場合には、各処理ユニット131−0〜131−3は、グローバルインターフェース134−0〜134−3を通して、グローバルモジュール12に対してローカルキャッシュフィルのリクエストを送る(ST34)。
そして、グローバルモジュール12は、要求されたブロックをリクエストを送出したローカルモジュールに返すが、なかった場合には上述したように(図5に関連付けて説明)、当該ブロックを保持するローカルモジュールに対してグローバルキャッシュフィルのリクエストを送る。その後ブロックデータをグローバルキャッシュにフィルするとともに、リクエストを送ってきたローカルモジュールに対してデータを送出する。
グローバルモジュール12から要求したブロックデータが送られてくると、該当するローカルモジュールは、ローカルキャッシュを更新し(ST35,ST36)、処理ユニットはブロックデータを読み出す(ST33)。
なお、ここでは、最大4テクスチャの同時処理を想定しており、読み出すテクスチャデータの数は、1ピクセルにつき16テクセルである。
【0052】
次に、テクスチャフィルタリング(Texture Filtering)を行う(ST26)。
この場合、処理ユニット133−0〜133−3は、読み出されたテクスチャデータと、(u,v)アドレスを算出時に得た小数部を使って4近傍補間などのフィルタリング処理を行う。
【0053】
次に、ピクセルレベルの処理(Per−Pixel Operation)を行う(ST27)。
この処理においては、フィルタリング後のテクスチャデータと、ラスタライズ後の各種データを用いて、ピクセル単位の演算が行われる。ここで行われる処理は、ピクセルレベルでのライティング(Per−Pixel Lighting)などいわゆるPixel Shaderに相当する。また、それ以外にも以下の処理が含まれる。
すなわち、アルファテスト、シザリング、Zバッファテスト、ステンシルテスト、アルファブレンディング、ロジカルオペレーション、ディザリングの各処理である。
【0054】
そして、ピクセルレベルの処理における各種テストをパスしたピクセルデータを、メモリモジュール132−0〜132−3、たとえば内蔵DRAMメモリ上のフレームバッファおよびZバッファに書き込まれる(ST28:MemoryWrite)。
【0055】
次に、処理ユニット131−0〜131−3の画像処理の概要を図8のフローチャートに関連付けて説明する。
【0056】
画像処理を実行する前に、メモリモジュール132(−0〜−3)に画像データがロードされる。
そして、処理ユニット131(−0〜−3)では、画像処理に必要な読み出し(ソース:Source)アドレスおよび書き込み(デスティネーション:Destination)アドレスの生成に必要なコマンドやデータが入力される(ST41)。
そして、処理ユニット131(−0〜−3)において、ソースアドレスおよびデスティネーションアドレスが生成される(ST42)。
次に、ソース画像がメモリモジュール132(−0〜−3)から読み出され、あるいはグローバルモジュール12から供給され(ST43)、たとえばテンプレートマッチング等の所定の画像処理が行われる(ST44)。
そして、必要に応じて所定の演算処理が行われ(ST45)、その結果がメモリモジュール132(−0〜−3)のデスティネーションアドレスで指定された領域に書き込まれる(ST46)。
【0057】
各ローカルモジュール13−0〜13−3のローカルキャッシュ133−0〜133−3は、処理ユニット131−0〜131−3の処理に必要な描画データやテクスチャデータを格納し、処理ユニット131−0〜131−3とのデータの授受、並びにメモリモジュール132−0〜132−3とのデータの授受(書き込み、読み出し)を行う。
【0058】
図9は、各ローカルモジュール13−0〜13−3のローカルキャッシュ133−0〜133−3の構成例を示すブロック図である。
【0059】
ローカルキャッシュ133は、図9に示すように、リードオンリーキャッシュ(RO$)1331、リードライトキャッシュ(RW$)1332、リオーダバッファ(Reorder Buffer:RB)1333、およびメモリコントローラ(MC)1334を含む。
【0060】
リードオンリーキャッシュ1331は、演算処理のソース画像などを読み出すための読み出し専用キャッシュであって、たとえばテクスチャ系データ等の記憶に用いられる。
リードライトキャッシュ1332は、たとえばグラフィックス処理におけるリードモディファイライト(Read Modify Write )に代表される読み出しと書き込みの両方を必要とするオペレーションを実行するためのキャッシュであって、たとえば描画系データの記憶に用いられる。
【0061】
リオーダバッファ1333は、いわゆる待ち合わせバッファであり、ローカルキャッシュに必要なデータがない場合、ローカルキャッシュフィルのリクエストを出したときに、グローバルモジュール12に送られてくるデータの順番が異なる場合があるので、この順番を遵守し、処理ユニット131−0〜131−3に要求順に戻すようにデータの順番を調整する。
【0062】
また、図10は、メモリコントローラ1334のテクスチャ系の構成例を示すブロック図である。
このメモリコントローラ1334は、図10に示すように、4つのキャッシュCSH0〜CSH3に対応するキャッシュコントローラ13340〜13343と、各キャッシュコントローラ13340〜13343から出力されるローカルキャッシュフィルリクエストを調停しグローバルインターフェース134{−0〜3}に出力するアービタ13344と、グローバルインターフェース134{−0〜3}を介して入力したグローバルキャッシュフィルリクエストを受けて、データ転送の制御を行うメモリインターフェース13345を含む。
【0063】
また、キャッシュコントローラ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に出力する。
【0064】
次に、メモリモジュールとしてのDRAMと、ローカルキャッシュと、グローバルキャッシュのメモリ容量について説明する。
メモリ容量の関係は、当然のことながらDRAM>グローバルキャッシュ>ローカルキャッシュであるが、その割合については、アプリケーションに依存する。
キャッシュブロックサイズとしては、キャッシュフィル時に下位階層のメモリから読み出すデータサイズに相当する。
DRAMの特性として、ランダムアクセス時には性能が低下するが、同一行(ROW)に属するデータの連続アクセスは速いという点をあげることができる。
【0065】
グローバルキャッシュは、DRAMからデータを読み出す関係上、前記連続アクセスを行う方が性能上好ましい。
したがって、キャッシュブロックのサイズを大きく設定する。
たとえば、グローバルキャッシュのキャッシュブロックのサイズはDRAMマクロの1行分をブロックサイズにすることができる。
【0066】
一方、ローカルキャッシュの場合には、ブロックサイズを大きくすると、キャッシュに入れても、使われないデータの割合が増えることと、下位階層がグローバルキャッシュでDRAMでなく連続アクセスに必要性がないことから、ブロックサイズは小さく設定する。
ローカルキャッシュのブロックサイズとしては、メモリインターリーブの矩形領域のサイズに近い値が適当で、本実施形態の場合、4×4ピクセル分、すなわち512ビットとする。
【0067】
次に、テクスチャ圧縮について説明する。
1ピクセルの処理を行うのに複数のテクスチャデータを必要とするので、テクスチャ読み出しバンド幅がボトルネックになる場合が多いが、これを軽減するためテクスチャを圧縮する方法がよく採用される。
圧縮方法には、いろいろあるが、4×4ピクセルのように小さな矩形領域単位で圧縮/伸長できる方法の場合には、グローバルキャッシュには圧縮されたままのデータを置き、ローカルキャッシュには、伸長後のデータを置くことが好ましい。
【0068】
次に、ローカルモジュール13−0〜13−3の処理ユニット131−0〜131−3の具体的な構成例について説明する。
【0069】
図11は、本実施形態に係るローカルモジュールの処理ユニットの具体的な構成例を示すブロック図である。
【0070】
ローカルモジュール13(−0〜−3)の処理ユニット131(−0〜−3)は、図11に示すように、ラスタライザ(Rasterizer:RSTR)1311およびコア(Core)1312を有している。
これらの構成要素のうち、本アーキテクチャを実現する演算処理部がコア1312であり、コア1312はラスタライザ1311によりアドレスや座標等のグラフィックス処理および画像処理のための各種データが供給される。
【0071】
ラスタライザ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)の供給ラインとは、異なる配線により形成される。
【0072】
ラスタライザ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)等の供給ラインが共用される。
【0073】
コア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を有している。
【0074】
グラフィックスユニット(GRU)13121は、グラフィックス処理を実行する際に、専用ハードウェアを付加することがコストパフォーマンス上明らかに有利なものをハードワイヤードロジックで実装している機能ユニットである。
グラフィックスユニット13121は、グラフィックス処理に関連するものとして、パースペクティブコレクション(Perspective Correction)、MIPMAPレベル算出等の機能を実装している。
【0075】
グラフィックスユニット13121は、クロスバー回路13125、レジスタユニット(RGU)13124を介してラスタライザ1311により供給されたテクスチャ座標(V1x,V1y,V1z)、および/またはラスタライザ1311またはピクセルエンジン(PXE)13122により供給されたテクスチャ座標(V2x,V2y,V2z)データを入力し、入力データに基づいて、パースペクティブコレクション、LOD(LevelofDetail)計算によるミップマップ(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を通して、あるいは図11中、破線で示すように、別の配線で直接的にピクセル演算プロセッサ(POP)群13123に供給される。
【0076】
第3の機能ユニットとしてのピクセルエンジン(PXE)13122は、ストリームデータ処理を行う機能ユニットであって、内部に複数の演算器を有する。
ピクセルエンジン13122は、ピクセル演算プロセッサ(POP)群13123に比べて演算器間の接続自由度が高く、かつ演算器の機能も豊富である。
【0077】
ピクセルエンジン(PXE)13122は、描画対象に関する情報やピクセル演算プロセッサ(POP)群13123における演算結果が、たとえばクロスバー回路13125によりレジスタユニット(RGU)13124の所望のFIFOレジスタに設定された後、クロスバー回路13125を介さず、レジスタユニット(RGU)13124を介して直接的に供給される。
ピクセルエンジン(PXE)13122に入力されるデータとしては、たとえば描画する対象の表面に関する情報(面の方向、色、反射率、模様(テクスチャ)等)、表面にあたる光に関する情報(入射方向、強さなど)、過去の演算結果(演算の中間値)等が一般的である。
【0078】
ピクセルエンジン(PXE)13122は、複数の演算器を有し、たとえば外部からの制御により演算経路を再構成可能な演算ユニットであって、所望の演算を実現するように、内部の演算器間の電気的接続を確立し、レジスタユニット(RGU)13124を介して入力されたデータを、演算器と電気的接続網(インターコネクト)から形成される一連の演算器のデータパスに入力することで演算を行い、演算結果を出力する。
【0079】
すなわち、ピクセルエンジン13122は、再構成可能なデータパスをたとえば複数有し、演算器(加算器、乗算器、乗加算器等)を、電気的な接続網で接続し、複数個の演算器からなる演算回路を構成する。
そして、ピクセルエンジン13122は、このようにして再構成された演算回路に対して、連続してデータを入力し、演算を行うことが可能であり、たとえば二分木状のDFG(データフローグラフ)で表現される演算を、効率よくかつ少ない回路規模で実現できる接続網を使用して演算回路を構成することが可能である。
【0080】
図12は、ピクセルエンジン(PXE)13122の構成例を示すブロック図である。
本ピクセルエンジン(PXE)13122は、図124に示すように、演算器プール200を有する。
演算器プール200は、データバスBSによりストリームレジスタファイル13135とのデータの授受を行う少なくとも一つの(図12の例では4つの)演算部201〜204を有する。
各演算部201〜204は、複数(図12の例では8個)の演算器(加算器、乗算器、乗加算器等)OP1〜OP8と、演算器OP1〜OP8との間に電気的な接続を変更可能な接続回路網CCNを含む。
【0081】
すなわち、ピクセルエンジン(PXE)13122において各演算器OPの間に接続回路網演算器CCNが存在する。
このように、レジスタファイルを独立して持たせることで、回路量を削減できる。
【0082】
なお、図12の例では、各演算部201〜204は、データバスBS、クロスバー回路13125を介して個別にレジスタユニット(RGU)13124とのデータの授受を行うような構成となっているが、たとえば他の信号ラインで各演算部201〜204間を接続して、一の演算部の演算結果を他の演算部で用いて演算を行うように構成する等の態様も可能である。
【0083】
図13は、本発明に係る接続回路網CCNの構成例を示す図である。
接続回路網CCNの構成の特徴は、たとえば2n本の入力バスがある場合、n個の演算器は、レジスタユニット(RGU)13124からの入力一対と、前段(左側)の演算器の出力をセレクタで選択して自段の演算器に入力する。そして、残りの演算器は、レジスタユニット(RGU)13124からの入力すべてと、前段(左側)の出力を選択して演算器に入力する。
【0084】
図13の接続回路網CCNは、4対、8本の入力バスL11,L12、L21,L22、L31,L32、およびL41,L42を有する構成例である。
図13において、入力バスの所定の交差点において示す黒丸がセレクタを表している。図14に各セレクタの構成例を示す。
なお、図中の線は、束線(2本以上の信号線の集まり)を示している。
【0085】
また図13は、7つの演算器OP1〜OP7を有する構成例を示しており、並列に配置された演算器の入力から出力までをステージSTG1〜STG7(最終のステージ7の演算器OP7の出力はストリームレジスタファイルにデータが送られる)として次のような構成となっている。
【0086】
すなわち、第1ステージSTG1では、演算器OP1の入力に対して一対の入力バスL11,L12が接続され、演算器OP1の出力が次段以降(図13の例では第3ステージSTG3の入力側)に接続されている。
第2ステージSTG2では、演算器OP2の入力に対して一対の入力バスL21,L22が接続され、演算器OP2の出力が第3ステージSTG3の入力側に接続されている。
【0087】
第3ステージSTG3では、演算器OP3の入力に対して一対の入力バスL31,L32が接続され、演算器OP3の出力が第3ステージSTG4の入力側に接続されている。そして、入力バスL31,L32に対して第1ステージSTG1の演算器OP1の出力ラインおよび第2ステージSTG2の演算器OP2の出力ラインが交差しており、これら4つの交差点にそれぞれ図14に示すセレクタSLCが配置されている。
【0088】
第4ステージSTG4では、演算器OP4の入力に対して一対の入力バスL41,L42が接続され、演算器OP4の出力が第5ステージSTG5の入力側に接続されている。そして、入力バスL41,L42に対して第1ステージSTG1の演算器OP1の出力ライン、第2ステージSTG2の演算器OP2の出力ラインおよび第3ステージSTG3の演算器OP3の出力ラインが交差しており、これら6つの交差点にそれぞれ図14に示すセレクタSLCが配置されている。
【0089】
第5ステージSTG5では、演算器OP5に対してレジスタユニット(RGU)13124からの入力すべてと、第1〜第4ステージSTG1〜STG4の出力を選択して入力されるように、入力バスL42と入力バスL21,L22、L31,L32、L41との8つの交差点、並びに、第1ステージSTG1の演算器OP1の出力ライン、第2ステージSTG2の演算器OP2の出力ライン、第3ステージSTG3の演算器OP3の出力ライン、および第4ステージSTG4の演算器OP4の出力ラインが交差する8つの交差点にそれぞれ図14に示すセレクタSLCが配置されている。
【0090】
第6ステージSTG6では、演算器OP6に対してレジスタユニット(RGU)13124からの入力すべてと、第1〜第5ステージSTG1〜STG5の出力を選択して入力されるように、入力バスL42と入力バスL21,L22、L31,L32、L41との8つの交差点、並びに、第1ステージSTG1の演算器OP1の出力ライン、第2ステージSTG2の演算器OP2の出力ライン、第3ステージSTG3の演算器OP3の出力ライン、第4ステージSTG4の演算器OP4の出力ライン、および第5ステージSTG5の演算器OP5の出力ラインが交差する10個の交差点にそれぞれ図14に示すセレクタSLCが配置されている。
【0091】
第7ステージSTG7では、演算器OP7に対してレジスタユニット(RGU)13124からの入力すべてと、第1〜第6ステージSTG1〜STG6の出力を選択して入力されるように、入力バスL42と入力バスL21,L22、L31,L32、L41との8つの交差点、並びに、第1ステージSTG1の演算器OP1の出力ライン、第2ステージSTG2の演算器OP2の出力ライン、第3ステージSTG3の演算器OP3の出力ライン、第4ステージSTG4の演算器OP4の出力ライン、第5ステージSTG5の演算器OP5の出力ライン、および第6ステージSTG6の演算器OP6の出力ラインが交差する12個の交差点にそれぞれ図14に示すセレクタSLCが配置されている。
【0092】
ここで、本発明に係るピクセルエンジン(PXE)13122の演算実行の概略について、図15および図16に関連付けて説明する。
【0093】
たとえばデータA,B,C,Dをレジスタユニット(RGU)13124から読み、次式のYに相当する値をレジスタユニット(RGU)13124に書き込むという演算を複数回行う。
【0094】
【数1】
Y[i]=(A[i]+B[i])×(C[i]+D[i])
【0095】
図15は、式(1)に示す演算のDFG(データフローグラフ)を示す。
【0096】
演算1を実行する機能を有する演算器OP1と、データAに相当する値が出力されるレジスタファイル2011の出力を、枝0に相当する電気的接続経路である接続0で接続する。
同様に、枝1〜3に相当する接続1から3により、レジスタユニット(RGU)13124のデータBに相当する出力を演算器OP1に、データC,Dに相当する出力を演算器OP2に接続する。
演算器OP1の出力を枝4に相当する接続4で、また演算器OP2の出力を枝5に相当する接続5で、それぞれ演算3を実行する機能を有する演算器OP3の入力に接続する。
演算器OP3の出力を、枝6に相当する接続6を経由してレジスタファイル2011に入力し、Yに相当する値を書き込む経路を確立する。
【0097】
このようにして、レジスタファイル、演算器の電気的接続を実現し、レジスタファイルから、A[i],B[i],C[i],D[i]に相当するデータを順次読み出し、演算を実行することで、複数個のA〜Dに対する演算が効率よく実現される。
このようにして実現されるピクセルエンジン(PXE)13122では、演算器間の電気的接続を変更することで、異なる演算に容易に対応できる。
図13の構成の場合、演算器OP1〜OP3が用いられ、接続0および接続1は入力バスL11,L12に相当し、接続2および接続3は入力バスL21,L22に相当する。
図13中に示すセレクタSLC1で演算器OP1の演算結果を演算器OP3に入力させる接続4を形成し、セレクタSLC2で演算器OP2の演算結果を演算器OP3に入力させる接続5を形成する。
そして、演算器OP3の演算結果をそのままレジスタユニット(RGU)13124に出力するための接続6を形成する。
【0098】
以上の演算は、図17に示すようなパイプライン処理で実行される。
なお、図17(A)はクロックを示し、図17(B)のRRはレジスタユニット(RGU)13124からデータA〜Dの読み出し処理を示し、図17(C),(E),(G)のICは接続網CCN経由でのデータ転送処理を示し、図17(D)のAdd1/0は演算器OP1、OP2による演算処理を示し、図17(F)のmulは演算器OP3よる演算処理を示し、図17(H)のWBはレジスタユニット(RGU)13124への演算結果の書き込み処理を示している。
【0099】
本実施形態に係るピクセルエンジン(PXE)13122は、上述したようにデータパスを動的に再構築可能である。
これにより、ピクセルエンジン(PXE)13122は、演算回路を使用して、演算をパイプライン状に実行している際に、演算器間の電気的接続を変更することが可能である。
また、前記のように動的に演算器間の構成を変更することで、遅滞なく異なる演算が行える。
【0100】
また、ピクセルエンジン(PXE)13122は、個々の演算器に対して付加されている制御回路が、次に行うべき演算に関する情報を保持し、一連の演算の終了を検出した際に、自動的に次の演算に向けた制御に切り替える機能を有する。
そして、ピクセルエンジン(PXE)13122では、接続網CCNの個々の接続点に対し付与された制御回路が、次にとるべき接続構成に関する情報を保持し、一連のデータ転送の終了を検出した際に、個々の制御回路が自動的に接続点を制御を切り替える機能を有する。
【0101】
次に、動的再構築の実現方法について説明する。
【0102】
動的再構築の実現方法1
まず、図18および図19に関連付けて動的再構築の第1の実現方法について説明する。
この場合、図18に示すように、各演算器OP、接続網制御回路CCNに対する制御回路301は、現在の制御情報(現制御情報)CIFMと、次に行うべき制御に関する情報(次制御情報)NIFMの2つを保持する。
そして、演算データOPDTは、それが演算に使用する最終データであることが識別可能な制御信号CTLと同期して送られてくる。
制御回路301は、最終データであることが識別された場合、現在実行中の演算の完了と同時に、現制御情報CIFMを次制御情報NIFMで書き換える。
これにより、演算回路の制御を変更することが可能であり、異なる演算を実行することが可能となる。
【0103】
接続回路網CCNに関しても同様であり、図19に示すように、制御信号CTLにより最終データであることが識別された場合、制御回路301は、現在実行中のデータ転送の完了と同時に、現制御情報CIFMを次制御情報NIFMで書き換える。
これにより、接続回路網の制御を変更することが可能であり、異なる電気的接続を実現することが可能となる。
【0104】
次に、図20〜図22に関連付けて動的再構築の第2の実現方法について説明する。
【0105】
動的再構築の実現方法2
前述したような、演算回路と接続回路網からなる演算装置を使用して、異なる演算を連続して実行する場合、図20に示すように、演算1と演算2が時間的に重複する区間(演算1と演算2の重複区間)が生じる。
この間、演算回路と接続回路網上には異なる演算に対するデータが同時に存在する。
この区間では、演算1の最終データが、演算回路上に存在する一方で、一部の回路は演算2に対応する制御が行われている。
そのため、演算1の最終データが、演算2を行っている演算器または、演算2に対応する制御となっている接続網制御回路に到達した場合、それらが演算の終了と認識して演算2に対する制御から演算3に対する制御に切り替わり、以後の残りの演算2に対する演算が正常に行われない可能性がある。
これに対処した動的再構築の実現例を以後述べる。
【0106】
この場合、図21に示すように、各演算器OP、接続網制御回路CCNに対する制御回路301は、現在の制御情報(現制御情報)CIFMと現在実行中の演算を識別するための情報(現識別情報)CDSCと、次に行うべき制御に関する情報(次制御情報)NIFMと、次に実行する演算を識別するための情報(次識別情報)NDSCを保持する。
演算データOPDTは、それが、演算に使用する最終データであることが識別可能な情報、およびそのデータが演算1に対するものか、演算2に対するものかを識別可能な情報を示す制御信号CTLと同期して送られてくる。
制御回路301は、送られてきたデータが、最終データであり、かつ現識別情報CDSCで示される演算に対するものであることが識別された場合、現在実行中の演算の完了と同時に、現制御情報CIFM、現識別情報CDSCをそれぞれ次制御情報NIFM、次識別情報NDSCで書き換える。
これにより、継続して入力されてくるストリームデータに対し、異なる演算に適切なタイミングで切り替えることが可能となる。
【0107】
接続回路網CCNに関しても同様であり、図22に示すように、現在実行中のデータ転送の完了と同時に、現制御情報CIFM、現識別情報IDSCをそれぞれ次制御情報NIFM、次識別情報NDSCで書き換える。
これにより、継続して入力されてくるデータに対し、異なる電気的接続に適切なタイミングで切り替えることが可能となる。
【0108】
図23は、ピクセルエンジン(PXE)13122の好適な構成例、およびレジスタユニット(RGU)13124、クロスバー回路13125との接続例を示す図である。
【0109】
このピクセルエンジン(PXE)13122は、図23に示すように、2または3入力MAC(Multiply and Accumulator)を基本とした複数(図23の例では16個)の演算器OP1〜OP8,OP11〜OP18と、1または複数(図23の例では4個)ルックアップテーブルLUT1,LUT2、LUT11,LUT12とを有している。
【0110】
図23に示すように、ピクセルエンジン(PXE)13122内の各演算器OP1〜OP8,OP11〜OP18の2本の入力は、レジスタユニット(RGU)13124のFIFO(First-IN First-Out) レジスタFREGと直結している。
同様に、ルックアップテーブルLUT1,LUT2、LUT11,LUT12の1本の入力はレジスタユニット(RGU)13124のFIFOレジスタFREGと直結している。
そして、各演算器OP1〜OP8,OP11〜OP18およびルックアップテーブルLUT1,LUT2、LUT11,LUT12の出力は、クロスバー回路13125に接続されている。
【0111】
さらに、図23の例では、演算器OP1の出力が演算器OP3,OP4の2入力および3入力演算器OP2の1入力にそれぞれ接続されている。同様に、演算器OP2の出力が演算器OP4の2入力および3入力演算器OP3の1入力にそれぞれ接続されている。また、演算器OP3の出力が3入力演算器OP4の1入力に接続されている。
演算器OP5の出力が演算器OP7,OP8の2入力および3入力演算器OP6の1入力にそれぞれ接続されている。同様に、演算器OP6の出力が演算器OP8の2入力および3入力演算器OP7の1入力にそれぞれ接続されている。また、演算器OP7の出力が3入力演算器OP8の1入力に接続されている。
さらに、演算器OP11の出力が演算器OP13,OP14の2入力および3入力演算器OP12の1入力にそれぞれ接続されている。同様に、演算器OP12の出力が演算器OP14の2入力および3入力演算器OP13の1入力にそれぞれ接続されている。また、演算器OP13の出力が3入力演算器OP14の1入力に接続されている。
演算器OP15の出力が演算器OP17,OP18の2入力および3入力演算器OP16の1入力にそれぞれ接続されている。同様に、演算器OP16の出力が演算器OP18の2入力および3入力演算器OP17の1入力にそれぞれ接続されている。また、演算器OP17の出力が3入力演算器OP18の1入力に接続されている。
【0112】
このように、図23のピクセルエンジン(PXE)13122内においては、演算器OP1の出力がフォワーディングパスにより演算器OP2,OP3、OP4に接続されており、演算器OP2,OP3、OP4は、演算器OP1の出力をソースオペランドとして参照可能である。
演算器OP2の出力がフォワーディングパスにより演算器OP3、OP4に接続されており、演算器OP3、OP4は、演算器OP2の出力をソースオペランドとして参照可能である。
演算器OP3の出力がフォワーディングパスにより演算器OP4に接続されており、演算器OP4は、演算器OP3の出力をソースオペランドとして参照可能である。
演算器OP5の出力がフォワーディングパスにより演算器OP6,OP7、OP8に接続されており、演算器OP6,OP7、OP8、演算器OP5の出力をソースオペランドとして参照可能である。
演算器OP6の出力がフォワーディングパスにより演算器OP7、OP8に接続されており、演算器OP7、OP8は、演算器OP6の出力をソースオペランドとして参照可能である。
演算器OP7の出力がフォワーディングパスにより演算器OP8に接続されており、演算器OP8は、演算器OP7の出力をソースオペランドとして参照可能である。
同様に、演算器OP11の出力がフォワーディングパスにより演算器OP12,OP13、OP14に接続されており、演算器OP12,OP13、OP14は、演算器OP11の出力をソースオペランドとして参照可能である。
演算器OP12の出力がフォワーディングパスにより演算器OP13、OP14に接続されており、演算器OP13、OP14は、演算器OP12の出力をソースオペランドとして参照可能である。
演算器OP13の出力がフォワーディングパスにより演算器OP14に接続されており、演算器OP14は、演算器OP13の出力をソースオペランドとして参照可能である。
演算器OP15の出力がフォワーディングパスにより演算器OP16,OP17、OP18に接続されており、演算器OP16,OP17、OP18、演算器OP15の出力をソースオペランドとして参照可能である。
演算器OP16の出力がフォワーディングパスにより演算器OP17、OP18に接続されており、演算器OP17、OP18は、演算器OP16の出力をソースオペランドとして参照可能である。
演算器OP17の出力がフォワーディングパスにより演算器OP18に接続されており、演算器OP18は、演算器OP17の出力をソースオペランドとして参照可能である。
また、ルックアップテーブルLUT1,LUT2、LUT11,LUT12は、たとえば任意に定義可能なRAM−LUTであり、1コンテキストでは最大L(L:同時参照可能なテーブル数)個まで参照可能である。ルックアップテーブルLUT1,LUT2、LUT11,LUT12には、たとえばsin/cos等の初等関数等が保持される。
【0113】
以上の構成において、ピクセルエンジン(PXE)13122とレジスタユニット(RGU)13124間の接続数に関しては、ピクセルエンジン(PXE)13122からクロスバー回路(IBX)13125への接続数CN1は次のようになる。
【0114】
【数2】
CN1=(演算器数+同時参照可能なLUT数)×1
【0115】
また、レジスタユニット(RGU)13124からピクセルエンジン(PXE)13122への接続数CN2は次のようになる。
【0116】
【数3】
CN2=演算器数×2+同時参照可能なLUT数×1
【0117】
以上の構成を有するピクセルエンジン(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に転送する。
【0118】
ピクセル演算プロセッサ(POP)群13123は、メモリバンド幅を活かした高並列の演算処理を行う機能ユニットであるPOPを複数、本実施形態ではたとえば図24に示すように、POP0〜POP3の4個を有する。
各POPは、並列に配列されたPOPE(Pixel Operation Processing Element)と呼ばれる複数の演算器を有している。また、メモリに対するアドレス生成機能も有する。
ピクセル演算プロセッサ(POP)群13123とキャッシュ間は広いバンド幅で接続されており、かつメモリアクセスのためのアドレス生成機能を内蔵しているので、演算器の演算能力を最大限引き出すだけのストリームデータの供給が可能である。
【0119】
ピクセル演算プロセッサ(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に転送する。
【0120】
一方、ピクセル演算プロセッサ(POP)群13123は、画像処理時には、たとえば以下の処理を行う。
ピクセル演算プロセッサ(POP)群13123は、たとえばラスタライザ1311で生成されてレジスタユニット(RGU)13124に設定され、グラフィックスユニット(GRU)13121を素通りしてクロスバー回路13125を介さずに直接的に供給されたソースアドレス(X1s,Y1s)および(X2s,Y2s)に基づいて、たとえばリードオンリーキャッシュRO$および/またはリードライトキャッシュRW$を介して、メモリモジュール132にされている画像データを読み出し、読み出しデータに対して所定の演算処理を行って、演算結果をクロスバー回路13125、レジスタユニット(RGU)13124を介してライトユニットWUに転送する。
【0121】
なお、上述した機能を有するPOPのさらに具体的な構成については、後で詳述する。
【0122】
レジスタユニット(RGU)13124は、コア1312内の各機能ユニットで処理されるストリームデータを格納するFIFO構造のレジスタファイルである。
また、ハードウェアリソースの関係で、DFGを複数のサブDFG(Sub-DFG)に分割して実行しなければならない場合に、サブDFG間の中間値格納バッファとしても機能する。
図23に示すように、レジスタユニット(RGU)13124内のFIFOレジスタFREGの出力と機能ユニットであるピクセルエンジン(PXE)13122、ピクセル演算プロセッサ(POP)群13123の各演算器の入力ポートとは、1対1に対応する。
【0123】
クロスバー回路13125は、コア1312が、DFGに応じて機能ユニット間の接続を替えることにより様々なアルゴリズムに対応可能なように、この接続切り替えを実現する。
上述したように、レジスタユニット(RGU)13124内のFIFOレジスタFREGの出力と機能ユニットの入力ポートは固定で1対1に対応するが、機能ユニットの出力ポートとレジスタユニット(RGU)13124内のFIFOレジスタFREGの入力をクロスバー回路13125で切り替える。
【0124】
図25は、POP(ピクセル演算プロセッサ)とメモリ間の接続形態およびPOPの構成例を示す図である。
なお、図25の例は、各POP(0〜3)は、並列に配列された4個の演算器POPE0〜POPE3を有する場合である。
【0125】
また、本実施形態においては、ローカルモジュール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のデータを読み出して演算を行う方法である。
【0126】
本実施形態においては、上述した第2の方法を採用している。
ローカルキャッシュ133は、POP(0〜3)の各POPE0〜POPE3に対応してそれぞれリードオンリーキャッシュRO$0〜RO$3、並びに、リードライトキャッシュRW$0〜RW$3が配置されている。
【0127】
また、ローカルキャッシュ133は、図25に示すように、セレクタ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に供給する。
【0128】
各POP(0〜3)は、並列に配列された4個の演算器POPE0〜POPE3に加えて第4の機能ユニットとしてのライトユニットWU、フィルタ機能ユニットFFU、出力選択回路OSLC、およびアドレス生成器AGを有している。
【0129】
ライトユニットWUは、グラフィックス処理の場合には、レジスタユニット(RGU)13124からのソースデータ、具体的には色データ(RGB)および混合値データ(A)、並びに奥行きデータ(Z)と、リードライトキャッシュRW$からのデスティネーション色データ(RGB)および混合値データ(A)、並びに奥行きデータ(Z)に基づいて、αブレンディング、各種テスト、ロジカルオペレーションといったグラフィックス処理のピクセル書き込みに必要な演算を行い、演算結果をリードライトキャッシュRW$に書き戻す。
また、ライトユニットWUは、画像処理の場合には、ピクセル演算プロセッサ(POP)群13123による演算結果のデータを、たとえばレジスタユニット(RGU)13124の特定のFIFOレジスタから直接的に入力したデスティネーションアドレス(Xd,Yd)に、リードライトキャッシュRW$を介してメモリモジュール132に格納する。
【0130】
なお、図25の例では、ライトユニットWUを各POPに設けている例を示しているが、一つのPOPのみに設けて複数の分割ローカルキャッシュD133に供給する、あるいは2個のPOPに対して一つを設けて対応する分割ローカルキャッシュD133に供給する、あるいはPOPとは別個に設ける等、種々の態様で構成可能である。
【0131】
フィルタ機能ユニット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に供給する。
【0132】
アドレス生成器AGは、フィルタ機能ユニットFFUにより供給されたアドレスデータ(si,ti,lodi)に基づいて4近傍フィルタリングを行うための4近傍の(u,v)座標、すなわち、(u0,v0),(u1,v1),(u2,v2),(u3,v3)を計算し、メモリコントローラMCに供給する。
【0133】
なお、メモリコントローラMCは、リードオンリーキャッシュRO$をグローバルバスから送られるデータのローカルキャッシュとして用いる場合には、(u,v)座標を基に物理アドレスを計算し、キャッシュヒット、グローバルバスへのリクエスト送出、リードオンリーキャッシュRO$フィルなどを行い、リードオンリーキャッシュRO$から対応するPOPにデータを送出させる。
メモリコントローラMCは、リードライトキャッシュRW$をメモリモジュール132への書き込みキャッシュとして用いる場合には、デスティネーションアドレス(Xd,Yd)を基に物理アドレスを計算し、キャッシュ、メモリモジュール132への書き戻し制御を行う。
【0134】
POPE0は、リードオンリーキャッシュRO$0またはリードライトキャッシュRW$0から読み出された32ビット幅のデータおよびフィルタ機能ユニットFFUによる演算パラメータ(たとえばフィルタ係数)を受けて所定の演算(たとえば加算)を行って、演算結果を次段のPOPE1に出力する。また、POPE0は、この所定の演算結果を出力選択回路OSLCに出力する8ビット×4の出力ラインOTL0を有する。
また、POPE0は、クロスバー回路13125を転送され、レジスタユニット(RGU)13124に設定されたデータを受けて所定の演算を行い、この演算結果を分割ローカルキャッシュD133(0)のセレクタSEL5を介してリードライトキャッシュRW$0に出力する。
【0135】
POPE1は、リードオンリーキャッシュRO$1またはリードライトキャッシュRW$1から読み出された32ビット幅のデータおよびフィルタ機能ユニットFFUによる演算パラメータを受けて所定の演算(たとえば加算)を行い、この演算結果とPOPE0により演算結果を加算して次段のPOPE2に出力する。また、POPE1は、この所定の演算結果を出力選択回路OSLCに出力する8ビット×4の出力ラインOTL1を有する。
また、POPE1は、クロスバー回路13125を転送され、レジスタユニット(RGU)13124に設定されたデータを受けて所定の演算を行い、この演算結果を分割ローカルキャッシュD133(0)のセレクタSEL6を介してリードライトキャッシュRW$1に出力する。
【0136】
POPE2は、リードオンリーキャッシュRO$2またはリードライトキャッシュRW$2から読み出された32ビット幅のデータおよびフィルタ機能ユニットFFUによる演算パラメータを受けて所定の演算(たとえば加算)を行い、この演算結果とPOPE1により演算結果を加算して次段のPOPE3に出力する。また、POPE2は、この所定の演算結果を出力選択回路OSLCに出力する8ビット×4の出力ラインOTL2を有する。
また、POPE2は、クロスバー回路13125を転送され、レジスタユニット(RGU)13124に設定されたデータを受けて所定の演算を行い、この演算結果を分割ローカルキャッシュD133(0)のセレクタSEL7を介してリードライトキャッシュRW$2に出力する。
【0137】
POPE3は、リードオンリーキャッシュRO$3またはリードライトキャッシュRW$3から読み出された32ビット幅のデータおよびフィルタ機能ユニットFFUによる演算パラメータを受けて所定の演算(たとえば加算)を行い、この演算結果とPOPE2により演算結果を加算して、この演算結果(一つのPOP内の総計)を8ビット×4の出力ラインOTL3により出力選択回路OSLCに出力する。
また、POPE3は、クロスバー回路13125を転送され、レジスタユニット(RGU)13124に設定されたデータを受けて所定の演算を行い、この演算結果を分割ローカルキャッシュD133(0)のセレクタSEL8を介してリードライトキャッシュRW$3に出力する。
【0138】
図26は、本実施形態に係るPOPE(0〜3)の具体的な構成例を示す回路図である。
本POPEは、図26に示すように、マルチプレクサ(MUX)401〜405、加減算器(addsub)406、乗算器(mul)407、加減算器(addsub)408、および積算レジスタ409を有している。
【0139】
マルチプレクサ401は、レジスタユニット(RGU)13124によるデータ、フィルタ機能ユニットFFUによる演算パラメータ、リードオンリーキャッシュRO$(0〜3)、またはリードライトキャッシュRW$(0〜3)から読み出されたデータのうちの一つを選択して、加減算器406に供給する。
【0140】
マルチプレクサ402は、レジスタユニット(RGU)13124によるデータ、リードオンリーキャッシュRO$(0〜3)、またはリードライトキャッシュRW$(0〜3)から読み出されたデータのうちの一つを選択して、加減算器406に供給する。
【0141】
マルチプレクサ403は、レジスタユニット(RGU)13124によるデータ、フィルタ機能ユニットFFUによる演算パラメータ、リードオンリーキャッシュRO$(0〜3)、またはリードライトキャッシュRW$(0〜3)から読み出されたデータのうちの一つを選択して、乗算器407に供給する。
【0142】
マルチプレクサ404は、前段のPOPE(0〜2)の演算結果または積算レジスタ409の出力データのうちのいずれかを選択して加減算器408に供給する。
【0143】
マルチプレクサ405は、レジスタユニット(RGU)13124によるデータ、フィルタ機能ユニットFFUによる演算パラメータ、リードオンリーキャッシュRO$(0〜3)、またはリードライトキャッシュRW$(0〜3)から読み出されたデータのうちの一つを選択して、加減算器408に供給する。
【0144】
加減算器406は、マルチプレクサ401の選択データとマルチプレクサ402の選択データを加算(減算)して、乗算器407に出力する。
乗算器407は、加減算器406の出力データとマルチプレクサ403の選択データを乗算器して、加減算器408に出力する。
加減算器408は、乗算器407と出力データ、マルチプレクサ404の選択データ、マルチプレクサ405の選択データを加算(減算)して積算レジスタ409に出力する。
そして、積算レジスタ409の保持されたデータが、各POPEの演算結果として、出力選択回路OSLCおよび次段のPOPE(1〜3)に出力される。
【0145】
出力選択回路OSLCは、各POPE0〜P0PE3の出力ラインOTL0〜OTL3を転送された演算データのうちのいずれかの演算データを選択して、クロスバー回路13125に出力する機能を有する。
本実施形態では、出力選択回路OSLCは、一つのPOP内の総計を出力するPOPE3の出力ラインOTL3を転送された演算データを選択し、クロスバー回路13125に出力するように構成されている。
クロスバー回路13125に出力された演算データは、レジスタユニット13124に設定され、この設定データがクロスバー回路13125を介さずに直接的にピクセルエンジン13122の所定の演算器に供給される。
【0146】
アドレス生成器AGは、図27に示すように、メモリモジュール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では、演算効率の向上が図られている。
【0147】
次に、メモリのデータに基づいてピクセル演算プロセッサ群13123で演算処理を行い、さらにピクセルエンジン13122で演算を行う場合の動作を、図28〜図31に関連付けて説明する。
なお、ここでは、図29(A)に示すように、縦16、横16の16×16の16列の要素データについて演算を行う場合を例に説明する。
【0148】
ステップST51
まず、ステップST51において、メモリモジュール(eDRAM)132からローカルキャッシュ133のリードオンリーキャッシュRO$0〜RO$3へ1列(4つのPOP分)同時に転送される。
次に、図30(A),(C),(E),(G)に示すように、アドレス生成器AGにより各キャッシュに独立に、かつ、1POP内のPOPE0〜POPE3に1アドレスずつ順にずらしてキャッシュアドレスCADR0〜CADR3の供給が行われる。
これにより、各POP0〜POP3の各POPE0〜POPE3に16個の要素データが順に読み出される。
【0149】
たとえば分割ローカルキャッシュ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が読み出される。
【0150】
分割ローカルキャッシュ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が読み出される。
【0151】
分割ローカルキャッシュ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が読み出される。
【0152】
分割ローカルキャッシュ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が読み出される。
【0153】
ステップST52
ステップST52において、各POP(0〜3)の各POPE0〜POPE3で、1要素が1列分(16個)加算される。
具体的には、POP0のPOPE0では、図30(B)に示すように、データ00〜0Fが順次に加算され、演算結果OPR0がPOPE1に出力される。
POP0のPOPE1では、図30(D)に示すように、データ10〜1Fが順次に加算される。
POP0のPOPE2では、図30(F)に示すように、データ20〜2Fが順次に加算される。
POP0のPOPE3では、図30(H)に示すように、データ30〜3Fが順次に加算される。
他のPOP1〜POP3においても同様に行われる。
【0154】
ステップST53
ステップST53においては、各POP(0〜3)の各POPE0〜POPE3の演算結果が加算され、16×4要素の加算結果を得る。
具体的には、図30(B),(D)に示すように、POP0のPOPE0の演算結果OPR0がPOPE1に出力される。
POP0のPOPE1では、図30(D),(F)に示すように、自身の演算結果に、POP0のPOPE0の演算結果OPR0が加算され、その演算結果OPR1がPOPE2に出力される。
POP0のPOPE2では、図30(F),(H)に示すように、自身の演算結果に、POP0のPOPE1の演算結果OPR1が加算され、その演算結果OPR2がPOPE3に出力される。
そして、POP0のPOPE3では、図30(H)に示すように、自身の演算結果に、POP0のPOPE2の演算結果OPR2が加算され、その演算結果OPR3が出力選択回路OSLCに出力される。
他のPOP1〜POP3においても同様に行われる。
【0155】
ステップST54
ステップST54においては、各POP0〜POP3の出力選択回路OSLCから総演算結果OPR3がクロスバー回路13125を介してレジスタユニット(RGU)13124に転送される。
たとえば図31に示すように、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に格納される。
【0156】
ステップ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で加算される。
【0157】
ステップST46
ステップST46では、図30(P)に示すように、ピクセルエンジン(PXE)13122の第3の加算器ADD3の加算結果が一連の演算結果として出力される。
【0158】
図32は、本実施形態に係る処理ユニットにおけるコアのピクセルエンジン(PXE)13122、ピクセル演算プロセッサ(POP)群13123、レジスタユニット(RGU)13124、並びにメモリ部分を含む動作概要を示す図である。
【0159】
図32において、破線はアドレス系データの流れを、一点鎖線はリードデータの流れを、実線はライトデータの流れをそれぞれ示している。
また、レジスタユニット(RGU)13124において、FREGA1,FREGA2はアドレス系に用いられるFIFOレジスタを、FREGRはリードデータに用いられるFIFOレジスタを、FREGWはライトデータに用いられるFIFOレジスタをそれぞれ示している。
【0160】
図32の例では、ラスタライザ1311によって生成されるたとえばソース(読み出し用)アドレスデータが、クロスバー回路13125を介してレジスタユニット(RGU)13124のFIFOレジスタFREGA1,FREGA2にセットされる。
そして、FIFOレジスタFREGA1にセットされたアドレスデータは、たとえばクロスバー回路13125を介さずに直接的にピクセル演算プロセッサ(POP)13123のアドレス生成器AG1に供給される。アドレス生成器AG1において読み出すべきデータのアドレスが生成され、これに基づきメモリモジュール132からリードオンリーキャッシュ1331に読み出された所望のデータがピクセル演算プロセッサ(POP)13123の各演算器(POPE)に供給される。
【0161】
ピクセル演算プロセッサ(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)に供給される。
【0162】
また、ラスタライザ1311によって生成されるデスティネーション(書き込み用)アドレスデータが、クロスバー回路13125を介してレジスタユニット(RGU)13124のFIFOレジスタFREGA2にセットされる。
そして、FIFOレジスタFREGA2にセットされたアドレスデータは、クロスバー回路13125を介さず直接的にピクセル演算プロセッサ(POP)13123のアドレス生成器AG2に供給される。アドレス生成器AG2において書き込むべきデータのアドレスが生成され、これに基づきピクセル演算プロセッサ(POP)13123の各演算器(POPE)の演算結果がリードライトキャッシュ1332に書き込まれ、さらにメモリモジュール132に書き込まれる。
【0163】
なお、図32の例では、リードライトキャッシュ1332は書き込みだけを行うように記述しているが、上述したリードオンリーキャッシュ1331の場合と同様な動作で読み出しも行う。
【0164】
次に、以上の構成を有する処理ユニット131(−0〜−3)におけるグラフィックス処理および画像処理の場合の具体的な動作を図面に関連付けて説明する。
【0165】
まず、依存テクスチャ無しの場合のグラフィックス処理を図33および図34に関連付けて説明する。
【0166】
この場合、ラスタライザ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)の各種ピクセルデータが生成される。
【0167】
そして、生成されたウィンドウ座標(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に供給される。
【0168】
グラフィックスユニット(GRU)13121では、供給されたテクスチャ座標データや各種ベクトル(V1x,V1y,V1z)、および(V2x,V2y,V2z)に基づいて、パースペクティブコレクション、LOD(Levelof Detail)計算によるミップマップ(MIPMAP)レベルの算出、立方体マップ(CubeMap)の面選択や正規化テクセル座標(s,t)の算出処理が行われる。
そして、グラフィックスユニット(GRU)13121で生成された、たとえば正規化テクセル座標(s,t)およびLODデータ(lod)を含む2組のデータ(s1,t1,lod1),(s2,t2,lod2)が、たとえばクロスバー回路13125を通さず個別の配線を介して直接的にピクセル演算プロセッサ(POP)群13123に供給される。
【0169】
ピクセル演算プロセッサ(POP)群13123では、図34に示すように、フィルタ機能ユニットFFUにおいてグラフィックスユニット(GRU)13121から直接的に供給された(s1,t1,lod1),(s2,t2,lod2)の値に基づいて、テクスチャアクセスのための(u,v)アドレス計算が行われ、アドレスデータ(ui,vi,lodi)がアドレス生成器AGに供給され、係数計算のためにデータ(uf,vf,lodf)が係数生成部COFに供給される。
【0170】
アドレス生成器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に供給される。
【0171】
ピクセルエンジン(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に供給される。
【0172】
ライトユニットWUでは、ラスタライザ1311によるウィンドウ座標(X,Y,Z)に基づき、たとえばリードライトキャッシュRW$を通してメモリモジュール132からデスティネーション色データ(RGB)および混合値データ(A)、並びに奥行きデータ(Z)が読み出される。
そして、ライトユニットWUでは、ピクセルエンジン(PXE)13122によるデータ(FR1,FG1,FB1,FA1)、およびリードライトキャッシュRW$を通してメモリモジュール132から読み出しデスティネーション色データ(RGB)および混合値データ(A)、並びに奥行きデータ(Z)に基づいて、αブレンディング、各種テスト、ロジカルオペレーションといったグラフィックス処理のピクセル書き込みに必要な演算が行われ、演算結果がリードライトキャッシュRW$に書き戻される。
【0173】
次に、依存テクスチャ有りの場合のグラフィックス処理を図35および図34に関連付けて説明する。
【0174】
この場合、ラスタライザ1311において、ウィンドウ座標(X,Y,Z)、プライマリカラー(PC;Rp,Gp,Bp,Ap)、セカンダリカラー(SC;Rs,Gs,Bs,As)、Fog係数(f)、テクスチャ座標(V1x,V1y,V1z)の各種ピクセルデータが生成される。
【0175】
そして、生成されたウィンドウ座標(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に供給される。
【0176】
グラフィックスユニット(GRU)13121では、供給されたテクスチャ座標(V1x,V1y,V1z)データに基づいて、パースペクティブコレクション、LOD計算によるミップマップ(MIPMAP)レベルの算出、立方体マップ(CubeMap)の面選択や正規化テクセル座標(s,t)の算出処理が行われる。
そして、グラフィックスユニット(GRU)13121で生成された、たとえば正規化テクセル座標(s,t)およびLODデータ(lod)を含む1組のデータ(s1,t1,lod1)が、たとえばクロスバー回路13125を通さず直接的にピクセル演算プロセッサ(POP)群13123に供給される。
【0177】
ピクセル演算プロセッサ(POP)群13123では、図34に示すように、フィルタ機能ユニットFFUにおいてグラフィックスユニット(GRU)13121から直接的に供給された(s1,t1,lod1)の値に基づいて、テクスチャアクセスのための(u,v)アドレス計算が行われ、アドレスデータ(ui,vi,lodi)がアドレス生成器AGに供給され、係数計算のためにデータ(uf,vf,lodf)が係数生成部COFに供給される。
【0178】
アドレス生成器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に供給される。
【0179】
ピクセルエンジン(PXE)13122では、ピクセル演算プロセッサ(POP)群13123によるデータ(TR1,TG1,TB1,TA1)、並びに、ラスタライザ1311によるプライマリカラー(PC)、セカンダリカラー(SC)、Fog係数(F)に基づいて、たとえばPixel Shaderの演算が行われ、テクスチャ座標(V2x,V2y,V2z)が生成され、クロスバー回路13125、レジスタユニット(RGU)13124を介してグラフィックスユニット(GRU)13121に供給される。
【0180】
グラフィックスユニット(GRU)13121では、供給されたテクスチャ座標(V2x,V2y,V2z)データに基づいて、パースペクティブコレクション、LOD計算によるミップマップ(MIPMAP)レベルの算出、立方体マップ(CubeMap)の面選択や正規化テクセル座標(s,t)の算出処理が行われる。
そして、グラフィックスユニット(GRU)13121で生成された、たとえば正規化テクセル座標(s,t)およびLODデータ(lod)を含むデータ(s2,t2,lod2)が、たとえばクロスバー回路13125を通さず直接的にピクセル演算プロセッサ(POP)群13123に供給される。
【0181】
ピクセル演算プロセッサ(POP)群13123では、図34に示すように、フィルタ機能ユニットFFUにおいてグラフィックスユニット(GRU)13121から直接的に供給された(s2,t2,lod2)の値に基づいて、テクスチャアクセスのための(u,v)アドレス計算が行われ、アドレスデータ(ui,vi,lodi)がアドレス生成器AGに供給され、係数計算のためにデータ(uf,vf,lodf)が係数生成部COFに供給される。
【0182】
アドレス生成器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に供給される。
【0183】
ピクセルエンジン(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に供給される。
【0184】
ライトユニットWUでは、ラスタライザ1311によるウィンドウ座標(X,Y,Z)に基づき、たとえばリードライトキャッシュRW$を通してメモリモジュール132からデスティネーション色データ(RGB)および混合値データ(A)、並びに奥行きデータ(Z)が読み出される。
そして、ライトユニットWUでは、ピクセルエンジン(PXE)13122によるデータ(FR1,FG1,FB1,FA1)、およびリードライトキャッシュRW$を通してメモリモジュール132から読み出しデスティネーション色データ(RGB)および混合値データ(A)、並びに奥行きデータ(Z)に基づいて、αブレンディング、各種テスト、ロジカルオペレーションといったグラフィックス処理のピクセル書き込みに必要な演算が行われ、演算結果がリードライトキャッシュRW$に書き戻される。
【0185】
次に、画像処理について説明する。
【0186】
まず、図36に示すようなSAD(Summed Absolute Difference)処理を行う場合の動作について、図37に関連付けて説明する。
【0187】
SAD処理では、図36(A)に示すような元画像ORIMの1ブロック(X1s,Y1s)に対して、図36(B)に示すような参照画像RFIMの探索矩形領域SRGN内を1ピクセルずつずらしながら、対応ブロックBLK内のSAD(絶対値差)を求めていく。
その中で、SADが最小となるブロックの位置(X2s,y2s)とSAD値を図36(C)に示すように、(Xd,Yd)に格納する。
(X1s,Y1s)はコンテキストとして図示しない上位装置からPOP内のレジスタに設定される。
【0188】
この場合、ラスタライザ1311に対して、たとえばグローバルモジュール12を介して図示しない上位装置から出力された、メモリモジュール132(−0〜−3)から参照画像データを読み出すためのソースアドレスおよび画像処理結果を書き込むためのデスティネーションアドレスの生成に必要なコマンドやデータ、たとえば探索矩形領域SRGNの幅、高さ(Ws,Hs)データ、ブロックサイズ(Wbk,Hbk)データが入力される。
ラスタライザ1311では、入力データに基づいて、メモリモジュール132に格納されている参照画像RFIMのソースアドレス(X2s,Y2s)が生成されるとともに、処理結果をメモリモジュール132に格納するためのデスティネーションアドレス(Xd,Yd)が生成される。
【0189】
生成されたデスティネーションアドレス(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に供給される。
【0190】
ピクセル演算プロセッサ(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に転送される。
【0191】
ピクセルエンジン(PXE)3122では、ブロック全体のSADが集計され、ブロックの位置(X2s,y2s)とSAD値が、クロスバー回路13125を転送されてレジスタユニット(RGU)13124の所定のFIFOレジスタに設定され、この設定データがクロスバー回路13125を介さずに直接的にライトユニットWUに転送される。
【0192】
ライトユニット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$を介して書き込まれる(更新される)。
【0193】
次に、図38に示すようなコンボリューションフィルタ(Convolution Filter)処理を行う場合の動作について、図39に関連付けて説明する。
【0194】
コンボリューションフィルタ処理では、図38(A)に示すような対象画像OBIMの各ピクセル(X1s,Y1s)に対して、フィルタカーネルサイズの周辺ピクセルを読み出し、フィルタ係数を乗算したものを足し合わせ、その結果を図38(B)に示すようにデスティネーションアドレス(Xd,Yd)に格納する。
なお、フィルタカーネル係数の格納アドレスは、コンテキストとしてPOP内のレジスタに設定する。
【0195】
この場合、ラスタライザ1311に対して、たとえばグローバルモジュール12を介して図示しない上位装置から出力された、メモリモジュール132(−0〜−3)から画像データ(ピクセルデータ)を読み出すためのソースアドレスおよび画像処理結果を書き込むためのデスティネーションアドレスの生成に必要なコマンドやデータ、たとえばフィルタカーネルサイズデータ(Wk,Hk)が入力される。
ラスタライザ1311では、入力データに基づいて、メモリモジュール132に格納されている対象画像OBIMのソースアドレス(X1s,Y1s)が生成されるとともに、処理結果をメモリモジュール132に格納するためのデスティネーションアドレス(Xd,Yd)が生成される。
【0196】
生成されたデスティネーションアドレス(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に供給される。
【0197】
ピクセル演算プロセッサ(POP)群13123では、供給されたソースアドレス(X1s,Y1s)に基づいて、たとえばリードオンリーキャッシュRO$を介して、メモリモジュール132に可能されているカーネルサイズの周辺ピクセルが読み出される。
そして、ピクセル演算プロセッサ(POP)群13123では、所定のフィルタ係数が読み出したデータに掛け合わせ、さらにこれらが足し合わされて、その結果である色データ(R,G,B)および混合値データ(A)を含むデータ(R,G,B,A)がクロスバー回路13125、レジスタユニット(RGU)13124を介してライトユニットWUに転送される。
【0198】
ライトユニットWUでは、ピクセル演算プロセッサ(POP)群13123によるデータが、リードライトキャッシュRW$を介してデスティネーションアドレス(Xd,Yd)に格納される。
【0199】
最後に、図3のシステム構成による動作を説明する。
ここでは、テクスチャ系の処理について説明する。
【0200】
まず、SDC11において、3次元座標、法線ベクトル、テクスチャ座標の各頂点データが入力されると、頂点データに対する演算が行われる。
次に、ラスタライゼーション(Rasterization)に必要な各種パラメータが算出される。
そして、SDC11においては、算出したパラメータが、グローバルモジュール12を介して全ローカルモジュール13−0〜13−3にブロードキャストされる。
この処理において、ブロードキャストされたパラメータは、後述するキャッシュフィルとは別のチャネルを用いて、グローバルモジュール12を介して各ローカルモジュール13−0〜13−3に渡される。ただし、グローバルキャッシュの内容には影響を与えない。
【0201】
各ローカルモジュール13−0〜13−3では、処理ユニット131−0〜131−3において、以下の処理が行われる。
すなわち、処理ユニット131(−0〜3)においては、ブロードキャストされたパラメータを受け取ると、その三角形が自分が担当する領域、たとえば4×4ピクセルの矩形領域単位でインターリーブされた領域に属しているか否かが判断される。その結果、属している場合には、各種データ(Z、テクスチャ座標、カラーなど)がラスタライズされる。
次に、LOD(Level of Detail)計算によるミップマップ(MIPMAP)レベルの算出や、テクスチャアクセスのための(u,v)アドレス計算が行われる。
【0202】
そして、次に、テクスチャの読み出しが行われる。
この場合、各ローカルモジュール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に対してローカルキャッシュフィルのリクエストが送出される。
【0203】
グローバルモジュール12においては、要求されたブロックデータがグローバルキャッシュ121−0〜121−3のいずれかにあると判断されると、対応するグローバルキャッシュ121−0〜121−3のいずれかから読み出されて所定のチャネルを通してリクエストを送出したローカルモジュールに送り返される。
【0204】
一方、要求されたブロックデータがグローバルキャッシュ121−0〜121−3のいずれかにもないと判断されると、所望のチャネルのいずれかから当該ブロックを保持するローカルモジュールに対してグローバルキャッシュフィルのリクエストが送られる。
グローバルキャッシュフィルのリクエストを受けたローカルモジュールにおいては、メモリから該当するブロックデータが読み出され、グローバルインターフェースを通してグローバルモジュール12に送出される。
その後、グローバルモジュール12では、ブロックデータが所望のグローバルキャッシュにフィルされるとともに、リクエストを送ってきたローカルモジュールに対して所望のチャネルからデータが送出される。
【0205】
グローバルモジュール12から要求したブロックデータが送られてくると、該当するローカルモジュールでは、ローカルキャッシュが更新され、処理ユニットによりブロックデータが読み出される。
【0206】
次に、ローカルモジュール13−0〜13−3では、読み出されたテクスチャデータと、(u,v)アドレスは算出時に得た小数部を使って4近傍補間などのフィルタリング処理が行われる。
次に、フィルタリング後のテクスチャデータと、ラスタライズ後の各種データを用いて、ピクセル単位の演算が行われる。
そして、ピクセルレベルの処理における各種テストをパスしたピクセルデータを、メモリモジュール132−0〜132−3、たとえば内蔵DRAMメモリ上のフレームバッファおよびZバッファに書き込まれる。
【0207】
以上説明したように、本実施形態によれば、メモリバンド幅を活かした高並列の演算処理を行う機能ユニットである複数のPOP0〜POP3を有し、各POPは、並列に配列された演算器POPE0〜POPE3を有し、各POPE0〜POPE3は、キャッシュから読み出された32ビット幅のデータおよびフィルタ機能ユニットFFUによる演算パラメータを受けて所定の演算(たとえば加算)を行って演算結果を次段のPOPEに出力し、次段のPOPEは自身の演算結果に前段の演算結果を加算し、その演算結果を次段のPOPEに出力し、最終段のPOPE3において、全POPE0〜POPE3の演算結果の総和を求め、各POPは、複数のPOPEの演算出力から一つのPOPE3の演算結果のみを選択してクロスバー回路13125に出力する出力選択回路OSLCを有するピクセル演算プロセッサ(POP)群13123を設けたことから、クロスバー回路の小型化を図れ、処理の高速化を図ることができる。
【0208】
また、本実施形態によれば、グラフィックス処理時には、グローバルモジュール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とを設けたので、以下の効果を得ることができる。
【0209】
すなわち、本実施形態によれば、大量の演算器を効率よく利用することが可能で、アルゴリズムの自由度が高く、柔軟性が高く、しかも回路規模の増大、コスト増を招くことなく、複雑な処理を高スループットで処理することができる。
【0210】
また、処理ユニット131(−0〜−3)は、分岐のないデータフローグラフ(Data Flow Graph :DFG)で表現されるアルゴリズムを実行し、DFGのノートとエッジは、演算器や演算ユニットとその接続関係と見ることができることができる。したがって、処理ユニット131(−0〜−3)は、実行するDFGに応じて、演算リソース間の接続を動的に切り替える、いわゆる動的再構成可能なハードウェアであり、演算器で実行する機能やそれらの接続関係が処理ユニットのマイクロプログラムに相当し、ストリームデータの各要素に適用されるDFGは同じであるので、命令発行のバンド幅を低くおさえることができる。
【0211】
また、処理ユニット131(−0〜−3)は、演算機能の指定や演算器間接続の切り替え制御は、データドリブンであり、分散自立型制御といえる。
このような動的スケジューリングを採用することにより、DFGが切り替わる際に、エピローグ/ プロローグのオーバーラップが可能であり、DFGの切り替えのオーバーヘッドを低減することができる。
【0212】
また、DFGの規模が大きくなるとアルゴリズムを内部演算リソースに一度にマッピングすることができなくなる。このような場合には、複数のサブDFG(sub-DFG )に分割する必要がある。
複数のサブDFGに分けて実行する方法として、サブDFG間の中間値をメモリに格納するマルチパス手法があげられる。この方法では、パス数が増大するとメモリバンド幅を消費し性能低下を招く。
処理ユニット131(−0〜−3)は、前述するように演算器や演算ユニット間のストリームデータの受け渡しをFIFO型のレジスタユニット(RGU)を介して行うことから、DFG分割実行時に、このレジスタファイルを介して中間値を渡すことが可能で、マルチパスの回数を低減することができる。
DFGの分割そのものは、コンパイラにより静的に行われるが、分割されたDFGの実行制御はハードウエアが行うのでソフトウエアへの負担が軽いという利点がある。
【0213】
さらに、本実施形態では、クロスバー回路13125を転送してレジスタユニット13124のFIFOレジスタに設定したストリームデータをクロスバー回路を通さずに直接的に、グラフィックスユニット(GRU)13121、ピクセルエンジン(PXE)13122、ピクセル演算プロセッサ(POP)群13123、およびライトユニットWUに供給し、また、グラフィックスユニット13121により得られたグラフィックス演算データをクロスバー回路を通さずに特定の配線を介して直接的にピクセル演算プロセッサ(POP)群13123に供給することから、さらにクロスバー回路の簡単化、小型化を図ることができ、また、マルチパス回数を低減でき、ひいては処理のさらなる高速化を図ることができる。
【0214】
また、本実施形態においては、本アーキテクチャを実現する演算処理部としてのコア1312を一つだけ設けた構成を例に説明したが、たとえば図40に示すように、一つのラスタライザ1311に対して複数個のコア1312−1〜1312−nを並列に設ける構成を採用することも可能である。
この場合でも、各コアで実行されるDFGは同一である。
また、複数のコアを設ける構成の並列化の単位としては、たとえばグラフィックス処理の場合には小矩形領域(スタンプ)単位、画像処理の場合にはブロック単位である。この場合、細かい粒度での並列処理を実現できる利点がある。
【0215】
また、本実施形態では、ピクセル演算プロセッサ(POP)群13123とキャッシュ間は広いバンド幅で接続されており、かつメモリアクセスのためのアドレス生成機能を内蔵しているので、演算器の演算能力を最大限引き出すだけのストリームデータの供給が可能である。
【0216】
また、本実施形態では、メモリの近傍に出力データ幅を合わせた形で演算器を高密度に配置し、処理データの規則性を利用していることから、大量の演算を最低限の演算器でしかも簡単構成で実現することができ、ひいてはコスト低減を図れる利点がある。
【0217】
また、本実施形態によれば、SDC11とグローバルモジュール12とがデータの授受を行い、一つのグローバルモジュール12に対して複数個(本実施形態では4個)のローカルモジュール13−0〜13−3が並列に接続されて、複数のローカルモジュール13−0〜13−3で処理データを共有し並列に処理し、グローバルモジュール12はグローバルキャッシュを有し、各ローカルモジュール13−0〜13−3はローカルキャッシュをそれぞれ有し、キャッシュの階層として、4つのローカルモジュール13−0〜13−3が共有するグローバルキャッシュと、各ローカルモジュールがローカルに持つローカルキャッシュの2階層を有することから、複数の処理装置が処理データを共有して並列処理する際に、重複アクセスを低減でき、配線本数の多いクロスバーが不要となる。その結果、設計が容易で、配線コスト、配線遅延を低減できる画像処理装置を実現できる利点がある。
【0218】
また、本実施形態によれば、グローバルモジュール12と各ローカルモジュール13−0〜13−3との配置関係としては、図3に示すように、グローバルモジュール12を中心として各ローカルモジュール13−0〜13−3をその周辺近傍に配置することから、各対応するチャネルブロックとローカルモジュールまでの距離を均一に保つことができ、配線領域を整然と並べることができ、平均配線長を短くできる。したがって、配線遅延や配線コストを低減でき、処理速度の向上を図ることができる利点がある。
【0219】
なお、本実施形態においては、テクスチャデータが内蔵DRAM上にあるケースを例に述べているが、他のケースとして、内蔵DRAMには、カラーデータおよびzデータのみが置かれ、テクスチャデータは外部メモリに置かれることも可能である。この場合には、グローバルキャッシュでミスが発生すると、外部DRAMに対してキャッシュフィル要求が出されることになる。
【0220】
また、上述の説明では、図3の構成、すなわち、一つのグローバルモジュール12に対して複数個(本実施形態では4個)のローカルモジュール13−0〜13−3が並列に接続した画像処理装置10を例に並列処理を行う場合に特化した形態となっているが、図3の構成を一つのクラスタCLSTとして、たとえば図41に示すように、4つのクラスタCLST0〜CLST3をマトリクス状に配置して、各クラスタCLST0〜CLST3のグローバルモジュール12−0〜12−3間でデータの授受を行うように構成することも可能である。
図41の例では、クラスタ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をリング状に接続している。
なお、図41の構成の場合には、一つのSDCからパラメータがCLST0〜CLST3のグローバルモジュール12−0〜12−3にブロドキャストされるように構成することが可能である。
【0221】
このような構成を採用することにより、より精度の高い画像処理を実現でき、また、各クラスタ間の配線も単純に双方向として一系統で接続するので、各クラスタ間の負荷を均一に保つことができ、配線領域を整然と並べることができ、平均配線長を短くできる。したがって、配線遅延や配線コストを低減でき、処理速度の向上を図ることが可能となる。
【0222】
【発明の効果】
以上説明したように、本発明によれば、演算器を有する処理ユニットにおいて、演算器間の接続に必要なクロスバーを小型化できる。その結果、設計が容易で、配線コスト、配線遅延を低減でき、画像処理の高速化を実現できる利点がある。
【図面の簡単な説明】
【図1】ピクセルレベルでの並列処理の手法に基づくプリミティブ・レベルでの並列化処理について概念的に示す図である。
【図2】一般的な画像処理装置におけるテクスチャフィルタリングを含む処理手順を説明するための図である。
【図3】本発明に係る画像処理装置の一実施形態を示すブロック構成図である。
【図4】本実施形態に係るストリームデータコントローラ(SDC)の主な処理を説明するためのフローチャートである。
【図5】本実施形態に係るグローバルモジュールの機能を説明するためのフローチャートである。
【図6】本実施形態に係るローカルモジュールにおける処理ユニットのグラフィックス処理を説明するための図である。
【図7】本実施形態に係るテクスチャリード時のローカルモジュールの動作を説明するためのフローチャートである。
【図8】本実施形態に係るローカルモジュールにおける処理ユニットの画像処理を説明するための図である。
【図9】本実施形態に係るローカルモジュールにおけるローカルキャッシュの構成例を示すブロック図である。
【図10】本実施形態に係るローカルキャッシュのメモリコントローラの構成例を示すブロック図である。
【図11】本実施形態に係るローカルモジュールの処理ユニットの具体的な構成例を示すブロック図である。
【図12】本実施形態に係るピクセルエンジンの構成例を示すブロック図である。
【図13】本実施形態に係る接続回路網CCNの構成例を示す図である。
【図14】本実施形態に係るセレクタの構成例を示す図である。
【図15】本実施形態に係るピクセルエンジンの演算実行の概略についての説明図であって、演算のデータフローグラフを示す図である。
【図16】本実施形態に係るピクセルエンジンの演算実行の概略についての説明図である。
【図17】本実施形態に係るピクセルエンジンのパイプライン処理の説明図である。
【図18】本実施形態に係るピクセルエンジンの動的再構築の第1の実現方法について説明するための図である。
【図19】本実施形態に係るピクセルエンジンの動的再構築の第1の実現方法について説明するための図である。
【図20】本実施形態に係るピクセルエンジンの動的再構築の第2の実現方法について説明するための図である。
【図21】本実施形態に係るピクセルエンジンの動的再構築の第2の実現方法について説明するための図である。
【図22】本実施形態に係るピクセルエンジンの動的再構築の第2の実現方法について説明するための図である。
【図23】本実施形態に係るピクセルエンジンの構成例、およびレジスタユニット(RGU)、クロスバー回路との接続例を示す図である。
【図24】本実施形態に係るピクセル演算プロセッサ(POP)群の構成例を示す図である。
【図25】本実施形態に係るPOP(ピクセル演算プロセッサ)とメモリ間の接続形態およびPOPの構成例を示す図である。
【図26】本実施形態に係るPOPEの具体的な構成例を示す回路図である。
【図27】本実施形態に係るメモリからキャッシュへのデータの読み出し形態およびキャッシュから各POPEへのデータを読み出し形態を示す図である。
【図28】本実施形態に係るメモリのデータに基づいてピクセル演算プロセッサ群で演算処理を行い、さらにピクセルエンジンで演算を行う場合の動作を説明するためのフローチャートである。
【図29】本実施形態に係るメモリのデータに基づいてピクセル演算プロセッサ群で演算処理を行い、さらにピクセルエンジンで演算を行う場合の動作を説明するための図である。
【図30】本実施形態に係るメモリのデータに基づいてピクセル演算プロセッサ群で演算処理を行い、さらにピクセルエンジンで演算を行う場合の動作を説明するためのタイミングチャートである。
【図31】本実施形態に係るメモリのデータに基づいてピクセル演算プロセッサ群で演算処理を行い、さらにピクセルエンジンで演算を行う場合の動作を説明するためのブロック図である。
【図32】本実施形態に係る処理ユニットにおけるコアのピクセルエンジン(PXE)、ピクセル演算プロセッサ(POP)、レジスタユニット(RGU)、並びにメモリ部分を含む動作概要を示す図である。
【図33】本実施形態に係る処理ユニットにおける依存テクスチャ無しの場合のグラフィックス処理を説明するための図である。
【図34】本実施形態に係る処理ユニットにおけるグラフィックス処理のピクセル演算プロセッサ(POP)群の具体的な動作を説明するための図である。
【図35】本実施形態に係る処理ユニットにおける依存テクスチャ有りの場合のグラフィックス処理を説明するための図である。
【図36】SAD(Summed Absolute Difference)処理を説明するための図である。
【図37】本実施形態に係る処理ユニットにおけるSAD処理を説明するための図である。
【図38】コンボリューションフィルタ(Convolution Filter)処理を説明するための図である。
【図39】本実施形態に係る処理ユニットにおけるコンボリューションフィルタ処理を説明するための図である。
【図40】本実施形態に係る処理ユニットにおける他の構成例(コアを複数設けた例)を示す図である。
【図41】本発明に係る画像処理装置の他の実施形態を示すブロック構成図である。
【符号の説明】
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)、13123…ピクセル演算プロセッサ(POP)群、13124…レジスタユニット(RGU)、13125…クロスバー回路(IXB)、POPE0〜3…演算器、OSLC…出力選択回路。
Claims (7)
- 規則性を有する複数の処理データを共有して並列処理を行う画像処理装置であって、
少なくとも上記処理データを記憶し、複数のポートを有するメモリと、
上記メモリの複数のポートに対応して設けられ、演算用パラメータおよび上記メモリから読み出された処理データに基づいて並列演算処理を行い、連続するストリームデータを生成する複数の演算器を含む複数の第1の機能ユニットと、
上記各第1の機能ユニットで生成されたストリームデータに対する演算処理を行う複数の演算器を含む第2の機能ユニットと、
上記複数の第1の機能ユニットと上記第2の機能ユニットの複数の演算器とを相互に接続するクロスバー回路と、を有し、
上記各第1の機能ユニットの上記各演算器は、
初段から最終段に向かって縦続接続され、各演算器はそれぞれ上記メモリの各ポートから読み出された要素データに対して所定の演算処理を行って次段の演算器に出力し、当該次段の演算器は自段の演算結果に前段の演算結果を加算し、当該加算結果を次段の演算器に出力し、最終段の演算器で全演算器の総和を求め、当該最終段の演算結果をストリームデータとして出力し、
上記第2の機能ユニットは、
制御信号に応じて再構成可能であって、上記演算器を上記制御信号に応じた電気的な接続網で接続し、複数の演算器の電気的接続を確立して複数の演算器からなる演算回路を形成可能で、
個々の演算器に対して付加されている制御回路が、次に行うべき演算に関する情報を保持し、一連の演算の終了を検出した際に、自動的に次の演算に向けた制御に切り替える機能を有し、
上記接続網の個々の接続点に対し付与された制御回路が、次にとるべき接続構成に関する情報を保持し、一連のデータ転送の終了を検出した際に、個々の制御回路が自動的に接続点の制御を切り替える機能を有する
画像処理装置。 - グローバルモジュールと複数のローカルモジュールとを含み、
上記グローバルモジュールは、
上記複数のローカルモジュールが並列に接続され、ローカルモジュールからリクエストを受けると、上記リクエストに応じた当該リクエストを出したローカルモジュールに処理データを出力し、
上記複数のローカルモジュールは、
少なくとも上記処理データを記憶し、複数のポートを有する上記メモリと、
上記メモリの複数のポートに対応して設けられ、演算用パラメータおよび上記メモリから読み出された処理データに基づいて並列演算処理を行い、連続するストリームデータを生成する複数の演算器を含む上記複数の第1の機能ユニットと、
上記各第1の機能ユニットで生成されたストリームデータに対する演算処理を行う複数の演算器を含む上記第2の機能ユニットと、
上記複数の第1の機能ユニットと上記第2の機能ユニットの複数の演算器とを相互に接続する上記クロスバー回路と、を有し、
上記各第1の機能ユニットの上記各演算器は、初段から最終段に向かって縦続接続され、各演算器はそれぞれ上記メモリの各ポートから読み出された要素データに対して所定の演算処理を行って次段の演算器に出力し、当該次段の演算器は自段の演算結果に前段の演算結果を加算し、当該加算結果を次段の演算器に出力し、最終段の演算器で全演算器の総和を求め、当該最終段の演算結果をストリームデータとして出力し、
上記第2の機能ユニットは、制御信号に応じて再構成可能であって、上記演算器を上記制御信号に応じた電気的な接続網で接続し、複数の演算器の電気的接続を確立して複数の演算器からなる演算回路を形成可能で、
個々の演算器に対して付加されている制御回路が、次に行うべき演算に関する情報を保持し、一連の演算の終了を検出した際に、自動的に次の演算に向けた制御に切り替える機能を有し、
上記接続網の個々の接続点に対し付与された制御回路が、次にとるべき接続構成に関する情報を保持し、一連のデータ転送の終了を検出した際に、個々の制御回路が自動的に接続点の制御を切り替える機能を有する
請求項1記載の画像処理装置。 - 上記メモリから上記機能ユニットの各演算器へのデータの読み出しが、初段から順にデータが入力され、かつ、前段の演算器の演算結果の入力が、自段の演算が終了し前段の演算器の演算結果を加算できるタイミングとなるようにアドレスを生成して上記メモリに供給するアドレス生成器を有する
請求項1または2記載の画像処理装置。 - 少なくとも上記メモリの各ポートから読み出された処理データを記憶し、記憶データをキャッシュアドレスに応じて上記機能ユニットの各演算器に供給するキャッシュと、
上記メモリから上記機能ユニットの各演算器へのデータの読み出しが、初段から順にデータが入力され、かつ、前段の演算器の演算結果の入力が、自段の演算が終了し前段の演算器の演算結果を加算できるタイミングとなるようにアドレスを生成して上記キャッシュに供給するアドレス生成器と
を有する請求項1または2記載の画像処理装置。 - 上記並列処理は、ピクセルレベルでの並列処理である
請求項1から4のいずれか一に記載の画像処理装置。 - 規則性を有する複数の処理データを共有して並列処理を行う画像処理方法であって、
複数の第1の機能ユニットの縦続接続された複数の演算ステージにおいて、演算用パラメータおよびそれぞれ複数のポートを有するメモリの各ポートから読み出された処理データに対して所定の演算処理を行い、
次段の演算ステージでは、自段の演算結果に前段の演算結果を加算し、
最終段の演算ステージで全演算ステージの総和を求め、当該最終段の演算結果をストリームデータとしてクロスバー回路に出力し、
上記クロスバー回路を転送された複数のストリームデータに対して制御信号に応じて再構成可能な第2の機能ユニットで演算処理を行い、
上記第2の機能ユニットにおいては、上記演算器を上記制御信号に応じた電気的な接続網で接続し、複数の演算器の電気的接続を確立して複数の演算器からなる演算回路を形成して上記演算処理を行い、
当該演算処理において、
個々の演算器に対して付加されている制御回路が、次に行うべき演算に関する情報を保持し、一連の演算の終了を検出した際に、自動的に次の演算に向けた制御に切り替え、 上記接続網の個々の接続点に対し付与された制御回路が、次にとるべき接続構成に関する情報を保持し、一連のデータ転送の終了を検出した際に、個々の制御回路が自動的に接続点の制御を切り替える
画像処理方法。 - 上記メモリから各演算ステージへのデータの読み出しは、初段から順にデータを入力し、かつ、前段の演算ステージの演算結果の入力が、自段の演算が終了し前段の演算ステージの演算結果を加算できるタイミングとなるように行う
請求項6記載の画像処理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002149384A JP4264527B2 (ja) | 2002-05-23 | 2002-05-23 | 画像処理装置およびその方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002149384A JP4264527B2 (ja) | 2002-05-23 | 2002-05-23 | 画像処理装置およびその方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2003346141A JP2003346141A (ja) | 2003-12-05 |
JP4264527B2 true JP4264527B2 (ja) | 2009-05-20 |
Family
ID=29767576
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002149384A Expired - Fee Related JP4264527B2 (ja) | 2002-05-23 | 2002-05-23 | 画像処理装置およびその方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP4264527B2 (ja) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP6319420B2 (ja) * | 2014-02-24 | 2018-05-09 | 株式会社ニコン | 情報処理装置、デジタルカメラおよびプロセッサ |
-
2002
- 2002-05-23 JP JP2002149384A patent/JP4264527B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2003346141A (ja) | 2003-12-05 |
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 | |
US6819332B2 (en) | Antialias mask generation | |
JP5345226B2 (ja) | グラフィックスプロセッサの並列アレイアーキテクチャ | |
US7187383B2 (en) | Yield enhancement of complex chips | |
US6900800B2 (en) | Tile relative origin for plane equations | |
US6704018B1 (en) | Graphic computing apparatus | |
US6798421B2 (en) | Same tile method | |
US8074224B1 (en) | Managing state information for a multi-threaded processor | |
TWI645371B (zh) | 在上游著色器內設定下游著色狀態 | |
US7484076B1 (en) | Executing an SIMD instruction requiring P operations on an execution unit that performs Q operations at a time (Q<P) | |
US7546425B2 (en) | Data processor with a built-in memory | |
JPWO2003009125A1 (ja) | 演算装置および画像処理装置 | |
JP4264529B2 (ja) | 画像処理装置およびその方法 | |
JP4264530B2 (ja) | 画像処理装置およびその方法 | |
JP4186561B2 (ja) | 画像処理装置およびその方法 | |
JP4264526B2 (ja) | 画像処理装置およびその方法 | |
JP2004145838A (ja) | 画像処理装置 | |
JP4264527B2 (ja) | 画像処理装置およびその方法 | |
Poulton et al. | Breaking the frame-buffer bottleneck with logic-enhanced memories | |
JP2004118713A (ja) | 画像処理装置 | |
US7489315B1 (en) | Pixel stream assembly for raster operations | |
Molnar | The PixelFlow texture and image subsystem | |
JP2004127227A (ja) | 画像処理装置 | |
JP2004013873A (ja) | 画像処理装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20050509 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20080625 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20080708 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20080908 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20081014 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20081215 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20090113 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20090126 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120227 Year of fee payment: 3 |
|
LAPS | Cancellation because of no payment of annual fees |