JPH06309154A - 浮動小数点計算の実行方法及び浮動小数点ユニット - Google Patents

浮動小数点計算の実行方法及び浮動小数点ユニット

Info

Publication number
JPH06309154A
JPH06309154A JP6050107A JP5010794A JPH06309154A JP H06309154 A JPH06309154 A JP H06309154A JP 6050107 A JP6050107 A JP 6050107A JP 5010794 A JP5010794 A JP 5010794A JP H06309154 A JPH06309154 A JP H06309154A
Authority
JP
Japan
Prior art keywords
mantissa
error
bits
bit
floating point
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.)
Granted
Application number
JP6050107A
Other languages
English (en)
Other versions
JP2557193B2 (ja
Inventor
Lawrence M Ammann
エム. アマン ローレンス
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
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
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of JPH06309154A publication Critical patent/JPH06309154A/ja
Application granted granted Critical
Publication of JP2557193B2 publication Critical patent/JP2557193B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/52Multiplying; Dividing
    • G06F7/535Dividing only
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/544Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
    • G06F7/552Powers or roots, e.g. Pythagorean sums
    • G06F7/5525Roots or inverse roots of single operands
    • FMECHANICAL ENGINEERING; LIGHTING; HEATING; WEAPONS; BLASTING
    • F02COMBUSTION ENGINES; HOT-GAS OR COMBUSTION-PRODUCT ENGINE PLANTS
    • F02BINTERNAL-COMBUSTION PISTON ENGINES; COMBUSTION ENGINES IN GENERAL
    • F02B75/00Other engines
    • F02B75/02Engines characterised by their cycles, e.g. six-stroke
    • F02B2075/022Engines characterised by their cycles, e.g. six-stroke having less than six strokes per cycle
    • F02B2075/027Engines characterised by their cycles, e.g. six-stroke having less than six strokes per cycle four
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/535Indexing scheme relating to groups G06F7/535 - G06F7/5375
    • G06F2207/5355Using iterative approximation not using digit recurrence, e.g. Newton Raphson or Goldschmidt
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/535Indexing scheme relating to groups G06F7/535 - G06F7/5375
    • G06F2207/5356Via reciprocal, i.e. calculate reciprocal only, or calculate reciprocal first and then the quotient from the reciprocal and the numerator
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/483Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
    • G06F7/487Multiplying; Dividing
    • G06F7/4873Dividing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/499Denomination or exception handling, e.g. rounding or overflow
    • G06F7/49942Significance control
    • G06F7/49947Rounding
    • G06F7/49957Implementation of IEEE-754 Standard

Landscapes

  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Pure & Applied Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Mathematical Optimization (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Complex Calculations (AREA)

Abstract

(57)【要約】 【目的】 多項式近似のパフォーマンスの利点を実現す
ると共に、過度の記憶域及び不十分な精度という特有の
問題を軽減する方法を提供する。 【構成】 数学関数 f(m) の浮動小数点計算の実行方法
は、読み取り記憶装置において複数のチェビシェフ係数
を記憶するステップ(131) と、仮数 2n の個々の間隔i
に分割することで浮動小数点の引き数仮数m をスケール
化するステップ(133) と、読み取り専用記憶装置から記
憶された係数の1 セットを選択するステップ(134) と、
近似が正解と1 ビットしか異ならないような関数f(m)の
多項式近似を計算するために複数の乗算累算を実行する
ステップ(136) と、から成る。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は概して逆数及び平方根の
ディジタルコンピュータ計算に関し、特に、2 n 個の間
隔への分割に基づいてIEEE浮動少数点数の仮数をスケー
ル化することによって、少ない項から成るチェビシェフ
多項式を各間隔へ近似させ、高いパフォーマンスが得ら
れるような、チェビシェフ多項式近似を用いて逆数及び
平方根の計算を実行するための方法及び装置に関する。
また、本発明は、1ビットエラーの補正を必要とする可
能性のある近似を、正しいと知られる近似と区別する方
法及び装置を目的としている。
【0002】
【従来の技術】ワークステーションは、複雑な技術的問
題を解決するために広く使用されている。これらの機械
(ワークステーション)は、ANSI/IEEE(米国規格協会/
米国電気電子学会) 規格754-1985、「2進浮動少数点演
算のためのIEEE規格(IEEE Standard for Binary Floati
ng-Point Arithmetic)」(IEEE, Inc., New York, 1985
年8 月発行) に従って設計されている。これらの機械
は、一般的に、計算速度の増加に対してRISC( 縮小命令
セットコンピュータ) 技術を用いる。そのようなワーク
ステーションの一例は、IBM RISCシステム/6000G技術(I
BM製品番号SA23-2619(1990年) に記載されている。
【0003】最も一般的な浮動小数点演算構成の内の1
つは内積である。内積の中心は、乗算関数及び累算関
数、即ち、A x C + B である。ワークステーションで実
行される多くのアルゴリズムはまた、除算及び平方根を
用いる。しかしながら、一般的なワークステーションで
は、倍精度乗算のパフォーマンスは倍精度除算又は平方
根のパファーマンスを1 オーダ以上の大きさで越える。
例えば、IBM RISCシステム/6000 のワークステーション
では、倍精度A x C + B の演算は2サイクルで終了す
る。この演算がパイプライン(逐次制御)されることが
可能ならば、1サイクルで効果的に実行されてもよい。
反対に、除算は19サイクル、平方根は55サイクルかか
る。更に、除算及び平方根はパイプラインされることが
できない。
【0004】多項式近似は平方根及び除算のパフォーマ
ンスを高める一方、実行すると問題になるような2つの
欠点がある。 ・精度問題を処理しにくいこと−多項式近似がいかに良
くとも、常に、いくつかの1ビットエラーが生じる。IE
EE 754浮動少数点規格が、平方根及び除算の双方の浮動
小数点の仮数の最下位ビットに正確な結果を特定するた
めに、IEEE 754の規格に合うようにするときには、これ
らのいかなるエラーも受け入れられない。エラー検出ス
テップ及びエラー補正ステップは可能だが、これらのス
テップは通常、パフォーマンスを損なう。このために、
最初に多項式近似を選択したのである。 ・過度の記憶域要求−迅速に実行するために、多項式は
殆ど項を持ってはならない。少数の項だけでは、多項式
は狭い間隔を正確に近似することしかできない。従っ
て、入力引き数(アーギュメント)は、各々が異なる多
項式によって近似される多数の間隔に分割されなければ
ならない。これら全ての多項式に必要とされる係数記憶
域はすばやく増える。
【0005】
【発明が解決しようとする課題】従って、本発明の目的
は、多項式近似のパフォーマンスの利点を実現すると共
に、過度の記憶域及び不十分な精度という特有の問題を
軽減する方法を提供することである。
【0006】本発明のもう1つの目的は、チェビシェフ
多項式近似を用いて、浮動小数点演算においてIEEE規格
に従う結果を生じるような除算及び平方根を行う方法を
提供することである。
【0007】
【課題を解決するための手段と作用】本発明に従って、
スケール化されたチェビシェフ多項式近似が用いられ、
除算及び平方根関数f(m)の現行の不良パフォーマンスを
改良する。逆数又は平方根演算は、チェビシェフ多項式
近似を用いて、パイプラインされた乗算累算関数を有す
るコンピュータの浮動小数点ユニット(FPU) において実
施される。複数のチェビシェフ係数が読み取り専用記憶
装置に記憶される。浮動小数点数の仮数m が仮数を2 n
個の間隔i へ分割することに基づいてスケール化される
ことによって、次のように少数の項から成るチェビシェ
フ多項式を各間隔へ近似させる。
【0008】m' = 2N x m - (2N + 2i + 1) ここで、m'はスケール化された仮数、N は2 のべきであ
る。スケール化された仮数の所定の数の高位ビットを用
いて、記憶された係数のセットが読み取り専用記憶装置
から読み取られて多項式を計算する。逆数又は平方根の
実際の計算は、FPU のパイプラインされた関数における
複数の乗算累算によって行われ、関数f(m)の多項式近似
を計算する。この近似は正解と1 ビットしか異ならな
い。
【0009】f(m) = c0 + m' x (c1 + m' x (c2 + m' x
(c3 + ... + m' x cn ))) ここで、c0...cn は仮数の高位ビットによって選択され
る係数のセットである。
【0010】チェビシェフシリーズ(級数)は、一般的
に-1から+1に及ぶ値で演算する。IEEE浮動小数点数の仮
数は1 から2 に及ぶために、指数を適切に設定すること
によって1/2 から1 の範囲へスケール化されてもよい。
しかしながら、幾つかの関数では、単純な指数調整より
も多くのオーバーヘッドを必要とするにもかかわらず、
シリーズの収束は-1から+1の仮数をスケール化すること
によって改良できる。逆数又は平方根のスケール化され
たチェビシェフ近似では、同等の精度のために逆数又は
平方根の最小2乗近似の記憶域の約8分の1を必要とす
る。逆数又は平方根近似の倍精度係数に必要な読み取り
専用メモリ(ROM) の大きさは、短い多項式においてメガ
ビット範囲へと容易に増すため、重大な利点となる。
【0011】チップ濃度が高まり続けるならば、大きな
オンチップROM に基づいた多項式近似による平方根及び
逆数演算を倍精度で行うことが可能になる。そうした倍
精度の実行における駆動要因はパフォーマンスである。
本発明は5 項から成るチェビシェフ多項式近似を用い
て、以下の関数に迅速な倍精度の結果を生じさせる。 ・逆数 ・平方根 ・1/平方根
【0012】本発明は、1個の浮動小数点乗算アキュム
レータ(累算器)、1個の浮動小数点加算器、1個の比
較器、指数処理ロジック、並びに、上記関数における多
項式係数のオンチップ記憶装置を用いて実行され、以下
のパフォーマンスを実現することができる。 ・約9サイクルのパイプラインされていない速度 ・約4サイクルのパイプラインされた速度 ・1関数あたり約225 キロビットのROM の大きさ
【0013】請求項1の数学関数f(m)の浮動小数点計算
を実行するための方法は、f(m)が、チェビシェフ多項式
近似を用いてパイプラインされた乗算累算関数を有する
コンピュータの浮動小数点ユニット(FPU) において、逆
数関数又は平方根関数であり、読み取り専用記憶装置に
おいて複数のチェビシェフ係数を記憶するステップと、
仮数を2 n 個の間隔i に分割することに基づいて浮動小
数点数の引き数仮数mをスケール化するステップと、そ
れによって少ない項のチェビシェフ多項式を以下のよう
に各間隔へ近似させ、 m' = 2N x m - (2N + 2i + 1) ( ここで、m'はスケール化された引き数仮数であり、N
は2 のべきである) 仮数の所定の数の高位ビットを用いて多項式を計算する
ために前記読み取り専用記憶装置から記憶された係数の
1セットを選択するステップと、近似が正解と1 ビット
しか異ならないような関数f(m)の多項式近似を計算する
ために複数の乗算累算を実行するステップと、 f(m) = c0 + m' x (c1 + m' x (c2 + m' x (c3 + ... +
m' x cn ))) ( ここで、c0...cn は仮数の高位ビットによって選択さ
れる係数のセットである) から成る。
【0014】請求項2の浮動小数点計算の実行方法は、
請求項1の浮動小数点計算の実行方法において、前記関
数が平方根の逆数である。
【0015】請求項3の浮動小数点計算の実行方法は、
請求項1の浮動小数点計算の実行方法において、間隔i
の数が4 個であり、4 個の間隔においてスケール化され
た仮数が以下の通りであり、 間隔i = 0, m' = 8m - 9 間隔i = 1, m' = 8m - 11 間隔i = 2, m' = 8m - 13 間隔i = 3, m' = 8m - 15 前記関数f(m)が以下のように計算され、 f(m) = c0 + m' x (c1 + m' x (c2 + m' x (c3 + m' x
c4 ))) ( ここで、c0...c4 は仮数の高位ビットによって選択さ
れる係数のセットである) である。
【0016】請求項4の浮動小数点計算の実行方法は、
請求項1の浮動小数点計算の実行方法において、符号用
の1 ビット、指数用の11ビット、並びに、仮数用の52ビ
ットから成る64個のビットが倍精度浮動小数点数を記憶
するのに使用され、関数f(m)が逆数であり、仮数をスケ
ール化するステップが仮数の高位10ビットに基づいて行
われ、前記高位10ビットが係数の1024セットの内の1 つ
を選択するために前記選択するステップで使用される。
【0017】請求項5の浮動小数点計算の実行方法は、
請求項1の浮動小数点計算の実行方法において、符号用
の1 ビット、指数用の11ビット、並びに、仮数用の52ビ
ットから成る64個のビットが倍精度浮動小数点数を記憶
するのに使用され、関数f(m)が平方根であり、仮数をス
ケール化するステップが仮数の高位9 ビットに基づいて
行われ、前記高位9 ビット及び1 ビットが係数の1024セ
ットの内の1 つを選択するために前記選択するステップ
で使用される。
【0018】請求項6の浮動小数点計算の実行方法は、
請求項1の浮動小数点計算の実行方法において、符号用
の1 ビット、指数用の11ビット、並びに、仮数用の52ビ
ットから成る64個のビットが倍精度浮動小数点数を記憶
するのに使用され、関数f(m)が平方根の逆数であり、仮
数をスケール化するステップが仮数の高位9 ビットに基
づいて行われ、前記高位9 ビット及び1 ビットが係数の
1024セットの内の1 つを選択するために前記選択するス
テップで使用される。
【0019】請求項7の浮動小数点計算の実行方法は、
請求項1の浮動小数点計算の実行方法において、関数f
(m)の多項式近似を計算するために複数の乗算累算を実
行するステップが、仮数へ割り当てられるよりもn 個だ
け余分なビットを生成し、n 個の余分なビットにおける
ビットパターンが01111...( 即ち、0 に続いてn-1 個の
1)かどうかを決定するステップと、このビットパターン
は、仮数が必要とされるよりも1 ビット少ない可能性が
あり、増分された仮数を備える結果と比較されるべきで
あることを意味し、逆数(RCIP(X)) が計算されるかどう
かを決定し、計算されると決定するならば、エラー 1 -
X x Y (Y はrcip(X) の近似である) を計算するステッ
プと、計算されたエラー 1 - X x Yを1 - X x (Y + 2
-53)と比較するステップと、より少ないエラーを持った
結果を選択するステップと、を更に含む。
【0020】請求項8の浮動小数点計算の実行方法は、
請求項7の浮動小数点計算の実行方法において、比較す
るステップにおいて比較された結果が同じエラーを有す
るならば、0 の低位ビットを持った結果を選択する。
【0021】請求項9の浮動小数点計算の実行方法は、
請求項7の浮動小数点計算の実行方法において、逆数(R
CIP(X)) が計算されないならば、平方根(SQRT(X)) が計
算されると宣言し、エラー X - Y2 (Yはsqrt(X) の近似
である) を計算するステップと、計算されたエラー X -
Y2 をX - (Y + 2-52)2 と比較するステップと、より少
ないエラーを持った結果を選択するステップと、を実行
する。
【0022】請求項10の浮動小数点計算の実行方法
は、請求項9の浮動小数点計算の実行方法において、比
較するステップにおいて比較された結果が同じエラーを
有するならば、0 の低位ビットを持った結果を選択す
る。
【0023】請求項11の浮動小数点計算の実行方法
は、請求項7の浮動小数点計算の実行方法において、n
個の余分なビットにおけるビットパターンが01111...(
即ち、0 に続いてn-1 個の1)でないならば、n 個の余分
なビットにおけるビットパターンが10000...( 即ち、1
に続いてn-1 個の0)かどうかを決定するステップと、こ
のビットパターンは、仮数が必要とされるよりも1 ビッ
ト多い可能性があり、減分された仮数を備える結果と比
較されるべきであることを意味し、逆数(RCIP(X)) が計
算されるかどうかを決定し、計算されると決定するなら
ば、エラー1 - X x Y (Yはrcip(X) の近似である) を計
算するステップと、計算されたエラー 1 - X x Yを1 -
X x (Y - 2-53)と比較するステップと、より少ないエラ
ーを持った結果を選択するステップと、を更に含む。
【0024】請求項12の浮動小数点計算の実行方法
は、請求項11の浮動小数点計算の実行方法において、
比較するステップにおいて比較された結果が同じエラー
を有するならば、0 の低位ビットを持った結果を選択す
る。
【0025】請求項13の浮動小数点計算の実行方法
は、請求項11の浮動小数点計算の実行方法において、
逆数(RCIP(X)) が計算されないならば、平方根(SQRT
(X)) が計算されると宣言し、計算されると宣言するな
らば、エラー X - Y2 (Yはsqrt(X) の近似である) を計
算するステップと、計算されたエラー X - Y2 をX - (Y
- 2-52)2 と比較するステップと、より少ないエラーを
持った結果を選択するステップと、を実行する。
【0026】請求項14の浮動小数点計算の実行方法
は、請求項13の浮動小数点計算の実行方法において、
比較するステップにおいて比較された結果が同じエラー
を有するならば、0 の低位ビットを持った結果を選択す
る。
【0027】請求項15の浮動小数点計算の実行方法
は、請求項1の浮動小数点計算の実行方法において、関
数f(m)の多項式近似を計算するために複数の乗算累算を
実行するステップが、仮数へ割り当てられるよりもn 個
だけ余分なビットを生成し、n 個の余分なビットにおけ
るビットパターンが11111...( 即ち、n 個の1)かどうか
を決定するステップと、このビットパターンは、仮数が
必要とされるよりも1 ビット少ない可能性があり、増分
された仮数を備える結果と比較されるべきであることを
意味し、逆数(RCIP(X)) が計算されるかどうかを決定
し、計算されると決定するならば、エラー 1 - X x Y
(Y はrcip(X) の近似である) を計算するステップと、
計算されたエラー 1 - X x Yを1 - X x (Y + 2-53)と比
較するステップと、より少ないエラーを持った結果を選
択するステップと、を更に含む。
【0028】請求項16の浮動小数点計算の実行方法
は、請求項15の浮動小数点計算の実行方法において、
比較するステップにおいて比較された結果が同じエラー
を有するならば、0 の低位ビットを持った結果を選択す
る。
【0029】請求項17の浮動小数点計算の実行方法
は、請求項15の浮動小数点計算の実行方法において、
逆数(RCIP(X)) が計算されないならば、平方根(SQRT
(X)) が計算されると宣言し、エラー X - Y2 (Yはsqrt
(X) の近似である) を計算するステップと、計算された
エラー X - Y2 をX - (Y + 2-52)2 と比較するステップ
と、より少ないエラーを持った結果を選択するステップ
と、を実行する。
【0030】請求項18の浮動小数点計算の実行方法
は、請求項17の浮動小数点計算の実行方法において、
比較するステップにおいて比較された結果が同じエラー
を有するならば、0 の低位ビットを持った結果を選択す
る。
【0031】請求項19の浮動小数点計算の実行方法
は、請求項15の浮動小数点計算の実行方法において、
n 個の余分なビットにおけるビットパターンが11111...
( 即ち、n 個の1)でないならば、n 個の余分なビットに
おけるビットパターンが00000...( 即ち、n 個の0)かど
うかを決定するステップと、このビットパターンは、仮
数が必要とされるよりも1 ビット多い可能性があり、減
分された仮数を備える結果と比較されるべきであること
を意味し、逆数(RCIP(X)) が計算されるかどうかを決定
し、計算されると決定するならば、エラー1 - X x Y (Y
はrcip(X) の近似である) を計算するステップと、計算
されたエラー 1 - X x Yを1 - X x (Y - 2-53)と比較す
るステップと、より少ないエラーを持った結果を選択す
るステップと、を更に含む。
【0032】請求項20の浮動小数点計算の実行方法
は、請求項19の浮動小数点計算の実行方法において、
比較するステップにおいて比較された結果が同じエラー
を有するならば、0 の低位ビットを持った結果を選択す
る。
【0033】請求項21の浮動小数点計算の実行方法
は、請求項19の浮動小数点計算の実行方法において、
逆数(RCIP(X)) が計算されないならば、平方根(SQRT
(X)) が計算されると宣言し、エラー X - Y2 (Yはsqrt
(X) の近似である) を計算するステップと、計算された
エラー X - Y2 をX - (Y - 2-52)2 と比較するステップ
と、より少ないエラーを持った結果を選択するステップ
と、を実行する。
【0034】請求項22の浮動小数点計算の実行方法
は、請求項21の浮動小数点計算の実行方法において、
比較するステップにおいて比較された結果が同じエラー
を有するならば、0 の低位ビットを持った結果を選択す
る。
【0035】請求項23の数学関数f(m)を計算するため
のコンピュータにおける浮動小数点ユニット(FPU) は、
f(m)が逆数関数又は平方根関数であり、前記FPU がパイ
プラインされた乗算累算関数を有し、複数のチェビシェ
フ係数を記憶するための読み取り専用メモリ(ROM) と、
浮動小数点数の仮数m をスケール化するためのスケール
化論理手段と、前記仮数m を2 n 個の間隔i に分割する
ことに基づいてスケール化され、それによって少ない項
から成るチェビシェフ多項式を以下のように各間隔に近
似させ、 m' = 2N x m - (2N + 2i + 1) ( ここで、N は2 のべきである) 前記スケール化論理手段に応じ、仮数の所定の数の高位
ビットを用いて多項式を計算するために前記読み取り専
用メモリから記憶された係数の1セットを選択するアド
レス指定手段と、係数の選択されたセットが前記FPU へ
供給される、を備え、前記FPU が、近似が正解と1 ビッ
トしか異ならない関数f(m)の多項式近似を計算するため
に前記乗算累算関数を用いて複数の乗算累算を実行し、 f(m) = c0 + m' x (c1 + m' x (c2 + m' x (c3 + ... +
m' x cn ))) ( ここで、c0...cn は、アドレス指定手段によって仮数
の高位ビットを用いて選択される係数のセットである) ことから成る。
【0036】請求項24の浮動小数点ユニットは、請求
項23の浮動小数点ユニットにおいて、符号用の1 ビッ
ト、指数用の11ビット、並びに、仮数用の52ビットから
成る64個のビットが倍精度浮動小数点数を記憶するのに
使用され、関数f(m)が逆数(RCIP(X)) であり、仮数が仮
数の高位10ビットに基づいてスケール化され、前記高位
10ビットが前記アドレス指定手段によって係数の1024セ
ットの内の1 つを選択するために使用される。
【0037】請求項25の浮動小数点ユニットは、請求
項23の浮動小数点ユニットにおいて、符号用の1 ビッ
ト、指数用の11ビット、並びに、仮数用の52ビットから
成る64個のビットが倍精度浮動小数点数を記憶するのに
使用され、、関数f(m)が平方根(SQRT(X)) であり、仮数
が仮数の高位9 ビットに基づいてスケール化され、前記
高位9 ビット及び1 ビットが前記アドレス指定手段によ
って係数の1024セットの内の1 つを選択するために使用
される。
【0038】請求項26の浮動小数点ユニットは、請求
項23の浮動小数点ユニットにおいて、符号用の1 ビッ
ト、指数用の11ビット、並びに、仮数用の52ビットから
成る64個のビットが倍精度浮動小数点数を記憶するのに
使用され、関数f(m)が平方根の逆数(1/SQRT(X)) であ
り、仮数が仮数の高位9 ビットに基づいてスケール化さ
れ、前記高位9 ビット及び1 ビットが前記アドレス指定
手段によって係数の1024セットの内の1 つを選択するた
めに使用される。
【0039】請求項27の浮動小数点ユニットは、請求
項23の浮動小数点ユニットにおいて、逆数(RCIP(X))
が計算され、逆数関数の多項式近似を計算するときに、
乗算累算関数が仮数へ割り当てられるよりもn 個だけ余
分なビットを生成し、n 個の余分なビットにおいて0111
1...( 即ち、0 に続いてn-1 個の1)のビットパターンを
検出するための検出手段と、このビットパターンは、仮
数が必要とされるよりも1 ビット少ない可能性があり、
増分された仮数を備えた結果と比較されるべきであるこ
とを意味し、エラー 1 - X x Y (Y はrcip(X) の近似で
ある) を計算するためのエラー計算手段と、計算された
エラー 1 - X x Yを1 - X x (Y + 2-53)と比較するため
の比較手段と、より少ないエラーを持った結果を選択す
るための手段と、を更に含む。
【0040】請求項28の浮動小数点ユニットは、請求
項27の浮動小数点ユニットにおいて、比較手段で比較
された結果が同じエラーを有するならば、前記選択手段
が0の低位ビットを持った結果を選択する。
【0041】請求項29の浮動小数点ユニットは、請求
項23の浮動小数点ユニットにおいて、平方根(SQRT
(X)) が計算され、平方根関数の多項式近似を計算する
ときに、乗算累算関数が仮数へ割り当てられるよりもn
個だけ余分なビットを生成し、n 個の余分なビットにお
けるビットパターンが01111...( 即ち、0 に続いてn-1
個の1)かどうかを検出するための検出手段と、このビッ
トパターンは、仮数が必要とされるよりも1 ビット少な
い可能性があり、増分された仮数を備えた結果と比較さ
れるべきであることを意味し、エラー X - Y2 (Yはsqrt
(X) の近似である) を計算するためのエラー計算手段
と、計算されたエラー X - Y2 をX - (Y + 2-52)2 と比
較するための比較手段と、より少ないエラーを持った結
果を選択するための手段と、を更に含む。
【0042】請求項30の浮動小数点ユニットは、請求
項29の浮動小数点ユニットにおいて、比較手段で比較
された結果が同じエラーを有するならば、前記選択手段
が0の低位ビットを持った結果を選択する。
【0043】請求項31の浮動小数点ユニットは、請求
項23の浮動小数点ユニットにおいて、逆数(RCIP(X))
が計算され、逆数関数の多項式近似を計算するときに、
乗算累算関数が仮数へ割り当てられるよりもn 個だけ余
分なビットを生成し、n 個の余分なビットにおいて1000
0...( 即ち、1 に続いてn-1 個の0)のビットパターンを
検出するための検出手段と、このビットパターンは、仮
数が必要とされるよりも1 ビット多い可能性があり、減
分された仮数を備えた結果と比較されるべきであること
を意味し、エラー 1 - X x Y (Y はrcip(X) の近似であ
る) を計算するためのエラー計算手段と、計算されたエ
ラー 1 - X x Yを1 - X x (Y - 2-53)と比較するための
比較手段と、より少ないエラーを持った結果を選択する
ための手段と、を更に含む。
【0044】請求項32の浮動小数点ユニットは、請求
項31の浮動小数点ユニットにおいて、比較手段で比較
された結果が同じエラーを有するならば、前記選択手段
が0の低位ビットを持った結果を選択する。
【0045】請求項33の浮動小数点ユニットは、請求
項23の浮動小数点ユニットにおいて、平方根(SQRT
(X)) が計算され、平方根関数の多項式近似を計算する
ときに、乗算累算関数が仮数へ割り当てられるよりもn
個だけ余分なビットを生成し、n 個の余分なビットにお
いてビットパターンが10000...( 即ち、1 に続いてn-1
個の0)かどうかを検出するための検出手段と、このビッ
トパターンは、仮数が必要とされるよりも1 ビット多
く、減分された仮数を備えた結果と比較されるべきであ
ることを意味し、エラー X - Y2 (Yはsqrt(X) の近似で
ある) を計算するためのエラー計算手段と、計算された
エラー X - Y2 をX - (Y - 2-52)2 と比較するための比
較手段と、より少ないエラーを持った結果を選択するた
めの手段と、を更に含む。
【0046】請求項34の浮動小数点ユニットは、請求
項33の浮動小数点ユニットにおいて、比較手段で比較
された結果が同じエラーを有するならば、前記選択手段
が0の低位ビットを持った結果を選択する。
【0047】請求項35の浮動小数点ユニットは、請求
項23の浮動小数点ユニットにおいて、逆数(RCIP(X))
が計算され、逆数関数の多項式近似を計算するときに、
乗算累算関数が仮数へ割り当てられるよりもn 個だけ余
分なビットを生成し、n 個の余分なビットにおいて1111
1...( 即ち、n 個の1)のビットパターンを検出するため
の検出手段と、このビットパターンは、仮数が必要とさ
れるよりも1ビット少ない可能性があり、増分された仮
数を備えた結果と比較されるべきであることを意味し、
エラー 1 - X x Y (Y はrcip(X) の近似である) を計算
するためのエラー計算手段と、計算されたエラー 1 - X
x Yを1 - X x (Y + 2-53)と比較するための比較手段
と、より少ないエラーを持った結果を選択するための手
段と、を更に含む。
【0048】請求項36の浮動小数点ユニットは、請求
項35の浮動小数点ユニットにおいて、比較手段で比較
された結果が同じエラーを有するならば、前記選択手段
が0の低位ビットを持った結果を選択する。
【0049】請求項37の浮動小数点ユニットは、請求
項23の浮動小数点ユニットにおいて、平方根(SQRT
(X)) が計算され、平方根関数の多項式近似を計算する
ときに、乗算累算関数が仮数へ割り当てられるよりもn
個の余分なビットを生成し、n 個の余分なビットにおけ
るビットパターンが11111...( 即ち、n 個の1)かどうか
を検出するための検出手段と、このビットパターンは仮
数が必要なよりも潜在的に1 ビット少なく、結果を増分
された仮数と比較すべきであることを意味し、エラー X
- Y2 を計算するためのエラー計算手段と(Yはsqrt(X)
の近似である) 、計算されたエラー X - Y2 をX - (Y +
2-52)2 と比較するための比較手段と、より少ないエラ
ーを持った結果を選択するための手段と、を更に含む。
【0050】請求項38の浮動小数点ユニットは、請求
項37の浮動小数点ユニットにおいて、比較手段で比較
された結果が同じエラーを有するならば、前記選択手段
が0の低位ビットを持った結果を選択する。
【0051】請求項39の浮動小数点ユニットは、請求
項23の浮動小数点ユニットにおいて、逆数(RCIP(X))
が計算され、逆数関数の多項式近似を計算するときに、
乗算累算関数が仮数へ割り当てられるよりもn 個だけ余
分なビットを生成し、n 個の余分なビットにおいて0000
0...( 即ち、n 個の0)のビットパターンを検出するため
の検出手段と、このビットパターンは、仮数が必要とさ
れるよりも1ビット多い可能性があり、減分された仮数
を備えた結果と比較されるべきであることを意味し、エ
ラー 1 - X x Y (Y はrcip(X) の近似である) を計算す
るためのエラー計算手段と、計算されたエラー 1 - X x
Yを1 - X x (Y - 2-53)と比較するための比較手段と、
より少ないエラーを持った結果を選択するための手段
と、を更に含む。
【0052】請求項40の浮動小数点ユニットは、請求
項39の浮動小数点ユニットにおいて、比較手段で比較
された結果が同じエラーを有するならば、前記選択手段
が0の低位ビットを持った結果を選択する。
【0053】請求項41の浮動小数点ユニットは、請求
項23の浮動小数点ユニットにおいて、平方根(SQRT
(X)) が計算され、平方根関数の多項式近似を計算する
ときに、乗算累算関数が仮数へ割り当てられるよりもn
個の余分なビットを生成し、n 個の余分なビットにおい
てビットパターンが00000...( 即ち、n 個の0)かどうか
を検出するための検出手段と、このビットパターンは、
仮数が必要とされるよりも1 ビット多い可能性があり、
減分された仮数を備えた結果と比較されるべきであるこ
とを意味し、エラー X - Y2 (Yはsqrt(X) の近似であ
る) を計算するためのエラー計算手段と、計算されたエ
ラー X - Y2 をX - (Y - 2-52)2 と比較するための比較
手段と、より少ないエラーを持った結果を選択するため
の手段と、を更に含む。
【0054】請求項42の浮動小数点ユニットは、請求
項41の浮動小数点ユニットにおいて、比較手段で比較
された結果が同じエラーを有するならば、前記選択手段
が0の低位ビットを持った結果を選択する。
【0055】
【実施例】平方根及び逆数は通常多項式近似によって実
行されないが、比較的少ない項で平方根及び逆数を近似
するチェビシェフ多項式がある。特に、IEEE仮数が1 か
ら2 の範囲の代わりに-1から1 の範囲へスケール化され
るならば、平方根及び逆数の双方は約10項でIEEE単一精
度の正確さに近似できる。しかしながら、仮数全体を1
つの多項式で近似する必要はない。仮数を間隔へと分割
することによって、各間隔を近似するのに必要な項の数
が減少する。多項式長の減少は必要な多項式の数の増加
にまさるために、項の数が減少するにつれて、係数記憶
域全体が増大する。
【0056】チェビシェフ単一精度逆数近似 表1は、スケール化されたチェビシェフ逆数近似におけ
る幾つかの多項式長のパフォーマンスと記憶域の間のト
レードオフ( 取り替え) を示している(エラーはIEEE単
一精度仮数の最下位ビットよりも少ない) 。
【0057】
【表1】
【0058】1.係数記憶域は、指数における高位ビッ
ト及びより高位のべき項の係数における先行ゼロが再生
するのを利用することによって約30% 圧縮可能である。
【0059】チェビシェフ近似対最小2乗近似 表2は、平方根及び逆数の2次最小2乗近似に必要な記
憶域を、スケール化されたチェビシェフ近似と比較して
いる。
【0060】
【表2】
【0061】1.係数記憶域は、指数における高位ビッ
ト及びより高位のべき項の係数における先行ゼロが再生
するのを利用することによって約30% 圧縮可能である。
代わりに、計算の初期での仮数の処理が更に複雑にな
る。即ち、余分な減算がある。
【0062】スケール化されたチェビシェフ近似スケール化された仮数 アービン・アレン・ドーズ(Irvin Allen Dodes) 著、
「コンピュータサイエンスのための数値分析(Numerical
Analysis for Computer Science) 」(ElsevierNorth-H
olland, Inc., New York, 1978 年) では、収束を高め
るために、いくつかのチェビシェフ多項式における入力
引き数をスケール化する方法が記載されている。本発明
はドーズの処理を間隔へ拡張している。即ち、仮数は各
々がスケール化された間隔に分割される。
【0063】2 n 個の間隔に分割された仮数の各間隔
は、スケール化が異ならなければならない。N 個の間隔
のi 番目において( ここで、N は2 のべきであり、間隔
は0 から数えられる) 、仮数は以下のようにスケール化
される。
【0064】m' = 2N x m - (2N + 2i + 1) ここでm は仮数、m'はスケール化された仮数、i は間隔
である。例えば、間隔が4 つの場合、仮数の4 つの間隔
における引き数は以下のように処理される。
【0065】4/4..5/4 m' = 8m - 9 5/4..6/4 m' = 8m - 11 6/4..7/4 m' = 8m - 13 7/4..8/4 m' = 8m - 15
【0066】図1を参照すると、倍精度IEEE逆数仮数の
スケール化及びプロセシングを示すブロックが示されて
いる。64ビットが示されている。第 1ビットは符号ビッ
トである。次の11ビットは指数であり、52個の平衡ビッ
トは仮数である。仮数の内の10個の高位ビットは、係数
の1024セットの内の1 つを選択し、多項式を計算するた
めに使用される。スケール化された仮数m'が2048 x m -
k として表されるが、これは単純な減算である。減数
は、指数が211 で置き換えられた入力引き数である。被
減数は、記憶される仮数の11番目のビットが1 に設定さ
れ、その右側の全てのビットがゼロに設定される減数で
ある。被減数の仮数の内の最も右側の41ビットがゼロで
あるために、12ビット加算器が十分である。4 つの乗算
累算が逆数の多項式近似を終了する。この近似は、正解
と1 ビットしか異ならない。
【0067】RCIP (m) = c0 + m' x (c1 + m' x (c2 +
m' x (c3 + m' x c4))) ここで、m は入力仮数、m'はスケール化された仮数、
c0...c4 は仮数の内の高位10ビットによって選択される
係数である。
【0068】図2は、倍精度IEEE平方根仮数スケール化
及びプロセシングを示すブロック図である。この場合、
仮数の内の高位9 ビットは、係数の512 セットの内の1
つを選択し、多項式を計算するために用いられる。指数
の内の低位1 ビットは、係数のセットの2 つのテーブル
の内の1 つを選択するために用いられる。スケール化さ
れた仮数m'が1024 x m - kと表されるが、これは単純な
減算である。減数は、指数が210 で置き換えられた入力
引き数である。被減数は、記憶される仮数の10番目のビ
ットが1 に設定され、その右側の全てのビットがゼロに
設定される減数である。被減数の仮数の内の最も右側の
42ビットがゼロであるために、11ビット加算器が十分で
ある。4 つの乗算累算が平方根の多項式近似を終了す
る。この近似は、正解と1 ビットしか異ならない。
【0069】SQRT (m) = c0 + m' x (c1 + m' x (c2 +
m' x (c3 + m' x c4))) ここで、m は入力仮数、m'はスケール化された仮数、
c0...c4 は仮数の内の高位9 ビット及び指数の内の低位
1 ビットによって選択される係数である。係数セットの
2 つのテーブルは、1 つが偶数の指数を備える引き数用
であり、もう1 つが奇数の指数を備える引き数用であ
る。テーブルは 21/2 の因数( ファクタ) だけ異なる。
【0070】図3は、倍精度IEEE 1/ 平方根仮数スケー
ル化及びプロセシングを示すブロック図である。図2に
示される平方根の場合と同様に、仮数の内の高位9 ビッ
トは、係数の512 セットの内の1 つを選択し、多項式を
計算するために用いられる。指数の内の低位1 ビット
は、係数のセットの2 つのテーブルの内の1 つを選択す
るために用いられる。スケール化された仮数m'が1024 x
m - kと表されるが、これは単純な減算である。減数
は、指数が210 で置き換えられた入力引き数である。被
減数は、記憶される仮数の10番目のビットが1 に設定さ
れ、その右側の全てのビットがゼロに設定される減数で
ある。被減数の仮数の内の最も右側の42ビットがゼロで
あるために、11ビット加算器が十分である。4 つの乗算
累算が1/2 平方根の多項式近似を終了する。この近似
は、正解と1 ビットしか異ならない。
【0071】1/SQRT (m) = c0 + m' x (c1 + m' x (c2
+ m' x (c3 + m' x c4))) ここで、m は入力仮数、m'はスケール化された仮数、
c0...c4 は仮数の内の高位9 ビット及び指数の内の低位
1 ビットによって選択される係数である。係数セットの
2 つのテーブルは、1 つは偶数の指数を備える引き数用
であり、もう1 つは奇数の指数を備える引き数用であ
る。テーブルは、21/2の因数( ファクタ) だけ異なる。
【0072】5項のチェビシェフ多項式において、IEEE
仮数における間隔の数に対する最大エラーが表3に示さ
れている。
【0073】
【表3】
【0074】エラーの第1列は引き数仮数をスケール化
し、計算されたチェビシェフ多項式をそのまま用いるこ
とによって生じる。例えば、間隔が1..2ならば、引き数
仮数は以下のようにスケール化される。
【0075】m' = 2m - 3 ここで、m は引き数仮数、m'はスケール化された引き数
仮数である。間隔1..2における、5 項のチェビシェフ逆
数多項式係数、続いて幾つかの計算例が以下に示されて
いる。
【0076】c0 .6667017101197747 c1 -0.2212126623100560 c2 0.0734572064784883 c3 -0.0285706997456386 c4 0.0098039142067434 Rcip(m) = c0 + m' x (c1 + m' x (c2 + m' x (c3 + m'
x (c4)))) Rcip(1.00) = 0.6667 + -1.0 x (-0.2212 + -1.0 x (0.
07346 +-1.0 x (-0.02857 + -1.0 x (0.009804)))) =
0.9997 Rcip(1.25) = 0.6667 + -0.5 x (-0.2212 + -0.5 x (0.
07346 +-0.5 x (-0.02857 + -0.5 x (0.009804)))) =
0.7998 Rcip(1.50) = 0.6667 + 0.0 x (-0.2212 + 0.0 x (0.07
346 +0.0 x (-0.02857 + 0.0 x (0.009804)))) = 0.666
7 Rcip(1.75) = 0.6667 + 0.5 x (-0.2212 + 0.5 x (0.07
346 +0.5 x (-0.02857 + 0.5 x (0.009804)))) = 0.571
5 Rcip(2.00) = 0.6667 + 1.0 x (-0.2212 + 1.0 x (0.07
346 +1.0 x (-0.02857 + 1.0 x (0.009804)))) = 0.500
2
【0077】スケール化された係数 係数をスケール化することによって、チェビシェフ多項
式への入力引き数のスケール化を回避することが可能で
ある。これは初期の減算を防ぐために望ましい解決法と
思われるが、精度への影響は望ましくない。更に、いか
なる係数もないために、より高いべきの係数における先
行ゼロが記憶域を圧縮する利点を利用できない。
【0078】スケール化された係数例 表3に示されるエラーの第2列は、チェビシェフ多項式
係数をスケール化することによって生じるため、仮数を
変えずに用いてもよい。例えば、間隔が1..2ならば、ス
ケール化されたチェビシェフ係数(c0'..c4')は以下の通
りである。
【0079】c0' = 1 x c0 - 3 x c1 + 9 x c2 - 27 x
c3 + 81 x c4; c1' = 2 x c1 - 12 x c2 + 54 x c3 - 216 x c4; c2' = 4 x c2 - 36 x c3 + 216 x c4; c3' = 8 x c3 - 96 x c4; c4' = 16 x c4. 間隔1..2における、5 項のスケール化されたチェビシェ
フ逆数多項式係数、続いて幾つかの計算例が以下に示さ
れている。
【0080】c0' 3.5569804992347946 c1' -4.9843750572830281 c2' 3.4400194854135147 c3' -1.1697413618124737 c4' 0.1568626273078941 Rcip(m) = c0 + m' x (c1 + m' x (c2 + m' x (c3 + m'
x (c4)))) Rcip(1.00) = 3.557 + 1.00 x (-4.984 + 1.00 x (3.44
0 + 1.00 x (-1.170+1.00 x (0.1569)))) = 0.9999 Rcip(1.25) = 3.557 + 1.25 x (-4.984 + 1.25 x (3.44
0 + 1.25 x (-1.170+1.25 x (0.1569)))) = 0.7999 Rcip(1.50) = 3.557 + 1.50 x (-4.984 + 1.50 x (3.44
0 + 1.50 x (-1.170+1.50 x (0.1569)))) = 0.6666 Rcip(1.75) = 3.557 + 1.75 x (-4.984 + 1.75 x (3.44
0 + 1.75 x (-1.170+1.75 x (0.1569)))) = 0.5711 Rcip(2.00) = 3.557 + 2.00 x (-4.984 + 2.00 x (3.44
0 + 2.00 x (-1.170+2.00 x (0.1569)))) = 0.4994
【0081】チェビシェフ多項式近似を用いた 逆数及び平方根のための浮動少数点ユニット 図4は、仮数逆数プロセシングのために修正されたIBM
RISCシステム/6000 浮動小数点ユニット(FPU) 100の
ブロック図である。FPU は 2ステージパイプラインにお
いて乗算−加算プリミティブ(要素)を行い、多くの場
合に単一サイクルを実行する。この基本的な実行に際し
て、浮動小数点レジスタ(FPR)101はデータバス10
2からのデータと、FPU 100の出力を受信する。FPR
101の出力は、A レジスタ103、B レジスタ10
4、及びC レジスタ105へロードされる。乗算−加算
プリミティブにおいて、A レジスタ103は被乗数入
力、Cレジスタ105は乗数入力を記憶し、B レジスタ
104は追加入力を記憶する。A レジスタ103は直接
乗算器106へ入力を供給し、B レジスタ104はマル
チプレクサ107を介して乗算器106へ入力を供給す
る。乗算器106の積の出力は、加算器109へ追加入
力を供給するA x C 積レジスタ108に記憶される。
【0082】B レジスタ104に記憶される追加入力
は、マルチプレクサ111を介して位置合わせシフタ1
10へ供給される。シフトされた出力はB'レジスタ11
2に記憶され、B'レジスタ112は加算器109の追加
入力を供給する。B'レジスタ112及びA x C レジスタ
108はまた、16進(Hex) 正規化シフトカウントを生成
する先行ゼロアンティシペータ( 予想器) ロジック11
3へも入力を提供する。16進正規化シフトカウントは、
T レジスタ115の結果を一時的に記憶する前に、加算
器109の出力をシフトする16進正規化シフタ114を
制御する。T レジスタ115の値は2 進正規化シフタ1
16において再びシフトされ、この出力がマルチプレク
サ107への第 2入力として供給される。2 進正規化シ
フタ116の出力は、丸めロジック117において丸め
られ、FPR 101への第 2入力及びマルチプレクサ11
1への第 2入力として供給される。マルチプレクサ10
7及び111は、命令デコーダ( 図示せず) により、復
号された命令に応じて、それらの入力の内の適切な1 つ
を選択するように制御される。
【0083】全ての浮動小数点演算命令の実行は、FPU
100の乗算ステージ及び加算ステージの双方を通過す
る。独立浮動小数点演算命令はサイクル毎に開始され
る。従属浮動小数点命令、即ち、先の命令の結果である
ソースオペランドを特定する命令、が1 サイクルおきに
開始される。
【0084】先述のように、この基本的な形では、FPU
100が16乃至19サイクルの除算演算を行うことができ
る。図4に示されるように、チェビシェフ係数記憶装置
120及び仮数低位ビットエラー検出/ 補正ロジック1
21を追加することによって、本発明は基本的なFPU を
修正する。記憶装置120は、係数を記憶する読み取り
専用メモリ(ROM) であり、仮数スケール化ロジック12
3からの入力を受信するアドレスレジスタ122によっ
てアドレス指定される。除算又は平方根演算がデコード
されると、浮動小数点オペランドがバス102から仮数
スケール化ロジック123へ供給され、仮数スケール化
ロジック123がアドレスレジスタ122へ入力を生成
する。53+n個のビットから成る記憶装置120からの係
数のセットの出力は、バス102及びFPR 101を介し
てA レジスタ103及びB レジスタ104へ供給され
る。仮数はC レジスタ105へ供給される。FPU 100
の出力は、エラー検出/ 補正ロジック121へ供給され
る。乗算及び累算プリミティブ、A x C + B を実行する
と、エラー検出/ 補正ロジック121は、仮数低位ビッ
ト検査を行わずに丸めロジック117の出力を渡す。
【0085】逆数プロセシングにおいて、53個のビット
がA レジスタ103及びC レジスタ105の各々によっ
て乗算器106へ供給される。A x C レジスタ108に
一時的に記憶される乗算器106の出力は、幅53 + 53
、即ち、106 ビットである。B レジスタ104への入
力は53 + nビットであり、B'レジスタ112を介して加
算器109へ供給される。加算器109の出力は、幅53
+ nビットである。
【0086】図5を参照すると、図4のFPU 100で実
行される逆数及び平方根プロセシングのロジックを示す
フローチャートが示されている。プロセスは、決定ブロ
ック131において、デコーダからの逆数又は平方根演
算を識別することによって開始される。逆数又は平方根
演算でなければ、他のプロセシングが機能ブロック13
2で実行される。逆数又は平方根演算がデコードされる
と、オペランドの仮数は、機能ブロック133におい
て、スケール化ロジック123によって仮数を2 n 個の
間隔i に分割することで以下のようにスケール化され
る。
【0087】m' = 2N x m - (2N + 2i + 1) ここで、m'はスケール化された仮数であり、N は2 のべ
きである。記憶された係数仮数のセットは機能ブロック
134において読み取り専用記憶装置120から選択さ
れ、これらの係数仮数は機能ブロック135においてFP
R へと読み取られる。この時点で、パイプラインされた
FPU 100の乗算累算関数が呼び出されて、機能ブロッ
ク136において必要な数の乗算累算を行う。
【0088】記憶の見積り チェビシェフ係数仮数データを記憶するのに必要な図4
のROM 120の大きさを考えることは、本発明を実行す
る上で重要である。IEEE倍精度において、以下のテーブ
ルサイズが必要である。
【0089】逆数 360K ビット → 1テーブル x 1024
入力 x 5項 x 72 ビット 平方根 360K ビット → 2テーブル x 512入力 x 5項 x
72 ビット 1/平方根 360K ビット → 2テーブル x 512入力 x 5項
x 72 ビット しかしながら、いったん係数の一般的なセットが調べら
れると、これらの記憶の見積りは高すぎると見られやす
い。例えば、1024入力逆数テーブルの係数の第 1セット
は以下の通りである。
【0090】c0 = 0.9995119570522204 c1 = -0.0004878047618609 c2 = 0.0000002380696760 c3 = -0.0000000001161879 c4 = 0.0000000000000546 IEEE 64 ビット倍精度浮動小数点数が1 ビットの符号、
11ビットの指数、52ビットの仮数から成り、1 つの10進
数が約3 つの2 進数に等しいならば、この一般的な係数
の記憶装置には以下のセーブがあると考えられる。 ・所定の係数 cn の全ての指数が略同じ大きさであるた
めに、11ビットの指数から1係数あたり8 ビット ・チェビシェフ多項式が連続する係数の正の符号と負の
符号との間で交替するために、符号ビットから1 係数あ
たり1 ビット ・係数c1, c2, c3, 及びc4の記憶しない先行ゼロから1
係数セットあたり(3 + 6+ 9+ 12) x 3 = 90ビット これらの調整によって、1 係数セットあたり360(5 x 7
2) ビットの初期サイズから135 ビットが減算される。
即ち、1 係数セットあたり360 ビットの代わりに225 ビ
ットが記憶されなければならない。係数の内の欠落( ミ
ッシング) ビットは一度記憶され、係数がROM から呼び
出されたときに供給される。従って、記憶装置のよりす
ぐれた見積りは以下のようになる。
【0091】逆数 225Kビット又は約28K バイト 平方根 225Kビット又は約28K バイト 1/平方根 225Kビット又は約28K バイト
【0092】エラー検出及び補正 チェビシェフ多項式が間隔における最大エラーを最小限
にすることによって、最も平滑な多項式近似が提供され
る。しかしながら、それらは依然として近似である。い
かなる所定の点においても、値は大きすぎるか又は小さ
すぎる。多くの場合、値の大小は近似が正解へと丸める
ために問題にならない(最大エラーが最下位ビットの値
よりも少ない多項式であると仮定する)。
【0093】近似が最下位ビットの大きさによって画定
される間隔の半分にあり、IEEEの正解が他の半分にある
ときには問題がある。この場合に、近似は一方向を丸
め、IEEEの正解は他方向を丸める。図6が以下の問題を
示している。 ・正解 Xへの近似 X' は、1/4LSB( 最下位ビット) より
多くX を越えるときであっても、最も近いモードへのIE
EEの丸めにおいて正確に丸める。 ・正解 Yへの近似 Y' は、1/16LSB より少なくY を越え
るときであっても、最も近いモードへのIEEEの丸めにお
いて正確に丸めない。
【0094】このエラーについての興味深い点は、多項
式の項の数を増やす、或いは、間隔の大きさを縮めるだ
けでは容易に修正できないことである。これら動作の双
方は、エラーの数を減らすだけで、取り除くことはな
い。
【0095】多項式係数の拡張 少数の係数だけを備えた多項式を用いてIEEE倍精度の結
果を生成するために、IEEE仮数は、各々が多項式係数の
特有のセットを必要とする数多くの間隔へと分割されな
ければならない。これは、各セットの一定係数が多項式
の計算を支配することを意味する。IEEE倍精度に十分正
確な平方根及び逆数の5 項のスケール化されたチェビシ
ェフ多項式近似において、一定係数は残りの多項式より
少なくとも210 だけ大きい。
【0096】多項式は、ホーナーの規則(Horner's rul
e) によって常に評価され、ホーナーの規則は以下の多
項式で表され、 c0 + c1X + c2X2 + + c3X3 + ... + cn X n ネストされた形で以下のように表される c0 + X(c1 + X(c2 + X(c3 + ... + X (cn ))))
【0097】一定係数によって乗算されるものが何もな
いために、一定係数が残りの多項式を少なくとも2 n
け越えるならば、多項式の一定係数の仮数は、乗算器を
拡大せずにn ビットまで拡張することができる。しかし
ながら、最後の乗算累算で、一定係数 c0 の全体が拡大
された仮数は、結果が再び倍精度へ丸められる前に、2
倍に拡大された乗算の結果へ追加されなければならな
い。従って、多項式の一定係数の仮数を拡大することに
よるハードウェアの影響によって、多項式計算の最後の
乗算累算に拡大された加算が行われる。
【0098】多項式の一定係数の仮数における各追加ビ
ットは、その結果に残っている1 ビットエラーの数を半
分にする。従って、IEEE仮数を十分な数の間隔に分割
し、多項式の一定係数の仮数を拡張することによって、
結果となる近似の1 ビットエラーの数を大幅に減少する
ことができる。
【0099】例えば、1024入力の逆数テーブルの係数の
第 1セットは以下の通りである。 c0 = 0.9995119570522204 c1 = -0.0004878047618609 c2 = 0.0000002380696760 c3 = -0.0000000001161879 c4 = 0.0000000000000546
【0100】この場合、一定係数は残りの多項式よりも
有効ビットが少なくとも11個多い。11個のビットによっ
て各一定係数を拡張することで、1 ビットエラーの数を
約1023/1024 だけ減らすことが予想できる。( 勿論、多
項式近似において精度の11ビットを更に得るために、間
隔の数を増やし、係数記憶装置を増大しなければならな
い。
【0101】可能性のある1ビットエラーの検出 図4に示される仮数低位ビットエラー検出/ 補正ロジッ
ク121での可能性のある1ビットエラーの検出は、あ
らゆる所定の多項式近似も公知の最大エラーを有すると
いう事実による。この最大エラーは、仮数の最下位ビッ
トより多く、正しいと予想されるビットの最小数 nへ直
接変換する。
【0102】最も近いモードへのIEEE丸めにおけるエラ
ー検出 図7は、最も近いモードへのIEEE丸めのためのプロセス
のロジックを示している。フローチャートでは、決定ブ
ロック141において、n 個の余分なビットにおけるビ
ットパターンが01111...( 即ち、0 に続いてn-1 個の1
) かどうかを決定するためのテストが先ず行われる。
このビットパターンは、仮数がIEEE 754浮動小数点規格
によって必要とされるよりも1 ビット少ない可能性があ
り、増分された仮数を備えた結果と比較されるべきであ
ることを意味する。このビットパターンが検出される
と、決定ブロック142において、逆数(RCIP(X)) が計
算されるかどうかを決定するためのテストが行われる。
計算されるならば、機能ブロック143でエラー 1 - X
x Yが計算される。ここで、Y はrcip(X) の近似であ
る。次に、機能ブロック144において、このエラーが
1 - X x (Y + 2-53)と比較され、よりエラーの少ない結
果が選ばれる。決定ブロック145で決定されるよう
に、比較された結果が同じエラーを持つならば、0 の低
位ビットを持った結果が機能ブロック146において選
ばれる。逆数が決定ブロック142で計算されないなら
ば、平方根(SQRT(X)) が計算される。この場合、機能ブ
ロック147においてX - Y2が計算される。ここでY は
sqrt(X) の近似である。次に、機能ブロック148にお
いて、このエラーがX - (Y + 2-52)2 と比較され、より
エラーの少ない結果が選ばれる。逆数計算の場合と同様
に、比較された結果が同じエラーを持つならば、0 の低
位ビットを持った結果が選ばれる。
【0103】次に、n 個の余分なビットにおけるビット
パターンが01111...(0に続いてn-1個の1)でないなら
ば、決定ブロック150において、n 個の余分なビット
におけるビットパターンが10000...( 即ち、1 に続いて
n-1 個の0)かどうかを決定するためのテストが行われ
る。このビットパターンは、仮数がIEEE 754浮動小数点
規格によって必要とされるよりも1 ビット多い可能性が
あることを意味する。このビットパターンが検出される
と、決定ブロック151において、逆数(RCIP(X))が計
算されるかどうかを決定するためのテストが行われる。
計算されるならば、機能ブロック152でエラー 1 - X
x Yが計算される。ここで、Y はrcip(X) の近似であ
る。次に、機能ブロック153において、このエラーが
1 - X x (Y - 2 -53)と比較され、よりエラーの少ない結
果が選ばれる。決定ブロック145において決定される
ように、比較された結果が同じエラーを持つならば、0
の低位ビットを持った結果が機能ブロック146におい
て選ばれる。逆数が決定ブロック151で計算されない
ならば、平方根(SQRT(X)) が計算される。この場合、機
能ブロック154においてX - Y2が計算される。ここ
で、Y はsqrt(X) の近似である。次に、機能ブロック1
55において、このエラーがX - (Y - 2-52)2 と比較さ
れ、よりエラーの少ない結果が選ばれる。逆数計算の場
合と同様に、比較された結果が同じエラーを持つなら
ば、0 の低位ビットを持った結果が選ばれる。
【0104】他の全てのビットパターンの場合には、こ
れらの仮数はIEEE 754浮動小数点規格の要求に合い、い
かなるエラー補正も必要としない。この時点で、プロセ
スは出る。なお、2/2 n の場合には1 ビットエラーの可
能性があり、2 n - 2/2 n の場合にはエラーがない。
【0105】他のIEEE丸めモードにおけるエラー検出 図8は、最も近いモードへの丸め以外の全てのIEEE丸め
モードのロジックを示している。フローチャートでは、
決定ブロック161において、n 個の余分なビットにお
けるビットパターンが11111...( 即ち、n 個の1 ) かど
うかを決定するためのテストが先ず行われる。このビッ
トパターンは、仮数がIEEE 754浮動小数点規格によって
必要とされるよりも1 ビット少ない可能性があり、増分
された仮数を備えた結果と比較されるべきであることを
意味する。このビットパターンが検出されると、決定ブ
ロック162において、逆数(RCIP(X)) が計算されるか
どうかを決定するためのテストが行われる。計算される
ならば、エラー 1 - X x Yが機能ブロック163で計算
される。ここで、Y はrcip(X) の近似である。次に、機
能ブロック164において、このエラーが1 - X x (Y +
2-53)と比較され、よりエラーの少ない結果が選ばれ
る。決定ブロック165において決定されるように、比
較された結果が同じエラーを持つならば、0 の低位ビッ
トを持った結果が機能ブロック166において選ばれ
る。逆数が決定ブロック162で計算されないならば、
平方根(SQRT(X)) が計算される。この場合、機能ブロッ
ク167においてX - Y2が計算される。ここでY はsqrt
(X) の近似である。次に、機能ブロック168におい
て、このエラーがX - (Y + 2-52)2 と比較され、よりエ
ラーの少ない結果が選ばれる。逆数計算の場合と同様
に、比較された結果が同じエラーを持つならば、0 の低
位ビットを持った結果が選ばれる。
【0106】次に、n 個の余分なビットにおけるビット
パターンが11111...(n個の1)でないならば、決定ブロッ
ク170において、n 個の余分なビットにおけるビット
パターンが00000...( 即ち、n 個の0)かどうかを決定す
るためのテストが行われる。このビットパターンは、仮
数がIEEE 754浮動小数点規格によって必要とされるより
も1 ビット多い可能性があることを意味する。このビッ
トパターンが検出されると、決定ブロック171におい
て、逆数(RCIP(X)) が計算されるかどうかを決定するた
めのテストが行われる。計算されるならば、エラー1 -
X x Y が機能ブロック172で計算される。ここでY は
rcip(X) の近似である。次に、機能ブロック173にお
いて、このエラーが1 - X x (Y - 2-53)と比較され、よ
りエラーの少ない結果が選ばれる。決定ブロック165
において決定されるように、比較された結果が同じエラ
ーを持つならば、0 の低位ビットを持った結果が機能ブ
ロック166において選ばれる。逆数が決定ブロック1
71で計算されないならば、平方根(SQRT(X)) が計算さ
れる。この場合、機能ブロック174においてX -Y2
計算される。ここで、Y はsqrt(X) の近似である。次
に、機能ブロック175において、このエラーがX - (Y
- 2-52)2 と比較され、よりエラーの少ない結果が選ば
れる。逆数計算の場合と同様に、比較された結果が同じ
エラーを持つならば、0 の低位ビットを持った結果が選
ばれる。
【0107】他の全てのビットパターンの場合には、こ
れらの仮数はIEEE 754浮動小数点規格の要求に合い、い
かなるエラー補正も必要としない。この時点で、プロセ
スは出る。なお、先の場合と同様に、2/2 n の場合には
1 ビットエラーの可能性があり、2 n - 2/2 n の場合に
はエラーがない。
【0108】なお、明細書において小文字のx を大文字
のX 、小文字のy を大文字のY とする。また、図面中の
* はx(乗算) を表す。
【0109】
【発明の効果】本発明は上記より構成され、多項式近似
のパフォーマンスの利点を実現すると共に、過度の記憶
域及び不十分な精度という特有の問題を軽減する方法が
提供される。
【図面の簡単な説明】
【図1】倍精度IEEE逆数仮数のスケール化及びプロセシ
ングを示すブロック図である。
【図2】倍精度IEEE平方根仮数のスケール化及びプロセ
シングを示すブロック図である。
【図3】倍精度IEEE 1/ 平方根仮数のスケール化及びプ
ロセシングを示すブロック図である。
【図4】本発明に従って倍精度IEEE逆数及び平方根を実
行するための、浮動小数点ユニット(FPU) ハードウェア
のブロック図である。
【図5】図4に示されるFPU によって実行される逆数及
び平方根演算のロジックを示すフローチャートである。
【図6】多項式近似における丸めエラーを示すグラフで
ある。
【図7】最も近いモードへのIEEE丸めにおけるエラー検
出のロジックを示すフローチャートである。
【図8】最も近いモードへの丸め以外の全てのIEEE丸め
モードに対するエラー検出のロジックを示すフローチャ
ートである。
【符号の説明】
100 浮動小数点ユニット(FPU) 101 浮動小数点レジスタ(FPR) 102 バス 103、104、105、112、115 レジスタ 106 乗算器 107、111 マルチプレクサ 108 A x C 積レジスタ 109 加算器 110 位置合わせシフタ 113 先行ゼロアンティシペータロジック 114 16進正規化シフタ 116 2 進正規化シフタ 117 丸めロジック 120 チェビシェフ係数記憶装置 121 仮数低位ビットエラー検出/補正ロジック 122 アドレスレジスタ 123 仮数スケール化ロジック

Claims (42)

    【特許請求の範囲】
  1. 【請求項1】 数学関数f(m)の浮動小数点計算を実行す
    るための方法であって、f(m)が、チェビシェフ多項式近
    似を用いてパイプラインされた乗算累算関数を有するコ
    ンピュータの浮動小数点ユニット(FPU) において、逆数
    関数又は平方根関数であり、 読み取り専用記憶装置において複数のチェビシェフ係数
    を記憶するステップと、 仮数を2 n 個の間隔i に分割することに基づいて浮動小
    数点数の引き数仮数mをスケール化するステップと、そ
    れによって少ない項のチェビシェフ多項式を以下のよう
    に各間隔へ近似させ、 m' = 2N x m - (2N + 2i + 1) ( ここで、m'はスケール化された引き数仮数であり、N
    は2 のべきである) 仮数の所定の数の高位ビットを用いて多項式を計算する
    ために前記読み取り専用記憶装置から記憶された係数の
    1セットを選択するステップと、 近似が正解と1 ビットしか異ならないような関数f(m)の
    多項式近似を計算するために複数の乗算累算を実行する
    ステップと、 f(m) = c0 + m' x (c1 + m' x (c2 + m' x (c3 + ... +
    m' x cn ))) ( ここで、c0...cn は仮数の高位ビットによって選択さ
    れる係数のセットである) から成る浮動小数点計算の実行方法。
  2. 【請求項2】 前記関数が平方根の逆数である請求項1
    に記載の浮動小数点計算の実行方法。
  3. 【請求項3】 間隔i の数が4 個であり、4 個の間隔に
    おいてスケール化された仮数が以下の通りであり、 間隔i = 0, m' = 8m - 9 間隔i = 1, m' = 8m - 11 間隔i = 2, m' = 8m - 13 間隔i = 3, m' = 8m - 15 前記関数f(m)が以下のように計算され、 f(m) = c0 + m' x (c1 + m' x (c2 + m' x (c3 + m' x
    c4 ))) ( ここで、c0...c4 は仮数の高位ビットによって選択さ
    れる係数のセットである) である請求項1に記載の浮動小数点計算の実行方法。
  4. 【請求項4】 符号用の1 ビット、指数用の11ビット、
    並びに、仮数用の52ビットから成る64個のビットが倍精
    度浮動小数点数を記憶するのに使用され、関数f(m)が逆
    数であり、仮数をスケール化するステップが仮数の高位
    10ビットに基づいて行われ、前記高位10ビットが係数の
    1024セットの内の1 つを選択するために前記選択するス
    テップで使用される、請求項1に記載の浮動小数点計算
    の実行方法。
  5. 【請求項5】 符号用の1 ビット、指数用の11ビット、
    並びに、仮数用の52ビットから成る64個のビットが倍精
    度浮動小数点数を記憶するのに使用され、関数f(m)が平
    方根であり、仮数をスケール化するステップが仮数の高
    位9 ビットに基づいて行われ、前記高位9 ビット及び1
    ビットが係数の1024セットの内の1 つを選択するために
    前記選択するステップで使用される、請求項1に記載の
    浮動小数点計算の実行方法。
  6. 【請求項6】 符号用の1 ビット、指数用の11ビット、
    並びに、仮数用の52ビットから成る64個のビットが倍精
    度浮動小数点数を記憶するのに使用され、関数f(m)が平
    方根の逆数であり、仮数をスケール化するステップが仮
    数の高位9 ビットに基づいて行われ、前記高位9 ビット
    及び1 ビットが係数の1024セットの内の1 つを選択する
    ために前記選択するステップで使用される、請求項1に
    記載の浮動小数点計算の実行方法。
  7. 【請求項7】 関数f(m)の多項式近似を計算するために
    複数の乗算累算を実行するステップが、仮数へ割り当て
    られるよりもn 個だけ余分なビットを生成し、 n 個の余分なビットにおけるビットパターンが01111...
    ( 即ち、0 に続いてn-1 個の1)かどうかを決定するステ
    ップと、このビットパターンは、仮数が必要とされるよ
    りも1 ビット少ない可能性があり、増分された仮数を備
    える結果と比較されるべきであることを意味し、 逆数(RCIP(X)) が計算されるかどうかを決定し、計算さ
    れると決定するならば、エラー 1 - X x Y (Y はrcip
    (X) の近似である) を計算するステップと、 計算されたエラー 1 - X x Yを1 - X x (Y + 2-53)と比
    較するステップと、 より少ないエラーを持った結果を選択するステップと、 を更に含む請求項1に記載の浮動小数点計算の実行方
    法。
  8. 【請求項8】 比較するステップにおいて比較された結
    果が同じエラーを有するならば、0 の低位ビットを持っ
    た結果を選択する、請求項7に記載の浮動小数点計算の
    実行方法。
  9. 【請求項9】 逆数(RCIP(X)) が計算されないならば、 平方根(SQRT(X)) が計算されると宣言し、エラー X - Y
    2 (Yはsqrt(X) の近似である) を計算するステップと、 計算されたエラー X - Y2 をX - (Y + 2-52)2 と比較す
    るステップと、 より少ないエラーを持った結果を選択するステップと、 を実行する請求項7に記載の浮動小数点計算の実行方
    法。
  10. 【請求項10】 比較するステップにおいて比較された
    結果が同じエラーを有するならば、0 の低位ビットを持
    った結果を選択する、請求項9に記載の浮動小数点計算
    の実行方法。
  11. 【請求項11】 n 個の余分なビットにおけるビットパ
    ターンが01111...(即ち、0 に続いてn-1 個の1)でない
    ならば、 n 個の余分なビットにおけるビットパターンが10000...
    ( 即ち、1 に続いてn-1 個の0)かどうかを決定するステ
    ップと、このビットパターンは、仮数が必要とされるよ
    りも1 ビット多い可能性があり、減分された仮数を備え
    る結果と比較されるべきであることを意味し、 逆数(RCIP(X)) が計算されるかどうかを決定し、計算さ
    れると決定するならば、エラー1 - X x Y (Yはrcip(X)
    の近似である) を計算するステップと、 計算されたエラー 1 - X x Yを1 - X x (Y - 2-53)と比
    較するステップと、 より少ないエラーを持った結果を選択するステップと、 を更に含む請求項7に記載の浮動小数点計算の実行方
    法。
  12. 【請求項12】 比較するステップにおいて比較された
    結果が同じエラーを有するならば、0 の低位ビットを持
    った結果を選択する、請求項11に記載の浮動小数点計
    算の実行方法。
  13. 【請求項13】 逆数(RCIP(X)) が計算されないなら
    ば、 平方根(SQRT(X)) が計算されると宣言し、計算されると
    宣言するならば、エラー X - Y2 (Yはsqrt(X) の近似で
    ある) を計算するステップと、 計算されたエラー X - Y2 をX - (Y - 2-52)2 と比較す
    るステップと、 より少ないエラーを持った結果を選択するステップと、 を実行する請求項11に記載の浮動小数点計算の実行方
    法。
  14. 【請求項14】 比較するステップにおいて比較された
    結果が同じエラーを有するならば、0 の低位ビットを持
    った結果を選択する、請求項13に記載の浮動小数点計
    算の実行方法。
  15. 【請求項15】 関数f(m)の多項式近似を計算するため
    に複数の乗算累算を実行するステップが、仮数へ割り当
    てられるよりもn 個だけ余分なビットを生成し、 n 個の余分なビットにおけるビットパターンが11111...
    ( 即ち、n 個の1)かどうかを決定するステップと、この
    ビットパターンは、仮数が必要とされるよりも1 ビット
    少ない可能性があり、増分された仮数を備える結果と比
    較されるべきであることを意味し、 逆数(RCIP(X)) が計算されるかどうかを決定し、計算さ
    れると決定するならば、エラー 1 - X x Y (Y はrcip
    (X) の近似である) を計算するステップと、 計算されたエラー 1 - X x Yを1 - X x (Y + 2-53)と比
    較するステップと、 より少ないエラーを持った結果を選択するステップと、 を更に含む請求項1に記載の浮動小数点計算の実行方
    法。
  16. 【請求項16】 比較するステップにおいて比較された
    結果が同じエラーを有するならば、0 の低位ビットを持
    った結果を選択する、請求項15に記載の浮動小数点計
    算の実行方法。
  17. 【請求項17】 逆数(RCIP(X)) が計算されないなら
    ば、 平方根(SQRT(X)) が計算されると宣言し、エラー X - Y
    2 (Yはsqrt(X) の近似である) を計算するステップと、 計算されたエラー X - Y2 をX - (Y + 2-52)2 と比較す
    るステップと、 より少ないエラーを持った結果を選択するステップと、 を実行する請求項15に記載の浮動小数点計算の実行方
    法。
  18. 【請求項18】 比較するステップにおいて比較された
    結果が同じエラーを有するならば、0 の低位ビットを持
    った結果を選択する、請求項17に記載の浮動小数点計
    算の実行方法。
  19. 【請求項19】 n 個の余分なビットにおけるビットパ
    ターンが11111...(即ち、n 個の1)でないならば、 n 個の余分なビットにおけるビットパターンが00000...
    ( 即ち、n 個の0)かどうかを決定するステップと、この
    ビットパターンは、仮数が必要とされるよりも1 ビット
    多い可能性があり、減分された仮数を備える結果と比較
    されるべきであることを意味し、 逆数(RCIP(X)) が計算されるかどうかを決定し、計算さ
    れると決定するならば、エラー1 - X x Y (Yはrcip(X)
    の近似である) を計算するステップと、 計算されたエラー 1 - X x Yを1 - X x (Y - 2-53)と比
    較するステップと、 より少ないエラーを持った結果を選択するステップと、 を更に含む請求項15に記載の浮動小数点計算の実行方
    法。
  20. 【請求項20】 比較するステップにおいて比較された
    結果が同じエラーを有するならば、0 の低位ビットを持
    った結果を選択する、請求項19に記載の浮動小数点計
    算の実行方法。
  21. 【請求項21】 逆数(RCIP(X)) が計算されないなら
    ば、 平方根(SQRT(X)) が計算されると宣言し、エラー X - Y
    2 (Yはsqrt(X) の近似である) を計算するステップと、 計算されたエラー X - Y2 をX - (Y - 2-52)2 と比較す
    るステップと、 より少ないエラーを持った結果を選択するステップと、 を実行する請求項19に記載の浮動小数点計算の実行方
    法。
  22. 【請求項22】 比較するステップにおいて比較された
    結果が同じエラーを有するならば、0 の低位ビットを持
    った結果を選択する、請求項21に記載の浮動小数点計
    算の実行方法。
  23. 【請求項23】 数学関数f(m)を計算するためのコンピ
    ュータにおける浮動小数点ユニット(FPU) であって、f
    (m)が逆数関数又は平方根関数であり、前記FPU がパイ
    プラインされた乗算累算関数を有し、 複数のチェビシェフ係数を記憶するための読み取り専用
    メモリ(ROM) と、 浮動小数点数の仮数m をスケール化するためのスケール
    化論理手段と、前記仮数m を2 n 個の間隔i に分割する
    ことに基づいてスケール化され、それによって少ない項
    から成るチェビシェフ多項式を以下のように各間隔に近
    似させ、 m' = 2N x m - (2N + 2i + 1) ( ここで、N は2 のべきである) 前記スケール化論理手段に応じ、仮数の所定の数の高位
    ビットを用いて多項式を計算するために前記読み取り専
    用メモリから記憶された係数の1セットを選択するアド
    レス指定手段と、係数の選択されたセットが前記FPU へ
    供給される、 を備え、 前記FPU が、近似が正解と1 ビットしか異ならない関数
    f(m)の多項式近似を計算するために前記乗算累算関数を
    用いて複数の乗算累算を実行し、 f(m) = c0 + m' x (c1 + m' x (c2 + m' x (c3 + ... +
    m' x cn ))) ( ここで、c0...cn は、アドレス指定手段によって仮数
    の高位ビットを用いて選択される係数のセットである) ことから成る浮動小数点ユニット。
  24. 【請求項24】 符号用の1 ビット、指数用の11ビッ
    ト、並びに、仮数用の52ビットから成る64個のビットが
    倍精度浮動小数点数を記憶するのに使用され、関数f(m)
    が逆数(RCIP(X)) であり、仮数が仮数の高位10ビットに
    基づいてスケール化され、前記高位10ビットが前記アド
    レス指定手段によって係数の1024セットの内の1 つを選
    択するために使用される、請求項23に記載の浮動小数
    点ユニット。
  25. 【請求項25】 符号用の1 ビット、指数用の11ビッ
    ト、並びに、仮数用の52ビットから成る64個のビットが
    倍精度浮動小数点数を記憶するのに使用され、、関数f
    (m)が平方根(SQRT(X)) であり、仮数が仮数の高位9 ビ
    ットに基づいてスケール化され、前記高位9 ビット及び
    1 ビットが前記アドレス指定手段によって係数の1024セ
    ットの内の1 つを選択するために使用される、請求項2
    3に記載の浮動小数点ユニット。
  26. 【請求項26】 符号用の1 ビット、指数用の11ビッ
    ト、並びに、仮数用の52ビットから成る64個のビットが
    倍精度浮動小数点数を記憶するのに使用され、関数f(m)
    が平方根の逆数(1/SQRT(X)) であり、仮数が仮数の高位
    9 ビットに基づいてスケール化され、前記高位9 ビット
    及び1 ビットが前記アドレス指定手段によって係数の10
    24セットの内の1 つを選択するために使用される、請求
    項23に記載の浮動小数点ユニット。
  27. 【請求項27】 逆数(RCIP(X)) が計算され、逆数関数
    の多項式近似を計算するときに、乗算累算関数が仮数へ
    割り当てられるよりもn 個だけ余分なビットを生成し、 n 個の余分なビットにおいて01111...( 即ち、0 に続い
    てn-1 個の1)のビットパターンを検出するための検出手
    段と、このビットパターンは、仮数が必要とされるより
    も1 ビット少ない可能性があり、増分された仮数を備え
    た結果と比較されるべきであることを意味し、 エラー 1 - X x Y (Y はrcip(X) の近似である) を計算
    するためのエラー計算手段と、 計算されたエラー 1 - X x Yを1 - X x (Y + 2-53)と比
    較するための比較手段と、 より少ないエラーを持った結果を選択するための手段
    と、 を更に含む請求項23に記載の浮動小数点ユニット。
  28. 【請求項28】 比較手段で比較された結果が同じエラ
    ーを有するならば、前記選択手段が0 の低位ビットを持
    った結果を選択する、請求項27に記載の浮動小数点ユ
    ニット。
  29. 【請求項29】 平方根(SQRT(X)) が計算され、平方根
    関数の多項式近似を計算するときに、乗算累算関数が仮
    数へ割り当てられるよりもn 個だけ余分なビットを生成
    し、 n 個の余分なビットにおけるビットパターンが01111...
    ( 即ち、0 に続いてn-1 個の1)かどうかを検出するため
    の検出手段と、このビットパターンは、仮数が必要とさ
    れるよりも1 ビット少ない可能性があり、増分された仮
    数を備えた結果と比較されるべきであることを意味し、 エラー X - Y2 (Yはsqrt(X) の近似である) を計算する
    ためのエラー計算手段と、 計算されたエラー X - Y2 をX - (Y + 2-52)2 と比較す
    るための比較手段と、 より少ないエラーを持った結果を選択するための手段
    と、 を更に含む請求項23に記載の浮動小数点ユニット。
  30. 【請求項30】 比較手段で比較された結果が同じエラ
    ーを有するならば、前記選択手段が0 の低位ビットを持
    った結果を選択する、請求項29に記載の浮動小数点ユ
    ニット。
  31. 【請求項31】 逆数(RCIP(X)) が計算され、逆数関数
    の多項式近似を計算するときに、乗算累算関数が仮数へ
    割り当てられるよりもn 個だけ余分なビットを生成し、 n 個の余分なビットにおいて10000...( 即ち、1 に続い
    てn-1 個の0)のビットパターンを検出するための検出手
    段と、このビットパターンは、仮数が必要とされるより
    も1 ビット多い可能性があり、減分された仮数を備えた
    結果と比較されるべきであることを意味し、 エラー 1 - X x Y (Y はrcip(X) の近似である) を計算
    するためのエラー計算手段と、 計算されたエラー 1 - X x Yを1 - X x (Y - 2-53)と比
    較するための比較手段と、 より少ないエラーを持った結果を選択するための手段
    と、 を更に含む請求項23に記載の浮動小数点ユニット。
  32. 【請求項32】 比較手段で比較された結果が同じエラ
    ーを有するならば、前記選択手段が0 の低位ビットを持
    った結果を選択する、請求項31に記載の浮動小数点ユ
    ニット。
  33. 【請求項33】 平方根(SQRT(X)) が計算され、平方根
    関数の多項式近似を計算するときに、乗算累算関数が仮
    数へ割り当てられるよりもn 個だけ余分なビットを生成
    し、 n 個の余分なビットにおいてビットパターンが10000...
    ( 即ち、1 に続いてn-1 個の0)かどうかを検出するため
    の検出手段と、このビットパターンは、仮数が必要とさ
    れるよりも1 ビット多く、減分された仮数を備えた結果
    と比較されるべきであることを意味し、 エラー X - Y2 (Yはsqrt(X) の近似である) を計算する
    ためのエラー計算手段と、 計算されたエラー X - Y2 をX - (Y - 2-52)2 と比較す
    るための比較手段と、 より少ないエラーを持った結果を選択するための手段
    と、 を更に含む請求項23に記載の浮動小数点ユニット。
  34. 【請求項34】 比較手段で比較された結果が同じエラ
    ーを有するならば、前記選択手段が0 の低位ビットを持
    った結果を選択する、請求項33に記載の浮動小数点ユ
    ニット。
  35. 【請求項35】 逆数(RCIP(X)) が計算され、逆数関数
    の多項式近似を計算するときに、乗算累算関数が仮数へ
    割り当てられるよりもn 個だけ余分なビットを生成し、 n 個の余分なビットにおいて11111...( 即ち、n 個の1)
    のビットパターンを検出するための検出手段と、このビ
    ットパターンは、仮数が必要とされるよりも1ビット少
    ない可能性があり、増分された仮数を備えた結果と比較
    されるべきであることを意味し、 エラー 1 - X x Y (Y はrcip(X) の近似である) を計算
    するためのエラー計算手段と、 計算されたエラー 1 - X x Yを1 - X x (Y + 2-53)と比
    較するための比較手段と、 より少ないエラーを持った結果を選択するための手段
    と、 を更に含む請求項23に記載の浮動小数点ユニット。
  36. 【請求項36】 比較手段で比較された結果が同じエラ
    ーを有するならば、前記選択手段が0 の低位ビットを持
    った結果を選択する、請求項35に記載の浮動小数点ユ
    ニット。
  37. 【請求項37】 平方根(SQRT(X)) が計算され、平方根
    関数の多項式近似を計算するときに、乗算累算関数が仮
    数へ割り当てられるよりもn 個の余分なビットを生成
    し、 n 個の余分なビットにおけるビットパターンが11111...
    ( 即ち、n 個の1)かどうかを検出するための検出手段
    と、このビットパターンは仮数が必要なよりも潜在的に
    1 ビット少なく、結果を増分された仮数と比較すべきで
    あることを意味し、 エラー X - Y2 を計算するためのエラー計算手段と(Yは
    sqrt(X) の近似である) 、 計算されたエラー X - Y2 をX - (Y + 2-52)2 と比較す
    るための比較手段と、 より少ないエラーを持った結果を選択するための手段
    と、 を更に含む請求項23に記載の浮動小数点ユニット。
  38. 【請求項38】 比較手段で比較された結果が同じエラ
    ーを有するならば、前記選択手段が0 の低位ビットを持
    った結果を選択する、請求項37に記載の浮動小数点ユ
    ニット。
  39. 【請求項39】 逆数(RCIP(X)) が計算され、逆数関数
    の多項式近似を計算するときに、乗算累算関数が仮数へ
    割り当てられるよりもn 個だけ余分なビットを生成し、 n 個の余分なビットにおいて00000...( 即ち、n 個の0)
    のビットパターンを検出するための検出手段と、このビ
    ットパターンは、仮数が必要とされるよりも1ビット多
    い可能性があり、減分された仮数を備えた結果と比較さ
    れるべきであることを意味し、 エラー 1 - X x Y (Y はrcip(X) の近似である) を計算
    するためのエラー計算手段と、 計算されたエラー 1 - X x Yを1 - X x (Y - 2-53)と比
    較するための比較手段と、 より少ないエラーを持った結果を選択するための手段
    と、 を更に含む請求項23に記載の浮動小数点ユニット。
  40. 【請求項40】 比較手段で比較された結果が同じエラ
    ーを有するならば、前記選択手段が0 の低位ビットを持
    った結果を選択する、請求項39に記載の浮動小数点ユ
    ニット。
  41. 【請求項41】 平方根(SQRT(X)) が計算され、平方根
    関数の多項式近似を計算するときに、乗算累算関数が仮
    数へ割り当てられるよりもn 個の余分なビットを生成
    し、 n 個の余分なビットにおいてビットパターンが00000...
    ( 即ち、n 個の0)かどうかを検出するための検出手段
    と、このビットパターンは、仮数が必要とされるよりも
    1 ビット多い可能性があり、減分された仮数を備えた結
    果と比較されるべきであることを意味し、 エラー X - Y2 (Yはsqrt(X) の近似である) を計算する
    ためのエラー計算手段と、 計算されたエラー X - Y2 をX - (Y - 2-52)2 と比較す
    るための比較手段と、 より少ないエラーを持った結果を選択するための手段
    と、 を更に含む請求項23に記載の浮動小数点ユニット。
  42. 【請求項42】 比較手段で比較された結果が同じエラ
    ーを有するならば、前記選択手段が0 の低位ビットを持
    った結果を選択する、請求項41に記載の浮動小数点ユ
    ニット。
JP6050107A 1993-04-23 1994-03-22 浮動小数点計算の実行方法及び浮動小数点ユニット Expired - Lifetime JP2557193B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US053035 1993-04-23
US08/053,035 US5305248A (en) 1993-04-23 1993-04-23 Fast IEEE double precision reciprocals and square roots

Publications (2)

Publication Number Publication Date
JPH06309154A true JPH06309154A (ja) 1994-11-04
JP2557193B2 JP2557193B2 (ja) 1996-11-27

Family

ID=21981514

Family Applications (1)

Application Number Title Priority Date Filing Date
JP6050107A Expired - Lifetime JP2557193B2 (ja) 1993-04-23 1994-03-22 浮動小数点計算の実行方法及び浮動小数点ユニット

Country Status (2)

Country Link
US (1) US5305248A (ja)
JP (1) JP2557193B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009505309A (ja) * 2005-09-28 2009-02-05 インテル・コーポレーション 拡張関数のための向上した浮動小数点演算部

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0546977A3 (en) * 1991-12-13 1994-10-19 Ibm Method and apparatus for solving numerical problems that use a plurality of processing elements operating in parallel
US5537538A (en) * 1993-12-15 1996-07-16 Silicon Graphics, Inc. Debug mode for a superscalar RISC processor
US5729481A (en) * 1995-03-31 1998-03-17 International Business Machines Corporation Method and system of rounding for quadratically converging division or square root
US5687106A (en) * 1995-03-31 1997-11-11 International Business Machines Corporation Implementation of binary floating point using hexadecimal floating point unit
US6240338B1 (en) * 1995-08-22 2001-05-29 Micron Technology, Inc. Seed ROM for reciprocal computation
US5847979A (en) * 1996-10-31 1998-12-08 Samsung Electronics Company, Ltd. Method and apparatus for generating an initial estimate for a floating point reciprocal of a square root
US6163791A (en) * 1998-02-02 2000-12-19 International Business Machines Corporation High accuracy estimates of elementary functions
US6341300B1 (en) 1999-01-29 2002-01-22 Sun Microsystems, Inc. Parallel fixed point square root and reciprocal square root computation unit in a processor
US6351760B1 (en) * 1999-01-29 2002-02-26 Sun Microsystems, Inc. Division unit in a processor using a piece-wise quadratic approximation technique
US7366748B1 (en) * 2000-06-30 2008-04-29 Intel Corporation Methods and apparatus for fast argument reduction in a computing system
JP3563043B2 (ja) * 2001-05-31 2004-09-08 株式会社半導体理工学研究センター 平方根の逆数計算方法、計算回路、及びプログラム
US20030154227A1 (en) * 2002-02-08 2003-08-14 Intel Corporation Multi-threaded multiply accumulator
DE10208409B4 (de) * 2002-02-27 2006-04-13 Advanced Micro Devices, Inc., Sunnyvale Givens-Rotationsberechnung
GB0411880D0 (en) * 2004-05-27 2004-06-30 Imagination Tech Ltd Method and apparatus for efficient evaluation of "table-based" mathematical functions
US7716268B2 (en) * 2005-03-04 2010-05-11 Hitachi Global Storage Technologies Netherlands B.V. Method and apparatus for providing a processor based nested form polynomial engine
RU2602989C2 (ru) * 2015-01-12 2016-11-20 Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования "Владимирский государственный университет имени Александра Григорьевича и Николая Григорьевича Столетовых" (ВлГУ) Устройство для вычисления функциональных зависимостей
CN107291419B (zh) * 2017-05-05 2020-07-31 中国科学院计算技术研究所 用于神经网络处理器的浮点乘法器及浮点数乘法
CN108196822B (zh) * 2017-12-24 2021-12-17 北京卫星信息工程研究所 一种双精度浮点开方运算的方法及系统

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB1363073A (en) * 1970-07-17 1974-08-14 Solartron Electronic Group Generation of trigonometrical and other functions by interpolation between point values
JPS5177047A (ja) * 1974-12-27 1976-07-03 Naonobu Shimomura
US4338675A (en) * 1980-02-13 1982-07-06 Intel Corporation Numeric data processor
USRE33629E (en) * 1980-02-13 1991-07-02 Intel Corporation Numeric data processor
US4484259A (en) * 1980-02-13 1984-11-20 Intel Corporation Fraction bus for use in a numeric data processor
JPH0766372B2 (ja) * 1986-11-26 1995-07-19 株式会社日立製作所 浮動小数点演算処理装置
US4785412A (en) * 1987-07-20 1988-11-15 Control Data Corporation Double precision approximate quotient network
US4839842A (en) * 1987-07-24 1989-06-13 Advanced Micro Devices Digital tone detection and generation
US4949296A (en) * 1988-05-18 1990-08-14 Harris Corporation Method and apparatus for computing square roots of binary numbers
US5184317A (en) * 1989-06-14 1993-02-02 Pickett Lester C Method and apparatus for generating mathematical functions
US5042001A (en) * 1989-10-02 1991-08-20 Cyrix Corporation Method and apparatus for performing mathematical functions using polynomial approximation and a rectangular aspect ratio multiplier

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009505309A (ja) * 2005-09-28 2009-02-05 インテル・コーポレーション 拡張関数のための向上した浮動小数点演算部

