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

演算回路および演算方法 Download PDF

Info

Publication number
JP3709553B2
JP3709553B2 JP2000386069A JP2000386069A JP3709553B2 JP 3709553 B2 JP3709553 B2 JP 3709553B2 JP 2000386069 A JP2000386069 A JP 2000386069A JP 2000386069 A JP2000386069 A JP 2000386069A JP 3709553 B2 JP3709553 B2 JP 3709553B2
Authority
JP
Japan
Prior art keywords
memory
port
register
read
memories
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2000386069A
Other languages
English (en)
Other versions
JP2002207589A (ja
Inventor
光司 高野
証 佐藤
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 DE60139597T priority patent/DE60139597D1/de
Priority to AT01128119T priority patent/ATE440320T1/de
Priority to EP01128119A priority patent/EP1217512B1/en
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

Images

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, 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)
  • Mathematical Optimization (AREA)
  • General Engineering & Computer Science (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Software Systems (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Electromagnetism (AREA)
  • Complex Calculations (AREA)
  • Advance Control (AREA)
  • Memory System (AREA)

Description

【0001】
【発明の属する技術分野】
本発明は、演算回路および演算方法に関し、特に公開鍵暗号化方式等に好適な乗剰余計算の高速化に関するものである。
【0002】
【従来の技術】
情報を伝送する際に、セキュリティの確保あるいは認証のために公開鍵暗号(非対称暗号)が用いられる。公開鍵暗号は公開鍵と秘密鍵の一対の鍵を用いて情報を伝送する暗号方式である。送信者が受信者の公開鍵で平文を暗号化し、暗号文を受取った受信者は受信者しか知りえない秘密鍵を用いて暗号文を復号する。このような公開鍵暗号では共通鍵暗号(対称鍵暗号)のように1つの共通鍵を共有する必要がなく、また、公開鍵暗号では公開鍵を広く公開することができるので不特定多数の者との通信の秘密が確保できる。さらに、公開鍵暗号を電子認証あるいは電子署名に用いて面識のない他人との信頼関係を確立することができる。インターネット等通信技術が支えるネットワーク社会あるいはその中で営まれる商取引等において必須の技術と位置付けられる。
【0003】
公開鍵暗号方式の一つにRSAが知られている。RSAは非常に大きな整数の離散対数問題あるいは素因数分解の困難性にその安全性の基礎をおく。たとえば、公開鍵(e,n)を用いて、平文Mを
C=M(mod n)
の関係式から暗号文Cを生成する(なお、Mは整数n未満になるようブロック化されている)。この暗号文Cの解読には離散対数計算(a、y、pからy=a(mod 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の場合、
11=((CC))C
のようにdを2進展開して、自乗剰余演算と乗算剰余演算を繰り返せば、高々dのビット長の2倍の回数の乗剰余演算で計算できる。
【0006】
しかしながら、上記べき乗剰余演算であっても、たとえばDES(data encryption standard)等の対称暗号に比較すれば計算量が多くなる。このためできるだけ効率的なアルゴリズムとその実装が求められる。
【0007】
上記べき乗剰余演算における自乗剰余演算と乗算剰余演算を高速化する手法に、たとえばPeter L. Montgomery著、「Modular Multiplication Without Trial Division」、Mathematics of computations, Vol.44, 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,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)、積和演算後の途中結果tmpは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の演算
j−1=tmp(mod 2
c=tmp/2
の実際のハードウェア上の動作は、「tmp+t・n」を一旦レジスタtmpで受けずに直接pj−1とcに書き込めばよい。よってどちらも0サイクルとなる。
【0022】
jループを抜けた直後の行番号2.12の演算
m−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の演算
=tmp(mod 2
c=tmp/2
は擬似コード2.xの場合と同様にtmpを直接p、cに書き込むので0サイクルとなる。よって、1番目のjループのサイクル数は、2m+1となる。
【0026】
第1jループを抜けた後の行番号3.9の演算
=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の演算
j−1=tmp(mod 2
c=tmp/2
は、擬似コード2.xの場合と同様0サイクルとなる。従って、2番目のjループのサイクル数は2mとなる。そして2番目のjループを抜けた後の行番号3.16の演算
m−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+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においてx (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に基づく演算結果)の上位ビットtmpおよび下位ビットpを各々cレジスタとメモリ7(MemA)に書き込む(書込みステージ)。このようにして、p、yの入力以降結果が記録されるまでの一連のパイプライン処理が行われる。その他のp、yについても同様である。
【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.13)、上位ビットはcレジスタに記録される(行番号3.14)。なお、この第2jループのj=0における処理ではcは0リセットされる。また、j=0では演算結果の下位ビットは記録されない。
【0048】
行番号3.16の処理では、メモリ7からpがレジスタ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を読み出す必要はないがそのサイクルでyを読み出す必要があるので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,B2)はシングルポートメモリである。これら汎用的なメモリを用いるため、素子の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の値を用いて演算が行われ、演算結果の下位ビットはpj−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サイクルを要する。結局最終的なサイクル数は
+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…メモリ。

Claims (10)

  1. 第1乃至第4レジスタと、
    第1および第2メモリと、
    前記第1乃至第4レジスタの各々に入力されたrビット長を有するx 、x 、x 、x の各入力値に基づいて、2rまたは2r+1ビット長を有するx +x ・x +x の演算結果Qを与える、パイプライン処理可能な演算器と、を含み、
    前記パイプライン処理の演算ステージに続く演算結果の書き込みステージにおいて、前記演算結果Qの下位rビットQが前記第1メモリに記録され、前記演算結果Qの前記Qを除く上位ビットQが前記第4レジスタに入力され、
    前記書き込みステージに続く前記レジスタへの変数の読出しステージにおいて、前記第1メモリから前記第1レジスタに変数xが、前記第2メモリから前記第3レジスタに変数xが、同一の読出しステージで読み出される演算回路。
  2. 前記第1および第2メモリは、データの書き込みポートと読出しポートとを各々1つ有する2ポートメモリである請求項記載の演算回路。
  3. 前記第1メモリはデータの書き込みポートと読出しポートとを各々1つ有する2ポートメモリであり、前記第2メモリはデータの書き込みおよび読出しが1つのポートで行われる1ポートメモリである請求項記載の演算回路。
  4. 第1乃至第6レジスタと、
    第1乃至第3メモリと、
    前記第1乃至第6レジスタの各々に入力されたrビット長を有するx 、x 、x 、x 、x 、x の各入力値に基づいて、2rまたは2r+1ビット長を有するx +x ・x +x ・x +x の演算結果Qを与える、パイプライン処理可能な演算器と、を含み、
    前記パイプライン処理の演算ステージに続く演算結果の書き込みステージにおいて、前記演算結果Qの下位rビットQが前記第1メモリに記録され、前記演算結果Qの前記Qを除く上位ビットQが前記第6レジスタに入力され、
    前記書き込みステージに続く前記レジスタへの変数の読出しステージにおいて、前記第1メモリから前記第1レジスタに変数xが、前記第2メモリから前記第3レジスタに変数xが、前記第3メモリから前記第5レジスタに変数xが、同一の読出しステージで読み出される演算回路。
  5. 前記第1メモリはデータの書き込みポートと読出しポートとを各々1つ有する2ポートメモリであり、前記第2および第3メモリは、データの書き込みおよび読出しが1つのポートで行われる1ポートメモリである請求項記載の演算回路。
  6. 第1乃至第4レジスタと、パイプライン処理可能な演算器と、第1および第2メモリとを備えた演算回路を用いた演算方法であって、
    前記第1乃至第4レジスタの各々に入力されたrビット長を有するx 、x 、x 、x の各入力値に基づいて、2rまたは2r+1ビット長を有するx +x ・x +x の演算結果Qが与えられる、前記パイプライン処理における演算ステップと、
    前記演算結果Qの下位rビットQLが前記第1メモリに記録され、前記演算結果Qの前記Qを除く上位ビットQが前記第4レジスタに入力される記パイプライン処理における書き込みステップと、
    前記第1メモリから前記第1レジスタへの変数x1の読出しと、前記第2メモリから前記第3レジスタへの変数x3の読出しとが前記パイプライン処理の同一の読出しステージで行われる読出しステップと、
    を含む演算方法。
  7. 前記第1および第2メモリは、データの書き込みポートと読出しポートとを各々1つ有する2ポートメモリである請求項記載の演算方法。
  8. 前記第1メモリはデータの書き込みポートと読出しポートとを各々1つ有する2ポートメモリであり、前記第2メモリはデータの書き込みおよび読出しが1つのポートで行われる1ポートメモリである請求項記載の演算方法。
  9. 第1乃至第6レジスタと、パイプライン処理可能な演算器と、第1および第3メモリとを備えた演算回路を用いた演算方法であって、
    前記第1乃至第6レジスタの各々に入力されたrビット長を有するx 、x 、x 、x 、x 、x の各入力値に基づいて、2rまたは2r+1ビット長を有するx +x ・x +x ・x +x の演算結果Qを与える、前記パイプライン処理における演算ステップと、
    前記演算結果Qの下位rビットQが前記第1メモリに記録され、前記演算結果Qの前記Qを除く上位ビットQが前記第6レジスタに入力される記パイプライン処理における書き込みステップと、
    前記第1メモリから前記第1レジスタへの変数xの読出しと、前記第2メモリから前記第3レジスタへの変数xの読出しと、前記第3メモリから前記第5レジスタへの変数xの読出しとが、前記パイプライン処理の同一の読出しステージで行われる読出しステップと、
    を含む演算方法。
  10. 前記第1メモリはデータの書き込みポートと読出しポートとを各々1つ有する2ポートメモリであり、前記第2および第3メモリはデータの書き込みおよび読出しが1つのポートで行われる1ポートメモリである請求項記載の演算方法。
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 演算回路および演算方法
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
DE60139597T DE60139597D1 (de) 2000-12-19 2001-11-27 Arithmetische Schaltung und arithmetisches Verfahren
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 JP2002207589A (ja) 2002-07-26
JP3709553B2 true 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)

Families Citing this family (19)

* 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
JP4544870B2 (ja) 2004-01-26 2010-09-15 富士通セミコンダクター株式会社 演算回路装置
JP4408712B2 (ja) * 2004-01-26 2010-02-03 富士通マイクロエレクトロニクス株式会社 多倍長データ積和演算処理回路及びモンゴメリ積和剰余演算回路
JP4663421B2 (ja) * 2005-06-24 2011-04-06 日本電信電話株式会社 離散対数演算装置、方法及びプログラム
US8028015B2 (en) * 2007-08-10 2011-09-27 Inside Contactless S.A. Method and system for large number multiplication
JP5097138B2 (ja) * 2009-01-15 2012-12-12 シャープ株式会社 モンゴメリ乗算のための演算回路及び暗号回路
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 배종훈 유아 세정보조기구
JP6193699B2 (ja) * 2013-09-27 2017-09-06 株式会社ソシオネクスト 演算回路
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
TWI575924B (zh) * 2015-10-06 2017-03-21 瑞昱半導體股份有限公司 解密裝置、方法及電路
TWI580243B (zh) * 2015-10-06 2017-04-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 カードターミナル
US4955024A (en) * 1987-09-14 1990-09-04 Visual Information Technologies, Inc. High speed image processing computer with error correction and logging
US5146592A (en) * 1987-09-14 1992-09-08 Visual Information Technologies, Inc. High speed image processing computer with overlapping windows-div
US4985848A (en) * 1987-09-14 1991-01-15 Visual Information Technologies, Inc. High speed image processing system using separate data processor and address generator
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 ビデオ信号用プロセツサ
JP3720371B2 (ja) * 1995-10-06 2005-11-24 アドバンスト・マイクロ・デバイシズ・インコーポレイテッド スーパースケーラープロセッサにおけるout−of−order実行のための統一化された機能オペレーションスケジューラ
JP3743789B2 (ja) * 1996-10-24 2006-02-08 株式会社ルネサステクノロジ メモリとプロセサとが同一チップ上に形成されたマイクロコンピュータ
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 株式会社デンソー 情報処理装置
DE69828150T2 (de) * 1998-03-30 2005-12-15 Rainbow Technologies Inc., Irvine Vom Rechenaufwand her effizientes modulares Multiplikationsverfahren und Gerät
US6560754B1 (en) * 1999-05-13 2003-05-06 Arc International Plc Method and apparatus for jump control in a pipelined processor

Also Published As

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

Similar Documents

Publication Publication Date Title
JP3709553B2 (ja) 演算回路および演算方法
JP3525209B2 (ja) べき乗剰余演算回路及びべき乗剰余演算システム及びべき乗剰余演算のための演算方法
Faz-Hernández et al. Efficient and secure algorithms for GLV-based scalar multiplication and their implementation on GLV–GLS curves (extended version)
EP3903300A1 (en) Configurable lattice cryptography processor for the quantum-secure internet of things and related techniques
De Win et al. A fast software implementation for arithmetic operations in GF (2 n)
Jalali et al. Towards optimized and constant-time CSIDH on embedded devices
JP2002258743A (ja) 耐タンパーモジュラ演算処理方法
US8078661B2 (en) Multiple-word multiplication-accumulation circuit and montgomery modular multiplication-accumulation circuit
KR100442218B1 (ko) 몽고메리의 알고리즘을 이용한 멱승 잉여 연산기
Oliveira et al. The Montgomery ladder on binary elliptic curves
Hutter et al. NaCl’s crypto_box in hardware
CN113467750A (zh) 用于基数为4的srt算法的大整数位宽除法电路及方法
Oliveira et al. Software implementation of Koblitz curves over quadratic fields
KR100991713B1 (ko) 마스킹을 이용한 aes 역원 연산 장치 및 방법과 이를 이용한 aes 암호 시스템
Clancy Analysis of FPGA-based hyperelliptic curve cryptosystems
KR100974624B1 (ko) 센서 모트에서의 효율적인 타원 곡선 암호 연산 방법, 그장치 및 이를 기록한 기록매체
CN113467752B (zh) 用于隐私计算的除法运算装置、数据处理系统及方法
JPH0916379A (ja) 通信方法とその装置
Mukaida et al. Design of high-speed and area-efficient Montgomery modular multiplier for RSA algorithm
KR20000009759A (ko) 모듈러 곱셈기
Vollala et al. Modular Exponential Techniques
Turan ECDSA Optimizations on ARM Processor for a NIST Curve over GF (2m)
Mohan et al. RNS in Cryptography
CN117785128A (zh) 一种可用于任意素数域椭圆曲线的计算系统
KR100954582B1 (ko) GF(3) 기반의 덧셈기, GF(3) 기반의 곱셈기,GF(3) 기반의 덧셈 뺄셈 통합형 연산 장치, 및 MSBfirst GF(3^m) 직렬 곱셈 장치

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