(57)【要約】入力確認／出力訂正浮動小数点除算論理および浮動小数点除算修正命令（例えば、命令、コマンド、信号、または他のインジケータ）を用いて浮動小数点除算を実行するための方法および装置が提供される。一例では、本装置は、入力確認／出力訂正浮動小数点除算論理を含む浮動小数点演算論理ユニット（ＡＬＵ）を有するプロセッサを含む。この入力確認／出力訂正浮動小数点除算論理は、入力確認／出力訂正浮動小数点除算論理に、分子を表す第１の入力および分母を表す第２の入力を検査させて、浮動小数点除算の特例が生じるかどうかを決定させる、浮動小数点ＡＬＵにより実行可能な浮動小数点除算修正命令に応答する。また、この浮動小数点除算修正命令は、入力確認／出力訂正浮動小数点除算論理に、決定された浮動小数点除算の特例および候補商を表す第３の入力に基づく浮動小数点除算結果を表す出力を提供させる。【選択図】図１
2013541084.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサを備え、
前記プロセッサは、浮動小数点演算論理装置（ＡＬＵ）を備え、
前記浮動小数点演算論理装置は、入力確認／出力訂正浮動小数点除算論理を備え、
前記入力確認／出力訂正浮動小数点除算論理は、
前記入力確認／出力訂正浮動小数点除算論理の分子を表す第１の入力および分母を表す第２の入力を検査して、浮動小数点除算の特例が生じるかどうかを前記入力確認／出力訂正浮動小数点除算論理に決定させ、
前記決定された浮動小数点除算の特例と、前記入力確認／出力訂正浮動小数点除算論理の候補商を表す第３の入力とに基づいて、前記入力確認／出力訂正浮動小数点除算論理の浮動小数点除算結果を表す出力を前記入力確認／出力訂正浮動小数点除算論理に提供させる、
前記浮動小数点演算論理装置（ＡＬＵ）によって実行可能な浮動小数点除算修正命令に応答する、
集積回路。
【請求項２】
前記入力確認／出力訂正浮動小数点除算論理は、
前記入力確認／出力訂正浮動小数点除算論理の前記分子を表す前記第１の入力および前記分母を表す前記第２の入力を検査して、前記浮動小数点除算の特例が生じるかどうかを決定するよう動作する、複数の特例試験回路と、
前記決定された浮動小数点除算の特例と、前記入力確認／出力訂正浮動小数点除算論理の前記候補商を表す前記第３の入力とに基づいて、前記入力確認／出力訂正浮動小数点除算論理の前記浮動小数点除算結果を表す前記出力を提供するよう動作する、優先順位マルチプレクサと、を備え、
前記プロセッサは、前記入力確認／出力訂正浮動小数点除算論理に動作可能に接続された複数のレジスタであって、前記分子、前記分母、前記候補商、および前記浮動小数点除算結果を格納するよう動作する複数のレジスタをさらに備える、請求項１に記載の集積回路。
【請求項３】
前記浮動小数点除算修正命令は、１クロックサイクルで実行される単一命令である、請求項１に記載の集積回路。
【請求項４】
前記浮動小数点除算修正命令は、入力確認命令と出力訂正命令とからなり、前記入力確認命令および出力訂正命令のそれぞれが１クロックサイクルで実行される、請求項１に記載の集積回路。
【請求項５】
前記浮動小数点ＡＬＵは、少なくとも１つの浮動小数点加算器／減算器と、少なくとも１つの浮動小数点乗算器とをさらに備え、
前記少なくとも１つの浮動小数点加算器／減算器および浮動小数点乗算器は、前記浮動小数点除算の特例と無関係に、前記分子および前記分母に基づいて前記候補商を、前記少なくとも１つの浮動小数点加算器／減算器および浮動小数点乗算器に数値的に計算させる、前記浮動小数点ＡＬＵにより実行可能な複数の命令に応答する、請求項２に記載の集積回路。
【請求項６】
前記入力確認／出力訂正浮動小数点除算論理は、前記浮動小数点除算の特例が生じない場合に、前記入力確認／出力訂正浮動小数点除算論理の前記浮動小数点除算結果を表す前記出力として前記候補商を、前記入力確認／出力訂正浮動小数点除算論理に提供させる、前記浮動小数点ＡＬＵにより実行可能な前記浮動小数点除算修正命令にさらに応答する、請求項５に記載の集積回路。
【請求項７】
前記入力確認／出力訂正浮動小数点除算論理は、前記浮動小数点除算の特例が生じる場合に、前記入力確認／出力訂正浮動小数点除算論理の前記浮動小数点除算結果を表す前記出力として、対応する浮動小数点除算の特殊値を前記入力確認／出力訂正浮動小数点除算論理に提供させる、前記浮動小数点ＡＬＵにより実行可能な前記浮動小数点除算修正命令にさらに応答する、請求項２に記載の集積回路。
【請求項８】
前記複数の特例試験回路は、
前記分子または前記分母がＮａＮであるかどうかを決定するよう動作する、非数（ＮａＮ）試験回路と、
前記分子または前記分母がゼロであるかどうかを決定するよう動作する、ゼロ試験回路と、
前記分子または前記分母が無限大であるかどうかを決定するよう動作する、無限大試験回路と、
前記分子および前記分母に基づいて、オーバーフローまたはアンダーフローが生じるかどうかを決定するよう動作する、オーバーフロー／アンダーフロー試験回路と、を備え、
前記浮動小数点除算の特殊値は、ＮａＮ、ゼロ、無限大、最大浮動小数点型定数、および最小浮動小数点型定数のうちの少なくとも１つから選択される、請求項７に記載の集積回路。
【請求項９】
前記入力確認／出力訂正浮動小数点除算論理は、前記優先順位マルチプレクサに動作可能に接続された符号ビット設定論理であって、前記入力確認／出力訂正浮動小数点除算論理の前記分子を表す前記第１の入力の符号ビットおよび前記分母を表す前記第２の入力の符号ビットに基づいて、前記浮動小数点除算結果を表す前記出力の符号ビットを設定するよう動作する符号ビット設定論理をさらに備える、請求項２に記載の集積回路。
【請求項１０】
前記浮動小数点除算結果を表す前記出力は、前記入力確認／出力訂正浮動小数点除算論理の第１の出力であって、
前記入力確認／出力訂正浮動小数点除算論理は、
前記入力確認／出力訂正浮動小数点除算論理の前記分子を表す前記第１の入力および前記分母を表す前記第２の入力に基づいて、例外状態フラグを決定し、
前記入力確認／出力訂正浮動小数点除算論理の前記例外状態フラグを表す第２の出力を提供するよう動作する、
例外フラグ論理をさらに備える、請求項２に記載の集積回路。
【請求項１１】
前記入力確認／出力訂正浮動小数点除算論理は、
前記浮動小数点除算の特例が生じるかどうかを示す任意ビットパターンをコード化し、
前記任意ビットパターンを前記複数のレジスタのうちの１つに格納するよう動作する、
任意ビットパターンエンコーダをさらに備える、請求項２に記載の集積回路。
【請求項１２】
前記入力確認／出力訂正浮動小数点除算論理は、グラフィック処理ユニット（ＧＰＵ）の一部である、請求項１に記載の集積回路。
【請求項１３】
前記プロセッサは、前記入力確認／出力訂正浮動小数点除算論理の前記浮動小数点除算結果を表す前記出力に基づく画像の少なくとも一部を生成するよう動作する、請求項１に記載の集積回路。
【請求項１４】
浮動小数点除算修正命令を処理するステップと、
前記処理された浮動小数点除算修正命令に基づいて、
入力確認／出力訂正浮動小数点除算論理の分子を表す第１の入力および分母を表す第２の入力を検査させて、浮動小数点除算の特例が生じるかどうかを決定し、
前記決定された浮動小数点除算の特例と、前記入力確認／出力訂正浮動小数点除算論理の候補商を表す第３の入力とに基づいて、前記入力確認／出力訂正浮動小数点除算論理の浮動小数点除算結果を表す出力を提供するよう、前記入力確認／出力訂正浮動小数点除算論理に処理させるステップと、
を含む、方法。
【請求項１５】
前記入力確認／出力訂正浮動小数点除算論理に処理させるステップは、前記入力確認／出力訂正浮動小数点除算論理の前記候補商を表す前記第３の入力を、前記入力確認／出力訂正浮動小数点除算論理に受信させることを含み、前記候補商は、前記浮動小数点除算の特例と無関係に、前記分子および前記分母に基づいて数値的に計算される、請求項１４に記載の方法。
【請求項１６】
前記浮動小数点除算修正命令は、１クロックサイクルで実行可能な単一命令である、請求項１４に記載の方法。
【請求項１７】
前記浮動小数点除算修正命令は、入力確認命令と出力訂正命令とからなり、前記入力確認命令および出力訂正命令のそれぞれが１クロックサイクルで実行可能である、請求項１４に記載の方法。
【請求項１８】
前記入力確認／出力訂正浮動小数点除算論理に処理させるステップは、前記浮動小数点除算の特例が生じない場合に、前記入力確認／出力訂正浮動小数点除算論理の前記浮動小数点除算結果を表す前記出力として、前記候補商を前記入力確認／出力訂正浮動小数点除算論理に提供させることを含む、請求項１５に記載の方法。
【請求項１９】
前記入力確認／出力訂正浮動小数点除算論理に処理させるステップは、前記浮動小数点除算の特例が生じる場合に、前記入力確認／出力訂正浮動小数点除算論理の前記浮動小数点除算結果を表す前記出力として、対応する浮動小数点除算の特殊値を前記入力確認／出力訂正浮動小数点除算論理に提供させることを含む。請求項１４に記載の方法。
【請求項２０】
前記入力確認／出力訂正浮動小数点除算論理に処理させるステップは、前記入力確認／出力訂正浮動小数点除算論理の前記分子を表す前記第１の入力の符号ビットおよび前記分母を表す前記第２の入力の符号ビットに基づいて、前記入力確認／出力訂正浮動小数点除算論理の前記浮動小数点除算結果を表す前記出力の符号ビットを、前記入力確認／出力訂正浮動小数点除算論理に設定させることを含む、請求項１４に記載の方法。
【請求項２１】
前記浮動小数点除算結果を表す前記出力は、前記入力確認／出力訂正浮動小数点除算論理の第１の出力であって、
前記入力確認／出力訂正浮動小数点除算論理に処理させるステップは、
前記入力確認／出力訂正浮動小数点除算論理の前記分子を表す前記第１の入力および前記分母を表す前記第２の入力に基づいて、例外状態フラグを前記入力確認／出力訂正浮動小数点除算論理に決定させるステップと、
前記入力確認／出力訂正浮動小数点除算論理の前記例外状態フラグを表す第２の出力を、前記入力確認／出力訂正浮動小数点除算論理に提供させるステップと、を含む、請求項１４に記載の方法。
【請求項２２】
前記入力確認／出力訂正浮動小数点除算論理に処理させるステップは、
前記浮動小数点除算の特例が生じるかどうかを示す任意ビットパターンを、前記入力確認／出力訂正浮動小数点除算論理にコード化させるステップと、
前記任意ビットパターンを、前記入力確認／出力訂正浮動小数点除算論理によってレジスタに格納させるステップと、を含む、請求項１４に記載の方法。
【請求項２３】
浮動小数点演算論理装置（ＡＬＵ）を備える装置であって、
前記浮動小数点演算論理装置は、入力確認／出力訂正浮動小数点除算論理を備え、
前記入力確認／出力訂正浮動小数点除算論理は、
前記入力確認／出力訂正浮動小数点除算論理の分子を表す第１の入力および分母を表す第２の入力を検査して、浮動小数点除算の特例が生じるかどうかを前記入力確認／出力訂正浮動小数点除算論理に決定させ、
前記決定された浮動小数点除算の特例と、前記入力確認／出力訂正浮動小数点除算論理の候補商を表す第３の入力とに基づいて、前記入力確認／出力訂正浮動小数点除算論理の浮動小数点除算結果を表す出力を前記入力確認／出力訂正浮動小数点除算論理に提供させる、
前記浮動小数点演算論理装置（ＡＬＵ）によって実行可能な浮動小数点除算修正命令に応答し、
前記装置は、前記入力確認／出力訂正浮動小数点除算論理の前記浮動小数点除算結果を表す前記出力に基づいて、前記画像の少なくとも一部を生成するよう動作する、
装置。
【請求項２４】
１つまたは複数の集積回路設計システムによって実行可能な命令であって、プロセッサを備える集積回路を設計させる命令を格納するコンピュータ可読媒体であって、
前記プロセッサは、浮動小数点演算論理装置（ＡＬＵ）を備え、
前記浮動小数点演算論理装置は、入力確認／出力訂正浮動小数点除算論理を備え、
前記入力確認／出力訂正浮動小数点除算論理は、
前記入力確認／出力訂正浮動小数点除算論理の分子を表す第１の入力および分母を表す第２の入力を検査して、浮動小数点除算の特例が生じるかどうかを前記入力確認／出力訂正浮動小数点除算論理に決定させ、
前記決定された浮動小数点除算の特例と、前記入力確認／出力訂正浮動小数点除算論理の候補商を表す第３の入力とに基づいて、前記入力確認／出力訂正浮動小数点除算論理の浮動小数点除算結果を表す出力を前記入力確認／出力訂正浮動小数点除算論理に提供させる、
前記浮動小数点演算論理装置（ＡＬＵ）によって実行可能な浮動小数点除算修正命令に応答する、
コンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、概して、浮動小数点除算を実施するための方法および装置に関する。
【背景技術】
【０００２】
浮動小数点数の除算は、コンピュータグラフィックスならびに非グラフィックコンピュータ処理および計算などの用途で、様々なコンピューターアーキテクチャにおいて様々な形で取り組まれてきた。例えば、浮動小数点除算は、３次元（３Ｄ）グラフィックモデリングおよびレンダリングにおいて逆行列を計算して、表示画面への出力のための３Ｄグラフィック物体を生成するために使用され、または画像データを平滑化し、ノイズを排除するための平均化（平均）フィルタによって使用される。また、浮動小数点除算は、固有ベクトルおよび固有値の計算、線形関数または多項式の補間、超越関数、有理関数、および偏微分方程式の計算などの数値アルゴリズムで使用される。
【０００３】
多くの命令セットアーキテクチャ（ＩＳＡ）は、浮動小数点除算演算を実行するためのコンピュータ命令を定義する。米国電気電子学会（ＩＥＥＥ）浮動小数点演算規格（ＩＥＥＥ  ７５４、以下「ＩＥＥＥ規格７５４」とする）の一部として、浮動小数点除算演算は、多くの側面において定義されている。ＩＥＥＥ規格７５４に準拠したＩＳＡでは、商を数値的に計算することに加え、浮動小数点除算の特例、例えば、分子の無限値または不定値、および分母の無限値、不定値、またはゼロ値が特定され、適切に処理されなければならず、これには相当な論理演算を必要とし得る。
【０００４】
浮動小数点除算のためのこれらの命令は、論理回路およびマイクロコードを用いて完全に実行することができる。図１は、中央処理ユニット（ＣＰＵ）１００における浮動小数点除算演算の実行の例を示している。ＣＰＵ１００は、専用の浮動小数点除算器１０４を有する、浮動小数点演算論理ユニット（ＡＬＵ）１０２を含む。浮動小数点ＡＬＵ１０２は、メモリ１０８に格納されたＤＩＶＰＤ（パック倍精度浮動小数点除算）命令１０６を実行することができ、この命令は、浮動小数点除算器１０４に、ＣＰＵ１００による実行時に、浮動小数点除算演算を実行させることができる。浮動小数点除算演算の分子および分母はレジスタ１１０から読み出すことができ、その結果はレジスタ１１０に書き込むことができる。具体的には、商の数値計算ならびに特例の確認および訂正の関数は、全て浮動小数点除算器１０４により、ＤＩＶＰＤ命令１０６で実行される。他の浮動小数点演算と比較して複雑な浮動小数点除算の性質により、浮動小数点除算器１０４は多数のトランジスタからなり、それによってＣＰＵ１００の費用およびダイ面積が増加する。特に、浮動小数点除算器１０４の数がＣＰＵ１００内の「コア」の数に左右されることから、このような問題は、同じ浮動小数点除算器１０４および命令１０６をグラフィック処理ユニット（ＧＰＵ）またはＧＰＵでの汎用計算（ＧＰＧＰＵ）設計に適用しようとするときにさらに深刻化するが、これはＧＰＵまたはＧＰＧＰＵが通常は並列ストリーム処理のために、ＣＰＵと比較して多数の「コア」を有するためである。
【０００５】
一方、専用論理回路および命令を用いて浮動小数点除算演算を完全に実行することの問題を認識する一部のコンピューターアーキテクチャは、専用の浮動小数点除算命令を完全に除外する。代わりに、これらのコンピューターアーキテクチャは、専用の浮動小数点除算命令および浮動小数点除算器を有さずに、既知の反復アルゴリズム、例えばニュートン・ラプソン法を用いて浮動小数点除算演算を実施する。例えば、図２は、少なくとも浮動小数点加算／減算命令２０４および浮動小数点乗算命令２０６を含むメモリ２０２に格納された命令を、専用の浮動小数点除算器を用いずに、１つまたは複数の浮動小数点ＡＬＵ２１２中の１つまたは複数の浮動小数点加算器／減算器２０８および浮動小数点乗算器２１０とともに用いる、ＧＰＵ２００における浮動小数点除算演算の実施の例を示している。この例では、浮動小数点除算の商は、迅速に収束する浮動小数点加算／減算および乗算演算を用いて、逐次近似法の観点から数値的に計算される。図１に示す専用の浮動小数点除算器１０４および命令１０６と比較すると、図２の浮動小数点加算器／減算器２０８および浮動小数点乗算器２１０の設計はあまり複雑ではない。したがって、このようなコンピューターアーキテクチャは、浮動小数点除算演算に関して、より費用効率が高い。しかしながら、反復アルゴリズムは、浮動小数点除算の商を数値的に計算するにすぎない。上述のように、ＩＥＥＥ規格７５４に準拠するためには、浮動小数点除算の特例を特定して処理するために、追加命令、例えば条件命令（例えば、条件付き移動、条件付き分岐、および条件付きトラップ）および論理命令２１４が必要とされる。この場合、特例の確認および訂正の機能を追加することによって、浮動小数点除算演算の実行時間が相当に増加する。例えば、図２の浮動小数点除算演算は、実行に最大３０クロックサイクルかかる最大３０個の追加の条件および論理命令２１４を必要とし得る。したがって、図２では設計の複雑性および費用は減少するが、ＩＥＥＥ規格７５４の特例処理の要求に準拠するために、浮動小数点除算演算の実行時間は増加する。
【０００６】
さらに、浮動小数点除算結果を提供することに加え、ＩＥＥＥ規格７５４はまた、発生時に信号が送られるべき例外（例えば、無効演算、ゼロ除算など）を定義する。この信号は、命令実行の正常フローを中断するトラップシーケンスの処理を有効にするなど、信号が送られた例外の代替の処理または既定値を呼び出す。それぞれの種類の例外に対して、この実行は対応する状態フラグを提供する。一部のコンピューターアーキテクチャは、特例の確認および訂正の機能を有するが、例外状態フラグを有さず、したがってＩＥＥＥ規格７５４に完全には準拠しない。
【０００７】
したがって、浮動小数点除算を実行するための改善された方法および装置の必要性が存在する。
【０００８】
実施形態は、以下の図面とともに以下の説明を考慮するとより容易に理解される（ここで同様の参照番号は同様の要素を表す）。
【図面の簡単な説明】
【０００９】
【図１】中央処理ユニットにおける浮動小数点除算演算の実行の一例を示すブロック図である。
【図２】グラフィック処理ユニットにおける浮動小数点除算演算の実行の一例を示すブロック図である。
【図３】本開示に記載される一実施形態による、入力確認／出力訂正浮動小数点除算論理を含む装置の一例を示すブロック図である。
【図４】図３に示される入力確認／出力訂正浮動小数点除算論理の一例を示すブロック図である。
【図５】図３に示される浮動小数点除算修正命令の例示的命令形式である。
【図６】図３に示される浮動小数点除算修正命令の別の例示的命令形式である。
【図７】図３に示される任意ビットパターンの例示的な形式である。
【図８】本開示に記載される一実施形態による、浮動小数点除算を実施するための方法の一例を示すフローチャートである。
【図９】浮動小数点除算を実施するための方法の別の例を示すフローチャートである。
【図１０】浮動小数点除算を実施する方法のさらに別の例を示すフローチャートである。
【発明を実施するための形態】
【００１０】
簡潔に述べると、一例において、方法および装置は、入力確認／出力訂正浮動小数点除算論理に、分子を表す第１の入力および分母を表す第２の入力を検査させて、浮動小数点除算の特例が生じるかどうかを決定させる、浮動小数点除算修正命令（例えば、命令、コマンド、信号、または他のインジケータ）を用いて、浮動小数点除算を実行する。さらに、これは、決定された浮動小数点除算の特例と候補商を表す第３の入力とに基づいて、浮動小数点除算結果を表す出力を提供する。浮動小数点除算修正命令は、例えば、１クロックサイクルで実行される単一命令であってもよく、または各命令が１クロックサイクルで実行される入力確認命令と出力訂正命令とからなってもよい。入力確認／出力訂正浮動小数点除算論理は、例えば、グラフィック処理ユニットの一部であってもよい。
【００１１】
いくつかの利益のうち特に、例えば、浮動小数点除算を実行するための方法および装置は、ＩＥＥＥ規格７５４に依然として準拠しながら、浮動小数点除算の実行を短時間かつ高速にする能力を提供する。浮動小数点除算の数値部分は、依然として、対応する命令で、既存の浮動小数点加算器／減算器および乗算器を用いて反復アルゴリズムにより計算され、それによりこの方法および装置は費用効率が高くなる。一方、入力確認／出力訂正浮動小数点除算論理および対応する浮動小数点除算修正命令を適用することによって、浮動小数点除算の特例を認識し、処理するための複数の時間のかかる条件命令および論理命令（最大３０個の命令）は、実行時間を減少させるために置き換えることができる。
【００１２】
一例において、本装置は、入力確認／出力訂正浮動小数点除算論理を含む浮動小数点演算論理ユニットを有するプロセッサを含む。この入力確認／出力訂正浮動小数点除算論理は、入力確認／出力訂正浮動小数点除算論理に、分子を表す第１の入力および分母を表す第２の入力を検査させて、浮動小数点除算の特例が生じるかどうかを決定させる、浮動小数点演算論理ユニットにより実行可能な浮動小数点除算修正命令に応答する。また、この浮動小数点除算修正命令は、入力確認／出力訂正浮動小数点除算論理に、決定された浮動小数点除算の特例および候補商を表す第３の入力に基づく浮動小数点除算結果を表す出力を提供させる。
【００１３】
入力確認／出力訂正浮動小数点除算論理は、分子を表す第１の入力および分母を表す第２の入力を検査して、浮動小数点除算の特例が生じるかどうかを決定するよう動作する複数の特例試験回路を含んでもよい。この複数の特例試験回路は、分子または分母が非数であるかどうかを決定するよう動作する非数試験回路、分子または分母がゼロであるかどうかを決定するよう動作するゼロ試験回路、および分子または分母が無限大であるかどうかを決定するよう動作する無限大試験回路を含んでもよい。また、この複数の特例試験回路は、分子および分母に基づいて、オーバーフローまたはアンダーフローが生じるかどうかを決定するよう動作するオーバーフロー／アンダーフロー試験回路も含んでよい。
【００１４】
また、入力確認／出力訂正浮動小数点除算論理は、決定された浮動小数点除算の特例と、候補商を表す第３の入力とに基づいて、浮動小数点除算結果を表す出力を提供するよう動作する優先順位マルチプレクサも含んでよい。プロセッサは、分子、分母、候補商、および浮動小数点除算結果を格納するよう動作する複数のレジスタを含んでもよい。
【００１５】
また、浮動小数点演算論理ユニットは、少なくとも１つの浮動小数点加算器／減算器および少なくとも１つの浮動小数点乗算器も含んでよい。少なくとも１つの浮動小数点加算器／減算器および浮動小数点乗算器は、少なくとも１つの浮動小数点加算器／減算器および浮動小数点乗算器に、浮動小数点除算の特例と無関係に、分子および分母に基づいて候補商を数値的に計算させる、浮動小数点演算論理ユニットにより実行可能な複数の命令に応答する。
【００１６】
入力確認／出力訂正浮動小数点除算論理は、入力確認／出力訂正浮動小数点除算論理に、浮動小数点除算の特例が生じない場合に、浮動小数点除算結果を表す出力として候補商を提供させる、浮動小数点演算論理ユニットにより実行可能な浮動小数点除算修正命令にさらに応答してもよい。
【００１７】
また、入力確認／出力訂正浮動小数点除算論理は、入力確認／出力訂正浮動小数点除算論理に、浮動小数点除算の特例が生じる場合に、浮動小数点除算結果を表す出力として、相当する浮動小数点除算の特殊値を提供させる、浮動小数点演算論理ユニットにより実行可能な浮動小数点除算修正命令にも応答してよい。浮動小数点除算の特殊値は、非数、ゼロ、無限大、最大浮動小数点型定数、および最小浮動小数点型定数のうちの少なくとも１つから選択してもよい。
【００１８】
一例において、入力確認／出力訂正浮動小数点除算論理は、分子を表す第１の入力の符号ビットおよび分母を表す第２の入力の符号ビットに基づいて、浮動小数点除算結果を表す出力の符号ビットを設定するよう動作する、優先順位マルチプレクサに動作可能に接続された符号ビット設定論理を含む。
【００１９】
別の例において、浮動小数点除算結果を表す出力は、入力確認／出力訂正浮動小数点除算論理の第１の出力である。また、入力確認／出力訂正浮動小数点除算論理は、分子を表す第１の入力および分母を表す第２の入力に基づいて、例外状態フラグを決定するよう動作する例外フラグ論理も含む。この例外フラグ論理は、入力確認／出力訂正浮動小数点除算論理の例外状態フラグを表す第２の出力を提供するようさらに動作する。
【００２０】
さらに別の例において、入力確認／出力訂正浮動小数点除算論理は、浮動小数点除算の特例が生じるかどうかを示す任意ビットパターンをコード化するよう動作する任意ビットパターンエンコーダを含む。任意ビットパターンエンコーダは、任意ビットパターンを複数のレジスタのうちの１つに格納するようにさらに動作する。
【００２１】
いくつかの利益のうち特に、浮動小数点除算を実行するための方法および装置は、ＩＥＥＥ規格７５４に依然として準拠しながら、浮動小数点除算の実行を短時間かつ高速にする能力を提供する。浮動小数点除算の数値部分は、依然として、対応する命令で、既存の浮動小数点加算器／減算器および乗算器を用いて反復アルゴリズムにより計算され、それによりこの方法および装置は費用効率が高くなる。一方、入力確認／出力訂正浮動小数点除算論理および対応する浮動小数点除算修正命令を適用することによって、浮動小数点除算の特例を認識し、処理するための複数の時間のかかる条件命令および論理命令（最大３０個の命令）は、実行時間を減少させるために置き換えることができる。したがって、提案される技法は、並列ストリームプロセッサ、例えば単一命令複数データ（ＳＩＭＤ）プロセッサ、例えばコンピュータグラフィックスおよび／または非グラフィック処理および計算で使用する、グラフィック処理ユニット（ＧＰＵ）および／またはＧＰＵでの汎用計算（ＧＰＧＰＵ）に好適であり得る。さらに、浮動小数点除算を実行するための方法および装置は、ＩＥＥＥ規格７５４に準拠することが可能である。したがって、提案される技法は、少ない命令数および速い実行速度と同時に、より低いプロセッサの設計費用および製造費用の利点、ならびに反復アルゴリズム実行の柔軟性の利点を維持することができる。他の利益は、当業者に理解されるであろう。
【００２２】
図３は、プロセッサ３０４を含む集積回路３０２を含む装置３００の一例を示している。装置３００は、例えば、ラップトップコンピュータ、デスクトップコンピュータ、メディアセンター、携帯用デバイス（例えば、携帯電話またはスマートフォン、タブレットなど）、Ｂｌｕ−ｒａｙ（登録商標）プレーヤー、ゲーム機、セットトップボックス、プリンタ、または任意の他の好適なデバイスであってもよいが、これらに限定されない。集積回路３０２は、１つまたは複数のプロセッサ３０４を有する任意の好適な回路であってもよい。プロセッサ３０４に加えて、集積回路３０２はまた、当分野で既知の任意の他の好適な回路、例えば、数例を挙げると、キャッシュメモリおよび入力／出力（Ｉ／Ｏ）インターフェース回路も含んでよい。プロセッサ３０４は、ＧＰＵ、中央処理ユニット（ＣＰＵ）、ＧＰＧＰＵ、または加速処理ユニット（ＡＰＵ）、デジタルシグナルプロセッサ（ＤＳＰ）、または任意の他の好適なプロセッサであってもよいが、これらに限定されない。装置３００は、１つまたは複数の表示画面３０６を含んでも、またはこれに動作可能に接続されていてもよい。プロセッサ３０４は、例えば、表示画面３０６上に表示される画像の少なくとも一部を表す画像データ３０８を生成するためのＧＰＵであってもよい。
【００２３】
プロセッサ３０４は、浮動小数点ＡＬＵ３１０、レジスタ３１２、およびメモリ３１４を含んでもよい。レジスタ３１２は、他のどの場所で利用できるストレージよりも迅速に、プロセッサ３０４の内容にアクセスできる、プロセッサ３０４上のプロセッサレジスタまたは汎用レジスタであってもよい。好ましくは、本例におけるレジスタ３１２は、浮動小数点数、例えば浮動小数点分子、分母、および商を格納する浮動小数点レジスタを含む。また、レジスタ３１２は、現在実行中の命令を格納する命令レジスタ、ならびにＩＥＥＥ規格７５４により要求される例外状態フラグを格納するための制御および状態レジスタも含んでよい。レジスタ３１２に格納されるデータは、浮動小数点ＡＬＵ３１０によって読み出されても、または書き込まれてもよい。メモリ３１４は、浮動小数点ＡＬＵ３１０により実行可能な複数の命令３１６〜３２０（例えば、命令、コマンド、信号、または他のインジケータ）を永久または一時的に格納する、当分野で既知の任意の好適なメモリであってよい。本例において、メモリ３１４は、プロセッサ３０４の命令キャッシュまたは命令バッファであり、実行可能な命令フェッチを高速化する。また、メモリ３１４は、他の例において、プロセッサ３０４に動作可能に接続されたメインメモリであってもよい。命令３１６〜３２０は、浮動小数点除算修正命令３１６、浮動小数点加算／減算命令３１８、および浮動小数点乗算命令３２０、ならびに所望であれば任意の他の好適な命令を含む。
【００２４】
本例において、浮動小数点ＡＬＵ３１０は、浮動小数点演算の演算専用のＡＬＵである。図３に示すように、プロセッサ３０４は、ストリーム処理のための並列浮動小数点演算を実行する複数の浮動小数点ＡＬＵ３１０を含んでもよい。浮動小数点ＡＬＵ３１０は、命令を受け取って実行し、その命令の実行により、浮動小数点演算を実行することができる。浮動小数点ＡＬＵ３１０は、浮動小数点加算／減算命令３１８および浮動小数点乗算命令３２０を含む複数の命令に応じて、浮動小数点除算の商を数値的に計算することができる、少なくとも１つの浮動小数点加算器／減算器３２２および少なくとも１つの浮動小数点乗算器３２４を含んでもよい。上述のように、浮動小数点加算器／減算器３２２および浮動小数点乗算器３２４は、浮動小数点除算の特例を認識および処理せず、浮動小数点加算／減算命令３１８および浮動小数点乗算命令３２０は、分子および分母を正規数とみなし、反復アルゴリズムを実行して入力確認／出力訂正浮動小数点除算論理３２６の候補商３２８を提供する。
【００２５】
浮動小数点ＡＬＵ３１０は、入力確認／出力訂正浮動小数点除算論理３２６を含む。「論理」とは、本明細書において、所望の機能を達成することができる任意の好適な回路を指し、これはデジタル回路、アナログ回路、アナログ・デジタル混在回路、または任意の好適な回路であってよい。入力確認／出力訂正浮動小数点除算論理３２６は、浮動小数点ＡＬＵ３１０により実行可能な浮動小数点除算修正命令３１６に応答する。浮動小数点除算修正命令３１６の実行は、本例において、入力確認／出力訂正浮動小数点除算論理３２６に、レジスタ３１２からの浮動小数点除算の分子および分母を確認させて、浮動小数点除算の特例が生じるかどうかを決定させ、またこの決定された特例と浮動小数点加算器／減算器３２２および浮動小数点乗算器３２４によって計算された候補商３２８とに基づいて、訂正された浮動小数点除算結果を提供させる。
【００２６】
図４は、入力確認／出力訂正浮動小数点除算論理３２６の一例を示す。入力確認／出力訂正浮動小数点除算論理３２６は、分子４００を受け取る第１の入力と、分母４０２を受け取る第２の入力と、レジスタ３１２から候補商３２８を受け取る第３の入力とを少なくとも有する。候補商３２８は、所望であれば、浮動小数点加算器／減算器３２２および浮動小数点乗算器３２４から直接受け取ってもよい。分子４００、分母４０２、および候補商３２８は、浮動小数点数、例えば、単精度（３２ビット）浮動小数点数、倍精度（６４ビット）浮動小数点数、単拡張精度（≧４３ビット）浮動小数点数、および倍拡張精度（≧７９ビット）浮動小数点数であってもよいが、これらに限定されない。さらに、入力確認／出力訂正浮動小数点除算論理３２６は、レジスタ３１２に、または所望であれば直接プロセッサ３０４中の任意の論理に、浮動小数点除算結果４０４を提供する第１の出力と、例外状態フラグ４０６を提供する第２の出力とを少なくとも有する。
【００２７】
本例において、入力確認／出力訂正浮動小数点除算論理３２６は、分子４００および分母４０２を検査して、浮動小数点除算の特例が生じるかどうかを決定するよう動作する複数の特例試験回路４０８〜４１４を含む。複数の特例試験回路４０８〜４１４は、「非数」（ＮａＮ）試験回路４０８、無限大（ｉｎｆ）試験回路４１０、ゼロ（ｚｅｒｏ）試験回路４１２、およびオーバーフロー／アンダーフロー試験回路４１４を含む。それぞれの特例試験回路４０８〜４１４は、ＩＥＥＥ規格７５４により定義される浮動小数点除算の特定の特例を確認するよう動作する。また、入力確認／出力訂正浮動小数点除算論理３２６は、分子４００または分母４０２が非正規化数であるかどうかを確認するよう動作する非正規化数（ｄｅｎｏｒｍ）試験回路４１６も含んでよい。本例において、非正規化数試験回路４１６は、浮動小数点除算結果４０４を提供するためには使用されないが、例外状態フラグ４０６を生成するために使用される。後述の機能を果たすことができるいかなる組み合わせ論理も特例試験回路４０８〜４１４および非正規化数試験回路４１６として使用することができる。例えば、ＮａＮ試験回路４０８は、分子４００および分母４０２の指数および分数ビットを検査して、分子４００がＮａＮであるかどうか、また分母４０２がＮａＮであるかどうかを決定する。ＮａＮ試験回路４０８の２つの出力は、分子４００または分母４０２がそれぞれＮａＮであるかどうかを示す。同じことが、無限大およびゼロ試験回路４１０、４１２にも当てはまる。表１に、浮動小数点数が、ＮａＮ、無限大、ゼロ、または非正規化数であるかどうかを決定するための条件をまとめる。
【表１】
2013541084.tif 000003
【００２８】
オーバーフロー／アンダーフロー試験回路４１４に関しては、これは分子４００および分母４０２の指数を検査して、分子４００および分母４０２が、例えばＩＥＥＥ規格７５４に指定された、所定の範囲よりも大きいまたは小さいかどうかを決定する。この範囲は、ＩＥＥＥ規格７５４で定義される浮動小数点数の形式によって異なる。
【００２９】
また、入力確認／出力訂正浮動小数点除算論理３２６は、特例試験回路４０８〜４１４に動作可能に接続された優先順位マルチプレクサ４１８も含む。この優先順位マルチプレクサ４１８は、特例試験回路４０８〜４１４の出力をそのセレクタ入力Ｓ０〜Ｓ７として受け取る。優先順位マルチプレクサ４１８の入力Ｉ０〜Ｉ５は、候補商３２８および特殊値、例えばＮａＮ４２０、無限大４２２、ゼロ４２４、最大浮動小数点型定数（ｍａｘ＿ｆｌｏａｔ）４２６、および最小浮動小数点型定数（ｍｉｎ＿ｆｌｏａｔ）４２８を含む。優先順位マルチプレクサ４１８は、例えば、当分野で既知の任意の好適な組み合わせ論理を用いて、以下の例示的「Ｉｆ」文によって設計することができる。
【数１】
2013541084.tif 000004
【００３０】
「Ｉｆ」文は、優先順位を示唆するので、正しい入力を選択するための条件は順番に確認しなければならない。例えば、優先順位マルチプレクサ４１８は、まずＮａＮ試験回路４０８からのセレクタ入力Ｓ０を確認して、分子４００がＮａＮであるかを決定し、そうである場合には、優先順位マルチプレクサ４１８は、他のセレクタ入力Ｓ１〜Ｓ７とは無関係に、その出力としてＮａＮ４２０を表す入力Ｉ１を選択する。分子４００がＮａＮでない場合、優先順位マルチプレクサ４１８は、ＮａＮ試験回路４０８からのセレクタ入力Ｓ１を継続して確認して、分母４０２がＮａＮであるかを決定し、そうである場合には、優先順位マルチプレクサ４１８は、その出力としてＮａＮ４２０を表す入力Ｉ１を選択する。優先順位マルチプレクサ４１８による、ＮａＮ、無限大、およびゼロの特例の確認後、これら３つの特例がいずれも生じない場合、優先順位マルチプレクサ４１８は、オーバーフロー／アンダーフロー試験回路４１４からのセレクタ入力Ｓ６およびＳ７を確認して、オーバーフローまたはアンダーフロー特例が生じるかを決定し、適宜特殊値を出力することに留意する。例えば、オーバーフローが決定された場合、特殊値は、ＩＥＥＥ規格７５４で指定される通り浮動小数点除算で使用される丸めモードに応じて、ＩＥＥＥ規格７５４で定義される定数ｍａｘ＿ｆｌｏａｔ  ４２６または無限大４２２のいずれかであってよい。同様に、アンダーフローの場合の特殊値は、浮動小数点除算の丸めモードに応じて、ｍｉｎ＿ｆｌｏａｔ  ４２８またはゼロ４２４のいずれかであってよい。
【００３１】
例示的「Ｉｆ」文では浮動小数点除算の特例の条件を特定の順序で説明するが、当業者は、これらの条件は、優先順位マルチプレクサ４１８により異なる順序で確認されてもよいことを理解するであろう。一例において、優先順位マルチプレクサ４１８は、「ＥＬＳＥＩＦ  ｎｕｍｅｒａｔｏｒ＝ｄｅｎｏｍｉｎａｔｏｒ＝ｉｎｆ  ＴＨＥＮ  ｒｅｓｕｌｔ＝ＮａＮ」の文を「ＥＬＳＥＩＦ  ｎｕｍｅｒａｔｏｒ＝ｄｅｎｏｍｉｎａｔｏｒ＝ｚｅｒｏ  ＴＨＥＮ  ｒｅｓｕｌｔ＝ＮａＮ」の文の前に確認してもよい。別の例において、優先順位マルチプレクサ４１８は、「ＥＬＳＥＩＦ  ｄｅｎｏｍｉｎａｔｏｒ＝ｉｎｆ  ＯＲ  ｎｕｍｅｒａｔｏｒ＝ｚｅｒｏ  ＴＨＥＮ  ｒｅｓｕｌｔ＝ｚｅｒｏ」の文を「ＥＬＳＥＩＦ  ｄｅｎｏｍｉｎａｔｏｒ＝ｚｅｒｏ  ＯＲ  ｎｕｍｅｒａｔｏｒ＝ｉｎｆ  ＴＨＥＮ  ｒｅｓｕｌｔ＝ｉｎｆ」の文の前に確認してもよい。また別の例では、優先順位マルチプレクサ４１８は、「ＥＬＳＥＩＦ  ｕｎｄｅｒｆｌｏｗ  ＴＨＥＮ  ｒｅｓｕｌｔ＝ｍｉｎ＿ｆｌｏａｔ／ｚｅｒｏ」の文を「ＥＬＳＥＩＦ  ｏｖｅｒｆｌｏｗ  ＴＨＥＮ  ｒｅｓｕｌｔ＝ｍａｘ＿ｆｌｏａｔ／ｉｎｆ」の分の前に確認してもよい。
【００３２】
本例において、浮動小数点除算の特例の全ての条件は、候補商３２８を選択する条件よりも高い優先順位を有する。最終的に、浮動小数点除算の特例のいずれも決定されない場合、優先順位マルチプレクサ４１８は、その出力として候補商３２８を表す入力Ｉ０を選択する。
【００３３】
入力確認／出力訂正浮動小数点除算論理３２６は、優先順位マルチプレクサ４１８に動作可能に接続される符号ビット設定論理４３０をさらに含んでもよい。ＩＥＥＥ規格７５４で定義されるように、浮動小数点数の符号は、符号ビットによって設定される。無限大４２２およびゼロ４２４のような浮動小数点除算の一部の特殊値はまた、符号付きの値であり、これは浮動小数点除算結果４０４が、分子４００および分母４０２の符号ビットに応じて、＋ｉｎｆ、−ｉｎｆ、＋ｚｅｒｏ、または−ｚｅｒｏであってもよいことを意味する。符号ビット設定論理４３０は、受け取った分子４００および分母４０２の符号ビットに基づいて、浮動小数点除算結果４０４の符号ビットを設定する。例えば、浮動小数点除算結果４０４の符号ビットは、分子４００および分母４０２の符号ビットの「排他的ＯＲ」である。場合によって、浮動小数点加算器／減算器３２２および浮動小数点乗算器３２４は、候補商３２８を数値的に計算するときに分子４００および分母４０２の符号ビットを無視し、符号なし候補商３２８を入力確認／出力訂正浮動小数点除算論理３２６に提供してもよく、また候補商３２８が優先順位マルチプレクサ４１８によりその出力として決定された場合、分子４００および分母４０２の符号ビットに基づいて、候補商３２８の符号ビットが符号ビット設定論理４３０によって設定される。符号ビットの設定後、入力確認／出力訂正浮動小数点除算論理３２６は、第１の出力として、符号付きの浮動小数点除算結果４０４を出力する。上述のように、浮動小数点除算結果４０４は、レジスタ３１２に格納されても、または所望であれば、プロセッサ３０４の任意の論理に直接送信されてもよい。
【００３４】
浮動小数点除算結果４０４を表す第１の出力に加え、入力確認／出力訂正浮動小数点除算論理３２６は、ＩＥＥＥ規格７５４の要件に従って、例外状態フラグ４０６を表す第２の出力を提供するよう動作する例外フラグ論理４３２も含んでよい。上述のように、例外状態フラグ４０６は、命令実行の正常フローを中断するトラップシーケンスの処理を有効にするなど、信号が送られた例外の既定または代替の処理を呼び出す。図４に示すように、本例において、ＮａＮ試験回路４０８およびゼロ試験回路４１２のそれぞれ１つは、特定の例外を示す、例外フラグ論理４３２に接続された出力を有する。例えば、ゼロ試験回路４１２は、分母４０２がゼロであると決定された時点で、例外フラグ論理４３２に「ゼロ除算」信号を送信してもよい。ＮａＮ試験回路４０８は、分子４００および分母４０２がどちらもゼロまたは無限大であると決定された時点で、例外フラグ論理４３２に「無効演算」信号を送信してもよい。また、「不正確」例外などであるがこれに限定されないＩＥＥＥ規格７５４で定義される他の例外を決定し、所望であれば例外信号として例外フラグ論理４３２に送信してもよい。非正規化数試験回路４１６に関しては、非正規化数はＩＥＥＥ規格７５４に要求される例外ではないが、場合によっては、当分野で既知のように、プロセッサ３０４の非正規化数を追加例外とみなす必要があるだろう。本例において、非正規化数試験回路４１６は、分子４００および分母４０２を検査して、そのうちいずれか１つが非正規化数であるかどうかを決定する。表１に示すように、浮動小数点数は、指数がゼロであり、分数がゼロでない場合に非正規化数である。
【００３５】
次いで、例外フラグ論理４３２は、受け取った全ての例外信号に応じて例外状態フラグ４０６を設定し、入力確認／出力訂正浮動小数点除算論理３２６の第２の出力として例外状態フラグ４０６を出力する。上述のように、例外状態フラグ４０６は、レジスタ３１２に格納されても、または所望であれば、プロセッサ３０４の任意の論理に直接送信されてもよい。
【００３６】
場合によっては、入力確認／出力訂正浮動小数点除算論理３２６は、特例試験回路４０８〜４１４に動作可能に接続された任意ビットパターン（ＡＢＰ）エンコーダ４３４をさらに含んでもよい。このＡＢＰエンコーダ４３４は、本例において、特例試験回路４０８〜４１４によって決定された特例を表す任意ビットパターン（ＡＢＰ）４３６を生成する。ＡＢＰ４３６は、レジスタ３１２に格納される。本例において、上述のように特例試験回路４０８〜４１４から出力を直接受け取る代わりに、優先順位マルチプレクサ４１８は、ＡＢＰ４３６をレジスタ３１２からそのセレクタ入力Ｓ０〜Ｓ７に制御信号として受け取ってもよい。また、ＡＢＰ４３６は、分子４００および分母４０２の符号ビットに関する情報も含んでよく、したがって、符号ビット設定論理４３０が使用して、浮動小数点除算結果４０４の符号ビットを設定することができる。
【００３７】
図５および６は、浮動小数点除算修正命令３１６の例示的命令形式を示している。図５は、プロセッサ３０４により１クロックサイクルで実行される、単一浮動小数点除算修正命令３１６を示している。１クロックサイクルの時間は、プロセッサ３０４のクロック周波数によって決定され、これは例えば約０．５ｎｓ〜約１０ｎｓである。本例において、１クロックサイクルの時間は、クロック周波数８５０ＭＨｚで動作するプロセッサ３０４で約１．１８ｎｓである。複数の浮動小数点除算修正命令３１６が、１クロックサイクルで並列実行されてもよいことは理解される。浮動小数点除算修正命令３１６は、１６ビット命令、３２ビット命令、または６４ビット命令であってもよいが、これらに限定されない。図５は、４アドレスＩＳＡにおける単一浮動小数点除算修正命令３１６の例示的命令形式である。命令を指定する２進コード化であるオペレーションコード（オペコード）５００は、例えば「修正」である。オペコード５００は、命令を特定するために使用され、その名称は任意である。オペコード５００のビット数は、様々なＩＳＡに応じて異なってもよい。デスティネーション５０２、ソース１  ５０４、ソース２  ５０６、およびソース３  ５０８は、レジスタ数、メモリアドレス、メモリオフセット、または命令３１６に必要なデータを格納するそれらの任意の好適な組み合わせを指定するようにコード化される。本例において、デスティネーション５０２は、浮動小数点除算修正命令３１６の実行後に浮動小数点除算結果４０４を格納するレジスタ３１２のデスティネーションレジスタを指す。ソース１  ５０４およびソース２  ５０６は、上述のような入力確認／出力訂正浮動小数点除算論理３２６の２つの入力である分子４００および分母４０２をそれぞれ保持する、レジスタ３１２のソースレジスタを指す。ソース３は、入力確認／出力訂正浮動小数点除算論理３２６の別の入力である候補商３２８を保持するレジスタ３１２のソースレジスタを指す。デスティネーション５０２、ソース１  ５０４、ソース２  ５０６、およびソース３  ５０８のビット数は、特定のＩＳＡおよびレジスタ３１２の数に基づいて決定される。
【００３８】
次に図６を参照すると、浮動小数点除算修正命令３１６は、本例において、３アドレスＩＳＡのための２つの３アドレス命令である、入力確認命令６００および出力訂正命令６０２を含む。２つの命令６００、６０２のそれぞれ１つが、１クロックサイクルで実行され、本例の浮動小数点除算修正命令３１６全体は、２クロックサイクルで実行される。入力確認命令６００は、例えば「入力確認」のオペコード６０４を含む。図５の命令形式とは異なり、入力確認命令６００のデスティネーション６０６は、ＡＢＰ４３６を保持するレジスタを指定する。図７は、ＡＢＰ４３６の一例を示す。ＡＢＰ４３６は、特例試験回路４０８〜４１４からの特例確認結果に基づいて、ＡＢＰエンコーダ４３４によってコード化することができる。本例において、ＡＢＰ４３６は、分子が無限大７００、ＮａＮ７０２、およびゼロ７０４であるかどうか、また分母が無限大７０６、ＮａＮ７０８、およびゼロ７１０であるかどうかを示す部分を含む。ＡＢＰ４３６はまた、オーバーフローまたはアンダーフロー特例が生じるかどうかを示す部分７１２と、分子４００および分母４０２の符号ビットをそれぞれ示す部分７１４、７１６とを含んでもよい。ＡＢＰ４３６のコード化および形式が任意であることは理解される。ＡＢＰ４３６は、ＡＢＰ４３６のサイズ（例えば、３２ビットＡＢＰ、６４ビットＡＢＰ）に応じて、いくらかの未使用ビットを含んでもよい。次に再び図６を参照すると、入力確認命令６００のソース１  ６０８およびソース２  ６１０は、分子４００および分母４０２をそれぞれ保持するレジスタ３１２のソースレジスタを指す。入力確認命令６００を実行することにより、入力確認／出力訂正浮動小数点除算論理３２６は、分子４００および分母４０２を確認し、入力確認結果を表すＡＢＰ４３６を生成する。
【００３９】
一方、出力訂正命令６０２は、例えば「出力訂正」のオペコード６１２によって特定される。出力訂正命令６０２のデスティネーション６１４、ソース１  ６１６、およびソース２  ６１８は、浮動小数点除算結果４０４、ＡＢＰ４３６、および候補商３２８をそれぞれ格納するレジスタ３１２を指定する。通常は、出力訂正命令６０２は、入力確認命令６００後に実行され、入力確認／出力訂正浮動小数点除算論理３２６に、ＡＢＰ４３６により表される決定された浮動小数点除算の特例および候補商３２８に基づいて、浮動小数点除算結果４０４を出力させる。
【００４０】
図８は、本開示に記載される一実施形態による、浮動小数点除算を実行するための方法の一例を示すフローチャートである。これは、上記の図面を参照して説明する。しかしながら、任意の好適な論理または構造体を採用してもよい。動作時に、浮動小数点除算修正命３１６はブロック８００で処理される。例えば、浮動小数点除算修正命令３１６は、命令キャッシュ３１４からロードされ、命令デコーダによってデコードされ、プロセッサ３０４（すなわち、浮動小数点ＡＬＵ３１０）によって実行されてよい。ブロック８０２において、浮動小数点除算修正命令３１６の実行は、次いで入力確認／出力訂正浮動小数点除算論理３２６、具体的には特例試験回路４０８〜４１４に、分子４００を表す第１の入力および分母４０２を表す第２の入力を検査させ、浮動小数点除算の特例が生じるかどうかを決定させる。ブロック８０４において、浮動小数点除算修正命令３１６の実行はまた、入力確認／出力訂正浮動小数点除算論理３２６の優先順位マルチプレクサ４１８に、決定された浮動小数点除算の特例と候補商３２８を表す第３の入力とに基づいて、浮動小数点除算結果４０４を表す出力を提供させる。上述のように、浮動小数点除算修正命令３１６の実行は、１または２クロックサイクルであってよい。したがって、ブロック８００〜８０４は、１または２クロックサイクルで実施されてよい。
【００４１】
本開示による１つの例示的な実施形態において、浮動小数点除算結果４０４は、装置３００によって様々な目的で使用されてもよい。例えば、装置３００は、１つまたは複数の表示画面３０６上に表示される画像の画像データ３０８を生成するＧＰＵ３０４を含んでもよい。ブロック８０６において、装置３００は、入力確認／出力訂正浮動小数点除算論理３２６の浮動小数点除算結果４０４を表す出力に基づいて、画像の少なくとも一部、例えば１つまたは複数のピクセルを生成してもよい。一例において、浮動小数点除算結果４０４は、当分野において既知のように、３Ｄグラフィックモデリングおよびレンダリングにおいて逆行列を計算して、表示画面３０６への出力３０８のための３Ｄグラフィック物体を生成するために使用される。別の例において、浮動小数点除算結果４０４は、当分野において既知のように、画像データ３０８を平滑化し、ノイズを排除するための平均化（平均）フィルタによって使用される。
【００４２】
また、プロセッサ３０４は、ＧＰＧＰＵであってもよく、浮動小数点除算結果４０４は、非グラフィック計算のためにＧＰＵにアクセス可能なオープン計算言語（Ｏｐｅｎ  Ｃｏｍｐｕｔｉｎｇ  Ｌａｎｇｕａｇｅ（ＯｐｅｎＣＬ））の一部として、非グラフィックコンピュータ処理および計算に使用してもよい。例えば、浮動小数点除算結果４０４は、数例を挙げると、固有ベクトルおよび固有値の計算、線形関数または多項式の補間、超越関数、有理関数、および偏微分方程式の計算などであるが、これらに限定されない、数値アルゴリズムで使用してもよい。ブロック８０２および８０４は、図９および１０でさらに説明する。
【００４３】
図９を参照すると、動作時に、実行された浮動小数点除算修正命令３１６は、入力確認／出力訂正浮動小数点除算論理３２６に、候補商３２８を表す第３の入力を受け取らせる。上述のように、候補商３２８は、浮動小数点除算の特例とは無関係に、分子４００および分母４０２に基づいて数値的に計算される。この数値計算は、ニュートン・ラプソン法およびゴールドシュミット法などであるがこれらに限定されない反復アルゴリズムを用いて実行される。浮動小数点除算修正命令３１６の実行とは別に、数値計算は、複数の命令、例えば浮動小数点加算／減算および浮動小数点乗算命令３１８、３２０の実行に応答して、浮動小数点加算器／減算器３２２および浮動小数点乗算器３２４によって実行される。この数値計算は、分子４００および分母４０２がどちらも正規浮動小数点数であると仮定し、浮動小数点除算の特例を考慮しないことから、論理演算または条件付き演算は必要ない。
【００４４】
ブロック９０２に進むと、実行された浮動小数点除算修正命令３１６は、特例試験回路４０８〜４１４に、分子４００および分母４０２を検査させる。この検査に基づいて、ブロック９０４において、実行された浮動小数点除算修正命令３１６は、入力確認／出力訂正浮動小数点除算論理３２６に、浮動小数点除算の特例のうちの１つが生じるかどうかを決定させる。浮動小数点除算の特例が生じる場合、ブロック９０６において、実行された浮動小数点除算修正命令３１６は、入力確認／出力訂正浮動小数点除算論理３２６に、さらに、浮動小数点除算結果４０４を表す出力として、対応する浮動小数点除算の特殊値を提供させる。この特殊値は、特定された特例に基づいて、ＮａＮ４２０、無限大４２２、ゼロ４２４、ｍａｘ＿ｆｌｏａｔ  ４２６、およびｍｉｎ＿ｆｌｏａｔ  ４２８のうちの１つであってよい。上記の「Ｉｆ」文に示すように、特例条件はより高い優先順位を有するため、特例のうちのいずれか１つが生じる場合、優先順位マルチプレクサ４１８は、候補商３２８を無視し、直接その出力として対応する特殊値を提供する。
【００４５】
一方、浮動小数点除算の特例のいずれも生じない場合、ブロック９０８において、実行された浮動小数点除算修正命令３１６は、入力確認／出力訂正浮動小数点除算論理３２６に、浮動小数点除算結果４０４を表す出力として候補商３２８を提供させる。優先順位マルチプレクサ４１８の出力は符号なしの値であってもよいことから、ブロック９１０において、実行された浮動小数点除算修正命令３１６は、符号ビット設定論理４３０に、分子４００および分母４０２の符号ビットに基づいて、浮動小数点除算結果４０４の符号ビットを設定させてもよい。
【００４６】
図９に示す処理ブロックは特定の順序で示されるが、当業者は、処理を異なる順序で実施してもよいことを理解するであろう。例えば、ブロック９００は、ブロック９０２のあとに実行してもよく、または本質的に同時に実行してもよい。入力確認／出力訂正浮動小数点除算論理３２６は、同時に、候補商３２８を受け取り、分子４００および分母４０２を検査してもよい。
【００４７】
図１０を参照すると、本例において、実行された浮動小数点除算修正命令３１６は、ブロック１０００において、ＡＢＰエンコーダ４３４に、図７に示すように浮動小数点除算の特例が生じるかどうかを表すＡＢＰ４３６をコード化させてもよい。ＡＢＰ４３６は、分子４００および分母４０２の検査に基づく、浮動小数点除算の特例に関する情報を含み、また分子４００および分母４０２の符号ビットを示す情報も含んでよく、これはブロック９１０において、符号ビット設定論理により使用することができる。次いでＡＢＰ４３６は、ブロック１００２においてレジスタ３１２に格納される。図６に関して説明したように、３アドレス入力確認命令６００を実行して、入力確認／出力訂正浮動小数点除算論理３２６に、処理ブロック１０００および１００２を実行させてもよいことに留意する。この３アドレス出力訂正命令６０２は、図９のブロック９０４〜９１０に示すように、さらに実行して、入力確認／出力訂正浮動小数点除算論理３２６に、ＡＢＰ４３６および候補商３２８に基づく浮動小数点除算結果４０４を提供させてもよい。
【００４８】
本例において、ＩＥＥＥ規格７５４の例外状態フラグを提供する要件に準拠するために、実行された浮動小数点除算修正命令３１６は、ブロック１００４において、例外フラグ論理４３２に、分子４００および分母４０２に基づいて例外状態フラグ４０６を決定させてもよい。具体的には、この決定は、少なくともＮａＮ試験回路４０８およびゼロ試験回路４１２からの出力信号に基づいてなされてもよい。決定された例外状態フラグ４０６は、次いでブロック１００６において、入力確認／出力訂正浮動小数点除算論理３２６の第２の出力として提供される。
【００４９】
図１０に示す処理ブロックは特定の順序で示されるが、当業者は、処理を異なる順序で実施してもよいことを理解するであろう。例えば、ブロック１０００および１００２は、ブロック１００４および１００６のあとに実行してもよく、または本質的に同時に実行してもよい。実行された浮動小数点除算修正命令３１６は、入力確認／出力訂正浮動小数点除算論理３２６に、ＡＢＰ４３６および例外状態フラグ４０６を本質的に同時に処理させる。
【００５０】
また、ＣＤＲＯＭ、ＲＡＭ、他の形態のＲＯＭ、ハードドライブ、分散型メモリなどであるがこれらに限定されないコンピュータ可読媒体に格納された実行可能な命令に基づき、集積回路を含むウエハを作成する集積回路設計システム（例えば、ワークステーション）が知られている。この命令は、ハードウェア記述言語（ＨＤＬ）、Ｖｅｒｉｌｏｇ、または他の好適な言語などであるがこれらに限定されない任意の好適な言語で表現することができる。したがって、本明細書に記載する論理および回路は、そのようなシステムによって、命令が格納されたコンピュータ可読媒体を用いて、集積回路として製造してもよい。例えば、前述の論理および回路を含む集積回路をそのような集積回路製作システムを用いて作成してもよい。コンピュータ可読媒体は、１つまたは複数の集積回路設計システムに集積回路を設計させる、１つまたは複数の集積回路設計システムにより実行可能な命令を格納する。設計された集積回路は、入力確認／出力訂正浮動小数点除算論理、ならびに本明細書で開示されるような他の論理または構造体を有する浮動小数点ＡＬＵを含む。入力確認／出力訂正浮動小数点除算論理は、入力確認／出力訂正浮動小数点除算論理に、入力確認／出力訂正浮動小数点除算論理の分子を表す第１の入力および分母を表す第２の入力を検査して、浮動小数点除算の特例が生じるかどうかを決定させ、決定された浮動小数点除算の特例と、入力確認／出力訂正浮動小数点除算論理の候補商を表す第３の入力とに基づいて、入力確認／出力訂正浮動小数点除算論理の浮動小数点除算結果を表す出力提供させる、浮動小数点ＡＬＵにより実行可能な浮動小数点除算修正命令に応答する。
【００５１】
いくつかの利益のうち特に、浮動小数点除算を実行するための方法および装置は、ＩＥＥＥ規格７５４に依然として準拠しながら、浮動小数点除算の実行を短時間かつ高速にする能力を提供する。浮動小数点除算の数値部分は、依然として、対応する命令で、既存の浮動小数点加算器／減算器および乗算器を用いて反復アルゴリズムにより計算され、それによりこの方法および装置は費用効率が高くなる。一方、入力確認／出力訂正浮動小数点除算論理および対応する浮動小数点除算修正命令を適用することによって、浮動小数点除算の特例を認識し、処理するための複数の時間のかかる条件命令および論理命令（最大３０個の命令）は、実行時間を減少させるために置き換えることができる。したがって、提案される技法は、並列ストリームプロセッサ、例えばＳＩＭＤプロセッサ、例えばコンピュータグラフィックスおよび／または非グラフィック処理および計算で使用するＧＰＵおよび／またはＧＰＧＰＵに好適であり得る。さらに、浮動小数点除算を実行するための方法および装置は、ＩＥＥＥ規格７５４に準拠することが可能である。したがって、提案される技法は、少ない命令数および速い実行速度と同時に、より低いプロセッサの設計費用および製造費用の利点、ならびに反復アルゴリズム実行の柔軟性の利点を維持することができる。他の利益は、当業者に理解されるであろう。
【００５２】
上記の本発明の詳細な説明、および本明細書に記載する例は、例示および説明の目的で提示されるにすぎず、限定するものではない。したがって、本発明は、上記で開示され、ここに請求される基本的な根本原理の精神および範囲に含まれるあらゆる修正形態、変更形態、または均等物を包含するものと想定される。
【図１】
2013541084.tif 000005
【図２】
2013541084.tif 000006
【図３】
2013541084.tif 000007
【図４】
2013541084.tif 000008
【図５】
2013541084.tif 000009
【図６】
2013541084.tif 000010
【図７】
2013541084.tif 000011
【図８】
2013541084.tif 000012
【図９】
2013541084.tif 000013
【図１０】
2013541084.tif 000014
【国際調査報告】
2013541084.tif 000015
2013541084.tif 000016