JP3226823B2 - 高精度高桁乗算装置 - Google Patents

高精度高桁乗算装置

Info

Publication number
JP3226823B2
JP3226823B2 JP03347297A JP3347297A JP3226823B2 JP 3226823 B2 JP3226823 B2 JP 3226823B2 JP 03347297 A JP03347297 A JP 03347297A JP 3347297 A JP3347297 A JP 3347297A JP 3226823 B2 JP3226823 B2 JP 3226823B2
Authority
JP
Japan
Prior art keywords
digit
partial product
multiplier
product
signal
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 - Lifetime
Application number
JP03347297A
Other languages
English (en)
Other versions
JPH10228369A (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.)
NEC Corp
Original Assignee
NEC Corp
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 NEC Corp filed Critical NEC Corp
Priority to JP03347297A priority Critical patent/JP3226823B2/ja
Publication of JPH10228369A publication Critical patent/JPH10228369A/ja
Application granted granted Critical
Publication of JP3226823B2 publication Critical patent/JP3226823B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は乗算装置に関し、特
に、高桁数値の乗算を高精度に行うことが可能な乗算装
置に関する。
【0002】
【従来の技術】高桁数値の乗算は非線形計画法(PL)
問題を解く過程とか階乗計算を含む科学技術の数値計算
過程でしばしば現れる。数値が20億以下であれば、3
2ビット以下の数値として32ビットの乗算プロセッサ
などで1クロックで乗算が可能である。
【0003】従来、それ以上の桁の数値に対しては、浮
動小数点演算を使用せざるを得ず、従って、高精度で乗
算を行うことが不可能である。微小な誤差が許される場
合は浮動小数点演算でも構わない。しかしながら、誤差
の累積が許されない場合もあり、浮動小数点演算では解
決できない問題が増大しつつある。
【0004】このように、科学技術が進歩した現在で
は、ますます高桁数値の高精度乗算が要求されるように
なってきている。
【0005】周知のように、計算機で実行される乗算に
は2進数の数値が使用される。被乗数及び乗数がそれぞ
れN桁及びM桁であるとする。この場合、従来の乗算方
式では、原則的に乗数の桁数に等しいM個の部分積があ
り、この部分積を左へ1桁づつシフトさせて加算するの
が一般的である。ここで、乗数のビットが“0”の桁に
対応する部分積は省くことができ、ビットが“1”の桁
に対応する部分積は被乗数のビット列を並べたもので構
成できる。32ビット×32ビットを越える乗数は部分
積の数と桁数が極めて大きくなる。
【0006】これを改良・改善するため、桁上げの遅れ
を補償するCLA回路(キャリー先見回路)やキャリー
セーブ回路、あるいは部分積の数を半分とするブースの
乗算器などが採用されている。
【0007】このような改良・改善にも拘らず、通常の
乗算方式では、ビット数が増大すると、整数乗算が実施
困難となる。その為、乗算すべき数値が高桁となると部
分積の数が増し、これが部分積を加算する際に発生する
桁上りの回数を増大させ、高桁数値の乗算を困難にして
いる。
【0008】この問題を解決するために、本発明者は、
既に、平成2年7月13日付け特願平2−184076
号で『分割積型乗算装置』(尚、この出願に基づいて、
平成3年7月12日付けで特願平3−172711号と
して国内優先出願している)(以下、先行技術1と呼
ぶ)を提案した。
【0009】次に、この提案した分割積型乗算装置の要
旨を説明する。分割積型乗算装置は、L(L≧2)進数
で表される第1乃至第N桁要素x[0]〜x[N−1]
のN(N≧2)桁の被乗数Xと上記L進数で表される第
1乃至第M桁要素y[0]〜y[M−1]のM(M≧
2)桁の乗数Yとを乗算し、上記被乗数Xと上記乗数Y
との積Qを高精度で求める。上記積Qは第1乃至第(N
+M)桁要素q[0]〜q[N+M−1]の(N+M)
桁の上記L進数で表される。ここでは、N+MがDに等
しいとする(すなわち、D=N+M)。上記分割積型乗
算装置は、上記被乗数Xの第(n+1)(0≦n≦N−
1)桁要素x[n]と上記乗数Yの第(m+1)(0≦
m≦M−1)桁要素y[m]との分割積p(x[n],
y[m])を位数(n+m)の小さいものから順次求め
る分割積演算手段と、上記位数kの等しい分割積p(x
[n],y[m])を選択することによって、上記分割
積p(x[n],y[m])を位数(n+m)の小さい
ものから順次累算して、上記積Qを第1桁要素q[0]
から第D桁要素q[D−1]へ昇順に順次出力する累算
手段と、を有する。
【0010】尚、この分割積型乗算装置と類似の技術思
想は、例えば、米国特許第3,055,586号明細書
(以下、先行技術2と呼ぶ)にも記載されている。とこ
ろで、分割積p(x[n],y[m])はN行×M列の
整数型要素から成る二次元配列として構成できる。換言
すれば、分割積p(x[n],y[m])は二次元配列
の第n行第m列の整数要素に対応づけられる。このよう
な二次元配列は、既に、スコットランドの数学者であ
る、ネーピア(1550年〜1617年)によって16
17年に創作された「ネーピアの骨」と呼ばれる装置と
等価である。この装置は乗算と除算の計算を容易にす
る。それは、各々が9つに等分割された骨棒からなる。
【0011】また、特開昭60−112141号公報
(以下、先行技術3と呼ぶ)には、被乗数入力X及び乗
数入力Yをそれぞれ被乗数グループX1とX2、乗数グ
ループY1とY2に分割し、第1乃至第4のセレクト信
号により部分積X1・Y1の形成、部分積X1・Y2お
よびX2・Y1の形成、部分積X2・Y2の形成の順に
処理がなされ、これら部分積の複数ビットのシフト及び
累算により乗算処理を行うようにした「乗算回路」が開
示されている。
【0012】
【発明が解決しようとする課題】上述した先行技術1〜
3はいずれも、二桁の分割積を累算しなければならず、
乗算を行うべき被乗数および乗数の桁数が多くなればな
る程、二桁の分割積の累算を行うための累算手段のハー
ドウェアが大きくなるという問題がある。すなわち、2
つの二桁の分割積を加算するには二桁加算器が必要とな
るが、多数の二桁の分割積を累算していくためには、二
桁以上の加算器が必要となることは明らかである。特
に、先行技術2では、二桁の分割積の累算を行うために
シフトを行っており、乗算を行うべき被乗数および乗数
の桁数が多くなればなるほど、累算手段の構成が複雑で
それを制御することも困難になるおそれがある。
【0013】したがって、本発明の課題は、一桁の演算
手段のみを使用して、高精度で高桁数値の乗算を行うこ
とが可能な高精度高桁乗算装置を提供することにある。
【0014】
【課題を解決するための手段】上述した先行技術1〜3
では、二桁の分割積を処理(累算)しなければならない
ので、必然的に累算のためのハードウェアが大きくな
る。そこで、本発明者は、すべての処理を一桁の演算手
段で行わせるにはどうすれば良いかを種々検討した。そ
の結果、本発明者は、二桁の分割積を処理するのではな
く、一桁の部分積を処理すれば良いという結論に到達し
た。本発明は、一桁部分積を処理するという着想に基づ
いて成されたものである。
【0015】
【0016】本発明の要旨を説明すると、本発明に係る
高精度高桁乗算装置は、L(L≧3)進数で表される第
1乃至第N桁要素x[0]〜x[N−1]から成るN
(N≧3)桁の被乗数Xと上記L進数で表される第1乃
至第M桁要素y[0]〜y[M−1]から成るM(M≧
3)桁の乗数Yとを乗算し、上記被乗数Xと上記乗数Y
との積Qを高精度で求める乗算装置である。上記積Qは
第1乃至第D桁要素q[0]〜q[D−1]のD桁(D
=N+M)の上記L進数で表される。
【0017】本発明の態様によれば、上述した高精度
乗算装置は、上記被乗数Xの第1乃至第N桁要素x
[0]〜x[N−1]をそれぞれ第0乃至第(N−1)
の被乗数アドレスAx[0]〜Ax[N−1]に記憶す
る被乗数記憶手段と、上記乗数Yの第1乃至第M桁要素
y[0]〜y[M−1]をそれぞれ第0乃至第(M−
1)の乗数アドレスAy[0]〜Ay[M−1]に記憶
する乗数記憶手段と、第1の変数n(0≦n≦N−1)
を0からN−1へ昇順に変化することを繰り返しなが
ら、その繰り返し毎に第2の変数m(0≦m≦M−1)
を0からM−1へ昇順に変化させることによって、上記
被乗数Xの第(n+1)桁要素x[n]及び上記乗数Y
の第(m+1)桁要素y[m]をそれぞれ上記被乗数記
憶手段の第nの被乗数アドレスAx[n]及び上記乗数
記憶手段の第mの乗数アドレスA[m]から順次読み
出すオペランド読出し手段と、上記被乗数記憶手段及び
上記乗数記憶手段からそれぞれ上記乗数Xの第(n+
1)桁要素x[n]及び上記乗数Yの第(m+1)桁要
素y[m]を順次受け、二桁以上の演算手段を含まない
一桁の演算手段のみを使用して、一桁部分積u[m,
k](0≦k≦N)を順次求める一桁部分積演算手段で
あって、該一桁部分積演算手段は、上記乗数Yの第1乃
至第M桁要素y[0]〜y[M−1]にそれぞれ対応す
る第1乃至第Mの部分積P[0]〜P[M−1]を下位
桁から順次出力し、第(m+1)の部分積P[m]は
(N+1)桁の一桁部分積u[m,0]〜u[m,N]
で表される、上記一桁部分積演算手段と、上記一桁部分
積u[m,k]を順次受け、二桁以上の演算手段を含ま
ない単一の一桁の演算手段のみを使用して、第3の変数
i(0≦i≦M−1)の小さい方から2つの部分積をペ
アとして、第iの変更部分積P*[i−1](但し、第
0の変更部分積P*[−1]の各桁要素は零に等しい)
と第(i+1)の部分積P[i]との同一桁に相当する
桁要素同士を下位桁から順次加算することによって、第
(i+1)の変更部分積P*[i]を下位桁から順次求
めていき、これによって上記積Qの第(d+1)桁要素
q[d](0≦d≦D−1)を第1桁要素[0]から第
D桁要素q[D−1]へ昇順に順次求める一桁積演算手
段と、上記積Qを記憶するための積記憶手段と、上記積
の上記第1乃至第D桁要素q[0]〜q[D−1]をそ
れぞれ上記積記憶手段の第0乃至第(D−1)の積アド
レスAq[0]〜Aq[D−1]へ順次格納する格納手
段とを有する。
【0018】
【作用】次に、本発明の高精度高桁乗算装置の原理につ
いて説明する。
【0019】周知のように、乗算装置は、2つの数値、
すなわち、被乗数Xと乗数Yを掛けて、被乗数Xと乗数
Yとの積Qを求める装置である。本発明では、被乗数
X、乗数Yおよび積Qの各々が、L(L≧3)進数で表
される場合を対象とする。そして、被乗数XはN(N≧
3)桁からなり、乗数YはM(M≧3)桁からなるとす
る。この場合、積QはD桁(D=N+M)からなる。
【0020】このような事情のもとでは、被乗数Xは第
1乃至第N桁要素x[0]〜x[N−1]で表され、乗
数Yは第1乃至第M桁要素y[0]〜y[M−1]で表
される。そして、積Qは第1乃至第D桁要素q[0]〜
q[D−1]で表される。
【0021】もし被乗数X、乗数Yおよび積Qの各々が
10進法(L=10)で表されるなら、被乗数X、乗数
Yおよび積Qの各々は4ビットすなわち2進数化10進
(BCD)コードで表される。以下では、10進法の場
合について説明する。
【0022】被乗数Xおよび乗数Yが3桁(N=M=
3)で、それぞれ、X=798およびY=869の場
合、被乗数Xおよび乗数Yは、それぞれ、下記の数式1
のような、第1乃至第3桁要素x[0]〜x[2]およ
び第1乃至第3桁要素y[0]〜y[2]で表される。
【0023】
【数1】 本発明では、乗数Yの各桁要素を末尾固定として、下記
の数式2のように、部分積を求める。
【0024】
【数2】 このようにして得られた部分積は、一桁数の配列(二次
元)に次の数式3のように並べて求めることができる。
【0025】
【数3】 このような部分積の一桁数をここでは“一桁部分積”と
呼ぶ。このような一桁数(一桁部分積)の二次元配列を
求めることが、本発明に係る乗算解法の第1段である。
【0026】本発明では、この二次元配列を求めるにあ
たり、上記数式2のように、二桁数の加算とくにシフト
加算を避けて、専ら一桁数の加算にした点に特徴があ
る。一見このような小さい数値についての取扱いであれ
ば、二桁数でも大差ないように見える。しかしながら、
本発明のように、一桁部分積を処理することの方が、二
桁数(上述した分割積)を処理することよりも、乗数お
よび被乗数として巨大数を処理する上において非常に有
利で、誤りも少なくなる。
【0027】本発明では上記数式2に対応する加算を、
すべての二桁積を上位桁、下位桁の十進一桁に分割する
ことにより、二桁積のシフト加算を避けている。
【0028】このことについて以下に詳細に説明する。
上記数式2の左端の式で、8×9=72であるが、被乗
数Xの第1桁要素x[0]=8、乗数Yの第1桁要素y
[0]=9であるから、それらを乗算して得られる二桁
の乗算結果p[0,0]は、下記の数式4で表される。
【0029】
【数4】 二桁の乗算結果p[0,0]=72は、上位桁p
H [0,0]=7と下位桁pL [0,0]=2とからな
る。本発明では、このように二桁の乗算結果を、上位桁
と下位桁の一桁数に分離する。
【0030】再び、上記数式2に戻って、9×9=81
は、被乗数Xの第2桁要素x[1]=9と乗数Yの第1
桁要素y[0]=9との積、すなわち、それらを乗算し
て得られる二桁の乗算結果p[0,1]であり、下記の
数式5で表される。
【0031】
【数5】 この二桁の乗算結果p[0,1]=81は、上位桁pH
[0,1]=8と下位桁pL [0,1]=1とからな
る。
【0032】上記数式2から明らかなように、末尾固定
で求める第1の部分積P[0]における、二桁の乗算結
果p[0,0]の上位桁pH[0,0]=7と二桁の乗
算結果p[0,1]の下位桁pL[0,1]=1とは同
じ桁(第2桁)の一桁数であるので、加算される。その
加算は、下記の数式6で表される。
【0033】
【数6】 この和は、最大で9+9=18であり、下の桁から桁上
げがあるときは、19になり得る。この和の上位桁の
“1”は、次の上の桁へ加えられる。本発明において
は、この部分積の各々について、各桁は一桁数の和とし
ておくようにする。このことは、他の部分積の一桁部分
積を求める場合も同様であるので、一般に、一桁部分積
u[m,k]は、下記の数式7で与えられる。
【0034】
【数7】 ここで、第1の添字mは乗数Yの第(m+1)桁要素y
[m]の添字と同じでM個あり、第2の添字kは被乗数
Xの配列で、配列数が1個増えて、被乗数XがN桁のと
き(N+1)個となる。ここでは、0≦k≦Nとする。
【0035】以上を要約すると、被乗数X、乗数Yの各
一桁の積により求められる二桁数を一桁化して同じ桁の
2数の加算を考える。このときの和は、0の最小値から
18の最大値までとり得るが、下の桁からの桁上がりを
考慮すると、0の最小値から19の最大値までとり得
る。この桁の桁上がりは1を越えることはない。すなわ
ち、同じ桁における一桁数の2数和の列における桁上が
りの伝播はなく、桁上がりがあっても最小単位数の1で
あるので影響は無視できる。
【0036】以上のように、被乗数、乗数の一桁積によ
って、乗算の際に生ずる二桁数を強制的に一桁化するこ
とを、ここでは、“葉別け法”と呼ぶ。このように、一
桁化、2数加算による効用で、高速に誤差の発生なく一
桁部分積を求めることができる。
【0037】また、本発明では、乗数Yの第(m+1)
桁要素y[m]を末尾に固定する末尾固定法を採用した
ので、従来のように部分積をシフトして求め、乗数Yの
桁数だけ多段加算が強制される結果として生ずる多数の
多段桁上りの発生に基づく誤算の増大を防止することが
できる。すなわち、従来のようにシフトして部分積の桁
を合わせるような手法では多数加算を行なわなければな
い。多数加算では桁上りの増大が著しくなることが多
く、その伝播による遅れ、誤算の発生は避けられない。
【0038】次に、N桁の被乗数XとM桁の乗数Yとか
ら得られる一桁部分積の二次元配列u[m,k]による
表示を、末尾固定法を適用した本発明の場合について示
す。N=4、M=3とする。この場合、一桁部分積の二
次元配列u[m,k]は、下記の表1のように表され
る。
【0039】
【表1】 M行(N+1)列の二次元配列の要素(元)は、部分積
に相当するものを与え、各元の添字の和はその元の一桁
数の桁(位)を与えるものである。各元の添字の和が等
しくなる元は、二次元配列の対角線線上にある。このよ
うな元を加算して下位桁の和をとれば、真の積Qの第
(d+1)桁要素q[d]を与える。
【0040】本発明では、このような一桁部分積u
[m,k]の二次元配列で得られる部分積を用いて、最
終的な真の積Qを、一桁数2数加算の原則に基づいて、
桁上りなどの誤差、速度低下の要因なしに高速動作を可
能とする。そのために、本発明では以下に詳細に説明す
る“ペアダウン法”を採用する。
【0041】ここでは、第(i+1)の部分積P[i]
(0≦i≦M−1)が(N+1)桁のu[i,N]〜u
[i,0]で表されるとする。すなわち、第(i+1)
の部分積P[i]は下記の数式8で表される。
【0042】
【数8】 本発明に係るペアダウン法では、変数iの小さい方から
2つの部分積をペアとして加算を行う。なお、説明の都
合上、ここでは第1の部分積P[0]を第1の変更部分
積P[0]と呼ぶことにする。最初に、第1の変更部
分積P[0]と第2の部分積P[1]とを加算する場
合について考える。
【0043】ペアダウン法では第1のペアとして、第1
の変更部分積P[0]と第2の部分積P[1]とのペ
アをとる。これは、下記の表2のように、上下行の二次
元配列で表される。
【0044】
【表2】 上記表2において、スラッシュ(左上斜線)“\”で示
す添字の和の等しい上下配列のペアの元(桁要素)は同
じ桁(一桁)である。したがって、これらペアを2数加
算できる。また、第1の変更部分積P[0]の最下位
桁の要素u[0,0]は積Qの第1桁要素q[0]に等
しく、そのまま取り出される。とにかく、第1の変更部
分積P[0]と第2の部分積P[1]との同一桁に相
当する桁要素同士を下位桁から順次加算することによっ
て、第2の変更部分積P[1]を下位桁から順次求め
ることができる。ここで注意してもらいたいのは、ペア
の元同士の和は0〜18の範囲の値を取り得、下の桁か
らの桁上げにより一時的に最大で19の値まで取り得る
ことである。したがって、上述した“葉別け法”と同様
に、この桁の桁上がりは1を越えることはく、同じ桁に
おける一桁数の2数和の列における桁上がりの伝播はな
く、桁上がりがあっても1であるので影響は無視でき
る。第2の変更部分積P[1]を(N+1)桁のu
[1,N]〜u[1,0]で表わす。すなわち、第2
の変更部分積P[1]は下記の数式9で表される。
【0045】
【数9】 第2のペアは、第2の変更部分積P[1]を上行配列
とし、第3の部分積P[2]を下行配列とした、下記の
表3で表される。
【0046】
【表3】 第2の変更部分積P[1]の最下位桁の要素u[1,
0]は積Qの第2桁要素q[1]に等しく、そのまま取
り出される。上述したのと同様に、第2の変更部分積P
[1]と第3の部分積P[2]との同一桁に相当する
桁要素同士を下位桁から順次加算することによって、第
3の変更部分積P[2]を下位桁から順次求めること
ができる。
【0047】以下同様に上述したペアダウン動作を繰り
返し行うことにより、積Qの第(d+1)桁要素q
[d]を第1桁要素q[0]から第D桁要素q[D−
1]へ昇順に順次求めることができる。上述したよう
に、上記乗算方式では、シフト動作がなく、桁上げは最
小単位数の1に制限されるので、巨大数の乗算も高速に
誤りなく行うことができる。
【0048】
【発明の実施の形態】以下、本発明の実施の形態につい
て図面を参照して詳細に説明する。
【0049】図1を参照すると、本発明の一実施の形態
による高精度高桁乗算装置は、L(L≧3)進数で表さ
れる第1乃至第N桁要素x[0]〜x[N−1]から成
るN(N≧3)桁の被乗数Xと、L進数で表される第1
乃至第M桁要素y[0]〜y[M−1]から成るM(M
≧3)桁の乗数Yとを乗算し、被乗数Xと乗数Yとの積
Qを高精度で求める乗算装置である。積Qは第1乃至第
D桁要素q[0]〜q[D−1]のD(D=N+M)桁
のL進数で表される。
【0050】図示の高精度高桁乗算装置は、被乗数メモ
リ11と、乗数メモリ12と、オペランド読出し回路1
3と、一桁部分積演算回路14と、一桁積演算回路18
と、積メモリ19と、格納回路20とを有する。
【0051】被乗数Xは被乗数メモリ11に格納され、
乗数Yは乗数メモリ12に格納されている。もっと詳細
に述べると、被乗数メモリ11の第0乃至第(N−1)
の被乗数アドレスAx[1]〜Ax[N−1]には、そ
れぞれ、被乗数Xの第1乃至第N桁要素x[0]〜x
[N−1]が格納されている。同様に、乗数メモリ12
の第0乃至第(M−1)の乗数アドレスAy[0]〜A
x[M−1]には、それぞれ、乗数Yの第1乃至第M桁
要素y[0]〜y[M−1]が格納されている。
【0052】被乗数メモリ11と乗数メモリ12とはオ
ペランド読出し回路13によってアクセスされ、その内
容が読み出される。すなわち、オペランド読出し回路1
3は、第1の変数n(0≦n≦N−1)を0からN−1
へ昇順に変化することを繰り返しながら、その繰り返し
毎に第2の変数m(0≦m≦M−1)を0からM−1へ
昇順に変化させることによって、被乗数Xの第(n+
1)桁要素x[n]及び乗数Yの第(m+1)桁要素y
[m]をそれぞれ被乗数メモリ11の第nの被乗数アド
レスAx[n]及び乗数メモリ12の第mの乗数アドレ
スAx[m]から順次読み出す。このオペランド読出し
回路13の詳細な構成については後で説明する。
【0053】被乗数メモリ11と乗数メモリ12とは一
桁部分積演算回路14に接続されている。被乗数メモリ
11及び乗数メモリ12からそれぞれ読み出された被乗
Xの第(n+1)桁要素x[n]及び乗数Yの第(m
+1)桁要素y[m]の対は、一桁部分積演算回路14
へ送出される。一桁部分積演算回路14は、後述するよ
うに、二桁以上の演算手段を含まない一桁の演算手段の
みを使用して、被乗数Xの第(n+1)桁要素x[n]
及び乗数Yの第(m+1)桁要素y[m]から一桁部分
積u[m,k](0≦k≦N)を順次求める。
【0054】一桁積演算回路18は、一桁部分積演算回
路14から一桁部分積u[u,k]を順次受け、後述す
るように、二桁以上の演算手段を含まない単一の一桁の
演算手段のみを使用して、積Qの第(d+1)桁要素q
[d](0≦d≦D−1)を第1桁要素q[0]から第
D桁要素q[D−1]へ昇順に順次求める。
【0055】積メモリ19は積Qを記憶するためのもの
である。一桁積演算回路18から出力された積Qは格納
回路20によって積メモリ19に格納される。詳細に述
べるいと、格納回路20は、積Qの第1乃至第D桁要素
q[0]〜q[D−1]をそれぞれ積メモリ19の第0
乃至第(D−1)の積アドレスAq[0]〜Aq[N+
M−1]へ順次格納する。
【0056】
【実施例】図2を参照すると、オペランド読出し回路1
3は、第1のアップカウンタ21と、第2のアップカウ
ンタ22と、比較器23と、論理和回路24とを有す
る。
【0057】第1のアップカウンタ21は、クロック信
号に同期してカウントアップし、第1のカウント信号を
第nの被乗数アドレスAx[n]として出力する。比較
器23は、第1のカウント信号と“N”とを比較し、そ
れらの間が一致したときに一致信号を出力する。第2の
アップカウンタ22は、スタート信号によって“0”の
初期値にリセットされ、一致信号に同期してカウントア
ップし、第2のカウント信号を第mの乗数アドレスAx
[m]として出力する。論理和回路24は、スタート信
号と一致信号との論理和を取り、論理和結果信号を出力
し。この論理和結果信号によって第1のアップカウンタ
21は、“0”の初期値にリセットされる。また、この
論理和結果信号は、信号線25を介して、リセット信号
として一桁部分積演算回路14へ供給される。
【0058】図3は図2に示されたオペランド読出し回
路13の動作を説明するために使用されるアドレスマッ
プを示す。図示のアドレスマップにおいて、第nの被乗
数アドレスAx[n]すなわち“n”が、それぞれ、ア
ドレスマップの第1乃至第N行に表せるように、0と
(N−1)との間で可変である。同様に、第mの乗数ア
ドレスAy[m]すなわち“m”が、それぞれ、アドレ
スマップの第1乃至第M列に表せるように、0と(M−
1)との間で可変である。
【0059】上述したように、オペランド読出し回路1
3は、第nの被乗数アドレスAx[n]すなわち“n”
と、第mの乗数アドレスAy[m]すなわち“m”とを
それぞれ被乗数メモリ11と乗数メモリ12に供給す
る。
【0060】スタート信号が、論理和回路24を介して
第1のアップカウンタ21に供給されと共に、直接、第
2のアップカウンタ22に供給される。このスタート信
号に応答して、第1および第2のアップカウンタ21お
よび22は“0”の初期値にリセットされる。したがっ
て、第1および第2のアップカウンタ21および22
は、アドレスマップの1行1列に示されるように、第n
の被乗数アドレスAx[n]および第mの乗数アドレス
Ay[m]としてそれぞれ“0”および“0”を出力す
る。
【0061】クロック信号に応答して、第1のアップカ
ウンタ21は1だけアップカウントする。従って、第1
および第2のアップカウンタ21および22は、アドレ
スマップの2行1列に示されるように、第nの被乗数ア
ドレスAx[n]および第mの乗数アドレスAy[m]
としてそれぞれ“1”および“0”を出力する。引き続
きクロック信号に応答して、第1のアップカウンタ21
は1だけアップカウントする。従って、第1および第2
のアップカウンタ21および22は、アドレスマップの
3行1列に示されるように、第nの被乗数アドレスAx
[n]および第mの乗数アドレスAy[m]としてそれ
ぞれ“2”および“0”を出力する。以下同様にして、
第mの乗数アドレスAy[m]が“0”のままで、第n
の被乗数アドレスAx[n]は“0”から順次大きくな
り、“N−1”となる。
【0062】この状態で、クロック信号が第1のアップ
カウンタ21に供給さると、第1のアップカウンタ21
はカウントアップしてその第1のカウント信号の値が
“N”となるので、比較器23は一致信号を出力する。
この一致信号は、論理和回路24を介して第1のアップ
カウンタ21に供給され、第1のアップカウンタ21は
“0”の初期値にリセットされる。と同時に、この一致
信号に応答して、第2のアップカウンタ22は1だけカ
ウントアップする。従って、第1および第2のアップカ
ウンタ21および22は、アドレスマップの1行2列に
示されるように、第nの被乗数アドレスAx[n]およ
び第mの乗数アドレスAy[m]としてそれぞれ“0”
および“1”を出力する。引き続きクロック信号に応答
して、第1のアップカウンタ21は1だけアップカウン
トする。従って、第1および第2のアップカウンタ21
および22は、アドレスマップの2行2列に示されるよ
うに、第nの被乗数アドレスAx[n]および第mの乗
数アドレスAy[m]としてそれぞれ“1”および
“1”を出力する。
【0063】以下同様な動作を繰り返すことにより、オ
ペランド読出し回路13は、第1の変数nを“0”から
“N−1”へ昇順に変化することを繰り返しながら、そ
の繰り返し毎に第2の変数mを“0”から“M−1”へ
昇順に変化させることによって、アドレスマップの矢印
で示される軌跡によって、一対の“n”の被乗数メモリ
11の第nの被乗数アドレスAx[n]及び“m”の第
mの乗数アドレスAx[m]を順次出力して、被乗数メ
モリ11および乗数メモリ12から一対の被乗数Xの第
(n+1)桁要素x[n]及び乗数Yの第(m+1)桁
要素y[m]をそれぞれ読み出す。
【0064】図4を参照すると、一桁部分積演算回路1
4は、一桁乗算器41と、レジスタ42と、一桁加算器
43と、保持回路44と、インクリメンタ45とを有す
る。
【0065】一桁乗算器41は、乗数Xの第(n+1)
桁要素x[n]と乗数Yの第(m+1)桁要素y[m]
とを乗算して、二桁の乗算結果p[m,n]を出力す
る。この二桁の乗算結果p[m,n]は、上位桁p
H [m,n]と下位桁pL [m,n]とからなる。レジ
スタ42は、オペランド読出し回路13からのリセット
信号に応答して“0”にリセットされる。また、レジス
タ42は、乗算結果p[m,n]の上位桁pH [m,
n]を保持して、保持した上位桁pH [m,k−1]を
出力する。一桁加算器43は、乗算結果p[m,n]の
下位桁pL [m,n]と保持した上位桁pH [m,k−
1]とを加算して、一桁加算結果(pL [m,n]+p
H [m,k−1])と桁上げ信号p[m,n]とを出力
する。桁上げがあるとき、桁上げ信号C[m,n]は論
理“1”レベルをとり、桁上げがないとき、桁上げ信号
C[m,n]は論理“1”レベルをとる。保持回路44
は、桁上げ信号C[m,n]を保持して、保持した桁上
げ信号C[m,k−1]を出力する。インクリメンタ4
5は、保持した桁上げ信号C[m,k−1]が桁上げ
(論理“1”レベル)を示しているときは一桁加算結果
を1だけ増加した値を、そうでないときには一桁加算結
果をそのまま一桁部分積u[m,k]として出力する。
【0066】次に、図4を参照して、一桁部分積演算回
路14の動作について説明する。まず、オペランド読出
し回路13からリセット信号が供給されると、レジスタ
42は“0”にリセットされる。一方、被乗数メモリ1
1および乗数メモリ12から被乗数Xの第1桁要素x
[0]および乗数Yの第1桁要素y[0]が供給され
る。一桁乗算器41は、被乗数Xの第1桁要素x[0]
と乗数Yの第1桁要素y[0]とを乗算して、乗算結果
p[0,0](=x[0]×y[0])を出力する。乗
算結果p[0,0]は上位桁pH [0,0]と下位桁p
L [0,0]とからなる。一桁加算器43は、乗算結果
p[0,0]の下位桁pL [0,0]とレジスタ42の
値(この場合、“0”)とを加算し、一桁加算結果(p
L [0,0]+0)と桁上げ信号C[0,0]とを出力
する。この場合、レジスタ42の値が“0”なので、一
桁加算器43から出力される一桁加算結果は下位桁pL
[0,0]に等しい。また、桁上げ信号C[0,0]も
零である。保持回路44は、桁上げ信号C[0,0]を
保持する前は、論理“0”レベルのC[0,−1]を保
持している。したがって、インクリメンタ45は、乗算
結果p[0,0]の下位桁PL [0,0]をそのまま一
桁部分積u[0,0]として出力する。
【0067】次に、被乗数メモリ11および乗数メモリ
12から被乗数Xの第1桁要素x[1]および乗数Yの
第1桁要素y[0]が供給されると、一桁乗算器41
は、被乗数Xの第2桁要素x[1]と乗数Yの第1桁要
素y[0]とを乗算して、乗算結果p[0,1](=x
[1]×y[0])を出力する。乗算結果p[0,1]
は上位桁pH [0,1]と下位桁pL [0,1]とから
なる。一桁加算器43は、乗算結果p[0,1]の下位
桁pL [0,1]とレジスタ42の値(この場合、乗算
結果p[0,0]の上位桁pH [0,0])とを加算
し、一桁加算結果(pL [0,1]+pH [0,0])
と桁上げ信号C[0,1]とを出力する。保持回路44
は、保持した桁上げ信号C[0,0]を出力している。
インクリメンタ45は、桁上げ信号C[0,0]が論理
“1”レベルなら、一桁加算結果(pL [0,1]+p
H [0,0])を1だけ増加し、そうでなければ一桁加
算結果(pL [0,1]+pH [0,0])を、一桁部
分積u[0,1]として出力する。
【0068】以下、一桁部分積演算回路14は、同様の
動作を繰り返す。従って、一桁部分積演算回路14は、
一般に、下記の数式10で示される一桁部分積u[m,
k]を出力する。
【0069】
【数10】 このようにして一桁部分積演算回路14によって算出さ
れた一桁部分積u[m,k]は、図5に示すように、M
行(N+1)列の二次元配列で表すことができる。二次
元配列の第1行目は、被乗数Xと乗数Yの第1桁要素y
[0]との積である第1の部分積P[0]を表してい
る。すなわち、二次元配列の第1行目の(右側から数え
て)第1〜第(N+1)欄は、それぞれ、第1の部分積
P[0]の1〜(N+1)桁に対応している。同様に、
二次元配列の第2行目は、被乗数Xと乗数Yの第2桁要
素y[1]との積である第2の部分積P[0]を表して
いる。すなわち、二次元配列の第(m+1)行第(k+
1)列の行列要素(一桁部分積u[m,k])は、第
(m+1)の部分積P[m]の(k+1)桁目を示して
いる。
【0070】図6を参照すると、一桁積演算回路18
は、演算部60と、N段FIFO型メモリ70と、コン
トローラ80とを有する。演算部60は、後述する第i
の変更部分積P[i−1]と第(i+1)の部分積P
[i]との同一桁に相当する桁要素同士を下位桁から順
次加算することによって、第(i+1)の変更部分積P
[i]を下位桁から順次求めると共に、積Qの第(d
+1)桁要素q[d]を出力する。N段FIFO型メモ
リ70は第(i+1)の変更部分積P[i]を最下位
桁を除いて下位桁側から上位桁側へ順次保持すると共
に、既に保持している第iの変更部分積P[i−1]
を下位桁側から上位桁側へ、順次、演算部60へ供給す
る。コントローラ80は選択制御信号SCと出力制御信
号OCとを演算部80へ供給する。
【0071】演算部60は、第1の入力レジスタ61
と、セレクタ62と、第2の入力レジスタ63と、一桁
加算器64と、保持回路65と、インクリメンタ66
と、出力制御回路67とを有する。
【0072】第1の入力レジスタ61は、一桁部分積演
算回路14から供給されてくる一桁部分積u[m,k]
を保持する。セレクタ62は、選択制御信号SCに応答
して、N段FIFO型メモリ70から出力される第iの
変更部分積P[i−1]の各桁要素と“0”の値のど
ちらか一方を選択する。第2の入力レジスタ63はセレ
クタ63の出力値を保持する。一桁加算器64は、第1
の入力レジスタ61の出力値と第2の入力レジスタ63
の出力値とを加算して、一桁加算結果の一桁数と桁上げ
信号とを出力する。保持回路65は、桁上げ信号を保持
して、保持した桁上げ信号を出力する。インクリメンタ
66は、保持した桁上げ信号が“桁上げ有り”を示して
いるときは一桁加算結果の一桁数を1だけ増加した値
を、そうでないときには一桁加算結果の一桁数をそのま
ま、出力する。出力制御回路67は、出力制御信号に応
答して、インクリメンタ66の出力値を選択的に積Qの
第(d+1)桁要素q[d]として出力すると共に、第
(i+1)の変更部分積P[i]の各桁要素としてN
段FIFO型メモリ70へ戻す。
【0073】N段FIFO型メモリ70は初段(第1
段)のレジスタ70−1から最終段(第N段)のレジス
タ70−NのN個のレジスタで構成されている。図示の
如く、第1のレジスタ70−1は第iの変更部分積P
[i−1]の第2桁目u[i−1,1]を保持してい
る。同様に、第2のレジスタ70−2は第iの変更部分
積P[i−1]の第3桁目u[i−1,2]を保持
している。第N段のレジスタ70−Nは第iの変更部分
積P[i−1]の第(N+1)桁目u[i−1,
N]を保持している。尚、第0の変更部分積P[−
1]の各桁要素は零の値を持つ。すなわち、u[−
1,1],u[−1,2],…,u[−1,N]は
すべて零の値をもつ。
【0074】次に、図6に示した一桁積演算回路18の
動作について説明する。
【0075】最初に、一桁部分積演算回路14から第1
の部分積P[0]を構成する一桁部分積u[0,0]〜
u[0,N]が供給されたときの動作について説明す
る。まず、N段FIFO型メモリ70には初期値として
全て零の値が格納さている。すなわち、第1段乃至第N
段のレジスタ70−1〜70−Nには零の値をもつu
[−1,1]〜u[−1,N]が格納されている。こ
の状態で、一桁部分積演算回路14から第1の部分積P
[0]の最下位桁、すなわち、一桁部分積u[0,0]
が供給され、第1のレジスタ61に保持される。コント
ローラ80からの選択制御信号SCによってセレクタ6
2は“0”を選択し、第2の入力レジスタ63には
“0”が保持される。従って、一桁加算器64は一桁加
算結果の一桁数としてu[0,0]を、桁上げ信号とし
て“桁上げ無し”を示す信号を出力する。インクリメン
タ66もu[0,0]をそのまま出力する。コントロー
ラ80からの出力制御信号OCによって、出力制御回路
67はu[0,0]を積Qの第1桁要素q[0]として
選択して出力する。
【0076】引き続いて、一桁部分積演算回路14から
第1の部分積P[0]の残りの桁、すなわち、一桁部分
積u[0,1]〜u[0,N]が順次供給されてくる。
一方、セレクタ62は選択制御信号SCによりN段FI
FO型メモリ70の出力を選択している。したがって、
一桁加算器64は、一桁部分積u[0,1]〜u[0,
N]とN段FIFO型メモリ70の出力u[−1,
1]〜u[−1,N]とを順次加算していくが、第0
の変更部分積P[−1]の各桁要素u[−1,1]
〜u[−1,N]は全て零なので、一桁加算結果の一
桁数として、一桁部分積u[0,1]〜u[0,N]を
そのまま出力する。このとき、一桁加算器64からの桁
上げはないので、インクリメンタ66も第1の部分積P
[0]の一桁部分積u[0,1]〜u[0,N]をその
まま出力する。コントローラ80からの出力制御信号O
Cに応答して、出力制御回路67は第1の部分積P
[0]の一桁部分積u[0,1]〜u[0,N]をその
まま第1の変更部分積P[0]の桁要素u[0,
1]〜u[0,N]として出力する。その結果、N段
FIFO型メモリ70には、第1の変更部分積P
[0]の桁要素u[0,1]〜u[0,N]が格
納される。
【0077】次に、一桁部分積演算回路14から第2の
部分積P[1]を構成する一桁部分積u[1,0]〜u
[1,N]が供給されたときの動作について説明する。
【0078】先ず、一桁部分積演算回路14から第2の
部分積P[1]の最下位桁、すなわち、一桁部分積u
[1,0]が供給され、第1のレジスタ61に保持され
る。と同時に、コントローラ80からの選択制御信号S
Cによって、セレクタ62はN段FIFO型メモリ70
からの第1の変更部分積P[0]の桁要素u[0,
1]を選択し、第2の入力レジスタ63にはu[0,
1]が保持される。一桁加算器64はu[1,0]とu
[0,1]とを加算して、一桁加算結果の一桁数と桁
上げ信号とを出力する。この桁上げ信号は保持回路65
に保持される。このとき、インクリメンタ66には“桁
上げ無し“を示す桁上げ信号が供給されているので、イ
ンクリメンタ66は一桁加算結果の一桁数をそのまま出
力する。コントローラ80からの出力制御信号OCによ
って、出力制御回路67はインクリメンタ66の出力値
[1,0]を積Qの第2桁要素q[1]として選択
して出力する。
【0079】引き続いて、一桁部分積演算回路14から
第2の部分積P[0]の最上位桁を除く桁、すなわち、
一桁部分積u[1,1]〜u[1,N−1]が順次供給
されてくる。一方、この間、セレクタ62は選択制御信
号SCによりN段FIFO型メモリ70の出力を選択し
ている。したがって、一桁加算器64は、第2の部分積
P[0]の一桁部分積u[1,1]〜u[1,N−1]
とN段FIFO型メモリ70の出力u[0,2]〜u
[0,N]とを順次加算して、一桁加算結果の一桁数
と桁上げ信号とを出力する。インクリメンタ66は、保
持回路65で保持されている桁上げ信号が“桁上げ有り
“を示しているときは、一桁加算結果の一桁数を1だけ
インクリメントし、そうでなければ、一桁加算結果の一
桁数をそのまま出力する。コントローラ80からの出力
制御信号OCに応答して、出力制御回路67はインクリ
メンタ66の出力値を第2の変更部分積P[1]の桁
要素u[1,1]〜u[1,N−1]として出力す
る。その結果、N段FIFO型メモリ70には、第2の
変更部分積P[1]の桁要素u[1,1]〜u
[1,N−1]が格納される。
【0080】続いて、一桁部分積演算回路14から第2
の部分積P[0]の最上位桁、一桁部分積u[1,N]
が供給されてくる。一方、このとき、セレクタ62は選
択制御信号SCにより“0”の値を選択している。した
がって、一桁加算器64は、第2の部分積P[1]の一
桁部分積u[1,N]をそのまま一桁加算結果の一桁数
として出力する。このとき、当然、一桁加算器64は
“桁上げ無し”を示す桁上げ信号を出力する。インクリ
メンタ66は、保持回路65で保持されている桁上げ信
号が“桁上げ有り“を示しているときは、一桁加算結果
の一桁数を1だけインクリメントし、そうでなければ、
一桁加算結果の一桁数をそのまま出力する。コントロー
ラ80からの出力制御信号OCに応答して、出力制御回
路67はインクリメンタ66の出力値を第2の変更部分
積P[1]の最上位桁要素u[1,N]として出力
する。したがって、N段FIFO型メモリ70には、第
2の変更部分積P[1]の桁要素u[1,1]〜u
[1,N]が格納されことになる。
【0081】以下、一桁部分積演算回路14から第(M
−1)の部分積P[M−2]を構成する一桁部分積u
[M−2,0]〜u[M−2,N]が供給されたときま
で、一桁積演算回路18は同様の動作を繰り返す。
【0082】最後に、一桁部分積演算回路14から第M
の部分積P[M−1]を構成する一桁部分積u[M−
1,0]〜u[M−1,N]が供給されるときの動作に
ついて説明する。このとき、N段FIFO型メモリ70
の第1段乃至第N段のレジスタ70−1〜70−Nには
第(M−1)の変更部分積P[M−2]の桁要素u
[M−2,1]〜u[M−2,N]が格納されてい
る。
【0083】先ず、一桁部分積演算回路14から第Mの
部分積P[M−1]の最上位桁を除く桁、すなわち、一
桁部分積u[M−1,0]〜u[M−1,N−1]が順
次供給されてくる。この間、セレクタ62は選択制御信
号SCによりN段FIFO型メモリ70の出力を選択し
ている。したがって、一桁加算器64は、第2の部分積
P[0]の一桁部分積u[M−1,0]〜u[M−1,
N−1]とN段FIFO型メモリ70の出力u[M−
2,1]〜u[M−2,N]とを順次加算して、一桁
加算結果の一桁数と桁上げ信号とを出力する。インクリ
メンタ66は、保持回路65で保持されている桁上げ信
号が“桁上げ有り“を示しているときは、一桁加算結果
の一桁数を1だけインクリメントし、そうでなければ、
一桁加算結果の一桁数をそのまま出力する。コントロー
ラ80からの出力制御信号OCに応答して、出力制御回
路67はインクリメンタ66の出力値を積Qの第M乃至
第(M+N−1)桁要素q[M−1]〜q[M+N−
2]として選択して出力する。
【0084】引き続いて最後に、一桁部分積演算回路1
4から第Mの部分積P[M−1]の最上位桁、すなわ
ち、一桁部分積u[M−1,N]が供給されてくる。一
方、このとき、セレクタ62は選択制御信号SCにより
“0”の値を選択している。したがって、一桁加算器6
4は、第Mの部分積P[M−1]の一桁部分積u[M−
1,N]をそのまま一桁加算結果の一桁数として出力す
る。このとき、当然、一桁加算器64は“桁上げ無し”
を示す桁上げ信号を出力する。インクリメンタ66は、
保持回路65で保持されている桁上げ信号が“桁上げ有
り“を示しているときは、一桁加算結果の一桁数を1だ
けインクリメントし、そうでなければ、一桁加算結果の
一桁数をそのまま出力する。コントローラ80からの出
力制御信号OCに応答して、出力制御回路67はインク
リメンタ66の出力値を積Qの第(M+N)桁要素q
[M+N−1]として選択して出力する。
【0085】尚、上記実施例では、N段FIFO型メモ
リ70は初期値として零の値を保持しているとしたが、
任意の値を保持しても良い。この場合、一桁部分積演算
回路14から第1の部分積P[0]を構成する一桁部分
積u[0,0]〜u[0,N]が供給されている間、セ
レクタ62は“0”の値を選択するようにすれば良い。
【0086】本発明は上述した実施例に限定せず、本発
明の要旨を変更しない範囲で種々の変更が可能なのは勿
論である。
【0087】
【発明の効果】以上説明したように本発明は、基本的に
少数の一桁の演算回路のみを使用して高精度でかつ高桁
の乗算を行えるので、ハードウェア量を少なくすること
ができるという効果を奏する。
【図面の簡単な説明】
【図1】本発明の一実施の形態による高精度高桁乗算装
置を示すブロック図である。
【図2】図1に示した高精度高桁乗算装置に使用される
オペランド読出し回路を示すブロック図である。
【図3】図2に示したオペランド読出し回路の動作を説
明するために使用されるアドレスマップである。
【図4】図1に示した高精度高桁乗算装置に使用される
一桁部分積演算回路を示すブロック図である。
【図5】図4に示した一桁部分積演算回路で求められた
一桁部分積を二次元配列で示す図である。
【図6】図1に示した高精度高桁乗算装置に使用される
一桁積演算回路を示すブロック図である。
【符号の説明】
11 被乗数メモリ 12 乗数メモリ 13 オペランド読出し回路 14 一桁部分積演算回路 18 一桁積演算回路 19 積メモリ 20 格納回路 21 第1のアップカウンタ 22 第2のアップカウンタ 23 比較器 41 一桁乗算器 42 レジスタ 43 一桁加算器 44 保持回路 45 インクリメンタ 60 演算部 61 第1の入力レジスタ 62 セレクタ 63 第2の入力レジスタ 64 一桁加算器 65 保持回路 66 インクリメンタ 67 出力制御回路 70 N段FIFO型メモリ 80 コントローラ
───────────────────────────────────────────────────── フロントページの続き (58)調査した分野(Int.Cl.7,DB名) G06F 7/52 310

Claims (5)

    (57)【特許請求の範囲】
  1. 【請求項1】 L(L≧3)進数で表される第1乃至第
    N桁要素x[0]〜x[N−1]から成るN(N≧3)
    桁の被乗数Xと上記L進数で表される第1乃至第M桁要
    素y[0]〜y[M−1]から成るM(M≧3)桁の乗
    数Yとを乗算し、上記被乗数Xと上記乗数Yとの積Qを
    高精度で求める乗算装置であって、上記積Qは第1乃至
    第D桁要素q[0]〜q[D−1]から成るD(D=N
    +M)桁の上記L進数で表され、 上記被乗数Xの第1乃至第N桁要素x[0]〜x[N−
    1]をそれぞれ第0乃至第(N−1)の被乗数アドレス
    Ax[0]〜Ax[N−1]に記憶する被乗数記憶手段
    (11)と、 上記乗数Yの第1乃至第M桁要素y[0]〜y[M−
    1]をそれぞれ第0乃至第(M−1)の乗数アドレスA
    y[0]〜Ay[M−1]に記憶する乗数記憶手段(1
    2)と、 第1の変数n(0≦n≦N−1)を0からN−1へ昇順
    に変化することを繰り返しながら、その繰り返し毎に第
    2の変数m(0≦m≦M−1)を0からM−1へ昇順に
    変化させることによって、上記被乗数Xの第(n+1)
    桁要素x[n]及び上記乗数Yの第(m+1)桁要素y
    [m]をそれぞれ上記被乗数記憶手段の第nの被乗数ア
    ドレスAx[n]及び上記乗数記憶手段の第mの乗数ア
    ドレスA[m]から順次読み出すオペランド読出し手
    段(13)と、 上記被乗数記憶手段及び上記乗数記憶手段からそれぞれ
    上記乗数Xの第(n+1)桁要素x[n]及び上記乗数
    Yの第(m+1)桁要素y[m]を順次受け、二桁以上
    の演算手段を含まない一桁の演算手段を使用して、一桁
    部分積u[m,k](0≦k≦N)を順次求める一桁部
    分積演算手段(14)であって、該一桁部分積演算手段
    は、それぞれ上記乗数Yの第1乃至第M桁要素y[0]
    〜y[M−1]に対応する第1乃至第Mの部分積P
    [0]〜P[M−1]を下位桁から順次出力し、第(m
    +1)の部分積P[m]はu[m,0]〜u[m,N]
    の(N+1)桁で表される、上記一桁部分積演算手段
    (14)と、 上記一桁部分積u[m,k]を順次受け、二桁以上の演
    算手段を含まない単一の一桁の演算手段を使用して、第
    3の変数i(0≦i≦M−1)の小さい方から2つの部
    分積をペアとして、第iの変更部分積P*[i−1]
    (但し、第0の変更部分積P*[−1]の各桁要素は零
    に等しい)と第(i+1)の部分積P[i]との同一桁
    に相当する桁要素同士を下位桁から順次加算することに
    よって、第(i+1)の変更部分積P*[i]を下位桁
    から順次求めていき、これによって上記積Qの第(d+
    1)桁要素q[d](0≦d≦D−1)を第1桁要素
    [0]から第D桁要素q[D−1]へ昇順に求める一桁
    積演算手段(18)と、 上記積Qを記憶するための積記憶手段(19)と、 上記積の上記第1乃至第D桁要素q[0]〜q[D−
    1]をそれぞれ上記積記憶手段の第0乃至第(D−1)
    の積アドレスAq[0]〜Aq[D−1]へ順次格納す
    る格納手段(20)とを有する高精度高桁乗算装置。
  2. 【請求項2】 上記オペランド読出し手段(13)は、 クロック信号に同期してカウントアップし、第1のカウ
    ント信号を上記第nの被乗数アドレスAx[n]として
    出力する第1のアップカウンタ(21)と、 上記第1のカウント信号と“N”とを比較し、それらの
    間が一致したときに一致信号を出力する比較器と、 スタート信号によって“0”の初期値にリセットされ、
    前記一致信号に同期してカウントアップし、第2のカウ
    ント信号を上記第mの乗数アドレスAx[m]として出
    力する第2のアップカウンタ(22)と、 上記スタート信号と上記一致信号との論理和を取り、論
    理和結果信号を出力し、該論理和結果信号によって上記
    第1のアップカウンタを“0”の初期値にリセットする
    論理和回路(24)と、 上記論理和結果信号をリセット信号として上記一桁部分
    積演算手段(14)へ供給する手段(25)とを有する
    請求項に記載の高精度高桁乗算装置。
  3. 【請求項3】 上記一桁部分積演算手段(14)は、 上記被乗数Xの第(n+1)桁要素x[n]と上記乗数
    Yの第(m+1)桁要素y[m]とを乗算して、上位桁
    H[m,n]と下位桁pL[m,n]とからなる二桁の
    乗算結果p[m,n]を出力する一桁乗算器(41)
    と、 上記リセット信号に応答して“0”にリセットされると
    共に、上記乗算結果p[m,n]の上記上位桁p
    H[m,n]を保持して、保持した上位桁pH[m,k−
    1]を出力するレジスタ(42)と、 上記乗算結果p[m,n]の上記上位桁pL[m,n]
    と上記保持した上位桁pH[m,k−1]とを加算し
    て、一桁加算結果(pL[m,n]+pH[m,k−
    1])の一桁数と桁上げ信号C[m,n]とを出力する
    一桁加算器(43)と、 上記桁上げ信号C[m,n]を保持して、保持した桁上
    げ信号C[m,k−1]を出力する保持回路(44)
    と、 上記保持した桁上げ信号C[m,k−1]が“桁上げ有
    り”を示しているときは上記一桁加算結果の一桁数を1
    だけ増加した値を、そうでないときには上記一桁加算結
    果の一桁数をそのまま、上記一桁部分積u[m,k]と
    して出力するインクリメンタ(45)とを有する請求項
    に記載の高精度高桁乗算装置。
  4. 【請求項4】 上記一桁積演算手段(18)は、 上記第iの変更部分積P*[i−1]と上記第(i+
    1)の部分積P[i]との同一桁に相当する桁要素同士
    を下位桁から順次加算することによって、上記第(i+
    1)の変更部分積P*[i]を下位桁から順次求めると
    共に、上記積Qの第(d+1)桁要素q[d]を出力す
    る演算部(60)と、 上記第(i+1)の変更部分積P*[i]を最下位桁を
    除いて下位桁側から上位桁側へ順次保持すると共に、既
    に保持している上記第iの変更部分積P*[i−1]を
    下位桁側から上位桁側へ順次上記演算部へ供給するN段
    FIFO型メモリ(70)とを有する、請求項に記載
    の高精度高桁乗算装置。
  5. 【請求項5】 上記演算部(60)は、 上記一桁部分積u[m,k]を保持する第1の入力レジ
    スタ(61)と、 選択制御信号に応答して、上記N段FIFO型メモリか
    ら出力される上記第iの変更部分積P*[i−1]の各
    桁要素と“0”の値のどちらか一方を選択するセレクタ
    (62)と、 上記セレクタの出力値を保持する第2の入力レジスタ
    (63)と、 上記第1の入力レジスタの出力値と上記第2の入力レジ
    スタの出力値とを加算して、一桁加算結果の一桁数と桁
    上げ信号とを出力する一桁加算器(64)と、 上記桁上げ信号を保持して、保持した桁上げ信号を出力
    する保持回路(65)と、 上記保持した桁上げ信号が“桁上げ有り”を示している
    ときは上記一桁加算結果の一桁数を1だけ増加した値
    を、そうでないときには上記一桁加算結果の一桁数をそ
    のまま、出力するインクリメンタ(66)と、 出力制御信号に応答して、上記インクリメンタの出力値
    を選択的に上記積Qの第(d+1)桁要素q[d]とし
    て出力すると共に、上記第(i+1)の変更部分積P*
    [i]の各桁要素として上記N段FIFO型メモリへ戻
    す出力制御回路(67)とを有する請求項に記載の高
    精度高桁乗算装置。
