(57)【要約】  本発明の一実施形態は、浮動小数点演算を行う技術である。浮動小数点（ＦＰ）二乗器は第一の引き数を二乗して中間の引き数を生成する。第一の引き数および中間の引き数は、第一の仮数／指数および中間の仮数／指数を有す。ＦＰ乗加算（ＭＡＤ）部は、中間の引き数、第二の引き数、および第三の引き数に乗加算演算を行い、結果仮数と結果指数とを有す結果を生成する。第二の引き数および第三の引き数は、それぞれ第二の仮数／指数および第三の仮数／指数を有す。【選択図】図３
2009505309.tif 000002
【特許請求の範囲】
【請求項１】
一の第一の引き数を二乗して一の中間の引き数を生成する一の浮動小数点（ＦＰ）二乗器と、
前記ＦＰ二乗器に連結され、前記中間の引き数、一の第二の引き数、および一の第三の引き数に一の乗加算演算を行い、一の結果仮数と一の結果指数とを有す一の結果を生成する一のＦＰ乗加算（ＭＡＤ）部と、を含み、
前記第一の引き数および前記中間の引き数は、第一の仮数／指数および中間の仮数／指数を有し、
前記第二の引き数および前記第三の引き数はそれぞれ、第二の仮数／指数および第三の仮数／指数を有す、装置。
【請求項２】
前記ＦＰ二乗器は、
前記第一の仮数を、前記第一の仮数および一の第一の定数のうちから選択された一の仮数被乗数で乗算し、前記中間の仮数を生成する一の第一の乗算器と、
前記第一の指数に、前記第一の指数および一の第二の定数のうちから選択された一の指数加数を加算し、前記中間の指数を生成する、一の第一の加算部と、を含む、請求項１に記載の装置。
【請求項３】
前記ＦＰ  ＭＡＤ部は、
前記中間の仮数を前記第二の仮数で乗算して一の仮数積を生成する一の第二の乗算器と、
前記乗算器に連結されて、前記仮数積および前記第三の仮数を調節する一の調節器と、
前記第一の加算器に連結されて、前記中間の指数に前記第二の指数を加算して一の指数和を生成する一の第二の加算器と、
前記仮数調節器に連結されて、前記調節された仮数積と第三の仮数とを加算して一の仮数和を生成する一の第三の加算器と、を含む、請求項２に記載の装置。
【請求項４】
前記調節器は、
前記指数和と、前記第三の指数、一の増分された第三の指数、および一の第三の定数のうちの一つとを利用して、一の仮数シフトコードおよび一の調節された指数和を生成する一の調節回路と、
前記仮数シフトコードを利用して前記仮数積をシフトして、前記調節された仮数積を生成する一の第一のシフタと、
前記第三の仮数および一の第四の定数のうちの一方を、前記仮数シフトコードを利用してシフトして、前記調節された第三の仮数を生成する一の第二のシフタと、を含む、請求項３に記載の装置。
【請求項５】
前記第三の加算器に連結され、前記仮数和を丸めおよび正規化して前記結果仮数を生成するとともに、一の丸めおよび正規化コードを提供する、一の丸めおよび正規化回路と、
前記調節回路に連結され、前記調節された指数和および前記丸めおよび正規化コードを利用して前記結果指数を生成する、一の結果指数調節器と、をさらに含む、請求項４に記載の装置。
【請求項６】
前記第一の定数、前記第二の定数、前記第三の定数、および前記第四の定数はそれぞれ、単一（unity）、ゼロ、ゼロ、ゼロである、請求項４に記載の装置。
【請求項７】
前記第一の引き数、前記第二の引き数、および前記第三の引き数は、一の拡張関数の一の多項式近似法および一のニュートン−ラプソン反復法のうちの一方で利用される、請求項１に記載の装置。
【請求項８】
一の第一の引き数を二乗して一の中間の引き数を生成することと、
前記中間の引き数、一の第二の引き数、および一の第三の引き数に一の乗加算演算を行い、一の結果仮数と一の結果指数とを有す一の結果を生成することと、を含み、
前記第一の引き数および前記中間の引き数は、第一の仮数／指数および中間の仮数／指数を有し、
前記第二の引き数および前記第三の引き数はそれぞれ、第二の仮数／指数および第三の仮数／指数を有す、方法。
【請求項９】
前記二乗することは、
前記第一の仮数を、前記第一の仮数および一の第一の定数のうちから選択された一の仮数被乗数で乗算し、前記中間の仮数を生成することと、
前記第一の指数に、前記第一の指数および一の第二の定数のうちから選択された一の指数加数を加算し、前記中間の指数を生成することと、を含む、請求項８に記載の方法。
【請求項１０】
前記乗加算演算を行うことは、
前記中間の仮数を前記第二の仮数で乗算して一の仮数積を生成することと、
前記仮数積および前記第三の仮数を調節することと、
前記中間の指数に前記第二の指数を加算して一の指数和を生成することと、
前記調節された仮数積と第三の仮数とを加算して一の仮数和を生成することと、を含む、請求項９に記載の方法。
【請求項１１】
前記調節することは、
前記指数和と、前記第三の指数、一の増分された第三の指数、および一の第三の定数のうちの一つとを利用して、一の仮数シフトコードおよび一の調節された指数和を生成することと、
前記仮数シフトコードを利用して前記仮数積をシフトして、前記調節された仮数積を生成することと、
前記第三の仮数および一の第四の定数のうちの一方を、前記仮数シフトコードを利用してシフトして、前記調節された第三の仮数を生成することと、を含む、請求項１０に記載の方法。
【請求項１２】
前記仮数和を丸めおよび正規化して前記結果仮数を生成するとともに、一の丸めおよび正規化コードを提供することと、
前記調節された指数和および前記丸めおよび正規化コードを利用して前記結果指数を生成することと、をさらに含む、請求項１１に記載の方法。
【請求項１３】
前記第一の定数、前記第二の定数、前記第三の定数、および前記第四の定数はそれぞれ、単一（unity）、ゼロ、ゼロ、ゼロである、請求項１１に記載の方法。
【請求項１４】
前記第一の引き数、前記第二の引き数、および前記第三の引き数は、一の拡張関数の一の多項式近似法および一のニュートン−ラプソン反復法のうちの一方で利用される、請求項１８に記載の方法。
【請求項１５】
グラフィックデータを処理する一のグラフィック制御器と、
前記グラフィック制御器に連結されて、前記グラフィックデータを記憶する一のメモリと、
前記グラフィックデータに複数の浮動小数点演算を行うべく前記グラフィック制御器に連結され、一の制御器と、一のＦＰパイプラインと、一の出力回路とを含む一の浮動小数点演算部（ＦＰＵ）と、を含み、
前記ＦＰパイプラインは、
一の第一の引き数を二乗して一の中間の引き数を生成する一の浮動小数点（ＦＰ）二乗器と、
前記ＦＰ二乗器に連結され、前記中間の引き数、一の第二の引き数、および一の第三の引き数に一の乗加算演算を行い、一の結果仮数と一の結果指数とを有す一の結果を生成する一のＦＰ乗加算（ＭＡＤ）部と、を含み、
前記第一の引き数および前記中間の引き数は、第一の仮数／指数および中間の仮数／指数を有し、
前記第二の引き数および前記第三の引き数はそれぞれ、第二の仮数／指数および第三の仮数／指数を有す、システム。
【請求項１６】
前記ＦＰ二乗器は、
前記第一の仮数を、前記第一の仮数および一の第一の定数のうちから選択された一の仮数被乗数で乗算し、前記中間の仮数を生成する一の第一の乗算器と、
前記第一の指数に、前記第一の指数および一の第二の定数のうちから選択された一の指数加数を加算し、前記中間の指数を生成する、一の第一の加算部と、を含む、請求項１５に記載のシステム。
【請求項１７】
前記ＦＰ  ＭＡＤ部は、
前記中間の仮数を前記第二の仮数で乗算して一の仮数積を生成する一の第二の乗算器と、
前記乗算器に連結されて、前記仮数積および前記第三の仮数を調節する一の調節器と、
前記第一の加算器に連結されて、前記中間の指数に前記第二の指数を加算して一の指数和を生成する一の第二の加算器と、
前記仮数調節器に連結されて、前記調節された仮数積と第三の仮数とを加算して一の仮数和を生成する一の第三の加算器と、を含む、請求項１６に記載のシステム。
【請求項１８】
前記調節器は、
前記指数和と、前記第三の指数、一の増分された第三の指数、および一の第三の定数のうちの一つとを利用して、一の仮数シフトコードおよび一の調節された指数和を生成する一の調節回路と、
前記仮数シフトコードを利用して前記仮数積をシフトして、前記調節された仮数積を生成する一の第一のシフタと、
前記第三の仮数および一の第四の定数のうちの一方を、前記仮数シフトコードを利用してシフトして、前記調節された第三の仮数を生成する一の第二のシフタと、を含む、請求項１７に記載のシステム。
【請求項１９】
前記第三の加算器に連結され、前記仮数和を丸めおよび正規化して前記結果仮数を生成するとともに、一の丸めおよび正規化コードを提供する、一の丸めおよび正規化回路と、
前記調節回路に連結され、前記調節された指数和および前記丸めおよび正規化コードを利用して前記結果指数を生成する、一の結果指数調節器と、をさらに含む、請求項１８に記載のシステム。
【請求項２０】
前記第一の定数、前記第二の定数、前記第三の定数、および前記第四の定数はそれぞれ、単一（unity）、ゼロ、ゼロ、ゼロである、請求項１８に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、マイクロプロセッサ分野に関しており、より具体的には、浮動小数点演算部に関する。
【背景技術】
【０００２】
浮動小数点（ＦＰ）演算は、三次元（３−Ｄ）コンピュータグラフィック、画像処理、デジタル信号処理、天気予報、宇宙探索、地震処理、および数値解析などの多くの計算領域で益々普及してきている。コンピュータシステムにおけるＦＰ計算力を高めるべく、特別に設計された浮動小数点演算部が開発されている。ＦＰ利用の多くには拡張関数の計算が関わる。拡張関数の例には、三角関数、指数・対数関数、平方根、逆数平方根、逆数（inverse）、除算、および、べき関数などがある。
【０００３】
ＦＰ拡張関数を計算する既存の技術は、幾らもの欠点を持つ。これら技術は、テーブルから得られる値の補間から、ＣＯＲＤＩＣ（Ｃｏｏｒｄｉｎａｔｅ  Ｒｏｔａｔｉｏｎ  Ｄｉｇｉｔａｌ  Ｃｏｍｐｕｔｅｒ）技術などの反復アルゴリズムまで、幅広い範囲に亘る。これら技術は専門的回路を持つ専門的なハードウェアを必要としうる。これらは典型的に高価であり、幅広い範囲の拡張関数に対応できるだけの柔軟性がない。
【図面の簡単な説明】
【０００４】
本発明の実施形態は、本発明の実施形態の例示に利用される以下の記載と関連する図面とを参照することで最大限に理解されるであろう。図面は以下を示す。
【０００５】
【図１Ａ】本発明の一実施形態を実施可能な処理システムを示す図である。
【０００６】
【図１Ｂ】本発明の一実施形態を実施可能なグラフィックシステムを示す図である。
【０００７】
【図２】本発明の一実施形態によるＦＰ部（ＦＰＵ）を示す図である。
【０００８】
【図３】本発明の一実施形態による二乗・乗加算（square multiply-add）（ＭＡＤ）部を示す図である。
【０００９】
【図４】本発明の一実施形態によるＦＰ二乗器を示す図である。
【００１０】
【図５】本発明の一実施形態によるＦＰ  ＭＡＤ部を示す図である。
【００１１】
【図６】本発明の一実施形態によるＦＰ計算を行うプロセスを示すフローチャートである。
【００１２】
【図７】本発明の一実施形態による二乗プロセスを示すフローチャートである。
【００１３】
【図８】本発明の一実施形態による乗加算演算を行うプロセスを示すフローチャートである。
【００１４】
【図９】本発明の一実施形態による仮数積を調節するプロセスを示すフローチャートである。
【発明を実施するための最良の形態】
【００１５】
本発明の一実施形態は、浮動小数点演算を行う技術である。浮動小数点（ＦＰ）二乗器は第一の引き数を二乗して中間の引き数を生成する。第一の引き数および中間の引き数は、第一の／中間の仮数／指数である。ＦＰ乗加算（ＭＡＤ）部は、乗加算演算を中間の引き数、第二の引き数、および第三の引き数に行い、結果仮数および結果指数を有す結果を生成する。第二の引き数および第三の引き数は、それぞれ第二の／第三の仮数／指数である。
【００１６】
以下の記載において、幾多の具体的詳細を述べる。しかし、本発明の実施形態はこれら具体的詳細なしに実施されうることは理解されたい。他の場合においては、公知の回路、構造、技術は示さないで本開示の理解を曖昧にしないようにしている。
【００１７】
本発明の一実施形態は、通常フローチャート、フロー図、構造図、あるいはブロック図として描かれるプロセスとして記載することができる。フローチャートは操作を逐次プロセスとして記載しているが、多くの操作は並列的にあるいは同時に行うことができる。さらに、操作順序は配列し直してもよい。プロセスは、その操作が完成したときに終了される。一つのプロセスは方法、プログラム、手順、製造・製作方法に対応していてよい。
【００１８】
本発明の一実施形態は、ＦＰ拡張関数を効率的に計算する技術である。ＦＰ拡張関数は少なくとも、三角関数、および繰り返し（reciprocation）、平方根、平方根の繰り返しなどの代数関数を含む。拡張関数計算は、Ｙ＝ＡｘＢ＋Ｃ形式の式を計算する基本的な乗加算（ＭＡＤ）命令を利用する多項式近似法に基づく。代数関数計算は、ニュートン−ラプソン反復法を利用して行ってよい。
【００１９】
典型的な多項式近似法は、範囲減少段階、近似段階、および復元段階という三段階に分けられうる。範囲減少段階では、引き数を減少範囲に存在する値に変換する。近似段階では、範囲が減少した引き数の関数の多項式近似を行う。復元段階では、最終結果を所定の定数（単数あるいは複数）で構成して、原範囲を復元する。典型的に、範囲減少段階および復元段階は単純であり、効率的に実施することができる。これらは、単純なマスキング、比較、あるいは低次多項式計算を含みうる。近似段階は、多項式がかなり高次元でありうるので（例えば２０を超える）、最も時間がかかる。
【００２０】
近似段階において、Ｈｏｒｎｅｒ法を利用して乗加算式を因数分解し（factor out）、乗算数を減らすことがある。例えば、四次元多項式ｙ＝ａｘ４＋ｂｘ３＋ｃｘ２＋ｄｘ＋ｅは、以下のように評価できる。
ｙ＝（（（ａｘ＋ｂ）ｘ＋ｃ）ｘ＋ｄ）ｘ＋ｅ  ・・・（１）
【００２１】
上記の式の評価には、基本的に４個のＭＡＤ命令のみが必要となる。
Ａ＝ａｘ＋ｂ  ・・・（２ａ）
Ｂ＝Ａｘ＋ｃ  ・・・（２ｂ）
Ｃ＝Ｂｘ＋ｄ  ・・・（２ｃ）
Ｄ＝Ｃｘ＋ｅ＝ｙ  ・・・（２ｄ）
【００２２】
概して、ｎ次元多項式は以下の通りである。
ｆ（ｘ）＝ａ０ｘｎ＋ａ１ｘｎ−１＋...＋ａｋｘｎ−ｋ＋ａｋ＋１  ・・・（３）
多項式の評価は、各演算が新たな係数ａｉ（ｉ＝０，...，ｋ）を含むｎ個のＭＡＤ演算を行うことで効率的に実行することができる。
【００２３】
多項式の累乗の項が２ずつ増分するようになっているとき、多項式の評価はＹ＝ＡｘＢ＋Ｃの代わりにＹ＝Ａ２ｘＢ＋Ｃという基本演算を利用することで効率的に行われる場合がある。この演算は、二乗・乗加算演算、あるいはＳＭＡＤと称される。ＳＭＡＤが基本計算部として実装されている場合、ＳＭＡＤを利用するこのような多項式の評価は、ＭＡＤを利用する際よりも効率的に行いうる。例えば、以下の多項式を例としてあげる。
ｆ（ｘ）＝ａｘ８＋ｂｘ６＋ｃｘ４＋ｄｘ２＋ｅ  ・・・（４）
上記の多項式は依然８個のＭＡＤ演算が必要である。上記の式は以下のように書き換えられる。
ｆ（ｘ）＝（（（ａｘ２＋ｂ）ｘ２＋ｃ）ｘ２＋ｄ）ｘ２＋ｅ  ・・・（５）
【００２４】
上記の式は、以下のように評価する際に４個のＳＭＡＤ命令のみを必要とする。
Ａ＝ａｘ２＋ｂ  ・・・（６ａ）
Ｂ＝Ａｘ２＋ｃ  ・・・（６ｂ）
Ｃ＝Ｂｘ２＋ｄ  ・・・（６ｃ）
Ｄ＝Ｃｘ２＋ｅ＝ｆ（ｙ）  ・・・（６ｅ）
【００２５】
一般的に言って、向上したＭＡＤ、あるいはＳＭＡＤ命令は、ＭＡＤ命令に比して二倍の計算効率を可能とする。多くの拡張関数は、２ずつ増分する累乗の項を持つ多項式により近似しうる。そのような種類の拡張関数の一つに三角関数がある。例えば、サイン関数は以下のように近似されうる。
サイン（ｘ）＝ｘ−ａ０ｘ３＋ａ１ｘ５−ａ２ｘ７  ・・・（７）
【００２６】
コサイン関数は以下のように近似されうる。
コサイン（ｘ）＝１−ｂ０ｘ２＋ｂ１ｘ４−ｂ２ｘ６  ・・・（８）
【００２７】
ＳＭＡＤはさらに、逆数（１／ｘ）、平方根、逆数平方根（reciprocal square root）などの代数関数をニュートン−ラプソン法を利用して計算する際に計算効率を発揮する。ニュートン−ラプソン法は、初期値、低精度値、および推測値をとる反復近似法である。反復毎に精度は二倍になり、現在の反復で得られる結果が次の反復の初期推測値として用いられる。実際的な領域節約措置としては、初期推測値表を極小さくしておいて、ニュートン−ラプソン技法による追加的な反復用領域のための蓄えを相殺することが望ましい。逆数近似に利用される共通式は以下の通りである。
ｘｉ＝ｘｉ−１（２−ａｘｉ−１）  ・・・（９）
【００２８】
ＭＡＤ部を利用すると、上記の式の各反復は二つの命令をとる。
第一のＭＡＤ：ｚ＝２−ａ＊ｘｉ−１  ・・・（１０ａ）
第二のＭＡＤ：ｘｉ＝ｚ＊ｘｉ−１＋０  ・・・（１０ｂ）
【００２９】
しかし、向上したＭＡＤあるいはＳＭＡＤ演算では、単一の命令で各ニュートン−ラプソン反復を評価することができる。これは、式（９）を以下のように並べ替えることで行われてよい。
ｘｉ＝２ｘｉ−１−ａｘ２ｉ−１  ・・・（７）
【００３０】
上記の式においては、２×ｘという乗算がｘの指数の単純な反復により達成されうる。ニュートン−ラプソンプロセスの各反復により初期推測値の精度が二倍になる。各反復を計算するのに必要な命令数をＭＡＤ部の半分に減らすことで、同じ推測表を維持しつつスループット全体を二倍にすることができる、あるいは同じスループットを維持しつつ初期推測表のサイズを半減させることができる。
【００３１】
図１Ａは、本発明の一実施形態を実施可能な処理システムを示す図である。システム１０は、プロセッサ部１５、浮動小数点演算部（ＦＰＵ）２０、メモリ制御器ハブ（ＭＣＨ）２５、メインメモリ３０、入出力制御ハブ（ＩＯＨ）４０、インターコネクト４５、大容量記憶デバイス５０、および入出力（Ｉ／Ｏ）デバイス４７１〜４７ｋを含む。
【００３２】
プロセッサ部１５は、ハイパスレッディング（hyper threading）、セキュリティ、ネットワーク、デジタルメディア技術を利用するプロセッサ、シングルコアプロセッサ、マルチコアプロセッサ、埋め込みプロセッサ、携帯プロセッサ、マイクロ制御器、デジタル信号プロセッサ、スーパスケーラコンピュータ、ベクトルプロセッサ、単一命令多重データ処理（ＳＩＭＤ）コンピュータ、複雑命令セットコンピュータ（ＣＩＳＣ）、縮小命令セットコンピュータ（ＲＩＳＣ）、超長命令語（ＶＬＩＷ）、あるいは混合アーキテクチャなどの任意の種類のアーキテクチャの中央処理装置を表す。
【００３３】
ＦＰＵ２０は、ベクトル処理について浮動小数点演算を行う双対プロセッサである。これは、プロセッサ部１５に対して直接インタフェースをもつこともあり、プロセッサ部１５との間で、メモリスペースなどのシステム資源を共有することもある。プロセッサ部１５およびＦＰＵ２０はベクトルデータおよびＦＰ命令を含む命令およびデータを交換してよい。ＦＰＵ２０はさらに、プロセッサ部１５のアドレススペースを占有する入出力（Ｉ／Ｏ）プロセッサとして見ることもできる。それはさらに、プロセッサ部１５に直接インタフェースされるのでなく、ＭＣＨ２５にインタフェースされてもよい。それは、向上したＭＡＤ部を利用して拡張関数を計算する際にＦＰパイプラインを持つ高度に拡張可能なアーキテクチャを利用する。特に、ＦＰＵ２０は、三角関数あるいは代数関数（例えば、逆数、平方根、逆数平方根）、あるいは２ずつ増分する累乗を持つ多項式を含む項により、あるいはニュートン−ラプソン法により近似しうる任意の関数を効率的に計算するのに利用されてよい。
【００３４】
ＭＣＨ２５は、メインメモリ３０およびＩＣＨ４０などのメモリおよび入出力デバイスに対して制御および構成を提供する。ＭＣＨ２５は、グラフィック、メディア、隔離実行モード、ホストから周辺へのバスインタフェース（host-to-peripheral bus interface）、メモリ制御、電源管理、などの多数の機能を統合したチップセットに統合することもできる。ＭＣＨ２５あるいはＭＣＨ２５のメモリ制御機能はプロセッサ部１５に統合することもできる。幾らかの実施形態においては、メモリ制御器は、プロセッサ部１５の内部、外部にあるに関わらず、プロセッサ部１５の全てのコアあるいはプロセッサのために作動してよい。その他の実施形態においては、それはプロセッサ部１５の異なるコアあるいはプロセッサについて別個に作動する異なる部分を含むこともできる。
【００３５】
メインメモリ３０はシステムコードおよびデータを記憶する。メインメモリ３０は典型的にダイナミックＲＡＭ（ＤＲＡＭ）、エスラム（ＳＲＡＭ）、あるいは、リフレッシュされる必要のないものを含む任意の他の種類のメモリとともに実装される。メインメモリ３０はプロセッサ部１５に対して、あるいはプロセッサ部１５およびＦＰＵ２０の両方に対してアクセスすることができてよい。
【００３６】
ＩＣＨ４０は、入出力機能のサポートを意図した幾らかの機能を持つ。ＩＣＨ４０はさらに、ＭＣＨ２５と共にあるいはＭＣＨ２５とは別個にチップセットに統合され、入出力機能を行ってよい。ＩＣＨ４０は、周辺構成要素相互接続（ＰＣＩ）バスインタフェース、プロセッサインタフェース、割込み制御器、直接メモリアクセス（ＤＭＡ）制御器、電源管理ロジック、タイマ、システム管理バス（ＳＭＢｕｓ）、ユニバーサルシリアルバス（ＵＳＢ）インタフェース、大容量記憶インタフェース、低ピンカウント（ＬＰＣ）インタフェースなどの幾らかものインタフェースおよび入出力機能を含んでよい。
【００３７】
インターコネクト４５は、周辺デバイスに対してインタフェースを提供する。インターコネクト４５はポイントツーポイントであっても、多数のデバイスに接続されていてもよい。明確化の目的から、全てのインターコネクトは示していない。インターコネクト４５は周辺構成要素インターコネクト（ＰＣＩ）、ＰＣＩエクスプレス、ユニバーサルシリアルバス（ＵＳＢ）、および直接メディアインタフェース（ＤＭＩ）などの任意のインターコネクトあるいはバスを含んでよいと考えられる。
【００３８】
大容量記憶デバイス５０は、コード、プログラム、ファイル、データ、およびアプリケーションなどのアーカイブ情報を記憶する。大容量記憶デバイス５０は、コンパクトディスク（ＣＤ）、読出し専用記憶素子（ＲＯＭ）５２、デジタルビデオ／バーサタイルディスク（ＤＶＤ）５３、フロッピードライブ５４、およびハードドライブ５６、および任意のほかの磁気性あるいは光学性の記憶デバイスを含んでよい。大容量記憶デバイス５０は機械アクセス可能な媒体を読み取るメカニズムを提供する。入出力デバイス４７１〜４７ｋは、入出力機能を遂行する任意の入出力デバイスを含んでよい。入出力デバイス４７１〜４７ｋの例には、入力デバイス（例えば、キーボード、マウス、トラックボール、ポインティングデバイス）の制御器、メディアカード（音声、ビデオ、グラフィック）、ネットワークカード、および任意のほかの周辺制御器が含まれる。
【００３９】
図１Ｂは、本発明の一実施形態を実施可能なグラフィックシステム６０を示す図である。グラフィックシステム６０は、グラフィック制御器６５、浮動小数点演算部（ＦＰＵ）７０、メモリ制御器７５、メモリ８０、ピクセルプロセッサ８５、表示プロセッサ９０、デジタル／アナログ変換器（ＤＡＣ）９５、および表示モニタを含む。
【００４０】
グラフィック制御器６５は、ファストラインドローイング（fast line drawing）、二次元（２−Ｄ）および三次元（３−Ｄ）グラフィックレンダリング機能、シェーディング、エイリアス除去、ポリゴンレンダリング、透過効果（transparency effect）、色空間変換、アルファブレンディング、彩度キーイング（chroma keying）などのグラフィック操作を行うグラフィック機能を持つ任意のプロセッサである。ＦＰＵ７０は基本的に図１Ａに示したＦＰＵ２０に類似しており、グラフィックデータに浮動小数点演算を行う。特に、それは上述のように三角関数あるいは代数関数を効率的に計算する。それは、ＦＰ命令およびＦＰベクトル入力あるいはスカラ入力をグラフィック制御器６５から受け取り、ＦＰ結果をグラフィック制御器６５へ戻してよい。メモリ制御器７５は、図１ＡのＭＣＨ２５に類似したメモリ制御機能を行う。メモリ８０は、グラフィック制御器６５およびＦＰＵ７０が処理した命令およびグラフィックデータの記憶目的で、ＳＲＡＭあるいはＤＲＡＭメモリデバイスを含む。
【００４１】
ピクセルプロセッサ８５は、幾何学計算（geometry calculation）、アフィン変換、モデルビュープロジェクション（model view projections）、３‐Ｄクリッピングなどの、特定の複雑なグラフィック機能を行うことのできる専門的なグラフィックエンジンである。ピクセルプロセッサ８５はさらに、メモリ制御器７５にインタフェースされて、メモリ８０および／またはグラフィック制御器６５にアクセスする。表示プロセッサ９０はグラフィックデータの表示を処理し、パレットテーブル索引、同期、バックライト制御器、ビデオ処理などの、表示に関する機能を行う。ＤＡＣ９５はデジタル表示デジタルデータをアナログビデオ信号に変換して、表示モニタ９７へ送る。表示モニタ９７は、視聴目的で画面にグラフィック情報を表示する任意の表示モニタである。表示モニタは陰極線管（ＣＲＴ）モニタ、テレビ（ＴＶ）セット、液晶ディスプレイ（ＬＣＤ）、フラットパネル、あるいはデジタルＣＲＴであってよい。
【００４２】
図２は、本発明の一実施形態による、図１Ａおよび１Ｂに示すＦＰＵ２０／７０を示す図である。ＦＰＵ２０／７０はシーケンサ２１０、ＦＰパイプライン２２０、および出力回路２３０を含む。
【００４３】
制御器２１０は、入力ベクトルに作用する命令の発行を制御する。入力ベクトルは、プロセッサ部１５（図１Ａ）あるいはグラフィック制御器６５（図１Ｂ）などの外部ユニットあるいはプロセッサにより提供されてよい。制御器２１０は幾らもの入力ベクトルおよび命令を記憶するのに入力キューを含んでよい。その深さは、スループットおよび処理要件に応じて任意の適切な深さであってよい。それは、先入れ先出し（ＦＩＦＯ）あるいは任意のほかの記憶アーキテクチャにより実施されてよい。各入力ベクトルはＮ個のスカラ構成要素を含むことができる。各スカラ構成要素はＦＰ数であってよい。制御器回路２１０は入力キューから取得した入力ベクトルをディスパッチして、ＦＰパイプライン２２０のステータスに応じて入力ベクトルに関する命令を発行する。
【００４４】
ＦＰパイプライン２２０は拡張ＦＰ関数を計算する。それは、制御器２１０についてステータスを生成し、出力回路２３０についてＦＰ結果を生成する。拡張ＦＰ関数は、多項式近似法により近似されうる三角関数（タンジェント、サイン、コサイン、逆タンジェント、逆サイン、逆コサイン）、あるいはニュートン−ラプソン技法により近似されうる代数関数などの超越関数のうちの任意のものであってよい。ＦＰパイプラインはＮ  ＳＭＡＤ部２４０１〜２４０Ｎ（Ｎは１を含む任意の正の整数）、係数記憶部２５０、および状態パイプライン２６０を含む。Ｎ  ＳＭＡＤ部２４０１〜２４０Ｎは連続して（in series）接続されている。最後のＳＭＡＤ部の出力はＦＰ結果を提供し、第一のＳＭＡＤ部の入力にフィードバック経路２４５を介して接続される。このようにすることで、Ｎ  ＳＭＡＤ部２４０１〜２４０Ｎが一連の二乗・乗加算演算を計算することができるようになる。係数記憶部２５０はニュートン−ラプソン技法の初期推測値を含む、任意の近似用係数を記憶する。状態パイプライン２６０は丸めモード、例外処理、およびＦＰパイプラインのステータスを制御する。ステータスは、命令がフィードバック経路２４５を再循環しているか否かを示す。このステータスは、命令発行制御を目的として制御器２１０および出力回路２３０により利用される。状態パイプライン２６０は、フィードバック経路２４５に対応するフィードバック経路２６５を有す。そのラテンシーはＮ  ＳＭＡＤ部２４０１〜２４０Ｎのラテンシーに整合する。
【００４５】
出力回路２３０はＦＰ結果を出力ベクトルに書き込む、あるいはアセンブルする。それは、入力ベクトルのスカラ構成要素の計算結果に対応しうるＦＰ結果を取得して、出力バッファの適切なスカラ位置に書き込む。全てのスカラ結果が出力バッファに書き込まれたら、完全な出力ベクトルが、プロセッサ部１５あるいはグラフィック制御器６５などの外部ユニットあるいはプロセッサにより読み出される。
【００４６】
図３は、本発明の一実施形態による、図２に示す二乗・乗加算（ＳＭＡＤ）部２４０を示す図である。ＳＭＡＤ部２４０はＦＰ二乗器３１０およびＦＰ  ＭＡＤ部３２０を含む。ＦＰ  ＭＡＤ部３２０の特定のアーキテクチャはアプリケーションおよびシステム要件に依存する。以下の記載は例示目的のみである。
【００４７】
ＦＰ乗加算は、ＦＰ数が仮数および指数で表されるので、固定小数点乗加算とは異なる。基本的に、ＦＰ数に対して行われる演算は通常、仮数部および指数部に対して行われる演算を別々に含む。ＦＰ加算は典型的に、指数減算、仮数を指数差分に等しい量シフトすること、仮数の加算減算、結果のシフト（減算に対して）を行い正規形のままにすること、および結果の丸め処理からなる。ＦＰ乗算は典型的に、仮数乗算、指数加算、および正規化および丸め処理からなる。オーバーフローおよびアンダーフローの検知も必要に応じて含まれてよい。
【００４８】
ＦＰ二乗器３１０は、第一の引き数、ＦＰ数Ａを受け取り、二乗演算を行い、中間の引き数Ａ２を生成する。第一の引き数Ａおよび中間の引き数Ａ２はＦＰ数である。第一の引き数Ａは第一の仮数Ａｍおよび第一の指数Ａｅを有す。同様に、中間の引き数Ａ２は中間の仮数Ａ２ｍおよび中間の指数Ａ２ｅを有す。
【００４９】
ＦＰ乗加算（ＭＡＤ）部３２０は、中間の引き数Ａ２、第二の引き数Ｂ、および第三の引き数Ｃを受け取り、中間の引き数Ａ２、第二の引き数Ｂ、および第三の引き数Ｃに対して乗加算演算を行い、ＦＰ結果を生成する。ＦＰ結果は、結果仮数および結果指数を有す。第二の引き数Ｂは、第二の仮数Ｂｍおよび第二の指数Ｂｅを有す。同様に、第三の引き数Ｃは、第二の仮数Ｃｍおよび第二の指数Ｃｅを有す。ＦＰ結果Ｙは故にＹ＝Ａ２ｘＢ＋Ｃとして計算される。
【００５０】
図４は本発明の一実施形態によるＦＰ二乗器３１０を示す図である。ＦＰ二乗器３１０は乗算器４１０、選択器４２０、加算器４３０、および選択器４４０を含む。
【００５１】
乗算器４１０は、第一の仮数を、第一の仮数および第一の定数のうちから選択された仮数被乗数で乗算して、中間の仮数Ａ２ｍを生成する。選択器４２０は、第一の仮数Ａｍおよび第一の定数から仮数被乗数を提供する。一実施形態においてはこの第一の定数は一（１）である。
【００５２】
加算器は、第一の指数に、第一の指数Ａｅおよび第二の定数のうちから選択された指数加数を加算して、中間の指数Ａ２ｅを生成する。選択器４４０は、第一の指数Ａｅおよび第二の定数から指数加数を提供する。一実施形態においては、第二の定数はゼロ（０）である。
【００５３】
第一の定数および第二の定数はＦＰ数１．０および０をそれぞれ表す。選択器４２０および選択器４４０がこれら二つの定数を選択するよう設定されている場合、ＦＰ二乗器３１０は基本的にＡと１とのＦＰ乗算を行い、これにより生じる第一の引き数Ａにおいて仮数および指数には変化がない。これは、ＳＭＡＤが二乗されることなしにＭＡＤとして機能するようプログラムあるいは構成されうるように行われる。
【００５４】
図５は、本発明の一実施形態による、図３に示すＦＰ  ＭＡＤ部３２０を示す図である。ＦＰ  ＭＡＤ部３２０は、乗算器５１０、加算器５２０、調節器５３０、加算器５７０、丸めおよび正規化回路５８０、および結果指数調節器５９０を含む。
【００５５】
乗算器５１０は中間の仮数Ａ２ｍを第二の仮数Ｂｍで乗算して、仮数積を生成する。この仮数積は調節器５３０へ行き、そこで加算器５７０にかけられる前に調節される。加算器５２０は中間の指数Ａ２ｅを第二の指数Ｂｅで加算して、指数和を生成する。
【００５６】
調節器５３０は指数和を利用して仮数積および第三の仮数を調節する。それは、調節回路５４０、二つのシフタ５５０、５６０、および二つの選択器５６５、５４５を含む。調節回路５４０は基本的に指数同士を比較して差異を測定し、仮数をシフトさせるシフト量を生成する。それは、指数和と、第三の指数Ｃｅ、増分された第三の指数Ｃｅ＋１、および第三の定数のうちから選択器５４５が選択するものとを利用することで、仮数シフトコードおよび調節された指数和を生成する。増分された第三の指数Ｃｅ＋１は、加算器あるいは増分器を利用して、第三の指数Ｃｅから生成されてよい。シフタ５５０は、仮数積を仮数シフトコードを利用してシフトして、加算器５７０へ行くべき調節された仮数積を生成する。シフタ５６０は、選択器５６５が選択する、第三の仮数Ｃｍおよび第四の定数のうちの一方を仮数シフトコードを利用してシフトして、調節された第三の仮数を生成する。調節された第三の仮数は加算器５７０に行く。一実施形態においては、第三の定数および第四の定数はゼロである。
【００５７】
加算器５７０は、調節された仮数積および調節された第三の仮数を加算して、仮数和を生成する。丸めおよび正規化回路５８０は仮数和を丸めおよび正規化して、結果仮数Ｙｍを生成する。それはさらに、丸めおよび正規化コードを提供して結果指数を調節する。結果指数調節器５９０は、調節された指数和および丸めおよび正規化コードを利用して結果指数Ｙｅを生成する。
【００５８】
図６は、本発明の一実施形態によるＦＰ計算を行うプロセス６００を示すフローチャートである。
【００５９】
ＳＴＡＲＴすると、プロセス６００は第一の引き数を取得する（ブロック６１０）。そして、プロセス６００は多項式の係数を第二の引き数および第三の引き数として生成する（ブロック６２０）。
【００６０】
次に、プロセス６００は第一の引き数を二乗して、中間の引き数を生成する（ブロック６３０）。第一の引き数および中間の引き数は、第一の仮数／指数および中間の仮数／指数をそれぞれ有す。そして、プロセス６００は、中間の引き数、第二の引き数、および第三の引き数に対して乗加算演算を行い、結果を生成する（ブロック６４０）。この結果は結果仮数および結果指数を有す。第二の引き数および第三の引き数は第二の仮数／指数および第三の仮数／指数をそれぞれ有す。プロセス６００は反復が必要か否かを判断する。必要であれば、プロセス６００はブロック６２０へ戻り、係数生成を続ける。さもなくば、プロセス６００は終了する。
【００６１】
図７は、本発明の一実施形態による二乗プロセス６３０を示すフローチャートである。
【００６２】
ＳＴＡＲＴすると、プロセス６３０は第一の仮数を、第一の仮数および第一の定数のうちから選択された仮数被乗数で乗算して、中間の仮数を生成する（ブロック７１０）。次に、プロセス６３０は第一の指数に、第一の指数および第二の定数のうちから選択された指数加数を加算して、中間の指数を生成して（ブロック７２０）、その後終了する。
【００６３】
図８は、本発明の一実施形態による乗加算演算を行うプロセス６４０を示すフローチャートである。
【００６４】
ＳＴＡＲＴすると、プロセス６４０は中間仮数を第二の仮数で乗算して、仮数積を生成する（ブロック８１０）。次に、プロセス６４０は仮数積および第三の仮数を調節する（ブロック８２０）。その後、プロセス６４０は中間の指数に第二の指数を加算して、指数和を生成する（ブロック８３０）。次に、プロセス６４０は、調節された仮数積と第三の仮数とを加算して、仮数和を生成する（ブロック８４０）。
【００６５】
そして、プロセス６４０は仮数和を丸めおよび正規化して結果仮数を生成し、丸めおよび正規化コードを提供する（ブロック８５０）。次に、プロセス６４０は、調節された指数和と、丸めおよび正規化コードとを利用して、結果指数を生成して（ブロック８６０）、その後終了する。
【００６６】
図９は、本発明の一実施形態による仮数積を調節するプロセス８２０を示すフローチャートである。
【００６７】
ＳＴＡＲＴすると、プロセス８２０は、指数和と、第三の指数、増分された第三の指数、および第三の定数のうちの一つとを利用して、仮数シフトコードおよび調節された指数和を生成する（ブロック９１０）。そして、プロセス８２０は、仮数シフトコードを利用して仮数積をシフトして、調節された仮数積を生成する（ブロック９２０）。次に、プロセス８２０は、仮数シフトコードを利用して第三の仮数および第四の定数のうちの一方をシフトして、調節された第三の仮数を生成して、その後終了する。
【００６８】
本発明を幾らかの実施形態により記載してきたが、当業者にとっては本発明が記載された実施形態に限定されず、付随の請求項の精神および範囲内において変更および変形を加えて実施されうることが理解されよう。故に開示は限定としてでなく例示として見なされるべきである。
【図１Ａ】
2009505309.tif 000003
【図１Ｂ】
2009505309.tif 000004
【図２】
2009505309.tif 000005
【図３】
2009505309.tif 000006
【図４】
2009505309.tif 000007
【図５】
2009505309.tif 000008
【図６】
2009505309.tif 000009
【図７】
2009505309.tif 000010
【図８】
2009505309.tif 000011
【手続補正書】
【提出日】平成20年3月17日(2008.3.17)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】００１４
【補正方法】削除
【補正の内容】
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】００６６
【補正方法】変更
【補正の内容】
【００６６】
以下に、本発明の一実施形態による仮数積を調節するプロセスを示す。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】００６７
【補正方法】変更
【補正の内容】
【００６７】
ＳＴＡＲＴすると、プロセスは、指数和と、第三の指数、増分された第三の指数、および第三の定数のうちの一つとを利用して、仮数シフトコードおよび調節された指数和を生成する。そして、プロセスは、仮数シフトコードを利用して仮数積をシフトして、調節された仮数積を生成する。次に、プロセスは、仮数シフトコードを利用して第三の仮数および第四の定数のうちの一方をシフトして、調節された第三の仮数を生成して、その後終了する。
【国際調査報告】
2009505309.tif 000012
2009505309.tif 000013
2009505309.tif 000014