JP4500358B2 - 演算処理装置および演算処理方法 - Google Patents

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

Info

Publication number
JP4500358B2
JP4500358B2 JP2008501539A JP2008501539A JP4500358B2 JP 4500358 B2 JP4500358 B2 JP 4500358B2 JP 2008501539 A JP2008501539 A JP 2008501539A JP 2008501539 A JP2008501539 A JP 2008501539A JP 4500358 B2 JP4500358 B2 JP 4500358B2
Authority
JP
Japan
Prior art keywords
bit
carry
unit
result
bit string
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
JP2008501539A
Other languages
English (en)
Other versions
JPWO2007096982A1 (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 JPWO2007096982A1 publication Critical patent/JPWO2007096982A1/ja
Application granted granted Critical
Publication of JP4500358B2 publication Critical patent/JP4500358B2/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

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)
  • Executing Machine-Instructions (AREA)
  • Complex Calculations (AREA)

Description

本発明は、ビット幅が異なる2つのビット列の絶対値加算を行う演算処理装置および演算処理方法であって、特に、さらなる処理時間の短縮を図り、回路規模を削減することができる演算処理装置および演算処理方法に関する。
通常、コンピュータなどのプロセッサにおける演算においては、限られたビット数で表現可能な数値範囲が大きくなることから浮動小数点数が用いられている。浮動小数点数は、符号部、指数部、および仮数部からなっており、浮動小数点数の演算においては、指数部や仮数部の絶対値加算が頻繁に行われる。
一般的な絶対値加算を行う演算処理装置には、2つの2進数A、Bを加減算するために2つの加算器が備えられている。一方の加算器は、第3入力であるキャリーインが0とされており、2進数A、Bの正負が同じである場合は、この加算器の出力が演算結果となる。また、2進数A、Bの正負が異なり、かつ、加算結果が負となる場合には、この加算器の出力が絶対値を求めるために反転されて演算結果となる。
また、他方の加算器は、第3入力であるキャリーインが1とされており、2の補数表現を用いた減算を実行する。したがって、2進数A、Bの正負が異なり、かつ、加算結果が正となる場合には、この加算器の出力が演算結果となる。
このような演算処理装置を備えた浮動小数点数演算装置においては、回路規模や消費電力が大きくなる傾向にあるため、例えばインバータの追加やシフトの調整などによって回路規模を縮小するための種々の構成が検討されている(例えば特許文献1参照)。
特開2000−155671号公報
しかしながら、加算器でビット幅(すなわち桁数)が異なる2つの2進数A、Bの加減算を行う場合、ビット幅が小さい方の上位に0を補完して加減算が行われるため、処理時間の短縮に限界があるという問題がある。すなわち、例えば2進数Aの方が2進数Bよりもビット幅が大きい場合、両者が同じビット幅になるように、2進数Bの上位に0が補完されてから加減算が行われる。
このような場合、加算器としては、2進数Aのビット幅に対応するものが必要となるため、回路規模が増大するとともに、2進数Bの上位ビットがすべて0であるにも関わらずすべてのビットについて演算が実行されて、処理時間が必要以上に長くなる。
本発明はかかる点に鑑みてなされたものであり、ビット幅が異なる2つの数の演算を行う場合に、さらなる処理時間の短縮を図り、回路規模を削減することができる演算処理装置および演算処理方法を提供することを目的とする。
上記課題を解決するために、演算処理装置は、所定のビット幅の第1ビット列と第1ビット列よりもビット幅が大きい第2ビット列との絶対値加算を行う演算処理装置であって、第2ビット列を第1ビット列と等しいビット幅の下位ビット部分と下位ビット部分よりも上位の上位ビット部分とに分割する分割手段と、前記分割手段によって分割されて得られた上位ビット部分に対する桁上げおよび桁下げの演算を行う第1演算手段と、前記分割手段によって分割されて得られた下位ビット部分と第1ビット列の絶対値加算を行う第2演算手段と、前記上位ビット部分に関する情報、第1ビット列および第2ビット列の符号情報、ならびに前記第2演算手段による絶対値加算の中間結果に応じて、前記第1演算手段の出力を桁上げ演算結果、桁下げ演算結果、または前記上位ビット部分そのものから選択する選択手段とを有する構成を採る。
また、演算処理装置は、上記構成において、前記選択手段は、前記上位ビット部分が0であるか否かに応じて前記第1演算手段の出力を選択する構成を採る。
また、演算処理装置は、上記構成において、前記選択手段は、第1ビット列および第2ビット列の符号が同符号である場合に、前記桁上げ演算結果または前記上位ビット部分そのものを選択する構成を採る。
また、演算処理装置は、上記構成において、前記選択手段は、前記第2演算手段による絶対値加算において桁上げが発生した場合に前記桁上げ演算結果を選択する一方、前記第2演算手段による絶対値加算において桁上げが発生しない場合に前記上位ビット部分そのものを選択する構成を採る。
また、演算処理装置は、上記構成において、前記選択手段は、第1ビット列および第2ビット列の符号が異符号である場合に、前記桁下げ演算結果または前記上位ビット部分そのものを選択する構成を採る。
また、演算処理装置は、上記構成において、前記選択手段は、前記上位ビット部分が0である場合に、前記上位ビット部分そのものを選択する構成を採る。
また、演算処理装置は、上記構成において、前記選択手段は、前記上位ビット部分が0ではなくかつ前記下位ビット部分が前記第1ビット列未満である場合に、前記桁下げ演算結果を選択する構成を採る。
また、演算処理装置は、上記構成において、前記選択手段は、前記下位ビット部分が前記第1ビット列以上である場合に、前記上位ビット部分そのものを選択する構成を採る。
また、演算処理装置は、上記構成において、前記第1演算手段は、前記上位ビット部分に桁上げに相当する1を加える第1演算器と、前記上位ビット部分から桁下げに相当する1を減じる第2演算器と、前記上位ビット部分に0を加える第3演算器と、前記選択手段の選択に従って、前記第1演算器、前記第2演算器、および前記第3演算器のいずれかの演算結果を出力する出力手段とを含む構成を採る。
また、演算処理方法は、所定のビット幅の第1ビット列と第1ビット列よりもビット幅が大きい第2ビット列との絶対値加算を行う演算処理方法であって、第2ビット列を第1ビット列と等しいビット幅の下位ビット部分と下位ビット部分よりも上位の上位ビット部分とに分割する分割工程と、前記分割工程にて分割されて得られた上位ビット部分に対する桁上げおよび桁下げの演算を行う第1演算工程と、前記分割工程にて分割されて得られた下位ビット部分と第1ビット列の絶対値加算を行う第2演算工程と、前記上位ビット部分に関する情報、第1ビット列および第2ビット列の符号情報、ならびに前記第2演算工程における絶対値加算の中間結果に応じて、前記第1演算工程の結果を桁上げ演算結果、桁下げ演算結果、または前記上位ビット部分そのものから選択する選択工程とを有するようにした。
本発明によれば、第2ビット列を第1ビット列と等しいビット幅の下位ビット部分と下位ビット部分よりも上位の上位ビット部分とに分割し、上位ビット部分に対する桁上げおよび桁下げの演算を行い、下位ビット部分と第1ビット列の絶対値加算を行い、上位ビット部分に関する情報、第1ビット列および第2ビット列の符号情報、ならびに絶対値加算の中間結果に応じて、上位ビット部分に関する演算結果を桁上げ演算結果、桁下げ演算結果、または上位ビット部分そのものから選択する。このため、ビット幅が異なる2つの数の演算を行う場合に、下位ビット部分に関する演算が完了すれば上位ビット部分については適切な演算結果を選択するのみで良く、実質的に下位ビット部分の演算に要する時間のみですべての演算が完了し、さらなる処理時間の短縮を図ることができるとともに、上位ビット部分に関する加算を行うための回路が不要となり、回路規模を削減することができる。
また、本発明によれば、上位ビット部分が0であるか否かに応じて上位ビット部分に関する演算結果を選択するため、第2ビット列のビット幅が実質的に第1ビット列のビット幅以下である場合でも正確な演算を行うことができる。
また、本発明によれば、第1ビット列および第2ビット列の符号が同符号である場合に、桁上げ演算結果または上位ビット部分そのものを選択するため、正の値同士の加算における桁上げの有無を上位ビット部分に関する演算結果に反映することができる。
また、本発明によれば、絶対値加算において桁上げが発生した場合に桁上げ演算結果を選択する一方、絶対値加算において桁上げが発生しない場合に上位ビット部分そのものを選択する。このため、下位ビット部分と第1ビット列の加算における桁上げの有無を上位ビット部分に関する演算結果に正確に反映することができる。
また、本発明によれば、第1ビット列および第2ビット列の符号が異符号である場合に、桁下げ演算結果または上位ビット部分そのものを選択するため、正の値と負の値の加算における桁下げの有無を上位ビット部分に関する演算結果に反映することができる。
また、本発明によれば、上位ビット部分が0である場合に、上位ビット部分そのものを選択するため、第2ビット列のビット幅が実質的に第1ビット列のビット幅以下である場合は、上位ビット部分に関する演算結果を0のままにしておき、第1ビット列から下位ビット部分を減算して絶対値加算結果を得ることができる。
また、本発明によれば、上位ビット部分が0ではなくかつ下位ビット部分が第1ビット列未満である場合に、桁下げ演算結果を選択するため、下位ビット部分から第1ビット列を減算する過程で発生する桁下げを上位ビット部分に関する演算結果に正確に反映することができる。
また、本発明によれば、下位ビット部分が第1ビット列以上である場合に、上位ビット部分そのものを選択するため、下位ビット部分から第1ビット列を減算する過程で桁下げが発生しないことを上位ビット部分に関する演算結果に正確に反映することができる。
また、本発明によれば、上位ビット部分に桁上げに相当する1を加える第1演算器、上位ビット部分から桁下げに相当する1を減じる第2演算器、および上位ビット部分に0を加える第3演算器のいずれかの演算結果を選択に従って出力する。このため、上位ビット部分に関する演算結果を得る回路構成が簡易なものになり、確実に回路規模を削減することができる。
以下、本発明の一実施の形態について、図面を参照して詳細に説明する。なお、以下においては、浮動小数点数の仮数部の加減算を例に挙げて説明するが、本発明は、浮動小数点数に限らず種々の絶対値加算に適用することができる。
図1は、本発明の一実施の形態に係る浮動小数点数演算装置の概略構成を示すブロック図である。図1に示す浮動小数点数演算装置は、分割部100、分割部200、指数差計算部300、符号判定部400、上下位分割部500、絶対値加算部600、正規化シフト部700、および丸め演算部800を有している。
分割部100は、浮動小数点数Aを浮動小数点数Aの正負を示す符号ビット、浮動小数点数Aの桁数に対応する指数ビット、および浮動小数点数Aの数値に対応する仮数ビットに分割し(図2参照)、符号ビットを符号判定部400へ出力し、指数ビットを指数差計算部300へ出力し、仮数ビットを上下位分割部500へ出力する。
分割部200は、浮動小数点数Bを浮動小数点数Bの正負を示す符号ビット、浮動小数点数Bの桁数に対応する指数ビット、および浮動小数点数Bの数値に対応する仮数ビットに分割し、符号ビットを符号判定部400へ出力し、指数ビットを指数差計算部300へ出力し、仮数ビットを絶対値加算部600へ出力する。
指数差計算部300は、浮動小数点数A、Bの指数ビットを比較し、浮動小数点数Aと浮動小数点数Bとの指数差を上下位分割部500へ通知し、浮動小数点数Aの仮数ビットにおいて、浮動小数点数Aと浮動小数点数Bの桁数の差分に相当する上位ビットAHが0であるか否かを示す上位ビット情報AH_0を絶対値加算部600へ出力する。上位ビット情報AH_0は、上位ビットAHが0である場合に1の値をとり、上位ビットAHが0ではない場合に0の値をとる信号である。
符号判定部400は、浮動小数点数A、Bの符号ビットを比較し、浮動小数点数A、Bが同符号であるか異符号であるかを判定し、判定結果と浮動小数点数A、Bそれぞれの符号とを含む符号情報を絶対値加算部600へ出力する。
上下位分割部500は、指数差計算部300からの通知に従い、浮動小数点数Aの仮数ビットと浮動小数点数Bの仮数ビットとの桁合わせシフトを行い、桁数の差分に相当する上位ビットAHと浮動小数点数Bの仮数ビットの桁数と共通する下位ビットALとに分割する。すなわち、浮動小数点数Aと浮動小数点数Bとは、桁合わせを行うと仮数ビットのビット幅が異なることがあるため、上下位分割部500は、例えば図2に示すように、浮動小数点数Aの仮数ビットを上位ビットAHと下位ビットALとに分割し、下位ビットALのビット幅は浮動小数点数Bの仮数ビットBLのビット幅に揃える。
絶対値加算部600は、浮動小数点数Aの下位ビットALと浮動小数点数Bの仮数ビットBLとを加算するとともに、浮動小数点数Aの上位ビットAHに対する桁上げ(キャリー)および桁下げ(ボロー)については別途演算しておき、最終的に、上位ビット情報AH_0および符号情報などに応じて上位ビット部分の演算結果SHおよび下位ビット部分の演算結果SLを選択する。絶対値加算部600による具体的な演算については、後に詳述する。
正規化シフト部700は、絶対値加算部600による演算結果SHおよび演算結果SLからなるビット列を浮動小数点数の仮数ビットとするように正規化シフトして指数ビットを適切に決定する。
丸め演算部800は、絶対値加算部600による演算結果SHおよび演算結果SLからなるビット列を丸め演算して、浮動小数点数の仮数ビットとすることにより、浮動小数点数Aと浮動小数点数Bとの加算結果である浮動小数点数Sを出力する。
図3は、本実施の形態に係る絶対値加算部600の内部構成を示すブロック図である。図3に示す絶対値加算部600は、大きく分けて上位演算部610、下位演算部620、および出力選択部630を有している。また、上位演算部610は、+1演算器611、−1演算器612、+0演算器613、および出力部614を有しており、下位演算部620は、論理否定算出部621、論理否定算出部622、加算器623、加算器624、インバータ625、および出力部626を有している。
上位演算部610は、上位ビットAHに対する桁上げおよび桁下げを演算し、上位ビット情報AH_0、符号情報、および下位演算部620における下位ビットの演算の中間結果に応じて、上位ビットAHが桁上げされた結果、上位ビットAHが桁下げされた結果、および上位ビットAHそのもののいずれかを上位ビットの演算結果SHとして出力する。
具体的には、+1演算器611は、下位ビットの演算結果からの桁上げ(キャリー)に相当する+1を上位ビットAHに加算し、出力部614への入力Xとする。−1演算器612は、下位ビットの演算結果からの桁下げ(ボロー)に相当する−1を上位ビットAHに加算し、出力部614への入力Yとする。+0演算器613は、下位ビットの演算結果から桁上げも桁下げも発生しない場合のために、上位ビットAHをそのまま出力部614への入力Zとする。出力部614は、出力選択部630からの指示に従って、入力X、Y、Zのうちいずれか1つを上位ビットの演算結果SHとして出力する。
下位演算部620は、下位ビットALおよび仮数ビットBLの加減算を行い、上位ビット情報AH_0、符号情報、および加減算の中間結果に応じて、下位ビットの演算結果SLを出力する。
具体的には、論理否定算出部621は、符号情報から浮動小数点数Aおよび浮動小数点数Bが異符号かつ浮動小数点数Aが負の値と判断された場合に、下位ビットALの論理否定を算出し、加算器623および加算器624へ出力する。また、論理否定算出部621は、符号情報から浮動小数点数Aおよび浮動小数点数Bが同符号あるいは浮動小数点数Aが正の値と判断された場合は、下位ビットALをそのまま加算器623および加算器624へ出力する。同様に、論理否定算出部622は、符号情報から浮動小数点数Aおよび浮動小数点数Bが異符号かつ浮動小数点数Bが負の値と判断された場合に、仮数ビットBLの論理否定を算出し、加算器623および加算器624へ出力する。また、論理否定算出部622は、符号情報から浮動小数点数Aおよび浮動小数点数Bが同符号あるいは浮動小数点数Bが正の値と判断された場合は、仮数ビットBLをそのまま加算器623および加算器624へ出力する。
ここで、2進数における負の値の加算(すなわち減算)は、2の補数表現における次式(1)を用いることにより、正の値の加算に変換することができる。ただし、式(1)において、Pは所望の2進数を示し、!PはPの論理否定を示す。
−P=!P+1 …(1)
したがって、浮動小数点数Aまたは浮動小数点数Bが負の値の場合には、論理否定算出部621または論理否定算出部622が下位ビットALまたは仮数ビットBLの論理否定を算出しておく。
加算器623は、最下位ビットへのキャリーインとして0が入力されており、キャリーインを0として論理否定算出部621からの出力と論理否定算出部622からの出力とを加算し、加算結果を出力部626への入力zとする。したがって、入力zは、AL(または!AL)+BL(または!BL)となる。また、加算器623は、加算過程におけるキャリーアウトCO_0を出力選択部630へ出力する。
加算器624は、最下位ビットへのキャリーインとして1が入力されており、キャリーインを1として論理否定算出部621からの出力と論理否定算出部622からの出力とを加算し、加算結果を出力部626への入力xとする。したがって、入力xは、AL(または!AL)+BL(または!BL)+1となる。加算器624におけるキャリーインの1は、上式(1)の右辺の+1に対応している。したがって、加算器624が例えばAL+!BL+1を演算する場合には、AL−BLが演算されたことに他ならない(ただし結果が正になるときに限る)。また、加算器624は、加算過程におけるキャリーアウトCO_1を出力選択部630へ出力する。
インバータ625は、加算器623の加算結果を反転し、論理否定を出力部626への入力yとする。したがって、入力yは、!(AL(または!AL)+BL(または!BL))となる。ここで、例えばAL−BLが演算される場合、結果が負になるときは、絶対値加算結果として−(AL−BL)が必要となる。このとき、上式(1)を用いて−(AL−BL)を変形すると、次式(2)のようになる。
−(AL−BL)=−(AL+!BL+1)
=−(AL+!BL)−1
=!(AL+!BL)+1−1
=!(AL+!BL) …(2)
つまり、インバータ625は、−(AL−BL)として、!(AL+!BL)もしくは!(!AL+BL)を得るために設けられている。出力部626は、出力選択部630からの指示に従って、入力x、y、zのうちいずれか1つを下位ビットの演算結果SLとして出力する。
出力選択部630は、上位ビット情報AH_0、符号情報、キャリーアウトCO_0、およびキャリーアウトCO_1に基づいて、上位演算部610における演算結果SHを出力部614への入力X、Y、Zから選択するとともに、下位演算部620における演算結果SLを出力部626への入力x、y、zから選択する。具体的には、出力選択部630は、図4に示す表に従って、演算結果SHおよび演算結果SLを選択する。図4に示す表において、斜線部分については、0および1のいずれでも良いことを示している。
図4におけるキャリーアウトCO_1は、加算器624による加算結果の正負を示している。すなわち、加算器624による加算結果が0以上であれば、加算器624において桁上げが発生する、換言すればキャリーアウトCO_1が1となり、加算器624による加算結果が負であれば、加算器624において桁上げが発生しない、換言すればキャリーアウトCO_1が0となる。
図4における上位ビット情報AH_0は、上位ビットAHが0であるか否かを示している。すなわち、浮動小数点数Aの指数ビットの値と浮動小数点数Bの指数ビットの値とが等しく、浮動小数点数Aの桁数が浮動小数点数Bの桁数以下であれば、上位ビットAHは0となり、上位ビット情報AH_0は1となる。一方、浮動小数点数Aの桁数が浮動小数点数Bの桁数を超えていれば、上位ビットAHは0となることはなく、上位ビット情報AH_0は0となる。
図4におけるキャリーアウトCO_0は、加算器623による加算結果に桁上げが発生するか否かを示している。すなわち、加算器623において桁上げが発生すれば、キャリーアウトCO_0が1となり、加算器623において桁上げが発生しなければ、キャリーアウトCO_0が0となる。
このような図4においては、A+B(−A−Bを含む)、−A+B、およびA−Bの3種類の演算が網羅されている。これらのうち、A+Bの演算においては、下位ビットALと仮数ビットBLの演算において桁上げが発生するか否かによって、上位ビットAHをそのままにするか桁上げ分の1を加算するかが決定される。すなわち、下位ビットALと仮数ビットBLの加算に桁上げが発生しない場合は、上位ビットAHはそのままとなり、下位ビットALと仮数ビットBLの加算に桁上げが発生する場合は、上位ビットAHに1が加算される。
また、−A+BおよびA−Bの演算においては、下位ビットALと仮数ビットBLの大小関係および上位ビットAHが0か否かによって、上位ビットAHをそのままにするか桁下げ分の−1を加算するかが決定される。すなわち、下位ビットALが仮数ビットBLより小さく(AL<BL)、かつ、上位ビットAHが0ではない場合は、下位ビットALから仮数ビットBLが減算される際に上位ビットAHからのボローが発生し、上位ビットに−1が加算される。また、下位ビットALが仮数ビットBL以上(AL≧BL)かまたは上位ビットAHが0の場合は、下位ビットALから仮数ビットBLが減算される際に上位ビットAHからのボローが発生することはなく、上位ビットAHはそのままとなる。
次いで、図4に示す表について、より具体的に説明する。
図4に示す表において、浮動小数点数Aと浮動小数点数Bが同符号の場合(すなわちA+Bの場合)、絶対値加算部600は、通常の加算を行えば良いため、下位ビットについては、キャリーインが0の加算器623からの加算結果が選択される。すなわち、下位ビットの演算結果SLは、出力部626の入力zとなる。また、加算器623による加算過程で桁上げが発生しなければキャリーアウトCO_0は0となり、上位ビットについては、+0演算器613からの出力が選択される。すなわち、上位ビットの演算結果SHは、出力部614の入力Zとなる。一方、加算器623による加算過程で桁上げが発生すればキャリーアウトCO_0は1となり、上位ビットについては、+1演算器611からの出力が選択される。すなわち、上位ビットの演算結果SHは、出力部614の入力Xとなる。
次に、浮動小数点数Aが負の値かつ浮動小数点数Bが正の値である場合(すなわち−A+Bの場合)、下位ビットについては、−AL+BLが演算されることになる。このとき、浮動小数点数Aが負であるため、論理否定算出部621からは下位ビットALの論理否定!ALが出力され、加算器623および加算器624における演算とインバータ625とにより、出力部626の入力x、y、zは、それぞれ以下の式(3)のようになる。
x=!AL+BL+1
y=!(!AL+BL) …(3)
z=!AL+BL
ここで、加算器624のキャリーアウトCO_1が0の場合、−AL+BLが負であることになり、絶対値加算結果は−(−AL+BL)となる。このため、上式(2)と同様に、−(−AL+BL)を次式(4)のように変形する。
−(−AL+BL)=!(!AL+BL) …(4)
これは、上式(3)における入力yに等しく、下位ビットの演算結果SLは、出力部626の入力yとなる。また、このとき、−AL+BLが負であることから、AL>BLなる関係が成立し、上位ビットAHからのボローが発生することはなく、上位ビットの演算結果SHは、出力部614の入力Zとなる。
一方、加算器624のキャリーアウトCO_1が1の場合、−AL+BLが0以上であることになるが、特に加算器623のキャリーアウトCO_0が0となるケースに着目すると、加算器623の加算(上式(3)におけるz)においては桁上げが発生せず、加算器624の加算(上式(3)におけるx)においては桁上げが発生している。これは、加算器624におけるキャリーインの1が伝播して桁上げが発生していることを意味しているため、加算器623における加算結果!AL+BL(=z)は、すべて1からなるビット列であることがわかる。すなわち、下位ビットALの論理否定!ALと仮数ビットBLとが互いに論理否定の関係にあることになり、これは下位ビットALと仮数ビットBLが等しいことを意味している。このため、下位ビットの演算結果SL(=−AL+BL)は0であり、すべて1からなる加算器623の加算結果がインバータ625によって反転された入力yが選択される。このとき、−AL+BLが0であることから、上位ビットAHからのボローが発生することはなく、上位ビットの演算結果SHは、出力部614の入力Zとなる。
また、加算器624のキャリーアウトCO_1が1かつ加算器623のキャリーアウトCO_0が1となるケースでは、−AL+BLが正であることから、AL<BLなる関係が成立し、上位ビットAHからのボローが発生する可能性がある。具体的には、上位ビットAHが0でない、すなわち上位ビット情報AH_0が0ならば、ボローが発生することになる。ボローが発生する場合は、−AL+BLが正であっても、実質的には上位ビットAHからの桁下げによって下位ビットALの方が仮数ビットBLよりも大きくなり、−AL+BLが負となる場合の演算と同様になる。したがって、下位ビットの演算結果SLは、出力部626の入力yとなる。このとき、上位ビットAHからのボローが発生しているため、上位ビットの演算結果SHは、出力部614の入力Yとなる。
さらに、上位ビットAHが0である、すなわち上位ビット情報AH_0が1ならば、浮動小数点数Aの桁数が浮動小数点数Bの桁数以下であることを意味しており、ボローは発生しない。ボローが発生しない場合は、−AL+BLが正であることから、単純にBL−ALの減算を行えば良い。したがって、下位ビットの演算結果SLは、出力部626の入力xとなる。このとき、上位ビットAHからのボローが発生していないため、上位ビットの演算結果SHは、出力部614の入力Zとなる。
次に、浮動小数点数Aが正の値かつ浮動小数点数Bが負の値である場合(すなわちA−Bの場合)、下位ビットについては、AL−BLが演算されることになる。このとき、浮動小数点数Bが負であるため、論理否定算出部622からは仮数ビットBLの論理否定!BLが出力され、加算器623および加算器624における演算とインバータ625とにより、出力部626の入力x、y、zは、それぞれ以下の式(5)のようになる。
x=AL+!BL+1
y=!(AL+!BL) …(5)
z=AL+!BL
ここで、加算器624のキャリーアウトCO_1が1の場合、AL−BLが0以上であることになり、単純にAL−BLの減算を行えば良い。したがって、下位ビットの演算結果SLは、出力部626の入力xとなる。このとき、AL−BLが正であることから、AL>BLなる関係が成立し、上位ビットAHからのボローが発生することはなく、上位ビットの演算結果SHは、出力部614の入力Zとなる。
一方、加算器624のキャリーアウトCO_1が0の場合、AL−BLが負であることから、AL<BLなる関係が成立し、上位ビットAHからのボローが発生する可能性がある。具体的には、上位ビットAHが0でない、すなわち上位ビット情報AH_0が0ならば、ボローが発生することになる。ボローが発生する場合は、AL−BLが負であっても、実質的には上位ビットAHからの桁下げによって下位ビットALの方が仮数ビットBLよりも大きくなり、AL−BLが0以上の場合の演算と同様になる。したがって、下位ビットの演算結果SLは、出力部626の入力xとなる。このとき、上位ビットAHからのボローが発生しているため、上位ビットの演算結果SHは、出力部614の入力Yとなる。
さらに、上位ビットAHが0である、すなわち上位ビット情報AH_0が1ならば、浮動小数点数Aの桁数が浮動小数点数Bの桁数以下であることを意味しており、ボローは発生しない。ボローが発生しない場合は、AL−BLが負であることから、絶対値加算結果は−(AL−BL)となる。これは、上式(2)によって、上式(5)における入力yに等しいことがわかり、下位ビットの演算結果SLは、出力部626の入力yとなる。また、このとき、上位ビットAHからのボローが発生していないため、上位ビットの演算結果SHは、出力部614の入力Zとなる。
このように、出力選択部630が図4に示す表に従って、出力部614からの演算結果SHおよび出力部626からの演算結果SLを選択することにより、浮動小数点数Aおよび浮動小数点数Bの絶対値加算結果が得られることになる。このとき、上位ビットAHに関する演算を下位ビットALおよび仮数ビットBLに関する演算と分けたことにより、下位演算部620における加算器623および加算器624は、下位ビットALおよび仮数ビットBLのビット幅に対応したもので十分であるとともに、上位ビットAHに関して0と加算するために設けられていた回路を削減することができる。加えて、本実施の形態において上位ビットAHの演算に関して付加される回路は、非常に簡易な構成であるため、絶対値加算部600の回路規模を削減することができる。
また、上位ビットAHについては、あらかじめ桁上げが発生する場合、桁下げが発生する場合、および桁上げおよび桁下げのいずれも発生しない場合に関する演算を行っておき、下位演算部620による演算の過程で適切な上位ビットの演算結果SHを選択する。このため、下位演算部620による下位ビットALおよび仮数ビットBLの演算が終了すれば、改めて上位ビットAHに関する演算を行う必要がなく、実質的には浮動小数点数Aの仮数ビットよりも小さいビット幅の演算に要する時間だけで浮動小数点数Aの仮数ビットおよび浮動小数点数Bの仮数ビットの絶対値加算が完了する。
以上のように、本実施の形態によれば、ビット幅が異なる2つの数の演算を行う場合に、ビット幅が大きい数を上位ビットと下位ビットに分割し、上位ビットについては、下位ビットの演算からの桁上げおよび桁下げを想定した演算をあらかじめ行っておき、下位ビットに関する演算の過程で適切な上位ビットの演算結果を選択する。このため、下位ビットの演算に要する時間のみで演算が完了し、さらなる処理時間の短縮を図ることができるとともに、上位ビットに関する加算を行うための回路が不要となり、回路規模を削減することができる。
本発明は、ビット幅が異なる2つの数の演算を行う場合に、さらなる処理時間の短縮を図り、回路規模を削減する場合に適用することができる。
図1は、本発明の一実施の形態に係る浮動小数点数演算装置の概略構成を示すブロック図である。 図2は、一実施の形態に係る浮動小数点数の一例を示す図である。 図3は、一実施の形態に係る絶対値加算部の内部構成を示すブロック図である。 図4は、一実施の形態に係る絶対値加算部の演算結果の選択を示す図である。
符号の説明
100、200 分割部
300 指数差計算部
400 符号判定部
500 上下位分割部
600 絶対値加算部
610 上位演算部
611 +1演算器
612 −1演算器
613 +0演算器
614 出力部
620 下位演算部
621、622 論理否定算出部
623、624 加算器
625 インバータ
626 出力部
630 出力選択部
700 正規化シフト部
800 演算部

