JP4619657B2 - モンゴメリ乗算器のパイプライン型コア - Google Patents

モンゴメリ乗算器のパイプライン型コア Download PDF

Info

Publication number
JP4619657B2
JP4619657B2 JP2003553405A JP2003553405A JP4619657B2 JP 4619657 B2 JP4619657 B2 JP 4619657B2 JP 2003553405 A JP2003553405 A JP 2003553405A JP 2003553405 A JP2003553405 A JP 2003553405A JP 4619657 B2 JP4619657 B2 JP 4619657B2
Authority
JP
Japan
Prior art keywords
time slot
multiplier
product
calculated
multiplication
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
JP2003553405A
Other languages
English (en)
Other versions
JP2005513532A (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.)
NXP BV
Original Assignee
NXP BV
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 NXP BV filed Critical NXP BV
Publication of JP2005513532A publication Critical patent/JP2005513532A/ja
Application granted granted Critical
Publication of JP4619657B2 publication Critical patent/JP4619657B2/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/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/724Finite field arithmetic
    • 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
    • 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/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/52Multiplying; Dividing
    • G06F7/523Multiplying only
    • G06F7/533Reduction of the number of iteration steps or stages, e.g. using the Booth algorithm, log-sum, odd-even
    • G06F7/5334Reduction of the number of iteration steps or stages, e.g. using the Booth algorithm, log-sum, odd-even by using multiple bit scanning, i.e. by decoding groups of successive multiplier bits in order to select an appropriate precalculated multiple of the multiplicand as a partial product
    • G06F7/5336Reduction of the number of iteration steps or stages, e.g. using the Booth algorithm, log-sum, odd-even by using multiple bit scanning, i.e. by decoding groups of successive multiplier bits in order to select an appropriate precalculated multiple of the multiplicand as a partial product overlapped, i.e. with successive bitgroups sharing one or more bits being recoded into signed digit representation, e.g. using the Modified Booth Algorithm
    • G06F7/5338Reduction of the number of iteration steps or stages, e.g. using the Booth algorithm, log-sum, odd-even by using multiple bit scanning, i.e. by decoding groups of successive multiplier bits in order to select an appropriate precalculated multiple of the multiplicand as a partial product overlapped, i.e. with successive bitgroups sharing one or more bits being recoded into signed digit representation, e.g. using the Modified Booth Algorithm each bitgroup having two new bits, e.g. 2nd order MBA
    • 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/724Finite field arithmetic
    • G06F7/725Finite field arithmetic over elliptic curves

Landscapes

  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Mathematical Physics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computing Systems (AREA)
  • Complex Calculations (AREA)
  • Molds, Cores, And Manufacturing Methods Thereof (AREA)
  • Sink And Installation For Waste Water (AREA)
  • Image Generation (AREA)
  • External Artificial Organs (AREA)
  • Escalators And Moving Walkways (AREA)

Description

