JP4300332B2 - Divider - Google Patents
Divider Download PDFInfo
- Publication number
- JP4300332B2 JP4300332B2 JP2000005554A JP2000005554A JP4300332B2 JP 4300332 B2 JP4300332 B2 JP 4300332B2 JP 2000005554 A JP2000005554 A JP 2000005554A JP 2000005554 A JP2000005554 A JP 2000005554A JP 4300332 B2 JP4300332 B2 JP 4300332B2
- Authority
- JP
- Japan
- Prior art keywords
- parallel
- digit
- unit
- subtractor
- subtraction
- 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 - Fee Related
Links
Images
Description
【0001】
【発明の属する技術分野】
本発明は、除算器に関し、特に、丸め誤差なしで正確な剰余を算出でき高速演算が可能な冗長2進数の演算を行う除算器に関する。
【0002】
【従来の技術】
公開鍵暗号演算用の専用ハードウェアなどに用いられる除算器は、例えば1024桁以上の高精度な減算器によって構成されている。しかし、この減算器として、通常の2進数の演算を行う(2進表現による)減算器を用いると、各桁(各ビット)の単位減算器の間において桁上がり又は桁借りの伝搬が生じることが避けられない。このため、演算精度を向上させるために除算器の演算桁数(ビット数)を増加させた場合、この桁上がり又は桁借りの伝搬に起因して、遅延時間が演算桁数に比例して増加する。また、キャリールックアヘッド方式も高速化に向いてはいるが、多精度演算やチップスライス化による精度の拡張には不向きである。
【0003】
そこで、遅延を演算桁数にかかわらず一定にすることのできる冗長2進数(冗長2進表現)を利用することが考えられる。通常、冗長2進数の演算(冗長2進表現による演算)では、2進数を冗長2進表現に変換し、冗長2進表現された値の間での演算を行い、結果を通常の2進数に逆変換する。しかし、RSA公開鍵暗号演算で使用される「べき乗剰余演算」では乗算と除算を繰り返し演算するので、一度の乗算と除算の演算が終了した後に変換するのではなく、冗長2進表現で繰り返し減算を行い、最後の一度だけの変換で済む。従って、RSA公開鍵暗号演算は、変換による処理時間は考慮しなくてもよい範囲にある。
【0004】
冗長2進表現における減算は、減数の符号を反転させることにより加算器で実現できる(例えば、斎藤等“1桁2ビット/3ビット混合表現を用いた高速冗長2進加減算器の構成法”、信学技報、CAS99-41, VLD99-41, DSP99-57, pp.83-90(1999-06) 、文献▲1▼と言う)。具体的には、減数のそれぞれのビットを入れ替えるだけでよい。また、冗長2進表現による除算回路についても、既に提案されている(高木等“冗長2進表現を利用したVLSI向き高速除算器”、電子通信学会論文誌、Vol.J67-D 、No.4、pp.450-457(1984-04) 、文献▲2▼と言う)。
【0005】
【発明が解決しようとする課題】
しかし、上記の冗長2進数の演算を行う除算器は、本来、RSA公開鍵暗号演算用の除算器として提案されたものでない。このため、上記の冗長2進数の演算を行う除算器を公開鍵暗号演算用の除算器として用いることは、実質的にはできない。
【0006】
即ち、上記の除算器は固定演算であり、丸めによる商の誤差を含み、また、剰余を考慮していない。換言すれば、丸め誤差なしで正確な剰余を算出すると言う、RSA公開鍵暗号演算用のような高精度の演算のために必須である演算ができない。従って、上記の冗長2進数の演算を行う除算器を、そのまま公開鍵暗号演算用の専用ハードウェア等における除算器として用いても、当該除算器に求められる1024桁以上の高精度な演算を行うことができない。また、上記の冗長2進数の演算を行う除算器は、固定演算であるので、演算桁数を1桁でも越えてしまうと演算不能になる。このため、上記の冗長2進数の演算を行う除算器のチップスライス化は不可能である。
【0007】
本発明は、丸め誤差なしで正確な剰余を算出できる除算器を提供することを目的とする。
また、本発明は、公開鍵暗号演算等に適した除算器を提供することを目的とする。
また、本発明は、任意精度に拡張可能である除算器を提供することを目的とする。
【0008】
【課題を解決するための手段】
本発明による除算器は、冗長2進数の演算を行う演算精度n(nは正の整数、この明細書において同じ)桁の並列型の除算器であって、除算回路と減算判断回路とを有する。除算回路は、n個の単位減算器を並列に接続してなるn桁の並列型の減算器を、1桁づつシフトして接続して、n段に構成してなる。減算判断回路は、除算回路を構成するn桁の並列型の減算器を構成する前記n個の単位減算器の各々に対応して設けられたn個の単位比較器からなる演算判断回路であって、当該n桁の並列型の減算器を構成するn個の単位減算器の各々において求まる部分剰余と除数との減算結果であって冗長2進数である2ビットで表現された減算結果に基づいて、前記2ビットを比較することにより、当該n桁の並列型の減算器を構成する前記n個の単位減算器の各々における減算結果を判断し、当該減算結果が正又は0である場合に当該n桁の並列型の減算器を構成するn個の単位減算器の各々において求まる部分剰余を当該真の部分剰余として次段に出力させ、当該減算結果が負である場合に当該n桁の並列型の減算器を構成するn個の単位減算器の各々に入力された前段の部分剰余を当該真の部分剰余として次段に出力させる。
【0009】
本発明の除算器によれば、n個の単位減算器を並列に接続してなるn桁の並列型の減算器を用いて除算回路が構成されると共にこれに減算判断回路が付加される。これにより、並列型の減算器における全ての桁の演算結果を参照して減算結果の正負を判断することができる。即ち、冗長2進表現を利用した減算においては、桁上がり又は桁借りが高々1桁しか伝搬しないため、最大で全ての桁における演算結果を参照して減算結果の正負を判断する必要があるが、減算判断回路により正しくこれを判断することができる。従って、並列型の減算器を用いて冗長2進数の演算による除算を高速で行うことができるので、丸め誤差なしで正確な剰余を算出する演算を高速で行うことができる。この結果、本発明の除算器を、RSA公開鍵暗号演算用のように、例えば1024桁以上の高精度の演算を行う除算器として用いることができる。また、並列に接続する単位減算器の個数nを増加させて演算精度を向上できるので、除算器をチップスライス化(モジュール化)することができる。
【0010】
また、本発明による他の除算器は、冗長2進数の演算を行う演算精度n桁の並列型の除算器であって、除算回路と減算判断回路とを有する。除算回路は、n個の単位減算器を並列に接続してなるn桁の並列型の減算器を、1桁づつシフトするように、n段に構成してなる。減算判断回路は、除算回路を構成するn桁の並列型の減算器を構成する前記n個の単位減算器の各々に対応して設けられたn個の単位比較器からなる演算判断回路であって、当該n桁の並列型の減算器を構成するn個の単位減算器の各々において求まる部分剰余と除数との減算結果であって冗長2進数である2ビットで表現された減算結果に基づいて、前記2ビットを比較することにより、当該n桁の並列型の減算器に入力される被減数と減数の大小を判断し、当該被減数が減数より大きいか又は減数と等しい場合に当該n桁の並列型の減算器を構成するn個の単位減算器の各々において求まる部分剰余を当該真の部分剰余として次段に出力させ、当該被減数が減数より小さい場合に当該n桁の並列型の減算器を構成するn個の単位減算器の各々に入力された前段の部分剰余を当該真の部分剰余として次段に出力させる。
【0011】
本発明の他の除算器によれば、前述と同様の理由で、減算判断回路により並列型の減算器における全ての桁の演算結果を参照して減算結果の正負を判断することができるので、並列型の減算器を用いた冗長2進数の演算を可能とし、丸め誤差なしで正確な剰余を算出する演算を高速で行うことができる。この結果、本発明の除算器を高精度の演算を行う除算器として用いることができ、また、除算器をチップスライス化することができる。
【0012】
また、本発明による更に他の除算器は、冗長2進数の演算を行う演算精度n桁の並列型の除算器であって、除算回路と減算判断回路とn個の保持回路とを有する。除算回路は、n個の単位減算器を並列に接続してなるn桁の並列型の減算器からなる。減算判断回路は、除算回路に対応して設けられ、当該n桁の並列型の減算器における減算結果を判断し、当該減算結果が正又は0である場合に当該n桁の並列型の減算器を構成するn個の単位減算器の各々において求まる部分剰余を当該真の部分剰余として次段に出力させ、当該減算結果が負である場合に当該n桁の並列型の減算器を構成するn個の単位減算器の各々に入力された前段の部分剰余を当該真の部分剰余として次段に出力させる。n個の保持回路は、除算回路を構成するn桁の並列型の減算器を構成するn個の単位減算器毎に設けられたn個の保持回路であって、減算判断回路によって定められる当該対応する単位減算器の真の部分剰余を入力され、所定のクロックに同期して当該入力を1桁シフトさせて当該対応する単位減算器に隣接する単位減算器に入力する。
【0013】
本発明の更に他の除算器によれば、前述と同様の理由で、減算判断回路により並列型の減算器における全ての桁の演算結果を参照して減算結果の正負を判断することができるので、並列型の減算器を用いた冗長2進数の演算を可能とし、丸め誤差なしで正確な剰余を算出する演算を高速で行うことができる。この結果、本発明の除算器を高精度の演算を行う除算器として用いることができる。また、保持回路を設けることにより、除算回路を簡単な構成として小さな回路規模で除算器を実現することができる。更に、除算器をチップスライス化することができると共に、そのモジュール自体を小さくでき、かつ、少ないモジュールの数で任意精度に拡張することができる。
【0014】
【発明の実施の形態】
〔第1の実施態様〕
本発明の除算器は、冗長2進数の演算を行う演算精度n桁(nビット)の並列型の除算器であって、図1に示すように、除算回路と減算判断回路2とを有する。除算回路は、n個の単位減算器(減算器セル)10を並列に接続してなるn桁の並列型の減算器1を、1桁づつシフトして接続して、n段に構成してなる。減算判断回路2は、図1及び図2(A)に示すように、除算回路を構成するn桁の並列型の減算器1毎に設けられ、当該n桁の並列型の減算器1における減算結果を判断する。単位減算器10は、図2(B)に示すように、周知の減算器(SUB.)11からなる。
【0015】
なお、図1において、図示の簡単のために、n=4としている。また、減算判断回路2は、n桁の並列型の減算器1毎に設けられるが、図示の簡単のために、1段についてのみ示す。更に、単位減算器10の各々に、C33乃至C00の符号を付して表している。
【0016】
減算判断回路2は、当該n桁の並列型の減算器1における当該減算結果が正又は0である場合に、当該n桁の並列型の減算器1を構成するn個の単位減算器10の各々において求まる部分剰余を、当該真の部分剰余として次段に出力させる。また、減算判断回路2は、当該減算結果が負である場合に、当該n桁の並列型の減算器1を構成するn個の単位減算器10の各々に入力された前段の部分剰余を、当該真の部分剰余として次段に出力させる。
【0017】
減算判断回路2は、例えば比較器からなる。比較器は、図2(C)に示すように、当該n桁の並列型の減算器1を構成するn個の単位減算器10の各々に対応して設けられたn個の単位比較器20を、カスケード接続してなる。
【0018】
単位減算器10における周知の減算器(SUB)11は、例えば図3に示すように、複数のNANDゲート回路及びNORゲート回路により構成される。例えば、X−端子及びX+端子には、各々、冗長2進数の採る値{−1,0,1}の内の−1及び+1が入力される。X−端子に−1が入力される場合、X+端子には0が入力される。X+端子に+1が入力される場合、X−端子には0が入力される。冗長2進数の0を入力する場合、X−端子及びX+端子に共に0が入力される。なお、X−1及びY−1は下位桁からの入力であり、Ci−及びCi+は下位桁からの桁上がり又は桁借りであり、C−及びC+は上位桁への桁上がり又は桁借りであり、OUT−及びOUT+は当該出力である。
【0019】
本発明の除算器は、図1及び図2から判るように、冗長2進表現による減算を利用すると共に、減算器1段ごとにそれぞれ減算判断回路2を付加したものである。減算判断回路2を付加する理由は、減算結果の正負を判断する際に、最大すべての桁をもって判断する必要があるためである。本発明の除算器は、丸め誤差なしで正確な剰余を得ることができ、公開鍵暗号演算等にも不可欠な演算特性を得ることができる。また、本発明の除算器は、後述するように、これを1個の除算器モジユールとし、これを複数個用いることによって、通常の2進数で行われてきた任意精度に同じように、その演算精度を任意精度に拡張可能である。これにより、本発明者らが先に提案した任意精度に拡張可能な公開鍵暗号演算用の専用ハードウェア(中村等”RSA公開鍵暗号システム実装におけるビットスライス化の一方式”、電学論(C)、Vol.118-C, No.7/8, pp.1073-1081(1997-7/8))にそのまま適用できる。
【0020】
以下、本発明の除算器について、詳細に説明する。最初に、冗長2進表現及びその計算規則について簡単に説明し、次に、本発明の除算器における減算器の構成を説明し、更に、本発明の第1の実施態様である並列型除算器について説明する。
(冗長2進表現及びその計算規則)
整数部n桁の2進数は、
(an-1 an-2 ・・・a0 )2 ・・・・式(1)
と表すことができる。これは、
(Σai ・2i )10 ・・・・式(2)
を意味する(ここで、Σは、i=0からn−1までである)。通常の2進数は、各桁の要素ai が、{0,1}の値をとるが、冗長2進表現は、基数2のSD(Signed Digit)表現の一種であり、各要素ai が{−1,0,1}の値をとる(文献▲1▼、文献▲2▼、富田等”計算機システム工学”昭晃堂1988年、参照)。従って、この要素を表現するには最低2ビット必要である。
【0021】
この方法により、加算時の桁上げや減算時の桁借りの伝搬を防止することで、高速に演算を行うことができる。この方法は、演算の桁数が多くなるほど効果が現れる。また、冗長2進表現による加算は、通常の2進数の加算と同じように演算ビット幅の直列に接続した全加算器を用いて構成できる。そのため論理回路設計上、演算ビットの拡張は全加算器の単純拡張で容易に実現可能である。冗長2進表現による演算では、2進数を冗長2進表現に変換し、冗長2進表現間での演算を行い、結果を通常の2進数に逆変換する。
【0022】
冗長2進表現による加算においては、その過程を以下の2つのステップで行う。即ち、
1.桁i、桁i−1で中間和と桁上げを求める、
2.中間和と桁上げを加算する。
【0023】
各桁の要素ai が{−1,0,1}である冗長2進表現では、桁iで桁i−1からの桁上げに基づいた桁i+1への桁上げを阻止でき、加算を定数時間で行うことができる。冗長2進による加算規則を図4(A)に示す。入力は、それぞれ2ビットの被加数xi 、加数yi に加え、桁上げの伝搬を阻止するため1つ下位桁の入力xi-1 、yi-1 も調べる。
【0024】
冗長2進表現による減算の場合、符号の反転は各桁それぞれの符号を反転させることによって実現できるので、加算と同様に扱うことができる(文献▲1▼参照)。演算(A−B)を実現するためには、加算器に、Aと、各桁それぞれの符号を反転させたBとを入力する。これにより、加算器をそのまま減算器として使用することができる。従って、減算の場合も同じように桁借り伝搬を高々1桁に抑えることができる。冗長2進減算の計算規則を図4(B)に示す。
(除算器及びこれを構成する減算器)
除算器は、減算器によって構成することができる。そこで、まず、減算器の構成を説明し、次に、これを本発明の並列型除算器に適用する。
【0025】
除算の実現方法は以下の4種類がある。即ち、
1.変数yと1/yの関係を示す変換表をROM(読み出し専用メモリ)内に用意しておき、x/yをx*(1/y)の乗算に置き換えて実行する逆数ROM方式、
2.x/yを実行する代わりに、対数ROMによりlogx及びlogyを求め、それからz=logx−logyの減算を行い、最後に指数ROMによりez を求める対数計算方式、
3.被除数に対して減算を試行錯誤的に繰り返す減算シフト方式、及び
4.乗算を繰り遅し実行しながら結果を求める商に収束させる収束型除算方式、である。
【0026】
この中では、逆数ROM方式が高速であるが、対数計算方式と同様に高精度になると、ROMの容量が指数的に大きくなる欠点がある。収束型除算方式は、モジュール化を考えた場合近似による誤差が増大する。この点、減算シフト方式はこのような問題はなく、モジュール化に適している。通常の2進数による演算については、本発明者らは先に減算シフト方式を利用したモジュール化された除算器を実現している(中村等”任意の精度に拡張可能な除算器の提案”、電学論、Vol.111-C, No.3, pp.123-128(1991-03))。そこで、本発明の除算器は、減算シフト方式を採用する。即ち、この除算アルゴリズムは、被除数に対してシフトと減算を試行錯誤的に繰り返す「減算シフト方式」に基づいた方式であり、一般的な基本式は以下の式(3)で表される。即ち、
R(0) /D=Σ2-jqj +2-nR(n) /D・・・・式(3)
である (ここで、Σは、j=1からnまでである)。式(3)において、除数D及び被除数R(0) に対して、Σ2-jqj (Σはj=1からnまで)が求める商Qであり、最終剰余Rは2-nR(n) である。各段における商の1桁qj+1 は2RとDとの大小関係で以下の式(4)のように求まる。即ち、
である。つまり、まず仮の部分剰余R(j+1) (=2R(j) −D)を求め、正又は0ならば、qj+1 =1が求まり、真の部分剰余とする。もし負ならば、qj+1 =0で仮の部分剰余の減算を取り消す。
【0027】
以上の操作は、R(n) をn桁右にシフトすることから求まることを意味する。しかし、以上のことは、n桁の商に対してのものであり、除算データを各モジュールに分散した場合、各モジュールの被除数と除数はそれぞれ連絡した状態で減算とシフトが行われなければならない。
【0028】
一般に、除数に対して被除数の桁数が多いため、分散した除数を連結して被除数との減算を行うことは、除数の連結とそれに伴う減算やラッチ回路の連絡などにより容易に実現できない。そこで、アルゴリズムを変更し、分散した除数と減算器は各モジュール内で固定し、被除数を連結してシフトと減算を行う方式としてモジュールの分散化を可能にした。
【0029】
減算シフト方式によるnビット除算の処理手順を、図5に示す。ここで、Xは被除敦、Yは除数、Rは部分剰余、R’は仮の部分剰余、Qは商である。部分剰余と除数の減算から商の1桁を求める過程がn回繰り返される。本除算操作では、除数は固定で、部分剰余、被除数のみがシフトする。
【0030】
減算シフト方式による4ビットの演算例を図6に示す。この例では、被除数X=1101、除数Y=0101としている。4回の減算と3回のシフトにより、商Q=0010、及び剰余R=0011が求められる。なお、図6において、表示の便宜上、−1を1の上部にバーを付加して表している。
(並列型除算器)
演算精度n桁の並列型除算器は、n桁の並列減算器1を1桁シフトしてn段構成とすることにより実現できる。
【0031】
図5でR’≧0の判断機構は通常の2進数による演算の場合とは異なる。通常の2進数による演算の場合、減算結果が正(0を含む)もしくは負を判断する際には最上位の桁借りのみを見ればよい。なぜなら、R’≧0の場合、減算器の最上位桁の桁借りが必ず”0”になり、R’<0の場合、減算器の最上位桁の桁借りが必ず”1”になるためである。しかし、冗長2進表現による演算の場合には、桁借りが高々1桁しか伝搬せず、減算結果が負の場合でも最上位桁に桁借りが生じるとは限らない。従って、各桁の減算結果が正であるかもしくは負であるかを判断する際には、減算結果そのものをもって判断する必要がある。つまり、減算結果の正負が決定できるまで、当該正負を上位ビットから順に判断しなければならず、最大ですべての減算結果を調べなければならない。そこで、本発明では、n桁の並列型の減算器1に減算結果を判断する減算判断回路2を付加する。
【0032】
この減算判断回路2は、前述の図1及び図2に示すように、n桁の並列型の減算器1毎に付加され、減算結果が正もしくは負かを判断するために、比較器(コンパレータ)で構成される。まず、部分剰余(x)と除数(y)との減算を行い、結果(d)を減算判断回路2に入力する。結果(d)は、冗長2進表現ゆえ、2ビット(OUT−及びOUT+)で表される。この2ビットを比較して、減算結果が正又は0である(OUT+が大きいか又は0(この時、OUT−も0である))場合、減算判断回路2の出力eを”1”とし、これにより単位減算器10における仮の部分剰余を真の部分剰余とし(図2(B)のスイッチが図の左側に倒れ、d’←dとされる)、Qi =1となる。一方、減算結果が負である(OUT−が大きい)場合、減算判断回路2の出力eを”0”とし、仮の部分剰余の減算を破棄し(図2(B)のスイッチが図の右側に倒れ、d’←xとされる)、Qi =0となる。
【0033】
以上の構成によれば、通常の2進数でのアルゴリズム(前述の4種類の除算の実現方法)がそのまま使用できる。また、これらの減算判断回路2の機能は、減算結果が正(0を含む)もしくは負の2通りを判断し、その結果によって2種類のうちどちらかの値を出力するので、商は通常の2進数で得られる。また、剰余は冗長2進表現のままで出力される。また、以上の構成によれば、減算を行ってから比較をするため多少時間がかかるが、減算判断回路2をマグニチュードコンパレータで構成できるので拡張が容易である。また、後述する第2の実施態様と比較すると、減算判断回路2の回路規模が小さく、接続が容易である。
【0034】
以上のように、演算精度n桁の並列型除算器は、図1に示すように、n桁の並列型の減算器1を1桁シフトしてn段構成とすることにより実現できる。1段の並列型の減算器1で部分剰余と除数との減算を行い、その結果によって、次段の並列型の減算器1に入力される部分剰会の値が決められる。1段ごとに並列型の減算器1を1桁シフトさせての減算になるので、次段に入力される部分剰余は1桁シフトした状態となり、減算をn段分行うことによって、結果が求められる(中村等”任意精度の演算が可能な並列除算器のアーキテクチャ”、信学論、Vol.J75-C-II, No.5, pp.185-192(1992-05) )。減算器がn段になるので、本方式では、減算判断回路2がn個必要である。
(モジュール化)
演算精度がnビットの並列型除算器(図1の除算器をnビットに拡張したもの)を1個のモジュールとしたときの、演算精度nと冗長2進表現を用いた並列型除算器の端子数との関係式を図7に示す。この端子数は、チップスライス化を考慮に入れたものである。従って、演算精度が増加し、2モジュール以上に拡張した場合のモジュール間の接続を考慮して算出した。電源端子を除いて、1モジュールの演算精度nが4ビットで端子数が80本、8ビットで164本、16ビットで332本になる。
【0035】
1モジュールのビット数としては、4ビットや8ビットより16ビットの方が実用的である。そこで、端子数を減少させるために、本発明ではバス形式を採用する。具体的には、端子数の大部分を占める被除数、除数、商及び剰余などの入出力をバス形式にする。即ち、これらの入力データは、分割したある決まった桁の分だけ、下位桁から順に所定のクロックに同期して順次入力する。入力したデータは、内部の保持回路に記憶しておく。演算終了後、同様に、剰余などのデータを下位桁からクロックに同期して数回に分割して出力する。これにより、入出力端子の数を大幅に減少させることができる。
【0036】
並列型除算器の演算精度をk倍に拡張する場合、商を得るのに、減算器をk倍必要とする。さらに、減算回数もk倍の段数行わなければならない。従って、拡張は同一モジュールを2次元状に配列することによって、任意精度に拡張可能であるが、モジュール数はk2 個必要となる。演算精度を2倍(倍精度)に拡張するようにモジュール100を拡張する時の接続図を図8に示す。図8(A)及び図8(B)に示すように、モジュール#1とモジュール#2を接合することによって、並列減算器を2倍に拡張し、それに加え、モジュール#3とモジュール#4を接合することによって、減算器の段数を2倍にしている。なお、図8において、点線で区切って示す領域が1個のモジュール100である。
〔第2の実施態様〕
図9は、本発明の第2の実施態様による除算器の構成を示し、図2(B)に対応する図である。この除算器は、基本的には、図1乃至図3に示す第1の実施態様の除算器と同一の構成を有するが、その減算判断回路2Aのみが異なる構成とされる。
【0037】
即ち、減算判断回路2Aは、除算回路を構成するn桁の並列型の減算器1毎に設けられ、図9に示すように、当該n桁の並列型の減算器1に入力される被減数と減数の大小を判断する。そして、減算判断回路2Aは、当該被減数が減数より大きいか又は減数と等しい場合に当該n桁の並列型の減算器1を構成するn個の単位減算器10の各々において求まる部分剰余を当該真の部分剰余として次段に出力させる。また、減算判断回路2Aは、当該被減数が減数より小さい場合に当該n桁の並列型の減算器1を構成するn個の単位減算器10の各々に入力された前段の部分剰余を当該真の部分剰余として次段に出力させる。なお、減算判断回路2Aは比較器からなり、第1の実施態様の除算器と同一とされる。
【0038】
この構成は、図9に示すように、減算判断回路2に代えて、当該n桁の並列型の減算器1を構成するn個の単位減算器10の各々における、被減数と減数を比較するための減算判断回路2Aを設ける構成である。単位減算器10の構成は第1の実施態様と同じである。この構成では、減算と判断を同時に行う。減算判断回路2Aに入力される値は、部分剰余(x)と、除数(y)である。部分剰余が除数より大きいか又は除数と等しい場合、減算結果が正になるので、減算判断回路2Aの出力を”1”とし、仮の部分剰余を真の部分剰余とし(図2(B)のスイツチが左側に倒れ、d’←dとされる)、Qi =1となる。部分剰余より除数の方が大きい場合、減算結果は負になるので、減算判断回路2Aの出力を”0”とし、仮の部分剰余の減算を破棄し(図2(B)のスイッチが右側に倒れ、d’←xとされる)、Qi =0となる。
【0039】
この構成によっても、通常の2進数でのアルゴリズム(前述の4種類の実現方法)がそのまま使用できる。また、これらの減算判断回路2の機能は、減算結果が正もしくは負の2通りを判断し、その結果によって2種類のうちどちらかの値を出力するので、商は通常の2進数で得られる。また、剰余は冗長2進表現のままで出力される。また、この構成によれば、減算と判断を同時に行うので、高速な判断が可能であれば、多数桁になっても遅延の増加を防ぐことができる。
〔第3の実施態様〕
図10は、本発明の第3の実施態様による除算器の構成を示し、図1及び図2(B)に対応する図である。この除算器は、n桁の並列型の減算器1を構成するn個の単位減算器10の構成及び減算判断回路2については、図1乃至図3に示す第1の実施態様の除算器と同一の構成とされるが、その除算回路が異なる構成とされ、また、n(この例ではn=4)個の保持回路31乃至34を有する構成とされる。
【0040】
即ち、除算回路は、n個の単位減算器10を並列に接続してなるn桁の並列型の減算器1からなる。減算判断回路2は、除算回路に対応して設けられ、当該n桁の並列型の減算器1における減算結果を判断する。減算判断回路2は、当該減算結果が正又は0である場合に当該n桁の並列型の減算器1を構成するn個の単位減算器10の各々において求まる部分剰余を当該真の部分剰余として次段に出力させる。また、減算判断回路2は、当該減算結果が負である場合に当該n桁の並列型の減算器1を構成するn個の単位減算器10の各々に入力された前段の部分剰余を当該真の部分剰余として次段に出力させる。n個の保持回路31乃至34は、除算回路を構成するn桁の並列型の減算器1を構成するn個の単位減算器10毎に設けられる。n個の保持回路31乃至34は、減算判断回路2によって定められる当該対応する単位減算器10の真の部分剰余を入力され、所定のクロックに同期して当該入力を1桁シフトさせて、当該対応する単位減算器10に隣接する単位減算器10に入力する。n個の保持回路31乃至34は、例えばフリップフロップFF(又はシフトレジスタ)からなる。この例は順序回路型の除算器である。
【0041】
順序回路型の除算器はクロックの1周期ごとにqi を1桁ずつ上位桁から求めていく。並列型の除算器では、減算器1段ごとにn個の減算器1を1桁シフトさせて配置した構成になるが、順序回路型の除算器では、減算器は1段のみで構成し、シフトはn個の保持回路31乃至34へのクロックに同期して行われる。順序回路型の除算器の演算部分の構成図を図10に示す。
【0042】
まず、被除数xi を最下位桁の単位減算器10の被減数に入力する。次に、減算判断回路2が減算と減算結果の判定を行う。最後に、仮の部分剰余の値によって、保持回路31乃至34に入力される真の部分剰余の値が決められる。クロックが与えられると、保持回路31乃至34に入力された値が部分剰余として出力されると同時に、各々の対応する単位減算器10から1桁だけ左シフトされた単位減算器10の被減数に入力される。これを演算桁数nと同じだけのクロック数を用いて繰り返すと、最終的に除算結果を求めることができる。
【0043】
図9の順序回路型の除算器について、図1の並列型の除算器と比較をするために、入出力にレジスタを設け、バス形式を用いず全入力データを並列に入力(ラッチ)し、全出力データを並列に出力する場合を考える。このときの入出力端子の関係式を図11に示す。図9の順序回路型の除算器は、減算器が1段しかないので、その分の端子が減少していることが判る。図11の値は、図9の順序回路型の除算器において、図1の並列型の除算器と同じように、演算精度nが増加し、2個以上のモジュールに拡張した場合のモジュール間の接続を考慮して算出した。電源端子を除いて、1モジュールの演算精度nが4ビットで端子数が49本、8ビットで77本、16ビットで133本になる。
【0044】
減算シフト型の場合には、k倍精度に拡張する場合、商を得るのに、減算器がk倍必要であるのは並列型と変わらないが、クロックに同期して同じ減算器を再利用してゆくので除算器は1段でよい。従って、同一モジュールをカスケード接続することによって拡張可能である。k倍精度に拡張する場合、k個の除算器モジユールのカスケード接続になる。
【0045】
例えば、除算機の構成を3個のモジュール(3倍精度)に拡張する時の接続図を図12に示す。ここで、gi 、go は、減算判断回路2のカスケード接続用の端子である。最上位モジュールの減算判断回路2の出力が、全モジユールの減算セルヘのスイッチ制御入力となる。
【0046】
冗長2進表現を利用した場合、減算器の回路規模は通常の2進数の除算器のそれより約3倍になる(文献▲1▼参照)。また、1桁を2ビットで表現しているので、保持回路31乃至34などの規模は2倍になる。しかし、最近の集積回路の大規模化により、この程度の増加では問題となる値ではないと考える。また、図1等の並列型の除算器は、クロツクを必要とせず高速に演算を行うことができるが、拡張性を考えた場合、モジュールを2次元状に配置しなければならないので、精度が大きくなるとモジュール数が多くなり、端子数も比較的多くなり、減算判断回路2もk 個必要となる。従って、精度が大きい場合、順序回路型の除算器が有効である。
【0047】
以上、本発明を実施の態様により説明したが、本発明はその主旨の範囲内において種々の変形が可能である。
【0048】
例えば、本発明の冗長2進表現を用いた除算器には減算判断回路2を付加する必要があるが、この減算判断回路2は、前述した以外にも種々の構成のものが考えられ、本発明の除算器の周辺回路との関係で最適な減算判断回路2の構成を選択することができる。また、本発明の冗長2進表現を用いた除算器において、その除算回路として、準並列型除算器(例えば、中村等”任意精度対応準並列型除算機構とそのVSIへの応用”、信学技報、CAS99-40, VLD99-40, DSP99-66, pp.75-82(1999-06) )を採用してもよい。一方、本発明の冗長2進表現を用いた除算器は、RSA公開鍵暗号演算用に限られず、例えば画像処理等における高速演算用除算器として用いることができる。この場合、テレビ電話やインターネット上での動画像の表示において、高速で高精度の除算が可能となるので、画像を高速で滑らかに動かすことができる。
【0049】
【発明の効果】
以上説明したように、本発明によれば、演算精度n桁の除算器において、n個の単位減算器を並列に接続してなるn桁の並列型の減算器1を用いて除算回路を構成すると共にこれに減算判断回路を付加することにより、冗長2進数の演算による除算を行うことができるので、丸め誤差なしで正確な剰余を算出する演算を高速で行うことができ、この結果、RSA公開鍵暗号演算用のような例えば1024桁以上の高精度の演算を行う除算器として用いることができ、また、並列に接続する単位減算器の個数nを増加させて演算精度を向上できるので、除算器をチップスライス化することができる。
【0050】
本発明の冗長2進数による除算器は、通常の2進数で使用するアルゴリズムがそのまま利用でき、しかも丸め誤差なしで商と剰余が得られ、正確な剰余が必要な公開鍵暗号方式にも応用できる。本発明の除算器のモジュールは、チップスライス化を考慮したアーキテクチャとなっているので、任意精度に容易に拡張可能であり、鍵の長さの拡張や可変長鍵に対しても対処可能な公開鍵暗号演算用の専用ハードウェアにそのまま適用できる。
【図面の簡単な説明】
【図1】並列型除算器説明図である。
【図2】並列型除算器説明図である。
【図3】並列型除算器説明図である。
【図4】並列型除算器説明図である。
【図5】並列型除算器説明図である。
【図6】並列型除算器説明図である。
【図7】並列型除算器説明図である。
【図8】並列型除算器説明図である。
【図9】並列型除算器説明図である。
【図10】並列型除算器説明図である。
【図11】並列型除算器説明図である。
【図12】並列型除算器説明図である。
【符号の説明】
1 減算器
2、2A 減算判断回路
10 単位減算器
20 単位比較器[0001]
BACKGROUND OF THE INVENTION
The present invention relates to a divider, and more particularly to a divider that performs a redundant binary number operation that can calculate an accurate remainder without rounding error and that can perform a high-speed operation.
[0002]
[Prior art]
The divider used for the dedicated hardware for public key cryptographic computation is composed of a high-precision subtracter having 1024 digits or more, for example. However, if a subtractor that performs a normal binary operation (by binary expression) is used as this subtractor, a carry or a borrow is propagated between unit subtractors of each digit (each bit). Is inevitable. For this reason, when the number of arithmetic digits (number of bits) of the divider is increased to improve the arithmetic accuracy, the delay time increases in proportion to the arithmetic digits because of the carry or carry propagation. To do. The carry look-ahead method is also suitable for speeding up, but is not suitable for expanding accuracy by multi-precision arithmetic or chip slicing.
[0003]
Therefore, it is conceivable to use a redundant binary number (redundant binary expression) that can make the delay constant regardless of the number of arithmetic digits. Usually, in the operation of redundant binary number (operation by redundant binary representation), the binary number is converted into the redundant binary representation, the operation is performed between the values expressed in the redundant binary representation, and the result is converted into a normal binary number. Reverse conversion. However, in the “power-residue operation” used in RSA public key cryptography, multiplication and division are repeated, so that after the multiplication and division operations are completed once, they are not converted, but are repeatedly subtracted in a redundant binary representation. And only the last conversion is required. Therefore, the RSA public key cryptographic operation is in a range where the processing time due to conversion need not be considered.
[0004]
The subtraction in the redundant binary representation can be realized by an adder by inverting the sign of the subtraction (for example, Saito et al. “Structure of high-speed redundant binary adder / subtractor using 1-digit 2-bit / 3-bit mixed representation”, IEICE Technical Report, CAS99-41, VLD99-41, DSP99-57, pp.83-90 (1999-06), literature (1)). Specifically, it is only necessary to replace each bit of the reduction number. A division circuit using redundant binary representation has also been proposed (Takagi et al. “High-speed divider for VLSI using redundant binary representation”, IEICE Transactions, Vol. J67-D, No. 4 Pp.450-457 (1984-04), referred to as document (2)).
[0005]
[Problems to be solved by the invention]
However, the divider that performs the operation of the redundant binary number is not originally proposed as a divider for RSA public key cryptography. For this reason, it is practically impossible to use a divider that performs the above-described redundant binary number operation as a divider for public key cryptography.
[0006]
That is, the above divider is a fixed operation, includes a quotient error due to rounding, and does not consider the remainder. In other words, an operation essential for high-accuracy operations such as for RSA public key cryptographic operations, in which an accurate remainder is calculated without a rounding error, cannot be performed. Therefore, even if the above-described divider that performs the redundant binary operation is used as it is as a divider in a dedicated hardware for public key cryptography or the like, a high-precision calculation of 1024 digits or more required for the divider is performed. I can't. In addition, since the divider that performs the operation of the redundant binary number is a fixed operation, the operation cannot be performed if the number of operation digits exceeds one. For this reason, chip slicing of the divider that performs the above-described redundant binary operation is impossible.
[0007]
An object of the present invention is to provide a divider that can calculate an accurate remainder without rounding errors.
Another object of the present invention is to provide a divider suitable for public key cryptography and the like.
Another object of the present invention is to provide a divider that can be expanded to an arbitrary precision.
[0008]
[Means for Solving the Problems]
A divider according to the present invention is a parallel divider having an arithmetic precision n (n is a positive integer, the same in this specification) digits for performing a redundant binary number operation, and has a division circuit and a subtraction judgment circuit. . The division circuit is configured by n stages of n-digit parallel-type subtractors formed by connecting n unit subtractors in parallel and shifted one by one. The subtraction judgment circuit is an n-digit parallel type subtractor constituting a division circuit. Corresponding to each of the n unit subtractors constituting Provided An arithmetic decision circuit comprising n unit comparators , Based on the subtraction result expressed by 2 bits, which is a subtraction result of a partial remainder and a divisor obtained in each of the n unit subtractors constituting the n-digit parallel subtractor and a redundant binary number, By comparing the two bits, N-digit parallel subtractor Each of the n unit subtractors constituting When the subtraction result in is determined to be positive or 0, the partial remainder obtained in each of the n unit subtractors constituting the n-digit parallel type subtractor is set as the true partial remainder. When the subtraction result is negative, the partial remainder of the previous stage input to each of the n unit subtractors constituting the n-digit parallel type subtractor when the subtraction result is negative is used as the true partial remainder. Output to stage.
[0009]
According to the divider of the present invention, a division circuit is configured using an n-digit parallel type subtractor formed by connecting n unit subtractors in parallel, and a subtraction judgment circuit is added thereto. Thereby, it is possible to determine whether the subtraction result is positive or negative with reference to the operation results of all the digits in the parallel type subtractor. In other words, in the subtraction using the redundant binary expression, only one digit of carry or borrow is propagated at most, so it is necessary to determine the sign of the subtraction result by referring to the calculation results in all the digits at the maximum. This can be correctly determined by the subtraction determination circuit. Therefore, since division by redundant binary number calculation can be performed at high speed using a parallel type subtractor, calculation for calculating an accurate remainder without a rounding error can be performed at high speed. As a result, the divider of the present invention can be used as a divider that performs high-precision calculations of, for example, 1024 digits or more, as in RSA public key cryptographic calculations. In addition, since the number n of unit subtractors connected in parallel can be increased to improve the calculation accuracy, the divider can be chip sliced (modularized).
[0010]
Another divider according to the present invention is an n-digit parallel precision divider that performs redundant binary arithmetic, and includes a division circuit and a subtraction determination circuit. The division circuit is configured by n stages so that an n-digit parallel type subtractor formed by connecting n unit subtractors in parallel is shifted by one digit. The subtraction judgment circuit is an n-digit parallel type subtractor constituting a division circuit. Corresponding to each of the n unit subtractors constituting Provided An arithmetic decision circuit comprising n unit comparators , Based on the subtraction result expressed by 2 bits, which is a subtraction result of a partial remainder and a divisor obtained in each of the n unit subtractors constituting the n-digit parallel subtractor and a redundant binary number, By comparing the two bits, The number of subtractors and the number of subtractions input to the n-digit parallel type subtractor is determined, and n units constituting the n-digit parallel type subtractor when the subtraction number is greater than or equal to the subtraction number Each of the n unit subtractors constituting the n-digit parallel subtractor when the partial remainder obtained in each of the unit subtractors is output to the next stage as the true partial remainder and the subtracted number is smaller than the subtractive number. The partial remainder of the previous stage input to is output as the true partial remainder to the next stage.
[0011]
According to another divider of the present invention, for the same reason as described above, the subtraction determination circuit can determine the sign of the subtraction result by referring to the operation results of all the digits in the parallel type subtractor. Redundant binary numbers can be calculated using a parallel type subtractor, and calculation for calculating an accurate remainder without rounding errors can be performed at high speed. As a result, the divider of the present invention can be used as a divider that performs high-precision calculations, and the divider can be chip-sliced.
[0012]
Still another divider according to the present invention is an n-digit parallel precision divider that performs redundant binary number operations, and includes a division circuit, a subtraction determination circuit, and n holding circuits. The division circuit includes an n-digit parallel type subtractor formed by connecting n unit subtractors in parallel. The subtraction determination circuit is provided corresponding to the division circuit, determines a subtraction result in the n-digit parallel subtractor, and when the subtraction result is positive or 0, the n-digit parallel subtractor The partial remainder obtained in each of the n unit subtractors constituting n is output to the next stage as the true partial remainder, and when the subtraction result is negative, the n-digit parallel type subtractor is constituted. The previous partial remainder input to each of the unit subtractors is output to the next stage as the true partial remainder. The n holding circuits are n holding circuits provided for each of the n unit subtractors constituting the n-digit parallel type subtractor constituting the division circuit, and are determined by the subtraction determination circuit. The true partial remainder of the corresponding unit subtracter is input, the input is shifted by one digit in synchronization with a predetermined clock, and input to the unit subtracter adjacent to the corresponding unit subtracter.
[0013]
According to still another divider of the present invention, for the same reason as described above, the subtraction determination circuit can determine the sign of the subtraction result by referring to the operation results of all the digits in the parallel type subtractor. Therefore, it is possible to perform a redundant binary number operation using a parallel type subtractor, and to perform an operation for calculating an accurate remainder without a rounding error at a high speed. As a result, the divider of the present invention can be used as a divider that performs high-precision calculations. Further, by providing the holding circuit, the divider can be realized with a simple circuit and a small circuit scale. Furthermore, the divider can be chip-sliced, the module itself can be made small, and can be expanded to an arbitrary precision with a small number of modules.
[0014]
DETAILED DESCRIPTION OF THE INVENTION
[First Embodiment]
The divider according to the present invention is an n-digit (n-bit) arithmetic parallel divider that performs redundant binary arithmetic, and includes a division circuit and a
[0015]
In FIG. 1, for simplicity of illustration, n = 4. The
[0016]
When the subtraction result in the n-digit
[0017]
The
[0018]
A well-known subtracter (SUB) 11 in the
[0019]
As can be seen from FIGS. 1 and 2, the divider of the present invention uses subtraction based on redundant binary expressions and adds a
[0020]
Hereinafter, the divider of the present invention will be described in detail. First, the redundant binary representation and its calculation rule will be briefly described, then the configuration of the subtractor in the divider of the present invention will be described, and further, the parallel divider according to the first embodiment of the present invention Will be described.
(Redundant binary representation and its calculation rules)
The binary number of the integer part n digits is
(A n-1 a n-2 ... a 0 ) 2 .... Formula (1)
It can be expressed as. this is,
(Σa i ・ 2 i ) Ten .... Formula (2)
(Where Σ is from i = 0 to n−1). The normal binary number is the element a for each digit i Takes a value of {0, 1}, but the redundant binary representation is a kind of radix-2 SD (Signed Digit) representation, and each element a i Takes a value of {-1, 0, 1} (see literature (1), literature (2), Tomita et al. “Computer System Engineering”, Shoshodo, 1988)). Therefore, at least 2 bits are required to represent this element.
[0021]
By this method, it is possible to perform computation at high speed by preventing the carry at the time of addition and the propagation of the borrow at the time of subtraction. This method becomes more effective as the number of digits of operation increases. In addition, the addition by the redundant binary expression can be configured by using a full adder connected in series with the operation bit width in the same manner as the normal binary addition. Therefore, in the logic circuit design, the operation bits can be easily expanded by simply extending the full adder. In the operation using the redundant binary representation, the binary number is converted into the redundant binary representation, the operation between the redundant binary representations is performed, and the result is inversely converted into a normal binary number.
[0022]
In addition by redundant binary representation, the process is performed in the following two steps. That is,
1. Find intermediate sum and carry with digit i, digit i-1.
2. Add intermediate sum and carry.
[0023]
Each digit element a i In the redundant binary representation where is {-1, 0, 1}, the carry to digit i + 1 based on the carry from digit i-1 can be prevented by digit i, and the addition can be performed in constant time. . The addition rule by redundant binary is shown in FIG. Each input is a 2-bit addend x i , Addend y i Plus one lower digit input to prevent carry propagation i-1 , Y i-1 Also check.
[0024]
In the case of subtraction by redundant binary representation, the inversion of the sign can be realized by inverting the sign of each digit, so that it can be handled in the same manner as the addition (see reference (1)). In order to realize the calculation (A−B), A and B obtained by inverting the sign of each digit are input to the adder. Thereby, an adder can be used as a subtractor as it is. Accordingly, the borrowing propagation can be suppressed to at most one digit in the case of subtraction. The calculation rule for redundant binary subtraction is shown in FIG.
(Divisor and subtractor constituting it)
The divider can be constituted by a subtracter. Therefore, first, the configuration of the subtractor will be described, and then this will be applied to the parallel divider of the present invention.
[0025]
There are the following four methods for realizing division. That is,
1. A reciprocal ROM system in which a conversion table showing the relationship between the variables y and 1 / y is prepared in a ROM (read only memory), and x / y is replaced with multiplication of x * (1 / y),
2. Instead of executing x / y, logx and logy are obtained by logarithmic ROM, then z = logx-logi is subtracted, and finally e by exponential ROM. z Logarithmic calculation method for obtaining
3. A subtraction shift method that repeats subtraction for the dividend by trial and error; and
4). This is a convergent division method that converges to a quotient for obtaining a result while delaying and executing multiplication.
[0026]
Among these, the reciprocal ROM method is high speed, but there is a disadvantage that the capacity of the ROM increases exponentially when the accuracy is high as in the logarithmic calculation method. In the convergent division method, an error due to approximation increases when modularization is considered. In this respect, the subtraction shift method does not have such a problem and is suitable for modularization. For ordinary binary operations, the present inventors have previously realized a modular divider using a subtraction shift method (Nakamura et al. “Proposal of a divider that can be expanded to an arbitrary precision”, Electrology, Vol.111-C, No.3, pp.123-128 (1991-03)). Therefore, the divider of the present invention employs a subtraction shift method. That is, this division algorithm is based on a “subtraction shift method” in which shifting and subtraction are repeated trial and error with respect to the dividend, and a general basic equation is expressed by the following equation (3). That is,
R (0) / D = Σ2 -j q j +2 -n R (n) / D ... Formula (3)
(Where Σ is j = 1 to n). In equation (3), the divisor D and the dividend R (0) For Σ2 -j q j (Σ is j = 1 to n) is a quotient Q, and the final remainder R is 2 -n R (n) It is. 1 digit q of the quotient at each stage j + 1 Is obtained as shown in the following formula (4) by the magnitude relationship between 2R and D. That is,
It is. In other words, the temporary partial remainder R (j + 1) (= 2R (j) -D), if positive or 0, q j + 1 = 1 is obtained, and is assumed to be a true partial remainder. If negative, q j + 1 Cancels subtraction of the temporary partial remainder when = 0.
[0027]
The above operations are (n) Is obtained by shifting n to the right by n digits. However, the above is for an n-digit quotient, and when division data is distributed to each module, the dividend and divisor of each module must be subtracted and shifted while communicating with each other. .
[0028]
Generally, since the number of digits of the dividend is larger than the divisor, it is not easy to concatenate the distributed divisors and perform subtraction with the dividends by concatenating the divisors and accompanying subtraction or communication of the latch circuit. Therefore, the algorithm was changed so that the distributed divisors and subtractors are fixed in each module, and the modules can be distributed as a system that shifts and subtracts by connecting the dividends.
[0029]
FIG. 5 shows a processing procedure of n-bit division by the subtraction shift method. Here, X is a dividend, Y is a divisor, R is a partial remainder, R ′ is a temporary partial remainder, and Q is a quotient. The process of obtaining one digit of the quotient from the subtraction of the partial remainder and the divisor is repeated n times. In this division operation, the divisor is fixed, and only the partial remainder and dividend are shifted.
[0030]
FIG. 6 shows an example of 4-bit calculation by the subtraction shift method. In this example, the dividend X = 1101 and the divisor Y = 0101. The quotient Q = 0010 and the remainder R = 0011 are obtained by four subtractions and three shifts. In FIG. 6, for convenience of display, −1 is represented by adding a bar to the top of 1.
(Parallel divider)
An arithmetic precision n-digit parallel divider can be realized by shifting the n-digit
[0031]
In FIG. 5, the determination mechanism of R ′ ≧ 0 is different from that in the case of normal binary calculation. In the case of a normal binary operation, it is only necessary to look at the most significant borrow when determining whether the subtraction result is positive (including 0) or negative. This is because when R ′ ≧ 0, the borrow of the most significant digit of the subtractor is always “0”, and when R ′ <0, the borrow of the most significant digit of the subtractor is always “1”. It is. However, in the case of an operation based on redundant binary representation, the borrowing propagates at most one digit, and even when the subtraction result is negative, the borrowing does not always occur in the most significant digit. Therefore, when determining whether the subtraction result of each digit is positive or negative, it is necessary to determine based on the subtraction result itself. That is, until the sign of the subtraction result can be determined, the sign must be determined in order from the higher order bit, and all the subtraction results must be examined at the maximum. Therefore, in the present invention, a
[0032]
As shown in FIGS. 1 and 2, the
[0033]
According to the above configuration, a normal binary algorithm (the above-described four types of division implementation methods) can be used as it is. The function of these
[0034]
As described above, the n-digit parallel divider can be realized by shifting the n-digit
(modularization)
When a parallel divider having an arithmetic accuracy of n bits (extension of the divider of FIG. 1 to n bits) is made into one module, the parallel divider using the arithmetic accuracy n and redundant binary representation is used. A relational expression with the number of terminals is shown in FIG. This number of terminals takes into account chip slicing. Therefore, the calculation accuracy is increased, and calculation is performed in consideration of connection between modules when the number of modules is expanded to two or more. Excluding the power supply terminal, the calculation accuracy n of one module is 4 bits, the number of terminals is 80, 164 is 8 bits, and 332 is 16 bits.
[0035]
As the number of bits of one module, 16 bits is more practical than 4 bits or 8 bits. Therefore, in order to reduce the number of terminals, the present invention adopts a bus format. Specifically, the input / output such as dividend, divisor, quotient, and remainder, which occupies most of the number of terminals, is in a bus format. That is, these input data are sequentially input in synchronization with a predetermined clock in order from the lower digit for a predetermined fixed digit. The input data is stored in an internal holding circuit. Similarly, after the calculation is completed, data such as remainder is divided into several times in synchronization with the clock from the lower digits and output. Thereby, the number of input / output terminals can be significantly reduced.
[0036]
When the calculation accuracy of the parallel divider is expanded to k times, a subtracter is required k times to obtain a quotient. Furthermore, the number of subtractions must be performed k times. Therefore, expansion can be expanded with arbitrary precision by arranging the same modules in a two-dimensional manner, but the number of modules is k. 2 Required. FIG. 8 shows a connection diagram when the
[Second Embodiment]
FIG. 9 shows the configuration of the divider according to the second embodiment of the present invention, and corresponds to FIG. This divider basically has the same configuration as the divider of the first embodiment shown in FIGS. 1 to 3, but only the
[0037]
That is, the
[0038]
As shown in FIG. 9, this configuration replaces the subtracted number and the reduced number in each of the n unit subtractors 10 constituting the n-digit
[0039]
Even with this configuration, a normal binary algorithm (the above-described four types of implementation methods) can be used as it is. In addition, the function of these
[Third Embodiment]
FIG. 10 shows the configuration of the divider according to the third embodiment of the present invention, and corresponds to FIG. 1 and FIG. 2 (B). This divider is composed of the n unit subtractors 10 constituting the n-digit
[0040]
That is, the division circuit includes an n-digit
[0041]
The sequential circuit type divider is q for each cycle of the clock. i Is calculated from the upper digit one digit at a time. In the parallel type divider,
[0042]
First, dividend x i Is input to the subordinate of the
[0043]
In order to compare the sequential circuit type divider shown in FIG. 9 with the parallel type divider shown in FIG. 1, a register is provided at the input and output, and all input data is input (latched) in parallel without using the bus format. Consider the case where all output data is output in parallel. The relational expression of the input / output terminals at this time is shown in FIG. The sequential circuit type divider shown in FIG. 9 has only one subtractor, so that it can be seen that the number of terminals is reduced accordingly. The values in FIG. 11 are the same as those in the sequential circuit type divider shown in FIG. 9, as in the case of the parallel divider shown in FIG. Calculated considering connection. Excluding the power supply terminal, the calculation accuracy n of one module is 4 bits, the number of terminals is 49, 77 for 8 bits, and 133 for 16 bits.
[0044]
In the case of the subtraction shift type, when expanding to k times precision, the subtractor needs k times to obtain the quotient, but it is not different from the parallel type, but the same subtractor is reused in synchronization with the clock. Therefore, the divider may be one stage. Therefore, it can be expanded by cascading the same modules. When expanding to k times precision, it becomes a cascade connection of k divider modules.
[0045]
For example, FIG. 12 shows a connection diagram when the configuration of the divider is expanded to three modules (triple precision). Where g i , G o Are the cascade connection terminals of the
[0046]
When the redundant binary representation is used, the circuit scale of the subtractor is about three times that of a normal binary divider (see Document (1)). In addition, since one digit is expressed by 2 bits, the scale of the holding
[0047]
As mentioned above, although this invention was demonstrated by the aspect, this invention can be variously deformed within the scope of the gist.
[0048]
For example, it is necessary to add the
[0049]
【The invention's effect】
As described above, according to the present invention, a divider circuit is configured by using an n-digit
[0050]
The divider according to the redundant binary number of the present invention can be applied to a public key cryptosystem in which an algorithm used in a normal binary number can be used as it is, a quotient and a remainder can be obtained without a rounding error, and an accurate remainder is required. Since the divider module of the present invention has an architecture that considers chip slicing, it can be easily expanded to an arbitrary precision, and can be dealt with extended key lengths and variable length keys. It can be applied as it is to dedicated hardware for key encryption operations.
[Brief description of the drawings]
FIG. 1 is an explanatory diagram of a parallel divider.
FIG. 2 is an explanatory diagram of a parallel divider.
FIG. 3 is an explanatory diagram of a parallel divider.
FIG. 4 is an explanatory diagram of a parallel divider.
FIG. 5 is an explanatory diagram of a parallel divider.
FIG. 6 is an explanatory diagram of a parallel divider.
FIG. 7 is an explanatory diagram of a parallel divider.
FIG. 8 is an explanatory diagram of a parallel divider.
FIG. 9 is an explanatory diagram of a parallel divider.
FIG. 10 is an explanatory diagram of a parallel divider.
FIG. 11 is an explanatory diagram of a parallel divider.
FIG. 12 is an explanatory diagram of a parallel divider.
[Explanation of symbols]
1 Subtractor
2, 2A subtraction judgment circuit
10 unit subtractor
20 unit comparator
Claims (4)
n個の単位減算器を並列に接続してなるn桁の並列型の減算器を、1桁づつシフトして接続して、n段に構成してなる除算回路と、
前記除算回路を構成するn桁の並列型の減算器を構成する前記n個の単位減算器の各々に対応して設けられたn個の単位比較器からなる演算判断回路であって、当該n桁の並列型の減算器を構成するn個の単位減算器の各々において求まる部分剰余と除数との減算結果であって冗長2進数である2ビットで表現された減算結果に基づいて、前記2ビットを比較することにより、当該n桁の並列型の減算器を構成する前記n個の単位減算器の各々における減算結果を判断し、当該減算結果が正又は0である場合に当該n桁の並列型の減算器を構成するn個の単位減算器の各々において求まる部分剰余を当該真の部分剰余として次段に出力させ、当該減算結果が負である場合に当該n桁の並列型の減算器を構成するn個の単位減算器の各々に入力された前段の部分剰余を当該真の部分剰余として次段に出力させる減算判断回路とを有する
ことを特徴とする並列型の除算器。A parallel-type divider with n-digit arithmetic accuracy for performing redundant binary arithmetic,
a division circuit configured by connecting n unit subtractors connected in parallel to each other and shifting n digits in a parallel type subtractor by one digit to form n stages;
An arithmetic determination circuit consisting of n-digit parallel subtracter said n unit subtractors each n unit comparators provided corresponding to the constituting the constituting the dividing circuit, the n Based on the subtraction result expressed by 2 bits, which is a redundant binary number, which is a subtraction result of a partial remainder and a divisor obtained in each of n unit subtractors constituting a parallel type subtractor of digits, the 2 By comparing the bits, a subtraction result in each of the n unit subtractors constituting the n-digit parallel subtractor is determined, and when the subtraction result is positive or 0, the n-digit subtractor The partial residue obtained in each of the n unit subtractors constituting the parallel type subtractor is output to the next stage as the true partial residue, and the n-digit parallel type subtraction is performed when the subtraction result is negative. Input to each of the n unit subtractors constituting the unit Parallel-type divider, characterized in that it comprises a subtraction determination circuit for outputting to the next stage of the front stage partial remainder that as the true partial remainder.
n個の単位減算器を並列に接続してなるn桁の並列型の減算器を、1桁づつシフトするように、n段に構成してなる除算回路と、
前記除算回路を構成するn桁の並列型の減算器を構成する前記n個の単位減算器の各々に対応して設けられたn個の単位比較器からなる演算判断回路であって、当該n桁の並列型の減算器を構成するn個の単位減算器の各々において求まる部分剰余と除数との減算結果であって冗長2進数である2ビットで表現された減算結果に基づいて、前記2ビットを比較することにより、当該n桁の並列型の減算器に入力される被減数と減数の大小を判断し、当該被減数が減数より大きいか又は減数と等しい場合に当該n桁の並列型の減算器を構成するn個の単位減算器の各々において求まる部分剰余を当該真の部分剰余として次段に出力させ、当該被減数が減数より小さい場合に当該n桁の並列型の減算器を構成するn個の単位減算器の各々に入力された前段の部分剰余を当該真の部分剰余として次段に出力させる減算判断回路とを有する
ことを特徴とする並列型の除算器。A parallel-type divider with n-digit arithmetic accuracy for performing redundant binary arithmetic,
a division circuit configured in n stages so that an n-digit parallel type subtractor formed by connecting n unit subtractors in parallel is shifted by one digit;
An arithmetic determination circuit consisting of n-digit parallel subtracter said n unit subtractors each n unit comparators provided corresponding to the constituting the constituting the dividing circuit, the n Based on the subtraction result expressed by 2 bits, which is a redundant binary number, which is a subtraction result of a partial remainder and a divisor obtained in each of n unit subtractors constituting a parallel type subtractor of digits, the 2 By comparing the bits, the subtractor input to the n-digit parallel-type subtractor is determined as to the magnitude of the subtract, and when the subordinate is greater than or equal to the subtract, the n-digit parallel-type subtraction is performed. The partial residue obtained in each of the n unit subtractors constituting the unit is output to the next stage as the true partial remainder, and the n-digit parallel subtractor is formed when the subtracted number is smaller than the subtractive number. Input to each of the unit subtractors. Parallel-type divider, characterized in that it comprises a subtraction determination circuit for outputting to the next stage of the front stage of the partial remainder as the true partial remainder was.
前記比較器が、当該n桁の並列型の減算器を構成するn個の単位減算器の各々に対応して設けられたn個の単位比較器を、カスケード接続してなる
ことを特徴とする請求項1又は請求項2に記載の並列型の除算器。The subtraction judgment circuit comprises a comparator,
The comparator is formed by cascading n unit comparators provided corresponding to each of the n unit subtractors constituting the n-digit parallel type subtractor. The parallel divider according to claim 1 or 2.
n個の単位減算器を並列に接続してなるn桁の並列型の減算器からなる除算回路と、
前記除算回路に対応して設けられ、当該n桁の並列型の減算器における減算結果を判断し、当該減算結果が正又は0である場合に当該n桁の並列型の減算器を構成するn個の単位減算器の各々において求まる部分剰余を当該真の部分剰余として次段に出力させ、当該減算結果が負である場合に当該n桁の並列型の減算器を構成するn個の単位減算器の各々に入力された前段の部分剰余を当該真の部分剰余として次段に出力させる減算判断回路と、
前記除算回路を構成するn桁の並列型の減算器を構成するn個の単位減算器毎に設けられたn個の保持回路であって、前記減算判断回路によって定められる当該対応する単位減算器の真の部分剰余を入力され、所定のクロックに同期して当該入力を1桁シフトさせて当該対応する単位減算器に隣接する単位減算器に入力するn個の保持回路とを有する
ことを特徴とする順序回路型の除算器。A sequential circuit type divider having an arithmetic precision of n digits for performing redundant binary arithmetic,
a division circuit comprising an n-digit parallel subtractor formed by connecting n unit subtractors in parallel;
N corresponding to the division circuit, determining a subtraction result in the n-digit parallel subtractor, and forming the n-digit parallel subtractor when the subtraction result is positive or 0 N unit subtractions that form the n-digit parallel subtracter when the partial remainder obtained in each of the unit subtractors is output to the next stage as the true partial remainder and the subtraction result is negative A subtraction judgment circuit that outputs the partial remainder of the previous stage input to each of the units to the next stage as the true partial remainder;
N holding circuits provided for each of n unit subtractors constituting the n-digit parallel subtractor constituting the division circuit, the corresponding unit subtractor determined by the subtraction judgment circuit And n holding circuits for shifting the input by one digit in synchronization with a predetermined clock and inputting it to a unit subtracter adjacent to the corresponding unit subtractor. A sequential circuit type divider.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2000005554A JP4300332B2 (en) | 2000-01-14 | 2000-01-14 | Divider |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2000005554A JP4300332B2 (en) | 2000-01-14 | 2000-01-14 | Divider |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2001195236A JP2001195236A (en) | 2001-07-19 |
JP4300332B2 true JP4300332B2 (en) | 2009-07-22 |
Family
ID=18534208
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2000005554A Expired - Fee Related JP4300332B2 (en) | 2000-01-14 | 2000-01-14 | Divider |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP4300332B2 (en) |
-
2000
- 2000-01-14 JP JP2000005554A patent/JP4300332B2/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2001195236A (en) | 2001-07-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4955182B2 (en) | Integer calculation field range extension | |
Tenca et al. | High-radix design of a scalable modular multiplier | |
US5289397A (en) | High-speed modulo exponentiator device | |
US20040167952A1 (en) | Method and apparatus for carrying out efficiently arithmetic computations in hardware | |
JPH03156531A (en) | Division processor | |
US20120265794A1 (en) | Montgomery multiplication circuit | |
US5132925A (en) | Radix-16 divider using overlapped quotient bit selection and concurrent quotient rounding and correction | |
GB2421327A (en) | Calculating the number of digits in a quotient for integer division | |
US6728744B2 (en) | Wide word multiplier using booth encoding | |
US7046800B1 (en) | Scalable methods and apparatus for Montgomery multiplication | |
JP2585649B2 (en) | Division circuit | |
US6847986B2 (en) | Divider | |
US7240204B1 (en) | Scalable and unified multiplication methods and apparatus | |
US8892621B2 (en) | Implementation of negation in a multiplication operation without post-incrementation | |
Nannarelli | Radix-16 combined division and square root unit | |
US7174015B1 (en) | Methods and apparatus for variable radix scalable modular multiplication | |
US20230086090A1 (en) | Methods and Apparatus for Quotient Digit Recoding in a High-Performance Arithmetic Unit | |
JP4300332B2 (en) | Divider | |
Dixit et al. | FPGA accomplishment of a 16-bit divider | |
Piestrak | Design of multi-residue generators using shared logic | |
Hiasat et al. | Semi-custom VLSI design and implementation of a new efficient RNS division algorithm | |
Sutter et al. | Comparative study of SRT-dividers in FPGA | |
Takagi et al. | A VLSI algorithm for computing the Euclidean norm of a 3D vector | |
Chandu et al. | Design and implementation of high efficiency square root circuit using Vedic mathematics | |
US8892622B2 (en) | Pipelined divide circuit for small operand sizes |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20070105 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20081125 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20090126 |
|
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: 20090324 |
|
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: 20090403 |
|
FPAY | Renewal fee payment (prs date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120501 Year of fee payment: 3 |
|
R150 | Certificate of patent (=grant) or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
S531 | Written request for registration of change of domicile |
Free format text: JAPANESE INTERMEDIATE CODE: R313531 |
|
FPAY | Renewal fee payment (prs date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120501 Year of fee payment: 3 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
LAPS | Cancellation because of no payment of annual fees |