Claims (5)

  1. 所定のビット幅の第1ビット列と第1ビット列よりもビット幅が大きい第2ビット列との絶対値加算を行う演算処理装置であって、
    第2ビット列を第1ビット列と等しいビット幅の下位ビット部分と下位ビット部分よりも上位の上位ビット部分とに分割する分割手段と、
    前記分割手段によって分割されて得られた上位ビット部分に対する桁上げおよび桁下げの演算を行う第1演算手段と、
    前記分割手段によって分割されて得られた下位ビット部分と第1ビット列の絶対値加算を行う第2演算手段と、
    前記上位ビット部分に関する情報、第1ビット列および第2ビット列の符号情報、ならびに前記第2演算手段による絶対値加算の中間結果に応じて、前記第1演算手段の出力を桁上げ演算結果、桁下げ演算結果、または前記上位ビット部分そのものから選択する選択手段と
    を有することを特徴とする演算処理装置。
  2. 前記選択手段は、
    前記上位ビット部分が0であるか否かに応じて前記第1演算手段の出力を選択することを特徴とする請求項1記載の演算処理装置。
  3. 前記選択手段は、
    第1ビット列および第2ビット列の符号が同符号である場合に、前記桁上げ演算結果または前記上位ビット部分そのものを選択することを特徴とする請求項1記載の演算処理装置。
  4. 前記選択手段は、
    第1ビット列および第2ビット列の符号が異符号である場合に、前記桁下げ演算結果または前記上位ビット部分そのものを選択することを特徴とする請求項1記載の演算処理装置。
  5. 所定のビット幅の第1ビット列と第1ビット列よりもビット幅が大きい第2ビット列との絶対値加算を行う演算処理方法であって、
    第2ビット列を第1ビット列と等しいビット幅の下位ビット部分と下位ビット部分よりも上位の上位ビット部分とに分割する分割工程と、
    前記分割工程にて分割されて得られた上位ビット部分に対する桁上げおよび桁下げの演算を行う第1演算工程と、
    前記分割工程にて分割されて得られた下位ビット部分と第1ビット列の絶対値加算を行う第2演算工程と、
    前記上位ビット部分に関する情報、第1ビット列および第2ビット列の符号情報、ならびに前記第2演算工程における絶対値加算の中間結果に応じて、前記第1演算工程の結果を桁上げ演算結果、桁下げ演算結果、または前記上位ビット部分そのものから選択する選択工程と
    を有することを特徴とする演算処理方法。
