JP3660075B2 - 除算装置 - Google Patents
除算装置 Download PDFInfo
- Publication number
- JP3660075B2 JP3660075B2 JP26490296A JP26490296A JP3660075B2 JP 3660075 B2 JP3660075 B2 JP 3660075B2 JP 26490296 A JP26490296 A JP 26490296A JP 26490296 A JP26490296 A JP 26490296A JP 3660075 B2 JP3660075 B2 JP 3660075B2
- Authority
- JP
- Japan
- Prior art keywords
- multiplier
- divisor
- redundant binary
- quotient
- output
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/52—Multiplying; Dividing
- G06F7/535—Dividing only
Landscapes
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Complex Calculations (AREA)
- Error Detection And Correction (AREA)
Description
【発明の属する技術分野】
この発明は、半導体集積回路による除算を実行するための除算装置に関し、特にその除算処理の高速化に関するものである。
【0002】
【従来の技術】
近年、コンピュータの高性能化に伴いコンピュータグラフィックス技術が急速に発展している。コンピュータグラフィックスでは膨大な量の数値演算が要求されるため、その実現には極めて高速の数値演算処理が必要とされる。またコンピュータグラフィックにおいては、通常の数値演算処理に比べて除算の頻度が高く、これまでソフトウエアを用いてある程度時間をかけて処理していたのに対し、除算をハードウエアで高速に処理する必要が生じている。
【0003】
図19は例えば、特開平1−321517号公報に記載された従来のハードウエアによる除算装置を示す回路構成図であり、図において、123はROM等の記憶手段、125,126,127,128は第1、第2、第3、第4のデータバスセレクタ(MUX)、133,134は第1、第2の乗算器、137は2の補数器、139は加算器である。
【0004】
次に動作について説明する。
記憶手段123は除数1(ai )をアドレス入力として除数の逆数の近似値を出力し、第1のデータバスセレクタ125は記憶手段123の出力124と2の補数器137の出力138とを入力とし、第2のデータバスセレクタ126は除数と第1の乗算器133の出力135と第2の乗算器134の出力136とを入力とし、第3のデータバスセレクタ127は記憶手段123の出力124と2の補数器137の出力138とを入力とし、第4のデータバスセレクタ128は被除数と第2の乗算器134の出力136とを入力とし、第1の乗算器133は第1のデータバスセレクタ125の出力129を第1の入力とし、第2のデータバスセレクタ126の出力130を第2の入力として乗算結果を第2のデータバスセレクタ126、2の補数器137および加算器139へ出力し、第2の乗算器134は第3のデータバスセレクタ127の出力131を第1の入力とし、第4のデータバスセレクタ128の出力132を第2の入力として、乗算結果を第2、第4のデータバスセレクタ126,128および加算器139へ出力し、加算器139は第1、第2の乗算器133,134の出力の和を商として出力するものである。
【0005】
【発明が解決しようとする課題】
従来の除算装置は以上のように構成されているので、次のような課題があった。
1.第1の乗算器および第2の乗算器はともにm×m/2ビット構成となっており、計算のループの度にこの乗算が行われることになり、乗算器による遅延時間が大きい。通常、乗算器は乗数と被乗数から複数の部分積を生成し、これを例えばキャリーセーブアダー等によって部分積が2つになるまで足し上げ、さらにこの2つの部分積を加算器によって最終加算することによって乗算を行う。この乗算を高速化するために、従来ブースのアルゴリズムによる部分積数の低減、ワレスのトリーによる部分積の高速な足し上げ、およびキャリールックアヘッド方式による高速の最終加算などの工夫が行われている。
【0006】
しかし、このような工夫を行っても第1、第2の乗算器による遅延時間は依然大きく、これを複数回実行する従来の除算装置では、この実行回数に比例する遅延時間がかかることを避けることはできない。すなわち、上記従来の除算装置のような通常の乗算器を用いると、乗算器における遅延のために除算時間が長くかかってしまう。
【0007】
2.計算のループの度に2の補数器を通過するが、2の補数器は一種の加算器で構成するため、この加算器における遅延時間が加わりさらに除算実行時間が長くなる。また、2の補数器を別に用いなければならないので、ハードウエア量も増加する。
【0008】
3.一つの除算が行われる間、回路全体が占有されるため、その1つの除算が終了するまで次の計算をはじめることができない。したがって、パイプライン処理による高速化ができない。
【0009】
この発明は上記のような課題を解決するためになされたもので、除算処理の高速化を図り、構成の単純化を図ることを実現した除算装置を得ることを目的とする。
【0011】
【課題を解決するための手段】
この発明に係る除算装置は、除数の上位側の所定桁数ビットあるいはそのうちの最上位1ビットを除くビット桁からなる第1の乗数を入力して制御信号を出力する制御回路と、上記第1の乗数と上記除数とを乗じることによって整数部分が“1”で小数点以下第1位から少なくとも2個のゼロが並ぶ冗長二進表現の第1の中間除数を得る第1の乗算器と、上記第1の乗数と上記被除数とを乗じることによって冗長二進表現の第1の中間商を得る第2の乗算器と、上記第1の中間除数の上位複数桁を取り出して小数点以下第3位と第4位の冗長二進ビットを正負反転させることによって第2の乗数を生成し、この第2の乗数と上記第1の中間除数とを乗じることによって、整数部分が“1”で小数点以下第1位から少なくとも3個のゼロが並ぶ冗長二進表現の第2の中間除数を得る第3の乗算器と、上記第2の乗数と上記第1の中間商とを乗じることによって冗長二進表現の第2の中間商を得る第4の乗算器と、整数部分が“1”で小数点以下m個のゼロが続く第2の中間除数に対して上位n桁(m+3≦n≦2m+1)を取り出して小数点以下第(m+1)位から第(n−1)位までの冗長二進ビットを正負反転させることによって第3の乗数を生成し、この第3の乗数と上記第2の中間除数とを乗じることによって、整数部分が“1”で小数点以下第1位から少なくとも(2m−1)個のゼロが並ぶ冗長二進表現の第3の中間除数を得る第a(aは5以上の奇数)の乗算器と、上記第3の乗数と上記第2の中間商とを乗じることにより冗長二進表現の第3の中間商を得る第c(cは6以上の偶数)の乗算器と、整数部分が“1”で小数点以下p個のゼロが続く第3の中間除数に対して上位q桁(p+3≦q≦2p+1)を取り出して小数点以下第(p+1)位から第(q−1)位までの冗長二進ビットを正負反転させることによって第4の乗数を生成し、この第4の乗数と上記第3の中間商とを乗じることにより冗長二進表現の商を得る第b(bは6以上の偶数)の乗算器とを備え、上記第1から第4の乗算器による演算実行後、上記第a(aは5以上の奇数)の乗算器と第b(bは6以上の偶数)の乗算器による演算を必要回数繰り返し、最後に上記第c(cは6以上の偶数)の乗算器第3のステップを実行する。
【0012】
この発明に係る除算装置は、得られた冗長二進表現の商を二進数に変換して出力する変換器を備えたものである。
【0013】
この発明に係る除算装置は、制御回路は除数(ai )の上位複数桁ビットを入力して、下記演算式を実行して第1の乗数を生成するものである。
1≦(ai )<5/4のとき :(ci )=(ai )
5/4≦(ai )<13/8のとき:(ci )=(3/4)×(ai )
13/8≦(ai )<2のとき :(ci )=(1/2)×(ai )
【0014】
この発明に係る除算装置は、元の除数と小数点以下2桁を“0”とするに必要なだけシフトさせた該除数とを引き算して第1の中間除数を得るものである。
【0015】
この発明に係る除算装置は、制御回路は除数のうちの小数点以下第1位から第3位までの3ビットを入力として、上記除数の各ビットを全てゼロにするか、1ビット下位桁側へシフトするか、2ビット下位桁側へシフトするかを制御する信号と、冗長二進表現された第1の中間除数の小数点以下第3桁の値を示す信号とを出力させるものである。
【0016】
この発明に係る除算装置は、第1の乗算器は、制御信号により除数の各ビットを全てゼロにするか、1ビット下位桁側ヘシフトするか、2ビット下位桁側ヘシフトするかを行うシフタ回路を備え、このシフタ回路の出力と上記除数とから上記冗長二進表現された第1の中間除数の小数点以下第4桁目以下を生成するものである。
【0017】
この発明に係る除算装置は、第2の乗算器は、制御信号により被除数の各ビットを全てゼロにするか、1ビット下位桁側ヘシフトするか、2ビット下位桁側ヘシフトするかを行うシフタ回路とを備え、このシフタ回路の出力と上記被除数とから上記冗長二進表現された第1の中間商を生成するものである。
【0018】
この発明に係る除算装置は、第3あるいは第aの乗算器は、入力される第1の中間除数を符号反転して二つの冗長二進数を発生させる二つの符号反転器と、上記二つの冗長二進数を加算して一つの冗長二進数を出力する二つの冗長二進加算器とを備えたものである。
【0019】
この発明に係る除算装置は、第4あるいは第bの乗算器は、入力された第1の中間商を符号反転して二つの冗長二進数を発生させる二つの符号反転器と、上記二つの冗長二進数を加算して一つの冗長二進数を出力する二つの冗長二進加算器とを備えたものである。
【0020】
この発明に係る除算装置は、符号反転器は、一対の冗長二進数の成分を入力し、冗長二進数の制御入力によって出力を選択するマルチプレクサ回路を備えたものである。
【0021】
この発明に係る除算装置は、冗長二進加算器は、二組の冗長二進数を加算して冗長二進数を出力する各桁毎の加算器を複数備えたものである。
【0022】
この発明に係る除算装置は、被除数として定数“1”を用いることにより、除数の逆数を商として出力するものである。
【0023】
この発明に係る除算装置は、第2の中間除数に対して上位n桁または第3の中間除数に対して上位q桁を、(n−m−1)または(q−p−1)が2のべき乗から1を引いた値となるように設定するものである。
【0024】
この発明に係る除算装置は、中間除数と同時に制御信号を選択し、この二つから演算を実行した演算器の出力を選択するマルチプレクサと、中間商を選択し、この中間商を上記制御信号と乗算した演算器の出力を選択するマルチプレクサとを備えたものである。
【0025】
この発明に係る除算装置は、クロック信号で制御され、中間除数および中間商を一時蓄え、演算器に出力するパイプラインレジスタを備えたものである。
【0026】
この発明に係る除算装置は、除数の上位側の所定桁数ビットあるいはそのうちの最上位1ビットを除く所定桁数のビットからなるビット列をアドレス入力とし、そこから第1の乗数を出力する記憶手段と、上記第1の乗数と上記除数とを乗じることによって整数部分が“1”で小数点以下第1位から少なくともr個のゼロが並ぶ冗長二進表現の第1の中間除数を得る第1の乗算器と、上記第1の乗数と上記被除数とを乗じることによって冗長二進表現の第1の中間商を得る第2の乗算器と、上記第1の中間除数に対して上位s桁(r+3≦s≦2r+1)を取り出して小数点以下第(r+1)位から第(s−1)位までの冗長二進ビットを正負反転させることによって第2の乗数を生成し、この第2の乗数と上記第1の中間除数とを乗じることによって、整数部分が“1”で小数点以下第1位から少なくとも(2r−1)個のゼロが並ぶ冗長二進表現の第2の中間除数を得る第t(tは3以上の奇数)の乗算器と、上記第2の乗数と上記第1の中間商とを乗じることによって冗長二進表現の第2の中間商を得る第u(uは4以上の偶数)の乗算器と、整数部分が“1”で小数点以下v個のゼロが続く第2の中間除数に対して上位w桁(v+3≦w≦2v+1)を取り出して小数点以下第(v+1)位から第(w−1)位までの冗長二進ビットを正負反転させることによって第3の乗数を生成し、この第3の乗数と上記第2の中間除数とを乗じることにより,冗長二進表現の商を得る第y(yは4以上の偶数)の乗算器とを備え、上記第1および第2の乗算器による演算実行後、上記第t(tは3以上の奇数)の乗算器と第u(uは4以上の偶数)の乗算器による演算を必要回数繰り返し、最後に上記第y(yは4以上の偶数)の乗算器による演算を実行するものである。
【0027】
【発明の実施の形態】
以下、この発明の実施の一形態を説明する。
実施の形態1.
図1はこの発明の実施の形態1による除算装置の構成を示すブロック図であり、図において、1は除数(ai )、2は被除数(bi )であり、この実施の形態1では、除数1(ai )および被除数2(bi )はともに整数部分1桁、小数点以下7桁で合計8桁の2進数、すなわち、
(ai )=a0 .a1 a2 a3 a4 a5 a6 a7 [1]
(bi )=b0 .b1 b2 b3 b4 b5 b6 b7 [2]
とし、さらに最上位の一の位は“1”とする。すなわち、
a0 =1 [3]
b0 =1 [4]
とする。
【0028】
除算においては、除数および被除数の小数点位置を移動させても商のビット並びは変わらないので、式[1]〜[4]の仮定によって一般性が失われることはない。3は除数1(ai )のうちの最上位a0 を除く上位3ビットの第1の乗数(a1 〜a3 )である。
【0029】
6は第1の乗数3(a1 〜a3 )を入力として制御信号7を発生させる制御回路、4は除数1(ai )と制御信号7から乗算を行う第1の乗算器、5は被除数2(bi )と制御信号7から乗算を行う第2の乗算器、8は第1の乗算器4の出力結果で冗長2進数で表された第1の中間除数(ci )、9は第2の乗算器5の出力結果で冗長2進数で表された第1の中間商(di )である。
【0030】
10は第1の中間除数8(ci )のうちの2ビットの第2の乗数(c3 〜c4 )、11は第1の中間除数8(ci )と第2の乗数10(c3 〜c4 )に基づいて乗算を行う第3の乗算器、12は第1の中間商9(di )と第2の乗数10(c3 〜c4 )に基づいて乗算を行う第4の乗算器、13は第3の乗算器11の出力結果で冗長2進数で表された第2の中間除数(ei )、14は第2の乗算器5の出力結果で冗長2進数で表された第2の中間商(fi )である。
【0031】
15は第2の中間除数13(ei )のうちの3ビットの第3の乗数(e4 〜e6 )、16は第2の中間除数13(ei )と第3の乗数15(e4 〜e6 )に基づいて乗算を行う第5の乗算器、17は第2の中間商14(fi )と第3の乗数15(e4 〜e6 )に基づいて乗算を行う第6の乗算器、18は第5の乗算器16の出力結果で冗長2進数で表された第3の中間除数(gi )、19は第4の乗算器12の出力結果で冗長2進数で表された第3の中間商(hi )である。
【0032】
20は第3の中間除数18(gi )のうちの5ビットの第4の乗数(g6 〜g10)、21は第3の中間商19(hi )と第4の乗数20(g6 〜g10)に基づいて乗算を行う第7の乗算器、22は第7の乗算器21の出力結果で冗長2進数で表された第4の中間商(ki )である。23は冗長二進数で表された第4の中間商22(ki )を通常の二進数に変換する冗長二進→二進変換器、24は除算の答えとなる商(qi )である。
【0033】
次に動作について説明する。
まず、除数1(ai )の上位4ビットから以下のような乗算を実行する。
これによって、全ての入力(ai )に対して
3/4<(ci )<5/4 [8]
とすることができる。
【0034】
ここで(ci )を各桁が−1,1,0の3値をもついわゆる冗長二進数で表現すると、
(ci )=1.00c4 c5 c6 … [9]
という形に書くことができる。なぜならば、冗長二進表現では3/4と5/4は、
3/4=1.00−1−1−1… [10]
5/4=1.00111… [11]
と表されるので、その間の値を持つ(ci )は必ず式[9]の形で表すことができるからである。
【0035】
第2の乗算器5においては、被除数2(bi )に対して式[5]〜[7]と同様の以下の計算が行われる。
【0036】
次に、第3の乗算器11および第5の乗算器16における乗算を説明するために、まず、次の一般的な冗長二進数の性質について説明する。仮に冗長二進数(xi )が、
(xi )=1.00・・0xn+1 …x2nx2n+1… [15]
という形で表されるとする。ただし、小数第1位から始まる“0”はn個続くとする。
【0037】
ここで、
α=(xn+1 …x2n)/22n [16]
β=(0.x2n+1…)/22n [17]
と置くと、
(xi )=1+α+β
と書ける。(xi )は冗長二進表現なので、
−(2n −1)/22n<α<(2n −1)/22n
すなわち、|α|<(2n −1)/22n [18]
−1/22n<β<1/22n
すなわち、|β|<1/22n [19]
となる。
【0038】
ここで、(yi )を、
(yi )=(1+α+β)×(1−α) [20]
と置いて計算すると、
(yi )=1−α2 −αβ+β [21]
となる。
【0039】
この第2項目以降(−α2 −αβ+β)の絶対値をεと置くと、式[16]および[17]から、
となる。
【0040】
したがって、(yi )は冗長二進表現で次のように表すことができる。
(yi )=1.00・・・0y2ny2n+1… [23]
ただし、小数第1位から続く“0”の数は(2n−1)個である。
【0041】
このように式[15]の形で表される任意の冗長二進数(xi )に対し、その小数以下はじめて“0”でない数字が現れる桁から下位方向に向かって、小数第1位から続く“0”の数nと同数の桁数分だけ取り出したものをαとし、(1−α)を乗ずることによって、式[23]のような小数第1位以下(2n−1)個の“0”が続く冗長二進数(yi )を得ることができる。
【0042】
第3の乗算器11および第5の乗算器16は、以上の考えに基づいて乗算を行うためのもので、まず第2の乗算器5においては式[9]のように小数以下2個の“0”を持つ第1の中間除数8(ci )と数(1.00−c3 −c4 )との掛け算が行われる。その結果、出力の第2の中間除数13(ei )は、
と小数以下3個の“0”が並ぶ形で表される。
【0043】
(1.00−c3 −c4 )は二つの冗長二進ビットc3 とc4 とを符号反転することで生成できるので、(ci )を被乗数とした場合、第2の乗数10はc3 とc4 との二つから生成することができる。例えば、c3 が“1”の場合はこれを“−1”とし、“0”の場合は“0”、“−1”の場合は“1”とする。同様に第5の乗算器16においては小数以下3個の“0”を持つ第2の中間除数13(ei )と(1.000−e4 −e5 −e6 )との掛け算が行われる。
【0044】
その結果、出力の第3の中間除数18(gi )は、
(gi )=1.00000g6 g7 … [25]
と小数以下5個の“0”が並ぶ形で表される。(1.000−e4 −e5 −e6 )は三つの冗長二進ビットe4 ,e5 ,e6 を符号反転することで生成できるので、(ei )を被乗数とした場合、第3の乗数15はe4 ,e5 ,e6 の三つから生成することができる。
【0045】
また、第4の乗算器12では第1の中間商(di )と第2の乗数10(c3 〜c4 )より生成された(1.00−c3 −c4 )との乗算が行われ、その結果、第2の中間商14(fi )を生成し、第6の乗算器17では第2の中間商14(fi )と第3の乗数15(e4 〜e6 )より生成された(1.000−e4 −e5 −e6 )との乗算が行われ、その結果、第3の中間商19(hi )を生成し、第7の乗算器21では第3の中間商19(hi )と第3の中間除数18の一部の第4の乗数20(g6 〜g10)から生成された(1.00000−g6 −g7 −g8 −g9 −g10)との乗算が行われ、その結果、第4の中間商22(ki )を生成する。
【0046】
このような乗算により、中間商は以下の理由で次第に被除数2(bi )を除数1(ai )で割った商に近づいていく。すなわち、
とおくと、第4の中間商22(ki )は、
(ki )=r×(bi ) [27]
と書ける。
【0047】
また、
なので、
となり、式[23]よりこれは小数点以下(2×5−1)=9個の“0”が並ぶ。すなわち、
1−10-9<r×(ai )<1+10-9 [30]
となる。
【0048】
式[27]を、
(ki )=(r×(ai ))×((bi )/(ai )) [31]
と変形して式[28]を代入し、さらに、
(bi )/(ai )<2 [32]
であることを用いると次の式が得られる。
【0049】
したがって、第4の中間商22(ki )は小数点以下7桁の精度で商(bi )/(ai )に等しいことが分かる。このように、この実施の形態1により入力の乗数および被乗数の精度に等しい精度を持つ商の値を得ることができる。
【0050】
さらに、第4の中間商22(ki )は冗長二進→二進変換器23によって冗長二進数から通常の二進数に変換され、最終的に二進数の商24(qi )として出力される。
【0051】
以上のように、実施の形態1によれば、乗算器はそれぞれ冗長二進数による乗算を行うため、従来の乗算器で行っていたキャリールックアヘッド方式などによる最終加算が不要となり高速化が可能となる。また、従来例のように、2の補数器を使うことなしに各乗算器の除数を被除数の一部から容易に生成できるので、さらに高速化が可能になる。また、データが図1の上から下に向かって一方向に流れるので、実行中に次のデータを入力することも可能で、さらに処理能力を向上させることができる。
【0052】
なお、実施の形態1では商の精度が小数点以下7桁までとした場合について示したが、商に対してより高精度が要求される際には、この実施の形態1に述べた計算ステップをさらに増加させることによって任意の精度の商を得ることができる。
【0053】
実施の形態2.
図2はこの発明の実施の形態2による制御回路6の説明図であり、3つの入力信号a1 ,a2 ,a3 から2つの出力m1 ,m2 を生成する。式[5]〜[7]の乗算は制御回路6に図3の表に示した機能を持たせることによって実現できる。すなわち、制御回路6の出力である制御信号7を3桁の冗長二進数、
(mi )=m0 .m1 m2 (ただしm0 =1) [34]
で表し、入力信号a1 〜a3 に対して図3の表に示すような規則で(mi )を発生させて、これと除数1(ai )とを第1の乗算器4によって掛け合わせることにより、式[5]〜[7]のような乗算が実行でき、その結果、式[9]のような第1の中間除数8(ci )を得ることができる。m0 は常に“1”なので特に発生させる必要はない。
【0054】
また、第2の乗算器5では式[12]〜[14]に従って(mi )と被除数2(bi )との積が行われ、その結果が冗長二進数の第1の中間商9(di )として出力される。
【0055】
以上のように、この実施の形態2によれば、上記構成の制御回路6を用いることにより前記実施の形態1の効果を実現することができる。
なお、冗長二進数は3値をとるため、通常2ビットの信号の組み合わせで表現されるが、この実施の形態2はそのあらゆる表現方法に対して適用することができる。
【0056】
実施の形態3.
図4および図5はこの発明の実施の形態3による制御回路6と第1の乗算器4による第1の中間除数8(ci )の生成方法を示す説明図であり、図4および図5において、除数1(ai )の上位から4桁の組み合わせはa0 が常に“1”なので全部で8通あり、図4においてはそれぞれの場合をcase1〜case8として示している。第1の中間除数8(ci )は、式[9]のように小数点以下上位2桁を“0”とする必要があるが、もともとa1 およびa2 が“0”である。case1とcase2については、そのまま(ai )を(ci )とすればよい。これは式[5]に対応する。case3〜case8の場合に行う処理を図5に示す。
【0057】
case3〜case5はそれぞれ図5の(a)〜(c)に対応しており、いずれも自分自身を右方向へ2ビットシフトしたものを自分自身から引くという操作を行っている。これは、式[6]に対応した操作である。case3およびcase4では引いた結果の上位4桁が“1.001”となるので、そのまま出力すればよい。これに対してcase5では引いた結果の上位4桁が“1.1−1−1”となるが、冗長二進数において“1−1−1”は“001”と同じ値なので、上位4桁を強制的に“1.001”とすることができる。
【0058】
case6〜case8はそれぞれ図5の(d)〜(f)に対応しており、いずれもcase3〜case5と同様に自分自身を右方向へ1ビットシフトしたものを自分自身から引くという操作を行っている。これは、式[7]に対応した操作である。case6は引いた値の上位4桁が“1.0−11”となるが冗長二進数においては“−11”は“0−1”に等しいので、上位4桁を強制的に“1.00−1”とすることができる。case7およびcase8では引いた値の上位4桁がそれぞれ“1.00−1”および“1.000”となるのでそのまま出力することができる。
【0059】
このように図4および図5に示されたルールによって第1の中間除数8(ci )を生成することにより、式[9]の形の第1の中間除数8(ci )を容易に得ることができる。
なお、この実施の形態3も冗長二進のあらゆる表現方法に対して適用することができる。
【0060】
実施の形態4.
図6は上記実施の形態3を実現するこの発明の実施の形態4による制御回路6の構成を示す説明図であり、出力される制御信号7として25〜29の5種類の信号を用いている。また冗長二進数の表現方法としては、冗長二進数pに対し、
という定義を用いている。すなわち一対の二進数の差をその値としている。
【0061】
上記実施の形態3において、出力の第1の中間除数8(ci )は、除数1(ai )から図4に示すルールで計算されるが、式[34]を用いれば、このルールは、除数1(ai )の各ビットを全て“0”にすることと、右方向に1ビットシフトさせることと、右方向に2ビットシフトさせることによって実現することができる。このそれぞれを制御する信号が、zero25、第1のshift26および第2のshift27である。また、c0 〜c2 は“1.00”となるようにしているが、c3 は入力によって変化するので、c3 _plus28とc3 _minus29とを発生させている。
【0062】
以上のように、この実施の形態4によれば、実際の乗算を行うことなしに、シフト操作のみで第1の中間除数8(ci )を得ることができる。
【0063】
実施の形態5.
図7は上記の実施の形態3および4を実現するこの発明の実施の形態5による第1の乗算器4の構成図を示すもので、zero25、第1のshift26および第2のshift27の制御入力に対してシフトを行うシフタ回路30を備えている。zero25が“1”のときは出力(qi )31に全て“0”が出力され、第1のshift26が“1”のときは除数1(ai )を右方向へ1ビットシフトしたものが(qi )31として出力される。また、第2のshift27が“1”のときは除数1(ai )を右方向へ2ビットシフトしたものが出力(qi )31として出力される。出力された(qi )31は、除数1(ai )とペアにして、第1の中間除数8(ci )のうちの小数第4位以下(c4 c5 …)33を生成する。
【0064】
すなわち、
ci =(ai ,qi ) (i=4,5,…) [36]
また、第1の中間除数32(c3 )は図4のルールに従ってc3 _plusとc3 _minusとのペアでそのまま出力される。第1の中間除数c0 〜c2 “1.00”と一定なので、ここでは特に生成する必要はない。
【0065】
以上のように、この実施の形態5によれば、特に乗算を実行することなく単なるシフト操作のみによって、乗算結果である第1の中間除数8(ci )を得ることができるので、高速で小面積の第1の乗算器4を構成することができる。
【0066】
実施の形態6.
図8は上記実施の形態3および4を実現するこの発明の実施の形態6による第2の乗算器5の構成を示すもので、実施の形態5と同様にzero25、第1のshift26および第2のshift27の制御入力に対してシフトを行うシフタ回路34を備えている。zero25が“1”のときは出力(ri )35に全て“0”が出力され、第1のshift26が“1”のときは被除数2(bi )を右方向へ1ビットシフトしたものが出力(ri )35として出力される。
【0067】
また、第2のshift27が“1”のときは被除数2(bi )を右方向へ2ビットシフトしたものが出力(ri )35として出力される。シフタの制御は図4の場合と同様であるが、ここでは図9に示すように入力被除数2(bi )の小数点以下全ビットに対して行われ、被除数2(bi )とシフタ回路34の出力(ri )35とのペアにより、第1の中間商9(di )が生成される。
【0068】
以上のように、この実施の形態6によれば、特に乗算を実行することなく単なるシフト操作のみによって乗算結果である第1の中間商9(di )を得ることができるので、高速で小面積の第2の乗算器5を構成することができる。
【0069】
実施の形態7.
図10はこの発明の実施の形態7としての第3の乗算器11の構成を示すもので、図において、36,38は第1の中間除数8(ci )からの乗数(c3 あるいはc4 )を制御信号として冗長二進入力を符号反転する符号反転器、40,42は二つの冗長二進入力を加算して一つの冗長二進数を出力する冗長二進加算器である。この実施の形態7による第3の乗算器11は、式[24]を計算するための回路で、入力の第1の中間除数8(ci )から二つの冗長二進数37および39を発生させ、さらに第1の中間除数8(ci )、二つの冗長二進数37および39をいわゆるワレストリーと呼ばれる樹木状に足し合わせる方式が用いられている。
【0070】
次に動作について説明する。
まず、入力の第1の中間除数8(ci )のうちの有効ビットc3 〜c9 が、符号反転器36および38によって乗数c3 を制御信号として符号反転される。すなわち、符号反転器36においては乗数c3 が“0”のときは冗長二進数37に全て“0”が出力され、乗数c3 が“1”のときは有効ビットc3 〜c9 を各ビット毎に全て符号反転したものが冗長二進数37に出力され、乗数c3 が“1”のときは有効ビットc3 〜c9 がそのまま冗長二進数37に出力される。冗長二進数37は入力に対して3ビット右方向にシフトした位置に出力される。
【0071】
また、符号反転器38においては乗数c4 が“0”のときは冗長二進数39に全て“0”が出力され、乗数c4 が“−1”のときは有効ビットc3 〜c9 を各ビット毎に全て符号反転したものが冗長二進数39に出力され、乗数c4 が“−1”のときは有効ビットc3 〜c9 がそのまま冗長二進数39に出力される。冗長二進数39は入力に対して4ビット右方向にシフトした位置に出力される。
【0072】
次に、冗長二進加算器40では、二つの冗長二進数37と39が足し合わされて一つの冗長二進数41が出力される。また、冗長二進加算器42では、入力の第1の中間除数8(ci )と冗長二進数41が足し合わされて一つの冗長二進数が出力される。冗長二進数は第2の中間除数13(ei )となる。なお、有効ビットc3 〜c9 の符号反転は式[36]の(ai ,qi )を(qi ,ai )とするだけで容易に得ることができる。
【0073】
以上のように、この実施の形態7によれば、第1の中間除数8(ci )の上位3ビットを直接扱うことなく、また冗長二進加算は一般にキャリー信号の伝搬が起きないので、極めて高速に乗算結果を得ることができる。また、この実施の形態7による乗算器は、第3の乗算器11だけでなく第5の乗算器16にも適用することができる。
【0074】
実施の形態8.
図11はこの発明の実施の形態8としての第4の乗算器12の構成を示すもので、上記実施の形態7に示した第3の乗算器11とほぼ同様である。図において、43,45は乗数(c3 あるいはc4 )を制御信号として冗長二進入力を符号反転する符号反転器、47,49は二つの冗長二進入力を加算して一つの冗長二進数を出力する冗長二進加算器である。
【0075】
次に動作について説明する。
まず、入力の第1の中間商9(di )が、符号反転器43および45によって乗数c3 を制御信号として符号反転される。すなわち、符号反転器43においては乗数c3 が“0”のときは冗長二進数44に全て“0”が出力され、乗数c3 が“1”のときは有効ビットc3 〜c9 を各ビット毎に全て符号反転したものが冗長二進数44に出力され、乗数c3 が“−1”のときは有効ビットc3 〜c9 がそのまま冗長二進数44に出力される。冗長二進数44は入力に対して3ビット右方向にシフトした位置に出力される。
【0076】
また、符号反転器45においては乗数c4 が“0”のときは冗長二進数46に全て“0”が出力され、乗数c4 が“1”のときは有効ビットc3 〜c9 を各ビット毎に全て符号反転したものが冗長二進数46に出力され、乗数c4 が“−1”のときは有効ビットc3 〜c9 がそのまま冗長二進数46に出力される。冗長二進数46は入力に対して4ビット右方向にシフトした位置に出力される。
【0077】
次に、冗長二進加算器47では、二つの冗長二進数44と46が足し合わされて一つの冗長二進数48が出力される。また、冗長二進加算器49では、入力の第1の中間商9(di )と冗長二進数48が足し合わされて一つの冗長二進数が出力される。冗長二進数は第2の中間商14(fi )となる。
【0078】
以上のように、この実施の形態8によれば、キャリー信号の伝搬が起きない高速の冗長二進加算を用いて乗算が実行できるため、極めて高速に乗算結果を得ることができる。またこの実施の形態8による乗算器は、第4の乗算器12だけでなく第6の乗算器17および第7の乗算器21にも適用することができる。
【0079】
実施の形態9.
図12は実施の形態7および8を実現するこの発明の実施の形態9による符号反転器の構成を示すもので、図は1ビット分の構成を示している。図において、in_plus50とin_minus51は入力となる一対の冗長二進数の成分、(s)54は冗長二進数の制御入力、out_plus55とout_minus56は出力となる一対の冗長二進数の成分となる。52と53は制御入力(s)54の値によって出力を選択するマルチプレクサ回路である。
【0080】
図のような構成により、
s=0のとき:out_plus=0,out_minus=0
s=1のとき:out_plus=in−minus,out_minus=in_plus
s=−1のとき:out_plus=in_minus=in_minusとすることができ、所望の出力を得ることができる。
【0081】
実施の形態10.
図13は上記実施の形態7および8を実現するこの発明の実施の形態10の冗長二進加算器の構成例を示すもので、図において、57はそれぞれ(i+1)〜(i−1)桁目の1桁分の加算器58〜60を有する冗長二進加算器である。(i+1)桁目の加算器58は、二組の冗長二進数in1_plusi+1 61とin1_minusi+1 62、およびin2_plusi+1 63とin2_minusi+1 64を足し合わせて冗長二進数の出力out_plusi+1 73とout_minusi+1 74を出力する。
【0082】
同様にi桁目の加算器59は、二組の冗長二進数in1_plusi 65とin1_minusi 66、およびin2_plusi 67とin2_minusi 68を足し合わせて冗長二進数の出力out_plusi 75とout_minusi 76を出力し、(i−1)桁目の加算器60は、二組の冗長二進数in1_plusi-1 69とin1_minusi-1 70、およびin2_plusi-1 71とin2_minusi-1 72を足し合わせて冗長二進数の出力out_plusi-1 77とout_minusi-1 78を出力する。ti+1 〜ti-2 79〜82は、それぞれ一本または複数本の信号線からなる中間信号で、下位側の加算器から上位側の加算器へ伝えられる。一般に隣り含う中間信号ti+1 79とti 80は互いに独立とすることができるので、通常の二進数の加算の際に生じるいわゆるキャリー信号の伝搬が起きない。
【0083】
以上のように、この実施の形態10によれば、上記の構成により高速の冗長二進加算を実現することができる。
【0084】
実施の形態11.
図14はこの発明の実施の形態11による除算装置を示す構成図であり、図1における被除数2(bi )を“1”の被除数83としたもので、他の構成は図1に示す実施の形態1と同じであるが、この構成によって、高速の逆数器が得られる。
【0085】
実施の形態12.
図15はこの発明の実施の形態12による除算装置を示す構成図であり、第2、第3、第4の中間除数13,18,87から取り出す乗数15(e4 〜e6 )、乗数84(g6 〜g8 )、乗数89(j8 〜j14)のビット数を(2n −1)個とした場合を示す。この実施の形態12では、商を小数点以下24桁の精度で求める場合を示している。
【0086】
動作は第3の中間除数18(gi )を求めるところまでは実施の形態1と同様であるが、そこから乗数84として取り出す信号のビット数を実施の形態1の5ビットではなく3ビットとしている。ここで、実施の形態1の式[16]〜[22]を一般化するために、mをm≦nとして、
α=(xn+1 …Xn+m )/2n+m [37]
β=(0.xn+m+1 …)/2n+m [38]
と置くと、
−(2m −1)/2n+m <α<(2m −1)/2n+m
すなわち、|α|<(2m −1)/2n+m [39]
1/2n+m <β<1/2n+m
すなわち、|β|<1/2n+m [40]
となる。
【0087】
εを計算すると最終的に
ε=|α|2 +|α||β|+|β|<2-(n+m-1) [41]
が得られる。すなわち、(1−α)を掛けることによって小数点以下に続く“0”の数を(n+m−1)とすることができる。この考えから第7の乗算器85における乗算の結果、第4の中間除数87(ji )は小数点以下に続く“0”の数は7個となる。
【0088】
次に第4の中間除数87(ji )から取り出す乗数89のビット数は7ビットとしている。このため、第9の乗算器90における乗算の結果、第5の中間除数92(li )は小数点以下に続く“0”の数は13個となる。さらに、第5の中間除数92(li )からは乗数94(i14〜i26)として13ビットが取り出される。
【0089】
一方、第8の乗算器86、第10の乗算器91、第11の乗算器95はそれぞれ実施の形態1の第4、第6、第7の乗算器12,17,21と同様の働きをして、それぞれ第4の中間商88(ki )、第5の中間商93(mi )、第6の中間商96(ni )を生成する。第6の中間商96(ni )は、さらに冗長二進→二進変換器23によって二進数に変換され、最終的に商24(qi )が出力される。この実施の形態12によって、乗数15(e4 〜e6 )、乗数84(g6 〜g8 )、乗数89(j8 〜j14)のビット数はそれぞれ3,3,7と(2n −1)で表される数となる。
【0090】
以上のように、この実施の形態12によれば、第5の乗算器16、第7の乗算器85、第9の乗算器90では、入力する乗数15(e4 〜e6 )、乗数84(g6 〜g8 )、乗数89(j8 〜j14)のビット数に1を加えた数の冗長二進数の総和を計算するので、乗数のビット数が(2n −1)のときは、加算すべき冗長二進数が2n となり、ワレストリーによる足し上げの効率が最も大きくなる。すなわち、2n は加算器n段で足し上げられる最大の数で、従って最も効率よく高速に足し上げを実行することができる。
【0091】
実施の形態13.
図16はマルチプレクサ回路を用いてハードウエア量を低減した場合のこの発明の実施の形態13による除算装置を示す構成図であり、マルチプレクサ回路97においては最初、第2の中間除数13(ei )が選択されて出力99が出力され、同時に乗数101(e4 〜e6 )が出力され、これら二つから第5の乗算器102において乗算が実行される。
【0092】
次にマルチプレクサ回路97では第5の乗算器102の出力104が選択されて出力99に中間除数(gi )として出力され、同時に乗数101(g6 〜g8 )が選択されて出力され、これら二つから第5の乗算器102において乗算が実行される。この乗算結果は第3の中間除数106(gi)となる。
【0093】
また、マルチプレクサ回路108においては、最初、第3の中間除数106(gi )が出力110として選択されて出力され、同時に乗数112(j8 〜j14)が選択されて出力され、これら二つから第9の乗算器113において乗算が実行される。
【0094】
次にマルチプレクサ回路108では第9の乗算器113の出力115が選択されて、出力110には中間除数(li )として出力され、同時に乗数112(l14〜l20)が選択されて出力され、これら二つから第9の乗算器113において乗算が実行される。
【0095】
さらに、マルチプレクサ回路108では次にもう一度、第9の乗算器113の出力115が選択されて、乗数112(n20〜n26)が選択されて出力される。この際、第9の乗算器113における乗算は不要なので実行されない。
【0096】
一方、マルチプレクサ回路98では、最初、第2の中間商14(fi )が選択されて出力100に出力され、第6の乗算器103において第2の中間商14(fi )と乗数101(e4 〜e6 )とから乗算が実行される。
【0097】
次に、マルチプレクサ回路98においては第6の乗算器103の出力105が選択されて出力100に出力され、乗数101(g6 〜g8 )とから第6の乗算器103において乗算が実行される。この乗算結果が第3の中間商107(hi )となる。
【0098】
また、マルチプレクサ回路109においては、最初、第3の中間商107(hi )が選択されて出力111に出力され、乗数112(j8 〜j14)とから第10の乗算器114において乗算が実行される。
【0099】
次に、マルチプレクサ回路109では第10の乗算器114の出力116が選択されて出力111に出力され、乗数112(l14〜l20)とから第10の乗算器114で乗算が実行される。
【0100】
さらに、マルチプレクサ回路109では次にもう一度、第10の乗算器114の出力116が選択されて、乗数112(n20〜n26)が選択されて出力される。この結果、第10の乗算器114で乗算が実行され、第4の中間商117(ki )として出力される。第4の中間商117(ki )は冗長二進→二進変換器23によって通常の二進数に変換され、商24(qi )として出力される。
【0101】
以上のように、この実施の形態13によれば、マルチプレクサ回路により、乗算器よりも小さいハードウエア量で実現できるので、全体のハードウエア量を大幅に低減することができる。
【0102】
実施の形態14.
図17はこの発明の実施の形態14による除算装置を示す構成図であり、パイプラインレジスタ118および119によって2段のパイプライン構成とした場合を示す。すなわち、第2の中間除数13(ei )および第2の中間商14(fi )はそれぞれパイプラインレジスタ118および119によって一時蓄えられ、次に第5の乗算器16および第6の乗算器17に入力する。
【0103】
パイプラインレジスタ118および119の制御はクロック信号120によって行われ、例えばクロック信号120が“low”のときにデータが蓄えられ、クロック信号120が“high”になったときにデータが出力されるといった動作をする。
【0104】
以上のように、この実施の形態14によれば、パイプラインレジスタ118および119によって分けられた前後の回路を並列に動作させる、いわゆるパイプライン動作が可能となるので、高速動作を実現することができる。また、この実施の形態14では2段のパイプライン構成とする場合を示したが、パイプラインレジスタの数を増加させて段数を増やすことにより、さらに高速動作を実現することができる。
【0105】
実施の形態15.
図18はこの発明の実施の形態15による除算装置を示す構成図であり、上記各実施の形態における制御回路6の代わりに記憶手段としてROM121を用いた場合を示す。このROM121は、乗数3(a1 〜a4 )をアドレス入力として、制御信号122を出力するもので、制御信号122を上記各実施の形態における制御信号7と同様とすることによって実施の形態1と同様の動作を実現することができ、同様の効果を得ることができる。
【0106】
以上のように、この実施の形態15によれば、ROM121への入力を4ビットとしているが、ROMの規模を大きくして入力のビット数を多くすることによって第1の乗算器の出力である第2の中間除数13(ei )の小数点以下に続く“0”の数を実施の形態1の場合よりも増やすことができ、高速の除算が実現できる。また、ROM121はRAMやその他の記憶素子であってもかまわない。
【0108】
【発明の効果】
請求項1記載の発明によれば、除数から制御回路によって制御信号を出力させ、これに基づいて第1の乗算器と第2の乗算器で演算を行い、冗長二進数の中間除数と中間商を発生させ、その後、除数の上位2桁以降に並ぶ“0”の次の複数ビットの符号ビットの符号を反転させた信号と上記中間除数および中間商との演算を実行し、中間除数を1に収束させるように構成したので、計算に無駄がなく、除算処理の高速化を図ることができる。また、冗長二進数で乗算を行うので、除算処理のより高速化を図ることができる。さらに、2の補数器が不要、除数側の最後の乗算は実行不要等のため、ハードウエアを削減できる効果がある。
【0109】
請求項2記載の発明によれば、冗長二進表現の商を二進数に変換する変換器を備えるように構成したので、得られた冗長二進表現の商を二進数に変換して出力することができる効果がある。
【0110】
請求項3記載の発明によれば、制御回路は除数(ai )の上位複数桁ビットを入力して、第1の乗数を生成するように構成したので、請求項1記載の発明の効果を容易に実現することができる効果がある。
【0111】
請求項4記載の発明によれば、元の除数と小数点以下2桁を“0”とするに必要なだけシフトさせた該除数とを引き算するように構成したので、第1の中間除数を容易に得ることができる効果がある。
【0112】
請求項5記載の発明によれば、制御回路は除数のうちの小数点以下第1位から第3位までの3ビットを入力として、上記除数の各ビットを全てゼロにするか、1ビット下位桁側へシフトするか、2ビット下位桁側へシフトするかを制御する信号と、冗長二進表現された第1の中間除数の小数点以下第3桁の値を示す信号とを出力させるように構成したので、実際の乗算を行うことなく、中間除数を得ることができる効果がある。
【0113】
請求項6記載の発明によれば、第1の乗算器は、制御信号により除数の各ビットを全てゼロにするか、1ビット下位桁側ヘシフトするか、2ビット下位桁側ヘシフトするかを行うシフタ回路の出力と上記除数とから、上記冗長二進表現された第1の中間除数の小数点以下第4桁目以下を生成するように構成したので、高速で小面積の第1の乗算器を得ることができる効果がある。
【0114】
請求項7記載の発明によれば、第2の乗算器は、制御信号により被除数の各ビットを全てゼロにするか、1ビット下位桁側ヘシフトするか、2ビット下位桁側ヘシフトするかを行うシフタ回路の出力と上記被除数とから上記冗長二進表現された第1の中間商を生成するように構成したので、高速で小面積の第2の乗算器を得ることができる効果がある。
【0115】
請求項8記載の発明によれば、第3あるいは第aの乗算器は、入力される第1の中間除数を符号反転して二つの冗長二進数を発生させる二つの符号反転器と、上記二つの冗長二進数を加算して一つの冗長二進数を出力する二つの冗長二進加算器とを備えるように構成したので、極めて高速に乗算結果を得ることができる効果がある。
【0116】
請求項9記載の発明によれば、第4あるいは第bの乗算器は、入力された第1の中間商を符号反転して二つの冗長二進数を発生させる二つの符号反転器と、上記二つの冗長二進数を加算して一つの冗長二進数を出力する二つの冗長二進加算器とを備えるように構成したので、極めて高速に乗算結果を得ることができる効果がある。
【0117】
請求項10記載の発明によれば、符号反転器は、一対の冗長二進数の成分を入力し、冗長二進数の制御入力によって出力を選択するマルチプレクサ回路を備えるように構成したので、所望の出力を得ることができる効果がある。
【0118】
請求項11記載の発明によれば、冗長二進加算器は、二組の冗長二進数を加算して冗長二進数を出力する各桁毎の加算器を複数備えるように構成したので、高速の冗長二進加算器を実現することができる効果がある。
【0119】
請求項12記載の発明によれば、被除数として定数“1”を用いるように構成したので、除数の逆数を商として出力することができる効果がある。
【0120】
請求項13記載の発明によれば、第2の中間除数に対して上位n桁または第3の中間除数に対して上位q桁を、(n−m−1)または(q−p−1)が2のべき乗から1を引いた値となるように設定するように構成したので、効率よく高速に足し上げを実現することができる効果がある。
【0121】
請求項14記載の発明によれば、中間除数と同時に制御信号を選択し、この二つから演算を実行した演算器の出力を選択するマルチプレクサと、中間商を選択し、この中間商を上記制御信号と乗算した演算器の出力を選択するマルチプレクサとを備えるように構成したので、装置全体のハードウエアを大幅に低減することができる効果がある。
【0122】
請求項15記載の発明によれば、クロック信号で制御され、中間除数および中間商を一時蓄え、演算器に出力するパイプラインレジスタを備えるように構成したので、パイプラインレジスタによって分けられた前後の回路を並列に動作させ、高速動作を実現することができる効果がある。
【0123】
請求項16記載の発明によれば、制御回路としてROMを用いるように構成したので、請求項1記載の発明の場合よりも小数点以下に続く“0”の数を増やすことができ、より高速の除算処理を実現できる効果がある。
【図面の簡単な説明】
【図1】 この発明の実施の形態1による除算装置の構成を示すブロック図である。
【図2】 この発明の実施の形態2による制御回路の説明図である。
【図3】 この発明の実施の形態2による制御回路が有する機能を表した図である。
【図4】 この発明の実施の形態3による中間除数の生成を表した図である。
【図5】 その中間除数の生成処理の説明図である。
【図6】 この発明の実施の形態4による制御回路の説明図である。
【図7】 この発明の実施の形態5による第1の乗算器の説明図である。
【図8】 この発明の実施の形態6による第2の乗算器の説明図である。
【図9】 その乗算器による中間商の生成を表した図である。
【図10】 この発明の実施の形態7による第3の乗算器の説明図である。
【図11】 この発明の実施の形態8による第4の乗算器の説明図である。
【図12】 この発明の実施の形態9による符号反転器の構成図である。
【図13】 この発明の実施の形態10による冗長二進加算器の構成図である。
【図14】 この発明の実施の形態11による除算装置の構成を示すブロック図である。
【図15】 この発明の実施の形態12による除算装置の構成を示すブロック図である。
【図16】 この発明の実施の形態13による除算装置の構成を示すブロック図である。
【図17】 この発明の実施の形態14による除算装置の構成を示すブロック図である。
【図18】 この発明の実施の形態15による除算装置の構成を示すブロック図である。
【図19】 従来の除算装置の構成を示すブロック図である。
【符号の説明】
1 除数、2 被除数、3 第1の乗数、4 第1の乗算器、5 第2の乗算器、8 第1の中間除数、10 第2の乗数、11 第3の乗算器、12 第4の乗算器、13 第2の中間除数、14 第2の中間商、15 第3の乗数、18 第3の中間除数、19 第3の中間商、20 第4の乗数、30,34 シフタ回路、36,38,43,45 符号反転器、40,42,47,49 冗長二進加算器、52,53,97,98 マルチプレクサ回路、58〜60 加算器、118,119 パイプラインレジスタ。
Claims (16)
- 被除数および1以上2未満の値を持つ除数を入力とし、被除数を除数で割った商を出力とする除算装置において、上記除数の上位側の所定桁数ビットあるいはそのうちの最上位1ビットを除くビット桁からなる第1の乗数を入力して制御信号を出力する制御回路と、上記第1の乗数と上記除数とを乗じることによって整数部分が“1”で小数点以下第1位から少なくとも2個のゼロが並ぶ冗長二進表現の第1の中間除数を得る第1の乗算器と、上記第1の乗数と上記被除数とを乗じることによって冗長二進表現の第1の中間商を得る第2の乗算器と、上記第1の中間除数の上位複数桁を取り出して小数点以下第3位と第4位の冗長二進ビットを正負反転させることによって第2の乗数を生成し、この第2の乗数と上記第1の中間除数とを乗じることによって、整数部分が“1”で小数点以下第1位から少なくとも3個のゼロが並ぶ冗長二進表現の第2の中間除数を得る第3の乗算器と、上記第2の乗数と上記第1の中間商とを乗じることによって冗長二進表現の第2の中間商を得る第4の乗算器と、整数部分が“1”で小数点以下m個のゼロが続く第2の中間除数に対して上位n桁(m+3≦n≦2m+1)を取り出して小数点以下第(m+1)位から第(n−1)位までの冗長二進ビットを正負反転させることによって第3の乗数を生成し、この第3の乗数と上記第2の中間除数とを乗じることによって、整数部分が“1”で小数点以下第1位から少なくとも(2m−1)個のゼロが並ぶ冗長二進表現の第3の中間除数を得る第a(aは5以上の奇数)の乗算器と、上記第3の乗数と上記第2の中間商とを乗じることにより冗長二進表現の第3の中間商を得る第b(bは6以上の偶数)の乗算器と、整数部分が“1”で小数点以下p個のゼロが続く第3の中間除数に対して上位q桁(p+3≦q≦2p+1)を取り出して小数点以下第(p+1)位から第(q−1)位までの冗長二進ビットを正負反転させることによって第4の乗数を生成し、この第4の乗数と上記第3の中間商とを乗じることにより冗長二進表現の商を得る第c(cは6以上の偶数)の乗算器とを備え、上記第1から第4の乗算器による演算実行後、上記第a(aは5以上の奇数)の乗算器と第b(bは6以上の偶数)の乗算器による演算を必要回数繰り返し、最後に上記第c(cは6以上の偶数)の乗算器による演算を実行することを特徴とする除算装置。
- 得られた冗長二進表現の商を二進数に変換して出力する変換器を備えたことを特徴とする請求項1記載の除算装置。
- 制御回路は除数(ai )の上位複数桁ビットを入力して、下記演算式を実行して第1の乗数を生成することを特徴とする請求項1記載の除算装置。
1≦(ai )<5/4のとき :(ci )=(ai )
5/4≦(ai )<13/8のとき:(ci )=(3/4)×(ai )
13/8≦(ai )<2のとき :(ci )=(1/2)×(ai ) - 元の除数と小数点以下2桁を“0”とするに必要なだけシフトさせた該除数とを引き算し、第1の中間除数を得ることを特徴とする請求項1記載の除算装置。
- 制御回路は除数のうちの小数点以下第1位から第3位までの3ビットを入力として、上記除数の各ビットを全てゼロにするか、1ビット下位桁側へシフトするか、2ビット下位桁側へシフトするかを制御する信号と、冗長二進表現された第1の中間除数の小数点以下第3桁の値を示す信号とを出力させることを特徴とする請求項1記載の除算装置。
- 第1の乗算器は、制御信号により除数の各ビットを全てゼロにするか、1ビット下位桁側ヘシフトするか、2ビット下位桁側ヘシフトするかを行うシフタ回路を備え、このシフタ回路の出力と上記除数とから上記冗長二進表現された第1の中間除数の小数点以下第4桁目以下を生成することを特徴とする請求項1記載の除算装置。
- 第2の乗算器は、制御信号により被除数の各ビットを全てゼロにするか、1ビット下位桁側ヘシフトするか、2ビット下位桁側ヘシフトするかを行うシフタ回路とを備え、このシフタ回路の出力と上記被除数とから上記冗長二進表現された第1の中間商を生成することを特徴とする請求項1記載の除算装置。
- 第3あるいは第aの乗算器は、入力される第1の中間除数を符号反転して二つの冗長二進数を発生させる二つの符号反転器と、上記二つの冗長二進数を加算して一つの冗長二進数を出力する二つの冗長二進加算器とを備えたことを特徴とする請求項1記載の除算装置。
- 第4あるいは第bの乗算器は、入力された第1の中間商を符号反転して二つの冗長二進数を発生させる二つの符号反転器と、上記二つの冗長二進数を加算して一つの冗長二進数を出力する二つの冗長二進加算器とを備えたことを特徴とする請求項1記載の除算装置。
- 符号反転器は、一対の冗長二進数の成分を入力し、冗長二進数の制御入力によって出力を選択するマルチプレクサ回路を備えたことを特徴とする請求項8または請求項9記載の除算装置。
- 冗長二進加算器は、二組の冗長二進数を加算して冗長二進数を出力する各桁毎の加算器を複数備えたことを特徴とする請求項8または請求項9記載の除算装置。
- 被除数として定数“1”を用いることにより、除数の逆数を商として出力することを特徴とする請求項1記載の除算装置。
- 第2の中間除数に対して上位n桁または第3の中間除数に対して上位q桁を、(n−m−1)または(q−p−1)が2のべき乗から1を引いた値となるように設定することを特徴とする請求項1記載の除算装置。
- 中間除数と同時に制御信号を選択し、この二つから演算を実行した演算器の出力を選択するマルチプレクサ回路と、中間商を選択し、この中間商を上記制御信号と乗算した演算器の出力を選択するマルチプレクサ回路とを備えたことを特徴とする請求項1記載の除算装置。
- クロック信号で制御され、中間除数および中間商を一時蓄え、演算器に出力するパイプラインレジスタを備えたことを特徴とする請求項1記載の除算装置。
- 被除数および1以上2未満の値を持つ除数を入力とし、被除数を除数で割った商を出力とする除算装置において、上記除数の上位側の所定桁数ビットあるいはそのうちの最上位1ビットを除く所定桁数のビットからなるビット列をアドレス入力とし、そこから第1の乗数を出力する記憶手段と、上記第1の乗数と上記除数とを乗じることによって整数部分が“1”で小数点以下第1位から少なくともr個のゼロが並ぶ冗長二進表現の第1の中間除数を得る第1の乗算器と、上記第1の乗数と上記被除数とを乗じることによって冗長二進表現の第1の中間商を得る第2の乗算器と、上記第1の中間除数に対して上位s桁(r+3≦s≦2r+1)を取り出して小数点以下第(r+1)位から第(s−1)位までの冗長二進ビットを正負反転させることによって第2の乗数を生成し、この第2の乗数と上記第1の中間除数とを乗じることによって、整数部分が“1”で小数点以下第1位から少なくとも(2r−1)個のゼロが並ぶ冗長二進表現の第2の中間除数を得る第t(tは3以上の奇数)の乗算器と、上記第2の乗数と上記第1の中間商とを乗じることによって冗長二進表現の第2の中間商を得る第u(uは4以上の偶数)の乗算器と、整数部分が“1”で小数点以下v個のゼロが続く第2の中間除数に対して上位w桁(v+3≦w≦2v+1)を取り出して小数点以下第(v+1)位から第(w−1)位までの冗長二進ビットを正負反転させることによって第3の乗数を生成し、この第3の乗数と上記第2の中間除数とを乗じることにより、冗長二進表現の商を得る第y(yは4以上の偶数)の乗算器とを備え、上記第1および第2の乗算器による演算実行後、上記第t(tは3以上の奇数)の乗算器と第u(uは4以上の偶数)の乗算器による演算を必要回数繰り返し、最後に上記第y(yは4以上の偶数)の乗算器による演算を実行することを特徴とする除算装置。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP26490296A JP3660075B2 (ja) | 1996-10-04 | 1996-10-04 | 除算装置 |
TW086101357A TW521207B (en) | 1996-10-04 | 1997-02-04 | Division calculator |
US08/801,133 US5999962A (en) | 1996-10-04 | 1997-02-14 | Divider which iteratively multiplies divisor and dividend by multipliers generated from the divisors to compute the intermediate divisors and quotients |
KR1019970009198A KR100329914B1 (ko) | 1996-10-04 | 1997-03-18 | 제산장치 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP26490296A JP3660075B2 (ja) | 1996-10-04 | 1996-10-04 | 除算装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH10111791A JPH10111791A (ja) | 1998-04-28 |
JP3660075B2 true JP3660075B2 (ja) | 2005-06-15 |
Family
ID=17409810
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP26490296A Expired - Fee Related JP3660075B2 (ja) | 1996-10-04 | 1996-10-04 | 除算装置 |
Country Status (4)
Country | Link |
---|---|
US (1) | US5999962A (ja) |
JP (1) | JP3660075B2 (ja) |
KR (1) | KR100329914B1 (ja) |
TW (1) | TW521207B (ja) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE10205713C1 (de) * | 2002-02-12 | 2003-08-07 | Infineon Technologies Ag | Vorrichtung und Verfahren zum Berechnen eines Ergebnisses aus einer Division |
US7149767B2 (en) * | 2003-05-12 | 2006-12-12 | International Business Machines Corporation | Method and system for determining quotient digits for decimal division in a superscaler processor |
US20050289208A1 (en) * | 2004-06-23 | 2005-12-29 | Harrison John R | Methods and apparatus for determining quotients |
US20060294177A1 (en) * | 2005-06-27 | 2006-12-28 | Simon Rubanovich | Method, system and apparatus of performing division operations |
US8898215B2 (en) * | 2007-06-28 | 2014-11-25 | King Fahd University Of Petroleum And Minerals | High-radix multiplier-divider |
US20090006509A1 (en) * | 2007-06-28 | 2009-01-01 | Alaaeldin Amin | High-radix multiplier-divider |
US9377996B2 (en) * | 2012-07-27 | 2016-06-28 | Avago Technologies General Ip (Singapore) Pte. Ltd. | Parameterized digital divider |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3508038A (en) * | 1966-08-30 | 1970-04-21 | Ibm | Multiplying apparatus for performing division using successive approximate reciprocals of a divisor |
US3828175A (en) * | 1972-10-30 | 1974-08-06 | Amdahl Corp | Method and apparatus for division employing table-lookup and functional iteration |
JPS60142738A (ja) * | 1983-12-30 | 1985-07-27 | Hitachi Ltd | 内挿近似を使用する除算装置 |
JPS6286434A (ja) * | 1985-10-14 | 1987-04-20 | Oki Electric Ind Co Ltd | 除算方式 |
US4866655A (en) * | 1986-07-18 | 1989-09-12 | Matsushita Electric Industrial Co., Ltd. | Arithmetic processor and divider using redundant signed digit |
JP2609630B2 (ja) * | 1987-09-26 | 1997-05-14 | 株式会社東芝 | 除算器及び除算方法 |
JPH0769785B2 (ja) * | 1987-12-17 | 1995-07-31 | 松下電器産業株式会社 | 除算装置 |
JP2737933B2 (ja) * | 1988-06-23 | 1998-04-08 | 日本電気株式会社 | 除算装置 |
US5046038A (en) * | 1989-07-07 | 1991-09-03 | Cyrix Corporation | Method and apparatus for performing division using a rectangular aspect ratio multiplier |
US5307303A (en) * | 1989-07-07 | 1994-04-26 | Cyrix Corporation | Method and apparatus for performing division using a rectangular aspect ratio multiplier |
US5128891A (en) * | 1990-04-02 | 1992-07-07 | Advanced Micro Devices, Inc. | High speed divider with square root capability |
JPH0731592B2 (ja) * | 1990-11-29 | 1995-04-10 | 株式会社東芝 | 除算回路 |
JPH0535773A (ja) * | 1991-07-30 | 1993-02-12 | Nec Corp | ベクトル除算方式とその装置 |
US5784307A (en) * | 1996-05-31 | 1998-07-21 | Intel Corporation | Division algorithm for floating point or integer numbers |
-
1996
- 1996-10-04 JP JP26490296A patent/JP3660075B2/ja not_active Expired - Fee Related
-
1997
- 1997-02-04 TW TW086101357A patent/TW521207B/zh not_active IP Right Cessation
- 1997-02-14 US US08/801,133 patent/US5999962A/en not_active Expired - Lifetime
- 1997-03-18 KR KR1019970009198A patent/KR100329914B1/ko not_active IP Right Cessation
Also Published As
Publication number | Publication date |
---|---|
KR19980032055A (ko) | 1998-07-25 |
JPH10111791A (ja) | 1998-04-28 |
TW521207B (en) | 2003-02-21 |
US5999962A (en) | 1999-12-07 |
KR100329914B1 (ko) | 2002-07-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JPS6347874A (ja) | 算術演算装置 | |
JPH0831025B2 (ja) | 乗算回路 | |
JP4273071B2 (ja) | 除算・開平演算器 | |
JP3660075B2 (ja) | 除算装置 | |
US4677583A (en) | Apparatus for decimal multiplication | |
US5289399A (en) | Multiplier for processing multi-valued data | |
JPH1195982A (ja) | 演算処理回路及び演算処理方法並びに演算処理システム | |
JP3252954B2 (ja) | 乗算方法および乗算回路 | |
JP2765516B2 (ja) | 積和演算器 | |
JPH0869372A (ja) | 2進乗算器 | |
JP2777265B2 (ja) | 高基数開平演算装置 | |
JP2803442B2 (ja) | 開平装置 | |
JP2705640B2 (ja) | 積和演算器 | |
KR100386979B1 (ko) | 갈로아체상에서 비트 직렬 승산기의 병렬화 방법 및 이를이용한 직병렬 승산기 | |
KR0161485B1 (ko) | 산술 연산 장치를 이용한 부스 알고리즘 곱셈 연산 장치 | |
JPH1049347A (ja) | 乗算器 | |
JP2000010763A (ja) | 除算回路 | |
JP4954019B2 (ja) | 演算装置 | |
JPH0253819B2 (ja) | ||
JPH0683852A (ja) | アルファ合成演算器 | |
JPH06110658A (ja) | 演算装置 | |
Sagar et al. | A High Speed FIR Filter Architecture Based on Higher Radix Algorithm | |
JPH0583930B2 (ja) | ||
JPH01161437A (ja) | 除算装置 | |
JPH05307465A (ja) | 乗算剰余演算装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20040825 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20040831 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20041018 |
|
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: 20050215 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20050316 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20080325 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090325 Year of fee payment: 4 |
|
LAPS | Cancellation because of no payment of annual fees |