低電力プログラマブルプロセッサ
本グラフィックスプロセッサは、画素パケットを処理するためのスカラ算術演算を行うことのできるプログラマブル算術論理演算装置(ALU)段を有する。画素パケット内のオペランドは、ダイナミックレンジを改善するためにS1.8形式でフォーマット設定されてもよく、異なるデータ形式でフォーマット設定されてもよい。グラフィックスプロセッサは、構成可能なグラフィックスパイプラインとして実施されてもよい。一実装形態では、パイプラインを通る画素パケットのプロセスフローが、ホストからのコマンドに応答して再構成され得るようにするために、分配器がグラフィックスパイプラインの要素を結合する。各画素は、偶数画素または奇数画素に割り当てられ、次いで、奇数と偶数の画素の画素パケットがALU待ち時間を引き受けるようにインターリーブされてもよい。
【発明の詳細な説明】
【発明の分野】
【0001】
[0001]本発明は、一般に、プログラマブルプロセッサに関する。より詳細には、本発明は、グラフィックスアプリケーション用の低電力プログラマブルプロセッサを対象とする。
【発明の背景】
【0002】
[0002]3次元グラフィック画像の生成は、様々な電子ゲームその他のアプリケーションにおいて注目されている。従来方式では、ある場面の3次元画像を生成するのに使用されるステップの中には、表示されるべき対象物の3次元モデルを生成することが含むものがある。幾何プリミティブ(三角形など)が形成され、それらが深さ情報と共に2次元投影にマップされる。レンダリング(描画)プリミティブには、プリミティブの各2次元投影上での、深さや色といった、補間パラメータが含まれる。
【0003】
[0003]グラフィックス処理装置(GPU)は、一般に、グラフィックスシステムにおいて、中央処理装置からの命令に応答して3次元画像を生成するのに使用される。最新のGPUは、通常、データ処理にグラフィックスパイプラインを利用する。図1は、もっぱら特定の機能を果たすために設けられた段を有する「深い」パイプラインである、従来技術の通常のパイプラインアーキテクチャを示す図である。変換段105は、プリミティブの幾何計算を行い、クリッピング操作を行ってもよい。セットアップ/ラスタ段110は、プリミティブをラスタライズする。テクスチャアドレス段115およびテクスチャフェッチ120段は、テクスチャマッピングに利用される。フォグ段130は、フォグアルゴリズムを実施する。アルファテスト段135は、アルファテストを行う。深さテスト段140は、遮蔽された画素を除去するための深さテストを行う。アルファブレンド145段は、アルファブレンド色合成アルゴリズムを実行する。メモリ書込み段150は、パイプラインの出力を書き込む。
【0004】
[0004]図1に示す従来のGPUパイプラインアーキテクチャは、通常、OpenGL(登録商標)グラフィックス言語を使った高速テクスチャリングのために最適化される。深いパイプラインアーキテクチャの利点は、それが、複雑な場面でさえも高速高品質でレンダリングすることができることである。
【0005】
[0005]無線電話機、携帯情報端末(PDA)、ならびにコストおよび電力消費が重要な設計要件であるその他の機器では、3次元グラフィックス利用への関心がますます高まっている。しかしながら、従来の深いパイプラインアーキテクチャは、大きなチップ面積を必要とし、所望するものより大きなコストを生じることになる。さらに、深いパイプラインは、各段が比較的わずかな処理しか行っていない場合でさえも、相当な電力を消費する。これは、各段の多くが、それらが画素を処理しているかどうかに関わらず、ほぼ同量の電力を消費するからである。
【0006】
[0006]コストおよび電力を考慮すると、図1に示す従来の深いパイプラインアーキテクチャは、無線電話機やPDAで3次元ゲームを実施するなどの、多くのグラフィックスアプリケーションには適さないことになる。
【0007】
[0007]したがって、求められているのは、グラフィックス処理アプリケーションに適する、電力およびサイズ要件の低いプロセッサアーキテクチャである。
【発明の概要】
【0008】
[0008]グラフィックスプロセッサは、画素パケットを処理するプログラマブル算術論理演算装置(ALU)を含む。ALU段では、グラフィックス機能を実施するために、画素パケットに対してスカラ算術演算が行われる。
【0009】
[0009]画素に対してグラフィックス処理操作を行う方法の一実施形態は、グラフィックス機能を実施するために画素パケットに対して行われるべきスカラ算術演算のシーケンスを識別するステップと、その画素の複数の画素パケットを生成するステップであり、各画素パケットが、スカラ算術演算のシーケンスにおいてオペランドとして処理されるべき画素属性の一部を含むステップと、少なくとも1つのALUにおいてそれらの画素パケットからオペランドを読み取るステップと、スカラ算術演算のシーケンスを実行するための命令シーケンスに従ってスカラ算術演算を実行するステップとを含む。
【0010】
[0010]グラフィックスプロセッサの一実施形態は、画素パケットを処理する少なくとも1つのALUを有するプログラマブルALU段であり、各ALUが、対応する現在の命令を有する入力画素パケットに対して実行される少なくとも1つの可能なスカラ算術演算の組を有するようにプログラムされているALU段を含み、グラフィックス処理機能を実行するために画素パケットに対して算術演算のシーケンスが行われる。
【0011】
[0011]本発明は、以下の詳細な説明を添付の図面と併せて読めば、より完全に理解されるものである。
【0012】
[0023]図面のいくつかの図を通して、類似の参照番号は、対応する部分を指すものである。
【発明の詳細な説明】
【0013】
[0024]図2は本発明の一実施形態のブロック図である。プログラマブルグラフィックスプロセッサ205が、レジスタインターフェース210と、ホストインターフェース220と、フレームバッファなどのグラフィックスメモリ(不図示)とのメモリ読取り/書込み操作のための直接メモリアクセス(DMA)エンジン230などのメモリインターフェースとに結合されている。ホストインターフェース220は、プログラマブルグラフィックスプロセッサ205が、ホストからグラフィック画像を生成するコマンドを受け取ることができるようにする。例えば、ホストは、プログラマブルグラフィックスプロセッサ205に、頂点データ、コマンドおよびプログラム命令を送ってもよい。DMAエンジン230などのメモリインターフェースは、グラフィックスメモリ(不図示)と読取り/書込み操作が行われ得るようにする。レジスタインターフェース210は、プログラマブルグラフィックスプロセッサ205のレジスタとのインターフェースを取るインターフェースを提供する。
【0014】
[0025]プログラマブルグラフィックスプロセッサ205は、プログラマブルグラフィックスプロセッサ205のホストとして働くソフトウェアアプリケーション270を実行する少なくとも1つの別の中央処理装置260を含むシステム290の一部として実施されてもよい。システム290の一例は、例えば、携帯電話や携帯情報端末(PDA)などのハンドヘルドユニットを備えていてもよい。例えば、ソフトウェアアプリケーション270は、ディスプレイ295上にグラフィックス画像を生成するグラフィックスアプリケーション275を含んでいてもよい。さらに、以下でより詳細に説明するように、いくつかの実施形態では、ソフトウェアアプリケーション270は、例えば、パイプライン再構成、レジスタ構成、およびテストなどといった、プログラマブルグラフィックスプロセッサ205に関連付けられる管理機能を実行する、グラフィックスプロセッサ管理ソフトウェアアプリケーション280を含んでいてもよい。
【0015】
[0026]一実施形態では、プログラマブルグラフィックスプロセッサ205、レジスタインターフェース210、ホストインターフェース220、およびDMAエンジン230は、メモリ上に常駐するソフトウェア270を有する中央処理装置260を含むチップ上に形成された集積回路200など、ホストを含む単一の集積回路200上に形成された組込みグラフィックス処理コア250の一部である。代替として、グラフィックス処理コア250が第1の集積回路上に配置され、CPU260が第2の集積回路上に配置されていてもよい。
【0016】
[0027]図3は、本発明の一実施形態によるプログラマブルグラフィックスプロセッサ205をより詳細に示すブロック図である。これは、セットアップ段305、ラスタ段310、ゲートキーパ段320、データフェッチ段330、算術論理演算装置(ALU)段340、データ書込み段355、および再循環パス360を含む。一実施形態では、プログラマブルグラフィックスプロセッサ205は、テクスチャ合成、フォグ、アルファブレンド(色混合など)、アルファテスト(色テストなど)、Z深さテスト、その他のシェーディングアルゴリズムといった3次元グラフィックス操作を実施するためのシェーダプログラムを実行するように構成されたALU350を含む。しかしながら、以下の考察を通して読めば、プログラマブルグラフィックスプロセッサ205が、他の種類の処理操作を実行するように構成されてもよいことが理解されるであろう。
【0017】
[0028]セットアップ段305は、集積回路200上で走っているソフトウェアアプリケーションなどのホストから命令を受け取る。一実施形態では、セットアップ段305は、座標(Xフォーム)の幾何変換、クリッピング、およびセットアップの機能を実行する。セットアップユニットは、頂点情報(例えば、x、y、z、色および/またはテクスチャ属性など)を取得し、ユーザ定義のビュー変換を適用して各幾何プリミティブ(プリミティブは、通常、三角形として実施されるため、以後、三角形と記載する)ごとの画面空間座標を計算し、次いで、それがラスタ段310に送られて、与えられた三角形を描画する。セットアップ段305によって使用される頂点データのバッファを提供するために、頂点バッファ308が含まれていてもよい。一実施形態では、セットアップ段305は、重心係数をセットアップする。一実装形態では、セットアップ段305は、32ビットIEEE浮動小数点形式、S15.16固定小数点形式およびパックド.8形式をサポートする浮動小数点超長命令語(VLIW)マシンである。
【0018】
[0029]ラスタ段310は、セットアップ段205から、レンダリングされるべき(例えば、画素に変換される)三角形に関するデータを受け取る。いくつかの実施形態では、例えば、ラスタ段310に、ラスタ段310の命令をプログラムするための命令RAM(不図示)が含まれていてもよい。ラスタ段310は、所与の三角形の各画素を処理し、例えば、色、テクスチャ、アルファテスト、アルファブレンド、z−深さテスト、およびフォグパラメータの計算など、レンダリングの一部として画素について計算される必要のあるパラメータを求める。一実施形態では、ラスタ段310は、画素パケットの重心係数を計算する。重心座標系において、三角形における距離は、その頂点に関して測定される。重心係数の使用は、必要なダイナミックレンジを狭め、浮動小数点計算より少ない電力で済む固定小数点計算の使用を可能にする。
【0019】
[0030]ラスタ段310は、処理されるべき三角形の各画素ごとに少なくとも1つの画素パケットを生成する。各画素パケットは、処理に必要な画素属性(例えば、色、テクスチャ、深さ、フォグ、(x,y)位置など)のペイロードのフィールドを含む。さらに、各画素パケットは、画素パケットに対して行われるべき操作の命令シーケンスを含む、関連付けられたサイドバンド情報も有する。ラスタ段210内の命令領域(不図示)が画素パケットに命令を割り当てる。
【0020】
[0031]図4に、ある画素の画素パケットの例430、460を示す。一実施形態では、ラスタ段210は、画素属性を、それぞれが、特定の種類の命令が作用する画素属性データだけのためのフィールドを必要とする、2つ以上の異なる種類の画素パケット430、460に区分する。画素データをより小さい作業単位に区分すれば、帯域幅要件が軽減され、また、例えば、特定の処理操作のために画素の属性のほんの一部だけが操作されればよい場合には、処理要件も軽減される。
【0021】
[0032]各画素パケットは、関連付けられたサイドバンド情報410およびペイロード情報420を有する。サイドバンド情報の例は、有効フィールド412、キルフィールド414、タグフィールド、および現在の命令を含む命令フィールド416を含む。画素パケットの例430は、フォグフィールド426と共に、テクスチャ座標422、424フィールドの第1の組(s,t)を含む。画素パケットの例460は、色フィールド462、およびテクスチャ座標464、466の第2の組(s,t)を含む。一実施形態では、各画素パケットは、固定小数点表現のペイロード情報420を表す。画素属性のために20ビットの画素パケットサイズを有する画素パケットに含まれ得る画素属性の例には、1つのZ.16の16ビットZ深さ値、1つの16ビットS/Tテクスチャ座標および4ビット詳細レベル、それぞれが8ビットの精度を有する1対の色値、または各ARGB変数に5ビットずつを有するパックド5555ARGB色が含まれる。
【0022】
[0033]画素パケットのサイドバンド情報は、画素の(x,y)位置を含んでいてもよい。しかしながら、一実施形態では、ラスタ段310が走査線に沿って三角形を横切ってウォークし始める(x,y)起点において、ラスタ段310によってstart spanコマンドが生成される。start spanコマンドの使用は、(x,y)位置が画素パケットから除外されることを可能にする。start spanコマンドは、他のエンティティ(データ書込み段355やデータフェッチ段330など)に、走査線の開始時の初期(x,y)位置を知らせる。走査線に沿った他の画素の(x,y)位置は、所与の画素が起点から離れている画素数によって推論される。一実施形態では、データ書込み段355およびデータフェッチ段330は、ローカルカウンタを増分し、それらがspan startコマンド後に遭遇した画素数の計算に基づいて(x,y)位置を更新するように適合されたローカルキャッシュを含む。
【0023】
[0034]図5を参照すると、一実施形態では、ラスタ段310は、処理されるべき画素ごとに画素パケットの少なくとも1つの行510を生成する。いくつかの実施形態では、各行510は、その行510の命令シーケンスを定義する共通のサイドバンド情報410を有する。画素に複数の行510が必要とされる場合、それらの行510は、新しいクロックサイクルごとに連続して処理される行のグループ520として編成される。一実施形態では、80ビット画素データが4つの20ビット画素属性レジスタ値に区分され、それら4つの画素レジスタ値が、画素の画素パケット(R0、R1、R2、およびR3)の「行」510を定義する。
【0024】
[0035]ラスタ段310の反復子レジスタプール(不図示)は、画素パケットの行510をサポートするための対応するレジスタを有する。一実装形態では、ラスタ段310は、画素パケットの最大4つの行までをサポートするレジスタプールを含む。テクスチャなど、いくつかの種類の画素パケット属性は、高精度を必要とすることがある。逆に、色など、いくつかの種類の画素パケット属性は、より低い精度でよいこともある。レジスタプールは、行510内の各画素パケットごとに高精度値および低精度値をサポートするように構成され得る。一実施形態では、レジスタプールは、1行当たり4つの高精度および4つの低精度パースペクティブ補正反復値と、Z深さ値を含む。これは、例えば、ソフトウェアが、特定の画素パケット属性を処理するための反復子の精度を割り当てることを可能にする。一実施形態では、ラスタ段310は、テクスチャの整数部分を追跡するように適合されたレジスタプールを含み、テクスチャの小数ビットがデータパケットとして送られ得るようにする。
【0025】
[0036]ラスタ段310は、例えば、画素に対して操作が行われることを必要とするホストからの命令を受け取ることがある。これに応答して、ラスタ段310は、関連付けられた命令シーケンスを有する画素パケットの1つまたは複数の行510を生成し、それらの画素パケット行および命令は、所望の処理操作を実行するように構成される。以下でより詳細に説明するように、一実施形態では、ALU段340は、そのオペランドが、画素パケットの行510内の画素属性の事前に選択された一部、定数値、および画素パケットに対する前の計算の一時的に格納された結果を含むスカラ算術演算が実行されることを可能にする。
【0026】
[0037]様々なグラフィックス操作が、1つまたは複数のスカラ算術演算として定式化され得る。さらに、様々なベクトルグラフィックス操作が、複数のスカラ算術演算として定式化され得る。よって、本発明のプログラマブルグラフィックスプロセッサ205は、その内容が参照により本明細書に組み込まれる、Open GL(登録商標) Graphics System: A Specification (Version 1. 2)に記載されているような、フォグ操作、色(アルファ)合成、テクスチャ合成、アルファテスト、深さテストなどのスカラ算術演算のシーケンスとして表され得る、画素に対する任意のグラフィックス操作を実行するようにプログラムされてもよいことが理解されるであろう。例えば、ラスタ段310が画素に対して実行されるべき所望のグラフィックス処理機能(フォグ操作など)を検出したことに応答して、ラスタ段310は、プログラマブルマッピング表またはマッピングアルゴリズムを使って、画素パケットの割り当て、および画素に対してそのグラフィックス機能を実施するのに必要なスカラ算術演算を実行するための関連付けられた命令を決定することができる。マッピングは、例えば、グラフィックスプロセッサ管理アプリケーション280によってプログラムされてもよい。
【0027】
[0038]図3に戻ると、三角形の各画素がラスタ段310によってウォークされるに従って、ラスタ段310は、さらなる処理のために画素パケットを生成し、それらがゲートキーパ段320によって受け取られる。ゲートキーパ段320は、データフロー制御機能を果たす。一実施形態では、ゲートキーパ段320は、画素パケットのスケジューリング、負荷均衡化、リソース割り振り、およびハザード回避のための関連付けられたスコアボード325を有する。スコアボード325は、画素の入力および除却を追跡する。ゲートキーパ段320に入力される画素パケットは、スコアボードを設定し、スコアボードは、処理完了後に画素パケットがプログラマブルプロセッサ205から排出される際にリセットされる。例をあげて説明すると、コンパクトディスプレイ295が128×32画素の領域を有する場合、スコアボード325は、画素を監視するためにディスプレイの各画素ごとに表を維持してもよい。
【0028】
[0039]スコアボード325は、いくつかのメリットを提供する。例えば、スコアボード325は、三角形内のある画素が、処理されている未完了の別の画素の上にある場合のハザードを防止する。一実施形態では、スコアボード325は、アイドル状態を監視し、スコアボード情報を使ってアイドル状態の装置をクロックオフする。例えば、有効な画素がない場合、スコアボード325は、節電のためにALUをオフにしてもよい。以下でより詳細に説明するように、スコアボード325は、キルビットが設定されている画素パケットと共に、ALU350による処理が可能な画素パケットを追跡して、画素パケットが、アクティブな処理なしでALU350を流れるようにする。一実施形態では、スコアボード325は、再循環された画素パケットの(x,y)位置を追跡する。画素パケットが再循環される場合、スコアボード325は、その画素の次の命令への後続の受け渡しにおいてその画素パケットの命令シーケンスを増分する。例えば、命令が受け渡し番号1のフォグ操作のものである場合、命令は、受け渡し番号2のアルファブレンド操作まで反復される。
【0029】
[0040]データフェッチ段330は、ゲートキーパ320によって渡された画素パケットためのデータをフェッチする。これは、例えば、画素パケットの各行ごとに適切な色、深さ、またはテクスチャデータ読取りを行うことによる、色、深さおよびテクスチャデータのフェッチを含んでいてもよい。データフェッチ段330は、例えば、メモリインターフェースからの読取り(例えば、DMAエンジン230を使ったフレームバッファ(不図示)の読取りなど)を要求することによって画素またはテクセルデータをフェッチしてもよい。また、一実施形態では、データフェッチ段330は、テクスチャ/フォグキャッシュ332、色/深さキャッシュ334、および深さデータのためのZキャッシュ(不図示)などのローカルキャッシュを管理してもよい。フェッチされるデータは、画素パケットを次の段に送る前に、対応する画素パケットフィールドに配置される。一実施形態では、データフェッチ段330は、画素パケット属性フィールドによって必要とされるデータにアクセスするための命令を有する命令ランダムアクセスメモリ(RAM)を含む。また、いくつかの実施形態では、データフェッチ段330は、Z深さテストも行う。この実施形態では、データフェッチ段330は、1つまたは複数の深さ比較テストを使って、画素パケットのZ深さ値を、格納されたZ値と比較する。画素のZ深さ値が、その画素が遮蔽されていることを示す場合、キルビットが設定される。
【0030】
[0041]画素パケットの行は、処理のために算術論理演算装置(ALU)段340に入力される。ALU段340は、ALU350−0、350−1、350−2、および350−3など、少なくとも1つのALU350を含むALU350の組を有する。4つのALU350が図示されているが、ALU段340では、アプリケーションに応じてより多い、または少ないALU350が使用されてもよい。個別ALU350は、画素パケットの少なくとも1行510の現在の命令を読み取り、サポートするようにプログラムされているスカラ算術演算を実行する任意の命令を実施する。命令は、各ALU350に含まれ、例えば、ローカル命令RAM(図3には図示せず)上に格納されていてもよい。
【0031】
[0042]各ALU350は、オペランドの第1の積(a*b)およびオペランドの第2の積(b*c)に対する少なくとも1つの算術演算を実行する命令を含む(式中、a、b、cおよびdはオペランドであり、*は乗算である)。オペランドの一部または全部は、例えば、画素パケットの行510内のレジスタ値属性に対応していてもよい。また、ALU350は、一定の、またはソフトウェアロード可能な1つまたは複数のオペランド値を備えていてもよい。いくつかの実施形態では、ALUは、画素パケットに対する前の操作からの一時的に格納された結果を使ってサポートしてもよい。
【0032】
[0043]一実施形態では、各ALU350はプログラム可能である。ソフトウェア(ソフトウェアアプリケーション270など)からの命令に応答してオペランドおよび結果の宛先が選択され得るように、ALU350内にクロスバー(不図示)または他のプログラマブル選択器が含まれていてもよい。例えば、一実施形態では、操作コマンドコードを使って、画素パケットの行510内の任意のレジスタ値、一時的な値、および定数値の属性からの各オペランド(a、b、c、d)のソースが選択されてもよい。この実施形態では、操作コマンドは、ALU350に、結果で画素パケットを更新する、結果を一時的な値として保存する、あるいは結果で画素パケットを更新すると共に結果を一時的な値として保存するなど、算術演算の結果をどこに送るべきかをも指示する。よって、例えば、ALUは、画素パケット内の特定の属性をオペランドとして読み取り、現在の命令によって指示されるスカラ算術演算を適用するようにプログラムされ得る。また、操作コマンドコードには、オペランドの補数を取る(例えば、xを読取り値とする場合、1−xを計算する)コマンド、オペランドを否定する(例えば、xを読取り値とする場合、−xを計算する)コマンド、あるいはオペランドまたは結果をクランプするコマンドも含まれ得る。操作コマンドコードの他の例には、例えば、データ形式を選択するコマンドも含まれ得る。
【0033】
[0044]ALU350によって実行される算術演算の一例が、画素パケット内の少なくとも1つの変数に関する(a*b)+(c*d)の形のスカラ算術演算である(式中、a、b、cおよびdはオペランドであり、*は乗算である)。また、各ALU350は、好ましくは、オペランドの補数を取る、オペランドを否定するなど、他の数値演算を実行するようプログラムされてもよい。さらに、いくつかの実施形態では、各ALU350は、(a*b、c*d)から最小値および最大値を計算し、論理比較(例えば、a*bがc*dと等しい、c*dと等しくない、c*dより小さい、あるいはc*d以下であるかどうかの論理的結果など)を行ってもよい。
【0034】
[0045]いくつかの実施形態では、各ALU350は、a*bとc*dの比較(例えば、a*bがc*dに等しくない場合キルする、a*bがc*dに等しい場合キルする、a*bがc*dより小さい場合キルする、a*bがc*d以上である場合キルする)などのテストに基づいてキルフィールド414にキルビットを生成するかどうか決定する命令を含んでいてもよい。キルビットを生成し得るALU操作の例には、式、IF (alpha>alpha reference), then kill the pixel(式中、alphaは色値であり、alpha referenceは基準色値である)など、色値がテスト色値に比較されるアルファテストが含まれる。キルビットを生成し得るALU操作の別の例がZ深さテストであり、画素のZ値が、同じ位置を有する前の画素の少なくとも1つのZ値に比較され、深さテストが、その画素が遮蔽されていると示せば、画素がキルされる。
【0035】
[0046]一実施形態では、画素パケットにおいてキルビットが設定されている場合、画素パケットの処理に関して、個別ALU350が使用不可とされる。一実施形態では、サイドバンド情報でキルビットが検出されたときに、クロックゲーティング機構を使ってALU350が使用不可とされる。その結果、画素パケットにキルビットが生成された後で、ALU350は、画素パケットがALU段340を通って伝搬する際にその画素パケットに電力を浪費しなくなる。しかしながら、キルビットが設定された画素パケットは、さらに先に伝搬し、データ書込み段355およびスコアボード325によって計上され得ることに留意されたい。これは、たとえキルビットによってそれ以上のALU処理を必要としないとマークされている画素パケットであれ、すべての画素パケットが、スコアボード325によって計上されるようにする。一実施形態では、画素の任意の行510がキルビットでマークされている場合、同じ画素の他の行510もキルされる。これは、例えば、行510がキルビットでマークされている画素を追跡する段の間で、または1つまたは複数の段によってキル情報を転送することによって達成されてもよい。いくつかの実施形態では、キルビットがセットされると、画素パケットの行510の(キルビットを含む)サイドバンド情報410だけが次の段に伝搬する。
【0036】
[0047]ALU段340の出力は、データ書込み段355に進む。データ書込み段355は、処理された画素パケットを画素データに変換し、その結果を(DMAエンジン230などを介して)メモリインターフェースに書き込む。一実施形態では、画素の書込み値が書込みバッファ352に累積され、累積された画素の書込みはバッチでメモリに書き込まれる。データ書込み段355が実行し得る機能の例には、色および深さ書戻し、およびフォーマット変換が含まれる。いくつかの実施形態では、データ書込み段355は、キルされるべき画素を識別し、キルビットを設定してもよい。
【0037】
[0048]画素パケットを再循環させてゲートキーパ320に戻す再循環パス360が含まれる。再循環パス360は、例えば、一連の算術演算を必要とするプロセスが、ALU段340を通る複数の受け渡しを使って実行されることを可能にする。データ書込み段355は、スコアボードに記録するために除却されたゲートキーパ段320への書込みを示す。
【0038】
[0049]図6は、個別ALU350の例を示すブロック図である。ALU350は、対応するレジスタR0、R1、R2、およびR3内の画素パケットの行510を受け取るデータバスを備える入力バス605を有する。ALU命令のために命令RAM610が含まれる。命令セットの一例をブロック620に示す。一実施形態では、ALU350は、行510から4つの20ビットレジスタ値の任意の1つを読み取り、行510からオペランドの組を選択するようにプログラムされてもよい。さらに、ALU350は、パス640で示すように、前の結果から一時的に保存されている、1つのALU350当たり2つの20ビットの一時的な値など、レジスタ(T)630からの一時的な値をオペランドとして選択するようにプログラムされてもよい。また、ALU350は、やはりソフトウェアによってプログラムされ得る、定数値(不図示)をオペランドとして選択してもよい。一実施形態では、マルチプレクサ(MUX)645の第1段が、画素パケットの行からのオペランド、任意の一時的な値630、および任意の定数値(不図示)を選択する。オペランドを、算術計算ユニット670におけるALU350の計算精度に適した所望のデータ形式に変換するためにフォーマット変換モジュール650が含まれていてもよい。ALU350は、各オペランドまたはその補数がMUX660の第2段において選択されることを可能にする要素を含む。結果として生じる4つのオペランドは、2つの乗算および1つの加算を実行することのできるスカラ算術計算ユニット670に入力される。結果として生じる値は、任意選択で、クランパ680を使って所望の範囲(例えば、0から1.0まで)にクランプされてもよい。画素パケットの行510は、バス690上で終了する。
【0039】
[0050]一実施形態では、選択された画素パケット属性を、1符号1.8(S1.8)形式としてもよい。S1.8形式は、[-2から+2)までの範囲にある8ビットの小数を有する2進数である。S1.8形式は、計算のためのより高いダイナミックレンジを許容する。例えば、照明を処理する計算において、S1.8形式は、より大きいダイナミックレンジを可能とし、結果としてアリズムが改善される。S1.8で実行されるスカラ算術演算の結果が[0,1]の範囲になければならない場合、その結果は、結果が強制的に範囲[0,1]になるようにクランプされてもよい。例をあげて説明すると、色データのシェーディング計算がS1.8形式で実行され、次いで、その結果がクランプされてもよい。本発明の実施形態では、異なる種類の画素パケットは、異なるフォーマットで表されるデータ属性を有していてもよいことに留意されたい。例えば、色データが、S1.8形式の第1の種類の画素パケットで表され、(s,t)テクスチャデータが高精度16ビット形式による第2の種類の画素パケットで表されてもよい。いくつかの実施形態では、画素パケットビットサイズは、最高精度の画素属性のビットサイズ要件によって設定される。例えば、テクスチャ属性は、通常、色より大きい精度を必要とするため、画素パケットサイズは、16ビットテクスチャデータなど、高レベルの精度を有するテクスチャデータを表すように設定されてもよい。S1.8形式の改善されたダイナミックレンジは、例えば、複数の色成分のデータを、例えば、テクスチャデータに16ビットと4ビットの詳細レベル(LOD)を必要とするより高精度のデータのテクスチャデータに選択されるサイズである20ビット画素パケットサイズに効率よくパッキングすることを可能にする。例えば、各S1.8色成分は10ビットを必要とするため、2つの色成分が、1つの20ビット画素パケットにパックされてもよい。
【0040】
[0051]図7に、2つ以上のALU350がつなぎ合わされているパイプラインとして構成された複数のALU350を含むALU段340の例を示す。前述のように、個別ALU350は、画素パケットから1つまたは複数のオペランドを読み取り、算術演算の結果を生成し、その結果で画素パケットまたは一時レジスタを更新するようにプログラムされてもよい。各ALUは、オペランドを読み取り、演算結果を生成し、1つまたは複数の画素パケットまたは一時的な値を更新してから画素パケットの行を次のALUに渡す役割が割り当てられてもよい。
【0041】
[0052]ALU段340のALU350間のデータフローは、実行されるべき処理操作、ALU待ち時間、および効率性の考慮事項に応じて、様々なやり方で構成され得る。前述のように、本発明は、各ALUが、画素パケットの行内の選択されたオペランドを読み取り、結果で選択された画素パケットレジスタを更新するようにプログラムされるようにする。一実施形態では、ALU段340は、各色チャネル(例えば、赤、緑、青およびアルファなど)ごとに少なくとも1つのALU350を含む。これは、例えば、各ALUが、類似の、または異なる処理タスクを実行するために、(パイプライン化により異なる時点においてではあるが)画素パケットの行510に対して並列に動作するように構成される負荷均衡化を可能にする。ALU350がどのようにしてプログラムされ得るかの一例を上げると、第1のALU350-0が第1の色成分の計算を行うようにプログラムされ、第2のALU350-1が第2の色成分の操作を行うようにプログラムされ、第3のALU350-2が第3の色成分の操作を行うようにプログラムされ、第4のALU350-3がフォグ操作を行うようにプログラムされてもよい。よって、いくつかの実施形態では、各ALU350に、画素パケットの行510の異なる処理タスクが割り当てられてもよい。さらに、以下でより詳細に説明するように、いくつかの実施形態では、ソフトウェアは、ALU350を、ALU350の実行順序を含むALU段340内のALU350のデータフローを選択するように構成してもよい。しかしながら、データフローは構成されてもよいため、いくつかの実施形態では、ALUのチェーンに沿ったデータフローが、1つのALU350-0の結果が、後続のALU350-1によってオペランドとして読み取られる1つまたは複数の画素パケットレジスタを更新するように構成されてもよいことが理解されるであろう。
【0042】
[0053]図8は、各段を通る画素パケットのプロセスフローが、グラフィックスプロセッサ管理アプリケーション280からのソフトウェアコマンドなどのソフトウェアコマンドに応答して構成可能な再構成可能パイプラインを有するプログラマブルグラフィックスプロセッサ205の一部の実施形態を示すブロック図である。各段の要素のそれぞれの入力と出力とに結合された分配器890、895は、画素パケットのプロセスフローが再構成されることを可能にする。各段には、例えば、データフェッチ段830、データ書込み段855、個別ALU850などが含まれ得るが、他の種類のものも分配器890、895を使って再構成され得ることが理解されるであろう。いくつかの実施形態では、ソフトウェアは、各段を通る画素パケットのプロセスフローを動的に再構成してもよい。よって、好ましくは、同期技法を利用して、ある構成から別の構成への切換えの間に、未完了の画素パケットのデータフローが調整される。すなわち、第1の構成で処理することが意図されている未完了の画素パケットが、その構成が第2の構成に変更される前に、その処理を完了するように同期が行われる。
【0043】
[0054]一実施形態では、データフェッチ段830、データ書込み段855、および個別ALU850は、それぞれ第1の分配器890に接続された個々の入力と、それぞれ第2の分配器895に接続された個々の出力とを有する。各分配器890、895は、データフェッチ段830、ALU850およびデータ書込み段855への入力画素パケットの配布フローを選択するために、例えば、スイッチ、クロスバー、ルータ、またはMUX回路などを備えていてもよい。分配器890、895は、データフェッチ段830、データ書込み段855、および個別ALU850を通る入力画素パケット810のデータパスを決定する。信号入力892、894は、分配器890、895が、データフェッチ段830と、データ書込み段855と、ALU850の間での画素パケットの分配を再構成するための(例えば、CPU上で走っているソフトウェアアプリケーションからの)ソフトウェアコマンドを受け取ることを可能にする。再構成の一例が、ALU850の実行順序を割り当てることである。再構成の別の例が、データフェッチ段がある一定の時間タスクを処理するのに必要とされないと判定された場合に、データフェッチ段830を迂回することである。再構成の別の例として、データフェッチ段830がALUに結合される順序を変更することが望ましいこともある。別の例として、データ書込み段855を再配列することが望ましいこともある。例をあげて説明すると、データフェッチの前にテクスチャ座標を操作する方が効率的である場合もあり、その場合、データフローは、ALU850がテクスチャ操作を行った後でデータフェッチ段830に画素パケットを受け取らせるように構成される。よって、再構成可能なパイプラインの1つの利点は、ソフトウェアアプリケーションが、効率を上げるためにプログラマブルグラフィックスプロセッサ205を再構成することができることである。
【0044】
[0055]図5に戻ると、前述のように、ラスタ段310は、処理のために画素パケットの行510を生成する。各行510は、さらに、連続するクロックサイクルで処理するために渡される、4行510のシーケンスなど、行のグループ520に構成されてもよい。しかしながら、画素パケットの行510に対して行われ得るいくつかの操作は、画素パケットの別の行の算術演算の結果を必要とすることもある。したがって、一実施形態では、ラスタ段310は、行のグループ520内の画素パケットを、データ依存関係を明らかにするように構成する。例をあげて説明すると、ある画素パケットに対するテクスチャ操作が、ある行内の別の画素パケットの結果を必要とする場合、グループ520は、依存テクスチャ操作を有する画素パケットが後の行に配置されるように構成される。
【0045】
[0056]図9を参照すると、一実施形態では、画素は、代替として、ラスタ段310によって奇数または偶数として割り当てられる。画素の各行ごとの対応するレジスタ(R0、R1、R2、およびR3)が、しかるべく、偶数または奇数に割り当てられる。次いで、偶数画素の画素パケットの偶数行905と奇数画素の奇数行910が、データ依存関係を回避するための1つまたは複数の規則を利用してインターリーブされる。1行おきにインターリーブすれば、ALU待ち時間を引き受ける追加のクロックサイクルが提供される。よって、偶数画素の行0が、偶数画素の行1によって必要とされる結果を生成するのに2クロックサイクルを必要とする場合、奇数画素での行0をインターリーブすれば、ALU待ち時間によって必要とされる時間の追加のクロックサイクルが提供される。説明例として、偶数画素での行0が合成操作であり、同じ画素での行1が、第1の合成操作の結果を必要とする第2のテクスチャとの合成に対応するマルチテクスチャ操作を考察する。第1の操作でのALU待ち時間が2クロックサイクルである場合、インターリービングは、合成操作の結果が、合成操作を用いるテクスチャに利用できるようにする。
【0046】
[0057]インターリーブされる実施形態においては、好ましくは、インターリーブされたデータフローを調整するためのサイドバンド情報が含まれる。例えば、一実施形態では、各画素パケット内のサイドバンド情報は、偶数行と奇数数行を区別するための偶数/奇数フィールドを含む。また、各ALU350は、偶数/奇数画素パケットの適切な一時的な値を提供するために、偶数画素と奇数画素の一時レジスタに対応する2組の一時レジスタを含んでいてもよい。偶数/奇数フィールドを使って適切な一時レジスタの組が選択される。例えば、奇数の画素には偶数の一時レジスタが選択され、偶数の画素には一時レジスタの奇数の組が選択される。一実施形態では、偶数画素と奇数画素の両方に使用される定数値に必要な総記憶量を低減するために、定数レジスタが、偶数画素と奇数画素の両方によって共用される。一実施形態では、ソフトウェアホストは、定数レジスタをエミュレートするために、長期間にわたって、一時レジスタを定数値に設定してもよい。2つの画素のインターリービングは1つの実装形態であるが、例えば、ALU待ち時間が2つより大きいクロックサイクルに対応する場合、インターリービングは、さらに、2つより大きい画素をインターリーブするように拡張されてもよいことが理解されるであろう。ラスタ段310インターリーブ画素パケットを有することの1つの利点は、ALU待ち時間がハードウェアによって考慮に入れられ、例えば、ラスタ段310が画素をインターリーブしなかった場合などに通常発生するはずのALU待ち時間を引き受けるためにソフトウェアにかかる負担が軽減されることである。
【0047】
[0058]前述のように、構成可能なパイプラインでは、ALU350内のデータフローが構成されてもよい。例えば、ハードウェアにおいて、各ALU350は、実質的に同一とすることができる。しかしながら、個々のALUは、データフローにおいて複数の位置、例えば、異なる実行順序を有するように構成されてもよい。したがって、各ALU350に、そのデータフロー内での位置を示す識別子が設けられる必要がある。この識別子は、例えば、各ALU350の直接レジスタ書込み技法によって、各ALU350に提供されてもよい。しかしながら、この手法には、大きなソフトウェアオーバーヘッドを必要とするという欠点がある。したがって、一実施形態では、パケット技法を利用し、構成情報を必要とする要素をトリガしてそれらのプロセスフロー内の相対的位置を発見させ、対応する識別子をローカルレジスタに書き込ませる。
【0048】
[0059]図10を参照すると、一実施形態では、ALU350のレジスタアドレス空間は、データパケットを使用して各ALU350に識別(ID)を送るパケット初期設定技法を使ってソフトウェアにより構成可能である。各ALU350は、例えば、データパケットを受け取り、転送する従来のネットワークモジュールを含んでいてもよい。一実施形態では、IDパケット1010がソフトウェアアプリケーションによって開始される。IDパケット1010は、数値などの初期IDコードを含む。IDパケット1010は、グラフィックスパイプラインの、IDコードを必要とする要素の前の時点において注入され、次いで、現在のパイプライン構成によって定義されるプロセスフローの後続の要素に渡される。一実施形態では、第1のALU350の構成レジスタ1020がIDパケットを受け取り、IDコードの現在値を構成レジスタに書き込み、次いで、IDパケットを次のALUに渡す前に、IDパケットのIDコードを増分する。このプロセスが続けられて、各後続ALU350がIDコードの現在値をその構成レジスタに書き込み、次いで、増分されたIDコードを有するIDパケットを次のALUに渡す。また、データフローパスに沿った他の段も類似のやり方で構成レジスタを設定させ得ることが理解されるであろう。例えば、構成フロー中の各要素には、やはり、IDパケットを読み取ることによって構成レジスタを設定させ、IDコードを増分してから増分されたIDを有するIDパケットを構成フロー中の次の要素に渡すデータフェッチ段またはデータ書込み段が含まれていてもよい。この形のレジスタ構成の1つの利点は、それがALU350ユニット間のハードウェアの差異を必要とせず、パイプラインを通るデータフローのソフトウェア再構成を可能にすることである。よって、例えば、一実施形態では、グラフィックスプロセッサ管理アプリケーション280は、IDパケット発生器1030によって受け取られる、ホストインターフェース220を介してIDパケット1010を生成するコマンドを発行するなどによって、初期IDパケット1010を生成するだけでよい。
【0049】
[0060]代替の実施形態では、構成レジスタが書き込まれることを必要とする要素をトリガしてそれらのIDを発見させるために、ブロードキャストパケット技法を使ってIDコードが構成レジスタに書き込まれる。この実施形態では、各要素(ALU350など)は、ネットワークプロトコルを使ってそれらのIDを発見してもよい。ブロードキャストパケット技法は、例えば、パイプラインの分岐が画素を並列で処理するようにパイプラインが分岐される実施形態において有用である。
【0050】
[0061]図11に、診断監視機能を含む実施形態を示す。一実施形態では、各ALU350およびデータフェッチ段330に関連付けられたタップなど、グラフィックスプロセッサ205の要素に沿ったタップのシーケンスがある。また、タップは、他の段に含まれていてもよい。構成可能なテスト点選択器1105が、グラフィックスプロセッサ管理アプリケーション280からのソフトウェアコマンドなどのソフトウェアコマンドに応答して、2つのタップ1120、1130などの選択されたタップが監視され得るように適合される。構成可能なテスト点選択器1105は、例えば、マルチプレクサを使って実施されてもよい。一実施形態では、選択されたテスト点ごとの統計収集のために少なくとも1つのカウンタ1110が含まれる。一実施形態では、ソフトウェアによって生成される計測パケットが、監視されるべきタップに関する情報を提供し、選択されたテスト点でのカウントを可能にする。さらに、パイプラインの動作モードに基づいて統計収集をオンとオフにゲート制御するための計測レジスタが含まれていてもよい(例えば、ソフトウェアが、アルファブレンド操作が行われるときに統計カウントを可能にするなど、特定の種類のグラフィックス操作をカウントすることができるようにする計測レジスタが設けられていてもよい)。構成可能なテスト点選択器1105の1つの利点は、それが、グラフィックスプロセッサ管理アプリケーション280などのソフトウェアが、当該のテスト点だけのために統計データを収集させることを可能にし、ハードウェアの複雑度およびコストを低減し、しかも、ソフトウェアがプログラマブルプロセッサ205の挙動の任意の部分を解析することも可能にすることである。当該のテスト点は、例えば、テクスチャデータを処理するALU350など、特定の種類のデータを処理するALU350と関連付けられた統計を収集するように選択されてもよい。さらに、統計収集は、アルファブレンドなど、特定のグラフィックス操作のために使用可能とされてもよい。
【0051】
[0062]一実施形態では、構成可能なテスト点選択器1105は、三線のプロトコルを利用する。有効なペイロードデータを有する、ALU350−0などの各要素は、有効信号を生成し、それは、例えば、次の要素(例えばALU350−1)などに流れてもよい。ペイロードを受け取ることが可能な状態の要素は、作動可能信号を生成し、それは、例えば、前の要素に流れてもよい。しかしながら、要素がペイロードを受け取ることが可能な状態ではない場合、その要素は、非作動可能信号を生成し、それは、例えば、作動可能信号をアサートしないことに対応してもよい。イネーブル信号は、例えば、監視されている点に隣接して格納される監視イネーブル制御ビットへのパイプライン化レジスタ書込みによるソフトウェア制御などによって、要素が監視可能とされることに対応する。信号は、信号を生成する要素から、またはこれらの信号を受け取る要素から直接出力されてもよい。
【0052】
[0063]選択されたタップ点における有効、作動可能、および非作動可能信号は、動作状態を判定するのに使用され得る。転送状態は、下流へ流れるデータの有効なペイロード(すなわち有効なビットセット)、およびそのデータを受け取る下流ブロックにおける下流ブロックからの作動可能信号を有するクロックティックに対応する(例えば、タップ点1120における、ALU−0からの有効信号およびタップ点1130におけるALU−1からの作動可能信号など)。待機状態は、下のブロックがデータを受け取ることが可能な状態ではないためにブロックされている有効なペイロードを有するクロックティックに対応する(例えば、タップ点1120における、ALU−0からの有効信号およびタップ点1130におけるALU−1からの非作動可能信号など)。この実施形態では、転送状態および待機状態が検出されるクロックサイクル数をカウントするなど、選択されたタップ点に関する統計が収集されてもよい。
【0053】
[0064]本発明の実施形態は、組込みグラフィックスプロセッサコア250で有用な様々な利点を提供する。コンパクトで、低電力のハンドヘルドシステム290では、電力、スペースおよびCPU能力が比較的限られている。一実施形態において、ALU350は、処理が必要とされないときに(例えば、キルビットを検出するなどによって)クロックゲート制御され、処理電力要件が軽減される。さらに、ラスタ段310は、処理される画素データの一部の画素パケットを生成するだけでよく、やはり、電力要件が軽減される。プログラマブルALU段340は、専用のグラフィックス機能を実行する専用段を備える従来のパイプラインよりも小さいチップ面積で済み、コストが低減される。プログラマブルプロセッサ205は、ソフトウェアによって構成可能なブロックとして実施されてもよく、効率性が改善される。テスト監視は、テスト点の一部をテストするように構成されてもよく、ソフトウェアによる帯域幅および解析要件が軽減される。上記およびその他の前述の特徴が、組込みグラフィックスプロセッサコア250で使用するための当該のプログラマブルグラフィックスプロセッサ205を構成するものである。
【0054】
[0065]以上の記述では、説明のために、特定の用語を使用して本発明の十分な理解提供した。しかしながら、具体的詳細は、本発明を実施するために必要とされないことが、当分野の技術者には明らかであろう。よって、以上の本発明の具体的実施形態の記述は、図示と説明のために提示するものである。これらは、網羅的であることも、本発明を開示の厳密な形に限定することも意図するものではない。上記の教示を考察すれば、明らかに、多くの変更および変形が可能である。実施形態は、本発明の原理およびその実際的な適用例を最も適切に説明し、それによって、当分野の技術者が、本発明および様々な変更を伴う様々な実施形態を、企図される特定の用途に適するように最も適切に利用することができるようにするために選択され、記述されたものである。添付の特許請求の範囲およびその均等物が本発明の範囲を定義するものである。
【図面の簡単な説明】
【0055】
【図1】3次元グラフィックスのための従来技術のパイプラインを示す図である。
【図2】本発明の一実施形態によるプログラマブルグラフィックスプロセッサを含む集積回路を示すブロック図である。
【図3】本発明の一実施形態によるプログラマブルグラフィックスプロセッサを示すブロック図である。
【図4】本発明の一実施形態による画素パケットの例を示す図である。
【図5】本発明の一実施形態による、画素パケットの画素パケットグループの行への配列の例を示す図である。
【図6】本発明の一実施形態による単一の算術論理演算装置を示すブロック図である。
【図7】本発明の一実施形態による2つの算術論理演算装置のシーケンスを示すブロック図である。
【図8】本発明の一実施形態による構成可能なプログラマブルグラフィックスプロセッサを示すブロック図である。
【図9】本発明の一実施形態による画素パケットの行のインターリービングを示す図である。
【図10】本発明の一実施形態による構成レジスタを有する算術論理演算装置を示すブロック図である。
【図11】本発明の一実施形態による構成可能なテスト点選択器を示すブロック図である。
【発明の分野】
【0001】
[0001]本発明は、一般に、プログラマブルプロセッサに関する。より詳細には、本発明は、グラフィックスアプリケーション用の低電力プログラマブルプロセッサを対象とする。
【発明の背景】
【0002】
[0002]3次元グラフィック画像の生成は、様々な電子ゲームその他のアプリケーションにおいて注目されている。従来方式では、ある場面の3次元画像を生成するのに使用されるステップの中には、表示されるべき対象物の3次元モデルを生成することが含むものがある。幾何プリミティブ(三角形など)が形成され、それらが深さ情報と共に2次元投影にマップされる。レンダリング(描画)プリミティブには、プリミティブの各2次元投影上での、深さや色といった、補間パラメータが含まれる。
【0003】
[0003]グラフィックス処理装置(GPU)は、一般に、グラフィックスシステムにおいて、中央処理装置からの命令に応答して3次元画像を生成するのに使用される。最新のGPUは、通常、データ処理にグラフィックスパイプラインを利用する。図1は、もっぱら特定の機能を果たすために設けられた段を有する「深い」パイプラインである、従来技術の通常のパイプラインアーキテクチャを示す図である。変換段105は、プリミティブの幾何計算を行い、クリッピング操作を行ってもよい。セットアップ/ラスタ段110は、プリミティブをラスタライズする。テクスチャアドレス段115およびテクスチャフェッチ120段は、テクスチャマッピングに利用される。フォグ段130は、フォグアルゴリズムを実施する。アルファテスト段135は、アルファテストを行う。深さテスト段140は、遮蔽された画素を除去するための深さテストを行う。アルファブレンド145段は、アルファブレンド色合成アルゴリズムを実行する。メモリ書込み段150は、パイプラインの出力を書き込む。
【0004】
[0004]図1に示す従来のGPUパイプラインアーキテクチャは、通常、OpenGL(登録商標)グラフィックス言語を使った高速テクスチャリングのために最適化される。深いパイプラインアーキテクチャの利点は、それが、複雑な場面でさえも高速高品質でレンダリングすることができることである。
【0005】
[0005]無線電話機、携帯情報端末(PDA)、ならびにコストおよび電力消費が重要な設計要件であるその他の機器では、3次元グラフィックス利用への関心がますます高まっている。しかしながら、従来の深いパイプラインアーキテクチャは、大きなチップ面積を必要とし、所望するものより大きなコストを生じることになる。さらに、深いパイプラインは、各段が比較的わずかな処理しか行っていない場合でさえも、相当な電力を消費する。これは、各段の多くが、それらが画素を処理しているかどうかに関わらず、ほぼ同量の電力を消費するからである。
【0006】
[0006]コストおよび電力を考慮すると、図1に示す従来の深いパイプラインアーキテクチャは、無線電話機やPDAで3次元ゲームを実施するなどの、多くのグラフィックスアプリケーションには適さないことになる。
【0007】
[0007]したがって、求められているのは、グラフィックス処理アプリケーションに適する、電力およびサイズ要件の低いプロセッサアーキテクチャである。
【発明の概要】
【0008】
[0008]グラフィックスプロセッサは、画素パケットを処理するプログラマブル算術論理演算装置(ALU)を含む。ALU段では、グラフィックス機能を実施するために、画素パケットに対してスカラ算術演算が行われる。
【0009】
[0009]画素に対してグラフィックス処理操作を行う方法の一実施形態は、グラフィックス機能を実施するために画素パケットに対して行われるべきスカラ算術演算のシーケンスを識別するステップと、その画素の複数の画素パケットを生成するステップであり、各画素パケットが、スカラ算術演算のシーケンスにおいてオペランドとして処理されるべき画素属性の一部を含むステップと、少なくとも1つのALUにおいてそれらの画素パケットからオペランドを読み取るステップと、スカラ算術演算のシーケンスを実行するための命令シーケンスに従ってスカラ算術演算を実行するステップとを含む。
【0010】
[0010]グラフィックスプロセッサの一実施形態は、画素パケットを処理する少なくとも1つのALUを有するプログラマブルALU段であり、各ALUが、対応する現在の命令を有する入力画素パケットに対して実行される少なくとも1つの可能なスカラ算術演算の組を有するようにプログラムされているALU段を含み、グラフィックス処理機能を実行するために画素パケットに対して算術演算のシーケンスが行われる。
【0011】
[0011]本発明は、以下の詳細な説明を添付の図面と併せて読めば、より完全に理解されるものである。
【0012】
[0023]図面のいくつかの図を通して、類似の参照番号は、対応する部分を指すものである。
【発明の詳細な説明】
【0013】
[0024]図2は本発明の一実施形態のブロック図である。プログラマブルグラフィックスプロセッサ205が、レジスタインターフェース210と、ホストインターフェース220と、フレームバッファなどのグラフィックスメモリ(不図示)とのメモリ読取り/書込み操作のための直接メモリアクセス(DMA)エンジン230などのメモリインターフェースとに結合されている。ホストインターフェース220は、プログラマブルグラフィックスプロセッサ205が、ホストからグラフィック画像を生成するコマンドを受け取ることができるようにする。例えば、ホストは、プログラマブルグラフィックスプロセッサ205に、頂点データ、コマンドおよびプログラム命令を送ってもよい。DMAエンジン230などのメモリインターフェースは、グラフィックスメモリ(不図示)と読取り/書込み操作が行われ得るようにする。レジスタインターフェース210は、プログラマブルグラフィックスプロセッサ205のレジスタとのインターフェースを取るインターフェースを提供する。
【0014】
[0025]プログラマブルグラフィックスプロセッサ205は、プログラマブルグラフィックスプロセッサ205のホストとして働くソフトウェアアプリケーション270を実行する少なくとも1つの別の中央処理装置260を含むシステム290の一部として実施されてもよい。システム290の一例は、例えば、携帯電話や携帯情報端末(PDA)などのハンドヘルドユニットを備えていてもよい。例えば、ソフトウェアアプリケーション270は、ディスプレイ295上にグラフィックス画像を生成するグラフィックスアプリケーション275を含んでいてもよい。さらに、以下でより詳細に説明するように、いくつかの実施形態では、ソフトウェアアプリケーション270は、例えば、パイプライン再構成、レジスタ構成、およびテストなどといった、プログラマブルグラフィックスプロセッサ205に関連付けられる管理機能を実行する、グラフィックスプロセッサ管理ソフトウェアアプリケーション280を含んでいてもよい。
【0015】
[0026]一実施形態では、プログラマブルグラフィックスプロセッサ205、レジスタインターフェース210、ホストインターフェース220、およびDMAエンジン230は、メモリ上に常駐するソフトウェア270を有する中央処理装置260を含むチップ上に形成された集積回路200など、ホストを含む単一の集積回路200上に形成された組込みグラフィックス処理コア250の一部である。代替として、グラフィックス処理コア250が第1の集積回路上に配置され、CPU260が第2の集積回路上に配置されていてもよい。
【0016】
[0027]図3は、本発明の一実施形態によるプログラマブルグラフィックスプロセッサ205をより詳細に示すブロック図である。これは、セットアップ段305、ラスタ段310、ゲートキーパ段320、データフェッチ段330、算術論理演算装置(ALU)段340、データ書込み段355、および再循環パス360を含む。一実施形態では、プログラマブルグラフィックスプロセッサ205は、テクスチャ合成、フォグ、アルファブレンド(色混合など)、アルファテスト(色テストなど)、Z深さテスト、その他のシェーディングアルゴリズムといった3次元グラフィックス操作を実施するためのシェーダプログラムを実行するように構成されたALU350を含む。しかしながら、以下の考察を通して読めば、プログラマブルグラフィックスプロセッサ205が、他の種類の処理操作を実行するように構成されてもよいことが理解されるであろう。
【0017】
[0028]セットアップ段305は、集積回路200上で走っているソフトウェアアプリケーションなどのホストから命令を受け取る。一実施形態では、セットアップ段305は、座標(Xフォーム)の幾何変換、クリッピング、およびセットアップの機能を実行する。セットアップユニットは、頂点情報(例えば、x、y、z、色および/またはテクスチャ属性など)を取得し、ユーザ定義のビュー変換を適用して各幾何プリミティブ(プリミティブは、通常、三角形として実施されるため、以後、三角形と記載する)ごとの画面空間座標を計算し、次いで、それがラスタ段310に送られて、与えられた三角形を描画する。セットアップ段305によって使用される頂点データのバッファを提供するために、頂点バッファ308が含まれていてもよい。一実施形態では、セットアップ段305は、重心係数をセットアップする。一実装形態では、セットアップ段305は、32ビットIEEE浮動小数点形式、S15.16固定小数点形式およびパックド.8形式をサポートする浮動小数点超長命令語(VLIW)マシンである。
【0018】
[0029]ラスタ段310は、セットアップ段205から、レンダリングされるべき(例えば、画素に変換される)三角形に関するデータを受け取る。いくつかの実施形態では、例えば、ラスタ段310に、ラスタ段310の命令をプログラムするための命令RAM(不図示)が含まれていてもよい。ラスタ段310は、所与の三角形の各画素を処理し、例えば、色、テクスチャ、アルファテスト、アルファブレンド、z−深さテスト、およびフォグパラメータの計算など、レンダリングの一部として画素について計算される必要のあるパラメータを求める。一実施形態では、ラスタ段310は、画素パケットの重心係数を計算する。重心座標系において、三角形における距離は、その頂点に関して測定される。重心係数の使用は、必要なダイナミックレンジを狭め、浮動小数点計算より少ない電力で済む固定小数点計算の使用を可能にする。
【0019】
[0030]ラスタ段310は、処理されるべき三角形の各画素ごとに少なくとも1つの画素パケットを生成する。各画素パケットは、処理に必要な画素属性(例えば、色、テクスチャ、深さ、フォグ、(x,y)位置など)のペイロードのフィールドを含む。さらに、各画素パケットは、画素パケットに対して行われるべき操作の命令シーケンスを含む、関連付けられたサイドバンド情報も有する。ラスタ段210内の命令領域(不図示)が画素パケットに命令を割り当てる。
【0020】
[0031]図4に、ある画素の画素パケットの例430、460を示す。一実施形態では、ラスタ段210は、画素属性を、それぞれが、特定の種類の命令が作用する画素属性データだけのためのフィールドを必要とする、2つ以上の異なる種類の画素パケット430、460に区分する。画素データをより小さい作業単位に区分すれば、帯域幅要件が軽減され、また、例えば、特定の処理操作のために画素の属性のほんの一部だけが操作されればよい場合には、処理要件も軽減される。
【0021】
[0032]各画素パケットは、関連付けられたサイドバンド情報410およびペイロード情報420を有する。サイドバンド情報の例は、有効フィールド412、キルフィールド414、タグフィールド、および現在の命令を含む命令フィールド416を含む。画素パケットの例430は、フォグフィールド426と共に、テクスチャ座標422、424フィールドの第1の組(s,t)を含む。画素パケットの例460は、色フィールド462、およびテクスチャ座標464、466の第2の組(s,t)を含む。一実施形態では、各画素パケットは、固定小数点表現のペイロード情報420を表す。画素属性のために20ビットの画素パケットサイズを有する画素パケットに含まれ得る画素属性の例には、1つのZ.16の16ビットZ深さ値、1つの16ビットS/Tテクスチャ座標および4ビット詳細レベル、それぞれが8ビットの精度を有する1対の色値、または各ARGB変数に5ビットずつを有するパックド5555ARGB色が含まれる。
【0022】
[0033]画素パケットのサイドバンド情報は、画素の(x,y)位置を含んでいてもよい。しかしながら、一実施形態では、ラスタ段310が走査線に沿って三角形を横切ってウォークし始める(x,y)起点において、ラスタ段310によってstart spanコマンドが生成される。start spanコマンドの使用は、(x,y)位置が画素パケットから除外されることを可能にする。start spanコマンドは、他のエンティティ(データ書込み段355やデータフェッチ段330など)に、走査線の開始時の初期(x,y)位置を知らせる。走査線に沿った他の画素の(x,y)位置は、所与の画素が起点から離れている画素数によって推論される。一実施形態では、データ書込み段355およびデータフェッチ段330は、ローカルカウンタを増分し、それらがspan startコマンド後に遭遇した画素数の計算に基づいて(x,y)位置を更新するように適合されたローカルキャッシュを含む。
【0023】
[0034]図5を参照すると、一実施形態では、ラスタ段310は、処理されるべき画素ごとに画素パケットの少なくとも1つの行510を生成する。いくつかの実施形態では、各行510は、その行510の命令シーケンスを定義する共通のサイドバンド情報410を有する。画素に複数の行510が必要とされる場合、それらの行510は、新しいクロックサイクルごとに連続して処理される行のグループ520として編成される。一実施形態では、80ビット画素データが4つの20ビット画素属性レジスタ値に区分され、それら4つの画素レジスタ値が、画素の画素パケット(R0、R1、R2、およびR3)の「行」510を定義する。
【0024】
[0035]ラスタ段310の反復子レジスタプール(不図示)は、画素パケットの行510をサポートするための対応するレジスタを有する。一実装形態では、ラスタ段310は、画素パケットの最大4つの行までをサポートするレジスタプールを含む。テクスチャなど、いくつかの種類の画素パケット属性は、高精度を必要とすることがある。逆に、色など、いくつかの種類の画素パケット属性は、より低い精度でよいこともある。レジスタプールは、行510内の各画素パケットごとに高精度値および低精度値をサポートするように構成され得る。一実施形態では、レジスタプールは、1行当たり4つの高精度および4つの低精度パースペクティブ補正反復値と、Z深さ値を含む。これは、例えば、ソフトウェアが、特定の画素パケット属性を処理するための反復子の精度を割り当てることを可能にする。一実施形態では、ラスタ段310は、テクスチャの整数部分を追跡するように適合されたレジスタプールを含み、テクスチャの小数ビットがデータパケットとして送られ得るようにする。
【0025】
[0036]ラスタ段310は、例えば、画素に対して操作が行われることを必要とするホストからの命令を受け取ることがある。これに応答して、ラスタ段310は、関連付けられた命令シーケンスを有する画素パケットの1つまたは複数の行510を生成し、それらの画素パケット行および命令は、所望の処理操作を実行するように構成される。以下でより詳細に説明するように、一実施形態では、ALU段340は、そのオペランドが、画素パケットの行510内の画素属性の事前に選択された一部、定数値、および画素パケットに対する前の計算の一時的に格納された結果を含むスカラ算術演算が実行されることを可能にする。
【0026】
[0037]様々なグラフィックス操作が、1つまたは複数のスカラ算術演算として定式化され得る。さらに、様々なベクトルグラフィックス操作が、複数のスカラ算術演算として定式化され得る。よって、本発明のプログラマブルグラフィックスプロセッサ205は、その内容が参照により本明細書に組み込まれる、Open GL(登録商標) Graphics System: A Specification (Version 1. 2)に記載されているような、フォグ操作、色(アルファ)合成、テクスチャ合成、アルファテスト、深さテストなどのスカラ算術演算のシーケンスとして表され得る、画素に対する任意のグラフィックス操作を実行するようにプログラムされてもよいことが理解されるであろう。例えば、ラスタ段310が画素に対して実行されるべき所望のグラフィックス処理機能(フォグ操作など)を検出したことに応答して、ラスタ段310は、プログラマブルマッピング表またはマッピングアルゴリズムを使って、画素パケットの割り当て、および画素に対してそのグラフィックス機能を実施するのに必要なスカラ算術演算を実行するための関連付けられた命令を決定することができる。マッピングは、例えば、グラフィックスプロセッサ管理アプリケーション280によってプログラムされてもよい。
【0027】
[0038]図3に戻ると、三角形の各画素がラスタ段310によってウォークされるに従って、ラスタ段310は、さらなる処理のために画素パケットを生成し、それらがゲートキーパ段320によって受け取られる。ゲートキーパ段320は、データフロー制御機能を果たす。一実施形態では、ゲートキーパ段320は、画素パケットのスケジューリング、負荷均衡化、リソース割り振り、およびハザード回避のための関連付けられたスコアボード325を有する。スコアボード325は、画素の入力および除却を追跡する。ゲートキーパ段320に入力される画素パケットは、スコアボードを設定し、スコアボードは、処理完了後に画素パケットがプログラマブルプロセッサ205から排出される際にリセットされる。例をあげて説明すると、コンパクトディスプレイ295が128×32画素の領域を有する場合、スコアボード325は、画素を監視するためにディスプレイの各画素ごとに表を維持してもよい。
【0028】
[0039]スコアボード325は、いくつかのメリットを提供する。例えば、スコアボード325は、三角形内のある画素が、処理されている未完了の別の画素の上にある場合のハザードを防止する。一実施形態では、スコアボード325は、アイドル状態を監視し、スコアボード情報を使ってアイドル状態の装置をクロックオフする。例えば、有効な画素がない場合、スコアボード325は、節電のためにALUをオフにしてもよい。以下でより詳細に説明するように、スコアボード325は、キルビットが設定されている画素パケットと共に、ALU350による処理が可能な画素パケットを追跡して、画素パケットが、アクティブな処理なしでALU350を流れるようにする。一実施形態では、スコアボード325は、再循環された画素パケットの(x,y)位置を追跡する。画素パケットが再循環される場合、スコアボード325は、その画素の次の命令への後続の受け渡しにおいてその画素パケットの命令シーケンスを増分する。例えば、命令が受け渡し番号1のフォグ操作のものである場合、命令は、受け渡し番号2のアルファブレンド操作まで反復される。
【0029】
[0040]データフェッチ段330は、ゲートキーパ320によって渡された画素パケットためのデータをフェッチする。これは、例えば、画素パケットの各行ごとに適切な色、深さ、またはテクスチャデータ読取りを行うことによる、色、深さおよびテクスチャデータのフェッチを含んでいてもよい。データフェッチ段330は、例えば、メモリインターフェースからの読取り(例えば、DMAエンジン230を使ったフレームバッファ(不図示)の読取りなど)を要求することによって画素またはテクセルデータをフェッチしてもよい。また、一実施形態では、データフェッチ段330は、テクスチャ/フォグキャッシュ332、色/深さキャッシュ334、および深さデータのためのZキャッシュ(不図示)などのローカルキャッシュを管理してもよい。フェッチされるデータは、画素パケットを次の段に送る前に、対応する画素パケットフィールドに配置される。一実施形態では、データフェッチ段330は、画素パケット属性フィールドによって必要とされるデータにアクセスするための命令を有する命令ランダムアクセスメモリ(RAM)を含む。また、いくつかの実施形態では、データフェッチ段330は、Z深さテストも行う。この実施形態では、データフェッチ段330は、1つまたは複数の深さ比較テストを使って、画素パケットのZ深さ値を、格納されたZ値と比較する。画素のZ深さ値が、その画素が遮蔽されていることを示す場合、キルビットが設定される。
【0030】
[0041]画素パケットの行は、処理のために算術論理演算装置(ALU)段340に入力される。ALU段340は、ALU350−0、350−1、350−2、および350−3など、少なくとも1つのALU350を含むALU350の組を有する。4つのALU350が図示されているが、ALU段340では、アプリケーションに応じてより多い、または少ないALU350が使用されてもよい。個別ALU350は、画素パケットの少なくとも1行510の現在の命令を読み取り、サポートするようにプログラムされているスカラ算術演算を実行する任意の命令を実施する。命令は、各ALU350に含まれ、例えば、ローカル命令RAM(図3には図示せず)上に格納されていてもよい。
【0031】
[0042]各ALU350は、オペランドの第1の積(a*b)およびオペランドの第2の積(b*c)に対する少なくとも1つの算術演算を実行する命令を含む(式中、a、b、cおよびdはオペランドであり、*は乗算である)。オペランドの一部または全部は、例えば、画素パケットの行510内のレジスタ値属性に対応していてもよい。また、ALU350は、一定の、またはソフトウェアロード可能な1つまたは複数のオペランド値を備えていてもよい。いくつかの実施形態では、ALUは、画素パケットに対する前の操作からの一時的に格納された結果を使ってサポートしてもよい。
【0032】
[0043]一実施形態では、各ALU350はプログラム可能である。ソフトウェア(ソフトウェアアプリケーション270など)からの命令に応答してオペランドおよび結果の宛先が選択され得るように、ALU350内にクロスバー(不図示)または他のプログラマブル選択器が含まれていてもよい。例えば、一実施形態では、操作コマンドコードを使って、画素パケットの行510内の任意のレジスタ値、一時的な値、および定数値の属性からの各オペランド(a、b、c、d)のソースが選択されてもよい。この実施形態では、操作コマンドは、ALU350に、結果で画素パケットを更新する、結果を一時的な値として保存する、あるいは結果で画素パケットを更新すると共に結果を一時的な値として保存するなど、算術演算の結果をどこに送るべきかをも指示する。よって、例えば、ALUは、画素パケット内の特定の属性をオペランドとして読み取り、現在の命令によって指示されるスカラ算術演算を適用するようにプログラムされ得る。また、操作コマンドコードには、オペランドの補数を取る(例えば、xを読取り値とする場合、1−xを計算する)コマンド、オペランドを否定する(例えば、xを読取り値とする場合、−xを計算する)コマンド、あるいはオペランドまたは結果をクランプするコマンドも含まれ得る。操作コマンドコードの他の例には、例えば、データ形式を選択するコマンドも含まれ得る。
【0033】
[0044]ALU350によって実行される算術演算の一例が、画素パケット内の少なくとも1つの変数に関する(a*b)+(c*d)の形のスカラ算術演算である(式中、a、b、cおよびdはオペランドであり、*は乗算である)。また、各ALU350は、好ましくは、オペランドの補数を取る、オペランドを否定するなど、他の数値演算を実行するようプログラムされてもよい。さらに、いくつかの実施形態では、各ALU350は、(a*b、c*d)から最小値および最大値を計算し、論理比較(例えば、a*bがc*dと等しい、c*dと等しくない、c*dより小さい、あるいはc*d以下であるかどうかの論理的結果など)を行ってもよい。
【0034】
[0045]いくつかの実施形態では、各ALU350は、a*bとc*dの比較(例えば、a*bがc*dに等しくない場合キルする、a*bがc*dに等しい場合キルする、a*bがc*dより小さい場合キルする、a*bがc*d以上である場合キルする)などのテストに基づいてキルフィールド414にキルビットを生成するかどうか決定する命令を含んでいてもよい。キルビットを生成し得るALU操作の例には、式、IF (alpha>alpha reference), then kill the pixel(式中、alphaは色値であり、alpha referenceは基準色値である)など、色値がテスト色値に比較されるアルファテストが含まれる。キルビットを生成し得るALU操作の別の例がZ深さテストであり、画素のZ値が、同じ位置を有する前の画素の少なくとも1つのZ値に比較され、深さテストが、その画素が遮蔽されていると示せば、画素がキルされる。
【0035】
[0046]一実施形態では、画素パケットにおいてキルビットが設定されている場合、画素パケットの処理に関して、個別ALU350が使用不可とされる。一実施形態では、サイドバンド情報でキルビットが検出されたときに、クロックゲーティング機構を使ってALU350が使用不可とされる。その結果、画素パケットにキルビットが生成された後で、ALU350は、画素パケットがALU段340を通って伝搬する際にその画素パケットに電力を浪費しなくなる。しかしながら、キルビットが設定された画素パケットは、さらに先に伝搬し、データ書込み段355およびスコアボード325によって計上され得ることに留意されたい。これは、たとえキルビットによってそれ以上のALU処理を必要としないとマークされている画素パケットであれ、すべての画素パケットが、スコアボード325によって計上されるようにする。一実施形態では、画素の任意の行510がキルビットでマークされている場合、同じ画素の他の行510もキルされる。これは、例えば、行510がキルビットでマークされている画素を追跡する段の間で、または1つまたは複数の段によってキル情報を転送することによって達成されてもよい。いくつかの実施形態では、キルビットがセットされると、画素パケットの行510の(キルビットを含む)サイドバンド情報410だけが次の段に伝搬する。
【0036】
[0047]ALU段340の出力は、データ書込み段355に進む。データ書込み段355は、処理された画素パケットを画素データに変換し、その結果を(DMAエンジン230などを介して)メモリインターフェースに書き込む。一実施形態では、画素の書込み値が書込みバッファ352に累積され、累積された画素の書込みはバッチでメモリに書き込まれる。データ書込み段355が実行し得る機能の例には、色および深さ書戻し、およびフォーマット変換が含まれる。いくつかの実施形態では、データ書込み段355は、キルされるべき画素を識別し、キルビットを設定してもよい。
【0037】
[0048]画素パケットを再循環させてゲートキーパ320に戻す再循環パス360が含まれる。再循環パス360は、例えば、一連の算術演算を必要とするプロセスが、ALU段340を通る複数の受け渡しを使って実行されることを可能にする。データ書込み段355は、スコアボードに記録するために除却されたゲートキーパ段320への書込みを示す。
【0038】
[0049]図6は、個別ALU350の例を示すブロック図である。ALU350は、対応するレジスタR0、R1、R2、およびR3内の画素パケットの行510を受け取るデータバスを備える入力バス605を有する。ALU命令のために命令RAM610が含まれる。命令セットの一例をブロック620に示す。一実施形態では、ALU350は、行510から4つの20ビットレジスタ値の任意の1つを読み取り、行510からオペランドの組を選択するようにプログラムされてもよい。さらに、ALU350は、パス640で示すように、前の結果から一時的に保存されている、1つのALU350当たり2つの20ビットの一時的な値など、レジスタ(T)630からの一時的な値をオペランドとして選択するようにプログラムされてもよい。また、ALU350は、やはりソフトウェアによってプログラムされ得る、定数値(不図示)をオペランドとして選択してもよい。一実施形態では、マルチプレクサ(MUX)645の第1段が、画素パケットの行からのオペランド、任意の一時的な値630、および任意の定数値(不図示)を選択する。オペランドを、算術計算ユニット670におけるALU350の計算精度に適した所望のデータ形式に変換するためにフォーマット変換モジュール650が含まれていてもよい。ALU350は、各オペランドまたはその補数がMUX660の第2段において選択されることを可能にする要素を含む。結果として生じる4つのオペランドは、2つの乗算および1つの加算を実行することのできるスカラ算術計算ユニット670に入力される。結果として生じる値は、任意選択で、クランパ680を使って所望の範囲(例えば、0から1.0まで)にクランプされてもよい。画素パケットの行510は、バス690上で終了する。
【0039】
[0050]一実施形態では、選択された画素パケット属性を、1符号1.8(S1.8)形式としてもよい。S1.8形式は、[-2から+2)までの範囲にある8ビットの小数を有する2進数である。S1.8形式は、計算のためのより高いダイナミックレンジを許容する。例えば、照明を処理する計算において、S1.8形式は、より大きいダイナミックレンジを可能とし、結果としてアリズムが改善される。S1.8で実行されるスカラ算術演算の結果が[0,1]の範囲になければならない場合、その結果は、結果が強制的に範囲[0,1]になるようにクランプされてもよい。例をあげて説明すると、色データのシェーディング計算がS1.8形式で実行され、次いで、その結果がクランプされてもよい。本発明の実施形態では、異なる種類の画素パケットは、異なるフォーマットで表されるデータ属性を有していてもよいことに留意されたい。例えば、色データが、S1.8形式の第1の種類の画素パケットで表され、(s,t)テクスチャデータが高精度16ビット形式による第2の種類の画素パケットで表されてもよい。いくつかの実施形態では、画素パケットビットサイズは、最高精度の画素属性のビットサイズ要件によって設定される。例えば、テクスチャ属性は、通常、色より大きい精度を必要とするため、画素パケットサイズは、16ビットテクスチャデータなど、高レベルの精度を有するテクスチャデータを表すように設定されてもよい。S1.8形式の改善されたダイナミックレンジは、例えば、複数の色成分のデータを、例えば、テクスチャデータに16ビットと4ビットの詳細レベル(LOD)を必要とするより高精度のデータのテクスチャデータに選択されるサイズである20ビット画素パケットサイズに効率よくパッキングすることを可能にする。例えば、各S1.8色成分は10ビットを必要とするため、2つの色成分が、1つの20ビット画素パケットにパックされてもよい。
【0040】
[0051]図7に、2つ以上のALU350がつなぎ合わされているパイプラインとして構成された複数のALU350を含むALU段340の例を示す。前述のように、個別ALU350は、画素パケットから1つまたは複数のオペランドを読み取り、算術演算の結果を生成し、その結果で画素パケットまたは一時レジスタを更新するようにプログラムされてもよい。各ALUは、オペランドを読み取り、演算結果を生成し、1つまたは複数の画素パケットまたは一時的な値を更新してから画素パケットの行を次のALUに渡す役割が割り当てられてもよい。
【0041】
[0052]ALU段340のALU350間のデータフローは、実行されるべき処理操作、ALU待ち時間、および効率性の考慮事項に応じて、様々なやり方で構成され得る。前述のように、本発明は、各ALUが、画素パケットの行内の選択されたオペランドを読み取り、結果で選択された画素パケットレジスタを更新するようにプログラムされるようにする。一実施形態では、ALU段340は、各色チャネル(例えば、赤、緑、青およびアルファなど)ごとに少なくとも1つのALU350を含む。これは、例えば、各ALUが、類似の、または異なる処理タスクを実行するために、(パイプライン化により異なる時点においてではあるが)画素パケットの行510に対して並列に動作するように構成される負荷均衡化を可能にする。ALU350がどのようにしてプログラムされ得るかの一例を上げると、第1のALU350-0が第1の色成分の計算を行うようにプログラムされ、第2のALU350-1が第2の色成分の操作を行うようにプログラムされ、第3のALU350-2が第3の色成分の操作を行うようにプログラムされ、第4のALU350-3がフォグ操作を行うようにプログラムされてもよい。よって、いくつかの実施形態では、各ALU350に、画素パケットの行510の異なる処理タスクが割り当てられてもよい。さらに、以下でより詳細に説明するように、いくつかの実施形態では、ソフトウェアは、ALU350を、ALU350の実行順序を含むALU段340内のALU350のデータフローを選択するように構成してもよい。しかしながら、データフローは構成されてもよいため、いくつかの実施形態では、ALUのチェーンに沿ったデータフローが、1つのALU350-0の結果が、後続のALU350-1によってオペランドとして読み取られる1つまたは複数の画素パケットレジスタを更新するように構成されてもよいことが理解されるであろう。
【0042】
[0053]図8は、各段を通る画素パケットのプロセスフローが、グラフィックスプロセッサ管理アプリケーション280からのソフトウェアコマンドなどのソフトウェアコマンドに応答して構成可能な再構成可能パイプラインを有するプログラマブルグラフィックスプロセッサ205の一部の実施形態を示すブロック図である。各段の要素のそれぞれの入力と出力とに結合された分配器890、895は、画素パケットのプロセスフローが再構成されることを可能にする。各段には、例えば、データフェッチ段830、データ書込み段855、個別ALU850などが含まれ得るが、他の種類のものも分配器890、895を使って再構成され得ることが理解されるであろう。いくつかの実施形態では、ソフトウェアは、各段を通る画素パケットのプロセスフローを動的に再構成してもよい。よって、好ましくは、同期技法を利用して、ある構成から別の構成への切換えの間に、未完了の画素パケットのデータフローが調整される。すなわち、第1の構成で処理することが意図されている未完了の画素パケットが、その構成が第2の構成に変更される前に、その処理を完了するように同期が行われる。
【0043】
[0054]一実施形態では、データフェッチ段830、データ書込み段855、および個別ALU850は、それぞれ第1の分配器890に接続された個々の入力と、それぞれ第2の分配器895に接続された個々の出力とを有する。各分配器890、895は、データフェッチ段830、ALU850およびデータ書込み段855への入力画素パケットの配布フローを選択するために、例えば、スイッチ、クロスバー、ルータ、またはMUX回路などを備えていてもよい。分配器890、895は、データフェッチ段830、データ書込み段855、および個別ALU850を通る入力画素パケット810のデータパスを決定する。信号入力892、894は、分配器890、895が、データフェッチ段830と、データ書込み段855と、ALU850の間での画素パケットの分配を再構成するための(例えば、CPU上で走っているソフトウェアアプリケーションからの)ソフトウェアコマンドを受け取ることを可能にする。再構成の一例が、ALU850の実行順序を割り当てることである。再構成の別の例が、データフェッチ段がある一定の時間タスクを処理するのに必要とされないと判定された場合に、データフェッチ段830を迂回することである。再構成の別の例として、データフェッチ段830がALUに結合される順序を変更することが望ましいこともある。別の例として、データ書込み段855を再配列することが望ましいこともある。例をあげて説明すると、データフェッチの前にテクスチャ座標を操作する方が効率的である場合もあり、その場合、データフローは、ALU850がテクスチャ操作を行った後でデータフェッチ段830に画素パケットを受け取らせるように構成される。よって、再構成可能なパイプラインの1つの利点は、ソフトウェアアプリケーションが、効率を上げるためにプログラマブルグラフィックスプロセッサ205を再構成することができることである。
【0044】
[0055]図5に戻ると、前述のように、ラスタ段310は、処理のために画素パケットの行510を生成する。各行510は、さらに、連続するクロックサイクルで処理するために渡される、4行510のシーケンスなど、行のグループ520に構成されてもよい。しかしながら、画素パケットの行510に対して行われ得るいくつかの操作は、画素パケットの別の行の算術演算の結果を必要とすることもある。したがって、一実施形態では、ラスタ段310は、行のグループ520内の画素パケットを、データ依存関係を明らかにするように構成する。例をあげて説明すると、ある画素パケットに対するテクスチャ操作が、ある行内の別の画素パケットの結果を必要とする場合、グループ520は、依存テクスチャ操作を有する画素パケットが後の行に配置されるように構成される。
【0045】
[0056]図9を参照すると、一実施形態では、画素は、代替として、ラスタ段310によって奇数または偶数として割り当てられる。画素の各行ごとの対応するレジスタ(R0、R1、R2、およびR3)が、しかるべく、偶数または奇数に割り当てられる。次いで、偶数画素の画素パケットの偶数行905と奇数画素の奇数行910が、データ依存関係を回避するための1つまたは複数の規則を利用してインターリーブされる。1行おきにインターリーブすれば、ALU待ち時間を引き受ける追加のクロックサイクルが提供される。よって、偶数画素の行0が、偶数画素の行1によって必要とされる結果を生成するのに2クロックサイクルを必要とする場合、奇数画素での行0をインターリーブすれば、ALU待ち時間によって必要とされる時間の追加のクロックサイクルが提供される。説明例として、偶数画素での行0が合成操作であり、同じ画素での行1が、第1の合成操作の結果を必要とする第2のテクスチャとの合成に対応するマルチテクスチャ操作を考察する。第1の操作でのALU待ち時間が2クロックサイクルである場合、インターリービングは、合成操作の結果が、合成操作を用いるテクスチャに利用できるようにする。
【0046】
[0057]インターリーブされる実施形態においては、好ましくは、インターリーブされたデータフローを調整するためのサイドバンド情報が含まれる。例えば、一実施形態では、各画素パケット内のサイドバンド情報は、偶数行と奇数数行を区別するための偶数/奇数フィールドを含む。また、各ALU350は、偶数/奇数画素パケットの適切な一時的な値を提供するために、偶数画素と奇数画素の一時レジスタに対応する2組の一時レジスタを含んでいてもよい。偶数/奇数フィールドを使って適切な一時レジスタの組が選択される。例えば、奇数の画素には偶数の一時レジスタが選択され、偶数の画素には一時レジスタの奇数の組が選択される。一実施形態では、偶数画素と奇数画素の両方に使用される定数値に必要な総記憶量を低減するために、定数レジスタが、偶数画素と奇数画素の両方によって共用される。一実施形態では、ソフトウェアホストは、定数レジスタをエミュレートするために、長期間にわたって、一時レジスタを定数値に設定してもよい。2つの画素のインターリービングは1つの実装形態であるが、例えば、ALU待ち時間が2つより大きいクロックサイクルに対応する場合、インターリービングは、さらに、2つより大きい画素をインターリーブするように拡張されてもよいことが理解されるであろう。ラスタ段310インターリーブ画素パケットを有することの1つの利点は、ALU待ち時間がハードウェアによって考慮に入れられ、例えば、ラスタ段310が画素をインターリーブしなかった場合などに通常発生するはずのALU待ち時間を引き受けるためにソフトウェアにかかる負担が軽減されることである。
【0047】
[0058]前述のように、構成可能なパイプラインでは、ALU350内のデータフローが構成されてもよい。例えば、ハードウェアにおいて、各ALU350は、実質的に同一とすることができる。しかしながら、個々のALUは、データフローにおいて複数の位置、例えば、異なる実行順序を有するように構成されてもよい。したがって、各ALU350に、そのデータフロー内での位置を示す識別子が設けられる必要がある。この識別子は、例えば、各ALU350の直接レジスタ書込み技法によって、各ALU350に提供されてもよい。しかしながら、この手法には、大きなソフトウェアオーバーヘッドを必要とするという欠点がある。したがって、一実施形態では、パケット技法を利用し、構成情報を必要とする要素をトリガしてそれらのプロセスフロー内の相対的位置を発見させ、対応する識別子をローカルレジスタに書き込ませる。
【0048】
[0059]図10を参照すると、一実施形態では、ALU350のレジスタアドレス空間は、データパケットを使用して各ALU350に識別(ID)を送るパケット初期設定技法を使ってソフトウェアにより構成可能である。各ALU350は、例えば、データパケットを受け取り、転送する従来のネットワークモジュールを含んでいてもよい。一実施形態では、IDパケット1010がソフトウェアアプリケーションによって開始される。IDパケット1010は、数値などの初期IDコードを含む。IDパケット1010は、グラフィックスパイプラインの、IDコードを必要とする要素の前の時点において注入され、次いで、現在のパイプライン構成によって定義されるプロセスフローの後続の要素に渡される。一実施形態では、第1のALU350の構成レジスタ1020がIDパケットを受け取り、IDコードの現在値を構成レジスタに書き込み、次いで、IDパケットを次のALUに渡す前に、IDパケットのIDコードを増分する。このプロセスが続けられて、各後続ALU350がIDコードの現在値をその構成レジスタに書き込み、次いで、増分されたIDコードを有するIDパケットを次のALUに渡す。また、データフローパスに沿った他の段も類似のやり方で構成レジスタを設定させ得ることが理解されるであろう。例えば、構成フロー中の各要素には、やはり、IDパケットを読み取ることによって構成レジスタを設定させ、IDコードを増分してから増分されたIDを有するIDパケットを構成フロー中の次の要素に渡すデータフェッチ段またはデータ書込み段が含まれていてもよい。この形のレジスタ構成の1つの利点は、それがALU350ユニット間のハードウェアの差異を必要とせず、パイプラインを通るデータフローのソフトウェア再構成を可能にすることである。よって、例えば、一実施形態では、グラフィックスプロセッサ管理アプリケーション280は、IDパケット発生器1030によって受け取られる、ホストインターフェース220を介してIDパケット1010を生成するコマンドを発行するなどによって、初期IDパケット1010を生成するだけでよい。
【0049】
[0060]代替の実施形態では、構成レジスタが書き込まれることを必要とする要素をトリガしてそれらのIDを発見させるために、ブロードキャストパケット技法を使ってIDコードが構成レジスタに書き込まれる。この実施形態では、各要素(ALU350など)は、ネットワークプロトコルを使ってそれらのIDを発見してもよい。ブロードキャストパケット技法は、例えば、パイプラインの分岐が画素を並列で処理するようにパイプラインが分岐される実施形態において有用である。
【0050】
[0061]図11に、診断監視機能を含む実施形態を示す。一実施形態では、各ALU350およびデータフェッチ段330に関連付けられたタップなど、グラフィックスプロセッサ205の要素に沿ったタップのシーケンスがある。また、タップは、他の段に含まれていてもよい。構成可能なテスト点選択器1105が、グラフィックスプロセッサ管理アプリケーション280からのソフトウェアコマンドなどのソフトウェアコマンドに応答して、2つのタップ1120、1130などの選択されたタップが監視され得るように適合される。構成可能なテスト点選択器1105は、例えば、マルチプレクサを使って実施されてもよい。一実施形態では、選択されたテスト点ごとの統計収集のために少なくとも1つのカウンタ1110が含まれる。一実施形態では、ソフトウェアによって生成される計測パケットが、監視されるべきタップに関する情報を提供し、選択されたテスト点でのカウントを可能にする。さらに、パイプラインの動作モードに基づいて統計収集をオンとオフにゲート制御するための計測レジスタが含まれていてもよい(例えば、ソフトウェアが、アルファブレンド操作が行われるときに統計カウントを可能にするなど、特定の種類のグラフィックス操作をカウントすることができるようにする計測レジスタが設けられていてもよい)。構成可能なテスト点選択器1105の1つの利点は、それが、グラフィックスプロセッサ管理アプリケーション280などのソフトウェアが、当該のテスト点だけのために統計データを収集させることを可能にし、ハードウェアの複雑度およびコストを低減し、しかも、ソフトウェアがプログラマブルプロセッサ205の挙動の任意の部分を解析することも可能にすることである。当該のテスト点は、例えば、テクスチャデータを処理するALU350など、特定の種類のデータを処理するALU350と関連付けられた統計を収集するように選択されてもよい。さらに、統計収集は、アルファブレンドなど、特定のグラフィックス操作のために使用可能とされてもよい。
【0051】
[0062]一実施形態では、構成可能なテスト点選択器1105は、三線のプロトコルを利用する。有効なペイロードデータを有する、ALU350−0などの各要素は、有効信号を生成し、それは、例えば、次の要素(例えばALU350−1)などに流れてもよい。ペイロードを受け取ることが可能な状態の要素は、作動可能信号を生成し、それは、例えば、前の要素に流れてもよい。しかしながら、要素がペイロードを受け取ることが可能な状態ではない場合、その要素は、非作動可能信号を生成し、それは、例えば、作動可能信号をアサートしないことに対応してもよい。イネーブル信号は、例えば、監視されている点に隣接して格納される監視イネーブル制御ビットへのパイプライン化レジスタ書込みによるソフトウェア制御などによって、要素が監視可能とされることに対応する。信号は、信号を生成する要素から、またはこれらの信号を受け取る要素から直接出力されてもよい。
【0052】
[0063]選択されたタップ点における有効、作動可能、および非作動可能信号は、動作状態を判定するのに使用され得る。転送状態は、下流へ流れるデータの有効なペイロード(すなわち有効なビットセット)、およびそのデータを受け取る下流ブロックにおける下流ブロックからの作動可能信号を有するクロックティックに対応する(例えば、タップ点1120における、ALU−0からの有効信号およびタップ点1130におけるALU−1からの作動可能信号など)。待機状態は、下のブロックがデータを受け取ることが可能な状態ではないためにブロックされている有効なペイロードを有するクロックティックに対応する(例えば、タップ点1120における、ALU−0からの有効信号およびタップ点1130におけるALU−1からの非作動可能信号など)。この実施形態では、転送状態および待機状態が検出されるクロックサイクル数をカウントするなど、選択されたタップ点に関する統計が収集されてもよい。
【0053】
[0064]本発明の実施形態は、組込みグラフィックスプロセッサコア250で有用な様々な利点を提供する。コンパクトで、低電力のハンドヘルドシステム290では、電力、スペースおよびCPU能力が比較的限られている。一実施形態において、ALU350は、処理が必要とされないときに(例えば、キルビットを検出するなどによって)クロックゲート制御され、処理電力要件が軽減される。さらに、ラスタ段310は、処理される画素データの一部の画素パケットを生成するだけでよく、やはり、電力要件が軽減される。プログラマブルALU段340は、専用のグラフィックス機能を実行する専用段を備える従来のパイプラインよりも小さいチップ面積で済み、コストが低減される。プログラマブルプロセッサ205は、ソフトウェアによって構成可能なブロックとして実施されてもよく、効率性が改善される。テスト監視は、テスト点の一部をテストするように構成されてもよく、ソフトウェアによる帯域幅および解析要件が軽減される。上記およびその他の前述の特徴が、組込みグラフィックスプロセッサコア250で使用するための当該のプログラマブルグラフィックスプロセッサ205を構成するものである。
【0054】
[0065]以上の記述では、説明のために、特定の用語を使用して本発明の十分な理解提供した。しかしながら、具体的詳細は、本発明を実施するために必要とされないことが、当分野の技術者には明らかであろう。よって、以上の本発明の具体的実施形態の記述は、図示と説明のために提示するものである。これらは、網羅的であることも、本発明を開示の厳密な形に限定することも意図するものではない。上記の教示を考察すれば、明らかに、多くの変更および変形が可能である。実施形態は、本発明の原理およびその実際的な適用例を最も適切に説明し、それによって、当分野の技術者が、本発明および様々な変更を伴う様々な実施形態を、企図される特定の用途に適するように最も適切に利用することができるようにするために選択され、記述されたものである。添付の特許請求の範囲およびその均等物が本発明の範囲を定義するものである。
【図面の簡単な説明】
【0055】
【図1】3次元グラフィックスのための従来技術のパイプラインを示す図である。
【図2】本発明の一実施形態によるプログラマブルグラフィックスプロセッサを含む集積回路を示すブロック図である。
【図3】本発明の一実施形態によるプログラマブルグラフィックスプロセッサを示すブロック図である。
【図4】本発明の一実施形態による画素パケットの例を示す図である。
【図5】本発明の一実施形態による、画素パケットの画素パケットグループの行への配列の例を示す図である。
【図6】本発明の一実施形態による単一の算術論理演算装置を示すブロック図である。
【図7】本発明の一実施形態による2つの算術論理演算装置のシーケンスを示すブロック図である。
【図8】本発明の一実施形態による構成可能なプログラマブルグラフィックスプロセッサを示すブロック図である。
【図9】本発明の一実施形態による画素パケットの行のインターリービングを示す図である。
【図10】本発明の一実施形態による構成レジスタを有する算術論理演算装置を示すブロック図である。
【図11】本発明の一実施形態による構成可能なテスト点選択器を示すブロック図である。
【特許請求の範囲】
【請求項1】
処理されるべき各画素ごとに複数の画素パケットを生成する、ラスタライズされるべきプリミティブに関するデータを受け取るラスタ段であり、各画素パケットが、処理されるべき少なくとも1つの画素属性を識別するペイロード情報を含み、前記画素パケットに対して実行されるべき少なくとも1つの命令のシーケンスを識別する関連付けられたサイドバンド情報を有する前記ラスタ段と、
少なくとも1つのプログラマブル算術論理演算装置(ALU)を含む、前記画素パケットを処理するALU段であり、各ALUが、対応する現在の命令を有する入力画素パケットに対して実行される少なくとも1つの可能なスカラ算術演算の組を有するようにプログラムされている前記ALU段と
を備え、グラフィックス処理機能を実行するために、前記複数の画素パケットに対して算術演算のシーケンスが実行される、グラフィックスプロセッサ。
【請求項2】
ラスタライズされるべきプリミティブの頂点を変換し、セットアップする少なくとも1つの段と、
スカラ算術演算のシーケンスとして表現され得るグラフィックス操作を用いて、処理されるべき各画素ごとに画素パケットの少なくとも1つの行を生成する、ラスタライズされるべきプリミティブに関するデータを受け取るラスタ段と、
画素パケットの処理を追跡するためのスコアボードを含むゲートキーパと、
画素パケットの各行ごとにデータをフェッチするデータフェッチ段と、
前記画素パケットの各行を処理する複数のプログラマブル算術論理演算装置(ALU)を備えるALU段であり、各ALUが画素パケットの入力行を受け取って画素パケットの出力行を出力し、各ALUが、受け取った画素パケットの行から少なくとも1つのオペランドを読み取り、前記少なくとも1つのオペランドを使ってスカラ算術演算を実行し、結果を生成し、前記結果の一時的な値への書込みと前記結果を用いた前記出力行の画素属性レジスタの更新の少なくとも一方を実行する前記ALU段と、
前記複数のALUから受け取った処理された画素パケットの画素データのメモリ書込みを実行するデータ書込み段と
を具備し、前記グラフィックス処理機能を実行するために、前記複数の画素パケットに対して算術演算のシーケンスが実行される、グラフィックスプロセッサ。
【請求項3】
グラフィックスソフトウェアモジュールを有する中央処理装置と、
前記グラフィックスソフトウェアモジュールからの頂点情報、およびプログラマブルグラフィックスプロセッサの各段をプログラムするプログラミング命令を受け取るプログラマブルグラフィックスプロセッサであって、
前記グラフィックスソフトウェアモジュールからの命令に応答して、処理されるべき各画素ごとに複数の画素パケットを生成するラスタ段であり、各画素パケットが、処理されるべき少なくとも1つの画素属性を識別するペイロード情報を含み、前記各画素パケットに対して実行されるべき少なくとも1つの命令を識別する関連付けられたサイドバンド情報を有する前記ラスタ段、および
前記画素パケットを処理するように構成されている複数のプログラマブル算術論理演算装置(ALU)を含むALU段であり、各ALUが、前記グラフィックスソフトウェアモジュールによって、受け取った画素パケットから選択されたオペランドを読み取り、結果を生成するために現在の命令に応答してスカラ算術演算を実行し、前記結果を用いた画素属性レジスタの更新と前記結果の一時的な値としての格納の少なくとも一方を実行するように割り当てられる前記ALU段
を備える前記プログラマブルグラフィックスプロセッサと
を具備し、前記各画素に対してグラフィックス処理機能を実行するために、前記複数の画素パケットに対してスカラ算術演算のシーケンスを実行するグラフィックスシステム。
【請求項4】
ホストがグラフィックスコアのレジスタをプログラムするためのレジスタインターフェースと、
ホストが前記グラフィックスコアとやりとりするためのホストインターフェースと、
前記グラフィックスコアがデータを読み書きするためのメモリインターフェースと、
前記グラフィックスコア内に配置されたプログラマブルグラフィックスプロセッサであって、
ラスタライズされるべきプリミティブの頂点をセットアップし、変換する少なくとも1つの段、
スカラ算術演算のシーケンスとして表現され得るグラフィックス操作を用いて処理されるべき各画素ごとに画素パケットの少なくとも1つの行を生成する、ラスタライズされるべきプリミティブに関するデータを受け取るラスタ段であり、各画素パケットが、処理されるべき少なくとも1つの画素属性を識別するペイロード情報を含み、各行が、前記行の前記各画素パケットに対して実行されるべき少なくとも1つの命令を識別する関連付けられた情報を有する前記ラスタ段、
画素パケットの処理を追跡するためのスコアボードを含むゲートキーパ、
画素パケットの各行ごとにデータをフェッチするデータフェッチ段、
前記画素パケットの各行を処理する複数のプログラマブル算術論理演算装置(ALU)を備えるALU段であり、各ALUが画素パケットの入力行を受け取って画素パケットの出力行を出力し、各ALUが、受け取った画素パケットの行から少なくとも1つのオペランドを読み取り、前記少なくとも1つのオペランドを使ってスカラ算術演算を実行し、結果を生成し、前記結果の一時的な値への書込みと前記結果を用いた前記出力行の属性レジスタの更新の少なくとも一方を実行する前記ALU段、および
前記複数のALUから受け取った処理された画素パケットの画素データのメモリ書込みを実行するデータ書込み段
を備える前記プログラマブルグラフィックスプロセッサと
を具備し、前記グラフィックス処理機能を実行するために前記複数の画素パケットに対して算術演算のシーケンスが実行される組込みプロセッサ。
【請求項5】
画素に対して実行されるべき少なくとも1つのグラフィックス機能について、前記少なくとも1つのグラフィックス機能を実施するために画素パケットに対して実行されてもよいスカラ算術演算のシーケンスを識別するステップと、
前記画素の複数の画素パケットを生成するステップであり、各画素パケットが、前記スカラ算術演算のシーケンスにおいてオペランドとして処理されるべき画素属性の一部を含み、前記複数の画素パケットが関連付けられた命令シーケンスを有する前記ステップと、
少なくとも1つの算術論理演算装置(ALU)において、前記画素パケットからオペランドを読み取るステップと、
前記少なくとも1つのALUにおいて、前記少なくとも1つのグラフィックス機能を実施するために前記スカラ算術演算のシーケンスを実行する前記命令シーケンスに従ってスカラ算術演算を実行するステップと
を含む、画素に対してグラフィックス処理操作を実行する方法。
【請求項6】
画素に対して実行されるべきグラフィックス機能について、前記グラフィックス機能を実施するために画素パケットに対して実行されてもよいスカラ算術演算のシーケンスを識別するステップと、
前記画素が連続するクロックサイクルで処理されるように画素パケットの少なくとも1つの行を生成するステップであり、各画素パケットが、前記スカラ算術演算のシーケンスにおいてオペランドとして処理されるべき画素属性の一部のための少なくとも1つのフィールドを含み、前記少なくとも1つの行が関連付けられた命令シーケンスを有する前記ステップと、
複数の算術論理演算装置(ALU)のそれぞれにおいて、割り当てられたオペランドを読み取るステップであり、前記オペランドの少なくとも1つが、画素パケットの行内の画素パケットから読み取られるオペランドに対応する前記ステップと、
前記各ALUにおいて、前記グラフィックス機能を実施するための前記スカラ算術演算のシーケンスを実行する前記命令シーケンスに従って前記割り当てられたオペランドに対するスカラ算術計算を実行するステップと
を含む、画素に対してグラフィックス処理操作を実行する方法。
【請求項7】
画素パケットの行から選択されたオペランドを読み取り、前記画素パケットの行に関連付けられた選択された現在の命令に応答して選択されたスカラ算術演算を実行するように複数の算術論理演算装置(ALU)をプログラムするステップと、
画素に対して実行されるべき少なくとも1つのグラフィックス操作について、前記画素の属性の一部に対して実行されるべき少なくとも1つの対応するスカラ算術演算を識別するステップと、
前記画素の画素パケットの行を生成するステップであり、各画素パケットが、少なくとも1つのオペランドとして処理されるべき前記画素に関連付けられた少なくとも1つの属性のフィールドを含み、前記画素パケットが、実行されるべきスカラ算術演算のシーケンスを示す関連付けられた現在の命令を有する前記ステップと、
前記ALUにおいて、前記画素パケットの行内の前記選択されたオペランドを読み取り、前記関連付けられた現在の命令に対応する前記選択されたスカラ算術演算を実行するステップと
を含む、グラフィックス処理操作を実行する方法。
【請求項8】
画素に対して実行されるべき少なくとも1つのグラフィックス機能について、前記少なくとも1つのグラフィックス機能を実施するために画素パケットに対して実行されてもよいスカラ算術演算を識別するステップと、
処理されるべき前記画素の画素パケットの少なくとも1つの行を生成するステップであり、各画素パケットが、オペランドとして処理されるべき画素属性の一部のための少なくとも1つのフィールドを含み、前記少なくとも1つの行が関連付けられた命令シーケンスを有する前記ステップと、
複数の算術論理演算装置(ALU)のそれぞれにおいて、割り当てられたオペランドを読み取るステップであり、前記オペランドの少なくとも1つが、画素パケットの行内の画素パケットから読み取られるオペランドに対応する前記ステップと、
前記各ALUにおいて、前記命令シーケンスに従って前記割り当てられたオペランドに対するスカラ算術計算を実行する前記ステップと、
[0,1]の範囲にある結果を必要とする選択されたスカラ算術演算について、対応する画素パケットのオペランドを、8ビットの小数成分を有する[−2,+2)の範囲にあるオペランドの2進数表現に対応するS1.8形式でフォーマット設定し、前記選択されたスカラ算術演算の結果を[0,1]の範囲にクランプするステップと、
少なくとも1つの他のスカラ算術演算について、対応する画素パケットを異なるデータ形式でフォーマット設定するステップと
を含む、画素に対して、グラフィックス処理操作を実行する方法。
【請求項9】
画素の色成分に対して実行されるべき第1のグラフィックス機能について、前記第1のグラフィックス機能を実施するための第1のスカラ算術演算のシーケンスを識別するステップであり、前記第1のグラフィックス機能が、スカラ算術演算が[0,1]の範囲にクランプされた結果を有することを必要とする前記ステップと、
画素に関連付けられたテクスチャに対して実行されるべき第2のグラフィックス機能について、前記第2のグラフィックス機能を実施するための第2のスカラ算術演算のシーケンスを識別するステップと、
前記画素の画素パケットの少なくとも1つの行を生成するステップであり、各画素パケットが、少なくとも長さ16ビットの固定ビットサイズを有し、オペランドとして処理されるべき画素属性の一部のための少なくとも1つのフィールドを含み、前記少なくとも1つの行が関連付けられた命令シーケンスを有する前記ステップと、
前記第1のグラフィックス機能と関連付けられた各画素パケットごとに、S1.8形式で少なくとも2つの色成分をパックするステップであり、前記S1.8形式が、8ビットの小数成分を有する[−2,+2)の範囲にあるオペランドの2進数表現に対応する前記ステップと、
前記第2のグラフィックス機能と関連付けられた各画素パケットごとに、8を上回るビット数を必要とする単一の高精度テクスチャをパックするステップと、
複数の算術論理演算装置(ALU)のそれぞれにおいて、割り当てられたオペランドを読み取り、前記命令シーケンスに従って前記割り当てられたオペランドに対するスカラ算術計算を実行するステップと
を含み、前記第1のグラフィックス機能では、色成分が、前記S1.8形式のオペランドとして選択され、結果が[0,1]の範囲にクランプされ、前記第2のグラフィックス機能では、前記テクスチャが、8を上回るビット数の精度を有する形式のオペランドとして選択される、画素に対して、グラフィックス処理操作を実行する方法。
【請求項10】
ラスタライズされるべきプリミティブの頂点をセットアップし、変換する少なくとも1つの段と、
スカラ算術演算のシーケンスとして表現され得る各グラフィックス操作ごとに処理されるべき各画素ごとに画素パケットの少なくとも1つの行を生成する、ラスタライズされるべきプリミティブに関するデータを受け取るラスタ段と、
画素パケットの処理を追跡するためのスコアボードを含むゲートキーパと、
画素パケットの各行ごとにデータをフェッチするデータフェッチ段と、
前記画素パケットの各行を処理する複数のプログラマブル算術論理演算装置(ALU)を備えるALU段であり、各ALUが画素パケットの入力行を受け取って画素パケットの出力行を出力し、各ALUが、受け取った画素パケットの行から少なくとも1つのオペランドを読み取り、前記少なくとも1つのオペランドを使ってスカラ算術演算を実行し、結果を生成し、前記結果の一時的な値への書込みと前記結果を用いた前記出力行の画素パケットの更新の少なくとも一方を実行する前記ALU段と、
前記複数のALUから受け取った処理された画素パケットの画素データのメモリ書込みを実行するデータ書込み段と
を具備し、前記グラフィックス処理機能を実行するために、前記複数の画素パケットに対して算術演算のシーケンスが実行され、前記ラスタ段が、第1の種類のスカラ算術演算の画素パケットを、8ビットの小数成分を有する[−2,+2)の範囲にあるオペランドの2進数表現に対応するS1.8形式でフォーマット設定し、各ALUが、結果を[0,1]の範囲にクランプする前記第1の種類のスカラ演算を処理し、前記ラスタ段が、第2の種類のスカラ算術演算の画素パケットを、8を上回るビット数の精度を必要とする形式でフォーマット設定するグラフィックスプロセッサ。
【請求項11】
処理されるべき各画素ごとに複数の画素パケットを生成する、ラスタライズされるべきプリミティブに関するデータを受け取るラスタ段であり、各画素パケットが、処理されるべき少なくとも1つの画素属性を識別するペイロード情報を含み、前記各画素パケットに対して実行されるべき少なくとも1つの命令を識別する関連付けられたサイドバンド情報を有する前記ラスタ段と、
複数のプログラマブル算術論理演算装置(ALU)を含む、前記画素パケットを処理するALU段であり、各ALUが、対応する現在の命令コマンドを有する入力画素パケットに対して実行される少なくとも1つの可能な算術演算の組を有する前記ALU段と、
前記画素パケットのためのデータをフェッチするデータフェッチ段と、
前記ALU段から受け取った処理された画素パケットの画素データのメモリ書込みを実行するデータ書込み段と、
前記ALU段、前記データフェッチ段、および前記データ書込み段のそれぞれの入力に結合されている第1の分配器と、
前記ALU段、前記データフェッチ段、および前記データ書込み段のそれぞれの出力に結合されている第2の分配器と
を備え、前記第1の分配器および前記第2の分配器が、ホストからのコマンドに応答して、前記データフェッチ段、前記ALU段、および前記ALU書込み段を通る画素パケットのプロセスフローを再構成するように適合されているグラフィックスプロセッサ。
【請求項12】
画素パケットを生成するラスタライザと、画素パケットのためのデータをフェッチするデータフェッチ段と、画素パケットに対してスカラ算術演算を実行する少なくとも1つのALUを有するALU段と、画素データを書き込むデータ書込み段と、前記データフェッチ段、前記データ書込み段、および前記ALU段を結合する分配器とを有するグラフィックスパイプラインを動作させる方法であって、
第1のコマンドに応答して、前記分配器を、前記データフェッチ段、前記ALU段、および前記データ書込み段を通る画素パケットの第1の処理フローを定義するようにプログラムするステップと、
第2のコマンドに応答して、前記分配器を、前記データフェッチ段、前記ALU段、および前記データ書込み段を通る画素パケットの第2の処理フローを定義するようにプログラムするステップと
を含み、ソフトウェアホストが、複数の処理フローのいずれか1つで前記パイプラインを構成してもよい方法。
【請求項13】
画素パケットを生成するラスタライザと、画素パケットのためのデータをフェッチするデータフェッチ段と、画素パケットに対してスカラ算術演算を実行する少なくとも1つのALUを有するALU段と、画素データを書き込むデータ書込み段と、前記データフェッチ段、前記データ書込み段、および前記ALU段を結合する分配器とを有するグラフィックスパイプラインを動作させる方法であって、
ソフトウェアホストから、前記パイプラインを、前記データフェッチ段、前記ALU段、および前記データ書込み段を通る画素パケットの第1の処理フローから、前記データフェッチ段、前記ALU段、および前記データ書込み段を通る画素パケットの第2のフローに再構成するコマンドを受け取るステップと、
前記パイプラインを、前記第1の処理フローから前記第2の処理フローに再構成するように前記分配器を調整するステップと
を含む方法。
【請求項14】
画素パケットを処理する複数の段と、
前記複数の要素のそれぞれの入力に結合された第1の分配器と、
前記複数の要素のそれぞれの出力に結合された第2の分配器と
を備え、前記第1の分配器および前記第2の分配器が、ホストからのコマンドに応答して、前記複数の要素を通る画素パケットのプロセスフローを再構成するように適合されているグラフィックスプロセッサ。
【請求項15】
画素パケットを処理する複数の要素を備えるグラフィックスパイプラインを有するグラフィックスパイプラインを動作させる方法であって、
第1のコマンドに応答して、分配器を、前記複数の要素を通る画素パケットの第1の処理フローを定義するようにプログラムするステップと、
第2のコマンドに応答して、前記分配器を、前記複数の要素を通る画素パケットの第2のフローを定義するようにプログラムするステップと
を含み、ソフトウェアホストが、複数の処理フローのいずれか1つで前記パイプラインを構成してもよい方法。
【請求項16】
画素に対してグラフィックス処理操作を実行する方法であって、
複数の画素に対して実行されるべきグラフィックス機能について、前記グラフィックス機能を実施するために画素パケットに対して実行されてもよいスカラ算術演算のシーケンスを識別するステップと、
画素を、偶数画素または奇数画素として割り当てるステップと、
前記各画素ごとに画素パケットの少なくとも2つの行を生成するステップであり、各画素パケットが、前記スカラ算術演算のシーケンスにおいてオペランドとして処理されるべき画素属性の一部のための少なくとも1つのフィールドを含み、前記少なくとも2つの行が、関連付けられた命令シーケンス、および、前記画素パケットが奇数画素であるか、それとも偶数画素であるかを示す識別子を有する前記ステップと、
画素パケットの行のグループにおいて偶数と奇数の画素の画素パケットの行をインターリーブするステップであり、前記グループ中の各行が、連続するクロックサイクルで処理するように割り当てられる前記ステップと、
ALU段の複数の算術論理演算装置(ALU)のそれぞれにおいて、現在のクロックサイクルの画素パケットの行を受け取り、前記命令シーケンスに従って、画素パケットの前記行から読み取られた少なくとも1つのオペランドに対してスカラ算術計算を実行するステップと
を含み、前記ALUにおいて画素パケットの処理がインターリーブされる方法。
【請求項17】
グラフィックスパイプラインの要素を通る複数の可能な画素パケットのプロセスフローを有する構成可能な前記グラフィックスパイプラインの要素において識別子のレジスタ書込みを実行する方法であって、
前記グラフィックスパイプラインの前記要素をトリガして、各要素ごとに、前記プロセスフロー内の前記要素の位置を示す識別子を発見させるデータパケットを受け取るステップと、
各要素が、構成レジスタに、前記プロセスフロー内の相対的位置を示す識別子を書き込むステップと
を含む方法。
【請求項18】
処理されるべき各画素ごとに複数の画素パケットを生成する、ラスタライズされるべきプリミティブに関するデータを受け取るラスタ段であり、各画素パケットが、処理されるべき少なくとも1つの画素属性を識別するペイロード情報を含み、前記各画素パケットに対して実行されるべき少なくとも1つの命令を識別する関連付けられたサイドバンド情報を有する前記ラスタ段と、
複数の算術論理演算装置(ALU)を含む、前記画素パケットを処理するプログラマブルALU段であり、各ALUが、対応する現在の命令コマンドを有する入力画素パケットに対して実行される少なくとも1つの可能な算術演算の組を有する前記ALU段と、
前記画素パケットのためのデータをフェッチするデータフェッチ段と、
前記ALU段から受け取った処理された画素パケットの画素データのメモリ書込みを実行するデータ書込み段と、
前記ALU段、前記データフェッチ段、および前記データ書込み段のそれぞれの入力に結合されている第1の分配器と、
前記ALU段、前記データフェッチ段、および前記データ書込み段のそれぞれの出力に結合されている第2の分配器と
を備え、
前記第1の分配器および前記第2の分配器が、ホストからのコマンドに応答して、前記データフェッチ段、前記ALU段、および前記ALU書込み段を通る画素パケットのプロセスフローを再構成するように適合されており、
前記ALU状態の各ALUが、ソフトウェア識別情報によって開始される識別パケットを受け取るように適合され、各ALUが、前記識別パケットの識別子の現在の値を構成レジスタに書き込み、前記識別子を増分し、前記識別パケットを次のALUに送る
グラフィックスプロセッサ。
【請求項19】
グラフィックスパイプラインの要素と関連付けられたタップ点の組を有するグラフィックスパイプラインと、
ソフトウェアコマンドによって選択されたタップ点の一部を監視し、前記タップ点の一部の前記各タップ点に関連付けられた少なくとも1つの条件の統計を取るように適合されている、ソフトウェアホストからコマンドを受け取る構成可能なテスト点選択器と
を備え、前記ソフトウェアホストのためにタップ点の一部の統計が収集されるグラフィックスプロセッサ。
【請求項20】
第2の要素にペイロードを送ることのできる第1の要素と関連付けられた2つのテスト点を選択するコマンドを受け取るステップと、
前記2つのテスト点を監視するステップと、
前記第1の要素および前記第2の要素と関連付けられた少なくとも2つの条件に関して統計を収集するステップと
を含む、グラフィックスプロセッサを監視する方法。
【請求項1】
処理されるべき各画素ごとに複数の画素パケットを生成する、ラスタライズされるべきプリミティブに関するデータを受け取るラスタ段であり、各画素パケットが、処理されるべき少なくとも1つの画素属性を識別するペイロード情報を含み、前記画素パケットに対して実行されるべき少なくとも1つの命令のシーケンスを識別する関連付けられたサイドバンド情報を有する前記ラスタ段と、
少なくとも1つのプログラマブル算術論理演算装置(ALU)を含む、前記画素パケットを処理するALU段であり、各ALUが、対応する現在の命令を有する入力画素パケットに対して実行される少なくとも1つの可能なスカラ算術演算の組を有するようにプログラムされている前記ALU段と
を備え、グラフィックス処理機能を実行するために、前記複数の画素パケットに対して算術演算のシーケンスが実行される、グラフィックスプロセッサ。
【請求項2】
ラスタライズされるべきプリミティブの頂点を変換し、セットアップする少なくとも1つの段と、
スカラ算術演算のシーケンスとして表現され得るグラフィックス操作を用いて、処理されるべき各画素ごとに画素パケットの少なくとも1つの行を生成する、ラスタライズされるべきプリミティブに関するデータを受け取るラスタ段と、
画素パケットの処理を追跡するためのスコアボードを含むゲートキーパと、
画素パケットの各行ごとにデータをフェッチするデータフェッチ段と、
前記画素パケットの各行を処理する複数のプログラマブル算術論理演算装置(ALU)を備えるALU段であり、各ALUが画素パケットの入力行を受け取って画素パケットの出力行を出力し、各ALUが、受け取った画素パケットの行から少なくとも1つのオペランドを読み取り、前記少なくとも1つのオペランドを使ってスカラ算術演算を実行し、結果を生成し、前記結果の一時的な値への書込みと前記結果を用いた前記出力行の画素属性レジスタの更新の少なくとも一方を実行する前記ALU段と、
前記複数のALUから受け取った処理された画素パケットの画素データのメモリ書込みを実行するデータ書込み段と
を具備し、前記グラフィックス処理機能を実行するために、前記複数の画素パケットに対して算術演算のシーケンスが実行される、グラフィックスプロセッサ。
【請求項3】
グラフィックスソフトウェアモジュールを有する中央処理装置と、
前記グラフィックスソフトウェアモジュールからの頂点情報、およびプログラマブルグラフィックスプロセッサの各段をプログラムするプログラミング命令を受け取るプログラマブルグラフィックスプロセッサであって、
前記グラフィックスソフトウェアモジュールからの命令に応答して、処理されるべき各画素ごとに複数の画素パケットを生成するラスタ段であり、各画素パケットが、処理されるべき少なくとも1つの画素属性を識別するペイロード情報を含み、前記各画素パケットに対して実行されるべき少なくとも1つの命令を識別する関連付けられたサイドバンド情報を有する前記ラスタ段、および
前記画素パケットを処理するように構成されている複数のプログラマブル算術論理演算装置(ALU)を含むALU段であり、各ALUが、前記グラフィックスソフトウェアモジュールによって、受け取った画素パケットから選択されたオペランドを読み取り、結果を生成するために現在の命令に応答してスカラ算術演算を実行し、前記結果を用いた画素属性レジスタの更新と前記結果の一時的な値としての格納の少なくとも一方を実行するように割り当てられる前記ALU段
を備える前記プログラマブルグラフィックスプロセッサと
を具備し、前記各画素に対してグラフィックス処理機能を実行するために、前記複数の画素パケットに対してスカラ算術演算のシーケンスを実行するグラフィックスシステム。
【請求項4】
ホストがグラフィックスコアのレジスタをプログラムするためのレジスタインターフェースと、
ホストが前記グラフィックスコアとやりとりするためのホストインターフェースと、
前記グラフィックスコアがデータを読み書きするためのメモリインターフェースと、
前記グラフィックスコア内に配置されたプログラマブルグラフィックスプロセッサであって、
ラスタライズされるべきプリミティブの頂点をセットアップし、変換する少なくとも1つの段、
スカラ算術演算のシーケンスとして表現され得るグラフィックス操作を用いて処理されるべき各画素ごとに画素パケットの少なくとも1つの行を生成する、ラスタライズされるべきプリミティブに関するデータを受け取るラスタ段であり、各画素パケットが、処理されるべき少なくとも1つの画素属性を識別するペイロード情報を含み、各行が、前記行の前記各画素パケットに対して実行されるべき少なくとも1つの命令を識別する関連付けられた情報を有する前記ラスタ段、
画素パケットの処理を追跡するためのスコアボードを含むゲートキーパ、
画素パケットの各行ごとにデータをフェッチするデータフェッチ段、
前記画素パケットの各行を処理する複数のプログラマブル算術論理演算装置(ALU)を備えるALU段であり、各ALUが画素パケットの入力行を受け取って画素パケットの出力行を出力し、各ALUが、受け取った画素パケットの行から少なくとも1つのオペランドを読み取り、前記少なくとも1つのオペランドを使ってスカラ算術演算を実行し、結果を生成し、前記結果の一時的な値への書込みと前記結果を用いた前記出力行の属性レジスタの更新の少なくとも一方を実行する前記ALU段、および
前記複数のALUから受け取った処理された画素パケットの画素データのメモリ書込みを実行するデータ書込み段
を備える前記プログラマブルグラフィックスプロセッサと
を具備し、前記グラフィックス処理機能を実行するために前記複数の画素パケットに対して算術演算のシーケンスが実行される組込みプロセッサ。
【請求項5】
画素に対して実行されるべき少なくとも1つのグラフィックス機能について、前記少なくとも1つのグラフィックス機能を実施するために画素パケットに対して実行されてもよいスカラ算術演算のシーケンスを識別するステップと、
前記画素の複数の画素パケットを生成するステップであり、各画素パケットが、前記スカラ算術演算のシーケンスにおいてオペランドとして処理されるべき画素属性の一部を含み、前記複数の画素パケットが関連付けられた命令シーケンスを有する前記ステップと、
少なくとも1つの算術論理演算装置(ALU)において、前記画素パケットからオペランドを読み取るステップと、
前記少なくとも1つのALUにおいて、前記少なくとも1つのグラフィックス機能を実施するために前記スカラ算術演算のシーケンスを実行する前記命令シーケンスに従ってスカラ算術演算を実行するステップと
を含む、画素に対してグラフィックス処理操作を実行する方法。
【請求項6】
画素に対して実行されるべきグラフィックス機能について、前記グラフィックス機能を実施するために画素パケットに対して実行されてもよいスカラ算術演算のシーケンスを識別するステップと、
前記画素が連続するクロックサイクルで処理されるように画素パケットの少なくとも1つの行を生成するステップであり、各画素パケットが、前記スカラ算術演算のシーケンスにおいてオペランドとして処理されるべき画素属性の一部のための少なくとも1つのフィールドを含み、前記少なくとも1つの行が関連付けられた命令シーケンスを有する前記ステップと、
複数の算術論理演算装置(ALU)のそれぞれにおいて、割り当てられたオペランドを読み取るステップであり、前記オペランドの少なくとも1つが、画素パケットの行内の画素パケットから読み取られるオペランドに対応する前記ステップと、
前記各ALUにおいて、前記グラフィックス機能を実施するための前記スカラ算術演算のシーケンスを実行する前記命令シーケンスに従って前記割り当てられたオペランドに対するスカラ算術計算を実行するステップと
を含む、画素に対してグラフィックス処理操作を実行する方法。
【請求項7】
画素パケットの行から選択されたオペランドを読み取り、前記画素パケットの行に関連付けられた選択された現在の命令に応答して選択されたスカラ算術演算を実行するように複数の算術論理演算装置(ALU)をプログラムするステップと、
画素に対して実行されるべき少なくとも1つのグラフィックス操作について、前記画素の属性の一部に対して実行されるべき少なくとも1つの対応するスカラ算術演算を識別するステップと、
前記画素の画素パケットの行を生成するステップであり、各画素パケットが、少なくとも1つのオペランドとして処理されるべき前記画素に関連付けられた少なくとも1つの属性のフィールドを含み、前記画素パケットが、実行されるべきスカラ算術演算のシーケンスを示す関連付けられた現在の命令を有する前記ステップと、
前記ALUにおいて、前記画素パケットの行内の前記選択されたオペランドを読み取り、前記関連付けられた現在の命令に対応する前記選択されたスカラ算術演算を実行するステップと
を含む、グラフィックス処理操作を実行する方法。
【請求項8】
画素に対して実行されるべき少なくとも1つのグラフィックス機能について、前記少なくとも1つのグラフィックス機能を実施するために画素パケットに対して実行されてもよいスカラ算術演算を識別するステップと、
処理されるべき前記画素の画素パケットの少なくとも1つの行を生成するステップであり、各画素パケットが、オペランドとして処理されるべき画素属性の一部のための少なくとも1つのフィールドを含み、前記少なくとも1つの行が関連付けられた命令シーケンスを有する前記ステップと、
複数の算術論理演算装置(ALU)のそれぞれにおいて、割り当てられたオペランドを読み取るステップであり、前記オペランドの少なくとも1つが、画素パケットの行内の画素パケットから読み取られるオペランドに対応する前記ステップと、
前記各ALUにおいて、前記命令シーケンスに従って前記割り当てられたオペランドに対するスカラ算術計算を実行する前記ステップと、
[0,1]の範囲にある結果を必要とする選択されたスカラ算術演算について、対応する画素パケットのオペランドを、8ビットの小数成分を有する[−2,+2)の範囲にあるオペランドの2進数表現に対応するS1.8形式でフォーマット設定し、前記選択されたスカラ算術演算の結果を[0,1]の範囲にクランプするステップと、
少なくとも1つの他のスカラ算術演算について、対応する画素パケットを異なるデータ形式でフォーマット設定するステップと
を含む、画素に対して、グラフィックス処理操作を実行する方法。
【請求項9】
画素の色成分に対して実行されるべき第1のグラフィックス機能について、前記第1のグラフィックス機能を実施するための第1のスカラ算術演算のシーケンスを識別するステップであり、前記第1のグラフィックス機能が、スカラ算術演算が[0,1]の範囲にクランプされた結果を有することを必要とする前記ステップと、
画素に関連付けられたテクスチャに対して実行されるべき第2のグラフィックス機能について、前記第2のグラフィックス機能を実施するための第2のスカラ算術演算のシーケンスを識別するステップと、
前記画素の画素パケットの少なくとも1つの行を生成するステップであり、各画素パケットが、少なくとも長さ16ビットの固定ビットサイズを有し、オペランドとして処理されるべき画素属性の一部のための少なくとも1つのフィールドを含み、前記少なくとも1つの行が関連付けられた命令シーケンスを有する前記ステップと、
前記第1のグラフィックス機能と関連付けられた各画素パケットごとに、S1.8形式で少なくとも2つの色成分をパックするステップであり、前記S1.8形式が、8ビットの小数成分を有する[−2,+2)の範囲にあるオペランドの2進数表現に対応する前記ステップと、
前記第2のグラフィックス機能と関連付けられた各画素パケットごとに、8を上回るビット数を必要とする単一の高精度テクスチャをパックするステップと、
複数の算術論理演算装置(ALU)のそれぞれにおいて、割り当てられたオペランドを読み取り、前記命令シーケンスに従って前記割り当てられたオペランドに対するスカラ算術計算を実行するステップと
を含み、前記第1のグラフィックス機能では、色成分が、前記S1.8形式のオペランドとして選択され、結果が[0,1]の範囲にクランプされ、前記第2のグラフィックス機能では、前記テクスチャが、8を上回るビット数の精度を有する形式のオペランドとして選択される、画素に対して、グラフィックス処理操作を実行する方法。
【請求項10】
ラスタライズされるべきプリミティブの頂点をセットアップし、変換する少なくとも1つの段と、
スカラ算術演算のシーケンスとして表現され得る各グラフィックス操作ごとに処理されるべき各画素ごとに画素パケットの少なくとも1つの行を生成する、ラスタライズされるべきプリミティブに関するデータを受け取るラスタ段と、
画素パケットの処理を追跡するためのスコアボードを含むゲートキーパと、
画素パケットの各行ごとにデータをフェッチするデータフェッチ段と、
前記画素パケットの各行を処理する複数のプログラマブル算術論理演算装置(ALU)を備えるALU段であり、各ALUが画素パケットの入力行を受け取って画素パケットの出力行を出力し、各ALUが、受け取った画素パケットの行から少なくとも1つのオペランドを読み取り、前記少なくとも1つのオペランドを使ってスカラ算術演算を実行し、結果を生成し、前記結果の一時的な値への書込みと前記結果を用いた前記出力行の画素パケットの更新の少なくとも一方を実行する前記ALU段と、
前記複数のALUから受け取った処理された画素パケットの画素データのメモリ書込みを実行するデータ書込み段と
を具備し、前記グラフィックス処理機能を実行するために、前記複数の画素パケットに対して算術演算のシーケンスが実行され、前記ラスタ段が、第1の種類のスカラ算術演算の画素パケットを、8ビットの小数成分を有する[−2,+2)の範囲にあるオペランドの2進数表現に対応するS1.8形式でフォーマット設定し、各ALUが、結果を[0,1]の範囲にクランプする前記第1の種類のスカラ演算を処理し、前記ラスタ段が、第2の種類のスカラ算術演算の画素パケットを、8を上回るビット数の精度を必要とする形式でフォーマット設定するグラフィックスプロセッサ。
【請求項11】
処理されるべき各画素ごとに複数の画素パケットを生成する、ラスタライズされるべきプリミティブに関するデータを受け取るラスタ段であり、各画素パケットが、処理されるべき少なくとも1つの画素属性を識別するペイロード情報を含み、前記各画素パケットに対して実行されるべき少なくとも1つの命令を識別する関連付けられたサイドバンド情報を有する前記ラスタ段と、
複数のプログラマブル算術論理演算装置(ALU)を含む、前記画素パケットを処理するALU段であり、各ALUが、対応する現在の命令コマンドを有する入力画素パケットに対して実行される少なくとも1つの可能な算術演算の組を有する前記ALU段と、
前記画素パケットのためのデータをフェッチするデータフェッチ段と、
前記ALU段から受け取った処理された画素パケットの画素データのメモリ書込みを実行するデータ書込み段と、
前記ALU段、前記データフェッチ段、および前記データ書込み段のそれぞれの入力に結合されている第1の分配器と、
前記ALU段、前記データフェッチ段、および前記データ書込み段のそれぞれの出力に結合されている第2の分配器と
を備え、前記第1の分配器および前記第2の分配器が、ホストからのコマンドに応答して、前記データフェッチ段、前記ALU段、および前記ALU書込み段を通る画素パケットのプロセスフローを再構成するように適合されているグラフィックスプロセッサ。
【請求項12】
画素パケットを生成するラスタライザと、画素パケットのためのデータをフェッチするデータフェッチ段と、画素パケットに対してスカラ算術演算を実行する少なくとも1つのALUを有するALU段と、画素データを書き込むデータ書込み段と、前記データフェッチ段、前記データ書込み段、および前記ALU段を結合する分配器とを有するグラフィックスパイプラインを動作させる方法であって、
第1のコマンドに応答して、前記分配器を、前記データフェッチ段、前記ALU段、および前記データ書込み段を通る画素パケットの第1の処理フローを定義するようにプログラムするステップと、
第2のコマンドに応答して、前記分配器を、前記データフェッチ段、前記ALU段、および前記データ書込み段を通る画素パケットの第2の処理フローを定義するようにプログラムするステップと
を含み、ソフトウェアホストが、複数の処理フローのいずれか1つで前記パイプラインを構成してもよい方法。
【請求項13】
画素パケットを生成するラスタライザと、画素パケットのためのデータをフェッチするデータフェッチ段と、画素パケットに対してスカラ算術演算を実行する少なくとも1つのALUを有するALU段と、画素データを書き込むデータ書込み段と、前記データフェッチ段、前記データ書込み段、および前記ALU段を結合する分配器とを有するグラフィックスパイプラインを動作させる方法であって、
ソフトウェアホストから、前記パイプラインを、前記データフェッチ段、前記ALU段、および前記データ書込み段を通る画素パケットの第1の処理フローから、前記データフェッチ段、前記ALU段、および前記データ書込み段を通る画素パケットの第2のフローに再構成するコマンドを受け取るステップと、
前記パイプラインを、前記第1の処理フローから前記第2の処理フローに再構成するように前記分配器を調整するステップと
を含む方法。
【請求項14】
画素パケットを処理する複数の段と、
前記複数の要素のそれぞれの入力に結合された第1の分配器と、
前記複数の要素のそれぞれの出力に結合された第2の分配器と
を備え、前記第1の分配器および前記第2の分配器が、ホストからのコマンドに応答して、前記複数の要素を通る画素パケットのプロセスフローを再構成するように適合されているグラフィックスプロセッサ。
【請求項15】
画素パケットを処理する複数の要素を備えるグラフィックスパイプラインを有するグラフィックスパイプラインを動作させる方法であって、
第1のコマンドに応答して、分配器を、前記複数の要素を通る画素パケットの第1の処理フローを定義するようにプログラムするステップと、
第2のコマンドに応答して、前記分配器を、前記複数の要素を通る画素パケットの第2のフローを定義するようにプログラムするステップと
を含み、ソフトウェアホストが、複数の処理フローのいずれか1つで前記パイプラインを構成してもよい方法。
【請求項16】
画素に対してグラフィックス処理操作を実行する方法であって、
複数の画素に対して実行されるべきグラフィックス機能について、前記グラフィックス機能を実施するために画素パケットに対して実行されてもよいスカラ算術演算のシーケンスを識別するステップと、
画素を、偶数画素または奇数画素として割り当てるステップと、
前記各画素ごとに画素パケットの少なくとも2つの行を生成するステップであり、各画素パケットが、前記スカラ算術演算のシーケンスにおいてオペランドとして処理されるべき画素属性の一部のための少なくとも1つのフィールドを含み、前記少なくとも2つの行が、関連付けられた命令シーケンス、および、前記画素パケットが奇数画素であるか、それとも偶数画素であるかを示す識別子を有する前記ステップと、
画素パケットの行のグループにおいて偶数と奇数の画素の画素パケットの行をインターリーブするステップであり、前記グループ中の各行が、連続するクロックサイクルで処理するように割り当てられる前記ステップと、
ALU段の複数の算術論理演算装置(ALU)のそれぞれにおいて、現在のクロックサイクルの画素パケットの行を受け取り、前記命令シーケンスに従って、画素パケットの前記行から読み取られた少なくとも1つのオペランドに対してスカラ算術計算を実行するステップと
を含み、前記ALUにおいて画素パケットの処理がインターリーブされる方法。
【請求項17】
グラフィックスパイプラインの要素を通る複数の可能な画素パケットのプロセスフローを有する構成可能な前記グラフィックスパイプラインの要素において識別子のレジスタ書込みを実行する方法であって、
前記グラフィックスパイプラインの前記要素をトリガして、各要素ごとに、前記プロセスフロー内の前記要素の位置を示す識別子を発見させるデータパケットを受け取るステップと、
各要素が、構成レジスタに、前記プロセスフロー内の相対的位置を示す識別子を書き込むステップと
を含む方法。
【請求項18】
処理されるべき各画素ごとに複数の画素パケットを生成する、ラスタライズされるべきプリミティブに関するデータを受け取るラスタ段であり、各画素パケットが、処理されるべき少なくとも1つの画素属性を識別するペイロード情報を含み、前記各画素パケットに対して実行されるべき少なくとも1つの命令を識別する関連付けられたサイドバンド情報を有する前記ラスタ段と、
複数の算術論理演算装置(ALU)を含む、前記画素パケットを処理するプログラマブルALU段であり、各ALUが、対応する現在の命令コマンドを有する入力画素パケットに対して実行される少なくとも1つの可能な算術演算の組を有する前記ALU段と、
前記画素パケットのためのデータをフェッチするデータフェッチ段と、
前記ALU段から受け取った処理された画素パケットの画素データのメモリ書込みを実行するデータ書込み段と、
前記ALU段、前記データフェッチ段、および前記データ書込み段のそれぞれの入力に結合されている第1の分配器と、
前記ALU段、前記データフェッチ段、および前記データ書込み段のそれぞれの出力に結合されている第2の分配器と
を備え、
前記第1の分配器および前記第2の分配器が、ホストからのコマンドに応答して、前記データフェッチ段、前記ALU段、および前記ALU書込み段を通る画素パケットのプロセスフローを再構成するように適合されており、
前記ALU状態の各ALUが、ソフトウェア識別情報によって開始される識別パケットを受け取るように適合され、各ALUが、前記識別パケットの識別子の現在の値を構成レジスタに書き込み、前記識別子を増分し、前記識別パケットを次のALUに送る
グラフィックスプロセッサ。
【請求項19】
グラフィックスパイプラインの要素と関連付けられたタップ点の組を有するグラフィックスパイプラインと、
ソフトウェアコマンドによって選択されたタップ点の一部を監視し、前記タップ点の一部の前記各タップ点に関連付けられた少なくとも1つの条件の統計を取るように適合されている、ソフトウェアホストからコマンドを受け取る構成可能なテスト点選択器と
を備え、前記ソフトウェアホストのためにタップ点の一部の統計が収集されるグラフィックスプロセッサ。
【請求項20】
第2の要素にペイロードを送ることのできる第1の要素と関連付けられた2つのテスト点を選択するコマンドを受け取るステップと、
前記2つのテスト点を監視するステップと、
前記第1の要素および前記第2の要素と関連付けられた少なくとも2つの条件に関して統計を収集するステップと
を含む、グラフィックスプロセッサを監視する方法。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【公表番号】特表2007−538319(P2007−538319A)
【公表日】平成19年12月27日(2007.12.27)
【国際特許分類】
【出願番号】特願2007−513444(P2007−513444)
【出願日】平成17年5月13日(2005.5.13)
【国際出願番号】PCT/US2005/016967
【国際公開番号】WO2005/114646
【国際公開日】平成17年12月1日(2005.12.1)
【出願人】(501261300)エヌヴィディア コーポレイション (166)
【Fターム(参考)】
【公表日】平成19年12月27日(2007.12.27)
【国際特許分類】
【出願日】平成17年5月13日(2005.5.13)
【国際出願番号】PCT/US2005/016967
【国際公開番号】WO2005/114646
【国際公開日】平成17年12月1日(2005.12.1)
【出願人】(501261300)エヌヴィディア コーポレイション (166)
【Fターム(参考)】
[ Back to top ]