JP5866128B2 - 算術プロセッサ - Google Patents

算術プロセッサ Download PDF

Info

Publication number
JP5866128B2
JP5866128B2 JP2014139376A JP2014139376A JP5866128B2 JP 5866128 B2 JP5866128 B2 JP 5866128B2 JP 2014139376 A JP2014139376 A JP 2014139376A JP 2014139376 A JP2014139376 A JP 2014139376A JP 5866128 B2 JP5866128 B2 JP 5866128B2
Authority
JP
Japan
Prior art keywords
register
arithmetic
controller
bit
alu
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
JP2014139376A
Other languages
English (en)
Other versions
JP2014219994A (ja
Inventor
エイ. バンストーン スコット
エイ. バンストーン スコット
ジェイ. ランベルト ロバート
ジェイ. ランベルト ロバート
ガラント ロバート.
ガラント ロバート.
ユリシク アレクサンダー.
ユリシク アレクサンダー.
ヴィ. バデカール アショク
ヴィ. バデカール アショク
Original Assignee
サーティコム コーポレーション
サーティコム コーポレーション
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
Family has litigation
First worldwide family litigation filed litigation Critical https://patents.darts-ip.com/?family=10810977&utm_source=google_patent&utm_medium=platform_link&utm_campaign=public_patent_search&patent=JP5866128(B2) "Global patent litigation dataset” by Darts-ip is licensed under a Creative Commons Attribution 4.0 International License.
Application filed by サーティコム コーポレーション, サーティコム コーポレーション filed Critical サーティコム コーポレーション
Publication of JP2014219994A publication Critical patent/JP2014219994A/ja
Application granted granted Critical
Publication of JP5866128B2 publication Critical patent/JP5866128B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • G06F9/30014Arithmetic instructions with variable precision
    • 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
    • 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/60Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers
    • G06F7/72Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic
    • G06F7/724Finite field arithmetic
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/38Indexing scheme relating to groups G06F7/38 - G06F7/575
    • G06F2207/3804Details
    • G06F2207/3808Details concerning the type of numbers or the way they are handled
    • G06F2207/3812Devices capable of handling different types of numbers
    • G06F2207/382Reconfigurable for different fixed word lengths
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/60Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers
    • G06F7/72Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic
    • G06F7/724Finite field arithmetic
    • G06F7/725Finite field arithmetic over elliptic curves

Description

本発明は、有限体および整数の算術をパフォームする方法および装置に関する。
有限体(finitefield)に対するEC(Elliptic Curve)暗号法では、加算と、乗算と、二乗と、反転(inversion)の算術演算が必要となる。さらに、体(field)の標数が2でない場合には、減算も必要になる。例えば符号定数の計算では、モジュラ算術演算も必要になるが、このような演算は有限体の演算ほど必要にならない。例えばEC暗号法では、モジュラおよび有限体演算、加算、減算、乗算、反転の完全な補集合(fullcomplement)が必要になる。
暗号法のための体のサイズは比較的大きくなる傾向があり、算術演算を許容時間内で実行するために高速の専用プロセッサが必要になる。したがって、高速モジュラ算術プロセッサか、F2nの算術演算をパフォームする専用プロセッサのいずれかが、多数インプリメントされている。特殊目的または専用プロセッサを使用することは、当技術分野では、周知のことである。こうしたプロセッサは一般にコプロセッサと呼ばれ、通常は、ホスト計算システムで利用されており、従って、命令および制御はメインプロセッサからコプロセッサに提供されている。
なかでもRSAが暗号化システムとして慣用されていたが、優秀かつよりセキュアなEC暗号法が登場したため、モジュラ冪法(modularexponentiation)専用のプロセッサの必要性は、薄らいで来ている。ユーザはRSA暗号法からEC暗号法に移行しているものの、性能およびコストをほとんどあるいは全く犠牲にすることなくこれらの両方の演算をサポートする算術プロセッサに対するニーズがある。
本発明の第1の目的は、有限体算術と整数算術を組み合わせ、EC暗号法に必要な演算と、例えばRSA暗号法で必要なモジュラ冪法とを提供するプロセッサを提供することにある。
本発明の第2の目的は、異なる体またはレジスタサイズにスケーリングすることができる算術プロセッサ設計を提供することにある。
本発明の第3の目的は、異なる体サイズで使用することができる算術プロセッサを提供することにある。
本発明の第4の目的は、マルチシーケンス中の複数のステップを同時にパフォームすることによってマルチシーケンス演算実行を高速化するためにスケーリングすることができる算術プロセッサを提供することにある。
本発明によれば、
(a)一群の関連する算術演算をそれぞれ実行する複数の算術回路を有する論理演算装置であって、オペランドデータを受信するオペランド入力データバスと、前記算術演算の結果を戻す結果データ出力バスとを有する論理演算装置と、
(b)前記オペランドデータバスおよび前記結果データバスに結合されたレジスタファイルと、
(c)前記ALUおよび前記レジスタファイルに結合された制御装置であって、算術演算を要求するモード制御信号に応答して前記複数の算術回路の1つを選択し、かつ前記レジスタファイルと前記ALUの間でデータアクセスを制御することにより、前記レジスタファイルが前記算術回路によって共用されるようにする制御装置とを含む算術プロセッサが提供される。
本発明によれば、有限体回路および整数算術回路を含み、かつ汎用レジスタおよび専用レジスタを備えたプロセッサが提供される。
本発明によれば、有限体算術および整数算術を両方とも実行し、専用レジスタおよび汎用レジスタの両方ならびに算術回路を共用する算術プロセッサが提供される。この目的のために、多項式基底が整数の標準的な基数累乗基底(standardradix-power basis)と同様であるので、有限体ハードウェアについて多項式基底を想定する。
本発明によれば、有限体算術と整数算術を組み合わせ、EC暗号法に必要な演算と、例えばRSA暗号法で必要なモジュラ冪法とを提供するプロセッサを提供できる。
本発明によれば、異なる体またはレジスタサイズにスケーリングすることができる算術プロセッサ設計を提供できる。
本発明によれば、異なる体サイズで使用することができる算術プロセッサを提供できる。
本発明によれば、マルチシーケンス中の複数のステップを同時にパフォームすることによってマルチシーケンス演算実行を高速化するためにスケーリングすることができる算術プロセッサを提供できる。
有限体算術および整数算術をパフォームする算術プロセッサアーキテクチャのブロック図である。 図1に示すALU(arithmetic logic unit)の概略ブロック図である。 有限体算術および整数算術をパフォームする算術プロセッサアーキテクチャの代替実施形態のブロック図である。 図3に示すALUの概略ブロック図である。 (a)、(b)、および(c)は図2に示すALUのビットスライスの実施形態のブロック図である。 図5に示すビットスライスの有限体乗算器の回路図である。 算術インバータのブロック図である。 組み合わせた有限体/整数乗算器の回路図である。 図1のマルチビットALUの実施形態を示す概略ブロック図である。 図9のマルチビット有限体乗算器の回路図である。
図1を説明する。算術プロセッサの一実施形態は一般的に参照番号1で示してある。当然のことであるが、この算術プロセッサは総合計算システム中の汎用プロセッサとともに使用することができ、データはこの計算システムと算術プロセッサの間で交換される。算術プロセッサには、レジスタファイルと呼ばれる一群の汎用レジスタ(GP)2が含まれている。レジスタファイルはECの点加算(pointaddition)、点倍加(point doubling)などのための中間記憶域として使用することができるものである。一群の汎用レジスタ2はデータ入力またはオペランドバス6を介してALU(arithmeticlogicunit)4と通信を行なっている。ALU4にはシェアード(shared)有限体および整数算術回路が含まれている。ALU4による計算の結果をレジスタファイル2に書き込むため、データ出力または結果バス14がALU4とレジスタファイル2の間に設けてある。
ALU4による計算オペレーションは、算術プロセッサ1のコントローラ8に駐在するマイクロプログラム化命令により制御されている。モード選択コントロール10は有限体計算またはモジュラ整数計算を選択するために用意してある。体サイズ制御12も、ALU4を初期設定して、種々のオペランドベクトルサイズに適応させるために用意してある。そこで、コントローラ8はなかんずく次のタスク、すなわち、適正な算術モードおよび演算をALU4に提供するタスクと、レジスタファイル2とALU4の間のデータアクセスをコーディネートするタスクと、使用される適正な体のサイズをALU4に提供するタスクとをパフォームする。
汎用レジスタは、少なくとも予想可能な最大のF2mEC暗号システムをハンドルするだけのビット幅を有するように選択される。これら汎用レジスタは整数モジュラ算術で必要なビット長をサポートするために、組み合わせることができる。例えば、レジスタファイル2の単一レジスタのビット幅が512ビット幅である場合に、単一の2048ビットRSA量の記憶域を提供するため、4つのレジスタを使用することができる。これら汎用レジスタには、データのブロックがロードされ、例えば、2048ビットの計算をブロック単位で行い、ついで、再組み立てして、全幅結果(fullwidth result)を得ることが
できる。典型的には、算術プロセッサ1は既存のホストコンピュータシステムで利用され、コントローラ8はこのホストコンピュータシステムから制御信号を受信し、適正なホストバスインタフェースを介して、ホストデータバスにデータを通信する。このようなインタフェースの詳細は当業者とって周知のことであり、説明は省略する。
図2を説明する。ALU4には、幾つかの特殊レジスタ16と、複数のサブALU18と、出力データバス30と、コントローラ20とが含まれている。複数のサブALU18には組み合わせロジックおよび算術回路が含まれていて、組み合わせロジックおよび算術回路は、特殊レジスタからデータバス28を介して各サブALUに入力された1つ以上のビットをオペレートする。出力データバス30はサブALU18と特殊レジスタとの間に設けてある。コントローラ20は、なかんずく、次のタスク、すなわち、計算オペレーション中の各ステップを通してALU4を順序づけるタスクと、特殊レジスタ16からの制御ビットを監視するタスクと、使用してある体のサイズを決定するためにカウンタを制御レジスタ22に実装するとともに、プロセッサハードウェアを設計し直さずに、プロセッサ1が異なる体サイズに対して使用することができる機構を実装するタスクとをパフォームする。これらの機能を提供するため、特殊レジスタ16の制御ビット26は制御ビット入力24としてコントローラ20に供給される。特殊レジスタ16は、全て、個別にアドレス可能になっている。コントローラ20はレジスタファイルから入力バス6を介してサブALU18または特殊レジスタ16に入力されたデータも制御する。これらサブALUは、単一のビットにオペレートすることができ、複数のビットに一度にオペレートすることができる。これらのコンポーネントは後程より詳細に記述する。
図3を説明する。算術プロセッサの代替例は参照番号1′で示してある。本実施形態では、別個の有限体装置34および整数モジュラ算術装置36を提供する。このプロセッサは、レジスタファイル2′と、データ入力バス6′と、データ出力バス14′と、コントローラ8′も含むが、制御13aおよび13bがそれぞれコントローラ8′から各ALU34および36に提供される。
図4を説明する。図4は図3のALU34および36をより詳細に示す。ALU34および36には、それぞれ、特殊レジスタ16′aおよび16′bと、コントローラ20′aおよび20′bとが含まれている。ALU34および36には、それぞれ、サブALU18′aおよび18′bが含まれている。したがって、この実施形態では、特殊レジスタ16′aおよび16′bと、算術および制御回路は、当然、共有されない。サブALU18′aのうちの1つ以上のサブALU18′aは、協働して、シフト左/右とXORシフトの機能を実行し、サブALU18′bのうちの1つ以上のサブALU18′bは、協働し、任意選択で、桁上げ保存技術または桁上げ伝搬(carry propagation)を使用して、整数加算および整数減算の機能を実行する。
図2を説明する。サブALU18は、特殊レジスタ16から供給されたオペランドに対して、次の論理機能、すなわち、XORと、シフト左/右と、XORシフトと、整数加算と、整数減算を実行する。これらの機能は、1つのサブALU18か、マルチプル・サブALUに含めることができる。マルチプル・サブALU18を設けることにより、当該プロセッサは複数の演算(例えば、有限体反転)を同時にパフォームすることができる。
図5を説明する。図5は図2のALU4のビットスライスを詳細に示す。図5aの41は、当該ビットスライスを示す。次の考察では、ビットスライス41と関係付けをしたロジック回路と関連して、各特殊レジスタのセルを相互接続する、と言う。ビットスライスに含まれたロジック回路は、一般的に、図2に示すようなサブALU18のうちの1つで表される。ビットスライスの構成は、Nビットレジスタに対しては、N回繰り返えすことができる。さらに、明確にするため、Nをレジスタ内のセル数と定義し、レジスタ内の個別のセルを例えばAという。ここで、0≦i≦N−1であり、AN−1は特殊レジスタの最も右にあるセルである。レジスタの内容は小文字で参照され、例えば、長さnのビットベクトルAは、aをLSBとして、ビットにa,…an−1と番号が付けられることになる。ここで、特殊レジスタには特定の名前が付けられているが、これらのレジスタは、後程説明するが、実行されている算術演算に依存して異なる機能をとることができる、ことに留意されたい。
図5の特殊レジスタ16に含まれるレジスタとしては、乗算演算中に、例えば、被乗数および乗数を個々に保持するための一対のオペランドレジスタA42およびB44と、累算器レジスタC46と、モジュラスレジスタM48と、桁上げ拡張(carryextension)レジスタCext50(整数算術で使用される)とがある。
これらのレジスタは、その中にロードされたビットベクトルの個々の2進数を保持するため、N個のセルを有する。これらのレジスタはシフトレジスタであるのが好ましい。図2に示すサブALU18は、後程説明するが、図5のブロック52の回路により実装することができる。
乗算
ALU4のオペレーションは、有限体乗算のような具体的な算術演算を参照することにより最も良く理解することができる。ここで、2つの元aおよびbの積Cを考察することにする。ここで、aおよびbはビットベクトルであり、bは多項式表現でb=(b,…bn-1)の形態となり、aは多項式表現でa=(a,…an-1)の形態となる。モジュラスビットベクトルmは、m=(m,…m)の形態を有する。モジュラスレジスタは、モジュラスを表すのに必要なビット数より1ビット多い、ことに留意されたい。あるいはまた、最上位ビットmが1であるので、この最上位ビットを暗黙に定義することができ、mを(m,…mn-1)で表すこともできる。F2nにおいて、乗算は、次のような疑似コードにより明確に記述される一連のステップとして実装することができる。
C=0{C-1=0}
For ifrom n-1 to 0 do
For jfrom n-1 to 0 do =ci-1+bn-1 i +cn-1
この乗算を実行する際には、MSB(most significant bit)からLSB(least significant bit)の順に、被乗数と乗数のbの各ビットとの部分積を形成する。その前の
部分積のMSBがセットされた場合には、部分積はモジュラスによって簡約(reduce)される。
乗算の実装は、1×N乗算器を逐次使用することによって行なうことができ、この場合、上記疑似コードの内側の「for」ループはパラレルに実行される。各セルがそれぞれ2進数mの1つを含むように、モジュラスレジスタMには、MSBmを剥ぎ取ったモジュラスビットベクトルmがロードされる。図示の実装では、ビットmは、ベクトルのMSBを最も左側のビットとして、左から右に配列されている。すなわち、セルMn-1はビットmn-1を含む。N≠nである場合、スティルビット(stillbit)Mn-1はMN-1にストアされる、すなわち、データは左寄せされる。各セルが個々に2進数aまたはbの1つを含むように、シフトレジスタAおよびBには、有限体元(finitefieldelement)ビットベクトルaおよびbがそれぞれロードされる。有限体元aおよびbは、左寄せされ、各レジスタにストアされ、乗数レジスタbのMSBが常に左境界セルのビット、すなわち(an-1,an-2,…a)および(bn-1,bn-2,…b)で利用可能になっている。ベクトルaおよびbの長さがレジスタの長さより短い場合には、残りのセルには0がパディングされる。以上、図2に示すコントローラ20によって一般的に実行される。逐次乗算(被乗数を逐次小さくするなど)の他の構成も可能であるが、そのような構成では、体のサイズに柔軟性を持たせることができないし、同様に、制御ビット位置を固定することができない。この乗算アルゴリズムを対応して変化させれば、LSBからMSBへのビット順序づけも可能である。
ここでは、ALU4のビットスライス41は、有限体において乗算を実装するために、記載されている。ビットスライス41は第1および第2のコントローラブル加算器54および56を含み、第1および第2のコントローラブル加算器54および56は、それぞれ、XOR機能を有する。レジスタBの最上位のセルBN-1は、加算制御信号bn-157を第1の加算器54に供給する。第1の加算器54への入力58および60は、レジスタセルAおよびアキュムレータセルCから得られる。第1の加算器54からの出力62は、モジュラスレジスタセルMからの入力64とともに、第2の加算器56の入力に接続されている。加算器54は出力62=入力60+(入力58および制御57)という演算をパフォームする。この演算を図5(b)に詳細に示す。
ついで、第2の加算器56からの出力はアキュムレータセルCに接続されている。第2の加算制御信号66はアキュムレータC46の最上位のセルCN−1から得られる。アキュムレータCの最上位のビットCN−1がセットされたとき、当然に、モジュラスベクトルmによるアキュムレータCでの部分積のモジュラ簡約が、第2の加算制御信号66により実装される。図5(c)に詳細に示すように、加算器56は、出力=入力64+(入力62および制御66)という演算を行う。Bレジスタはクロックシフトレジスタである。コントローラ20から供給することができるクロック信号CLK1 68は、部分積が計算される度に、このレジスタの内容を左にシフトさせる。
図6を説明する。図6は図5のビットスライス41の詳細な回路実装を示す。この回路実装は有限体乗算を行なうためのものであって、参照番号70で示す。図6のビットスライスi、70を説明する。図6では、説明のために、ビットスライスは3つしか示していない。セルaは、ANDゲート72により、加算制御信号bn−1とAND演算される。ANDゲート72の出力74は、アキュムレータCの隣接するセルCi−1からの入力78とともに、XORゲート76の入力に接続される。よって、項「ci-1+bn-1i」の計算が実装される。項「cn−1」は、ANDゲートを利用して、信号c80とm82をAND演算することにより、実装される。ANDゲートの出力86は、XORゲート76の出力88とともに、XORゲート84の入力に接続される。XORゲート84の出力90は、セルC92に接続される。よって、式「c=ci-1+bn-1i+cn−1」が実装される。この汎用の逐次乗算器により、2つのnビット有限体元の積がnクロックサイクルで生成されることになる。同期カウンタは、コントローラ20に含めることができるものであって、繰返し回数の制御を行うものが好ましい。以上の記述は、加算器54が整数加算器のビットスライスであって、加算器56が整数減算器のビットスライスであるときに、整数モジュラ乗算に適用される。このことは後程説明する。
加算
有限体F2中の乗算に関連して、回路を説明したが、その他の計算オペレーションも容易にパフォームすることができる。有限体加算は桁上げが生じないので、この点で、整数算術より有利である。有限体サム(sum)の計算では、有限体中の2つの元aおよびb
の加算が、単に、aとbのXORであるので、XORゲートを注目レジスタの各セルに導入するだけでよい。したがって、図5に戻ると、入力100はセルBiから第1の加算器54に供給され、第2の加算器56は簡約に使用される。ついで、加算器54からの出力はセルCに直接書き込まれる。オペランドがレジスタaおよびbに移動された後で、単一のクロックサイクルで、加算をパフォームすることができる。その加算をALUでパフォームするのは可能であり、その結果をレジスタファイルの汎用レジスタにライトバックするのも可能である。整数加算では、加算器54は整数加算器のビットスライスであり、整数加算結果に基づきモジュラオーバフローか否かを検査しなければならない。この状態が生じた場合には、整数減算器のビットスライスである加算器56は、その結果を簡約するのに用いられる。
二乗
ある数を二乗するには、異なる2つの数の乗算と同じ時間でパフォームすることができる。多項式基底における二乗は、特定の既約(irreducible)が二乗展開と明示的に結線された(hardwired)場合は、単一のクロックサイクルでパフォームすることができる。あるいはまた、同じ入力を乗算して二乗をパフォームすることができる。
反転
F2の有限体元の反転は、ユークリッドの互除法を使用してパフォームすることができ、また、追加のコントロールロジックを有する4つの特殊レジスタを利用してパフォームすることができる。この反転は、シフトが加算と同時に行われる場合(これは加算の出力を次のレジスタセルに結線することによって容易に実装される)には、2nサイクルで完了する。
この反転で使用されるレジスタは、A、B、M、およびCである。便宜上、これらのレジスタを概略的に図7に示す。MにはUL、CにはLL、AにはUR、BにはLRとラベル付けがしてある。再度、この反転を、ビットスライス110に関連して記述することができる。
反転のオペランドは、一般に、反転する元gと、既約多項式fまたはモジュラスm(後述)と、ビットベクトル「0」と、ビットベクトル「1」である。ULレジスタ116にはfまたはmがロードされる。LLレジスタ118にはgがロードされ、URレジスタ112には「0」が、LRレジスタ114には「1」がロードされる。URレジスタ112およびLRレジスタ114では、セルURおよびLRはXORゲート120でXOR演算されて、出力122が生じる。制御信号124は、可能な3つの入力のうち1つがセ
ルURおよびULに書き込まれるかどうかを決定する。入力は隣接するセルまたは出力122からの左または右シフトである。制御信号Bは後程記載する状態表によって決定される。ULレジスタ116またはLLレジスタ118では、セルULおよびLLはXORゲート126でXOR演算されて、出力128が生じる。制御信号130は、可能な2つの入力のうち1つがセルULおよびLLに書き込まれるかどうかを決定する。入力は隣接するセル(i−1)または出力128からの左シフトである。この場合も、制御信号130は後程記載する状態表によって決定される。
制御変数をULレジスタの長さkと、LLレジスタの長さkと仮定したとすると、Δ=k−kとなる。値kおよびkは、好ましくは、同期ダウンカウンタで実装され、Δは好ましくは同期アップ/ダウンカウンタで実装される。カウンタレジスタk、k、およびΔも用意されている。ULおよびLLレジスタは左シフトレジスタであり、URおよびLRレジスタは、ともに、左および右シフトレジスタである。
さらに、カウンタレジスタでは、Δには0がロードされ、kはnに初期化される。制御ビットラッチは、「1」がアップカウントを示し、「0」がダウンカウントを示すトグル機能を有する。U/D制御は、最初、「1」にセットされる。この場合、ALUで反転を実行する制御装置に含まれるシーケンサは、次のような出力を有する。
Deckl デクリメントk kl
Decku デクリメントk ku
decDelta デクリメントΔ
incDelta インクリメントΔ
toggle トグルアップ/ダウン
lsUL 左シフト左上レジスタ
lsLL 左シフト左下レジスタ
lsUR 左シフト右上レジスタ
lsLR 左シフト右下レジスタ
rsUR 右シフト右上レジスタ
rsLR 右シフト左下レジスタ
outLR 出力右下レジスタ
outUR 出力右上レジスタ
dadd-lsLL ダウンXORおよび左シフト左下レジスタ
uadd-lsUL アップXORおよび左シフト左上レジスタ
インバータのオペレーションの概要を表す状態表は次のようになっており、MおよびCはそれぞれレジスタULおよびLLの上位ビットであり、MおよびCは現在の状態を決定する。レジスタおよびカウンタ上でアクションがパフォームされると、これによりインバータは新しい状態となる。このプロセスは、kまたはkが0になるまで繰り返され、右レジスタRLまたはRUの一方はg−1を含み、もう一方はモジュラス自体を含むことになり、これは、後続の乗算または反転演算で使用するために、レジスタmにリストア(restore)することができる。
Figure 0005866128
整数算術
多項式表現と整数表現は非常に良く似ていることから、ALUでハードウェアを共有することが可能でなる。加算では、整数算術は、桁上げが必要であることから、複雑になるだけである。ALUの整数算術演算は、例えば乗算演算を利用すれば、最もよく説明することができる。
疑似コードで表した次の一連のステップを参照して、Zにおける乗算を説明する。前述したのと同様に、aおよびbは乗算されるビットベクトルであり、cはaとbの積であり、=(c,c,…,cn−1)である。
C=0
M=0
For ifrom 0 to n-1 do
ext←C
For jfrom 0 to n-1 do
=(b(a)+m+c)mod2
j+1=(b(a)+m+c)/2
ここで、
ext←C:For j from n-1 to 0 do
j−1=c
j−1 ext=c ext
となる。
同様に、このようにすれば、XORを減算器で置換し、しかも、mレジスタに素数をロードした場合には、整数 modulo p(integers modulo p)を反転させることができる。改善策であるが、桁上げ保存方法を採用することにより、桁上げ伝搬を遅らせることができる。
図6の実施形態で説明した有限体乗算の場合のビットスライス70を修正して、整数表現に対する乗算を含むようにすることができる、ことを観測することができる。注意すべきことであるが、整数乗算では、レジスタには、ビットベクトルがFmとは逆順でロードされる、すなわち、レジスタの最左端のセルがビットベクトルのLSBを含む。整数乗算では、逐次(successive)部分積の間で、桁上げを実装する必要があり、さらに、部分積がモジュラスで簡約されていないので、逐次部分積の加算による桁上げを供給しなければならない。そこで、アキュムレータレジスタCが拡張してあり、図5に示すように、新しいレジスタCext49が設けてある。各部分積が形成される前に、アキュムレータCの最下位ビット(セルC)を拡張レジスタCextの最上位ビット(セルCext )にシフトし、ついで、アキュムレータCおよびCextは両方ともLSBに向けて1ビットだけシフトされる。最終結果はCおよびCextで獲得され、Cextには、当該積の低位ビットが含まれる。このことは、上記オペレーションCext←Cで表される。
図8を説明する。図8はビットスライス170を示す。ビットスライス170は図6のビットスライス70に類似している。したがって、同様のコンポーネントは、識別するために、図6の説明で使用した参照番号を100番台にして使用することにする。つまり、参照番号70は170となる。図8の編成が図6と異なる点は、モジュラスレジスタmが桁上げレジスタとして使用され、モード選択信号Z/Fm171が提供されるという、2つの重要な点である。
ここで、項c=cj−1+b+cn−1は、既に説明した有限体乗算でそうであったように、制御信号bmとレジスタセルAの内容との積で実装され、この積はANDゲート172で実装される。ANDゲート172の出力174はレジスタセルcj−1の内容とXORゲート176によりXOR演算され、参照番号158で示す出力項cj−1+b(a)が生成される。この出力信号は、ANDゲート160から得られた参照番号185で示す項cn−1(m)と、XORゲート184を使用してXOR演算され、項cが生成される。さらに、積’b,cj−1’162と、積(cj−1+b,m)163とのサム(sum)から、桁上げ項mが生成され、セルm182に書き込まれる。積の項162および163はANDゲート164および166によってそれぞれ実装される。積の項162と163のサムはORゲート167によって実装される。
モード選択信号Z171は、桁上げ入力信号c180とOR演算され、クロック信号169とAND演算168される。したがって、Z=0をセットすることにより、有限体算術が実装され、Z=1をセットすることにより、整数算術が実装される。
図8は、図6で既に説明した有限体乗算を、組合せ有限体/整数乗算器に変換するのに必要な修正を示す。乗算の低位のビットを集めるため、出力レジスタCが拡張されることに留意されたい。Zにおける計算はモジュラスなしでパフォームされるので、モジュラスレジスタMは、部分積を簡約するためではなく、桁上げのホルダとして使用される。制御信号Z/F 171は、ALUのための整数乗算回路をイネーブルにする。
最終桁上げ伝搬(finalcarry propagation)は、マンチェスターキャリーチェーン(Manchester carry chain)によって提供することができ、レジスタ長が長いことから、1レイヤまたは2レイヤの桁上げスキップ機構によって拡張可能である。さらにnサイクルだけクロックすることも可能であり、桁上げ保存加算器が桁上げを完全にマージすることが可能である。
1つの入力はその入力において条件付きで補数をとることができ、しかも、加算器のLSBで「ホット」キャリインが行われる場合には、2の補数の減算は、桁上げ伝搬加算器で実装することができる。
乗算時のリップル桁上げは、桁上げスキップにより改良したとしても、許容できなくなるが、この桁上げ伝搬は、桁上げ保存加算器を使用すれば、ほぼ完全に除去することができる。このようにすると、部分積が冗長表現されるが、乗算が完了した後は解決される。
さらに別の実施形態では、ALU4は、図9に示すように、計算速度が線形に増加するように修正することができる。これは、特殊レジスタ16′からの連続ビットを一度に処理し、修正したサブALU190で示す追加回路を実装し、図9に示すようにインクリメント加算を処理することによって達成される。複数のビットを処理すると、速度が線形増加することになる。例えば、計算が順次にパフォームされる場合は、その順序中の2つ以上のステップを同時に実行することができる。この場合、コントローラ20′は特殊レジスタ16′からの2ビット以上の制御ビット194を処理することになり、制御装置の入力192は図9にマルチビットラインとして示す。
有限体に対して一度に2ビット実行する乗算器(two-bit at a time multiplier)の回路図を図10に示す。この実装では、ビットスライス200はその数がXORゲート210の数の2倍であり、当該加算の2つの項を実装している。この乗算器は乗数から2ビットをとり、被乗数aおよびai−1を2回だけ隣接してシフトすることにより加算し、モジュラスMおよびMi−1を2回だけ隣接してシフトすることにより簡約する。このようにすると、モジュラス簡約(modulusreduction)で連続する2つの部分積が同時に生成され、したがって、全計算時間を半分にすることができるという効果がある。
特殊レジスタの上位(top)ビットがコントローラ20または20′用の制御ビットとして使用される、ことに留意されたい。このようにすると、オペランドがレジスタにロードされると、左揃えされ、したがって、制御が常に固定ビット位置から得られるという利点がある。しかし、その他のビット例えば下位(bottom)ビットを制御ビットとして使用することもできる。しかし、このようにすると、ハードウェアが複雑になることもある。
この場合も、Booth(または、修正Booth)記録などのオプションが可能となるので、マルチビット演算の計算速度がさらに線形的に増加する。
このようなALUは汎用レジスタに対して簡単な算術演算をパフォームする能力を有するものと仮定している。他の例のALUは全ての算術をALU内部レジスタに対してパフォームするものであり、汎用レジスタはこれらのレジスタとの間でリード(read)およびライト(write)のみを行う能力を有する。
このようなALUの機能には、リップル桁上げや、桁上げスキップ加算と桁上げ完了の組合せなど、何らかの桁上げ伝搬方法を利用した、整数加算が含まれる。
このようなALUは、有限体加算で使用される単純なXOR機能も提供する。整数および有限体表現(ビット順序)が逆であるので、体から整数への変換と、整数から体への変換に使用されるビット逆転(bitreversal)機構を設けると有利である。2つのシフトレジスタの頂部どうしを接続することにより、nクロックサイクルでこの機能が提供される。ここで、nは算術オペランドの長さである。
本明細書で与えた一般的なアーキテクチャは、ECとモジュラ指数算術との間でレジスタファイルを共用するだけでなく、共用制御レジスタに加えて、特殊レジスタおよび組み合わせロジックも共用する可能性がある。
以上、本発明の具体的な実施形態と具体的な用途について説明したが、種々の修正は、本発明の範囲を逸脱しない限り、当業者にとって可能である。例えば、記載の実施形態では、特定のロジック回路について言及したが、例えば、ド・モルガンの法則を使用して等価な回路を使用することもでき、反転ロジック(invertedlogic)が実装された場合には、相補形回路を使用することもできる、ことに留意されたい。さらに、レジスタおよびビットベクトルのオリエンテーション、すなわち、左、右、上、下には、これらの方向の他の編成も含まれる。
本明細書で採用した項および式は、これらのものに限定されるものではなく、例として使用したものであり、これらの項および式を使用したことに、図示および記述した機構またはその一部分の均等物を排除する意図はなく、本発明の範囲内で種々の修正が可能であることを認識されたい。
1 算術プロセッサ
2 レジスタファイル
4 有限体/整数エンジン
8 コントローラ

Claims (8)

  1. 暗号化オペレーションを実行するための算術プロセッサであって、
    有限体において体オペレーションを実行するように構成された算術回路を含む算術論理ユニット(ALU)であって、前記回路は、前記体オペレーションにおけるステップを介して前記ALUをシーケンス化するための第1のコントローラと、少なくとも1つの制御ビットを前記第1のコントローラに提供するための少なくとも1つのデータ入力バスとを含む、ALUと、
    1つ以上のオペランドの表現を含む1つ以上の汎用レジスタを含むレジスタファイルと、
    前記1つ以上のオペランドに対する前記ALUの計算オペレーションを制御するために、前記ALUに命令を提供する第2のコントローラであって、前記第2のコントローラは、前記第1のコントローラと協働して、前記算術プロセッサにおけるプログラム命令を介して前記第2のコントローラによって受信された体サイズ制御信号によって示される前記有限体のサイズの変動に応答して、異なるオペランドベクトルサイズに適応するように前記ALUのオペレーションを制御し、前記第1のコントローラは、用いられている有限体のサイズを決定するために前記少なくとも1つの制御ビットを監視し、かつ、それ自身の制御レジスタにおいてカウンタを実装することにより、繰返し回数を制御する、第2のコントローラと
    を含む、算術プロセッサ。
  2. 前記算術回路は、有限体を含み、整数算術回路および前記第2のコントローラは、有限体計算またはモジュラ整数計算のいずれかの間の選択のためのモード選択制御を受信する、請求項1に記載のプロセッサ。
  3. 前記1つ以上の汎用レジスタは、最大の予想可能な体サイズを扱うために十分に大きい幅を有するように選択される、請求項1に記載のプロセッサ。
  4. 前記算術回路は、少なくとも1つの特殊目的レジスタと、1つ以上のビット入力データバスによってそれに接続された複数のサブALUとを含み、前記少なくとも1つの制御ビットのうちの1つを有する前記少なくとも1つの特殊目的レジスタは、用いられている有限体のサイズを決定するために、前記第1のコントローラによって監視され、前記第2のコントローラは、用いられている前記有限体のサイズを前記ALUに提供する、請求項1に記載のプロセッサ。
  5. 前記少なくとも1つの特殊目的レジスタは、前記表現よりも大きい長さを有し、前記少なくとも1つの特殊目的レジスタを充填するために、残りのセルにパディングが追加される、請求項4に記載のプロセッサ。
  6. 前記少なくとも1つの制御ビットは、前記少なくとも1つの特殊目的レジスタのそれぞれにおける上位ビットに配置される、請求項5に記載のプロセッサ。
  7. 前記少なくとも1つの特殊目的レジスタのそれぞれは、前記表現よりも大きい長さを有し、前記少なくとも1つの特殊目的レジスタのそれぞれを充填するために、残りのセルにパディングが追加される、請求項4に記載のプロセッサ。
  8. 前記少なくとも1つの制御ビットは、前記表現の最上位ビットに隣接して、前記少なくとも1つの特殊目的レジスタのそれぞれにおいて配置される、請求項7に記載のプロセッサ。
JP2014139376A 1997-04-18 2014-07-07 算術プロセッサ Expired - Lifetime JP5866128B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
GB9707861.2 1997-04-18
GBGB9707861.2A GB9707861D0 (en) 1997-04-18 1997-04-18 Arithmetic processor

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2011049610A Division JP2011134346A (ja) 1997-04-18 2011-03-07 算術プロセッサ

Publications (2)

Publication Number Publication Date
JP2014219994A JP2014219994A (ja) 2014-11-20
JP5866128B2 true JP5866128B2 (ja) 2016-02-17

Family

ID=10810977

Family Applications (4)

Application Number Title Priority Date Filing Date
JP54461898A Withdrawn JP2001520775A (ja) 1997-04-18 1998-04-20 算術プロセッサ
JP2007243107A Expired - Lifetime JP4980834B2 (ja) 1997-04-18 2007-09-19 算術プロセッサ
JP2011049610A Withdrawn JP2011134346A (ja) 1997-04-18 2011-03-07 算術プロセッサ
JP2014139376A Expired - Lifetime JP5866128B2 (ja) 1997-04-18 2014-07-07 算術プロセッサ

Family Applications Before (3)

Application Number Title Priority Date Filing Date
JP54461898A Withdrawn JP2001520775A (ja) 1997-04-18 1998-04-20 算術プロセッサ
JP2007243107A Expired - Lifetime JP4980834B2 (ja) 1997-04-18 2007-09-19 算術プロセッサ
JP2011049610A Withdrawn JP2011134346A (ja) 1997-04-18 2011-03-07 算術プロセッサ

Country Status (8)

Country Link
US (5) US6266717B1 (ja)
EP (2) EP0976027B1 (ja)
JP (4) JP2001520775A (ja)
AU (1) AU7329198A (ja)
CA (1) CA2286647C (ja)
DE (2) DE69841492D1 (ja)
GB (1) GB9707861D0 (ja)
WO (1) WO1998048345A1 (ja)

Families Citing this family (83)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7483935B2 (en) * 1995-08-16 2009-01-27 Microunity Systems Engineering, Inc. System and method to implement a matrix multiply unit of a broadband processor
GB9707861D0 (en) * 1997-04-18 1997-06-04 Certicom Corp Arithmetic processor
US5864703A (en) 1997-10-09 1999-01-26 Mips Technologies, Inc. Method for providing extended precision in SIMD vector arithmetic operations
US7197625B1 (en) * 1997-10-09 2007-03-27 Mips Technologies, Inc. Alignment and ordering of vector elements for single instruction multiple data processing
US6366940B1 (en) * 1998-03-02 2002-04-02 Matsushita Electric Industrial Co., Ltd. High-speed modular multiplication apparatus achieved in small circuit
US6199087B1 (en) * 1998-06-25 2001-03-06 Hewlett-Packard Company Apparatus and method for efficient arithmetic in finite fields through alternative representation
TW421756B (en) * 1998-10-01 2001-02-11 Wei Shiue Wen Arithmetic operation circuit of finite field GF(2<m>)
US6397241B1 (en) * 1998-12-18 2002-05-28 Motorola, Inc. Multiplier cell and method of computing
AU3286399A (en) * 1998-12-18 2000-07-12 Motorola, Inc. Circuit and method of cryptographic multiplication
FR2788616B1 (fr) * 1999-01-15 2001-04-20 St Microelectronics Sa Circuit de multiplication dans un corps de galois
US7277540B1 (en) * 1999-01-20 2007-10-02 Kabushiki Kaisha Toshiba Arithmetic method and apparatus and crypto processing apparatus for performing multiple types of cryptography
JP4484002B2 (ja) * 1999-10-04 2010-06-16 ネッツエスアイ東洋株式会社 演算プロセッサ
US6701336B1 (en) * 1999-11-12 2004-03-02 Maxtor Corporation Shared galois field multiplier
AU5871201A (en) * 2000-05-15 2001-11-26 M-Systems Flash Disk Pioneers Ltd. Extending the range of computational fields of integers
US8176108B2 (en) * 2000-06-20 2012-05-08 International Business Machines Corporation Method, apparatus and computer program product for network design and analysis
US7069287B2 (en) * 2000-09-19 2006-06-27 Worcester Polytechnic Institute Method for efficient computation of odd characteristic extension fields
DE10061997A1 (de) * 2000-12-13 2002-07-18 Infineon Technologies Ag Kryptographieprozessor
FR2818847A1 (fr) * 2000-12-26 2002-06-28 St Microelectronics Sa Circuit logique a polarite variable
US7162621B2 (en) 2001-02-21 2007-01-09 Mips Technologies, Inc. Virtual instruction expansion based on template and parameter selector information specifying sign-extension or concentration
US7181484B2 (en) * 2001-02-21 2007-02-20 Mips Technologies, Inc. Extended-precision accumulation of multiplier output
US7599981B2 (en) * 2001-02-21 2009-10-06 Mips Technologies, Inc. Binary polynomial multiplier
US7711763B2 (en) * 2001-02-21 2010-05-04 Mips Technologies, Inc. Microprocessor instructions for performing polynomial arithmetic operations
WO2002073395A2 (en) * 2001-03-09 2002-09-19 The Athena Group, Inc. A method and apparatus for multiplication and/or modular reduction processing
US7233998B2 (en) * 2001-03-22 2007-06-19 Sony Computer Entertainment Inc. Computer architecture and software cells for broadband networks
WO2003040911A2 (fr) * 2001-06-13 2003-05-15 Zencod S.A. Carte d'acceleration de traitement cryptographique
KR20030003435A (ko) * 2001-06-30 2003-01-10 주식회사 시큐리티테크놀로지스 암호시스템에 사용하기 위한 최적의 역원을 구하기 위한방법 및 장치
WO2003021423A2 (en) 2001-09-04 2003-03-13 Microunity Systems Engineering, Inc. System and method for performing multiplication
US7206410B2 (en) * 2001-10-10 2007-04-17 Stmicroelectronics S.R.L. Circuit for the inner or scalar product computation in Galois fields
US7269615B2 (en) * 2001-12-18 2007-09-11 Analog Devices, Inc. Reconfigurable input Galois field linear transformer system
US7283628B2 (en) 2001-11-30 2007-10-16 Analog Devices, Inc. Programmable data encryption engine
US7895253B2 (en) * 2001-11-30 2011-02-22 Analog Devices, Inc. Compound Galois field engine and Galois field divider and square root engine and method
US7177891B2 (en) * 2002-10-09 2007-02-13 Analog Devices, Inc. Compact Galois field multiplier engine
US7082452B2 (en) * 2001-11-30 2006-07-25 Analog Devices, Inc. Galois field multiply/multiply-add/multiply accumulate
US6766345B2 (en) 2001-11-30 2004-07-20 Analog Devices, Inc. Galois field multiplier system
US7508937B2 (en) * 2001-12-18 2009-03-24 Analog Devices, Inc. Programmable data encryption engine for advanced encryption standard algorithm
DE10164416A1 (de) * 2001-12-29 2003-07-10 Philips Intellectual Property Verfahren zum Multiplizieren zweier Faktoren aus dem Galois-Feld sowie Multiplizierer zum Durchführen des Verfahrens
CA2369537C (en) * 2001-12-31 2013-07-23 Certicom Corp. Method and apparatus for performing finite field calculations
US6941446B2 (en) * 2002-01-21 2005-09-06 Analog Devices, Inc. Single instruction multiple data array cell
US7000090B2 (en) * 2002-01-21 2006-02-14 Analog Devices, Inc. Center focused single instruction multiple data (SIMD) array system
US6865661B2 (en) 2002-01-21 2005-03-08 Analog Devices, Inc. Reconfigurable single instruction multiple data array
JP2003244128A (ja) * 2002-02-21 2003-08-29 Hitachi Ltd 暗号復号通信用半導体装置および記録再生機器
US7343389B2 (en) * 2002-05-02 2008-03-11 Intel Corporation Apparatus and method for SIMD modular multiplication
JP2004078053A (ja) 2002-08-22 2004-03-11 Sony Corp 暗号化装置
US7243292B1 (en) * 2002-10-17 2007-07-10 Telefonaktiebolaget Lm Ericsson (Publ) Error correction using finite fields of odd characteristics on binary hardware
US7197527B2 (en) * 2002-10-17 2007-03-27 Telefonaktiebolaget Lm Ericsson (Publ) Efficient arithmetic in finite fields of odd characteristic on binary hardware
US7028247B2 (en) * 2002-12-25 2006-04-11 Faraday Technology Corp. Error correction code circuit with reduced hardware complexity
US7139787B2 (en) * 2003-01-30 2006-11-21 Sun Microsystems, Inc. Multiply execution unit for performing integer and XOR multiplication
CN100530157C (zh) * 2003-04-08 2009-08-19 阿纳洛格装置公司 伽罗瓦域线性变换器格栅系统
US7693928B2 (en) * 2003-04-08 2010-04-06 Analog Devices, Inc. Galois field linear transformer trellis system
US7139900B2 (en) * 2003-06-23 2006-11-21 Intel Corporation Data packet arithmetic logic devices and methods
US8194855B2 (en) * 2003-06-30 2012-06-05 Oracle America, Inc. Method and apparatus for implementing processor instructions for accelerating public-key cryptography
US7634666B2 (en) * 2003-08-15 2009-12-15 Cityu Research Limited Crypto-engine for cryptographic processing of data
US7421076B2 (en) * 2003-09-17 2008-09-02 Analog Devices, Inc. Advanced encryption standard (AES) engine with real time S-box generation
US7171544B2 (en) * 2003-12-15 2007-01-30 International Business Machines Corporation Run-time parallelization of loops in computer programs by access patterns
KR100574965B1 (ko) * 2004-01-19 2006-05-02 삼성전자주식회사 유한체 곱셈기
DE102004013484B3 (de) * 2004-03-18 2005-08-11 Infineon Technologies Ag Rechenwerk
WO2005114802A2 (en) * 2004-05-11 2005-12-01 North Dakota State University Optimal signed-digit recoding for elliptic curve cryptography
US7512647B2 (en) * 2004-11-22 2009-03-31 Analog Devices, Inc. Condensed Galois field computing system
JP2006195563A (ja) * 2005-01-11 2006-07-27 Renesas Technology Corp 演算処理装置
CA2935823C (en) * 2005-01-18 2019-01-15 Certicom Corp. Accelerated verification of digital signatures and public keys
DE102005028662B4 (de) * 2005-03-04 2022-06-02 Ihp Gmbh - Innovations For High Performance Microelectronics / Leibniz-Institut Für Innovative Mikroelektronik Verfahren und Vorrichtung zum Berechnen einer Polynom-Multiplikation, insbesondere für die elliptische Kurven-Kryptographie
US8024551B2 (en) 2005-10-26 2011-09-20 Analog Devices, Inc. Pipelined digital signal processor
US8285972B2 (en) * 2005-10-26 2012-10-09 Analog Devices, Inc. Lookup table addressing system and method
US7728744B2 (en) * 2005-10-26 2010-06-01 Analog Devices, Inc. Variable length decoder system and method
US7634596B2 (en) * 2006-06-02 2009-12-15 Microchip Technology Incorporated Dynamic peripheral function remapping to external input-output connections of an integrated circuit device
US7664915B2 (en) * 2006-12-19 2010-02-16 Intel Corporation High performance raid-6 system architecture with pattern matching
DE102007007699A1 (de) * 2007-02-09 2008-08-14 IHP GmbH - Innovations for High Performance Microelectronics/Institut für innovative Mikroelektronik Reduktion von Seiten-Kanal-Informationen durch interagierende Krypto-Blocks
US8271570B2 (en) * 2007-06-30 2012-09-18 Intel Corporation Unified integer/galois field (2m) multiplier architecture for elliptic-curve crytpography
US7929707B1 (en) * 2007-09-06 2011-04-19 Elcomsoft Co. Ltd. Use of graphics processors as parallel math co-processors for password recovery
US8301990B2 (en) * 2007-09-27 2012-10-30 Analog Devices, Inc. Programmable compute unit with internal register and bit FIFO for executing Viterbi code
WO2009055906A1 (en) * 2007-11-02 2009-05-07 Certicom Corp. Signed montgomery arithmetic
US8359479B2 (en) * 2008-07-17 2013-01-22 Lsi Corporation High performance arithmetic logic unit (ALU) for cryptographic applications with built-in countermeasures against side channel attacks
CN101478785B (zh) * 2009-01-21 2010-08-04 华为技术有限公司 资源池管理系统及信号处理方法
US9747105B2 (en) 2009-12-17 2017-08-29 Intel Corporation Method and apparatus for performing a shift and exclusive or operation in a single instruction
US8626811B2 (en) 2010-04-30 2014-01-07 Certicom Corp. Method and apparatus for providing flexible bit-length moduli on a block Montgomery machine
US9965387B1 (en) * 2010-07-09 2018-05-08 Cypress Semiconductor Corporation Memory devices having embedded hardware acceleration and corresponding methods
WO2012159191A1 (en) 2011-05-20 2012-11-29 Research In Motion Limited Verifying passwords on a mobile device
EP2715968A4 (en) 2011-05-26 2015-08-12 Certicom Corp RANDOM FOR ENCRYPTION OPERATIONS
CA2838203C (en) 2011-06-06 2021-04-06 Certicom Corp. Squaring binary finite field elements
CN102981801B (zh) * 2012-11-07 2015-10-28 迈普通信技术股份有限公司 一种本地总线数据位宽的转换方法及装置
US9619207B1 (en) * 2014-10-27 2017-04-11 Altera Corporation Circuitry and methods for implementing Galois-field reduction
US11010166B2 (en) 2016-03-31 2021-05-18 Intel Corporation Arithmetic logic unit with normal and accelerated performance modes using differing numbers of computational circuits
CN109710308B (zh) * 2017-10-25 2023-03-31 阿里巴巴集团控股有限公司 任务的处理方法、装置和系统

Family Cites Families (39)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4216531A (en) * 1978-11-17 1980-08-05 Control Data Corporation Finite field multiplier
JPS60120439A (ja) * 1983-12-05 1985-06-27 Nec Corp 演算処理装置
WO1985003371A1 (en) * 1984-01-21 1985-08-01 Sony Corporation Circuit for calculating finite fields
DE3631992A1 (de) 1986-03-05 1987-11-05 Holger Sedlak Kryptographie-verfahren und kryptographie-prozessor zur durchfuehrung des verfahrens
JPS6382513A (ja) 1986-09-26 1988-04-13 Toshiba Corp バレルシフタ
FR2605818B1 (fr) * 1986-10-27 1992-09-18 Thomson Csf Codeur-decodeur algebrique de codes en blocs reed solomon et bch, applicable aux telecommunications numeriques
US5268584A (en) 1988-11-28 1993-12-07 The United States Of America As Represented By The Department Of Energy Strong liquid-crystalline polymeric compositions
US5077793A (en) 1989-09-29 1991-12-31 The Boeing Company Residue number encryption and decryption system
US5268854A (en) * 1990-11-13 1993-12-07 Kabushiki Kaisha Toshiba Microprocessor with a function for three-dimensional graphic processing
US5313530A (en) 1991-03-05 1994-05-17 Canon Kabushiki Kaisha Calculating apparatus and method of encrypting/decrypting communication data by using the same
JP3406914B2 (ja) 1991-09-05 2003-05-19 キヤノン株式会社 演算装置及びこれを備えた暗号化装置、復号装置
US5235614A (en) * 1991-03-13 1993-08-10 Motorola, Inc. Method and apparatus for accommodating a variable number of communication channels in a spread spectrum communication system
KR940001147B1 (ko) 1991-03-20 1994-02-14 삼성전자 주식회사 부분체 GF(2^m/2)을 이용한 GF(2^m)상의 연산방법 및 장치
JP2693651B2 (ja) * 1991-04-30 1997-12-24 株式会社東芝 並列プロセッサー
WO1994015423A1 (en) 1992-12-22 1994-07-07 Telstra Corporation Limited A cryptographic method
JPH06268530A (ja) 1993-03-16 1994-09-22 Hitachi Ltd 誤りパターン演算回路
DE69428627T2 (de) * 1993-06-10 2002-08-08 Koninkl Philips Electronics Nv Dekodierer für Wörter variabler Länge mit hohem Durchfluss und Vorrichtung mit einem solchen Dekodierer
US5497423A (en) 1993-06-18 1996-03-05 Matsushita Electric Industrial Co., Ltd. Method of implementing elliptic curve cryptosystems in digital signatures or verification and privacy communication
SG50474A1 (en) * 1993-11-04 1998-07-20 Cirrus Logic Inc Finite field inversion
US5555516A (en) 1993-11-04 1996-09-10 Cirrus Logic, Inc. Multipurpose error correction calculation circuit
JPH07175664A (ja) * 1993-12-16 1995-07-14 Dainippon Printing Co Ltd コンパイラ装置
US5459681A (en) * 1993-12-20 1995-10-17 Motorola, Inc. Special functions arithmetic logic unit method and apparatus
JP3702475B2 (ja) 1994-07-25 2005-10-05 ソニー株式会社 回路自動生成装置
US5577069A (en) * 1994-08-02 1996-11-19 National Semiconductor Corporation Signalling method and structure suitable for out-of-band information transfer in communication network
FR2723455B1 (fr) * 1994-08-05 1996-10-31 Sgs Thomson Microelectronics Circuit d'inversion d'elements d'un corps de galois
GB9506574D0 (en) 1995-03-30 1995-05-17 Cryptech Systems Inc Multiple bit multiplier
US5627855A (en) * 1995-05-25 1997-05-06 Golden Bridge Technology, Inc. Programmable two-part matched filter for spread spectrum
US5778009A (en) * 1995-06-14 1998-07-07 Quantum Corporation Dedicated ALU architecture for 10-bit Reed-Solomon error correction module
US5737424A (en) 1996-06-04 1998-04-07 Software Security, Inc. Method and system for secure distribution of protected data using elliptic curve systems
JP2846860B2 (ja) * 1996-10-01 1999-01-13 ユニデン株式会社 スペクトル拡散通信方式を用いた送信機、受信機、通信システム及び通信方法
GB9627069D0 (en) * 1996-12-30 1997-02-19 Certicom Corp A method and apparatus for finite field multiplication
GB9707861D0 (en) * 1997-04-18 1997-06-04 Certicom Corp Arithmetic processor
US5854759A (en) * 1997-05-05 1998-12-29 Rsa Data Security, Inc. Methods and apparatus for efficient finite field basis conversion
US6003057A (en) 1997-12-24 1999-12-14 Motorola, Inc. Galois field arithmetic logic unit circuit
US6199086B1 (en) 1997-12-24 2001-03-06 Motorola, Inc. Circuit and method for decompressing compressed elliptic curve points
US5982895A (en) 1997-12-24 1999-11-09 Motorola, Inc. Finite field inverse circuit for use in an elliptic curve processor
US6009450A (en) * 1997-12-24 1999-12-28 Motorola, Inc. Finite field inverse circuit
US5999959A (en) * 1998-02-18 1999-12-07 Quantum Corporation Galois field multiplier
US6088800A (en) 1998-02-27 2000-07-11 Mosaid Technologies, Incorporated Encryption processor with shared memory interconnect

Also Published As

Publication number Publication date
DE69811877D1 (de) 2003-04-10
EP0976027B1 (en) 2003-03-05
US20020136402A1 (en) 2002-09-26
EP1293891B8 (en) 2010-04-14
DE69811877T2 (de) 2003-12-18
US6230179B1 (en) 2001-05-08
US6349318B1 (en) 2002-02-19
US6266717B1 (en) 2001-07-24
US6735611B2 (en) 2004-05-11
JP2001520775A (ja) 2001-10-30
EP1293891B2 (en) 2017-04-12
DE69841492D1 (de) 2010-03-25
JP2011134346A (ja) 2011-07-07
JP2008059595A (ja) 2008-03-13
CA2286647A1 (en) 1998-10-29
US7424504B2 (en) 2008-09-09
EP1293891A3 (en) 2004-09-08
WO1998048345A1 (en) 1998-10-29
EP1293891B1 (en) 2010-02-03
CA2286647C (en) 2015-01-13
JP4980834B2 (ja) 2012-07-18
GB9707861D0 (en) 1997-06-04
JP2014219994A (ja) 2014-11-20
US20050044124A1 (en) 2005-02-24
EP1293891A2 (en) 2003-03-19
AU7329198A (en) 1998-11-13
EP0976027A1 (en) 2000-02-02

Similar Documents

Publication Publication Date Title
JP5866128B2 (ja) 算術プロセッサ
JP5266354B2 (ja) ガロア拡大体・積算/積算加算・積和演算装置
US6009450A (en) Finite field inverse circuit
JP3605181B2 (ja) 掛け算累算命令を使用したデータ処理
JP2722413B2 (ja) モンゴメリ法によるモジュラ乗算の実施方法
JP2005250481A (ja) 多重精度を支援する拡張型モンゴメリモジュラ掛け算器
JPH1195981A (ja) 乗算回路
US5426600A (en) Double precision division circuit and method for digital signal processor
US9372665B2 (en) Method and apparatus for multiplying binary operands
US6728744B2 (en) Wide word multiplier using booth encoding
JPH1021057A (ja) データ処理装置及びマイクロコンピュータ
Gutub et al. Efficient scalable VLSI architecture for Montgomery inversion in GF (p)
US7240204B1 (en) Scalable and unified multiplication methods and apparatus
US6963644B1 (en) Multi-word arithmetic device for faster computation of cryptosystem calculations
JP2597775B2 (ja) 除算方法および除算装置
US5805489A (en) Digital microprocessor device having variable-delay division hardware
JP2001034167A (ja) 演算装置及び暗号処理装置
US20030182343A1 (en) Fast multiplication circuits
CN113485751A (zh) 执行伽罗瓦域乘法的方法、运算单元和电子装置
JP2000207387A (ja) 演算装置及び暗号処理装置
EP1504338A1 (en) &#34;emod&#34; a fast modulus calculation for computer systems
JP2004226516A (ja) べき乗剰余演算方法及びそのプログラム
JP3210420B2 (ja) 整数上の乗算回路
CA2330169A1 (en) Wide word multiplier using booth encoding

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20150810

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20151106

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20151230

R150 Certificate of patent or registration of utility model

Ref document number: 5866128

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R150 Certificate of patent or registration of utility model

Ref document number: 5866128

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

EXPY Cancellation because of completion of term