JPH10149277A - 乗算装置 - Google Patents

乗算装置

Info

Publication number
JPH10149277A
JPH10149277A JP8309093A JP30909396A JPH10149277A JP H10149277 A JPH10149277 A JP H10149277A JP 8309093 A JP8309093 A JP 8309093A JP 30909396 A JP30909396 A JP 30909396A JP H10149277 A JPH10149277 A JP H10149277A
Authority
JP
Japan
Prior art keywords
multiplication
multiplicand
multiplier
multiplication result
partial product
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
JP8309093A
Other languages
English (en)
Other versions
JP3315042B2 (ja
Inventor
Sugitaka Otegi
杉高 樗木
Masanori Ito
正徳 伊藤
Takayasu Hirai
敬康 平井
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.)
Ricoh Co Ltd
Original Assignee
Ricoh 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 Ricoh Co Ltd filed Critical Ricoh Co Ltd
Priority to JP30909396A priority Critical patent/JP3315042B2/ja
Publication of JPH10149277A publication Critical patent/JPH10149277A/ja
Application granted granted Critical
Publication of JP3315042B2 publication Critical patent/JP3315042B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Abstract

(57)【要約】 【課題】 特異計算の場合において、簡単な構成で乗算
結果の補正を行い、精度の高い乗算結果が得られるよう
にする。 【解決手段】 2次のブースの方法により乗算を行う乗
算器6を備えた乗算装置において、特異計算の場合に、
特異計算検出器7から出力される検出信号DETB(=
0)を用い、以下のようにして乗算結果を補正する。検
出信号DETBにより被乗数Xの最下位ビットx0
「1」に修正して乗算器6に入力するとともに、乗算器
6内の1段目のブースデコーダ1から出力される操作信
号を検出信号DETBによりCX=1、Ccomp=1に修
正する(特異計算の場合、C2Xは「0」となる)。これ
により、1段目の部分積生成部3では被乗数X(最下位
ビットx0は「1」)の補数が部分積として生成され、
部分積加算部4ではこれを用いて積P(乗算結果)が算
出される。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、ブースの方法(Boo
th's method)により乗算を行う乗算装置に関するもので
あり、更に詳しくは、その乗算装置の通常の処理によっ
ては正しい乗算結果が得られない乗数と被乗数との組合
せである特異計算の場合に乗算結果を補正するための手
段に関する。
【0002】
【従来の技術】乗算をより高速に実行するために、LS
I(大規模集積回路)などのハードウェアで乗算を実現
する方法が従来から検討されている。この場合、いかに
小さい回路で即ち半導体基板上のいかに小さい面積で、
いかに高速に乗算を行うことができるかが重要となる。
【0003】このようなハードウェアによる乗算の実現
に際し、乗算手法としてブースの方法(Booth's metho
d)がよく利用されている。そして、ブースの方法を前
提として、高速で低コストの乗算器を実現するための提
案(特公昭57−28129号)や、乗算器における消
費電力を低減するための提案がなされている(特願平7
−259826号)。
【0004】一般に、被乗数Xと乗数Yとの積を得るに
は、図9に示すように、まず乗数Yの桁毎(ビット毎)
に被乗数Xとの部分積を求め、次にそれぞれの部分積を
加算(累積加算)すればよい。このような乗算の過程に
おいて、部分積の加算で多くの時間を要する。したがっ
て、部分積の項数を減らすことができれば、乗算の高速
化が可能となる。そこで2次のブースの方法では、図1
0に示すように部分積の数を約半数に減らすことによ
り、乗算の高速化を図っている。なお、2次のブースの
方法では、2の補数表示による乗算、すなわち正や負の
数が混在した乗算が補正なしに実行できる。以下、この
2次のブースの方法を具体的に説明する。
【0005】いま、乗数Yが2の補数表示になっている
とすると、乗数Yを次のように表すことができる。 Y=−yn・2n+Σ(i=0,n-1)yi・2i =−yn・2n+yn-1・2n-1+yn-2・2n-2+・・・+y0・20 …(1) ここで、ynは符号ビットであり、yn-1〜y0は数値部
である。なお上記において、"Σ"は総和の記号であっ
て、"Σ(i=n1,n2)"は次に続く項についてi=n1からi
=n2まで総和をとることを意味するものとする(以下
においても同様)。上記式(1)より、被乗数Xと乗数Y
との積Pを次のように表すことができる。 P=X・Y =−yn・2n・X+yn-1・2n-1・X+yn-2・2n-2・X+・・・+y0・20・X = (y-1+y0−2y1)20・X+(y1+y2−2y3)22・X+・・・ +(yn-2+yn-1−2yn)2n-1・X =Σ(j=0,(n-1)/2)(y2j-1+y2j−2y2j+1)22j・X …(2) ここで、y-1=0であり、nは奇数である。
【0006】上記式(2)における (y2j-1+y2j−2y2j+1)22j・X …(3) が2次のブースの方法における部分積であり、部分積の
個数は(n+1)/2である。したがって、乗数のビッ
ト毎に被乗数との部分積を求める一般的な方法に比べ、
項数が半減している。
【0007】上記式(3)で示される部分積における係数 (y2j-1+y2j−2y2j+1) …(4) は、乗数Yにおける連続する3ビットy2j-1,y2j,y
2j+1の値によって決定され、0,±1,±2のいずれか
となる。このため、2次のブースの方法における部分積
は、0,±X・22j,±2X・22jのいずれかとなる。し
たがって、被乗数Xに対して、0にする、そのままにす
る、2倍にする、2の補数を求める(正負を反転させ
る)、という各操作を行う回路を部分積生成回路として
用意することにより、部分積を得ることができる。この
とき、これらの操作のうちいずれの操作を被乗数Xに対
して行うかを示す操作信号が必要となるが、これには、
連続する3ビットy2j-1,y2j,y2j+1の値を用いて図
11に示す真理値表によって定義される信号CX,C2
X,Ccompを操作信号として作成する回路(「ブースデ
コーダ」と呼ばれる)を用意すればよい。ここで、操作
信号CXは被乗数Xをそのままにするか否かを示し、操
作信号C2Xは被乗数Xを2倍にするか否かを示し、操作
信号Ccompは被乗数Xの2の補数を求めるか否かを示
す。また、この真理値表における"状態"は部分積の内容
を示すものであって、具体的には部分積の式(3)におけ
る(y2j-1+y2j−2y2j+1)X の部分を示している
(後述の他の真理値表においても同様)。この真理値表
より、操作信号CX,C2X,Ccompは次の論理式により
表すことができる。 CX =yi-1(+)yi …(5) C2X =!{(yi-1(+)yi)+!(yi(+)yi+1)} …(6) Ccomp=yi+1 …(7) ただし、i=0,2,4,…… ここで、"(+)"は排他的論理和の演算子であり、"!"
は論理否定の演算子であって"!a"はaの反転値を示す
ものとする(以下においても同様)。
【0008】なお、j=0に対応する部分積は (y-1+y0−2y1)22j・X=(y0−2y1)22j・X であるため、操作信号CX,C2X,Ccompを定義する真
理値表は図12に示すようになり、これらの操作信号は
次の論理式により表すことができる。 CX =y0 …(8) C2X =!(y0+!y1) …(9) Ccomp=y1 …(10) ただし、i=0、2、4、……
【0009】上述のブースデコーダおよび部分積生成回
路を用いて得られる前記式(3)に示される各部分積(j=
0,1,2,…,(n-1)/2 のそれぞれに対応する部分積)を加
算(累積加算)することにより、被乗数Xと乗数Yとの
積Pを得ることができる。ところで、2の補数表示の2
進数の乗算においてブースの方法で求められる各部分積
は2の補数表示となっている。したがって、上記の積P
の算出において、図13に示すように、下位側の部分積
については符号拡張して加算しなければ正しい積Pを得
ることができない(図13において"△"は部分積の符号
ビットを揃えるための符号拡張ビットを示している)。
しかし、このような符号拡張を行うと部分積のビット数
が増え、部分積の加算を行うハードウェア量が増大して
しまう。そこで、この事態を回避するために、以下のよ
うにして部分積の加算が行われる。
【0010】いま、ビット長mの部分積PPを PP=−amm+am-1m-1+am-2m-2+・・・+a00 …(11) で表すこととし、これに対し符号ビットの拡張を考え
る。ここで、符号ビットamをrビット拡張したとする
と、 PP=−amm+r+amm+r-1+・・・+amm+1+amm +am-1m-1+am-2m-2+・・・+a00 …(12) となる。さらに am=1−!am …(13) とおくと、 PP=(1−!am)(−2m+r+2m+r-1+・・・+2m+1+2m) +am-1m-1+am-2m-2+・・・+a00 =−2m+r+2m+r-1+・・・+2m+1+(!am+1)2m +am-1m-1+am-2m-2+・・・+a00 …(14) となる。上記式(14)より、図13に示された部分積の加
算は、図14に示される部分積の加算と等価になる。そ
して、図14に示される加算を整理すると、最終的に図
15に示すようになる(図14および図15おける"○"
は、符号ビットamの反転ビット!amを示すものとす
る)。このようにして、図15に示すように、部分積の
最上位ビット(符号ビット)を反転させ、所定のビット
位置に「1」を加えることにより、符号拡張をせずに部
分積の加算を行って正しい積Pを得ることができる。
【0011】いま、2の補数表示の二つの16ビットの
数を入力して、ブースの方法によりそれらの積を算出す
る乗算器を考える。この乗算器の被乗数Xのとりうる値
は216通り、乗数Yのとりうる値も216通りであり、し
たがって、この乗算器への入力の組合せは232通り存在
する。すなわち、この乗算器で実行される乗算の種類は
32通りある。しかし、このうちの「8000h×8000h」と
いう乗算については、上記ブースの方法によっては正し
い積を得ることができない。すなわち、上記のブースの
方法によれば、16ビットの数(2の補数表示)の乗算
は、図16に示すような部分積の加算によって行われ、
31ビットの乗算結果(積)P30〜P0が得られるが、
「8000h×8000h」という乗算については、図17に示す
ように、演算結果が「40000000h」となる。いま、図1
8に示すように小数点の位置が符号ビットの右隣である
と仮定すると、「8000h」は「−1」を示し、「4000000
0h」も「−1」を示し、その結果、図17は「(−1)
×(−1)=(−1)」を示すことになり、誤った乗算
結果が得られたことになる。このように「8000h×8000
h」という乗算について誤った結果が得られるのは、小
数点を他の位置に選んだ場合も同様である。以下では、
正しい乗算結果が得られないこのような乗算を「特異計
算」と呼ぶものとする。
【0012】従来より、このような特異計算の場合に乗
算結果を補正する手段を有する乗算装置が存在する。図
19は、このような補正手段を有する乗算装置の一例
(以下「従来例1」という)を示す回路図である。この
例では、「8000h×8000h」という特異計算を検出するた
めに特異計算検出器7を設け、これから出力される検出
信号DETBを用いて、ANDゲートや、NANDゲー
ト、インバータから成る回路により、16ビットの乗算
器6から出力される乗算結果P30〜P0(被乗数x15
0と乗数y15〜y0との積)を補正している。そして、
補正後の乗算結果PM30〜PM0を図19の乗算装置にお
ける乗算結果としている(なお、特異計算が検出されな
いとき、P30〜P0はPM30〜PM0に等しい)。
【0013】上記構成によれば、被乗数Xおよび乗数Y
が共に「8000h」の場合には、特異計算検出器7の出力
はDETB=0となる。これにより、乗算器6から出力
される乗算結果のうち符号ビットP30は「0」、数値部
のビットP29〜P0は全て「1」となり、補正後の乗算
結果PM30〜PM0として「3FFFFFFFh」が得られる。な
お、図18に示したように小数点の位置が符号ビットの
右隣である場合、この例の乗算装置を利用したデジタル
シグナルプロセッサ(DSP)等では、乗算結果を32
ビットに合わせるため、この補正後の乗算結果を1ビッ
トだけ左方向(上位方向)にシフトさせる。これによ
り、最終的な乗算結果として「7FFFFFFFh」が得られ
る。
【0014】図20は、特異計算の場合に乗算結果を補
正する手段を有する乗算装置の他の例(以下「従来例
2」という)を示す回路図である。この例においても、
従来例1と同様、「8000h×8000h」という特異計算を検
出するために特異計算検出器7を設け、この回路から出
力される検出信号DETBを用いて、16ビットの乗算
器6によって得られる乗算結果を補正する。しかし、こ
の例では、乗算器6から出力される乗算結果P30〜P0
を検出信号DETBを用いて直接補正していた従来例1
とは異なり、検出信号DETBを用いてNANDゲート
およびインバータから成る回路により被乗数Xの最下位
ビットx0を修正することにより、乗算器6から出力さ
れる乗算結果を補正する。
【0015】上記構成によれば、被乗数Xおよび乗数Y
が共に「8000h」の場合に、特異計算検出器7の出力は
DETB=0となり、乗算器6に入力される被乗数Xの
最下位x0ビットは「1」に修正される。これにより、
「8000h×8000h」という特異計算の場合に、乗算器6で
は「8001h×8000h」という乗算が行われ、乗算結果P30
〜P0として「3FFF8000h」という値が出力される。図2
2はこのときの乗算過程を示している。ここで、図18
に示したように小数点の位置が符号ビットの右隣である
場合、この例の乗算装置を利用したDSP等では、乗算
結果を32ビットに合わせるため、この「3FFF8000h」
という乗算結果を1ビットだけ左方向にシフトさせる。
これにより、最終的な乗算結果として「7FFF0000h(=
+0.9999695≒+1)」が得られる。すなわち、小数点
の位置を図18に示すように設定した場合に「(−1)
×(−1)」を意味する特異計算「8000h×8000h」の結
果として、「+0.9999695(≒+1)」を意味する「7FF
F0000h」が得られることになる。
【0016】
【発明が解決しようとする課題】前述の従来例1(図1
9)では、特異計算の場合に乗算結果を補正するため
に、乗算器6から出力される乗算結果を示す各ビットP
30〜P0毎に、NANDゲートまたはANDゲートやイ
ンバータから成る補正回路を必要とし、これらの接続の
ための配線面積も必要であるため、回路規模が大きなも
のとなってしまうという問題がある。
【0017】これに対し、従来例2(図20)によれ
ば、特異計算の場合の補正回路の構成が簡単であり、回
路規模が大きくなることはない。また従来例2では、小
数点の位置を符号ビットの右隣に設定したとすると(図
18参照)、特異計算の場合、「(−1)×(−1)」
の乗算結果として「+0.9999695(≒+1)」が得られ
る。したがって、この場合の誤差はe=3.05×10-5
あり、乗算結果は10進数で約4桁の有効精度を持つこ
とになる。このような乗算装置を利用するDSPは16
ビットを基本語長とする場合が多く、また特異計算が行
われる頻度は極めて低いことから、この有効精度で十分
とも考えられる。
【0018】しかしDSPでは、信号処理で多用される
積和演算を高速に実行するために、例えば図23に示す
ように、データRAM8から順次読み出されるデータと
データRAM9から順次読み出される係数との積を乗算
器6で求め、その積を加算器10とレジスタ11とから
成る回路で累積加算していくという構成が採用されてお
り、この構成における加算器10は例えば40ビットと
いう比較的大きなビット数で演算できるようになってい
る。また、乗算器6から出力される乗算結果(積)も3
1ビットとなっている。さらに、オーディオ製品などの
アプリケーションにおいては、1データ16ビットでは
精度不足であるとして、1データ24ビットのDSPが
主流となっており、この場合、10進数で約6桁の演算
精度を持つことになる。
【0019】また、特異計算は、DSPなどのプログラ
ムの作成者がソフトウェアにてチェックを行い修正すべ
きであり、特異計算の場合に従来例2のような補正が行
われているだけでも価値があるという考え方もある。し
かし従来例2の構成では、特異計算に対しても所定の精
度で結果を出すため、精度よく計算を行いたい場合に、
特異計算の結果によって生じる不具合(精度不足)に気
付かないおそれがある。
【0020】さらに、アドレス演算を行う場合には、乗
算を厳密に行う必要があり、従来例2における精度では
不十分である。例えば、演算値でアドレスを生成し、対
応する値を予めプログラムRAMに格納したテーブルか
ら読み込む、いわゆるテーブルルックアップ方式の場合
には、演算値がそのままプログラムRAMのアドレスと
なるため、従来例2のように粗い丸め操作を伴うと、正
しいデータを読み込めないおそれがある。
【0021】以上より、従来例2は、補正回路の構成が
簡単であるという利点を有するが、特異計算の場合に補
正によって得られる乗算結果の精度は十分なものではな
い。
【0022】そこで本発明では、特異計算の場合におい
て、簡単な構成で乗算結果を補正することができ、かつ
補正により精度の高い乗算結果を得ることができる乗算
装置を提供することを目的とする。
【0023】
【課題を解決するための手段】上記課題を解決するため
に成された本発明に係る第1の乗算装置では、ブースの
方法により符号付き2進数の乗算を行って積を算出する
乗算装置であって、乗数を構成するビット列の一部分で
ある複数ビットの値を入力して被乗数に対する操作を規
定する操作信号を出力するブースデコーダと、前記操作
信号によって規定される操作を被乗数に対して行うこと
により部分積を生成する部分積生成手段と、乗数を構成
するビット列の各部分である各複数ビットの値をブース
デコーダに入力することによって部分積生成手段から出
力される各部分積を累積加算することにより乗算結果を
得る部分積加算手段と、該乗算結果として正しい積が得
られない特異計算の場合であることを乗数および被乗数
に基づいて検出する特異計算検出手段と、特異計算の場
合であることが検出されると該乗算結果を補正する補正
手段とを備える乗算装置において、前記補正手段は、該
乗算結果を補正するために、前記ブースデコーダから出
力される操作信号の値を修正するブースデコーダ出力修
正手段を有する、ことを特徴としている。
【0024】本発明に係る第2の乗算装置では、上記第
1の乗算装置において、前記ブースデコーダ出力修正手
段は、前記乗算結果を補正するために、前記ブースデコ
ーダにより前記乗数の最下位側の複数ビットに対して出
力される前記操作信号の値を、前記被乗数の補数を求め
ることを規定する値に修正する、ことを特徴としてい
る。
【0025】本発明に係る第3の乗算装置では、上記第
1または第2の乗算装置において、前記補正手段は、前
記乗算結果を補正するために前記被乗数を修正する被乗
数修正手段を更に有する、ことを特徴としている。
【0026】本発明に係る第4の乗算装置は、上記第3
の乗算装置において、前記被乗数修正手段は、前記乗算
結果を補正するために前記被乗数の最下位ビットを
「1」に修正する、ことを特徴としている。
【0027】
【発明の実施の形態】16ビットの乗算装置において、
特異計算に対して出力される理想的な乗算結果(31ビ
ットの積)は「7FFFFFFFh」である。既述の従来例2
は、特異計算の場合の乗数や被乗数をそれらに近い値に
置き換えることにより、乗算結果として理想値「7FFFFF
FFh」に近い値を得ようとするものである。しかし、こ
の手法によって得られる特異計算の場合の乗算結果は、
理想値「7FFFFFFFh」にはなり得ず、必然的にその近似
値となる。
【0028】これに対し、特異計算の場合に従来例2に
よって得られる乗算結果「3FFF8000h」(32ビットに
合わせるためのシフトを行う前の値)の下位15ビット
を強制的に「1」にすることが考えられる。図21は、
このような考え方で構成された乗算装置の一例を示して
いる。この例では、従来例2(図20)の出力の下位1
5ビットP14〜P0のそれぞれに対して、NANDゲー
トとインバータから成る回路を追加し、これらにより、
特異計算の場合に、検出信号DETB(=0)を用いて
乗算器6からの31ビットの出力P30〜P0の下位15
ビットを「1」にするという構成になっている。この構
成によれば、特異計算の場合の乗算結果として「3FFFFF
FFh」が得られ、小数点の位置が符号ビットの右隣であ
る場合(図18参照)、この例の乗算装置を利用したD
SP等では、乗算結果を32ビットに合わせるため、こ
の補正後の乗算結果「3FFFFFFFh」が1ビットだけ左方
向にシフトさせられる。その結果、最終的な乗算結果と
して「7FFFFFFFh」が得られる。
【0029】上記のように、図21に示した構成によれ
ば、特異計算の場合に「7FFFFFFFh」という理想的な乗
算結果が得られる。しかし、この構成では、従来例2
(図20)の回路に加えて、乗算結果を構成する31ビ
ットのうちの下位15ビットのそれぞれに対してNAN
Dゲートおよびインバータから成る補正回路を必要と
し、回路規模が大きくなる。
【0030】そこで本実施形態では、特異計算の場合
に、乗算器6から出力される乗算結果を直接補正する代
わりに、ブースデコーダの出力すなわち被乗数に対する
操作信号を修正することにより、乗算器6から出力され
る乗算結果を補正して理想値「7FFFFFFFh」にできるだ
け近い乗算結果を得る、という考え方を導入する。以
下、このような実施形態の詳細について説明する。
【0031】<実施形態の構成>図1(a)は、本発明
の一実施形態である乗算装置の全体構成を示すブロック
図である。本乗算装置は、被乗数X(xk〜x0から成る
2の補数表示の2進数)と乗数Y(yn〜y0から成る2
の補数表示の2進数)との積P(Pk+n-1〜P0から成る
2の補数表示の2進数)を2次のブースの方法に基づい
て算出するものであって、乗算器6に加えて、図20に
示した従来例2と同様に、特異計算を検出する特異計算
検出器7と、特異計算の場合に被乗数Xの値を修正する
ためのNANDゲート102とインバータ101から成
る被乗数修正回路を備えている。
【0032】本乗算装置における乗算器6の構成は図1
(b)に示す通りである。この乗算器6は、2次のブー
スの方法に基づく各部分積を生成するための操作信号C
X,C2X,Ccompを作成するブースデコーダ1,2と、
それらの操作信号CX,C2X,Ccompによって指定され
る操作を被乗数Xに対して行うことにより各部分積を生
成する部分積生成部3と、各部分積を加算する部分積加
算部4とから構成されている。ここで、2次のブースの
方法に基づく各部分積は式(3)によって示され、次の通
りである。 (y2j-1+y2j−2y2j+1)22j・X (j=0,1,2,…,
(n-1)/2、nは奇数)
【0033】上記構成の乗算器6におけるブースデコー
ダのうち、j=0に対応する部分積 (y-1+y0−2y1)22j・X=(y0−2y1)22j・X を生成するための操作信号を作成するブースデコーダ
(1段目のブースデコーダ)1は、式(8)〜(10)すなわ
ち CX =y0 C2X =!(y0+!y1) Ccomp=y1 で示される論理動作を行うものであり、図3に示す回路
により実現することができる。しかし本実施形態では、
特異計算検出器7を備え、特異計算の場合には、乗算結
果を補正するために、特異計算検出器7から出力される
検出信号DETBを用いて、1段目のブースデコーダ1
から出力される操作信号CX,C2X,Ccompを修正する
構成となっている。すなわち本実施形態では、1段目の
ブースデコーダ1の構成として、図3に示す構成の代わ
りに図2に示す構成が採用されており、特異計算の場合
(検出信号DETB=0の場合)には、操作信号のうち
CXおよびCcompは次のようになる。 CX=1、 Ccomp=1 …(15)
【0034】2段目以降のブースデコーダすなわちj=1,
2,…,(n-1)/2のときの部分積 (y2j-1+y2j−2y2j+1)22j・X に対応するブースデコーダ2は、式(5)〜(7)すなわち CX =yi-1(+)yi C2X =!{(yi-1(+)yi)+!(yi(+)
i+1)} Ccomp=yi+1 で示される論理動作を行うものであり、図4に示す回路
により実現することができる。ただし、i=2jであ
る。
【0035】部分積生成部3は、式(3)で示される各部
分積 (y2j-1+y2j−2y2j+1)22j・X (j=0,1,2,…,
(n-1)/2、nは奇数) を生成する部分であって、各部分積に対して1個ずつ設
けられており、各部分積生成部3は各ブースデコーダ
1,2と1対1に対応している。各部分積生成部3は、
図5に示すように、各部分積を構成するビットPPm
PP0を生成する部分積ビット生成回路5を各部分積の
ビット数だけ設けた構成となっており、対応するブース
デコーダ1,2から供給される操作信号CX,C2X,Cc
ompによって指定される操作を被乗数Xに対して行う。
ここで、操作信号CXは被乗数Xをそのまま出力するか
否かを示す。また、操作信号C2Xは被乗数Xを2倍にす
るか否かを示し、本実施形態ではC2X=1のとき被乗数
Xを1ビットだけ左方向にシフトさせることにより被乗
数Xを2倍にする。操作信号Ccompは被乗数Xの正負を
反転させるか否か、すなわち2の補数を求めるか否かを
示す。被乗数Xの2の補数は、Xの各ビットを反転させ
て最下位ビットに「1」を加えることにより得られる
が、この「1」の加算操作を部分積生成部3で行うとハ
ードウェア量の増大を招くことになる。そこで本実施形
態では、操作信号Ccomp=1のとき、各部分積生成部3
が被乗数Xの各ビットを反転させ、部分積加算部4が
「1」の加算操作を行うことにより、被乗数Xの2の補
数を求める。
【0036】図7は、上記のような操作を指定する操作
信号CX,C2X,Ccompを用いて部分積を生成する部分
積生成部3の動作を示す真理値表を示しており、この真
理値表における"PPi"は部分積生成部3を構成する各
部分積ビット生成回路5の出力を表している。この真理
値表によって示される動作を行う部分積ビット生成回路
5は、図6に示す回路により実現することができる。
【0037】部分積加算部4は、各部分積生成部3で生
成された部分積を加算することにより、被乗数Xと乗数
Yとの積PをビットPk+n-1〜P0から成る2の補数表示
の2進数として生成する。このとき、下位側の部分積に
ついて符号拡張せずにそのまま加算すると正しい積Pを
得ることができないが、符号拡張をするとハードウェア
量が増大する。そこで部分積加算部4では、既述のよう
に、部分積の最上位ビット(符号ビット)を反転させ、
所定のビット位置に「1」を加えることにより(図15
参照)、符号拡張をせずに部分積の加算を行って正しい
積Pを得るようにしている。
【0038】<実施形態の動作>以下、本実施形態の乗
算装置の動作を説明する。本乗算装置では、まず、式
(3)によって示される各部分積に対応するブースデコー
ダ1,2が、乗数Yを構成するビット列のうちその部分
積に対応する複数ビットy2j-1,y2j,y2j+1を用いて
操作信号CX,C2X,Ccompを生成する。各ブースデコ
ーダ1,2で生成されるこれらの操作信号CX,C2X,
Ccompは、対応する部分積生成部3に入力され、各部分
積生成回路3は、入力された操作信号CX,C2X,Ccom
pによって指定される操作を被乗数Xに対して行う。こ
のようにして各部分積生成回路3が並列に動作し、これ
により、式(3)で示される各部分積が独立に生成され
る。生成された各部分積は部分積加算部4において加算
され、これにより被乗数Xと乗数Yとの積Pが得られ
る。このような2次のブースの方法に基づく乗算装置に
よれば、乗数のビット毎に被乗数との部分積を生成する
方法に比べ、部分積加算部4で加算される部分積の数が
約半分となるため(式(2)参照)、乗算を高速に実行す
ることができる。
【0039】次に、被乗数Xと乗数Yとの組合せが特異
計算の場合における本乗算装置の動作を説明する。この
場合、被乗数Xと乗数Yとから特異計算検出部7におい
て特異計算が検出され、検出信号DETBとして「0」
が出力される。この検出信号DETBにより、被乗数X
の最下位ビットx0が強制的に「1」とされて乗算器6
に入力される(図1(a)参照)。被乗数Xの他のビッ
トxk〜x1および乗数Yはそのまま乗算器6に入力され
る。
【0040】また、上記の検出信号DETBは、1段目
のブースデコーダ1に入力され、ブースエンコーダ1の
出力の修正にも使用される。すなわち、検出信号DET
B(=0)により、1段目のブースデコーダ1から出力
される操作信号CX、Ccompは、 CX=1、 Ccomp=1 …(15) となり、特異計算の場合はy0=y1=0であるため、操
作信号C2xは C2X=0 となる(図2参照)。ここで、図7に示す"状態"の表記
法を用いてブースデコーダ1の出力を表現するものとす
ると、1段目のブースデコーダ1の出力は「−X」とな
る(以下、この表記法によってブースデコーダの出力を
表現するものとする)。2段目以降のブースデコーダ2
から出力される操作信号は特異計算でない場合と同様で
あって、最終段以外のブースデコーダ2の出力は
「0」、最終段のブースデコーダ2の出力は「−2X」
となる。
【0041】以上のようなブースデコーダ1,2の出力
に基づき、最下位ビットx0の修正された被乗数X(図
1参照)を用いて各部分積が生成され、生成された各部
分積を部分積加算部4が加算することにより、特異計算
の場合であっても精度の高い乗算結果が得られる。
【0042】例えば被乗数Xおよび乗数Yを16ビット
とすると、特異計算の場合、被乗数Xおよび乗数Yは共
に「8000h」であり、被乗数Xについては最下位ビット
が「1」に修正されX=8001hとして、乗数Yについて
はそのまま、乗算器6に入力される。そして、これらの
入力値を用いて、1段目のブースデコーダ1の出力「−
X」に対応する部分積、2段目〜7段目のブースデコー
ダ2の出力「0」に対応する部分積、および、最終段で
ある8段目のブースデコーダ2の出力「−2X」に対応
する部分積がそれぞれ生成され、それらの部分積が加算
される。このとき、下位側の部分積の符号拡張を避ける
ために、部分積の最上位ビット(符号ビット)が反転さ
れ、所定のビット位置に「1」が加えられる(図15、
図16参照)。その結果、部分積の加算は図8に示すよ
うになり、乗算結果(31ビットの積P)として「3FFF
FFFFh」が得られる。ここで、図18に示したように小
数点の位置が符号ビットの右隣である場合、本乗算装置
を利用したDSP等では、乗算結果を32ビットに合わ
せるため、この「3FFFFFFFh」という乗算結果を1ビッ
トだけ左方向にシフトさせる。このとき最下位ビットに
は「0」が入力され、最終的な乗算結果として「7FFFFF
FEh(=+0.9999…)」が得られる。これは、「(−
1)×(−1)」という特異計算において、10進数で
約9桁の演算精度が得られていることを意味する。
【0043】ところで上記の特異計算の場合の理想的な
乗算結果は「7FFFFFFFh」であるため、上記構成により
得られる乗算結果「7FFFFFFEh」を理想的なものとする
には最下位ビット「0」を「1」に修正する必要があ
る。そのためには、乗算器6から出力される積Pを左方
向へ1ビットだけシフトさせる際に、特異計算が検出さ
れた場合には最下位ビットに「0」の代わりに「1」を
入力する、という構成を採用すればよい。このような構
成は簡単な回路で実現することができる。
【0044】<実施形態の効果>上記実施形態では、特
異計算の場合における乗算結果の補正に使用されるハー
ドウェアは、特異計算検出器7、被乗数Xの最下位ビッ
トを修正する被乗数修正回路(インバータ101、NA
NDゲート102)、および1段目のブースデコーダ1
の出力結果を修正する回路(図2参照)であり、これら
により、特異計算の場合に図8に示すような乗算が行わ
れる。したがって上記実施形態によれば、僅かなハード
ウェアの追加によって、特異計算の場合であっても精度
の高い乗算結果が得られる。
【0045】なお、上記説明において16ビット×16
ビットの乗算を例に挙げたが、現状では32ビット×3
2ビットの乗算も珍しくなくなってきた。このように演
算のビット数が増えると従来例1(図19)等では補正
のためのハードウェア量がそれだけ増大するが、上記実
施形態ではこのような増大は見られず、演算ビット数が
増えるにしたがって、上記実施形態はより有利となる。
【0046】<変形例>上記実施形態では、特異計算の
場合において出力の修正されるブースデコーダは1段目
のみであるが、本発明はこれに限定されるものではな
く、特異計算の場合に理想的な乗算結果またはそれに近
い乗算結果が得られるように他の段のブースデコーダの
出力を修正してもよい(修正対象のブースエンコーダは
複数であってもよい)。
【0047】また上記実施形態は、ブースデコーダおよ
び部分積生成部を複数個設け、各部分積を並列に生成す
る構成となっているが、ブースの方法に基づく部分積を
逐次的に生成する構成の乗算装置も考えられる。このよ
うな逐次型の乗算装置においても、上記実施形態と同様
にして特異計算の場合にブースデコーダの出力を修正す
ることにより乗算結果を補正することが可能であり、上
記実施形態と同様の効果が得られる。
【0048】
【発明の効果】本発明によれば、特異計算の場合におい
て、乗算結果のビット毎に補正が行われていた従来の乗
算装置とは異なり、ブースデコーダから出力される操作
信号を修正することにより乗算結果が補正されるため、
補正手段を少量のハードウェアで実現することができる
(第1の乗算装置参照)。このとき、操作信号を修正す
るブースデコーダおよび操作信号の修正内容を適切に選
択することにより、例えば1段目のブースデコーダの操
作信号の値を被乗数の補数を求めることを規定する値に
修正することにより、特異計算の場合における補正後の
乗算結果の精度を高めることができる(第2の乗算装置
参照)。また、被乗数修正手段を更に設けると、少量の
ハードウェアの追加で特異計算の場合における乗算結果
の補正の自由度が大きくなり、これにより精度の高い乗
算結果が容易に得られる(第3の乗算装置参照)。例え
ば、特異計算の場合において、1段目のブースデコーダ
の操作信号の値を被乗数の補数を求めることを規定する
値に修正すると共に、被乗数修正手段により被乗数の最
下位ビットを「1」に修正すると、乗算結果の下位側の
ビットまで「1」となるため、理想的な乗算結果または
それに近い乗算結果が得られる(第4の乗算装置参
照)。
【0049】なお、既述のようにアドレス演算では乗算
を厳密に行う必要があり、例えば演算値がそのままプロ
グラムRAMのアドレスとなるテーブルルックアップ方
式の場合において、特異計算の乗算結果に対する従来の
丸め操作を伴う補正によっては、正しいデータを読み込
めないことがあった。しかし、このようなアドレス演算
において本発明を適用すれば、特異計算の場合にも精度
の高い乗算結果が得られるため、このような問題が解消
され、演算結果であるアドレスにより常に正しいデータ
を読み込めるようになる。
【図面の簡単な説明】
【図1】 本発明の一実施形態である乗算装置の構成を
示すブロック図。
【図2】 上記実施形態の乗算装置における1段目のブ
ースデコーダの構成を示す回路図。
【図3】 従来の乗算装置における1段目のブースデコ
ーダの構成を示す回路図。
【図4】 上記実施形態の乗算装置における2段目以降
のブースデコーダの構成を示す回路図。
【図5】 上記実施形態の乗算装置における部分積生成
部の構成を示すブロック図。
【図6】 部分積生成部における部分積ビット生成回路
の構成を示す回路図。
【図7】 部分積生成部の動作を示す真理値表を示す
図。
【図8】 上記実施形態の乗算装置における特異計算の
場合の乗算過程を示す図。
【図9】 従来の一般的な乗算方法による乗算過程を示
す図。
【図10】 2次のブースの方法による乗算過程を示す
図。
【図11】 2次のブースの方法に基づく乗算装置にお
けるブースデコーダの出力を定義する真理値表を示す
図。
【図12】 2次のブースの方法に基づく乗算装置にお
ける1段目のブースデコーダの出力を定義する真理値表
を示す図。
【図13】 部分積の加算の際における符号拡張を示す
図。
【図14】 符号拡張をせずに部分積の加算を行う方法
を説明するための図。
【図15】 符号拡張をせずに部分積の加算を行う方法
を示す図。
【図16】 16ビットの乗算において符号拡張をせず
に部分積の加算を行う方法を示す図。
【図17】 特異計算の場合において補正を行わないと
きの乗算過程を示す図。
【図18】 2の補数表示の16ビットの2進数におけ
る小数点位置の設定を示す図。
【図19】 補正手段を有する乗算装置の従来例(従来
例1)を示す図。
【図20】 補正手段を有する乗算装置の他の従来例
(従来例2)を示す図。
【図21】 従来例2の乗算装置を改良した乗算装置の
構成を示す図。
【図22】 従来例2の乗算装置における乗算過程を示
す図。
【図23】 DSPにおいて積和演算を高速に実行する
ための構成を示すブロック図。
【符号の説明】
1 …ブースデコーダ(1段目) 2 …ブース
デコーダ(2段目以降) 3 …部分積生成部 4 …部分積
加算部 6 …乗算器 7 …特異計
算検出部 X …被乗数 Y …乗数 P …積 DETB …
検出信号 CX,C2X,Ccomp …操作信号

Claims (4)

    【特許請求の範囲】
  1. 【請求項1】 ブースの方法により符号付き2進数の乗
    算を行って積を算出する乗算装置であって、乗数を構成
    するビット列の一部分である複数ビットの値を入力して
    被乗数に対する操作を規定する操作信号を出力するブー
    スデコーダと、前記操作信号によって規定される操作を
    被乗数に対して行うことにより部分積を生成する部分積
    生成手段と、乗数を構成するビット列の各部分である各
    複数ビットの値をブースデコーダに入力することによっ
    て部分積生成手段から出力される各部分積を累積加算す
    ることにより乗算結果を得る部分積加算手段と、該乗算
    結果として正しい積が得られない特異計算の場合である
    ことを乗数および被乗数に基づいて検出する特異計算検
    出手段と、特異計算の場合であることが検出されると該
    乗算結果を補正する補正手段とを備える乗算装置におい
    て、 前記補正手段は、該乗算結果を補正するために、前記ブ
    ースデコーダから出力される操作信号の値を修正するブ
    ースデコーダ出力修正手段を有する、ことを特徴とする
    乗算装置。
  2. 【請求項2】 請求項1に記載の乗算装置において、 前記ブースデコーダ出力修正手段は、前記乗算結果を補
    正するために、前記ブースデコーダにより前記乗数の最
    下位側の複数ビットに対して出力される前記操作信号の
    値を、前記被乗数の補数を求めることを規定する値に修
    正する、ことを特徴とする乗算装置。
  3. 【請求項3】 請求項1または請求項2に記載の乗算装
    置において、 前記補正手段は、前記乗算結果を補正するために前記被
    乗数を修正する被乗数修正手段を更に有する、ことを特
    徴とする乗算装置。
  4. 【請求項4】 請求項3に記載の乗算装置において、 前記被乗数修正手段は、前記乗算結果を補正するために
    前記被乗数の最下位ビットを「1」に修正する、ことを
    特徴とする乗算装置。
JP30909396A 1996-11-20 1996-11-20 乗算装置 Expired - Fee Related JP3315042B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP30909396A JP3315042B2 (ja) 1996-11-20 1996-11-20 乗算装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP30909396A JP3315042B2 (ja) 1996-11-20 1996-11-20 乗算装置

Publications (2)

Publication Number Publication Date
JPH10149277A true JPH10149277A (ja) 1998-06-02
JP3315042B2 JP3315042B2 (ja) 2002-08-19

Family

ID=17988809

Family Applications (1)

Application Number Title Priority Date Filing Date
JP30909396A Expired - Fee Related JP3315042B2 (ja) 1996-11-20 1996-11-20 乗算装置

Country Status (1)

Country Link
JP (1) JP3315042B2 (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009524169A (ja) * 2006-01-20 2009-06-25 クゥアルコム・インコーポレイテッド 予め飽和させる固定小数点乗算器
JP2009266239A (ja) * 2001-02-21 2009-11-12 Mips Technologies Inc 拡張精度アキュムレータ
JP2016045685A (ja) * 2014-08-22 2016-04-04 富士通株式会社 乗算回路及びその乗算方法

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009266239A (ja) * 2001-02-21 2009-11-12 Mips Technologies Inc 拡張精度アキュムレータ
JP2013080487A (ja) * 2001-02-21 2013-05-02 Mips Technologies Inc 拡張精度アキュムレータ
JP2009524169A (ja) * 2006-01-20 2009-06-25 クゥアルコム・インコーポレイテッド 予め飽和させる固定小数点乗算器
JP2011248904A (ja) * 2006-01-20 2011-12-08 Qualcomm Incorporated 予め飽和させる固定小数点乗算器
US8082287B2 (en) 2006-01-20 2011-12-20 Qualcomm Incorporated Pre-saturating fixed-point multiplier
TWI396130B (zh) * 2006-01-20 2013-05-11 Qualcomm Inc 預飽和固定點乘法器
JP2016045685A (ja) * 2014-08-22 2016-04-04 富士通株式会社 乗算回路及びその乗算方法

Also Published As

Publication number Publication date
JP3315042B2 (ja) 2002-08-19

Similar Documents

Publication Publication Date Title
JPH0612229A (ja) 乗累算回路
JP2002108606A (ja) スティッキービット生成回路及び乗算器
JP5640081B2 (ja) 飽和を伴う整数乗算および乗算加算演算
JP2006227939A (ja) 演算装置
US20140358979A1 (en) GENERATING A FAST 3x MULTIPLAND TERM FOR RADIX-8 BOOTH MULTIPLICATION
WO1999066423A1 (fr) Dispositif pour calcul de donnees
JP2502836B2 (ja) 除算回路の前処理装置
WO2000031621A1 (en) Arithmetic operations in a data processing system
JP3315042B2 (ja) 乗算装置
JP2511527B2 (ja) 浮動小数点演算器
JPH07234778A (ja) 演算回路
JPH09222991A (ja) 加算方法および加算器
JP2991788B2 (ja) 復号器
JPH0370416B2 (ja)
JP2705162B2 (ja) 演算処理装置
JP2608090B2 (ja) 高基数非回復型除算装置
JP3201097B2 (ja) 乗算器における乗算処方方法
JP2699624B2 (ja) 乗算器
KR100386979B1 (ko) 갈로아체상에서 비트 직렬 승산기의 병렬화 방법 및 이를이용한 직병렬 승산기
JPH113210A (ja) 3入力比較器、並びにこれを用いた飽和演算装置およびその演算方法
JPH1124893A (ja) 逆平方根演算器
JPH02181823A (ja) 除算装置
KR100623604B1 (ko) 데이터 처리장치 및 그의 데이터 처리 방법
JPH02114324A (ja) 乗算器
JPH071876B2 (ja) Bch符号の復号装置

Legal Events

Date Code Title Description
FPAY Renewal fee payment (prs date is renewal date of database)

Free format text: PAYMENT UNTIL: 20080607

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20090607

Year of fee payment: 7

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

Free format text: PAYMENT UNTIL: 20090607

Year of fee payment: 7

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

Free format text: PAYMENT UNTIL: 20100607

Year of fee payment: 8

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

Free format text: PAYMENT UNTIL: 20110607

Year of fee payment: 9

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

Free format text: PAYMENT UNTIL: 20110607

Year of fee payment: 9

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

Free format text: PAYMENT UNTIL: 20120607

Year of fee payment: 10

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

Free format text: PAYMENT UNTIL: 20130607

Year of fee payment: 11

LAPS Cancellation because of no payment of annual fees