JP2001524698A - マルチプレシジョン整数演算用の装置 - Google Patents

マルチプレシジョン整数演算用の装置

Info

Publication number
JP2001524698A
JP2001524698A JP2000522511A JP2000522511A JP2001524698A JP 2001524698 A JP2001524698 A JP 2001524698A JP 2000522511 A JP2000522511 A JP 2000522511A JP 2000522511 A JP2000522511 A JP 2000522511A JP 2001524698 A JP2001524698 A JP 2001524698A
Authority
JP
Japan
Prior art keywords
liu
output
register
input
large 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.)
Granted
Application number
JP2000522511A
Other languages
English (en)
Other versions
JP4201980B2 (ja
Inventor
マイケル ジェイ. サビン
マーク ダブリュー. ヘイシン
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Atmel Corp
Original Assignee
Atmel Corp
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 Atmel Corp filed Critical Atmel Corp
Publication of JP2001524698A publication Critical patent/JP2001524698A/ja
Application granted granted Critical
Publication of JP4201980B2 publication Critical patent/JP4201980B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related 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/722Modular multiplication
    • 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/53Multiplying only in parallel-parallel fashion, i.e. both operands being entered in parallel
    • G06F7/5324Multiplying only in parallel-parallel fashion, i.e. both operands being entered in parallel partitioned, i.e. using repetitively a smaller parallel parallel multiplier or using an array of such smaller multipliers
    • 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

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

Abstract

(57)【要約】 大整数の乗算およびモジュラ簡約を実行するためのシステムと方法。このシステムは少なくとも1つの大整数ユニット(21)を備え、各大整数ユニットは乗算器(22)、加算器(23)、およびレジスタ(24)を備える。第1と第2の乗算器入力が乗算器に印加され、第1および第2の加算器入力が加算器に印加される。乗算器の1つの出力も加算器に印加される。相補ゲート(35)およびラッチレジスタ(34)を含む大整数ユニットアレイ(39)に複数の大整数ユニットを接続することができる。乗算器の第2の出力が次の大整数ユニットの第1の加算器入力に印加され、追加の大整数ユニットがアレイに追加されたときに処理速度が向上する。

Description

【発明の詳細な説明】
【0001】 (発明の背景) 本発明は、大きな整数を扱う算術計算に関し、さらに詳細には、大きな整数の
乗算およびモジュラ簡約(modular reduction)を実行する手段に関する。
【0002】 (関連技術の説明) 本発明は、RSA Laboratories著「The Public−K
ey Cryptography Standards」(RSA Data
Security,Inc.,Redwood City,CA,1993年1
1月)のRSA方式、W.DiffieおよびM.Hellman著「New
Directions in Cryptography」(IEEE Tra
nsactions on Information Theory,Vol.
IT−22,No.6,1977年6月,pp.74〜84)のDiffie−
Heilman 方式、および「Digital Signature Sta
ndard」(FIPS Publication 186,National
Institute of Standards and Technolo
gy,U.S.Department of Commerce,1994年5
月18日)のDSA方式などの公開鍵暗号法の応用が動機となっている。これら
の応用では、モジュラべき乗の計算ステップ、つまり、A、B、およびPをマル
チプレシジョン整数とした場合に「AB mod P」の形の計算を行う必要が ある。モジュラべき乗(modular exponentiation)は、計算量の多い処理手順で
あるため、特に安価な計算装置で実行する場合には時間がかかる。
【0003】 計算装置は通常、固定サイズの基本単位でデータを処理するように設計されて
いる。この基本データ単位のことを「ワード」と呼び、「b」ビットで構成され
る。bの値は、計算装置の設計時に選択する。bの値としては、8、16、32
、または64ビットが標準である。ワードは、範囲0≦x≦W−1(ただしW=
b)の非負整数xを表現するために使用される。
【0004】 W−1よりも大きな整数Xを表現するには、マルチプレシジョン表現を使用す
る。0≦X≦Wn−1で、nをある正整数とした場合、Xは次式で表すことがで きる。
【0005】 X=x{n−1}*Wn-1+x{n−2}*Wn-2...+x{1}*W+x {0}、 ただし、各X{j}は、範囲0≦x{j}≦W−1(j=0,1,...,n
−1)内にあるものとする。したがって、整数Xはn個のワードx{0},x{
1},...,x{n−1}で表され、ワードx{j}はWjの係数である整数 を表す。与えられたワードサイズbと、与えられたワード数nについて、Xのマ
ルチプレシジョン表現は一意的である。
【0006】 モジュラべき乗は、マルチプレシジョン整数に対するいくつかの演算を必要と
する。このような演算の1つに乗算がある。それぞれnワードのマルチプレシジ
ョン表現を持つ2つの整数XおよびYが与えられた場合、積Z=X*Yの計算を 計算装置にプログラムする作業は簡単である。この処理手順は、中学校で教わる
多桁数の乗算の「積算および加算」法と大差ない。この処理手順の複雑さは2次
であり、つまり、計算しなければならない「内積」の数がn2である。積Zは、 表現するのに2n個のワードを必要とする。
【0007】 実際の公開鍵アプリケーションでは、1回のモジュラべき乗の計算にこのよう
な乗算を数百回あるいは数千回実行する必要があり、それぞれの乗算では数十あ
るいは数百ワード長の整数を扱うのである。単純な計算装置だと、1回のモジュ
ラべき乗の計算時間は数分程度である。電子商取引など多くのアプリケーション
では、これは長すぎて使えない。
【0008】 乗算は、モジュラべき乗に関わる唯一の演算ではない。他に、モジュラ簡約、
つまり、「Pを法とする(modulo P)」演算を適用することにより積Z
を2n個のワードからn個のワードに減らす演算がある。モジュラ簡約の複雑度
は、乗算のそれとほとんど同じであり、2つともモジュラべき乗の総計算時間に
対する寄与はほぼ同じである。
【0009】 (発明の概要) 本発明では、計算装置に以下の演算を効率よく実行する能力があれば、マルチ
プレシジョン乗算とモジュラ簡約(modular reduction)を高速に計算できると いう観察結果を利用している。
【0010】 Z←Z±(X*Y) この演算で、Xはmワードで表される整数であり、YとZはそれぞれnワード
で表される整数である。つまり、nはモジュラべき乗の計算で使用する法におけ
るワードの個数で、mはnよりも小さな値である。マルチプレシジョン乗算およ
びモジュラ簡約は、それぞれこの演算を約n/m回行うことにより実行でき、モ
ジュラべき乗の計算に対しては合計2n/m回の演算となる。
【0011】 本発明は、計算装置に追加することで、計算装置がこの演算を効率よく実行す
ることができるようにするコプロセッサを開示する。計算装置から命令が送られ
ると、コプロセッサは、X、Y、およびZのワードをメモリから読取り、Zの新
しいワードをメモりに書き込むことにより演算Z←Z±(X*Y)を実行する。 計算装置は、これらの演算をマルチプレシジョン乗算、モジュラ簡約、そして最
終的に、モジュラべき乗演算にアセンブルする。
【0012】 このコプロセッサの基本ブロックは大整数ユニット(LIU;large i
nteger unit)である。コプロセッサは、1つまたは複数のLIUを
備えており、それぞれ同じものである。各LIUは、乗算器、加算器、レジスタ
、およびORゲートを含む。複数のLIU同士を接続して、相補ゲート、ラッチ
レジスタ、および出力ゲートを備える1つのLIUアレイを構成できる。アレイ
内に含まれるLIUの個数が多ければ多いほど、べき乗計算は高速化される。
【0013】 本発明の追加の目的および利点は、一部は以下の説明で示し、一部は説明から
明らかであるか、または本発明を実施することで知ることができる。本発明の目
的および利点はまた、添付の特許請求の範囲で特に指摘した手段および組合せを
用いて実現し達成することができる。
【0014】 (好ましい実施形態の詳細な説明) 本発明のこの好ましい実施形態をここで詳しく参照するが、その例は添付図面
に示されており、複数の図面にわたって類似の参照番号は類似の要素を示すもの
とする。
【0015】 この説明全体を通して、「X〜nワード」という表記は、前記の形式によるマ
ルチプレシジョン表現を使って整数Xが表現されていることを意味する。
【0016】 また、いくつかの演算子を導入すると便利である。演算子「/」は、剰余を無
視する整数除算を表すのに使用する。演算子「%」は、整数剰余演算、つまり除
算の結果求められる剰余を表すのに使用する。この表記を使うと、X/W=x{
n−1}*Wn-2+x{n−2}*Wn-3...+x{2}*W+x{1}、またX
% w=x{0}となる。
【0017】 本発明は、計算装置に追加することで、計算装置がこの演算を効率よく実行す
ることができるようにするコプロセッサを開示する。計算装置11におけるコプ
ロセッサ14の配列を図1に示す。コプロセッサ14は、計算装置がメモリ12
との通信に使用するバスを共有する。バスは、計算装置のワードサイズbとマッ
チする。計算装置から命令が送られると、コプロセッサは、X、Y、およびZの
ワードをメモリ12から読取り、Zの新しいワードをメモり12に書き込むこと
により演算Z←Z±(X*Y)を実行する。計算装置は、これらの演算をマルチ プレシジョン乗算、モジュラ簡約(modular reduction)、そして最終的に、モ ジュラべき乗演算にアセンブルする。
【0018】 図2は大整数ユニット(LIU)21を示す図である。コプロセッサ14はn
個のLIUを含んでおり、それぞれは互いに同一である。LIUの個数により、
演算Z←Z±(X*Y)のオペランド内のワード数Xが決まる。モジュラべき乗 の実行時間は、1/mにだいたい比例する。システム設計者向けに、LIUを増
やせばべき乗計算が高速化されるという、複雑さと速度とのトレードオフ関係を
考慮したスケーラブルなアーキテクチャを提供している。
【0019】 大整数ユニット(LIU) 図2に示されている大整数ユニット(LIU)21では、1ビット幅の信号を
破線で、複数ビット幅の信号を実線で示しており、ビット数が明記されている。
ビット数は、他の実施形態では異なる場合があり、本発明はそのような別の実施
形態をも含めるものとする。
【0020】 第1の乗算器入力m1と第2の乗算器入力m2は、大整数ユニット21への被
乗数入力である。第1の乗算器入力m1と第2の乗算器入力m2はそれぞれ、b
ビット整数を表すワードである。第1の乗算器入力m1と第2の乗算器入力m2
は乗算器22に送られ、積信号p=m1*m2が出力されるが、ただし「*」は乗
算を表すものとする。
【0021】 0≦m1≦(W−1)および0≦m2≦(W−1)なので、積信号pの範囲は
0≦p≦(W−1)2である。つまり、積信号pを表現するには2bビット必要 だということである。積信号pは、上位部分積信号(high product
signal)phと下位部分積信号(low product signa
l)plに分けられる。上位部分積信号phは、積信号pの上位bビットとして
、下位部分積信号plは下位bビットとして構成される。したがって、p=ph
*W+pl(0≦ph≦(W−1)かつ0≦pl≦(W−1))である。上位部 分積信号phは大整数ユニット21の出力信号であり、下位部分積信号plは内
部で使用される。
【0022】 第1の加算器信号alと第2の加算器信号a2は、大整数ユニット21への加
算器入力である。それぞれbビット整数を表すワードである。第1の加算器信号
a1と第2の加算器信号a2は加算器23に送られる。加算器23はさらに、下
位部分積信号plと、2ビットの値であるキャリー信号cを受け取る。加算器2
3は、第1の総和信号qd(qd=a1+a2+pl+c)を出力する。第1の
加算器信号a1、第2の加算器信号a2、または下位部分積信号plの可能な最
大値はW−1である。キャリー信号cに使用可能な最大の値は3である。したが
って、第1の総和信号qdの最大可能値は3*(W−1)+3=3Wであり、総 和信号qdを表現するにはb+2ビットが必要である。
【0023】 加算器23の出力の第1の総和信号qdは、レジスタ24にラッチされる。レ
ジスタ24はb+2ビット幅である。第1の総和信号qdの値は、大整数ユニッ
ト21へのクロックclk入力が脈動されるとレジスタ24の出力に転送される
【0024】 レジスタ24の出力は第2の総和信号qである。第2の総和信号qの値は次回
クロックclk入力が脈動されるまで、または大整数ユニット21のクリアcl
r入力が脈動されるまで適所にとどまる。
【0025】 レジスタ24は、大整数ユニット21のclr入力信号を脈動することでクリ
アすることができる。clr入力が脈動されると、レジスタ24の出力ビットは
0にクリアされる。出力は、clk入力が次回脈動されるまで0のままであり、
このときに、第1の総和信号qdの値が出力へ転送される。
【0026】 レジスタ24の出力の第2の総和信号qは、キャリー信号cと総和信号sに分
けられる。キャリー信号cは、第2の総和信号qの上位2ビットとして、総和信
号sは下位bビットとして構成される。したがってq=cW+sであり、0≦s
≦W−1、0≦c≦3である。総和信号sは大整数ユニット21の出力信号であ
る。
【0027】 キャリー入力信号ciは大整数ユニット21へのキャリー入力であり、キャリ
ー出力信号coはキャリー出力である。それぞれ1ビットの値である。キャリー
出力信号coは、ORゲート29を使用して、キャリー入力信号ciと第2の総
和信号qを構成するビットの論理ORとして計算される。つまり、キャリー出力
信号coは、キャリー入力信号ciが0のときと、第2の総和信号qの各ビット
が0のときに値が0となる。そうでない場合には、キャリー出力信号coは値1
を持つ。
【0028】 補助キャリー信号caは、ORゲート25を使用し、キャリー信号cを構成す
る2ビットの論理ORとして計算される。つまり、補助キャリー信号caは、キ
ャリー信号cの各ビットが0の場合に値が0であり、そうでない場合には、補助
キャリー信号caは値1となる。
【0029】 LIUアレイ 説明 図3に示されているように、複数の大整数ユニットを相互接続して1つのLI
Uアレイを形成することができる。それとは別に、LIUアレイにはLIUを1
つだけ含めることができる。図3では、各信号は1ビット幅またはbビット幅の
いずれかである。1ビット幅の信号は破線で示されており、bビット幅の信号は
実線で示されている。
【0030】 図3は、4つの大整数ユニットLIU{0}、LIU{1}、LIU{2}、
LIU{3}を相互接続して1つのLIUアレイ39を形成する場合を示してい
る。一般に、大整数ユニットはいくつでも相互接続できる。簡単のため、ここで
の説明ではまず図4に示されているように4つの大整数ユニットの場合について
考察し、その後、他の数の大整数ユニットの場合に一般化する。
【0031】 第1のデータ信号yはLIUアレイ39への入力であり、それぞれの大整数ユ
ニットLIU{0}、LIU{1}、LIU{2}、LIU{3}の第1の乗算
器入力m1に印加される。
【0032】 第2のデータ信号は複数の要素x{0}、x{1}、x{2}、およびx{3
}を持つ。各要素はそれぞれ、LIUアレイ39の各大整数ユニットの第2の乗
算器入力m2に接続される、つまり各要素は、それぞれLIU{0}、LIU{
1}、LIU{2}、LIU{3}の第2の乗算器入力m2に接続される。
【0033】 第3のデータ信号zはLIUアレイ39への入力であり、相補ゲート35の入
力に接続されている。この相補ゲート35は排他OR(XOR)ゲートGATE
0であり、第3のデータ信号zの各ビットを減算信号と組み合わせる。この減算
信号自体はLIUアレイ39への入力信号である。減算信号が非アクティブ状態
、つまり論理0であれば、第3のデータ信号zのビットは、相補ゲート35の通
過中に影響を受けない。減算信号がアクティブ状態、つまり論理1であれば、第
3のデータ信号の各ビットは相補ゲート35を通るときに論理相補ビットで置き
換えられる。つまり、1のビットは0のビットで、0のビットは1のビットで置
き換えられるということである。相補ゲート35の出力は、第1の大整数ユニッ
トLIU{0}の第1の加算器入力a1に接続されている。
【0034】 出力信号aはLIUアレイ39の出力であり、出力ゲート36の出力から取り
出される。出力ゲート36は排他OR(XOR)ゲートGATE1であり、第1
の大整数ユニットLIU{0}の出力である総和信号sの各ビットを組み合わせ
る。減算信号が非アクティブ状態であれば、第1大整数ユニットの総和信号sの
ビットは出力ゲート36を通るときに影響を受けない。減算信号がアクティブ状
態であれば、第1大整数ユニットの総和信号sのビットは、その論理相補ビット
で置き換えられる。
【0035】 ラッチレジスタ34はbビット幅のレジスタREG0である。ラッチレジスタ
34の入力は第4の大整数ユニットLIU{3}の上位部分積信号phに接続さ
れ、ラッチレジスタ34の出力は第4の大整数ユニットLIU{3}の第2の加
算器信号a2入力に接続されている。そこで、ラッチレジスタ34は、1クロッ
クパルス前に第4の大整数ユニットから上位部分積信号phの値をラッチし、そ
の値をそのクロックパルスの後に第4の大整数ユニットの第2の加算器信号a2
入力に戻す。ラッチレジスタ34は、図2の大整数ユニット21のレジスタ24
のclr入力とまったく同じ動作をするクリアcrl入力を持つ。
【0036】 クロック信号clkはLIUアレイ39への入力であり、それぞれの大整数ユ
ニットLIU{0}、LIU{1}、LIU{2}、LIU{3}のclk入力
とラッチレジスタ34のclk入力に接続される。クロック入力が脈動されると
、それぞれの大整数ユニット内のレジスタの内容とラッチレジスタ34の内容は
同時に更新される。
【0037】 クリア信号clrはLIUアレイ39への入力であり、それぞれの大整数ユニ
ットLIU{0}、LIU{1}、LIU{2}、LIU{3}のclr入力と
ラッチレジスタ34のclr入力に接続される。クリア入力が脈動されると、そ
れぞれの大整数ユニット内のレジスタの内容とラッチレジスタ34の内容は同時
に0にクリアされる。
【0038】 キャリーフロー信号cyはLIUアレイ39の出力であり、第4の大整数ユニ
ットLIU{3}のco出力に接続される。このキャリーフロー信号は、オーバ
ーフローまたはアンダーフローが発生したかどうかを示す。
【0039】 4つよりも多い大整数ユニットを1つのLIUアレイに相互接続するには、第
3の大整数ユニットの相互接続ロジックを複製する。以下の表1に、m個(m≧
4)の大整数ユニットを1つのLIUアレイに相互接続するロジックの詳細をま
とめた。
【0040】
【表1】
【0041】 表1で、「LIU{k}:x」という表記はLIU{k}の信号x、「REG
0:x」はREG0の信号xなどを意味し、「N/C」は信号が未接続であるこ
とを意味している。一番左の欄はkchの大整数ユニットLIU{k}の信号を示
し、後の欄はk=0、1、...、m−1に対するその信号の相互接続ロジック
を示している。図からわかるように、表1の記載事項はm=4のときの図3に示
されている相互接続ロジックとマッチしている。
【0042】 4つよりも少ない大整数ユニットを1つのLIUアレイに相互接続するには、
大整数ユニットのいくつかの相互接続ロジックを集約する。表2、3、および4
に、それぞれm=3、m=2、およびm=1とした場合のm個の大整数ユニット
を1つのLIUアレイに相互接続するロジックの詳細をまとめた。
【0043】
【表2】
【0044】
【表3】
【0045】
【表4】
【0046】 表2〜4に記載されていないLIUアレイ信号は、mの任意の値に対するのと
同じ相互接続ロジックを持つ。完全を期すため、表5に信号の詳細を示す。
【0047】
【表5】
【0048】 演算 LIUアレイによって実行される一般関数は以下のとおりである。
【0049】 A←Z±(X*Y) ただし、X〜mワード、Y〜nワード、Z〜nワード、そしてA〜nワードで
ある。
【0050】 整数X、Y、およびZは、関数に対する入力オペランドであり、整数Aは出力
オペランドである。XのワードはLIUアレイに同時に、入力x{0},x{l
},...,x{m−1}において印加される。YおよびZのワードは一度に1
ワードがLIUアレイに、それぞれ入力yおよびzにおいて印加される。Aのワ
ードはLIUアレイから一度に1ワードが、出力aにおいて読み出される。
【0051】 LIUアレイへの減算入力は、「±」演算において減算か加算かを選択する。
減算入力をアクティブにする、つまり減算入力を論理1に設定することで減算を
選択し、減算入力を非アクティブにする、つまり減算入力を論理0にクリアする
ことで加算を選択する。
【0052】 LIUアレイのキャリーフロー信号cyは、オーバーフローまたはアンダーフ
ローが発生したかどうかを示す。加算中に計算した値が大きすぎてnワードで表
現できないとオーバーフローが発生する。減算中に計算した値が負になるとアン
ダーフローが発生する。演算終了時にオーバーフローまたはアンダーフローが発
生していれば、キャリフロー信号cy出力はアクティブになる。オーバーフロー
もアンダーフローも発生していなければ、キャリーフロー信号cy出力は非アク
ティブである。
【0053】 LIUアレイは、以下の処理手順に従って一般関数を実行する場合に使用でき
る。 1.clrを脈動する。 2.信号subをアクティブまたは非アクティブにする。 3.データ入力x{0},x{l},...,x{m−1}を印加する。 4.j=0,1,...,n−1について、 a.データ入力yを印加する。 b.データ入力zを印加する。 c.clkを脈動する。 d.データ出力aを読み取る。 を実行する。
【0054】 ステップ1で、LIUレジスタとラッチレジスタ34(REG0)をクリアす
る。前の演算からの累計がクリアされる。 ステップ2で、「±」演算における加算と減算を選択する。減算入力が非アク
ティブ値であれば加算が選択され、アクティブ値であれば減算が選択される。 ステップ3で、Xオペランドのワードの値が印加される。これらの値は、その
まま全体の処理手順に印加される。 ステップ4で、n回実行するループを制御する。それぞれの反復には、インデ
ックスj(j=0,1...、n−1)で番号が振られる。 ステップ4aで、オペランドYのワードjを印加する。 ステップ4bで、オペランドZのワードjを印加する。 ステップ4cで、信号clkを脈動する。これによりLIUレジスタとラッチ
レジスタ34(REG0)を新しい値で更新し、出力aにおいて新しいワードを
使用できるようにする。 ステップ4dで、オペランドAのワードjを読み出す。
【0055】 LIUアレイのクロッキングの分析 LIUアレイの動作は、単一のサイクル、つまりクロック入力信号の単一の脈
動(pulsing)について分析することができる。例では、4つのLIUからなる アレイのケースを使用する。この分析をどのように一般化して他の多数のLIU
に適用できるかは明白であろう。
【0056】 この説明では、LIUアレイへの減算入力信号が非アクティブとなっているケ
ースのみを分析する。アクティブな減算信号のケースについては、後ほど分析す
る。
【0057】 図3と図2を参照すると、整数Qは値Q=q{0}+q{1}W+q{2}W 2 +q{3}W3+rw4を持つと定義され、ここで、q{j}はLIU{j}の レジスタに格納されている値、rはLIUアレイのレジスタREG0に格納され
ている値である。それぞれのq{j}はb+2ビットで構成され、W=2bであ る。
【0058】 クロック信号が脈動する(pulsed)と、Qの値が変化する。新しい値をQ+と 呼ぶ。Q+の値は、それぞれのLIU内の加算器の出力およびLIU{3}内の 乗算器の出力から導かれる。重ね合わせを使って、次のようにしてQ+の値を決 定することができる。
【0059】 まず、Qの値は0、入力信号yの値も0であると仮定する。この場合、Q+に 寄与するのは入力信号zだけである。zの値は、LIU{0}内の加算器を伝播
して、LIU{0}のレジスタ出力に現れる。LIUアレイ内の他のレジスタは
それぞれ出力値が0である。したがって、この場合、次のようになる。
【0060】 Q+=z. (i)
【0061】 次に、Qの値は0、入力信号zの値は0であると仮定する。この場合、Q+へ の寄与は各LIU内の乗算器の出力からだけである。乗算器出力の下位部分は同
じLIU内のレジスタに寄与する。乗算器出力の上位部分は次に高いLIU内の
レジスタ、すなわちLIU{3}の場合には、REG0に寄与する。したがって
、Q+の値に寄与する場合には、LIU{j}内の乗算器出力の下位部分はWj
重み付けされ、上位部分はWj+1で重み付けされる。これは、Q+に寄与する場合
にはLIU{j}内の乗算器の全出力がWjで重み付けされることを意味してい る。LIU{j}内の乗算器への2つの入力はそれぞれ入力信号yおよびx{j
}なので、この場合、次のようになる。
【0062】 Q+=yx{0}+yx{1}W+yx{2}W2+yx{3}W3. (ii)
【0063】 次に、zの値は0、yの値は0であると仮定する。この場合、Q+への寄はQ の現在値からだけである。LIU{j}内では、q{j}の値はc{j}W+s
{j}と記述でき、ここで、c{j}はq{j}の上位2ビットから、s{j}
は残りのビットからできている。そこで、Qの値は次のように書き下せる。
【0064】 Q=s{0}+(c{0}+s{1})W+(c{1}+s{2})W2 +(c{2}+s{3})W3+rW4
【0065】 それぞれのc{j}はLIU{j}内の新しいレジスタ値に寄与し、Q+に寄 与するときのWjの重み付けがされる。j=1、2、および3について、各s{ j}はLIU{j−1}内のレジスタに寄与し、Wj-1の重みを付ける。rの値 はLIU{3}内のレジスタに寄与し、W3の重みを付ける。したがって、この 場合、次のようになる。
【0066】 Q+=(c{0}+s{1})+(c{l}+s{2})W +(c{2}+s{3})W2+rW3
【0067】 これは次のように書けることに注意されたい。
【0068】 Q+=Q/W, (iii)
【0069】 ただし、「/」は、剰余を無視する整数除算を表す。 式(i)、(ii)、および(iii)は、新しい値Q+へのすべての寄与分 を含む。重ね合わせによる寄与分を組み合わせると、次式が得られる。
【0070】 Q+=z+y(x{0}+x{1}W+x{2}W2+x{3}W3)+Q /W. (iv)
【0071】 クロック脈動(clock pulse)後、LIUアレイの出力信号aの値は次式で与 えられる。
【0072】 a+=Q+ % W. (v)
【0073】 a+はクロック脈動後のaの値を意味し、「%」は整数モジュロ演算を表す。 つまり、a+は、Q+をWで除算したときの剰余である。
【0074】 式(iv)と(v)は、クロックが脈動したときのLIUアレイの演算をまと
めたものである。
【0075】 一般関数を計算するための手続の分析 このセクションでは、一般関数の計算を行うために使用される処理手続中のL
IUアレイの演算を分析する。この処理手続については前のセクションで説明し
た。説明からわかるようにLIUアレイは、この手続とともに使用したときに一
般関数の計算を正しく行える。
【0076】 この説明では、LIUアレイへの減算入力信号が非アクティブとなっているケ
ースのみを分析する。アクティブな減算信号のケースについては、後ほど分析す
る。
【0077】 一般関数はA←(Z+X*Y) % Wnである。ただし、 Z=z{0}+z{1}W+z{2}W2+...+z{n−1}Wn-1; Y=y{0}+y{1}W+y{2}W2+...+y{n−1}Wn-1; X=x{0}+x{1}W+x{2}W2+...+x{m−1}Wm-1; A=a{0}+a{1}W+a{2}W2+...+a{n−1}Wn-1
【0078】 ただし、mは、LIUアレイ内のLIUの個数およびオペランドXにおけるワ
ード数であり、nは、オペランドY、ZおよびAにおけるワード数である。モジ
ュロ演算「% Wn」は、Z+X*Yの結果の値がAのnワードに収まるように切 り詰められるという事実を反映している。(Z+X*Y)<WnであればA=Z+
X*Yであり、これは、一般関数の「オーバーフローなし」のケースである。( Z+X*Y)≧Wnであれば、AはZ+X*Yの下位nワードからなり、これは、 一般関数の「オーバーフロー」のケースである。
【0079】 一般関数を計算する処理手続については前のセクションで説明した。この処理
手続をLIUアレイの前の分析とを組み合わせることにより、一般関数の計算を
次の反復(recursion)で記述できる。
【0080】 For k =0,1,...,n−1: Q{k}=z{k}+y{k}X+S{k−1}; a{k}=Q{k} % W; S{k}=Q{k}/W;
【0081】 ただし、S{−1}=0である。「%」は、整数モジュロ演算を表し、「/」
は剰余を切り捨てる整数除算を表す。
【0082】 nステップ反復が完了したら、以下の式の成り立つことが明らかになる。
【0083】 a{0}+a{1}W+a{2}W2...+a{n−1}Wn-1+S{n−
1}Wn = z{0}+z{1}W+z{2}W2...+z{n−1}Wn-1 +X(y{0}+y{1}W+y{2}W2...+y{n−1}Wn-1). (vi)
【0084】 この式の右辺はZ+X*Yである。式の左辺はA+S{n−1}Wnである。「
% Wn」演算を式の両辺に適用すると、A=(Z+X*Y) % Wnが得られる。
したがって、式(vi)が真であることが明らかにされると、処理手続によって
実際にLIUアレイに一般関数を計算させていることが明らかになる。
【0085】 式(vi)は帰納法によって証明できる。まず、n=1について式が成り立つ
ことが示される。次に、n=tについて式が成り立てば、n=t+1についても
成り立つことが示される。これで、n≧1の任意の値について式が成り立つこと
がいえる。
【0086】 n=1のケースについて考察する。S{−1}=0なので、反復から次式が得
られる。
【0087】 Q{0}=z{0}+y{0}X.
【0088】 S{k}は商であり、a{k}はQ{k}をWで割って得た剰余であるために
、任意のkについて、WS{k}+a{k}=Q{k}であることに注意された
い。k=0においてこれを評価すると、次式が得られる。
【0089】 a{0}+WS{0}=Q{0}=z{0}+y{0}X,
【0090】 これは、n=1のケースについて式(vi)を定める。
【0091】 ここで、n=t+1のケースについて考察する。n=tについて式(vi)が
成立すると仮定すると、次式が得られる。
【0092】 a{0}+a{1}W+a{2}W2...+a{t−1}Wt-1+S{t
−1}Wt = z{0}+z{1}W+z{2}W2...+z{t−1}Wt-1 +X(y{0}+y{1}W+y{2}W2...+y{t−1}Wt-1). (vii)
【0093】 WS{k}+a{k}=Q{k}なので、次式が得られる。
【0094】 Wt+1S{t}+Wta{t}=WtQ{t}= Wt(z{t}+y{t}X+S{t−1}). (iii)
【0095】 式(vii)と(viii)を足し合わせると次式が得られる。
【0096】 a{0}+a{1}W+a{2}W2...+a{t}Wt+S{t}Wt+ 1 = z{0}+z{1}W+z{2}W2...+z{t}Wt +X(y{0}+y{1}W+y{2}W2...+y{t}Wt).
【0097】 これにより、n=t+1について式(vi)が成立し、証明が完成する。
【0098】 アクティブな減算信号の分析 LIUアレイの減算入力信号がアクティブになっている場合、オペランドZの
各ワードはLIUアレイに印加される前に相補がとられる。数値についてみると
、これはZを(Wn−Z−1)で置き換えることと等価である。同様に、オペラ ンドAの各ワードはLIUアレイから出力される前に相補がとられる。これはA
を(Wn−A−1)で置き換えることと等価である。したがって、減算信号がア クティブのときは、一般関数は次のように計算される。
【0099】 Z’=Wn−Z−1; A’=(Z’+X*Y) % Wn; A=Wn−A’−1. 0≦Z’<Wnおよび0≦A’<Wnなので、「% Wn」演算をZ’およびA’
の式に自由に付加することができる。
【0100】 Z’=(Wn−Z−1) % Wn; A’=(Z’+X*Y) % Wn; A =(Wn−A’−1) % Wn. この形式では、次のように、「% Wn」演算を無視し、式をマージし、「% Wn」演算を末尾に付加できることが明白である。
【0101】 A =(Wn−((Wn−Z−1)+X*Y)−1)% Wn. この式を簡単にすると、次式が得られる。
【0102】 A =(Z−X*Y) % Wn. これは、望みどおりの一般関数の減算形式である。
【0103】 シングルRAM装置 LIUアレイをコントローラおよびランダムアクセスメモリ(RAM)と組み
合わせて、上述の一般関数に基づき計算を実行できる装置を構成することができ
る。このような装置を図4に示した。
【0104】 コントローラ41とLIUアレイ39の組み合わせでは、計算装置とともに使
用することができるコプロセッサを備える。このような場合、ランダムアクセス
メモリ(RAM)42は、図1に示されているように、計算装置11と共有する
ことができる。
【0105】 コントローラ41は、LIUアレイ39の信号を処理し、望む演算をアレイに
実行させる。コントローラ41は、RAM42から入力オペランドを読み出して
LIUアレイ39と計算装置に転送する。コントローラ41は、LIUアレイ3
9から出力オペランドを読み出してRAM42に書き込む。コントローラ41を
実施する方法は多数あるが、その一つに有限状態機械(finite state machine)
を使用するものがある。RAM42は従来の装置である。このRAMはbビット
幅のデータバスを持ち、これはLIUアレイ39のワードサイズと一致している
。コントローラ41は、適切な値をアドレスバスに印加し、読み取り信号をアク
ティブにし、データバス上でRAM42によって供給されたとおりにワードの値
を読み取り、それから読み取り信号を非アクティブにすることにより、RAM4
2からワードを読み取る。コントローラ41は、適切な値をアドレスバスに印加
し、ワードの値をデータバスに印加し、書込み信号を脈動させることによりRA
M42にワードを書き込む。
【0106】 ワードを読み取る、またはワードを書き込むのに要する時間のことをRAMサ
イクルと呼ぶ。たとえば、コントローラ41がnワードからなる整数Xを読み取
ったり書き込んだりするときにかかる時間はn RAMサイクルである。
【0107】 コントローラ41は、装置に、次の処理手順を用いて一般関数A←Z±(X* Y)を実行させるが、ここで、X〜mワード、Z〜nワード、およびA〜nワー
ドである。
【0108】 1.コントローラ41はLIUアレイ39のclr入力を脈動する。 2.コントローラはLIUアレイ減算入力をアクティブまたは非アクティブに
する。コントローラは、この処理手順の残りの間、この値を一定に保つ。 3.コントローラはRAM43からm個の値を読み出して、LIUアレイのx
{0},x{l},...,x{m−1}入力に印加する。コントローラは、こ
の処理手順の残りの間、これらの値を一定に保つ。 4.j=0,1,...,n−1について、 a.コントローラは、RAMから値を読み取ってLIUアレイのy入力に
印加する。 b.コントローラは、RAMから値を読み取ってLIUアレイのz入力に
印加する。 c.コントローラはLIUアレイのclk入力を脈動する。 d.コントローラは、LIUアレイの出力の値を読み取ってRAMに書き
込む。
【0109】 ステップ3で、コントローラ41はRAM42からXオペランドのmワードを
読み取る。これに、m RAMサイクルを要する。 ステップ4aで、コントローラ41はRAM42からYオペランドのnワード
を読み取る。これに、n RAMサイクルを要する。 ステップ4bで、コントローラ41はRAM42からZオペランドのnワード
を読み取る。これに、n RAMサイクルを要する。 ステップ4dで、コントローラ41はRAM42にAオペランドのnワードを
書き込む。これに、n RAMサイクルを要する。
【0110】 この処理手順に必要なRAMサイクルの総数はm+3nである。これは、ステ
ップ3、4a、4b、および4dにおけるサイクル数を足し合わせることで求め
られる。
【0111】 読取り−変更−書込みのあるシングルRAM装置 図5に示されているように、一般関数を実行するのに必要なRAMサイクル数
は、読取り−変更−書込み動作を実行できるRAM43をを使用して減らすこと
ができる。このような動作により、コントローラ41はRAM43から1ワード
読み取って、そのワードの値を変更し、新しい値をRAM43に書き戻す作業す
べてを1RAMサイクル内に実行することができる。
【0112】 コントローラ41とLIUアレイ39の組み合わせでは、計算装置とともに使
用することができるコプロセッサを備える。このような場合、RAM43は、図
1に示されているように計算装置11と共有することができる。
【0113】 コントローラ41は次のようにして、RAM43に対し読取り−変更−書込み
動作を実行する。まず、コントローラは適切な値をアドレスバスに印加し、読取
り−変更−書込み信号rmwをアクティブにする。次に、コントローラは読取り
信号をアクティブにし、データバス上にRAMが出した値を読取り、読取り信号
を非アクティブにする。さらに、コントローラは変更された値をデータバスに印
加し、書込み信号を脈動する。最後に、コントローラはrmw信号を非アクティ
ブにする。この動作全体を1RAMサイクル内に実行する。
【0114】 RAM43はさらに、すでに説明したように、通常の読み書き演算も実行する
ことができる。コントローラは、rmw信号を非アクティブにすることにより、
通常の読み書き演算を選択する。この3つの演算(読取り、書込み、および読取
り−変更−書込み)はそれぞれ、1RAMサイクルを必要とする。
【0115】 読取り−変更−書込み機能を利用する場合には、一般関数はZ←Z±(X*Y )となり、ここで、X〜mワード、Y〜nワード、およびZ〜nワードてある。
したがって、オペランドZを変更するには、量X*Yの加算または減算を行う。 コントローラ41は、以下の処理手順に従って装置にこの関数(functon)を実 行させる。
【0116】 1.コントローラ41はLIUアレイ39のclr入力を脈動する。 2.コントローラはLIUアレイ減算入力をアクティブまたは非アクティブに
する。コントローラは、この処理手順の残りの間、この値を一定に保つ。 3.コントローラはRAM42からm個の値を読み出して、LIUアレイのx
{0},x{l},...,x{m−1}入力に印加する。コントローラは、こ
の処理手順の残りの間、これらの値を一定に保つ。 4.j=0,1,...,n−1について、 a.コントローラは、RAMから値を読み取ってLIUアレイのy入力に
印加する。 b.コントローラは、RAMから値を読み取って、LIUアレイのZ入力
に印加し、LIUアレイのclk信号を脈動し、LIUアレイのa出力の値を読
み取って、RAMに書き込む。
【0117】 ステップ3で、コントローラはRAMからXオペランドのmワードを読み取る
。これに、m RAMサイクルを要する。 ステップ4aで、コントローラはRAMからYオペランドのnワードを読み取
る。これに、n RAMサイクルを要する。 ステップ4bで、コントローラはRAMのZオペランドのnワードのそれぞれ
について読取り−変更−書込み演算を実行する。これに、n RAMサイクルを
要する。
【0118】 この手処理順に必要なRAMサイクルの総数はm+2nである。これは、ステ
ップ3、4a、および4bにおけるサイクル数を足し合わせることで求められる
【0119】 デュアルRAM装置 一般関数を実行するのに必要なRAMサイクル数は、第2のRAMを図6に示
されているように装置に追加することによりさらに減らすことができる。「Z−
RAM」と呼ばれる第1のRAM44は、Zオペランドを格納する。Z−RAM
44は読取り−変更−書込み機能を備える。「Y−RAM」と呼ばれる第2のR
AM45は、Yオペランドを格納する。Y−RAM45は読取り−変更−書込み
機能を備えている必要はない。デュアルRAMを使用すると、コントローラ41
はYオペランドの1ワードの読取りとZオペランドの1ワードの読取り−変更−
書込みを同時に実行できる。この同時動作は1RAMサイクルタイムで実行され
る。
【0120】 コントローラ41、LIUアレイ39、およびZ−RAM44の組み合わせは
、図1の計算装置とともに使用することができるコプロセッサを備える。このよ
うな場合、Y−RAM45は、図1に示されているように計算装置11と共有す
ることができる。
【0121】 デュアルRAM装置は、次の処理手順に従って一般関数Z−Z±(X*Y)を 実行し、ここで、X〜mワード、Y〜nワード、およびZ〜nワードである。
【0122】 1.コントローラ41はLIUアレイ39のclr入力を脈動する。 2.コントローラはLIUアレイ減算入力をアクティブまたは非アクティブに
する。コントローラは、この処理手順の残りの間、この値を一定に保つ。 3.コントローラはY−RAM45またはZ−RAM44からm個の値を読み
出して、LIUアレイのx{0},x{1},...,x{m−1}入力に印加
する。コントローラは、この処理手順の残りの間、これらの値を一定に保つ。 4.j=0,1,...,n−1について、 a.コントローラは、Y−RAMから値を読み取ってLIUアレイのY入
力に印加し、Z−RAMから値を読み取ってLIUアレイのZ入力に印加し、L
IUアレイのclk信号を脈動、LIUアレイのa出力の値を読み取ってZ−R
AMに書き込む。
【0123】 ステップ3で、コントローラはRAMからXオペランドのmワードを読み取る
。これに、m RAMサイクルを要する。 ステップ4aで、コントローラはRAMからYオペランドのnワードを読取り
、RAMからZオペランドのnワードのそれぞれについて読取り−変更−書込み
演算を実行する。これに、n RAMサイクルを要する。
【0124】 この処理手順に必要なRAMサイクルの総数はm+nである。これは、ステッ
プ3および4aにおけるサイクル数を足し合わせることで求められる。
【0125】 パイプライン化大整数ユニット LIU内のクリティカルパスは、乗算−累算演算のときにアレイ内の第1のn
−1個のLIUにおいて発生する。ここで、乗算器の部分積信号phはa1の次
の高い順位のLIUの加算器に入る。このパスは加算器を通り、総和信号sとし
てそのLIUを抜けて、第2の加算器信号a2を通って元のLIUに戻る。
【0126】 ロジックをパイプライン化すると、LIUの動作周波数を上げることができる
。パイプライン化LIUを図7に示す。他のレジスタREG1を導入することに
より、クリティカルパスに沿った遅延が減少する。新しいレジスタは、乗算器の
出力の上位部分積信号上に置かれる。これにより、クリティカルパスは、乗算器
の遅延と加算の遅延を足したものからちょうど乗算器遅延に減少される。
【0127】 このレジスタの結果として、アレイの相互接続が変わる。パイプライン化LI
Uを備えたLIUアレイを図8に示す。各LIUの上位部分積信号phは、a1
において自身にフィードバックすることに注意されたい。信号phは、第1の加
算器信号a1で1サイクルだけ遅れる。
【0128】 当業者であれば、乗算器も同様にパイプライン化できることを理解するであろ
う。それぞれのパイプライン段により待ち時間のサイクルが加わるが、動作周波
数を高めるだけではこれを補正することはできない。実際、これらのレジスタを
最適に配置する電子設計自動化ソフトウェアが入手可能である。コントローラを
調整してX*Yの計算を進め、A←Z±(X*Y)が正しく計算されるようにでき
る。
【0129】 デュアルポートRAM装置 乗算−累算(multiply-accumulate)演算以外の設計におけるクリティカルパ スは、読取り−変更−書込み演算である。このパスは、シングルポートRAMに
代えてデュアルポートRAMを使用することで低減できる。これは、完全デュア
ルポートRAMではなく、むしろ単一書込みポート単一読取りポートRAMであ
ることに注意されたい。このタイプのRAMによって、1つのアドレスから読み
取ることができると同時に、一方で異なるアドレスに書き込むことができる。図
9は、改良した装置の図である。
【0130】 デュアルポートRAMを使用することにより、読取り−変更−書込み演算を3
つの部分に分けられる。図10にこれを示した。第1の部分は、読取り演算(Z
{i})、第2の部分は変更演算であり、Z{i−1}=Z{i−1}+/−X
{i−1}*Y{i−1}が形成される。第3の部分は、A{i−2}のRAM への書き戻しである。読取りアドレスは決して書込みアドレスと等しくならない
ので、それらの間の差は常にちょうど2である。このため、aを書き込んでも、
zで読み取っているデータに影響しない。このようにして、3つの部分はそれぞ
れ、完了するサイクル全体を持ち、最高動作周波数をかなり改善する。
【0131】 実現可能な別の手段として、変更および書込み演算を単一のサイクルにまとめ
るという方法がある。これにより、待ち時間は1サイクルだけ短縮し、いくつか
の種類のRAMについては、RAMに書き込むデータがそのサイクルの最後の部
分についてのみ通常有効でなければならない程度に高速化することができる。こ
こでもやはり、読取りアドレスと書込みアドレスが異なるという要件が満たされ
ている。
【0132】 特定の算術演算 前のセクションでは、YとZをnワードのオペランド、Xをmワードのオペラ
ンド、そしてmをLIUアレイ内のLIUの個数以下とした場合に、一般関数Z
←Z±(X*Y)を実行するために装置を使用する方法について説明した。この 関数は、マルチプレシジョン演算およびモジュラ簡約で使用できる算術演算を実
行するように特殊化させることができる。特殊化は、コントローラの、LIUア
レイの制御信号およびデータ信号処理によって行われる。
【0133】 以下の説明では、このような算術演算の例をいくつか取りあげる。これらの例
は、実行可能な演算のうちのごくわずかに過ぎず、可能なすべての算術演算を代
表しているわけではない。 乗算:この装置を使用して、次の計算を実行することができる。
【0134】 Z←X*Y、
【0135】 ただし、X〜mワード、Y〜kワード、Z〜nワード、n≧kである。
【0136】 X*Yの値が値が大きすぎてnワード表現に収まらない場合にオーバーフロー が発生する。n≧k+mであれば、X*Yは常に収まる。n<k+mであれば、 XおよびYの値に応じてX*Yの値は収まる場合も収まらない場合もある。計算 の終わりにおけるLIUアレイのcy出力の値は、オーバーフローが発生したか
どうかを示す。
【0137】 シングルRAM装置を使用する処理手順を以下に示す。
【0138】 1.コントローラはLIUアレイのclr入力を脈動する。 2.コントローラはLIUアレイの減算入力を非アクティブにし、LIUアレ
イのz入力に0を印加する。コントローラは、この処理手順の残りの間、これら
の値を一定に保つ。 3.コントローラはRAMからm個の値を読み出して、LIUアレイのx{0
},x{1},...,x{m−1}入力に印加する。コントローラは、LIU
アレイの他のすべてのx{ }入力に0を印加する。コントローラは、この処理
手順の残りの間、これらの値を一定に保つ。 4.j=0,1,...,k−1について、 a.コントローラは、RAMから値を読み取って、LIUアレイのy入力
にその値を印加する。 b.コントローラはLIUアレイのclk入力を脈動する。 c.コントローラは、LIUアレイの出力の値を読み取って、RAMに書
き込む。 5.コントローラは、LIUアレイのy入力に0を印加する。コントローラは
、この処理手順の残りの間、この値を一定に保つ。 6.j=k,k+1,...,n−1について、 a.コントローラはLIUアレイのclk入力を脈動する。 b.コントローラは、LIUアレイの出力の値を読み取って、RAMに書
き込む。
【0139】 ステップ4cおよび6bにおいてRAMに書き込んだ値は、望む結果のzのワ
ードである。
【0140】 この処理手順によって正しい答えが得られることを調べるために、それが一般
関数Z←Z±(X*Y’)を計算することと等価であることを観察する。ここで 、Zの初期値は0のnワード表現、Y’はYのnワード表現である。
【0141】 読取り−変更−書込み装置を持つシングルRAM装置の処理手順は同一である
。読取り−変更−書込み機能は、Zオペランドが書込みのみであって読取りを行
わないため、利点がない。
【0142】 デュアルポートRAM装置の処理手順は、ステップ4aがステップ4cと同時
に実行される点を除いて類似している。
【0143】 各装置に必要なRAMサイクルの数を表6にまとめた。
【0144】
【表6】
【0145】 乗算−累算:この装置を使用して、次の計算を実行することができる。
【0146】 Z←Z+(X*Y)、 ここで、X〜mワード、Y〜kワード、Z〜nワード、n≧kである。
【0147】 結果の値が大きすぎてnワードに収まらない場合にオーバーフローが発生する
。オーバーフローは、計算が終了したときのLIUアレイのcy出力上のアクテ
ィブな値で示される。
【0148】 シングルRAM装置を使用する処理手順を以下に示す。
【0149】 1.コントローラはLIUアレイのclr入力を脈動する。 2.コントローラはLIUアレイ減算入力を非アクティブにする。コントロー
ラは、この処理手順の残りの間、この値を一定に保つ。 3.コントローラはRAMからm個の値を読み出して、LIUアレイのx{0
},x{1},...,x{m−1}入力に印加する。コントローラは、LIU
アレイの他のすべてのx{ }入力に0を印加する。コントローラは、この処理
手順の残りの間、これらの値を一定に保つ。 4.j=0,1,...,k−1について、 a.コントローラは、RAMから値を読み取ってLIUアレイのy入力に
印加する。 b.コントローラは、RAMから値を読み取ってLIUアレイのz入力に
印加する。 c.コントローラはLIUアレイのclk入力を脈動する。 d.コントローラは、LIUアレイの出力の値を読み取ってRAMに書き
込む。 5.コントローラは、LIUアレイのy入力に0を印加する。コントローラは
、この処理手順の残りの間、この値を一定に保つ。 6.j=k,k+1,...,n−1について、 a.コントローラは、LIUアレイのcy出力の値を読み取る。値が非ア
クティブであれば、コントローラは処理手順を終了する。 b.コントローラは、RAMから値を読み取ってLIUアレイのz入力に
印加する。 c.コントローラはLIUアレイのCLK入力を脈動する。 d.コントローラは、LIUアレイの出力の値を読み取ってRAMに書き
込む。
【0150】 ステップ4cおよび6dにおいてRAMに書き込んだ値は、望む結果のzのワ
ードである。
【0151】 この処理手順によって正しい答えが得られることを調べるために、一般関数Z
←Z+(X*Y’)を計算することと同等であることを観察する。ここで、Y’ はYのnワード表現である。
【0152】 Zのnワードすべてが新しい値で置き換えられる前にこの処理手順がステップ
6aで終了する場合がある。これは、置換後の値が置換前の値と同一であると処
理手順によって認識された場合に発生する。処理手順を終了すると、効果のない
サイクルを排除することによりRAMサイクル総数が低減される。
【0153】 読取り−変更−書込み装置を持ったシングルRAMの処理手順は、ステップ4
bと4dが単一の読取り−変更−書込みサイクルで実行され、ステップ6bと6
dが単一の読取り−変更−書込みサイクルで実行されることを除いて類似してい
る。
【0154】 デュアルRAM装置の処理手順は、ステップ4aがステップ4bおよび4dの
読取り−変更−書込みサイクルと同時に実行されるという点を除いて、読取り−
変更−書込み装置を持つシングルRAMと似ている。
【0155】 各装置に必要なRAMサイクルの数を表7にまとめた。
【0156】
【表7】
【0157】 「≦」記号は、ステップ6aで処理手順が早期に終了する可能性を反映してい
る。
【0158】 乗算−否定−累算:この装置を使用して、次の計算を実行することができる。
【0159】 Z←Z−(X*Y)、
【0160】 ここで、X〜mワード、Y〜kワード、Z〜nワード、n≧kである。
【0161】 結果の値が負になるとアンダーフローが発生する。アンダーフローは、計算が
終了したときのLIUアレイのcy出力におけるアクティブな値で示される。
【0162】 この処理手順は、減算入力がステップ2でアクティブにされ、非アクティブに
はされないという点を除き、乗算−累算(multiply-accumlate)演算の処理手順
と同一である。この処理手順は、Zのワードについての置換後の値が置換前の値
と同じであると認識された場合に早期に終了する。RAMサイクルの数は、乗算
−累算演算と同じである。
【0163】 モジュラべき乗への応用 A、B、およびPをそれぞれnワードの整数とする。モジュラべき乗は、AB
% Pを計算する問題である。モジュラべき乗を実行するよく知られ得ている手 法に、モンゴメリの方法がある。P.Montgomery著「Modular
Multiplication without Trial Divisi
on」Mathematics of Computation,44 (19
85),pp.519〜521。この方法は、LIUアレイに基づく本装置に適
している。
【0164】 本特許は、モンゴメリの方法のチュートリアルであることを意図していない。
本発明を使用してこの方法を実施する方法を示し、RAMサイクルに関して実施
速度を分析することのみを目的としている。
【0165】 モンゴメリの方法は、「モンゴメリ積」と呼ばれる関数に基づいている。Pを
法とする2つの整数XとYのモンゴメリ積は、次式で定義される。
【0166】 f(X,Y、P)=((X*Y*G) % P)+kP, ただし、Gは(G*Wn) % P=1を満たす整数で、kは小さな整数である。
このような整数Gは、Pが奇数の場合に存在し、Pが偶数の場合には存在しない
。したがって、モンゴメリの方法はPが奇数の場合にのみ使用される。
【0167】 「kP」という項は、f()の値が0からP−1の範囲になければならないと
いう要件を反映するために含まれている。これは、後で明確になる理由から望ま
しいものである。
【0168】 モンゴメリの方法を使用してモジュラべき乗を実行する処理手順は以下のとお
りである。
【0169】 1.T←W2n % P 2.A←f(T,A,P) 3.T←f(T,1,P) 4.For each bit in B, most significant first, do: a.T←f(T,T,P) b.if the bit in B is1,T←f(T,A,P) 5.T←f(T,1,P) 6.T←T % P Tはnワードの整数である。この処理手順が終了すると、TはAB % Pの値 を含む。
【0170】 ステップ4におけるループは指数Bのビット毎に反復する。Bがnワードを持
ち、各ワードはbビットを持つので、ループはnb回反復する。ステップ4aに
おけるモンゴメリ積は、ループの反復毎に計算される。ステップ4bにおけるモ
ンゴメリ積は、指数の対応するビットが1ビットの場合にのみ計算される。指数
のビットの半分が1ビットであれば、ステップ4bにおけるモンゴメリ積はルー
プ反復の半分について計算される。この仮定を置くと、ループ中で実行されるモ
ンゴメリ積の総数は1.5*nbとなる。
【0171】 公開鍵暗号法では、指数のビット数が大きく、数百あるいは数千ビットになる
のがふつうである。これは、べき乗を計算するにはモンゴメリ積計算を数百ある
いは数千回実行する必要があるということを意味する。そのため、べき乗を高速
に計算する鍵は、モンゴメリ積を高速で計算することである。
【0172】 LIUアレイに基づく本発明装置は、モンゴメリ積を効率よく計算することが
できる。次のセクションでは、この実行方法について説明する。
【0173】 ステップ1、2、および3は「計算前」ステップであり、ステップ5および6
は「計算後」ステップである。これらのステップは、ステップ4に比べて計算量
が非常に少なくて済み、無視できるくらいである。
【0174】 この処理手順を管理する責任は、コントローラおよび、装置がコプロセッサと
して取り付けられている計算装置に分けることができる。システム設計者は、こ
の責任をどのように分けるかということに関して裁量権がある。極端な場合、コ
ントローラを処理手順のすべてのステップを実行できる充分な情報処理機能を受
け持つように設計し、計算装置は単に処理手順を開始し、コントローラにオペラ
ンドの記憶場所を提供するだけということも考えられる。また、コントローラは
一般関数Z←Z+(X*Y)のみを取り扱い、計算装置は、モンゴメリ積を構築 し、上記の処理手順によりモジュラべき乗に組み立てる責を負うように設計する
こともできる。
【0175】 マルチプレシジョン乗算 モンゴメリ積f(X,Y,P)を計算する第1のステップは、XとYの積を計
算することである。この手続は、中学校で教わる通常の「乗算および加算」処理
手順である。得られる積は表すのに2nワードを必要とし、ここで、nはX、Y
、およびPのそれぞれのワード数である。
【0176】 表記は言い回しを簡単にするためだということで同意できるであろう。Xをn
ワードの整数とする。表記X=(x{j},0≦j<n)は、Xの値がx{0}
+x{1}W+x{2}W2...+x{n−1}Wn-1であることを意味する。
Xの「部分整数(subinteger)」つまり、Xの連続するワードのサブセットから
成り立つXの整数部分の演算が行われる。たとえば、整数X’={x{j},2
≦j<5}は値x{2}+x{3}W+x{4}W2を持つXの3ワードの部分 整数である。演算X’←X’+1はx{2}をx{2}+1で置き換える(x{
2}は小さく、オーバーフローを起こさないと仮定する)。これは、X{2}が
XにおいてW2によって重み付されているためXをW2だけ増やす効果を持つ。
【0177】 mをLIUアレイ内のLIUの個数とする。nはmの倍数であると仮定する。
整数の長さは、0ワードを上位側に付加してmの倍数にすることで常に増やすこ
とができるため、一般性を失うことなくこのように仮定することができる。整数
Z、Zi、およびXiは次のように定義できる。
【0178】 Z ={z{j},0≦j≦2n}; Zi={z{j},i≦j<i+n+m}; X1={x{j},i≦j<i+m}.
【0179】 Zは、計算された積を保持するために使用する2n+1ワードの整数である。
Z整数は、次のセクションで明らかになる理由から、必要な長さよりも1ワード
だけ長くなっている。Ziは、z{i}で始まるn+mワードを持つZの部分整 数である。Xiは、x{i}で始まるmワードを持つXの部分整数である。
【0180】 XとYの積は、次の処理手順で計算することができる。
【0181】 1.Z←0 2.i←0 3.While (i<n) do: a.Zi←Zi+(Xi*Y) b.i=i+m
【0182】 ステップ1で、Zを0にクリアする。次にステップ3におけるループで、「乗
算および加算」を実行する。ループの反復毎に、Xオペランドのmワードを処理
する。これらのワードはXiを形成し、これにオペランドYを掛け、累算してZi を求める。Ziは、XiがX内でオフセットされているワードの数と同じ数だけZ
内でオフセットされる。最後の反復の後、Zは望んでいた積X*Yを含む。
【0183】 演算Zi←Zi+(Xi*Y)の後のZの値について考察する。Si={x{j}
,0≦j≦i+m}とすると、Xのi+mワードが処理されているため、Zの値
はSi*Yである。Si*Yはn+m+iワードに収まる。ZiはiワードだけZに オフセットされ、長さはn+mなので、演算Zi←Zi+(Xi*Y)はオーバーフ
ローすることがない。
【0184】 ループは、全部でn/m回反復する。表8は、ループの反復毎にステップ3a
で必要なRAMサイクルの数と、必要なRAMサイクルの総数をまとめたもので
ある。
【0185】
【表8】
【0186】 ステップ3aは、表に示されているよりも少ないサイクル数で済ますことがで
きる。これは、LIUアレイのcy出力が早期終了が受け付けられることを示し
ている場合に発生する。実際には、この効果によるサイクル数の減少は、必要な
サイクルの総数のごく数分の1に過ぎない。
【0187】 モンゴメリ簡約(Montgomery Reduction) 2nワードの積がZに入ると、モンゴメリ積の第2のステップは、Pを法とし
てそれをnワードの値に減らすことである。モンゴメリ簡約は右から左へ作用し
、Zの一番右のワード(つまり、最下位ワード)が無効になるようにPの適切な
倍数がZに加算される。
【0188】 この簡約は、次式を満たす整数Qを必要とする。
【0189】 (Q*P) % Wm=Wm−1.
【0190】 Qはmワードの整数である。Pが奇数であれば、このようなQは常に存在する
。Qの計算は実に簡単である。Qはべき乗計算の最初に一度計算され、その後、
べき乗の簡約ステップ毎に使用される。Qは、一度しか計算されないので、計算
量はそれほどでもない。
【0191】 部分整数Ziは、乗算ステップで定義したのと異なる方法で定義することもで きる。
【0192】 Zi=(z{j},i≦j≦2n),
【0193】 つまり、Ziはz{i}で始まるZの部分整数であり、z{i}の左にあるZ のすべてのワードを含む。Ziは2n+1−iワードからなる。
【0194】 さらに、mワードの整数Vを定義する必要もある。Vはスクラッチ変数である
【0195】 簡約ステップは、次の処理手順を用いて実行することができる。
【0196】 1.i←0 2.While (i<n) do: a.V←Q*Zi b.Zi←Zi+(V*P) c.i=i+m
【0197】 ステップ2におけるループの反復毎に、ステップ2bでZのmワードをクリア
する。つまり、ワードz{i},z{i+1},...,z{i+m−l}は0
の値で終わる。このクリア動作は次の通りである。
【0198】 ステップ2aにおいて、QにZiを掛けて、その結果をVに置く。QとVはそ れぞれmワードの整数であるため、Ziの最下位mワード(つまり、{z{j} ,i≦j<i+m})だけが問題であり、Ziの他のワードは、いったんmワー ドに切り詰められてVに収まるようになると、その結果に影響しない。したがっ
て、ステップ2aは、「半乗算」として実行され、mワードの2つの整数は乗算
されるが、積の下位mワードのみが計算される。
【0199】 ステップ2bにおいて、Vに法Pを掛けて、累算してZiとする。ステップ2 aにおいて計算されたVの値では、Ziの最下位mワードがそれぞれ0の値を持 つ結果になる。Ziへの累算はオーバーフローしないことが保証されており、高 い確率で、LIUアレイのcy出力が非アクティブになるために累算は早期に終
了する。終了する正確な時間はデータによって異なるが、Vはmワードを、Pは
nワードを持つので、終了は通常はZiのn+mワードが累算された後になる。
【0200】 ループは、全部でn/m回反復する。表9は、ループの反復毎にステップ2a
と2bで必要なRAMサイクルの数と、必要なRAMサイクルの総数をまとめた
ものである。
【0201】
【表9】
【0202】 ループの終わりにおいてZ(つまり、{z{j},0≦j<n})の下位nワ
ードは値0をとり、Z(つまり、z{2n})の最上位ワードは0また1の値を
とる。最上位ワードが1であれば、Zの上位ワードから次のようにPを引いてク
リアしなければならない。
【0203】 Zn←Zn−(1*P)
【0204】 ここで、本発明装置は、オペランドの1つを1に設定して「乗算−不定−累算
」を実行するためにも使用される。この演算は、値0を持つZの最上位ワードを
生じることが保証されている。演算が必要かどうか(演算前にZ{2n}=1か
どうか)はデータによる。それとは関係なく、関係するRAMサイクルの数は乗
算および簡約のループに必要なサイクル数と比べるて無視できる。
【0205】 この時点で、Zは2nワードの整数であり、最下位nワードは値0を持つ。モ
ンゴメリ積を完了するには、以下を実行する。
【0206】 Z←Zn/Wn
【0207】 これは、Zの上位nワードを下位nワードに単に右シフトするだけのものであ
る。得られる値はnワードの整数であり、得られる値は所望されたモンゴメリ積
である。
【0208】 この簡約処理手順ではZがnワード内に収まることを保証しているが、Z<P
であることは保証していない。ステップ4におけるべき乗処理手順のループを目
的とするため、Zをnワードに収まるために必要なもの以上にZを簡約すること
は必要ではない。べき乗処理手順は計算後のステップ6を含み、最終結果をPよ
りも小さい値に簡約する。
【0209】 総RAMサイクル 乗算および簡約ステップに必要なRAMサイクル数に関する前のセクションの
結果を表10と組み合わせると、モンゴメリ積に対する単一の結果が得られる。
この値に1.5nbを掛けると、モジュラべき乗を計算するために必要なRAM
サイクル総数が求められる。
【0210】
【表10】
【0211】 べき乗の公式は、計算前および計算後のステップの間に、つまり、べき乗処理
手順におけるステップ1、2、3、および5に必要なRAMサイクルを無視して
いる。これらのステップはステップ4に比べてRAMサイクル数が非常に少なく
て済み、無視することができる。
【0212】 オペランドがLIUの個数に比べて大きい場合、n/mは大きい。これは、実
用的な公開鍵暗号法の応用のケースである場合が多い。このような場合、RAM
サイクル数は約Kbn3/mであり、Kは3つのタイプの装置についてそれぞれ 9、6、または3である。したがって、RAMサイクルの総数は1/mに略比例
する。たとえば、LIUの個数を倍にすることで、RAMサイクル数は半分程度
に減少する。デュアルRAM装置は、シングルRAM装置が必要とするサイクル
数のおおよそ1/3を必要とし、デュアルRAM装置は読取り−変更−書込み装
置を持つシングルRAMで必要なサイクル数の約半分を必要とする。
【0213】 本発明の範囲または精神から逸脱することなく本発明のマルチプレシジョン整
数演算用の計算方法と装置にさまざまな変更を印加することができることは当業
者であれば明白であり、特許請求の範囲およびその等価物の範囲内にあるとすれ
ば本発明はマルチプレシジョン整数演算用の計算方法と装置の変更および変種を
もその対象とすることを意図している。
【図面の簡単な説明】
添付の図面は、本明細書に含まれかつその一部をなしており、本発明の好まし
い実施形態を示すものであり、説明とともに本発明の原理を説明するのに役立つ
【図1】 計算装置を有するコプロセッサの図である。
【図2】 大整数ユニット(LIU)を示す図である。
【図3】 相互接続されてLIUアレイを形成する4つのLIUを示すブロック図である
【図4】 コントローラおよびランダムアクセスメモリ(RAM)と組み合わされたLI
Uアレイを示す図である。
【図5】 コントローラおよび読取り−変更−書込み機能を有するコントローラおよびR
AMと組み合わされたLIUアレイを示す図である。
【図6】 コントローラ、第1のRAM、および第2のRAMと組み合わされたLIUア
レイを示す図である。
【図7】 パイプライン化大整数ユニット(LIU)を示す図である。
【図8】 相互接続されてLIUアレイを形成する4つのパイプライン化LIUを示すブ
ロック図である。
【図9】 デュアルポートRAM装置を示す図である。
【図10】 デュアルポートRAMとともに使用するための読取り−変更−書込み装置を示
すブロック図である。
【手続補正書】
【提出日】平成13年7月11日(2001.7.11)
【手続補正1】
【補正対象書類名】明細書
【補正対象項目名】特許請求の範囲
【補正方法】変更
【補正内容】
【特許請求の範囲】
───────────────────────────────────────────────────── フロントページの続き (81)指定国 EP(AT,BE,CH,CY, DE,DK,ES,FI,FR,GB,GR,IE,I T,LU,MC,NL,PT,SE),OA(BF,BJ ,CF,CG,CI,CM,GA,GN,GW,ML, MR,NE,SN,TD,TG),AP(GH,GM,K E,LS,MW,SD,SZ,UG,ZW),EA(AM ,AZ,BY,KG,KZ,MD,RU,TJ,TM) ,AL,AM,AT,AU,AZ,BA,BB,BG, BR,BY,CA,CH,CN,CU,CZ,DE,D K,EE,ES,FI,GB,GE,GH,GM,HR ,HU,ID,IL,IS,JP,KE,KG,KP, LS,LT,LU,LV,MD,MG,MK,MN,M W,MX,NO,NZ,PL,PT,RO,RU,SD ,SE,SG,SI,SK,SL,TJ,TM,TR, TT,UA,UG,UZ,VN,YU,ZW (72)発明者 ヘイシン マーク ダブリュー. アメリカ合衆国 94301 カリフォルニア 州 パロ アルト イースト クレセント ドライブ 557 Fターム(参考) 5B022 AA00 BA04 CA01 CA03 CA04 EA09 FA01 5J104 AA18 AA21 NA17 NA22

Claims (27)

    【特許請求の範囲】
  1. 【請求項1】 第1のデータ信号yを第2のデータ信号xとともに処理する
    マルチプレシジョン整数演算用の装置であって、 「n」を複数の大整数ユニット内の大整数ユニットの総数とする複数の大整数
    ユニット(LIU)、LIU{0}、LIU{1}、LIU{2}、...、L
    IU{n−1}であって、各大整数ユニットが、 第1の乗算器入力、第2の乗算器入力、上位部分積出力、および下位部 分積出力を有する乗算器と、 第1の加算器入力、第2の加算器入力、第3の加算器入力、第4の加算 器入力、および加算器出力を有し、前記第3の加算器入力が下位部分積出 力を受け取るように乗算器に結合された加算器と、 LIUレジスタ入力およびLIUレジスタ出力を有するLIUレジスタ であって、前記LIUレジスタ入力は加算器出力を受け取るように加算器 に結合され、前記LIUレジスタはクロックパルスの前に加算器出力の値 をラッチしてクロックパルスの後にその値を前記LIUレジスタ出力に転 送し、前記LIUレジスタ出力はLIUレジスタ上位出力とLIUレジス タ下位出力に分割され、前記LIUレジスタ上位出力は前記LIUレジス タ出力の上位2ビットを含み、前記LIUレジスタ下位出力は前記LIU レジスタ上位出力のビット以外の前記LIUレジスタ出力の全ビットを含 み、前記LIUレジスタ上位出力は第4の加算器入力に結合され、前記L IUレジスタはさらにLIUレジスタクリア入力がアクティブとされたと きに前記LIUレジスタ出力を0にクリアするための前記LIUレジスタ クリア入力を有するLIUレジスタと、 LIUレジスタ出力とキャリーイン信号ciを受け取るためLIUレジ スタに結合された第1の論理ORゲートであって、前記第1の論理ORゲ ートはキャリーアウト信号coを発生し、前記キャリーアウト信号coは アクティブとされているLIUレジスタ出力の任意の1ビットに応答して アクティブとされ、前記キャリーイン信号ciはアクティブとされる第1 の論理ORゲートと、 LIUレジスタ上位出力を受け取り、補助キャリーアウト信号caを発 生するためLIUレジスタに結合された第2の論理ORゲートであって、 前記補助キャリーアウト信号caはLIUレジスタ上位出力のいずれかの ビットがアクティブのときにアクティブとされる第2の論理ORゲートと
    を有する複数の大整数ユニットを備え、 前記複数の大整数ユニットのそれぞれの大整数ユニットの第1の乗算器入力に
    第1のデータ信号yが印加されており、 複数の要素x{0}、x{1}、x{2}、...、x{n−1}を持つ第2
    のデータ信号xが、各要素を前記複数の大整数ユニットの各大整数ユニットの第
    2の乗算器入力に結合されており、 0よりも大きいiに対し、前記複数の大整数ユニットの各i番目の大整数ユニ
    ットLIU{i}は、{i−1}番目の大整数ユニットLIU{i−1}の上位
    部分積出力に結合された第1の加算器入力を持ち、 0よりも大きいiに対し、各i番目の大整数ユニットLIU{i}は、{i−
    1}番目の大整数ユニットLIU{i−1}の第2の加算器入力に結合されたL
    IUレジスタ下位出力を持ち、 減算信号がアクティブのときに第3のデータ信号zの補数をとるための、第1
    の大整数ユニットLIU{0}の第1の加算器入力に結合された第1の相補ゲー
    トと、 第1の大整数ユニットLIU{0}のLIUレジスタ下位出力に結合され、前
    記減算信号がアクティブのときに前記LIUレジスタ下位出力の補数をとるため
    の、第4のデータ信号aを発生する第2の相補ゲートと、 ラッチレジスタ入力とラッチレジスタ出力を有するラッチレジスタであって、
    前記ラッチレジスタ入力は前記n番目の大整数ユニットLIU{n−1}の上位
    部分積出力に結合され、前記ラッチレジスタ出力は、クロックパルスの前にn番
    目の上位部分積の値をラッチし、クロックパルスの後にn番目の上位部分積の値
    を前記n番目の大整数ユニットの第2の加算器入力に供給するための前記n番目
    の大整数ユニットLIU{n−1}の第2の加算器入力に結合されたラッチレジ
    スタとを備え、 前記第1の大整数ユニットLIU{0}は論理0の値に結合されたci入力を
    持ち、 前記第2の大整数ユニットLIU{1}は第1の大整数ユニットLIU{0}
    のca出力に結合されたci入力を持ち、 1よりも大きいiに対し、前記複数の大整数ユニットのそれぞれのi番目の大
    整数ユニットLIU{i}は{i−1}番目の大整数ユニットLIU{i−1}
    のco出力に結合されたci入力を持ち、n番目の大整数ユニットLIU{n−
    1}のco出力は第5のデータ信号、キャリーフロー信号cyであり、 前記ラッチレジスタはラッチレジスタクリア信号を持ち、また各LIUはLI
    Uレジスタクリア入力を持ち、複数のLIUレジスタクリア入力と前記ラッチレ
    ジスタクリア信号が一緒に結合されてデータ信号clrを形成し、 前記ラッチレジスタはクロック入力を持ち、また各LIUはクロック入力を持
    ち、複数のクロック入力が一緒に結合されてクロック信号clkを形成すること
    を特徴とする装置。
  2. 【請求項2】 第1のデータ信号yを第2のデータ信号xとともに処理する
    マルチプレシジョン整数演算用の装置であって、 「n」を複数の大整数ユニット内の大整数ユニットの総数とする複数の大整数
    ユニット(LIU)、LIU{0}、LIU{1}、LIU{2}、...、L
    IU{n−1}であって、各大整数ユニットが、 第1の乗算器入力、第2の乗算器入力、上位部分積出力、および下位部 分積出力を有する乗算器と、 第1の加算器入力および第2の加算器入力を有し、下位部分積出力を受 け取るため乗算器に結合された加算器と、 総和信号出力を持っており、前記加算器と結合された前記LIUレジス タと を有する複数の大整数ユニットを備え、 前記複数の大整数ユニットのそれぞれの大整数ユニットの第1の乗算器入力に
    第1のデータ信号yが印加されており、 複数の要素x{0}、x{1}、x{2}、...、x{n−1}を持つ第2
    のデータ信号xが、各要素を前記複数の大整数ユニットの各大整数ユニットの第
    2の乗算器入力に結合されており、 0よりも大きいiに対し、前記複数の大整数ユニットの各i番目の大整数ユニ
    ットLIU{i}は、{i−1}番目の大整数ユニットLIU{i−1}の上位
    部分積出力に結合された第1の加算器入力を持ち、 0よりも大きいiに対し、各i番目の大整数ユニットLIU{i}は、{i−
    1}番目の大整数ユニットLIU{i−1}の第2の加算器入力に結合された総
    和信号出力を持ち、 減算信号がアクティブのときに第3のデータ信号zの補数をとるための、第1
    の大整数ユニットLIU{0}の第1の加算器入力に結合された相補ゲートと、 前記n番目の大整数ユニットLIU{n−1}の上位部分積出力と前記n番目
    の大整数ユニットLIU{n−1}の第2の加算器入力とに結合され、クロック
    パルスの前にn番目の上位部分積の値をラッチし、クロックパルスの後にn番目
    の上位部分積の値を前記n番目の大整数ユニットの第2の加算器入力に供給する
    ためのラッチレジスタと を備えることを特徴とする装置。
  3. 【請求項3】 第1のデータ信号yを第2のデータ信号xとともに処理する
    マルチプレシジョン整数演算用の装置であって、 大整数ユニット(LIU)であって、 第1の乗算器入力、第2の乗算器入力、上位部分積出力、および下位部 分積出力を有する乗算器と、 第1の加算器入力および第2の加算器入力を有し、下位部分積出力を受 け取るため乗算器に結合され、第1の総和信号を出力する加算器と、 前記加算器に結合され、第1の総和信号を受け取り、第2の総和信号を 出力するLIUレジスタと を有する大整数ユニットを備え、 前記大整数ユニットの第1の乗算器入力に第1のデータ信号yが印加され、 前記大整数ユニットの第2の乗算器入力に第2のデータ信号xが印加され、 前記大整数ユニットの第1の加算器入力に結合され、減算信号がアクティブの
    ときに第3のデータ信号zの補数をとる相補ゲートと、 前記大整数ユニットの上位部分積出力と前記大整数ユニットの第2の加算器入
    力とに結合され、クロックパルスの前に上位部分積の値をラッチし、クロックパ
    ルスの後に上位部分積の値を前記大整数ユニットの第2の加算器入力に供給する
    ラッチレジスタと を備えることを特徴とする装置。
  4. 【請求項4】 前記大整数ユニットがさらに、 前記LIUレジスタの出力に結合されて前記LIUレジスタからキャリー信号
    として第2の総和信号の上位ビットを受け取るORゲートであって、キャリー信
    号の論理ORをキャリーフロー信号として出力する第2のORゲートを備えるこ
    とを特徴とする請求項3に記載の装置。
  5. 【請求項5】 さらに、 「n」を複数の大整数ユニット内の大整数ユニットの総数とする複数の大整数
    ユニットLIU{0}、LIU{1}、LIU{2}、...、LIU{n−1
    }を備え、 0よりも大きいiに対し、前記複数の大整数ユニットの各i番目の大整数ユニ
    ットLIU{i}は、{i−1}番目の大整数ユニットLIU{i−1}の上位
    部分積出力に結合された第1の加算器入力を持ち、 0よりも大きいiに対し、各i番目の大整数ユニットLIU{i}は、{i−
    1}番目の大整数ユニットLIU{i−1}の第2の加算器入力に結合された総
    和信号出力を持っていることを特徴とする請求項3または4に記載の装置。
  6. 【請求項6】 第1のデータ信号xを第2のデータ信号yとともに処理する
    マルチプレシジョン整数演算用の装置であって、 複数の大整数ユニット(LIU)であって、それぞれの大整数ユニットが第1
    の乗算器入力、第2の乗算器入力、上位部分積出力、第1の加算器入力、第2の
    加算器入力、および総和信号出力を有する複数の大整数ユニットを備え、 前記複数の大整数ユニットのそれぞれの大整数ユニットの第1の乗算器入力に
    第1のデータ信号yが印加され、 複数の要素xを持つ第2のデータ信号xが、各要素を前記複数の大整数ユニッ
    トの各大整数ユニットの第2の乗算器入力に結合されており、 初期の大整数ユニット以外のiに対し、前記複数の大整数ユニットの各i番目
    の大整数ユニットLIU{i}は、{i−1}番目の大整数ユニットLIU{i
    −1}の上位部分積出力に結合された第1の加算器入力を持ち、 初期の大整数ユニット以外のiに対し、各i番目の大整数ユニットLIU{i
    }は、{i−1}番目の大整数ユニットLIU{i−1}の第2の加算器入力に
    結合された総和信号出力を持っていることを特徴とする装置。
  7. 【請求項7】 さらに、 減算信号がアクティブのときに第3のデータ信号zの補数をとるための、第1
    の大整数ユニットLIU{0}の第1の加算器入力に結合された相補ゲートと、 「n」を大整数ユニットの総数としたとき、前記n番目の大整数ユニットLI
    U{n−1}の上位部分積出力と前記n番目の大整数ユニットLIU{n−1}
    の第2の加算器入力とに結合され、クロックパルスの前にn番目の上位部分積出
    力の値をラッチし、クロックパルスの後にn番目の上位部分積出力の値を前記n
    番目の大整数ユニットの第2の加算器入力に供給するためのラッチレジスタと を備えることを特徴とする請求項6に記載のマルチプレシジョン整数演算用の装
    置。
  8. 【請求項8】 さらに、減算信号がアクティブのときに第3のデータ信号z
    の補数をとるための、第1の大整数ユニットLIU{0}の第1の加算器入力に
    結合された相補ゲートを備えることを特徴とする請求項6に記載のマルチプレシ
    ジョン整数演算用の装置。
  9. 【請求項9】 さらに、「n」を複数の大整数ユニット内の大整数ユニット
    の総数としたとき、前記n番目の大整数ユニットLIU{n−1}の上位部分積
    出力と前記n番目の大整数ユニットLIU{n−1}の第2の加算器入力とに結
    合され、クロックパルスの前にn番目の上位部分積出力の値をラッチし、クロッ
    クパルスの後にn番目の上位部分積出力の値を前記n番目の大整数ユニットの第
    2の加算器入力に供給するためのラッチレジスタを備えることを特徴とする請求
    項6または8に記載のマルチプレシジョン整数演算用の装置。
  10. 【請求項10】 さらに、 減算信号がアクティブのときに第3のデータ信号zの補数をとるための、第1
    の大整数ユニットLIU{0}の第1の加算器入力に結合されたゲート手段と、 「n」を複数の大整数ユニット内の大整数ユニットの総数としたとき、n番目
    の大整数ユニットLIU{n−1}の上位部分積出力と前記n番目の大整数ユニ
    ットLIU{n−1}の第2の加算器入力とに結合され、クロックパルスの前に
    n番目の上位部分積の値をラッチし、クロックパルスの後にn番目の上位部分積
    の値を前記n番目の大整数ユニットの第2の加算器入力に供給するためのレジス
    タ手段と を備えることを特徴とする請求項6に記載のマルチプレシジョン整数演算用の装
    置。
  11. 【請求項11】 さらに、減算信号がアクティブのときに第3のデータ信号
    zの補数をとるための、第1の大整数ユニットLIU{0}の第1の加算器入力
    に結合されたゲート手段を備えることを特徴とする請求項6に記載のマルチプレ
    シジョン整数演算用の装置。
  12. 【請求項12】 さらに、「n」を複数の大整数ユニット内の大整数ユニッ
    トの総数としたとき、n番目の大整数ユニットLIU{n−1}の上位部分積出
    力と前記n番目の大整数ユニットLIU{n−1}の第2の加算器入力とに結合
    され、クロックパルスの前にn番目の上位部分積の値をラッチし、クロックパル
    スの後にn番目の上位部分積の値を前記n番目の大整数ユニットの第2の加算器
    入力に供給するためのレジスタ手段を備えることを特徴とする請求項6または1
    1に記載のマルチプレシジョン整数演算用の装置。
  13. 【請求項13】 さらに、 第1の大整数ユニットLIU{0}の総和信号出力に結合されて、出力信号を
    出力する出力ゲートを備えることを特徴とする請求項2に記載のマルチプレシジ
    ョン整数演算用の装置。
  14. 【請求項14】 さらに、 前記大整数ユニットの総和信号出力に結合されて、出力信号を出力する出力ゲ
    ートを備えることを特徴とする請求項3に記載のマルチプレシジョン整数演算用
    の装置。
  15. 【請求項15】 第1のデータ信号xを第2のデータ信号yとともに処理す
    るマルチプレシジョン整数演算用の装置であって、 大整数ユニット(LIU)であって、 第1の乗算器入力、第2の乗算器入力、上位部分積出力、および下位部 分積出力を有する乗算器と、 第1の加算器入力および第2の加算器入力を有し、乗算器に結合されて 下位部分積出力を受け取り、第1の総和信号を出力する加算器と、 前記加算器に結合され、第1の総和信号を受け取り、第2の総和信号を 出力するLIUレジスタと を有する大整数ユニットと、 前記LIUレジスタの出力に結合されて前記LIUレジスタからキャリー信号
    として第2の総和信号の上位ビットを受け取るORゲートであって、キャリー信
    号の論理ORをキャリーフロー信号として出力する第2のORゲートとを備え、 前記大整数ユニットの第1の乗算器入力に第1のデータ信号yが印加され、 前記大整数ユニットの第2の乗算器入力に第2のデータ信号xが印加されるこ
    とを特徴とする装置。
  16. 【請求項16】 さらに、 前記大整数ユニットの第1の加算器入力に結合され、減算信号がアクティブの
    ときに第3のデータ信号zの補数をとる相補ゲートと、 前記大整数ユニットの上位部分積出力と前記大整数ユニットの第2の加算器入
    力とに結合され、クロックパルスの前に上位部分積出力の値をラッチし、クロッ
    クパルスの後に上位部分積出力の値を前記大整数ユニットの第2の加算器入力に
    供給するラッチレジスタと を備えることを特徴とする請求項15に記載のマルチプレシジョン整数演算用の
    装置。
  17. 【請求項17】 さらに、前記大整数ユニットの第1の加算器入力に結合さ
    れ、減算信号がアクティブのときに第3のデータ信号zの補数をとる相補ゲート
    を備えることを特徴とする請求項15に記載のマルチプレシジョン整数演算用の
    装置。
  18. 【請求項18】 さらに、前記大整数ユニットの上位部分積出力と前記大整
    数ユニットの第2の加算器入力とに結合され、クロックパルスの前に上位部分積
    出力の値をラッチし、クロックパルスの後に上位部分積出力の値を前記大整数ユ
    ニットの第2の加算器入力に供給するラッチレジスタを備えることを特徴とする
    請求項15または17に記載のマルチプレシジョン整数演算用の装置。
  19. 【請求項19】 クリア入力、減算入力、クロック入力、データ入力z、お
    よびデータ出力aを有する少なくとも1つの大整数ユニットを持った大整数ユニ
    ット(LIU)アレイを用いて、第1のデータ信号yを第2のデータ信号xとと
    もに処理する方法であって、 クリア入力を脈動して、LIUアレイ内のLIUレジスタとラッチレジスタを
    クリアするステップと、 減算入力を、減算に対しては論理1、加算に対しては論理0に設定するステッ
    プと、 第2のデータ信号xの値をLIUアレイに印加するステップと、 第1のデータ信号yの値をLIUアレイに印加するステップと、 データ入力zの値をLIUアレイに印加するステップと、 クロック入力を脈動して、複数のLIUレジスタとラッチレジスタを新しい値
    で更新するステップと、 データ出力aを読み取るステップと を含むことを特徴とする方法。
  20. 【請求項20】 マルチプレシジョン整数演算を実行する装置であって、 クリア入力、減算入力、複数のデータ入力x{0}、x{1}、...、x{
    m−1}、y入力、z入力、クロック入力、および出力aを持つ大整数ユニット
    (LIU)アレイと、 前記大整数ユニット(LIU)アレイに結合されており、クリア入力を脈動し
    、減算入力のアクティブと非アクティブの一つを選択し、m個の値を読み取って
    複数のデータ入力x{0}、x{1}、...、x{m−1}にそれぞれ印加し
    、y値を読み取ってy入力に印加し、z値を読み取ってz入力に印加し、クロッ
    ク入力を脈動し、出力値aを読み取って、出力値aをランダムアクセスメモリに
    書き込むためのコントローラと、 前記コントローラに結合されており、コントローラによって読み取られたm個
    の値を格納し、コントローラによって読み取られたy値を格納し、コントローラ
    によって読み取られたz値を格納し、コントローラによって書き込まれた出力値
    aを格納するためのランダムアクセスメモリ(RAM)と を備えることを特徴とする装置。
  21. 【請求項21】 マルチプレシジョン整数演算を実行する装置であって、 クリア入力、減算入力、データ入力、y入力、z入力、クロック入力、および
    出力aを持つ大整数ユニット(LIU)と、 前記大整数ユニット(LIU)に結合されており、クリア入力を脈動し、減算
    入力のアクティブと非アクティブの一つを選択し、m個の値を読み取ってデータ
    入力に印加し、y値を読み取ってy入力に印加し、z値を読み取ってz入力に印
    加し、クロック入力を脈動し、出力値aを読み取って、出力値aをランダムアク
    セスメモリに書き込むためのコントローラと、 前記コントローラに結合されており、コントローラによって読み取られたm個
    の値を格納し、コントローラによって読み取られたy値を格納し、コントローラ
    によって読み取られたz値を格納し、コントローラによって書き込まれた出力値
    aを格納するためのランダムアクセスメモリ(RAM)と を備えることを特徴とする装置。
  22. 【請求項22】 ランダムアクセスメモリは、コントローラに応答して単一
    のRAMサイクル内に値がランダムアクセスメモリから読み取られ、変更され、
    ランダムアクセスメモリに書き戻されるような読取り−変更−書込み機能を備え
    ることを特徴とする請求項20または21に記載のマルチプレシジョン整数演算
    を実行するための装置。
  23. 【請求項23】 ランダムアクセスメモリはさらに、 z値を格納するための第1のランダムアクセスメモリ(RAM)であって、読
    取り−変更−書込み機能を有する第1のランダムアクセスメモリと、 y値を格納するための第2のランダムアクセスメモリ(RAM)とを備え、 前記コントローラは、単一のRAMサイクル内にy値を読み取るのと同時にz
    値に対する読取り−変更−書込み演算を実行することを特徴とする請求項20ま
    たは21に記載のマルチプレシジョン整数算術演算を実行するための装置。
  24. 【請求項24】 ランダムアクセスメモリは、コントローラに応答して第1
    の値が第1のアドレスから読み取られ、それと同時に、第2の値が第2のアドレ
    スに書き込まれるような単一書込みポートおよび単一読取りポートを備えること
    を特徴とする請求項20または21に記載のマルチプレシジョン整数演算を実行
    するための装置。
  25. 【請求項25】 第1のデータ信号yを第2のデータ信号xとともに処理す
    るマルチプレシジョン整数演算用の装置であって、 「n」を複数の大整数ユニット内の大整数ユニットの総数とする複数の大整数
    ユニット(LIU)、LIU{0}、LIU{1}、LIU{2}、...、L
    IU{n−1}であって、各大整数ユニットが、 第1の乗算器入力、第2の乗算器入力、上位部分積出力、および下位部 分積出力を有する乗算器と、 第1の加算器入力、第2の加算器入力、第3の加算器入力、第4の加算 器入力、および加算器出力を有し、前記第3の加算器入力が下位部分積出 力を受け取るように乗算器に結合された加算器と、 LIUレジスタ入力およびLIUレジスタ出力を有するLIUレジスタ であって、前記LIUレジスタ入力は加算器出力を受け取るように加算器 に結合され、前記第1のLIUレジスタはクロックパルスの前に加算器出 力の値をラッチしてクロックパルスの後にその値を前記LIUレジスタ出 力に転送し、前記LIUレジスタ出力はLIUレジスタ上位出力とLIU レジスタ下位出力に分割され、前記LIUレジスタ上位出力は前記LIU レジスタ出力の上位2ビットを含み、前記LIUレジスタ下位出力は前記 LIUレジスタ上位出力のビット以外の前記LIUレジスタ出力の全ビッ トを含み、前記LIUレジスタ上位出力は第4の加算器入力に結合され、 前記第1のLIUレジスタはさらにLIUレジスタクリア入力がアクティ ブとされたときに前記LIUレジスタ出力を0にクリアするための前記L IUレジスタクリア入力を有する第1のLIUレジスタと、 乗算器の上位部分積出力を受け取るための第2のLIUレジスタと、 LIUレジスタ出力とキャリーイン信号ciを受け取るため第1のLI Uレジスタに結合された第1の論理ORゲートであって、前記第1の論理 ORゲートはキャリーアウト信号coを発生し、前記キャリーアウト信号 coはアクティブとされているLIUレジスタ出力の任意の1ビットに応 答してアクティブとされ、前記キャリーイン信号ciはアクティブとされ る第1の論理ORゲートと、 LIUレジスタ上位出力を受け取り、補助キャリーアウト信号caを発 生するため第1のLIUレジスタに結合された第2の論理ORゲートであ って、前記補助キャリーアウト信号caはLIUレジスタ上位出力のいず れかのビットがアクティブのときにアクティブとされる第2の論理ORゲ ートと を有する複数の大整数ユニットを備え、 前記複数の大整数ユニットのそれぞれの大整数ユニットの第1の乗算器入力に
    第1のデータ信号yが印加されており、 複数の要素x{0}、x{1}、x{2}、...、x{n−1}を持つ第2
    のデータ信号xが、各要素を前記複数の大整数ユニットの各大整数ユニットの第
    2の乗算器入力に結合されており、 前記複数の大整数ユニットの各i番目の大整数ユニットLIU{i}は、各i
    番目の大整数ユニットLIU{i}の上位部分積出力に結合された第1の加算器
    入力を持ち、 0よりも大きいiに対し、各i番目の大整数ユニットLIU{i}は、{i−
    1}番目の大整数ユニットLIU{i−1}の第2の加算器入力に結合されたL
    IUレジスタ下位出力を持ち、 第1の大整数ユニットLIU{0}の第1の加算器入力に結合され、減算信号
    がアクティブのときに第3のデータ信号zの補数をとるための第1の相補ゲート
    と、 第1の大整数ユニットLIU{0}のLIUレジスタ下位出力に結合され、前
    記減算信号がアクティブのときに前記LIUレジスタ下位出力の補数をとるため
    の、第4のデータ信号aを発生する第2の相補ゲートとを備え、 前記第1の大整数ユニットLIU{0}は論理0の値に結合されたci入力を
    持ち、 前記第2の大整数ユニットLIU{1}は第1の大整数ユニットLIU{0}
    のca出力に結合されたci入力を持ち、 前記n番目の大整数ユニットLIU{n−1}は論理0の値に結合された第2
    の加算器入力を持ち、 1よりも大きいiに対し、前記複数の大整数ユニットのそれぞれのi番目の大
    整数ユニットLIU{i}は{i−1}番目の大整数ユニットLIU{i−1}
    のco出力に結合されたci入力を持ち、n番目の大整数ユニットLIU{n−
    1}のco出力は第5のデータ信号、キャリーフロー信号cyであることを特徴
    とする装置。
  26. 【請求項26】 第1のデータ信号yを第2のデータ信号xとともに処理す
    るマルチプレシジョン整数演算用の装置であって、 大整数ユニット(LIU)であって、 第1の乗算器入力、第2の乗算器入力、上位部分積出力、および下位部 分積出力を有する乗算器と、 第1の加算器入力、第2の加算器入力、第3の加算器入力、第4の加算 器入力、および加算器出力を有し、前記第3の加算器入力が下位部分積出 力を受け取るように乗算器に結合された加算器と、 LIUレジスタ入力およびLIUレジスタ出力を有するLIUレジスタ であって、前記LIUレジスタ入力は加算器出力を受け取るように加算器 に結合され、前記第1のLIUレジスタはクロックパルスの前に加算器出 力の値をラッチしてクロックパルスの後にその値を前記LIUレジスタ出 力に転送し、前記LIUレジスタ出力はLIUレジスタ上位出力とLIU レジスタ下位出力に分割され、前記LIUレジスタ上位出力は前記LIU レジスタ出力の上位2ビットを含み、前記LIUレジスタ下位出力は前記 LIUレジスタ上位出力のビット以外の前記LIUレジスタ出力の全ビッ トを含み、前記LIUレジスタ上位出力は第4の加算器入力に結合され、 前記第1のLIUレジスタはさらにLIUレジスタクリア入力がアクティ ブとされたときに前記LIUレジスタ出力を0にクリアするための前記L IUレジスタクリア入力を有する第1のLIUレジスタと、 乗算器の上位部分積出力を受け取るための第2のLIUレジスタと、 第1のLIUレジスタに結合されて、LIUレジスタ上位出力を受け取 って、LIUレジスタ上位出力のいずれかのビットがアクティブのときに アクティブとされるキャリーフロー信号cyを発生する論理ORゲートと
    を有する大整数ユニットを備え、 前記大整数ユニットの第1の乗算器入力に第1のデータ信号yが印加され、 前記大整数ユニットの第2の乗算器入力に第2のデータ信号xが印加され、 前記大整数ユニットの第1の加算器入力に結合され、減算信号がアクティブの
    ときに第3のデータ信号zの補数をとるための第1の相補ゲートと、 前記大整数ユニットのLIUレジスタ下位出力に結合され、前記減算信号がア
    クティブのときに前記LIUレジスタ下位出力の補数をとるための、第4のデー
    タ信号aを発生する第2の相補ゲートと を備えることを特徴とする装置。
  27. 【請求項27】 第1のデータ信号yを第2のデータ信号xとともに処理す
    るマルチプレシジョン整数演算用の装置であって、 大整数ユニット(LIU)であって、 第1の乗算器入力、第2の乗算器入力、上位部分積出力、および下位部 分積出力を有する乗算器と、 第1の加算器入力、第2の加算器入力、第3の加算器入力、第4の加算 器入力、および加算器出力を有し、前記第3の加算器入力が下位部分積出 力を受け取るように乗算器に結合された加算器と、 LIUレジスタ入力およびLIUレジスタ出力を有するLIUレジスタ であって、前記LIUレジスタ入力は加算器出力を受け取るように加算器 に結合され、前記LIUレジスタはクロックパルスの前に加算器出力の値 をラッチしてクロックパルスの後にその値を前記LIUレジスタ出力に転 送し、前記LIUレジスタ出力はLIUレジスタ上位出力とLIUレジス タ下位出力に分割され、前記LIUレジスタ上位出力は前記LIUレジス タ出力の上位2ビットを含み、前記LIUレジスタ下位出力は前記LIU レジスタ上位出力のビット以外の前記LIUレジスタ出力の全ビットを含 み、前記LIUレジスタ上位出力は第4の加算器入力に結合され、前記L IUレジスタはさらにLIUレジスタクリア入力がアクティブとされたと きに前記LIUレジスタ出力を0にクリアするための前記LIUレジスタ クリア入力を有するLIUレジスタと、 LIUレジスタに結合されて、LIUレジスタ上位出力を受け取って、 LIUレジスタ上位出力のいずれかのビットがアクティブのときにアクテ ィブとされるキャリーフロー信号cyを発生する論理ORゲートと を有する大整数ユニットを備え、 前記大整数ユニットの第1の乗算器入力に第1のデータ信号yが印加され、 前記大整数ユニットの第2の乗算器入力に第2のデータ信号xが結合され、 前記大整数ユニットの第1の加算器入力に結合され、減算信号がアクティブの
    ときに第3のデータ信号zの補数をとるための第1の相補ゲートと、 前記大整数ユニットLIU{0}のLIUレジスタ下位出力に結合され、前記
    減算信号がアクティブのときに前記LIUレジスタ下位出力の補数をとるための
    、第4のデータ信号aを発生する第2の相補ゲートと、 ラッチレジスタ入力とラッチレジスタ出力を有するラッチレジスタであって、
    前記ラッチレジスタ入力は前記大整数ユニットLIUの上位部分積出力に結合さ
    れ、前記ラッチレジスタ出力は、クロックパルスの前に上位部分積の値をラッチ
    し、クロックパルスの後に上位部分積の値を前記大整数ユニットの第2の加算器
    入力に供給するための前記大整数ユニットの第2の加算器入力に結合されたラッ
    チレジスタとを備え、 前記ラッチレジスタはラッチレジスタクリア信号を持ち、また前記大整数ユニ
    ットはLIUレジスタクリア入力を持ち、前記LIUレジスタクリア入力と前記
    ラッチレジスタクリア信号が一緒に結合されてデータ信号clrを形成し、 前記ラッチレジスタはクロック入力を持ち、また前記大整数ユニットはクロッ
    ク入力を持ち、前記クロック入力が一緒に結合されてクロック信号clkを形成
    することを特徴とする装置。
JP2000522511A 1997-11-26 1998-11-04 マルチプレシジョン整数演算用の装置 Expired - Fee Related JP4201980B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US08/979,803 1997-11-26
US08/979,803 US6026421A (en) 1997-11-26 1997-11-26 Apparatus for multiprecision integer arithmetic
PCT/US1998/023476 WO1999027437A1 (en) 1997-11-26 1998-11-04 Apparatus for multiprecision integer arithmetic

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2001210991A Division JP2002099208A (ja) 1997-11-26 2001-07-11 マルチプレシジョン整数演算の実行方法および装置

Publications (2)

Publication Number Publication Date
JP2001524698A true JP2001524698A (ja) 2001-12-04
JP4201980B2 JP4201980B2 (ja) 2008-12-24

Family

ID=25527160

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2000522511A Expired - Fee Related JP4201980B2 (ja) 1997-11-26 1998-11-04 マルチプレシジョン整数演算用の装置
JP2001210991A Ceased JP2002099208A (ja) 1997-11-26 2001-07-11 マルチプレシジョン整数演算の実行方法および装置

Family Applications After (1)

Application Number Title Priority Date Filing Date
JP2001210991A Ceased JP2002099208A (ja) 1997-11-26 2001-07-11 マルチプレシジョン整数演算の実行方法および装置

Country Status (10)

Country Link
US (2) US6026421A (ja)
EP (2) EP1818809A1 (ja)
JP (2) JP4201980B2 (ja)
CN (1) CN1205538C (ja)
AU (1) AU1379899A (ja)
CA (1) CA2310418C (ja)
DE (1) DE69840871D1 (ja)
EA (1) EA002183B1 (ja)
NO (1) NO20002672L (ja)
WO (1) WO1999027437A1 (ja)

Families Citing this family (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1100291C (zh) * 1997-08-20 2003-01-29 松下电器产业株式会社 数据处理装置
US6963644B1 (en) * 1999-04-07 2005-11-08 Matsushita Electric Industrial Co., Ltd. Multi-word arithmetic device for faster computation of cryptosystem calculations
US6957242B1 (en) * 2000-10-26 2005-10-18 Cypress Semiconductor Corp. Noninterfering multiply-MAC (multiply accumulate) circuit
JP3709553B2 (ja) 2000-12-19 2005-10-26 インターナショナル・ビジネス・マシーンズ・コーポレーション 演算回路および演算方法
TW480436B (en) * 2000-12-21 2002-03-21 Goldkey Technology Corp Modular multiplier and ciphering/deciphering machine using the modular multiplier
JP3950638B2 (ja) * 2001-03-05 2007-08-01 株式会社日立製作所 耐タンパーモジュラ演算処理方法
US7017064B2 (en) * 2001-05-09 2006-03-21 Mosaid Technologies, Inc. Calculating apparatus having a plurality of stages
US6971004B1 (en) 2001-11-19 2005-11-29 Cypress Semiconductor Corp. System and method of dynamically reconfiguring a programmable integrated circuit
US7451326B2 (en) * 2002-08-26 2008-11-11 Mosaid Technologies, Inc. Method and apparatus for processing arbitrary key bit length encryption operations with similar efficiencies
US7386705B2 (en) 2002-08-27 2008-06-10 Mosaid Technologies Inc. Method for allocating processor resources and system for encrypting data
FR2853425B1 (fr) * 2003-04-07 2006-01-13 Atmel Corp Sequence de multiplication efficace pour operandes a grands nombres entiers plus larges que le materiel multiplicateur
US7243118B2 (en) * 2003-07-30 2007-07-10 Broadcom Corporation Method and apparatus for efficient derivation of modulo arithmetic for frequency selection
US7346482B1 (en) 2005-03-08 2008-03-18 Xilinx, Inc. Shared memory for co-simulation
US7343572B1 (en) 2005-03-31 2008-03-11 Xilinx, Inc. Vector interface to shared memory in simulating a circuit design
US8085067B1 (en) 2005-12-21 2011-12-27 Cypress Semiconductor Corporation Differential-to-single ended signal converter circuit and method
WO2007080652A1 (ja) * 2006-01-13 2007-07-19 Fujitsu Limited モンゴメリ法用乗算剰余計算装置
US8065653B1 (en) 2007-04-25 2011-11-22 Cypress Semiconductor Corporation Configuration of programmable IC design elements
CN101271570B (zh) * 2008-05-07 2011-08-17 威盛电子股份有限公司 用于绘图处理单元中的大整数乘法运算的装置和方法
JP5097138B2 (ja) * 2009-01-15 2012-12-12 シャープ株式会社 モンゴメリ乗算のための演算回路及び暗号回路
EP2276194B1 (en) * 2009-07-17 2014-11-26 Certicom Corp. System and method for reducing the computation and storage requirements for a Montgomery-style reduction
CN103888246A (zh) * 2014-03-10 2014-06-25 深圳华视微电子有限公司 低功耗小面积的数据处理方法及其数据处理装置
GB2537942B (en) * 2015-05-01 2017-06-14 Imagination Tech Ltd Fault tolerant processor for real-time systems
CN109190414B (zh) * 2018-08-09 2021-06-15 宁波大学 一种用于乘法器的全同态混淆方法
CN109634558B (zh) * 2018-12-12 2020-01-14 上海燧原科技有限公司 可编程的混合精度运算单元
CN110543291A (zh) * 2019-06-11 2019-12-06 南通大学 有限域大整数乘法器及基于ssa算法的大整数乘法的实现方法

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4215617A (en) * 1976-11-22 1980-08-05 The Board Of Trustees Of Leland Stanford Junior University Musical instrument and method for generating musical sound
US4608634A (en) * 1982-02-22 1986-08-26 Texas Instruments Incorporated Microcomputer with offset in store-accumulator operations
JPS6297060A (ja) * 1985-10-23 1987-05-06 Mitsubishi Electric Corp デイジタルシグナルプロセツサ
US5278781A (en) * 1987-11-12 1994-01-11 Matsushita Electric Industrial Co., Ltd. Digital signal processing system
US5194681A (en) * 1989-09-22 1993-03-16 Yamaha Corporation Musical tone generating apparatus
US5245564A (en) * 1991-05-10 1993-09-14 Weitek Corporation Apparatus for multiplying operands
US5321752A (en) * 1991-09-05 1994-06-14 Canon Kabushiki Kaisha Method of and apparatus for encryption and decryption of communication data
JPH0612229A (ja) * 1992-06-10 1994-01-21 Nec Corp 乗累算回路
US5321751A (en) 1993-02-18 1994-06-14 Eastman Kodak Company Method and apparatus for credit card verification
US5661673A (en) * 1995-08-31 1997-08-26 National Semiconductor Corporation Power efficient booth multiplier using clock gating

Also Published As

Publication number Publication date
EA002183B1 (ru) 2002-02-28
EP1818809A1 (en) 2007-08-15
EP1032873A4 (en) 2005-10-12
EP1032873A1 (en) 2000-09-06
EA200000462A1 (ru) 2000-12-25
US6026421A (en) 2000-02-15
NO20002672L (no) 2000-07-26
JP2002099208A (ja) 2002-04-05
WO1999027437A1 (en) 1999-06-03
DE69840871D1 (de) 2009-07-16
AU1379899A (en) 1999-06-15
NO20002672D0 (no) 2000-05-25
EP1032873B1 (en) 2009-06-03
CN1279781A (zh) 2001-01-10
CA2310418A1 (en) 1999-06-03
US6269383B1 (en) 2001-07-31
CA2310418C (en) 2002-10-22
JP4201980B2 (ja) 2008-12-24
CN1205538C (zh) 2005-06-08

Similar Documents

Publication Publication Date Title
JP2001524698A (ja) マルチプレシジョン整数演算用の装置
EP1293891B2 (en) Arithmetic processor accomodating different finite field size
US6691143B2 (en) Accelerated montgomery multiplication using plural multipliers
JP3525209B2 (ja) べき乗剰余演算回路及びべき乗剰余演算システム及びべき乗剰余演算のための演算方法
US6209017B1 (en) High speed digital signal processor
JP3605181B2 (ja) 掛け算累算命令を使用したデータ処理
US7805479B2 (en) Scalable, faster method and apparatus for montgomery multiplication
US8078661B2 (en) Multiple-word multiplication-accumulation circuit and montgomery modular multiplication-accumulation circuit
US5528529A (en) Electronic multiplying and adding apparatus and method
US6917956B2 (en) Apparatus and method for efficient modular exponentiation
US7046800B1 (en) Scalable methods and apparatus for Montgomery multiplication
US7240204B1 (en) Scalable and unified multiplication methods and apparatus
US6922717B2 (en) Method and apparatus for performing modular multiplication
US6963644B1 (en) Multi-word arithmetic device for faster computation of cryptosystem calculations
US7174015B1 (en) Methods and apparatus for variable radix scalable modular multiplication
US20070203961A1 (en) Multiplicand shifting in a linear systolic array modular multiplier
KR100481586B1 (ko) 모듈러 곱셈 장치
US7167885B2 (en) Emod a fast modulus calculation for computer systems
JP2000207387A (ja) 演算装置及び暗号処理装置
JPH05197525A (ja) オペランドを否定するための否定方法及び否定回路
JP3096574B2 (ja) 倍精度乗算を実行する方法及び演算装置
Ramschie et al. Modular exponential accelerator chip based on precomputations for RSA cryptography application

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20050617

RD01 Notification of change of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7426

Effective date: 20050617

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20050617

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20050617

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080516

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080818

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20080909

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

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20081008

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20111017

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees