JP2812365B2 - 乗算回路 - Google Patents
乗算回路Info
- Publication number
- JP2812365B2 JP2812365B2 JP1147795A JP14779589A JP2812365B2 JP 2812365 B2 JP2812365 B2 JP 2812365B2 JP 1147795 A JP1147795 A JP 1147795A JP 14779589 A JP14779589 A JP 14779589A JP 2812365 B2 JP2812365 B2 JP 2812365B2
- Authority
- JP
- Japan
- Prior art keywords
- multiplier
- circuit
- multiplication
- indicates
- 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.)
- Expired - Fee Related
Links
Description
【発明の詳細な説明】 〔産業上の利用分野〕 本発明は二つの変数A,Bの積A×Bを高速に求める乗
算回路に係り、特に、乗算を繰返し利用するMeなるべき
乗演算およびMemodNなるべき乗剰余演算を高速処理する
のに有用な乗算回路に関する。
算回路に係り、特に、乗算を繰返し利用するMeなるべき
乗演算およびMemodNなるべき乗剰余演算を高速処理する
のに有用な乗算回路に関する。
乗算は基本的には何度も加算を繰返して演算する必要
があり、演算の桁数が長くなると、加算の桁上り伝搬が
高速化を妨げる要因となる。第7図は、A×Bなる乗算
を、乗数Bの2進数における各桁に対応して被乗数Aを
ずらしながら加算した例を示している。
があり、演算の桁数が長くなると、加算の桁上り伝搬が
高速化を妨げる要因となる。第7図は、A×Bなる乗算
を、乗数Bの2進数における各桁に対応して被乗数Aを
ずらしながら加算した例を示している。
この種の乗算を高速化する方法として、桁の長さに関
係なく加算を実行できるキャリーセーブ加算を利用する
手法が一般に知られている。この手法は、変数XをXCと
XSの2つの変数によりX=XS+2XCと表現する冗長表現
を採用し、XにYをたすとき、 ((2XC)・XS)∨(XS・Y)∨(Y・(2XC)), (2XC)XSY, を実行し(ここで、“・”は論理積、“∨”は論理和、
“”は排他的論理和を示す)、それらの値を新たにそ
れぞれXC,XSとし、Xの値を X←XS+2XC と更新するというものである(ここで、“←”は代入を
示す)。これを乗算に応用し、例えば第7図の場合、Y
としてAの桁をずらす部分積をキャリーセーブ加算して
求め、最終のキャリーセーブ加算が行われた後は、必要
に応じてX←XS+2XCの桁上がり伝搬加算を行い、2つ
の変数でない単一表現のXを生成する。
係なく加算を実行できるキャリーセーブ加算を利用する
手法が一般に知られている。この手法は、変数XをXCと
XSの2つの変数によりX=XS+2XCと表現する冗長表現
を採用し、XにYをたすとき、 ((2XC)・XS)∨(XS・Y)∨(Y・(2XC)), (2XC)XSY, を実行し(ここで、“・”は論理積、“∨”は論理和、
“”は排他的論理和を示す)、それらの値を新たにそ
れぞれXC,XSとし、Xの値を X←XS+2XC と更新するというものである(ここで、“←”は代入を
示す)。これを乗算に応用し、例えば第7図の場合、Y
としてAの桁をずらす部分積をキャリーセーブ加算して
求め、最終のキャリーセーブ加算が行われた後は、必要
に応じてX←XS+2XCの桁上がり伝搬加算を行い、2つ
の変数でない単一表現のXを生成する。
しかしながら、この方法では、最終段のキャリーセー
ブ加算が終わった後、桁上り伝搬加算を実行するので、
べき乗計算のようにB←A×BやB←B×Bなどの乗算
を繰り返し実行する場合、乗算終了毎に桁上り伝搬加算
をすることは高速化の制限要因となる。
ブ加算が終わった後、桁上り伝搬加算を実行するので、
べき乗計算のようにB←A×BやB←B×Bなどの乗算
を繰り返し実行する場合、乗算終了毎に桁上り伝搬加算
をすることは高速化の制限要因となる。
これを改善する方法としては、最終段のキャリーセー
ブ加算の結果が乗数として使われる場合、桁上り伝搬加
算をせずに冗長表現のまま乗算を実行する手法がある
(高木,矢島:『中間積のリコードによる繰り返し乗算
の高速化について』情報処理学会第36回(昭和63年前
期)全国大会4C−1)。この手法は、冗長表現の被乗数
Bから直接的に2進数で2桁毎に{−2,−1,0,1,2}の
いずれかの乗数値を生成するものである。この値によ
り、第7図の例の場合、Aの2の補数をとる(つまり−
1倍すること)、1桁シフトを扱う(つまり2倍するこ
と)などして{−2A,−A,0,A,2A}の何れかの部分積を
生成し、桁ずらしして、第8図に示すように2桁ずつ加
算を行うことができる。
ブ加算の結果が乗数として使われる場合、桁上り伝搬加
算をせずに冗長表現のまま乗算を実行する手法がある
(高木,矢島:『中間積のリコードによる繰り返し乗算
の高速化について』情報処理学会第36回(昭和63年前
期)全国大会4C−1)。この手法は、冗長表現の被乗数
Bから直接的に2進数で2桁毎に{−2,−1,0,1,2}の
いずれかの乗数値を生成するものである。この値によ
り、第7図の例の場合、Aの2の補数をとる(つまり−
1倍すること)、1桁シフトを扱う(つまり2倍するこ
と)などして{−2A,−A,0,A,2A}の何れかの部分積を
生成し、桁ずらしして、第8図に示すように2桁ずつ加
算を行うことができる。
乗算を2桁ずつずらして加算することで実現し、加算
回数を半分程度に削減する手法は、既に基数4のBOOTH
の乗算方式で知られる(参考文献;〔4〕K.Hwang:“コ
ンピュータの高速演算方式",近代科学社(1980).)
が、高木らの手法はこれを冗長表現の乗数B用に拡張し
たものである。
回数を半分程度に削減する手法は、既に基数4のBOOTH
の乗算方式で知られる(参考文献;〔4〕K.Hwang:“コ
ンピュータの高速演算方式",近代科学社(1980).)
が、高木らの手法はこれを冗長表現の乗数B用に拡張し
たものである。
二つの変数A,Bの積A×Bを求めるにあたり、乗数B
がBSとBCによりB=BS+2BCの関係を持つ冗長表現され
ているとし、桁毎に下位桁から順にBS[1],B
S[2],…の様に、BSおよびBCを表現する。このと
き、高木らの手法は、第9図に示す関係から(ck+1,
sk)を生成し、これから2桁毎の乗数値を生成する。し
かしながら、第9図中には選択部分が4箇所あり、skを
決定するにはその下位桁の値により決定する必要があ
り、ck+skの2桁毎の乗数値を決定するには、ckを確定
する必要から更に下位の値により決定する必要があり、
選択的な値を確定するためのデータへのメモリアクセス
制御が多くなり、速度低下ならびに装置の複雑化に伴う
ハード量増大が生じる。
がBSとBCによりB=BS+2BCの関係を持つ冗長表現され
ているとし、桁毎に下位桁から順にBS[1],B
S[2],…の様に、BSおよびBCを表現する。このと
き、高木らの手法は、第9図に示す関係から(ck+1,
sk)を生成し、これから2桁毎の乗数値を生成する。し
かしながら、第9図中には選択部分が4箇所あり、skを
決定するにはその下位桁の値により決定する必要があ
り、ck+skの2桁毎の乗数値を決定するには、ckを確定
する必要から更に下位の値により決定する必要があり、
選択的な値を確定するためのデータへのメモリアクセス
制御が多くなり、速度低下ならびに装置の複雑化に伴う
ハード量増大が生じる。
この様に、高木らの手法は下位桁の乗数を使い乗数値
を確定するため、上位桁から順に乗数値を必要とする場
合(例えば森田:『RSA暗号向き高速剰余乗算法』情報
処理学界第38回(平成元年前期)全国大会6J−2(1989
年)の乗算方法を冗長表現のまま繰り返し利用すると
き)等では、特に高速化制限要因となる。
を確定するため、上位桁から順に乗数値を必要とする場
合(例えば森田:『RSA暗号向き高速剰余乗算法』情報
処理学界第38回(平成元年前期)全国大会6J−2(1989
年)の乗算方法を冗長表現のまま繰り返し利用すると
き)等では、特に高速化制限要因となる。
本発明の目的は、上記問題の解決を図り、速度性能に
すぐれた乗算回路を提供することにある。
すぐれた乗算回路を提供することにある。
上記目的を達成するために、本発明は、キャリーセー
ブ加算用の冗長表現のまま基数4の乗数値を直接(確定
的に)生成する機構により、桁上がり伝搬加算を不要と
して、上下どちらの桁からでも乗数値を生成できる乗算
回路を提供するものである。
ブ加算用の冗長表現のまま基数4の乗数値を直接(確定
的に)生成する機構により、桁上がり伝搬加算を不要と
して、上下どちらの桁からでも乗数値を生成できる乗算
回路を提供するものである。
二つの変数A,Bについて、R←A×Bを実行すること
とし、乗数B、積Rとも冗長表現であると、B=BS+2B
C,R=RS+2RCとする。A,BS,BC,RS,RCはレジスタなどに
蓄積されているとする。また、最終結果ばかりでなく途
中経過の作業変数としてもRを用いる。また、BSなどの
各桁を2進表現で桁毎にBS[i](最下位桁のiは1と
し、BSの下位桁からi桁目の桁の値を表す)表現するも
のとする。
とし、乗数B、積Rとも冗長表現であると、B=BS+2B
C,R=RS+2RCとする。A,BS,BC,RS,RCはレジスタなどに
蓄積されているとする。また、最終結果ばかりでなく途
中経過の作業変数としてもRを用いる。また、BSなどの
各桁を2進表現で桁毎にBS[i](最下位桁のiは1と
し、BSの下位桁からi桁目の桁の値を表す)表現するも
のとする。
乗数Bの変数BS,BCは、レジスタ上で第2図に示すよ
うな配置になっているとし、全桁(k=1,2,…,「n/2
+1)に渡って、BS[2k]・BS[2k−1]・BC[2k−
1]・BC[2k−2]=0が成立する条件で(ただしB
S[i],BC[i]で、i=1,2,…,n以外のものはすべて
0とする)、領域“k"のBS,BCから、第3図のテーブル
よりskを生成し、領域“k−1"から求まるckを使い、 b(k)←ck+sk なる基数4の乗算値b(k)を求める。なお、第3図の
テーブルはメモリ上に蓄積しても良いが、特に次式の演
算を実行しても求められる。
うな配置になっているとし、全桁(k=1,2,…,「n/2
+1)に渡って、BS[2k]・BS[2k−1]・BC[2k−
1]・BC[2k−2]=0が成立する条件で(ただしB
S[i],BC[i]で、i=1,2,…,n以外のものはすべて
0とする)、領域“k"のBS,BCから、第3図のテーブル
よりskを生成し、領域“k−1"から求まるckを使い、 b(k)←ck+sk なる基数4の乗算値b(k)を求める。なお、第3図の
テーブルはメモリ上に蓄積しても良いが、特に次式の演
算を実行しても求められる。
c(k)←BS[2k−2]∨BC[2k−3]∨(BS[2k−3]・BC[2k−4]) …(2) ここで、“×”は通常の算術乗算、“+”は通常の算術
加算、“−”は通常の算術減算、“”は排他的論理
和、“∨”は論理和、“・”は論理積、上線は否定を示
す。
加算、“−”は通常の算術減算、“”は排他的論理
和、“∨”は論理和、“・”は論理積、上線は否定を示
す。
この結果、明らかにb(k)は{−2,−1,0,1,2}の
いずれかとなる。
いずれかとなる。
k=1,2,…,「n/2+1のすべてに渡って、必ずし
もBS[2k]・BS[2k−1]・BC[2k−1]・BC[2k−
2]=0(ただし、BC[0]=0)でない場合、前記処
理に先立ち以下の処理を実行する。
もBS[2k]・BS[2k−1]・BC[2k−1]・BC[2k−
2]=0(ただし、BC[0]=0)でない場合、前記処
理に先立ち以下の処理を実行する。
BS(2BC)とBS・(2BC)をそれぞれ新たなBSとBCと
する。ただし、ここの係数2は上位桁へ1桁シフトする
ことを意味し、BC[0]=0である。これにより、i=
1,2,…,nに対し、BS[i]・BC[i]=0となり、前記
条件BS[2k]・BS[2k−1]・BC[2k−1]・BC[2k−
2]=0に対する十分条件となり、第3図のテーブルま
たは上記(1),(2)式のb(k)生成演算が利用で
きるようになる。
する。ただし、ここの係数2は上位桁へ1桁シフトする
ことを意味し、BC[0]=0である。これにより、i=
1,2,…,nに対し、BS[i]・BC[i]=0となり、前記
条件BS[2k]・BS[2k−1]・BC[2k−1]・BC[2k−
2]=0に対する十分条件となり、第3図のテーブルま
たは上記(1),(2)式のb(k)生成演算が利用で
きるようになる。
以下、本発明の一実施例について図面により説明す
る。
る。
第1図は本発明による乗算回路の一実施例の全体構成
図を示したもので、レジスタブロック10及び演算ブロッ
ク20に大別される。
図を示したもので、レジスタブロック10及び演算ブロッ
ク20に大別される。
第1図において、Aレジスタ11は被乗数Aを蓄積す
る。Bレジスタ12は乗数Bを蓄積するが、乗数Bは変数
BSとBCによりB=BS+2BCなる関係の冗長表現とし、BS
はBSレジスタ12−1に、BCはBCレジスタ12−2にそれぞ
れ蓄積する。第2図は、レジスタ12−1,12−2上での
BS,BCの配置を示したものである。Rレジスタ13は最終
結果および途中経過の作業変数Rを蓄積するが、該作業
変数Rも変数RSとRCによりR=RS+2RCなる関係の冗長
表現とし、RSはRSレジスタ13−1に、RCはRCレジスタ13
−2にそれぞれ蓄積する。
る。Bレジスタ12は乗数Bを蓄積するが、乗数Bは変数
BSとBCによりB=BS+2BCなる関係の冗長表現とし、BS
はBSレジスタ12−1に、BCはBCレジスタ12−2にそれぞ
れ蓄積する。第2図は、レジスタ12−1,12−2上での
BS,BCの配置を示したものである。Rレジスタ13は最終
結果および途中経過の作業変数Rを蓄積するが、該作業
変数Rも変数RSとRCによりR=RS+2RCなる関係の冗長
表現とし、RSはRSレジスタ13−1に、RCはRCレジスタ13
−2にそれぞれ蓄積する。
b(k)生成回路21は、第3図に示すテーブルを備
え、全桁(k=1,2,…,「n/2+1)に渡って、変数
Bから基数4の乗数値b(k)(ただし、b(k)←ck
+sk)を生成する回路である。第3図のテーブルは、BS
とBCの組合せ(BS[2k],BC[2k−1],BS[2k−1],B
C[2k−2])に対し、乗数値b(k)を生成するため
に使う変数(ck+1,sk)の関係を示したもので、 組合せ(0,0,0,0)のときデータ(0, 0)、 組合せ(0,0,0,1)のときデータ(0, 1)、 組合せ(0,0,1,0)のときデータ(0, 1)、 組合せ(0,0,1,1)のときデータ(1,−2)、 組合せ(0,1,0,0)のときデータ(1,−2)、 組合せ(0,1,0,1)のときデータ(1,−1)、 組合せ(0,1,1,0)のときデータ(1,−1)、 組合せ(0,1,1,1)のときデータ(1, 0)、 組合せ(1,0,0,0)のときデータ(1,−2)、 組合せ(1,0,0,1)のときデータ(1,−1)、 組合せ(1,0,1,0)のときデータ(1,−1)、 組合せ(1,0,1,1)のときデータ(1, 0)、 組合せ(1,1,0,0)のときデータ(1, 0)、 組合せ(1,1,0,1)のときデータ(1, 1)、 組合せ(1,1,1,0)のときデータ(1, 1)、 組合せ(1,1,1,1)のときはデータがないことを表わし
ている。なお、b(k)は第3図のテーブルの代りに、
先の(1),(2)式の演算を実行しても求められる。
生成される乗算値b(k)は−2,−1,0,1,2のいずれか
の値をとる。
え、全桁(k=1,2,…,「n/2+1)に渡って、変数
Bから基数4の乗数値b(k)(ただし、b(k)←ck
+sk)を生成する回路である。第3図のテーブルは、BS
とBCの組合せ(BS[2k],BC[2k−1],BS[2k−1],B
C[2k−2])に対し、乗数値b(k)を生成するため
に使う変数(ck+1,sk)の関係を示したもので、 組合せ(0,0,0,0)のときデータ(0, 0)、 組合せ(0,0,0,1)のときデータ(0, 1)、 組合せ(0,0,1,0)のときデータ(0, 1)、 組合せ(0,0,1,1)のときデータ(1,−2)、 組合せ(0,1,0,0)のときデータ(1,−2)、 組合せ(0,1,0,1)のときデータ(1,−1)、 組合せ(0,1,1,0)のときデータ(1,−1)、 組合せ(0,1,1,1)のときデータ(1, 0)、 組合せ(1,0,0,0)のときデータ(1,−2)、 組合せ(1,0,0,1)のときデータ(1,−1)、 組合せ(1,0,1,0)のときデータ(1,−1)、 組合せ(1,0,1,1)のときデータ(1, 0)、 組合せ(1,1,0,0)のときデータ(1, 0)、 組合せ(1,1,0,1)のときデータ(1, 1)、 組合せ(1,1,1,0)のときデータ(1, 1)、 組合せ(1,1,1,1)のときはデータがないことを表わし
ている。なお、b(k)は第3図のテーブルの代りに、
先の(1),(2)式の演算を実行しても求められる。
生成される乗算値b(k)は−2,−1,0,1,2のいずれか
の値をとる。
A変形回路22は、b(k)生成回路21で生成されたb
(k)の−2,−1,0,1,2の各値に応じて、Aレジスタ11
の被乗数Aを“1桁上位へシフトし2の補数をとる”、
“2の補数をとる”、“0を出力する”、“そのままと
する”、“1桁上位へシフトする”のいずれかに変形す
る回路である。R変形回路23は、RSレジスタ13−1およ
びRCレジスタ13−2のRS,RCを下位へ2桁シフトする回
路である。
(k)の−2,−1,0,1,2の各値に応じて、Aレジスタ11
の被乗数Aを“1桁上位へシフトし2の補数をとる”、
“2の補数をとる”、“0を出力する”、“そのままと
する”、“1桁上位へシフトする”のいずれかに変形す
る回路である。R変形回路23は、RSレジスタ13−1およ
びRCレジスタ13−2のRS,RCを下位へ2桁シフトする回
路である。
キャリーセーブ加算回路24は、A変形回路22とR変形
回路23の出力を入力してキャリーセーブ加算を繰返し、
結果のRSとRCを新たにRSレジスタ13−1及びRCレジスタ
13−2に蓄積する回路である。桁上り伝搬加算器25は、
最終のキャリーセーブ加算結果のRS,RCについてR←RS
+2RCの桁上がり伝搬加算を行い、単一の値の乗算結果
を出力する回路である。
回路23の出力を入力してキャリーセーブ加算を繰返し、
結果のRSとRCを新たにRSレジスタ13−1及びRCレジスタ
13−2に蓄積する回路である。桁上り伝搬加算器25は、
最終のキャリーセーブ加算結果のRS,RCについてR←RS
+2RCの桁上がり伝搬加算を行い、単一の値の乗算結果
を出力する回路である。
第1図の乗算処理の概要は次の通りである。初めに、
作業変数Rを0に初期化する。なお、Rの実体はレジス
タ13−1,13−2に蓄積されるRS,RCなので、初期化は該
レジスタ13−1,13−2についてRS←0,RC←0を実行する
ことで実現する。その後は、b(k)生成回路21で変数
Bから乗数b(k)を生成しつつ、A変形回路22でb
(k)・Aを実行し、同時に、R変形回路23でRS←4RS
(2桁下位桁へのシフト)、RC←4RC(2桁下位桁への
シフト)を実行するとともに、キャリーセーブ加算回路
24で、 (2RCRS(b(k)A), ((2RC)・RS)∨(RS・(b(k)A))∨(b(k)A)・2RC)) のキャリーセーブ加算を実行し、新たにそれぞれの値を
RSとRCとしてレジスタ13−1,13−2に蓄積する処理を繰
返す。
作業変数Rを0に初期化する。なお、Rの実体はレジス
タ13−1,13−2に蓄積されるRS,RCなので、初期化は該
レジスタ13−1,13−2についてRS←0,RC←0を実行する
ことで実現する。その後は、b(k)生成回路21で変数
Bから乗数b(k)を生成しつつ、A変形回路22でb
(k)・Aを実行し、同時に、R変形回路23でRS←4RS
(2桁下位桁へのシフト)、RC←4RC(2桁下位桁への
シフト)を実行するとともに、キャリーセーブ加算回路
24で、 (2RCRS(b(k)A), ((2RC)・RS)∨(RS・(b(k)A))∨(b(k)A)・2RC)) のキャリーセーブ加算を実行し、新たにそれぞれの値を
RSとRCとしてレジスタ13−1,13−2に蓄積する処理を繰
返す。
乗算を繰返す場合で、乗算結果Rを乗数として新たな
Aなる値にたいしてA×Rを行う時は、本乗算回路のB
レジスタ12にRレジスタ13のRを冗長表現のまま代入す
る。この時のキャリーセーブ加算器回路は後述の第4図
で示すような回路構成で実現できる。
Aなる値にたいしてA×Rを行う時は、本乗算回路のB
レジスタ12にRレジスタ13のRを冗長表現のまま代入す
る。この時のキャリーセーブ加算器回路は後述の第4図
で示すような回路構成で実現できる。
同様に乗算を繰返す場合で、乗算結果Rを用いて次に
R×Rを行う時は、Rレジスタ13のRを冗長表現のまま
Aレジスタ11とBレジスタ12に代入する。しかし、この
ときは被乗数Aも冗長表現なので、上記と異なる4入力
加算のキャリーセーブ加算回路が必要になる。この時の
キャリーセーブ加算回路は後述の第5図で示すような回
路構成で実現できる。
R×Rを行う時は、Rレジスタ13のRを冗長表現のまま
Aレジスタ11とBレジスタ12に代入する。しかし、この
ときは被乗数Aも冗長表現なので、上記と異なる4入力
加算のキャリーセーブ加算回路が必要になる。この時の
キャリーセーブ加算回路は後述の第5図で示すような回
路構成で実現できる。
乗算結果を単一の値として取出したい場合は、桁上り
伝搬加算器(リップルキャリー加算器、桁上り先見加算
器等)25によりRS+2RCなる桁上がり伝搬加算をさせて
実現する。
伝搬加算器(リップルキャリー加算器、桁上り先見加算
器等)25によりRS+2RCなる桁上がり伝搬加算をさせて
実現する。
第4図はキャリーセーブ加算回路24の具体的構成例で
ある。部分積P(=b(k)A)と、RSとRCにより冗長
表現される作業変数R(ただしR=RS+2RC)との加算
を実行するキャリーセーブ加算回路は、一般に第6図に
示す回路で実現できる。しかし、全桁(k=1,2,…,
「n/2+1)に渡ってRS[2k]・RS[2k−1]・RC[2
k−1]・RC[2k−2]=0(ただしRC[0]=0)の
条件が常に成立しないので、乗算結果のRをそのまま次
の乗算の乗数bとして使う場合、 BS←RS(2RC),BC←RS・(2RC)に対応する回路が
新たに必要となる。
ある。部分積P(=b(k)A)と、RSとRCにより冗長
表現される作業変数R(ただしR=RS+2RC)との加算
を実行するキャリーセーブ加算回路は、一般に第6図に
示す回路で実現できる。しかし、全桁(k=1,2,…,
「n/2+1)に渡ってRS[2k]・RS[2k−1]・RC[2
k−1]・RC[2k−2]=0(ただしRC[0]=0)の
条件が常に成立しないので、乗算結果のRをそのまま次
の乗算の乗数bとして使う場合、 BS←RS(2RC),BC←RS・(2RC)に対応する回路が
新たに必要となる。
これに対し、第4図はキャリーセーブ加算を以下の様
に実行し、上式の処理を不要とするものである。
に実行し、上式の処理を不要とするものである。
つまり、第4図ではiのnから1までの各整数に対応
して、 c[i]←P[i]・RS[i−2],s[i]←P[i]RS[i−2] を第1の半加算器41で処理し、 t[i]←RC[i−3]∨C[i−1] なる論理和をOR回路42でとり、 RC[i]←s[i]・t[i],RS[i]←s[i]t[i] を第2の半加算器43で処理する回路構成にして、逐次乗
算の途中経過であるRCとRSを更新する。ここで、最終段
を半加算器としているので、上記条件は常に成立する。
して、 c[i]←P[i]・RS[i−2],s[i]←P[i]RS[i−2] を第1の半加算器41で処理し、 t[i]←RC[i−3]∨C[i−1] なる論理和をOR回路42でとり、 RC[i]←s[i]・t[i],RS[i]←s[i]t[i] を第2の半加算器43で処理する回路構成にして、逐次乗
算の途中経過であるRCとRSを更新する。ここで、最終段
を半加算器としているので、上記条件は常に成立する。
一般に、全加算器は半加算器2個分の回路量で済むの
で、本実施例は殆ど回路量の増大なく実施できる。
で、本実施例は殆ど回路量の増大なく実施できる。
第5図はキャリーセーブ加算回路24の別の具体的構成
例であり、第4図の構成を冗長表現の被乗数Aに対して
拡張したものである。本キャリーセーブ加算回路は、PS
とPCにより冗長表現される部分積P(Pはb(k)Aに
より生成し、P=PS+2PCで表現される)とRSとRCによ
り表現される作業変数R(ただしR=RS+2RC)との加
算を実行する。つまり、iのnから1までの各整数に対
応して、 c1[i]←PS[i]・RS[i−2],s1[i]←PS[i]RS[i−2] を第1の半加算器51で処理し、 t[i]←RC[i−3]∨C1[i−1] なる論理和をOR回路52でとり、 c2[i]←(s[i]・PC[i−1])∨(PC[i−1]・t[i])∨(t
[i]・s1[i]),s2[i]←s1[i]PC[i−1]t[i] を全加算器52で処理し、 RC[i]←s2[i]・c2[i−1],RS[i]←s2[i]c2[i−1] を第2の半加算器54で処理する。
例であり、第4図の構成を冗長表現の被乗数Aに対して
拡張したものである。本キャリーセーブ加算回路は、PS
とPCにより冗長表現される部分積P(Pはb(k)Aに
より生成し、P=PS+2PCで表現される)とRSとRCによ
り表現される作業変数R(ただしR=RS+2RC)との加
算を実行する。つまり、iのnから1までの各整数に対
応して、 c1[i]←PS[i]・RS[i−2],s1[i]←PS[i]RS[i−2] を第1の半加算器51で処理し、 t[i]←RC[i−3]∨C1[i−1] なる論理和をOR回路52でとり、 c2[i]←(s[i]・PC[i−1])∨(PC[i−1]・t[i])∨(t
[i]・s1[i]),s2[i]←s1[i]PC[i−1]t[i] を全加算器52で処理し、 RC[i]←s2[i]・c2[i−1],RS[i]←s2[i]c2[i−1] を第2の半加算器54で処理する。
以上の説明から明らかな如く、本発明によれば以下の
ような効果が得られる。
ような効果が得られる。
(1)乗数が冗長表現の乗数から基数4で、任意の桁か
ら順に求められるので、特に剰余乗算などに有効であ
る。
ら順に求められるので、特に剰余乗算などに有効であ
る。
(2)高木らの方法と異なり、値の選択が不要な分だけ
本発明は演算量及びハード量を削減する効果がある。特
に上位桁から下位桁に順に乗数を求める時は速度におい
て著しい効果がある。
本発明は演算量及びハード量を削減する効果がある。特
に上位桁から下位桁に順に乗数を求める時は速度におい
て著しい効果がある。
(3)全桁(k=1,2,…)に渡って、BS[2K]・BS[2k
−1]・BC[2k−1]・BC[2k−2]=0が成立する条
件はそれほど特殊な条件でなく、従来、キャリーセーブ
加算回路を構成していた全加算器を出力段を半加算器か
らなる構成に置き換えることで容易に成立させることが
できる。
−1]・BC[2k−1]・BC[2k−2]=0が成立する条
件はそれほど特殊な条件でなく、従来、キャリーセーブ
加算回路を構成していた全加算器を出力段を半加算器か
らなる構成に置き換えることで容易に成立させることが
できる。
第1図は本発明の乗算回路の一実施例の全体構成図、第
2図は冗長表現の乗数Bの配列を示す図、第3図は本発
明で乗数値b(k)を生成するために使う変数(ck+1,s
k)の参照テーブルを示す図、第4図及び第5図は本発
明で使用するキャリーセーブ加算回路の具体的構成例を
示す図、第6図は従来からの一般的キャリーセーブ加算
回路を示す図、第7図は乗算の基本原理を説明する図、
第8図はキャリーセーブ加算による乗算を説明する図、
第9図は従来における乗数値b(k)を生成するために
使う変数(ck+1,sk)の参照テーブルを示す図である。 11……Aレジスタ、12−1……BSレジスタ、12−2……
BCレジスタ、13−1……RSレジスタ、13−2……RCレジ
スタ、21……b(k)生成回路、22……A変形回路、23
……R変形回路、24……キャリーセーブ加算回路、25…
…桁上り伝搬加算器。
2図は冗長表現の乗数Bの配列を示す図、第3図は本発
明で乗数値b(k)を生成するために使う変数(ck+1,s
k)の参照テーブルを示す図、第4図及び第5図は本発
明で使用するキャリーセーブ加算回路の具体的構成例を
示す図、第6図は従来からの一般的キャリーセーブ加算
回路を示す図、第7図は乗算の基本原理を説明する図、
第8図はキャリーセーブ加算による乗算を説明する図、
第9図は従来における乗数値b(k)を生成するために
使う変数(ck+1,sk)の参照テーブルを示す図である。 11……Aレジスタ、12−1……BSレジスタ、12−2……
BCレジスタ、13−1……RSレジスタ、13−2……RCレジ
スタ、21……b(k)生成回路、22……A変形回路、23
……R変形回路、24……キャリーセーブ加算回路、25…
…桁上り伝搬加算器。
Claims (2)
- 【請求項1】二つの変数A,Bの積A×Bを求める乗算回
路であって、 乗数Bを変数BSとBCによりB=BS+2BCなる関係で表現
し、変数BSとBCは2進数で下からi桁目の値をそれぞれ
Bs[i]とBc[i]で表わし、全桁k=1,2,・・・,
「n/2+1(「xはx以上の最小の整数を示す)と
したとき、組合せ(BS[2k],BC[2k−1],BS[2k−
1],BC[2k−2])に対するデータ(ck+1,sk)を表示
する参照テーブルとして、 ただし、×は(ck+1,sk)なる値を持たないことを示す なるテーブルを備えて、k=1,2,・・・,「n/2+1
の各々に対し、該テーブルからskとckを参照してb
(k)←sk+ckなる乗数値(←は代入を示す。c1=0と
する)を生成する手段と、 上記生成された乗数値b(k)の−2,−1,0,1,2の各値
に応じて、被乗数Aを1桁上位へシフトし2の補数をと
る、2の補数をとる、0を出力する、そのままとする、
1桁上位へシフトするのいずれかに変形する手段と、 上記変形された被乗数を2桁上位側へずらして積算して
いく手段とからなることを特徴とする乗算回路。 - 【請求項2】k=1,2,・・・,「n/2+1に関して乗
数Bより、上記ck,skを収容する参照テーブルに代わっ
て、 c(k)←BS[2k−2]∨BC[2k−3]∨(BS[2k−3]・BC[2k−4]) を求める演算手段(ここで、“×”は通常の算術乗算、
“+”は通常の算術加算、“−”は通常の算術減算、
“”は排他的論理和、“∨”は論理和、“・”は論理
積を示す)を設けたことを特徴とする請求項(1)記載
の乗算回路。
Priority Applications (6)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP1147795A JP2812365B2 (ja) | 1989-06-09 | 1989-06-09 | 乗算回路 |
US07/471,787 US5073870A (en) | 1989-01-30 | 1990-01-29 | Modular multiplication method and the system for processing data |
CA002008774A CA2008774C (en) | 1989-01-30 | 1990-01-29 | Modular multiplication method and the system for processing data |
EP90101842A EP0381161B1 (en) | 1989-01-30 | 1990-01-30 | Modular multipication method and the system |
DE69032811T DE69032811T2 (de) | 1989-01-30 | 1990-01-30 | Verfahren und System zur modularen Multiplikation |
US07/730,602 US5144574A (en) | 1989-01-30 | 1991-07-16 | Modular multiplication method and the system for processing data |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP1147795A JP2812365B2 (ja) | 1989-06-09 | 1989-06-09 | 乗算回路 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH0312737A JPH0312737A (ja) | 1991-01-21 |
JP2812365B2 true JP2812365B2 (ja) | 1998-10-22 |
Family
ID=15438382
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP1147795A Expired - Fee Related JP2812365B2 (ja) | 1989-01-30 | 1989-06-09 | 乗算回路 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2812365B2 (ja) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4954019B2 (ja) * | 2007-10-30 | 2012-06-13 | 三洋電機株式会社 | 演算装置 |
-
1989
- 1989-06-09 JP JP1147795A patent/JP2812365B2/ja not_active Expired - Fee Related
Non-Patent Citations (1)
Title |
---|
外村元伸、「冗長2進数表現による繰返し乗算方式」、情報処理学会論文誌,1990年,Vol.31,No.6,P.861−869 |
Also Published As
Publication number | Publication date |
---|---|
JPH0312737A (ja) | 1991-01-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Orup | Simplifying quotient determination in high-radix modular multiplication | |
Ding et al. | High-speed ECC processor over NIST prime fields applied with Toom–Cook multiplication | |
JP4201980B2 (ja) | マルチプレシジョン整数演算用の装置 | |
EP1293891A2 (en) | Arithmetic processor | |
JPH0612229A (ja) | 乗累算回路 | |
JPS6347874A (ja) | 算術演算装置 | |
JP2002108606A (ja) | スティッキービット生成回路及び乗算器 | |
US6009450A (en) | Finite field inverse circuit | |
JPH0368416B2 (ja) | ||
US5528529A (en) | Electronic multiplying and adding apparatus and method | |
JPH0477932B2 (ja) | ||
Kaihara et al. | Bipartite modular multiplication | |
Kelley et al. | Parallelized very high radix scalable Montgomery multipliers | |
JP2812365B2 (ja) | 乗算回路 | |
US7607165B2 (en) | Method and apparatus for multiplication and/or modular reduction processing | |
JP3660075B2 (ja) | 除算装置 | |
JP4223819B2 (ja) | べき乗剰余演算装置及びそのプログラム | |
JP4850884B2 (ja) | べき乗剰余演算器 | |
JPH0621983B2 (ja) | 乗算器 | |
JP2821849B2 (ja) | 高次方程式の求根装置 | |
SU711570A1 (ru) | Арифметическое устройство | |
Pinckney et al. | Parallelized Booth-encoded radix-4 Montgomery multipliers | |
JPS6259828B2 (ja) | ||
Amrutha et al. | HIGH-SPEED DOUBLE MULTIPLICATION ARCHITECTURE FOR PARALLEL MULTIPLICATION USING MASTROVITO MULTIPLIER. | |
JPH1049347A (ja) | 乗算器 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
LAPS | Cancellation because of no payment of annual fees |