JP3706383B1 - 描画処理装置および描画処理方法、ならびに情報処理装置および情報処理方法 - Google Patents

描画処理装置および描画処理方法、ならびに情報処理装置および情報処理方法 Download PDF

Info

Publication number
JP3706383B1
JP3706383B1 JP2004120832A JP2004120832A JP3706383B1 JP 3706383 B1 JP3706383 B1 JP 3706383B1 JP 2004120832 A JP2004120832 A JP 2004120832A JP 2004120832 A JP2004120832 A JP 2004120832A JP 3706383 B1 JP3706383 B1 JP 3706383B1
Authority
JP
Japan
Prior art keywords
unit
data
processing
instruction
pixel
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2004120832A
Other languages
English (en)
Other versions
JP2005301918A (ja
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 Interactive Entertainment Inc
Original Assignee
Sony Computer Entertainment Inc
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 Computer Entertainment Inc filed Critical Sony Computer Entertainment Inc
Priority to JP2004120832A priority Critical patent/JP3706383B1/ja
Priority to EP04807291A priority patent/EP1746515A4/en
Priority to US11/547,299 priority patent/US8203569B2/en
Priority to PCT/JP2004/018933 priority patent/WO2005101225A1/ja
Application granted granted Critical
Publication of JP3706383B1 publication Critical patent/JP3706383B1/ja
Publication of JP2005301918A publication Critical patent/JP2005301918A/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General purpose rendering architectures
    • 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/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • G06F9/321Program or instruction counter, e.g. incrementing
    • 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/3802Instruction prefetching
    • 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/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming

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)
  • Multimedia (AREA)
  • Image Processing (AREA)
  • Image Generation (AREA)
  • Image Input (AREA)

Abstract

【課題】 ピクセルデータのパイプライン処理において、演算レイテンシやメモリレイテンシがあるために処理効率が落ちる。
【解決手段】 レジスタ32a〜32dはインターリーブするピクセルのデータを保持する。オペレータ34は、各レジスタからピクセルデータを読み出し、プログラムコードにしたがって処理し、処理結果をキャッシュ38を介して各レジスタに書き戻したり、メモリに書き込んだりする。インターリーブするピクセル数のプログラムカウンタPC0〜PC3は、各ピクセルに対するプログラムの命令のアドレスを記憶する。各プログラムカウンタは、交互にインストラクションローダ76によって読み出され、インクリメンタ74によりカウントアップされる。これにより、各ピクセルに対するプログラムの命令が交互にロードされ、ピクセル単位で命令がインターリーブされて、オペレータ34などに与えられる。
【選択図】図6

Description

