JPH02199532A - 剰余乗算の方法および回路 - Google Patents

剰余乗算の方法および回路

Info

Publication number
JPH02199532A
JPH02199532A JP1017700A JP1770089A JPH02199532A JP H02199532 A JPH02199532 A JP H02199532A JP 1017700 A JP1017700 A JP 1017700A JP 1770089 A JP1770089 A JP 1770089A JP H02199532 A JPH02199532 A JP H02199532A
Authority
JP
Japan
Prior art keywords
register
variable
circuit
digits
new
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.)
Pending
Application number
JP1017700A
Other languages
English (en)
Inventor
Hikari Morita
光 森田
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.)
Nippon Telegraph and Telephone Corp
Original Assignee
Nippon Telegraph and Telephone 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 Nippon Telegraph and Telephone Corp filed Critical Nippon Telegraph and Telephone Corp
Priority to JP1017700A priority Critical patent/JPH02199532A/ja
Priority to US07/471,787 priority patent/US5073870A/en
Priority to CA002008774A priority patent/CA2008774C/en
Priority to DE69032811T priority patent/DE69032811T2/de
Priority to EP90101842A priority patent/EP0381161B1/en
Publication of JPH02199532A publication Critical patent/JPH02199532A/ja
Priority to US07/730,602 priority patent/US5144574A/en
Pending legal-status Critical Current

Links

Abstract

(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。

Description

【発明の詳細な説明】 [発明の目的] (産業上の利用分野) 本発明は、A×BmodNなる剰余乗算を高速に実行す
る方法および回路に関する。
(従来の技術) 剰余乗算は、暗号演算処理にとって有用なM”modN
なるべき剰余を組み立てることができ、暗号処理に利用
可能なものである。
従来の剰余乗算A・×BmodNは、一般に第11図に
示すように、AXBを計算した後、Nで除算し、その剰
余、すなわち余りをもって結果とする。
第11図では、2を基数とする乗算と2を基数とする除
算とを組み合わiている。従って、この剰余乗算の例で
はA、B、Nの2進数における桁数を偶数nとすると、
乗算用に最大n−1回の部分積Aの加算と、除算用に最
大n回の除数Nの加減算が必要となる。なお、第11図
は2進8桁の場′場合を示し、同図においてA10はA
または0であることを示す。
nが増大すると、この方法を汎用計算機上で実行する場
合、32ビツト等の単位で分割するため更に加減算の回
数が増大し、高速処理できなかった。
そこで、専用回路が必要となるが、加算器として、毎回
加算で桁上がり伝搬を完了させつつ実行する所謂リップ
ルキャリー加算器を選択すれば、著しく時間がかかる。
すなわち、1桁当りの加算時間をtcとすると、剰余乗
算番するのに、最大2n2 tc待時間必要とする。従
って、桁上がり伝搬を毎加算す1桁分だけにし、各桁並
列に加算する所謂キャリーセーブ加算器を選択する。そ
して、この加算途中では、桁上がりを保持するレジスタ
Rcarryおよび和を保持するレジスタRsumに分
けて保持する。
(発明が解決しようとする課題) 従来の方法を使用して、専用回路を実現する場合、nビ
ット幅のキャリーセーブ加算器とりップルキャリー加算
器とで構成すれば、約4ntc時間かかるが、べき乗剰
余の用途では、この剰余乗算を約2n回繰り返すので、
約8n2 tc待時間かり、扱う値の桁が大きい安全な
R3A暗号を実現する場合、著しく低速となるという問
題がある。
そこで、従来、乗算は部分積を並列に加算する並列加算
器により実現し、除算には剰余テーブルを参照した加算
を″繰り返すことで加算回数を減らす対策が取られてい
る(鳥居他によるrR8A高速並列乗除LSIの構成」
、信学総全第1388(1987年)、および用村他に
よるrR8A暗号方式における剰余計算の高速化」、信
学部門第14 (1987年)を参照)。
しかしなから、並列乗算機の対策は、nビット幅の加算
を単位とするた゛め、ハード量が膨大となる。そこで、
時系列処理を増加させてハード量を削減することになる
が、途中結果を回路から待避するなどデータの□出し入
れが必要となるため、低速処理となるばかりでなく、制
御が複雑となるという問題がある。−力、除算を実行す
るためめ剰余テーブルの対策は、テーブルのメモリ量を
大きくするばかりで゛なく、nビット幅の剰余データを
演算器に出し入れするので、速度紅よび回路量の点で効
率的でなく、制御も複雑であるという問題がある。従っ
て、これらの対策は速度、回路量回路設計の複雑さの点
で根本的な解決法ではなかった。
本発明は、上記に鑑みてなされたもので、その目的とす
るところは、速度性能に優れ、回路構成が簡単で設計が
容易な剰余乗算の方法および回路を提供することにある
r発明の構成] (課題を解決するための手段) 上記目的を達成するため、本発明の剰余乗算の方法は、
入力変数ASB、Nおよび作業変数Rに対応するレジス
タを有するレジスタブロックと、変数Nの正規化、制御
パラメータの生成および順序制御機能を有する制御ブロ
ックと、レジスタブロックに蓄積される変数A、N、R
の値を入力に加算する演算ブロックとを有する剰余乗算
装置において入力変数A、B、Nに対してA×Bmod
Nなる剰余乗算を行う剰余乗算方法であって、(イ)入
力変数Aを−N/2≦A<N/2の範囲に変形し、(ロ
)作業変数Rを0に初期化し、(ハ)変数ASB、Rか
ら整数Cを生成し、変数Bから変数すを生成し、変数R
SbAScNの値を加算し、この加算した和を新たに作
業変数Rとし、(ニ)変数Rを桁上げシフトし、変数N
の桁数に合せて、前記(ハ)の処理を変数Nの桁数を越
えるまで繰り返し実施し、(ホ)変数Rの値に応じて変
数Nを加算し、0≦RANの範囲にして剰余乗算結果と
することを要旨とする。
また、本発明の剰余乗算回路は、入力変数A1BSNを
入力ポートから受信し、各部にデータを分配する第1の
手段と、加減算、シフト等の演算を実行する第2の手段
と、全体を制御する第3の手段と、第2の手段から出力
ポート幅にあわせて必要な値を選択する第4の手段と、
第4の手段の出力から加算用桁上げ伝搬を実行し下位桁
から部′公的に結果を生成し出力ポートからデータを出
力する第5の手段とを有することを要旨とする。
(作用) 本発明の剰余乗算の方法では、従来のように乗算が終了
した後に除算を行うのでなく、乗算に使用される部分積
の加減算の間に除数Nの1倍または2倍の加減算を適宜
挾み込み、これにより計算している過程の剰余の絶対値
を一定の範囲におさめ、演篇対象を常にN程度に抑える
ことができ、データ待避処理の制御が不要であり、速度
性能の向上、回路規模の削減、設定の容易化を図ること
ができる。
また、本発明の剰余乗算回路では、n個分の繰り返し単
位のセルを単純に並べて回路を構成するため、設計が容
易であり、更に繰り返し処理においては逐次加減算結果
を観測しつつ次の処理を決めるBake rの方法と異
なり、2回の加減算を一括して処理できる点を利用し、
倍程度高速にできる。また、LSI等のように回路全体
を1つにまとめると、大量のデータ待避処理が不要なの
で、速度性能のみならず内部処理の秘匿性に優れた暗号
回路に応用できる特徴を有する回路となる。またセルの
′追加により拡張が容易に行える。
(実施例) 以下、図面を用いて本発明の詳細な説明する。
第1図は本発明の第1の実施例に関わる剰余乗算の方法
を実施する回路構成を示すブロック図であり、第2図が
8ビツトデータ長の場合について第1の実施例である高
速剰余乗算アルゴリズムの概念を示す説明図である。
第1図に示す剰余乗算回路は、入力変数A、 Bおよび
N1および作業変数Rに対応するレジスタを有するレジ
スタブロック1、変数Nの正規化、制御パラメータ生成
、順次制御機能を有する制御ブロック2およびレジスタ
ブロック1に蓄積された変数A、NおよびRの値を入力
に加算する演算ブロック3で構成されている。レジスタ
ブロック1は入力ポートから入力されるAxBg+od
Nを行うための入力変数A、BおよびNをそれぞれAレ
ジスタ11、Bレジスタ13およびNレジスタ15、お
よび作業変数Rを保持するNレジスタ17を有し、Nレ
ジスタ17は和および桁上がりをそれぞれ保持するRs
umレジスタ17sおよびRcarryレジスタ17c
から構成されている。制御ブロック2は、変数Nを正規
化するN正規化回路21、制御パラメータ生成回路23
およびシーケンス制御回路25から構成されている。ま
た、演算ブロック3は、A変形回路31、N変形回路3
3、N変形回路35、キャリーセーブ加算回路37およ
び加算器39から構成されている。
第1図に示す剰余乗算回路において、Aレジスタ11に
入力された入力変数Aは制御ブロック2の制御パラメー
タ生成回路23に入力されA>N/2の場合、A−Nを
新しいA するように変数A、N、Hの各A変形回路3
1、N変形回路33、N変形回路35の出力をそれぞれ
A、−N、Oとし、キャリーセーブ加算回路37で処理
した後で、桁上がり伝搬機能のある加算器39を介して
Aレジスタ11に再入力上、Aを0≦A<Nの範囲から
−N/2≦A<N/2の範囲に変形する。シーケンス制
御回路25において、作業変数Rを保持するRレジスタ
17を0にリセットする。それから、Aレジスタ11、
Bレジスタ13、Rレジスタ17の値を制御ブロック2
0制御パラメータ生成回路23に供給し、変数ASB、
Rから変数Cを決定するとともに、変数Bから変数すを
決定する。また、演算ブロック3のA変形回路31、N
変形回路33、N変形回路35の出力をそれぞれbA、
cNSRとして、キャリーセーブ加算回路37で加算し
、この加算した和をRレジスタ17に供給して作業変数
Rとする。シーケンス制御回路25において、変数Rを
桁上げシフトし、N桁数nに対応して上記処理を繰り返
し行う。Rレジスタ17のRの値を制御ブロック2の制
御パラメータ生成回路23に供給し、A変形回路31、
N変形回路33、N変形回路35の出力をそれぞれ0、
NまたはO,Rとし、キャリーセーブ加算回路37で加
算処理した後、加算器39により桁上がり伝搬させつつ
、下位の桁から順に出力ポート′から出力する。すなわ
ち、Rの値に応じてNを加算し、Rを0≦R<Hの範囲
に変形して剰余乗算結果として出力する。
上記実施例は、第2図かられかるように、乗算に使用さ
れる部分積の加減算の間に除数Nの1倍または2倍の加
減算を適宜挟み込み、これにより計算している過程の剰
余の絶対値を一定の範囲におさめ、演算対象を常にN程
度に押えることができるようになっている。従って、デ
ータの待避処理の制御が不要であり、速度性能の向上、
回路規模の削減、設計の容易化を図ることができる。
なお、本方法と同じく乗算用加算および除算用加減算を
逐次実行することを特徴とする第12図に示すB、ak
erの方法が提案されているが(参考文献: P、w、
Baker:“Fast ComputaIon o[
’ A*BModulo N”、EIectron、L
ett、、 2B−25,pp、794−795(19
87年)、速度性能が本方法よりも劣る。本方法とBa
ke rの方法との大きな違いは、被乗数Aを予め変形
するか否かの違いと、部分積の値を加算に先だって利用
して除算用の加減算量を調整することによる。このため
、Bakerの方法は乗算が基数2の加算に、除算は基
数4の加減算で実行するので、Nの2進数の桁数をnと
すると、n回の繰り返し演算が必要となるのに対して、
本方法は両演算とも基数4にできるため、繰り返しの回
数を約半分に削減でき、約2倍高速化することができる
次に、表1は本発明の第、2の実施例に係わる剰余乗算
の方法としてA×BmodNなる高速剰余乗算を行うア
ルゴリズムを示しているが、これはレジスタをベースと
する算法に応用している。なお、ここで使用されるレジ
スタの相互関係を第3図に示す。
表1.AxB  1lodN剰余乗算のアルゴリズムス
テップ1 (Hの正規化) NのMSBが1となるまで、シフト分だけNとAを左シ
フト。
ステップ2(初期処理) R−0とする N<2なら、A−A−N ステップ3(繰り返し処理) (k −n / 2 + 1から1まで逐次減算)c−
f c (4R+b (k) A。
b (k−1)、A) R−4R+b (k)A+cN ステップ4(終了処理) R<0なら、R−R+N ステップ5 (Nを元に戻す) A −RSum + RCarry シフト分だけNとAを右シフト、Aの値を結果とする。
注1.b  (k)−−2B  [2K]  +B  
c2に一1コ+ b [2k −2]、 但し、b  (0)−0、b  (n/2に+1)−B
  [nl  、 B  [0コ  = 0注2.fc
関数は後述する表3参照。
表1では、R−Rsum + Rearryと定義し、
最終加算以外はキャリーセーブ加算を意味する。すなわ
ち、例えば、R−R+bAはR80111■Rearr
)’ΦbAを新たにRsumに設定し、Rsua+ A
 Rcarry VRcarry A (bA) V 
(bA) ARsumを2倍し、薪たにRcarryに
設定する。ここで、■は排他的論理和を示す。但し、R
を求めるのに2つの加算を一括して求める場合、これよ
り複雑になる。また、Ns、As5RsはそれぞれN、
A。
Rの上位数桁を示す。fc関数として、後述する表3を
選択した場合はn−5桁目以上、また表4を選択した場
合はn−4桁以上の値を指す。また、Bの下から1桁の
B [i]のように表現する。
本実施例には、レジスタ長を固定したまま本方法の剰余
乗算ができるように正規化処理のステップ1を付加し、
第1図では制御ブロック2におけるN正規化回路21で
実行される。これは、Nレジスタ15とAレジスタ11
を順次左にシフトし、Nの最上位桁のn桁目が1となる
まで繰り返すことで行われる。
なお、表1におけるステップ5はキャリーセーブ加算に
よる結果を桁上がり伝搬させ、正しい1つの値を求める
ことと、ステップ1による正規化変形を元に戻す処理で
ある。
また、次の表2は本発明の第3の実施例としてA×Bm
odNなる高速剰余乗算を行うアルゴリズムを示してい
るが、これは第2の実施例においてステップ2からステ
ップ4を起き換えたものである。
表2.A×BmodN剰余乗算のアルゴリズムステップ
1 (N正規化)  O NのMSBが1となるまで、シフト分だけNとAを左シ
フト。
ステップ2(初期処理) R−0、c−Qとする。
N<2なら、A−A−N ステップ3(繰り返し処理) (k −n / 2 +1から1まで逐次減算)R−4
(R+cN) +b (k) Ac−f c (R,b
 (k  1) 、 A)ステップ4(終了処理) R−R+cN R<Qなら、R−R+N ステップ5 (Nを元に戻す) A −Rsull + Rearry シフト分だけNとAを右シフト、Aの値を結果とする。
注1. b (k) −−2B [2kl +B [2
に−11+b [2に一2]、 但し、b  (0’)−0,b  (n/2に+1)−
B [nl、’B [0] ’=’0注2.fc関数は
後述する表3参照。
この第3の実施例は第2の実施例と数学的に等価である
。第2の実施例を応用する場合によっては、ステップ3
の和4R+Aが新しく求めるCとRの両方に使用された
め、Cの決定に時間がかがる場合がある。そこで、第3
の実施例は、部分除数cNを繰り返し1段分ずつ遅らせ
、同時処理対応可能としたり但し、終了処理における加
算の回数が1回増大する。
更に、次の表3は本発明の第4の実施例を示している。
この実施例は上述した第2および第3の実施例に利用可
能な関数、f cを示している。
表3.関数fc (R,b、a)のアルゴリズムステッ
プ1(場合分け) Rs<Qならステップ3へ。
ステップ2 (R≧0の場合) fc−O Rs>NならRs−Rs−Ns。
fc−1 11Ns<Rsなら、fc−fc+1 fc−fc ステップ4ヘ ステップ3(R<0の場合) f c−0,Rs −−Rs Rs>Nsなら、Rs−Rs−Ns。
f c=1 髪−11N s < Rsなら、 fc−c+1 ステップ4 終了 注1.境界値i、、i−,の値、 但し、  土のうち上はab≧0の場合、下はab<0
の場合である。
注2.1−ffi”はAの値により高速剰余乗算アルゴ
リズムのステップ2の処理後決定されているとする。
本実施例は後述する根拠に説明するように、(R+bA
/4)/Nが一定の範囲一9/16〜9/16に収まる
ように制御する場合の一例である。
また、本実施例では、予めl A/N Iを分母8また
は16について大小分類し、比較用の境界指標を単純化
した。このとき、Nについて上位6桁分の比較で充電で
ある。
また、次の表4は本発明の第5の実施例を示している。
ステップ1(場合分け Rs<0ならステップ3へ。
ステップ2 (R≧0の場合) fc−O Rs>Nsなら、Rs−、Rs Ns。
fc−1 1LI Ns<Rsなら、fc−fc+1fc−、−f
c ステップ4ヘ ステップ3(R<Oの場合) f c−0,Rs −−Rs Rs>Nsなら、Rs−Rs  N S %c−1 1−+lNs<Rsなら、 fc日fc+1 ステップ4 終了 注1.境界値斐1+1−+の値、 1 +  −1/ 2− b A / 4 N 。
−更−t−1/2+bA/4N をb−〇、±1.±2の各場合について求めておく。
この実施例は、前述した第4の実施例と同じく(R+b
A/4)/Nが一定の範囲一9/16〜9/16に収ま
るよに制御する場合であるが、予め比較指標として1/
2±(bA/4N)が高い精度で求められる場合に対応
する。このとき、Nについて上位5桁の比較で十分であ
る。
第4図は以上説明した第1〜第5の実施例の根拠につい
て説明するためのロバートラン図である(参考文献: 
K、 Hwangによる「コンピュータの高速演算方式
」、近代科学社、1980年)。
第4図は繰り返し処理の途中の処理を表している。ここ
で、前後関係を表すために、剰余をRkと次のRk−1
とする。横軸はそれまでの剰余Rkを4倍して次の部分
積b (k)Aを加算した値をプロットするための座標
であり、第2図において部分積を加算した時に相当する
。また、縦軸は次のRk−1を導くための座標で、プロ
ットした横座標における太線で示したグラフがその縦座
標を指定する。この時選択されるグラフによりC=−2
〜3が決定される。両者に゛は次の関係がある。
Rk−1−4Rk+b  (k)  A+cNここで、
−9/16−b (k−1)A/4<Rk1/N<9/
16−b (k−i)A/4である。
このグラフは、横軸上の0、±1、±2を交点とする斜
めの45度の直線で、横座標−9/4から9/4の範囲
かつ縦軸−9/16−b (k−1)A/4Nから9〜
16−b (k−1)A/4Nの範囲の短形内の部分で
ある。この結果、m+bA/4は一9/16〜’9/1
6の範囲とでき、何回繰り返してもこの範囲となる。
一方、bAの値によりグラフの表示領域が変化し、それ
に伴い境界も変動する。第4および第5の実施例では、
AがN/2前後のとき、c−Qとc −−’ 1のグラ
フの境界斐1はb0のとき、1/2であるが、b−2で
Aが正の時1/4まで移動する。
第4および第5の実施例では、各グラフが横軸に対して
2価関数となる境界領域が1/8の幅を有するので、幅
を利用して、(4Rk+b (k)A)/Nの計算を正
確に求めなくても、Rkの上位数桁とAの符号とNの上
位数桁を使用した比較で、Cの値を正しく決定できるよ
うにしている。
以上の精度および比較用の境界値の根拠について説明す
る。
まず、(R+bA/4)/Nの絶対値を9716以下に
設定する理由について説明する。
剰余Rは常に次式の範囲にあるとする。
d −b A/4 N≦R/N≦d −b A/4 N
d>0                 ・・・(1
)このとき、cx−2,−1+  o、1.2とするに
は、 2−d−bA/4N<4d≦2+d −b A/4 N   ・・・(2) また、 AI≦N/2             ・・・(3)
なるAに0≦A<NのAが変形されるめで、b−−2,
−1,0,1,2の範囲、式(+)、 (2)、 (3
)を場合分けすると、以下のようになる。
7/20≦d≦7/12       ・・・(4)し
かるに、グラフの各隣接の境界が重なる2価関数とする
ためには、 2d〉1              ・・・(5)が
必要なので、式(4)、 (5)から以下の式が導かれ
る。
1/2<d≦7/12        ・・・(6)こ
の範囲にある分数からdを選定すればよい。
精度計算を容易にするために、dを表す分数のうち、分
母が2のべき乗のうち最小のものとして、d−9/16
                         
       ・・・く7)となるのである。
次に、比較用のNsおよびRsの桁数の決定理由につい
て説明する。
Rs / (N s + 1 ) < R/ N < 
(Rs+1)/Ns  ・・・(8) これから、 l R/ N −Rs / N s I < (1/ 
N s )・・・(9) が導かれる。
従って、Nsがm桁とすると、 Ns≧2m−1・・・(ゆ であるので、誤差は21−m以下となる。
このとき、境界指標として、第5の実施例を仮定すれば
、境界指標を中心として1716前後が誤差として許容
範囲であるので、 m≧5               ・・・01)が
必要となる。
一方、第4の実施例を仮定すれば、境界指標を中心とし
て1/16−1/32−1/32前後が誤差として許容
範囲であるので、 m≧6               ・・・@が必要
となるのである。
第5図は本発明の剰余乗算の方法とBake rの方法
との速度比較結果を示す表である。これはnビット幅の
演算器が存在するとき、その繰り返しの加減算の回数を
比較したものである。例えば、平均的なりのビットが1
,0等分に分布していた場合、Bakerの方法は乗算
用にn / 2回、本発明の方法は4を基数とする2ビ
ツトずつシフトし、Boothの乗算器と同じn/2x
(3/4)回となる。この結果、平均的には、本発明の
方法はBake rの方力法り7割早く、最悪状態で2
倍早い。
本発明に対応する回路構成は一般の従来法と異なり、回
路構成を単純な繰り返し性のあるセルによるこ構成に応
用できる。更に、変数bSc倍の処理は最大1桁のシフ
トですみ、剰余Rの4倍も2桁に固定したシフトである
ので、簡単な回路構成にできる。また、回路を□いった
い構成にすれば、途中経過を外に出さないので、□処理
内容の秘匿性が守られる。
第6図は本発明の第6の実施例に関わる剰余除算回路の
構成を示すブロック図である。同図に示す剰余乗算回路
は、入力変数A、B、Nをパラレル入力ポートから供給
され、各部にデータを分配する第1の手段を構成する入
力分配回路41と、加減算、シフト等の演算を実際に行
うように3隣接間で互いに接続される複数のセル43a
、43b、・・・、43i、・・・43n+3からなる
第2の手段を構成する演算部43と、前記セルの次の処
理内容を決めるとともに、また全体の動作を制御する第
3の手段を構成する制御回路45と、パラレル出力ポー
トのビット幅に合わせて前記演算部43に蓄積されたR
sum 、 Rearryを下位桁から選択して順次出
力する第4の手段を構成する出力選択回路47と、Rs
um 、 Rearryのように内部表現されている出
力選択回路47の出力から最終結果R−RsLID +
 RCarryの一部を実行して出力ポートからデータ
を出力する、すなわち出力選択回路47の出力から和を
作り出す加算器内臓出力整形回路49とを有する。
前記制御回路4′5は乗算Bをここに蓄積してbを生成
すること、゛上位桁のセルに蓄積される剰余Rsumと
Rcarryを読みだしてCを生成すること、セルの処
理−斉に終わったところで再び新しいRsumとRea
rr3’でレジスタの中身を書き換えることが主な機能
である。また、加算内臓出力整形回路49において、出
力幅から溢れたキャリは蓄積され、次の入力の下位ビッ
トに桁上がりとして一緒に加算される。
第7図は本発明の第7の実施例に係わる剰余乗算回路に
使用されるセルの回路構成を示すブロック図である。同
図に示すセルは、前述した第6図の剰余乗算回路の各セ
ル43iに適用し得るものであり、また前述した第2の
実施例に対応するものである。
第7図に示すセルは、N 、 A SRcarryおよ
びRsumをそれぞれ保持するNレジスタ51、レジス
タ53、RCarryレジスタ55およびRsumレジ
スタ57と、bA生成回路59と、cN生成回路61と
、5入力キャリーセーブ加算器63とから構成されてい
る。
bA生成回路59は、b−−2のとき、A[i−1]を
反転出力し、b−1のとき、A [ilを反転出力し、
b−0のとき、論理Oを出力し、b−1のとき、A[i
コを出力し、b−2のとき、A[i−1]を出力する。
また、cN生成回路61はbA生成回路59と同じ機能
を有する。
5入力キャリーセーブ加算器63は、第8図に詳細に示
すように、2個の全加算器65.67で構成される。上
述した各実施例において説明した加算口□数で説明する
と、その2回分この5入力キャリーセーブ加算器63が
同時に行っている。この5入力キャリーセーブ加算器6
3は前述した表1におけるR−4R+bA+cNを一度
に行うものである。
本実施例では、セルn+3からセルn−5における5入
力キャリーセーブ加算器63の中間結果C−と、+n1
.ds、usを使用して、4R+bA−時的に求め、C
を生成する必要があるのでこのような構成になっている
第9図・は本発明の第8の実施例に関わる剰余乗算回路
に使用されるセルの回路構成を示すブロック図である。
同図に示すセルは、前述した第6図の剰余乗算回路の各
セル43iに適用し得るものであり、また前述した第3
の実施例に対応するものである。
第9図に示すセルは、第7図に示したセルにおいて5入
力キャリーセーブ加算器63の代わりに第10図で後述
する5人カキャーリーセーブ加算器69を使用した点が
異なるもので、その他の構成は同じであるが、Aレジス
タ53が2ビツトシフトしている点が異なっている。
第9図の5入力キャリーセーブ加算器69は、第10図
に示すように、2個の半加算器71,73と、1個の全
加算器75と、論理和回路77゜79と、論理積回路8
1とから構成されている。
第7の実施例で説明したように、この5入力キャリーセ
ーブ加算器69で2回分の加算を同時に行う。また、本
5入力キャリーセーブ加算器69は前述した表2におけ
、るR=4 (R十cN)+bAを一度に行うものであ
る。全加算器が半加算器2段分からなるとすると、第7
の実施例の加算器の3/4の遅延時間で済む。
この第8の実施例の場合、演算初期からCが決定されて
、いるので、第10図のような回路構成を選択できる。
本実施例は回路規模に余裕があり、高速を狙うのに適し
ている。
[発明の効果] 以上説明したように、本発明によれば、速度性能に優れ
、回路規模が小さく、回路構成が簡単で設計が容易な剰
余乗算方法および回路を提供することができる。
【図面の簡単な説明】
第1図は本発明の第1の実施例に係わる剰余乗算の方法
を実施する回路構成を示すブロック図、第2図は8ビツ
トデータ長の場合について第1図の剰余乗算の方法にお
ける高速剰余乗算アルゴリズムの概念を示す説明図、第
3図は本発明の第2の実施例に使用されるレジスタの相
互関係を示す説明図、第4図は本発明の詳細な説明する
ため。 のロバートラン図、第5図は本発明の剰余乗算の方法と
Bake rの方法との速度比較結果を示す表、第6図
は本発明の第6の実施例に関わる剰余乗算回路の構成を
示すブロック図、第7図は本発明の第7の実施例に係わ
る剰余乗算回路に使用されるセルの回路構成を示すブロ
ック図、第8図は第7図のセルに使用されている5人カ
キャリーセ−ブ加算器の構成を示すブロック図、第9図
は本発明の第8の実施例に係わる剰余乗算回路に使用さ
れるセルの回路構成を示すブロック図、第10図は第9
図のセルに使用される5入力キャリーセーブ加算器の構
成を示すブロック図、第11図は従来の剰余乗算の説明
図、第12図はBake rのアルゴリズムの説明図で
ある。 1・・・レジスタブロック 2・・・制御ブロック3・
・・演算ブロック   11・・・Aレジスタ13・・
・Bレジスタ   15・・・Nレジスタ17・・・R
レジスタ   21・・・N正規化回路23・・・制御
パラメータ生成回路 25・・・シーケンス制御回路 31・・・A変形回路   33・・・N変形回路35
・・・R変形回路 37・・・キャリーセーブ加算回路

Claims (8)

    【特許請求の範囲】
  1. (1)入力変数A、B、Nおよび作業変数Rに対応する
    レジスタを有するレジスタブロックと、変数Nの正規化
    、制御パラメータの生成および順序制御機能を有する制
    御ブロックと、レジスタブロックに蓄積される変数A、
    N、Rの値を入力に加算する演算ブロックとを有する剰
    余乗算装置において入力変数A、B、Nに対してA×B
    modNなる剰余乗算を行う剰余乗算方法であって、 (イ)入力変数Aを−N/2≦A<N/2の範囲に変形
    し、 (ロ)作業変数Rを0に初期化し、 (ハ)変数A、B、Rから整数cを生成し、変数Bから
    変数bを生成し、変数R、bA、cNの値を加算し、こ
    の加算した和を新たに作業変数Rとし、 (ニ)変数Rを桁上げシフトし、変数Nの桁数に合せて
    、前記(ハ)の処理を変数Nの桁数を越えるまで繰り返
    し実施し、 (ホ)変数Rの値に応じて変数Nを加算し、0≦R<N
    の範囲にして剰余乗算結果とすることを特徴とする剰余
    乗算方法。
  2. (2)(イ)変数Nのレジスタの最上位桁が1になるま
    で、変数NとAのレジスタを親じだけ左シフトし、 (ロ)R=0とし、N<2Aの場合にはAをA−Nとし
    、 (ハ)変数Bのレジスタの上位桁から順に、隣接数桁の
    値から変数bと次のbの値b′の値を決め、4R+bA
    、b′およびAの符号によりcを決め、4R+bA+c
    Nを新しいRの値として繰り返し (ニ)R<0の場合にはR+Nを新しいRとし、(ホ)
    Rの値を前記ステップ(イ)でシフトした分だけ右シフ
    トして、Rを剰余乗算の結果とすることを特徴とする請
    求項(1)記載の剰余乗算方法。
  3. (3)(イ)変数Nのレジスタの最上位桁が1になるま
    で、変数NとAのレジスタを同じだけ左シフトし、 (ロ)R=0、c=0とし、N<2Aの場合にはAをA
    −Nとし、 (ハ)変数Bのレジスタの上位桁から順に、隣接数桁の
    値からbを決め、4(R+cN)+bAを新しいRの値
    とし、Bから次の隣接数桁から新しいbを決め、b、R
    、Aの符号により新しいcとして順次繰り返し、 (ニ)R+cNを新しいRとし、その時R<0ならR+
    Nを次のRとし、 (ホ)作業レジスタRを前記ステップ(イ)でシフトし
    た分だけ右シフトし、Rを剰余乗算の結果とすることを
    特徴とする請求項(1)記載の剰余乗算方法。
  4. (4)Rの上位桁数をRsとし (イ)c=0とし、Rs<0の場合にはステップ(ハ)
    に進み、 (ロ)Rs<Nsの場合には、Rs−BSを新しいRs
    とし、c=−1とし、l1Ns<Rsの場合には、c−
    1を新しいcとして終了し、(ハ)Rsの絶対値をRs
    とし、Rs<Nsの場合には、Rs=Rs=−Nsおよ
    びc=1とし、|l−1|Ns<Rsの場合には、c+
    1を新しいcとして終了し、 但し、16l1として、b=0のとき8、|b|=1の
    とき8−l′、|b|=2なら8−l”であり、 −16l−1として、b=0のとき8、|b|=1のと
    き8+l′、|b|=2なら8+l”であり、 ここで、l′として、|A/N|<(1/8)のとき0
    、(1/8)≦|A/N|<(3/8)のとき±1、(
    3/8)≦|A/N|のとき±2とし、 l”として、|A/N|(1/16)のとき0、(1/
    16)≦|A/N|<(3/16)のとき±1、(3/
    16)≦|A/N|<(5/16)のとき±2、(5/
    16)≦|A/N|<(7/16)のとき±3、(7/
    16)≦|A/N|のとき±4であるl′およびl”を
    予め求めておき、それぞれbA≧0のとき正符号、bA
    <0のとき負符号とすることを特徴とする請求項(2)
    または(3)記載の剰余乗算方法。
  5. (5)Rの上位数桁をRsとして、 (イ)c=0とし、Rs<0の場合にはステップ(ハ)
    に進み、 (ロ)Rs>Nsの場合には、Rs−Nsを新しいRs
    とし、c=−1とし、l1Ns<Rsの場合には、c−
    1を新しいcとして終了し、(ハ)Rsの絶対値をRs
    とし、Rs>Nsの場合には、Rs=Rs−Nsおよび
    c=1とし、|l−1|Ns<Rsの場合には、c+1
    を新しいcとして終了し、 但し、l1として、(1/2)−(bA/4N)をB=
    0、±1、±2の各場合について、および−l−1とし
    て、(1/2)+(bA/4N)をb=0、±0、±2
    の各場合について予め求めておくことを特徴とする請求
    項(2)または(3)記載の剰余乗算方法。
  6. (6)入力変数A、B、Nを入力ポートから受信し、各
    部にデータを分配する第1の手段と、加減算、シフト等
    の演算を実行する第2の手段と、全体を制御する第3の
    手段と、第2の手段から出力ポート幅にあわせて必要な
    値を選択する第4の手段と、第4の手段の出力から加算
    用桁上げ伝搬を実行し下位桁から部分的に結果を生成し
    出力ポートからデータを出力する第5の手段とを有する
    ことを特徴とする剰余乗算回路。
  7. (7)前記第2の手段は、変数N、A、Rに対応するレ
    ジスタN、レジスタAおよびR=Rcarry+Rsu
    mなるレジスタRcarryおよびRsumと、1桁分
    を構成するレジスタと、Aの隣接2桁分のレジスタから
    データを選択するかまたは論理0を出力するbA生成回
    路と、Nの隣接2桁分のレジスタからデータを選択する
    かまたは論理0を出力するcN生成回路と、5入力キャ
    リーセーブ加算器とからなるセルを複数配列して構成さ
    れ、前記5入力キャリーセーブ加算器は2つの全加算器
    から構成されることを特徴とする請求項(6)記載の剰
    余乗算回路。
  8. (8)前記第2の手段は、変数N、A、Rに対応するレ
    ジスタN、レジスタAおよびR=Rcarry+Rsu
    mなるレジスタRcarryおよびRsumと、1桁分
    を構成するレジスタと、Aの隣接2桁分のレジスタから
    データを選択するかまたは論理0を出力するbA生成回
    路と、Nの隣接2桁分のレジスタからデータを選択する
    かまたは論理0を出力するcN生成回路と、5入力のキ
    ャリーセーブ加算器とからなるセルを複数配列して構成
    され、前記5入力キャリーセーブ加算器は2つの半加算
    器、1つの全加算器、2つの論理和回路、および1つの
    論理積回路から構成されることを特徴とする請求項(7
    )記載の剰余乗算回路。
JP1017700A 1989-01-30 1989-01-30 剰余乗算の方法および回路 Pending JPH02199532A (ja)

Priority Applications (6)

Application Number Priority Date Filing Date Title
JP1017700A JPH02199532A (ja) 1989-01-30 1989-01-30 剰余乗算の方法および回路
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
DE69032811T DE69032811T2 (de) 1989-01-30 1990-01-30 Verfahren und System zur modularen Multiplikation
EP90101842A EP0381161B1 (en) 1989-01-30 1990-01-30 Modular multipication method and the system
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
JP1017700A JPH02199532A (ja) 1989-01-30 1989-01-30 剰余乗算の方法および回路

Publications (1)

Publication Number Publication Date
JPH02199532A true JPH02199532A (ja) 1990-08-07

Family

ID=11951067

Family Applications (1)

Application Number Title Priority Date Filing Date
JP1017700A Pending JPH02199532A (ja) 1989-01-30 1989-01-30 剰余乗算の方法および回路

Country Status (1)

Country Link
JP (1) JPH02199532A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004501396A (ja) * 2000-05-15 2004-01-15 エム−システムズ フラッシュ ディスク パイオニアーズ リミテッド 整数の計算フィールド範囲の拡張

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004501396A (ja) * 2000-05-15 2004-01-15 エム−システムズ フラッシュ ディスク パイオニアーズ リミテッド 整数の計算フィールド範囲の拡張

Similar Documents

Publication Publication Date Title
CN110351087B (zh) 流水线型的蒙哥马利模乘运算方法
CA2008774C (en) Modular multiplication method and the system for processing data
US8959134B2 (en) Montgomery multiplication method
US5255216A (en) Reduced hardware look up table multiplier
KR20040063143A (ko) 오퍼랜드 가산 방법 및 회로 장치 및 컴퓨터 구현형 장치
US5528529A (en) Electronic multiplying and adding apparatus and method
Shieh et al. A new algorithm for high-speed modular multiplication design
JP2008304921A (ja) 改善されたモジュラー減少演算子
US6598061B1 (en) System and method for performing modular multiplication
Kolte et al. A fast median filter using AltiVec
CN109284085B (zh) 一种基于fpga的高速模乘和模幂运算方法及装置
JP3660075B2 (ja) 除算装置
US20220075598A1 (en) Systems and Methods for Numerical Precision in Digital Multiplier Circuitry
JPH02199532A (ja) 剰余乗算の方法および回路
Shawl et al. Implementation of Area and Power efficient components of a MAC unit for DSP Processors
US5948051A (en) Device improving the processing speed of a modular arithmetic coprocessor
Das et al. Hardware implementation of parallel FIR filter using modified distributed arithmetic
CN113485751A (zh) 执行伽罗瓦域乘法的方法、运算单元和电子装置
JP4223819B2 (ja) べき乗剰余演算装置及びそのプログラム
EP1504338A1 (en) "emod" a fast modulus calculation for computer systems
JP4850884B2 (ja) べき乗剰余演算器
JP3982965B2 (ja) 繰り返し型乗算器とアレイ型乗算器
JPH0371332A (ja) 剰余乗算回路および剰余乗算方法
Zhou et al. New algorithm and fast VLSI implementation for modular inversion in galois field GF (p)
Kumar et al. Implementation and Performance Analysis of Reconfigurable Montgomery Modular Multiplier