JPWO2008096446A1 - 演算処理装置、情報処理装置、および演算方法 - Google Patents

演算処理装置、情報処理装置、および演算方法 Download PDF

Info

Publication number
JPWO2008096446A1
JPWO2008096446A1 JP2008556965A JP2008556965A JPWO2008096446A1 JP WO2008096446 A1 JPWO2008096446 A1 JP WO2008096446A1 JP 2008556965 A JP2008556965 A JP 2008556965A JP 2008556965 A JP2008556965 A JP 2008556965A JP WO2008096446 A1 JPWO2008096446 A1 JP WO2008096446A1
Authority
JP
Japan
Prior art keywords
result
shift amount
shift
floating
normalization
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
Application number
JP2008556965A
Other languages
English (en)
Other versions
JP4806453B2 (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.)
Fujitsu Ltd
Original Assignee
Fujitsu 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 Fujitsu Ltd filed Critical Fujitsu Ltd
Publication of JPWO2008096446A1 publication Critical patent/JPWO2008096446A1/ja
Application granted granted Critical
Publication of JP4806453B2 publication Critical patent/JP4806453B2/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/499Denomination or exception handling, e.g. rounding or overflow
    • G06F7/49942Significance control
    • G06F7/49947Rounding
    • 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/49905Exception handling
    • G06F7/4991Overflow or underflow
    • G06F7/49915Mantissa overflow or underflow in handling floating-point numbers

Landscapes

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

Abstract

浮動小数点数の丸め処理に伴うキャリーアウトの発生を迅速に決定し、演算の高速化を図る。この課題を解決するため、LZ予測器(130)は、絶対値加算器(120)による絶対値加算の演算結果から左シフト量を求め、左シフタ(140)および予測部(160)へ出力する。左シフタ(140)は、左シフト量だけ絶対値加算結果を左シフトし、正規化を行なう。予測部(160)は、領域1および領域2を構成する4ビット単位の各ブロックが、正規化後に丸め処理領域内に含まれるか否かを予測し、丸め処理領域内に含まれるビットすべてが1であるか否かを示す予測結果を出力する。CO検出部(170)は、予測部(160)による予測結果と左シフタ(140)による正規化結果の一部のビットとを用いて、丸め処理部(150)における丸め処理時のキャリーアウトの発生を検出し、キャリーアウトが発生する場合には1を出力する。

Description

