(57)【要約】【課題】汎用の浮動小数点プロセッサにおいて２のべき乗の概算関数を実装するための方法および装置を提供すること。【解決手段】浮動小数点数はメモリ内に格納される。浮動小数点数は、符号ビット、複数の指数ビット、および暗黙の１ビットと複数の小数ビットとを有する仮数を含む。浮動小数点命令に応答して、仮数を指数ビットに基づいて整数部と小数部に分割する。浮動小数点結果は、浮動小数点数の整数部を浮動小数点結果のバイアスの掛からない指数として割り当て、浮動小数点数の小数部を浮動小数点結果の小数部に変換するための組み合せ論理ハードウェアを利用することによって提供される。【選択図】図１
2005018759.tif 000002
【特許請求の範囲】
【請求項１】
２の浮動小数点数乗の概算関数を実装するための方法であって、
符号ビット、複数の指数ビット、および暗黙の１ビットと複数の小数ビットとを有する仮数を含む浮動小数点数をメモリに格納するステップと、
浮動小数点命令に応答して、
前記仮数を、前記指数ビットに基づいて、整数部と小数部に分割するステップと、
浮動小数点結果を、前記浮動小数点数の前記整数部を前記浮動小数点結果のバイアスの掛からない指数として割り当て、組み合せ論理ハードウェアを利用して前記浮動小数点数の前記小数部を前記浮動小数点結果の小数部に変換することによって、生成するステップと、
前記浮動小数点結果を前記メモリ内に格納するステップとを含む方法。
【請求項２】
前記浮動小数点数の前記仮数の前記小数ビットが、Ｆ（１から１１）と表現される１１ビットの小数ビットを含む、請求項１に記載の２の浮動小数点数乗の概算関数を実装するための方法。
【請求項３】
前記浮動小数点数の前記仮数の前記小数ビットの前記複数のビットがＦによって表され、組み合せ論理ハードウェアを利用して前記浮動小数点数の前記小数部を前記浮動小数点結果の小数部に変換する前記ステップが、Ｆを受信してＡおよびＢによって表される２つの数を生成する第１の組み合せ論理を利用するステップであって、ＡとＢの和をＦから減算することによって前記浮動小数点結果の前記小数部を生成するステップを含む、請求項１に記載の２の浮動小数点数乗の概算関数を実装するための方法。
【請求項４】
前記浮動小数点数の前記仮数の前記小数ビットが、Ｆ（１から１１）と表現される１１ビットの小数ビットを含み、組み合せ論理を利用して前記浮動小数点数の前記小数部を前記浮動小数点結果の小数部に変換する前記ステップが、
ＡとＢをＦの１の補数と共に加算して和を提供し、前記和の１の補数を取って前記浮動小数点結果の前記小数部を生成する、請求項１に記載の２の浮動小数点数乗の概算関数を実装するための方法。
【請求項５】
前記浮動小数点結果の前記小数部が、ｙＦ（１から１１）と表現される１１ビットの小数ビットを含む、請求項４に記載の２の浮動小数点数乗の概算関数を実装するための方法。
【請求項６】
２の浮動小数点数乗の概算関数を実装するための装置であって、
符号ビット、複数の指数ビット、および暗黙の１ビットと複数の小数ビットとを有する仮数を含む浮動小数点数をメモリに格納するためのプロセッサであって、
浮動小数点命令に応答して、前記仮数を、前記指数ビットに基づいて、整数部と小数部に分割し、浮動小数点結果を、前記浮動小数点数の前記整数部を前記浮動小数点結果のバイアスの掛からない指数部として割り当てすることによって生成するプロセッサと、
前記浮動小数点数の前記小数部を前記浮動小数点結果の小数部に変換するための組み合せ論理ハードウェアとを含む装置。
【請求項７】
前記浮動小数点数の前記仮数の前記小数ビットの前記複数のビットがＦによって表され、前記浮動小数点数の前記小数部を前記浮動小数点結果の小数部に変換する前記組み合せ論理ハードウェアが、前記小数ビットＦを受信してＡおよびＢによって表される２つの数を生成する第１の組み合せ論理であって、ＡとＢの和をＦから減算することによって前記浮動小数点結果の前記小数部を生成する第１の組み合せ論理を含む、請求項６に記載の２の浮動小数点数乗の概算関数を実装するための装置。
【請求項８】
前記組み合せ論理ハードウェアが、ＡとＢをＦの１の補数と共に加算して、（−ｒｅｓｕｌｔ＝−Ｆ＋Ａ＋Ｂ）と表現されるｒｅｓｕｌｔの１の補数を提供する加算器を含む、請求項７に記載の２の浮動小数点数乗の概算関数を実装するための装置。
【請求項９】
前記組み合せ論理ハードウェアが、前記ｒｅｓｕｌｔの１の補数の１の補数を取って、前記浮動小数点結果の前記小数部を生成する１の補数関数をさらに含む、請求項８に記載の２の浮動小数点数乗の概算関数を実装するための装置。
【請求項１０】
前記加算器が、Ａと前記Ｆの１の補数を加算するための１１ビット加算器と、Ｂと前記Ｆの１の補数を加算して、（−ｒｅｓｕｌｔ＝−Ｆ＋Ａ＋Ｂ）と表現される前記ｒｅｓｕｌｔの１の補数を生成するための２ビット加算器を含む、請求項８に記載の２の浮動小数点数乗の概算関数を実装するための装置。
【請求項１１】
前記組み合せ論理ハードウェアが、Ｂが非０であるかどうかに基づいて、前記Ｆの１の補数にのみ依存する前記ｒｅｓｕｌｔの１の補数の事前定義されたビットと、前記Ｆの１の補数とＡの和のいずれかを選択するためのマルチプレクサをさらに含む、請求項１０に記載の２の浮動小数点数乗の概算関数を実装するための装置。
【請求項１２】
前記浮動小数点結果が、ｙＦ（１から１１）と表現される１１ビットの小数ビットを含む、請求項７に記載の２の浮動小数点数乗の概算関数を実装するための装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は一般に、データ処理の分野に関し、より詳細には、例えば、汎用の浮動小数点プロセッサ内に、２のべき乗の概算関数（estimation function）を実装するための方法および装置に関する。
【背景技術】
【０００２】
２のべき乗関数などの指数関数が、グラフィカル・アプリケーションで広く用いられている。しかし、その命令セット内に指数関数命令をもたない汎用プロセッサで指数関数を計算しようとすると、一般に多くのプロセッサ・サイクルが必要になる。一般に、その命令セット内に指数関数命令をもつプロセッサは、マイクロコードによって指数関数を計算するのに数プロセッサ・サイクルを必要とする。
【０００３】
２００１年１月２３日に公開され、本出願の譲受人に譲渡された、マーチン・スタンリ・シュムークラ（Martin Stanley Schmookler）の米国特許第６１７８４３５号には、データ処理システム内で２の浮動小数点数乗の概算を実行するための方法が開示されている。２のべき乗関数、すなわちｙ＝２ｘの汎用プロセッサ向けの高速な実装が提供され、独立変数ｘと結果ｙの両方とも浮動小数点形式で表現される。説明のために用いる浮動小数点形式は、ＩＥＥＥ７５４形式とする。浮動小数点数は、符号ビット、複数の指数ビット、および暗黙の１ビットと複数の小数ビットとを有する仮数を含む。２の浮動小数点数乗を概算するために、仮数を指数ビットの値に基づいて整数部と小数部に分割する。
【０００４】
開示の実施形態では、浮動小数点結果は、浮動小数点数の整数部を浮動小数点結果のバイアスの掛からない指数として割り当て、浮動小数点数の小数部をテーブル参照によって変換して浮動小数点結果の小数部とすることによって形成される。整数部は結果の指数を形成し、小数部はテーブルから６ビットの値を見つけるために用いられる。この値は次に、２加数６ビット加算器構造を用いて小数部に加算されて、結果の小数部を形成する。この方式で取得した表現結果では、最悪の場合の相対誤差が正確な結果の０．８２２×２−５である。また、図５から分るように、従来技術の設計によって生成された概算関数は、複数の目立った不連続を含む。
【０００５】
２のべき乗の概算関数を実装するための改良された機構が必要とされている。従来技術の設計と比べて、そのような機構がより正確な概算を提供し、概算関数がより連続となることが望ましい。
【特許文献１】米国特許第６１７８４３５号
【発明の開示】
【発明が解決しようとする課題】
【０００６】
本発明の主要な目的は、例えば、汎用の浮動小数点プロセッサ内に、２のべき乗の概算関数を実装するための方法および装置を提供することである。本発明の他の重要な目的は、実質的に悪影響を及ぼすことなく２のべき乗の概算関数を実装するための方法および装置であって、従来技術の構成がもつ不都合のいくつかを克服する方法および装置を提供することである。
【課題を解決するための手段】
【０００７】
要約すれば、汎用の浮動小数点プロセッサにおいて２のべき乗の概算関数を実装するための方法および装置が提供される。浮動小数点数はメモリ内に格納される。浮動小数点数は、符号ビット、複数の指数ビット、および暗黙の１ビットと複数の小数ビットとを有する仮数を含む。浮動小数点命令に応答して、仮数を指数ビットに基づいて整数部と小数部に分割する。浮動小数点結果は、浮動小数点数の整数部を浮動小数点結果のバイアスの掛からない指数として割り当て、浮動小数点数の小数部を浮動小数点結果の小数部に変換するための組み合せ論理ハードウェアを利用することによって提供される。浮動小数点結果はメモリ内に格納される。
【０００８】
本発明の特徴によれば、組み合せ論理ハードウェアは、浮動小数点数の小数部Ｆを受信し、小数部Ｆの複数の小数ビットに応じて２つの数ＡおよびＢを生成する組み合せ論理を含む。Ｆから減算された２数ＡとＢの和が、浮動小数点結果の小数ビットを生成する。組み合せ論理ハードウェアは、組み合せ論理と、ＡとＢをＦの１の補数と共に加算し（−ｒｅｓｕｌｔ＝−Ｆ＋Ａ＋Ｂ）、次にこの和の１の補数を取って浮動小数点結果の小数部を生成する加算器構造とによって実装することができる。
【０００９】
本発明、ならびに上記およびその他の目的および利点は、図面に示された本発明の好ましい実施形態についての以下の詳細な説明によって、最もよく理解することができるであろう。
【発明を実施するための最良の形態】
【００１０】
ここで図面を参照すると、図１には、本発明の好ましい実施形態による、データ処理システム内で２のべき乗の概算を実行するための方法を示したハイレベル・フローチャートが示されている。関数ｙ＝２ｘで表される２のべき乗の概算が、汎用プロセッサ内で提供される。ＩＥＥＥ７５４形式に従って、ｘなどの正規化された浮動小数点数は、ビット群の３つのグループ、すなわち符号ビット、指数ビット、仮数ビットによって表現される。符号ビットは、浮動小数点数の最も上位の有効桁の１ビットである。次の８ビットは指数ビットであり、浮動小数点数のバイアスの掛かった指数を表す。バイアスの掛からない指数は、１２７を減算することによって取得することができる。最も下位の有効桁の２３ビットは小数ビットであり、この２３ビットを２２３で除算し、正規化されていない数であるその商に１．０を加算することによって、仮数部を計算することができる。
【００１１】
浮動小数点数ｘの値は、２つに分割された部分、すなわち符号付き整数ｘＩと正の小数ｘＦを加算したものである。上記の分割を行うと、ｘＩはｙのバイアスの掛からない指数となり、ｙの仮数は２ｘＦと等しくなる。０≦ｘＦ＜１であるので、１≦２ｘＦ＜２である。０から１の区間内で２ｘＦのグラフ（２のべき乗関数）を（１＋ｘＦ）のグラフ（１次関数）と比較した場合、上記の２関数の結果は端点で等しく、端点の間では一般に関数２ｘＦの結果が関数（１＋ｘＦ）の結果より僅かに小さいことが観察される。したがって、２のべき乗関数の精度の低い概算しか必要とされていない場合、精度の低い２のべき乗関数は、１次関数に小さな訂正を施すだけで取得することができる。
【００１２】
フローチャートはブロック１１０から開始し、浮動小数点数ｘの仮数が、ブロック１１２に示すように、バイアスの掛からない符号付き整数ｘＩと小数ｘＦに分割される。分割はｘの指数に基づいて決定される。判断ブロック１１４に示すように、ｘの符号が負の場合、分割される仮数は、ブロック１１６に示すように、その１の補数によって置換される。このステップの後、符号付き整数ｘＩを整数部に、正値ｘＦを小数部にする。次に、ブロック１１８に示すように、２ｘは非負でなければならないので、ｙの符号を正値に対応する０に設定し、ｘＩの値をｙのバイアスの掛からない指数とする。ｘＩが−１２６から１２７の正常な範囲内にある場合、バイアスの掛かった指数は１２７を加算することによって取得することができる。次に、ｙの仮数の小数部ｙＦが、ブロック１２０に示すように、小数ｘＦを入力として用いる本発明の好ましい実施形態の組み合せ論理ハードウェア４００によって取得される。組み合せ論理ハードウェア４００は、図４で図示および説明されている。最後に、浮動小数点結果ｙが、ブロック１２２に示すように、ｙの符号ビット、ｙの指数ビット、およびｙの小数ビットを組み合せることによって形成される。
【００１３】
次に図２を参照すると、本発明の好ましい実施形態による、データ処理システム内で２のべき乗の概算を実行するための方法を示した一例が示されている。ｘが１０進数の５．７５に等しいとする。ｘは浮動小数点形式によって以下のように表現することができる。
ｘ＝（−１）ｓｉｇｎ×２ｅｘｐ×仮数
ただし、ｓｉｇｎは符号ビット、ｅｘｐはバイアスの掛からない正の指数、仮数は１．小数に等しいとする。したがって、２進浮動小数点形式で、ｘ＝（−１）０×２２×１．０１１１００、または０  ００１０  ０１１１００００となる。ｘの指数は００１０（１０進数の２）に等しいので、暗黙の２進小数点は右に２桁分シフトして、仮数は１０１．１１０００００００００となる。２進小数点の左側のビット（すなわち、１０１）が整数部ｘＩになり、２進小数点の右側のビット（すなわち、１１００００００００）が小数ｘＦになる。したがって、ｙｅｘｐ（浮動小数点結果ｙのバイアスの掛からない指数）は１０１に等しく、ｙＦ（浮動小数点結果ｙの小数）は、小数ｘＦを入力として用いる本発明の好ましい実施形態の組み合せ論理ハードウェア４００を用いることによって、１．１０１０１１１０００１に等しくなる。浮動小数点結果ｙの値は、ｙｅｘｐとｙＦを組み合せることによって取得され、２進数で１１０１０１．１１０００１、または１０進数で５３．７６５６となる。
【００１４】
図３を参照すると、本発明の好ましい実施形態の２のべき乗の概算を実行するための方法を実施する、全体として参照番号３００で指示される汎用プロセッサが示されている。汎用プロセッサ３００は、整数ユニット３０４、汎用レジスタ３０６、ロード／ストア・ユニット３０８、浮動小数点レジスタ３１０、および浮動小数点ユニット３１２に結合された命令ユニット３０２を含む。汎用プロセッサ３００は、命令ユニット３０２、および整数ユニット３０４、汎用レジスタ３０６、ロード／ストア・ユニット３０８、浮動小数点レジスタ３１０、ならびに浮動小数点ユニット３１２の各々に結合された完了ユニット３１４を含む。データ・キャッシュ３１６が、ロード／ストア・ユニット３０８に結合され、命令キャッシュ３１８が、命令ユニット３０２に結合される。バス・インタフェース・ユニット３２０は、データ・キャッシュ３１６と命令キャッシュ３１８に結合される。データ・キャッシュ３１６と命令キャッシュ３１８は共に、メイン・メモリ（図示せず）から以前に転送されたデータまたは命令のサブセットにプロセッサ３００が相対的に速いアクセス時間でアクセスできるようにする、高速セット・アソシアティブ・キャッシュとする。命令キャッシュ３１８は、各命令サイクルの間に命令を命令キャッシュ３１８からフェッチする命令ユニット３０２に結合される。各実行ユニット、すなわち整数ユニット３０４、ロード／ストア・ユニット３０８、および浮動小数点ユニット３１２は、命令の１つまたは複数のクラスを実行し、すべての実行ユニット、すなわち整数ユニット３０４、ロード／ストア・ユニット３０８、および浮動小数点ユニット３１２は、各プロセッサ・サイクルの間に並列で動作することができる。命令の実行が終了した後、実行ユニット、すなわち整数ユニット３０４、ロード／ストア・ユニット３０８、および浮動小数点ユニット３１２は、命令タイプに応じて、それぞれのリネーム・バッファにデータ結果を格納する。その後、実行ユニットのいずれか１つ、すなわち整数ユニット３０４、ロード／ストア・ユニット３０８、および浮動小数点ユニット３１２は、命令の実行が終了したことを完了ユニット３１４に通知することができる。最後に、結果データをそれぞれのリネーム・バッファから汎用レジスタ（ＧＰＲ）３０６または浮動小数点レジスタ（ＦＰＲ）３１０に転送することによって、命令はプログラムの順番で完了する。
【００１５】
汎用プロセッサ３００は、様々な標準的なプロセッサ、例えば、インターナショナル・ビジネス・マシーンズ・コーポレーションが製造するＰｏｗｅｒＰＣ（登録商標）系列のプロセッサの１つによって実施することができる。
【００１６】
本発明の好ましい実施形態の特徴によれば、好ましい実施形態の特徴による２のべき乗を概算する新しい方法は、パイプライン・ステージを追加することなく結果を取得し、従来技術の設計に比べ、より正確であり、より連続な関数を生成する。こうしたことは、結果の小数ビットを取得するための従来とは異なる手法によって実現される。２のべき乗関数を実施する組み合せ論理回路４００は、図４に示すような、カスタム３加数１１ビット加算器構造を含む。上述の小数部ｘＦを入力として浮動小数点結果の小数ビットｙＦを取得するための新しい方法について次に説明する。
【００１７】
２つの数（以下、Ａ、Ｂと呼ぶ）が、上述の１１ビットの小数部ｘＦ（以下、Ｆと呼ぶ）に依存する組み合せ論理によって生成される。これらの２数Ａ、Ｂの和がＦから減算され、結果の小数ビット中で最も上位の有効桁の１１ビットが生成される。これは、ＡとＢをＦの１の補数と共に加算し（−ｒｅｓｕｌｔ＝−Ｆ＋Ａ＋Ｂ）、次にこの和の１の補数を取って浮動小数点結果の小数部を生成することによって実施することができる。−ＦはＦの反転、すなわちＦの１の補数を表す。
【００１８】
しかし、設計のタイミング制約に適さない、これら３数の直接的な加算を実施するのではなく、Ｆ、Ｂ、および（Ａ−Ｆ）に依存する組み合せ論理によって、結果を取得することができる。このアルゴリズムの性質上、数ＡおよびＢが取る値は１１ビットの順列のすべてにわたるわけではないので、汎用３ウェイ１１ビット全加算器は必要とされない。
【００１９】
入力ＦからのＡおよびＢの導出は、組み合せ論理回路４００の第１の組み合せ論理ブロック４０１によって実施される以下の論理記述から理解することができる。
【００２０】
最初の中間項ｓ１、ｓ２、ｓ３は以下の式で定義される。ただし、Ｆ１、Ｆ２、Ｆ３、Ｆ４、Ｆ５、Ｆ６、Ｆ７、Ｆ８、Ｆ９、Ｆ１０、Ｆ１１はそれぞれ、Ｆ（１から１１）のビット１から１１を表す。
s1 = F1 AND F2 AND F3 AND F4
s2 = (NOT F1 AND NOT F2) OR (F1 AND F2 ANDF3 AND NOT F4) OR (F1 AND F2 AND NOT F3 AND F4)
s3 = (F2 AND NOT F3 AND NOT F4) OR (F1 ANDNOT F2 AND F3) OR (NOT F1 AND F2 AND NOT F3) OR (NOT F1 AND F2 AND NOT F4)
【００２１】
項Ａ
Ａ１、Ａ２、Ａ３、Ａ４、Ａ５、Ａ６、Ａ７、Ａ８、Ａ９、Ａ１０、Ａ１１はそれぞれ、Ａ（１から１１）のビット１から１１を表し、以下の式で定義される。
A1 = 0
A2 = 0
A3 = 0
A4 = (s1 AND NOT F3) OR (s2 AND NOT F1 ANDF2) OR (s2 AND F1 AND NOT F2)
A5 = (s1 AND NOT F4) OR (s2 AND NOT F1 ANDF3) OR (s2 AND F1 AND NOT F2) OR 
(s3 AND NOT F1 AND F2) OR (s3 AND F1 AND NOTF2)
A6 = (s1 AND NOT F5) OR (s2 AND NOT F1 ANDF4) OR (s2 AND F1 AND NOT F4) OR 
(s3 AND NOT F1 AND F3) OR (s3 AND F1 ANDNOT F3)
A7 = (s1 AND NOT F6) OR (s2 AND NOT F1 ANDF5) OR (s2 AND F1 AND NOT F5) OR 
(s3 AND NOT F1 AND F4) OR (s3 AND F1 ANDNOT F4)
A8 = (s1 AND NOT F7) OR (s2 AND NOT F1 ANDF6) OR (s2 AND F1 AND NOT F6) OR 
(s3 AND NOT F1 AND F5) OR (s3 AND F1 ANDNOT F5)
A9 = (s1 AND NOT F8) OR (s2 AND NOT F1 ANDF7) OR (s2 AND F1 AND NOT F7) OR 
(s3 AND NOT F1 AND F6) OR (s3 AND F1 ANDNOT F6)
A10 = (s1 AND NOT F9) OR (s2 AND NOT F1AND F8) OR (s2 AND F1 AND NOT F8) OR 
(s3 AND NOT F1 AND F7) OR (s3 AND F1 ANDNOT F7)
A11 = (s1 AND NOT F10) OR (s2 AND NOT F1AND F9) OR (s2 AND F1 AND NOT F9) OR 
(s3 AND NOT F1 AND F8) OR (s3 AND F1 ANDNOT F8)
【００２２】
Ｂ４、Ｂ５、Ｂ６、Ｂ７はそれぞれ、Ｂ（４から７）のビット４から７を表し、以下の式で定義される。
B4 = (F1 AND NOT F2 AND NOT F3) OR (NOT F1AND F2 AND F3 AND F4)
B5 = (F2 AND NOT F3 AND NOT F4) OR (F1 ANDNOT F2 AND F3) OR (NOT F1 AND F2 AND NOT F3) OR (NOT F1 AND F2 AND NOT F4)
B6 = (NOT F1 AND F2 AND F3 AND F4) OR (F1AND F2 AND F3 AND NOT F4) OR (F1 AND NOT F2 AND NOT F3) OR (F1 AND NOT F3 ANDF4)
B7 = (NOT F1 AND F2 AND F3 AND F4) OR (F1AND NOT F3 AND NOT F4) OR (F1 AND NOT F2)
【００２３】
この新しいアルゴリズムによって生成された値の例を、以下に示す表１に見ることができる。
表１
-F(1から11) A(1から11)B(4から7) A-F(1から11)-result(1から11)
(-F+A+C)
11111111111 00000000000 000011111111111 11111111111
11111111110 00000000000 000011111111110 11111111110
11111111101 00000000000 000011111111101 11111111101
11111111100 00000000000 000011111111100 11111111100
11111111011 00000000001 000011111111100 11111111100
11111111010 00000000001 000011111111011 11111111011
11111111001 00000000001 00001111111101011111111010
11111111000 00000000001 000011111111001 11111111001
11111110111 00000000010 000011111111001 11111111001
11111110110 00000000010 000011111111000 11111111000
11111110101 00000000010 00001111111011111111110111
11111110100 00000000010 000011111110110 11111110110
11111110011 00000000011 000011111110110 11111110110
11111110010 00000000011 000011111110101 11111110101
11111110001 00000000011 00001111111010011111110100
11111110000 00000000011 000011111110011 11111110011
11111101111 00000000100 000011111110011 11111110011
*
*
*
11000000000 00001111111 000011001111111 11001111111
10111111111 00001111111 00001100111111111001111111
10111111110 00001000000 010011000111110 11001111110
10111111101 00001000000 010011000111101 11001111101
10111111100 00001000000 010011000111100 11001111100
10111111011 00001000000 01001100011101111001111011
10111111010 00001000000 010011000111010 11001111010
10111111001 00001000000 010011000111001 11001111001
10111111000 00001000000 010011000111000 11001111000
*
*
*
01101100011 00000000000 10110110110001110000010011
01101100010 00000000000 101101101100010 10000010010
01101100001 00000000000 101101101100001 10000010001
01101100000 00000000000 101101101100000 10000010000
01101011111 00000000000 101101101011111 10000001111
01101011110 00000000000 101101101011110 10000001110
01101011101 00000000000 101101101011101 10000001101
01101011100 00000000000 101101101011100 10000001100
01101011011 00000000000 101101101011011 10000001011
01101011010 00000000000 101101101011010 10000001010
*
*
*
00000000110 00000000011 000000000001001 00000001001
00000000101 00000000010 000000000000111 00000000111
00000000100 00000000010 000000000000110 00000000110
00000000011 00000000001 000000000000100 00000000100
00000000010 00000000001 000000000000011 00000000011
00000000001 00000000000 000000000000001 00000000001
00000000000 00000000000 000000000000000 00000000000
【００２４】
次に図４を参照すると、新しいアルゴリズムを組み合せ論理ハードウェア４００内に実装した様子が示されている。組み合せ論理ハードウェア４００は、入力−Ｆ（１から１１）を受信する組み合せ論理４０１を含む。出力ＡおよびＢは、表１に列挙された１１ビットの小数部ｘＦ、すなわち−Ｆ（１から１１）に依存する組み合せ論理４０１によって生成され、図４においてＡ（１から１１）、Ｂ（６から７）、Ｂ非ゼロと名付けられた線で示されている。
【００２５】
組み合せ論理ハードウェア４００は、入力−Ｆ（１から１１）を受信する組み合せ論理４０２、および入力−Ｆ（１から１１）とＡ（１から１１）を受信する１１ビット加算器４０４を含む。組み合せ論理４０２と１１ビット加算器４０４の出力はそれぞれ、Ｂ非ゼロ選択入力と共にマルチプレクサ（ＭＵＸ）４０６に結合される。２ビット加算器４０８は、入力Ｂ（６から７）と１１ビット加算器４０４の出力を受信する。レジスタ４１０に格納される小数−ｒｅｓｕｌｔは、ＡとＢをＦの１の補数と共に加算する（−ｒｅｓｕｌｔ＝−Ｆ＋Ａ＋Ｂ）ことによって取得され、またはｒｅｓｕｌｔ４１０の１の補数を取ることによって取得される。ブロック４１２に示すように、この和（−ｒｅｓｕｌｔ）４１０の１の補数が取られて、ブロック４１４に示すように、浮動小数点結果の小数部が生成される。浮動小数点結果４１４は、符号、指数、小数部、未使用小数ビットを含む。
【００２６】
レジスタ４１０に格納される小数−ｒｅｓｕｌｔのいくつかのビットは、−Ｆ（１から１１）、Ｂ、および（Ａ−Ｆ）に依存する組み合せ論理を用いてより簡単に取得することができるが、その他のビットは、−Ｆにのみ依存するあまり複雑でない論理で表現することができる。具体的には、図４に示すように、どのようなＦの可能な入力についてもＢの第８から１１ビットは０なので、ｒｅｓｕｌｔの第８から１１ビットの１の補数を生成するのに、−ＦとＡだけが１１ビット加算器４０４によって加算される。ｒｅｓｕｌｔの第６から７ビットは、１１ビット加算器４０４によって供給される−Ｆ（６から７）とＡ（６から７）の中間和に組み合せ論理４０１によって供給されるＢ（６から７）を、２ビット加算器４０８を用いて加算することによって生成される。ｒｅｓｕｌｔの第２から５ビットは、ＭＵＸ４０６を介して、Ｂが非０の場合は−Ｆ（１から１１）のみに依存する組み合せ論理４０２によって生成され、Ｂが０の場合は１１ビット加算器４０４によって供給される−ＦとＡの和として生成される。ｒｅｓｕｌｔの第１ビットは、−Ｆに依存する組み合せ論理４０２によって専ら導出される。
【００２７】
組み合せ論理４０２による入力Ｆからの小数ｒｅｓｕｌｔの補数の第１から５ビット（第２から５ビットはＭＵＸ４０６への入力）の導出は、以下のように定義される。
小数ｒｅｓｕｌｔの補数の第１ビット：
INV_RESULT1 = (NOT F1) OR 
(NOT F2 AND NOT F3 AND NOT F4) OR 
(NOT F2 AND NOT F3 AND NOT F5 AND NOT F6)OR 
(NOT F2 AND NOT F3 AND NOT F5 AND NOT F7)
INV_RESULT2 = (F1 AND NOT F2 AND NOT F3)OR 
(F2 AND NOT F3 AND NOT F4) OR 
(F4 AND F5 AND F1 AND NOT F2) OR 
(F1 AND NOT F2 AND F6 AND F7 AND F4) OR 
(NOT F5 AND NOT F6 AND NOT F1 AND F2 ANDNOT F3 AND NOT F7) OR 
(NOT F8 AND NOT F9 AND NOT F5 AND NOT F6AND NOT F1 AND F2 AND NOT F3 AND NOT F10)
INV_RESULT3 = (F1 AND NOT F2 AND F3 ANDNOT F4) OR 
(NOT F1 AND F2 AND F3 AND NOT F4) OR 
(F1 AND NOT F3 AND F2 AND F4) OR 
(F4 AND F5 AND F1 AND NOT F3) OR 
(F2 AND NOT F3 AND F4 AND F5) OR 
(F2 AND NOT F3 AND F4 AND F6) OR 
(NOT F1 AND F2 AND F3 AND NOT F5 AND NOTF6) OR 
(F6 AND F7 AND F1 AND NOT F3 AND F4) OR 
(F1 AND NOT F2 AND F3 AND NOT F5 AND NOT F6AND NOT F7) OR 
(F1 AND NOT F2 AND F3 AND NOT F5 AND NOT F6AND NOT F8) OR 
(F1 AND NOT F2 AND F3 AND NOT F5 AND NOT F6AND NOT F9) OR 
(F2 AND F3 AND NOT F4 AND NOT F5) OR 
(F6 AND NOT F7 AND NOT F1 AND F2 AND F4 ANDNOT F5) OR 
(F2 AND NOT F4 AND NOT F6 AND NOT F7 AND F3AND NOT F8) OR 
(F2 AND NOT F4 AND NOT F6 AND NOT F7 AND F3AND NOT F9) OR 
(NOT F5 AND NOT F6 AND NOT F1 AND F2 AND F4AND F7 AND F8) OR 
(NOT F5 AND NOT F6 AND NOT F1 AND F2 AND F4AND F7 AND F9) OR 
(NOT F5 AND NOT F6 AND NOT F1 AND F2 AND F4AND F7 AND F10)
INV_RESULT4 = (F4 AND F5 AND F1 AND NOTF2) OR 
(F4 AND F5 AND NOT F1 AND F2) OR 
(NOT F4 AND NOT F5 AND F1 AND NOT F2 ANDNOT F6) OR 
(F1 AND NOT F2 AND F3 AND F4 AND F6) OR 
(F6 AND F7 AND NOT F1 AND F2 AND F4) OR 
(F2 AND F3 AND NOT F4 AND NOT F1 AND NOT F5AND NOT F6) OR 
(F1 AND F5 AND F2 AND F3 AND NOT F4 AND F6)OR 
(NOT F4 AND NOT F5 AND F1 AND NOT F3 ANDNOT F2 AND NOT F7) OR 
(F1 AND F5 AND F2 AND F3 AND NOT F4 AND F7)OR 
(F8 AND F9 AND F1 AND F5 AND F2 AND F3 ANDNOT F4) OR 
(NOT F8 AND NOT F9 AND F2 AND F3 AND NOT F4AND NOT F1 AND NOT F5 AND NOT F7) OR 
(F2 AND NOT F3 AND F4 AND F1 AND NOT F6) OR
(F2 AND NOT F3 AND F4 AND NOT F5 AND F6) OR
(F6 AND F7 AND F1 AND NOT F3 AND F4 AND NOTF5) OR 
(NOT F6 AND F7 AND F2 AND NOT F3 AND F4 ANDF8) OR 
(NOT F6 AND F7 AND F2 AND NOT F3 AND F4 ANDF9) OR 
(NOT F6 AND F7 AND F2 AND NOT F3 AND F4 ANDF10) OR 
(F1 AND NOT F3 AND NOT F5 AND NOT F6 ANDNOT F4 AND NOT F7 AND NOT F8) OR 
(F6 AND NOT F7 AND F1 AND NOT F2 AND F3 ANDNOT F5 AND NOT F8) OR 
(F1 AND NOT F3 AND NOT F5 AND NOT F6 ANDNOT F4 AND NOT F7 AND NOT F9) OR 
(NOT F8 AND NOT F9 AND F6 AND NOT F7 AND F2AND NOT F3 AND F4) OR 
(F1 AND NOT F3 AND NOT F5 AND NOT F6 ANDNOT F4 AND NOT F7 AND NOT F10) OR 
(F6 AND NOT F7 AND F2 AND NOT F3 AND F4 ANDNOT F8 AND NOT F10) OR 
(F8 AND F9 AND NOT F6 AND F7 AND F1 AND NOTF2 AND F3 AND NOT F5) OR 
(F6 AND NOT F7 AND F1 AND NOT F2 AND F3 ANDNOT F5 AND NOT F9 AND NOT F10)
INV_RESULT5 = (NOT F4 AND NOT F5 AND NOTF1 AND F2 AND NOT F3) OR 
(F1 AND F5 AND NOT F2 AND NOT F3 AND NOTF6) OR 
(NOT F1 AND F2 AND F3 AND F5 AND NOT F6) OR
(F1 AND F5 AND NOT F2 AND NOT F3 AND NOTF7) OR 
(F1 AND F5 AND NOT F2 AND NOT F6 AND NOTF7) OR 
(F1 AND NOT F2 AND F6 AND F7 AND NOT F5) OR
(F6 AND F7 AND NOT F1 AND F2 AND NOT F5) OR
(F1 AND NOT F2 AND F3 AND NOT F5 AND F4 ANDF6) OR 
(F4 AND F5 AND NOT F1 AND F2 AND F3 AND NOTF7) OR 
(F4 AND F5 AND NOT F1 AND F2 AND NOT F6 ANDNOT F7) OR 
(NOT F8 AND NOT F9 AND F1 AND F5 AND NOT F2AND NOT F6) OR 
(F2 AND NOT F4 AND NOT F6 AND NOT F7 AND F1AND F3 AND NOT F5) OR 
(F6 AND F7 AND F1 AND F5 AND F2 AND NOT F3AND F4) OR 
(F8 AND F9 AND F1 AND NOT F2 AND F3 AND NOTF5 AND F6) OR 
(F1 AND NOT F2 AND F3 AND NOT F5 AND F6 ANDF8 AND F10) OR 
(F1 AND F5 AND NOT F2 AND NOT F6 AND NOT F8AND NOT F10 AND NOT F11) OR 
(F8 AND F9 AND F1 AND NOT F2 AND F3 AND NOTF5 AND F4 AND F7) OR 
(F6 AND NOT F7 AND F2 AND NOT F3 AND NOTF5) OR 
(NOT F4 AND NOT F5 AND F2 AND NOT F3 ANDF7) OR 
(F2 AND NOT F3 AND F4 AND F1 AND NOT F5 ANDNOT F6) OR 
(F1 AND F5 AND F2 AND F3 AND NOT F4 AND F6)OR 
(NOT F6 AND F7 AND F1 AND F5 AND F3 AND NOTF4) OR 
(F4 AND F5 AND NOT F1 AND F2 AND NOT F6 ANDNOT F8) OR 
(NOT F4 AND NOT F5 AND NOT F1 AND F2 AND F6AND F9) OR 
(NOT F5 AND NOT F6 AND F2 AND NOT F3 AND F7AND F9) OR 
(NOT F5 AND NOT F6 AND F2 AND NOT F3 AND F7AND F10) OR 
(F2 AND NOT F4 AND NOT F6 AND NOT F7 ANDNOT F1 AND NOT F3 AND NOT F8) OR 
(F6 AND NOT F7 AND F2 AND F3 AND NOT F4 ANDF5 AND NOT F8) OR 
(NOT F5 AND NOT F6 AND F1 AND F2 AND NOT F4AND F7 AND NOT F8) OR 
(F6 AND NOT F7 AND F2 AND NOT F3 AND F4 ANDF1 AND F8) OR 
(F8 AND F9 AND F1 AND F5 AND F2 AND F3 ANDNOT F4) OR 
(NOT F8 AND NOT F9 AND F2 AND NOT F4 ANDNOT F6 AND NOT F7 AND NOT F3 AND F5) OR 
(F6 AND NOT F7 AND F2 AND F3 AND NOT F4 ANDNOT F1 AND F8 AND NOT F9) OR 
(F2 AND NOT F4 AND NOT F6 AND NOT F7 ANDNOT F3 AND F5 AND NOT F8 AND NOT F10) OR 
(F1 AND NOT F3 AND NOT F8 AND NOT F9 AND F2AND NOT F5 AND F7 AND NOT F10) OR 
(F6 AND NOT F7 AND F1 AND F5 AND NOT F3 ANDF4 AND F9 AND F10) OR 
(F2 AND NOT F4 AND NOT F6 AND NOT F7 ANDNOT F3 AND F5 AND NOT F8 AND NOT F11) OR 
(NOT F8 AND NOT F9 AND F6 AND NOT F7 AND F1AND F5 AND F3 AND NOT F4 AND NOT F10) OR 
(NOT F6 AND F7 AND F2 AND NOT F3 AND F4 ANDNOT F1 AND F8 AND NOT F9 AND NOT F10) OR 
(F8 AND F9 AND F2 AND NOT F4 AND NOT F6 ANDNOT F7 AND F1 AND NOT F5 AND F10) OR 
(NOT F8 AND NOT F9 AND F6 AND NOT F7 AND F1AND F5 AND F3 AND NOT F4 AND NOT F11) OR 
(F6 AND F7 AND NOT F8 AND NOT F9 AND F2 ANDNOT F3 AND F4 AND F1 AND NOT F11) OR 
(F2 AND NOT F4 AND NOT F6 AND NOT F7 ANDNOT F1 AND NOT F3 AND NOT F9 AND NOT F10 AND NOT F11) OR 
(NOT F5 AND NOT F6 AND F1 AND F2 AND NOT F4AND F7 AND NOT F9 AND NOT F10 AND NOT F11) OR 
(F8 AND F9 AND F2 AND F3 AND NOT F4 AND F5AND NOT F7 AND NOT F10 AND NOT F11) OR 
(NOT F6 AND F7 AND F2 AND NOT F3 AND F4 ANDNOT F1 AND NOT F9 AND F10 AND NOT F11)
【００２８】
図５および図６を参照すると、図５に示された従来技術の結果と比較した場合、組み合せ論理ハードウェア４００が、図６に見られるように、はるかによく連続した１組みの結果を達成していることが理解できる。最悪の場合の相対誤差でも正確な結果の０．１４４×２−５であり、これは以前の設計と比べてはるかに改善された誤差である。組み合せ論理ハードウェア４００を利用する本発明の好ましい実施形態の方法はまた、従来技術にないアーキテクチャ上の余分なステージを追加しなくても実施することができる。
【００２９】
本発明の好ましい実施形態のこの改良されたアルゴリズムの利点は、面上の鏡面ハイライトの陰影の階調度を計算するのに２のべき乗概算アルゴリズムを利用できるリアルタイム３次元コンピュータ・グラフィックスなど、２のべき乗概算の一般的な応用例において明らかである。例えば、リアルタイム３次元コンピュータ・グラフィックスで、本発明の好ましい実施形態の２のべき乗概算アルゴリズムを利用すれば、階調が帯状になる度合いが減り、よりリアルに見える鏡面ハイライトが実現される。
【００３０】
図面に示された本発明の実施形態の詳細を参照しながら本発明を説明してきたが、それらの詳細は、添付の特許請求の範囲で主張される本発明の範囲を限定するものではない。
【図面の簡単な説明】
【００３１】
【図１】本発明の好ましい実施形態による、データ処理システム内で２のべき乗の概算を実行するための方法を示したハイレベル・フローチャートである。
【図２】本発明の好ましい実施形態による、図１の２のべき乗の概算を実行するための方法を示した一例の図である。
【図３】本発明の好ましい実施形態による、図１の２のべき乗の概算を実行するための方法を実施する汎用プロセッサを示したブロック図である。
【図４】本発明の好ましい実施形態による、図１の２のべき乗の概算を実行するための方法を実施する組み合せ論理ハードウェアを示したブロック図である。
【図５】従来技術の概算関数を示したグラフである。
【図６】本発明の好ましい実施形態による、図４の組み合せ論理ハードウェアを用いた図１の方法の概算関数を示したグラフである。
【符号の説明】
【００３２】
３００  汎用プロセッサ
３０２  命令ユニット
３０４  整数ユニット
３０６  汎用レジスタ
３０８  ロード／ストア・ユニット
３１０  浮動小数点レジスタ
３１２  浮動小数点ユニット
３１４  完了ユニット
３１６  データ・キャッシュ
３１８  命令キャッシュ
３２０  バス・インタフェース・ユニット
４００  組み合せ論理回路
４０１  組み合せ論理
４０２  組み合せ論理
４０４  １１ビット加算器
４０６  マルチプレクサ
４０８  ２ビット加算器
４１０  レジスタ
４１４  浮動小数点結果
【図１】
2005018759.tif 000003
【図２】
2005018759.tif 000004
【図３】
2005018759.tif 000005
【図４】
2005018759.tif 000006
【図５】
2005018759.tif 000007
【図６】
2005018759.tif 000008