JP2001067206A - モジュラー乗算を実行するためのシステム並びに方法 - Google Patents

モジュラー乗算を実行するためのシステム並びに方法

Info

Publication number
JP2001067206A
JP2001067206A JP2000219243A JP2000219243A JP2001067206A JP 2001067206 A JP2001067206 A JP 2001067206A JP 2000219243 A JP2000219243 A JP 2000219243A JP 2000219243 A JP2000219243 A JP 2000219243A JP 2001067206 A JP2001067206 A JP 2001067206A
Authority
JP
Japan
Prior art keywords
multiplication
multiplication unit
partition
bit
integer
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.)
Pending
Application number
JP2000219243A
Other languages
English (en)
Other versions
JP2001067206A5 (ja
Inventor
Dominic Hugo Symes
ユーゴ サイムズ ドミニク
James Seale David
ジェームズ シール デビッド
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.)
ARM Ltd
Original Assignee
ARM Ltd
Advanced Risc Machines 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
Application filed by ARM Ltd, Advanced Risc Machines Ltd filed Critical ARM Ltd
Publication of JP2001067206A publication Critical patent/JP2001067206A/ja
Publication of JP2001067206A5 publication Critical patent/JP2001067206A5/ja
Pending legal-status Critical Current

Links

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/728Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic using Montgomery reduction

Landscapes

  • 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)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • General Engineering & Computer Science (AREA)
  • Complex Calculations (AREA)

Abstract

(57)【要約】 【課題】 大規模な高速記憶装置を必要とすることなく
大きな数のモジュラー乗算を実現するシステム及び方法
を提供する。 【解決手段】 モジュラー乗算を行う被乗数と乗数を固
定ビットで構成された複数の区部に区分して、モジュラ
ー乗算をこの様に区分された区部で構成されるブロック
毎に実行し、この乗算を順に処理することでモジュラー
乗算される被乗数、乗数の大きさに関係なく演算中に使
用される高速記憶装置のサイズを固定することが可能で
ある。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明はモジュラー乗算を実
行するためのシステム並びに方法に係わり、更に詳細に
はnを法としたモジュラー乗算axbx2-N、ここでa,b
およびnはnを端数とするNビット整数である。整数
a,bおよびnは整数を指定するためにNビット全てを
必要とするわけではないことが理解されるであろうが、
その様な数値はNビット数としてその最上位ビットに適
当な個数のゼロを追加することでNビットで指定できる
ことは明らかであろう。
【0002】
【従来の技術】nを法とするモジュラー乗算axbx2-N
実施することを必要とする場合が多数存在し、この特別
な型式のモジュラー乗算はしばしばモントゴメリ乗算と
呼ばれる。
【0003】モントゴメリ乗算を使用する1つの特別な
実施例は、スマート・カードまたはその他の安全装置で
使用されるRSA暗号化/暗号解読である。RSAは大
きな整数、例えば512または1024ビット長の大き
な整数の迅速なモジュラー乗算を必要とし、それはモジ
ュラー累乗法を実施するためである。モントゴメリ乗算
技術はモジュラー演算結果の効率的な方法を、これらの
演算が生成し積算された部分積に対して補正を加えるこ
とで提供する。
【0004】モントゴメリ乗算を通常に実施する際に、
この乗算はwビット長のワード内で取り扱われなければ
ならない、ここでwは典型的に16または32である。
モントゴメリ・アルゴリズムは(N+w+1)ビットの
格納レジスタ”c”を必要とし、これは部分積が生成さ
れた際の保持と積算、またモントゴメリ補正係数である
暫定的wビット数mを保持し積算するためのものであ
る。
【0005】モントゴメリ・アルゴリズムに関する以下
の説明の中で、表記b[j]はbのj番目のwビット・ワー
ドを示す、すなわちb[0]はbの最下位wビット・ワード
であり、b[s-1]はbの最上位wビット・ワードであり、
ここでs=N/w、すなわちNビット数内のワード数であ
る。
【0006】モントゴメリ補正係数mはn[0]を法とする
最下位wビット・ワードから導かれた定数n0pを使用す
る。この定数n0pは以下の関係に従う: n[0]xn0p=-1 mod 2W 上記関係が与えられると、標準のモントゴメリ・アルゴ
リズムは下記の擬似コードで表現できる: c:=0 for j=0 to s-1 do c:=c+axb[j] //部分積の計算および積算 m:=(c[0]xn0p)mod2W //モントゴメリ補正係数の計算 c:=c+nxm //モントゴメリ変形の適用 c:=c>>w //常にゼロであるcの下位ワード削除 endfor result:=c //最終(N+1)ビット結果がcの中に入る
【0007】実際、上記擬似コード内のaxb[j]およびnx
m乗算は、固定サイズ乗算積算(MAC)演算に分解さ
れる、例えばw=16場合32x16ビットMAC演算
である。このMACのサイズは一方でデータ処理量を最
大とし、もう一方で不使用領域を最少としてタイミング
要求を容易にする点で良好なバランスである。しかしな
がら、理解されるようにモントゴメリ乗算が効率的な方
法で実行されるためには、乗算ブロックは入力Nビット
整数a,bおよびn、並びにN+w+1ビットを必要と
する生成された部分積を格納するための十分高速な記憶
装置にアクセスしなければならない。乗算ブロックをハ
ードウェアで実現する際には、高速記憶装置は典型的に
ハードウェア・レジスタの形式をとり、一方ソフトウェ
アで実現する際には高速記憶装置はキャッシュまたはS
RAMの形式を取るはずである。
【0008】その様な従来技術による手法の1例は、S
IDSA製の単独RSA補助プロセッサsRSAC2048Aであ
り、これは最大4個の2048ビット・ワードを保持す
るための256個の32ビット・ワードの基板装着メモ
リの大規模バンクを使用している。
【0009】理解されるであろうが大きなNビット整数
に対して、かなりな量の高速記憶装置が必要とされ、こ
れらのNビット数に対する現在の流れはサイズが増す傾
向にあり、従ってモントゴメリ乗算を実行するためのシ
ステムの記憶装置に対する要求も増大している。
【0010】
【発明の要約】第1の特徴に鑑み、本発明はnを法とす
るモジュラー乗算axbx2-Nを実行するためのシステムを
提供しており、ここでa,bおよびnはNビット整数で
あり、このシステムは:Yビット数とZビット数とを乗
算するための乗算器と;整数aを各々がYの倍数である
複数の第1区部に区分し、整数bを各々がZの倍数であ
る複数の第2区部に区分するための区分ロジックと;乗
算器を制御して前記第1区部の1つと前記第2区部の1
つとを乗算する乗算シーケンスを実行して、乗算ユニッ
トで実行される後続の演算で使用するための多数の出力
被演算数(オペランド)を生成するための演算を適用す
る乗算ユニットと;前記第1区部の1つと前記第2区部
の1つを、乗算ユニットで実行された先行の演算から前
記出力被演算数の予め定められたものに従って、各々の
第1区部が各々の第2区部と乗算されるまで乗算ユニッ
トの中に順番に入力するための制御装置とを含む。
【0011】本発明によれば、Yビット数とZビット数
とを乗算するための乗算器が具備されており、これは例
えば32ビットと16ビットの乗算を実行するように構
成されている。次に本発明によれば、Nビット整数aお
よびbはそれぞれ複数の第1および第2区部に区分され
ていて、ここで各々の第1区部のサイズはYの整数倍で
あり、また各々の第2区部のサイズはZの整数倍であ
る。好適な実施例において、この区分を実行するために
使用される区分ロジックはソフトウェアで実現されてい
る。
【0012】更に、乗算ユニットが具備されており、こ
れは乗算器を制御して乗算のシーケンスを実行させて、
第1区部の1つと第2区部の1つを乗算し、乗算ユニッ
トで実行される後続の演算で使用するための複数の出力
被演算数を生成することが可能である。制御装置が具備
されていて、これは第1区部の1つと第2区部の1つ
を、乗算ユニットの中に、乗算ユニットで実行された先
行の演算からの出力被演算数(オペランド)の予め定め
られたものに沿って順番に入力し、各々の第1区部が各
々の第2区部と乗算出来るようにしている。
【0013】この手法により、固定サイズで入力整数a
bおよびnのサイズに無関係な乗算ユニットが提供さ
れる。これらの整数は複数の区部に区分され、各々の区
部は乗算ユニットで取り扱うことの出来るサイズであ
り、次に制御装置が具備されていて、これらの区部が乗
算ユニットで演算される順番が管理される。この方法は
増大する大規模高速記憶装置への要求を軽減し、高速記
憶装置のサイズはNビット整数の最終サイズに依存する
のではなく、これらの整数が区分けされた区部の予め定
められたサイズに依存する。
【0014】例えば、1つの実施例において、Nビット
整数が区分される区部は256ビット長であり、従って
高速記憶装置、例えば乗算ユニットがハードウェアで実
現される場合はハードウェア・レジスタ、はNビット整
数全てを格納するのではなくて、整数a,bおよびnの
256ビット区部のみを格納できる必要がある。従って
Nビット整数上の全モントゴメリ乗算は、乗算ユニット
を制御装置の制御下で連鎖形式で数回コールする事で実
行される。従って、被乗数aと乗数bが768ビット数
で、乗算ユニットがこれらの数の256ビット区部を取
り扱うように構成されている場合、乗算ユニットは乗算
を256x256ビットサイズのブロックの3x3配列
に分解して使用される。同様に、被乗数aと乗数bが1
024ビット数の場合、乗算ユニットは乗算を256x
256ビットサイズのブロックの4x4配列に分解して
使用される。
【0015】従って、理解されるように本発明は大規模
高速記憶装置に対する増大する要求を軽減するのみなら
ず、Nビット整数のサイズに無関係に固定サイズの乗算
ユニットを使用することを可能とする。従って、Nビッ
ト整数のサイズが増大しても同一の乗算ユニットを、要
求されたモジュラー乗算を実行するための乗算ユニット
のシーケンシャルな演算を管理する適切な制御を行う制
御装置と共に使用することが出来る。
【0016】理解されるように第1および第2区部は乗
算ユニットで操作するのに好適な任意の適切なサイズに
選択することが可能である。しかしながら、好適に第1
および第2区部のサイズは共にKであり、ここでNはK
の倍数である。
【0017】好適な実施例において、出力被演算数は行
積算値を含み、整数aの最下位ビットを表す第1区部以
外の第1区部Vが、整数bの最上位ビットを表す第2区
部以外の第2区部Wと乗算される場合、生成された行積
算値が第1区部V−1と第2区部W+1を乗算するため
に乗算ユニットで実行される後続の演算で使用するため
に出力される。
【0018】更に、好適な実施例において、出力被演算
数は列桁上げ値を含み、整数aの最上位ビットを表す第
1区部以外の第1区部Vが、第2区部Wと乗算される場
合、生成された列桁上げ値が第1区部V+1と第2区部
Wを乗算するために乗算ユニットで実行される後続の演
算で使用するために出力される。
【0019】好適に、区分ロジックは更に整数nを複数
の第3区部に区分するように構成されており、各々の第
3区部のサイズはYの倍数であり、乗算ユニットは乗算
器を制御して前記第3区部の1つと補正値とを乗算する
ための乗算シーケンスを実行させるように構成されてい
る。
【0020】典型的に、第1区部と第3区部は同一サイ
ズである。この実施例において、補正値は第2区部と同
一サイズになるように計算されている。
【0021】好適な実施例において、乗算ユニットが整
数aの最下位ビットを表す第1区部を含んで乗算を実行
するようになされている場合、乗算ユニットは乗算ユニ
ットから出力された行積算値がゼロの値を有するような
補正値を計算するように構成されている。
【0022】好適に特定の第2区部に対して、乗算ユニ
ットがその第2区部が任意の第1区部と乗算されるよう
にする場合、同一の補正値が使用される。
【0023】乗算ユニットはハードウェアで実現するこ
とも、また代わって乗算器を制御するために使用される
ソフトウェアで実現することも可能である。しかしなが
ら好適な実施例において、乗算ユニットはハードウェア
で実現されており、乗算器と制御装置で供給される第1
および第2区部と、乗算ユニットで実行される演算中に
生成された出力被演算数を格納するための複数のレジス
タとを含む。
【0024】第2の特徴に鑑み、本発明はnを法とする
モジュラー乗算axbx2-Nを実行するための方法を提供し
ており、ここでa,bおよびnはNビット整数であり、
この方法は:(a)Yビット数とZビット数とを乗算す
るための乗算器を提供し;(b)整数aを各々がYの倍
数である複数の第1区部に区分し;(c)整数bを各々
がZの倍数である複数の第2区部に区分し;(d)乗算
器を制御して前記第1区部の1つと前記第2区部の1つ
とを乗算する乗算シーケンスを実行して、乗算ユニット
で実行される後続の演算で使用するための複数の出力被
演算数を生成するための演算を適用する乗算ユニットを
採用し;(e)前記第1区部の1つと前記第2区部の1
つを、乗算ユニットで実行された先行の演算から前記出
力被演算数の予め定められたものに従って乗算ユニット
の中に順番に入力し、そして各々の第1区部が各々の第
2区部と乗算されるまでステップ(d)を繰り返す、以
上のステップを含む。
【0025】第3の特徴に鑑み、本発明はnを法とする
モジュラー乗算axbx2-Nを実行するためのコンピュータ
システムを動作させるためのコンピュータプログラムま
たはコンピュータプログラム製品を提供しており、ここ
でa,bおよびnはNビット整数であり、このコンピュ
ータシステムはYビット数とZビット数とを乗算するた
めの乗算器を有し;コンピュータプログラムは;整数a
を各々がYの倍数である複数の第1区部に区分し、整数
bを各々がZの倍数である複数の第2区部に区分するよ
うに動作するように構成された区分ルーチンと;乗算器
を制御して前記第1区部の1つと前記第2区部の1つと
を乗算する乗算シーケンスを実行して、乗算ユニットで
実行される後続の演算で使用するための複数の出力被演
算数を生成するための演算を適用するように構成された
乗算ユニットの動作を管理するための制御装置とを含
み;制御装置が前記第1区部の1つと前記第2区部の1
つを乗算ユニットで実行された先行の演算から前記出力
被演算数の予め定められたものに従って、各々の第1区
部が各々の第2区部と乗算されるまで乗算ユニットの中
に、順番に入力するよう動作するように構成されてい
る。
【0026】先に説明したように、乗算ユニットはハー
ドウェアまたはソフトウェアの何れでも実現できる。し
かしながら、ソフトウェアで実現される場合、好適な実
施例ではコンピュータプログラムは更に乗算ユニットを
含む。
【0027】
【課題を解決するための手段】本発明を例として示すだ
けの好適な実施例を参照して添付図と共に更に詳細に説
明する。
【0028】
【好適な実施例の説明】図1は本発明の好適な実施例に
基づくシステムを図示するブロック図である。本発明に
よれば処理ユニット10、例えばCPUがバス20経由
で読みとり専用メモリ(ROM)30とランダム(随
意)アクセスメモリ(RAM)40に接続されている。
処理ユニット10で作動されるソフトウェアはROM3
0内部に格納されている一方、RAM40は処理ユニッ
ト10で操作されたパラメータの値を格納するための作
業領域メモリとして使用される。好適な実施例におい
て、このデータ処理装置は大きなNビット整数上でモン
トゴメリ乗算を実行するために使用され、従って典型的
にスマートカードまたはその他の安全装置の中で使用さ
れるRAS暗号化/暗号解読で使用することが出来る。
好適な実施例において、ここで乗算加速ブロックと呼ば
れる個別のハードウェア・モントゴメリ乗算ユニット5
0が、入力被演算数の部分に演算を行うために使用され
ている。続いて実行ソフトウェアがROM30内に格納
されている処理ユニット10を使用して、乗算ユニット
50を制御して乗算ユニット50内の入力被演算数の複
数区部上で実行される乗算を連鎖結合することによりモ
ントゴメリ乗算を実行させる。
【0029】これに代わる実施例では、モントゴメリ乗
算ユニット50を例えばROM30内に格納されている
ソフトウェア処理ルーチンで実現することが可能である
ことは理解できよう、またこの実施例では処理ユニット
10は好適に基本乗算器、例えば32ビット数と16ビ
ット数との乗算へのアクセスと、例えばSRAMまたは
キャッシュの様な使用される入力被演算数の複数区部を
格納するための何らかの高速記憶素子、およびソフトウ
ェア乗算ユニットで生成される出力被演算数を有する。
しかしながら以下の説明の目的で乗算ユニットはハード
ウェアの中に組み込まれていて、ハードウェア・レジス
タと乗算器とが好適に接続されていると仮定する。乗算
ユニット50の1つの実現例が図2に図示されている。
【0030】図2に図示されている乗算加速ブロック5
0は好適な実施例ではKビットのサイズで、以下の「状
態」を有する: Kビット数sa (aの一区部) Kビット数sb (bの一区部) Kビット数sn (nの一区部) Kビット数sm (mの一区部) Kビット数sacc (行積算器) (K+17)ビット数c (列桁上げ) 1ビット・フラグNR (新たな行フラグ) 16ビット数n0p (nを法として導き出される
定数)
【0031】従って、乗算加速器ブロック50は、値
c,sn,sa,sb,smおよびsaccをそれぞれ
格納するための複数セットのパイプライン・レジスタ1
10,120,130,140,150および160を
有する。更に別のレジスタ170も定数n0pを格納す
るために具備されていて、これは先に説明したように、
法n[0]の最下位wビット・ワードから導かれたもの
である。
【0032】図3はこれらのレジスタの内容を更に詳細
に図示している。好適な実施例において、乗算加速器ブ
ロック50で取り扱われる値のサイズKは256ビット
に選択されており、従って入力被演算数sa,snおよ
びsbのレジスタの長さは256ビットである。同様に
値saccおよびsm用レジスタの長さもまた256ビ
ットであり、一方桁上げ値c用のレジスタの長さは実際
273ビットである、それは先に説明したように桁上げ
レジスタcの長さはN+w+1ビット必要であり、ここ
でw=16だからである。
【0033】図3に示され、また図2から明らかなよう
に、値sa,snおよびcは乗算積算(MAC)ブロッ
ク100への32ビット単位での入力であり、従ってs
aおよびsnはそれぞれレジスタ130および120の
中に32ビット単位で8個書き込まれる。同様にcの値
は関連するレジスタ110の中に32ビット単位で格納
される。
【0034】これも図3から明らかなように、値sb,
sacc,smおよびn0pは全てMACブロック10
0に16ビット単位で提供され、従って値sb,sac
cおよびsmはそれらのそれぞれのレジスタ140,1
60および150の中に16個の16ビット単位で書き
込まれる。図2に図示されるように、これは実際は8個
の32ビット幅レジスタを用いて実施され、マルチプレ
クサ145,155および165がレジスタの出力部に
具備されており、要求に基づいて上位16ビットまたは
下位16ビットを選択する。
【0035】図2に図示されるデータ経路の流れは、図
7から図12の流れ図を参照して後程更に詳細に説明す
る。
【0036】MACユニット100の基本動作が図4に
図示されている。理解されるであろうが、好適な実施例
では単一MACユニットが具備されているが、その機能
は種々の方法で実施できて、例えば個別の乗算器と加算
ブロックを制御して希望する乗算加算動作を実行させる
ようにもできる。図4に図示されているように、MAC
ユニット100は符号無し32ビット被乗数(mcand)
と符号無し16ビット乗数(mplier)とを乗算し、その
結果を符号無し32ビット整数(sum1)と符号無し16
ビット整数(sum2)の中に加算して48ビット結果(ma
cresult)を生成することを、全て単一クロック周期の
中で行う。従ってmacresultは次の式で表わすことがで
きる:
【外1】
【0037】48ビット結果の異なるセグメントが種々
の操作途中で使用される。この48ビット結果は次の説
明で示されるように決してオーバフローすることは無
い。
【0038】mcandとmplierの最大値はそれぞれ232
1および216−1である。従って最大乗算器出力は:
【数1】
【0039】sum1とsum2の最大値での加算は:
【数2】
【0040】従って、macresultの最大値は48ビット
数のフルスケールに丁度等しくなる。
【0041】図5はMAC入力ポートへのレジスタ・デ
ータの可能性のある信号源と、macresultの値を出力す
る結果の部分に対する行き先を図式的に示している。値
macresultの種々の部分の使用に付いては図7から図1
2の流れ図を参照して更に詳細に説明する。
【0042】本発明の好適な実施例のデータ処理装置の
動作を詳細に説明する前に、図6を参照すると、これは
乗算加速ブロック50がソフトウェアで周期制御されて
最終モジュラー乗算結果を生成する様子を図式的に示し
ている。この例の中で、モントゴメリ乗算装置への入力
a,bおよびnは768ビット数であり、乗算加速ブロ
ック50は一度に256ビット区部の上で作動するよう
に構成されている。図6はレジスタcおよびsacc内
の出力被演算数の値が、乗算加速ブロック50で実行さ
れる演算の個別シーケンスの終わりに、後続の演算でど
のように使用されるかを図示している。これは図7から
図12の流れ図を参照して更に詳細に説明する。
【0043】好適な実施例の乗算加速ブロック50をコ
ールすると、下記の機能が実行される(パラメータNR
は新たな行を指定するために使用され、新たな行が開始
される際に1にセットされる、例えば図6を参照すると
NRは段1,4および7で1に等しくセットされる): If NR=0 then: Temp =c+sacc+saxsb+snxsm Sacc =temp のビット0からK−1 C =temp のビットKから2K If NR=1 then: 入力のsmの値は無視される。代わりにsmは上記の計
算の中でsacc=0となる値にセットされる。すなわち:s
mは、 (c+sacc+saxsb+snxsm)==0 mod 2k となるようにセットされ、従って c= (c+sacc+saxsb+snxsm)のビットKから2K
【0044】先に説明したように本発明の好適な実施例
において、レジスタcの長さはK+17ビットに増やさ
れており、また余分の16ビット状態値n0pが具備さ
れている。n0pは(ユニークな)16ビット値で次の
ように書かれる: nxn0p= -1 modulo216
【0045】本発明の好適な実施例を説明する目的で、
Kは32の倍数と仮定している。従ってパラメータCa
はK/32に等しいようにセットされ、一方パラメータ
CbはK/16に等しいようにセットされている。xを
任意のsa,snまたはcとするとき、表現x[i]は以下の流
れ図の中でxの32ビット部分のi番目を示すように使
用される。同様に、yを任意のsb,smまたはsaccとする
とき、表現y[j]はyの16ビット部分の第j番目を示す
ように使用される。従って乗算加速ブロック50は図7
から図10の流れ図に示すように動作する。
【0046】図7に示されるように、第1ステージは乗
算加速ブロック50が入力sa,sb,sm,sn,sacc,c,NR,n0p,
CaおよびCbを受信する。続いてステップ310で変数j
がゼロに等しくセットされ、乗算加速ブロックで演算さ
れる256x256ブロックの最初の16ビット副行を
選択する。従って図6を参照すると、第1繰り返しの中
で、乗算加速ブロックは図6の最上行の右端に図示され
ている256x256のブロック1上で演算するように
構成され、ステップ310で最初の16ビット幅副行が
選択される。
【0047】処理工程は次にステップ320に進み、こ
こで演算は副行jに対して実施され、この処理工程は図
8に更に詳細に図示されている。
【0048】図8に図示されるように、加速ブロック副
行j上で実行される演算はステップ400で開始され、
ステップ410に進み、ここで下記の計算が実行され
る: c=c+saxsb[j]+sacc[j]
【0049】この計算を実行する方法が更に詳細に図9
を参照して図示されている。図9に図示されるように、
ステップ500においてパラメータrowcarryがsacc[j]
に等しくセットされ、iはゼロに等しいようにセットさ
れる。続いて、ステップ510で下記の計算がMACユ
ニット100内で実行される: macresult=sa[i]xsb[j]+c[i]+rowcarry
【0050】図2および図5を参照すると、この演算は
sa[i]を入力mcandとしてマルチプレクサ175を経由し
て入力し、sb[j]をマルチプレクサ145および180
を経由して入力mplierとして入力し、c[i]を入力sum1と
してマルチプレクサ185経由で入力し、そしてsacc
[j]を入力sum2としてマルチプレクサ165および19
0を経由して入力して実行されることが分かる。
【0051】パラメータrowcarryは続いてmacresultの
上位16ビットに更新され、これは図2および図5から
分かるようにマルチプレクサ190の入力に戻される一
方で、c[i]はmacresultの下位32ビットに等しくなる
ように更新され、これは図2および図5から分かるよう
にマルチプレクサ195を経由してレジスタ110に戻
される。
【0052】処理工程は次にステップ520に進み、こ
こでiは1だけ更新され、次にステップ530でiがCa
より小さいか否か、すなわち演算されるべきsaの32
ビット区部が更に存在するか否かが判定される。存在す
る場合は、処理工程はステップ510に戻り、一方iが
Caより小さくない場合は、処理工程はステップ540に
進み、ここで以下の計算がMACブロック100の中で
実行される。 c[Ca]=c[Ca]+rowcarry
【0053】この処理工程はrowcarryの値をcの現在値
に加算するために使用される。
【0054】処理工程は次にステップ550で終了し、
これで図8のブロック410で設定された計算が完了す
る。
【0055】従って図8に戻ると、次に処理工程はステ
ップ420に進み、ここでNRの値が1に等しいか否か
の判定がなされ、これは乗算加速ブロックが新たな行を
取り扱うことを示している(例えば図6を参照すると、
ブロック1,4または7に対して演算がなされるか否か
が判定される)。NRが1に等しい場合は、処理工程は
ステップ430に進みsm[j]の値を計算する。これを実
行するためにMACブロック100は次の演算を実行す
るように構成されている: macresult=c[0]xn0p+0+0
【0056】図2を参照すると、この式はc[0]を入力mc
andとしてマルチプレクサ175経由で入力し、一方n0p
を入力mplierとしてマルチプレクサ180経由で入力し
て実行できる。次にsm[j]の値がmacresultの下位16ビ
ットとして与えられ、これは図2および図5から分かる
ようにレジスタ150に戻される。
【0057】処理工程は次にステップ440に進むか、
またはNRが1に等しくない場合はステップ420から
直接440に進む。ブロック440において、下記の計
算が実行される: c=c+snxsm[j]
【0058】パラメータsacc[j]はcの下位16ビット
に等しいようにセットされ、次にcは16ビット右にシ
フトされたcの前回値に等しくセットされる。
【0059】この計算を実行する方法が更に詳細に図1
0に説明されている。
【0060】図10に図示されるように、ステップ60
0で下記の計算が実行される: macresult=sn[0]xsm[j]+c[0]+0
【0061】図2から明らかなように、この計算はMA
Cブロック100の中で、sn[0]を入力mcandとしてマル
チプレクサ175経由で入力し、sm[j]を入力mplierと
してマルチプレクサ155および180経由で入力し、
そしてc[0]を入力sum1としてマルチプレクサ185経由
で入力して実行できる。
【0062】続いて、ステップ610で、図2および図
5に図示されているように、sacc[j]がmacresultの下位
16ビットと等しくなるようにセットされ、レジスタ1
60に戻されたこの値で、パラメータpiperegがmacresu
ltの中間16ビットに等しいようにセットされ、パラメ
ータrowcarry(行桁上げ)がmacresultの上位16ビッ
トにセットされてマルチプレクサ190に入力される。
【0063】処理工程は続いてステップ620へ進み、
ここでiは1に等しくなるようにセットされ、次に処理
工程はステップ630に進み、ここで下記の計算が実行
される: macresult=sn[i]xsm[j]+c[i]+rowcarry
【0064】図2から分かるように、この計算はMAC
ブロック100によって、sn[i]を入力mcandとしてマル
チプレクサ175経由で入力し、sm[j]を入力mplierと
してマルチプレクサ155および180経由で入力し、
c[i]を入力sum1としてマルチプレクサ185経由で入力
し、そしてrowcarryを入力sum2としてマルチプレクサ1
90経由で入力して実行できる。続いてあたいc[i-1]が
16を乗算されたmacresultの下位16ビットに等しく
なるように更新され、図2に図示されるようにpipereg
に加算され、この値はマルチプレクサ195を経由して
レジスタ110に戻される。
【0065】次にpiperegの値がmacresultの中間16ビ
ットに等しくなるように更新され、一方rowcarryの値は
macresultの上位16ビットに等しくなるように更新さ
れる。
【0066】ステップ640でiは1増加更新され、ス
テップ650でiがCaより小さいか否かが判定される。
小さい場合は処理工程はステップ630に戻り、iがCa
より小さく無い場合、これはsnの全ての32ビット区部
が処理されたことを意味し、従って処理工程はステップ
660に進む。
【0067】ステップ660で、macresultの値はc[Ca]
+rowcarryに等しくなるように更新され、この演算はM
ACブロック100でc[Ca]の値を入力sum1として入力
し、入力sum2をrowcarryとして入力して実行される。
【0068】次にc[Ca-1]の値がmacresultの下位16ビ
ットに216を乗算して、piperegの現在値を加算したも
のに等しくなるように更新される。先に説明したよう
に、また図2から明らかなように、この値は続いてマル
チプレクサ195を経由してレジスタ110に戻され
る。次にc[Ca]の値がmacresultの16から33ビットに
等しくなるようにセットされ、この値は0または1であ
る。処理工程はステップ670で終了し、これによって
図8のステップ440が完了する。図8の処理工程は次
にステップ450で終了する。
【0069】従ってこの段階で図7のステップ320が
完了し、要求される演算は乗算加速ブロック50で取り
扱われる特定の256x256ブロック内の副行jの上
で実行される。処理工程はここで各々の副行に対して繰
り返される必要があり、従ってステップ330でjは1
だけ増加更新され、次にjがCbより小さいか否かが判定
される。小さい場合は処理工程はステップ320に戻
り、同一の演算シーケンスが次の副行に対して実行され
るようにする。jがCbより小さくない場合は、全ての副
行に対して演算されたことであり、従って処理工程はス
テップ350に進み、ここで乗算加速ブロック50の演
算は対象としている特定の256x256ブロックに対
して完了する。
【0070】乗算加速ブロック50がどの様にして特定
の256x256ブロックに対して本発明の好適な実施
例に基づいて演算するかを説明したので、次に乗算加速
ブロック50の演算を互いに連鎖的に結合して全モジュ
ラー乗算を実行させる方法を図11および図12の流れ
図を参照して説明する。
【0071】ステップ700で、パラメータa,b,
n,zおよびn0pが確立され、zはnを法とするモジ
ュラー乗算axbx2-Nの結果を保持することを意図してい
る。
【0072】ステップ710で、zの値がゼロに等しく
なるようにセットされ、そしてまたzcもゼロに等しく
なるようにセットされる、zcはzからの1ビット桁上
げで示される1ビットフラグである。ステップ720
で、パラメータCaがK/32に等しくなるようにセット
され、一方ステップ730でパラメータCbがK/16に
等しくなるようにセットされる。続いてステップ740
でパラメータJがゼロに等しくなるようにセットされ
る。
【0073】処理工程は次にステップ750に進み、こ
こで1行全体に対して演算が行われる、例えば図6を参
照すると演算される第1行はブロック1,2および3で
作られる行である。
【0074】ステップ750でsmに対するKビット値
が次のように選択される: zc.z+axb{J}+nxsm=0 mod 2K ここで zc.z=zcx2N+z でb{J}はbのJ番目の256ビ
ット区部を表す。
【0075】次に下記の演算がzc.zの値を決定するため
に実行される: set zc.z =(zc.z+axb{J}+nxsm)/2K
【0076】この処理工程は更に図12を参照して説明
する。図12に図示されるように、ステップ800でパ
ラメータcがゼロに等しくなるようにセットされ、sb
はb{J}に等しくなるようにセットされ、Iはゼロに等し
くセットされそしてNRは1に等しくなるようにセット
される。次にステップ810で、saはa{I}に等しくな
るようにセットされ、snはn{I}に等しくなるようにセ
ットされそしてsaccはz{I}に等しくなるようにセットさ
れる、ここで{I}はa,nまたはzの第I番目の256
ビット区部を示す。次に乗算加速ブロック50はステッ
プ820で作動し、処理工程は先に図7から図10を参
照して説明したように実行される。
【0077】続いてステップ825で、Iがゼロに等し
いか否かが判定され、等しい場合、これはsaccがゼロに
等しいことを意味し、処理工程は直接ステップ840に
進む。そうでない場合、処理工程はステップ830に進
み、ここでz{I-1}はsaccの値に等しくなるようにセット
される。次に処理工程はステップ840に進む。ステッ
プ840でIの値が1だけ増加更新され、NRがゼロに
等しくなるようにセットされる。次にステップ850で
IがN/Kより小さいか否かが判定され、小さい場合、
これは乗算加速ブロック50で取り扱われるべき別のブ
ロックがその行内に存在することを示している。従っ
て、処理工程はステップ810に戻る。しかしながらI
がN/Kより小さく無い場合、処理工程はステップ86
0に進み、ここで1つの値TEMPがc+zcに等しくなる
ようにセットされ、従ってK+1ビットを有するはずで
ある。次にz{N/K-1}がTEMPの下位Kビットに等しくなる
ようにセットされ、一方zcはTEMPの上位ビットに等し
くなるようにセットされる。続いて処理工程はステップ
870で終了し、これによって図11のステップ750
で行に対して実行された演算が完了する。
【0078】次に処理工程はステップ760に進み、こ
こでJの値が1だけ増加更新され、次にステップ770
でJがN/Kよりも小さいか否かが判定される。小さい
場合、これは実行されるべき行が更に存在することを示
しており、処理工程はステップ750に戻る。そうでな
い場合は、処理工程はステップ780に進み、ここでzc
がゼロに等しいか否かが判定される。等しい場合、更な
る作業は不要であり、zの値がモジュラー乗算の結果を
与える。従って処理工程はステップ795で終了する。
しかしながら、zcがゼロに等しくない場合、ステップ7
90でzはz-nに等しくなるようにセットされzが確実
にNビット出力となるようにしている。zはnを法とす
るaxbx2-Nの結果を保持しているので、nをその結果か
ら引き算してもnを法とするaxbx2-Nの有効な結果を与
えることは明らかであろう。次に処理工程はステップ7
95で終了する。
【0079】好適な実施例の上記の説明はNがKの倍数
の状況に基づくものであった。しかしながら、好適な実
施例の中でCaおよびCbは乗算ユニット50の中で構成可
能である。Caの値は1からK/32(含む)の範囲で、
またCbは1からK/16(含む)の範囲でセット出来
る。この特別なフレキシビリティーにより、乗算ブロッ
ク50は図7から図10で説明した動作に関して、Nが
Kの倍数でない場合(Nは32の倍数であるが)も取り
扱うことを可能とする。図11および図12で図示され
た区分ロジックは、NがKの倍数でない場合、下記に説
明するような修正変更を必要とする。
【0080】図6は図11および図12のアルゴリズム
を図示する。NがKの倍数で無い場合、行の終わりおよ
び列の終わりのブロック(図6のブロック3,6,7,
8,9)はフルサイズのブロックでは無いことが理解さ
れよう。実際、RがNをKで除算した余りとすると、行
の終わりのブロックのサイズはRxKビット、列の終わ
りではKxRビット、また左下隅のブロックではRxR
ビットとなるはずである。NxNを法とする乗算を完了
するために、どの様な特別な操作がこれらの不完全なブ
ロックに対して実行されなければならないかを次に説明
する。このアルゴリズムの残りの部分は図11および図
12で説明した通りである。
【0081】サイズNxMビットの一般ブロックに対し
て、ここでLおよびMはK以下の32の倍数とすると
き、図12のステップ820で乗算加速ブロックをコー
ルする際に、CaをL/32に、そしてCbをM/16にセ
ットする。
【0082】ステップ800を、sbをbの次のMビット
にセットするように変更する。ステップ810を、sa,s
n,saccをそれぞれa,n,zの次のLビットにセットす
るように変更する。
【0083】ブロックが正方形で無い場合(LはMに等
しく無い)、ステップ810は更に別の機能を必要とす
る。L<Mの場合、これは行の終わりの場合であるが、
saccのビットLからM−1をcのビットLからM−1に
セットし、cのビットLからL+31をzcの値にセット
し、そしてzcをcのビットMにセットする。L>Mの場
合、これは列の終わりの場合であるが、saccのビットM
からL−1をcのビットMからL+16に加算する(c
のこれらのビットはこの場合、0または1を含むはずで
ある)。
【0084】saccの下位Mビットをzの中に書き込むよ
うにステップ830を変更する。M<Lの場合、cを
(L−M)ビットシフトダウンし、シフトアウトされた
(L−M)ビットをzの中に書き込むようにステップ8
40を変更する。
【0085】TEMPをzc+(cの下位L+1ビット)にセ
ットするようにステップ860を変更する。TEMPの下位
Lビットをzに、またTEMPの上位ビットをzcに書き込
む。
【0086】これでNが32の倍数ではあるがKの倍数
で無い場合に必要なアルゴリズムの変更が完了する。
【0087】本発明の特定の実施例を説明してきたが、
理解されるように本発明はこれらに限定されるものでは
なく、多くの修正変更および追加を本発明の範囲内で行
うことが可能であろう。例えば、添付の請求項の特徴を
種々組み合わせることが、本発明の範囲から逸脱するこ
となく独立する請求項の特徴に基づいて行うことが可能
である。
【図面の簡単な説明】
【図1】図1は本発明の好適な実施例に基づくシステム
のブロック図である。
【図2】図2は本発明の好適な実施例に基づく乗算ユニ
ット内のデータ経路を図示する。
【図3】図3は図2に図示された乗算ユニットの被演算
数と作業レジスタを更に詳細に図示する。
【図4】図4は図2の乗算ユニット内の乗算累積ブロッ
クの動作を図示する。
【図5】図5は図2の乗算ユニット内の乗算累積ユニッ
トの種々のポートに関するデータ源および行き先を図示
する。
【図6】図6は好適な実施例のシステムがどの様にして
乗算ブロックを互いに連鎖して使用できるかを図示す
る。
【図7】図7は本発明の好適な実施例の乗算ユニットの
動作を図示する流れ図。
【図8】図8は本発明の好適な実施例の乗算ユニットの
動作を図示する流れ図。
【図9】図9は本発明の好適な実施例の乗算ユニットの
動作を図示する流れ図。
【図10】図10は本発明の好適な実施例の乗算ユニッ
トの動作を図示する流れ図。
【図11】図11はNビット数a,bおよびn上の全モ
ジュラー乗算を実行するために乗算ブロックを互いに連
鎖する際に使用される動作を図示する流れ図。
【図12】図12はNビット数a,bおよびn上の全モ
ジュラー乗算を実行するために乗算ブロックを互いに連
鎖する際に使用される動作を図示する流れ図。
【符号の説明】
10 処理ユニット 20 通信バス 30 読み取り専用メモリ 40 随意アクセスメモリ 50 乗算加速ブロック 110,120,130,140,150,160,1
70 レジスタ 145,155,165,175,180,185,1
90,195 マルチプレクサ

