"明細書に記載の発明。暗号法のための体のサイズは比較的大きくなる傾向があり、算術演算を許容時間内で実行するために高速の専用プロセッサが必要になる。したがって、高速モジュラ算術プロセッサか、F2nの算術演算をパフォームする専用プロセッサのいずれかが、多数インプリメントされている。特殊目的または専用プロセッサを使用することは、当技術分野では、周知のことである。こうしたプロセッサは一般にコプロセッサと呼ばれ、通常は、ホスト計算システムで利用されており、従って、命令および制御はメインプロセッサからコプロセッサに提供されている。なかでもRSAが暗号化システムとして慣用されていたが、優秀かつよりセキュアなEC暗号法が登場したため、モジュラ冪法modularexponentiation専用のプロセッサの必要性は、薄らいで来ている。ユーザはRSA暗号法からEC暗号法に移行しているものの、性能およびコストをほとんどあるいは全く犠牲にすることなくこれらの両方の演算をサポートする算術プロセッサに対するニーズがある。本発明の第1の目的は、有限体算術と整数算術を組み合わせ、EC暗号法に必要な演算と、例えばRSA暗号法で必要なモジュラ冪法とを提供するプロセッサを提供することにある。本発明の第2の目的は、異なる体またはレジスタサイズにスケーリングすることができる算術プロセッサ設計を提供することにある。本発明の第3の目的は、異なる体サイズで使用することができる算術プロセッサを提供することにある。本発明の第4の目的は、マルチシーケンス中の複数のステップを同時にパフォームすることによってマルチシーケンス演算実行を高速化するためにスケーリングすることができる算術プロセッサを提供することにある。本発明によれば、a一群の関連する算術演算をそれぞれ実行する複数の算術回路を有する論理演算装置であって、オペランドデータを受信するオペランド入力データバスと、前記算術演算の結果を戻す結果データ出力バスとを有する論理演算装置と、b前記オペランドデータバスおよび前記結果データバスに結合されたレジスタファイルと、c前記ALUおよび前記レジスタファイルに結合された制御装置であって、算術演算を要求するモード制御信号に応答して前記複数の算術回路の1つを選択し、かつ前記レジスタファイルと前記ALUの間でデータアクセスを制御することにより、前記レジスタファイルが前記算術回路によって共用されるようにする制御装置とを含む算術プロセッサが提供される。本発明によれば、有限体回路および整数算術回路を含み、かつ汎用レジスタおよび専用レジスタを備えたプロセッサが提供される。本発明によれば、有限体算術および整数算術を両方とも実行し、専用レジスタおよび汎用レジスタの両方ならびに算術回路を共用する算術プロセッサが提供される。この目的のために、多項式基底が整数の標準的な基数累乗基底standardradixpowerbasisと同様であるので、有限体ハードウェアについて多項式基底を想定する。本発明によれば、有限体算術と整数算術を組み合わせ、EC暗号法に必要な演算と、例えばRSA暗号法で必要なモジュラ冪法とを提供するプロセッサを提供できる。本発明によれば、異なる体またはレジスタサイズにスケーリングすることができる算術プロセッサ設計を提供できる。本発明によれば、異なる体サイズで使用することができる算術プロセッサを提供できる。本発明によれば、マルチシーケンス中の複数のステップを同時にパフォームすることによってマルチシーケンス演算実行を高速化するためにスケーリングすることができる算術プロセッサを提供できる。図1を説明する。算術プロセッサの一実施形態は一般的に参照番号1で示してある。当然のことであるが、この算術プロセッサは総合計算システム中の汎用プロセッサとともに使用することができ、データはこの計算システムと算術プロセッサの間で交換される。算術プロセッサには、レジスタファイルと呼ばれる一群の汎用レジスタGP2が含まれている。レジスタファイルはECの点加算pointaddition、点倍加pointdoublingなどのための中間記憶域として使用することができるものである。一群の汎用レジスタ2はデータ入力またはオペランドバス6を介してALUarithmeticlogicunit4と通信を行なっている。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ビットの計算をブロック単位で行い、ついで、再組み立てして、全幅結果fullwidthresultを得ることができる。典型的には、算術プロセッサ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は、協働し、任意選択で、桁上げ保存技術または桁上げ伝搬carrypropagationを使用して、整数加算および整数減算の機能を実行する。図2を説明する。サブALU18は、特殊レジスタ16から供給されたオペランドに対して、次の論理機能、すなわち、XORと、シフト左/右と、XORシフトと、整数加算と、整数減算を実行する。これらの機能は、1つのサブALU18か、マルチプルサブALUに含めることができる。マルチプルサブALU18を設けることにより、当該プロセッサは複数の演算例えば、有限体反転を同時にパフォームすることができる。図5を説明する。図5は図2のALU4のビットスライスを詳細に示す。図5aの41は、当該ビットスライスを示す。次の考察では、ビットスライス41と関係付けをしたロジック回路と関連して、各特殊レジスタのセルを相互接続する、と言う。ビットスライスに含まれたロジック回路は、一般的に、図2に示すようなサブALU18のうちの1つで表される。ビットスライスの構成は、Nビットレジスタに対しては、N回繰り返えすことができる。さらに、明確にするため、Nをレジスタ内のセル数と定義し、レジスタ内の個別のセルを例えばAiという。ここで、0≦i≦N-1であり、AN-1は特殊レジスタの最も右にあるセルである。レジスタの内容は小文字で参照され、例えば、長さnのビットベクトルAは、a0をLSBとして、ビットにa0,...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=b0,...bn1の形態となり、aは多項式表現でa=a0,...an1の形態となる。モジュラスビットベクトルmは、m=m0,...mnの形態を有する。モジュラスレジスタは、モジュラスを表すのに必要なビット数より1ビット多い、ことに留意されたい。あるいはまた、最上位ビットmnが1であるので、この最上位ビットを暗黙に定義することができ、mをm0,...mn1で表すこともできる。F2nにおいて、乗算は、次のような疑似コードにより明確に記述される一連のステップとして実装することができる。C=0{C1=0}Forifromn1to0doForjfromn1to0do{cj=ci1bn1aicn1mj}この乗算を実行する際には、MSBmostsignificantbitからLSBleastsignificantbitの順に、被乗数と乗数のbiの各ビットとの部分積を形成する。その前の部分積のMSBがセットされた場合には、部分積はモジュラスによって簡約reduceされる。乗算の実装は、1×N乗算器を逐次使用することによって行なうことができ、この場合、上記疑似コードの内側のforループはパラレルに実行される。各セルがそれぞれ2進数miの1つを含むように、モジュラスレジスタMには、MSBmnを剥ぎ取ったモジュラスビットベクトルmがロードされる。図示の実装では、ビットmiは、ベクトルのMSBを最も左側のビットとして、左から右に配列されている。すなわち、セルMn1はビットmn1を含む。N≠nである場合、スティルビットstillbitMn1はMN1にストアされる、すなわち、データは左寄せされる。各セルが個々に2進数aiまたはbiの1つを含むように、シフトレジスタAおよびBには、有限体元finitefieldelementビットベクトルaおよびbがそれぞれロードされる。有限体元aおよびbは、左寄せされ、各レジスタにストアされ、乗数レジスタbのMSBが常に左境界セルのビット、すなわちan1,an2,...a0およびbn1,bn2,...b0で利用可能になっている。ベクトルaおよびbの長さがレジスタの長さより短い場合には、残りのセルには0がパディングされる。以上、図2に示すコントローラ20によって一般的に実行される。逐次乗算被乗数を逐次小さくするなどの他の構成も可能であるが、そのような構成では、体のサイズに柔軟性を持たせることができないし、同様に、制御ビット位置を固定することができない。この乗算アルゴリズムを対応して変化させれば、LSBからMSBへのビット順序づけも可能である。ここでは、ALU4のビットスライス41は、有限体において乗算を実装するために、記載されている。ビットスライス41は第1および第2のコントローラブル加算器54および56を含み、第1および第2のコントローラブル加算器54および56は、それぞれ、XOR機能を有する。レジスタBの最上位のセルBN1は、加算制御信号bn157を第1の加算器54に供給する。第1の加算器54への入力58および60は、レジスタセルAiおよびアキュムレータセルCiから得られる。第1の加算器54からの出力62は、モジュラスレジスタセルMiからの入力64とともに、第2の加算器56の入力に接続されている。加算器54は出力62=入力60入力58および制御57という演算をパフォームする。この演算を図5bに詳細に示す。ついで、第2の加算器56からの出力はアキュムレータセルCiに接続されている。第2の加算制御信号66はアキュムレータC46の最上位のセルCN-1から得られる。アキュムレータCの最上位のビットCN-1がセットされたとき、当然に、モジュラスベクトルmによるアキュムレータCでの部分積のモジュラ簡約が、第2の加算制御信号66により実装される。図5cに詳細に示すように、加算器56は、出力=入力64入力62および制御66という演算を行う。Bレジスタはクロックシフトレジスタである。コントローラ20から供給することができるクロック信号CLK168は、部分積が計算される度に、このレジスタの内容を左にシフトさせる。図6を説明する。図6は図5のビットスライス41の詳細な回路実装を示す。この回路実装は有限体乗算を行なうためのものであって、参照番号70で示す。図6のビットスライスi、70を説明する。図6では、説明のために、ビットスライスは3つしか示していない。セルaiは、ANDゲート72により、加算制御信号bn-1とAND演算される。ANDゲート72の出力74は、アキュムレータCの隣接するセルCi-1からの入力78とともに、XORゲート76の入力に接続される。よって、項ci1bn1aiの計算が実装される。項cn-1mjは、ANDゲートを利用して、信号cn80とmi82をAND演算することにより、実装される。ANDゲートの出力86は、XORゲート76の出力88とともに、XORゲート84の入力に接続される。XORゲート84の出力90は、セルCi92に接続される。よって、式cj=ci1bn1aicn-1mjが実装される。この汎用の逐次乗算器により、2つのnビット有限体元の積がnクロックサイクルで生成されることになる。同期カウンタは、コントローラ20に含めることができるものであって、繰返し回数の制御を行うものが好ましい。以上の記述は、加算器54が整数加算器のビットスライスであって、加算器56が整数減算器のビットスライスであるときに、整数モジュラ乗算に適用される。このことは後程説明する。加算有限体F2n中の乗算に関連して、回路を説明したが、その他の計算オペレーションも容易にパフォームすることができる。有限体加算は桁上げが生じないので、この点で、整数算術より有利である。有限体サムsumの計算では、有限体中の2つの元aおよびbの加算が、単に、aとbのXORであるので、XORゲートを注目レジスタの各セルに導入するだけでよい。したがって、図5に戻ると、入力100はセルBiから第1の加算器54に供給され、第2の加算器56は簡約に使用される。ついで、加算器54からの出力はセルCiに直接書き込まれる。オペランドがレジスタaおよびbに移動された後で、単一のクロックサイクルで、加算をパフォームすることができる。その加算をALUでパフォームするのは可能であり、その結果をレジスタファイルの汎用レジスタにライトバックするのも可能である。整数加算では、加算器54は整数加算器のビットスライスであり、整数加算結果に基づきモジュラオーバフローか否かを検査しなければならない。この状態が生じた場合には、整数減算器のビットスライスである加算器56は、その結果を簡約するのに用いられる。二乗ある数を二乗するには、異なる2つの数の乗算と同じ時間でパフォームすることができる。多項式基底における二乗は、特定の既約irreducibleが二乗展開と明示的に結線されたhardwired場合は、単一のクロックサイクルでパフォームすることができる。あるいはまた、同じ入力を乗算して二乗をパフォームすることができる。反転F2nの有限体元の反転は、ユークリッドの互除法を使用してパフォームすることができ、また、追加のコントロールロジックを有する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では、セルURiおよびLRiはXORゲート120でXOR演算されて、出力122が生じる。制御信号124は、可能な3つの入力のうち1つがセルURiおよびULiに書き込まれるかどうかを決定する。入力は隣接するセルまたは出力122からの左または右シフトである。制御信号Bは後程記載する状態表によって決定される。ULレジスタ116またはLLレジスタ118では、セルULiおよびLLiはXORゲート126でXOR演算されて、出力128が生じる。制御信号130は、可能な2つの入力のうち1つがセルULiおよびLLiに書き込まれるかどうかを決定する。入力は隣接するセルi-1または出力128からの左シフトである。この場合も、制御信号130は後程記載する状態表によって決定される。制御変数をULレジスタの長さkuと、LLレジスタの長さklと仮定したとすると、Δ=ku-klとなる。値klおよびkuは、好ましくは、同期ダウンカウンタで実装され、Δは好ましくは同期アップ/ダウンカウンタで実装される。カウンタレジスタku、kl、およびΔも用意されている。ULおよびLLレジスタは左シフトレジスタであり、URおよびLRレジスタは、ともに、左および右シフトレジスタである。さらに、カウンタレジスタでは、Δには0がロードされ、kuはnに初期化される。制御ビットラッチは、1がアップカウントを示し、0がダウンカウントを示すトグル機能を有する。U/D制御は、最初、1にセットされる。この場合、ALUで反転を実行する制御装置に含まれるシーケンサは、次のような出力を有する。DecklデクリメントklklDeckuデクリメントkukudecDeltaデクリメントΔincDeltaインクリメントΔtoggleトグルアップ/ダウンlsUL左シフト左上レジスタlsLL左シフト左下レジスタlsUR左シフト右上レジスタlsLR左シフト右下レジスタrsUR右シフト右上レジスタrsLR右シフト左下レジスタoutLR出力右下レジスタoutUR出力右上レジスタdaddlsLLダウンXORおよび左シフト左下レジスタuaddlsULアップXORおよび左シフト左上レジスタインバータのオペレーションの概要を表す状態表は次のようになっており、MuおよびClはそれぞれレジスタULおよびLLの上位ビットであり、MuおよびClは現在の状態を決定する。レジスタおよびカウンタ上でアクションがパフォームされると、これによりインバータは新しい状態となる。このプロセスは、kuまたはklが0になるまで繰り返され、右レジスタRLまたはRUの一方はg-1を含み、もう一方はモジュラス自体を含むことになり、これは、後続の乗算または反転演算で使用するために、レジスタmにリストアrestoreすることができる。整数算術多項式表現と整数表現は非常に良く似ていることから、ALUでハードウェアを共有することが可能でなる。加算では、整数算術は、桁上げが必要であることから、複雑になるだけである。ALUの整数算術演算は、例えば乗算演算を利用すれば、最もよく説明することができる。疑似コードで表した次の一連のステップを参照して、Zにおける乗算を説明する。前述したのと同様に、aおよびbは乗算されるビットベクトルであり、cはaとbの積であり、C=c0,c1,...,cn-1である。C=0M=0Forifrom0ton1doCext←CForjfrom0ton1docj=biajmjcjmod2mj1=bjajmjcj/2ここで、Cext←CForjfromn1to0docj-1=cjcj-1ext=cjextとなる。同様に、このようにすれば、XORを減算器で置換し、しかも、mレジスタに素数をロードした場合には、整数modulopintegersmodulopを反転させることができる。改善策であるが、桁上げ保存方法を採用することにより、桁上げ伝搬を遅らせることができる。図6の実施形態で説明した有限体乗算の場合のビットスライス70を修正して、整数表現に対する乗算を含むようにすることができる、ことを観測することができる。注意すべきことであるが、整数乗算では、レジスタには、ビットベクトルがF2mとは逆順でロードされる、すなわち、レジスタの最左端のセルがビットベクトルのLSBを含む。整数乗算では、逐次successive部分積の間で、桁上げを実装する必要があり、さらに、部分積がモジュラスで簡約されていないので、逐次部分積の加算による桁上げを供給しなければならない。そこで、アキュムレータレジスタCが拡張してあり、図5に示すように、新しいレジスタCext49が設けてある。各部分積が形成される前に、アキュムレータCの最下位ビットセルCMを拡張レジスタCextの最上位ビットセルCextlにシフトし、ついで、アキュムレータCおよびCextは両方ともLSBに向けて1ビットだけシフトされる。最終結果はCおよびCextで獲得され、Cextには、当該積の低位ビットが含まれる。このことは、上記オペレーションCext←Cで表される。図8を説明する。図8はビットスライス170を示す。ビットスライス170は図6のビットスライス70に類似している。したがって、同様のコンポーネントは、識別するために、図6の説明で使用した参照番号を100番台にして使用することにする。つまり、参照番号70は170となる。図8の編成が図6と異なる点は、モジュラスレジスタmが桁上げレジスタとして使用され、モード選択信号Z/F2m171が提供されるという、2つの重要な点である。ここで、項cj=cj-1biaicn-1mjは、既に説明した有限体乗算でそうであったように、制御信号bmとレジスタセルAiの内容との積で実装され、この積はANDゲート172で実装される。ANDゲート172の出力174はレジスタセルcj-1の内容とXORゲート176によりXOR演算され、参照番号158で示す出力項cj-1biaiが生成される。この出力信号は、ANDゲート160から得られた参照番号185で示す項cn-1mjと、XORゲート184を使用してXOR演算され、項cjが生成される。さらに、積’biai,cj-1’162と、積cj-1biai,mj163とのサムsumから、桁上げ項miが生成され、セルmi182に書き込まれる。積の項162および163はANDゲート164および166によってそれぞれ実装される。積の項162と163のサムはORゲート167によって実装される。モード選択信号Z171は、桁上げ入力信号cn180とOR演算され、クロック信号169とAND演算168される。したがって、Z=0をセットすることにより、有限体算術が実装され、Z=1をセットすることにより、整数算術が実装される。図8は、図6で既に説明した有限体乗算を、組合せ有限体/整数乗算器に変換するのに必要な修正を示す。乗算の低位のビットを集めるため、出力レジスタCが拡張されることに留意されたい。Zにおける計算はモジュラスなしでパフォームされるので、モジュラスレジスタMは、部分積を簡約するためではなく、桁上げのホルダとして使用される。制御信号Z/F2M171は、ALUのための整数乗算回路をイネーブルにする。最終桁上げ伝搬finalcarrypropagationは、マンチェスターキャリーチェーンManchestercarrychainによって提供することができ、レジスタ長が長いことから、1レイヤまたは2レイヤの桁上げスキップ機構によって拡張可能である。さらにnサイクルだけクロックすることも可能であり、桁上げ保存加算器が桁上げを完全にマージすることが可能である。1つの入力はその入力において条件付きで補数をとることができ、しかも、加算器のLSBでホットキャリインが行われる場合には、2の補数の減算は、桁上げ伝搬加算器で実装することができる。乗算時のリップル桁上げは、桁上げスキップにより改良したとしても、許容できなくなるが、この桁上げ伝搬は、桁上げ保存加算器を使用すれば、ほぼ完全に除去することができる。このようにすると、部分積が冗長表現されるが、乗算が完了した後は解決される。さらに別の実施形態では、ALU4は、図9に示すように、計算速度が線形に増加するように修正することができる。これは、特殊レジスタ16′からの連続ビットを一度に処理し、修正したサブALU190で示す追加回路を実装し、図9に示すようにインクリメント加算を処理することによって達成される。複数のビットを処理すると、速度が線形増加することになる。例えば、計算が順次にパフォームされる場合は、その順序中の2つ以上のステップを同時に実行することができる。この場合、コントローラ20′は特殊レジスタ16′からの2ビット以上の制御ビット194を処理することになり、制御装置の入力192は図9にマルチビットラインとして示す。有限体に対して一度に2ビット実行する乗算器twobitatatimemultiplierの回路図を図10に示す。この実装では、ビットスライス200はその数がXORゲート210の数の2倍であり、当該加算の2つの項を実装している。この乗算器は乗数から2ビットをとり、被乗数aiおよびai-1を2回だけ隣接してシフトすることにより加算し、モジュラスMiおよび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が実装された場合には、相補形回路を使用することもできる、ことに留意されたい。さらに、レジスタおよびビットベクトルのオリエンテーション、すなわち、左、右、上、下には、これらの方向の他の編成も含まれる。本明細書で採用した項および式は、これらのものに限定されるものではなく、例として使用したものであり、これらの項および式を使用したことに、図示および記述した機構またはその一部分の均等物を排除する意図はなく、本発明の範囲内で種々の修正が可能であることを認識されたい。"