JPWO2003009125A1 - 演算装置および画像処理装置 - Google Patents

演算装置および画像処理装置 Download PDF

Info

Publication number
JPWO2003009125A1
JPWO2003009125A1 JP2003514402A JP2003514402A JPWO2003009125A1 JP WO2003009125 A1 JPWO2003009125 A1 JP WO2003009125A1 JP 2003514402 A JP2003514402 A JP 2003514402A JP 2003514402 A JP2003514402 A JP 2003514402A JP WO2003009125 A1 JPWO2003009125 A1 JP WO2003009125A1
Authority
JP
Japan
Prior art keywords
data
arithmetic
information
circuit
control
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
Application number
JP2003514402A
Other languages
English (en)
Inventor
五十嵐 正寛
正寛 五十嵐
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sony Corp
Original Assignee
Sony Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Sony Corp filed Critical Sony Corp
Publication of JPWO2003009125A1 publication Critical patent/JPWO2003009125A1/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3893Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator
    • G06F9/3895Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator for complex operations, e.g. multidimensional or interleaved address generators, macros
    • G06F9/3897Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator for complex operations, e.g. multidimensional or interleaved address generators, macros with adaptable data path
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General purpose rendering architectures

Landscapes

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

Abstract

複数個の演算回路間の接続を電気的に変更することで、各種の演算に対応でき、かつ開発時点で想定されていなかった演算方式にも容易に対応できる、かつ、3次元グラフィックにおいて、実時間での描画に十分な描画能力を有する演算装置および画像処理装置であって、レジスタファイル(RF)2011と、演算器プール2012を有する演算装置201であって、演算器プール2012は、データバスBSによりレジスタファイル2011とのデータの授受を行う少なくとも一つの演算部20121〜20124を有し、各演算部20121〜20124は、複数の演算器(加算器、乗算器、乗加算器等)OP1〜OP8と、演算器OP1〜OP8との間に電気的な接続を変更可能、レジスタファイル2011と演算器OPとの間に存在する接続回路網CCNを含む。

Description

技術分野
本発明は、たとえばグラフィックス描画処理を行う画像処理装置に適用され、描画する画素の値を演算する演算装置、およびそれを用いた画像処理装置に関するものである。
背景技術
種々のCAD(Computer Aided Design)システムや、アミューズメント装置などにおいて、コンピュータグラフィックスがしばしば用いられている。特に、近年の画像処理技術の進展に伴い、3次元コンピュータグラフィックスを用いたシステムが急速に普及している。
このような3次元コンピュータグラフィックスでは、各画素(ピクセル)に対応する色を決定するときに、各画素の色の値を計算し、この計算した色の値を、当該画素に対応するディスプレイバッファ(フレームバッファ)のアドレスに書き込むレンダリング(Rendering)処理を行う。
レンダリング処理の手法の一つに、ポリゴン(Polygon)レンダリングがある。この手法では、立体モデルを三角形の単位図形(ポリゴン)の組み合わせとして表現しておき、このポリゴンを単位として描画を行うことで、表示画面の色を決定する。
ポリゴンレンダリングでは、物理座標系における三角形の各頂点についての、座標(x,y,z)と、色データ(R,G,B)と、張り合わせのイメージパターンを示すテクスチャデータの同次座標(s,t)および同次項qの値とを入力し、これらの値を三角形の内部で補間する処理が行われる。
ここで、同次項qは、実際のテクスチャバッファのUV座標系における座標、すなわち、テクスチャ座標データ(u,v)は、同次座標(s,t)を同次項qで除算した「s/q」および「t/q」に、それぞれテクスチャサイズUSIZEおよびVSIZEを乗じたものとなる。
図1は、3次元コンピュータグラフィックスシステムの基本的な概念を示すシステム構成図である。
この3次元コンピュータグラフィックスシステムにおいては、グラフィックス描画等のデータは、メインプロセッサ1のメインメモリ2、あるいは外部からのグラフィックスデータを受けるI/Oインタフェース回路3からメインバス4を介してレンダリングプロセッサ5a、フレームバッファメモリ5bを有するレンダリング回路5に与えられる。
レンダリングプロセッサ5aには、表示するためのデータを保持することを目的とするフレームバッファメモリ5bと、描画する図形要素(たとえば三角形)の表面に張り付けるテクスチャデータを保持しているテクスチャメモリ6が結合されている。
そして、レンダリングプロセッサ5aによって、図形要素毎に表面にテクスチャを張り付けた図形要素を、フレームバッファメモリ5bに描画するという処理が行われる。
フレームバッファメモリ5bとテクスチャメモリ6は、一般的にDRAMにより構成される。
そして、図1のシステムにおいては、フレームバッファメモリ5bとテクスチャメモリ6は、物理的に別々のメモリシステムとして構成されている。
ところが、3次元グラフィックス描画処理画像処理装置においては、画像データのメモリへの書き込みや読み出し、画面表示のための読み出しなどメモリへのアクセスは頻繁に行われる。また、描画性能を出すためにはメモリのバス幅を広くとることが必要となる。
そのため、グラフィックス描画画像処理装置とメモリは別々に配置されていたものが配線数の増加により物理的に不可能となり、DRAMとロジック回路を同一チップ内に混載させるようになった。
ところが、上述したような3次元コンピュータグラフィックス描画画像処理装置においては、描画する画素の値を種々の演算を行って算出している。
この画素の値の演算方法としては、種々のものが使用、提案されている。
しかし、従来の3次元コンピュータグラフィックス描画画像処理装置では、演算を実行する回路の構成がLSI製造時点で限定されてしまい、開発時点で想定していない演算方式を適用しようとしても、非常に困難であるか、あるいは不可能である。
他方、マイクロプロセッサのように汎用性の高い演算装置を使用して、3次元コンピュータグラフィックスを描画することは可能であるが、将来普及が予想されているHDTV等を考えた場合、所望の映像を実時間で描画するには、単位時間あたりの描画能力が十分ではなく、実時間での描画は非常に困難である。
発明の開示
本発明の第1の目的は、複数個の演算回路間の接続を電気的に変更することで、各種の演算に対応でき、かつ開発時点で想定されていなかった演算方式にも容易に対応できる演算装置を提供することにある。
また、本発明の第2の目的は、3次元グラフィックスにおいて、実時間での描画に十分な描画能力を有する画像処理装置を提供することにある。
上記目的を達成するため、本発明の第1の観点に係る演算装置は、複数の演算器を有する演算装置であって、制御信号に応じて再構成可能なデータパスを複数有し、上記演算器を、電気的な接続網で接続し、複数個の演算器間の電気的接続を確立して複数の演算器からなる演算回路を構成する接続回路網を有する。
また、本発明の第2の観点に係る演算装置は、レジスタファイルと、演算器プールとを有し、上記演算器プールは、データバスによりレジスタファイルとのデータの授受を行う少なくとも一つの演算部を有し、上記演算部は、複数の演算器と、制御信号に応じて再構成可能なデータパスを複数有し、上記演算器を、電気的な接続網で接続し、複数個の演算器間の電気的接続を確立して複数の演算器からなる演算回路を構成する接続回路網とを含む。
本発明の第3の観点に係る演算装置は、複数の演算ユニットと、上記複数の演算ユニット間を所望の形態で相互に接続するクロスバー回路と、を有し、上記複数の演算ユニットの各々は、入力データに対して所望の演算を行う演算パイプと、隣接する演算ユニットの演算結果データまたは外部からの供給データのうちの一方を選択し、上記演算パイプに入力させるセレクタと、上記クロスバー回路を通して供給されたデータを上記演算パイプに入力させ、当該演算パイプの演算結果を隣接の演算ユニットに転送するストリームレジスタと、を少なくとも有する。
また、本発明の第4の観点に係る画像処理装置は、少なくとも画像データを記憶する記憶回路と、上記記憶回路の記憶データに基づいて、画像データに所定の処理を行うロジック回路とを有し、上記ロジック回路は、複数の演算器を有し、制御信号に応じて再構成可能なデータパスを複数有し、上記演算器を、電気的な接続網で接続し、複数個の演算器間の電気的接続を確立して複数の演算器からなる演算回路を構成する接続回路網を有する演算装置を含む。
また、本発明の第5の観点に係る画像処理装置は、少なくとも画像データを記憶する記憶回路と、上記記憶回路の記憶データに基づいて、画像データに所定の処理を行うロジック回路とを有し、上記ロジック回路は、レジスタファイルと、演算器プールとを有し、上記演算器プールは、データバスによりレジスタファイルとのデータの授受を行う少なくとも一つの演算部を有し、上記演算部は、複数の演算器と、制御信号に応じて再構成可能なデータパスを複数有し、上記演算器を、電気的な接続網で接続し、複数個の演算器間の電気的接続を確立して複数の演算器からなる演算回路を構成する接続回路網とを含む演算装置を有する。
また、本発明の第6の観点に係る画像処理装置は、グラフィックス処理機能および画像処理機能を有する画像処理装置であって、画像に関するデータを記憶するメモリと、グラフィックス処理時には、少なくとも色に関するデータを含むグラフィックスピクセルデータを生成し、画像処理時には、少なくとも上記メモリに記憶されているデータを読み出すためのソースアドレスを生成する処理ユニットと、上記処理ユニットで生成されたデータに基づいて所定のグラフィックス処理または画像処理を行うコア部と、を有し、上記コア部は、複数の演算ユニットと、上記複数の演算ユニット間および上記メモリと演算ユニット間を所望の形態で相互に接続するクロスバー回路と、を有し、上記複数の演算ユニットの各々は、入力データに対して所望の演算を行う演算パイプと、隣接する演算ユニットの演算結果データまたは外部からの供給データのうちの一方を選択し、上記演算パイプに入力させるセレクタと、上記クロスバー回路を通して供給されたデータを上記演算パイプに入力させ、当該演算パイプの演算結果を隣接の演算ユニットに転送するストリームレジスタと、を少なくとも有する。
好適には、上記演算ユニットは、上記クロスバー回路を通して供給されたデータを上記演算パイプに入力させ、当該演算パイプの演算結果を上記クロスバー回路に転送する第2のストリームレジスタを含む。
また、第6の観点では、上記複数の演算ユニットを含む演算ブロックを複数有し、複数の演算ブロックの各々は、担当する演算処理が割り当てられて固定化されている。
本発明では、上記接続回路網は、制御信号を受けて連続してデータを入力し、ツリー状のデータフローグラフで表現される演算を実行可能な演算回路を構成する。
また、本発明では、上記接続回路網は、データバス上の所望の位置にセレクタを有し、2n本の入力データバスがある場合、n−2個の演算器は、入力データバス一対と、前段の演算器の出力をセレクタで選択して自段の演算器に入力するように演算回路を構成する。
また、本発明では、上記接続回路網は、上記n個以外の少なくとも1個の演算器は、入力データすべてと、前段の出力を選択して自段の演算器に入力するように演算回路を構成する。
また、本発明では、再構成可能な上記データバスを使用してパイプライン処理を行う際に、制御信号を受けて演算器間の電気的接続を変更することが可能な制御回路を有する。
また、本発明では、上記制御回路は、個々の演算器および接続網の個々の接続点に対応してそれぞれ設けられ、各制御回路は、次に行うべき演算に関する情報を保持し、一連の演算の終了を検出した際に、自動的に次の演算に向けた制御に切り替える。
好適には、上記制御回路、接続網の個々の接続点に対応して設けられ、各制御回路は、次にとるべき接続構成に関する情報を保持し、一連のデータ転送の終了を検出した際に、自動的に接続点を制御を切り替える。
好適には、上記制御回路は、個々の演算器および接続網の個々の接続点に対応してそれぞれ設けられ、各演算器に対応して設けられた各制御回路は、次に行うべき演算に関する情報を保持し、一連の演算の終了を検出した際に、自動的に次の演算に向けた制御に切り替え、接続網の個々の接続点に対応して設けられた各制御回路は、次にとるべき接続構成に関する情報を保持し、一連のデータ転送の終了を検出した際に、自動的に接続点の制御を切り替える。
また、本発明では、上記制御回路は、現在の制御情報(現制御情報)と、次に行うべき制御に関する情報(次制御情報)の2つを保持し、演算データは、当該演算データが演算に使用する最終データであることが識別可能な制御信号と同期して送られ、上記制御回路は、最終データであることが識別された場合、現在実行中の演算が完了すると、現制御情報を次制御情報で書き換える。
また、本発明では、上記制御回路は、現在の制御情報(現制御情報)と現在実行中の演算を識別するための情報(現識別情報)と、次に行うべき制御に関する情報(次制御情報)と、次に実行する演算を識別するための情報(次識別情報)を保持し、演算データは、当該演算データが演算に使用する最終データであることが識別可能な情報、およびそのデータが一の演算処理に対するものか、他の演算処理に対するものかを識別可能な情報を示す制御信号と同期して送られ、上記制御回路は、送られてきたデータが、最終データであり、かつ現識別情報で示される演算に対するものであることが識別された場合、現在実行中の演算が完了すると、現制御情報、現識別情報をそれぞれ次制御情報、次識別情報で書き換える。
また、本発明では、入力されるデータは、少なくとも描画する対象の表面に関する情報、表面にあたる光に関する情報、過去の演算結果のいずれかである。
本発明によれば、演算器(加算器、乗算器、乗加算器等)を、電気的な接続網で接続し、複数個の演算器からなる演算回路を構成する。
このようにして構成された演算回路に対して、連続してデータを入力し、演算を行うことが可能となる。
また、ツリー状のデータフローグラフで表現される演算を、効率よくかつ少ない回路規模で実現できる接続網を使用して演算回路を構成することができる。
また、本発明によれば、演算回路を使用して、演算をパイプライン状に実行している際に、演算器間の電気的接続を変更する。
このように動的に演算器間の構成を変更することで、遅滞なく異なる演算が行える。
また、個々の演算器に付加されている制御回路が、次に行うべき演算に関する情報を保持し、一連の演算の終了を検出した際に、自動的に次の演算に向けた制御に切り替える。
また、接続網の個々の接続点に対し付与された制御回路が、次にとるべき接続構成に関する情報を保持し、一連のデータ転送の終了を検出した際に、個々の制御回路が自動的に接続点の制御を切り替える。
発明を実施するための最良の形態
以下、第1の実施形態として、パーソナルコンピュータなどに適用される、任意の3次元物体モデルに対する所望の3次元画像をCRT(Cathode Ray Tube)などのディスプレイ上に高速に表示するグラフィックス処理機能を有する3次元コンピュータグラフィックスシステムとしての画像処理装置について説明する。そしてその後、第2の実施形態として、同様のシステムにおいてグラフィックス処理機能および画像処理機能を有し、複数の処理データを共有して並列処理を行う画像処理装置について説明する。
第1実施形態
図2は、本発明に係る演算装置を採用可能な画像処理装置の第1の実施形態を示すシステム構成図である。本第1の実施形態に係る画像処理装置10は、グラフィックス処理機能を有する3次元コンピュータグラフィックスシステムとして構成されている。
3次元コンピュータグラフィックスシステムは、立体モデルを単位図形である三角形(ポリゴン)の組み合わせとして表現し、このポリゴンを描画することで表示画面の各ピクセルの色を決定し、ディスプレイに表示するポリゴンレンダリング処理を行うシステムである。
また、3次元コンピュータグラフィックスシステムでは、平面上の位置を表現する(x,y)座標の他に、奥行きを表すz座標を用いて3次元物体を表し、この(x,y,z)の3つの座標で3次元空間の任意の一点を特定する。
図2に示すように、3次元コンピュータグラフィックスシステムとしての画像処理装置10は、メインプロセッサ11、メインメモリ12、I/Oインタフェース回路13、および本発明に係る演算装置を含む3次元グラフィックス描画装置としてのレンダリング回路14がメインバス15を介して接続されている。
以下、各構成要素の機能について説明する。
メインプロセッサ11は、たとえば、アプリケーションの進行状況などに応じて、メインメモリ12から必要なグラフィックスデータを読み出し、このグラフィックスデータに対してクリッピング(Clipping)処理、ライティング(Lighting)処理などのジオメトリ(Geometry)処理などを行い、ポリゴンレンダリングデータを生成する。メインプロセッサ11は、ポリゴンレンダリングデータS11を、メインバス15を介してレンダリング回路14に出力する。
I/Oインタフェース回路13は、必要に応じて、外部から動きに係る制御情報、色に係る演算情報、あるいはポリゴンレンダリングデータ等を入力し、これをメインバス15を介してレンダリング回路14に出力する。
レンダリング回路14に入力されるポリゴンレンダリングデータは、ポリゴンの各3頂点の(x,y,z,R,G,B,α,s,t,q,F)のデータを含んでいる。
ここで、(x,y,z)データは、ポリゴンの頂点の3次元座標を示し、(R,G,B)データは、それぞれ当該3次元座標における赤、緑、青の輝度値を示している。
αデータは、これから描画するピクセルと、レンダリング回路14のディスプレイバッファに既に記憶されているピクセルとのR,G,Bデータのブレンド(混合)係数を示している。
(s,t,q)データのうち、(s,t)は、対応するテクスチャの同次座標を示しており、qは同次項を示している。ここで、「s/q」および「t/q」に、それぞれテクスチャサイズUSIZEおよびVSIZEを乗じてテクスチャ座標データ(u,v)が得られる。テクスチャバッファに記憶されたテクスチャデータへのアクセスは、テクスチャ座標データ(u,v)を用いて行われる。
Fデータは、フォグのα値を示している。
すなわち、ポリゴンレンダリングデータは、三角形の各頂点の物理座標値と、それぞれの頂点の色とテクスチャデータを含んでいる。
以下、本発明に係る演算装置を含むレンダリング回路14について詳細に説明する。
図2に示すように、レンダリング回路14は、DDA(Digital Differential Analyzer)セットアップ回路141、トライアングルDDA回路142、テクスチャエンジン回路143、メモリインタフェース(I/F)回路144、CRTコントロール回路145、RAMDAC回路146、DRAM147およびSRAM(Static RAM)148を有する。
本実施形態におけるレンダリング回路14は、一つの半導体チップ内にロジック回路と少なくとも表示データとテクスチャデータとを記憶するDRAM147とが混載されている。
本第1の実施形態では、まず、本発明に係る演算装置を適用した3次元グラフィックス描画装置(レンダリング回路14)の基本的な構成および機能について説明する。
そしてその後、DRAM147、DDAセットアップ回路141、トライアングルDDA回路142、テクスチャエンジン回路143、メモリI/F回路144、CRTコントロール回路145、およびRAMDAC回路146の機能について順を追って説明する。
図3は、本発明に係る演算装置を適用した3次元グラフィックス描画装置の基本的な構成を示すブロック図である。
本3次元グラフィックス描画装置200は、図3に示すように、演算装置201、大容量メモリ(LSI上ではDRAM)202、および外部機器とのインターフェース、メモリ202へのリード・ライトを制御する制御回路203を有する。
これらの構成要素を図2のレンダリング回路14の構成要素と対応付けると、図3の演算装置201は図2のテクスチャエンジン回路143に含まれ、メモリ202は、DRAM147に相当し、制御回路203はDDAセットアップ回路141、トライアングルDDA回路142、テクスチャエンジン回路143、メモリI/F回路144、CRTコントロール回路145、およびRAMDAC146回路を含む。
制御回路203は、外部のI/Oインターフェース13から入力されたデータ、またはメモリ202に格納されたデータを必要に応じて演算装置201に入力し、演算装置201から出力されるデータをメモリ202に格納する。
このデータは主として、演算の中間データや描画する画素値である。
また、制御回路203は、たとえばメモリ202の内容を外部インターフェースを経由して出力する。
出力先としてはTV,LCDディスプレイなどの表示装置であり、本LSIに接続される場合も、外部に接続された装置を経由して表示する場合もある。
演算装置201
演算装置201は、制御回路203から入力されるデータ、たとえば描画する対象の表面に関する情報(面の方向、色、反射率、模様(テクスチャ)等)、表面にあたる光に関する情報(入射方向、強さなど)、過去の演算結果(演算の中間値)等が一般的である。
演算装置201は、複数の演算器を有し、たとえば制御回路203やメインプロセッサ11等の外部回路からの制御により演算経路を再構成可能な演算装置であって、所望の演算を実現するように、内部の演算器間の電気的接続を確立し、制御回路203から入力されたデータを、演算器と電気的接続網(インターコネクト)から形成される一連の演算器のデータパスに入力することで演算を行い、演算結果を出力する。
すなわち、演算装置201は、再構成可能なデータパスをたとえば複数有し、演算器(加算器、乗算器、乗加算器等)を、電気的な接続網で接続し、複数個の演算器からなる演算回路を構成する。
そして、演算装置201は、このようにして再構成された演算回路に対して、連続してデータを入力し、演算を行うことが可能であり、たとえば2入力1出力の逆二分木状のデータフローグラフで表現される演算を、効率よくかつ少ない回路規模で実現できる接続網を使用して演算回路を構成することが可能である。
図4は、演算装置201の構成例を示すブロック図である。
本演算装置201は、図4に示すように、FIFO(First−In First−Out)構造を有するレジスタファイル(RF)2011と、演算器プール2012を有する。
演算器プール2012は、データバスBSによりレジスタファイル2011とのデータの授受を行う少なくとも一つの(図4の例では4つの)演算部20121〜20124を有する。
各演算部20121〜20124は、複数(図4の例では8個)の演算器(加算器、乗算器、乗加算器等)OP1〜OP8と、演算器OP1〜OP8との間に電気的な接続を変更可能な接続回路網CCNを含む。
すなわち、演算装置201の基本的な構成は、レジスタファイル2011と演算器OPとの間に接続回路網CCNが存在することである。
また、レジスタファイル2011と接続回路網CNNの間に、値を変換するための回路が存在しても良い。
このように、レジスタファイルを独立して持たせることで、回路量を削減できる。
また、たとえば各グループに1つのレジスタファイルを持つ。
図4の例では、各演算部20121〜20124は、データバスBSを介して個別にレジスタファイル2011とのデータの授受を行うような構成となっている。ただし、たとえば他の信号ラインで各演算部20121〜20124間を接続して、一の演算部の演算結果を他の演算部で用いて演算を行うように構成する等の態様も可能である。
図5は、本発明に係る接続回路網CCNの第1の構成例を示す図である。
接続回路網CCNの構成の特徴は、たとえば2n本の入力バスがある場合、2個の演算器に対してはレジスタファイル2011からの一対を入力し、n−2個の演算器に対しては、レジスタファイル2011からの一対の入力と、前段(左側)の演算器の出力をセレクタで選択して自段の演算器に入力する。そして、残りの演算器に対しては、レジスタファイル2011からの入力バスL11,L12を除く入力すべてと、前段(左側)の出力を選択して演算器に入力する。
図5の接続回路網CCNは、4対、8本の入力バスL11,L12、L21,L22、L31,L32、およびL41,L42を有する構成例である。
図5において、入力バスの所定の交差点において示す黒丸がセレクタを表している。図6に各セレクタの構成例を示す。
なお、図中の線は、束線(2本以上の信号線の集まり)を示している。
また図5は、7つの演算器OP1〜OP7を有する構成例を示しており、並列に配置された演算器の入力から出力までをステージSTG1〜STG7(最終のステージ7の演算器OP7の出力はレジスタファイルにデータが送られる)として次のような構成となっている。
すなわち、第1ステージSTG1では、演算器OP1の入力に対して一対の入力バスL11,L12が接続され、演算器OP1の出力が次段以降(図5の例では第3ステージSTG3の入力側)に接続されている。
第2ステージSTG2では、演算器OP2の入力に対して一対の入力バスL21,L22が接続され、演算器OP2の出力が第3ステージSTG3の入力側に接続されている。
第3ステージSTG3では、演算器OP3の入力に対して一対の入力バスL31,L32が接続され、演算器OP3の出力が第4ステージSTG4の入力側に接続されている。そして、入力バスL31,L32に対して第1ステージSTG1の演算器OP1の出力ラインおよび第2ステージSTG2の演算器OP2の出力ラインが交差しており、これら4つの交差点にぞれぞれ図6に示すセレクタSLCが配置されている。
第4ステージSTG4では、演算器OP4の入力に対して一対の入力バスL41,L42が接続され、演算器OP4の出力が第5ステージSTG5の入力側に接続されている。そして、入力バスL41,L42に対して第1ステージSTG1の演算器OP1の出力ライン、第2ステージSTG2の演算器OP2の出力ラインおよび第3ステージSTG3の演算器OP3の出力ラインが交差しており、これら6つの交差点にぞれぞれ図6に示すセレクタSLCが配置されている。
第5ステージSTG5では、演算器OP5に対してレジスタファイル2011からの入力バスL21〜L42を介する複数の入力と、第1〜第4ステージSTG1〜STG4の出力を選択して入力されるように、入力バスL42と入力バスL21,L22、L31,L32、L41との10個の交差点、並びに、第1ステージSTG1の演算器OP1の出力ライン、第2ステージSTG2の演算器OP2の出力ライン、第3ステージSTG3の演算器OP3の出力ライン、および第4ステージSTG4の演算器OP4の出力ラインが交差する8つの交差点にぞれぞれ図6に示すセレクタSLCが配置されている。
第6ステージSTG6では、演算器OP6に対してレジスタファイル2011からの入力バスL21〜L42を介する複数の入力と、第1〜第5ステージSTG1〜STG5の出力を選択して入力されるように、入力バスL42と入力バスL21,L22、L31,L32、L41との10個の交差点、並びに、第1ステージSTG1の演算器OP1の出力ライン、第2ステージSTG2の演算器OP2の出力ライン、第3ステージSTG3の演算器OP3の出力ライン、第4ステージSTG4の演算器OP4の出力ライン、および第5ステージSTG5の演算器OP5の出力ラインが交差する10個の交差点にぞれぞれ図6に示すセレクタSLCが配置されている。
第7ステージSTG7では、演算器OP7に対してレジスタファイル2011からの入力バスL21〜L42を介する複数の入力と、第1〜第6ステージSTG1〜STG6の出力を選択して入力されるように、入力バスL42と入力バスL21,L22、L31,L32、L41との10個の交差点、並びに、第1ステージSTG1の演算器OP1の出力ライン、第2ステージSTG2の演算器OP2の出力ライン、第3ステージSTG3の演算器OP3の出力ライン、第4ステージSTG4の演算器OP4の出力ライン、第5ステージSTG5の演算器OP5の出力ライン、および第6ステージSTG6の演算器OP6の出力ラインが交差する12個の交差点にぞれぞれ図6に示すセレクタSLCが配置されている。
図7は、本発明に係る接続回路網CCNの第2の構成例を示す図である。
この第2の構成例が図5の第1の構成例と異なる点は、いわゆる完全クロスバ型としたことにある。
図5および図7からわかるように、第1の構成例の方が、データフローグラフ構築の自由度を保ちつつ、回路量を削減できる(セレクタを少なくできる)。
図8は、本発明に係る接続回路網CCNの第3の構成例を示す図である。
図8の接続回路網CCNは、4対、8本の入力バスL11,L12、L21,L22、L31,L32、およびL41,L42を有し、かつ8つの演算器OP1〜OP8を有する構成例を示している。そして、並列に配置された演算器の入力から出力までをステージSTG1〜STG8(最終のステージ8の演算器OP8の出力はレジスタファイルにデータが送られる)として次のような構成となっている。
図8において、入力バスの所定の交差点において示す黒丸および白丸がセレクタを表している。図9および図10に白丸の各セレクタの構成例を示す。
なお、図中の線は、束線(2本以上の信号線の集まり)を示している。
すなわち、第1ステージSTG1では、演算器OP1の入力に対して一対の入力バスL11,L12が接続され、演算器OP1の出力が入力バスL11に設けられた白丸のセレクタに接続されている。
第2ステージSTG2では、演算器OP2の入力に対して一対の入力バスL21,L22が接続され、演算器OP2の出力が入力バスL12に設けられた白丸のセレクタに接続されている。
第3ステージSTG3では、演算器OP3の入力に対して一対の入力バスL31,L32が接続され、演算器OP3の出力が入力バスL21に設けられた白丸のセレクタに接続されている。そして、入力バスL31,L32と入力バスL11,L12との4つの交差点にぞれぞれ図6に示すセレクタSLCが配置されている。
第4ステージSTG4では、演算器OP4の入力に対して一対の入力バスL41,L42が接続され、演算器OP4の出力が入力バスL22に設けられた白丸のセレクタに接続されている。そして、入力バスL41,L42と入力バスL11,L12,L21との6つの交差点にぞれぞれ図6に示すセレクタSLCが配置されている。
第5ステージSTG5では、演算器OP5の入力に対して2分岐させた入力バスL42が接続され、演算器OP5の出力が入力バスL31に設けられた白丸のセレクタに接続されている。そして、2つの入力バスL42と入力バスL11,L12,L21,L22との8つの交差点にぞれぞれ図6に示すセレクタSLCが配置されている。
第6ステージSTG6では、演算器OP6の入力に対して2分岐させた入力バスL42が接続され、演算器OP6の出力が入力バスL32に設けられた白丸のセレクタに接続されている。そして、2つの入力バスL42と入力バスL11,L12,L21,L22,L31,L32,L41との14個の交差点にぞれぞれ図6に示すセレクタSLCが配置されている。
第7ステージSTG7では、演算器OP7の入力に対して2分岐させた入力バスL42が接続され、演算器OP7の出力が入力バスL41に設けられた白丸のセレクタに接続されている。そして、2つの入力バスL42と入力バスL11,L12,L21,L22,L31,L32,L41との14個の交差点にぞれぞれ図6に示すセレクタSLCが配置されている。
第8ステージSTG8では、演算器OP8の入力に対して2分岐させた入力バスL42が接続され、演算器OP7の出力が入力バスL42に設けられた白丸のセレクタに接続されている。そして、2つの入力バスL42と入力バスL11,L12,L21,L22,L31,L32,L41との14個の交差点にぞれぞれ図6に示すセレクタSLCが配置されている。
図11は、本発明に係る接続回路網CCNの第4の構成例を示す図である。
本第4の構成例が図5の第1の構成例と異なる点は、各演算器OP1〜OP7の出力にセレクタを設けて、選択的にあらかじめ設定された少なくとも一つのテーブル参照部TBLに入力させ、テーブル参照部TBLの出力をセレクタで選択して、入力ラインL11〜L42に帰還させるようにしたことにある。
このような構成をとることにより、対数や指数の演算が可能となる。
演算実行の概略
ここで、本発明に係る演算装置201の演算実行の概略について、図12および図13に関連付けて説明する。
たとえばデータA,B,C,Dをレジスタファイル2011から読み、次式のYに相当する値をレジスタファイル2011に書き込むという演算を複数回行う。
Y[i]=(A[i]+B[i])×(C[i]+D[i])… (1)
図12は、式(1)に示す演算のデータフローグラフを示す。
演算の実行
演算1を実行する機能を有する演算器OP1と、データAに相当する値が出力されるレジスタファイル2011の出力を、枝0に相当する電気的接続経路である接続0で接続する。
同様に、枝1〜3に相当する接続1から3により、レジスタファイル2011のデータBに相当する出力を演算器OP1に、データC,Dに相当する出力を演算器OP2に接続する。
演算器OP1の出力を枝4に相当する接続4で、また演算器OP2の出力を枝5に相当する接続5で、それぞれ演算3を実行する機能を有する演算器OP3の入力に接続する。
演算器OP3の出力を、枝6に相当する接続6を経由してレジスタファイル2011に入力し、Yに相当する値を書き込む経路を確立する。
このようにして、レジスタファイル、演算器の電気的接続を実現し、レジスタファイルから、A[i],B[i],C[i],D[i]に相当するデータを順次読み出し、演算を実行することで、複数個のA〜Dに対する演算が効率よく実現される。
このようにして実現される演算装置201では、演算器間の電気的接続を変更することで、異なる演算に容易に対応できる。
図5の構成の場合、演算器OP1〜OP3が用いられ、接続0および接続1は入力バスL11,L12に相当し、接続2および接続3は入力バスL21,L22に相当する。
図5中に示すセレクタSLC1で演算器OP1の演算結果を演算器OP3に入力させる接続4を形成し、セレクタSLC2で演算器OP2の演算結果を演算器OP3に入力させる接続5を形成する。
そして、演算器OP3の演算結果をそのままレジスタファイル2011に出力するための接続6を形成する。
以上の演算は、図14に示すようなパイプライン処理で実行される。
なお、図14(A)はクロックを示し、図14(B)のRRはレジスタファイル2011からデータA〜Dの読み出し処理を示し、図14(C),(E),(G)のICは接続網CCN経由でのデータ転送処理を示し、図14(D)のAdd1/0は演算器OP1、OP2による演算処理を示し、図14(F)のmulは演算器OP3よる演算処理を示し、図14(H)のWBはレジスタファイル2011への演算結果の書き込み処理を示している。
本発明に係る演算装置201は、上述したようにデータパスを動的に再構築可能である。
これにより、演算装置201は、演算回路を使用して、演算をパイプライン状に実行している際に、演算器間の電気的接続を変更することが可能である。
また、前記のように動的に演算器間の構成を変更することで、遅滞なく異なる演算が行える。
また、演算装置201は、個々の演算器に対して付加されている制御回路が、次に行うべき演算に関する情報を保持し、一連の演算の終了を検出した際に、自動的に次の演算に向けた制御に切り替える機能を有する。
そして、演算装置201では、接続網CCNの個々の接続点に対し付与された制御回路が、次にとるべき接続構成に関する情報を保持し、一連のデータ転送の終了を検出した際に、個々の制御回路が自動的に接続点の制御を切り替える機能を有する。
次に、動的再構築の実現方法について説明する。
動的再構築の実現方法1
まず、図15および図16に関連付けて動的再構築の第1の実現方法について説明する。
この場合、図15に示すように、各演算器OPに対する制御回路301は、現在の制御情報(現制御情報)CIFMと、次に行うべき制御に関する情報(次制御情報)NIFMの2つを保持する。
そして、演算データOPDTは、それが演算に使用する最終データであることが識別可能な制御信号CTLと同期して送られてくる。
制御回路301は、最終データであることが識別された場合、現在実行中の演算の完了と同時に、現制御情報CIFMを次制御情報NIFMで書き換える。
これにより、演算回路の制御を変更することが可能であり、異なる演算を実行することが可能となる。
接続回路網CCNに関しても同様であり、図15に示すように、制御信号CTLにより最終データであることが識別された場合、制御回路301は、現在実行中のデータ転送の完了と同時に、現制御情報CIFMを次制御情報NIFMで書き換える。
これにより、接続回路網の制御を変更することが可能であり、異なる電気的接続を実現することが可能となる。
次に、図17〜図19に関連付けて動的再構築の第2の実現方法について説明する。
動的再構築の実現方法2
前述したような、演算器(演算回路)と接続回路網からなる演算装置を使用して、異なる演算を連続して実行する場合、図17に示すように、演算1と演算2が時間的に重複する区間(演算1と演算2の重複区間)が生じる。
この間、演算回路と接続回路網上には異なる演算に対するデータが同時に存在する。
この区間では、演算1の最終データが、演算回路上に存在する一方で、一部の回路は演算2に対応する制御が行われている。
そのため、演算1の最終データが、演算2を行っている演算器または、演算2に対応する制御となっている接続網制御回路に到達した場合、それらが演算の終了と認識して演算2に対する制御から演算3に対する制御に切り替わり、以後の残りの演算2に対する演算が正常に行われない可能性がある。
これに対処した動的再構築の実現例を以後述べる。
この場合、図18に示すように、各演算器OPに対する制御回路302は、現在の制御情報(現制御情報)CIFMと現在実行中の演算を識別するための情報(現識別情報)CDSCと、次に行うべき制御に関する情報(次制御情報)NIFMと、次に実行する演算を識別するための情報(次識別情報)NDSCを保持する。
演算データOPDTは、それが、演算に使用する最終データであることが識別可能な情報、およびそのデータが演算1に対するものか、演算2に対するものかを識別可能な情報を示す制御信号CTLと同期して送られてくる。
制御回路302は、送られてきたデータが、最終データであり、かつ現識別情報CDSCで示される演算に対するものであることが識別された場合、現在実行中の演算の完了と同時に、現制御情報CIFM、現識別情報CDSCをそれぞれ次制御情報NIFM、次識別情報NDSCで書き換える。
これにより、継続して入力されてくるデータに対し、異なる演算に適切なタイミングで切り替えることが可能となる。
接続回路網CCNに関しても同様であり、図19に示すように、現在実行中のデータ転送の完了と同時に、現制御情報CIFM、現識別情報CDSCをそれぞれ次制御情報NIFM、次識別情報NDSCで書き換える。
これにより、継続して入力されてくるデータに対し、異なる電気的接続に適切なタイミングで切り替えることが可能となる。
次に、本発明に係る演算装置201において、実際に拡散による画素色への寄与成分を形成する場合について図20および図21に関連付けて説明する。
図20は、演算装置201における演算部20121をデータバスBSと異なる信号ラインにより3つの演算部20122〜20124を並列に接続した構成を有する演算器プール2012のマッピングを示す図である。
演算部20121A,20122Aが図5と異なる点は、前段の演算器の出力を次段の演算器の入力に直接入力されていることにある。この例では、演算部20121A,20122Bの演算器OP2〜OP7は3入力1出力の構成を有している。
なお、図20では、図面の簡単化のため、演算部20123,20124は省略している。
図21は、拡散光成分の計算に対するデータフロー図である。
ここでは、次の計算を行う。
Y|=(|L・N|)×|Kd×|Cd …(2)
ここで、|Cdは拡散光の色を表すベクタ値、|Kdは反射率を表すベクタ値、|Lは拡散光の入射方向を示すベクトル、N|は描画する画素の法線ベクトルをそれぞれ表している。
▲1▼スカラ値×ベクタ値の例
上記式(2)で(|L・N|)はベクタ|LとN|の内積であり、次式で求まるスカラ値となる。
(|L・N|)=|Lx×N|x+|Ly×N|y+|Lz×N|z …(3)
この値を|Kd,|Cdの各色成分毎の積の各々に対して乗じて求める。
(|L・N|)をDとおくと、色の3原色RGB(rgb)について拡散色成分を演算部20122〜20124で計算する。
Y|r=D×(|Kdr×|Cdr)
Y|g=D×(|Kdg×|Cdg)
Y|b=D×(|Kdb×|Cdb)
上記の例では、各演算部20121A〜12124Aの第1〜第3のステージの3つの演算器OP1〜OP3を用いて演算を行っている。図20において、太線で示すラインがデータの入出力経路である。
具体的には、演算部20121Aにおいて、LおよびNのx成分Lx,Nxが演算器OP1に入力されて乗算され、この乗算結果Lx・Nxが演算器OP2に入力される。演算器OP2には、LおよびNのy成分Ly,Nyが入力されて乗算され、この乗算結果Ly・Nyに演算器OP1の乗算結果Lx・Nxが加算され、この加算結果(Lx・Nx+Ly・Ny)が演算器OP3に入力される。演算器OP3には、LおよびNのz成分Ly,Nzが入力されて乗算され、この乗算結果Lz・Nzに演算器OP1の演算結果(Lx・Nx+Ly・Ny)が加算され、この加算結果(Lx・Nx+Ly・Ny+Lz・Nz)が他の演算部20122A,20123A,20124Aに出力され、それぞれ各演算部20122A,20123A,20124Aの演算器OP3に入力される。
演算部20122Aにおいては、拡散光の色のr成分Cdrと反射率のr成分Kdrが演算器OP1に入力されて乗算され、この乗算結果Cdr・Kdrが演算器OP3に入力される。演算器OP3には演算部20121Aの演算器OP3の出力(Lx・Nx+Ly・Ny+Lz・Nz)が入力されており、演算器OP1の出力Cdr・Kdrとが乗算されて輝度Yのr成分Yrが生成され、レジスタファイル2011に出力される。
演算部20123Aにおいては、拡散光の色のg成分Cdgと反射率のg成分Kdgが演算器OP1に入力されて乗算され、この乗算結果Cdg・Kdgが演算器OP3に入力される。演算器OP3には演算部20121Aの演算器OP3の出力(Lx・Nx+Ly・Ny+Lz・Nz)が入力されており、演算器OP1の出力Cdg・Kdgとが乗算されて輝度Yのg成分Ygが生成され、レジスタファイル2011に出力される。
演算部20124Aにおいては、拡散光の色のb成分Cdbと反射率のb成分Kdbが演算器OP1に入力されて乗算され、この乗算結果Cdb・Kdbが演算器OP3に入力される。演算器OP3には演算部20121Aの演算器OP3の出力(Lx・Nx+Ly・Ny+Lz・Nz)が入力されており、演算器OP1の出力Cdb・Kdbとが乗算されて輝度Yのb成分Ybが生成され、レジスタファイル2011に出力される。
次に、一つの接続回路網において、演算回路の動的な再構築について、図22および図23に関連付けて説明する。
なお、ここでは、図8の接続回路網CCNを例に説明する。
まず、プライマリのr,g,b成分Pr,Pg,Pbを生成する場合には、レジスタファイル2011から、プライマリカラーのr成分PCrとアンビエントのr成分AMrが演算器OP1に入力され、プライマリカラーのg成分PCgとアンビエントのg成分AMgが演算器OP2に入力され、プライマリカラーのb成分PCbとアンビエントのb成分AMbが演算器OP3に入力され、各演算器OP1,OP2,OP3の演算結果がレジスタファイル2011に転送されるように各セレクタの制御が行われる。さらに、演算器OP1,OP2,OP3においては、入力された2つのデータに対して加算を行うように制御される。
そして、演算器OP1において、プライマリカラーのr成分PCrとアンビエントのr成分AMrが加算され、この加算結果PCr+AMrがPrとしてレジスタファイル2011に転送される。同様に、演算器OP2において、プライマリカラーのg成分PCgとアンビエントのg成分AMgが加算され、この加算結果PCg+AMgがPgとしてレジスタファイル2011に転送される。演算器OP3において、プライマリカラーのb成分PCbとアンビエントのb成分AMbが加算され、この加算結果PCb+AMbがPbとしてレジスタファイル2011に転送される。
次に、拡散光の入射方向を示すベクトルLと、描画する画素の法線ベクトルNとの内積を求める場合には、LおよびNのx成分Lx,Nxが演算器OP1に入力され、演算器OP1の出力が演算器OP4に入力され、LおよびNのy成分Ly,Nyが演算器OP2に入力され、演算器OP2の出力が演算器OP4に入力され、LおよびNのz成分Lz,Nzが演算器OP3に入力され、演算器OP3の出力が演算器OP5に入力され、演算器OP4の出力が演算器OP5に入力され、演算器OP5の出力がレジスタファイル2011に転送されるように、各セレクタが制御される。さらに、演算器OP1,OP2,OP3においては、入力された2つのデータに対して乗算を行うように制御され、演算器OP4,OP5においては、入力された2つのデータに対して加算を行うように制御される。
そして、演算器OP1において、LおよびNのx成分Lx,Nxが乗算され、この乗算結果Lx・Nxが演算器OP4に入力される。演算器OP2にいては、LおよびNのy成分Ly,Nyが乗算され、この乗算結果Ly・Nyが演算器OP4に入力される。演算器OP3においては、LおよびNのz成分Ly,Nzが乗算され、この乗算結果Lz・Nzが演算器OP5に入力される。演算器OP4においては、演算器OP1の出力Lx・Nxと演算器OP2の出力Ly・Nyが加算され、この演算結果(Lx・Nx+Ly・Ny)が演算器OP5に入力される。演算器OP5においては、演算器OP4の出力(Lx・Nx+Ly・Ny)と演算器OP3の出力Lz・Nz)が加算され、この加算結果(Lx・Nx+Ly・Ny+Lz・Nz)、すなわち所望の演算結果N・Lがレジスタファイル2011に転送される。
以上が本発明に係る演算装置201の構成および機能である。
以下に、DRAM147、DDAセットアップ回路141、トライアングルDDA回路142、テクスチャエンジン回路143、メモリI/F回路144、CRTコントロール回路145、およびRAMDAC回路146の機能について順を追って説明する。
DRAM147
DRAM147は、テクスチャバッファ147a、ディスプレイバッファ147b、zバッファ147cおよびテクスチャCLUT(Color Look Up Table)バッファ147dとして機能する。
また、DRAM147は、同一機能を有する複数(4個あるいは8個等)のモジュールに分割されている。
本実施形態においては、DRAM147は、たとえば図24に示すように、4つのDRAMモジュール1471〜1474に分割されている。DRAMモジュール1471〜1474の各々は、たとえば512のページアドレス(行アドレス)を有する。
メモリI/F回路144には、各DRAMモジュール1471〜1474に対応したメモリコントローラ1441〜1444、並びにこれらメモリコントローラ1441〜1444にデータを分配するディストリビュータ1445が設けられている。
そして、メモリI/F回路144は、各DRAMモジュール1471〜1474に対して、図24に示すように、ピクセルデータを、表示領域において隣接した部分は、異なるDRAMモジュールとなるように配置する。
これにより、三角形のような平面を描画する場合には面で同時に処理できることになるため、それぞれのDRAMモジュールの動作確率は非常に高くなっている。
また、DRAM147には、より多くのテクスチャデータを格納するために、インデックスカラーにおけるインデックスと、そのためのカラールックアップテーブル値が、テクスチャCLUTバッファ147dに格納されている。
インデックスおよびカラールックアップテーブル値は、テクスチャ処理に使われる。すなわち、通常はR,G,Bそれぞれ8ビットの合計24ビットでテクスチャ要素を表現するが、それではデータ量が膨らむため、あらかじめ選んでおいたたとえば256色等の中から一つの色を選んで、そのデータをテクスチャ処理に使う。このことで256色であればそれぞれのテクスチャ要素は8ビットで表現できることになる。インデックスから実際のカラーへの変換テーブルは必要になるが、テクスチャの解像度が高くなるほど、よりコンパクトなテクスチャデータとすることが可能となる。
これにより、テクスチャデータの圧縮が可能となり、内蔵DRAM147の効率良い利用が可能となる。
さらにDRAM147には、描画と同時並行的に隠れ面処理を行うため、描画しようとしている物体の奥行き情報が格納されている。
なお、表示データと奥行きデータおよびテクスチャデータの格納方法としては、メモリブロックの先頭から連続して表示データが格納され、次に奥行きデータが格納され、残りの空いた領域に、テクスチャの種類毎に連続したアドレス空間でテクスチャデータが格納される。これにより、テクスチャデータを効率よく格納できることになる。
以下に、本実施形態に係る同一半導体チップ内に混載されるレンダリング回路14のロジック回路とDRAM147およびSRAM148等からなる2次メモリとの好適な構成、配置および配線方法について、図25および図26に関連付けて説明する。
後述するように描画処理においては、最終的にはピクセルの一つ一つのアクセスにまで集約されてくることになる。したがって、ピクセル一つ一つの処理が同時並行処理されることにより、描画性能は並行処理の数だけ増加できることが理想である。
そのために、本3次元コンピュータグラフィックスシステムにおけるメモリシステムを構成するメモリI/F回路144においても、同時並行処理が行える構成がとられている。
グラフィックス描画処理においては、ピクセルを書き込む処理等を行う処理回路は、DRAMと頻繁にデータのやりとりを行う必要がある。
そのため、本実施形態では、図25に示すように、ピクセル処理を制御する機能ブロックであるピクセル処理モジュール1446,1447,1448,1449をメモリコントローラから物理的に分離し、かつ、これらピクセル処理モジュール1446,1447,1448,1449を対応するDRAMモジュール1471,1472,1473,1474の近くに配置(近接配置)している。
ピクセル処理モジュール1446,1447,1448,1449は、(R,G,B)カラーのリード(Read)/モディファイ(Modify)/ライト(Write)処理および、隠面処理のための以前に描画している深さ(奥行き)データと、今から描画しようとしているデータの深さを比較して、その結果により書き戻したりする作業に関する処理を全て行う。
これら作業をすべてピクセル処理モジュール1446,1447,1448,1449で行うことで、DRAMモジュール1471,1472,1473,1474との配線長が短いモジュール内で、DRAMとのやりとりを完結することが可能となる。
そのため、DRAMとの配線数、すなわち、転送のビット数を多くとっても、面積に対する配線が占める割合を、少なく抑えることができることから、動作速度向上および、配線面積の縮小化が可能となっている。
ディストリビュータ等を含むDRAM間制御モジュール1450に関しては、描画処理としての、DDAセットアップ回路141のDDAセットアップ演算、トライアングルDDA回路142のトライアングルDDA演算、テクスチャエンジン回路143のテクスチャ貼り付け、並びに、CRTコントロール回路145による表示処理等に比較して、それぞれのDRAMモジュール(DRAM+ピクセル処理)との関連も強く、DRAMモジュール1471,1472,1473,1474との間の信号線が最も多くなるところである。
そのため、DRAM間制御モジュール1450は、それぞれのDRAMモジュール1471,1472,1473,1474の中心付近に配置して、最長配線長ができるだけ短くなるように考慮している。
また、ピクセル処理モジュール1446,1447,1448,1449とDRAM間制御モジュール1450との接続のための信号入出力端子については、図3に示すように、それぞれのピクセル処理モジュール1446,1447,1448,1449における入出力端子を同じにするのではなく、個々のピクセル処理モジュールと、DRAM間制御モジュール1450間が最適(最短)に配線されるように、個々のピクセル処理モジュールにおける信号の入出力端子位置を調整してある。
具体的には、ピクセル処理モジュール1446は、図25においてモジュール下縁部の右端側に入出力端子T1446aが形成されている。そして、この入出力端子T1446aがDRAM間制御モジュール1450の上縁部の左端側に形成された入出力端子T1450aと対向するように配置されて、両端子T1446aおよびT1450aが最短距離をもって接続されている。
そして、ピクセル処理モジュール1446には、図25において上縁部の中央部にDRAMモジュール1471との接続用入出力端子T1446bが形成されている。
ピクセル処理モジュール1447は、図25においてモジュール下縁部の左端側に入出力端子T1447aが形成されている。そして、この入出力端子T1447aがDRAM間制御モジュール1450の上縁部の右端側に形成された入出力端子T1450bと対向するように配置されて、両端子T1447aおよびT1450bが最短距離をもって接続されている。
そして、ピクセル処理モジュール1447には、図25において上縁部の中央部にDRAMモジュール1472との接続用入出力端子T1447bが形成されている。
ピクセル処理モジュール1448は、図25においてモジュール上縁部の右端側に入出力端子T1448aが形成されている。そして、この入出力端子T1448aがDRAM間制御モジュール1450の下縁部の左端側に形成された入出力端子T1450cと対向するように配置されて、両端子T1448aおよびT1450cが最短距離をもって接続されている。
そして、ピクセル処理モジュール1448には、図25において下縁部の中央部にDRAMモジュール1473との接続用入出力端子T1448bが形成されている。
ピクセル処理モジュール1449は、図25においてモジュール上縁部の左端側に入出力端子T1449aが形成されている。そして、この入出力端子T1449aがDRAM間制御モジュール1450の下縁部の右端側に形成された入出力端子T1450dと対向するように配置されて、両端子T1449aおよびT1450dが最短距離をもって接続されている。
そして、ピクセル処理モジュール1449には、図25において下縁部の中央部にDRAMモジュール1474との接続用入出力端子T1449bが形成されている。
なお、ピクセル処理モジュール1446,1447,1448,1449は、各DRAMモジュール1471,1472,1473,1474からDRAM間制御モジュール1450に至る経路を、上記のようにして最適な長さにしても、処理速度要求が満足できない処理に関しては、たとえばレジスタで分断した少なくとも1段のパイプライン処理をとり得、所望の処理速度を達成できるように構成されている。
また、本実施形態に係るDRAMモジュール1471〜1474は、たとえば図26に示すように構成されている。なお、ここでは、DRAMモジュール1471を例に説明するが、他のDRAMモジュール1472〜1474も同様の構成を有することから、その説明は省略する。
DRAMモジュール1471は、図26に示すように、メモリセルがマトリクス状に配置され、ロウアドレスRA、カラムアドレスCAに基づいて選択される図示しないワード線およびビット線を通してアクセスされるDRAMコア1480、ロウデコーダ1481、センスアンプ1482、カラムR/Wデコーダ1483、およびSRAM等からなるいわゆるキャッシュメモリと同様の機能を備えた2次メモリ1484を有している。
本実施形態のように、DRAMモジュール毎に、グラフィックス描画におけるピクセル処理を制御する機能ブロックとしてのピクセル処理モジュール1446〜1449と、DRAMモジュールの2次メモリ1484とがDRAMモジュールに近接配置されている。
そして、この場合、DRAMのいわゆる長辺方向が、DRAMコア1480のカラム方向になるように配置されている。
図26の構成においてランダムな読み出し(リード)に関して見てみると、ピクセル処理モジュール1446から制御信号と必要なアドレス信号S1446が、アドレス制御パスからDRAMモジュール1471に供給され、それをもとに、ロウアドレスRAとカラムアドレスCAが生成され、所望のロウに相当するDRAMのデータがセンスアンプ1482を通して読み出される。
センスアンプ1482を通ったデータは所望のカラムアドレスCAに従って、カラムデコーダにて必要なカラムが集約され、ランダムアクセスポートから所望のロウ/カラムに対応した、DRAMのデータD1471がパスを介してピクセル処理モジュール1446に転送される。
2次メモリにデータを書き込む場合は、ピクセル処理モジュール1446から制御信号と必要なアドレス信号S1446が、アドレス制御パスからDRAMモジュール1471に供給され、それをもとにロウアドレスのみが生成され、1ロウ分のデータが一気にDRAMからSRAM148等からなる2次メモリ1484に書き込まれる。
この場合、DRAMのいわゆる長辺方向が、DRAMコア1480のカラム方向になるように配置されていることから、ロウ方向に配置する場合に比較して、ロウアドレス指定のみで、そのロウアドレスに対応している1ロウ分のデータを、一度に2次メモリ1484にロードできるビット数が格段に増加する。
また、テクスチャ処理モジュールとしてのテクスチャエンジン回路143への2次メモリ(SRAM)1484からのデータD1484の読み込みは、テクスチャエンジン回路143から、制御信号と必要なアドレス信号が、アドレス制御パスからDRAMに供給され、それに対応したデータD1484がデータパスを介してテクスチャエンジン回路143へ転送される。
また、本実施形態においては、図26に示すように、ピクセル処理モジュールとDRAMモジュールの2次メモリとが、それぞれ互いにDRAMモジュールの長辺側の同一側に近接配置されている。
これにより、ピクセル処理モジュールとDRAMモジュールの2次メモリへのデータは、同一のセンスアンプを使うことができるため、DRAMコア1480の面積増加を最小限に抑えて2ポート化することが可能となっている。
メモリI/F回路144
メモリI/F回路144は、テクスチャエンジン回路143から入力したピクセルデータS143に対応するzデータと、zバッファ147cに記憶されているzデータとの比較を行い、入力したピクセルデータS143によって描画される画像が、前回、ディスプレイバッファ147bに書き込まれた画像より、手前(視点側)に位置するか否かを判断し、手前に位置する場合には、画像データS143に対応するzデータでzバッファ147cに記憶されたzデータを更新する。
また、メモリI/F回路144は、(R,G,B)データをディスプレイバッファ147bに書き込む(打ち込む)。
なお、メモリI/F回路144によるDRAM147に対してのアクセスは、16ピクセルについて同時に行われる。
DDAセットアップ回路141
DDAセットアップ回路141は、後段のトライアングルDDA回路142において物理座標系上の三角形の各頂点の値を線形補間して、三角形の内部の各ピクセル(画素)の色と深さ情報を求めるに先立ち、ポリゴンレンダリングデータS11が示す(z,R,G,B,s,t,q,α,F)データについて、三角形の辺と水平方向の差分などを求めるセットアップ演算を行う。
このセットアップ演算は、具体的には、開始点の値と終点の値、開始点と終点との距離を用いて、単位長さ移動した場合における、求めようとしている値の変分を算出する。
DDAセットアップ回路141は、算出した変分データS141をトライアングルDDA回路142に出力する。
DDAセットアップ回路141の機能について図27に関連付けてさらに説明する。
上述したように、DDAセットアップ回路141の主な処理は、前段のジオメトリ処理を経て物理座標にまで落ちてきた各頂点における各種情報(色、テクスチャ座標)の与えられた三頂点により構成される三角形内部で変分を求めて、後段の線形補間処理の基礎データを算出することである。
なお、三角形の各頂点データは、たとえばx,y座標が16ビット、z座標が24ビット、RGBカラー値が各12ビット(=8+4)、s,t,qテクスチャ座標は各32ビット浮動少数値(IEEEフォーマット)で構成される。
三角形の描画は水平ラインの描画に集約されるが、そのために水平ラインの描画開始点における最初の値を求める必要がある。
この水平ラインの描画においては、一つの三角形の中でその描画方向は一定にする。たとえば左から右へ描画する場合は、左側の辺におけるY方向変位に対するXおよび上記各種の変分を算出しておいて、それを用いて頂点から次の水平ラインに移った場合の最も左の点のx座標と、上記各種情報の値を求める(辺上の点はY,X両方向に変化するのでY方向の傾きのみでは計算できない。)。
右側の辺に関しては終点の位置がわかればよいので、Y方向変位に対するxの変分のみを調べておけばよい。
水平ラインの描画に関しては、水平方向の傾きは同一三角形内では均一なので、上記各種情報の傾きを算出しておく。
与えられた三角形をY方向にソートして最上位の点をAとする。次に残りの2頂点のX方向の位置を比較して右側の点をBとする。こうすることで、処理の場合分け等が2通り程度にできる。
トライアングルDDA回路142
トライアングルDDA回路142は、DDAセットアップ回路141から入力した変分データS141を用いて、三角形内部の各ピクセルにおける線形補間された(z,R,G,B,s,t,q,α,F)データを算出する。
トライアングルDDA回路11は、各ピクセルの(x,y)データと、当該(x,y)座標における(z,R,G,B,s,t,q,α,F)データとを、DDAデータ(補間データ)S142としてテクスチャエンジン回路143に出力する。
たとえば、トライアングルDDA回路142は、並行して処理を行う矩形内に位置する8(=2×4)ピクセル(画素)分のDDAデータS142をテクスチャエンジン回路143に出力する。
トライアングルDDA回路142の機能について図28に関連付けてさらに説明する。
上述したように、DDAセットアップ回路141により、三角形の各辺と水平方向における先出の各種情報の傾き情報が準備され、この情報を受けたトライアングルDDA回路142の基本的処理は、三角形の辺上の各種情報の補間処理による水平ラインの初期値の算出と、水平ライン上での各種情報の補間処理である。
ここで最も注意しなければならないことは、補間結果の算出は、ピクセル中心における値を算出する必要があるということである。
その理由は、算出する値がピクセル中心からはずれたところを求めていては、静止画の場合はさほど気にならないが、動画にした場合には、画像の揺らぎが目立つようになるからである。
最初の水平ライン(当然ピクセル中心を結んだライン)の一番左側における各種情報は、辺上の傾きに頂点からその最初の水平ラインまでの距離をかけてやることで求めることができる。
次のラインにおける開始位置での各種情報は、辺上の傾きを足してゆくことで算出できる。
水平ラインにおける最初のピクセルでの値は、ラインの開始位置における値に、最初のピクセルまでの距離と水平方向の傾きをかけた値を足すことで算出できる。水平ラインにおける次のピクセルにおける値は、最初のピクセルの値に対してつぎつぎに水平方向の傾きを足し込んでゆけば算出できる。
次に、頂点のソートについて図29に関連付けて説明する。
頂点をあらかじめソートしておくことで、以降の処理の場合分けを最大限に減らし、かつ、補間処理においてもできるだけ一つの三角形の内部においては、矛盾が生じにくくすることができる。
ソートのやり方としては、まずすべての与えられた頂点をY方向にソートして、最上位の点と最下位の点を決めそれぞれA点、C点とする。残りの点はB点とする。
このようにすることで、Y方向に最も長く伸びた辺が辺ACとなり、最初に辺ACと辺ABを用いてその二つの辺で挟まれた領域の補間処理を行い、次に辺ACはそのままで、辺ABに変えて辺BCと辺ACで挟まれた領域の補間を行うという処理になる。また、Y方向のピクセル座標格子上への補正に関しても、辺ACと辺BCについて行っておけばよいこともわかる。
このようにして、ソート後の処理に場合分けが不必要になることで、データを単純に流すだけの処理で可能となりバグも発生しにくくなるし、構造もシンプルになる。
また、一つの三角形の中で補間処理の方向が辺BC上を開始点として一定にできるため、水平方向の補間(Span)の方向が一定となり、演算誤差があったとしても辺BCから他の辺に向かって誤差が蓄積されるかたちとなり、その蓄積の方向が一定となるため、隣接する辺同士での誤差は目立たなくなる。
次に、水平方向の傾き算出について図30に関連付けて説明する。
三角形内における各種変数(x,z,R,G,B,s,t,q)の(x,y)に対する傾き(変数分)は、線形補間であることから一定となる。
したがって、水平方向の傾き、すなわち、各水平ライン(Span)上での傾きはどのSpanにおいても、一定となるので、各Spanの処理に先立ってその傾きを求めておくことになる。
三角形の与えられた頂点をY方向にソートした結果、辺ACが最も長く伸びた辺と再定義されているので、頂点Bを水平方向に伸ばしたラインと辺ACの交点が必ず存在するのでその点をDとする。
後は単純に点Bと点Dの間の変分を求めるようなことを行えば、水平方向すなわちx方向の傾きを求めることができる。
具体的には、D点でのxおよびz座標は次式のようになる。
={(y−y)/(y−y)}・(x−x
={(y−y)/(y−y)}・(z−z
これに基づいて、変数zのx方向の傾きを求めると、次のようになる。
Δz/Δx=(z−z)/(x−x
=〔{(y−y)/(y−y)}・(z−z)−z
/〔{(y−y)/(y−y)}・(x−x)−x
={z(y−y)−(z−z)(y−y)}
/{x(y−y)−(z−z)(y−y)}
次に、頂点データの補間手順の一例について、図31A,31Bおよび図32に関連付けて説明する。
頂点のソート、水平方向の傾き算出、各辺上での傾きの算出処理を経て、それらの結果を使って補間処理を行う。
B点の位置によって、Spanでの処理の向きは2通りに別れる。これは、一つの三角形の内部での補間における各Span同士での誤差の蓄積方向を、一定にすることで、できるだけ不具合が発生しないようにするために、Y方向に最も長く伸びた辺を常に始点として、処理するようにしようとしているからである。
B点がA点と同じ高さにあった場合には、前半の処理はスキップされることになる。よって、場合分けというよりは、スキップが可能な機構を設けておくだけで処理としてはすっきりしたものとできる。
複数のSpanを同時処理することで、処理能力をあげようとした場合には、Y方向における傾きを求めたくなるが、頂点のソートからやり直す必要があることになる。しかしながら、補間処理の前処理だけでことが済むために、全体としての処理系は簡単にできる。
具体的には、B点がA点と同じ高さでない場合には、AC,ABのY方向補正(画素(ピクセル)格子上の値算出)を行い(ST1,ST2)、AC辺上の補間およびAB辺上の補間を行う(ST3)。
そして、AC水平方向の補正およびAC辺からAB辺方向の水平ライン(Span)上を補間する(ST4)。
以上のステップST3,ST4の処理をAB辺の端点まで行う(ST5)。
AB辺の端点までステップST2〜ST4の処理が終了した場合、あるいはステップST1においてB点がA点が同じ高さであると判別した場合には、BCのY方向補正(画素格子上の値算出)を行い(ST6)、AC辺上の補間およびBC辺上の補間を行う(ST7)。
そして、AC水平方向の補正およびAC辺からBC辺方向の水平ライン(Span)上を補間する(ST8)。
以上のステップST7,ST8の処理をBC辺の端点まで行う(ST9)。
テクスチャエンジン回路143
テクスチャエンジン回路143は、「s/q」および「t/q」の算出処理、テクスチャ座標データ(u,v)の算出処理、テクスチャバッファ147aからの(R,G,B)データの読み出し処理等を順にパイプライン方式で行う。
なお、テクスチャエンジン回路143は、たとえば所定の矩形内に位置する8ピクセルについての処理を同時に並行して行う。
テクスチャエンジン回路143は、DDAデータS142が示す(s,t,q)データについて、sデータをqデータで除算する演算と、tデータをqデータで除算する演算とを行う。
テクスチャエンジン回路143には、たとえば図示しない除算回路が8個設けられており、8ピクセルについての除算「s/q」および「t/q」が同時に行われる。
また、テクスチャエンジン回路143は、除算結果である「s/q」および「t/q」に、それぞれテクスチャサイズUSIZEおよびVSIZEを乗じて、テクスチャ座標データ(u,v)を生成する。
また、テクスチャエンジン回路143は、メモリI/F回路144を介して、SRAM148あるいはDRAM147に、生成したテクスチャ座標データ(u,v)を含む読み出し要求を出力し、メモリI/F回路144を介して、SRAM148あるいはテクスチャバッファ147aに記憶されているテクスチャデータを読み出すことで、(s,t)データに対応したテクスチャアドレスに記憶された(R,G,B)データS148を得る。
ここで、SRAM148には、テクスチャバッファ147aに格納されているテクスチャデータが記憶される。
テクスチャエンジン回路143は、読み出した(R,G,B)データS148の(R,G,B)データと、前段のトライアングルDDA回路142からのDDAデータS142に含まれる(R,G,B)データとを、それぞれかけあわせるなどして、ピクセルデータS143を生成する。
テクスチャエンジン回路143は、このピクセルデータS143をメモリI/F回路144に出力する。
なお、テクスチャバッファ147aには、MIPMAP(複数解像度テクスチャ)などの複数の縮小率に対応したテクスチャデータが記憶されている。ここで、何れの縮小率のテクスチャデータを用いるかは、所定のアルゴリズムを用いて、前記三角形単位で決定される。
テクスチャエンジン回路143は、フルカラー方式の場合には、テクスチャバッファ147aから読み出した(R,G,B)データを直接用いる。
一方、テクスチャエンジン回路143は、インデックスカラー方式の場合には、あらかじめ作成したカラールックアップテーブル(CLUT)をテクスチャCLUTバッファ147dから読み出して、内蔵するSRAMに転送および記憶し、このカラールックアップテーブルを用いて、テクスチャバッファ147aから読み出したカラーインデックスに対応する(R,G,B)データを得る。
CRTコントロール回路145
CRTコントロール回路145は、与えられた水平および垂直同期信号に同期して、図示しないCRTに表示するアドレスを発生し、ディスプレイバッファ147bから表示データを読み出す要求をメモリI/F回路144に出力する。この要求に応じて、メモリI/F回路144は、ディスプレイバッファ147bから一定の固まりで表示データを読み出す。CRTコントローラ回路145は、ディスプレイバッファ147bから読み出した表示データを記憶するFIFO(First In First Out)回路を内蔵し、一定の時間間隔で、RAMDAC回路146に、RGBのインデックス値を出力する。
RAMDAC回路146
RAMDAC回路146は、各インデックス値に対応するR,G,Bデータを記憶しており、CRTコントローラ回路145から入力したRGBのインデックス値に対応するデジタル形式のR,G,Bデータを、図示しないD/Aコンバータ(Digital/Analog Converter)に転送し、アナログ形式のR,G,Bデータを生成する。RAMDAC回路146は、この生成されたR,G,Bデータを図示しないCRTに出力する。
次に、図2の3次元コンピュータグラフィックスシステムの全体の動作を説明する。
3次元コンピュータグラフィックスシステム10においては、グラフィックス描画等のデータは、メインプロセッサ11のメインメモリ12、あるいは外部からのグラフィックスデータを受けるI/Oインタフェース回路13からメインバス15を介してレンダリング回路14に与えられる。
なお、必要に応じて、グラフィックス描画等のデータは、メインプロセッサ11等において、座標変換、クリップ処理、ライティング処理等のジオメトリ処理が行われる。
ジオメトリ処理が終わったグラフィックスデータは、三角形の各3頂点の頂点座標x,y,z、輝度値R,G,B、描画しようとしているピクセルと対応するテクスチャ座標s,t,qとからなるポリゴンレンダリングデータS11となる。
このポリゴンレンダリングデータS11は、レンダリング回路14のDDAセットアップ回路141に入力される。
DDAセットアップ回路141においては、ポリゴンレンダリングデータS11に基づいて、三角形の辺と水平方向の差分などを示す変分データS141が生成される。具体的には、開始点の値と終点の値、並びに、その間の距離を用いて、単位長さ移動した場合における、求めようとしている値の変化分である変分が算出され、変分データS141としてトライアングルDDA回路142に出力される。
トライアングルDDA回路142においては、変分データS141を用いて、、三角形内部の各ピクセルにおける線形補間された(z,R,G,B,s,t,q,α,F)データが算出される。
そして、この算出された(z,R,G,B,s,t,q,α,F)データと、三角形の各頂点の(x,y)データとが、DDAデータS142として、トライアングルDDA回路142からテクスチャエンジン回路143に出力される。
テクスチャエンジン回路143においては、DDAデータS142が示す(s,t,q)データについて、sデータをqデータで除算する演算と、tデータをqデータで除算する演算とが行われる。そして、除算結果「s/q」および「t/q」に、それぞれテクスチャサイズUSIZEおよびVSIZEが乗算され、テクスチャ座標データ(u,v)が生成される。
次に、テクスチャエンジン回路143からメモリI/F回路144を介して、テクスチャエンジン回路143からSRAM148に、生成されたテクスチャ座標データ(u,v)を含む読み出し要求が出力され、メモリI/F回路144を介して、SRAM148に記憶された(R,G,B)データS148が読み出される。
次に、テクスチャエンジン回路143において、読み出した(R,G,B)データS148の(R,G,B)データと、前段のトライアングルDDA回路142からのDDAデータS142に含まれる(R,G,B)データとが、かけあわされ、ピクセルデータS143として生成される。
このピクセルデータS143は、テクスチャエンジン回路143からメモリI/F回路144に出力される。
フルカラーの場合には、テクスチャバッファ147aからのデータ(R,G,B)を直接用いればよいが、インデックスカラーの場合には、あらかじめ作成しておいたカラーインデックステーブル(Color Index Table)のデータが、テクスチャCLUT(Color Look Up Table)バッファ147dより、SRAM等で構成される一時保管バッファへ転送され、この一時保管バッファのCLUTを用いてカラーインデックスから実際のR,G,Bカラーが得られる。
なお、CLUTがSRAMで構成された場合は、カラーインデックスをSRAMのアドレスに入力すると、その出力には実際のR,G,Bカラーが出てくるといった使い方となる。
そして、メモリI/F回路144において、テクスチャエンジン回路143から入力したピクセルデータS143に対応するzデータと、zバッファ147cに記憶されているzデータとの比較が行われ、入力したピクセルデータS143によって描画される画像が、前回、ディスプレイバッファ147bに書き込まれた画像より、手前(視点側)に位置するか否かが判断される。
判断の結果、手前に位置する場合には、画像データS143に対応するzデータでzバッファ147cに記憶されたzデータが更新される。
次に、メモリI/F回路144において、(R,G,B)データがディスプレイバッファ147bに書き込まれる。
メモリI/F回路144においては、今から描画しようとしているピクセルにおけるテクスチャアドレスに対応したテクスチャを格納しているメモリブロックがそのテクスチャアドレスにより算出され、そのメモリブロックにのみ読み出し要求が出され、テクスチャデータが読み出される。
この場合、該当するテクスチャデータを保持していないメモリブロックにおいては、テクスチャ読み出しのためのアクセスが行われないため、描画により多くのアクセス時間を提供することが可能となっている。
描画においても同様に、今から描画しようとしているピクセルアドレスに対応するピクセルデータを格納しているメモリブロックに対して、該当アドレスからピクセルデータがモディファイ書き込み(Modify Write)を行うために読み出され、モディファイ後、同じアドレスへ書き戻される。
隠れ面処理を行う場合には、やはり同じように今から描画しようとしているピクセルアドレスに対応する奥行きデータを格納しているメモリブロックに対して、該当アドレスから奥行きデータがモディファイ書き込み(Modify Write)を行うために読み出され、必要ならばモディファイ後、同じアドレスへ書き戻される。
このようなメモリI/F回路144に基づくDRAM147とのデータのやり取りにおいては、それまでの処理が複数並行処理される。これにより、描画性能を向上させることができる。
特に、トライアングルDDA回路142とテクスチャエンジン143の部分を並列実行形式で、同じ回路に設ける(空間並列)か、または、パイプラインを細かく挿入する(時間並列)ことで、部分的に動作周波数を増加させるという手段により、複数ピクセルの同時算出が行われる。
また、ピクセルデータは、メモリI/F回路144の制御のもと、表示領域において隣接した部分は、異なるDRAMモジュールとなるように配置される。
これにより、三角形のような平面を描画する場合には面で同時に処理される。このため、それぞれのDRAMモジュールの動作確率は非常に高い。
そして、図示しないCRTに画像を表示する場合には、CRTコントロール回路145において、与えられた水平垂直同期周波数に同期して、表示アドレスが発生され、メモリI/F回路144へ表示データ転送の要求が出される。
メモリI/F回路144では、その要求に従い、一定のまとまった固まりで、表示データがCRTコントロール回路145に転送される。
CRTコントロール回路145では、図示しないディスプレイ用FIFO(First In First Out)等にその表示データが貯えられ、一定の間隔でRAMDAC146へRGBのインデックス値が転送される。
RAMDAC146においては、RAM内部にRGBのインデックスに対するRGB値が記憶されていて、インデックス値に対するRGB値が図示しないD/Aコンバータへ転送される。
そして、D/Aコンバータでアナログ信号に変換されたRGB信号がCRTへ転送される。
以上説明したように、本第1の実施形態によれば、レジスタファイル(RF)2011と、演算器プール2012を有する演算装置201であって、演算器プール2012は、データバスBSによりレジスタファイル2011とのデータの授受を行う少なくとも一つの演算部20121〜20124を有し、各演算部20121〜20124は、複数の演算器(加算器、乗算器、乗加算器等)OP1〜OP8と、演算器OP1〜OP8との間に電気的な接続を変更可能、レジスタファイル2011と演算器OPとの間に存在する接続回路網CCNを含むことから、各種の演算に対応でき、かつ開発時点で想定されていなかった演算方式にも容易に対応できる、かつ、3次元グラフィックにおいて、実時間での描画に十分な描画能力を発揮することができる。
また、複数に分割されたDRAMモジュール1471〜1474を、グラフィックス描画処理等を行うロジック回路部分の周辺部に配置したことから、同時にアクセスしなければならない場合に比較して、一回のアクセスでのビット線に占める有効データの割合が増加し、また、それぞれのDRAMモジュール1471〜1474からロジック回路部分までの距離が均一になり、固めて一方向に並べる場合に比較して、最も長くなるパス配線の長さを短くできる。そのため、全体での動作速度を向上できる利点がある。
また、DRAMモジュール1471〜1474毎に、グラフィックス描画におけるピクセル処理を制御する機能ブロックとしてのピクセル処理モジュール1446〜1449を近接配置したので、グラフィックス描画において非常に回数多く行われる、リード(Read)/モディファイ(Modify)/ライト(Write)処理が非常に短い配線領域で可能となる。このため、動作速度を飛躍的に向上させることができる。
また、ピクセル処理モジュールとDRAMモジュールの2次メモリとを、それぞれ互いにDRAMモジュールの長辺側の同一側に近接配置したので、ピクセル処理モジュールから2次メモリへのデータ転送を非常に幅の広いパスで行っても、いわゆるクロストーク(Cross Talk)の影響も少なく、当然配線長も短いため、動作速度が向上する。また、配線が占める面積も小さくなる。
また、ピクセル処理モジュールと2次メモリへのデータは、同一のセンスアンプを使うことができる。このため、DRAMコアの面積増加を最小限に抑えてポート化することが可能となる。
また、ピクセル処理モジュール1446〜1449は、その内部に少なくとも1段以上の、パイプライン制御が行われることから、その他の描画処理を行う中央に配置されるブロックまでの距離が、平均的に長くなったとしても、データを処理するスループットに影響を与えなくできるため、処理速度が向上する。
さらに、半導体チップ内部に内蔵されたDRAM147に、表示データと少なくとも一つの図形要素が必要とするテクスチャデータを記憶させた構成を有することから、表示領域以外の部分にテクスチャデータを格納できることになり、内蔵DRAMの有効利用が可能となり、高速処理動作、並びに低消費電力化を並立させるようにした画像処理装置が実現可能となる。
そして、単一メモリシステムを実現でき、すべてが内蔵された中だけで処理ができる。その結果、アーキテクチャとしても大きなパラダイムシフトとなる。
また、メモリの有効利用ができることで、内部に持っているDRAMのみでの処理が可能となり、内部にあるがゆえのメモリと描画システムの間の大きなバンド幅が、十分に活用可能となる。また、DRAMにおいても特殊な処理を組み込むことが可能となる。
さらに、表示アドレス空間において、隣接するアドレスにおける表示要素が、それぞれ異なるDRAMのブロックになるように配置するので、さらにビット線の有効利用が可能となり、グラフィックス描画におけるような、比較的固まった表示領域へのアクセスが多い場合には、それぞれのモジュールが同時に処理できる確率が増加し、描画性能の向上が可能となる。
また、より多くのテクスチャデータを格納するために、インデックスカラーにおけるインデックスと、そのためのカラールックアップテーブル値を内蔵DRAM147内部に格納するので、テクスチャデータの圧縮が可能となり、内蔵DRAMの効率良い利用が可能となる。
また、描画しようとしている物体の奥行き情報を、内蔵のDRAMに格納するので、描画と同時並行的に隠れ面処理を行うことが可能となる。
描画を行って、通常はそれを表示しようとするわけだが、ユニファイドメモリとして、テクスチャデータと表示データを同一のメモリシステムに同居させることができることから、直接表示に使わずに、描画データをテクスチャデータとして使ってしまうということも可能となる。
このようなことは、必要なときに必要なテクスチャデータを、描画によって作成する場合に有効となり、これもテクスチャデータを膨らませないための効果的な機能となる。
また、チップ内部にDRAMを内蔵することで、その高速なインターフェース部分がチップの内部だけで完結することになるため、大きな付加容量のI/Oバッファであるとか、チップ間配線容量をドライブする必要がなくなり、消費電力は内蔵しない場合に比較して小さくなる。
よって、さまざまな技術を使って、一つのチップの中だけですべてができるような仕組みは、今後の携帯情報端末等の身近なデジタル機器のためには、必要不可欠な技術要素となっている。
なお、本発明は上述した実施形態には限定されない。
また、上述した図2に示す3次元コンピュータグラフィックスシステムとしての画像処理装置10では、SRAM148を用いる構成を例示したが、SRAM148を設けない構成にしてもよい。
さらに、図2に示す3次元コンピュータグラフィックスシステムとしての画像処理装置10では、ポリゴンレンダリングデータを生成するジオメトリ処理を、メインプロセッサ11で行う場合を例示したが、レンダリング回路14で行う構成にしてもよい。
第2実施形態
図33は、本発明に係る演算装置を採用可能な画像処理装置の第2の実施形態を示すブロック構成図である。本第2の実施形態に係る画像処理装置400は、グラフィックス処理機能および画像処理機能を有し、複数の処理データを共有して並列処理を行う画像処理装置として構成されている。
この画像処理装置400は、図2のグラフィックスシステムに対応付けると、レンダリング回路14の部分に相当する。
本画像処理装置400は、図33に示すように、処理ユニットとしての第1のグラフィックスユニット(L1CG)401、コア部402、キャッシュ(たとえばSRAM)403−1〜403−m、およびEDRAM404を有している。
第1のグラフィックスユニット401は、グラフィックス処理の場合、三角形の頂点データに基づいてラスタライゼーションを行い、生成したピクセルデータをコア部402に供給する。
第1のグラフィックスユニット401において生成されるピクセルデータには、プライマリカラー(Primary Color:PC)、セカンダリカラー(Secondary Color:SC)、アンビエント(Ambient)、拡散係数、スペキュラ係数、シャイニネ係数、テクスチャ座標、ライトベクトル、ハーフベクトル等の各種データが含まれる。
第1のグラフィックスユニット401は、画像処理の場合には、たとえば図2のメインバス15を介して図示しない上位装置、たとえば図2のメインプロセッサ11から供給されたEDRAM404から画像データを読み出すためのソースアドレスおよび画像処理結果を書き込むためのデスティネーションアドレスの生成に必要なコマンドやデータ、たとえば探索矩形領域の幅、高さデータ、ブロックサイズデータを入力し、入力データに基づいて、ソースアドレスを生成するとともに、デスティネーションアドレス(Xd,Yd)を生成し、コア部402に供給する。
第1のグラフィックスユニット401は、図2のレンダリング回路14のDDAセットアップ回路141とトライアングルDDA回路142の機能を併せ持つ。
すなわち、第1のグラフィックスユニット401は、いわゆるラスタライゼーションに必要な各種データ(z,テクスチャ座標、カラーなど)の傾き等のDDAパラメータの算出を行う機能を有する。
具体的には、物理座標系上の三角形の各頂点の値を線形補間して、三角形の内部の各ピクセル(画素)の色と深さ情報を求めるに先立ち、ポリゴンレンダリングデータS11が示す(z,R,G,B,s,t,q,α,F)データについて、三角形の辺と水平方向の差分などを求めるセットアップ演算を行う。そして、算出した変分データを用いて、三角形内部の各ピクセルにおける線形補間された(z,R,G,B,s,t,q,α,F)データを算出する。
第1のグラフィックスユニット401は、各ピクセルの(x,y)データと、当該(x,y)座標における(z,R,G,B,s,t,q,α,F)データとを算出する。
コア部402は、本発明に係る演算装置を適用した演算処理部であり、コア402は第1のグラフィックスユニット401により各種データが供給される。
コア部402は、ストリームデータに対して演算処理を行う以下の機能ユニットを有している。
すなわち、コア部402は、第2のグラフィックスユニット(L2CG)4021、複数(k個、kはたとえば4または8)の演算ユニット(OPU)を並列に配置した複数(たとえばm個)の演算ユニット群4022−1〜4022−mを有している。
コア部402は、たとえばデータフローグラフ(Data Flow Graph:DFG)に応じてこれらの機能ユニット間の接続を切り替えることにより様々なアルゴリズムに対応する。
さらに、コア部402は、一つの演算ユニットOPUに対して2個ずつで、2k個のFIFOレジスタ(FIFO REG)構造のストリームレジスタSRを有し、各演算ユニット群4022−1〜4022−mに対応して配置されたm個のストリームレジスタ群4023−1〜4023−m、および各ストリームレジスタ群4023−1〜4023−mに対応して配置されたクロスバー回路(X−bar)4024−1〜4024−mを有している。
そして、コア部402は、図34に示すように、演算ユニット群4022−1、ストリームレジスタ群4023−1、クロスバー回路4024−1、およびSRAMキャッシュ403−1を含めてOPUブロックBLK1が構成されている。同様に、演算ユニット群4022−2、ストリームレジスタ群4023−2、クロスバー回路4024−2、およびSRAMキャッシュ403−2を含めてOPUブロックBLK2が構成されている。そして、演算ユニット群4022−m、ストリームレジスタ群4023−m、クロスバー回路4024−m、およびSRAMキャッシュ403−mを含めてOPUブロックBLKmが構成されている。
このように、コア部402においては、一つの第2のグラフィックスユニット4021に対してm個のOPUブロックBLK1〜BLKmが並列に配置されている。
第2のグラフィックスユニット4021は、図2のレンダリング回路14のテクスチャエンジン回路143の機能を併せ持つ。
すなわち、第2のグラフィックスユニット4021は、「s/q」および「t/q」の算出処理、テクスチャ座標データ(u,v)の算出処理、テクスチャバッファ147aからの(R,G,B)データの読み出し処理等を順にパイプライン方式で行う。
具体的には、第2のグラフィックスユニット4021は、(s,t,q)データについて、sデータをqデータで除算する演算と、tデータをqデータで除算する演算とを行う。
第2のグラフィックスユニット4021は、除算結果である「s/q」および「t/q」に、それぞれテクスチャサイズUSIZEおよびVSIZEを乗じて、テクスチャ座標データ(u,v)を生成する。
また、第2のグラフィックスユニット4021は、メモリI/F回路(たとえばEDRAM404に含まれる)を介して、SRAMキャッシュ403−1〜403−mあるいはEDRAM404に、生成したテクスチャ座標データ(u,v)を含む読み出し要求を出力し、メモリI/F回路を介して、SRAMキャッシュ403−1〜403−mあるいはEDRAM404から、テクスチャバッファ147aに記憶されているテクスチャデータを読み出すことで、(s,t)データに対応したテクスチャアドレスに記憶された(R,G,B)データを得る。
第2のグラフィックスユニット4021は、グラフィックス処理に関連するものとして、パースペクティブコレクション(Perspective Correction)、MIPMAPレベル算出等の機能を有する。
第2のグラフィックスユニット4021は、第一のグラフィックスユニット401により供給された正規化テクセル座標(s,t,q)および/または演算ユニット群4022−1〜4022−m内の演算ユニットOPUにより供給された正規化テクセル座標(s,t)に基づいて、パースペクティブコレクション、LOD(Level of Detail)計算によるミップマップ(MIPMAP)レベルの算出、立体マップ(Cube Map)の面選択やテクスチャ座標データ(u,v)の算出処理を行い、たとえばテクスチャ座標データ(u,v)およびLODデータ(lod)を含むグラフィックスデータをメモリI/F回路に対し出力する。
演算ユニット群4022−1〜4022−mを構成する各演算ユニットOPUは、ストリームデータ処理を行う機能ユニットであって、内部に複数の演算器およびセレクタを有する。
各演算ユニット群4022−1〜4022−mを構成する各演算ユニットOPU内の演算パイプに対しては、描画対象に関する情報や演算ユニット群あるいは隣接の演算ユニットOPUにおける演算結果が、たとえばクロスバー回路4024−1〜4024−mにより所望のストリームレジスタSRに設定された後、クロスバー回路4024−1〜4024−mを介さず、ストリームレジスタ群4023−1〜4023−mを介して直接的に供給される。
演算ユニット群4022−1〜4022−mに入力されるデータとしては、たとえば描画する対象の表面に関する情報(面の方向、色、反射率、模様(テクスチャ)等)、表面にあたる光に関する情報(入射方向、強さなど)、過去の演算結果(演算の中間値)等が一般的である。
各演算ユニットOPUは、複数の演算器を有し、たとえば外部からの制御により演算経路を再構成可能な演算ユニットであって、所望の演算を実現するように、内部の演算器間の電気的接続を確立し、入力されたデータを、演算器と電気的接続網(インターコネクト)から形成される一連の演算器のデータパスに入力することで演算を行い、演算結果を出力する。
すなわち、演算ユニットOPUは、再構成可能なデータパスをたとえば複数有し、演算器(加算器、乗算器、乗加算器等)を、電気的な接続網で接続し、複数個の演算器からなる演算回路を構成する。
そして、演算ユニットOPUは、このようにして再構成された演算回路に対して、連続してデータを入力し、演算を行うことが可能であり、たとえばツリー状のDFG(データフローグラフ)で表現される演算を、効率よくかつ少ない回路規模で実現できる接続網を使用して演算回路を構成することが可能である。
図35は、演算ユニット群4022−1(〜4022−m)の演算ユニットOPUの具体的な構成例を示す回路図である。
なお、図35の構成では、各演算ユニットOPUに対応して設けられている2個のストリームレジスタSR1,SR2は、演算ユニットOPUに内蔵され、一体的に構成されている。
各演算ユニットOPUは、図35に示すように、演算パイプ501と、3つの2入力セレクタ502〜504、並びにストリームレジスタSR1,SR2を有している。
演算ユニットOPU内の2入力セレクタ502〜504は、OPU内またはOPUブロック内に存在する図示しない制御レジスタに設定されたデータにより制御される。制御レジスタの値は、所望の演算を実行するようなデータ伝播経路を実現する値がセットされる。
演算パイプ501は、再構成可能なデータパスをたとえば複数有し、演算器(加算器、乗算器、乗加算器等)を、電気的な接続網で接続し、複数個の演算器からなる演算回路を構成する。
演算パイプ501の出力はセレクタ503,504の一方の入力に供給される。セレクタ502の一方の入力は、第1のグラフィックスユニット401あるいは第2のグラフィックスユニット402によるデータが供給され、他方の入力には隣接(図35の例では右隣)の演算ユニットOPUのストリームレジスタSR1の出力が供給される。セレクタ502の出力はセレクタ503の他方の入力およびセレクタ504の他方の入力に供給される。セレクタ503の出力がストリームレジスタSR1の一方の入力ポートに供給され、セレクタ504の出力がストリームレジスタSR2の一方の入力ポートに供給される。
ストリームレジスタSR1の他方の入力ポートにはクロスバー回路4024−1(4024−2〜4024−m)を介したデータが供給され、一方の出力ポートから保持データが演算パイプ501に供給され、他方の出力ポートから保持データが第2のグラフィックスユニット4021および隣接(図35の例では左隣)の演算ユニットOPUのセレクタ502に供給される。
ストリームレジスタSR2の他方の入力ポートにはクロスバー回路4024−1(4024−2〜4024−m)を介したデータが供給され、一方の出力ポートから保持データが演算パイプ501に供給され、他方の出力ポートから保持データがクロスバー回路4024−1(4024−2〜4024−m)に供給される。
演算ユニット501は、基本演算として、減算、乗算、加算、およびアキュムレト(Acc)等の演算処理を組み合わせて、たとえば以下の各種演算処理を行う。
・(A±B)×C±B
・(A±B)×C±Acc
・(A±B)±Acc
・A±B±C
・A±B±Acc
・A×B
・論理演算(たとえばAND,OR,NOT)
・ソースオペランドへの定数設定(1〜2個)
・クランプ(Clamp)/サチュレーション(Saturation)
・ソースデータの1,2ビット左シフト
・演算結果の算術1,2,8ビット右シフト
図36は、上記の各種演算処理を行う演算パイプの具体的な構成例を示す回路図である。
演算パイプ501は、図36に示すように、加減算器601、PPG(Partial Product Generator)/CSA(Carry Save Adder)602、加減算器603、論理演算器604、アキュムレータ605、左シフタ(L−Shift)606、右シフタ(R−Shift)607、クランプ(Clamp)/サチュレーション(Sat)回路608、3入力セレクタ609〜613、4入力セレクタ614,615、および2入力セレクタ616〜620を有している。
演算パイプ501内の3入力セレクタ609〜613、4入力セレクタ614,615、および2入力セレクタ616〜620は、演算ユニットOPUまたはOPUブロック内に存在する図示しない制御レジスタの設定データにより制御される。
この演算パイプ501においては、3入力セレクタ609〜611に対して、セレクタ502の出力、ストリームレジスタSR1の1出力、およびストリームレジスタSR2の出力が供給され、演算パイプ501の演算結果であるクランプ(Clamp)/サチュレーション(Sat)回路608の出力がセレクタ503,504に供給される。
左シフタ(L−Shift)606では、セレクタ612により選択されるパラメータ0,1,2に応じて2の演算が行われる。また、右シフタ(R−Shift)607では、セレクタ615により選択されるパラメータ0,1,2,8に応じて1/2の演算が行われる。
3入力セレクタ609の出力は加減算器601および2入力セレクタ619の一方の入力に供給される。3入力セレクタ610の出力は2入力セレクタ616,620、および4入力セレクタ614の第1入力に供給される。3入力セレクタ611の出力は左シフタ(L−Shift)606に供給される。また、2入力セレクタ617の一方の入力に選択データのMSB8ビットが、他方の入力にLSBの8ビットが入力される。セレクタ618の一方の入力のMSBの8ビットにはセレクタ617から出力される8ビットの値が入力され、同入力のLSBの8ビットには、セレクタ611の出力のLSBの8ビットが入力される。
2入力セレクタ616の他方の入力にはパラメータ0が供給され、その出力が加減算器601の他方の入力に供給される。加減算器601の出力は2入力セレクタ618の他方の入力およびPPG/CSA602の一方の入力に供給され、セレクタ618の出力がPPG/CSA602の他方の入力に供給される。PPGは乗算の為の部分積を生成する。この部分積をワラス等で知られるツリー状に構成したCSAで加算していくことで、一方の出力にキャリー出力が出力され、他方の出力にサム出力が出力される。この二つの出力を加減算器603で加算することにより乗算結果が得られる。
PPG/CSA602の一方の出力(キャリー出力)が2入力セレクタ619の他方の入力に供給され、他方の出力が2入力セレクタ620の他方の入力(サム出力)に供給される。
4入力セレクタ614の第2入力にはパラメータ0が供給され、第3入力に左シフタ(L−Shift)606の出力が供給され、第4入力にアキュムレータ605の出力が供給される。
2入力セレクタ619の出力が加減算器603の第1入力および論理演算器604の一方の入力に供給され、2入力セレクタ620の出力が加減算器603の第2入力および論理演算器604の他方の入力に供給され、4入力セレクタ614の出力が加減算器603の第3入力に供給される。
加減算器603の出力がアキュムレータ605および3入力セレクタ613の第1入力に供給され、論理演算器604の出力が3入力セレクタ613の第2入力に供給され、セレクタ613の第3入力にアキュムレータ605の出力が供給される。
そして、セレクタ613の出力が右シフタ(R−Shift)607に供給され、右シフタ(R−Shift)607の出力が(Clamp)/サチュレーション(Sat)回路608に供給される。
図37は、ストリームレジスタSRの具体的な構成例を示す図であり、図38A,図38Bは、ストリームレジスタの動作を説明するための図である。なお、図38Aは演算結果が出力されない場合の例であり、図38Bは演算結果が出力される場合の例である。
ストリームレジスタSRは、ソースデータと演算結果の格納の両方に用いられる。これにより、FIFOエントリの有効活用を図っている。
ストリームレジスタSRは、図37に示すように、入力側(ライト側)には2つの入力(ライト)ポートである第1入力ポートPTI1および第2入力ポートPTI2を有している。同様に、ストリームレジスタSRは、出力側(リード側)には2つの出力(リード)ポートである第1出力ポートPTO1および第2出力ポートPTO2を有している。
第1入力ポートPTI1は、セレクタ503,504を介した演算パイプ501の演算結果または隣接の演算ユニットOPUからの直接フォワーディングのライトを行う。第2入力ポートPTI2は、クロスバー回路4024−1(〜4024−m)からのデータのライトを行う。
また、第1出力ポートPTO1は、演算パイプ501側へソースデータを読み出す。第2出力ポートPTO2は、ポインタの操作により演算結果をリード(リザルトフォワーディング)し、また、ソースデータをリード(ソースフォワーディング)する。
ストリームレジスタSRの記憶領域本体の動作としては、図38A,図38Bに示すように、ソースデータが読まれた空いた領域に演算結果を書き込む。そして、入力FIFO兼出力FIFOとして機能する。
図38A,図38B中、左からFIFO内の所定領域を指している矢印のうち、図中、上側に記載されている矢印は第1入力ポートPTI1からのライト動作を示し、下側に記載されている矢印は第2入力ポートPTI2からのライト動作を示している。
また、FIFO内の所定領域から図中右側に出力しているように記載されている矢印のうち上側に記載されている矢印が第1出力ポートPTO1へのリード動作を示し、下側に記載されている矢印が第2出力ポートPTO2からのリード動作を示している。
図39は、クロスバー回路の構成例を示す回路図である。
この例では、1つのOPUブロックに4個の演算ユニットOPUが配置されている場合を示している。図39においても、演算ユニットOPU内にストリームレジスタSRが内蔵されている。
クロスバー回路は、コア部401が、DFGに応じて機能ユニット間の接続を替えることにより様々なアルゴリズムに対応可能なように、この接続切り替えを実現する。
このクロスバー回路4024は、隣接のOPUブロックのクロスバー回路からのデータの入力ラインL101,各OPUからの出力データの供給ラインL102〜L105、図43に示されるクロスバー回路への下方からのデータ供給ラインL106〜L113、並びに、隣接のOPUブロックのクロスバー回路とのデータ授受ラインL114と,各OPUに対する出力ラインL115〜L122が配線され、図中、縦方向に配線されたラインL101〜L113と横方向に配線されたラインL114〜L122との全交差点に、第1のデータ選択回路(黒丸で示している)DSL1が配置されている。
また、ラインL115〜L122には、伝播データを対応する演算ユニットOPUに入力させる第2のデータ選択回路(白丸で示している)DSL2が配置されている。
図40は、第1のデータ選択回路DSL1の構成例を示す回路図である。
図40中、b0〜b15は束線入力の各ビットを示し、縦方向に配線された各ビットラインB0〜B15と横方向に配線されたラインBL0〜BL15とが、選択信号SELに応じて導通制御されるスイッチSW0〜SW15により接続されている。
この第1のデータ選択回路DSL1では、選択信号SELがアクティブのときの全スイッチSW0〜SW15が導通状態となり、ビットデータb0〜b15がラインB0〜B15からラインBL0〜BL15に伝播され、転送される。
また、図41は、第2のデータ選択回路DSL2の構成例を示す回路図である。
第2のデータ選択回路DSL2は、図41に示すように、ラインBL0〜BL15を伝播された束線入力を無条件にビットデータob0〜ob15として対応する演算ユニットOPUに入力させる。
たとえばテクスチャデータ等はメモリから出力された順で演算に使用されるとは限らないことから、図42に示すように、上述した構成を有するクロスバー回路2024−1〜2024−mを制御して、各入力データp0〜p7を適切な演算ユニットOPUの入力へと伝播させる。
図43および図44は、キャッシュの構成、機能を説明するための図であって、図43はリード系を示し、図44はライト系を示している。
図43および図44に示すようにキャッシュ403−1〜403−mは、図2のSRAM148に相当するテクスチャメモリTEXMと、図2のメモリI/F回路144内(あるいはEDRAMの制御系内)に存在するバッファメモリBUFMにより構成される。
図43は、キャッシュ403−1〜403−mに格納されているEDRAM404のフレームバッファのキャッシュまたは第1のグラフィックスユニット401からのDDA入力であるカラー値やベクタ値、他のOPUブロックでバイリニアフィルタリングされた後のテクスチャ値等が読み出され、クロスバー回路4024に入力される経路を示している。
図中の3段接続されたセレクタSLC101〜SLC103,SLC104〜SLC106,SLC107〜SLC109,SLC110〜SLC112は、図2におけるメモリI/F回路144の一部として設けられ、同回路内に存在する図示しない制御レジスタの設定データによりデータ、具体的には、テクスチャメモリTEXMのデータか、バッファメモリBUFMのデータか、EDRAM404からの読み出しデータか、DDAデータかを選択するように制御される。
そして、選択データがクロスバー回路4024に供給される。
また、他のOPUブロックからのデータやフィルタ係数とDDA入力との選択をするセレクタSLC113〜SLC116が設けられている。セレクタSLC113〜SLC116も、図示しない制御レジスタの設定データにより制御される。
また、図44に示すライト系に関しては、EDRAM404からの読み出しデータは、テクスチャ読み出しの場合には、テクスチャメモリTEXMに書き込まれる。
フレームバッファFBやzバッファの場合には、バッファメモリBUFMに書き込まれる。
また、データバッファとして使用する場合には、各OPUブロックが担当する役割に応じて第1のグラフィックスユニット401からのDDA入力であるカラー値やベクタ値、他のOPUブロックで4近傍フィルタリングされた後のテクスチャ値等が格納される。
図中の3段接続されたセレクタSLC121〜SLC123,SLC124〜SLC126,SLC127〜SLC129,SLC130〜SLC132は、図2におけるメモリI/F回路144の一部として設けられ、同回路内に存在する図示しない制御レジスタの設定データにより制御され、選択データがバッファメモリBUFMに供給される。
以上の構成を有するコア部402においては、たとえばグラフィックス処理時に、クロスバー回路4024を介して所望のストリームレジスタSRに設定され、ストリームレジスタSRから直接的に入力された演算ユニットOPUにおける演算結果データ、並びに、第1のグラフィックスユニット401により所望のストリームレジスタSRに設定され、ストリームレジスタSRから直接的に入力されたプライマリカラー(PC)、セカンダリカラー(SC)、Fog係数(F)に基づいて、たとえばピクセルシェーダ(PixelShader)のような演算を行い、色データ(FR1,FG1,FB1)および混合値(ブレンド値:FA1)を求める。
このデータ(FR1,FG1,FB1,FA1)は、たとえば第2のグラフィックスユニット4021に別個に設けられたライトユニットWUに転送される。
また、コア部402においては、グラフィックス処理時には、たとえば以下の処理を行う。
たとえば第2のグラフィックスユニット4021から直接的に供給された(s1,t1,lod1),(s2,t2,lod2)の値に基づいて、テクスチャアクセスのための(u,v)アドレス計算を行い、アドレスデータ(ui,vi,lodi)に基づいて4近傍フィルタリングを行うための4近傍の(u,v)座標、すなわち、(u0,v0),(u1,v1),(u2,v2),(u3,v3)を計算して、所望のテクセルデータをたとえばキャッシュを通して読み出す。
また、コア部402では、係数生成のためのデータ(uf,vf,lodf)に基づいてテクスチャフィルタ係数Kを計算する。
そして、各演算ユニットOPUにおいて、色データ(TR,TG,TB)および混合値(ブレンド値:TA)を求める。
一方、コア部402は、画像処理時には、たとえば以下の処理を行う。
たとえば第1のグラフィックスユニット401で生成されたソースアドレスに基づいて、たとえばキャッシュTEXMおよび/またはリードライトキャッシュBUFMを介して、EDRAM404に格納されている画像データを読み出し、読み出しデータに対して演算ユニットOPUにおいて所定の演算処理を行って、演算結果をたとえばライトユニットWUに転送する。
ライトユニットWUは、グラフィックス処理の場合には、ソースデータ、具体的には色データ(RGB)および混合値データ(A)、並びに奥行きデータ(Z)と、キャッシュからのデスティネーション色データ(RGB)および混合値データ(A)、並びに奥行きデータ(Z)に基づいて、αブレンディング、各種テスト、ロジカルオペレーションといったグラフィックス処理のピクセル書き込みに必要な演算を行い、演算結果をキャッシュに書き戻す。
また、ライトユニットWUは、画像処理の場合には、演算ユニットOPUによる演算結果のデータを、たとえば直接的に入力したデスティネーションアドレスに、キャッシュを介してEDRAM404に格納する。
以下、本第2の実施形態の特徴である演算処理部としてのコア部401におけるOPUブロックにおける動的再構成(リコンフィギュラブル)の処理、フィルタリングの概要、並列演算処理等について、図45A,図45B〜図56に関連付けて順を追って説明する。
リコンフィギュラブルの演算処理について、まず、図45A,図45Bに関連付けて説明する。
この例では、図45Aの演算ユニットOPU2,OPU3が、図45Bのツリーの上段の2つの演算(ここでは乗算)に対応する演算を行う。
この例において、クロスバー回路4024内のスイッチおよび演算ユニットOPU内のセレクタを切り替えて図45Aに示すようなデータ転送経路を確立する。
この場合、SRAMキャッシュ403からツリーへの入力に対応する2つのデータがそれぞれ読み出され、クロスバー回路4024を介し、さらに各演算ユニットOPU2,OPU3のストリームレジスタSR1,SR2を通して各演算パイプ501に供給される。各演算ユニットOPU2,OPU3の各演算パイプ501では、乗算が行われる。
演算ユニットOPU2の演算結果は、セレクタ503を介し、ストリームレジスタSR1を介して、演算ユニットOPU1に入力される。演算ユニットOPU1では、この入力データがセレクタ502で選択されて演算パイプ501に供給される。
演算ユニットOPU3の演算結果は、セレクタ504を介し、ストリームレジスタSR2を介して、さらにクロスバー回路4024を介して演算ユニットOPU1に入力される。演算ユニットOPU1では、この入力データがストリームレジスタSR2を介して演算パイプ501に供給される。
演算ユニットOPU1には、SRAM403から読み出されたデータがクロスバー回路4024を介して入力され、ストリームレジスタSR1を介して演算パイプ501に供給される。そして、演算ユニットOPU1の演算パイプ501では、ツリーの下段の演算(ここでは加算)に対応する演算が行われる。すなわち、演算ユニットOPU2,OPU3の乗算結果と、EDRAM404からの読み出しデータの加算が行われ、その結果が、セレクタ504、さらにストリームレジスタSR2を介し、クロスバー回路4024を通さずにEDRAM404に格納される。
また、図46および図47は、コンボリューションフィルタリング処理についての説明図である。
コンボリューションフィルタリング処理は、基本的には、図46に示すように、フィルタ係数行列IM1の各要素であるフィルタ係数COFを演算ユニットに供給する。
また、EDRAM404の演算の対象となる画像領域ARから(直下のメモリ)から画素値を読み出す(図中1で示す)。以下後続する2〜4で示す画素値を読み出し、シフトインして演算ユニットOPUに供給する。この場合、カーネルサイズ−1個のデータをシフトインすれば1ライン分の計算が完了する。
図47は、2つの演算ユニットOPU1,OPU2を用いた場合の例である。基本的には図46の場合と同様であるが、演算ユニットPOU2では、1画素ずれた位置での計算を行う。
演算ユニットOPUが3個以上の場合も1画素ずつずれた位置で演算を実行することになる。
次に、コンボリューションフィルタリング処理に対応した並列演算の例について図48A、図48B、図49に関連付けて説明する。この例では、演算ユニットはOPU1〜OPU6の6個を例として示している。
この例においても、クロスバー回路4024内のスイッチおよび演算ユニットOPU内のセレクタを切り替えて図48A,図48B,および図49に示すようなデータ転送経路を確立する。
並列演算の場合には、図48Aに示すように、EDRAM404(あるいはSRAMキャッシュ)の各演算ユニットOPU1〜OPU6の直下の位置にあるメモリ上の画像データがクロスバー回路4024を介して一度に読み出される(図中、太線の矢印)。各演算ユニットOPU1〜OPU6では、ストリームレジスタSR1を介して演算パイプ501に読み出しデータが供給される。
また、メモリからフィルタ係数データが読み出され、クロスバー回路4024を介して所望の演算ユニットOPU1〜OPU6に供給される。各演算ユニットOPU1〜OPU6では、ストリームレジスタSR2を介して演算パイプ501に係数データが供給される。
各演算ユニットOPU1〜OPU6では、所望の演算が行われた後、図48Bに示すように、演算ユニットOPU6側からOPU1に向かって順に、セレクタ503、ストリームレジスタSR1、および隣接ユニットのセレクタ502を介してソースフォワーディングされ、OPUブロック全体で画像データがシフトされる。
メモリから継続する画像データおよびフィルタ係数が読み出され、クロスバー回路4024を介して所望の演算ユニットOPU1〜OPU6に供給される。各演算ユニットOPU1〜OPU6では、ストリームレジスタSR2を介して演算パイプ501に係数等のデータが供給される。
図49は、以下の演算を行う場合の並列演算処理を示している。
H(n)=(2×P(2n+1)−(P(2n)+P(2n+2)))/2
L(n)=(4×P(2n)+H(n−1)+(H(n)))/4
この場合には、図49に示すように、たとえばEDRAM404(あるいはSRAMキャッシュ)の画像データP(2n−1),P(2n),P(2n+1),P(2n+2),P(2n+3),P(2n+4)がクロスバー回路4024を介して各演算ユニットOPU1〜OPU6に読み出される(図中、太線の矢印)。ただし、データP(2n)は、演算ユニットOPU2およびOPU3に供給される。
演算ユニットOPU4に入力されたデータP(2n+2)は、ストリームレジスタSR1を介して隣接の演算ユニットOPU3に供給され、セレクタ502を通して演算パイプ501に供給される。また、演算ユニットOPU3に入力されたデータP(2n)はストリームレジスタSR1を介して演算パイプ501に供給され、データP(2n+1)はストリームレジスタSR2を介して演算パイプ501に供給される。
演算ユニットOPU3の演算パイプ501では、データP(2n+1)を2倍する第1の演算と、データP(2n)とP(2n+2)とを加算する第2の演算が行われ、第1の演算結果2×P(2n+1)から第2の演算結果(P(2n)+P(2n+2)を減算する第3の演算が行われる。そして、第4の演算として右シフタにて1ビットシフトして第3の演算結果が2分の1されてH(n)が求められる。
演算ユニットOPU3の演算結果は、セレクタ503を介し、ストリームレジスタSR1を介して、演算ユニットOPU2に入力される。演算ユニットOPU2では、この入力データがセレクタ502で選択されて演算パイプ501に供給される。また、演算ユニットOPU2に入力されたデータP(2n)はストリームレジスタSR1を介して演算パイプ501に供給される。また、演算ユニットOPU1の演算結果であるH(n−1)がクロスバー回路2042を介して演算ユニットOPU2に入力され、ストリームレジスタSR2を介して演算演算パイプ501に供給される。
演算ユニットOPU2の演算パイプ501では、データP(2n)を4倍する第1の演算と、データH(n−1)とH(n)とを加算する第2の演算が行われ、第1の演算結果4×P(2n)と第2の演算結果(H(n−1)+H(n))を加算する第3の演算が行われる。そして、第4の演算として右シフタにて2ビットシフトして第3の演算結果が4分の1されてL(n)が求められる。
次に、演算ユニット群が担当する演算対象を固定化してグラフィックス処理を行う場合の例について説明する。
図50は、演算ユニット群が担当する演算対象を固定化してグラフィックス処理を行う場合のコア部の構成例を示す図である。
この例では、1つの第1のグラフィックスユニット401に対して4つのコア部402A〜402Dが並列に配置されている。そして、各コア部402A〜402Dの各々で、1ピクセルパイプを構成する。
各コア部402A〜402Dにおいては、第2のグラフィックスユニット4021−A〜4021−Dに対してそれぞれ、複数のOPUブロックを含む演算担当が固定化された演算ブロック(OPUs)4022A−1〜4022A−4、4022B−1〜4022B−4、4022C−1〜4022C−4、4022D−1〜4022D−4が並列に配置されている。
なお、以下では、コア部402Aを例に説明する。
図50の例では、コア部402Aに配置された4つの演算部ブロック4022A−1〜4022A−4のうち、演算ブロック4022A−2,4022A−3の2つが色計算担当として固定化され、演算ブロック4022A−1,4022A−4の2つがフィルタ担当として固定化されている。
このように担当を固定化することで、第2のグラフィックスユニット4021内のデータ転送経路を固定化でき、回路量を最低限にすることができる。すなわち、固定化することで、各種グラフィックスデータを各OPUブロックに適時分配する必要がなく、回路が簡単化できる。
以下、色計算担当の演算ブロック4022A−2,4022A−3とフィルタ担当の演算ブロック4022A−1,4022A−4の処理例を図51〜図56に関連付けて説明する。なお、以下の説明では、各演算ブロックは、8個の演算ユニットOPU1〜OPU8により構成されているものとする。
まず、色計算担当の演算ブロック4022A−2(4022A−3)について図51〜図54に関連付けて説明する。
色計算担当の演算ブロック4022A−2(4022A−3)においては、概念的には、図51に示すように、テクスチャデータT.r,g、T.b,aが所定の演算ユニット、たとえばOPU7,OPU8に供給されるとともに、DDA入力としてプライマリカラー(PC)、セカンダリカラー(SC)、アンビエント(Ambient)、拡散係数、スペキュラ係数、シャイニネ係数、テクスチャ座標、ライトベクトル、ハーフベクトル等の各種データが所望の演算ユニットOPU1〜OPU6供給される。そして、色計算結果P.r,gおよびP.b,aがライトユニットWUに転送される。
図52および図53は色計算演算ブロックにおける具体的な処理例について説明するための図である。
色計算演算ブロックにおいては、ライトマップ(light map)から得られるライトベクトルと、法線マップから得られる法線ベクトルの内積を求め(図52)、求めた内積にプライマリカラーを乗算してピクセルの色P.r,gおよびP.b,aを求める(図53)。
この例においても、クロスバー回路4024内のスイッチおよび演算ユニットOPU内のセレクタを切り替えて図52および図53に示すようなデータ転送経路を確立する。
具体的には、図52に示すように、法線マップデータtex(nmap).xがクロスバー回路2024を介して演算ユニットOPU8に入力され、法線マップデータtex(nmap).yがクロスバー回路2024を介して演算ユニットOPU7に入力され、法線マップデータtex(nmap).zがクロスバー回路2024を介して演算ユニットOPU6に入力される。
また、ライトデータtex(light).xがクロスバー回路2024を介して演算ユニットOPU8に入力され、ライトデータtex(light).yがクロスバー回路2024を介して演算ユニットOPU7に入力され、ライトデータtex(light).zがクロスバー回路2024を介して演算ユニットOPU6に入力される。
演算ユニットOPU8に入力された法線マップデータtex(nmap).xは、ストリームレジスタSR2を介して演算パイプ501に供給され、ライトデータtex(light).xはストリームレジスタSR1を介して演算パイプ501に供給される。
演算ユニットOPU8の演算パイプ501では、法線マップデータtex(nmap).xとライトデータtex(light).xとが乗算される。演算ユニットOPU8の演算結果〔tex(nmap).x×tex(light).x〕は、セレクタ503を介し、ストリームレジスタSR1を介して、演算ユニットOPU7に入力される。演算ユニットOPU7では、この入力データがセレクタ502で選択されて演算パイプ501に供給される。また、演算ユニットOPU7に入力された法線マップデータtex(nmap).yは、ストリームレジスタSR2を介して演算パイプ501に供給され、ライトデータtex(light).yはストリームレジスタSR1を介して演算パイプ501に供給される。
演算ユニットOPU7の演算パイプ501では、法線マップデータtex(nmap).yとライトデータtex(light).yとを乗算する第1の演算が行われ、第1の演算結果〔tex(nmap).y×tex(light).y〕とフォワードインデータ〔tex(nmap).x×tex(light).x〕を加算する第2の演算が行われる。演算ユニットOPU7の演算結果〔tex(nmap).x×tex(light).x+tex(nmap).y×tex(light).y〕は、セレクタ503を介し、ストリームレジスタSR1を介して、演算ユニットOPU6に入力される。演算ユニットOPU6では、この入力データがセレクタ502で選択されて演算パイプ501に供給される。また、演算ユニットOPU6に入力された法線マップデータtex(nmap).zは、ストリームレジスタSR2を介して演算パイプ501に供給され、ライトデータtex(light).zはストリームレジスタSR1を介して演算パイプ501に供給される。
演算ユニットOPU6の演算パイプ501では、法線マップデータtex(nmap).zとライトデータtex(light).zとを乗算する第1の演算が行われ、第1の演算結果〔tex(nmap).z×tex(light).z〕とフォワードインデータ〔tex(nmap).x×tex(light).x+tex(nmap).y×tex(light).y〕を加算する第2の演算が行われる。演算ユニットOPU7の演算結果〔tex(nmap).x×ライトデータtex(light).x+tex(nmap).y×ライトデータtex(light).y+tex(nmap).z×tex(light).y〕z〕、すなわちライトベクトルと法線ベクトルの内積値は、セレクタ504を介し、ストリームレジスタSR2を介して、さらにクロスバー回路4024を通して図53に示すように、演算ユニットOPU1およびOPU2に供給される。
そして、演算ユニットOPU1においては、プライマリカラーPC.r,gがセレクタ502を介して演算パイプ501に供給され、内積値がストリームレジスタSR2を介して演算パイプ501に供給される。そして、演算パイプ501において、プライマリカラーPC.r,gと内積値とが乗算されて色データP.r,gが求められ、セレクタ503、ストリームレジスタSR1を介して第2のグラフィックスユニット4021−AのライトユニットWUに転送される。
演算ユニットOPU2においては、プライマリカラーPC.b,aがセレクタ502を介して演算パイプ501に供給され、内積値がストリームレジスタSR2を介して演算パイプ501に供給される。そして、演算パイプ501において、プライマリカラーPC.b,aと内積値とが乗算されて色データP.b,aが求められ、セレクタ503、ストリームレジスタSR1を介して第2のグラフィックスユニット4021−AのライトユニットWUに転送される。
また、図54は、単純にプライマリカラーとテクスチャをブレンドする場合の演算処理例を示す図である。
この例においても、クロスバー回路4024内のスイッチおよび演算ユニットOPU内のセレクタを切り替えて図54に示すようなデータ転送経路を確立する。
この場合、演算ユニットOPU5〜OPU8で計算が行われる。演算ユニットOPU5〜OPU8には共通にテクスチャデータTex.b,aが供給され、演算ユニットOPU8にプライマリカラーPC.b,aが供給され、演算ユニットOPU6にプライマリカラーPC.r,gが供給され、演算ユニットOPU5にはテクスチャデータTex.r,gが供給される。
演算ユニットOPU8の演算パイプ501における演算結果Pc.b×(1−Tex.a)=out.bおよびPc.a×(1−Tex.a)=out.aが演算ユニットOPU7にフォワードインデータとして供給される。
演算ユニットOPU7の演算パイプ501において、ブレンド後の色データPb,a、具体的には、〔Tex.b×Tex.a+out.b〕および〔Tex.a×Tex.a+out.a〕が第2のグラフィックスユニット4021−AのライトユニットWUに転送される。
また、演算ユニットOPU6の演算パイプ501における演算結果Pc.r×(1−Tex.a)=out.rおよびPc.g×(1−Tex.a)=out.gが演算ユニットOPU5にフォワードインデータとして供給される。
演算ユニットOPU5の演算パイプ501において、ブレンド後の色データPr,g、具体的には、〔Tex.r×Tex.a+out.r〕および〔Tex.g×Tex.a+out.g〕が第2のグラフィックスユニット4021−AのライトユニットWUに転送される。
次に、フィルタ担当の演算ブロック4022A−1(4022A−4)について図55,図56に関連付けて説明する。
色計算担当の演算ブロック4022A−1(4022A−4)においては、図55に示すように、色計算データP.r,gおよびP.b,aがライトユニットWUに供給される。また、ライトユニットWUにはフレームバッファから読み出した画素値が供給される。図55の例では、演算ユニットOPU1,OPU2は使用されない。
演算ユニットOPU8にデータT3.b,a、T4.b,aおよび係数Vfが供給され、演算ユニットOPU7にデータT1.b,a、T2.b,a、および係数Ufが供給され、演算ユニットOPU8の演算結果と演算ユニットOPU7の演算結果が演算ユニットOPU6に供給される。演算ユニットOPU6では、係数Ufおよび演算ユニットOPU8,OPU7の演算結果に基づいてテクスチャデータT.b,aが計算される。
また、演算ユニットOPU5にデータT3.r,g、T4.r,gおよび係数Vfが供給され、演算ユニットOPU4にデータT1.r,g、T2.r,g、および係数Ufが供給され、演算ユニットOPU5の演算結果と演算ユニットOPU4の演算結果が演算ユニットOPU3に供給される。演算ユニットOPU3では、係数Ufおよび演算ユニットOPU5,OPU4の演算結果に基づいてテクスチャデータT.r,gが計算される。
また、ライトユニットWUは、フレームバッファから読み出した画素値と色計算データP.r,gおよびP.b,aとのブレンド処理を行う。そして、色データおよび混合値データ(a)、並びに奥行きデータ(Z)に基づいて、αブレンディング、Zテスト、ステンシルテストを行い、テストをパスした場合にフレームバッファにピクセル値を書き込む。
図56は、フィルタ処理演算ブロックにおける具体的な処理例について説明するための図である。
この例は、4近傍フィルタリング処理を行う場合である。なお、ここでは、演算ユニットOPU6〜OPU8の処理について説明する。演算ユニットOPU3〜OPU5の処理については、演算ユニットOPU6〜OPU8と同様に行われることからその説明は省略する。
この例においても、クロスバー回路4024内のスイッチおよび演算ユニットOPU内のセレクタを切り替えて図56に示すようなデータ転送経路を確立する。
上述したように、演算ユニットOPU8には、データT3.b,a、T4.b,aがクロスバー回路4024を介して供給され、係数Vfが供給される。データT3.b,aはストリームレジスタSR1を介して演算パイプ501に供給され、データT4.b,aはストリームレジスタSR2を介して演算パイプ501に供給され、係数Vfはセレクタ502を介して演算パイプ501に供給される。
演算ユニットOPU8の演算パイプ501においては、データT3.b,aからT4.b,aを減算する第1の演算が行われ、この減算結果〔T3.b,a−T4.b,a〕に対して係数Vfを乗算する第2の演算が行われ、さらにこの乗算結果〔(T3.b,a−T4.b,a)×Vf〕にT4.b,aが加算する第3の演算が行われる。そして、この演算結果〔(T3.b,a−T4.b,a)×Vf+T4.b,a〕=out2.b,aがセレクタ504、ストリームレジスタSR2を介し、さらにクロスバー回路4024を介して演算ユニットOPU6に供給される。
演算ユニットOPU7には、データT1.b,a、T2.b,aがクロスバー回路4024を介して供給され、係数Vfが供給される。データT1.b,aはストリームレジスタSR1を介して演算パイプ501に供給され、データT2.b,aはストリームレジスタSR2を介して演算パイプ501に供給され、係数Vfはセレクタ502を介して演算パイプ501に供給される。
演算ユニットOPU7の演算パイプ501においては、データT1.b,aからT2.b,aを減算する第1の演算が行われ、この減算結果〔T1.b,a−T2.b,a〕に対して係数Vfを乗算する第2の演算が行われ、さらにこの乗算結果〔(T1.b,a−T2.b,a)×Vf〕にT2.b,aが加算する第3の演算が行われる。そして、この演算結果〔(T1.b,a−T2.b,a)×Vf+T2.b,a〕=out1.b,aがセレクタ504、ストリームレジスタSR2を介し、さらにクロスバー回路4024を介して演算ユニットOPU6に供給される。
演算ユニットOPU6においては、演算結果out1.b,aがストリームレジスタSR1を介して演算パイプ501に供給され、演算結果out2.b,aがストリームレジスタSR2を介して演算パイプ501に供給され、セレクタ501を介して係数Ufが供給される。
演算ユニットOPU6の演算パイプ501においては、演算結果データout1.b,aからout2.b,aを減算する第1の演算が行われ、この減算結果〔out1.b,a−out2.b,a〕に対して係数Ufを乗算する第2の演算が行われ、さらにこの乗算結果〔(out1.b,a−out2.b,a)×Uf〕にout2.b,aを加算する第3の演算が行われる。そして、この演算結果〔(out1.b,a−out2.b,a)×Uf〕+out2.b,a〕=T.b,aがセレクタ503、ストリームレジスタSR1を介して第2のグラフィックスユニット4021−Aに転送される。
以上のように、本第2の実施形態に係る画像処理装置によれば、大量の演算器を効率よく利用することが可能で、アルゴリズムの自由度が高く、柔軟性が高く、しかも回路規模の増大、コスト増を招くことなく、複雑な処理を高スループットで処理することができる。
また、コア部402は、分岐のないデータフローグラフで表現されるアルゴリズムを実行し、DFGのノードとエッジは、演算器や演算ユニットとその接続関係と見ることができることができる。したがって、コア部は、実行するDFGに応じて、演算リソース間の接続を動的に切り替える、いわゆる動的再構成可能なハードウェアであり、演算器で実行する機能やそれらの接続関係が処理ユニットのマイクロプログラムに相当し、ストリームデータの各要素に適用されるDFGは同じであるので、命令発行のバンド幅を低くおさえることができる。
また、コア部402は、演算機能の指定や演算器間接続の切り替え制御は、データドリブンであり、分散自立型制御といえる。
このような動的スケジューリングを採用することにより、DFGが切り替わる際に、エピローグ/プロローグのオーバーラップが可能であり、DFGの切り替えのオーバーヘッドを低減することができる。
また、DFGの規模が大きくなるとアルゴリズムを内部演算リソースに一度にマッピングすることができなくなる。このような場合には、複数のサブDFG(sub−DFG)に分割する必要がある。
複数のサブDFGに分けて実行する方法として、サブDFG間の中間値をメモリに格納するマルチパス手法があげられる。この方法では、パス数が増大するとメモリバンド幅を消費し性能低下を招く。
コア部は、前述するように演算器や演算ユニット間のストリームデータの受け渡しをFIFO型のストリームレジスタを介して行うことから、DFG分割実行時に、このレジスタファイルを介して中間値を渡すことが可能で、マルチパスの回数を低減することができる。
DFGの分割そのものは、コンパイラにより静的に行われるが、分割されたDFGの実行制御はハードウエアが行うのでソフトウエアへの負担が軽いという利点がある。
産業上の利用可能性
本発明に係る演算装置および画像処理装置は、各種の演算に対応でき、かつ開発時点で想定されていなかった演算方式にも容易に対応できる、かつ、3次元グラフィックスにおいて、実時間での描画に十分な描画能力を発揮することができることから、たとえばグラフィックス処理機能および画像処理機能を有し、複数の処理データを共有して並列処理を行う画像処理システム等に適用可能である。
【図面の簡単な説明】
図1は、3次元コンピュータグラフィックスシステムの基本的な概念を示すシステム構成図である。
図2は、本発明に係る3次元コンピュータグラフィックスシステムの構成を示すブロック図である。
図3は、本発明に係る演算装置を適用した3次元グラフィックス描画装置の基本的な構成を示すブロック図である。
図4は、本発明に係る演算装置の構成例を示すブロック図である。
図5は、本発明に係る接続回路網CCNの第1の構成例を示す図である。
図6は、本発明に係るセレクタの構成例を示す図である。
図7は、本発明に係る接続回路網CCNの第2の構成例を示す図である。
図8は、本発明に係る接続回路網CCNの第3の構成例を示す図である。
図9は、本発明に係るセレクタの他の構成例を示す図である。
図10は、本発明に係るセレクタの他の構成例を示す図である。
図11は、本発明に係る接続回路網CCNの第4の構成例を示す図である。
図12は、本発明に係る演算装置の演算実行の概略についての説明図であって、演算のデータフローグラフを示す図である。
図13は、本発明に係る演算装置の演算実行の概略についての説明図である。
図14は、本発明に係る演算装置のパイプライン処理の説明図である。
図15は、本発明に係る演算装置の動的再構築の第1の実現方法について説明するための図である。
図16は、本発明に係る演算装置の動的再構築の第1の実現方法について説明するための図である。
図17は、本発明に係る演算装置の動的再構築の第2の実現方法について説明するための図である。
図18は、本発明に係る演算装置の動的再構築の第2の実現方法について説明するための図である。
図19は、本発明に係る演算装置の動的再構築の第2の実現方法について説明するための図である。
図20は、本発明に係る演算装置において拡散による画素色への寄与成分を形成する場合の動作を説明するための図である。
図21は、本発明に係る演算装置において拡散による画素色への寄与成分を形成する場合の動作を説明するための図である。
図22は、図7の接続回路網を例とした演算装置の動的再構築の第1の具体例を説明するための図である。
図23は、図7の接続回路網を例とした演算装置の動的再構築の第2の具体例を説明するための図である。
図24は、本発明に係るデータ格納方法を説明するための図である。
図25は、本発明に係る同一半導体チップ内に混載されるレンダリング回路のロジック回路とDRAMおよび2次メモリとの好適な構成、配置および配線方法を説明するための図である。
図26は、本発明に係るDRAMモジュールの構成例を説明するするための図である。
図27は、本発明に係るDDAセットアップ回路の機能を説明するための図である。
図28は、本発明に係るトライアングルDDA回路の機能を説明するための図である。
図29は、本発明に係るトライアングルDDA回路の頂点のソート処理を説明するための図である。
図30は、本発明に係るトライアングルDDA回路の水平方向の傾き算出処理を説明するための図である。
図31A,図31Bは、本発明に係るトライアングルDDA回路の頂点データの補間手順を説明するための図である。
図32は、本発明に係るトライアングルDDA回路の頂点データの補間手順を説明するためのフローチャートである。
図33は、本発明に係る演算装置を採用可能な画像処理装置の第2の実施形態を示すブロック構成図である。
図34は、本発明に係るコア部の具体的な構成例を説明するための図である。
図35は、第2の実施形態に係る演算ユニット群の演算ユニットの具体的な構成例を示す回路図である。
図36は、各種演算処理を行う演算パイプの具体的な構成例を示す回路図である。
図37は、ストリームレジスタSRの具体的な構成例を示す図である。
図38A,図38Bは、ストリームレジスタの動作を説明するための図である。
図39は、クロスバー回路の構成例を示す回路図である。
図40は、第1のデータ選択回路の構成例を示す回路図である。
図41は、第2のデータ選択回路の構成例を示す回路図である。
図42は、クロスバー回路を制御して、各入力データを適切な演算ユニットの入力へと伝播させる一例を示す図である。
図43は、キャッシュの構成、機能を説明するための図であって、リード系を示し図である。
図44は、キャッシュの構成、機能を説明するための図であって、ライト系を示し図である。
図45A,図45Bは、リコンフィギュラブルの演算処理について説明するための図である。
図46は、コンボリューションフィルタリング処理についての説明図である。
図47は、コンボリューションフィルタリング処理についての説明図であって、1画素ずれた位置での計算を行う場合を説明するための図である。
図48A、図48Bは、コンボリューションフィルタリング処理に対応した並列演算の例について説明するための図である。
図49は、コンボリューションフィルタリング処理に対応した並列演算のさらに具体的な例について説明するための図である。
図50は、演算ユニット群が担当する演算対象を固定化してグラフィックス処理を行う場合のコア部の構成例を示す図である。
図51は、色計算担当の演算ブロックの演算処理を説明するための図である。
図52は、色計算担当の演算ブロックの具体的な演算処理を説明するための図である。
図53は、色計算担当の演算ブロックの具体的な演算処理を説明するための図である。
図54は、色計算担当の演算ブロックの具体的な演算処理の他の例を説明するための図である。
図55は、フィルタ担当の演算ブロックの演算処理を説明するための図である。
図56が、フィルタ担当の演算ブロックの具体的な演算処理を説明するための図である。
符号の説明
10…画像処理装置
11…メインプロセッサ
12…メインメモリ
13…I/Oインターフェース回路
14…レンダリング回路
141…DDAセットアップ回路
142…トライアングルDDA回路
143…テクスチャエンジン回路
144…メモリI/F回路
145…CRTコントローラ回路
146…RAMDAC回路
147…DRAM
1471〜1478…DRAMモジュール
147a…テクスチャバッファ
147b…ディスプレイバッファ
147c…zバッファ
147d…テクスチャCLUTバッファ
148…SRAM
1441〜1444…メモリコントローラ
1445…ディストリビュータ
1446〜1449…ピクセル処理モジュール
1450…DRAM間制御モジュール
1471〜1474…DRAMモジュール
1480…DRAMコア
1481…ロウデコーダ
1482…センスアンプ
1483…カラムデコーダ
1484…2次メモリ
200…ロジック部
201…演算装置
202…制御回路
203…メモリ
2012…レジスタファイル
2012…演算器プール
20121〜20124…演算部
CCN…接続回路網
OP1〜OP8…演算部
SLC…セレクタ
301,302…制御回路
400…画像処理装置
401…第1のグラフィックスユニット(処理ユニット)
402,402A〜402D…コア部
403−1〜403−m…キャッシュ
404…EDRAM
4021…第2のグラフィックスユニット
4022−1〜4022−m…演算ユニット群
4023−1〜4023−m…ストリームレジスタ群
4024−1〜4024−m…クロスバー回路

Claims (56)

  1. 複数の演算器を有する演算装置であって、
    制御信号に応じて再構成可能なデータパスを複数有し、上記演算器を、電気的な接続網で接続し、複数個の演算器間の電気的接続を確立して複数の演算器からなる演算回路を構成する接続回路網
    を有する演算装置。
  2. 上記接続回路網は、制御信号を受けて連続してデータを入力し、ツリー状のデータフローグラフで表現される演算を実行可能な演算回路を構成する
    請求項1記載の演算装置。
  3. 上記接続回路網は、データバス上の所望の位置にセレクタを有し、2n本の入力データバスがある場合、n−2個の演算器は、入力データバス一対と、前段の演算器の出力をセレクタで選択して自段の演算器に入力するように演算回路を構成する
    請求項1記載の演算装置。
  4. 上記接続回路網は、上記n個以外の少なくとも1個の演算器は、2n−n本の入力データバスのデータすべてと、前段の出力を選択して自段の演算器に入力するように演算回路を構成する
    請求項3記載の演算装置。
  5. 再構成可能な上記データバスを使用してパイプライン処理を行う際に、制御信号を受けて演算器間の電気的接続を変更することが可能な制御回路
    を有する請求項1記載の演算装置。
  6. 上記制御回路は、個々の演算器および接続網の個々の接続点に対応してそれぞれ設けられ、各制御回路は、次に行うべき演算に関する情報を保持し、一連の演算の終了を検出した際に、自動的に次の演算に向けた制御に切り替える
    請求項5記載の演算装置。
  7. 上記制御回路、接続網の個々の接続点に対応して設けられ、各制御回路は、次にとるべき接続構成に関する情報を保持し、一連のデータ転送の終了を検出した際に、自動的に接続点の制御を切り替える
    請求項5記載の演算装置。
  8. 上記制御回路は、個々の演算器および接続網の個々の接続点に対応してそれぞれ設けられ、各演算器に対応して設けたれた各制御回路は、次に行うべき演算に関する情報を保持し、一連の演算の終了を検出した際に、自動的に次の演算に向けた制御に切り替え、
    接続網の個々の接続点に対応して設けられた各制御回路は、次にとるべき接続構成に関する情報を保持し、一連のデータ転送の終了を検出した際に、自動的に接続点を制御の切り替える
    請求項5記載の演算装置。
  9. 上記制御回路は、現在の制御情報(現制御情報)と、次に行うべき制御に関する情報(次制御情報)の2つを保持し、
    演算データは、当該演算データが演算に使用する最終データであることが識別可能な制御信号と同期して送られ、
    上記制御回路は、最終データであることが識別された場合、現在実行中の演算が完了すると、現制御情報を次制御情報で書き換える
    請求項5記載の演算装置。
  10. 上記制御回路は、現在の制御情報(現制御情報)と現在実行中の演算を識別するための情報(現識別情報)と、次に行うべき制御に関する情報(次制御情報)と、次に実行する演算を識別するための情報(次識別情報)を保持し、
    演算データは、当該演算データが演算に使用する最終データであることが識別可能な情報、およびそのデータが一の演算処理に対するものか、他の演算処理に対するものかを識別可能な情報を示す制御信号と同期して送られ、
    上記制御回路は、送られてきたデータが、最終データであり、かつ現識別情報で示される演算に対するものであることが識別された場合、現在実行中の演算が完了すると、現制御情報、現識別情報をそれぞれ次制御情報、次識別情報で書き換える
    請求項5記載の演算装置。
  11. 入力されるデータは、少なくとも描画する対象の表面に関する情報、表面にあたる光に関する情報、過去の演算結果のいずれかである
    請求項1記載の演算装置。
  12. 入力されるデータは、少なくとも描画する対象の表面に関する情報、表面にあたる光に関する情報、過去の演算結果のいずれかである
    請求項5記載の演算装置。
  13. レジスタファイルと、
    演算器プールとを有し、
    上記演算器プールは、データバスによりレジスタファイルとのデータの授受を行う少なくとも一つの演算部を有し、
    上記演算部は、複数の演算器と、制御信号に応じて再構成可能なデータパスを複数有し、上記演算器を、電気的な接続網で接続し、複数個の演算器間の電気的接続を確立して複数の演算器からなる演算回路を構成する接続回路網とを含む
    演算装置。
  14. 上記接続回路網は、制御信号を受けて連続してデータを入力し、ツリー状のデータフローグラフで表現される演算を実行可能な演算回路を構成する
    請求項13記載の演算装置。
  15. 上記接続回路網は、データバス上の所望の位置にセレクタを有し、2n本の入力データバスがある場合、n−2個の演算器は、入力データバス一対と、前段の演算器の出力をセレクタで選択して自段の演算器に入力するように演算回路を構成する
    請求項13記載の演算装置。
  16. 上記接続回路網は、上記n個以外の少なくとも1個の演算器は、入力データすべてと、前段の出力を選択して次段の演算器に入力するように演算回路を構成する
    請求項13記載の演算装置。
  17. 再構成可能な上記データバスを使用してパイプライン処理を行う際に、制御信号を受けて演算器間の電気的接続を変更することが可能な制御回路
    を有する請求項13記載の演算装置。
  18. 上記制御回路は、個々の演算器および接続網の個々の接続点に対応してそれぞれ設けられ、各制御回路は、次に行うべき演算に関する情報を保持し、一連の演算の終了を検出した際に、自動的に次の演算に向けた制御に切り替える
    請求項17記載の演算装置。
  19. 記制御回路、接続網の個々の接続点に対応して設けられ、各制御回路は、次にとるべき接続構成に関する情報を保持し、一連のデータ転送の終了を検出した際に、自動的に接続点の制御を切り替える
    請求項17記載の演算装置。
  20. 上記制御回路は、個々の演算器および接続網の個々の接続点に対応してそれぞれ設けられ、各演算器に対応して設けたれた各制御回路は、次に行うべき演算に関する情報を保持し、一連の演算の終了を検出した際に、自動的に次の演算に向けた制御に切り替え、
    接続網の個々の接続点に対応して設けられた各制御回路は、次にとるべき接続構成に関する情報を保持し、一連のデータ転送の終了を検出した際に、自動的に接続点の制御を切り替える
    請求項17記載の演算装置。
  21. 上記制御回路は、現在の制御情報(現制御情報)と、次に行うべき制御に関する情報(次制御情報)の2つを保持し、
    演算データは、当該演算データが演算に使用する最終データであることが識別可能な制御信号と同期して送られ、
    上記制御回路は、最終データであることが識別された場合、現在実行中の演算が完了すると、現制御情報を次制御情報で書き換える
    請求項17記載の演算装置。
  22. 上記制御回路は、現在の制御情報(現制御情報)と現在実行中の演算を識別するための情報(現識別情報)と、次に行うべき制御に関する情報(次制御情報)と、次に実行する演算を識別するための情報(次識別情報)を保持し、
    演算データは、当該演算データが演算に使用する最終データであることが識別可能な情報、およびそのデータが一の演算処理に対するものか、他の演算処理に対するものかを識別可能な情報を示す制御信号と同期して送られ、
    上記制御回路は、送られてきたデータが、最終データであり、かつ現識別情報で示される演算に対するものであることが識別された場合、現在実行中の演算が完了すると、現制御情報、現識別情報をそれぞれ次制御情報、次識別情報で書き換える
    請求項17記載の演算装置。
  23. 入力されるデータは、少なくとも描画する対象の表面に関する情報、表面にあたる光に関する情報、過去の演算結果のいずれかである
    請求項13記載の演算装置。
  24. 入力されるデータは、少なくとも描画する対象の表面に関する情報、表面にあたる光に関する情報、過去の演算結果のいずれかである
    請求項17記載の演算装置。
  25. 複数の演算ユニットと、
    上記複数の演算ユニット間を所望の形態で相互に接続するクロスバー回路と、を有し、
    上記複数の演算ユニットの各々は、
    入力データに対して所望の演算を行う演算パイプと、
    隣接する演算ユニットの演算結果データまたは外部からの供給データのうちの一方を選択し、上記演算パイプに入力させるセレクタと、
    上記クロスバー回路を通して供給されたデータを上記演算パイプに入力させ、当該演算パイプの演算結果を隣接の演算ユニットに転送するストリームレジスタと、
    を少なくとも有する演算装置。
  26. 上記演算ユニットは、上記クロスバー回路を通して供給されたデータを上記演算パイプに入力させ、当該演算パイプの演算結果を上記クロスバー回路に転送する第2のストリームレジスタを含む
    請求項25記載の演算装置。
  27. 上記演算ユニットに入力されるデータは、グラフィックス処理に関するデータまたは画像処理に関するデータである
    請求項25記載の演算装置。
  28. 上記演算ユニットに入力されるデータは、グラフィックス処理に関するデータまたは画像処理に関するデータである
    請求項26記載の演算装置。
  29. 少なくとも画像データを記憶する記憶回路と、
    上記記憶回路の記憶データに基づいて、画像データに所定の処理を行うロジック回路と
    を有し、
    上記ロジック回路は、複数の演算器を有し、制御信号に応じて再構成可能なデータパスを複数有し、上記演算器を、電気的な接続網で接続し、複数個の演算器間の電気的接続を確立して複数の演算器からなる演算回路を構成する接続回路網を有する演算装置を含む
    画像処理装置。
  30. 上記接続回路網は、制御信号を受けて連続してデータを入力し、ツリー状のデータフローグラフで表現される演算を実行可能な演算回路を構成する
    請求項29記載の画像処理装置。
  31. 上記接続回路網は、データバス上の所望の位置にセレクタを有し、2n本の入力データバスがある場合、n−2個の演算器は、入力データバス一対と、前段の演算器の出力をセレクタで選択して自段の演算器に入力するように演算回路を構成する
    請求項29記載の画像処理装置。
  32. 上記接続回路網は、上記n個以外の少なくとも1個の演算器は、入力データすべてと、前段の出力を選択して自段の演算器に入力するように演算回路を構成する
    請求項31記載の画像処理装置。
  33. 再構成可能な上記データバスを使用してパイプライン処理を行う際に、制御信号を受けて演算器間の電気的接続を変更することが可能な制御回路
    を有する請求項29記載の演算装置。
  34. 上記制御回路は、個々の演算器および接続網の個々の接続点に対応してそれぞれ設けられ、各制御回路は、次に行うべき演算に関する情報を保持し、一連の演算の終了を検出した際に、自動的に次の演算に向けた制御に切り替える
    請求項33記載の演算装置。
  35. 上記制御回路、接続網の個々の接続点に対応して設けられ、各制御回路は、次にとるべき接続構成に関する情報を保持し、一連のデータ転送の終了を検出した際に、自動的に接続点の制御を切り替える
    請求項33記載の画像処理装置。
  36. 上記制御回路は、個々の演算器および接続網の個々の接続点に対応してそれぞれ設けられ、各演算器に対応して設けられた各制御回路は、次に行うべき演算に関する情報を保持し、一連の演算の終了を検出した際に、自動的に次の演算に向けた制御に切り替え、
    接続網の個々の接続点に対応して設けられた各制御回路は、次にとるべき接続構成に関する情報を保持し、一連のデータ転送の終了を検出した際に、自動的に接続点の制御を切り替える
    請求項33記載の画像処理装置。
  37. 上記制御回路は、現在の制御情報(現制御情報)と、次に行うべき制御に関する情報(次制御情報)の2つを保持し、
    演算データは、当該演算データが演算に使用する最終データであることが識別可能な制御信号と同期して送られ、
    上記制御回路は、最終データであることが識別された場合、現在実行中の演算が完了すると、現制御情報を次制御情報で書き換える
    請求項33記載の画像処理装置。
  38. 上記制御回路は、現在の制御情報(現制御情報)と現在実行中の演算を識別するための情報(現識別情報)と、次に行うべき制御に関する情報(次制御情報)と、次に実行する演算を識別するための情報(次識別情報)を保持し、
    演算データは、当該演算データが演算に使用する最終データであることが識別可能な情報、およびそのデータが一の演算処理に対するものか、他の演算処理に対するものかを識別可能な情報を示す制御信号と同期して送られ、
    上記制御回路は、送られてきたデータが、最終データであり、かつ現識別情報で示される演算に対するものであることが識別された場合、現在実行中の演算が完了すると、現制御情報、現識別情報をそれぞれ次制御情報、次識別情報で書き換える
    請求項33記載の画像処理装置。
  39. 入力されるデータは、少なくとも描画する対象の表面に関する情報、表面にあたる光に関する情報、過去の演算結果のいずれかである
    請求項29記載の画像処理装置。
  40. 入力されるデータは、少なくとも描画する対象の表面に関する情報、表面にあたる光に関する情報、過去の演算結果のいずれかである
    請求項33記載の画像処理装置。
  41. 少なくとも画像データを記憶する記憶回路と、
    上記記憶回路の記憶データに基づいて、画像データに所定の処理を行うロジック回路と
    を有し、
    上記ロジック回路は、レジスタファイルと、演算器プールとを有し、
    上記演算器プールは、データバスによりレジスタファイルとのデータの授受を行う少なくとも一つの演算部を有し、上記演算部は、複数の演算器と、制御信号に応じて再構成可能なデータパスを複数有し、上記演算器を、電気的な接続網で接続し、複数個の演算器間の電気的接続を確立して複数の演算器からなる演算回路を構成する接続回路網とを含む演算装置
    を有する画像処理装置。
  42. 上記接続回路網は、制御信号を受けて連続してデータを入力し、ツリー状のデータフローグラフで表現される演算を実行可能な演算回路を構成する
    請求項41記載の画像処理装置。
  43. 上記接続回路網は、データバス上の所望の位置にセレクタを有し、2n本の入力データバスがある場合、n−2個の演算器は、入力データバス一対と、前段の演算器の出力をセレクタで選択して自段の演算器に入力するように演算回路を構成する
    請求項41記載の画像処理装置。
  44. 上記接続回路網は、上記n個以外の少なくとも1個の演算器は、入力データすべてと、前段の出力を選択して自段の演算器に入力するように演算回路を構成する
    請求項43記載の画像処理装置。
  45. 再構成可能な上記データバスを使用してパイプライン処理を行う際に、制御信号を受けて演算器間の電気的接続を変更することが可能な制御回路
    を有する請求項31記載の演算装置。
  46. 上記制御回路は、個々の演算器および接続網の個々の接続点に対応してそれぞれ設けられ、各制御回路は、次に行うべき演算に関する情報を保持し、一連の演算の終了を検出した際に、自動的に次の演算に向けた制御に切り替える
    請求項45記載の演算装置。
  47. 上記制御回路、接続網の個々の接続点に対応して設けられ、各制御回路は、次にとるべき接続構成に関する情報を保持し、一連のデータ転送の終了を検出した際に、自動的に接続点の制御を切り替える
    請求項45記載の画像処理装置。
  48. 上記制御回路は、個々の演算器および接続網の個々の接続点に対応してそれぞれ設けられ、各演算器に対応して設けられた各制御回路は、次に行うべき演算に関する情報を保持し、一連の演算の終了を検出した際に、自動的に次の演算に向けた制御に切り替え、
    接続網の個々の接続点に対応して設けられた各制御回路は、次にとるべき接続構成に関する情報を保持し、一連のデータ転送の終了を検出した際に、自動的に接続点の制御を切り替える
    請求項45記載の画像処理装置。
  49. 上記制御回路は、現在の制御情報(現制御情報)と、次に行うべき制御に関する情報(次制御情報)の2つを保持し、
    演算データは、当該演算データが演算に使用する最終データであることが識別可能な制御信号と同期して送られ、
    上記制御回路は、最終データであることが識別された場合、現在実行中の演算が完了すると、現制御情報を次制御情報で書き換える
    請求項45記載の画像処理装置。
  50. 上記制御回路は、現在の制御情報(現制御情報)と現在実行中の演算を識別するための情報(現識別情報)と、次に行うべき制御に関する情報(次制御情報)と、次に実行する演算を識別するための情報(次識別情報)を保持し、
    演算データは、当該演算データが演算に使用する最終データであることが識別可能な情報、およびそのデータが一の演算処理に対するものか、他の演算処理に対するものかを識別可能な情報を示す制御信号と同期して送られ、
    上記制御回路は、送られてきたデータが、最終データであり、かつ現識別情報で示される演算に対するものであることが識別された場合、現在実行中の演算が完了すると、現制御情報、現識別情報をそれぞれ次制御情報、次識別情報で書き換える
    請求項45記載の画像処理装置。
  51. 入力されるデータは、少なくとも描画する対象の表面に関する情報、表面にあたる光に関する情報、過去の演算結果のいずれかである
    請求項41記載の画像処理装置。
  52. 入力されるデータは、少なくとも描画する対象の表面に関する情報、表面にあたる光に関する情報、過去の演算結果のいずれかである
    請求項45記載の画像処理装置。
  53. グラフィックス処理機能および画像処理機能を有する画像処理装置であって、
    画像に関するデータを記憶するメモリと、
    グラフィックス処理時には、少なくとも色に関するデータを含むグラフィックスピクセルデータを生成し、画像処理時には、少なくとも上記メモリに記憶されているデータを読み出すためのソースアドレスを生成する処理ユニットと、
    上記処理ユニットで生成されたデータに基づいて所定のグラフィックス処理または画像処理を行うコア部と、
    を有し、
    上記コア部は、
    複数の演算ユニットと、
    上記複数の演算ユニット間および上記メモリと演算ユニット間を所望の形態で相互に接続するクロスバー回路と、を有し、
    上記複数の演算ユニットの各々は、
    入力データに対して所望の演算を行う演算パイプと、
    隣接する演算ユニットの演算結果データまたは外部からの供給データのうちの一方を選択し、上記演算パイプに入力させるセレクタと、
    上記クロスバー回路を通して供給されたデータを上記演算パイプに入力させ、当該演算パイプの演算結果を隣接の演算ユニットに転送するストリームレジスタと、
    を少なくとも有する
    画像処理装置。
  54. 上記演算ユニットは、上記クロスバー回路を通して供給されたデータを上記演算パイプに入力させ、当該演算パイプの演算結果を上記クロスバー回路に転送する第2のストリームレジスタを含む
    請求項53記載の画像処理装置。
  55. 上記複数の演算ユニットを含む演算ブロックを複数有し、
    複数の演算ブロックの各々は、担当する演算処理が割り当てられて固定化されている
    請求項53記載の画像処理装置。
  56. 上記複数の演算ユニットを含む演算ブロックを複数有し、
    複数の演算ブロックの各々は、担当する演算処理が割り当てられて固定化されている
    請求項54記載の画像処理装置。
JP2003514402A 2001-07-19 2002-07-19 演算装置および画像処理装置 Pending JPWO2003009125A1 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2001219127 2001-07-19
JP2001219127 2001-07-19
PCT/JP2002/007366 WO2003009125A1 (fr) 2001-07-19 2002-07-19 Dispositif de calcul et dispositif de traitement d'images

Publications (1)

Publication Number Publication Date
JPWO2003009125A1 true JPWO2003009125A1 (ja) 2004-11-11

Family

ID=19053184

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2003514402A Pending JPWO2003009125A1 (ja) 2001-07-19 2002-07-19 演算装置および画像処理装置

Country Status (5)

Country Link
US (1) US20040054869A1 (ja)
EP (1) EP1408403A1 (ja)
JP (1) JPWO2003009125A1 (ja)
KR (1) KR20040022706A (ja)
WO (1) WO2003009125A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2018073102A (ja) * 2016-10-28 2018-05-10 キヤノン株式会社 演算回路、その制御方法及びプログラム

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004317717A (ja) 2003-04-15 2004-11-11 Canon Inc 再構成可能な光電融合回路
US7570267B2 (en) * 2004-05-03 2009-08-04 Microsoft Corporation Systems and methods for providing an enhanced graphics pipeline
JP4485272B2 (ja) 2004-06-30 2010-06-16 富士通マイクロエレクトロニクス株式会社 半導体装置
JP4594666B2 (ja) * 2004-07-12 2010-12-08 富士通株式会社 再構成可能な演算装置
JP2006099719A (ja) * 2004-08-30 2006-04-13 Sanyo Electric Co Ltd 処理装置
US7765250B2 (en) * 2004-11-15 2010-07-27 Renesas Technology Corp. Data processor with internal memory structure for processing stream data
JP2007122209A (ja) * 2005-10-26 2007-05-17 Nec System Technologies Ltd 3次元グラフィックス描画装置、その方法及びプログラム
JP4755033B2 (ja) * 2006-07-05 2011-08-24 ルネサスエレクトロニクス株式会社 半導体集積回路
US7884830B1 (en) * 2006-07-12 2011-02-08 Nvidia Corporation Apparatus, system, and method for indexing an array of cube map textures
US9082216B2 (en) * 2009-07-01 2015-07-14 Disney Enterprises, Inc. System and method for filter kernel interpolation for seamless mipmap filtering
JP5171971B2 (ja) * 2011-01-17 2013-03-27 ルネサスエレクトロニクス株式会社 半導体集積回路
KR101912427B1 (ko) 2011-12-12 2018-10-29 삼성전자주식회사 재구성가능 프로세서 및 재구성가능 프로세서의 미니 코어
CN110069284B (zh) * 2019-03-14 2023-05-05 梁磊 一种基于opu指令集的编译方法及编译器

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5170484A (en) * 1986-09-18 1992-12-08 Digital Equipment Corporation Massively parallel array processing system
US5761466A (en) * 1994-05-09 1998-06-02 Lsi Logic Corporation Soft programmable single-cycle/pipelined micro-programmed control system
JP3170599B2 (ja) * 1996-03-01 2001-05-28 経済産業省産業技術総合研究所長 プログラマブルlsiおよびその演算方法
US6023742A (en) * 1996-07-18 2000-02-08 University Of Washington Reconfigurable computing architecture for providing pipelined data paths
JP3611714B2 (ja) * 1998-04-08 2005-01-19 株式会社ルネサステクノロジ プロセッサ

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2018073102A (ja) * 2016-10-28 2018-05-10 キヤノン株式会社 演算回路、その制御方法及びプログラム

Also Published As

Publication number Publication date
KR20040022706A (ko) 2004-03-16
US20040054869A1 (en) 2004-03-18
EP1408403A1 (en) 2004-04-14
WO2003009125A1 (fr) 2003-01-30

Similar Documents

Publication Publication Date Title
JP3199205B2 (ja) 並列演算装置
JP4158413B2 (ja) 画像処理装置
US5999196A (en) System and method for data multiplexing within geometry processing units of a three-dimensional graphics accelerator
US7522171B1 (en) On-the-fly reordering of 32-bit per component texture images in a multi-cycle data transfer
US5185856A (en) Arithmetic and logic processing unit for computer graphics system
US5740409A (en) Command processor for a three-dimensional graphics accelerator which includes geometry decompression capabilities
US6057861A (en) Mip map/rip map texture linear addressing memory organization and address generator
JPWO2003009125A1 (ja) 演算装置および画像処理装置
US7237072B2 (en) Data processor with a built-in memory
JP4264529B2 (ja) 画像処理装置およびその方法
JP2000011190A (ja) 画像処理装置
Poulton et al. Breaking the frame-buffer bottleneck with logic-enhanced memories
JP4264530B2 (ja) 画像処理装置およびその方法
US6003098A (en) Graphic accelerator architecture using two graphics processing units for processing aspects of pre-rasterized graphics primitives and a control circuitry for relaying pass-through information
US6563507B1 (en) Storage circuit control device and graphic computation device
JP4186561B2 (ja) 画像処理装置およびその方法
JP2004145838A (ja) 画像処理装置
US7245303B2 (en) Image processing apparatus
US6476818B1 (en) Storage circuit control device and graphic computation device
JP2004118713A (ja) 画像処理装置
US6803918B1 (en) Image processing apparatus
JP4264527B2 (ja) 画像処理装置およびその方法
JP2004013873A (ja) 画像処理装置
JP2004127227A (ja) 画像処理装置
JP2003346140A (ja) 画像処理装置およびその方法