この発明はデータを演算処理する情報処理技術、とくに描画データを処理する描画処理装置および描画処理方法に関する。
3次元コンピュータグラフィックスにおけるレンダリングエンジンは、複雑で高度なシェーディングアルゴリズムに対応するため、プログラマビリティをもった、よりプロセッサライクなものに変わりつつある。すなわち、レンダリングエンジンは、固定のグラフィックス機能を実装したハードウエアから、CPUと同じような命令セットを備えた演算ユニットを内蔵し、プログラミングによってフレキシブルに機能を追加していくことができるプロセッサへとその姿を変えつつある。
CPUの高速化に伴って、レンダリングエンジンにおけるメモリのアクセス性能と演算ユニットの処理性能の格差が広がる傾向にある。具体的には、演算ユニットがピクセルデータを演算処理し、リードモディファイライト(Read-Modify-Write;RMW)ユニットがフレームバッファに対してピクセルデータを読み書きするが、ピクセルデータをリードモディファイライトするためのレイテンシが演算ユニットのレイテンシに比べて非常に長いため、レンダリング処理の性能を低下させてしまう。
プロセッサタイプのレンダリングエンジンでは、演算ユニットがある程度長いレイテンシをもち、投入するデータの依存性によっては、演算レイテンシ分だけ動作を停止させる必要があることから、パイプライン処理に空き時間(バブルという)が発生することがあり、効率が低下しやすい。また、バブルを隠蔽化させるためには、シェーダのコードに工夫を加えるなど、ソフトウエアで対応するしかなく、アプリケーションの開発を困難にさせる要因になっている。
メモリレイテンシの問題については、フレームバッファのリードモディファイライト時には、データの一貫性(consistency)を保証する必要があり、複雑な制御を実装できないといった制限があるため、シェーダとRMWユニットを分離し、RMWユニットはフレームバッファへの読み書きを単純なパイプラインで処理することで対処していた。シェーダは、フレームバッファにアクセスしないため、プログラムを柔軟に実行できるようになるが、シェーダにより複雑なシェーディングアルゴリズムを実行させたり、画像処理などの高度な演算処理を行わせるために、RMW機能も含めた描画処理全体をより一層、高機能化したいというニーズが高まっている。しかし、RMW機能を含めて高機能するには、メモリレイテンシが非常に長いため、演算レイテンシの場合以上に、バブルによる処理効率の低下の問題が大きくなる。
本発明はこうした課題に鑑みてなされたものであり、その目的は、処理レイテンシを隠蔽化し、処理効率を高めることができる情報処理技術および描画処理技術を提供することにある。また、別の目的は、プログラマビリティが高く、柔軟に複雑な機能を実現することのできる描画処理技術を提供することにある。
上記課題を解決するために、本発明のある態様の描画処理装置は、それぞれが描画ユニットのデータを保持する複数のレジスタと、前記複数のレジスタを交互に選択し、選択されたレジスタが保持する前記描画ユニットのデータを読み出す選択部と、前記選択部により読み出された前記描画ユニットのデータが順次投入されて、前記複数の描画ユニットを連続的に演算処理する演算部とを含む。
ここで、「描画ユニット」は、描画演算処理に利用される任意のデータのあるまとまった単位であり、たとえば、単一のピクセル、複数のピクセルの集まりなどである。「複数の描画ユニットを連続的に演算処理する」とは、たとえば、複数の段階からなる一続きの処理について、各段階の処理機構を独立して動作させることにより、多数の処理を流れ作業的に高速に実行するパイプライン処理などで演算処理することを含む。この演算部は、複数のパイプラインで並列に命令を処理するスーパースカラの構成を備えてもよい。
前記選択部は、前記複数の描画ユニットのデータの前記演算部への投入タイミングを描画ユニット毎にシフトさせてもよい。前記投入タイミングのシフト量は、演算レイテンシやメモリレイテンシなど、描画ユニットの一連の処理のレイテンシに応じた値に設定されてもよい。たとえば、順に投入される2つの描画ユニットの投入間隔が、そのような処理のレイテンシ分もしくはそれ以上空いていてもよい。ここで、投入タイミングのシフト量は、ハードウエア固有の値に設計時に設定され、固定されてもよい。また、投入タイミングのシフト量は、任意の値に設定でき、外部から適宜変更可能であってもよい。
前記演算部は、同一の描画ユニットに適用すべき命令を、交互に投入される描画ユニット数に応じた間隔を空けて実行してもよい。たとえば、同一の描画ユニットに適用される連続する2つの命令の実行タイミングの間隔が、交互に投入される描画ユニット数分の命令の処理時間もしくはそれ以上空いていてもよい。
各描画ユニットを処理するプログラムの命令を描画ユニット単位で交互に前記演算部に供給する制御部をさらに含んでもよい。前記制御部は、さらに各描画ユニットを処理するプログラムの命令を描画ユニット単位で交互に前記書き込み部や前記リードモディファイライト部などのデータ処理部に供給してもよい。
前記制御部は、各描画ユニットを処理する前記プログラムの命令のアドレスを指すプログラムカウンタ値を発生する手段を有し、前記制御部は、各プログラムカウンタ値に基づいて各描画ユニットを処理する前記プログラムの命令を読み出して前記演算部に供給してもよい。各描画ユニットを処理するプログラムのプログラムカウンタ値を発生する手段として、描画ユニット数に対応した個数のプログラムカウンタを設け、各プログラムカウンタに各描画ユニットを処理するプログラムの命令のアドレスを保持させてもよい。あるいは、単一のプログラムカウンタを設け、その単一のプログラムカウンタの値から演算によって各描画ユニットを処理するプログラムのプログラムカウンタ値を生成してもよい。
前記制御部は、交互に投入される描画ユニット数に対応した個数のプログラムカウンタを有し、各プログラムカウンタは、各描画ユニットを処理する前記プログラムの命令のアドレスを保持し、前記制御部は、各プログラムカウンタの値を交互にカウントアップしながら、各プログラムカウンタの値に基づいて各描画ユニットを処理する前記プログラムの命令を読み出して前記演算部に供給してもよい。前記制御部は、各描画ユニットのデータの前記演算部への前記投入タイミングに合わせて、その描画ユニットを処理するプログラムの命令のアドレスを保持するプログラムカウンタの値のカウントアップを開始してもよい。これにより、前記選択部による描画ユニットの投入タイミングに合わせて、前記制御部は、投入された描画ユニットに対する命令を前記演算部に供給することができる。
前記制御部は、各プログラムカウンタ値に基づいて読み出された前記プログラムの命令を前記演算部の演算処理の段階に合わせてシフトさせて前記演算部に供給するシフタをさらに含んでもよい。これにより、前記演算部の演算処理の各段階に応じて、前記制御部は、描画ユニットに適用すべき命令を順次供給することができる。
本発明の別の態様は、描画処理方法である。この方法は、複数の描画ユニットを連続的に処理する際に、前記複数の描画ユニットを交互に前記処理に投入する。前記複数の描画ユニットのデータの前記処理への投入タイミングを描画ユニット毎にシフトさせてもよい。前記処理において、同一の描画ユニットに適用すべき命令が、交互に投入される描画ユニット数に応じた間隔を空けて実行されてもよい。
本発明のさらに別の態様は、情報処理装置である。この装置は、複数のデータユニットを連続的に処理するデータ処理部と、前記複数のデータユニットの各々の投入タイミングを前記データ処理部による処理のレイテンシに応じてシフトした上で、複数のデータユニットを交互に前記データ処理部に投入する選択部とを含む。各データユニットを処理するプログラムの命令をデータユニット単位で交互に前記データ処理部に供給する制御部をさらに含んでもよい。
本発明のさらに別の態様は、情報処理方法である。この方法は、複数のデータユニットを連続的に処理する際に、前記複数のデータユニットの各々の投入タイミングを前記処理のレイテンシに応じてシフトした上で、前記複数のデータユニットを交互に前記処理に投入する。各データユニットを処理するプログラムの開始タイミングを各データユニットのデータの前記処理への前記投入タイミングに合わせた上で、各データユニットを処理する前記プログラムの命令をデータユニット単位で交互に前記処理に供給してもよい。
なお、以上の構成要素の任意の組合せ、本発明の表現を方法、装置、システム、コンピュータプログラム、データ構造などの間で変換したものもまた、本発明の態様として有効である。
本発明によれば、連続処理されるデータの演算効率を上げることができ、また、効率良く描画処理を行うことができる。
図1は、実施の形態に係る描画処理装置100の構成図である。描画処理装置100は、3次元モデル情報をもとに描画データを生成するレンダリング処理を行う。
ラスタライザ10は、メモリもしくは他のプロセッサや頂点シェーダなどから描画プリミティブの頂点データを取得し、描画するスクリーンに対応したピクセル情報に変換する。描画プリミティブは一般的には三角形であり、ラスタライザ10は、3次元空間上の三角形を投影変換により描画平面上の三角形に変換するビュー変換を行い、さらに、描画平面上の三角形を描画平面の水平方向に沿ってスキャンしながら、1列毎に量子化されたピクセルに変換する。ラスタライザ10により、描画プリミティブがピクセル展開され、各ピクセルについて、RGB3原色で表されるカラー値、透明度を示すアルファ(α)値、奥行きを示すZ値などを含むピクセル情報が算出される。
ラスタライザ10は、スキャンラインに沿って描画ユニットを生成し、シェーダユニット30に与える。ラスタライザ10からシェーダユニット30に供給された描画ユニットは、キューにスタックされ、シェーダユニット30は、キューにスタックされた描画ユニットを順に処理する。
ここで、描画ユニットは、一般には、所定の大きさのピクセル領域であり、1つのピクセルであることも、複数のピクセルの集合であることもある。以下では、説明の簡単のため、描画ユニットが複数のピクセルからなる場合でも、描画ユニット内部での個々のピクセルの処理を隠蔽して、描画ユニット全体で1つのピクセルであるとみなして、本実施の形態に特徴的な描画処理方法を説明する。
テクスチャユニット50は、シェーダユニット30からテクスチャデータを指定するパラメータの入力を受け取り、テクスチャデータのアドレスを算出して、フレームバッファ40に対して必要なテクスチャデータを要求する。テクスチャユニット50は、フレームバッファ40から読み出されたテクスチャデータをキャッシュし、画像データや法線データなどの2次元または3次元データをマッピングして、ラスタライザ10において算出された各ピクセルのUV座標に対応したピクセルデータを生成する。テクスチャユニット50は、生成したピクセルデータをシェーダユニット30に出力する。
シェーダユニット30は、ラスタライザ10により算出されたピクセルデータをもとに、シェーディング処理を行い、テクスチャユニット50により得られたピクセルデータをもとに、テクスチャマッピング後のピクセル色を定め、フレームバッファ40に描画データを書き込む。シェーダユニット30は、さらに、フレームバッファ40に保持された描画データに対して、フォギング、アルファブレンディング等の処理を行い、最終的な描画色を求め、フレームバッファ40の描画データを更新する。フレームバッファ40に記憶された描画データは、表示装置に出力されて表示される。
RMWユニット20は、フレームバッファ40に記憶された生成済みのピクセルデータを読み込み、シェーダユニット30で生成されたピクセルデータと比較し、Zテストや、アルファブレンディングなどのピクセルデータの合成処理などを行い、更新されたピクセルデータをフレームバッファ40に書き戻す。RMWユニット20は、このリード、モディファイ、ライトの一連の動作からなるリードモディファイライト操作をパイプライン処理で行う。後述のように、実施の形態では、RMWユニット20を外し、シェーダユニット30にRMW機能をもたせ、シェーダユニット30が直接フレームバッファ40に対してピクセルデータのリードモディファイライトができるようにする。ここでは、後述のRMW機能をもつシェーダユニット30との比較のため、RMWユニット20の構成を示している。
図2は、本実施の形態に係るシェーダユニット30の構成を説明する図である。シェーダユニット30は、レジスタ群32とオペレータ34を含む。レジスタ群32は、複数のレジスタを含み、ラスタライザ10およびテクスチャユニット50から投入されるピクセルデータを保持する。また、レジスタ群32は、フレームバッファ40に記憶されたピクセルデータを読み込んで保持する。オペレータ34は、レジスタ群32からピクセルデータを読み出し、シェーダコードを実行してピクセルデータをパイプライン処理し、その結果をレジスタ群32に書き戻したり、フレームバッファ40に書き込んだりする。
シェーダユニット30が実行するプログラムにおいて、たとえば、ある命令の実行結果を次の命令で使用するなど、命令間に依存性が存在する場合、オペレータ34の演算レイテンシ分だけ動作を停止させる必要がある。この停止により生じる命令間の空き時間はバブルと呼ばれる。処理効率を上げるためには、依存性のない命令を連続して並べ、できるだけバブルを発生させないようにする必要がある。しかし、概してピクセルシェーダコードは、CPUの汎用プログラムと違って、非常に単純な処理を実行するものであるから、依存性の少ない命令を並べることは困難である。そこで、複数の異なるピクセルに対する命令を交互に実行するピクセルインターリーブにより、演算レイテンシを隠蔽化することが考えられる。以下、ここで説明するピクセルインターリーブを、後述の拡張ピクセルインターリーブと区別する意味で、「単純なピクセルインターリーブ」と呼ぶことにする。
図3(a)、(b)は、シェーダユニット30による単純なピクセルインターリーブを説明する図である。ここでは、4個のピクセルをインターリーブする例を示す。図3(a)は、ピクセルインターリーブを行うためのシェーダユニット30の構成を示す。レジスタ群32は、インターリーブするピクセル数(以下、ピクセルインターリーブ数ともいう)に対応して第1〜第4のレジスタ32a〜32dを含み、第1〜第4のレジスタ32a〜32dのいずれかに格納されたピクセルデータがセレクタ33a〜33cを介してオペレータ34に交互に投入されることにより、4ピクセルのインターリーブが実現される。
ここで、セレクタ33a〜33cはオペレータ34における演算子の項数に応じて設けられ、命令サイクル毎に、第1〜第4のレジスタ32a〜32dのいずれかを交互に選択し、選択されたレジスタに保持されたピクセルデータをオペレータ34に投入する。ここでは、オペレータ34が(a×b+c)の形の3項演算子であるため、3個のセレクタ33a〜33cが設けられている。以下、セレクタ33a〜33cを総称してセレクタ33という。オペレータ34は、複数の演算操作をパイプライン処理するものであり、パイプラインによる演算のレイテンシはここでは8サイクルであるとする。
図3(b)は、4個のピクセルに対する命令がインターリーブされて実行される様子を示す。ここで、Pn−m(n、mは整数)は、ピクセル演算の1単位の命令を示し、nはピクセルID、mは命令IDを示す。同図では、横軸に時間tをとり、命令の実行順序が示されている。1サイクルから9サイクルまで、P0−1、P1−1、P2−1、P3−1、P0−2、P1−2、P2−2、P3−2、P0−3の順に命令が実行されている。ピクセルIDが0〜3のピクセルをピクセル0〜3と呼ぶことにする。
厳密に言えば、セレクタ33により、第1〜第4のレジスタ32a〜32dのピクセルデータがこの順にオペレータ34以降のデータ処理ユニットに投入されることで、各ピクセルに対する処理が開始され、各ピクセルデータに適用されるプログラムの連続する命令が後述の制御機構によりオペレータ34以降のデータ処理ユニットに与えられる。これにより、4個のピクセルに対する命令を交互に実行する単純ピクセルインターリーブが実現される。ここでは、投入されたピクセルデータとそのピクセルデータに対して適用される命令を組み合わせて「ピクセルに対する命令」と呼んでいる。
いまピクセル0に着目すると、ピクセル0に対する命令P0−1、P0−2、P0−3は、ピクセル0に対するプログラムの連続する命令であるが、他のピクセル1〜3の命令が挿入されることによりインターリーブされている。他のピクセル1〜3に着目した場合も同様である。
前半の4つの命令P0−1、P1−1、P2−1、P3−1は、4つの異なるピクセル0〜3に対して、命令IDが1である同一の命令を実行するものである。また、後半の4つの命令P1−2、P2−2、P3−2は、同様に4つの異なるピクセル0〜3に対して、命令IDが2である同一の命令を実行するものである。
ここで、ピクセル0に対する命令に注目すると、符号201で示す命令IDが1である命令P0−1と、符号202で示す命令IDが2である命令P0−2の間は、4サイクル離れており、オペレータ34の演算レイテンシである8サイクルより短いため、これら2つの命令は、互いに独立したものでなければならない。仮に依存性があれば、先の命令P0−1が完了する前に、後の命令P0−2の実行が始まり、処理結果の一貫性が失われる。
一方、符号201で示す命令IDが1である命令P0−1と、符号203で示す命令IDが3である命令P0−3の間は、8サイクル離れているため、オペレータ34の演算レイテンシが確保されており、これら2つの命令には依存性があっても問題は生じない。
図3(b)のような単純なピクセルインターリーブをせずに、仮に、同一のピクセルについて命令を順次実行する場合は、オペレータ34の演算レイテンシが8サイクルであるため、8サイクル分は互いに依存関係にある命令を実行することができない。したがって、演算レイテンシの8サイクルの間は、互いに独立した8個の命令を実行することになる。
一方、図3(b)のように、演算レイテンシが8サイクルである場合に、4ピクセルの命令を交互に実行する単純なピクセルインターリーブを行えば、第1サイクルから第4サイクルまでは、4個の異なるピクセルが順次処理されるため、同一命令が実行されてもよい。第5サイクルでは、第1サイクルと同一のピクセルが処理され、まだ演算レイテンシ内であるから、第1サイクルの命令に依存しない命令が実行されなければならない。このように、4個のピクセルをインターリーブした場合、演算レイテンシの8サイクル内に実行される独立した命令の個数は2個までに減らすことができる。
ただし、上記のピクセルインターリーブにおいて、RMW機能を実現した場合、インターリーブされた複数のピクセルはそれぞれフレームバッファ40の異なる位置を描画するものでなければならない。
たとえば、図3(b)において、第1〜第4サイクルまで、ピクセル0〜3に対して同一の命令を実行しているが、ピクセル0〜3は、ピクセルIDが異なっていても、同一位置である可能性がある。なぜなら、描画処理は、複数のオブジェクトをポリゴンモデルで表し、ポリゴン単位で描画処理が行われるため、異なるポリゴンの描画でも画面上の同一ピクセルに対する描画を行っていることが十分にありえる。また、最近の高品質の描画処理では、1つのポリゴンが比較的小さい画素領域に対応しており、極端な場合、1ポリゴンが1ピクセルに対応していることもある。したがって、描画対象のポリゴンが異なっているためにピクセルIDが違う番号であったとしても、同一のピクセル位置を指している可能性はかなり高い。
仮に、第1〜第4サイクルにおいて、同一のピクセル位置を描画処理したとすると、たとえば、命令P0−1でフレームバッファ40の特定のメモリ領域を取得し、モディファイが完了する前に、次の命令P1−1で同一位置のピクセルを取得することになり、リードアフターライトエラーが発生する。これを避けるためにはメモリインターロックによる制御、もしくは同一位置の処理がインターリーブ内に存在するかどうかを確認して処理自体をロックさせるなどの制御が必要となる。どちらの制御も性能低下や制御機構の複雑化につながる。そこで、同一位置の描画処理が続けて実行されない工夫が必要となる。
また別の問題として、ピクセルインターリーブにおいてRMW機能を実現するには、オペレータ34による演算レイテンシよりも長いRMWのレイテンシを隠蔽する必要が生じる。RMWのレイテンシは主にメモリレイテンシである。
図4は、RMW機能を含むシェーダユニット30の構成において、RMWレイテンシを説明する図である。オペレータ34から出力されたピクセルの処理結果はフォーマットコンバータ36においてフォーマット変換され、キャッシュ38を介してフレームバッファ40に書き込まれる。また、フレームバッファ40からキャッシュ38にキャッシュされたデータは、第1〜第4のレジスタ32a〜32dに振り分けられて読み出される。RMWレイテンシは、符号210で示すように、オペレータ34、フォーマットコンバータ36、およびキャッシュ38が、第1〜第4のレジスタ32a〜32dにピクセルデータを保持するために、フレームバッファ40に対してピクセルデータを読み書きするのにかかる時間である。
このRMWレイテンシは、図3(a)で説明したオペレータ34の演算レイテンシよりもさらに長いため、RMWレイテンシを隠蔽化するために、図3(b)で示した単純なピクセルインターリーブを行うと、相当数のピクセルをインターリーブすることで、RMW命令がRMWレイテンシ内に重複して出現することを避ける必要がある。これはインターリーブするピクセルのデータを保持するためのレジスタ数の増加につながり、実装上困難である。
そこで、本実施の形態では、単純なピクセルインターリーブにおいて、ピクセルの投入タイミングをずらす「ピクセルシフト」を行うことで、ピクセルインターリーブ数を増加させることなく、RMWの長いレイテンシを隠蔽する。また、ピクセルの投入タイミングをずらしたことにより、ピクセルが離れて投入されるため、同一のピクセル位置に描画してしまうリスクも回避することができる。
以下、単純なピクセルインターリーブにピクセルシフトを組み合わせたピクセルインターリーブを「拡張ピクセルインターリーブ」と呼ぶ。拡張ピクセルインターリーブでは、複数のピクセルに対する命令がピクセル単位でインターリーブされるとともに、ピクセルの投入タイミングすなわちピクセルに対するプログラムの開始タイミングがピクセル毎にずれることにより、RMWレイテンシ以上の命令間隔が確保される。拡張ピクセルインターリーブは、これから述べるピクセルシフト量とインストラクションシフト量の2つのシフト量で規定される。
ピクセルシフト量とは、連続して投入するピクセルの投入間隔をいう。言い換えれば、ピクセルシフト量は、2つの連続して投入されるピクセルの処理開始時刻の差であり、第1のピクセルに対する最初の命令が実行されてから第2のピクセルに対する最初の命令が実行されるまでの時間間隔のことである。ピクセルシフト量は、RMWレイテンシ以上の時間間隔に設定される。RMWレイテンシはハードウエア固有のため、ピクセルシフト量はハードウエア毎に一意の値に定まる。たとえば、RMWレイテンシが7サイクルであれば、ピクセルシフト量は7サイクル以上に設定される。
一方、インストラクションシフト量とは、同一のピクセルに対するプログラムの命令(インストラクション)の実行間隔をいう。言い換えれば、インストラクションシフト量とは、あるピクセルに対するプログラムにおける連続する命令間の実行間隔であり、第1の命令が実行されてから第2の命令が実行されるまでの時間間隔のことである。インストラクションシフト量は、ピクセルインターリーブ数に対応して設定される。4ピクセルのインターリーブの場合、インストラクションシフト量は、4サイクルに設定される。ここでは、説明の簡単のため、1ピクセルの処理に1サイクルかかるとするが、1ピクセルの処理に数サイクルかかる場合は、インストラクションシフト量は、ピクセルインターリーブ数に処理にかかるサイクル数を乗じたものとなる。また、描画ユニットが複数のピクセルの集合である場合には、ピクセル集合内のピクセル数に応じたサイクル数となる。
インストラクションシフト量を大きくすることは、ピクセルインターリーブ数を増やすことにつながり、ピクセルデータを保持するレジスタなどのハードウエアリソースを消費することになる。インストラクションシフト量は、ハードウエアの設計条件によって決めることができる。
図5は、本実施の形態に係る拡張ピクセルインターリーブを説明する図である。横軸を時間に取り、ピクセル演算プログラムの命令が実行される順序が示されている。
同図において、命令を「n−m」(n、mは整数)で表す。nはピクセルID、mは命令IDである。同図は、RMWレイテンシが6サイクルのときに、4ピクセルをインターリーブする例であり、ピクセルシフト量は7サイクルであり、インストラクションシフト量は4サイクルである。ピクセルIDは0〜7であり、命令IDは0〜8である。ピクセルIDが0〜7のピクセルをピクセル0〜7と呼ぶ。
ピクセル0の最初の命令0−0(符号220)が実行されてから、ピクセル1の最初の命令1−0(符号222)が実行されるまでには、7サイクルのピクセルシフト量の間隔が設けられる。
ピクセル0に対する第1の命令0−0(符号220)が実行されてから、ピクセル0に対する第2の命令0−1(符号221)が実行されるまでは、4サイクルのインストラクションシフト量の間隔が設けられる。この間隔は、ピクセルインターリーブ数4に対応している。同様に、ピクセル0の第3の命令0−2が第2の命令0−1の4サイクル後に実行され、以降、同図の斜線で示したように、4サイクルずつ間隔を空けて、第4の命令0−3、第5の命令0−4、…、第9の命令0−8が順に実行される。
同様に、ピクセル1に対するプログラムの命令1−0、1−1、1−2、…、1−8は、ピクセル0に対するプログラムの開始位置から7サイクルだけずれた符号222の位置から各命令間を4サイクルずつ間隔を空けて実行される。
以降、ピクセル2、3に対するプログラムの命令が、一つ前のピクセルに対するプログラムの開始位置から7サイクルだけずれた位置から各命令間を4サイクルずつ間隔を空けて実行される。
次に、ピクセル4に対するプログラムの命令の実行位置を見ると、命令4−0は、ピクセルシフトにより、一つ前のピクセル3に対するプログラムの開始位置、すなわち命令3−0の位置から7サイクル後に実行されることになるが、この位置では既に命令0−7が実行されているため、命令4−0は、最も早く実行可能な位置として、命令3−0の位置から15サイクル後において実行される。このように、ピクセルシフト量だけずらした位置が既に埋まっている場合は、それ以降の空いている最初の位置において命令が実行される。それ以降は、命令4−1、4−2、…、4−8が、各命令間を4サイクルずつ空けて実行される。
以降、同様にしてピクセル5〜7に対するプログラムの命令が順次実行される。
一般に、ピクセルシフト量を大きく取ると、命令間隔が大きくなるが、プログラムが長く、プログラムの命令の数が十分に多ければ、図5のように、プログラムの中間期間ではその命令間隔を完全に埋め尽くすことができる。
同図に示すように、最初に実行される命令0−0から命令2−1の直前までの期間は、実行される命令間に空きがあり、完全には命令が埋まっていない。このようにプログラムの実行が始まり、命令が埋まり始める直前までの時間をプロローグ期間という。また、命令5−7の直後から最後に実行される命令7−8までの期間も、実行される命令間に空きが生じ、完全には命令が埋まっていない。このように命令間に空きが生じ始めてからプログラムが終了するまでの期間をエピローグ期間という。
プログラムの最初のプロローグ期間と最後のエピローグ期間において、命令間に空きが生じるのは、ピクセルシフトを行っていることが原因であるが、ピクセルシフト量は、最低限RMWレイテンシの時間間隔に設定すればよく、プログラムの大部分である中間期間では連続的に命令が実行されるため、プログラム全体の処理効率を考えた場合、プロローグ期間とエピローグ期間による処理効率への影響は無視できる。
いま、命令ID=7がRMW命令を示しているとする。たとえば、命令0−7、1−7、2−7などがRMW命令である。符号230で示すRMW命令である命令4−7のレイテンシは6サイクルであり、符号231で示す命令7−3の位置でライトが完了する。命令4−7の後のRMW命令は、命令4−7から数えて7サイクル後の符号232で示す命令5−7であり、このときには既に命令4−7のライトは完了している。このように同一の命令は必ずピクセルシフト量だけずれ、ピクセルシフト量はRMWレイテンシ以上に設定しているため、RMWレイテンシ内でRMW命令が重複することはない。
ここで、プログラムによってはRMWをリード、モディファイ、ライトに分離して実行する場合もあるが、これは静的に判明することであるから、アセンブラなどのツールにて警告メッセージを出すことで対応することができる。
図6は、図5の拡張ピクセルインターリーブを実行するための制御機構を説明する図である。ピクセルインターリーブ数4に対応して、符号72で示す第1〜第4のプログラムカウンタPC0〜PC3が設けられる。第1〜第4のプログラムカウンタPC0〜PC3を総称するときは、プログラムカウンタPCと呼ぶことにする。それぞれのプログラムカウンタPCは、ピクセルに対するプログラムにおいて、次に読み込むべき命令のアドレスを記憶するレジスタであり、インストラクションローダ76によりメモリからプログラムカウンタPCで指定された命令が読み込まれるたびに、インクリメンタ74によりカウントアップされる。
キックカウンタ70は、これから処理が始まるピクセルに対するプログラムの該当プログラムカウンタPCを選択してキックすることで、そのプログラムの実行を開始させる。たとえば、ピクセル0に対するプログラムを開始するタイミング、すなわち図5における命令0−0を実行するタイミングにおいて、キックカウンタ70はプログラムカウンタPC0をキックする。これにより、ピクセル0に対するプログラムの最初の命令0−0がインストラクションローダ76により読み出される。
また、キックカウンタ70は、ピクセル1に対するプログラムを開始するタイミング、すなわち図5における命令1−0を実行するタイミングにおいて、プログラムカウンタPC1をキックする。これにより、ピクセル1に対するプログラムの最初の命令1−0がインストラクションローダ76により読み出される。
ピクセルインターリーブ数4に対応して設けられた4個のプログラムカウンタPC0〜PC3は、交互にインストラクションローダ76によって読み出され、インストラクションローダ76は、4個のプログラムカウンタPC0〜PC3で指定されたアドレスにしたがって、4個のピクセル0〜3のそれぞれに対するプログラムの命令を交互にロードする。これにより、4個のピクセルに対する命令のインターリーブが実現される。
キックカウンタ70によって、ピクセルシフト量にしたがって、4個のピクセル0〜3のそれぞれに対するプログラムの開始タイミングがずらされるため、図5で説明したピクセルシフトが実現し、さらに、インストラクションローダ76によって、4個のピクセル0〜3のそれぞれに対応する4個のプログラムカウンタPC0〜3が交互に読み出され、インクリメンタ74によってカウントアップされることから、図5で説明したインストラクションシフトが実現する。このようにして、図5に示した、ピクセルシフトとインストラクションシフトで規定される拡張ピクセルインターリーブが実現される。
インストラクションローダ76は、プログラムカウンタPCで指定された命令をメモリからロードして、インストラクションキャッシュ60に蓄積する。インストラクションフェッチャ62がインストラクションキャッシュ60から命令を取得し、インストラクションデコーダ64がその命令をデコードする。インストラクションデコーダ64によりデコードされた命令はコントロールバッファ66にバッファされる。
上述のように、4個のピクセル0〜3のそれぞれに対応する4個のプログラムカウンタPC0〜PC3が順次カウントアップされながらインストラクションローダ76によって参照されることから、コントロールバッファ66には、4個のピクセル0〜3のそれぞれに対応する命令が交互にFIFO(First-In First-Out)方式でバッファされることになる。
コントロールバッファ66には、ピクセル0に対応する命令(符号240)、ピクセル1に対応する命令(符号241)、ピクセル2に対応する命令(符号242)、ピクセル3に対応する命令(符号243)が順にバッファされる。また、その後に、同様に、次に実行されるべきピクセル0に対応する命令(符号250)、ピクセル1に対応する命令(符号251)、ピクセル2に対応する命令(符号252)、ピクセル3に対応する命令(符号253)が順にバッファされる。ピクセル0の処理が終われば、次のピクセル4に対応する命令がバッファされ、以降、ピクセル7までの命令が順次バッファされることになる。コントロールバッファ66は、バッファされた命令をFIFO方式にしたがって順次コントロールシフタ68に出力する。
コントロールシフタ68は、コントロールバッファ66にバッファされた命令を同時にオペレータ34、フォーマットコンバータ36,およびキャッシュ38に供給するが、オペレータ34、フォーマットコンバータ36、およびキャッシュ38のパイプラインの位置に合わせて命令の供給時間をシフトさせる。このために、コントロールシフタ68は、命令を一時的にバッファして供給時間を所定サイクルだけずらすためのシフタをもつ。
コントロールシフタ68は、オペレータ34の演算パイプラインが3段階で構成される場合、シフタを用いて、パイプラインの段階に合わせて命令の供給時間を1サイクルずつ遅らせる。また、フォーマットコンバータ36における演算は、パイプライン処理として、オペレータ34の演算の後段に位置するため、オペレータ34の最終段の演算よりもさらに命令の供給時間を1サイクル遅らせる。さらに、キャッシュ38における演算は、パイプライン処理として、フォーマットコンバータ36の演算の後段に位置するため、フォーマットコンバータ36の演算よりもさらに命令の供給時間を1サイクル遅らせる。
このように、コントロールシフタ68は、命令をパイプラインの位置に合わせてシフトして供給することにより、ピクセルに対するパイプライン処理の段階が進むにつれて、その段階に該当する命令がオペレータ34、フォーマットコンバータ36、およびキャッシュ38に供給され、ピクセルに対するパイプライン処理が遂行される。
なお、上記の説明では、ピクセルインターリーブ数4に対応して4個のプログラムカウンタを設け、それぞれのプログラムカウンタが各ピクセルに対するプログラムの命令のアドレスを保持したが、別の実施例として、プログラムカウンタを1個だけ設け、そのプログラムカウンタの値をもとに、ピクセルシフト量とインストラクションシフト量にしたがって、各ピクセルに対するプログラムのプログラムカウンタ値を演算により求めるように構成してもよい。これにより、物理的には1個のプログラムカウンタによって、実質的には4個のプログラムカウンタを設けた場合と同等の作用が得られる。
以上述べたように、本実施の形態によれば、シェーダユニットにおいて、複数のピクセルに対する命令を交互に実行するピクセルインターリーブを行い、演算ユニットやメモリに対する長いレイテンシを隠蔽化することができる。さらに、交互に投入するピクセルの投入タイミングや命令の実行間隔を調整することにより、同一ピクセルに対する依存性のある命令が連続して実行されることを避け、ピクセル間で命令に依存性が存在する場合にも対処することができる。これにより、従来では効率低下要因であったバブルを低減し、処理効率を上げることが可能である。
また、本実施の形態によれば、ピクセルの投入タイミングをずらすピクセルシフトによって、リードモディファイライトするピクセルデータの局所性がなくなり、同一ピクセル位置をリードモディファイライトする状況を回避することができる。これにより、描画対象のピクセル領域内の複数の隣接するピクセルを連続的に投入しても、バブルが生じないでパイプライン処理を実行することができる。また、ピクセルの投入タイミングをシフトした上で、ピクセルに対する命令を交互に実行することにより、命令についても同一命令が連続して実行される状況が回避され、実行される命令の局所性も同時になくなっている。したがって、RMW命令のようなデータの一貫性の保証が必要な命令がRMWレイテンシ内に重複して実行される問題が発生しない。
シェーダユニットにおいて、演算処理の過程にあるピクセルデータを保持するためのレジスタの数には、ハードウエアの設計上の制約がある。そのため、シェーダユニットは、キャッシュやフレームバッファなどのメモリにピクセルデータの中間結果をいったん書き出し、必要に応じてそのピクセルデータをメモリから読み出してさらに演算処理を進め、更新されたピクセルデータを書き戻すことになる。したがって、メモリに対するRMW機能は描画処理において不可欠である。本実施の形態では、拡張ピクセルインターリーブにより、長いRMWレイテンシを隠蔽化することができ、シェーディングユニットにRMW機能をもたせることができる。従来、プログラマビリティを導入できず、シェーディングエンジンと分離せざるを得なかったRMWユニットをシェーディングエンジンと統合して一体化することにより、RMWを含めた描画処理全体の高機能化を図ることができるため、フレキシビリティが格段に向上する。
以上、本発明を実施の形態をもとに説明した。実施の形態は例示であり、それらの各構成要素や各処理プロセスの組合せにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。
そのような変形例を説明する。上記の実施の形態では、ピクセル単位でピクセルに対する命令をインターリーブする方法を説明したが、複数のピクセルの集合を1つの単位としてインターリーブしてもよい。このとき、ピクセル集合内では同一のピクセル位置に対して命令を実行することがなく、ピクセル集合内のピクセル間では命令の依存性がないものとする。そこで、ピクセル集合内では命令を単純な順番で実行し、ピクセル集合間では、ピクセル集合を1つのピクセルと見なして、上記の拡張ピクセルインターリーブを行うことができる。
また、上記の実施の形態では、ピクセル演算のパイプライン処理を例に挙げ、演算命令をピクセル単位でインターリーブすることにより、演算レイテンシやメモリレイテンシなどの処理レイテンシを隠蔽する方法を説明したが、本発明は、ピクセル演算に限らず、他の大量データを処理する場合にも適用することができる。特に、本発明は、同じようなプログラムを大量のデータに対して実行する場合に適用し、同様の方法で、個々のデータに対する命令をインターリーブし、演算レイテンシやメモリレイテンシなどを隠蔽化することができる。たとえば、本発明は、音声やビデオのマルチメディアデータの処理に適用することができる。音声やビデオなどのマルチメディアの符号化や復号の処理では、時間軸方向のデータについて差分演算や畳み込み演算を行うため、参照するデータの局所性や命令の相互依存性が生じやすい。したがって、音声やビデオのデータユニット単位で命令をインターリーブして処理することにより、音声やビデオのデータの符号化や復号の処理効率を上げることができる。
実施の形態に係る描画処理装置の構成図である。 実施の形態に係るシェーダユニットの構成を説明する図である。 シェーダユニットによる単純なピクセルインターリーブを説明する図である。 RMW機能を含むシェーダユニットの構成において、RMWレイテンシを説明する図である。 本実施の形態に係る拡張ピクセルインターリーブを説明する図である。 図5の拡張ピクセルインターリーブを実行するための制御機構を説明する図である。
符号の説明
10 ラスタライザ、 20 RMWユニット、 30 シェーダユニット、 32 レジスタ群、 33 セレクタ、 34 オペレータ、 36 フォーマットコンバータ、 38 キャッシュ、 40 フレームバッファ、 50 テクスチャユニット、 60 インストラクションキャッシュ、 62 インストラクションフェッチャ、 64 インストラクションデコーダ、 66 コントロールバッファ、 68 コントロールシフタ、 70 キックカウンタ、 72 プログラムカウンタ、 74 インクリメンタ、 76 インストラクションローダ、 100 描画処理装置。

