(57)【特許請求の範囲】
【請求項１】
算術及び論理動作を遂行する方法であって、
命令の下位命令拡張条件が超長命令語のために存在するかどうかをオペレーションフィールドではなく前記超長命令語の所与の下位命令のソースフィールドから決定するステップと、
前記下位命令拡張条件が存在する場合に、第１の算術論理ユニットコンポーネントの一部分の動作を最小化するステップと、
前記下位命令拡張条件が存在する場合に、通常は前記第１の算術論理ユニットコンポーネントによって利用される前記超長命令語のブロックを、第２の算術論理ユニットコンポーネントのために利用することによって、前記第２の算術論理ユニットコンポーネント部分を拡張するステップと
を備える方法。
【請求項２】
前記第２の算術論理ユニットコンポーネント部分を拡張するステップが、通常は前記第１の算術論理ユニットコンポーネントを構成及び制御するために使用される前記超長命令語のブロックを、前記第２の算術論理ユニットコンポーネントへ入力される１つ又は複数の即値として調達する工程を備える、請求項１に記載の方法。
【請求項３】
前記下位命令拡張条件が存在するかどうかを決定するステップが、前記ＶＬＩＷが１つ又は複数の即値を含むことを表示する符号化を前記超長命令語が含むかどうかを決定する工程を備える、請求項１に記載の方法。
【請求項４】
前記超長命令語が即値を含む場合に、前記第１の算術論理ユニットコンポーネントの前記一部分の動作を最小化するステップが、所与の下位ＡＬＵを動作不能にする工程を含む、請求項３に記載の方法。
【請求項５】
第２の算術論理ユニットコンポーネント部分を拡張するステップが、
動作不能にされる前記所与の下位ＡＬＵに対応する前記超長命令語のブロックを、１つ又は複数の即値として、１つ又は複数の他の下位ＡＬＵへ利用可能にする工程と、
前記超長命令語に従って各々の活性下位ＡＬＵを構成及び制御する工程と
を備える、請求項４に記載の方法。
【請求項６】
算術論理ユニットと、
複数のレジスタと、
超長命令語の関数として、前記算術論理ユニットの指定された出力を、前記複数のレジスタの指定されたものへ選択的に結合する逆選択器と、
オペレーションフィールドではなく前記超長命令語の所与の下位命令のソースフィールドに１又は複数の下位命令が即値を含むことが示されている場合には、即値を、前記算術論理ユニットの複数の入力の指定されたものへ選択的に結合する選択器と、
を備える処理段。
【請求項７】
前記算術論理ユニットが複数の下位ＡＬＵを含み、
前記選択器が複数のデマルチプレクサを含み、各デマルチプレクサが、前記超長命令語の関数として、前記複数のレジスタの１つ又は前記超長命令語の中の即値を、対応する下位ＡＬＵの所与の入力へ選択的に結合するように適応される、
請求項６に記載の処理段。
【請求項８】
算術論理ユニット（ＡＬＵ）を構成及び制御する方法であって、
超長命令語の１つ又は複数の下位命令が１つ又は複数の即値を含むかどうかを、前記超長命令語のオペレーションフィールドからでなく、前記超長命令語の所与の下位命令のソースフィールドから決定するステップと、
前記超長命令語が１つ又は複数の即値を含む場合に、１つ又は複数の所与の下位ＡＬＵを動作不能にするステップと、
動作不能にされる前記所与の下位ＡＬＵに対応する前記超長命令語のブロックを、前記１つ又は複数の即値として、１つ又は複数の他の下位ＡＬＵへ利用可能にするステップと、
前記超長命令語に従って各々の活性下位ＡＬＵにおける計算を構成及び制御するステップと、
を備える方法。
【請求項９】
前記超長命令語が１つ又は複数の即値を含む場合に、複数の下位ＡＬＵの任意の１つが動作不能にされる、請求項８に記載の方法。
【請求項１０】
前記１つ又は複数の下位ＡＬＵにデータを入力させないことによって、前記１つ又は複数の下位ＡＬＵが動作不能にされる、請求項８に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
超長命令語から即値を調達（sourcing）する方法に関する
【背景技術】
【０００２】
[0001]画像は、典型的には、論理画素（ピクセル）のラスタ（配列）として表現される。画像の或る表面属性（例えば色、深度、テクスチャなど）に対応するピクセルデータは、各々のピクセルに割り当てられ、ピクセルデータは、論理ピクセルに関連づけられたディスプレイスクリーン区域における投影の性質を決定する。通常の３次元グラフィックスプロセッサは、典型的には、広範及び多数の順次ステージ又は「パイプライン」型プロセスを伴う。これらの順次ステージ又は「パイプライン」型プロセスは、様々なバーテックスパラメータ値及び命令に従ってピクセルデータを操作して、ワールド座標系の３次元シーンを画像の２次元投影へマップする（例えば、ディスプレイスクリーン上で）。従来のパイプラインの多数のステージを実現するためには、大抵、比較的相当な量の処理及びメモリリソースが要求される。しかしながら、通常の算術論理ユニット（ＡＬＵ）は、典型的には、並列に配列された複数の算術論理下位ユニットを含むマルチパス処理ステージを実現する。追加的に、普通のＡＬＵは、典型的には、変数及び定数を記憶する限定された数のレジスタを有する。
【０００３】
[0002]サイズ及び電力消費が重視された、多数の新しいカテゴリーのデバイス（例えば、携帯用ゲームコンソール、携帯用無線通信デバイス、携帯用コンピュータシステムなど）が出現している。これらのデバイスの多くは、ユーザの手の中に収まる程十分に小さく、非常に便利なものとなっており、他の活動（例えば、通信、ゲームアプリケーション、インターネットアプリケーションなど）の基底の基本的潜在能力が増加するにつれ、デバイスの表示能力がますます重要になってきている。しかしながら、多数のデバイス及びシステムのリソース（例えば、処理能力、記憶装置リソースなど）は、大抵、比較的に限定されている。これらの限定は、ディスプレイ上でレンダリング又は呈示される最終画像に関連づけられた情報の検索、調整、及び操作を非常に困難にし、更には不可能にする。追加的に、従来のグラフィックス情報の処理は、著しく電力を消費し、限定された電源、例えば、バッテリの著しい枯渇原因となる。例えば、従来のグラフィックスシステムにおける浮動小数点計算は、多くの場合、かなりのリソースを使用し、比較的大量の電力を消費する。
【０００４】
[0003]本発明の実施形態は、添付図面の中で、限定を目的とするのではなく例を目的として図解される。図面において、同様の参照番号は類似の要素を意味する。
【発明を実施するための最良の形態】
【０００５】
[0004]図１は、本発明の１つの実施形態に従った例示的グラフィックスパイプライン１００を示す。グラフィックスパイプラインは、処理リソースの効率的及び効果的利用を容易にする。１つの実施形態において、グラフィックスパイプラインは、組織化及び調整されたやり方でグラフィックス情報を処理する。グラフィックスパイプラインは、多様なコンポーネント（例えば、グラフィックス処理チップ又はユニット、アプリケーション特定集積回路、ホスト処理ユニットの中に集積された中央処理ユニットなど）の中で、グラフィックス処理コアとして実現されてよい。グラフィックスパイプラインの様々な様相は、便利な慣例として、グラフィックスプリミティブ（例えば、三角形）の上の動作を説明する下記の部分で説明される。本発明は、多様な他の幾何学的プリミティブを利用して容易に適応可能及び実現可能であることが分かる。
【０００６】
[0005]グラフィックスパイプラインは、セットアップステージ１０５、ラスタステージ１１０、ゲートキーパ（ｇａｔｅｋｅｅｐｅｒ）ステージ１２０、プログラムシーケンスステージ１３０、算術論理ユニットステージ１４０、及びデータ書き込みステージ１５０を含む。１つの実施形態において、ホストは、バーテックスデータ（例えば、レンダリングされている３次元空間の中の点）、バーテックスデータを与えられた特定の三角形をレンダリングする指令、及びパイプラインのためのプログラミング情報（例えば、異なるグラフィックスパイプラインステージへ命令をロードするためのレジスタ書き込み）をグラフィックスパイプラインへ提供する。グラフィックスパイプラインのステージは、グラフィックス情報を処理するため協力して動作する。
【０００７】
[0006]セットアップステージは、バーテックスデータを受け取り、グラフィックスパイプラインの中で処理するための情報を準備する。セットアップステージは、座標の幾何学的変換を遂行し、ビューポート変換を遂行し、クリッピングを遂行し、ラスタステージで使用されるパースペクティブコレクトパラメータを準備することができる。この準備には、パラメータ係数が含まれる。１つの実施形態において、セットアップステージは、ユーザ定義ビュー変換をバーテックス情報（例えば、ｘ，ｙ，ｚ，色及び／又はテクスチャ属性など）へ適用し、各々の三角形のためにスクリーン空間座標を決定する。セットアップステージは、更に、保護帯クリッピング、背面三角形（例えば、観察者から外向きの三角形）の淘汰、及び補間テクスチャ詳細レベル（ｌｅｖｅｌ  ｏｆ  ｄｅｔａｉｌ）（例えば、ピクセルレベルではなく三角形レベルに基づく詳細レベル）の決定をサポートすることができる。追加的に、セットアップステージは統計を収集し、他のグラフィックス処理ブロックからの情報をデバッグすることができる。
【０００８】
[0007]セットアップステージは、バーテックスバッファ（例えば、バーテックスキャッシュ）を含むことができる。バーテックスバッファは、リソースを効率的に利用するため（例えば、異なるビットサイズワードバーテックス形式について）プログラム可能に制御される（例えば、ソフトウェア、ドライバなどによって）。例えば、変換されたバーテックスデータは追跡され、将来の使用のためにバーテックスバッファの中に保存され、同じバーテックスについて再び変換動作を遂行する必要はない。１つの実施形態において、セットアップステージは、ラスタのために重心係数をセットアップする。例示的実施形態において、セットアップステージは浮動小数点超長命令語（ＶＬＩＷ）機械である。この機械は、３２ビットＩＥＥＥ浮動小数点、Ｓ１５.１６固定小数点、及びパック.８固定小数点形式をサポートする。
【０００９】
[0008]ラスタステージは、どのピクセルが特定の三角形に対応するかを決定し、三角形に関連づけられたセットアップステージからのパラメータを補間し、各々のピクセルに関連づける（例えば、説明する）ように、補間されたパラメータ変数及び命令ポインタ又はシーケンス番号の集合を提供する。例えば、ラスタステージは、三角形ビューから画像のピクセルビューへの「変換」又はラスタライズを提供することができる。１つの実施形態において、ラスタステージは、三角形とハサミ長方形との交点で各ピクセルを走査又は反復する。例えば、ラスタステージは、所与の三角形のピクセルを処理し、どの処理動作（例えば、色、テクスチャ、深度、及び霧などに関連した動作）がピクセルレンダリングに適切であるかを決定することができる。ラスタステージは保護帯（例えば、＋／−１Ｋ）をサポートすることができ、オンスクリーンピクセルの効率的保護帯ラスタライズを提供するよう調整し、クリッピング動作の低減を容易にする。１つの例示的実施形態において、ラスタステージは、Ｏｐｅｎ  ＧＬ−ＥＳ及びＤ３ＤＭラスタライズ規則と互換的である。ラスタステージは更にプログラム可能であって、電力の低減を容易にする。そうでないと、使用されない特徴及び単純描画タスクの高速レンダリングによって、電力が消費されるであろう。ラスタステージがプログラム可能であることは、使用されている否かに関係なく、時間又は電力（又は双方）を消費する特性を持つハードコードラスタライザユニットと対比される。
【００１０】
[0009]１つの実施形態において、ラスタステージは、更に、グラフィックスパイプラインで利用されるピクセルパケットを生成する。各々のピクセルパケットは１つ又は複数の行を含み、各々の行はペイロード部分及び側波帯部分を含む。ペイロード部分は、補間されたパラメータ値（例えば、ラスタ補間動作の結果である値）を含む様々な値のためのフィールドを含む。例えば、ピクセル表面属性（例えば、色、テクスチャ、深度、霧、（ｘ，ｙ）位置など）に関連づけられた値を保持するフィールドが作成される。ピクセル処理に関連づけられた命令シーケンス番号は、ピクセルパケットに割り当てられ、側波帯部分の命令シーケンスフィールドの中に置かれる。側波帯情報は、更に、ステータスフィールド（例えば、キル（ｋｉｌｌ）フィールド）を含む。
【００１１】
[0010]１つの実施形態において、ラスタステージは、ピクセルパケットのために重心座標を計算する。重心座標系において、三角形の中の距離は、この三角形のバーテックスに関して測定される。重心座標の使用は、要求される動的範囲を低減し、これは浮動小数点計算よりも少ない電力を要求する固定小数点計算の使用を許す。１つの実施形態において、ラスタステージは、更に、偶数番号ピクセル行と奇数番号ピクセル行とをインタリーブして、下流側パイプステージのマルチクロックサイクル待ち時間に責任を負うことができる。
【００１２】
[0011]グラフィックスパイプラインシステム及び方法は、画像のディスプレイ呈示に寄与しないピクセルの処理を限定することによって、リソースの効率的利用を促進することができる。Ｚラスタステージ１１１は解析を遂行し、グラフィックスパイプラインの比較的「早期」に、ピクセルが画像のディスプレイ呈示に寄与するかどうかを決定する。例えば、ピクセルが閉塞される（例えば、画像のディスプレイ呈示に寄与しない「隠された」表面に関連づけられた値を有する）かどうかの解析が遂行される。１つの実施形態において、ピクセルパケットの行は、キルされたピクセルについて計時されない（例えば、ペイロード部分のＣＭＯＳコンポーネントは切り替わらない）。本発明は、パイプラインの終わりに廃棄されるピクセルの処理に電力が消費されるのを防止することができる。ピクセル情報（例えば、ピクセルパケットの行）が画像のディスプレイ呈示に寄与しなければ、ラスタステージは、ピクセルに関連づけられたピクセル情報をパイプラインから除去してゲートキーパステージへ通知する。色ラスタステージ１１２は、色ラスタ動作を遂行する。
【００１３】
[0012]１つの実施形態において、Ｚラスタは、色ラスタよりも高速で行われる。１つの例示的実施形態において、Ｚラスタ動作は一時に４つのピクセルの上で遂行され、廃棄されるピクセルは、色ラスタを経験するピクセルよりも速く「片付け」られる。幾つかのピクセルの廃棄は、同時に他のピクセルがラスタライズされる間、パイプラインの低いステージへ進行し、タイミング問題を導入する。このタイミング問題は、下記で説明する得点掲示板及びプログラム順序づけによって取り扱われる。得点掲示板及びプログラム順序づけは、更に、可変長プログラム可能シェーダ動作に関連づけられたタイミング問題を取り扱う。可変長プログラム可能シェーダ動作は、パイプラインステージを複数のパスで通過させるピクセル再循環を含むことができる。
【００１４】
[0013]ゲートキーパステージは、ピクセルがグラフィックスパイプラインの低いステージへ流れることを規制する。例示的実現において、ゲートキーパは、更に、他のグラフィックスパイプラインステージからデバッグリードバック情報を収集する。１つの実現において、ゲートキーパステージは、データフェッチ及びデータ書き込みについてデータ首尾一貫性の維持を促進する。例えば、ゲートキーパステージは、同時発生ピクセルがグラフィックスパイプラインの後続ステージへ入るのを、進行中の読み出し修正書き込み動作と合わせることによって、読み出し修正書き込み危険を防止することができる。
【００１５】
[0014]１つの実施形態において、ゲートキーパは得点掲示板手法を利用して、同時発生ピクセル問題を追跡及び特定する。ゲートキーパステージは、更に、得点掲示板を利用して、パイプラインの通過処理を終了した（例えば、メモリへの書き込み、又はキルによって）ピクセルを追跡することができる。得点掲示板は、パイプラインの中のピクセル調整を容易にし、適切な処理の流れ（例えば、アプリケーションが三角形を描画する順序）を維持する。例えば、アプリケーションは、１つの三角形が他の三角形の最上部にレンダリングされるように指図することができ、第２の三角形に関連づけられたピクセルは、第１の三角形からのピクセルと同時発生である（例えば、同じスクリーン位置を有する）ことができる。
【００１６】
[0015]得点掲示板は、「飛行中」であってグラフィックスパイプラインの下流側ステージによって処理されているピクセルのスクリーン位置を追跡する。得点掲示板は、三角形内の１つのピクセルが、処理されていて飛行中であるが未だ退去されてあいない他のピクセルと同時発生する（他のピクセルの「最上部にある」）危険を防止する。例えば、ピクセルパケットがゲートキーパステージで受け取られたとき、ピクセルパケットのスクリーン位置は得点掲示板に記憶される。同じスクリーン位置を有する第２のピクセルパケットが受け取られたとき、得点掲示板は、このスクリーン位置を有する他のピクセルが、グラフィックスパイプラインの下流側ステージによって現在処理されていることを表示する。得点掲示板はビットマスクとして実現されてよい。例示的実施形態において、ビットマスクは、特定の（ｘ，ｙ）位置を有するピクセルが活動中（例えば、グラフィックスパイプラインによって処理されている）かどうかを表示するビット格子である。
【００１７】
[0016]１つの実施形態において、ゲートキーパステージは、新しいピクセルと現在処理しているピクセルとの間のスクリーン同時発生を検出したことに応答して、新しいピクセルが下流側ステージへ伝搬しないように引き留めることをラスタステージに指図する。ピクセルパケットの処理が完了すると、ピクセルが処理を完了したことを表示するメッセージが、データ書き込みステージからゲートキーパステージへ送られる。メッセージの受け取りに応答して、得点掲示板が更新され、ピクセルに関連づけられたスクリーン位置が現在解放されていること、及び同じスクリーン位置を有する他のピクセルの処理が開始可能であることを表示する。１つの実施形態において、ビットマスク内の対応ビットがクリアされる。
【００１８】
[0017]プログラムシーケンサ（ｓｅｑｕｅｎｃｅｒ）は、グラフィックパイプラインの他の下流側コンポーネントの動作を制御することによって機能する。１つの実施形態において、プログラムシーケンサはグラフィックスドライバと連動して働き、プログラム可能シェーダをロード及び実行する方法を実現する。プログラムシーケンサは、グラフィックスドライバ（例えば、ＣＰＵで実行しているグラフィックスドライバ）と対話し、グラフィックスパイプラインの機能モジュールが、情報を受け取り、動作のために自分自身を構成し、グラフィックスプリミティブを処理する方法を制御することができる。例えば、グラフィックスレンダリングデータ（例えば、プリミティブ、三角形ストリップなど）、パイプライン構成情報（例えば、モード設定、レンダリングプロフィールなど）、及びレンダリングプログラム（例えば、ピクセルシェーダプログラム、バーテックスシェーダプログラムなど）は、上流側パイプラインステージ（例えば、上流側ラスタモジュール、セットアップモジュール、又はグラフィックスドライバ）から共通入力を介して、より低いパイプラインステージによって受け取られる。
【００１９】
[0018]例示的実施形態において、プログラムシーケンサは不確定長シェーダプログラムの実行を指図する。本明細書で使用されるように、「不確定長」シェーダプログラムとは、ＧＰＵによって実行され得るシェーダプログラムが、所定又は形式ベースの長さによって恣意的に限定されない事実を意味する。こうして、例えば、実行され得るシェーダプログラムは、短いシェーダプログラム（例えば、１６〜３２の命令長）、標準的シェーダプログラム（例えば、６４〜１２８の命令長）、長いシェーダプログラム（例えば、２５６の命令長）、非常に長いシェーダプログラム（例えば、１０２４を超える命令長）などであってよい。１つの実施形態において、プログラムシーケンサは、不確定長シェーダプログラムを分割して実行するようにプログラムの実行を指図する。
【００２０】
[0019]プログラムシーケンサは、更に、単一のステージでメモリから複数の異なるデータ型（例えば、色データ、深度データ、テクスチャデータなど）をフェッチする（例えば、読み出す）責任を有する。１つの実施形態において、メモリ（断片データキャッシュ（ＦＤＣ））１７０からの多様な異なる型の表面属性情報は、ピクセル（例えば、ラスタライズモジュールによって生成されたピクセル）に関連した表面情報を含む。表面情報は、更に、ピクセル上で遂行されるべき複数のグラフィックス機能に関連づけられることができ、表面情報は、ピクセルに関連づけられたピクセル情報（例えば、ピクセルパケット）の中に記憶される。複数のグラフィックス機能は、色混合及びテクスチャマッピングを含むことができる。例示的実施形態において、プログラムシーケンサは、ピクセル情報が、複数のパス又はループのシェード及びテクスチャ動作を通過して再循環するように指図する。
【００２１】
[0020]算術論理ステージ（例えば、ＡＬＵ）は、データフェッチステージから受け取られたピクセルパケット行ペイロード情報（例えば、ピクセル表面属性情報）の上に陰影調整動作を遂行する。算術論理ステージは、更に、テクスチャ動作を遂行することができる。算術論理ユニットステージ及びそこでの動作は、下記で詳細に説明される。
【００２２】
[0021]データ書き込みステージは、ピクセル処理の結果（例えば、色の結果、Ｚ深度の結果など）をメモリへ回送する。１つの実施形態において、データ書き込みステージは、結果を断片データキャッシュへ回送する。１つの例示的実施形態において、データ書き込みステージは、ピクセルが最早飛行中でないことの表示を得点掲示板へ回送する。
【００２３】
[0022]図２は、本発明の１つの実施形態に従った処理ステージ２００を示す。処理ステージは、本発明の１つの実施形態に従って算術及び論理動作を遂行する方法（図３で示される）を参照して、更に説明される。処理ステージ２００は、複数のレジスタ２１０、選択器２２０、算術論理ユニット（ＡＬＵ）２３０、及び逆選択器２４０を含む。
【００２４】
[0023]選択器及びＡＬＵは、ＶＬＩＷ下位命令拡張条件が存在するかどうかを３１０で決定する。３２０において、下位命令拡張条件が存在するならば、ＡＬＵは第１のＡＬＵコンポーネントの一部分の動作をする。３３０において、下位命令拡張条件が存在するならば、選択器及びＡＬＵは、通常は第１のＡＬＵコンポーネントによって第２のＡＬＵコンポーネントのために利用される超長命令語（ＶＬＩＷ）２５０のブロックを利用することによって、第２のＡＬＵコンポーネント部分を拡張する。１つの実施形態において、選択器及びＡＬＵは、通常は第１のＡＬＵコンポーネントを構成及び制御するために使用されるＶＬＩＷのブロックを第１のＡＬＵコンポーネントへの即値入力として調達することによって、第２のＡＬＵコンポーネントの動作を拡張する。
【００２５】
[0024]ＶＬＩＷは複数のブロックを含む。各ブロックは、一般的に、対応するＡＬＵコンポーネントに関連づけられる。ＶＬＩＷの各ブロックは、所定数のビット幅である。各々のＡＬＵコンポーネントは、１つ又は複数の数学又は論理動作を実現するように構成可能である。
【００２６】
[0025]ＶＬＩＷの中の下位命令は、ＶＬＩＷ内の１つ又は複数の他の下位命令を１つ又は複数の追加の即値として使用することによって、効果的に拡張される。具体的には、ＶＬＩＷの各部分は異なる方法で復号され、１つ又は複数の即値が、所与の下位命令の代わりにＶＬＩＷの中に代入され、追加の即値を使用するために残りの下位命令が拡張する。しかしながら、全体としてのＶＬＩＷは拡張されないことが分かる。
【００２７】
[0026]図４は、本発明の１つの実施形態に従った処理ステージの例示的一部分を示す。選択器は複数のマルチプレクサ４１０、４２０、４３０を含んでよく、ＡＬＵは複数の下位ＡＬＵ４４０を含んでよく、逆選択器は複数のデマルチプレクサ４５０を含んでよい。例示的実施形態において、ＡＬＵは４つの下位ＡＬＵを含み、各々の下位ＡＬＵは乗算器及び加算器を含む。例示的実施形態において、選択器は各下位ＡＬＵの各入力のために別々のマルチプレクサを含む。同様に、逆選択器は、各下位ＡＬＵの各出力のために別々のデマルチプレクサを含む。１つの実施形態において、ＶＬＩＷの各ブロックは下位命令である。１つの実施形態において、ＶＬＩＷの１つ又は複数の各ブロックは、３つまでの即値を含み、ＶＬＩＷの他のブロックは下位命令である。
【００２８】
[0027]複数のレジスタは、変数を記憶するレジスタの集合（Ｒ０〜Ｒ１５）及び大域定数を記憶するレジスタの集合（Ｇ０〜Ｇ３１）を含む。例示的実施形態において、各レジスタは２０ビットの幅である。例示的実施形態において、変数を記憶する１６のレジスタ（Ｒ０〜Ｒ１５）及び大域定数を記憶する３２のレジスタ（Ｇ０〜Ｇ３１）が存在する。各マルチプレクサは、複数のレジスタの１つを対応する下位ＡＬＵの所与の入力へ結合してよい。更に、各マルチプレクサは、通常は他の下位ＡＬＵを構成及び制御するために使用されるＶＬＩＷのブロックを、対応する下位ＡＬＵへ入力される１つ又は複数の即値として結合してよい。
【００２９】
[0028]ＶＬＩＷは、所与のパスの間に、各下位ＡＬＵが行うことを構成及び制御する。例示的実施形態において、ＶＬＩＷは２５６ビットの幅である。ＶＬＩＷの対応する６４ビットブロックは、それぞれの下位ＡＬＵを構成及び制御する。例示的実施形態において、対応する６４ビットブロックの中の６ビットは、それぞれのマルチプレクサが、所与のレジスタ又は即値を、所与の下位ＡＬＵのそれぞれの入力（Ａ）へ転送することを引き起こす。それ故に、それぞれのマルチプレクサは、６４までのレジスタ又は即値の１つを、それぞれの下位ＡＬＵの対応する入力として選択することができる。
【００３０】
[0029]図５Ａは、本発明の１つの実施形態に従った超長命令語形式を示す。ＶＬＩＷは、４つのブロック（ブロック０〜ブロック３）を含んでよい。各ブロックは、典型的には、オペレーションコードフィールド（ＯＰ）、第１、第２、及び第３のソースフィールド（Ｓ０〜Ｓ２）、及び宛先フィールド（Ｄ）を含む。所与のブロック（下位命令０）のオペレーションコードフィールドは、図４で図解されるように、それぞれの下位ＡＬＵを構成するための制御信号入力４６０として使用される。第１のソースフィールド（Ｓ０）は、レジスタの特定の１つ又は特定の即値を選択するため、第１のマルチプレクサ（ＭＵＸ１）への制御信号入力４６２として使用されてよい。第２のソースフィールド（Ｓ１）は、レジスタの特定の１つ又は特定の即値を選択するため、第２のマルチプレクサ（ＭＵＸ２）への制御信号入力４６４として使用されてよい。第３のソースフィールド（Ｓ２）は、レジスタの特定の１つ又は特定の即値を選択するため、第３のマルチプレクサ（ＭＵＸ３）への制御信号入力４６６として使用されてよい。宛先フィールド（Ｄ）は、レジスタの特定の１つを選択して下位ＡＬＵの結果を記憶するため、デマルチプレクサ（ＤＥＭＵＸ１）への制御信号入力４６８として使用されてよい。
【００３１】
[0030]図５Ｂは、本発明の１つの実施形態に従った例示的超長命令語を示す。ＶＬＩＷは４つの下位命令を含む。各々の下位命令は、オペレーションコードフィールド内にビットパターン（例えば、００１０１１１０）を含む。このビットパターンは、所与のオペレーションコード（例えば、ＯＰ１）を指定する。所与の下位命令は、更に、ソース及び宛先フィールドの各々の中にビットパターンを含む。これらのビットパターンは、所与の下位ＡＬＵのそれぞれの入力へ結合する所与のレジスタを指定する。例えば、ビットパターン００００００〜００１１１１は、それぞれの変数レジスタＲ０〜Ｒ１５を指定してよく、ビットパターン０１００００〜１０００００は、それぞれの大域定数レジスタＧ０〜Ｇ３１を指定してよい。図解されるように、第１の下位命令（下位命令0）の中のビットパターンＯＰ１は、特定の算術又は論理機能を遂行するように、図４の下位ＡＬＵを構成してよい。第１のソースフィールド（Ｓ０）は、図４の第１のマルチプレクサ（ＭＵＸ１）が、レジスタＲ３を下位ＡＬＵの第１の入力（Ａ）へ結合することを引き起こすビットパターンを含む。第２のソースフィールド（Ｓ１）は、図４の第２のマルチプレクサ（ＭＵＸ２）が、レジスタＧ８を下位ＡＬＵの第２の入力（Ｂ）へ結合することを引き起こすビットパターンを含む。第３のソースフィールド（Ｓ２）は、図４の第３のマルチプレクサ（ＭＵＸ３）が、レジスタＧ１を下位ＡＬＵの第３の入力（Ｃ）へ結合することを引き起こすビットパターンを含む。宛先フィールド（Ｄ）は、図４のデマルチプレクサ（ＤＥＭＵＸ）が、下位ＡＬＵの出力（Ｄ）をレジスタＲ３へ結合することを引き起こすビットパターンを含む。
【００３２】
[0031]図５Ｃは、本発明の１つの実施形態に従った例示的超長命令語を示す。所与の下位命令（下位命令０）は、オペレーションコードフィールド内にビットパターン（例えば、００１０１１１０）を含む。このビットパターンは所与のオペレーションコード（例えば、ＯＰ１）を指定する。所与の下位命令は、更に、ソース及び宛先フィールドの各々の中にビットパターンを含む。これらのビットパターンは、所与のレジスタが、所与の下位ＡＬＵのそれぞれの入力へ結合することを指定する。例えば、ビットパターン００００００〜００１１１１は、それぞれの変数レジスタＲ０〜Ｒ１５を指定してよく、ビットパターン０１００００〜１０００００は、それぞれの大域定数レジスタＧ０〜Ｇ３１を指定してよい。その上、１つ又は複数の下位命令の中の１つ又は複数のソースフィールドは、他の下位命令が、所与の下位ＡＬＵのそれぞれの入力へ結合されるべき即値を含むことを指定するビットパターンを含んでよい。例えば、ビットパターン１１１１０１〜１１１１１１は、それぞれの即値ＩＭＭ０〜ＩＭＭ２を指定してよい。図解されるように、第１の下位命令（下位命令０）の中のビットパターンＯＰ１は、特定の算術又は論理機能を遂行するように図４の下位ＡＬＵを構成してよい。第１のソースフィールド（Ｓ０）は、図４の第１のマルチプレクサ（ＭＵＸ１）が、ＶＬＩＷ４７０の最後のブロック（ＩＭＭ０〜２）の中のＩＭＭ０を下位ＡＬＵの第１の入力（Ａ）へ結合することを引き起こすビットパターンを含む。第２のソースフィールド（Ｓ１）は、図４の第２のマルチプレクサ（ＭＵＸ２）が、レジスタＧ８を下位ＡＬＵの第２の入力（Ｂ）へ結合することを引き起こすビットパターンを含む。第３のソースフィールド（Ｓ２）は、図４の第３のマルチプレクサ（ＭＵＸ３）が、レジスタＧ１を下位ＡＬＵの第３の入力（Ｃ）へ結合することを引き起こすビットパターンを含む。宛先フィールド（Ｄ）は、図４のデマルチプレクサ（ＤＥＭＵＸ）が、下位ＡＬＵの出力（Ｄ）をレジスタＲ３へ結合することを引き起こすビットパターンを含む。したがって、ＶＬＩＷの各部分は、異なる方法で復号され、１つ又は複数の即値が所与の下位命令の代わりにＶＬＩＷの中に代入され、残りの下位命令が追加の即値を使用するために拡張する。その上、いかなるソースフィールド内でも即値を指定するビットパターンの存在は、即値を指定するために利用されているブロックに対応する下位ＡＬＵがオフにされることを引き起こす。
【００３３】
[0032]図６は、本発明の１つの実施形態に従って処理ステージの動作を制御する例示的方法を示す。各パスについて、ＶＬＩＷが１つ又は複数の即値を含むことを表示する符号化（例えば、オペランド及び／又はオペレーションコード）をＶＬＩＷが含むかどうかが、６１０で決定される。他の実施形態では、ＶＬＩＷが１つ又は複数の即値を含むかどうかを、ＶＬＩＷの１つ又は複数の所定のビット（例えば、フラグ）が表示する。
【００３４】
[0033]６２０において、ＶＬＩＷが即値を含むならば、１つ又は複数の所与の下位ＡＬＵが動作不能にされる。１つの実施形態において、複数の下位ＡＬＵの任意のものが、動作不能にされてよい。他の実施形態において、どの下位ＡＬＵが動作不能にされるかを、ＶＬＩＷの所定のビットが表示する。他の実施形態において、特定の下位ＡＬＵが、他の下位ＡＬＵよりも容易に動作不能にされてよい。それ故に、最も容易に動作不能にできる下位ＡＬＵが、毎回動作不能にされる下位ＡＬＵとなる。他の実施形態において、ある１つの下位ＡＬＵが他の下位ＡＬＵよりも強力でなくてもよく、くは、ある１つの下位ＡＬＵが他の下位ＡＬＵよりも強力であってもよい。例えば、特定の下位ＡＬＵがＶＬＩＷの他の下位ＡＬＵ部分の各々の中の即値にアクセスでき、他の下位ＡＬＵはアクセスできなくてもよい。他の例において、特定の下位ＡＬＵが１つ又は複数の下位ＡＬＵの１つ又は複数の加算器又は乗算器の出力にアクセスでき、他の下位ＡＬＵはアクセスできなくてもよい。更に他の例において、特定の下位ＡＬＵが逆動作を遂行でき、他の下位ＡＬＵは遂行できなくてもよい。それ故に、最も強力でない下位ＡＬＵが動作不能にされることで、全ての動作が依然として利用可能となるようにされてよい。代替として、より強力な下位ＡＬＵは多くの電力を消費するが、より強力な下位ＡＬＵが遂行できる加算動作は必要でないかも知れず、それ故に、多くの電力を保存するため動作不能にされる。
【００３５】
[0034]１つの実現において、１つ又は複数の所与の下位ＡＬＵは、所与の下位ＡＬＵの出力を無視又は撤回することによって動作不能にされてよい。他の実施形態において、１つ又は複数の所与の下位ＡＬＵは、所与の下位ＡＬＵを通るデータを計時しないことによって動作不能にされてよく、それによって電力を節約する。更に他の実施形態において、１つ又は複数の所与の下位ＡＬＵは、１つ又は複数の所与の下位ＡＬＵへの電力をオフにすることによって動作不能にされてよい。
【００３６】
[0035]６３０において、動作不能にされる１つ又は複数の所与の下位ＡＬＵに対応するＶＬＩＷの１つ又は複数のブロックは、１つ又は複数の即値として、１つ又は複数の他の下位ＡＬＵに対して利用可能にされる。それ故に、ＶＬＩＷは１つ又は複数のマルチプレクサ及びデマルチプレクサへ結合され、多重化及び逆多重化を制御する。追加的に、ＶＬＩＷは、更に、即値として１つ又は複数のマルチプレクサへ結合され、下位ＡＬＵの入力を調達する。６４０では、ＶＬＩＷに従って活性下位ＡＬＵが構成及び制御される。構成及び制御は、１つ又は複数の動作不能下位ＡＬＵに対応するＶＬＩＷの一部分を、１つ又は複数の活性下位ＡＬＵのへの１つ又は複数の即値として調達することを含んでよい。即値は、使用可能とされる前に先ずレジスタの中へ置かれる必要がある代わりに、有利には、動作を遂行する活性下位ＡＬＵへ即時に利用可能にされる。
【００３７】
[0036]図７Ａ及び図７Ｂは、本発明の実施形態に従ったコンピュータシステムを示す。そのようなコンピュータシステムは、本発明の或る一定の機能を実現するための実行プラットフォームを提供する。図７Ａで描かれるように、コンピュータシステム７００はＣＰＵ７０５を含み、ＣＰＵ７０５はホストインタフェース７１５を経由して３Ｄプロセッサ７１０へ結合される。ホストインタフェースは、ＣＰＵと３Ｄプロセッサの間を通過するデータ及び指令をＣＰＵ及び３Ｄプロセッサのそれぞれの形式へ変換する。ＣＰＵ及び３Ｄプロセッサの双方は、メモリコントローラ７２５を経由してメモリ７２０へ結合される。１つの実施形態において、メモリは共有メモリであり、ＣＰＵ及び３Ｄプロセッサの双方のために命令及びデータを記憶する特性を有する。共有メモリへのアクセスは、メモリコントローラを介して行われる。共有メモリは、ビデオフレームバッファを構成しているデータも記憶する。ビデオフレームバッファは、結合されたディスプレイ７３０を駆動する。３Ｄコアは即値調達モジュール７３５を含む。即値調達モジュールは、前述したようにしてＶＬＩＷから即値を調達する。
【００３８】
[0037]図７Ｂは、本発明の代替実施形態に従ったコンピュータシステム７５０を示す。コンピュータシステムは、図７Ａのコンピュータシステムと実質的に同じである。しかしながら、コンピュータシステムは、専用システムメモリ７６０を有するプロセッサ７５５、及び専用グラフィックスメモリ７７０を有する３Ｄプロセッサ７６５を利用する。ホストインタフェース７７５は、ＣＰＵと３Ｄプロセッサの間を通過するデータ及び指令をＣＰＵ及び３Ｄプロセッサのそれぞれの形式へ変換する。システムの実施形態において、システムメモリは、ＣＰＵで実行しているプロセス／スレッドのために命令及びデータを記憶し、グラフィックスメモリは、３Ｄプロセッサで実行しているプロセス／スレッドのために命令及びデータを記憶する。グラフィックスメモリは、ディスプレイ７８０を駆動するビデオフレームバッファの中にデータを記憶する。３Ｄコアは即値調達モジュール７８５を含む。即値調達モジュールは、前述したようにしてＶＬＩＷから即値を調達する。
【００３９】
[0038]コンピューティングシステムは、例えば、携帯電話、ＰＤＡ、携帯ゲーム機などであってよい。そのような実施形態において、周辺バス、特殊通信コンポーネント、特殊入出力デバイスのサポートなどを追加するように設計されたコンポーネントが含まれる。更に、双方のコンピュータシステムにおいて、１つ又は複数のコンポーネントが単一の集積回路ダイの上に集積され得ることが理解されるべきである。
【００４０】
[0039]本発明の具体的実施形態のこれまでの説明は、例証及び説明を目的として呈示された。この説明が全部を尽くしていること、又は開示された正確な形態へ本発明を限定することは意図されない。明らかに、上記の教示に照らして、多くの修正及び変形が可能である。実施形態は、本発明の原理及び実用的応用を最良に説明するために選択及び説明された。それによって、他の当業者は、想定される特定の使用に適した様々な修正と共に、本発明及び様々な実施形態を最良に利用することができる。本発明の範囲は、本明細書に添付された特許請求の範囲及びこれら範囲の均等物によって規定されることが意図される。
【図面の簡単な説明】
【００４１】
【図１】本発明の１つの実施形態に従った例示的グラフィックスパイプラインのブロック図を示している。
【図２】本発明の１つの実施形態に従った処理ステージのブロック図を示している。
【図３】本発明の１つの実施形態に従って算術及び論理動作を遂行する方法の流れ図を示している。
【図４】本発明の１つの実施形態に従った処理ステージの例示的部分のブロック図を示している。
【図５Ａ】本発明の１つの実施形態に従った超長命令語形式のブロック図を示している。
【図５Ｂ】本発明の１つの実施形態に従った例示的超長命令語のブロック図を示している。
【図５Ｃ】本発明の他の実施形態に従った例示的超長命令語のブロック図を示している。
【図６】本発明の１つの実施形態に従って処理ステージの動作を制御する例示的方法の流れ図を示している。
【図７Ａ】本発明の１つの実施形態に従ったコンピュータシステムのブロック図を示している。
【図７Ｂ】本発明の他の実施形態に従ったコンピューティングシステムのブロック図を示している。
【符号の説明】
【００４２】
１００…グラフィックスパイプライン、１０５…セットアップステージ、１１０…ラスタステージ、１１１…Ｚラスタステージ、１１２…色ラスタステージ、１２０…ゲートキーパステージ、１２１…得点掲示板、１３０…プログラムシーケンスステージ、１４０…算術論理ユニットステージ、１５０…データ書き込みステージ、１７０…メモリ、２００…処理ステージ、２１０…レジスタ、２２０…選択器、２３０…算術論理ユニット、２４０…逆選択器、２５０…超長命令語、４１０〜４３０…マルチプレクサ、４４０…下位算術論理ユニット、４５０…デマルチプレクサ、４６０〜４６８…制御信号入力、４７０…超長命令語、７００…コンピュータシステム、７０５…中央処理装置、７１０…３Ｄプロセッサ、７１５…ホストインタフェース、７２０…メモリ、７２５…メモリコントローラ、７３０…ディスプレイ、７３５…即値調達モジュール、７５０…コンピュータシステム、７５５…プロセッサ、７６０…専用システムメモリ、７６５…３Ｄプロセッサ、７７０…専用グラフィックスメモリ、７７５…ホストインタフェース、７８０…ディスプレイ、７８５…即値調達モジュール、＋…加算器、Ａ…第１の入力、ＡＬＵ…算術論理ユニット、Ｂ…第２の入力、Ｃ…第３の入力、Ｄ…宛先フィールド、ＤＥＭＵＸ１…デマルチプレクサ１、ＦＤＣ…断片データキャッシュ、Ｇ０〜Ｇ３１…大域定数レジスタ０〜大域定数レジスタ３１、ＩＭＭ０〜ＩＭＭ２…即値０〜即値２、ＭＵＸ１〜ＭＵＸ３…マルチプレクサ１〜マルチプレクサ３、ＯＰ…オペレーションコードフィールド、ＯＰ１〜ＯＰ８…オペレーションコード１〜オペレーションコード８、Ｒ０〜Ｒ１５…変数レジスタ０〜変数レジスタ１５、Ｓ０〜Ｓ２…ソースフィールド０〜ソースフィールド２、Ｓｕｂ−ＡＬＵ…下位算術論理ユニット、ＳＵＢ−ＩＮＳＴＲ０〜ＳＵＢ−ＩＮＳＴＲ３…下位命令０〜下位命令３、ＶＬＩＷ…超長命令語、Ｘ…乗算器。
【図１】
0005317573.tif 000002
【図２】
0005317573.tif 000003
【図３】
0005317573.tif 000004
【図４】
0005317573.tif 000005
【図５Ａ】
0005317573.tif 000006
【図５Ｂ】
0005317573.tif 000007
【図５Ｃ】
0005317573.tif 000008
【図６】
0005317573.tif 000009
【図７Ａ】
0005317573.tif 000010
【図７Ｂ】
0005317573.tif 000011