首页 / 专利库 / 显示技术 / 图形加速器 / Floating point processor of graphic accelerator and method for executing floating point function of the same

Floating point processor of graphic accelerator and method for executing floating point function of the same

阅读:788发布:2020-11-19

专利汇可以提供Floating point processor of graphic accelerator and method for executing floating point function of the same专利检索,专利查询,专利分析的服务。并且PURPOSE: To provide a floating point processor of a high performance three- dimensional graphic accelerator in a computer system. CONSTITUTION: A floating point processor 40 realizes a specialized graphic microinstruction. The specialized graphic microinstruction includes a swap microinstruction for hardware remapping a general register group for classifying the vertexes of a triangle. The specialized graphic microcomputer instruction includes branching with a specialized condition for a three-dimensional geometry.,下面是Floating point processor of graphic accelerator and method for executing floating point function of the same专利的具体信息内容。

【特許請求の範囲】
  • 【請求項1】 多重バッファ入力レジスタファイルを有し、浮動小数点コマンドバスを介して再フォーマットしたジオメトリパケットを受け、且つ再フォーマットしたジオメトリパケットを緩衝する入力回路と;多重バッファ出力レジスタファイルを有し、線引きパケットを緩衝し且つその線引きパケットを線引きコマンドバスを介して転送する出力回路と;第1のレジスタグループと、第2のレジスタグループと、第3のレジスタグループとを含む汎用レジスタファイルを有するレジスタファイル回路と;浮動小数点比較マイクロ命令と、スワップマイクロ命令とから構成されており、スワップマイクロ命令は、第1のレジスタグループ、第2のレジスタグループ及び第3のレジスタグループに記憶されている1組の頂点値が定義済順序で分類されるように、浮動小数点比較マイクロ命令に対応する一連の結果フラグに従って第1
    のレジスタグループ、第2のレジスタグループ及び第3
    のレジスタグループに関わるレジスタマップを配列替えする複数の特殊化グラフィックスマイクロ命令を制御記憶装置から読取り且つ1組の機能単位を使用して特殊化グラフィックスマイクロ命令を実行することにより、線引きパケットを出力レジスタファイルへと組立てる制御シーケンサとを具備するグラフィックスアクセラレータの浮動小数点プロセッサ。
  • 【請求項2】 グラフィックスアクセラレータ用の浮動小数点処理機能を実行する方法において、 コマンドプリプロセッサから浮動小数点コマンドバスを介して再フォーマットしたジオメトリパケットを受信し、且つ再フォーマットしたジオメトリパケットを多重バッファ入力レジスタファイルに緩衝する過程と;制御記憶装置から複数の特殊化グラフィックスマイクロ命令を読取り且つ1組の機能単位と、第1のレジスタグループ、第2のレジスタグループ及び第3のレジスタグループを有する汎用レジスタファイルとを使用して特殊化グラフィックスマイクロ命令を実行することにより、線引きパケットを生成する過程であって、特殊化グラフィックスマイクロ命令は浮動小数点比較マイクロ命令と、スワップマイクロ命令とから構成されており、スワップマイクロ命令は、第1のレジスタグループ、第2のレジスタグループ及び第3のレジスタグループに記憶されている1組の頂点値が定義済順序で分類されるように、浮動小数点比較マイクロ命令に対応する一連の結果フラグに従って汎用レジスタファイルに関わるレジスタマップを配置替えする過程と;線引きパケットを線引きコマンドバスを介して複数の線引きプロセッサへ同報通信する過程とから成る方法。
  • 说明书全文

    【発明の詳細な説明】

    【0001】

    【産業上の利用分野】本発明はコンピュータグラフィックスシステムの分野に関する。 さらに特定すれば、本発明は、コンピュータシステムにおける高性能三次元グラフィックスアクセラレータの浮動小数点プロセッサに関する。

    【0002】

    【従来の技術】三次元グラフィックスアクセラレータはコンピュータシステムの専用グラフィックス描示(レンダリング)システムである。 典型的には、コンピュータシステムのホストプロセッサで実行されるアプリケーションプログラムは、表示装置に表示すべき三次元グラフィックス要素を定義する三次元ジオメトリ入データを生成する。 アプリケーションプログラムはホストプロセッサからグラフィックスアクセラレータへジオメトリ入力データを転送する。 その後、グラフィックスアクセラレータは対応するグラフィックス要素を表示装置に描示する。

    【0003】従来のグラフィックスアクセラレータでは、変換、クリップ試験、フェース確定、ライティング、クリッピング及び画面スペース変換という三次元グラフィックス機能は、市販のデジタル信号処理(DS
    P)チップにより実行される場合が多い。 ところが、そのようなDSPチップは三次元コンピュータグラフィックス用として最適化されていない。

    【0004】たとえば、通常のDSPチップに設けられている高速アクセス内部レジスタの数は、大半の三次元グラフィックス処理アルゴリズムの内部ループに対応するには少なすぎる。 そのため、限られた数の内部レジスタを補うようにオンチップデータキャッシュを採用する。 さらに、DSPチップを多重処理環境で機能させるためには、支援チップを分類しなければならない。 支援チップを追加すると、残念ながら、グラフィックスアクセラレータに要するプリント回路基板の面積は拡大し、
    システムの電力消費は増加し、発熱も多くなり、システムのコストも高くなってしまう。

    【0005】もう1つの例を挙げると、三次元グラフィックス機能は、多くの場合、何らかの基準に従って三次元頂点を分類することを要求する。 DSPチップを採用するグラフィックスアクセラレータは、内部レジスタ又はデータキャッシュの記憶場所の間で頂点データを物理的に転送することによって、その分類を実行する。 残念ながら、頂点データの物理的転送は多くの時間を要し、
    システム性能を低下させる。

    【0006】さらに例を挙げると、従来のシステムにおけるDSPチップは、典型的には、ジオメトリ入力パラメータをアクセスし且つ変換後の結果を送り出す入出力タスクを実行しなければならない。 DSPチップは、グラフィックス機能タスクに加えて、入出力タスクを実行する。 残念ながら、パラメータ入出力タスクについてD
    SPチップにより費やされる時間がグラフィックス機能タスクから奪われてしまうので、グラフィックス処理性能は低下する。

    【0007】

    【発明が解決しようとする課題】本発明は、グラフィックスアクセラレータのコストを最小限に抑えつつグラフィックスアクセラレータの性能を向上させるために特殊化グラフィックスマイクロ命令及びハードウェア機能を提供するコンピュータシステムにおける高性能三次元グラフィックスアクセラレータの浮動小数点プロセッサを提供することを目的とする。

    【0008】

    【課題を解決するための手段】コンピュータシステムにおける高性能三次元グラフィックスアクセラレータの浮動小数点プロセッサを開示する。 浮動小数点プロセッサは入力回路と、出力回路と、レジスタファイル回路と、
    制御回路と、1組の機能単位と、制御記憶装置インタフェース回路とを具備する。 入力回路は二重バッファ入力レジスタファイルを実現する。 入力回路はコマンドプリプロセッサから浮動小数点コマンドバスを介して再フォーマットされたジオメトリパケットを受信し、その再フォーマットされたジオメトリパケットを緩衝する。 出力回路は二重バッファ出力レジスタファイルを実現する。
    出力回路は線引きパケットを緩衝し、線引きコマンドバスを介して1組の線引きプロセッサへ線引きパケットを同報通信する。 レジスタファイル回路は第1のレジスタグループと、第2のレジスタグループと、第3のレジスタグループとを含む汎用レジスタファイルを含む。

    【0009】制御シーケンサは、制御記憶装置から複数の特殊化グラフィックスマイクロ命令を読取り且つ1組の機能単位を使用して特殊化グラフィックスマイクロ命令を実行することにより、線引きパケットを出力レジスタファイルへ組立てる。 特殊化グラフィックスマイクロ命令は浮動小数点比較マイクロ命令と、スワップマイクロ命令とから構成されている。 スワップマイクロ命令は、第1のレジスタグループ、第2のレジスタグループ及び第3のレジスタグループに記憶されている1組の頂点値が定義済順序で記憶されるように、レジスタファイル回路に浮動小数点比較マイクロ命令に対応する一連の結果フラグに従って第1のレジスタグループ、第2のレジスタグループ及び第3のレジスタグループに関わるレジスタマップを配列替えさせる。

    【0010】機能単位は浮動小数点乗算器回路と、浮動小数点演算論理装置回路と、逆数回路と、整数演算論理装置回路と、逆数回路と、逆数平方根回路とを含む。 汎用レジスタファイルは所定の数の汎用レジスタから構成されており、その所定の数の汎用レジスタは三次元グラフィックス処理アルゴリズムの内部ループに対するデータ記憶域を形成する。

    【0011】特殊化グラフィックスマイクロ命令はクリップ試験マイクロ命令をさらに含む。 クリップ試験マイクロ命令は状態ビットレジスタのクリップモードビットに従って1つのポイントを1つ又は2つのクリップ平面と比較し、1つ又は2つの結果ビットをクリップビットレジスタへシフトする。 特殊化グラフィックスマイクロ命令は複数のジオメトリ条件付き分岐命令をさらに含む。 各々のジオメトリ条件付き分岐命令はクリップビットレジスタの内容に従って分岐条件を確定する。

    【0012】特殊化グラフィックスマイクロ命令は、浮動小数点値を整数値に変換するマイクロ命令と、整数値を浮動小数点値に変換するマイクロ命令と、データ値の絶対値を確定するマイクロ命令とをさらに含む。 特殊化グラフィックスマイクロ命令は浮動小数点逆数マイクロ命令と、逆数平方根マイクロ命令と、飽和加算(0,
    1)マイクロ命令と、制御記憶装置と汎用レジスタファイルとの間でデータブロック転送を実行するためのブロックロード命令及びブロック記憶命令とをさらに含む。

    【0013】

    【実施例】コンピュータシステムにおける高性能三次元グラフィックスアクセラレータを開示する。 以下の説明中、本発明を完全に理解させるために、説明の便宜上、
    特定のアプリケーション、特定の数、特定の装置及び特定の回路を挙げるが、そのような特定の詳細な事項がなくとも本発明を実施しうることは当業者には明白であろう。 また、場合によっては、本発明を無用にわかりにくくしないために、周知のシステムを概略図又はブロック線図の形で示すこともある。

    【0014】そこで、図1を参照すると、ホストプロセッサ20と、メモリサブシステム22と、グラフィックスアクセラレータ24と、表示装置26とを含むコンピュータシステムのブロック線図が示されている。 ホストプロセッサ20、メモリサブシステム22及びグラフィックスアクセラレータ24は、それぞれ、ホストバス2
    8を介して通信するように結合している。

    【0015】表示装置26は多様なラスタ表示モニタを代表するものである。 ホストプロセッサ20は多様なコンピュータプロセッサ及びCPUを代表し、また、メモリサブシステム22はランダムアクセスメモリ及び大容量記憶装置を含む多様なメモリサブシステムを代表している。 ホストバス28は、ホストプロセッサ、CPU及びメモリサブシステム、並びに専用サブシステムを相互に通信させる多様な通信バス又はホストコンピュータバスを代表するものである。

    【0016】ホストプロセッサ20は、プログラム入出力(I/O)プロトコルに従って、グラフィックスアクセラレータ24との間でホストバス28を介して情報を転送し合う。 また、グラフィックスアクセラレータ24
    は直接メモリアクセス(DMA)プロトコルに従ってメモリサブシステム22をアクセスする。

    【0017】ホストプロセッサ20で実行されるグラフィックスアプリケーションプログラムは、表示装置26
    に表示すべき画像を定義する三次元ジオメトリ情報を含むジオメトリデータアレイを生成する。 ホストプロセッサ20は、そのジオメトリデータアレイをメモリサブシステム22へ転送する。 その後、グラフィックスアクセラレータ24は、DMAアクセスサイクルを使用して、
    ホストバス28を介してジオメトリデータアレイを読取る。 あるいは、ホストプロセッサ20はジオメトリデータアレイをプログラムI/Oによってホストバス28を介してグラフィックスアクセラレータ24へ転送する。

    【0018】ジオメトリデータアレイ中の三次元ジオメトリ情報は頂点座標(頂点)を含む入力頂点パケットのストリームと、三次元空間中の三形、ベクトル及び点を定義する他の情報とをから構成されている。 各々の入力頂点パケットは、頂点法線と、頂点カラーと、ファセット法線と、ファセットカラーと、テクスチャマップ座標と、ピックidと、ヘッダと、その他の情報とを含む三次元頂点情報の組合わせを含んでいても良い。

    【0019】ヘッダなし入力頂点パケットは、隣接する複数の三角形から成る「ジグザグ」パターンの形態をとる三角形ストリップを定義していても良い。 また、ヘッダなし入力頂点パケットは三角形の「スターストリップ」パターンの形態をとる三角形ストリップを定義しても良い。 加えて、ヘッダなし入力頂点パケットは隔離された1つの三角形を定義しても良い。 ヘッダを有する入力頂点パケットは三角形ごとに三角形ストリップフォーマットを変更し、「ジグザグ」フォーマットと、「スター」フォーマットと、隔離三角形との間で変わっても良い。

    【0020】図2は、グラフィックスアクセラレータ2
    4のブロック線図である。 グラフィックスアクセラレータ24はコマンドプリプロセッサ30と、1組の浮動小数点プロセッサ40〜43と、1組の線引きプロセッサ50〜54と、フレームバッファ100と、ポストプロセッサ70と、ランダムアクセスメモリ/デジタル/アナログ変換器(RAMDAC)72とから構成されている。 RAMDAC72は、ルックアップテーブル機能を実現する市販のRAMDACに類似している。 一実施例では、コマンドプリプロセッサ30、浮動小数点プロセッサ40〜43、線引きプロセッサ50〜54及びポストプロセッサ70は、それぞれ、個別の集積回路チップである。

    【0021】コマンドプリプロセッサ30はホストバス28を介して通信するように結合している。 コマンドプリプロセッサ30は、ホストバス28を介するメモリサブシステム22からのジオメトリデータアレイのDMA
    読取りを実行する。 ホストプロセッサ20は仮想メモリポインタをコマンドプリプロセッサ30へ転送する。 仮想メモリポインタは、メモリサブシステム22にあるジオメトリデータアレイを指示する。 コマンドプリプロセッサ30は、ホストプロセッサ20からの介入なくメモリサブシステム22に対するDMA読取りを実行するために、仮想メモリポインタを物理メモリアドレスに変換する。

    【0022】コマンドプリプロセッサ30はジオメトリデータアレイから入力頂点パケットのストリームを受信し、その入力頂点パケットの中に含まれている情報を再順序付けする。 コマンドプリプロセッサ30は各入力頂点パケットからの情報を、標準化要素順序を有する再フォーマットした頂点パケットへと再順序付けする。 コマンドプリプロセッサ30は、各々の入力頂点パケットの情報を様々に数の異なるフォーマットを32ビットIE
    EE浮動小数点数フォーマットに変換する。 コマンドプリプロセッサ30は8ビット浮動小数点数、16ビット固定小数点数及び32ビット又は64ビットIEEE浮動小数点数を変換する。

    【0023】コマンドプリプロセッサ30はヘッダフィールドを再フォーマットし、定数を挿入し且つ順次ピックidを生成する。 コマンドプリプロセッサ30はヘッダの連鎖ビットを検査し、入力頂点パケットからの情報を、点と、線と、三角形とを含む完全に隔離したジオメトリプリミティブを含む再フォーマットした頂点パケットへと再組立てする。

    【0024】コマンドプリプロセッサ30は、再フォーマットされた頂点パケットを浮動小数点コマンドバス(CF_BUS)82を介して浮動小数点プロセッサ4
    0〜43の中の1つへ転送する。 コマンドプリプロセッサ30は、浮動小数点プロセッサ40〜43からCF_
    BUS82の制御部分を介して制御信号及び状態信号を受ける。 制御信号と状態信号は、再フォーマットした頂点パケットを受信するための浮動小数点プロセッサ40
    〜43の内部の入力バッファの可用性を指示する。 また、コマンドプリプロセッサ30は浮動小数点プロセッサ40〜43をバイパスして、直接ポートパケットを線引きコマンドバス(CD−BUS)80を介して線引きプロセッサ50〜54へ転送しても良い。

    【0025】浮動小数点プロセッサ40〜43は、それぞれ、ほぼ類似している。 各浮動小数点プロセッサ40
    〜43は、並列入出力パケット通信ハードウェアと共に、32ビットマイクロコード駆動浮動小数点コアを実現する。 各々の浮動小数点プロセッサ40〜43は乗算、ALU、逆数、逆数平方根及び整数演算を含めた浮動小数点機能を実現する。 各浮動小数点プロセッサ40
    〜43は、広範囲の種類にわたる特殊化グラフィックス命令及び機能を実現する。 各々の浮動小数点プロセッサ40〜43は、グラフィックスアクセラレータ24により実現される最大共通三次元グラフィックス処理マイクロコード内部ループを実行するために要求される数の高速内部レジスタを実現するように最適化されている。

    【0026】一実施例では、各々の浮動小数点プロセッサ40〜43は単一の集積回路チップで実現される。 浮動小数点プロセッサ40〜43ごとに要求される支援チップは、制御記憶装置(CS)において外部マイクロコードを提供する4つ1組の外部SRAMチップのみである。 各浮動小数点プロセッサ40〜43は、線引きプロセッサ50〜54による走査変換のために三角形をセットアップする機能を実現する。 そのセットアップ機能は、三角形の3つの頂点をyが大きくなる順に分類するステップを含む。 各々の浮動小数点プロセッサ40〜4
    3は線引きパケットをCD−BUS80を介して全ての線引きプロセッサ50〜54へ同報通信する。 線引きパケットは、三角形、点及び線を含む最線ジオメトリプリミティブから構成されている。

    【0027】線引きプロセッサ50〜54は、フレームバッファ100のVRAM制御チップとして機能する。
    線引きプロセッサ50〜54は、浮動小数点プロセッサ40〜43の中の1つから受信した線引きパケットに従って、又はコマンドプリプロセッサ30から受信した直接ポートパケットに従って、フレームバッファ100に1つの画像を同時に書込む。

    【0028】各線引きプロセッサ50〜54はエッジウォーキング(edge walking)機能及び走査補間から成る走査変換機能を実行する。 線引きプロセッサ50〜54間でエッジウォーキング機能及び走査補間機能を反復することにより、別個のエッジウォーキングプロセッサと走査補間プロセッサとの間に大規模通信経路を設ける必要はなくなるので、各々の線引きプロセッサ50〜54のピン数は最小限で済み、また、プリント回路基板の所要スペースも縮小されるのである。

    【0029】フレームバッファ100は5つ1組のVR
    AMインタリーブバンクとして配列されている。 線引きプロセッサ50はインタリーブbank_0 61に画素データを書込み、線引きプロセッサ51はインタリーブbank_1 62に画素データを書込み、線引きプロセッサ52はインタリーブbank_2 63に画素データを書込み、線引きプロセッサ53はインタリーブbank_3 64に画素データを書込み、線引きプロセッサ54はインタリーブbank_4 65に画素データを書込む。

    【0030】各々の線引きプロセッサ50〜54は、それに対応するインタリーブバンク61〜65の中で見える画素のみを描示する。 線引きプロセッサ50〜54は線引きパケットにより定義される三角形プリミティブを同時に描示して、フレームバッファ100に正しい組合わせラスタ化画像を生成する。 各々の線引きプロセッサ50〜54は最終ラスタ化画像の各走査線に沿って4つおきに画素をラスタ化する。 各線引きプロセッサ50〜
    54は、走査線を0画素、1画素、2画素、3画素又は4画素分のスペースだけ右へ偏位させて開始する。

    【0031】各々の線引きプロセッサ50〜54は任意に深さキューイングを実行する。 描示される三角形、ベクトル又は点の各画素は、浮動小数点プロセッサで深さキューイングを実行する従来のグラフィックスシステムで見られた性能の低下を伴わずに、線引きプロセッサ5
    0〜54の中で深さキューイングされるであろう。 各線引きプロセッサ50〜54は矩形ウィンドウクリッピング、ブレンド及びその他の画素処理機能を任意に実行する。

    【0032】ポストプロセッサ70はフレームバッファ100からビデオバス84を介してインタリーブ画素データを受信する。 ポストプロセッサ70は矩形ウィンドウクリッピング、ブレンド及びその他の画素後処理機能と、カラールックアップテーブル機能及びカーソル機能とを実行する。 RAMDAC72はポストプロセッサ7
    0から受けた画素データを、表示装置26に対するビデオ信号73に変換する。

    【0033】図3は、浮動小数点プロセッサ40と、制御記憶装置(CS)149とを含む浮動小数点プロセッサセクション45のブロック線図である。 浮動小数点プロセッサ40は入力回路141と、出力回路145と、
    レジスタファイル142と、1組の機能単位143と、
    制御回路144と、SRAMインタフェース回路146
    とから構成されている。 浮動小数点プロセッサ40は、
    CF_BUS82のデータ部分181を介して再フォーマットした頂点パケットを受信する。 コマンドプリプロセッサ30は、入力バッファ141をイネーブル、ディスエーブルするために、CF_BUS82の制御部分1
    82を介して制御信号を転送する。 出力回路145はC
    D_BUS80のデータ部分183を介して線引きパケットを転送する。 線引きプロセッサ50〜54へのデータ転送を同期させ且つCD_BUS80におけるバスアクティビティをコマンドプリプロセッサ30と協調させるために、出力回路145はCD_BUS80の制御部分184を介して制御信号をさらに転送する。

    【0034】入力回路141は、二重緩衝方式の1対の32レジスタファイルとして配列されている1組のレジスタを含む。 同様に、出力回路145は、1対の32レジスタ二重緩衝レジスタファイルとして配列されている1組のレジスタを含む。 一実施例では、レジスタファイル142は160個の32ビットレジスタから構成されたマルチポートレジスタファイルである。 レジスタファイル142は、点コマンド、ベクトルコマンド及び三角形コマンドの処理のための共通内部ループについて要求される定数、パラメータ及び作業変数を記憶するのに十分な高速オンチップデータ記憶域を形成する。

    【0035】SRAMインタフェース146は、制御記憶装置データバス148中の制御記憶装置アドレスバス147を介して、制御記憶装置(CS)149と通信する。 一実施例では、制御記憶装置アドレスバス147は17ビット幅、制御記憶装置データバス148は32ビット幅である。 制御記憶装置149は4つの128k×
    8ビットSRAMから構成されている。 浮動小数点プロセッサ40は、余分なグルー論理を要求せずに、SRA
    Mインタフェース回路146を介してCS149中のマイクロコードをアクセスする。

    【0036】制御回路144は、CS149からマイクロコード命令を取り出し且つそれらのマイクロコード命令を実行する制御シーケンサを実現する。 制御シーケンサは入力回路141への転送及び出力回路145からの転送とは分離されている。 入力回路141及び出力回路145にあるレジスタは、自動的に順序付けされるFI
    FOとして配列されている。 浮動小数点プロセッサ40
    で実行されるマイクロコードは、入力回路141及び出力回路145のレジスタを特殊レジスタファイルとしてアクセスする。 浮動小数点プロセッサ40の命令セットはレジスタファイルを要求し、放棄するためのコマンド、並びにCD_BUS80を介して伝送完了データパケットを待ち行列に入れるためのコマンドを含む。

    【0037】機能単位143は並列浮動小数点乗算器と、並列浮動小数点ALUと、並列浮動小数点反復逆数回路と、逆数平方根回路と、並列整数ALUとを実現する。 浮動小数点プロセッサ40は32ビット内部浮動小数点演算を実現する。 浮動小数点プロセッサ40は内部サブルーチンスタックを有する。 浮動小数点プロセッサ40は、線引きプロセッサ50〜54による走査変換のために三角形セットアップ機能を実現する。 三角形セットアップ機能の第1の段階は、三角形の3つの頂点をy
    が大きくなる順に分類する。 浮動小数点プロセッサ40
    は、頂点のy座標の最前の3回の比較の結果に基づいて、レジスタファイル142の1セクションを再順序付けする特殊命令をハードウェアで実現する。

    【0038】浮動小数点プロセッサ40で実現されるクリップ試験機能は、クリップ条件ビットのベクトルを計算する。 浮動小数点プロセッサ40〜43は、複数対のクリップ条件ビットを計算する特殊クリップ試験命令を実現しつつ、クリップ条件ビットを特殊クリップレジスタへシフトさせる。 クリップ条件ビットを計算した後、
    特殊分岐命令により、クリップレジスタに記憶されているクリップ条件ビットを適切なクリップ条件へと復号する。 浮動小数点プロセッサ40は三角形とベクトルのクリッピングに際して別個の分岐命令を実現する。 特殊分岐命令は、同一の命令の中で複数のクリップ条件の試験をイネーブルする。

    【0039】浮動小数点プロセッサ40は浮動小数点から固定小数点への変換命令及び固定小数点から浮動小数点への変換命令と、整数ビットフィールド抽出命令及び整数ビットフィールド挿入命令と、バレルシフト命令及び併合命令とを実現する。 浮動小数点プロセッサ40はCS149への転送に関わるブロックロード/記憶命令、並びに整数関数を実現する。

    【0040】図4は、機能単位及び浮動小数点プロセッサ40に関わるデータ経路を示す。 データ経路は3つのソースバス(Aバス220、Bバス222及びCバス2
    24)と、1つの宛先バス(Dバス226)とを含む。
    機能単位は浮動小数点乗算器(FMUL)200と、整数演算論理装置(IALU)204と、浮動小数点演算論理装置(FALU)206と、逆数回路202とを含む。 また、入力回路141及び出力回路145と、レジスタファイル142との内部レジスタの論理配列も示されている。 内部レジスタはIレジスタ、Oレジスタ、R
    レジスタ及びPレジスタという4つのレジスタ群として配列されている。

    【0041】図5は、Iレジスタ、Oレジスタ、Rレジスタ及びPレジスタのレジスタマッピングを示す。 Iレジスタは入力回路141の64個のレジスタに対応しており、1対の二重緩衝32エントリレジスタファイルとして配列されている。 Oレジスタは出力回路145の6
    4個のレジスタに対応しており、1対の二重緩衝32エントリレジスタファイルとして配列されている。 RレジスタとPレジスタはレジスタファイル142に含まれており、単一バッファである。 Rレジスタは64個あり、
    Pレジスタは96個ある。

    【0042】Iレジスタは、CF_BUS82を介して受信した再フォーマットされた頂点パケットに関わる入力パラメータを保持する。 任意の時点で、マイクロコードによるアクセスのために1度にIレジスタの1つのバンクを利用可能であるが、その間にIレジスタの残りのバンクはCF_BUS82を介して転送される次の再フォーマットされた頂点パケットに対して入力FIFOとして使用される。 利用可能なIレジスタをレジスタI0
    〜I31という。

    【0043】次のIレジスタバンクをアクセスするとき、次の再フォーマットされた頂点パケットが代替Iレジスタバンクに完全には組立てられていない場合には、
    制御シーケンサは待機する。 対応する再フォーマットされた頂点パケットをアクセスした後、対応するコマンド処理が完了する前であっても、制御シーケンサはIレジスタバンクを解放することができる。 再フォーマットされたパケットのコマンド演算コードは、I0の最下位の5〜9ビットの中に含まれている。 浮動小数点プロセッサ40は、I0の最下位の5〜9ビットに基づいてマイクロコード飛び越しテーブルに自動的にディスパッチする特殊コマンド復号命令を実現する。

    【0044】OレジスタはCD_BUS80を介して転送すべき線引きパケットを保持する。 任意の時点で、マイクロコードによるアクセスのためにOレジスタのバンクを一度に1つ利用可能であり、その間、Oレジスタの残りのバンクは次の線引きパケットに対する出力バッファとして使用される。 利用可能なOレジスタをレジスタO0〜O31という。 Oレジスタの1つのバンクは32
    個までのパラメータを有する線引きパケットを保持する。 出力回路145は線引きパケットをOレジスタからFD_BUS80を介して転送する。 次のOレジスタバンクをアクセスするとき、代替Oレジスタバンクから先の線引きパケットが排出され終わるまで、制御シーケンサは待機する。 出力回路145の余分の時間でOレジスタバンクを排出できるように、制御シーケンサは再フォーマットされたジオメトリパケットを処理する途中でO
    レジスタバンクを要求することができる。

    【0045】Rレジスタは汎用レジスタである。 Pレジスタはビューイングマトリクス、画面座標変換などの浮動小数点乗算定数に対して使用される。 Pレジスタの第2のグループと第3のグループは一時的なレジスタとして、並びに追加乗算定数として使用される。

    【0046】clip_bits レジスタは32ビットクリップ状態レジスタである。 clip_bits レジスタは三角形、ベクトル又は点のクリップ状態に対応する条件コードを含む。 clip_bits レジスタの内容は、クリップ試験命令により、一度に1ビット又は2ビット更新される。 clip_b
    its レジスタの内容は一連の特殊化分岐命令によって試験される。 state_bitsレジスタは32ビット条件コード・状態レジスタである。 state_bits レジスタは一連の特殊化フラグ及び状態ビットを記憶する。 state_bits
    レジスタの内容はいくつかの命令によって影響を受け、
    1対の状態更新命令により明示して設定される。 PCレジスタは16ビットプログラムカウンタである。 PCスタックはサブルーチン呼び出し/復帰のための8つの1
    6ビットプログラムカウンタから成るハードウェアスタックである。

    【0047】図6は、一実施例に関する浮動小数点プロセッサ40のマイクロコード命令フォーマットを示す。
    マイクロコード命令は32ビット幅であり、演算符号フィールド、制御フィールド、乗算/加算に関わるレジスタ宛先Dのフィールド、加算に関わるレジスタソースC
    のフィールド、乗算に関わるレジスタソースBのフィールド及び乗算に関わるレジスタソースAのフィールドという5つの一般フィールド型に分割されている。

    【0048】Aバス220はFMUL200に至る入力経路と、IALU204に至る入力経路と、FALU2
    06に至る多重化入力経路とを形成する。 マイクロ命令のAバスフィールドは、Aバス220を介して転送されるデータのソースを指定する。 AバスフィールドはRレジスタR0からR63と、PレジスタP0からP63とを指示する。 Bバス222はFMUL200に至る別の入力経路と、逆数回路202に至る唯一の入力経路と、
    IALU204に至る別の入力経路である。 マイクロ命令のBバスフィールドはBバス202を介して転送されるデータのソースを指定する。 Bバスフィールドは、状態ビットレジスタの中でセットされるモードビットが指定するRレジスタR0からR63又はRレジスタR0からR31と、IレジスタI0からI31とを指示する。

    【0049】Cバス224はFALU206に至る別の入力経路である。 マイクロ命令のCバスフィールドはC
    バス224を介して転送されるデータのソースを指定する。 Cバスフィールドは、状態ビットレジスタにより指定されるモードとは無関係に、RレジスタR0からR6
    3を指示する。 Dバス226は浮動小数点プロセッサ4
    0の機能単位からの出力データ経路である。 Dバス22
    6はFMUL200又はFALU206からの出力、あるいは、命令によっては、IALU204又は逆数回路202からの出力をマイクロ命令のDSフィールドに従って搬送する。 マイクロ命令のDバスフィールドはDバス226を介して転送されるデータの宛先を指定する。
    Dバスフィールドは、state_bitsレジスタの中で設定されるモードビットによる指定の通りに、RレジスタR0
    からR63、OレジスタO0からO31、あるいはPレジスタP0からP31又はPレジスタP32からP63
    を指示する。

    【0050】マイクロ命令のASフィールドはFALU
    206に対する1つの入力に関わるソースデータを確定する。 ASフィールドはAバス220又はBバス222
    を介して転送されるデータを選択する。 ASフィールドはマルチプレクサ232の選択制御を実行する。 マイクロ命令のDSフィールドは、Dバス226を介して転送されるデータのソースを確定する。 DSフィールドはF
    MUL200の出力、FALU206の出力、IALU
    204の出力又は逆数回路202の出力のいずれかを選択する。 DSフィールドはマルチプレクサ230の選択制御を実行する。 マイクロ命令の小演算フィールドは、
    特定の命令グループの中の特定の1つの命令を指定する。 小演算フィールドの大きさと位置は命令グループによって変わる。

    【0051】図7及び図8は、浮動小数点プロセッサ4
    0で実現されるclip_test マイクロ命令のフォーマットを示す。 clip_test マイクロ命令は1つのポイントを1
    つ又は2つのクリップ平面と比較し、比較からの1つ又は2つの結果ビットをclip_bits レジスタへシフトする。 state_bitsレジスタ中のclip_mode ビットは、そのポイントを1つのクリップ平面と比較すべきか又は2つのクリップ平面と比較すべきかを確定する。 state_bits
    レジスタ中のclip_mode ビットか0であれば、clip_bit
    s レジスタの内容を左へ2ビットシフトさせ、図8に示す2つの条件ビットをビット位置0及び1にコピーする。 clip_mode が1であれば、clip_bits レジスタの内容を左へ1ビットシフトさせ、図8に示す条件ビットをビット位置0にコピーする。 clip_test に関わるFAL
    U206の条件コードビットは、浮動小数点絶対値をf
    absとし且つマルチプレクサ232の出力をm ou
    tとするとき、fabs([a bus])又はfab
    s([m out])とfabs([c bus])との比較を表わしている。

    【0052】図9及び図10は、浮動小数点プロセッサ40で実現される単項FALUマイクロ命令のフォーマットを示す。 fabsに関わるFALU条件コードビットは[a_bus]又は[m_out] と0との比較を表わしている。

    【0053】図11は、浮動小数点プロセッサ40で実現される浮動小数点逆数マイクロ命令のフォーマットを示す。 逆数マイクロ命令は、Bバス222の内容について浮動小数点逆数演算を実行する。 逆数演算の結果は9
    サイクル後に利用可能になり、後続する逆数結果と置き換えられるまでは有効である。 先の逆数命令の結果を置き換えることなく、後続する逆数演算を8サイクルごとに開始しても良い。

    【0054】図12は、浮動小数点プロセッサ40で実現されるブロックロードマイクロ命令のフォーマットを示す。 ブロックロードマイクロ命令は、CS49からP
    レジスタ、Rレジスタ及びOレジスタへのブロックロード動作を指定する。 ブロックロードマイクロ命令は1回の動作で1個から192個のレジスタにブロックロードすることができる。 ブロックロードマイクロ命令はCS
    49の記憶場所(R[ra]+オフセット)からレジスタR[rs]〜R[re]へのブロックロードを指定する。 図13は、浮動小数点プロセッサ40のPレジスタ、Rレジスタ及びOレジスタへのブロックロードマイクロ命令のRS値及びRE値のマッピングを示す。

    【0055】図14は、浮動小数点プロセッサ40で実現されるブロック記憶マイクロ命令のフォーマットを示す。 ブロック記憶マイクロ命令は、Pレジスタ、Rレジスタ及びOレジスタからCS49へのブロック記憶動作を指定する。 ブロック記憶マイクロ命令は1回の動作で1個から192個のレジスタにブロック記憶することができる。 ブロック記憶マイクロ命令はレジスタR[r
    s]〜R[re]からCS49の記憶場所(R[ra]
    +オフセット)へのブロック記憶を指定する。 図15
    は、浮動小数点プロセッサ40のPレジスタ、Rレジスタ及びOレジスタへのブロック記憶マイクロ命令のRS
    値及びRE値のマッピングを示す。

    【0056】図16及び図17は、浮動小数点プロセッサ40で実現される特殊化ジオメトリ分岐マイクロ命令のフォーマットを示す。 特殊化ジオメトリ分岐マイクロ命令は、一般に起こる条件の条件と組合わせの個別試験を実行する。 geometry_modeレジスタは、分岐条件を確定するためにclip_bits レジスタの1つの頂点を使用するか、2つの頂点を使用するか又は3つの頂点を使用するかを判定する。

    【0057】浮動小数点プロセッサ40で実現される条件付き分岐マイクロ命令は、いくつかの指定条件の中の1つを試験する。 指定分岐条件が真であれば、条件付き分岐マイクロ命令の中で指定されている絶対16ビットアドレスに対して遅延分岐が開始される。 条件付き分岐マイクロ命令の次に続く順次マイクロ命令は無条件で実行される。 マイクロ命令実行の流れは次のマイクロ命令で変化し、そのマイクロ命令は条件付き分岐マイクロ命令の絶対ターゲットに位置するマイクロ命令である。

    【0058】1つのマイクロ命令の中の分岐条件ビットと16ビット宛先アドレスは、算術演算マイクロ命令においてAバス、Bバス及びCバスを指定するために使用されるビットを追い越す。 その場合でも、Dバス指定ビットと2つのDSソース選択ビットは条件付き分岐マイクロ命令にとどまる。 すなわち、条件付き分岐マイクロ命令実行のための同一のマイクロ命令サイクルについて、4つのDバスソース(FALU206、FMUL2
    00、逆数回路202及びIALU204)の中のいずれかからの記憶が並行して起こりうるので、マイクロ命令の流れに変化が起こったときには、その間、パイプラインは空になる。

    【0059】浮動小数点プロセッサ40で実現されるジオメトリ分岐マイクロ命令は、プリミティブトリビアル拒絶(ptr)及びプリミティブアウトコード(po
    c)に関わる中間条件付き値を採用する。 state_bitsレジスタのgeometry_mode フィールドは、ptr及びpo
    c[5:0]の計算を確定する。

    【0060】3D点は、いずれかのクリップ平面の外にあれば、NPC空間でトリビアル拒絶されても良い。 そのような条件を、clip_bits レジスタのビットから形成したブール方程式によって説明する:

    【0061】geometry_mode == 点: ptr = xpw1 | xmw | ypw1 | ymw1 | zpw1 | zmw1

    【0062】3Dベクトルは、2つの頂点が少なくとも1つの(同一の)クリップ平面の外にあれば、NPC空間でトリビアル拒絶されても良い。 そのような条件をcl
    ip_bits レジスタのビットから形成したブール方程式によって説明する:

    【0063】geometry_mode == ベクトル: ptr = (xpw1 && xpw2)| (xmw1 && xmw2)| (ypw1 && ypw2)| (ymw1 && ymw2)| (zpw1 && zpw2)| (zmw1 && zmw2)

    【0064】3D三角形は、3つの頂点全てが少なくとも1つの(同一の)クリップ平面の外にあれば、NPC
    空間でトリビアル拒絶されても良い。 そのような条件を
    clip_bits レジスタのビットから形成したブール方程式によって説明する:

    【0065】 geometry_mode == 三角形: ptr = (xpw1 && xpw2 && xpw3)|(xmw1 && xmw2 && xmw3)| (ypw1 && ypw2 && ypw3)|(ymw1 && ymw2 && ymw3)| (zpw1 && zpw2 && zpw3)|(zmw1 && zmw2 && zmw3)

    【0066】pocはclip_bitsレジスタからのビットのブール方程式により形成される:

    【0067】geometry_mode == 点: poc[0] = xpw1 poc[1] = xmw1 poc[2] = ypw1 poc[3] = ymw1 poc[4] = zpw1 poc[5] = zmw1

    【0068】geometry_mode == ベクトル: poc[0] = xpw1 | xpw2 poc[1] = xmw1 | xmw2 poc[2] = ypw1 | ypw3 poc[3] = ymw1 | ymw2 poc[4] = zpw1 | zpw2 poc[5] = zmw1 | zmw2

    【0069】geometry_mode == 三角形: poc[0] = xpgw1 | xpgw2 | xpgw3 poc[1] = xmgw1 | xmgw2 | xmgw3 poc[2] = ypgw1 | ypgw2 | ypgw3 poc[3] = ymgw1 | ymgw2 | ymgw3 poc[4] = zpw1 | zpw2 | zpw3 poc[5] = zmw1 | zmw2 | zmw3

    【0070】プリミティブが外側クリップ境界の外にない(pno)かどうかを判定するためのブール方程式は6つのpocビットのNORである: pno = !(poc[0] |(poc[1]|(poc[2]|(poc[3]|(poc
    [4]|(poc[5])

    【0071】プリミティブが2つ以上の外側クリップ境界の外にあるか否かを判定するための式、言い換えれば、多重平面クリップ(mpc)は、6つのpocビットのカウントである: mpc = count ( poc [i]) > 1

    【0072】先に定義した中間値及びいくつかの状態ビットに基づいて、ジオメトリ分岐命令に関わるジオメトリ分岐条件を次の通り定義する。 プリミティブのいずれかの部分が正xクリップ平面の外にある場合の分岐。 ジオメトリ分岐正X gbpx = poc [0]

    【0073】プリミティブのいずれかの部分が負xクリップ平面の外にある場合の分岐。 ジオメトリ分岐負X gbmx = poc [1]

    【0074】プリミティブのいずれかの部分が正yクリップ平面の外にある場合の分岐。 ジオメトリ分岐正Y gbpy = poc [2]

    【0075】プリミティブのいずれかの部分が負yクリップ平面の外にある場合の分岐。 ジオメトリ分岐負Y gbmy = poc [3]

    【0076】プリミティブのいずれかの部分が正zクリップ平面の外にある場合の分岐。 ジオメトリ分岐正Z gbpz = poc [4]

    【0077】プリミティブのいずれかの部分が負zクリップ平面の外にある場合の分岐。 ジオメトリ分岐負Z gbmz = poc [5]

    【0078】プリミティブをトリビアル拒絶できる場合の分岐。 いずれかのクリップ平面の完全に外側にある場合には、プリミティブをトリビアル拒絶することができる。 ジオメトリ分岐クリップトリビアル拒絶 gbctr = ptr

    【0079】プリミティブをトリビアル受理できない場合の分岐。 いずれかの部分がいずれかのクリップ平面の外に位置している場合、又はmodel_clippingがイネーブルされる場合には、プリミティブをトリビアル受理することはできない。 ジオメトリ分岐クリップトリビアル受理せず gbnta = ! pno |model_clipping_enabled

    【0080】プリミティブを2つ以上のクリップ平面に対してクリッピングしなければならない場合、又はモデルクリッピングをイネーブルする場合の分岐。 ジオメトリ分岐単一クリップせず gbnsec = mpc|model_clipping_enabled

    【0081】処理中のプリミティブのフェースを拒絶すべき場合又はプリミティブをトリビアル拒絶すべき場合の分岐。 この分岐は、プリミティブの現在フェースをst
    ate_bitsレジスタのfront_face_reject ビットとback_f
    ace_rejectビットの双方に照らして検査する。 現在フェースに関わる拒絶ビットがセットされていれば、分岐を実行する。 プリミティブのある1つのフェース(方向)
    を見えなくすべき場合には、その特定のフェースに関わる拒絶ビットをセットする(前拒絶又は後拒絶)ために、浮動小数点プロセッサ40へコマンドを送信する。
    その後、プリミティブを処理するとき、そのプリミティブを拒絶して、別のプリミティブを獲得すべきか、又は現在プリミティブの処理を継続すべきかを判定するために、マイクロコードは拒絶ビットを検査する。 ジオメトリ分岐誤フェース拒絶 gbwfr = (reject_back_face && face_we_got)| (reject_front_face && !face_we_got)|

    【0082】モデルクリッピングをイネーブルする場合の分岐。 ジオメトリ分岐モデルクリッピングイネーブル gbmce = model_clipping_enabled

    【0083】正しいフェース材質が導入されない場合、
    プリミティブフェースを拒絶すべき場合、又はプリミティブをトリビアル拒絶すべき場合の分岐。 後特性(ba
    ckprops)を採用するために、浮動小数点プロセッサ40へコマンドを送信する。 浮動小数点プロセッサ40のマイクロコードはstate_bitsレジスタのuse_back
    _propsビットをセットする。 その後、前後のフェースの材質特性と、後続するいくつかのプリミティブとを浮動小数点プロセッサ40へ転送する。 次に、プリミティブのフェースの1つが先に処理された最前のフェースと一致しないときには、マイクロコードは、この分岐を実行する場合にプリミティブを処理するために、材質特性を変化させる。 この分岐は誤フェース拒絶又はトリビアル拒絶のための再度の検査としても使用される。 ジオメトリ分岐正しい材質導入なし gbncmi = (use_back_props && (mat_face_installed ! = face_we_got)) | (reject_back_face && face_we_got) | (reject_front_face && !face_we_got) | ptr

    【0084】後フェース材質を導入する場合の分岐。 この分岐は、浮動小数点プロセッサ40のマイクロコードが先のプリミティブについて又はプリミティブの初期設定時に後フェース材質を導入し且つstate_botsレジスタでuse_back_propsビットをセットした後に使用される。
    この分岐は、変換時に法線を否定するか否かを決定するために使用される。 ジオメトリ分岐後フェース導入 gbbfi = use_back_props && mat_face_installed

    【0085】後特性及び後フェースを使用する場合の分岐。 ライティング計算のために後フェース材質を使用すべきときに、この分岐を実行する。 浮動小数点プロセッサ40のマイクロコードは、プリミティブに適用されるライトを計算するために必要とされる後フェース材質を導入する。 ジオメトリ分岐後フェース使用 gbubf = face_we_got && use_back_props

    【0086】後フェースの場合の分岐。 この分岐は法線の変換を確定するために使用される。 入力プリミティブが前フェーシング法線を有しているならば、それらの法線を変換する。 入力プリミティブが後フェーシング法線を有しているのであれば、そのプリミティブにライティングモデルを適用する前に、法線を変換し且つ反転する必要がある。 ジオメトリ分岐後フェース gbbf = face_we_got

    【0087】state_bitsレジスタ中のクリップ保留ビットがセットされている場合の分岐。 ジオメトリ分岐clip_pending セット gbcps = clip_pending

    【0088】図18は、一連の特殊条件ビットを記憶する状態ビットレジスタを示す。 2ビットgeometry_mode
    フィールドは、ジオメトリ分岐条件を計算するために、
    clip_bits レジスタの使用を確定する。 2ビットgeomet
    ry_mode フィールドはswap_rr ビットのローディングにも影響を及ぼす。 2つのgeometry_mode ビットは点、ベクトル又は三角形のいずれかを指定する。 clip_mode ビットは、clip_test 命令が1つの平面にクリッピングするか又は2つの平面にクリッピングするかを確定する。

    【0089】モデルクリッピングはクリップパイプに含まれていても良い。 モデルクリッピングがイネーブルされないときに高速実行のために共通コードを使用できるようにするために、状態ビットレジスタには特殊条件付きビットであるmodel_clipping_enabledが含まれている。 model_clipping_enabledの状態を試験するのは、特殊分岐命令である。

    【0090】状態ビットレジスタは、後拒絶、前拒絶及び拒絶なしという可能な3つの「フェース拒絶」モードを指定するために、2つの「フェース拒絶ビット」(後フェース拒絶及び前フェース拒絶)を提供する。 それらのビットは状態ビット変更マイクロ命令によりセットされる。 ビットを0にディフォルトセットすると、前後のフェースは共に受理される。 いずれか一方のみをセットすれば、後フェース又は前フェースが拒絶されることになる。

    【0091】状態ビットレジスタのface_we_got ビットは現在フェースを動的に指示する。 0にセットされると、このビットは前フェースを指示し、1にセットされたときには後フェースを指示する。 face_we_got ビットは状態ビット変更マイクロ命令によりセットされる。

    【0092】以上説明した状態ビットは、1つの特殊分岐命令に伴って、トリビアルクリップ拒絶及び誤フェース拒絶の制御流れ分岐を発生させることができる。 特殊分岐命令は30個のクリップビットと、2つのフェース拒絶ビットと、1つのface_we_got ビットとから条件を確定する。

    【0093】ジオメトリフォーマットによっては、1つの面の両側が異なる表面特性及び異なるライティングレベルを有することや、双方の側が同一の特性を共有することもありうる。 典型的には、1つの三角形ストリップは同じ方向に向いた三角形の連続を有し、その後に裏返って他方の側を示すことになる。 状態ビットレジスタ中の2つのビットは特性及びライティングの仮定をキャッシュさせることができる。 use_back_propsビットは、0
    であれば、前フェースに関わるキャッシュ値を使用することを指示する。 use_back_propsビットが1であるときには、mat_face_installedが現在導入中の材質の側(前は0、後は1)を指示する。

    【0094】状態ビットレジスタのoutput_lenフィールドとoutput_dstフィールドは、出力回路145によるO
    レジスタからの線引きパケットの転送に関わる長さと宛先を指定する。 output_lenフィールドは線引きパケットの長さを指示する。 output_dstビットは線引きパケットの宛先として線引きプロセッサ50〜54又はコマンドプリプロセッサ30のいずれかを指定する。

    【0095】状態ビットレジスタのスワップフィールドは、Rレジスタへのバス索引の再マッピング、すなわち、スワッピングを可能にする。 スワップはRレジスタR8からR31に適用される。 スワップは、レジスタ8
    個を各々含む3つのレジスタグループについて機能する。 RレジスタR8からR15はグループ1、RレジスタR16からR23はグループ2、レジスタR25からR31はグループ3である。 スワップはジオメトリ形状の種類に合わせて特殊化されている。 三角形の場合、3
    つの頂点は3つのレジスタグループ1〜3に記憶される。 スワップ動作は頂点のy成分をy1≦y2≦y3となるように分類する。

    【0096】スワップ動作を開始するために、3つの浮動小数点比較マイクロ命令を連続して実行し、続いて、
    3つの先の不等結果をswap_rr にロードするために制御・モードビット変更マイクロ命令を実行する(0≧偽、
    1≧真)。 geometry_mode がベクトルであるとき、swap
    _rr フィールドをFALU206の比較の結果としてロードする場合に、(y1>y3)及び(y2>y3)の比較は強制的に0とされる。 swap_rr フィールドを制御・モードビット変更マイクロ命令中の即時データからロードすることも可能である。

    【0097】図19は、起こりうる全てのy座標順序付けに対して状態ビットレジスタのswap_rr フィールドに記憶される頂点比較分類の結果を示す。 図20は、swap
    _rrフィールドの内容に対応するグループ1〜3のRレジスタの再マッピングを示す。 次の制御・モードビット変更マイクロ命令がswap_rr フィールドを0にするまで、あるいは、条件ビットをロードするために次の制御・モードビット変更マイクロ命令が実行されるまで、再マッピングは有効なままである。 スワッピングが有効である間、RレジスタR8からR31を参照するたびに、
    それはレジスタ再順序付けを受ける。

    【0098】クリップビットレジスタの編成は三角形、
    ベクトル、点に対してそれぞれ異なる。 図21は、三角形の場合のクリップビットレジスタの編成を示す。 クリップビットレジスタ中の各対のビットは、対向する1対のクリッピング平面に対して比較される特定の1つの頂点に関わる入/出ビットに対応する。 たとえば、2つのビット「XPW1」及び「XMW1」では、第1の(「プラス(+)」)ビットは頂点1のX座標が内側X
    クリップ平面の右側にある場合に限って1であり、また、第2の(「マイナス(−)」)ビットは、X座標が内側X左クリップ平面の左側にある場合に限って1である。 次の2つのビット「XPGW1」及び「XMGW
    1」も、試験が外側X「ガード」クリップ平面に対するものであったことを除いて同様である。 残りのビットも同様である。 ガード試験はZ座標には適用されないので、Zクリップ試験ビットはガード試験なしである。

    【0099】図22は、ベクトルの場合のクリップビットレジスタの編成を示す。 図23は、点の場合のクリップビットレジスタの編成を示す。 clip_bits レジスタ中のビットは、clip_test マイクロ命令の実行によってセットされる。 各々のclip_test マイクロ命令は別のビット又は1対のビットを生成し、それらのビットはclip_b
    its レジスタへとシフトされる。 図24は、clip_test
    命令を実行するときに起こるシフト動作の動きを示す。
    右上に入って来る新たなビットはクリップ試験の結果であり、矢印はビットの動きを示す。

    【0100】図25及び図26は、浮動小数点プロセッサ40のstate_bitsレジスタにおける選択されたビットを更新する状態ビット変更マイクロ命令を示す。 状態ビット変更マイクロ命令によりアドレス指定されるstate_
    bitsごとに、別個のイネーブルビットが設けられている。 ビット1及び0はDバスに関して4つのソースの中の1つを次のようにして選択する。 すなわち、DSフィールドを伴うソースを選択し、PCスタック clip_bits
    レジスタソース又はstate_bitsレジスタソースをポップする。 状態ビットレジスタのface_we_got ビットはFA
    LU206からのfcc条件からロードされる。 0は前フェースを指示し、1は後フェースを指示する。 fcc
    条件が1であれば([Aバス]又は[m out]<
    [Cバス])、face_we_got ビットは1にセットされる。 それ以外のfcc条件はface_we_got ビットを0にセットすることになる。

    【0101】図27及び図28は、動的結果から非レジスタファイルレジスタをロードする雑レジスタロードマイクロ命令を示す。 目標となるレジスタはclip_bits レジスタと、state_bitsレジスタと、PC(プログラムカウンタ)とを含む。 加えて、雑レジスタロードマイクロ命令に伴って、output_lenフィールド、dispatch_mask
    、geometry_mode 及びclip_mode レジスタをロードしても良い。 geometry_mode は、1=点、2=線及び3=
    三角形というクリッピングモードの中の1つを選択する。

    【0102】図29及び図30は、state_bitsレジスタ中の選択されたビットを更新し且ついくつかの制御アクションを開始させる制御・モードビット変更マイクロ命令を示す。 制御・モードビット変更マイクロ命令によりアドレス指定されるstate_bitsに対して、別個のイネーブルビットが設けられている。 制御・モードビット変更マイクロ命令の中で「新Iディスパッチオフ(clip_pen
    dingでない場合)」ビットがセットされているとき、cl
    ip_pendingビットが真でない限り、マイクロ命令実行の流れはインラインで継続しない。 その代わりに、次のような事象のシーケンスが起こる。 free_Oビットがセットされると、Oレジスタファイルにおいて1つの線引きパケットが完了していることを指示する信号が出力回路1
    45へ送信される。 その後、出力回路145はその線引きパケットを線引きプロセッサ50〜54へ同報通信する。 入力回路141のIバンクが割当てられていなければ、need_Iをセットすべきである。 新たな入力バッファが利用可能になるまで、制御シーケンサは停止する。 新たなIバンクが利用可能であるときには、IレジスタI
    0の下位の5ビット、7ビット又は9ビットを新たな入力のメッセージ名として使用し、CS49に対する絶対アドレスへと形成する。 その絶対アドレスにおける命令を取り出し、復号し、ディスパッチする。 その後、適切なメッセージサブルーチンの第1の命令から始めて、正規の命令処理を再開する。

    【0103】現在再フォーマットした頂点パケットが線引きパケットを生成しない場合、先に説明した「free_
    O」ビットではなく、「ヌル出力」ビットをセットする。 現在再フォーマットした頂点パケットは全てのジオメトリ形状がクリッピングで除去されている、又は後方への向きである等の理由によって線引きパケットを生成しないことになるであろう。 以上の明細書の中では本発明をその特定の実施例に関連して説明したが、特許請求の範囲に記載されている本発明のより広い趣旨から逸脱せずに本発明について様々な変形や変更を実施しうることは明白であろう。 従って、明細書及び図面は限定的ではなく、例示としてみなされるべきである。

    【図面の簡単な説明】

    【図1】 ホストプロセッサと、メモリサブシステムと、グラフィックスアクセラレータと、表示装置とを含むコンピュータシステムのブロック線図。

    【図2】 コマンドプリプロセッサと、1組の浮動小数点プロセッサと、1組の線引きプロセッサと、フレームバッファと、ポストプロセッサと、ランダムアクセスメモリ/デジタル/アナログ変換器(RAMDAC)から構成されているグラフィックスアクセラレータのブロック線図。

    【図3】 制御記憶装置(CS)と、入力回路と、出力回路と、レジスタファイルと、1組の機能単位と、制御回路と、SRAMインタフェース回路とを含む浮動小数点プロセッサセクションのブロック線図。

    【図4】 機能単位と、3つのソースバス(Aバス、B
    バス及びCバス)及び1つの宛先バス(Dバス)から構成される浮動小数点プロセッサに関わるデータ経路とを示す図。

    【図5】 入力回路のIレジスタと、出力回路のOレジスタと、レジスタファイルのRレジスタ及びPレジスタとのレジスタマッピングを示す図。

    【図6】 一実施例の浮動小数点プロセッサに関わるマイクロコード命令フォーマットを示す図。

    【図7】 1つのポイントを1つ又は2つのクリップ平面と比較し且つその比較からの1つ又は2つの結果ビットをclip_bits レジスタへシフトするclip_test マイクロ命令のフォーマットを示す図。

    【図8】 1つのポイントを1つ又は2つのクリップ平面と比較し且つその比較からの1つ又は2つの結果ビットをclip_bits レジスタへシフトするclip_test マイクロ命令のフォーマットを示す図。

    【図9】 浮動小数点プロセッサで実現される単項FA
    LUマイクロ命令のフォーマットを示す図。

    【図10】 浮動小数点プロセッサで実現される単項F
    ALUマイクロ命令のフォーマットを示す図。

    【図11】 Bバスの内容について浮動小数点逆数演算を実行する浮動小数点逆数マイクロ命令のフォーマットを示す図。

    【図12】 ブロックロードマイクロ命令のフォーマットと、ブロックロードマイクロ命令のRS値及びRE値のPレジスタ、Rレジスタ及びOレジスタへのマッピングとを示す図。

    【図13】 ブロックロードマイクロ命令のフォーマットと、ブロックロードマイクロ命令のRS値及びRE値のPレジスタ、Rレジスタ及びOレジスタへのマッピングとを示す図。

    【図14】 ブロック記憶マイクロ命令のフォーマットと、ブロック記憶マイクロ命令のRS値及びRE値のP
    レジスタ、Rレジスタ及びOレジスタへのマッピングとを示す図。

    【図15】 ブロック記憶マイクロ命令のフォーマットと、ブロック記憶マイクロ命令のRS値及びRE値のP
    レジスタ、Rレジスタ及びOレジスタへのマッピングとを示す図。

    【図16】 浮動小数点プロセッサで実現され、一般に発生する条件に関わる条件及び組合わせの個別試験を実行する特殊化ジオメトリ分岐マイクロ命令のフォーマットを示す図。

    【図17】 浮動小数点プロセッサで実現され、一般に発生する条件に関わる条件及び組合わせの個別試験を実行する特殊化ジオメトリ分岐マイクロ命令のフォーマットを示す図。

    【図18】 一連の特殊条件ビットを記憶する状態ビットレジスタを示す図。

    【図19】 起こりうる全てのy座標順序付けに対して状態ビットレジスタのswap_rr フィールドに記憶される頂点比較分類結果を示す図。

    【図20】 swap_rr フィールドの内容に対応するグループ1〜3のRレジスタの再マッピングを示す図。

    【図21】 クリップビットレジスタの編成と、clip_t
    est 命令が実行されるときに起こるシフト動作の動きとを示す図。

    【図22】 クリップビットレジスタの編成と、clip_t
    est 命令が実行されるときに起こるシフト動作の動きとを示す図。

    【図23】 クリップビットレジスタの編成と、clip_t
    est 命令が実行されるときに起こるシフト動作の動きとを示す図。

    【図24】 クリップビットレジスタの編成と、clip_t
    est 命令が実行されるときに起こるシフト動作の動きとを示す図。

    【図25】 state_bit レジスタの選択されたビットを更新する状態ビット変更マイクロ命令を示す図。

    【図26】 state_bit レジスタの選択されたビットを更新するを状態ビット変更マイクロ命令を示す図。

    【図27】 動的結果から非レジスタファイルレジスタをロードする雑レジスタロードマイクロ命令を示す図。

    【図28】 動的結果から非レジスタファイルレジスタをロードする雑レジスタロードマイクロ命令を示す図。

    【図29】 state_bit レジスタの選択されたビットを更新し且ついくつかの制御アクションを開始させる制御ビット・モードビット変更マイクロ命令を示す図。

    【図30】 state_bit レジスタの選択されたビットを更新し且ついくつかの制御アクションを開始させる制御ビット・モードビット変更マイクロ命令を示す図。

    【符号の説明】

    20…ホストプロセッサ、22…メモリサブシステム、
    24…グラフィックスアクセラレータ、26…表示装置、28…ホストバス、30…コマンドプリプロセッサ、40〜43…浮動小数点プロセッサ、50〜54…
    線引きプロセッサ、61〜65…VRAMインタリーブバンク、70…ポストプロセッサ、72…ランダムアクセスメモリ/デジタル/アナログ変換器、80…線引きコマンドバス、82…浮動小数点コマンドバス、100
    …フレームバッファ、141…入力回路、142…レジスタファイル、143…機能単位、144…制御回路、
    145…出力回路、146…SRAMインタフェース回路、147…制御記憶装置アドレスバス、148…制御記憶装置データバス、149…制御記憶装置、200…
    浮動小数点乗算器、202…逆数回路、204…整数演算論理装置、206…整数演算論理装置、220…Aバス、222…Bバス、224…Cバス、226…Dバス、230…マルチプレクサ。

    高效检索全球专利

    专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

    我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

    申请试用

    分析报告

    专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

    申请试用

    QQ群二维码
    意见反馈