JP2007328581A - 画像処理装置及びシェーダ装置 - Google Patents

画像処理装置及びシェーダ装置 Download PDF

Info

Publication number
JP2007328581A
JP2007328581A JP2006159576A JP2006159576A JP2007328581A JP 2007328581 A JP2007328581 A JP 2007328581A JP 2006159576 A JP2006159576 A JP 2006159576A JP 2006159576 A JP2006159576 A JP 2006159576A JP 2007328581 A JP2007328581 A JP 2007328581A
Authority
JP
Japan
Prior art keywords
data
pixel
vertex
bit
processing
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
JP2006159576A
Other languages
English (en)
Inventor
Taku Takemoto
卓 竹本
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.)
Toshiba Corp
Original Assignee
Toshiba 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 Toshiba Corp filed Critical Toshiba Corp
Priority to JP2006159576A priority Critical patent/JP2007328581A/ja
Publication of JP2007328581A publication Critical patent/JP2007328581A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

  • Image Processing (AREA)
  • Image Generation (AREA)

Abstract

【課題】ピクセル処理に要する時間の増大を抑制可能な画像処理装置及びシェーダ装置を提供する。
【解決手段】複数の頂点データに対する複数の頂点処理及びその頂点データよりデータ数が多い複数のピクセルデータに対する複数のピクセル処理のいずれかを、並列に実行するシェーダ装置20と、頂点処理の結果を用いてポリゴンを生成し、そのポリゴンを構成するピクセルのパラメータとしてピクセルデータを生成するラスタライザ30と、ピクセル処理の結果を用いて画像描画用データを生成するフラグメントオペレーションユニット40とを備える。
【選択図】図1

Description

本発明は、画像処理技術に係り、特にユニファイド型シェーダ装置を有する画像処理装置に関する。
ゲーム機の画面等に表示される3次元画像データ等の頂点の処理(以下において、「頂点処理」という。)とピクセルの処理(以下において、「ピクセル処理」という。)を物理的に同一の演算ユニットで行うユニファイド型シェーダ装置は、頂点処理とピクセル処理を物理的に別々の演算ユニットで行うセパレート型シェーダ装置に比べ、演算ユニットの稼動効率という点で有利である(例えば、非特許文献1参照。)。ここで、「頂点処理」は、3次元画像の陰影を計算して作り出すライティング演算処理、テクスチャ座標の算出処理等である。又、「ピクセル処理」は、画面上の各点の色を計算して作り出す処理等である。
しかし、ユニファイド型シェーダ装置は、頂点とピクセルという性格の異なる演算対象を同一の演算ユニットで処理するため、セパレート型シェーダ装置に比べて演算精度の点で不利になる場合がある。頂点処理では、一般的にIEEE754準拠の32ビット単精度浮動小数点形式(FP32)程度のデータ形式のデータの演算で得られる演算精度が必要である。FP32は、仮数部23ビットを含む合計32ビットのデータ形式である。一方、ピクセル処理では、仮数部10ビット程度のデータ形式のデータの演算で十分実用的な演算精度が得られ、高い演算精度が要求されるアプリケーションにおいても仮数部が15ビットのデータであれば演算精度に問題がないとされている。そのため、セパレート型シェーダ装置では、頂点処理用演算ユニットがFP32のデータに対する頂点処理を行ない、ピクセル処理用演算ユニットが24ビット浮動小数点形式(FP24)のデータに対するピクセル処理を行う。FP24は、仮数部15ビットを含む合計24ビットのデータ形式である。
頂点処理とピクセル処理で同一の演算ユニットを使用するユニファイド型シェーダ装置では、頂点処理に必要な32ビット浮動小数点形式でFP24のデータに対するピクセル処理を実行する。そのため、ユニファイド型シェーダ装置においてFP24のデータに対する演算の精度が過剰になり、ピクセル処理に要する時間が増大する問題が生じていた。
後藤弘茂、「統合shaderが次々世代のGPUアーキテクチャの鍵」、[online]、2004年、株式会社インプレス・ウォッチ(Impress Watch)、[平成16年9月20日検索]、インターネット<URL: http://pc.watch.impress.co.jp/docs/2004/0115/kaigai056.htm>
本発明は、ピクセル処理に要する時間の増大を抑制可能な画像処理装置及びシェーダ装置を提供する。
本発明の一態様によれば、(イ)複数の頂点データに対する複数の頂点処理及びその頂点データよりデータ数が多い複数のピクセルデータに対する複数のピクセル処理のいずれかを、並列に実行するシェーダ装置と、(ロ)頂点処理の結果を用いてポリゴンを生成し、そのポリゴンを構成するピクセルのパラメータとしてピクセルデータを生成するラスタライザと、(ハ)ピクセル処理の結果を用いて画像描画用データを生成するフラグメントオペレーションユニットとを備える画像処理装置が提供される。
本発明の他の態様によれば、(イ)複数の頂点データ及びその頂点データよりデータ数の多い複数のピクセルデータのいずれかを含むエントリデータを格納するレジスタと、(ロ)エントリデータに含まれる複数の頂点データに対する頂点処理及び複数のピクセルデータの一部に対するピクセル処理のいずれかを実行する統合演算ユニットと、(ハ)複数のピクセルデータのうちの、統合演算ユニットがピクセル処理を実行しないピクセルデータに対してピクセル処理を実行するピクセル演算ユニットとを備えるシェーダ装置が提供される。
本発明によれば、ピクセル処理に要する時間の増大を抑制可能な画像処理装置及びシェーダ装置を提供できる。
次に、図面を参照して、本発明の実施の形態を説明する。以下の図面の記載において、同一又は類似の部分には同一又は類似の符号を付している。又、以下に示す実施の形態は、この発明の技術的思想を具体化するための装置や方法を例示するものであって、この発明の技術的思想は、構成部品の構造、配置等を下記のものに特定するものでない。この発明の技術的思想は、特許請求の範囲において、種々の変更を加えることができる。
本発明の実施の形態に係る画像処理装置は、図1に示すように、複数の頂点データに対する複数の頂点処理及びその頂点データよりデータ数が多い複数のピクセルデータに対する複数のピクセル処理のいずれかを、並列に実行するシェーダ装置20と、頂点処理の結果を用いてポリゴンを生成し、そのポリゴンを構成するピクセルのパラメータとしてピクセルデータを生成するラスタライザ30と、ピクセル処理の結果を用いて画像描画用データを生成するフラグメントオペレーションユニット40とを備える。
図1に示した画像処理装置は、ダイレクトメモリアクセスコントローラ(DMAC)10、データ記憶装置50及びフレームバッファ60を更に備える。データ記憶装置50は、画像処理装置の処理対象である3次元画像データ等の画像データを格納する。例えば、電子データの受信或いは記憶媒体の装着が可能な図示を省略するデータ記憶装置50のインタフェース回路を介して、電子情報伝達手段によってデータ記憶装置50に転送された画像データ或いは記憶媒体に電子データとして格納された画像データが、データ記憶装置50に格納される。データ記憶装置50として、例えばシンクロナス・ダイナミック・ランダムアクセス・メモリ(SDRAM)等が採用可能である。DMAC10は、データ記憶装置50の動作を制御する。フレームバッファ60は、画像処理結果として画像描画用データを格納する。
以下に、図1に示した画像処理装置による画像処理方法を説明する。先ずDMAC10が、データ記憶装置50から画像データとして頂点データ列DAを読み出し、頂点データ列DAに対する頂点処理に使用される頂点パラメータ(以下において、「入力頂点パラメータ」という。)DViがシェーダ装置20に転送される。
シェーダ装置20は、入力頂点パラメータDViを用いて頂点単位の頂点処理を行う。頂点処理時のシェーダ装置20の動作は後述する。シェーダ装置20は、頂点処理の結果を出力頂点パラメータDVoとしてラスタライザ30に転送する。
ラスタライザ30は、出力頂点パラメータDVoを用いてポリゴンを形成し、ポリゴンを構成するピクセルのピクセルパラメータを生成する。ピクセルパラメータは、ピクセル処理時に使用される。ラスタライザ30は、生成したピクセルパラメータを、シェーダ装置20に転送する。
シェーダ装置20は、ラスタライザ30から転送されたピクセルパラメータ(以下において、「入力ピクセルパラメータ」という。)DPiを用いて、ピクセル単位のピクセル処理を行う。ピクセル処理時のシェーダ装置20の動作は後述する。シェーダ装置20は、ピクセル処理の結果を出力ピクセルパラメータDPoとしてフラグメントオペレーションユニット40に転送する。
フラグメントオペレーションユニット40は、出力ピクセルパラメータDPoに対してアルファ(α)ブレンド合成及びZテスト等のフラグメント処理を行ない、画像描画用データとしてピクセルデータDBを生成する。αブレンド合成は、二つの画像を係数(α値)に基づき合成することによって、別々に描かれた背景とキャラクターとを合成する場合等に使用される。Zテストは、各ポリゴンに付加されるZ値(視点からの距離に対応)をピクセル毎に比較するテストである。例えば、描画しようとするポリゴンのZ値が既に描画されたポリゴンのZ値より小さい場合は描画しようとするポリゴンは描画され、大きい場合は描画されない。フラグメントオペレーションユニット40は、生成したピクセルデータDBをフレームバッファ60に転送する。
フレームバッファ60は、転送されたピクセルデータDBを格納する。フレームバッファ60の図示を省略するインタフェース回路を介して、コンピュータグラフィックス描画装置等がピクセルデータDBをフレームバッファ60から読み出し、ピクセルデータDBを用いて画像を描画する。フレームバッファ60は、データ記憶装置50上に構成してもよい。
次に、シェーダ装置20の動作を説明する。シェーダ装置20は、上記に説明したように、頂点処理及びピクセル処理を行うユニファイド型シェーダ装置である。以下では、シェーダ装置20が、1つの命令で複数のデータの演算処理を行うシングル・インストラクション・マルチデータ(SIMD)型のアーキテクチャを採用し、且つ、シェーダ装置20が実行する演算の入力データ数が最大3である3オペランドの場合を例示的に説明する。ここでは、シェーダ装置20が4要素(X,Y,Z,W)を処理単位とし、頂点処理はFP32のデータ形式、ピクセル処理はFP24のデータ形式で実行されるとする。
図2(a)及び図2(b)に、FP32及びFP24のデータの構成例をぞれぞれ示す。図2(a)に示すように、FP32は、符号1ビット、指数部8ビット及び仮数部23ビットからなる、合計32ビットのデータ形式である。又、図2(b)に示すように、FP24は、符号1ビット、指数部8ビット及び仮数部15ビットからなる、合計24ビットのデータ形式である。FP32からFP24へのデータ形式の変換は、FP32のデータの仮数部の下位8ビットを削除することによって、容易に行なわれる。
図3に、シェーダ装置20の構成例を示す。シェーダ装置20は、入力インタフェース21、レジスタ22、算術演算処理ユニット(ALU)23及び出力インタフェース24を含む。
レジスタ22は、複数の頂点データ及び複数のピクセルデータのいずれかを含む1エントリ分のデータ(以下において、「エントリデータ」という。)を格納する。具体的には、入力頂点パラメータDVi或いは入力ピクセルパラメータDPiが、入力インタフェース21を介してレジスタ22に格納される。
ALU23は、レジスタ22から入力頂点パラメータDViを読み出して頂点処理を行ない、出力頂点パラメータDVoを生成する。又、ALU23は、レジスタ22から入力ピクセルパラメータDPiを読み出してピクセル処理を行ない、出力ピクセルパラメータDPoを生成する。頂点処理の結果である出力頂点パラメータDVo及びクセル処理の結果である出力ピクセルパラメータDPoは、レジスタ22に格納される。ALU23の詳細な動作については後述する。レジスタ22に格納された出力頂点パラメータDVo及び出力ピクセルパラメータDPoは、出力インタフェース24を介して、シェーダ装置20の外部に転送される。
レジスタ22に格納されるエントリデータの構成を図4に示す。図4に示すように、エントリデータのビット長は384ビットである。エントリデータ単位でレジスタ22からALU23にデータが転送される。頂点処理されるデータがFP32の場合、3頂点分のパラメータである頂点データVertex1〜Vertex3が1エントリデータとしてレジスタ22に格納される。頂点データVertex1〜Vertex3は、以下に説明するように4要素(X,Y,Z,W)の要素頂点データから構成される。
頂点データVertex1は、X要素頂点データVertex1(X)、Y要素頂点データVertex1(Y)、Z要素頂点データVertex1(Z)及びW要素頂点データVertex1(W)を含む。同様に、頂点データVertex2は、X要素頂点データVertex2(X)、Y要素頂点データVertex2(Y)、Z要素頂点データVertex2(Z)及びW要素頂点データVertex2(W)を含む。頂点データVertex3は、X要素頂点データVertex3(X)、Y要素頂点データVertex3(Y)、Z要素頂点データVertex3(Z)及びW要素頂点データVertex3(W)を含む。各要素頂点データのデータ形式は、FP32である。つまり、頂点データVertex1〜Vertex3のビット長は、それぞれ128ビットである。
又、図4に示すように、ピクセル処理されるデータがFP24の場合、4ピクセル分のパラメータであるピクセルデータPixel1〜Pixel4が、1エントリデータとしてレジスタ22に格納される。ピクセルデータPixel1は、X要素ピクセルデータPixel1(X)、Y要素ピクセルデータPixel1(Y)、Z要素ピクセルデータPixel1(Z)及びW要素ピクセルデータPixel1(W)を含む。同様に、ピクセルデータPixel2は、X要素ピクセルデータPixel2(X)、Y要素ピクセルデータPixel2(Y)、Z要素ピクセルデータPixel2(Z)及びW要素ピクセルデータPixel2(W)を含む。ピクセルデータPixel3は、X要素ピクセルデータPixel3(X)、Y要素ピクセルデータPixel3(Y)、Z要素ピクセルデータPixel3(Z)及びW要素ピクセルデータPixel3(W)を含む。各要素ピクセルデータのデータ形式は、FP24である。したがって、ピクセルデータPixel1〜Pixel4のビット長は、それぞれ96ビットである。
図4に示すように、頂点データVertex1〜Vertex3の各要素頂点データはX要素頂点データ、Y要素頂点データ、Z要素頂点データ、W要素頂点データの順にレジスタ22に格納される。図4において、位置M1〜M3は、頂点データVertex1〜Vertex3の各符号ビットの最上位ビット(MSB)の位置をそれぞれ示す。位置M1は383ビット目、位置M2は255ビット目、位置M3は127ビット目である。又、ピクセルデータPixel1〜Pixel3は、X要素ピクセルデータ、Y要素ピクセルデータ、Z要素ピクセルデータ及びW要素ピクセルデータの順にレジスタ22に格納される。
更に、ピクセルデータPixel1〜Pixel3の各要素ピクセルデータは、各要素ピクセルデータのMSBの位置が頂点データVertex1〜Vertex3の各要素頂点データのMSBの位置と一致するようにレジスタ22に格納される。例えば、X要素ピクセルデータPixel1(X)、Pixel2(X)、Pixel3(X)のMSBの位置は、それぞれ位置M1、M2、M3である。そのため、ピクセルデータPixel1〜Pixel3の各要素ピクセルデータ間に8ビットずつの空き領域が生じる。
図4に示すように、各要素ピクセルデータ間の空き領域にピクセルデータPixel4が格納される。具体的には、ピクセルデータPixel1〜Pixel3の各X要素ピクセルデータの後にピクセルデータPixel4のX要素ピクセルデータPixel4(X)が3分の1ずつ格納される。同様に、ピクセルデータPixel1〜Pixel3の各Y要素ピクセルデータの後にピクセルデータPixel4のY要素ピクセルデータPixel4(Y)が3分の1ずつ格納され、ピクセルデータPixel1〜Pixel3の各Z要素ピクセルデータの後にピクセルデータPixel4のZ要素ピクセルデータPixel4(Z)が3分の1ずつ格納され、ピクセルデータPixel1〜Pixel3の各W要素ピクセルデータの後にピクセルデータPixel4のW要素ピクセルデータPixel4(W)が3分の1ずつ格納される。
以上に説明したように、レジスタ22は、1エントリデータ分の頂点データの総ビット数とピクセルデータの総ビット数が同一になるように、頂点データ及びピクセルデータを格納する。頂点データのビット長よりピクセルデータのビット長が短いため、エントリデータに含まれるFP24のピクセルデータの数は、FP32の頂点データの数より多い。図4に示したように、頂点データの各先頭ビットの位置と、ピクセルデータのいずれかの先頭ビットの位置が同一であり、頂点データより多い分のピクセルデータは、分割してレジスタ22に格納される。
シェーダ装置20の動作はプログラマブルであり、シェーダ装置20に内蔵された制御プログラムの命令に従って、ALU23が頂点処理或いはピクセル処理を実行する。尚、ALU23における処理の途中結果DMは、レジスタ22に格納される。既に述べたように、シェーダ装置20は3オペランドアーキテクチャを採用するため、図3に示すように、レジスタ22からALU23に、複数の頂点データ或いは複数のピクセルデータを含む入力データDT1〜DT3が転送される。入力データDT1〜DT3は、それぞれビット長が384ビットのエントリデータである。
図5に、ALU23の構成例を示す。図5に示すALU23は、FP32のデータを処理するSIMD型演算ユニットである統合演算ユニット231〜233、FP24のデータを処理するSIMD型演算ユニットであるピクセル演算ユニット234、及びビット選択回路235を備える。以下に説明するように、統合演算ユニット231〜233は、エントリデータに含まれる複数の頂点データに対する頂点処理、及びエントリデータに含まれる複数のピクセルデータの一部に対するピクセル処理のいずれかを実行する。又、ピクセル演算ユニット234は、エントリデータに含まれるピクセルデータのうちの、統合演算ユニット231〜233がピクセル処理を実行しないピクセルデータに対するピクセル処理を実行する。
レジスタ22から転送された入力データDT1、DT2及びDT3は、メインデータバス110、120及び130を介して、統合演算ユニット231〜233及びピクセル演算ユニット234に入力する。統合演算ユニット231に接続するサブデータバス111、統合演算ユニット232に接続するサブデータバス112、統合演算ユニット233に接続するサブデータバス113、及びピクセル演算ユニット234に接続するサブデータバス114が、メインデータバス110に接続する。統合演算ユニット231に接続するサブデータバス121、統合演算ユニット232に接続するサブデータバス122、統合演算ユニット233に接続するサブデータバス123、及びピクセル演算ユニット234に接続するサブデータバス124が、メインデータバス120に接続する。統合演算ユニット231に接続するサブデータバス131、統合演算ユニット232に接続するサブデータバス132、統合演算ユニット233に接続するサブデータバス133、及びピクセル演算ユニット234に接続するサブデータバス134が、メインデータバス130に接続する。
図5において、各サブデータバスに付された表記[A:B]は、各サブデータバスがそれぞれ接続するメインデータバス110、120、130のBビット目からAビット目のデータが各サブデータバスに転送されることを示す(以下において同様。)。図5に示すように、入力データDT1の0ビット目から127ビット目までのデータがサブデータバス113を介して統合演算ユニット233に転送され、入力データDT1の128ビット目から255ビット目までのデータがサブデータバス112を介して統合演算ユニット232に転送され、入力データDT1の256ビット目から383ビット目までのデータがサブデータバス111を介して統合演算ユニット231に転送される。
入力データDT1と同様に、入力データDT2の0ビット目から127ビット目までのデータがサブデータバス123を介して統合演算ユニット233に転送され、入力データDT2の128ビット目から255ビット目までのデータがサブデータバス122を介して統合演算ユニット232に転送され、入力データDT2の256ビット目から383ビット目までのデータがサブデータバス121を介して統合演算ユニット231に転送される。そして、入力データDT3の0ビット目から127ビット目までのデータがサブデータバス133を介して統合演算ユニット233に転送され、入力データDT3の128ビット目から255ビット目までのデータがサブデータバス132を介して統合演算ユニット232に転送され、入力データDT3の256ビット目から383ビット目までのデータがサブデータバス131を介して統合演算ユニット231に転送される。
メインデータバス110、120、130を介してレジスタ22から統合演算ユニット231、232、233に入力データDT1、DT2、DT3がそれぞれ転送されるため、各サブデータバスに付された表記[A:B]は、図4に示したレジスタ22に格納されるエントリデータのBビット目からAビット目のデータを示す。したがって、入力データDT1〜DT3にそれぞれ含まれる頂点データVertex1或いはピクセルデータPixel1が、統合演算ユニット231に転送される。又、入力データDT1〜DT3にそれぞれ含まれる頂点データVertex2或いはピクセルデータPixel2が、統合演算ユニット232に転送される。そして、入力データDT1〜DT3にそれぞれ含まれる頂点データVertex3或いはピクセルデータPixel3が、統合演算ユニット233に転送される。統合演算ユニット231〜233は、頂点データVertex1〜Vertex3に対する頂点処理、或いはピクセルデータPixel1〜ピクセルデータPixel3に対するピクセル処理を行う。
又、図5に示すように、入力データDT1の0ビット目から7ビット目までのデータ、32ビット目から39ビット目までのデータ、64ビット目から71ビット目までのデータ、96ビット目から103ビット目までのデータ、128ビット目から135ビット目までのデータ、160ビット目から167ビット目までのデータ、192ビット目から199ビット目までのデータ、224ビット目から231ビット目までのデータ、256ビット目から263ビット目までのデータ、288ビット目から295ビット目までのデータ、320ビット目から327ビット目までのデータ、及び352ビット目から359ビット目までのデータが、サブデータバス114を介してピクセル演算ユニット234に転送される。つまり、入力データDT1に含まれるピクセルデータPixel4が、サブデータバス114を介してピクセル演算ユニット234に転送される。
入力データDT1に含まれるピクセルデータPixel4と同様に、入力データDT2に含まれるピクセルデータPixel4がサブデータバス124を介してピクセル演算ユニット234に転送され、入力データDT3に含まれるピクセルデータPixel4が、サブデータバス134を介してピクセル演算ユニット234に転送される。ピクセル演算ユニット234はピクセルデータPixel4に対するピクセル処理を実行する。
図6に、統合演算ユニット231〜233の構成例として、統合演算ユニット231のブロック図を示す。図6に示したように、統合演算ユニット231は、FP32のデータを処理するFP32演算器231X、231Y、231Z及び231W、及び変換器231a〜231lを有する。変換器231a〜231lは、FP24のデータの下位ビットに8ビット分のビット「0」を追加して、FP24のデータをFP32に変換する。
図6に示すように、変換器231aに接続するX要素データバス111X、変換器231dに接続するY要素データバス111Y、変換器231gに接続するZ要素データバス111Z、及び変換器231jに接続するW要素データバス111Wが、サブデータバス111に接続する。変換器231bに接続するX要素データバス121X、変換器231eに接続するY要素データバス121Y、変換器231hに接続するZ要素データバス121Z、及び変換器231kに接続するW要素データバス121Wが、サブデータバス121に接続する。変換器231cに接続するX要素データバス131X、変換器231fに接続するY要素データバス131Y、変換器231iに接続するZ要素データバス131Z、及び変換器231lに接続するW要素データバス131Wが、サブデータバス131に接続する。変換器231a、231b、231cは、FP32演算器231Xに接続する。変換器231d、231e、231fは、FP32演算器231Yに接続する。変換器231g、231h、231iは、FP32演算器231Zに接続する。変換器231j、231k、231lは、FP32演算器231Wに接続する。
X要素データバス111X及び変換器231aを介して、サブデータバス111の96ビット目から127ビット目までの32ビットのデータがFP32演算器231Xに転送される。既に述べたように、サブデータバス111上を、入力データDT1の256ビット目から383ビット目までの128ビットのデータが転送される。つまり、X要素データバス111Xを介して、入力データDT1の352ビット目から383ビット目までのデータがFP32演算器231Xに転送される。したがって、入力データDT1に含まれるX要素頂点データVertex1(X)或いはX要素ピクセルデータPixel1(X)が、FP32演算器231Xに転送される。尚、変換器231aにX要素ピクセルデータPixel1(X)が入力された場合は、変換器231aは、FP24のX要素ピクセルデータPixel1(X)の下位ビットに8ビット分のビット「0」を追加することによって、X要素ピクセルデータPixel1(X)のデータ形式をFP32に変換する。そして、変換器231aは、FP32にデータ形式が変換されたX要素ピクセルデータPixel1(X)をFP32演算器231Xに転送する。
同様にして、X要素データバス121X及び変換器231bを介して、入力データDT2に含まれるX要素頂点データVertex1(X)或いはFP32に変換されたX要素ピクセルデータPixel1(X)が、FP32演算器231Xに転送される。更に、X要素データバス131X及び変換器231cを介して、入力データDT3に含まれるX要素頂点データVertex1(X)或いはFP32に変換されたX要素ピクセルデータPixel1(X)が、FP32演算器231Xに転送される。FP32演算器231Xは、入力データDT1〜DT3にX要素頂点データVertex1(X)が含まれる場合はX要素頂点データVertex1(X)に対する頂点処理を行ない、FP32に変換されたX要素ピクセルデータPixel1(X)が含まれる場合はX要素ピクセルデータPixel1(X)に対するピクセル処理を行う。
X要素頂点データVertex1(X)及びX要素ピクセルデータPixel1(X)と同様に、入力データDT1〜DT3に含まれるY要素頂点データVertex1(Y)或いはFP32に変換されたY要素ピクセルデータPixel1(Y)がFP32演算器231Yに転送される。例えば、Y要素データバス111Yを介して、サブデータバス111の64ビット目から95ビット目までの32ビット、即ち、入力データDT1の320ビット目から351ビット目までのデータがFP32演算器231Yに転送される。つまり、入力データDT1に含まれるY要素頂点データVertex1(Y)或いはY要素ピクセルデータPixel1(Y)が、FP32演算器231Yに転送される。FP32演算器231Yは、入力データDT1〜DT3に含まれるY要素頂点データVertex1(Y)に対する頂点処理を行ない、FP32に変換されたY要素ピクセルデータPixel1(Y)に対するピクセル処理を行う。
又、入力データDT1〜DT3に含まれるZ要素頂点データVertex1(Z)或いはFP32に変換されたZ要素ピクセルデータPixel1(Z)がFP32演算器231Zに転送される。例えば、Z要素データバス111Zを介して、サブデータバス111の32ビット目から63ビット目までの32ビット、即ち、入力データDT1の288ビット目から319ビット目までのデータがFP32演算器231Zに転送される。つまり、入力データDT1に含まれるZ要素頂点データVertex1(Z)或いはZ要素ピクセルデータPixel1(Z)が、FP32演算器231Zに転送される。FP32演算器231Zは、入力データDT1〜DT3に含まれるZ要素頂点データVertex1(Z)に対する頂点処理を行ない、FP32に変換されたZ要素ピクセルデータPixel1(Z)に対するピクセル処理を行う。
更に、入力データDT1〜DT3に含まれるW要素頂点データVertex1(W)或いはFP32に変換されたW要素ピクセルデータPixel1(W)がFP32演算器231Wに転送される。例えば、W要素データバス111Wを介して、サブデータバス111の0ビット目から31ビット目までの32ビット、即ち、入力データDT1の256ビット目から287ビット目までのデータがFP32演算器231Wに転送される。つまり、入力データDT1に含まれるW要素頂点データVertex1(W)或いはW要素ピクセルデータPixel1(W)が、FP32演算器231Wに転送される。FP32演算器231Wは、入力データDT1〜DT3に含まれるW要素頂点データVertex1(W)に対する頂点処理を行ない、FP32に変換されたW要素ピクセルデータPixel1(W)に対するピクセル処理を行う。
以上に説明したように、変換器231a〜231lによってピクセルデータPixel1の各要素ピクセルデータがFP32のデータに変換される。そして、FP32のデータとして、ピクセルデータPixel1の各要素ピクセルデータがFP32演算器231X、231Y、231Z及び231Wに転送される。統合演算ユニット231は、ピクセルデータPixel1の各要素ピクセルデータをFP32のデータとして演算処理し、32ビットの演算結果を算出する。
上記のように統合演算ユニット231の構成及び動作を説明したが、統合演算ユニット232及び233の構成及び動作も統合演算ユニット231と同様である。統合演算ユニット232は、頂点データVertex2の各要素頂点データ、或いはFP32に変換されたピクセルデータPixel2の各要素ピクセルデータを演算処理する。統合演算ユニット233は、頂点データVertex3の各要素頂点データ或いはFP32に変換されたピクセルデータPixel3の各要素ピクセルデータを演算処理する。つまり、統合演算ユニット231〜233は、レジスタ22から転送される入力データDT1〜DT3が頂点データVertex1〜Vertex3であっても、ピクセルデータPixel1〜Pixel3であっても、FP32のデータとして演算処理する。
統合演算ユニットの個数は、並列処理する頂点データのデータ数と同一になるように設定される。つまり、レジスタ22に格納されるエントリデータに含まれる頂点データのデータ数に応じて、統合演算ユニットの個数が設定される。
FP32演算器231X、231Y、231Z及び231Wによって処理された32ビットの演算結果は、X要素データバス201X、Y要素データバス201Y、Z要素データバス201Z、及びW要素データバス201Wをそれぞれ介して、データバス201に転送される。統合演算ユニット231は、データバス201を介して、合計128ビットのデータをビット選択回路235に転送する。同様に、統合演算ユニット232及び233は、演算処理結果である128ビットのデータを、データバス202及び203を介してビット選択回路235にそれぞれ転送する。
以上の説明では、変換器231a〜231lが、FP24のデータの下位ビットに8ビット分のビット「0」を追加して、FP24のデータをFP32に変換する例を示した。追加するデータの値は「0」以外でもよい。尚、より一般的な場合として、頂点データの仮数部のビット数をMv、ピクセルデータの仮数部のビット数をMpとすると、変換器231a〜231lは、ピクセルデータの下位ビットに「Mv−Mp」ビット分の任意のビットを追加する。
図5を参照して説明したように、入力データDT1に含まれるピクセルデータPixel4は、サブデータバス114を介してピクセル演算ユニット234に転送される。このとき、サブデータバス114の72ビット目から95ビット目までを使用して、入力データDT1に含まれるX要素ピクセルデータPixel4(X)がピクセル演算ユニット234に転送される。つまり、入力データDT1の352ビット目から359ビット目までのデータ、231ビット目から224ビット目までのデータ、及び96ビット目から103ビット目までのデータが、サブデータバス114の72ビット目から95ビット目に転送される。
又、入力データDT1に含まれるY要素ピクセルデータPixel4(Y)が、サブデータバス114の48ビット目から71ビット目までを使用して、ピクセル演算ユニット234に転送される。つまり、入力データDT1の320ビット目から327ビット目までのデータ、192ビット目から199ビット目までのデータ、及び64ビット目から71ビット目までのデータが、サブデータバス114の48ビット目から71ビット目に転送される。
更に、入力データDT1に含まれるZ要素ピクセルデータPixel4(Z)が、サブデータバス114の24ビット目から47ビット目までを使用して、ピクセル演算ユニット234に転送される。つまり、入力データDT1の288ビット目から295ビット目までのデータ、160ビット目から167ビット目までのデータ、及び32ビット目から39ビット目までのデータが、サブデータバス114の24ビット目から47ビット目に転送される。
そして、入力データDT1に含まれるW要素ピクセルデータPixel4(W)が、サブデータバス114の0ビット目から23ビット目までを使用して、ピクセル演算ユニット234に転送される。つまり、入力データDT1の256ビット目から263ビット目までのデータ、128ビット目から135ビット目までのデータ、及び0ビット目から7ビット目までのデータが、サブデータバス114の0ビット目から23ビット目に転送される。
図7に、ピクセル演算ユニット234のブロック図を示す。図7に示したように、ピクセル演算ユニット234は、FP24のデータを処理するFP24演算器234X、234Y、234Z及び234Wを有する。FP24演算器234X、234Y、234Z及び234Wは、仮数部のビット長が異なるデータを処理する点以外は、図6に示したFP32演算器231X、231Y、231Z及び231Wと同一の機能を有する。
FP24演算器234Xに接続するX要素データバス114X、FP24演算器234Yに接続するY要素データバス114Y、FP24演算器234Zに接続するZ要素データバス114Z、及びFP24演算器234Wに接続するW要素データバス114Wが、サブデータバス114に接続する。FP24演算器234Xに接続するX要素データバス124X、FP24演算器234Yに接続するY要素データバス124Y、FP24演算器234Zに接続するZ要素データバス124Z、及びFP24演算器234Wに接続するW要素データバス124Wが、サブデータバス124に接続する。FP24演算器234Xに接続するX要素データバス134X、FP24演算器234Yに接続するY要素データバス134Y、FP24演算器234Zに接続するZ要素データバス134Z、及びFP24演算器234Wに接続するW要素データバス134Wが、サブデータバス134に接続する。
X要素データバス114Xを介して、サブデータバス114の72ビット目から95ビット目までの24ビットのデータがFP24演算器234Xに転送される。既に述べたように、サブデータバス114の72ビット目から95ビット目までのデータは、入力データDT1に含まれるX要素ピクセルデータPixel4(X)である。つまり、X要素データバス114Xを介して、入力データDT1に含まれるX要素ピクセルデータPixel4(X)がFP24演算器234Xに転送される。
同様に、X要素データバス124Xを介して、入力データDT2に含まれるX要素ピクセルデータPixel4(X)がFP24演算器234Xに転送される。更に、X要素データバス134Xを介して、入力データDT3に含まれるX要素ピクセルデータPixel4(X)がFP24演算器234Xに転送される。FP24演算器234Xは、入力データDT1〜DT3に含まれるX要素ピクセルデータPixel4(X)に対するピクセル処理を行う。
X要素ピクセルデータPixel4(X)と同様に、入力データDT1〜DT3に含まれるY要素ピクセルデータPixel4(Y)がFP24演算器234Yに転送される。例えば、Y要素データバス114Yを介して、サブデータバス114の48ビット目から71ビット目までの24ビット、即ち、入力データDT1に含まれるY要素ピクセルデータPixel4(Y)がFP24演算器234Yに転送される。FP24演算器234Yは、入力データDT1〜DT3に含まれるY要素ピクセルデータPixel4(Y)に対するピクセル処理を行う。
又、入力データDT1〜DT3に含まれるZ要素ピクセルデータPixel4(Z)がFP24演算器234Zに転送される。例えば、Z要素データバス114Zを介して、サブデータバス114の24ビット目から47ビット目までの24ビット、即ち、入力データDT1に含まれるZ要素ピクセルデータPixel4(Z)が、FP24演算器234Zに転送される。FP24演算器234Zは、入力データDT1〜DT3に含まれるZ要素ピクセルデータPixel4(Z)に対するピクセル処理を行う。
更に、入力データDT1〜DT3に含まれるW要素ピクセルデータPixel4(W)がFP24演算器234Wに転送される。例えば、W要素データバス114Wを介して、サブデータバス114の0ビット目から23ビット目までの24ビット、即ち、入力データDT1に含まれるW要素ピクセルデータPixel4(W)が、FP24演算器234Wに転送される。FP24演算器234Wは、入力データDT1〜DT3に含まれるW要素ピクセルデータPixel4(W)に対するピクセル処理を行う。
ピクセル演算ユニット234の個数は、レジスタ22に格納されるエントリデータに含まれる頂点データの数とピクセルデータの数との差と同一になるように設定される。つまり、エントリデータに分割して格納されるピクセルデータのデータ数に応じて、ピクセル演算ユニットの個数が設定される。
FP24演算器234X、234Y、234Z及び234Wによって処理されたそれぞれ24ビットの演算結果は、X要素データバス204X、Y要素データバス204Y、Z要素データバス204Z、及びW要素データバス204Wをそれぞれ介して、データバス204に転送される。ピクセル演算ユニット234は、データバス204を介して、合計96ビットのデータをビット選択回路235に転送する。
図5に示したビット選択回路235は、統合演算ユニット231〜233及びピクセル演算ユニット234から転送されるデータ(以下において、「処理データ」という。)が頂点処理されたデータであるか、或いはピクセル処理されたデータであるかに応じて、処理データのデータ形式が頂点処理に対応したデータ形式或いはピクセル処理に対応したデータ形式になるように、処理データについてビット選択を行う。
具体的には、処理データが頂点処理されたデータである場合、つまりシェーダ装置20が頂点処理を実行する場合は、ビット選択回路235は、データバス201〜204を介して転送される処理データから、ピクセル演算ユニット234から転送されたビットを除き、統合演算ユニット231〜233から転送されたビットのみ選択する。ビット選択回路235は、選択したビットからなるデータを出力頂点パラメータDVoとして、出力インタフェース24を介してラスタライザ30に転送する。
処理データがピクセル処理されたデータである場合、つまりシェーダ装置20がピクセル処理を実行する場合は、ビット選択回路235は、統合演算ユニット231〜233から転送されたFP32の処理データの下位8ビットを削除してFP24のデータに変換する。つまり、データバス201〜203を介して転送された処理データの上位24ビットを選択する。そして、ビット選択回路235は、FP24のデータに変換した処理データ及びピクセル演算ユニット234から転送された処理データを出力ピクセルパラメータDPoとして、出力インタフェース24を介してフラグメントオペレーションユニット40に転送する。
以上に説明したように、シェーダ装置20は、シェーダ装置20の動作を制御する制御プログラムの命令に応じて、頂点処理時は4要素×3頂点分の出力頂点パラメータDVoを1クロックサイクルで出力し、ピクセル処理時は4要素×4ピクセル分の出力ピクセルパラメータDPoを1クロックサイクルで出力する。つまり、関連技術のユニファイド型シェーダ装置がFP32の4要素からなる3ピクセル分のデータを1クロックサイクルで出力することに比べて、シェーダ装置20は4ピクセル分のデータを並列に処理することによって、ピクセル処理の効率を33%向上できる。その結果、シェーダ装置20を使用することによって、ユニファイド型シェーダ装置を使用することによるピクセル処理に要する演算時間の増大を抑制できる。
3ピクセル分のデータを並列処理する関連技術のユニファイド型シェーダ装置に対する、上記に説明した4ピクセル分のデータを並列処理するシェーダ装置20を実現するために必要な回路面積の増加は、ピクセル演算ユニット234分の回路面積である。浮動小数点演算器の回路面積は仮数部のビット長の2乗に比例すると仮定すれば、統合演算ユニット231〜233を含む回路の面積と、ピクセル演算ユニット234の回路の面積との比は1.0対0.15程度である。又、一般に、シェーダ装置全体に占めるALUの面積の割合は30%程度である。したがって、ピクセル演算ユニット234を付加することによるシェーダ装置20の回路面積の増加率は、30%×0.15=4.5%程度である。
以上では、頂点処理時もピクセル処理時も、メインデータバス110〜130の384ビットのバス幅をすべて有効に使用している例を説明した。つまり、以下の式(1)〜(3)が成立する場合を説明した:

Lv×Nv=384 ・・・(1)
Lp×Np=384 ・・・(2)
|Lv×Nv−Lp×Np|=0 ・・・(3)

ここで、Lvは頂点処理時の各浮動小数点データのビット数、Nvは頂点処理時の1クロックサイクルあたりの処理データ数(4要素×並列処理数)である。又、Lpはピクセル処理時の各浮動小数点データのビット数、Npはピクセル処理時の1クロックサイクルあたりの処理データ数(4要素×並列処理数)である。
浮動小数点データのビット数と並列処理数との組み合わせによっては、頂点処理時とピクセル処理時それぞれにおいて、メインデータバス110〜130のバス幅をすべて有効に使用できない場合がある。しかし、メインデータバス110〜130の使用されないビット数は、最大でも4×max(Lv、Lp)であり、以下の式(4)が成立する:

|Lv×Nv−Lp×Np|<4×max(Lv、Lp) ・・・(4)

ここで、「max(Lv、Lp)」はビット数Lvとビット数Lpの大きいほうの値である。
以上に説明したように、図1に示した画像処理装置においては、レジスタ22に格納されるエントリデータにおける頂点データの各先頭ビットの位置と、ピクセルデータのいずれかの先頭ビットの位置が同一になるようにする。そして、頂点データと先頭ビットの位置を一致させたピクセルデータの間に、更にピクセルデータを分割して格納することによって、エントリデータに含まれるピクセルデータのデータ数を頂点データの数より多くする。
その結果、図1に示した画像処理装置では、頂点処理及びピクセル処理を、それぞれの処理に必要な演算精度で同一の演算ユニットを用いて実行し、かつ制御プログラムの1回のピクセル処理命令に応じて処理されるピクセルデータの数を、1回の頂点処理命令に応じて処理される頂点データの数より多くできる。つまり、頂点処理よりピクセル処理でのスループットを高くできる。その結果、ユニファイド型シェーダ装置を採用することによって生じるピクセル処理に要する演算時間の増大が抑制される。又、上記に説明したように、4.5%程度の回路面積の増大で、演算ユニットのピクセル処理の効率が33%程度向上する。つまり、本発明の実施の形態に係る画像処理装置によれば、ユニファイド型シェーダ装置を採用することによる回路面積増大の抑制しつつ、消費電力増大を抑制できる。
上記のように、本発明は実施の形態によって記載したが、この開示の一部をなす論述及び図面はこの発明を限定するものであると理解すべきではない。この開示から当業者には様々な代替実施の形態、実施例及び運用技術が明らかとなろう。即ち、本発明はここでは記載していない様々な実施の形態等を含むことは勿論である。したがって、本発明の技術的範囲は上記の説明から妥当な特許請求の範囲に係る発明特定事項によってのみ定められるものである。
本発明の実施の形態に係る画像処理装置の構成を示す模式図である。 本発明の実施の形態に係る画像処理装置が処理するデータの形式の構成を示す模式図であり、図2(a)はFP32のデータの構成例を示す模式図、図2(b)はFP24のデータの構成例を示す模式図である。 本発明の実施の形態に係るシェーダ装置の構成を示す模式的なブロック図である。 本発明の実施の形態に係るレジスタに格納されるデータの構成例を示す模式図である。 本発明の実施の形態に係るALUの構成を示す模式的なブロック図である。 本発明の実施の形態に係る統合演算ユニットの構成を示す模式的なブロック図である。 本発明の実施の形態に係るピクセル演算ユニットの構成を示す模式的なブロック図である。
符号の説明
10…DMAC
20…シェーダ装置
21…入力インタフェース
22…レジスタ
23…ALU
24…出力インタフェース
30…ラスタライザ
40…フラグメントオペレーションユニット
50…データ記憶装置
60…フレームバッファ
110〜130…メインデータバス
111〜114…サブデータバス
121〜124…サブデータバス
131〜134…サブデータバス
201〜204…データバス
231…統合演算ユニット
234…ピクセル演算ユニット
235…ビット選択回路

