(57)【要約】  浮動小数点数の除算Ｘ／Ｙを実行する際、Ｘの仮数部ｘｆとＹの仮数部ｙｆの大小関係に応じて、ｘｆを含む仮数ｘまたはｙｆを含む仮数ｙのビット列データがシフトされ、仮数部演算が実行される。これにより、最上位ビットの位置が所定の桁に固定された、仮数部の除算結果が生成される。また、平方根演算√Ｙを実行する際、Ｙの仮数部の全ビットが１、かつ、Ｙの指数部ｙｅとバイアス値ｂの差分ｙｅ−ｂが奇数、かつ、丸めモードが＋無限大方向という３つの条件のすべてが満たされた場合、例外処理により、最上位ビットの位置が所定の桁に固定された、仮数部の平方根演算結果が生成される。
2007063601.tif 000002
【特許請求の範囲】
【請求項１】
仮数部及び指数部とを有する浮動小数点のオペランドＸ及びオペランドＹに対して演算を実行する演算装置において、
前記Ｘの仮数部ｘｆと前記Ｙの仮数部ｙｆの大小比較を行う比較手段と、
前記ｘｆとｙｆの比較結果に応じて、前記ｘｆを含む仮数ｘ又は前記ｙｆを含む仮数ｙのいずれか一方をシフトするシフト手段と、
前記シフト手段によりシフトされた仮数及び他方の仮数を用いて仮数部演算を実行し、最上位の位置が所定の桁に固定された仮数部の演算結果を出力する仮数部演算手段と、
前記Ｘの指数部ｘｅと前記Ｙの指数部ｙｅとを用いて指数部演算を実行し、前記比較結果に応じて指数部演算の結果を修正して、指数部の演算結果を出力する指数部演算手段と、
を備えることを特徴とする演算装置。
【請求項２】
前記比較手段が、前記ｘｆが前記ｙｆより小さいことを示す比較結果が出力された場合において、
前記シフト手段は、前記ｘを上位方向にシフトし、
前記仮数部演算手段は、前記シフト手段によりシフトされた仮数ｘ及び仮数ｙとを用いて２ｘ／ｙの除算結果を生成し、
前記指数部演算手段は、ｘｅ−ｙｅ−１の減算結果を生成することを特徴とする請求項１記載の演算装置。
【請求項３】
前記比較手段が、前記ｘｆが前記ｙｆより小さいことを示す比較結果が出力された場合において、
前記シフト手段は、前記ｙを下位方向にシフトし、
前記仮数部演算手段は、前記シフト手段によりシフトされた仮数ｘ及び仮数ｙとを用いて２ｘ／ｙの除算結果を生成し、
前記指数部演算手段は、ｘｅ−ｙｅ−１の減算結果を生成することを特徴とする請求項１記載の演算装置。
【請求項４】
前記比較手段が、前記ｘｆが前記ｙｆ以上の大きさであることを示す比較結果が出力された場合において、
前記シフト手段は、前記ｘを下位方向にシフトし、
前記仮数部演算手段は、前記シフト手段によりシフトされた仮数ｘ及び仮数ｙとを用いてｘ／２ｙの除算結果を生成し、
前記指数部演算手段は、ｘｅ−ｙｅ＋１の減算結果を生成することを特徴とする請求項１記載の演算装置。
【請求項５】
仮数部及び指数部とを有する浮動小数点のオペランドＺに対して平方根演算√Ｚを実行する場合において、
前記Ｚの仮数部の全情報が１、かつ、
前記Ｚの指数部ｚｅと演算精度に応じたバイアス値ｂとの差であるｚｅ−ｂが奇数、かつ、
丸めモードが＋無限大方向である場合に、
√Ｚの平方根演算結果を生成する例外処理手段と、
前記指数部演算手段の出力又は前記例外処理手段の出力を選択する選択手段と、
をさらに備えることを特徴とする請求項１記載の演算装置。
【請求項６】
前記例外処理手段は、最上位の位置が所定の桁に固定された仮数部の平方根演算結果を含む√Ｚの演算結果を生成することを特徴とする請求項５記載の演算装置。
【請求項７】
前記指数部演算手段及び前記例外処理手段は、並列に演算結果を生成することを特徴とする請求項５記載の演算装置。
【請求項８】
仮数部及び指数部とを有する浮動小数点のオペランドＹに対して√Ｙの平方根演算を実行する演算装置において、
前記Ｙの仮数部を用いて仮数部演算を実行し、前記Ｙの仮数部の全情報が１、又は、前記Ｙの指数部ｙｅと演算精度に応じたバイアス値ｂの差分ｙｅ−ｂが奇数、又は、丸めモードが＋無限大方向であるという３条件のうち、いずれかの条件が満たされない場合に、最上位の位置が所定の桁に固定された仮数部の平方根演算結果を出力する仮数部演算手段と、
前記Ｙの指数部を用いて指数部演算を実行し、前記Ｙの指数部の平方根演算結果を出力する指数部演算手段と、
前記３条件が満たされた場合に、最上位の位置が所定の桁に固定された仮数部の平方根演算結果を含む√Ｙの演算結果を出力する例外処理手段と
を備えることを特徴とする演算装置。
【請求項９】
仮数部及び指数部とを有する浮動小数点のオペランドＸ及びオペランドＹに対して演算を実行する演算装置を有する情報処理装置において、
前記Ｘの仮数部ｘｆと前記Ｙの仮数部ｙｆの大小比較を行う比較手段と、
前記ｘｆとｙｆの比較結果に応じて、前記ｘｆを含む仮数ｘ又は前記ｙｆを含む仮数ｙをシフトするシフト手段と、
前記シフト手段によりシフトされた仮数ｘ及び仮数ｙとを用いて仮数部演算を実行し、前記比較結果によらずに最上位の位置が所定の桁に固定された仮数部の演算結果を出力する仮数部演算手段と、
前記Ｘの指数部ｘｅと前記Ｙの指数部ｙｅとを用いて指数部演算を実行し、前記比較結果に応じて指数部演算の結果を修正して、指数部の演算結果を出力する指数部演算手段と、
を備える演算装置を有することを特徴とする情報処理装置。
【請求項１０】
仮数部及び指数部とを有する浮動小数点のオペランドＹに対して√Ｙの平方根演算を実行する演算装置を有する情報処理装置において、
前記Ｙの仮数部を用いて仮数部演算を実行し、前記Ｙの仮数部の全情報が１、又は、前記Ｙの指数部ｙｅと演算精度に応じたバイアス値ｂの差分ｙｅ−ｂが奇数、又は、丸めモードが＋無限大方向であるという３条件のうち、いずれかの条件が満たされない場合に、最上位の位置が所定の桁に固定された仮数部の平方根演算結果を出力する仮数部演算手段と、
前記Ｙの指数部を用いて指数部演算を実行し、前記Ｙの指数部の平方根演算結果を出力する指数部演算手段と、
前記３条件が満たされた場合に、最上位の位置が所定の桁に固定された仮数部の平方根演算結果を含む√Ｙの演算結果を出力する例外処理手段と
を備えることを特徴とする演算装置を有することを特徴とする情報処理装置。
【請求項１１】
仮数部及び指数部とを有する浮動小数点のオペランドＸ及びオペランドＹに対して演算を実行する演算方法において、
前記Ｘの仮数部ｘｆと前記Ｙの仮数部ｙｆの大小比較を行うステップと、
前記ｘｆとｙｆの比較結果に応じて、前記ｘｆを含む仮数ｘ又は前記ｙｆを含む仮数ｙをシフトするステップと、
前記シフトされた仮数ｘ及び仮数ｙとを用いて仮数部演算を実行し、前記比較結果によらずに最上位の位置が所定の桁に固定された仮数部の演算結果を出力するステップと、
前記Ｘの指数部ｘｅと前記Ｙの指数部ｙｅとを用いて指数部演算を実行し、前記比較結果に応じて指数部演算の結果を修正して、指数部の演算結果を出力するステップと、
を備えることを特徴とする浮動小数点の演算方法。
【請求項１２】
仮数部及び指数部とを有する浮動小数点のオペランドＹに対して√Ｙの平方根演算を実行する演算方法において、
前記Ｙの仮数部を用いて仮数部演算を実行し、前記Ｙの仮数部の全情報が１、又は、前記Ｙの指数部ｙｅと演算精度に応じたバイアス値ｂの差分ｙｅ−ｂが奇数、又は、丸めモードが＋無限大方向であるという３条件のうち、いずれかの条件が満たされない場合に、最上位の位置が所定の桁に固定された仮数部の平方根演算結果を出力するステップと、
前記Ｙの指数部を用いて指数部演算を実行し、前記Ｙの指数部の平方根演算結果を出力するステップと、
前記３条件が満たされた場合に、最上位の位置が所定の桁に固定された仮数部の平方根演算結果を含む√Ｙの演算結果を出力するステップと
を備えることを特徴とする浮動小数点の演算方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、浮動小数点数の除算または平方根演算を行う演算装置及び演算方法に関する。
【背景技術】
【０００２】
近年のサーバコンピュータやパーソナルコンピュータ等の情報処理装置におけるＣＰＵ（中央処理装置）には、命令セットアーキテクチャとして各種の浮動小数点数演算命令が用意され、当該浮動小数点演算命令を実行する演算装置が設けられている（例えば、下記の特許文献１および２を参照）。【０００３】
浮動小数点数の除算および平方根演算の演算アルゴリズムとして、ＳＲＴ（Sweeney-Robertson-Tocher）法、ニュートン・ラプソン法、ゴールドシュミット法等の演算方法が用いられる。これらの演算方法では、以下の例に示されるように、ループ処理が採用されている。【０００４】
１．ＳＲＴ法
（１）除算
ｒ（０）＝ｏｐ１＿ｆｒａｃ
ｆｏｒ  ｎ＝０  ｔｏ  ｎ＝ｋ
ｒ（ｎ＋１）＝２｛ｒ（ｎ）−ｑ（ｎ＋１）＊ｏｐ２｝
ｉｆ            ｒ（ｎ）≒０，ｑ（ｎ＋１）＝０
ｅｌｓｅ  ｉｆ  ｒ（ｎ）＞０，ｑ（ｎ＋１）＝１
ｅｌｓｅ  ｉｆ  ｒ（ｎ）＜０，ｑ（ｎ＋１）＝−１
ｎ＝ｎ＋１
ｅｎｄ
（２）平方根演算
ｒ（０）＝ｏｐ２＿ｆｒａｃ
ｆｏｒ  ｎ＝0  ｔｏ  ｎ＝ｋ
ｒ（ｎ＋１）＝２｛ｒ（ｎ）−２ｑ（ｎ＋１）＊Ｑ（ｎ）−２（ｋ−ｎ−１）｝
Ｑ（ｎ）＝Σ（ｍ＝１→ｎ）２（ｋ−ｍ）＊ｑ（ｍ）
＝ｐａｒｔｉａｌ  ｑｕｏｔｉｅｎｔ
ｉｆ            ｒ（ｎ）≒０，ｑ（ｎ＋１）＝０
ｅｌｓｅ  ｉｆ  ｒ（ｎ）＞０，ｑ（ｎ＋１）＝１
ｅｌｓｅ  ｉｆ  ｒ（ｎ）＜０，ｑ（ｎ＋１）＝−１
ｎ＝ｎ＋１
ｅｎｄ
２．乗算型演算方法（ゴールドシュミット法）
（１）除算
ｆｏｒ  ｎ＝０  ｔｏ  ｎ＝ｋ
Ｇｎ＝Ｇｎ−１＊Ｆｎ−１  Ｇ０＝ＯＰ２
Ｑｎ＝Ｑｎ−１＊Ｆｎ−１  Ｑ０＝ＯＰ１
Ｆｎ＝２−Ｇｎ            Ｆ０〜１／ＯＰ２  （ｔａｂｌｅ）
ｅｎｄ
（２）平方根演算
ｆｏｒ  ｎ＝０  ｔｏ  ｎ＝ｋ
Ｘｎ＝（Ｘｎ−１）＾２＊ｒｎ−１  Ｘ０＝ＯＰ２
Ｂｎ＝Ｂｎ−１＊ｒｎ−１          Ｂ０＝ＯＰ２
ｒｎ＝１＋１／２（１−Ｘｎ）      ｒ０〜１／√ＯＰ２  （ｔａｂｌｅ）
ｅｎｄ【０００５】
図１は、このような浮動小数点数の除算および平方根演算を行う従来の演算装置の構成図である。図１の演算装置は、レジスタ１１、１２、１５〜１８、２１、２２、２６、２９、３０、仮数部桁合わせシフタ１３、１４、セレクタ１９、２０、３１、特殊オペランド処理回路２３、指数部演算回路２４、仮数部演算回路２５、仮数部丸め回路２７、および仮数部正規化シフタ２８を備える。【０００６】
特殊オペランド処理回路２３は、２つのオペランドｏｐ１およびｏｐ２が所定のデータである場合には演算器による通常の演算処理を実行せずに、当該所定のオペランドに対する固定値データの演算結果を出力する特殊オペランド処理やエラー処理等の例外処理を実行し、指数部演算回路２４は、ｏｐ１およびｏｐ２の指数部の演算を実行する。また、仮数部演算回路２５は、ｏｐ１およびｏｐ２の仮数部の除算および平方根演算を実行する。【０００７】
このような浮動小数点演算において、仮数部演算回路２５の演算結果は、必ずしも正規化数（後に説明を行う）になるとは限らない。さらに、この演算結果には、仮数部丸め回路２７による丸め処理が施されるが、丸め処理の後に、最上位ビットの繰り上がりが起こる可能性もある。そこで、通常は、丸め処理の後に仮数部正規化シフタ２８により仮数部を正規化シフトするとともに、レジスタ２９を介して、そのシフト量に応じた数値を指数部に加算している。【０００８】
図２は、図１の特殊オペランド処理回路２３の構成図である。特殊オペランド処理回路２３は、特殊オペランド検出回路４１および生成回路４２を含む。特殊オペランド検出回路４１は、演算対象のオペランドであるｏｐ１およびｏｐ２の値から、特殊オペランド処理または例外処理が必要なオペランドを検出し、検出信号を生成回路４２に出力するとともに、選択信号ｓｅｌ  ｎｏｒｍａｌ／ｓｐｅｃｉａｌを出力する。【０００９】
生成回路４２は、特殊オペランド検出回路４１からの検出信号と、例えばＩＥＥＥ（Institute of Electrical and Electronic Engineers）７５４規格に代表される浮動小数点演算数の仕様における丸めモード指定信号ｒｄと、指数部演算回路２４からのオーバーフロー／アンダーフロー検出信号ｅｘｐ  ｏｖｆ／ｕｄｆとに基いて、特殊演算結果または例外フラグを生成し、信号ｓｐｅｃｉａｌ  ｒｅｓとして出力する。【００１０】
図１のセレクタ３１は、選択信号ｓｅｌ  ｎｏｒｍａｌ／ｓｐｅｃｉａｌにより切り替えられ、生成回路４２からの信号ｓｐｅｃｉａｌ  ｒｅｓ、または指数部演算回路２４および仮数部演算回路２５により生成される通常の演算結果を選択して出力する。【００１１】
しかしながら、上述した従来の演算装置には、次のような問題がある。
浮動小数点数の除算および平方根演算においては、仮数部演算回路２５の演算結果は必ずしも正規化数になるとは限らないため、丸め処理の結果が指数部の演算結果に影響を与えることになる。【００１２】
このとき、仮数部正規化シフタ２８に対する選択信号と、指数部加算のためのレジスタ２９への入力信号は、仮数部丸め回路２７内のインクリメンタのキャリーアウト信号、またはそれに準じる上位ビット信号から生成される。したがって、インクリメンタによるキャリーの伝播がキャリーアウト信号または上位ビット信号にまで伝播するのに時間がかかるため、一般的にこれらの信号はディレイ上のボトルネックとなり得る。また、指数部加
算の結果により、指数部演算回路２４にてオーバーフローまたはアンダーフローが発生する可能性があるため、加算結果に対しては、その後の例外処理をも考慮する必要が生じる。【００１３】
このように、仮数部演算回路２５の演算結果から発生するデータの一連の流れは、演算装置の高速化を妨げる要因であり、回路構成を複雑化する要因でもあった。
【特許文献１】特開平０７−１８２１４３号公報
【特許文献２】特表平０４−５０７０２３号公報
【発明の開示】
【００１４】
本発明の課題は、浮動小数点数の除算および平方根演算における仮数部演算の結果を一定の形式に揃えることで、演算の高速化及び回路構成の単純化を実現することである。
【００１５】
図３は、本発明の第１および第２の演算装置の原理図である。
本発明の第１の演算装置は、比較部１０１、シフト部１０２、仮数部演算部１０３、および指数部演算部１０４を備え、浮動小数点数ＸおよびＹがオペランドとして入力されたとき、Ｘ／Ｙにかかる除算命令を実行する。
【００１６】
比較部１０１は、Ｘの仮数部ｘｆとＹの仮数部ｙｆとの大小を比較し、シフト部１０２は、ｘｆとｙｆとの比較結果に応じて、ｘｆを含む仮数ｘまたはｙｆを含む仮数ｙのビット列データをシフトする。仮数部演算部１０３は、シフト後のｘおよびｙを用いて仮数部演算を実行し、上記比較結果によらずに最上位ビットの位置が所定の桁に固定された仮数部の除算結果を出力する。指数部演算部１０４は、Ｘの指数部ｘｅとＹの指数部ｙｅを用いて指数部演算を実行し、上記比較結果に応じて指数部演算の結果を修正して、指数部の除算結果を出力する。
【００１７】
入力オペランドのうちｘｆとｙｆに相当するビット列データが比較部１０１に入力されると、ｘｆとｙｆの大小関係を示す信号がシフト部１０２および指数部演算部１０４に出力される。その信号に従って、シフト部１０２は、ｘまたはｙのビット列データをあらかじめ決められた方向にシフトし、指数部演算部１０４は、ｘｅとｙｅの演算結果をあらかじめ決められた演算により修正を行う。仮数部演算部１０３は、シフト後のビット列データを用いることで、ｘｆとｙｆの大小関係によらずに最上位ビットの位置が所定の桁に固定された、仮数部の除算結果のビット列データを生成する。
【００１８】
浮動小数点数の除算では、後述するように、ｘｆとｙｆの大小関係によって、ｘ／ｙの演算結果のビット列データにおける最上位ビットの位置が変わってくる。そこで、ｘ＜ｙのような特定の大小関係が成り立つ場合に限って仮数部の演算方法を変更することにより、最上位ビットを所定の位置に固定することができる。
【００１９】
本発明の第２の演算装置は、仮数部演算部１０３、指数部演算部１０４、および例外処理部１０５を備え、浮動小数点数Ｙがオペランドとして入力されたとき、√Ｙの平方根演算を実行する。
【００２０】
仮数部演算部１０３は、Ｙの仮数部を用いて仮数部演算を実行し、Ｙの仮数部の全ビットが１、かつ、Ｙの指数部ｙｅとバイアス値ｂの差分ｙｅ−ｂが奇数、かつ、ＩＥＥＥ７５４に代表される浮動小数点演算仕様における丸めモードが＋無限大方向（正の無限大に近い方に丸める）という３つの条件のいずれかが満たされない場合に、最上位ビットの位置が所定の桁に固定され、正規化された仮数部の平方根演算結果を出力する。指数部演算部１０４は、Ｙの指数部を用いて指数部演算を実行し、指数部の平方根演算結果を出力する。例外処理部１０５は、上記３つの条件がすべて満たされた場合に、最上位ビットの位
置が所定の桁に固定され、正規化された仮数部の平方根演算結果を含む、√Ｙの演算結果を出力する。
【００２１】
上記３つの条件のいずれかが満たされない場合、最上位ビットの位置が所定の桁に固定され、正規化された仮数部の平方根演算結果のビット列データが、仮数部演算部１０３から出力され、対応する指数部の平方根演算結果のビット列データが、指数部演算部１０４から出力される。一方、上記３つの条件がすべて満たされた場合、これらの条件に適合し、かつ、仮数部の平方根演算結果の最上位ビットが上記所定の桁に固定され、正規化された仮数部の平方根演算結果を含む、√Ｙの演算結果のビット列データが、例外処理部１０５から出力される。
【００２２】
浮動小数点数の平方根演算では、後述するように、上記３つの条件がすべて満たされた場合にのみ、仮数部の演算結果のビット列データにおける最上位ビットの位置が変わってくる。そこで、このような場合を例外として扱うことで、最上位ビットを所定の位置に固定することにより正規化を行うことができる。
【００２３】
比較部１０１は、例えば、後述する図５の仮数部比較回路３０３または図９の仮数部比較回路７００に対応し、シフト部１０２は、例えば、図５の仮数部桁合わせシフタ３０４、図８の仮数部桁合わせシフタ６０１、または図９の仮数部桁合わせシフタ７０１に対応する。
【００２４】
仮数部演算部１０３は、例えば、図５の仮数部演算回路３１７および仮数部丸め回路３１９に対応し、指数部演算部１０４は、例えば、図５の指数部演算回路３１６または図９の指数部演算回路７０４に対応する。例外処理部１０５は、例えば、図５の特殊オペランド処理回路３１５に対応する。
【図面の簡単な説明】
【００２５】
【図１】従来の演算装置の構成図である。
【図２】従来の特殊オペランド処理回路の構成図である。
【図３】本発明の演算装置の原理図である。
【図４】浮動小数点数の仕様を示す図である。
【図５】本発明の演算装置の構成図である。
【図６】本発明の特殊オペランド処理回路の構成図である。
【図７】Ｘの指数部を減算する構成を示す図である。
【図８】Ｙの指数部を加算する構成を示す図である。
【図９】最上位ビットを小数点以下第１位に固定する構成を示す図である。
【図１０】本発明の効果を示す図である。
【発明を実施するための最良の形態】
【００２６】
以下、図面を参照しながら、本発明を実施するための最良の形態を詳細に説明する。
本実施形態では、浮動小数点の除算および平方根演算において、演算の初期段階でオペランドの最適化を行う、または特別な入力オペランドを例外処理へ回すことにより、丸め処理の結果を待たずに指数部演算の結果が確定できるようになる。これにより、オーバーフローおよびアンダーフローを、仮数部演算の結果に関係なく、指数部演算の結果のみで判定することができ、設計上最も大きなディレイ要因を排除できる。【００２７】
以下では、ＩＥＥＥ（Institute of Electrical and Electronic Engineers）７５４規格の浮動小数点数の仕様を例にして説明する。ＩＥＥＥ浮動小数点数は、図４に示されるように、符号ｓ、指数部ｅ、および仮数部ｆからなり、次式で表される数値（正規化数）を意味する。
（−１）s ×２(e-b) ×１．ｆ
ここで、ｂは、単精度の場合、ｂ＝１２７、倍精度の場合、ｂ＝１０２３の値を持つバイアス値である。単精度の場合、浮動小数点数の全ビット長は３２ビットであり、ｓ、ｅ、およびｆのビット長はそれぞれ１、８、および２３ビットである。また、倍精度の場合、浮動小数点数の全ビット長は６４ビットであり、ｓ、ｅ、およびｆのビット長はそれぞれ１、１１、および５２ビットである。【００２８】
上式の“１．ｆ”は、整数部分が１（暗黙の１と呼ばれる）で、小数点以下がｆで表される２進数である。演算結果がｆの有効数字範囲内に収まらない場合は、ＩＥＥＥ丸め規則に従って、有効数字最下位ビットに丸められる。この有効数字最下位ビットのサイズをδとすると、単精度の場合、δ＝２-23 、倍精度の場合、δ＝２-52 である。上記説明から分かるように、ＩＥＥＥ浮動小数点数フォーマットの仮数部は、δを最小単位とした有限小数である。  “１．ｆ”の存在範囲は、次式により表される。
１≦１．ｆ≦２−δ      （１）
“１．ｆ”は連続的な値を取る数ではなく、上記不等式の範囲を満たすようなδの倍数である。
１．ｆ＝ａ×δ  ：ａは整数
【００２９】
つまり、“１．ｆ”は、実数の数直線上におけるδ間隔の格子点に存在している。丸めとは、δの倍数ではない数を、その近傍に存在するδの倍数で近似することをいう。したがって、丸め前の値とは、このような制限を受けていない実数であり、丸め後の値とは、上記制約を満たす数（＝１．ｆ）といえる。【００３０】
ある演算結果の丸め前の値が不等式（１）の範囲外の値を取る場合、ＩＥＥＥ浮動小数点フォーマットを満たす値（正規化数）とするために、丸め後の値（＝１．ｆ）に正規化シフトが必要になる可能性がある。【００３１】
逆に、丸め前の値が不等式（１）の範囲内ならば、丸め後の“１．ｆ”に正規化シフトを行う必要はない。この不等式の上限および下限の数はδの倍数であるから、ある実数が不等式の範囲内ならば、丸め後の値は最大（最小）でもこの上限（下限）と同じ値であり、上限（下限）を超えることはない。【００３２】
次に、除算Ｘ÷Ｙの仮数部演算について考察する。Ｘの仮数（１．ｆ）をｘ、Ｙの仮数（１．ｆ）をｙとする。
まず、ｘ≧ｙとすると、除算ｒ＝ｘ÷ｙの最大値は、ｙ＝１、ｘ＝２−δのときのｒ＝２−δとなり、最小値は、ｘ＝ｙのときのｒ＝１となる。よって、１≦ｒ≦２−δとなり、不等式（１）から、丸め後の値が正規化シフトを必要としないことが分かる。【００３３】
ｘ＜ｙのときは、オペランドに適当な前処理を施すことで、丸め後の値に対する正規化シフトを省略することが可能になる。例えば、Ｘの指数部から１を減算し、仮数を２ｘとして、除算ｒ＝２ｘ÷ｙを行う。【００３４】
このとき、２ｘ＞ｙが成り立つので、２ｘ／ｙ＞１となる。また、ｘ＜ｙなので、ｘ／ｙ＜１⇔２ｘ／ｙ＜２が成り立つ。したがって、次式が得られる。
１＜２ｘ／ｙ＜２      （２）
（２）式より、数学的に正確な値（丸め前の値）では、２ｘ／ｙの最上位ビットは１の位にあることが分かる。そこで、２ｘ／ｙの取り得る最大値をさらに詳しく調べる。【００３５】
ｘ＜ｙより、２ｘ／ｙが最大値を取るのは、ｘ／ｙが１未満かつ最も１に近い場合、つまり、ｘ＝ｙ−δの場合である。このとき、ｒ＝２ｘ／ｙ＝２−２δ／ｙとなり、ｙ＜２だから、２δ／ｙ＞２δ／２＝δとなる。したがって、次式が成り立つ。
２ｘ／ｙ＝２−２δ／ｙ＜２−δ      （３）
（２）式と（３）式を合わせると、１＜２ｘ／ｙ＜２−δとなり、丸め後の値が正規化シフトを必要としないことが分かる。【００３６】
ところで、ｘ＜ｙの場合のオペランドに対する前処理として、Ｙの指数部に１を加算し、仮数をｙ／２とする方法もある。この場合にも、上記と同様にして、丸め後の値が正規化シフトを必要としないことが説明できる。【００３７】
次に、平方根演算√Ｙの仮数部演算について考察する。Ｙの符号を０、指数部をｅ、仮数（１．ｆ）をｙとする。このとき、√Ｙ＝√（２(e-b) ×ｙ）となる。
（ｅ−ｂ）が偶数（２ｎ）のとき、√Ｙは、次式のように変形できる。
√Ｙ＝√（２2n×ｙ）＝（√ｙ）×２n 
（ｅ−ｂ）が奇数（２ｎ＋１）のとき、√Ｙは、次式のように変形できる。
√Ｙ＝√（２(2n+1)×ｙ）＝√（２2n×２ｙ）＝｛√（２ｙ）｝×２n 
（ｅ−ｂ）が偶数のとき、平方根ｑ＝√ｙ（１≦ｙ＜２）とすると、ｑは次式を満たす。
１≦ｑ＜√２＝１．０１１０・・・（２進）      （４）
不等式（４）は、√ｙの丸め後の値が正規化シフトを必要としないことを示している。【００３８】
（ｅ−ｂ）が奇数のとき、平方根ｑ＝√（２ｙ）とすると、２≦２ｙ＜４であるから、ｑは次式を満たす。
√２≦ｑ＜２      （５）
（５）式より、数学的に正確な値においては、√（２ｙ）の最上位ビットは１の位にあることが分かる。そこで、√（２ｙ）の取り得る最大値をさらに詳しく調べる。【００３９】
√（２ｙ）が最大値を取るのは、ｙ＝２−δのときである。このとき、√（２ｙ）＝√（４−２δ）となる。また、δ2 ＜＜δと考えて良いので、次式が得られる。
４−４δ＋δ2 ＜４−２δ＜４−２δ＋（δ／２）2 
⇔  （２−δ）2 ＜４−２δ＜（２−δ／２）2 
⇔  ２−δ＜√（４−２δ）＜２−δ／２                    （６）
（６）式の左側の不等式を見ると、２−δ＜√（４−２δ）となっており、√（２ｙ）が正規化シフト不要となる範囲を超えてしまっていることが分かる。【００４０】
ちなみに、２−δは、“１．ｆ”の取り得る最大値を意味し、２−δ／２は、“１．ｆ”の取り得る最大値＋ガードビットサイズを意味する。ガードビットとは、最下位ビットのさらに下位の桁を意味し、そのサイズはδ／２である。したがって、丸めモードが＋無限大方向の場合にのみ、√（２ｙ）の最上位ビットが桁上がりを起こし、正規化シフトが必要となってしまうことが分かる。【００４１】
√（２ｙ）がその次に大きな値を取るのは、ｙ＝２−２δのときである。このとき、√（２ｙ）＝√（４−４δ）となる。（６）式において、δを２δに置き換えると、次式が得られる。
２−２δ＜√（４−４δ）＜２−δ      （７）
（７）式より、√（２ｙ）は正規化シフト不要の範囲内にあることが分かる。ｆ（ｘ）＝√ｘ（ｘ＞０）は単調増加な関数であるから、ｘ１＜ｘ２であることと、√ｘ１＜√ｘ２であることは、必要十分条件の関係にある。つまり、ｘ１＜ｘ２なのに、√ｘ１＞√ｘ２となることはなく、ｘ１＜ｘ２であれば、必ず√ｘ１＜√ｘ２となる。【００４２】
したがって、ｙが最大値を取るときのみが例外ケースとなり、それ以外の場合には演算結果に対する正規化シフトが不要であることが分かる。
上述の説明では、平方根演算の入力仮数を１≦ｙまたは２ｙ＜４という範囲で考察したが、１／４≦ｙまたは２ｙ＜１という範囲で考察を行う方法もある。この場合の説明も、上述の説明と同等である。【００４３】
以上の考察より、演算開始時にオペランドに対する場合分けを行い、必要な前処理を施すことで、丸め処理後の正規化シフト処理を論理から削除することが可能になる。場合分けをまとめると、以下の通りである。
１．除算
仮数ｘ＜ｙ  ⇒  Ｘの指数−１，仮数部演算２ｘ÷ｙ
または  ⇒  Ｙの指数＋１，仮数部演算ｘ÷（ｙ／２）等
２．平方根演算
（ｅ−ｂ）が奇数，かつ、仮数ｙ＝ｍａｘ  ⇒  例外処理【００４４】
次に、図５から図８までを参照しながら、このような除算および平方根演算を行う演算装置について説明する。
図５は、実施形態の演算装置の構成図である。図５の演算装置は、ｏｐ１全体が格納される第１オペランドｏｐ１用レジスタ３０１、ｏｐ２全体が格納される第２オペランドｏｐ２用レジスタ３０２、ｏｐ１全体が格納される第１オペランドｏｐ１用ステージングラッチ３０６、ｏｐ１の指数部が格納される第１オペランドｏｐ１指数部用ステージングラッチ３０８、ｏｐ２全体が格納される第２オペランドｏｐ２用ステージングラッチ３０７、ｏｐ２の指数部が格納される第２オペランドｏｐ１指数部用ステージングラッチ３０９、仮数部比較結果が格納される仮数部比較結果用ステージングラッチ３１０、ｏｐ１の仮数部が格納される第１オペランドｏｐ１仮数部用レジスタ３１３、ｏｐ２の仮数部が格納される第２オペランドｏｐ２仮数部用レジスタ３１４、仮数部演算回路の演算結果が格納される仮数部演算回路出力用ステージングラッチ３１８、仮数部比較回路３０３、仮数部桁合わせシフタ３０４、３０５、仮数部演算回路の第１オペランドセレクタ３１１、仮数部演算回路の第２オペランドセレクタ３１２、演算回路出力セレクタ３２０、特殊オペラ
ンド処理回路３１５、指数部演算回路３１６、仮数部演算回路３１７、および仮数部丸め回路３１９を備える。【００４５】
特殊オペランド処理回路３１５は、２つのオペランドｏｐ１およびｏｐ２が所定のデータである場合には演算器による通常の演算処理を実行せずに、当該所定のオペランドに対する固定値データの演算結果を出力する特殊オペランド処理やエラー処理等の例外処理を実行する。例えば、平方根演算が指定され、かつ、オペランドｏｐ２の仮数部の全ビットが１であり、かつ、オペランドｏｐ２の指数部とバイアス値との差である（ｅ−ｂ）が奇数であり、かつ、丸め方向が＋無限大方向である場合には、指数部演算回路３１６に対して、当該平方根演算結果の最上位ビットに桁上がりを発生させるためのキャリー信号である信号ｅｘｐ  ｒｅｓｕｌｔ  ＋１を出力する。さらに、以下に説明するオーバーフロー／アンダーフロー検出信号ｅｘｐ  ｏｖｆ／ｕｄｆを指数部演算回路３１６から受信した場合には、特殊演算結果または例外フラグの生成を行い、特殊演算結果または例外フラグを信号ｓｐｅｃｉａｌ  ｒｅｓとして出力する。【００４６】
指数部演算回路３１６は、ｏｐ１およびｏｐ２の指数部の演算を実行する。例えば、除算においては、ｏｐ１の指数部ｘｅとｏｐ２の指数部ｙｅとを用いて、ｘｅ−ｙｅ−１またはｘｅ―ｙｅ＋１を指数部演算結果信号ｅｘｐ  ｒｅｓｕｌｔとして出力する。さらに、特殊オペランド処理回路３１５から信号ｅｘｐ  ｒｅｓｕｌｔ  ＋１を受信した場合には、指数部演算回路３１６の出力である指数部演算結果に１を加算する。また、指数部演算の結果オーバーフロー／アンダーフローが発生した場合には、特殊オペランド回路に対してオーバーフロー／アンダーフロー検出信号ｅｘｐ  ｏｖｆ／ｕｄｆを出力する。【００４７】
また、仮数部演算回路３１７は、ｏｐ１およびｏｐ２の仮数部の除算および平方根演算を実行する。ｏｐ１およびｏｐ２は、上述したＸおよびＹにそれぞれ対応する。また、信号ｌｏｏｐは、減算の繰り返しにより除算を実行するためのフィードバック信号である。【００４８】
仮数部桁合わせシフタ３０４および３０５は、それぞれｏｐ１およびｏｐ２の仮数部のビット列データを、必要に応じて左方向または右方向（上位ビット方向または下位ビット方向）にシフトする機能を有する。【００４９】
図６は、図５の特殊オペランド処理回路３１５の構成図である。特殊オペランド処理回路３１５は、特殊オペランド検出回路４０１、生成回路４０２、ＡＮＤ回路４０３、ＯＲ回路４０４、およびセレクタ４０５を含む。【００５０】
特殊オペランド検出回路４０１は、ｏｐ１およびｏｐ２の値が所定のデータである場合には通常の演算器による演算処理を実行せずに、当該所定のオペランドに対する固定値データの演算結果を出力する特殊オペランド処理またはエラー処理等の例外処理が必要なオペランドを検出し、検出信号を生成回路４０２およびＯＲ回路４０４に出力する。【００５１】
上記特殊オペランド処理の一例として、丸めモードが＋無限大方向の場合、かつ、オペランドの指数部とバイアス値との差である（ｅ−ｂ）が奇数の場合において、仮数部の全ビットが１（ｙが最大値）であるオペランドに対する平方根演算が考えられる。【００５２】
ＡＮＤ回路４０３は、以下に説明する４つの信号４１１〜４１４の論理積を、信号ｅｘｐ  ｒｅｓｕｌｔ  ＋１として、ＯＲ回路４０４および指数部演算回路３１６に出力する。信号４１１は、平方根演算が指定されたときにアサートされる命令デコーダ（図示せず）の出力信号である。信号４１２は、オペランドｏｐ２の仮数部の全ビットが１（ｙが最大値）のときにアサートされるオペランドデコーダ（図示せず）の出力信号である。また、信号４１３は、オペランドｏｐ２の（ｅ−ｂ）が奇数のときにアサートされるオペラン
ドデコーダ（図示せず）の出力信号である。信号４１４は、丸めモードが＋無限大方向のときにアサートされる演算モードレジスタ（図示せず）の出力信号である。【００５３】
したがって、ＡＮＤ回路４０３の出力信号ｅｘｐ  ｒｅｓｕｌｔ  ＋１は、平方根演算において、平方根演算の対象のオペランドが所定のデータである場合には通常の演算器による演算処理を実行せずに、当該所定のオペランドに対する固定値データの演算結果を出力する特殊オペランド処理またはエラー処理等の例外処理が必要な場合にのみアサートされることになる。また、指数部演算回路に対しては、当該平方根演算結果の最上位ビットに桁上がりを発生させるためのキャリー信号である信号ｅｘｐ  ｒｅｓｕｌｔ  ＋１を出力する。【００５４】
ＯＲ回路４０４は、特殊オペランド検出回路４０１からの検出信号とＡＮＤ回路４０３の出力信号の論理和を、選択信号ｓｅｌ  ｎｏｒｍａｌ／ｓｐｅｃｉａｌとして出力する。【００５５】
生成回路４０２は、特殊オペランド検出回路４０１からの検出信号と、ＡＮＤ回路４０３の出力信号と、丸めモード指定信号ｒｄと、指数部演算回路３１６からのオーバーフロー／アンダーフロー検出信号ｅｘｐ  ｏｖｆ／ｕｄｆとに基いて、特殊演算結果または例外フラグの生成を行い、当該信号によりオーバーフロー／アンダーフローの発生が検出された場合には、特殊演算結果または例外フラグを信号ｓｐｅｃｉａｌ  ｒｅｓとして出力する。特殊演算結果の指数部は信号ｓｐｅｃｉａｌ  ｅｘｐとして出力され、仮数部は信号ｓｐｅｃｉａｌ  ｆｒａｃｔｉｏｎとして出力される。【００５６】
特に、ＡＮＤ回路４０３の出力信号がアサートされた場合は、生成回路４０２は（ｅ−ｂ）が奇数、かつ、仮数部の全ビットが１、かつ、丸めモードが＋無限大方向の場合における仮数部の平方根演算√（２ｙ）の結果を生成し、信号ｓｐｅｃｉａｌ  ｆｒａｃｔｉｏｎとして出力する。仮数部の全ビットが１の場合、√（２ｙ）の演算結果は一意に特定できるので、例えば、生成回路４０２内にあらかじめ格納しておく。この場合の指数部の平方根演算の結果は、ｅｘｐ  ｒｅｓｕｌｔとして指数部演算回路３１６から供給される。【００５７】
セレクタ４０５は、ＡＮＤ回路４０３の出力信号により切り替えられ、例外処理の条件を全て満足することによりＡＮＤ回路４０３の出力信号がアサートされると、指数部演算回路３１６からの演算結果ｅｘｐ  ｒｅｓｕｌｔを選択して出力する。また、例外処理の条件のいずれかが欠けることによりＡＮＤ回路４０３の出力信号がデアサートされると、生成回路４０２からの信号ｓｐｅｃｉａｌ  ｅｘｐを選択して出力する。特殊オペランド処理回路３１５は、セレクタ４０５の出力信号と信号ｓｐｅｃｉａｌ  ｆｒａｃｔｉｏｎを併せて、信号ｓｐｅｃｉａｌ  ｒｅｓとして出力する。【００５８】
図５のセレクタ３２０は、特殊オペランド処理回路３１５が生成する選択信号ｓｅｌ  ｎｏｒｍａｌ／ｓｐｅｃｉａｌにより切り替えられ、選択信号ｓｅｌ  ｎｏｒｍａｌ／ｓｐｅｃｉａｌがアサートされると、生成回路４０２からの信号ｓｐｅｃｉａｌ  ｒｅｓを選択して出力する。また、選択信号ｓｅｌ  ｎｏｒｍａｌ／ｓｐｅｃｉａｌがデアサートされると、指数部演算回路３１６および仮数部演算回路３１７により生成される通常の演算結果を選択して出力する。【００５９】
このような特殊オペランド処理回路３１５によれば、平方根演算の対象となるオペランドの（ｅ−ｂ）が奇数であり、かつ、仮数部の全ビットが１の場合の演算結果を、仮数部演算回路３１７とは独立に生成することができる。この場合、仮数部丸め回路３１９の出力は選択されないので、正規化のためのシフトは不要となる。【００６０】
図７は、図５の仮数部比較回路３０３、仮数部桁合わせシフタ３０４、３０５、仮数部比較結果用ステージングラッチ３１０、および指数部演算回路３１６からなる回路部分を示している。この例では、オペランドｏｐ１の仮数をｘ、オペランドｏｐ２の仮数をｙとして、ｘ＜ｙである場合に、Ｘの指数部から１が減算され、除算２ｘ÷ｙが実行される。【００６１】
このとき、仮数ｘに対応するオペランドｏｐ１の仮数部ｏｐ１  ｆｒａｃは、仮数部比較回路３０３および仮数部桁合わせシフタ３０４に入力され、仮数ｘに対応するオペランドｏｐ２の仮数部ｏｐ２  ｆｒａｃは、仮数部比較回路３０３および仮数部桁合わせシフタ３０５に入力される。そして、仮数部比較回路３０３は、ｏｐ１  ｆｒａｃとｏｐ２  ｆｒａｃとを比較し、ｏｐ１  ｆｒａｃ＜ｏｐ２  ｆｒａｃである場合に、当該比較結果を示す出力信号をアサートする。【００６２】
これを受けて、仮数部桁合わせシフタ３０４は、暗黙の１を含めた仮数ｘを２倍するために、仮数部比較回路３０３からの出力に応じてｘを１ビットだけ左にシフトする。これにより、仮数部演算回路３１７は、２ｘ／ｙの演算結果を生成する。【００６３】
また、ＸおよびＹの指数部をそれぞれｘｅおよびｙｅとすると、指数部の除算結果は以下のようになる。
（ｘｅ−１）−ｙｅ＝ｘｅ−ｙｅ−１
そこで、仮数部比較結果用ステージングラッチ３１０は、仮数部比較回路３０３の出力信号がアサートされたとき、“−１”を表す数値を指数部演算回路３１６に出力する。これを受けて、指数部演算回路３１６は、仮数Ｘに対するオペランドｏｐ１の指数部ｏｐ１
ｅｘｐからオペランドｏｐ２の指数部ｏｐ２  ｅｘｐを減算した結果にさらに“−１”を加算し、演算結果ｅｘｐ  ｒｅｓｕｌｔとして出力する。【００６４】
さらに、当該演算は平方根演算ではなく除算であるため、図６のＡＮＤ回路４０３の出力は０となり、特殊オペランド処理回路３１５の出力である信号ｓｅｌ  ｎｏｒｍａｌ／ｓｐｅｃｉａｌは、ｓｅｌ  ｎｏｒｍａｌが選択される。従って，セレクタ３２０では、ｓｅｌ  ｎｏｒｍａｌ側が選択されることになり、最終的にｅｘｐ  ｒｅｓｕｌｔが演算結果として出力される。【００６５】
図８は、上述した図７の実施例においてｘ＜ｙの場合に除算２ｘ÷ｙを実行する代わりに、当該除算と等価な除算ｘ÷（ｙ／２）を実行する構成を示している。この場合、ｙの指数部に１が加算され、図７の仮数部桁合わせシフタ３０５は仮数部桁合わせシフタ６０１に置き換えられる。【００６６】
仮数部比較回路３０３によりｏｐ１  ｆｒａｃとｏｐ２  ｆｒａｃが比較され、仮数部比較回路３０３の出力信号がアサートされると、仮数部桁合わせシフタ６０１は、暗黙の１を含めた仮数ｙを１／２倍するために、ｙを１ビットだけ右にシフトする。これにより、仮数部演算回路３１７は、図５の場合と同様に、２ｘ／ｙの演算結果を生成する。【００６７】
また、指数部の除算結果は以下のようになる。
ｘｅ−（ｙｅ＋１）＝ｘｅ−ｙｅ−１
したがって、図８に示した仮数部比較結果用ステージングラッチ３１０と指数部演算回路３１６の動作による演算結果は、図５の場合と等価となる。【００６８】
図７または図８に示した構成によれば、除算の対象となる２つのオペランドの仮数ｘおよびｙがｘ＜ｙを満たす場合、いずれか一方の仮数をシフトするだけで、最上位ビットが１の位に固定された仮数部演算結果を得ることができる。したがって、丸め処理後の正規化シフトは不要となる。【００６９】
除算と平方根演算で共通の演算後処理回路を持つ演算装置から仮数部正規化シフタを削除するためには、図７および図８の例に示した２つの場合分けが必須となる。言い換えれば、除算と平方根演算の結果の最上位ビット位置が同じとなる条件により当該演算を行う必要がある。【００７０】
図７および図８の例では、丸め処理後の演算結果の最上位ビットが１の位に固定されているが、最上位ビットの位置は、それ以外の所定位置であっても構わない。例えば、最上位ビットが小数点以下第１位に固定されるような演算方法を用いることもできる。この場合、上述した除算の前処理は、例えば、以下のように変更され、平方根演算では、１／４≦ｙまたは２ｙ＜１の範囲で仮数部の演算が行われる。
仮数ｘ≧ｙ  ⇒  Ｘの指数＋１，仮数部演算（ｘ／２）÷ｙ
【００７１】
図９は、この演算方法を適用した構成を示している。この構成では、図７の仮数部比較回路３０３は、仮数部比較回路７００に置き換えられ、仮数部桁合わせシフタ３０４および３０５は、仮数部桁合わせシフタ７０１および７０２に置き換えられる。また、仮数部比較結果用ステージングラッチ３１０および指数部演算回路３１６は、レジスタ７０３および指数部演算回路７０４に置き換えられる。さらに、指数部演算回路７０４の後段に減算回路７０５が追加され、仮数部丸め回路３１９の後段に仮数部正規化シフタ７０６が追加される。【００７２】
除算を実行する場合、仮数部比較回路７００は、ｏｐ１  ｆｒａｃとｏｐ２  ｆｒａｃを比較し、ｏｐ１  ｆｒａｃ≧ｏｐ２  ｆｒａｃである場合に、当該比較結果を示す出力信号をアサートする。【００７３】
これを受けて、仮数部桁合わせシフタ７０１は、暗黙の１を含めた仮数ｘを１／２倍するために、ｘを１ビットだけ右にシフトする。これにより、仮数部演算回路３１７は、ｘ／（２ｙ）の演算結果を生成し、仮数部丸め回路３１９は、仮数部演算回路３１７の演算結果に対して最上位ビットが小数点以下第１位に固定された演算結果を出力する。そして、仮数部正規化シフタ７０６は、仮数部丸め回路３１９からの演算結果を１ビットだけ左にシフトして、最上位ビットが１の位に固定された演算結果を出力することにより、正規化を行う。【００７４】
また、指数部の除算結果は以下のようになる。
（ｘｅ＋１）−ｙｅ＝ｘｅ−ｙｅ＋１
そこで、レジスタ７０３は、仮数部比較回路７００の出力信号がアサートされたとき、“＋１”を表す数値を指数部演算回路７０４に出力する。これを受けて、指数部演算回路７０４は、ｘｅに対応するオペランドｏｐ１の指数部ｏｐ１  ｅｘｐからｙｅに対応するオペランドｏｐ２の指数部ｏｐ２  ｅｘｐを減算した結果に“＋１”を加算して出力する。【００７５】
ただし、仮数部正規化シフタ７０６による左シフトに伴って、指数部演算の結果を減算を行う必要が生じる。そこで、減算回路７０５は、指数部演算回路７０４の出力から１を減算して、演算結果ｅｘｐ  ｒｅｓｕｌｔとして出力する。【００７６】
ｏｐ１  ｆｒａｃ＜ｏｐ２  ｆｒａｃ（ｘ＜ｙ）の場合は、仮数部比較回路７００の出力信号がデアサートされ、ｏｐ１  ｆｒａｃおよびｏｐ２  ｆｒａｃはそのまま仮数部演算回路３１７に供給されることにより、ｘ／ｙが演算結果として生成される。また、指数部演算回路７０４からは、ｏｐ１  ｅｘｐからｏｐ２  ｅｘｐを減算した結果が出力される。仮数部正規化シフタ７０６および減算回路７０５による後処理は、ｘ≧ｙの場合と同様である。【００７７】
次に、平方根演算を実行する場合、命令デコーダ（図示せず）の出力である信号ｓｑｕａｒｅｒｏｏｔがアサートされる。これを受けて、仮数部桁合わせシフタ７０２は、暗黙の１を含めた仮数ｙを１／４倍するために、ｙを２ビットだけ右にシフトし、指数部演算回路７０４は、ｏｐ２  ｅｘｐに２を加算してから平方根演算を行う。これにより、図５の仮数部演算回路３１７は、１／４≦ｙまたは２ｙ＜１の範囲で演算を行い、仮数部丸め回路３１９は、最上位ビットが小数点以下第１位に固定された演算結果を出力する。仮数部正規化シフタ７０６および減算回路７０５による後処理は、除算の場合と同様である。【００７８】
図９に示した構成によれば、除算および平方根演算の両方について、最上位ビットが小数点以下第１位に固定された仮数部演算結果を得ることができる。この場合、丸め処理後の正規化シフトが常に必要であるが、仮数部丸め回路３１９からのキャリーアウト信号に基づく制御は不要となる。【００７９】
以上の構成例では、除算および平方根演算の結果の最上位ビットを同じ位置に固定しているが、除算と平方根演算で別々の演算後処理回路を設けた場合は、演算結果に期待する最上位ビット位置を演算毎に別々に決めてもよい。【００８０】
図１０は、従来の演算装置と本発明による図５の演算装置により実現される演算高速化の効果をパイプライン段数の削減というかたちで明示している。左列はステージ名を表しており、それぞれ、Ｂ（Ｂｅｇｉｎｎｉｎｇ：前処理）ステージ、Ｘ１（ｅＸｅｃｕｔｅ１：第１実行）ステージ、Ｘ２（ｅＸｅｃｕｔｅ２：第２実行）ステージ、Ｘ＊（ｅＸｅｃｕｔｅ＊：第＊実行）ステージ、（ｎｅｗ）ｌａｓｔＸ（本願発明における最終）ステージ、（ｏｌｄ）ｌａｓｔＸ−１（従来例における最終−１）ステージ、（ｏｌｄ）ｌａｓｔＸ（従来例における最終）ステージである。【００８１】
まず、図１０の右半分に示された従来例におけるパイプライン処理を説明する。従来例におけるパイプラインは、オペランドｏｐ１を格納するオペランドレジスタ１１、オペランドｏｐ２を格納するオペランドレジスタ１２、演算を行うオペランドの仮数部の桁合わせ及び演算精度を合わせるための仮数部桁合わせシフタ１３及び１４、パイプライン演算ステージ間における演算結果を格納するためのステージングラッチ２１及び２２、除算器／平方根演算器２５、特殊オペランド処理回路２３、仮数部丸め処理回路２７、１ビット左／右シフタ２８、シフト量格納用ステージングラッチ２９、丸め処理結果格納用ステージングラッチ３０、指数部演算回路２４、セレクタ（参照番号なし）、演算結果格納用レジスタ（ｒｅｓｕｌｔ）とから構成される。【００８２】
従来例においては、図１０に図示されたＸ１ステージにおいて、仮数部桁合わせシフタ１３及び１４により演算を行うオペランドの仮数部の桁合わせを行う。次に、Ｘ２ステージ乃至（ｎｅｗ）ｌａｓｔＸステージにおいて、除算器／平方根演算器２５を用いて、減算を繰り返し実行するループ処理（図中の中ｓｉｎｇｌｅ／ｄｏｕｂｌｅ・ｓｑｒ−ｅｘ
ｐ：ｎ  ｃｙｃｌｅ＋１  ｃｙｃｌｅ）により除算又は平方根演算を実行する。また、当該ループ処理の終了後に（ｏｌｄ）ｌａｓｔＸ−１ステージにおいて仮数部丸め処理回路２７により、仮数部丸め処理及び仮数部丸め処理回路の出力であり丸め方向を示す信号ｓｉｆｔ  ａｍｔを用いて１ビット左／右シフタによる丸め処理を実行し、当該丸め処理結果を丸め処理結果格納用ステージングラッチ３０に格納する。さらに、（ｏｌｄ）ｌａｓｔＸステージにおいて、指数部演算回路２４による指数部演算を実行する。なお、当該指数部演算回路２４においてオーバフロー／アンダーフローが発生した場合には、オーバーフロー／アンダーフロー検出信号ｏｖ／ｕｄを用いて特殊オペランド処理回路２３による例外処理を実行し、さらに、特殊オペランド処理回路２３からのｓｅｌ  ｓｐ／ｎｍ信号により、例外処理が発生した場合には特殊オペランド処理回路２３からのｓｐｅｃｉａｌ
ｒｅｓ出力（図示せず）を演算結果として選択し、それ以外の通常の場合には、丸め処理結果格納用ステージングラッチ３０に格納されている丸め処理結果を演算結果として演算結果格納用レジスタ（ｒｅｓｕｌｔ）に格納する。【００８３】
次に、図１０の左半分に示された本発明におけるパイプライン処理を説明する。本発明におけるパイプラインは、オペランドｏｐ１を格納するオペランドレジスタ３０１、オペランドｏｐ２を格納するオペランドレジスタ３０２、仮数部比較回路３０３、演算を行うオペランドの仮数部の桁合わせ及び演算精度を合わせるための仮数部桁合わせシフタ３０４及び３０５、パイプライン演算ステージ間における演算結果を格納するためのステージングラッチ３１３及び３１４、除算器／平方根演算器３１７、特殊オペランド処理回路３１５、仮数部丸め処理回路３１９、セレクタ（参照番号なし）演算結果格納用レジスタ（ｒｅｓｕｌｔ）とから構成される。【００８４】
本発明においては、図１０に図示されたＸ１ステージにおいて、仮数部比較回路３０３により演算を行うオペランドの仮数部同士の比較を実行し、当該比較結果を用いて仮数部桁合わせシフタ３０４及び３０５により演算を行うオペランドの仮数部の桁合わせを行う。次に、Ｘ２ステージ乃至（ｄｉｖ／ｓｐｒ  ｌｏｏｐ）ステージにおいて、除算器／平方根演算器３１７を用いて、減算を繰り返し実行するループ処理（図中ｓｉｎｇｌｅ／ｄｏｕｂｌｅ：ｎ  ｃｙｃｌｅ）により除算又は平方根演算を実行するか、又は、特殊オペランド処理回路３１５を用いて、オペランドが所定のデータである場合には演算器による通常の演算処理を実行せずに、当該所定のオペランドに対する固定値データの演算結果を出力する特殊オペランド処理やエラー処理等の例外処理（図中ｓｑｒ−ｅｘｐ：ｍ  ｃｙｃｌｅ）を実行する。また、当該ループ処理の終了後に（ｎｅｗ）ｌａｓｔＸステージにおいて仮数部丸め処理回路３１９により丸め処理を実行する。さらに、特殊オペランド処理回路３１５からのｓｅｌ  ｓｐ／ｎｍ信号により、通常処理の場合には当該丸め処理結果の選択を行い、当該丸め処理結果を演算結果格納用レジスタ（ｒｅｓｕｌｔ）に格納する。若しくは、特殊オペランド処理やエラー処理等の例外処理の場合には、特殊オペランド処理回路３１５からのｓｅｌ  ｓｐ／ｎｍ信号により、特殊オペランド処理回路３１５からのｓｐｅｃｉａｌ  ｒｅｓ出力（図示せず）を演算結果として選択し、演算結果として演算結果格納用レジスタ（ｒｅｓｕｌｔ）に格納する。【００８５】
そのため、本発明の場合における平方根演算の場合は、特殊オペランド処理回路３１５による例外処理を通常演算と並列に行うことができるので、通常演算に対してレイテンシの増加又は演算サイクルの増加等の影響はない。したがって、仮数部丸め回路３１９による処理が終了すると同時に、平方根演算が完了することとなる（図中ｓｉｎｇｌｅ／ｄｏｕｂｌｅ：ｎ  ｃｙｃｌｅ）。【００８６】
一般的に除算の場合は、従来例のように仮数部演算の前にｘとｙの比較が必要となるので、演算パイプラインにおけるレイテンシ（演算サイクル）の増加が懸念される。
しかし、図１０に示した従来の演算装置のように、ｘ＜ｙの場合を特別扱いせずに演算
を続けると、丸め処理後の正規化シフトと指数部加算が必要なだけでなく、演算結果の最上位ビットの位置が定まらないために、１ビット余計に商を算出する必要が生じる。このため、仮数部のループ処理を１回余計に繰り返す必要がある（図中ｓｉｎｇｌｅ／ｄｏｕｂｌｅ：ｎ＋１  ｃｙｃｌｅ）。ニュートン・ラプソン法、ゴールドシュミット法等の収束型の除算／平方根演算では、収束誤差の精度が＋１ビット分余計に要求される結果となる。つまり、図１０における本発明における演算パイプラインと従来例における演算パイプラインとを比較すると、本発明においては除算における仮数部のループ処理が１ステージ分（図中＋１  ｃｙｃｌｅ）短縮され、さらに、特殊オペランド処理やエラー処理等の例外処理（図中ｓｑｒ−ｅｘｐ：ｍ  ｃｙｃｌｅ）が通常の演算処理（図中ｓｉｎｇｌｅ／ｄｏｕｂｌｅ：ｎ  ｃｙｃｌｅ）よりも短いため（図中ｍ≦ｎ）、並列に処理することが可能となり、従来例におけるパイプラインのように丸め処理後に当該例外処理が不要となることにより、合計２ステージ分のパイプラインの短縮を実現できるという特有の効果を奏する。【００８７】
指数部オーバーフロー／アンダーフローの処理が、演算パイプライン段数、ディレイ、および論理の複雑さ（仮数部正規化処理→指数部加算→指数部オーバーフロー／アンダーフロー→特殊オペランド処理による演算結果とフラグの生成）に影響を及ぼすことも併せて考慮すれば、本発明の演算装置には、図１０におけるＢステージにおいて、演算実行前にｘとｙの比較を行う場合以上のメリットが存在すると考えられる。【００８８】
上記に説明したように、図１０の演算装置において、仮数部のループ処理に必要な演算サイクル数をｎ、特殊オペランド処理回路３１５による例外処理に必要なサイクル数をｍとすると、通常、ｍ≦ｎとなる。したがって、例外処理は仮数部のループ処理よりも早く終わらせることができる。【００８９】
これに対して、従来の演算装置では、仮数部演算が終了するまで指数部オーバーフロー／アンダーフローの処理が行えないので、例外処理が終了するのは、仮数部丸め回路２７による処理の終了後となる。【００９０】
演算処理の単純さの面から見ても、本発明の演算装置のように、オペランドの大小を比較し、仮数部演算回路３１７への入力に適切な前処理を施す方が好ましいといえる。【００９１】
以上説明したように、本発明によれば、浮動小数点数の除算／平方根演算に用いられる演算方法を問わず、仮数部演算の結果の最上位ビットが所定の位置に固定することができる。このため、丸め処理後の正規化シフトの要否を判定する必要がなく、指数部の演算結果におけるオーバーフロー／アンダーフロー等の判定を、当該仮数部演算と切り離して行うことが可能になる。したがって、演算が全体として高速化されるとともに、回路構成が簡単化されるという特有の効果を奏することとなる。【００９２】
また、論理回路が簡単になるため論理障害の発生が減少し、さらに、回路シミュレーションの時間が短縮されることが期待できる。
【図１】
2007063601.tif 000003
【図２】
2007063601.tif 000004
【図３】
2007063601.tif 000005
【図４】
2007063601.tif 000006
【図５】
2007063601.tif 000007
【図６】
2007063601.tif 000008
【図７】
2007063601.tif 000009
【図８】
2007063601.tif 000010
【図９】
2007063601.tif 000011
【図１０】
2007063601.tif 000012
【国際調査報告】
2007063601.tif 000013
2007063601.tif 000014