本発明は、素数を法とする剰余系で第1の多倍長整数(long integer)エンティティに第2の多倍長整数を乗算する乗算器装置に係わり、この装置は、パイプライン型コアを含み、全体的な乗算をモンゴメリ形式で実行するために構成されている。
素数を法とする剰余系での多倍長整数の乗算は、基本的な、繰り返し演算であり、いわゆる公開鍵システムおよび様々なその他のアプリケーションで使用される。このようなアプリケーションの効率的な使用のため、乗算の実効時間は最小限となるべきである。その結果、本発明は、特に、請求項1のプリアンブルに記載されるような装置に関する。このため、乗算演算と還元演算の組み合わせを使用する様々な方法および装置が提案されている。特に、屡々、結果の最上位部分が実際に還元に影響を与えるために使用されている。しかし、このような最上位部分の展開は、このような乗算の系列が連続した態様で実行されなければならないので、特に、利用可能なハードウェアが最大実現可能なデューティサイクルで使用されなければならないとき、実質的に全体的な演算を遅らせることに本発明者は気付いた。
したがって、特に、本発明の目的は、プリアンブルに記載されたような乗算器装置であって、従来技術と対比して、実際の結果の最下位部分が還元に影響を与えるため使用され、ハードウェアがこのような乗算の実質的である長い系列を処理可能にするため実際に使用される時間の割合をさらに引き上げる乗算器装置を提供することである。
このため、本発明の態様の一つによれば、本発明は、請求項1の特徴部によって特徴付けられる。実際に、本発明による組み合わせは、より容易にパイプラインを一杯の状態に保ち、その結果として、オーバーレイ演算における平均計算時間を短縮する。乗算器装置は、pを素数としてGF(p)における演算、並びに、GF(2)における演算に適用可能である。
さらに、本発明の有利な態様は、本発明の主な要素への有利な拡張、または、本発明の適用分野を明確にする従属請求項に記載されている。
本発明の上記およびさらなる態様並びに効果は、好ましい実施形態の説明と、特に添付図面とを参照して以下で詳細に説明される。
(1. パイプライン型乗算器)
パイプライン型乗算器は、全てのクロックサイクルで、乗算される2個の新しい数を受け入れるように設計されている。両者の積は、多数の段階で計算され、全ての段階を通ったときに作動可能となる。例えば、32*32ビット乗算の場合、段階の段数は17(乗算用の16段と最終加算用の1段)である。全てのクロックサイクルで、次の積が計算されるが、その結果は17クロックサイクル後になってようやく準備ができている。したがって、最大で17個の積が同一クロックサイクルに処理されている。
効率的なパイプライン型乗算器を目指して、多倍長整数計算は、パイプラインが一杯の状態を保つように設計されている。新しい計算がまだ進行中である結果に依存する状況を回避しなければならない。このような状況では、待機状態を挿入しなければならないであろう。これが、RSAのような計算とは異なって楕円曲線計算のためのモンゴメリ乗算器を設計する理由である。
乗算の次に、乗算器は、2回の加算P = X・Y + A + Bを実行する。一方の加算は、2個の多倍長整数の乗算のために必要であり、この場合、乗算は、多数の基本的な32*32ビット乗算に分けられる。
パイプライン型乗算器は、例えば、8*8ビット、または、16*16ビットのような様々なビット数のため設計することができる。
(2. モンゴメリ乗算)
モンゴメリ乗算は、積P = x・y・R−1 mod pを計算する。ここで、xおよびyは乗算される入力であり、pは乗算の法である。さらに、R=2であり、ここで、nはシステムのビット数であり、例えば、RSAのようなシステムでは1024であり、楕円曲線では160である。一例として、17段のステージをもつ32*32ビット乗算器が選択される。
(3. 基底Bを用いるモンゴメリ乗算)
この方法は、Nが大きい値である場合、ならびに、RSAの場合に適している。
B=232であり、プロセッサのワードサイズは32ビットであると仮定する。
R=BNwであり、Nは多倍長整数の32ビットワードの個数である。
a[i]は数aのi番目の32ビットワードである。
T[0]は、一時変数Tの最下位32ビット部分である。
事前に格納された定数:
m'=−(p−1) mod B (32ビット幅)
素数p
入力:a mod p, b mod p
出力:モンゴメリ積:MonPro(a,b)=a・b・R−1 mod p
演算は次の通りである。
T = 0
for i=0 to N−1
{ T = T + a[i]・b; // N回乗算
Ui = T[0]・m' mod B; // 1回乗算
T = (T + Ui・p)/B // N回乗算

If T > p then T = T−p
(4. 512ビットオペランドのための計算)
本例では、aおよびbは32ビットワードである。最初に、T=T+a[i]・bがi=0から計算される。
最初の計算はタイムスロット0で始まり、最後の計算はタイムスロット15で始まる。タイムスロット16に待機サイクルが加わる。
最初の結果T[0]は時点17に作動可能である。次に、そのタイムスロットから、タイムスロット34の出力である積Ui=T[0]・m'を計算する。
次の一連の計算は(T+Ui・p)/Bであり、これは、タイムスロット34で始まり、タイムスロット49で終わる。その最初の結果はタイムスロット51で出力されるが、その結果は常に零であるため棄てられる。2番目の結果はタイムスロット52で出力される。
タイムスロット52以降、ループが改めて始まる。そのループは、前のラウンドの結果が作動可能となると直ちに前のラウンドの結果を使用する。
16回のラウンドがあるので、タイムスロットの総数は16*52=832個である。
完全な結果はタイムスロット848で準備ができている。
(5. 1024個のオペランドのための計算)
最初に、T=T+a[i]・bがi=0から計算される。
最初の17個の積を計算し始める。
最初の結果T[0]は時点17に準備ができる。そのタイムスロットで、タイムスロット34の出力である積Ui=T[0]・m'を計算する。タイムスロット18から32まで、残りの積T=T+a[i]・bを計算する。
次の一連の計算は(T+Ui・p)/Bであり、これは、タイムスロット34で始まり、タイムスロット65で終わる。その最初の結果は、タイムスロット66で新しいラウンドが開始したときに準備できる。
32回のラウンドがあるので、タイムスロットの総数は32*66=2112個である。
完全な結果はタイムスロット2128で準備ができている。
(6. 2048ビットオペランドのための計算)
最初に、T=T+a'[i]・b'がi=0から計算される。
最初の17個の積を計算し始める。
最初の結果T[0]は時点17に準備ができる。そのタイムスロットで、タイムスロット34の出力である積Ui=T[0]・m'を計算する。タイムスロット18からNまで、残りの積を計算する。
次の一連の計算は(T+Ui・p)/Bであり、これは、タイムスロットNで始まり、タイムスロット2N−1で終わる。
その最初の結果は、タイムスロット2Nで新しいラウンドが開始したときに準備できる。
回のラウンドがあるので、タイムスロットの総数はN・(2N+1)個である。
完全な結果はタイムスロットN・(2N+1)+17(=8273(2048ビットに対する))で準備ができている。
(7. 基底Rを用いるモンゴメリ乗算)
このアルゴリズムは、Nの値が小さい場合、ならびに、楕円曲線の場合に適している。
B=232である(プロセッサのワードサイズは32ビットであると仮定する)。
R=BNwである(Nは多倍長整数の32ビットワードの個数である)。
事前に格納された定数:
m'=−(p−1) mod R (m'はN32ビット幅である)
素数p
入力:a mod p, b mod p
出力:MonPro(a,b)=a・b・R−1 mod p
T = a・b
U = T・m' mod R
T' = T + U・p
T = T/R
if T>p then T = T−p
GF(2)上のシステムに対し、全ての加算は2を法とする。ここで、m'は多項式B=α32の逆数である。
(8. 計算方法)
最初に、完全な積T=a・bが計算される。これは、N 回の乗算を要する。最初のTの結果が既に存在するので、その直後に開始することができる。積T・m'の中で、Rよりも小さい積だけを計算すればよい。
積T[0]はタイムスロット17で準備ができる。T[0]*(m[0]...m[N−1])の計算は、タイムスロットN で始まり、N回の乗算を要する。
積T[1]はタイムスロット17+Nで準備ができる。T[1]*(m[0]...m[N−2])の計算は、タイムスロットN +Nで始まり、N−1回の乗算を要する。
積T[2]はタイムスロット17+2Nで準備ができる。T[2]*(m[0]...m[N−3])の計算は、タイムスロットN +2N−1で始まり、N−2回の乗算を要し、以下、同様に続く。
積T[j]はタイムスロット17+j・Nで準備ができる。T[j]*(m[0]...m[N−j−1])の計算は、タイムスロットN +(2N−j+1)・j/2で始まり、N−j回の乗算を要し、以下、同様に続く。
積T[N−1]はタイムスロット17+(N−1)・Nで準備ができる。T[N−1]*m[0]の計算は、タイムスロットN +(N+2)・(N−1)/2で始まり、1回の乗算を要する。
≧5に対し、積T[j]は、新しい積T[j]*m[0]が始まる前に、常に準備ができていることが証明できる。したがって、待機サイクルは不要である。
U[0]はタイムスロットタイムスロットN +17で準備ができる。この瞬間から、積U・pが計算される。
最後の乗算がタイムスロットN +(N+2)・(N−1)/2+1で始まる。N=5の場合、これはタイムスロット40であり、U[0]はタイムスロット42で始まる。このため、待機サイクルが2回必要である。より大きいNの値の場合は、待機サイクルは不要である。
U・pの計算はN 個のタイムスロットを必要とする。
タイムスロットの総数は、N>5の場合に、2・N +(N+2)・(N−1)/2+1個である。
タイムスロットの総数は、N=5の場合に、67個である。
完全な結果は、2・N +(N+2)・(N−1)/2+18で準備ができる。
(9. 修正ブースアルゴリズム)
修正ブースアルゴリズムは、部分積を実行するため被乗数の2ビットを利用するように設計される。これは部分積の回数を半分にする。
最初に、乗数Yが記録され、ここで、y'は、−2、−1、0、+1および+2の値をとる(符号付き10進数表記)。
y'=−2・yi+1+y+yi−1(iが偶数値である場合だけに定義される)
Y=y'30・230+y'28・228+...+y'・2
'=−2yi+1+y+yi−1
=0
Figure 0004619657
正しい結果を得るため、積y・Xからの減算が必要である。
(10. 並列に実行される減算)
X=x31・231+x30・230+...x・2+x・2
Y=y31・231+y30・230+...y・2+y・2
W=w31・231+w30・230+...w・2+w・2
Z=X・Y+W
この点に関して、図1はパイプライン型乗算器の一実施形態のブロック図である。図中、アスタリスク付きの円は乗算を実行し、プラス記号付きの円は、桁上げ保存(carry-save)演算を含む加算のような加算を実行する。種々のブロックは、その中に示された量を一時的に保持する。よりわかり易くするため、種々の相互接続は、それに沿って転送されるビットのビット順位(bit rankings)を表す。右側では、1列のブロックが必要な補正項を導入するため使用される。
左辺は、Z=X・Y+W+y・Xを計算する。この最後の項は、アルゴリズムの所産である。右辺は、他の計算と並列に最後の項を減算する。これが発明である。
以下の実施形態は乗算がどのようにセットアップされるかを説明するが、実施形態は細部で変化しても構わない。
1番目のタイムスロットで、Z=X・Y(1:0)+Wが計算され、レジスタZに格納される。Xは2番目のXレジスタへ転送され、Y(31:2)は2番目のYレジスタへ転送される。
2番目のタイムスロットで、Z=X・Y(3:2)+Zが計算され、レジスタZに格納される。さらに、Xは3番目のXレジスタへ転送され、Y(31:2)は3番目のYレジスタへ転送される。
さらに、−y*X(1:0)が計算され、Z(1:0)に加えられ、以下同様に続く。
16番目のタイムスロットで、Z15=X・Y(31:30)+ 14 が計算され、レジスタZ15に格納される。
さらに、−y*X(31:30)が計算され、Z(31:30)に加えられる。
ここで、Z15は64ビットを含む。
最後のタイムスロット(17番)において、上位32ビットはZ16およびZ15へ転送され、2個の補正ビットが前のZ16の値に加算され、これが出力される。
多倍長整数乗算を実行するとき、Yは、X、X、...、XNw−1と組み合わせてN回入力される。多倍長整数計算のはじめに、Z16は0にセットされる。X・Y+Wが出力Zに達したときに限り、Z16=0が加算される。
(11. GF(2)のモンゴメリ乗算)
楕円曲線計算は、ガロア体GF(2)上で定義することも可能である。ガロア体における全ての加算(ここでは「+」によって示されている)は、2を法とする剰余系である(排他的論理和)。ガロア体における多項式の次数は、最大で次数n−1である。したがって、n=32であるとき、多項式XおよびYは以下の通り定義される(全ての係数は0または1である。)。
X=x31・α31+x30・α30+...x・α+x・α
Y=y31・α31+y30・α30+...y・α+y・α
さらに既約多項式が存在し、この多項式は次のように定義される。
p=p・α+pn−1・αn−1+...p・α+p・α
積P = X・Y mod p は次式によって計算される。
(xn−1・αn−1+xn−2・αn−2+...x・α+x・α)・(yn−1・αn−1+yn−2・αn−2+...y・α+y・α) mod p
積X・Yは、次に、多項式pによって除算され、その余りが結果である。余りの次数は常にpの次数よりも低い。
X、Yとpの双方は多倍長整数で表現することができる。
可約積の計算は、内部の加算が2を法とする剰余系で行われるように修正された標準の積計算によって行うことができる。次に、除算は、加算が2を法とする剰余系であり、余りを保持する点を除いて標準的に行われる。
しかし、より高速なモンゴメリ乗算を実行してもよい。
(12. モンゴメリ乗算)
モンゴメリ乗算は、積が適当な因子R、例えば、α32またはα160によって割り切れるように、素数(既約多項式)の倍数を(部分)積に加算する。多項式を2進表現した場合には、代わりに232または2160が想定される。以下、m'は、m' = p−1 mod Rとして定義され、ここで、p−1はp・p−1 mod R = 1のように定義される。
次に、同じアルゴリズムが以下の点を適合させて適用される。
乗算内部の加算は2を法とする剰余系である。
最後の減算は省略される。
この構成をさらに詳細に説明する。上記に加えて、種々のさらなる詳細、実施形態、および、解説が補足として以下に示される。
(13. 多倍長整数の乗算器および加算器)
定義:
X=xNw−1・BNw−1+...+x・B+x・B+x・B
Y=yNw−1・BNw−1+...+y・B+y・B+y・B
=piNw・BNw−1+...+pi2・B+pi1・B+pi0・B
P=p・B+...+p・B+p・B+pi0・B(ここで、k=2Nwー1
B=232
m=N−1
多倍長整数乗算は、2個の32ビットワードの多数の乗算を含む。この実施形態は、パイプライン型32ビット乗算器(図1および4を参照)を使用し、この乗算器は、あらゆるタイムスロットで、3個の新しい32ビットオペランド(X*Y+Z)を受け取る。このような乗算器は非常に高速である。しかし、乗算器の出力は、17タイムスロット後にようやく準備ができている。したがって、最大で17の乗算が同時に計算される。しかし、進行中の乗算の結果を用いて乗算をしたいとき、結果の準備ができるまで待たなければならない。これは、待機サイクルを持ち込む可能性があり、性能を低下させるであろう。
Z = X・Y + W
Z = X・{Y・B + Y・B + .. Y・B} + W
Z、XおよびWは、N−1個の32ビットワードのサイズをもつ。Yは32ビットの幅である。
W = W・B + W・B + .. W・B
中間結果は、
= Wi1・B + Wi2・B + .. Wi,m+1・B
である。
= X・Y + Wが計算される。その結果は、P = W・B + Zに分けられる。
= X・Y + Wが計算される。その結果は、P = W・B + Zに分けられる。
= X・Y + Wが計算される。その結果は、P = W・B + Zに分けられる。
...
= X・Y + Wm−1が計算される。
= Pm,j 但し、j≧m
したがって、P = X・Y + Wを計算する関数が必要である。
この点に関して、図2は、(X*Y+W)を計算する構成のブロック図である。
= X・Y + W
この計算は前述の計算の一部である。XおよびWのサイズは、m=(N−1)個の32ビットワードである。Yは32ビットの幅である。
= x・y + wが計算される。Sは、Z・B + Pに分けられる。
= x・y + w+ Zが計算される。Sは、Z・B + Pに分けられ、以下同様に続く。
= x・y + w+ Zm−1が計算される。Sは、Pm+1・B + Pに分けられる。
関連した実施形態が図3に示され、図3は、(X*Y+W)に従って多倍長整数乗算を実行する構成のブロック図である。
S = x・y + w + zの計算は、既に部分的に説明した図1のパイプライン型乗算器によって行われる。
GF(2)上の計算のため、加算は2を法とする剰余系である。したがって、桁上げはない。
(14. パイプライン型乗算器)
X=x31・231+x30・230+...x・2+x・2
Y=y31・231+y30・230+...y・2+y・2
W=w31・231+w30・230+...w・2+w・2
Z=X・Y+W
左辺は、Z = X・Y + W + y・Xを計算する。この最後の項は、使用されたアルゴリズムの所産である。右辺は最後の項を減算する。
次に、乗算をセットアップする方法についてのアイデアを示すが、実施形態は詳細において変化しても構わない。
1番目のタイムスロットで、Z = X・Y(1:0) + Wが計算され、レジスタZに格納される。Xは2番目のXレジスタへ転送され、Y(31:2)は2番目のYレジスタへ転送される。
2番目のタイムスロットで、Z = X・Y(3:2) + Zが計算され、レジスタZに格納される。Xは3番目のXレジスタへ転送され、Y(31:2)は3番目のYレジスタへ転送される。
さらに、−y*X(1:0)が計算され、Z(1:0)に加えられる。
・・・以下同様に続く。
16番目のタイムスロットで、Z15 = X・Y(31:30) + Z15が計算され、レジスタZ15に格納される。
さらに、−y*X(31:30)が計算され、Z(31:30)に加えられる。ここで、Z15は64ビットを含む。
最後のタイムスロット(17番)において、上位32ビットはZ16およびZ15へ転送され、2個の訂正ビットが前のZ16の値に加算され、これが出力される。
第13パラグラフで説明したように多倍長整数乗算を実行するとき、Yは、X、X、...、XNw−1と組み合わせてN回入力される。X・Y + Wが出力Zに達したとき、Z16の内容が加算されるのではなく、何も加算されない。Z16は第13パラグラフのZの関数であり、その部分がある乗算から次の乗算へ転送される。
(15. 修正ブースアルゴリズム)
最初に、乗数Yが記録され、ここで、y'は、−2、−1、0、+1および+2の値をとる(符号付き10進数表記)。
y'=−2・yi+1+y+yi−1(iが偶数値である場合だけに定義される)
Y=y'30・230+y'28・228+...+y'・2
例えば、y=29dec=011101binであるならば、y'=(2 1)sd=2・2−1・2+1=29decであり、ここで、は−1を表す。
使用される式は、修正ブースアルゴリズムに関する前のパラグラフ(第9パラグラフ)で説明した式である。
正しい結果を得るため、積y・Xからの減算が必要である。
2による乗算は、被乗数を左へ1ビットシフトする。
部分積は、基数2の表記でコード化され、ここで、全ての積は、−1、0または+1の値をとり得る。
次に、積が16段のステージで計算される。あらゆるステージで、部分積y'・X・2が計算され、前の結果に加算され、例えば、x=53dec=110101bin、かつ、y=29(y'=(2 1)sd)である。
32ビットオペランドの場合、15回の加算を実行しなければならない。これは、標準の全加算器では桁上げを波及させる必要があるので、非常に長時間を要する。これを回避するため、桁上げ伝播の無い加算器を使用する。この点に関して、図5は桁上げ伝播の無い加算器の構成を示す図である。
(16. 冗長2進表記)
加算器の被加数および加数は冗長2進表記で表され、この表記は符号付き桁表記でもある。それは、固定基数2と、数字セット{, 0, 1}とをもち、ここで、ここで、は−1を表す。n桁の冗長2進整数Yの値は、yn−1・2n−1+yn−2・2n−2+...+y・2+y・2であり、ここで、yの値は、−1、0または1である。
整数は様々な冗長2進表記で表現することができ、例えば、[0101]SD2=[011SD2=[101]SD2=[1SD2=[1011SD2=5decである。「0」だけは唯一の表現形式:[00...0]を持つ。
通常の2進表記から冗長2進表記への変換は簡単であり、どちらでも同じである。
冗長2進表記から通常の2進表記への変換は、以下の減算:Xbin = X − Xによって行われ、ここで、Xは、すべての「」を「0」で置換することによってXsd2から得られ、Xは、すべての「1」を「0」で置換し、すべての「」を「1」で置換することによってXsd2から得られる。例えば、X=[1011SD2=5decであるならば、X=[1000]bin=8decであり、X=[0011]bin=3decである。
変数の否定は、すべての「1」を「」で置換し、「」を「1」で置換することによって行われる。例えば、X=[1011SD2=5decであるならば、−X=[011]SD2=−5decである。
変数は次のように符号化する(表1を参照せよ)。
Figure 0004619657
組み合わせ11は決して使用されない。
したがって、Xが入力され、X=1であるとき、条件x=1は満足する。同様に、X=であるとき、x=1が満足する。
(17. 桁上げ伝播の無い加算器)
この表現は、起こり得る桁上げが次の桁で吸収され、次の桁上げに影響を与えないように選択される。したがって、このような加算器の速度は、32ビット全加算器の速度よりもかなり速い。
32*32ビット乗算器に関しては、16回の加算がある(前の乗算の上側の最上位ワードが含まれる)。次に、最後だけで、冗長2進表記が通常の2進表記に変換される。この変換は伝播無しではない。
加算は、(理論的には)2ステップで行われる。最初に、中間の和sと中間の桁上げcが計算される。次のステップで、両方は最終的な和(sum)に変換される。この中間の桁上げは、最大で現在および前の桁の値に依存するが、それよりも前の桁の値には依存しない。
およびsは、次式:2c + s = x + yを満足する。さらに、ci−1およびsは、両方が決して1とにならないように選択される。
この点に関して、図6は、中間のキャリーおよび和の量の生成を説明する図表である。
和S = c + si−1は、新しいキャリーを与えない。
タイプ1、3、4および6: ci−1 + s = ci−1
タイプ2a、5a: ci−1、即ち、0または1であるので、ci−1 + sは、または0である。
タイプ2b、5b: ci−1 ≠ 1、即ち、0またはであるので、ci−1 + sは、1または0である。
これは以下の例によって説明される。
X [1 0 0 0 sd2 = 87dec
Y [1 1 0 0 sd2 = 101dec
−−−−−−−−−−−+
S 0 1 0 0 1 0
C 1 0 0 0 1 0
ー−−−−−−−−−−−+
Sum 1 1 0 0 0 0 0 = 188dec
(18. 通常の2進表記への変換)
最後のステージにおいて、結果は通常の2進表記へ変換される。X = X − X であり、ここで、Xは全てのx により形成され、Xは全てのx により形成される。
およびx は決して同時に1ではないので、全減算器は不要である。したがって、異なる方法を試す。
ここでは、右から左までの全てのを除去する。
右からの借りが無いとき:
次の桁が「1」であるとき、その桁が維持され、左への借りは無い。
次の桁が「0」であるとき、その桁が維持され、左への借りは無い。
次の桁が「」であるとき、その「」は「1」によって置換され、左への借りがある。
右からの借りがあるとき:
次の桁が「1」であるとき、その「1」は「0」によって置換され、左への借りは無い。
次の桁が「0」であるとき、その「0」は「1」によって置換され、左への借りがある。
次の桁が「」であるとき、その「」は「0」によって置換され、左への借りがある。
しかし、最も左の桁が「1」であり、最も右の桁が「」であり、その間の全ての桁が「0」であるならば(10...0)、これは非常に大きい遅延を生じさせるであろう。
遅延を減少させるため、32ビットを4ビットずつの8個のグループに分ける。
最も左の非零の桁が「」であるとき、次の左のグループへの借りが生成される。
このグループに少なくとも1個の「1」が存在するとき、右のグループからの借りは次のグループへ伝播しない。
(19. GF(2N)用の乗算器ロジック)
X=x31・α31+x30・α30+...x・α+x・α
Y=y31・α31+y30・α30+...y・α+y・α
W=w31・α31+w30・α30+...w・α+w・α
上記ベクトルを表現するため、上記式の「α」を「2」と読んでも構わない。
Figure 0004619657
なお、上記数式において、+を丸で囲んだ記号は排他的論理和を表している。
ブース符号化に関してGF(2)に等価なものはない。
1番目のタイムスロットで(図4を参照)、X・Y(1:0)とWとの排他的論理和が計算され、レジスタZに格納される。Xは2番目のXレジスタへ転送され、Y(31:2)は2番目のYレジスタ(Y)へ転送される。
2番目のタイムスロットで、X・Y(3:2)とZとの排他的論理和が計算され、レジスタZに格納される。Xは2番目のXレジスタへ転送され、Y(31:4)は3番目のYレジスタ(Y)へ転送される。
16番目のタイムスロットで、Z15=X・Y(31:30)とZ15との排他的論理和が計算され、レジスタZ15に格納される。
ここで、Z15は64ビットを収容する。
最後のタイムスロット(17番)において、上位32ビットはZ16へ転送され、Z15は前のZ16の値に加算され、これが出力される。
第13パラグラフで説明したように多倍長整数乗算を実行するとき、Yは、X、X、...、XNw−1と組み合わせてN回入力される。X.Y Wが出力Zに達したとき、Z16の内容が加算されるのではなく、何も加算されない。Z16は第13パラグラフのZの関数であり、その部分がある乗算から次の乗算へ転送される。
特に、図4は、GF(2)で動作するパイプライン型乗算器の実施形態の構成の説明図である。
(加算)
加算は2個の変数の排他的論理和(exor)である。桁上げはない。
(符号化)
ロジックをGF(p)のそれと合成するため、以下の冗長符号化を使用すべきである。したがって、X = x ^ xであり、ここで、^は、論理的なOR演算を表す。
Figure 0004619657
(20. GF(p)とGF(2)の両方のためのロジック)
両方の乗算器ステージは、次の構造z = a・xj−1・xを使用する。
GF(p)
GFp = 1
y' = −2・yi+1 + y + yi−1 (但し、iは奇数の場合だけ、以下の表3を参照)
Figure 0004619657
GF(2
Figure 0004619657
合成後
Figure 0004619657
(21. 桁上げ伝播の無い加算)
Figure 0004619657
表4は、表1に従って符号化した図6と同じである。
Figure 0004619657
= ci−1 + s
Figure 0004619657
(22. GF(2))
は、x とy との排他的論理和の演算によって計算される。
GF(p)システムにおける桁上げを抑えた場合、GF(p)の規則に従って生成されたS、即ち、表2に従って符号化されたSが正しい答えを与えることは明らかである。
合成ロジック
Figure 0004619657
(23. 冗長2進から2進への変換)
入力は、x = {, 0, 1}となるベクトルXである。出力は、y = {0, 1}となるベクトルYである。このベクトルXは、4ビットずつの8個のグループに分割され、i = 4m+n (n=0..3, m=0..7)である。
グループ間:
グループ借りgは、このグループの最も左の非零の桁が「」であるときに生成される。
グループ借りgm−1が伝播するのは、グループが全く「1」を含まないときである(g = gm−1)。
グループ内:
借りbは、桁が「」であるときに生成される。
借りbi−1は、桁が「1」ではないとき、即ち、b= bi−1であるときに伝播する。
Figure 0004619657
Figure 0004619657
(24. GF(2))
この変換は、借りが無いので簡単である。全ての借りを抑えた場合、GF(p)の回路は正しい答えを与える。
合成ロジック
Figure 0004619657
パイプライン型乗算器
図1に示されたようなパイプライン型乗算器はGF(2)のためにも使用可能であるが、−Y[0]を右辺で「0」にセットしなければならない。その他の全ての適合については上記の通りである。
パイプライン型乗算器のブロック図である。 多倍長整数乗算X*Y+Wのブロック図である。 多倍長乗算X・Y+Wのブロック図である。 ガロア体GF(2)用のパイプライン型乗算器である。 桁上げ伝播の無い加算器の処理説明図である。 中間の桁上げおよび和の量を示す図表である。

Claims (4)

  1. 素数(p)を法とする剰余系で第1の多倍長整数エンティティ(X)に第2の多倍長整数エンティティ(Y)を乗算する乗算器装置であって、
    前記乗算器装置は、パイプライン型乗算器コアを含み、修正ブースアルゴリズムと、(i)前記第2の多倍長整数エンティティ(Y)の最下位部分(y)と(ii)前記第1の多倍長整数エンティティ(X)との積を前記アルゴリズムの結果から減算する減算ステップとを用いて、全体的な乗算をモンゴメリ形式で実行することが可能であることを特徴とする乗算器装置。
  2. 前記アルゴリズムの結果は、前記積X*Yと積y*Xの合計値であることを特徴とする請求項1記載の乗算器装置。
  3. 前記乗算器装置は、並列的にy*Xの積を減算することが可能である請求項1又は2記載の乗算器装置。
  4. 桁上げ伝播の無い加算器をさらに備えることを特徴とする請求項1乃至3のいずれか一に記載の乗算器装置。
JP2003553405A 2001-12-14 2002-12-05 モンゴメリ乗算器のパイプライン型コア Expired - Fee Related JP4619657B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
EP01204908 2001-12-14
PCT/IB2002/005210 WO2003052584A2 (en) 2001-12-14 2002-12-05 Pipelined core in montgomery multiplier

Publications (2)

Publication Number Publication Date
JP2005513532A JP2005513532A (ja) 2005-05-12
JP4619657B2 true JP4619657B2 (ja) 2011-01-26

Family

ID=8181444

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2003553405A Expired - Fee Related JP4619657B2 (ja) 2001-12-14 2002-12-05 モンゴメリ乗算器のパイプライン型コア

Country Status (8)

Country Link
US (1) US7395295B2 (ja)
EP (1) EP1459167B1 (ja)
JP (1) JP4619657B2 (ja)
CN (1) CN100382011C (ja)
AT (1) ATE316668T1 (ja)
AU (1) AU2002353282A1 (ja)
DE (1) DE60208926T2 (ja)
WO (1) WO2003052584A2 (ja)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7240204B1 (en) * 2000-03-31 2007-07-03 State Of Oregon Acting By And Through The State Board Of Higher Education On Behalf Of Oregon State University Scalable and unified multiplication methods and apparatus
WO2003021423A2 (en) * 2001-09-04 2003-03-13 Microunity Systems Engineering, Inc. System and method for performing multiplication
DE60208926T2 (de) * 2001-12-14 2006-08-31 Koninklijke Philips Electronics N.V. Fliessbandkern in einem montgomery-multiplizierer
US7266577B2 (en) * 2002-05-20 2007-09-04 Kabushiki Kaisha Toshiba Modular multiplication apparatus, modular multiplication method, and modular exponentiation apparatus
FI115862B (fi) 2002-11-06 2005-07-29 Nokia Corp Menetelmä ja järjestelmä kertolaskuoperaation suorittamiseksi ja laite
US7532720B2 (en) * 2003-10-15 2009-05-12 Microsoft Corporation Utilizing SIMD instructions within montgomery multiplication
US7664810B2 (en) * 2004-05-14 2010-02-16 Via Technologies, Inc. Microprocessor apparatus and method for modular exponentiation
KR100670780B1 (ko) * 2004-10-29 2007-01-17 한국전자통신연구원 유한체 GF(2^m)에서의 하이브리드 곱셈 연산 장치및 연산 방법
FR2884005B1 (fr) * 2005-04-01 2007-06-01 Thales Sa Methode d'implementation de la multiplication modulaire de montgomery et son dispositif
TWI489375B (zh) * 2010-12-03 2015-06-21 Via Tech Inc 無進位乘法裝置及其處理方法
US8635262B2 (en) * 2010-12-03 2014-01-21 Via Technologies, Inc. Carryless multiplication preformatting apparatus and method
US8645448B2 (en) 2010-12-03 2014-02-04 Via Technologies, Inc. Carryless multiplication unit
US8667040B2 (en) 2010-12-03 2014-03-04 Via Technologies, Inc. Mechanism for carryless multiplication that employs booth encoding
CN105373366B (zh) * 2015-10-12 2018-11-09 武汉瑞纳捷电子技术有限公司 一种生成大素数的方法及装置

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5513133A (en) * 1992-11-30 1996-04-30 Fortress U&T Ltd. Compact microelectronic device for performing modular multiplication and exponentiation over large numbers
JP2000132376A (ja) * 1998-10-27 2000-05-12 Fujitsu Ltd 剰余演算方法,乗算剰余演算方法,剰余演算装置,乗算剰余演算装置及び記録媒体
WO2000038047A1 (en) * 1998-12-18 2000-06-29 Motorola Inc. Circuit and method of cryptographic multiplication
JP2000353077A (ja) * 1999-04-07 2000-12-19 Matsushita Electric Ind Co Ltd 多倍長演算装置
US7240204B1 (en) * 2000-03-31 2007-07-03 State Of Oregon Acting By And Through The State Board Of Higher Education On Behalf Of Oregon State University Scalable and unified multiplication methods and apparatus
JP2001296993A (ja) * 2000-04-12 2001-10-26 Toyo Commun Equip Co Ltd 有限体上の乗算回路
DE60208926T2 (de) * 2001-12-14 2006-08-31 Koninklijke Philips Electronics N.V. Fliessbandkern in einem montgomery-multiplizierer
DE10260655B3 (de) * 2002-12-23 2004-06-24 Infineon Technologies Ag Vorrichtung und Verfahren zum Berechnen einer Multiplikation mit einer Verschiebung des Multiplikanden, insbesondere bei der kryptographischen Berechnung
DE10260660B3 (de) * 2002-12-23 2004-06-09 Infineon Technologies Ag Modulare Multiplikation mit paralleler Berechnung der Look-Ahead-Parameter u.a. bei der kryptographischen Berechnung

Also Published As

Publication number Publication date
EP1459167B1 (en) 2006-01-25
CN1605059A (zh) 2005-04-06
WO2003052584A3 (en) 2004-05-21
US7395295B2 (en) 2008-07-01
AU2002353282A8 (en) 2003-06-30
EP1459167A2 (en) 2004-09-22
DE60208926T2 (de) 2006-08-31
WO2003052584A2 (en) 2003-06-26
ATE316668T1 (de) 2006-02-15
AU2002353282A1 (en) 2003-06-30
CN100382011C (zh) 2008-04-16
JP2005513532A (ja) 2005-05-12
US20050033790A1 (en) 2005-02-10
DE60208926D1 (de) 2006-04-13

Similar Documents

Publication Publication Date Title
Erdem et al. A general digit-serial architecture for montgomery modular multiplication
EP2283417B1 (en) Implementation of arbitrary galois field arithmetic on a programmable processor
JP4619657B2 (ja) モンゴメリ乗算器のパイプライン型コア
KR100715770B1 (ko) 연산을 수행하는 방법 및 시스템 및 장치
KR100714358B1 (ko) 연산을 수행하기 위한 방법, 시스템 및 장치
US7181484B2 (en) Extended-precision accumulation of multiplier output
TW550498B (en) Method and apparatus for modular multiplying and calculating unit for modular multiplying
JP2004326112A (ja) マルチプルモジュラス選択器、累算器、モンゴメリー掛け算器、マルチプルモジュラス発生方法、部分掛け発生方法、累算方法、掛け算方法、モジュラス選択器、およびブースレコーダ
Kaihara et al. Bipartite modular multiplication method
JP3516503B2 (ja) 電子乗算および加算装置および方法
Omondi Cryptography arithmetic
US7539720B2 (en) Low latency integer divider and integration with floating point divider and method
JP2004258141A (ja) モンゴメリ乗算剰余の多倍長演算のための演算装置
WO2001076132A1 (en) Scalable and unified multiplication methods and apparatus
Kuang et al. An efficient radix-4 scalable architecture for Montgomery modular multiplication
JP2007500388A (ja) 長整数乗算器
KR20070062901A (ko) 중국인 나머지 정리(crt)와 캐리 저장 가산 기반의모듈러 곱셈 장치 및 방법
WO2002073395A2 (en) A method and apparatus for multiplication and/or modular reduction processing
CN111064567B (zh) 一种sidh特殊域快速模乘方法
CN113434115B (zh) 一种浮点数尾数域余数运算电路及方法
CN101957739B (zh) 基于分治的亚二次多项式乘法器
KR100805272B1 (ko) 부호화를 이용하는 곱셈 장치 및 그 방법
Mirzaei-Teshnizi Parallel Modular Multiplication Using Variable Length Algorithms
Pinckney et al. Parallelized Booth-encoded radix-4 Montgomery multipliers
Wei A Multiplicative Inverse Algorithm Based on Modulo (2 p-1) Signed-Digit Arithmetic for Residue to Weighted Number Conversion

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20051205

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A711

Effective date: 20080612

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090602

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090827

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100219

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100513

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: 20101001

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20101027

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

Free format text: PAYMENT UNTIL: 20131105

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees