JP3261600B2 - 剰余乗算器 - Google Patents
剰余乗算器Info
- Publication number
- JP3261600B2 JP3261600B2 JP09670794A JP9670794A JP3261600B2 JP 3261600 B2 JP3261600 B2 JP 3261600B2 JP 09670794 A JP09670794 A JP 09670794A JP 9670794 A JP9670794 A JP 9670794A JP 3261600 B2 JP3261600 B2 JP 3261600B2
- Authority
- JP
- Japan
- Prior art keywords
- multiplier
- value
- remainder
- storage means
- partial
- 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
Links
Description
に多数桁の剰余乗算の解を求めることが要求される暗号
通信、ディジタル署名を利用する装置の剰余乗算器に関
する。
桁の正整数である被乗数A、乗数B、法Nにおいて、A
×Bmod Nなる剰余乗算を行う場合、Bのi+1桁目を
B[i]を表し、A×B[i]なる部分積を途中結果で
ある部分剰余Rに加え、RmodNを行い、結果をRに格
納する手順をRを上位桁側にシフトしながら、繰り返す
方法が用いられる。
意味し、a×r+bと等価である。|a|はaの絶対値
を表す。また、Rの部分的な桁の連結はRと同じ符号で
あるとする。
フローチャートである。
する。
[n−1]で除して部分商qを得る(q=R[n]:R
[n−1]/N[n−1])。
側へシフトした値をRから減じる(R=R−N)。q≠
rのとき、Rからq×Nを減じ、結果を上位へ1桁シフ
トしてRへ格納する(R=R−q×N)。
(R=R+A×B[i])。
[n−1]で除して補正商qcを得(qc=R[n+
1]:R[n]/N[n−1])、qcが0でない場
合、r×qc×NをRより減じ、結果をRへ格納する
(R=R−r×qc×N)。
1)、ステップ7に移行し、iが−1でないとき(i≠
−1)、iから1を減じ(i=i−1)、ステップ2に
移行する。
にr×Nを加える(R=R+r×N)。
る。
従来の方法において、ステップ3が終了した段階では、 R[n+1]:R[n]≦N[n−1] である。続く、ステップ4でRにA×B[i]を加える
が、A×B[i]は、 0≦A×B[i]≦rn+1 −rn −r+1 の範囲となるため、R[n+1]:R[n]≧N[n−
1]となる場合ある。N[n−1]が小さいほど、ま
た、A×B[i]の値が大きいほど、R[n+1]:R
[n]≧N[n−1]となる場合が増加する。
N[n−1]のとき、次段の部分商qがr以上となっ
て、乗算器への入力がオーバーフローすることを避ける
ための処理である。rを216とし、N,A,Bを任意の
整数とすると、平均的にステップ5において、1/7程
度の確率でqc>0となりR−qc×Nの補正処理が行
われるため、処理時間が増加するという問題がある。
で、従来の問題点を解決し、剰余乗算の計算途中におい
て、部分剰余の補正処理を実行する確率を下げるまた
は、補正処理を不要とし、補正処理に要する時間を減少
させ、高速に剰余乗算を実行することを可能とする剰余
乗算器を提供することを目的とする。
原理構成図である。
整数の被乗数A、乗数B、法Nを入力とし、入力された
被乗数Aを保持する第1の記憶手段(2)、入力された
乗数Bを保持する第2の記憶手段(1)、入力された法
Nを記憶する第3の記憶手段(3)と、演算の途中結果
である部分剰余Rを格納する部分剰余記憶手段(4)
と、乗算器(7、8)、減算器(15)を備え、A×B
modNなる剰余乗算を行う剰余乗算器において、第2の
記憶手段の値である整数Bのi−1桁目をB[i]と表
現し、B[i]を2進数で表現した場合の最上位ビット
の値をMSB(B[i])と表現し、乗数Bの各行をB
[i]−r×MSB(B[i])+MSB(B[i−
1])なる表現に変換する乗数変換手段(5)と、乗数
変換手段(5)により乗数Bの一桁を変換された値bi
を記憶する変換値記憶手段(6)と、第1の記憶手段
(2)に記憶されている被乗数A及び変換値記憶手段
(6)に記憶されている値biの乗算を行う第1の乗算
器(7)と、第1の乗算器(7)の出力と部分剰余記憶
手段(4)の値Rが入力され、加算を行い、部分剰余記
憶手段(4)に出力する加算器(14)とを有する。
乗算器に加えて、部分剰余記憶手段(4)の値Rの上位
3桁以上を被除数、第3の記憶手段(3)の値Nの上位
2桁以上を除数として除算を行う除算器(9)と、部分
剰余記憶手段(4)の値Rと変換値記憶手段(6)の値
biが同符号のとき、除算手段(9)の出力値qの絶対
値を1増加させるように補正する補正手段(100)
と、補正手段(100)において補正された除算結果、
または、値Rと値biが異符号のときは、除算器(9)
の除算結果を保持し、第2の乗算器(8)に入力する除
算結果記憶手段(101)を有する。
器(9)が商q及び剰余cを出力するものとし、部分剰
余記憶手段(4)の値Rと変換値記憶手段(6)の値b
iが同符号で、かつ剰余cが閾値以上のとき除算結果記
憶手段(101)の値qの絶対値を1増加させるように
補正する。
たbiを用いることで、被乗数A×biの絶対値の範囲
は、0≦A×bi≦(rn+1 −r)/2となり、部分剰
余Rへ加えた場合に、|R[n+1]:R[n]|≧N
[n−1]となる場合を減少させ、従来の方法のステッ
プ5でRの補正を行う確率を下げることができる。
Rの符号を調べることにより、A×biをRに加える影
響を先行的に予測することが可能となる。即ち、biと
Rが同符号の場合、A×biをRに加えると|R[n+
1]:R[n]|≧N[n−1]となる場合があるた
め、予めqの絶対値を1増やすように、qを補正してお
く。この部分商qの補正は、前述の従来の方法における
ステップ5で行われる補正において、qc=±1の場合
の補正処理と同様の効果があり、ステップ5の補正処理
のほぼ全てをステップ4で実行することが可能となる。
位3桁をNの上位2桁で除した剰余の絶対値がrより小
さく、かつ除算器の商の出力が補正される場合にのみ、
ステップ5の補正処理は実行される。従って、第3の剰
余乗算器において、閾値をrとして、剰余の絶対値がr
以上である時のみ除算器の商の補正を行うように制御す
ることにより、従来の方法におけるステップ5の補正処
理を不要とすることが可能である。
プ4を処理した段階でのRの範囲は、−2×r×N<2
×r×Nとなるため、ステップ5における補正処理でq
cが取り得る値は、qc=0,1,−1のいずれかとな
り、r×qc×NをRから減じる代わりに、qc=1の
とき、r×NをRから減じ、qc=−1のとき、r×N
をRに加える処理で済み、qcを乗じることによる処理
の遅延を削減することができる。
る。
実施例の剰余乗算器の構成を示す。同図に示す剰余乗算
器は、r進数n桁の正の整数の被乗数Aを記憶する被乗
数記憶部1、乗数Bを記憶する乗数記憶部2、法Nを記
憶する法記憶部3、被乗数A、乗数B、法Nによる演算
結果の途中結果である部分剰余Rを格納する剰余記憶部
4、乗数変換部5、乗数変換値記憶部6、第1の乗算器
7、第2の乗算器8、除算器9、部分商記憶部10、減
算器11、シフタ12、13、加算器14、加減算器1
5、カウンタ21及びこれらを制御する制御部16より
構成される。
B[i]を2進数で表現した場合の最上位ビットを値M
SB(B[i])とするとき、乗数変換部5は、乗数記
憶部2より入力された乗数Bの各桁を B[i]−r×MSB(B[i])+MSB(B[i−
1]) なる表現に変換し、この変換された値を乗数変換値記憶
部6に入力する。第1の乗算器7は、乗数変換値記憶部
6の値と被乗数記憶部4から入力された被乗数Aを乗算
し(A×b)、その結果を加算器14に出力する。
Nと部分剰余記憶部4から入力される部分剰余Rを除算
し、除算結果qを部分商記憶部10に格納する。
と法記憶部3の法Nとの乗算を行う(q×N)。
部分剰余記憶部4の部分剰余Rより減算する(R−q×
N)。シフタ12は、減算結果を1桁上位へシフトす
る。
と、シフタ12でシフトされた減算結果を加算して、加
算値((R−q×N)×r+A×bi)を部分剰余記憶
部4に出力する。
すフローチャートである。
−1とし、乗数記憶部1からB[n−1]の最上位ビッ
トが1の時に、部分剰余記憶部4に被乗数Aを格納し、
0のときには、0を格納し、初期化する。
を乗数変換部5に入力し、乗数変換を行い(bi−RB
(B[i]、B[i−1])、その出力を乗数変換値記
憶部6に格納する。
3桁以上を被除数R、法記憶部3の上位2桁以上を除数
Nとして、除算器9に入力し、除算器9の出力を部分商
記憶部10に格納する。
剰余記憶部4に格納されている部分商記憶部10の値q
と法記憶部3に記憶されている法Nを乗算し、乗算結果
を減算器11に入力して、部分剰余Rから減算する(R
−q×N)。さらに、シフタ12によりこのR−q×N
を1桁上位にシフトするして((R−q×N)×r)。
第1の乗算器7は、乗数変換値記憶部6の値biと被乗
数記憶部2の被乗数Aを乗算する(bi×A)。加算器
14は、シフタ12によりシフトされた値((R−q×
N)×rと、A×biを加え((R−q×N)×r+A
×bi))、これを部分剰余記憶部4に格納する(R=
(R−q×N)×r+A×bi)。
の絶対値がN[n−1]より大きいか等しい時(|R
[n+1]:R[n]|≧N[n−1])、法Nを一桁
上位側へシフトし、部分剰余Rが正のとき、Rから減じ
(R=R−N)、部分剰余Rが負の時は、Rに加えて
(R=R+N)、Rを補正する。
のとき、ステップ107に移行し、iが0でないときi
から1を減じてステップ102に移行する。
桁上位側にシフトして、Rに加えることで、Rを正に補
正する(R=R+r×N)。
部4に格納されているR[n]からR[1]を演算結果
として出力する。
部の動作を示すフローチャートである。
1において、乗数変換部5は、乗数記憶部1から入力さ
れた乗数BについてMSB(B[i])=1であれば、
乗数変換値記憶部6に−B[i]を格納し、MSB(B
[i])≠1であれば、乗数変換値記憶部6にB[i]
を格納する。
=1であれば、変換値記憶部6に記憶されている変換値
biをインクリメントする(bi=bi+1)。
実施例の剰余乗算器の構成を示す。同図において、図3
と同一構成部分には、同一符号を付し、その説明を省略
する。
えて、部分商補正部17を加えた構成である。部分商補
正部17は、乗数変換部6の乗数変換値biと部分剰余
記憶部4の部分剰余Rの符号を比較して、除算器9の出
力である部分商を補正する。以下に補正する動作を説明
する。
フローチャートである。同図において、第1の実施例の
図4と同一動作を行うステップには、同一のステップ番
号を付与し、説明を省略する。
上を被除数、Nの上位2桁以上を除数として除算器9へ
入力された場合に、Rとbiが同符号のとき、除算器9
の出力を部分商補正部17に入力し、部分商補正処理を
行う(q=QC(q,R,b))(ステップ204)。
出力をqに格納するよう制御する。
様の動作となる。
正部の動作を示すフローチャートである。
分剰余Rと乗数変換値biの符号を比較する。
には、商qが0より小さいかを判定し、q<0である場
合には、商qより1減じ(q=q−1)、q≧0の場合
には、商qに1加える(q=q+1)という補正を行
う。また双方の符号が異なっている場合には、部分商記
憶部10に補正せずに、除算器9で求められた商qをそ
のまま格納する。
実施例の動作を示すフローチャートである。同図におい
て、第1、2の実施例の図4または、図7と同一動作を
行うステップには、同一のステップ番号を付与し、説明
を省略する。
て、除算器9は、3桁以上の整数を二桁以上の整数で除
して商qと剰余cを出力するものとする。このとき、R
の上位3桁以上を被除数、Nの上位2桁以上を除数とし
て除算器9に入力し、
で、 c=R[n]‖R[n−1]‖R[n−2]mod N[n
−1]‖N[n−2] で求められたcがr以上である場合には、除算器9の出
力を部分商補正部17に入力し、部分商補正処理を行
い、その補正結果を部分商記憶部10に格納する(q=
QC3(q,R,b,c)。
プ106の動作を行う。これ以外の処理は上記の第2の
実施例と同様の動作である。
補正部の動作を示すフローチャートである。
Rと、乗数変換値記憶部6の変換値biの符号を比較
し、異なっていれば、除算器9で出力されたqをそのま
ま、部分商記憶部10に格納する。
ている場合には、上記ステップ404による補正を行
い、補正値cがrより小さい(c<r)場合には、乗算
器9で出力されたqをそのまま部分商記憶部10に格納
する。
ており、補正値cがr以上(c≧r)であり、かつ、商
q<0の場合には、q=q+1とし、商qを部分商記憶
部10に格納する。また、商q≧0の場合には、q=q
−1とし、商qを部分商記憶部10に格納する。これに
より、第1の実施例のステップ105は不要となり、ス
テップ104が終了したら、ステップ106の処理に移
行すればよい。他のステップは、第1の実施例と同様で
ある。
大きい時には、前述の第1の実施例〜第3の実施例にお
いて、乗算器、加算器、減算器を小数桁の乗算器、加算
器、減算器を繰り返して使用する構成について説明す
る。
算器における加算器及び減算器の構成を示す。
算器7及び第2の乗算器8として、1桁×1桁の乗算器
を用いる。また、r進1桁で初期値0のレジスタ1を持
ち、第1の乗算器7の出力をレジスタ19に入力し、レ
ジスタ129の出力を加算器18に入力する構成とす
る。ここで、レジスタ19は、2ビットのシフトレジス
タである。
の加算器及び減算器を用いて構成する。
す。同図において、2ビットのシフトレジスタ19は、
加算器18あるいは、減算器18からの桁上がり出力を
保持すると同時に、前段の桁上がりを上位ビットへシフ
トして出力することで、桁上がりを遅延させて加算器ま
たは減算器へ入力する。
減算器からの出力の上位桁を保持し、次段の入力の下位
桁とするものである。この場合には、第1及び第2の実
施例の構成の剰余乗算器のシフタ12、13は不要とす
る。
施例のステップ104において、第1の乗算器7、第2
の乗算器8へ被乗数A、法N、部分剰余Rの下位桁から
1桁ずつ入力し、加算器14の出力を1桁ずつRの下位
桁から格納し、最上位桁R[n+1]を格納するまで繰
り返し制御することで、(R−q×N)×r+A×bi
の処理を小規模な演算器を用いて実施することが可能で
ある。
ず、第2、第3の実施例の加算器14にも適用可能であ
る。
の計算途中において、部分剰余の補正処理を実行する確
率を下げる、或いは、補正処理を不要とすることを可能
とし、補正処理に要する時間を減少させ、高速に剰余乗
算を実行することが可能となる。
ある。
ートである。
すフローチャートである。
ある。
ートである。
示すフローチャートである。
ートである。
を示すフローチャートである。
加算器/減算器の構成図である。
トである。
Claims (3)
- 【請求項1】 r進数n桁の正の整数の被乗数A、乗数
B、法Nを入力とし、入力された被乗数Aを保持する第
1の記憶手段、入力された乗数Bを保持する第2の記憶
手段、入力された法Nを記憶する第3の記憶手段と、演
算の途中結果である部分剰余Rを格納する部分剰余記憶
手段と、乗算器、減算器を備え、A×B modNなる剰余
乗算を行う剰余乗算器において、 該乗数B(整数)のi−1桁目をB[i]と表現し、該
B[i]を2進数で表現した場合の最上位ビットの値を
MSB(B[i])と表現し、 該乗数Bの各行をB[i]−r×MSB(B[i])+
MSB(B[i−1])なる表現に変換する乗数変換手
段と、 該乗数変換手段により該乗数Bの一桁が変換された値b
iを記憶する変換値記憶手段と、 該第1の記憶手段に記憶されている被乗数A及び該変換
値記憶手段に記憶されている値biの乗算を行う第1の
乗算器を有することを特徴とする剰余乗算器。 - 【請求項2】 前記部分剰余記憶手段Rの値Rの上位3
桁以上を被除数、前記第3の記憶手段Nの値Nの上位2
桁以上を除数として除算を行う除算器と、 該部分剰余記憶手段Rの値Rと前記変換値記憶手段bi
の値biが同符号のとき、該除算器の除算結果qの絶対
値を1増加させるように補正する補正手段と、 該補正手段によって補正された除算結果、または、該値
Rと該値biが異符号である場合に、補正されていない
除算結果を保持し、第2の乗算器に入力する除算結果記
憶手段とを含む請求項1記載の剰余乗算器。 - 【請求項3】 前記補正手段は、前記除算器が商q及び
剰余cを出力するものとし、 前記部分剰余記憶手段Rの値Rと前記変換値記憶手段b
iが同符号で、かつ剰余cが閾値以上のとき商qを前記
補正手段に入力し、絶対値を1増加させるように補正す
る請求項1及び2記載の剰余乗算器
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP09670794A JP3261600B2 (ja) | 1994-05-10 | 1994-05-10 | 剰余乗算器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP09670794A JP3261600B2 (ja) | 1994-05-10 | 1994-05-10 | 剰余乗算器 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH07306773A JPH07306773A (ja) | 1995-11-21 |
JP3261600B2 true JP3261600B2 (ja) | 2002-03-04 |
Family
ID=14172229
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP09670794A Expired - Lifetime JP3261600B2 (ja) | 1994-05-10 | 1994-05-10 | 剰余乗算器 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3261600B2 (ja) |
-
1994
- 1994-05-10 JP JP09670794A patent/JP3261600B2/ja not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
JPH07306773A (ja) | 1995-11-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6366940B1 (en) | High-speed modular multiplication apparatus achieved in small circuit | |
JP2001222410A (ja) | 除算器 | |
JPH04205026A (ja) | 除算回路 | |
JP3261600B2 (ja) | 剰余乗算器 | |
JPH0234054B2 (ja) | ||
JP5175983B2 (ja) | 演算装置 | |
JP3660075B2 (ja) | 除算装置 | |
JP2645422B2 (ja) | 浮動小数点演算処理装置 | |
JP2777265B2 (ja) | 高基数開平演算装置 | |
JPH0326114A (ja) | 乗算剰余演算器 | |
JP3190826B2 (ja) | 積和演算装置 | |
JP4293665B2 (ja) | 剰余乗算装置 | |
JP3851024B2 (ja) | 乗算器 | |
JP3277497B2 (ja) | 除算装置 | |
JP5450781B1 (ja) | 演算回路及び方法 | |
JP3415569B2 (ja) | 10進データ除算方法およびそのプログラム記録媒体 | |
JP2001344093A (ja) | 除算装置 | |
JPH11134174A (ja) | 演算回路 | |
JPH0371332A (ja) | 剰余乗算回路および剰余乗算方法 | |
JPH0368415B2 (ja) | ||
JPH1049347A (ja) | 乗算器 | |
JP3230349B2 (ja) | 10進乗算器 | |
JPH0387924A (ja) | 10進整数除算回路 | |
JPH07160480A (ja) | 10進除算器 | |
CN117608522A (zh) | 一种大整数乘法运算方法、装置及设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
FPAY | Renewal fee payment (prs date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20071221 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (prs date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20081221 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (prs date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20091221 Year of fee payment: 8 |
|
FPAY | Renewal fee payment (prs date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20101221 Year of fee payment: 9 |
|
FPAY | Renewal fee payment (prs date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20101221 Year of fee payment: 9 |
|
FPAY | Renewal fee payment (prs date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20111221 Year of fee payment: 10 |
|
FPAY | Renewal fee payment (prs date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20111221 Year of fee payment: 10 |
|
FPAY | Renewal fee payment (prs date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20121221 Year of fee payment: 11 |
|
FPAY | Renewal fee payment (prs date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20121221 Year of fee payment: 11 |
|
FPAY | Renewal fee payment (prs date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20131221 Year of fee payment: 12 |
|
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 |
|
EXPY | Cancellation because of completion of term |