Claims (5)

  1. 複数の頂点データに対する複数の頂点処理及び該頂点データよりデータ数が多い複数のピクセルデータに対する複数のピクセル処理のいずれかを、並列に実行するシェーダ装置と、
    前記頂点処理の結果を用いてポリゴンを生成し、該ポリゴンを構成するピクセルのパラメータとして前記ピクセルデータを生成するラスタライザと、
    前記ピクセル処理の結果を用いて画像描画用データを生成するフラグメントオペレーションユニット
    とを備えることを特徴とする画像処理装置。
  2. 前記シェーダ装置が、
    前記複数の頂点データ及び前記複数のピクセルデータのいずれかを含むエントリデータを格納するレジスタと、
    前記エントリデータに含まれる前記複数の頂点データに対する頂点処理、及び前記複数のピクセルデータの一部に対するピクセル処理のいずれかを実行する統合演算ユニットと、
    前記複数のピクセルデータのうちの、前記統合演算ユニットがピクセル処理を実行しないピクセルデータに対してピクセル処理を実行するピクセル演算ユニット
    とを備えることを特徴とする請求項1に記載の画像処理装置。
  3. 前記ピクセル演算ユニットの個数が、前記エントリデータに含まれる前記複数の頂点データと前記複数のピクセルデータとのデータ数の差と同一であることを特徴とする請求項2に記載の画像処理装置。
  4. 複数の頂点データ及び該頂点データよりデータ数の多い複数のピクセルデータのいずれかを含むエントリデータを格納するレジスタと、
    前記エントリデータに含まれる前記複数の頂点データに対する頂点処理及び前記複数のピクセルデータの一部に対するピクセル処理のいずれかを実行する統合演算ユニットと、
    前記複数のピクセルデータのうちの、前記統合演算ユニットがピクセル処理を実行しないピクセルデータに対してピクセル処理を実行するピクセル演算ユニット
    とを備えることを特徴とするシェーダ装置。
  5. 前記エントリデータにおける前記複数の頂点データの各先頭ビットの位置と、前記複数のピクセルデータのいずれかの先頭ビットの位置が同一であることを特徴とする請求項4に記載のシェーダ装置。
JP2006159576A 2006-06-08 2006-06-08 画像処理装置及びシェーダ装置 Pending JP2007328581A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2006159576A JP2007328581A (ja) 2006-06-08 2006-06-08 画像処理装置及びシェーダ装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006159576A JP2007328581A (ja) 2006-06-08 2006-06-08 画像処理装置及びシェーダ装置

Publications (1)

Publication Number Publication Date
JP2007328581A true JP2007328581A (ja) 2007-12-20

Family

ID=38929006

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006159576A Pending JP2007328581A (ja) 2006-06-08 2006-06-08 画像処理装置及びシェーダ装置

Country Status (1)

Country Link
JP (1) JP2007328581A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014515856A (ja) * 2011-04-13 2014-07-03 クゥアルコム・インコーポレイテッド グラフィック処理のためのピクセル値圧縮

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014515856A (ja) * 2011-04-13 2014-07-03 クゥアルコム・インコーポレイテッド グラフィック処理のためのピクセル値圧縮

Similar Documents

Publication Publication Date Title
US10884734B2 (en) Generalized acceleration of matrix multiply accumulate operations
US11977888B2 (en) Inline data inspection for workload simplification
US8106914B2 (en) Fused multiply-add functional unit
US9436971B2 (en) System, method, and computer program product for accessing multi-sample surfaces
US20220405098A1 (en) Generalized acceleration of matrix multiply accumulate operations
US9612836B2 (en) System, method, and computer program product for implementing software-based scoreboarding
US9264066B2 (en) Type conversion using floating-point unit
KR102646906B1 (ko) 타일 기반 렌더링 방법 및 장치
US9235392B2 (en) System, method, and computer program product for improved power efficiency during program code execution
US9477477B2 (en) System, method, and computer program product for executing casting-arithmetic instructions
US9880851B2 (en) System, method, and computer program product for implementing large integer operations on a graphics processing unit
JP4637640B2 (ja) 図形描画装置
US6282628B1 (en) Method and system for a result code for a single-instruction multiple-data predicate compare operation
US7180518B2 (en) Image processing apparatus, image processing system, and image processing method
JP2010287110A (ja) 情報処理装置、情報処理方法、プログラム及び記録媒体
JP2007328581A (ja) 画像処理装置及びシェーダ装置
JP5435253B2 (ja) グラフィックスプロセッサユニットパイプラインにおける条件付き実行ビット
US8314803B2 (en) Buffering deserialized pixel data in a graphics processor unit pipeline
US9471310B2 (en) Method, computer program product, and system for a multi-input bitwise logical operation
US8599208B2 (en) Shared readable and writeable global values in a graphics processor unit pipeline
JP4817792B2 (ja) テクスチャベースのピクセルパッキング
EP0485833A2 (en) A method for executing graphics color saturating arithmetic instructions in a data processor
CN115718586B (zh) 像素颜色混合操作方法、图形绘制方法、装置和设备
JP4398965B2 (ja) Simdプロセッサにおけるデータ設定装置
JP2007249666A (ja) 情報処理装置、情報処理プログラムおよび情報処理方法