Claims (12)

    【特許請求の範囲】
  1. 【請求項1】 nを法とするモジュラー乗算axbx2-N
    実行するためのシステムであって、ここでa,bおよび
    nはNビット整数であり:Yビット数とZビット数とを
    乗算するための乗算器と;整数aを各々がYの倍数であ
    る複数の第1区部に区分し、整数bを各々がZの倍数で
    ある複数の第2区部に区分するための区分ロジックと;
    乗算器を制御して前記第1区部の1つと前記第2区部の
    1つとを乗算する乗算シーケンスを実行して、乗算ユニ
    ットで実行される後続の演算で使用するための多数の出
    力被演算数(オペランド)を生成するための演算を適用
    する乗算ユニットと;前記第1区部の1つと前記第2区
    部の1つを、乗算ユニットで実行された先行の演算から
    前記出力被演算数の予め定められたものに従って、各々
    の第1区部が各々の第2区部と乗算されるまで乗算ユニ
    ットの中に、順番に入力するための制御装置とを含む、
    前記システム。
  2. 【請求項2】 請求項1記載のシステムにおいて、第1
    および第2区部のサイズが共にKであり、ここでNはK
    の倍数である、前記システム。
  3. 【請求項3】 請求項1記載のシステムにおいて、出力
    被演算数が行積算値を含み、整数aの最下位ビットを表
    す第1区部以外の第1区部Vが、整数bの最上位ビット
    を表す第2区部以外の第2区部Wと乗算される場合、生
    成された行積算値が第1区部V−1と第2区部W+1を
    乗算するために乗算ユニットで実行される後続の演算で
    使用するために出力される、前記システム。
  4. 【請求項4】 請求項1記載のシステムにおいて、出力
    被演算数が列桁上げ値を含み、整数aの最上位ビットを
    表す第1区部以外の第1区部Vが、第2区部Wと乗算さ
    れる場合、生成された列桁上げ値が第1区部V+1と第
    2区部Wを乗算するために乗算ユニットで実行される後
    続の演算で使用するために出力される、前記システム。
  5. 【請求項5】 請求項1記載のシステムにおいて、区分
    ロジックが更に整数nを複数の第3区部に区分するよう
    に構成されており、各々の第3区部のサイズはYの倍数
    であり、乗算ユニットは乗算器を制御して前記第3区部
    の1つと補正値とを乗算するための乗算シーケンスを実
    行させるように構成されている、前記システム。
  6. 【請求項6】 請求項5記載のシステムにおいて、第1
    区部および第3区部が同一サイズである、前記システ
    ム。
  7. 【請求項7】 請求項5記載のシステムにおいて、乗算
    ユニットが整数aの最下位ビットを表す第1区部を含ん
    で乗算を実行するようになされている場合、乗算ユニッ
    トは乗算ユニットから出力された行積算値がゼロの値を
    有するような補正値を計算するように構成されている、
    前記システム。
  8. 【請求項8】 請求項7記載のシステムにおいて、特定
    の第2区部に対して、乗算ユニットがその第2区部が任
    意の第1区部と乗算されるようにする場合、同一の補正
    値が使用される、前記システム。
  9. 【請求項9】 請求項1記載のシステムにおいて、乗算
    ユニットが乗算器と制御装置で供給される第1および第
    2区部と、乗算ユニットで実行される演算中に生成され
    た出力被演算数を格納するための複数のレジスタとを含
    む、前記システム。
  10. 【請求項10】 nを法とするモジュラー乗算axbx2-N
    を実行するための方法であって、ここでa,bおよびn
    はNビット整数であり: (a)Yビット数とZビット数とを乗算するための乗算
    器を提供し; (b)整数aを各々がYの倍数である複数の第1区部に
    区分し; (c)整数bを各々がZの倍数である複数の第2区部に
    区分し; (d)乗算器を制御して前記第1区部の1つと前記第2
    区部の1つとを乗算する乗算シーケンスを実行して、乗
    算ユニットで実行される後続の演算で使用するための複
    数の出力被演算数を生成するための演算を適用する乗算
    ユニットを採用し; (e)前記第1区部の1つと前記第2区部の1つを乗算
    ユニットの中に、乗算ユニットで実行された先行の演算
    から前記出力被演算数の予め定められた1つと一緒に順
    番に入力し、そして各々の第1区部が各々の第2区部と
    乗算されるまでステップ(d)を繰り返す、以上のステ
    ップを含む、前記方法。
  11. 【請求項11】 nを法とするモジュラー乗算axbx2-N
    を実行するためのコンピュータシステムを動作させるた
    めのコンピュータプログラムであって、ここでa,bお
    よびnはNビット整数であり、このコンピュータシステ
    ムはYビット数とZビット数とを乗算するための乗算器
    を有し;コンピュータプログラムは:整数aを各々がY
    の倍数である複数の第1区部に区分し、整数bを各々が
    Zの倍数である複数の第2区部に区分するように動作す
    るように構成された区分ルーチンと;乗算器を制御して
    前記第1区部の1つと前記第2区部の1つとを乗算する
    乗算シーケンスを実行して、乗算ユニットで実行される
    後続の演算で使用するための複数の出力被演算数を生成
    するための演算を適用するように構成された乗算ユニッ
    トの動作を管理するための制御装置とを含み;制御装置
    が前記第1区部の1つと前記第2区部の1つを乗算ユニ
    ットの中に、乗算ユニットで実行された先行の演算から
    前記出力被演算数の予め定められた1つと一緒に、各々
    の第1区部が各々の第2区部と乗算されるまで順番に入
    力するよう動作するように構成されている、前記コンピ
    ュータプログラム。
  12. 【請求項12】 請求項11記載のコンピュータプログ
    ラムにおいて、このコンピュータプログラムが更に乗算
    ユニットを含む、前記コンピュータプログラム。
JP2000219243A 1999-07-21 2000-07-19 モジュラー乗算を実行するためのシステム並びに方法 Pending JP2001067206A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
GB9917137.3 1999-07-21
GB9917137A GB2352309B (en) 1999-07-21 1999-07-21 A system and method for performing modular multiplication

Publications (2)

Publication Number Publication Date
JP2001067206A true JP2001067206A (ja) 2001-03-16
JP2001067206A5 JP2001067206A5 (ja) 2007-01-25

Family

ID=10857681

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2000219243A Pending JP2001067206A (ja) 1999-07-21 2000-07-19 モジュラー乗算を実行するためのシステム並びに方法

Country Status (3)

Country Link
US (1) US6598061B1 (ja)
JP (1) JP2001067206A (ja)
GB (1) GB2352309B (ja)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2002003608A1 (en) * 2000-06-29 2002-01-10 The State Of Oregon Acting By And Through The State Board Of Higher Education On Befalf Of The University Of Oregon Method and apparatus for incomplete modular arithmetic
GB2383435A (en) * 2001-12-18 2003-06-25 Automatic Parallel Designs Ltd Logic circuit for performing modular multiplication and exponentiation
US7266577B2 (en) * 2002-05-20 2007-09-04 Kabushiki Kaisha Toshiba Modular multiplication apparatus, modular multiplication method, and modular exponentiation apparatus
US20040010530A1 (en) * 2002-07-10 2004-01-15 Freking William L. Systolic high radix modular multiplier
US7260595B2 (en) * 2002-12-23 2007-08-21 Arithmatica Limited Logic circuit and method for carry and sum generation and method of designing such a logic circuit
US7185039B2 (en) * 2003-05-19 2007-02-27 Lsi Logic Corporation Multiplier for modular exponentiation
KR20050088506A (ko) * 2004-03-02 2005-09-07 삼성전자주식회사 다중 세정도를 지원하는 확장형 몽고메리 모듈러 곱셈기
US20050257026A1 (en) * 2004-05-03 2005-11-17 Meeker Woodrow L Bit serial processing element for a SIMD array processor
US7519644B2 (en) * 2004-05-27 2009-04-14 King Fahd University Of Petroleum And Minerals Finite field serial-serial multiplication/reduction structure and method
US20060140399A1 (en) * 2004-12-28 2006-06-29 Young David W Pre-calculation mechanism for signature decryption
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
US8799343B2 (en) * 2011-09-22 2014-08-05 Intel Corporation Modular exponentiation with partitioned and scattered storage of Montgomery Multiplication results

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0576262B1 (en) * 1992-06-25 2000-08-23 Canon Kabushiki Kaisha Apparatus for multiplying integers of many figures
US5513133A (en) * 1992-11-30 1996-04-30 Fortress U&T Ltd. Compact microelectronic device for performing modular multiplication and exponentiation over large numbers
FR2726667B1 (fr) * 1994-11-08 1997-01-17 Sgs Thomson Microelectronics Procede de mise en oeuvre de multiplication modulaire selon la methode montgomery
WO1998019231A1 (en) * 1996-10-31 1998-05-07 Motorola Limited Co-processor for performing modular multiplication
US6085210A (en) * 1998-01-22 2000-07-04 Philips Semiconductor, Inc. High-speed modular exponentiator and multiplier
FR2775369B1 (fr) * 1998-02-26 2001-08-03 Sgs Thomson Microelectronics Procede de mise en oeuvre d'une multiplication modulaire specifique relative a la methode de montgomery
US6240436B1 (en) * 1998-03-30 2001-05-29 Rainbow Technologies, Inc. High speed montgomery value calculation
DE69828150T2 (de) * 1998-03-30 2005-12-15 Rainbow Technologies Inc., Irvine Vom Rechenaufwand her effizientes modulares Multiplikationsverfahren und Gerät

Also Published As

Publication number Publication date
GB9917137D0 (en) 1999-09-22
GB2352309A (en) 2001-01-24
US6598061B1 (en) 2003-07-22
GB2352309B (en) 2004-02-11

Similar Documents

Publication Publication Date Title
US8051124B2 (en) High speed and efficient matrix multiplication hardware module
US6539368B1 (en) Neural processor, saturation unit, calculation unit and adder circuit
KR101202445B1 (ko) 프로세서
US4525796A (en) Pipelined operation unit for vector data
JP7361133B2 (ja) 深層学習アルゴリズムのための効率的なアーキテクチャ
WO2008103885A2 (en) Parallel architecture for matrix transposition
US6269383B1 (en) Method and apparatus for integer arithmetic
CN111353126A (zh) 分块矩阵乘法运算系统
JP2001067206A (ja) モジュラー乗算を実行するためのシステム並びに方法
US20140136588A1 (en) Method and apparatus for multiplying binary operands
JPH10254681A (ja) 自乗を計算するための算術回路
US6424987B1 (en) Method for the implementation of a specific modular multiplication operation relating to the montgomery method
US4860249A (en) Multizone array processor implementing two sided zone buffers with each side being dynamically configured as a working or I/O side
JP3333779B2 (ja) 行列演算装置
JP2006508464A (ja) ルックアップテーブルを備える乗算器
JPH0345420B2 (ja)
US7278090B2 (en) Correction parameter determination system
WO2020084721A1 (ja) 演算処理装置及び演算処理装置の制御方法
JPH1063647A (ja) 行列演算装置
JP2778478B2 (ja) 相関演算プロセッサ
JP2001160736A (ja) デジタルフィルタ回路
JP2002215386A (ja) 剰余演算装置、剰余演算方法、および、べき乗剰余演算方法
EP0444847A2 (en) Enhanced processor for linear recurrences
JPH05120321A (ja) 行列計算の演算方法
JPH08166941A (ja) 線形計算方法

Legal Events

Date Code Title Description
A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20061206

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20061206

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090130

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20090710