JP3099255B2 - 剰余乗算器 - Google Patents
剰余乗算器Info
- Publication number
- JP3099255B2 JP3099255B2 JP06096708A JP9670894A JP3099255B2 JP 3099255 B2 JP3099255 B2 JP 3099255B2 JP 06096708 A JP06096708 A JP 06096708A JP 9670894 A JP9670894 A JP 9670894A JP 3099255 B2 JP3099255 B2 JP 3099255B2
- Authority
- JP
- Japan
- Prior art keywords
- storage means
- register
- partial remainder
- storage unit
- output
- 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 modcなる剰余乗算を行う剰余乗算器は、b
の部分桁b[i]をaに乗じてa×b[i]なる部分積
を求め、cによる除算を行い、部分剰余を求め、部分剰
余をr倍し、n−1≧i≧0なるiについて1を減じな
がら、繰り返して実行するよう構成される。
とする。以下r=2のとき、即ち、2進数でbの部分桁
を考える場合について説明する。この場合、部分積を求
める乗算は、加算に、部分剰余を求める除算は、減算に
置き換えることができる。
ートである。
b、法cが外部より入力され、被乗数aをレジスタAに
格納し、乗数b、法cをそれぞれレジスタB,Cに格納
し、レジスタRを0に、変数jをn−1に初期化する
(R=0,J=N−1)。
1の時、レジスタRの値にレジスタAの値を加え、結果
をレジスタRへ格納する(R=R+A)。これは、部分
積を求めることに相当する。
タCの値を減じ、結果をレジスタRへ格納する(R=R
−C)。これは、部分剰余を求めることに相当する。
さい場合には(R<0)、レジスタRの値にレジスタC
の値を加える(R=R+C)。レジスタRの値が0以上
の場合には(R≧0)、次ステップへ移行する。
桁上位にシフトし、レジスタRに格納する。
≠0)には、カウンタ値jから1を減じて、結果をjに
格納し(j=j−1)、ステップ2に移行する。
(j=0)には、レジスタRの値を剰余として出力す
る。
乗算を実行するには、ステップ2、ステップ3、ステッ
プ4、ステップ5において、レジスタA,C,Rの全て
の桁を同時に読み出し、書込みが可能な記憶手段である
フリップフロップで構成されるレジスタを用いる。
としてRAMを用いる場合、1回の動作がr進1桁の読
み出しまたは、書込みに限定されるので、r進1桁の記
憶手段m1を設け、上記のステップ2における加算、ス
テップ3における減算、ステップ5におけるシフトを記
憶手段m1を介して1桁ずつ行う。
データを一時的に記憶手段m1に格納し、読み出しが終
了してから記憶手段m1へ格納し、読み出しが終了して
から、記憶手段m1の内容をレジスタRに書き込む方法
がとられる。また、書込み中に、読み出しを行わないよ
うに演算回路を制御する方法がとられる。
1の従来の方法は、高速な剰余乗算を実行するには、ス
テップ2、ステップ3、ステップ4、ステップ5におい
て、レジスタA,C,Rの全ての桁を同時に読み出し、
さらに、同一システムクロック内で全ての桁を同時に書
き込むことが必要であり、同時読み出し、書込みが可能
な記憶手段であるフリップフロップで構成されるレジス
タを用いなければならない。しかし、レジスタは、同様
に記憶手段であるRAMと比較するとビット当たりのゲ
ート数が数倍以上必要となり、LSIへの適用を考える
と、高コストとなる。
Rとしてレジスタに比較して低コストなRAMを用いて
いるため、第1の従来の方法よりも低コストであるが、
RAMの性質上、多数桁への書込み、読み出しを可能と
する構成は、読み出し、書込み口となるポートを複数設
けるため、複雑度が上がり、低コストという利点が失わ
れてしまうために困難であり、第1の従来の方法のよう
に、多数桁の演算を同時に行うことによって高速な処理
を得ることはできない。
という制限によって、書込み、読み出しの待ち時間が発
生するため、実行時間が第1の従来の方法に対して増加
し、演算速度を著しく低下させる要因となっている。
で、従来の問題点を解決し、ゲート数の多い記憶手段に
よる高コストを解決し、また、同時に多数桁の読み出
し、或いは、書込みができない記憶手段または、同時に
読み出しと書込みを実行できない記憶手段による演算の
低速性を解決し、低コストで高速な剰余演算器を提供す
ることを目的とする。
成図である。
cを入力とし、加算器(10)、減算器(7)と部分剰
余を記憶する部分剰余記憶手段R(300)を備え、a
×bmodcの剰余乗算を行う剰余乗算器において、加算
器(10)からの桁上がり出力を2回分保持する第1の
記憶手段cr2(11)と、減算器(7)からの桁上が
り出力を2回分保持する第2の記憶手段cr1(8)
と、加算器(10)、減算器(7)からの出力を記憶す
るレジスタm1(14),レジスタm2(13),レジ
スタm3(12)とを有し、部分剰余の最下位桁をレジ
スタm3(12)へ読み出す初期化手段と、減算器
(7)の被減算側への入力の上位桁を部分剰余記憶手段
R(300)から、下位桁をレジスタm3(12)か
ら、前々回の桁上がりを第2の記憶手段cr1(8)か
ら読出し、減算器(7)からの出力の上位桁をレジスタ
m3(12)へ、下位桁をレジスタm2(13)へ、桁
上がり出力を第2の記憶手段cr1(8)へ格納する除
算手段(100)と、除算手段(100)を実行すると
同時に、加算器(10)への入力をレジスタm2(1
3)、レジスタm1(14)から、桁上がり入力を第1
の記憶手段cr2(11)より読み込み、加算器(1
0)の出力の上位桁をレジスタm1(14)へ格納し、
下位桁を部分剰余記憶手段R(300)へ格納し、加算
器(10)からの桁上がり出力を第1の記憶手段cr2
(11)格納する乗算手段(200)とを備える。
00)として、第3及び第4の2つの記憶手段R0
(4),R1(5)と、第3及び第4の記憶手段
(4),(5)への書込み及び読み出し状態を記憶する
状態記憶手段rf(1)と、第3及び第4の記憶手段
(4),(5)への入出力の切替回路(400)と、状
態記憶手段rf(1)の値によって、第3及び第4の記
憶手段R0,R1(4),(5)への切替回路(40
0)を切り替えることにより、部分剰余を第3の記憶手
段R0(4)から読み出しを行うとき、第4の記憶手段
R1(5)へ書込みを行う、または、第4の記憶手段R
1(5)から読み出しを行うとき、第3の記憶手段R0
(4)へ書込みを行うように制御し、部分剰余の読み出
し、書込みを同時に実行する制御手段(3)を含む。
余記憶手段R0,R1で構成し、制御状態を記憶する状
態記憶手段rfと制御回路により、R0,R1を交互に
読出側、書込み側と切り替える構成とすることで、読み
出し、書込みが同一の記憶手段へ競合することを回避す
ることが可能となり、部分剰余記憶手段への書込み、読
み出しを同一クロック時に実行することができる。
3を用いて、減算器への入力の上位桁を部分剰余記憶領
域とレジスタm3から読み込み、減算器からの出力の上
位桁をレジスタm3へ、下位桁をレジスタm2へ格納
し、加算器への入力をレジスタm2,レジスタm1より
読み込み、加算器の出力を上位桁をレジスタm1に格納
し、桁上がりの出力をレジスタcr1、cr2へ格納し
て、次々、下位の演算への桁上がりを入力する構成によ
り、部分剰余記憶手段R0,R1への書込み、読み出し
を常に減算器の上位桁への読み出しと加算器の出力の下
位桁の書込みの1桁に限定することができる。従って、
乗算器と減算器を同時に動作させることができる。
る。
構成を示す。
算器9、加算器10、減算器及び1度に1桁の整数を記
憶する読出・書込みが同時に(同一クロック内に)可能
なレジスタm1,m2,m3とn+1桁の整数を記憶
し、一度に1桁の読出し、または、書込みが可能な部分
剰余記憶部R0,R1、n桁の整数を記憶する記憶部
A,B,Cと、1桁の部分商を計算する部分商q計算部
25、部分商q計算部25で求められた商qを記憶する
部分商記憶部26と、部分剰余記憶部R0,R1への書
込み、読出状態を記憶する状態記憶部rf1と、0≦
i,j≦nなる整数i及びjを格納するカウンタ31、
32と、セレクタ21、22、23、24、レジスタc
r1,cr2、演算器及び記憶部への入出力を制御する
制御回路3から構成される。
A,B,Cへ格納し、A,B,C,R0,R1のi+1
桁目をそれぞれA[i]、B[i]、C[i]、R0
[i]、R1[i]と表し、1桁の整数t,sについ
て、t‖sをtを上位、sを下位とする2桁の整数を表
す記号とし、また、i<0、n<iなるiに対しては、
A[i]、B[i]、C[i]、R0[i]、R1
[i]は0であるとする。さらに、i<0、n<iなる
iに対しては、R0[i]、R1[i]に対する書込み
を行わないものとする。図3は、本発明の一実施例の図
2におけるt‖sを説明するための図である。図3に示
す(a),(b)は、図2中のa,bに対応する。
る。
記憶部R0,R1を0に、カウンタ32のjの値をn−
1に初期化する。(rf=0,R0=0,R1=0,j
=n−1) (2) 次に、カウンタ31の値i,レジスタm1,m
2の値を0に初期化する(i=0,m1=0,m2=
0)。
スタm3へ部分剰余記憶部4の値R0[0]を格納し、
状態記憶部rf1の値が1のとき(rf1=1)、レジ
スタm3へR1[0]を格納する。
り、例えば、状態記憶部rf1の値が0のとき(rf1
=0)、 R0[n]‖R0[n−1]/C[n−1] によって、あるいは、状態記憶部rf1が1のとき(r
f=1)、 R1[n]‖R1[n−1])/C[n−1] によって求める(部分商qの算出方法については、多数
提案されており、例えば、文献「準数値算法/算術演
算」中川圭佑訳、サインエンス社、88頁参照)。
記憶部Cの値C[i]と部分商qを乗算器1に入力し、
乗算器1の出力C[i]×qを減算器7へ入力する。
余記憶部4のR0[i+1]を読出し、R0[i+1]
‖m3を減算器7に入力して、 R0[i+1]‖m3−C[i]×q を求める。または、状態記憶部rf1が1の時、部分剰
余記憶部5のR1[i+1]を読出し、R1[i+1]
‖m3を減算器7へ入力して R1[i+1]‖m3−C[i]×q を得、減算器7の出力の上位桁をレジスタm3へ、下位
桁をレジスタm2へ格納する。
[i−1]とB[j]を第2の乗算器9へ入力し、第2
の乗算器9の出力A[i−1]×B[j]を加算器10
に入力し、m2‖m1を加算器10に入力して出力 m2‖m1+A[i−1]×B[j] を得、加算器10の出力の上位桁をレジスタm1へ格納
する。
下位桁を部分剰余記憶部5のR1[i−1]へ格納し、
状態記憶部rf1が1のとき、下位桁を部分剰余記憶部
4のR0[i−1]へ格納する。カウンタ31の値iが
nでないとき(i≠n)、iに1を加えて(i=i+
1)、上記の第1の乗算器6、第2の乗算器9における
演算を繰り返す。
値が0ならば、レジスタm1の値を部分剰余記憶部5の
R1[n]へ格納して、状態記憶部rf1へ1を格納す
る。
レジスタm1の値をR0[n]へ格納して状態記憶部r
f1へ0を格納する。
き、jから1を減じて上記演算を繰り返す。
き、状態記憶部rf1の値が0ならば(rf=0)、R
0[k](1≦k≦n)を剰余とする。一方、状態記憶
部rf1の値が1ならば(rf=1)、R1[k](1
≦k≦n)を剰余とする。
数、32桁)とした場合の動作を説明する。
0のときは、部分剰余記憶部R0からの出力を、状態記
憶部rf1の値が1のとき、部分剰余記憶部R1からの
出力を装置外部または、減算器7へ接続する。同様にセ
レクタ22は、加算器10の出力を記憶部rf1の値が
0の時、部分剰余記憶部R1へ接続し、状態記憶部rf
1の値が1のとき、部分剰余記憶部R0に接続する。
動作を示すフローチャートである。
は、状態記憶部rf1の値が1のとき、部分剰余記憶部
R1を指し、状態記憶部rf1の値が0のとき、部分剰
余記憶部R0を指すものとする。また、
分剰余記憶部R0を指し、状態記憶部rf1の値が0の
とき、部分剰余記憶部R1を指すものとする。即ち、セ
レクタ21、22による部分剰余記憶部R0,R1の切
替は、このRrf及び、
憶部への格納を表す記号であり、“co1,co2”
は、それぞれ、減算器7、加算器10からの桁上がり出
力を表す。
数a,b,cが外部より入力され、それぞれ記憶部A,
B,Cに保持され、部分剰余記憶部R0,R1、記憶部
rf1のそれぞれの値を0(R0=0,R1=0,RF
1=0)に、カウンタj32を31に初期化する(j=
31)。
1、レジスタm1、m2、cr1,cr2の各値を0と
する(i=0,m1=0,m2=0,cr1=0,cr
2=0)。
部分商qを求め、部分商格納部26にqを格納する。
タ21からの入力を選択し、レジスタm3へ部分剰余記
憶部R0の値R0[0]または、部分剰余記憶部5の値
R1[0]を格納する。
値C[i]と部分商qを乗算器6へ入力し、乗算器6の
出力C[i]×qと、レジスタcr1の上位桁及び状態
記憶部rf1とセレクタ21、22によって選択される
部分剰余記憶部4の値R0[i+1]または、部分剰余
記憶部5の値R1[i+1]を読み出し、レジスタm3
とともに、減算器7に入力する。また、レジスタcr1
の下位桁を上位桁にシフトし、減算器7の桁上がり出力
をレジスタcr1の下位桁へ格納し、減算結果の上位桁
をレジスタm3へ、下位桁をレジスタm2へ格納し、ス
テップ207に移行する。
値A[i−1]と記憶部Bの値B[j]を乗算器9に入
力し、乗算器9の出力A[i−1]×B[j]と、レジ
スタcr2の上位桁及びm2‖m1を加算器10へ入力
して、加算器10からの出力 m2‖m1+A[i−1]×B[j]+cr2[1] を得、レジスタcr2の下位桁を上位桁へシフトし、加
算器10の桁上がり出力をレジスタcr2の下位桁に格
納し、加算結果の上位桁をレジスタm1へ格納する。セ
レクタ24を制御し、下位桁を状態記憶部rf1とセレ
クタ22によって選択される部分剰余記憶部4のR0
[i−1]または部分剰余記憶部5のR1[i−1]に
格納する。
をカウンタ31の値がi=32となるまで繰り返す。
ンクリメントする。
1の値がi=32になったら、セレクタ24を切り替え
て、レジスタm1の値をセレクタ22に出力し、部分剰
余記憶部R1[32]または、部分剰余記憶部R0[3
2]に格納する。この手順が終了したら、部分剰余記憶
部R0の書込み側と読み出し側を切り替えるため、状態
記憶部rf1を反転する。
がj≧0であれば、ステップ211に移行し、j<0で
あればステップ212に移行する。
クリメントする。
余記憶部R0の値R0[k]または、部分剰余記憶部R
1の値R1[k](1≦k≦32)を剰余として出力す
る。
るとこなく、r及びnを1以上の任意の値に設定した場
合にも成立する。
で、また、多数桁への同時書込み、或いは、読み出しが
不可能な記憶手段を部分剰余記憶手段として用いても乗
算ステップと除算ステップを同時に実行することが可能
である。
トな記憶手段を用いて後続な剰余乗算器を実現すること
ができる。例えば、前述の第2の従来の方法では、毎回
読み出し、書込みの待ちが発生したが、本発明を適用す
ることにより、約2倍の演算速度が得られる。また、前
述の第1の従来の方法では、同時読み書きが可能な記憶
手段としてレジスタを用いたが、本発明を適用すること
により、同時書込みな不可能な記憶手段であるRAMを
用いても、RAMはレジスタの数分の1程度のゲート数
であるため、従来に比べて部分剰余記憶手段のコストを
削減することが可能となる。
る。
するための図である。
ローチャートである。
ートである。
Claims (2)
- 【請求項1】 r進数で、n桁の整数a,b,cを入力
とし、加算器、減算器と部分剰余を記憶する部分剰余記
憶手段Rを備え、a×b mod cの剰余乗算を行う剰余
乗算器において、 該加算器からの桁上がり出力を2回分保持する第1の記
憶手段cr2と、該減算器からの桁上がり出力を2回分
保持する第2の記憶手段cr1と、該加算器、及び該減
算器からの出力を記憶するレジスタm1,レジスタm
2,レジスタm3とを有し、 部分剰余の最下位桁を該レジスタm3へ読み出す初期化
手段と、 該減算器の被減算側への入力の上位桁を該部分剰余記憶
手段Rから、下位桁を該レジスタm3から、前々回の桁
上がりを第2の記憶手段cr1から読出し、該減算器か
らの出力の上位桁をレジスタm3へ、下位桁をレジスタ
m2へ桁上がり出力を第2の記憶手段cr1に格納する
除算手段と、 該除算手段を実行すると同時に、該加算器への入力をレ
ジスタm2、レジスタm1から、桁上がり入力を該第1
の記憶手段cr2より読み込み、該加算器の出力の上位
桁をレジスタm1へ格納し、下位桁を該部分剰余記憶手
段Rへ格納し、該加算器からの桁上がり出力を該第1の
記憶手段cr2へ格納する乗算手段とを備えることを特
徴とする剰余乗算器。 - 【請求項2】 前記部分剰余記憶手段Rとして、第3及
び第4の2つの部分剰余記憶手段R0,R1と、 該第3及び第4の部分剰余記憶手段への書込み及び読み
出し状態を記憶する状態記憶手段rfと、 該第3及び第4の記憶手段への入出力の切替回路と、 該状態記憶手段rfの値によって、該第3及び第4の部
分剰余記憶手段R0,R1への該切替回路を切替え、部
分剰余を該第3の部分剰余記憶手段R0から読み出しを
行うとき、該第4の部分剰余記憶手段R1へ書込みを行
う、または、該第4の部分剰余記憶手段R1から読み出
しを行うとき、該第3の部分剰余記憶手段R0へ書込み
を行うように制御し、該部分剰余の読み出し、書込みを
同時に実行する制御手段を含む請求項1記載の剰余乗算
器。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP06096708A JP3099255B2 (ja) | 1994-05-10 | 1994-05-10 | 剰余乗算器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP06096708A JP3099255B2 (ja) | 1994-05-10 | 1994-05-10 | 剰余乗算器 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH07306774A JPH07306774A (ja) | 1995-11-21 |
JP3099255B2 true JP3099255B2 (ja) | 2000-10-16 |
Family
ID=14172256
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP06096708A Expired - Lifetime JP3099255B2 (ja) | 1994-05-10 | 1994-05-10 | 剰余乗算器 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3099255B2 (ja) |
-
1994
- 1994-05-10 JP JP06096708A patent/JP3099255B2/ja not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
JPH07306774A (ja) | 1995-11-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5866128B2 (ja) | 算術プロセッサ | |
US5764554A (en) | Method for the implementation of modular reduction according to the Montgomery method | |
KR101202445B1 (ko) | 프로세서 | |
JPH09274560A (ja) | べき乗剰余演算回路及びべき乗剰余演算システム及びべき乗剰余演算のための演算方法 | |
JPS6347874A (ja) | 算術演算装置 | |
US6009450A (en) | Finite field inverse circuit | |
JPH1021057A (ja) | データ処理装置及びマイクロコンピュータ | |
JPH10254681A (ja) | 自乗を計算するための算術回路 | |
US6341299B1 (en) | Modular arithmetic coprocessor enabling the performance of non-modular operations at high speed | |
US6424987B1 (en) | Method for the implementation of a specific modular multiplication operation relating to the montgomery method | |
JP3099255B2 (ja) | 剰余乗算器 | |
US7296049B2 (en) | Fast multiplication circuits | |
JP3660075B2 (ja) | 除算装置 | |
US6766346B2 (en) | System and method for computing a square of a number | |
JP2737933B2 (ja) | 除算装置 | |
US6275837B1 (en) | Method for the implementation of an elementary modular operation according to the Montgomery method | |
JP3129526B2 (ja) | 整数上の乗算回路 | |
JP2705162B2 (ja) | 演算処理装置 | |
JP4341889B2 (ja) | 楕円積和演算計算方法、楕円積和演算計算装置、プログラム及び記録媒体 | |
JP2004226516A (ja) | べき乗剰余演算方法及びそのプログラム | |
JPH1049347A (ja) | 乗算器 | |
JP3074910B2 (ja) | 除算装置 | |
CN117762492A (zh) | 数据处理方法、装置、计算机设备及可读存储介质 | |
JP2002236581A (ja) | 演算回路、演算方法、及びプログラム記録媒体 | |
JPH01180586A (ja) | 反復剰余計算方式 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
FPAY | Renewal fee payment (prs date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20070818 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (prs date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20080818 Year of fee payment: 8 |
|
FPAY | Renewal fee payment (prs date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20080818 Year of fee payment: 8 |
|
FPAY | Renewal fee payment (prs date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090818 Year of fee payment: 9 |
|
FPAY | Renewal fee payment (prs date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090818 Year of fee payment: 9 |
|
FPAY | Renewal fee payment (prs date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100818 Year of fee payment: 10 |
|
FPAY | Renewal fee payment (prs date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100818 Year of fee payment: 10 |
|
FPAY | Renewal fee payment (prs date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110818 Year of fee payment: 11 |
|
FPAY | Renewal fee payment (prs date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120818 Year of fee payment: 12 |
|
FPAY | Renewal fee payment (prs date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130818 Year of fee payment: 13 |
|
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 |