JP2006227939A - 演算装置 - Google Patents

演算装置 Download PDF

Info

Publication number
JP2006227939A
JP2006227939A JP2005041340A JP2005041340A JP2006227939A JP 2006227939 A JP2006227939 A JP 2006227939A JP 2005041340 A JP2005041340 A JP 2005041340A JP 2005041340 A JP2005041340 A JP 2005041340A JP 2006227939 A JP2006227939 A JP 2006227939A
Authority
JP
Japan
Prior art keywords
carry
sum
correction value
product
value
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.)
Pending
Application number
JP2005041340A
Other languages
English (en)
Inventor
Daisuke Takeuchi
大輔 武内
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.)
Panasonic Holdings Corp
Original Assignee
Matsushita Electric Industrial Co 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 Matsushita Electric Industrial Co Ltd filed Critical Matsushita Electric Industrial Co Ltd
Priority to JP2005041340A priority Critical patent/JP2006227939A/ja
Priority to US11/354,888 priority patent/US7315163B2/en
Priority to CNB2006100083264A priority patent/CN100440136C/zh
Publication of JP2006227939A publication Critical patent/JP2006227939A/ja
Pending legal-status Critical Current

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/49905Exception handling
    • G06F7/4991Overflow or underflow
    • G06F7/49921Saturation, i.e. clipping the result to a minimum or maximum value
    • 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/52Multiplying; Dividing
    • G06F7/523Multiplying only
    • G06F7/533Reduction of the number of iteration steps or stages, e.g. using the Booth algorithm, log-sum, odd-even
    • G06F7/5332Reduction of the number of iteration steps or stages, e.g. using the Booth algorithm, log-sum, odd-even by skipping over strings of zeroes or ones, e.g. using the Booth Algorithm

Abstract

【課題】乗算結果のオーバーフローを補正し、演算の高速化も図る。
【解決手段】オーバーフロー検出部102は、被乗数Aと乗数Bが共に負で絶対値が最大値であるかどうかによって、オーバーフローが生じることを検出する。桁上げ保存加算部101bは部分積と第1補正値の−1(全ビットが1の値)とを桁上げ保存加算し、A×B−1に対応した中間和と中間桁上げとを出力する。桁上げ伝播加算部104は、中間和と、中間桁上げと、第2補正値とを桁上げ伝播加算して、乗算結果を出力する。上記第2補正値は、オーバーフローが生じない場合には1になり、第1補正値が相殺されてA×Bが演算結果になる。一方、オーバーフローが生じる場合には0になり、第1補正値によってオーバーフローが補正されたA×B−1が演算結果になる。
【選択図】図1

Description

本発明は、固定小数点数の乗算や積和、積差などの演算を行なう演算装置に関するものである。
音声データやマルチメディアデータ等に対してディジタル演算処理を行なうLSIには、乗算装置や積和演算装置などの演算装置をオンチップ化することが一般的になっている。この種の演算装置では、高精度な演算が要求される処理については、2の補数表現された固定小数点数での演算が行なわれる。上記固定小数点数の演算においては、乗算の結果がオーバーフローする場合には飽和処理を行なうことが要求される。すなわち、固定小数点数のビット数をnとすると、取り得る値の範囲は、−2n〜+2n−1(2進表現で100…00〜011…11である。)それゆえ、被乗数と乗数とが共に最小値(負で絶対値が最大値)である場合には、乗算結果がオーバーフローすることになる(表現可能な正の値の範囲を超える。)。そこで、乗算結果を表現可能な正の最大値に補正する飽和処理が行われる。
上記のような飽和処理を行う従来の装置は、例えば図17に示すように、被乗数Aと乗数Bとの複数の部分積を生成する部分積生成部901と、生成された部分積を加算する加算器902と、オーバーフローの有無を検出するオーバーフロー検出部903と、オーバーフローの有無に応じて、加算器902の加算結果と飽和値(正の最大値)とを選択的に出力するセレクタ904とを備えている。これにより、オーバーフローが生じる場合(被乗数Aと乗数Bとが共に負で絶対値が最大値である場合)には、飽和値が選択されることによって乗算結果が補正されるようになっている。
ところが、上記のようにセレクタ904によって加算器902の出力と飽和値とが切り換えられる場合、オーバーフローが生じない場合の乗算結果は、加算器902から出力されてからセレクタ904の遅延時間分だけ遅れて得られることになる。
そこで、ブースのアルゴリズムを用いた演算装置について、オーバーフローが生じる場合にはブースエンコーダに所定の値を出力させ、その値に対して乗算を行わせることにより、飽和値が得られるようにするものが提案されている(例えば、特許文献1参照。)。
特開平1−267728号公報
しかしながら、上記のような手法は、ブースエンコーダを備えた演算装置にしか適用することができない。しかも、上記のようなブースエンコーダを用いても、実際に演算の高速化を図ることは必ずしも容易ではない。すなわち、ブースエンコーダがオーバーフローの有無に応じて制御される場合、オーバーフローの検出に要する時間が演算時間に加算されることになる。したがって、セレクタによる遅延時間は生じないとしても、オーバーフローの検出に要する時間だけ演算時間は増大するため、結果的に演算が高速化されるとは限らない。
本発明は、上記の点に鑑み、乗算結果のオーバーフローが適切に補正されるとともに、乗算を含む演算を容易に高速化できるようにすることを課題としている。
上記の課題を解決するため、本発明の演算装置は、
2の補数表現された固定小数点数である被乗数Aと乗数Bとの乗算を含む演算を行う演算装置であって、
上記被乗数Aと乗数Bとの積におけるオーバーフローの有無を検出するオーバーフロー検出部と、
上記被乗数Aと乗数Bとの複数の部分積と、所定の第1の補正値(例えば−1)とが桁上げ保存加算されて得られる中間和および中間桁上げを求める中間積生成部と、
上記中間和と中間桁上げとが桁上げ伝播加算された演算結果を求める桁上げ伝播加算部と、
を備え、
上記オーバーフロー検出部の検出結果に応じた所定の第2の補正値(例えばオーバーフローが生じる場合には0、生じない場合には1)が、上記中間積生成部および桁上げ伝播加算部の何れか一方で加算されるように構成されたことを特徴とする。
上記オーバーフロー検出部は、例えば被乗数Aおよび乗数Bが共に負で絶対値が最大値である場合に、オーバーフローが生じたと検出するように構成される。
また、上記中間積生成部は、例えば上記複数の部分積と第1の補正値とを木状に並列に桁上げ保存加算するように構成される。
これにより、例えば、オーバーフローが生じる場合に補正するための補正値として、全ビットの値が1であるような第1の補正値をオーバーフローの有無に係わらず桁上げ保存加算させることができるので、オーバーフローの検出タイミングの制約による遅延や、桁上げ伝播による遅延を回避することができる。一方、例えばオーバーフローの有無に応じた1か0の1ビットの第2補正値を加算させ、少ない遅延で、または遅延を生じることなく、上記第1の補正値による補正をキャンセルしたり有効にしたりするように制御することができる。また、第2の補正値が演算処理の後段で行われるようにして、オーバーフロー検出タイミングの余裕を大きくすることもできる。それゆえ、オーバーフローを適切に補正するとともに、乗算を含む演算を高速化に行わせることが容易にできる。
また、上記のような構成は、積を求めるだけでなく、加数Xとの積和を求める演算装置に適用してもよい。具体的には、部分積と第1の補正値と加数とが桁上げ保存加算されるようにしたり、部分積と第1の補正値とが加算された中間和および中間桁上げと、加数とが桁上げ保存加算されたりするようにしてもよい。この場合、演算結果のビット数が被乗数と乗数とのビット数の合計と同じになるように、中間和および中間桁上げのシフト(ビット数の拡張)が行われるようにしてもよく、その際、最下位ビットに1が埋め込まれるようにしたりして、所定の補正値が加減算されるのと同じ動作を適切に行わせることなどができる。
また、さらに、演算選択信号などに応じて、加数Xとの積和や積差を選択的に求める演算装置を構成してもよい。すなわち、部分積と第1の補正値が桁上げ保存加算された中間和および中間桁上げが、2の補数変換や、ビット反転および所定の補正値の加算がなされて、加数と加算されることにより、積差が求められるようにすることができる。この場合、例えば積和と積差とで、ビット反転の有無が制御されるとともに、第1の補正値が切り換えられるようにしたり、第1の補正値は一定で第3の補正値が切り換えられるようにしたりして、中間和および中間桁上げが加数から減算された値が得られるようにすることができる。
また、上記のような構成は、ブースのアルゴリズムが用いられる演算装置に適用してもよい。すなわち、乗数エンコード部によって、積和と積差とで乗数または乗数の−1倍についてのエンコードが行われるようにすることにより、積和や積差が求められるとともに、オーバーフローの補正された演算結果を高速に得ることができる。
本発明によれば、乗算結果のオーバーフローが適切に補正されるとともに、乗算を含む演算の高速化を容易かつ確実に図ることができる。
以下、本発明の実施形態を図面に基づいて詳細に説明する。なお、以下の各実施形態において、他の実施形態と同様の機能を有する構成要素については同一の符号を付して説明を省略する。
《発明の実施形態1》
本発明の実施形態1として、被乗数Aと乗数Bとの積を求める演算装置の例を説明する。この演算装置は、図1に示すように、中間積生成部101と、オーバーフロー検出部102と、セレクタ103と、桁上げ伝播加算部104とを備えて構成されている。
中間積生成部101には、複数の部分積を生成する部分積生成部101a、および上記複数の部分積と第1補正値としての−1(全ビットが1の値)とを桁上げ保存加算する桁上げ保存加算部101bが設けられている。すなわち、中間積生成部101からは、A×B−1に対応した中間和と中間桁上げとが出力されるようになっている。なお、上記中間積生成部101は、ブースのアルゴリズムが適用されるものでもよいし、乗数の各ビットごとの部分積が加算されるものでもよい。また、特に限定はされないが、上記複数の部分積と第1補正値とが木状に並列に桁上げ保存加算されるようにすれば、多くの場合、上記第1補正値を加算するための論理段数の増加を回避して、より演算を高速化することが容易にできる。
オーバーフロー検出部102は、被乗数Aおよび乗数Bが共に負で絶対値が最大値であるかどうかによって、オーバーフローが生じることを検出し、オーバーフロー検出信号ODを真にするようになっている。
セレクタ103は、第2補正値として、オーバーフロー検出信号ODが真の場合には0、偽の場合には1を選択的に出力し、桁上げ伝播加算部104にLSB(最下位ビット)への桁上げ入力として入力するようになっている。
桁上げ伝播加算部104は、上記中間和と、中間桁上げと、第2補正値とを桁上げ伝播加算して、乗算結果を出力するようになっている。
上記のように構成された演算装置においては、中間積生成部101では、オーバーフローの有無に係わらず、各部分積に加えて第1補正値の−1が加算される。また、桁上げ伝播加算部104ではオーバーフローが生じない場合には1、生じる場合には0が第2補正値として加算される。
そこで、オーバーフローが生じない場合には、A×B−1+1が演算され、一旦加算された第1補正値が第2補正値によってキャンセルされるので、演算結果として適切にA×Bの値が求められることになる。
一方、オーバーフローが生じる場合には、オーバーフローが補正された演算結果A×B−1が求められる。具体的には、例えば図2に示すような演算が行われる。(ここで、同図においては、小数点は、その左側にあるMSB(最上位ビット)が固定小数点数の符号であることを示している。なお、以下の説明では、原則として2進表記を用いる。)すなわち、被乗数Aと乗数Bとが共に負で絶対値が最大値(1.000000)である場合には、最上位桁の部分積として1000000、その他の桁の部分積として0000000が生成される。これらの部分積が合計されると、オーバーフローして符号ビットだけが1になる値が得られるが、これらの部分積と第1補正値の−1(=1.111111111111)とが桁上げ保存加算部101bによって累算されると、中間和および中間桁上げは、それぞれ、0.111111111111と、0.00000000000になる。すなわち、正の最大値に対応する中間和と中間桁上げとが得られることになる。上記中間和と中間桁上げと第2補正値(オーバーフロー検出部102によってオーバーフローが検出されると値は0)とが桁上げ伝播加算部104によって加算されると、乗算結果0.111111111111、すなわち表現可能な正の最大値に補正された値が得られる。
上記のように、オーバーフローに係わらず一定の第1補正値(例えばオーバーフローが生じる場合のための補正値)が、部分積とともに桁上げ保存加算される一方、実際にオーバーフローが生じるかどうかに応じて、第2補正値(例えば第1の補正値による補正がキャンセルされる値、またはその補正に影響を与えない値)が桁上げ伝播加算等されるようにすることにより、例えば、桁上げ伝播加算されると遅延時間が長くなるような補正値をあらかじめ第1補正値として桁上げ保存加算した後に、オーバーフローの有無に応じた第2補正値によって上記第1補正値をキャンセルし得るようにすることができる。それゆえ、演算時間を短く抑えつつ、オーバーフローの補正を適切に行わせることができる。しかも、オーバーフローの検出は、第2補正値の制御が可能となるタイミングで行われればよいので、検出時間の余裕が大きくなり、演算時間の増大を容易に抑えることができる。
特に、前記のように、第1補正値が桁上げ保存加算される場合には、桁上げ伝播のような遅延が生じない。また、複数の部分積と第1補正値とが木状に並列に桁上げ保存加算されるようにする場合には、第1補正値を加算するための論理段数の増加を回避して演算時間を短く抑えることが容易にできる。また、第2補正値が1または0になるように制御される場合には、LSBに関しては中間和との2数加算が行われるようにするだけでよいので、第2補正値が加算されない場合に対する回路素子の遅延増加程度も容易に小さく抑えることができる。さらに、第1補正値は定数なので、これが加算されない場合に比べて、回路規模の大幅な増加を招くこともない。
なお、上記の例では、説明の便宜上、セレクタ103が設けられ、第2補正値として、オーバーフロー検出信号ODに応じて0または1の値が選択的に出力されるとして説明したが、実際には、上記オーバーフロー検出信号ODのレベルを第2補正値の0または1に対応させて、桁上げ伝播加算部104に直接(または反転されて)入力されるようにしてもよい。
また、第2補正値の加算は、後段で行われるほど、オーバーフローの検出タイミングの余裕が大きくなるが、検出が間に合う場合には、桁上げ保存加算部101bで桁上げ入力として加算されるようにしたりしてもよい。また、第1補正値がオーバーフローの有無に応じて−1になるか0になるかが制御されるようにしてもよい。
《発明の実施形態2》
本発明の実施形態2として、被乗数Aと乗数Bとの積と、加数Xとの和(積和)を求める演算装置の例を説明する。この演算装置は、実施形態1の演算装置と比べて、図2に示すように、中間積生成部101に代えて中間積生成部201を備えている。上記中間積生成部201には、部分積生成部101aおよび桁上げ保存加算部101bに加えて、さらにシフト部201cと桁上げ保存加算部201dが設けられている。
上記シフト部201cは、桁上げ保存加算部101bにより全ての部分積と第1補正値(−1)とが加算されて得られる第1中間和および第1中間桁上げをそれぞれ左1ビットシフトして、シフト中間和およびシフト中間桁上げを出力するようになっている。上記左1ビットシフトの際には、シフト中間和のLSBには1が埋め込まれ、シフト中間桁上げのLSBには0が埋め込まれる。
桁上げ保存加算部201dは、上記シフト中間和と、シフト中間桁上げと、加数Xとを加算して3数を2数に圧縮し、第2中間和および第2中間桁上げを出力するようになっている。
ここで、上記シフト部201cとしては必ずしもシフトレジスタのようにデータを保持してシフトするものを用いる必要はなく、桁上げ保存加算部101bから出力される値のLSBが1ビット上位側にずれて桁上げ保存加算部201dに入力され、加数XのLSBが1と加算されるようになっていればよい。なお、上記のようなシフトを行うことによって、例えば2の補数表現された7ビットの固定小数点数どうしが乗算される場合に、14ビットの積を得ることができるが、例えば加数Xも13ビットであるなど、必要な精度が得られる場合であれば、必ずしも上記のようなシフト(ビット数拡張)は行われなくてもよい。逆に、加数Xが24ビットであるなど、積より加数のビット数が大きい場合は、積と加数Xの小数点位置が合う分だけ第1中間和と第1中間桁上げを左シフトし、シフト量だけ第1中間和のLSBから1を埋め込めばよい。
上記のように構成された演算装置では、第1中間和が左シフトされてLSBに1が埋め込まれることによって、ビット数拡張された積に対して−1が加算されたのと同じことになる。
具体的には、オーバーフローが生じる場合には、例えば図4に示すように、シフトおよび埋め込みによって、14ビットの積に−1が加算されてオーバーフローが補正された乗算結果A×B−1に対応するシフト中間和およびシフト中間桁上げ(0.1111111111111、および0.000000000000)が得られる。そこで、これらのシフト中間和およびシフト中間桁上げと、加数Xとが、桁上げ保存加算部201dで加算されて、第2中間和(y.y…)、および第2中間桁上げ(z.z…)が生成され、これらと、オーバーフローの検出によって0となる第2補正値とが桁上げ伝播加算部104により加算されることによって、加数Xと、補正された乗算結果0.1111111111111(正の最大値)との積和X+A×B−1が得られる。
一方、オーバーフローが生じない場合には、実施形態1で説明したのと同様に、第2補正値が1になることによって上記第1補正値による補正がキャンセルされ、X+A×B−1+1、すなわち通常の積和X+A×Bが得られる。
なお、本実施形態2においても、第2補正値の加算は、桁上げ伝播加算部104で行われるのに限らず、桁上げ保存加算部201dの桁上げ入力として加算されるようにしたりしても、オーバーフローの検出が間に合い、かつ、正しい演算結果が得られる箇所で加算されるようにされればよい。また、各補正値が加算部で加減算されるのに限らず、シフト部で埋め込まれる値や、これと加減算との組み合わせによって、補正値が加減算されたのと同じことになるようにしてもよい。もっとも、遅延や回路規模をより低減するためには、木状並列加算の段数や、各桁の加算数が少なくなるようにすることが好ましい。
また、加数Xの加算も、桁上げ保存加算部201dに限らず、桁上げ保存加算部101bで加算されるようにして、シフト部201cや桁上げ保存加算部201dを設けなくてもよいようにしてもよい。また、その場合には、(実施形態1で説明したようにオーバーフローの検出が間に合う場合には、)さらに第2補正値も桁上げ保存加算部101bで加算されるようにしてもよい。
また、積和が求められる演算装置の例として説明したが、加数Xとして0が入力されるようにすれば、積A×BまたはA×B−1を求めることができる。
《発明の実施形態3》
本発明の実施形態3として、演算選択信号の指示に応じて、被乗数Aと乗数Bとの積と、加数Xとの和(積和)または差(積差)を選択的に求める演算装置の例を説明する。この演算装置は、実施形態2の演算装置と比べて、図5に示すように、セレクタ305を備えるとともに、中間積生成部201、およびセレクタ103に代えて、中間積生成部301、およびセレクタ303を備えている。上記中間積生成部301には、実施形態1、2と同様の部分積生成部101aおよび桁上げ保存加算部101bと、実施形態2と同様の桁上げ保存加算部201dと、シフト部301cと、2の補数変換部301eとが設けられている。
上記セレクタ305、シフト部301c、2の補数変換部301e、およびセレクタ303は、それぞれ以下のような値を出力するようになっている。すなわち、
セレクタ305は、第1補正値として、
積和演算が行われる場合には−1、
積差演算が行われる場合には0を出力し、
シフト部301cは、桁上げ保存加算部101bから出力される第1中間和および第1中間桁上げを左1ビットシフトするとともに、これらのLSBに、
中間和については、積和の場合には1を埋め込み、積差の場合には0を埋め込み、
中間桁上げについては、常に0を埋め込み、
2の補数変換部301eは、
積和の場合には、シフト中間和およびシフト中間桁上げをそのまま出力する一方、
積差の場合には、これらの2の補数を出力し、
セレクタ303は、第2補正値として、
積和の場合には、オーバーフローが生じれば0、生じなければ1、
積差の場合には、オーバーフローが生じれば1、生じなければ0を出力するようになっている。
上記のように構成された演算装置では、積和演算が行われる場合には、実施形態2の演算装置と同じ演算が行われる。すなわち、オーバーフローが生じる場合には、図6に示すように、オーバーフローの補正が行われた適切な積和X+A×B−1が求められる。一方、オーバーフローが生じない場合には、第1補正値による補正が第2補正値によってキャンセルされ、通常の積和X+A×B−1+1=X+A×Bが得られる。
また、積差演算が行われる場合には、前記のように第1補正値は0となり、第2補正値は、オーバーフローが生じなければ0、生じれば1となる。
そこで、オーバーフローが生じない場合には、桁上げ保存加算部101bからは全ての部分積と第1補正値としての0が桁上げ保存加算された第1中間和と第1中間桁上げとが出力され、それぞれ、シフト部301cで左シフトされてLSBに0が埋め込まれ、2の補数変換部301eで2の補数に変換された後、桁上げ保存加算部201dで加数Xと桁上げ保存加算される。これによって、積差X−A×Bに対応する第2中間和と第2中間桁上げとが得られ、これらが桁上げ伝播加算部104で桁上げ伝播加算される。ここで、オーバーフローが生じていなければ、上記第1中間和、第1中間桁上げ、およびこれらがシフトされて2の補数に変換された値も、適切に表現された値となる。そこで、上記のように桁上げ伝播加算部104によって第2中間和と第2中間桁上げと第2補正値としての0とが桁上げ伝播加算されることによって、適切な積差X−A×Bが得られる。
一方、積差演算が行われる場合で、オーバーフローが生じる場合には、図7に示すように、第1中間和は、符号ビットだけが1となる値(1.000000000000)、すなわち、表現可能な最大値よりも1だけ大きい値となり、これが左シフトされてLSBに0が埋め込まれた値(1.0000000000000)に関しても同じである。また、オーバーフローが生じる場合の第1中間桁上げは0.00000000000であり、これがシフトおよび2の補数変換された値は0.000000000000となる。したがって、シフト後の−A×Bは1.0000000000000となり、正の最大値の2補数より1だけ大きい値、すなわちオーバーフロー補正された積の2の補数より1だけ大きい値となる。積A×Bは、−1倍(2の補数変換)されることによって表現可能な値になるとしても、加数Xから減ぜられる前にオーバーフローが補正された乗算結果A×B−1となっている必要があるため、第2中間和および中間桁上げが桁上げ伝播加算部104によって加算される際に、第2補正値としての値1が加算されることによって、加数Xと、補正された乗算結果1.0000000000001との積差X−A×B+1=X−(A×B−1)、すなわちオーバーフローが適切に補正された積差が得られる。
なお、上記2の補数変換のための補正値の加算が桁上げ保存加算部201dで行われるようにして、桁上げ伝播による演算時間の増大が生じないようにしたり小さく抑えられるようにして、より確実に演算時間を低減し得るようにしてもよい。
また、第2補正値は、実施形態2で説明したのと同じように桁上げ保存加算部201dで加算されるようにしたりしてもよく、さらに、各部で加算される種々の加算値やシフトの埋め込み値の組み合わせによって、最終的に、2の補数変換のための加算やオーバーフローの補正が行われるようになっていればよい。
なお、上記第1中間和のように、演算過程において、必ずしも理論的な正規の表現状態にならなくても、結果的に適切な演算結果が得られるようにすることができる。
《発明の実施形態4》
積和または積差演算が行われる演算装置の他の例を説明する。この演算装置は、実施形態3の演算装置と比べて、図8に示すように、中間積生成部301に代えて、中間積生成部401を備えている。この中間積生成部401には、実施形態1、2と同様の部分積生成部101aおよび桁上げ保存加算部101bと、実施形態3と同様のシフト部301cと、桁上げ保存加算部401dと、論理反転部401eとが設けられている。
また、セレクタ305は設けられず、中間積生成部401の桁上げ保存加算部101bには常に−1が入力されるようになっている。一方、セレクタ406が設けられ、演算選択信号に応じた第3補正値が桁上げ保存加算部401dに入力されるようになっている。
より詳しくは、上記論理反転部401eは、積和演算が行われる場合には、シフト部301cから出力されるシフト中間和およびシフト中間桁上げをそのまま出力する一方、積差の場合には、それぞれ各ビットの値が論理反転された値を出力するようになっている。
桁上げ保存加算部401dは、論理反転部401eから出力される中間和および中間桁上げと、加数Xとに加えて、さらに、セレクタ406から出力される第3補正値(積和の場合には0、積差の場合には1)を桁上げ保存加算して、第2中間和および第2中間桁上げの2数に圧縮するようになっている。
上記のように構成された演算装置では、積和演算が行われる場合には、実施形態2、3の演算装置と同じ演算が行われる。すなわち、オーバーフローが生じる場合には、図9に示すようにオーバーフローの補正が行われて、適切な積和X+A×B−1が求められる。一方、オーバーフローが生じない場合には、第1補正値による補正が第2補正値によってキャンセルされ、通常の積和X+A×B−1+1=X+A×Bが得られる。
また、積差演算が行われる場合には、図10にオーバーフローが生じる場合の例を示すように、第1補正値は積和の場合と同じく−1であるが、シフト部301cで第1中間和および第1中間桁上げがシフトされる際には、LSB(中間桁上げについては中間和のLSBよりも1つ上位の桁)に0が埋め込まれ、各ビットの値が論理反転された後、桁上げ保存加算部401dで加数Xが加算される際に第3補正値として1が加算される。(なお、中間和のLSBに0を埋め込んで反転するのに代えて、桁上げ保存加算部401dに直接1が入力されるようにしたりしてもよい。)
すなわち、上記第1補正値(−1)の加算は、その後のシフト、および0埋めを考慮すると、−10が加算されることに相当する。そこで、シフト中間和(S)およびシフト中間桁上げ(C)は、A×B−10に対応する中間和および中間桁上げとなる。
S+C=A×B−10
一方、論理反転部401eでは、上記シフト中間和に対しては全てのビット、シフト中間積に対してはシフト中間和のLSBよりも1つ上位の桁までのビットに対して論理反転がされた論理反転値S’、C’が得られる。
S’=−S−1
C’=−C−10
桁上げ保存加算部401dでは、これらの論理反転値S’、C’と、加数Xと、第3補正値である1とが加算されて、第2中間和および第2中間桁上げが出力される。つまり、
X+S’+C’+1
=X+(−S−1)+(−C−10)+1
=X−(S+C)−10
=X−(A×B−10)−10
=X−A×B
となるので、上記第2中間和および第2中間桁上げは、実施形態3と同じく、積差X−A×Bに対応したものとなる。
したがって、オーバーフローが生じる場合には、上記第2中間和および第2中間桁上げと、第2補正値としての1が、桁上げ伝播加算部104で桁上げ伝播加算されることによって、オーバーフローが適切に補正された積差X−A×B+1=X−(A×B−1)が得られる。しかも、2の補数変換を行うための桁上げ伝播加算を行う必要がないので、演算の高速化を容易に図ることができる。
また、オーバーフローが生じない場合には、第2補正値が0になるので、通常の積差X−A×Bが得られる。
上記のように、0または1の値となる第3補正値を用い、演算が積和か積差かに係わらず、第1補正値が常に−1となるようにすることによって、1ビットの値の制御で、−1(全ビットが1)を加算するかどうかを制御することができ、回路規模を容易に低減することができる。
なお、実施形態2で説明したのと同じように、第2補正値が桁上げ保存加算部101bや桁上げ保存加算部401dで加算されるようにしたりしてもよく、第3補正値も、桁上げ保存加算部101bや桁上げ伝播加算部104で加算されるようにしたりしてもよい。
《発明の実施形態5》
ブースのアルゴリズムを用いて、積和または積差演算が行われる演算装置の例を説明する。この演算装置は、図11に示すように、前記実施形態3の演算装置(図5)と比べて、2の補数変換部301eを有する中間積生成部301に代えて、乗数エンコード部511を有する中間積生成部501が設けられている。その他の構成や、第1、2補正値の値は実施形態3と同じである。
上記乗数エンコード部511は、例えば2次のブースのアルゴリズムに従って、積和が求められる場合には、乗数Bに対応するエンコード結果と、部分積の2の補数の補正項とを出力する一方、積差が求められる場合には、乗数Bの−1倍に対応するエンコード結果と、部分積の2の補数の補正項とを出力するようになっている。すなわち、積差が求められる場合には、実施形態3のように乗算結果が2の補数に変換されることによって−1倍されるのではなく、乗数エンコード部511によって、被乗数Aと乗数Bの−1倍との積A×(−B)が求められるようになっている。
上記のように構成された演算装置では、積和の場合には、図12に示すように、乗数B(1000000)に対して2次のブースエンコードが行われると、エンコード結果は、−1,0,0,0となり、これに対応する2の補数の補正項は1,0,0,0となる。そこで、桁上げ保存加算部101bから出力される第1中間和および第1中間桁上げは、実施形態3(図6)の場合と同じになり、オーバーフローの有無に応じた補正の有無も同様に行われて、適切な積和X+A×B−1、またはX+A×Bが求められる。すなわち、第1補正値の−1が加算されることによってオーバーフローの補正が行われるとともに、オーバーフローが生じない場合には、さらに第2補正値の1が加算されて上記補正がキャンセルされることにより、適切な積和が得られる。
一方、積差の場合には、図13に示すように、エンコード結果は上記積和の場合の2の補数をとった1,0,0,0となり、2の補数の補正項は0,0,0,0となる。そして、オーバーフローが生じなければ、第1補正値も第2補正値も0なので正規の演算が行われ、通常の積差X−A×Bが得られる。また、オーバーフローが生じる場合、実施形態3で説明したように、積は加数Xから減ぜられる前にオーバーフローが補正された乗算結果A×B−1となっている必要がある。そこで、第2中間和および中間桁上げが桁上げ伝播加算部104によって加算される際に、第2補正値としての値1が加算されることによって、加数Xと、補正された乗算結果1.0000000000001との積差X−A×B+1=X−(A×B−1)、すなわちオーバーフローが適切に補正された積差が得られる。
《発明の実施形態6》
ブースのアルゴリズムを用いた演算装置の他の例を説明する。この演算装置は、図14に示すように、実施形態5の演算装置と比べて、中間積生成部501に代えて中間積生成部601が設けられている。また、セレクタ305は有さず、第1補正値として常に−1が中間積生成部601に入力される一方、実施形態4(図8)と同様のセレクタ406を有し、積和または積差演算に応じた第3の補正値が中間積生成部601に入力されるようになっている。
上記中間積生成部601には、実施形態5の中間積生成部501のシフト部301cおよび桁上げ保存加算部201dに代えて、シフト部201cと、桁上げ保存加算部401dとが設けられている。シフト部201cは、1ビット左シフトされる際に、演算が積和か積差かに係わらず、常に、中間和は1、中間桁上げは0を埋め込むようになっている。桁上げ保存加算部401dは、実施形態4と同じもので、シフト部201cによってシフトされたシフト中間和およびシフト中間桁上げと、加数Xと、さらに第3補正値とを桁上げ保存加算するようになっている。
上記のように構成された演算装置では、積和の場合には、図15に示すように、実施形態5の演算装置と同じ演算が行われる。すなわち、第1の補正値は−1、左シフト時に埋め込まれる値は、中間和は1、中間桁上げは0、第3補正値は0であり、第2補正値はオーバーフローの有無に応じて0または1になり、適切な積和X+A×B−1、またはX+A×Bが求められる。
一方、積差の場合には、図16に示すような演算が行われる。すなわち、前記実施形態5では積差の場合に第1補正値が0にされるのに対し、本実施形態6では、積和、積差に係わらず第1補正値として−1が加算され、中間和は左シフトされて1が埋め込まれる。そして、桁上げ保存加算部401dによる加算の際に、積差であれば第3補正値の1が加算されることによって、上記第1補正値がキャンセルされる。そこで、桁上げ保存加算部401dから出力される第2中間和および第2中間桁上げは実施形態5と同じものになり、オーバーフローの有無に応じた第2補正値の加算も同様に行われて、適切な積差X−A×B、またはX−(A×B−1)が得られる。
また、上記のように、0または1の値となる第3補正値を用い、演算が積和か積差かに係わらず、第1補正値が常に−1となるようにすることによって、実施形態4で説明したのと同様、1ビットの値の制御をするだけでよいので、回路規模を容易に低減することができる。
ここで、積がオーバーフローする場合であっても、積の−1倍は2の補数表現として正規に表現可能であるが、上記のように第1補正値の−1が加算されると、図16の第1中間和のように、やはり表現可能な範囲を超えることになる。ところが、これが左シフトされてLSBに1が埋め込まれた後に第3補正値の1が加算されると、表現可能な値に戻るので、適切な積差が得られることになる。すなわち、前記実施形態3について説明したように、演算過程において理論的な正規の表現状態にならない場合があっても、結果的に適切な演算結果が得られるようになっていればよい。
一方、上記のような0または1の値となる第3補正値を用いることによって、1ビットの値の制御で、−1(全ビットが1)を加算するかどうかを制御することができ、回路規模を容易に低減することができる。
なお、上記各実施形態や変形例で説明した構成要素は、それぞれ論理的に可能な範囲で他の実施形態の構成に適用してもよい。具体的には、例えば実施形態1でセレクタ103について説明したのと同様に、オーバーフロー検出信号ODや演算選択信号、またはこれらの論理反転や排他的論理和演算などされた信号が、桁上げ入力や左シフトの埋め込み値などとして桁上げ伝播加算部104等に入力されるようにしてもよい。また、実施形態3などにおいて、実施形態2で説明したように、加数Xとして0が入力されるようにすれば、加算が行われないことになるので、積和や積和だけでなく積(A×BまたはA×B−1)も求めることができる。
本発明にかかる演算装置は、乗算結果のオーバーフローが適切に補正されるとともに、乗算を含む演算の高速化を容易かつ確実に図ることができるという効果を有し、固定小数点数の乗算や積和、積差などの演算を行なう演算装置等として有用である。
実施形態1の演算装置の構成を示すブロック図である。 同、オーバーフローする場合の乗算例を示す説明図である。 実施形態2の演算装置の構成を示すブロック図である。 同、オーバーフローする場合の積和演算例を示す説明図である。 実施形態3の演算装置の構成を示すブロック図である。 同、オーバーフローする場合の積和演算例を示す説明図である。 同、オーバーフローする場合の積差演算例を示す説明図である。 実施形態4の演算装置の構成を示すブロック図である。 同、オーバーフローする場合の積和演算例を示す説明図である。 同、オーバーフローする場合の積差演算例を示す説明図である。 実施形態5の演算装置の構成を示すブロック図である。 同、オーバーフローする場合の積和演算例を示す説明図である。 同、オーバーフローする場合の積差演算例を示す説明図である。 実施形態6の演算装置の構成を示すブロック図である。 同、オーバーフローする場合の積和演算例を示す説明図である。 同、オーバーフローする場合の積差演算例を示す説明図である。 従来の演算装置の構成を示すブロック図である。
符号の説明
101 中間積生成部
101a 部分積生成部
101b 桁上げ保存加算部
102 オーバーフロー検出部
103 セレクタ
104 桁上げ伝播加算部
201 中間積生成部
201c シフト部
201d 桁上げ保存加算部
301 中間積生成部
301c シフト部
301e 2の補数変換部
303 セレクタ
305 セレクタ
401 中間積生成部
401d 桁上げ保存加算部
401e 論理反転部
406 セレクタ
501 中間積生成部
511 乗数エンコード部
601 中間積生成部
601c シフト部

Claims (18)

  1. 2の補数表現された固定小数点数である被乗数Aと乗数Bとの乗算を含む演算を行う演算装置であって、
    上記被乗数Aと乗数Bとの積におけるオーバーフローの有無を検出するオーバーフロー検出部と、
    上記被乗数Aと乗数Bとの複数の部分積と、所定の第1の補正値とが桁上げ保存加算されて得られる中間和および中間桁上げを求める中間積生成部と、
    上記中間和と中間桁上げとが桁上げ伝播加算された演算結果を求める桁上げ伝播加算部と、
    を備え、
    上記オーバーフロー検出部の検出結果に応じた所定の第2の補正値が、上記中間積生成部および桁上げ伝播加算部の何れか一方で加算されるように構成されたことを特徴とする演算装置。
  2. 請求項1の演算装置であって、
    上記オーバーフロー検出部が、上記被乗数Aおよび乗数Bが共に負で絶対値が最大値である場合に、オーバーフローが生じたと検出するように構成されたことを特徴とする演算装置。
  3. 請求項1の演算装置であって、
    上記第1の補正値は、−1であり、
    上記第2の補正値は、上記オーバーフローが生じる場合には0である一方、生じない場合には1であることを特徴とする演算装置。
  4. 請求項1の演算装置であって、
    上記中間積生成部が、上記複数の部分積と第1の補正値とを木状に並列に桁上げ保存加算するように構成されたことを特徴とする演算装置。
  5. 請求項1の演算装置であって、
    上記中間積生成部が、上記被乗数Aと乗数Bとの複数の部分積と、上記第1の補正値と、2の補数表現された加数Xとが桁上げ保存加算されて得られる中間和および中間桁上げを求め、
    上記桁上げ伝播加算部が、上記加数Xと、上記被乗数Aと乗数Bとの積との和(X+A×B)を求めるように構成されたことを特徴とする演算装置。
  6. 請求項5の演算装置であって、
    上記第1の補正値は、−1であり、
    上記第2の補正値は、上記オーバーフローが生じる場合には0である一方、生じない場合には1であることを特徴とする演算装置。
  7. 請求項6の演算装置であって、
    上記中間積生成部が、
    上記被乗数Aと乗数Bとの複数の部分積と、上記第1の補正値とが桁上げ保存加算されて得られる中間和および中間桁上げに対して、上記中間和が1ビット左シフトされて最下位ビットに1が挿入された値と、上記中間桁上げが1ビット左シフトされて最下位ビットに0が挿入された値と、上記加数Xとが桁上げ保存加算されて得られる中間和および中間桁上げ、または、
    上記被乗数Aと乗数Bとの複数の部分積と、上記第1の補正値と、上記加数Xとが桁上げ保存加算されて得られる中間和および中間桁上げを求めるように構成されたことを特徴とする演算装置。
  8. 請求項1の演算装置であって、
    上記中間積生成部が、
    積和が求められる場合に、上記被乗数Aと乗数Bとの複数の部分積と、上記第1の補正値と、2の補数表現された加数Xとが桁上げ保存加算されて得られる中間和および中間桁上げを求める一方、
    積差が求められる場合に、上記被乗数Aと乗数Bとの複数の部分積と、上記第1の補正値とが桁上げ保存加算されて得られる中間和および中間桁上げが、それぞれ2の補数に変換された値と、上記加数Xとが、桁上げ保存加算されて得られる中間和および中間桁上げを求め、
    上記桁上げ伝播加算部が、上記加数Xと、上記被乗数Aと乗数Bとの積との和または差(X+A×BまたはX−A×B)を求めるように構成されたことを特徴とする演算装置。
  9. 請求項8の演算装置であって、
    積和が求められる場合に、
    上記第1の補正値は、−1であり、
    上記第2の補正値は、上記オーバーフローが生じる場合には0である一方、生じない場合には1であるとともに、
    積差が求められる場合に、
    上記第1の補正値は、0であり、
    上記第2の補正値は、上記オーバーフローが生じる場合には1である一方、生じない場合には0であることを特徴とする演算装置。
  10. 請求項9の演算装置であって、
    上記中間積生成部が、
    積和が求められる場合に、上記被乗数Aと乗数Bとの複数の部分積と、上記第1の補正値とが桁上げ保存加算されて得られる中間和および中間桁上げに対して、上記中間和が1ビット左シフトされて最下位ビットに1が挿入された値と、上記中間桁上げが1ビット左シフトされて最下位ビットに0が挿入された値と、上記加数Xとが桁上げ保存加算されて得られる中間和および中間桁上げを求める一方、
    積差が求められる場合に、上記被乗数Aと乗数Bとの複数の部分積と、上記第1の補正値とが桁上げ保存加算されて得られる中間和および中間桁上げに対して、それぞれ、1ビット左シフトされて最下位ビットに0が挿入された値の2の補数と、上記加数Xとが桁上げ保存加算されて得られる中間和および中間桁上げを求めるように構成されたことを特徴とする演算装置。
  11. 請求項1の演算装置であって、
    上記中間積生成部が、
    積和が求められる場合に、上記被乗数Aと乗数Bとの複数の部分積と、上記第1の補正値と、2の補数表現された加数Xとが桁上げ保存加算されて得られる中間和および中間桁上げを求める一方、
    積差が求められる場合に、上記被乗数Aと乗数Bとの複数の部分積と、上記第1の補正値とが桁上げ保存加算されて得られる中間和および中間桁上げが、それぞれ各ビットの値が反転された値と、2の補数表現された加数Xとが桁上げ保存加算されて得られる中間和および中間桁上げを求めるとともに、
    所定の第3の補正値が、上記中間積生成部および桁上げ伝播加算部の何れか一方で加算され、
    上記桁上げ伝播加算部が、上記加数Xと、上記被乗数Aと乗数Bとの積との和または差(X+A×BまたはX−A×B)を求めるように構成されたことを特徴とする演算装置。
  12. 請求項11の演算装置であって、
    上記第1の補正値は、−1であり、
    上記第2の補正値は、
    積和が求められる場合に、上記オーバーフローが生じる場合には0である一方、生じない場合には1であるとともに、
    積差が求められる場合に、上記オーバーフローが生じる場合には1である一方、生じない場合には0であり、
    上記第3の補正値は、
    積和が求められる場合に、0であるとともに、
    積差が求められる場合に、1であることを特徴とする演算装置。
  13. 請求項12の演算装置であって、
    上記中間積生成部が、
    積和が求められる場合に、上記被乗数Aと乗数Bとの複数の部分積と、上記第1の補正値とが桁上げ保存加算されて得られる中間和および中間桁上げに対して、上記中間和が1ビット左シフトされて最下位ビットに1が挿入された値と、上記中間桁上げが1ビット左シフトされて最下位ビットに0が挿入された値と、上記加数Xとが桁上げ保存加算されて得られる中間和および中間桁上げを求める一方、
    積差が求められる場合に、上記被乗数Aと乗数Bとの複数の部分積と、上記第1の補正値とが桁上げ保存加算されて得られる中間和および中間桁上げに対して、それぞれ、1ビット左シフトされて最下位ビットに0が挿入された値の各ビットの値が反転された値と、上記加数Xとが桁上げ保存加算されて得られる中間和および中間桁上げを求めるように構成されたことを特徴とする演算装置。
  14. 請求項1の演算装置であって、さらに、
    積和が求められる場合においては上記乗数B、積差が求められる場合においては上記乗数Bの−1倍が、ブースのアルゴリズムに従ってエンコードされたエンコード結果の乗数D、および上記乗数Dについての2の補数の補正項Eを出力する乗数エンコード部を備え、
    上記中間積生成部が、上記被乗数Aと乗数Dとの複数の部分積と、上記2の補数の補正項Eと、上記第1の補正値とが桁上げ保存加算されて得られる中間和および中間桁上げを求めるとともに、
    上記桁上げ伝播加算部が、上記加数Xと、上記被乗数Aと乗数Bとの積との和または差(X+A×BまたはX−A×B)を求めるように構成されたことを特徴とする演算装置。
  15. 請求項14の演算装置であって、
    積和が求められる場合に、
    上記第1の補正値は、−1であり、
    上記第2の補正値は、上記オーバーフローが生じる場合には0である一方、生じない場合には1であるとともに、
    積差が求められる場合に、
    上記第1の補正値は、0であり、
    上記第2の補正値は、上記オーバーフローが生じる場合には1である一方、生じない場合には0であることを特徴とする演算装置。
  16. 請求項15の演算装置であって、
    上記中間積生成部が、
    積和が求められる場合に、上記被乗数Aと乗数Dとの複数の部分積と、上記2の補数の補正項Eと、上記第1の補正値とが桁上げ保存加算されて得られる中間和および中間桁上げに対して、上記中間和が1ビット左シフトされて最下位ビットに1が挿入された値と、上記中間桁上げが1ビット左シフトされて最下位ビットに0が挿入された値と、上記加数Xとが桁上げ保存加算されて得られる中間和および中間桁上げを求める一方、
    積差が求められる場合に、上記被乗数Aと乗数Dとの複数の部分積と、上記2の補数の補正項Eと、上記第1の補正値とが桁上げ保存加算されて得られる中間和および中間桁上げに対して、それぞれ、1ビット左シフトされて最下位ビットに0が挿入された値と、上記加数Xとが桁上げ保存加算されて得られる中間和および中間桁上げを求めるように構成されたことを特徴とする演算装置。
  17. 請求項14の演算装置であって、
    さらに、所定の第3の補正値が、上記中間積生成部および桁上げ伝播加算部の何れか一方で加算されるように構成され、
    上記第1の補正値は、−1であり、
    上記第2の補正値は、
    積和が求められる場合に、上記オーバーフローが生じる場合には0である一方、生じない場合には1であるとともに、
    積差が求められる場合に、上記オーバーフローが生じる場合には1である一方、生じない場合には0であり、
    上記第3の補正値は、
    積和が求められる場合に、0であるとともに、
    積差が求められる場合に、1であることを特徴とする演算装置。
  18. 請求項17の演算装置であって、
    上記中間積生成部が、上記被乗数Aと乗数Dとの複数の部分積と、上記2の補数の補正項Eと、上記第1の補正値とが桁上げ保存加算されて得られる中間和および中間桁上げに対して、上記中間和が1ビット左シフトされて最下位ビットに1が挿入された値と、上記中間桁上げが1ビット左シフトされて最下位ビットに0が挿入された値と、上記加数Xとが桁上げ保存加算され、またはさらに上記第3の補正値が桁上げ保存加算されて得られる中間和および中間桁上げを求めるように構成されたことを特徴とする演算装置。
