JP2002536763A - 命令セット構造の比較拡張を有するプロセッサ - Google Patents

命令セット構造の比較拡張を有するプロセッサ

Info

Publication number
JP2002536763A
JP2002536763A JP2000598932A JP2000598932A JP2002536763A JP 2002536763 A JP2002536763 A JP 2002536763A JP 2000598932 A JP2000598932 A JP 2000598932A JP 2000598932 A JP2000598932 A JP 2000598932A JP 2002536763 A JP2002536763 A JP 2002536763A
Authority
JP
Japan
Prior art keywords
instruction
bits
processor
instructions
bit
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Withdrawn
Application number
JP2000598932A
Other languages
English (en)
Inventor
ラディカ ザッカス,
ジー. マイケル ウラー,
ユン−ワイ ホー,
シャンドレー ビー. ハレル,
Original Assignee
エムアイピーエス テクノロジーズ, インコーポレイテッド
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US09/364,786 external-priority patent/US7242414B1/en
Priority claimed from US09/364,789 external-priority patent/US6732259B1/en
Application filed by エムアイピーエス テクノロジーズ, インコーポレイテッド filed Critical エムアイピーエス テクノロジーズ, インコーポレイテッド
Publication of JP2002536763A publication Critical patent/JP2002536763A/ja
Withdrawn legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • G06F9/30014Arithmetic instructions with variable precision
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30021Compare instructions, e.g. Greater-Than, Equal-To, MINMAX
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30094Condition code generation, e.g. Carry, Zero flag
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Advance Control (AREA)
  • Processing Or Creating Images (AREA)
  • Image Processing (AREA)
  • Image Generation (AREA)

Abstract

(57)【要約】 高性能浮動小数点操作を組み込む、命令セット構造(320)の比較拡張および条件付きブランチ拡張(630)プロセッサ。命令セット構造(320)は、単精度および倍精度データフォーマット、ならびに一対のオペランドの2つの同時操作を可能にするペアードシングルデータフォーマットを含む、様々なデータフォーマットを組み込む。比較拡張は、対の32ビット固定点整数と対の一重浮動小数点フォーマットとの間の浮動小数点数および変換の大きさの比較に向けられた命令を含む。条件付きブランチ拡張(630)は、例えば、2つの条件コード(635)のうちのいずれか1つが偽または真である場合、3つの条件コード(630)のうちのいずれかが偽または真である場合、または、4つの条件コード(630)のうちのいずれか1つが偽または真である場合、分岐に向けられる命令を含む。

Description

