JP2000353077A - 多倍長演算装置 - Google Patents

多倍長演算装置

Info

Publication number
JP2000353077A
JP2000353077A JP2000099761A JP2000099761A JP2000353077A JP 2000353077 A JP2000353077 A JP 2000353077A JP 2000099761 A JP2000099761 A JP 2000099761A JP 2000099761 A JP2000099761 A JP 2000099761A JP 2000353077 A JP2000353077 A JP 2000353077A
Authority
JP
Japan
Prior art keywords
word
data
memory
arithmetic unit
integer
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
JP2000099761A
Other languages
English (en)
Inventor
Natsume Matsuzaki
なつめ 松崎
Yasuo Okumura
康男 奥村
Takatoshi Ono
貴敏 小野
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 JP2000099761A priority Critical patent/JP2000353077A/ja
Publication of JP2000353077A publication Critical patent/JP2000353077A/ja
Pending legal-status Critical Current

Links

Abstract

(57)【要約】 【課題】 楕円曲線暗号等に必要な種々の多倍長演算を
高速に実行することが可能な多倍長演算装置を提供す
る。 【解決手段】 演算対象となるnワード長の整数や演算
結果等を一時的に記憶するための2個のデュアルポート
メモリ41、42からなるメモリ部40と、ワード単位
で加算及び乗算を含む2以上の種類の演算を実行し、1
ワード長の演算結果を出力する演算部20と、メモリ部
40から演算部20に最大3つの1ワードデータを供給
すると同時に、演算部20からの1ワード長の演算結果
をメモリ部40に格納するメモリ入出力部30と、演算
部20及びメモリ入出力部30を制御することにより、
演算部20にnワード長の加算剰余及びモンゴメリリダ
クションのいずれかの演算を実行させる制御を行う制御
部10とを備える。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、多倍長の整数を対
象とする剰余演算を実行する装置に関し、特に、2以上
の種類の剰余演算を実行する装置に関する。
【0002】
【従来の技術】多くの暗号方式では、多倍長の整数を対
象とした有限体上での演算が利用される。ここで、多倍
長の整数とは、一般的なCPUの語長(32ビット等)
を超える語長の整数、例えば、160ビット長の整数を
いう。このような暗号方式を通信機器等に実装するに
は、多倍長演算を高速に実行する演算装置が必要とされ
る。
【0003】従来、RSA暗号のための演算装置とし
て、乗算器とメモリからなる専用のLSIが製品化され
ている。この演算装置は、多倍長のべき乗剰余演算だけ
を対象とする装置であり、短いビット幅の乗算器を繰り
返し用いることによって多倍長のべき乗剰余演算を実現
するものであり、CPUと組み合わせてコプロセッサと
して用いられる。
【0004】これに対し、近年、RSA暗号に置き換わ
る公開鍵暗号として注目を集めている方式の一つに楕円
曲線暗号がある。この暗号方式に対しては、RSA暗号
に対して通用した強力な攻撃法(Index Calculus法)は
もはや通用しない。楕円曲線暗号によれば、RSA暗号
に比べ、非常に短い語長の鍵データを用いるにも拘わら
ず十分な安全性が確保される。例えば、RSA暗号によ
れば1024ビット長の鍵データで達成される安全性
が、楕円曲線暗号によれば、わずか160ビット長の鍵
データで達成される。
【0005】
【発明が解決しようとする課題】ところが、このように
高い安全性を有する楕円曲線暗号を用いるためには、R
SA暗号で必要とされたべき乗剰余演算だけでなく、R
SA暗号では必要とされなかった四則演算や、予め決ま
ってはいるが条件分岐を含む複雑な手順での演算等の種
々の演算が必要とされる。
【0006】そのために、例えば、上述のRSA暗号専
用のコプロセッサを用いて楕円曲線暗号の演算を行った
場合には、そのコプロセッサが実行できる演算の数はわ
ずかとなり、つまり、ほとんどの演算がCPUによる演
算となってしまい、CPUとコプロセッサ間での制御信
号のやりとりによるオーバーヘッドが大きくなって高速
処理が実現されない。
【0007】一方、楕円曲線暗号で必要とされる全ての
種類の演算をCPUに実行させるというソフトウェア的
な手法をとったのでは、演算対象のデータが多倍長であ
ることから、極めて高い頻度でCPUによるメモリへの
アクセスが発生し、CPUの演算部に効率的にデータが
供給されず、高速処理が実現されない。そこで、本発明
は、楕円曲線暗号等に必要な種々の多倍長演算を高速に
実行することが可能な多倍長演算装置を提供することを
目的とする。
【0008】また、比較的小さな回路規模で複数の種類
の多倍長演算から選択されものを実行することが可能な
多倍長演算装置を提供することも目的とする。
【0009】
【課題を解決するための手段】上記目的を達成するため
に本発明に係る多倍長演算装置は、外部装置からの指示
に従って、2以上のワード長の整数を対象とする剰余演
算を実行する多倍長演算装置であって、メモリと、ワー
ド単位で、加算及び乗算を含む2以上の種類の演算を実
行し、1ワード長の演算結果を出力する演算器と、剰余
演算の対象となる少なくとも1つの整数を前記外部装置
から前記メモリに格納する第1データ転送と、前記メモ
リに格納された整数をワード単位で演算器に入力させる
第2データ転送と、前記演算器から出力される演算結果
を前記メモリに格納する第3データ転送と、前記演算結
果を前記メモリから前記外部装置に出力する第4データ
転送とを行うメモリ入出力回路と、前記外部装置からの
指示に従って、前記メモリ入出力回路に対して実行すべ
き前記第2及び第3データ転送の対象を指示して制御
し、前記演算器に対して実行すべき演算の種類を指示し
て制御することにより、前記演算器に前記メモリに格納
された整数に対する2以上の種類の剰余演算を選択的に
実行させ、前記メモリ入出力回路に前記剰余演算の結果
を前記メモリに格納させる制御回路とを備えることを特
徴とする。
【0010】具体的には、本発明に係る多倍長演算装置
は、演算対象となるnワード長の整数や演算結果等を一
時的に記憶するための2個のデュアルポートメモリから
なるメモリと、ワード単位で加算及び乗算を含む2以上
の種類の演算を実行し、1ワード長の演算結果を出力す
る演算部と、メモリから演算部に最大3つの1ワードデ
ータを供給すると同時に、演算部からの1ワード長の演
算結果をメモリに格納するメモリ入出力部と、演算部及
びメモリ入出力部を制御することにより、演算部にnワ
ード長の加算剰余及びモンゴメリリダクションのいずれ
かの演算を実行させる制御を行う制御とを備える。
【0011】また、本発明に係る多倍長演算装置は、外
部装置からの指示に従って、2以上のワード長の整数を
対象とする剰余演算を実行する多倍長演算装置であっ
て、メモリと、ワード単位で、加算及び乗算を含む2以
上の種類の演算を実行し、1ワード長の演算結果を出力
する演算器と、剰余演算の対象となる少なくとも1つの
整数を前記外部装置から前記メモリに格納する第1デー
タ転送と、前記メモリに格納された整数をワード単位で
演算器に入力させる第2データ転送と、前記演算器から
出力される演算結果を前記メモリに格納する第3データ
転送と、前記演算結果を前記メモリから前記外部装置に
出力する第4データ転送とを行うメモリ入出力回路と、
前記外部装置からの指示に従って、前記メモリ入出力回
路に対して実行すべき前記第2及び第3データ転送の対
象を指示して制御し、前記演算器に対して実行すべき演
算の種類を指示して制御することにより、前記演算器に
前記メモリに格納された整数に対する2以上の種類の剰
余演算を選択的に実行させ、前記メモリ入出力回路に前
記剰余演算の結果を前記メモリに格納させる制御回路と
を備え、前記2以上の種類の剰余演算には加算剰余とモ
ンゴメリリダクションとが含まれ、前記制御回路は、前
記外部装置から加算剰余を実行する旨の指示を受けた場
合に、前記演算器がnワード長の整数Pを法として2つ
のnワード長の整数AとBとを加算するように前記メモ
リ入出力回路及び前記演算器を制御し、前記外部装置か
らモンゴメリリダクションを実行する旨の指示を受けた
場合に、前記演算器が1ワードをkビット、整数Aを2
nワード長の入力データ、整数Rを2^(k×n)とし
たときに、1ワード長の整数Pを法とするA・R^(−
1)の剰余を算出するように前記メモリ入出力回路及び
前記演算器を制御することを特徴とする。
【0012】
【発明の実施の形態】以下、本発明の実施の形態につい
て、図面を用いて説明する。図1は、本発明の多倍長演
算装置100の回路構成を示すブロック図である。この
多倍長演算装置100は、外部装置(図示されず)から
の指示(演算の種類と演算対象となる多倍長整数の長さ
等)に基づいて2種類の多倍長演算、例えば、5ワード
長の2つの整数の加算剰余と10ワード長の整数を入力
とするモンゴメリリダクションとを選択的に実行するコ
プロセッサ(LSI)であり、内部で生成されるクロッ
ク信号に同期して動作する制御部10、演算部20、メ
モリ入出力部30及びメモリ部40から構成される。
【0013】ここで、1ワードとは、演算部20が1ク
ロックサイクルで実行する演算の対象となるデータの語
長であり、ここでは、32ビットである。外部装置と
は、この多倍長演算装置100を利用する通信機器等に
備えられたCPU等である。また、加算剰余とは、ある
定数Pを法とする加算である。モンゴメリリダクション
とは、剰余演算を高速に行うアルゴリズムの一つであ
り、以下のように、ある定数Pと定数RがP<R=2^
mとし、P^2程度の大きさの入力Aに対して、M=A
・R^(−1) mod Pを求めるための3つのステ
ップからなる演算(以下、この演算を「モンゴメリ演
算」という。)である(岡本龍明・太田和夫共編「暗号
・ゼロ知識証明・数論」共立出版、1995年)。
【0014】 入力:A(2mビット程度の値) 前計算:V=−P^(−1) mod R 出力:M=A・R^(−1) mod P 処理: step1: B=A×V mod R step2: M=(B×P+A)/R step3: M mod Pを出力 演算部20は、制御部10からの指示に基づいて、1ク
ロックサイクルで2つの1ワード長のデータの乗算及び
3つの1ワード長のデータの加算のいずれかを実行する
共にその結果又はその結果の一部を示す1ワードのデー
タと2ビットのキャリー(桁上げ)を含む34ビットの
データを出力する演算器であり、入力のための3つのデ
ータバス61〜63と出力のための1つのデータバス6
4によってメモリ入出力部30と接続されている。
【0015】メモリ部40は、この多倍長演算装置10
0による多倍長演算の対象となる整数、その演算過程で
生じる中間データ及び演算結果を一時的に格納するメモ
リであり、ワード単位でアクセスが可能な2つの独立し
たデュアルポートメモリ(第1メモリ41及び第2メモ
リ42)からなり、4つのデータバス65〜68と4つ
のアドレスバス71〜74によってメモリ入出力部30
と接続されている。
【0016】第1メモリ41及び第2メモリ42それぞ
れは、256ワードの記憶容量を有し、2つの入出力ポ
ートを介して、1クロックサイクルで、最大2つの異な
る記憶領域の1ワード長のデータ(部分整数)を同時に
読み書きできるメモリである。メモリ入出力部30は、
制御部10からの指示に基づいて、演算部20とメモリ
部40間のデータ転送及び外部装置とメモリ部40間の
データ転送を行うインタフェース回路である。
【0017】制御部10は、制御プログラムが格納され
たROM、そのプログラムに従って制御信号を出力する
論理回路及びRAM等からなり、外部装置からの指示
(演算の種類や演算対象となる多倍長整数のワード数
等)に基づいて、演算部20及びメモリ入出力部30を
制御することにより、例えば、メモリ部40に格納され
た2つの5ワード長の整数に対する加算剰余演算及び1
つの10ワード長の整数に対するモンゴメリ演算のいず
れかを完遂させる。
【0018】図2は、図1に示された演算部20の詳細
な構成を示す回路図である。この演算部20は、乗算器
21、3入力加算器22、レジスタ23及び3つのセレ
クタ24〜26からなる。なお、図中の[n:m]は、
着目するビット列の最下位ビットを第0ビットとした場
合の第n〜第mビット列を意味する。乗算器21は、2
つのデータバス61、62を介してメモリ入出力部30
から送られてくる2つの1ワード長のデータを乗算し、
その結果を2ワード長のデータで出力する。
【0019】3入力加算器22は、セレクタ24から第
1入力ポートin1に入力される2ワード長のデータ
と、データバス62を介してメモリ入出力部30から送
られてくる1ワード長のデータを下位ワードとし“0”
を上位ワードとして第2入力ポートin2に入力される
2ワード長のデータと、セレクタ25から第3入力ポー
トin3に入力される2ワード長のデータと、セレクタ
26からキャリー入力端子(carry in)に入力される2
ビットのキャリーとを算術加算し、得られた66ビット
長のデータ(上位2ビットのキャリー及び続く2ワード
長のデータ)をレジスタ23に出力する。
【0020】なお、この3入力加算器22は、負数(2
の補数により表現された数)を加算することができるの
で、オーバーフロー時だけでなく、アンダーフロー時
(ボロー時)にもキャリーを出力する。レジスタ23
は、3入力加算器22から出力される66ビット長のデ
ータを1クロックサイクルだけ保持する。レジスタ23
に保持された66ビット長のデータは、次のクロックサ
イクルにおいて、その上位2ビットのキャリー[65:
64]及び中位2ビットのキャリー[33:32]がセ
レクタ26に入力され、下位2ワード長のデータがセレ
クタ25に入力され、下位の34ビットがデータバス6
4を介してメモリ入出力部30に出力される。
【0021】セレクタ24は、制御部10からの指示に
従って、(i)データバス61を介してメモリ入出力部
30から送られてくる1ワード長のデータを下位ワード
とし“0”を上位ワードとする2ワード長のデータ、及
び、(ii)乗算器21から出力される2ワード長のデー
タのいずれかを選択し、3入力加算器22の第1入力ポ
ートin1に出力する。
【0022】セレクタ25は、制御部10からの指示に
従って、(i)データバス63を介してメモリ入出力部
30から送られてくる1ワード長のデータを下位ワード
とし“0”を上位ワードとする2ワード長のデータ、
(ii)レジスタ23から出力される2ワード長のデー
タ、及び、(iii)レジスタ23から出力される2ワー
ド長のデータの上位ワードを下位ワードし“0”を上位
ワードとする2ワード長のデータのいずれかを選択し、
3入力加算器22の第3入力ポートin3に出力する。
【0023】セレクタ26は、3入力加算器22での加
算で生じたキャリーを次のクロックサイクルにおける加
算に伝播するための回路であり、制御部10からの指示
に従って、(i)レジスタ23から送られてくる2ビッ
トのキャリー[65:64]、及び、(ii)[33:3
2]のいずれかを選択し、3入力加算器22のキャリー
入力端子に出力する。
【0024】図3は、図1に示されたメモリ入出力部3
0の詳細な構成を示す回路図である。このメモリ入出力
部30は、バススイッチ部31、入出力制御部32及び
アドレス生成部33からなる。バススイッチ部31は、
複数のセレクタ回路の集まりであり、入出力制御部32
からの指示に従って、演算部20に接続されている4つ
のデータバス61〜64それぞれをメモリ部40に接続
されている4つのデータバス65〜68のいずれかに接
続する。
【0025】アドレス生成部33は、4個の独立したア
ドレスレジスタ及びインクリメンタ等からなり、入出力
制御部32からの指示に従って、4組のアクセス制御信
号(アドレス、読み出し/書き込み信号等)を生成し、
4つのアドレスバス71〜74に出力する。入出力制御
部32は、制御部10からの指示に基づいて、演算部2
0がメモリ部40に対して同時かつ独立に最大4つのア
クセスを行えるようにバススイッチ部31及びアドレス
生成部33を制御したり、データバス69及びアドレス
バス75を介して接続された外部装置とメモリ部40間
のデータ転送を行ったり、演算部20から送られてきた
キャリーに関する情報をキャリー信号として制御部10
に伝えたりする。
【0026】次に、以上のように構成された多倍長演算
装置100の動作について説明する。図4は、多倍長演
算装置100の全体的な動作の手順を示すフローチャー
トである。まず、メモリ入出力部30は、演算の対象と
なる整数や予め前計算で算出されている整数等の入力デ
ータをデータバス69及びアドレスバス75を介して外
部装置から受け取り、メモリ部40の所定位置に格納す
る(ステップS200)次に、制御部10は、加算剰余
演算及びモンゴメリ演算のいずれを実行すべきかの指示
を外部装置から受け取る(ステップS201)。
【0027】その結果、加算剰余を実行すべき指示を受
け取った場合には、制御部10は、予めプログラムされ
た制御信号を演算部20及びメモリ入出力部30に送る
ことにより、メモリ部40に格納された5ワード長の2
つの整数A及びBの加算剰余を演算部20に実行させ、
その結果Cをメモリ部40に格納させる(ステップS2
02)。
【0028】一方、モンゴメリ演算を実行すべき指示を
受け取った場合には、制御部10は、予めプログラムさ
れた制御信号を演算部20及びメモリ入出力部30に送
ることにより、メモリ部40に格納された整数A等を用
いて上記モンゴメリ演算のstep1〜step3を演
算部20に順次実行させ、最終的な結果Mをメモリ部4
0に格納させる(ステップS203〜5)。
【0029】なお、上記加算剰余の結果Cやモンゴメリ
演算の結果Mは、メモリ入出力部30を介して外部装置
によって読み出される。次に、本多倍長演算装置100
による具体的な演算例を説明する。まず、本多倍長演算
装置100が加算剰余(C=A+B mod P)を実
行する場合について、図5〜図9を用いて説明する。
【0030】図5は、加算剰余の演算式と、加算剰余に
際して外部装置から本多倍長演算装置100に与えられ
る入力データ、即ち、メモリ入出力部30を経てメモリ
部40に格納される入力データA、B、P、Qの例とを
示す図である。整数Aは、加算剰余の演算対象の一つで
あり、上位桁から順に5個のワードa4、a3、a2、
a1、a0が並べられた5ワード長の整数である(以
下、このような多倍長整数を[a4、a3、a2、a
1、a0]と表す)。同様に、整数Bは、加算剰余の演
算対象の一つであり、5ワード長の整数[b4、b3、
b2、b1、b0]である。整数Pは、加算剰余におけ
る法であり、5ワード長の整数[p4、p3、p2、p
1、p0]である。整数Qは、整数Pの符号を反転した
値(−P)に等しい5ワード長の整数[q4、q3、q
2、q1、q0]である。
【0031】図6は、本多倍長演算装置100による加
算剰余におけるメモリ部40のメモリマップを示す。こ
こには、上記4つの入力データA、B、P、Qに加え
て、その演算結果を格納するための5ワード長の整数C
[c4、c3、c2、c1、c0]及びこの加算剰余で
発生する中間データW[w4、w3、w2、w1、w
0]も併せて示されている。
【0032】第1メモリ41には、整数A、P及びQが
格納され、第2メモリ42には、整数B、C及びWが格
納される。このようなメモリマップによって、演算部2
0は、1クロックサイクルで、3つの整数A、P及びQ
から選択した2つのワードと、3つの整数B、C及びW
から選択した2つのワードとを同時に読み出し又は書き
込みを行うことができる。
【0033】図7は、多倍長演算装置100が加算剰余
演算を実行する場合の動作手順、即ち、図4に示された
ステップS202の詳細な手順を示すフローチャートで
ある。多倍長演算装置100による加算剰余演算は、大
別すると、3つの処理からなる。つまり、ワード単位で
の加算剰余を5回繰り返す第1の処理(ステップS21
0〜212)と、第1の処理によってキャリーを生じた
場合の「引き戻し演算」と呼ばれる、ワード単位での加
算を5回繰り返す第2の処理(ステップS214〜S2
16)と、第1の処理によってキャリーを生じなかった
場合に、中間データWを演算結果Cに代入するためのデ
ータ転送を5回繰り返す第3の処理(ステップS217
〜S219)とからなる。
【0034】図8(a)〜(c)は、それぞれ、図7に
示された第1の処理(ステップS210〜S212)、
第2の処理(ステップS214〜S216)及び第3の
処理(ステップS217〜S219)における演算部2
0の動作状態(演算機能)と演算部20への入力データ
とを示す模式図である。演算部20は、第1の処理にお
いては、3つのデータai、bi及びqiを加算し、そ
の結果をデータwiに代入する1ワードの3入力加算器
として動作し、第2の処理においては、2つのデータp
i及びwiを加算し、その結果をデータciに代入する
1ワードの2入力加算器として動作し、第3の処理にお
いては、1つのデータwiをデータciに代入する1ワ
ードのデータ転送器として動作する。
【0035】なお、これら演算部20の動作状態は、制
御部10から演算部20に出力される制御信号によって
決定され、演算部20への入力データは、制御部10か
らメモリ入出力部30に出力される制御信号によって決
定される。また、3入力加算器22のいずれかの入力ポ
ートに対して固定的に“0”を入力することは、セレク
タ24、25を制御することによってオール“0”のデ
ータを出力させたり、メモリ入出力部30を制御するこ
とによってオール“0”のデータを出力させたりするこ
とによって実現される。
【0036】図9(a)〜(c)は、それぞれ、図7に
示された第1の処理(ステップS210〜S212)、
第2の処理(ステップS214〜S216)及び第3の
処理(ステップS217〜S219)における演算部2
0のパイプライン動作を示すタイミングチャートであ
る。演算部20は、3入力加算器22の出力を保持する
レジスタ23を有しているので、3入力加算器22によ
る演算と、3入力加算器22による直前の演算結果のメ
モリ部40への格納という2つのステージを1つのクロ
ックサイクルで同時並列に実行する。
【0037】図7に示されるように、第1の処理におい
て、まず、制御部10は、演算部20及びメモリ入出力
部30に制御信号を送ることで演算部20を図8(a)
に示される動作状態にした後に、演算部20に対して初
期化の制御信号を出力することにより、レジスタ23の
保持値Reg及びキャリーcarry(Reg[33:
32])を“0”に初期化する(ステップS210)。
【0038】そして、演算部20は、クロックサイクル
ごとに、メモリ入出力部30を経て第1メモリ41から
送られてくる2つのデータai及びqiと第2メモリ4
2から送られてくるデータbiと直前の演算で生じたキ
ャリーcarryとを加算すると共に、レジスタ23の
保持値Regの下位1ワードを第2メモリ42の記憶領
域wiに書き込むという並列動作を繰り返す(ステップ
S211)。
【0039】具体的には、図9(a)に示されるよう
に、演算部20は、第1クロックサイクルにおいて、3
つのデータa0、b0及びq0を加算してレジスタ23
Regに格納し、続く第2クロックサイクルにおいて、
3つのデータa1、b1及びq1と第1クロックサイク
ルでの演算で生じたキャリーとを加算してレジスタ23
Regに格納すると共に、レジスタ23に保持されてい
た直前の演算結果Regを第2メモリ42の記憶領域w
0に書き込む、というパイプライン動作を繰り返す。
【0040】演算部20は、制御部10による制御の下
で、5ワード分の加算とその結果の第2メモリ42への
格納とを合計5回繰り返す(ステップS211〜S21
2)。これによって、W=A+B+Q、即ち、W=A+
B−Pの演算が完了する。次に、制御部10は、第5ク
ロックサイクルにおける加算によってキャリーcarr
y(ここでは、ボロー)が生じているか否か判断し(ス
テップS213)、キャリーcarryが生じている場
合には第2の処理(ステップS214〜S216)を、
キャリーcarryが生じていない場合には第3の処理
(ステップS217〜S219)を、演算部20に実行
させる。
【0041】これは、第1の処理によって得られた中間
データWが負の値となってしまった場合には、その中間
データWに法Pを加算して得られる値(引き戻して得ら
れる値)を最終結果C(A+B mod P)とし、一
方、中間データWが正の値である場合には、その中間デ
ータWを最終結果Cとするためである。第2の処理で
は、まず、制御部10は、演算部20及びメモリ入出力
部30に制御信号を送ることで演算部20を図8(b)
に示される動作状態にした後に、演算部20に対して初
期化の制御信号を出力することにより、レジスタ23の
保持値Reg及びキャリーcarry(Reg[33:
32])を“0”に初期化する(ステップS214)。
【0042】そして、演算部20は、クロックサイクル
ごとに、メモリ入出力部30を経て第1メモリ41から
送られてくるデータpiと第2メモリ42から送られて
くるデータwiと直前の演算で生じたキャリーcarr
yとを加算すると共に、レジスタ23の保持値Regの
下位1ワードを第2メモリ42の記憶領域ciに書き込
むという並列動作を繰り返す(ステップS215)。
【0043】具体的には、図9(b)に示されるよう
に、演算部20は、第1クロックサイクルにおいて、2
つのデータp0及びw0を加算してレジスタ23Reg
に格納し、続く第2クロックサイクルにおいて、2つの
データp1及びw1と第1クロックサイクルでの演算で
生じたキャリーとを加算してレジスタ23Regに格納
すると共に、レジスタ23に保持されていた直前の演算
結果Regを第2メモリ42の記憶領域c0に書き込
む、というパイプライン動作を繰り返していく。
【0044】演算部20は、制御部10による制御の下
で、5ワード分の加算とその結果の第2メモリ42への
格納とを合計5回繰り返す(ステップS215〜S21
6)。これによって、C=W+P、即ち、C=A+B
mod Pの演算が完了する。一方、第3の処理では、
まず、制御部10は、演算部20及びメモリ入出力部3
0に制御信号を送ることで演算部20を図8(c)に示
される動作状態に初期化する(ステップS217)。
【0045】そして、演算部20は、クロックサイクル
ごとに、メモリ入出力部30を経て第1メモリ42から
送られてくるデータwiを通過させてレジスタ23に格
納すると共に、レジスタ23の保持値Regの下位1ワ
ードを第2メモリ42の記憶領域ciに書き込むという
並列動作を繰り返す(ステップS218)。具体的に
は、図9(c)に示されるように、演算部20は、第1
クロックサイクルにおいて、データw0をそのままレジ
スタ23Regに格納し、続く第2クロックサイクルに
おいて、データw1をレジスタ23Regに格納すると
共に、レジスタ23に保持されていた直前の値Regを
第2メモリ42の記憶領域c0に書き込む、というパイ
プライン動作を繰り返していく。
【0046】演算部20は、制御部10による制御の下
で、5ワード分のデータ転送を合計5回繰り返す(ステ
ップS218〜S219)。これによって、C=W、即
ち、C=A+B mod Pの演算が完了する。以上の
ように、本多倍長演算装置100は、1クロックサイク
ルで1ワード長の演算を行う回路規模の小さな演算部2
0を備えるにも拘らず、わずか10クロックサイクルで
5ワード長の加算剰余演算を完了した。ここで、もし、
上記第1の処理が終了した段階においてキャリーが生じ
ていなかった場合には、わずか5クロックサイクルで5
ワード長の加算剰余演算の結果Wが得られたことにな
る。
【0047】次に、本多倍長演算装置100がモンゴメ
リ演算(M=A・R^(−1) mod P)を実行す
る場合について、図10〜図16を用いて説明する。図
10は、モンゴメリ演算の式と、モンゴメリ演算に際し
て外部装置から本多倍長演算装置100に与えられる入
力データ、即ち、メモリ入出力部30を経てメモリ部4
0に格納される入力データA、P、Vの例とを示す図で
ある。
【0048】整数Aは、モンゴメリ演算の対象となるデ
ータであり、10ワード長の整数[a9、a8、・・、
a1、a0]である。整数Pは、剰余演算における法で
あり、5ワード長の整数[p4、p3、p2、p1、p
0]である。整数Qは、整数Pの符号を反転した値(−
P)に等しい5ワード長の整数[q4、q3、q2、q
1、q0]である。整数Vは、外部装置による上記前計
算の計算結果である5ワード長の整数[v4、v3、v
2、v1、v0]である。
【0049】図11は、本多倍長演算装置100による
モンゴメリ演算におけるメモリ部40のメモリマップを
示す。ここには、上記4つの入力データA、P、Q、V
に加えて、演算過程で生じる5ワード長の中間データB
[b4、b3、b2、b1、b0]、6ワード長の中間
データC[c5、c4、c3、c2、c1、c0]、演
算過程で必要とされる1ワード長の固定値E[e0]
(0xffffffff;1ワードの全ビットがオール“1”)及
びこのモンゴメリ演算の最終結果を格納するための5ワ
ード長の整数M[m4、m3、m2、m1、m0]及び
N[n4、n3、n2、n1、n0]も併せて示されて
いる。
【0050】第1メモリ41には、整数A、P、Q及び
Mが格納され、第2メモリ42には、整数V、中間デー
タB、C、固定値E及び整数Nが格納される。このよう
なメモリマップによって、演算部20は、1クロックサ
イクルで、4つのデータA、P、Q及びMから選択した
2つのワードと、3つのデータV、B、C及びEから選
択した2つのワードとを同時に読み出し又は書き込みす
ることができる。 [step1]次に、図12(a)、(b)及び図13
を用いて、本多倍長演算装置100がモンゴメリ演算の
step1を実行する場合の動作、即ち、図4に示され
たステップS203の詳細な動作を説明する。
【0051】図12(a)、(b)は、いずれも、モン
ゴメリ演算のstep1を実行する場合の演算部20の
動作状態と演算部20への入力データとを示す模式図で
ある。演算部20は、整数Aを構成する各ワードaiと
整数Vを構成する各ワードvjとを乗算するとともに、
得られた同一桁の部分積を累積(累算)し、その累積結
果を整数Bに代入する。
【0052】図12(a)は、同一桁の部分積の累積に
おける最初の加算時における演算部20の動作状態を示
す。ここでは、演算部20のセレクタ25は、レジスタ
23から出力される2ワード長のデータの上位ワードを
下位ワードし“0”を上位ワードとする2ワード長のデ
ータを選択している。これは、同一桁の部分積の累積に
よって得られた2ワード長の累積値の上位ワードを、そ
の上位の部分積の累積、即ち、1ワードだけ上位にシフ
トした桁に位置する部分積の累積に加算させるためであ
る。
【0053】図12(b)は、それら同一桁の部分積の
累積における2回目以降の加算時における演算部20の
動作状態を示す。ここでは、演算部20のセレクタ25
は、レジスタ23から出力される2ワード長のデータを
選択している。図13は、演算部20がモンゴメリ演算
のstep1を実行する場合の演算手順を示す図であ
る。本図の上部には、乗算の対象となる整数A[a4、
a3、a2、a1、a0]と整数V[v4、v3、v
2、v1、v0]が示され、本図の中央部には、算出順
に従って上方から下方に部分積が配置され、本図の下部
には、同一桁の部分積の累積結果が整数B[b4、b
3、b2、b1、b0]の各ワードに代入される様子が
示されている。
【0054】なお、10ワード長の整数Aのうち下位5
ワードだけが乗算の対象とされているのは、図10に示
されるように、モンゴメリ演算のstep1では整数R
の剰余(mod R)を求めればよいからである。この
step1における演算部20の具体的な動作は次の通
りである。まず、制御部10は、演算部20及びメモリ
入出力部30に制御信号を送ることで、演算部20を初
期化しておく。
【0055】第1クロックサイクルにおいて、演算部2
0は、制御部10からの制御信号により図12(a)に
示される動作状態となった後に、メモリ入出力部30を
経て第1メモリ41から送られてくるデータa0と第2
メモリ42から送られてくるデータv0とを乗算器21
で乗算し、その結果をレジスタ23に格納する。第2ク
ロックサイクルにおいて、演算部20は、第1メモリ4
1から送られてくるデータa1と第2メモリ42から送
られてくるデータv0とを乗算器21で乗算し、その結
果得られた乗算結果と第1クロックサイクルで得られた
乗算結果を1ワードだけシフトダウンした値とを加算
し、レジスタ23に格納すると共に、レジスタ23に保
持されていた第1クロックサイクルでの乗算結果の下位
ワードを第2メモリ42の記憶領域b0に書き込む。
【0056】第3クロックサイクルにおいて、演算部2
0は、制御部10からの制御信号により図12(b)に
示される動作状態となった後に、第1メモリ41から送
られてくるデータa0と第2メモリ42から送られてく
るデータv1とを乗算器21で乗算し、その乗算結果と
レジスタ23に格納されていた2ワード長の累積値とを
加算し、レジスタ23に格納する。
【0057】第4クロックサイクルにおいて、演算部2
0は、制御部10からの制御信号により図12(a)に
示される動作状態となった後に、第1メモリ41から送
られてくるデータa2と第2メモリ42から送られてく
るデータv0とを乗算器21で乗算し、その結果得られ
た乗算結果と第3クロックサイクルで得られた乗算結果
を1ワードだけシフトダウンした値とを加算し、レジス
タ23に格納すると共に、レジスタ23に保持されてい
た第3クロックサイクルでの乗算結果の下位ワードを第
2メモリ42の記憶領域b1に書き込む。
【0058】以下、同様にして、データaiとデータv
jそれぞれの添字i及びjの合計が0、1、2、3及び
4となる全ての組み合わせについて、部分積(同一桁の
部分積)を算出し、累算し、その結果を記憶領域b0、
b1、b2、b3、b4に格納することを繰り返す。こ
のようにして、step1の処理が完了する。なお、第
15クロックサイクルでの乗算及び累算の終了後にレジ
スタ23に残った上位5ワードについては、切り捨て
る。 [step2]次に、図14(a)、(b)、(c)及
び図15を用いて、本多倍長演算装置100がモンゴメ
リ演算のstep2を実行する場合の動作、即ち、図4
に示されたステップS204の詳細な動作を説明する。
【0059】図14(a)、(b)は、いずれも、モン
ゴメリ演算のstep2における前半の処理(B×P)
を実行する場合の演算部20の動作状態と演算部20へ
の入力データとを示す模式図である。演算部20は、s
tep1で得られた整数Bを構成する各ワードbiと整
数Pを構成する各ワードpjとを乗算するとともに、得
られた同一桁の部分積を累積し、その累積結果の上位6
ワードを整数Cに代入する。
【0060】図14(a)は、同一桁の部分積の累積に
おける最初の加算時における演算部20の動作状態を示
し、図14(b)は、それら同一桁の部分積の累積にお
ける2回目以降の加算時における演算部20の動作状態
を示す。図14(c)は、モンゴメリ演算のstep2
における後半の処理(上記前半の処理結果B×Pと整数
Aとの加算)を実行する場合の演算部20の動作状態と
演算部20への入力データとを示す模式図である。演算
部20は、上記前半の処理で得られた整数Cと1ワード
長の固定整数Eと整数Aの上位6ワードとを加算し、そ
の加算結果の上位5ワードを整数Mに代入する。
【0061】図15は、演算部20がモンゴメリ演算の
step2を実行する場合の演算手順を示す図である。
本図の上部には、前半の処理における乗算の対象となる
整数B[b4、b3、b2、b1、b0]と整数P[p
4、p3、p2、p1、p0]が示され、本図の中央部
には、算出順に従って上方から下方に部分積が配置され
ている。そして、本図の下部には、同一桁の部分積の累
積結果の上位6ワードが整数C[c5、c4、c3、c
2、c1、c0]の各ワードに代入され、その整数Cと
整数Eと整数Aの上位6ワードとが加算され、その加算
結果の上位5ワードが整数Mに代入される様子が示され
ている。
【0062】なお、上記乗算及び加算の結果(B×P+
A)における上位5ワードだけが整数Mに格納されてい
るのは、B×P+A mod R = 0 という関係
より、上記演算結果(B×P+A)の下半分(下位5ワ
ード)は必ず“0”になることが分かっているからであ
る。
【0063】従って、このstep2では、上記演算結
果(B×P+A)の上位5ワードだけに着目して必要な
演算を実行している。ただし、演算(B×P+A)にお
ける第6ワード(最上位桁より第6番目のワード、以下
同様)から第5ワードへのキャリーを考慮するために、
整数Bと整数Pとの乗算及び整数Aの加算については上
位6ワードだけを演算対象としている。
【0064】さらに、演算(B×P+A)における第7
ワードから第6ワードを経て第5ワードに伝播するキャ
リーを考慮するために、第6ワードの加算時においてオ
ール“1”をも加算している。これは、上述したよう
に、演算(B×P+A)の第6ワードが必ず“0”にな
ることが判明していることから、もし、データc0とデ
ータa4との加算値が“0”である場合には、第7ワー
ドからのキャリーを考慮する必要がないが、データc0
とデータa4との加算値が“0”でない場合には、演算
第7ワードからのキャリーを考慮する必要があることに
基づく。
【0065】なお、データc0とデータa4との加算に
おいてオール“1”のデータe0を加算することは、次
の処理(1)〜(4)を行うことに等しい。 (1)データc0とデータa4との加算結果が“0”
で、かつ、キャリーが“0”である場合には、データm
0の算出(c1+a5)においてキャリー“0”を加算
し、(2)データc0とデータa4との加算結果が
“0”で、かつ、キャリーが“1”である場合には、デ
ータm0の算出(c1+a5)においてキャリー“1”
を加算し、(3)データc0とデータa4との加算結果
が“0”でなく、かつ、キャリーが“0”である場合に
は、データm0の算出(c1+a5)においてキャリー
“1”を加算し、(4)データc0とデータa4との加
算結果が“0”でなく、かつ、キャリーが“1”である
場合には、データm0の算出(c1+a5)においてキ
ャリー“2”を加算する。
【0066】このstep2における演算部20の具体
的な動作は次の通りである。第1クロックサイクルにお
いて、演算部20は、制御部10からの制御信号により
図14(a)に示される動作状態となった後に、メモリ
入出力部30を経て第2メモリ42から送られてくるデ
ータb3と第1メモリ41から送られてくるデータp0
とを乗算器21で乗算し、その結果をレジスタ23に格
納する。
【0067】第2クロックサイクルにおいて、演算部2
0は、制御部10からの制御信号により図14(b)に
示される動作状態となった後に、第2メモリ42から送
られてくるデータb2と第1メモリ41から送られてく
るデータp1とを乗算器21で乗算し、その結果得られ
た乗算結果とレジスタ23に保持されていた値とを累算
し、レジスタ23に格納する。
【0068】以下、同様にして、データbiとデータp
jそれぞれの添字i及びjの合計が3となる全ての組み
合わせについて、部分積(同一桁の部分積)を算出し、
累積する(第3〜第4クロックサイクル)。第5クロッ
クサイクルにおいて、演算部20は、制御部10からの
制御信号により図14(a)に示される動作状態となっ
た後に、第2メモリ42から送られてくるデータb4と
第1メモリ41から送られてくるデータp0とを乗算器
21で乗算し、その結果得られた乗算結果とレジスタ2
3に保持されていた値を1ワードだけシフトダウンした
値とを加算し、レジスタ23に格納すると共に、レジス
タ23に保持されていた第4クロックサイクルでの乗算
及び累算の結果の下位ワードを第2メモリ42の記憶領
域c0に書き込む。
【0069】第6クロックサイクルにおいて、演算部2
0は、制御部10からの制御信号により図14(b)に
示される動作状態となった後に、第2メモリ42から送
られてくるデータb3と第1メモリ41から送られてく
るデータp1とを乗算器21で乗算し、その結果得られ
た乗算結果とレジスタ23に保持されていた値とを累算
し、レジスタ23に格納する。
【0070】以下、同様にして、データbiとデータp
jそれぞれの添字i及びjの合計が4〜8となる全ての
組み合わせについて、部分積(同一桁の部分積)を算出
し、累算し、その結果を記憶領域c1、c2、c3、c
4、c5に格納することを繰り返す。 続いて、演算部
20は、制御部10からの制御信号により図14(c)
に示される動作状態となった後に、メモリ入出力部30
を経て第2メモリ42から送られてくる整数C[c5、
c4、c3、c2、c1、c0]及び整数E[−、−、
−、−、−、e0]と第1メモリ41から送られてくる
整数A[a9、a8、a7、a6、a5、a4]とをワ
ード単位で桁を揃えて加算し、その結果をそれぞれ第1
メモリ41の整数M[m4、m3、m2、m1、m0、
−]に代入する。
【0071】具体的には、演算部20は、第1クロック
サイクルにおいて、データc0とデータa4とデータe
0とを加算し、第2クロックサイクルにおいて、データ
c1とデータa5とキャリーとを加算し、その結果をデ
ータm0に代入し、第3クロックサイクルにおいて、デ
ータc2とデータa6とキャリーとを加算し、その結果
をデータm1に代入し、以下同様に繰り返していく。
【0072】このようにして、step2の処理が完了
する。なお、このstep2では、整数Bと整数Pとの
部分積のうち、例えばb0*p0、b1*p0などの添
字iの和が2以下の部分積の算出は行われていないの
で、全ての部分積を算出する通常の乗算に比べ、処理時
間が短縮化されている。[step3]次に、図16
(a)、(b)を用いて、本多倍長演算装置100がモ
ンゴメリ演算のstep3を実行する場合の動作、即
ち、図4に示されたステップS205の詳細な動作を説
明する。
【0073】図16(a)、(b)は、いずれも、モン
ゴメリ演算のstep3における演算部20の動作状態
と演算部20への入力データとを示す模式図である。演
算部20は、第1メモリ41(整数M)と第2メモリ4
2(整数N)とを一時的な作業領域(バッファ)として
交互に用いながら、step2で得られた整数Mの整数
Pを法とする剰余(M mod P)を算出し、その結
果を整数M又は整数Nに格納する。
【0074】図16(a)は、step3の前半の処理
における演算部20の動作状態を示す。前半の処理で
は、演算部20は、(i)整数Mと整数Q(=−P)と
を加算し、その結果を整数Nに代入することと、(ii)
整数Nと整数Qとを加算し、その結果を整数Mに代入す
ることとを、得られた整数N(又は整数M)が負になる
までそれら加算を交互に繰り返す。
【0075】図16(b)は、step3の後半の処理
における演算部20の動作状態を示す。演算部20は、
上記前半の処理で得られた負の整数M(又は整数N)に
整数Pを加算し、その結果を整数N(又は整数M)に代
入する。このstep3における演算部20の具体的な
動作は次の通りである。第1クロックサイクルにおい
て、演算部20は、制御部10からの制御信号により図
16(a)に示される動作状態となった後に、メモリ入
出力部30を経て第1メモリ41から送られてくるデー
タm0とデータq0とを加算し、その結果をレジスタ2
3に格納する。
【0076】第2クロックサイクルにおいて、演算部2
0は、第1メモリ41から送られてくるデータm1とデ
ータq1とを加算し、その結果をレジスタ23に格納す
ると共に、レジスタ23に保持されていた値の下位1ワ
ードを第2メモリ42の記憶領域n0に格納する。以下
同様の加算と格納を繰り返すことで、第2メモリ42の
整数Nは、M+Q、即ち、M−Pの値となる。
【0077】次に、制御部10は、上記加算における最
後の演算で生じたキャリーをメモリ入出力部30から受
け取ることで、いま格納された新たな整数Nの符号を検
査する。その結果、整数Nが正である場合には、今度
は、その整数Nに整数Qを加算し整数Mに代入するとい
う演算をワード単位で実行し、得られた整数Mの符号を
検査する。以上の2種類の加算(M+Q→N、N+Q→
M)を、整数M(又は整数N)が負になるまで、交互に
繰り返す。
【0078】その結果、整数M(又は整数N)が負とな
った場合には、制御部10は、演算部20及びメモリ入
出力部30に制御信号を送ることで、演算部20の動作
状態を図16(b)に示される状態に設定する。そし
て、演算部20は、上記前半の処理での加算と同様にし
て、ワード単位での加算と格納を繰り返すことにより、
整数M(又は整数N)と整数Pとを加算し、その結果を
整数N(又は整数M)に代入する。
【0079】このようにして、整数Mの整数Pを法とす
る剰余(M mod P)、即ち、モンゴメリ演算の最
終結果は、第1メモリ41の整数M又は第2メモリ42
の整数Nに格納され、step3の処理が終了する。以
上のように、本実施の形態の多倍長演算装置100によ
れば、わずか1個の演算部20を備えるにも拘らず、楕
円曲線暗号等に必要とされる加算剰余とモンゴメリ演算
という2種類の多倍長演算が実行される。
【0080】また、乗算器21による2ワードの乗算及
び3入力加算器22による3ワードの加算処理と、直前
の乗算及び加算結果のメモリ部40への格納処理とは、
パイプラインの異なるステージとして同時並列に実行さ
れるので、高速な多倍長演算が可能となる。以上、本発
明の多倍長演算装置について、実施の形態に基づいて説
明したが、本発明はこのような実施の形態に限られない
のは言うまでもない。
【0081】例えば、本実施の形態では、本多倍長演算
装置100は5ワード長の多倍長演算を対象とし、さら
に、演算部20の処理単位(1ワード)は32ビットで
あったが、本発明はこのような数値に限定されるもので
はない。また、本多倍長演算装置100は、ある整数か
ら法Pを減算するために、予め外部装置から取得してい
た整数Q(=−P)を加算する手法をとっていたが、法
Pで直接減算する手法をとってもよい。
【0082】図17は、法Pで直接減算することが可能
な変形例に係る演算部50の構成を示す回路である。こ
の演算部50は、上記実施の形態における演算部20に
おいて、3入力加算器22の第2入力ポートin2の直
前に符号反転部51を追加挿入した構成に等しい。この
符号反転部51は、nワード長の整数の符号を反転する
機能を有し、図18(a)に示される回路構成と、図1
8(b)に示される動作機能を有する。つまり、この符
号反転部51は、nワード長の整数の最下位ワードが入
力された場合には、その各ビットを反転させた後に
“1”を加算した値を出力し、それよりも上位のワード
が入力された場合には、その各ビットを反転させて出力
する。
【0083】このような符号反転部51に整数Pの各ワ
ードを順次入力させることは、3入力加算器22の第2
入力ポートin2に整数Q(=−P)の各ワードを順次
入力することに等しくなる。従って、上記演算部20に
代えてこの演算部50を用いることで、外部装置は、事
前に整数Qを生成して多倍長演算装置100に与えてお
くという処理が不要となる。
【0084】また、本多倍長演算装置100は、演算部
20とメモリ部40間のデータ転送及び外部装置とメモ
リ部40間のデータ転送を実行するメモリ入出力部30
を備えていたが、本発明はこのような構成に限定される
ものではない。多倍長演算装置100にメモリ入出力部
30を含ませるのではなく、これら2種類のデータ転送
を外部装置や他のデータ転送制御回路等に実行させる構
成としてもよい。また、それとは逆に、これら2種類の
データ転送それぞれを実行する回路を分離し、演算部2
0及びメモリ部40それぞれに含ませて実装してもよ
い。
【0085】また、第1メモリ41及び第2メモリ42
それぞれは、1クロックサイクルで2つの独立したアク
セスを同時に行うことができるデュアルポートメモリで
あったが、2倍の周波数のクロックの供給を受けて動作
する1ポートメモリであってもよい。また、多倍長演算
装置100は、モンゴメリ演算のstep2において、
6ワード長の中間データCと整数Aの上位5ワードと1
ワード長の整数Eとを加算することで5ワード長の整数
Mを算出したが、これに代えて、整数Aの上位(n+
1)ワードを整数AAとしたときに、(i)中間データ
C及び整数AAそれぞれの最下位ワードを加算したとき
のキャリーと、(ii)その加算結果の1ワードが“0”
の場合に“0とし、“0”でない場合に“1”とする1
ビットの論理値と、(iii)前記中間データCの上位n
ワードと、(iv)前記整数AAの上位nワードとを加算
してもよい。これによって、多倍長演算装置100は、
外部装置から整数Eを取得することなく、モンゴメリ演
算のstep2を完遂することができる。
【0086】また、多倍長演算装置100は、モンゴメ
リ演算のstep3において、モンゴメリ演算の最終結
果を第1メモリ41(整数M)及び第2メモリ42(整
数N)のいずれかに格納して終了したが、これに代え
て、加算剰余演算における第3の処理のように、最終結
果が格納された整数Nを整数Mに転送する処理を追加し
てもよい。これによって、モンゴメリ演算の最終結果が
必ず整数Mに格納されることが保証される。
【0087】また、多倍長演算装置100は、モンゴメ
リ演算において、部分積を算出し累算するときに、同一
桁の部分積を生成するような、全ての1ワードどおしの
組み合わせを選んで、乗算器の入力値を設定し、その結
果とレジスタ23に格納された累算値とを加算したが、
これに代えて、メモリ部40を介して部分積の累算値を
算出してもよい。
【0088】つまり、メモリ部40に累算値を格納する
ための領域を予め設けておき、部分積の算出と同時に、
累算の対象となる1ワード長の累算値をメモリ部40か
ら読み出し、それら部分積と累算値とを桁を合わせて加
算し、その加算結果を対応するメモリ部40の領域に格
納することによって累算値を更新していってもよい。こ
れによって、乗算の対象となる2つのデータの組み合わ
せを選択する際の自由度が大きくなる。
【0089】また、演算部20は、乗算器21による乗
算と3入力加算器22による乗算結果の累算とを1クロ
ックサイクルで実行したが、乗算器21と3入力加算器
22間にレジスタを介在させることで、これら乗算と累
算とを2クロックサイクルで実行してもよい。つまり、
演算部20のパイプライン構成を3ステージ(乗算、加
算及びメモリ部40への書き込み)としてもよい。これ
によって、1クロックサイクルにおけるパイプライン処
理の最大負荷が軽減され、そのクリティカルパスが短縮
化されるので、演算部20の動作周波数を向上させるこ
とが可能となる。
【0090】
【発明の効果】以上の説明から明らかなように、本発明
に係る多倍長演算装置は、外部装置からの指示に従っ
て、2以上のワード長の整数を対象とする剰余演算を実
行する多倍長演算装置であって、メモリと、ワード単位
で、加算及び乗算を含む2以上の種類の演算を実行し、
1ワード長の演算結果を出力する演算器と、剰余演算の
対象となる少なくとも1つの整数を前記外部装置から前
記メモリに格納する第1データ転送と、前記メモリに格
納された整数をワード単位で演算器に入力させる第2デ
ータ転送と、前記演算器から出力される演算結果を前記
メモリに格納する第3データ転送と、前記演算結果を前
記メモリから前記外部装置に出力する第4データ転送と
を行うメモリ入出力回路と、前記外部装置からの指示に
従って、前記メモリ入出力回路に対して実行すべき前記
第2及び第3データ転送の対象を指示して制御し、前記
演算器に対して実行すべき演算の種類を指示して制御す
ることにより、前記演算器に前記メモリに格納された整
数に対する2以上の種類の剰余演算を選択的に実行さ
せ、前記メモリ入出力回路に前記剰余演算の結果を前記
メモリに格納させる制御回路とを備えることを特徴とす
る。
【0091】これによって、CPU等の外部装置から指
示を受けた多倍長演算装置は、その外部装置とは独立し
て、楕円曲線暗号等に必要とされる2以上の種類の剰余
演算を選択的に実行するので、コプロセッサとして用い
られることで、高速な多倍長演算が実現される。また、
この多倍長演算装置は、ロングワードの演算器を備える
のではなく、ワード単位で動作する演算器を備え、これ
を繰り返し用いることで多倍長演算を完遂することがで
きるので、小さな回路規模で実現され得る。
【0092】また、演算器及びメモリ入出力回路の具体
的な動作内容は、固定化されているのではなく、外部装
置からの指示を受けた制御回路によって決定される。従
って、演算器による繰り返し回数等を制御することで、
ハードウェアを変更することなく、様々なワード長の整
数、即ち、様々な安全性に対応した剰余演算を実行する
ことが可能な柔軟な多倍長演算装置が実現される。
【0093】ここで、前記演算器は、少なくとも2つの
1ワード長のデータを加算する加算器と、少なくとも2
つの1ワード長のデータを乗算する乗算器とを有し、前
記メモリ入出力回路は、演算の対象となる2個の整数を
前記メモリに格納した後に、それら2個の整数それぞれ
から1ワード長のデータを同時に読み出して前記加算器
又は前記乗算器に入力させてもよい。これによって、2
つの被演算データは同時に演算器に入力されるので、シ
ーケンシャルに入力される場合に比べ、処理は高速化さ
れる。
【0094】また、前記メモリは、異なる2つのアドレ
スによって特定される2つの記憶領域それぞれに対して
同時にワード単位での読み書きが可能なデュアルポート
メモリを2個有し、前記メモリ入出力回路は、2個の前
記デュアルポートメモリそれぞれに格納された2個の前
記整数それぞれから1ワード長のデータを同時に読み出
して前記加算器又は前記乗算器に入力させると同時に、
前記加算器又は前記乗算器から出力される1ワード長の
データを2個の前記デュアルポートメモリのいずれかに
格納してもよい。これによって、メモリから演算器への
データの入力と演算器からメモリへのデータの出力とが
同時並列に行われるので、演算器とメモリ間のデータ転
送に伴うオーバーヘッドは最小限に抑えられる。つま
り、ワード単位で休みなくメモリへの入出力を繰り返す
ことで、処理の高速化が図られる。
【0095】また、また、前記演算器は、前記制御回路
からの指示に従って、(i)少なくとも2つの1ワード
長のデータに対する加算と、(ii)2つの1ワード長の
データに対する乗算と、(iii)2つの1ワード長のデ
ータに対する乗算及びその乗算結果の累算のいすれかを
実行したり、前記演算器は、2つの1ワード長のデータ
を入力とし、2ワード長のデータを出力する乗算器と、
前記乗算器から出力される2ワード長のデータを含む少
なくとも2つの2ワード長のデータを入力とし、少なく
とも2以上のワード長のデータを出力する加算器と、前
記制御回路からの指示に従って、前記メモリ入出力回路
から送られてくる2つの1ワード長のデータを前記乗算
器及び前記加算器のいずれかに入力させると共に、前記
加算器から出力されたデータの前記加算器への入力を制
御することによって、前記乗算器及び前記加算器に前記
3つの演算(i)〜(iii)のいずれかを実行させる選択
回路とを有してもよい。
【0096】これによって、演算器は、わずか1個の乗
算器と1個の加算器とを備えるにも拘わらず、3種類の
演算の中から制御回路によって指定された演算を実行す
るので、小さな回路規模で多くの種類の剰余演算を実行
することができる多倍長演算装置が実現される。また、
前記2以上の種類の剰余演算には加算剰余が含まれ、前
記制御回路は、前記外部装置から加算剰余を実行する旨
及び加算剰余の対象となる整数のワード数nの指示を受
けた場合に、前記メモリ入出力回路及び前記演算器が以
下の処理(i)〜(iii)を実行するように前記メモリ入
出力回路及び前記演算器を制御してもよい。つまり、
(i)前記メモリ入出力回路は、加算剰余の対象となる
2つのnワード長の整数A及びBと法を示すnワード長
の整数Pとを前記外部装置から取得して前記メモリに格
納し、(ii)前記メモリ入出力回路は、前記メモリに格
納された前記整数A、B及びPそれぞれから同一桁の1
ワード長のデータa、b及びpを同時に読み出して前記
演算器に入力させると共に、前記演算器から出力される
1ワード長のデータwを前記メモリに格納することを、
最下位ワードから順にnワード分だけ繰り返すことによ
り、nワード長の整数Wを前記メモリに格納し、(ii
i)前記演算器は、前記メモリ入出力回路から送られて
くるデータa、b及びpに対して、キャリーを伝播させ
ながら、a+b−pを算出し、その結果wを出力するこ
とをn回繰り返す。
【0097】これによって、多倍長演算装置は、A+B
−Pという加算剰余を投機実行するので、整数A及びB
が、P≦A+B<2Pの場合には、上記処理(i)〜(i
ii)だけで整数Aと整数Bとの加算剰余が完了する。ま
た、前記制御回路は、前記処理(i)〜(iii)が完了し
た直後における前記演算器からのキャリーの発生を検査
し、キャリーが発生している場合には、前記メモリ入出
力回路及び前記加算器を制御することで、さらに、次の
処理(iv)〜(v)を実行させてもよい。つまり、(i
v)前記メモリ入出力回路は、前記メモリに格納された
前記整数W及びPそれぞれから同一桁の1ワード長のデ
ータw及びpを同時に読み出して前記演算器に入力させ
ると共に、前記演算器から出力される1ワード長のデー
タcを前記メモリに格納することを、最下位ワードから
順にnワード分だけ繰り返すことにより、nワード長の
整数Cを前記メモリに格納し、(v)前記演算器は、前
記メモリ入出力回路から送られてくるデータw及びpに
対して、キャリーを伝播させながら、w+pを算出し、
その結果cを出力することをn回繰り返す。
【0098】これによって、上記処理(i)〜(iii)に
よってA+Bが負となってしまったときの手当て(法P
の引き戻し)が行われる。また、前記2以上の種類の剰
余演算には、1ワードをkビット、整数Aを2nワード
長の入力データ、整数Rを2^(k×n)としたとき
に、nワード長の整数Pを法とするA・R^(−1)の
剰余を算出するためのモンゴメリリダクションが含ま
れ、前記制御回路は、前記外部装置からモンゴメリリダ
クションを実行する旨及びモンゴメリリダクションの対
象となる整数Aのワード数2nの指示を受けた場合に、
前記メモリ入出力回路及び前記演算器がモンゴメリリダ
クションを実行するように前記メモリ入出力回路及び前
記演算器を制御してもよい。
【0099】これによって、モンゴメリリダクションと
いう高速処理アルゴリズムに基づく剰余演算を実行する
多倍長演算装置が実現される。また、前記制御回路は、
前記外部装置からモンゴメリリダクションを実行する旨
の指示を受けた場合に、前記メモリ入出力回路及び前記
演算器が以下の処理(i)〜(v)を実行するように前記
メモリ入出力回路及び前記演算器を制御してもよい。つ
まり、(i)前記メモリ入出力回路は、前記整数A、
P、及び、前記整数Rを法とする−P^(−1)の剰余
である整数Vとを前記外部装置から取得して前記メモリ
に格納し、(ii)前記演算器は、前記メモリに格納され
た前記整数Aの下位nワードと前記整数Vとのワードご
との部分積の算出とそれら部分積における同一ワードの
累算とを、最下位ワードから順に累算結果が得られるよ
うにnワードだけ繰り返し、その累算結果をnワードの
中間データBとして前記メモリに格納し、(iii)前記
演算器は、前記メモリに格納された前記中間データBと
整数Pとのワードごとの部分積の算出とそれら部分積に
おける同一ワードの累算とを、最下位ワードを第0ワー
ドとしたときの第0ワードから第(n−3)は求めず
に、第(n−2)ワードから第(2n−1)ワードまで
を求め、その累算結果の上位(n+1)ワードを中間デ
ータDとして前記メモリに格納し、(iv)前記演算器
は、前記整数Aの上位(n+1)ワードを整数AAとし
たときに、前記メモリに格納された前記中間データD及
び前記整数AAそれぞれの最下位ワードを加算したとき
のキャリーと、その加算結果の1ワードが0の場合に0
とし、0でない場合に1とする1ビットの論理値とを生
成し、前記中間データDの上位nワードと、前記整数A
Aの上位nワードと、前記キャリーと、前記論理値とを
加算することを、最下位ワードから順にキャリーを伝播
させながらワード単位での加算をnワード分繰り返すこ
とによって実行し、その加算結果をnワードの出力デー
タMとして前記メモリに格納し、(v)前記演算器は、
前記メモリに格納された前記出力データMが前記整数P
以上である場合に、前記出力データMが0以上で前記整
数Pより小さい整数となるまで前記出力データMから整
数Pを減算することを、最下位ワードから順にキャリー
を伝播させながらワード単位での減算をnワード分繰り
返すことによって実行し、その減算結果を新たなnワー
ドの出力データMとして前記メモリに格納する。
【0100】これによって、処理(ii)及び(iii)で
の乗算においては、全ての可能な組み合わせについての
部分積が算出されるのではなく、必要な部分積だけが算
出され累算されるので、乗算処理が短縮化される。ま
た、前記演算器は、前記処理(iv)において、前記中間
データDと前記整数AAそれぞれの全てのワードとオー
ル1の1ワード長のデータとを加算し、得られた加算結
果の上位nワードを前記出力データMとして前記メモリ
に格納してもよい。これによって、処理(iv)における
4つのデータの加算は、3つのデータの加算に置き換え
られ、例えば、3入力加算器による2回の演算が1回で
済む。
【0101】また、前記演算器は、前記処理(ii)及び
(iii)において、2つのnワード長の整数それぞれか
ら選択した1ワードどうしの部分積を算出し累算すると
きに、同一桁の部分積を生成する全ての1ワードどうし
の組み合わせを選んで部分積を算出し累算することを下
位桁から順に繰り返していってもよい。これによって、
部分積の算出と累算とは効率的な順序で実行され、パイ
プラインの乱れは生じにくい。
【0102】また、前記演算器は、前記処理(ii)及び
(iii)において、同一桁の部分積の累算で得られた2
ワード長の累算結果のうち、下位1ワードを乗算結果と
して前記メモリに格納すると共に、上位1ワードを次に
算出される1ワードだけ桁の高い部分積に加算させても
よいし、前記演算器は、前記部分積の累算結果の下位1
ワードを前記メモリに格納すること、及び、前記部分積
の累算結果の上位1ワードと次に算出される1ワードだ
け桁の高い部分積とを加算することを同時に実行しても
よい。これによって、部分積の累算と、その累算結果の
上位ワードをより高い桁の部分積に伝播させる処理とが
同時並列に行われるので、全ての部分積に対する累算が
高速化される。
【0103】また、前記演算器は、前記処理(ii)及び
(iii)において、部分積を算出し累算するときに、部
分積の算出と同時に、累算の対象となる1ワード長の累
算値を前記メモリから読み出し、それら部分積と累算値
とを桁を合わせて加算し、その加算結果を対応する前記
メモリに格納することによって累算値を更新していって
もよい。これによって、乗算の対象となる2つのデータ
の組み合わせを選択する際の自由度が大きくなる。
【図面の簡単な説明】
【図1】本発明の多倍長演算装置の回路構成を示すブロ
ック図である。
【図2】同多倍長演算装置の演算部の詳細な構成を示す
回路図である。
【図3】同多倍長演算装置のメモリ入出力部の詳細な構
成を示す回路図である。
【図4】同多倍長演算装置の全体的な動作の手順を示す
フローチャートである。
【図5】同多倍長演算装置による加算剰余の演算式と外
部装置から多倍長演算装置に与えられる入力データの例
とを示す図である。
【図6】同多倍長演算装置による加算剰余におけるメモ
リ部のメモリマップを示す。
【図7】同多倍長演算装置が加算剰余演算を実行する場
合の動作手順を示すフローチャートである。
【図8】(a)は図7に示された第1の処理(ステップ
S210〜S212)、(b)は第2の処理(ステップ
S214〜S216)、(c)は第3の処理(ステップ
S217〜S219)、における演算部の動作状態(演
算機能)と演算部への入力データとを示す模式図であ
る。
【図9】(a)は図7に示された第1の処理(ステップ
S210〜S212)、(b)は第2の処理(ステップ
S214〜S216)、(c)は第3の処理(ステップ
S217〜S219)、における演算部のパイプライン
動作を示すタイミングチャートである。
【図10】同多倍長演算装置によるモンゴメリ演算の演
算式と外部装置から多倍長演算装置に与えられる入力デ
ータの例とを示す図である。
【図11】ッ多倍長演算装置によるモンゴメリ演算にお
けるメモリ部のメモリマップを示す。
【図12】(a)はモンゴメリ演算のstep1におい
て同一桁の部分積を算出・累算する最初、(b)はモン
ゴメリ演算のstep1における同一桁の部分積を算出
・累算する2回目以降、における演算部の動作状態と演
算部への入力データとを示す模式図である。
【図13】演算部がモンゴメリ演算のstep1を実行
する場合の演算手順を示す図である。
【図14】(a)はモンゴメリ演算のstep2の前半
の処理(B×P)において同一桁の部分積を算出・累算
する最初、(b)はモンゴメリ演算のstep2の前半
の処理(B×P)において同一桁の部分積を算出・累算
する2回目以降、(c)はモンゴメリ演算のstep2
における後半の処理(上記前半の処理結果B×Pと整数
Aとの加算)を実行する場合の演算部の動作状態と演算
部への入力データとを示す模式図である。
【図15】演算部がモンゴメリ演算のstep2を実行
する場合の演算手順を示す図である。
【図16】(a)はモンゴメリ演算のstep3におけ
る前半の処理(M+Q、又は、N+Q)、(b)はモン
ゴメリ演算のstep3における後半の処理(M+P、
又は、N+P)、における演算部の動作状態と演算部へ
の入力データとを示す模式図である。
【図17】減算機能を有する変形例に係る演算部の構成
を示す回路である。
【図18】(a)は変形例に係る演算部の符号反転部の
回路構成を示し、(b)は変形例に係る演算部の符号反
転部の動作機能を示す。
【符号の説明】
10 制御部 20 演算部 21 乗算器 22 3入力加算器 23 レジスタ 24〜26 セレクタ 30 メモリ入出力部 31 バススイッチ部 32 入出力制御部 33 アドレス生成部 40 メモリ部 41 第1メモリ 42 第2メモリ 50 変形例に係る演算部 51 符号反転部 61〜69 データバス 71〜75 アドレスバス 100 多倍長演算装置
───────────────────────────────────────────────────── フロントページの続き (72)発明者 小野 貴敏 愛知県名古屋市中区栄2丁目6番1号 白 川ビル別館5階 株式会社松下電器情報シ ステム名古屋研究所内