本発明は、演算結果の丸め処理の際に、演算結果に対して1を増分することにより、キャリーアウトが発生するか否かを出力する演算処理装置、情報処理装置、および演算方法に関し、特に、浮動小数点数の丸め処理に伴うキャリーアウトの発生を迅速に決定し、演算の高速化を図ることができる演算処理装置、情報処理装置、および演算方法に関する。
従来、浮動小数点数の加減算や積和演算などにおいては、演算対象のオペランドの仮数部の桁合わせが行なわれるとともに、演算結果についても正規化や丸め処理が行なわれる。具体的には、2つのオペランドOP1、OP2の一方を例えば右シフトして両者の桁合わせが行なわれ、演算後、演算結果の先頭に連続するリーディングゼロ(Leading Zero)を消去するための左シフトが行なわれる。そして、左シフトされて正規化された演算結果が例えばIEEE(Institute of Electrical and Electronics Engineers)754などの規格に即した桁数に丸め処理される。
このとき、左シフトによる正規化は、リーディングゼロを消去するために行なわれるが、演算結果が求められた後にシフト量を決定するのでは処理遅延が大きくなるため、近年では例えば特許文献1に記載されたように、加算器などによる演算と並行してシフト量を予測しておき、演算結果が求められるとすぐに正規化することが可能となっている。
図13は、上記のような左シフト量の予測を行なう演算処理装置の仮数部に対する処理部の構成を示すブロック図である。同図に示す演算処理装置は、右シフタ10、絶対値加算器20、リーディングゼロ予測器(以下「LZ予測器」という)30、左シフタ40、および丸め処理部50を有している。
右シフタ10は、オペランドOP1が入力されると、オペランドOP1の桁がオペランドOP2の桁と合うようにオペランドOP1を右シフトする。なお、右シフタ10は、図示しない指数部に対する処理部からシフト量を取得する。
絶対値加算器20は、右シフタ10によって右シフトされたオペランドOP1とオペランドOP2とを絶対値加算する。LZ予測器30は、絶対値加算器20による絶対値加算の演算結果において先頭に連続するリーディングゼロの桁数を予測し、予測により得られた桁数を左シフト量として左シフタ40へ出力する。
左シフタ40は、LZ予測器30から出力された左シフト量だけ絶対値加算結果を左シフトし、リーディングゼロを消去して演算結果の先頭のビットを1とする正規化を行なう。すなわち、例えば図14に示すように、125ビットの演算結果の先頭に0が連続している場合、左シフタ40は、演算結果のビット列を左シフトして1が先頭となるようにする。
丸め処理部50は、正規化された演算結果を例えばIEEE754などの規格に合った桁数にして処理結果を出力する。このとき、丸め処理部50は、例えば仮数部が23ビットに規定されている単精度の浮動小数点フォーマットの場合には、演算結果の24ビット目以降に応じて仮数部の23ビットの部分に1を加算する(インクリメントする)か否かを判定し、必要に応じて1を加算する。これにより、十進法における四捨五入と同様の処理が二進法の浮動小数点数に対しても行なわれたことになる。
特開平10−40078号公報
ところで、丸め処理の際にインクリメント演算が行なわれると、仮数部のビットがすべて1である場合には、キャリーアウト(Carry-Out)が発生して、指数部に1が加算されることになる。すなわち、図13に示した丸め処理部50において、処理結果の仮数部に1が加算される際、この仮数部のビットがすべて1であれば桁上げが発生してキャリーアウトとなり、図示しない指数部の演算結果に1を加算する必要が生じる。
このため、丸め処理部50による丸め処理が完了するまでは、指数部の演算結果を取得することができず、演算の高速化に一定の限界があるという問題がある。特に、上述したIEEE754においては、単精度の浮動小数点フォーマットでは仮数部が23ビットであり、倍精度の浮動小数点フォーマットでは仮数部が52ビットであるため、丸め処理部50においては、これらの仮数部のビット幅で1が加算され、この結果が求められないと指数部の演算結果が取得されない。具体的には、丸め処理部50におけるインクリメント演算によってキャリーアウトが発生する条件は、上述の23ビットまたは52ビットがすべて1であることなので、23ビットまたは52ビットに対する論理積(AND)演算による遅延が正規化の後に生じる。
さらに、例えば浮動小数点フォーマットのデータに対して所定ビット幅で誤り訂正用のパリティビットを算出する場合などには、最終的な指数部の演算結果の取得が遅延すれば、指数部に対するパリティビットのみならず、指数部と仮数部にまたがる部分に対するパリティビットの算出が遅延し、全体的な処理遅延がますます増大する。このような問題は、図13に示した加減算用の演算処理装置のみではなく、積和演算用の演算処理装置など正規化と丸め処理が行なわれる演算処理装置においては同様に発生する。
本発明はかかる点に鑑みてなされたものであり、浮動小数点数の丸め処理に伴うキャリーアウトの発生を迅速に決定し、演算の高速化を図ることができる演算処理装置、情報処理装置、および演算方法を提供することを目的とする。
上記課題を解決するために、本発明は、演算結果の丸め処理の際に、前記演算結果に対して1を増分することにより、キャリーアウトが発生するか否かを出力する演算処理装置において、前記演算を行なう演算手段と、前記演算結果に対するシフト量を算出するシフト量算出手段と、前記シフト量を用いて、前記演算結果に対する正規化処理を行なう正規化処理手段と、前記シフト量を用いて、前記演算結果を所定のシフト量以上シフトした場合に、シフト結果の所定の領域が全て1であることについて、前記正規化処理と並行して予測を行なう予測手段と、前記正規化処理手段による正規化処理結果と、前記予測手段による予測結果とを入力し、前記キャリーアウトが発生することについての検出を行なう検出手段とを有することを特徴とする。
また、本発明は、上記発明において、前記検出手段は、前記シフト量に応じて、前記正規化処理結果又は前記予測結果の何れか一方若しくは両方を用いて前記検出を行なうことを特徴とする。
また、本発明は、浮動小数点演算結果の丸め処理の際に、前記浮動小数点演算結果に対して1を増分することにより、キャリーアウトが発生するか否かを出力する演算処理装置において、前記演算を行なう演算手段と、前記演算手段による浮動小数点演算結果に対するシフト量を算出するシフト量算出手段と、演算結果を所定のシフト量の範囲でシフトして、演算結果を正規化する正規化手段と、前記シフト量を用いて、所定シフト量以上のシフトが行なわれた浮動小数点演算結果の所定の領域が全て1であることについて、前記正規化処理と並行して予測を行なう予測手段と、前記正規化処理手段による正規化処理結果と、前記予測手段による予測結果とを入力し、前記キャリーアウトが発生することについての検出を行なう検出手段とを有することを特徴とする。
また、本発明は、上記発明において、前記正規化処理手段は、それぞれ異なったシフト量範囲で前記演算結果をシフトする複数のシフト手段を備えることを特徴とする。
また、本発明は、上記発明において、前記複数のシフト手段はそれぞれ、前記シフト量のビット位置に対応してnの階乗ビット幅分(nは正の整数)のシフトを行なうシフト手段であることを特徴とする。
また、本発明は、上記発明において、前記浮動小数点演算結果の所定の領域は、前記浮動小数点演算結果の上位nビットから、最上位aビットを除いた第1の領域(n,aは正の整数)と、前記浮動小数点演算結果の下位mビットで、且つ前記所定のシフト量範囲のシフト処理により前記第1の領域にシフトされる可能性がある第2の領域(mは正の整数)とであることを特徴とする。
また、本発明は、浮動小数点演算結果の丸め処理の際に、前記浮動小数点演算結果の仮数部に対して1を増分することにより、キャリーアウトが発生するか否かを出力する演算処理装置において、前記浮動小数点演算を行なう演算手段と、前記演算手段による浮動小数点演算結果に対するシフト量を算出するシフト量算出手段と、複数のシフト手段を有し、前記シフト量を用いて、前記複数のシフト手段を用いて段階的にシフトを行なうことにより、前記浮動小数点演算結果に対する正規化処理を行なう正規化処理手段と、前記シフト量を用いて、前記正規化処理のうち、所定シフト量以上のシフトによって前記仮数部に留まる第1の領域と前記所定シフト量以上のシフトによって前記仮数部にシフトされる第2の領域それぞれについて、前記シフト後の結果が全て1であることについて予測を行なう予測手段と、前記正規化処理手段による前記正規化処理結果のうち前記所定シフト量未満のシフトによって前記仮数部に留まる第3の領域と、前記正規化処理手段による前記正規化処理結果のうち前記所定シフト量未満のシフトによって前記仮数部にシフトされる第4の領域と、前記予測手段による予測結果とを入力し、前記キャリーアウトが発生することについての検出を行なう検出手段とを有することを特徴とする。
また、本発明は、上記発明において、前記複数のシフト手段はそれぞれ、前記シフト量のビット位置に対応してnの階乗ビット幅(nは正の整数)のシフトを行なうシフト手段であることを特徴とする。
また、本発明は、上記発明において、前記第1の領域は、前記浮動小数点演算結果の上位nビットから、最上位aビットを除いた領域であり、前記第2の領域は、前記浮動小数点演算結果の下位mビットで、且つ前記所定のシフト量範囲のシフト処理により前記第1の領域にシフトされる可能性がある領域であり、前記第3の領域は前記浮動小数点演算結果の前記最上位aビットの領域であり、前記第4の領域は前記第1の領域における最下位bビットの領域(a,b,m,nはそれぞれ正の整数)であることを特徴とする。
また、本発明は、上記発明において、前記予測手段は、前記第1の領域又は前記第2の領域を前記所定シフト量により分割したデータを入力するとともに、前記入力したデータが全て1であることについて検出を行なう複数の第1の論理積手段と、前記複数の第1の論理積手段それぞれの出力について、前記分割されたデータのそれぞれに対応したシフト量を用いてマスクを行なう複数のマスク手段と、前記複数のマスク手段の出力について、論理積演算を行なう第2の論理積手段とを有することを特徴とする。
また、本発明は、上記発明において、前記演算処理装置はさらに、前記浮動小数点演算結果の指数部について増分を行なう増分手段を有し、前記検出手段が前記第1乃至第4の領域が全て1であることについて検出した場合には、前記増分手段により前記演算結果の指数部に1を増分した結果を、前記丸め処理後の前記浮動小数点演算結果の指数部として出力することを特徴とする。
また、本発明は、演算を行なう演算手段と、前記演算結果に対するシフト量を算出するシフト量算出手段と、前記シフト量を用いて、前記演算結果に対する正規化処理を行なう正規化処理手段と、前記シフト量を用いて、前記正規化処理手段による正規化処理後の演算結果における所定の領域が全て1であることについて、前記正規化処理と並行して予測を行なう予測手段と、前記正規化処理手段による正規化処理結果と、前記予測手段による予測結果とを入力し、前記キャリーアウトが発生することについての検出を行なう検出手段と、前記演算結果の丸めを行なう丸め手段とを有する演算処理手段と、前記丸め手段の出力を格納する記憶手段とを備えたことを特徴とする。
また、本発明は、演算結果の丸め処理の際に、前記演算結果に対して1を増分することにより、キャリーアウトが発生するか否かを出力する演算方法において、前記演算を行なうステップと、前記演算結果に対するシフト量を算出するステップと、前記シフト量を用いて、前記演算結果に対する正規化処理を行なうステップと、前記シフト量を用いて、前記正規化処理を行なうステップによる正規化処理後の演算結果における所定の領域が全て1であることについて、前記正規化処理と並行して予測を行なうステップと、前記正規化処理結果と、前記予測結果とを入力し、前記キャリーアウトが発生することについての検出を行なうステップとを有することを特徴とする。
また、本発明は、浮動小数点演算結果の丸め処理の際に、前記浮動小数点演算結果に対して1を増分することにより、キャリーアウトが発生するか否かを出力する演算方法において、前記演算を行なうステップと、前記浮動小数点演算結果に対するシフト量を算出するステップと、前記シフト量を用いて、段階的にシフトを行なうことにより、前記演算結果に対する正規化処理を行なうステップと、前記シフト量を用いて、前記正規化処理を行なうステップのうち、所定シフト量以上のシフトを行なうシフトの結果、浮動小数点演算結果の所定の領域が全て1であることについて、前記正規化処理と並行して予測を行なうステップと、前記正規化処理結果と、前記予測結果とを入力し、前記キャリーアウトが発生することについての検出を行なうステップとを有することを特徴とする。
また、本発明は、浮動小数点演算結果の丸め処理の際に、前記浮動小数点演算結果の仮数部に対して1を増分することにより、キャリーアウトが発生するか否かを出力する演算方法において、前記浮動小数点演算を行なうステップと、前記演算手段による浮動小数点演算結果に対するシフト量を算出するステップと、前記シフト量を用いて、段階的にシフトを行なうことにより、前記浮動小数点演算結果に対する正規化処理を行なうステップと、前記シフト量を用いて、前記正規化処理のうち、所定シフト量以上のシフトによって前記仮数部に留まる第1の領域と前記所定シフト量以上のシフトによって前記仮数部にシフトされる第2の領域それぞれについて、前記シフト後の結果が全て1であることについて予測を行なうステップと、前記正規化処理結果のうち前記所定シフト量未満のシフトによって前記仮数部に留まる第3の領域と、前記正規化処理結果のうち前記所定シフト量未満のシフトによって前記仮数部にシフトされる第4の領域と、前記予測結果とを入力し、前記キャリーアウトが発生することについての検出を行なう検出手段とを有することを特徴とする。
本発明によれば、演算を行ない、演算結果に対するシフト量を算出し、シフト量を用いて、演算結果に対する正規化処理を行ない、シフト量を用いて、演算結果を所定のシフト量以上シフトした場合に、シフト結果の所定の領域が全て1であることについて、正規化処理と並行して予測を行ない、正規化処理結果と、予測結果とを入力し、キャリーアウトが発生することについての検出を行なう。このため、正規化処理の結果が出力されるのを待機することなく、正規化処理と並行してキャリーアウトの発生を検出することができ、丸め処理に伴うキャリーアウトの発生を迅速に決定し、演算の高速化を図ることができる。
また、本発明によれば、シフト量に応じて、正規化処理結果又は予測結果の何れか一方若しくは両方を用いて検出を行なうため、正規化処理結果を用いる場合には、より正確にキャリーアウトの発生を検出することができ、予測結果を用いる場合には、より迅速にキャリーアウトの発生を検出することができる。
また、本発明によれば、演算を行ない、浮動小数点演算結果に対するシフト量を算出し、演算結果を所定のシフト量の範囲でシフトして、演算結果を正規化し、シフト量を用いて、所定シフト量以上のシフトが行なわれた浮動小数点演算結果の所定の領域が全て1であることについて、正規化処理と並行して予測を行ない、正規化処理結果と、予測結果とを入力し、キャリーアウトが発生することについての検出を行なう。このため、正規化処理の結果が出力されるのを待機することなく、正規化処理と並行してキャリーアウトの発生を検出することができ、浮動小数点数の丸め処理に伴うキャリーアウトの発生を迅速に決定し、演算の高速化を図ることができる。
また、本発明によれば、それぞれ異なったシフト量範囲で演算結果をシフトする複数のシフタを備えるため、段階的に演算結果をシフトすることができ、シフト後の大まかなビット位置が早い段階で決定される。
また、本発明によれば、シフト量のビット位置に対応してnの階乗ビット幅分(nは正の整数)のシフトを行なうため、段階的なシフトの組み合わせにより、シフト量のビットで表現され得るすべてのシフトを実現することができる。
また、本発明によれば、浮動小数点演算結果の所定の領域は、浮動小数点演算結果の上位nビットから、最上位aビットを除いた第1の領域(n,aは正の整数)と、浮動小数点演算結果の下位mビットで、且つ所定のシフト量範囲のシフト処理により第1の領域にシフトされる可能性がある第2の領域(mは正の整数)とである。このため、aビットに対応する細密なシフト量以外の大まかなシフト量について、浮動小数点演算結果の各ビットがシフトされる範囲を特定し、シフト処理後に所定の範囲に含まれるビットがすべて1であるか否かを予測することができる。
また、本発明によれば、浮動小数点演算を行い、浮動小数点演算結果に対するシフト量を算出し、複数のシフタを有し、シフト量を用いて、複数のシフタを用いて段階的にシフトを行なうことにより、浮動小数点演算結果に対する正規化処理を行ない、シフト量を用いて、正規化処理のうち、所定シフト量以上のシフトによって仮数部に留まる第1の領域と所定シフト量以上のシフトによって仮数部にシフトされる第2の領域それぞれについて、シフト後の結果が全て1であることについて予測を行ない、正規化処理結果のうち所定シフト量未満のシフトによって仮数部に留まる第3の領域と、正規化処理結果のうち所定シフト量未満のシフトによって仮数部にシフトされる第4の領域と、予測結果とを入力し、キャリーアウトが発生することについての検出を行なう。このため、正規化処理によって仮数部に含まれると予測される第1の領域および第2の領域がすべて1であるか否かの予測結果と、実際の正規化処理後に仮数部に含まれる第3の領域および第4の領域とからキャリーアウト発生の有無を検出することができ、第1の領域および第2の領域に関する予測を正規化処理と並行して行なうことにより、正規化処理後に少ない処理量でキャリーアウトの発生を検出することができる。
また、本発明によれば、第1の領域は、浮動小数点演算結果の上位nビットから、最上位aビットを除いた領域であり、第2の領域は、浮動小数点演算結果の下位mビットで、且つ所定のシフト量範囲のシフト処理により第1の領域にシフトされる可能性がある領域であり、第3の領域は浮動小数点演算結果の最上位aビットの領域であり、第4の領域は第1の領域における最下位bビットの領域(a,b,m,nはそれぞれ正の整数)である。このため、第1の領域および第2の領域を大きくし、第3の領域および第4の領域を小さくすることにより、第1の領域および第2の領域に関する予測結果と第3の領域および第4の領域とを用いた正規化処理後に実行されるキャリーアウトの検出の処理量を小さくすることができる。
また、本発明によれば、第1の領域又は第2の領域を所定シフト量により分割したデータを入力するとともに、入力したデータが全て1であることについて検出を行ない、それぞれの検出の出力について、分割されたデータのそれぞれに対応したシフト量を用いてマスクを行ない、この出力について、論理積演算を行なう。このため、正規化処理後も所定の範囲に含まれることがないデータをマスクしつつ、必要なデータについてすべて1であるか否かを判定し、第1の領域および第2の領域に関する正確な予測を実行することができる。
また、本発明によれば、浮動小数点演算結果の指数部について増分を行ない、第1乃至第4の領域が全て1であることについて検出した場合には、演算結果の指数部に1を増分した結果を、丸め処理後の浮動小数点演算結果の指数部として出力する。このため、仮数部の演算で生じたキャリーアウトを指数部に反映することができ、例えばIEEE754などの規格に合った浮動小数点数の正確な演算結果を得ることができる。
また、本発明によれば、演算を行ない、演算結果に対するシフト量を算出し、シフト量を用いて、演算結果に対する正規化処理を行ない、シフト量を用いて、正規化処理後の演算結果における所定の領域が全て1であることについて、正規化処理と並行して予測を行ない、正規化処理結果と、予測結果とを入力し、キャリーアウトが発生することについての検出を行ない、演算結果の丸めを行ない、この出力を格納する。このため、正規化処理の結果が出力されるのを待機することなく、正規化処理と並行してキャリーアウトの発生を検出することができるとともに、例えば情報処理装置などにおいて、演算結果の丸め処理を行い、処理結果を記憶して利用することができる。
図1は、実施の形態1に係る演算処理装置の要部構成を示すブロック図である。 図2は、実施の形態1に係るビット位置の領域を示す図である。 図3は、実施の形態1に係る左シフタの内部構成を示すブロック図である。 図4は、実施の形態1に係る予測部の内部構成を示すブロック図である。 図5は、実施の形態1に係るシフト量分類部の回路構成例を示す図である。 図6は、実施の形態1に係るマスク生成部の回路構成例を示す図である。 図7は、実施の形態1に係るブロック判定部の回路構成例を示す図である。 図8は、実施の形態1に係る他のマスク生成部の回路構成例を示す図である。 図9は、実施の形態1に係るCO検出部の内部構成を示す図である。 図10は、実施の形態1に係るキャリーアウト有無の予測を示すフロー図である。 図11は、浮動小数点フォーマットを示す図である。 図12は、実施の形態2に係るビット位置の領域を示す図である。 図13は、演算処理装置における浮動小数点数の仮数部に対する処理部の構成を示すブロック図である。 図14は、左シフトによる正規化の例を示す図である。
符号の説明
110 右シフタ
120 絶対値加算器
130 LZ予測器
140 左シフタ
141 第1左シフタ
142 第2左シフタ
143 第3左シフタ
150 丸め処理部
160 予測部
161、164 シフト量分類部
161a、161d ANDゲート
161b、161e バッファ
161c、161f ORゲート
162、165 マスク生成部
163、166 ブロック判定部
163a、163b NANDゲート
163c ANDゲート
167 ANDゲート
170 CO検出部
171 ANDゲート
以下、本発明の実施の形態について、図面を参照して詳細に説明する。なお、以下においては、左シフトによって正規化を行なう場合について説明するが、本発明は、右シフトの場合にも応用することができる。
(実施の形態1)
図1は、本発明の実施の形態1に係る演算処理装置の要部構成を示すブロック図である。同図においては、浮動小数点数の仮数部に対する処理部を示している。図1に示す演算処理装置は、右シフタ110、絶対値加算器120、LZ(Leading Zero)予測器130、左シフタ140、丸め処理部150、予測部160、およびキャリーアウト検出部(以下「CO検出部」という)170を有している。
右シフタ110は、オペランドOP1が入力されると、オペランドOP1の桁がオペランドOP2の桁と合うようにオペランドOP1を右シフトする。なお、右シフタ10は、図示しない指数部に対する処理部からシフト量を取得する。すなわち、右シフタ10は、オペランドOP1とオペランドOP2の指数部を一致させるのに必要なシフト量を取得し、取得されたシフト量だけオペランドOP1を右シフトする。これにより、オペランドOP1とオペランドOP2の加減算が可能となる。
絶対値加算器120は、右シフタ110によって右シフトされたオペランドOP1とオペランドOP2とを絶対値加算する。本実施の形態においては、絶対値加算器120による加算結果のビット数は64ビットであるものとし、加算結果のビット列を「D(x:y)」で表す。ただし、xは先頭のビット位置であり、yは末尾のビット位置である。したがって、例えば絶対値加算器120の加算結果全体は「D(63:0)」と表記することができる。
LZ予測器130は、絶対値加算器120による絶対値加算の演算結果において先頭に連続するリーディングゼロの桁数を予測し、予測により得られた桁数を左シフト量として左シフタ140および予測部160へ出力する。本実施の形態においては、発生し得る左シフト量は60ビット以内であるものとし、左シフト量を示すビット列を「SA(x:y)」で表す。ただし、xは先頭のビット位置であり、yは末尾のビット位置である。したがって、最大の左シフト量が60ビットであることから、左シフト量は6ビットのビット列で表現することができ(なぜなら、25<60<26)、「SA(5:0)」がLZ予測器130から左シフタ140および予測部160へ出力される。
左シフタ140は、LZ予測器130から出力された左シフト量だけ絶対値加算結果を左シフトし、リーディングゼロを消去して演算結果の先頭のビットを1とする正規化を行なう。本実施の形態においては、左シフタ140による正規化後のビット列を「R(x:y)」で表す。ただし、xは先頭のビット位置であり、yは末尾のビット位置である。したがって、丸め処理部150における丸め処理の対象となる丸め処理領域を正規化後のビット列の先頭から32ビットとすれば、このビット列は「R(63:32)」と表すことができる。
ここで、本実施の形態におけるビット位置は、図2に示すようになっている。すなわち、絶対値加算器120による加算結果のD(63:0)を基準とすると、左シフタ140による正規化後の丸め処理領域はR(63:32)と表される。また、本実施の形態においては、丸め処理時にキャリーアウトが発生するか否かを予測するために、領域1〜4を設定する。具体的には、領域1は、加算結果D(63:0)の上位32ビットから最上位4ビットを除いたD(59:32)であり、領域2は、加算結果D(63:0)の下位32ビットD(31:0)と28ビットのパディング領域とを結合した領域である。パディング領域とは、左シフタ140による正規化によって、丸め処理領域R(63:32)内にシフトされる可能性がある領域であり、すべてのビットが0からなっている。
また、領域3は、正規化後の丸め処理領域R(63:32)の上位4ビットR(63:60)であり、領域4は、正規化後の丸め処理領域R(63:32)の下位3ビットR(34:32)である。本実施の形態においては、LZ予測器130から出力される左シフト量SA(5:0)のうちSA(5:2)によって4ビット単位でのシフト量が表されている。このため、4ビット以上のシフト量については、SA(5:2)から把握することができ、領域3および領域4は、4ビット未満のシフト量に対応する領域とすれば良いが、領域1のビット数を4の倍数(28ビット)とするために領域3を4ビットとしている。
このような領域は、キャリーアウト発生の有無の予測に用いられる。すなわち、領域1は、正規化後も丸め処理領域R(63:32)に留まるか否かが判定され、領域2は、正規化後に丸め処理領域R(63:32)にシフトされるか否かが判定される。これらの領域1および領域2のうち丸め処理領域R(63:32)に入るビットがすべて1、かつ領域3および領域4のビットがすべて1であれば、丸め処理領域R(63:32)のビットがすべて1となるため、丸め処理時のインクリメント演算によってキャリーアウトが発生することになる。
ところで、左シフタ140は、例えば図3に示すように多段構成となっており、加算結果D(63:0)を16ビット単位でシフトする第1左シフタ141、加算結果D(63:0)を4ビット単位でシフトする第2左シフタ142、および加算結果D(63:0)を1ビット単位でシフトする第3左シフタ143を有している。
第1左シフタ141は、LZ予測器130から出力される左シフト量の上位2ビットSA(5:4)に応じて、0ビット、16ビット、32ビット、または48ビットのシフトを行なう。具体的には、第1左シフタ141は、SA(5:4)が(0,0)の場合に0ビットのシフトを行ない、(0,1)の場合に16ビットのシフトを行ない、(1,0)の場合に32ビットのシフトを行ない、(1,1)の場合に48ビットのシフトを行なう。つまり、第1左シフタ141は、16(=42)ビット幅で左シフトを行なう。
第2左シフタ142は、左シフト量の中央の2ビットSA(3:2)に応じて、0ビット、4ビット、8ビット、または12ビットのシフトを行なう。具体的には、第2左シフタ142は、SA(3:2)が(0,0)の場合に0ビットのシフトを行ない、(0,1)の場合に4ビットのシフトを行ない、(1,0)の場合に8ビットのシフトを行ない、(1,1)の場合に12ビットのシフトを行なう。つまり、第2左シフタ142は、4(=41)ビット幅で左シフトを行なう。
第3左シフタ143は、左シフト量の下位2ビットSA(1:0)に応じて、0ビット、1ビット、2ビット、または3ビットのシフトを行なう。具体的には、第3左シフタ143は、SA(1:0)が(0,0)の場合に0ビットのシフトを行ない、(0,1)の場合に1ビットのシフトを行ない、(1,0)の場合に2ビットのシフトを行ない、(1,1)の場合に3ビットのシフトを行なう。つまり、第3左シフタ143は、1(=40)ビット幅で左シフトを行なう。
左シフタ140は、上記のような第1〜3左シフタ141〜143によるシフトの組み合わせによって、加算結果D(63:0)を最大で60ビットシフトし正規化結果R(63:0)を出力する。なお、本実施の形態においては、第1〜3左シフタ141〜143がそれぞれ4の階乗ビット幅で左シフトするものとしたが、4以外の整数の階乗ビット幅で左シフトしても良い。
丸め処理部150は、正規化結果R(63:0)を例えばIEEE754などの規格に合った桁数に丸め処理して処理結果を出力する。本実施の形態においては、丸め処理部150は、32ビットの丸め処理領域R(63:32)に対して丸め処理を行ない、浮動小数点数の仮数部に相当する処理結果を出力する。
予測部160は、領域1および領域2を構成する4ビット単位の各ブロックが、左シフタ140による正規化後に丸め処理領域R(63:32)内に含まれるか否かを予測し、丸め処理領域R(63:32)内に含まれるビットすべてが1であるか否かを示す予測結果を出力する。予測部160については、後に詳述する。
CO検出部170は、予測部160による予測結果と左シフタ140による正規化結果R(63:0)の一部のビットとを用いて、丸め処理部150における丸め処理時のキャリーアウトの発生を検出し、キャリーアウトが発生する場合には、図示しない指数部に対する処理部へキャリーアウトとして1を出力する。CO検出部170については、後に詳述する。
次に、図4から図8を参照して予測部160の内部構成および動作を説明する。図4は、予測部160の内部構成を示すブロック図である。同図に示す予測部160は、シフト量分類部161、マスク生成部162、およびブロック判定部163からなる領域1予測部と、シフト量分類部164、マスク生成部165、およびブロック判定部166からなる領域2予測部と、ANDゲート167とを有している。
シフト量分類部161は、LZ予測器130から出力される左シフト量SA(5:0)の上位4ビットを用いて、第1左シフタ141および第2左シフタ142におけるシフト量の指定を分類する。すなわち、シフト量分類部161は、SA(5:4)から第1左シフタ141における16ビット、32ビット、および48ビットの左シフトの有無を求めると同時に、SA(3:2)から第2左シフタ142における4ビット、8ビット、および12ビットの左シフトの有無を求める。
具体的には、シフト量分類部161は、例えば図5に示すような回路構成を有している。すなわち、シフト量分類部161は、ANDゲート161a、バッファ161b、ORゲート161c、ANDゲート161d、バッファ161e、およびORゲート161fを有している。
ANDゲート161aは、SA(5:0)の上位2ビット(すなわちSA(5)およびSA(4))を入力とし、この2入力がいずれも1である場合に1を出力し、その他の場合に0を出力する。換言すれば、ANDゲート161aは、第1左シフタ141が48ビットのシフトを行なうか否かを示すビットS48を出力する。
バッファ161bは、SA(5:0)の最上位ビット(すなわちSA(5))を入力とし、この入力が1である場合に1を出力し、0である場合に0を出力する。換言すれば、バッファ161bは、第1左シフタ141が32ビット以上のシフトを行なうか否かを示すビットS32を出力する。
ORゲート161cは、SA(5:0)の上位2ビットを入力とし、この2入力がいずれも0である場合に0を出力し、その他の場合に1を出力する。換言すれば、ORゲート161cは、第1左シフタ141が16ビット以上のシフトを行なうか否かを示すビットS16を出力する。
同様に、ANDゲート161dは、SA(5:0)の中央の2ビット(すなわちSA(3)およびSA(2))を入力とし、この2入力がいずれも1である場合に1を出力し、その他の場合に0を出力する。換言すれば、ANDゲート161dは、第2左シフタ142が12ビットのシフトを行なうか否かを示すビットS12を出力する。
バッファ161eは、SA(5:0)のSA(3)を入力とし、この入力が1である場合に1を出力し、0である場合に0を出力する。換言すれば、バッファ161eは、第2左シフタ142が8ビット以上のシフトを行なうか否かを示すビットS8を出力する。
ORゲート161fは、SA(5:0)の中央の2ビットを入力とし、この2入力がいずれも0である場合に0を出力し、その他の場合に1を出力する。換言すれば、ORゲート161fは、第2左シフタ142が4ビット以上のシフトを行なうか否かを示すビットS4を出力する。
なお、これらのビットS48、S32、S16、S12、S8、およびS4は、いずれも真である場合に1となり、偽である場合に0となっている。このような回路構成により、シフト量分類部161は、SA(5:0)によって第1左シフタ141および第2左シフタ142におけるシフト量がどのような条件を満たすか分類している。
図4に戻って、マスク生成部162は、領域1を構成する4ビットずつのブロックそれぞれが、左シフタ140による左シフト後に丸め処理領域R(63:32)内に留まるか否かを判定する。そして、マスク生成部162は、左シフト後に丸め処理領域R(63:32)内に留まるブロックに対しては1となり、左シフト後に丸め処理領域R(63:32)内に留まらないブロックに対しては0となるマスクを生成する。
具体的には、マスク生成部162は、例えば図6に示すような回路を含んでいる。ここでは、領域1はD(59:32)の28ビットから構成されているため、4ビットずつのブロックが7個含まれており、上位のブロックから順にブロック6、ブロック5、・・・、ブロック0とする。
例えば、ブロック6については、左シフト量が4ビット以下であれば、左シフト後も丸め処理領域R(63:32)に留まることになるため、第1左シフタ141および第2左シフタ142によるシフト量が0ビットであれば、第3左シフタ143におけるシフト量に関わらず丸め処理領域R(63:32)に留まることになる。つまり、第1左シフタ141におけるシフト量が16ビット以上ではなく、かつ第2左シフタ142におけるシフト量が4ビット以上ではなければ、ブロック6は左シフト後も丸め処理領域R(63:32)に留まる。このことをシフト量分類部161から出力されるビットS48、S32、S16、S12、S8、およびS4によって表現すれば、S16およびS4がいずれも0(すなわち偽)である場合に、ブロック6に対するマスクm6として1を出力する図示した回路が得られる。
同様に、ブロック5については、第1左シフタ141におけるシフト量が16ビット以上ではなく、かつ第2左シフタ142におけるシフト量が8ビット以上でなければ、最大でもシフト量が7ビットであり、丸め処理領域R(63:32)に留まる。したがって、ブロック5に対するマスクm5は、S16およびS8の反転がいずれも1である場合(すなわち、S16およびS8がいずれも0である場合)に1となる。
ブロック4については、第1左シフタ141におけるシフト量が16ビット以上ではなく、かつ第2左シフタ142におけるシフト量が12ビット以上でなければ、最大でもシフト量が11ビットであり、丸め処理領域R(63:32)に留まる。したがって、ブロック4に対するマスクm4は、S16およびS12の反転がいずれも1である場合(すなわち、S16およびS12がいずれも0である場合)に1となる。
ブロック3については、第1左シフタ141におけるシフト量が16ビット以上でなければ、最大でもシフト量が15ビットであり、丸め処理領域R(63:32)に留まる。したがって、ブロック3に対するマスクm3は、S16の反転が1である場合(すなわち、S16が0である場合)に1となる。
ブロック2については、第1左シフタ141におけるシフト量が16ビット以上ではないか、または第1左シフタ141におけるシフト量が16ビットかつ第2左シフタ142におけるシフト量が4ビット以上でなければ、最大でもシフト量が19ビットであり、丸め処理領域R(63:32)に留まる。したがって、ブロック2に対するマスクm2は、S16が0であるか、またはS16が1であってかつS32およびS4の反転がいずれも1である場合(すなわち、S32およびS4がいずれも0である場合)に1となる。
ブロック1については、第1左シフタ141におけるシフト量が16ビット以上ではないか、または第1左シフタ141におけるシフト量が16ビットかつ第2左シフタ142におけるシフト量が8ビット以上でなければ、最大でもシフト量が23ビットであり、丸め処理領域R(63:32)に留まる。したがって、ブロック1に対するマスクm1は、S16が0であるか、またはS16が1であってかつS32およびS8の反転がいずれも1である場合(すなわち、S32およびS8がいずれも0である場合)に1となる。
ブロック0については、第1左シフタ141におけるシフト量が16ビット以上ではないか、または第1左シフタ141におけるシフト量が16ビットかつ第2左シフタ142におけるシフト量が12ビット以上でなければ、最大でもシフト量が27ビットであり、丸め処理領域R(63:32)に留まる。したがって、ブロック0に対するマスクm0は、S16が0であるか、またはS16が1であってかつS32およびS12の反転がいずれも1である場合(すなわち、S32およびS12がいずれも0である場合)に1となる。
以上のような論理回路によって、マスク生成部162は、ブロック6〜0が左シフト後に丸め処理領域R(63:32)に留まる場合には1、留まらない場合には0となるマスクm6〜0をビットS48、S32、S16、S12、S8、およびS4から生成する。
再度図4に戻って、ブロック判定部163は、領域1を構成する各ブロックと各ブロックに対して生成されたマスクm6〜0とを用いて、それぞれのブロックを構成する4ビットがすべて1であるか否かを判定する。
具体的には、ブロック判定部163は、例えば図7に示すような回路構成を有している。すなわち、ブロック判定部163は、NANDゲート163a、NANDゲート163b、およびANDゲート163cを有している。
NANDゲート163aは、各ブロックを構成する4ビットを入力とし、これらの4入力がすべて1である場合に0を出力し、その他の場合に1を出力する。したがって、NANDゲート163aは、各ブロックの4ビットに1ビットでも0があれば1を出力することになる。
NANDゲート163bは、NANDゲート163aの出力と各ブロックに対するマスクm6〜0とを入力とし、この2入力がいずれも1である場合に0を出力し、その他の場合に1を出力する。したがって、NANDゲート163bは、マスクm6〜0が0であり、左シフト後に丸め処理領域R(63:32)に留まらないブロック6〜0に関しては、必ず1を出力する。また、NANDゲート163bは、マスクm6〜0が1であり、左シフト後に丸め処理領域R(63:32)に留まるブロック6〜0に関しては、このブロック6〜0を構成する4ビットに1ビットでも0があれば0を出力し、4ビットがすべて1であれば1を出力する。
ANDゲート163cは、すべてのNANDゲート163bの出力を入力とし、すべての入力が1の場合に判定ビットとして1を出力し、入力に1つでも0がある場合に判定ビットとして0を出力する。すなわち、ANDゲート163cは、各ブロック6〜0に対応するNANDゲート163bのうち1つでも0を出力するものがあれば、判定ビットとして0を出力する。これは、マスクm6〜0が1であり、かつ4ビット中に1ビットでも0があるブロックがある場合に、判定ビットとして0を出力することを意味している。したがって、ANDゲート163cから出力される判定ビットが0であれば、領域1を構成するビットのうち左シフト後も丸め処理領域R(63:32)に留まるビットに0が含まれることになる。反対に、ANDゲート163cから出力される判定ビットが1であれば、領域1を構成するビットのうち左シフト後も丸め処理領域R(63:32)に留まるビットはすべて1であることになる。
以上のシフト量分類部161、マスク生成部162、およびブロック判定部163からなる領域1予測部によって、領域1のD(59:32)のうち左シフタ140による左シフト後に確実に丸め処理領域R(63:32)に留まるビットがすべて1であるか否かの予測が行なわれることになる。また、領域1と同様に領域2についても領域2予測部による予測が行なわれる。
すなわち、シフト量分類部164は、シフト量分類部161と同様に、LZ予測器130から出力される左シフト量SA(5:0)の上位4ビットを用いて、第1左シフタ141および第2左シフタ142におけるシフト量の指定を分類する。シフト量分類部164は、シフト量分類部161と同一の構成(図5参照)を有するため、説明を省略する。なお、図4においては、シフト量分類部161とシフト量分類部164を別々に設ける構成としたが、領域1予測部および領域2予測部で1つのシフト量分類部を共有しても良い。
マスク生成部165は、領域2を構成する4ビットずつのブロックそれぞれが、左シフタ140による左シフト後に丸め処理領域R(63:32)内にシフトされるか否かを判定する。そして、マスク生成部165は、左シフト後に丸め処理領域R(63:32)内へシフトされるブロックに対しては1となり、左シフト後にも丸め処理領域R(63:32)内へシフトされないブロックに対しては0となるマスクを生成する。
具体的には、マスク生成部165は、例えば図8に示すような回路を含んでいる。ここでは、領域2はD(31:0)と28ビットのパディング領域とを合わせた60ビットから構成されているため、4ビットずつのブロックが15個含まれており、上位のブロックから順にブロック14、ブロック13、・・・、ブロック0とする。なお、パディング領域に対応するブロック6〜0は、すべてのビットが0であり同一のブロックである。
例えば、ブロック14については、左シフト量が4ビット以上32ビット以下であれば、左シフト後に丸め処理領域R(63:32)にシフトされることになるため、第3左シフタ143による最大3ビットの左シフトを考慮して、第1左シフタ141および第2左シフタ142による左シフト量を4ビット以上28ビット以下にすれば良い。すなわち、第1左シフタ141におけるシフト量が0ビットであり、かつ第2左シフタ142におけるシフト量が4ビット、8ビット、または12ビットであるか、第1左シフタ141におけるシフト量が16ビットであり、かつ第2左シフタ142におけるシフト量が0ビット、4ビット、8ビット、または12ビットであれば、ブロック14は左シフト後も丸め処理領域R(63:32)に留まる。このことをシフト量分類部164から出力されるビットS48、S32、S16、S12、S8、およびS4によって表現すれば、S4およびS16の少なくとも一方が1(すなわち真)であり、かつS32が0(すなわち偽)である場合に、ブロック14に対するマスクM14として1を出力する図示した回路が得られる。
同様に、ブロック13については、左シフト量が8ビット以上36ビット以下であれば丸め処理領域R(63:32)に留まるため、第1左シフタ141および第2左シフタ142による左シフト量が8ビット以上32ビット以下のときにマスクM13が1になれば良い。このマスクM13は、図8に示す回路によって生成される。
以下、ブロック12〜7も同様に、第3左シフタ143による最大3ビットの左シフトを考慮すれば、第1左シフタ141および第2左シフタ142による左シフトによって領域1のD(59:32)にシフトされる左シフト量のときに1となるマスクM12〜7を生成すれば良い。また、ブロック6〜0は、すべてのビットが0のパディング領域に対応しており、ブロック6が32ビットを超えて左シフトされれば、丸め処理領域R(63:32)には必ずパディング領域由来の0が含まれることになる。したがって、第1左シフタ141および第2左シフタ142によってブロック6が36ビット以上左シフトされる場合に1となるマスクM6が生成されれば、マスクM6が1であるときには丸め処理領域R(63:32)に0が含まれることが判明する。このため、ブロック5〜0に対するマスクは不要となるとともに、後述するブロック判定部166においては、ブロック14〜7の判定結果とブロック6に対するマスクM6とに基づいた判定を行なえば良いことになる。
以上のような論理回路によって、マスク生成部165は、ブロック14〜0が左シフト後に丸め処理領域R(63:32)にシフトされる場合には1、シフトされない場合には0となるマスクM14〜6をビットS48、S32、S16、S12、S8、およびS4から生成する。
ブロック判定部166は、ブロック判定部163と同様に、領域2を構成する各ブロックと各ブロックに対して生成されたマスクM14〜0とを用いて、それぞれのブロックを構成する4ビットがすべて1であるか否かを判定する。ブロック判定部166は、ブロック判定部163と同一の構成(図7参照)を有するため、説明を省略する。
ANDゲート167は、ブロック判定部163の出力およびブロック判定部166の出力を入力とし、この2入力がいずれも1である場合に1を予測結果として出力し、その他の場合に0を予測結果として出力する。すなわち、ANDゲート167は、領域1および領域2のビットがすべて1である場合に予測結果として1を出力する。
なお、以上の予測部160による動作は、絶対値加算器120およびLZ予測器130からの出力が得られれば実行可能であるため、左シフタ140による左シフトと並行して実行される。そして、予測部160により、左シフト後の丸め処理領域R(63:32)の上位4ビット(すなわち領域3)および下位3ビット(すなわち領域4)以外については、すべてのビットが1であるか否かが予測されたことになる。
次に、図9を参照してCO検出部170の内部構成および動作を説明する。図9に示すように、CO検出部170は、左シフタ140から出力される正規化結果R(63:0)に含まれる領域3のR(63:60)、領域4のR(34:32)、および予測部160による予測結果のビットを入力とするANDゲート171から構成されている。
本実施の形態においては、領域3は4ビット、領域4は3ビット、予測結果は1ビットであるため、ANDゲート171は、8入力のANDゲートである。そして、ANDゲート171は、8入力がすべて1である場合に1を出力する。
ところで、上述したように予測部160は、丸め処理領域R(63:32)の領域3および領域4以外のビットがすべて1である場合に予測結果として1を出力するため、この予測結果と領域3および領域4とを入力することにより、ANDゲート171は、丸め処理領域R(63:32)を構成するビットがすべて1である場合に1を出力することになる。すなわち、左シフタ140による左シフト後に得られる丸め処理領域R(63:32)がすべて1であり、丸め処理部150における丸め処理時のインクリメント演算によってキャリーアウトが発生する場合に1を出力する。
したがって、CO検出部170は、左シフタ140による左シフト後の丸め処理領域R(63:32)の32入力のAND演算によって得られるのと同様の結果を、8入力のAND演算によって取得し、キャリーアウトを検出する。結果として、浮動小数点数の丸め処理に伴うキャリーアウトの発生を迅速に決定し、演算の高速化を図ることができる。検出されたキャリーアウトは、図示しない指数部に対する処理部へ出力され、指数部がキャリーアウト分の1だけ増分されることになる。
次いで、上述したキャリーアウト検出の動作を図10に示すフロー図を参照しながらまとめておく。ここでは、主に予測部160およびCO検出部170の動作に着目して説明する。
まず、右シフタ110の右シフトによって桁合わせされたオペランドOP1およびオペランドOP2が絶対値加算器120およびLZ予測器130へ入力され、LZ予測器130によって、絶対値加算器120による演算結果のリーディングゼロが予測され、シフト量が予測される(ステップS101)。予測されたシフト量SA(5:0)は、左シフタ140および予測部160へ出力される。
同時に、絶対値加算器120によって絶対値加算が行なわれ(ステップS102)、演算結果D(63:0)が左シフタ140および予測部160へ出力される。
シフト量SA(5:0)が予測部160へ入力されると、シフト量分類部161およびシフト量分類部164によってシフト量SA(5:0)の上位4ビットが用いられ、4ビット単位でのシフト量の分類を示すビットS48、S32、S16、S12、S8、およびS4が求められる(ステップS103、図5参照)。
そして、マスク生成部162およびマスク生成部165によって、ビットS48、S32、S16、S12、S8、およびS4が用いられ、領域1および領域2を構成する4ビット単位のブロックごとのマスクが生成される(ステップS104、図6および図8参照)。このマスクは、領域1および領域2を構成するブロックのうち、左シフタ140による左シフト後に丸め処理領域R(63:32)に含まれるブロックに対しては1となり、丸め処理領域R(63:32)に含まれないブロックに対しては0となる。
領域1および領域2を構成するすべてのブロックに対するマスクが生成されると、ブロック判定部163およびブロック判定部166によって、各ブロックに含まれる4ビットがすべて1であるか否か判定される。また、この判定結果に各ブロックに対するマスクが適用され、領域1および領域2それぞれを構成するブロックのうち左シフト後に丸め処理領域R(63:32)に含まれるブロックのビットすべてが1である場合に、ブロック判定部163およびブロック判定部166によって判定ビットとして1が出力される(ステップS105、図7参照)。
ブロック判定部163およびブロック判定部166から出力される判定ビットは、ANDゲート167へ入力され、領域1および領域2の双方についての判定ビットが1である場合に、予測部160における予測結果として1が出力される。予測結果が1であるということは、領域1および領域2由来の丸め処理領域R(63:32)に含まれるビットがすべて1であることを示している。この予測結果は、予測部160からCO検出部170へ出力され、CO検出部170によって取得される(ステップS106)。
これらの領域1および領域2に対する予測と並行して、左シフタ140では、絶対値加算器120の演算結果D(63:0)に対する左シフトが実行され、正規化結果R(63:0)が得られる(ステップS107)。正規化結果R(63:0)の上位4ビットは領域3であり、丸め処理領域R(63:32)の下位3ビットは領域4である。左シフタ140による正規化結果R(63:0)は、CO検出部170へ入力され、CO検出部170によって、領域3、領域4、および予測結果のビットがすべて1であるか否かが判定される(ステップS108)。
具体的には、領域3および領域4の7ビットと予測部160による予測結果の1ビットとがCO検出部170内のANDゲート171へ入力され、入力された8ビットがすべて1であれば1が出力され、1つでも0があれば0が出力される(図9参照)。このとき、ANDゲート171に入力される8ビットがすべて1である場合は(ステップS108Yes)、丸め処理領域R(63:32)を構成するビットがすべて1であることになり、キャリーアウトが検出され(ステップS109)、ANDゲート171から出力される1がキャリーアウトとなる。一方、ANDゲート171に入力される8ビットに1ビットでも0がある場合は(ステップS108No)、丸め処理領域R(63:32)を構成するビットに0が含まれることになり、キャリーアウトが検出されない(ステップS110)。
以上のように、本実施の形態によれば、絶対値加算の演算結果を構成する4ビット単位のブロックのうち正規化シフト後に仮数部に含まれると予測されるブロックについては、正規化のためのシフト量が得られた時点ですべてのビットが1であるか否か判定しておき、実際の正規化シフト後には、仮数部に対応する上位4ビットおよび下位3ビットとブロックの予測結果とから丸め処理におけるインクリメント演算でキャリーアウトが発生するか否かを判定する。このため、正規化シフトの後に仮数部を構成するすべてのビットの論理積演算を行なうことなく、段数が少ない論理積演算でキャリーアウト発生の有無を検出することができ、浮動小数点数の丸め処理に伴うキャリーアウトの発生を迅速に決定し、演算の高速化を図ることができる。
(実施の形態2)
本発明の実施の形態2の特徴は、IEEE754における倍精度の浮動小数点数に対して本発明を適用する点である。
IEEE754においては、図11に示すように単精度の浮動小数点フォーマットと倍精度の浮動小数点フォーマットが規定されている。すなわち、図11上段に示すように、単精度の浮動小数点フォーマットにおいては、仮数部が23ビットであるのに対し、図11下段に示すように、倍精度の浮動小数点フォーマットにおいては、仮数部が52ビットである。したがって、正規化シフトによって得られる正規化結果から仮数部がすべて1であるか否かを判定するには、従来、52ビットの膨大なAND演算を行なう必要があった。
一方、本発明においては、図12に示すように領域1〜4を設定し、領域1および領域2の仮数部へシフトされるブロックについては、正規化シフトのシフト量が予測された時点ですべて1であるか否かを判定しておき、領域3および領域4の8ビットと予測結果の1ビットとのAND演算により、52ビットの仮数部がすべて1であるか否かを判定することができる。
本実施の形態に係る演算処理装置の要部構成は、図1に示す演算処理装置と同様であるため、その説明を省略する。ただし、本実施の形態においては図12に示すように、絶対値加算器120の演算結果D(124:0)が125ビットであるため、左シフタ140は、128ビット程度の左シフトを行なう。このため、LZ予測器130が予測するシフト量も7ビットで表現され、左シフタ140は、シフト量の最上位ビットに応じて0ビットまたは64ビットシフトする第1左シフタと、シフト量の上位から2番目および3番目のビットに応じて0ビット、16ビット、32ビット、または48ビットシフトする第2左シフタと、シフト量の上位から4番目および5番目のビットに応じて0ビット、4ビット、8ビット、または12ビットシフトする第3左シフタと、シフト量の下位2ビットに応じて0ビット、1ビット、2ビット、または3ビットシフトする第4左シフタとを有している。なお、以下では、第1左シフタによる0ビットまたは64ビットのシフトが実行された後の動作について考える。
また、LZ予測器130によるリーディングゼロの予測は、最大で1ビットの誤差が生じることがあるため、左シフタ140は、第4左シフタの後段に先頭の1ビットを確実に1とする1ビットシフタを備えている。この1ビットシフタは、第4左シフタによる左シフトの結果を参照し、先頭の1ビットが1であれば第4左シフタの出力をそのまま出力し、先頭の1ビットが0であれば第4左シフタの出力をさらに1ビット左シフトして出力する。
ここで、再度図12を参照して、本実施の形態における領域の設定について説明する。本実施の形態においては、絶対値加算器120による加算結果のD(124:0)を基準とすると、左シフタ140による正規化後の丸め処理領域は、52ビットの仮数部に先頭の1を加えたR(124:72)の53ビットで表される。また、領域1は、加算結果D(124:0)の上位53ビットから最上位4ビットを除いたD(120:72)であり、領域2は、加算結果D(124:0)の領域1に連続するD(71:12)である。本実施の形態においては、実施の形態1と異なり、パディング領域は不要である。
また、領域3は、正規化後の丸め処理領域R(124:72)の上位4ビットR(124:121)であり、領域4は、正規化後の丸め処理領域R(124:72)の下位4ビットR(75:72)である。本実施の形態においては、LZ予測器130による1ビットの予測誤差を考慮するため、領域3および領域4を4ビットとし、LZ予測器130の予測誤差のため左シフト140の1ビットシフタが追加で1ビット左シフトする場合にも対応している。この結果、領域1のビット数が49ビットで4の倍数ではなくなるが、領域3を大きくすればするほど、最終的なCO検出部170におけるAND演算の演算量が多くなるため、本実施の形態においては、領域1のビット数を49ビットのままとする。
これらの領域は、実施の形態1と同様に、キャリーアウト発生の有無の予測に用いられる。すなわち、領域1は、正規化後も丸め処理領域R(124:72)に留まるか否かが判定され、領域2は、正規化後に丸め処理領域R(124:72)にシフトされるか否かが判定される。これらの領域1および領域2のうち丸め処理領域R(124:72)に入るビットがすべて1、かつ領域3および領域4のビットがすべて1であれば、丸め処理領域R(124:72)のビットがすべて1となるため、丸め処理時のインクリメント演算によってキャリーアウトが発生することになる。
すなわち、本実施の形態においても実施の形態1と同様に、予測部160は、領域1および領域2を構成する4ビット単位の各ブロックが、左シフタ140による正規化後に丸め処理領域R(124:72)内に含まれるか否かを予測し、丸め処理領域R(124:72)内に含まれるビットすべてが1であるか否かを示す予測結果を出力する。なお、本実施の形態に係る予測部160の内部構成は、実施の形態1の予測部160(図4参照)と同様であるため、その説明を省略する。
ただし、本実施の形態においては、領域1が49ビットであるため、4ビット単位のブロック12個と1ビットのブロック1個との合計13個のブロックに対してマスク生成部162によってマスクが生成され、ブロック判定部163による判定が行なわれる。
また、本実施の形態においては、領域1が49ビットであるため、領域2を構成する各ブロックが4ビット単位でシフトされる場合に、領域1の先頭の1ビットにも領域2からシフトされたビットが含まれる可能性がある。このため、ブロック判定部166は、領域2を構成するブロックについては、ブロックを構成する4ビットとブロック直前の1ビットとがすべて1であるか否かを判定する。すなわち、本実施の形態におけるブロック判定部166においては、図7に示したNANDゲート163aが5入力のNANDゲートに代えられている。このとき、領域2の最上位のブロックについては、直前の1ビットが領域1に含まれており、別途ブロック判定部163において判定されているため、領域2の最上位のブロックのみについては、実施の形態1と同様に4入力のNANDゲートを用いても良い。
このような予測部160によって、実施の形態1と同様に、領域1および領域2のビットがすべて1である場合に予測結果として1が出力される。この予測部160による動作は、絶対値加算器120およびLZ予測器130からの出力が得られれば実行可能であるため、左シフタ140による左シフトと並行して実行される。そして、予測部160により、左シフト後の丸め処理領域R(124:72)の上位4ビット(すなわち領域3)および下位4ビット(すなわち領域4)以外については、すべてのビットが1であるか否かが予測されたことになる。
そして、実施の形態1と同様に、CO検出部170によって、左シフタ140による左シフト後に得られた領域3の4ビットおよび領域4の4ビットと予測部160による予測結果の1ビットとがすべて1である場合には、キャリーアウトの発生が検出され、1が出力される。換言すれば、CO検出部170は、左シフタ140による左シフト後の丸め処理領域R(124:72)の53入力のAND演算によって得られるのと同様の結果を、9入力のAND演算によって取得し、キャリーアウトを検出する。
以上のように、本実施の形態によれば、絶対値加算の演算結果を構成する4ビット単位のブロックのうち正規化シフト後に仮数部に含まれると予測されるブロックについては、正規化のためのシフト量が得られた時点ですべてのビットが1であるか否か判定しておき、実際の正規化シフト後には、仮数部に対応する上位4ビットおよび下位4ビットとブロックの予測結果とから丸め処理におけるインクリメント演算でキャリーアウトが発生するか否かを判定する。このため、正規化シフトの後に仮数部を構成するすべてのビットの論理積演算を行なうことなく、段数が少ない論理積演算でキャリーアウト発生の有無を検出することができ、IEEE754における倍精度の浮動小数点数に対しても、浮動小数点数の丸め処理に伴うキャリーアウトの発生を迅速に決定し、演算の高速化を図ることができる。
なお、上記各実施の形態においては、4ビット単位の左シフトに関して、領域1および領域2が左シフト後も丸め処理領域に含まれるか否かを予測するものとしたが、この予測は4ビット単位に限定されない。すなわち、正規化シフトのシフト量を示すビット列の一部から複数ビット単位のシフト量が明確になる場合には、このビット単位で領域1および領域2を構成する各ブロックに対する予測をすれば良い。この場合には、シフト量の単位となるビット数に応じて領域3および領域4の大きさも適宜変更すれば良い。
要するに、本発明においては、演算結果の正規化シフトによって丸め処理領域に含まれる可能性がある領域を領域1および領域2とし、これらの領域については正規化シフトのシフト量から丸め処理領域に含まれるか否かを予測するとともに、すべてのビットが1であるか否かを正規化シフトと同時に判定しておく。そして、丸め処理領域の先頭および末尾の数ビットをそれぞれ領域3および領域4とし、これらの領域については正規化シフト後にすべてのビットが1であるか否かを判定する。これらの判定を総合することにより、正規化シフト後には、領域3および領域4に対応する数ビット程度の論理積演算により、丸め処理においてキャリーアウトが発生するか否かを予測することができる。
また、上記各実施の形態においては、丸め処理部150による処理結果を例えばメモリなどの記憶手段に格納し、情報処理装置などにおける情報処理に使用することができる。
本発明は、浮動小数点数の丸め処理に伴うキャリーアウトの発生を迅速に決定し、演算の高速化を図る場合に適用することができる。