Claims (17)

  1. それぞれが描画演算処理に繰り返し利用されるデータの単位である描画ユニットのデータを保持する複数のレジスタと、
    前記複数のレジスタを交互に選択し、選択されたレジスタが保持する前記描画ユニットのデータを読み出す選択部と、
    前記選択部により読み出された前記描画ユニットのデータが順次投入され、前記複数の描画ユニットを連続的に演算処理する演算部とを含み、
    前記選択部は、順次投入される前記描画ユニットのデータの前記演算部への投入タイミングを、1つ前に投入された描画ユニットのデータの投入直後に最初に投入可能となるタイミングを避けて所定の時間だけシフトさせることを特徴とする描画処理装置。
  2. 前記投入タイミングのシフト量は、前記演算部による演算レイテンシに応じた値に設定されることを特徴とする請求項に記載の描画処理装置。
  3. 前記演算部は、同一の描画ユニットに適用すべき命令を、交互に投入される描画ユニット数に応じた間隔を空けて実行することを特徴とする請求項またはに記載の描画処理装置。
  4. 前記演算部による描画ユニットの演算処理結果をメモリに書き込む処理を行う書き込み部をさらに含み、前記投入タイミングのシフト量は、前記書き込み部による処理レイテンシに応じた値に設定されることを特徴とする請求項に記載の描画処理装置。
  5. 前記描画ユニットのデータに対する既に生成済みの演算処理結果をメモリから読み出し、前記演算部による描画ユニットのデータに対する演算処理結果との間で処理を行って、前記メモリに書き戻すリードモディファイライト部をさらに含み、前記投入タイミングのシフト量は、前記リードモディファイライト部によるリードモディファイライトのレイテンシに応じた値に設定されることを特徴とする請求項に記載の描画処理装置。
  6. 各描画ユニットを処理するプログラムの命令を描画ユニット単位で交互に前記演算部に供給する制御部をさらに含むことを特徴とする請求項1からのいずれかに記載の描画処理装置。
  7. 前記制御部は、各描画ユニットを処理する前記プログラムの命令のアドレスを指すプログラムカウンタ値を発生する手段を有し、前記制御部は、各プログラムカウンタ値に基づいて各描画ユニットを処理する前記プログラムの命令を読み出して前記演算部に供給することを特徴とする請求項に記載の描画処理装置。
  8. 前記制御部は、交互に投入される描画ユニット数に対応した個数のプログラムカウンタを有し、各プログラムカウンタは、各描画ユニットを処理する前記プログラムの命令のアドレスを保持し、前記制御部は、各プログラムカウンタの値を交互にカウントアップしながら、各プログラムカウンタの値に基づいて各描画ユニットを処理する前記プログラムの命令を読み出して前記演算部に供給することを特徴とする請求項に記載の描画処理装置。
  9. 前記制御部は、各描画ユニットのデータの前記演算部への前記投入タイミングに合わせて、その描画ユニットを処理するプログラムの命令のアドレスを保持するプログラムカウンタの値のカウントアップを開始することを特徴とする請求項に記載の描画処理装置。
  10. 前記制御部は、各プログラムカウンタ値に基づいて読み出された前記プログラムの命令を前記演算部の演算処理の段階に合わせてシフトさせて前記演算部に供給するシフタをさらに含むことを特徴とする請求項からのいずれかに記載の描画処理装置。
  11. 描画演算処理に繰り返し利用されるデータの単位である描画ユニットを複数個連続的に演算処理する演算部に複数の前記描画ユニットのデータが順次投入される際に、順次投入される前記描画ユニットのデータの前記演算部への投入タイミングが、1つ前に投入された描画ユニットのデータの投入直後に最初に投入可能となるタイミングを避けて所定の時間だけシフトされた上で、複数の前記描画ユニットが交互に前記演算部に投入されることを特徴とする描画処理方法。
  12. 前記投入タイミングのシフト量は、前記処理によるレイテンシに応じた値に設定されることを特徴とする請求項11に記載の描画処理方法。
  13. 前記演算部において、同一の描画ユニットに適用すべき命令が、交互に投入される描画ユニット数に応じた間隔を空けて実行されることを特徴とする請求項11または12に記載の描画処理方法。
  14. データ処理に繰り返し利用されるデータの単位であるデータユニットを複数個連続的に処理するデータ処理部と、
    前記複数のデータユニットの各々の投入タイミングを前記データ処理部による処理のレイテンシに応じてシフトした上で、前記複数のデータユニットを交互に前記データ処理部に投入する選択部とを含み、
    前記選択部は、前記複数のデータユニットの各々の前記データ処理部への投入タイミングを、1つ前に投入されたデータユニットの投入直後に最初に投入可能となるタイミングを避けてシフトさせることを特徴とする情報処理装置。
  15. 各データユニットを処理するプログラムの命令をデータユニット単位で交互に前記データ処理部に供給する制御部をさらに含むことを特徴とする請求項14に記載の情報処理装置。
  16. データ処理に繰り返し利用されるデータの単位であるデータユニットを複数個連続的に処理するデータ処理部に複数の前記データユニットが投入される際に、複数の前記データユニットの各々の前記処理部への投入タイミングが、1つ前に投入されたデータユニットの投入直後に最初に投入可能となるタイミングを避けて所定の時間だけシフトされた上で、複数の前記データユニットが交互に前記データ処理部に投入されることを特徴とする情報処理方法。
  17. 各データユニットを処理するプログラムの開始タイミングを各データユニットのデータの前記処理への前記投入タイミングに合わせた上で、各データユニットを処理する前記プログラムの命令データユニット単位で交互に前記データ処理部制御部により供給されることを特徴とする請求項16に記載の情報処理方法。

JP2004120832A 2004-04-15 2004-04-15 描画処理装置および描画処理方法、ならびに情報処理装置および情報処理方法 Expired - Fee Related JP3706383B1 (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
JP2004120832A JP3706383B1 (ja) 2004-04-15 2004-04-15 描画処理装置および描画処理方法、ならびに情報処理装置および情報処理方法
EP04807291A EP1746515A4 (en) 2004-04-15 2004-12-17 PLOTTING DEVICE, PLOTTING METHOD, INFORMATION PROCESSING DEVICE AND INFORMATION PROCESSING METHOD
US11/547,299 US8203569B2 (en) 2004-04-15 2004-12-17 Graphics processor, graphics processing method, information processor and information processing method
PCT/JP2004/018933 WO2005101225A1 (ja) 2004-04-15 2004-12-17 描画処理装置および描画処理方法、ならびに情報処理装置および情報処理方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2004120832A JP3706383B1 (ja) 2004-04-15 2004-04-15 描画処理装置および描画処理方法、ならびに情報処理装置および情報処理方法

Publications (2)

Publication Number Publication Date
JP3706383B1 true JP3706383B1 (ja) 2005-10-12
JP2005301918A JP2005301918A (ja) 2005-10-27

Family

ID=35150181

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004120832A Expired - Fee Related JP3706383B1 (ja) 2004-04-15 2004-04-15 描画処理装置および描画処理方法、ならびに情報処理装置および情報処理方法

Country Status (4)

Country Link
US (1) US8203569B2 (ja)
EP (1) EP1746515A4 (ja)
JP (1) JP3706383B1 (ja)
WO (1) WO2005101225A1 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130027416A1 (en) * 2011-07-25 2013-01-31 Karthikeyan Vaithianathan Gather method and apparatus for media processing accelerators
JP6712052B2 (ja) * 2016-06-29 2020-06-17 富士通株式会社 演算処理装置及び演算処理装置の制御方法
US10360654B1 (en) * 2018-05-25 2019-07-23 Intel Corporation Software scoreboard information and synchronization

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05282199A (ja) * 1992-03-30 1993-10-29 Sony Corp 画像メモリ装置
US5434967A (en) * 1992-10-27 1995-07-18 International Business Machines Corporation Decision variable hardware logic and processing methods for graphics display system
US6104417A (en) * 1996-09-13 2000-08-15 Silicon Graphics, Inc. Unified memory computer architecture with dynamic graphics memory allocation
US6259460B1 (en) * 1998-03-26 2001-07-10 Silicon Graphics, Inc. Method for efficient handling of texture cache misses by recirculation
EP1014275A1 (en) 1998-12-23 2000-06-28 TELEFONAKTIEBOLAGET L M ERICSSON (publ) Pipeline processing for data channels
US6661457B1 (en) * 1999-03-22 2003-12-09 Biomorphic Vlsi, Inc. Pixel read-out architecture
US6421059B1 (en) * 1999-03-22 2002-07-16 Nvidia Corporation Apparatus and method for rendering characters into a memory
US7191310B2 (en) * 2000-01-19 2007-03-13 Ricoh Company, Ltd. Parallel processor and image processing apparatus adapted for nonlinear processing through selection via processor element numbers
EP1176515A3 (en) 2000-07-25 2002-02-06 Lucent Technologies Inc. Efficient hardware processor sharing
JP2002175283A (ja) 2000-12-05 2002-06-21 Matsushita Electric Ind Co Ltd シストリックアレイ型演算器
US6665021B2 (en) * 2001-02-05 2003-12-16 Conexant Systems, Inc. System and process for filtering single tone signals
JP3624874B2 (ja) * 2001-11-19 2005-03-02 日本電気株式会社 インターリービング順序発生器、インターリーバ、ターボエンコーダ、及びターボデコーダ
US6806883B2 (en) * 2002-03-11 2004-10-19 Sun Microsystems, Inc. System and method for handling display device requests for display data from a frame buffer
US6885384B2 (en) * 2002-03-12 2005-04-26 Sun Microsystems, Inc. Method of creating a larger 2-D sample location pattern from a smaller one by means of X, Y address permutation
US20030221089A1 (en) * 2002-05-23 2003-11-27 Sun Microsystems, Inc. Microprocessor data manipulation matrix module
US7432985B2 (en) * 2003-03-26 2008-10-07 Canon Kabushiki Kaisha Image processing method
US7199799B2 (en) * 2004-05-14 2007-04-03 Nvidia Corporation Interleaving of pixels for low power programmable processor

Also Published As

Publication number Publication date
JP2005301918A (ja) 2005-10-27
US8203569B2 (en) 2012-06-19
WO2005101225A1 (ja) 2005-10-27
EP1746515A1 (en) 2007-01-24
US20080278513A1 (en) 2008-11-13
EP1746515A4 (en) 2011-08-10

Similar Documents

Publication Publication Date Title
US7158141B2 (en) Programmable 3D graphics pipeline for multimedia applications
US9495721B2 (en) Efficient super-sampling with per-pixel shader threads
TWI525584B (zh) 多執行緒處理單元內之可程式繫結
JP5538750B2 (ja) グラフィックス処理システム
US7586492B2 (en) Real-time display post-processing using programmable hardware
US9495781B2 (en) Early sample evaluation during coarse rasterization
US8120608B2 (en) Constant buffering for a computational core of a programmable graphics processing unit
US8074224B1 (en) Managing state information for a multi-threaded processor
US7728841B1 (en) Coherent shader output for multiple targets
US8970608B2 (en) State objects for specifying dynamic state
US20090051687A1 (en) Image processing device
US9953455B2 (en) Handling post-Z coverage data in raster operations
TWI645371B (zh) 在上游著色器內設定下游著色狀態
US9418616B2 (en) Technique for storing shared vertices
JP2011518398A (ja) 混合精度命令実行を伴うプログラマブルストリーミングプロセッサ
US20100201703A1 (en) Systems and Methods for Improving Throughput of a Graphics Processing Unit
US7747842B1 (en) Configurable output buffer ganging for a parallel processor
US9720842B2 (en) Adaptive multilevel binning to improve hierarchical caching
TW201439970A (zh) 儲存共用頂點之技術
US7484076B1 (en) Executing an SIMD instruction requiring P operations on an execution unit that performs Q operations at a time (Q<P)
JP4637640B2 (ja) 図形描画装置
US9082212B2 (en) Programmable blending via multiple pixel shader dispatches
US8427493B2 (en) Draw commands with built-in begin/end
US20070070075A1 (en) Register-collecting mechanism, method for performing the same and pixel processing system employing the same
JP3706383B1 (ja) 描画処理装置および描画処理方法、ならびに情報処理装置および情報処理方法

Legal Events

Date Code Title Description
TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20050726

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20050728

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

Ref document number: 3706383

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20080805

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090805

Year of fee payment: 4

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090805

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100805

Year of fee payment: 5

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110805

Year of fee payment: 6

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110805

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120805

Year of fee payment: 7

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120805

Year of fee payment: 7

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130805

Year of fee payment: 8

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees