JP3709553B2 - 演算回路および演算方法 - Google Patents
演算回路および演算方法 Download PDFInfo
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/40—Methods 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/44—Multiplying; Dividing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3824—Operand accessing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/60—Methods 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/72—Methods 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/728—Methods 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
【発明の属する技術分野】
本発明は、演算回路および演算方法に関し、特に公開鍵暗号化方式等に好適な乗剰余計算の高速化に関するものである。
【0002】
【従来の技術】
情報を伝送する際に、セキュリティの確保あるいは認証のために公開鍵暗号(非対称暗号)が用いられる。公開鍵暗号は公開鍵と秘密鍵の一対の鍵を用いて情報を伝送する暗号方式である。送信者が受信者の公開鍵で平文を暗号化し、暗号文を受取った受信者は受信者しか知りえない秘密鍵を用いて暗号文を復号する。このような公開鍵暗号では共通鍵暗号(対称鍵暗号)のように1つの共通鍵を共有する必要がなく、また、公開鍵暗号では公開鍵を広く公開することができるので不特定多数の者との通信の秘密が確保できる。さらに、公開鍵暗号を電子認証あるいは電子署名に用いて面識のない他人との信頼関係を確立することができる。インターネット等通信技術が支えるネットワーク社会あるいはその中で営まれる商取引等において必須の技術と位置付けられる。
【0003】
公開鍵暗号方式の一つにRSAが知られている。RSAは非常に大きな整数の離散対数問題あるいは素因数分解の困難性にその安全性の基礎をおく。たとえば、公開鍵(e,n)を用いて、平文Mを
C=Me(mod n)
の関係式から暗号文Cを生成する(なお、Mは整数n未満になるようブロック化されている)。この暗号文Cの解読には離散対数計算(a、y、pからy=ax(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=Cd(mod n)
の関係式を用いて平文Mを簡単に求めることができる(ただし、lcm(a,b)はaとbの最小公倍数を与える)。
【0005】
たとえば、d=11の場合、
C11=((C2)2C)2)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=(2r)m
N≡−n−1(mod 2r)
とする。また、擬似コードにおいて各行の左側には行番号を付す(以下同様)。
【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個のブロックxiに区切り(X=(xm−1,xm−2,…,x1,x0))、Yとの部分積加算(xiY)をm回繰り返す(行番号1.2〜1.5)。このとき、途中結果Pの最下位ブロックp0が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回のループを繰り返すことになる。上記擬似コードでは簡単のためにxi・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,…,x1,x0)
Y=(ym−1,ym−2,…,y1,y0)
n=(nm−1,nm−2,…,n1,n0)
乗算器が一つの場合を仮定すると、途中結果tmpの計算に二回の積和演算が必要となる。変数pj,xi,yj,t,njは全てrビット長の数、変数cは下位ブロックからのキャリーである。上記擬似コード2.xの例では、一回のjループで2rビットの数xi・yjとt・nj、そしてr+1ビットの数pjとcの加算を行い(行番号2.6〜2.11)、積和演算後の途中結果tmpは2r+1ビット長を持つ。tmpの下位rビットは変数pjに,上位r+1ビットは変数cにストアされる(行番号2.9、2.10)。
【0011】
一方、xi・yjと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の例では、変数pjはrビット長、変数tmpは2rビット長となる。
【0013】
擬似コード2.x、3.xの両例ともモンゴメリ乗算の二重ループを抜けた後の結果Pは2n未満となるが、n以下である保証はないので必要に応じて、「P=P−n」とする(行番号2.14,3.18)。
【0014】
上記擬似コード2.x、3.xの例において、基本的にpjは、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とxiはjループ(擬似コード2.6〜2.11)内で値が変らずに繰り返し使用される。このため、変数N,t,xiについては、一旦計算あるいはメモリから読み出した後は各ループを抜けるまでレジスタに保持して繰り返し使用することができる。またjループ内で使用する途中変数tmpとcはレジスタに直接割り付けられる。その他の変数は,読み出しと書き込みが独立したアドレスに対して実行できる一般的な2ポートメモリに記録する。またメモリ読み出し→演算→書き込みの一連の処理はパイプライン処理されるものとする。そうすると、演算と書き込みは基本的に1サイクルで終了するのでメモリ読み出しがパフォーマンスのボトルネックになる。以下、メモリ読み出しのサイクル数を検討する。
【0017】
まず行番号2.1の「P=0」の処理については、行番号2.7の演算
tmp=pj+xi・yj+c
などで最初にpjを読み出すときにその値をリセットすればよい。このためサイクル数0である。
【0018】
行番号2.3,2.4の変数tの計算
t=p0+xiy0(mod 2r)
t=t・N(mod 2r)
ではレジスタに割り付けられているN以外の変数(p0、xi、y0)をメモリから読み出すのに3サイクルを要する。なお、tについては前記した通り行番号2.3の演算結果が直接レジスタに割り付けられるので読出しの必要はない。行番号2.5の「c=0」は、「P=0」の処理と同様0サイクルである。
【0019】
jループに入って、行番号2.7の演算
tmp=pj+xi・yj+c
はpjとyjの読み出しで2サイクルを必要とする。xiは行番号2.3のtの計算の際に読み出されているのでここでの読出しの必要はない。また、cについては前記の通り直接レジスタに割り付けられるので読出しの必要はない。
【0020】
行番号2.8の演算
tmp=tmp+t・nj
はnjの読み出しで1サイクルを要する。tmp、tについては前記した通り直接レジスタに割り付けられるので読出しの必要はない。
【0021】
行番号2.9の演算
pj−1=tmp(mod 2r)
c=tmp/2r
の実際のハードウェア上の動作は、「tmp+t・nj」を一旦レジスタ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)=3m2+3m
となる。しかし、先に述べたようにi=0のときpj=0なのでpjを読み出す必要はなく、入力を0リセットすればよい。よってiループ全体ではこの分のmを減じて
3m2+3m−m=3m2+2m
となる。行番号2.14の比較動作
if (P => n)
では減算「P−n」によって大小を判定するのでこれに2mサイクル、最後にパイプラインを抜けるのに2サイクルを要する。結局最終的なサイクル数は
3m2+4m+2
となる。これはパイプライン処理が乱れなく実行できる場合であり、演算ビット数が乗算器のビット数に対してあまり大きくないとき、つまりブロック数mが少ないときは、書き込もうとした値を直ぐに読み出す必要があるためメモリアクセス待ちのオーバーヘッドが加わることになる。ただしブロック数が4〜5あれば実用上このような問題は生じない。また逆にブロック数が2〜3といった小さな数に対してモンゴメリ法を適用する意味はあまりないので、上記事情は考慮する必要がない。つまり、二重ループによるm2項の係数「3」が大きく変わることはない。また、実装形態によってはjループ前後でパイプライン動作が乱れることがあり、前記最終的なサイクル数が実際には若干異なることがある。しかし、この場合であっても二重ループによるm2項の係数「3」は変わらず、最終的なサイクル数が前記値と大きく異なることはない。
【0024】
これと同様に擬似コード3.xの例を詳細に検討すれば、以下の通りである。行番号3.1の「P=0」の処理は、行番号3.5の演算
tmp=pj+xi・yj+c
で最初にpjを読み出すときにその値を0リセットすればよいのでサイクル数は0である。行番号3.1の「c=0」の処理についても、擬似コード2.xと同様0サイクルである。
【0025】
第1jループ(行番号3.4〜3.8)に入って、行番号3.5の演算
tmp=pj+xi・yj+c
では、pjとyjの読み出しで2サイクルを必要とし、第1jループの最初にxiを読み出す必要がある。行番号3.6の演算
pj=tmp(mod 2r)
c=tmp/2r
は擬似コード2.xの場合と同様にtmpを直接pj、cに書き込むので0サイクルとなる。よって、1番目のjループのサイクル数は、2m+1となる。
【0026】
第1jループを抜けた後の行番号3.9の演算
pm=c; c=0;
はパイプライン処理により0サイクルとなり、行番号3.10の演算
t=p0・N(mod 2r)
では、p0とNの読み出しに2サイクルを要する。
【0027】
次に第2jループ(行番号3.11〜3.15)に入って、行番号3.12の演算
tmp=pj+t・nj+c
では、pjとnjの読み出しで2サイクルを要する。なお、tとcはレジスタに直接書込まれるので読出しの必要はない。それに続く行番号3.13の演算
pj−1=tmp(mod 2r)
c=tmp/2r
は、擬似コード2.xの場合と同様0サイクルとなる。従って、2番目のjループのサイクル数は2mとなる。そして2番目のjループを抜けた後の行番号3.16の演算
pm−1=pm+c
では、pmの読出しに1サイクル必要である。
【0028】
よって、iループ内の演算サイクル数は、
(2m+1)+2+2m+1=4m+4
となる。これにiループのmを乗じて
m(4m+4)=4m2+4m
となる。しかし、先に述べたようにi=0のときpjを読み出す必要はなく、入力を0リセットすればよいので、iループ全体ではこの分のmを減じて
4m2+4m−m=4m2+3m
となる。行番号3.18の比較動作
if (P=>n)
では減算「P−n」によって大小を判定するのでこれに2mサイクル、最後にパイプラインを抜けるのに2サイクルを要する。結局最終的なサイクル数は
4m2+5m+2
となる。擬似コード3.xの例でm2サイクル多いのは、tmpへの部分積加算を一つのjループで行わないため、行番号3.4〜3.8のループでメモリに書き込んだpjを行番号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ビット長を有するx1、x2、x3、x4の各入力値に基づいて、2rまたは2r+1ビット長を有するx1+x2・x3+x4の演算結果Qを与える積和演算器とすることができる。この場合、前記複数のメモリには、第1メモリおよび第2メモリを含み、前記パイプライン処理の演算ステージに続く演算結果の書き込みステージにおいて、前記演算結果Qの下位rビットQLが前記第1メモリに記録され、前記演算結果Qの前記QLを除く上位ビットQHが前記第4レジスタに入力され、前記書き込みステージに続く前記レジスタへの変数の読出しステージにおいて、前記第1メモリから前記第1レジスタに変数x1が、前記第2メモリから前記第3レジスタに変数x3が、同一の読出しステージで読み出されるものとすることができる。また、前記第1および第2メモリを、データの書き込みポートと読出しポートとを各々1つ有する2ポートメモリとすること、あるいは、前記第1メモリをデータの書き込みポートと読出しポートとを各々1つ有する2ポートメモリ、前記第2メモリをデータの書き込みおよび読出しが1つのポートで行われる1ポートメモリとすることができる。
【0034】
また、前記演算器は、第1レジスタ、第2レジスタ、第3レジスタ、第4レジスタ、第5レジスタ、第6レジスタの各々に入力されたrビット長を有するx1、x2、x3、x4、x5、x6の各入力値に基づいて、2rまたは2r+1ビット長を有するx1+x2・x3+x4・x5+x6の演算結果Qを与える積和演算器とすることができる。この場合、前記複数のメモリには、第1メモリ、第2メモリおよび第3メモリを含み、前記パイプライン処理の演算ステージに続く演算結果の書き込みステージにおいて、前記演算結果Qの下位rビットQLが前記第1メモリに記録され、前記演算結果Qの前記QLを除く上位ビットQHが前記第6レジスタに入力され、前記書き込みステージに続く前記レジスタへの変数の読出しステージにおいて、前記第1メモリから前記第1レジスタに変数x1が、前記第2メモリから前記第3レジスタに変数x3が、前記第3メモリから前記第5レジスタに変数x5が、同一の読出しステージで読み出されるものとすることができる。また。前記第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を与える。すなわち、加算入力pj,cと積算入力yj,xiとから出力tmp=pj+yj・xi+cを得る。積和演算回路1は、たとえば公知の全加算器FAと半加算器HAとを用いて構成できる。なお、図1においてxi (0)のように示しているのは、変数xiの括弧内の数字に相当するビットを抜き出した値に対応する。
【0038】
入力レジスタ2〜5には、メモリ7,8から値が読み出されて入力され、あるいは積和演算回路1からの出力が直接入力される。マルチプレクサ6は3つの入力に対し1つの出力を与えるスイッチである。
【0039】
メモリ7,8は汎用的な2ポートメモリ、すなわちデータの書き込みと読出しを各々独立した1つのポートから行えるメモリである。メモリ7(メモリA)には二重ループ処理中の途中変数P(pj)が記録され、メモリ8(メモリB)には、その他の変数X(xi),Y(yj),n(nj),Nと最終結果P(pj)が記録される。メモリ7,8は何れも2ポートメモリであり、素子のIPコア化の障害、素子面積の増大の問題を生じない。
【0040】
本実施の形態の演算回路では、データの読出し、演算、書き込みが一連のパイプラインとして処理される。すなわち、メモリからレジスタへのデータの読出しステージと、レジスタに入力された値に基づく演算ステージと、演算結果をレジスタまたはメモリに書き込む書き込みステージとが並列に処理される。
【0041】
図2は、図1の回路において擬似コード3.xの処理を実行した時の処理のタイミングを示したタイミングチャートである。図2では、m=4の場合の処理の最終ループ近辺を示している。なお前記および以下のタイミングチャートにおいて一連のパイプライン処理(データの読出し、演算、結果の書き込み)を同じ背景色で示すようにグレーまたは白に濃淡分けてして示している。また、チャートの左端には、読出し先のメモリ(MemA(read)、MemB(read))、レジスタ(pj(レジスタ5)、yj,nj,N(レジスタ4)、c(レジスタ2)、xi,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(pj)にp0を、メモリ8(MemB)からレジスタ4(yj,nj,N)にy0を読み出す(読出しステージ)。なおこの読出しステージと同時に前サイクルの演算ステージ(行番号3.16の計算)および前々サイクルの書込みステージ(メモリ7(MemA)へのp2の書込み、cレジスタへの上位ビットtmpHの書込み)が行われている。
【0043】
次に、j=1の読出しステージでメモリ7(MemA)からレジスタ5(pj)にp1を、メモリ8(MemB)からレジスタ4(yj,nj,N)にy1を読み出すと同時に先に読み込まれたp0、y0とレジスタ2(c)に入力されている前ステップの演算結果(tmpH)およびレジスタ3(xi,t)に入力されているx3に基づいて行番号3.5の演算を実行する(演算ステージ)。なお、この時前サイクルの書込みステージ(メモリ7(MemA)へのp3の書込み、cレジスタ(レジスタ2)への上位ビットtmpHの書込み)が行われている。
【0044】
次に、j=2の読出しステージでメモリ7(MemA)からレジスタ5(pj)にp2を、メモリ8(MemB)からレジスタ4(yj,nj,N)にy2を読み出すと同時に前サイクルでレジスタに読み出された値に基づいて演算を実行し、先の演算結果(変数p0、x3、y0、cに基づく演算結果)の上位ビットtmpHおよび下位ビットp0を各々cレジスタとメモリ7(MemA)に書き込む(書込みステージ)。このようにして、p0、y0の入力以降結果が記録されるまでの一連のパイプライン処理が行われる。その他のpj、yjについても同様である。
【0045】
次に、行番号3.9の処理では、読み込みサイクルに1サイクルの空きを設け、j=3の演算ステージの後にレジスタcの内容をp4としてメモリ7に記録する。
【0046】
次に、行番号3.10の処理(tの計算)では、メモリ7からp0を、メモリ8からNを同一の読出しステージで各々レジスタ3およびレジスタ4に読出し、演算の結果を次の書込みステージでレジスタ4に変数tとして書き込む。
【0047】
次に、行番号3.11〜3.15の第2jループの処理では、第1jループの場合と同様にメモリ7からpjが、メモリ8からnjが同一読出しステージで読み出され、先に入力された変数t、cを用いて行番号3.12の演算を行う。その後、演算結果の下位ビットはpj−1としてメモリ7に記録され(行番号3.13)、上位ビットはcレジスタに記録される(行番号3.14)。なお、この第2jループのj=0における処理ではcは0リセットされる。また、j=0では演算結果の下位ビットは記録されない。
【0048】
行番号3.16の処理では、メモリ7からp4がレジスタ5(pj)読み出され、cレジスタの値との和をとってp3としてメモリ7に記録される。ただし、最後のiループのメモリへの書込み処理では、pjはメモリ7だけでなくメモリ8にも記録する。
【0049】
最後に、行番号3.18の処理では、メモリ7からpjとnjを各々レジスタに読出し、比較演算を行う。つまり減算「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回を乗じて2m2+3m。なおi=0のときにpjを読み出す必要はないがそのサイクルでyjを読み出す必要があるのでmを減じることはない。行番号3.18の比較動作にmサイクル、パイプラインを抜けるのに2サイクルを要する。結局最終的なサイクル数は
2m2+4m+2
となる。従来方式において4m2+5m+2の読出しサイクルを必要としたことと比較すれば、約半分のサイクル数に減少する。
【0052】
なお、前記実施の形態では擬似コード3.xの場合を説明したが、擬似コード2.xのようにxi・yjとt・njを一つのループで加算することも可能である。擬似コード2.xの場合は、擬似コード3.xの場合に比べ変数pjの読み出しの待ちサイクルが半分と少ないため、全体のサイクル数が少ないというメリットがあったが、前記実施の形態のようにメモリを2つ設けてこれを使い分ける場合、両者に違いはない。これは図2からもわかるように、本実施の形態ではpjとyjまたはpjとnjの読み出しを別のメモリから同時に行え、余計な待ちが生じないためである。本実施の形態では、擬似コード2.xの場合であっても、従来方式のサイクル数、3m2+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ポートメモリを用いているので最終的な計算結果であるpjの書込みをメモリ8に行わず、メモリ7に行う。そして、最後にメモリ7(MemA)からメモリ8(MemB)にpjの転送を行う。すなわち、最終結果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)をシングルポートメモリにすることができる。これによりメモリの小型化を図ることが可能になる。なお、本実施の形態の場合のサイクル数は
2m2+5m+3
となる。これに対して、従来のよう1つのシングルポートメモリで擬似コード2.xを処理した場合、
4m2+5m+2
擬似コード3.xを処理した場合、
6m2+7m+2
のサイクル数が必要になる。本発明の優位性がより顕著となる。
【0055】
(実施の形態3)
図5は、本発明のさらに他の実施の形態であるモンゴメリ乗算回路の一例をそのデータパス部について示したブロック図である。本実施の形態のモンゴメリ乗算回路は積和演算回路9と、入力レジスタ10〜15と、3つのメモリ16(メモリA)、メモリ17(メモリB1)およびメモリ18(メモリB2)とを有する。
【0056】
積和演算回路9は、レジスタ11(tレジスタ)とレジスタ12(nj,Nレジスタ)の入力値(rビット長)の積と、レジスタ13(xiレジスタ)とレジスタ14(yjレジスタ)の入力値(rビット長)の積と、レジスタ10(cレジスタ)の入力値(r+1ビット長)と、レジスタ15(pjレジスタ)の入力値(rビット長)を加算した2r+1ビット長の出力tmpを与える。すなわち、積和演算回路9は2つの乗算器を有し、加算入力pj,cと積算入力yj,xiと、積算入力t,njとから出力tmp=pj+yj・xi+t・nj+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からp0を読出し、メモリ17からx3を読出し、メモリ18からy0を読み出す。これら読出しは1つの読出しステージで行われる。これら読み出した変数を用いて行番号2.3の演算を行い、演算結果の下位ビットtmpLをtレジスタに入力する。前記演算と並行してメモリ17からNを読出し、前記tとNを用いて行番号2.4の演算を行う。演算結果の下位ビットtmpLがtレジスタに入力され、本ループ内を通じてこのtの値が用いられる。なお、先に読み出したx3も本ループ内を通じて用いられる。
【0060】
次にjループに入り、p0,n0,y0が各々メモリ16,17,18からpjレジスタ、nj,Nレジスタ、yjレジスタに同一サイクル内で読み込まれる。その後、c、t、x3の値を用いて演算が行われ、演算結果の下位ビットはpj−1としてメモリ16に、上位ビットはcレジスタに書込まれる(行番号2.9,2.10)。なお、このjループのj=0における処理ではcは0リセットされる。また、j=0では演算結果の下位ビットは記録されない。
【0061】
行番号2.14の処理では、cレジスタの値がpmとしてメモリ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回を乗じてm2+3mとなる。なおi=0のときにpjを読み出す必要はないがそのサイクルでxi,yjを読み出す必要があるのでmを減じることはない。行番号2.14の比較動作とメモリ間転送に2mサイクル、パイプラインを抜けるのに2サイクルを要する。結局最終的なサイクル数は
m2+5m+2
となる。従来方式はもとより、実施の形態1,2と比較しても大幅にサイクル数が低減される。特にmの値が大きくなるとm2項が効いてくるので、その効果がより顕著になる。本実施の形態を用いることにより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乃至第4レジスタと、
第1および第2メモリと、
前記第1乃至第4レジスタの各々に入力されたrビット長を有するx 1 、x 2 、x 3 、x 4 の各入力値に基づいて、2rまたは2r+1ビット長を有するx 1 +x 2 ・x 3 +x 4 の演算結果Qを与える、パイプライン処理可能な演算器と、を含み、
前記パイプライン処理の演算ステージに続く演算結果の書き込みステージにおいて、前記演算結果Qの下位rビットQLが前記第1メモリに記録され、前記演算結果Qの前記QLを除く上位ビットQHが前記第4レジスタに入力され、
前記書き込みステージに続く前記レジスタへの変数の読出しステージにおいて、前記第1メモリから前記第1レジスタに変数x1が、前記第2メモリから前記第3レジスタに変数x3が、同一の読出しステージで読み出される演算回路。 - 前記第1および第2メモリは、データの書き込みポートと読出しポートとを各々1つ有する2ポートメモリである請求項1記載の演算回路。
- 前記第1メモリはデータの書き込みポートと読出しポートとを各々1つ有する2ポートメモリであり、前記第2メモリはデータの書き込みおよび読出しが1つのポートで行われる1ポートメモリである請求項1記載の演算回路。
- 第1乃至第6レジスタと、
第1乃至第3メモリと、
前記第1乃至第6レジスタの各々に入力されたrビット長を有するx 1 、x 2 、x 3 、x 4 、x 5 、x 6 の各入力値に基づいて、2rまたは2r+1ビット長を有するx 1 +x 2 ・x 3 +x 4 ・x 5 +x 6 の演算結果Qを与える、パイプライン処理可能な演算器と、を含み、
前記パイプライン処理の演算ステージに続く演算結果の書き込みステージにおいて、前記演算結果Qの下位rビットQLが前記第1メモリに記録され、前記演算結果Qの前記QLを除く上位ビットQHが前記第6レジスタに入力され、
前記書き込みステージに続く前記レジスタへの変数の読出しステージにおいて、前記第1メモリから前記第1レジスタに変数x1が、前記第2メモリから前記第3レジスタに変数x3が、前記第3メモリから前記第5レジスタに変数x5が、同一の読出しステージで読み出される演算回路。 - 前記第1メモリはデータの書き込みポートと読出しポートとを各々1つ有する2ポートメモリであり、前記第2および第3メモリは、データの書き込みおよび読出しが1つのポートで行われる1ポートメモリである請求項4記載の演算回路。
- 第1乃至第4レジスタと、パイプライン処理可能な演算器と、第1および第2メモリとを備えた演算回路を用いた演算方法であって、
前記第1乃至第4レジスタの各々に入力されたrビット長を有するx 1 、x 2 、x 3 、x 4 の各入力値に基づいて、2rまたは2r+1ビット長を有するx 1 +x 2 ・x 3 +x 4 の演算結果Qが与えられる、前記パイプライン処理における演算ステップと、
前記演算結果Qの下位rビットQLが前記第1メモリに記録され、前記演算結果Qの前記QLを除く上位ビットQHが前記第4レジスタに入力される、前記パイプライン処理における書き込みステップと、
前記第1メモリから前記第1レジスタへの変数x1の読出しと、前記第2メモリから前記第3レジスタへの変数x3の読出しとが、前記パイプライン処理の同一の読出しステージで行われる読出しステップと、
を含む演算方法。 - 前記第1および第2メモリは、データの書き込みポートと読出しポートとを各々1つ有する2ポートメモリである請求項6記載の演算方法。
- 前記第1メモリはデータの書き込みポートと読出しポートとを各々1つ有する2ポートメモリであり、前記第2メモリはデータの書き込みおよび読出しが1つのポートで行われる1ポートメモリである請求項6記載の演算方法。
- 第1乃至第6レジスタと、パイプライン処理可能な演算器と、第1および第3メモリとを備えた演算回路を用いた演算方法であって、
前記第1乃至第6レジスタの各々に入力されたrビット長を有するx 1 、x 2 、x 3 、x 4 、x 5 、x 6 の各入力値に基づいて、2rまたは2r+1ビット長を有するx 1 +x 2 ・x 3 +x 4 ・x 5 +x 6 の演算結果Qを与える、前記パイプライン処理における演算ステップと、
前記演算結果Qの下位rビットQLが前記第1メモリに記録され、前記演算結果Qの前記QLを除く上位ビットQHが前記第6レジスタに入力される、前記パイプライン処理における書き込みステップと、
前記第1メモリから前記第1レジスタへの変数x1の読出しと、前記第2メモリから前記第3レジスタへの変数x3の読出しと、前記第3メモリから前記第5レジスタへの変数x5の読出しとが、前記パイプライン処理の同一の読出しステージで行われる読出しステップと、
を含む演算方法。 - 前記第1メモリはデータの書き込みポートと読出しポートとを各々1つ有する2ポートメモリであり、前記第2および第3メモリはデータの書き込みおよび読出しが1つのポートで行われる1ポートメモリである請求項9記載の演算方法。
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)
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)
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 |
-
2000
- 2000-12-19 JP JP2000386069A patent/JP3709553B2/ja not_active Expired - Fee Related
-
2001
- 2001-11-27 AT AT01128119T patent/ATE440320T1/de not_active IP Right Cessation
- 2001-11-27 DE DE60139597T patent/DE60139597D1/de not_active Expired - Lifetime
- 2001-11-27 EP EP01128119A patent/EP1217512B1/en not_active Expired - Lifetime
- 2001-12-06 KR KR10-2001-0077092A patent/KR100441036B1/ko not_active IP Right Cessation
- 2001-12-10 TW TW090130566A patent/TW530260B/zh not_active IP Right Cessation
- 2001-12-18 US US10/023,147 patent/US6772942B2/en not_active Expired - Lifetime
- 2001-12-19 CN CNB011437383A patent/CN1221891C/zh not_active Expired - Lifetime
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 |