Claims (15)

  1. 演算結果の丸め処理の際に、前記演算結果に対して1を増分することにより、キャリーアウトが発生するか否かを出力する演算処理装置において、
    前記演算を行なう演算手段と、
    前記演算結果に対するシフト量を算出するシフト量算出手段と、
    前記シフト量を用いて、前記演算結果に対する正規化処理を行なう正規化処理手段と、
    前記シフト量を用いて、前記演算結果を所定のシフト量以上シフトした場合に、シフト結果の所定の領域が全て1であることについて、前記正規化処理と並行して予測を行なう予測手段と、
    前記正規化処理手段による正規化処理結果と、前記予測手段による予測結果とを入力し、前記キャリーアウトが発生することについての検出を行なう検出手段とを有することを特徴とする演算処理装置。
  2. 前記検出手段は、前記シフト量に応じて、前記正規化処理結果又は前記予測結果の何れか一方若しくは両方を用いて前記検出を行なうことを特徴とする請求項1記載の演算処理装置。
  3. 浮動小数点演算結果の丸め処理の際に、前記浮動小数点演算結果に対して1を増分することにより、キャリーアウトが発生するか否かを出力する演算処理装置において、
    前記演算を行なう演算手段と、
    前記演算手段による浮動小数点演算結果に対するシフト量を算出するシフト量算出手段と、
    演算結果を所定のシフト量の範囲でシフトして、演算結果を正規化する正規化手段と、
    前記シフト量を用いて、所定シフト量以上のシフトが行なわれた浮動小数点演算結果の所定の領域が全て1であることについて、前記正規化処理と並行して予測を行なう予測手段と、
    前記正規化処理手段による正規化処理結果と、前記予測手段による予測結果とを入力し、前記キャリーアウトが発生することについての検出を行なう検出手段とを有することを特徴とする演算処理装置。
  4. 前記正規化処理手段は、それぞれ異なったシフト量範囲で前記演算結果をシフトする複数のシフト手段を備えることを特徴とする請求項3記載の演算処理装置。
  5. 前記複数のシフト手段はそれぞれ、前記シフト量のビット位置に対応してnの階乗ビット幅分(nは正の整数)のシフトを行なうシフト手段であることを特徴とする請求項4記載の演算処理装置。
  6. 前記浮動小数点演算結果の所定の領域は、前記浮動小数点演算結果の上位nビットから、最上位aビットを除いた第1の領域(n,aは正の整数)と、前記浮動小数点演算結果の下位mビットで、且つ前記所定のシフト量範囲のシフト処理により前記第1の領域にシフトされる可能性がある第2の領域(mは正の整数)とであることを特徴とする請求項3乃至5のいずれかに記載の演算処理装置。
  7. 浮動小数点演算結果の丸め処理の際に、前記浮動小数点演算結果の仮数部に対して1を増分することにより、キャリーアウトが発生するか否かを出力する演算処理装置において、
    前記浮動小数点演算を行なう演算手段と、
    前記演算手段による浮動小数点演算結果に対するシフト量を算出するシフト量算出手段と、
    複数のシフト手段を有し、前記シフト量を用いて、前記複数のシフト手段を用いて段階的にシフトを行なうことにより、前記浮動小数点演算結果に対する正規化処理を行なう正規化処理手段と、
    前記シフト量を用いて、前記正規化処理のうち、所定シフト量以上のシフトによって前記仮数部に留まる第1の領域と前記所定シフト量以上のシフトによって前記仮数部にシフトされる第2の領域それぞれについて、前記シフト後の結果が全て1であることについて予測を行なう予測手段と、
    前記正規化処理手段による前記正規化処理結果のうち前記所定シフト量未満のシフトによって前記仮数部に留まる第3の領域と、前記正規化処理手段による前記正規化処理結果のうち前記所定シフト量未満のシフトによって前記仮数部にシフトされる第4の領域と、前記予測手段による予測結果とを入力し、前記キャリーアウトが発生することについての検出を行なう検出手段とを有することを特徴とする演算処理装置。
  8. 前記複数のシフト手段はそれぞれ、前記シフト量のビット位置に対応してnの階乗ビット幅(nは正の整数)のシフトを行なうシフト手段であることを特徴とする請求項7記載の演算処理装置。
  9. 前記第1の領域は、前記浮動小数点演算結果の上位nビットから、最上位aビットを除いた領域であり、
    前記第2の領域は、前記浮動小数点演算結果の下位mビットで、且つ前記所定のシフト量範囲のシフト処理により前記第1の領域にシフトされる可能性がある領域であり、
    前記第3の領域は前記浮動小数点演算結果の前記最上位aビットの領域であり、
    前記第4の領域は前記第1の領域における最下位bビットの領域(a,b,m,nはそれぞれ正の整数)であることを特徴とする請求項7又は8記載の演算処理装置。
  10. 前記予測手段は、
    前記第1の領域又は前記第2の領域を前記所定シフト量により分割したデータを入力するとともに、前記入力したデータが全て1であることについて検出を行なう複数の第1の論理積手段と、
    前記複数の第1の論理積手段それぞれの出力について、前記分割されたデータのそれぞれに対応したシフト量を用いてマスクを行なう複数のマスク手段と、
    前記複数のマスク手段の出力について、論理積演算を行なう第2の論理積手段とを有することを特徴とする請求項6乃至9のいずれかに記載の演算処理装置。
  11. 前記演算処理装置はさらに、
    前記浮動小数点演算結果の指数部について増分を行なう増分手段を有し、
    前記検出手段が前記第1乃至第4の領域が全て1であることについて検出した場合には、前記増分手段により前記演算結果の指数部に1を増分した結果を、前記丸め処理後の前記浮動小数点演算結果の指数部として出力することを特徴とする請求項7乃至9のいずれかに記載の演算処理装置。
  12. 演算を行なう演算手段と、
    前記演算結果に対するシフト量を算出するシフト量算出手段と、
    前記シフト量を用いて、前記演算結果に対する正規化処理を行なう正規化処理手段と、
    前記シフト量を用いて、前記正規化処理手段による正規化処理後の演算結果における所定の領域が全て1であることについて、前記正規化処理と並行して予測を行なう予測手段と、
    前記正規化処理手段による正規化処理結果と、前記予測手段による予測結果とを入力し、前記キャリーアウトが発生することについての検出を行なう検出手段と、
    前記演算結果の丸めを行なう丸め手段とを有する演算処理手段と、
    前記丸め手段の出力を格納する記憶手段とを備えたことを特徴とする情報処理装置。
  13. 演算結果の丸め処理の際に、前記演算結果に対して1を増分することにより、キャリーアウトが発生するか否かを出力する演算方法において、
    前記演算を行なうステップと、
    前記演算結果に対するシフト量を算出するステップと、
    前記シフト量を用いて、前記演算結果に対する正規化処理を行なうステップと、
    前記シフト量を用いて、前記正規化処理を行なうステップによる正規化処理後の演算結果における所定の領域が全て1であることについて、前記正規化処理と並行して予測を行なうステップと、
    前記正規化処理結果と、前記予測結果とを入力し、前記キャリーアウトが発生することについての検出を行なうステップとを有することを特徴とする演算方法。
  14. 浮動小数点演算結果の丸め処理の際に、前記浮動小数点演算結果に対して1を増分することにより、キャリーアウトが発生するか否かを出力する演算方法において、
    前記演算を行なうステップと、
    前記浮動小数点演算結果に対するシフト量を算出するステップと、
    前記シフト量を用いて、段階的にシフトを行なうことにより、前記演算結果に対する正規化処理を行なうステップと、
    前記シフト量を用いて、前記正規化処理を行なうステップのうち、所定シフト量以上のシフトを行なうシフトの結果、浮動小数点演算結果の所定の領域が全て1であることについて、前記正規化処理と並行して予測を行なうステップと、
    前記正規化処理結果と、前記予測結果とを入力し、前記キャリーアウトが発生することについての検出を行なうステップとを有することを特徴とする演算方法。
  15. 浮動小数点演算結果の丸め処理の際に、前記浮動小数点演算結果の仮数部に対して1を増分することにより、キャリーアウトが発生するか否かを出力する演算方法において、
    前記浮動小数点演算を行なうステップと、
    前記演算手段による浮動小数点演算結果に対するシフト量を算出するステップと、
    前記シフト量を用いて、段階的にシフトを行なうことにより、前記浮動小数点演算結果に対する正規化処理を行なうステップと、
    前記シフト量を用いて、前記正規化処理のうち、所定シフト量以上のシフトによって前記仮数部に留まる第1の領域と前記所定シフト量以上のシフトによって前記仮数部にシフトされる第2の領域それぞれについて、前記シフト後の結果が全て1であることについて予測を行なうステップと、
    前記正規化処理結果のうち前記所定シフト量未満のシフトによって前記仮数部に留まる第3の領域と、前記正規化処理結果のうち前記所定シフト量未満のシフトによって前記仮数部にシフトされる第4の領域と、前記予測結果とを入力し、前記キャリーアウトが発生することについての検出を行なう検出手段とを有することを特徴とする演算方法。
JP2008556965A 2007-02-09 2007-02-09 演算処理装置、情報処理装置、および演算方法 Expired - Fee Related JP4806453B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2007/052396 WO2008096446A1 (ja) 2007-02-09 2007-02-09 演算処理装置、情報処理装置、および演算方法

Publications (2)

Publication Number Publication Date
JPWO2008096446A1 true JPWO2008096446A1 (ja) 2010-05-20
JP4806453B2 JP4806453B2 (ja) 2011-11-02

Family

ID=39681365

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008556965A Expired - Fee Related JP4806453B2 (ja) 2007-02-09 2007-02-09 演算処理装置、情報処理装置、および演算方法

Country Status (4)

Country Link
US (1) US8554819B2 (ja)
EP (1) EP2110740B1 (ja)
JP (1) JP4806453B2 (ja)
WO (1) WO2008096446A1 (ja)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8914430B2 (en) 2010-09-24 2014-12-16 Intel Corporation Multiply add functional unit capable of executing scale, round, GETEXP, round, GETMANT, reduce, range and class instructions
US9929862B2 (en) 2013-12-23 2018-03-27 Nxp B.V. Optimized hardware architecture and method for ECC point doubling using Jacobian coordinates over short Weierstrass curves
US9979543B2 (en) * 2013-12-23 2018-05-22 Nxp B.V. Optimized hardware architecture and method for ECC point doubling using jacobian coordinates over short weierstrass curves
US9900154B2 (en) 2013-12-23 2018-02-20 Nxp B.V. Optimized hardward architecture and method for ECC point addition using mixed affine-jacobian coordinates over short weierstrass curves
US10489114B2 (en) 2014-06-27 2019-11-26 International Business Machines Corporation Shift amount correction for multiply-add
US10606557B2 (en) * 2016-12-06 2020-03-31 Arm Limited Leading zero anticipation

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0695851A (ja) * 1991-08-30 1994-04-08 Weytec Corp 浮動小数点加算器用の正確な先行ゼロ予測のための方法及び装置
JP2005134965A (ja) * 2003-10-28 2005-05-26 Renesas Technology Corp 論理回路、および、それを使用した浮動小数点演算回路とマイクロプロセッサ

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0520028A (ja) * 1990-12-28 1993-01-29 Matsushita Electric Ind Co Ltd 加減算のための浮動小数点演算装置の仮数部処理回路
US5373461A (en) * 1993-01-04 1994-12-13 Motorola, Inc. Data processor a method and apparatus for performing postnormalization in a floating-point execution unit
JPH1040078A (ja) 1996-07-24 1998-02-13 Hitachi Ltd 先行0、1数予測回路、浮動小数点演算装置、マイクロプロセッサおよび情報処理装置
US6085212A (en) * 1997-10-23 2000-07-04 Advanced Micro Devices, Inc. Efficient method for performing close path subtraction in a floating point arithmetic unit
US6275839B1 (en) * 1998-09-22 2001-08-14 International Business Machines Corporation Method and system for immediate exponent normalization in a fast floating point adder
US6557021B1 (en) * 1999-11-04 2003-04-29 Intrinsity, Inc. Rounding anticipator for floating point operations
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
US7720898B2 (en) * 2003-06-11 2010-05-18 Stmicroelectronics, Inc. Apparatus and method for adjusting exponents of floating point numbers
US8069200B2 (en) * 2005-04-28 2011-11-29 Qsigma, Inc. Apparatus and method for implementing floating point additive and shift operations
JP4571903B2 (ja) * 2005-12-02 2010-10-27 富士通株式会社 演算処理装置,情報処理装置,及び演算処理方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0695851A (ja) * 1991-08-30 1994-04-08 Weytec Corp 浮動小数点加算器用の正確な先行ゼロ予測のための方法及び装置
JP2005134965A (ja) * 2003-10-28 2005-05-26 Renesas Technology Corp 論理回路、および、それを使用した浮動小数点演算回路とマイクロプロセッサ

