(57)【特許請求の範囲】
【請求項１】
被除数又はその部分剰余及び除数が入力される入力部、上記被除数又は部分剰余の上位側と下位側を選択するセレクタ、上記セレクトされた上位側及び又は下位側の上記被除数又は部分剰余部の桁上げを行う桁上げ伝搬手段、上記桁上げ伝搬手段の出力を入力とする商デジット選択手段、上記商デジットを入力とし商を生成する商生成手段、上記商デジット選択手段により得られた商デジットの値に応じて上記被除数又は部分剰余部と上記除数との加減算を行う桁上げ保存加算手段、下位側から上位側にキャリー伝搬を行うか行わないかを選択するキャリー伝搬選択手段、及び上記桁上げ保存加算手段の出力を所定ビットシフトして新しい被除数又は部分剰余として上記入力部に再び入力することを特徴とする演算器。
【請求項２】
被除数の開平値を演算する開平演算器において、上記被除数又はその部分剰余が入力される入力部、上記被除数又は部分剰余の上位側と下位側を選択するセレクタ、上記部分剰余の上位側及び又は下位側の桁上げを行う桁上げ伝搬手段、上記桁上げ伝搬手段の出力を入力とする商デジット選択手段、上記商デジットを入力とし開平値を生成する商生成手段、上記商デジットを入力とし部分開平値を生成する部分開平値生成手段、及び上記商デジット選択手段により得られた上記商デジットの値に応じて上記除数又は上記部分開平値と上記部分剰余との加減算を行いその結果を桁上げ保存する桁上げ保存加算手段とを有し、下位側から上位側にキャリー伝搬を行うか行わないかを選択するキャリー伝搬選択手段、及び上記桁上げ保存加算手段の出力を所定ビットシフトしそれを新しい被除数又は部分剰余として上記入力部に再び入力しこの一連の動作を繰り返すことによって上記被除数の開平値を演算することを特徴とする開平演算器。
【請求項３】
入力部に被除数又はその部分剰余と除数が入力され、第１桁上げ伝搬手段によって上記被除数又は部分剰余の桁上げ伝搬を行い、上記第１桁上げ伝搬手段の出力を第１商デジット選択回路に入力して第１商デジットを得て、上記第１商デジットの値に応じて上記被除数又は部分剰余と上記除数とを第１桁上げ保存加算手段によって加減算し、上記加減算の結果をシフタによって所定ビットシフトし新しい被除数又は部分剰余として再び上記入力部に入力してこれら一連の動作を繰り返し、上記第１商デジットを入力とし、上記商生成手段にて第１商を算出する演算器に、上記入力部に対して並列に、上記被除数又は部分剰余の上位部と下位部をセレクトするセレクタ、上記セレクトされた上記被除数又は部分剰余部の桁上げ伝搬を行う第２桁上げ伝搬手段、及び上記第２桁上げ伝搬手段の出力を受けて第２商デジットを出力する第２商デジット選択回路、及び上記第２商デジットの値に応じて上記セレクトされた被除数又は部分剰余部と上記除数とを加減算する第２桁上げ保存加算手段とを設け、上記第２商デジットを入力とし、上記商生成手段にて第２商を算出し、上記第１桁上げ保存加算手段と上記第２桁上げ保存加算手段との間にキャリーの伝搬を選択する手段を設け、上記第２桁上げ保存加算手段によって加減算された上記結果を上記第１桁上げ保存加算手段による上記加減算結果とマージして上記シフタによって上記所定ビットシフトし、上記マージされたシフト結果を上記入力部に入力するようにしたことを特徴とする演算器。
【請求項４】
入力部に被除数又はその部分剰余が入力され、第１桁上げ伝搬手段によって上記被除数又は部分剰余の桁上げ伝搬を行い、上記第１桁上げ伝搬手段の出力を第１商デジット選択回路に入力して第１商デジットを得、上記商デジットを入力とする商生成手段によって第１開平値を生成し、上記商デジットを入力とする部分開平値生成手段によって第１部分開平値を生成し、上記第１桁上げ伝搬手段の出力部に結合された商生成手段によって第１部分開平値を生成し、上記第１商デジットの値に応じて上記被除数又は部分剰余と上記除数又は上記第１部分開平値とを第１桁上げ保存加算手段によって加減算し、上記加減算の結果をシフタによって所定ビットシフトし新しい被除数又は部分剰余として再び上記入力部に入力してこれら一連の動作を繰り返し、上記商生成手段によって被除数の開平値を演算する開平演算器に、上記入力部に対して並列に、上記被除数又は部分剰余の上位部と下位部をセレクトするセレクタ、上記セレクトされた上記被除数又は部分剰余部の桁上げ伝搬を行う第２桁上げ伝搬手段、上記第２桁上げ伝搬手段の出力を受けて第２商デジットを出力する第２商デジット選択回路、上記商生成手段は上記第２商デジットを入力とする商生成手段によって第２開平値を生成し、上記第２商デジットを入力とする部分開平値生成手段によって第２部分開平値を生成し、及び上記第２商デジット選択回路の上記第２商デジットの値に応じて上記セレクトされた被除数又は部分剰余部と上記除数又は上記第２部分開平値とを加減算する第２桁上げ保存加算手段とが設けられ、上記第１桁上げ保存加算手段と上記第２桁上げ保存加算手段との間にキャリーの伝搬を選択する手段が設けられ、上記第２桁上げ保存加算手段によって加減算された上記結果を上記第１桁上げ保存加算手段による上記加減算結果とマージして上記シフタによって上記所定ビットシフトし、上記マージされたシフト結果を上記入力部に入力されるようにしたことを特徴とする開平演算器。
【請求項５】
上記請求項１から４のいずれかに記載の演算器を搭載したことを特徴とする電子回路装置。
【請求項６】
部分剰余の上位桁から第１商デジットを選択し、上記選択された第１商デジットに従って、上記上位桁に対応して上記部分剰余から除数を減算し、新たな第１部分剰余を得るループを繰り返しながら演算が進められるＳＲＴ除算器に、上記第１商デジットとは別に上記上位桁又は下位桁から第２商デジットを選択し、上記選択された第２商デジットに従って、上記上位桁又は下位桁に対応して上記部分剰余から上記除数を減算して新たな第２部分剰余を得る機能を付加し、得られた上記第２部分剰余を上記第１部分剰余にマージして上記ループを繰り返しながら演算し、倍精度演算、単精度演算及び単精度複数並列演算を実行可能にしたことを特徴とするＳＲＴ除算器。
【請求項７】
上記請求項６記載の除算器を搭載したことを特徴とする電子回路装置。
【請求項８】
命令キャッシュ及びデータキャッシュとバスを介して結合されたＣＰＵ及び浮動小数点演算ユニットとを有し、上記浮動小数点演算ユニットは相互に結合されたロードストアユニット、レジスタファイル、積和演算器、及び倍精度演算、単精度演算及び単精度複数並列演算の複数の動作モードを実行可能な除算器とからなり、上記レジスタファイルは上記演算器の上記動作モードを外部からユーザが指定できるようにするために上記動作モードのうち倍精度演算と単精度複数並列演算との同時実行を禁止した浮動小数点演算ステータスレジスタを有しそれによって上記除算器の上記動作モードが設定されるようにされていることを特徴とするマイクロプロセッサ。
【発明の詳細な説明】
技術分野
本発明は演算器、特に倍精度のｂｉｔ幅を有するＳＲＴ法を用いた浮動小数点演算器、及びそれを用いた電子回路装置に関する。
背景技術
一般に、除算は机上の筆算と同様に繰返し型で演算が行われる。繰返し型の除算は引戻し法、引放し法、ＳＲＴ法に大別される。演算原理は共通であるが、商デジットの冗長性を利用することにより、この順に高速性に向く方式となっている。なお、その他の除算方式、として収束法があるが説明を省略する。
まず、引戻し法について説明する。被除数を部分剰余とし、部分剰余から除数を減算し、その結果が正または０のときは商デジットを１とする。そして、負のときは商デジットを０として減算した除数を再び加算することで元の値に戻す（これを引戻しという）。そして、左シフトして部分剰余を２倍し、次の商デジットを求めることを繰り返す。筆算の１０倍が、１ｂｉｔ左シフトの２倍に相当する。この引戻し法は部分剰余が負のときは常に除数を加算して引戻す必要があるので、高速除算には限界がある。
これに対し、商デジットを−１又は１として商デジットに負値を設けることで、部分剰余の引戻しによる補正をなくしたのが引放し法である。商デジットには−１を含むので、０、１のみの商を生成するための商生成回路が必要となる。この引放し法は前記引戻し法と同様に、部分剰余と除数の減算結果により商デジットを判定するため、部分剰余、除数のｂｉｔ幅が大きい場合には高速化処理は困難である。この引放し法については、後述するように例えば特開平４−１７２５２６「浮動小数点除算器」に記載されている。
一方、ＳＲＴ法は商デジットとして−１、０又は１をとり、除数、被除数を正規化することで、部分剰余の上位数ｂｉｔで高速に商デジットを判定できる方法である。このＳＲＴ法による演算方法については、特開平６−２９００３０「除算装置」、特開平９−６９０４０「推測的演算を有する３つのオーバラップしたステージにより基数２の平方根演算／除算を行う回路」、特開平９−９１２７０「演算器」、及び本願発明者等による特開平１０−１８７４２０「除算・開平演算器」に記載されている。
一方、使用しない倍精度ｂｉｔ幅の演算器の下位ｂｉｔにおいて単精度演算を可能とし単精度演算の性能を二倍とする方法として、前記した引放し法に関する特開平４−１７２５２６に倍精度の浮動小数点除算器に小規模の回路を追加し、単精度の浮動小数点除算を２つ並列に処理する演算器が示されている。加減算器は、上位と下位でそれぞれの単精度演算を行うため分割されている。また、部分剰余は上位と下位のそれぞれの符号により、除数との加減算が選択される。倍精度時は、下位側にも上位側の符号が選択されることと下位側から上位側へキャリーを伝搬させることにより倍精度幅の演算器と同じ結果が得られるようにしている。
しかしながら、この特開平４−１７２５２６には単精度の並列実行を行うために極めて有効な倍精度幅の浮動小数点除算器が示されてはいるが、更に演算方法に改善の余地がある。
即ち、部分剰余計算には回路の構成上引放し法が用いられており、部分剰余の符号により部分剰余の正負を判定し除数との加減算を決定するが、部分剰余の符号による部分剰余の正負判定には、部分剰余を全ｂｉｔにわたって桁上げ伝搬させる必要があり、処理時間が多くかかり高速処理が難しいという問題点がある。更にまたこの特開平４−１７２５２６には開平演算を高速に実行する手法については開示されていない。
本発明の目的は、高速な除算器、開平演算器等の演算器、及びそれを用いた電子回路装置を提供することである。
本発明の具体的な目的は、単精度１演算、単精度２演算、倍精度演算の可能な高速な演算器及びそれを用いた電子回路装置を提供することである。
本発明の更に具体的な目的は、高精度で高速なＳＲＴ演算器、特に倍精度のｂｉｔ幅を有するＳＲＴ法を用いた浮動小数点除算器及び開平演算器等の演算器、及びそれを用いた電子回路装置を提供することである。
発明の開示
倍精度のｂｉｔ幅を有する高速の浮動小数点除算器及び開平演算器を説明する前に、ここで本発明に係わるＳＲＴ法のアルゴリズム等について若干説明する。
ＳＲＴ除算は部分剰余の上位桁数ｂｉｔから商デジットを選択し、選択された商デジットに従って、部分剰余から除数を減算し、新たな部分剰余を得るループを繰り返しながら演算が進められる。
次に、ＳＲＴ除算方式を本発明者等が独自にＳＲＴ除算の仮数部ループ部の機能及びその構成に着目して理解しやすく整理すると第２図のように表わすことができる。
まず部分剰余に被除数Ｘが代入される。繰り返しループの回数をステップ数で表すことにすると、ｉステップ目の部分剰余は桁上げ保存形式で表され、ｓｕｍ、ｃａｒｒｙをそれぞれＰＲＳｉ、ＰＲＣｉと表記することにする。部分剰余の上位桁は、桁上げ伝搬加算器（ＣＰＡ：Ｃａｒｒｙ  Ｐｒｏｐａｇａｔｉｏｎ  Ａｄｄｅｒ）２０１にて桁上げ伝搬を行なう。この桁上げ伝搬された部分剰余を入力として、商デジット選択回路２０２によって商デジットが選択される。商デジットは−１、０、１のいずれかで、部分剰余は選択された商デジットの値に応じて除数Ｄとの部分剰余計算を行なう。この部分剰余の計算は、桁上げ保存加算器（ＣＳＡ：Ｃａｒｒｙ  Ｓａｖｅ  Ａｄｄｅｒ）２０５にて桁上げ保存形式にて実行される。部分剰余は商デジットの選択のために上位数ｂｉｔのみ桁上げ伝搬しておけばよいので、下位ｂｉｔは高速化のために桁上げ保存形式とする。商デジットが−１、１のときは、それぞれ部分剰余と除数Ｄとの加算、減算を行い、その結果をシフタ２０６によって１ｂｉｔ左シフトして次ステップの部分剰余ＰＲＳｉ＋１、ＰＲＣｉ＋１とする。また、商デジットが０のときは、部分剰余と０との加算を行い、その結果を１ｂｉｔ左シフトして次ステップの部分剰余とする。上記動作を繰り返すとともに、並行して商デジット値−１を含まない商への変換、すなわち商計算が商生成回路２０３にて行われ、商Ｑを出力することで商が求められる。
また、開平演算については、除数Ｄの代りに部分開平値を用いて部分剰余計算が行われる。ＳＲＴ開平回路は部分開平値を求める回路を付加すればＳＲＴ除算回路と共通化できる。なお、開平演算の商デジット選択回路２０２で求められる開平値デジットはここでは除算と同じく商デジットと呼ぶことにする。
ここで、桁上げ保存加算器ＣＳＡ２０５と商生成回路２０３を倍精度ｂｉｔ幅とすることにより、単精度、倍精度どちらも演算できる。単精度の除算、開平演算においては、倍精度の桁上げ保存加算器ＣＳＡ、商生成回路の下位ｂｉｔは全て０とすることにより実現される。
以上が本発明で用いられるＳＲＴ法の基本的なアルゴリズムである。
本発明は、高速除算器に広く用いられているＳＲＴ法のアルゴリズムを前記したように、部分剰余の全ｂｉｔ桁上げ伝搬をさせずに、除数との加減算の判定に最小限必要なｂｉｔ幅（通常３〜４ｂｉｔ）だけ桁上げ伝搬し、残りのｂｉｔは高速化のために桁上げ保存形式で演算する方法として捉えることによってはじめてなされたものであり、倍精度ｂｉｔ幅の演算器の下位ｂｉｔを単精度演算することを可能とし、倍精度ｂｉｔ幅で単精度の２命令並列実行をも可能としたＳＲＴ除算演算器及び又はＳＲＴ開平演算器を提供するものである。
本願において開示される発明のうち、代表的なものの概要を説明すれば次の通りである。
本発明に係わる演算器は、被除数又はその部分剰余及び除数が入力される入力部、上記被除数又は部分剰余の上位側と下位側を選択するセレクタ、上記セレクトされた上位側と下位側の上記被除数又は部分剰余部の桁上げを行う桁上げ伝搬手段（ＣＰＡ）、上記桁上げ伝搬手段出力を入力とする商デジット選択手段、上記商デジットを入力とし商を生成する商生成手段、及び上記商デジット選択手段により得られた商デジットの値に応じて上記被除数又は部分剰余部と上記除数との加減算を行う桁上げ保存加算手段（ＣＳＡ）を有し、上記桁上げ保存加算手段の出力を所定ビットシフトして新しい被除数又は部分剰余として上記入力部に再び入力してこの一連の動作を繰り返すことによって所望の演算が実行される。
本発明に係わる被除数の開平値を演算する開平演算器では、上記被除数又はその部分剰余が入力される入力部、上記被除数又は部分剰余の上位側と下位側を選択するセレクタ、上記セレクトされた上位側と下位側の上記被除数又は部分剰余部の桁上げを行う桁上げ伝搬手段、上記桁上げ伝搬手段の出力を入力とする商デジット選択手段、上記商デジットを入力とし開平値を生成する商生成手段、上記商デジットを入力とし部分開平値を生成する部分開平値生成手段、及び上記商デジット選択手段により得られた上記商デジットの値に応じて上記除数又は上記部分開平値と上記部分剰余との加減演算を行いその結果を桁上げ保存する桁上げ保存加算手段とを有し、上記桁上げ保存加算手段の出力を所定ビットシフトしそれを新しい被除数又は部分剰余として上記入力部に再び入力しこの一連の動作を繰り返すことによって上記被除数の開平値が演算される。
更に本発明に係わる除算器は、部分剰余の上位桁から第１商デジットを選択し、上記選択された第１商デジットに従って上記部分剰余から除数を減算し、新たな第１部分剰余を得るループを繰り返しながら演算が進められるＳＲＴ除算器に、上記第１商デジットとは別に上記上位桁又は下位桁から第２商デジットを選択し、上記選択された第２商デジットに従って上記部分剰余から上記除数を減算して新たな第２部分剰余を得る機能を付加し、得られた上記第２部分剰余を上記第１部分剰余にマージして上記ループを繰り返しながら演算し、倍精度演算、単精度演算及び単精度複数並列演算を実行可能にしたものである。
また、本発明によれば上記した単精度１演算、単精度２演算、倍精度演算での除算及び又は開平演算の可能な高速な演算器が実質的に同じ回路構成で実現できるので、１枚の半導体基板への電子回路システムの高集積化に適している。そのような電子回路装置においてはそのユーザが上記演算器の動作モードを任意に指定できることが必要であり、例えばマイクロプロセッサにおいては、命令キャッシュ及びデータキャッシュとバスを介して結合されたＣＰＵ及び浮動小数点演算ユニットとを有し、上記浮動小数点演算ユニットは相互に結合されたロードストアユニット、レジスタファイル、積和演算器、及び倍精度演算、単精度演算及び単精度複数並列演算の複数の動作モードを実行可能な除算器とからなり、上記レジスタファイルは上記演算器の上記動作モードを外部からユーザが指定できるようにするために上記動作モードの内倍精度演算と単精度複数並列演算との同時実行を禁止した浮動小数点演算ステータスレジスタを有しそれによって上記除算器の上記動作モードが設定されるようにされている。
発明を実施するための最良の形態
本発明では、データは浮動小数点データとし、仮数部の演算に関して以下のＳＲＴ除算アルゴリズム及び又はＳＲＴ開平演算のアルゴリズムに従って動作する。
除算と開平演算の部分剰余は次式のように表される。開平演算は除算における除数Ｄを部分開平値であるＱ１＋ｑｉ＋１×２−（ｉ＋２）で置き換えることにより除算と同様の演算となり、回路の共通化が行える。開平演算の部分開平値は除算の除数Ｄに相当し、開平値Ｑｉと区別して扱う。次の数式での×２乗算は左１ｂｉｔシフトにより行う。
除算    ：  Ｒｉ＋１＝２（Ｒｉ―ｑｉＤ）
開平演算：  Ｒｉ＋１＝２｛Ｒｉ−ｑｉ＋１（Ｑｉ＋ｑｉ＋１２−（ｉ＋２））｝
商又は開平値：  Ｑｉ  ＝ｑ０．ｑ１ｑ２ｑ３ｑ４…ｑｉ
但し、ｉステップにおいて、ｑｉは商デジット（−１，０，１）、Ｒｉは部分剰余、Ｄは除数、Ｑｉ＋ｑｉ＋１２−（ｉ＋２）は部分開平値、Ｑｉは商又は開平値をそれぞれ意味している。
ＳＲＴ法では、部分剰余は上位数ｂｉｔのみ桁上げ伝搬が行われ、部分剰余の上位数桁から商デジットが選択される。上記式により各ステップで部分剰余と商デジットが求まっていく。全ステップが終了すると、商又は開平値（以下、商／開平値と記されることがある）が得られる。
商デジットには−１を含むので、商、開平値、部分開平値は−１を含まない０，１のみの数に変換する（即ち、冗長な商デジットを非冗長な商デジットの商又は開平値に変換する）必要があるが、演算終了後に変換するのではなく、商デジットが求まる度に商生成回路にてＯｎ−ｔｈｅ−Ｆｌｙで変換する。このＯｎ−ｔｈｅ−Ｆｌｙ変換とは特開平１０−１８７４２０にも記載されているように、Ｑｉ（ｐｏｓｉｔｉｖｅ）とＱｉ−２−ｉ（ｎｅｇａｔｉｖｅ）の二進表現を保持しておき商デジット−１を桁上げ伝搬せずに変換させる方式である。
なお、開平演算では部分開平回路にてＯｎ−ｔｈｅ−Ｆｌｙで変換された部分開平値を用いて部分剰余を求める点が、除数を用いる除算と異なっている。
初期値はｉ＝０のときＲ０＝Ｘ（被除数又は被開平値）、ｑ０＝１（除算）、ｑ０＝０、ｑ１＝１（開平）である。除算では被除数Ｘは［１／２、１）除数Ｄは［１／２、１）と正規化されている。開平演算では被開平値Ｘは［１／４、１）とする。開平値は指数部が偶数となるよう仮数部を１ｂｉｔ右シフトして調整する。なお、［１／２、１）は１／２以上で１未満を表わす記号表現であり、他も同様である。
第２図は、ｉステップのＳＲＴ除算を表わしている。ｉステップの部分剰余のｓｕｍ、ｃａｒｒｙをそれぞれＰＲＳｉ、ＰＲＣｉとすると、桁上げ伝搬手段ＣＰＡ２０１にて桁上げ伝搬した部分剰余の上位桁を入力とし、商デジット選択回路２０２にて商デジットｑｉ＋１を選択し、選択された商デジットで除数＋Ｄ、０、−Ｄを除数セレクタ２０４で選択し、選択された除数と部分剰余との加減算を桁上げ保存加算手段ＣＳＡ２０５にて行い、１ｂｉｔシフタ２０６で左１ｂｉｔシフト後、結果ＰＲＳｉ＋１、ＰＲＣｉ＋１を得る。桁上げ保存加算手段ＣＳＡのキャリー入力信号２０７は、商デジットｑｉ＋１＝−１のとき１となる信号である。また同時に商デジットの−１を含まない商Ｑｉ＋１を商生成回路２０３にて求める。入力データが単精度、倍精度に関わらず、上位桁の桁上げ伝搬加算器ＣＰＡ、商デジット選択回路は共通であり、桁上げ保存加算手段ＣＳＡと商生成回路が倍精度ｂｉｔ幅の演算器であれば、倍精度演算が可能である。しかしながら、倍精度ｂｉｔ幅の演算器で単精度演算を行うときは、桁上げ保存加算手段ＣＳＡと商生成回路の下位ｂｉｔは０が入力されるが、演算器が効率的に使用されているとはいえない。
実施例１
そこで、ＳＲＴ法において倍精度ｂｉｔ幅の演算器で上位と下位で単精度除算を高速に並行して実行する機能を有する本発明に係わる第一の実施例を第１図に示す。
倍精度ｂｉｔ幅の演算器の上位側をｕｐｐｅｒ、下位側をｌｏｗｅｒと便宜上呼ぶことにする。ｌｏｗｅｒ側の部分剰余上位桁用の桁上げ伝搬手段ＣＰＡ１０７、商デジット選択回路１０８、除数セレクタ１０９を第２図に新たに追加して設ける。ｕｐｐｅｒとｌｏｗｅｒ側のデータセレクタ１０６では、選択信号ｓｅｌ１（１１０）において単精度１演算と倍精度演算ではｕｐｐｅｒ側を選択し、単精度２演算の並列実行ではｌｏｗｅｒ側を選択する。
本発明に係わるこの第１図で実行される倍精度の演算方法は次の通りである。
ｕｐｐｅｒとｌｏｗｅｒ側のデータセレクタ１０６においてｕｐｐｅｒ側が選択され、桁上げ伝搬手段ＣＰＡ１０７には桁上げ伝搬手段ＣＰＡ１０１と同じ部分剰余が与えられるため、２つの商デジット選択回路１０２、１０８から同じ商デジットが選択される。商デジットに従い除数セレクタ１０４、１０９で除数を選択し、部分剰余との加減算を桁上げ保存加算手段ＣＳＡ１０５、１１４にて行う。
上位側キャリー入力信号１１１は上位側の単精度演算のキャリー入力であるため、倍精度演算時は無効化される。下位側キャリー入力信号１１２は下位側の単精度演算または倍精度演算のキャリー入力であるため、ｑ＝−１のとき部分剰余と除数との減算を行うよう下位側キャリー入力信号は有効となり、キャリーが入力される。上位側の桁上げ保存加算手段ＣＳＡ１０５と下位側の桁上げ保存加算手段ＣＳＡ１１４間でキャリーの桁上げを行うため、キャリーセレクタ１１３は下位側の桁上げ保存加算手段ＣＳＡ１１４のキャリー出力を選択する。
演算結果の部分剰余は１ｂｉｔシフタ１１５にて左１ｂｉｔシフトを行い、次ステップの部分剰余ＰＲＳｉ＋１、ＰＲＣｉ＋１を得る。
このように、倍精度では同じ商デジットが選択され、該商デジットは倍精度幅の除数を選択するため負荷が大きいが、商選択回路が２つになることによりそのドライブ能力（パワー）が増強され、回路が高速化されるという利点がある。
また、第１図の構成で単精度１演算を行う場合には、被除数を初期部分剰余とするとき倍精度幅の残りのｂｉｔを０にしておくことを除けば、上記と同様の方法で演算することができる。また別の方法として倍精度のキャリー入力１１２の代わりに上位側キャリー入力１１１を与えて桁上げ保存加算器のキャリー伝搬を制御するセレクタｓｅｌ４（１１３）で０側を選択することによっても演算することができる。どちらの場合もｕｐｐｅｒとｌｏｗｅｒ側のデータセレクタ１０６はｕｐｐｅｒ側を選択する。
次に、第１図の構成で単精度の２演算を並列実行する方法について説明する。
ｕｐｐｅｒとｌｏｗｅｒ側のデータセレクタ１０６はｌｏｗｅｒ側が選択されるため、２つの商デジット選択回路１０２、１０８からはそれぞれ上位側ｑｕｉ＋１、下位側ｑｌｉ＋１の商デジットが選択される。商デジットに従い除数セレクタ１０４、１０９で除数を選択し、部分剰余との加減算を桁上げ保存加算手段ＣＳＡ１０５、１１４にて行う。
上位側キャリーに入力信号１１１は上位側の単精度演算のキャリー入力であるため、上位側商デジットｑｕｉ＋１＝−１のとき部分剰余と除数との減算を行うよう上位側キャリー入力信号は有効となる。
下位側キャリー入力信号１１２は下位側の商デジットｑｌｉ＋１＝−１のとき部分剰余と除数との減算を行うよう下位側キャリー入力信号は有効となり、キャリーが入力される。
上位側の桁上げ保存加算手段ＣＳＡ１０５と下位側の桁上げ保存加算手段ＣＳＡ１１４間でキャリーの伝搬を行わないため、キャリーセレクタ１１３は０を選択し、上位側の桁上げ保存加算手段ＣＳＡ１０５のキャリー入力とする。
演算結果の部分剰余は１ｂｉｔシフタ１１５にて左１ｂｉｔシフトを行い、次ステップの部分剰余ＰＲＳｉ＋１、ＰＲＣｉ＋１を得る。同時に商生成回路１０３にて商デジット−１を含まない商へ商デジットが求まる度に逐次変換する。
商生成回路１０３はｂｉｔ幅を変えることなく、演算器の前段にセレクタを追加することにより単精度２演算の並列実行を実現できる。
次に、本発明に係わる商生成回路のアルゴリズム及び商生成回路の構成を第３図に示す。
第３図の（ａ）にｐｏｓｉｔｉｖｅ値Ｍｉ、ｎｅｇａｔｉｖｅ値Ｎｉを用いた商生成回路のアルゴリズムを示す。商Ｑｉはｐｏｓｉｔｉｖｅ値であり、ｎｅｇａｔｉｖｅ値はｐｏｓｉｔｉｖｅ−２−ｉである。商デジットが求まる度に逐次Ｍｉ、Ｎｉを求めていく。演算のｂｉｔ位置のｐｏｓｉｔｉｏｎ値Ｐｉは、第３図の（ｂ）にＰｉ及びＰｉ＋１で例示した通り、ｉ番目のｂｉｔ位置のみ１で他のｂｉｔは０となるデータで、２−ｉとして使用される。第３図の（ｃ）に倍精度または単精度１演算用の商選択回路の構成を示す。右１ｂｉｔシフタ３０１はＰｉ＋１＝２−（ｉ＋１）の生成に使用される。ＯＲ回路３０２、３０３はそれぞれＭｉ−１＋２−ｉ、Ｎｉ−１＋２−ｉの計算を実行する。セレクタ３０４、３０５にて商デジットｑｉに従って、Ｍｉ、Ｎｉが決定される。
第３図の商生成回路のアルゴリズムを用いた商生成の例を次に示す。
ｑ０＝０、ｑ１＝１、ｑ２＝０、ｑ３＝１、ｑ４＝１
Ｑ１＝Ｍ１  ０．１        、Ｎ１  ０．０
Ｑ２＝Ｍ２  ０．１０      、Ｎ２  ０．０１
Ｑ３＝Ｍ３  ０．１０１    、Ｎ３  ０．１００
Ｑ４＝Ｍ４  ０．１００１  、Ｎ４  ０．１０００
即ち、商デジットを順にｑ０＝０、ｑ１＝１、ｑ２＝０、ｑ３＝１、ｑ４＝−１とし、ｑ０とｑ１の間に小数点があると仮定した。Ｍｉ＝Ｑｉであり、Ｎｉ，はＭｉ−２−ｉとなっている。Ｍｉ、Ｎｉを常に保持しておくことで、商生成に桁上げ伝搬が不要となる。本論理は後に述べる開平演算の部分開平値計算にも用いられる。部分開平値は商デジットを求める際に必要であることから、桁上げ伝搬が不要なことは商デジットを高速に演算する点で効果がある。
第４図に基づいて本発明に係わる商生成回路を用いた商生成の例を説明する。
第４図は単精度２演算の並列実行が可能な商生成回路を示している。Ｐｏｓｉｔｉｏｎ上位側には、単精度、倍精度の開始時とそれ以外の場合のセレクタ５０１、Ｐｏｓｉｔｉｏｎ下位側には単精度下位側の開始時とそれ以外の場合のセレクタ５０２があり、演算中のｂｉｔ位置を２演算同時に示すことができる。
上位側の商選択回路５０３と下位側の商選択回路５０４にはそれぞれＰｏｓｉｔｉｖｅ  Ｍｉ−１、Ｎｅｇａｔｉｖｅ  Ｎｉ−１の上位側と下位側が入力され、出力結果はマージされる。上位側のＰｏｓｉｔｉｏｎの右シフトアウトデータ５０５は下位側の商選択回路５０４に接続され、下位側の右シフタのシフトインデータとなる。下位側の商選択回路５０４には、シフトイン信号用に０と上位側からのシフトインデータを選択するセレクタを追加しておけばよい。
以上の説明から理解されるように、本発明に係わる第一の実施例によって倍精度、単精度、単精度２演算並列の演算が切り替えられてそれぞれ高速に実行される。
実施例２
次に、第５図を用いて倍精度ｂｉｔ幅の演算器で上位と下位で単精度除算を並行して実行する機能を有する本発明に係わる第二の実施例を説明する。
上記第一の実施例との相違点は、ｕｐｐｅｒとｌｏｗｅｒ側のデータセレクタ６１０が商選択回路出力の商デジットを入力としている点である。上記第一の実施例では部分剰余が入力である。第一の実施例と第二の実施例では、単精度１演算及び倍精度演算において、ｕｐｐｅｒ側とｌｏｗｅｒ側のデータセレクタの位置が違うため除数の選択方法が異なる。
即ち、上記第一の実施例では上位側と下位側の除数セレクタ１０４、１０９のセレクタ信号はそれぞれ上位側の商デジットｑｕｉ＋１、下位側の商デジットｑｌｉ＋１により除数を選択するが、この第二の実施例では上位側、下位側の除数セレクタ６０４、６０９のセレクタ信号はどちらも上位側の商デジットｑｕｉ＋１により除数が選択される。
商デジットによる除数選択のパスはクリティカルパスであり、第一の実施例の方が第二の実施例より高速である。
前述した特開平４−１７２５２６でのＳＲＴ法を対象としない演算器であっても、このように、その回路に対しＳＲＴ法を適用できるように新たに回路を付加、変更を行うことによって高速な演算器を構成することができる。
実施例３
次に、第６図を用いて単精度開平演算を並行して高速に実行する機能を有する本発明の第三の実施例を説明する。
第一の実施例との相違点は、第一の実施例の除数セレクタ１０４、１０９に対し、この第三の実施例では部分開平回路７０４、７０９となっている点である。開平演算では、固定値の除数の代わりに、商デジットが求まる度に逐次的に変化する部分開平値を使用する。
桁上げ伝搬手段ＣＰＡ７０１、７０７、商デジット選択回路７０２、７０８、開平値を生成する商生成回路７０３、桁上げ保存加算手段ＣＳＡ７０５、７１４、キャリー伝搬セレクタ７１３、１ｂｉｔ左シフタ７１５は前記した除算と回路の共有化ができるので、電子回路装置の高集積化に適している。
第７図にその部分開平回路のアルゴリズムを示す。同図の左側（１）に除算のアルゴリズムを比較のために示してあり、右側（２）に開平のアルゴリズムを示してある。この図から判るように商デジットｑｉ＋１＝１のとき、除数Ｄの代わりに部分開平値Ｍｉ＋２−（ｉ＋２）、また商デジットｑｉ＋１＝−１のとき、除数Ｄの代わりに部分開平値Ｎｉ＋２−（ｉ＋１）＋２−（ｉ＋２）を使用することで前記した除算と同様に開平演算ができる。ここで、Ｍｉ、ＮｉはそれぞれＭｉ＝Ｑｉ、Ｎｉ＝Ｑｉ−２−ｉである。
回路の構成としては、商生成回路と同様に、Ｐｏｓｉｔｉｏｎ  Ｐｉ、Ｐｏｓｉｔｉｖｅ  Ｍｉ−１、Ｎｅｇａｔｉｖｅ  Ｎｉ−１信号を入力とするＯｎ−ｔｈｅ−Ｆｌｙ回路と商デジット−１、０、１における除数または部分開平値用のセレクタを設ければよい。
以上の説明から明らかなように、本発明はＳＲＴ法の様々な高速化回路にも適用が可能である。
実施例４
例えば、前記した特開平９−６９０４０では、ｉ＋１ステップの商デジット選択回路の商デジット結果ｑｉ＋１を得る前に商デジットｑｉ＋１の−１、０、１の３通りについて先行してｉ＋２ステップのＱＳＬの商デジットを計算し高速化を行っている。
第８図を用いて上記並列除算器に対して、単精度２演算並列実行可能な本発明に係わる第四の実施例を説明する。
倍精度または単精度１演算のみの回路構成としては、商デジットｑｕｉ＋１が−１、０、１の３通りの桁上げ保存加算手段ＣＳＡ９０１、桁上げ伝搬手段ＣＰＡ９０２、商デジット選択回路９０３に加え、商デジット選択回路９０５、商デジットｑｕｉ＋１によるセレクタ９０４、９０６、商デジットｑｕｉ＋２によるセレクタ９０８、桁上げ保存加算手段ＣＳＡ９０７、９１３、商生成回路９０９となる。単精度２演算を並列実行可能とするためには上記の回路の単精度下位側用に新たに次の回路を設ければよい。
即ち、単精度２演算と倍精度または単精度１演算用に部分剰余を選択するセレクタ９１４、商デジットｑｌｉ＋１が−１、０、１の３通りの桁上げ保存加算手段ＣＳＡ９１５、桁上げ伝搬手段ＣＰＡ９１６、商デジット選択回路９１７に加え、商デジット選択回路９１０、商デジットｑｌｉ＋１によるセレクタ９１１、９１８、商デジットｑｌｉ＋２によるセレクタ９１２を付加すれば良い。各回路の機能は前記回路と同様であるので詳細は省略する。
桁上げ保存加算手段ＣＳＡ９０７、９１３には商デジットが−１のときのキャリーイン論理と下位側から上位側へのキャリーの伝搬と伝搬抑止のセレクタ、１ｂｉｔ左シフタが内蔵されている。
また、除算だけでなく、開平演算を行うためには第６図と同様に除数のセレクタを部分開平回路に置き換えることにより実現できる。
実施例５
また、前記した特開平１０−１８７４２０では商デジット選択と並行して次ステップの部分剰余を予測し、ＣＰＡの回路を簡略化し高速化を計っている。このような演算器にも本発明を適用することができる。
第９図を用いて、上記部分剰余予測を行う除算器に本発明を適用することによって、単精度２演算並列実行可能とした第五の実施例を説明する。
倍精度または単精度１演算のみの回路構成としては、部分剰余上位桁決定回路ＲＥＭ１００１、商デジット選択回路１００２、部分剰余上位桁予測回路ＲＥＬ１００３、商デジットｑｕｉ＋１によるセレクタ１００５、桁上げ保存加算手段ＣＳＡ１０１１、商生成回路１００４となる。
単精度２演算を並列実行可能とするためには上記の回路の単精度下位側用に新たに次の回路を設ければよい。即ち、単精度２演算と倍精度または単精度１演算用に部分剰余を選択するセレクタ１００６、部分剰余上位桁決定回路ＲＥＭ１００７、商デジット選択回路１００８、部分剰余上位桁予測回路ＲＥＬ１００９、商デジットｑｌｉ＋１によるセレクタ１０１０である。
各回路の機能は第一の実施例で示した回路と同様であるので詳細説明は省略するが、桁上げ保存加算手段ＣＳＡ１０１１には商デジットが−１のときのキャリーイン論理と下位側から上位側へのキャリーの伝搬と伝搬抑止のセレクタ、１ｂｉｔ左シフタが内蔵されている。
また、除算だけでなく、開平演算を行うためには第６図と同様に除数のセレクタを部分開平回路に置き換えることにより実現することができる。
実施例６
更に本発明の第四の実施例では２ｂｉｔ，他の実施例では１ｂｉｔの商デジットが求められる例を示したが、これらを数ｂｉｔの商デジットが求められるよう拡張することが可能である。
例えば、第一の実施例での１ｂｉｔの商デジットを求める回路を１ステージの回路と呼ぶことにすると、逐次的に３ステージ分連結すれば、３ｂｉｔの商デジットが得られる。詳細説明は省略するが、他の実施例に関しても同様に構成できる。
実施例７
以上の種々の実施例では、倍精度幅の演算器で単精度の２演算並列実行の例を示したが、ｂｉｔ幅は倍精度に限定されない。ｂｉｔ幅を大きくすれば、単精度の並列実行できる演算の数を増やすことができる。そして、本発明は同期回路だけでなく、非同期回路にも適用が可能であり、種々の高速な電子回路装置を実現することができる。
第１０図を用いて本発明に係わる第七の実施例として浮動小数点除算器（又は開平演算器）を用いたマイクロプロセッサの構成図を示す。
ＤＲＡＭやＳＤＲＡＭ等のメインメモリ１１０１は外部データバス１１０２、外部アドレスバス１１０３によりマイクロプロセッサ１１０４と接続されている。マイクロプロセッサ１１０４は、外部とのデータの授受を行うバスインターフェースユニット１１０５、命令キャッシュ１１０６、データキャッシュ１１０７、命令キャッシュ１１０６からの命令コードを乗せるアドレスバス１１０８、データキャッシュ１１０７からのデータの読み出しやデータキャッシュ１１０７への書きこみを行うデータバス１１０９、ＣＰＵ１１１０、ＦＰＵ（Ｆｌｏａｔｉｎｇ  Ｐｏｉｎｔ  Ｕｎｉｔ）１１１１から構成される。なお、上記ＤＲＡＭやＳＤＲＡＭ等のメインメモリ１１０１は外部に設けるのではなく、マイクロプロセッサ１１０４と一緒に１枚の半導体基板内に内蔵されていても良い。その場合は、バス１１０２や１１０３は同一チップ上での内部バスで構成されることになる。
ＦＰＵ１１１１は、前記した本発明の種々の実施例で説明された倍精度演算、単精度演算及び単精度複数並列演算の複数の動作モードを実行可能な浮動小数点除算器（又は浮動小数点開平演算器）１１１５を搭載し、その他にデータバス１１０９へのデータのロード、ストアを行う浮動小数点ロードストアユニット１１１２、浮動小数点レジスタファイル１１１３、浮動小数点積和演算器１１１４等から成る。
なお、前記実施例で述べていない浮動小数点除算器の指数演算部、ｓｕｍ、ｃａｒｒｙと桁上げ保存形式で出力される部分剰余の桁上げ伝搬部、正規化処理部、丸め処理部、ゼロ除算等の例外検出部は別論理が必要となる。第１０図では浮動小数点積和演算器１１１４内部に上記論理が存在すると仮定している。
なお、このような電子回路装置においてはそのユーザが外部から任意に上記演算器の動作モードを簡単に指定できるようにすることが必要である。
次に、第１１図に基づいて、第１０図に示した本発明に係わるマイクロプロセッサを動作させるに特に必要な浮動小数点レジスタファイル１１１３について説明する。ここでは特に、その中のＦＰＵステータスレジスタに格納される単精度２演算同時実行を指定する命令コードの一例を説明する。
第１１図の（ａ）から判るように、浮動小数点ステータスレジスタには単精度２演算の並列実行をＯＮ、ＯＦＦするモードビット（０／１）と倍精度、単精度のモードビット（０／１）とが設けられ、外部からユーザがソフトウェアで動的に制御乃至セレクトできるようにされている。ただし、単精度２演算と倍精度のモードを同時にＯＮ（１）に設定することは禁止とされている。
また、このＦＰＵステータスレジスタの具体的な指定方法としては、第１１図の（ｂ）に例示したように３２ｂｉｔレジスタで連続する２つのレジスタをペアで指定する方法と、（ｃ）に例示したように６４ｂｉｔレジスタで指定する方法があり、（ｂ）（ｃ）のそれぞれの指定方法において（１）ＦＤＩＶ  ＦＲｍ，ＦＲｎを指定する２オペランド方式と（２）ＦＤＩＶ  ＦＲＩ，ＦＲｍ，ＦＲｎを指定する３オペランド方式の例が示されている。このレジスタをペアで指定する場合は、例えばＦＲｎに対しては、ＦＲｎとＦＲｎ＋１レジスタが指定される。
このようにすることによって、本発明によればユーザがその使用目的に応じて浮動小数点の除算や開平演算での単精度１演算の実行、単精度２演算の並列実行、倍精度演算の実行、開平演算の実行等の動作処理モードを任意に簡単に設定することができる。
しかも、前記したようにこれら複数の動作モードを殆ど同じ回路構成で実現できるので、高速動作可能な演算器を内蔵した高性能な電子回路装置を一つの半導体基板内に集積化した大規模半導体集積回路装置（ＬＳＩ）を実現することができる。
産業上の利用可能性
浮動小数点倍精度ｂｉｔ幅のＳＲＴ除算器や開平演算器に対し、下位側に単精度と倍精度のセレクタ、部分剰余の桁上げ伝搬を行う桁上げ伝搬手段ＣＰＡ、商デジットの選択を行う商デジット選択回路、除数のセレクタまたは部分開平回路を設けることと、上位側と下位側の桁上げ保存加算手段ＣＳＡの間にｃａｒｒｙの伝搬を選択するセレクタ、商生成回路内部に開始位置のセレクタを設けることにより、演算器の幅を増やすことなく、浮動小数点単精度の除算または開平演算を２演算同時実行できる。また、セレクタで倍精度を選択する場合、商デジット選択回路に同じ入力が与えられ、選択された商デジットのドライブ力を２倍に増加させるので、倍精度演算においても回路を高速化することができる。
また、この発明を使用した除算器及び又は開平器をマイクロプロセッサ等の電子機器に搭載することによって、高速高性能な電子機器を実現することができる。
【図面の簡単な説明】
第１図は、本発明に係わる第一の実施例を説明するための回路システム構成図である。
第２図は、本発明で用いられるＳＲＴ除算のアルゴリズムを説明するための回路システム構成図である。
第３図は、本発明に係わる第一の実施例における商生成回路を説明するためのアルゴリズム及び回路構成図である。
第４図は、本発明に係わる第一の実施例での商生成回路の回路システム構成図である。
第５図は、本発明に係わる第二の実施例を説明するための回路システム構成図である。
第６図は、本発明に係わる第三の実施例を説明するための回路システム構成図である。
第７図は、第三の実施例における動作を説明するためのアルゴリズムである。
第８図は、本発明に係わる第四の実施例を説明するための回路システム構成図である。
第９図は、本発明に係わる第五の実施例を説明するための回路システム構成図である。
第１０図は、本発明に係わる浮動小数点ＳＲＴ除算器を搭載した電子回路装置の第七の実施例を説明するための回路システム構成図である。
第１１図は、本発明に係わる第七の実施例での浮動小数点ＳＲＴ除算用の命令コードを説明するためのレジスタ内の命令コードの構成図である。
【図１】
0003793505.tif 000002
【図２】
0003793505.tif 000003
【図３】
0003793505.tif 000004
【図４】
0003793505.tif 000005
【図５】
0003793505.tif 000006
【図６】
0003793505.tif 000007
【図７】
0003793505.tif 000008
【図８】
0003793505.tif 000009
【図９】
0003793505.tif 000010
【図１０】
0003793505.tif 000011
【図１１】
0003793505.tif 000012