JPH1124893A - 逆平方根演算器 - Google Patents

逆平方根演算器

Info

Publication number
JPH1124893A
JPH1124893A JP17352797A JP17352797A JPH1124893A JP H1124893 A JPH1124893 A JP H1124893A JP 17352797 A JP17352797 A JP 17352797A JP 17352797 A JP17352797 A JP 17352797A JP H1124893 A JPH1124893 A JP H1124893A
Authority
JP
Japan
Prior art keywords
data
bit
square root
bit portion
product
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.)
Pending
Application number
JP17352797A
Other languages
English (en)
Inventor
Masayuki Ito
雅之 伊藤
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.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
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 Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP17352797A priority Critical patent/JPH1124893A/ja
Publication of JPH1124893A publication Critical patent/JPH1124893A/ja
Pending legal-status Critical Current

Links

Abstract

(57)【要約】 【課題】逆平方根の演算に要するサイクル数を短縮す
る。 【解決手段】マージ回路16はデータXの上位のu桁の
下位側に値1のビットを付加して修正上位ビット部分U
を生成する。補正回路1はビットXu+1 をそのまま出力
し、Xu+1..Xl を反転し、マージ回路15は補正回路
1の出力Yu+1..Xl とXの上位u桁とをマージし、差
分データ(U−L/2)を表すl桁のデータを生成す
る。ここで、L=X−Uであり、修正下位ビット部分で
ある。参照テーブル14はビットXu..Xmに対する、3×
L×L/8の近似値を出力する。演算器2により以上の
3つのデータに対する積和演算が実行される。その後参
照テーブル13は被演算数データXの上位u桁に対する
関数 1/(U×U×√U)の近似値を供給し、セレク
タ12はレジスタ5内の先の演算結果を選択し、セレク
タ22は定数0を選択し、2回目の積和演算が実行さ
れ、逆平方根が得られる。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、マイクロプロセッ
サ、デジタルシグナルプロセッサ等の集積回路により形
成される小型のデータ処理装置に使用するのに適した逆
平方根演算器に関する。
【0002】
【従来の技術】従来の典型的な逆平方根演算器は、参照
テーブルと積和演算器を繰り返し用いてニュートン法に
より被演算数データXの逆平方根を求める。すなわち、
被演算数データXの上位ビットを参照テーブルの入力に
用いて、直接1/√Xの近似値データR0 を生成し、ニ
ュートン法の収束アルゴリズム等に基づく演算の反復を
行い、必要な精度で1/√Xの近似値データを生成す
る。第n+1次近似値データRn+1 は、第n近似値デー
タRn により次式により与えられることが知られてい
る。但し、nは0以上の整数である。
【0003】
【数1】 Rn+1 =Rn × (1.5 − Rn ×Rn × X/2) (1) 特に、第1次近似値データR1 は、次式により与えられ
る。
【0004】
【数2】 R1 =R0 × (1.5 − R0 × R0 × X/2) (2)
【0005】
【発明が解決しようとする課題】図3に上記従来技術の
アルゴリズムを実行するために本発明に先立って本発明
者が検討した逆平方根演算器100の概略ブロック図を
示す。この回路は、参照テーブル1、積和演算器2その
他よりなる。本明細書では、逆平方根を求めるべき被演
算数データXは、1以上で2より小さく、小数点以下l
桁(lは正整数)を有すると仮定し、この被演算数デー
タXの小数点以下の部分を上位側の桁数uの部分とそれ
より下位側の部分に分けて表す。
【0006】
【数3】 X=1.X1 X2 X3 ..Xu Xu+1 ..Xm Xm+1 ..Xl (3) 図3において、上記式2に基づいて第1次近似値データ
R1 を求めるには以下の演算を実行する。なお、本明細
書では、簡単化のためにある数値Aを表すデータを単に
数値Aと呼ぶことがある。参照テーブル1は、この被演
算数データの小数点以下の上位u桁の部分が採りうる種
々の値に対応する、その被演算数の初期近似値データR
0 を予め記憶するテーブルであり、実際に変換すべき被
演算数データXの小数点以下の部分の上位ビット部分X
1 X2 X3 ...Xu を表すデータが入力されたとき
に、その値に対応する初期近似値データR0 を表すデー
タを出力する。セレクタ6は、この初期近似値データR
0 を選択し、積和演算器2のA入力に供給する。シフタ
3は被演算数データXの全体を表すデータを1ビット右
シフトして被演算数データXの半分の値X/2を表すデ
ータ生成する右1ビットシフタである。セレクタ7は、
シフタ3により生成されたデータX/2を選択し、積和
演算器2のB入力に供給する。セレクタ9は定数0を選
択し、積和演算器2のC入力に供給する。積和演算器2
は、A入力、B入力、C入力に入力されたデータに対し
て積和演算A×B+Cを実行し、その結果をレジスタ5
に供給する回路である。今の場合には、R0 ×(X/
2)を生成する。以上により第1マシーンサイクルでの
動作が終了する。
【0007】第2マシーンサイクルでは、セレクタ6
は、レジスタ5に保持された積和演算結果を選択し、積
和演算器2に供給する。補数生成回路4は、演算結果レ
ジスタ5に保持された積和演算器2の出力に対する2の
補数を生成する回路で、今の場合には、−R0 ×(X/
2)を生成する。セレクタ7はこの補数生成回路4によ
り出力された補数を選択し、積和演算器2に供給する。
一方、セレクタ9は定数1.5を選択し、積和演算器2
に供給する。こうして、積和演算器2は、第2の積和演
算結果1.5−(R0 ×(X/2))を演算結果レジス
タ5に出力する。第3のマシーンサイクルでは、セレク
タ6は、参照テーブル9から出力されている初期近似値
データR0 を選択し、セレクタ7はレジスタ5の内容を
選択する。セレクタ9は定数0を選択する。こうして積
和演算器2から、式2に記載した第1次近似値データR
1 を表すデータが得られ、レジスタ5にセットされる。
【0008】被演算子Xの小数点以下の部分の桁数lを
24とし、上記修正上位ビット部分の桁数uを12とす
ると、第1次近似値データR0 は、24ビット程度の精
度を有する逆平方根となる。この近似値データを求める
ためには、上に説明したように積和演算を3回実行する
必要があり、より高速に逆平方根を求めることが望まし
い。
【0009】本発明の目的は、より高速に逆平方根を演
算できる逆平方根演算器を提供することである。
【0010】
【課題を解決するための手段】上記目的を達成するため
に、本発明では、従来のニュートン法による近似式に代
えて、被演算数データXの小数点以下の部分の上位ビッ
ト部分と下位ビット部分の代わりに使用する修正上位ビ
ット部分Uと修正下位ビット部分Lを定義し、被演算数
データXの逆平方根を、これらのL、Uの多項式で表
す。本発明による逆平方根演算器は、その多項式が指定
する演算を実行する。すなわち、本発明による逆平方根
演算器は、積和演算器と、被演算数データXの小数点以
下の部分の上位ビット部分にその部分より1ビット下位
に値1の1ビットをマージして修正上位ビット部分Uを
生成する第1のマージ回路と、上記データXの下位ビッ
ト部分と上記上位ビット部分とから、上記修正上位ビッ
ト部分Uと上記被演算数データXの修正下位側ビット部
分Lの半分との差を表す差分データ(U−L/2)を生
成する差分データ生成回路と、上記データXの下位ビッ
ト側の一部を入力とし、関数3×L×L/8の近似値デ
ータを供給する参照テーブルと、上記データXの上記上
位ビット部分を入力とし、関数U×U×√Uの近似値デ
ータを出力する他の参照テーブルとを有する。
【0011】ここで、上記修正下位側ビット部分Lは、
上記データXと上記修正上位ビット部分Uとの差であ
り、上記積和演算器は、上記第1、2のマージ回路から
供給された上記二つのデータの積に上記参照テーブルよ
り与えられたデータを加算し、さらに、上記積和演算器
により先に得られた積和演算の結果データと上記他の参
照テーブルにより供給されるデータとの積を、上記デー
タXの逆平方根に対する近似値データとして算出する。
【0012】より具体的には、上記差分データ生成回路
は、上記下位ビット部分に対する補正データを生成する
補正回路と、上記上位ビット部分と上記補正データとを
マージし、上記差分データを生成する第2のマージ回路
とを含み、上記補正データは、上記上位ビット部分より
1ビット下位に位置するビットの反転ビットと非反転ビ
ットをそれぞれ上記データXの上記下位ビット部分の先
頭のビットおよび次のビットとして含み、上記データの
上記下位ビット部分の他のビットの反転ビットを、上記
他のビットより1ビット下位のビットとして含むデータ
である。
【0013】
【発明の実施の形態】以下、本発明に係る逆平方根演算
器を図面に示した実施の形態を参照してさらに詳細に説
明する。図1に示す、本発明に係る逆平方根演算器の構
造と動作の詳細な説明の前に、本実施の形態で使用する
逆平方根の計算の原理を説明する。本実施の形態でも、
すでに述べたように、逆平方根を求めるべき被演算数デ
ータXは、1以上2より小さく、小数点以下l桁(lは
正整数)を有すると仮定し、式3に記載したように、こ
の被演算数データXの小数点以下の部分を上位側の桁数
uの部分とそれより下位側の部分に分けて表す。さら
に、被演算数データXに対して、それの修正上位ビット
部分Uと修正下位ビット部分Lを新たに次の式4,5に
より定義する。
【0014】
【数4】 U=1.X1 X2 X3 .. Xu 1 (4)
【0015】
【数5】 L=0.000 ..0(Xu+1−1)..Xm Xm+1 ..Xl (5) すなわち、等価上位ビット部分Uは、被演算子Xのu+
1桁目を1と仮定したときの、被演算子Xの上位u+1
桁からなる。修正下位ビット部分Lは、被演算数データ
Xの第u+1桁目に代えて、その第u+1桁目と数値1
との差を第u+1桁目に有する、被演算数データXの第
u+1桁以下の部分からなる。その結果、次の式が成立
する。
【0016】
【数6】 X=U+L (6) このようにU、Lを定義すると、数Xの逆平方根は、次
式で示されるこれらの変数U、Lの多項式により近似さ
れる。
【0017】
【数7】 1/√X = 1/√(U+L) = √(U+L)/(U+L) = 1/√U−L/(2U√U) +3L×L/(8U×U√U)−ε ={U(U−L/2)+3×L×L/8}/(U×U×√U) −ε (7) ここに、誤差εの絶対値は、
【0018】
【数8】 |ε| < 1/2 ×L×L×L (8) なお、式7中の第3式は第2式の右辺をテーラー展開す
ることにより得られ、式7中の第4式は、第3式を通分
することにより得られる。
【0019】式7中の式(U−L/2)は、上記Uおよ
びLにより、以下のように表される。
【0020】
【数9】 U−L/2 =1.X1 X2 X3 .. Xu Yu+1 Xu+1 Yu+2 Yu+3 ..Ym ..Yl (9) 式7は、逆平方根が修正上位ビット部分Uと関数(U−
L/2)との多項式により表されることを示している。
ここに、ビットYi(i=u+1,u+2,..または
l)は、ビットXiを反転したものである。すなわち、
式9の右辺の第1ビットから第uビットまでは被演算数
データXの第1ビットから第uビットに等しく、式9の
右辺の第u+2ビットは、被演算数データXの第u+1
ビットに等しく、式9の右辺の第u+1ビットおよび第
u+3から第lビットは、それぞれ被演算数データXの
第u+1ビットおよび第u+3から第lビットをそれぞ
れ反転したものに等しい。したがって、式7中の(U−
L/2)は、式9の多項式を用いて被演算数データXか
ら簡単な回路を使用して高速に生成することができる。
【0021】式7の右辺の値は、以下に具体的に説明す
るように、この式9により算出された結果を使用して2
回の積和演算で実行できる。このような演算により得ら
れる逆平方根の精度は、主として被演算数データXの小
数点以下の桁数lに依存し、他に上記上位ビット部の桁
数u、第2の参照テーブル14の参照に使用される中間
部分Xu+1 Xu+2...Xmの末尾の桁位置 mにも依存する。仮
にu=7、m=15、l=24とすると、式7により算
出した逆平方根の誤差は24ビット以下になる。従っ
て、式7の右辺の値を算出する方法に依れば、先に図3
で示した逆平方根演算器により得られる第1次近似値デ
ータR1 と同程度の精度の近似値データがより高速に得
られることが期待される。
【0022】具体的には、図1において、逆平方根演算
器200は、積和演算器2と、補正回路11と、第1の
参照テーブル13と、第2の参照テーブル14と、マー
ジ回路15と、演算結果レジスタ5と、セレクタ21
と、セレクタ22とで構成される。被演算数データXの
上位ビット部分X1 X2 X3... Xu が第1の参照テ
ーブル13とマージ回路16に供給され、被演算数デー
タXの下位ビット部分の内、第mビットまでの部分 Xu
+1 ...Xm が第2の参照テーブル14へ入力され
る。同時にデータXの下位ビット部分Xu+1...Xm
Xm+1 ...Xl が補正回路11へ入力される。補正回
路11は、被演算数データXの下位ビット部分Xu+1
... Xm Xm+1 ... Xl を受けて、差分データ
(U−L/2)のu+1ビット目以下の部分Xu+1 Yu+
2 Yu+3 ..Ym ..Yl を、式9に従って生成する。
より具体的には、図2に示されるように、補正回路1
は、被演算数データXの下位ビット部分Xu+1 ...X
m Xm+1 ...Xl の内、先頭のビットXu+1 をそのま
ま補正後のデータの第2のビットXu+1として出力する
とともに、インバータ群50によりビット列Xu+1 Xu+
2 ...Xm Xm+1 Xl をそれぞれ反転して先頭のビッ
ト Yu+1、第3から第lのビットYu+2 ...Ym Ym+
1...Yl を生成する。マージ回路15は、この生成
された補正下位ビット部分と被演算数データXの上位ビ
ット部分X1 X2 X3... Xuとをマージし、ビット
数l−uの上記差分データ(U−L/2)を生成する。
したがって、補正回路11とマージ回路は、協同して上
記差分データを生成する回路として機能している。セレ
クタ12は、この生成されたデータを選択し、積和演算
器2のB入力に供給する。
【0023】マージ回路16は、被演算数データXの上
位ビット部分X1 X2 X3 ...Xu の下位側に値1の
ビットを付加し、ビット数u+1の修正上位ビット部分
Uを生成し、セレクタ21に供給する。このように、マ
ージ回路15、16は、異なるデータ線を束ねて新たな
データ線として供給するだけの機能でよいので格別の回
路素子を有しないが、本明細書ではこれらのデータ部分
のマージを実行する回路部分という意味でマージ回路と
呼ぶ。セレクタ21は、まずこの修正上位ビット部分U
を選択し、積和演算器2のA入力に供給する。
【0024】第2の参照テーブル14は、被演算数デー
タXの下位ビット部分のうち、第uビットから第mビッ
トまでの(m−u)ビットが採り得るいろいろの値に対
する、上記式9で使用される3×L×L/8の近似値デ
ータを予め記憶したテーブルであり、現に被演算数デー
タXの上記ビット部分が入力されたときに、その入力デ
ータに対して記憶された近似値データをセレクタ22に
供給する。この近似値データは、このテーブルに対する
入力データのビット数m−uに等しいと仮定する。セレ
クタ22は、この近似値データを積和演算器2のC入力
に出力する。
【0025】積和演算器は、それ自体公知のように、
A、B入力に与えられた二つのデータに対する乗算を実
行する乗算器(図示せず)と、その結果得られる積デー
タとC入力に与えられたデータに対して加算を行う加算
器(図示せず)からなる。こうして、積和演算器2は、
式9中の{ }内の数式の値を算出し、演算結果レジス
タ5に供給する。
【0026】第1の参照テーブル13は、被演算数デー
タXの上位u桁のビット部分が採り得る種々の値に対し
て、関数 1/(U×U×√U)の近似値データを予め
記憶したテーブルであり、現に被演算数データXの上位
u桁のビット部分が入力されると、その部分に対して記
憶された上記関数の近似値データを出力する。この近似
値データのビット数は、このテーブルに対する入力デー
タのビット数(u+1に)等しいと仮定する。
【0027】上記積和演算器2での演算が終了後に、セ
レクタ12は、レジスタ5に保持された積和演算結果デ
ータを選択し、セレクタ21は、第1の参照テーブル1
3の出力を選択し、セレクタ22は定数0を選択する。
その結果、積和演算器2は、先に算出された上記(9)
式の{ }内の数式の値と上記関数との積を算出する。
こうして、上記式9の右辺の値が算出され、レジスタ5
にセットされる。
【0028】以上において、積和演算器を使用する2回
の演算がそれぞれ1マシーンサイクルにより実行され
る。この結果、本実施の形態では、2回の積和演算でも
って逆平方根を算出できる。すでに述べたごとく、先に
仮定した、桁数u、l、mの数値例では、式8で規定さ
れる誤差は24ビット以下である。したがって、本実施
の形態では図3に示した、ニュートン法の収束漸化式を
用いて逆平方根数を生成する方法と同程度の精度のもの
を、より高速に生成できる。このことは、本発明では、
従来のニュートン法による逐次近似式に代えて、被演算
数データXの上位ビット部分と下位ビット部分の代わり
に使用する修正上位ビット部分Uと修正下位ビット部分
Lを定義し、被演算数データXの逆平方根を、これらの
L、Uの多項式で表し、本発明による逆平方根演算器
は、その多項式が指定する演算を実行するようにした結
果である。その結果、従来より少ない演算回数でもって
従来の逐次近似式を用いるのと同程度の精度が得られ
る。なお、補正回路11は、ビット反転と1ビットシフ
トの簡単な論理で構成できるので、補正回路11を通す
ことに起因する時間的なオーバーヘッドは軽微であり、
必要なハードウェアの増加もごくわずかである。
【0029】さらに、被演算数データXの上位ビット、
下位ビットの区切り方により、第1の参照テーブルと第
2の参照テーブルの必要なサイズの和を決定することが
できるので、これを最小にするようなXの上位ビット
数、下位ビット数を選択することができる。なお、本発
明は以上に示した実施の形態に限定されるものではな
く、その要旨を逸脱しない範囲において種々変更可能で
あることはいうまでもない。
【0030】
【発明の効果】本発明によれば、逆平方根の演算を高速
に実行できる。
【図面の簡単な説明】
【図1】本発明に係る逆平方根演算器の概略ブロック
図。
【図2】図1の回路に使用する補正回路11の詳細図。
【図3】本発明者が考えた、ニュートン法による逆平方
根演算器の概略ブロック図。

Claims (2)

    【特許請求の範囲】
  1. 【請求項1】積和演算器と、 被演算数データXの小数点以下の部分の上位ビット部分
    にその部分より1ビット下位に値1の1ビットをマージ
    して修正上位ビット部分Uを生成する第1のマージ回路
    と、 上記データXの下位ビット部分と上記上位ビット部分と
    から、上記修正上位ビット部分Uと上記被演算数データ
    Xの修正下位側ビット部分Lの半分との差を表す差分デ
    ータ(U−L/2)を生成する差分データ生成回路と、 上記データXの下位ビット側の一部を入力とし、関数3
    ×L×L/8の近似値データを供給する参照テーブル
    と、 上記データXの上記上位ビット部分を入力とし、関数U
    ×U×√Uの近似値データを出力する他の参照テーブル
    とを有し、 上記修正下位側ビット部分Lは、上記データXと上記修
    正上位ビット部分Uとの差であり、 上記積和演算器は、上記第1、2のマージ回路から供給
    された上記二つのデータの積に上記参照テーブルより与
    えられたデータを加算し、その後その積和演算の結果デ
    ータと上記他の参照テーブルにより供給されるデータと
    の積を、上記データXの逆平方根に対する近似値データ
    として算出する逆平方根演算器。
  2. 【請求項2】上記差分データ生成回路は、 上記下位ビット部分に対する補正データを生成する補正
    回路と、 上記上位ビット部分と上記補正データとをマージし、上
    記差分データを生成する第2のマージ回路とを含み、 上記補正データは、上記上位ビット部分より1ビット下
    位に位置するビットの反転ビットと非反転ビットをそれ
    ぞれ上記データXの上記下位ビット部分の先頭のビット
    および次のビットとして含み、上記データの上記下位ビ
    ット部分の他のビットの反転ビットを、上記他のビット
    より1ビット下位のビットとして含むデータである請求
    項1記載の逆平方根演算器。
JP17352797A 1997-06-30 1997-06-30 逆平方根演算器 Pending JPH1124893A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP17352797A JPH1124893A (ja) 1997-06-30 1997-06-30 逆平方根演算器

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP17352797A JPH1124893A (ja) 1997-06-30 1997-06-30 逆平方根演算器

Publications (1)

Publication Number Publication Date
JPH1124893A true JPH1124893A (ja) 1999-01-29

Family

ID=15962186

Family Applications (1)

Application Number Title Priority Date Filing Date
JP17352797A Pending JPH1124893A (ja) 1997-06-30 1997-06-30 逆平方根演算器

Country Status (1)

Country Link
JP (1) JPH1124893A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6647403B2 (en) 2000-02-18 2003-11-11 Nokia Corporation Method and digital signal processing equipment for performing digital signal processing calculation
KR100834087B1 (ko) 2005-12-28 2008-06-02 엠텍비젼 주식회사 역제곱근 연산 장치 및 방법

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6647403B2 (en) 2000-02-18 2003-11-11 Nokia Corporation Method and digital signal processing equipment for performing digital signal processing calculation
KR100834087B1 (ko) 2005-12-28 2008-06-02 엠텍비젼 주식회사 역제곱근 연산 장치 및 방법

Similar Documents

Publication Publication Date Title
JP5456766B2 (ja) プログラム可能なプロセッサにおける随意選択的なガロア域計算の実行
JPH0612229A (ja) 乗累算回路
JPH03156531A (ja) 除算装置
US5261001A (en) Microcircuit for the implementation of RSA algorithm and ordinary and modular arithmetic, in particular exponentiation, with large operands
JP2006227939A (ja) 演算装置
JPS60164837A (ja) 除算装置
US20010054053A1 (en) Method and apparatus for finite field multiplication
JP2004258141A (ja) モンゴメリ乗算剰余の多倍長演算のための演算装置
JPH0628155A (ja) 除算方法および除算装置
JPH1124893A (ja) 逆平方根演算器
JP2001034167A (ja) 演算装置及び暗号処理装置
JP3660075B2 (ja) 除算装置
EP1504338B1 (en) &#34;emod&#34; a fast modulus calculation for computer systems
CN113485751A (zh) 执行伽罗瓦域乘法的方法、运算单元和电子装置
JP2578482B2 (ja) 浮動小数点演算器
JP3315042B2 (ja) 乗算装置
Khan et al. Implementation of Special Modulii Set Adders
KR100386979B1 (ko) 갈로아체상에서 비트 직렬 승산기의 병렬화 방법 및 이를이용한 직병렬 승산기
JP2004226516A (ja) べき乗剰余演算方法及びそのプログラム
JPH0371332A (ja) 剰余乗算回路および剰余乗算方法
JP3198868B2 (ja) 乗算処理装置
JPH02153412A (ja) 逆三角関数演算装置
JPH10312269A (ja) 積和演算器
JPS62147526A (ja) 乗算器
JPH11134174A (ja) 演算回路