JP2002236581A - 演算回路、演算方法、及びプログラム記録媒体 - Google Patents

演算回路、演算方法、及びプログラム記録媒体

Info

Publication number
JP2002236581A
JP2002236581A JP2001032336A JP2001032336A JP2002236581A JP 2002236581 A JP2002236581 A JP 2002236581A JP 2001032336 A JP2001032336 A JP 2001032336A JP 2001032336 A JP2001032336 A JP 2001032336A JP 2002236581 A JP2002236581 A JP 2002236581A
Authority
JP
Japan
Prior art keywords
digit
register
circuit
product
bits
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
JP2001032336A
Other languages
English (en)
Inventor
Toshihisa Nakano
稔久 中野
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.)
Panasonic Holdings Corp
Original Assignee
Matsushita Electric Industrial Co Ltd
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 Matsushita Electric Industrial Co Ltd filed Critical Matsushita Electric Industrial Co Ltd
Priority to JP2001032336A priority Critical patent/JP2002236581A/ja
Publication of JP2002236581A publication Critical patent/JP2002236581A/ja
Pending legal-status Critical Current

Links

Abstract

(57)【要約】 【課題】 本発明は、複数桁からなる被乗数と1桁の乗
数との乗算を含む演算を従来よりも高速に実行する、従
来よりも小規模な演算回路を提供する。 【解決手段】 演算回路100において、乗算回路18
1は、被乗数Aの1つの桁aiと乗数bとを乗じて2桁
の積を算出する。加算回路184は、前記積の下1桁
と、レジスタ182に記憶されている数と、レジスタ1
83に記憶されている数とを加算し、(A×b)の1つ
の桁と桁上がり値とを算出する。レジスタ182は、初
期値として0を保持し、前記加算が行われた場合に、前
記積の上1桁を記憶する。レジスタ183は、初期値と
して0を保持し、前記桁上がり値を記憶する。制御回路
190は、前述した各構成要素に対しタイミングクロッ
クを含む制御信号を出力することにより、被乗数Aの各
桁について前述の動作を実行する。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、演算回路に関し、
特に、複数桁からなる被乗数と1桁の乗数との乗算を含
む演算を行う演算回路に関する。
【0002】
【従来の技術】複数桁からなる多倍精度数を対象とする
多倍精度演算は、近年、情報の暗号処理において、情報
の秘匿と認証を行うために広く用いられ、特にインター
ネットを介して通信される情報や、ICカード等の記録
媒体に記録される情報の安全性の向上に寄与している。
【0003】この結果、今日では、インターネット通信
を行うパーソナルコンピュータ、携帯情報端末、及び携
帯電話等から、ICカード等の記録媒体に至るまで、多
岐にわたるプラットフォームにおいて前記多倍精度演算
が行われている。図11は、多倍精度演算回路の一例と
して、多倍精度の被乗数と単精度の乗数との乗算を行う
従来の演算回路900のブロック図を示している。
【0004】演算回路900は、特開平11−2124
56号公報「モンゴメリ法による乗算剰余計算装置」に
開示された回路の主要部に相当し、暗号方式の一種類で
あるRSA(Rivest,Shamir,Adleman)暗号を用いた
暗号処理において、モンゴメリのアルゴリズムを実行す
る回路の主要部を構成する。なお、モンゴメリのアルゴ
リズムの詳細について、文献(1) Peter L. Mongomery,
“Modular Multiplication Without Trial Divisio
n”,MATHEMATICS OF COMPUTATION,VOLUME44,NUMBER1
70,APRIL,1985,PAGES519-521、文献(2) Menezes,va
n Oorschot,Vanstone,“HANDBOOK of APPLIED CRYPTO
GRAPHY”,CRC Press,Inc.,1997,p.600-603に述べ
られているため、ここでは説明を省略する。
【0005】演算回路900は、レジスタ910、レジ
スタ920、乗算回路981、加算回路984、レジス
タ982、レジスタ940、及び制御回路990から構
成される。レジスタ910は、複数桁からなる被乗数を
記憶しており、制御回路990からの制御信号に従って
前記被乗数の各桁を順次乗算回路981に出力する。レ
ジスタ920は、1桁の乗数を記憶しており、前記乗数
を乗算回路981に出力する。
【0006】乗算回路981は、レジスタ910から順
次入力される前記桁に、レジスタ920から入力される
乗数を乗じ、2桁の乗算結果を加算回路984に順次出
力する。加算回路984は、乗算回路981の乗算結果
と、レジスタ982に記憶されている前回の加算結果の
上位桁との加算を順次行い、2桁の加算結果を算出す
る。
【0007】レジスタ982(以降、RHレジスタと称
する)は、算出された加算結果の上位桁を記憶し、レジ
スタ940は、算出された加算結果の下位桁を制御回路
990からの制御信号により指示された桁に順次記憶す
る。この加算結果の上位桁は、下位桁の加算から生じた
桁上がりを含んでいる。制御回路990は、前述した各
構成要素に対しタイミングクロックを含む制御信号を出
力することにより、前述の動作を進行させる。
【0008】前記桁は、演算の処理単位であると共に、
数の精度の単位であり、1桁の数が単精度数に相当し、
複数桁からなる数が多倍精度数に相当する。以降、単精
度数、すなわち1桁がkビットで表されるものとして説
明する。図12は、加算回路984の構成の一具体例を
示している。加算回路984は、Ak-1…A0のkビット
からなる入力Aと、B2k-1…B0の2kビットからなる
入力Bとを受け取り、A0及びB0をハーフアダーにより
加算して加算結果S0を生成し、A1…Ak-1及びB1…B
k-1のそれぞれ対応するビットを下位ビットからの桁上
がりと共にフルアダーにより加算して加算結果S1…S
k-1を生成し、Bk…B2k-1と下位ビットからの桁上がり
とをそれぞれハーフアダーにより加算して加算結果Sk
…S2k-1を生成する。
【0009】この例において、加算回路984は、k+
1個のハーフアダーとk−1個のフルアダーとから構成
され、(2k−1)ビットのキャリー伝播遅延を有す
る。図13は、5桁の被乗数a43210と1桁の
乗数bとを乗算する場合の演算回路900の処理手順5
50を、一例として示している。同図において、行55
1はタイミングクロックを基準とした経過時間、行55
2は乗算回路981の入力Aに入力される被乗数の桁、
行553は乗算回路981の入力Bに入力される乗数、
行554は乗算回路981の乗算結果PHLであって、
かつ加算回路984の入力B、行555はRHレジスタ
の内容であって、かつ加算回路984の入力A、行55
6は加算回路984の加算結果の上位桁SH、行557
は加算回路984の加算結果の下位桁SL、行558は
直前のクロックにおける加算結果の下位桁SLを記憶す
るレジスタ940の桁を、それぞれタイミングクロック
毎に示している。
【0010】同図中の記号φは値0を意味し、以降同義
で用いる。また、表記a0×b(→x0)はa0×bの乗
算結果をx0と称することを意味し、以降同義で用い
る。以下、処理手順550を詳細に説明する。 (1)RHレジスタは、初期値φを記憶している。第1
クロックにおいて、レジスタ910は、制御回路990
から入力された制御信号に従って桁a0を出力し、乗算
回路981は、a0×bの乗算を行い、加算回路984
は、前記乗算の結果x0とRHレジスタの内容φとの加
算を行う。
【0011】第2クロックの開始時に、レジスタ940
は、第1クロックにおける加算の結果x0の下位桁x0 L
を、制御回路990から入力された制御信号に従って桁
0に記憶し、RHレジスタは第1クロックにおける加
算結果の上位桁x0 Hを記憶する。 (2)第2クロックにおいて、乗算回路981は、a1
×bの乗算を行い、加算回路984は、前記乗算の結果
1とRHレジスタの内容x0 Hとの加算を行う。
【0012】第3クロックの開始時に、レジスタ940
は第2クロックにおける加算結果(x1+x0 H)の下位
桁(x1 L+x0 H)を桁d1に記憶し、RHレジスタは第
2クロックにおける加算の結果の上位桁(x1 H+c1
を記憶する。ここで、c1は前記加算の下位桁から生じ
た桁上がりである。第3クロックから第5クロックの各
クロックにおいて、それぞれ桁a2、a3、a4に対し同
様の処理を繰り返し、第4クロックから第6クロックの
開始時に、レジスタ940は、それぞれの加算結果の下
位桁を桁d2、d3、d4に記憶する。 (3)第6クロックにおいて、レジスタ910は、出力
を抑制するための制御信号を制御回路990から入力さ
れることにより値φを出力し、乗算回路981は、φ×
bの乗算を行い、加算回路984は、前記乗算の結果φ
と、RHレジスタに記憶されている第5クロックにおけ
る加算結果の上位桁(x4 H+c4)とを加算し、レジス
タ940は桁d5に前記加算結果(x4 H+c4)を記憶す
る。
【0013】図14は、5桁の被乗数a43210
と1桁の乗数bとを筆算により乗算した場合を示す模式
図である。前記処理手順550において説明した各数に
対応する数に同一の記号を付すことにより、筆算と前記
処理手順550との対応関係を示している。上記説明し
たように、従来の演算回路900は、一適用例として暗
号回路の主要部を構成し、前述した処理手順に従って多
倍精度の被乗数と単精度の乗数との乗算を実行する。
【0014】
【発明が解決しようとする課題】しかしながら、特に、
前記ICカードに代表されるような、ハードウェア規模
が厳しく制限されるプラットフォームにおいて、暗号回
路の小規模化と暗号処理の高速化との両立に対する強い
要求がある。また、回路規模に対する制約が比較的緩い
プラットフォームにおいても、暗号処理の高速化に対す
る要求があり、前述した従来技術の演算回路を用いた暗
号回路の規模及び動作速度をもっては、前記要求に十分
応えられないという問題がある。
【0015】上記の問題に鑑み、本発明は、複数桁から
なる被乗数と1桁の乗数との乗算を含む演算を従来より
も高速に実行する、従来よりも小規模な演算回路を提供
することを目的とする。
【0016】
【課題を解決するための手段】(1)上記問題を解決す
るため、本発明の演算回路は、複数桁からなる数Aと1
桁の数bとの乗算において、前記数Aの1つの桁aと前
記数bとの積を用いて数(A×b)の1つの桁dを算出
する演算回路であって、1桁の数を記憶している第1レ
ジスタと、1ビットの数を記憶している第2レジスタ
と、前記桁aと前記数bとを乗じて2桁からなる積を算
出する乗算回路と、前記算出された積の下1桁と、前記
第1レジスタの内容と、前記第2レジスタの内容とを加
算することにより、前記桁dと1ビットの桁上がり値と
を算出する加算回路とを備え、前記第1レジスタは、初
期値として0を保持し、前記加算回路による加算が行わ
れた場合に、前記算出された積の上1桁を記憶し、前記
第2レジスタは、初期値として0を保持し、前記算出さ
れた桁上がり値を記憶することを特徴とする。 (2)また、前記(1)の演算回路において、前記各桁
はkビット(kは正整数)で表され、前記第1レジスタ
は、kビットで表された前記1桁の数を記憶し、前記乗
算回路は、kビットで表された前記桁aと、kビットで
表された前記数bとを乗じて、2kビットで表された前
記積を算出し、前記加算回路は、前記積の下kビット
と、前記第1レジスタに記憶されているkビット値と、
前記第2レジスタに記憶されている1ビット値とを加算
することにより、kビットで表された前記桁dと1ビッ
トの桁上がり値とを算出してもよい。 (3)上記問題を解決するため、本発明の演算回路は、
複数桁からなる数T、数A、及び数N、並びに1桁の数
b及び数mに対する演算(T+A×b+N×m)におい
て、前記数Aの1つの桁と前記数bとの積、及び前記数
Nの1つの桁と前記数mとの積を用いて数(T+A×b
+N×m)の1つの桁dを算出する演算回路であって、
数A及び数Nの何れかを選択する第1選択回路と、数b
及び数mの何れかを選択する第2選択回路と、1桁の数
を記憶している第1レジスタと、2ビットの数を記憶し
ている第2レジスタと、複数桁からなる数を桁毎に記憶
している第3レジスタと、前記第1選択回路により選択
された数の1つの桁と、前記第2選択回路により選択さ
れた1桁の数とを乗じて、2桁からなる積を算出する乗
算回路と、前記算出された積の下1桁と、前記第1レジ
スタの内容と、前記第2レジスタの内容と、前記乗算さ
れた桁と同一の桁位置において前記第3レジスタに記憶
されている1つの桁とを加算することにより、前記桁d
と2ビットの桁上がり値とを算出する加算回路とを備
え、前記第1レジスタは、初期値として0を保持し、前
記加算回路による加算が行われた場合に、前記算出され
た積の上1桁を記憶し、前記第2レジスタは、初期値と
して0を保持し、前記算出された桁上がり値を記憶し、
前記第3レジスタは、初期値として数Tを保持し、前記
加算回路により加算された桁を、前記加算回路の加算結
果により更新し、前記加算回路は、前記第1選択回路に
より前記数Aが選択され、かつ前記第2選択回路により
前記数bが選択されている場合に、前記加算を行うこと
により、数(T+A×b)の1つの桁を算出し、その
後、前記第1選択回路により前記数Nが選択され、かつ
前記第2選択回路により前記数mが選択されている場合
に、前記加算を行うことにより、前記桁dを算出するこ
とを特徴とする。 (4)また、前記(3)の演算回路において、前記各桁
はkビット(kは正整数)で表され、前記第1レジスタ
は、kビットで表された前記1桁の数を記憶し、前記乗
算回路は、前記第1選択回路により選択されkビットで
表された前記桁と、前記第2選択回路により選択されk
ビットで表された前記桁とを乗じて、2kビットで表さ
れた前記積を算出し、前記加算回路は、前記積の下kビ
ットと、前記第1レジスタに記憶されているkビット値
と、前記第2レジスタに記憶されている1ビット値と、
前記第3レジスタに記憶されているkビットで表された
1つの桁とを加算することにより、kビットで表された
加算結果と2ビットの桁上がり値とを算出してもよい。 (5)また、前記(3)の演算回路において、前記加算
回路は、さらに、前記数mを算出し、前記演算回路は、
さらに、前記加算回路により算出された数mを記憶する
第4レジスタを備え、前記第2選択回路は、前記数b及
び前記第4レジスタに記憶されている数mの何れかを選
択してもよい。 (6)上記問題を解決するため、本発明の演算回路は、
複数桁からなる数T、数A、及び数N、並びに1桁の数
b及び数mに対する演算(T+A×b+N×m)におい
て、前記数Aの1つの桁aと前記数bとの積、及び前記
数Nの1つの桁nと前記数mとの積を用いて数(T+A
×b+N×m)の1つの桁dを算出する演算回路であっ
て、前記桁aと前記数bとを乗じて2桁からなる第1積
を算出する第1乗算回路と、前記桁aと同一の桁位置に
ある前記数Nの桁nと、前記数mとを乗じて2桁からな
る第2積を算出する第2乗算回路と、1桁の数を記憶し
ている第1レジスタと、1桁の数を記憶している第2レ
ジスタと、3ビットの数を記憶している第3レジスタ
と、前記算出された第1積の下1桁と、前記第1レジス
タの内容と、前記算出された第2積の下1桁と、前記第
2レジスタの内容と、前記第3レジスタの内容と、前記
桁aと同一の桁位置にある前記数Tの桁とを加算するこ
とにより、前記桁dと3ビットの桁上がり値とを算出す
る加算回路とを備え、前記第1レジスタは、初期値とし
て0を保持し、前記加算回路による加算が行われた場合
に、前記算出された第1積の上1桁を記憶し、前記第2
レジスタは、初期値として0を保持し、前記加算回路に
よる加算が行われた場合に、前記算出された第2積の上
1桁を記憶し、前記第3レジスタは、初期値として0を
保持し、前記算出された桁上がり値を記憶することを特
徴とする。 (7)また、前記(6)の演算回路において、前記各桁
はkビット(kは正整数)で表され、前記第1レジスタ
は、kビットで表された前記1桁の数を記憶し、前記第
2レジスタは、kビットで表された前記1桁の数を記憶
し、前記第1乗算回路は、kビットで表された前記桁a
と、kビットで表された前記数bとを乗じて、2kビッ
トで表された前記第1積を算出し、前記第2乗算回路
は、kビットで表された前記桁nと、kビットで表され
た前記数mとを乗じて、2kビットで表された前記第2
積を算出し、前記加算回路は、前記第1積の下kビット
と、前記第1レジスタに記憶されているkビット値と、
前記第2積の下kビットと、前記第2レジスタに記憶さ
れているkビット値と、前記第3レジスタに記憶されて
いる3ビット値と、前記数Tのkビットで表された1つ
の桁とを加算することにより、kビットで表された前記
桁dと3ビットの桁上がり値とを算出してもよい。 (8)また、前記(6)の演算回路において、前記加算
回路は、さらに、前記数mを算出し、前記演算回路は、
さらに、前記加算回路により算出された数mを記憶する
第4レジスタを備え、前記第2乗算回路は、前記桁n
と、前記第4レジスタに記憶されている数mとを乗算し
てもよい。 (9)上記問題を解決するため、本発明の演算方法は、
複数桁からなる数Aと1桁の数bとの乗算において、前
記数Aの1つの桁aと前記数bとの積を用いて数(A×
b)の1つの桁dを算出する演算方法であって、1桁の
数を記憶する第1記憶ステップと、1ビットの数を記憶
する第2記憶ステップと、前記桁aと前記数bとを乗じ
て2桁からなる積を算出する乗算ステップと、前記算出
された積の下1桁と、前記第1記憶ステップにおいて記
憶された数と、前記第2記憶ステップにおいて記憶され
た数とを加算することにより、前記桁dと1ビットの桁
上がり値とを算出する加算ステップとを有し、前記第1
記憶ステップは、初期値として0を記憶し、前記加算ス
テップによる加算が行われた場合に、前記算出された積
の上1桁を記憶し、前記第2記憶ステップは、初期値と
して0を記憶し、前記算出された桁上がり値を記憶する
ことを特徴とする。 (10)上記問題を解決するため、本発明の記録媒体
は、複数桁からなる数Aと1桁の数bとの乗算におい
て、前記数Aの1つの桁aと前記数bとの積を用いて数
(A×b)の1つの桁dを算出する演算回路を制御する
プログラムを記憶しているコンピュータ読取り可能な記
録媒体であって、前記プログラムは、1桁の数を記憶す
る第1記憶ステップと、1ビットの数を記憶する第2記
憶ステップと、前記桁aと前記数bとを乗じて2桁から
なる積を算出する乗算ステップと、前記算出された積の
下1桁と、前記第1記憶ステップにおいて記憶された数
と、前記第2記憶ステップにおいて記憶された数とを加
算することにより、前記桁dと1ビットの桁上がり値と
を算出する加算ステップとを有し、前記第1記憶ステッ
プは、初期値として0を記憶し、前記加算ステップによ
る加算が行われた場合に、前記算出された積の上1桁を
記憶し、前記第2記憶ステップは、初期値として0を記
憶し、前記算出された桁上がり値を記憶することを特徴
とする。
【0017】
【発明の実施の形態】(第1の実施の形態)第1の実施
の形態における演算回路は、複数桁からなる被乗数と1
桁の乗数との乗算を行う。(全体構成)図1は、第1の
実施の形態における演算回路の全体構成を示すブロック
図である。
【0018】演算回路100は、レジスタ110、レジ
スタ120、乗算回路181、加算回路184、レジス
タ182、レジスタ183、レジスタ140、及び制御
回路190から構成される。演算回路100は、具体的
には、特定用途の集積回路として実現されるか、又は、
プロセッサ、プログラムを記憶しているROM(Rea
d Only Memory)、作業用のRAM(Ra
ndom Access Memory)等のハードウ
ェアにより実現される。後者の場合、前記各構成要素の
機能は、ROMに記憶されているプログラムをプロセッ
サが実行することにより実現され、各構成要素の間にお
けるデータの受け渡しは、RAM等のハードウェアを介
して行われる。
【0019】レジスタ110、レジスタ120、及びレ
ジスタ140は、従来技術の演算回路900におけるレ
ジスタ910、レジスタ920、及びレジスタ940
と、それぞれ等価である。乗算回路181は、レジスタ
110から順次入力される被乗数の各桁と、レジスタ1
20に記憶されている乗数とを乗じて2桁の乗算結果を
算出し、前記乗算結果の下位桁を加算回路184に順次
出力し、上位桁をレジスタ182に順次出力する。レジ
スタ182は、乗算回路181から次の上位桁が出力さ
れる直前に出力されている上位桁を記憶し、加算回路1
84に出力する。これにより、レジスタ182(以降、
RHレジスタと称する)は前記上位桁を遅延して出力す
るため、加算回路184には、乗算結果の下位桁と、前
回の乗算結果の上位桁とが入力される。
【0020】加算回路184は、前記入力を、レジスタ
183に記憶されている前回の加算から生じた桁上がり
と共に順次加算し、新たな桁上がり値と1桁の和とから
なる加算結果を算出する。レジスタ183(以降、RC
レジスタと称する)は、算出された桁上がり値を記憶す
る。レジスタ140は、算出された和を、制御回路19
0から入力された制御信号により指示された桁に順次記
憶する。
【0021】制御回路190は、前述した各構成要素に
対しタイミングクロックを含む制御信号を出力すること
により、前述の動作を進行させる。前記桁は、従来技術
の説明において述べたように、演算の処理単位であると
共に、数の精度の単位である。以降、単精度数、すなわ
ち1桁がkビットで表されるものとして説明する。
【0022】図2は、加算回路184の構成の一具体例
を示している。加算回路184は、Ak-1…A0のkビッ
トからなる入力Aと、Bk-1…B0のkビットからなる入
力Bと、1ビットの桁上がり値Cinとを受け取り、
0、B0、及び入力された桁上がりCinとをフルアダー
により加算して加算結果S0を生成し、A1…Ak-1及び
1…Bk-1のそれぞれ対応するビットを下位ビットから
の桁上がりと共にフルアダーにより加算して加算結果S
1…Sk-1を生成し、さらに最上位ビットの加算から生じ
た桁上がりCoutを出力する。
【0023】この例において、加算回路184は、k個
のフルアダーから構成され、(k−1)ビットのキャリ
ー伝播遅延を有する。図3は、5桁の被乗数a432
10と1桁の乗数bとを乗算する場合の演算回路10
0の処理手順510を、一例として示している。同図に
おいて、行511はタイミングクロックを基準とした経
過時間、行512は乗算回路181の入力Aに入力され
る被乗数の桁、行513は乗算回路181の入力Bに入
力される乗数、行514は乗算回路181の乗算結果P
HL、行515はRHレジスタの内容、行516はRC
レジスタの内容、行517は加算回路184の加算結果
S、行518は加算回路184から生じた桁上がりC
out、行519は直前のクロックにおける加算結果Sを
記憶するレジスタ140の桁を、それぞれタイミングク
ロック毎に示している。
【0024】同図中の記号φは値0を意味し、表記a0
×b(→x0)はa0×bの乗算結果をx0と称すること
を意味する。以降、両表記を同義で用いる。以下、処理
手順510を詳細に説明する。 (1)RHレジスタ及びRCレジスタは、初期値φを記
憶している。第1クロックにおいて、レジスタ110
は、制御回路190から入力された制御信号に従って桁
0を出力し、乗算回路181は、a0×b(→x0)の
乗算を行い、加算回路184は、乗算結果の下位桁x0 L
及びRHレジスタの内容φを、RCレジスタの内容φと
共に加算し、和x0 L及び桁上がりφを算出する。最初の
加算において桁上がりは必ずφである。
【0025】第2クロックの開始時に、レジスタ140
は、第1クロックにおいて算出された和x0 Lを制御回路
190から入力された制御信号に従って桁d0に記憶
し、RCレジスタは桁上がりφを記憶し、RHレジスタ
は、第1クロックにおける乗算結果の上位桁x0 Hを記憶
する。 (2)第2クロックにおいて、乗算回路181は、a1
×b(→x1)の乗算を行い、加算回路184は、乗算
結果の下位桁x1 L、及びRHレジスタに記憶されている
第1クロックにおける乗算結果の上位桁x0 Hを、RCレ
ジスタの内容φと共に加算し、和(x1 L+x0 H)及び桁
上がりc1を算出する。
【0026】第3クロックの開始時に、レジスタ140
は第2クロックにおいて算出された和(x1 L+x0 H)を
桁d1に記憶し、RCレジスタは桁上がりc1を記憶し、
RHレジスタは、第2クロックにおける乗算結果の上位
桁x1 Hを記憶する。第3クロックから第5クロックま
で、それぞれ桁a2、a3、a4に対し同様の処理を繰り
返し、第4クロックから第6クロックの開始時に、レジ
スタ140は、それぞれの加算結果を桁d2、d3、d4
に記憶する。
【0027】(3)第6クロックにおいて、レジスタ1
10は、出力を抑制するための制御信号を制御回路19
0から入力されることにより値φを出力し、乗算回路1
81は、φ×bの乗算を行い、加算回路184は、前記
乗算の結果φ、及びRHレジスタに記憶されている第5
クロックにおける乗算結果の上位桁x4 Hを、RCレジス
タの内容c4と共に加算し、和(x4 H+c4)及び桁上が
りφを算出する。最後の加算においても桁上がりは必ず
φである。
【0028】第7クロックの開始時に、レジスタ140
は第6クロックにおいて算出された和(x4 H+c4)を
桁d5に記憶する。 (第1のまとめ)上記説明したように、第1の実施の形
態における演算回路100は、従来の演算回路900に
対し、1ビットの桁上がり値を記憶するRCレジスタが
追加され、さらに、加算回路184の内部において、1
個のフルアダーが追加され、k+1個のハーフアダーが
削減されている。
【0029】暗号回路に適用される場合、kは、回路規
模と処理速度とを勘案して、例えば32程度に構成され
るため、削減される回路規模が追加される回路規模を上
回り、演算回路100によって回路規模の縮小が達成さ
れる。また、演算回路100を構成する加算回路184
は、従来の加算回路984に対し、キャリー伝播遅延が
(2k−1)ビットから(k−1)ビットに減少してい
るため、より高速に動作する。従って、タイミングクロ
ックの周波数を上げることにより、従来よりも高速に、
同一の乗算を実行できる。 (第2の実施の形態)第2の実施の形態における演算回
路は、前述したモンゴメリ乗算アルゴリズムに従って乗
算剰余演算を実行する。
【0030】前記アルゴリズムは、正整数A、B、N
(0≦A、B<N)の入力に対し、T=ABR-1 mo
d Nを出力する。ここで、A、B、Nをh桁の2k
数で表した場合、R=2khであり、各桁はkビットで表
される。A、B、Nの各桁をそれぞれ、ai、bi、ni
(i=0…h−1、0が最下位桁)と表記する。
【0031】前記アルゴリズムは、r=2kとおき、予
め算出されたn’=−N-1 modrを用いて、出力T
を次のように算出する。 T=0 for i=0 to h−1{ m=(t0+a0×bi)×n’ mod r T=(T+A×bi+N×m)/r } if T≧N then T=T−N return(T) なお、r=2kであるため、rによる剰余算は下位kビ
ット(下位1桁)の抽出処理により実行され、rによる
除算はkビット(1桁)の右シフト処理により実行され
る。 (全体構成)図4は、第2の実施の形態における演算回
路の全体構成を示すブロック図である。
【0032】演算回路200は、レジスタ210、レジ
スタ220、レジスタ230、レジスタ240、マルチ
プレクサ281、マルチプレクサ282、乗算回路28
5、レジスタ286、レジスタ287、加算回路28
8、レジスタ289、レジスタ250、及び制御回路2
90から構成される。レジスタ210(以降、Nレジス
タと称する)は、数Nを記憶しており、制御回路290
からの制御信号に従って数Nの各桁niを順次マルチプ
レクサ281に出力する。レジスタ220(以降、Aレ
ジスタと称する)は、数Aを記憶しており、制御回路2
90からの制御信号に従って数Aの各桁aiを順次マル
チプレクサ281に出力する。レジスタ230(以降、
Bレジスタと称する)は、数Bを記憶しており、制御回
路290からの制御信号に従って数Bの各桁biを順次
マルチプレクサ282に出力する。レジスタ240は、
数n’を記憶しており、数n’をマルチプレクサ282
に出力する。
【0033】マルチプレクサ281は、制御回路290
からの制御信号に従ってn’、ni及びaiの何れかを選
択し、乗算回路285に順次出力する。マルチプレクサ
282は、制御回路290からの制御信号に従ってbi
及びレジスタ289の出力の何れかを選択し、乗算回路
285に出力する。乗算回路285は、マルチプレクサ
281(以降、MUX1と称する)の出力と、マルチプ
レクサ282(以降、MUX2と称する)の出力とを乗
じて2桁の乗算結果を算出し、前記乗算結果の下位桁を
加算回路288に順次出力し、上位桁をレジスタ286
に順次出力する。
【0034】レジスタ286は、乗算回路285から次
の上位桁が出力される直前に出力されている上位桁を記
憶し、加算回路288に出力する。これにより、レジス
タ286(以降、RHレジスタと称する)は前記上位桁
を遅延して出力するため、加算回路288には、乗算結
果の下位桁と、前回の乗算結果の上位桁とが入力され
る。
【0035】加算回路288は、乗算結果の下位桁、前
回の乗算結果の上位桁、及びレジスタ250からの入力
を、レジスタ287に記憶されている前回の加算から生
じた桁上がりと共に順次加算し、2ビットで表される新
たな桁上がり値と、1桁の和とからなる加算結果を算出
する。レジスタ287(以降、RCレジスタと称する)
は、算出された桁上がり値を記憶する。レジスタ250
(以降、Tレジスタと称する)は、算出された和を、制
御回路290から入力された制御信号により指示された
桁に順次記憶し、かつ、制御回路290から入力された
制御信号により指示された桁を加算回路288に出力す
る。
【0036】加算回路288は、さらに、後述する手順
に従って前記数mを算出し、レジスタ289(以降、R
Mレジスタと称する)は、算出された数mを記憶する。
制御回路290は、前述した各構成要素に対しタイミン
グクロック及び選択信号を含む制御信号を出力すること
により、前述の動作を進行させる。加算回路288は、
kビットで表された3つの入力値と2ビットのキャリー
とを加算する4入力加算回路であり、例えば2入力加算
回路を3段接続することにより構成できる。多入力加算
回路は、従来広く知られた技術を用いて構成できるた
め、ここでは詳細な説明を省略する。
【0037】図5(A)及び(B)は、前記アルゴリズ
ムにおける繰り返し処理の一つの回において、数Bの一
つの桁biに対して、演算 m=(t0+a0×bi)×n’ mod r T=(T+A×bi+N×m)/r を行う場合に、演算回路200が行う処理手順400の
前半部及び後半部を、それぞれ一例として示している。
【0038】両図において、行401はタイミングクロ
ックを基準とした経過時間、行402はMUX1の出
力、行403はMUX2の出力、行404は乗算回路2
85の乗算結果PHL、行405はRHレジスタの内
容、行406はRCレジスタの内容、行407はTレジ
スタの出力、行408は加算回路288の加算結果S、
行409は加算回路288から生じた桁上がりCout
行410はRMレジスタの内容、行411は直前のクロ
ックにおける加算結果Sを記憶するレジスタ250の桁
を、それぞれタイミングクロック毎に示している。
【0039】以下、処理手順400を詳細に説明する。 (1)処理手順400の第1及び第2クロックにおい
て、演算回路200は、次のようにして数mを算出す
る。第1クロックの開始時に、RHレジスタ、RCレジ
スタ及びRMレジスタは、制御回路290からの制御信
号によりφにリセットされる。
【0040】第1クロックにおいて、Aレジスタは、制
御回路290から入力された制御信号に従って桁a0
MUX1へ出力し、MUX1は、前記桁a0を選択して
乗算回路285へ出力する。Bレジスタは、桁biをM
UX2へ出力し、MUX2は、前記桁biを選択して乗
算回路285へ出力する。乗算回路285は、a0×bi
(→x0)の乗算を行う。Tレジスタは、制御回路29
0から入力された制御信号に従って桁t0を加算回路2
88へ出力し、加算回路288は、乗算結果の下位桁x
0 L、RHレジスタの内容φ、及びTレジスタから入力さ
れた桁t0を、RCレジスタの内容φと共に加算し、加
算結果(t0+x0 L)を算出する。
【0041】第2クロックの開始時に、RMレジスタ
は、第1クロックにおける加算結果(t0+x0 L)を記
憶する。第2クロックにおいて、MUX1は、レジスタ
240に記憶されている数n’を選択し、MUX2は、
RMレジスタに記憶されている(t0+x0 L)を選択
し、乗算回路285は、(t0+x0 L)×n’の乗算を
行う。Tレジスタは、出力を抑制するための制御信号を
制御回路290から入力されることにより値φを加算回
路288へ出力し、加算回路288は、加算結果(t0
+x0 L)×n’を出力する。この加算結果は(t0+a0
×bi)×n’の下位1桁を抽出した値であり、すなわ
ち、前記数mである。
【0042】第3クロックの開始時に、RMレジスタ
は、第2クロックにおいて算出された数mを記憶する。 (2)第3クロックから第9クロックにおいて、演算回
路200は、次のようにしてT+N×mを算出し、算出
された結果でTレジスタを更新する。第3クロックにお
いて、Nレジスタは、制御回路290から入力された制
御信号に従って桁n0をMUX1へ出力し、MUX1
は、前記桁n0を選択して乗算回路285へ出力する。
MUX2は、RMレジスタに記憶されている数mを選択
して乗算回路285へ出力する。
【0043】乗算回路285は、n0×m(→y0)の乗
算を行う。Tレジスタは、制御回路290から入力され
た制御信号に従って桁t0を加算回路288へ出力し、
加算回路288は、乗算結果の下位桁y0 L、RHレジス
タの内容φ、及びTレジスタから入力された桁t0を、
RCレジスタの内容φと共に加算し、加算結果(t0
0 L)及び桁上がりc0を算出する。
【0044】第4クロックの開始時に、Tレジスタは、
第3クロックにおける加算結果(t 0+y0 L)で、制御
回路290からの制御信号により指定された桁t0を更
新し、RCレジスタは桁上がりc0を記憶し、RHレジ
スタは、第3クロックにおける乗算結果の上位桁y0 H
記憶する。第4クロックから第7クロックまで、それぞ
れ桁n1、n2、n3、n4に対し同様の処理を繰り返し、
第5クロックから第8クロックの開始時に、Tレジスタ
は、それぞれの加算結果で桁t1、t2、t3、t4を更新
する。
【0045】(3)第8クロックにおいて、Nレジスタ
は、出力を抑制するための制御信号を制御回路290か
ら入力されることにより値φをMUX1へ出力し、MU
X1は、前記φを選択して乗算回路285へ出力し、乗
算回路285は、乗算結果φを算出する。Tレジスタ
は、制御回路290から入力された制御信号に従って桁
5を加算回路288へ出力し、加算回路288は、乗
算結果の下位桁φ、RHレジスタに記憶されている第7
クロックにおける乗算結果の上位桁y4 H、及びTレジス
タから入力された桁t5を、RCレジスタに記憶されて
いる第7クロックにおける桁上がりc4と共に加算し、
加算結果(t5+y4 H+c4)及び桁上がりc5を算出す
る。
【0046】第9クロックの開始時に、Tレジスタは、
第8クロックにおける加算結果(t 5+y4 H+c4)で、
制御回路290からの制御信号により指定された桁t5
を更新し、RCレジスタは桁上がりc5を記憶し、RH
レジスタは、第8クロックにおける乗算結果の上位桁φ
を記憶する。第9クロックにおいて、乗算回路285
は、引き続き、乗算結果φを算出する。Tレジスタはφ
を加算回路288へ出力し、加算回路288は、加算結
果c5を算出する。
【0047】第10クロックの開始時に、Tレジスタ
は、第9クロックにおける加算結果c 5で、制御回路2
90からの制御信号により指定された桁t6を更新す
る。ここまでの処理により、Tレジスタは演算結果(T
+N×m)で更新される。 (4)第10クロックから第16クロックにおいて、演
算回路200は、第10クロックの開始時までに更新さ
れたTレジスタの値Tに対し、次のようにして(T+A
×bi)/rを算出し、算出された結果でTレジスタを
更新する。
【0048】第10クロックの開始時に、RHレジス
タ、RCレジスタ及びRMレジスタは、制御回路290
からの制御信号によりφにリセットされる。第10クロ
ックにおいて、Aレジスタは、制御回路290から入力
された制御信号に従って桁a0をMUX1へ出力し、M
UX1は、前記桁a0を選択して乗算回路285へ出力
する。Bレジスタは、制御回路290から入力された制
御信号に従って桁biをMUX2へ出力し、MUX2
は、前記桁biを選択して乗算回路285へ出力する。
【0049】乗算回路285は、a0×bi(→x0)の
乗算を行う。Tレジスタは、制御回路290から入力さ
れた制御信号に従って桁t0を加算回路288へ出力
し、加算回路288は、乗算結果の下位桁x0 L、RHレ
ジスタの内容φ、及びTレジスタから入力された桁t0
を、RCレジスタの内容φと共に加算し、加算結果(t
0+x0 L)及び桁上がりc0を算出する。
【0050】第11クロックの開始時に、RCレジスタ
は桁上がりc0を記憶し、RHレジスタは、第10クロ
ックにおける乗算結果の上位桁x0 Hを記憶する。このと
き、Tレジスタは、第10クロックにおける加算結果を
記憶しない。第11クロックにおいて、Aレジスタは、
桁a1をMUX1へ出力し、MUX1は、前記桁a0を選
択して乗算回路285へ出力する。Bレジスタは、桁b
iをMUX2へ出力し、MUX2は、前記桁biを選択し
て乗算回路285へ出力する。
【0051】乗算回路285は、a1×bi(→x1)の
乗算を行う。Tレジスタは、桁t1を加算回路288へ
出力し、加算回路288は、乗算結果の下位桁x1 L、R
Hレジスタの内容x0 H、及びTレジスタから入力された
桁t1を、RCレジスタの内容c0と共に加算し、加算結
果(t1+x1 L+x0 H+c0)及び桁上がりc1を算出す
る。
【0052】第12クロックの開始時に、RCレジスタ
は桁上がりc1を記憶し、RHレジスタは、第11クロ
ックにおける乗算結果の上位桁x1 Hを記憶する。Tレジ
スタは、第11クロックにおける加算結果(t1+x1 L
+x0 H+c0)で、制御回路290からの制御信号によ
り指定された桁t0を更新する。ここで、数T及び数A
のそれぞれの第1桁t1及びa1に対して算出された桁に
より、数Tの第0桁t0を更新している。この処理は、
1桁の右シフト処理であり、rによる除算を行っている
ものである。
【0053】以降、処理手順400の第12クロックか
ら第16クロックまでの各例に示したように、数の選択
及び演算を行い、第13クロックから第17クロックの
開始時にレジスタの更新を行うことにより、第1クロッ
クにおけるTレジスタの値Tに対し演算結果(T+A×
i+N×m)/rで、Tレジスタが更新される。 (第2のまとめ)上記説明したように、第2の実施の形
態における演算回路200は、主要部において第1の実
施の形態における演算回路100と同一の構成を有し、
モンゴメリ乗算アルゴリズムに従って乗算剰余演算を実
行する。
【0054】演算回路200において用いられる加算回
路288は、第1の実施の形態と同様、最大kビットで
表される入力値を加算すれば足りるため、2kビットの
入力値を加算する加算回路を必要とする従来の演算回路
の構成に比べ、回路規模の縮小が達成される。また、加
算回路におけるキャリー伝播遅延ビット数が減少するこ
とにより、従来の演算回路に比べて高速な処理が可能と
なる。 (第3の実施の形態)第3の実施の形態における演算回
路は、第2の実施の形態における演算回路と同様、前述
したモンゴメリ乗算アルゴリズムに従って乗算剰余演算
を実行する。 (全体構成)図6は、第3の実施の形態における演算回
路の全体構成を示すブロック図である。
【0055】演算回路700は、レジスタ710、レジ
スタ720、レジスタ730、レジスタ740、マルチ
プレクサ760、マルチプレクサ770、マルチプレク
サ775、乗算回路781、乗算回路782、レジスタ
783、レジスタ784、レジスタ785、加算回路7
86、レジスタ787、レジスタ750、及び制御回路
290から構成される。
【0056】レジスタ710(以降、Nレジスタと称す
る)は、数Nを記憶しており、制御回路790からの制
御信号に従って数Nの各桁niを順次マルチプレクサ7
75に出力する。レジスタ720(以降、Aレジスタと
称する)は、数Aを記憶しており、制御回路790から
の制御信号に従って数Aの各桁aiを順次マルチプレク
サ760に出力する。レジスタ730(以降、Bレジス
タと称する)は、数Bを記憶しており、制御回路790
からの制御信号に従って数Bの各桁biを順次マルチプ
レクサ770に出力する。レジスタ740は、数n’を
記憶しており、数n’をマルチプレクサ770及びマル
チプレクサ775に出力する。
【0057】マルチプレクサ760は、制御回路790
からの制御信号に従ってai及びレジスタ750の出力
の何れかを選択し、乗算回路781に順次出力する。マ
ルチプレクサ770は、制御回路790からの制御信号
に従ってbi及びn’の何れかを選択し、乗算回路78
1に順次出力する。マルチプレクサ770は、制御回路
790からの制御信号に従ってni及びn’の何れかを
選択し、乗算回路782に出力する。
【0058】乗算回路781は、マルチプレクサ760
(以降、MUX1と称する)の出力と、マルチプレクサ
770(以降、MUX2と称する)の出力とを乗じて2
桁の乗算結果を算出し、前記乗算結果の下位桁を加算回
路786に順次出力し、上位桁をレジスタ783に順次
出力する。レジスタ783は、乗算回路781から次の
上位桁が出力される直前に出力されている上位桁を記憶
し、加算回路786に出力する。これにより、レジスタ
783(以降、RH1レジスタと称する)は前記上位桁
を遅延して出力するため、加算回路786には、乗算結
果の下位桁と、前回の乗算結果の上位桁とが入力され
る。
【0059】乗算回路782は、マルチプレクサ775
(以降、MUX3と称する)の出力と、レジスタ787
の内容とを乗じて2桁の乗算結果を算出し、前記乗算結
果の下位桁を加算回路786に順次出力し、上位桁をレ
ジスタ784に順次出力する。レジスタ784は、乗算
回路782から次の上位桁が出力される直前に出力され
ている上位桁を記憶し、加算回路786に出力する。こ
れにより、レジスタ784(以降、RH2レジスタと称
する)は前記上位桁を遅延して出力するため、加算回路
786には、乗算結果の下位桁と、前回の乗算結果の上
位桁とが入力される。
【0060】加算回路786は、乗算回路781の乗算
結果の下位桁及び前回の上位桁、乗算回路782の乗算
結果の下位桁及び前回の上位桁、並びにレジスタ750
からの入力を、レジスタ785に記憶されている前回の
加算から生じた桁上がりと共に順次加算し、3ビットで
表される新たな桁上がり値と、1桁の和とからなる加算
結果を算出する。
【0061】レジスタ785(以降、RCレジスタと称
する)は、算出された新たな桁上がり値を記憶する。レ
ジスタ750(以降、Tレジスタと称する)は、算出さ
れた和を、制御回路790からの制御信号により指示さ
れる桁に順次記憶し、かつ、制御回路790からの制御
信号により指示される桁を加算回路786、及びMUX
1に出力する。
【0062】制御回路790は、前述した各構成要素に
対しタイミングクロック及び選択信号を含む制御信号を
出力することにより、前述の動作を進行させる。加算回
路786は、kビットで表された5つの入力と3ビット
のキャリーとを加算する6入力加算回路であり、例えば
2入力加算回路を5段接続することにより構成できる。
多入力加算回路は、従来広く知られた技術を用いて構成
できるため、ここでは詳細な説明を省略する。
【0063】図7は、前記アルゴリズムにおける繰り返
し処理の一つの回において、数Bの一つの桁biに対し
て、演算 m=(t0+a0×bi)×n’ mod r T=(T+A×bi+N×m)/r を行う場合に演算回路700が行う処理手順800を、
一例として示している。
【0064】同図において、行801はタイミングクロ
ックを基準とした経過時間、行802はMUX1の出
力、行803はMUX2の出力、行804は乗算回路7
81の乗算結果、行805はRH1レジスタの内容、行
806はMUX3の出力、行807は乗算回路782の
乗算結果、行808はRH2レジスタの内容、行809
はRCレジスタの内容、行810はTレジスタの出力、
行811は加算回路288の加算結果S、行812は加
算回路288から生じた桁上がりCout、行813はR
Mレジスタの内容、行814は直前のクロックにおける
加算結果Sを記憶するTレジスタの桁を、それぞれタイ
ミングクロック毎に示している。
【0065】以下、処理手順800を詳細に説明する。 (1)処理手順800の第1及び第2クロックにおい
て、演算回路700は、次のようにして数mを算出す
る。第1クロックの開始時に、RH1レジスタ、RH2
レジスタ、RCレジスタ及びRMレジスタは、制御回路
790からの制御信号によりφにリセットされる。
【0066】第1クロックにおいて、Aレジスタは、制
御回路790から入力された制御信号に従って桁a0
MUX1へ出力し、MUX1は、前記桁a0を選択して
乗算回路781へ出力する。Bレジスタは、桁biをM
UX2へ出力し、MUX2は、前記桁biを選択して乗
算回路781へ出力する。乗算回路781は、a0×bi
(→x0)の乗算を行う。MUX3は、出力を抑制する
ための制御信号を制御回路790から入力されることに
より値φを乗算回路782へ出力し、乗算回路782
は、乗算結果φを算出する。
【0067】Tレジスタは、出力を抑制するための制御
信号を制御回路790から入力されることにより値φを
加算回路786へ出力し、加算回路786は、乗算回路
781の乗算結果の下位桁x0 L、RH1レジスタの内容
φ、乗算回路782の乗算結果の下位桁φ、RH2レジ
スタの内容φ、及びTレジスタから入力された値φを、
RCレジスタの内容φと共に加算し、加算結果x0 Lを算
出する。
【0068】第2クロックの開始時に、RMレジスタ
は、第1クロックにおける加算結果x 0 Lを記憶する。第
2クロックにおいて、Tレジスタは、制御回路790か
らの制御信号に従って桁t0をMUX1へ出力し、MU
X1は、Tレジスタから入力された桁t0を選択して乗
算回路781へ出力する。MUX2は、レジスタ740
に記憶されている数n’を選択し乗算回路781へ出力
する。乗算回路781は、t0×n’の乗算を行う。M
UX3は、レジスタ740に記憶されている数n’を選
択して乗算回路782へ出力し、乗算回路782は、
n’とRMレジスタの内容x0 Lとの乗算を行う。
【0069】加算回路786は、乗算回路781の乗算
結果の下位桁(t0×n’)Lと乗算回路782の乗算結
果の下位桁(x0 L×n’)Lとを加算し、加算結果
((t0+x0 L)×n’)Lを出力する。この加算結果は
(t0+a0×bi)×n’の下位1桁を抽出した値であ
り、すなわち、前記数mである。第3クロックの開始時
に、RMレジスタは、第2クロックにおいて算出された
数mを記憶する。
【0070】(2)第3クロックから第9クロックにお
いて、演算回路700は、次のようにして(T+A×b
i+N×m)/rを算出し、算出された結果でTレジス
タを更新する。第3クロックにおいて、Aレジスタは、
制御回路790から入力された制御信号に従って桁a0
をMUX1へ出力し、MUX1は、前記桁a0を選択し
て乗算回路781へ出力する。Bレジスタは、制御回路
790から入力された制御信号に従って桁biをMUX
2へ出力し、MUX2は、前記桁biを選択して乗算回
路781へ出力する。Nレジスタは、制御回路790か
ら入力された制御信号に従って桁n0をMUX3へ出力
し、MUX3は、前記桁n0を選択して乗算回路782
へ出力する。
【0071】乗算回路781は、a0×bi(→x0)、
乗算回路782は、n0×m(→y0)の乗算を実行す
る。Tレジスタは、制御回路790から入力された制御
信号に従って桁t0を加算回路786へ出力し、加算回
路786は、乗算回路781の乗算結果の下位桁x0 L
及びRM1レジスタに記憶されているφ、乗算回路78
2の乗算結果の下位桁y0 L、及びRM2レジスタに記憶
されているφ、並びにTレジスタから入力された桁t0
を、RCレジスタの内容φと共に加算し、加算結果(t
0+x0 L+y0 L)及び桁上がりc0を算出する。
【0072】第4クロックの開始時に、RCレジスタは
第3クロックにおいて生じた桁上がりc0を記憶し、R
H1レジスタは、乗算回路781の第3クロックにおけ
る乗算結果の上位桁x0 Hを記憶し、RH2レジスタは、
乗算回路782の第3クロックにおける乗算結果の上位
桁y0 Hを記憶する。このとき、Tレジスタは、第3クロ
ックにおける加算結果を記憶しない。
【0073】第4クロックにおいて、Aレジスタは、桁
1をMUX1へ出力し、MUX1は、前記桁a0を選択
して乗算回路781へ出力する。Bレジスタは、桁bi
をMUX2へ出力し、MUX2は、前記桁biを選択し
て乗算回路781へ出力する。Nレジスタは、桁n1
MUX3へ出力し、MUX3は、前記桁n1を選択して
乗算回路782へ出力する。
【0074】乗算回路781は、a1×bi(→x1)、
乗算回路782は、n1×m(→y1)の乗算を実行す
る。Tレジスタは、制御回路790から入力された制御
信号に従って桁t1を加算回路786へ出力し、加算回
路786は、乗算回路781の乗算結果の下位桁x1 L
及びRM1レジスタに記憶されているx0 H、乗算回路7
82の乗算結果の下位桁y1 L、及びRM2レジスタに記
憶されているy0 H、並びにTレジスタから入力された桁
1を、RCレジスタに記憶されているc0と共に加算
し、加算結果(t1+x1 L+y1 L+x0 H+y0 H+c0)及
び桁上がりc1を算出する。
【0075】第5クロックの開始時に、RCレジスタは
第4クロックにおいて生じた桁上がりc1を記憶し、R
H1レジスタは、乗算回路781の第4クロックにおけ
る乗算結果の上位桁x1 Hを記憶し、RH2レジスタは、
乗算回路782の第4クロックにおける乗算結果の上位
桁y1 Hを記憶する。Tレジスタは、第4クロックにおけ
る加算結果(t1+x1 L+y1 L+x0 H+y0 H+c0)で、
制御回路790からの制御信号により指定された桁t0
を更新する。
【0076】ここで、数T、数A及び数Nのそれぞれの
第1桁t1、a1及びn1に対して算出された桁により、
数Tの第0桁t0を更新している。この処理は、1桁の
右シフト処理であり、rによる除算を行っているもので
ある。以降、処理手順800に示したように、第5クロ
ックから第9クロックまで、数の選択、演算を行い、第
6クロックから第10クロックの開始時にレジスタの更
新を行うことにより、第1クロックにおけるTレジスタ
の値Tに対し演算結果(T+A×bi+N×m)/r
が、Tレジスタに求まる。 (第3のまとめ)上記説明したように、第3の実施の形
態における演算回路700は、主要部において第1の実
施の形態における演算回路100と同一の構成を有し、
モンゴメリ乗算アルゴリズムに従って乗算剰余演算を実
行する。
【0077】演算回路700において用いられる加算回
路786は、第1の実施の形態と同様、最大kビットで
表される入力値を加算すれば足りるため、2kビットの
入力値を加算する加算回路を必要とする従来の演算回路
の構成に比べ、回路規模の縮小が達成される。また、加
算回路におけるキャリー伝播遅延ビット数が減少するこ
とにより、従来の演算回路に比べて高速な処理が可能と
なる。 (その他の変形例)なお、本発明を上記の実施の形態に
基づいて説明してきたが、本発明は、上記の実施の形態
に限定されないのはもちろんである。以下のような場合
も本発明に含まれる。 (1)第2の実施の形態において、マルチプレクサ28
2は、制御回路290からの制御信号に従ってbi及び
レジスタ289の出力の何れかを選択し、乗算回路28
5に出力するとしたが、前記bi及びレジスタ289の
出力、並びにTレジスタから入力される桁tiの何れか
を選択し、乗算回路285に出力してもよい。
【0078】図8は、この構成による演算回路201の
ブロック図を示している。この構成によれば、前述した
モンゴメリ乗算アルゴリズムにおける計算量を削減した
アルゴリズムである、修正モンゴメリ乗算アルゴリズム
に従って乗算剰余演算を実行することができる。修正モ
ンゴメリ乗算アルゴリズムは、Tを次のように算出す
る。
【0079】 T=0 for i=0 to h−1{ T=T+A×bi m=t0×n’ mod r T=(T+N×m)/r } if T≧N then T=T−N return(T) なお、修正モンゴメリ乗算アルゴリズムの詳細につい
て、文献(3) S.R. Dusse,B.S. Kaliski Jr., “A cryp
tographic library for the Motorola DSP 56000”, Ad
vances in Cryptology EUROCRYPT ’90, 230-244, 1991
に述べられているため、ここでは説明を省略する。
【0080】図9(A)及び(B)は、前記アルゴリズ
ムにおける繰り返し処理の一つの回において、数Bの一
つの桁biに対して、演算 T=T+A×bi m=t0×n’ mod r T=(T+N×m)/r を行う場合に、演算回路201が行う処理手順600の
前半部及び後半部を、それぞれ一例として示している。
【0081】両図において、行601はタイミングクロ
ックを基準とした経過時間、行602はMUX1の出
力、行603はMUX2の出力、行604は乗算回路2
85の乗算結果PHL、行605はRHレジスタの内
容、行606はRCレジスタの内容、行607はTレジ
スタの出力、行608は加算回路288の加算結果S、
行609は加算回路288から生じた桁上がりCout
行610はRMレジスタの内容、行611は直前のクロ
ックにおける加算結果Sを記憶するレジスタ250の桁
を、それぞれタイミングクロック毎に示している。
【0082】以下、処理手順600について、前述の処
理手順800の説明と重複する事項は省略し、異なる点
について説明する。演算回路201は、処理手順600
の第1クロックから第6クロックの各列に示したよう
に、数の選択及び演算を行い、第2クロックから第7ク
ロックの開始時にレジスタの更新を行うことにより、第
1クロックにおけるTレジスタの値Tに対し、演算結果
(T+A×bi)でTレジスタを更新する。
【0083】第7クロックにおいて、MUX1は、レジ
スタ240に記憶されている数n’を選択し、Tレジス
タは制御回路290から入力された制御信号に従って桁
0をMUX2へ出力し、MUX2は、前記桁t0を選択
し、乗算回路285は、(t0×n’)の乗算を行う。
RCレジスタ及びRHレジスタは、値φを記憶してい
る。加算回路288は、乗算結果(t0×n’)の下位
桁を抽出するため、前記数mが算出される。
【0084】第8クロックの開始時に、RMレジスタ
は、第7クロックにおいて算出された数mを記憶する。
演算回路201は、処理手順600の第8クロックから
第14クロックの各列に示したように、数の選択及び演
算を行い、第9クロックから第15クロックの開始時に
レジスタの更新を行うことにより、第8クロックにおけ
るTレジスタの値Tに対し、演算結果(T+N×m)/
rでTレジスタを更新する。
【0085】上記説明したように、演算回路201は、
修正モンゴメリ乗算アルゴリズムに従って、繰り返し処
理の1回あたり14クロックで乗算剰余演算を実行する
ことができる。繰り返し処理の1回あたり16クロック
で前記演算を実行する演算回路200に比べ、より高速
に前記演算を行うことができる。 (2)第2の実施の形態において、一例として、2入力
加算回路を3段接続することにより加算回路288を構
成するとしたが、4入力キャリーセーブアダー回路を用
いて構成してもよい。また、第3の実施の形態におい
て、一例として、2入力加算回路を5段接続することに
より加算回路786を構成するとしたが、6入力キャリ
ーセーブアダー回路を用いて構成してもよい。
【0086】多入力キャリーセーブアダー回路の詳細に
ついて、文献(4) 堀越彌訳,HWANG“コンピュータの高
速演算方式”,近代科学社,1980,p.98-128に述べられ
ているため、ここでは説明を省略する。多入力キャリー
セーブアダー回路は、2入力加算回路を多段接続して構
成される多入力加算回路と比較して(1)小規模な回路
で実現でき(2)キャリー伝播遅延を減少できる特徴を
有する。回路規模の縮小比は、3つの32ビット値を加
算する回路で約82%、4つの32ビット値を加算する
回路で約77%、6つの32ビット値を加算する回路で
約72%である。
【0087】従って、本発明の演算回路における加算回
路を、多入力キャリーセーブアダー回路を用いて構成す
ることにより、回路規模の縮小効果、及び動作速度の向
上効果をさらに高めることができる。図10は、多入力
キャリーセーブアダーの回路例として、3入力キャリー
セーブアダー回路を示している。
【0088】
【発明の効果】(1)本発明の演算回路は、複数桁から
なる数Aと1桁の数bとの乗算において、前記数Aの1
つの桁aと前記数bとの積を用いて数(A×b)の1つ
の桁dを算出する演算回路であって、1桁の数を記憶し
ている第1レジスタと、1ビットの数を記憶している第
2レジスタと、前記桁aと前記数bとを乗じて2桁から
なる積を算出する乗算回路と、前記算出された積の下1
桁と、前記第1レジスタの内容と、前記第2レジスタの
内容とを加算することにより、前記桁dと1ビットの桁
上がり値とを算出する加算回路とを備え、前記第1レジ
スタは、初期値として0を保持し、前記加算回路による
加算が行われた場合に、前記算出された積の上1桁を記
憶し、前記第2レジスタは、初期値として0を保持し、
前記算出された桁上がり値を記憶することを特徴とす
る。
【0089】この構成によれば、前記加算回路は、1桁
の2数を加算する2入力加算回路により実現できるた
め、2桁の数を含む2数を加算する2入力加算回路を必
要とする従来の演算回路の構成に比べて、回路規模の縮
小が達成される。また同時に、キャリー伝播遅延が減少
するため、処理速度が向上する。 (2)また、前記(1)の演算回路において、前記各桁
はkビット(kは正整数)で表され、前記第1レジスタ
は、kビットで表された前記1桁の数を記憶し、前記乗
算回路は、kビットで表された前記桁aと、kビットで
表された前記数bとを乗じて、2kビットで表された前
記積を算出し、前記加算回路は、前記積の下kビット
と、前記第1レジスタに記憶されているkビット値と、
前記第2レジスタに記憶されている1ビット値とを加算
することにより、kビットで表された前記桁dと1ビッ
トの桁上がり値とを算出してもよい。
【0090】この構成によれば、前記演算回路は、従来
の構成による演算回路に対して、具体的に、1ビットの
桁上がり値を記憶するレジスタ、及び、1個のフルアダ
ーが追加され、k+1個のハーフアダーが削減されて構
成される。一実装例としてk=32とした場合、削減さ
れる回路規模が、追加される回路規模を上回り、本発明
の演算回路によって回路規模の縮小が達成される。また
同時に、キャリー伝播遅延が、従来の演算回路の(2k
−1)ビットから、本発明の演算回路において(k−
1)ビットに減少するため、処理速度が向上する。
【0091】処理速度が重視される実装例では、kをさ
らに大きくとった大規模な回路を用いることにより高速
動作を実現する。この場合、本発明の演算回路を用いる
ことによる回路規模の縮小効果、及び処理速度の向上効
果は一層高まる。 (3)本発明の演算回路は、複数桁からなる数T、数
A、及び数N、並びに1桁の数b及び数mに対する演算
(T+A×b+N×m)において、前記数Aの1つの桁
と前記数bとの積、及び前記数Nの1つの桁と前記数m
との積を用いて数(T+A×b+N×m)の1つの桁d
を算出する演算回路であって、数A及び数Nの何れかを
選択する第1選択回路と、数b及び数mの何れかを選択
する第2選択回路と、1桁の数を記憶している第1レジ
スタと、2ビットの数を記憶している第2レジスタと、
複数桁からなる数を桁毎に記憶している第3レジスタ
と、前記第1選択回路により選択された数の1つの桁
と、前記第2選択回路により選択された1桁の数とを乗
じて、2桁からなる積を算出する乗算回路と、前記算出
された積の下1桁と、前記第1レジスタの内容と、前記
第2レジスタの内容と、前記乗算された桁と同一の桁位
置において前記第3レジスタに記憶されている1つの桁
とを加算することにより、前記桁dと2ビットの桁上が
り値とを算出する加算回路とを備え、前記第1レジスタ
は、初期値として0を保持し、前記加算回路による加算
が行われた場合に、前記算出された積の上1桁を記憶
し、前記第2レジスタは、初期値として0を保持し、前
記算出された桁上がり値を記憶し、前記第3レジスタ
は、初期値として数Tを保持し、前記加算回路により加
算された桁を、前記加算回路の加算結果により更新し、
前記加算回路は、前記第1選択回路により前記数Aが選
択され、かつ前記第2選択回路により前記数bが選択さ
れている場合に、前記加算を行うことにより、数(T+
A×b)の1つの桁を算出し、その後、前記第1選択回
路により前記数Nが選択され、かつ前記第2選択回路に
より前記数mが選択されている場合に、前記加算を行う
ことにより、前記桁dを算出することを特徴とする。
【0092】この構成によれば、前記加算回路は、1桁
の3数とけた上がり値とを加算する4入力加算回路によ
り実現できるため、2桁の数を含む4数を加算する4入
力加算回路を必要とする従来の演算回路の構成に比べ
て、回路規模の縮小が達成される。また同時に、キャリ
ー伝播遅延が減少するため、処理速度が向上する。 (4)また、前記(3)の演算回路において、前記各桁
はkビット(kは正整数)で表され、前記第1レジスタ
は、kビットで表された前記1桁の数を記憶し、前記乗
算回路は、前記第1選択回路により選択されkビットで
表された前記桁と、前記第2選択回路により選択されk
ビットで表された前記桁とを乗じて、2kビットで表さ
れた前記積を算出し、前記加算回路は、前記積の下kビ
ットと、前記第1レジスタに記憶されているkビット値
と、前記第2レジスタに記憶されている1ビット値と、
前記第3レジスタに記憶されているkビットで表された
1つの桁とを加算することにより、kビットで表された
加算結果と2ビットの桁上がり値とを算出してもよい。
【0093】この構成によれば、前記(3)と同様の効
果が得られる。 (5)また、前記(3)の演算回路において、前記加算
回路は、さらに、前記数mを算出し、前記演算回路は、
さらに、前記加算回路により算出された数mを記憶する
第4レジスタを備え、前記第2選択回路は、前記数b及
び前記第4レジスタに記憶されている数mの何れかを選
択してもよい。
【0094】この構成によれば、前記(3)と同様の効
果が得られるのみならず、前記加算回路は、モンゴメリ
乗算アルゴリズムに従って乗算剰余演算を実行する場合
に必要な数mを算出し、記憶し、前記乗算回路に供給す
るため、前記乗算剰余演算を特に効率よく実行できる。 (6)本発明の演算回路は、複数桁からなる数T、数
A、及び数N、並びに1桁の数b及び数mに対する演算
(T+A×b+N×m)において、前記数Aの1つの桁
aと前記数bとの積、及び前記数Nの1つの桁nと前記
数mとの積を用いて数(T+A×b+N×m)の1つの
桁dを算出する演算回路であって、前記桁aと前記数b
とを乗じて2桁からなる第1積を算出する第1乗算回路
と、前記桁aと同一の桁位置にある前記数Nの桁nと、
前記数mとを乗じて2桁からなる第2積を算出する第2
乗算回路と、1桁の数を記憶している第1レジスタと、
1桁の数を記憶している第2レジスタと、3ビットの数
を記憶している第3レジスタと、前記算出された第1積
の下1桁と、前記第1レジスタの内容と、前記算出され
た第2積の下1桁と、前記第2レジスタの内容と、前記
第3レジスタの内容と、前記桁aと同一の桁位置にある
前記数Tの桁とを加算することにより、前記桁dと3ビ
ットの桁上がり値とを算出する加算回路とを備え、前記
第1レジスタは、初期値として0を保持し、前記加算回
路による加算が行われた場合に、前記算出された第1積
の上1桁を記憶し、前記第2レジスタは、初期値として
0を保持し、前記加算回路による加算が行われた場合
に、前記算出された第2積の上1桁を記憶し、前記第3
レジスタは、初期値として0を保持し、前記算出された
桁上がり値を記憶することを特徴とする。
【0095】この構成によれば、前記加算回路は、1桁
の5数とけた上がり値とを加算する6入力加算回路によ
り実現できるため、2桁の数を含む6数を加算する6入
力加算回路を必要とする従来の演算回路の構成に比べ
て、回路規模の縮小が達成される。また同時に、キャリ
ー伝播遅延が減少するため、処理速度が向上する。 (7)また、前記(6)の演算回路において、前記各桁
はkビット(kは正整数)で表され、前記第1レジスタ
は、kビットで表された前記1桁の数を記憶し、前記第
2レジスタは、kビットで表された前記1桁の数を記憶
し、前記第1乗算回路は、kビットで表された前記桁a
と、kビットで表された前記数bとを乗じて、2kビッ
トで表された前記第1積を算出し、前記第2乗算回路
は、kビットで表された前記桁nと、kビットで表され
た前記数mとを乗じて、2kビットで表された前記第2
積を算出し、前記加算回路は、前記第1積の下kビット
と、前記第1レジスタに記憶されているkビット値と、
前記第2積の下kビットと、前記第2レジスタに記憶さ
れているkビット値と、前記第3レジスタに記憶されて
いる3ビット値と、前記数Tのkビットで表された1つ
の桁とを加算することにより、kビットで表された前記
桁dと3ビットの桁上がり値とを算出してもよい。
【0096】この構成によれば、前記(6)と同様の効
果が得られる。 (8)本発明の演算回路は、また、前記(6)の演算回
路において、前記加算回路は、さらに、前記数mを算出
し、前記演算回路は、さらに、前記加算回路により算出
された数mを記憶する第4レジスタを備え、前記第2乗
算回路は、前記桁nと、前記第4レジスタに記憶されて
いる数mとを乗算してもよい。
【0097】この構成によれば、前記(6)と同様の効
果が得られるのみならず、前記加算回路は、モンゴメリ
乗算アルゴリズムに従って乗算剰余演算を実行する場合
に必要な数mを算出し、記憶し、前記乗算回路に供給す
るため、前記乗算剰余演算を特に効率よく実行できる。 (9)本発明の演算方法は、複数桁からなる数Aと1桁
の数bとの乗算において、前記数Aの1つの桁aと前記
数bとの積を用いて数(A×b)の1つの桁dを算出す
る演算方法であって、1桁の数を記憶する第1記憶ステ
ップと、1ビットの数を記憶する第2記憶ステップと、
前記桁aと前記数bとを乗じて2桁からなる積を算出す
る乗算ステップと、前記算出された積の下1桁と、前記
第1記憶ステップにおいて記憶された数と、前記第2記
憶ステップにおいて記憶された数とを加算することによ
り、前記桁dと1ビットの桁上がり値とを算出する加算
ステップとを有し、前記第1記憶ステップは、初期値と
して0を記憶し、前記加算ステップによる加算が行われ
た場合に、前記算出された積の上1桁を記憶し、前記第
2記憶ステップは、初期値として0を記憶し、前記算出
された桁上がり値を記憶することを特徴とする。
【0098】この構成によれば、前記(1)と同様の効
果を有する演算方法を提供できる。 (10)本発明の記録媒体は、複数桁からなる数Aと1
桁の数bとの乗算において、前記数Aの1つの桁aと前
記数bとの積を用いて数(A×b)の1つの桁dを算出
する演算回路を制御するプログラムを記憶しているコン
ピュータ読取り可能な記録媒体であって、前記プログラ
ムは、1桁の数を記憶する第1記憶ステップと、1ビッ
トの数を記憶する第2記憶ステップと、前記桁aと前記
数bとを乗じて2桁からなる積を算出する乗算ステップ
と、前記算出された積の下1桁と、前記第1記憶ステッ
プにおいて記憶された数と、前記第2記憶ステップにお
いて記憶された数とを加算することにより、前記桁dと
1ビットの桁上がり値とを算出する加算ステップとを有
し、前記第1記憶ステップは、初期値として0を記憶
し、前記加算ステップによる加算が行われた場合に、前
記算出された積の上1桁を記憶し、前記第2記憶ステッ
プは、初期値として0を記憶し、前記算出された桁上が
り値を記憶することを特徴とする。
【0099】この構成によれば、前記(1)と同様の効
果を有するプログラムを記録した記録媒体を提供でき
る。
【図面の簡単な説明】
【図1】第1の実施の形態における演算回路の全体構成
を示すブロック図である。
【図2】加算回路184の構成の一具体例を示してい
る。
【図3】演算回路100における処理手順510を示し
ている。
【図4】第2の実施の形態における演算回路の全体構成
を示すブロック図である。
【図5】(A)演算回路200が行う処理手順400の
前半部を示している。 (B)演算回路200が行う処理手順400の後半部を
示している。
【図6】第3の実施の形態における演算回路の全体構成
を示すブロック図である。
【図7】演算回路700が行う処理手順800を示して
いる。
【図8】演算回路201のブロック図を示している。
【図9】(A)演算回路201が行う処理手順600の
前半部を示している。 (B)演算回路201が行う処理手順600の後半部を
示している。
【図10】3入力キャリーセーブアダー回路を示してい
る。
【図11】従来の演算回路900のブロック図を示して
いる。
【図12】加算回路984の構成の一具体例を示してい
る。
【図13】演算回路900における処理手順550を示
している。
【図14】筆算により乗算を行った場合を示す模式図で
ある。
【符号の説明】
100 演算回路 110〜140 レジスタ 181 乗算回路 182〜183 レジスタ 184 加算回路 190 制御回路 200〜201 演算回路 210〜250 レジスタ 281〜282 マルチプレクサ 285 乗算回路 286〜287 レジスタ 288 加算回路 289 レジスタ 290 制御回路 400 処理手順 510 処理手順 550 処理手順 600 処理手順 700 演算回路 710〜750 レジスタ 760〜775 マルチプレクサ 781 乗算回路 782 乗算回路 783〜785 レジスタ 786 加算回路 787 レジスタ 790 制御回路 800 処理手順 900 演算回路 910〜940 レジスタ 981 乗算回路 982 レジスタ 984 加算回路 990 制御回路

Claims (10)

    【特許請求の範囲】
  1. 【請求項1】 複数桁からなる数Aと1桁の数bとの乗
    算において、前記数Aの1つの桁aと前記数bとの積を
    用いて数(A×b)の1つの桁dを算出する演算回路で
    あって、 1桁の数を記憶している第1レジスタと、 1ビットの数を記憶している第2レジスタと、 前記桁aと前記数bとを乗じて2桁からなる積を算出す
    る乗算回路と、 前記算出された積の下1桁と、前記第1レジスタの内容
    と、前記第2レジスタの内容とを加算することにより、
    前記桁dと1ビットの桁上がり値とを算出する加算回路
    とを備え、 前記第1レジスタは、初期値として0を保持し、前記加
    算回路による加算が行われた場合に、前記算出された積
    の上1桁を記憶し、 前記第2レジスタは、初期値として0を保持し、前記算
    出された桁上がり値を記憶することを特徴とする演算回
    路。
  2. 【請求項2】 前記各桁はkビット(kは正整数)で表
    され、 前記第1レジスタは、kビットで表された前記1桁の数
    を記憶し、 前記乗算回路は、kビットで表された前記桁aと、kビ
    ットで表された前記数bとを乗じて、2kビットで表さ
    れた前記積を算出し、 前記加算回路は、前記積の下kビットと、前記第1レジ
    スタに記憶されているkビット値と、前記第2レジスタ
    に記憶されている1ビット値とを加算することにより、
    kビットで表された前記桁dと1ビットの桁上がり値と
    を算出することを特徴とする請求項1に記載の演算回
    路。
  3. 【請求項3】 複数桁からなる数T、数A、及び数N、
    並びに1桁の数b及び数mに対する演算(T+A×b+
    N×m)において、前記数Aの1つの桁と前記数bとの
    積、及び前記数Nの1つの桁と前記数mとの積を用いて
    数(T+A×b+N×m)の1つの桁dを算出する演算
    回路であって、 数A及び数Nの何れかを選択する第1選択回路と、 数b及び数mの何れかを選択する第2選択回路と、 1桁の数を記憶している第1レジスタと、 2ビットの数を記憶している第2レジスタと、 複数桁からなる数を桁毎に記憶している第3レジスタ
    と、 前記第1選択回路により選択された数の1つの桁と、前
    記第2選択回路により選択された1桁の数とを乗じて、
    2桁からなる積を算出する乗算回路と、 前記算出された積の下1桁と、前記第1レジスタの内容
    と、前記第2レジスタの内容と、前記乗算された桁と同
    一の桁位置において前記第3レジスタに記憶されている
    1つの桁とを加算することにより、前記桁dと2ビット
    の桁上がり値とを算出する加算回路とを備え、 前記第1レジスタは、初期値として0を保持し、前記加
    算回路による加算が行われた場合に、前記算出された積
    の上1桁を記憶し、 前記第2レジスタは、初期値として0を保持し、前記算
    出された桁上がり値を記憶し、 前記第3レジスタは、初期値として数Tを保持し、前記
    加算回路により加算された桁を、前記加算回路の加算結
    果により更新し、 前記加算回路は、前記第1選択回路により前記数Aが選
    択され、かつ前記第2選択回路により前記数bが選択さ
    れている場合に、前記加算を行うことにより、数(T+
    A×b)の1つの桁を算出し、その後、前記第1選択回
    路により前記数Nが選択され、かつ前記第2選択回路に
    より前記数mが選択されている場合に、前記加算を行う
    ことにより、前記桁dを算出することを特徴とする演算
    回路。
  4. 【請求項4】 前記各桁はkビット(kは正整数)で表
    され、 前記第1レジスタは、kビットで表された前記1桁の数
    を記憶し、 前記乗算回路は、前記第1選択回路により選択されkビ
    ットで表された前記桁と、前記第2選択回路により選択
    されkビットで表された前記桁とを乗じて、2kビット
    で表された前記積を算出し、 前記加算回路は、前記積の下kビットと、前記第1レジ
    スタに記憶されているkビット値と、前記第2レジスタ
    に記憶されている1ビット値と、前記第3レジスタに記
    憶されているkビットで表された1つの桁とを加算する
    ことにより、kビットで表された加算結果と2ビットの
    桁上がり値とを算出することを特徴とする請求項3記載
    の演算回路。
  5. 【請求項5】 前記加算回路は、さらに、前記数mを算
    出し、 前記演算回路は、さらに、 前記加算回路により算出された数mを記憶する第4レジ
    スタを備え、 前記第2選択回路は、前記数b及び前記第4レジスタに
    記憶されている数mの何れかを選択することを特徴とす
    る請求項3に記載の演算回路。
  6. 【請求項6】 複数桁からなる数T、数A、及び数N、
    並びに1桁の数b及び数mに対する演算(T+A×b+
    N×m)において、前記数Aの1つの桁aと前記数bと
    の積、及び前記数Nの1つの桁nと前記数mとの積を用
    いて数(T+A×b+N×m)の1つの桁dを算出する
    演算回路であって、 前記桁aと前記数bとを乗じて2桁からなる第1積を算
    出する第1乗算回路と、 前記桁aと同一の桁位置にある前記数Nの桁nと、前記
    数mとを乗じて2桁からなる第2積を算出する第2乗算
    回路と、 1桁の数を記憶している第1レジスタと、 1桁の数を記憶している第2レジスタと、 3ビットの数を記憶している第3レジスタと、 前記算出された第1積の下1桁と、前記第1レジスタの
    内容と、前記算出された第2積の下1桁と、前記第2レ
    ジスタの内容と、前記第3レジスタの内容と、前記桁a
    と同一の桁位置にある前記数Tの桁とを加算することに
    より、前記桁dと3ビットの桁上がり値とを算出する加
    算回路とを備え、 前記第1レジスタは、初期値として0を保持し、前記加
    算回路による加算が行われた場合に、前記算出された第
    1積の上1桁を記憶し、 前記第2レジスタは、初期値として0を保持し、前記加
    算回路による加算が行われた場合に、前記算出された第
    2積の上1桁を記憶し、 前記第3レジスタは、初期値として0を保持し、前記算
    出された桁上がり値を記憶することを特徴とする演算回
    路。
  7. 【請求項7】 前記各桁はkビット(kは正整数)で表
    され、 前記第1レジスタは、kビットで表された前記1桁の数
    を記憶し、 前記第2レジスタは、kビットで表された前記1桁の数
    を記憶し、 前記第1乗算回路は、kビットで表された前記桁aと、
    kビットで表された前記数bとを乗じて、2kビットで
    表された前記第1積を算出し、 前記第2乗算回路は、kビットで表された前記桁nと、
    kビットで表された前記数mとを乗じて、2kビットで
    表された前記第2積を算出し、 前記加算回路は、前記第1積の下kビットと、前記第1
    レジスタに記憶されているkビット値と、前記第2積の
    下kビットと、前記第2レジスタに記憶されているkビ
    ット値と、前記第3レジスタに記憶されている3ビット
    値と、前記数Tのkビットで表された1つの桁とを加算
    することにより、kビットで表された前記桁dと3ビッ
    トの桁上がり値とを算出することを特徴とする請求項6
    に記載の演算回路。
  8. 【請求項8】 前記加算回路は、さらに、前記数mを算
    出し、 前記演算回路は、さらに、 前記加算回路により算出された数mを記憶する第4レジ
    スタを備え、 前記第2乗算回路は、前記桁nと、前記第4レジスタに
    記憶されている数mとを乗算することを特徴とする請求
    項6に記載の演算回路。
  9. 【請求項9】 複数桁からなる数Aと1桁の数bとの乗
    算において、前記数Aの1つの桁aと前記数bとの積を
    用いて数(A×b)の1つの桁dを算出する演算方法で
    あって、 1桁の数を記憶する第1記憶ステップと、 1ビットの数を記憶する第2記憶ステップと、 前記桁aと前記数bとを乗じて2桁からなる積を算出す
    る乗算ステップと、 前記算出された積の下1桁と、前記第1記憶ステップに
    おいて記憶された数と、前記第2記憶ステップにおいて
    記憶された数とを加算することにより、前記桁dと1ビ
    ットの桁上がり値とを算出する加算ステップとを有し、 前記第1記憶ステップは、初期値として0を記憶し、前
    記加算ステップによる加算が行われた場合に、前記算出
    された積の上1桁を記憶し、 前記第2記憶ステップは、初期値として0を記憶し、前
    記算出された桁上がり値を記憶することを特徴とする演
    算方法。
  10. 【請求項10】 複数桁からなる数Aと1桁の数bとの
    乗算において、前記数Aの1つの桁aと前記数bとの積
    を用いて数(A×b)の1つの桁dを算出する演算回路
    を制御するプログラムを記憶しているコンピュータ読取
    り可能な記録媒体であって、 前記プログラムは、 1桁の数を記憶する第1記憶ステップと、 1ビットの数を記憶する第2記憶ステップと、 前記桁aと前記数bとを乗じて2桁からなる積を算出す
    る乗算ステップと、 前記算出された積の下1桁と、前記第1記憶ステップに
    おいて記憶された数と、前記第2記憶ステップにおいて
    記憶された数とを加算することにより、前記桁dと1ビ
    ットの桁上がり値とを算出する加算ステップとを有し、 前記第1記憶ステップは、初期値として0を記憶し、前
    記加算ステップによる加算が行われた場合に、前記算出
    された積の上1桁を記憶し、 前記第2記憶ステップは、初期値として0を記憶し、前
    記算出された桁上がり値を記憶することを特徴とする記
    録媒体。
JP2001032336A 2001-02-08 2001-02-08 演算回路、演算方法、及びプログラム記録媒体 Pending JP2002236581A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2001032336A JP2002236581A (ja) 2001-02-08 2001-02-08 演算回路、演算方法、及びプログラム記録媒体

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2001032336A JP2002236581A (ja) 2001-02-08 2001-02-08 演算回路、演算方法、及びプログラム記録媒体

Publications (1)

Publication Number Publication Date
JP2002236581A true JP2002236581A (ja) 2002-08-23

Family

ID=18896285

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2001032336A Pending JP2002236581A (ja) 2001-02-08 2001-02-08 演算回路、演算方法、及びプログラム記録媒体

Country Status (1)

Country Link
JP (1) JP2002236581A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005250481A (ja) * 2004-03-02 2005-09-15 Samsung Electronics Co Ltd 多重精度を支援する拡張型モンゴメリモジュラ掛け算器
JP2008102715A (ja) * 2006-10-18 2008-05-01 Toshiba Corp 演算装置

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005250481A (ja) * 2004-03-02 2005-09-15 Samsung Electronics Co Ltd 多重精度を支援する拡張型モンゴメリモジュラ掛け算器
JP2008102715A (ja) * 2006-10-18 2008-05-01 Toshiba Corp 演算装置

Similar Documents

Publication Publication Date Title
JP3525209B2 (ja) べき乗剰余演算回路及びべき乗剰余演算システム及びべき乗剰余演算のための演算方法
Blum et al. Montgomery modular exponentiation on reconfigurable hardware
Kwon et al. Two implementation methods of a 1024-bit RSA cryptoprocessor based on modified Montgomery algorithm
US8504602B2 (en) Modular multiplication processing apparatus
JP2004501396A (ja) 整数の計算フィールド範囲の拡張
Grossschadl The Chinese remainder theorem and its application in a high-speed RSA crypto chip
KR100591761B1 (ko) 몽고메리 모듈러 곱셈기 및 캐리 저장 가산을 이용한몽고메리 모듈러 곱셈 방법
US20070185948A1 (en) Method for modular multiplication
US5121429A (en) Digital signal processing
JP3532860B2 (ja) 剰余系表現を利用した演算装置及び方法及びプログラム
KR100459732B1 (ko) 4-2 컴프레서를 이용한 몽고메리 모듈러 승산기 및 그승산 방법
US7046800B1 (en) Scalable methods and apparatus for Montgomery multiplication
JP2004258141A (ja) モンゴメリ乗算剰余の多倍長演算のための演算装置
JPH05324277A (ja) 暗号通信方法
JP2006023647A (ja) 乗算剰余演算器及び情報処理装置
JP2001034167A (ja) 演算装置及び暗号処理装置
O'Rourke et al. Achieving NTRU with Montgomery multiplication
Wang et al. New VLSI architectures of RSA public-key cryptosystem
US20020114449A1 (en) Modular multiplier and an encryption/decryption processor using the modular multiplier
US20040015532A1 (en) Modular multiplication apparatus, modular multiplication method, and modular exponentiation apparatus
JP2002236581A (ja) 演算回路、演算方法、及びプログラム記録媒体
CN115268839A (zh) 一种以2为基的蒙哥马利模乘方法及装置
JP2000207387A (ja) 演算装置及び暗号処理装置
KR100836737B1 (ko) 중국인 나머지 정리(crt)와 캐리 저장 가산 기반의모듈러 곱셈 장치 및 방법
Yang et al. The IC design of a high speed RSA processor