(57)【要約】【課題】モンゴメリーモジュラス掛け算モジュールのモジュラス掛け算動作での電力消費を減少させ、計算速度を増加させる方法が提供される。【解決手段】コーディングスキームは、マルチプルモジュラス値を得るための加算器及びメモリ素子の必要性を減少させ、キャリ貯蔵加算及びキャリ電波加算の使用は、掛け算モジュールの計算速度を向上させる。特に、本発明は整数モジュラ演算だけではなく、多項式モジュラ演算を実行することができる。【選択図】図２
2004326112.tif 000002
【特許請求の範囲】
【請求項１】
ｎビットモジュラスＭ及び以前和、そして現在部分掛けを受け入れ、選択信号を発生するモジュラスレコーダと、
入力−Ｍ、０、Ｍ及び２Ｍを受け入れ、前記選択信号に基づいて前記入力のうちの一つを選択するマルチプレクサと、を含むことを特徴とするマルチプルモジュラス選択器。
【請求項２】
前記入力−Ｍは、前記モジュラスＭを反転させることによって求められることを特徴とする請求項１に記載のマルチプルモジュラス選択器。
【請求項３】
前記入力２Ｍは、前記モジュラスＭをシフトすることによって求められることを特徴とする請求項１に記載のマルチプルモジュラス選択器。
【請求項４】
前記モジュラスＭはレジスタに貯蔵されることを特徴する請求項１に記載のマルチプルモジュラス選択器。
【請求項５】
前記モジュラスレコーダは、累算器に入力されるマルチプルモジュラス反転表示信号をさらに発生することを特徴とする請求項１に記載のマルチプルモジュラス選択器。
【請求項６】
前記ｎビットモジュラスＭは、二番目の最下位ビットＭ[１]、及び以前和と現在部分掛けの和であるＳＰＰＩ[１：０]を含むことを特徴とする請求項１に記載のマルチプルモジュラス選択器。
【請求項７】
前記選択信号は２ビットＳＥＬ＿ＭＭ[１：０]を含むことを特徴とする請求項１に記載のマルチプルモジュラス選択器。
【請求項８】
キャリ加算モードで動作し、各々がマルチプルモジュラス、部分掛け、対応する現在和及び対応する現在キャリを受け入れ、対応する次の和及び対応する次のキャリを発生する複数のコンプレッサと、
前記複数のコンプレッサの各々から前記対応する次の和を受け入れ、対応する更新された現在和を出力する合レジスタと、
前記複数のコンプレッサから前記対応する次のキャリを受け入れ、対応する更新された現在キャリを出力するキャリレジスタと、を含むことを特徴とする累算器。
【請求項９】
前記和レジスタ及び前記キャリレジスタは分離されたレジスタであることを特徴とする請求項８に記載の累算器。
【請求項１０】
前記マルチプルモジュラスはモジュラスから生成されることを特徴とする請求項８に記載の累算器。
【請求項１１】
前記ｎは前記モジュラスのビットの長さであり、前記複数のコンプレッサはｎ＋３コンプレッサを含むことを特徴とする請求項１０に記載の累算器。
【請求項１２】
前記モジュラスはｎビットレジスタに貯蔵されることを特徴とする請求項１１に記載の累算器。
【請求項１３】
前記部分掛けは乗数及び被乗数から求められることを特徴とする請求項８に記載の累算器。
【請求項１４】
前記乗数のビット長さはｎ＋１であることを特徴とする請求項１３に記載の累算器。
【請求項１５】
前記乗数は（ｎ＋１）ビットレジスタに貯蔵されることを特徴とする請求項１４に記載の累算器。
【請求項１６】
ｎが偶数であれば、前記乗数のビット長さはｎ＋２であり、ｎが奇数であれば、前記乗数のビット長さはｎ＋１であることを特徴とする請求項１３に記載の累算器。
【請求項１７】
ｎが偶数であれば、前記乗数は（ｎ＋２）ビットレジスタに貯蔵され、ｎが奇数であれば、前記乗数は（ｎ＋１）ビットレジスタに貯蔵されることを特徴とする請求項１６に記載の累算器。
【請求項１８】
前記複数のコンプレッサは５：２コンプレッサであることを特徴とする請求項８に記載の累算器。
【請求項１９】
前記複数のコンプレッサの第１グループは、前記対応する次の和及び前記対応する次のキャリを発生するための補償ワードをさらに受け入れることを特徴とする請求項８に記載の累算器。
【請求項２０】
前記複数のコンプレッサの第１グループは完全コンプレッサであることを特徴とする請求項１９に記載の累算器。
【請求項２１】
前記複数のコンプレッサの第２グループは前記補償ワードを受け入れないことを特徴とする請求項１９に記載の累算器。
【請求項２２】
前記複数のコンプレッサの前記第２グループは縮小されたコンプレッサであることを特徴とする請求項２１に記載の累算器。
【請求項２３】
前記部分掛け及び前記マルチプルモジュラスは各々（ｎ＋２）ビットであることを特徴とする請求項８に記載の累算器。
【請求項２４】
前記補償ワードは２ビットであることを特徴とする請求項１９に記載の累算器。
【請求項２５】
前記プルコンプレッサは三つの全加算器で構成されることを特徴とする請求項１９に記載の累算器。
【請求項２６】
前記縮小されたコンプレッサは一つの半加算器と二つの全加算器で構成されることを特徴とする請求項２２に記載の累算器。
【請求項２７】
最終更新された現在和及び最終更新された現在キャリを受け入れ、最終和を出力するキャリ電波加算器と、
前記最終合を貯蔵するための最終レジスタと、をさらに含むことを特徴とする請求項８に記載の累算器。
【請求項２８】
前記複数のコンプレッサはキャリ加算モード及びキャリ電波モードで動作することを特徴とする請求項８に記載の累算器。
【請求項２９】
前記キャリ加算モード及び前記キャリ電波モードは制御信号によって決められることを特徴とする請求項９に記載の累算器。
【請求項３０】
複数のコンプレッサの第１グループは補償ワードをさらに受信し、前記対応する次の和及び前記対応する次のキャリを発生することを特徴とする請求項２８に記載の累算器。
【請求項３１】
前記複数のコンプレッサの第１グループはプルコンプレッサであることを特徴とする請求項３０に記載の累算器。
【請求項３２】
前記複数のコンプレッサの第２グループは前記補償ワードを受信しないことを特徴とする請求項３０に記載の累算器。
【請求項３３】
前記複数のコンプレッサの第２グループは縮小されたコンプレッサであることを特徴とする請求項３２に記載の累算器。
【請求項３４】
前記縮小されたコンプレッサの各々は、キャリ加算モード及びキャリ電波モードで動作できるように、前記縮小されたコンプレッサを変形するマルチプレクサグループを含むことを特徴とする請求項３３に記載の累算器。
【請求項３５】
各マルチプレクサグループは三つの２：１マルチプレクサを含むことを特徴とする請求項３４に記載の累算器。
【請求項３６】
各々の縮小されたコンプレッサは、前記制御信号に従って前記キャリ加算モード、または前記キャリ電波モードのうちのいずれか一つで動作するように、前記縮小されたコンプレッサを変形するマルチプレクサグループを含むことを特徴とする請求項３３に記載の累算器。
【請求項３７】
前記キャリ加算モードは、現在コンプレッサの中間全加算器から現在コンプレッサの下部全加算器に伝達される第１信号と、低いビットコンプレッサの上部加算器から前記現在コンプレッサの下部全加算器に伝達される第２信号と、低いビットコンプレッサの中間全加算器から前記現在コンプレッサの下部全加算器に伝達される第３信号と、を含むことを特徴とする請求項３６に記載の累算器。
【請求項３８】
前記キャリ電波モードは、下位ビットコンプレッサの下部全加算器から上位ビットコンプレッサのマルチプレクサグループに伝達される第１信号と、前記上位ビットコンプレッサのマルチプレクサグループから前記上位ビットコンプレッサの下位全加算器に伝達される第２信号と、を含むことを特徴とする請求項３６に記載の累算器。
【請求項３９】
前記縮小されたコンプレッサの各々は、
前記現在コンプレッサの中間全加算器の和、低いビットコンプレッサの対応する更新された現在キャリ、前記低いビットコンプレッサの第１及び第２出力、前記現在コンプレッサの更新された現在和、及び低いコンプレッサの対応する次のキャリを受け入れ、第１乃至第３出力を出力するマルチプレクサグループを含むことを特徴とする請求項３３に記載の累算器。
【請求項４０】
前記全加算器は三つの全加算器で構成されることを特徴とする請求項３１に記載の累算器。
【請求項４１】
前記縮小されたコンプレッサは、一つの半加算器と二つの全加算器、及び三つの２：１マルチプレクサで構成されることを特徴とする請求項３３に記載の累算器。
【請求項４２】
−Ｍ、０、Ｍ及び２Ｍ(ただ、Ｍはｎビットモジュラス数)のうちの一つをマルチプモジュラスで選択するマルチプルモジュラス選択器と、
部分掛けの値を求めるため使用される第１値を提供するブースレコーダと、
モンゴメリー掛け算の結果を求めるための第２値を累算する累算器と、を含むことを特徴とするモンゴメリー掛け算器。
【請求項４３】
モジュラス値を貯蔵するモジュラス数レジスタと、
被乗数値を貯蔵する被乗数レジスタと、
乗数値を貯蔵する乗数レジスタと、
前記乗数値及び被乗数値を結合するＡＮＤゲートと、
前記累算器及び前記ＡＮＤゲートからの値を結合し、結合した値を出力する二つの加算器と、をさらに含み、
前記結合した値は前記マルチプルモジュラス選択器に入力されることを特徴とする請求項４２に記載のモンゴメリー掛け算器。
【請求項４４】
モジュラスを受信する段階と、
以前和と現在部分掛けを受け入れる段階とを含み、
前記モジュラス及び前記以前和、そして前記現在部分掛けは、マルチプルモジュラス値−Ｍ、０、Ｍ 及び２Ｍを発生するため使用されることを特徴とするマルチプルモジュラス発生方法。
【請求項４５】
前記モジュラスの二番目の最下位ビットである前記モジュラスの一部を受信する段階をさらに含むことを特徴とする請求項４４に記載のマルチプルモジュラス発生方法。
【請求項４６】
前記以前和及び現在部分掛けの最下位２ビットである以前和及び現在部分掛けの一部を受け入れる段階をさらに含むことを特徴とする請求項４４に記載のマルチプルモジュラス発生方法。
【請求項４７】
前記生成されたマルチプルモジュラス値のうちの一つを選択するための選択信号を発生する段階をさらに含むことを特徴とする請求項４４に記載のマルチプルモジュラス発生方法。
【請求項４８】
前記選択された値を反転させるためのモジュラス反転表示信号を発生する段階をさらに含むことを特徴とする請求項４７に記載のマルチプルモジュラス発生方法。
【請求項４９】
乗数を受け入れる段階と、
少なくとも一つの部分掛けの値を発生するため部分掛け選択信号、部分掛けイネーブル信号、部分掛け反転表示信号を発生する段階と、を含むことを特徴とする部分掛け発生方法。
【請求項５０】
前記乗数を２ビットずつシフトする段階をさらに含むことを特徴とする請求項４９に記載の部分掛け発生方法。
【請求項５１】
対応する次の和及び次のキャリを発生するため複数のマルチプルモジュラス、部分掛け、対応する現在和及び対応する現在キャリを受信する段階と、
更新された現在和及び更新された現在キャリを発生する段階と、
リダンダント形式の結果を発生するため乗数が全部使用されるまで前記受信及び発生段階を繰り返す段階と、
ノーマル形式の結果を発生するためキャリ電波加算を実行する段階と、を含むことを特徴とする累算方法。
【請求項５２】
前記繰り返し段階はキャリ貯蔵加算器によってキャリ貯蔵加算を実行することを特徴とする請求項５１に記載の累算方法。
【請求項５３】
前記キャリ電波加算実行段階はキャリ電波加算器によって実行されることを特徴とする請求項５１に記載の累算方法。
【請求項５４】
スイッチング信号を発生する段階をさらに含むことを特徴とする請求項５３に記載の累算方法。
【請求項５５】
前記スイッチング信号を利用してキャリ貯蔵加算及び前記キャリ電波加算の間をスイッチングする段階をさらに含むことを特徴とする請求項５４に記載の累算方法。
【請求項５６】
ラディックス２Ｎ（Ｎ＞１)モンゴメリー掛け算を実行する方法において、
被乗数、モジュラス及び乗数を受け入れる段階と、
リダンダント形式の結果を発生するため前記被乗数、モジュラス及び乗数と連関した複数の入力をキャリ貯蔵加算する段階と、
ノーマル形式の結果を発生するためキャリ電波加算を実行する段階と、を含むことを特徴とする掛け算方法。
【請求項５７】
前記キャリ貯蔵加算はキャリ貯蔵加算器によって実行され、前記キャリ電波加算はキャリ電波加算器によって実行されることを特徴とする請求項５６に記載の掛け算方法。
【請求項５８】
前記キャリ貯蔵加算及び前記キャリ電波加算は累算器によって実行されることを特徴とする請求項５６に記載の掛け算方法。
【請求項５９】
スイッチング信号を発生する段階をさらに含むことを特徴とする請求項５６に記載の掛け算方法。
【請求項６０】
前記スイッチング信号を使用してキャリ貯蔵モード及びキャリ電波モードの間をスイッチングする段階をさらに含むことを特徴とする請求項５９に記載の掛け算方法。
【請求項６１】
ラディックス２Ｎ(Ｎ＞１)モンゴメリー掛け算を実行する方法において、
被乗数、モジュラス及び乗数を受け入れる段階と、
リダンダント形式の結果を発生するため前記被乗数、モジュラス及び乗数と連関した複数の入力をキャリ貯蔵加算する段階と、
前記リダンダント形式の結果であるキャリ電波モードをノーマル形式の結果への変換を実行する段階と、を含むことを特徴とする掛け算方法。
【請求項６２】
ｎビットモジュラスＭ及び以前和、そして現在部分掛けを受け入れ、第１選択信号を発生するモジュラスレコーダと、
前記ｎビットモジュラスＭ及び前記以前和、前記現在部分掛け、及び被乗数を受け入れ、第２選択信号を発生するモジュラス選択器と、
入力−Ｍ、０、Ｍ及び２Ｍを受け入れ、整数モジュラ演算モードである時に、前記第１選択信号に基づいて前記入力のうちの一つを選択し、多項式モジュラ演算モードである時に、前記第２選択信号に基づいて前記入力のうちの一つを選択するマルチプレクサと、を含むことを特徴とするマルチプルモジュラス選択器。
【請求項６３】
前記入力−Ｍは前記モジュラスＭを反転させることによって求められることを特徴とする請求項６２に記載のマルチプルモジュラス選択器。
【請求項６４】
前記入力−２Ｍは、前記モジュラスＭをシフトすることによって求められることを特徴とする請求項６２に記載のマルチプルモジュラス選択器。
【請求項６５】
前記モジュラスＭはレジスタに貯蔵されることを特徴とする請求項６２に記載のマルチプルモジュラス選択器。
【請求項６６】
前記モジュラスレコーダは、累算器に入力されるマルチプルモジュラス反転表示信号をさらに発生することを特徴とする請求項６２に記載のマルチプルモジュラス選択器。
【請求項６７】
前記ｎビットモジュラスＭは、二番目の最下位ビットＭ[１]、及び以前和と現在部分掛けの和であるＳＰＰＩ[１：０]を含むことを特徴とする請求項６２に記載のマルチプルモジュラス選択器。
【請求項６８】
前記第１選択信号は２ビットＳＥＬ＿ＭＭ[１：０]を含むことを特徴とする請求項６２に記載のマルチプルモジュラス選択器。
【請求項６９】
前記モジュラス選択器は、累算器に入力されるマルチプルモジュラス累算表示信号をさらに発生することを特徴とする請求項６２に記載のマルチプルモジュラス選択器。
【請求項７０】
前記以前和、前記現在部分掛け、及び被乗数であるＳＳＰＰＩ[１：０]を含むことを特徴とする請求項６２に記載のマルチプルモジュラス選択器。
【請求項７１】
前記第２選択信号は２ビットＳＥＬ＿Ｍ１[１：０]を含むことを特徴とする請求項６２に記載のマルチプルモジュラス選択器。
【請求項７２】
整数モジュラ演算モードである時に、−Ｍ、０、Ｍ及び２Ｍ(ただ、Ｍはｎビットモジュラス数)のうちの一つをマルチプルモジュラスで選択し、多項式モジュラ演算モードである時に、０、Ｍ及び２Ｍのうちの一つをマルチプルモジュラスで選択し、マルチプルモジュラス累算表示信号を出力するマルチプルモジュラス選択器と、
部分掛けの値を求めるため使用される第１値を提供するブースレコーダと、
モンゴメリー掛け算の結果を求めるための第２値を累算する累算器と、を含み、
前記累算器は、前記多項式モジュラ演算モードである時に、前記マルチプルモジュラス累算表示信号に基づいて前記第２値に前記Ｍを足すことを特徴とするモンゴメリー掛け算器。
【請求項７３】
モジュラス値を貯蔵するモジュラス数レジスタと、
被乗数値を貯蔵する被乗数レジスタと、
乗数値を貯蔵する乗数レジスタと、
乗数値及び被乗数値を結合するＡＮＤゲートと、
前記累算器及び前記ＡＮＤゲートからの値を結合し、結合した値を出力する二つの加算器と、をさらに含み、
前記結合した値は前記マルチプルモジュラス選択器に入力されることを特徴とする請求項７２に記載のモンゴメリー掛け算器。
【請求項７４】
前記マルチプルモジュラス選択器は、
ｎビットモジュラスＭ及び以前合、そして現在部分掛けを受け入れ、第１選択信号を発生するモジュラスレコーダと、
前記ｎビットモジュラスＭ及び前記以前和、前記現在部分掛け、及び被乗数を受け入れ、第２選択信号を発生するモジュラス選択器と、
入力−Ｍ、０、Ｍ及び２Ｍを受け入れ、整数モジュラ演算モードである時に、前記第１選択信号に基づいて前記入力のうちの一つを選択し、多項式モジュラ演算モードである時に、前記第２選択信号に基づいて前記入力０、Ｍ及び２Ｍのうちの一つを前記マルチプルモジュラスとして選択するマルチプレクサと、を含むことを特徴とする請求項７２に記載のモンゴメリー掛け算器。
【請求項７５】
前記ブースレコーダは、
乗数を受け入れ、第３選択信号ＳＥＬ＿ＰＰ[１：０]を発生する第１選択器と、
前記乗数を受け入れ、第４選択信号ＳＥＬ＿Ａ１[１：０]を発生する第２選択器と、
入力−Ａ、０、Ａ及び２Ａを受け入れ、整数モジュラ演算モードである時に、前記第３選択信号に基づいて前記入力のうちの一つを選択し、多項式モジュラ演算モードである時に、前記第４選択信号に基づいて前記入力０、Ａ及び２Ａのうちの一つを選択するマルチプレクサと、を含むことを特徴とする請求項７２に記載のモンゴメリー掛け算器。
【請求項７６】
モジュラス選択器において、
ｎビットモジュラスＭ、以前和、現在部分掛け、及び被乗数を入力して選択信号を発生し、
入力０、Ｍ及び２Ｍのうちの一つを選択してマルチプレクサに送り、モジュラス累算指示信号を選択して累算器に送るモジュラス選択器ユニットを含むことを特徴とするモジュラス選択器。
【請求項７７】
ブースレコーダにおいて、
乗数を入力して第１選択信号ＳＥＬ＿ＰＰ［１：０］を発生する第１選択器と、
前記乗数を入力して第２選択信号ＳＥＬ＿Ａ１［１：０］を発生する第２選択器と、
整数モジュラス演算である時に、第１選択信号に応じて第１入力‐Ｍ、０、Ｍ及び２Ｍのうちの一つを選択し、多項式モジュラス演算である時に、第２選択信号に応じて第２入力０、Ａ及び２Ａのうちの一つを選択するマルチプレクサと、を含むことを特徴とするブースレコーダ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ保安のための暗号化(ｃｒｙｐｔｏｇｒａｐｈｙ)システムに関するものであって、特に、暗号化システムでのモジュラ掛け算演算のための装置及び方法に関するものである。
【背景技術】
【０００２】
楕円曲線暗号法(Ｅｌｌｉｐｔｉｃ  Ｃｕｒｖｅｓ  ＣｒｙｐｔｏＳｙｓｔｅｍ、ＥＣＣ)は、整数モジュラ演算を基づいたＧＦ(ｐ)演算と多項式モジュラ演算を基づいたＧＦ（２Ｍ）の演算とで構成される。
【０００３】
整数モジュラ演算であるモンゴメリーモジュラ掛け算アルゴリズムは、次の［数式１］の通りである。
【０００４】
［数式１］
Ｒ＝Ａ＊Ｂｒ−１ｍｏｄＮ、(ｒａｄｉｘ  ｒ＝２ｎ)
【０００５】
モジュラ指数アルゴリズム(ｍｏｄｕｌａｒ  ｅｘｐｏｎｅｎｔｉａｌ  ａｌｇｏｒｉｔｈｍ)で、Ａ、Ｂ及びＮは、各々乗数、被乗数及びモジュラ数(ｍｏｄｕｌａｒ  ｎｕｍｂｅｒ)であり、各々はｎビットである。
【０００６】
図１は、モジュラス選択器１、ブースレコーダ１２及び累算器２を利用して実現された従来のモンゴメリーモジュラ掛け算アルゴリズムのハードウェア構成を示している。マルチモジュラス選択器１は、マルチモジュラス０、Ｍ、２Ｍ及び３Ｍのうちの一つの値を選択し、選択された値をキャリ電波加算器(ｃａｒｒｙ  ｐｒｏｐａｇａｔｉｏｎ  ａｄｄｅｒ、ＣＰＡ)１４に出力する。値３Ｍを得るためには付加的な加算器が求められ、ハードウェアの大きさの増加と計算速度の低下をもたらす。累算器２は、二つのＣＰＡ１４、１１を含む。各ＣＰＡは、累算器の伝達遅延時間を増加させ、計算速度を低下させる。ＣＰＡ１１は、被乗数選択器１３からの部分掛け(ｐａｒｔｉａｌ  ｐｒｏｄｕｃｔ  ｖａｌｕｅ)と累算器２の以前出力Ｐ[ｉ]を受け入れる。被乗数選択器１３は、部分掛け−２Ａ、−Ａ、０、Ａ、２Ａを得るために、乗数とブースレコーダ(Ｂｏｏｔｈ  Ｒｅｃｏｄｅｒ)１２の出力を受け入れる。ＣＰＡ１１は、部分掛け及びＰ[ｉ]を足す。累算値Ｐ[ｉ＋１]を得るため、ＣＰＡ１１の出力は、ＣＰＡ１４に入力される。その結果、モンゴメリー掛け算Ｐ[ｉ＋１]＝ＡＢＲ−１  ｍｏｄ  Ｍを得ることができる。
【０００７】
多項式モジュラ演算は［数式２］の通りである。
【０００８】
［数式２］
Ｐ(ｘ)＝Ａ(ｘ)Ｂ(ｘ)ｍｏｄ  Ｇ(ｘ)
【０００９】
Ａ(ｘ)及びＢ(ｘ)はＧＦ(２Ｍ)の元素であり、Ｇ(ｘ)は次数ｍである原始多項式である。Ａ(ｘ)、Ｂ(ｘ)及びＧ(ｘ)は［数式３］のように表現される。
【００１０】
［数式３］
Ａ(ｘ)＝ａｎ−１Ｘｎ−１＋ａｎ−２Ｘｎ−２＋…＋ａ１Ｘ＋ａ０
Ｂ(ｘ)＝ｂｎ−１Ｘｎ−１＋ｂｎ−２Ｘｎ−２＋…＋ｂ１Ｘ＋ｂ０
Ｇ(ｘ)＝ｇｎ−１Ｘｎ−１＋ｇｎ−２Ｘｎ−２＋…＋ｇ１Ｘ＋ｇ０
【００１１】
一般的に、整数モジュラ演算のための掛け算器と多項式モジュラ演算のための掛け算器とは各々別に構成される。整数モジュラ演算及び多項式モジュラ演算が全部可能な掛け算器が実現されたら、ハードウェアの大きさは大きく減少することができる。
【発明の開示】
【発明が解決しようとする課題】
【００１２】
本発明の目的は、ハードウェアの大きさを増やさず、モジュラ演算速度を向上させる掛け算演算装置を提供することにある。
【００１３】
本発明の他の目的は、レディックス−４論理演算を基づいて、モンゴメリー掛け算アルゴリズムのハードウェア構成及び動作を効率的に実現する掛け算演算装置を提供することにある。
【課題を解決するための手段】
【００１４】
本発明の実施例では、レディックス−４論理演算を基づいてモンゴメリー掛け算アルゴリズムを適用し、これをレディックス−４インターリーブモンゴメリー掛け算アルゴリズム(Ｒａｄｉｘ−４  Ｉｎｔｅｒｌｅａｖｅｄ  Ｍｏｎｔｇｏｍｅｒｙ  Ｍｕｌｔｉｐｌｉｃａｔｉｏｎ  Ａｌｇｏｒｉｔｈｍ)といい、Ｒ４ＩＭＭに略称する。
【００１５】
本発明の実施例に示した掛け算装置の論理演算体系は、公開キー方式の暗号化アルゴリズムを適用するコンピューターシステムまたは通信網に適用されることができ、また、携帯可能な集積回路カード(またはスマートカード)に内蔵されて運用されることができる。
【００１６】
本発明による実施例は、少なくとも１２２４ビット以上の大きい整数を基づくモジュラ演算に適用されることができる。
【００１７】
本発明の実施例を説明する前に、本発明に適用されるモジュラ掛け算アルゴリズムＲ４ＩＭＭで参照されるパラメータ(ｐａｒａｍｅｔｅｒｓ)を、次のように定義する。
【００１８】
Ｍはモジュラス(ｍｕｄｕｌｕｓ)として、２より大きいプラスの整数(ｉｎｔｅｇｅｒ)として奇数値(例えば、３、７など)を有する。
【００１９】
Ｍ'は、条件式(−Ｍ＊Ｍ')ｍｏｄ４＝１を満足する整数である。
【００２０】
ｎは、モジュラスＭのビット長さ(ｂｉｔ  ｌｅｎｇｔｈ)を示す値としてプラスの整数である。本発明の実施例では８にする。
【００２１】
Ｎは、モジュラスＭのデジット長さ(ｄｉｇｉｔ  ｌｅｎｇｔｈ)を示す値としてプラスの整数である。
【００２２】
ここで、ｎはＮの２倍値(ｎ＝２Ｎ)として、ｎが８であればＮは４になる。
【００２３】
Ｒは、Ｒ＋２ｎ＋２２Ｎの条件を満足するプラスの整数である。ｎが８であればＲは２５６になる。
【００２４】
Ｒ−１は、Ｒのモジュール逆倍数として、条件式(Ｒ＊Ｒ−１)ｍｏｄ  Ｍ＝１を満足するプラスの整数である。
【００２５】
Ａは、被乗数(ｍｕｌｔｉｐｌｉｃａｎｄ)として、０≦Ａ＜Ｍの条件を満足する整数である。
【００２６】
Ｂは、乗数（ｍｕｌｔｉｐｌｉｅｒ）として、０≦Ｂ＜Ｍの条件を満足する整数である。ここで、
【００２７】
【数１】
2004326112.tif 000003
ｂＩ∈｛０、１、２、３｝である。ｂＩは２ビットである。
【００２８】
本発明に適用されるＲ４ＩＭＭアルゴリズムは、次の通りである。
Ｓ０：＝０
ｆｏｒＩ：＝０ｔｏ(Ｎ−１)
ｑＩ：＝(((ＳＩ＋ｂＩＡ)ｍｏｄ４)*Ｍ')ｍｏｄ４
ＳＩ＋１：＝(ＳＩ＋ｂＩＡ＋ｑＩＭ)／４
ｅｎｄｆｏｒ
ｉｆ(ＳＮ≧Ｍ)ＳＮ：＝ＳＮ−Ｍ
【００２９】
Ｒ４ＩＭＭアルゴリズムで、Ｉはデジットインデックスまたは演算の繰り返し回数を示し、アルゴリズムを実行した総掛けの結果はＳＮ＝Ａ＊Ｂ＊Ｒ−１(ｍｏｄＭ)に示す。 すべての掛けＳＮの範囲は０≦ＳＮ＜Ｍである。前記アルゴリズムで、商ｑＩは'、ＳＩ＋ｂＩＡ＋ｑＩＭの下位２ビットが“００”になることができるように足すＭの個数'を示す。リダンダント数の体系(ｒｅｓｉｄｕｅ  ｎｕｍｂｅｒ  ｓｙｓｔｅｍ；ＲＮＳ)で、どのような数に係数Ｍの整数倍を足した数は元々の数と同一であるので、係数Ｍの整数倍であるモジュラス掛けｑＩＭ(以下、ＭＭＩ、ｍｕｌｔｉｐｌｅ  ｏｆ  ｍｏｄｕｌｕｓ)を足した数は元々の数と同一である。また、ＳＩ＋ｂＩＡ＋ｑＩＭの下位２ビットを“００”に作った後に、レディックス値４に割れば(すなわち、２ビットずつ右側にシフトする)有效席の数字はそのまま保存されるので、情報が遺失されない。
【００３０】
このようなＲ４ＩＭＭアルゴリズムをハードウェア的に実現するためには、部分掛けＰＰＩとモジュラス掛けＭＭＩを求めなければならない。単位乗数ｂＩと商ｑＩが２ビットであるので、部分掛けＰＰＩとモジュラス掛けＭＭＩは、次のように四つの場合の可能値を各々有するように設定されることができる(ここで、ｂＩ∈｛０、１、２、３｝であり、ｑＩ∈｛０、１、２、３｝にする)。
【００３１】
［式１］
ｂＩＡ＝ＰＰＩ∈｛０、Ａ、２Ａ、３Ａ｝
ｑＩＭ＝ＭＭＩ∈｛０、Ｍ、２Ｍ、３Ｍ｝
【００３２】
しかし、上 [式１]のように、部分掛けＰＰＩとモジュラス掛けＭＭＩを設定するようになれば、値３Ａと３Ｍを計算する時に、ＡまたはＭを１ビットシフトした値と元々の値の和を求めなければならない(２Ａ＋Ａ、２Ｍ＋Ｍ)。これをハードウェアで実現するためには、このような値を計算する独立した加算器(ａｄｄｅｒ)を使用するか、または、この値をあらかじめ計算してメモリなどに貯蔵しておいて、必要時に参照する方法を使用しなければならない。そのような方法は、ハードウェアの無駄使いをもたらし、また、その値(３Ａ、３Ｍを求める時間(あらかじめ計算しておくか、リアルタイムで計算する)を追加的に考慮してハードウェアを設計しなければならないので、性能低下の要因になることができる。
【発明の効果】
【００３３】
本発明の実施例によると、本発明は、モジュラ掛け算器で、最小限の構成要素だけで、キャリセーブモードとキャリ電波モードで選択的に動作することができる累算器の構造を提供することによって、ハードウェア的な負担を減らしながら、モジュラ演算速度を向上させる効果がある。
【００３４】
したがって、本発明では、部分掛けＰＰＩとモジュラス掛けＭＭＩを求めることによるハードウェアの負担を減らそうとする。
【００３５】
図２は、本発明の望ましい実施例によるモジュラス掛け算器の全体的な構成を示す。
【００３６】
図２のモジュラス掛け算器１０００は、モジュラスレジスタ（Ｍ＿ＲＥＧ、１００）に貯蔵されたモジュラスＡ、被乗数レジスタ（Ａ＿ＲＥＧ、１０１）に貯蔵された被乗数Ａ、乗数レジスタ（Ｂ＿ＲＥＧ、１０２）に貯蔵された乗数Ｂ、モジュラスレコーダ(Ｍｏｄｕｌｕｓ  ｒｅｃｏｄｅｒ、１１０)、ブースレコーダ(Ｂｏｏｔｈ  ｒｅｃｏｄｅｒ、１４０)、マルチプルモジュラス(ｍｕｌｔｉｐｌｅ  ｍｏｄｕｌｕｓ、ＭＭＩ)の計算を助けるマルチプレクサ１２０、部分掛け(ｐａｒｔｉａｌ  ｐｒｏｄｕｃｔ、ＰＰＩ)の計算を助けるマルチプレクサ１３０、及びモジュラ掛け算演算を助ける累算器１７０、を含む。累算器１７０は、部分掛けＰＰＩ、マルチプルモジュラスＭＭＩ及び補償ワード信号ＣＷが入力されてモンゴメリー掛け算結果を出力する。本発明の実施例で、モジュラスＭは正数であり、ｎビットＭ[ｎ−１：０]である。被乗数Ａは正数、または負数であり、ｎ＋１ビットＡ[ｎ：０]であり、１ビットの符号ビットを有し、乗数Ｂは偶数ビットを有する。ｎが偶数であれば、Ｂはｎ＋２ビットであり、符号ビットは２ビットである。またはｎが奇数であれば、Ｂはｎ＋１ビットであり、符号ビットは１ビットである。乗数Ｂは、毎クロックサイクルごとに２ビットずつ右側にシフトされる。乗数Ｂの下位２ビットｂ１及びｂ０とビットｂＲ(ビットｂＲは以前サイクルのビットｂ１)は、ブースレコーダ１４０に提供される。
【００３７】
本発明の望ましい実施例によるレジスタ１００は、モジュラスＭとモジュラスＭの１の補数値Ｍを提供する。類似的に、レジスタ２０１は被乗数Ａと被乗数Ａの１の補数値Ａを提供し、レジスタ１０２は乗数Ｂを提供する。
【００３８】
掛け算器１０００は繰り返してプロセッサでモジュラ掛け算の解答を捜す。モジュラスレコーダ１１０及びマルチプレクサ１２０は、モジュラスＭＭＩを選択するため使用される。モジュラスＭＭＩを選択するため、モジュラスレコーダ１１０は、累算器１７０から繰り返しのデータを受け入れる。本発明の実施例で、繰り返しのデータＳＰＰＩ[１：０]は、累算器１７０に貯蔵された和ＳＩ[１：０]とキャリＣＩ[１：０]の最下位２ビット、部分掛けＰＰＩ[１：０]、及び部分掛け反転表示信号ＮＥＧ＿ＰＰに根拠を有する。和ＳＩ[１：０]とキャリＣＩ[１：０]は、２ビット加算器１８１で結合してＳＩ[１：０]を形成する。結合した信号は、２ビット加算器１８２で部分掛けＰＰＩ[１：０])と部分掛け反転表示信号ＮＥＧ＿ＰＰと結合してＳＳＰＩ[１：０]を形成する。モジュラスレコーダ１１０は、モジュラスの最下位ビットＭ[１]をさらに受け入れる。モジュラスレコーダ１１０は、ＳＰＰＩ[１：０]及びモジュラスＭ[１]を利用して、複数のモジュラスＭＭＩの選択を決めるための出力信号を発生する。本発明の実施例による上述の説明で、ビットの大きさは限定されない。ＳＰＰＩは２ビット以上であり得る。これによって、本発明の他の構成は変更されるであろう。
【００３９】
モジュラスレコーダ１１０は複数の信号を出力する。この実施例で、モジュラスレコーダ１１０は、２Ｍ、Ｍ、０、Ｍのうちの一つを選択するため、マルチプレクサに選択信号ＳＥＬ＿ＭＭ[１：０]を出力する。マルチプレクサ１２０は、モジュラスＭとモジュラス選択信号ＳＥＬ＿ＭＭ[１：０]が入力され、ＭＭＩを出力する。ＭＭＩは累算器１７０に入力される。補償ワード信号ＣＷを得るためモジュラス反転表示信号ＮＥＧ＿ＭＭは、半加算器１６０で部分掛け反転表示信号ＮＥＧ＿ＰＰと結合する。補償ワード信号ＣＷは累算器１７０に入力される。
【００４０】
モジュラス反転表示信号ＮＥＧ＿ＭＭは、選択された値Ｉがビット反転されるか否かを示すために使用される。また、部分掛け反転表示信号ＮＥＧ＿ＰＰは、選択された部分掛けＰＰＩがビット反転されるか否かを示すため使用される。部分掛けＰＰＩは、ブースレコーダ１４０、マルチプレクサ１３０及びＡＮＤゲート１５０によって実行される動作に根拠を有する。部分掛けＰＰＩは、ＭＭＩ及びＣＷとともに累算器１７０に入力される。図２で、４：１マルチプレクサが示されているが、マルチプレクサの特定比は限定されず、累算器は５−２コンプレッサに限定されない。４：１マルチプレクサは２：１マルチプレクサの三つに取り替えることができる。
【００４１】
図３は、本発明の望ましい実施例によるモジュラスレコーダ１１０のコーディングスキームを示している。図３には、モジュラスレコーダ１１０に入力される三つの入力Ｍ[１]及びＳＰＰＩ[１：０]を示しているが、本発明は、入力及び出力を多様に変更することができる。
【００４２】
典型的に複数のモジュラスＭＭＩは、０、Ｍ、２Ｍ及び３Ｍである。３Ｍを求めるためには、１Ｍに２Ｍを足すための付加的な加算器またはメモリ素子が必要である。付加的な加算器及び／またはメモリ素子は、ハードウェアの大きさ及び／または計算遅延などをもたらし、これは計算速度及び電力消耗に影響を及ぶ。図３のコーディングスキームはＭＭＩの値を得るために、付加的な加算器またはメモリ素子なしに、ビット反転及びビットシフトを利用する。モジュラスレコーダ１１０は、モジュラスＭの二番目の最下位ビットＭ[１]とＳＰＰＩの最下位２ビットが入力される。モジュラスレコーダ１１０は、モジュラス選択信号ＳＥＬ＿ＭＭ[１：０]を出力する。選択されたモジュラス値ＭＭＩは、累算器２５０に伝送される。本発明の上述の説明で、値のビットの大きさは限定されない。ＳＰＰＩは２ビット以上であり得る。これによって、本発明の他の素子は変更されることができる。
【００４３】
図４はモジュラスレコーダ１１０の具体的な構成例を示している。図４に示した例では、モジュラスレコーダ１１０がインバータ３０１−３０１とＮＡＮＤゲート３１１−３１７で構成されるが、モジュラスレコーダ１１０の回路実現は多様に変更されることができる。
【００４４】
減少したハードウェアの大きさ及び増加した計算速度及び電力減少のための類似の方法が、図２及び図６に示したようなブースレコーダ１４０に使用されることができる。先に言及した掛け算器１０００は、モジュラスＭＭＩ及び部分掛けＰＰＩを累算器１７０に入力して、繰り返しのプロセッサにモジュラ掛け算を実行する。
【００４５】
ブースレコーダ１４０及びマルチプレクサ１３０は、累算器２５０に提供される部分掛けＰＰＩの値０、Ａ、２Ａ、Ａ、２Ａを選択するため使用される。図５は、本発明の望ましい実施例によるブースレコーダ１４０のコーディングスキームを示している。ブースレコーダ１４０は、乗数Ｂ[１]及びＢ[０]の最下位２ビットと繰り返しの値Ｂ[１]の以前値であるＢ[Ｒ]とが入力され、部分掛け選択信号ＳＥＬ＿ＰＰ[１：０]、部分掛けイネーブル信号ＥＮ＿ＰＰ及び部分掛け反転表示信号ＮＥＧ＿ＰＰを出力する。図５には、ブースレコーダ１４０に入力される三つの入力Ｂ［１]、Ｂ[０]及びＢ[Ｒ]を示しているが、本発明は入力及び出力を多様に変更することができる。
【００４６】
ＰＰＩを選択するため、ブースレコーダ１４０は、四つの値２Ａ、Ａ、Ａ、２Ａのうちの一つを選択するための部分掛け選択信号ＳＥＬ＿ＰＰ[１：０]を、マルチプレクサ１３０に出力する。図６はブースレコーダ１４０の具体的な構成例を示している。図６に示した例では、ブースレコーダ１４０がインバータ３２１〜３２３とＮＡＮＤゲート３３１〜３４０とで構成されるが、ブースレコーダ１４０の回路実現は多様に変更されることができる。
【００４７】
再び、図２を参照すると、マルチプレクサ１３０は被乗数Ａの値及び信号ＳＥＬ＿ＰＰ[１：０]を受け入れ、出力をＡＮＤゲート１５０に出力する。ＡＮＤゲート１５０は、マルチプレクサ２４０からの入力とブースレコーダ１４０からの部分掛けイネーブル信号ＥＮ＿ＰＰを受け入れる。ＡＮＤゲート１５０は、部分掛けＰＰＩの選択された値を累算器１７０に出力する。部分掛けイネーブル信号ＥＮ＿ＰＰが０である時に、ＡＮＤゲート１５０は、０であるＰＰＩを累算器２５０に出力する。部分掛け反転信号ＮＥＧ＿ＰＰは、半加算器１６０に入力される。部分掛け反転信号ＮＥＧ＿ＰＰの１の値は、新しい部分掛けＰＰＩを累算器１７０に入力するために、２ＡまたはＡのうちの一つを求めるための部分掛けＰＰＩに対するビット反転が実行されることを示す。
【００４８】
部分掛けＰＰＩ及びモジュラスＭＭＩの足し算で、補償ワード信号ＣＷは半加算器１６０から累算器１７０に伝達する。累算器１７０は、部分掛けＰＰＩ、モジュラスＭＭＩ及び補償ワード信号ＣＷをコンプレスネットワーク１７１に入力する。コンプレスネットワーク１７１は、ＣＳＡ(Ｃａｒｒｙ  Ｓａｖｅ  Ａｄｄｅｒ)及びＣＰＡ(Ｃａｒｒｙ  Ｐｒｏｐａｇａｔａ  Ａｄｄｅｒ)で使用される。先の説明の図１の累算器はＣＰＡを使用しており、電波遅延（ｐｒｏｐａｇａｔｉｏｎ  ｄｅｌａｙ）によって動作速度が遅かった。ＣＳＡの使用は電波遅延を減少させ、計算速度を向上させ、電力消耗を減少させることによって動作速度を向上させる。
【００４９】
本発明の望ましい実施例では、ＣＳＡ及びＣＰＡを混合して計算速度を増加させ、電力消耗を減少させる。本発明の実施例で、ＣＰＡは最後の反復で使用され、ＣＳＡは以前反復で使用される。図７及び図１１は、ＣＳＡ及びＣＰＡを使用した本発明の二つの実施例を示している。
【００５０】
本発明の望ましい実施例による累算器１７０ａが図７に示されている。累算器１７０ａは、直列に連結されたｎ＋２個の５−２コンプレッサで構成され、コンプレッサは、プルコンプレッサ(例えば、２０２)と縮小された(ｒｅｄｕｃｅｄ)コンプレッサ(例えば、２０３)とに分けられる。ここで、ｎはモジュラス値Ｍのビット長さである。累算器１７０ａは、和ＳとキャリＣを、和レジスタ（Ｓ＿ＲＥＧ、１７３）とキャリレジスタ（Ｃ＿ＲＥＧ、１７２）に各々貯蔵する。和レジスタ１７３及びキャリレジスタ１７２の出力は、キャリ電波加算器１７４に入力される。キャリ電波加算器１７４は、リダンダント数(ｒｅｄｕｎｄａｎｔ  ｎｕｍｂｅｒ)を正常数(ｎｏｒｍａｌ  ｎｕｍｂｅｒ)に変換し、変換された数を最終レジスタ１７５に貯蔵する。
【００５１】
この実施例で、累算器１７０ａへの入力は、補償ワードＣＷ[１：０]、マルチプルモジュラス値ＭＭＩ及び部分掛けＰＰＩである。初めの二つのプルコンプレッサ２０１、２０２はモジュラスＭＭＩ[１：０]及び部分掛けＰＰＩ[Ｉ：０)とともに補償ワードＣＷ[１：０]が入力される。残りの縮小されたコンプレッサ２０３、２０４、２０５などはマルチプルモジュラスの残りのビットＭＭＩ[ｎ＋１：２]及び部分掛けＰＰＩ[ｎ＋１：２]を使用する。最後のコンプレッサ(ｎ＋２番目のコンプレッサ)２０５はオーバーフローを防止し、一番目のコンプレッサは三番目の全加算器がないプルコンプレッサである。
【００５２】
プルコンプレッサ２０１及び縮小されたコンプレッサ２０３の一例が、図８及び図９に各々示されている。各コンプレッサは現在値Ｉ及び他の入力を利用して、次の値Ｉ＋１を得るために使用される。図８は、本発明の望ましい実施例によるプルコンプレッサ２０１を示している。プルコンプレッサ２０１は複数の入力を有する。この実施例で、プルコンプレッサ２０１は、五つの入力すなわち、１ビットの高いコンプレッサからの次のキャリワードビット値から得られた現在キャリワードビットＣＩ、２ビットが高いコンプレッサからの次の和ワードビットから得られた和ワードビットＳＩ、補償ワードＣＷ、部分掛けＰＰＩ及びマルチプルモジュラスＭＭＩ、現在コンプレッサに入力された現在キャリワードビットはインデックス“１”を有し、残りの高次ビットコンプレッサは次のキャリワードビット値ＣＩ＋１[ｋ＋１]を出力する。ｋは“ｋ”番目のコンプレッサを示す。次のキャリワードビット値ＣＩ＋１[ｋ＋１]はキャリレジスタ１７２に入力され、キャリレジスタ１７２は現在キャリワードビット値ＣＩをｋ番目のコンプレッサに出力する。現在和ワードビット値ＳＩ[ｋ]は、ｋ＋２コンプレッサからの次の和ワードビット値ＳＩ＋１[ｋ＋２]が和レジスタ１７３に入力されることによって求められる。前記値は、特定ビットｋ、ＣＩ＋１[ｋ]及びＳＩ＋１[ｋ]に対する次のキャリワードビット及び次の和ワードビット値を求めるためプルコンプレッサ２０１によって使用される。このような値は、各々キャリ及び和レジスタ１７２、１７３を通過する。先の説明のように、キャリ及び和レジスタ１７２、１７３の各々は、低ビットコンプレッサに入力を提供する。次のキャリワードビットＣＩ＋１[ｋ]及び次の和ワードビットＳＩ＋１[ｋ]は［数式４］の通りである。
【００５３】
［数式４］
（２ＣＩ＋１[ｋ]＋２ＣＯ１＋[ｋ]＋２ＣＯ２[ｋ]＋ＳＩ＋１[ｋ]）
＝(ＣＩ[ｋ]＋ＳＩ[ｋ])＋ＰＰＩ[ｋ]＋ＭＭＩ[ｋ]＋ＣＷ[ｋ]＋ＣＩ１[ｋ]＋ＣＩ２[ｋ]
ただし、ｋ>１であれば、ＣＷ[ｋ]は入力されない。
【００５４】
本発明の実施例で、プルコンプレッサ２０１は三つの全加算器を含む。第１全加算器２１１はＣＩ、ＳＩ及びＣＷが入力され、第１全加算器キャリＦＣＯ１及び第１全加算器の和ＦＳＯ１を出力する。第１全加算器キャリＦＣＯ１は第１出力キャリＣＯ１として出力されて、次の高ビットコンプレッサｋ＋１の入力ＣＩ１[ｋ＋１]になる。第２全加算器２１２は、第１全加算器和ＦＳＯ１、部分掛けのビット値ＰＰＩ[ｋ]及びマルチプルモジュラスビット値ＭＭＩ[ｋ]を受け入れ、第２全加算器キャリＦＣＯ２及び第２全加算器の和ＦＳＯ２を出力する。第２全加算器キャリＦＯＣ２は、第１出力キャリＣＯ２として出力されて、次の高ビットコンプレッサｋ＋１の入力ＣＩ２[ｋ＋１]になる。第３全加算器２１３は、第２全加算器の和ＦＳＯ２と低ビットコンプレッサｋ−１からのＣＩ１及びＣＩ２が入力され、第３全加算器キャリＦＣＯ３及び第３全加算器の和ＦＳＯ３を出力する。第３全加算器キャリＦＣＯ３は、次のキャリワードビット値ＣＩ＋１として出力されて、低ビットコンプレッサｋ−１に入力されるキャリＣＩとして使用される。第３全加算器の和ＦＳＯ３は、２ビットが低いコンプレッサｋ−２に入力されるＳＩとして使用される。ビット０に対応する第１プルコンプレッサ２０１は、次のキャリ、または和ワードを出力しない。したがって、第３プルコンプレッサは第１全加算器を要しない。一方、ビット１に対応する第２プルコンプレッサ２０２は、次の和ワードビットを出力しない。
【００５５】
補償ワードＣＷ[１：０]は２ビットを有するので、各々のビットに対する二つのコンプレッサが必要である。二つのコンプレッサ２０１、２０２は複数の値が入力されるプルコンプレッサである。本発明の実施例で、コンプレッサ２０１、２０２は、五つの値が入力される。高ビットコンプレッサ[２：ｎ＋２]は、コンプレッサ２０１、２０２に比べて少数の値が入力される縮小されたコンプレッサである。図９に示した縮小されたコンプレッサは、第１全加算器が半加算器に取り替えられる。したがって、縮小されたコンプレッサ内の半加算器２１１は、キャリＣＩと和ＳＩが入力され、第１半加算器キャリＨＣＯ１及び第１半加算器の和ＨＳＯ１を出力する。第１半加算器キャリＨＣＯ１は、第１出力キャリＣＯ１として、次の高ビットコンプレッサｋ＋１の二番目の第１入力ＣＩ１[ｋ＋１]に提供される。第２全加算器２１２は、第１半加算器の和ＨＳＯ１、コンプレッサのビットと関連ある部分掛けビット値ＰＰＩ[ｋ] 及びマルチプルモジュラスビット値ＭＭＩ[ｋ]が入力される。 第２全加算器２１２は、第２全加算器キャリＦＣＯ２及び第２全加算器の和ＦＳＯ２を出力する。第２全加算器の和ＦＳＯ２と第２出力キャリＣＯ２として、次の高いビットコンプレッサｋ＋１の第２入力ＣＩ２[ｋ＋１]に提供される。第３全加算器２１３は、第３全加算器キャリＦＣＯ３及び第３全加算器の和ＦＳＯ３を出力する。第３全加算器キャリＦＣＯ３は、次のキャリワードビットＣＩ＋１として、キャリレジスタ１７２を通過した後に、低ビットコンプレッサｋ−１の入力ＣＩに提供される。第３全加算器の和ＦＳＯ３は、次の和ワードビットＳＩ＋１として、和レジスタ１７３を通過して２ビットが低いコンプレッサｋ−２の入力ＳＩに提供される。図１０は、図９に示したような縮小されたコンプレッサを含む累算器１７１ａを詳細に示している。
【００５６】
本発明の実施例による図１０に示した累算器１７０ａは、プルコンプレッサと縮小されたコンプレッサが直列に連結され、コンプレッサの数は、マルチプルモジュラス値ＭＭＩ及び部分掛け値ＰＰＩのビットの大きさによって決められる。最下位２ビットコンプレッサは、補償ワードＣＷを入力として使用するプルコンプレッサである。一番目のビットコンプレッサ２０１は、キャリＣＯ１[０]、ＣＯ２[０]を出力する。キャリＣＯ１[０]、ＣＯ２[０]は、各々次の高いビット(二番目のビット)コンプレッサ２０２の入力ＣＩ１[１]、ＣＩ２[１]になる。このような構造は、最後のコンプレッサｎ＋２まで続いて、一番高いビットコンプレッサは、キャリ出力ＣＯ１[ｎ＋２]、ＣＯ２[ｎ＋２]を出力しない。一番高いビットコンプレッサはオーバーフローを防止し、一番高いビットコンプレッサの次のキャリワードビット及び次の和ワードビット値から二番目の入力が求められる。
【００５７】
各コンプレッサの次のキャリワードビット値及び次の和ワードビット値は、各々キャリ及び和レジスタ１７２、１７３に貯蔵される。最後の結果は、和レジスタ１７３内に貯蔵された一部分とキャリレジスタ１７２に貯蔵された他の部分との形態で、分割されて発生する。最終単一ワード結果ＳＮ[ｎ：０]を得るため、和レジスタ１７２とキャリレジスタ１７３に貯蔵された値は、キャリ電波加算器１７４で足され、最終単一ワード結果ＳＮ[ｎ：０]は、最終レジスタ１７５に貯蔵される。従来システムのＣＰＡモードに代えて、本発明の実施例によるシステムは図７に示したように、ＣＳＡモードを使用する。ＣＳＡコンプレッサは、各々の加算器と関連ある三つの遅延経路を有する。従来の累算器で、遅延経路は各ビットごとに存在していた。
【００５８】
したがって、本発明の望ましい実施例による図７で、ビットの大きさｎと関係なしに、すべてのコンプレッサに対して三つの遅延経路が存在する。従来の技術では“ｎ”個の遅延経路があった。したがって、本発明はモジュラ掛け算の計算速度を顕著に向上させることができる。例えば、従来の１０２４ビット掛け算器は１０２４遅延(全加算器経路)を有する累算器を含んでいたが、本発明の望ましい実施例による経路遅延は、単一プルコンプレッサまたは縮小されたコンプレッサで、３である。この例で、本発明は従来のシステムに比べて３００倍速い。
【００５９】
本発明の他の実施例は、累算器でＣＳＡ及びＣＰＡの間をスイッチングすることができる多様な組み合わせを含む。図１１は、本発明の他の実施例による累算器１７０ｂを示している。累算器１７０ｂはコンプレッサと結合して所望するごとにＣＰＡ及びＣＳＡモードの間をスイッチングするのに使用されるマルチプレクサＭＸＧｎ＋１〜ＭＸＧ０を含む。このような構成で、キャリ電波加算器１７４はリダンダント数(ｒｅｄｕｎｄａｎｔ  ｎｕｍｂｅｒ)をノーマル数(ｎｏｒｍａｌ  ｎｕｍｂｅｒ)に変換しない。図１０の累算器１７０ｂはＣＳＡまたはＣＰＡモードで選択的に動作し、出力は既にノーマル数の形態である。キャリ電波加算器１７４を除去することによって求められるハードウェアの大きさが減少する。
【００６０】
マルチプレクサＭＸＧｎ＋１〜ＭＸＧ０は、コンプレッサ内の全加算器の間の電気的連結を制御することができる。図１１で、初めの二つのビットコンプレッサ３０１、３０２は、低ビットコンプレッサ３０１によって使用される現在キャリワードビット値ＣＩ[ｋ−１]を得るため、次のキャリワードビット値ＣＩ＋１[ｋ]がキャリレジスタ１７２を通過しないという点を除いては、コンプレッサ２０１、２０２と各々類似的に動作する。ＣＩ＋１[ｋ]は、次の高いビットコンプレッサｋ＋１を通過して、高いビットコンプレッサのマルチプレクサグループ４００−２に入力される。
【００６１】
図１２は、本発明の実施例によるｋ番目のビットマルチプレクサグループ４００を示しており、図１３は、図１１に示したマルチプレクサグループ４００が図１０に示した累算器１７０ｂに含まれた詳細回路図である。計算モード(ＣＳＡ使用モードまたはＣＰＡ使用モード)は、スイッチング信号ＳＷによって制御されることができる。本発明の実施例で、ｋ番目のビットのマルチプレクサ４００は、図９の縮小されたコンプレッサ２０３の第２加算器２１２と第３加算器２１３との間に位置する。したがって、第１マルチプレクサ４１０に入力される第１入力４０１は加算器２１２からのＦＳ０２である。第１マルチプレクサ４１０の第２入力４０２は、ｋ−１番目のビットコンプレッサからの現在キャリワードビット値ＣＩ[ｋ−１]である。現在キャリワードビット値は、ｋ−１番目のビットコンプレッサに対する次のキャリワードビット値ＣＩ＋１[ｋ−１]から求められる。第２マルチプレクサ４１１は二つの値が入力され、一つ４０３はｋ−１番目のビットコンプレッサからの第１出力キャリ値ＣＯ１[ｋ−１]であり、他の一つ４０４はｋ番目のビットコンプレッサからの現在和ワードビット値ＳＩ[ｋ]である。現在和ワードビット値は、次の和ワードビット値ＳＩ＋１[ｋ]が和レジスタ１７３を通過しながら求められる。第３マルチプレクサ４１２の二つの入力４０５、４０６は、各々ｋ−１ビットコンプレッサからの第２出力キャリ値ＣＯ２[ｋ−１]及びｋ−１ビットコンプレッサからの次のキャリワードビット値ＣＩ＋１[ｋ−１]である。
【００６２】
スイッチング信号ＳＷは、各マルチプレクサ４１０、４１１、４１２の二つの入力のうちいずれを第３全加算器２１３に伝達するかを決める。どのような値がマルチプレクサ４１０、４１１、４１２を通過するかに従って、キャリ貯蔵加算またはキャリ電波加算の動作モードが決められる。スイッチング信号ＳＷの値が０であれば、スイッチングコンプレッサはキャリセーブ加算モードで動作される。もし、スイッチング信号ＳＷの値が１であれば、コンプレッサの下の全加算器は直列に連結され、キャリ電波加算モードに動作される。全加算器２１３は、次のキャリワードビット値と次の和ワードビット値を先の説明の方法で出力する。
【００６３】
キャリ及び和ワードはＮ回繰り返して計算される。Ｎはｎが偶数である時（ｎ＋２／２であり、ｎが奇数である時（ｎ＋１）／２である。現在反復サイクルで出力されるキャリ及び和の値は、以前反復サイクルのキャリ及び和の値と足され、キャリレジスタ１７２及び和レジスタ１７３に各々足される。最終結果ＳＮ[ｎ：０]は、スイッチング信号ＳＷの変更に従って、レジスタ１７２、１７３に各々貯蔵されたキャリ及び和を足したことによって求められる。
【００６４】
ＣＰＡ加算器１７４とレジスタ１７５を足したことより、マルチプレクサグループ４００の大きさが非常に小さくなり、図１０に示した実施例はハードウェアの大きさを減少させる。
【００６５】
図１４は、本発明の他の実施例による掛け算器２０００を示している。図１４に示した掛け算器２０００は、図２に示した掛け算器１０００の一つのマルチプレクサ１３０を三つのマルチプレクサ１３１、１３２、１３３に取り替えた。また、マルチプレクサが分割されることによって、図２に示したブースレコーダ１４０が、マルチプレクサ１３１、１３２、１３３に提供される信号ＳＦＴ＿ＰＰ、ＮＥＧ＿ＰＰを発生するためのブースレコーダ１９０に取り替えられる。
【００６６】
図１５は、図１４に示したブースレコーダ１９０のコーディングスキームを示しており、図１６は、図１５のコーディングスキームに従ってブースレコーダ１９０を実現した回路の実施例を示している。ブースレコーダ１９０は、インバータ４０１〜４０３とＮＡＮＤゲート４１１〜４１９とを含む。
【００６７】
図１７は、整数モジュラ演算と多項式モジュラ演算を選択的に実行することができる本発明の望ましい実施例による掛け算器を示している。図２に示した掛け算器１０００及び図１４に示した掛け算器２０００は、整数モジュラ演算のみを実行することができたが、図１７に示した掛け算器３０００は、与えられた選択信号ＳＥＬ＿ＦＬＤに従って整数モジュラ演算と多項式モジュラ演算を選択的に実行することができる。この実施例で、掛け算器３０００は、選択信号ＳＥＬ＿ＦＬＤが‘０’である時に、整数モジュラ演算モードを実行し、選択信号ＳＥＬ＿ＦＬＤが‘１’である時に、多項式モジュラ演算モードを実行する。掛け算器３０００の整数モジュラ演算モードは、図２に示した掛け算器１０００の整数モジュラ演算と同一であるので、以下、多項式モジュラ演算モードのみを説明する。また、図１７に示した掛け算器１０００で、図２の掛け算器１０００と同一に動作する構成要素は同一の参照番号を併記する。
【００６８】
モンゴメリーモジュラ掛け算アルゴリズムで、多項式演算を実行する時の掛けの結果はＳ(ｘ)Ｉ＋１：＝(Ｓ(ｘ)Ｉ＋ｂＩＡ(ｘ)＋ｑＩＭ(ｘ))である。先の説明の整数演算と同様に、ｑＩは、(Ｓ(ｘ)Ｉ＋ｂＩＡ(ｘ)＋ｑＩＭ(ｘ))の最下位２ビットが“００”になるように設定されなければならない。そして、ｂＩ∈｛０、１、２、３｝であり、ｂＩＡ∈｛０、Ａ、２Ａ、３Ａ｝である。本発明の実施例では、３Ａを求めるために２Ａ＋Ａを実行する。したがって、ｂＩＡ∈｛０、Ａ、２Ａ、２Ａ＋Ａ｝である。
【００６９】
レジスタ１０１に貯蔵された乗数Ｂは、毎サイクルごとに２ビットずつ右側にシフトされる。乗数Ｂの最下位２ビットｂ１及びｂ０は、分解値選択器５３０に提供される。分解値選択器５３０は、乗数Ｂの最下位２ビットｂ１及びｂ０が入力され、ＰＰＩ[ｎ＋１：０]が０、Ａまたは２Ａになるように、そしてＡＩ[２＋１：０]が０またはＡになるように、信号ＳＥＬ＿Ａ１[１：０]、ＳＥＬ＿Ａ２、ＳＥＬ＿Ａ３を出力する。図１８は、ｂＩＡを求めるための本発明の望ましい実施例による分解値選択器５３０のコーディングスキームを示している。
【００７０】
ＰＰＩ[ｎ＋１：０]を選択するため、分解値選択器５３０は、三つの値０、Ａ及び２Ａのうちの一つを選択するための選択信号ＳＥＬ＿Ａ１[１：０]を、マルチプレクサ５２０に出力する。マルチプレクサ５２０は、多項式モジュラ演算モードである時(すなわち、ＳＥＬ＿ＦＬＤが‘１’である時)に、選択信号ＳＥＬ＿Ａ１[１：０]をマルチプレクサ１３０に出力する。マルチプレクサ１３０は、被乗数Ａの値及び選択信号ＳＥＬ＿Ａ１[１：０]を受け入れ、出力をＡＮＤゲート１５０に出力する。マルチプレクサ５５０は、モード信号ＳＥＬ＿ＦＬＤが‘１’である時に、分解値選択器５３０からの選択信号ＳＥＬ＿Ａ２をＡＮＤゲート１５０に出力する。ＡＮＤゲート１５０は、マルチプレクサ１３０からの入力とマルチプレクサ５５０からの選択信号ＳＥＬ＿Ａ２を受け入れ、第１分解値ＰＰＩ[ｎ＋１：０]を累算器５８０に出力する。
【００７１】
ＡＩ[ｎ＋１：０]を選択するため、分解値選択器５３０は、０またはＡのうちの一つを選択するための選択信号ＳＥＬ＿Ａ３をマルチプレクサ５４０に出力する。マルチプレクサ５４０は、０、被乗数Ａの値及び選択信号ＳＥＬ＿Ａ３を受け入れ、第２分解値ＡＩ[ｎ＋１：０]を出力する。マルチプレクサ５４０の出力のうち、最下位２ビットＡＩ[１：０]はマルチプレクサ５６０と加算器５９１に入力され、残りのビットＡＩ[ｎ＋１：２]は累算器５８０に入力される。
【００７２】
マルチプレクサ５６０は、多項式モジュラ演算モードである時に、マルチプレクサ５４０からの出力のうち最下位２ビットＡＩ[１：０]をＣＷ[１：０]として出力する。マルチプレクサ５６０の出力ＣＷ[１：０]は、累算器５８０に入力される。
【００７３】
加算器５９１は、第１分解値ＰＰＩ[ｎ＋１：１]の最下位２ビットＰＰＩ[１：０]と第２分解値ＡＩ[ｎ＋１：０]の最下位２ビットＡＩ[１：０]を足し、結果を加算器５９２に出力する。ＰＰＩ[１：０]＋ＡＩ[１：０]はｂＩＡ(ｘ)[１：０]である。
【００７４】
加算器５９２は、加算器５９１の出力と和レジスタ５８３に貯蔵された値の下位２ビットＳＩ[１：０]を足し、結果ＳＳＰＰＩ[１：０]をモジュラス選択器５７０に出力する。
【００７５】
モジュラス選択器５７０は、Ｓ(ｘ)Ｉ＋ｂＩＡ(ｘ)＋ｑＩＭ(ｘ)の最下位２ビットが‘００’になることができるように、モジュラスＭＭＩ[ｎ＋１：０]を選択する。モンゴメリーアルゴリズムで、モジュラスの最下位ビットＭＭＩ[０]は常に１である。したがって、Ｓ(ｘ)Ｉ＋ｂＩＡ(ｘ)とＭ[１]からｑＩが決められる。
【００７６】
図１９は、本発明の望ましい実施例によるモジュラス選択器５７０のコーディングスキームを示している。
【００７７】
ＭＭＩ[ｎ＋１：０]を選択するため、モジュラス選択器５７０は、三つの値０、Ｍ及び２Ｍの中の一つを選択するための選択信号ＳＥＬ＿Ｍ１[１：０]を、マルチプレクサ５１０に出力する。マルチプレクサ５１０は、多項式モジュラ演算モードである時(すなわち、ＳＥＬ＿ＦＬＤDが‘１’である時)に、選択信号ＳＥＬ＿Ｍ１[１：０]をマルチプレクサ１２０に出力する。マルチプレクサ１２０は、モジュラスＭの値及び選択信号ＳＥＬ＿Ｍ１[１：０]を受け入れ、出力ＭＭＩ[ｎ＋１：０]を累算器５８０に出力する。
【００７８】
累算器５８０の詳細な回路構成が図２０に示されている。累算器５８０は、図１３に示した累算器１７０ｂと同様に、直列に連結されたｎ＋２個の５−２コンプレッサで構成され、コンプレッサは、プルコンプレッサと縮小されたコンプレッサとで分けられる。ここで、ｎはモジュラス値Ｍのビット長さである。本発明の実施例による累算器５８０は、図１３に示した累算器１７０ｂの構成要素にマルチプレクサグループ６２０とマルチプレクサ６４０、６５０とをさらに含む。マルチプレクサグループ６２０は、マルチプレクサグループ６１０と全加算器６３０との間に位置する。
【００７９】
整数モジュラ演算モードＳＥＬ＿ＦＬＤ＝‘０’で、マルチプレクサグループ６１０からの出力は、マルチプレクサグループ６２０を通じて全加算器６３０に入力され、全加算器６３０から出力されるキャリは、低いビットコンプレッサのキャリ入力に伝達される。累算器５８０の整数モジュラ演算モードは、図１３に示した累算器１７０ｂの動作と同一である。
【００８０】
図２１は、本発明の実施例によるｋ番目のビットマルチプレクサグループ６１０、６２０を示している。マルチプレクサグループ６１０は、図１２に示したマルチプレクサグループ４００と同一に第１乃至第３マルチプレクサ６１１、６１２、６１３を有し、第１乃至第６入力６０１〜６０６を受け入れる。図１２及び図２１に示したマルチプレクサグループ４００、６１０は引き出し番号だけ異なり、同一信号を受け入れて同一に動作するので、詳細な説明は省略する。
【００８１】
マルチプレクサグループ６２０は、多項式モジュラ演算モードの間マルチプレクサ５４０からの第２分解値ＡＩ[ｎ＋１：２]を第１分解値ＰＰＩ[ｎ＋１：２]と足すために提供される。第２分解値ＡＩ[ｎ＋１：２]の下位２ビットは、マルチプレクサ５６０を通じてＣＷ[１：０]として出力されて、累算器５８１に入力される。したがって、ＣＷ[１：０]は累算器５８０によって第１分解値の下位２ビットＰＰＩ[１：０]と足される。マルチプレクサグループ６２０は、第４及び第５マルチプレクサ６２１、６２２を含む。第４マルチプレクサ６２１は、第２マルチプレクサ６１２からの出力とマルチプレクサ５４０からの第２分解値ＡＩ[ｋ]を受け入れる。第５マルチプレクサ６２２は、第３マルチプレクサ６１３からの出力と‘０’を受け入れる。第４及び第５マルチプレクサ６２１、６２２は整数モジュラ演算モードＳＥＬ＿ＦＬＤ＝‘０’で、第２及び第３マルチプレクサ６１２、６１３からの入力を各々出力し、多項式モジュラ演算モードＳＥＬ＿ＦＬＤ＝“１”でＡＩ[ｋ]及び０を出力する。マルチプレクサ６２１、６２２の出力Ｉ１２、Ｉ１３は全加算器６３０に提供される。
【００８２】
再び、図２０を参照すると、ｋ番目のビットマルチプレクサ６４０、６５０は、多項式モジュラ演算モードＳＥＬ＿ＦＬＤ＝‘１’の間第２分解値ＭＩ[ｋ]を、ｋ番目のコンプレッサのキャリ入力に選択的に提供する。これは、第１分解値ＭＭＩ[ｎ＋１：０]と第２分解値ＭＩ[ｎ＋１：０]を足してｑＩＭ(ｘ)を求めるためである。
【００８３】
マルチプレクサ６５０は、モジュラス選択器５７０からの選択信号ＳＥＬ＿Ｍ２に応答して、モジュラスＭ[ｋ]または‘０’を第２分解値ＭＩ[ｋ]としてマルチプレクサ６４０に出力する。マルチプレクサ６４０は、整数モジュラ演算モードＳＥＬ＿ＦＬＤ＝‘０’である時に、キャリレジスタ５８２のｋ番目のキャリビットを、そして多項式モジュラ演算モードＳＥＬ＿ＦＬＤ＝‘１’である時に、マルチプレクサ６５０からの第２分解値ＭＩ[ｋ]を、低いビットコンプレッサのキャリビットとして提供する。
【００８４】
図２に示した整数モジュラス演算のための掛け算器１０００に、いくつかの構成要素を付加した図１７の掛け算器３０００は、整数モジュラス演算だけではなく、多項式モジュラス演算を実行することができる。
【図面の簡単な説明】
【００８５】
【図１】モジュラス選択器、ブースレコーダ及び累算器を利用して実現された、一般的なモンゴメリーモジュラ掛け算アルゴリズムのハードウェア構成を示している図面である。
【図２】本発明の望ましい実施例によるモジュラ掛け算器の全体的な構成を示している図面である。
【図３】本発明の望ましい実施例によるモジュラスレコーダのコーディングスキームを示している図面である。
【図４】モジュラスレコーダの具体的な構成例を示している図面である。
【図５】本発明の望ましい実施例によるブースレコーダのコーディングスキームを示している図面である。
【図６】ブースレコーダの具体的な構成例を示している図面である。
【図７】ＣＳＡを使用した本発明の実施例を示している図面である。
【図８】プルコンプレッサの一例である。
【図９】縮小されたコンプレッサの一例である。
【図１０】図９に示した縮小されたコンプレッサを含む累算器を詳細に示している図面である。
【図１１】ＣＰＡを使用した本発明の実施例である。
【図１２】本発明の実施例によるｋ番目のビットマルチプレクサグループである。
【図１３】図１１に示したマルチプレクサグループが図１０に示した累算器に含まれた詳細回路図である。
【図１４】本発明の他の実施例による掛け算器である。
【図１５】図１４に示したブースレコーダのコーディングスキームである。
【図１６】図１５のコーディングスキームに従ってブースレコーダを実現した回路の実施例である。
【図１７】整数モジュラ演算と多項式モジュラ演算とを選択的に実行することができる本発明の望ましい実施例による掛け算器である。
【図１８】ｂＩＡを求めるための本発明の望ましい実施例による分解値選択器のコーディングスキームを示している図面である。
【図１９】本発明の望ましい実施例によるモジュラス選択器のコーディングスキームを示している図面である。
【図２０】図１７に示した累算器の詳細な回路構成である。
【図２１】本発明の実施例によるｋ番目のビットマルチプレクサグループを示している。
【図１】
2004326112.tif 000004
【図２】
2004326112.tif 000005
【図３】
2004326112.tif 000006
【図４】
2004326112.tif 000007
【図５】
2004326112.tif 000008
【図６】
2004326112.tif 000009
【図７】
2004326112.tif 000010
【図８】
2004326112.tif 000011
【図９】
2004326112.tif 000012
【図１０】
2004326112.tif 000013
【図１１】
2004326112.tif 000014
【図１２】
2004326112.tif 000015
【図１３】
2004326112.tif 000016
【図１４】
2004326112.tif 000017
【図１５】
2004326112.tif 000018
【図１６】
2004326112.tif 000019
【図１７】
2004326112.tif 000020
【図１８】
2004326112.tif 000021
【図１９】
2004326112.tif 000022
【図２０】
2004326112.tif 000023
【図２１】
2004326112.tif 000024