JP2004326112A - マルチプルモジュラス選択器、累算器、モンゴメリー掛け算器、マルチプルモジュラス発生方法、部分掛け発生方法、累算方法、掛け算方法、モジュラス選択器、およびブースレコーダ - Google Patents

マルチプルモジュラス選択器、累算器、モンゴメリー掛け算器、マルチプルモジュラス発生方法、部分掛け発生方法、累算方法、掛け算方法、モジュラス選択器、およびブースレコーダ Download PDF

Info

Publication number
JP2004326112A
JP2004326112A JP2004127206A JP2004127206A JP2004326112A JP 2004326112 A JP2004326112 A JP 2004326112A JP 2004127206 A JP2004127206 A JP 2004127206A JP 2004127206 A JP2004127206 A JP 2004127206A JP 2004326112 A JP2004326112 A JP 2004326112A
Authority
JP
Japan
Prior art keywords
modulus
carry
accumulator
multiplier
bit
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.)
Withdrawn
Application number
JP2004127206A
Other languages
English (en)
Inventor
Hee-Kwan Son
▲ヒー▼ 寛 孫
Joong-Chul Yoon
重 ▲チュル▼ 尹
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.)
Samsung Electronics Co Ltd
Original Assignee
Samsung Electronics Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US10/736,832 external-priority patent/US20040252829A1/en
Application filed by Samsung Electronics Co Ltd filed Critical Samsung Electronics Co Ltd
Publication of JP2004326112A publication Critical patent/JP2004326112A/ja
Withdrawn 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/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/544Methods 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 for evaluating functions by calculation
    • G06F7/5443Sum of products
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Mathematical Analysis (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Computational Mathematics (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Complex Calculations (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

【課題】モンゴメリーモジュラス掛け算モジュールのモジュラス掛け算動作での電力消費を減少させ、計算速度を増加させる方法が提供される。
【解決手段】コーディングスキームは、マルチプルモジュラス値を得るための加算器及びメモリ素子の必要性を減少させ、キャリ貯蔵加算及びキャリ電波加算の使用は、掛け算モジュールの計算速度を向上させる。特に、本発明は整数モジュラ演算だけではなく、多項式モジュラ演算を実行することができる。
【選択図】図2

Description

本発明は、データ保安のための暗号化(cryptography)システムに関するものであって、特に、暗号化システムでのモジュラ掛け算演算のための装置及び方法に関するものである。
楕円曲線暗号法(Elliptic Curves CryptoSystem、ECC)は、整数モジュラ演算を基づいたGF(p)演算と多項式モジュラ演算を基づいたGF(2)の演算とで構成される。
整数モジュラ演算であるモンゴメリーモジュラ掛け算アルゴリズムは、次の[数式1]の通りである。
[数式1]
R=A*Br−1modN、(radix r=2)
モジュラ指数アルゴリズム(modular exponential algorithm)で、A、B及びNは、各々乗数、被乗数及びモジュラ数(modular number)であり、各々はnビットである。
図1は、モジュラス選択器1、ブースレコーダ12及び累算器2を利用して実現された従来のモンゴメリーモジュラ掛け算アルゴリズムのハードウェア構成を示している。マルチモジュラス選択器1は、マルチモジュラス0、M、2M及び3Mのうちの一つの値を選択し、選択された値をキャリ電波加算器(carry propagation adder、CPA)14に出力する。値3Mを得るためには付加的な加算器が求められ、ハードウェアの大きさの増加と計算速度の低下をもたらす。累算器2は、二つのCPA14、11を含む。各CPAは、累算器の伝達遅延時間を増加させ、計算速度を低下させる。CPA11は、被乗数選択器13からの部分掛け(partial product value)と累算器2の以前出力P[i]を受け入れる。被乗数選択器13は、部分掛け−2A、−A、0、A、2Aを得るために、乗数とブースレコーダ(Booth Recoder)12の出力を受け入れる。CPA11は、部分掛け及びP[i]を足す。累算値P[i+1]を得るため、CPA11の出力は、CPA14に入力される。その結果、モンゴメリー掛け算P[i+1]=ABR−1 mod Mを得ることができる。
多項式モジュラ演算は[数式2]の通りである。
[数式2]
P(x)=A(x)B(x)mod G(x)
A(x)及びB(x)はGF(2)の元素であり、G(x)は次数mである原始多項式である。A(x)、B(x)及びG(x)は[数式3]のように表現される。
[数式3]
A(x)=an−1n−1+an−2n−2+…+aX+a
B(x)=bn−1n−1+bn−2n−2+…+bX+b
G(x)=gn−1n−1+gn−2n−2+…+gX+g
一般的に、整数モジュラ演算のための掛け算器と多項式モジュラ演算のための掛け算器とは各々別に構成される。整数モジュラ演算及び多項式モジュラ演算が全部可能な掛け算器が実現されたら、ハードウェアの大きさは大きく減少することができる。
本発明の目的は、ハードウェアの大きさを増やさず、モジュラ演算速度を向上させる掛け算演算装置を提供することにある。
本発明の他の目的は、レディックス−4論理演算を基づいて、モンゴメリー掛け算アルゴリズムのハードウェア構成及び動作を効率的に実現する掛け算演算装置を提供することにある。
本発明の実施例では、レディックス−4論理演算を基づいてモンゴメリー掛け算アルゴリズムを適用し、これをレディックス−4インターリーブモンゴメリー掛け算アルゴリズム(Radix−4 Interleaved Montgomery Multiplication Algorithm)といい、R4IMMに略称する。
本発明の実施例に示した掛け算装置の論理演算体系は、公開キー方式の暗号化アルゴリズムを適用するコンピューターシステムまたは通信網に適用されることができ、また、携帯可能な集積回路カード(またはスマートカード)に内蔵されて運用されることができる。
本発明による実施例は、少なくとも1224ビット以上の大きい整数を基づくモジュラ演算に適用されることができる。
本発明の実施例を説明する前に、本発明に適用されるモジュラ掛け算アルゴリズムR4IMMで参照されるパラメータ(parameters)を、次のように定義する。
Mはモジュラス(mudulus)として、2より大きいプラスの整数(integer)として奇数値(例えば、3、7など)を有する。
M'は、条件式(−M*M')mod4=1を満足する整数である。
nは、モジュラスMのビット長さ(bit length)を示す値としてプラスの整数である。本発明の実施例では8にする。
Nは、モジュラスMのデジット長さ(digit length)を示す値としてプラスの整数である。
ここで、nはNの2倍値(n=2N)として、nが8であればNは4になる。
Rは、R+2+22Nの条件を満足するプラスの整数である。nが8であればRは256になる。
−1は、Rのモジュール逆倍数として、条件式(R*R−1)mod M=1を満足するプラスの整数である。
Aは、被乗数(multiplicand)として、0≦A<Mの条件を満足する整数である。
Bは、乗数(multiplier)として、0≦B<Mの条件を満足する整数である。ここで、
Figure 2004326112
∈{0、1、2、3}である。bは2ビットである。
本発明に適用されるR4IMMアルゴリズムは、次の通りである。
:=0
forI:=0to(N−1)
:=(((S+bA)mod4)*M')mod4
I+1:=(S+bA+qM)/4
endfor
if(S≧M)S:=S−M
R4IMMアルゴリズムで、Iはデジットインデックスまたは演算の繰り返し回数を示し、アルゴリズムを実行した総掛けの結果はS=A*B*R−1(modM)に示す。 すべての掛けSの範囲は0≦S<Mである。前記アルゴリズムで、商qは'、S+bA+qMの下位2ビットが“00”になることができるように足すMの個数'を示す。リダンダント数の体系(residue number system;RNS)で、どのような数に係数Mの整数倍を足した数は元々の数と同一であるので、係数Mの整数倍であるモジュラス掛けqM(以下、MM、multiple of modulus)を足した数は元々の数と同一である。また、S+bA+qMの下位2ビットを“00”に作った後に、レディックス値4に割れば(すなわち、2ビットずつ右側にシフトする)有效席の数字はそのまま保存されるので、情報が遺失されない。
このようなR4IMMアルゴリズムをハードウェア的に実現するためには、部分掛けPPとモジュラス掛けMMを求めなければならない。単位乗数bと商qIが2ビットであるので、部分掛けPPとモジュラス掛けMMは、次のように四つの場合の可能値を各々有するように設定されることができる(ここで、b∈{0、1、2、3}であり、q∈{0、1、2、3}にする)。
[式1]
A=PP∈{0、A、2A、3A}
M=MM∈{0、M、2M、3M}
しかし、上 [式1]のように、部分掛けPPとモジュラス掛けMMを設定するようになれば、値3Aと3Mを計算する時に、AまたはMを1ビットシフトした値と元々の値の和を求めなければならない(2A+A、2M+M)。これをハードウェアで実現するためには、このような値を計算する独立した加算器(adder)を使用するか、または、この値をあらかじめ計算してメモリなどに貯蔵しておいて、必要時に参照する方法を使用しなければならない。そのような方法は、ハードウェアの無駄使いをもたらし、また、その値(3A、3Mを求める時間(あらかじめ計算しておくか、リアルタイムで計算する)を追加的に考慮してハードウェアを設計しなければならないので、性能低下の要因になることができる。
本発明の実施例によると、本発明は、モジュラ掛け算器で、最小限の構成要素だけで、キャリセーブモードとキャリ電波モードで選択的に動作することができる累算器の構造を提供することによって、ハードウェア的な負担を減らしながら、モジュラ演算速度を向上させる効果がある。
したがって、本発明では、部分掛けPPとモジュラス掛けMMを求めることによるハードウェアの負担を減らそうとする。
図2は、本発明の望ましい実施例によるモジュラス掛け算器の全体的な構成を示す。
図2のモジュラス掛け算器1000は、モジュラスレジスタ(M_REG、100)に貯蔵されたモジュラスA、被乗数レジスタ(A_REG、101)に貯蔵された被乗数A、乗数レジスタ(B_REG、102)に貯蔵された乗数B、モジュラスレコーダ(Modulus recoder、110)、ブースレコーダ(Booth recoder、140)、マルチプルモジュラス(multiple modulus、MMI)の計算を助けるマルチプレクサ120、部分掛け(partial product、PPI)の計算を助けるマルチプレクサ130、及びモジュラ掛け算演算を助ける累算器170、を含む。累算器170は、部分掛けPP、マルチプルモジュラスMM及び補償ワード信号CWが入力されてモンゴメリー掛け算結果を出力する。本発明の実施例で、モジュラスMは正数であり、nビットM[n−1:0]である。被乗数Aは正数、または負数であり、n+1ビットA[n:0]であり、1ビットの符号ビットを有し、乗数Bは偶数ビットを有する。nが偶数であれば、Bはn+2ビットであり、符号ビットは2ビットである。またはnが奇数であれば、Bはn+1ビットであり、符号ビットは1ビットである。乗数Bは、毎クロックサイクルごとに2ビットずつ右側にシフトされる。乗数Bの下位2ビットb1及びb0とビットb(ビットbは以前サイクルのビットb1)は、ブースレコーダ140に提供される。
本発明の望ましい実施例によるレジスタ100は、モジュラスMとモジュラスMの1の補数値Mを提供する。類似的に、レジスタ201は被乗数Aと被乗数Aの1の補数値を提供し、レジスタ102は乗数Bを提供する。
掛け算器1000は繰り返してプロセッサでモジュラ掛け算の解答を捜す。モジュラスレコーダ110及びマルチプレクサ120は、モジュラスMMを選択するため使用される。モジュラスMMを選択するため、モジュラスレコーダ110は、累算器170から繰り返しのデータを受け入れる。本発明の実施例で、繰り返しのデータSPP[1:0]は、累算器170に貯蔵された和S[1:0]とキャリC[1:0]の最下位2ビット、部分掛けPP[1:0]、及び部分掛け反転表示信号NEG_PPに根拠を有する。和S[1:0]とキャリC[1:0]は、2ビット加算器181で結合してS[1:0]を形成する。結合した信号は、2ビット加算器182で部分掛けPP[1:0])と部分掛け反転表示信号NEG_PPと結合してSSP[1:0]を形成する。モジュラスレコーダ110は、モジュラスの最下位ビットM[1]をさらに受け入れる。モジュラスレコーダ110は、SPP[1:0]及びモジュラスM[1]を利用して、複数のモジュラスMMの選択を決めるための出力信号を発生する。本発明の実施例による上述の説明で、ビットの大きさは限定されない。SPPは2ビット以上であり得る。これによって、本発明の他の構成は変更されるであろう。
モジュラスレコーダ110は複数の信号を出力する。この実施例で、モジュラスレコーダ110は、2M、M、0、のうちの一つを選択するため、マルチプレクサに選択信号SEL_MM[1:0]を出力する。マルチプレクサ120は、モジュラスMとモジュラス選択信号SEL_MM[1:0]が入力され、MMを出力する。MMは累算器170に入力される。補償ワード信号CWを得るためモジュラス反転表示信号NEG_MMは、半加算器160で部分掛け反転表示信号NEG_PPと結合する。補償ワード信号CWは累算器170に入力される。
モジュラス反転表示信号NEG_MMは、選択された値がビット反転されるか否かを示すために使用される。また、部分掛け反転表示信号NEG_PPは、選択された部分掛けPPがビット反転されるか否かを示すため使用される。部分掛けPPは、ブースレコーダ140、マルチプレクサ130及びANDゲート150によって実行される動作に根拠を有する。部分掛けPPは、MM及びCWとともに累算器170に入力される。図2で、4:1マルチプレクサが示されているが、マルチプレクサの特定比は限定されず、累算器は5−2コンプレッサに限定されない。4:1マルチプレクサは2:1マルチプレクサの三つに取り替えることができる。
図3は、本発明の望ましい実施例によるモジュラスレコーダ110のコーディングスキームを示している。図3には、モジュラスレコーダ110に入力される三つの入力M[1]及びSPP[1:0]を示しているが、本発明は、入力及び出力を多様に変更することができる。
典型的に複数のモジュラスMMは、0、M、2M及び3Mである。3Mを求めるためには、1Mに2Mを足すための付加的な加算器またはメモリ素子が必要である。付加的な加算器及び/またはメモリ素子は、ハードウェアの大きさ及び/または計算遅延などをもたらし、これは計算速度及び電力消耗に影響を及ぶ。図3のコーディングスキームはMMの値を得るために、付加的な加算器またはメモリ素子なしに、ビット反転及びビットシフトを利用する。モジュラスレコーダ110は、モジュラスMの二番目の最下位ビットM[1]とSPPの最下位2ビットが入力される。モジュラスレコーダ110は、モジュラス選択信号SEL_MM[1:0]を出力する。選択されたモジュラス値MMは、累算器250に伝送される。本発明の上述の説明で、値のビットの大きさは限定されない。SPPは2ビット以上であり得る。これによって、本発明の他の素子は変更されることができる。
図4はモジュラスレコーダ110の具体的な構成例を示している。図4に示した例では、モジュラスレコーダ110がインバータ301−301とNANDゲート311−317で構成されるが、モジュラスレコーダ110の回路実現は多様に変更されることができる。
減少したハードウェアの大きさ及び増加した計算速度及び電力減少のための類似の方法が、図2及び図6に示したようなブースレコーダ140に使用されることができる。先に言及した掛け算器1000は、モジュラスMM及び部分掛けPPを累算器170に入力して、繰り返しのプロセッサにモジュラ掛け算を実行する。
ブースレコーダ140及びマルチプレクサ130は、累算器250に提供される部分掛けPPの値0、A、2A、、2を選択するため使用される。図5は、本発明の望ましい実施例によるブースレコーダ140のコーディングスキームを示している。ブースレコーダ140は、乗数B[1]及びB[0]の最下位2ビットと繰り返しの値B[1]の以前値であるB[R]とが入力され、部分掛け選択信号SEL_PP[1:0]、部分掛けイネーブル信号EN_PP及び部分掛け反転表示信号NEG_PPを出力する。図5には、ブースレコーダ140に入力される三つの入力B[1]、B[0]及びB[R]を示しているが、本発明は入力及び出力を多様に変更することができる。
PPを選択するため、ブースレコーダ140は、四つの値2A、A、2Aのうちの一つを選択するための部分掛け選択信号SEL_PP[1:0]を、マルチプレクサ130に出力する。図6はブースレコーダ140の具体的な構成例を示している。図6に示した例では、ブースレコーダ140がインバータ321〜323とNANDゲート331〜340とで構成されるが、ブースレコーダ140の回路実現は多様に変更されることができる。
再び、図2を参照すると、マルチプレクサ130は被乗数Aの値及び信号SEL_PP[1:0]を受け入れ、出力をANDゲート150に出力する。ANDゲート150は、マルチプレクサ240からの入力とブースレコーダ140からの部分掛けイネーブル信号EN_PPを受け入れる。ANDゲート150は、部分掛けPPの選択された値を累算器170に出力する。部分掛けイネーブル信号EN_PPが0である時に、ANDゲート150は、0であるPPを累算器250に出力する。部分掛け反転信号NEG_PPは、半加算器160に入力される。部分掛け反転信号NEG_PPの1の値は、新しい部分掛けPPを累算器170に入力するために、2Aまたはのうちの一つを求めるための部分掛けPPに対するビット反転が実行されることを示す。
部分掛けPP及びモジュラスMMの足し算で、補償ワード信号CWは半加算器160から累算器170に伝達する。累算器170は、部分掛けPP、モジュラスMM及び補償ワード信号CWをコンプレスネットワーク171に入力する。コンプレスネットワーク171は、CSA(Carry Save Adder)及びCPA(Carry Propagata Adder)で使用される。先の説明の図1の累算器はCPAを使用しており、電波遅延(propagation delay)によって動作速度が遅かった。CSAの使用は電波遅延を減少させ、計算速度を向上させ、電力消耗を減少させることによって動作速度を向上させる。
本発明の望ましい実施例では、CSA及びCPAを混合して計算速度を増加させ、電力消耗を減少させる。本発明の実施例で、CPAは最後の反復で使用され、CSAは以前反復で使用される。図7及び図11は、CSA及びCPAを使用した本発明の二つの実施例を示している。
本発明の望ましい実施例による累算器170aが図7に示されている。累算器170aは、直列に連結されたn+2個の5−2コンプレッサで構成され、コンプレッサは、プルコンプレッサ(例えば、202)と縮小された(reduced)コンプレッサ(例えば、203)とに分けられる。ここで、nはモジュラス値Mのビット長さである。累算器170aは、和SとキャリCを、和レジスタ(S_REG、173)とキャリレジスタ(C_REG、172)に各々貯蔵する。和レジスタ173及びキャリレジスタ172の出力は、キャリ電波加算器174に入力される。キャリ電波加算器174は、リダンダント数(redundant number)を正常数(normal number)に変換し、変換された数を最終レジスタ175に貯蔵する。
この実施例で、累算器170aへの入力は、補償ワードCW[1:0]、マルチプルモジュラス値MM及び部分掛けPPである。初めの二つのプルコンプレッサ201、202はモジュラスMM[1:0]及び部分掛けPP[I:0)とともに補償ワードCW[1:0]が入力される。残りの縮小されたコンプレッサ203、204、205などはマルチプルモジュラスの残りのビットMM[n+1:2]及び部分掛けPP[n+1:2]を使用する。最後のコンプレッサ(n+2番目のコンプレッサ)205はオーバーフローを防止し、一番目のコンプレッサは三番目の全加算器がないプルコンプレッサである。
プルコンプレッサ201及び縮小されたコンプレッサ203の一例が、図8及び図9に各々示されている。各コンプレッサは現在値I及び他の入力を利用して、次の値I+1を得るために使用される。図8は、本発明の望ましい実施例によるプルコンプレッサ201を示している。プルコンプレッサ201は複数の入力を有する。この実施例で、プルコンプレッサ201は、五つの入力すなわち、1ビットの高いコンプレッサからの次のキャリワードビット値から得られた現在キャリワードビットC、2ビットが高いコンプレッサからの次の和ワードビットから得られた和ワードビットS、補償ワードCW、部分掛けPP及びマルチプルモジュラスMM、現在コンプレッサに入力された現在キャリワードビットはインデックス“1”を有し、残りの高次ビットコンプレッサは次のキャリワードビット値CI+1[k+1]を出力する。kは“k”番目のコンプレッサを示す。次のキャリワードビット値CI+1[k+1]はキャリレジスタ172に入力され、キャリレジスタ172は現在キャリワードビット値Cをk番目のコンプレッサに出力する。現在和ワードビット値S[k]は、k+2コンプレッサからの次の和ワードビット値SI+1[k+2]が和レジスタ173に入力されることによって求められる。前記値は、特定ビットk、CI+1[k]及びSI+1[k]に対する次のキャリワードビット及び次の和ワードビット値を求めるためプルコンプレッサ201によって使用される。このような値は、各々キャリ及び和レジスタ172、173を通過する。先の説明のように、キャリ及び和レジスタ172、173の各々は、低ビットコンプレッサに入力を提供する。次のキャリワードビットCI+1[k]及び次の和ワードビットSI+1[k]は[数式4]の通りである。
[数式4]
(2CI+1[k]+2CO1+[k]+2CO2[k]+SI+1[k])
=(C[k]+S[k])+PP[k]+MM[k]+CW[k]+CI1[k]+CI2[k]
ただし、k>1であれば、CW[k]は入力されない。
本発明の実施例で、プルコンプレッサ201は三つの全加算器を含む。第1全加算器211はC、S及びCWが入力され、第1全加算器キャリFCO1及び第1全加算器の和FSO1を出力する。第1全加算器キャリFCO1は第1出力キャリCO1として出力されて、次の高ビットコンプレッサk+1の入力CI1[k+1]になる。第2全加算器212は、第1全加算器和FSO1、部分掛けのビット値PP[k]及びマルチプルモジュラスビット値MM[k]を受け入れ、第2全加算器キャリFCO2及び第2全加算器の和FSO2を出力する。第2全加算器キャリFOC2は、第1出力キャリCO2として出力されて、次の高ビットコンプレッサk+1の入力CI2[k+1]になる。第3全加算器213は、第2全加算器の和FSO2と低ビットコンプレッサk−1からのCI1及びCI2が入力され、第3全加算器キャリFCO3及び第3全加算器の和FSO3を出力する。第3全加算器キャリFCO3は、次のキャリワードビット値CI+1として出力されて、低ビットコンプレッサk−1に入力されるキャリCとして使用される。第3全加算器の和FSO3は、2ビットが低いコンプレッサk−2に入力されるSとして使用される。ビット0に対応する第1プルコンプレッサ201は、次のキャリ、または和ワードを出力しない。したがって、第3プルコンプレッサは第1全加算器を要しない。一方、ビット1に対応する第2プルコンプレッサ202は、次の和ワードビットを出力しない。
補償ワードCW[1:0]は2ビットを有するので、各々のビットに対する二つのコンプレッサが必要である。二つのコンプレッサ201、202は複数の値が入力されるプルコンプレッサである。本発明の実施例で、コンプレッサ201、202は、五つの値が入力される。高ビットコンプレッサ[2:n+2]は、コンプレッサ201、202に比べて少数の値が入力される縮小されたコンプレッサである。図9に示した縮小されたコンプレッサは、第1全加算器が半加算器に取り替えられる。したがって、縮小されたコンプレッサ内の半加算器211は、キャリCと和Sが入力され、第1半加算器キャリHCO1及び第1半加算器の和HSO1を出力する。第1半加算器キャリHCO1は、第1出力キャリCO1として、次の高ビットコンプレッサk+1の二番目の第1入力CI1[k+1]に提供される。第2全加算器212は、第1半加算器の和HSO1、コンプレッサのビットと関連ある部分掛けビット値PP[k] 及びマルチプルモジュラスビット値MM[k]が入力される。 第2全加算器212は、第2全加算器キャリFCO2及び第2全加算器の和FSO2を出力する。第2全加算器の和FSO2と第2出力キャリCO2として、次の高いビットコンプレッサk+1の第2入力CI2[k+1]に提供される。第3全加算器213は、第3全加算器キャリFCO3及び第3全加算器の和FSO3を出力する。第3全加算器キャリFCO3は、次のキャリワードビットCI+1として、キャリレジスタ172を通過した後に、低ビットコンプレッサk−1の入力Cに提供される。第3全加算器の和FSO3は、次の和ワードビットSI+1として、和レジスタ173を通過して2ビットが低いコンプレッサk−2の入力Sに提供される。図10は、図9に示したような縮小されたコンプレッサを含む累算器171aを詳細に示している。
本発明の実施例による図10に示した累算器170aは、プルコンプレッサと縮小されたコンプレッサが直列に連結され、コンプレッサの数は、マルチプルモジュラス値MM及び部分掛け値PPのビットの大きさによって決められる。最下位2ビットコンプレッサは、補償ワードCWを入力として使用するプルコンプレッサである。一番目のビットコンプレッサ201は、キャリCO1[0]、CO2[0]を出力する。キャリCO1[0]、CO2[0]は、各々次の高いビット(二番目のビット)コンプレッサ202の入力CI1[1]、CI2[1]になる。このような構造は、最後のコンプレッサn+2まで続いて、一番高いビットコンプレッサは、キャリ出力CO1[n+2]、CO2[n+2]を出力しない。一番高いビットコンプレッサはオーバーフローを防止し、一番高いビットコンプレッサの次のキャリワードビット及び次の和ワードビット値から二番目の入力が求められる。
各コンプレッサの次のキャリワードビット値及び次の和ワードビット値は、各々キャリ及び和レジスタ172、173に貯蔵される。最後の結果は、和レジスタ173内に貯蔵された一部分とキャリレジスタ172に貯蔵された他の部分との形態で、分割されて発生する。最終単一ワード結果S[n:0]を得るため、和レジスタ172とキャリレジスタ173に貯蔵された値は、キャリ電波加算器174で足され、最終単一ワード結果S[n:0]は、最終レジスタ175に貯蔵される。従来システムのCPAモードに代えて、本発明の実施例によるシステムは図7に示したように、CSAモードを使用する。CSAコンプレッサは、各々の加算器と関連ある三つの遅延経路を有する。従来の累算器で、遅延経路は各ビットごとに存在していた。
したがって、本発明の望ましい実施例による図7で、ビットの大きさnと関係なしに、すべてのコンプレッサに対して三つの遅延経路が存在する。従来の技術では“n”個の遅延経路があった。したがって、本発明はモジュラ掛け算の計算速度を顕著に向上させることができる。例えば、従来の1024ビット掛け算器は1024遅延(全加算器経路)を有する累算器を含んでいたが、本発明の望ましい実施例による経路遅延は、単一プルコンプレッサまたは縮小されたコンプレッサで、3である。この例で、本発明は従来のシステムに比べて300倍速い。
本発明の他の実施例は、累算器でCSA及びCPAの間をスイッチングすることができる多様な組み合わせを含む。図11は、本発明の他の実施例による累算器170bを示している。累算器170bはコンプレッサと結合して所望するごとにCPA及びCSAモードの間をスイッチングするのに使用されるマルチプレクサMXGn+1〜MXGを含む。このような構成で、キャリ電波加算器174はリダンダント数(redundant number)をノーマル数(normal number)に変換しない。図10の累算器170bはCSAまたはCPAモードで選択的に動作し、出力は既にノーマル数の形態である。キャリ電波加算器174を除去することによって求められるハードウェアの大きさが減少する。
マルチプレクサMXGn+1〜MXGは、コンプレッサ内の全加算器の間の電気的連結を制御することができる。図11で、初めの二つのビットコンプレッサ301、302は、低ビットコンプレッサ301によって使用される現在キャリワードビット値C[k−1]を得るため、次のキャリワードビット値CI+1[k]がキャリレジスタ172を通過しないという点を除いては、コンプレッサ201、202と各々類似的に動作する。CI+1[k]は、次の高いビットコンプレッサk+1を通過して、高いビットコンプレッサのマルチプレクサグループ400−2に入力される。
図12は、本発明の実施例によるk番目のビットマルチプレクサグループ400を示しており、図13は、図11に示したマルチプレクサグループ400が図10に示した累算器170bに含まれた詳細回路図である。計算モード(CSA使用モードまたはCPA使用モード)は、スイッチング信号SWによって制御されることができる。本発明の実施例で、k番目のビットのマルチプレクサ400は、図9の縮小されたコンプレッサ203の第2加算器212と第3加算器213との間に位置する。したがって、第1マルチプレクサ410に入力される第1入力401は加算器212からのFS02である。第1マルチプレクサ410の第2入力402は、k−1番目のビットコンプレッサからの現在キャリワードビット値C[k−1]である。現在キャリワードビット値は、k−1番目のビットコンプレッサに対する次のキャリワードビット値CI+1[k−1]から求められる。第2マルチプレクサ411は二つの値が入力され、一つ403はk−1番目のビットコンプレッサからの第1出力キャリ値CO1[k−1]であり、他の一つ404はk番目のビットコンプレッサからの現在和ワードビット値S[k]である。現在和ワードビット値は、次の和ワードビット値SI+1[k]が和レジスタ173を通過しながら求められる。第3マルチプレクサ412の二つの入力405、406は、各々k−1ビットコンプレッサからの第2出力キャリ値CO2[k−1]及びk−1ビットコンプレッサからの次のキャリワードビット値CI+1[k−1]である。
スイッチング信号SWは、各マルチプレクサ410、411、412の二つの入力のうちいずれを第3全加算器213に伝達するかを決める。どのような値がマルチプレクサ410、411、412を通過するかに従って、キャリ貯蔵加算またはキャリ電波加算の動作モードが決められる。スイッチング信号SWの値が0であれば、スイッチングコンプレッサはキャリセーブ加算モードで動作される。もし、スイッチング信号SWの値が1であれば、コンプレッサの下の全加算器は直列に連結され、キャリ電波加算モードに動作される。全加算器213は、次のキャリワードビット値と次の和ワードビット値を先の説明の方法で出力する。
キャリ及び和ワードはN回繰り返して計算される。Nはnが偶数である時(n+2/2であり、nが奇数である時(n+1)/2である。現在反復サイクルで出力されるキャリ及び和の値は、以前反復サイクルのキャリ及び和の値と足され、キャリレジスタ172及び和レジスタ173に各々足される。最終結果S[n:0]は、スイッチング信号SWの変更に従って、レジスタ172、173に各々貯蔵されたキャリ及び和を足したことによって求められる。
CPA加算器174とレジスタ175を足したことより、マルチプレクサグループ400の大きさが非常に小さくなり、図10に示した実施例はハードウェアの大きさを減少させる。
図14は、本発明の他の実施例による掛け算器2000を示している。図14に示した掛け算器2000は、図2に示した掛け算器1000の一つのマルチプレクサ130を三つのマルチプレクサ131、132、133に取り替えた。また、マルチプレクサが分割されることによって、図2に示したブースレコーダ140が、マルチプレクサ131、132、133に提供される信号SFT_PP、NEG_PPを発生するためのブースレコーダ190に取り替えられる。
図15は、図14に示したブースレコーダ190のコーディングスキームを示しており、図16は、図15のコーディングスキームに従ってブースレコーダ190を実現した回路の実施例を示している。ブースレコーダ190は、インバータ401〜403とNANDゲート411〜419とを含む。
図17は、整数モジュラ演算と多項式モジュラ演算を選択的に実行することができる本発明の望ましい実施例による掛け算器を示している。図2に示した掛け算器1000及び図14に示した掛け算器2000は、整数モジュラ演算のみを実行することができたが、図17に示した掛け算器3000は、与えられた選択信号SEL_FLDに従って整数モジュラ演算と多項式モジュラ演算を選択的に実行することができる。この実施例で、掛け算器3000は、選択信号SEL_FLDが‘0’である時に、整数モジュラ演算モードを実行し、選択信号SEL_FLDが‘1’である時に、多項式モジュラ演算モードを実行する。掛け算器3000の整数モジュラ演算モードは、図2に示した掛け算器1000の整数モジュラ演算と同一であるので、以下、多項式モジュラ演算モードのみを説明する。また、図17に示した掛け算器1000で、図2の掛け算器1000と同一に動作する構成要素は同一の参照番号を併記する。
モンゴメリーモジュラ掛け算アルゴリズムで、多項式演算を実行する時の掛けの結果はS(x)I+1:=(S(x)+bA(x)+qM(x))である。先の説明の整数演算と同様に、qは、(S(x)+bA(x)+qM(x))の最下位2ビットが“00”になるように設定されなければならない。そして、b∈{0、1、2、3}であり、bA∈{0、A、2A、3A}である。本発明の実施例では、3Aを求めるために2A+Aを実行する。したがって、bA∈{0、A、2A、2A+A}である。
レジスタ101に貯蔵された乗数Bは、毎サイクルごとに2ビットずつ右側にシフトされる。乗数Bの最下位2ビットb1及びb0は、分解値選択器530に提供される。分解値選択器530は、乗数Bの最下位2ビットb1及びb0が入力され、PP[n+1:0]が0、Aまたは2Aになるように、そしてAI[2+1:0]が0またはAになるように、信号SEL_A1[1:0]、SEL_A2、SEL_A3を出力する。図18は、bAを求めるための本発明の望ましい実施例による分解値選択器530のコーディングスキームを示している。
PP[n+1:0]を選択するため、分解値選択器530は、三つの値0、A及び2Aのうちの一つを選択するための選択信号SEL_A1[1:0]を、マルチプレクサ520に出力する。マルチプレクサ520は、多項式モジュラ演算モードである時(すなわち、SEL_FLDが‘1’である時)に、選択信号SEL_A1[1:0]をマルチプレクサ130に出力する。マルチプレクサ130は、被乗数Aの値及び選択信号SEL_A1[1:0]を受け入れ、出力をANDゲート150に出力する。マルチプレクサ550は、モード信号SEL_FLDが‘1’である時に、分解値選択器530からの選択信号SEL_A2をANDゲート150に出力する。ANDゲート150は、マルチプレクサ130からの入力とマルチプレクサ550からの選択信号SEL_A2を受け入れ、第1分解値PP[n+1:0]を累算器580に出力する。
[n+1:0]を選択するため、分解値選択器530は、0またはAのうちの一つを選択するための選択信号SEL_A3をマルチプレクサ540に出力する。マルチプレクサ540は、0、被乗数Aの値及び選択信号SEL_A3を受け入れ、第2分解値A[n+1:0]を出力する。マルチプレクサ540の出力のうち、最下位2ビットA[1:0]はマルチプレクサ560と加算器591に入力され、残りのビットA[n+1:2]は累算器580に入力される。
マルチプレクサ560は、多項式モジュラ演算モードである時に、マルチプレクサ540からの出力のうち最下位2ビットA[1:0]をCW[1:0]として出力する。マルチプレクサ560の出力CW[1:0]は、累算器580に入力される。
加算器591は、第1分解値PP[n+1:1]の最下位2ビットPP[1:0]と第2分解値A[n+1:0]の最下位2ビットA[1:0]を足し、結果を加算器592に出力する。PP[1:0]+A[1:0]はbA(x)[1:0]である。
加算器592は、加算器591の出力と和レジスタ583に貯蔵された値の下位2ビットS[1:0]を足し、結果SSPP[1:0]をモジュラス選択器570に出力する。
モジュラス選択器570は、S(x)+bA(x)+qM(x)の最下位2ビットが‘00’になることができるように、モジュラスMM[n+1:0]を選択する。モンゴメリーアルゴリズムで、モジュラスの最下位ビットMM[0]は常に1である。したがって、S(x)+bA(x)とM[1]からqIが決められる。
図19は、本発明の望ましい実施例によるモジュラス選択器570のコーディングスキームを示している。
MM[n+1:0]を選択するため、モジュラス選択器570は、三つの値0、M及び2Mの中の一つを選択するための選択信号SEL_M1[1:0]を、マルチプレクサ510に出力する。マルチプレクサ510は、多項式モジュラ演算モードである時(すなわち、SEL_FLDDが‘1’である時)に、選択信号SEL_M1[1:0]をマルチプレクサ120に出力する。マルチプレクサ120は、モジュラスMの値及び選択信号SEL_M1[1:0]を受け入れ、出力MM[n+1:0]を累算器580に出力する。
累算器580の詳細な回路構成が図20に示されている。累算器580は、図13に示した累算器170bと同様に、直列に連結されたn+2個の5−2コンプレッサで構成され、コンプレッサは、プルコンプレッサと縮小されたコンプレッサとで分けられる。ここで、nはモジュラス値Mのビット長さである。本発明の実施例による累算器580は、図13に示した累算器170bの構成要素にマルチプレクサグループ620とマルチプレクサ640、650とをさらに含む。マルチプレクサグループ620は、マルチプレクサグループ610と全加算器630との間に位置する。
整数モジュラ演算モードSEL_FLD=‘0’で、マルチプレクサグループ610からの出力は、マルチプレクサグループ620を通じて全加算器630に入力され、全加算器630から出力されるキャリは、低いビットコンプレッサのキャリ入力に伝達される。累算器580の整数モジュラ演算モードは、図13に示した累算器170bの動作と同一である。
図21は、本発明の実施例によるk番目のビットマルチプレクサグループ610、620を示している。マルチプレクサグループ610は、図12に示したマルチプレクサグループ400と同一に第1乃至第3マルチプレクサ611、612、613を有し、第1乃至第6入力601〜606を受け入れる。図12及び図21に示したマルチプレクサグループ400、610は引き出し番号だけ異なり、同一信号を受け入れて同一に動作するので、詳細な説明は省略する。
マルチプレクサグループ620は、多項式モジュラ演算モードの間マルチプレクサ540からの第2分解値A[n+1:2]を第1分解値PP[n+1:2]と足すために提供される。第2分解値A[n+1:2]の下位2ビットは、マルチプレクサ560を通じてCW[1:0]として出力されて、累算器581に入力される。したがって、CW[1:0]は累算器580によって第1分解値の下位2ビットPP[1:0]と足される。マルチプレクサグループ620は、第4及び第5マルチプレクサ621、622を含む。第4マルチプレクサ621は、第2マルチプレクサ612からの出力とマルチプレクサ540からの第2分解値A[k]を受け入れる。第5マルチプレクサ622は、第3マルチプレクサ613からの出力と‘0’を受け入れる。第4及び第5マルチプレクサ621、622は整数モジュラ演算モードSEL_FLD=‘0’で、第2及び第3マルチプレクサ612、613からの入力を各々出力し、多項式モジュラ演算モードSEL_FLD=“1”でA[k]及び0を出力する。マルチプレクサ621、622の出力I12、I13は全加算器630に提供される。
再び、図20を参照すると、k番目のビットマルチプレクサ640、650は、多項式モジュラ演算モードSEL_FLD=‘1’の間第2分解値M[k]を、k番目のコンプレッサのキャリ入力に選択的に提供する。これは、第1分解値MM[n+1:0]と第2分解値M[n+1:0]を足してqM(x)を求めるためである。
マルチプレクサ650は、モジュラス選択器570からの選択信号SEL_M2に応答して、モジュラスM[k]または‘0’を第2分解値M[k]としてマルチプレクサ640に出力する。マルチプレクサ640は、整数モジュラ演算モードSEL_FLD=‘0’である時に、キャリレジスタ582のk番目のキャリビットを、そして多項式モジュラ演算モードSEL_FLD=‘1’である時に、マルチプレクサ650からの第2分解値M[k]を、低いビットコンプレッサのキャリビットとして提供する。
図2に示した整数モジュラス演算のための掛け算器1000に、いくつかの構成要素を付加した図17の掛け算器3000は、整数モジュラス演算だけではなく、多項式モジュラス演算を実行することができる。
モジュラス選択器、ブースレコーダ及び累算器を利用して実現された、一般的なモンゴメリーモジュラ掛け算アルゴリズムのハードウェア構成を示している図面である。 本発明の望ましい実施例によるモジュラ掛け算器の全体的な構成を示している図面である。 本発明の望ましい実施例によるモジュラスレコーダのコーディングスキームを示している図面である。 モジュラスレコーダの具体的な構成例を示している図面である。 本発明の望ましい実施例によるブースレコーダのコーディングスキームを示している図面である。 ブースレコーダの具体的な構成例を示している図面である。 CSAを使用した本発明の実施例を示している図面である。 プルコンプレッサの一例である。 縮小されたコンプレッサの一例である。 図9に示した縮小されたコンプレッサを含む累算器を詳細に示している図面である。 CPAを使用した本発明の実施例である。 本発明の実施例によるk番目のビットマルチプレクサグループである。 図11に示したマルチプレクサグループが図10に示した累算器に含まれた詳細回路図である。 本発明の他の実施例による掛け算器である。 図14に示したブースレコーダのコーディングスキームである。 図15のコーディングスキームに従ってブースレコーダを実現した回路の実施例である。 整数モジュラ演算と多項式モジュラ演算とを選択的に実行することができる本発明の望ましい実施例による掛け算器である。 Aを求めるための本発明の望ましい実施例による分解値選択器のコーディングスキームを示している図面である。 本発明の望ましい実施例によるモジュラス選択器のコーディングスキームを示している図面である。 図17に示した累算器の詳細な回路構成である。 本発明の実施例によるk番目のビットマルチプレクサグループを示している。

Claims (77)

  1. nビットモジュラスM及び以前和、そして現在部分掛けを受け入れ、選択信号を発生するモジュラスレコーダと、
    入力−M、0、M及び2Mを受け入れ、前記選択信号に基づいて前記入力のうちの一つを選択するマルチプレクサと、を含むことを特徴とするマルチプルモジュラス選択器。
  2. 前記入力−Mは、前記モジュラスMを反転させることによって求められることを特徴とする請求項1に記載のマルチプルモジュラス選択器。
  3. 前記入力2Mは、前記モジュラスMをシフトすることによって求められることを特徴とする請求項1に記載のマルチプルモジュラス選択器。
  4. 前記モジュラスMはレジスタに貯蔵されることを特徴する請求項1に記載のマルチプルモジュラス選択器。
  5. 前記モジュラスレコーダは、累算器に入力されるマルチプルモジュラス反転表示信号をさらに発生することを特徴とする請求項1に記載のマルチプルモジュラス選択器。
  6. 前記nビットモジュラスMは、二番目の最下位ビットM[1]、及び以前和と現在部分掛けの和であるSPP[1:0]を含むことを特徴とする請求項1に記載のマルチプルモジュラス選択器。
  7. 前記選択信号は2ビットSEL_MM[1:0]を含むことを特徴とする請求項1に記載のマルチプルモジュラス選択器。
  8. キャリ加算モードで動作し、各々がマルチプルモジュラス、部分掛け、対応する現在和及び対応する現在キャリを受け入れ、対応する次の和及び対応する次のキャリを発生する複数のコンプレッサと、
    前記複数のコンプレッサの各々から前記対応する次の和を受け入れ、対応する更新された現在和を出力する合レジスタと、
    前記複数のコンプレッサから前記対応する次のキャリを受け入れ、対応する更新された現在キャリを出力するキャリレジスタと、を含むことを特徴とする累算器。
  9. 前記和レジスタ及び前記キャリレジスタは分離されたレジスタであることを特徴とする請求項8に記載の累算器。
  10. 前記マルチプルモジュラスはモジュラスから生成されることを特徴とする請求項8に記載の累算器。
  11. 前記nは前記モジュラスのビットの長さであり、前記複数のコンプレッサはn+3コンプレッサを含むことを特徴とする請求項10に記載の累算器。
  12. 前記モジュラスはnビットレジスタに貯蔵されることを特徴とする請求項11に記載の累算器。
  13. 前記部分掛けは乗数及び被乗数から求められることを特徴とする請求項8に記載の累算器。
  14. 前記乗数のビット長さはn+1であることを特徴とする請求項13に記載の累算器。
  15. 前記乗数は(n+1)ビットレジスタに貯蔵されることを特徴とする請求項14に記載の累算器。
  16. nが偶数であれば、前記乗数のビット長さはn+2であり、nが奇数であれば、前記乗数のビット長さはn+1であることを特徴とする請求項13に記載の累算器。
  17. nが偶数であれば、前記乗数は(n+2)ビットレジスタに貯蔵され、nが奇数であれば、前記乗数は(n+1)ビットレジスタに貯蔵されることを特徴とする請求項16に記載の累算器。
  18. 前記複数のコンプレッサは5:2コンプレッサであることを特徴とする請求項8に記載の累算器。
  19. 前記複数のコンプレッサの第1グループは、前記対応する次の和及び前記対応する次のキャリを発生するための補償ワードをさらに受け入れることを特徴とする請求項8に記載の累算器。
  20. 前記複数のコンプレッサの第1グループは完全コンプレッサであることを特徴とする請求項19に記載の累算器。
  21. 前記複数のコンプレッサの第2グループは前記補償ワードを受け入れないことを特徴とする請求項19に記載の累算器。
  22. 前記複数のコンプレッサの前記第2グループは縮小されたコンプレッサであることを特徴とする請求項21に記載の累算器。
  23. 前記部分掛け及び前記マルチプルモジュラスは各々(n+2)ビットであることを特徴とする請求項8に記載の累算器。
  24. 前記補償ワードは2ビットであることを特徴とする請求項19に記載の累算器。
  25. 前記プルコンプレッサは三つの全加算器で構成されることを特徴とする請求項19に記載の累算器。
  26. 前記縮小されたコンプレッサは一つの半加算器と二つの全加算器で構成されることを特徴とする請求項22に記載の累算器。
  27. 最終更新された現在和及び最終更新された現在キャリを受け入れ、最終和を出力するキャリ電波加算器と、
    前記最終合を貯蔵するための最終レジスタと、をさらに含むことを特徴とする請求項8に記載の累算器。
  28. 前記複数のコンプレッサはキャリ加算モード及びキャリ電波モードで動作することを特徴とする請求項8に記載の累算器。
  29. 前記キャリ加算モード及び前記キャリ電波モードは制御信号によって決められることを特徴とする請求項9に記載の累算器。
  30. 複数のコンプレッサの第1グループは補償ワードをさらに受信し、前記対応する次の和及び前記対応する次のキャリを発生することを特徴とする請求項28に記載の累算器。
  31. 前記複数のコンプレッサの第1グループはプルコンプレッサであることを特徴とする請求項30に記載の累算器。
  32. 前記複数のコンプレッサの第2グループは前記補償ワードを受信しないことを特徴とする請求項30に記載の累算器。
  33. 前記複数のコンプレッサの第2グループは縮小されたコンプレッサであることを特徴とする請求項32に記載の累算器。
  34. 前記縮小されたコンプレッサの各々は、キャリ加算モード及びキャリ電波モードで動作できるように、前記縮小されたコンプレッサを変形するマルチプレクサグループを含むことを特徴とする請求項33に記載の累算器。
  35. 各マルチプレクサグループは三つの2:1マルチプレクサを含むことを特徴とする請求項34に記載の累算器。
  36. 各々の縮小されたコンプレッサは、前記制御信号に従って前記キャリ加算モード、または前記キャリ電波モードのうちのいずれか一つで動作するように、前記縮小されたコンプレッサを変形するマルチプレクサグループを含むことを特徴とする請求項33に記載の累算器。
  37. 前記キャリ加算モードは、現在コンプレッサの中間全加算器から現在コンプレッサの下部全加算器に伝達される第1信号と、低いビットコンプレッサの上部加算器から前記現在コンプレッサの下部全加算器に伝達される第2信号と、低いビットコンプレッサの中間全加算器から前記現在コンプレッサの下部全加算器に伝達される第3信号と、を含むことを特徴とする請求項36に記載の累算器。
  38. 前記キャリ電波モードは、下位ビットコンプレッサの下部全加算器から上位ビットコンプレッサのマルチプレクサグループに伝達される第1信号と、前記上位ビットコンプレッサのマルチプレクサグループから前記上位ビットコンプレッサの下位全加算器に伝達される第2信号と、を含むことを特徴とする請求項36に記載の累算器。
  39. 前記縮小されたコンプレッサの各々は、
    前記現在コンプレッサの中間全加算器の和、低いビットコンプレッサの対応する更新された現在キャリ、前記低いビットコンプレッサの第1及び第2出力、前記現在コンプレッサの更新された現在和、及び低いコンプレッサの対応する次のキャリを受け入れ、第1乃至第3出力を出力するマルチプレクサグループを含むことを特徴とする請求項33に記載の累算器。
  40. 前記全加算器は三つの全加算器で構成されることを特徴とする請求項31に記載の累算器。
  41. 前記縮小されたコンプレッサは、一つの半加算器と二つの全加算器、及び三つの2:1マルチプレクサで構成されることを特徴とする請求項33に記載の累算器。
  42. −M、0、M及び2M(ただ、Mはnビットモジュラス数)のうちの一つをマルチプモジュラスで選択するマルチプルモジュラス選択器と、
    部分掛けの値を求めるため使用される第1値を提供するブースレコーダと、
    モンゴメリー掛け算の結果を求めるための第2値を累算する累算器と、を含むことを特徴とするモンゴメリー掛け算器。
  43. モジュラス値を貯蔵するモジュラス数レジスタと、
    被乗数値を貯蔵する被乗数レジスタと、
    乗数値を貯蔵する乗数レジスタと、
    前記乗数値及び被乗数値を結合するANDゲートと、
    前記累算器及び前記ANDゲートからの値を結合し、結合した値を出力する二つの加算器と、をさらに含み、
    前記結合した値は前記マルチプルモジュラス選択器に入力されることを特徴とする請求項42に記載のモンゴメリー掛け算器。
  44. モジュラスを受信する段階と、
    以前和と現在部分掛けを受け入れる段階とを含み、
    前記モジュラス及び前記以前和、そして前記現在部分掛けは、マルチプルモジュラス値−M、0、M 及び2Mを発生するため使用されることを特徴とするマルチプルモジュラス発生方法。
  45. 前記モジュラスの二番目の最下位ビットである前記モジュラスの一部を受信する段階をさらに含むことを特徴とする請求項44に記載のマルチプルモジュラス発生方法。
  46. 前記以前和及び現在部分掛けの最下位2ビットである以前和及び現在部分掛けの一部を受け入れる段階をさらに含むことを特徴とする請求項44に記載のマルチプルモジュラス発生方法。
  47. 前記生成されたマルチプルモジュラス値のうちの一つを選択するための選択信号を発生する段階をさらに含むことを特徴とする請求項44に記載のマルチプルモジュラス発生方法。
  48. 前記選択された値を反転させるためのモジュラス反転表示信号を発生する段階をさらに含むことを特徴とする請求項47に記載のマルチプルモジュラス発生方法。
  49. 乗数を受け入れる段階と、
    少なくとも一つの部分掛けの値を発生するため部分掛け選択信号、部分掛けイネーブル信号、部分掛け反転表示信号を発生する段階と、を含むことを特徴とする部分掛け発生方法。
  50. 前記乗数を2ビットずつシフトする段階をさらに含むことを特徴とする請求項49に記載の部分掛け発生方法。
  51. 対応する次の和及び次のキャリを発生するため複数のマルチプルモジュラス、部分掛け、対応する現在和及び対応する現在キャリを受信する段階と、
    更新された現在和及び更新された現在キャリを発生する段階と、
    リダンダント形式の結果を発生するため乗数が全部使用されるまで前記受信及び発生段階を繰り返す段階と、
    ノーマル形式の結果を発生するためキャリ電波加算を実行する段階と、を含むことを特徴とする累算方法。
  52. 前記繰り返し段階はキャリ貯蔵加算器によってキャリ貯蔵加算を実行することを特徴とする請求項51に記載の累算方法。
  53. 前記キャリ電波加算実行段階はキャリ電波加算器によって実行されることを特徴とする請求項51に記載の累算方法。
  54. スイッチング信号を発生する段階をさらに含むことを特徴とする請求項53に記載の累算方法。
  55. 前記スイッチング信号を利用してキャリ貯蔵加算及び前記キャリ電波加算の間をスイッチングする段階をさらに含むことを特徴とする請求項54に記載の累算方法。
  56. ラディックス2(N>1)モンゴメリー掛け算を実行する方法において、
    被乗数、モジュラス及び乗数を受け入れる段階と、
    リダンダント形式の結果を発生するため前記被乗数、モジュラス及び乗数と連関した複数の入力をキャリ貯蔵加算する段階と、
    ノーマル形式の結果を発生するためキャリ電波加算を実行する段階と、を含むことを特徴とする掛け算方法。
  57. 前記キャリ貯蔵加算はキャリ貯蔵加算器によって実行され、前記キャリ電波加算はキャリ電波加算器によって実行されることを特徴とする請求項56に記載の掛け算方法。
  58. 前記キャリ貯蔵加算及び前記キャリ電波加算は累算器によって実行されることを特徴とする請求項56に記載の掛け算方法。
  59. スイッチング信号を発生する段階をさらに含むことを特徴とする請求項56に記載の掛け算方法。
  60. 前記スイッチング信号を使用してキャリ貯蔵モード及びキャリ電波モードの間をスイッチングする段階をさらに含むことを特徴とする請求項59に記載の掛け算方法。
  61. ラディックス2(N>1)モンゴメリー掛け算を実行する方法において、
    被乗数、モジュラス及び乗数を受け入れる段階と、
    リダンダント形式の結果を発生するため前記被乗数、モジュラス及び乗数と連関した複数の入力をキャリ貯蔵加算する段階と、
    前記リダンダント形式の結果であるキャリ電波モードをノーマル形式の結果への変換を実行する段階と、を含むことを特徴とする掛け算方法。
  62. nビットモジュラスM及び以前和、そして現在部分掛けを受け入れ、第1選択信号を発生するモジュラスレコーダと、
    前記nビットモジュラスM及び前記以前和、前記現在部分掛け、及び被乗数を受け入れ、第2選択信号を発生するモジュラス選択器と、
    入力−M、0、M及び2Mを受け入れ、整数モジュラ演算モードである時に、前記第1選択信号に基づいて前記入力のうちの一つを選択し、多項式モジュラ演算モードである時に、前記第2選択信号に基づいて前記入力のうちの一つを選択するマルチプレクサと、を含むことを特徴とするマルチプルモジュラス選択器。
  63. 前記入力−Mは前記モジュラスMを反転させることによって求められることを特徴とする請求項62に記載のマルチプルモジュラス選択器。
  64. 前記入力−2Mは、前記モジュラスMをシフトすることによって求められることを特徴とする請求項62に記載のマルチプルモジュラス選択器。
  65. 前記モジュラスMはレジスタに貯蔵されることを特徴とする請求項62に記載のマルチプルモジュラス選択器。
  66. 前記モジュラスレコーダは、累算器に入力されるマルチプルモジュラス反転表示信号をさらに発生することを特徴とする請求項62に記載のマルチプルモジュラス選択器。
  67. 前記nビットモジュラスMは、二番目の最下位ビットM[1]、及び以前和と現在部分掛けの和であるSPP[1:0]を含むことを特徴とする請求項62に記載のマルチプルモジュラス選択器。
  68. 前記第1選択信号は2ビットSEL_MM[1:0]を含むことを特徴とする請求項62に記載のマルチプルモジュラス選択器。
  69. 前記モジュラス選択器は、累算器に入力されるマルチプルモジュラス累算表示信号をさらに発生することを特徴とする請求項62に記載のマルチプルモジュラス選択器。
  70. 前記以前和、前記現在部分掛け、及び被乗数であるSSPP[1:0]を含むことを特徴とする請求項62に記載のマルチプルモジュラス選択器。
  71. 前記第2選択信号は2ビットSEL_M1[1:0]を含むことを特徴とする請求項62に記載のマルチプルモジュラス選択器。
  72. 整数モジュラ演算モードである時に、−M、0、M及び2M(ただ、Mはnビットモジュラス数)のうちの一つをマルチプルモジュラスで選択し、多項式モジュラ演算モードである時に、0、M及び2Mのうちの一つをマルチプルモジュラスで選択し、マルチプルモジュラス累算表示信号を出力するマルチプルモジュラス選択器と、
    部分掛けの値を求めるため使用される第1値を提供するブースレコーダと、
    モンゴメリー掛け算の結果を求めるための第2値を累算する累算器と、を含み、
    前記累算器は、前記多項式モジュラ演算モードである時に、前記マルチプルモジュラス累算表示信号に基づいて前記第2値に前記Mを足すことを特徴とするモンゴメリー掛け算器。
  73. モジュラス値を貯蔵するモジュラス数レジスタと、
    被乗数値を貯蔵する被乗数レジスタと、
    乗数値を貯蔵する乗数レジスタと、
    乗数値及び被乗数値を結合するANDゲートと、
    前記累算器及び前記ANDゲートからの値を結合し、結合した値を出力する二つの加算器と、をさらに含み、
    前記結合した値は前記マルチプルモジュラス選択器に入力されることを特徴とする請求項72に記載のモンゴメリー掛け算器。
  74. 前記マルチプルモジュラス選択器は、
    nビットモジュラスM及び以前合、そして現在部分掛けを受け入れ、第1選択信号を発生するモジュラスレコーダと、
    前記nビットモジュラスM及び前記以前和、前記現在部分掛け、及び被乗数を受け入れ、第2選択信号を発生するモジュラス選択器と、
    入力−M、0、M及び2Mを受け入れ、整数モジュラ演算モードである時に、前記第1選択信号に基づいて前記入力のうちの一つを選択し、多項式モジュラ演算モードである時に、前記第2選択信号に基づいて前記入力0、M及び2Mのうちの一つを前記マルチプルモジュラスとして選択するマルチプレクサと、を含むことを特徴とする請求項72に記載のモンゴメリー掛け算器。
  75. 前記ブースレコーダは、
    乗数を受け入れ、第3選択信号SEL_PP[1:0]を発生する第1選択器と、
    前記乗数を受け入れ、第4選択信号SEL_A1[1:0]を発生する第2選択器と、
    入力−A、0、A及び2Aを受け入れ、整数モジュラ演算モードである時に、前記第3選択信号に基づいて前記入力のうちの一つを選択し、多項式モジュラ演算モードである時に、前記第4選択信号に基づいて前記入力0、A及び2Aのうちの一つを選択するマルチプレクサと、を含むことを特徴とする請求項72に記載のモンゴメリー掛け算器。
  76. モジュラス選択器において、
    nビットモジュラスM、以前和、現在部分掛け、及び被乗数を入力して選択信号を発生し、
    入力0、M及び2Mのうちの一つを選択してマルチプレクサに送り、モジュラス累算指示信号を選択して累算器に送るモジュラス選択器ユニットを含むことを特徴とするモジュラス選択器。
  77. ブースレコーダにおいて、
    乗数を入力して第1選択信号SEL_PP[1:0]を発生する第1選択器と、
    前記乗数を入力して第2選択信号SEL_A1[1:0]を発生する第2選択器と、
    整数モジュラス演算である時に、第1選択信号に応じて第1入力‐M、0、M及び2Mのうちの一つを選択し、多項式モジュラス演算である時に、第2選択信号に応じて第2入力0、A及び2Aのうちの一つを選択するマルチプレクサと、を含むことを特徴とするブースレコーダ。
JP2004127206A 2003-04-25 2004-04-22 マルチプルモジュラス選択器、累算器、モンゴメリー掛け算器、マルチプルモジュラス発生方法、部分掛け発生方法、累算方法、掛け算方法、モジュラス選択器、およびブースレコーダ Withdrawn JP2004326112A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
KR20030026482 2003-04-25
US10/736,832 US20040252829A1 (en) 2003-04-25 2003-12-17 Montgomery modular multiplier and method thereof using carry save addition
KR1020040002393A KR100591761B1 (ko) 2003-04-25 2004-01-13 몽고메리 모듈러 곱셈기 및 캐리 저장 가산을 이용한몽고메리 모듈러 곱셈 방법

Publications (1)

Publication Number Publication Date
JP2004326112A true JP2004326112A (ja) 2004-11-18

Family

ID=32966322

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004127206A Withdrawn JP2004326112A (ja) 2003-04-25 2004-04-22 マルチプルモジュラス選択器、累算器、モンゴメリー掛け算器、マルチプルモジュラス発生方法、部分掛け発生方法、累算方法、掛け算方法、モジュラス選択器、およびブースレコーダ

Country Status (4)

Country Link
US (1) US7543011B2 (ja)
EP (1) EP1471420A3 (ja)
JP (1) JP2004326112A (ja)
CN (1) CN1570848A (ja)

Families Citing this family (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040252829A1 (en) * 2003-04-25 2004-12-16 Hee-Kwan Son Montgomery modular multiplier and method thereof using carry save addition
JP4170267B2 (ja) * 2004-07-09 2008-10-22 Necエレクトロニクス株式会社 乗算剰余演算器及び情報処理装置
JP4182226B2 (ja) * 2005-08-24 2008-11-19 国立大学法人名古屋大学 剰余系の計算方法及び装置並びにプログラム
US7805479B2 (en) * 2006-03-28 2010-09-28 Michael Andrew Moshier Scalable, faster method and apparatus for montgomery multiplication
US8781117B2 (en) * 2007-08-29 2014-07-15 Red Hat, Inc. Generating pseudo random bits from polynomials
US8416947B2 (en) * 2008-02-21 2013-04-09 Red Hat, Inc. Block cipher using multiplication over a finite field of even characteristic
US8560587B2 (en) * 2008-05-22 2013-10-15 Red Hat, Inc. Non-linear mixing of pseudo-random number generator output
US8588412B2 (en) * 2008-05-23 2013-11-19 Red Hat, Inc. Mechanism for generating pseudorandom number sequences
KR101590322B1 (ko) * 2009-05-15 2016-02-19 삼성전자주식회사 연산임계경로가 감소된 모듈러 곱셈기 및 연산임계경로 감소방법
KR20110105555A (ko) * 2010-03-19 2011-09-27 삼성전자주식회사 효율적인 하드웨어 구성을 갖는 몽고메리 승산기
FR2974202B1 (fr) 2011-04-18 2013-04-12 Inside Secure Procede de multiplication de montgomery
FR2974201B1 (fr) 2011-04-18 2013-04-12 Inside Secure Circuit de multiplication de montgomery
CN102508632B (zh) * 2011-09-30 2014-10-29 飞天诚信科技股份有限公司 一种在嵌入式系统中实现乘法运算的方法和装置
KR101925868B1 (ko) * 2012-05-17 2018-12-06 삼성전자주식회사 모듈러 계산 유닛 및 그것을 포함하는 보안 시스템
CN103645883A (zh) * 2013-12-18 2014-03-19 四川卫士通信息安全平台技术有限公司 基于fpga的高基模乘器
CN104065478B (zh) * 2014-06-18 2017-07-14 天津大学 基于格密码体系的多项式模乘协处理器
RU2628179C1 (ru) * 2016-11-28 2017-08-15 федеральное государственное автономное образовательное учреждение высшего образования "Северо-Кавказский федеральный университет" Устройство деления модулярных чисел
RU2653263C1 (ru) * 2017-07-24 2018-05-07 федеральное государственное автономное образовательное учреждение высшего образования "Северо-Кавказский федеральный университет" Арифметико-логическое устройство для умножения чисел по модулю
CN110190843B (zh) * 2018-04-10 2020-03-10 中科寒武纪科技股份有限公司 压缩器电路、华莱士树电路、乘法器电路、芯片和设备
CN109669670B (zh) * 2018-12-26 2020-09-22 贵州华芯通半导体技术有限公司 用于蒙哥马利模乘中的不均等分块的数据处理方法及装置
CN112486457B (zh) * 2020-11-23 2022-12-20 杭州电子科技大学 一种实现改进的fios模乘算法的硬件系统
US11210067B1 (en) 2020-11-27 2021-12-28 Pqsecure Technologies, Llc Architecture for small and efficient modular multiplication using carry-save adders
TWI802095B (zh) 2021-11-22 2023-05-11 財團法人工業技術研究院 模數乘法電路與對應之計算模數乘法之方法
CN114840174B (zh) * 2022-05-18 2023-03-03 广州万协通信息技术有限公司 一种使用多乘法器快速实现蒙哥马利模乘的系统及方法
CN116931873B (zh) * 2023-09-11 2023-11-28 安徽大学 两字节乘法电路及其任意位宽为2次幂的乘法电路与芯片

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4718034A (en) 1984-11-08 1988-01-05 Data General Corporation Carry-save propagate adder
JP2857505B2 (ja) * 1990-04-10 1999-02-17 松下電器産業株式会社 除算装置
US5394351A (en) 1994-03-11 1995-02-28 Nexgen, Inc. Optimized binary adder and comparator having an implicit constant for an input
FR2822260A1 (fr) 2001-03-14 2002-09-20 Bull Sa Procedes et dispositifs pour accelerer le temps de calcul d'un produit de montgomery d'un multiplication et d'une exponentiation modulaire
US20020172355A1 (en) 2001-04-04 2002-11-21 Chih-Chung Lu High-performance booth-encoded montgomery module
US20040252829A1 (en) 2003-04-25 2004-12-16 Hee-Kwan Son Montgomery modular multiplier and method thereof using carry save addition

Also Published As

Publication number Publication date
US20040215686A1 (en) 2004-10-28
EP1471420A3 (en) 2006-10-18
EP1471420A2 (en) 2004-10-27
US7543011B2 (en) 2009-06-02
CN1570848A (zh) 2005-01-26

Similar Documents

Publication Publication Date Title
JP2004326112A (ja) マルチプルモジュラス選択器、累算器、モンゴメリー掛け算器、マルチプルモジュラス発生方法、部分掛け発生方法、累算方法、掛け算方法、モジュラス選択器、およびブースレコーダ
KR100591761B1 (ko) 몽고메리 모듈러 곱셈기 및 캐리 저장 가산을 이용한몽고메리 모듈러 곱셈 방법
JP4870932B2 (ja) 多重精度を支援する拡張型モンゴメリモジュラ掛け算器
Okada et al. Implementation of Elliptic Curve Cryptographic Coprocessor over GF (2 m) on an FPGA
JP3784156B2 (ja) モジュラ掛け算方法
Erdem et al. A general digit-serial architecture for montgomery modular multiplication
KR20110105555A (ko) 효율적인 하드웨어 구성을 갖는 몽고메리 승산기
US7412474B2 (en) Montgomery modular multiplier using a compressor and multiplication method
US7046800B1 (en) Scalable methods and apparatus for Montgomery multiplication
KR101136972B1 (ko) 타원곡선 암호 연산 방법
O'Rourke et al. Achieving NTRU with Montgomery multiplication
US7266577B2 (en) Modular multiplication apparatus, modular multiplication method, and modular exponentiation apparatus
US7607165B2 (en) Method and apparatus for multiplication and/or modular reduction processing
CN115268839A (zh) 一种以2为基的蒙哥马利模乘方法及装置
JP3913921B2 (ja) 有限フィールドでの任意要素の逆数具現回路
CN115270155A (zh) 一种获取大数拓展最大公约数的方法及硬件架构
KR100836737B1 (ko) 중국인 나머지 정리(crt)와 캐리 저장 가산 기반의모듈러 곱셈 장치 및 방법
EP1455270A2 (en) Method and apparatus for basis conversion in finite field and a multiplier
KR100946256B1 (ko) 다정도 캐리 세이브 가산기를 이용한 듀얼필드상의확장성있는 몽고매리 곱셈기
Kavyashree et al. Design and implementation of different architectures of montgomery modular multiplication
Huai et al. Efficient architecture for long integer modular multiplication over Solinas prime
KR100858559B1 (ko) 잉여 이진수의 덧셈 방법, 잉여 이진수의 곱셈 방법, 잉여이진수 덧셈기 및 잉여 이진수 곱셈기
Monfared et al. A new multiplicative inverse architecture in normal basis using novel concurrent serial squaring and multiplication
JP3563043B2 (ja) 平方根の逆数計算方法、計算回路、及びプログラム
Matutino et al. A compact and scalable rns architecture

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20070129

A761 Written withdrawal of application

Free format text: JAPANESE INTERMEDIATE CODE: A761

Effective date: 20090119