(57)【特許請求の範囲】
【請求項１】
浮動小数点除算演算を実行するための装置であって、
それぞれが符号ビットを有する浮動小数点分子および浮動小数点分母を受け取って、前記浮動小数点分子および前記浮動小数点分母に対して浮動小数点除算演算を実行する除算器と、
符号ビットを有する浮動小数点値０．０および修正された浮動小数点分母を受け取って、前記浮動小数点値０．０と前記修正された浮動小数点分母との比較を実行する比較器であって、前記修正された浮動小数点分母が、修正された符号ビットを有する前記浮動小数点分母からなり、前記修正された符号ビットが前記浮動小数点値０．０の符号ビットに等しいことからなる、比較器と、及び
前記浮動小数点除算演算を指示する制御信号に応答して、前記修正された符号ビットを提供するための論理要素
とを備え、
前記論理要素が、第１の入力において前記制御信号を受け取り、第２の入力において前記浮動小数点分母の符号ビットを受け取って、前記比較器に正の符号を表わす出力を提供するＡＮＤゲートからなり、及び、
前記比較の結果は、ゼロ除算演算を表わし、前記浮動小数点分母の符号には無関係であることからなる、装置。
【請求項２】
前記浮動小数点分子、前記浮動小数点分母、及び前記浮動小数点値０．０を包含するレジスタファイルと、
前記レジスタファイルと前記比較器との間に結合されて、前記浮動小数点値０．０を受け取って保持するための第１のレジスタと、及び
前記レジスタファイルと前記比較器との間に結合されて、前記修正された浮動小数点分母を受け取って保持するように前記論理要素に結合された入力を有する第２のレジスタ
とを更に備えることからなる、請求項１に記載の装置。
【請求項３】
前記浮動小数点分子、前記浮動小数点分母、及び前記浮動小数点値０．０を包含する記憶装置を更に備える、請求項１に記載の装置。
【請求項４】
前記記憶装置がレジスタファイルを含む、請求項３に記載の装置。
【請求項５】
浮動小数点除算演算を実行するための方法であって、
浮動小数点分子および浮動小数点分母をハードウエア除算器に供給し、
前記ハードウエア除算器を用いて前記浮動小数点分子および前記浮動小数点分母に対して浮動小数点除算演算を実行し、
符号ビットを有する浮動小数点値０．０と、修正された浮動小数点分母とをハードウエア比較器に供給し、前記修正された浮動小数点分母が、修正された符号ビットを有する前記浮動小数点分母からなり、前記修正された符号ビットが前記浮動小数点値０．０の符号ビットに等しく、及び
前記浮動小数点値０．０と前記修正された浮動小数点分母との比較を実行する
といった各ステップを含み、
前記浮動小数点除算演算を指示する制御信号に応答して、論理要素が、前記修正された符号ビットを提供し、
前記論理要素が、第１の入力において前記制御信号を受け取り、第２の入力において前記浮動小数点分母の符号ビットを受け取って、前記比較器に正の符号を表わす出力を提供するＡＮＤゲートからなり、及び、
前記比較の結果は、ゼロ除算演算を表わし、前記浮動小数点分母の符号には無関係であることからなる、方法。
【請求項６】
前記修正された浮動小数点分母を供給するステップが、前記比較器に前記浮動小数点分母の正の符号を表わす入力を提供することを含むことからなる、請求項５に記載の方法。
【請求項７】
前記浮動小数点値０．０を第１のレジスタ内に保持するステップと、前記比較を実行するステップ中に、前記修正された浮動小数点分母を第２のレジスタ内に保持するステップとを更に含むことからなる、請求項５に記載の方法。
【請求項８】
前記浮動小数点分子、前記浮動小数点分母、及び前記浮動小数点値０．０をレジスタファイル内に記憶するステップを更に含み、
前記浮動小数点分子および前記浮動小数点分母が、前記レジスタファイルから、前記浮動小数点除算演算を実行するための前記ハードウエア除算器に供給され、前記浮動小数点値０．０が、前記レジスタファイルから、前記比較を実行するための前記ハードウエア比較器に供給されることからなる、請求項５に記載の方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は浮動小数点数の処理方法および装置に関する。本発明は特にゼロ除算または負のゼロの状態の検出方法および装置に関する。
【０００２】
【従来の技術】
非常に大きい数あるいは非常に小さい数を用いた計算を行なう上で精度が要求される場合に浮動小数点数を用いることが多い。浮動小数点数体系においては、ある数の指数は１０進小数点がシフトされるたびに増減する。たとえば、光速は３．００×１０8 ｍ／ｓあるいは０．３×１０9 ｍ／ｓあるいは３０．０×１０7 ｍ／ｓと表わすことができる。指数は１０進小数点が左シフトされると大きくなり、右シフトされると小さくなる。
【０００３】
多くのコンピュータはソフトウエアあるいはハードウエアにより、（固定小数点に対して）浮動小数点数すなわち“指数表現”を処理する手段を提供する。この手段によるフォーマットでは、コンピュータワード（あるいは多くの場合ワード群）は次表のようなビットあるいはフィールドに分割される。
【０００４】
【表１】
0004148560.tif 000002
【０００５】
ここで、Signは符号を、EXPONENTは指数部を、FRACTIONは小数部（又は仮数部）の値をそれぞれ示す。このフォーマットは、
（Sign）（２EXPONENT）・（FRACTION）
によって定義される値を表わす。浮動小数点値は仮数部では８桁の精度を有し、指数部では２桁あるいは３桁の精度を有する。機械によっては、上の表現における”２”が”１６”に置き換えられ、これは指数の位取りに相当する。指数部および少数部（又は仮数部）はいずれも符号を有し、指数フィールドはそれ自体の符号を有し、明示された符号ビット（浮動小数点表現全体における左端のビット）は少数部に属する。３２ビット浮動小数点表現においては、指数部は通常８ビット、少数部すなわち仮数部は通常２３ビットである。
【０００６】
負のゼロは非常に大きな数の減算の結果生じることがある。負のゼロとは非常に小さな負の数を指す。符号ビットは負であり、その数の符号を表わすが、少数フィールドはゼロである。同様に、正の符号を有するゼロの少数フィールドがゼロあるいは非常に小さな正の数を表わす場合がある。ゼロの少数フィールドと正あるいは負の符号を有する浮動小数点数を除算における分母として用いると、ゼロ除算エラーすなわち除算例外が発生する。
【０００７】
ゼロ除算エラーの防止は、広汎なコンピュータおよびコンピュータ関連システムの効率的かつ高速な動作に不可欠である。パイプライン処理の除算器を用いて除算を実行する際には、除算器の動作が完了しエラーが発生する前にゼロ除算状態を検出することが望ましい。従来の方法では、除算動作の完了を待って、その後非常に複雑なエラー処理論理および／またはソフトウエアを用いてパイプラインのフラッシングと再起動が行なわれる。また、従来の方法では、正のゼロと負のゼロをチェックする２つの比較演算を順次実行する。しかしながら、正のゼロと負のゼロのチェックに２つの別個の比較演算を必要とする場合、除算の完了前にゼロ除算の検出と修正を行なうだけの時間がない場合がある。
【０００８】
膨大な数の計算を行う上において高速性が不可欠なシステムの一例としてコンピュータグラフィックスシステムがある。一般に、３次元空間たとえばｘ、ｙ、ｚ座標における頂点の値を表現するには浮動小数点数が用いられる。コンピュータグラフィックスシステムは２次元表示画面上での物体の図形的表現に広く用いられる。現在のコンピュータグラフィックスシステムは高度に詳細な表現が可能であり、さまざまな用途に用いられている。
【０００９】
通常のコンピュータグラフィックスシステムの基本要素には、ジオメトリアクセラレータ、ラスタライザおよびフレームバッファがある。また、かかるシステムにはテクスチャマッピングハードウエア等の他のハードウエアが含まれる場合がある。通常のコンピュータグラフィックスシステムにおいては、表示画面上に表現すべき対象物は複数の図形要素に分割される。点、線、ベクトル、ポリゴン（たとえば三角形）等の図形要素がグラフィックスピクチャの基本要素である。通常、ハードウエア／ソフトウエアによる機構を用いて２次元表示画面上に１つあるいはそれ以上の対象物の光景を構成する図形要素がレンダリング（描画）される。ジオメトリアクセラレータはホストコンピュータからレンダリングすべき対象物を構成する図形要素の頂点座標および色データを受け取る。その図形要素が三角形である場合、たとえばホストコンピュータはその三角形を各頂点のｘ、ｙ、ｚ座標と赤、緑、青（Ｒ、Ｇ、Ｂ）の色の値で定義する場合がある。ジオメトリアクセラレータは通常頂点座標データに対して（画面空間座標への）変換を実行し、四角形を三角形に分解する。あるいは、各図形要素に対して照明、クリッピング、平面方程式の計算等の他の機能を実行する場合もある。ラスタライザ（および場合によってはテクスチャマッピングハードウエア）はジオメトリアクセラレータからの出力（レンダリングデータと呼ぶ）を用いて図形要素を構成する各画素の最終的な画面空間座標およびＲ、Ｇ、Ｂの色の値を計算する。画素データはフレームバッファに記憶され、表示画面上に表示される。グラフィックスシステムのなかには、各種の動作（変換、補間その他）を異なる目的図形要素上で異なる構成要素によって同時に実行するようにパイプライン化されたものもある。
【００１０】
ジオメトリアクセラレータの動作は計算量の極めて大きいものである。３Ｄ（三次元）図形表示の１フレームは数十万というオーダーの図形要素を含むことがある。最先端の性能を得るためには、ジオメトリアクセラレータは１チップあたり１秒に数億というオーダーの浮動小数点計算を実行しなければならない場合がある。さらに、ホストコンピュータとグラフィックスハードウエアの間で転送されるデータの量は膨大なものである。１つの四角形のデータは、それぞれが３２ビットからなる６４ワードというオーダーになる場合もある。ホストコンピュータからジオメトリアクセラレータに送出される他のデータとしては、照明パラメータ、クリッピングパラメータおよび図形表示の生成に必要な他のパラメータがある。
【００１１】
ジオメトリアクセラレータの機能としては、３次元変換、照明、クリッピング、パースペクティブデバイド演算(perspective divide operation)および浮動小数点フォーマットで実行される平面方程式の生成がある。ジオメトリアクセラレータの機能によってレンダリングデータが得られ、これがフレームバッファサブシステムに送られラスタ化される。
【００１２】
ジオメトリアクセラレータの性能の改善にはパイプライン処理や多重処理等さまざまな技術が用いられてきた。しかし、さらなる性能の改善が必要とされている。特に、ジオメトリアクセラレータの実行する計算の効率の向上が必要とされている。
【００１３】
【発明が解決しようとする課題】
本発明の目的は、ジオメトリアクセラレータの計算の効率に向上をもたらす、浮動小数点除算演算装置及び方法を提供することである。
【００１４】
【課題を解決するための手段】
本発明の一側面によれば、浮動小数点除算演算を実行する装置が提供される。この装置は、浮動小数点分子および浮動小数点分母を受け取り、前記浮動小数点分子および前記浮動小数点分母に浮動小数点除算演算を実行する除算器、および浮動小数点値０．０と前記浮動小数点分母を受け取り、前記浮動小数点値０．０および浮動小数点分母について、前記浮動小数点分母の符号を除いた比較を実行する比較器を備える。この装置はさらに前記浮動小数点除算演算を示す制御信号に応答して前記比較器に前記浮動小数点分母と前記０．０の浮動小数点値に関係付けられた等しい符号ビットを供給する論理要素を有する。この比較の結果はゼロ除算演算を表わし、また浮動小数点分母の符号には無関係である。
【００１５】
この装置はさらに、前記浮動小数点分子および浮動小数点分母を前記の除算器に供給し、前記浮動小数点値０．０および浮動小数点分母を比較器に供給するためのレジスタファイル等の記憶装置を備える。第１のレジスタを前記レジスタファイルと比較器の間に接続して前記浮動小数点値０．０を保持することができる。第２のレジスタを前記レジスタファイルと前記比較器の間に接続して前記浮動小数点分母を、前記符号ビットを除いて保持することができる。前記論理要素は第１の入力で前記制御信号を第２の入力で前記浮動小数点分母を受け取るＡＮＤゲートとすることができる。
【００１６】
本発明の他の側面によると、浮動小数点除算演算の実行方法が提供される。浮動小数点分子および浮動小数点分母がハードウエア除算器に供給される。浮動小数点除算演算が前記ハードウエア除算器を用いて前記浮動小数点分子および前記浮動小数点分母に対して実行される。浮動小数点値０．０および前記浮動小数点分母が前記浮動小数点分母の符号ビットを除いてハードウエア比較器に供給される。前記浮動小数点分母の前記の符号ビットを前記浮動小数点値０．０の符号ビット（通常は正）に等しくする。等しい符号ビットを有する前記浮動小数点値０．０と前記浮動小数点分母の比較が実行される。この比較の結果はゼロ除算演算を表わし、またこれは前記浮動小数点分母とは無関係である。本発明は最小限の回路構成でゼロ除算状態を迅速に検出することを可能にする。
【００１７】
【発明の実施の形態】
図１は本発明の実施に適したコンピュータグラフィックスシステムの一実施形態を示すブロック図である。このシステムは一例であり、本発明を限定するものではなく、また本発明の方法および装置は任意のコンピュータグラフィックスシステムに利用可能であることを指摘しておく。さらに、下に説明するように、本発明はコンピュータグラフィックスシステムにおける用途には限定されない。
【００１８】
図１のシステムはホストコンピュータ１００、フロントエンドサブシステム１０２およびフレームバッファサブシステム１０４を有する。フロントエンドサブシステム１０２はバス１０１を介してホストコンピュータ１００から図形要素を受け取る。図形要素は通常三角形の頂点等の図形要素の各部分に関するｘ、ｙ、ｚ座標データ、Ｒ、Ｇ、Ｂ色データ、Ｎｘ、Ｎｙ、Ｎｚ通常データ、α混合データ等によって記述される。
【００１９】
３次元の図形要素を表わすデータはフロントエンドサブシステム１０２からフレームバッファサブシステムに、セグメント１２２Ａ、１２２Ｂおよび１２２Ｃを有するバス１２２を介して供給される。フレームバッファサブシステム１０４はフロントエンドサブシステム１０２から受け取ったレンダリングデータを補間して各図形要素を表わす表示画面上の画素を計算し、各画素についての目的Ｒ、Ｇ、Ｂ色値を判定する。各画素に対するＲ、Ｇ、Ｂ色制御信号がそれぞれＲ、Ｇ、Ｂライン１２３を介して供給され、表示画面（図示せず）上の画素を画像を表示するように制御する。
【００２０】
図１に示す実施形態においては、フロントエンドサブシステム１０２はホストインターフェース１０６および３次元（３Ｄ）ジオメトリアクセラレータ１１０を含む。図示するように、ホストインターフェース１０６はホストコンピュータ１００からのバス１０１上でｘ、ｙ、ｚ座標および色基本データを受け取る。かかるデータはバス１０８上でホストインターフェース１０６からジオメトリアクセラレータ１１０に供給される。ジオメトリアクセラレータ１１０は表示すべきレンダリングデータを生成する従来のジオメトリアクセラレータの機能を実行する。かかる機能には、３次元変換、照明、クリッピングおよびパースペクティブデバイド演算、および浮動小数点フォーマットで実行される平面方程式の生成が含まれる。レンダリングデータはジオメトリアクセラレータ１１０からバス１１２上をホストインターフェース１０６に供給され、ホストインターフェース１０６はレンダリングデータをフォーマットし直し、浮動小数点／固定点変換を実行し、かかるデータをバスシステム１２２上でフレームバッファサブシステム１０４に供給する。
【００２１】
本実施形態では、フレームバッファサブシステム１０４はそれぞれが対応するシリアル同期グラフィックスランダムアクセスメモリ（ＳＧＲＡＭ）１１６Ａ、１１６Ｂおよびランダムアクセスメモリデジタル／アナログ変換器（ＲＡＭＤＡＣ）１２０を含む。本発明のバスアーキテクチャ１２２にはフレームバッファコントローラ１１４Ａおよび１１４Ｂとホストインターフェース１０６の両方が接続されている。本実施形態では、バス１２２は互いに同一な３つのバス１２２Ａ、１２２Ｂおよび１２２Ｃを含む。
【００２２】
図１に示す実施形態では、フレームバッファコントローラ１１４Ａおよび１１４Ｂはそれぞれホストインターフェース１０６からレンダリングデータを受け取る。各フレームバッファコントローラは表示画面の異なる重なり合わない部分を制御する。フレームバッファコントローラは図形要素データを補間してその図形要素を表わす画面表示画素座標および各画素座標の対応する目的Ｒ、Ｇ、Ｂ色値を計算する。
【００２３】
その結果フレームバッファコントローラ１１４Ａおよび１１４Ｂによって生成される、各画素のＲ、Ｇ、Ｂ値を含む画像ビデオデータは対応するＳＧＲＡＭ  １１６Ａおよび１１６Ｂに記憶される。ビデオデータはＳＧＲＡＭチップから順次シフトアウトされ、ＲＡＭＤＡＣ  １２０によって処理しうるようにフォーマットし直され、ＲＡＭＤＡＣに供給される。ＲＡＭＤＡＣ  １２０はこのデジタル色データを各画素のアナログＲ、Ｇ、Ｂ色制御信号に変換し、これらの信号がＲ、Ｇ、Ｂライン１２３上で供給され表示画面（図示せず）が制御される。
【００２４】
ホストインターフェース１０６はまたビデオバス１２４を介してＲＡＭＤＡＣ１２０と直接通信することができる。このシステムをパイプライン化されたシステムとして、フレームバッファサブシステム１０４が、フロントエンドサブシステム１０２が（時間的に）後続の図形要素を処理している間に第１の図形要素を処理しうるようにすることが好適である。
【００２５】
図２は本発明を有益に実施することのできるジオメトリアクセラレータ１１０の非常に簡略化したブロック図である。変換機械２１０は頂点のｘ、ｙ、ｚ座標および頂点のＲ、Ｇ、Ｂ色値を含む図形要素の定義を受け取る。変換機械２１０はかかる座標を表示画面空間に変換する。分解機械２１５がポリゴンを三角形およびグラフィックスハードウエアの使用する他の図形要素に分解する。照明機械２２０は、図形表示が１つあるいはそれ以上の光源によって照射されるように照明計算を実行する。クリッパー２２５が表示画面空間から部分的に出ている図形要素についてクリッピング計算を実行する。変換機械、分解機械２１５、照明機械２２０およびクリッパー２２５は頂点データに対して必要な計算を実行してフレームバッファ１０４（図１）にレンダリングデータを供給する状態機械として実施することができる。かかる計算の詳細は本発明の範囲外であるが、かかる計算はできるだけ迅速かつ効率的に実行することが望ましい。
【００２６】
図３は本発明に係る浮動小数点ゼロまたは負のゼロによる除算を高速にチェックする装置の一例のブロック図である。マルチポートレジスタファイル３００が前に計算された浮動小数点値あるいはホストコンピュータから受け取った浮動小数点値を保持する。また、レジスタファイル３００は浮動小数点定数０．０を保持する。浮動小数点除算器３２０はレジスタファイル３００からバス３１０上で分子Ａの浮動小数点値を受け取り、バス３０５上で分母Ｂを受け取る。また、レジスタファイル３００はバス３１５上のレジスタ３３５およびバス３０５上のレジスタ３４０に浮動小数点数を供給する。レジスタ３３５および３４０の出力はそれぞれバス３４５および３５０を介して浮動小数点比較器３５５に接続されている。レジスタ３３５および３４０はパイプライン処理およびタイミングの目的に用いられ、実施態様によっては削除することもできる。レジスタ３３５およびレジスタ３４０のＣＬＫ入力は除算器３２０のＣＬＫ入力と同期している。本発明においては、浮動小数点定数０．０はレジスタ３３５に保持され、比較器３５５における浮動小数点ゼロすなわち負のゼロのチェックに用いられる。
【００２７】
ＡＮＤゲート３３０が第１の入力でバス３０５のライン３３２上の分母の符号ビットを受け取り、第２の入力でコントローラ３２５からのＣＬＥＡＲ＿ＳＩＧＮ＿Ｎ信号を受け取る。ＡＮＤゲート３３０の出力はライン３３４上でレジスタ３４０に修正済符号ビットとして渡される。一実施形態では、バス３０５、３１０、３１５、３４５および３５０上で搬送される浮動小数点値は３２ビットワードであり、それぞれのバスは３２ラインを有する。ライン３３２上の符号ビットはバス３０５の適当なラインから得られる。
【００２８】
次に、図３に示す装置の動作について説明する。除算器３２０が浮動小数点除算演算を実行するとき、ＣＬＥＡＲ＿ＳＩＧＮ＿Ｎ信号はコントローラ３２５によって除算演算を表わす“０”に設定される。バス３１０上の分子およびバス３０５上の分母（いずれも浮動小数点値）がレジスタファイル３００から除算器３２０にロードされ、除算演算が開始される。除算器３２０の出力は結果Ａ＿ＤＩＶＩＤＥＤ＿ＢＹ＿Ｂである。
【００２９】
レジスタ３３５にはレジスタファイル３００から浮動小数点定数０．０がロードされる。バス３０５上の分母は符号ビットを除いてレジスタ３４０に送られる。ライン３３２上のこの分母の符号ビットはＡＮＤゲート３３０に送られる。また、ＡＮＤゲート３３０はコントローラ３２５からＣＬＥＡＲ＿ＳＩＧＮ＿Ｎ信号（“０”に設定されている）を受け取り、分母の符号ビットを修正する。ライン３３４上のＡＮＤゲート３３０の出力はレジスタ３４０の、通常比較すべき浮動小数点分母の符号ビットを受け取る入力に送られる。ＡＮＤゲート３３０がレジスタ３４０に供給される分母の符号をレジスタ３３５に供給される浮動小数点定数０．０の符号ビット（通常は正）と同じになるように制御する。したがって、この比較の結果は分母の符号ビットとは無関係である。次に、修正された符号ビットを含む浮動小数点分母が比較器３５５によってレジスタ３３５に記憶された浮動小数点定数０．０と比較される。バス３４５および３５０上の入力が等しいとき比較器３５５のＣ＿ＥＱＵＡＬ＿Ｂ出力が表明され、これはゼロによる除算すなわち負のゼロの状態を表わす。この比較結果をコントローラ３２５に送ってこのゼロ除算状態に応答することができる。
【００３０】
分母の符号ビットを修正することによって、比較器３５５は分母の符号とは無関係に１つの比較演算で除算演算の分母がゼロ（あるいはほぼゼロ）の値を有するかどうかを判定する。ＣＬＥＡＲ＿ＳＩＧＮ＿Ｎ信号を“１”に設定すると、比較器３５５は通常動作を行なって本発明の浮動小数点ゼロすなわち負のゼロの高速チェックに無関係な他の比較機能を実行することができる。ＣＬＥＡＲ＿ＳＩＧＮ＿Ｎ信号が“１”に設定されているとき、ライン３３２上のビットはＡＮＤゲート３３０を単に通過してレジスタ３４０に渡される。
【００３１】
ＡＮＤゲート３３０はシステムが分母を０．０と比較して、分母がゼロあるいはほぼゼロであるときその符号と無関係にＣ＿ＥＱＵＡＬ＿Ｂ信号を供給することを可能とする。本発明はゼロ除算状態を１つの比較によって高速かつ最小限の論理／ソフトウエアオーバーヘッドで検出することを可能とする。ゼロ除算状態は１クロックサイクル中に検出可能である。
【００３２】
除算演算が開始されると、本発明の装置は浮動小数点ゼロすなわち負のゼロの高速チェックを開始する。除算器３２０が１つの除算演算を行なうには、いくつかの（通常約８）のタイミング状態が必要であるため、高速チェックが１つのタイミング状態内で完了すれば、除算演算が完了する前にその結果が得られる。コントローラ３２５はこの比較結果を処理し、その後いくつかのタイミング状態のうちにこのゼロ除算状態を解消する方法を決定すればよい。任意の所望の動作を実行してゼロ除算状態に応答することができる。たとえば、コントローラ３２５はレジスタファイル３００あるいは他の場所に記憶された数を除算器３２０からの結果に置き換えることができる。また、コントローラ３２５は除算演算の完了前の終了および／またはエラー処理ルーチンを実行することができる。
【００３３】
通常、除算演算および比較演算は同じクロックサイクルあるいはタイミング状態で開始される。比較演算は１クロックサイクルしか必要とせず、除算演算は数クロックサイクルを要するため、この比較の結果は除算演算が完了する前に利用可能になる。分母が得られれば、比較演算は除算動作の開始される１クロックサイクル以上前あるいは後に開始することができる。比較演算の結果は、除算演算が完了し、エラーを生成する前に得られなければならない。
【００３４】
前述したコンピュータグラフィックスの例では、表示の各フレームについて数百万の計算が必要である。かかる計算の一部は除算演算である。たとえば、ジオメトリアクセラレータの実行するクリッピング計算には比率の計算が必要である。本発明は１つの比較演算のみでゼロ除算状態を検出することによってジオメトリアクセラレータの全体的計算速度を増大させる。ゼロ除算状態は迅速にまた除算演算の完了前に検出されるため、従来のシステムに用いられる複雑なエラー回復機構を用いることなく適当なステップを実行することができる。計算速度の増大によってグラフィックス品質が改善される。
【００３５】
本発明はコンピュータグラフィックスシステムの用途には限定されないことを指摘しておく。より一般的には、本発明は浮動小数点除算器を用い、ゼロ除算状態の検出を必要とするマイクロプロセッサおよび他のデジタルシステムに使用可能である。
【００３６】
本発明の範囲にはさまざまな変更態様が含まれる。たとえば、図３を参照すると、浮動小数点分子、浮動小数点分母および浮動小数点値０．０は任意の適当なレジスタ、メモリデバイスあるいは他の記憶装置あるいはデータソースから除算器３２０およびレジスタ３３５、３４０に供給することができる。さらに、レジスタ３３５および３４０はタイミングあるいは他の目的にこれらを必要としない場合には削除することができる。さらに、ＡＮＤゲート３３０は他の適当な論理要素に置き換えることができる。ＡＮＤゲート３３０あるいは他の論理要素に対する要求条件は比較器３５５の一方の入力に供給される浮動小数点値０．０の符号ビットを比較器３５５の他の入力に供給される浮動小数点値０．０の符号ビットに等しくなるように修正することである。通常、浮動小数点値０．０は正の符号ビットを有し、分母の符号ビットはその状態にかかわりなく正に修正される。しかし、負の符号ビットは浮動小数点値０．０および分母と関係付けることが可能であることが理解されよう。これらの符号ビットが等しければ、比較結果は符号ビットとは無関係である。ＣＬＥＡＲ＿ＳＩＧＮ＿Ｎ信号は除算演算中に表明される。他の時間には、ＣＬＥＡＲ＿ＳＩＧＮ＿Ｎ信号は通常表明されておらず、浮動小数点比較器３５５は符号ビットを修正することなく比較を実行することができる。
【００３７】
本発明の少なくとも１つの実施形態を説明したが、当業者にはさまざまな変更、修正および改良を容易に考案することが可能であろう。かかる変更、修正および改良は本発明の精神および範囲に含まれるものである。したがって、以上の説明は本発明を例示するものに過ぎず、本発明を限定するものではない。本発明は特許請求の範囲とその均等物にのみ限定される。
【００３８】
以上、本発明の実施例について詳述したが、以下、本発明の各実施態様の例を示す。
【００３９】
（実施態様１）
浮動小数点分子および浮動小数点分母を受け取り、前記浮動小数点分子および前記浮動小数点分母に浮動小数点除算演算を実行する除算器（３２０）と、
浮動小数点値０．０および前記浮動小数点分母を受け取り、前記浮動小数点値０．０および前記浮動小数点分母について、前記浮動小数点分母の符号を除いた比較を実行する比較器（３５５）と、
浮動小数点除算演算を指示する制御信号に応答して前記比較器（３５５）に前記浮動小数点分母と前記浮動小数点値０．０に関係付けられた等しい符号ビットを供給する論理要素（３３０）と
を有し、前記比較の結果はゼロ除算演算を表わし、また浮動小数点分母の符号には無関係であることを特徴とする浮動小数点除算演算を実行する装置。
【００４０】
（実施態様２）
前記論理要素は、第１の入力で前記制御信号を受け取り、第２の入力で前記浮動小数点分母の符号ビットを受け取り、前記比較器に正の符号を表わす出力を供給するＡＮＤゲートを有することを特徴とする実施態様１記載の装置。
【００４１】
（実施態様３）
前記レジスタファイルと前記比較器の間に接続され、前記浮動小数点値０．０を保持する第１のレジスタ（３３５）と、
前記レジスタファイルと前記比較器の間に接続され、前記浮動小数点分母を前記浮動小数点分母の符号ビットを除いて保持する第２のレジスタ（３４０）と
を有することを特徴とする実施態様２記載の装置。
【００４２】
（実施態様４）
前記浮動小数点分子および前記浮動小数点分母を前記除算器に供給し、前記浮動小数点値０．０および前記浮動小数点分母を前記比較器に供給する記憶装置（３００）を有することを特徴とする実施態様３記載の装置。
【００４３】
（実施態様５）
前記記憶装置はレジスタファイルを有することを特徴とする実施態様４記載の装置。
【００４４】
（実施態様６）
浮動小数点分子および浮動小数点分母をハードウエア除算器（３２０）に供給するステップと、
前記ハードウエア除算器（３２０）を用いて前記浮動小数点分子および前記浮動小数点分母に対して浮動小数点除算演算を実行するステップと、
浮動小数点値０．０および前記浮動小数点分母を前記浮動小数点分母の符号ビットを除いてハードウエア比較器（３５５）に供給するステップと、
前記ハードウエア比較器（３５５）に前記浮動小数点分母および前記浮動小数点値０．０に関係付けられた等しい符号ビットを供給するステップと、
前記等しい符号ビットを有する前記浮動小数点値０．０と前記浮動小数点分母の比較を実行するステップと
を備え、前記比較の結果はゼロ除算演算を表わし、前記浮動小数点分母とは無関係であることを特徴とする浮動小数点除算演算の実行方法。
【００４５】
（実施態様７）
等しい符号ビットを供給するステップにおいて前記比較器に前記浮動小数点分母の正の符号を表わす入力を供給することを特徴とする実施態様６記載の方法。
【００４６】
（実施態様８）
前記浮動小数点値０．０を第１のレジスタ（３５５）に保持し、前記浮動小数点分母を第２のレジスタ（３４０）に保持するステップを含むことを特徴とする実施態様６記載の方法。
【００４７】
（実施態様９）
前記浮動小数点分子、前記浮動小数点分母および前記浮動小数点値０．０をレジスタファイル（３００）に記憶するステップを含み、前記浮動小数点分子および前記浮動小数点分母は前記レジスタファイル（３００）から前記ハードウエア除算器（３２０）に供給され、前記浮動小数点値０．０および前記浮動小数点分母は前記レジスタファイル（３００）から前記ハードウエア比較器（３５５）に供給されることを特徴とする実施態様６記載の方法。
【００４８】
（実施態様１０）
コンピュータグラフィックスシステムにおいて、
浮動小数点分子、浮動小数点分母および浮動小数点値０．０を保持する記憶装置（３００）と、
前記記憶装置から前記浮動小数点分子および前記浮動小数点分母を受け取り、前記浮動小数点分子および前記浮動小数点分母に浮動小数点除算演算を実行する除算器（３２０）と、
前記記憶装置（３００）から前記浮動小数点値０．０および前記浮動小数点分母を受け取り、前記浮動小数点値０．０および前記浮動小数点分母について、前記浮動小数点分母の符号を除いた比較を実行する比較器（３５５）と、
前記浮動小数点除算演算を示す制御信号に応答して前記比較器（３５５）に前記浮動小数点分母と前記０．０の浮動小数点値に関係付けられた等しい符号ビットを供給する論理要素（３３０）と
を有し、前記比較の結果はゼロ除算演算を表わし、また浮動小数点分母の符号には無関係であることを特徴とする浮動小数点除算演算を実行する装置。
【００４９】
【発明の効果】
以上のように、本発明によると、除算演算装置を１つの比較演算のみでゼロ除算状態を検出するように構成することができる。この除算演算装置をジオメトリアクセラレータに用いることにより、ジオメトリアクセラレータの全体的計算速度を増大させることができる。ゼロ除算状態は迅速にまた除算演算の完了前に検出されるため、従来のシステムに用いられる複雑なエラー回復機構を用いることなく適当なステップを実行することができる。その結果、ジオメトリアクセラレータの計算速度の増大によってグラフィックス品質が改善される。
【図面の簡単な説明】
【図１】本発明の実施に適したコンピュータグラフィックスシステムの一実施形態を示すブロック図である。
【図２】本発明の実施に適したジオメトリアクセラレータの概略ブロック図である。
【図３】本発明の装置の一例のブロック図である。
【符号の説明】
１００：ホストコンピュータ
１０１：バス
１０２：フロントエンドサブシステム
１０４：フレームバッファサブシステム
１０６：ホストインターフェース
１０８：バス
１１０：ジオメトリアクセラレータ
１１２：バス
１１４Ａ、１１４Ｂ：フレームバッファコントローラ
１１６Ａ、１１６Ｂ：シリアル同期グラフィックスランダムアクセスメモリ（ＳＧＲＡＭ）
１２０：ランダムアクセスメモリデジタル／アナログ変換器（ＲＡＭＤＡＣ）
１２２：バス
１２２Ａ、１２２Ｂ、１２２Ｃ：バス１２２のセグメント
１２３：Ｒ、Ｇ、Ｂライン
１２４：ビデオバス
２１０：変換機械
２１５：分解機械
２２０：照明機械
２２５：クリッパー
３００：マルチポートレジスタファイル
３０５、３１０、３１５：バス
３２０：浮動小数点除算器
３２５：コントローラ
３３０：ＡＮＤゲート
３３２、３３４：バス３０５のライン
３３５、３４０：レジスタ
３４５、３５０：バス
３５５：浮動小数点比較器
【図１】
0004148560.tif 000003
【図２】
0004148560.tif 000004
【図３】
0004148560.tif 000005