Also Published As

Publication number Publication date
WO2008096446A1 (ja) 2008-08-14
JP4806453B2 (ja) 2011-11-02
US8554819B2 (en) 2013-10-08
EP2110740A4 (en) 2011-07-27
US20090300087A1 (en) 2009-12-03
EP2110740B1 (en) 2013-05-29
EP2110740A1 (en) 2009-10-21

Similar Documents

Publication Publication Date Title
US7720899B2 (en) Arithmetic operation unit, information processing apparatus and arithmetic operation method
JP4388543B2 (ja) 3項入力の浮動小数点加減算器
KR20080055985A (ko) 선택가능 준정밀도를 가진 부동―소수점 프로세서
JP4806453B2 (ja) 演算処理装置、情報処理装置、および演算方法
US20080288571A1 (en) Arithmetic device for performing division or square root operation of floating point number and arithmetic method therefor
CN108694037B (zh) 用于在执行浮点减法时估计移位量的装置和方法
US7725522B2 (en) High-speed integer multiplier unit handling signed and unsigned operands and occupying a small area
US10089073B2 (en) Method and apparatus for converting from integer to floating point representation
US20070156803A1 (en) Overflow detection and clamping with parallel operand processing for fixed-point multipliers
US5408426A (en) Arithmetic unit capable of performing concurrent operations for high speed operation
JPH08212058A (ja) 加算オーバフロ検出回路
KR20210147070A (ko) 다중 입력 부동 소수점 가산기
CN108153513B (zh) 前导零预测
CN106528050B (zh) 尾随或前导数字预测器
CN112394904B (zh) 一种浮点数据处理方法、运算器及电子设备
JPH09244874A (ja) 最上位有効ビット位置予測方法
KR100331846B1 (ko) 실수 연산기
KR101922462B1 (ko) 데이터 처리장치 및 이진수에 대해 시프트 기능을 수행하는 방법
US10275218B1 (en) Apparatus and method for subtracting significand values of floating-point operands
JP3675111B2 (ja) 3入力比較器
US20040049528A1 (en) Apparatus and method for adding multiple-bit binary-strings
JP3257278B2 (ja) 冗長なシフト数予測とシフト誤り補正を用いた正規化装置
JP4428778B2 (ja) 演算装置及び演算方法並びに計算装置
JP5515601B2 (ja) 浮動小数点加算器
US20190155573A1 (en) Handling floating-point operations

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110111

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110225

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

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

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

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees