(57)【要約】【課題】  例えば、スケーリング処理などに好適に用いられ、それぞれ浮動小数点数として与えられる被除数を、除数で割ったときの余りと、必要に応じて商（整商）とを、より短い時間で得ることができる演算装置を実現する。【解決手段】  演算回路２１は、被除数が格納された第１レジスタ１１の指数部から、除数が格納された第２レジスタ１２の指数部を減算する。制御回路２３は、演算回路２１を制御して、左シフトされたときは、その桁も含めた上記第１レジスタ１１の仮数部から、上記第２レジスタ１２の仮数部を減算できる場合、商を格納する第３レジスタ１３の最下位桁に１を設定し、減算できない場合は、上記第３レジスタ１３の最下位桁に０を設定する処理と、上記第１レジスタ１１の仮数部および上記第３レジスタ１３を１桁ずつ左シフトする処理とを、上記指数部同士の減算結果の回数だけ繰り返す。【選択図】  図１
2005202571.tif 000002
【特許請求の範囲】
【請求項１】
仮数部および指数部を含む浮動小数点数として与えられる被除数および除数をそれぞれ記憶する被除数および除数レジスタと、商を記憶する商レジスタと、これらの各レジスタの値を参照して演算する演算回路と、上記各レジスタおよび演算回路を制御する制御回路とを有する演算装置の制御方法であって、
上記演算回路が、上記制御回路の指示に基づいて、上記被除数レジスタの指数部から、上記除数レジスタの指数部を減算する減算工程と、
左シフトされたときは、その桁も含めた上記被除数レジスタの仮数部から、上記除数レジスタの仮数部を減算できる場合、上記商レジスタの最下位桁に１を設定し、減算できない場合は、上記商レジスタの最下位桁に０を設定する処理と、上記被除数レジスタの仮数部および上記商レジスタを１桁ずつ左シフトする処理とを、上記制御回路の指示に基づいて、上記演算回路が、上記減算工程の減算結果の回数だけ繰り返す繰り返し工程とを含んでいることを特徴とする演算装置の制御方法。
【請求項２】
仮数部および指数部を含む浮動小数点数として与えられる被除数および除数をそれぞれ記憶する被除数および除数レジスタと、商を記憶する商レジスタと、これらの各レジスタの値を参照して演算する演算回路と、上記各レジスタおよび演算回路を制御する制御回路とを有する演算装置であって、
上記演算回路は、上記制御回路の指示に基づいて、上記被除数レジスタの指数部から、上記除数レジスタの指数部を減算すると共に、左シフトされたときは、その桁も含めた上記被除数レジスタの仮数部から、上記除数レジスタの仮数部を減算できる場合、上記商レジスタの最下位桁に１を設定し、減算できない場合は、上記商レジスタの最下位桁に０を設定する処理と、上記被除数レジスタの仮数部および上記商レジスタを１桁ずつ左シフトする処理とを、上記減算ステップの減算結果の回数だけ、繰り返すものであることを特徴とする演算装置。
【請求項３】
仮数部および指数部を含む浮動小数点数として与えられる被除数および除数をそれぞれ記憶する被除数および除数レジスタと、商を記憶する商レジスタと、これらの各レジスタの値を参照して演算する演算回路と、上記各レジスタおよび演算回路を制御する制御回路とを有するコンピュータに、請求項１記載の各工程を実行させるプログラム。
【請求項４】
請求項３記載のプログラムが記録された記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、例えば、スケーリング処理などに好適に用いられ、それぞれ浮動小数点数として与えられる被除数を、除数で割ったときの余りと、必要に応じて商（整商）とを、より短い時間で得る演算装置の制御方法、演算装置、並びに、そのプログラムおよび記録媒体に関するものである。
【背景技術】
【０００２】
従来から、例えば、三角関数など、周期的に値が変化する関数を演算する際、ある範囲の変域内の引数に対応する値を記憶しておき、それを参照して、上記変域から外れた引数に対応する値を算出する方法が広く使用されている。
【０００３】
例えば、三角関数ｙ＝ｓｉｎ（ｘ）の場合を例にすると、−π／２≦ｘ≦＋π／２に対応するｙをそれぞれ記憶しておき、入力ｘの絶対値が大きいときには、ｘ（被除数）をπ／２（除数）で除算して、その余りを求めることによって、−π／２〜π／２の範囲に入れた後、それに対応して記憶されたｙから、関数の値を算出している。
【０００４】
一方、浮動小数点数ではなく、整数を除算する場合、後述の特許文献１には、被除数および除数の最上位桁に続く０の無効ビット数をもとにシフト量を算出する概算桁合わせ回路と、そのシフト量だけ被除数を左シフトする左シフタと、被除数から除数を減算したときに部分剰余と部分商とが同時に求められるよう除数を変換する除数変換部と、左シフトされた被除数を１ビットづつ左シフトしながら除数を繰返し減算する除算処理部とを備えることにより、部分剰余と部分商とが同時に求められて、除算処理工程を節約でき、被除数の上位無効ビット数分除算回路の冗長な演算を削減して、回路規模を増大せずに、除算回路における繰返し処理回数を減少する構成が開示されている。
【特許文献１】特開平２００２−１７５１７９号公報（公開日：2002年６月２１日）
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、上記除数および被除数が浮動小数点数として表現されている場合には、上記特許文献１の方法をそのまま採用することはできない。一方、剰余を算出するにあたって、余りｘ２および商ｑを、ｑ＝ＩＮＴ（ｘ／ｙ）およびｘ２＝ｘ−ｑ＊ｙによって計算すると、浮動小数点演算に時間がかかるという問題を生じる。
【０００６】
本発明は、上記の問題点に鑑みてなされたものであり、その目的は、より少ない演算量および演算時間で、整数化された除算結果と余りとを算出可能な演算装置の制御方法、演算装置、並びに、そのプログラムおよび記録媒体を提供することにある。
【課題を解決するための手段】
【０００７】
本発明に係る演算装置の制御方法は、上記課題を解決するために、仮数部および指数部を含む浮動小数点数として与えられる被除数および除数をそれぞれ記憶する被除数および除数レジスタと、商を記憶する商レジスタと、これらの各レジスタの値を参照して演算する演算回路と、上記各レジスタおよび演算回路を制御する制御回路とを有する演算装置の制御方法であって、上記演算回路が、上記制御回路の指示に基づいて、上記被除数レジスタの指数部から、上記除数レジスタの指数部を減算する減算工程と、左シフトされたときは、その桁も含めた上記被除数レジスタの仮数部から、上記除数レジスタの仮数部を減算できる場合、上記商レジスタの最下位桁に１を設定し、減算できない場合は、上記商レジスタの最下位桁に０を設定する処理と、上記被除数レジスタの仮数部および上記商レジスタを１桁ずつ左シフトする処理とを、上記制御回路の指示に基づいて、上記演算回路が、上記減算工程の減算結果の回数だけ繰り返す繰り返し工程とを含んでいることを特徴としている。
【０００８】
上記構成では、繰り返し工程の両処理の繰り返し回数が、減算工程での減算結果の回数に設定されているので、繰り返し工程の終了時点における商レジスタの値が、整数化された除算結果であり、当該時点における被除数レジスタの値が、余りになる。
【０００９】
したがって、通常の除算と同様に、有効数字の回数だけ、繰り返し工程の両処理を繰り返して、除算結果を求め、当該除算結果を整数化すると共に、被除数から、整数化された値と除数との乗算結果を減算する場合と比較して、上記両処理の繰り返し回数を削減できる。
【００１０】
この結果、より少ない演算量および演算時間で、整数化された除算結果と余りとを算出できる。
【００１１】
また、本発明に係る演算装置は、上記課題を解決するために、仮数部および指数部を含む浮動小数点数として与えられる被除数および除数をそれぞれ記憶する被除数および除数レジスタと、商を記憶する商レジスタと、これらの各レジスタの値を参照して演算する演算回路と、上記各レジスタおよび演算回路を制御する制御回路とを有する演算装置であって、上記演算回路は、上記制御回路の指示に基づいて、上記被除数レジスタの指数部から、上記除数レジスタの指数部を減算すると共に、左シフトされたときは、その桁も含めた上記被除数レジスタの仮数部から、上記除数レジスタの仮数部を減算できる場合、上記商レジスタの最下位桁に１を設定し、減算できない場合は、上記商レジスタの最下位桁に０を設定する処理と、上記被除数レジスタの仮数部および上記商レジスタを１桁ずつ左シフトする処理とを、上記減算ステップの減算結果の回数だけ、繰り返すものであることを特徴としている。
【００１２】
当該演算装置は、上記演算装置の制御方法を実行できるので、上記演算装置の制御方法と同様に、より少ない演算量および演算時間で、整数化された除算結果と余りとを算出できる。
【００１３】
ところで、上記演算装置は、ハードウェアのみで実現してもよいが、ソフトウェアとハードウェアとを組み合わせて実現してもよい。具体的には、本発明に係るプログラムは、仮数部および指数部を含む浮動小数点数として与えられる被除数および除数をそれぞれ記憶する被除数および除数レジスタと、商を記憶する商レジスタと、これらの各レジスタの値を参照して演算する演算回路と、上記各レジスタおよび演算回路を制御する制御回路とを有するコンピュータに、上記各工程を実行させるプログラムである。また、本発明に係る記録媒体には、当該プログラムが記録されている。
【００１４】
これらのプログラムが上記コンピュータで実行されると、当該コンピュータは、上記演算装置の制御方法の各工程を実行する。したがって、上記演算装置の制御方法と同様に、より少ない演算量および演算時間で、整数化された除算結果と余りとを算出できる。
【発明の効果】
【００１５】
本発明によれば、通常の除算の後、整数化して、余りを算出する場合よりも、繰り返し回数を削減できるので、より少ない演算量および演算時間で、整数化された除算結果と余りとを算出でき、スケーリング処理などを高速に実行できるという効果を奏する。
【発明を実施するための最良の形態】
【００１６】
本発明の一実施形態について図１ないし図５に基づいて説明すると以下の通りである。すなわち、本実施形態に係る演算装置の制御方法は、浮動小数点数の減算を用いて、浮動小数点数の除算結果（厳密には、整商）を求めているにも拘わらず、比較的高速に剰余を演算可能な方法であって、スケーリング処理などに好適に用いることができる。ここで、スケーリング処理は、例えば、三角関数ｓｉｎ（ｘ）の入力ｘの絶対値が大きいときに、ｘをπ／２で除算して、その余りを求めることによって、−π／２〜π／２の範囲に入れる処理のように、ある被除数ｘを、除数ｙで割ったときの余りと、必要に応じて商（整商）とを求める処理であって、余りをｘ２、商をｑとするとき、ｑ＝ＩＮＴ（ｘ／ｙ）、ｘ２＝ｘ−ｑ＊ｙと表現できる。
【００１７】
具体的には、本実施形態に係る演算装置１は、浮動小数点演算によって、上記のスケーリング処理を行う装置であって、図１に示すように、予め定められたビット幅の、浮動小数点表示された数（浮動小数点数）を記憶する第１および第２レジスタ１１・１２と、予め定めれたビット幅の符号付きまたは符号なし整数を記憶する第３および第４レジスタ１３・１４と、指示に応じて、上記各レジスタ１１〜１４の値を参照して演算を行うと共に、指示に応じて、演算結果を上記各レジスタ１１〜１４へ書き込み可能な演算回路２１と、上記各レジスタ１１〜１４への、あるいは、上記各レジスタ１１〜１４からのデータ転送を制御する転送制御回路２２と、予め定められたアルゴリズムに従って、上記各レジスタ１１〜１４並びに演算回路２１および転送制御回路２２を制御する制御回路２３と、演算の対象となる被除数ｘおよび除数ｙを記憶すると共に、演算結果が書き込まれるメモリ３１とを備えている。なお、上記演算回路２１および転送制御回路２２が特許請求の範囲に記載の演算回路に対応する。
【００１８】
本実施形態の演算装置１の演算対象となる浮動小数点数ｘおよびｙは、ｎおよびｍを予め定められた自然数とするとき、例えば、１ビットで表現される符号と、ｍビットの指数部と、ｎビットの仮数部とを含んでいる。なお、本実施形態に係る浮動小数点数では、仮数部の値は、絶対値で表現されている。
【００１９】
一方、上記第１および第２レジスタ１１・１２は、浮動小数点数を記憶可能なレジスタ（浮動小数点レジスタ）であって、図２に示すように、それぞれ、符号、指数部および仮数部を記憶する領域ＡＳ１、ＡＥ１およびＡＭ１、あるいは、ＡＳ２、ＡＥ２およびＡＭ２を備えている。また、上記第１レジスタ（被除数レジスタ）１１は、被除数および余りを記憶するために使用され、第２レジスタ１２（除数レジスタ）は、除数を記憶するために使用される。なお、本実施形態では、これらの領域ＡＳ１（ＡＳ２）、ＡＥ１（ＡＥ２）およびＡＭ１（ＡＭ２）のビット幅は、それぞれ、１ビット、ｍビットおよびｎビットである。
【００２０】
また、第３レジスタ１３は、商を記憶するためのレジスタ（商レジスタ）であって、そのビット幅は、商を、符号付きの整数で記憶可能なビット幅に設定されている。なお、図３の例では、第３レジスタ１３のビット幅は、Ｌ＋１ビットに設定されており、１ビットの符号と、Ｌビットの符号無し整数（絶対値）との組み合わせとして表現される商を記憶できる。さらに、第４レジスタ１４は、作業用のレジスタであって、そのビット幅は、少なくともｍビット（図２の例では、第３レジスタ１３と同じくＬ＋１ビット）に設定されている。
【００２１】
一方、本実施形態に係る演算回路２１は、例えば、ＡＬＵ（数値演算ユニット：Arithmetic Logical Unit）のように、組み合わせ論理回路および順序論理回路などの論理回路によって実現されており、以下の演算処理、すなわち、指数部同士の減算、仮数部同士の減算、符号部同士の排他的論理和演算、仮数部または整数部の算術シフト（左）、仮数部または整数部のインクリメント、指数部または整数部のデクリメント、仮数部同士またはレジスタと指示された値との比較演算、並びに、レジスタの特定のビットの評価が可能なように構成されている。
【００２２】
より詳細には、演算回路２１は、制御回路２３から指数部同士の減算が指示された場合、指示された２つのレジスタ（本実施形態では、第１および第２レジスタ１１・１２）の指数部の領域ＡＥ（この例では、ＡＥ１およびＡＥ２）から読み出された値同士を減算し、減算結果（例えば、Ｘｅ−Ｙｅ）を、指示されたレジスタの指示された領域（例えば、第４レジスタ１４）に格納できる。同様に、仮数部同士の減算が指示された場合、指示された２つのレジスタ（例えば、第１および第２レジスタ１１・１２）の仮数部の領域ＡＭ（例えば、ＡＭ１・ＡＭ２）から読み出された値同士を減算し、減算結果（例えば、Ｘｍ−Ｙｍ）を、指示されたレジスタの指示された領域（例えば、第１レジスタ１１の仮数部の領域ＡＭ１）へ格納できる。
【００２３】
また、演算回路２１は、制御回路２３から、符号部同士の排他的論理和演算が指示された場合、指示された２つのレジスタ（例えば、第１および第２レジスタ１１・１２）の符号の領域（例えば、ＡＳ１・ＡＳ２）から読み出された値同士の排他的論理和を算出し、演算結果（Ｘｓ  ＥＯＲ  Ｙｓ）を、指示されたレジスタの指示された領域（例えば、第１レジスタ１１の符号の領域ＡＳ１）へ格納できる。
【００２４】
さらに、演算回路２１は、制御回路２３が仮数部または整数部の左シフトを指示した場合、演算回路２１は、指示されたレジスタの指示された領域（例えば、第１レジスタ１１の仮数部ＡＭ１、第３レジスタ１３の整数部ＡＭ３など）から読み出した値を、指示された桁だけ、左シフトすると共に、シフト後の値を、読み出した領域に書き込むことができる。なお、この左シフトは、算術的な左シフトであり、シフトの結果、新たに挿入される下位桁の値は、”０”に設定されている。さらに、演算回路２１は、例えば、最上位ビットが”１”のときに左シフトする場合など、左シフトの結果、桁あふれが発生した場合、桁あふれの発生を制御回路２３へ伝えることができる。
【００２５】
また、演算回路２１は、制御回路２３から、デクリメントまたはインクリメントが指示された場合、指示されたレジスタの指示された領域（第１レジスタ１１の指数部ＡＥ１、第３レジスタ１３の整数部ＡＭ３、第４レジスタ１４など）から読み出した値をデクリメントまたはインクリメントして、上記値を読み出した領域へ演算結果を格納できる。
【００２６】
さらに、演算回路２１は、制御回路２３から、仮数部同士の比較が指示された場合、指示された２つのレジスタの仮数部の領域（例えば、第１および第２レジスタ１１・１２の仮数部ＡＭ１・ＡＭ２）から値を読み出し、両者を比較すると共に、比較結果を、制御回路２３へ返答できる。同様に、制御回路２３から、予め定められた値との比較が指示された場合、指示された１つのレジスタの指示された領域（例えば、第４レジスタ１４など）と、指示された値（例えば、０、ｎ、またはＬ−１など）とを比較し、比較結果を返答できる。
【００２７】
また、演算回路２１は、制御回路２３から、あるビットの評価が指示された場合、指示されたレジスタの指示された領域のうち、指示されたビット（例えば、第１レジスタ１１の領域ＡＭ１の最上位ビットなど）を評価して、当該ビットが”０”か”１”かを、制御回路２３へ返答できる。
【００２８】
一方、本実施形態に係る転送制御回路２２は、例えば、論理回路によって構成された回路であって、制御回路２３の指示に応じて、各レジスタへ、予め定められた値を格納することができる。また、上記転送制御回路２２は、制御回路２３の指示に応じて、メモリ３１から読み出した被除数ｘまたは除数ｙを、指示されたレジスタ（例えば、第１および第２レジスタ１１・１２）へ格納したり、制御回路２３の指示に基づいて、指示されたレジスタ（例えば、第１および第３レジスタ１１・１３）に格納された演算結果Ｘ、Ｑを、例えば、演算結果の表示処理など、後の処理で利用するために、メモリ３１へ格納したりすることができる。
【００２９】
また、制御回路２３は、例えば、演算回路２１または転送制御回路２２へ処理を特定する命令コードを示す制御信号を与えるなどして、演算回路２１および転送制御回路２２へ、実施すべき処理を示す制御信号を印加して、それぞれを制御できる。さらに、制御回路２３は、予め定められた順序で、各レジスタ１１・１２、演算回路２１および転送制御回路２２を制御するだけではなく、予め定められたアルゴリズムに従って、演算回路２１の演算結果のうち、比較結果および指数部の値の差を受け取って、それに応じて、それ以降における、各レジスタ１１・１２、演算回路２１および転送制御回路２２の制御を変更できる。なお、上記アルゴリズムの詳細については、演算装置１の全体の動作と合わせて後述する。
【００３０】
上記制御回路２３は、例えば、当該アルゴリズムで、各レジスタ１１・１２、演算回路２１および転送制御回路２２を制御できれば、予め定められたタイミングおよび順序で、それぞれへ、それぞれの制御信号を出力すると共に、予め定められたタイミングで、演算回路２１の出力を読み出して、上記制御信号を与えるか否か、並びに、上記制御信号印加のタイミングおよび順序を変更する論理回路によって実現してもよい。また、例えば、ＣＰＵなどの演算手段が、ＲＯＭやＲＡＭなどの記憶装置（いずれも図示せず）に格納されたプログラムを実行し、上記各レジスタ１１・１２、演算回路２１および転送制御回路２２を制御することによって実現してもよい。この場合は、これらの手段を有する１または複数のコンピュータが、上記プログラムを記録した記録媒体（例えば、ＣＤ−ＲＯＭなど）を読み取り、当該プログラムを実行するだけで、本実施形態に係る演算装置１を実現できる。
【００３１】
上記構成において、例えば、メモリ３１の予め定められた記憶領域へ、被除数および除数が格納され、制御回路２３の予め定められたアドレスへ演算開始の指示を示す命令が書き込まれるなどして、演算装置１へ、被除数ｘの除数ｙによるスケーリング処理の開始が指示されると、演算装置１は、図３に示すステップ１（以下では、Ｓ１のように略称する）において、詳細は後述するように、第１〜第４レジスタ１１〜１４を初期化して、第１および第２レジスタ１１・１２へ、被除数ｘおよび除数ｙを設定すると共に、第３レジスタ１３に０を格納し、第４レジスタ１４へ、被除数ｘの指数部から除数ｙの指数部を引いた値を設定する。なお、本実施形態に係る演算装置１は、上記Ｓ１における初期化処理において、スケーリング処理の要否や可否（後述）も併せて判定している。
【００３２】
以下では、第１〜第４レジスタ１１〜１４に格納された値を、それぞれ、Ｘ、Ｙ、ＱおよびＺで参照する。また、それぞれの符号を、例えば、Ｘの符号をＸｓのように、参照符号の末尾にｓを付けて参照し、それぞれの仮数部または整数の絶対値を、参照符号の末尾にｍをつけて参照する。さらに、ＸおよびＹの指数部を、それぞれＸｅ、Ｙｅと称する。また、本実施形態に係る演算装置１では、一例として、三角関数Ｓｉｎ（ｘ）を算出する際のｘを、π／２でスケーリングして、−π／２から＋π／２の範囲に入れているので、上記Ｓ１の初期化処理によって、上記第１レジスタ１１にｘが格納され、第２レジスタ１２には、ｙ＝π／２が格納される。
【００３３】
上記Ｓ１において、初期化処理が終了すると、演算装置１の制御回路２３は、Ｓ２において、演算回路２１へ指示して、第１および第２レジスタ１１・１２に格納された値の符号部同士の排他的論理和を算出させ、演算結果を、第１レジスタ１１の符号部の領域ＡＳ１へ格納させる（Ｘｓ  ＥＯＲ  Ｙｓ  →Ｘｓ）。
【００３４】
また、制御回路２３は、以下のＳ３〜Ｓ９の処理を、上記Ｓ１にて第４レジスタ１４へ格納された値Ｚの回数だけ繰り返させる。具体的には、Ｓ３において、制御回路２３は、演算回路２１へ指示して、第１および第２レジスタ１１・１２に格納された値の仮数部Ｘｍ・Ｙｍを比較させ、比較結果を受け取る。
【００３５】
上記仮数部Ｘｍが仮数部Ｙｍ以上の場合（上記Ｓ３にて、YES の場合）、制御回路２３は、Ｓ４において、演算回路２１へ指示して、第１レジスタ１１の仮数部Ｘｍから第２レジスタ１２の仮数部Ｙｍの値を減算させ、減算結果を、第１レジスタ１１の仮数部の領域ＡＭ１へ格納させる。さらに、演算回路２１は、制御回路２３の指示に従って、上記第３レジスタ１３に格納された値の仮数部Ｑｍを１増加させ、演算結果を、第３レジスタ１３の仮数部の領域ＡＭ１に格納する（Ｓ５）。
【００３６】
上記Ｓ４およびＳ５の処理が終了した場合、あるいは、上記仮数部Ｘｍが仮数部Ｙｍよりも小さかった場合（上記Ｓ３にて、NOの場合）、制御回路２３は、Ｓ６において、演算回路２１へ指示して、第４レジスタ１４に格納された値と”０”とを比較させ、比較結果を受け取る。両者が一致した場合（上記Ｓ６にてYES の場合）、詳細は後述するように、Ｓ２１において、演算装置１は、第１レジスタ１１に格納されている値Ｘの形式を変換して、当該値Ｘの仮数部の最上位ビットが１になるように正規化し、Ｓ２２において、制御回路２３は、転送制御回路２２へ指示して、第１レジスタ１１に格納された浮動小数点数Ｘと、第３レジスタ１３に格納された商Ｑとを、メモリ３１へ格納させるなどして、スケーリング処理の結果を出力させる。
【００３７】
一方、第４レジスタ１４に格納された値が０でなかった場合（上記Ｓ６にてNOの場合）、制御回路２３は、Ｓ７において、演算回路２１へ指示して、第１レジスタ１１に格納された値の指数部Ｘｅから１減算させ、減算結果を、第１レジスタ１１指数部の領域ＡＥ１へ格納させると共に、第４レジスタ１４に格納された値Ｚから１減算させ、演算結果を第４レジスタ１４に格納させる。また、演算回路２１は、制御回路２３の指示に従って、第１レジスタ１１に格納された値の仮数部Ｘｍを１ビット左シフトし、第１レジスタ１１の仮数部の領域ＡＭ１へ演算結果を格納すると共に、第３レジスタ１３に格納された値の絶対値Ｑｍを、１ビット左シフトし、第３レジスタ１３の絶対値の領域ＡＭ３へ演算結果を格納する（Ｓ８）。
【００３８】
さらに、制御回路２３は、Ｓ９において、上記Ｓ８における仮数部Ｘｍの左シフトによって、桁あふれが発生しているか否かを判定し、桁あふれが発生していない場合（上記Ｓ９にて、YES の場合）、上記Ｓ３以降の処理を繰り返す。一方、桁あふれが発生している場合は、上記Ｓ４以降の処理を繰り返す。
【００３９】
上記構成では、上記Ｓ３〜Ｓ５およびＳ７〜Ｓ９の繰り返し回数が、上記Ｓ１において第４レジスタ１４に格納された値、すなわち、被除数ｘの指数部から除数ｙの指数部を引いた値に設定されている。したがって、繰り返しの終了時点（Ｓ６にて、YES の時点）における第３レジスタ１３の値Ｑが、整数化された除算結果であり、当該時点における第１レジスタ１１の値Ｘが、余りになる。
【００４０】
したがって、通常の除算と同様に、有効数字の回数だけ、上記Ｓ３〜Ｓ５およびＳ７〜Ｓ９の処理を繰り返して、除算結果を求め、当該除算結果を整数化すると共に、被除数から、整数化された値と除数との乗算結果を減算する場合と比較して、上記処理の繰り返し回数を削減できる。この結果、より少ない演算量および演算時間で、整数化された除算結果と余りとを算出できる。
【００４１】
なお、上記では、Ｓ１にて第４レジスタ１４に格納された格納された値Ｚだけ、Ｓ３〜Ｓ９の処理を繰り返すために、Ｓ７において、Ｚを減算すると共に、Ｓ６において、Ｚが０であるか否かを判定しているが、これに限るものではない。例えば、制御回路２３が演算回路２１へ指示して、Ｚ＜０か否かを判定させると共に、Ｚの減算処理を、判定の前に移動させてもよい。いずれの場合であっても、上記Ｓ３〜Ｓ５およびＳ７〜Ｓ９の繰り返す回数が、被除数ｘの指数部から除数ｙの指数部を引いた値であれば、同様の効果が得られる。
【００４２】
また、上記では、Ｓ５において、１を加算することによって、第３レジスタ１３の整数部の値Ｑｍの最下位ビットに１を設定しているが、上記Ｓ１における第３レジスタ１３の０クリアあるいは上記Ｓ８における左シフトによって、最下位ビットが”０”なので、演算回路２１が制御回路２３の指示に応じて、最下位ビットに”１”を設定しても、同様の効果が得られる。
【００４３】
以下では、上記Ｓ１の初期化処理およびＳ２１の正規化処理について、やや詳細に説明する。すなわち、上記Ｓ１では、図４に示す各ステップＳ３１〜Ｓ３６が行われている。すなわち、演算装置１が被除数ｘの除数ｙによるスケーリング処理の開始指示を受け付けると、Ｓ３１において、演算装置１の制御回路２３は、転送制御回路２２へ指示して、第１レジスタ１１へ被除数となる浮動小数点数ｘを格納させると共に、第２レジスタ１２へ除数となる浮動小数点数ｙを格納させる。また、転送制御回路２２は、Ｓ３２において、制御回路２３の指示に従って、第３レジスタ１３の値を０に設定する。
【００４４】
さらに、演算回路２１は、Ｓ３３において、制御回路２３の指示に従って、第１レジスタ１１に格納された値の指数部Ｘｅから、第２レジスタ１２に格納された値の指数部Ｙｅを減算させ、第４レジスタ１４に減算結果を格納させる。
【００４５】
また、演算装置１は、Ｓ３４およびＳ３５において、演算回路２１へ指示して、第４レジスタ１４に格納された値Ｚが０以上、かつ、予め定められた値（Ｌ−１）以下の範囲に入っているか否かを判定している。なお、Ｌは、第３レジスタ１３において、整数の絶対値を格納するために設けられた領域のビット幅である。
【００４６】
本実施形態では、上記値Ｚが負であるか否か、および、（Ｌ−１）を超えているか否かによって、上記範囲内か否かを判定している。より詳細には、制御回路２３は、Ｓ３４において、演算回路２１へ指示して、第４レジスタ１４に格納された値Ｚが負であるか否かを判定させて、判定結果を受け取る。判定結果が負を示している場合（上記Ｓ３４にてYES の場合）、これは、被除数Ｘが除数Ｙよりも小さいことを示しており、スケーリング処理するまでもなく、商は、０であり、被除数Ｘは、余りになることを示している。したがって、この場合、制御回路２３は、図３に示すＳ２〜Ｓ２１をスキップして、Ｓ２２の処理を行い、上記Ｓ３２にて第３レジスタ１３に設定された値（Ｑ＝０）と、上記Ｓ３１にて第１レジスタ１１に設定された値（Ｘ＝ｘ）とをスケーリング結果として出力する。
【００４７】
一方、第４レジスタ１４に格納された値Ｚが負ではない場合（上記Ｓ３４にて、NOの場合）、制御回路２３は、Ｓ３５において、演算回路２１へ指示し、第４レジスタ１４に格納された値Ｚと上記値（Ｌ−１）とを比較させて、比較結果を受け取る。比較結果がＬ−１よりも大きいことを示している場合（上記Ｓ３５にてYES の場合）、これは、商が第３レジスタ１３に格納できない程大きくなることを示している。したがって、この場合は、制御回路２３は、Ｓ３６において、例えば、転送制御回路２２へ指示して、第１レジスタ１１を０クリアさせた後、メモリ３１の演算結果を格納する領域に、第１レジスタ１１の値を格納させると共に、例えば、メモリ３１のうち、異常発生の有無を示す領域へ、異常発生を示す値を格納させるなどして、異常終了処理を行わせる。
【００４８】
これに対して、演算装置１が、第４レジスタ１４に格納された値Ｚが０以上、かつ、予め定められた値（Ｌ−１）以下の範囲に入っていると判定した場合（上記Ｓ３４およびＳ３５の双方でNOの場合）、制御回路２３は、初期化処理を終了し、図３に示すＳ２以降の処理を実行する。
【００４９】
上記構成では、Ｓ２以降のスケーリング処理を開始する前に、演算装置１が、第４レジスタ１４に格納された値Ｚが０以上、かつ、予め定められた値（Ｌ−１）以下の範囲に入っているか否かを判定し、入っていない場合は、Ｓ２以降の処理をスキップしている。この結果、Ｓ２以降の処理を行うまでもなく、余りおよび商が判明している場合、あるいは、当該処理を行うまでもなく、Ｓ２以降の処理で正しい商が算出できないと判明している場合は、当該処理をスキップでき、不要な処理の実施を防止できる。この結果、上記判定を行わない場合よりも、全ての処理が終わるまでの時間を短縮できる。
【００５０】
一方、図３に示すＳ２１の正規化処理では、図５に示すように、Ｓ４１〜Ｓ５１の処理が行われている。具体的には、制御回路２３は、Ｓ４１において、演算回路２１へ指示して、第４レジスタ１４の値Ｚとｎとを比較させ、比較結果を受け取る。なお、ｎは、上述したように、第１および第２レジスタ１１・１２の仮数部のビット幅である。
【００５１】
両者が一致しない場合（上記Ｓ４１にてNOの場合）、制御回路２３は、Ｓ４２において、演算回路２１へ指示して、第１レジスタ１１の仮数部の最上位ビットの値を評価させ、評価結果を受け取る。
【００５２】
最上位ビットが”１”を示している場合（上記Ｓ４２にてYES の場合）、第１レジスタ１１の値Ｘは、既に正規化されていることを示している。したがって、この場合、制御回路２３は、正規化処理を終了し、図３に示すＳ２２以降の処理を実行する。
【００５３】
これに対して、最上位ビットが”１”ではない場合（上記Ｓ４２にてNOの場合）、制御回路２３は、Ｓ４３において、演算回路２１へ指示して、第１レジスタ１１の指数部の値Ｘｅを１減少させると共に、第１レジスタ１１の指数部の領域ＡＥ１へ格納させる。さらに、演算回路２１は、制御回路２３の指示に基づいて、第１レジスタ１１の仮数部の値Ｘｍを１ビット左シフトさせ、その結果を、第１レジスタ１１の仮数部の領域ＡＭ１へ格納させる。また、制御回路２３は、演算回路２１へ指示して、第４レジスタ１４の値を１増加させる。さらに、制御回路２３は、Ｓ４１以降の処理を繰り返す。
【００５４】
ここで、上記Ｓ４１〜Ｓ４３の処理は、第１レジスタ１１の仮数部の最上位ビットが”１”になるまでの間、繰り返されるが、余りが０の場合、当該仮数部のビット幅の回数（ｎ回）だけ繰り返しても、最上位ビットが”１”になることはない。この場合は、上記Ｓ４１において、ループカウンタの値Ｚがｎに一致する（上記Ｓ４１にて、YES ）。したがって、制御回路２３は、制御回路２３は、Ｓ５１において、転送制御回路２２へ指示して、第１レジスタ１１へ０を格納させた後、正規化処理を終了し、図３に示すＳ２２以降の処理を実行する。
【００５５】
上記構成では、Ｓ４１〜Ｓ５１の正規化処理によって、余りが０でない限り、余りの仮数部の最上位ビットが１になるように、余りの指数部が調整される。したがって、スケーリング処理後の演算において、余りが正規化されていることが求められている場合であっても、何ら支障なく、演算を続けることができる。
【００５６】
なお、上記では、上記Ｓ４２およびＳ４３の処理をｎ回繰り返すために、第４レジスタ１４をループカウンタにして、上記Ｓ４１にて、終了条件（Ｚ＝＝ｎ）が成立しているか否かを判定しているが、これらの処理をｎ回繰り返すことができれば、これに限るものではない。例えば、別のレジスタを設け、当該レジスタをループカウンタにしてもよい。なお、この場合は、上記Ｓ４１の前に、当該レジスタの値を０にクリアすると、Ｓ４１の終了条件を同じ（＝＝ｎ）にできる。また、上記繰り返し回数は、第１および第２レジスタ１１・１２の仮数部のビット幅によって決まるので、プログラム中に、上記Ｓ４２およびＳ４３の処理のためのプログラムコードをｎ回繰り返して配置してもよい。いずれの場合であっても、上記Ｓ４２およびＳ４３の処理をｎ回繰り返すことができれば、同様の効果が得られる。
【産業上の利用可能性】
【００５７】
本発明によれば、より短い時間で、それぞれ浮動小数点数として与えられる被除数を、除数で割ったときの余りと、必要に応じて商（整商）とを得ることができるので、例えば、スケーリング処理などを行う演算装置に好適に使用できる。
【図面の簡単な説明】
【００５８】
【図１】本発明の実施形態を示すものであり、演算装置の要部構成を示すブロック図である。
【図２】上記演算装置に設けられたレジスタを示す図面である。
【図３】上記演算装置の動作を示す概略フローチャートである。
【図４】上記動作のうち、初期化処理をより詳細に示すフローチャートである。
【図５】上記動作のうち、余りの正規化処理をより詳細に示すフローチャートである。
【符号の説明】
【００５９】
１    演算装置
１１    第１レジスタ（被除数レジスタ）
１２    第２レジスタ（除数レジスタ）
１３    第３レジスタ（商レジスタ）
２１    演算回路
２２    転送制御回路（演算回路）
２３    制御回路
【図１】
2005202571.tif 000003
【図２】
2005202571.tif 000004
【図３】
2005202571.tif 000005
【図４】
2005202571.tif 000006
【図５】
2005202571.tif 000007