JP2005041340A 2005-02-17 2005-02-17 演算装置 Pending JP2006227939A (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2005041340A JP2006227939A (ja) 2005-02-17 2005-02-17 演算装置
US11/354,888 US7315163B2 (en) 2005-02-17 2006-02-16 Arithmetic unit
CNB2006100083264A CN100440136C (zh) 2005-02-17 2006-02-17 算术单元

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2005041340A JP2006227939A (ja) 2005-02-17 2005-02-17 演算装置

Publications (1)

Publication Number Publication Date
JP2006227939A true JP2006227939A (ja) 2006-08-31

Family

ID=36816887

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005041340A Pending JP2006227939A (ja) 2005-02-17 2005-02-17 演算装置

Country Status (3)

Country Link
US (1) US7315163B2 (ja)
JP (1) JP2006227939A (ja)
CN (1) CN100440136C (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010238011A (ja) * 2009-03-31 2010-10-21 Nec Computertechno Ltd ベクトル乗算処理装置および方法ならびにプログラム
JP2012528391A (ja) * 2009-05-27 2012-11-12 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド 飽和を伴う整数乗算および乗算加算演算
JPWO2020246018A1 (ja) * 2019-06-07 2020-12-10

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7725522B2 (en) * 2005-04-14 2010-05-25 Texas Instruments Incorporated High-speed integer multiplier unit handling signed and unsigned operands and occupying a small area
US9092213B2 (en) 2010-09-24 2015-07-28 Intel Corporation Functional unit for vector leading zeroes, vector trailing zeroes, vector operand 1s count and vector parity calculation
US8667042B2 (en) * 2010-09-24 2014-03-04 Intel Corporation Functional unit for vector integer multiply add instruction
US9329835B1 (en) * 2011-10-19 2016-05-03 Marvell International Ltd. Systems and methods for performing mathematical functions
CN103853662B (zh) * 2014-02-21 2016-08-17 北京神舟航天软件技术有限公司 一种航天软件系统溢出检测和破坏限制机制
CN109753268B (zh) * 2017-11-08 2021-02-02 北京思朗科技有限责任公司 多粒度并行运算乘法器
US11068238B2 (en) * 2019-05-21 2021-07-20 Arm Limited Multiplier circuit
US11327718B2 (en) * 2020-03-19 2022-05-10 Kabushiki Kaisha Toshiba Arithmetic circuitry for power-efficient multiply-add operations

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH01267728A (ja) 1988-04-19 1989-10-25 Ricoh Co Ltd 乗算器
US5448509A (en) * 1993-12-08 1995-09-05 Hewlett-Packard Company Efficient hardware handling of positive and negative overflow resulting from arithmetic operations
JP3019796B2 (ja) * 1997-01-10 2000-03-13 日本電気株式会社 乗算器
US6233597B1 (en) * 1997-07-09 2001-05-15 Matsushita Electric Industrial Co., Ltd. Computing apparatus for double-precision multiplication
JPH11126157A (ja) * 1997-10-24 1999-05-11 Matsushita Electric Ind Co Ltd 乗算方法および乗算回路
US6363523B1 (en) * 1999-11-12 2002-03-26 Sun Microsystems, Inc. Optimization of N-base typed arithmetic expressions
GB2389433B (en) * 2002-06-08 2005-08-31 Motorola Inc Bit exactness support in dual-mac architecture

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010238011A (ja) * 2009-03-31 2010-10-21 Nec Computertechno Ltd ベクトル乗算処理装置および方法ならびにプログラム
JP2012528391A (ja) * 2009-05-27 2012-11-12 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド 飽和を伴う整数乗算および乗算加算演算
JPWO2020246018A1 (ja) * 2019-06-07 2020-12-10
WO2020246018A1 (ja) * 2019-06-07 2020-12-10 日本電信電話株式会社 秘密共役勾配法計算システム、秘密計算装置、共役勾配法計算装置、秘密共役勾配法計算方法、共役勾配法計算方法、およびプログラム
JP7205623B2 (ja) 2019-06-07 2023-01-17 日本電信電話株式会社 秘密共役勾配法計算システム、秘密計算装置、共役勾配法計算装置、秘密共役勾配法計算方法、共役勾配法計算方法、およびプログラム

Also Published As

Publication number Publication date
US20060184604A1 (en) 2006-08-17
CN1821951A (zh) 2006-08-23
CN100440136C (zh) 2008-12-03
US7315163B2 (en) 2008-01-01

Similar Documents

Publication Publication Date Title
JP2006227939A (ja) 演算装置
US10402166B2 (en) System and method for processing data in an adder based circuit
JP4376904B2 (ja) 乗算装置
US7809784B2 (en) Apparatus and method for calculation of divisions and square roots
JP2001222410A (ja) 除算器
JP2018097864A (ja) リーディングゼロ予想
JP2010102431A (ja) 浮動小数点数演算回路と浮動小数点演算方法及びサーボ制御装置
JPH0511980A (ja) 桁あふれ検出方式とその回路
JP2645422B2 (ja) 浮動小数点演算処理装置
JP3315042B2 (ja) 乗算装置
KR101100753B1 (ko) 부스 곱셈기
JP2006338215A (ja) ベクトル積和演算回路
JP3482102B2 (ja) 絶対値距離演算回路
KR100761132B1 (ko) Sha-1 연산 방법 및 장치
JPH06342367A (ja) 乗算回路
JP2995721B2 (ja) 除算装置および除算方法
JP4954019B2 (ja) 演算装置
JP2002063023A (ja) 演算装置および演算方法
JP2004178188A (ja) 演算方法、平方根演算方法、累乗根演算方法、累乗演算方法及びg/h乗演算方法
JPH08249161A (ja) 立方根演算装置
JPH1124893A (ja) 逆平方根演算器
JPH11232249A (ja) 積和演算処理装置および積和演算処理方法
JP2002063022A (ja) データ変換装置、データ記憶装置とその方法
JPH1185471A (ja) 演算方法および演算装置
JPH11134176A (ja) 逆数演算回路