【発明の詳細な説明】
【0001】 (発明の分野) 本発明は、コンピュータ処理の分野に関する。さらに詳細には、本発明は、3
次元グラフィックスジオメトリ処理等のデータ処理に集積回路により利用される
命令に関する。
【0002】 (関連技術) コンピュータ生成グラフィックスデザインは、概してコンピュータシステム上
のグラフィックスプログラムを介して実行される命令から成る。命令はコンピュ
ータシステムプロセッサによって認識され、プロセッサに命じて、3次元ディス
プレイを生成するための特定の計算および動作を実行させる。プロセッサによっ
て認識される命令セットは上記プロセッサの命令セットを構成する。
【0003】 コンピュータ生成グラフィックスデザインは、データが流れるパイプラインと
して描かれ得る。上記パイプラインでは、データが生成され、表示される画像を
規定するように使用される。パイプラインに沿う様々な点で、様々な計算および
動作が、グラフィックスデザイナーによって特定され、従ってデータは変更され
る。
【0004】 パイプラインの初期段階において、所望の画像のフレームは、当該分野で「プ
リミティブ」または「グラフィックスプリミティブ」と呼ばれる、線およびポリ
ゴン等のジオメトリックシェイプを用いて、形成される。画像の頂点の導出およ
びアニメーションを提供する頂点の操作には、ディスプレイ画面の2次元ワール
ドの位置に設計される3次元ワールドを投影するために膨大なジオメトリックな
計算を実行することが必要となる。
【0005】 次いで、プリミティブは、「フラグメント」にアセンブリ化され、これらのフ
ラグメントは、色、遠近感、およびテクスチュア等の属性が割り当てられる。画
像の質を向上させるために、ライティング、フォッグ、および陰影等の効果が付
加され、アンチエリアシングおよびブレンディング関数(functions)
が用いられ、画像をより滑らかで、より現実感のあるものにする。最終段階で、
フラグメントおよびそれらに関連する属性は組み合わされ、ピクセルとしてフレ
ームバッファに保存される。ピクセル値は、フレームバッファから読み出され、
コンピュータ画面に画像を描くように用いられる。
【0006】 色、深さ、テクスチュアリング(texturing)、ライティング等(例
えば、画像の作成)は、まとめてレンダリングとして公知である。入力ジオメト
リックプリミティブからピクセル値を判定する特定のプロセスは、ラスター化と
して公知である。
【0007】 グラフィックスデザインプロセスは、データが流れるグラフィックパイプライ
ンを逐次的に形成するように接続するジオメトリエンジンおよびラスター化エン
ジンを含むコンピュータシステム構築を利用して、従来技術で実行される。ジオ
メトリエンジンは、上記のグラフィカルデザインプロセスの初期段階を実行する
プロセッサである。ラスター化エンジンは、ラスター化としてまとめて識別され
る、上記のプロセスを実行する個別のプロセッサである。グラフィックスパイプ
ラインでは、ジオメトリエンジンがラスター化エンジンに先行して、実行される
ので、ラスター化エンジンでは、データを処理し得る割合(rate)は、ジオ
メトリエンジンが計算を実行し、結果をラスター化エンジンに送り得る割合によ
って制限される。従って、ジオメトリエンジンはグラフィックスパイプラインの
ボトルネックにならないようにラスター化エンジンの速度に匹敵する速度で計算
を実行し得るジオメトリエンジンを有することが望ましい。
【0008】 しかし、従来技術の問題は、従来技術のラスター化エンジンは匹敵するジオメ
トリエンジンより速度が速く、ジオメトリエンジンはグラフィックスパイプライ
ンの制限要素になってきたことである。結局、グラフィックスプロセスが実行さ
れ得る速度は、向上したジオメトリエンジンで達成され得る速度より遅く、レン
ダリングされ得る画面の複雑さを制限している。
【0009】 上記の問題の従来の解決策の1つは、コンピュータ生成グラフィックスのジオ
メトリ計算専用の複雑なハードウェア、すなわち専用プロセッサ等の専用ジオメ
トリエンジンハードウェアのデザインおよび実行を必要とする。この従来の解決
策の問題は、そうした専用ハードウェアが、一般に高価であり得ることである。
この解決策の別の問題は、専用ハードウェアは、通常、ハードウェア用に特別に
デザインされる上記のコンピュータシステム上でのみ使用され得ることである。
さらに、専用プロセッサという点で、こうした特別なハードウェアは、コンパイ
ラを利用できない命令セットを、通常、利用する。従って、アセンブリ言語また
はマシーン言語レベルで、プログラミングされなければならない場合がある。こ
うした低級言語はマシーン依存性があり、それゆえ特別なプロセッサの知識が必
要とされる。そのような場合として、専用プロセッサは、向上したジオメトリ処
理等の問題に対するいくらか融通の利かない、厄介な解決策を与える。
【0010】 専用ジオメトリエンジンハードウェアの別の問題は、ハードウェアおよびハー
ドウェアを使用するソフトウェアで実行される明示的な同期機構である。同期は
、専用ハードウェア上で計算を始め、完了するポイントを通信するために必要と
される。
【0011】 別の従来技術による解決策は、(上記の専用プロセッサの代わりに)汎用プロ
セッサの命令セットを用いて、ジオメトリ計算を実行することである。汎用プロ
セッサは、その用語は本明細書中で用いられるように、コンパイラによって、部
分的にまたは全体的にサポートされる命令セットを有し、それゆえ高級言語(す
なわち、CおよびPascal等のマシーンに依存しない言語)を用いてある程
度までプログラム可能である。そのような言語は、上記の専用プロセッサの低級
言語よりプログラミングが簡単である。汎用性命令セットの一部はコンパイラに
サポートされ得ないが、利点はプログラミングプロセスの間にアセンブリコード
をコンパイラされたコードにリンクされ得る簡易性である。汎用プロセッサは、
様々なアプリケーション用にデザインされているが、実用性の範囲は狭くなり得
る。さらに、ある程度まで、所与のアプリケーションに備わってる汎用プロセッ
サは、ジオメトリ計算に加えて、他のタスクをサポートする。次いで、ジオメト
リ計算と上記の他のタスクの間の同期は、プロセッサプログラミングによって暗
黙の内に解決される。
【0012】 この解決策での問題は、しかし、多くの命令セットは、コンピュータ生成グラ
フィックスに必要な複雑な計算をすばやく実行するには十分に強力でないことで
ある。このように、従来技術は、通常、動作または機能を特定し実行するような
いくつかの命令を有するので、問題がある。一般に、専門的な命令が多ければそ
れだけ、その動作または機能を特定し、実行するには時間がかかる。このうよう
に、ジオメトリ計算は、従来技術に用いられる命令の数によって遅くなる。それ
ゆえ、命令の数を減らすことが望ましく、それによってジオメトリエンジンのジ
オメトリ計算速度が上がる。
【0013】 従って、プロセッサ(好適には、汎用プロセッサ)が、グラフィックスデザイ
ンプロセスに関するジオメトリ計算を実行し得る速度を上げ得るシステムおよび
/または方法は所望される。上記の課題を達成し得、様々なタイプのプロセッサ
およびプロセッサコアを用いてコンピュータシステム内で実行され得るコストパ
フォーマンスの良い解決策もまた提供し得るシステムおよび/または方法はさら
に所望される。本発明は、上記の課題に対して新しい解決を提供する。
【0014】 本発明の上記および他の利点は、様々な図面に図示される次の好適な実施形態
の詳細な説明を読めば、当業者には明らかである。
【0015】 (発明の要旨) 本発明に従って、プロセッサがグラフィックスデザインプロセスについてのジ
オメトリ計算を含む様々な動作を実行し得る速度を上げ得る同一のシステムおよ
び方法は、提供される。このシステムおよび方法は、上記の課題を達成し得、様
々なタイプのプロセッサおよびプロセッサコアを用いるコンピュータシステム内
で実行され得るコストパフォーマンスの良い解決策となり得る。このシステムお
よび方法は、所与の動作(例えば、ジオメトリ)を特定し、実行するために必要
な命令の数を減らし得、それによって、プロセッサの動作速度を上げることを容
易にし得る。
【0016】 本発明の好適な実施形態に従って、汎用プロセッサ上で3次元グラフィックス
ジオメトリ処理性能を向上させるようにデザインされる高性能の浮動小数点動作
を組み込む汎用性命令セット構築に対するアプリケーション専用拡張は、提供さ
れる。拡張に含まれる命令は、単精度、倍精度およびペアードシングルデータフ
ォーマット(paired single data formats)を含む
多様なデータフォーマットを使用する。ペアードシングルデータフォーマットは
、対のオペランドに関する2つ同時動作を提供する。拡張に含まれる命令はまた
、3次元グラフィックス処理に関連のない状況でも使用され得る。さらに、別の
実施形態において、上記の命令は、命令セット構築についての拡張よりむしろ命
令セット構築自体の一部として定義され得る。上記の命令は、ハードウェア、ソ
フトウェアまたはハードウェアとソフトウェアの組み合せで実行され得る。
【0017】 命令セット構築についての拡張は、ジオメトリ計算を実行するために必要な命
令の数を減らし得る。結果として、プロセッサはラスター化エンジンの速度に近
い速度でジオメトリ計算を実行し得、プロセッサはグラフィックスパイプライン
のボトルネックとなり得ない。
【0018】 1実施形態において、命令セット構築についての拡張は、MIPSベースの命
令セット構築に関する機能を実行する浮動小数点命令セットとして実行される。
この実施形態において、浮動小数点ユニットを含むプロセッサは、浮動小数点命
令を実行するジオメトリ計算を実行する。
【0019】 1実施形態において、コンピュータグラフィックス画像の頂点は座標で表示さ
れる。座標は変換される。浮動点の大きさ比較命令は、変換される座標の少なく
とも一部分と特定の表示量(view volume)(例えば、クリップテス
ト)の複数の端を表示する値との間の大きさの比較を実行するように用いられ、
少なくとも3つの表示量の比較結果が得られる。この実施形態の1つの局面にお
いて、浮動点の大きさ比較命令は、CABS命令である。
【0020】 1実施形態において、条件コード入力は1つ以上の特定の状態に対して設定さ
れ、大きさ比較の結果を示す。比較条件は、浮動点の大きさ比較命令で特定され
る。その条件コードビットの1つは、関連比較条件が真である場合、真を示し、
関連比較条件が偽である場合、偽を示すセットである。
【0021】 1実施形態において、第1の変換命令は、固定点値を浮動点値に変換するため
に用いられる。この実施形態の1局面において、第1の変換命令は、CVT.P
S.PW命令である。
【0022】 1実施形態において、第2の変換命令は、浮動点値を固定点値に変換するため
に用いられる。この実施形態の1局面において、第2の変換命令はCVT.PW
.PS命令である。
【0023】 1実施形態において、汎用プロセッサおよびメモリは、複数の浮動点値を比較
するように用いられる。第1の命令は、メモリに保存される。第1の命令は、複
数のオペランドについて動作するようにフォーマットされる。第1の命令は、汎
用プロセッサにデスパッチされ、実行される。プロセッサは、複数の大きさ比較
動作を実行するように並行に複数のオペランドについて動作する。1実施形態に
おいて、各複数のビットは、複数の大きさ比較動作の結果を示すように特定の状
態に、第1の命令によって設定される。この実施形態において、第1の命令によ
って設定される複数のビットは、プリミティブが少なくとも1つの表示量の1端
に交差するかどうかを示す。
【0024】 1実施形態において、プロセッサは、所与の表示量の少なくとも3つの表示量
端をテストする。単一の命令は、実行ユニットにデスパッチされる。単一命令は
、複数のオペランドについて動作するようにフォーマットされる。複数のオペラ
ンドは実行ユニットに対して提供される。複数のオペランドは、所与の表示量の
、複数の正規に配置される表示量端を表示する。単一命令が実行され、実行ユニ
ットは複数の大きさ比較動作を複数のオペランドと並行に実行する。
【0025】 1実施形態において、コンピュータプログラム製品は、コンピュータ読み出し
可能媒体を含む。コンピュータ読み出し可能媒体はその中に複数の命令を保存す
る。第1の命令によって、汎用プロセッサは、第1の複数のオペランドについて
の複数の大きさ比較動作を並行に実行し得、複数の大きさ比較動作の結果を示す
1つ以上の特定の状態に対する複数のビットを設定し得る。
【0026】 1実施形態において、コンピュータグラフィックス画像の頂点は、座標で表示
される。座標は変換され、変換された座標は、特定の表示量の端を表示する値と
比較される。条件コードビットは、1つ以上の特定の状況に設定され、比較結果
を示し得る。条件分岐命令は、条件コードビットに基づいて実行される。
【0027】 1実施形態において、ブランチターゲットアドレスは計算され、ブランチター
ゲットアドレスにジャンプされる。ブランチターゲットアドレスの命令は、条件
コード状態(すなわち、1つ以上の条件コードビットの状態)に依存して実行さ
れる。
【0028】 1実施形態において、汎用プロセッサによって、汎用プロセッサ内の記憶デバ
イスから複数のビットセットが1つ以上の状態に提供される。複数のビットは処
理され、組み合わせビットを生成する。条件分岐命令は、組み合せビットの状態
に基づいて実行される。
【0029】 1実施形態において、第1の命令および第2の命令は、汎用プロセッサに結合
されるメモリに保存される。第1の命令は汎用プロセッサで処理される。第1の
命令は、複数のオペランドについて動作し、複数の大きさ比較動作を並行に実行
する。複数のビットセットは、大きさ比較動作に応答して1つ以上の特定の状態
に設定される。第2の命令は、そのプロセッサ内で処理される。第2の命令は、
複数のビットに応答し、選択的に分岐動作を始める。
【0030】 1実施形態において、コンピュータプログラム製品は、コンピュータ読み出し
可能媒体を含む。コンピュータ読み出し可能媒体はその中に複数の命令を保存す
る。第1の命令によって、汎用プロセッサは複数の大きさ比較動作を並行に実行
し得、1つ以上の特定の状態に対する複数の結果ビットを設定し得る。第2の命
令によって、汎用プロセッサは、複数の結果ビットに応答してブランチターゲッ
トアドレスにジャンプし得る。
【0031】 本明細書に組み込まれ、その一部である添付された図面は、説明と共に本発明
の実施形態を示し、本発明の原理を説明するのに役に立つ。
【0032】 これから本発明の好適な実施形態について詳細に説明する。実施形態の例につ
いて、添付の図面と共に説明する。本発明を好適な実施形態と共に説明していく
が、これらの実施形態は、本発明をこれらの実施形態に限定するものとして意図
されていないことが理解される。反対に、本発明は、添付の特許請求範囲に規定
されるような本発明の意図および範囲内に含まれ得る変更物、改変物および均等
物を包含するものとして意図される。さらに、以下の本発明の好適な実施形態の
詳細な説明において、本発明を深く理解してもらうために多くの特定の詳細を説
明していくが、本発明はこれらの特定の詳細が無くとも実施可能であることは、
当業者にとって明らかである。他の場合において、周知の方法、プロシージャ、
構成要素および回路については、本発明の局面を不必要に不明瞭なものにしない
ために、詳細には説明していない。
【0033】 以下に述べる詳細な説明の特定の部分について、プロシージャ、ロジックブロ
ック、処理およびコンピュータメモリ内のデータビットに関する他の象徴的動作
の表現の観点から説明している。これらの説明および表現は、データ処理分野の
当業者同士が、自らの仕事の本質を最も効果的に伝えるために用いる手段である
。本出願において、プロシージャ、ロジックブロック、処理またはそのようなも
のは、所望の結果を得るための首尾一貫した一連の工程または命令として考えら
れる。これらの工程は、物理的数量を物理的に操作することを必要とする。これ
らの数量は通常、格納、転送、結合、比較および他の場合にコンピュータシステ
ムにおける操作が可能な電気信号または磁気信号の形態をとる(ただし、必ずし
もそうではない)。便宜上、これらの信号は、主に慣用上の理由のために、トラ
ンザクション、ビット、値、エレメント、記号、文字、フラグメント、ピクセル
またはそのようなものと呼ばれることが知られている。
【0034】 本明細書中において用いられるように、トランザクションは、データまたは他
の類似のメッセージ情報の送信あるいは受信を指す。トランザクションは、特定
のコンピュータシステムオペレーションと関連付けられたデータ(例えば、リク
エストまたはコマンド)の全てからなり得る。トランザクションはまた、特定の
オペレーションと関連付けられたデータブロックからもなり得る;例えば、デー
タの転送は、複数のデータブロックに分割可能であり、各ブロックを逐次的に転
送して、各ブロックでトランザクションを構成する。
【0035】 しかし、上記の用語および他の類似の用語は全て、適切な物理的数量と関連付
けられるべきものであり、便宜上これらの数量に適用される表示に過ぎないこと
を覚えておかれたい。明示的な記載がないかまたは他の場合に以下の記載から明
らかでない限り、本発明におけるいずれの箇所においても、「表現」、「変換」
、「実施」、「設定」、「実行」等の用語またはそのようなものを用いた説明は
、コンピュータシステムまたは類似の電子コンピューティングデバイスのアクシ
ョンおよびプロセスを指すものとして理解される。コンピュータシステムまたは
類似の電子コンピューティングデバイスは、コンピュータシステムメモリ、レジ
スタまたは他の類似の情報格納デバイス、伝送デバイスあるいは表示デバイス内
で物理的(電子的)数量として表されるデータを操作および変換する。本発明は
、他のコンピュータシステムの用途にも良好に適合する。
【0036】 本発明の好適な実施形態によれば、汎用命令セットアーキテクチャのジオメト
リアプリケーションに特有の拡張(extension)が、ハイパフォーマン
スの浮動小数点オペレーションを取り入れて提供される。この命令セットアーキ
テクチャは、多様なデータフォーマット(例えば、(ペアのオペラントで同時オ
ペレーションを可能にする)ペアードシングルデータフォーマット、単精度フォ
ーマット、および倍精度フォーマット)を組み込む。好適な実施形態において、
アプリケーションに特有の拡張は、汎用プロセッサ上でジオメトリオペレーショ
ンを行うために必要な命令の数を低減することができる。この拡張は概して、グ
ラフィックスパイプラインのジオメトリ部分において必要な命令の総数を低減す
ることができ、これにより、コンピュータによって生成されるグラフィックス設
計においてジオメトリ処理を加速することをイネーブルする。この拡張はまた、
ジオメトリオペレーション以外のアプリケーションにおいて必要な命令の総数を
低減するためにも使用可能である。
【0037】 (例示的なコンピュータシステムアーキテクチャ) 図1は、本発明の好適な実施形態を実現することが可能なグラフィックスコン
ピュータシステム100のブロック図である。コンピュータシステム100は、
複雑な画像または3次元画像を生成するための、コンピュータによって制御され
るグラフィックスシステムを例示したものである。コンピュータシステム100
は、バスまたは情報をやり取りするための他の通信手段110と、バス110と
結合された情報を処理するプロセッサ102とを含む。バス110は、1つ以上
のアドレスおよびデータバスを含み得るシステムバスである。本発明による他の
構成のコンピュータシステムも使用可能であることが理解される。さらに、プロ
セッサ102は、いずれの特定のメモリまたは入力/出力技術にも限定されない
ことも理解される。
【0038】 コンピュータシステム100はさらに、バス110に結合されたランダムアク
セスメモリ(RAM)または他の動的記憶デバイス101(メインメモリ101
)も含み、これらは、プロセッサ102によって実行される情報および命令を格
納する。メインメモリ101は、プロセッサ102による命令の実行の間、一時
的変数または他の中間情報を格納するためにも用いられる。データ格納デバイス
107は、バス110に結合され、情報および命令を格納するために用いられる
。さらに、信号入力/出力(I/O)通信デバイス108が、コンピュータシス
テム100を例えばネットワークに結合させるために用いられる。
【0039】 また、コンピュータシステム100は、バス110を介して英数字入力デバイ
ス122(例えば、英数字キーおよび他のキー)にも結合され得、この英数字入
力デバイス122は、情報選択結果およびコマンド選択結果をプロセッサ102
に通信するために用いられる。他の種類のユーザ入力デバイスとして、マウス1
23(または類似のデバイス(例えば、トラックボールまたはカーソル方向キー
))があり、これらは、方向情報およびコマンド選択結果をプロセッサ102に
通信し、表示デバイス121上でのカーソルの動きを制御するために用いられる
。この入力デバイスは典型的には、2本の軸(すなわち、第1の軸(例えば、x
軸)および第2の軸(例えば、y軸))において2段階の自由度を有し、これに
より、この入力デバイスが平面における位置を指定することが可能になる。
【0040】 さらに図1を参照して、バス110には、グラフィックスサブシステム111
も結合される。プロセッサ102は、グラフィックスサブシステム111に、グ
ラフィックスデータ(例えば、描画コマンド、座標頂点データならびにオブジェ
クトの幾何学的位置、色および表面パラメータに関連する他のデータ)を提供す
る。グラフィックスサブシステム111は一般的には、グラフィカルデータを処
理し、そのグラフィカルデータを画面座標システムに変換し、基本形状(例えば
、点、線、多角形およびメッシュ)に基づいてピクセルデータ(例えば、色、陰
影、テクスチャー)を生成し、ブレンド、アンチエイリアース化および他の機能
を行う。コンピュータシステム100の1つの実施形態において、プロセッサ1
02においてジオメトリ計算を行い、別の実施形態において、グラフィックスサ
ブシステム111においてジオメトリ計算を行う。本発明は、上記の実施形態ま
たは記載されていないコンピュータシステム100の他の実施形態のいずれにお
いても実施可能であることが理解される。その結果得られたデータを、フレーム
バッファ130内に格納する。表示サブシステム(図示せず)は、フレームバッ
ファ130を読み出し、表示デバイス121上の画像を表示する。
【0041】 (例示的なプロセッサアーキテクチャ) 図2Aは、以下に説明するような適切な改変を行った後に本発明を実施するコ
ンピュータシステム100(図1)による使用が可能な汎用プロセッサの1つの
実施形態のブロック図である。プロセッサ102aおよびその機能の詳細な例は
、「MIPS Microprocessor R4000 User's M
anual」(第2版、1994、MountainView、CAのMIPS
Technologies,Inc.)に見受けられる。プロセッサ102a
は、拡張が以下の命令セットアーキテクチャに命令するハードウェア、ソフトウ
ェア、および/またはファームウェア(すなわち、マイクロコード)の改変によ
って、本発明の実施用に適切に作製され得る。このような改変は、以下の説明を
鑑みれば、当業者にとって明らかである。他の市販のプロセッサコンフィギュレ
ーション(MIPSを基本とするものおよびMIPSを基本としないもの両方)
が、本発明に従い、ハードウェア、ソフトウェア、および/またはファームウェ
ア(すなわち、マイクロコード)の改変を伴って使用可能であることが理解され
る。
【0042】 プロセッサ102aは、中央処理装置(CPU)230ならびにコプロセッサ
CP0220およびFPU240を含む。CP0220は、プロセッサチップに
組み込まれ、バーチャルメモリシステムおよび例外処理をサポートする。CP0
220はまた、キャッシュサブシステムも制御し、診断制御およびエラー回復設
備も提供する。CP0220の他の実施形態は、特定のハードウェアインプリメ
ンテーションに応じて、他の機能を行い得る。
【0043】 FPU240は、やはりプロセッサチップに組み込まれた浮動小数点コプロセ
ッサである。FPU240は、CPU230命令セットを拡張して、算術演算を
浮動小数点値で行う。FPU240は、2つの別個のレジスタ(すなわち、汎用
レジスタおよび制御レジスタ)を含むFPUレジスタ241を含む。
【0044】 これらの汎用レジスタは、浮動小数点レジスタ(FPR)と呼ばれ、FPU2
40と残りのプロセッサ102aとの間でバイナリデータを転送するために用い
られる。これらの汎用レジスタはまた、フォーマットされたオペランド値を保持
するためにも用いられる。好適な実施形態において、各汎用レジスタは64ビッ
ト幅である。
【0045】 これらの制御レジスタは、FPU240の識別および制御を行うために用いら
れる。制御レジスタは、浮動小数点制御/ステータスレジスタ(FCSR)(図
4を参照)を含む。この実施形態において、各制御レジスタは32ビット幅であ
る。
【0046】 図2Bは、本発明を実施するコンピュータシステム100(図1)による使用
が可能な汎用プロセッサの別の実施形態を示す。プロセッサ102bは、例えば
、命令フェッチユニット262と、メモリ管理ユニット264と、ロード格納ユ
ニット266と、コンピュータシステム100のメモリユニットとの間でバスを
110を介して行なわれるトランザクションを処理するバスインターフェースユ
ニット260を含む。
【0047】 メモリ管理ユニット264は、命令フェッチユニット262およびロード格納
ユニット266のためのアドレス翻訳を処理する。命令フェッチユニット262
の場合、この実施形態において、命令キャッシュがミスした場合のみにアドレス
翻訳が必要となる。この実施形態において、命令キャッシュ(図示せず)は、命
令フェッチユニット262内に配置される。メモリ管理ユニット264は、命令
フェッチユニット262から命令キャッシュミスリクエストを受け取り、アドレ
ス翻訳を終了し、そのミスリクエストを、バスインターフェースユニット260
に転送する。メインメモリ101(図1)は、このリクエストにサービスするた
めに用いられ得、命令フェッチユニット262を介して命令キャッシュを再補充
するために必要な命令をバス110を介して提供する。ロード格納ユニット26
6の場合、この実施形態において、メモリ管理ユニット264は、各データキャ
ッシュアクセスのためのアドレス翻訳を終了する。
【0048】 ロード格納ユニット266は、メモリトランザクションおよびデータキャッシ
ュ管理に関連する命令を全て処理する。ロード格納ユニット266は、命令発送
ユニット272からのロード/格納命令と、整数実行ユニット274からのロー
ド/格納アドレスと、整数実行ユニット274および浮動小数点ユニット270
からの格納データと、メモリ管理ユニット264からのアドレス翻訳情報と、バ
スインターフェースユニット260からのキャッシュ再補充データとを受け取る
。この実施形態において、ロード格納ユニット266は、物理的にインデックス
付けされかつ物理的にタグ付けされた内部データキャッシュ(図示せず)を有す
る。
【0049】 命令フェッチユニット262は、命令発送ユニット272に命令ストリームを
提供する。この実施形態において、命令フェッチユニット262は、1サイクル
毎に、バーチャルにアドレシングされ、かつバーチャルにタグ付けされた内部命
令キャッシュ(図示せず)から、4つの命令からなるアドレスがアラインされた
グループをフェッチする。
【0050】 命令発送ユニット272は、2つの実行ユニット270および274とインタ
ーフェースをとる。より詳細には、命令発送ユニット272は、2つの整数実行
パイプライン(整数実行ユニット274)と、1つの浮動小数点実行パイプライ
ン(浮動小数点ユニット270)とを制御する。命令発送ユニット272は、命
令フェッチユニット262からの命令を復号し、復号化された命令を実行パイプ
ラインに発送し、発送された命令を追跡する。この実施形態において、命令発送
ユニット272は、命令フェッチユニット262から、4つまでの有効命令から
なるアドレスがアラインされたグループを受け取り、2−エントリバッファ(図
示せず)を通じて、1つのエントリについて4つの命令を実施する。この実施形
態において、命令発送ユニット272は、2−エントリバッファからの命令を1
サイクルについて2つまで復号し、次いで、復号した命令を、プログラムの順番
で整数実行ユニット274または浮動小数点ユニット270に発送する。命令発
送ユニット272は、発送された命令を、パイプキュー(図示せず)および未解
決(outstanding)ロードキュー(図示せず)において追跡し続ける
。このパイプキューは、実行パイプラインに発送された各命令に関するエントリ
を含み、この未解決ロードキューは、ロード格納ユニット266中のデータキャ
ッシュにおいて失われたロードトランザクションに関するエントリを含む。
【0051】 この実施形態において、整数実行ユニット274は、従来からの整数命令(例
えば、加算/減算命令、シフト命令、ロジック命令、ロード/格納命令、ブラン
チ命令および整数乗算/除算命令)を実行する。整数実行ユニット274は、2
つの別個の実行パイプラインを含み、2つまでの命令を同時に実行することがで
きる。
【0052】 浮動小数点ユニット(FPU)270は、本発明の実施形態に従って、命令セ
ットアーキテクチャに対し、ジオメトリアプリケーションに特有の拡張を実行す
る。この実施形態において、FPU270は、IEEEシングルフォーマットお
よび倍精度フォーマットと、IEEE丸めモードと、ペアードシングルデータフ
ォーマット(図5を参照)と、デノーマライズ化入力およびデノーマライズ化出
力とに、完全なハードウェアサポートを提供する。1つの実施形態において、F
PU270は、単精度フォーマットおよびペアードシングルフォーマットについ
て最適化される。1つの実施形態において、FPU270は、1クロックサイク
ルについて、以下の浮動小数点命令のうち任意の命令を実行することができる:
ADDR、MULR、RECIP2、RSQRT2、CVT.PS.PW、CV
T.PW.PSおよびCABS。同じ実施形態において、整数実行ユニット28
4は、1サイクルにつき、ブランチ命令BClANYxx(xx=2F、2T、
4Fまたは4T)のうち任意の命令を実行することができる。
【0053】 この実施形態において、浮動小数点ユニット(FPU)270は、プロセッサ
102bとインターフェースをとりかつプロセッサ102b内に配置される独立
型の(self−contained)コプロセッサである。FPU270は、
命令発送およびインターフェースの完全性のために、命令発送ユニット272に
結合される。命令発送ユニット272は、FPU270に発送される各命令の状
態を追跡する。FPU270は、予想される例外および最終的例外を、命令発送
ユニット272に報告する。
【0054】 ここで図2Cを参照して、FPU270は、汎用レジスタすなわち浮動小数点
レジスタ(FPR)ファイル281を含み、この浮動小数点レジスタ(FPR)
ファイル281は、FPU270とプロセッサ102bとの間でバイナリデータ
を転送させる。FPU270命令は、レジスタトゥレジスタオペレーションであ
り、その命令オペランドは、FPR281中のデータを指す。FPU270はま
た、結果がFPR281に書き込まれるまで結果を実施する浮動小数点パイプフ
ァイル(PIP)282も含む。FPU270の残りの構成要素について、以下
に説明する。
【0055】 表1は、本発明の実施形態による、命令セットアーキテクチャに対するジオメ
トリアプリケーションに特有の拡張中に含まれる命令をリスト化したものである
。別の実施形態において、これらの命令の一部または全ては、拡張としてではな
く、命令セットアーキテクチャそのものの一部として規定され得る。これらの命
令に関係するさらなる情報を、図6A〜図6Mと共に提供する。
【0056】
【表1】 図2Cを参照して、ブランチ(すなわち、BCIANYxx)以外の表1中の
命令は、浮動小数点乗算器283、浮動小数点加算器284、浮動小数点除算/
平方根285、浮動小数点指数286および/または浮動小数点パイプファイル
282のうち1つ以上において実行される。後述するように、ブランチ命令は、
浮動小数点ユニット270と情報のやり取りを行うが、整数ユニット274にお
いて実行される。
【0057】 浮動小数点加算器284への入力は、浮動小数点乗算器283の出力によって
駆動される。なぜならば、浮動小数点乗算器283は、乗算オペレーションをバ
イパスするための効果的な経路を含むため、浮動小数点加算器284に向かう命
令は、浮動小数点乗算器283の入力に送られるからである。同様に、浮動小数
点除算/平方根285に向かう命令は、浮動小数点乗算器283を通じて経路が
決められる。
【0058】 浮動小数点乗算器283は、浮動小数点仮数乗算器であり、単精度乗算命令、
倍精度乗算命令およびペアードシングル乗算命令(例えば、表1のMULR)と
、乗算加算オペレーションの乗算部分とを実施する。浮動小数点乗算器283は
、浮動小数点パイプファイル282から2つのオペランド入力を受容する。浮動
小数点乗算器283の乗算アレー(580、図2D)は、2つの単精度乗算デー
タ経路として構成される;単精度オペレーションの場合、1つの経路のみが使用
され、ペアードシングルオペレーションの場合、(シングル命令ストリーム−乗
算データストリーム[SIMD]アーキテクチャオペレーションに従って)2つ
の経路両方が独立して使用され、;倍精度オペレーションの場合、これらの2つ
の単精度アレーは、互いにロジック結合(glue)され、従来の技術に従って
、アレーはダブルポンプされる(double−pumped)(すなわち、乗
算の前半半分を第1のサイクルにおいて行い、中間結果を別のパス用としてアレ
ーにフィードバックする)。浮動小数点乗算器283は、和桁上げ冗長フォーマ
ット(sum−carry redundant form)で正確な応答を生
成する。この和および桁上げは、桁上げ伝搬加算器(CPA582、図2D)に
おいて加算され、これにより、正確かつ丸められていない結果が得られる。丸め
情報は、従来の様式で収集され、浮動小数点加算器284に転送され、これによ
り、丸め結果が得られる。図6Bと共に、さらなる情報を提供する。
【0059】 浮動小数点加算器284は、浮動小数点仮数加算器であり、単精度加算命令、
倍精度加算命令およびペアードシングル浮動小数点加算命令(例えば、表1のA
DDR)ならびに減算命令と、複雑な命令(例えば、MADD(すなわち、後述
する浮動小数点乗算加算)の加算/減算部分とを実施する。浮動小数点加算器2
84は、2つのオペランド(すなわち、浮動小数点乗算器283からの中間結果
および浮動小数点パイプファイル282において実施された仮数)を受容する。
パフォーマンスを向上させるために、浮動小数点大きさを加算/減算するオペレ
ーションは、プリスケール加算器(PSA)583または大量キャンセル加算器
(MCA)584(図2D)のいずれかにより計算される。PSA583は、大
きさ加算を全て行い、オペランド指数間の差が2よりも大きい場合、大きさ減算
をしばしば行い、これにより、オペレーション後に正規化結果が大きくシフトさ
れる事態を回避する。オペランド指数間の差が2以下である場合、MCA584
は、大きさ減算をしばしば行い、これにより、オペレーション前にアラインメン
トがシフトされる事態を回避する。従って、最終的な正確な結果は、特にオペラ
ンド間の指数差に基づいて、PSA583またはMCA584のいずれかから選
択される。次いで、この結果は、浮動小数点パイプファイル282に返送される
。PSA583およびMCA584に関する選択基準については、上述した米国
特許出願第 号(弁理士受付番号第19427−97号)に詳細に記載され
ている。
【0060】 浮動小数点加算器284は様々な精度のオペランドを処理しなければならない
ため、このユニットは、2つの並列単精度データ経路として構成される。単精度
オペレーションの場合はこれらの経路のうち1つのみを用い、(SIMDアーキ
テクチャオペレーションによる)ペアードシングルオペレーションの場合には、
これらの2つの経路を個別に用い、倍精度オペレーションの場合、これら2つの
ユニットを(従来の様式で)互いにロジック結合(glue)して、2つの経路
両方を用いる。図6Aおよび図8と共に、さらなる情報を提供する。
【0061】 浮動小数点除算/平方根285は、桁単位(digit−by−digit)
技術(例えば、基数−2SRTまたは基数−4SRT)を用いて、除算命令およ
び平方根命令の仮数部分を実施する。浮動小数点指数286は、浮動小数点オペ
レーション結果の指数を判定する。浮動小数点指数286は、オペランドの指数
に基づいて指数の結果の概要について判定し、仮数計算ユニット(例えば、浮動
小数点加算器284および浮動小数点乗算器283)と相互作用して、正規化シ
フトおよび丸めオペレーションに基づいて指数値を調整する様式を判定する。指
数ユニット286は、2つの独立したデータ経路として構成される。ペアードシ
ングル命令の場合、(SIMDの場合のように)相互作用が不要な状態でこれら
のデータ経路の両方を用い、倍精度オペレーションまたは単精度オペレーション
の場合、1つの経路のみを用いる。
【0062】 浮動小数点制御ユニット287は、FPU270を識別し、制御するために用
いられる。この実施形態において、浮動小数点制御ユニット287は、浮動小数
点制御/ステータスレジスタ(FCSR)410(図4を参照)を含む。浮動小
数点命令は、命令発送ユニット272によって浮動小数点制御ユニット287に
送られる。浮動小数点制御ユニット287は、適切な一連のオペレーションを通
じてデータ経路に指示し、例外を識別および報告し、その結果得られた符号ビッ
トを計算し、FCSRの読み出しおよび更新を処理する。
【0063】 さらに図2Cを参照して、上記の表1に示すブランチ命令(例えば、BClA
NY2F、BClANY2T、BC1ANY4FおよびBC1ANY4T)は、
FCSR410(図4)中に保持される浮動小数点条件コードをテストし、従来
のブランチを行う(図6J〜6Mを参照して、ブランチ命令に関するさらなる情
報を提供する)。この実施形態において、命令発送ユニット272(図2B)は
、整数実行ユニット274にオペレーションコード(例えば、COP1および表
1からの指定命令ニーモニック;図6J〜6Mを参照)を発送して、プロセッサ
に特定のアクションを行うよう命令する。このオペレーションコードは、整数実
行ユニット274内の実行パイプラインの1つの中にあるブランチユニット(図
示せず)において復号される。このブランチユニットは、条件コードインデック
スおよびテストが行なわれる旨を示す通知を浮動小数点ユニット270に送る。
浮動小数点ユニット270は、条件コードをテストし、テスト結果を整数実行ユ
ニット274に返送する。整数実行ユニット274は、ブランチが取られた/ブ
ランチが取られていない通知を、命令フェッチユニット262(図2B)に送り
、命令フェッチユニット262は、そのブランチ通知に従い、適切な命令をフェ
ッチする。
【0064】 図2Dは、本発明のこの実施形態による、FPU270を通過するデータフロ
ーを示すブロック図である。このデータフローは、(システムクロックの第1の
フェーズによってトリガされる)ラッチ504と、(システムクロックの第2の
フェーズによってトリガされる)ラッチ506とを含む。図2Dの各ブロック中
に示す残りの上位構成要素は、当業者に周知の従来のFPU設計の構成要素を示
す。
【0065】 図2Dを参照して、データは、浮動小数点レジスタファイル281から開始し
て、レジスタ502(4つの読出しポートおよび2つの書込みポートを備える、
32−エントリ、64−ビットのレジスタファイル)を通過して、パイプファイ
ル282中のロジック508をアンパック/バイパスさせる。(ロードバス29
1およびレジスタファイル507からロジック508に直接データを流すことも
可能である。)このロジックは、オペランドを、上述した同時係属中の出願第
号(弁理士受付番号第1778.0060000号および第1778.00
80000号)に記載の「内部フォーマット」にアンパックする。このロジック
はまた、算術演算を必要としないオペランドの場合、バイパスオペレーションも
行う(すなわち、オペランドをファイル281に戻す)。算術演算が必要な場合
、データは、乗算器283および指数286に流される。
【0066】 指数286において、指数は、マルチプレクサ&CPA回路510において算
術結合され、例外予想オペレーション(例えば、アンダーフロー、オーバーフロ
ー)が、例外予想ロジック512において実施され、(仮数計算結果に基づいて
)指数調整ロジック514において指数が調整される。乗算器283において、
乗算アレー580において従来の技術(例えば、基数−4ブース修正アルゴリズ
ム)を用いてデータ処理が行なわれ、CPA582において出力が処理される。
同時に、除算/平方根ブロック285の除算/平方根ロジック516においても
データ処理が可能である。図2Dに示すように、この出力も、ラッチ506を通
じてCPA582に送られる。
【0067】 最後に、データは、浮動小数点加算器284へと送られ、上述した選択基準に
基づいて指数286によって制御されるマルチプレクサ518を通過する。デー
タは、周知の技術に従ってプリスケール加算器583または大量キャンセル加算
器584によって処理され、やはり指数286によって制御されるマルチプレク
サ519を通じて送られる。加算器583または584からの出力を用いて、指
数値を調整する。その後、加算器284からの仮数値および指数286からの指
数値を、パイプファイル282に返送し、パックロジック522を用いて、この
データを、(以下に規定するIEEE754に適合する)メモリフォーマットに
パックし、次いでレジスタファイル281に返送する。あるいは、データを、ロ
ジック508を通じてバイパスし、レジスタファイル524および格納バス29
2に送ることも可能である。
【0068】 FPU270および別の実施形態に関するさらなる説明について、上述した同
時係属中の出願第 号(弁理士受付番号第19427−89−1号、第19
427−97号、第1778.0060000号および第1778.00800
00号)に記載がある。
【0069】 (命令セットアーキテクチャに対するアプリケーションに特有の拡張) 図3は、本発明による、汎用命令セットアーキテクチャ(ISA)320の様
々なレベルおよびISA320とジオメトリアプリケーションに特有の拡張(A
SE)350との間の論理関係を示す。本明細書中に用いる用語ISAは、命令
セットおよび所与のプロセッサのサポートアーキテクチャの少なくとも一部分を
含む。ISA320およびジオメトリASE350は、プロセッサ(例えば、図
2Bのプロセッサ102b)上でインプリメントされる。好適には、ISA32
0は、汎用MIPS ISAによって実現される(すなわち、ISA I〜Vは
好適には、Mountain View、CAのMIPS Technolog
ies、Inc.から市販されているMIPS I〜MIPS Vに直接対応す
る)。MIPS I〜MIPS Vについて、「See MIPS Run」(
D.Sweetman著、Morgan Kaufman Publisher
s,Inc.,SanFrancisco(1999))に記載がある。MIP
S Vは、ペアードシングルデータフォーマット(図5を参照)を導入している
【0070】 図3を参照して、ISA320が5つのレベルを有するものとして図示されて
いる;すなわち、初期レベルまたはコアレベルに4つのエンハンスメントが施さ
れている。ISA I321は、プロセッサ102によりインプリメントされる
コア換算型(core reduced)命令セットコンピュータ(RISC)
アーキテクチャを示す。ISA II322およびISA III323は、I
SA I321に展開(例えば、64−ビット整数およびアドレスの導入)を施
したものを示す。
【0071】 ISA IV324は、一連のハイパフォーマンス浮動小数点オペレーション
(例えば、乗算/加算(例えば、MADD)、乗算(例えば、MUL)および加
算)を取り入れる。MADDおよびMULについて、図8および9と共にそれぞ
れ説明する。ISA IV324はまた、浮動小数点条件コードビット(7:0
)も浮動小数点制御/ステータスレジスタ中に取り入れる。ISA V325は
、ペアードシングルデータフォーマットを導入する。
【0072】 ジオメトリASE350は、一連の命令(すなわち、上記の表1の命令)を示
し、ISA320(特にISA IV324およびISA V325)と共に機
能して、コンピュータによって生成されるグラフィックス設計および他のアプリ
ケーションに関するジオメトリ計算の高速化を支援する。浮動小数点条件コード
、ペアードシングルフォーマットおよび命令セットについて以下にさらに詳述す
る。
【0073】 (例示的な浮動小数点制御/ステータスレジスタ) 図4を参照して、FPU270(図2B)の浮動小数点制御/ステータスレジ
スタ(FCSR)410の実施形態が図示されている。しかし、本発明によるレ
ジスタの他の実施形態も利用可能である点が理解される。FCSR410は、浮
動小数点制御/ステータスレジスタのISA Vフォーマットに対応する。FC
SR410中に示すフィールドを以下に定義する。
【0074】 FCC:8つの浮動小数点条件コード、7:0; FS:(デノーマライゼーションをフラッシュしてゼロにするために主に用い
られる)非IEEE754モードをイネーブルする(「IEEE754」は、A
NSI/IEEE規準754−1985(「バイナリ浮動小数点算術に関するI
EEE規準」)の略) 理由:浮動小数点エラーの理由を示す イネーブル:浮動小数点エラーイネーブルビット フラグ:浮動小数点エラーフラグビット RM:使用されるべき丸めモードを示す 浮動小数点条件コード(FCC)は、浮動小数点(FP)比較の結果(例えば
、後述するCABS命令の結果)を記録する8ビットで構成され、FP条件ブラ
ンチ(例えば、後述する命令BC1ANY2F、BC1ANY2T、BC1AN
Y4F、BC1ANY4T)についてテストされる。用いられるFCCビット(
単数または複数)は、比較命令またはブランチ命令において指定される。丸めモ
ード(RM)ビットは、殆どの浮動小数点オペレーション用に用いられる丸めモ
ードを示す(特定の丸めモードを用いるFP命令もある)。これらの丸めモード
は周知であり、以下のように識別される。
【0075】 0:RN−最近似値まで丸める 1:RZ−ゼロに向かって丸める 2:RP−無限からプラス方向に丸める 3:RM−無限からマイナス方向に丸める FCSR410の別の実施形態について、上述した同時係属出願第 号(
弁理士受付番号第19427−97号)に記載がある。この実施形態において、
さらなる制御ビット「FO」(MADD−フラッシュ−オーバーライドビット)
が、FCSRに提供される。ビットFSおよびFOが組み合わさると、FPU(
例えば、FPU270)が3つまでの異なるモード(すなわち、IEEE適合モ
ード、フラッシュトゥゼロモードおよびMADD−フラッシュ−オーバーライド
モード)において選択的に動作することが可能になる。
【0076】 (ペアードシングルデータフォーマット) 図5は、本発明によるペアードシングルデータタイプ520を示す。ペアード
シングル値として、64−ビット浮動小数点レジスタが翻訳(interpre
t)され、これにより、2つの単精度浮動小数点数Sのベクトルとなる。このペ
アードシングルフォーマットは本質的には、2つの並列のパイプラインを含むも
のとして見なされる。単精度フォーマットの場合、これらのパイプラインのうち
1つのみが動作する。ペアードシングルフォーマットの場合、これらのパイプラ
インの各々が(SIMDアーキテクチャの場合のように)個別のデータ上で並列
に動作する。
【0077】 ペアードシングルデータタイプ520は、一対のオペランドが1つのデータロ
ードオペレーションと共に検索されることを可能にする。さらに、ペアードシン
グルデータタイプ520は、一対のオペレーションがこれらのオペランド上で1
つの命令と共に行なわれることを可能にする。従って、ペアードシングルデータ
タイプ520を用いれば、ジオメトリエンジンのパフォーマンスを倍化すること
が可能となる。
【0078】 ペアードシングルオペレーションは、行儀の良いシングル−精度浮動小数点数
のベクトルを用いるコンピューティングアプリケーションをサポートするように
意図される。このようなアプリケーションの例としては、グラフィックスジオメ
トリアプリケーション、オーディオアプリケーション、ライティング(ligh
ting)アプリケーション、セイスミック(seismic)アプリケーショ
ンならびに汎用イメージングアプリケーションおよび信号処理等がある。
【0079】 (ジオメトリASE−算術命令) ここで図6A、6B、6C、6D、6Eおよび6Fを参照して、各図は、本発
明の1つの実施形態に従ってジオメトリASE350によってインプリメントさ
れる6つの算術命令を示す。これらの算術命令はそれぞれ、ADDR601、M
ULR602、RECIP1 603、RECIP2 604、RSQRT1
605およびRSQRT2 606として設計される。これらの命令の各々にお
いて、オペレーションコードを用いて(例えば、COP1を指定された命令(例
えば、ADDR.PS)と共に用いて)プロセッサに特定のアクションを行うよ
う命令する。COP1は、命令が浮動小数点命令であることを示すために用いら
れる。プロセッサ(例えば、図2Bのプロセッサ102b)は、COP1フィー
ルド(この実施形態の場合、6つの最上位ビット)を読み出し、命令が浮動小数
点命令であることを認識し、その命令をFPU270(図2B)に方向付ける。
次いで、FPU270は、その命令を指定するフィールド(この実施形態の場合
は6つの最下位ビット)を読み出す。
【0080】 各命令はまた、(1)フィールド「fs」および「ft」における入力データ
(または入力データの位置)と、(2)(フィールド「fd」における)命令に
よって指定されたオペレーションのアプリケーションから得られたデータの送信
先位置と、(3)フィールド「fmt;」中の入力データのフォーマット(例え
ば、ペアードシングル(「PS」)、単精度(「シングル」または「S」)およ
び倍精度(「ダブル」または「D」)とを指定する。本発明に従って他のデータ
フォーマットおよび2つを越える入力位置を用いることが可能であることが理解
される。この実施形態において、各命令は長さが32ビットである。図6A〜6
Fは、様々なデータフォーマット用の例示的な命令フォーマットを示す(各図の
「フォーマット」を参照のこと)。
【0081】 (ADDR) 図6Aを参照して、好適な実施形態において、ADDR601は、2つのペア
ードシングル浮動小数点(FP)値の「リダクション加算」を行う。ADDR6
01は、命令によって指定された格納部(例えば、プロセッサ上のメモリまたは
レジスタファイル(例えば、図2AのFPUレジスタ241および図2Cの浮動
小数点レジスタファイル281))から2つのデータ要素に対するインデックス
を取り、それらのインデックスに対してリダクション加算オペレーションを行う
。次いで、その結果を、命令の送信先インデックス中に指定された格納要素中に
格納する。この命令を、浮動小数点加算器284(図2C)において実行する。
【0082】 ADDR601は、レジスタ中のペアードシングル値を加算し得る様式に関し
てさらなる柔軟性を提供する。ADDR601は、ADDRによって提供される
同じ結果を達成するために今まで必要であったペアードシングル値上で動作する
処理工程を不要にする。ADDR601は、加算オペレーション用のフォーマッ
ト変換命令を不要にすることにより、命令数を低減する;例えば、本発明によれ
ば、ペアードシングル値を加算別のペアードシングル値に加算する際、ペアード
シングル値を一対の値に変換する必要はない。また、ADDR601は、加算オ
ペレーションを行う前に(例えば、ペアードシングル値を含む)レジスタのコン
テンツを別の1つのレジスタまたは複数のレジスタに移動させる必要もない。
【0083】 この実施形態において、ADDR601は、ペアードシングルフォーマットで
機能するように設計され、一対のオペランド上に2つの同時オペレーションを提
供する。ペアードシングルフォーマットの場合、ADDR601命令は、以下の
ように表される: fd.PL<−ft.PU+ft.PLおよび fd.PU<−fs.PU+fs.PL ここで、「fd」は、送信先レジスタを指定するインデックスであり、「ft
」および「fs」は、そのコンテンツがオペレーション用の入力データとして用
いられる浮動小数点レジスタセット中の2つのレジスタを指定する2つのインデ
ックスであり、記号「<−」は、この記号の右側の値がこの記号の左側に示され
る位置に割り当てられることを示すために用いられる。「PL」は、ペアードシ
ングルデータタイプフォーマットの値の下位値を示し、「PU」は、ペアードシ
ングルデータタイプフォーマットの値の上位値を示す。図7Aはこの計算をグラ
フィカルに示したものであり、この図について以下に説明する。ADDR601
は以下のフォーマット以外のデータセットフォーマットとも使用可能であること
が理解される;ペアードシングルフォーマット(例えば、クワッド−シングル(
すなわち、4つのシングル−精度浮動小数点数を持つベクトルとして翻訳される
128−ビット幅のデータ)、オクタル−シングル(すなわち、8つのシングル
−精度浮動小数点数を持つベクトルとして翻訳される256ビット幅のデータ)
、ペアード−ダブル(すなわち、2つのダブル−精度浮動小数点数を持つベクト
ルとして翻訳される128−ビット幅のデータ)、クワッド−ダブル(すなわち
、4つのダブル−精度浮動小数点数を持つベクトルとして翻訳される256−ビ
ット幅のデータ)等。クワッド−シングルフォーマットについて、図7Bと共に
さらに説明する。
【0084】 さらに図6Aを参照して、ftレジスタ中のペアードシングル値を共に加算し
、その結果を、送信先レジスタfdの下位ペアードシングル位置に入れる。同様
に、fsレジスタ中のペアードシングル値を共に加算し、その結果を、送信先レ
ジスタfdの上位ペアードシングル位置に入れる。以下は、ADDR601命令
を示すオペレーションのシーケンスである。
【0085】 Read FPR[ft] Read FPR[fs] Reduction Add Store result to FPR[fd] 別の実施形態において、データセットフォーマットは、2つよりも多いシング
ル−精度浮動小数点数を含む;例えば、データセットフォーマットは、2つのレ
ジスタ中に保持される4つの単精度浮動小数点値を含み得る。同様に、別の実施
形態において、2つよりも多いレジスタを命令フォーマットに対する対応する変
更と共に用いて、(各入力レジスタを指定する)ことが可能である。
【0086】 (MULR) 図6Bを参照して、好適な実施形態において、MULR602は、2つのペア
ードシングルFP値のオペレーションの「リダクション乗算」を行う。MULR
602は、命令によって指定される格納部(例えば、メモリまたはプロセッサ上
のレジスタファイル(例えば、図2AのFPUレジスタ241および図2Cの浮
動小数点レジスタファイル281)から2つのデータエレメントに対するインデ
ックスを取り、これらのインデックスに対してリダクション乗算オペレーション
を行う。この命令は、浮動小数点乗算器283(図2C)において実行される。
次いで、その結果は、当該命令の送信先インデックス中に指定された格納要素中
に格納される。
【0087】 MULR602は、レジスタ中のペアードシングル値を乗算し得る様式に関し
てさらなる柔軟性を提供する。MULR602は、MULRによって提供される
同じ結果を達成するために今まで必要であったペアードシングル値上で動作する
処理工程を不要にする。MULR602は、乗算オペレーション用のフォーマッ
ト変換命令を不要にすることにより、命令数を低減する;例えば、本発明によれ
ば、ペアードシングル値を乗算別のペアードシングル値に乗算する際、ペアード
シングル値を一対の値に変換する必要はない。また、MULR602は、乗算オ
ペレーションを行う前に(例えば、ペアードシングル値を含む)レジスタのコン
テンツを別の1つのレジスタまたは複数のレジスタに移動させる必要もない。
【0088】 この実施形態において、MULR602は、ペアードシングルフォーマットで
機能するよう設計され、一対のオペランド上に2つの同時オペレーションを提供
する;別の実施形態において、単精度フォーマットまたは倍精度浮動小数点フォ
ーマットも利用可能である。この命令は、以下のように表される: fd.PL<−ft.PU*ft.PLおよび fd.PU<−fs.PU*fs.PL ここで、用語の定義は上記の用語と同じである。以下において図7Aを参照す
る。MULR602は、クワッド−シングル、オクタル−シングル、ペアード−
ダブル、クワッド−ダブル等のペアードシングルフォーマット以外のデータセッ
トフォーマットとでも使用可能であることが理解される。クワッド−シングルフ
ォーマットについて、図7Bに関連してさらに説明する。
【0089】 さらに図6Bを参照して、ftレジスタ中のペアードシングル値を共に乗算し
、その結果を、送信先レジスタfdの下位ペアードシングル位置に入れる。同様
に、fsレジスタ中のペアードシングル値を共に乗算し、その結果を、送信先レ
ジスタfdの上位ペアードシングル位置に入れる。以下は、MULR602命令
を示すオペレーションのシーケンスである。
【0090】 Read FPR[ft] Read FPR[fs] Reduction Multiply Store result in FPR[fd] 上記結果を、無限の精度まで計算し、FCSR(例えば、図4のFCSR41
0)中に指定された現在の丸めモード(RM)に従って丸める。2つの別個の乗
算によって生成された例外条件を、共に「OR」する。
【0091】 別の実施形態において、データセットフォーマットは、2つよりも多いシング
ル−精度浮動小数点数を含む;例えば、データセットフォーマットは、2つのレ
ジスタ中に保持される4つの単精度浮動小数点値を含み得る。同様に、別の実施
形態において、2つよりも多いレジスタを命令フォーマットに対する対応する変
更と共に用いて、(各入力レジスタを指定する)ことが可能である。
【0092】 図7Aは、ペアードシングルデータフォーマットを用いたリダクション加算命
令(例えば、図6AのADDR601)およびリダクション乗算命令(例えば、
図6BのMULR602)のデータフローを示す。リダクション加算命令の場合
、ftレジスタ721中のペアードシングル値ft.PUおよびft.PLを共
に加算し、その結果を、送信先レジスタfd722の下位ペアードシングル位置
fd.PLに入れる。同様に、fsレジスタ720中のペアードシングル値fs
.PUおよびfs.PLを共に加算して、その結果を、送信先レジスタfd72
2の上位ペアードシングル位置fd.PUに入れる。リダクション乗算命令のデ
ータフローは、リダクション加算命令のものと同じである。
【0093】 図7Bは、クワッド−シングルデータフォーマットを用いたリダクション加算
命令(例えば、図6AのADDR601)およびリダクション乗算命令(例えば
、図6BのMULR602)のデータフローを示す。このフォーマットは、例え
ば、128ビット幅のデータ経路において用いられ得る。リダクション加算命令
の場合、ftレジスタ731中のクワッド−シングル値ft1、ft2、ft3
およびft4(これらの値はそれぞれ、32ビットであり得る)を共に加算し、
その結果を、送信先レジスタfd732のクワッド−シングル位置fd1に入れ
る。同様に、fsレジスタ730中のクワッド−シングル値fs1、fs2、f
s3およびfs4を共に加算して、その結果を、送信先レジスタfd732のク
ワッド−シングル位置fd2に入れる。従って、本発明に従ってリダクション加
算オペレーションを2つのクワッド−シングルレジスタについて行う場合、ペア
ードシングル結果が得られる。しかし、2つよりも多いクワッド−シングル入力
レジスタを用いて上述したような様式でリダクション加算オペレーションを行い
、その結果を送信先レジスタfd732中の残りの2つの位置中に入れることも
可能である点に留意されたい。リダクション乗算命令のデータフローは、リダク
ション加算命令のものと同じである。
【0094】 リダクション加算およびリダクション乗算について上述したオペレーションは
、リダクション減算命令およびリダクション除算命令用に拡張可能であることが
理解される。これらのリダクション命令は、プロセッサによって実行される場合
、(本明細書中に記載の他の全ての命令と同様に)命令の任意の組み合わせまた
はシーケンスとして使用可能である。重大なことに、本明細書中に記載のリダク
ション計算は、2つのソース位置からのオペランドを組み合わせ、その結果を第
3の位置にロードする(図7Aおよび7Bを参照)。従って、これらのソース位
置(例えば、レジスタ)のコンテンツは、リダクション計算が終了した後でも保
存され、その結果、その後のオペレーションに同じソースのデータを用いること
が可能になるという柔軟性を与えられる(これにより、その後に命令によって同
じソースデータが必要になった場合にメモリからそのソースデータを再ロードす
るという非効率な事態を回避することが可能となる)。
【0095】 当業者にとって明らかであるように、別の実施形態において、クワッド−シン
グルデータフォーマットは、以下に述べる浮動小数点命令(例えば、RECIP
1、RECIP2、RSQRT1、RSQRT2、CABS、CVT.xx.x
x)のいずれとも使用可能である。このようなデータフォーマットは典型的には
、各々が32−ビット幅のデータ経路を有する4つの並列型処理パイプラインを
用いるシステムアーキテクチャと共に使用される。これらの命令は、128−ビ
ット幅のレジスタ用にフォーマットされ得、その結果、現在の命令フォーマット
中のオペランドフィールド数は同じままとなる(例えば、所与の命令についてf
sおよびftは同じままである)。あるいは、これらの命令は、さらなる32−
ビット幅のレジスタ用にフォーマットされ得、その結果、新規オペランドフィー
ルドが、現在の命令フォーマットに加算される。これらの命令用のデータフォー
マットはもちろん、より幅広のフォーマット(例えば、オクタル−シングル、処
理256−ビット幅のデータ等)および異なるフォーマットのタイプ(例えば、
ペアード−ダブル、クワッド−ダブル等)用にさらに拡張可能であり、これによ
り、サポーティングハードウェアに適応可能である。
【0096】 (RECIP1およびRECIP2) 図6Cおよび図6Dを参照して、RECIP1 603は、シード命令として
、浮動少数点値のリダクション精度逆数を生成するために使用される。RECI
P2 604はリダクション精度結果に関して繰り返され、全精度逆数値を得る
。いくつかのアプリケーションにおいて、RECIP1 603のリダクション
精度は十分で、RECIP2 604は使用されない。他のアプリケーションに
おいて、例えば、より大きな精度が望まれる場合、RECIP2 604も使用
され得る。
【0097】 図6Cを参照して、RECIP1 603は、FP値のリダクション精度逆数
を生成する。つまり、RECIP1 603は、1つのデータエレメントのイン
デックスを記憶部から取り込み、このデータ値の逆数を見つける。逆数は種々の
方法で得られることが可能で、本実施形態において、逆数はルックアップ表から
得られる。ルックアップ表の使用は、データ値の逆数の計算を高速化し、次いで
、ジオメトリエンジンの全体性能を向上させる。次いで、命令の宛先インデック
スに指定される記憶素子に結果を格納する。逆数は、入力データフォーマットに
関するリダクション精度である。この演算の計算正確度は、実施に依存する。
【0098】 より詳細には、RECIP1 603は、表ルックアップ、オペランド変更、
および乗算を必要とする改良区分線形近似を使用する。この近似は、次の式によ
り、数学的に表現され得る。つまり、
【0099】
【数1】 この式において、A1’は、ルックアップ表(この表は多数の係数を保持する)
から得られる所定の係数であり、B’、入力オペランドBの変更バージョンであ
る。好適な実施形態に従って、FPU270(図2C)は、17ビットの係数 A1’を生成する64ワードのルックアップ表を含む。上式に示すように、この
係数は入力オペランドの変更バージョンにより乗算され、この実施形態では、約
14ビットの正確さでリダクション精度結果である初期近似を生成する。この乗
算は、FPU270の浮動小数点乗算器283および浮動小数点加算器284(
図2C)の多段階のパイプラインで計算される。
【0100】 種々の大きさのルックアップ表が使用され得ることが、当業者に対して明らか
である。例えば、128ワードのルックアップ表はRECIP1に対して使用さ
れ得、約15ビットの正確さでリダクション精度結果を生成し得る。
【0101】 本実施形態において、RECIP1についてのルックアップ表、および入力オ
ペランドは、M.Ito,N.Takagi,およびS.Yajima,「Ef
ficient Initial Approximation for Mu
ltiplicative Division and Square Roo
t by a Multiplication with Operand M
odification」IEEE Transactions on Com
puters,Vol.46,No4,pp.495〜498,April 1
997に述べられた逆数近似方法を利用する。この参照方法によれば、ルックア
ップ表に含まれる係数(A1’)、および変更入力オペランド(B’)は、次の
式によりそれぞれ規定される。
【0102】
【数2】 先に示すように、B’はそのn−m最下位ビットを反転することにより、Bか
ら得られる。A1’は、P=[1.b1,b2,...bm]のように、Bの最上
位区分ビット上の表ルックアップにより得られる。Bの最下位ビットはテーブル
ルックアップが実行されている間、反転され得る。および、上記のように、1/
Bは、A1’をB’で乗算することにより、近似される。好適な実施形態におい
て、Bは23ビットの仮数を含む。この仮数の6つの最上位ビット(MSB)は
、上述の64ワードのルックアップ表にアクセスするために使用される。残り1
7ビットを反転し、6つのMSBと連結してB’を形成する。B’は、ルックア
ップ表からアクセスされる係数(A1’)を用いて乗算され、RECIP1 6
03に従ってリダクション精度逆数を生成する。
【0103】 好適な実施形態において、RECIP1 603は、ペアードシングルデータ
フォーマットで、演算するように設計される。しかしながら、他の実施形態にお
いて、単または倍FPフォーマットのような他のフォーマットが使用され得るこ
とが認識される。倍FPフォーマットは、単FPフォーマットとしてビット数を
2倍使用し、従って、データを格納および操作する場合、より多くの精度のビッ
トを得るために使用される。従って、倍FPフォーマットを使用して演算し得る
演算は、データのより高い精度を保存する。
【0104】 ペアードシングルフォーマットにおいて、第2のルックアップ表が、標準SI
MDアーキテクチャに従い、(第1のルックアップ表と並列に演算して)好適に
使用される。例えば、図2Eを参照して、64ワードのルックアップ表290お
よび291が、並列に演算していることが示される。前述の内容に従って、(ペ
アードシングルデータフォーマット中における)6ビットの入力オペランド「a
」および「b」を使用して、係数CaおよびCbをそれぞれ同時に生成するため
に、これらの表にアクセスする。ほぼ同じ時間において、各入力値の23ビット
仮数が、従来の論理ブロック292および293に提供され、(B1’と共に上
記で述べられたように)変更入力オペランドa’およびb’をそれぞれ生成する
。これらの値は、乗算器294および295において、それぞれ係数Caおよび
Cbと乗算され、見積もり値EaおよびEbを生成する。
【0105】 あるいは、RECIP1 603演算は、1つのルックアップ表を使用し、二
度(各ベクトルまたはオペランドに対して一度)実行され、ペアードシングルデ
ータタイプを収容する。このような演算において、RECIP1は、PSデータ
タイプ(すなわち、RECIP1.PS)としてまた構成され得る。つまり、デ
ータを変換すること、および単精度への命令フォーマットを変更する必要がない
。この状況において、ルックアップは、上半分および下半分のオペランドについ
て、連続的に実行される。
【0106】 ペアードシングルフォーマットが、RECIP1 603を用い、単浮動小数
点フォーマットで(例えば、第2のルックアップ表を用いないプロセッサ中で)
演算をを処理される場合、フォーマット変換が、(例えば、以下で記述する命令
CVT.PS.Sを使用して)必要である。この演算の例は以下で提供される。
従って、RECIP1 603が、ペアードシングルフォーマット上で実行され
る場合、ペアードシングルの単フォーマットへの変換は回避され得る。
【0107】 RECIP1 603は、以下のように表現される。
【0108】 fd≦1.0/fs; ここで、用語は以下のように規定する。この命令は、入力データ値を浮動小数
点レジスタfsで特定する。このfsのコンテンツは読み込まれ、この値のリダ
クション精度逆数が得られる、そしてこの結果は、宛先浮動小数点レジスタfd
に入力される。RECIP1 603命令を記述する演算のシーケンスは、以下
の通りである。
【0109】 Read ERP[fs] Find Reciprocal Store result in EPR[fd] 図6Dを参照して、RECIP2 604は、全精度の逆数FP値を生成する
ための命令シーケンス中の第2の工程である。この演算および結果は、単、倍、
またはペアードシングルフォーマット中で演算するように設計される。RECI
P2 604はRECIP1 603の結果を取得し、全精度逆数FP値に対し
て(好適に、ニュートンラプソン法を用いて)繰り返される。この演算の数学的
正確度は、実施に依存する。(ニュートンラプソン法は、式の根を見つける暗探
方法である。浮動小数点逆数値および平方根値を計算する際のこの方法の使用は
周知である。
【0110】 RECIP2 604は以下のように表現される。
【0111】 fd≦(iterate)fs and ft. この命令は、浮動小数点レジスタfsおよびftの入力データ値を特定する。
以下に記述するように、RECIP2 604は、MADD 801と組み合わ
せて使用され、入力データの全精度逆数を達成するために(ニュートンラプソン
法に従い)繰り返し計算を行う。さらなる詳細を、以下で提供される例示的命令
シーケンスに提供する。
【0112】 本実施形態において、RECIP2 604は、公知のNMSUB命令の改良
として、インプリメントされる。NMSUB命令は以下のように表現される。
【0113】 fd≦−((fs × ft)−fr), この式でfdは宛先レジスタを指定し、fs、ft、およびfrは、その内容が
演算に対する入力データとして使用される浮動小数点レジスタのセットのレジス
タを指定する。本発明の本実施形態において、frオペランドは、一定値1.0
で固定される。従って、frが1.0で固定される場合、値1.0を(fs ×
ft)から引く。従って、本発明によれば、変数およびその関連レジスタ位置
は削除される。従って、以前は、値をfrから取り出すことに必要とされていた
処理工程も削除され、これらにより、レジスタを削除するか、または自由にする
【0114】 さらに、以下のように、計算精度はまた、改良され得る。
【0115】 つまり、「b」を、逆数が近似される値にし、そして「xi」を、RECIP
1 603を使用して決定されるリダクション精度値にする。その時、 xi+1=xi*(2−bii) (1) (bの逆数値を近似するための ニュートンラプソンアルゴリズム) =xi*(1−bxi)+xi (2) (RECIP2およびM ADDにより為されるニュートンラプ ソンアルゴリズム) 式(1)は、頻繁に1.0に接近する(例えば1.0000...nnnn.
..、ここでnnnnが修正調整であり、対象の数である)項「(2−bxi
」になる。このフォマットは精度の損失になり得る。対照的に、式(2)におい
て、「項(1−bxi)」は、(RECIP2 604)を使用し、はじめに決
定される。RECIP2 604において1.0を減算することで、結果数は、
典型的に非常に小さく、(n.nnnとして)正規化され得、より大きな精度を
達成する。従って、続く計算はより正確であり、非正規化は回避され得る。この
技術は、同時継続出願に、さらに記載されている。(代理人整理番号.1778
.0080000)。
【0116】 好適な実施形態において、RECIP2 604は、ペアードシングルフォー
マットについて以下に提供される例示的命令シーケンスを使用することにより、
全精度逆数結果を得る手段を提供する。しかしながら、他の実施形態において、
単または倍浮動小数点フォーマットのような他のデータフォーマットが使用され
得る。
【0117】 1つまたは2つのニュートンラプソン反復は、シード近似を改良するために使
用され、それぞれ単精度および倍精度の結果を生成する。これらの演算は、FP
U270の浮動小数点乗算器283および浮動小数点加算器284のパイプライ
ンにおいて実行される(図2C)。
【0118】 RECIP1 603およびRECIP2 604は、クアッド(quad)
のシングルまたはオクト(oct)のシングルのような、ペアードシングルフォ
ーマット以外のデータセットフォーマットを用いて使用され得ることが認識され
る。つまり、このインプリメンテーションにおいて、さらなるルックアップ表が
、RECIP1 603演算に使用され得るか、または、RECIP1 603
が単のルックアップ表を用いて繰り返され得る。例えばクワッド単データフォー
マットで、4つのルックアップ表が使用され得るか、またはRECIP1 60
3演算が、1つのルックアップ表を使用して4回実行され得る。
【0119】 以下の記述から理解されるように、本発明に従うRECIP1 603および
RECIP2 604のペアードシングルフォーマットの使用は、1以上の変換
命令を除去することにより必要とされる命令数を減少させ、さもなければ、RE
CIP1/RECIP2演算の前かまたはその間に要求される命令数を減少させ
る。例えば、グラフィックパイプラインの他の演算は、ペアードシングルフォー
マットを用いて実行され、そして、結果をこれらの演算から変換し、RRECI
P1/RECIP2演算についてRECIP1603およびRECIP2 60
4を使用する必要がなくなる。
【0120】 以下の例において、3つのフィールド、つまり、実行されるべき演算を表すニ
ーモニック、宛先(または出力)レジスタ、および入力レジスタのセットを使用
して、命令を特定する。例えば、この命令において、 MADD f3,f2,f1,f0 ここでMADDはニーモニック、f3は出力レジスタ、およびf2、f1、f0
は入力レジスタである。特定される入力レジスタ数が、演算に依存することを留
意するべきである。
【0121】 図6Cおよび6Dを参照して、単fdフォーマット(フォーマットS)に対す
る例示的命令シーケンスを以下に提供する。この例は単FPバージョンのREC
IP1 603、RECIP2 604、およびMADD 801(図8)の使
用を示し、単FP値の単FP逆数を生成する。値「b」を、レジスタf0中にあ
ると仮定する。RECIP1 603は、128ワードのルックアップ表を使用
し、約15ビットの正確さでリダクション精度結果を生成する。以下に示す例示
的命令シーケンスの終端で、レジスタf3は、全精度24ビット逆数1/bを含
む。(以下の命令シーケンスにおいて、f0、f1、f2、およびf3は浮動小
数点レジスタFRPと呼ぶ。)RECIP1、RECIP2、およびMADDに
ついての命令フォーマットは、図6C、6D、および8中で、それぞれ提供され
る。
【0122】 RECIP1.S f1, f0 [約15ビットの1/b] RECIP2.S f2,f1,f0 [−(b*f1−
1.0)] MADD.S f3,f1,f1,f2 [24ビット 1/b] 代替の単精度の実施形態において、64ワードのルックアップ表は、(REC
IP.Sを使用して)約14ビットの正確さでリダクション精度逆数値を生成す
ることに使用される。値の正確度は、RECIP2.SおよびMADD.Sを実
行後、24ビットに増加する。
【0123】 倍FPフォーマット(フォーマットD)に対する例示的命令シーケンスを以下
に提供する。この例は倍FPバージョンのRECIP1 603、RECIP2 604、およびMADD801の使用を示し、倍FP値の倍FP逆数を生成す
る。値「b」を、レジスタf0中にあると仮定する。RECIP 603は、約
15ビットの正確さで128ワードのルックアップ表を使用する。本実施形態に
おいて、以下の命令シーケンスは、倍FPフォーマットを使用し全精度の53ビ
ットの結果を生成する。(以下の例示的命令シーケンス、f4およびf5をFP
Rと呼ぶ。) RECIP1.D f1,f0 [約15ビットの
1/b] RECIP2.D f2,f1,f0 [−(b*f1−
1.0)] MADD.D f3,f1,f1,f2 [約29ビットの
1/b] RECIP2.D f4,f3,f0 [−(b*f3−
1.0)] MADD.D f5,f3,f3,f4 [53ビットの1
/b] 代替の倍精度の実施形態において、64ワードのルックアップ表は、(REC
IP1.Dを使用して)約14ビットの正確さでリダクション精度逆数値を生成
することに使用される。値の正確度は、RECIP2.DおよびMADD.Dを
実行後、約27ビットに増加する。最後に、RECIP2.DおよびMADD.
Dの第2パスの後、正確度を全精度53ビットの結果に増加させる。
【0124】 RECIP1 603、RECIP2 604、およびMADD 801に対
するペアードシングルフォーマット(フォーマットPS)を使用する例示的命令
シーケンスを、以下に提供する。この例は、ペアードシングルFPバージョンの
RECIP1、RECIP2、おおびMADDの使用を示し、ペアードシングル
FP値の全精度ペアードシングルFP逆数を生成する。この実施形態において、
基礎をなすハードウェアは、同時に両リダクション精度演算を処理するための従
来のSIMDアーキテクチャを構成する2つの128ワードのルックアップ表(
RECIP1.PSについて)を備える。代替の実施形態において、リダクショ
ン精度演算は、1つのルックアップ表を使用して、順次処理され得る。値「a」
および値「b」は、レジスタf0中のペアードシングルフォーマットの2つの単
FP値を仮定する。
【0125】 RECIP1.PS f1,f0 [約15ビットの
1/aおよび1/b] RECIP2.PS f2,f1,f0 [−(a*f1−
1.0)および−(b*f1−1.0)] MADD.PS f3,f1,f1,f2 [24ビットの1
/aおよび1/b] RECIP1 603に対する単FPフォーマット、およびRECIP2 6
04ならびにMADD 801に対するペアードシングルフォーマットを使用す
る例示的命令シーケンスを、以下に提供する。この例は単FPバージョンのRE
CIP1ならびにペアードシングルFPバージョンのRECIP2およびMAD
Dの使用を示し、2つの単FP値のペアードシングルFP逆数を生成する。値「
a」および値「b」は、それぞれレジスタf0およびf1中の2つの単FP値で
あることを仮定する。(以下の命令シーケンスにおいて、f6およびf7をFP
Rと呼ぶ。) RECIP1.S f2,f0 [f2はリダクシ
ョン精度1/aを得る] RECIP1.S f3,f1 [f3はリダクシ
ョン精度1/bを得る] CVT.PS.S f4,f1,f0 [f4はPS値b
|aを保持する] CVT.PS.S f5,f3,f2 [f5はPSシー
ド1/b|1/aを保持する] RECIP2.PS f6,f5,f4 [f6は中間体1
/b|1/aを保持する] MASS.PS f7,f5,f5,f6 [f7は全精度P
S 1/b|1/aを保持する] 図10を参照して、本実施形態において、命令CVT.PS.S 1001は
、2つの単精度値を、ペアードシングル値に変換する。CVT.PS.S 10
01は、以下で示される。
【0126】
【数3】 この式で、各項は上記で規定されている。この命令は、FPR fsおよびft
の単精度値を、ペアードシングル値としてFPR fd中に書き込む。FPR
fsの値は、上半分に書き込まれ、FPR ftの値は下半分に書き込まれる。
【0127】 (RSQRT1およびRSQRT2) 図6Eおよび図6Fを参照して、RSQRT1 605はシード命令として使
用され、浮動小数点値のリダクション精度逆数平方根を生成する。RSQRT2
606は、リダクション精度結果上でくりかえされ、全精度逆数平方根値を得
る。いくつかのアプリケーションにおいて、RSQRT1 605のリダクショ
ン精度は十分であり、RSQRT2 606は使用されない。他のアプリケーシ
ョンにおいて、例えば、より大きな精度が望まれる場合、RSQRT2 606
も使用され得る。
【0128】 図6Eを参照して、RSQRT1 605は、FP値の平方根のリダクション
精度逆数を生成する。つまり、RSQRT1 605は、1つのデータエレメン
トのインデックスを記憶部から取り込み、特定データ値の平方根の逆数を見つけ
る。逆数平方根は、種々の方法で得られ得、本実施形態において逆数平方根は、
ルックアップ表から得られる。ルックアップ表の使用は、データ値の逆数平方根
の計算を加速し、ついで、ジオメトリエンジンの全性能を向上させる。従って、
命令の宛先インデックスで特定される記憶素子中に、結果を格納する。逆数平方
根は、入力データフォーマットに関するリダクション精度である。この演算の数
学的正確度は、実施に依存する。
【0129】 より詳細には、RSQRT1 605(RECIP 1と同様)は、表ルック
アップ、オペランド変更、および乗算を必要とする改良区分線形近似を使用する
。この近似は以下の式により数学的に表現され得る。
【0130】
【数4】 この式でC1’は、(複数の係数を保持する)ルックアップ表から得られる所定
の係数であり、「B”」は入力オペランドBの変更バージョンである。好適な実
施形態に従い、FPU270(図2C)は17ビット係数C1’を生成する64
ワードのルックアップ表を備える。上式中で示されるように、この係数は、入力
オペランドの変更されたバージョン(「B”」)により乗算され、この実施形態
において約14ビットの正確さでリダクション精度結果である初期近似を生成す
る。この乗算は、FPU270において計算される(図2C)。
【0131】 種々の大きさのルックアップ表が使用され得ることが、当業者に明らかである
。例えば、128ワードのルックアップ表はRSQRT1について使用され、約
15ビットの正確さでリダクション精度結果を生成し得る。
【0132】 本実施形態において、RSQRT1についてのルックアップ表、および入力オ
ペランドは、M.Ito,N.Takagi,およびS.Yajima,「Ef
ficient Initial Approximation for Mu
ltiplicative Division and Square Roo
t by a Multiplication with Operand M
odification」IEEE Transactions on Com
puters,Vol.46,No.4,pp.495〜498,April
1997に述べられた逆数近似方法を利用する。この参照方法によれば、ルック
アップ表に含まれる係数、および変更入力オペランドは、次の式によりそれぞれ
規定される。
【0133】
【数5】 この式でU=[1,b1,b2,...bm-1]である。C1’は、Bのm−1最
上位区分ビット上のmビットの表ルックアップおよび最下位指数ビットe0によ
り得られる。e0=1の場合、C1’は、表の中で丸め込みおよび格納する前に
、(2)-0.5により乗算されるべきである。B”は、Bのn−m最下位ビットを
反転し、およびBのビットのいくらかを再配列することにより、Bから得られる
。好適な実施形態において、Bは23ビットの仮数を含む。この仮数の5つの最
上位ビット(MSB)および対応する指数の最下位ビットは、上述の64ワード
のルックアップ表にアクセスするために使用される。残り18ビットを反転し、
5つのMSBと連結してB”を形成する。B”は、ルックアップ表からアクセス
される係数(C1’)と乗算され、RSQRT1 605に従ってリダクション
精度逆数平方根を生成する。
【0134】 好適な実施形態において、RSQRT1 605は、ペアードシングルフォー
マットで、演算するように設計される、しかしながら、他の実施形態において、
単または倍FPフォーマットのような他のフォーマットが使用され得ることが認
識される。ペアードシングルフォーマットにおいて、第2のルックアップ表が、
標準SIMDアーキテクチャに従い、(第1のルックアップ表と並列に演算して
)好適に使用される。図2Eの並列ルックアップ表(および以上で提供される議
論)は、ペアードシングルフォーマットのRSQRT1演算に同様に適用する。
しかしながら、各演算(すなわち、RECIP1およびRSQRT1)に関連す
る式によって要求されるように、(表からアクセスされる)係数の実際の値、お
よび(従来の論理ブロックにより生成される)変更されたオペランド値は、各動
作について異なり得る。
【0135】 あるいは、RSQRT1 605演算は、(各ベクトルまたはオペランドにつ
いて一度)1つのルックアップ表を使用して、二度実行され得、ペアードシング
ルデータタイプを収容する。このような演算(RECIP1と同様)において、
RSQRT1は、PSデータタイプ(すなわち、RSQRT1.PS)としてま
た構成され得る。つまり、データを変換すること、および単精度への命令フォー
マットを変更する必要がない。この状況において、ルックアップは、上半分およ
び下半分のオペランドについて、連続的に実行される。
【0136】 ペアードシングルフォーマットが、単浮動小数点フォーマットで(例えば、第
2のルックアップ表を用いないプロセッサで)演算するRSQRT1 605命
令で、処理される場合、フォーマット変換が、(例えば、以下で記述する命令C
VT.PS.Sを使用して)必要である。この演算の例は以下で提供される。従
って、RECIP1 603と同様に、RSQRT1 605が、ペアードシン
グルフォーマット上で実行される場合、ペアードシングルの単フォーマットへの
変換は回避される。
【0137】 RSQRT1 605は以下のように表される。
【0138】 fd≦1.0/sqrt(fs) この命令は、浮動小数点レジスタfsの入力データ値を特定する。fsのコン
テンツは読み込まれ、この値のリダクション精度逆数平行根が得られ、その結果
が宛先浮動小数点レジスタfdに入力される。RSQRT1 605命令を記述
する演算のシーケンスは、以下のようになる。
【0139】 Read FPR[fs] Find Reciprocal Square Root Store result in FPR[fd] 図6Fを参照して、RSQRT2 606は、全精度逆数平方根FP値を生成
するための命令シーケンス中の第2の工程である。この演算および結果は、単、
倍、またはペアードシングルフォーマット中で演算するように設計される。RS
QRT2 606はRSQRT1 605の結果を取得し、全精度逆数平方根F
P値に対して(好適には、ニュートンラプソン法を用いて)繰り返される。さら
なる詳細が、以下に提供される例示的命令シーケンスで提供される。この演算の
数学的正確度は、実施に依存する。
【0140】 RSQRT2 606は、以下のように表される。
【0141】 fd≦(iterate)fs and ft この命令は、浮動小数点レジスタfsおよびftの入力データ値を特定する。
以下に記述するように、この命令は、MUL 901およびMADD 801を
組み合わせて使用され、全精度逆数平方根を達成するために(ニュートンラプソ
ン法に従い)繰り返し計算を行う。さらなる詳細を、以下で提供される例示的命
令シーケンスに提供する。
【0142】 本実施形態において、RSQRT2 606は、公知のNMSUB命令を2で
割る改良として、インプリメントされる。NMSUB命令は以下のように表現さ
れる。
【0143】 fd≦−((fs × ft)−fr) この式でfdは宛先レジスタを指定し、fs、ft、およびfrは、その内容が
演算についての入力データとして使用される浮動小数点レジスタのセットのレジ
スタを指定する。本発明の本実施形態において、frオペランドは、一定値1.
0で固定される。従って、frが1.0として固定される場合、値1.0を(f
s × ft)から引く。従って、本発明によれば、変数およびその関連レジス
タ位置は削除される。従って、以前は、値をfrから取り出すのに必要とされて
いた処理工程も削除され、これらにより、レジスタを削除するか、または自由に
する。さらに、RSQRT2 606に従って、その量を2で割る。
【0144】 本計算の精度が、以下のように改良され得る。
【0145】 「b」を、逆数平方根が近似される値にし、そして「xi」を、RSQRT1 605を使用して決定されるリダクション精度値にする。その時、 xi-1=(xi*(3−bxi 2))/2 (3) (bの逆数平方根を近 似するためのニュートンラプソンアル ゴリズム) =xi*((1−bxi*xi)/2)+xi (4) (MUL、R SQRT2およびMADDにより為さ れるニュートンラプソンアルゴリズム ) 式(3)は、項xi 2を有する。bが非常に大きな数である場合、xi 2は、初期
的に、非正規化数を生成する。対照的に、式(4)において、項「(1−bxi
*xi)/2」は、命令シーケンス中の(以下で述べる)RSQRT2 606
を使用して決定される。ここでbは、まずxiで乗算される。この演算のオーダ
は、量「b*xi」を十分標準な領域に引き戻し得、それにより、引き続くxi
の乗算は、非正規化を生成し得ない。この技術は、同時継続出願に、さらに記載
されている。(代理人整理番号.1778.0080000)。この演算はFP
U270の浮動小数点乗算器283および浮動小数点加算器284のパイプライ
ンで計算される(図2C)。
【0146】 好適な実施形態において、RSQRT2 606は、ペアードシングルフォー
マットについて以下に提供される例示的命令シーケンスを使用することにより、
全精度逆数平方根の結果を得る手段を提供する。しかしながら、他の実施形態に
おいて、RSQRT2 606は、単FPまたは倍FPフォーマットのような他
のデータフォーマットを用いて使用され得ることが認識される。1つまたは2つ
のニュートンラプソン反復は、それぞれ単精度および倍精度の結果を生成するた
めのシード近似を改良するために使用される。
【0147】 RSQRT1 605およびRSQRT2 606は、クワッドシングルまた
はオクトのシングルのような、ペアードシングルフォーマット以外のデータセッ
トフォーマットを用いて使用され得る。つまり、このインプリメンテーションに
おいて、さらなるルックアップ表が、RSQRT1 605演算に使用され得る
か、またはRSQRT1 605演算が、単のルックアップ表を用いて繰り返さ
れ得る。例えば、クワッドシングルデータフォーマットで、4つのルックアップ
表が使用され得るか、またはRSQRT1 605演算が、1つのルックアップ
表を使用して4回実行され得る。
【0148】 以下の記述から理解できるように、本発明に従うRSQRT1 605および
RSQRT2 606のペアードシングルフォーマットの使用は、1以上の変換
命令を除去することにより必要とされる命令数、もしくはRSQRT1/RSQ
RT2演算の前かまたはその間で、要求される命令数を減少させる。例えば、グ
ラフィックパイプラインの他の演算は、ペアードシングルフォーマットを用いて
実行され得、そして、結果をこれらの演算から変換し、RSQRT1/RSQR
T2演算についてRSQRT1 605およびRSQRT2 606を使用する
必要がなくなる。
【0149】 図6Eおよび図6Fを参照して、単FPフォーマット(フォーマットS)につ
いての例示的命令シーケンスを、以下に提供する。この例は、単FPバージョン
のRSQRT1 605、RSQRT2 606、MADD 801(図8)、
およびMUL 901(図9)の使用を示し、単FP値の単FP逆数平方根を生
成する。値「b」を、レジスタf0中にあると仮定する。RSQRT1 605
は、128ワードのルックアップ表を用いて、約15ビットの正確さの減少精度
結果を生成する。以下に示す例示的命令シーケンスの終端で、レジスタf4は、
全精度24ビット逆数1/bを含む。
【0150】 RSQRT1.S f1,f0 [約15ビットの1/sq
rt(b)] MUL.S f2,f1,f0 [f1*f0] RSQRT2.S f3,f2,f1 [−(f1*f2
−1.0)/2] MADD.S f4,f1,f1,f3 [24ビットの1
/sqrt(b)] 代替の単精度の実施形態において、64ワードのルックアップ表は、(RSQ
RT1を使用して)約14ビットの正確さでリダクション精度逆数平方根値を生
成することに使用される。値の正確度は、MUL.S、RSQRT2.Sおよび
MADD.Sを実行後、24ビットに増加する。
【0151】 倍FPフォーマット(フォーマットD)に対する例示的命令シーケンスを以下
に提供する。この例は倍FPバージョンのRSQRT1 605、RSQRT2
606、MADD 801、およびMUL 901の使用を示し、倍FP値の
倍FP逆数平方根を生成する。値「b」を、レジスタf0中にあると仮定する。
RSQRT1は、約15ビットの正確さで128ワードのルックアップ表を使用
する。本実施形態において、以下の命令シーケンスは、倍FPフォーマットを使
用し53ビットの結果を生成する。
【0152】 RSQRT1.D f1,f0 [約15ビットの
1/sqrt(b)] MUL.D f2,f1,f0 [f1*f0] RSQRT2.D f3,f2,f1 [−(f1*f2
−1.0)/2] MADD.D f4,f1,f1,f3 [約29ビットの
1/sqrt(b)] MUL.D f5,f0,f4 [f4*f0] RSQRT2.D f6,f5,f4 [−(f4*f5
−1.0)/2] MADD.D f7,f4,f4,f6 [53ビットの1
/sqrt(b)] 代替の倍精度の実施形態において、64ワードのルックアップ表は、(RSQ
RT1.Dを使用して)約14ビットの正確さのリダクション精度逆数値を生成
することに使用される。値の正確度は、MUL.D、RSQRT2.DおよびM
ADD.Dを実行後、約27ビットに増加する。最後に、MUL.D、RSQR
T2.DおよびMADD.Dの第2パスの後、正確度を全精度の53ビットの結
果に増加させる。
【0153】 RSQRT1 605、RSQRT2 606、MADD 801、およびM
UL 901に対するペアードシングルフォーマット(フォーマットPS)を使
用する例示的命令シーケンスを、以下に提供する。この例は、ペアードシングル
FPバージョンのRSQRT1、RSQRT2、MADD、およびMULの使用
を示し、ペアードシングルFP値の全精度ペアードシングルFP逆数を生成する
。この実施形態において、基礎をなすハードウェアは、(RSQRT1.PSに
ついて)従来のSIMDアーキテクチャを構成する2つの128ワードのルック
アップ表を備え、同時に両リダクション精度演算を処理する。代替の実施形態に
おいて、リダクション精度演算は、1つのルックアップ表を使用して、順次処理
され得る。値「a」および値「b」は、レジスタf0中のペアードシングルフォ
ーマットの2つの単FP値を仮定する。
【0154】 RSQRT1.PS f1,f0 [約15ビットの
1/sqrt(a)および1/sqrt(b)] MUL.PS f2,f1,f0 [f0*
f1] RSQRT2.PS f3,f2,f1 [−(f1*f2
−1.0)/2)] MADD.PS f4,f1,f1,f3 [24ビットの1
/sqrt(a)および1/sqrt(b)] RSQRT1 605に対する単FPフォーマット、およびRSQRT2 6
06、MADD 801、ならびにMUL 901に対するペアードシングルフ
ォーマットを使用する例示的命令シーケンスを、以下に提供する。この例は単F
PバージョンのRSQRT1ならびにペアードシングルFPバージョンのRSQ
RT2、MADD、およびMULの使用を示し、2つの単FP値のペアードシン
グルFP逆数を生成する。値「a」および値「b」は、それぞれレジスタf0お
よびf1中の2つの単FP値であることを仮定する。
【0155】 RSQRT1.S f2,f0 [f2はリダクシ
ョン精度1/sqrt(a)を得る] RSQRT1.S f3,f1 [f3はリダクシ
ョン精度1/sqrt(b)を得る] CVT.PS.S f4,f1,f0 [f4はPS値b
|aを保持する] CVT.PS.S f5,f3,f2 [f5はPSシー
ド1/sqrt(b)|1/sqrt(a)を保持する] MUL.PS f6,f5,f4 [f6は中間体1
の結果を保持する] RSQRT2.PS f7,f6,f5 [f7は中間体2
の結果を保持する] MADD.PS f8,f5,f5,f7 [f8は全精度P
S 1/sqrt(b)|1/sqrt(a)を保持する] 本発明の本実施形態に従って、ADDR、MULR,RECIP1、RECI
P2、RSQRT1、およびRSQRT2命令は、ASE350(図3)に加え
られる。この命令は、効果的に計算を実行する機能性をインプリメントし、この
計算は、ジオメトリ的変換、遠近分割、正規化、再正規化、およびコンピュータ
で生成したグラフィックデザイン中で使用される光計算を含む種々のアプリケー
ションで使用され得る。これらの命令は、汎用プロセッサ上で使用され得る。上
述したように、これらの命令は、ペアードシングルデータフォーマットおよび他
のデータフォーマットを用いて、使用され得る。結果的に、ADDR、MULR
,RECIP1、RECIP2、RSQRT1、およびRSQRT2命令は、1
以上の変換命令に関する処理工程を除去し、さもなければデータをあるフォーマ
ットから別のフォーマットに変換することを要求する。ADDRおよびMULR
命令は、ADDRおよびMULRにより提供される同様の結果を達成するために
、以前必要とされていたペアードシングル値を演算する処理工程も除去する。
【0156】 (ジオメトリASE−比較およびフォーマットの変換命令) ここで図6G、6Hおよび6Iを参照する。これらの図はそれぞれ、本発明の
1つの実施形態に従うジオメトリASE350内に含まれる3つの比較またはフ
ォーマット変換命令のうちの1つを示す。比較命令はCABS607として設計
され、フォーマット変換命令はCVT.PW.PS608およびCVT.PS.
PW609として、それぞれ設計される。これらの命令のそれぞれにおいて、オ
ペレーションコード(例えば、CABSのように指定された命令とともにCOP
1)は、実行される特定のアクションのプロセッサを命令するために用いられる
。各命令はまた、フィールド「fs」および「ft」内の入力データ(または入
力データの位置)、フィールド「fd」内の命令によって指定されるオペレーシ
ョンのアプリケーションの結果として生じるデータの宛先位置(destina
tion location)を指定し、かつフィールド「fmt;」フォーマ
ット内の入力データのフォーマットは、ペアードシングル(「PS」)、単精度
(「シングル」または「S」)、倍精度(「ダブル」または「D」)を含む。本
実施形態において、各命令は、32ビット長である。図6G〜6Iは、種々のデ
ータフォーマットの例示的な命令フォーマットを提供する(各図における「フォ
ーマット」を参照のこと)。
【0157】 (CABS) 図6Gを参照して、CABS607(本明細書中、「比較」、「大きさ(ma
gnitude)比較」または「絶対比較」命令と呼ぶ)は、浮動小数点(FP
)絶対値を比較するために、およびブール代数値(boolean)を記録する
ために用いられ、その結果、1つ以上の条件コード(condition co
de)となる。好適な実施形態において、CABS607は、シングルクロック
サイクルで実行され、ペアードシングルフォーマットで動作するように設計され
る。しかしながら、他の実施形態において、他のデータフォーマット(例えば、
シングルまたはダブルFPフォーマット等)が使用され得ることが理解される。
ダブルFPフォーマットは、シングルFPフォーマットと2倍のビット数を使用
する。そのため、ダブルFPフォーマットは、データを格納し、操作する際によ
り多くのビットの精度を得るように使用される。従って、ダブルFPフォーマッ
トを使用して動作し得るオペレーションは、データのより高い精度を保つ。ペア
ードシングルフォーマットは、図5とともに上述されている。
【0158】 図6Gを続けて参照すると、CABS607は、命令によって指定された2つ
の入力値をとり、命令で指定された比較条件を用いてそれらの絶対値を比較する
。命令は、浮動小数点レジスタセットにおいて、そのコンテンツが、その動作に
対して入力データとして使用される2つの値、ftとfsとを指定する。命令は
また、条件と「cond」フィールド630内部にある4ビット条件シーケンス
を比較する。本実施形態において、使用される比較条件および関連する条件シー
ケンス(すなわち、0〜15)が、表2に列挙されている。他の比較条件が本発
明に従って使用され得ることがよく理解される。
【0159】
【表2】 CABS607は、fsレジスタのデータ値の絶対値をftレジスタのデータ
値の絶対値とどのように比較するのかをチェックする。サインを含む実際の値を
比較することに代わって、絶対値(すなわち、大きさ)を比較することにより、
本発明は、2分の1の比較数を減少し、その結果、処理速度の増加と釣り合う。
例えば、実行の代わりに、次の2つの比較を用いる。
【0160】 x’≦w’ および x’≧−w’; 本発明は、単一の比較; |x’|≦|w’| のみを実行する必要がある。
【0161】 本実施形態において、比較の結果得られる条件コードは、命令において「cc
」フィールド635によって指定されるビット位置でFCSR410(図4)(
または、代替的な実施形態において、専用の浮動小数点条件コードレジスタ、F
PCCR)に書き込まれる。
【0162】 1つの実施形態において、シングルおよびダブルFPフォーマットは、ブール
代数演算結果の1ビットを生成し、シングル条件コードビットが書き込まれる。
ペアードシングルFPフォーマットは、2つの条件位置(ペアの各シングル値に
1つ)を生成し、2つの連続条件コードビットが書き込まれる。その場合におい
て、ccフィールドの値は、2つの値に並べられる。
【0163】 シングルフォーマット、ダブルフォーマット、ペアードシングルフォーマット
に対して、CABS607は、それぞれ以下のように示される。
【0164】 cc<−|fs.S|compare_cond|ft.S|; cc<−|fs.D|compare_cond|ft.D|; ccn+1<−|fs.PU|compare_cond|ft.PU|;
および ccn<−|fs.PL|compare_cond|ft.PL| シンボル「<−」は、シンボルの右側の値がシンボルの左側に示された位置に
割り当てられることを示すのに使用され、「PL」は、ペアードシングルデータ
タイプフォーマットでより低位の値を示し、および、「PU」は、ペアードシン
グルデータタイプフォーマットでより高位の値を示す。「compare_co
nd」によって指定される比較がオペランド値に対して真であるなら、その結果
は、真で(ロジック1により示される)あり、「compare_cond」に
よって指定される比較がオペランド値に対して偽であるなら、その結果は、偽で
(ロジック0により示される)ある。例外がない場合、その結果は、FCSR4
10の条件コードフィールド(fcc)の(命令によって指定された)ビット位
置(単数または複数)に書き込まれる。本実施形態において、偽はロジックゼロ
(0)により指定され、かつ、真はロジック1(1)により指定される。しかし
ながら、他の指定は、本発明による真および偽を指定するために使用され得るこ
とが理解される。
【0165】 CABS607命令を記述するオペレーションのシーケンスは、次のとおりで
ある。
【0166】 Read FPR[fs] Read FPR[ft] Absolute Compare |FPR[fs]|cond|FP
R[ft]| Write condition indicator(s) to F
CC[cc] CABS607は、ペアードシングルフォーマットよりも他のデータセットフ
ォーマットとして使用され得ることが理解される。命令は、ペアードシングルフ
ォーマット(例えば、クアドシングルフォーマットまたはオクタルシングルフォ
ーマット)よりも他のフォーマットに対して拡張され得ることがさらによく理解
される。別の実施形態において、データセットフォーマットは、2以上の単精度
浮動小数点数を比較し得た。同様に、別の実施形態において、2以上のレジスタ
が使用され得る。例えば、データセットフォーマットは、4つの単精度浮動小数
点値を比較し得る。
【0167】 CABS607命令は、次の様式のFPU270の加算器(adder)28
4によって処理される。初めに、各オペランドのサインビットは、強制的に0に
される(例えば、論理的にAND演算することにより、各サインビットは0値を
有する)。続いて、その結果として生じるオペランドが差し引かれ、その差が、
従来の比較オペレーションに従って処理される。ペアードシングルデータタイプ
(すなわち、CABS.PS)を取り扱う場合、2つのペアードシングルオペラ
ンドは、加算器284の2つの単精度データパスを用いて並列に処理される。
【0168】 (CVT.PW.PS) ここで図6Hを参照して、CVT.PW.PS608は、一組の固定小数点整
数に対するFPペアードシングル値を変換するために使用される。本実施形態に
おいて、固定小数点整数は、32ビット長である。CVT.PW.PS608は
、次のように表される。
【0169】 fd.PU<−convert_and_round(fs.PU); fd.PL<−convert_and_round(fs.PL) CVT.PW.PS608は、一組の32ビット固定小数点整数値に対するf
sのペアードシングルフォーマットにおける2つのFP値を変換し、FPレジス
タfdの高位32ビットおよび低位32ビットに対応する2つのFP値を置く。
丸めは、FCSR(例えば、図4のFCSR410)で指定される丸めモードに
従う。このような丸めモードは、当業者にとって周知である。
【0170】 CVT.PW.PS608は、ペアードシングルフォーマット(例えば、クア
ドシングルフォーマットまたはオクタルシングルフォーマット)より他のデータ
セットフォーマットに対して拡張され得ることが理解される。
【0171】 ソース値が無限大、NaN(数字がない)、または−231〜2-31−1の範囲
外の整数に丸められる場合、その結果は、正確に表示され得ず、IEEE無効オ
ペレーションが存在する。その結果は、プロセッサ内のその時点でアクティブな
浮動小数点例外モデル(floating point exception
model)に依存する。
【0172】 別の実施形態において、データセットフォーマットは、2以上の単精度浮動小
数点数に置換され得た。例えば、データセットフォーマットは、2つのレジスタ
の内部にある4つの単精度浮動小数点値を含み得め。同様に、別の実施形態にお
いて、2以上のレジスタは、(各入力レジスタを指定するための)命令フォーマ
ットに対する変化に対応して使用され得る。
【0173】 (CVT.PS.PW) 図6Iを参照して、CVT.PS.PW609は、FPペアードシングル値に
対する一組の固定小数点整数を変換するために使用される。本実施形態において
、固定小数点整数は、32ビット長である。CVT.PS.PW609は、次の
ように表される。
【0174】 fd<−convert_and_round(fs63..32)‖conv
ert_and_round(fs31..0) ここで、シンボル「‖」は、ビットストリング連結を示すために使用される。
CVT.PS.PW609は、ペアードシングルフォーマットに対するfsの2
つの32ビット固定小数点整数値を変換し、FPレジスタfdにその結果を置く
。丸めは、FCSR410で指定される丸めモードに従う。上述されたように、
このような丸めモードは、当業者にとって周知である。
【0175】 CVT.PS.PW609は、ペアードシングルフォーマット(例えば、クア
ドシングルフォーマットまたはオクタルシングルフォーマット)より他のデータ
セットフォーマットに対して拡張され得ることが理解される。
【0176】 別の実施形態において、データセットフォーマットは、2以上の単精度浮動小
数点数に置換され得る。例えば、データセットフォーマットは、2つのレジスタ
の内部にある4つの単精度浮動小数点値を比較し得る。同様に、別の実施形態に
おいて、2以上のレジスタは、(各入力レジスタを指定するための)命令フォー
マットに対する変化に対応して使用され得る。
【0177】 本発明の本実施形態によれば、CABS命令、CVT.PW.PS命令、およ
びCVT.PS.PW命令は、ジオメトリASE350に加えられる(図3)。
CVT.PW.PS命令、およびCVT.PS.PW命令は、ペアードシングル
フォーマットで動作するように設計される。これらの命令は、固定少数点整数を
有するペアードシングルフォーマットの使用を可能にし、一組のオペランドに関
する2つの同時オペレーションを可能にし、それにより、ジオメトリエンジンの
性能を改善する。CABS命令は、単精度データフォーマット、倍精度データフ
ォーマットおよびペアードシングルデータフォーマットを含む種々のデータフォ
ーマットについて使用され得る。この命令は、コンピュータで作成されたグラフ
ィックスデザインを含む種々のアプリケーションにおいて使用され得るオペレー
ションを効果的に実行する機能性をインプリメントする。特に、(3次元ジオメ
トリオペレーションにおいて使用される)クリッピングオペレーションは、CA
BS命令で加速され得る。
【0178】 (ジオメトリASE−条件付ブランチ命令) ここで、図6J、6K、6Lおよび6Mを参照する。これらの図はそれぞれ、
本発明の1つの実施形態に従うジオメトリASE350内に含まれる4つの条件
付ブランチ命令のうちの1つを示す。条件付ブランチ命令は、BC1ANY2F
610、BC1ANY2T 611、BC1ANY4F 612、およびBC
1ANY4T 613として、それぞれ設計される。これらの命令のそれぞれに
おいて、オペレーションコード(例えば、BC1ANY4Tのように指定された
命令とCOP1)は、実行される特定のアクションのプロセッサに命令するため
に用いられる。加えて、インジケータビット620は、所与のブランチオペレー
ションに対するテストが条件コードビット(以下に説明される)の「真」の状態
または「偽」の状態に基づいているかどうかを指定するために使用される。
【0179】 以下で議論される実施形態において、偽は0で指定され、真は1で指定される
。しかしながら、他の指定は、本発明による真および偽のために使用され得るこ
とが理解される。
【0180】 いくつかのコンピュータシステムアーキテクチャは、1つの命令(例えば、ブ
ランチ遅延スロット)によりブランチオペレーションの効果を遅延することが理
解される。
【0181】 (BC1ANY2F) 図6Jを参照して、BC1ANY2F 610は、例えば、FCSR410(
図4)のfccフィールド内に配置された2つの指定条件コードビット(例えば
、CCnおよびCCn+1)を調べる。これらの内のいずれかが、あらかじめ決めら
れた状態(例えば、偽)に設定されている場合、ブランチターゲットアドレスが
計算され、その実行は、計算されたブランチターゲットにブランチする。すなわ
ち、CCn+1==0またはCCn==0である場合、ブランチする。1つの実施形
態において、条件コードビットがあらかじめ決められた状態に設定されているか
どうかを判定するために、条件コードビットがインジケータビット(例えば、t
f620)と比較される。2つの連続条件コードビットが、本実施形態において
示されているが、条件コードが連続でない他の実施形態が、本発明に従って使用
され得ることが理解される。
【0182】 本実施形態において、(16ビットオフセットフィールドが2ビット左へシフ
トした)18ビット符号付オフセットは、プログラムカウンタ(PC)に関する
有効ターゲットアドレスを形成するために、ブランチ遅延スロットにおいてブラ
ンチ(ブランチ自身ではない)に続いて命令のアドレスが加えられる。2つの浮
動小数点(FP)条件コードビット(CC)の内のどちらかが偽である場合、遅
延スロットにおける命令が実行された後、プログラムが有効ターゲットアドレス
にブランチする。
【0183】 本実施形態において、指定されたCCは2つに配列され、そのため、ビット1
8はゼロに設定される。例えば、4つの値を指定することは、CC5またはCC4 のどちらかが0であり、それに従って、ブランチされるかどうかをチェックする
【0184】 上述されたように、FP条件コードは、浮動小数点数の大きさを比較するため
に用いられる場合、FP比較命令(例えば、図6GのCABS607)により設
定され得る。
【0185】 (BC1ANY2T) 図6Kを参照して、BC1ANY2T 611は、例えば、FCSR410の
fccフィールド内に配置された2つの指定条件コードビット(例えば、CCn
およびCCn+1)を調べる。これらの内のいずれかが真である場合、ブランチタ
ーゲットアドレスが計算され、その実行は、計算されたブランチターゲットにブ
ランチする。すなわち、CCn+1==1またはCCn==1である場合、ブランチ
する。1つの実施形態において、条件コードビットがあらかじめ決められた状態
に設定されているかどうかを判定するために、条件コードビットがインジケータ
ビット(例えば、tf620)と比較される。2つの連続条件コードビットが、
本実施形態において示されているが、条件コードが連続でない他の実施形態が、
本発明に従って使用され得ることがよく理解される。
【0186】 本実施形態において、(16ビットオフセットフィールドが2ビット左へシフ
トした)18ビット符号付オフセットは、PCに関する有効ターゲットアドレス
を形成するために、ブランチ遅延スロットにおいてブランチ(ブランチ自身では
ない)に続いて命令のアドレスが加えられる。2つのFP条件コードビット(C
C)の内のどちらかが真(ロジック1)である場合、遅延スロットにおける命令
が実行された後、プログラムが有効ターゲットアドレスにブランチする。
【0187】 本実施形態において、指定されたCCは2つに配列され、そのため、ビット1
8はゼロに設定される。例えば、2つの値を指定することは、CC3またはCC2 のどちらかが1であり、従って、ブランチされるかどうかをチェックする。
【0188】 (BC1ANY4F) 図6Lを参照して、BC1ANY4F 612は、例えば、FCSR410の
fccフィールド内に配置された4つの指定条件コードビット(例えば、CCn
、CCn+1、CCn+2およびCCn+3)を調べる。これらの内のどれもが偽である
場合、ブランチターゲットアドレスが計算され、その実行は、計算されたブラン
チターゲットにブランチする。すなわち、CCn+3==0またはCCn+2==0ま
たはCCn+1==0またはCCn==0である場合、ブランチする。1つの実施形
態において、条件コードビットがあらかじめ決められた状態に設定されているか
どうかを判定するために、条件コードビットがインジケータビット(例えば、t
f620)と比較される。4つの連続条件コードビットが、本実施形態において
示されているが、条件コードが連続でない他の実施形態が、本発明に従って使用
され得ることが理解される。
【0189】 本実施形態において、条件コードビットのいずれか1つが偽である場合にブラ
ンチングに代わって、ブランチングは、条件コードビット値の指定された組合せ
に基づいて生じる。例えば、ブランチングは、CCn+3==0およびCCn+2==
0の場合に生じるように指定され得る。すなわち、本発明によれば、「and’
s」および「or’s」の組合わせは、条件コードビットの任意の組合せ(1と
、0との任意の組合せ)の機能としてブランチングを指定するために使用され得
る。このことは、当該分野の公知の様々な方法(例えば、プログラム可能なロジ
ックアレイ)を用いてインプリメントされ得ることがよく理解される。
【0190】 本実施形態において、(16ビットオフセットフィールドが2ビット左へシフ
トした)18ビット符号付オフセットは、PCに関する有効ターゲットアドレス
を形成するために、ブランチ遅延スロットにおいてブランチ(ブランチ自身では
ない)に続いて命令のアドレスが加えられる。4つのFP条件コードビットCC
の内のいずれかどちらかが偽(ロジック0)である場合、遅延スロットにおける
命令が実行された後、プログラムが有効ターゲットアドレスにブランチする。
【0191】 本実施形態において、CCは4つに並べられ、そのため、ビット18およびビ
ット19はゼロに設定される。例えば、ゼロの値を指定することは、ビットCC3..0 のいずれかがゼロであり、従って、ブランチされるかどうかをチェックする
【0192】 (BC1ANY4T) 図6Mを参照すると、BC1ANY4T 613は、例えば、FCSR 41
0のfccフィールド内に配置された、4つの特定された状態コードビット(例
えば、CCn,CCn+l,CCn+2,およびCCn+3)を調べる。4つの特定された
状態コードビットが真である場合、分枝ターゲットアドレスは計算され、実行は
計算された分枝ターゲットへ分岐する。すなわち、CCn+3==1またはCCn+2 ==1またはCCn+1==1またはCCn==1である場合、分枝する。1実施形
態において、状態コードビットは、状態コードビットが、事前に決定された状態
にセットされるかどうかを判定する指示ビット(例えば、tf 620)と比較
される。この実施形態において、4つの連続状態コードビットが表されるが、状
態コードが連続でない他の実施形態は、本発明により使用され得ることが認識さ
れる。
【0193】 他の実施形態において、状態コードビットの任意の1つが真である場合の分枝
の代わりに、分枝が、状態コードビット値の特定される組み合わせに基づいて発
生する。例えば、分枝は、CCn+3==1およびCCn+2==1である場合、生じ
ることが特定され得る。つまり、本発明により、「andの」および「orの」
の組み合わせは、状態コードビットの任意の組み合わせ(すなわち、1のおよび
0の、の任意の組み合わせ)の機能として分枝を特定するのに使用され得る。こ
れは、プログラム可能なロジックアレイのような当該分野で公知の種々の方法を
用いて実行され得ることが認識される。
【0194】 本発明の実施形態において、18−bit符号付きのオフセット(左に2ビッ
トシフトされた16ビットオフセットフィールド)は、PCに比較的(PC−r
elative)効果的なターゲットアドレスを形成する分枝ディレイスロット
(delay slot)内の分枝(それ自身は分枝しない)に従う命令のアド
レスに加えられる。任意の4つのFP状態コードビットCCが真である場合(ロ
ジック1)、プログラムは、ディレイスロット内の命令が実行された後、効果的
なターゲットアドレスに分枝する。
【0195】 本実施形態において、CCは4つを一列に並べ(aligns)、ビット18
および19は、ゼロにセットされる。従って、例えば、4つの値を特定すること
で、任意のビットCC7..4がゼロおよび分枝であるかどうかをチェックする。
【0196】 本発明の本実施形態により、BC1ANY2F,BC1ANY2T,BC1A
NY4FおよびBC1ANY4T命令は、ISA 320(図3)に追加される
。BC1ANY2FおよびBC1ANY2Tのそれぞれは、2つの特定された状
態コードビットを調べ、BClANY4FおよびBClANY4Tのそれぞれは
、4つの特定の状態コードビットを調べる。しかしながら、状態分枝命令の他の
実施形態は、本発明による状態コードビットの異なる数(例えば、3または4以
上)を調べ得る事が認識される。1つ以上の状態コードビットの状態(すなわち
、状態コード状態)に基づき、分枝は本発明により生じ得る。
【0197】 上記で識別された、各BC1ANYxx命令(xx=2F,2T,4Fおよび
4Tの場合)に対し、実施形態は、状態コードビットが各命令内の指示ビット(
すなわち、ビット620)と比較される場合、記載される。この比較の結果によ
り、状態コードビットが所定の状態にセットされるかどうかが判定される。代わ
りの(および好適な)実施形態において、特定の分枝命令に関連する状態コード
ビット(例えば、BC1ANY4Tに関連する4つのビット)は、最初に、回路
(例えば、状態機器、プログラム可能なロジックアレイ、組み合わせロジック等
)によって組み合わされ、単一の組み合わされたビットを生成する。次に、この
ビットは、対象分枝状態が満たされるかどうか(例えば、組み合わされた状態コ
ードの任意の1つが事前に決められた状態にセットされるかどうか)を判定する
対象命令の指示ビットと比較される。例えば、この回路は、複数のビットの任意
の1がそれぞれ、セット(logical 1)されるか、またはリセット(l
ogical 0)されるかどうかを判定する論理ORゲートまたはANDゲー
トとして機能し得る。代替の実施形態において、そのような回路は、例えば、よ
り複雑なブール式を表し得、分枝を発生させる前に、対象の状態コードビットか
ら論理の1および0の特定の組み合わせを要求する、 本発明により、状態分枝命令は、単一の分枝命令を用い、複数の状態コードビ
ットを処理する。従って、連続する分枝は取り除かれ、その結果、命令の数は減
少され得る。従って、条件分枝命令は、コンピュータに作成されたグラフィック
デザインを含む、種々のアプリケーションで使用され得る、操作を効果的に実行
する機能性(functionality)を実行する。特に、クリッピング操
作(3次元ジオメトリ演算において使用される)は、前述の分岐命令を用いて高
速化され得る。これらの命令は、汎用のプロセッサで使用され得る。
【0198】 (浮動小数点乗算/加算(MADD)) 次に、図8を参照し、図8は、浮動小数点乗算/加算命令MADD 801を
図示する。MADD 801は、結合乗算(combined multipl
y)を実行し、次に、浮動小数点の値に演算を加算する命令は以下のように表さ
れる。
【0199】 fd<−(fs x ft)+fr; 「fd」が目的のレジスタを特定するインデックスであり、「fs」「ft」お
よび「fr」が浮動小数点の3つのレジスタを特定するインデックスである場合
、レジスタセットのコンテンツは、演算のために入力データとして使用されるべ
きである。
【0200】 さらに図8を参照すると、fsの値はftの値で乗算されて、積を生じる。f
rの値はこの積に加算される。本実施形態において、得られた合計は、無限大の
精度まで計算され、FCSR(例えば、図4のFCSR 410)内に特定され
る現在の丸めるモードにより丸められ、fdに置き換えられる。MADD 80
1は、シングル、ダブルおよびペアードシングルフォーマットを支持する。フィ
ールド「fmt」はオペランドおよび結果のフォーマットを特定する。
【0201】 (浮動小数点(MUL)) 次に、図9を参照して、図9は、浮動小数点乗算命令MUL 901を図示す
る。MUL 901は、浮動小数点の値を乗算するために使用される。命令は以
下のように表される。
【0202】 fd<−fs x ft; 「fd」が目的のレジスタを特定するインデックスであり、「fs」および「f
t」が浮動小数点の2つのレジスタを特定するインデックスである場合、レジス
タセットのコンテンツは、演算のために入力データとして使用されるべきである
【0203】 さらに図9を参照すると、fsの値はftの値で乗算され、積を生じる。本実
施形態において、この積は、無限大の精度まで計算され、FCSR(例えば、図
4のFCSR 410)内に特定される現在の丸めるモードにより丸められ、f
dに置き換えられる。MUL 901は、シングル、ダブルおよびペアードシン
グルフォーマットを支持する。フィールド「fmt」はオペランドおよび結果の
フォーマットを特定する。
【0204】 上述の考察により、上記で特定された命令(例えば、ADDR,MULR,R
ECIP1,RECIP2,RSQRT1,RSQRT2,CVT,MULおよ
びMADD)により生成される出力は、任意の数の方法で形式化され得、これは
、ペアードシングル、ペアードダブル、クワッドシングル、クワッドダブル等を
含む。代替の実施形態において、これらの命令は、シングルのオペランド(例え
ば、Sタイプオペランド)またはベクトルタイプのオペランド(例えば、PSタ
イプのオペランド)を入力するように設定され得、新たに生成されるベクトルオ
ペランド(例えば、PSオペランド)またはより大きなベクトルオペランド(例
えば、クワッドシングルオペランド)をそれぞれ出力するための結果を複製する
。例えば、命令は、Sタイプの結果を生じるためのSタイプの入力を処理するよ
うに設定され得、次に、PSタイプの出力(すなわち、ダブルワードの下半分が
PSタイプのフォーマットを生成するために上半分に複製される)を生じる為の
この結果を複製する。この代替の実施形態は、RECIP1およびRSQRT1
命令において特に有用であり得る。
【0205】 (ワールド座標系(World Coodinate)を用いるジオメトリ計
算の例示的なプロセス) 次に、図11Aを参照し、図11Aは、本発明の1実施形態によるワールド座
標系を用いて、ジオメトリ計算のために図3の命令セットアーキテクチャを使用
する工程を示す例示的なプロセス1000のフローチャートである。プロセス1
000は、本実施形態による命令セットアーキテクチャを用いて実行され、例え
ば、プロセッサ102b(図2b)により実行される。プロセッサ1000は、
グラフィックパイプラインのジオメトリの一部(geometry porti
on)に使用される。
【0206】 図11Aの工程1005において、公知の技術を用いて、グラフィックイメー
ジは、点、線および「プリミティブ(primitives)」と呼ばれるジオ
メトリ形を用いて、構成され、ワールド座標系[x y z w]は、プリミテ
ィブの頂点として導かれる。ワールド座標系は、好ましくは、PSフォーマット
であるが、シングルまたはダブルフォーマットであってもよい。
【0207】 本実施形態における、工程1010において、ワールド座標系[x y z
w]は、ペアードシングル形式の命令MUL,MADD,ADDRおよびLD(
ダブルワードをロードする)を用いて、4行4列の浮動小数点の行列により[x
’y’z’w’]に変換される。この変換を実行するために使用される命令配列
の注釈リストは、図12において提供される。変換は、回転、平行移動(tra
nslations)、座標軸に沿ったスケーリング、遠近変換(perspe
ctive transformation)およびこれらの組み合わせを含む
【0208】 図11Aの工程1015において、クリップテストは、どのプリミティブ(も
しくは、プリミティブの一部)が、表示されるグラフィックイメージ内に現れる
(すなわち、それらが、特定の表示量内に当てはまる)かを決定するために実行
される。クリップテストは、CABS 607命令(図6G)を用いて実行され
得る。CABS 607命令は,基準の表示平面(例えば±w’の絶対値)の絶
対値に対する各頂点の変換された座標の絶対値(例えば、±x’,±y’,±z
’の絶対値)を比較するために使用される。本実施形態により、ペアードシング
ルフォーマットにおいて、CABS 607は、1クロックサイクルで4つまで
の表示量のエッジをテストする能力を提供する。
【0209】 詳細には、ペアードシングルフォーマットにおいて、CABS 607は、例
えば、(x’およびy’変換された座標を表す)|x|および|y|値を保持す
る第1のデータセットと、(表示平面を表しているかまたは、より詳細には、3
次元の量の2つの表示量のエッジを表している)|w|および|w|値を保持す
る第2のデータセットとを比較し得る。上記に述べられたように、シングルの大
きさ(magnitude)の比較(例えば、|x|<=|w|)は、x<=w
およびx≧−w(x<=wおよびx≧−wは、表示量のエッジをテストするため
に使用され得る)の従来の2ステップの不等式を置換し得る。したがって、xの
大きさが、wの大きさよりも小さいかまたは等しければ、xは対象表示量内に収
まる。同じテストを、yに適用する。
【0210】 表2を参照すると、14の条件シーケンス(すなわち、「LE」またはより小
さいまたは等しい)は、所望の条件をもたらすために、CABS 607の条件
フィールド630(図6G)内に配置され得る。このテストを上記に記載された
オペランドに適用することにより、4つの表示量のエッジ(すなわち、+/−w
に対して比較される+/−xおよび+/−y)は、シングルのCABS.PS命
令と比較される 6つの表示量エッジは、典型的には、プリミティブが3次元表示量(すなわち
、各座標x,yおよびz内の2つ)内にフィットするかどうかを判定するために
テストされる。従って、第2のCABS 607命令は、第2のCABS 60
7命令は、本例(すなわち、zの大きさがw以下であるかどうかを判定すること
)でのz座標をテストするために実行され得る。x、yおよびzに対するテスト
が全て真である場合、どんなクリッピングも要求されない。しかしながら、1つ
以上(しかし、すべてない)の座標が表示量から外れている場合、クリッピング
動作は、実行されるべきである。従って、表3の疑似コード(下)において示さ
れるように、対象の状態コードの任意の1つが偽とセットされる(すなわち、「
LE」条件は、少なくとも一つの座標に対し満たされていない)場合、クリッピ
ング動作へ分岐することは、この例において生じるべきである。
【0211】 他の実施形態において、シングルまたはダブルのFPフォーマットにおいて、
CABS607は、1クロックサイクルで2つの表示量エッジをテストすること
ができる(例えば、座標x,yまたはzの大きさを表すシングルのデータは、エ
ッジwの大きさを表す他のデータと比較される)。さらに他の実施形態においい
て、クワッドシングルデータフォーマットにおいて、CABS 607は、1つ
のクロックサイクルで8つまでの表示量エッジに対しテストする能力を提供し得
る。上記に記載されるように、CABS 607は、そのような比較の結果に基
づき条件コードをセットする。
【0212】 図11Aの工程1020において、図6Lの条件分岐命令BC1ANY4F
612は、好ましくは、工程1015からの条件コードに基づく適切な分岐ター
ゲットに分岐するために使用される。特定の表示量内でフィットするプリミティ
ブは受け取られ、それらの座標は、工程1025へ進む。特定の表示量でフィッ
トしないそれらのプリミティブは、除去される。部分的に、表示量内のみにある
それらのプリミティブは、表示量から外れている一部を取り除くためにクリップ
される必要がある。
【0213】 工程1015および1020の演算を例示する疑似コードは、下記の表3にお
いて提供される(ここで「FP#」は浮動小数点レジスタを表す)。ノーオペレ
ーション(Nops)は、浮動小数点パイプラインの特定の実施形態に対するパ
イプライン依存性の失速(stall)を防ぐ疑似コードにおいて使用される。
【0214】
【表3】 表3を参照すると、疑似コードに示されるように、ペアードシングルフォーマ
ットのシングルのCABS命令は、シングル演算において、4つの表示量エッジ
(すなわち、+/−wに対して+/−x、+/−y)のテストを提供する。CA
BSは、シングルクロックサイクルで実行されるので、4つの表示量エッジすべ
ては、このシングルサイクルにおいて比較される。
【0215】 表3の疑似コードは、座標(例えば、x)が、表示量エッジ(wにより規定さ
れる)を上回る場合にのみクリッピングが必要と判断されるクリップテストにつ
いて、例示的な命令シーケンス(CABS607およびBC1ANY4F 61
2命令を含む)を図示する。従って、この実施形態により、エッジの値に等しい
(すなわち、効果的にエッジの頂点上にある)座標は、対象表示量内にあること
が考慮される。当業者に明らかであるように、本明細書において記載される命令
はフレキシブルであり(例えば、表2に列挙される16のCABS条件シーケン
スを参照)、このクリップテストの変形(例えば、座標がエッジの値以上である
場合のクリッピングを要求すること)を支持し得る。
【0216】 表3および下記の表4および表5において提供される、nop(すなわち「命
令なし」)命令は、FPU270(図2C)の特定の実行およびパイプラインの
詳細に基づく。当業者により理解されているように、これらの命令は、他の実行
について数および配置内で増加し得るかまたは減少し得る。
【0217】 工程1022において、表示量内に部分的に存在するプリミティブはクリップ
され、結果として起こる(resultant)頂点の値は、公知のクリップル
ーチンを使用して決定される。
【0218】 工程1025において、3次元の値の座標を2次元に表現するために、変換さ
れた座標の遠近除算(perspective division)は、REC
IP1 603(図6C)を使用して、表示量内にあるそれらのプリミティブに
対して実行され、アプリケーション、RECIP2 604(図6D)次第であ
る。アプリケーションの中には、RECIP1 603の精度落としても十分で
あり、RECIP2 604は使用されないものもある。他のアプリケーション
において、例えば、より精度が要求される場合は、RECIP2 604も使用
され得る。
【0219】 工程1025の演算を例示する疑似コードは、一つの実施形態により下記の表
4において提供される。
【0220】
【表4】 工程1030において、2次元スクリーン空間にグラフィックイメージを表示
するための座標は、グラフィックパイプライン(例えば、レンダリングおよびラ
スタライゼーション(rasterization)の次の段階で使用するプロ
セス1000から出力される。
【0221】 (通常の座標を使用するジオメトリ計算の例示的なプロセス) 次に、図11Bを参照すると、図11Bは、本発明の1実施形態による面の通
常の座標を使用して、ジオメトリ計算のために図3の命令セットアーキテクチャ
を使用する工程を示す例示的なプロセス1100のフローチャートである。プロ
セス1100は、本実施形態による命令セットアーキテクチャを使用して実行さ
れ、例えば、プロセッサ102b(図2B)により実行される。プロセッサ11
00は、グラフィックパイプラインのジオメトリ部分に使用される。
【0222】 図11Bの工程1105において、公知の技術を使用し、グラフィックイメー
ジデータは、面の通常の座標[nxyz]を含む。
【0223】 工程1110において、本実施形態において、面の通常の座標は、図12Aに
示される演算と類似の演算において、ペアードシングルフォーマット命令MUL
、MADDおよびADDRを使用して、3行3列の浮動小数点の行列により[nx ’ny’nz’]に変換される。変換は、回転、平行移動(translati
ons)、座標軸に沿ったスケーリング、遠近変換およびこれらの組み合わせを
含む。
【0224】 図11Bの工程1115において、変換された面の通常の座標[nX’ny’nZ ’]は、アプリケーションに依存するRSQRT1 605命令(図6E)お
よびRSQRT2 606命令(図6F)を使用して、ユニット長ベクトルを表
すために、再正規化される(renormalized)。アプリケーションの
中には、RSQRT1 605の精度落としても十分であり、RSQRT2 6
06は使用されないものもある。他のアプリケーションにおいて、例えば、もっ
と色の要素の精度が必要とされる場合は、RSQRT2 606も使用される。
【0225】 RSQRT1のレベルにおいて、工程1115の演算を例示する疑似コードが
唯一、以下の表5において提供される。
【0226】
【表5】 図11Bの工程1120において、ベクトル「I」のドット積(これは、光源
への方向を定義する)および再正規化された座標[nx’’ ny’’ nz’’
]は、図6AのADDR601を使用して決定される。このドット積は、光源計
算の公知の様態において使用される。
【0227】 工程1125において、局所光源が考慮されるべきである場合、プロセス11
00は、工程1127に分岐する。局所光源が考慮されるべきでない場合、プロ
セス1100は、直接工程1129に進み、ドット積計算において既に計算され
た中間のベクトル「H」(示さず)を使用する。
【0228】 工程1127において、新たな中間ベクトル「H」が計算される。中間ベクト
ルは、光源計算において公知の方法で使用される。
【0229】 工程1128において、中間ベクトルは、アプリケーションおよび所望の精度
量に依存するRSQRT1 605の命令(図6E)およびRSQRT2 60
6命令(図6F)を使用して単位長さへ再正規化される。
【0230】 工程1129において、新しくまたは以前に計算された中間ベクトルのドット
積および再正規化された座標[nx’’ ny’’ nz’’]は、図6AのAD
DR 601を使用して決定される。このドット積は、光源計算(例えば、輝度
(shininess)について)において公知の方法で使用される。
【0231】 工程1130において、頂点の色度(赤、緑、青)は公知の方法で計算され、
その結果はプロセス1100から出力され、後の段階のグラフィックパイプライ
ン(例えば、レンダリングおよびラスター化)で使用される。
【0232】 要するに、本発明の実施形態は、プロセッサにおいて必要とされる合計の命令
の数を減らすことによりコンピュータで作成されるグラフィックデザインにおい
てのジオメトリプロセスのスピードアップが可能となる。この実施形態は、コン
ピュータで作成されるグラフィックおよび他のアプリケーションが要求される複
雑な計算を効果的に実行し得る命令セットを提供する。従って、プロセッサは、
ラスター化のエンジンのスピードに近いスピードで計算を実行することができる
。その結果、プロセッサは、グラフィックパイプラインのボトルネックにほとん
どなり得ない。
【0233】 本発明の好適な実施形態により、一般的な目的のプロセッサ(例えば、図2B
のプロセッサ102b)により実行される浮動小数点命令を含む命令セットアー
キテクチャに対するジオメトリアプリケーションの特定の拡張が提供され、従っ
て、高価なまたは専用のハードウェア設計のための必要性なしに、上記のことを
達成する。この実施形態は、ペアードシングル浮動小数点データセットフォーマ
ットおよび他の浮動小数点データセットフォーマット(例えば、シングル精度、
ダブル精度、クワッドシングル、および8倍シングル)で動作するように設計さ
れる。好適な実施形態により、一般的な目的のプロセッサ上で使用され得る命令
セットが提供され、これはコンピュータで作成されたグラフィックに要求される
複雑な計算を実行するに十分に有力である。(グラフィックおよびほかのアプリ
ケーションのための)専用プロセッサが、上記に記載されたアプリケーションの
特定の拡張を構築する命令のすべてまたは一部を実行するようにも構成され得る
ことが当業者とによって理解される。
【0234】 代替の実施形態において、本明細書において記載される命令セットアーキテク
チャに対するアプリケーションの特定の拡張は、コンピュータプログラム製品に
おいて実行され得、コンピュータプログラム製品は、例えばソフトウェアとして
媒体上で保存されるすべてまたは一部の拡張を有するコンピュータ読み出し可能
および/または使用可能な媒体(例えば、CD−ROM、DVD、フロッピー(
登録商標)ディスク、テープ、DRAMなど)を含む。このソフトウェアは、任
意の方法で実行され得、これは汎用のプロセッサ、専用プロセッサ、メインフレ
ーム、スーパーコンピュータ等でソフトを実行することを含む。
【0235】 従って、本発明の好適な実施形態(汎用の命令セットアーキテクチャのアプリ
ケーションの特定の拡張を有する汎用のプロセッサ)が記載される。本発明は、
特定の実施形態において記載されているが、本発明がそのような実施形態により
限られるよう解釈されるべきではないが、上記の特許請求の範囲により、より解
釈されるべきであることが理解されるべきである。
【図面の簡単な説明】
【図1】 図1は、本発明に従って、グラフィックスデザインおよび他の計算を実行する
ための例示的なコンピュータシステムのブロックダイアグラムである。
【図2A】 図2Aは、本発明の実施形態に従って、グラフィックスデザインおよび他の計
算を実行するための図1のコンピュータシステムの例示的な汎用プロセッサであ
る。
【図2B】 図2Bは、本発明の実施形態に従って、グラフィックスデザインおよび他の計
算を実行するための図1のコンピュータシステムの例示的な汎用プロセッサであ
る。
【図2C】 図2Cは、本発明に従う図2Bのプロセッサの浮動点ユニットの1実施形態の
ブロックダイアグラムである。
【図2D】 図2Dは、本発明の本実施形態に従う図2Cの浮動点ユニットを通過するデー
タフローを図示するブロックダイアグラムを提供する。
【図3】 図3は、本発明の1実施形態に従って、汎用性命令セット構築のレベルとジオ
メトリアプリケーション専用拡張の間の論理的な関係を図示したものである。
【図4】 図4は、本発明に従って、浮動点制御/状態レジスタの1実施形態を図示する
【図5】 図5は、本発明の1実施形態に従って、利用されるペアードシングルデータタ
イプを図示したものである。
【図6A】 図6Aは、本発明の1実施形態に従って、図3のジオメトリアプリケーション
専用拡張によって実行される演算命令の各々の実施形態を図示する。
【図6B】 図6Bは、本発明の1実施形態に従って、図3のジオメトリアプリケーション
専用拡張によって実行される演算命令の各々の実施形態を図示する。
【図6C】 図6Cは、本発明の1実施形態に従って、図3のジオメトリアプリケーション
専用拡張によって実行される演算命令の各々の実施形態を図示する。
【図6D】 図6Dは、本発明の1実施形態に従って、図3のジオメトリアプリケーション
専用拡張によって実行される演算命令の各々の実施形態を図示する。
【図6E】 図6Eは、本発明の1実施形態に従って、図3のジオメトリアプリケーション
専用拡張によって実行される演算命令の各々の実施形態を図示する。
【図6F】 図6Fは、本発明の1実施形態に従って、図3のジオメトリアプリケーション
専用拡張によって実行される演算命令の各々の実施形態を図示する。
【図6G】 図6Gは、本発明に従って、図3のジオメトリアプリケーション専用拡張によ
って実行される比較およびフォーマット変換命令の各々の実施形態を図示する。
【図6H】 図6Hは、本発明に従って、図3のジオメトリアプリケーション専用拡張によ
って実行される比較およびフォーマット変換命令の各々の実施形態を図示する。
【図6I】 図6Iは、本発明に従って、図3のジオメトリアプリケーション専用拡張によ
って実行される命令の各々の実施形態を図示する。
【図6J】 図6Jは、本発明に従って、図3のジオメトリアプリケーション専用拡張によ
って実行される条件ブランチ命令の各々の実施形態を図示する。
【図6K】 図6Kは、本発明に従って、図3のジオメトリアプリケーション専用拡張によ
って実行される条件ブランチ命令の各々の実施形態を図示する。
【図6L】 図6Lは、本発明に従って、図3のジオメトリアプリケーション専用拡張によ
って実行される条件ブランチ命令の各々の実施形態を図示する。
【図6M】 図6Mは、本発明に従って、図3のジオメトリアプリケーション専用拡張によ
って実行される条件ブランチ命令の各々の実施形態を図示する。
【図7A】 図7Aは、本発明の1実施形態に従って、ペアードシングルデータフォーマッ
トを用いるリダクション和演算およびリダクション積演算についてのデータフロ
ーダイアグラムである。
【図7B】 図7Bは、本発明の1実施形態に従って、クワッドシングル(quad−si
ngle)フォーマットを用いるリダクション和演算およびリダクション積演算
についてのデータフローダイアグラムである。
【図8】 図8は、本発明に従って、図3の命令セット構築によって実行される積/和命
令の1実施形態を図示する。
【図9】 図9は、本発明に従って、図3の命令セット構築によって実行される積命令の
1実施形態を図示する。
【図10】 図10は、本発明に従って、図3の命令セット構築によって実行される浮動点
変換命令を図示する。
【図11A】 図11Aは、本発明の1実施形態に従って、ワールド座標を用いるジオメトリ
変換計算用の図3の命令セット構築を使用する工程を示す例示的なプロセスのフ
ローチャートである。
【図11B】 図11Bは、本発明の1実施形態に従って、表面正規(surface no
rmal)座標を用いるジオメトリライティング計算用の図3の命令セット構築
を使用する工程を示す例示的なプロセスのフローチャートである。
【図12】 図12は、本発明の1実施形態に従って、代表的なジオメトリ計算(3次元マ
トリックス変換)を実行するように用いられる命令の注釈つきリスト項目を提供
する。
───────────────────────────────────────────────────── フロントページの続き (31)優先権主張番号 09/336,415 (32)優先日 平成11年6月17日(1999.6.17) (33)優先権主張国 米国(US) (31)優先権主張番号 09/335,444 (32)優先日 平成11年6月17日(1999.6.17) (33)優先権主張国 米国(US) (31)優先権主張番号 09/364,786 (32)優先日 平成11年7月30日(1999.7.30) (33)優先権主張国 米国(US) (31)優先権主張番号 09/364,789 (32)優先日 平成11年7月30日(1999.7.30) (33)優先権主張国 米国(US) (81)指定国 EP(AT,BE,CH,CY, DE,DK,ES,FI,FR,GB,GR,IE,I T,LU,MC,NL,PT,SE),JP,KR,S G (72)発明者 ウラー, ジー. マイケル アメリカ合衆国 カリフォルニア 94061, レッドウッド シティー, セコイア コート 8 (72)発明者 ホー, ユン−ワイ アメリカ合衆国 カリフォルニア 94024, ロス アルトス, アンバー レーン 804 (72)発明者 ハレル, シャンドレー ビー. アメリカ合衆国 カリフォルニア 95014, キュパーティノ, モンテベロ ロード 15986 Fターム(参考) 5B050 AA03 BA09 BA18 CA03 EA27 5B057 AA20 CA01 CA13 CA18 CB01 CB13 CB18 CD01 CH05 5B080 CA01 CA04 CA05 CA09 DA06 FA14 GA22

Claims (29)

    【特許請求の範囲】
  1. 【請求項1】 プロセッサにおいて、コンピュータグラフィックス計算を行
    う方法であって、 複数の座標でコンピュータグラフィックス画像において頂点を表す工程と、 該複数の座標を複数の変換された座標に変換する工程と、 浮動小数点方式による大きさ比較命令を用いて、該複数の変換された座標の少
    なくとも一部と、指定された表示量の複数の端を表す値との間の大きさの比較を
    行う工程であって、少なくとも3つの表示量の端についての該比較結果が得られ
    る、工程と を包含する方法。
  2. 【請求項2】 前記複数の変換された座標の前記部分が、平行して処理され
    る、請求項1に記載のコンピュータグラフィックス計算を行う方法。
  3. 【請求項3】 複数の条件コードビットを1つ以上の特定の状態に設定し、
    前記大きさの比較の結果を示す工程 をさらに包含する、請求項1に記載のコンピュータグラフィックス計算を行う方
    法。
  4. 【請求項4】 コンピュータグラフィックス計算用プロセッサであって、 バスと、 該バスに接続された命令ディスパッチユニットであって、浮動小数点ユニット
    への命令をディスパッチングする命令ディスパッチユニットと、 該バスに接続された該浮動小数点ユニットであって、コンピュータグラフィッ
    クス計算を行う方法を実現するように、該命令を実行する該浮動小数点ユニット
    と を備え、該方法は、 複数の座標でコンピュータグラフィックス画像において頂点を表す工程と、 該複数の座標を複数の変換された座標に変換する工程と、 浮動小数点方式による大きさ比較命令を用いて、該複数の変換された座標の少
    なくとも一部と、指定された表示量の複数の端を表す値との間の大きさの比較を
    行う工程であって、少なくとも3つの表示量の端についての該比較結果が得られ
    る、工程と 包含する、コンピュータグラフィックス計算用プロセッサ。
  5. 【請求項5】 前記コンピュータグラフィックス計算を行う方法が、 複数の条件コードビットを1つ以上の特定の状態に設定し、前記大きさの比較
    の結果を示す工程 をさらに包含する、請求項4に記載のプロセッサ。
  6. 【請求項6】 前記コンピュータグラフィックス計算を行う方法が、 前記大きさの比較の命令において、比較条件を指定する工程 をさらに包含する、請求項4に記載のプロセッサ。
  7. 【請求項7】 汎用プロセッサおよびメモリを含むシステムにおいて、複数
    の浮動小数点値を比較する方法が、 第1の命令を該メモリに格納する工程であって、該第1の命令が複数のオペラ
    ンドで動作するようにフォーマットされる、工程と、 該汎用プロセッサへの該第1の命令をディスパッチングする工程と、 該第1の命令を該汎用プロセッサにおいて実行する工程であって、該プロセッ
    サが該複数のオペランドで平行して操作して、複数の大きさの比較操作を行う、
    工程と を包含する、方法。
  8. 【請求項8】 複数のビットを設定する工程であって、該複数のビットのそ
    れぞれが、前記第1の命令によって特定の状態に設定され、前記複数の大きさの
    比較操作の結果を示す、工程 をさらに包含する、請求項7に記載の方法。
  9. 【請求項9】 前記第1の命令によって設定された前記複数のビットは、グ
    ラフィックスプリミティブが、少なくとも1つの表示量の端を横切るかどうかを
    示す、請求項8に記載の方法。
  10. 【請求項10】 前記第1の命令によって設定された前記複数のビットが、
    グラフィックスプリミティブが、少なくとも3つの表示量の端を横切るかどうか
    を示す、請求項8に記載の方法。
  11. 【請求項11】 プロセッサにおける方法であって、 実行ユニットへの1つの命令をディスパッチングする工程であって、該1つの
    命令は、複数のオペランドで動作するようにフォーマットされる、工程と、 該複数のオペランドを該実行ユニットに提供する工程であって、該複数のオペ
    ランドは、所与の複数の表示量の端を表す、工程と、 該複数のオペランドで平行して、該実行ユニットに複数の大きさの比較操作を
    行わせる、該1つの命令を実行する工程であって、該操作は、該所与の表示量の
    少なくとも3つの表示量の端をテストする、工程と を包含する、方法。
  12. 【請求項12】 複数のビットを設定する工程であって、該複数のビットが
    、前記少なくとも3つの表示量の視野の端がグラフィックスプリミティブによっ
    て横切られているかどうかを示す工程をさらに包含する、請求項11に記載の方
    法。
  13. 【請求項13】 汎用プロセッサおよびメモリを含むシステムにおける方法
    であって、 命令を該メモリに格納する工程と、 該汎用プロセッサへの該命令をディスパッチングする工程と、 該汎用プロセッサに第1のオペランドと第2のオペランドとの間の第1の大き
    さの比較操作を行わせる命令を実行する工程と を包含する、方法。
  14. 【請求項14】 前記命令が、複数のオペランドで動作するようにフォーマ
    ットされる、請求項13に記載の方法。
  15. 【請求項15】 前記実行する工程が、前記汎用プロセッサに、第3のオペ
    ランドと第4のオペランドとの間の第2の大きさの比較操作を行わせる、請求項
    14に記載の方法。
  16. 【請求項16】 複数の命令が格納されたコンピュータ読み出し可能媒体を
    備えるコンピュータプログラム製品であって、該複数の命令は、汎用プロセッサ
    がある特定の操作を行うことを可能にし、該複数の命令は、 第1の方法に従って、該汎用プロセッサが第1の複数のオペランドを処理する
    ことを可能にする第1の命令を含み、該第1の命令は、 該第1の複数のオペランドで平行して複数の大きさの比較の操作を行う工程
    と、 複数のビットを1つ以上の特定の状態に設定し、該複数の大きさの比較操作
    の結果を示す工程と を包含する、コンピュータプログラム製品。
  17. 【請求項17】 プロセッサにおいて、コンピュータグラフィックス計算を
    行う方法であって、 座標でコンピュータグラフィックス画像において頂点を表す工程と、 該座標を変換する工程と、 該複数の変換された座標と、指定された表示量の複数の端を表す値との比較を
    行う工程と、 複数の条件コードビットを1つ以上の特定の状態に設定し、前記比較の結果を
    示す工程と、 該複数の条件コードビットに基づいて、条件付きブランチを行う工程と を包含する、方法。
  18. 【請求項18】 a)ブランチ目標アドレスを計算する工程と、 b)該ブランチ目標アドレスにジャンプする工程と、 c)該ブランチ目標アドレスで命令を実行する工程であって、該計算、ジャンプ
    および実行は、条件コード状態に依存する、工程と をさらに包含する、請求項17に記載のコンピュータグラフィックス計算を行う
    方法。
  19. 【請求項19】 前記複数の条件コードビットのうちの1つを、前記条件付
    きブランチ命令におけるインジケータビットと比較して、該1つの条件コードビ
    ットが、所定の状態に設定されるかどうかを判定する、工程と、 該1つの条件コードビットが該所定の状態に設定される場合、工程a)〜工程
    c)を行う工程と をさらに包含する、請求項18に記載のコンピュータグラフィックス計算を行う
    方法。
  20. 【請求項20】 グラフィックスプリミティブが前記指定された表示量の第
    1の端を横切る場合、第1の条件コードビットを所定の状態に設定する工程と、 該グラフィックスプリミティブが前記指定された表示量の第2の端を横切る場
    合、第2の条件コードビットを所定の状態に設定する工程と、 該第1の条件コードビットまたは該第2の条件コードビットのいずれかが該所
    定の状態に設定される場合、工程a)〜工程c)を行う工程と をさらに包含する、請求項18に記載のコンピュータグラフィックス計算を行う
    方法。
  21. 【請求項21】 前記第1の条件コードビットおよび前記第2の条件コード
    ビットを、前記条件付きブランチ命令におけるインジケータビットと比較して、
    該第1の条件コードビットおよび該第2の条件コードビットが、所定の状態に設
    定されるかどうかを判定する、工程 をさらに包含する、請求項20に記載のコンピュータグラフィックス計算を行う
    方法。
  22. 【請求項22】 コンピュータグラフィックス計算用プロセッサであって、 バスと、 該バスに接続された命令ディスパッチユニットであって、浮動小数点ユニット
    に命令を送る命令ディスパッチユニットと、 該バスに接続された浮動小数点ユニットであって、コンピュータグラフィック
    ス計算を行う方法を実現するように、該命令を実行する浮動小数点ユニットと を備え、該方法は、 座標でコンピュータグラフィックス画像において頂点を表す工程と、 該座標を変換する工程と、 該複数の変換された座標と、指定された表示量の複数の端を表す値との比較を
    行う工程と、 複数の条件コードビットを1つ以上の特定の状態に設定し、前記比較の結果を
    示す工程と、 該複数の条件コードビットに基づいて、条件付きブランチを行う工程と 包含する、コンピュータグラフィックス計算用プロセッサ。
  23. 【請求項23】 前記コンピュータグラフィックス計算を行う方法が、 前記複数の条件コードビットのうちいずれか1つが所定の状態に設定される場
    合、ブランチ目標アドレスにジャンプする工程と、 をさらに包含する、請求項22に記載のプロセッサ。
  24. 【請求項24】 前記コンピュータグラフィックス計算を行う方法が、 記複数の条件コードビットを、前記条件付きブランチ命令におけるインジケー
    タビットと比較して、該複数の条件コードビットのうちいずれか1つが、所定の
    状態に設定されるかどうかを判定する、工程と をさらに包含する、請求項23に記載のプロセッサ。
  25. 【請求項25】 前記コンピュータグラフィックス計算を行う方法が、 ブランチ遅延スロット内の前記条件付きブランチ命令に続く命令のアドレスに
    オフセットを加えて、目標アドレスを作成する工程と、 該ブランチ遅延スロットにおける命令を実行する工程と、 該遅延スロットにおける該命令の実行の後、該目標に分岐する工程と をさらに包含する、請求項22に記載のプロセッサ。
  26. 【請求項26】 汎用プロセッサに接続されたメモリを有するシステムにお
    ける方法であって、 第1の命令および第2の命令を該メモリに格納する工程であって、該第1の命
    令が複数のオペランドで操作するようにフォーマットされる、工程と、 該第1の命令を該汎用プロセッサにおいて処理する工程であって、該第1の命
    令が、該複数のオペランドで平行して操作して、複数の大きさの比較操作を行う
    、工程と、 該大きさの比較操作に応答して、複数のビットを、1つ以上の特定の状態に設
    定する工程と、 該プロセッサにおける該第2の命令を処理する工程であって、該第2の命令は
    、該複数のビットに応答して、分岐操作を選択的に開始する工程と を包含する、方法。
  27. 【請求項27】 前記処理する工程が、 前記複数のビットを結合して、組み合わせされたビットを発生する工程と、 該組み合わせされたビットを前記第2の命令におけるインジケータビットと比
    較して、該組み合わせされたビットが、所定の状態に設定されているかどうか判
    定する工程と、 該組み合わせされたビットが、該所定の状態に設定される場合、ブランチ目標
    アドレスにジャンプする工程と を包含する、請求項26に記載の方法。
  28. 【請求項28】 汎用プロセッサに接続されたメモリを有するシステムにお
    ける方法であって、 第1の命令、第2の命令、および第3の命令を該メモリに格納する工程と、 該汎用プロセッサにおける該第1の命令を処理する工程であって、該プロセッ
    サは、第1のオペランドで操作し、第1の大きさの比較操作を行い、第1の結果
    ビットを発生する、工程と、 該汎用プロセッサにおける該第2の命令を処理する工程であって、該プロセッ
    サは、第2のオペランドで操作し、第2の大きさの比較操作を行い、第2の結果
    ビットを発生する、工程と、 該汎用プロセッサにおける該第3の命令を処理する工程であって、該第1また
    は第2の結果ビットのいずれかか所定の値に設定される場合、ブランチ目標アド
    レスにジャンプする、工程と、 を包含する、方法。
  29. 【請求項29】 複数の命令が格納されたコンピュータ読み出し可能媒体を
    備える、コンピュータプログラム製品であって、該複数の命令は、汎用プロセッ
    サがある特定の操作を行うことを可能にし、該複数の命令は、 該汎用プロセッサが、平行して複数の大きさの比較操作を行い、複数の結果ビ
    ットを1つ以上の特定の状態に設定することを可能にする第1の命令と、 該汎用プロセッサが、該複数の結果ビットに応答して、ブランチ目標アドレス
    にジャンプすることを可能にする第2の命令と を含む、コンピュータプログラム製品。
JP2000598932A 1999-02-12 2000-02-14 命令セット構造の比較拡張を有するプロセッサ Withdrawn JP2002536763A (ja)

Applications Claiming Priority (13)

Application Number Priority Date Filing Date Title
US24949899A 1999-02-12 1999-02-12
US24917799A 1999-02-12 1999-02-12
US09/249,498 1999-02-12
US09/249,177 1999-02-12
US33544499A 1999-06-17 1999-06-17
US33641599A 1999-06-17 1999-06-17
US09/335,444 1999-06-17
US09/336,415 1999-06-17
US09/364,786 US7242414B1 (en) 1999-07-30 1999-07-30 Processor having a compare extension of an instruction set architecture
US09/364,789 US6732259B1 (en) 1999-07-30 1999-07-30 Processor having a conditional branch extension of an instruction set architecture
US09/364,786 1999-07-30
US09/364,789 1999-07-30
PCT/US2000/003900 WO2000048080A1 (en) 1999-02-12 2000-02-14 Processor having a compare extension of an instruction set architecture

Publications (1)

Publication Number Publication Date
JP2002536763A true JP2002536763A (ja) 2002-10-29

Family

ID=27559356

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2000598932A Withdrawn JP2002536763A (ja) 1999-02-12 2000-02-14 命令セット構造の比較拡張を有するプロセッサ

Country Status (3)

Country Link
EP (1) EP1163591B1 (ja)
JP (1) JP2002536763A (ja)
WO (1) WO2000048080A1 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6980218B1 (en) * 2000-08-23 2005-12-27 Nintendo Co., Ltd. Method and apparatus for efficient generation of texture coordinate displacements for implementing emboss-style bump mapping in a graphics rendering system
US10474458B2 (en) * 2017-04-28 2019-11-12 Intel Corporation Instructions and logic to perform floating-point and integer operations for machine learning

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4630192A (en) * 1983-05-18 1986-12-16 International Business Machines Corporation Apparatus for executing an instruction and for simultaneously generating and storing related information
US5720019A (en) * 1995-06-08 1998-02-17 Hewlett-Packard Company Computer graphics system having high performance primitive clipping preprocessing
DE69628451D1 (de) * 1995-07-26 2003-07-03 Apple Computer Verfahren zur zeilendarstellung durch sortieren von segmenten und untersegmenten
US5852726A (en) * 1995-12-19 1998-12-22 Intel Corporation Method and apparatus for executing two types of instructions that specify registers of a shared logical register file in a stack and a non-stack referenced manner
US5729724A (en) * 1995-12-20 1998-03-17 Intel Corporation Adaptive 128-bit floating point load and store operations for quadruple precision compatibility
US5790827A (en) * 1997-06-20 1998-08-04 Sun Microsystems, Inc. Method for dependency checking using a scoreboard for a pair of register sets having different precisions

Also Published As

Publication number Publication date
EP1163591B1 (en) 2017-08-16
EP1163591A4 (en) 2006-03-22
EP1163591A1 (en) 2001-12-19
WO2000048080A1 (en) 2000-08-17

Similar Documents

Publication Publication Date Title
US7724261B2 (en) Processor having a compare extension of an instruction set architecture
US11797303B2 (en) Generalized acceleration of matrix multiply accumulate operations
US6714197B1 (en) Processor having an arithmetic extension of an instruction set architecture
US8037119B1 (en) Multipurpose functional unit with single-precision and double-precision operations
KR101009095B1 (ko) 다목적 배정도 기능 유닛을 구비한 그래픽 프로세서
KR101515311B1 (ko) 승산-승산-누산 명령 수행
RU2263947C2 (ru) Целочисленное умножение высокого порядка с округлением и сдвигом в архитектуре с одним потоком команд и множеством потоков данных
US6873324B2 (en) Data processing method, recording medium and data processing apparatus
JP5111377B2 (ja) 浮動小数点パイプラインに係る装置、方法およびシステム
US11816482B2 (en) Generalized acceleration of matrix multiply accumulate operations
US8051123B1 (en) Multipurpose functional unit with double-precision and filtering operations
US20080263122A1 (en) Multi-function floating point arithmetic pipeline
US20090049113A1 (en) Method and Apparatus for Implementing a Multiple Operand Vector Floating Point Summation to Scalar Function
JPH113226A (ja) 統合グラフィックス機能を有するcpu用のビジュアル命令セット
US7640285B1 (en) Multipurpose arithmetic functional unit
US6732259B1 (en) Processor having a conditional branch extension of an instruction set architecture
KR20070085755A (ko) 다목적 승산-가산 기능 유닛
US5767867A (en) Method for alpha blending images utilizing a visual instruction set
US8190669B1 (en) Multipurpose arithmetic functional unit
JP2002536763A (ja) 命令セット構造の比較拡張を有するプロセッサ
US20060101243A1 (en) Multipurpose functional unit with multiply-add and logical test pipeline
WO2000048080A9 (en) Processor having a compare extension of an instruction set architecture

Legal Events

Date Code Title Description
A300 Application deemed to be withdrawn because no request for examination was validly filed

Free format text: JAPANESE INTERMEDIATE CODE: A300

Effective date: 20070501