JP2002175179A - 整数除算方法および整数除算装置 - Google Patents

整数除算方法および整数除算装置

Info

Publication number
JP2002175179A
JP2002175179A JP2000372389A JP2000372389A JP2002175179A JP 2002175179 A JP2002175179 A JP 2002175179A JP 2000372389 A JP2000372389 A JP 2000372389A JP 2000372389 A JP2000372389 A JP 2000372389A JP 2002175179 A JP2002175179 A JP 2002175179A
Authority
JP
Japan
Prior art keywords
dividend
divisor
digit
shift amount
division
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.)
Pending
Application number
JP2000372389A
Other languages
English (en)
Inventor
Yukio Takase
行夫 高瀬
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Panasonic Holdings Corp
Original Assignee
Matsushita Electric Industrial Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Matsushita Electric Industrial Co Ltd filed Critical Matsushita Electric Industrial Co Ltd
Priority to JP2000372389A priority Critical patent/JP2002175179A/ja
Publication of JP2002175179A publication Critical patent/JP2002175179A/ja
Pending legal-status Critical Current

Links

Abstract

(57)【要約】 【課題】回路規模を増大せずに、除算処理量を減少して
高速な整数除算を実現する整数除算方法および整数除算
装置を提供する。 【解決手段】被除数および除数の最上位桁に続く0の無
効ビット数をもとにシフト量を算出する概算桁合わせ回
路100と、そのシフト量だけ被除数を左シフトする左
シフタ101と、被除数から除数を減算したときに部分
剰余と部分商とが同時に求められるよう除数を変換する
除数変換部102と、左シフトされた被除数を1ビット
づつ左シフトしながら除数を繰返し減算する除算処理部
103とを備えることにより、部分剰余と部分商とが同
時に求められて、除算処理工程を節約でき、被除数の上
位無効ビット数分除算回路の冗長な演算を削減して、回
路規模を増大せずに、除算回路における繰返し処理回数
を減少することができる。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、マイクロプロセッ
サの演算装置等に用いられる整数除算方法および整数除
算装置に関するものである。
【0002】
【従来の技術】従来、この種の除算装置における除算ア
ルゴリズムとしては、例えば、パターソン&ヘネシー著
(成田光彰訳)「コンピュータの構成と設計:ハードウ
ェアとソフトウェアのインタフェース」(1996年、
日経BP社ISBN4−8222−8001−2)P
P.191〜201、第4章コンピュータにおける算術
論理計算、4.7節(除算)に示されているものや、人
が筆算で行う割算と同じ方法でシフトと引算を繰り返し
て除算を行うアルゴリズム等が知られている。
【0003】以下、図7のブロック図を参照して、従来
の整数除算装置の構成例について説明する。図7におい
て、まず、a÷b(aは被除数、bは除数)の整数除算
を行う場合に、被除数aを被除数・商レジスタ701の
下位に記憶させ、上位は初期値0とする。また、除数b
は除数レジスタ702の上位に記憶させ、下位は初期値
0とする。
【0004】シフタ(シフト回路)703により、被除
数・商レジスタ701の内容を1ビット左シフトさせ
る。そのシフト結果の出力データを、減算を行う算術論
理ユニット(ALU)704の一方の入力側に供給し、
ALU704のもう一方の入力側には、除数レジスタ7
02から除数bが供給され、前述のシフト結果から除数
bを減算する。ALU704の演算結果は、部分剰余レ
ジスタ・部分商レジスタ705に出力される。
【0005】また、減算結果の符号判定信号サイン(Si
gn:+、−)は、インバータ706を通して、部分剰余
レジスタ・部分商レジスタ705のLSB(最下位ビッ
ト)に供給され、また、セレクタ707にも供給され
る。ALU704の演算結果が正である時にはその桁の
商は“1”であるので、符号判定信号サインの値“0”
を反転して部分商を“1”とし、ALU704の演算結
果が負である時にはその桁の商は“0”であるので、符
号判定信号サインの値“1”を反転して部分商を“0”
とする。
【0006】セレクタ707の一方の入力側にはシフタ
703の出力が供給され、もう一方の入力側には部分剰
余・部分商レジスタ705の出力が供給される。セレク
タ707は、ALU704から供給された符号判定信号
サインにより2つの入力のどちらか一方を下記のように
して選択し、その選択結果を被除数レジスタ・商レジス
タ701へ供給する。すなわち、ALU704の演算結
果が負であれば、符号判定信号サインは“1”となり、
この時は、ALU704がシフタ703の出力を減算し
なかったので、セレクタ707はシフタ703の出力デ
ータを選択し、ALU704の演算結果が正であれば、
符号判定信号サインは“0”となり、この時、セレクタ
707はALU704の減算結果である部分剰余レジス
タ・部分商レジスタ705の出力を選択する。
【0007】CLKはカウンタ708に入力されビット
ごとにカウントを行う。デコーダ709は、カウンタ7
08のカウントを入力して整数除算の語長に達したとき
にセレクタ710を開き、セレクタ707の出力が剰余
レジスタ・商レジスタ711に出力される。
【0008】以下、図8のフローチャートを参照して、
従来の整数除算方法の一例について説明する。図8にお
いて、本従来例では、16ビット語長の整数除算を行う
ものとする。 <初期処理> ● ステップS801において、被除数aを変数RQに
代入する。 ● ステップS802において、除数bを左に16ビット
シフトして、除数bを変数DVに代入する。 ● ステップS803において、整数除算の語長を繰り
返し回数を表す変数Nに代入する。
【0009】<繰返し処理> ● ステップS804において、変数RQを左に1ビッ
トシフトする。 ● ステップS805において、(RQ≧DVの場合)
は、ステップS806でRQからDVを引き、ステップ
S807でRQに1を加えて部分商を1とする。(RQ
<DVの場合)は、部分商は0となり、ステップS80
6、S807は行わない。 ● そして、ステップS808において、N回に達する
まで、ステップS804からS808を繰り返す。
【0010】<終了処理> ● ステップS809において、変数RQの上位には剰
余rが、変数RQの下位には商qが求められる。このよ
うな、シフトと減算の繰り返しによる整数除算では、被
除数および除数の値に関わらずすべての桁について計算
されるため、整数除算の語長だけ繰り返して計算され
る。そのため、除算処理時間が長くなるという問題があ
った。
【0011】そこで、上記のような問題点を解決しよう
とした従来方法としては、特開平7−244578号公
報に開示されているようなものがあった。それによる
と、桁合わせ処理により被除数aのシフト量を決定し、
この桁合わせ処理で得られたシフト量で被除数aをシフ
トしたビット位置から従来の除算手法を行うことによ
り、語長とシフト量の差分のビット数に対して除算を行
うので、繰り返し回数を語長より少なくした整数除算を
行うことができる。
【0012】以下、図9のフローチャートを参照して、
従来の桁合わせ処理による整数除算方法の一例について
説明する。 <初期処理> ● ステップS901において、被除数aを変数RQに
代入する。 ● ステップS902において、除数bを左に16ビッ
トシフトして、除数bを変数DVに代入する。 ● ステップS920において、桁合わせ処理を行い被
除数aのシフト量Sを決定する(桁合わせ処理は図10
で説明する)。 ● ステップS903において、繰返し回数Nを語長か
ら桁合わせシフト量Sを減算した値に設定する。 ● ステップS930において、桁合わせ処理で得られ
たシフト量Sだけ被除数aを左にシフトする。
【0013】<繰返し処理>上記従来例と同じである。 ● 以下のステップS904からステップS909まで
は、上記従来の手法を実行する。
【0014】次に、図10のフローチャートおよび図1
1のシフト量Sの決定手順の一例を参照して、図9のス
テップS920に示すシフト量Sの決定手順の詳細を説
明する。ここでは、例として、被除数a=601、除数
b=33の場合のシフト量Sを求める動作を説明する。
まず、図11に示すように、変数RQには値601(バ
イナリ数:W10−1に示す)が、変数DVには値(3
3<<16(16ビット左シフトされたバイナリ数3
3))が設定されているものとする。〔W10−1の状
態〕 以下、WQおよびW10等の文字は計算の中間結果を意
味する。
【0015】<初期処理>ステップS921において、
シフト量Sを0に初期化する。ステップS922におい
て、シフト幅中間値Tを語長の半分に設定し、ここでは
T=8となる。
【0016】<繰返し1回目>ステップS923におい
て、今回のシフト量S=0+8を決定する。ステップS
924において、変数RQを今回のシフト量S=8だけ
左シフトする。〔W10−2の状態〕 ステップS925において、WQとDVの大小関係を判
定し、WQがDVより小さいのでステップS927へ進
む。ステップS927において、シフト幅中間値Tを現
在の半分に設定する。ここではT=4となる。ステップ
S928において、シフト幅中間値Tは0ではないの
で、繰返し処理を行う。
【0017】<繰返し2回目>ステップS923におい
て、今回のシフト量S=8+4を決定する。ステップS
924において、変数RQを今回のシフト量S=12で
左シフトする。〔W10−3の状態〕 ステップS925において、WQとDVの大小関係を判
定し、WQはDVより大きくなりすぎたのでステップS
926において、シフト量S=12−4にして元に戻
す。ステップS927において、シフト幅中間値Tを現
在の半分に設定する。ここではT=2となる。ステップ
S928において、シフト幅中間値Tは0ではないの
で、繰返し処理を行う。
【0018】<繰返し3回目>ステップS923におい
て、今回のシフト量S=8+2を決定する。ステップS
924において、変数RQを今回のシフト量S=10で
左シフトする。〔W10−4の状態〕 ステップS925において、WQとDVの大小関係を判
定し、WQはDVよりまだ小さいのでステップS927
へ進む。ステップS927において、シフト幅中間値T
を現在の半分に設定する。ここではT=1となる。ステ
ップS928において、、シフト幅中間値Tは0ではな
いので、繰返し処理を行う。
【0019】<繰返し4回目>ステップS923におい
て、今回のシフト量S=10+1を決定する。ステップ
S924において、変数RQを今回のシフト量S=11
で左シフトする。〔W10−5の状態〕 ステップS925において、WQとDVの大小関係を判
定し、WQはDVよりまだ小さいのでステップS927
へ進む。ステップS927において、シフト幅中間値T
を現在の半分に設定する。ここではT=0となる。ステ
ップS928において、シフト幅中間値Tは0であるの
で、繰返し処理を終了する。
【0020】以上説明したように、このシフト量Sの決
定手順は、二分探索のアルゴリズムにより、シフト幅中
間値を語長から半分半分と小さくして、被除数aと除数
bの大小関係によりシフト増分方向を左右に切替えて、
目的のシフト位置まで収束させて、シフト量Sを決定す
るというものである。
【0021】
【発明が解決しようとする課題】しかしながら、上記第
1の従来技術の整数除算アルゴリズムを、除算器の有し
ていないDSP等においてソフトウェアで実現した場
合、1ビットあたり4ステップの手順を必要とし、さら
に被除数a、除数bの値に関わらず全ての桁について計
算が必要なため、除算にかかる時間コストは、最小でも
語長回数×4ステップを必要とし、例えば、16ビット
語長の場合は、16回×4ステップ=64ステップを必
要とするため、除算処理時間が大きいという問題があっ
た。
【0022】また、桁合わせ処理により繰り返し回数を
語長より少なくした第2の従来技術の除算方法では、除
算の繰返し回数を減少させることはできるが、桁合わせ
処理において、log2 N回(Nは語長)のシフト手順
と比較手順とシフト増分値の決定などに対し5ステップ
の手順を要し、従来の除算処理に入る前処理の手順が多
く、また語長が長くなればなるほど桁合わせ処理量が増
大し、例えば、16ビット語長の場合は、桁合わせ処理
にlog2 16×5=20ステップを必要とする等、除
算処理時間が大きいという問題があった。
【0023】さらに、桁合わせ回路により繰り返し回数
を語長より少なくした第2の従来技術の除算装置では、
処理量の増大に加え、桁合わせを行うためにシフト量決
定回路の規模が大きくなるという問題があった。
【0024】本発明は、上記のような従来の問題を解決
するためになされたもので、回路規模を増大せずに、除
算処理量を減少して高速な整数除算を実現する整数除算
方法および整数除算装置を提供するものである。
【0025】
【課題を解決するための手段】本発明における整数除算
方法は、被除数から除数を減算したときに部分剰余と部
分商とが同時に求めるべく除算処理前に前記除数を変換
し、被除数を1ビットづつ左シフトしながら前記被除数
から除数を繰返し減算して各桁の商を求めるという構成
を有している。この構成により、被除数から除数を減算
したときに部分剰余と部分商とが同時に求められるよう
除数を変換することにより、部分剰余を求める手順と部
分商を求める手順とが同時に行なわれ、除算処理におい
て1工程節約することができる。
【0026】本発明における整数除算方法は、被除数の
最上位桁に続く0からなる無効ビット数をもとに概算に
より前記被除数のシフト量を求め、求めた前記シフト量
だけ前記被除数を左シフトし、左シフトしたビット位置
から1ビットづつ左シフトしながら前記被除数から前記
除数を繰返し減算する各工程からなるという構成を有し
ている。この構成により、部分剰余と部分商とが同時に
求められる上、被除数の最上位桁に続く0からなる無効
ビット数をもとに被除数を左シフトすることにより、事
前に除算処理手順の冗長な演算を削減し、除算処理手順
の繰返し回数を減少させることができる。
【0027】本発明における整数除算方法は、被除数の
最上位桁に続く0からなる無効ビット数と除数の最上位
桁に続く0からなる無効ビット数とをもとに概算により
前記被除数の最終的なシフト量を求め、求めた最終的な
シフト量だけ前記被除数を左シフトし、左シフトしたビ
ット位置から1ビットづつ左シフトしながら前記被除数
から前記除数を繰返し減算して各桁の商を求めるという
構成を有している。この構成により、部分剰余と部分商
とが同時に求められる上、被除数の最上位桁に続く0か
らなる無効ビット数と、除数の最上位桁に続く0からな
る無効ビット数とをもとに被除数を左シフトすることに
より、事前に除算処理手順の冗長な演算を削減し、除算
処理手順の繰返し回数を減少させることができる。
【0028】本発明における整数除算装置は、入力した
被除数の最上位桁に続く0からなる無効ビット数をもと
に概算により前記被除数のシフト量を求める第1の桁合
わせ回路と、求めた前記シフト量だけ前記被除数を左シ
フトするシフト回路と、左シフトしたビット位置から1
ビットづつ左シフトしながら前記被除数から前記除数を
繰返し減算して各桁の商を求める除算回路とを備えると
いう構成を有している。この構成により、第1の桁合わ
せ回路により被除数の最上位桁に続く無効ビット数から
被除数のシフト量を荒い概算で決定し、被除数をシフト
回路により左シフトすることにより、事前に除算回路の
冗長な演算を削減して、回路規模を増大せずに、除算回
路における繰返し処理回数を減少させることができる。
【0029】本発明における整数除算装置は、入力した
被除数の最上位桁に続く0からなる無効ビット数と入力
した除数の最上位桁に続く0からなる無効ビット数とを
もとに概算により前記被除数のシフト量を求める第2の
桁合わせ回路と、求めた前記シフト量だけ前記被除数を
左シフトするシフト回路と、左シフトした前記ビット位
置から1ビットづつ左シフトしながら前記被除数から前
記除数を繰返し減算して各桁の商を求める除算回路とを
備えるという構成を有している。この構成により、第1
の桁合わせ回路により被除数および除数の最上位桁に続
く無効ビット数から被除数のシフト量を概算で決定し、
被除数をシフト回路により左シフトすることにより、事
前に除算回路の冗長な演算を削減して、回路規模を増大
せずに、除算回路における繰返し処理回数を減少させる
ことができる。
【0030】本発明における整数除算装置は、入力した
被除数の最上位桁に続く0からなる無効ビット数と入力
した除数の最上位桁に続く0からなる無効ビット数とを
もとに概算によりシフト量を算出する概算桁合わせ回路
と、算出したシフト量だけ前記被除数を左シフトする左
シフタと、被除数から除数を減算したときに部分剰余と
部分商とが同時に求められるよう除算処理前に前記除数
を変換する除数変換部と、左シフトされた前記被除数を
1ビットづつ左シフトしながら変換された前記除数を繰
返し減算して各桁の商を求める除算処理部とを備えると
いう構成を有している。この構成により、除数変換手段
により被除数から除数を減算したときに部分剰余と部分
商とが同時に求められるよう除数を変換することによ
り、除算回路による除算処理において1工程節約するこ
とができる上、桁合わせ回路により被除数および除数の
最上位桁に続く無効ビット数から被除数のシフト量を概
算で決定し、被除数をシフト回路によりそのシフト量だ
け左シフトすることにより、事前に除算回路の冗長な演
算を削減して、回路規模を増大せずに、除算回路におけ
る繰返し処理回数を減少させることができる。
【0031】本発明における記録媒体は、請求項1ない
し3のいずれかに記載の整数除算方法における各処理工
程をコンピュータに実行させるためのプログラムをコン
ピュータ読み取り可能に記録したという構成を有してい
る。この構成により、本発明における整数除算方法を実
現するプログラムを複数種類の記録媒体に格納し、他の
コンピュータで読み取ることができるようにする。
【0032】
【発明の実施の形態】以下、添付図面に基づき、本発明
の第1ないし第7の実施の形態を詳細に説明する。 (第1の実施の形態)まず、図2のフローチャートを参
照して、本発明の第1の実施の形態における整数除算方
法の処理手順(処理工程)について説明する。本実施の
形態では、図12に見られるように、変数RQの上位に
は部分剰余a’が、下位には部分商a”が設定され、変
数DVには(除数b<<16−1)が設定されるものと
する。
【0033】<初期処理> ● ステップS201において、被除数aを変数RQに
代入する。 ● 除数変換ステップS202において、除数bを左に
16ビットシフトしたものから1引いた値を変数DVに代
入する。(※従来例との相違点は、1を減じることであ
る) ● ステップS203において、整数除算の語長を繰り
返し回数を表す変数Nに代入する。
【0034】<繰返し処理> ● ステップS204において、変数RQ(部分被除数
・部分商)を左に1ビットシフトする。 ● ステップS205において、〔RQ>DVの場合〕
は、ステップS206において、RQからDVを引くだ
けで、部分商を1とする。(※従来例との相違点は、不
等号のイコールの有無である) 〔RQ≦DVの場合〕は、部分商は0となり、ステップ
S206は行わず、ステップS207に進む。 ● ステップS207において、N回に達するまで、ス
テップS204からS207を繰り返す。
【0035】<終了処理> ● ステップS208において、変数RQの上位には剰
余rが、変数RQの下位には商qが求められる。
【0036】次に、図12の動作原理の説明図を参照し
て、本発明の第1の実施の形態における整数除算方法の
動作原理を詳細に説明する。本実施の形態では、変数R
Qの上位には部分剰余a’が、下位には部分商a”が設
定され、変数DVには、(除数b<<16−1)を設定
しているので、変数DVの上位には(除数b−1)が、
下位には(−1)が設定されていることになる。〔RQ
>DVの場合〕、すなわち RQ>b−1の場合は、R
Q←RQ−DVの減算が行われ、変数RQの下位は、
a”−(−1)でa”+1となる。変数RQの上位は、
下位からのボーローがあるので、a’−1−(b−1)
でa’−bとなる 〔RQ=DVの場合〕、すなわち RQ=b−1となり
RQ<bであるから何も演算を行わない。〔RQ<DV
の場合〕、すなわち RQ<b−1となりRQ<bであ
るから何も演算を行わない。従って、従来方式と等価な
演算が行われる。
【0037】以上説明したように、本発明の第1の実施
の形態によれば、除算の繰返し手順の前に除数変換ステ
ップS202を追加することにより、繰返し手順の中の
ステップS206により、被除数aから除数bを減算し
て部分剰余を求める手順と部分商を求める手順とを同時
に行うことが可能となり、従来1ビットあたり4ステッ
プの手順を必要としていたものが3ステップの手順で行
うことができ、1ビットあたりの処理量を減少させるこ
とができる。
【0038】例えば、16ビット語長の場合は、従来1
6回×4ステップ=64ステップを必要としていた処理
量が、16回×3ステップ=48ステップの処理量に減
らすことができ、整数除算を高速に行うことができる。
【0039】(第2の実施の形態)次に、図3のフロー
チャートを参照して、本発明の第2の実施の形態におけ
る、被除数の桁合わせ処理によりそのシフト量を算出す
る整数除算方法の処理手順について説明する。 <初期処理> ● ステップS301のリーディングゼロ(Leading Ze
ro)処理において、被除数aのMSB(最上位桁)に続
く0からなる無効なビット数を求める。このビット数を
そのまま、荒い概算として桁合わせのシフト量Sとす
る。 ● ステップS302において、被除数aをシフト量S
だけ左シフトして、変数RQに代入する。 ● 除数変換ステップS303において、除数bを左に
16ビットシフトしたものから1引いた値を変数DVに代
入する。 ● ステップS304において、整数除算の語長から先
にシフトしたシフト量Sを減じた値を繰り返し回数とし
て変数Nに代入する。 <繰返し処理>ステップS305以下の繰返し処理は、
上記の第1の実施の形態のものと同様である。
【0040】次に、図13の動作原理の説明図を参照し
て、本発明の第2の実施の形態における、被除数の桁合
わせ処理によりそのシフト量を算出する整数除算方法の
動作原理を詳細に説明する。ここでは、被除数a=60
1、除数b=33の場合の動作を説明する。図13にお
いて、被除数aのMSB(最上位桁)に続く無効な0が
続く間は、少なくとも、ステップS306の(RQ>D
V)は成立しない。すなわち、無駄な繰返し処理を行っ
ていることになる。そのため、被除数aの値601のM
SB(最上位桁)に続く0をリーディングゼロ手順によ
りカウントするとS=6ビットとなる。このシフト量S
を桁合わせ処理の荒い概算として使用し、ステップS3
02であらかじめ被除数aをシフトしておくことによ
り、除算処理手順の冗長な演算を削減することができ
る。
【0041】以上説明したように、本発明の第2の実施
の形態によれば、除算の繰返し手順の前に、桁合わせ処
理として、ステップS301で荒い概算でシフト量を求
め、この桁合わせ処理の荒い概算で得られた最終的なシ
フト量で被除数aをシフトしたビット位置から除算を行
うことにより、少ない手順で繰返し回数を減少させるこ
とができる。但し、概算精度が荒いため、繰返し回数は
従来の桁合わせ処理に比べて多くなるが、桁合わせ処理
量は、従来のlog2 N(Nは語長)×5ステップに比
べ、わずか2ステップに減少させることができ、また語
長にも影響されず少なくなる。特に、被除数aの値が小
さい時に効果が大きい。例えば、16ビット語長の場合
は、桁合わせ処理において従来log2 16×5ステッ
プ=20ステップを必要としていた処理量が、2ステッ
プの処理量に減らすことができ、整数除算を高速に行う
ことができる。
【0042】(第3の実施の形態)次に、図4のフロー
チャートを参照して、本発明の第3の実施の形態におけ
る、被除数および除数の桁合わせ処理により被除数のシ
フト量を算出する整数除算方法の処理手順について説明
する。 <初期処理> ● ステップS401のリーディングゼロ処理におい
て、被除数aのMSB(最上位桁)に続く0からなる無
効なビット数S1を求める。 ● ステップS402のリーディングゼロ処理におい
て、除数bのMSB(最上位桁)に続く0からなる無効
なビット数S2を求める。 ● ステップS403において、桁合わせのシフト量S
=S1−S2+15を概算で求める。 ● ステップS404において、被除数aをシフト量S
だけ左シフトして、変数RQに代入する。 ● 除数変換ステップS405において、除数bを左に
16ビットシフトしたものから1引いた値を、除数bを
格納する変数DVに代入する。 ● ステップS406において、整数除算の語長から先
にシフトしたシフト量Sを減じた値を繰り返し回数を表
す変数Nに代入する。 <繰返し処理>ステップS407以下の繰返し処理は、
上記の第1の実施の形態のものと同様である。
【0043】次に、図14の動作原理の説明図を参照し
て、本発明の第3の実施の形態における、被除数および
除数の桁合わせ処理により被除数のシフト量を算出する
整数除算方法の動作原理を詳細に説明する。ここでは、
被除数a=601、除数b=33の場合の動作を説明す
る。被除数aのMSB(最上位桁)に続く無効な0が続
く間と除数bの有効なビットが続く間は、少なくとも、
ステップS408の(RQ>DV)は成立しない。すな
わち、無駄な繰返し処理を行っていることになる。そこ
で、被除数aの値601のMSB(最上位桁)に続く0
をリーディングゼロ手順でカウントするとS1=6ビッ
トとなる。次に、除数bの値33のMSB(最上位桁)
に続く0をリーディングゼロ手順でカウントするとS2
=10ビットとなる。シフト量S=S1+(16−S
2)−1=S1−S2+15を桁合わせ処理の概算とし
て使用し、ステップS404で被除数aをあらかじめシ
フトしておくことにより、除算処理手順の冗長な演算を
削減することができる。
【0044】以上説明したように、本発明の第3の実施
の形態によれば、除算の繰返し手順の前に、桁合わせ処
理として、ステップS401からステップS403にお
いて概算でシフト量を求め、この桁合わせ処理の概算で
得られた最終的なシフト量だけ被除数aをシフトし、シ
フトしたビット位置から除算を行うことにより、少ない
手順で除算の繰返し回数を減少させることができる。
【0045】本実施の形態における整数除算方法による
と、概算精度が高く、繰返し回数は従来の桁合わせ処理
に比べて同等か1回多くなるだけである。それに対し、
桁合わせ処理量は、従来のlog2 N(Nは語長)×5
ステップに比べ、わずか5ステップに減少させることが
でき、また語長にも影響されず少なくなる。上記例の被
除数a=601、除数b=33の場合は、従来方式と同
等である。もし、被除数a=601、除数b=40の場
合は、最初の判定で(RQ>DV)は成立しないので、
従来方式に比べて1回多くなるだけである。
【0046】例えば、16ビット語長の場合は、桁合わ
せ処理において、従来log2 16×5ステップ=20
ステップを必要としていた処理量が、5ステップの処理
量に減らすことができ、整数除算を高速に行うことがで
きる。
【0047】(第4の実施の形態)次に、図5のブロッ
ク図を参照して、本発明の第4の実施の形態における整
数除算装置について説明する。図5に示す本実施の形態
における整数除算装置は、被除数aのリーディングゼロ
をカウントするリーディングゼロカウント回路(リーデ
ィングゼロ回路、以下同じ)521からなる荒い概算桁
合わせ回路520と、被除数aをリーディングゼロの数
だけ左シフトするシフタ(シフト回路)510と、リー
ディングゼロだけ左シフトした被除数aを除数bで除算
する除算器500とにより構成される。
【0048】すなわち、本実施の形態における整数除算
装置は、桁合わせ回路520におけるリーディングゼロ
回路521により、被除数aのMSB(最上位桁)に続
く無効な0をカウントし、この値を荒い概算のシフト量
Sとし、この荒い概算桁合わせ回路520の荒い概算に
よって得られた最終的なシフト量Sだけ、被除数aをシ
フタ510によりシフトしたビット位置から従来の除算
器500で除算を行う。
【0049】以上説明したように、本発明の第4の実施
の形態によれば、荒い概算桁合わせ回路520で、荒い
概算によりシフト量を求め、この荒い概算桁合わせ回路
520の荒い概算で得られた最終的なシフト量により被
除数aをシフトしたビット位置から除算を行うことによ
り、結果が得られるまでのクロック数を減少させること
ができる。但し、概算精度が荒いため、桁合わせ後のク
ロック数は、従来の桁合わせ回路に比べて多くなる。荒
い概算桁合わせ回路520は、従来log2 N(Nは語
長)回の桁合わせでシフト量を求めていたのに比べ、荒
い概算桁合わせ回路520によりわずか1クロックによ
って求めることができ、語長にも影響されず少なくな
る。特に、被除数aの値が小さい時には効果が大きい。
回路規模も、被除数aのリーディングゼロ回路521の
追加のみであり、小規模な回路で実現することができ
る。
【0050】例えば、16ビット語長の場合は、荒い概
算桁合わせ回路520において従来log2 16=4回
の桁合わせでシフト量を求めていたのに対し、わずか1
クロックで求めることができ、回路規模を増大させず
に、整数除算を高速に行うことができる。
【0051】(第5の実施の形態)次に、図6のブロッ
ク図を参照して、本発明の第5の実施の形態における整
数除算装置について説明する。図6に示す本実施の形態
における整数除算装置は、被除数aのリーディングゼロ
をカウントするリーディングゼロカウント回路(リーデ
ィングゼロ回路、以下同じ)621と、除数bのリーデ
ィングゼロをカウントするリーディングゼロ回路622
と、リーディングゼロ回路621の出力からリーディン
グゼロ回路622の出力を減算する減算器623と、減
算器623の出力に15を加算して概算シフト量を出力
する加算器624とからなる概算桁合わせ回路620
と、被除数aを概算シフト量の数だけ左シフトするシフ
タ610と、概算シフト量の数だけ左シフトした被除数
aを除数bで除算する除算器600とにより構成され
る。
【0052】すなわち、本実施の形態における整数除算
装置は、概算桁合わせ回路620において、リーディン
グゼロ回路621で被除数aのMSB(最上位桁)に続
く無効な0をカウントし、リーディングゼロ回路622
で除数bのMSB(最上位桁)に続く無効な0をカウン
トし、減算器623でリーディングゼロ回路621の出
力からリーディングゼロ回路622の出力を減算し、加
算器624で減算器623の出力に値15を加えた値を
概算のシフト量とし、この概算桁合わせ回路620の概
算で得られた最終的なシフト量でシフタ610により被
除数aをシフトしたビット位置から従来のように除算器
600で除算を行う。
【0053】以上説明したように、本発明の第5の実施
の形態によれば、概算桁合わせ回路620で、被除数a
と除数bの概算シフト量を求め、この概算桁合わせ回路
620の概算で得られた最終的なシフト量だけ被除数a
を左シフトし、左シフトしたビット位置から除数bを除
算することにより、従来方式に比べ、結果が得られるま
でのクロック数を減少させることができる。
【0054】本実施の形態における整数除算装置の概算
桁合わせ回路620は、概算精度は高いにも関わらず、
桁合わせ後のクロック数は従来の桁合わせ回路に比べて
同等か1回多くなるだけである。概算桁合わせ回路62
0は、従来のlog2 N(Nは語長)回の桁合わせでシ
フト量を求めていたのに比べ、概算桁合わせ回路620
によりわずか1クロックで求めることができ、語長にも
影響されずに少なくなる。回路規模も、被除数aのリー
ディングゼロ回路、除数bのリーディングゼロ回路、減
算器および加算器の追加のみであり、小規模な回路で実
現することができる。
【0055】例えば、16ビット語長の場合は、概算桁合
わせ回路620において、従来log2 16=4回の桁
合わせでシフト量を求めていたのに対し、わずか1クロ
ックで求めることができ、回路規模を増大させずに、整
数除算を高速に行うことができる。
【0056】(第6の実施の形態)本発明の実施の形態
における整数除算方法は、ソフトウェアプログラムによ
って実現することが可能であり、そのソフトウェアプロ
グラムをフロッピー(登録商標)ディスク等の記録媒体
に記録して移送することができる。記録媒体に記録した
ソフトウェアプログラムは独立した他のコンピュータ・
システムにより記録媒体から読み出して、本発明の実施
の形態を容易に実施することができる。
【0057】すなわち、コンピュータ・システムに接続
されたフロッピーディスク装置により、例えば、フロッ
ピーディスクのような記録媒体に対してソフトウェアプ
ログラムを記録し再生することができる。記録する場合
は、コンピュータ・システムのフロッピーディクス装置
よりソフトウェアプログラムをフロッピーディスクに記
録する。再生する場合は、フロッピーディスク装置によ
ってソフトウェアプログラムをフロッピーディスクから
読み出し、コンピュータ・システムに転送して実施する
ことができる。
【0058】記録媒体としては、フロッピーディスクの
他に、光ディスク、光磁気ディクス等を用いても同様に
行うことができる。また、記録媒体は、これらに限られ
ず、ICカード、ROMカセット等、プログラムを記録
できるものであれば、如何なるものでも同様に実施する
ことができる。
【0059】(第7の実施の形態)次に、図1のブロッ
ク図を参照して、本発明の第7の実施の形態における整
数除算装置について説明する。本実施の形態における整
数除算装置は本発明の実施の形態における整数除算装置
の全体構成を示すものである。本実施の形態における整
数除算装置は、被除数aおよび除数bのリーディングゼ
ロをカウントして被除数aのシフト量を求める桁合わせ
処理部と、求めたシフト量だけ被除数aを左シフトする
左シフタ101と、被除数aから除数bを減算したとき
に部分剰余と部分商とが同時に求められるよう除数bを
変換する除数変換部102と、被除数aから除数bを減
算する除算処理部103と、ビット処理数をクロック
(CLK)によりカウントするカウンタ104と、カウ
ント結果をデコードするデコーダ105と、除算処理部
103の演算結果を出力するセレクタ106とにより構
成される。すなわち、本実施の形態における整数除算装
置は、第1の実施の形態ないし第5の実施の形態におけ
る整数除算装置を実現するための構成を全て備えたもの
である。
【0060】次に、図1を参照して、本発明の第7の実
施の形態における整数除算装置の動作を説明する。ま
ず、桁合わせ処理部100は、被除数aおよび除数bの
ビットパターンを調べ除算処理における冗長な演算を削
減するためのシフト量を概算で求め、左シフタ101と
デコーダ105に伝える。左シフタ101は、求めたシ
フト量に基づき被除数aを左にシフトする。除数変換部
102は、除数bを事前に、例えば、16ビット左シフ
トして1を減算して変換する。除算処理部103は、左
シフタ101の出力から加工された被除数aを入力し、
除数変換部102の出力から加工された除数bを入力
し、被除数aを1ビットづつ左シフトしながら部分被除
数aから除数bを減算して、各桁の商を繰返し求める引
き戻し法による整数除算を行う。
【0061】また、カウンタ104はCLKに同期して
除算処理のビット数をカウントアップする。デコーダ1
05はカウント結果をデコードして所定のカウントにな
るとセレクタ106に信号を出力し、セレクタ106は
除算処理部103の演算結果を選択して出力し、剰余r
と商qとが求められる。
【0062】以上説明したように、本発明の第7の実施
の形態によれば、除数bを除数変換部102であらかじ
め変換することにより、除算処理部103におけるビッ
トあたりの除算処理量を減少させることができる。ま
た、桁合わせ処理部100において、被除数aと除数b
のリーディングゼロに基づき、概算で桁合わせのシフト
量を決定し、左シフタ101でこのシフト量だけ被除数
aを事前にシフトし、除算処理部103でシフト後のビ
ット位置から除算を行うことにより、除算の繰返し回数
を減少させることができる。以上のビットあたり処理量
の減少と、繰返し回数の減少とにより、高速に整数除算
を実現することができる。
【0063】
【発明の効果】本発明における整数除算方法および整数
除算装置は、上記のように構成され、特に、除算の繰返
し手順の前に除数変換手順を追加することにより、被除
数から除数を減算したときに、部分剰余と部分商とが同
時に求められ、1ビットあたりの除算処理量を減少し
て、高速に整数除算を行うことができる。
【0064】また、本発明における整数除算方法および
整数除算装置は、僅かな回路により、除算の繰返し手順
の前に被除数のMSB(最上位桁)に続く0からなる無
効なビット数に基づき、荒い概算で求めたシフト量によ
り被除数をシフトして、被除数と除数の桁合わせ処理を
行うことにより、回路を増大することなく、除算処理の
繰返し回数を減少して、高速に整数除算を行うことがで
きる。
【0065】また、本発明における整数除算方法および
整数除算装置は、僅かな回路により、除算の繰返し手順
の前に、被除数のMSB(最上位桁)に続く0からなる
無効なビット数と、除数のMSB(最上位桁)に続く0
からなる無効なビット数とに基づき概算で求めたシフト
量により被除数をシフトして、被除数と除数の桁合わせ
処理を実行することにより、回路を増大することなく、
除算処理の繰返し回数を減少して、高速に整数除算を行
うことができる。
【図面の簡単な説明】
【図1】本発明の実施の形態における整数除算装置の全
体構成を示すブロック図、
【図2】本発明の第1の実施の形態における整数除算方
法を示すフローチャート、
【図3】本発明の第2の実施の形態における整数除算方
法を示すフローチャート、
【図4】本発明の第3の実施の形態における整数除算方
法を示すフローチャート、
【図5】本発明の第4の実施の形態における整数除算装
置の構成を示すブロック図、
【図6】本発明の第5の実施の形態における整数除算装
置の構成を示すブロック図、
【図7】従来の整数除算装置の一例の構成を示すブロッ
ク図、
【図8】従来の整数除算方法の一例を示すフローチャー
ト、
【図9】従来の桁合わせ処理付き整数除算方法の一例を
示すフローチャート、
【図10】従来の桁合わせ処理付き整数除算方法におけ
るシフト量の決定方法の一例を示すフローチャート、
【図11】従来の桁合わせ処理付き整数除算方法の一例
を説明する説明図、
【図12】本発明の第1の実施の形態における整数除算
方法を説明する説明図、
【図13】本発明の第2の実施の形態における整数除算
方法の桁合わせ処理手順を説明する説明図、
【図14】本発明の第3の実施の形態における整数除算
方法の桁合わせ処理手順を説明する説明図。
【符号の説明】
100 桁合わせ処理部 101 左シフタ 102 除数変換部 103 除算処理部 S202、S303、S405 除数変換手順 S301 荒い概算桁合わせ処理手順 S401 概算桁合わせ処理手順1 S402 概算桁合わせ処理手順2 S403 概算桁合わせ処理手順3 S302、S404 シフト手順 520 荒い概算桁合わせ回路 620 概算桁合わせ回路 510、610、703 シフタ(シフト回路) 500、600 除算回路 623 減算器 624 加算器 521、621、622 リーディングゼロ回路(リー
ディングゼロカウント回路) 701 被除数レジスタ・商レジスタ 702 除数レジスタ 704 算術論理ユニット(ALU) 705 部分剰余レジスタ・部分商レジスタ 706 インバータ 707、710 セレクタ 708 カウンタ 709 デコーダ 711 剰余レジスタ・商レジスタ