Also Published As

Publication number Publication date
JP2557193B2 (ja) 1996-11-27
US5305248A (en) 1994-04-19

Similar Documents

Publication Publication Date Title
JP2557193B2 (ja) 浮動小数点計算の実行方法及び浮動小数点ユニット
US6163791A (en) High accuracy estimates of elementary functions
US4949296A (en) Method and apparatus for computing square roots of binary numbers
EP0149248B1 (en) Method and apparatus for division using interpolation approximation
US5065352A (en) Divide apparatus employing multiplier with overlapped partial quotients
US10949168B2 (en) Compressing like-magnitude partial products in multiply accumulation
KR19980701802A (ko) 로그/역로그 변환기, 계산 장치 및 로그값 발생 방법
US5060182A (en) Method and apparatus for performing the square root function using a rectangular aspect ratio multiplier
WO2013109532A1 (en) Algebraic processor
US11294627B2 (en) Floating point dot-product operator with correct rounding
US20090287757A1 (en) Leading Zero Estimation Modification for Unfused Rounding Catastrophic Cancellation
US20070156803A1 (en) Overflow detection and clamping with parallel operand processing for fixed-point multipliers
US8019805B1 (en) Apparatus and method for multiple pass extended precision floating point multiplication
USH1222H (en) Apparatus for determining sticky bit value in arithmetic operations
US11550544B2 (en) Fused Multiply-Add operator for mixed precision floating-point numbers with correct rounding
US7366745B1 (en) High-speed function approximation
CN114341796A (zh) 带符号多字乘法器
KR102639646B1 (ko) 다중 입력 부동 소수점 가산기
US5867413A (en) Fast method of floating-point multiplication and accumulation
JPH04291418A (ja) 除算回路の前処理装置
US5648924A (en) Method and apparatus for finding arctangents
US5159566A (en) Method and apparatus for performing the square root function using a rectangular aspect ratio multiplier
JP6919539B2 (ja) 演算処理装置および演算処理装置の制御方法
Pineiro et al. High-radix logarithm with selection by rounding
EP0361886A2 (en) Improved floating point computation unit