JP2002207589A - 演算回路および演算方法 - Google Patents

演算回路および演算方法

Info

Publication number
JP2002207589A
JP2002207589A JP2000386069A JP2000386069A JP2002207589A JP 2002207589 A JP2002207589 A JP 2002207589A JP 2000386069 A JP2000386069 A JP 2000386069A JP 2000386069 A JP2000386069 A JP 2000386069A JP 2002207589 A JP2002207589 A JP 2002207589A
Authority
JP
Japan
Prior art keywords
memory
register
port
read
input
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.)
Granted
Application number
JP2000386069A
Other languages
English (en)
Other versions
JP3709553B2 (ja
Inventor
Koji Takano
光司 高野
Akashi Sato
証 佐藤
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.)
International Business Machines Corp
Original Assignee
International Business Machines 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 International Business Machines Corp filed Critical International Business Machines Corp
Priority to JP2000386069A priority Critical patent/JP3709553B2/ja
Priority to EP01128119A priority patent/EP1217512B1/en
Priority to DE60139597T priority patent/DE60139597D1/de
Priority to AT01128119T priority patent/ATE440320T1/de
Priority to KR10-2001-0077092A priority patent/KR100441036B1/ko
Priority to TW090130566A priority patent/TW530260B/zh
Priority to US10/023,147 priority patent/US6772942B2/en
Priority to CNB011437383A priority patent/CN1221891C/zh
Publication of JP2002207589A publication Critical patent/JP2002207589A/ja
Application granted granted Critical
Publication of JP3709553B2 publication Critical patent/JP3709553B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/40Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using contact-making devices, e.g. electromagnetic relay
    • G06F7/44Multiplying; Dividing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/60Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers
    • G06F7/72Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic
    • G06F7/728Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic using Montgomery reduction

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Electromagnetism (AREA)
  • Complex Calculations (AREA)
  • Memory System (AREA)
  • Advance Control (AREA)

Abstract

(57)【要約】 【課題】 モンゴメリ乗算回路におけるメモリアクセス
のボトルネックを2ポートやシングルポートの汎用メモ
リを使いながら解消する。 【解決手段】 2つのメモリ7、8を設け、演算に必要
な変数のうちメモリから読み出す必要のある変数につい
ては異なるメモリに記録する。そしてパイプライン処理
の同一の読出しステージでメモリ7からレジスタ5に変
数を読出し、メモリ8からその他のレジスタに他の変数
を読み出す。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、演算回路および演
算方法に関し、特に公開鍵暗号化方式等に好適な乗剰余
計算の高速化に関するものである。
【0002】
【従来の技術】情報を伝送する際に、セキュリティの確
保あるいは認証のために公開鍵暗号(非対称暗号)が用
いられる。公開鍵暗号は公開鍵と秘密鍵の一対の鍵を用
いて情報を伝送する暗号方式である。送信者が受信者の
公開鍵で平文を暗号化し、暗号文を受取った受信者は受
信者しか知りえない秘密鍵を用いて暗号文を復号する。
このような公開鍵暗号では共通鍵暗号(対称鍵暗号)の
ように1つの共通鍵を共有する必要がなく、また、公開
鍵暗号では公開鍵を広く公開することができるので不特
定多数の者との通信の秘密が確保できる。さらに、公開
鍵暗号を電子認証あるいは電子署名に用いて面識のない
他人との信頼関係を確立することができる。インターネ
ット等通信技術が支えるネットワーク社会あるいはその
中で営まれる商取引等において必須の技術と位置付けら
れる。
【0003】公開鍵暗号方式の一つにRSAが知られて
いる。RSAは非常に大きな整数の離散対数問題あるい
は素因数分解の困難性にその安全性の基礎をおく。たと
えば、公開鍵(e,n)を用いて、平文Mを C=M(mod n) の関係式から暗号文Cを生成する(なお、Mは整数n未
満になるようブロック化されている)。この暗号文Cの
解読には離散対数計算(a、y、pからy=a(mo
d p)となるxを見出す)が必要となり Ο(2SQRT(log n)) の計算量を必要とする(SQRTは二乗根を与える関数
である)。整数nが少なくとも512ビット長以上、好
ましくは1024ビット長以上であれば実用的な計算時
間での解読は困難になる。
【0004】ところが、公開鍵(e,n)と ed(mod lcm(p−1、q−1))=1 ,
n=pq、(ただしp、qは十分大きな素数) の関係にある秘密鍵(d,n)を用いれば、 M=C(mod n) の関係式を用いて平文Mを簡単に求めることができる
(ただし、lcm(a,b)はaとbの最小公倍数を与
える)。
【0005】たとえば、d=11の場合、 C11=((CC))C のようにdを2進展開して、自乗剰余演算と乗算剰余演
算を繰り返せば、高々dのビット長の2倍の回数の乗剰
余演算で計算できる。
【0006】しかしながら、上記べき乗剰余演算であっ
ても、たとえばDES(dataencryption
standard)等の対称暗号に比較すれば計算量
が多くなる。このためできるだけ効率的なアルゴリズム
とその実装が求められる。
【0007】上記べき乗剰余演算における自乗剰余演算
と乗算剰余演算を高速化する手法に、たとえばPeter L.
Montgomery著、「Modular Multiplication Without Tr
ialDivision」、Mathematics of computations, Vol.4
4, No.170 April 1985, pp 519-522、に記載されている
モンゴメリ乗算手法がある。モンゴメリ乗算は乗剰余算
を、加算、乗算、シフト演算の繰り返しにより、減算を
繰り返す除算よりも少ない計算量で実現する手法であ
る。以下にモンゴメリ乗算の計算主要部 P≡XYR−1(mod n) を擬似コード1.xに示す。なお、上式において、 R=(2 N≡−n−1(mod 2) とする。また、擬似コードにおいて各行の左側には行番
号を付す(以下同様)。
【0008】(1.1) P = 0; (1.2) for (i=0 ; i < m ; i++){ (1.3) t = (p0 + xiy0) N (mod 2r); (1.4) P = (P + xiY + t・n) / 2r; (1.5) }; (1.6) if (P => n) P = P-n; 上記擬似コード1.xに示すように、その主要部分の繰
り返し演算は次のようになる。まず、Xをm個のブロッ
クxに区切り(X=(xm−1,xm−2,…,
,x))、Yとの部分積加算(xY)をm回繰
り返す(行番号1.2〜1.5)。このとき、途中結果
Pの最下位ブロックpが0となるようなnの倍数「t
・n」を毎回加算する(行番号1.4)。tは行番号
1.3において定義されている。さらに、Pをrビット
だけ右にシフト、つまり「2−r」を乗ずる(行番号
1.4)。なお、rビットのシフト演算は、m回のシフ
ト演算により2−rm=R−1となってR−1の乗算を
することになる。
【0009】たとえば、512ビットのモンゴメリ乗算
を32ビット乗算器によって実行すると仮定すると、m
=512/32=16回のループを繰り返すことにな
る。上記擬似コードでは簡単のためにx・Yや、t・
nのように32ビット×512ビットのように示した
が、実際は512ビットのYとnも16個の32ビット
ブロックに分割して計算を実行する。つまり、Pの部分
積加算は演算においてm=16の二重ループとなる。以
下に二重ループによってモンゴメリ乗算を実行する手順
の一例を擬似コード2.xに示す。
【0010】 (2.1) P = 0; (2.2) for (i=0 ; i < m ; i++){ (2.3) t = p0 + xiy0 (mod 2r); (2.4) t = t・N (mod 2r); (2.5) c = 0; (2.6) for (j=0 ; j < m ; j++){ (2.7) tmp = pj + xi・yj + c; (2.8) tmp = tmp + t・nj; (2.9) if (j != 0) pj-1 = tmp(mod 2r); (2.10) c = tmp/2r; (2.11) }; (2.12) pm-1 = c; (2.13) }; (2.14) if (P => n) P = P-n; なお、ここで、X,Y,nはm個のブロックに分割され
ている。つまり、 X=(xm−1,xm−2,…,x,x) Y=(ym−1,ym−2,…,y,y) n=(nm−1,nm−2,…,n,n) 乗算器が一つの場合を仮定すると、途中結果tmpの計
算に二回の積和演算が必要となる。変数p,x,y
,t,nは全てrビット長の数、変数cは下位ブロ
ックからのキャリーである。上記擬似コード2.xの例
では、一回のjループで2rビットの数x・yjとt
・nj、そしてr+1ビットの数pとcの加算を行い
(行番号2.6〜2.11)、積和演算後の途中結果t
mpは2r+1ビット長を持つ。tmpの下位rビット
は変数pに,上位r+1ビットは変数cにストアされ
る(行番号2.9、2.10)。
【0011】一方、x・yとt・njの加算を2つ
の別のループで行うことも可能である。この例を擬似コ
ード3.xに示す。
【0012】 (3.1) P = 0; (3.2) for (i=0 ; i < m ; i++){ (3.3) c = 0; (3.4) for (j=0 ; j < m ; j++){ (3.5) tmp = pj + xi・yj + c; (3.6) pj = tmp(mod 2r); (3.7) c = tmp/2r; (3.8) }; (3.9) pm = c; c = 0; (3.10) t = p0・N (mod 2r); (3.11) for (j=0 ; j < m ; j++){ (3.12) tmp = pj + t・nj + c; (3.13) if (j != 0) pj-1 = tmp(mod 2r); (3.14) c = tmp/2r; (3.15) }; (3.16) pm-1 = pm + c; (3.17) }; (3.18) if (P => n) P = P-n; 擬似コード3.xの例では、変数pはrビット長、変
数tmpは2rビット長となる。
【0013】擬似コード2.x、3.xの両例ともモン
ゴメリ乗算の二重ループを抜けた後の結果Pは2n未満
となるが、n以下である保証はないので必要に応じて、
「P=P−n」とする(行番号2.14,3.18)。
【0014】上記擬似コード2.x、3.xの例におい
て、基本的にpは、Pをm個に分割したrビットレジ
スタで正の値をとる。しかし、擬似コード2.xの例で
は、行番号2.12の「pm−1=c」において、cは
最大r+1ビットとなる。この時、演算ビット数がrビ
ットで割り切れる場合には1ビットあふれることにな
る。よって、ループ回数をm+1にするか、ループ回数
をm回に押さえるための最上位ビットの特別な処理が必
要となる。本明細書では簡単のため上記例の両者ともj
ループは同じループ回数mであるものとする。なお両例
の行番号2.14,3.18の比較演算「if (P=
>n)」において、符号ビットの考慮などを行う必要が
ある。
【0015】
【発明が解決しようとする課題】上記擬似コード2.
x、3.xの例により、モンゴメリ乗算の計算を実行す
ることができる。しかし、本発明者らがその演算サイク
ルを詳細に検討したところ、演算のパフォーマンスは変
数のレジスタ割り付けやメモリ構成に大きく影響される
ことが判明した。以下検討結果について説明する。
【0016】上記擬似コード2.xの場合、rビット長
の変数Nはiループ(擬似コード2.2〜2.13)内
で値が変わらずに繰り返し使用される。また、tとx
はjループ(擬似コード2.6〜2.11)内で値が変
らずに繰り返し使用される。このため、変数N,t,x
については、一旦計算あるいはメモリから読み出した
後は各ループを抜けるまでレジスタに保持して繰り返し
使用することができる。またjループ内で使用する途中
変数tmpとcはレジスタに直接割り付けられる。その
他の変数は,読み出しと書き込みが独立したアドレスに
対して実行できる一般的な2ポートメモリに記録する。
またメモリ読み出し→演算→書き込みの一連の処理はパ
イプライン処理されるものとする。そうすると、演算と
書き込みは基本的に1サイクルで終了するのでメモリ読
み出しがパフォーマンスのボトルネックになる。以下、
メモリ読み出しのサイクル数を検討する。
【0017】まず行番号2.1の「P=0」の処理につ
いては、行番号2.7の演算 tmp=p+x・y+c などで最初にpを読み出すときにその値をリセットす
ればよい。このためサイクル数0である。
【0018】行番号2.3,2.4の変数tの計算 t=p+x(mod 2) t=t・N(mod 2) ではレジスタに割り付けられているN以外の変数
(p、x、y)をメモリから読み出すのに3サイ
クルを要する。なお、tについては前記した通り行番号
2.3の演算結果が直接レジスタに割り付けられるので
読出しの必要はない。行番号2.5の「c=0」は、
「P=0」の処理と同様0サイクルである。
【0019】jループに入って、行番号2.7の演算 tmp=p+x・y+c はpとyの読み出しで2サイクルを必要とする。x
は行番号2.3のtの計算の際に読み出されているの
でここでの読出しの必要はない。また、cについては前
記の通り直接レジスタに割り付けられるので読出しの必
要はない。
【0020】行番号2.8の演算 tmp=tmp+t・n はnの読み出しで1サイクルを要する。tmp、tに
ついては前記した通り直接レジスタに割り付けられるの
で読出しの必要はない。
【0021】行番号2.9の演算 pj−1=tmp(mod 2) c=tmp/2 の実際のハードウェア上の動作は、「tmp+t・
」を一旦レジスタtmpで受けずに直接pj−1
cに書き込めばよい。よってどちらも0サイクルとな
る。
【0022】jループを抜けた直後の行番号2.12の
演算 pm−1=c はパイプライン処理により0サイクルとなる。
【0023】したがってiループ内の演算サイクル数
は、 3+m(2+1)=3m+3 となる。これにiループのmを乗じて m(3m+3)=3m+3m となる。しかし、先に述べたようにi=0のときp
0なのでpを読み出す必要はなく、入力を0リセット
すればよい。よってiループ全体ではこの分のmを減じ
て 3m+3m−m=3m+2m となる。行番号2.14の比較動作 if (P => n) では減算「P−n」によって大小を判定するのでこれに
2mサイクル、最後にパイプラインを抜けるのに2サイ
クルを要する。結局最終的なサイクル数は 3m+4m+2 となる。これはパイプライン処理が乱れなく実行できる
場合であり、演算ビット数が乗算器のビット数に対して
あまり大きくないとき、つまりブロック数mが少ないと
きは、書き込もうとした値を直ぐに読み出す必要がある
ためメモリアクセス待ちのオーバーヘッドが加わること
になる。ただしブロック数が4〜5あれば実用上このよ
うな問題は生じない。また逆にブロック数が2〜3とい
った小さな数に対してモンゴメリ法を適用する意味はあ
まりないので、上記事情は考慮する必要がない。つま
り、二重ループによるm項の係数「3」が大きく変わ
ることはない。また、実装形態によってはjループ前後
でパイプライン動作が乱れることがあり、前記最終的な
サイクル数が実際には若干異なることがある。しかし、
この場合であっても二重ループによるm項の係数
「3」は変わらず、最終的なサイクル数が前記値と大き
く異なることはない。
【0024】これと同様に擬似コード3.xの例を詳細
に検討すれば、以下の通りである。行番号3.1の「P
=0」の処理は、行番号3.5の演算 tmp=p+x・y+c で最初にpを読み出すときにその値を0リセットすれ
ばよいのでサイクル数は0である。行番号3.1の「c
=0」の処理についても、擬似コード2.xと同様0サ
イクルである。
【0025】第1jループ(行番号3.4〜3.8)に
入って、行番号3.5の演算 tmp=p+x・y+c では、pとyの読み出しで2サイクルを必要とし、
第1jループの最初にx を読み出す必要がある。行番
号3.6の演算 p=tmp(mod 2) c=tmp/2 は擬似コード2.xの場合と同様にtmpを直接p
cに書き込むので0サイクルとなる。よって、1番目の
jループのサイクル数は、2m+1となる。
【0026】第1jループを抜けた後の行番号3.9の
演算 p=c; c=0; はパイプライン処理により0サイクルとなり、行番号
3.10の演算 t=p・N(mod 2) では、pとNの読み出しに2サイクルを要する。
【0027】次に第2jループ(行番号3.11〜3.
15)に入って、行番号3.12の演算 tmp=p+t・n+c では、pとnの読み出しで2サイクルを要する。な
お、tとcはレジスタに直接書込まれるので読出しの必
要はない。それに続く行番号3.13の演算 pj−1=tmp(mod 2) c=tmp/2 は、擬似コード2.xの場合と同様0サイクルとなる。
従って、2番目のjループのサイクル数は2mとなる。
そして2番目のjループを抜けた後の行番号3.16の
演算 pm−1=p+c では、pの読出しに1サイクル必要である。
【0028】よって、iループ内の演算サイクル数は、 (2m+1)+2+2m+1=4m+4 となる。これにiループのmを乗じて m(4m+4)=4m+4m となる。しかし、先に述べたようにi=0のときp
読み出す必要はなく、入力を0リセットすればよいの
で、iループ全体ではこの分のmを減じて 4m+4m−m=4m+3m となる。行番号3.18の比較動作 if (P=>n) では減算「P−n」によって大小を判定するのでこれに
2mサイクル、最後にパイプラインを抜けるのに2サイ
クルを要する。結局最終的なサイクル数は 4m+5m+2 となる。擬似コード3.xの例でmサイクル多いの
は、tmpへの部分積加算を一つのjループで行わない
ため、行番号3.4〜3.8のループでメモリに書き込
んだpを行番号3.11から3.15のループで読み
出すためである。サイクル数こそ多いものの桁上がりが
1ビット少なくrビットブロックにおさまり、レジスタ
に保持すべき変数も少ないという擬似コード2.xの例
と比較したメリットがある。このため、制御と回路規模
の点では3.xの例の方が有利である。図7に擬似コー
ド3.xの場合のモンゴメリ乗算回路データパス部の概
略を、また図8にこの回路におけるブロック数m=4の
最終ループ処理近辺のタイミングチャートを示す。な
お、パイプライン処理の乱れ等により、前記最終的な読
出しサイクル数が実際には若干変化することがあるのは
擬似コード2.xの場合と同様である。
【0029】上記のメモリ読出しタイミングにおいてモ
ンゴメリ乗算の高速化を考えるとするなら、二重ループ
の内側で乗算を2回行うので、単純に乗算器を2つ実装
すれば2倍の速度が得られるように思える。しかし、メ
モリ読み出しがボトルネックとなるのは前記した通りで
ある。このボトルネック解消の方法として、独立な読み
出しを行える読出しポートを2つ、書き込みポートを1
つ持つ3ポートメモリを使用することが考えられる。し
かしながら3ポートメモリにより高速化が図れるもの
の、3ポートメモリは一般的ではなく、使用できるテク
ノロジーが限定される。すなわち、回路の汎用性が損な
われてしまう。このため半導体設計における回路設計の
標準化(IPコア化)の障害になる可能性がある。さら
に、3ポートメモリは素子面積が大きくなり小型化の要
請にそぐわない。
【0030】本発明の目的は、モンゴメリ乗算回路にお
けるメモリアクセスのボトルネックを2ポートやシング
ルポートの汎用メモリを使いながら解消することにあ
る。これにより高いパフォーマンスと素子の小型化を実
現し、暗号生成回路を低いコストで提供することが可能
になる。
【0031】
【課題を解決するための手段】本発明の概要を説明すれ
ば以下の通りである。すなわち、本発明の演算回路およ
び演算方法では、1サイクルで実行する演算に必要な変
数のうちメモリから読み出す必要のある変数については
異なるメモリに記録し、1つの読出しステージでこれら
変数を同時に読み出すことを可能にしたものである。こ
れにより、読出しによる待ち時間を最小にして計算のパ
フォーマンスを向上することができる。しかも、変数を
記録するメモリには3ポートメモリ等複雑な回路、大面
積を要する回路を用いることなく、2ポートやシングル
ポートの汎用的なメモリを用いてIPコア化をし易く
し、また素子面積を最小限にすることを可能にする。
【0032】以下本発明を列記すれば以下の通りであ
る。すなわち、本発明の演算回路は、複数のレジスタ
と、前記複数のレジスタに入力される値を入力とする演
算器と、複数のメモリとを有し、前記複数のメモリから
前記複数のレジスタへの複数の変数の読出しを、前記演
算器のパイプライン処理における同一の読出しステージ
で行うものである。また、本発明の演算方法は、複数の
入力レジスタを有する演算器と複数のメモリとを備えた
演算回路を用いた演算方法であって、前記入力レジスタ
に入力されている値に基づいて演算を行うステップと、
前記演算の結果を前記入力レジスタまたは前記メモリに
書き込むステップと、前記複数のメモリから前記複数の
入力レジスタに複数の変数を同一のパイプラインステー
ジで読み出すステップと、を含む。
【0033】なお、前記演算器は、第1レジスタ、第2
レジスタ、第3レジスタ、第4レジスタの各々に入力さ
れたrビット長を有するx、x、x、xの各入
力値に基づいて、2rまたは2r+1ビット長を有する
+x・x+xの演算結果Qを与える積和演算
器とすることができる。この場合、前記複数のメモリに
は、第1メモリおよび第2メモリを含み、前記パイプラ
イン処理の演算ステージに続く演算結果の書き込みステ
ージにおいて、前記演算結果Qの下位rビットQが前
記第1メモリに記録され、前記演算結果Qの前記Q
除く上位ビットQが前記第4レジスタに入力され、前
記書き込みステージに続く前記レジスタへの変数の読出
しステージにおいて、前記第1メモリから前記第1レジ
スタに変数xが、前記第2メモリから前記第3レジス
タに変数xが、同一の読出しステージで読み出される
ものとすることができる。また、前記第1および第2メ
モリを、データの書き込みポートと読出しポートとを各
々1つ有する2ポートメモリとすること、あるいは、前
記第1メモリをデータの書き込みポートと読出しポート
とを各々1つ有する2ポートメモリ、前記第2メモリを
データの書き込みおよび読出しが1つのポートで行われ
る1ポートメモリとすることができる。
【0034】また、前記演算器は、第1レジスタ、第2
レジスタ、第3レジスタ、第4レジスタ、第5レジス
タ、第6レジスタの各々に入力されたrビット長を有す
るx、x、x、x、x、xの各入力値に基
づいて、2rまたは2r+1ビット長を有するx+x
・x+x・x+xの演算結果Qを与える積和演
算器とすることができる。この場合、前記複数のメモリ
には、第1メモリ、第2メモリおよび第3メモリを含
み、前記パイプライン処理の演算ステージに続く演算結
果の書き込みステージにおいて、前記演算結果Qの下位
rビットQが前記第1メモリに記録され、前記演算結
果Qの前記Qを除く上位ビットQが前記第6レジス
タに入力され、前記書き込みステージに続く前記レジス
タへの変数の読出しステージにおいて、前記第1メモリ
から前記第1レジスタに変数xが、前記第2メモリか
ら前記第3レジスタに変数xが、前記第3メモリから
前記第5レジスタに変数xが、同一の読出しステージ
で読み出されるものとすることができる。また。前記第
1メモリをデータの書き込みポートと読出しポートとを
各々1つ有する2ポートメモリとし、前記第2および第
3メモリを、データの書き込みおよび読出しが1つのポ
ートで行われる1ポートメモリとすることができる。
【0035】
【発明の実施の形態】以下、本発明の実施の形態を図面
に基づいて詳細に説明する。ただし、本発明は多くの異
なる態様で実施することが可能であり、本実施の形態の
記載内容に限定して解釈すべきではない。なお、実施の
形態の全体を通して同じ要素には同じ番号を付するもの
とする。
【0036】(実施の形態1)図1は、本発明の一実施
の形態であるモンゴメリ乗算回路の一例をそのデータパ
ス部について示したブロック図である。本実施の形態の
モンゴメリ乗算回路は積和演算回路1と、入力レジスタ
2〜5と、マルチプレクサ6と、2つのメモリ7(メモ
リA)およびメモリ8(メモリB)とを有する。
【0037】積和演算回路1は、レジスタ3とレジスタ
4の入力値(rビット長)の積に、レジスタ2とレジス
タ5の入力値(rビット長)を加算して2rビット長の
出力tmpを与える。すなわち、加算入力p,cと積
算入力y,xとから出力tmp=p+y・x
+cを得る。積和演算回路1は、たとえば公知の全加算
器FAと半加算器HAとを用いて構成できる。なお、図
1においてxi(0)のように示しているのは、変数x
の括弧内の数字に相当するビットを抜き出した値に対応
する。
【0038】入力レジスタ2〜5には、メモリ7,8か
ら値が読み出されて入力され、あるいは積和演算回路1
からの出力が直接入力される。マルチプレクサ6は3つ
の入力に対し1つの出力を与えるスイッチである。
【0039】メモリ7,8は汎用的な2ポートメモリ、
すなわちデータの書き込みと読出しを各々独立した1つ
のポートから行えるメモリである。メモリ7(メモリ
A)には二重ループ処理中の途中変数P(p)が記録
され、メモリ8(メモリB)には、その他の変数X(x
),Y(y),n(n),Nと最終結果P
(p)が記録される。メモリ7,8は何れも2ポート
メモリであり、素子のIPコア化の障害、素子面積の増
大の問題を生じない。
【0040】本実施の形態の演算回路では、データの読
出し、演算、書き込みが一連のパイプラインとして処理
される。すなわち、メモリからレジスタへのデータの読
出しステージと、レジスタに入力された値に基づく演算
ステージと、演算結果をレジスタまたはメモリに書き込
む書き込みステージとが並列に処理される。
【0041】図2は、図1の回路において擬似コード
3.xの処理を実行した時の処理のタイミングを示した
タイミングチャートである。図2では、m=4の場合の
処理の最終ループ近辺を示している。なお前記および以
下のタイミングチャートにおいて一連のパイプライン処
理(データの読出し、演算、結果の書き込み)を同じ背
景色で示すようにグレーまたは白に濃淡分けてして示し
ている。また、チャートの左端には、読出し先のメモリ
(MemA(read)、MemB(read))、レジスタ(p(レジス
タ5)、y,n,N(レジスタ4)、c(レジスタ
2)、x,t(レジスタ3))、書込み先のメモリ
(MemA(write)、MemB(write))を指標として示してい
る。チャートの各行には、読出しステージにおいて各メ
モリから読み出される値、演算ステージにおけるレジス
タ内の値、書込みステージにおけるメモリ書込まれる値
が記入されている。
【0042】擬似コード3.xの第1jループ(行番号
3.4〜3.8)における処理、たとえば図2のi=3
ループ中の最初のj=0〜3の処理では、まず、j=0
のループで、メモリ7(MemA)からレジスタ5(p
)にpを、メモリ8(MemB)からレジスタ4
(y,n,N)にyを読み出す(読出しステー
ジ)。なおこの読出しステージと同時に前サイクルの演
算ステージ(行番号3.16の計算)および前々サイク
ルの書込みステージ(メモリ7(MemA)へのp
書込み、cレジスタへの上位ビットtmpの書込み)
が行われている。
【0043】次に、j=1の読出しステージでメモリ7
(MemA)からレジスタ5(p)にpを、メモリ
8(MemB)からレジスタ4(y,n,N)にy
を読み出すと同時に先に読み込まれたp、yとレ
ジスタ2(c)に入力されている前ステップの演算結果
(tmp)およびレジスタ3(x,t)に入力され
ているxに基づいて行番号3.5の演算を実行する
(演算ステージ)。なお、この時前サイクルの書込みス
テージ(メモリ7(MemA)へのpの書込み、cレ
ジスタ(レジスタ2)への上位ビットtmpの書込
み)が行われている。
【0044】次に、j=2の読出しステージでメモリ7
(MemA)からレジスタ5(p)にpを、メモリ
8(MemB)からレジスタ4(y,n,N)にy
を読み出すと同時に前サイクルでレジスタに読み出さ
れた値に基づいて演算を実行し、先の演算結果(変数p
、x、y、cに基づく演算結果)の上位ビットt
mpおよび下位ビットpを各々cレジスタとメモリ
7(MemA)に書き込む(書込みステージ)。このよ
うにして、p、yの入力以降結果が記録されるまで
の一連のパイプライン処理が行われる。その他のp
についても同様である。
【0045】次に、行番号3.9の処理では、読み込み
サイクルに1サイクルの空きを設け、j=3の演算ステ
ージの後にレジスタcの内容をpとしてメモリ7に記
録する。
【0046】次に、行番号3.10の処理(tの計算)
では、メモリ7からpを、メモリ8からNを同一の読
出しステージで各々レジスタ3およびレジスタ4に読出
し、演算の結果を次の書込みステージでレジスタ4に変
数tとして書き込む。
【0047】次に、行番号3.11〜3.15の第2j
ループの処理では、第1jループの場合と同様にメモリ
7からpが、メモリ8からnが同一読出しステージ
で読み出され、先に入力された変数t、cを用いて行番
号3.12の演算を行う。その後、演算結果の下位ビッ
トはpj−1としてメモリ7に記録され(行番号3.1
3)、上位ビットはcレジスタに記録される(行番号
3.14)。なお、この第2jループのj=0における
処理ではcは0リセットされる。また、j=0では演算
結果の下位ビットは記録されない。
【0048】行番号3.16の処理では、メモリ7から
がレジスタ5(p)読み出され、cレジスタの値
との和をとってpとしてメモリ7に記録される。ただ
し、最後のiループのメモリへの書込み処理では、p
はメモリ7だけでなくメモリ8にも記録する。
【0049】最後に、行番号3.18の処理では、メモ
リ7からpとnを各々レジスタに読出し、比較演算
を行う。つまり減算「P=P−n」の結果はメモリ8
(MemB)の前回の結果Pを上書きしない場所に保存
する。メモリ8(MemB)は最後のjループを抜けた
時のPと、それからnを減じたP−nを保持することに
なるが、P−nが正であればP−nを、P−nが負であ
ればPを最終結果とする。最後のjループを抜けた時に
メモリ7(MemA)にもPを書き込むのは単にP−n
の計算でメモリ8(MemB)に保持されているnと同
時に読み出すためである。
【0050】上記のようにして、擬似コード3.xの演
算処理を終了する。上記演算処理では、メモリからの変
数の読出しを同一の読出しステージで行う。このように
同一の読出しステージで変数の読出しが行えるのは、メ
モリを2つ設け、同時に読み出す可能性のある変数を相
違するメモリに記録できるようにしたためである。これ
により、従来の方式に比較してメモリ読出しの待ち時間
を短縮して、処理のパフォーマンスを向上できる。
【0051】上記処理による読出しステージのサイクル
数を検討すれば、以下の通りである。第1jループの処
理でm、行番号3.9,3.10の処理で2、第2jル
ープの処理でm、行番号3.16の処理で1、よってi
ループ内の処理に必要なサイクル数は2m+3となる。
これにiループのm回を乗じて2m+3m。なおi=
0のときにpを読み出す必要はないがそのサイクルで
を読み出す必要があるのでmを減じることはない。
行番号3.18の比較動作にmサイクル、パイプライン
を抜けるのに2サイクルを要する。結局最終的なサイク
ル数は 2m+4m+2 となる。従来方式において4m+5m+2の読出しサ
イクルを必要としたことと比較すれば、約半分のサイク
ル数に減少する。
【0052】なお、前記実施の形態では擬似コード3.
xの場合を説明したが、擬似コード2.xのようにx
・yとt・njを一つのループで加算することも可能
である。擬似コード2.xの場合は、擬似コード3.x
の場合に比べ変数pの読み出しの待ちサイクルが半分
と少ないため、全体のサイクル数が少ないというメリッ
トがあったが、前記実施の形態のようにメモリを2つ設
けてこれを使い分ける場合、両者に違いはない。これは
図2からもわかるように、本実施の形態ではp とy
またはpとnjの読み出しを別のメモリから同時に行
え、余計な待ちが生じないためである。本実施の形態で
は、擬似コード2.xの場合であっても、従来方式のサ
イクル数、3m+4m+2と比較して、そのおよそ2
/3になる。pm−1に余計な桁上がりが生じてr+1
ビットになることもないので、例外処理が不要であり、
回路構成が簡単になるメリットもある。
【0053】(実施の形態2)図3は、本発明の他の実
施の形態であるモンゴメリ乗算回路の一例をそのデータ
パス部について示したブロック図である。本実施の形態
の演算回路はメモリ8(メモリB)が1ポートメモリ、
つまりデータの読出しと書込みの双方を1つのポートで
行うメモリとすることを除き、実施の形態1と同様であ
る。このように本実施の形態ではメモリ8を1ポートメ
モリとすることにより、メモリサイズを小さくして回路
の小型化を図ることが可能になる。
【0054】図4は、図3の回路において擬似コード
3.xの処理を実行した時の処理のタイミングを示した
タイミングチャートである。図4では、m=4の場合の
処理の最終ループ近辺を示している。図示するようにi
ループが終了するまでの処理は実施の形態1と同様であ
る。P=P−nの処理において、本実施の形態ではメモ
リ8に1ポートメモリを用いているので最終的な計算結
果であるpの書込みをメモリ8に行わず、メモリ7に
行う。そして、最後にメモリ7(MemA)からメモリ
8(MemB)にpの転送を行う。すなわち、最終結
果Pの補正演算は、P≧nならばP−nを最終結果とす
るものであるが、P≧nかどうかは減算を一回実行する
まで判定できない。そのため実施の形態1ではPとP−
nの双方をメモリ8(MemB)に書き込んで、減算結
果の符合を見ていずれか一方を選択するようにした。本
実施の形態ではPとP−nをメモリ7(MemA)にだ
け書き込み、減算結果に応じてPかP−nのいずれか一
方をメモリ8(MemB)に書き込むようにする。この
ようにすれば、m+1サイクル増加するだけのペナルテ
ィーでメモリ8(MemB)をシングルポートメモリに
することができる。これによりメモリの小型化を図るこ
とが可能になる。なお、本実施の形態の場合のサイクル
数は 2m+5m+3 となる。これに対して、従来のよう1つのシングルポー
トメモリで擬似コード2.xを処理した場合、 4m+5m+2 擬似コード3.xを処理した場合、 6m+7m+2 のサイクル数が必要になる。本発明の優位性がより顕著
となる。
【0055】(実施の形態3)図5は、本発明のさらに
他の実施の形態であるモンゴメリ乗算回路の一例をその
データパス部について示したブロック図である。本実施
の形態のモンゴメリ乗算回路は積和演算回路9と、入力
レジスタ10〜15と、3つのメモリ16(メモリ
A)、メモリ17(メモリB1)およびメモリ18(メ
モリB2)とを有する。
【0056】積和演算回路9は、レジスタ11(tレジ
スタ)とレジスタ12(n,Nレジスタ)の入力値
(rビット長)の積と、レジスタ13(xレジスタ)
とレジスタ14(yレジスタ)の入力値(rビット
長)の積と、レジスタ10(cレジスタ)の入力値(r
+1ビット長)と、レジスタ15(pレジスタ)の入
力値(rビット長)を加算した2r+1ビット長の出力
tmpを与える。すなわち、積和演算回路9は2つの乗
算器を有し、加算入力p,cと積算入力y,x
と、積算入力t,nとから出力tmp=p+y
・x+t・n+cを得る。
【0057】レジスタについては実施の形態1と同様で
ある。また、メモリ16(MemA)は汎用的な2ポー
トメモリであり、メモリ17,18(MemB1,B
2)はシングルポートメモリである。これら汎用的なメ
モリを用いるため、素子のIPコア化の障害が生じず、
また、メモリ数の増加をシングルポートメモリを採用す
ることによる素子面積の低減で補うことができる。
【0058】図6は、図5の回路において擬似コード
2.xの処理を実行した時の処理のタイミングを示した
タイミングチャートである。図5では、m=4の場合の
処理の最終ループ近辺を示している。
【0059】まず、iループの最初にtの計算(擬似コ
ード2.3,2.4)を行う。メモリ16からpを読
出し、メモリ17からxを読出し、メモリ18からy
を読み出す。これら読出しは1つの読出しステージで
行われる。これら読み出した変数を用いて行番号2.3
の演算を行い、演算結果の下位ビットtmpをtレジ
スタに入力する。前記演算と並行してメモリ17からN
を読出し、前記tとNを用いて行番号2.4の演算を行
う。演算結果の下位ビットtmpがtレジスタに入力
され、本ループ内を通じてこのtの値が用いられる。な
お、先に読み出したxも本ループ内を通じて用いられ
る。
【0060】次にjループに入り、p,n,y
各々メモリ16,17,18からp レジスタ、n
Nレジスタ、yレジスタに同一サイクル内で読み込ま
れる。その後、c、t、xの値を用いて演算が行わ
れ、演算結果の下位ビットはp j−1としてメモリ16
に、上位ビットはcレジスタに書込まれる(行番号2.
9,2.10)。なお、このjループのj=0における
処理ではcは0リセットされる。また、j=0では演算
結果の下位ビットは記録されない。
【0061】行番号2.14の処理では、cレジスタの
値がpとしてメモリ16に記録される。その後のP=
P−n、MemA→MemBの処理は実施の形態2と同
様である。
【0062】本実施の形態によれば、2つの乗算器を設
け、さらにメモリを3つ設けたので、3変数を同時に読
み出すことが可能になり、2つの乗算器を最大限に活用
するデータの読出しを行うことが可能になる。
【0063】本実施の形態で必要な処理サイクルは以下
の通りである。iループ内のtの計算で2サイクル、j
ループでmサイクル、擬似コード2.12の処理で1サ
イクル、合計m+3サイクルがiループ内の処理で必要
である。iループのm回を乗じてm+3mとなる。な
おi=0のときにpを読み出す必要はないがそのサイ
クルでx,yを読み出す必要があるのでmを減じる
ことはない。行番号2.14の比較動作とメモリ間転送
に2mサイクル、パイプラインを抜けるのに2サイクル
を要する。結局最終的なサイクル数はm+5m+2と
なる。従来方式はもとより、実施の形態1,2と比較し
ても大幅にサイクル数が低減される。特にmの値が大き
くなるとm項が効いてくるので、その効果がより顕著
になる。本実施の形態を用いることにより2乗算器の場
合のメモリアクセスのボトルネックを解消でき、サイク
ル数を大幅に改善することが可能になる。
【0064】以上、本発明者によってなされた発明を発
明の実施の形態に基づき具体的に説明したが、本発明は
前記実施の形態に限定されるものではなく、その要旨を
逸脱しない範囲で種々変更可能であることは言うまでも
ない。たとえば、前記実施の形態では、メモリとしてシ
ングルポートまたは2ポートのメモリを例示したが、3
ポートメモリにも適用できる。
【0065】
【発明の効果】本願で開示される発明のうち、代表的な
ものによって得られる効果は、以下の通りである。すな
わち、モンゴメリ乗算回路におけるメモリアクセスのボ
トルネックを2ポートやシングルポートの汎用メモリを
使いながら解消することができる。これにより、高いパ
フォーマンスと素子の小型化を実現し、暗号生成回路を
低いコストで提供できる。
【図面の簡単な説明】
【図1】本発明の一実施の形態であるモンゴメリ乗算回
路の一例をそのデータパス部について示したブロック図
である。
【図2】図1の回路において擬似コード3.xの処理を
実行した時の処理のタイミングを示したタイミングチャ
ートである。
【図3】本発明の他の実施の形態であるモンゴメリ乗算
回路の一例をそのデータパス部について示したブロック
図である。
【図4】図3の回路において擬似コード3.xの処理を
実行した時の処理のタイミングを示したタイミングチャ
ートである。
【図5】本発明のさらに他の実施の形態であるモンゴメ
リ乗算回路の一例をそのデータパス部について示したブ
ロック図である。
【図6】図5の回路において擬似コード2.xの処理を
実行した時の処理のタイミングを示したタイミングチャ
ートである。
【図7】従来方式において擬似コード3.xの場合のモ
ンゴメリ乗算回路データパス部の概略を示すブロック図
である。
【図8】図7におけるブロック数m=4の最終ループ処
理近辺のタイミングチャートである。
【符号の説明】
1,9…積和演算回路、2〜5、10〜15…入力レジ
スタ、6…マルチプレクサ、7,8,16〜18…メモ
リ。
───────────────────────────────────────────────────── フロントページの続き (72)発明者 高野 光司 神奈川県大和市下鶴間1623番地14 日本ア イ・ビー・エム株式会社 東京基礎研究所 内 (72)発明者 佐藤 証 神奈川県大和市下鶴間1623番地14 日本ア イ・ビー・エム株式会社 東京基礎研究所 内 Fターム(参考) 5B016 AA01 BA06 DA03 5B060 AC08 CA05 CA14

Claims (16)

    【特許請求の範囲】
  1. 【請求項1】 複数のレジスタと、前記複数のレジスタ
    に入力される値を入力とする演算器と、複数のメモリ
    と、を含み、 前記複数のメモリから前記複数のレジスタへの複数の変
    数の読出しを、前記演算器のパイプライン処理における
    同一の読出しステージで行う演算回路。
  2. 【請求項2】 前記演算器は、第1レジスタ、第2レジ
    スタ、第3レジスタ、第4レジスタの各々に入力された
    rビット長を有するx、x、x、xの各入力値
    に基づいて、2rまたは2r+1ビット長を有するx
    +x・x+xの演算結果Qを与える積和演算器で
    ある請求項1記載の演算回路。
  3. 【請求項3】 前記複数のメモリには、第1メモリおよ
    び第2メモリを含み、 前記パイプライン処理の演算ステージに続く演算結果の
    書き込みステージにおいて、前記演算結果Qの下位rビ
    ットQが前記第1メモリに記録され、前記演算結果Q
    の前記Qを除く上位ビットQが前記第4レジスタに
    入力され、 前記書き込みステージに続く前記レジスタへの変数の読
    出しステージにおいて、前記第1メモリから前記第1レ
    ジスタに変数xが、前記第2メモリから前記第3レジ
    スタに変数xが、同一の読出しステージで読み出され
    る請求項2記載の演算回路。
  4. 【請求項4】 前記第1および第2メモリは、データの
    書き込みポートと読出しポートとを各々1つ有する2ポ
    ートメモリである請求項3記載の演算回路。
  5. 【請求項5】 前記第1メモリはデータの書き込みポー
    トと読出しポートとを各々1つ有する2ポートメモリで
    あり、前記第2メモリはデータの書き込みおよび読出し
    が1つのポートで行われる1ポートメモリである請求項
    3記載の演算回路。
  6. 【請求項6】 前記演算器は、第1レジスタ、第2レジ
    スタ、第3レジスタ、第4レジスタ、第5レジスタ、第
    6レジスタの各々に入力されたrビット長を有する
    、x、x、x、x、xの各入力値に基づ
    いて、2rまたは2r+1ビット長を有するx+x
    ・x+x・x+xの演算結果Qを与える積和演算
    器である請求項1記載の演算回路。
  7. 【請求項7】 前記複数のメモリには、第1メモリ、第
    2メモリおよび第3メモリを含み、 前記パイプライン処理の演算ステージに続く演算結果の
    書き込みステージにおいて、前記演算結果Qの下位rビ
    ットQが前記第1メモリに記録され、前記演算結果Q
    の前記Qを除く上位ビットQが前記第6レジスタに
    入力され、 前記書き込みステージに続く前記レジスタへの変数の読
    出しステージにおいて、前記第1メモリから前記第1レ
    ジスタに変数xが、前記第2メモリから前記第3レジ
    スタに変数xが、前記第3メモリから前記第5レジス
    タに変数xが、同一の読出しステージで読み出される
    請求項6記載の演算回路。
  8. 【請求項8】 前記第1メモリはデータの書き込みポー
    トと読出しポートとを各々1つ有する2ポートメモリで
    あり、前記第2および第3メモリは、データの書き込み
    および読出しが1つのポートで行われる1ポートメモリ
    である請求項7記載の演算回路。
  9. 【請求項9】 複数の入力レジスタを有する演算器と複
    数のメモリとを備えた演算回路を用いた演算方法であっ
    て、 前記入力レジスタに入力されている値に基づいて演算を
    行うステップと、 前記演算の結果を前記入力レジスタまたは前記メモリに
    書き込むステップと、 前記複数のメモリから前記複数の入力レジスタに複数の
    変数を同一のパイプラインステージで読み出すステップ
    と、 を含む演算方法。
  10. 【請求項10】 前記演算器は、第1レジスタ、第2レ
    ジスタ、第3レジスタ、第4レジスタの各々に入力され
    たrビット長を有するx、x、x、x の各入力
    値に基づいて、2rまたは2r+1ビット長を有するx
    +x・x +xの演算結果Qを与える積和演算器
    である請求項9記載の演算方法。
  11. 【請求項11】 前記複数のメモリには、第1メモリお
    よび第2メモリを含み、 前記演算結果Qの下位rビットQが前記第1メモリに
    記録され、前記演算結果Qの前記Qを除く上位ビット
    が前記第4レジスタに入力される前記演算器のパイ
    プライン処理における書き込みステップと、 前記第1メモリから前記第1レジスタへの変数xの読
    出しと、前記第2メモリから前記第3レジスタへの変数
    の読出しとが前記パイプライン処理の同一の読出し
    ステージで行われる読出しステップと、 を含む請求項10記載の演算方法。
  12. 【請求項12】 前記第1および第2メモリは、データ
    の書き込みポートと読出しポートとを各々1つ有する2
    ポートメモリである請求項11記載の演算方法。
  13. 【請求項13】 前記第1メモリはデータの書き込みポ
    ートと読出しポートとを各々1つ有する2ポートメモリ
    であり、前記第2メモリはデータの書き込みおよび読出
    しが1つのポートで行われる1ポートメモリである請求
    項11記載の演算方法。
  14. 【請求項14】 前記演算器は、第1レジスタ、第2レ
    ジスタ、第3レジスタ、第4レジスタ、第5レジスタ、
    第6レジスタの各々に入力されたrビット長を有するx
    、x、x、x、x、xの各入力値に基づい
    て、2rまたは2r+1ビット長を有するx+x
    +x・x+xの演算結果Qを与える積和演算
    器である請求項9記載の演算回路。
  15. 【請求項15】 前記複数のメモリには、第1メモリ、
    第2メモリおよび第3メモリを含み、 前記演算結果Qの下位rビットQが前記第1メモリに
    記録され、前記演算結果Qの前記Qを除く上位ビット
    が前記第6レジスタに入力される前記演算器のパイ
    プライン処理における書き込みステップと、 前記第1メモリから前記第1レジスタへの変数xの読
    出しと、前記第2メモリから前記第3レジスタへの変数
    の読出しと、前記第3メモリから前記第5レジスタ
    への変数xの読出しとが、前記パイプライン処理の同
    一の読出しステージで行われる読出しステップと、 を含む請求項14記載の演算方法。
  16. 【請求項16】 前記第1メモリはデータの書き込みポ
    ートと読出しポートとを各々1つ有する2ポートメモリ
    であり、前記第2および第3メモリはデータの書き込み
    および読出しが1つのポートで行われる1ポートメモリ
    である請求項15記載の演算方法。
JP2000386069A 2000-12-19 2000-12-19 演算回路および演算方法 Expired - Fee Related JP3709553B2 (ja)

Priority Applications (8)

Application Number Priority Date Filing Date Title
JP2000386069A JP3709553B2 (ja) 2000-12-19 2000-12-19 演算回路および演算方法
DE60139597T DE60139597D1 (de) 2000-12-19 2001-11-27 Arithmetische Schaltung und arithmetisches Verfahren
AT01128119T ATE440320T1 (de) 2000-12-19 2001-11-27 Arithmetische schaltung und arithmetisches verfahren
EP01128119A EP1217512B1 (en) 2000-12-19 2001-11-27 Arithmetic circuit and arithmetic method
KR10-2001-0077092A KR100441036B1 (ko) 2000-12-19 2001-12-06 연산 회로 및 연산 방법
TW090130566A TW530260B (en) 2000-12-19 2001-12-10 Arithmetic circuit and arithmetic method
US10/023,147 US6772942B2 (en) 2000-12-19 2001-12-18 Arithmetic circuit to increase the speed of a modular multiplication for a public key system for encryption
CNB011437383A CN1221891C (zh) 2000-12-19 2001-12-19 运算电路和运算方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2000386069A JP3709553B2 (ja) 2000-12-19 2000-12-19 演算回路および演算方法

Publications (2)

Publication Number Publication Date
JP2002207589A true JP2002207589A (ja) 2002-07-26
JP3709553B2 JP3709553B2 (ja) 2005-10-26

Family

ID=18853225

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2000386069A Expired - Fee Related JP3709553B2 (ja) 2000-12-19 2000-12-19 演算回路および演算方法

Country Status (8)

Country Link
US (1) US6772942B2 (ja)
EP (1) EP1217512B1 (ja)
JP (1) JP3709553B2 (ja)
KR (1) KR100441036B1 (ja)
CN (1) CN1221891C (ja)
AT (1) ATE440320T1 (ja)
DE (1) DE60139597D1 (ja)
TW (1) TW530260B (ja)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007003946A (ja) * 2005-06-24 2007-01-11 Nippon Telegr & Teleph Corp <Ntt> 離散対数演算装置、方法及びプログラム
KR100682354B1 (ko) 2004-01-26 2007-02-15 후지쯔 가부시끼가이샤 다배장 데이터 곱합 연산 처리 회로 및 몽고메리 곱합잉여 연산 회로
US7403965B2 (en) 2004-01-26 2008-07-22 Fujitsu Limited Encryption/decryption system for calculating effective lower bits of a parameter for Montgomery modular multiplication
US8291223B2 (en) 2009-01-15 2012-10-16 Sharp Kabushiki Kaisha Arithmetic circuit for montgomery multiplication and encryption circuit
JP2015068880A (ja) * 2013-09-27 2015-04-13 富士通セミコンダクター株式会社 演算回路および演算方法

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2404487A (en) * 2003-07-31 2005-02-02 Sony Uk Ltd Access control for digital storage medium content
US8028015B2 (en) * 2007-08-10 2011-09-27 Inside Contactless S.A. Method and system for large number multiplication
CN101751242B (zh) * 2009-12-22 2013-08-21 无锡中星微电子有限公司 一种数据处理方法及系统
TW201217993A (en) * 2010-10-20 2012-05-01 Huafan University employing operation on decomposed matrices to reduce operation amount for single matrix per unit time for light-weighting matrix operation process in simpler operation circuit
CN102360281B (zh) * 2011-10-31 2014-04-02 中国人民解放军国防科学技术大学 用于微处理器的多功能定点乘加单元mac运算装置
CN102999313B (zh) * 2012-12-24 2016-01-20 飞天诚信科技股份有限公司 一种基于蒙哥马利模乘的数据处理方法
KR101633960B1 (ko) 2013-08-27 2016-06-27 배종훈 유아 세정보조기구
TWI549090B (zh) * 2014-08-29 2016-09-11 Portable sensing operation device
CN106156614B (zh) * 2015-03-25 2018-12-28 北京南瑞智芯微电子科技有限公司 一种抵抗故障攻击的防护方法和装置
IL239880B (en) * 2015-07-09 2018-08-30 Kaluzhny Uri Simplified montgomery multiplication
TWI580243B (zh) * 2015-10-06 2017-04-21 瑞昱半導體股份有限公司 解密裝置、方法及電路
TWI575924B (zh) * 2015-10-06 2017-03-21 瑞昱半導體股份有限公司 解密裝置、方法及電路
US10534836B2 (en) * 2016-12-06 2020-01-14 Gsi Technology Inc. Four steps associative full adder
CN109814838B (zh) * 2019-03-28 2024-04-12 贵州华芯半导体技术有限公司 获取加解密运算中的中间结果组的方法、硬件装置和系统

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3689893A (en) * 1969-05-09 1972-09-05 Olivetti & Co Spa Accounting machine processor
US4539635A (en) * 1980-02-11 1985-09-03 At&T Bell Laboratories Pipelined digital processor arranged for conditional operation
US4488252A (en) * 1982-02-22 1984-12-11 Raytheon Company Floating point addition architecture
JPS6198476A (ja) * 1984-10-19 1986-05-16 Casio Comput Co Ltd カードターミナル
US4985848A (en) * 1987-09-14 1991-01-15 Visual Information Technologies, Inc. High speed image processing system using separate data processor and address generator
US5146592A (en) * 1987-09-14 1992-09-08 Visual Information Technologies, Inc. High speed image processing computer with overlapping windows-div
US4955024A (en) * 1987-09-14 1990-09-04 Visual Information Technologies, Inc. High speed image processing computer with error correction and logging
US4862407A (en) * 1987-10-05 1989-08-29 Motorola, Inc. Digital signal processing apparatus
KR920006283B1 (ko) * 1988-02-19 1992-08-03 미쯔비시덴끼 가부시끼가이샤 디지탈신호 처리방식
US5337395A (en) * 1991-04-08 1994-08-09 International Business Machines Corporation SPIN: a sequential pipeline neurocomputer
JP2906792B2 (ja) * 1991-11-15 1999-06-21 日本電気株式会社 ディジタルプロセッサ及びその制御方法
US5260898A (en) * 1992-03-13 1993-11-09 Sun Microsystems, Inc. Result cache for complex arithmetic units
JPH07253965A (ja) * 1994-03-16 1995-10-03 Fujitsu Ltd 積和演算器
KR0138859B1 (ko) * 1994-12-06 1998-06-15 양승택 다중 명령어 다중 데이타형 신경망 전용 디지탈 어레이 프로세서 및 이를 이용해 구성된 시스템
JPH0969061A (ja) * 1995-08-30 1997-03-11 Sony Corp ビデオ信号用プロセツサ
WO1997013201A1 (en) * 1995-10-06 1997-04-10 Advanced Micro Devices, Inc. Unified multi-function operation scheduler for out-of-order execution in a superscalar processor
EP1014270A4 (en) * 1996-10-24 2004-10-06 Mitsubishi Electric Corp MICROCOMPUTER WITH MEMORY AND PROCESSOR ON THE SAME CHIP
GB2318890B (en) 1996-10-31 2001-01-31 Motorola Ltd Co-processor for performing modular multiplication
US6026421A (en) 1997-11-26 2000-02-15 Atmel Corporation Apparatus for multiprecision integer arithmetic
JP3616897B2 (ja) * 1998-01-27 2005-02-02 富士通株式会社 モンゴメリ法による乗算剰余計算装置
US5939693A (en) * 1998-02-02 1999-08-17 Motorola Inc. Polynomial calculator device, and method therefor
JP3829504B2 (ja) * 1998-02-16 2006-10-04 株式会社デンソー 情報処理装置
EP0947914B1 (en) 1998-03-30 2004-12-15 Rainbow Technologies Inc. Computationally efficient modular multiplication method and apparatus
US6560754B1 (en) * 1999-05-13 2003-05-06 Arc International Plc Method and apparatus for jump control in a pipelined processor

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100682354B1 (ko) 2004-01-26 2007-02-15 후지쯔 가부시끼가이샤 다배장 데이터 곱합 연산 처리 회로 및 몽고메리 곱합잉여 연산 회로
US7403965B2 (en) 2004-01-26 2008-07-22 Fujitsu Limited Encryption/decryption system for calculating effective lower bits of a parameter for Montgomery modular multiplication
US8078661B2 (en) 2004-01-26 2011-12-13 Fujitsu Semiconductor Limited Multiple-word multiplication-accumulation circuit and montgomery modular multiplication-accumulation circuit
JP2007003946A (ja) * 2005-06-24 2007-01-11 Nippon Telegr & Teleph Corp <Ntt> 離散対数演算装置、方法及びプログラム
JP4663421B2 (ja) * 2005-06-24 2011-04-06 日本電信電話株式会社 離散対数演算装置、方法及びプログラム
US8291223B2 (en) 2009-01-15 2012-10-16 Sharp Kabushiki Kaisha Arithmetic circuit for montgomery multiplication and encryption circuit
JP2015068880A (ja) * 2013-09-27 2015-04-13 富士通セミコンダクター株式会社 演算回路および演算方法

Also Published As

Publication number Publication date
ATE440320T1 (de) 2009-09-15
EP1217512A2 (en) 2002-06-26
TW530260B (en) 2003-05-01
JP3709553B2 (ja) 2005-10-26
CN1366234A (zh) 2002-08-28
DE60139597D1 (de) 2009-10-01
CN1221891C (zh) 2005-10-05
US20020074391A1 (en) 2002-06-20
EP1217512A3 (en) 2008-03-05
KR20020050105A (ko) 2002-06-26
KR100441036B1 (ko) 2004-07-21
US6772942B2 (en) 2004-08-10
EP1217512B1 (en) 2009-08-19

Similar Documents

Publication Publication Date Title
JP2002207589A (ja) 演算回路および演算方法
JP3525209B2 (ja) べき乗剰余演算回路及びべき乗剰余演算システム及びべき乗剰余演算のための演算方法
WO2020172234A1 (en) Configurable lattice cryptography processor for the quantum-secure internet of things and related techniques
CN110351087B (zh) 流水线型的蒙哥马利模乘运算方法
US6151393A (en) Device and method for modular multiplication
JP4201980B2 (ja) マルチプレシジョン整数演算用の装置
US8862651B2 (en) Method and apparatus for modulus reduction
US8532286B2 (en) System and method for reducing the computation and storage requirements for a montgomery-style reduction
EP1560110A1 (en) Multiple-word multiplication-accumulation circuit and Montgomery modular multiplication-accumulation circuit
CN113467750A (zh) 用于基数为4的srt算法的大整数位宽除法电路及方法
Gonda et al. Improvements of addition algorithm on genus 3 hyperelliptic curves and their implementation
CN113467752B (zh) 用于隐私计算的除法运算装置、数据处理系统及方法
Ahmadi et al. Parallel Formulations of Scalar Multiplication on Koblitz Curves.
CN1696894B (zh) 大数模乘计算乘法器
KR100954583B1 (ko) 다항식 기저 기반의 유한체 직렬 곱셈 장치 및 방법
Kalaiarasi et al. A parallel elliptic curve crypto-processor architecture with reduced clock cycle for FPGA platforms
KR100297110B1 (ko) 모듈러곱셈기
GB2318892A (en) Co-processor for performing modular multiplication
KR100974624B1 (ko) 센서 모트에서의 효율적인 타원 곡선 암호 연산 방법, 그장치 및 이를 기록한 기록매체
KR100954579B1 (ko) 다항식 기저 기반의 유한체 직렬 곱셈 장치 및 방법
Mohan et al. RNS in Cryptography
Pinckney et al. Public key cryptography
Ananyi Design of a reconfigurable processor for elliptic curve cryptography over NIST prime fields
KR100954582B1 (ko) GF(3) 기반의 덧셈기, GF(3) 기반의 곱셈기,GF(3) 기반의 덧셈 뺄셈 통합형 연산 장치, 및 MSBfirst GF(3^m) 직렬 곱셈 장치
WO2000041068A1 (en) Method for generating a value for a multiplicative inverse of an element of a galois field

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20040818

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20041117

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20041122

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20050218

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20050727

RD14 Notification of resignation of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7434

Effective date: 20050727

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20050729

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20080819

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090819

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090819

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100819

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100819

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110819

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120819

Year of fee payment: 7

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130819

Year of fee payment: 8

LAPS Cancellation because of no payment of annual fees