JP03347297A 1997-02-18 1997-02-18 高精度高桁乗算装置 Expired - Lifetime JP3226823B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP03347297A JP3226823B2 (ja) 1997-02-18 1997-02-18 高精度高桁乗算装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP03347297A JP3226823B2 (ja) 1997-02-18 1997-02-18 高精度高桁乗算装置

Publications (2)

Publication Number Publication Date
JPH10228369A JPH10228369A (ja) 1998-08-25
JP3226823B2 true JP3226823B2 (ja) 2001-11-05

Family

ID=12387496

Family Applications (1)

Application Number Title Priority Date Filing Date
JP03347297A Expired - Lifetime JP3226823B2 (ja) 1997-02-18 1997-02-18 高精度高桁乗算装置

Country Status (1)

Country Link
JP (1) JP3226823B2 (ja)

Also Published As

Publication number Publication date
JPH10228369A (ja) 1998-08-25

Similar Documents

Publication Publication Date Title
JP3761977B2 (ja) 遅延整合技術の利用によりクリティカル・パスを減少させた浮動小数点型掛け算器及びその演算方法
JP3244506B2 (ja) 小型乗算器
EP0574018A1 (en) Accumulating multiplication circuit executing a double precision multiplication at a high speed
US5184318A (en) Rectangular array signed digit multiplier
US5023827A (en) Radix-16 divider using overlapped quotient bit selection and concurrent quotient rounding and correction
US6295597B1 (en) Apparatus and method for improved vector processing to support extended-length integer arithmetic
US5132925A (en) Radix-16 divider using overlapped quotient bit selection and concurrent quotient rounding and correction
US6202077B1 (en) SIMD data processing extended precision arithmetic operand format
US5144576A (en) Signed digit multiplier
US5867413A (en) Fast method of floating-point multiplication and accumulation
EP1049002A2 (en) Method and apparatus for efficient calculation of an approximate square of a fixed-precision number
JP3226823B2 (ja) 高精度高桁乗算装置
JPH04355827A (ja) 開平演算装置
KR100329914B1 (ko) 제산장치
US5258945A (en) Method and apparatus for generating multiples of BCD number
Mandelbaum A method for calculation of the square root using combinatorial logic
US5457646A (en) Partial carry-save pipeline multiplier
JP2508286B2 (ja) 平方根演算装置
JP3563043B2 (ja) 平方根の逆数計算方法、計算回路、及びプログラム
RU2797164C1 (ru) Конвейерный умножитель по модулю
JP3105577B2 (ja) 分割積型乗算装置
JP2818512B2 (ja) 乗算装置
JP2001134556A (ja) 繰り返し型乗算器とアレイ型乗算器
JP5603609B2 (ja) ロジスティック写像の演算装置
SU754415A1 (ru) Устройство для деления двоичных чисел 1

Legal Events

Date Code Title Description
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20010801

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

Free format text: PAYMENT UNTIL: 20070831

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20080831

Year of fee payment: 7

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

Free format text: PAYMENT UNTIL: 20080831

Year of fee payment: 7

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

Free format text: PAYMENT UNTIL: 20090831

Year of fee payment: 8

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

Free format text: PAYMENT UNTIL: 20090831

Year of fee payment: 8

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

Free format text: PAYMENT UNTIL: 20100831

Year of fee payment: 9

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

Free format text: PAYMENT UNTIL: 20100831

Year of fee payment: 9

S533 Written request for registration of change of name

Free format text: JAPANESE INTERMEDIATE CODE: R313533

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

Free format text: PAYMENT UNTIL: 20100831

Year of fee payment: 9

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

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

Free format text: PAYMENT UNTIL: 20110831

Year of fee payment: 10

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

Free format text: PAYMENT UNTIL: 20110831

Year of fee payment: 10

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

Free format text: PAYMENT UNTIL: 20120831

Year of fee payment: 11

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

Free format text: PAYMENT UNTIL: 20120831

Year of fee payment: 11

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

Free format text: PAYMENT UNTIL: 20130831

Year of fee payment: 12

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

EXPY Cancellation because of completion of term