JP2553548B2 - Multiplicative residue computing device - Google Patents
Multiplicative residue computing deviceInfo
- Publication number
- JP2553548B2 JP2553548B2 JP62074693A JP7469387A JP2553548B2 JP 2553548 B2 JP2553548 B2 JP 2553548B2 JP 62074693 A JP62074693 A JP 62074693A JP 7469387 A JP7469387 A JP 7469387A JP 2553548 B2 JP2553548 B2 JP 2553548B2
- Authority
- JP
- Japan
- Prior art keywords
- register
- value
- unit
- arithmetic 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 - Fee Related
Links
Landscapes
- Error Detection And Correction (AREA)
- Detection And Correction Of Errors (AREA)
Description
【発明の詳細な説明】 産業上の利用分野 本発明は、2正数の積をある正数で割った剰余を計算
する乗算剰余演算装置に関するものである。BACKGROUND OF THE INVENTION 1. Field of the Invention The present invention relates to a multiplication remainder calculation device for calculating a remainder obtained by dividing a product of two positive numbers by a certain positive number.
従来の技術 符号理論や暗号理論の分野において、A,B,Nを正数と
するとき積A・BをNで除し、その剰余を求める演算
(以下この演算を乗算剰余演算と称し、演算結果の値を
A・B modNと表わす)は基本演算の1つである。特
に、最近話題になっている公開鍵暗号方式、たとえばRS
A暗号方式に用いられるべき乗剰余の演算はこの乗算剰
余演算を繰り返しである。従って、暗号の安全確保のた
めの512ビット程度の長いデータ値に対しその乗算剰余
値を速く求めることが近年特に要望されている。ところ
で、従来乗算剰余値を求めるのには、まず積A・Bを計
算した後、これを正数Nで除して剰余を求めていたた
め、512ビット程度の整数の乗算剰余演算には1024ビッ
ト程度のレジスタと長い処理時間がかかっていた。そこ
で、乗算と除算を別々に行なわずに一体として実行する
方法が提案されている。つまり、乗算A・Bは加算の繰
り返しであるがその加算のたびに除数Nとの比較を行な
って加算結果がNより大きかったらNを減ずる操作を行
なう方法である。これをC言語のプログラムで表わすと
次のようになる。(A,B,N共に512ビットの場合を例に上
げている) for(S=i=0;i〈512;i++) { S=S+A*bi; …(1) if(S〉=N)S=S−N; …(2) A=2*A; …(3) if(A〉=N)A=A−N; …(4) } 但し、B=b511*2511+b510*2510+……+b1*2+
b0(bi=0または1)とする。2. Description of the Related Art In the field of code theory and cryptography, when A, B, and N are positive numbers, the product A · B is divided by N and the remainder is calculated (hereinafter, this calculation is referred to as a multiplication remainder calculation. The resulting value is referred to as A · B modN) is one of the basic operations. Especially, public key cryptosystems such as RS
The modular exponentiation operation used in the A cryptosystem is a repetition of this modular exponentiation operation. Therefore, in recent years, it has been particularly desired to quickly obtain the multiplication residue value of a long data value of about 512 bits for ensuring the security of encryption. By the way, conventionally, in order to obtain the multiplication remainder value, first, the products A and B are calculated, and then the remainder is obtained by dividing this by a positive number N. It took a lot of registers and a long processing time. Therefore, a method has been proposed in which the multiplication and the division are performed separately instead of separately. In other words, the multiplication A and B are repeated additions, but each addition is compared with the divisor N, and if the addition result is larger than N, N is subtracted. This is expressed as a C language program as follows. (The case where A, B, N are all 512 bits is taken as an example) for (S = i = 0; i <512; i ++) {S = S + A * bi; ... (1) if (S> = N) S = S−N; (2) A = 2 * A; (3) if (A> = N) A = A−N; (4)} where B = b 511 * 2 511 + b 510 * 2 510 + …… + b 1 * 2 +
Let b 0 (b i = 0 or 1).
第4図はこの演算を実現する乗算剰余演算装置の構成
図を示している。FIG. 4 is a block diagram of a modular multiplication calculation device that realizes this calculation.
101、102はそれぞれ値S、Aを格納するレジスタ、10
3は値Bを初期値とし、クロックが与えられると右に1
ビットシフトするシフトレジスタ、104はシフトレジス
タ103の最下位ビットbiを用いて(1)の演算を行なう
加算器、105は(2)の演算S=S−Nを行なう加算
器、106は105の演算の結果が正ならば105の演算結果S
−Nを、負ならば104の演算結果Sを選択する選択回
路、107は前記選択回路の出力を格納する出力レジスタ
である。108は(3)のシフトを行なう1ビット左シフ
タ、109は(4)の演算A=A−Nを行なう加算器、110
は109の演算の結果が正ならば109の演算結果A−Nを、
負ならば108のシフタの出力値Aを選択する選択回路、1
11は前記選択回路110の出力を格納する出力レジスタで
ある。101 and 102 are registers for storing the values S and A, respectively, and 10
3 has the value B as the initial value, and is 1 to the right when the clock is given.
A shift register for bit shifting, 104 is an adder for performing the operation (1) using the least significant bit bi of the shift register 103, 105 is an adder for performing the operation S = SN of (2), and 106 is for 105 If the result of the operation is positive, the operation result S of 105
If -N is negative, a selection circuit for selecting the operation result S of 104, and 107 is an output register for storing the output of the selection circuit. 108 is a 1-bit left shifter for shifting (3), 109 is an adder for performing the operation A = AN of (4), 110
If the calculation result of 109 is positive, the calculation result A-N of 109 is
If negative, a selection circuit that selects the output value A of the shifter 108, 1
Reference numeral 11 is an output register for storing the output of the selection circuit 110.
以上のように構成された従来の乗算剰余演算装置にお
いて、図中点線112で囲った部分は前記の(1)と
(2)の演算を行ない、点線113で囲った部分は前記の
(3)と(4)の演算を行なう。点線112と113は並行し
て処理を行ない、各々512回繰り返す。その結果、出力
レジスタ107にはA・B modNが格納されている。In the conventional modular multiplication unit configured as described above, the portion surrounded by the dotted line 112 in the figure performs the operations (1) and (2), and the portion surrounded by the dotted line 113 in the figure (3). And (4) are calculated. Dotted lines 112 and 113 are processed in parallel and repeated 512 times each. As a result, the output register 107 stores A · B modN.
発明が解決しようとする問題点 しかしながら上記のような構成では,点線112の処理
内で加算器104と105をとおるパスがクリティカルパスと
なるため、512ビット幅の加算にかかる時間をΔとする
と、1回のループ内の処理時間は2Δである。結果A・
B modNを求めるにはこれを512回繰り返すので(2
Δ)*512=1024Δの処理時間が必要である。しかしな
がら、この乗算剰余演算を繰り返してべき乗剰余の演算
を行ない、RSA暗号処理に用いると考えたときこの処理
時間では十分でない。実際、512ビット幅の加算器を4
ビット毎の桁上げ先見回路を用いて構成したときΔはお
よそ100nsecである。べきの数を512ビットであるべき乗
剰余演算には最大1024回の乗算剰余の演算が必要であ
り、このことよりRSA暗号の処理時間は約5kbpsとなる。Problems to be Solved by the Invention However, in the above configuration, since the path passing through the adders 104 and 105 in the processing of the dotted line 112 is a critical path, if the time required for addition of 512 bit width is Δ, The processing time in one loop is 2Δ. Result A
This is repeated 512 times to obtain B mod N (2
Δ) * 512 = 1024Δ processing time is required. However, this processing time is not sufficient when it is considered that the modular exponentiation operation is performed by repeating the modular exponentiation operation and used for the RSA cryptographic processing. In fact, 4 512-bit wide adders
When constructed using a carry look-ahead circuit for each bit, Δ is about 100 nsec. The modular exponentiation, which requires a power of 512 bits, requires a maximum of 1024 modular exponentiations, which results in an RSA cryptographic processing time of approximately 5 kbps.
(算出: A・B modNの処理時間=100nsec*1024 ME modNの処理時間=100nsec*1024*1024 1ビットあたりの処理時間=100nsec*1024*1024/512 1秒あたりの処理ビット数 =(100nsuc*1024*1024/512)-3=4.88kbps) 本発明はかかる点に鑑み,2次のブースを用いて被乗数
Bを2ビットずつ処理して、そのうえ1回のループ内で
の処理時間をΔとすることにより従来の4倍の処理速度
を持つ乗算剰余演算装置を提供することを目的とする。(Calculated: A · B modN processing time = 100nsec * 1024 M E modN processing time = 100nsec * 1024 * 1024 1 per bit processing time = 100nsec * 1024 * 1024/512 number of processing bits per second = (100Nsuc * 1024 * 1024/512) -3 = 4.88kbps) In view of this point, the present invention processes the multiplicand B by 2 bits by using a secondary booth, and further, the processing time in one loop is Δ. It is an object of the present invention to provide a multiplication residue computing device having a processing speed four times faster than the conventional one.
問題点を解決するための手段 本発明は、A,B,Nを正数とするとき、A・B modN
(‘A modN'の記述はAをNで除した時の剰余を表わ
すものとする)を計算する乗算剰余演算装置であって、
Aを格納する第1のレジスタと、第1のレジスタの内容
であるAを入力としてAP=2 A modNを計算する第1
の演算部と、第1の演算部の出力であるAPを格納し、そ
の内容を第1のレジスタに出力する第2のレジスタと、
第1の演算と並行に、Nの剰余類上でAPと同値な負の値
ANを第1のレジスタの内容であるAを用いて計算する第
2の演算部と、第2の演算部の出力であるANを格納する
第3のレジスタと、2つの入力端を持ち、それらの加算
をおこなう第3の演算部と、第3の演算部の出力値を格
納する第4のレジスタと、前記第4のレジスタの内容を
格納し、その内容を第3の演算部の一方の入力端に対し
て出力する第5のレジスタと、正数Bを格納するシフト
レジスタと、前記シフトレジスタの内容であるBの値を
入力とし、前記第3の演算部の制御信号を生成する2次
のブースのエンコーダ部と、前記第4のレジスタの符号
と、前記2次のブースのエンコーダ部の出力制御信号を
用いて前記第2のレジスタに格納されている値AP、また
は第3のレジスタに格納されている値ANの何れかを選択
して、前記第3の演算部の他方の入力端に供給する選択
部を備えたことを特徴とする乗算剰余演算装置である。Means for Solving the Problems In the present invention, when A, B, and N are positive numbers, A · B modN
A multiplication remainder arithmetic device for calculating (a description of'A mod N'represents a remainder when A is divided by N),
A first register for storing A and a first for calculating AP = 2 A modN with A, which is the contents of the first register, as input
And a second register that stores the output of the first arithmetic unit, AP, and outputs the contents to the first register,
In parallel with the first operation, a negative value equivalent to AP on the coset of N
It has a second arithmetic unit that calculates AN using A, which is the content of the first register, a third register that stores AN, which is the output of the second arithmetic unit, and two input terminals. Is added to the third arithmetic unit, a fourth register for storing the output value of the third arithmetic unit, the contents of the fourth register are stored, and the contents are stored in one of the third arithmetic units. A fifth register that outputs to the input terminal, a shift register that stores a positive number B, and the value of B that is the contents of the shift register are input, and a control signal for the third computing unit is generated 2. A value AP stored in the second register by using the encoder section of the next booth, the code of the fourth register, and the output control signal of the encoder section of the secondary booth, or the third register Select any of the values AN stored in Is a modular multiplication apparatus characterized by the other input terminal of the part with a selection unit for supplying.
作用 本発明は前記した構成により、ブースのエンコーダを
用いて被乗数Bを2ビットずつ処理し、そのうえ1回の
ループ内では第1、第2、第3の演算部が完全に並行し
て動作することにより処理時間がΔとなる。従って、本
発明の乗算剰余演算装置は従来の4倍の処理速度を持
つ。With the above-described structure, the present invention processes the multiplicand B by 2 bits by using the Booth encoder, and the first, second and third arithmetic units operate in parallel in one loop. As a result, the processing time becomes Δ. Therefore, the multiplication residue computing device of the present invention has a processing speed four times that of the conventional one.
実施例 第1図は本発明の一実施例における乗算剰余演算装置
の構成図を示すものである。この実施例では、A、B、
N共に符号無しの512ビットの場合を説明する。Embodiment 1 FIG. 1 is a block diagram of a modular multiplication calculation apparatus according to an embodiment of the present invention. In this example, A, B,
A case in which N is 512 bits without a sign will be described.
1は513ビットのAレジスタ、2はAレジスタの値を
2ビット左にシフトするシフタ、3は15ワード(1ワー
ドは512ビット)のメモリである。なお、メモリの内容
についてはその動作の説明のなかで説明する。4は513
ビット幅の加算器、5は‘−8N'の値を格納しているレ
ジスタ、6は516ビット幅の加算器である。7、8はそ
れぞれ加算器4、6の出力と乗数Aとのいずれかを選択
する選択回路、9、10は前記選択回路7、8の選択した
値を格納するAPレジスタとANレジスタである。11は被乗
数Bを格納し、クロックが与えられると2ビット右にシ
フトするシフトレジスタ、12は前記シフトレジスタ11の
下位3ビット(下位からbi,bi+1,bi+2とあらわす)
を用いて、制御線S0,S1,S2を生成するブースのエンコー
ダである。13は前記APレジスタ、ANレジスタに接続して
そのいずれかを選択する選択回路、14は前記ブースのエ
ンコーダ12の出力制御線S0が‘1'のときに、前記選択回
路13の出力を1ビット左シフトする1ビット左シフタ、
15は前記ブースのエンコーダの出力制御線S1が‘1'のと
きに前記1ビットシフタ14の出力の1の補数をとるEOR
ゲート、16は前記ブースのエンコーダ12の出力制御線S1
を桁上げ信号とし、EORゲートの出力と入力レジスタ17
(Iレジスタ)の値を加算する加算器、18は前記ブース
のエンコーダ12の出力制御信号S2が‘1'のときに前記加
算器の出力を格納するSレジスタであり、前記Iレジス
タ17に接続している。19はSレジスタの最上位ビットと
前記ブースのエンコーダ12の出力制御信号S1の排他的論
理和を求め、選択回路13を制御するゲートである。Reference numeral 1 is a 513-bit A register, 2 is a shifter for shifting the value of the A register to the left by 2 bits, and 3 is a memory of 15 words (1 word is 512 bits). The contents of the memory will be described in the explanation of the operation. 4 is 513
A bit-width adder, 5 is a register storing a value of "-8N", and 6 is an 516-bit width adder. Reference numerals 7 and 8 are selection circuits for selecting either the outputs of the adders 4 and 6 and the multiplier A, and reference numerals 9 and 10 are AP registers and AN registers for storing the values selected by the selection circuits 7 and 8. 11 is a shift register which stores the multiplicand B and shifts to the right by 2 bits when a clock is applied, 12 is the lower 3 bits of the shift register 11 (represented by lower, bi, bi + 1, bi + 2)
Is a booth encoder that generates control lines S0, S1, S2 using. 13 is a selection circuit that connects to the AP register or AN register to select one of them; 14 is one bit of the output of the selection circuit 13 when the output control line S0 of the booth encoder 12 is "1". 1-bit left shifter to shift left,
EOR 15 is a complement of the output of the 1-bit shifter 14 when the output control line S1 of the Booth encoder is "1".
The gate, 16 is the output control line S1 of the booth encoder 12
Is used as a carry signal, and the output of the EOR gate and the input register 17
An adder for adding the value of (I register), 18 is an S register for storing the output of the adder when the output control signal S2 of the encoder 12 of the Booth is '1', and is connected to the I register 17. are doing. Reference numeral 19 is a gate for controlling the selection circuit 13 by obtaining the exclusive OR of the most significant bit of the S register and the output control signal S1 of the booth encoder 12.
以上のように構成された本実施例の乗算剰余演算装置
について,以下その動作を説明する。The operation of the modular multiplication calculation apparatus of the present embodiment configured as described above will be described below.
まず、この実施例の動作を説明する前に2次のブース
のエンコーダを用いた乗算剰余演算について説明する。
2次のブースのエンコーダについては、たとえば日経エ
レクロニクス(1978.5.29)の解説記事「LSI化が進む並
列演算方式による乗算器の回路方式を見る」などに詳し
く示される。結果だけ紹介すると、次の操作によってA
・B(A,Bともに512ビットとする)を求める方法であ
る。C言語風に表現する。First, before describing the operation of this embodiment, a modular multiplication operation using a secondary Booth encoder will be described.
The secondary booth encoder is described in detail, for example, in the commentary article "See the circuit method of the multiplier by the parallel arithmetic method which is becoming more and more LSI" by Nikkei Electronics (1978.5.29). If you introduce only the result,
・ This is a method of obtaining B (512 bits for both A and B). Express in C language style.
for(i=S=0;i〈512;i++2) ・・・(11) { S=S+(bi+bi+1−2*bi+2)*A; ・・・(12) A=4*A ・・・(13) } 但し、B=b511*2511+b510*2510+……+b1*2+
b0(bi=0または1)とする。for (i = S = 0; i <512; i ++ 2) (11) {S = S + (b i + b i + 1 -2 * b i + 2 ) * A; (12) A = 4 * A ・ ・ ・ (13)} where B = b 511 * 2 511 + b 510 * 2 510 + …… + b 1 * 2 +
Let b 0 (b i = 0 or 1).
ブースのエンコーダを用いる方法は、被乗数Bを下位
から重複して3ビットずつ処理する((b0,b1,b2)、
(b2,b3,b4)、(b4,b5,b6)…と処理を行なっていくと
言う意味)ため、(12)、(13)の演算を256回繰り返
して結果Sを出力する。被乗数Bの各ビットによる(1
2)式の処理を第2図に示す。In the method using the Booth encoder, the multiplicand B is overlapped from the lower order and processed three bits at a time ((b 0 , b 1 , b 2 ),
(B 2 , b 3 , b 4 ), (b 4 , b 5 , b 6 ) ... means that processing is performed. Therefore, the operations of (12) and (13) are repeated 256 times, and the result S Is output. Depending on each bit of the multiplicand B (1
The processing of equation 2) is shown in FIG.
このブースのエンコーダを用いて乗算剰余を求める場
合の操作を同じくC言語風に表現すると次のようにな
る。The operation for obtaining the modular multiplication using this Booth's encoder is also expressed in C language as follows.
for(i=S=0;i〈512;i++2) ・・・(14) { S=S+(bi-1+bi−2*bi+1)*A(mod N); ・・
(15) A=4*A(mod N); ・・(16) } 但し、B=b511*2511+b510*2510+……+b1*2+
b0(bi=0または1)とする。for (i = S = 0; i <512; i ++ 2) (14) {S = S + (b i-1 + b i -2 * b i + 1 ) * A (mod N);
(15) A = 4 * A (mod N); ・ (16)} However, B = b 511 * 2 511 + b 510 * 2 510 + ... + b 1 * 2 +
Let b 0 (b i = 0 or 1).
ところがこれでは、(15)式の累算を行なうたびにmo
dNの操作を行なう必要があり、1回のループでの処理時
間が長くかかる。However, in this case, mo
It is necessary to operate dN, and it takes a long processing time in one loop.
そこで次に、ループ内では補正する必要がない本発明
の方法を説明する。本発明の方式では上記(16)のA
(0<A以降これをAPと表わす)と同じ剰余類上の負の
値(ANと表わす)を用意しておき、そこまでの累算結果
の符号によりそのどちらかを選んでSに累算する。この
ことによりループ内でいちいちmodNの操作を行なうこと
なくSの値をある範囲内に制限することができる。C言
語風に表現すると次のようになる。Therefore, the method of the present invention which does not need to be corrected in the loop will be described next. In the system of the present invention, the above (16) A
Prepare a negative value (expressed as AN) on the same coset as 0 (A <A and subsequent values will be expressed as AP), select one of them depending on the sign of the cumulative result up to that point, and accumulate in S To do. This makes it possible to limit the value of S to a certain range without operating modN one by one in the loop. When expressed in C language, it becomes as follows.
for(AP=AN=A,i=S=0;i〈512;i++2) ・・・(17) { A=AP; ・・・(18) if((bi+bi+1−2*bi+2)==0)S=S; ・・・(19) else if((sign(S)sign((bi+bi+1−2*bi+2) ==1) ・・・(20) S=S+bi+bi+1−2*bi+2)*AP; ・・・(21) else S=S+(bi+bi+1−2*bi+2)*AN; ・・・(22) AP=4*A(mod N); ・・・(23) AN=4*A−8*N; ・・・(24) } このプログラムは次の特徴を持っている。for (AP = AN = A, i = S = 0; i <512; i ++ 2) ... (17) {A = AP; ... (18) if ((b i + b i + 1 -2 * b i + 2 ) == 0) S = S; ・ ・ ・ (19) else if ((sign (S) sign ((b i + b i + 1 −2 * b i + 2 ) == 1) ・ ・ ・(20) S = S + b i + b i + 1 -2 * b i + 2 ) * AP; ... (21) else S = S + (b i + b i + 1 -2 * b i + 2 ) * AN;・ ・ ・ (22) AP = 4 * A (mod N); ・ ・ ・ (23) AN = 4 * A-8 * N; ・ ・ ・ (24)} This program has the following features.
C1.正の値APと負の値ANをAから並列に計算して用意す
る。(AP,ANを累算値と称する) APとANの関係は式で表わすと次のように表わせる。C1. A positive value AP and a negative value AN are calculated in parallel from A and prepared. (AP and AN are called accumulated values) The relation between AP and AN can be expressed by the following equation.
AP=AN modN AN<0<=AP C2.そこまでの累算の結果Sが‘正’でブースのエンコ
ーダが累算の演算を‘減算’と指定するとき ((bi,bi+1,bi+2)=(0,0,1)(1,0,1)(0,1,1):
第2図参照) 正の値APを累算値として選択する。ブースのエンコー
ダが累算の演算を‘加算’と指定するとき (bi,bi+1,bi+2)=(1,0,0)(0,1,0)(1,1,0):第
2図参照) 負の値ANを累算値として選択する。この選択を行なっ
て、‘正’のSに負の値を足しこむことにより累算の結
果がそれ以上増加しないようにする。AP = AN modN AN < 0 < = AP C2. When the result S of accumulation up to that point is “positive” and the Booth encoder specifies the calculation of accumulation as “subtraction” ((b i , b i + 1 , b i + 2 ) = (0,0,1) (1,0,1) (0,1,1):
Select the positive value AP as the accumulated value. When the Booth encoder specifies the accumulation operation as "addition" (b i , b i + 1 , b i + 2 ) = (1,0,0) (0,1,0) (1,1, 0): See Fig. 2) Select the negative value AN as the accumulated value. This choice is made so that adding a negative value to the'positive 'S prevents the accumulation result from further increasing.
C3.そこまでの累算の結果Sが‘負’でブースのエンコ
ーダが累算の演算を‘減算’と指定するとき ((bi,bi+1,bi+2)=(0,0,1)(1,0,1)(0,1,1):
第2図参照) 負の値ANを累算値として選択する。ブースのエンコー
ダが累算の演算を‘加算’と指定するとき (bi,bi+1,bi+2)=(1,0,0)(0,1,0)(1,1,0):第
2図参照) 正の値APを累算値として選択する。この選択を行なっ
て、‘負’のSに正の値を足しこむことにより累算の結
果がそれ以上減少しないようにする。C3. When the accumulation result S up to that point is'negative 'and the Booth encoder specifies the accumulation operation as'subtraction' ((b i , b i + 1 , b i + 2 ) = (0, 0,1) (1,0,1) (0,1,1):
Select the negative value AN as the accumulated value. When the Booth encoder specifies the accumulation operation as "addition" (b i , b i + 1 , b i + 2 ) = (1,0,0) (0,1,0) (1,1, 0): See Fig. 2) Select a positive value AP as the accumulated value. This choice is made so that adding a positive value to the'negative 'S does not reduce the result of the accumulation any further.
次に前記(17)から(24)の動作の実現を本実施例の
構成図(第1図)上で説明する。Next, realization of the operations (17) to (24) will be described with reference to the configuration diagram (FIG. 1) of this embodiment.
D1.(初期設定)選択回路7,8により乗数AをAPレジスタ
9とANレジスタ10にロードする。Bレジスタ11には被乗
数Bをロードし、Sレジスタはクリアする。なお、選択
回路7,8は初期設定のときのみに乗数Aを選択し、それ
以外のときは加算器4,6の結果を選択する。The multiplier A is loaded into the AP register 9 and the AN register 10 by the D1. (Initial setting) selection circuits 7 and 8. The multiplicand B is loaded into the B register 11 and the S register is cleared. The selection circuits 7 and 8 select the multiplier A only in the initial setting, and select the result of the adders 4 and 6 in other cases.
D2.・ブースのエンコーダ12は被乗数Bの下位3ビット
をデコードして制御信号S0,S1,S2を出力する。第2図に
並べて制御信号の生成を示す(第3図)。D2. Booth encoder 12 decodes the lower 3 bits of multiplicand B and outputs control signals S0, S1, S2. The generation of control signals is shown side by side in FIG. 2 (FIG. 3).
Bは制御信号を生成した後右に2ビットシフトする。 After generating the control signal, B shifts to the right by 2 bits.
・第3図から分かるとおり、S1は(20)の‘sigh(bi+
bi+1−2*bi+2)’を示している。よって、(20)式の
条件を判定しているゲート19の出力が‘1'のときに選択
回路13はAPレジスタ9の値を選択し、‘0'のときはANレ
ジスタ10の値を選択する。・ As can be seen from Fig. 3, S1 is (20) 'sigh (b i +
b i + 1 −2 * b i + 2 ) ′. Therefore, the selection circuit 13 selects the value of the AP register 9 when the output of the gate 19 which judges the condition of the expression (20) is "1", and the value of the AN register 10 when it is "0". To do.
・S0が‘1'のときは1ビットシフタ14を動作させて選択
回路13で選択した値(APまたはAN)を2倍する。また、
S1をEORゲート15と加算器16への桁上げに入力すること
によりS1が‘0'のときは加算を‘1'のときは減算を行
う。なお、(19)式で示した操作はS2の制御信号をSレ
ジスタの書き込み許可端子(ライトイネーブル:We)に
入力してSレジスタの更新を禁止して実現している。When S0 is '1', the 1-bit shifter 14 is operated to double the value (AP or AN) selected by the selection circuit 13. Also,
By inputting S1 to the carry to the EOR gate 15 and the adder 16, addition is performed when S1 is “0” and subtraction is performed when S1 is “1”. The operation represented by the equation (19) is realized by inputting the control signal of S2 to the write enable terminal (write enable: We) of the S register and prohibiting the update of the S register.
D3.(22)の操作は2ビット左シフタ2とメモリ3と加
算器4で実現する。2ビット左シフタの出力値(符号無
し515ビット)を 4*A=a514*2514+a513*2513+…+a1*2+a0(a
=0又は1) と表わす。このとき正数Nで除した剰余は次のようにな
る。The operation of D3. (22) is realized by the 2-bit left shifter 2, the memory 3 and the adder 4. Output value of 2-bit left shifter (515 bits without sign) 4 * A = a 514 * 2 514 + a 513 * 2 513 + ... + a 1 * 2 + a 0 (a
= 0 or 1). At this time, the remainder divided by the positive number N is as follows.
4*A modN=(a514*2514+a513*2513 +a512*2512+a511+2511mod N) ・・・(25) (a510*2510+a509*2509+……a0mod N) ・・・(26) ここで数Nを2511以上の値とすると、(26)式の値は
Nより小さい。(数Nをこのように制限することは本質
的なことではない。)(25)式の値を一度に得る一つの
方法は実施例に上げているようにメモリを用いる方法で
ある。メモリ内には(a514,a513,a512,a511)=(0,0,
0,1)から(1,1,1,1)の15パターンについて(25)式の
値を記憶している。メモリからの出力はすでにmodNの操
作が施されているので(25)式の値はNより小さい。従
って、(25)と(26)を加算器4で加算した結果APは2N
より小さい。(符号無し513ビット) D4.D3の操作と並行に(24)の処理を行う。D3で説明し
たようにA(=AP)は2Nより小さい正の値である。よっ
て、4*A−8Nは必ず負でありC1で示したANの条件を満
たしている。(符号付き516ビット) 以上D2からD4の操作にはそれぞれ512ビットほどの加
算の処理が1回ずつ含まれている。D2からD4の加算は加
算器16,4,6を用いて並行に行うことが出来るため1回の
ループ内での処理時間はΔである。D2からD4をそれぞれ
256回繰り返した結果Sレジスタ18に−16N〜4Nの範囲の
出力結果が格納されているので、ループを抜けた後、0
〜Nの範囲の値に補正すればよい。4 * A modN = (a 514 * 2 514 + a 513 * 2 513 + a 512 * 2 512 + a 511 +2 511 mod N) ... (25) (a 510 * 2 510 + a 509 * 2 509 + ... a 0 mod N) (26) If the number N is a value of 2 511 or more, the value of the equation (26) is smaller than N. (It is not essential to limit the number N in this way.) One method of obtaining the value of the equation (25) at a time is to use a memory as mentioned in the embodiment. In the memory, (a 514 , a 513 , a 512 , a 511 ) = (0,0,
The values of equation (25) are stored for 15 patterns from 0,1) to (1,1,1,1). Since the output from the memory has already undergone the modN operation, the value of equation (25) is smaller than N. Therefore, as a result of adding (25) and (26) by the adder 4, AP is 2N.
Less than. (Unsigned 513 bits) Perform (24) in parallel with D4.D3 operations. As explained in D3, A (= AP) is a positive value smaller than 2N. Therefore, 4 * A-8N is always negative and satisfies the AN condition indicated by C1. (Signed 516 bits) Each of the operations D2 to D4 includes one addition process of 512 bits each. Since the addition of D2 to D4 can be performed in parallel using the adders 16, 4, 6, the processing time in one loop is Δ. D2 to D4 respectively
As a result of repeating 256 times, since the output result in the range of -16N to 4N is stored in the S register 18, after exiting the loop, 0
It may be corrected to a value in the range of to N.
以上のように本実施例によれば,2次のブースを用いて
Bを2ビットずつ処理し、そのうえ1回のループ内では
3つの加算器を並行に用いて処理時間をΔとする。この
ことにより従来の4倍の処理速度を持つことができる。As described above, according to the present embodiment, B is processed by 2 bits by using the secondary booth, and in addition, three adders are used in parallel in one loop to set the processing time to Δ. This makes it possible to have a processing speed four times faster than the conventional one.
なお,この実施例において(23)の演算をメモリを用
いて行ったが、たとえば加算器を並行に並べてもよい
し、また、メモリの内容も剰余ではなしに、商を格納し
ていてもよい。Although the operation (23) is performed using the memory in this embodiment, for example, the adders may be arranged in parallel, and the contents of the memory may store the quotient instead of the remainder. .
発明の効果 従来では3つの加算器をもちながら、これを完全並列
に動作させることができず、1回のループ内では2Δの
処理時間がかかっていた。以上述べたように本発明によ
れば、累算値を正、負の二通り用意し、その何れかを累
算の結果の値がある範囲に入るように選択する。正の値
を用意する部分、負の値を用意する部分、累算の部分の
それぞれに含まれる各1個の加算器(合計3つの加算
器)を完全に並行に動作させて、1回のループ内の処理
時間を従来の1/2にする。そのうえ、2次のブースのエ
ンコーダを用いてループ数を1/2にする。従って本発明
は従来と同じ数の加算器を用いて従来の4倍の処理速度
を持つことができ,その実用的効果は大きい。EFFECTS OF THE INVENTION In the past, although three adders were used, they could not be operated in parallel, and a processing time of 2Δ was required in one loop. As described above, according to the present invention, two accumulated values, positive and negative, are prepared, and one of them is selected so that the value of the accumulated result falls within a certain range. One adder (a total of three adders) included in each of the positive value preparing part, the negative value preparing part, and the accumulating part is operated completely in parallel, and The processing time in the loop is halved from the conventional one. Moreover, the number of loops is halved using the secondary Booth encoder. Therefore, the present invention can have a processing speed four times faster than the conventional one by using the same number of adders as the conventional one, and its practical effect is great.
第1図は本発明における一実施例の乗算剰余演算装置の
構成図、第2図、第3図はブースのエンコーダの説明
図、第4図は従来の乗算剰余演算装置の構成図である。 1……Aレジスタ、2……2ビット左シフト、3……メ
モリ、4,6,16……加算器、5……−8Nレジスタ、7,8,13
……選択回路、9……APレジスタ、10……ANレジスタ、
11……Bシフトレジスタ、12……ブースのエンコーダ、
14……1ビット左シフタ、17……Iレジスタ、18……S
レジスタ。FIG. 1 is a block diagram of a multiplication residue computing device according to an embodiment of the present invention, FIGS. 2 and 3 are explanatory diagrams of a Booth encoder, and FIG. 4 is a block diagram of a conventional multiplication residue computing device. 1 ... A register, 2 ... 2-bit left shift, 3 ... memory, 4,6,16 ... adder, 5 ...- 8N register, 7,8,13
...... Selection circuit, 9 …… AP register, 10 …… AN register,
11 …… B shift register, 12 …… Booth encoder,
14 …… 1 bit left shifter, 17 …… I register, 18 …… S
register.
Claims (1)
(‘a modN'の記述はaをNで除した時の剰余を表わす
ものとする)を計算する乗算剰余演算装置であって、初
期設定でaを格納する第1のレジスタと、この第1のレ
ジスタの内容をAとするときAを入力としてAP=2 A mo
dNを計算する第1の演算部と、この第1の演算部の出力
であるAPを格納し、APを前記第1のレジスタに接続する
第2のレジスタと、前記第1のレジスタの内容であるA
を用いて、Nの剰余類上でAPと同値な負の値ANを、前記
第1の演算と並行に計算する第2の演算部と、この第2
の演算部の出力であるANを格納する第3のレジスタと、
2つの入力端を持ち、一方の入力端に他方の入力端の2
倍の値を加算または減算する、1倍の値を加算または減
算する、あるいは一方の入力端をそのまま出力する第3
の演算部と、この第3の演算部の出力値を格納する第4
のレジスタと、前記第4のレジスタの格納値を、前記第
3の演算部の一方の入力端に接続する第5のレジスタ
と、前記第2のレジスタに格納されている値APと前記第
3のレジスタに格納されている値ANの何れかを選択し
て、前記第3の演算部の他方の入力端に供給する選択部
と、初期設定で前記正数bを格納するシフトレジスタ
と、前記シフトレジスタの定まったビット位置の3ビッ
トを入力として制御信号を生成する2次ブースのエンコ
ーダ部を備え、前記2次ブースのエンコーダ部の出力で
ある制御信号は、前記第3の演算部の演算を制御し、ま
た、前記制御信号と前記第4のレジスタの符号を用いて
前記選択部を制御することを特徴とする乗算剰余演算装
置。1. When a, b and N are positive numbers, a · b modN
A multiplication residue arithmetic unit for calculating (a description of'a mod N'represents a remainder when a is divided by N), and a first register for storing a by default and a first register When setting the contents of the register of A to A, AP = 2 A mo
A first arithmetic unit that calculates dN, a second register that stores the output AP of the first arithmetic unit, and connects the AP to the first register, and the contents of the first register. There is A
And a second operation unit for calculating a negative value AN equivalent to AP on the coset of N in parallel with the first operation, and the second operation unit.
A third register for storing AN which is the output of the arithmetic unit of
It has two input terminals, and one input terminal has 2 of the other input terminals.
Third value that adds or subtracts double value, adds or subtracts single value, or outputs one input terminal as it is
And a fourth arithmetic unit for storing the output value of the third arithmetic unit.
No., the fifth register connecting the stored value of the fourth register to one input end of the third arithmetic unit, the value AP stored in the second register, and the third register. A selection unit for selecting one of the values AN stored in the register and supplying it to the other input end of the third calculation unit; a shift register for storing the positive number b by default; The encoder unit of the secondary booth that generates a control signal by inputting 3 bits at a fixed bit position of the shift register is provided, and the control signal output from the encoder unit of the secondary booth is calculated by the third arithmetic unit. And controlling the selection unit by using the control signal and the sign of the fourth register.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP62074693A JP2553548B2 (en) | 1987-03-27 | 1987-03-27 | Multiplicative residue computing device |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP62074693A JP2553548B2 (en) | 1987-03-27 | 1987-03-27 | Multiplicative residue computing device |
Publications (2)
Publication Number | Publication Date |
---|---|
JPS63240219A JPS63240219A (en) | 1988-10-05 |
JP2553548B2 true JP2553548B2 (en) | 1996-11-13 |
Family
ID=13554562
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP62074693A Expired - Fee Related JP2553548B2 (en) | 1987-03-27 | 1987-03-27 | Multiplicative residue computing device |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2553548B2 (en) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0365723A (en) * | 1989-08-03 | 1991-03-20 | Matsushita Electric Ind Co Ltd | Parallel multiplication circuit |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3980874A (en) * | 1975-05-09 | 1976-09-14 | Burroughs Corporation | Binary to modulo M translation |
JPS6034131A (en) * | 1983-08-04 | 1985-02-21 | Tokiwadou Seika Kk | Making method of "karinto" (fried dough cake) containing aloe |
JPS60205746A (en) * | 1984-03-30 | 1985-10-17 | Toshiba Corp | Array multiplier |
JPS63200233A (en) * | 1987-02-16 | 1988-08-18 | Fujitsu Ltd | High-speed parallel multiplication/division calculator |
-
1987
- 1987-03-27 JP JP62074693A patent/JP2553548B2/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JPS63240219A (en) | 1988-10-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7277540B1 (en) | Arithmetic method and apparatus and crypto processing apparatus for performing multiple types of cryptography | |
JP3784156B2 (en) | Modular multiplication method | |
US6920473B2 (en) | Method and apparatus for modular multiplying and calculating unit for modular multiplying | |
US5121429A (en) | Digital signal processing | |
US7120660B2 (en) | Method of and apparatus for modular multiplication | |
KR20040060445A (en) | Montgomery modular multiplier by 4 to 2 compressor and multiplication method thereof | |
JP2004258141A (en) | Arithmetic unit for multiple length arithmetic of montgomery multiplication residues | |
US7035889B1 (en) | Method and apparatus for montgomery multiplication | |
JP2553548B2 (en) | Multiplicative residue computing device | |
US7607165B2 (en) | Method and apparatus for multiplication and/or modular reduction processing | |
US20070050442A1 (en) | Method, apparatus, and program for modular arithmetic | |
JP2000207387A (en) | Arithmetic unit and cipher processor | |
KR100946256B1 (en) | Scalable Dual-Field Montgomery Multiplier On Dual Field Using Multi-Precision Carry Save Adder | |
KR100322740B1 (en) | Modular computing apparatus and method thereof | |
EP1465058A2 (en) | Method and apparatus for performing modular multiplication | |
KR100460764B1 (en) | Pipeline modulo operation device for realizing encryption hardware | |
JP2558687B2 (en) | Modular multiplication | |
JP3210420B2 (en) | Multiplication circuit over integers | |
JP2004226516A (en) | Power remainder computing method and program for the same | |
KR19990086179A (en) | Modular computing apparatus and method thereof | |
Shirase et al. | An architecture for elliptic curve cryptograph computation | |
JPH0368415B2 (en) | ||
JP2812365B2 (en) | Multiplication circuit | |
JP2002236581A (en) | Arithmetic circuit, arithmetic method, and program recording medium | |
JPH10333885A (en) | Multiplying circuit |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
LAPS | Cancellation because of no payment of annual fees |