(57)【特許請求の範囲】
【請求項１】
浮動小数点演算の対象となる２つのオペランドの符号から、加算と減算のいずれの演算を行なうかを示す加減算信号を生成する符号比較器と、
前記２つのオペランドの指数の大小を比較し、いずれのオペランドを選択するかを示すオペランド選択信号を生成する指数比較器と、
前記オペランド選択信号を用いて前記２つのオペランドの仮数部の一方を選択して第１仮数として出力する第１のセレクタと、
前記オペランド選択信号を用いて前記２つのオペランドの仮数部の他方を選択して第２仮数として出力する第２のセレクタと、
オペランド加算時には前記第１仮数を、オペランド減算時には前記第１仮数に対する１の補数を第３仮数として出力する補数化部と、
前記２つのオペランドの指数の差だけ前記第２仮数のシフトを行い、第４仮数として出力するアラインメント部と、
前記第１仮数及び第２仮数の大小を比較する仮数比較器と、
前記第３仮数及び第４仮数の絶対値加算を行なう絶対値加算器であって、前記符号比較器が出力する加減算信号が減算であることを示す場合において、前記指数比較器での比較結果及び前記仮数比較器での比較結果により絶対値加算結果が正の数になると認められる場合には前記絶対値加算器で前記第３仮数及び第４仮数に加えてさらに１を加算することとなる値を前記絶対値加算器のキャリー入力とし、前記指数比較器での比較結果及び前記仮数比較器での比較結果により絶対値加算結果が負の数になると認められる場合には前記絶対値加算器で前記第３仮数及び第４仮数を加算するときに前記絶対値加算器にゼロのキャリー入力をすると共に、前記絶対値加算器を構成する半加算器による前記第３仮数及び第４仮数の演算出力信号の１の補数をとることにより第５仮数として加算結果を出力する絶対値加算器と、
を有することを特徴とする浮動小数点加算器。    
【請求項２】
浮動小数点演算の対象となる２つのオペランドの符号から、加算と減算のいずれの演算を行なうかを示す加減算信号を生成する符号比較器と、
前記２つのオペランドの指数の大小を比較し、いずれのオペランドを選択するかを示すオペランド選択信号を生成する指数比較器と、
前記オペランド選択信号を用いて前記２つのオペランドの仮数部の一方を選択して第１仮数として出力する第１のセレクタと、
前記オペランド選択信号を用いて前記２つのオペランドの仮数部の他方を選択して第２仮数として出力する第２のセレクタと、
オペランド加算時には前記第１仮数を、オペランド減算時には前記第１仮数に対する１の補数を第３仮数として出力する補数化部と、
前記２つのオペランドの指数の差だけ前記第２仮数のシフトを行い、第４仮数として出力するアラインメント部と、
前記２つのオペランドの仮数データを比較してその大小を比較する仮数比較器と、
前記第３仮数及び第４仮数の絶対値加算を行なう絶対値加算器であって、前記符号比較器が出力する加減算信号が減算であることを示す場合において、前記指数比較器での比較結果及び前記仮数比較器での比較結果により絶対値加算結果が正の数になると認められる場合には前記絶対値加算器で前記第３仮数及び第４仮数に加えてさらに１を加算することとなる値を前記絶対値加算器のキャリー入力とし、前記指数比較器での比較結果及び前記仮数比較器での比較結果により絶対値加算結果が負の数になると認められる場合には前記絶対値加算器で前記第３仮数及び第４仮数を加算するときに前記絶対値加算器にゼロのキャリー入力をすると共に、前記絶対値加算器を構成する半加算器による前記第３仮数及び第４仮数の演算出力信号の１の補数をとることにより第５仮数として加算結果を出力する絶対値加算器と、
を有することを特徴とする浮動小数点加算器。
【請求項３】
請求項２記載の浮動小数点加算器であって、
前記第３仮数及び第４仮数の絶対値加算を行なう前記絶対値加算器は、前記符号比較器が出力する加減算信号が減算であることを示す場合において、前記仮数比較器での比較結果に対して前記オペランド選択信号との排他的論理和をとった結果及び前記指数比較器での比較結果により、絶対値加算結果が正の数になると認められる場合に前記絶対値加算器で前記第３仮数及び第４仮数に加えてさらに１を加算することとなる値を前記絶対値加算器のキャリー入力とし、前記仮数比較器での比較結果に対して前記オペランド選択信号との排他的論理和をとった結果及び前記指数比較器での比較結果により、絶対値加算結果が負の数になると認められる場合には前記絶対値加算器で前記第３仮数及び第４仮数を加算するときに前記絶対値加算器にゼロのキャリー入力をすると共に前記絶対値加算器を構成する前記半加算器による前記第３仮数及び第４仮数の演算出力信号の１の補数をとることにより、前記第５仮数として加算結果を出力すること、
を特徴とする浮動小数点加算器。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータプロセッサにおける浮動小数点加算器ユニットを設計するための技術に関する。
【背景技術】
【０００２】
ＩＥＥＥ７５４で規定される２進浮動小数点加算器では、仮数部を絶対値として格納する。そのため、浮動小数点加算器では、減算によって、加算結果が負の値になるようなときには、仮数部を正の値に戻して絶対値とし、符号を修正する操作をする。
【０００３】
この操作を行うために、浮動小数点加算器では、加算結果の仮数部を正の値に戻すための再補数化の機能を有している。再補数化機能は、浮動小数点加算器内部にある加算器に単独で実装されることが多く、その方法は次のようになっている。
【０００４】
まず、減数の２の補数を作成し、被減数に加算する。
【０００５】
このとき、加算器のキャリー出力が１にならなければ、加算結果が負であるので、再補数化を実行する。
【０００６】
たとえば、ＡとＢの差の絶対値｜Ａ−Ｂ｜を計算する場合、Ａ−Ｂ＞０の時は、
【０００７】
【数１】
0005515601.tif 000002
【０００８】
を計算し、Ａ−Ｂ＜０の時は、
【０００９】
【数２】
0005515601.tif 000003
【００１０】
を計算する。Ａ−Ｂ＝０になる場合は、有効ビット内では、数１と数２とは同じ値になるので、どちらの方法で計算しても良い。
【００１１】
図２２は、従来例に係る浮動小数点加算器の構成例を示す図である。図２２に係る浮動小数点加算器は、符号・指数処理部５０、オペランドＡ及びオペランドＢをセレクトするセレクタ５１、５２、補数化回路５３、アラインメント部５４、絶対値加算器５５、正規化処理部５６を有する。
【００１２】
図２３は、図２２で使われている絶対値加算器５５の例を示した図である。図２３において、Ａは被減数とし、Ｂは絶対値加算器５５に入力する前に補数化回路５３において１の補数をとった減数であるものとする。図２３の絶対値加算器では、Ａ＋Ｂの加算を行う加算器６０と、Ａ＋Ｂ＋１の加算を行う加算器６１とを有する。加算器６０は、キャリー入力が０の時、ＡとＢの排他的論理和により得られる半加算結果（ＨＳＵＭ）とキャリーとの排他的論理和で得られる加算結果を出力する。加算器６１は、キャリー入力が１の時についての加算結果を出力する。
【００１３】
ＥＯＲ（Ｅｘｃｌｕｓｉｖｅ−ＯＲ）ゲート６２は、加算器６０の加算結果（Ａ＋Ｂ）と、減算が行なわれる場合に値「１」が設定されるＳＵＢ信号との排他的論理和をとることにより、減算時に加算器６０の加算結果に対して１の補数をとる。セレクタ６３は、ＳＵＢ信号を用いて、減算でない場合は０を、減算の場合は加算器６０のキャリーアウト信号をセレクトする。
【００１４】
ここで、加算器６０のキャリーアウトが１の時は、加算結果は正のため、キャリー入力が１の加算器６１の加算結果をセレクタ６４でセレクトして絶対値加算器の出力結果Ｒとする。加算器６０のキャリーアウトが０の場合は、キャリー入力が０の時の加算器６０の加算結果に対してＥＯＲゲート６２で１の補数をとったものをセレクタ６４でセレクトして、絶対値加算器の出力結果Ｒとする。尚、前述の通り、Ａ−Ｂ＝０となる場合には、数１と数２とは同じ値になるので、加算器６１のキャリーアウトをセレクタ６３に接続しても良い。
【００１５】
特許文献１には、２つの入力データにおける仮数部の大小関係を予め判定しておくことによって、２つの仮数部間で減算を行う必要が生じた場合には常に大なる仮数部より小なる仮数部を減ずるといった形で減算を行なうことによって仮数部演算結果が常に絶対値として得られるようにした発明が開示されている。
【先行技術文献】
【特許文献】
【００１６】
【特許文献１】特開昭５９−１８８７４０号公報
【発明の概要】
【発明が解決しようとする課題】
【００１７】
しかしながら、背景技術は以下に述べる課題を有する。
【００１８】
図２３の絶対値加算器では、キャリーアウトの値によって出力する加算結果を選択するために、キャリー出力で加算結果を選択するパスが加算器の遅延時間を決定してしまい、高速動作の妨げとなっている。また、各ビットへのキャリーの伝播から加算結果が確定するまでの時間が、Ａ＋Ｂの側では、Ａ＋Ｂ＋１の側に比べて、ＥＯＲゲート６２で１の補数を作成する制御を行なう分だけ遅延時間が増加する。
【００１９】
特許文献１記載の発明では、あらかじめオペランドの大小比較をして、キャリーのパスがネックとなる絶対値加算器を使わないようにしている。しかし、必ず仮数部の大きい方から小さい方を減ずる構成となっているので、オペランドの符号及び指数の値によっては、一方のオペランドについて、アラインメント（桁合わせ）と補数化の両方が必要となる場合がある。そのため、浮動小数点加算器の遅延時間に大きく影響を与えるアラインメントのルートを遅くしてしまっているという問題点がある。
【課題を解決するための手段】
【００２０】
上記の課題を解決するための、本発明に係る浮動小数点加算器の一態様は、浮動小数点演算の対象となる２つのオペランドの符号から、加算と減算のいずれの演算を行なうかを示す加減算信号を生成する符号比較器と、前記２つのオペランドの指数の大小を比較し、いずれのオペランドを選択するかを示すオペランド選択信号を生成する指数比較器と、前記オペランド選択信号を用いて前記２つのオペランドの仮数部の一方を選択して第１仮数として出力する第１のセレクタと、前記オペランド選択信号を用いて前記２つのオペランドの仮数部の他方を選択して第２仮数として出力する第２のセレクタと、オペランド加算時には前記第１仮数を、オペランド減算時には前記第１仮数に対する１の補数を第３仮数として出力する補数化部と、前記２つのオペランドの指数の差だけ前記第２仮数のシフトを行い、第４仮数として出力するアラインメント部と、前記第１仮数及び第２仮数の大小を比較する仮数比較器と、前記第３仮数及び第４仮数の絶対値加算を行なう絶対値加算器であって、前記符号比較器が出力する加減算信号が減算であることを示す場合において、前記指数比較器での比較結果及び前記仮数比較器での比較結果により絶対値加算結果が正の数になると認められる場合には該絶対値加算器のキャリー入力を１とし、前記指数比較器での比較結果及び前記仮数比較器での比較結果により絶対値加算結果が負の数になると認められる場合には該絶対値加算器のキャリー入力を０にすると共に、絶対値加算器を構成する半加算器出力信号の１の補数をとることにより、前記第３仮数及び第４仮数の絶対値加算を行なって第５仮数として加算結果を出力する絶対値加算器とを有する。
【発明の効果】
【００２１】
本発明に係る浮動小数点加算器では、減算時の１の補数を作成する処理を、アラインメントとは別のパスで実行でき、また、加算結果に対する再補数化の制御を絶対値加算器のキャリー出力を用いることなく行なうことができる。浮動小数点加算器の遅延時間はアラインメントのパス及び加算器のキャリー伝播が大きな割合を占めるが、上記課題解決手段により、絶対値加算器の回路規模の増加を伴うことなく高速な浮動小数点加算器を得ることが可能となる。
【図面の簡単な説明】
【００２２】
【図１】本発明の実施例１に係る浮動小数点加算器を示す図である。
【図２】図１の実施例１の一態様を示す図である。
【図３】本発明の実施例１に係る符号・指数処理部の一例を示す図である。
【図４】本発明の実施例１に係る比較器の一例を示す図である。
【図５】本発明の実施例１に係る絶対値加算器を示す図である。
【図６】本発明の実施例１の絶対値加算器に係る６４ビットキャリーブロックを示す図である。
【図７】本発明の実施例１の絶対値加算器に係る１６ビットキャリーブロックを示す図である。
【図８】本発明の実施例１における符号、指数部、仮数部（ＦＯＰＡ、ＦＯＰＢ）の値と、ＳＵＢ、ＲＥＣＯＭＰ、ＣＩＮの関係を示す表である。
【図９】本発明の実施例１における指数部とオペランド交換の関係を示す表である。
【図１０】本発明の実施例１における符号と補数化回路でのビット反転を示す表である。
【図１１】本発明の実施例１に係る正規化処理部を示す図である。
【図１２】本発明の実施例１に係るリーディングゼロカウント値とビットのマッピングを示す図である。
【図１３】本発明の実施例１に係るリーディングゼロカウントの回路例を示す図である。
【図１４】本発明の実施例２に係る浮動小数点加算器を示す図である。
【図１５】本発明の実施例２における符号、指数部、仮数部の値と、ＳＵＢ、ＲＥＣＯＭＰ、ＣＩＮの関係（ＥＡ＝ＥＢでデータ交換しない場合）を示す表である。
【図１６】本発明の実施例２における符号、指数部、仮数部の値と、ＳＵＢ、ＲＥＣＯＭＰ、ＣＩＮの関係（ＥＡ＝ＥＢでデータ交換する場合）を示す表である。
【図１７】本発明の実施例３に係る絶対値加算器２を示す図である。
【図１８】本発明の実施例３に係るＲＥＣＯＭＰ、Ｃｉｎの真理値表を示す図である。
【図１９】本発明の実施例３に係る加算器セグメントを示す図である。
【図２０】本発明の実施例３に係るブロックキャリー用６４ビットキャリーブロックを示す図である。
【図２１】本発明の実施例３に係る図１９のブロックキャリー用１６ビットキャリーブロックを示す図である。
【図２２】従来例１に係る浮動小数点加算器を示す図である。
【図２３】従来例１に係る絶対値加算器を示す図である。
【発明を実施するための形態】
【００２３】
以下、この発明の実施の形態について詳細に説明する。
【実施例１】
【００２４】
図１は、本発明の実施例１に係る浮動小数点加算器の構成を示す図である。図１に示す浮動小数点加算器は、符号・指数処理部１０、第１のセレクタ１１、第２のセレクタ１２、補数化回路１３、アラインメント部１４、比較器１５、絶対値加算器１６、正規化処理部１７を有する。
【００２５】
図１の符号・指数処理部１０は、浮動小数点演算の対象となる２つのオペランドの符号及び指数についての演算処理を行う。符号・指数処理部１０では、２つのオペランドＯＰＥＲＡＮＤ  ＡおよびＯＰＥＲＡＮＤ  Ｂの符号から、加算と減算とのいずれの演算を行うかを示す“ＡＤＤ／ＳＵＢ”信号を出力する。“ＡＤＤ／ＳＵＢ”信号は、補数化回路１３や絶対値加算器１６で使用される。
【００２６】
符号・指数処理部１０はまた、指数の大小比較結果から得られる、オペランド交換するかどうかを示すＥＸ＿ＯＰ信号や、指数ＥＡとＥＢが等しくないことを示すＥＡ＿ＮＥ＿ＥＢ信号を出力する。ここで、ＥＸ＿ＯＰ信号は、オペランドＡの仮数部とオペランドＢの仮数部のいずれを選択するかの制御信号として使用される。また、ＥＡ＿ＮＥ＿ＥＢ信号はオペランドＡの指数ＥＡとオペランドＢの指数ＥＢが等しくないときに１となる信号である。
【００２７】
第１のセレクタ１１及び第２のセレクタ１２は、それぞれオペランドの指数の大小比較結果に基づいて２つのオペランドの仮数の一方を選択し、仮数ＦＯＰＡ及びＦＯＰＢを出力する。具体的には、指数の大きい方のオペランドの仮数をセレクタ１１で選択して仮数ＦＯＰＡとして補数化回路１３へ出力し、他方のオペランドの仮数をセレクタ１２で選択して仮数ＦＯＰＢとしてアラインメント部１４へ出力する。尚、２つのオペランドの指数が等しい場合、セレクタ１１はオペランドＡの仮数部とオペランドＢの仮数部のいずれを選択することもできる。この場合、セレクタ１２はセレクタ１１で選択されていないオペランドの仮数部を選択する。
【００２８】
補数化回路１３は、第１のセレクタ１１で選択された仮数ＦＯＰＡに対して、“ＡＤＤ／ＳＵＢ”信号が加算を示す場合にはＦＯＰＡをそのまま出力し、“ＡＤＤ／ＳＵＢ”信号が減算を示す場合にはＦＯＰＡに対して１の補数をとった値を出力する。補数化回路１３の出力は、絶対値加算器１６に入力する。
【００２９】
アラインメント部１４は、後述の符号・指数処理部１０で判定される２つのオペランドの指数差（図１では“ＰＡ＿ＳＦＴ”）の分だけ、第２のセレクタ１２で選択された仮数ＦＯＰＢのシフトを行うことにより桁合わせ処理を行う。その際、シフトされた仮数の最下位のビットの下に、いわゆるガードビット、ラウンドビット、及びラウンドビットより下位の位置に一つでも“１”があるかどうかを示すスティッキービットを付加するようにしても良い。アラインメント部１４の出力は、絶対値加算器１６に入力する。
【００３０】
比較器１５は、第１のセレクタ１１及び第２のセレクタ１２で選択された仮数（ＦＯＰＡ，ＦＯＰＢ）を比較し、２つのオペランドの指数の値が等しい時の絶対値加算器１６による減算の結果が正負いずれになるかを判定する。２つのオペランドの指数が異なる場合、前述の通り指数が大きいオペランドの仮数ＦＯＰＡを補数化回路１３を通して絶対値加算器１６に入力するので、比較器１５で仮数の比較をしなくても、絶対値加算器１６による減算の結果が負の値となることが分かる。
【００３１】
論理ゲート１８は、比較器１５の判定結果であるＦ＿ＧＴと、２つのオペランドの指数が等しくないことを示すＥＡ＿ＮＥ＿ＥＢ信号との論理演算を行なうことにより、減算時の絶対値加算器１６の加算結果が正負いずれの値になるかを示す“ＰＯＳＩ／ＮＥＧ”信号を出力する。
【００３２】
絶対値加算器１６は、“ＡＤＤ／ＳＵＢ”信号及び“ＰＯＳＩ／ＮＥＧ”信号を用いて絶対値加算器１６における再補数化の制御及びキャリー入力の制御を行いつつ、補数化回路１３及びアラインメント部１４から出力される信号に対する絶対値加算を行う。
【００３３】
正規化処理部１７は、絶対値加算器１６の出力結果に対して、正規化と丸め操作を行う。
【００３４】
符号・指数処理部１０から出力される浮動小数点加算器の加算結果としての符合及び指数、ならびに正規化処理部１７から出力される浮動小数点加算器の加算結果としての仮数を合わせて、最終的な浮動小数点加算器の加算結果（Ｆ＿ＲＥＳＵＬＴ）が生成される。
【００３５】
図２では、減算が行なわれる場合、符号・指数処理部１０からは、減算を示すＳＵＢ信号が出力される例を示す。図２ではまた、論理ゲート１８を論理和ゲートとし、オペランドの減算時に絶対値加算器１６の加算結果が負となると判別された場合に、ＮＥＧ信号を出力する。以下の説明では、主として図２に示す実施例を用いて本願実施形態における絶対値加算器の説明を行う。
【００３６】
実施例１に係る浮動小数点加算器１は、桁合わせを行うアラインメント部１４の動作と並行して仮数ＦＯＰＡと仮数ＦＯＰＢの比較を行う比較器１５を設けることを特徴とする。実施例１の比較器１５は、指数の大小によって経路を確定した後のオペランドＡの仮数ＦＯＰＡ及びオペランドＢの仮数ＦＯＰＢを比較し、ＦＯＰＡ＞ＦＯＰＢが成立する時に出力信号Ｆ＿ＧＴを１にする。ここで、ＦＯＰＡ≧ＦＯＰＢが成立する時に比較器１５から出力される信号を１にしても良い。
【００３７】
前述の通り、補数化回路１３にはオペランドの指数が大きい方のオペランドの仮数部が入力されるので、オペランドの指数が等しくないときは、減算時における絶対値加算器１６の加算結果は負の値になる。また、オペランドの指数が等しいときは、オペランドＡの仮数がオペランドＢの仮数よりも大きい場合に、減算時における絶対値加算器１６の加算結果は負の値になる。従って、論理和ゲート１８により、比較器１５から出力されるＦ＿ＧＴ信号とＥＡ＿ＮＥ＿ＥＢ信号との論理和をとることにより、ＮＥＧ信号を生成することができる。このＮＥＧ信号は絶対値加算器１６に通知され、絶対値加算器１６における再補数化の制御及びキャリー入力の制御に用いられる。
【００３８】
図３は、図２における符号・指数処理部１０の一例を示す図である。符号・指数処理部１０は、指数値の大小を判定し、オペランド間の指数差（ｐｒｅ  ａｌｉｇｎｍｅｎｔ  ｓｈｉｆｔ  ａｍｏｕｎｔ）を絶対値として求める。指数値の大小判定は、高速化のために、入力された各オペランドの指数ＥＸＰＡ及びＥＸＰＢについて（ＥＸＰＡ−ＥＸＰＢ）と（ＥＸＰＢ−ＥＸＰＡ）を同時に計算し、（ＥＸＰＡ−ＥＸＰＢ）又は（ＥＸＰＢ−ＥＸＰＡ）のキャリー出力を用いて判定する。
【００３９】
具体的には、図３に示す加算器１０１のＡ端子にはＥＸＰＡがそのまま入力され、加算器１０１のＢ端子には、１の補数化器１０３でＥＸＰＢを反転させた信号が入力される。加算器１０１のキャリー入力を１にすれば、加算器１０１において（ＥＸＰＡ−ＥＸＰＢ）が計算される。同様に、加算器１０２のＡ端子には、１の補数化器１０４でＥＸＰＡを反転させた信号が入力され、加算器１０２のＢ端子には、ＥＸＰＢがそのまま入力される。加算器１０２のキャリー入力を１にすれば、加算器１０２において（ＥＸＰＢ−ＥＸＰＡ）が計算される。
【００４０】
セレクタ１０５は、加算器１０１のキャリー出力（ｃａｒｒｙ  ｏｕｔ）の値が１の場合には加算器１０１の加算結果を、加算器１０１のキャリー出力の値が０の場合には加算器１０２の加算結果を選択し、指数差（ｐｒｅ  ａｌｉｇｎｍｅｎｔ  ｓｈｉｆｔ  ａｍｏｕｎｔ）として出力する。この指数差は図１・図２で“ＰＡ＿ＳＦＴ”として図示しているものであり、図１・図２におけるアラインメント部１４において指数差の分だけ桁あわせシフトが行われる。
【００４１】
符号・指数処理部１０はまた、加算器１０１と加算器１０２との両方のキャリー出力の結果から、各オペランドの指数の大小を判定し、３つの制御信号ＥＸＰＡ＿ＧＴ＿ＥＸＰＢ、ＥＸＰＢ＿ＧＴ＿ＥＸＰＡ、ＥＸＰＡ＿ＥＱ＿ＥＸＰＢを生成する。具体的には、インバータ１０６は、加算器１０１のキャリー出力を反転することにより、ＥＸＰＢがＥＸＰＡよりも大きいことを示すＥＸＰＢ＿ＧＴ＿ＥＸＰＡ信号を生成する。インバータ１０８は、加算器１０２のキャリー出力を反転することにより、ＥＸＰＡがＥＸＰＢよりも大きいことを示すＥＸＰＡ＿ＧＴ＿ＥＸＰＢ信号を生成する。また、ＡＮＤゲート１０７は、加算器１０１のキャリー出力と加算器１０２のキャリー出力の論理積をとることにより、ＥＸＰＡとＥＸＰＢが等しいことを示すＥＸＰＡ＿ＥＱ＿ＥＸＰＢ信号を生成する。これら３つの制御信号ＥＸＰＡ＿ＧＴ＿ＥＸＰＢ、ＥＸＰＢ＿ＧＴ＿ＥＸＰＡ、ＥＸＰＡ＿ＥＱ＿ＥＸＰＢを用いて、図１・図２におけるＥＸ＿ＯＰ信号やＥＡ＿ＮＥ＿ＥＢ信号が生成される。
【００４２】
例えば、オペランドＢの指数ＥＸＰＢがオペランドＡの指数ＥＸＰＡよりも大きい場合は、オペランドＡの仮数の換わりにオペランドＢの仮数を補数化回路１３に入力し、オペランドＡの仮数をアラインメント部１４へ入力する。そのため、オペランド交換するかどうかを示すＥＸ＿ＯＰ信号としてはＥＸＰＢ＿ＧＴ＿ＥＸＰＡをそのまま用いることができる。セレクタ１１は、ＥＸ＿ＯＰ信号が０の時にオペランドＡの仮数を、ＥＸ＿ＯＰ信号が１の時にオペランドＢの仮数を選択してＦＯＰＡを出力する。セレクタ１２は、ＥＸ＿ＯＰ信号が０の時にオペランドＢの仮数を、ＥＸ＿ＯＰ信号が１の時にオペランドＡの仮数を選択してＦＯＰＢを出力する。
【００４３】
また、図１・図２におけるＥＡ＿ＮＥ＿ＥＢ信号としては、ＥＸＰＡ＿ＥＱ＿ＥＸＰＢの論理反転をとった信号、あるいはＥＸＰＢ＿ＧＴ＿ＥＸＰＡとＥＸＰＡ＿ＧＴ＿ＥＸＰＢとの論理和をとった信号等を用いることができる。
【００４４】
指数と符号については、セレクタ１０１及びセレクタ１０２は、（ＥＸＰＡ−ＥＸＰＢ）又は（ＥＸＰＢ−ＥＸＰＡ）のキャリー出力を用いて指数値の大きいオペランドの指数と符号を選択する。
【００４５】
具体的には、セレクタ１１０は、加算器１０１のキャリー出力（ｃａｒｒｙ  ｏｕｔ）の値が１の場合には入力した指数ＥＸＰＡを、加算器１０１のキャリー出力の値が０の場合には入力した指数ＥＸＰＢを選択する。選択された指数は、ＥＸＰ＿ＢＥＦＯＲＥ＿ＮＯＲＭＡＬＩＺＥとして、正規化処理部１７に対してシフト可能な最大値として通知（図１・図２では対応する信号不図示）される。
【００４６】
セレクタ１１０で選択された指数は、オペランド加算時の１ビット桁あふれした状態を基準位置とするために、＋１操作部１１１で＋１操作を行うことで、正規化シフタを片方向シフトのみとしてインプリメントする。
【００４７】
＋１操作部１１１で＋１操作した指数に対して、正規化処理部１７における正規化操作によってシフトした値分を減じる補正操作が減算器１１２において行われる。ここで、図３における“ｌｅａｄｉｎｇ  ｚｅｒｏ  ｒｅｓｕｌｔ  ａｓ  ｎｏｒｍａｌｉｚｅ  ｓｈｉｆｔ  ａｍｏｕｎｔ”は、後述する正規化処理部１７のリーディングゼロカウント部１６１が出力するリーディングゼロカウント値ＬＺＣに相当する信号である。
【００４８】
また、後述の正規化処理部１７における丸め操作により桁上がりが生じた場合には、減算器１１２から出力される指数に対して＋１操作をする必要がある。＋１操作部１１３は、減算器１１２から出力される指数に対して＋１操作を行なう。セレクタ１１４は、“ｒｏｕｎｄ  ｃａｒｒｙ  ｏｕｔ”が１の場合には＋１操作部１１３の出力を選択し、“ｒｏｕｎｄ  ｃａｒｒｙ  ｏｕｔ”が０の場合には減算器１１２の出力を選択して、浮動小数点加算器の加算結果の指数（ｒｅｓｕｌｔ＿ｅｘｐ）として出力する。ここで、“ｒｏｕｎｄ  ｃａｒｒｙ  ｏｕｔ”は、後述の正規化処理部１７の丸め加算器１６４から出力されるキャリー出力信号である。
【００４９】
入力データ、つまり各オペランドの符号ｓｉｇｎＡと符号ｓｉｇｎＢの値が異なる場合には、排他的論理和ゲート１２０でこれらの符号の排他的論理和をとることにより、減算であることを示すＳＵＢ信号を生成する。
【００５０】
セレクタ１２１は、加算器１０１のキャリー出力（ｃａｒｒｙ  ｏｕｔ）の値が１の場合にはｓｉｇｎＡを、加算器１０１のキャリー出力が０の場合にはｓｉｇｎＢを選択する。
【００５１】
オペランドの減算時であって、オペランドの指数が等しい場合に絶対値加算器の演算結果を再補数化した場合には、セレクタ１２１から出力される符号を反転させる必要がある。論理ゲート１２２は、セレクタ１２１から出力される符号を反転させるか否かを制御する信号を生成する。すなわち、論理ゲート１２２は、ＥＯＲゲートから出力されるＳＵＢ信号、ＡＮＤゲート１０７から出力されるＥＸＰＡ＿ＥＱ＿ＥＸＰＢ信号、比較器１５で生成されたＦ＿ＥＱに相当するＦＡ＿ＥＱ＿ＦＢ（又は、ＦＯＰＡ＿ＥＱ＿ＦＯＰＢ）信号の反転信号、及び絶対値加算器１６で生成されるＲＥＣＯＭＰ信号の論理積を生成する。ＥＯＲゲート１２３は、セレクタ１２１から出力される信号と論理ゲート１２２の出力信号との排他的論理和を生成し、絶対値加算器の加算結果の符合（ｒｅｓｕｌｔ  ｓｉｇｎ）として出力する。
【００５２】
図４は、図２における比較器１５の一例を示す図である。図４に示す比較器は、ＩＥＥＥ７５４の倍精度演算まで対応できるように、５２ビット長の比較器としたものである。ＩＥＥＥ７５４の倍精度フォーマットでは、仮数部は５３ビットの精度をもっているが、正規化してＭＳＢビットを隠れビット化している。このため、指数値が同じ場合には、ＭＳＢビットは同じ値になる。仮数部の大小を判定する上では、ＭＳＢビットを無視しても比較結果に影響を与えないため、本実施形態においては、データ比較器は最低５２ビット分の比較ができれば十分である。
【００５３】
図４に示す比較器は、３つの１６ビット・ブロック１３０、１３１、１３２と、４ビット・ブロック１３３、及び各ブロックからの出力信号をまとめるブロック１３４とを有する。
【００５４】
１６ビット・ブロック１３０は、４つの４ビット・ブロック１３０−１〜１３０−４及びこれらの各４ビット・ブロックからの出力結果をまとめるブロック１３０−５を有する。なお、他の１６ビットブロック１３１及び１３２についても、１６ビットブロック１３０と同様の構成となるので、説明を省略する。
【００５５】
４ビット・ブロック１３０−１は、入力データＡ［３：０］及び入力データＢ［３：０］を比較し、Ａ［３：０］とＢ［３：０］が一致することを示すＥＱ又はＡ［３：０］がＢ［３：０］よりも大きいことを示すＧＴを出力する。具体的には、ＡＮＤゲート１３０−１１２は、Ａ［３：０］とＢ［３：０］の各ビットの排他的論理和の反転信号の論理積をとることにより、ＥＱ信号を出力する。ＯＲゲート１３０−１１１は、Ａ［３：０］がＢ［３：０］よりも大きい場合のデコード信号の論理和をとることにより、ＧＴ信号を出力する。
【００５６】
他の４ビット・ブロック１３０−２〜１３０−４及び１３３の構成も４ビット・ブロック１３０−１と同様の構成となるので、説明を省略する。
【００５７】
各４ビット・ブロックの出力信号を受けるブロック１３０−５や、各１６ビット・ブロックの出力信号を受けるブロック１３４は、４ビット・ブロック１３０−１の中のブロック１３０−１１と同様の論理で構成できる。
【００５８】
ブロック１３０−５では、各４ビット・ブロック１３０−１〜１３０−４から出力されるＧＴ信号及びＥＱ信号に基づいて、入力信号Ａ［１５：０］とＢ［１５：０］の比較を行なう。ＡＮＤゲート１３０−５２は、Ａ［１５：０］とＢ［１５：０］の比較結果が一致していれば、出力信号のＥＱを１にする。ＯＲゲート１３０−５１は、Ａ［１５：０］がＢ［１５：０］よりも大きければ、出力信号のＧＴを１にする。
【００５９】
ブロック１３４では、各ブロック１３０〜１３３から出力されるＧＴ信号及びＥＱ信号に基づいて、入力信号Ａ［５１：０］とＢ［５１：０］の比較を行う。そして、ブロック１３４は、その比較結果が一致していれば、ＡＮＤゲート１３４−２の出力信号Ｆ＿ＥＱを１としてＡ＝Ｂであることを示す。一方、ブロック１３４は、Ａ［５１：０］がＢ［５１：０］よりも大きければ、ＯＲゲート１３４−１の出力信号Ｆ＿ＧＴを１として、Ａ＞Ｂであることを示す。
【００６０】
図４の比較器のＡ入力（Ａ［５１：０］）及びＢ入力(Ｂ[５１：０])に、図２におけるＦＯＰＡ及びＦＯＰＢを接続し、図４の比較器のＦ＿ＧＴ出力に、図２におけるＯＲゲート１８を接続すると、図８に示されるＮＥＧ信号が得られる。尚、図４のＦ＿ＥＱ信号は、前述の図３におけるＦＡ＿ＥＱ＿ＦＢ（又は、ＦＯＰＡ＿ＥＱ＿ＦＯＰＢ）信号として用いられる。
【００６１】
図５は、実施例１に係る絶対値加算器１６の一例を示す図である。図５において、キャリー伝播ブロック２０は、絶対値加算器１６のキャリー伝播を行うブロックであり、詳細については、後述する。
【００６２】
図５中、ＳＵＢ信号は、オペランドＡとオペランドＢの符号が異なるときに１、符号が等しい時には０となる信号であり、符号・指数処理部１０から出力されるＳＵＢ信号と同じものである。ＮＥＧ信号は、図２におけるＮＥＧ信号であり、ＯＲゲート１８により生成される信号である。
【００６３】
図５において、ｎビット目の入力Ａ［ｎ］とＢ［ｎ］の論理積である生成項（Ｇｅｎｅｒａｔｉｏｎ  ｔｅｒｍ）はＡＮＤゲート１６−４で生成され、キャリー伝播ブロック２０のＧｎ端子に入力される。また、ｎビット目のＡ［ｎ］とＢ［ｎ］の排他的論理和として得られる伝播項（Ｐｒｏｐａｇａｔｉｏｎ  ｔｅｒｍ）はＥＯＲ（Ｅｘｃｌｕｓｉｖｅ−ＯＲ）ゲート１６−５で生成され、キャリー伝播ブロック２０のＰｎ端子に入力される。ｎ−１ビット目から０ビット目の生成項及び伝播項についても同様の論理で生成され、キャリー伝播ブロック２０の対応する各端子に入力される。
【００６４】
ここで、ｎビット目の加算結果ＳＵＭ［ｎ］は、伝播項Ｐｎとキャリー伝播ブロック２０のキャリー出力Ｃｎの排他的論理和で求められる。そのため、再補数化を考慮しなければ、ｎビット目の加算結果はＥＯＲゲート１６−５の出力とキャリー伝播ブロック２０のＣｎ出力のＥＯＲ論理をとればよいことになる。しかし、前述の通り、絶対値加算器において絶対値｜Ａ−Ｂ｜を計算する際に、Ａ−Ｂ＞０の場合は、
【００６５】
【数１】
0005515601.tif 000004
【００６６】
を計算し、Ａ−Ｂ＜０の場合は
【００６７】
【数２】
0005515601.tif 000005
【００６８】
を計算することになる。すなわち、Ａ−Ｂ＜０の場合、キャリー入力が０の
【００６９】
【数３】
0005515601.tif 000006
【００７０】
の加算結果に対して１の補数をとる再補数化処理が必要となってくる。
【００７１】
本実施形態では、再補数化処理を加算後に行うのではなく、キャリー伝播回路２０の前に移動し、キャリーよりも早く確定する半加算結果（図４ではＥＯＲゲート１６−５出力）に対して再補数化処理を行う。
【００７２】
具体的には、絶対値加算器１６において再補数化するためのＥＯＲゲート１６−６を、Ａ［ｎ］とＢ［ｎ］の半加算結果を生成するＥＯＲゲート１６−５の直後に設け、再補数化するか否かを再補数化要求信号ＲＥＣＯＭＰにより制御する。再補数化要求信号ＲＥＣＯＭＰは、ＡＮＤゲート１６−２においてＳＵＢ信号とＮＥＧ信号の論理積をとることにより生成する。
【００７３】
また、合わせて、減算時にＡ−Ｂ＜０となる場合にはキャリー入力を０にするために、キャリー伝播ブロック２０のキャリー入力端子Ｃｉｎには、ＡＮＤ回路１６−１においてＮＥＧ信号を反転したインバータ１６−３の出力信号とＳＵＢ信号との論理積をとった信号を入力する。
【００７４】
図６は、図５におけるキャリー伝播ブロック２０の一例を示した図である。図６は６４ビットのキャリー生成ブロックの概略図であり、ビット幅６４ビットまでの加算器に対応できる。図６の６４ビット・キャリー生成ブロックは、４つの１６ビットブロック１４０〜１４３と、各１６ビットブロック１４０〜１４３のキャリー生成を行なうための中間信号ＧＧ、ＧＰ信号を扱うブロック１４４と、キャリー伝播ブロック２０から出力するキャリー信号Ｃ［６３：０］を生成するブロック１４５−１〜１４５−８とを有する。
【００７５】
図７は、図６中の１６ビットブロック１４０〜１４３の一例を示した図である。図７の１６ビット・キャリー生成ブロックは、４つの４ビットブロック１５０〜１５３と、各４ビットブロックのキャリー生成を行なうための中間信号ＤＧ、ＤＰ信号を扱うブロック１５４と、１６ビットキャリー生成ブロック１４０〜１４３から出力するキャリー生成用信号Ｃ０［１５：１］とＣＰ［１５：１］とを生成するブロック１５５−１〜１５５−１５とを有する。図７の１６ビットブロックは図６中のブロック１４０に対応し、図７での入力信号Ｇ［１５：０］及びＰ［１５：０］は、図６におけるブロック１４０に入力されるＧ［１５：０］及びＰ［１５：０］となる。
【００７６】
各４ビットブロック１５０〜１５３は、図７中の４ビットブロック１５３に示す構成となっている。図５に示すように、キャリー伝播ブロック２０の外側で生成されて入力される生成項Ｇ［ｎ］と伝播項Ｐ［ｎ］の各ビットに対して、４ビットブロック１５３では以下の信号を生成する。
【００７７】
４ビットブロック１５３内のＧ［３：０］及びＰ［３：０］は、１６ビットブロックに入力されるＧ［１５：１２］及びＰ［１５：１２］が接続される。
【００７８】
バッファ１５３−２は、入力されたＧ［０］をそのままＣ０［１］として出力する。ＯＲゲート１５３−４は、Ｐ［１］とＧ［０］との論理積とＧ［１］との論理和をとって、Ｃ０［２］を出力する。  ＯＲゲート１５３−６は、Ｐ［２］とＰ［１］とＧ［０］との論理積と、Ｐ［２］とＧ［１］との論理積と、Ｇ［２］との論理和をとってＣ０［３］を出力する。ＯＲゲート１５３−８は、Ｐ［３］とＰ［２］とＰ［１］とＧ［０］との論理積と、Ｐ［３］とＰ［２］とＧ［１］との論理積と、Ｐ［３］とＧ［２］との論理積と、Ｇ［３］との論理和をとってＤＧを出力する。
【００７９】
バッファ１５３−１は、入力されたＰ［０］をそのままＣＰ［１］として出力する。ＡＮＤゲート１５３−３は、Ｐ［１］とＰ［０］との論理積をとってＣＰ［２］を出力する。ＡＮＤゲート１５３−５は、Ｐ［２］とＰ［１］とＰ［０］との論理積をとってＣＰ［３］を出力する。ＡＮＤゲート１５３−７は、Ｐ［３］とＰ［２］とＰ［１］とＰ［０］との論理積をとってＤＰを出力する。
【００８０】
図７に示す１６ビットブロックが処理する生成項Ｇ［１５：０］より上位ビットの生成項Ｇ［３１：１６］、Ｇ［４７：３２］、Ｇ［６３：４８］、及び、伝播項Ｐ［１５：０］より上位ビットの伝播項Ｐ［３１：１６］、Ｐ［４７：３２］、Ｐ［６３：４８］の各信号についても、図７に示す４ビットブロック１５１〜１５３と同様の構成を持つビットブロックで同じように処理される。
【００８１】
図７中、ブロック１５４は、各４ビットブロック１５０〜１５３と同様の回路構成となっている。ブロック１５４のＧ［３：０］には、各４ビットブロックから出力されるＤＧ信号が接続され、Ｐ［３：０］には、各４ビットブロックから出力されるＤＰ信号が接続される。そして、ブロック１５４に含まれるＯＲゲート１５４−８は、４ビットブロック１５３におけるＯＲゲート１５３−８と同様の論理により１６ビットブロックのキャリー生成を行なうための中間信号ＧＧ信号を出力する。また、ＡＮＤゲート１５４−７は、４ビットブロック１５３におけるＡＮＤゲート１５３−７と同様の論理により１６ビットブロックのキャリー生成を行なうための中間信号ＧＰ信号を出力する。また、ブロック１５４でも、４ビットブロック１５０〜１５３と同様の論理でＣ０［３：０］信号及びＣＰ［３：０］信号を生成して出力する。
【００８２】
ブロック１５５−１〜１５５−１５は、各４ビットブロック１５０〜１５３及びブロック１５４から出力されたＣ０［３：０］信号及びＣＰ［３：０］信号を用いて、１６ビットブロックのＣ０［１５：１］信号及びＣＰ［１５：１］信号を生成して出力する。具体的には、図７に示す１６ビットブロック１４０から出力されるＣ０［３：１］及びＣＰ［３：１］は、４ビットブロック１５０から出力されるＣ０［３：０］及びＣＰ［３：１］をそのままバッファを介して生成される。
【００８３】
１６ビットブロックから出力されるＣ０［４］及びＣＰ［４］は、ブロック１５４から出力されるＣ０［１］及びＣＰ［１］をそのままバッファを介して生成される。１６ビットブロックから出力されるＣ０［７：５］は、４ビットブロック１５１から出力されるＣＰ［３：１］の各ビットとブロック１５４から出力されるＣ０［１］との論理積と、４ビットブロック１５１から出力されるＣ０［３：１］の各ビットとの論理和をとることにより生成される。１６ビットブロックから出力されるＣＰ［７：５］は、４ビットブロック１５１から出力されるＣＰ［３：１］の各ビットとブロック１５４から出力されるＣＰ［１］との論理積をとることにより生成される。
【００８４】
１６ビットブロックから出力されるＣ０［８］及びＣＰ［８］は、ブロック１５４から出力されるＣ０［２］及びＣＰ［２］をそのままバッファを介して生成される。１６ビットブロックから出力されるＣ０［１１：９］は、４ビットブロック１５２から出力されるＣＰ［３：１］とブロック１５４から出力されるＣ０［２］との論理積と、４ビットブロック１５２から出力されるＣ０［３：１］との論理和をとることにより生成される。１６ビットブロックから出力されるＣＰ［１１：９］は、４ビットブロック１５２から出力されるＣＰ［３：１］とブロック１５４から出力されるＣＰ［２］との論理積をとることにより生成される。
【００８５】
１６ビットブロックから出力されるＣ０［１２］及びＣＰ［１２］は、ブロック１５４から出力されるＣ０［３］及びＣＰ［３］をそのままバッファを介して生成される。１６ビットブロックから出力されるＣ０［１５：１３］は、４ビットブロック１５３から出力されるＣＰ［３：１］とブロック１５４から出力されるＣ０［３］との論理積と、４ビットブロック１５３から出力されるＣ０［３：１］との論理和をとることにより生成される。１６ビットブロックから出力されるＣＰ［１５：１３］は、４ビットブロック１５３から出力されるＣＰ［３：１］とブロック１５４から出力されるＣＰ［３］との論理積をとることにより生成される。
【００８６】
図６では、前記のように構成された各１６ビットブロック１４０〜１４３、ブロック１４４、及びブロック１４５−１〜１４５−８により、６４ビットブロックキャリーブロックとしてのキャリー出力信号Ｃ［６３：０］を生成する。以下、具体的に説明する。
【００８７】
図６中、ブロック１４４は、各４ビットブロック１５０〜１５３と同様の回路構成となっている。ブロック１４４のＧ［３：０］には、各１６ビットブロック１４０〜１４３から出力されるＧＧ信号が接続され、Ｐ［３：０］には、各１６ビットブロック１４０〜１４３から出力されるＧＰ信号が接続される。そして、ブロック１４４に含まれるＯＲゲート１４４−１は、４ビットブロック１５３におけるＯＲゲート１５３−８と同様の論理により６４ビットブロックのキャリー生成を行なうための中間信号ＤＧ信号を出力する。また、ＡＮＤゲート１４４−２は、４ビットブロック１５３におけるＡＮＤゲート１５３−７と同様の論理により６４ビットブロックのキャリー生成を行なうための中間信号ＤＰ信号を出力する。また、ブロック１４４でも、４ビットブロック１５０〜１５３と同様の論理でＣ０［３：０］信号及びＣＰ［３：０］信号を生成して出力する。
【００８８】
ブロック１４５−１〜１４５−８は、各１６ビットブロック１４０〜１４３及びブロック１４４から出力されたＣ０［３：０］信号及びＣＰ［３：０］信号を用いて、６４ビットブロックとしてのキャリーアウト信号Ｃ［６３：０］を生成して出力する。
【００８９】
６４ビットブロックから出力されるＣ［０］は、ブロック１４５−１において、６４ビットブロックへ入力されるキャリー入力信号であるＣＩＮをそのままバッファを介して生成される。ここで、キャリー入力信号ＣＩＮに入力される信号は、図５におけるＡＮＤゲート１６−１で生成された信号と同じ信号である。
【００９０】
Ｃ［１５：１］は、ブロック１４５−２において、１６ビットブロック１４０から出力されるＣＰ［１５：１］とＣＩＮとの論理積をとった信号と、１６ビットブロック１４０から出力されるＣ０［１５：０］との論理和をとることにより生成される。
【００９１】
Ｃ［１６］は、ブロック１４５−３において、ブロック１４４から出力されるＣＰ［１］とＣＩＮとの論理積をとった信号と、ブロック１４４から出力されるＣ０［１］との論理和をとることにより生成される。
【００９２】
Ｃ［３１：１７］は、ブロック１４５−４において、１６ビットブロック１４１から出力されるＣＰ［１５：１］とブロック１４４から出力されるＣＰ［１］とＣＩＮとの論理積をとった信号と、１６ビットブロック１４１から出力されるＣＰ［１５：１］と、ブロック１４４から出力されるＣ０［１］の論理積をとった信号と、１６ビットブロック１４１から出力されるＣ０［１５：１］との論理和をとることにより生成される。
【００９３】
Ｃ［３２］は、ブロック１４５−５において、ブロック１４４から出力されるＣＰ［２］とＣＩＮとの論理積をとった信号と、ブロック１４４から出力されるＣ０［２］との論理和をとることにより生成される。
【００９４】
Ｃ［４７：３３］は、ブロック１４５−６において、１６ビットブロック１４２から出力されるＣＰ［１５：１］とブロック１４４から出力されるＣＰ［２］とＣＩＮとの論理積をとった信号と、１６ビットブロック１４２から出力されるＣＰ［１５：１］とブロック１４４から出力されるＣ０［２］との論理積をとった信号と、１６ビットブロック１４２から出力されるＣ０［１５：１］との論理和をとることにより生成される。
【００９５】
Ｃ［４８］は、ブロック１４５−７において、ブロック１４４から出力されるＣＰ［３］とＣＩＮとの論理積をとった信号と、ブロック１４４から出力されるＣ０［３］との論理和をとることにより生成される。
【００９６】
Ｃ［６３：４９］は、ブロック１４５−８において、１６ビットブロック１４３から出力されるＣＰ［１５：１］とブロック１４４から出力されるＣＰ［３］とＣＩＮとの論理積をとった信号と、１６ビットブロック１４３から出力されるＣＰ［１５：１］とブロック１４４から出力されるＣ０［３］の論理積をとった信号と、１６ビットブロック１４３から出力されるＣ０［１５：１］との論理和をとることにより生成される。
【００９７】
なお、図６のブロック１４４のＯＲゲート１４４−１により生成されるＣＯＵＴ＿ＣＩＮ０信号は、ＣＩＮが０である場合の加算器のキャリー出力に対応し、ＣＯＵＴ＿ＣＩＮ１は、ＣＩＮが１である場合の加算器のキャリー出力に対応する。本実施例においては、特にこれらＣＯＵＴ＿ＣＩＮ０及びＣＯＵＴ＿ＣＩＮ１の各信号は使用していないが、たとえば絶対値加算結果の選択や、再補数化の判定等に用いることも可能である。
【００９８】
図８は、実施例１における、オペランドＡの符号ＳＡ、指数部ＥＡ、オペランドＢの符号ＳＢ、指数部ＥＢと、指数部の比較結果に応じて仮数部の交換を実施したあとの仮数部データＦＯＰＡとＦＯＰＢの値によって、ＳＵＢ、ＮＥＧ、ＲＥＣＯＭＰ、ＣＩＮの値をどう決定するかについてまとめた表である。図中、“−”と表示されている欄は比較不要であることを示す。
【００９９】
図８に示すＳＵＢ信号については、符号ＳＡとＳＢが一致する場合にＳＵＢ信号は０に、符号ＳＡとＳＢが異なる場合にＳＵＢは１になる。ＮＥＧ信号については、指数部ＥＡとＥＢが異なる場合及び仮数部ＦＯＰＡがＦＯＰＢよりも大きい場合にＮＥＧは１となり、指数部ＥＡとＥＢが等しく、かつ仮数部ＦＯＰＡがＦＯＰＢ以下の場合にＮＥＧは０となる。ＲＥＣＯＭＰ信号については、減算時（ＳＵＢ＝１）であって、かつ、絶対値加算器の加算結果が負となる場合（ＮＥＧ＝１）にＲＥＣＯＭＰ信号は１となり、それ以外の場合、ＲＥＣＯＭＰ信号は０となる。ＣＩＮについては、ＳＵＢ＝１であって、かつ、ＮＥＧ＝０の場合にＣＩＮは１となり、それ以外の場合、ＣＩＮは０となる。
【０１００】
図９は、実施例１における指数データの大小関係と仮数部のオペランドデータの交換の実施についてまとめた表である。図９では、ＥＡ＝ＥＢの場合にデータ交換を行わないことになっているが、ＥＡ＝ＥＢの場合にデータ交換を行うようにすることもできる。オペランドのデータ交換は、前述の通り、図３におけるＥＸＰＡ＿ＧＴ＿ＥＸＰＢ又はＥＸＰＢ＿ＧＴ＿ＥＸＰＡを用いて制御することができる。
【０１０１】
図１０は、オペランドデータの符号ＳＡ、ＳＢの値に応じて、補数化回路１３におけるビット反転を行うかどうかを表にしたものである。符号ＳＡ，ＳＢの値をビット反転に直接使用する代わりに、ＳＵＢ信号を用いて補数化回路１３の制御に用いてもよい。具体的には、ＳＵＢ信号が１の場合、補数化回路１３でビット反転を行い、ＳＵＢ信号が０の場合、補数化回路１３でビット反転しないといった制御を行うことができる。
【０１０２】
図１１は、図１・図２における正規化と丸め操作を行う正規化処理部１７の一実施例を示す図である。図１１の実施例では、正規化処理部１７は、リーディングゼロカウント部１６１、シフト制御部１６２、正規化シフト部１６３、丸め加算器１６４、及び丸め判定部１６５を有する。正規化処理部１７に入力される信号１６０は、図１・図２における絶対値加算器１６から出力される加算結果である。
【０１０３】
減算時において２つのオペランドの値が近い場合、桁落ちによってＭＳＢ（Ｍｏｓｔ  Ｓｉｇｎｉｆｉｃａｎｔ  Ｂｉｔ）側の１ないし複数のビットが０となることがある。ＩＥＥＥ７５４のバイナリー・フォーマットでは、仮数部の値を正規化しているため、ＭＳＢから見て、最初に“１”となるビットを所定の位置に整列する必要がある。従って、図１１の実施例では、絶対値加算器１６の加算結果である入力信号１６０のＭＳＢ側から見て最初に“１”となるビット位置をリーディングゼロカウント部１６１で計数し、該計数値等を用いて正規化シフト部１６３で信号１６０をシフトさせる。
【０１０４】
図１２は、図１１におけるリーディングゼロカウント部１６１が計数したリーディングゼロカウント値（ＬＺＣ）とデータのビット・マッピングの関係を示す図である。図１２（ａ）における“ＡＤＤ  ＯＰ  Ａ”及び“ＡＤＤ  ＯＰ  Ｂ”は、図１・図２における絶対値加算器１６に入力されるオペランドの仮数部であり、補数化回路１３及びアラインメント部１４から出力された信号に相当する。“ＡＤＤ  ＲＥＳＵＬＴ”は、図１・図２における絶対値加算器１６の出力信号に相当する。“ａｆｔｅｒ  ｎｏｒｍａｌｉｚｅ  ｓｈｉｆｔ”は、図１１における正規化シフト部１６３の出力信号に相当する。
【０１０５】
図１２（ａ）において、絶対値加算器１６の加算結果（ＡＤＤ  ＲＥＳＵＬＴ）のＭＳＢの位置に付された“＊”の位置、すなわち、絶対値加算器１６への入力仮数部（“ＡＤＤ  ＯＰ  Ａ”，“ＡＤＤ  ＯＰ  Ｂ”）のＭＳＢビットより１ビット上位の位置が、リーディングゼロカウント値ＬＺＣ＝０の位置となる。
【０１０６】
図１２（ｂ）は、絶対値加算器１６の加算結果（ＡＤＤ  ＲＥＳＵＬＴ）に対するリーディングゼロカウント部１６１でのカウント値ＬＺＣを説明する図である。図１２（ｂ）中、“ｘ”は任意の値を示す。図１２（ｂ）に示すように、ＭＳＢの位置に“１”がある場合にはＬＺＣ＝０となり、ＭＳＢから１ビット右の位置に“１”がある場合にはＬＺＣ＝１となり、ＭＳＢから２ビット右の位置に“１”がある場合にはＬＺＣ＝２となる。以下同様に、ＭＳＢから見た“１”の位置が右にシフトするに従って、ＬＺＣの値も増加する。
【０１０７】
図１１のリーディングゼロカウント部１６１は、図１２（ａ）におけるＡＤＤ  ＲＥＳＵＬＴ“＊”の位置から見て、最初に“１”となるビットの位置まで何ビットずれているかを計数する。すなわち、リーディングゼロカウント部１６１は、図１２（ｂ）に示すように“ＡＤＤ  ＲＥＳＵＬＴ”のＭＳＢから見て何ビット目に“１”が存在するかをカウントして、リーディングゼロカウント値ＬＺＣを出力する。リーディングゼロカウント値ＬＺＣは、図３における“ｌｅａｄｉｎｇ  ｚｅｒｏ  ｒｅｓｕｌｔ  ａｓ  ｎｏｒｍａｌｉｚｅ  ｓｈｉｆｔ  ａｍｏｕｎｔ”を示す信号としても使用される。
【０１０８】
図１３は、実施例１に係るリーディングゼロカウント部１６１の回路例を示す図である。図１３は、６４ビット幅までカウントできるように構成した回路例である。図１２の“ＡＤＤ  ＲＥＳＵＬＴ”における最上位ビット、つまり図中で*印をつけてあるビットを図１３のＡ［６３］に
接続し、以下“ＡＤＤ  ＲＥＳＵＬＴ”のＡ［６２］以降をビットの重み順に接続することで、本実施例１におけるリーディングゼロカウントの機能を実現できる。
【０１０９】
図１３のリーディングゼロカウント部１６１の回路例は、４つの１６ビットブロック１７０〜１７３及びこれらの１６ビットブロックの出力結果をまとめるブロック１７４を有する。各１６ビットブロック１７０〜１７３は、１６ビットブロック１７３の部分に示されているように、４つの４ビットブロック１８０〜１８３及びこれらの４ビットブロックの出力結果をまとめるブロック１８４を有する。
【０１１０】
４ビットブロックの回路について、４ビットブロック１８３を例に説明する。４ビットブロック１８３は、入力データＡ［６３：６０］のＭＳＢ側から見て、最初に“１”となるビットの位置を１６進数で示すためのＣ［１：０］信号を生成する。説明の便宜上、４ビットブロック１８３へ入力されるデータがＡ［３：０］であるものとして、以下、説明する。
【０１１１】
ＮＡＮＤゲート１８３−４は、Ａ［３］を反転した信号とＡ［２］との論理積を反転した信号を生成する。ＮＡＮＤゲート１８３−５は、Ａ［３］を反転した信号とＡ［２］を反転した信号とＡ［１］との論理積を反転した信号を生成する。ＡＮＤゲート１８３−１は、Ａ［３］を反転した信号とＮＡＮＤゲート１８３−４の出力信号の論理積をとり、Ｃ［１］信号を生成する。ＡＮＤゲート１８３−２は、Ａ［３］を反転した信号とＮＡＮＤゲート１８３−５の出力信号の論理積をとり、Ｃ［０］信号を生成する。ＯＲゲート１８３−３は、Ａ［３：０］の各信号の論理和をとることにより、Ａ［３：０］の全ビットが０である場合に“０”となるＸＡＬＬ０信号を生成する。
【０１１２】
このようにして生成されたＣ［１：０］信号及びＸＡＬＬ０信号により、入力データＡ［ｉ］のＭＳＢから見て何ビット目に“１”があるかを知ることができる。すなわち、Ａ［３：０］＝１ｘｘｘＨ（ｘ：任意の値）の場合には、Ｃ［１：０］＝００Ｂとなり、ＸＡＬＬ０＝１となる。Ａ［３：０］＝０１ｘｘＨの場合には、Ｃ［１：０］＝０１Ｂとなり、ＸＡＬＬ０＝１となる。Ａ［３：０］＝００１ｘＨの場合には、Ｃ［１：０］＝１０Ｂとなり、ＸＡＬＬ０＝１となる。Ａ［３：０］＝０００１Ｈの場合には、Ｃ［１：０］＝１１Ｂとなり、ＸＡＬＬ０＝１となる。Ａ［３：０］＝００００Ｈの場合には、Ｃ［１：０］＝１１Ｂとなり、ＸＡＬＬ０＝０となり、この場合のＣ［１：０］は後段で使用されないことになる。
【０１１３】
ブロック１８４では、各４ビットブロック１８０〜１８３から出力されるＸＡＬＬ０信号を用いて、各４ビットブロック１８０〜１８３から出力されるＣ［１：０］をセレクトし、ＯＲゲート１８４−３から１６ビットブロック１７３のＣ［１：０］として出力する。そして、各４ビットブロック１８０〜１８３から出力されるＸＡＬＬ０信号に対して、４ビットブロック１８３のＡＮＤゲート１８３−１〜１８３−２と同様の論理により、ＡＮＤゲート１８４−１〜１８４−２で１６ビットブロック１７３のＣ［３：２］を生成する。このようにして生成されたＣ［３：０］は、入力信号Ａ［１５：０］のＭＳＢ側から見て、最初に“１”となるビットの位置を１６進数で示す。ブロック１８４のＯＲゲート１８４−４から出力されるＸＡＬＬ０信号は、その１６ビットブロック１７３に含まれる４つの４ビットブロック１８０〜１８３への入力信号Ａ［１５：０］（図ではＡ［６３：４８］）の全てのビットが０の場合に、ＸＡＬＬ０＝０となる。
【０１１４】
ブロック１７４の回路構成もブロック１８４の構成と同様の考え方で構成できる。すなわち、ＡＮＤゲート１７４−１〜１７４−２及びＯＲゲート１７４−３で、６４ビットブロックのＣ［５：０］に相当する信号を生成することができる。ここで、６４ビットの入力Ａ［６３：０］の全ビットがゼロの場合もあり得るので、ＬＺＣを［６：０］と１ビット拡張し、Ａ［６３：０］の全ビットがゼロの場合には、ＬＺＣ［６：０］＝Ｃ［６：０］＝１００００００Ｂとすることが望ましい。
【０１１５】
従って、ＯＲゲート１７４−５から出力されるＸＡＬＬ０信号を用いてＡＮＤゲート１７４−１〜１７４−２の出力及びＯＲゲート１７４−３の出力をＡＮＤゲート１７４−４でマスクし、Ｃ［５：０］を生成する。そして、ＯＲゲート１７４−５で生成されたＸＡＬＬ０をインバータ１７４−７で反転させてＣ［６］を生成する。このようにして、６４ビットブロックのＬＺＣ［６：０］信号を生成することができる。
【０１１６】
ところで、ＩＥＥＥ７５４規格では、各種の異常な演算を検出して、ＯＳに割込みをあげるトラップ条件が規定されている。そのため、浮動小数点加算器を有するプロセッサ等においては、トラップが発生した場合に割込みを発生させるかどうかを制御する回路（以下、「トラップ割込み制御回路」という）を有するのが一般的である。
【０１１７】
シフト制御部１６２は、ＩＥＥＥ７５４におけるアンダーフロー割込みがトラップ割込み制御回路で許可されている場合には、リーディングゼロカウントの計数結果を採用する。トラップ割込み制御回路においてアンダーフロー割込みが許可されていない場合には、シフト制御部１６２は、リーディングゼロカウント部１６１の計数結果と、図３における指数差により選択した指数（ＥＸＰ  ＢＥＦＯＲＥ  ＮＯＲＭＬＩＺＥ）とで、指数値の値を比較して値の小さな方を選択する。正規化シフト部１６３は、シフト制御部１６２で選択された値の分だけ正規化シフタ１６３で絶対値加算器出力の仮数部の演算結果データを左シフト（ＭＳＢ側へシフト）して正規化を行なう。
【０１１８】
図３における指数差により選択した指数（ＥＸＰ  ＢＥＦＯＲＥ  ＮＯＲＭＬＩＺＥ）は、ＩＥＥＥ７５４におけるｄｅｎｏｒｍａｌｉｚｅｄ  ｎｕｍｂｅｒに対応する正規化位置に対応するものであり、本実施例では、アンダーフロー割込みを起さない場合、正規化シフト部１６３は、ｄｅｎｏｒｍａｌｉｚｅｄ  ｎｕｍｂｅｒとして演算結果を出力する。
【０１１９】
丸め判定部１６５は、正規化シフト部１６３で絶対値加算器からの出力データを正規化した後のデータのうち、仮数部の演算結果として出力される部分のＬＳＢ（Ｌｅａｓｔ  Ｓｉｇｎｉｆｉｃａｎｔ  Ｂｉｔ）側とその下位のビットパターンを判定する。ここで、ＩＥＥＥ７５４では、演算結果の丸めに関していくつかの丸めモードを規定しており、ＩＥＥＥ７５４の丸めモードに従った丸めを行なう場合には、丸め判定部１６５は、ＩＥＥＥ７５４規格に沿ったように丸めを行なうかどうかを決定する。
【０１２０】
丸め加算器１６４（ｒｏｕｎｄ  ａｄｄｅｒ）は、インクリメンタで構成することができる。丸め加算器１６４で＋１操作を行うと、データパターンによっては丸め加算器１６４の出力に桁上りが発生することがある。従って、丸め加算器１６４はキャリー出力（ｃａｒｒｙ  ｏｕｔ）信号（図３におけるｒｏｕｎｄ  ｃａｒｒｙ  ｏｕｔ）を生成し、ＭＳＢから桁あがりが発生した場合にはキャリー出力信号によって符号・指数処理部１０に通知する。符号・指数処理部１０では、丸め加算器１６４から出力されるキャリー出力信号を用いて指数値の補正が行われる。
【０１２１】
丸め加算器１６４は、丸め判定部１６５で判定した結果に基づいて、正規化シフト部１６３から出力されたデータのうち、丸めを行なう部分に対して＋１もしくは＋０操作を行い、浮動小数点加算器の加算結果における仮数部の結果（ｒｅｓｕｌｔ）を出力する。
【実施例２】
【０１２２】
実施例２に係る浮動小数点加算器を説明する。実施例２は、実施例１の比較器にオペランドＡ、Ｂの仮数部を直接つなぐことで、ＮＥＧ信号生成の速度向上を図ったものである。
【０１２３】
図１４は、本発明の実施例２に係る浮動小数点加算器を示す図である。図１４において、符号・指数処理部１０、第１のセレクタ１１、第２のセレクタ１２、補数化回路１３、アラインメント部１４、比較器１５、絶対値加算器１６、及び正規化処理部１７については、説明を省略する。
【０１２４】
図１４において、比較器１５は、オペランドＡ、Ｂの仮数部を比較し、Ａの仮数部がＢの仮数部よりも大きい場合にＦ＿ＧＴ出力を１にする。ここで、Ａの仮数部とＢの仮数部が等しい場合に比較器１５の出力を１にしても良い。
【０１２５】
図１４における比較器１５の出力はＥＸ＿ＯＰ信号によるＯＰＥＲＡＮＤ交換前の状態の情報のため、ＥＸ＿ＯＰ＝１の時に、ＯＰＥＲＡＮＤ交換を行なうＥＸ＿ＯＰ信号と比較器１５の出力信号とをＥＯＲゲート１８−２で排他的論理和をとることにより補正を行なう。そして、実施例１の場合と同様、オペランドの指数部が異なるときは、指数部のみでＯＰＥＲＡＮＤ交換後の大小が判定できるので、ＯＲゲート１８−１でＥＯＲゲート１８−２の出力信号とＥＡ＿ＮＥ＿ＥＢ信号との論理和をとってＮＥＧ信号とする。
【０１２６】
尚、ＥＡ＝ＥＢでＯＰＥＲＡＮＤ交換を行わない場合には、ＣＯＭＰＡＲＥの出力をＥＸ＿ＯＰ信号で反転するためのＥＯＲ論理は省略できるので、図１４中のブロック１８をブロック１９に置き換えることができる。
【０１２７】
図１４における比較器１５の一例としては、前述の図４の回路を用いることができる。図１４において、比較器１５のＡ入力にオペランドＡの仮数部ＦＡを、Ｂ入力にオペランドＢの仮数部ＦＢを接続すると、図１５や図１６のＮＥＧ信号が得られる。
【０１２８】
図１５は、実施例２における符号・指数処理部１０での指数の比較を行なった結果、指数部の値が等しい時（ＥＡ＝ＥＢ時）に、データを交換しないようにした場合のＳＵＢ、ＮＥＧ、ＲＥＣＯＭＰ、ＣＩＮの値をまとめた表である。図１５中、ＳＡ及びＳＢは、オペランドＡ及びＢの符号を示し、ＥＡ及びＥＢは、各オペランドの指数部を示し、ＦＡ及びＦＢは、各オペランドの仮数部を示す。
【０１２９】
図１６は、図１５と同様であるが、指数部による比較によるデータ交換時に指数部の値が等しい時（ＥＡ＝ＥＢ時）に、データを交換するようにした場合のＳＵＢ、ＮＥＧ、ＲＥＣＯＭＰ、ＣＩＮの値をまとめた表である。
【実施例３】
【０１３０】
実施例３に係る浮動小数点加算器を説明する。実施例３は、実施例１又は実施例２における絶対値加算器１６の構成を高速化のためにセグメント分割するように変更したものである。
【０１３１】
実施例３における浮動小数点加算器の概略図は図１、図２、又は図１４と同様である。実施例３における符号・指数処理部１０、第１のセレクタ１１、第２のセレクタ１２、補数化回路１３、アラインメント部１４、比較器１５、及び正規化処理部１７については、図１、図２、又は図１４における各部と同じであるので、説明を省略する。
【０１３２】
図１７に本発明の実施例３に係るセグメント分割した高速タイプの絶対値加算器の構成を示す。セグメント分割されたＡＤＤＥＲブロック１９１〜１９４と、ＡＤＤＥＲブロックへのキャリー伝播を行なうブロックキャリー伝播回路１９０で構成される。図１７中、“ＢＣ”は“ｂｌｏｃｋ  ｃａｒｒｙ”の意味であり、セグメント分割されたブロックへ伝播するキャリーである。
【０１３３】
ＡＮＤゲート１９５でＮＥＧの反転信号とＳＵＢの論理積をとった信号は、ブロックキャリー伝播回路１９０のキャリー入力（Ｃｉｎ）として使用する。ＡＮＤゲート１９６で生成されるＲＥＣＯＭＰ信号は、セグメント分割したＡＤＤＥＲ  ブロック１９１〜１９４内部の半加算（Ｈａｌｆ  ＳＵＭ）信号（＝Ａ［ｉ］  ＥＯＲ  Ｂ［ｉ］）を反転させる信号として使用する。これらのＳＵＢ、ＮＥＧ、ＲＥＣＯＭＰ、Ｃｉｎの各信号の真理値表を図１８に示す。
【０１３４】
図１９は、実施例３のセグメント分割されたＡＤＤＥＲブロック１９１〜１９４の回路例を示す図である。実施例３のように絶対値加算器をセグメント分割した高速タイプにする場合には、図１９に示すような加算器のセグメントを用いる。
【０１３５】
図１９中、Ａ及びＢは、加算器セグメントに入力された所定の複数のビット数からなる加算対象となるデータである。ＥＯＲゲートはＡとＢの排他的論理和をとることにより、ＡとＢの半加算結果を出力する。ブロック２０１は、キャリー入力が０の場合のキャリー出力を生成し、ブロック２０２は、キャリー入力が１の場合のキャリー出力を生成する。ＥＯＲゲート２０３は、ＥＯＲゲート２００から出力される半加算結果と、前記ＲＥＣＯＭＰ信号との排他的論理和をとり、減算時における再補数化の処理を行なう。
【０１３６】
ＥＯＲゲート２０４は、ＥＯＲゲート２０３の出力とブロック２０１のキャリー出力との排他的論理和をとることにより、キャリー入力が０の場合の加算結果を生成する。ＥＯＲゲート２０５は、ＥＯＲゲート２０３の出力とブロック２０２のキャリー出力との排他的論理和をとることにより、キャリー入力が１の場合の加算結果を生成する。セレクタ２０６は、ブロックキャリー入力ＢＣｉｎの値に応じて、ＥＯＲゲート２０４かＥＯＲゲート２０５のいずれかの出力を選択し、最終的な加算結果ＳＵＭを出力する。
【０１３７】
図１９の加算器セグメントでは、ＲＥＣＯＭＰ信号により反転させるＥＯＲゲート２０３が内側に入るが、図２５、図２６に示す従来例のような物量の増加はない。
【０１３８】
図２０は、本発明の実施例３に係る図１７におけるブロックキャリー伝播回路１９０の一例を示す図である。図２０の実施例は、６４  ビット幅の入力をもち、ｄｉｇｉｔ（４ビット）単位のブロックに対するキャリーを生成する。
【０１３９】
このブロックキャリー伝播回路１９０は、４つの１６ビットブロック２１０〜２１３と、各１６ビットブロック２１０〜２１３のキャリー出力を生成するための中間信号ＧＧ、ＧＰ信号を扱うブロック２１４と、ブロックキャリー伝播回路１９０から出力するブロックキャリー信号ＢＣｉｎ［１５：０］を生成するブロック２１５−１〜８を有する。
【０１４０】
図２１は、図２０中の１６ビットブロック２１０〜２１３の一実施例を示す図である。この１６ビットブロックは、４つの４ビットブロック２２０〜２２３と、各４ビットブロック２２０〜２２３のキャリー出力を生成するための中間信号ＤＧ、ＤＰ信号を扱うブロック２２４を有する。各４ビットブロック２２０〜２２３の内容は、図２１中の４ビットブロック２２３に示す構成と同様の内容となっている。
【０１４１】
図２１中、ＡＮＤゲート２２３−１〜４は、各４ビットブロック２２０〜２２３に入力されるＡ［３：０］とＢ［３：０］の生成項を生成し、ＯＲゲート２２３−５〜８は、Ａ［３：０］とＢ［３：０］の伝播項を生成する。また、ＯＲゲート２２３−９及びＡＮＤゲート２２３−１０は、前述の実施例１の図７に示される４ビットブロック１５０〜１５３におけるＯＲゲート１５３−８やＡＮＤゲート１５３−７と同様の論理で４ビットブロックのキャリー出力を生成するための中間信号ＤＧ信号及びＤＰ信号を生成する。
【０１４２】
図２１中、ブロック２２４は、前記実施例１の各４ビットブロック１５０〜１５３と同様の回路構成となっている。ブロック１５４のＧ［３：０］には、各４ビットブロック２２０〜２２３から出力されるＤＧ信号が接続され、Ｐ［３：０］には、各４ビットブロック２２０〜２２３から出力されるＤＰ信号が接続される。
【０１４３】
そして、ブロック２２４に含まれるＯＲゲート２２４−１及びＡＮＤゲート２２４−２は、前記実施例１の４ビットブロック１５４におけるＯＲゲート１５４−８及びＡＮＤゲート１５４−７と同様の論理により１６ビットブロックのキャリー出力を生成するための中間信号ＧＧ信号及びＧＰ信号を生成する。また、前記４ビットブロック１５４と同様の論理により、各４ビットブロックのキャリー出力を生成するための中間信号ＤＣ０［３：１］信号及びＤＣＰ［３：１］信号を生成する。
【０１４４】
図２０では、前記のように構成された各１６ビットブロック２１０〜２１３、ブロック２１４、及びブロック２１５−１〜８によりブロックキャリー伝播回路１９０から出力されるブロックキャリー出力ＢＣｉｎ［１５：０］を生成する。以下、具体的に説明する。
【０１４５】
図２０中、ブロック２１４は、前記図２１におけるブロック２２４と同様の回路構成となっている。ブロック２１４のＧ［３：０］及びＰ［３：０］には、各１６ビットブロック２１０〜２１３のキャリー出力を生成するための中間信号ＧＧ信号及びＧＰ信号が接続される。そして、ブロック２１４に含まれるＯＲゲート２１４−１及びＡＮＤゲート２１４−２は、前記１６ビットブロックにおけるブロック２２４のＯＲゲート２２４−１及びＡＮＤゲート２２４−２と同様の論理によりＤＧ信号及びＤＰ信号を生成する。また、ブロック２１４でも、前記ブロック２２４と同様の論理によりＣ０［３：１］信号及びＣＰ［３：１］信号を生成する。
【０１４６】
ブロック２１５−１〜８は、前記実施例１におけるブロック１４５−１〜８と同様の論理により、ブロックキャリー伝播回路１９０から出力されるブロックキャリー出力ＢＣｉｎ［１５：０］を生成して出力する。
【０１４７】
なお、図２０のブロック２１４のＯＲゲート２１４−１により生成されるＣＯＵＴ＿ＣＩＮ０信号は、ＣＩＮが０である場合の加算器のキャリー出力に対応し、ＣＯＵＴ＿ＣＩＮ１は、ＣＩＮが１である場合の加算器のキャリー出力に対応する。本実施例においては、特にこれらＣＯＵＴ＿ＣＩＮ０及びＣＯＵＴ＿ＣＩＮ１の各信号を使用する必要はないが、たとえば背景技術１等における２つの絶対値加算結果の選択や、再補数化の判定等に用いることが可能である。
【産業上の利用可能性】
【０１４８】
本発明は、コンピュータプロセッサにおける浮動小数点加算器ユニット等で利用することができる。
【符号の説明】
【０１４９】
１０    符号・指数処理部
１１    第１のセレクタ
１２    第２のセレクタ
１３    補数化回路
１４    アラインメント部
１５    比較器
１６    絶対値加算器
１７    正規化処理部
【図１】
0005515601.tif 000007
【図２】
0005515601.tif 000008
【図３】
0005515601.tif 000009
【図４】
0005515601.tif 000010
【図５】
0005515601.tif 000011
【図６】
0005515601.tif 000012
【図７】
0005515601.tif 000013
【図８】
0005515601.tif 000014
【図９】
0005515601.tif 000015
【図１０】
0005515601.tif 000016
【図１１】
0005515601.tif 000017
【図１２】
0005515601.tif 000018
【図１３】
0005515601.tif 000019
【図１４】
0005515601.tif 000020
【図１５】
0005515601.tif 000021
【図１６】
0005515601.tif 000022
【図１７】
0005515601.tif 000023
【図１８】
0005515601.tif 000024
【図１９】
0005515601.tif 000025
【図２０】
0005515601.tif 000026
【図２１】
0005515601.tif 000027
【図２２】
0005515601.tif 000028
【図２３】
0005515601.tif 000029