JP2008501539A 2006-02-24 2006-02-24 演算処理装置および演算処理方法 Expired - Fee Related JP4500358B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2006/303441 WO2007096982A1 (ja) 2006-02-24 2006-02-24 演算処理装置および演算処理方法

Publications (2)

Publication Number Publication Date
JPWO2007096982A1 JPWO2007096982A1 (ja) 2009-07-09
JP4500358B2 true JP4500358B2 (ja) 2010-07-14

Family

ID=38437044

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008501539A Expired - Fee Related JP4500358B2 (ja) 2006-02-24 2006-02-24 演算処理装置および演算処理方法

Country Status (3)

Country Link
US (1) US8549054B2 (ja)
JP (1) JP4500358B2 (ja)
WO (1) WO2007096982A1 (ja)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010271091A (ja) 2009-05-20 2010-12-02 Seiko Epson Corp 周波数測定装置
JP5440999B2 (ja) * 2009-05-22 2014-03-12 セイコーエプソン株式会社 周波数測定装置
JP5517033B2 (ja) 2009-05-22 2014-06-11 セイコーエプソン株式会社 周波数測定装置
JP5582447B2 (ja) 2009-08-27 2014-09-03 セイコーエプソン株式会社 電気回路、同電気回路を備えたセンサーシステム、及び同電気回路を備えたセンサーデバイス
JP5815918B2 (ja) 2009-10-06 2015-11-17 セイコーエプソン株式会社 周波数測定方法、周波数測定装置及び周波数測定装置を備えた装置
JP5876975B2 (ja) 2009-10-08 2016-03-02 セイコーエプソン株式会社 周波数測定装置及び周波数測定装置における変速分周信号の生成方法
JP5883558B2 (ja) 2010-08-31 2016-03-15 セイコーエプソン株式会社 周波数測定装置及び電子機器
JP2012221188A (ja) * 2011-04-08 2012-11-12 Fujitsu Ltd 演算回路、演算処理装置、及び演算回路の制御方法
CN104412512B (zh) * 2012-06-21 2017-05-24 三菱电机株式会社 编码装置、解码装置、编码方法以及解码方法
CN105045558A (zh) * 2015-09-07 2015-11-11 浪潮(北京)电子信息产业有限公司 一种反码加法器
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
JP7177000B2 (ja) * 2019-05-16 2022-11-22 日立Astemo株式会社 演算装置および演算方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH02310620A (ja) * 1989-05-25 1990-12-26 Fujitsu Ltd 単精度絶対値加減算方式
JPH038018A (ja) * 1989-06-06 1991-01-16 Toshiba Corp 符号付き絶対値加減算器
JP2003196079A (ja) * 2001-12-28 2003-07-11 Fujitsu Ltd 積和演算装置、及び積和演算方法

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5251164A (en) 1992-05-22 1993-10-05 S-Mos Systems, Inc. Low-power area-efficient absolute value arithmetic unit
US5867413A (en) * 1995-10-17 1999-02-02 Hitachi Micro Systems, Inc. Fast method of floating-point multiplication and accumulation
US6061707A (en) * 1998-01-16 2000-05-09 International Business Machines Corporation Method and apparatus for generating an end-around carry in a floating-point pipeline within a computer system
JP2000155671A (ja) 1998-11-24 2000-06-06 Mitsubishi Electric Corp 浮動小数点演算装置
US7490119B2 (en) * 2003-12-11 2009-02-10 International Business Machines Corporation High speed adder design for a multiply-add based floating point unit

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH02310620A (ja) * 1989-05-25 1990-12-26 Fujitsu Ltd 単精度絶対値加減算方式
JPH038018A (ja) * 1989-06-06 1991-01-16 Toshiba Corp 符号付き絶対値加減算器
JP2003196079A (ja) * 2001-12-28 2003-07-11 Fujitsu Ltd 積和演算装置、及び積和演算方法

