JP3598096B2 - ニュートンラフソン法を用いた演算方式 - Google Patents

ニュートンラフソン法を用いた演算方式 Download PDF

Info

Publication number
JP3598096B2
JP3598096B2 JP2001531759A JP2001531759A JP3598096B2 JP 3598096 B2 JP3598096 B2 JP 3598096B2 JP 2001531759 A JP2001531759 A JP 2001531759A JP 2001531759 A JP2001531759 A JP 2001531759A JP 3598096 B2 JP3598096 B2 JP 3598096B2
Authority
JP
Japan
Prior art keywords
calculation
initial value
reciprocal
value
delta
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.)
Expired - Fee Related
Application number
JP2001531759A
Other languages
English (en)
Inventor
航 尾形
Original Assignee
航 尾形
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 航 尾形 filed Critical 航 尾形
Application granted granted Critical
Publication of JP3598096B2 publication Critical patent/JP3598096B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

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
    • 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

Landscapes

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

Description

技術分野
本発明は計算機における演算方式に関する。さらに詳しくは除算・開平計算において、ニュートンラフソン法を用いて逆数や、開平値の逆数を求めて、これを用いて除算や開平計算を行う演算方式に関する。
本明細書の中で、特に断らない限り、単精度の浮動小数点形式というときは、IEEE−754規格における単精度の浮動小数点数のデータ形式、即ち、符号部1ビット・指数部8ビット・仮数部23ビット(但し常に1であるMSBを補って仮数部の精度は24ビットである)からなるデータ形式を例として、逆数演算や除算を実現する方法について述べる。
これは説明の為の仮定であって、実際に本発明で述べる演算方式に則って回路を実装する際には必要とする演算精度に応じて、各パラメータを調整すれば良い。
背景技術
浮動小数点除算並びに開平計算は、四則演算の中でも最も時間を要する演算項目である。除算を実現するには大別して減算シフト型除算、表と演算を組み合わせる方法、乗算型除算(代表的なものとしてニュートンラフソン法)がある。開平計算でも、減算とシフトと条件判断を組み合わせる方法、表と演算を組み合わせる方法、ニュートンラフソン法がある。
減算シフト型除算では、最も単純にはプログラムでシフト命令・加減算命令(減算命令または加算命令)・条件分岐命令を組み合わせて1ビットずつ商を算出する方法があげられる。また、マイクロプログラミングでシフト・減算又は加算を反復処理する手法も実装されており、前述の命令を組み合わせる場合よりも高速に処理を行なえる。
減算シフト型除算において、より高速に除算を処理する方法としてSRT法がある。これは除数と被除数を上位から数ビットずつ取り、それらを基にして数ビットの商をえたり、あるいはそれらをインデックスとして表を検索して数ビットずつ商を得る操作を繰り返して必要な精度の商を得る手法で、上記の1ビットずつ商を得る手法に比べて処理のステップ数を削減する。LSIに実装された減算シフト型と乗算型の除算器の比較によれば高基数のSRT法が有利ともされる。
除算を行なう為に表と演算を組み合わせる方法も提案されている。これは、表をROMに格納し、除数の仮数部を表現するビット配列の一部をビットフィールドとして抽出して、その内容をインデックスとして表から得た値をもとに計算を行なって逆算を求め、これを被除数に乗じて除算を実現する方法である。
乗算型除算の代表的なアルゴリズムとして、ニュートンラフソン法(以下N/R法と記す)がある。これは、与えられた除数の逆数の近似値Y0を得て、
n+1=Yn・(2−Yn・Rm)
[Rmは除数の仮数部]
に示される反復計算を行なって所定の精度の逆数を得て、これを被除数に乗じて除算を実現する方法である。
開平計算についても同様で、与えられた引数の開平値R'mの逆数Y'の近似値Y'0を得て、
Figure 0003598096
[R'mは除数の仮数部]
に示される反復計算を行なって所定の精度の開平値の逆数を得て、これを引数に乗じて開平を実現する方法である。
減算シフト型の除算では、1ステップを処理する度に条件を判定する必要があるので、プログラミングでシフト命令・加減算命令・条件分岐命令を組み合わせて実現する場合には演算に多大な時間を要するという問題がある。また、命令間にデータ依存があるために命令パイプライン構成を持つアーキテクチャの計算機を用いても処理速度を向上させるのが困難であるという問題がある。
減算シフト型除算を、マイクロプログラミングでシフト・加減算を反復して実行する場合には、前述の個々の命令を組み合わせる方法に比べれば高速に処理できるが、単独の加算命令・減算命令・乗算命令(以下まとめて加減乗算命令という)に比較すると多大な処理時間を要するという問題がある。
高基数のSRT法では、前述の単純な減算シフト型除算に比べて高速ではあるが、依然多くのステップ数を必要とするという問題がある。また、高基数のSRT法を実装するには、得られた暫定解を元に乗算器を用いて減数を算出して減算を行う回路を構成するか、起こりうる暫定解に対応した減数を予め算出しておいて得られた暫定解に応じた減算を行なう為に減数を選択するセレクタを構成する必要があり。演算に要する時間の面でも使用する資源の面でも、この手法は必ずしも有利ではない。
また、減算シフト型除算では、一つの除算を行っている間は、回路資源を反復使用する為に、演算回路が占有されて、次の除算を開始する事が出来ず、スループットを向上させる事が出来ないという問題がある。
表と演算を組み合わせる方法も、小型といえども単精度の演算を行なう為には数十〜数百キロビットの容量のメモリを要求するため、LSI上に実装するには、やはり実装効率が悪いという問題がある。
N/R法の除算においては、従来は初期値の表をメモリに格納し、与えられた除数の仮数部を表現するビット配列のうち、MSB側より必要なビットフィールドを抽出し、これをインデックスとして初期値を取り出して、反復計算に供する回路が実装されていた。
既存の実装の例では8ビット程度の精度の表を用いる例が多く見受けられたが、単精度の逆数を得るには反復計算を2回行なう必要があり、加減乗算命令を組み合わせて反復計算を行う場合には時間を要するという問題がある。
一回の反復で24ビットの精度を得るには、初期値として最低12ビットの精度が必要であり、これを直接表として作成する場合には12ビット幅4096ワード、即ち49152ビット(6キロバイト)容量のメモリが最低でも必要である。
実際には演算のためのガードビットも必要であり、この数倍の容量が要求されるので、LSI上に構成するには大きな面積を占有して効率が悪いとう問題がある。また、現在市販されているプログラマブルロジックデバイス(以下PLDと略す。なお、ここでいうPLDにはCPLD、即ちコンプレックス・プログラマブル・ロジック・デバイス、やFPGA、即ちフィールド・プログラマブル・ゲート・アレイ等のプログラマブルなデバイスも含む)の類には搭載することが出来ないという問題がある。
この他にも、12ビットの精度の初期値を得て、一回の反復計算を行なう場合には、
n+1=Yn・(2−Yn・Rm)
[Rmは除数の仮数部]
に示される漸化式、より具体的には
1=Y0・(2−Y0・Rm)
に示される演算を行なうが、この計算を別途演算命令を組み合わせて実現する場合には、複数の命令間にデータ依存が生じ、命令パイプラインや演算パイプラインを持つプロセッサでは効率良く処理できず、また、演算装置の使用のコンフリクトが生じ、反復計算を行っている間は演算器を占有して、他の命令を実行出来ないという問題がある。
既存の乗算器に改変を施して、従来の単純な24ビット×24ビットの演算を行なうモードと、初期値Y0と除数の仮数部Rmの積を算出しつつこれを2.0から減じるモードの、二つのモードを備えた演算器も用いられている。後者のモードは積の2の補数をとって上位ビットを操作するので、ほとんど回路を追加すること無く実現できる。しかし、この場合にも反復計算と他の演算を並行して行なうことができず、性能が落ちるという問題がある。また、N/R法の反復に、同じ乗算器を繰り返し用いる事から、一つの除算が終了するまで次の除算を開始できずスループットを向上させる事が出来ないという問題がある。
また、N/R法で高い精度(ここでは仮に単精度の倍の48ビットを例とする)の逆数を算出する場合には、初期値として24ビットの精度の逆数を与えて1回の反復計算を行うか、12ビットの精度の逆数を与えて2回反復を行う必要があり、前者の場合には必要とする表が大きくなるという問題がある。一方で後者の場合には2回目の反復計算を行う回路が大きくなり、かつ演算時間が延びるという問題がある。
この他に、回路資源に強い制約のあるPLDには、大型の表を搭載する事が出来ず、N/R法による逆数計算や除算が実装出来ないという問題がある。
開平計算を実装する場合においても、略同様の問題がある。
発明の開示
上述の諸問題を解決し、小型・低レイテンシ・高スループットな逆数演算回路を用いた除算回路並びに、開平値の逆数演算回路を用いた開平回路を提供することを課題として本発明はなされた。
具体的には、まずN/R法の初期値を得るのに用いる表を小型にする手段を与える。即ち、表に初期値そのものを格納するのではなく、小型の表から検索した値を演算器に入力して初期値を算出することにより、表の大きさが小さくても済むような演算手法を与える、更には、必要になる表の最低限の大きさや、表の内容を決定する手段を与える。
次に、得た初期値よりN/R法による反復計算を行って必要な精度の逆数や、開平値の逆数を算出する際に、プログラミングによって演算命令を組み合わせて計算することによる計算時間の増大を避ける為に、反復計算を行う専用回路を構成し、パイプライン化することによりスループットを向上させる事が可能な回路を与える。更には、その専用回路に要する回路資源を節約し、回路規模を小さくし、演算時間を短縮する演算回路の構成を与える。
また、N/R法で高い精度の逆数や、開平値の逆数を算出するために、初期値として高い精度の逆数の近似値を必要とせず、また、反復回数を増加させることなく、計算で得られる逆数や、開平値の逆数の精度を向上させる演算回路の構成を与える。
また、PLD上にN/R法を用いた逆数計算回路や開平値の逆数計算回路と、それを用いた除算回路や開平計算回路を効率良く実装する方法を与える。
以下の説明では除算や、逆数計算においては、浮動小数点形式で表現された除数Rの仮数部Rm100(以下除数の仮数部100と呼ぶ)に注目する。単に除数というときは、特に断らない限り与えられた除数Rの仮数部100(Rm)を指す。
また、開平計算や、開平値の逆数計算においては、浮動小数点形式で表現された引数R'の仮数部R'm400(以下引数の仮数部400と呼ぶ)に注目する。単に引数というときは、特に断らない限り与えられた引数R'の仮数部400(R'm)を指す。
いずれも、本明細書においては、0.5≦RmsR'm<1.0の範囲に正規化されているものとする。
本発明では、除算においてはN/R法で除数の逆数を求めて、これを別途の乗算命令で被除数に乗じて商を得る形で除算を実現する。あるいは、N/R法で得られた逆数を被除数に乗じる回路を追加して、除算を実現する。
また、開平計算においてはN/R法で、引数の開平値の逆数を求めて、これを別途の乗算命令で引数に乗じて開平値を得る。あるいは、N/R法で得られた引数の開平値の逆数を引数に乗じる回路を追加して、開平演算を実現する。
請求項1にかかる発明では、N/R法の反復計算そのものを演算回路として実装するとき、与えられた初期値104を、演算のガードビットを含み最低限必要な精度に丸めて、下位ビットを0とすることで、N/R法の反復計算回路を簡略化する。
その構造の概略を図5に示す。除数の仮数部100と被除数の仮数部501が与えられており、初期値計算回路504、補正器付き乗算器503、乗算器502からなる。ここで逆数106を取り出して別途乗算命令で被除数の仮数部501に乗じてもよいし、これを被除数の仮数部501に乗ずる乗算器506を接続して、商の仮数部507を算出してもよい。
初期値計算回路504は与えられた除数の仮数部100より、その逆数の近似値、即ちN/R法の初期値104を算出するもので、従来は除数の仮数部100を表現するビット配列からビットフィールドを抽出し、その内容をインデックスとして表から初期値を索いた。
この初期値計算回路504には、除数の仮数部100の逆数の、より粗い近似値を基にN/R法の反復を行って、必要な精度の逆数を求める回路をあてて、その出力を初期値104として用いても良い。あるいは他の簡便な逆数計算回路を用いてもよい。
補正器(単に積を出力するのではなく、得られた積に対して加工を施す回路または機能)付き乗算器503は、2.0から初期値104と除数の仮数部100の積を減じる演算を行って値505を出力するが、積の2の補数をとった上で2.0の位を操作すれば良いので、使用する素子数及び演算時間は、単純な乗算回路とほとんど変わらない。
請求項2にかかる発明は、値106を得る際に、
1=Y0・(2−Y0・Rm)
を変形して
1=Y0+ΔY
を経て
0