Claims (17)

    【特許請求の範囲】
  1. 【請求項1】 外部装置からの指示に従って、2以上の
    ワード長の整数を対象とする剰余演算を実行する多倍長
    演算装置であって、 メモリと、 ワード単位で、加算及び乗算を含む2以上の種類の演算
    を実行し、1ワード長の演算結果を出力する演算器と、 剰余演算の対象となる少なくとも1つの整数を前記外部
    装置から前記メモリに格納する第1データ転送と、前記
    メモリに格納された整数をワード単位で演算器に入力さ
    せる第2データ転送と、前記演算器から出力される演算
    結果を前記メモリに格納する第3データ転送と、前記演
    算結果を前記メモリから前記外部装置に出力する第4デ
    ータ転送とを行うメモリ入出力回路と、 前記外部装置からの指示に従って、前記メモリ入出力回
    路に対して実行すべき前記第2及び第3データ転送の対
    象を指示して制御し、前記演算器に対して実行すべき演
    算の種類を指示して制御することにより、前記演算器に
    前記メモリに格納された整数に対する2以上の種類の剰
    余演算を選択的に実行させ、前記メモリ入出力回路に前
    記剰余演算の結果を前記メモリに格納させる制御回路と
    を備えることを特徴とする多倍長演算装置。
  2. 【請求項2】 前記演算器は、 少なくとも2つの1ワード長のデータを加算する加算器
    と、 少なくとも2つの1ワード長のデータを乗算する乗算器
    とを有し、 前記メモリ入出力回路は、演算の対象となる2個の整数
    を前記メモリに格納した後に、それら2個の整数それぞ
    れから1ワード長のデータを同時に読み出して前記加算
    器又は前記乗算器に入力させることを特徴とする請求項
    1記載の多倍長演算装置。
  3. 【請求項3】 前記メモリは、異なる2つのアドレスに
    よって特定される2つの記憶領域それぞれに対して、ワ
    ード単位で、同時にデータを読み出すこと、及び、デー
    タを読み出すと同時にデータを書き込むことが可能なデ
    ュアルポートメモリを2個有し、 前記メモリ入出力回路は、2個の前記デュアルポートメ
    モリそれぞれに格納された2個の前記整数それぞれから
    1ワード長のデータを同時に読み出して前記加算器又は
    前記乗算器に入力させると同時に、前記加算器又は前記
    乗算器から出力される1ワード長のデータを2個の前記
    デュアルポートメモリのいずれかに格納することを特徴
    とする請求項2記載の多倍長演算装置。
  4. 【請求項4】 前記演算器は、前記制御回路からの指示
    に従って、(i)少なくとも2つの1ワード長のデータ
    に対する加算と、(ii)2つの1ワード長のデータに対
    する乗算と、(iii)2つの1ワード長のデータに対す
    る乗算及びその乗算結果の累算のいすれかを実行するこ
    とを特徴とする請求項1記載の多倍長演算装置。
  5. 【請求項5】 前記演算器は、 2つの1ワード長のデータを入力とし、2ワード長のデ
    ータを出力する乗算器と、 前記乗算器から出力される2ワード長のデータを含む少
    なくとも2つの2ワード長のデータを入力とし、少なく
    とも2以上のワード長のデータを出力する加算器と、 前記制御回路からの指示に従って、前記メモリ入出力回
    路から送られてくる2つの1ワード長のデータを前記乗
    算器及び前記加算器のいずれかに入力させると共に、前
    記加算器から出力されたデータの前記加算器への入力を
    制御することによって、前記乗算器及び前記加算器に前
    記3つの演算(i)〜(iii)のいずれかを実行させ、得
    られた加算結果又は乗算結果における1ワード長のデー
    タを前記演算結果として出力させる選択回路とを有する
    ことを特徴とする請求項4記載の多倍長演算装置。
  6. 【請求項6】 前記2以上の種類の剰余演算には加算剰
    余が含まれ、 前記制御回路は、前記外部装置から加算剰余を実行する
    旨及び加算剰余の対象となる整数のワード数nの指示を
    受けた場合に、前記メモリ入出力回路及び前記演算器が
    以下の処理(i)〜(iii)を実行するように前記メモリ
    入出力回路及び前記演算器を制御することを特徴とする
    請求項1記載の多倍長演算装置。 (i)前記メモリ入出力回路は、加算剰余の対象となる
    2つのnワード長の整数A及びBと法を示すnワード長
    の整数Pとを前記外部装置から取得して前記メモリに格
    納し、 (ii)前記メモリ入出力回路は、前記メモリに格納され
    た前記整数A、B及びPそれぞれから同一桁の1ワード
    長のデータa、b及びpを同時に読み出して前記演算器
    に入力させると共に、前記演算器から出力される1ワー
    ド長のデータwを前記メモリに格納することを、最下位
    ワードから順にnワード分だけ繰り返すことにより、n
    ワード長の整数Wを前記メモリに格納し、 (iii)前記演算器は、前記メモリ入出力回路から送ら
    れてくるデータa、b及びpに対して、キャリーを伝播
    させながら、a+b−pを算出し、その結果wを出力す
    ることをn回繰り返す。
  7. 【請求項7】 前記制御回路は、 前記処理(i)〜(iii)が完了した直後における前記演
    算器からのキャリーの発生を検査し、キャリーが発生し
    ている場合には、前記メモリ入出力回路及び前記加算器
    を制御することで、さらに、次の処理(iv)〜(v)を
    実行させることを特徴とする請求項6記載の多倍長演算
    装置。 (iv)前記メモリ入出力回路は、前記メモリに格納され
    た前記整数W及びPそれぞれから同一桁の1ワード長の
    データw及びpを同時に読み出して前記演算器に入力さ
    せると共に、前記演算器から出力される1ワード長のデ
    ータcを前記メモリに格納することを、最下位ワードか
    ら順にnワード分だけ繰り返すことにより、nワード長
    の整数Cを前記メモリに格納し、 (v)前記演算器は、前記メモリ入出力回路から送られ
    てくるデータw及びpに対して、キャリーを伝播させな
    がら、w+pを算出し、その結果cを出力することをn
    回繰り返す。
  8. 【請求項8】 前記2以上の種類の剰余演算には、1ワ
    ードをkビット、整数Aを2nワード長の入力データ、
    整数Rを2^(k×n)としたときに、nワード長の整
    数Pを法とするA・R^(−1)の剰余を算出するため
    のモンゴメリリダクションが含まれ、 前記制御回路は、前記外部装置からモンゴメリリダクシ
    ョンを実行する旨及びモンゴメリリダクションの対象と
    なる整数Aのワード数2nの指示を受けた場合に、前記
    メモリ入出力回路及び前記演算器がモンゴメリリダクシ
    ョンを実行するように前記メモリ入出力回路及び前記演
    算器を制御することを特徴とする請求項1記載の多倍長
    演算装置。
  9. 【請求項9】 前記制御回路は、前記外部装置からモン
    ゴメリリダクションを実行する旨の指示を受けた場合
    に、前記メモリ入出力回路及び前記演算器が以下の処理
    (i)〜(v)を実行するように前記メモリ入出力回路及
    び前記演算器を制御することを特徴とする請求項8記載
    の多倍長演算装置。 (i)前記メモリ入出力回路は、前記整数A、P、及
    び、前記整数Rを法とする−P^(−1)の剰余である
    整数Vとを前記外部装置から取得して前記メモリに格納
    し、(ii)前記演算器は、前記メモリに格納された前記
    整数Aの下位nワードと前記整数Vとのワードごとの部
    分積の算出とそれら部分積における同一ワードの累算と
    を、最下位ワードから順に累算結果が得られるようにn
    ワードだけ繰り返し、その累算結果をnワードの中間デ
    ータBとして前記メモリに格納し、(iii)前記演算器
    は、前記メモリに格納された前記中間データBと整数P
    とのワードごとの部分積の算出とそれら部分積における
    同一ワードの累算とを、最下位ワードを第0ワードとし
    たときの第0ワードから第(n−3)は求めずに、第
    (n−2)ワードから第(2n−1)ワードまでを求
    め、その累算結果の上位(n+1)ワードを中間データ
    Dとして前記メモリに格納し、(iv)前記演算器は、前
    記整数Aの上位(n+1)ワードを整数AAとしたとき
    に、前記メモリに格納された前記中間データD及び前記
    整数AAそれぞれの最下位ワードを加算したときのキャ
    リーと、その加算結果の1ワードが0の場合に0とし、
    0でない場合に1とする1ビットの論理値とを生成し、
    前記中間データDの上位nワードと、前記整数AAの上
    位nワードと、前記キャリーと、前記論理値とを加算す
    ることを、最下位ワードから順にキャリーを伝播させな
    がらワード単位での加算をnワード分繰り返すことによ
    って実行し、その加算結果をnワードの出力データMと
    して前記メモリに格納し、(v)前記演算器は、前記メ
    モリに格納された前記出力データMが前記整数P以上で
    ある場合に、前記出力データMが0以上で前記整数Pよ
    り小さい整数となるまで前記出力データMから整数Pを
    減算することを、最下位ワードから順にキャリーを伝播
    させながらワード単位での減算をnワード分繰り返すこ
    とによって実行し、その減算結果を新たなnワードの出
    力データMとして前記メモリに格納する。
  10. 【請求項10】 前記演算器は、前記処理(iv)におい
    て、前記中間データDと前記整数AAそれぞれの全ての
    ワードとオール1の1ワード長のデータとを加算し、得
    られた加算結果の上位nワードを前記出力データMとし
    て前記メモリに格納することを特徴とする請求項9記載
    の多倍長演算装置。
  11. 【請求項11】 前記演算器は、前記処理(ii)及び
    (iii)において、各2ワードの部分積を累算するとき
    に同一桁の部分積を生成するような、全ての1ワードど
    おしの組み合わせを選んで、乗算器の入力値を設定し、
    その結果の部分積の累算を下位桁から順に繰り返してい
    くことを特徴とする請求項10記載の多倍長演算装置。
  12. 【請求項12】 前記演算器は、前記処理(ii)及び
    (iii)において、同一桁の部分積の累算で得られた2
    ワード長の累算結果のうち、下位1ワードを乗算結果と
    して前記メモリに格納すると共に、上位1ワードを次に
    算出される1ワードだけ桁の高い部分積に加算させるこ
    とを特徴とする請求項11記載の多倍長演算装置。
  13. 【請求項13】 前記演算器は、前記部分積の累算結果
    の下位1ワードを前記メモリに格納すること、及び、前
    記部分積の累算結果の上位1ワードと次に算出される1
    ワードだけ桁の高い部分積とを加算することを同時に実
    行することを特徴とする請求項12記載の多倍長演算装
    置。
  14. 【請求項14】 前記演算器は、前記処理(ii)及び
    (iii)において、部分積を算出し累算するときに、部
    分積の算出と同時に、累算の対象となる1ワード長の累
    算値を前記メモリから読み出し、それら部分積と累算値
    とを桁を合わせて加算し、その加算結果を対応する前記
    メモリに格納することによって累算値を更新していくこ
    とを特徴とする請求項10記載の多倍長演算装置。
  15. 【請求項15】 外部装置からの指示に従って、2以上
    のワード長の整数を対象とする剰余演算を実行する多倍
    長演算装置であって、 メモリと、 ワード単位で、加算及び乗算を含む2以上の種類の演算
    を実行し、1ワード長の演算結果を出力する演算器と、 剰余演算の対象となる少なくとも1つの整数を前記外部
    装置から前記メモリに格納する第1データ転送と、前記
    メモリに格納された整数をワード単位で演算器に入力さ
    せる第2データ転送と、前記演算器から出力される演算
    結果を前記メモリに格納する第3データ転送と、前記演
    算結果を前記メモリから前記外部装置に出力する第4デ
    ータ転送とを行うメモリ入出力回路と、 前記外部装置からの指示に従って、前記メモリ入出力回
    路に対して実行すべき前記第2及び第3データ転送の対
    象を指示して制御し、前記演算器に対して実行すべき演
    算の種類を指示して制御することにより、前記演算器に
    前記メモリに格納された整数に対する2以上の種類の剰
    余演算を選択的に実行させ、前記メモリ入出力回路に前
    記剰余演算の結果を前記メモリに格納させる制御回路と
    を備え、 前記2以上の種類の剰余演算には加算剰余とモンゴメリ
    リダクションとが含まれ、 前記制御回路は、前記外部装置から加算剰余を実行する
    旨の指示を受けた場合に、前記演算器がnワード長の整
    数Pを法として2つのnワード長の整数AとBとを加算
    するように前記メモリ入出力回路及び前記演算器を制御
    し、前記外部装置からモンゴメリリダクションを実行す
    る旨の指示を受けた場合に、前記演算器が1ワードをk
    ビット、整数Aを2nワード長の入力データ、整数Rを
    2^(k×n)としたときに、1ワード長の整数Pを法
    とするA・R^(−1)の剰余を算出するように前記メ
    モリ入出力回路及び前記演算器を制御することを特徴と
    する多倍長演算装置。
  16. 【請求項16】 前記演算器は、 2つの1ワード長のデータを入力とし、2ワード長のデ
    ータを出力する乗算器と、 前記乗算器から出力される2ワード長のデータを含む少
    なくとも2つの2ワード長のデータを入力とし、少なく
    とも2以上のワード長のデータを出力する加算器と、 前記制御回路からの指示に従って、前記メモリ入出力回
    路から送られてくる2つの1ワード長のデータを前記乗
    算器及び前記加算器のいずれかに入力させると共に、前
    記加算器から出力されたデータの前記加算器への入力を
    制御することによって、(i)少なくとも2つの1ワー
    ド長のデータに対する加算と、(ii)2つの1ワード長
    のデータに対する乗算と、(iii)2つの1ワード長の
    データに対する乗算及びその乗算結果の累算のいすれか
    を前記乗算器及び前記加算器に実行させる選択回路とを
    有することを特徴とする請求項15記載の多倍長演算装
    置。
  17. 【請求項17】 前記メモリは、異なる2つのアドレス
    によって特定される2つの記憶領域それぞれに対して、
    ワード単位で、同時にデータを読み出すこと、及び、デ
    ータを読み出すと同時に書き込むことが可能なデュアル
    ポートメモリを2個有し、 前記メモリ入出力回路は、2個の前記デュアルポートメ
    モリそれぞれに格納された2個の整数それぞれから1ワ
    ード長のデータを同時に読み出して前記加算器又は前記
    乗算器に入力させると同時に、前記加算器又は前記乗算
    器から出力される1ワード長のデータを2個の前記デュ
    アルポートメモリのいずれかに格納することを特徴とす
    る請求項16記載の多倍長演算装置。