Also Published As

Publication number Publication date
US20080320065A1 (en) 2008-12-25
US8549054B2 (en) 2013-10-01
JPWO2007096982A1 (ja) 2009-07-09
WO2007096982A1 (ja) 2007-08-30

Similar Documents

Publication Publication Date Title
JP4500358B2 (ja) 演算処理装置および演算処理方法
EP0973089B1 (en) Method and apparatus for computing floating point data
US8694572B2 (en) Decimal floating-point fused multiply-add unit
JP3076046B2 (ja) 例外検出回路
JP4388543B2 (ja) 3項入力の浮動小数点加減算器
JP6415236B2 (ja) 浮動小数点加算ユニットを含む装置及びシステム、並びに浮動小数点加算方法
KR100203468B1 (ko) 부동소수점수를 위한 산술연산장치
CN108694037B (zh) 用于在执行浮点减法时估计移位量的装置和方法
KR102412746B1 (ko) 부동 소수점 제곱근 연산 장치 및 방법
JP4858794B2 (ja) 浮動小数点除算器、及びそれを用いた情報処理装置
US7437400B2 (en) Data processing apparatus and method for performing floating point addition
JP2010238011A (ja) ベクトル乗算処理装置および方法ならびにプログラム
KR102459011B1 (ko) 선두 제로 예측
JP2558669B2 (ja) 浮動小数点演算装置
JPH04172526A (ja) 浮動小数点除算器
CN111124361A (zh) 算术处理装置及其控制方法
JP2555135B2 (ja) 演算回路
KR20230015844A (ko) 극소 검출
JPH02115926A (ja) 浮動小数点正規化丸め装装置
JP3124286B2 (ja) 浮動小数点数演算装置
JPH0498524A (ja) 浮動小数点演算装置
JP2002215384A (ja) 多入力加減算回路
JP2622012B2 (ja) シフト回路
JPH03217938A (ja) 浮動小数点丸め正規化装置
JPH05127874A (ja) 浮動小数点演算装置

Legal Events

Date Code Title Description
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: 20100413

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

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

Free format text: PAYMENT UNTIL: 20130423

Year of fee payment: 3

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

Year of fee payment: 4

LAPS Cancellation because of no payment of annual fees