JP2011086133A - Floating-point adder - Google Patents
Floating-point adder Download PDFInfo
- Publication number
- JP2011086133A JP2011086133A JP2009238856A JP2009238856A JP2011086133A JP 2011086133 A JP2011086133 A JP 2011086133A JP 2009238856 A JP2009238856 A JP 2009238856A JP 2009238856 A JP2009238856 A JP 2009238856A JP 2011086133 A JP2011086133 A JP 2011086133A
- Authority
- JP
- Japan
- Prior art keywords
- mantissa
- adder
- absolute value
- output
- signal
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Abstract
Description
本発明は、コンピュータプロセッサにおける浮動小数点加算器ユニットを設計するための技術に関する。
The present invention relates to techniques for designing a floating point adder unit in a computer processor.
IEEE754で規定される2進浮動小数点加算器では、仮数部を絶対値として格納する。そのため、浮動小数点加算器では、減算によって、加算結果が負の値になるようなときには、仮数部を正の値に戻して絶対値とし、符号を修正する操作をする。 The binary floating point adder defined by IEEE754 stores the mantissa part as an absolute value. Therefore, in the floating point adder, when the addition result becomes a negative value by subtraction, the mantissa part is returned to a positive value to obtain an absolute value and an operation for correcting the sign is performed.
この操作を行うために、浮動小数点加算器では、加算結果の仮数部を正の値に戻すための再補数化の機能を有している。再補数化機能は、浮動小数点加算器内部にある加算器に単独で実装されることが多く、その方法は次のようになっている。 In order to perform this operation, the floating point adder has a recomplementation function for returning the mantissa part of the addition result to a positive value. The recomplementation function is often implemented independently in an adder inside the floating-point adder, and the method is as follows.
まず、減数の2の補数を作成し、被減数に加算する。 First, the 2's complement of the subtraction is created and added to the subtracted number.
このとき、加算器のキャリー出力が1にならなければ、加算結果が負であるので、再補数化を実行する。 At this time, if the carry output of the adder does not become 1, since the addition result is negative, recomplementation is executed.
たとえば、AとBの差の絶対値|A−B|を計算する場合、A−B>0の時は、 For example, when calculating the absolute value | A−B | of the difference between A and B, when A−B> 0,
を計算し、A−B<0の時は、 When A−B <0,
を計算する。A−B=0になる場合は、有効ビット内では、数1と数2とは同じ値になるので、どちらの方法で計算しても良い。
Calculate When A−B = 0, the
図22は、従来例に係る浮動小数点加算器の構成例を示す図である。図22に係る浮動小数点加算器は、符号・指数処理部50、オペランドA及びオペランドBをセレクトするセレクタ51、52、補数化回路53、アラインメント部54、絶対値加算器55、正規化処理部56を有する。
FIG. 22 is a diagram illustrating a configuration example of a floating-point adder according to a conventional example. The floating point adder according to FIG. 22 includes a sign /
図23は、図22で使われている絶対値加算器55の例を示した図である。図23において、Aは被減数とし、Bは絶対値加算器55に入力する前に補数化回路53において1の補数をとった減数であるものとする。図23の絶対値加算器では、A+Bの加算を行う加算器60と、A+B+1の加算を行う加算器61とを有する。加算器60は、キャリー入力が0の時、AとBの排他的論理和により得られる半加算結果(HSUM)とキャリーとの排他的論理和で得られる加算結果を出力する。加算器61は、キャリー入力が1の時についての加算結果を出力する。
FIG. 23 is a diagram showing an example of the
EOR(Exclusive−OR)ゲート62は、加算器60の加算結果(A+B)と、減算が行なわれる場合に値「1」が設定されるSUB信号との排他的論理和をとることにより、減算時に加算器60の加算結果に対して1の補数をとる。セレクタ63は、SUB信号を用いて、減算でない場合は0を、減算の場合は加算器60のキャリーアウト信号をセレクトする。
An EOR (Exclusive-OR)
ここで、加算器60のキャリーアウトが1の時は、加算結果は正のため、キャリー入力が1の加算器61の加算結果をセレクタ64でセレクトして絶対値加算器の出力結果Rとする。加算器60のキャリーアウトが0の場合は、キャリー入力が0の時の加算器60の加算結果に対してEORゲート62で1の補数をとったものをセレクタ64でセレクトして、絶対値加算器の出力結果Rとする。尚、前述の通り、A−B=0となる場合には、数1と数2とは同じ値になるので、加算器61のキャリーアウトをセレクタ63に接続しても良い。
Here, when the carry-out of the
特許文献1には、2つの入力データにおける仮数部の大小関係を予め判定しておくことによって、2つの仮数部間で減算を行う必要が生じた場合には常に大なる仮数部より小なる仮数部を減ずるといった形で減算を行なうことによって仮数部演算結果が常に絶対値として得られるようにした発明が開示されている。 Japanese Patent Laid-Open No. 2004-228688 preliminarily determines the magnitude relationship between the mantissa parts in the two input data, so that when a subtraction needs to be performed between the two mantissa parts, the mantissa is always smaller than the larger mantissa part. An invention is disclosed in which a mantissa calculation result is always obtained as an absolute value by performing subtraction in such a manner that the number of parts is subtracted.
しかしながら、背景技術は以下に述べる課題を有する。 However, the background art has the following problems.
図23の絶対値加算器では、キャリーアウトの値によって出力する加算結果を選択するために、キャリー出力で加算結果を選択するパスが加算器の遅延時間を決定してしまい、高速動作の妨げとなっている。また、各ビットへのキャリーの伝播から加算結果が確定するまでの時間が、A+Bの側では、A+B+1の側に比べて、EORゲート62で1の補数を作成する制御を行なう分だけ遅延時間が増加する。
In the absolute value adder of FIG. 23, in order to select the addition result to be output depending on the carry-out value, the path for selecting the addition result by the carry output determines the delay time of the adder, which hinders high-speed operation. It has become. Further, the time from propagation of carry to each bit until the result of addition is determined is longer on the A + B side than the A + B + 1 side by the time that the
特許文献1記載の発明では、あらかじめオペランドの大小比較をして、キャリーのパスがネックとなる絶対値加算器を使わないようにしている。しかし、必ず仮数部の大きい方から小さい方を減ずる構成となっているので、オペランドの符号及び指数の値によっては、一方のオペランドについて、アラインメント(桁合わせ)と補数化の両方が必要となる場合がある。そのため、浮動小数点加算器の遅延時間に大きく影響を与えるアラインメントのルートを遅くしてしまっているという問題点がある。
In the invention described in
上記の課題を解決するための、本発明に係る浮動小数点加算器の一態様は、浮動小数点演算の対象となる2つのオペランドの符号から、加算と減算のいずれの演算を行なうかを示す加減算信号を生成する符号比較器と、前記2つのオペランドの指数の大小を比較し、いずれのオペランドを選択するかを示すオペランド選択信号を生成する指数比較器と、前記オペランド選択信号を用いて前記2つのオペランドの仮数部の一方を選択して第1仮数として出力する第1のセレクタと、前記オペランド選択信号を用いて前記2つのオペランドの仮数部の他方を選択して第2仮数として出力する第2のセレクタと、オペランド加算時には前記第1仮数を、オペランド減算時には前記第1仮数に対する1の補数を第3仮数として出力する補数化部と、前記2つのオペランドの指数の差だけ前記第2仮数のシフトを行い、第4仮数として出力するアラインメント部と、前記第1仮数及び第2仮数の大小を比較する仮数比較器と、前記第3仮数及び第4仮数の絶対値加算を行なう絶対値加算器であって、前記符号比較器が出力する加減算信号が減算であることを示す場合において、前記指数比較器での比較結果及び前記仮数比較器での比較結果により絶対値加算結果が正の数になると認められる場合には該絶対値加算器のキャリー入力を1とし、前記指数比較器での比較結果及び前記仮数比較器での比較結果により絶対値加算結果が負の数になると認められる場合には該絶対値加算器のキャリー入力を0にすると共に、絶対値加算器を構成する半加算器出力信号の1の補数をとることにより、前記第3仮数及び第4仮数の絶対値加算を行なって第5仮数として加算結果を出力する絶対値加算器とを有する。
An aspect of the floating-point adder according to the present invention for solving the above-described problem is an addition / subtraction signal indicating whether an addition or subtraction operation is performed from the sign of two operands to be subjected to a floating-point operation. A sign comparator that generates an operand selection signal that indicates which operand is selected by comparing the magnitudes of the exponents of the two operands, and the two operands using the operand selection signal A first selector that selects one of the mantissa parts of the operand and outputs it as a first mantissa; and a second selector that selects the other of the mantissa parts of the two operands using the operand selection signal and outputs the second mantissa as a second mantissa A selector for outputting the first mantissa as the third mantissa when the operand is subtracted, and the complement of the first mantissa when the operand is subtracted. An alignment unit that shifts the second mantissa by the difference between the exponents of the two operands and outputs it as a fourth mantissa, a mantissa comparator that compares the first mantissa and the second mantissa, and the third mantissa and An absolute value adder for performing absolute value addition of the fourth mantissa, wherein the addition / subtraction signal output from the sign comparator indicates subtraction, and the comparison result of the exponent comparator and the mantissa comparator are If the absolute value addition result is recognized to be a positive number according to the comparison result, the carry input of the absolute value adder is set to 1, and the absolute value is determined by the comparison result in the exponent comparator and the comparison result in the mantissa comparator. When it is recognized that the value addition result is a negative number, the carry input of the absolute value adder is set to 0, and the one's complement of the half adder output signal constituting the absolute value adder is taken, thereby 3 perform the mantissa and the absolute value sum of the fourth mantissa and an absolute value adder for outputting the addition result as a fifth mantissa.
本発明に係る浮動小数点加算器では、減算時の1の補数を作成する処理を、アラインメントとは別のパスで実行でき、また、加算結果に対する再補数化の制御を絶対値加算器のキャリー出力を用いることなく行なうことができる。浮動小数点加算器の遅延時間はアラインメントのパス及び加算器のキャリー伝播が大きな割合を占めるが、上記課題解決手段により、絶対値加算器の回路規模の増加を伴うことなく高速な浮動小数点加算器を得ることが可能となる。
In the floating-point adder according to the present invention, the process of creating a one's complement at the time of subtraction can be executed in a different path from the alignment, and the recomplementation control for the addition result is carried out by the carry output of the absolute value adder. This can be done without using. The delay time of the floating-point adder accounts for a large proportion of the alignment path and the carry propagation of the adder. However, by the above problem solving means, a high-speed floating-point adder can be realized without increasing the circuit scale of the absolute value adder. Can be obtained.
以下、この発明の実施の形態について詳細に説明する。
Hereinafter, embodiments of the present invention will be described in detail.
図1は、本発明の実施例1に係る浮動小数点加算器の構成を示す図である。図1に示す浮動小数点加算器は、符号・指数処理部10、第1のセレクタ11、第2のセレクタ12、補数化回路13、アラインメント部14、比較器15、絶対値加算器16、正規化処理部17を有する。
1 is a diagram illustrating a configuration of a floating-point adder according to a first embodiment of the present invention. 1 includes a sign /
図1の符号・指数処理部10は、浮動小数点演算の対象となる2つのオペランドの符号及び指数についての演算処理を行う。符号・指数処理部10では、2つのオペランドOPERAND AおよびOPERAND Bの符号から、加算と減算とのいずれの演算を行うかを示す“ADD/SUB”信号を出力する。“ADD/SUB”信号は、補数化回路13や絶対値加算器16で使用される。
The sign /
符号・指数処理部10はまた、指数の大小比較結果から得られる、オペランド交換するかどうかを示すEX_OP信号や、指数EAとEBが等しくないことを示すEA_NE_EB信号を出力する。ここで、EX_OP信号は、オペランドAの仮数部とオペランドBの仮数部のいずれを選択するかの制御信号として使用される。また、EA_NE_EB信号はオペランドAの指数EAとオペランドBの指数EBが等しくないときに1となる信号である。
The sign /
第1のセレクタ11及び第2のセレクタ12は、それぞれオペランドの指数の大小比較結果に基づいて2つのオペランドの仮数の一方を選択し、仮数FOPA及びFOPBを出力する。具体的には、指数の大きい方のオペランドの仮数をセレクタ11で選択して仮数FOPAとして補数化回路13へ出力し、他方のオペランドの仮数をセレクタ12で選択して仮数FOPBとしてアラインメント部14へ出力する。尚、2つのオペランドの指数が等しい場合、セレクタ11はオペランドAの仮数部とオペランドBの仮数部のいずれを選択することもできる。この場合、セレクタ12はセレクタ11で選択されていないオペランドの仮数部を選択する。
The
補数化回路13は、第1のセレクタ11で選択された仮数FOPAに対して、“ADD/SUB”信号が加算を示す場合にはFOPAをそのまま出力し、“ADD/SUB”信号が減算を示す場合にはFOPAに対して1の補数をとった値を出力する。補数化回路13の出力は、絶対値加算器16に入力する。
The
アラインメント部14は、後述の符号・指数処理部10で判定される2つのオペランドの指数差(図1では“PA_SFT”)の分だけ、第2のセレクタ12で選択された仮数FOPBのシフトを行うことにより桁合わせ処理を行う。その際、シフトされた仮数の最下位のビットの下に、いわゆるガードビット、ラウンドビット、及びラウンドビットより下位の位置に一つでも“1”があるかどうかを示すスティッキービットを付加するようにしても良い。アラインメント部14の出力は、絶対値加算器16に入力する。
The
比較器15は、第1のセレクタ11及び第2のセレクタ12で選択された仮数(FOPA,FOPB)を比較し、2つのオペランドの指数の値が等しい時の絶対値加算器16による減算の結果が正負いずれになるかを判定する。2つのオペランドの指数が異なる場合、前述の通り指数が大きいオペランドの仮数FOPAを補数化回路13を通して絶対値加算器16に入力するので、比較器15で仮数の比較をしなくても、絶対値加算器16による減算の結果が負の値となることが分かる。
The
論理ゲート18は、比較器15の判定結果であるF_GTと、2つのオペランドの指数が等しくないことを示すEA_NE_EB信号との論理演算を行なうことにより、減算時の絶対値加算器16の加算結果が正負いずれの値になるかを示す“POSI/NEG”信号を出力する。
The
絶対値加算器16は、“ADD/SUB”信号及び“POSI/NEG”信号を用いて絶対値加算器16における再補数化の制御及びキャリー入力の制御を行いつつ、補数化回路13及びアラインメント部14から出力される信号に対する絶対値加算を行う。
The
正規化処理部17は、絶対値加算器16の出力結果に対して、正規化と丸め操作を行う。
The
符号・指数処理部10から出力される浮動小数点加算器の加算結果としての符合及び指数、ならびに正規化処理部17から出力される浮動小数点加算器の加算結果としての仮数を合わせて、最終的な浮動小数点加算器の加算結果(F_RESULT)が生成される。
The sign and exponent as the addition result of the floating point adder output from the sign /
図2では、減算が行なわれる場合、符号・指数処理部10からは、減算を示すSUB信号が出力される例を示す。図2ではまた、論理ゲート18を論理和ゲートとし、オペランドの減算時に絶対値加算器16の加算結果が負となると判別された場合に、NEG信号を出力する。以下の説明では、主として図2に示す実施例を用いて本願実施形態における絶対値加算器の説明を行う。
FIG. 2 shows an example in which, when subtraction is performed, the SUB signal indicating subtraction is output from the sign /
実施例1に係る浮動小数点加算器1は、桁合わせを行うアラインメント部14の動作と並行して仮数FOPAと仮数FOPBの比較を行う比較器15を設けることを特徴とする。実施例1の比較器15は、指数の大小によって経路を確定した後のオペランドAの仮数FOPA及びオペランドBの仮数FOPBを比較し、FOPA>FOPBが成立する時に出力信号F_GTを1にする。ここで、FOPA≧FOPBが成立する時に比較器15から出力される信号を1にしても良い。
The floating
前述の通り、補数化回路13にはオペランドの指数が大きい方のオペランドの仮数部が入力されるので、オペランドの指数が等しくないときは、減算時における絶対値加算器16の加算結果は負の値になる。また、オペランドの指数が等しいときは、オペランドAの仮数がオペランドBの仮数よりも大きい場合に、減算時における絶対値加算器16の加算結果は負の値になる。従って、論理和ゲート18により、比較器15から出力されるF_GT信号とEA_NE_EB信号との論理和をとることにより、NEG信号を生成することができる。このNEG信号は絶対値加算器16に通知され、絶対値加算器16における再補数化の制御及びキャリー入力の制御に用いられる。
As described above, since the mantissa part of the operand having the larger exponent of the operand is input to the
図3は、図2における符号・指数処理部10の一例を示す図である。符号・指数処理部10は、指数値の大小を判定し、オペランド間の指数差(pre alignment shift amount)を絶対値として求める。指数値の大小判定は、高速化のために、入力された各オペランドの指数EXPA及びEXPBについて(EXPA−EXPB)と(EXPB−EXPA)を同時に計算し、(EXPA−EXPB)又は(EXPB−EXPA)のキャリー出力を用いて判定する。
FIG. 3 is a diagram illustrating an example of the sign /
具体的には、図3に示す加算器101のA端子にはEXPAがそのまま入力され、加算器101のB端子には、1の補数化器103でEXPBを反転させた信号が入力される。加算器101のキャリー入力を1にすれば、加算器101において(EXPA−EXPB)が計算される。同様に、加算器102のA端子には、1の補数化器104でEXPAを反転させた信号が入力され、加算器102のB端子には、EXPBがそのまま入力される。加算器102のキャリー入力を1にすれば、加算器102において(EXPB−EXPA)が計算される。
Specifically, EXPA is input as it is to the A terminal of the
セレクタ105は、加算器101のキャリー出力(carry out)の値が1の場合には加算器101の加算結果を、加算器101のキャリー出力の値が0の場合には加算器102の加算結果を選択し、指数差(pre alignment shift amount)として出力する。この指数差は図1・図2で“PA_SFT”として図示しているものであり、図1・図2におけるアラインメント部14において指数差の分だけ桁あわせシフトが行われる。
The
符号・指数処理部10はまた、加算器101と加算器102との両方のキャリー出力の結果から、各オペランドの指数の大小を判定し、3つの制御信号EXPA_GT_EXPB、EXPB_GT_EXPA、EXPA_EQ_EXPBを生成する。具体的には、インバータ106は、加算器101のキャリー出力を反転することにより、EXPBがEXPAよりも大きいことを示すEXPB_GT_EXPA信号を生成する。インバータ108は、加算器102のキャリー出力を反転することにより、EXPAがEXPBよりも大きいことを示すEXPA_GT_EXPB信号を生成する。また、ANDゲート107は、加算器101のキャリー出力と加算器102のキャリー出力の論理積をとることにより、EXPAとEXPBが等しいことを示すEXPA_EQ_EXPB信号を生成する。これら3つの制御信号EXPA_GT_EXPB、EXPB_GT_EXPA、EXPA_EQ_EXPBを用いて、図1・図2におけるEX_OP信号やEA_NE_EB信号が生成される。
The sign /
例えば、オペランドBの指数EXPBがオペランドAの指数EXPAよりも大きい場合は、オペランドAの仮数の換わりにオペランドBの仮数を補数化回路13に入力し、オペランドAの仮数をアラインメント部14へ入力する。そのため、オペランド交換するかどうかを示すEX_OP信号としてはEXPB_GT_EXPAをそのまま用いることができる。セレクタ11は、EX_OP信号が0の時にオペランドAの仮数を、EX_OP信号が1の時にオペランドBの仮数を選択してFOPAを出力する。セレクタ12は、EX_OP信号が0の時にオペランドBの仮数を、EX_OP信号が1の時にオペランドAの仮数を選択してFOPBを出力する。
For example, when the exponent EXPB of the operand B is larger than the exponent EXPA of the operand A, the mantissa of the operand B is input to the
また、図1・図2におけるEA_NE_EB信号としては、EXPA_EQ_EXPBの論理反転をとった信号、あるいはEXPB_GT_EXPAとEXPA_GT_EXPBとの論理和をとった信号等を用いることができる。 As the EA_NE_EB signal in FIGS. 1 and 2, a signal obtained by logically inverting EXPA_EQ_EXPB, a signal obtained by logically summing EXPB_GT_EXPA and EXPA_GT_EXPB, or the like can be used.
指数と符号については、セレクタ101及びセレクタ102は、(EXPA−EXPB)又は(EXPB−EXPA)のキャリー出力を用いて指数値の大きいオペランドの指数と符号を選択する。
Regarding the exponent and sign, the
具体的には、セレクタ110は、加算器101のキャリー出力(carry out)の値が1の場合には入力した指数EXPAを、加算器101のキャリー出力の値が0の場合には入力した指数EXPBを選択する。選択された指数は、EXP_BEFORE_NORMALIZEとして、正規化処理部17に対してシフト可能な最大値として通知(図1・図2では対応する信号不図示)される。
Specifically, the
セレクタ110で選択された指数は、オペランド加算時の1ビット桁あふれした状態を基準位置とするために、+1操作部111で+1操作を行うことで、正規化シフタを片方向シフトのみとしてインプリメントする。
The exponent selected by the
+1操作部111で+1操作した指数に対して、正規化処理部17における正規化操作によってシフトした値分を減じる補正操作が減算器112において行われる。ここで、図3における“leading zero result as normalize shift amount”は、後述する正規化処理部17のリーディングゼロカウント部161が出力するリーディングゼロカウント値LZCに相当する信号である。
The
また、後述の正規化処理部17における丸め操作により桁上がりが生じた場合には、減算器112から出力される指数に対して+1操作をする必要がある。+1操作部113は、減算器112から出力される指数に対して+1操作を行なう。セレクタ114は、“round carry out”が1の場合には+1操作部113の出力を選択し、“round carry out”が0の場合には減算器112の出力を選択して、浮動小数点加算器の加算結果の指数(result_exp)として出力する。ここで、“round carry out”は、後述の正規化処理部17の丸め加算器164から出力されるキャリー出力信号である。
Further, when a carry occurs due to a rounding operation in the
入力データ、つまり各オペランドの符号signAと符号signBの値が異なる場合には、排他的論理和ゲート120でこれらの符号の排他的論理和をとることにより、減算であることを示すSUB信号を生成する。
If the values of the input data, that is, the sign signA and signB values of each operand are different, the exclusive OR
セレクタ121は、加算器101のキャリー出力(carry out)の値が1の場合にはsignAを、加算器101のキャリー出力が0の場合にはsignBを選択する。
The
オペランドの減算時であって、オペランドの指数が等しい場合に絶対値加算器の演算結果を再補数化した場合には、セレクタ121から出力される符号を反転させる必要がある。論理ゲート122は、セレクタ121から出力される符号を反転させるか否かを制御する信号を生成する。すなわち、論理ゲート122は、EORゲートから出力されるSUB信号、ANDゲート107から出力されるEXPA_EQ_EXPB信号、比較器15で生成されたF_EQに相当するFA_EQ_FB(又は、FOPA_EQ_FOPB)信号の反転信号、及び絶対値加算器16で生成されるRECOMP信号の論理積を生成する。EORゲート123は、セレクタ121から出力される信号と論理ゲート122の出力信号との排他的論理和を生成し、絶対値加算器の加算結果の符合(result sign)として出力する。
When subtracting operands and the exponents of the operands are equal, if the operation result of the absolute value adder is re-complemented, the sign output from the
図4は、図2における比較器15の一例を示す図である。図4に示す比較器は、IEEE754の倍精度演算まで対応できるように、52ビット長の比較器としたものである。IEEE754の倍精度フォーマットでは、仮数部は53ビットの精度をもっているが、正規化してMSBビットを隠れビット化している。このため、指数値が同じ場合には、MSBビットは同じ値になる。仮数部の大小を判定する上では、MSBビットを無視しても比較結果に影響を与えないため、本実施形態においては、データ比較器は最低52ビット分の比較ができれば十分である。
FIG. 4 is a diagram illustrating an example of the
図4に示す比較器は、3つの16ビット・ブロック130、131、132と、4ビット・ブロック133、及び各ブロックからの出力信号をまとめるブロック134とを有する。
The comparator shown in FIG. 4 has three 16-
16ビット・ブロック130は、4つの4ビット・ブロック130−1〜130−4及びこれらの各4ビット・ブロックからの出力結果をまとめるブロック130−5を有する。なお、他の16ビットブロック131及び132についても、16ビットブロック130と同様の構成となるので、説明を省略する。
The 16-
4ビット・ブロック130−1は、入力データA[3:0]及び入力データB[3:0]を比較し、A[3:0]とB[3:0]が一致することを示すEQ又はA[3:0]がB[3:0]よりも大きいことを示すGTを出力する。具体的には、ANDゲート130−112は、A[3:0]とB[3:0]の各ビットの排他的論理和の反転信号の論理積をとることにより、EQ信号を出力する。ORゲート130−111は、A[3:0]がB[3:0]よりも大きい場合のデコード信号の論理和をとることにより、GT信号を出力する。
The 4-bit block 130-1 compares the input data A [3: 0] and the input data B [3: 0], and an EQ indicating that A [3: 0] and B [3: 0] match. Alternatively, GT indicating that A [3: 0] is larger than B [3: 0] is output. Specifically, the AND
他の4ビット・ブロック130−2〜130−4及び133の構成も4ビット・ブロック130−1と同様の構成となるので、説明を省略する。 The configurations of the other 4-bit blocks 130-2 to 130-4 and 133 are the same as those of the 4-bit block 130-1, and thus the description thereof is omitted.
各4ビット・ブロックの出力信号を受けるブロック130−5や、各16ビット・ブロックの出力信号を受けるブロック134は、4ビット・ブロック130−1の中のブロック130−11と同様の論理で構成できる。
The block 130-5 that receives the output signal of each 4-bit block and the
ブロック130−5では、各4ビット・ブロック130−1〜130−4から出力されるGT信号及びEQ信号に基づいて、入力信号A[15:0]とB[15:0]の比較を行なう。ANDゲート130−52は、A[15:0]とB[15:0]の比較結果が一致していれば、出力信号のEQを1にする。ORゲート130−51は、A[15:0]がB[15:0]よりも大きければ、出力信号のGTを1にする。 In block 130-5, the input signals A [15: 0] and B [15: 0] are compared based on the GT signal and the EQ signal output from each of the 4-bit blocks 130-1 to 130-4. . The AND gate 130-52 sets the EQ of the output signal to 1 if the comparison results of A [15: 0] and B [15: 0] match. The OR gate 130-51 sets GT of the output signal to 1 if A [15: 0] is larger than B [15: 0].
ブロック134では、各ブロック130〜133から出力されるGT信号及びEQ信号に基づいて、入力信号A[51:0]とB[51:0]の比較を行う。そして、ブロック134は、その比較結果が一致していれば、ANDゲート134−2の出力信号F_EQを1としてA=Bであることを示す。一方、ブロック134は、A[51:0]がB[51:0]よりも大きければ、ORゲート134−1の出力信号F_GTを1として、A>Bであることを示す。
In
図4の比較器のA入力(A[51:0])及びB入力(B[51:0])に、図2におけるFOPA及びFOPBを接続し、図4の比較器のF_GT出力に、図2におけるORゲート18を接続すると、図8に示されるNEG信号が得られる。尚、図4のF_EQ信号は、前述の図3におけるFA_EQ_FB(又は、FOPA_EQ_FOPB)信号として用いられる。 The FOPA and FOPB in FIG. 2 are connected to the A input (A [51: 0]) and B input (B [51: 0]) of the comparator of FIG. 4, and the F_GT output of the comparator of FIG. 2 is connected, the NEG signal shown in FIG. 8 is obtained. 4 is used as the FA_EQ_FB (or FOPA_EQ_FOPB) signal in FIG. 3 described above.
図5は、実施例1に係る絶対値加算器16の一例を示す図である。図5において、キャリー伝播ブロック20は、絶対値加算器16のキャリー伝播を行うブロックであり、詳細については、後述する。
FIG. 5 is a diagram illustrating an example of the
図5中、SUB信号は、オペランドAとオペランドBの符号が異なるときに1、符号が等しい時には0となる信号であり、符号・指数処理部10から出力されるSUB信号と同じものである。NEG信号は、図2におけるNEG信号であり、ORゲート18により生成される信号である。
In FIG. 5, the SUB signal is a signal that is 1 when the signs of operand A and operand B are different, and is 0 when the signs are equal, and is the same as the SUB signal output from the sign /
図5において、nビット目の入力A[n]とB[n]の論理積である生成項(Generation term)はANDゲート16−4で生成され、キャリー伝播ブロック20のGn端子に入力される。また、nビット目のA[n]とB[n]の排他的論理和として得られる伝播項(Propagation term)はEOR(Exclusive−OR)ゲート16−5で生成され、キャリー伝播ブロック20のPn端子に入力される。n−1ビット目から0ビット目の生成項及び伝播項についても同様の論理で生成され、キャリー伝播ブロック20の対応する各端子に入力される。
In FIG. 5, a generation term (Generation term) that is the logical product of the nth bit inputs A [n] and B [n] is generated by an AND gate 16-4 and input to the Gn terminal of the
ここで、nビット目の加算結果SUM[n]は、伝播項Pnとキャリー伝播ブロック20のキャリー出力Cnの排他的論理和で求められる。そのため、再補数化を考慮しなければ、nビット目の加算結果はEORゲート16−5の出力とキャリー伝播ブロック20のCn出力のEOR論理をとればよいことになる。しかし、前述の通り、絶対値加算器において絶対値|A−B|を計算する際に、A−B>0の場合は、
Here, the addition result SUM [n] of the nth bit is obtained by exclusive OR of the propagation term Pn and the carry output Cn of the
を計算し、A−B<0の場合は If A−B <0,
を計算することになる。すなわち、A−B<0の場合、キャリー入力が0の Will be calculated. That is, when A−B <0, the carry input is 0.
の加算結果に対して1の補数をとる再補数化処理が必要となってくる。 Therefore, a recomplementation process that takes the one's complement for the addition result is required.
本実施形態では、再補数化処理を加算後に行うのではなく、キャリー伝播回路20の前に移動し、キャリーよりも早く確定する半加算結果(図4ではEORゲート16−5出力)に対して再補数化処理を行う。
In the present embodiment, the recomplementation process is not performed after the addition, but the half addition result (the output of the EOR gate 16-5 in FIG. 4) that moves before the
具体的には、絶対値加算器16において再補数化するためのEORゲート16−6を、A[n]とB[n]の半加算結果を生成するEORゲート16−5の直後に設け、再補数化するか否かを再補数化要求信号RECOMPにより制御する。再補数化要求信号RECOMPは、ANDゲート16−2においてSUB信号とNEG信号の論理積をとることにより生成する。
Specifically, an EOR gate 16-6 for recomplementation in the
また、合わせて、減算時にA−B<0となる場合にはキャリー入力を0にするために、キャリー伝播ブロック20のキャリー入力端子Cinには、AND回路16−1においてNEG信号を反転したインバータ16−3の出力信号とSUB信号との論理積をとった信号を入力する。
In addition, an inverter that inverts the NEG signal in the AND circuit 16-1 is connected to the carry input terminal Cin of the
図6は、図5におけるキャリー伝播ブロック20の一例を示した図である。図6は64ビットのキャリー生成ブロックの概略図であり、ビット幅64ビットまでの加算器に対応できる。図6の64ビット・キャリー生成ブロックは、4つの16ビットブロック140〜143と、各16ビットブロック140〜143のキャリー生成を行なうための中間信号GG、GP信号を扱うブロック144と、キャリー伝播ブロック20から出力するキャリー信号C[63:0]を生成するブロック145−1〜145−8とを有する。
FIG. 6 is a diagram showing an example of
図7は、図6中の16ビットブロック140〜143の一例を示した図である。図7の16ビット・キャリー生成ブロックは、4つの4ビットブロック150〜153と、各4ビットブロックのキャリー生成を行なうための中間信号DG、DP信号を扱うブロック154と、16ビットキャリー生成ブロック140〜143から出力するキャリー生成用信号C0[15:1]とCP[15:1]とを生成するブロック155−1〜155−15とを有する。図7の16ビットブロックは図6中のブロック140に対応し、図7での入力信号G[15:0]及びP[15:0]は、図6におけるブロック140に入力されるG[15:0]及びP[15:0]となる。
FIG. 7 is a diagram showing an example of the 16-
各4ビットブロック150〜153は、図7中の4ビットブロック153に示す構成となっている。図5に示すように、キャリー伝播ブロック20の外側で生成されて入力される生成項G[n]と伝播項P[n]の各ビットに対して、4ビットブロック153では以下の信号を生成する。
Each of the 4-
4ビットブロック153内のG[3:0]及びP[3:0]は、16ビットブロックに入力されるG[15:12]及びP[15:12]が接続される。
G [3: 0] and P [3: 0] in the 4-
バッファ153−2は、入力されたG[0]をそのままC0[1]として出力する。ORゲート153−4は、P[1]とG[0]との論理積とG[1]との論理和をとって、C0[2]を出力する。 ORゲート153−6は、P[2]とP[1]とG[0]との論理積と、P[2]とG[1]との論理積と、G[2]との論理和をとってC0[3]を出力する。ORゲート153−8は、P[3]とP[2]とP[1]とG[0]との論理積と、P[3]とP[2]とG[1]との論理積と、P[3]とG[2]との論理積と、G[3]との論理和をとってDGを出力する。 The buffer 153-2 outputs the input G [0] as it is as C0 [1]. The OR gate 153-4 calculates the logical sum of the logical product of P [1] and G [0] and G [1], and outputs C0 [2]. The OR gate 153-6 performs a logical sum of a logical product of P [2], P [1], and G [0], a logical product of P [2] and G [1], and G [2]. And C0 [3] is output. The OR gate 153-8 performs a logical product of P [3], P [2], P [1], and G [0], and a logical product of P [3], P [2], and G [1]. Then, the logical product of P [3] and G [2] and the logical sum of G [3] is taken and DG is output.
バッファ153−1は、入力されたP[0]をそのままCP[1]として出力する。ANDゲート153−3は、P[1]とP[0]との論理積をとってCP[2]を出力する。ANDゲート153−5は、P[2]とP[1]とP[0]との論理積をとってCP[3]を出力する。ANDゲート153−7は、P[3]とP[2]とP[1]とP[0]との論理積をとってDPを出力する。 The buffer 153-1 outputs the input P [0] as CP [1] as it is. The AND gate 153-3 takes the logical product of P [1] and P [0] and outputs CP [2]. The AND gate 153-5 calculates the logical product of P [2], P [1], and P [0] and outputs CP [3]. The AND gate 153-7 calculates the logical product of P [3], P [2], P [1], and P [0] and outputs DP.
図7に示す16ビットブロックが処理する生成項G[15:0]より上位ビットの生成項G[31:16]、G[47:32]、G[63:48]、及び、伝播項P[15:0]より上位ビットの伝播項P[31:16]、P[47:32]、P[63:48]の各信号についても、図7に示す4ビットブロック151〜153と同様の構成を持つビットブロックで同じように処理される。
The generation terms G [31:16], G [47:32], G [63:48], and the propagation term P higher than the generation terms G [15: 0] processed by the 16-bit block shown in FIG. The signals of the higher-order bit propagation terms P [31:16], P [47:32], and P [63:48] from [15: 0] are the same as those of the 4-
図7中、ブロック154は、各4ビットブロック150〜153と同様の回路構成となっている。ブロック154のG[3:0]には、各4ビットブロックから出力されるDG信号が接続され、P[3:0]には、各4ビットブロックから出力されるDP信号が接続される。そして、ブロック154に含まれるORゲート154−8は、4ビットブロック153におけるORゲート153−8と同様の論理により16ビットブロックのキャリー生成を行なうための中間信号GG信号を出力する。また、ANDゲート154−7は、4ビットブロック153におけるANDゲート153−7と同様の論理により16ビットブロックのキャリー生成を行なうための中間信号GP信号を出力する。また、ブロック154でも、4ビットブロック150〜153と同様の論理でC0[3:0]信号及びCP[3:0]信号を生成して出力する。
In FIG. 7, the
ブロック155−1〜155−15は、各4ビットブロック150〜153及びブロック154から出力されたC0[3:0]信号及びCP[3:0]信号を用いて、16ビットブロックのC0[15:1]信号及びCP[15:1]信号を生成して出力する。具体的には、図7に示す16ビットブロック140から出力されるC0[3:1]及びCP[3:1]は、4ビットブロック150から出力されるC0[3:0]及びCP[3:1]をそのままバッファを介して生成される。
The blocks 155-1 to 155-15 use the C0 [3: 0] and CP [3: 0] signals output from the 4-
16ビットブロックから出力されるC0[4]及びCP[4]は、ブロック154から出力されるC0[1]及びCP[1]をそのままバッファを介して生成される。16ビットブロックから出力されるC0[7:5]は、4ビットブロック151から出力されるCP[3:1]の各ビットとブロック154から出力されるC0[1]との論理積と、4ビットブロック151から出力されるC0[3:1]の各ビットとの論理和をとることにより生成される。16ビットブロックから出力されるCP[7:5]は、4ビットブロック151から出力されるCP[3:1]の各ビットとブロック154から出力されるCP[1]との論理積をとることにより生成される。
C0 [4] and CP [4] output from the 16-bit block are generated as they are through C0 [1] and CP [1] output from the
16ビットブロックから出力されるC0[8]及びCP[8]は、ブロック154から出力されるC0[2]及びCP[2]をそのままバッファを介して生成される。16ビットブロックから出力されるC0[11:9]は、4ビットブロック152から出力されるCP[3:1]とブロック154から出力されるC0[2]との論理積と、4ビットブロック152から出力されるC0[3:1]との論理和をとることにより生成される。16ビットブロックから出力されるCP[11:9]は、4ビットブロック152から出力されるCP[3:1]とブロック154から出力されるCP[2]との論理積をとることにより生成される。
C0 [8] and CP [8] output from the 16-bit block are generated via C0 [2] and CP [2] output from the
16ビットブロックから出力されるC0[12]及びCP[12]は、ブロック154から出力されるC0[3]及びCP[3]をそのままバッファを介して生成される。16ビットブロックから出力されるC0[15:13]は、4ビットブロック153から出力されるCP[3:1]とブロック154から出力されるC0[3]との論理積と、4ビットブロック153から出力されるC0[3:1]との論理和をとることにより生成される。16ビットブロックから出力されるCP[15:13]は、4ビットブロック153から出力されるCP[3:1]とブロック154から出力されるCP[3]との論理積をとることにより生成される。
C0 [12] and CP [12] output from the 16-bit block are generated as they are through C0 [3] and CP [3] output from the
図6では、前記のように構成された各16ビットブロック140〜143、ブロック144、及びブロック145−1〜145−8により、64ビットブロックキャリーブロックとしてのキャリー出力信号C[63:0]を生成する。以下、具体的に説明する。
In FIG. 6, the 16-
図6中、ブロック144は、各4ビットブロック150〜153と同様の回路構成となっている。ブロック144のG[3:0]には、各16ビットブロック140〜143から出力されるGG信号が接続され、P[3:0]には、各16ビットブロック140〜143から出力されるGP信号が接続される。そして、ブロック144に含まれるORゲート144−1は、4ビットブロック153におけるORゲート153−8と同様の論理により64ビットブロックのキャリー生成を行なうための中間信号DG信号を出力する。また、ANDゲート144−2は、4ビットブロック153におけるANDゲート153−7と同様の論理により64ビットブロックのキャリー生成を行なうための中間信号DP信号を出力する。また、ブロック144でも、4ビットブロック150〜153と同様の論理でC0[3:0]信号及びCP[3:0]信号を生成して出力する。
In FIG. 6, the
ブロック145−1〜145−8は、各16ビットブロック140〜143及びブロック144から出力されたC0[3:0]信号及びCP[3:0]信号を用いて、64ビットブロックとしてのキャリーアウト信号C[63:0]を生成して出力する。
The blocks 145-1 to 145-8 are carried out as 64-bit blocks using the C0 [3: 0] and CP [3: 0] signals output from the 16-
64ビットブロックから出力されるC[0]は、ブロック145−1において、64ビットブロックへ入力されるキャリー入力信号であるCINをそのままバッファを介して生成される。ここで、キャリー入力信号CINに入力される信号は、図5におけるANDゲート16−1で生成された信号と同じ信号である。 C [0] output from the 64-bit block is generated via the buffer as it is in CIN, which is a carry input signal input to the 64-bit block in block 145-1. Here, the signal input to carry input signal CIN is the same signal as the signal generated by AND gate 16-1 in FIG.
C[15:1]は、ブロック145−2において、16ビットブロック140から出力されるCP[15:1]とCINとの論理積をとった信号と、16ビットブロック140から出力されるC0[15:0]との論理和をとることにより生成される。
In block 145-2, C [15: 1] is a logical product of CP [15: 1] output from 16-
C[16]は、ブロック145−3において、ブロック144から出力されるCP[1]とCINとの論理積をとった信号と、ブロック144から出力されるC0[1]との論理和をとることにより生成される。
In block 145-3, C [16] takes the logical sum of the signal obtained by logical product of CP [1] output from
C[31:17]は、ブロック145−4において、16ビットブロック141から出力されるCP[15:1]とブロック144から出力されるCP[1]とCINとの論理積をとった信号と、16ビットブロック141から出力されるCP[15:1]と、ブロック144から出力されるC0[1]の論理積をとった信号と、16ビットブロック141から出力されるC0[15:1]との論理和をとることにより生成される。
C [31:17] is a signal obtained by ANDing CP [15: 1] output from the 16-
C[32]は、ブロック145−5において、ブロック144から出力されるCP[2]とCINとの論理積をとった信号と、ブロック144から出力されるC0[2]との論理和をとることにより生成される。
In block 145-5, C [32] takes the logical sum of a signal obtained by logical product of CP [2] output from
C[47:33]は、ブロック145−6において、16ビットブロック142から出力されるCP[15:1]とブロック144から出力されるCP[2]とCINとの論理積をとった信号と、16ビットブロック142から出力されるCP[15:1]とブロック144から出力されるC0[2]との論理積をとった信号と、16ビットブロック142から出力されるC0[15:1]との論理和をとることにより生成される。
C [47:33] is a signal obtained by ANDing CP [15: 1] output from the 16-
C[48]は、ブロック145−7において、ブロック144から出力されるCP[3]とCINとの論理積をとった信号と、ブロック144から出力されるC0[3]との論理和をとることにより生成される。
In block 145-7, C [48] takes the logical sum of the signal obtained by ANDing CP [3] output from
C[63:49]は、ブロック145−8において、16ビットブロック143から出力されるCP[15:1]とブロック144から出力されるCP[3]とCINとの論理積をとった信号と、16ビットブロック143から出力されるCP[15:1]とブロック144から出力されるC0[3]の論理積をとった信号と、16ビットブロック143から出力されるC0[15:1]との論理和をとることにより生成される。
C [63:49] is a signal obtained by ANDing CP [15: 1] output from the 16-
なお、図6のブロック144のORゲート144−1により生成されるCOUT_CIN0信号は、CINが0である場合の加算器のキャリー出力に対応し、COUT_CIN1は、CINが1である場合の加算器のキャリー出力に対応する。本実施例においては、特にこれらCOUT_CIN0及びCOUT_CIN1の各信号は使用していないが、たとえば絶対値加算結果の選択や、再補数化の判定等に用いることも可能である。
Note that the COUT_CIN0 signal generated by the OR gate 144-1 of the
図8は、実施例1における、オペランドAの符号SA、指数部EA、オペランドBの符号SB、指数部EBと、指数部の比較結果に応じて仮数部の交換を実施したあとの仮数部データFOPAとFOPBの値によって、SUB、NEG、RECOMP、CINの値をどう決定するかについてまとめた表である。図中、“−”と表示されている欄は比較不要であることを示す。 FIG. 8 shows the mantissa data after exchanging the mantissa part according to the comparison result of the exponent part and the sign SA of the operand A, the exponent part EA, the sign SB of the operand B, and the exponent part EB in the first embodiment. 10 is a table summarizing how values of SUB, NEG, RECOMP, and CIN are determined based on values of FOPA and FOPB. In the figure, a column labeled “-” indicates that comparison is not necessary.
図8に示すSUB信号については、符号SAとSBが一致する場合にSUB信号は0に、符号SAとSBが異なる場合にSUBは1になる。NEG信号については、指数部EAとEBが異なる場合及び仮数部FOPAがFOPBよりも大きい場合にNEGは1となり、指数部EAとEBが等しく、かつ仮数部FOPAがFOPB以下の場合にNEGは0となる。RECOMP信号については、減算時(SUB=1)であって、かつ、絶対値加算器の加算結果が負となる場合(NEG=1)にRECOMP信号は1となり、それ以外の場合、RECOMP信号は0となる。CINについては、SUB=1であって、かつ、NEG=0の場合にCINは1となり、それ以外の場合、CINは0となる。 For the SUB signal shown in FIG. 8, the SUB signal is 0 when the codes SA and SB match, and the SUB is 1 when the codes SA and SB are different. For the NEG signal, NEG is 1 when the exponent parts EA and EB are different and when the mantissa part FOPA is greater than FOPB, NEG is 0 when the exponent parts EA and EB are equal and the mantissa part FOPA is less than or equal to FOPB. It becomes. With respect to the RECOMP signal, the RECOMP signal is 1 when subtraction is performed (SUB = 1) and the addition result of the absolute value adder is negative (NEG = 1), otherwise, the RECOMP signal is 0. Regarding CIN, CIN is 1 when SUB = 1 and NEG = 0, and CIN is 0 in other cases.
図9は、実施例1における指数データの大小関係と仮数部のオペランドデータの交換の実施についてまとめた表である。図9では、EA=EBの場合にデータ交換を行わないことになっているが、EA=EBの場合にデータ交換を行うようにすることもできる。オペランドのデータ交換は、前述の通り、図3におけるEXPA_GT_EXPB又はEXPB_GT_EXPAを用いて制御することができる。 FIG. 9 is a table summarizing the relationship between the magnitudes of the exponent data and the exchange of the mantissa operand data in the first embodiment. In FIG. 9, data exchange is not performed when EA = EB. However, data exchange may be performed when EA = EB. As described above, operand data exchange can be controlled using EXPA_GT_EXPB or EXPB_GT_EXPA in FIG.
図10は、オペランドデータの符号SA、SBの値に応じて、補数化回路13におけるビット反転を行うかどうかを表にしたものである。符号SA,SBの値をビット反転に直接使用する代わりに、SUB信号を用いて補数化回路13の制御に用いてもよい。具体的には、SUB信号が1の場合、補数化回路13でビット反転を行い、SUB信号が0の場合、補数化回路13でビット反転しないといった制御を行うことができる。
FIG. 10 is a table showing whether or not the bit inversion is performed in the
図11は、図1・図2における正規化と丸め操作を行う正規化処理部17の一実施例を示す図である。図11の実施例では、正規化処理部17は、リーディングゼロカウント部161、シフト制御部162、正規化シフト部163、丸め加算器164、及び丸め判定部165を有する。正規化処理部17に入力される信号160は、図1・図2における絶対値加算器16から出力される加算結果である。
FIG. 11 is a diagram illustrating an embodiment of the
減算時において2つのオペランドの値が近い場合、桁落ちによってMSB(Most Significant Bit)側の1ないし複数のビットが0となることがある。IEEE754のバイナリー・フォーマットでは、仮数部の値を正規化しているため、MSBから見て、最初に“1”となるビットを所定の位置に整列する必要がある。従って、図11の実施例では、絶対値加算器16の加算結果である入力信号160のMSB側から見て最初に“1”となるビット位置をリーディングゼロカウント部161で計数し、該計数値等を用いて正規化シフト部163で信号160をシフトさせる。
When the values of two operands are close at the time of subtraction, one or more bits on the MSB (Most Significant Bit) side may become 0 due to a digit loss. In the binary format of IEEE754, since the value of the mantissa is normalized, it is necessary to align the first “1” in a predetermined position as seen from the MSB. Therefore, in the embodiment of FIG. 11, the reading zero
図12は、図11におけるリーディングゼロカウント部161が計数したリーディングゼロカウント値(LZC)とデータのビット・マッピングの関係を示す図である。図12(a)における“ADD OP A”及び“ADD OP B”は、図1・図2における絶対値加算器16に入力されるオペランドの仮数部であり、補数化回路13及びアラインメント部14から出力された信号に相当する。“ADD RESULT”は、図1・図2における絶対値加算器16の出力信号に相当する。“after normalize shift”は、図11における正規化シフト部163の出力信号に相当する。
FIG. 12 is a diagram showing the relationship between the reading zero count value (LZC) counted by the reading zero
図12(a)において、絶対値加算器16の加算結果(ADD RESULT)のMSBの位置に付された“*”の位置、すなわち、絶対値加算器16への入力仮数部(“ADD OP A”,“ADD OP B”)のMSBビットより1ビット上位の位置が、リーディングゼロカウント値LZC=0の位置となる。
12A, the position of “*” added to the MSB position of the addition result (ADD RESULT) of the
図12(b)は、絶対値加算器16の加算結果(ADD RESULT)に対するリーディングゼロカウント部161でのカウント値LZCを説明する図である。図12(b)中、“x”は任意の値を示す。図12(b)に示すように、MSBの位置に“1”がある場合にはLZC=0となり、MSBから1ビット右の位置に“1”がある場合にはLZC=1となり、MSBから2ビット右の位置に“1”がある場合にはLZC=2となる。以下同様に、MSBから見た“1”の位置が右にシフトするに従って、LZCの値も増加する。
FIG. 12B is a diagram for explaining the count value LZC in the reading zero
図11のリーディングゼロカウント部161は、図12(a)におけるADD RESULT“*”の位置から見て、最初に“1”となるビットの位置まで何ビットずれているかを計数する。すなわち、リーディングゼロカウント部161は、図12(b)に示すように“ADD RESULT”のMSBから見て何ビット目に“1”が存在するかをカウントして、リーディングゼロカウント値LZCを出力する。リーディングゼロカウント値LZCは、図3における“leading zero result as normalize shift amount”を示す信号としても使用される。
The reading zero
図13は、実施例1に係るリーディングゼロカウント部161の回路例を示す図である。図13は、64ビット幅までカウントできるように構成した回路例である。図12の“ADD RESULT”における最上位ビット、つまり図中で*印をつけてあるビットを図13のA[63]に
接続し、以下“ADD RESULT”のA[62]以降をビットの重み順に接続することで、本実施例1におけるリーディングゼロカウントの機能を実現できる。
FIG. 13 is a diagram illustrating a circuit example of the reading zero
図13のリーディングゼロカウント部161の回路例は、4つの16ビットブロック170〜173及びこれらの16ビットブロックの出力結果をまとめるブロック174を有する。各16ビットブロック170〜173は、16ビットブロック173の部分に示されているように、4つの4ビットブロック180〜183及びこれらの4ビットブロックの出力結果をまとめるブロック184を有する。
The circuit example of the reading zero
4ビットブロックの回路について、4ビットブロック183を例に説明する。4ビットブロック183は、入力データA[63:60]のMSB側から見て、最初に“1”となるビットの位置を16進数で示すためのC[1:0]信号を生成する。説明の便宜上、4ビットブロック183へ入力されるデータがA[3:0]であるものとして、以下、説明する。
A 4-bit block circuit will be described by taking the 4-
NANDゲート183−4は、A[3]を反転した信号とA[2]との論理積を反転した信号を生成する。NANDゲート183−5は、A[3]を反転した信号とA[2]を反転した信号とA[1]との論理積を反転した信号を生成する。ANDゲート183−1は、A[3]を反転した信号とNANDゲート183−4の出力信号の論理積をとり、C[1]信号を生成する。ANDゲート183−2は、A[3]を反転した信号とNANDゲート183−5の出力信号の論理積をとり、C[0]信号を生成する。ORゲート183−3は、A[3:0]の各信号の論理和をとることにより、A[3:0]の全ビットが0である場合に“0”となるXALL0信号を生成する。 The NAND gate 183-4 generates a signal obtained by inverting the logical product of the signal obtained by inverting A [3] and A [2]. The NAND gate 183-5 generates a signal obtained by inverting the logical product of the signal obtained by inverting A [3], the signal obtained by inverting A [2], and A [1]. The AND gate 183-1 takes the logical product of the signal obtained by inverting A [3] and the output signal of the NAND gate 183-4 to generate a C [1] signal. The AND gate 183-2 takes a logical product of the signal obtained by inverting A [3] and the output signal of the NAND gate 183-5, and generates a C [0] signal. The OR gate 183-3 generates the XALL0 signal that becomes “0” when all the bits of A [3: 0] are 0 by taking the logical sum of the signals of A [3: 0].
このようにして生成されたC[1:0]信号及びXALL0信号により、入力データA[i]のMSBから見て何ビット目に“1”があるかを知ることができる。すなわち、A[3:0]=1xxxH(x:任意の値)の場合には、C[1:0]=00Bとなり、XALL0=1となる。A[3:0]=01xxHの場合には、C[1:0]=01Bとなり、XALL0=1となる。A[3:0]=001xHの場合には、C[1:0]=10Bとなり、XALL0=1となる。A[3:0]=0001Hの場合には、C[1:0]=11Bとなり、XALL0=1となる。A[3:0]=0000Hの場合には、C[1:0]=11Bとなり、XALL0=0となり、この場合のC[1:0]は後段で使用されないことになる。 By the C [1: 0] signal and the XALL0 signal generated in this way, it is possible to know what bit “1” is seen from the MSB of the input data A [i]. That is, when A [3: 0] = 1xxxH (x: arbitrary value), C [1: 0] = 00B and XALL0 = 1. In the case of A [3: 0] = 01xxH, C [1: 0] = 01B and XALL0 = 1. In the case of A [3: 0] = 001xH, C [1: 0] = 10B and XALL0 = 1. In the case of A [3: 0] = 0001H, C [1: 0] = 11B and XALL0 = 1. When A [3: 0] = 0000H, C [1: 0] = 11B and XALL0 = 0, and C [1: 0] in this case is not used in the subsequent stage.
ブロック184では、各4ビットブロック180〜183から出力されるXALL0信号を用いて、各4ビットブロック180〜183から出力されるC[1:0]をセレクトし、ORゲート184−3から16ビットブロック173のC[1:0]として出力する。そして、各4ビットブロック180〜183から出力されるXALL0信号に対して、4ビットブロック183のANDゲート183−1〜183−2と同様の論理により、ANDゲート184−1〜184−2で16ビットブロック173のC[3:2]を生成する。このようにして生成されたC[3:0]は、入力信号A[15:0]のMSB側から見て、最初に“1”となるビットの位置を16進数で示す。ブロック184のORゲート184−4から出力されるXALL0信号は、その16ビットブロック173に含まれる4つの4ビットブロック180〜183への入力信号A[15:0](図ではA[63:48])の全てのビットが0の場合に、XALL0=0となる。
In
ブロック174の回路構成もブロック184の構成と同様の考え方で構成できる。すなわち、ANDゲート174−1〜174−2及びORゲート174−3で、64ビットブロックのC[5:0]に相当する信号を生成することができる。ここで、64ビットの入力A[63:0]の全ビットがゼロの場合もあり得るので、LZCを[6:0]と1ビット拡張し、A[63:0]の全ビットがゼロの場合には、LZC[6:0]=C[6:0]=1000000Bとすることが望ましい。
The circuit configuration of the
従って、ORゲート174−5から出力されるXALL0信号を用いてANDゲート174−1〜174−2の出力及びORゲート174−3の出力をANDゲート174−4でマスクし、C[5:0]を生成する。そして、ORゲート174−5で生成されたXALL0をインバータ174−7で反転させてC[6]を生成する。このようにして、64ビットブロックのLZC[6:0]信号を生成することができる。 Therefore, the output of the AND gates 174-1 to 174-2 and the output of the OR gate 174-3 are masked by the AND gate 174-4 using the XALL0 signal output from the OR gate 174-5, and C [5: 0 ] Is generated. Then, XALL0 generated by the OR gate 174-5 is inverted by the inverter 174-7 to generate C [6]. In this manner, a 64-bit block LZC [6: 0] signal can be generated.
ところで、IEEE754規格では、各種の異常な演算を検出して、OSに割込みをあげるトラップ条件が規定されている。そのため、浮動小数点加算器を有するプロセッサ等においては、トラップが発生した場合に割込みを発生させるかどうかを制御する回路(以下、「トラップ割込み制御回路」という)を有するのが一般的である。 Incidentally, the IEEE 754 standard defines trap conditions for detecting various abnormal operations and raising an interrupt to the OS. For this reason, a processor or the like having a floating point adder generally has a circuit for controlling whether or not to generate an interrupt when a trap occurs (hereinafter referred to as “trap interrupt control circuit”).
シフト制御部162は、IEEE754におけるアンダーフロー割込みがトラップ割込み制御回路で許可されている場合には、リーディングゼロカウントの計数結果を採用する。トラップ割込み制御回路においてアンダーフロー割込みが許可されていない場合には、シフト制御部162は、リーディングゼロカウント部161の計数結果と、図3における指数差により選択した指数(EXP BEFORE NORMLIZE)とで、指数値の値を比較して値の小さな方を選択する。正規化シフト部163は、シフト制御部162で選択された値の分だけ正規化シフタ163で絶対値加算器出力の仮数部の演算結果データを左シフト(MSB側へシフト)して正規化を行なう。
When the underflow interrupt in IEEE754 is permitted by the trap interrupt control circuit, the
図3における指数差により選択した指数(EXP BEFORE NORMLIZE)は、IEEE754におけるdenormalized numberに対応する正規化位置に対応するものであり、本実施例では、アンダーフロー割込みを起さない場合、正規化シフト部163は、denormalized numberとして演算結果を出力する。
The index (EXP BEFORE NORMIZE) selected by the index difference in FIG. 3 corresponds to the normalized position corresponding to the normalized number in IEEE 754. In this embodiment, when an underflow interrupt is not generated, the normalized shift is performed. The
丸め判定部165は、正規化シフト部163で絶対値加算器からの出力データを正規化した後のデータのうち、仮数部の演算結果として出力される部分のLSB(Least Significant Bit)側とその下位のビットパターンを判定する。ここで、IEEE754では、演算結果の丸めに関していくつかの丸めモードを規定しており、IEEE754の丸めモードに従った丸めを行なう場合には、丸め判定部165は、IEEE754規格に沿ったように丸めを行なうかどうかを決定する。
The rounding
丸め加算器164(round adder)は、インクリメンタで構成することができる。丸め加算器164で+1操作を行うと、データパターンによっては丸め加算器164の出力に桁上りが発生することがある。従って、丸め加算器164はキャリー出力(carry out)信号(図3におけるround carry out)を生成し、MSBから桁あがりが発生した場合にはキャリー出力信号によって符号・指数処理部10に通知する。符号・指数処理部10では、丸め加算器164から出力されるキャリー出力信号を用いて指数値の補正が行われる。
The round adder 164 (round adder) can be configured by an incrementer. When a +1 operation is performed by the rounding
丸め加算器164は、丸め判定部165で判定した結果に基づいて、正規化シフト部163から出力されたデータのうち、丸めを行なう部分に対して+1もしくは+0操作を行い、浮動小数点加算器の加算結果における仮数部の結果(result)を出力する。
Based on the result determined by the rounding
実施例2に係る浮動小数点加算器を説明する。実施例2は、実施例1の比較器にオペランドA、Bの仮数部を直接つなぐことで、NEG信号生成の速度向上を図ったものである。 A floating-point adder according to the second embodiment will be described. In the second embodiment, the mantissa part of operands A and B is directly connected to the comparator of the first embodiment, thereby improving the speed of NEG signal generation.
図14は、本発明の実施例2に係る浮動小数点加算器を示す図である。図14において、符号・指数処理部10、第1のセレクタ11、第2のセレクタ12、補数化回路13、アラインメント部14、比較器15、絶対値加算器16、及び正規化処理部17については、説明を省略する。
FIG. 14 is a diagram illustrating a floating-point adder according to the second embodiment of the present invention. In FIG. 14, the sign /
図14において、比較器15は、オペランドA、Bの仮数部を比較し、Aの仮数部がBの仮数部よりも大きい場合にF_GT出力を1にする。ここで、Aの仮数部とBの仮数部が等しい場合に比較器15の出力を1にしても良い。
In FIG. 14, the
図14における比較器15の出力はEX_OP信号によるOPERAND交換前の状態の情報のため、EX_OP=1の時に、OPERAND交換を行なうEX_OP信号と比較器15の出力信号とをEORゲート18−2で排他的論理和をとることにより補正を行なう。そして、実施例1の場合と同様、オペランドの指数部が異なるときは、指数部のみでOPERAND交換後の大小が判定できるので、ORゲート18−1でEORゲート18−2の出力信号とEA_NE_EB信号との論理和をとってNEG信号とする。
Since the output of the
尚、EA=EBでOPERAND交換を行わない場合には、COMPAREの出力をEX_OP信号で反転するためのEOR論理は省略できるので、図14中のブロック18をブロック19に置き換えることができる。
In the case where ERA = EB is not performed and OPERAND exchange is not performed, the EOR logic for inverting the output of COMPARE with the EX_OP signal can be omitted, so that the
図14における比較器15の一例としては、前述の図4の回路を用いることができる。図14において、比較器15のA入力にオペランドAの仮数部FAを、B入力にオペランドBの仮数部FBを接続すると、図15や図16のNEG信号が得られる。
As an example of the
図15は、実施例2における符号・指数処理部10での指数の比較を行なった結果、指数部の値が等しい時(EA=EB時)に、データを交換しないようにした場合のSUB、NEG、RECOMP、CINの値をまとめた表である。図15中、SA及びSBは、オペランドA及びBの符号を示し、EA及びEBは、各オペランドの指数部を示し、FA及びFBは、各オペランドの仮数部を示す。
FIG. 15 shows the SUB in the case where the data is not exchanged when the values of the exponent parts are equal (when EA = EB) as a result of comparison of the exponents in the sign /
図16は、図15と同様であるが、指数部による比較によるデータ交換時に指数部の値が等しい時(EA=EB時)に、データを交換するようにした場合のSUB、NEG、RECOMP、CINの値をまとめた表である。
FIG. 16 is the same as FIG. 15 except that the data is exchanged when the values of the exponent part are equal (when EA = EB) during the data exchange by the comparison by the exponent part, SUB, NEG, RECOMP, It is the table | surface which put together the value of CIN.
実施例3に係る浮動小数点加算器を説明する。実施例3は、実施例1又は実施例2における絶対値加算器16の構成を高速化のためにセグメント分割するように変更したものである。
A floating-point adder according to the third embodiment will be described. In the third embodiment, the configuration of the
実施例3における浮動小数点加算器の概略図は図1、図2、又は図14と同様である。実施例3における符号・指数処理部10、第1のセレクタ11、第2のセレクタ12、補数化回路13、アラインメント部14、比較器15、及び正規化処理部17については、図1、図2、又は図14における各部と同じであるので、説明を省略する。
The schematic diagram of the floating point adder in the third embodiment is the same as that of FIG. 1, FIG. 2, or FIG. The sign /
図17に本発明の実施例3に係るセグメント分割した高速タイプの絶対値加算器の構成を示す。セグメント分割されたADDERブロック191〜194と、ADDERブロックへのキャリー伝播を行なうブロックキャリー伝播回路190で構成される。図17中、“BC”は“block carry”の意味であり、セグメント分割されたブロックへ伝播するキャリーである。
FIG. 17 shows the configuration of a segmented high-speed absolute value adder according to the third embodiment of the present invention. The segmented ADDER blocks 191 to 194 and a block
ANDゲート195でNEGの反転信号とSUBの論理積をとった信号は、ブロックキャリー伝播回路190のキャリー入力(Cin)として使用する。ANDゲート196で生成されるRECOMP信号は、セグメント分割したADDER ブロック191〜194内部の半加算(Half SUM)信号(=A[i] EOR B[i])を反転させる信号として使用する。これらのSUB、NEG、RECOMP、Cinの各信号の真理値表を図18に示す。
A signal obtained by ANDing the inverted signal of NEG and the SUB in the AND
図19は、実施例3のセグメント分割されたADDERブロック191〜194の回路例を示す図である。実施例3のように絶対値加算器をセグメント分割した高速タイプにする場合には、図19に示すような加算器のセグメントを用いる。 FIG. 19 is a diagram illustrating a circuit example of the segmented ADDER blocks 191 to 194 according to the third embodiment. When the absolute value adder is segmented as a high-speed type as in the third embodiment, an adder segment as shown in FIG. 19 is used.
図19中、A及びBは、加算器セグメントに入力された所定の複数のビット数からなる加算対象となるデータである。EORゲートはAとBの排他的論理和をとることにより、AとBの半加算結果を出力する。ブロック201は、キャリー入力が0の場合のキャリー出力を生成し、ブロック202は、キャリー入力が1の場合のキャリー出力を生成する。EORゲート203は、EORゲート200から出力される半加算結果と、前記RECOMP信号との排他的論理和をとり、減算時における再補数化の処理を行なう。
In FIG. 19, A and B are data to be added consisting of a predetermined plurality of bits input to the adder segment. The EOR gate outputs the half addition result of A and B by taking the exclusive OR of A and
EORゲート204は、EORゲート203の出力とブロック201のキャリー出力との排他的論理和をとることにより、キャリー入力が0の場合の加算結果を生成する。EORゲート205は、EORゲート203の出力とブロック202のキャリー出力との排他的論理和をとることにより、キャリー入力が1の場合の加算結果を生成する。セレクタ206は、ブロックキャリー入力BCinの値に応じて、EORゲート204かEORゲート205のいずれかの出力を選択し、最終的な加算結果SUMを出力する。
The
図19の加算器セグメントでは、RECOMP信号により反転させるEORゲート203が内側に入るが、図25、図26に示す従来例のような物量の増加はない。
In the adder segment of FIG. 19, the
図20は、本発明の実施例3に係る図17におけるブロックキャリー伝播回路190の一例を示す図である。図20の実施例は、64 ビット幅の入力をもち、digit(4ビット)単位のブロックに対するキャリーを生成する。
FIG. 20 is a diagram illustrating an example of the block carry
このブロックキャリー伝播回路190は、4つの16ビットブロック210〜213と、各16ビットブロック210〜213のキャリー出力を生成するための中間信号GG、GP信号を扱うブロック214と、ブロックキャリー伝播回路190から出力するブロックキャリー信号BCin[15:0]を生成するブロック215−1〜8を有する。
The block carry
図21は、図20中の16ビットブロック210〜213の一実施例を示す図である。この16ビットブロックは、4つの4ビットブロック220〜223と、各4ビットブロック220〜223のキャリー出力を生成するための中間信号DG、DP信号を扱うブロック224を有する。各4ビットブロック220〜223の内容は、図21中の4ビットブロック223に示す構成と同様の内容となっている。
FIG. 21 is a diagram showing an embodiment of the 16-
図21中、ANDゲート223−1〜4は、各4ビットブロック220〜223に入力されるA[3:0]とB[3:0]の生成項を生成し、ORゲート223−5〜8は、A[3:0]とB[3:0]の伝播項を生成する。また、ORゲート223−9及びANDゲート223−10は、前述の実施例1の図7に示される4ビットブロック150〜153におけるORゲート153−8やANDゲート153−7と同様の論理で4ビットブロックのキャリー出力を生成するための中間信号DG信号及びDP信号を生成する。
In FIG. 21, AND gates 223-1 to 223-4 generate generation terms of A [3: 0] and B [3: 0] that are input to the respective 4-
図21中、ブロック224は、前記実施例1の各4ビットブロック150〜153と同様の回路構成となっている。ブロック154のG[3:0]には、各4ビットブロック220〜223から出力されるDG信号が接続され、P[3:0]には、各4ビットブロック220〜223から出力されるDP信号が接続される。
In FIG. 21, the
そして、ブロック224に含まれるORゲート224−1及びANDゲート224−2は、前記実施例1の4ビットブロック154におけるORゲート154−8及びANDゲート154−7と同様の論理により16ビットブロックのキャリー出力を生成するための中間信号GG信号及びGP信号を生成する。また、前記4ビットブロック154と同様の論理により、各4ビットブロックのキャリー出力を生成するための中間信号DC0[3:1]信号及びDCP[3:1]信号を生成する。
The OR gate 224-1 and the AND gate 224-2 included in the
図20では、前記のように構成された各16ビットブロック210〜213、ブロック214、及びブロック215−1〜8によりブロックキャリー伝播回路190から出力されるブロックキャリー出力BCin[15:0]を生成する。以下、具体的に説明する。
In FIG. 20, the block carry output BCin [15: 0] output from the block carry
図20中、ブロック214は、前記図21におけるブロック224と同様の回路構成となっている。ブロック214のG[3:0]及びP[3:0]には、各16ビットブロック210〜213のキャリー出力を生成するための中間信号GG信号及びGP信号が接続される。そして、ブロック214に含まれるORゲート214−1及びANDゲート214−2は、前記16ビットブロックにおけるブロック224のORゲート224−1及びANDゲート224−2と同様の論理によりDG信号及びDP信号を生成する。また、ブロック214でも、前記ブロック224と同様の論理によりC0[3:1]信号及びCP[3:1]信号を生成する。
In FIG. 20, the
ブロック215−1〜8は、前記実施例1におけるブロック145−1〜8と同様の論理により、ブロックキャリー伝播回路190から出力されるブロックキャリー出力BCin[15:0]を生成して出力する。
The blocks 215-1 to 8 generate and output the block carry output BCin [15: 0] output from the block carry
なお、図20のブロック214のORゲート214−1により生成されるCOUT_CIN0信号は、CINが0である場合の加算器のキャリー出力に対応し、COUT_CIN1は、CINが1である場合の加算器のキャリー出力に対応する。本実施例においては、特にこれらCOUT_CIN0及びCOUT_CIN1の各信号を使用する必要はないが、たとえば背景技術1等における2つの絶対値加算結果の選択や、再補数化の判定等に用いることが可能である。
Note that the COUT_CIN0 signal generated by the OR gate 214-1 of the
本発明は、コンピュータプロセッサにおける浮動小数点加算器ユニット等で利用することができる。
The present invention can be used in a floating point adder unit or the like in a computer processor.
10 符号・指数処理部
11 第1のセレクタ
12 第2のセレクタ
13 補数化回路
14 アラインメント部
15 比較器
16 絶対値加算器
17 正規化処理部
DESCRIPTION OF
Claims (7)
前記2つのオペランドの指数の大小を比較し、いずれのオペランドを選択するかを示すオペランド選択信号を生成する指数比較器と、
前記オペランド選択信号を用いて前記2つのオペランドの仮数部の一方を選択して第1仮数として出力する第1のセレクタと、
前記オペランド選択信号を用いて前記2つのオペランドの仮数部の他方を選択して第2仮数として出力する第2のセレクタと、
オペランド加算時には前記第1仮数を、オペランド減算時には前記第1仮数に対する1の補数を第3仮数として出力する補数化部と、
前記2つのオペランドの指数の差だけ前記第2仮数のシフトを行い、第4仮数として出力するアラインメント部と、
前記第1仮数及び第2仮数の大小を比較する仮数比較器と、
前記第3仮数及び第4仮数の絶対値加算を行なう絶対値加算器であって、前記符号比較器が出力する加減算信号が減算であることを示す場合において、前記指数比較器での比較結果及び前記仮数比較器での比較結果により絶対値加算結果が正の数になると認められる場合には該絶対値加算器で前記第3仮数及び第4仮数に加えてさらに1を加算することとなる値を該絶対値加算器のキャリー入力とし、前記指数比較器での比較結果及び前記仮数比較器での比較結果により絶対値加算結果が負の数になると認められる場合には該絶対値加算器で前記第3仮数及び第4仮数を加算することとなる値を該絶対値加算器のキャリー入力にすると共に、絶対値加算器を構成する半加算器出力信号の1の補数をとることにより、前記第3仮数及び第4仮数の絶対値加算を行なって第5仮数として加算結果を出力する絶対値加算器と、
を有することを特徴とする浮動小数点加算器。
A sign comparator that generates an addition / subtraction signal indicating whether to perform addition or subtraction from the sign of two operands to be subjected to floating-point arithmetic;
An exponent comparator that compares the magnitudes of the exponents of the two operands and generates an operand selection signal indicating which operand is selected;
A first selector that selects one of the mantissa parts of the two operands using the operand selection signal and outputs the first mantissa as a first mantissa;
A second selector that selects the other of the mantissa parts of the two operands using the operand selection signal and outputs the second mantissa as a second mantissa;
A complementing unit that outputs the first mantissa at the time of operand addition as a third mantissa at the time of operand subtraction, and the 1's complement of the first mantissa as a third mantissa;
An alignment unit that shifts the second mantissa by the difference between the exponents of the two operands and outputs it as a fourth mantissa;
A mantissa comparator for comparing the magnitude of the first mantissa and the second mantissa;
An absolute value adder for adding absolute values of the third mantissa and the fourth mantissa, wherein the addition / subtraction signal output by the sign comparator indicates subtraction; When the absolute value addition result is recognized as a positive number based on the comparison result in the mantissa comparator, the absolute value adder adds 1 in addition to the third mantissa and the fourth mantissa. Is the carry input of the absolute value adder, and if the absolute value addition result is found to be a negative number based on the comparison result of the exponent comparator and the comparison result of the mantissa comparator, the absolute value adder The value to be added to the third mantissa and the fourth mantissa is used as a carry input of the absolute value adder, and by taking the one's complement of the half adder output signal constituting the absolute value adder, 3rd mantissa and 4th mantissa An absolute value adder for outputting the addition result as a fifth mantissa perform the absolute value sum,
A floating point adder.
2. The floating point adder according to claim 1, wherein the absolute value adder includes a plurality of adder segments and a block carry propagation circuit.
3. The floating point adder according to claim 2, wherein a one's complement of the half adder output signal is taken inside an adder segment constituting the absolute value adder.
前記2つのオペランドの指数の大小を比較し、いずれのオペランドを選択するかを示すオペランド選択信号を生成する指数比較器と、
前記オペランド選択信号を用いて前記2つのオペランドの仮数部の一方を選択して第1仮数として出力する第1のセレクタと、
前記オペランド選択信号を用いて前記2つのオペランドの仮数部の他方を選択して第2仮数として出力する第2のセレクタと、
オペランド加算時には前記第1仮数を、オペランド減算時には前記第1仮数に対する1の補数を第3仮数として出力する補数化部と、
前記2つのオペランドの指数の差だけ前記第2仮数のシフトを行い、第4仮数として出力するアラインメント部と、
前記2つのオペランドの仮数データを比較してその大小を比較する仮数比較器と、
前記第3仮数及び第4仮数の絶対値加算を行なう絶対値加算器であって、前記符号比較器が出力する加減算信号が減算であることを示す場合において、前記指数比較器での比較結果及び前記仮数比較器での比較結果により絶対値加算結果が正の数になると認められる場合には該絶対値加算器で前記第3仮数及び第4仮数に加えてさらに1を加算することとなる値を該絶対値加算器のキャリー入力とし、前記指数比較器での比較結果及び前記仮数比較器での比較結果により絶対値加算結果が負の数になると認められる場合には該絶対値加算器で前記第3仮数及び第4仮数を加算することとなる値を該絶対値加算器のキャリー入力にすると共に、絶対値加算器を構成する半加算器出力信号の1の補数をとることにより、前記第3仮数及び第4仮数の絶対値加算を行なって第5仮数として加算結果を出力する絶対値加算器と、
を有することを特徴とする浮動小数点加算器。
A sign comparator that generates an addition / subtraction signal indicating whether to perform addition or subtraction from the sign of two operands to be subjected to floating-point arithmetic;
An exponent comparator that compares the magnitudes of the exponents of the two operands and generates an operand selection signal indicating which operand is selected;
A first selector that selects one of the mantissa parts of the two operands using the operand selection signal and outputs the first mantissa as a first mantissa;
A second selector that selects the other of the mantissa parts of the two operands using the operand selection signal and outputs the second mantissa as a second mantissa;
A complementing unit that outputs the first mantissa at the time of operand addition as a third mantissa at the time of operand subtraction, and the 1's complement of the first mantissa as a third mantissa;
An alignment unit that shifts the second mantissa by the difference between the exponents of the two operands and outputs it as a fourth mantissa;
A mantissa comparator that compares the mantissa data of the two operands and compares the magnitudes thereof;
An absolute value adder for adding absolute values of the third mantissa and the fourth mantissa, wherein the addition / subtraction signal output by the sign comparator indicates subtraction; When the absolute value addition result is recognized as a positive number based on the comparison result in the mantissa comparator, the absolute value adder adds 1 in addition to the third mantissa and the fourth mantissa. Is the carry input of the absolute value adder, and if the absolute value addition result is found to be a negative number based on the comparison result of the exponent comparator and the comparison result of the mantissa comparator, the absolute value adder The value to be added to the third mantissa and the fourth mantissa is used as a carry input of the absolute value adder, and by taking the one's complement of the half adder output signal constituting the absolute value adder, 3rd mantissa and 4th mantissa An absolute value adder for outputting the addition result as a fifth mantissa perform the absolute value sum,
A floating point adder.
前記第3仮数及び第4仮数の絶対値加算を行なう前記絶対値加算器は、前記符号比較器が出力する加減算信号が減算であることを示す場合において、前記仮数比較器での比較結果に対して前記オペランド選択信号との排他的論理和をとった結果及び前記指数比較器での比較結果により、絶対値加算結果が正の数になると認められる場合に該絶対値加算器で前記第3仮数及び第4仮数に加えてさらに1を加算することとなる値を該絶対値加算器のキャリー入力とし、前記仮数比較器での比較結果に対して前記オペランド選択信号との排他的論理和をとった結果及び前記指数比較器での比較結果により、絶対値加算結果が負の数になると認められる場合には該絶対値加算器で前記第3仮数及び第4仮数を加算することとなる値を該絶対値加算器のキャリー入力にすると共に絶対値加算器を構成する半加算器出力信号の1の補数をとることにより、前記第3仮数及び第4仮数の絶対値加算を行なって第5仮数として加算結果を出力すること、
を特徴とする浮動小数点加算器。
A floating point adder according to claim 4,
The absolute value adder for performing the absolute value addition of the third mantissa and the fourth mantissa indicates that the addition / subtraction signal output from the sign comparator indicates subtraction, with respect to the comparison result in the mantissa comparator. When the absolute value addition result is recognized as a positive number based on the result of exclusive OR with the operand selection signal and the comparison result in the exponent comparator, the absolute value adder uses the third mantissa. In addition to the fourth mantissa, a value that is to add one more is used as the carry input of the absolute value adder, and the result of comparison by the mantissa comparator is exclusive ORed with the operand selection signal. When the absolute value addition result is a negative number based on the result of the comparison and the result of the exponent comparator, the absolute value adder adds a value to which the third mantissa and the fourth mantissa are added. Of the absolute value adder By taking the 1's complement of the half adder output signal that constitutes the absolute value adder and carrying out the absolute value addition of the third mantissa and the fourth mantissa and outputting the addition result as the fifth mantissa thing,
Floating point adder characterized by
6. The floating point adder according to claim 5, wherein the absolute value adder comprises a plurality of adder segments and a block carry propagation circuit.
7. The floating point adder according to claim 6, wherein the adder segment constituting the absolute value adder takes a one's complement of the half adder output signal.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2009238856A JP5515601B2 (en) | 2009-10-16 | 2009-10-16 | Floating point adder |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2009238856A JP5515601B2 (en) | 2009-10-16 | 2009-10-16 | Floating point adder |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2011086133A true JP2011086133A (en) | 2011-04-28 |
JP5515601B2 JP5515601B2 (en) | 2014-06-11 |
Family
ID=44079029
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2009238856A Expired - Fee Related JP5515601B2 (en) | 2009-10-16 | 2009-10-16 | Floating point adder |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP5515601B2 (en) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0192829A (en) * | 1987-10-02 | 1989-04-12 | Hitachi Ltd | Floating point computing element |
JPH0764767A (en) * | 1993-08-31 | 1995-03-10 | Kofu Nippon Denki Kk | Adder |
JP2000010959A (en) * | 1998-05-27 | 2000-01-14 | Advanced Risc Mach Ltd | Processor and method for multiplying and accumulating operation |
-
2009
- 2009-10-16 JP JP2009238856A patent/JP5515601B2/en not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0192829A (en) * | 1987-10-02 | 1989-04-12 | Hitachi Ltd | Floating point computing element |
JPH0764767A (en) * | 1993-08-31 | 1995-03-10 | Kofu Nippon Denki Kk | Adder |
JP2000010959A (en) * | 1998-05-27 | 2000-01-14 | Advanced Risc Mach Ltd | Processor and method for multiplying and accumulating operation |
Also Published As
Publication number | Publication date |
---|---|
JP5515601B2 (en) | 2014-06-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8606840B2 (en) | Apparatus and method for floating-point fused multiply add | |
JP6001276B2 (en) | Apparatus and method for performing floating point addition | |
US8499017B2 (en) | Apparatus and method for performing fused multiply add floating point operation | |
US9317251B2 (en) | Efficient correction of normalizer shift amount errors in fused multiply add operations | |
KR20080055985A (en) | Floating-point processor with selectable subprecision | |
JP4388543B2 (en) | 3-input floating-point adder / subtracter | |
JP6415236B2 (en) | Apparatus and system including floating point addition unit, and floating point addition method | |
US8239441B2 (en) | Leading zero estimation modification for unfused rounding catastrophic cancellation | |
US6175851B1 (en) | Fast adder/subtractor for signed floating point numbers | |
JPWO2007096982A1 (en) | Arithmetic processing apparatus and arithmetic processing method | |
CN108694037B (en) | Apparatus and method for estimating shift amount when floating point subtraction is performed | |
JP2003196079A (en) | Product sum arithmetic operation unit and product sum arithmetic operation method | |
JP4858794B2 (en) | Floating point divider and information processing apparatus using the same | |
US7437400B2 (en) | Data processing apparatus and method for performing floating point addition | |
US8620983B2 (en) | Leading sign digit predictor for floating point near subtractor | |
US20070038693A1 (en) | Method and Processor for Performing a Floating-Point Instruction Within a Processor | |
JP4806453B2 (en) | Arithmetic processing apparatus, information processing apparatus, and arithmetic method | |
JPH10289096A (en) | Logic circuit and floating point arithmetic unit | |
TWI723681B (en) | Multi-input floating-point adder | |
KR102459011B1 (en) | Leading zero anticipation | |
JP5515601B2 (en) | Floating point adder | |
US20190121615A1 (en) | Apparatus and method for subtracting significand values of floating-point operands | |
US20140059104A1 (en) | Arithmetic circuit for calculating correction value | |
US7640286B2 (en) | Data processing apparatus and method for performing floating point multiplication | |
US7386580B2 (en) | Data processing apparatus and method for computing an absolute difference between first and second data elements |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20120720 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20130924 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20131118 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20131203 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20140130 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20140304 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20140317 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 5515601 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
LAPS | Cancellation because of no payment of annual fees |