JP3544821B2 - 除算回路 - Google Patents
除算回路 Download PDFInfo
- Publication number
- JP3544821B2 JP3544821B2 JP08818797A JP8818797A JP3544821B2 JP 3544821 B2 JP3544821 B2 JP 3544821B2 JP 08818797 A JP08818797 A JP 08818797A JP 8818797 A JP8818797 A JP 8818797A JP 3544821 B2 JP3544821 B2 JP 3544821B2
- Authority
- JP
- Japan
- Prior art keywords
- dividend
- sign
- divisor
- quotient
- register
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2207/00—Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F2207/535—Indexing scheme relating to groups G06F7/535 - G06F7/5375
- G06F2207/5352—Non-restoring division not covered by G06F7/5375
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2207/00—Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F2207/535—Indexing scheme relating to groups G06F7/535 - G06F7/5375
- G06F2207/5353—Restoring division
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)
Description
【発明の属する技術分野】
本発明は、除算回路、特に符号付除算を行なう除算回路に関する。
【0002】
【従来の技術】
従来、2の補数表示された符号付きの被除数及び除数の除算を行う場合に、正確な商及び剰余を求めようとすると、負の被除数及び/又は除数を正に変換して除算を行なっていた。この代表的な除算アルゴリズムとして、回復型(引き戻し法)の除算と非回復型(引き放し法)の除算の2例を挙げて説明する。
【0003】
まずはじめに、従来の回復型除算のアルゴリズムを、図6に示す除算回路の構成を参照して説明する。
【0004】
図6において、nビットの被除数をa、nビットの除数をbとすると、除算回路は、除算実行中に部分剰余の上位側を格納し除算終了時に剰余を格納するnビットの剰余レジスタ101と、除算開始時に被除数を格納し除算実行中に部分剰余の下位側と商を順次格納するnビットの被除数&商レジスタ102と、除数を格納するnビットの除数レジスタ103と、nビットの減算器104と、剰余レジスタ101と被除数&商レジスタ102の内容を連結して上位側(図面左方向)に1ビットシフトし最上位ビットをシフトアウトした上位nビットのデータP’又は減算器104の出力を選択して剰余レジスタ101に与えるセレクタ105と、減算器104の減算結果を受けて商を決定し、セレクタ105を選択制御する制御回路106を備えて構成されている。
【0005】
次に、このような構成の除算回路を用いた除算動作を動作サイクルにしたがって説明する。
【0006】
まず、被除数a,除数bの双方とも負の場合には補数をとり正の数に変換し、負でない場合にはそのままとし、この値をa’、b’とする(第1サイクル、第2サイクル、作用1)。
【0007】
次に、被除数a’を被除数&商レジスタ102に、除数b’を除数レジスタ103にロードする。剰余レジスタ101には、全ビット0をロードする(第3サイクル、作用2)。
【0008】
次に、剰余レジスタ101、被除数&商レジスタ102をそれぞれ1ビット左にシフトし、シフト後の両レジスタの連結した内容の上位nビットのデータをP’とする(第4サイクル、作用3−1)。続いて、減算器104によってデータP’から除数レジスタ103の出力を減じる(第4サイクル、作用3−2)。続いて、被除数&商レジスタ102は出力を左に1ビットシフトして格納する。減算器104の出力が負の時は被除数&商レジスタ102の最下位に商として0を書き込み、減算器104の出力が負でなければ被除数&商レジスタ102の最下位に商として1を書き込む(第4サイクル、作用3−3)。続いて、減算器104の出力が負でなければ減算器104の出力を剰余レジスタ101に格納し、減算器104の出力が負の時は剰余レジスタ101にデータP’を格納する(引き戻し)(第4サイクル、作用3−4)。
【0009】
次に、上記第4サイクルの作用3−1〜3−4をさらに(n−1)回繰り返して行う(第5サイクル〜第(n+3)サイクル)。
【0010】
次に、被除数と除数の符号が同一の場合は、被除数&商レジスタ102の出力は商として、そのまま被除数&商レジスタ102に保存される。一方、被除数と除数の符号が異なる場合には、被除数&商レジスタ102の出力の補数をとり、被除数&商レジスタ102に書き戻される(第(n+4)サイクル、作用5)。
【0011】
次に、被除数が負でない場合は、剰余レジスタ101の出力は剰余としてそのまま保存される。一方、被除数が負の場合には、剰余レジスタ101の出力の補数をとり剰余レジスタ101に書き戻される(第(n+5)サイクル、作用6)。
【0012】
最後に、被除数&商レジスタ102には商が格納され、剰余レジスタ101には剰余が格納され、符号付の除算が終了する(第(n+6)サイクル、作用7)。
【0013】
このようにして除算処理が行われ、例えば被除数a=1001(2進数)(10進数で−7を示す)と除数b=0011(2進数)(10進数で3を示す)の除算例を図7に示す。なお、図7において、剰余レジスタ101の内容をPと表記し、被除数&商レジスタ102の内容をAと表記し、除数レジスタ103の内容をBと表記している。
【0014】
次に、従来の非回復型除算のアルゴリズムを、図8に示す除算回路の構成を参照して説明する。
【0015】
上述した従来の回復型除算では、部分剰余が負になった場合は、(剰余+除数)×2−除数という演算を行っているのと同じであった。そこで、(剰余+除数)×2−除数は剰余×2+除数であるので、部分剰余が負になった場合には、そのまま部分剰余を格納して左に1ビットシフトし、部分剰余と除数の減算に代えて加算を行ってもよい。この手法では回復型除算に比べてサイクル当たりの演算時間を短縮することができる。このような手法を用いたのが非回復型除算のアルゴリズムである。
【0016】
図8において、nビットの被除数をa、nビットの除数をbとすると、除算回路は、除算実行中に部分剰余の上位側を格納し除算終了時に剰余を格納するnビットの剰余レジスタ111と、除算開始時に被除数を格納し除算実行中に部分剰余の下位側と商を順次格納するnビットの被除数&商レジスタ112と、除数を格納するnビットの除数レジスタ113と、nビットの加減算器114と、加減算器114の演算結果を受けて商を決定し、加減算器114の演算結果にしたがって加減算器114に加算又は減算を指示する制御回路115を備えて構成されている。
【0017】
次に、このような構成の除算回路を用いた除算動作を動作サイクルにしたがって説明する。
【0018】
まず、被除数a,除数bの双方とも負の場合には補数をとり正の数に変換し、負でない場合にはそのままとし、この値をa’、b’とする(第1サイクル、第2サイクル、作用1)。
【0019】
次に、被除数a’を被除数&商レジスタ112に、除数b’を除数レジスタ113にロードする。剰余レジスタ111には全ビット0をロードする(第3サイクル、作用2)。
【0020】
次に、剰余レジスタ111、被除数&商レジスタ112をそれぞれ1ビット左にシフトし、シフト後の両レジスタの連結した内容の上位nビットのデータをP’とする(第4サイクル、作用3−1)。続いて、加減算器114によってデータP’から除数レジスタ113の出力を減じる(第4サイクル、作用3−2)。続いて、被除数&商レジスタ112は、出力を左に1ビットシフトして格納する。被除数&商レジスタ112の最下位ビットに格納する値は、加減算器114の出力が負の時は被除数&商レジスタ112の最下位に商として0を書き込み、加減算器114の出力が負でなければ被除数&商レジスタ102の最下位に商として1を書き込む(第4サイクル、作用3−3)。続いて、加減算器114の出力を剰余レジスタ111に格納する(第4サイクル、作用3−4)。
【0021】
次のサイクルにおいて、剰余レジスタ111の出力が負の場合は、剰余レジスタ111,被除数&商レジスタ112をそれぞれ1ビット左にシフトする。シフト後の両レジスタの連結した内容の上位nビットのデータP’と除数レジスタ113の出力を加減算器114により加算する。一方、剰余レジスタ111の出力が負でない場合には、剰余レジスタ111ならびに被除数&商レジスタ112をそれぞれ1ビット左にシフトし、シフト後の両レジスタの連結した内容の上位nビットのデータP’から除数レジスタ113の出力を加減算器114により減じる(第5サイクル、作用4−1)。続いて、被除数&商レジスタ112は出力を左に1ビットシフトして格納する。被除数&商レジスタ112の最下位ビットには、加減算器114の出力が負の時は商として0を書き込み、加減算器114の出力が負でなければ商として1を書き込む(第5サイクル、作用4−2)。続いて、加減算器114の出力を剰余レジスタ111に格納する(第5サイクル、作用4−3)。
【0022】
次に、上述した第5サイクルでの作用4−1〜4−3をさらに(n−2)回繰り返して行う(第6サイクル〜第(n+3)サイクル)。
【0023】
次に、剰余レジスタ111の出力が負でなければ、剰余レジスタ111はそのままの値を保持する。一方、剰余レジスタ111の出力が負であれば、加減算器114により剰余レジスタ111の出力と除数レジスタ113の出力を加算して剰余レジスタ111に格納する(第(n+4)サイクル、作用6)。
【0024】
次に、被除数と除数の符号が同一の場合は、被除数&商レジスタ112の出力はそのまま被除数&商レジスタ112に保存される。被除数と除数の符号が異なる場合には、被除数&商レジスタ112の出力の補数をとり、被除数&商レジスタ112に書き戻される(第(n+5)サイクル、作用7)。
【0025】
次に、被除数が負でない場合は、剰余レジスタ111の出力はそのまま保持される。被除数が負の場合には、剰余レジスタ111の出力の補数をとり、剰余レジスタ111に書き戻される(第(n+6)サイクル、作用8)。
【0026】
最後に、被除数&商レジスタ112には商が格納され、剰余レジスタ111には剰余が格納され、符号付の除算が終了する(第(n+7)サイクル、作用9)。
【0027】
このようにして除算処理が行われ、例えば前述した従来例と同様に被除数a=1001(2進数)(10進数で−7を示す)と除数b=0011(2進数)(10進数で3を示す)の除算例を図9に示す。なお、図9において、剰余レジスタ111の内容をPと表記し、被除数&商レジスタ112の内容をAと表記し、除数レジスタ113の内容をBと表記している。
【0028】
【発明が解決しようとする課題】
以上説明したように、符号付の被除数及び除数の除算において、商及び剰余を正確に求めようとすると、被除数及び/又は除数が負の値の場合には、負の値の被除数及び/又は除数の2の補数をとり負の値を正の値に変換し、正の値の被除数及び除数で除算を行っていた。このため、被除数ならびに除数の双方が負の値の場合には、両者とも2の補数をとらなければならないため、補数をとるための時間が除算時間に加わり、除算時間が長くなるという不具合を招いていた。また、被除数が負の値の場合には、剰余も2の補数をとり補正しなければならず、さらに除算時間が長くなっていた。
【0029】
そこで、この発明は、上記に鑑みてなされたものであり、その目的とするところは、被除数及び/又は除数の負の値を正の値に変換することなく符号付の除算を行い、正確な商と剰余を求めることができる除算回路を提供することにある。
【0030】
【課題を解決するための手段】
上記目的を達成するために、課題を解決する第1の手段は、符号付き除算を行う除算回路であって、加算又は減算を行う加減算器と、加減算の結果得られる仮の部分剰余が0であるか否かを判別する判別器と、被除数の符号と除数の符号を比較する第1の比較器と、前記加減算器の演算結果の符号と被除数の符号、及び前記判別器の判別結果にしたがって、商デジットを決定し、新しい部分剰余を決定する制御回路を具備し、前記加減算器は、前記第1の比較器の比較結果にしたがって部分剰余の所定ビットデータと除数に加算又は減算を施し、前記制御回路は、前記加減算器の演算結果の符号と被除数の符号及び前記判別器による判別結果に基づいて商を決定し、商デジットの値にしたがって部分剰余の所定ビットのデータ又は前記加減算器の演算結果から得られる仮の部分剰余の所定ビットのデータを選択して新しい部分剰余の所定ビットのデータとする動作を、所定の回数反復して行うことにより符号付き除算を行うことを特徴とする。
【0031】
第2の手段は、符号付き除算を行う除算回路であって、加算又は減算を行う加減算器と、加減算の結果得られる仮の部分剰余が0であるか否かを判別する判別器と、被除数の符号と除数の符号を比較する第1の比較器と、前記加減算器の演算結果の符号と被除数の符号、及び前記判別器の判別結果にしたがって、商デジットを決定し、次サイクル時の加算又は減算を前記加減算器に指示する制御回路を具備し、前記加減算器は、前記第1の比較器の比較結果にしたがって、符号拡張された被除数の所定ビットのデータと除数に加算又は減算を施し、前記制御回路は、前記加減算器の演算結果の符号と被除数の符号及び前記判別器による判別結果に基づいて商デジットを決定した後、前サイクルで得られた仮の部分剰余のうちの所定ビットのデータと除数を、前サイクルで得られた商に基づく前記制御回路の指示にしたがって前記加減算器により加算又は減算する動作と、その加算又は減算の演算結果にしたがって、前記商デジットの決定と同様に商を決定する動作を、所定の回数反復して行うことにより符号付き除算を行うことを特徴とする。
【0033】
第4の手段は、引き放し法を用いて除算を行う除算回路であって、最初は、被除数と除数が同じ符号の場合には減算を、被除数と除数が異なる符号の場合には加算を行い、それ以降は、被除数と除数が同じ符号で、商デジットが1の場合には、次のステップで減算を、商デジットが0の場合には次のステップでは加算を行い、被除数と除数が異なる符号で、商デジットが1の場合には、次のステップでは加算を、商デジットが0の場合には次のステップでは減算を行うという動作を繰り返すことによって除算を行い、被除数の符号と部分剰余の符号と部分剰余が0であるか否かに基づいて商の各ビットの商デジットを決定することを特徴とする。
【0034】
【発明の実施の形態】
以下、図面を用いてこの発明の実施形態を説明する。
【0035】
図1はこの発明の一実施形態に係る除算回路の構成を示す図である。
【0036】
この実施形態は、前述した従来の回復型の除算アルゴリズムを基本にして符号付の被除数ならびに除数により除算を行うものであり、前述した回復型の除算アルゴリズムと大きく異なるところは、商の判定手法である。
【0037】
商として下位からkビット目に1が立つか否かの判定は、その時点での部分剰余の一部と除数×2k−1 との絶対値の比較による。部分剰余の一部の絶対値が、除数×2k−1 の絶対値よりも小さい場合には商は0となり、それ以外は商は1となる。絶対値の比較は、部分剰余と除数とが同符号の場合は、部分剰余の一部から除数の減算を行い、異符号の場合には加算を行えばよい。その結果が、部分剰余と同符号であれば部分剰余の一部の絶対値が大きいことになり、商として1が得られる。一方、演算結果が部分剰余と異符号になれば商は0になる。これに対して、加減算結果の符号の比較で決定できないのは、加減算結果の絶対値が0の場合である。この場合には、演算結果の符号によらず部分剰余の一部と除数の絶対値は等しいことになり商は1となる。この実施形態の除算回路では、この状態を検出するための従来にはない本発明に特徴的な構成を備えている。以下、この実施形態の除算回路の具体的な構成ならびに作用を説明する。
【0038】
図1において、この実施形態の除算回路は、2の補数表現された符号付きnビットの被除数をa、mビットの除数をbとすると、符号付の除数を格納するmビットの除数レジスタ1と、除算開始時に符号付の被除数を格納し除算実行中に部分剰余の下位側を格納してシフトするnビットの被除数レジスタ2と、除算実行中に部分剰余の上位側を格納してシフトし除算終了時に剰余を格納するmビットの剰余レジスタ3と、商を順次格納するnビットの商レジスタ4と、加算又は減算を行なうmビットの加減算器5と、剰余レジスタ3に格納された内容の最上位ビットを除く値の下位に被除数レジスタ2に格納された内容の上位所定ビットを連結した連結値又は加減算器5の演算結果を選択して剰余レジスタ3に出力するセレクタ6と、被除数レジスタ2の出力の下位(n−1)ビットがすべて0であるか否かを判別する判別器(all zero detector)7と、加減算器5の出力のうち下位(m−1)ビットがすべて0であるか否かを判別する判別器(all zero detector)8と、被除数と除数の符号を比較する第1の比較器9と、加減算器5で行った演算結果の符号が部分剰余の符号と同符号か否かを比較する第2の比較器10と、加減算器5の演算結果、判別器7、8の判別結果ならびに第2の比較器10の比較結果を受けて、商を決定し、セレクタ6の選択を制御する制御回路11を備えている。
【0039】
判別器7、8は例えば図2に示すように構成される。図2において判別器7、8は、クロック信号(CLK)に同期したプリチャージ型の回路であり、クロック信号を受けるPチャネルのFET(電界効果トランジスタ)21と、0か否かを判別しようとするデータ、ここでは被除数レジスタ2の出力の下位(n−1)ビット又は加減算器5の出力のうち下位(m−1)ビットを受けて並列接続されたNチャネルのFET22と、クロック信号を受けるNチャネルのFET23が高位電源と低位電源との間に接続され、クロック信号がハイレベル時にFET22に与えられたデータのすべてが0の場合はバッファ24、25を介して判別結果の1が出力され、FET22に与えられたデータの内ひとつでも0でない場合にはバッファ24、25を介して判別結果の0が出力されて構成される。
【0040】
次に、このような構成の除算回路を用いて符号付の除算動作を動作サイクルにしたがって説明する。
【0041】
まず、被除数及び除数の符号によらず被除数aを被除数レジスタ2に、除数bを除数レジスタ1にロードする。また、剰余レジスタ3には被除数aの符号、すなわちここでは被除数の最上位ビットのデータを全ビットにロードし、商レジスタ4には全ビットに0をロードする(第1サイクル、作用1)。
【0042】
次に、剰余レジスタ3と被除数レジスタ2をそれぞれ1ビット左(上位)にシフトし、シフト後の両レジスタの連結した内容の上位mビットのデータ(連結値)をP’とする(第2サイクル、作用2−1)。続いて、被除数aと除数bの符号が同一の場合は、加減算器5によりデータP’から除数レジスタ1の出力を減じる。一方、被除数aと除数bの符号が異なる場合には、加減算器5によりデータP’と除数レジスタ1の出力を加算する(第2サイクル、作用2−2)。続いて、被除数レジスタ2は出力を左に1ビットシフトして格納する。被除数レジスタ2の最下位ビットには0を格納する(第2サイクル、作用2−3)。
【0043】
続いて、商レジスタ4は出力を左に1ビットシフトして格納する。商レジスタ4の最下位ビットに格納するデータは次のようにして決定する。ただし、判別器7、8の出力がともに1の場合は、この時点での部分剰余と除数×2k−1 との絶対値が等しいことを意味する。(n−k+1)は加減算の回数に相当する。また、基本的には被除数aの符号と部分剰余の符号は同じになるので、ここでは被除数aの符号を使用して商を決定する。加減算器5の出力の符号と被除数aの符号が同一の場合は、商レジスタ4の最下位に商として1を書き込む。加減算器5の出力の符号が被除数aの符号と異なり、かつ判別器7及び判別器8の出力がともに1である場合は、商レジスタ4の最下位に商として1を書き込み、判別器7又は判別器8の出力のいずれか一方が0の場合には、商レジスタ4の最下位に商として0を書き込む(第2サイクル、作用2−4)。続いて、前作用(2−4)で決定した商の値が1ならば減算器5の出力を剰余レジスタ3に格納し、商の値が0ならば剰余レジスタ3には、データP’の値を書き込む(第2サイクル、作用2−5)。
【0044】
次に、前サイクルの作用2−1〜2−5をさらに(n−1)回繰り返す(第3サイクル〜第(n+1)サイクル)。
【0045】
次に、被除数と除数の符号が同一の場合は、商レジスタ4の出力はそのまま商レジスタ4に保存される。一方、被除数と除数の符号が異なる場合には、商レジスタ4の出力の補数をとり商レジスタ4に書き戻される(第(n+2)サイクル、作用4)。
【0046】
最後に、上述した動作の結果として、商レジスタ4には商が格納され、剰余レジスタ3には剰余が格納され、符号付の除算が終了する(第(n+3)サイクル、作用5)。
【0047】
このようにして除算処理が行われ、例えば前述した従来例と同様に被除数a=1001(2進数)(10進数で−7を示す)と除数b=0011(2進数)(10進数で3を示す)の除算例を図3に示す。なお、図3において、除数レジスタ1の内容をBと表記し、剰余レジスタ3の内容をPと表記し、被除数レジスタ2の内容をAと表記し、商レジスタ4の内容をQと表記している。
【0048】
この実施形態では、被除数レジスタ2と商レジスタ4を別のレジスタに分けたが、図6に示す従来構成のように一つのレジスタを共用するようにすればレジスタの本数を削減することができ、面積の削減が可能になる。
【0049】
上記実施形態にあっては、符号付きの被除数及び/又は除数をそのまま扱うことにより、図6に示す従来例と比較して、除数、被除数の補数の算出、及び剰余の補正を行う必要がなくなり、除算時間の短縮を実現することができる。
【0050】
図4はこの発明の他の実施形態に係る除算回路の構成を示す図である。
【0051】
この実施形態は、前述した従来の非回復型の除算アルゴリズムを基本にして符号付の被除数ならびに除数により除算を行うものであり、前述した非回復型の除算アルゴリズムと大きく異なるところは、商の判定手法である。商が0の場合は、正確な部分剰余の代わりに仮の部分剰余として加減算器の出力を仮の部分剰余として一旦レジスタに格納しておき、除数と被除数が同符号ならば、前のサイクルでは絶対値比較として減算を行なっている。正確な部分剰余を求めるためには、(仮の部分剰余+除数)を行わなければならない。したがって、次のサイクルで、仮の部分剰余と除数の加算を行なえばよい((仮剰余+除数)×2−除数=仮剰余×2+除数による)。一方、除数と被除数が異符号ならば、前のサイクルでは絶対値比較として加算を行なっている。正確な部分剰余を求めるためには、(剰余−除数)を行なわなければならない。したがって、次のサイクルで、仮の部分剰余と除数との減算を行なえばよい((仮剰余−除数)×2+除数=仮剰余×2−除数による)。これにより、上記実施形態の除算と同じ結果が得られる。
【0052】
図4において、この実施形態の除算回路は、2の補数表現された符号付きnビットの被除数をa、mビットの除数をbとすると、図1に示す構成に比べて、図1に示すセレクタ6を削除して剰余レジスタ3に加減算器5の出力を入力し、図1に示す制御回路11に代えて、第1及び第2の比較器9,10と判別器7、8の判別結果を受けて商を決定するとともに加減算器5に加算又は減算を指示する制御回路31を設け、他の構成は図1に示すものと同様であり、図1と同符号をもって示す。
【0053】
次に、このような構成の除算回路を用いて符号付の除算動作を動作サイクルにしたがって説明する。
【0054】
まず、被除数及び除数の符号によらず被除数aを被除数レジスタ2に、除数bを除数レジスタ2にロードする。剰余レジスタ3には被除数aの符号、ここでは被除数aの最上位ビットのデータを全ビットにロードし、商レジスタ4には全ビットに0をロードする(第1サイクル、作用1)。
【0055】
次に、剰余レジスタ3及び被除数レジスタ2をそれぞれ1ビット左にシフトし、シフト後の両レジスタの連結した内容の上位mビットのデータ(連結値)をP’とする(第2サイクル、作用2−1)。続いて、被除数aと除数bの符号が同一の場合は、加減算器5によりデータP’から除数レジスタ1の出力を減じ、被除数aと除数bの符号が異なる場合には、加減算器5によりデータP’と除数レジスタ1の出力を加算する(第2サイクル、作用2−2)。続いて、被除数レジスタ2は出力を左に1ビットシフトして格納し、被除数レジスタ2の最下位ビットには0を格納する(第2サイクル、作用2−3)。
【0056】
続いて、商レジスタ4は出力を左に1ビットシフトして格納する。商レジスタ4の最下位ビットに格納するデータは次のようにして決定する。ただし、判別器7、8の出力がともに1の場合は、この時点での部分剰余と除数×2k−1 との絶対値が等しいことを意味する。(n−k+1)は加減算の回数に相当する。また、基本的には被除数aの符号と、部分剰余の符号は同じになるので、ここでは被除数aの符号を使用して商を決定する。加減算器5の出力の符号と被除数aの符号が同一の場合は、商レジスタ4の最下位に商として1を書き込む。一方、加減算器5の出力の符号が被除数aの符号と異なり、かつ判別器7、8の出力がともに1である場合には商レジスタ4の最下位に商として1を書き込み、判別器7、8の出力のいずれか一方でも0の場合には、商レジスタ4の最下位に商として0を書き込む(第2サイクル、作用2−4)。続いて、加減算器5の出力を被除数レジスタ3に格納する(第2サイクル、作用2−5)。
【0057】
次のサイクルでは、前サイクルの作用2−4で算出した商が1の場合は、剰余レジスタ3、被除数レジスタ2をそれぞれ1ビット左にシフトする。被除数aと除数bの符号が同一の場合には、加減算器5によりシフト後の両レジスタの連結した上位mビットのデータP’から除数レジスタ1の出力を減じ、被除数aと除数bの符号が異なる場合には加減算器5によりデータP’と除数レジスタ1の出力を加算する。一方、前サイクルの作用2−4で算出した商が0の場合には、剰余レジスタ3、被除数レジスタ2をそれぞれ1ビット左にシフトする。被除数aと除数bの符号が同一の場合は、加減算器5によりデータP’と除数レジスタ1の出力とを加算し、被除数aと除数bの符号が異なる場合には、加減算器5によりデータP’から剰余レジスタ1の出力を減じる(第3サイクル、作用3−1)。続いて、被除数レジスタ2は出力を左に1ビットシフトして格納し、被除数レジスタ2の最下位ビットには0を格納する(第3サイクル、作用3−2)。続いて、商レジスタ4は出力を左に1ビットシフトして格納する。商レジスタ4の最下位ビットに格納するデータを(第2サイクル、作用2−4)で行ったのと同様の方法で決定し商レジスタ4に格納する(第3サイクル、作用3−3)。続いて、加減算器5の出力を剰余レジスタ3に格納する(第3サイクル、作用3−4)。
【0058】
次に、第3サイクルの作用3−1〜3−4をさらに(n−2)回繰り返す(第4サイクル〜第(n+1)サイクル)。
【0059】
次に、直前のサイクルで算出した商が1の場合は、剰余レジスタ3はそのままの値を保持し、算出した商が0でかつ被除数aと除数bの符号が同一の場合は、加減算器5により剰余レジスタ3の出力と除数レジスタ1の出力とを加算し、算出した商が0でかつ被除数aと除数bの符号が異なる場合には、加減算器5により剰余レジスタ3の出力から除数レジスタ1の出力を減じ、その結果を剰余レジスタ3に格納する(第(n+2)サイクル、作用5)。
【0060】
次に、被除数と除数の符号が同一の場合は、被除数レジスタ2の出力はそのまま被除数レジスタ2に保存され、被除数と除数の符号が異なる場合には、被除数レジスタ2の出力の2の補数をとり被除数レジスタ2に書き戻される(第(n+3)サイクル、作用6)。
【0061】
最後に、商レジスタ4には商が格納され、剰余レジスタ3には剰余が格納されて符号付の除算が終了する(第(n+4)サイクル、作用7)。
【0062】
このようにして除算処理が行われ、例えば前述した従来例と同様に被除数a=1001(2進数)(10進数で−7を示す)と除数b=0011(2進数)(10進数で3を示す)の除算例を図5に示す。なお、図5において、除数レジスタ1の内容をBと表記し、剰余レジスタ3の内容をPと表記し、被除数レジスタ2の内容をAと表記し、商レジスタ4の内容をQと表記している。
【0063】
この実施形態では、被除数レジスタ2と商レジスタ4を別のレジスタに分けたが、図8に示す従来構成のように一つのレジスタを共用するようにすればレジスタの本数を削減することができ、面積の削減が可能になる。
【0064】
上記実施形態にあっては、符号付きの被除数及び/又は除数をそのまま扱うことにより、図8に示す従来例と比較して、除数、被除数の2の補数の算出、及び剰余の補正を行う必要がなくなり、除算時間の短縮を実現することができる。また、図1に示す実施形態に比べて、最後に剰余の補正のための加減算の回数が一回多くなるが、引き戻し分の時間を削減できるのでサイクル当たりの演算にかかる時間を短縮することができる。
【0065】
また、符号なし除算を行う場合は被除数ならびに除数の上位側に0を拡張し、符号付の除算を行う場合には被除数ならびに除数にそれぞれの符号ビットを符号拡張するようにすれば、少ないハードウェア量の増加で符号付除算及び符号なし除算を同一の除算回路で行うことができる。
【0066】
【発明の効果】
以上説明したように、この発明によれば、符号が付いた状態での回復型又は非回復型の除算過程において、部分剰余の一部と除数との絶対値の比較を行ない、部分剰余の一部が大きい場合又は双方が等しい場合はその桁の商を1とし、小さい場合には商を0とするようにしたので、除数、被除数及び剰余の補数をとる必要がなくなり、除算時間を短縮することが可能となる。
【図面の簡単な説明】
【図1】この発明の一実施形態に係る除算回路の構成を示す図である。
【図2】図1に示す判別器の構成を示す図である。
【図3】図1に示す構成における具体的な除算例を示す図である。
【図4】この発明の他の実施形態に係る除算回路の構成を示す図である。
【図5】図4に示す構成における具体的な除算例を示す図である。
【図6】従来の除算回路の一構成例を示す図である。
【図7】図6に示す構成における具体的な除算例を示す図である。
【図8】従来の除算回路の他の構成例を示す図である。
【図9】図8に示す構成における具体的な除算例を示す図である。
【符号の説明】
1 除数レジスタ
2 被除数レジスタ
3 剰余レジスタ
4 商レジスタ
5 加減算器
6 セレクタ
7,8 判別器
9,10比較器
11,31 制御回路
21,22,23 FET
24,25 バッファ
Claims (12)
- 符号付き除算を行う除算回路であって、
加算又は減算を行う加減算器と、
加減算の結果得られる仮の部分剰余が0であるか否かを判別する判別器と、
被除数の符号と除数の符号を比較する第1の比較器と、
前記加減算器の演算結果の符号と被除数の符号、及び前記判別器の判別結果にしたがって、商デジットを決定し、新しい部分剰余を決定する制御回路を具備し、
前記加減算器は、前記第1の比較器の比較結果にしたがって部分剰余の所定ビットデータと除数に加算又は減算を施し、
前記制御回路は、前記加減算器の演算結果の符号と被除数の符号及び前記判別器による判別結果に基づいて商を決定し、商デジットの値にしたがって部分剰余の所定ビットのデータ又は前記加減算器の演算結果から得られる仮の部分剰余の所定ビットのデータを選択して新しい部分剰余の所定ビットのデータとする動作を、所定の回数反復して行うことにより符号付き除算を行う
ことを特徴とする除算回路。 - 前記加減算器は、前記第1の比較器の比較結果として、被除数の符号と除数の符号が同一の場合には、部分剰余の所定ビットのデータから除数を減算し、
前記第1の比較器の比較結果として、被除数の符号と除数の符号が異なる場合には、部分剰余のうちの所定ビットのデータと除数を加算する
ことを特徴とする請求項1記載の除算回路。 - 被除数と除数の符号が異なる場合には、商を得るために、得られた各ビットの商デジットの補数をとる
ことを特徴とする請求項1又は2記載の除算回路。 - 符号付き除算を行う除算回路であって、
加算又は減算を行う加減算器と、
加減算の結果得られる仮の部分剰余が0であるか否かを判別する判別器と、
被除数の符号と除数の符号を比較する第1の比較器と、 前記加減算器の演算結果の符号と被除数の符号、及び前記判別器の判別結果にしたがって、商デジットを決定し、次サイクル時の加算又は減算を前記加減算器に指示する制御回路を具備し、
前記加減算器は、前記第1の比較器の比較結果にしたがって、符号拡張された被除数の所定ビットのデータと除数に加算又は減算を施し、
前記制御回路は、前記加減算器の演算結果の符号と被除数の符号及び前記判別器による判別結果に基づいて商デジットを決定した後、前サイクルで得られた仮の部分剰余のうちの所定ビットのデータと除数を、前サイクルで得られた商に基づく前記制御回路の指示にしたがって前記加減算器により加算又は減算する動作と、その加算又は減算の演算結果にしたがって、前記加減算器の演算結果の符号と被除数の符号及び前記判別器による判別結果に基づいて商を決定する動作を、所定の回数反復して行うことにより符号付き除算を行う
ことを特徴とする除算回路。 - 前記加減算器は、前記第1の比較器の比較結果として、被除数の符号と除数の符号が同一の場合には、前記符号拡張された被除数のうち所定ビットのデータから除数を減算し、
前記第1の比較器の比較結果として、被除数の符号と除数の符号が異なる場合には、前記符号拡張された被除数のうちの所定ビットのデータと除数を加算することを特徴とする請求項4記載の除算回路。 - 最終剰余を得るために、演算の最後のサイクルで得られた商に応じて剰余の補正を行い、被除数と除数の符号が異なる場合には、商を得るために、得られた各ビットの商デジットの補数をとる
ことを特徴とする請求項4又は5記載の除算回路。 - 前記制御回路は、
前記加減算器の出力の符号と被除数の符号が同一の場合は、商デジットとして1を得て、
前記加減算器の出力の符号が被除数の符号と異なり、かつ前記判別器の判別結果として前記仮の部分剰余が0である場合には、商デジットとして1を得て、
前記加減算器の出力の符号が被除数の符号と異なり、かつ前記判別器の判別結果として前記仮の部分剰余が0でない場合には、商デジットして0を得ることを特徴とする請求項1,2,4及び5のいずれか1項に記載の除算回路。 - 被除数を格納する被除数レジスタと、
被除数の所定ビットのデータ及び仮の部分剰余の所定ビットのデータを入力し、前記制御回路における商デジットにしたがって、何れかを選択して出力するセレクタと、
前記セレクタの出力を格納する剰余レジスタとを具備し、
前記制御回路は、前記剰余レジスタに格納された内容の所定ビットに前記被除数レジスタに格納された内容の上位ビットを連結した連結値を、新たな被除数の所定ビットデータとして前記加減算器及び前記セレクタに渡しつつ、前記加減算器に加算又は減算を所定の回数反復して行わせる
ことを特徴とする請求項1,2,4及び5のいずれか1項に記載の除算回路。 - 前記制御回路は、
前記加減算器に加算又は減算を所定の回数反復して行わせる際に、前記被除数レジスタに格納された値の所定ビットを順に所定ビットずつ上位側にシフトし、商デジットを前記被除数レジスタの下位側から順次格納する
ことを特徴とする請求項8記載の除算回路。 - 被除数を格納するレジスタと商を格納するレジスタを兼用する兼用レジスタを具備し、
前記兼用レジスタは、除算実行中には格納された値の所定ビットを順に所定ビットずつ上位側にシフトし、商デジットは兼用レジスタの下位側から順次格納される
ことを特徴とする請求項1,2,4,5及び9のいずれか1項に記載の除算回路。 - 符号なし除算を行う場合には、被除数ならびに除数の上位側に0を拡張し、符号付き除算を行う場合には、被除数ならびに除数にそれぞれの符号ビットを符号拡張し、符号付き除算及び符号なし除算を同一の除算回路で行う
ことを特徴とする請求項1,2,4,5及び9のいずれか1項に記載の除算回路。 - 引き放し法を用いて除算を行う除算回路であって、
最初は、被除数と除数が同じ符号の場合には減算を、被除数と除数が異なる符号の場合には加算を行い、それ以降は、被除数と除数が同じ符号で、商デジットが1の場合には、次のステップで減算を、商デジットが0の場合には次のステップでは加算を行い、被除数と除数が異なる符号で、商デジットが1の場合には、次のステップでは加算を、商デジットが0の場合には次のステップでは減算を行うという動作を繰り返すことによって除算を行い、被除数の符号と部分剰余の符号との比較結果、ならびに部分剰余が0であるか否かの判別結果に基づいて商の各ビットの商デジットを決定することを特徴とする除算回路。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP08818797A JP3544821B2 (ja) | 1997-04-07 | 1997-04-07 | 除算回路 |
US09/055,993 US6047305A (en) | 1997-04-07 | 1998-04-07 | Division circuit not requiring taking complements of divisor, dividend and remainder |
US09/521,221 US6477557B1 (en) | 1997-04-07 | 2000-03-08 | Division circuit not requiring taking complements of divisor, dividend and remainder |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP08818797A JP3544821B2 (ja) | 1997-04-07 | 1997-04-07 | 除算回路 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH10283164A JPH10283164A (ja) | 1998-10-23 |
JP3544821B2 true JP3544821B2 (ja) | 2004-07-21 |
Family
ID=13935907
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP08818797A Expired - Fee Related JP3544821B2 (ja) | 1997-04-07 | 1997-04-07 | 除算回路 |
Country Status (2)
Country | Link |
---|---|
US (2) | US6047305A (ja) |
JP (1) | JP3544821B2 (ja) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2341950B (en) * | 1998-06-10 | 2003-03-12 | Lsi Logic Corp | Digital processing |
JP2001034472A (ja) * | 1999-07-16 | 2001-02-09 | Mitsubishi Electric Corp | データ処理装置および除算、剰余算アルゴリズム |
JP4510253B2 (ja) * | 2000-08-28 | 2010-07-21 | パナソニック株式会社 | 演算処理装置 |
US7237000B2 (en) * | 2001-08-16 | 2007-06-26 | Texas Instruments Incorporated | Speed of execution of a conditional subtract instruction and increasing the range of operands over which the instruction would be performed correctly |
US20060179092A1 (en) | 2005-02-10 | 2006-08-10 | Schmookler Martin S | System and method for executing fixed point divide operations using a floating point multiply-add pipeline |
JP5169760B2 (ja) * | 2008-01-28 | 2013-03-27 | 富士通株式会社 | 通信装置、受信データサイズチェック方法、倍数判定回路および倍数判定方法 |
US8261176B2 (en) * | 2009-06-30 | 2012-09-04 | Sandisk Il Ltd. | Polynomial division |
JP5397061B2 (ja) * | 2009-07-21 | 2014-01-22 | 富士通株式会社 | 演算処理装置、その制御方法および演算処理プログラム |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5016210A (en) * | 1989-11-15 | 1991-05-14 | United Technologies Corporation | Binary division of signed operands |
US5208769A (en) * | 1991-09-19 | 1993-05-04 | Zilog, Inc. | Unsigned integer multiply/divide circuit |
FR2720172B1 (fr) * | 1994-05-20 | 1996-06-28 | Sgs Thomson Microelectronics | Dispositif de mise en Óoeuvre numérique d'une opération de division. |
US5574677A (en) * | 1994-11-23 | 1996-11-12 | Exponential Technology, Inc. | Adaptive non-restoring integer divide apparatus with integrated overflow detect |
-
1997
- 1997-04-07 JP JP08818797A patent/JP3544821B2/ja not_active Expired - Fee Related
-
1998
- 1998-04-07 US US09/055,993 patent/US6047305A/en not_active Expired - Fee Related
-
2000
- 2000-03-08 US US09/521,221 patent/US6477557B1/en not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
US6477557B1 (en) | 2002-11-05 |
US6047305A (en) | 2000-04-04 |
JPH10283164A (ja) | 1998-10-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP1058184A2 (en) | High radix division | |
JP2835153B2 (ja) | 高基数除算器 | |
JP3544821B2 (ja) | 除算回路 | |
JP2585649B2 (ja) | 除算回路 | |
US4992969A (en) | Integer division circuit provided with a overflow detector circuit | |
US5815423A (en) | Parallel processing division circuit | |
US9009209B2 (en) | Processor, control method of processor, and computer readable storage medium storing processing program for division operation | |
US4760550A (en) | Saving cycles in floating point division | |
US5574677A (en) | Adaptive non-restoring integer divide apparatus with integrated overflow detect | |
US5638314A (en) | Dividing apparatus for use in a data processing apparatus | |
EP0379998B1 (en) | Divider for carrying out high speed arithmetic operation | |
US3223831A (en) | Binary division apparatus | |
JP2605848B2 (ja) | 非回復型除算器 | |
JP3028165B2 (ja) | 高基数除算制御方法および高基数除算器 | |
CN114895868B (zh) | 基于两位商计算的除法运算单元及除法器 | |
JP2664750B2 (ja) | 演算装置及び演算処理方法 | |
JP2995721B2 (ja) | 除算装置および除算方法 | |
JP2993119B2 (ja) | 浮動小数点演算装置 | |
JPH0368415B2 (ja) | ||
JP2575856B2 (ja) | 演算回路 | |
JPH01274234A (ja) | 除算装置 | |
JPS59217294A (ja) | 信号シフト回路 | |
JPH08263271A (ja) | 引放し除算装置 | |
JPH0754458B2 (ja) | 乗算回路 | |
JPH0769788B2 (ja) | 平方根演算処理方式 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
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: 20040330 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20040406 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20080416 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090416 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100416 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100416 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110416 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130416 Year of fee payment: 9 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140416 Year of fee payment: 10 |
|
LAPS | Cancellation because of no payment of annual fees |