JP2000099761A 1999-04-07 2000-03-31 多倍長演算装置 Pending JP2000353077A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2000099761A JP2000353077A (ja) 1999-04-07 2000-03-31 多倍長演算装置

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP11-99657 1999-04-07
JP9965799 1999-04-07
JP2000099761A JP2000353077A (ja) 1999-04-07 2000-03-31 多倍長演算装置

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2009212989A Division JP5006368B2 (ja) 1999-04-07 2009-09-15 多倍長演算装置

Publications (1)

Publication Number Publication Date
JP2000353077A true JP2000353077A (ja) 2000-12-19

Family

ID=26440769

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2000099761A Pending JP2000353077A (ja) 1999-04-07 2000-03-31 多倍長演算装置

Country Status (1)

Country Link
JP (1) JP2000353077A (ja)

Cited By (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20020086005A (ko) * 2001-05-10 2002-11-18 학교법인 정석학원 타원곡선 암호 시스템을 위한 역원 연산기
JP2002358010A (ja) * 2001-05-31 2002-12-13 Mitsubishi Electric Corp べき乗剰余演算器
KR100416291B1 (ko) * 2001-06-08 2004-01-31 이광엽 타원곡선암호화의 유한체 역원과 승산 장치 및 그 방법
KR100451570B1 (ko) * 2002-10-29 2004-10-08 (주)미래스멕스 에스피에이에 견디는 타원 곡선 암호화 알고리즘을구현하는 방법 및 장치
JP2005513532A (ja) * 2001-12-14 2005-05-12 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ モンゴメリ乗算器のパイプライン型コア
JP2007233381A (ja) * 2006-02-08 2007-09-13 Nvidia Corp 暗号処理に使用するグラフィック処理ユニット
JP2008287489A (ja) * 2007-05-17 2008-11-27 Nippon Telegr & Teleph Corp <Ntt> 多倍長演算方法、多倍長演算装置およびプログラム
JP2008544344A (ja) * 2005-05-09 2008-12-04 サンディスク アイエル リミテッド 大数乗算方法およびデバイス
WO2012090284A1 (ja) * 2010-12-27 2012-07-05 三菱電機株式会社 演算装置、演算装置の楕円スカラー倍算方法、楕円スカラー倍算プログラム、演算装置の剰余演算方法、剰余演算プログラム、演算装置のゼロ判定方法およびゼロ判定プログラム
JP2012248208A (ja) * 2006-12-05 2012-12-13 Altera Corp プログラマブルロジックデバイスのための大きな乗算器
US8645450B1 (en) 2007-03-02 2014-02-04 Altera Corporation Multiplier-accumulator circuitry and methods
US8959137B1 (en) 2008-02-20 2015-02-17 Altera Corporation Implementing large multipliers in a programmable integrated circuit device
US9063870B1 (en) 2006-12-05 2015-06-23 Altera Corporation Large multiplier for programmable logic device

Cited By (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20020086005A (ko) * 2001-05-10 2002-11-18 학교법인 정석학원 타원곡선 암호 시스템을 위한 역원 연산기
JP2002358010A (ja) * 2001-05-31 2002-12-13 Mitsubishi Electric Corp べき乗剰余演算器
KR100416291B1 (ko) * 2001-06-08 2004-01-31 이광엽 타원곡선암호화의 유한체 역원과 승산 장치 및 그 방법
JP2005513532A (ja) * 2001-12-14 2005-05-12 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ モンゴメリ乗算器のパイプライン型コア
KR100451570B1 (ko) * 2002-10-29 2004-10-08 (주)미래스멕스 에스피에이에 견디는 타원 곡선 암호화 알고리즘을구현하는 방법 및 장치
KR101247164B1 (ko) * 2005-05-09 2013-03-25 샌디스크 아이엘 엘티디 큰 수 곱셈 방법 및 디바이스
JP4728392B2 (ja) * 2005-05-09 2011-07-20 サンディスク アイエル リミテッド 大数乗算方法およびデバイス
JP2008544344A (ja) * 2005-05-09 2008-12-04 サンディスク アイエル リミテッド 大数乗算方法およびデバイス
JP2007233381A (ja) * 2006-02-08 2007-09-13 Nvidia Corp 暗号処理に使用するグラフィック処理ユニット
US7916864B2 (en) 2006-02-08 2011-03-29 Nvidia Corporation Graphics processing unit used for cryptographic processing
JP2012248208A (ja) * 2006-12-05 2012-12-13 Altera Corp プログラマブルロジックデバイスのための大きな乗算器
US8788562B2 (en) 2006-12-05 2014-07-22 Altera Corporation Large multiplier for programmable logic device
US9063870B1 (en) 2006-12-05 2015-06-23 Altera Corporation Large multiplier for programmable logic device
US9395953B2 (en) 2006-12-05 2016-07-19 Altera Corporation Large multiplier for programmable logic device
US8645450B1 (en) 2007-03-02 2014-02-04 Altera Corporation Multiplier-accumulator circuitry and methods
JP2008287489A (ja) * 2007-05-17 2008-11-27 Nippon Telegr & Teleph Corp <Ntt> 多倍長演算方法、多倍長演算装置およびプログラム
US8959137B1 (en) 2008-02-20 2015-02-17 Altera Corporation Implementing large multipliers in a programmable integrated circuit device
WO2012090284A1 (ja) * 2010-12-27 2012-07-05 三菱電機株式会社 演算装置、演算装置の楕円スカラー倍算方法、楕円スカラー倍算プログラム、演算装置の剰余演算方法、剰余演算プログラム、演算装置のゼロ判定方法およびゼロ判定プログラム
US9176707B2 (en) 2010-12-27 2015-11-03 Mitsubishi Electric Corporation Arithmetic apparatus, elliptic scalar multiplication method of arithmetic apparatus, elliptic scalar multiplication program, residue operation method of arithmetic apparatus, and residue operation program

Similar Documents

Publication Publication Date Title
JP5006368B2 (ja) 多倍長演算装置
JP3525209B2 (ja) べき乗剰余演算回路及びべき乗剰余演算システム及びべき乗剰余演算のための演算方法
US5289397A (en) High-speed modulo exponentiator device
EP1293891B2 (en) Arithmetic processor accomodating different finite field size
JP4201980B2 (ja) マルチプレシジョン整数演算用の装置
US7805479B2 (en) Scalable, faster method and apparatus for montgomery multiplication
US5261001A (en) Microcircuit for the implementation of RSA algorithm and ordinary and modular arithmetic, in particular exponentiation, with large operands
JP4408712B2 (ja) 多倍長データ積和演算処理回路及びモンゴメリ積和剰余演算回路
JP2000353077A (ja) 多倍長演算装置
JPH1021057A (ja) データ処理装置及びマイクロコンピュータ
EP0504996B1 (en) Arithmetic unit for multiplying long integers modulo M and R.S.A. converter provided with such multiplication device
US6917956B2 (en) Apparatus and method for efficient modular exponentiation
JPH08101779A (ja) 有限領域におけるモジュラ計算用の電子回路
JP2004258141A (ja) モンゴメリ乗算剰余の多倍長演算のための演算装置
US7266577B2 (en) Modular multiplication apparatus, modular multiplication method, and modular exponentiation apparatus
US7607165B2 (en) Method and apparatus for multiplication and/or modular reduction processing
WO2000038047A1 (en) Circuit and method of cryptographic multiplication
JP2000207387A (ja) 演算装置及び暗号処理装置
KR100480997B1 (ko) GF(p)와 GF(2^m)의 유한체 곱셈 연산 장치
US5948051A (en) Device improving the processing speed of a modular arithmetic coprocessor
JP3912958B2 (ja) データ駆動型処理装置およびデータ駆動型処理装置におけるデータ処理方法
Monfared et al. A new multiplicative inverse architecture in normal basis using novel concurrent serial squaring and multiplication
US6275837B1 (en) Method for the implementation of an elementary modular operation according to the Montgomery method
US7471789B2 (en) Encryption circuit achieving higher operation speed
KR20020047509A (ko) 여분 이진 부분곱을 이용한 복소수 승산방법 및 이를적용한 복소수 승산기

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20061227

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20090128

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090217

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090406

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20090623