Claims (7)

    【特許請求の範囲】
  1. 【請求項1】被除数から除数を減算したときに部分剰余
    と部分商とが同時に求めるべく除算処理前に前記除数を
    変換し、被除数を1ビットづつ左シフトしながら前記被
    除数から除数を繰返し減算して各桁の商を求めることを
    特徴とする整数除算方法。
  2. 【請求項2】被除数の最上位桁に続く0からなる無効ビ
    ット数をもとに荒い概算により前記被除数のシフト量を
    求め、求めた前記シフト量だけ前記被除数を左シフト
    し、左シフトしたビット位置から1ビットづつ左シフト
    しながら前記被除数から前記除数を繰返し減算すること
    を特徴とする請求項1記載の整数除算方法。
  3. 【請求項3】被除数の最上位桁に続く0からなる無効ビ
    ット数と除数の最上位桁に続く0からなる無効ビット数
    とをもとに概算により前記被除数の最終的なシフト量を
    求め、求めた最終的なシフト量だけ前記被除数を左シフ
    トし、左シフトしたビット位置から1ビットづつ左シフ
    トしながら前記被除数から前記除数を繰返し減算して各
    桁の商を求めることを特徴とする請求項1記載の整数除
    算方法。
  4. 【請求項4】入力した被除数の最上位桁に続く0からな
    る無効ビット数をもとに概算により前記被除数のシフト
    量を求める第1の桁合わせ回路と、求めた前記シフト量
    だけ前記被除数を左シフトするシフト回路と、左シフト
    したビット位置から1ビットづつ左シフトしながら前記
    被除数から前記除数を繰返し減算して各桁の商を求める
    除算回路とを備えることを特徴とする整数除算装置。
  5. 【請求項5】入力した被除数の最上位桁に続く0からな
    る無効ビット数と入力した除数の最上位桁に続く0から
    なる無効ビット数とをもとに概算により前記被除数のシ
    フト量を求める第2の桁合わせ回路と、求めた前記シフ
    ト量だけ前記被除数を左シフトするシフト回路と、左シ
    フトした前記ビット位置から1ビットづつ左シフトしな
    がら前記被除数から前記除数を繰返し減算して各桁の商
    を求める除算回路とを備えることを特徴とする整数除算
    装置。
  6. 【請求項6】入力した被除数の最上位桁に続く0からな
    る無効ビット数と入力した除数の最上位桁に続く0から
    なる無効ビット数とをもとに概算によりシフト量を算出
    する概算桁合わせ回路と、算出したシフト量だけ前記被
    除数を左シフトする左シフタと、被除数から除数を減算
    したときに部分剰余と部分商とが同時に求められるよう
    除算処理前に前記除数を変換する除数変換部と、左シフ
    トされた前記被除数を1ビットづつ左シフトしながら変
    換された前記除数を繰返し減算して各桁の商を求める除
    算処理部とを備えることを特徴とする整数除算装置。
  7. 【請求項7】請求項1ないし3のいずれかに記載の整数
    除算方法における各処理工程をコンピュータに実行させ
    るためのプログラムを記録したコンピュータ読み取り可
    能な記録媒体。
JP2000372389A 2000-12-07 2000-12-07 整数除算方法および整数除算装置 Pending JP2002175179A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2000372389A JP2002175179A (ja) 2000-12-07 2000-12-07 整数除算方法および整数除算装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2000372389A JP2002175179A (ja) 2000-12-07 2000-12-07 整数除算方法および整数除算装置

Publications (1)

Publication Number Publication Date
JP2002175179A true JP2002175179A (ja) 2002-06-21

Family

ID=18841944

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2000372389A Pending JP2002175179A (ja) 2000-12-07 2000-12-07 整数除算方法および整数除算装置

Country Status (1)

Country Link
JP (1) JP2002175179A (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005004755A (ja) * 2003-06-10 2005-01-06 Korea Advanced Inst Of Science & Technology 3次元コンピュータグラフィックスシステムの除算ユニット
JP2007241694A (ja) * 2006-03-09 2007-09-20 Sanyo Electric Co Ltd リコンフィギュラブル回路への演算マッピング方法、リコンフィギュラブル回路、及びデータフローグラフ
US9009209B2 (en) 2009-07-21 2015-04-14 Fujitsu Limited Processor, control method of processor, and computer readable storage medium storing processing program for division operation

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005004755A (ja) * 2003-06-10 2005-01-06 Korea Advanced Inst Of Science & Technology 3次元コンピュータグラフィックスシステムの除算ユニット
JP2007241694A (ja) * 2006-03-09 2007-09-20 Sanyo Electric Co Ltd リコンフィギュラブル回路への演算マッピング方法、リコンフィギュラブル回路、及びデータフローグラフ
JP4597075B2 (ja) * 2006-03-09 2010-12-15 三洋電機株式会社 リコンフィギュラブル回路への演算マッピング方法、リコンフィギュラブル回路、及びデータフローグラフ
US9009209B2 (en) 2009-07-21 2015-04-14 Fujitsu Limited Processor, control method of processor, and computer readable storage medium storing processing program for division operation

Similar Documents

Publication Publication Date Title
US6564239B2 (en) Computer method and apparatus for division and square root operations using signed digit
KR20080055985A (ko) 선택가능 준정밀도를 가진 부동―소수점 프로세서
US7188133B2 (en) Floating point number storage method and floating point arithmetic device
JP6407001B2 (ja) 浮動小数点数を整数に変換するための電子装置及びシステム及びその動作方法
US5023827A (en) Radix-16 divider using overlapped quotient bit selection and concurrent quotient rounding and correction
US5132925A (en) Radix-16 divider using overlapped quotient bit selection and concurrent quotient rounding and correction
Hormigo et al. Measuring improvement when using HUB formats to implement floating-point systems under round-to-nearest
JP3313560B2 (ja) 浮動小数点演算処理装置
JPH0573269A (ja) 加算器
JP4273071B2 (ja) 除算・開平演算器
JP2001222410A (ja) 除算器
JP3003467B2 (ja) 演算装置
US6233595B1 (en) Fast multiplication of floating point values and integer powers of two
Tsen et al. A combined decimal and binary floating-point multiplier
US5798952A (en) Leading bit anticipator
JP2002175179A (ja) 整数除算方法および整数除算装置
CN115268832A (zh) 浮点数取整的方法、装置以及电子设备
JP2018097864A (ja) リーディングゼロ予想
JP4439060B2 (ja) 浮動小数点加算器
US8185723B2 (en) Method and apparatus to extract integer and fractional components from floating-point data
RU2276805C2 (ru) Способ и устройство для выделения целой и дробных компонент из данных с плавающей точкой
JP4163967B2 (ja) 浮動小数点演算装置
JP3793505B2 (ja) 演算器及びそれを用いた電子回路装置
JP3257278B2 (ja) 冗長なシフト数予測とシフト誤り補正を用いた正規化装置
Natarajan et al. Arithmetic Operations and Circuits