JP4388543B2 - 3項入力の浮動小数点加減算器 - Google Patents

3項入力の浮動小数点加減算器 Download PDF

Info

Publication number
JP4388543B2
JP4388543B2 JP2006337252A JP2006337252A JP4388543B2 JP 4388543 B2 JP4388543 B2 JP 4388543B2 JP 2006337252 A JP2006337252 A JP 2006337252A JP 2006337252 A JP2006337252 A JP 2006337252A JP 4388543 B2 JP4388543 B2 JP 4388543B2
Authority
JP
Japan
Prior art keywords
bit
terms
rounding
mantissa
cancellation
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.)
Expired - Fee Related
Application number
JP2006337252A
Other languages
English (en)
Other versions
JP2008152360A (ja
Inventor
裕祐 福村
パトリック ハミルトン
昌也 中畑
貴志 大森
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP2006337252A priority Critical patent/JP4388543B2/ja
Priority to US11/955,571 priority patent/US8185570B2/en
Publication of JP2008152360A publication Critical patent/JP2008152360A/ja
Application granted granted Critical
Publication of JP4388543B2 publication Critical patent/JP4388543B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/483Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
    • G06F7/485Adding; Subtracting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/499Denomination or exception handling, e.g. rounding or overflow
    • G06F7/49942Significance control
    • G06F7/49947Rounding
    • G06F7/49963Rounding to nearest

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computational Mathematics (AREA)
  • Computing Systems (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Nonlinear Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Complex Calculations (AREA)

Description

本発明は、3項の入力を有する浮動小数点加減算器に係り、特に、演算過程で無限の精度をもって演算した後丸めを行った場合と同一の結果を得ることができるようにした3項入力の浮動小数点加減算器に関する。
今日、浮動小数点演算は、科学技術計算やグラフィックス処理等により利用されているため、多くのマイクロプロッセサに浮動小数点演算器が搭載されている。このなかで加減算は、基本的な演算であり、2つの入力に対し演算を行う2項演算器が一般的である。
浮動小数点演算には、標準規格であるIEEE754に規定されたものがあり、広く用いられている。2項入力の加減算は、IEEE規格では演算過程においてあたかも無限の精度があるかのように扱い、その後で規格に従った丸めを行うことが要請される。有限のビット幅しかもたない演算器で演算過程において無限の精度を実現する一般的な方法として、仮数の下位にGuardビット、Roundビット、Stickyビットの3ビットを付加して演算を行う方法が、例えば、非特許文献1等に記載されて知られている。
図12は標準規格であるIEEE754に規定された2項演算の演算過程の仮数の状態を説明する図である。
いま、演算前の第1オペランド、第2オペランドの仮数が図12(a)に示すようなものであるとする。なお、以下に説明する本発明の全ての図面に示される「×」は、0または1の任意の値である。2項演算では、まず、前述した第1オペランド、第2オペランドの2つの項の指数の差を求め、その際、大きい方の指数を中間指数とする。そして、指数の小さい方のオペランドの仮数を前述した2項の指数の差だけ右シフトする。その際、仮数の下位に、丸めの処理を正確に行うことを可能にするため、従来からよく知られているように、Guard ビット、Round ビット、Stickyビットの3ビットを付加した上で右シフトを行う。但し、Stickyビットは、あふれたビット全てとの論理和とする。このときの前述の2つの項の仮数は、図12(b)に示すようなものとなる。
次に、前述したように右シフトしたビット列と指数の大きい方のビット列とを2項加減算器による演算を行う。この加減算の結果を最上位ビット(MSB)が1になるまで左シフトを行い正規化する。また、同時に、中間指数の更新をも行う。その後、IEEE規格に従った丸めモードに応じた丸めを行う。加減算の結果を最上位ビット(MSB)が1になるまで左シフトを行い正規化した仮数と丸めを行った結果の仮数とは、図12(c)に示すようにものとなる。
前述したような加減算を行うことにより、2項演算の場合、演算過程で無限の精度をもって演算した後丸めを行った場合と同一の結果を得ることができる。
図13はIEEE規格に従った丸めモードの方法を説明する図である。IEEE754では、RN(最近値)、RZ(ゼロ方向)、RP(+無限大方向)、RM(−無限大方向)の4種の丸めモードが定義されている。図13には、2項加算での結果の符号、仮数の最下位ビット(LSB)、Guardビット、Roundビット、Stickyビットの各値と各丸めモードにおける丸め方としての切り上げ、切り捨ての関係を示しており、よく知られた内容であるので、ここでは、これ以上の説明を省略する。
前述した2項入力の加減算演算に対して、3項入力の加減算演算は、(1)あるベクトルの総和をとるといった多数の加算を行う処理の場合、2項ずつ加算を行うより3項ずつ加算を行うことにより処理をより高速化することができ、(2)2つの浮動小数点数の誤差のない和を求めるKnuth の公式(非特許文献2参照)は、浮動小数点加減算を6回必要とするが、3項入力の浮動小数点加算を利用することができれば、2回の浮動小数点加減算で済み、このような演算を多用する多倍長精度演算を高速化することができるという利点を得ることができる。
図14は浮動小数点数x、yの誤差のない和x+yを求めるKnuth の公式による2項入力演算と、3項入力の演算とした場合の演算との様子を示す図である。2項入力の演算器で行う場合、図14(a)に示すように、6回の浮動小数点加減算を必要とする。一方、同一の演算を3項入力の演算器で行う場合、図14(b)に示すように、2回の浮動小数点加減算で済む。
しかし、2項入力の演算に比較して、3項入力の演算の場合、浮動小数点加減算で正確な結果を出すことが困難となる。ここで、正確な結果とは、演算過程で無限の精度をもって演算した後丸めを行った場合と同一の結果を出すことを指す。
次に、2項演算の演算方法をそのまま3項演算に拡張した場合に、正確な結果を出すことができないケースについて説明する。なお、以下の説明において、3項入力の第1オペラントをa、第2オペランドをb、第3オペランドをcとする。
図15は3項の内2項の演算で相殺が生じることにより正確な結果を出すことができない例を説明する図である。
3項の内2項の演算で相殺が起きる場合、例えば、a=−b、|a|,|b|>|c|である場合を考える。このときaとbとの演算相殺が起きるため、正しい結果はcとならなければならない。しかし、図15に示すように、cは絶対値がa,bに比べ小さいため、シフトされてあふれたビットがStickyビットにまとめられてしまい、正確な結果に必要な情報を失ってしまうため、2項演算の演算方法をそのまま3項演算に拡張した場合に、正確な結果を出すことができない。
図16は3項のうち絶対値の大きい2項の演算で桁落ちが起きるために正確な結果を出すことができない例を説明する図である。
例えば、a≒−b、|a|,|b|>|c|の場合を考える。このとき、aとbとの演算において桁落ちが起きる。図16に示すように、cは、絶対値がa,bに比べ小さいとしているため、シフトされあふれたビットはStickyビットにまとめられてしまい、正確な結果に必要な情報を失ってしまうため、2項演算の演算方法をそのまま3項演算に拡張した場合に、正確な結果を出すことができない。
図15により説明した例は、図16により説明した例の特別なケースと考えられるが、図15に示す例は、a+b=0となるためcの絶対値の大きさにかかわらず結果が厳密にcとならなければならず、cのビットの全てが必要となる。一方、図16に示す例の場合、cの絶対値の大きさによってはcのビット全てが必要となるとは限らないため、ここでは、図15に示した例と、図16に示した例とは、別々のものであるとした。
図17は3項のうち2項がシフトによりビットあふれを起こすために正確な結果を出すことができない例を説明する図である。ここで説明する例は、|a|>>|b|,|c|であるものとしてを考える。
図17に示すようにb,cが共にシフトによりビットあふれが起こり、あふれたビットがStickyビットにまとめられてしまう。この場合、Stickyビット同士の演算をすることになり、その演算が上位に伝播する可能性があり正しい結果が得られなくなる。また、その演算が上位に伝播しない場合でも、|b|≒|c|の場合等に、|b|,|c|の大小関係の情報が失われ、IEEE754規格で定義されるRZ(ゼロ方向)、RP(+無限大方向)、RM(−無限大方向)の丸めモードにおいて正しく丸めを行うことができなくなってしまう。
3項入力の浮動小数点演算器に関する従来技術として、特許文献1等に記載された技術が知られている。この従来技術は、Round ビットとStickyビットとの間にギャップビットを設け、Stickyビット同士の加算によるキャリーの上位への伝播を防ぐというものである。しかし、この方法は、前述した正確な結果を出すことができない図15により説明した3項のうち2項で相殺が起きる場合、及び、図16により説明した3項のうち絶対値の大きい2項の演算で桁落ちが起きる場合に、正確な結果を出すことはできない。また、3項のうち2項がシフトによりビットあふれ起こすことにより正確な結果を出すことができない図17により説明した例の場合、丸めモードがRN(最近値)の場合は問題ないが、それ以外の丸めモードの場合には完全に解決できるものではなく、演算過程で無限の精度をもって演算した後丸めを行った場合と同一の結果を得ることができない。
特開平9−204294号公報 Milos D. Ercegovac著 「Digital Arithmetic」 Donald E.Knuth著 「The Art of Computer Programming: Seminumerical Algorithms (Vol2, 3rd Ed)」
前述で説明したように、3項入力の演算の場合、2項演算の方法をそのまま適用しても、浮動小数点加減算で正確な結果を出すことが困難なるという問題点を有している。
本発明の目的は、前述した従来技術の問題点を解決し、3項入力の浮動小数点加減算を正確に行うことが困難なケースであっても、演算過程で無限の精度をもって演算した後丸めを行った場合と同一の結果を得ることができる3項入力の浮動小数点加減算器を提供することにある。
本発明によれば前記目的は、3項入力の浮動小数点加減算器において、3項のうち2項の演算で相殺を起こすことを検出する相殺検出手段と、該相殺検出手段により2項の演算で相殺を起こすことが検出されたとき残りの1項を結果として出力する選択手段と、仮数のビット幅をnとすると、2n+3ビット幅で桁合わせシフトを行い、最下位ビットをStickyビットとする桁合わせ手段と、そのビット幅で3項の加減算を行う加減算手段と、その結果を正規化し、上位からn+3ビット目を新たなStickyビットとして、RN(最近値)モードによる丸めを行う丸め処理手段とを有することにより達成される。
また、前記目的は、3項入力の浮動小数点加減算器において、3項のうち2項の演算で相殺を起こすことを検出する相殺検出手段と、該相殺検出手段により2項の演算で相殺を起こすことが検出されたとき残りの1項を結果として出力する選択手段と、仮数のビット幅をnとすると、2n+4ビット幅で桁合わせシフトを行い、最下位ビットをStickyビットとする桁合わせ手段と、桁合わせを行った結果、3項のうち2項でシフトによりビットあふれを起こす場合を検出するビットあふれ検出手段と、該ビットあふれ検出手段の出力によりビットあふれが検出されたとき、シフト量を指数の大きさが中間の仮数をn+4に、指数が最小の仮数をn+4とこれら2項の指数の差との和とする桁合わせ手段と、そのビット幅で3項の加減算を行う加減算手段と、その結果を正規化し、上位からn+3ビット目を新たなStickyビットとして、RN(最近値)、RZ(ゼロ方向)、RP(+無限大方向)、RM(−無限大方向)モードのいずれか1つの丸めモードによる丸めを行う丸め処理手段とを有することにより達成される。
本発明によれば、3項入力の浮動小数点加減算を、演算過程で無限の精度をもって演算した後丸めを行った場合と同一の結果を得ることができるように行うことができる。
以下、本発明による3項入力の浮動小数点加減算器の実施形態を説明するが、その前に、本発明での解決策を簡単に説明する。なお、以下の説明において、3項入力の第1オペラントをa、第2オペランドをb、第3オペランドをcとする。
(1)3項の内2項の演算で相殺が生じる場合(図15)の解決策
この場合、相殺が起きるケース(a=−b、a=−c、b=−c)を加算前に比較器を用いてチェックすることにより、a=−bの場合に結果をc、a=−cの場合に結果をb、b=−cの場合に結果をaとなるようにすることにより解決することができる。
(2)3項の内絶対値の大きい2項の演算で桁落ちが発生する場合(図16)の解決策
図1は3項のうち絶対値の大きい2項の演算で桁落ちが発生する場合(図16)の解決策を説明する図である。
この場合、各項の仮数部のビット幅をnビット(最上位の1を含む)とすると、加減算のビット幅を2n+3ビット以上持たせることにより解決することができる。これについては、最も多くの桁落ちが発生するケースを考えて説明する。a、bの演算において、桁落ちが発生する場合を考えると、最も多くの桁落ちが発生する場合は、a、bがともに正、a、bで引き算、aの仮数=10000...0、bの仮数=11111...1で、aの指数=1、−bの指数=1の場合である。図1に示すように、a、bの演算で桁落ちが発生すると、結果の有効桁は、bの最下位ビットからnビットとなる。さらに、丸めを行うのに3ビット必要とするため、加減算のビット幅を2n+3ビット以上とすればよいことになる。これにより、丸めも2項演算と同じ方法により行うことができる。
(3)3項のうち2項がシフトによりビットあふれをする場合(図17)の解決策
この場合の解決策は3つ考えられ、それぞれ解決策A、B、Cとして以下に説明する。
解決策A
図2は3項のうち2項がシフトによりビットあふれをする場合の解決策Aを説明する図である。
解決策Aは、加減算ビット幅を2n+4ビットとし、2項がシフトによりビットあふれを起こす場合、指数の大きさが中間の仮数のシフト量をn+4に、最小の仮数のシフト量をn+4とこれら2項の指数の差との和とする解決策である。この場合の例を、|a|>>|b|>|c|として図2により説明する。いま、図2(a)に示すように、単純に指数の差だけb、cをシフトした場合を考える。この場合、b、cの情報は、すべてStickyビットにまとめられてしまい、b、cが異符号の場合には、Stickyビット同士で相殺が起こり、b、cの大小関係が失われてしまう。その結果、RZ(ゼロ方向)、RP(+無限大方向)、RM(−無限大方向)の丸めモードにおいて正しい丸めを行うことができなくなってしまう。
これに対して、2項がシフトによりビットあふれを起こす場合に、指数の大きさが中間の仮数に対するシフト量をn+4に、最小の仮数に対するシフト量をn+4とこれら2項の指数の差との和とするようにすれば、図2(b)に示すように、加減算後、正規化して上位からn+3ビット目を新たなStickyビットとすることにより、結果的に無限の精度を持って演算を行った後、正規化して上位からn+3ビット目を新たなStickyビットとした場合と同一の結果を得ることができ、正しく丸めを行うことが可能になる。
図2(b)に示す例のように、aの有効桁とb、cの有効桁との間のギャップビットが4ビット必要になる理由は、aの有効桁がb、cとの加減算により1桁有効桁が落ちる可能性があり、また、b、cの加減算により1桁桁上がりが起きる可能性があるためであり、ギャップビットが4ビットあることにより、入力がいかなる場合でも丸め前の状態が無限の精度を持って演算を行った後、結果のビット位置から下位3桁目を新たなStickyビットとした場合と同じ結果となるためである。
解決策B
解決策Bは、シフトによりビットあふれを起こす2項の絶対値の大小関係を出し、正しく丸めが行えるようにするという解決策である。演算する前述の記3項のうち絶対値の大きい2項で桁落ちが発生する場合の解決策で加減算のビット幅が2n+3ビットあった場合には、3項のうち2項がシフトによりビットあふれをする場合であふれたビットの情報は中間結果の仮数には影響を与えず、丸めに必要な情報のみが失われることになる。そのため、正しい結果を得るには、ビットあふれを起こす2項の絶対値の大小関係(2項の和の符号)を比較器により求め、それをもとに丸めを行えば解決することができる。これが、解決策Bである。
解決策C
解決策Cは、絶対値の小さい2項を加算前に検出し、その2項について前記3項のうち2項の演算で桁落ちが発生する場合の解決策である2n+3ビット幅でシフトして加減算を行い、その結果に対しては丸めを行わず、残りの1項との加算を2n+3ビット幅で加算を行い、最後に丸めを行うという解決策である。
次に、本発明の実施形態による3項入力の浮動小数点加減算器の具体的な回路例について図面により詳細に説明する。
図3は本発明の第1の実施形態による3項入力の浮動小数点加減算器の構成を示すブロック図である。図3に示す3項入力の浮動小数点加減算器は、前述で(1)、(2)として説明した解決策を採用して構成したものであり、丸めモードがRN(最近値)の場合にのみ演算過程で無限の精度をもって演算した後丸めを行った場合と同一の結果を得ることができるものであるが、丸めモードがRN(最近値)以外の場合には、正確な結果を得ることができない場合が生じる。
図3に示す3項入力の浮動小数点加減算器は、前処理回路100と、桁上げ保存加算器(CSA)101と、桁上げ先見加算器(CLA)102と、正規化回路103と、丸め処理回路104と、指数演算器105とにより構成される。
前処理回路100は、入力される第1〜第3オペランドの指数の大きさが最大の仮数、中間の仮数、最小の仮数に振り分け、指数の大きさが中間の仮数と最小の仮数とをそれぞれ2n+3ビット幅で右シフトして桁合わせを行った仮数と、最大の仮数とを出力すると共に、中間指数として最大の指数を出力する。
桁上げ保存加算器(CSA)101は、前処理回路100からの2n+3ビット幅の前記3項の仮数を2項に減らす演算を行う。また、桁上げ先見加算器(CLA)102は、2項になった仮数の加算を行い、また、加算の結果が負になった場合、それを絶対値表現に直す。その後、正規化回路103は、最上位ビットが1になるように左シフトを行う。次に、丸め処理回路104は、上位からn+3ビット目を新たなStickyビットとして、それよりも下位のビットとの論理和を取り、その後に、RN(最近値)モードによる丸めの処理を行う。丸めのアルゴリズムは、2項加算の場合と全く同一であってよい。指数演算器105は、正規化回路103、丸め処理回路104の結果、及び、中間指数から指数を更新して最終的な指数を出力する。
図4Aは前処理回路100の回路構成を示すブロック図、図4Bは前処理回路100に含まれるセレクタの入力と出力との関係を示す真理値表を示す図である。
前処理回路100は、加減算を実行するための前処理を行うものであり、図4Aに示すように、指数計算器10、セレクタ11、相殺検出器12、符号比較器13、インバータ14〜16、シフタ17、18により構成される。前処理回路100には、それぞれが符号sign、指数ex、仮数man から構成される第1〜第3オペランドa〜cのデータが入力される。
そして、指数計算器10は、各入力a〜cの指数の差を計算する6組の演算器を備えて、計算した指数差を出力する。相殺検出器12は、比較器と2つのゲート回路との組を3組備えて、これらにより3項のうち2項の演算で相殺が起きる場合を検出する。
セレクタ11は、指数計算器10で求めた指数の差の情報と相殺検出器12が3項のうち2項の演算で相殺が検出されたか否かを示す情報とにより制御される。そして、セレクタ11は、指数計算器10で求めた指数の差から指数の大きさが最大の仮数large_man 、中間の仮数medium_man、最小の仮数small_man をそれぞれの出力に振り分け、また、最大指数を持つ項以外の2項の仮数を右シフトするために、シフト量となる最大の指数との差(large_ex-small_ex、large_ex-medium_ex)を出力すると共に、中間指数として最大の指数large_exを出力する。
また、セレクタ11は、相殺検出器12が3項のうち2項の演算で相殺されることを検出した場合、相殺を起こす2項の仮数を0として出力するようにし、中間指数として、残りの1項の指数を出力するようにする。
前述したような機能を有するセレクタ11における入力と出力との関係を表す真理値表を図4Bに示しているが、この真理値表についての説明は省略する。
符号比較器13は、3項の符号を比較して各項の仮数に対して2の補数をとるか否かを判断する。2の補数をとるには、仮数のビットを反転して1を足す必要がある。通常1を足す処理は、加算器の最下位ビットのキャリーインを利用する。3項入力の場合、この1を足す処理が負担となると考えられるが、2の補数をとる項は、たかだか1項で充分であり、3項のうち2項が負となる場合、正の項に対して2の補数をとり、加算処理後、最後に結果の符号を反転させればよい。また、3項の全てが負の場合、全ての項で2の補数をとらずに加算処理後、最後に結果の符号を反転させればよい。このようにすることにより、2の補数をとる際の1を足す処理をたかだか1回にすることができる。符号比較器13は、どの項に対して2の補数をとるかを判断するものである。
インバータ14、15、16は、前述した符号比較器13による判断結果の情報に制御されて、各仮数の補数をとるためのビット反転を行う。また、シフタ17、18は、指数の大きさが中間の仮数と最小の仮数とについて前述により決定されたシフト量だけ右シフトする。このときのシフトは、2n+3ビット幅で行い、最下位のビットは、Stickyビットとするためあふれたビットとの論理和となる。但し、2の補数をとるためにビット反転した項については論理積となる。
図5は図4Aに示した前処理回路100を利用して、積和演算と加減算との両方を行うことを可能にした演算回路の構成を示すブロック図である。
3項入力の積和演算器は、通常よく知られているように、シフト回路301と、乗算アレイ302と、桁上げ保存加算器(CSA)303と、桁上げ先見加算器(CLA)304と、正規化回路305と、丸め処理回路306とにより構成されている。この積和演算器を構成する桁上げ保存加算器(CSA)303と、桁上げ先見加算器(CLA)304と、正規化回路305と、丸め処理回路306により構成される部分は、図3により説明した本発明の第1の実施形態における前処理回路101を除いた部分の構成と基本的に同一である。
このため、図5に示すように、3項入力の積和演算器の桁上げ保存加算器(CSA)303の前段に図4Aにより説明した本発明の第1の実施形態における前処理回路101を接続することにより、3項入力の積和演算と3項入力の加減算との両方を行うことを可能にした演算回路を構成することができる。これにより、積和演算と加減算との両方を必要とする場合に、回路を構成する回路部品の量を低減した安価な演算回路を得ることができる。
図6は本発明の第2の実施形態による3項入力の浮動小数点加減算器の構成を示すブロック図である。図6に示す3項入力の浮動小数点加減算器は、前述で(1)、(2)説明した解決策を採用し、また、3項のうち2項がシフトによりビットあふれをする場合の解決方法として解決策Aを採用して、全ての課題を解決することができるようにしたものである。この本発明の第2の実施形態によれば、4つ全ての丸めモードに対して演算過程で無限の精度をもって演算した後丸めを行った場合と同一の結果を得ることができる。
図6に示す3項入力の浮動小数点加減算器は、前処理回路150と、桁上げ保存加算器(CSA)151と、桁上げ先見加算器(CLA)152と、正規化回路153と、丸め処理回路154と、指数演算器155とにより構成される。この3項入力の浮動小数点加減算器の前処理回路150以外の部分の構成及び機能は、演算ビット幅が2n+4とされている点除いて、図3により説明した第1の実施形態の場合と同様である。
すなわち、前処理回路150は、入力される第1〜第3オペランドの指数の大きさが最大の仮数、中間の仮数、最小の仮数に振り分け、指数の大きさが中間の仮数と最小の仮数とをそれぞれ2n+4ビット幅で右シフトして桁合わせを行った仮数と、最大の仮数とを出力すると共に、中間指数として最大の指数を出力する。
桁上げ保存加算器(CSA)151は、前処理回路100からの2n+4ビット幅の前記3項の仮数を2項に減らす演算を行う。また、桁上げ先見加算器(CLA)152は、2項になった仮数の加算を行い、また、加算の結果が負になった場合、それを絶対値表現に直す。その後、正規化回路153は、最上位ビットが1になるように左シフトを行う。次に、丸め処理回路154は、上位からn+3ビット目を新たなStickyビットとして、それよりも下位のビットとの論理和を取り、その後に、RN(最近値)、RZ(ゼロ方向)、RP(+無限大方向)、RM(−無限大方向)モードのいずれか1つの丸めモードによる丸めの処理を行う。丸めのアルゴリズムは、2項加算の場合と全く同一であってよい。指数演算器155は、正規化回路153、丸め処理回路154の結果、及び、中間指数から指数を更新して最終的な指数を出力する。
図7Aは前処理回路150の回路構成を示すブロック図、図7Bは前処理回路150に含まれるセレクタの入力と出力との関係を示す真理値表を示す図である。
前処理回路150は、加減算を実行するための前処理を行うものであり、図7Aに示すように、指数計算器200、セレクタ201、相殺検出器203、符号比較器213、インバータ212、209、205、シフタ211、206、加算器204、比較器208、セレクタ210、207により構成される。前処理回路150には、それぞれが符号sign、指数ex、仮数man から構成される第1〜第3オペランドa〜cのデータが入力される。
そして、指数計算器200は、各入力a〜cの指数の差を計算する6組の演算器を備えて、計算した指数差を出力する。相殺検出器203は、比較器と2つのゲート回路との組を3組備えて、これらにより3項のうち2項の演算で相殺が起きる場合を検出する。これらの指数計算器200、相殺検出器203の構成及び機能は、図4Aに示した指数計算器10、相殺検出器12と同一である。
セレクタ201は、指数計算器200で求めた指数の差の情報と相殺検出器203が3項のうち2項の演算で相殺が検出されたか否かを示す情報とにより制御される。そして、セレクタ201は、指数計算器200で求めた指数の差から指数の大きさが最大の仮数large_man 、中間の仮数medium_man、最小の仮数small_man をそれぞれの出力に振り分け、また、最大指数を持つ項以外の2項の仮数を右シフトするために、シフト量となる指数の差(medium_ex-small_ex、large_ex-medium_ex)を出力すると共に、中間指数として最大の指数large_exを出力する。
また、セレクタ201は、相殺検出器203が3項のうち2項の演算で相殺されることを検出した場合、相殺を起こす2項の仮数を0として出力するようにし、中間指数として、残りの1項の指数を出力するようにする。
前述したような機能を有するセレクタ201における入力と出力との関係を表す真理値表を図7Bに示しているが、この真理値表についての説明は省略する。
符号比較213は、3項の符号を比較して各項の仮数に対して2の補数をとるか否かを判断する。2の補数をとるには、仮数のビットを反転して1を足す必要がある。通常1を足す処理は、加算器の最下位ビットのキャリーインを利用する。3項入力の場合、この1を足す処理が負担となると考えられるが、2の補数をとる項は、たかだか1項で充分であり、3項のうち2項が負となる場合、正の項に対して2の補数をとり、加算処理後、最後に結果の符号を反転させればよい。また、3項の全てが負の場合、全ての項で2の補数をとらずに加算処理後、最後に結果の符号を反転させればよい。このようにすることにより、2の補数をとる際の1を足す処理をたかだか1回にすることができる。符号比較器213は、どの項に対して2の補数をとるかを判断するものである。
インバータ205、209、212は、前述した符号比較器213による判断結果の情報に制御されて、各仮数の補数をとるためのビット反転を行う。比較器208は、最大の指数と中間の指数との差が、n+5以上であることを検出する。ここで、nは仮数のビット幅とする。前述の差が、n+5以上であるという条件が成立した場合、3項のうち2項がシフトによりビットあふれを起こすことになる。セレクタ210は、指数が中間の大きさの仮数のシフト量を決定する。すなわち、セレクタ210は、3項のうち2項がシフトによりビットあふれをする場合、n+4を出力し、それに当てはまらない場合、最大の指数との差を出力する。この出力が指数の大きさが中間の仮数のシフト量となる。
加算器204は、中間の指数と最小の指数との差とn+4とを加算する。この加算結果は、3項のうち2項がシフトによりビットあふれをする場合の指数の大きさが最小の仮数のシフト量となる。セレクタ207は、指数の大きさが最小の仮数のシフト量を決定する。すなわち、セレクタ207は、3項のうち2項がシフトによりビットあふれをする場合、前述の加算器204の出力を選択し、それに当てはまらない場合、最大の指数と最小の指数との差を選択する。シフタ206、211は、指数の大きさが中間の仮数と最小の仮数とについて前述により決定されたシフト量だけ右シフトする。このときのシフトは、2n+4ビット幅で行い最下位のビットはStickyビットとなるためあふれたビットとの論理和となる。但し、2の補数をとるためにビット反転した項については論理積となる。
図8は本発明の第3の実施形態による3項入力の浮動小数点加減算器の構成を示すブロック図である。図8に示す3項入力の浮動小数点加減算器は、前述で(1)、(2)説明した解決策を採用し、また、3項のうち2項がシフトによりビットあふれをする場合の解決方法として解決策Bを採用して、全ての課題を解決することができるようにしたものである。この本発明の第3の実施形態によれば、4つ全ての丸めモードに対して演算過程で無限の精度をもって演算した後丸めを行った場合と同一の結果を得ることができる。
図8に示す3項入力の浮動小数点加減算器は、前処理回路500と、桁上げ保存加算器(CSA)501と、桁上げ先見加算器(CLA)502と、正規化回路503と、丸め処理回路504と、指数演算器506と、セレクタ506とにより構成される。
前処理回路500は、入力される第1〜第3オペランドの指数の大きさが最大の仮数、中間の仮数、最小の仮数に振り分け、中間の仮数と最小の仮数とをそれぞれ2n+3ビット幅で右シフトして桁合わせを行った仮数と、最大の仮数とを出力すると共に、中間指数として最大の指数を出力する。また、前処理回路500は、最大の指数と中間の指数との差が、n+4以上であることを示す信号と、前処理回路500内で行われた丸めの結果の信号とを出力して、セレクタ506に与える。
桁上げ保存加算器(CSA)501は、前処理回路100からの2n+3ビット幅の前記3項の仮数を2項に減らす演算を行う。また、桁上げ先見加算器(CLA)502は、2項になった仮数の加算を行い、また、加算の結果が負になった場合、それを絶対値表現に直す。その後、正規化回路503は、最上位ビットが1になるように左シフトを行う。次に、丸め処理回路504は、上位からn+3ビット目を新たなStickyビットとして、それよりも下位のビットとの論理和を取り、その後に、RN(最近値)、RZ(ゼロ方向)、RP(+無限大方向)、RM(−無限大方向)モードのいずれか1つの丸めモードによる丸めの処理を行う。丸めのアルゴリズムは、2項加算の場合と全く同一であってよい。指数演算器505は、正規化回路503、丸め処理回路504の結果、及び、中間指数から指数を更新して最終的な指数を出力する。また、セレクタ506は、3項のうち2項がシフトによりビットあふれを起こす場合の仮数結果と、それ以外の場合の仮数結果とを選択して最終結果を出力する。
図9Aは前処理回路500の回路構成を示すブロック図、図9Bは前処理回路500に含まれるセレクタの入力と出力との関係を示す真理値表を示す図、図9Cは前処理回路500に含まれる丸め処理回路の処理を説明する図である。
前処理回路500は、加減算を実行するための前処理を行うものであり、図9Aに示すように、指数計算器600、セレクタ601、相殺検出器603、符号比較器610、インバータ605、606、608、シフタ607、609、比較器611、612、丸め処理回路613、符号決定回路614により構成される。前処理回路500には、それぞれが符号sign、指数ex、仮数man から構成される第1〜第3オペランドa〜cのデータが入力される。
そして、指数計算器600は、各入力a〜cの指数の差を計算する6組の演算器を備えて、計算した指数差を出力する。相殺検出器603は、比較器と2つのゲート回路との組を3組備えて、これらにより3項のうち2項の演算で相殺が起きる場合を検出する。これらの指数計算器600、相殺検出器603の構成及び機能は、図4Aに示した指数計算器10、相殺検出器12と同一である。
セレクタ601は、指数計算器600で求めた指数の差の情報と相殺検出器603が3項のうち2項の演算で相殺が検出されたか否かを示す情報とにより制御される。そして、セレクタ601は、指数計算器600で求めた指数の差から指数の大きさが最大の仮数large_man 、中間の仮数medium_man、最小の仮数small_man をそれぞれの出力に振り分け、また、最大指数を持つ項以外の2項の仮数を右シフトするために、シフト量となる最大の指数との差(large_ex-small_ex、large_ex-medium_ex)を出力すると共に、中間指数として最大の指数large_exを出力する。
また、セレクタ601は、相殺検出器603が3項のうち2項の演算で相殺されることを検出した場合、相殺を起こす2項の仮数を0として出力するようにし、中間指数として、残りの1項の指数を出力するようにする。
前述したような機能を有するセレクタ601における入力と出力との関係を表す真理値表を図9Bに示しているが、この真理値表についての説明は省略する。
符号比較610は、3項の符号を比較して各項の仮数に対して2の補数をとるか否かを判断する。2の補数をとるには、仮数のビットを反転して1を足す必要がある。通常1を足す処理は、加算器の最下位ビットのキャリーインを利用する。3項入力の場合、この1を足す処理が負担となると考えられるが、2の補数をとる項は、たかだか1項で充分であり、3項のうち2項が負となる場合、正の項に対して2の補数をとり、加算処理後、最後に結果の符号を反転させればよい。また、3項の全てが負の場合、全ての項で2の補数をとらずに加算処理後、最後に結果の符号を反転させればよい。このようにすることにより、2の補数をとる際の1を足す処理をたかだか1回にすることができる。符号比較器610は、どの項に対して2の補数をとるかを判断するものである。
インバータ605、606、608は、前述した符号比較器610による判断結果の情報に制御されて、各仮数の補数をとるためのビット反転を行う。比較器604は、最大の指数と中間の指数との差が、n+4以上であることを検出する。ここで、nは仮数のビット幅とする。前述の指数の差が、n+4以上であるという条件が成立した場合、3項のうち2項がシフトによりビットあふれを起こすことになる。指数の差がn+4以上であるという条件が成立した場合、比較器611、612は、シフトによりビットあふれを起こす2項についての大小関係を判断する。符号決定回路614は、比較器611、612の判断結果をもとに、その2項の和の符号を決定する。丸め処理回路613は、決定された2項の和の符号をもとに丸め処理を行う。このときの丸め方法を図9Cに示している。前述の比較器604の検出結果と丸め処理回路603の出力とは、セレクタ506に与えられ、丸め処理回路603の出力、丸め処理回路504の出力の一方がセレクタ506から最終結果として出力される。
シフタ607、609は、指数の大きさが中間の仮数と最小の仮数とについて前述により決定されたシフト量だけ右シフトする。このときのシフトは2n+3ビット幅で行い、最下位のビットはStickyビットとなるためあふれたビットとの論理和となる。但し、2の補数をとるためにビット反転した項については論理積となる。
図10は本発明の第4の実施形態による3項入力の浮動小数点加減算器の構成を示すブロック図である。図10に示す3項入力の浮動小数点加減算器は、前述で(1)、(2)説明した解決策を採用し、また、3項のうち2項がシフトによりビットあふれをする場合の解決方法として解決策Cを採用して、全ての課題を解決することができるようにしたものである。この本発明の第4の実施形態によれば、4つ全ての丸めモードに対して演算過程で無限の精度をもって演算した後丸めを行った場合と同一の結果を得ることができる。
図10に示す3項入力の浮動小数点加減算器は、前処理回路800と、桁合わせ回路801と、桁上げ先見加算器(CLA)802と、正規化回路803と、桁合わせ回路804と、桁上げ先見加算器(CLA)805と、正規化回路806と、丸め処理回路807と、指数演算器808〜809とにより構成される。
前処理回路500は、入力される第1〜第3オペランドの指数の大きさが最大の仮数、中間の仮数、最小の仮数に振り分けて各仮数を出力すると共に、最大の指数と、中間の指数と、中間の指数と最小の指数との差とを出力する。
桁合わせ回路801は、指数の大きさが中間の仮数と最小の仮数との加算を行うための桁合わせを行う。前述の2項の指数差だけ指数の大きさが最小の仮数を右シフトする。このときのシフトは2n+3ビット幅で行い最下位のビットはStickyビットとなるためあふれたビットとの論理和となる。但し、2の補数をとるためにビット反転した項については論理積となる。
桁上げ先見加算器(CLA)802は、2項の仮数の加算を行い、正規化回路803は、最上位ビットが1になるように左シフトを行う。この際、指数演算器808は、中間指数の更新を行う。なお、この段階では丸めは行わない。指数演算器809は、前述で更新された中間指数と最大の指数との差を求める。桁合わせ回路804は、前述の加算結果と指数が最大の仮数との加算を行うための桁合わせを行う。前述の指数差だけ指数の大きさが小さいほうの仮数を右シフトする。この場合も、シフトは2n+3ビット幅で行い最下位のビットはStickyビットとなるためあふれたビットとの論理和となる。桁上げ先見加算器(CLA)805は、2項の仮数の加算を行う。そして、正規化回路806は、最上位ビットが1になるように左シフトを行う。丸め処理回路807は、上位からn+3ビット目を新たなStickyビットとしてそれよりも下位のビットとの論理和をとる。その後、丸め処理回路807は、RN(最近値)、RZ(ゼロ方向)、RP(+無限大方向)、RM(−無限大方向)モードのいずれか1つの丸めモードによる丸めの処理を行い、最終的な仮数を出す。このときの丸めのアルゴリズムは、2項加算の場合と全く同じでよい。指数演算器810は、正規化回路806、丸め処理回路807の結果から指数を更新して最終的な指数を出す。
図11Aは前処理回路800の回路構成を示すブロック図、図11Bは前処理回路800に含まれるセレクタの入力と出力との関係を示す真理値表を示す図である。
前処理回路800は、加減算を実行するための前処理を行うものであり、図11Aに示すように、指数計算器900、セレクタ901、相殺検出器903、符号比較器910、インバータ905、906、908により構成される。前処理回路800には、それぞれが符号sign、指数ex、仮数man から構成される第1〜第3オペランドa〜cのデータが入力される。
そして、指数計算器900は、各入力a〜cの指数の差を計算する6組の演算器を備えて、計算した指数差を出力する。相殺検出器903は、比較器と2つのゲート回路との組を3組備えて、これらにより3項のうち2項の演算で相殺が起きる場合を検出する。これらの指数計算器900、相殺検出器903の構成及び機能は、図4Aに示した指数計算器10、相殺検出器12と同一である。
セレクタ901は、指数計算器900で求めた指数の差の情報と相殺検出器603が3項のうち2項の演算で相殺が検出されたか否かを示す情報とにより制御される。そして、セレクタ901は、指数計算器900で求めた指数の差から指数の大きさが最大の仮数large_man 、中間の仮数medium_man、最小の仮数small_man をそれぞれの出力に振り分け、また、はじめに最大以外の2項の仮数を加算するためそれらの指数の差を出力すると共に、最大の指数、中間の指数、及び、中間の指数と最小の指数との差(medium_ex-small_ex)を出力するまた、セレクタ901は、相殺検出回路903が3項のうち2項の演算で相殺を起こすことを検出した場合、相殺を起こす2項の仮数を0として出力するようにして、中間指数は残りの1項の指数を出力するようにする。
前述したような機能を有するセレクタ901における入力と出力との関係を表す真理値表を図11Bに示しているが、この真理値表についての説明は省略する。
符号比較910は、3項の符号を比較して各項の仮数に対して2の補数をとるか否かを判断する。2の補数をとるには、仮数のビットを反転して1を足す必要がある。通常1を足す処理は、加算器の最下位ビットのキャリーインを利用する。3項入力の場合、この1を足す処理が負担となると考えられるが、2の補数をとる項は、たかだか1項で充分であり、3項のうち2項が負となる場合、正の項に対して2の補数をとり、加算処理後、最後に結果の符号を反転させればよい。また、3項の全てが負の場合、全ての項で2の補数をとらずに加算処理後、最後に結果の符号を反転させればよい。このようにすることにより、2の補数をとる際の1を足す処理をたかだか1回にすることができる。符号比較器910は、どの項に対して2の補数をとるかを判断するものである。そして、インバータ905、906、908は、前述した符号比較器610による判断結果の情報に制御されて、各仮数の補数をとるためのビット反転を行う。
浮動小数点演算を必要とするマイクロプロセッサに組み込み、前記のような加算処理を多用する演算や多倍長精度演算に利用できる。
3項のうち絶対値の大きい2項で桁落ちが発生する場合(図16)の解決策を説明する図である。 3項のうち2項がシフトによりビットあふれをする場合の解決策Aを説明する図である。 本発明の第1の実施形態による3項入力の浮動小数点加減算器の構成を示すブロック図である。 図3の前処理回路の回路構成を示すブロック図である。 図3の前処理回路に含まれるセレクタの入力と出力との関係を示す真理値表を示す図である。 図4Aに示した前処理回路を利用して、積和演算と加減算との両方を行うことを可能にした演算回路の構成を示すブロック図である。 本発明の第2の実施形態による3項入力の浮動小数点加減算器の構成を示すブロック図である。 図6の前処理回路の回路構成を示すブロック図である。 図6の前処理回路に含まれるセレクタの入力と出力との関係を示す真理値表を示す図である。 本発明の第3の実施形態による3項入力の浮動小数点加減算器の構成を示すブロック図である。 図8の前処理回路の回路構成を示すブロック図である。 図8の前処理回路に含まれるセレクタの入力と出力との関係を示す真理値表を示す図である。 図8の前処理回路に含まれる丸め処理回路の処理を説明する図である。 本発明の第4の実施形態による3項入力の浮動小数点加減算器の構成を示すブロック図である。 図10の前処理回路の回路構成を示すブロック図である。 図10の前処理回路に含まれるセレクタの入力と出力との関係を示す真理値表を示す図である。 標準規格であるIEEE754に規定された2項演算の演算過程の仮数の状態を説明する図である。 IEEE規格に従った丸めモードの方法を説明する図である。 浮動小数点数x、yの誤差のない和x+yを求めるKnuth の公式による2項入力演算と、3項入力の演算とした場合の演算との様子を示す図である。 3項の内2項の演算で相殺が生じることにより正確な結果を出すことができない例を説明する図である。 3項のうち絶対値の大きい2項で桁落ちが起きるために正確な結果を出すことができない例を説明する図である。 3項のうち2項がシフトによりビットあふれを起こすために正確な結果を出すことができない例を説明する図である。
符号の説明
10、200、600、900 指数計算器10
11、201、207、210、506、601、901 セレクタ
12、203、603、903 相殺検出器
13、213、610、910 符号比較器
14〜16、205、209、212、605〜608、905、906、908 インバータ
17、18、206、200、607、609 シフタ
100、150、500、800 前処理回路
101、151、501 桁上げ保存加算器(CSA)
102、152、502、802、805 桁上げ先見加算器(CLA)
103、153、503、803、806 正規化回路
104、154、504、613、807 丸め処理回路
105、155、506、808〜809 指数演算器
204 加算器
208、611、612 比較器
614 符号決定回路
801、804 桁合わせ回路

Claims (4)

  1. 3項入力の浮動小数点加減算器において、3項のうち2項の演算で相殺を起こすことを検出する相殺検出手段と、該相殺検出手段により2項の演算で相殺を起こすことが検出されたとき残りの1項を結果として出力する選択手段と、仮数のビット幅をnとすると、2n+3ビット幅で桁合わせシフトを行い、最下位ビットをStickyビットとする桁合わせ手段と、そのビット幅で3項の加減算を行う加減算手段と、その結果を正規化し、上位からn+3ビット目を新たなStickyビットとして、RN(最近値)モードによる丸めを行う丸め処理手段とを有すること特徴とする3項入力の浮動小数点加減算器。
  2. 3項入力の浮動小数点加減算器において、3項のうち2項の演算で相殺を起こすことを検出する相殺検出手段と、該相殺検出手段により2項の演算で相殺を起こすことが検出されたとき残りの1項を結果として出力する選択手段と、仮数のビット幅をnとすると、2n+4ビット幅で桁合わせシフトを行い、最下位ビットをStickyビットとする桁合わせ手段と、桁合わせを行った結果、3項のうち2項でシフトによりビットあふれを起こす場合を検出するビットあふれ検出手段と、該ビットあふれ検出手段の出力によりビットあふれが検出されたとき、シフト量を指数の大きさが中間の仮数をn+4に、指数が最小の仮数をn+4とこれら2項の指数の差との和とする桁合わせ手段と、そのビット幅で3項の加減算を行う加減算手段と、その結果を正規化し、上位からn+3ビット目を新たなStickyビットとして、RN(最近値)、RZ(ゼロ方向)、RP(+無限大方向)、RM(−無限大方向)モードのいずれか1つの丸めモードによる丸めを行う丸め処理手段とを有することを特徴とする3項入力の浮動小数点加減算器。
  3. 3項入力の浮動小数点加減算器において、3項のうち2項の演算で相殺を起こすことを検出する相殺検出手段と、該相殺検出手段により2項の演算で相殺を起こすことが検出されたとき残りの1項を結果として出力する選択手段と、仮数のビット幅をnとすると、2n+3ビット幅で桁合わせシフトを行い、最下位ビットをStickyビットとする桁合わせ手段と、そのビット幅で3項の加減算を行う加減算手段と、その結果を正規化し、上位からn+3ビット目を新たなStickyビットとして、RN(最近値)、RZ(ゼロ方向)、RP(+無限大方向)、RM(−無限大方向)モードのいずれか1つの丸めモードによる丸めを行う第1の丸め処理手段と、3項のうち2項でシフトによりビットあふれを起こす場合を検出するビットあふれ検出手段と、該ビットあふれ検出手段の出力によりビットあふれが検出されたとき、その2項の絶対値の大小関係を検出する大小関係検出手段と、2項の和の符号を求める符号決定手段と、RN(最近値)、RZ(ゼロ方向)、RP(+無限大方向)、RM(−無限大方向)モードのいずれか1つの丸めモードによる丸めを行う第2の丸め処理手段と、前記第1、第2の丸め処理手段からの結果を選択する選択手段とを有することを特徴とする3項入力の浮動小数点加減算器。
  4. 3項入力の浮動小数点加減算器において、3項のうち2項の演算で相殺を起こすことを検出する相殺検出手段と、該相殺検出手段により2項の演算で相殺を起こすことが検出されたとき残りの1項を結果として出力する選択手段と、仮数のビット幅をnとすると、3項のうち指数の小さい2項について、2n+3ビット幅で桁合わせ、加減算、正規化を行い、丸めを行うことなく、残りの1項と2n+3ビット幅で桁合わせ、加減算を行う演算手段と、その結果を正規化し、上位からn+3ビット目を新たなStickyビットとして、RN(最近値)、RZ(ゼロ方向)、RP(+無限大方向)、RM(−無限大方向)モードのいずれか1つの丸めモードによる丸めを行う丸め処理手段とを有することを特徴とする3項入力の浮動小数点加減算器。
JP2006337252A 2006-12-14 2006-12-14 3項入力の浮動小数点加減算器 Expired - Fee Related JP4388543B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2006337252A JP4388543B2 (ja) 2006-12-14 2006-12-14 3項入力の浮動小数点加減算器
US11/955,571 US8185570B2 (en) 2006-12-14 2007-12-13 Three-term input floating-point adder-subtractor

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006337252A JP4388543B2 (ja) 2006-12-14 2006-12-14 3項入力の浮動小数点加減算器

Publications (2)

Publication Number Publication Date
JP2008152360A JP2008152360A (ja) 2008-07-03
JP4388543B2 true JP4388543B2 (ja) 2009-12-24

Family

ID=39654500

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006337252A Expired - Fee Related JP4388543B2 (ja) 2006-12-14 2006-12-14 3項入力の浮動小数点加減算器

Country Status (2)

Country Link
US (1) US8185570B2 (ja)
JP (1) JP4388543B2 (ja)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9405728B2 (en) 2013-09-05 2016-08-02 Altera Corporation Floating-point adder circuitry
CN106030510A (zh) * 2014-03-26 2016-10-12 英特尔公司 三源操作数浮点加法处理器、方法、系统和指令
US10489152B2 (en) * 2016-01-28 2019-11-26 International Business Machines Corporation Stochastic rounding floating-point add instruction using entropy from a register
US10671347B2 (en) 2016-01-28 2020-06-02 International Business Machines Corporation Stochastic rounding floating-point multiply instruction using entropy from a register
US20180121168A1 (en) * 2016-10-27 2018-05-03 Altera Corporation Denormalization in multi-precision floating-point arithmetic circuitry
US10534578B1 (en) 2018-08-27 2020-01-14 Google Llc Multi-input floating-point adder
US10514891B1 (en) 2019-05-24 2019-12-24 Google Llc Multi-input floating-point adder
GB2581542A (en) * 2019-07-19 2020-08-26 Imagination Tech Ltd Apparatus and method for processing floating-point numbers
GB2581543B (en) 2019-07-19 2021-03-03 Imagination Tech Ltd Apparatus and method for processing floating-point numbers
CN112463113B (zh) * 2020-12-02 2021-11-23 中国电子科技集团公司第五十八研究所 浮点加法单元
RU2770798C1 (ru) * 2021-04-02 2022-04-21 федеральное государственное бюджетное образовательное учреждение высшего образования "Ульяновский государственный технический университет" ВЫЧИТАТЕЛЬ ПО МОДУЛЮ q

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS60140428A (ja) * 1983-12-28 1985-07-25 Hitachi Ltd 除算装置
JPS61166628A (ja) * 1985-01-18 1986-07-28 Hitachi Ltd 除算装置
EP0478731A4 (en) * 1990-04-04 1993-09-22 International Business Machines Corporation Early scism alu status determination apparatus
US5359548A (en) * 1992-04-15 1994-10-25 Fujitsu Limited Floating-point arithmetic system having multiple-input addition and subtraction means
JP2747267B2 (ja) 1996-01-29 1998-05-06 甲府日本電気株式会社 3入力浮動小数点加算装置
US5954790A (en) * 1996-10-17 1999-09-21 Samsung Electronics Company, Ltd. Method and apparatus for parallel prediction and computation of massive cancellation in floating point subtraction
US5880984A (en) * 1997-01-13 1999-03-09 International Business Machines Corporation Method and apparatus for performing high-precision multiply-add calculations using independent multiply and add instruments
JP3544846B2 (ja) * 1997-02-13 2004-07-21 株式会社東芝 論理回路及び浮動小数点演算装置
US6298367B1 (en) * 1998-04-06 2001-10-02 Advanced Micro Devices, Inc. Floating point addition pipeline including extreme value, comparison and accumulate functions
US6571267B1 (en) * 1999-03-10 2003-05-27 Kabushiki Kaisha Toshiba Floating point addition/subtraction execution unit
US7228325B2 (en) * 2000-08-25 2007-06-05 Pentomics, Inc. Bypassable adder
KR100465371B1 (ko) * 2001-01-26 2005-01-13 학교법인연세대학교 덧셈 및 반올림 연산을 동시에 수행하는 부동 소수점alu 연산 장치
US6963896B2 (en) * 2001-07-31 2005-11-08 Pasternak Solutions Llc Method and system to implement an improved floating point adder with integrated adding and rounding
JP3845009B2 (ja) * 2001-12-28 2006-11-15 富士通株式会社 積和演算装置、及び積和演算方法
US7373369B2 (en) * 2003-06-05 2008-05-13 International Business Machines Corporation Advanced execution of extended floating-point add operations in a narrow dataflow
US7546328B2 (en) * 2004-08-31 2009-06-09 Wisconsin Alumni Research Foundation Decimal floating-point adder
US7428566B2 (en) * 2004-11-10 2008-09-23 Nvidia Corporation Multipurpose functional unit with multiply-add and format conversion pipeline
US7367001B2 (en) * 2004-12-02 2008-04-29 International Business Machines Corporation Method, system and computer program product for verification of digital designs using case-splitting via constrained internal signals
US7433911B2 (en) * 2004-12-21 2008-10-07 Arm Limited Data processing apparatus and method for performing floating point addition

Also Published As

Publication number Publication date
US20080215660A1 (en) 2008-09-04
US8185570B2 (en) 2012-05-22
JP2008152360A (ja) 2008-07-03

Similar Documents

Publication Publication Date Title
JP4388543B2 (ja) 3項入力の浮動小数点加減算器
JP2508912B2 (ja) 浮動小数点加算装置
JP4500358B2 (ja) 演算処理装置および演算処理方法
US8626813B1 (en) Dual-path fused floating-point two-term dot product unit
US5010508A (en) Prenormalization for a floating-point adder
US5148386A (en) Adder-subtracter for signed absolute values
KR100203468B1 (ko) 부동소수점수를 위한 산술연산장치
US10585972B2 (en) Apparatus for performing modal interval calculations based on decoration configuration
US20070050434A1 (en) Data processing apparatus and method for normalizing a data value
US6947962B2 (en) Overflow prediction algorithm and logic for high speed arithmetic units
JPH10289096A (ja) 論理回路及び浮動小数点演算装置
JP4439060B2 (ja) 浮動小数点加算器
EP1282034A2 (en) Elimination of rounding step in the short path of a floating point adder
JP2517064B2 (ja) 非正規化数の処理方式
JP3257278B2 (ja) 冗長なシフト数予測とシフト誤り補正を用いた正規化装置
JPH0731591B2 (ja) 先行1検出回路および浮動小数点加減算装置
JP3187402B2 (ja) 浮動小数点データ加減算回路
JP2856792B2 (ja) 浮動小数点数演算装置
JP2555135B2 (ja) 演算回路
JP3174974B2 (ja) 浮動小数点演算装置および方法
JPH0635671A (ja) 浮動小数点加減算装置
JP3124286B2 (ja) 浮動小数点数演算装置
JPH113210A (ja) 3入力比較器、並びにこれを用いた飽和演算装置およびその演算方法
JPH1040078A (ja) 先行0、1数予測回路、浮動小数点演算装置、マイクロプロセッサおよび情報処理装置
JP3100868B2 (ja) 浮動小数点数のための算術演算装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20090129

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20090909

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: 20090915

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20091002

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20121009

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20121009

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20131009

Year of fee payment: 4

LAPS Cancellation because of no payment of annual fees