ΔY=Y0・(1−Y0・Rm)=Y0・β
に分けて、一度差分109(ΔY)を計算してから最終的に逆数106を得る手法である。
具体的には
β=(1−Y0・Rm)
に示される、初期値104と除数の仮数部100の積を、1.0より減じた値111をβとおき、これに初期値104を乗じて差分109として、更に初期値104を加えて逆数106を得る。
この発明は開平値の逆数の計算にも適用できる。
請求項2にかかる演算回路の構成の例を図6に示す。これは、初期値104と除数の仮数部100の積を、1.0より減じて値111を求めた例である。式の変形を行うことによって、補正器付き乗算器601において部分積の一部を省略し、また、乗算器603においても部分積の一部を省略する。
補正器付き乗算器601は、
β=(1−Y0・Rm)
に示された計算を行うもので、初期値104と除数の仮数部100の積を、1.0より減じる演算を行うが、積の2の補数をとった上で1.0の位を操作すれば良い。また、その演算結果の値111の絶対値は、値505の絶対値より小さい。
補正器付き乗算器601で得た結果の値111に、初期値104を乗じて得た積108に、初期値104を、経路602を通して加算器604を用いて加算して、値106を算出する構造を取る。この加算器を、乗算器603の加算木の一部として繰り入れて、ブロック605を一つの演算器として構成しても良い。これはブロック409、707、805、904、1004、1807、1908でも同様である。
請求項3にかかる発明では、開平値の逆数をN/R法で求める時に、反復計算そのものを演算回路として実装するとき、与えられた初期値400を、演算のガードビットを含み最低限必要な精度に丸めて、下位ビットを0とすることで、N/R法の反復計算回路を簡略化する。
その構造の概略を図4に示す。引数の仮数部400が与えられており、初期値計算回路401、補正器付き乗算器405、乗算器407からなる。ここで開平値の逆数411を取り出して別途乗算命令で引数400に乗じてもよいし、これを引数の仮数部400に乗ずる乗算器412を接続して、開平値413を算出してもよい。
請求項4にかかる発明では、請求項1乃至3における、初期値の下位ビットの省略可能な範囲を示す。
請求項5にかかる発明では、請求項1乃至3における、初期値の下位ビットの具体的な省略の手法について、切り上げ手法を用いたケースについて示す。
請求項6にかかる発明では、請求項1乃至3における、初期値の下位ビットの具体的な省略の手法について、切り下げ手法を用いたケースについて示す。
請求項7にかかる発明では、請求項1乃至3における、初期値の下位ビットの具体的な省略の手法について、0捨1入、即ち、丸める当該位が0だったら切り捨て、1だったら切り上げを行うケースについて示す。
請求項8にかかる発明では、請求項2における、差分を分離して計算する発明につき、より詳細に省略可能なビットの位置を特定する手法を示す。
請求項9にかかる発明では、請求項2並びに請求項8に掛かる発明を、開平値の逆数の計算に適用した手法を示す。
請求項10にかかる発明では、逆数計算と、開平値の逆数計算とで、共通の演算を行う部分を共有する演算方式について述べる。この演算方式に基づく実装の例を図18に示す。セレクタ1801、1803、1809を有し、逆数計算の際には(D)側、開平値の逆数計算では(R)側の入力を出力へ導く。また、補正器付き乗算器1805は、開平値の逆数計算の時は上段を、逆数計算の時は下段を行う。
請求項11にかかる発明では、
β=(1−Y0・Rm)
に示される、初期値104と除数の仮数部100の積を、1.0より減じた値111をβとおき、これを用いて逆数の演算精度を向上させる。
即ち、逆数計算におけるN/R法の漸化式
n+1=Yn・(2−Y0・Rm)
をn回、反復したときの値150は、初期値104と、値111だけを用いて
Figure 0003598096
の形で表現されるので、これを計算する回路を実装する。
尚、反復を無限回数繰り返して、精度を無限に高めた場合の値151(Y)は、初期値104と値111を用いて
Figure 0003598096
と表現される。また、級数計算を第n次の項で打ち切った場合の値Yxは、
Figure 0003598096
に表現される。この時の誤差は、
=Yx+δy
を経て
Figure 0003598096
に示される値δyに拠る。
請求項12にかかる発明では、級数計算を有限個行う
Figure 0003598096
の計算を行う回路を実装する。その概略を図7に示す。尚、図7では順次値111を乗じてn次の値を得ているが、二乗、三乗等の、階乗計算を行なう回路を用いて、値111から直接n次の値を算出しても良い。これは図8や図10でも同様である。
請求項13にかかる発明では、級数計算の一部の値を表としてメモリに格納し、値111を表現するビット配列のうちMSB側から適当なビット幅のビットフィールドを抽出し、これをインデックスとして表から値を索き、これを級数計算の一部の代わりとして用いる。この表を索く操作は請求項14ないし16の発明においても同様である。
メモリに格納する表の値には、あるn次の項より高次の、無限個の項の合計の値を用いても良いし、必要な精度が得られるという条件の下で有限個の項で打ち切った、合計の値を用いても良い。
請求項13にかかる発明において、三次迄の項を個別に計算し、四次以降の高次の項を合計した値801を表にしてメモリ806に格納した場合を例とした演算回路を図8に示す。
請求項14にかかる発明では、
Figure 0003598096
の値を表としてメモリ905に格納し、値111を表現するビット配列のMSB側からビットフィールドを抽出し、その内容をインデックスとして、表から値を索いて、
Figure 0003598096
の計算を行う回路を実装する。図9がその構成である。
請求項15にかかる発明では、
Figure 0003598096
の中の項155
Figure 0003598096
の値を表としてメモリ1005に格納し、値111を表現するビット配列から抽出したビットフィールドの内容をインデックスとして、表から項の値を索いて、
Figure 0003598096
の計算を行う回路を実装する。図10がその構成である。
請求項16にかかる発明では、
Figure 0003598096
の中の項156
Figure 0003598096
の値を表としてメモリ806に格納し、値111の値をインデックスとして、表から項の値を索いて、該計算を行う回路を実装する。図8がその構成に相当する。
請求項17にかかる発明では、
Y=Y0・(1+β+β2)
の計算を行う回路を実装する。その構成は図7より乗算器702と乗算器703を除いた形をとる。
請求項18にかかる発明では、
Y=Y0・(1+β+β2+β3)
の計算を行う回路を実装する。その構成は図7より乗算器703を除いた形をとる。
請求項19にかかる発明では、開平値の逆数を計算するに当たって、引数400、初期値401より、
Figure 0003598096
によって値β'(値402)を算出し、この高次関数の式、
Figure 0003598096
にて開平値の逆数を高い精度で算出する。図19にその例を示す。
図19は4次の項までの計算を行った例である。
請求項20にかかる発明では、開平値の逆数を計算するにあたって、引数400、初期値401、値402を用いて、
2=Y0・(1+β'+β'2+1.5β'3+2.5β'4+β')
に示される演算を行い、初期値402より2回の反復演算で得られるのと同様の精度の開平値の逆数を得る。必要な演算精度に応じて適宜級数の次数を下げてもよい。
図19は、この計算より5次の項を省略した形の演算回路を示す。
請求項21にかかる発明は、開平値の逆数の計算をするにあたって、級数の一部を表とし、メモリ2001に格納し、値402を表現するビット配列のMSB側からビットフィールドを抽出し、その内容をインデックスとして、表から値を索いて、計算を行う。図20に、実装の例を示す。
請求項22にかかる発明では、補正器付き乗算回路1805、乗算回路2101、2102、2103、2106、などを、逆数計算回路と、開平値の逆数計算回路とで共有して級数計算による演算回路をコンパクトに実装する。
図22にその構成例を示す。セレクタ1809、1801、1803、2109、2110、補正器付乗算回路1805によって、逆数計算と、開平値の逆数計算を切り替える。
請求項23にかかる発明では、初期値104として要求される、逆数の近似値に許される誤差1721が与えられたときに、一次近似に用いる表の、最低限の大きさを示す式を与える。
請求項24にかかる発明では、逆数計算を行う回路をPLD上に搭載する際に、LUTをROMメモリとして用い、ここに初期値計算回路の中に用いられる表を格納する。複数のLUTを接続して、より大きなROMメモリを構成して、ここに表を格納しても良い。図11にその例を示す。1103がLUTをメモリセルとして用いたメモリであり、1104がLUTを接続してより大容量のメモリを構成する役割を果たすLUTである。
請求項25にかかる発明では、級数計算を行う回路をPLD上に搭載する際に、LUTをROMメモリとして用い、ここに級数計算の一部の値の表を格納する。複数のLUTを接続して、より大きなROMメモリを構成して、ここに表を格納しても良い。
請求項26にかかる発明では、初期値計算、反復計算、1.0より初期値と除数の積を減じた値を用いた計算において、乗算が連続する部分、あるいは、加減算と乗算が交互に連続する部分で、冗長表現の演算方式を用いて、演算時間を短縮する。
【図面の簡単な説明】
図1は、除数の仮数部を構成するビット列を3つのビットフィールドに区分する様子を示す説明図である。
図2は、本発明の一実施態様において、初期値を得る様子を示す説明図である。
図3は、本発明の一実施態様において、初期値を得るための回路構成図である。
図4は、本発明の一実施態様において、初期値を得るための回路構成図である。
図5は、本発明の一実施態様において、N/R法の反復計算そのものを演算回路として実装した回路構成図である。
図6は、本発明の一実施態様の回路構成図である。
図7は、本発明の一実施態様の回路構成図である。
図8は、本発明の一実施態様の回路構成図である。
図9は、本発明の一実施態様の回路構成図である。
図10は、本発明の一実施態様の回路構成図である。
図11は、本発明の一実施態様において、ルックアップテーブルをROMとして用いて、ここに初期値計算回路で用いられる表を格納した様子を示す説明図である。
図12は、曲線y=1/xの一部を示す。
図13は、図12の曲線の一部拡大図である。
図14は、図13の曲線の一部拡大図である。
図15は、N/R法の反復計算回路を簡略化する様子を示す説明図である。
図16は、N/R法の反復計算回路を簡略化する様子を示す説明図である。
図17は、一次補間の区分数の解析説明図である。
符号の説明
100 除数の仮数部
104 初期値
106 逆数
120、121 ビットフィールド
301、302 メモリ
303 乗算回路
304 減算回路
501 被除数の仮数部
502、506、603、701、702、703、705、803、903、1003 乗算器
503、601 補正器付き乗算器
504 初期値計算回路
507 商の仮数部
604、704、706、802、804、902、904、1002、1004 加算器
701、901、1001 メモリ
発明を実施する為の最良の形態
以下に単精度計算に請求項1にかかる発明を適用した実施例をあげる。図1に示すビット列で表される除数の仮数部100(Rm)が与えられたとき、この上位からMSBの1ビットをおいて、5ビットを取りビットフィールド120(Nx)とおく。また引続き9ビットを取りビットフィールド121(Ny)とおく。そして、除数100の定義域0.5≦Rm<1.0を32区分して、各区分において12ビットの精度で初期値を獲得する。
図12は、
Figure 0003598096
の曲線の一部であり、除数の仮数部100の定義域0.5≦Rm<1.0と、その逆数Y=1/Rmの値域(但し1.0<1/Rm≦2.0)が取る部分1201を拡大して図13に示す。
図13に於いて定義域を32の区分に分割し、ビットフィールド120(Nx)の値を用いて与えられた除数に近い区分を取る。濃色部1301で示された柱状部分が選択された区分で、この中で一次近似を行なう。この部分を拡大したものを図14に示す。
一次の近似計算を行なう回路構成が図3に示される。各々の区分において一次近似に必要になるのは、各区分における逆数の近似値306と、その区分での一次近似に用いられる線分の傾きの値305であり、前者に14ビット幅32ワードのメモリ301と、後者に9ビット幅32ワードのメモリ302の、2つのメモリが充てられる。併せて736ビット容量のメモリを用意すれば足りる。
回路は、14ビット32ワードのメモリ301、9ビット32ワードのメモリ302と、乗算器303、減算器304からなる。メモリ302より索いた傾きの値305とビットフィールド121を、乗算器303で乗じて、この積を、減算器304を用いてメモリ301より索いた近似値306より減じて、初期値104を算出する。
選択された区分に於けるY=1/Rmの近似値306を、フィールド120をインデックスとして小容量メモリ301より索く。同時にこの区分に於ける線分1401の傾きの値305を小容量メモリ302より索く。引続きフィールド121の値を傾き305に乗じて近似値306より減じ、
0=ΔB[Nx]−ΔE[Nx]・Ny
より初期値104を得る。これは除数の仮数部100の逆数として12ビット以上の精度を持つ。
この他にも、当該区分の一次近似の線分1401の左端と右端に於ける近似値を各々2つのメモリに格納し、ビットフィールド121によって中点をとる回路を用いて近似値を算出する方式でも良い。
こうして得た初期値104より、24ビット精度の逆数106を得るには、
1=Y0・(2−Y0・Rm)
を計算すれば良い。
単精度の除算において、請求項1、2、3〜9にかかる発明を適用した実施例を図15や図16に示す。初期値104は精度が12ビットなので、演算のガードビット2ビットを加えてMSBより14ビットを取り、残りLSB側の10ビットをゼロとする。これにより、MSBより14ビット分の演算を行えばよい。この手法はN/R法を反復する際の途中結果にも用いられる。
図15は、除数の仮数部100と初期値104の各々24ビットの仮数部の乗算に於ける部分積576項(領域1501)を示すが、前述の様に有意なビットの位置に注意すれば、濃色部1502(淡色領域1503を含む)の部分積だけを考慮すれば良い。
尚、領域1503の部分は、必要とする演算精度が低くても良いならば、LSB側から相応の程度の項について省略しても良い。この場合、省略した項の代わりに適切な定数項を付け足す事で演算精度をある程度、維持することもできる。
得られた積1506を丸めると共に、その2の補数をとって、1.0の位を操作して値111を算出する。
また、値111の上位ビットは必ず全て1(Y0×Rm>1.0のとき)か、全て0(Y0×Rm≦1.0のとき)になる。そのため、部分積1504に当る位までを計算し、その位が0か1かを判定すれば、それより上位のビットの状態もわかる。これより、領域1505の部分積の項の計算も省略できる。
引き続き、更に値104を乗ずる。その様子を図16に示す。これは図6のブロック605に相当する。この時にも無効なビットにかかわる演算を省略して領域1602に示された濃色部分の項について計算を行なえば良い。また、加算器604及び減算器1605は乗算の中に構成される加算木の一項として扱い、ブロック605を一つの演算器として構成しても良い。値111の上位ビット(部分積1504の位)の状況によって、減算器1605によって積1604から、初期値104を減ずるか否かを定める。
なお淡色領域1603の部分は必要とする演算精度が低くても良いならば、LSB側から相応の程度の項について省略してもよい。この場合、省略した項の代わりに適切な定数項を付け足す事で演算精度をある程度、維持することもできる。
上記の様にして初期値の算出とN/R法の反復からなる単精度の逆数計算そのものが実装できる。使用する回路資源は、反復計算の為に従来の乗算器を二つ追加する場合に比べて小さい。
請求項15にかかる実施例を図17を用いて説明する。
Figure 0003598096
による曲線があるとき、これより初期値104に許される許容誤差1721上方の曲線を
Figure 0003598096
で、また下方の曲線を
Figure 0003598096
で表す。この二つの式に挟まれた着色領域1720内に初期値があれば、N/R法反復計算で所定の精度の逆数を得られるものとする。
値1706において曲線
Figure 0003598096
に接する線分を表す
Figure 0003598096
(あるいは
Figure 0003598096
)を考える。また、これが
Figure 0003598096
と交わる点を各々解1707、解1708とする。
この解1707と解1708においては、
Figure 0003598096

Figure 0003598096
は等しい事を利用して、
Figure 0003598096
を立て、この解を求める事によって解1707と解1708の間の距離を求める。この式は
Figure 0003598096
と同値であり、その解が
Figure 0003598096
であることから、2解間の距離は値1712で与えられる。
許容誤差1721に、所望の許容誤差を代入する事で、解の距離は数1712によって求まり、これによって、与えられた除数の定義域(0.5≦Rm<1.0)をどれだけの区分に分ければ良いかが分かる。
尚、
Figure 0003598096
より、Rm<1.0の範囲ではさらに多少の誤差が許容される事がわかり、この範囲内で演算精度を下げて回路を減らす事が出来る。
請求項21にかかる発明の実施例を図19に示す。乗算器1909、1904については、乗数1.5や乗数2.5を表すビット配列のうち、有意なビットは2ビットだけであるので、被乗数を適宜シフトして加算器2105に入力する。
産業上の利用可能性
請求項1または3にかかる発明を用いる事により、ニュートンラフソン法の反復演算を回路に実装するにあたって、乗算回路の一部を省略して回路規模を小さくすると共に演算速度を向上させる。同時に、演算資源の利用の衝突を回避する事が出来、完全に演算データの流れが一方方向となって、回路全体をパイプライン化して演算のスループットを向上させる事ができる。
請求項2または3にかかる発明を用いる事により、ニュートンラフソン法の反復演算を回路に実装するにあたって、乗算回路の一部を省略して回路規模を小さくすると共に演算速度を向上させる。同時に、演算資源の利用の衝突を回避する事が出来、完全に演算データの流れが一方方向となって、回路全体をパイプライン化して演算のスループットを向上させる事ができる。
請求項4乃至7にかかる発明を用いる事により、初期値を表現する有意なビットを削減し、これを用いて演算する回路、特に乗算回路の一部を省略する事が可能となる。これにより、回路規模を小さくすると共に、演算速度を向上させる。
請求項8並びに9にかかる発明を用いる事により、反復計算の途中に表れる値を表現する有意なビットを削減し、これを用いて演算する回路、特に乗算回路の一部を省略する事が可能となる。これにより、回路規模を小さくすると共に、演算速度を向上させる。
請求項10にかかる発明を用いる事により、少ない回路資源で逆数演算と、開平値の逆数演算を、効率良く処理できる。
請求項11にかかる発明を用いる事で、従来のN/R法では、演算精度を向上させる為に、反復回数を追加して行なう必要があり、一回の反復で2回の乗算を行う必要があったものが、小規模な乗算器を追加することで演算精度を向上させる事が可能となり、回路規模を小さくすると共に演算速度を向上させる事が出来る。また、乗算器705を用いて、級数に乗ずる初期値104の有意なビットは少なく、乗算器705に要する回数が少なくてすむ。更に、乗算器に加えて階乗計算器を追加することで、演算時間を増やさずに演算精度を向上させることが可能となる。また、高次の項の値を表に組み入れて、容易に精度を向上させる応用が広がる。
請求項12にかかる発明を用いる事で、従来のN/R法では、演算精度を向上させる為に、反復回数を追加し、一回の反復につき2回の乗算を追加する必要があったものが、小規模な乗算器を追加するのみで演算精度を向上させる事が可能となり、回路規模を小さくすると共に演算速度を向上させる事が出来る。乗算器に加えて階乗計算器を追加することで、演算時間を増やさずに演算精度を向上させることが可能となる。また、乗算器803を用いて、級数に乗ずる初期値104の有意なビットは少なく、乗算器803に要する回路が少なくてすむ。これは、乗算器902、1002でも同様である。
請求項13にかかる発明を用いる事で、級数計算の一部、即ち乗算器や階乗計算器を表を格納したメモリに置き換えることが可能となり、回路規模を小さくすると共に演算速度を向上させる事が出来る。特に、級数計算を途中で打ち切りつつ、更に数ビット演算精度を向上させる場合には有用である。
請求項14にかかる発明を用いる事で、例えば12ビット精度の初期値を与えて24ビット精度の逆数を得ていたところへ、更に数ビット演算精度を向上させて、ガードビットを作り出すことが可能となる。
請求項15にかかる発明を用いる事で、例えば初期値に17ビットの精度の逆数を与えることで、容易に51ビットの精度の逆数を得ると共に、表を用いて2ビット以上演算精度を追加する事で、IEEE754の倍精度演算を行えるようになる。或いは、初期値に18ビットの精度の逆数を与えることで、容易に54ビットの精度の逆数を得ると共に、表を用いて更に演算精度を追加することで、IEEE754の倍精度演算において十分なガードビットを提供できる。
請求項16にかかる発明を用いる事で、例えば12ビット精度の初期値を与えて、容易に48ビットの精度に拡張すると共に、表を用いて5〜6ビットの演算精度を追加する事で、IEEE754の倍精度演算を行えるようになる。或いは、倍精度で逆数を求めて、これを単精度の被除数に乗ずる事で、除算全体の結果にIEEE単精度の演算規格に則った丸めを施す事が可能となる。
請求項17にかかる発明を用いる事で、例えば初期値に18ビットの精度の逆数を与えることで、容易に54ビットの精度の逆数を得て、IEEE754の倍精度演算において十分な逆数を得られる。
請求項18にかかる発明を用いる事で、例えば12ビット精度の初期値を与えて、48ビットの逆数を得て、これを単精度の被除数に乗じて、除算全体でIEEE単精度の規格に則った丸めを施すことが可能となる。或いは、14ビットの精度の初期値を与えてIEEE754の倍精度(53ビット精度)の演算を行う事が可能となる。
請求項19にかかる発明を用いる事で、従来のN/R法では、演算精度を向上させる為に、反復回数を追加し、一回の反復につき2回の乗算を追加する必要があったものが、小規模な乗算器を追加するのみで演算精度を向上させる事が可能となり、回路規模を小さくすると共に演算速度を向上させる事が出来る。乗算器に加えて階乗計算器を追加することで、演算時間を増やさずに演算精度を向上させることが可能となる。また、乗算器1906を用いて、級数に乗ずる初期値402の有意なビットは少なく、乗算器1906に要する回路が少なくてすむ。
請求項20にかかる発明を用いる事で、例えば12ビット精度の初期値を与えて、48ビットの逆数を得て、これを単精度の被除数に乗じて、除算全体でIEEE単精度の規格に則った丸めを施すことが可能となる。或いは、14ビットの精度の初期値を与えてIEEE754の倍精度(53ビット精度)の演算を行う事が可能となる。
請求項21にかかる発明を用いる事で、級数計算の一部、即ち乗算器や階乗計算器を表を格納したメモリに置き換えることが可能となり、回路規模を小さくすると共に演算速度を向上させる事が出来る。特に、級数計算を途中で打ち切りつつ、更に数ビット演算精度を向上させる場合には有用である。
請求項22にかかる発明を用いる事で、逆数計算と開平値逆数計算とで回路資源を共有し、少ない回路資源で2つ演算機能を実現できる。
請求項23にかかる発明を用いる事で、必要最低限の表の大きさ、すなわちメモリ容量を算出して、要求される演算精度の仕様を満たしつつ最小規模の回路を設計する事が可能となる。
請求項24にかかる発明を用いる事で、初期値計算に用いられる表をルックアップテーブルに格納し、回路資源に強い制約のあるPLD上にも逆数演算回路や除算回路を実装する事が可能となる。
請求項25にかかる発明を用いる事で、級数の値の表をルックアップテーブルに格納し、回路資源に強い制約のあるPLD上でも演算精度を容易に向上させる事が可能となる。
請求項26にかかる発明を用いる事で、乗算が連続し、あるいは乗算と加減算が交互に行われる本発明の回路の演算速度を向上させる事が出来る。

Claims (26)

  1. 除算を行なう際に与えられた除数より、その逆数の近似値を獲得して、これを初期値としてニュートンラフソン法の反復計算を一回以上行なって必要な精度の逆数を求めて、これを被除数に乗じて除算を行なう演算方式で、
    ニュートンラフソン法の反復計算を行なう回路を専用に設け、ニュートンラフソン法の反復計算の際に初期値を演算に必要な最低限の精度に丸めることによって下位ビットをゼロとし、このゼロに丸めた部分を扱う部分積生成部と乗算結果の上位ビットが0又は1の連続であるビット部分に関わる部分積生成部と乗算結果の下位ビットにおいて必要最低限の精度に不要なビット部分に関わる部分積生成部とを予め省略することによって反復計算に用いられる乗算回路中の部分積生成部の一部の実装を省くとともに、該乗算回路中の加算木において省略した該部分積生成部の生成する部分積の累算に係る回路を省略して回路規模を縮小した専用の乗算器を用いることを特徴とする演算方式。
  2. ニュートンラフソン法の反復計算の式を変形して差分を分離し、この差分の演算に必要な情報が少ないことを利用して、反復計算に用いられる乗算回路の一部を省略したことを特徴とする、請求項1に記載の演算方式。
  3. 開平計算を行なう際に与えられた引数より、その開平値の逆数の近似値を獲得して、これを初期値としてニュートンラフソン法の反復計算を一回以上行なって必要な精度の開平値の逆数を求めて、これを引数に乗じて開平計算を行なう演算方式で、ニュートンラフソン法の反復計算を行なう回路を専用に設け、ニュートンラフソン法の反復計算の際に初期値を演算に必要な最低限の精度に丸めることによって下位ビットをゼロとし、このゼロに丸めた部分を扱う部分積生成部と乗算結果の上位ビットが0又は1の連続であるビット部分に関わる部分積生成部と乗算結果の下位ビットにおいて必要最低限の精度に不要なビット部分に関わる部分積生成部とを予め省略することによって反復計算に用いられる乗算回路中の部分積生成部の一部の実装を省くとともに、該乗算回路中の加算木において省略した該部分積生成部の生成する部分積の累算に係る回路を省略して回路規模を縮小した専用の乗算器を用いることを特徴とする演算方式。
  4. ニュートンラフソン法による逆数の計算又は開平値の逆数の計算において、逆数計算で用いられる除数Rmと、その真の逆数値Yとそれを求めるニュートンラフソン法の反復計算の初期値Y0との対応、又は開平計算の引数R'mとその真の開平値の逆数値Y'と、それを求めるニュートンラフソン法の反復計算の初期値Y'0の対応があるとき、(この項において、以下は逆数計算に関して記述するが、以後開平値の逆数計算においては、YをY'、Y0をY'0で読み替えて適用する)、ニュートンラフソン法の初期値YcとしてY-≦Yx≦Y+δ+である事が求められるときに、δ-(但しδ-≧0)とδ+(但しδ+≧0)のうち絶対値の小さい方をδaと置き、引数Rmに対応して与えられたY0について、Ya≦Y0≦Y+δaである範囲で初期値Y0を表現するビットベクトルのうち特定のビットより下位ビットを全て0にする様に丸めてからニュートンラフソン法の演算を行い、反復計算に用いられる乗算の一部を省略する事を特徴とする、請求項1〜3いずれか一項に記載の演算方式。
  5. ニュートンラフソン法の初期値YzとしてY-≦Yz≦Y+が求められ、一方初期値Y0が与えられた時に、δ-(但しδ-≧0)とδ+(但しδ+≧0)のうち絶対値の小さい方をδbと置き、Y0+2m≦Yaの条件を満たす最大の整数mを求め、2(m-1)の位より以下を2mの位に切り上げて、2(m-1)の位も含めてこれより下位ビットを全て0に丸めた値を新たな初期値Y0としてニュートンラフソン法の演算を行い、反復計算に用いられる乗算の一部を省略する事を特徴とする、請求項1〜4いずれか一項に記載の演算方式。
  6. ニュートンラフソン法の初期値YxとしてY-≦Yz≦Y+δ+が求められ、一方初期値Y0が与えられた時に、δ-(但しδ-≧0)とδ+(但しδ+≧0)のうち絶対値の小さい方をδaと置き、Y−δk≦Y0−2mの条件を満たす最大の整数mを求め、2(m-1)の位を含めてこれより以下を切り捨てて、2(m-1)の位も含めてこれより下位ビットを全て0に丸めた値を新たな初期値Y0としてニュートンラフソン法の演算を行い、反復計算に用いられる乗算の一部を省略する事を特徴とする、請求項1〜4いずれか一項に記載の演算方式。
  7. ニュートンラフソン法の初期値YzとしてY−δ-≦Yx≦Y+δ+が求められ、一方初期値Y0が与えられた時に、δ-(但しδ-≧0)とδ+(但しδ+≧0)のうち絶対値の小さい方をδzと置き、Y−δz≦Y0+2m≦Y+δzを満たす最大の整数mを求め、2(m-1)の位で0捨1入を行い、2(m-1)の位も含めてこれより下位ビットを全て0に丸めた値を新たな初期値Y0としてニュートンラフソン法の演算を行い、反復計算に用いられる乗算の一部を省略する事を特徴とする、請求項1〜4いずれか一項に記載の演算方式。
  8. 逆数計算を行うニュートンラフソン法においてY−δ-≦Y0≦Y+δ+である初期値Y0が与えられた時に、δ-(但しδ-≧0)とδ+(但しδ+≧0)のうち絶対値の大きい方をδzと置き、2n≧δzである最低の整数nを求めて、ニュートンラフソン法の反復計算の中に現れる乗算Rm・Y0又は2の補数を用いた上に1.0の位を操作するβ=1−Rm・Y0の演算において、2(n+2)の位も含めてこれより上位のビットに関する演算を全て省略し、2(n+1)の位を含めてこれより下位のビットの演算のみを行って、2nの位におけるビットを符号ビットとして扱う符号付の数値を算出することを特徴とする請求項1、2、4〜6いずれか一項に記載の演算方式。
  9. 開平値の逆数計算を行うニュートンラフソン法においてY'−δ-≦Y'0≦Y'+δ+である初期値が与えられた時に、δ-(但しδ-≧0)とδ+(但しδ+≧0)のうち絶対値の大きい方をδaと置き、2p≧(δaa 2/2)である最低の整数pを求めて、ニュートンラフソン法の反復計算の中に現れる乗算R'm・(Y'p 2)又は2の補数表現を用いた上に1.0の位を操作する2β'=(1−R'm・(Y'0 2))の演算において、2(p+2)の位も含めてこれより上位のビットに関する演算を全て省略し、2(p+2)の位を含めてこれより下位のビットの演算のみを行って、2(p+2)の位におけるビットを符号ビットとして扱う符号付の数値を算出することを特徴とする請求項3〜6のいずれか一項に記載の演算方式。
  10. 逆数計算のニュートンラフソン法反復計算と開平値の逆数のニュートンラフソン法反復計算において、乗算Rm・Y0と乗算R'm・Y'0 2とを同一の乗算回路で処理し、同時に、乗算Y0・βとY'0とβ'とを同一の乗算回路で処理する事で、逆数計算と開平値の逆数計算に用いる演算回路を共通とする事を特徴とする請求項1〜9のいずれか一項に記載の演算方式。
  11. 初期値と除数の積を、1.0より減じた値を元に、級数計算を無限に行ない、これに初期値を乗じる事で逆数の演算精度を高めたことを特徴とする、請求項1、2、4〜10のいずれか一項に記載の演算方式。
  12. 初期値と除数の積を、1.0より減じた値を元に、有限項の級数計算を行ない、これに初期値を乗じる事で逆数の演算精度を高めたことを特徴とする、請求項1、2、4〜10のいずれか一項に記載の演算方式。
  13. 級数計算の一部の値を表としてメモリに格納し、初期値と除数の積を1.0より減じた値を表現するビット配列より抽出したビットフィールドの内容をインデックスとして表を索いた値を、級数計算の一部と置き換える事で逆数の演算精度を高めたことを特徴とする、請求項11又は12に記載の演算方式。
  14. 除算において、
    Figure 0003598096
    〔β=(1−Y0・Rm
    0は初期値、Rmは除数の仮数部〕
    の値を表としてメモリに格納し、初期値と除数の積を、1.0より減じた値を表現するビット配列より抽出したビットフィールドの内容をインデックスとして表より索いた値を用いて、
    Figure 0003598096
    に示される計算で逆数を得る、請求項11記載の演算方式。
  15. 除算において、
    Figure 0003598096
    の値を表としてメモリに格納し、初期値と除数の積を、1.0より減じた値を表現するビット配列より抽出したビットフィールドの内容をインデックスとして表より索いた値を用いて、
    Figure 0003598096
    に示される計算を行って逆数を求める、請求項11記載の演算方式。
  16. 除算において、
    Figure 0003598096
    の値を表としてメモリに格納し、初期値と除数の積を、1.0より減じた値を表現するビット配列より抽出したビットフィールドの内容をインデックスとして表より索いた値を用いて、
    Figure 0003598096
    に示される計算を行う、請求項11記載の演算方式。
  17. Y=Y0・(1+β+β2)
    に示される計算を行う、請求項12記載の演算方式。
  18. Y=Y0・(1+β+β2+β3)
    に示される計算を行う、請求項12記載の演算方式。
  19. 開平計算を行うに当たって
    Figure 0003598096
    [但しR'mは与えられた引数の仮数部、
    またY'0はR'mの開平値の逆数の近似値でニュートンラフソン法反復演算の初期値]
    の計算を行い、引き続き
    Figure 0003598096
    に示される級数計算を無限に、または第n次の項までの計算を行って演算精度を向上させる請求項3〜10のいずれか一項に記載の演算方式。
  20. 開平計算を行うに当たって
    Figure 0003598096
    [但しR'mは与えられた引数の仮数部、
    またY'0はR'mの開平値の逆数の近似値でニュートンラフソン法反復演算の初期値]
    の計算を行い、引き続き
    2=Y0・(1+β'+β'2+1.5β'3+2.5β'4+β'5)
    の計算を行うことを特長とする請求項3〜10のいずれか一項に記載の演算方式。
  21. 開平計算を行うに当たって
    1.5β'3+2.5β'4+β'5
    [但しR'mは与えられた引数の仮数部、
    またY'0はR'mの開平値の逆数の近似値でニュートンラフソン法反復演算の初期値]
    の値を表としてメモリに格納し、β'を表現するビット配列より抽出したビットフィールドの内容をインデックスとして表より索いた値を用いて、
    2=Y0・(1+β'+β'2+1.5β'3+2.5β'4+β'5)
    の計算を行って演算精度を向上させることを特徴とする請求項3〜10のいずれか一項に記載の演算方式。
  22. β値(但しYを初期値、Rを除数の仮数部としてβ=(1−Y・R)である)で表される級数計算を行う逆数計算又は、β’(但しR’を与えられた引数の仮数部、 またY’をR’の開平値の逆数の近似値でニュートンラフソン法反復演算の初期値としてβ’= (1−Y’ ・R’)/2である)で表される級数計算を行う開平値の逆数計算において、級数計算に供する回路の全てまたは一部を共用することを特長とする請求項11〜21のいずれか一項に記載の演算方式。
  23. 逆数計算を行うに際して、与えられた除数の仮数部を表現するビット配列をMSBの1ビットを除き3つのビットフィールドに分けて、そのうちMSB側のビットフィールドの内容をインデックスとしてメモリから2つの値を索き、これらと中間のビットフィールドの内容とを用いて一次近似を行なって初期値を計算する際に、除数の仮数部Rmが0.5≦Rm<1.0に正規化されている時に、
    Figure 0003598096
    [dは初期値として許される誤差、xmは0.5≦xa<1.0の範囲をとる]
    で示されるw(xn)でRmの定義域を割ったS0、即ちS0=0.5/w(xn)を求め、次にS0≦2Kを満たす最小の整数Kを求め、Rmの定義域を2K個の区分に均等割して、各区分で一次近似を行って初期値を得ることを特徴とする請求項1、2、3〜18のいずれか一項に記載の演算方式。
  24. 浮動小数点数系の逆算計算において与えられた除数、又は開平計算において与えられた引数の、仮数部を表現するビット列をMSBの1ビットを除き3つのビットフィールドに分けて、そのうちMSB側のビットフィールドの内容をインデックスとしてメモリから値を索き、これらと中間のビットフィールドの内容とを用いて一次近似を行なって初期値を計算するにおいて、
    ルックアップテーブル型のプログラマブルロジックデバイスに回路を実装し、ルックアップテーブルを小型のROMメモリとして用いて、これに、初期値計算に用いる表を格納して実装することを特徴とする、請求項1〜23のいずれか一項に記載の演算方式。
  25. 除算ないし逆数計算において、ルックアップテーブル型のプログラマブルロジックデバイスに演算回路を実装し、ルックアップテーブルを小型のメモリとして用い、これに級数計算の一部の値の表を格納することを特徴とする請求項13〜16のいずれか一項に記載の演算方式。
  26. 初期値計算、反復計算、1.0より初期値と除数の積を減じた値を用いた計算において、連続する加算と乗算の組み合わせに冗長表現の演算回路を用いて演算時間を短縮した、請求項1、2、4〜18、23〜25のいずれか一項に記載の演算方式。
JP2001531759A 1999-12-22 1999-12-22 ニュートンラフソン法を用いた演算方式 Expired - Fee Related JP3598096B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP1999/007241 WO2001046796A1 (fr) 1999-12-22 1999-12-22 Systeme de calcul utilisant la methode de newton-raphson

Publications (1)

Publication Number Publication Date
JP3598096B2 true JP3598096B2 (ja) 2004-12-08

Family

ID=14237660

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2001531759A Expired - Fee Related JP3598096B2 (ja) 1999-12-22 1999-12-22 ニュートンラフソン法を用いた演算方式

Country Status (4)

Country Link
US (1) US7191204B1 (ja)
JP (1) JP3598096B2 (ja)
AU (1) AU1798900A (ja)
WO (1) WO2001046796A1 (ja)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FI20011610A0 (fi) * 2001-08-07 2001-08-07 Nokia Corp Menetelmä ja laite jakolaskun suorittamiseksi
US20050289209A1 (en) * 2004-06-29 2005-12-29 Intel Corporation Method and system of achieving integer division by invariant divisor using N-bit multiply-add operation
US7657589B2 (en) * 2005-08-17 2010-02-02 Maxim Integrated Products System and method for generating a fixed point approximation to nonlinear functions
JP5108325B2 (ja) * 2007-02-15 2012-12-26 富士通株式会社 信号処理装置およびその補正方法
US8301680B2 (en) * 2007-12-23 2012-10-30 Intel Corporation Apparatus and method to compute reciprocal approximations
US8819094B2 (en) * 2009-06-10 2014-08-26 Synopsys, Inc. Multiplicative division circuit with reduced area
US8990278B1 (en) * 2011-10-17 2015-03-24 Xilinx, Inc. Circuitry for computing mathematical functions
US9904512B1 (en) * 2013-05-31 2018-02-27 Altera Corporation Methods and apparatus for performing floating point operations
US10146504B2 (en) * 2017-02-24 2018-12-04 Advanced Micro Devices, Inc. Division using the Newton-Raphson method
CN113407235B (zh) * 2021-06-28 2022-07-08 珠海一微半导体股份有限公司 一种基于硬件加速的运算电路系统及芯片

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6482229A (en) * 1987-09-25 1989-03-28 Nec Corp Reciprocal arithmetic circuit
JP2705162B2 (ja) * 1988-11-29 1998-01-26 松下電器産業株式会社 演算処理装置
US5245564A (en) * 1991-05-10 1993-09-14 Weitek Corporation Apparatus for multiplying operands
JPH0683587A (ja) * 1992-05-01 1994-03-25 Matsushita Electric Ind Co Ltd 乗算処理装置
JP3251071B2 (ja) * 1992-10-26 2002-01-28 松下電器産業株式会社 除算/開平演算方法と演算装置
US5341321A (en) * 1993-05-05 1994-08-23 Hewlett-Packard Company Floating point arithmetic unit using modified Newton-Raphson technique for division and square root
JP4313467B2 (ja) * 1998-06-23 2009-08-12 航 尾形 小容量メモリを用いた除算方式

Also Published As

Publication number Publication date
US7191204B1 (en) 2007-03-13
AU1798900A (en) 2001-07-03
WO2001046796A1 (fr) 2001-06-28

Similar Documents

Publication Publication Date Title
Mohan et al. Residue Number Systems
US6108682A (en) Division and/or square root calculating circuit
US5023827A (en) Radix-16 divider using overlapped quotient bit selection and concurrent quotient rounding and correction
JP3598096B2 (ja) ニュートンラフソン法を用いた演算方式
Patankar et al. Review of basic classes of dividers based on division algorithm
US5537345A (en) Mathematical function processor utilizing table information
De Dinechin Multiplication by rational constants
Bruguera Radix-64 floating-point divider
Schwarz et al. Power6 decimal divide
Ercegovac et al. Complex division with prescaling of operands
JP4313467B2 (ja) 小容量メモリを用いた除算方式
CN105573712B (zh) 用于计算重复迭代和的结果的装置、方法和存储介质
Wang et al. $(M, p, k) $-Friendly Points: A Table-Based Method to Evaluate Trigonometric Function
JPH1195982A (ja) 演算処理回路及び演算処理方法並びに演算処理システム
Bajger et al. Low-error, high-speed approximation of the sigmoid function for large FPGA implementations
JP3660075B2 (ja) 除算装置
Lewis Complex logarithmic number system arithmetic using high-radix redundant CORDIC algorithms
Liebig et al. Low-latency double-precision floating-point division for FPGAs
WO2021035230A2 (en) Methods and apparatus for quotient digit recoding in a high-performance arithmetic unit
Amaricai et al. SRT radix-2 dividers with (5, 4) redundant representation of partial remainder
EP1504338A1 (en) "emod" a fast modulus calculation for computer systems
Santhosh Kumar et al. Comparative analysis of Yavadunam Tavadunikrtya Varganca Yojayet Vedic multiplier for embedded DNN
Takagi Multiple-valued-digit number representations in arithmetic circuit algorithms
JP2790327B2 (ja) 剰余乗算回路および剰余乗算方法
Parhami Double-least-significant-bits 2's-complement number representation scheme with bitwise complementation and symmetric range

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20040218

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20040419

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20040721

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20040723

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20040901

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20040910

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20080917

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090917

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090917

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100917

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110917

Year of fee payment: 7

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110917

Year of fee payment: 7

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120917

Year of fee payment: 8

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130917

Year of fee payment: 9

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees