(57)【特許請求の範囲】
【請求項１】
最大で２Ｎ（Ｎは１以上の整数）ビットの精度で表される被除数Ｂを最大で２Ｎビットの精度で表される除数Ａで割って商を求める除算演算を実行する浮動小数点演算装置であって、
データを記憶するマルチポート記憶装置と、
２つの数字を掛けて積を求め、また２つの数字を加算して和を求める演算手段と、
除算演算を実行する反復手順を含む除算マイクロコードと、
除数の逆値の初期近似値を供給する逆値近似手段と、
前記浮動小数点演算装置を制御する制御装置とからなり、
前記除算マイクロコードが、
ニュートン・ラプソン法による、ｋ回目（ｋは１以上の整数）の反復計算におけるＡの逆値の近似値Ｘｋが、Ｘｋ＝Ｘｋ-1＋Ｘｋ-1（１−ＡＸｋ-1）で表される場合において、当該反復計算を前記近似値Ｘｋの精度がほぼＮビットになるまで繰り返すコードと、
ｋ＝ｎにおいて、前記近似値Ｘｋの精度がほぼＮビットになった場合において、次のｋ＝ｎ+1における反復計算において、上記式の両辺に被除数Ｂを乗算し、Ｙn＝ＢＸnとおいた式である、Ｙn+1＝Ｙn＋Ｘn（Ｂ−ＡＹn）から、上記商としてＹn+1を計算するコード
とからなり、
前記Ｙn+1の計算が、
前記ＢをＮビット精度で表した値と前記ＸnをＮビット精度で表した値Ｘn’との乗算を行って、Ｎビット精度の結果を得るステップ（ステップ１）と、
前記ステップ１の結果にＡを乗ずるステップ（ステップ２）と、
前記ステップ２の結果をＢから減じて、Ｎビット精度の結果を得るステップ（ステップ３）と、
前記ステップ３の結果に前記Ｘn’を乗ずるステップ（ステップ４）と、
前記ステップ４の結果に前記ステップ１の結果を加算するステップ
からなり、これにより、２Ｎビット×２Ｎビットの乗算を必要とせずに、上記商を２Ｎビットの精度で生成することからなる、浮動小数点演算装置。
【請求項２】
最大で２Ｎビットの精度で表されるある値Ａの平方根を求める開平算演算を実行する浮動小数点演算装置であって、
データを記憶するマルチポート記憶装置と、
２つの数字を掛けて積を求め、また２つの数字を加算して和を求める演算手段と、
開平算演算を実行する反復手順を含む開平算マイクロコードと、
前記ある値Ａの平方根の逆値の初期近似値を供給する逆値近似手段と、
前記浮動小数点演算装置を制御する制御装置とからなり、
前記開平算マイクロコードが、
ニュートン・ラプソン法による、ｋ回目（ｋは１以上の整数）の反復計算におけるＡの平方根の逆値の近似値Ｘｋが、Ｘｋ＝Ｘｋ-1＋Ｘｋ-1／２×（１−ＡＸｋ-1２）で表される場合において、当該反復計算を前記近似値Ｘｋの精度がほぼＮビットになるまで繰り返すコードと、
ｋ＝ｎにおいて、前記近似値Ｘｋの精度がほぼＮビットになった場合において、次のk＝n+1における反復計算において、上記式の両辺に被除数Ａを乗算し、Ｙn＝ＡＸnとおいた式である、Ｙn+1＝Ｙn＋Ｘn／２×（Ａ−Ｙn２）から、上記平方根としてＹn+1を計算するコード
とからなり、
前記Ｙn+1の計算が、
前記ＡをＮビット精度で表した値と前記ＸnをＮビット精度で表した値Ｘn’との乗算を行って、Ｎビット精度の結果であるＹｎ’を得るステップ（ステップ１０）と、
前記Ｙｎ’を２乗するステップ（ステップ２０）と、
前記ステップ２０で得られた結果を前記Ａから減じて、Ｎビット精度の減算結果を得るステップ（ステップ３０）と、
前記ステップ３０の減算結果に前記Ｘn’を乗じ、さらに１／２を乗じるステップ（ステップ４０）と、
前記ステップ４０の結果に前記ステップ１０の結果を加算するステップ
からなり、これにより、２Ｎビット×２Ｎビットの乗算を必要とせずに、上記平方根を２Ｎビットの精度で生成することからなる、浮動小数点演算装置。
【請求項３】
前記ステップ１において、前記ＢをＮビット精度で表した値が、前記Ｂの先行するＮビットで表される、請求項１の浮動小数点演算装置。
【請求項４】
前記ステップ１０において、前記ＡをＮビット精度で表した値が、前記Ａの先行するＮビットで表される、請求項２の浮動小数点演算装置。
【請求項５】
前記マルチポート記憶装置がＮビット幅のデータを記憶し、
前記演算手段が、
前記マルチポート記憶装置と関連して動作するよう接続され、２つのＮビット数を掛けて積を求める乗算器と、
前記乗算器と関連して動作するよう接続され、前記積を２Ｎビットに丸める第１の丸めインクリメンタと、
前記第１の丸めインクリメンタと関連して動作するよう接続され、前記積の第１のＮビットを記憶する第１の高部分ラッチと、
前記第１の丸めインクリメンタと関連して動作するよう接続され、前記積の第２のＮビットを記憶する第１の低部分ラッチと、
前記第１の高部分ラッチ及び第１の低部分ラッチと関連して動作するよう接続され、前記第１の高部分ラッチ及び第１の低部分ラッチの一方を選択し、前記積の第１及び第２のＮビットの一方を前記マルチポート記憶装置に記憶する第１のマルチプレクサとからなる、請求項１乃至４のいずれかの浮動小数点演算装置。
【請求項６】
前記演算手段がさらに、
前記マルチポート記憶装置と関連して動作するよう接続され、前記マルチポート記憶装置から受信した第１及び第２のＮビットの加数を位置合わせする位置合わせシフタと、
前記位置合わせシフタと関連して動作するよう接続され、第１及び第２のＮビットの加数を加算して和を求める加算器と、
前記加算器と関連して動作するよう接続され、前記和を２Ｎビットに丸める第２の丸めインクリメンタと、
前記第２の丸めインクリメンタと関連して動作するよう接続され、前記和の第１のＮビットを記憶する第２の高部分ラッチと、
前記第２の丸めインクリメンタと関連して動作するよう接続され、前記和の第２のＮビットを記憶する第２の低部分ラッチと、
前記第２の高部分ラッチ及び第２の低部分ラッチと関連して動作するよう接続され、前記第２の高部分ラッチ及び第２の低部分ラッチの一方を選択し、前記和の第１及び第２のＮビットの一方を前記マルチポート記憶装置に記憶するマルチプレクサからなる、請求項５の浮動小数点演算装置。
【請求項７】
前記マルチポート記憶装置がＮビット幅のデータを記憶し、
前記演算手段が、
前記マルチポート記憶装置と関連して動作するよう接続され、２つの数を掛けて積を求める乗算器と、
前記マルチポート記憶装置と関連して動作するよう接続され、前記積の指数に従って加数の位置合わせを行う位置合わせシフタと、
前記乗算器及び前記位置合わせシフタと関連して動作するよう接続され、前記積と前記位置合わせした加数を加算して結果を求める加算器と、
前記加算器と関連して動作するよう接続され、前記結果を２Ｎビットに丸める丸めインクリメンタと、
前記丸めインクリメンタと関連して動作するよう接続され、前記結果の第１のＮビットを記憶する高部分ラッチと、
前記丸めインクリメンタと関連して動作するよう接続され、前記結果の第２のＮビットを記憶する低部分ラッチと、
前記高部分ラッチ及び低部分ラッチと関連して動作するよう接続され、前記高部分ラッチ及び低部分ラッチの一方を選択し、前記結果の第１及び第２のＮビットの一方を前記マルチポート記憶装置に記憶するマルチプレクサとからなる、請求項１乃至４のいずれかの浮動小数点演算装置。
【請求項８】
前記浮動小数点演算装置がさらに、除数の逆値について指数を調整する指数調整装置を含む、請求項１または３の浮動小数点演算装置。
【請求項９】
前記浮動小数点演算装置がさらに、前記ある値Ａの平方根の逆値について指数を調整する指数調整装置を含む、請求項２または４の浮動小数点演算装置。
【発明の詳細な説明】
【０００１】
【産業上の利用分野】
本発明は、浮動小数点演算装置を有するデータ処理システムに関するものであり、より詳しくは、浮動小数点除算及び開平算演算を行うための方法及び装置に関するものである。
【０００２】
【従来の技術】
浮動小数点演算装置はずっと以前から、除算及び開平算演算を行うことができるようになっている。データ処理システムにおいては、除算及び開平算演算を行うために専用の除算及び開平算回路が用いられてきていたが、乗算及び加算に関する回路を用いてこれらの演算を行うというのが現在の傾向である。乗算器と加算器を用いて除算又は開平算を行うデータ処理システムの例は、欧州特許出願第８９３１３４０２．３号（ＥＰＯ公報Ａ２第０３７７９９２号）、欧州特許出願第８５１０６９３８．５号（ＥＰＯ公報Ａ２第０１６６９９９号）、及び欧州特許出願第８２１１１９２９．４号（ＥＰＯ公報Ａ１第０１１１５８７号）に見られる。
【０００３】
浮動小数点演算装置の設計から、専用の除算及び開平算回路を排除することによって、データ処理システムの設計者は、コストを低減できるだけでなく、基板又はチップのスペースをも節約することができる。これらのデータ処理システムの場合、除算及び開平算演算は、浮動小数点演算装置の乗算器及び加算器を用いて行われる。これにより、設計時間、設計のための労力及び設計エリアを、より頻繁に用いられる加算器及び乗算器のハードウェアに集中させることができる。データ処理システムにおいて行われる演算は、その約１０分の１しか除算又は開平算演算には関与していないと推定されているから、こうした設計を行うことが可能である。しかしながら、このアプローチに関する厄介な問題として、除算及び開平算演算の計算に、加算及び乗算演算を行うよりもかなり長い時間がかかるということがある。計算時間におけるこの相違は、加算及び乗算演算が直接計算されるものであるのに対し、除算及び開平算演算は反復手順により間接的に計算されるものであるという事実に基づいている。
【０００４】
除算に関する反復手順は、それらの反復演算子に応じて、異なるクラスに分類することができる。あるクラスでは、反復演算子として減算が用いられ（例えば非回復型除算）、別のクラスでは反復演算子として乗算が用いられる。反復演算子として乗算を用いる反復手順が好ましいものであるが、それは結果がかなり速く計算されるためである。より詳しく述べると、除算の場合にこうした反復手順は除数の逆値を求めるために用いられ、次いで商を求めるために、得られた逆値と被除数の乗算が行われる。反復演算子として乗算を用いて逆値を求めるための、２つの周知の反復法が存在する。即ち級数展開とニュートン−ラプソン法である。これらの反復法のうちでは、ニュートン−ラプソン法が最も頻繁に利用される。除算のための反復手順についての一般的な議論は、Ｗａｓｅｒ及びＦｌｙｎｎ，  ”Ｉｎｔｒｏｄｕｃｔｉｏｎ  ｔｏ  Ａｒｉｔｈｍｅｔｉｃ  Ｆｏｒ  Ｄｉｇｉｔａｌ  Ｓｙｓｔｅｍｓ  Ｄｅｓｉｇｎｅｒｓ”，  Ｎｅｗ  Ｙｏｒｋ，  １９８２に見られる。
【０００５】
ニュートン−ラプソン法は、浮動小数点乗算器及び浮動小数点加減算器を有する高速コンピュータにとって、特に魅力的な計算方法である。ニュートン−ラプソン法は除算だけでなく、開平算演算にも有用である。各反復毎に、ニュートン−ラプソン法は結果へと二次的に収束する。
【０００６】
【発明が解決しようとする課題】
従来、ニュートン−ラプソン反復は、除算の場合には分母の逆値、また開平算の場合には逆平方根の、近似値を求めるために用いられている。その後、引き続いての各ニュートン−ラプソン反復毎に、逆値の精度が向上される。所望の精度に達したならば、除算の場合には逆値と分子が乗算され、また開平算の場合には逆値と入力引数が乗算される。この従来のアプローチは、結果の計算精度が、加算及び乗算に関連するハードウェアによってもたらされる精度を越えない場合には非常にうまく機能するが、より高い精度が必要とされる場合には、この従来のアプローチは不十分である。即ち、より高い精度で結果を求めるために最終的な乗算（最終的な逆値の分子倍）を実行するためには、法外な長さの時間を要する。
【０００７】
従って、従来のアプローチよりも大幅に速い速度で動作する、除算及び開平算演算の結果をより高い精度で求めるための、改良された技術に対する明らかな必要性が存在している。
【０００８】
【課題を解決するための手段】
一般的に言えば、本発明によれば、結果の精度の数だけ乗算を行うことを必要としない、修正された形態のニュートン−ラプソン法を用いて、除算及び開平算の結果が高精度で得られる。
【０００９】
本発明のある実施例では、乗算装置と加算装置を有する演算処理システムによって、浮動小数点除算及び開平算演算が行われる。除算及び開平算命令を実行するために、除算及び開平算マイクロコードは、従来の形態のニュートン−ラプソン法と修正形態のニュートン−ラプソン法の、両者に基づく反復手順を組み込んでいる。修正形態のニュートン−ラプソン法を用いることによって、本発明は、除算及び開平算の結果を高精度で計算する速度について、大幅な改善を達成する。本発明はまた、ハードウェアによる具体化を実用的なものとするが、それは２Ｎ×２Ｎ幅の乗算器なしでも、ほぼ２Ｎビットの精度で近似結果を得ることができるためである。
【００１０】
装置としては、本発明は浮動小数点演算装置に関連している。本発明によれば、浮動小数点演算装置は、除数による被除数の浮動小数点除算を行って概算商を求め、或いはある値の浮動小数点開平算演算を行って概算平方根を求めることができる。この装置には、データを記憶するためのマルチポート記憶装置と、２つの数を乗算して積を求め、２つの数を加算して和を求めるための演算手段と、除算及び開平算演算を行うための反復手順を含む除算及び開平算マイクロコードと、除数の逆値と上記ある値の平方根の逆値の初期近似値を含む逆値近似手段と、浮動小数点装置を制御する制御装置とが含まれる。除算及び開平算マイクロコードに含まれる反復手順が除算及び開平算演算を実行し、２Ｎ×２Ｎビットの乗算を必要することなしに、ほぼ２Ｎビットの精度を有する概算商及び概算平方根が得られる。
【００１１】
方法としては、本発明は、データ処理システム中で除算又は開平算演算を実行し、結果を高精度で求める。最初は、逆値の近似値が求められる。この逆値の近似値は、例えば逆値近似テーブルから求めることができる。次いで、この逆値の精度を高めるために、従来のニュートン−ラプソン法が１回以上反復される。その後、修正されたニュートン−ラプソン法を用いてさらなる反復が行われ、高精度の結果が得られる。
【００１２】
【実施例】
本発明は添付図面と関連させて以下の詳細な説明からより容易に理解される。添付図面中における同様の参照符号は、同様の構成要素を示すために用いられている。
【００１３】
本発明は、浮動小数点演算装置に用いられることを意図したものである。本発明によれば、浮動小数点演算装置は、ハードウェアによってもたらされる精度の少なくとも２倍の精度で結果を求めることができる。好ましくは、本発明はＮビットの近似値（半精度）から２Ｎビットの近似値（全精度）を求める。例えば、ハードウェアが倍精度の結果を求めることができる場合には、本発明は４倍の精度の結果をもたらす。本発明は、多倍精度の数についても等しく適用可能である。多倍精度の数とは、４倍の精度を越える精度の数である。これらの数は、単精度浮動小数点アレイに記憶することができる。１つの実施形態では、このアレイ内の最初のワードは、その絶対値が仮数内のワード数を表す、整数値の浮動小数点数である。この最初のワードの符号は、多精度数の符号である。次のワードは、基数の指数を表す整数値の浮動小数点数である。１０進小数点は、最初の仮数ワードに続いている。こうした数に対する数学的演算を施すために、既知のソフトウェアライブラリルーチンを用いることができる。例えば、Ｂａｉｌｅｙ，  ”Ａ  Ｐｏｒｔａｂｌｅ  Ｈｉｇｈ  Ｐｅｒｆｏｒｍａｎｃｅ  Ｍｕｌｔｉｐｒｅｃｉｓｉｏｎ  Ｐａｃｋａｇｅ”，  ＲＮＲ  Ｔｅｃｈｎｉｃａｌ  Ｒｅｐｏｒｔ  ＲＮＲ−９０−０２２，  ＮＡＳ  Ａｐｐｌｉｅｄ  Ｒｅｓｅａｒｃｈ  Ｂｒａｎｃｈ，  ＮＡＳＡ  Ａｍｅｓ  Ｒｅｓｅａｒｃｈ  Ｃｅｎｔｅｒ，  Ｍｏｆｆｅｔｔ  Ｆｉｅｌｄ，  Ｃａｌｉｆｏｒｎｉａ，  Ｍａｙ  １９９２を参照のこと。
【００１４】
本発明の実施例について、図１から図６を参照して以下に述べる。しかしながら、本発明はこれらの限定的な実施例の範囲を越えるものであり、これらの図に関して本明細書に示す詳細な説明は例示的なものであることを、当業者は容易に理解するであろう。
【００１５】
図１は、浮動小数点演算装置１００の第１の実施例を示す。この実施例は、倍−倍フォーマットにおいて４倍精度の数を記憶する。この演算装置１００には、乗算及び加算のための別個の回路が含まれている。
【００１６】
マルチポートレジスタファイル１０２には、読み取りポートＡ，  Ｂ，  Ｃ，  Ｄ及びＥと、書き込みポートＦ，  Ｇ，  Ｈ及びＩが含まれている。このレジスタファイル１０２は、Ｎビットワードサイズのデータを記憶する。乗算装置１０４は、被乗数と乗数のそれぞれを受け取るために、読み取りポートＡ及びＢに結合されている。この乗算装置１０４は、桁上げ伝播加算器（ＣＰＡ）１０６に対して高部分積と低部分積を供給する。ＣＰＡ１０６は、この高部分積と低部分積を加算する。ＣＰＡ１０６によって得られた和は、次いで丸めインクリメンタ１０８によって２Ｎビットに丸められる。
【００１７】
丸められた結果は２つのＮビット部分から構成され、これらはそれぞれ、高積ラッチ１１０と低積ラッチ１１２によって保持される。マルチプレクサ１１４が、ラッチされたＮビット部分をラッチ１１０，  １１２から受信する。マルチプレクサ１１４の出力はレジスタファイル１０２の書き込みポートＦに接続されており、乗算演算の２つのＮビット部分は、高部分について１回と低部分について１回の、２回の書き込み演算によってレジスタファイル１０２に記憶することができる。
【００１８】
従って、読み取りポートＡ及びＢは、乗算装置１０４に被乗数と乗数を供給する。乗算の結果は２つのＮビット値からなり、これらは丸められて、一時記憶のためにレジスタファイル１０２の書き込みポートＦに送られる。
【００１９】
レジスタファイル１０２の他のポートは、浮動小数点演算装置１００の加算回路に関連している。位置合わせシフタ１１６が、レジスタファイル１０２の読み取りポートＣ及びＤから加数を受信して、加算のためにそれらを位置合わせする。次いで桁上げ伝播加算器（ＣＰＡ）１１８が、位置合わせされた値を加算し、和を正規化シフタ１２０に供給する。正規化された和は丸めインクリメンタ１２２によって２Ｎビットに丸められ、丸められた和が得られる。この丸められた和の第１のＮビットは高部分ラッチ１２４に保持され、丸められた和の第２のＮビットは低部分ラッチ１２６に保持される。マルチプレクサ１２８は、ラッチされた和をラッチ１２４，  １２６から入力として受信し、このラッチされた和を書き込みポートＧへと２回ので送り返す。
【００２０】
制御装置１３０は、実行すべき命令を受信し、図１に示す種々の回路に必要な制御信号１３２を供給する。従って、制御装置１３０は乗算及び加算回路を制御して命令を実行する。
【００２１】
乗算及び加算回路を用いて除算及び開平算命令を適切に実行するよう浮動小数点演算装置１００を構成するために、制御装置１３０は除算及び開平算マイクロコード１３４にアクセス可能である。除算及び開平算マイクロコード１３４内に含まれる反復手順については、以下で詳述する。この反復手順は逆数又は逆平方根の初期予想又は近似から開始されるので、逆値及び逆平方根近似テーブル１３６が、浮動小数点回路１００内に含まれている。これらの近似値はレジスタファイル１０２に供給され、乗算回路又は加算回路の何れかにおいて用いることができるようになる。
【００２２】
表１は逆値近似テーブルの幾つかの例（１０進フォーマット）を示し、表２は逆平方根近似テーブル関して同じものを示す。
【００２３】
【表１】
0003626769.tif 000002
【００２４】
【表２】
0003626769.tif 000003
【００２５】
実際の近似テーブルには、ここで参照することによってその内容を本明細書に取り入れる欧州特許出願第８９３１３４０２．３号（ＥＰＯ公報Ａ２第０３７７９９２号）の補遺Ａに示されるものと極めてよく似た、１６進数の概念によるさらに多くの項目が含まれる。
【００２６】
いずれにせよ、近似テーブル１３６に記憶された近似値は、所望の逆値の最初の数ビットだけしか提供しない。可能性のある全浮動小数点数についてのテーブルは非実用的な大きさになるため、指数調整器１３８が設けられて、指数を抽出し調整するようになっている。この指数調整器１３８は、書き込みポートＩと読み取りポートＥのそれぞれを介して、レジスタファイル１０２にデータを記憶し、またそこからデータを得る。浮動小数点数の指数フィールドと仮数フィールドを別個に扱うことによって、近似テーブルを扱いやすいサイズで構築することができる。除算の場合には、仮数ビットを用いて近似テーブル１３６から適切な項目が選択され、指数調整器１３８は指数を抽出し、その負数を取ることによって調整を加える。開平算の場合も、やはり仮数を用いて近似テーブル１３６から適切な項目が選択されるが、指数調整はより複雑である。指数が偶数の場合は、指数調整器１３８は指数を１／２に減少させる。指数が奇数の場合には、指数調整器１３８はその指数を、その指数から１少ない値の１／２に修正する。何れの場合にも、近似を用いる前に、調整された指数は反復手順と組み合わせられる。
【００２７】
図２は、本発明の第２の実施例による浮動小数点演算装置２００のブロック図である。図２に示された浮動小数点演算装置２００は、乗算加算融合（ＭＡＦ）設計である。即ち乗算装置と加算装置は融合されており、乗算及び加算は１つの原子演算として行うことができる。
【００２８】
マルチポートレジスタファイル２０２には、読み取りポートＡ，  Ｂ，  Ｃ及びＤと、書き込みポートＥ，  Ｆ及びＧが含まれている。乗算装置２０４は、被乗数と乗数を読み取りポートＡ及びＢから受信し、その積を生成する。位置合わせシフタ２０６は、読み取りポートＤから加数を受信し、乗算装置２０４からの信号２０７を用いて、この積の指数に基づいて加数の位置合わせを行う。
【００２９】
３：２桁上げ保存加算器２０８は、乗算装置２０４及び位置合わせシフタ２０６から入力を受信し、少なくとも２Ｎビットの出力を桁上げ伝播加算器２１０に供給する。本発明は、桁上げ保存加算器２０８からの先行する２Ｎビットを用いることだけを必要とする。桁上げ伝播加算器２１０は２Ｎビットの結果を生成し、これは次いで正規化シフタ２１２によって正規化され、丸めインクリメンタ２１４によって２Ｎビットの結果に丸められる。丸められた結果は次いで、２つのＮビット部分として、高部分ラッチ２１６及び低部分ラッチ２１８のそれぞれに供給される。マルチプレクサ２２０は、ラッチされたＮビット部分をラッチ２１６，  ２１８から受信する。マルチプレクサ２２０の出力は、レジスタファイル２０２の書き込みポートＦに接続されており、高部分について１回と低部分について１回の２回の書き込み演算でもって、これら２つのＮビット部分をレジスタファイル２０２に記憶することができる。
【００３０】
制御装置２２２は、命令を受信し実行する。より詳しくは、制御装置２２２は種々の制御信号を用いて、浮動小数点演算装置の回路を制御する。制御装置２２２で受信された命令が除算命令又は開平算命令の何れかである場合、制御装置２２２は除算及び開平算マイクロコードに２２６にアクセスし、乗算及び加算回路を用いて、除算及び開平算演算を行うのに必要とされる反復手順を実行する。
【００３１】
必要とされる反復手順については後で詳述するが、この反復手順が必要とすることは、逆値及び逆平方根近似テーブル２２８に記憶されている逆値又は逆平方根値についての初期近似又は予想を用いることである。上記の表１及び表２には、逆値近似テーブル及び逆平方根近似テーブルの例が含まれている。適切な近似値は制御装置２２２によって（制御信号２２４を介して）選択されて、書き込みポートＧに供給され、浮動小数点演算装置２００はマイクロコード２２６によって要求される反復手順を実行することができるようになる。指数調整器２３０はレジスタファイル２０２の読み取りポートＣ及び書き込みポートＥに接続されており、上述した指数調整器１３８と同様に機能する。
【００３２】
第１と第２の実施例（図１及び図２）は、性能面の理由から、周知の回路を用いることによって、いっそう強化することが可能である。例えば、パイプライン処理を容易にするため、レジスタファイルと乗算装置又は位置合わせシフタの間にさらにラッチを追加することができる。また、レジスタファイル１０２と乗算装置１０４及び位置合わせシフタの間にマルチプレクサを挿入して、乗算装置又は位置合わせシフタに対して入力をより迅速に供給することもできる。しかし、これらの及びその他の数多くの周知の強化は本発明の一部をなすものではなく、主としてハードウェアに関する設計上の選択である。この理由から、ここではこれ以上解説しない。
【００３３】
さらに、第１及び第２の実施例（図１及び図２）は、逆値近似テーブル１３６，  ２２８を有するものとして記述されているが、逆値又は逆平方根の初期予想値又は近似値は、他の手段によって得ることもできる。例えば、当該技術において既知のように、こうした近似値は、近似値を求めるために使用される係数を得るための多項式を用いて求めることができる。例えば、Ｃｏｄｙ  ａｎｄ  Ｗａｉｔｅ，  ”Ｓｏｆｔｗａｒｅ  Ｍａｎｕａｌ  ｆｏｒ  ｔｈｅ  Ｅｌｅｍｅｎｔａｒｙ  Ｆｕｎｃｔｉｏｎｓ”，  ｐｐ．１７−２７，  １９８０及びＡ．  Ｋａｒｐ，  ”Ｓｐｅｅｄｉｎｇ  ｕｐ  Ｎ−Ｂｏｄｙ  Ｃａｌｃｕｌａｔｉｏｎｓ  ｏｎ  Ｍａｃｈｉｎｅｓ  ｗｉｔｈｏｕｔ  Ｈａｒｄｗａｒａ  Ｓｑｕａｒｅ  Ｒｏｏｔ”，  ＩＢＭ  Ｓｃｉｅｎｔｉｆｉｃ  Ｃｅｎｔｅｒ，  Ｄｏｃ．  Ｎｏ．  Ｇ３２０−３５６５を参照のこと。
【００３４】
図３は、制御装置１３０，  ２２２によって実行又は制御される基本手順のフローチャートを示している。制御装置１３０，  ２２２が命令を受信すると、浮動小数点演算装置内では種々の演算が行われる。最初に命令はデコードされ（３０２）、そのオペランドが読み取られる（３０４）。次に、特別な場合の存否に基づいて判定が行われる（３０６）。オペランドが正規の数でなければ、特別な場合が存在することになる。オペランドが正規の数でなければ、演算はＩＥＥＥ標準規格７５４−１９８５に基づいて「調整」され（３０８）、このフロー制御はその数が当初から正規であったかのようにして継続される。例えば、数のうちの１つが、０．０２×１０−３である場合は、それを０．２×１０−４に「調整」（この場合、正規化）してから、処理が続行される。
【００３５】
次に、命令が除算命令であるか否かに基づく判定が行われる（３１０）。命令が除算命令であれば、制御装置１３０，  ２２２は除算マイクロコード１３４，  ２２６を実行する（３１２）。除算マイクロコード１３４，  ２２６の実行が完了すると、制御フローはステップ３０２に戻り、次の命令をデコードする。
【００３６】
ステップ３１０における判定によって、その命令が除算命令でないということが判明したならば、その命令が開平算命令であるか否かに基づく判定が行われる（３１４）。その命令が開平算命令であれば、制御装置１３０，  ２２２は開平算マイクロコード１３４，  ２２６を実行し、その後制御フローをステップ３０２まで戻し、次の命令のデコードを行う。一方、命令が開平算命令ではないと判定された場合には（３１４）、乗算演算３１８及び／又は加算演算３２０が、図１及び図２に示す乗算装置１０４，  ２０４及び加算器１１８，  ２０８によって従来のようにして実行される。その結果はその後、一時記憶のためにレジスタファイル１０２，  ２０２に書き込まれる（３２２）。
【００３７】
図４は、除算及び開平算マイクロコード１３４，  ２２６によって実行される基本手順のフローチャートである。この手順は、近似逆値を求める（４０２）ことによって開始される。除算の場合の除数、或いは開平算の場合の平方根自体の何れかについての初期逆値が、逆値及び逆平方根近似テーブル１３６，  ２２８に記憶されている。これらのテーブル１３６，  ２２８の例は、上記した表１及び表２に含まれている。制御装置１３０，  ２２２は、除算又は開平算命令を受信すると、逆値及び逆平方根近似テーブル１３６，  ２２８にアクセスして、近似逆値を求める（４０２）。例えば、１を０．９で割る命令を受信した場合には、制御装置１３０，  ２２２は、除数を索引として用いてテーブル１３６，  ２２８にアクセスして、値１．１１を検索する。
【００３８】
次にこの手順は、ニュートン−ラプソン法のｎ回の反復を実施して（４０４）、逆値の精度を高める働きをする。こうしたｎ回の反復は、当業者には既知の、従来形式のニュートン−ラプソン法を用いる。逆値の精度の向上は、ニュートン−ラプソン法を用いることによって、幾何学的に収束する。ニュートン−ラプソン法の最初のｎ回の反復が実行されたならば、最後の、即ち（ｎ＋１）回目の反復は、修正ニュートン−ラプソン法を用いて実行される（４０６）。この最後の反復は、結果、即ち商又は平方根の値を直接に生成する働きをする。
【００３９】
本発明の利点は、最終的な反復が２つの半精度数を掛ける働きをするという点にあるが、これに対して従来の技術では、従来の場合には逆値だけしかもたらさないニュートン−ラプソン法の最後の反復以外に、別個のステップとして２つの全精度数の乗算を行うことが必要とされる。
【００４０】
商又は平方根を得るために本発明によって用いられる手順は、乗算演算からの精度の種々の組み合わせを含む。こうした精度の組み合わせの幾つかを表３に示す。
【００４１】
【表３】
0003626769.tif 000004
【００４２】
表３において、表記法は次の通りである。Ａ及びＢは２Ｎ桁の全精度数であり、ａ及びｂはＮ桁の半精度数である。添え字（ｋｄ）は、結果中における半精度ワードの数（ｋ）を表しており、（ｄ）は、ハードウェアの精度を表している。例えばＶｄはハードウェアで計算することが可能であり、Ｕ２ｄはハードウェアで利用可能な場合もあるが、もし利用できなければソフトウェア（後述）が単−単表現を用いて同じ結果を得ることができる。表３に含まれるコスト予想値は、ハードウェア（Ｑｈ）及びソフトウェア（Ｑｓ）において行われた４倍精度の結果を返す倍精度演算に関するものである。さらに、数百桁までの従来の乗算演算（Ｃ）、及び数百桁を超える数の高速フーリエ変換乗算（Ｆ）に関するコスト予想値が含まれている。これらの相対コストは、単位時間を要すると仮定される、半精度数と半精度数の乗算に対してのものである。
【００４３】
除算及び開平算マイクロコード１３４，  ２２６に関する演算については、以下で別々に詳述する。除算命令を実施するためには除算マイクロコードが実行され、開平算命令を実施するためには開平算マイクロコードが実行される。
【００４４】
まず以下では、除算マイクロコードによって実行される演算について、除算マイクロコードによって実行される詳細な演算のフローチャートである図５に関して述べる。この除算マイクロコードは、本発明の利点を得るために、従来のニュートン−ラプソン法と修正ニュートン−ラプソン法の両方を組み込んでいる。
【００４５】
除算を行うために、ニュートン−ラプソン法ではまず、除数の逆値が求められ、次いで得られた逆値と被除数が乗算される。この除算プロセスは、次式で表現することができる。
【００４６】
【数１】
0003626769.tif 000005
【００４７】
一般に、ニュートン−ラプソン法による値（Ａ）の逆値に関する各反復は、次式で表すことができる。
【００４８】
【数２】
0003626769.tif 000006
【００４９】
高精度計算の最初のｎ回の反復（即ち最後の反復を除く全反復）は、従来行われていたようにして、上記の式を用いて実行される（４０４）。各反復には、表１に示した如き逆値テーブルに基づき除数の逆値に関する初期予想値を求める演算（５０２）と、この予想値に関する残留誤差を求める演算（５０４）と、及び残留誤差及び既存の予想値に基づいて予想値の精度を高める演算（５０６）とが含まれている。
【００５０】
特定の精度で結果を得るのに必要な反復回数は、初期予想値の精度によって決まる。例えば、逆値テーブルからの初期予想値が８ビットまで正確であり、結果が１２８ビットである場合には、全部で４回の反復が必要になる。この場合、最初の３（即ちｎ）回の反復は従来のニュートン−ラプソンを用い、最後の４回目の反復は修正ニュートン−ラプソン法を用いる。精度は各反復毎に倍になるので、精度がＮビット以上であることが判定されたならば（５０８）、２Ｎビットの精度で結果を得るのに必要な反復はあと１回だけである。上記の例に関しては、予想値の精度が６４ビット以上であれば、従来のニュートン−ラプソン法の反復は中止することができる。
【００５１】
好ましくは、近似値の正確度が基数フォーマットより劣る（即ち＜Ｎ）限りにおいて、初期反復ではハードウェア加算及び乗算が用いられる。この正確度を越える反復の各々では、近似の正確さと一致させるために、桁上げされる桁数は倍にされる。Ｂａｉｌｅｙ，  ”Ａ  Ｐｏｒｔａｂｌｅ  Ｈｉｇｈ  Ｐｅｒｆｏｒｍａｎｃｅ  Ｍｕｌｔｉｐｒｅｃｉｓｉｏｎ  Ｐａｃｋａｇｅ”，  ＲＮＲ  Ｔｅｃｈｎｉｃａｌ  Ｒｅｐｏｒｔ  ＲＮＲ−９０−０２２，  ＮＡＳ  Ａｐｐｌｉｅｄ  Ｒｅｓｅａｒｃｈ  Ｂｒａｎｃｈ，  ＮＡＳＡ  Ａｍｅｓ  Ｒｅｓｅａｒｃｈ  Ｃｅｎｔｅｒ，  Ｍｏｆｆｅｔｔ  Ｆｉｅｌｄ，  Ｃａｌｉｆｏｒｎｉａ，  Ｍａｙ  １９９２を参照のこと。
【００５２】
本発明は、値（Ａ）の逆値を求めるに際して、最終反復（ｎ＋１回目の反復）の前に値（Ｂ）による乗算を実施することによって、従来のニュートン−ラプソン法を修正する。下記の幾つかの式は、反復計算の最終反復が、本発明の好ましい実施例によっていかに修正されるかが示されている。
【００５３】
従来、最終反復は下記のように表すことができる。
【００５４】
【数３】
0003626769.tif 000007
【００５５】
この時点で、従来行われているように最終反復を実行する前に、この最終反復値に値（Ｂ）を掛ける。従って最終反復は次のように表すことができる。
【００５６】
【数４】
0003626769.tif 000008
【００５７】
それから、値（Ｂ）を括弧内に入れることによってこの式を簡略化する。その結果、この式は次のように書き直すことができる。
【００５８】
【数５】
0003626769.tif 000009
【００５９】
上記の式は、ｙｎ＝Ｂｘｎを割り当てることによってさらに簡略化することができる。かくして本発明による除算のためのニュートン−ラプソン法の最終反復は、次式によって表すことができる。
【００６０】
【数６】
0003626769.tif 000010
【００６１】
被乗数を括弧内に持ってくるのには意味がある。即ちこれの結果として、残留誤差（Ｂ−Ａｙｎ）は、補正されている数、即ちｙｎに基づいて計算される。従って、ｙｎがＮビットまでだけしか計算されない場合であっても、ｙｎ＋１はほぼ２Ｎビットが正確であることになる。
【００６２】
さらに、ｙｎ＋１は除算Ｂ／Ａの所望の近似最終結果であり、全精度数の桁数に近い正確さを有する。即ちこの最終結果は、最後の位における数単位（ＵＬＰ）まで正確である。
【００６３】
この修正されたニュートン−ラプソン法の最終反復に関する個々の演算は、表４の下記ステップに従って実行することができる（４０６）。
【００６４】
【表４】
0003626769.tif 000011
【００６５】
乗算加算融合（ＭＡＦ）設計（図２）の場合は、ステップ２及び３並びにステップ４及び５は、互いに融合させることが可能である。
【００６６】
図５に関しては、ステップ１では予想値（ｘｎ）と被除数（Ｂ）を用いて概算による商（ｙｎ）が求められる（５１０）。次にステップ２及び３では、概算による商に関する残留誤差（Ｂ−Ａｙｎ）が求められる（５１２）。最後にステップ４及び５において、概算による商の精度が、ほぼ２Ｎビットまで高められる（５１４）。
【００６７】
かくして除算については、最終反復において必要なコストのかかる唯一の演算は、全精度数Ａと半精度数ｙｎを掛けることによって全精度の結果が得られる、ステップ２におけるものである。その結果、この修正されたニュートン−ラプソン法によれば、従来必要とされたコストのかさむ２つの全精度数の乗算（即ち全精度数ｘｎ＋１と全精度数Ｂの乗算）が回避されるので、大幅な時間の節約が達成される（処理時間において）。従って、本発明のこの修正されたアプローチは、最終反復を１０倍ほど高速化する。
【００６８】
次に以下において、開平算マイクロコードによって行われる演算について、開平算マイクロコードによって実行される詳細な演算のフローチャートである図６を参照して説明する。この開平算マイクロコードは、本発明の利点が得るために、従来のニュートン−ラプソン法と修正ニュートン−ラプソン法の両者を組み込んでいる。
【００６９】
値（Ａ）の平方根を求めるためには、ニュートン−ラプソン法ではまず、この値の平方根の逆値を求め、次いで得られた逆値とこの値を乗算する。この開平算プロセスは、次式で表現することができる。
【００７０】
【数７】
0003626769.tif 000012
【００７１】
在来のニュートン−ラプソン法による、値（Ａ）の平方根の逆値についての反復は、次式で表すことができる。
【００７２】
【数８】
0003626769.tif 000013
【００７３】
高精度計算の最初のｎ回の反復（即ち最終反復を除く全反復）は、従来行われているように上記の式を用いて行われる（４０４）。最初の反復には、前述の表２に示す如き逆値テーブルから、平方根の逆値に関する初期予想値を求める演算（６０２）が含まれる。最初のｎ回の全ての反復には、予想値について残留誤差を求める演算（６０４）と、残留誤差と既存の予想値に基づいて予想値の精度を高める演算（６０６）とが含まれている。
【００７４】
除算の場合と同様に、特定の精度で開平算の結果を得るのに必要な反復数は、初期予想値の精度によって決まる。精度は各反復毎に倍になるから、精度がＮビット以上であることが判明したならば（６０８）、結果を２Ｎビットの精度で得るために必要な反復はあと１回だけである。
【００７５】
好ましくは、近似値の正確度が基数フォーマットより劣る（即ち＜Ｎ）限りにおいて、初期の反復ではハードウェア加算及び除算が用いられる。この正確度を越える反復の各々では、近似の正確さと一致させるために、桁上げされる桁数は倍にされる。前述したＢａｉｌｅｙの文献を参照のこと。
【００７６】
本発明は、最後の（ｎ＋１回目の）反復の前に値（Ａ）による乗算を行うことによって、従来のニュートン−ラプソン法を修正する。好ましくは、それは本発明によって修正される、逆値計算のための従来のニュートン−ラプソン法の最終反復である。即ち、最終反復を実行する前に、最終反復値と値（Ａ）の乗算が行われる。値（Ａ）を掛けると、最終反復に関する上記の式は次のようになる。
【００７７】
【数９】
0003626769.tif 000014
【００７８】
次に、値（Ａ）は括弧内に入れられ、その場合に式は下記のように書き直すことができる。
【００７９】
【数１０】
0003626769.tif 000015
【００８０】
それからこの式は、ｙｎ＝Ａｘｎを割り当てることによって簡略化することができる。すると、本発明による開平算に関するニュートン−ラプソン法の最終反復は、次式によって表すことができる。
【００８１】
【数１１】
0003626769.tif 000016
【００８２】
除算の場合と同様に、被乗数を括弧内に持ってくるのには意味がある。即ちその効果は、残留誤差（Ａ−ｙ２ｎ）が補正されている数、即ちｙｎに基づいて計算されるということである。
【００８３】
この修正ニュートン−ラプソン法の最終反復に関する個々の演算は、表５に示す以下のステップに従って実行することができる（４０６）。
【００８４】
【表５】
0003626769.tif 000017
【００８５】
乗算加算融合（ＭＡＦ）設計（図２）の場合には、ステップ２及び３並びにステップ４及び５は、互いに融合させることができる。
【００８６】
ステップ５において得られる結果は、ほぼ全精度数における桁数までの正確さを有する、所望の平方根である。即ちこの最終結果は、最後の位における数単位（ＵＬＰ）までの正確さを有する。
【００８７】
図６に関しては、ステップ１で予想値（ｘｎ）と値（Ａ）を用いて概算平方根（ｙｎ）が求められる（６１０）。次いでステップ２及び３において、概算平方根についての残留誤差（Ａ−ｙ２ｎ）が求められる（６１２）。最後にステップ４及び５において、概算による平方根の精度が、ほぼ２Ｎビットまで高められる（６１４）。
【００８８】
かくして開平算の場合、必然的にコストのかさむ唯一の演算は、全精度数の積ｙ２ｎが２つの半精度数から得られる、ステップ２におけるものである。従って本発明によれば、従来必要とされたコストのかさむ全精度数ｘｎ＋１と全精度数Ａとの乗算は回避されることになる。
【００８９】
本発明は、ハードウェアが、２つのハードウェア精度数の積において全桁数を、また和の先行する４倍精度部分（例えば２Ｎ）を提供することができるものと仮定している。既存のコンピュータの中には、２つの倍精度数の積である４倍精度の結果（即ち全桁）を返すハードウェア命令を有するものがあるが、こうした命令を持たないものもある。コンピュータの中には（例えばＩＢＭ  Ｓ／３７０）、２つの数の和の４倍精度部分を返す命令を有するものがある。
【００９０】
ハードウェアがこうした条件を支援することが望ましいが、コンピュータのハードウェアがこれらの条件を支援できない場合には、ソフトウェアをハードウェアと連係させて用いて、同じ結果を得ることができる。２つの倍精度数の積である４倍精度の結果を返すようにハードウェアを補完するために利用可能なコード例は、次の通りである。この場合、変数は単精度数として記憶される。単−単フォーマットで記憶される２つの倍精度数の積の全ビットを返すためのＣ言語コードは、次の通りである。
【００９１】
【表６】
0003626769.tif 000018
【００９２】
この場合、結果は４つの単精度数として返される。このアプローチは、倍精度フォーマットが、ＩＥＥＥ浮動小数点標準規格に合致する条件である、２つの単精度数の積よりも少なくとも２桁余分の保持を行うという仮定に立っている。
【００９３】
指数が大幅に異なる場合、ある和には、極めて多数の桁が含まれる可能性がある。本発明では、この結果の先行する４倍精度部分（例えば２Ｎビット）が必要とされる。従って、ハードウェアが先行する２Ｎビットの直接検索を支援することができなければ、２つの倍精度数の和の先行する４倍精度部分を返すために利用可能なＣ言語の例は以下の通りとなる。
【００９４】
【表７】
0003626769.tif 000019
【００９５】
この例の場合、入力データの高位部分と低位部分が別々の単精度ワードでもって記憶され、次いでこれらの高位部分と低位部分は加算されて、低位からの桁上げは高位に伝播する。その和は、４つの単精度数として記憶される。
【００９６】
従って本発明では、２つのハードウェア精度数の積における全桁と、和の先行する２Ｎビット（例えば、４倍）精度部分とにアクセスする必要があるが、ソフトウェアがハードウェアの欠点を補うことができるため、本発明は浮動小数点演算装置内に特殊なハードウェア（乗算器及び加減算装置以外に）を必要としない。しかしながら、こうしたソフトウェアを使用すれば、性能は低下する。
【００９７】
本発明はまた、丸めモードとは独立している。しかし背景情報として、周知の４つの丸めモードが存在している。第１のモードは最も近い数への丸めと呼ばれ、仮数で表現可能な最も近い数を選択する。第２の可能性は０方向への丸めであり、仮数に適合しない小数ビットを捨て去る。この第２の可能性は、一般に切り捨てとして知られている。第３の丸めモードは正の無限への丸めであり、これは丸めが、次に大きな表現可能な数に丸めることによって行われることを意味している。第４の可能性は負の無限への丸めであり、次に小さな表現可能な数に丸めるものである。実際上は、最も近い数への丸めモードの実現が最も困難である。
【００９８】
さらに、乗算加算演算は乗算演算とそれに続く加算演算として実行することができ、これはそれぞれに関連した丸め演算を行う。代替案として、浮動小数点演算装置が融合乗算加算演算を支援する場合には、必要な丸めは１つだけである。
【００９９】
上述の除算及び開平算手順は、種々の方法で実施することができる。１つの方法は、上述したようにそれらの手順をマイクロコードに組み入れることである。例えば、除算又は開平算命令を実行すべき場合、制御装置は、浮動小数点演算装置内に記憶された除算及び開平算マイクロコードに対してアクセスを行う。もう１つの方法は、同じ手順を用いて、コンパイラに直接にオブジェクトコードを生成させることである。例えばコードをコンパイルする場合に、除算又は開平算演算の要求は、従来のニュートン−ラプソン法と修正された形式のニュートン−ラプソン法に従って、加算及び乗算演算の適切なシーケンスに置き換えられる。
【０１００】
以下においては、本発明の種々の構成要件の組み合わせからなる例示的な実施態様を示す。
１．被除数を除数で割って概算商を求める除算演算と、ある値の概算平方根を求める開平算演算の少なくとも一方を実行する浮動小数点演算装置であって、
データを記憶するマルチポート記憶装置と、
２つの数字を掛けて積を求め、また２つの数字を加算して和を求める演算手段と、
除算演算及び開平算演算の少なくとも一方を実行する反復手順を含む除算及び開平算マイクロコードと、
除数の逆値と、前記ある値の平方根の逆値の少なくとも一方の初期近似値を供給する逆値近似手段と、及び
前記浮動小数点演算装置を制御する制御装置とからなり、
前記除算及び開平算マイクロコードが、除算演算及び開平算演算の少なくとも一方を実行し、２Ｎ×２Ｎの乗算を必要とせずに、概算商及び概算平方根の少なくとも一方を２Ｎビットの精度で生成する、浮動小数点演算装置。
【０１０１】
２．前記マルチポート記憶装置がＮビット幅のデータを記憶し、
前記演算手段が、
前記マルチポート記憶装置と関連して動作するよう接続され、２つのＮビット数を掛けて積を求める乗算器と、
前記乗算器と関連して動作するよう接続され、前記積を２Ｎビットに丸める第１の丸めインクリメンタと、
前記第１の丸めインクリメンタと関連して動作するよう接続され、前記積の第１のＮビットを記憶する第１の高部分ラッチと、
前記第１の丸めインクリメンタと関連して動作するよう接続され、前記積の第２のＮビットを記憶する第１の低部分ラッチと、
前記第１の高部分ラッチ及び第１の低部分ラッチと関連して動作するよう接続され、前記第１の高部分ラッチ及び第１の低部分ラッチの一方を選択し、前記積の第１及び第２のＮビットの一方を前記マルチポート記憶装置に記憶する第１のマルチプレクサとからなる、上記１の浮動小数点演算装置。
【０１０２】
３．前記演算手段がさらに、
前記マルチポート記憶装置と関連して動作するよう接続され、前記マルチポート記憶装置から受信した第１及び第２のＮビットの加数を位置合わせする位置合わせシフタと、
前記位置合わせシフタと関連して動作するよう接続され、第１及び第２のＮビットの加数を加算して和を求める加算器と、
前記加算器と関連して動作するよう接続され、前記和を２Ｎビットに丸める第２の丸めインクリメンタと、
前記第２の丸めインクリメンタと関連して動作するよう接続され、前記和の第１のＮビットを記憶する第２の高部分ラッチと、
前記第２の丸めインクリメンタと関連して動作するよう接続され、前記和の第２のＮビットを記憶する第２の低部分ラッチと、
前記第２の高部分ラッチ及び第２の低部分ラッチと関連して動作するよう接続され、前記第２の高部分ラッチ及び第２の低部分ラッチの一方を選択し、前記和の第１及び第２のＮビットの一方を前記マルチポート記憶装置に記憶するマルチプレクサからなる、上記２の浮動小数点演算装置。
【０１０３】
４．前記マルチポート記憶装置がＮビット幅のデータを記憶し、
前記演算手段が、
前記マルチポート記憶装置と関連して動作するよう接続され、２つの数を掛けて積を求める乗算器と、
前記マルチポート記憶装置と関連して動作するよう接続され、前記積の指数に従って加数の位置合わせを行う位置合わせシフタと、
前記乗算器及び前記位置合わせシフタと関連して動作するよう接続され、前記積と前記位置合わせした加数を加算して結果を求める加算器と、
前記加算器と関連して動作するよう接続され、前記結果を２Ｎビットに丸める丸めインクリメンタと、
前記丸めインクリメンタと関連して動作するよう接続され、前記結果の第１のＮビットを記憶する高部分ラッチと、
前記丸めインクリメンタと関連して動作するよう接続され、前記結果の第２のＮビットを記憶する低部分ラッチと、
前記高部分ラッチ及び低部分ラッチと関連して動作するよう接続され、前記高部分ラッチ及び低部分ラッチの一方を選択し、前記結果の第１及び第２のＮビットの一方を前記マルチポート記憶装置に記憶するマルチプレクサとからなる、上記１の浮動小数点演算装置。
【０１０４】
５．前記浮動小数点演算装置がさらに、除数の逆値と前記ある値の平方根の逆値の少なくとも一方について指数を調整する指数調整装置を含む、上記１の浮動小数点演算装置。
【０１０５】
６．前記除算及び開平算マイクロコードが、
除数の逆値の初期近似値を求める手段と、
除数の逆値の近似値に関する第１の残留誤差を求める手段と、
第１の残留誤差と除数の逆値に関する既存の近似値に基づいて、除数の逆値に関する近似の精度を高める手段と、
除数の逆値に関する修正された近似値と被除数を用いて、概算による商を求める手段と、
被除数、除数及び概算による商を用いて、概算による商に関する第２の残留誤差を求める手段と、及び
概算による商、除数の逆値に関する修正された近似値、及び概算による商に関する第２の残留誤差を用いて、概算による商の精度を高める手段とからなる、上記１の浮動小数点演算装置。
【０１０６】
７．前記除算及び開平算マイクロコードが、
前記ある値の平方根の逆値に関して初期近似値を求める手段と、
平方根の逆値に関する近似値に関する第１の残留誤差を求める手段と、
第１の残留誤差と平方根の逆値に関する既存の近似値に基づいて、平方根の逆値に関する近似の精度を高める手段と、
平方根の逆値に関する修正された近似値及び前記ある値を用いて、概算による平方根を求める手段と、
前記ある値と概算による平方根を用いて、概算による平方根に関する第２の残留誤差を求める手段と、及び
概算による平方根、平方根の逆値に関する修正された近似値、及び概算による平方根に関する第２の残留誤差を用いて、概算による平方根の精度を高める手段とからなる、上記１の浮動小数点演算装置。
【０１０７】
８．前記除算及び開平算マイクロコードが、
ニュートン−ラプソン法をｎ回反復して、逆値の近似の精度を幾何学的に高める手段と、及び
修正されたニュートン−ラプソン法を用いて付加的な反復を実行し、最終近似結果を求める手段とからなる、上記１の浮動小数点演算装置。
【０１０８】
９．データ処理システムにおいて開平算又は除算命令の最終近似結果を求める方法であって、
（ａ）逆値の近似値を求めるステップと、
（ｂ）ニュートン−ラプソン法をｎ回反復して、逆値の近似の精度を幾何学的に高めるステップと、
（ｃ）修正されたニュートン−ラプソン法を用いて付加的な反復を実行し、最終近似結果を求めるステップとからなる方法。
【０１０９】
１０．データ処理システムがＮビットのハードウェア精度を有し、最終近似結果が２Ｎビットに近い精度で得られる、上記９の方法。
【０１１０】
１１．ステップ（ｂ）及び（ｃ）が２Ｎ×２Ｎの乗算を伴わずに実行される、上記１０の方法。
【０１１１】
１２．付加的な反復のための修正されたニュートン−ラプソン法が、最終近似結果の第１の近似値に基づく残留誤差を用いて最終近似結果を計算する、上記９の方法。
【０１１２】
１３．最終近似結果がＢ／Ａの近似商であり、逆値が１／Ａであり、
最終近似結果の第１の近似値が、前記ステップ（ｂ）の実行によって得られたＡの逆値の近似値をＢ倍することによって求められる、上記１２の方法。
【０１１３】
１４．最終近似結果の第１の近似値が、Ｂの先行するＮビットだけに、前記ステップ（ｂ）の実行によって得られたＡの逆値の近似値のＮビットを掛けることによって求められるＮビット値である、上記１３の方法。
【０１１４】
１５．最終近似結果がＡの近似平方根であり、逆値がＡの平方根の逆値であり、
結果の第１の近似値が、前記ステップ（ｂ）の実行によって得られたＡの平方根の逆値の近似値をＡ倍することによって求められる、上記１２の方法。
【０１１５】
１６．最終近似結果の第１の近似値が、Ａの先行するＮビットだけに、前記ステップ（ｂ）の実行によって得られたＡの平方根の逆値の近似値のＮビットを掛けることによって求められるＮビット値である、上記１３の方法。
【０１１６】
１７．加算装置、乗算装置及び制御装置を有し、ニュートン−ラプソン反復ルーチンを用いて、前記制御装置が除算又は開平算実行命令を検出した場合に前記加算装置及び乗算装置を用いて予想逆値をそれぞれに求める浮動小数点演算回路において、最終近似商及び最終近似平方根の一方を求めるようニュートン−ラプソン反復ルーチンの最後の反復を修正し、且つこの最後の反復によって得られる最終最終近似商又は平方根を、商又は平方根を概算し、次いで概算商又は平方根に基づいて発生された残留誤差に従って概算商又は平方根の精度を向上させることによって最終的な近似商又は平方根を生じさせることにより求めることからなる改良。
【０１１７】
１８．除数による被除数の浮動小数点除算を実行し、仮数を有する商をほぼ２Ｎビットの精度で求める方法であって、前記方法が浮動小数点演算装置において実行され、
（ａ）除数の逆値に関する現在の予想値を求めるステップと、
（ｂ）誤差パラメータを計算し、誤差パラメータと逆値に関する現在の予想値から逆値の修正された予想値を計算することにより、逆値に関する現在の予想値の精度を高めるステップと、
（ｃ）逆値に関する修正された予想値の精度が少なくともほぼＮビットに近づくまでステップ（ｂ）を繰り返すステップと、
（ｄ）逆値の修正された予想値に被除数を掛けることにより商の初期概算値を求めるステップと、
（ｅ）商の初期概算値に基づいて商の初期概算値に関する残留誤差を求めるステップと、及び
（ｆ）商の初期概算値に逆値の修正された予想値と残留誤差を掛けた値を加えることによって商を求めるステップとからなる方法。
【０１１８】
１９．ある値の浮動小数点開平算を実行し、仮数を有する平方根をほぼ２Ｎビットの精度で求める方法であって、前記方法が浮動小数点演算装置において実行され、
（ａ）平方根の逆値に関する現在の予想値を求めるステップと、
（ｂ）誤差パラメータを計算し、誤差パラメータと平方根の逆値に関する現在の予想値から修正された逆値の予想値を計算することにより、逆値に関する現在の予想値の精度を高めるステップと、
（ｃ）逆値に関する修正された予想値の精度が少なくともほぼＮビットに近づくまでステップ（ｂ）を繰り返すステップと、
（ｄ）逆値の修正された予想値に前記ある値を掛けることによって平方根の初期概算値を求めるステップと、
（ｅ）前記ある値と平方根の初期概算値に基づいて、平方根の初期概算値に関する残留誤差を求めるステップと、及び
（ｆ）平方根の初期概算値に逆値の修正された予想値と残留誤差の積の１／２を加えることによって平方根を求めるステップとからなる方法。
【０１１９】
【発明の効果】
本発明は、従来のアプローチをかなり上回る速度で機能する、除算及び開平算演算の結果を高精度で求めるための改良された技術を提供するものである。この計算速度の上昇は主として、本発明によれば、浮動小数点演算装置が、２Ｎ×２Ｎのビット乗算の必要なしに、ほぼ２Ｎビットの精度で結果を得ることができるという事実によるものである。結果として、本発明によれば２Ｎ×２Ｎビット幅の乗算器が必要とされないため、従来必要とされてきたものに比して、浮動小数点ハードウェアをより実用的で、より単純で、より安価なものとすることができる。
【０１２０】
本発明の多くの特徴及び利点は、以上の説明から明らかであり、従って特許請求の範囲は、本発明のこうした特徴及び利点の全てを包含することを意図したものである。さらに、当業者であれば多くの修正及び変更を容易に想起しうるものであるから、例示し記載した構成及び作用のみに本発明を限定することを望むものではない。かくして、適切な修正及び均等物は全て、本発明の範囲内に含まれるものである。
【図面の簡単な説明】
【図１】本発明の第１の実施例による浮動小数点演算装置のブロック図である。
【図２】本発明の第２の実施例による浮動小数点演算装置のブロック図である。
【図３】制御装置によって行われる基本演算のフローチャートである。
【図４】除算及び開平算マイクロコードによって行われる基本演算のフローチャートである。
【図５】除算マイクロコードによって行われる詳細な演算のフローチャートである。
【図６】開平算マイクロコードによって行われる詳細な演算のフローチャートである。
【符号の説明】
１００，  ２００  浮動小数点演算装置
１０２，  ２０２  マルチポートレジスタ
１０４，  ２０４  乗算装置
１０６，  １１８，  ２１０  桁上げ伝播加算器
１０８，  １２２，  ２１４  丸めインクリメンタ
１１０，  １２４，  ２１６  高部分ラッチ
１１２，  １２６，  ２１８  低部分ラッチ
１１４，  １２８，  ２２０  マルチプレクサ
１１６  位置合わせシフタ
１２０，  ２１２  正規化シフタ
１３０，  ２２２  制御装置
１３８，  ２３０  指数調整器
２０８  桁上げ保存加算器
【図１】
0003626769.tif 000020
【図２】
0003626769.tif 000021
【図３】
0003626769.tif 000022
【図４】
0003626769.tif 000023
【図５】
0003626769.tif 000024
【図６】
0003626769.tif 000025