(57)【特許請求の範囲】
【請求項１】
（ａ）被除数オペランド及び除数オペランドを整列させ、これらのオペランドを所定のフォーマットで配置するための入力データ整列手段と、
（ｂ）商Ｑを繰り返し構成する際に用いられる商の桁ｑj+1を選択するための桁選択論理と、
（ｃ）前記商の構成に用いられる繰り返しを表すインデックスをｊとし、ｊ番目の繰り返しにおける剰余をＰjとし、コンピュータにおいてシステムが数を表すために用いる基数をｒとし、前記除数オペランドをＤとしたとき、
除算の式Ｐj+1＝ｒＰj−ｑj+1Ｄ
に従って、部分剰余Ｐj+1を生成するための剰余形成論理と、
（ｄ）ｊ番目の繰り返しにおける前記商ＱをＱjとしたとき、
式Ｑj+1＝Ｑj＋ｒ-(j+1)ｑj+1
に従って前記Ｑを繰り返し構成し、前記商Ｑをデクリメント及びインクリメントすることにより、デクリメントされた商Ｑ−１とインクリメントされた商Ｑ＋１を得るための商論理と、
（ｅ）前記商Ｑを記憶するためのＱレジスタと、前記デクリメントされた商Ｑ−１を記憶するためのＱＭレジスタ、及び、前記インクリメントされた商Ｑ＋１を記憶するためのＱＰレジスタと、
（ｆ）複数の所定の丸めモードから選択された一つを指示可能である丸めモード信号を受信し、前記部分剰余Ｐj+1がゼロであるか否か、及び、前記部分剰余Ｐj+1がゼロ未満であるか否かを判定し、丸め選択信号を出力するための剰余比較論理と、
（ｇ）最後の商の桁ｑj+1と前記丸め選択信号に基づき、最終的に丸められた商として、Ｑ、Ｑ−１、Ｑ＋１のうちから１つを選択するための丸め及び選択論理と、
から構成される、コンピュータにおいて浮動小数点桁毎の除算を実施するための装置。
【請求項２】
（ａ）商Ｑを繰り返し構成する際に用いられる商の桁ｑj+1を選択するための桁選択手段と、
（ｂ）除算の部分剰余Ｐj+1を生成するための剰余形成手段と、
（ｃ）前記商Ｑをデクリメント及びインクリメントし、デクリメントされた商Ｑ−１とインクリメントされた商Ｑ＋１を得るための、商Ｑを繰り返し構成するための除算手段と、
（ｄ）複数の所定の丸めモードから選択された一つを指示可能である丸めモード信号を受信し、前記部分剰余Ｐj+1がゼロであるか否か、及び、前記部分剰余Ｐj+1がゼロ未満であるか否かを判定し、丸め選択信号を出力するための剰余比較手段と、
（ｅ）最後の商の桁ｑj+1と前記丸め選択信号に基づき、最終的に丸められた商としてＱ、Ｑ−１、Ｑ＋１のうちから１つを選択するための丸め及び選択手段と、
から構成され、
前記商内のビット数を定数Ｋ2としたとき、丸め処理により生じる遅延数が約ｌｏｇ2ｎ＋Ｋ2である、序数オペランドにより被除数オペランドの浮動小数点桁毎の除算を実施するための装置。
【請求項３】
前記商の構成に用いられる繰り返しの数を表すインデックスをｊとし、ｊ番目の繰り返しにおける剰余をＰjとし、システムが数を表すのに用いる基数をｒとし、序数をＤとしたときに、
除算の式Ｐj+1＝ｒＰj−ｑj+1Ｄ
に従って、前記部分剰余を前記剰余形成手段によって生成すること、をさらに含む請求項２の装置。
【発明の詳細な説明】
【０００１】
【産業上の利用分野】
本発明は、一般的に浮動小数点演算の分野に関し、特に、ディジタルコンピュータにおいて除算と平方根計算を実行するための改善された方法と装置に関する。本発明の典型的な実施例の１つは、ＩＥＥＥ規格７５４−１９８５によって指定の丸め規格に基づいてＳＲＴ除算及び平方根計算を実施するための方法及び装置を目的としている。
【０００２】
【従来の技術】
いわゆる桁毎（digit-by-digit）の除算（あるいはオン・ライン除算）は、下記の公式に従った繰り返し処理である。
【０００３】
【表１】
0003541066.tif 000002
【０００４】
例えば、以下の手動計算は除算に関する上記公式に従っている。
【０００５】
【数１】
0003541066.tif 000003
【０００６】
上例で、商を一つずつ形成するのに商の桁に何を選択するかが直ちにわかるであろう。すなわち、最初の商の桁として「３」を選択し、次に２番目の剰余を３４．５７−３×９＝７．５７というように計算し、そして次の商の桁として「８」を選択するといったようにして、所望の精度に最終の商（３．８４）を形成する。しかし、コンピュータはある種のテーブル内で参照してそれぞれの商の桁を決定するか、またはそれぞれの桁を決定するのに「ハード配線された」論理回路を用いる。コンピュータは、さらに、例えば、２進小数点の左に１つの桁を持つ２進数といった、指定のフォーマットでの数字を表す。コンピュータは、桁毎の技法を用いてｎビットの商を計算するのに、約ｎ／ｌｏｇ2（ｎ）の繰り返しを必要とする。
【０００７】
桁毎の除算の２つの主要分類は、剰余が常に正の回復型除算と、剰余が正あるいは負の非回復型除算である。ほとんどの人間にとって、負の剰余という概念はなじめないため、手動除算は、たいてい常に回復型除算によって実施される。しかし、コンピュータは、一般に、非回復型桁毎の除算を実施する。Sweeney、Robertson、及び、Tocher（ＳＲＴ）アルゴリズムは、コンピュータにおいて非回復型桁毎の除算を実施するための既知の方法の一例である。
【０００８】
例えば、基数４の演算の場合、桁集合｛−３、−２、−１、０、１、２、３｝は、可能性のある全ての商を表すのに利用可能である。しかし、負の剰余が用いられる場合、可能性のある全ての商を表すには、桁集合｛−２、−１、０、１、２｝で十分であることがわかる。例えば、基数２の数「１００１１１００」は、基数４の数「２１３０」に等しいが、符号付き桁の基数４の数「２２−１０」にも等しい。すなわち、「２２−１０」の第２の桁位置から借りた（すなわち、第２の２から借りた）４を第３の桁位置に加算する（−１に加算する）ことによって、「２１３０」が得られる。従って、集合｛−２、−１、０、１、２｝は、基数４の演算にとって「最小限に冗長な」桁集合と呼ばれる。一般に、基数ｒの演算にとって最小限に冗長な桁集合は、｛−ｒ／２、．．．０、．．．ｒ／２｝である。
【０００９】
図１は、基数４のＳＲＴ除算を実施するための従来回路のブロック図である。図示のように、除算ループは、繰り返しｒＰj及びｑj+1項を発生し、一方、商ビルダは、除算ループと並列に演算して商を組み立てる。除算ループは一連の基数４の商の桁（２、−１、０、１、−１、２）を発生し、商ビルダによって符号付き桁の基数４の商「２．−１０１−１２」に組み立てられる。次に、商ビルダ（または別の回路要素）は、基数４の商を従来の２進数（正の桁）に変換する。
【００１０】
周知のように、デジタル・コンピュータは、同様の公式に基づいて除算及び平方根計算を実施する。例えば、桁毎の除算に関する上記公式は、下記の桁毎の平方根公式に極めてよく似ている：
Ｐj+1＝ｒＰj−ｑj+1（２Ｑj）−ｑj+12（ｒ-(j+1)）
従って、ここでは、２進浮動小数点除算を実施する方法及び装置に関連して説明するが、本発明は、平方根計算を実施するための方法及び装置にも適用可能である。（後述のように、本発明は、商と平方根の両方を同じ回路で計算する装置を提供する。）
デジタル・コンピュータで除算及び平方根計算を実施する場合、丸め操作を実施して、最終結果をコンピュータで表現できるようにする必要がある。ＩＥＥＥ規格７５４−１９８５は、２進浮動小数点演算を実施するための規格を指定している。ＩＥＥＥ規格によれば、２進浮動小数点の数は、下記のようにフォーマットされる。
【００１１】
１．ｘ2ｘ3ｘ4−−−ｘnｙ1ｙ2ｙ3ｙ4．．．
２進小数点の左の先行「１」に２進数（ビット）「ｘ2」〜「ｘn」をプラスすることによって、コンピュータで表現される最終のｎ桁の数が構成される。「ｘn」は最下位ビット（ＬＳＢ）であり、「ｙ1」は「ガード」ビットであり、ガード・ビットの右の残りのビットは共にＯＲ演算されて、「スティッキ」ビットが形成される。
【００１２】
ＩＥＥＥ規格には、（１）ゼロに丸める（ｎビットまで切り捨てる）、（２）正の無限大に丸める、（３）負の無限大に丸める、（４）最寄りの偶数に丸めるといった、４つの代替丸めモードが含まれる。最も一般的に用いられる最寄り値への丸めモードについては、下記のコードによって説明される。
【００１３】
【表２】
0003541066.tif 000004
【００１４】
上記コードは、ガード・ビットが「０」ならばｎビットまでを切り捨て、ガード・ビットが「１」で、スティッキ・ビットが「１」ならば切り上げ、スティッキ・ビットが「０」で、最下位ビットが「１」ならば切り上げ、最下位ビットが「０」ならば切り捨てるという最寄り値への丸めモードを示している。
【００１５】
図２には、非回復型除算に関する従来のＩＥＥＥ丸め処理の概略が示されている。この処理には、２つの追加ビット、ガード・ビット（Ｇ）、及び、エキストラ・ビット（Ｒ）を加えたｎビットの商を形成するステップと、剰余がゼロ未満の場合には、商をデクリメントするステップと、最上位ビット（ＭＳＢ）がゼロの場合には、全てのビットを１つ左の位置へシフトして、商を正規化し、結果として、ガード・ビットを備える正規化商が生じるようにするステップと、選択された丸めモードに従って、条件付きで商をインクリメントする丸め論理ブロックにエキストラ・ビットＲ及びガード・ビットＧを入力するステップと、インクリメントによってオーバフローが生じる場合には、全てのビットを右にシフトすることによって、商を再正規化するステップと、商の最終仮数を記憶するステップとが含まれている。これらの場合、ビットＧはビットＲになる。ビットＲは、商を左にシフトすべき場合に用いられるということに留意すべきである。別様であれば、ＲにはＯＲ演算が施されて、スティッキ・ビットが生じる。
【００１６】
上に要約した従来の丸め処理には、いくつかの問題がある。例えば、剰余は、桁上げ保存形式のため（桁上げ保存加算の説明に関しては、以下で十分に言及する M.Ercegovak 及び T.Lang による 「On-the-fly Rounding for Division and Square Root」 を参照されたい）、剰余がゼロか、または、ゼロ未満であるかを判定するには、ｌｏｇ2ｎのゲート遅延が必要になる。それに加えて、ディクリメントおよびインクリメントはそれぞれｌｏｇ2ｎの遅延を必要とする。さらに、丸め論理回路が、クリティカル経路にある場合、さらに遅延することになる。
【００１７】
参考までに本明細書に組み込まれている、IEEE Transactions on Computer,Vol.C-36,No.7,pp.895-897(1987.7)における 「On-the-fly Rounding for Divisionand Square Root」 において、M.Ercegovak 及び T.Langは、商の符号付き桁を従来の（符号無し）桁に変換して、結果が丸められるようにする方法を開示している。変換／丸め処理は、「オン・ザ・フライ式」に実施されると言われ、桁上げ伝搬加算を用いないので、その称するところでは従来の動作よりも高速ということである。
【００１８】
図３を参照すると、Ercegovak-Lang法（今後は、「Ercegovak法」と称することにする）には、それぞれ、商Ｑ＋１、Ｑ、及び、Ｑ−１を納めた３つの商レジスタＱ＋１、Ｑ、Ｑ−１を維持することと、マルチプレクサを介して適正な商を選択することが本質的に必要とされる。「剰余符号」ビット（部分剰余が負の場合には「１」で、そうでなければ「０」になる）、「剰余＝０」ビット（部分剰余がゼロの場合には「１」で、そうでなければ「０」になる）、及び、最終商ディジット（ｑn+1）を入力として用いる丸めブロックによって、選択制御信号が発生する。各商レジスタの内容は、下記のアルゴリズムに従って設定される。
【００１９】
【表３】
0003541066.tif 000005
【００２０】
【表４】
0003541066.tif 000006
【００２１】
上記丸めアルゴリズムは、冗長が最小限の基数４の桁集合、及び、正と負の剰余に関して選択された商を示す下記の丸めテーブルに要約されている。このテーブルは、上述の論文に記載されている唯一の丸めモードである、最寄り値への丸めモードに関するものである。
【００２２】
【表５】
0003541066.tif 000007
【００２３】
要するに、ＩＥＥＥ除算及び平方根計算に関する丸め処理は、適正にスティッキ・ビット及びガード・ビットを発生するには、部分剰余の符号を検出して、部分剰余をゼロと比較する必要があるので、一般に、極めてコストのかかるものである。従って、この操作は、引き続き、商にポスト・インクリメントまたはポスト・デクリメントを施して、適正な最終結果を求めることになる。Ercegovak によって、可能性のある商値をあらかじめ計算することと、インクリメント／デクリメントステップを選択ステップに置き換えることを伴う方法が開示されている。しかし、このErcegovak の丸め法の利用には欠点がある。例えば、引用した論文には、アルゴリズムを修正して、最寄り値への丸めモード以外の丸めモードを扱うことができるようにする方法の開示がない。さらに、開示の方法は、非正規化仮数を備えたフォーマット（すなわち、Ｑが１／２≦Ｑ＜２の範囲外の場合）を取り扱えないし、また、ＩＥＥＥ単精度（２３ビット）対ＩＥＥＥ倍精度（５２ビット）といった、異なる数のフォーマットを用いることにより引き起こされる複雑性をも扱えないように思われる。さらに、該方法は、スティッキ・ビットがセットされているものと仮定するが、これは、全ての場合に当てはまるわけではない。
【００２４】
【発明が解決しようとする課題】
従って、本発明の主たる目的は、除算及び平方根計算を実施するための改善された装置を提供することにある。特に、本発明の目的は、クリティカルな経路の複雑さを軽減し、丸め処理によってもたらされる総遅延が、剰余の比較によってもたらされる遅延にわずかな追加ゲート遅延を加えたものとほぼ同じになるようにすることによって、Ercegovak の丸め処理を改善することにある。換言すれば、本発明の目的は、約３ｌｏｇ2ｎ＋Ｋ1からｌｏｇ2ｎ＋Ｋ2に遅延数を減少させることにあるが、ここで、Ｋ1及びＫ2は定数である。さらに、本発明の目的は、全ての３つのＩＥＥＥ丸めモードに利用することが可能な除算装置を提供することにある。さらに、本発明の目的は、商が１／４≦Ｑ＜１／２の範囲内にある場合を取り扱うことが可能な除算装置を提供することにある。
【００２５】
【課題を解決するための手段】
本発明によれば、コンピュータで浮動小数点桁毎の除算を実施するための装置を提供することによって、上述の目的が達成される。本発明によると、こうした装置は、被除数オペランド及び除数オペランドを整列させ、前記オペランドを規定のフォーマット内に配置するための入力データ整列手段と、繰り返し商Ｑを構成する際に用いられる商の桁ｑj+1を選択するための桁選択論理回路と、公式Ｐj+1＝ｒＰj−ｑj+1Ｄに基づいて、除算の部分剰余Ｐj+1を発生するための剰余形成論理回路と、公式Ｑj+1＝Ｑj＋ｒ-(j+1)ｑj+1に基づいて、商Ｑを繰り返し構成し、商Ｑのデクリメント及びインクリメントを行って、デクリメントした商Ｑ−１及びインクリメントした商Ｑ＋１を求めるための商論理回路と、商Ｑを記憶するためのＱレジスタ、デクリメントした商Ｑ−１を記憶するためのＱＭレジスタ、及び、インクリメントした商Ｑ＋１を記憶するためのＱＰレジスタと、複数の規定の丸めモードのうちから選択された１つを示す丸めモード信号を受信し、部分剰余Ｐj+1がゼロであるか否か、及び、部分剰余がゼロ未満であるか否かを判定し、丸め選択信号を出力するための剰余比較論理回路と、最終丸め商として、最後の商の桁ｑj+1及び丸め選択信号に基づいて、Ｑ、Ｑ−１、及び、Ｑ＋１のうちの１つを選択するための丸め及び選択論理回路から構成される。
【００２６】
本発明の好適な実施例の場合、前記丸め及び選択論理回路は、正の剰余に関する丸めブロックと、負の剰余に関する丸めブロックから構成される。前記丸めブロックは、それぞれ、商選択信号を作り出し、前記丸め選択信号は、前記Ｑ、ＱＭ、及び、ＱＰレジスタからの最終丸め商の選択に利用するため、前記商選択信号のうちの１つを選択する。
【００２７】
さらに、好適な実施例の場合、剰余形成論理回路は、また、平方根計算に関する公式Ｐ’j+1＝ｒＰ’j−ｑj+1（２Ｑj）−ｑj+12（ｒ-(j+1)）に基づいて、平方根部分剰余Ｐ’j+1を発生する。剰余形成論理回路は、除算部分剰余及び平方根部分剰余のうちどちらを発生するかを選択するための手段から構成される。さらに、本書に開示の本発明の特定の実施例の場合、剰余形成論理回路は、現在の除算部分剰余Ｐjまたは現在の平方根部分剰余Ｐ’jを記憶するための部分剰余レジスタと、選択的にｑ2j+1ｒ-(j+1)項を出力する第１の１移動シフト・レジスタと、第１の１移動シフト・レジスタ及び部分剰余レジスタに結合され、部分剰余レジスタから数量ｒＰjを受信し、第１の１移動シフト・レジスタが出力するｑ2j+1ｒ-(j+1)の１つまたはゼロを受信して、ｒＰjまたはｒＰ’j−ｑ2j+1ｒ-(j+1)を出力する働きをする桁上げ保存減算回路と、ｑj+1Ｄまたはｑj+1（２Ｑj）を選択的に出力する第２の１移動シフト・レジスタと、桁上げ保存減算回路の出力を受信し、第２の１移動シフト・レジスタの出力を受信して、部分剰余レジスタに記憶される次の除算部分剰余ｒＰj+1または次の平方根部分剰余ｒＰ’j+1を出力する桁上げ保存加算／減算回路から構成される。
【００２８】
さらに、好適な実施例の場合、入力データ整列手段が、計算結果が下記フォーマットの１つをなすように、入力オペランドを整列させる。
【００２９】
ＩＥＥＥ単精度（２３ビット＋先行１）
【００３０】
【数２】
0003541066.tif 000008
【００３１】
ＩＥＥＥ倍精度（５２ビット＋先行１）
【００３２】
【数３】
0003541066.tif 000009
【００３３】
規定の丸めモードには、ＩＥＥＥ最寄り値への丸めモード、ＩＥＥＥゼロへの丸めモード、及び、ＩＥＥＥ無限大への丸めモードを含めることが好ましい。
【００３４】
本発明では、先行技術に比べて、いくつかの重要な利点が得られる。例えば、本発明は、同じ回路で除算及び平方根計算を実施するための手段を提供する。さらに、本発明は、単精度及び倍精度の両方の計算を実施することが可能な回路を提供する。さらに、本発明の回路は、剰余比較だけに必要な遅延からくるほとんどわずかな遅延しか示さない。さらに、本発明の場合、結果を左へ１桁だけシフトしても、やはり、適正な結果であることが可能になる。
【００３５】
【実施例】
詳細に後述するように、本発明の好適な実施例は、次のように進展させることができる。最初に、その適正位置に先行１を配置する（すなわち、１／４≦Ｑ＜１になるようにする）のに、商をあらかじめシフトしておく必要がある場合を取り扱えるように、Ercegovak のオン・ザ・フライ式丸め法が拡張される。次に、全てのＩＥＥＥ丸めモード、すなわち、ゼロへの丸め、無限大への丸め、及び、最寄り値への丸めモードを含むように、Ercegovak の商選択テーブルが拡張される。次に、除算及び平方根にとって不可能な場合を除去することによって、該商選択テーブルが削減される。次に、全ての場合を２つの並列選択単位にマッピングすることによって、該商選択テーブルがさらに削減される。これによって、一層の削減が施された選択テーブルを用いる簡略化丸め法が得られる。
【００３６】
このようにして、本発明の好適な実施例は、追加丸めモード（ゼロへの丸め及び無限大への丸め）、及び、各モード毎に、追加シフト丸めモードを含む、下記の「拡張丸めテーブル」から生じたものである。さらに、新しいテーブルは、剰余が正、ゼロ、及び、負の領域に分割されている。
【００３７】
【表６】
0003541066.tif 000010
【００３８】
上記テーブルにおいて、「ＱＭ」及び「ＱＰ」は、それぞれ、「Ｑ−１」及び「Ｑ＋１」を表している。Ｑ,１、ＱＭ,１、または、ＱＰ,１の表記は、それぞれ、商Ｑ、ＱＭ、または、ＱＰのシフト・バージョンを表している。
【００３９】
本発明は、いわゆる「クリティカルな経路」を減少させる、換言すれば、最終入力の到着から商選択及びＬＳＢ信号の発生までの総遅延を減少させることと、剰余比較出力をクリティカルな経路の終盤に移行させることと、桁及び商情報の早期到着を利用することを意図したものである。上記テーブルに関連して、本発明では、不可能な場合を除去することによって複雑さを軽減している。本発明では、論理から符号及びゼロ剰余も除去し、選択機能に置き換えている。本発明者は、除算及び平方根計算の下記特性を利用した、後述の「簡略化丸めテーブル」を開発した：
（１）正確な除算では、ガード、剰余、及び、符号ビットがゼロになるように、最後の桁として必ずゼロを選択することになる。これは、その結果が正確に除算したものであれば（すなわち、ｎ＋１の繰り返し時に、部分剰余ｐn+1＝０の場合）、選択すべき唯一の適正な商の桁（ｑn+1）がゼロになるという立証可能な事実に基づくものである。
【００４０】
（２）剰余がゼロに等しい場合をテーブル中の他の場合にマッピングすることによって、２つの丸め単位、すなわち、剰余が正の場合に関する単位と、剰余が負の場合に関する単位をもたらすことが可能である。
【００４１】
下記の簡略化丸めテーブルを用いるためには、該丸め法において、ｐj＝ｋＤの場合、桁ｋが選択されることを保証しなければならない。
【００４２】
【表７】
0003541066.tif 000011
【００４３】
テーブル中央の最後の桁＝０、符号＝０、ゼロ＝１の場合は、正の剰余（「符号＝０」）及び負の剰余（「符号＝１」）の場合にマッピングすることが可能である。従って、テーブルのこの中央部分は、下記の「更なる簡略化丸めテーブル」に示すように、除去することが可能である。
【００４４】
【表８】
0003541066.tif 000012
【００４５】
従って、Ercegovak の方法で用いられた複雑な丸めブロック（図３）は、２つのより単純な丸めブロック、すなわち、正の剰余に関するブロックと負の剰余に関するブロックに置き換えることができる。
【００４６】
最終商及び桁のフォーマットは、下記のようになるはずである：
【００４７】
【数４】
0003541066.tif 000013
【００４８】
最終商のフォーマットは、下記の特性を備えているべきである：
１．ＩＥＥＥの適正な答は、Ｑ、Ｑ−１、または、Ｑ＋１レジスタの値の１つになるか、あるいは、単一操作で１ビット分左にシフトし、ＬＳＢを追加することによって、これらの値の一つから得られるべきである。
【００４９】
２．左へのシフトが必要な場合、繰り返し数が変動してはならない。
【００５０】
３．基数の小数点は、桁境界上に位置すべきである。
【００５１】
この結果、下記の商整列がとれる。
【００５２】
ＩＥＥＥ単精度（２３ビット＋先行１）
【００５３】
【数５】
0003541066.tif 000014
【００５４】
ＩＥＥＥ倍精度（５２ビット＋先行１）
【００５５】
【数６】
0003541066.tif 000015
【００５６】
本発明の丸め法を用いるためには、入力データの整列をあらかじめとっておいて、上記フォーマットの１つによる結果が得られるようにしなければならない。
【００５７】
図４は、本発明の一つの好適な実施例のブロック図である。好適実施例には、入力データ整列回路１０、コア繰り返し回路１２、剰余比較回路１４、及び、丸め及び選択回路１６が含まれている。
【００５８】
入力データ整列回路１０は、上述のように、入力オペランド（「Ａ」及び「Ｂ」で表示）を整列させる。コア繰り返し回路１２には、桁選択回路１２−１、剰余レジスタ１２−２、商論理回路１２−３、剰余形成回路１２−４、及び、商Ｑ、インクリメントした商Ｑ＋１、デクリメントした商Ｑ−１を記憶するための商レジスタ（これらのレジスタは、本書では、それぞれ、「Ｑ」、「ＱＰ」、及び、「ＱＭ」とも呼ばれる）が含まれている。
【００５９】
桁選択回路は、先行技術による既知の方法で、すなわち、部分剰余（ｒＰj）、及び、除算における除数（Ｄ）または平方根計算における部分根（２Ｑj）に基づいて、特定の商の桁を選択することによって、次の商の桁ｑj+1を選択する。商の桁は、固定論理回路を用いて、あるいは、記憶されたテーブル（例えば、除数または部分根に対応する列と、部分剰余に対応する行を備える）から選択することが可能である。
【００６０】
剰余形成回路１２−４は、Ｐj+1項の和及び桁上げビットを発生し、これが、順に、部分剰余レジスタ１２−２に送り返されて、後続の繰り返しに用いられる。剰余形成回路１２−４については、以下に図５を参照して、さらに詳細に記述する。
【００６１】
商論理回路１２−３は、商Ｑを作り上げ、それぞれの商Ｑ、Ｑ＋１、及び、Ｑ−１レジスタを保持する。これらのレジスタの出力は、商論理回路に送り返され、後続の繰り返しに用いられる。商論理回路１２−３については、以下に図６を参照して記述する。
【００６２】
剰余比較回路１４は、剰余コンパレータ１４−１及び論理回路１４−２から構成される。剰余コンパレータ１４−１は、Ｐj+1項の和及び桁上げビットを受信して、上記簡略化丸めテーブルにおいて言及した「符号」及び「ゼロ」ビット（すなわち、剰余＝０、剰余＜０）を出力する。これらのビットは、選択された丸めモード、例えば、シフトまたは正規化された最寄り値への丸め、ゼロへの丸め、または、無限大への丸めを表した、丸めモード信号と共に、論理回路１４−２によって受信される。論理回路１４−２は、最終丸め商として、商レジスタＱ、Ｑ＋１、Ｑ−１のうちの１つの出力を選択するための商選択信号を選択する、丸め選択信号を出力する。
【００６３】
丸め選択ブロック１４−２の論理は、下記のコードによって表される。
【００６４】
【表９】
0003541066.tif 000016
【００６５】
丸め及び選択回路１６には、正の剰余に関する丸めブロック１６−１、負の剰余に関する丸めブロック１６−２、第１のマルチプレクサ１６−３、及び、第２のマルチプレクサ１６−４が含まれている。丸めブロック１６−１及び１６−２は、桁選択回路１２−１から選択された商の桁ｑj+1を受信し、それぞれ、正及び負の部分剰余値に関する商選択信号を発生する。商選択信号は、第１のマルチプレクサ１６−３に入力され、該マルチプレクサは、剰余比較論理回路１４−２によって供給される丸め選択信号に基づいて、これらの商選択信号から選択された信号を出力する。マルチプレクサ１６−３によって出力される商選択信号は、第２のマルチプレクサ１６−４によって、最終丸め商として、Ｑ、Ｑ＋１、Ｑ−１のうちの１つを選択するために利用される。
【００６６】
丸めブロック１６−１及び１６−２の詳細については、その機能性を表した擬似コードによって最も良く説明することができる。
【００６７】
【表１０】
0003541066.tif 000017
【００６８】
【表１１】
0003541066.tif 000018
【００６９】
【表１２】
0003541066.tif 000019
【００７０】
【表１３】
0003541066.tif 000020
【００７１】
【表１４】
0003541066.tif 000021
【００７２】
【表１５】
0003541066.tif 000022
【００７３】
図５は、図４の装置の剰余形成ブロック１２−４に用いられる剰余形成回路の好適実施例の１つに関する概略図である。この回路は、基数４の演算に関するものであるが、他の記数法にも適応可能である。該回路には、部分剰余レジスタ２０、桁上げ保存減算回路２２、第１の３対１「１移動」シフト・レジスタ２４、ＡＮＤゲート２６、桁上げ保存加算／減算回路２８、第２の３対１「１移動」シフト・レジスタ３０、及び、１対の２対１「１移動」シフト・レジスタ３２、３４が含まれている。剰余形成回路の動作については、当業者には明らかである。しかし、完全を期して、下記説明を行うものとする。
【００７４】
例えば、ｊ＋１番目の繰り返しといった、繰り返しの開始時に、部分剰余レジスタ２０には、除算部分剰余ｒＰjまたは平方根部分剰余ｒＰ’jが納められている。ＡＮＤゲート２６の出力は、ゼロ、または、平方根計算のための二乗項である数量ｑ2j+1（ｒ-(j+1)）になる。平方根出力は、ＡＮＤゲートの第２の入力端子に対する「平方根」信号入力が、高（「１」）の場合に供給され、別様の場合、ＡＮＤゲートの出力はゼロになる。ｑ2j+1（ｒ-(j+1)）は、桁選択論理回路１２−３（図４）から商の桁ｑ2j+1（例えば、０、１、または、２）を受信し、入力０、１2*４-j、または、２2*４-jに基づいて、この桁をシフトする第１の１移動シフト・レジスタ２４によって発生する。従って、桁上げ保存減算回路２２は、平方根信号が高か低かによって、ｒＰjまたはｒＰ’j−ｑ2j+1ｒ-(j+1)を出力する。第２の１移動シフト・レジスタ３０は、第１の１移動シフト・レジスタ２４から商の桁ｑ2j+1（例えば、０、１、または、２）を受信し、ｑj+1Ｄまたはｑj+1（２Ｑj）（前者は除算に関するものであり、後者は平方根計算に関するものである）を出力するが、ここで、Ｄは除数を表し、Ｑjは部分根を表している。従って、桁上げ保存加算／減算回路２８は、一方の入力で数量ｒＰjまたはｒＰ’j−ｑ2j+1ｒ-(j+1)を受信し、もう一方の入力で数量ｑj+1Ｄまたはｑj+1（２Ｑj）を受信する。従って、部分剰余レジスタ２０に送り返される桁上げ保存加算／減算回路２８の出力は、除算部分剰余Ｐj+1＝ｒＰj−ｑj+1Ｄ、または、平方根部分剰余Ｐ’j+1＝ｒＰ’j−ｑj+1（２Ｑj）−ｑj+12（ｒ-(j+1)）になる。
【００７５】
図６には、図４にブロック１２−３によって表された、商発生回路の概略が示されている。図示のように、該回路には、２対１マルチプレクサ４０、書き込みシフタ４２、ＯＲゲート４４、Ｑ＋１レジスタ４６、別の２対１マルチプレクサ４８、別の書き込みシフタ５０、別のＯＲゲート５２、Ｑレジスタ５４、別の２対１マルチプレクサ５６、別の書き込みシフタ５８、別のＯＲゲート５９、Ｑ−１レジスタ６０、Ｑ＋１追加／選択論理ブロック６２、Ｑ追加／選択論理ブロック６４、及び、Ｑ−１追加／選択論理ブロック６６が含まれている。この回路の働きについては、特に、商発生動作に関する以上の説明を考慮することにより、当業者には明らかになるであろう。従って、この回路については、これ以上の説明は行わない。
【００７６】
好適な実施例に関する以上の解説は、特許請求の範囲の請求項の保護範囲を暗に制限することを意図したものではない。従って、特に限定されていない限り、特許請求の範囲の請求項は、例えば、基数４の演算を実施するための装置、または、上述の特定のＩＥＥＥ丸めモードに制限されるものではない。
【００７７】
以下に、本発明の実施態様を列記する。
【００７８】
１．（ａ）被除数オペランド及び除数オペランドを整列させ、前記オペランドを規定のフォーマット内に配置するための入力データ整列手段と、
（ｂ）繰り返し商Ｑを構成する際に用いられる商の桁ｑj+1を選択するための桁選択論理回路と、
（ｃ）除算に関する公式
Ｐj+1＝ｒＰj−ｑj+1Ｄ
（ここで、「ｊ」は、前記商の構成に用いられる、繰り返しを表すインデックスであり、「Ｐj」は、ｊ番目の繰り返しにおける剰余を表し、「ｒ」は、コンピュータにおいて数を表すために用いられる記数法の基数を表し、「Ｄ」は、除数を表している）に基づいて、除算の部分剰余Ｐj+1を発生するための剰余形成論理回路と、
（ｄ）公式
Ｑj+1＝Ｑj＋ｒ-(j+1)ｑj+1
（ここで、「Ｑj」は、ｊ番目の繰り返しにおける商Ｑを表す）に基づいて、前記商Ｑを繰り返し構成し、前記商Ｑのデクリメント及びインクリメントを行って、デクリメントした商Ｑ−１及びインクリメントした商Ｑ＋１を求めるための商論理回路と、
（ｅ）商Ｑを記憶するためのＱレジスタ、デクリメントした商Ｑ−１を記憶するためのＱＭレジスタ、及び、インクリメントした商Ｑ＋１を記憶するためのＱＰレジスタと、
（ｆ）複数の規定の丸めモードのうちから選択された１つを示す丸めモード信号を受信し、前記部分剰余Ｐj+1がゼロであるか否か、及び、前記部分剰余がゼロ未満であるか否かを判定し、丸め選択信号を出力するための剰余比較論理回路と、
（ｇ）最終丸め商として、最後の商の桁ｑj+1及び前記丸め選択信号に基づいて、Ｑ、Ｑ−１、及び、Ｑ＋１のうちの１つを選択するための丸め及び選択論理回路とから構成される、
コンピュータにおいて浮動小数点桁毎の除算を実施するための装置。
【００７９】
２．前記丸め及び選択論理回路が、正の剰余に関する丸めブロックと、負の剰余に関する丸めブロックから構成されることと、前記丸めブロックが、それぞれ、商選択信号を送り出すことと、前記丸め選択信号が、前記Ｑ、ＱＭ、及び、ＱＰレジスタからの最終丸め商の選択に利用するため、前記商選択信号のうちの１つを選択することを特徴とする前項１に記載の装置。
【００８０】
３．前記剰余形成論理回路が、さらに、平方根計算に関する以下の公式
Ｐ’j+1＝ｒＰ’j−ｑj+1（２Ｑj）−ｑj+12（ｒ-(j+1)）
に基づいて、平方根部分剰余Ｐ’j+1を発生することと、剰余形成論理回路が、前記除算部分剰余及び平方根部分剰余のうちどちらを発生するかを選択するための手段から構成されることを特徴とする前項１または２に記載の装置。
【００８１】
４．前記剰余形成論理回路は、さらに、
現在の除算部分剰余Ｐjまたは現在の平方根部分剰余Ｐ’jを記憶するための部分剰余レジスタと、
選択的にｑ2j+1ｒ-(j+1)項を出力する第１の１移動シフト・レジスタと、
前記第１の１移動シフト・レジスタ及び前記部分剰余レジスタに結合され、前記部分剰余レジスタから数量ｒＰjを受信し、前記第１の１移動シフト・レジスタが出力するｑ2j+1ｒ-(j+1)の１つまたはゼロを受信して、ｒＰjまたはｒＰ’j−ｑ2j+1ｒ-(j+1)を出力する働きをする桁上げ保存減算回路と、
ｑj+1Ｄまたはｑj+1（２Ｑj）を選択的に出力する（第２の）マルチプレクサ回路と、
前記桁上げ保存減算回路の出力を受信し、前記第２のマルチプレクサ回路の出力を受信して、前記部分剰余レジスタに記憶するために次の除算部分剰余ｒＰj+1または次の平方根部分剰余ｒＰ’j+1を出力する桁上げ保存加算／減算回路とから構成されることを特徴とする前項３に記載の装置。
【００８２】
５．前記規定のフォーマットが、
単精度
００．１ｘｘｘ−−−−−−−ｘＬ  Ｇｘ  「正規化」
００．０１ｘｘｘ−−−−−−−ｘ  ＬＧ  「シフト」
倍精度
０１．ｘｘｘ−−−−−−−−−−−−−−−ｘＬ  Ｇｘ  「正規化」
００．１ｘｘｘ−−−−−−−−−−−−−−−ｘ  ＬＧ  「シフト」
の一方から構成され、ここで、「ｘ」が、０または１を表し、「Ｌ」が、最下位ビット（ＬＳＢ）を表し、「Ｇ」が、ガード・ビットを表すことを特徴とする、前項１〜４の任意の１つに記載の装置。
【００８３】
６．前記規定の丸めモードに、ＩＥＥＥ最寄り値への丸めモード、ＩＥＥＥゼロへの丸めモード、及び、ＩＥＥＥ無限大への丸めモードが含まれることを特徴とする前項１〜５任意の１つに記載の装置。
【００８４】
【発明の効果】
本発明は上述のように構成したので、従来法による複雑な丸めブロックを単純な２つのブロック、つまり正の剰余に関する丸めブロックと負の剰余に関する丸めブロックで構成し、簡略化丸めテーブルを使用して丸め処理を行い、又剰余比較をクリティカルな経路であるコア繰り返し回路の後で実施することにより、丸め処理によってもたらされる総遅延を、剰余比較による遅延にわずかなゲート遅延を加えた程度まで削減することにより、高速な演算処理が可能となる。更に、同じ剰余形成回路を使用して、除算と平方根計算の両方の演算が可能となる。更には、ＩＥＥＥ標準である単精度および倍精度フォーマット、あるいは非正規化仮数を備えた異なるフォーマットにも対応可能であるといった効果がある。
【図面の簡単な説明】
【図１】基数４のＳＲＴ除算を実施するための従来の回路に関するブロック図である。
【図２】先行技術によるＩＥＥＥ丸め処理の概略図である。
【図３】Ercegovak の丸め法を表したブロック図である。
【図４】ＩＥＥＥ丸め規格に基づいて、浮動小数点除算及び平方根計算を実施するための、本発明による装置の一つの好適な実施例に関するブロック図である。
【図５】図４の装置に関する剰余形成ブロック１２−４に用いられる剰余形成回路の概略図である。
【図６】商発生ブロックに用いられる商論理回路の概略図である。
【符号の説明】
１０      入力データ整列回路
１２      コア繰り返し回路
１２−１  桁選択回路
１２−２  剰余レジスタ
１２−３  商論理回路
１２−４  剰余形成回路
１４      剰余比較回路
１４−１  剰余コンパレータ
１４−２  論理回路
１６      丸め及び選択回路
１６−１  正剰余に関する丸めブロック
１６−２  負剰余に関する丸めブロック
１６−３  第１のマルチプレクサ
１６−４  第２のマルチプレクサ
２０      部分剰余レジスタ
２２      桁上げ保存減算回路
２４      第１の３対１「１移動」シフト・レジスタ
２６      ＡＮＤゲート
２８      桁上げ保存加算／減算回路
３０      第２の３対１「１移動」シフト・レジスタ
３２      ２対１「１移動」シフト・レジスタ
３４      ２対１「１移動」シフト・レジスタ
４０      ２対１マルチプレクサ
４２      書き込みシフタ
４４      ＯＲゲート
４６      Ｑ＋１レジスタ
４８      別の２対１マルチプレクサ
５０      別の書き込みシフタ
５２      別のＯＲゲート
５４      Ｑレジスタ
５６      別の２対１マルチプレクサ
５８      別の書き込みシフタ
５９      別のＯＲゲート
６０      Ｑ−１レジスタ
６２      Ｑ＋１追加／選択論理ブロック
６４      Ｑ追加／選択論理ブロック
６６      Ｑ−１追加／選択論理ブロック
【図１】
0003541066.tif 000023
【図２】
0003541066.tif 000024
【図３】
0003541066.tif 000025
【図４】
0003541066.tif 000026
【図５】
0003541066.tif 000027
【図６】
0003541066.tif 000028