JP5397061B2 - 演算処理装置、その制御方法および演算処理プログラム - Google Patents
演算処理装置、その制御方法および演算処理プログラム Download PDFInfo
- Publication number
- JP5397061B2 JP5397061B2 JP2009170258A JP2009170258A JP5397061B2 JP 5397061 B2 JP5397061 B2 JP 5397061B2 JP 2009170258 A JP2009170258 A JP 2009170258A JP 2009170258 A JP2009170258 A JP 2009170258A JP 5397061 B2 JP5397061 B2 JP 5397061B2
- Authority
- JP
- Japan
- Prior art keywords
- value
- count value
- dividend
- divisor
- correction
- 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.)
- Active
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)
- Executing Machine-Instructions (AREA)
Description
ループ処理を用いた除算処理手順は、一般的に、図25に示すように、前処理910、ループ処理920および後処理930の3つの処理に大別される。また、ループ処理920は、部分商算出処理921を含む。
LC=LZC_B−LZC_A+1 ・・・(1)
ループ処理920では、主として、1ビットの部分商を算出する部分商算出処理921が繰り返し実行される。部分商算出処理921では、例えば、被除数または中間剰余に対する除数の減算または加算(以下、“加減算”と呼ぶ)、その加減算結果の比較に基づく部分商、中間商および中間剰余の算出、ループカウント値の減算、中間剰余の左シフトなどが行われる。後処理930では、例えば、ループ処理920によって算出された中間商の補正が行われ、最終商が算出される。
〔第1の実施の形態〕
図1は、第1の実施の形態の演算処理装置の構成を示す図である。
CR=n−(LZC_B−LZC_A)%n−1 ・・・(2)
補正ループカウント値算出部16は、計数されたゼロカウント値LZC_A,LZC_Bと、補正値算出部15からの補正値CRとを基に、補正ループカウント値LC’を算出する。補正ループカウント値LC’は、次の式(2)によって算出される。
LC’=LC+CR
=LZC_B−LZC_A+{n−(LZC_B−LZC_A)%n}・・・(3)
被除数シフト部17は、絶対値化処理部11からの出力値を、被除数のゼロカウント値LZC_Aと補正値CRとを基にシフトする。例えば、被除数シフト部17は、絶対値化処理部11からの出力値を、ゼロカウント値LZC_Aだけ左シフトした後、補正値CRだけ右シフトする。なお、これらの左シフトおよび右シフトの処理順が入れ替えられてもよい。あるいは、被除数シフト部17は、絶対値化処理部11からの出力値を、(LZC_A−CR)だけ左シフトしてもよい。
図2は、第2の実施の形態の除算回路の構成を示す図である。
図2に示す除算回路2は、前処理回路100、除算ループ回路200および制御回路300を備える。前処理回路100および除算ループ回路200は、図1に示した前処理部10および除算ループ処理部20を、それぞれハードウェア回路によって実現した場合の一例である。すなわち、前処理回路100は、除算ループ回路200での処理に対する前処理を実行する。除算ループ回路200は、nビット幅の部分商を繰り返し算出することにより除算処理を実行する。制御回路300は、前処理回路100および除算ループ回路200の動作タイミングを制御する。また、制御回路300は、前処理回路100および除算ループ回路200のそれぞれの内部回路に対して、その動作を制御する各種制御信号を出力する。
前処理回路100は、絶対値化回路101,102、ゼロ拡張回路111,112、リーディング・ゼロ・カウント(LZC)回路121,122、左シフタ131,132、右シフタ133、補正値算出回路140およびループカウント値(LC)算出回路150を備えている。
ゼロ拡張回路111は、絶対値化された被除数Aのビット幅を上位側に対して(n−1)ビット分だけ拡張し、拡張したビットに0を設定する。ゼロ拡張回路112は、絶対値化された除数Bのビット幅を上位側に対して(n−1)ビット分だけ拡張し、拡張したビットに0を設定する。
図4は、絶対値化回路の内部構成例を示す図である。なお、絶対値化回路101,102はともに同じ構成で実現可能であるので、ここでは絶対値化回路101の構成例についてのみ説明する。
補正値算出回路140は、減算回路141〜143と剰余算出回路144とを備えている。減算回路141は、nの値から1を減算する。nの値は、接続される除算ループ回路200の仕様に応じてあらかじめ設定される。減算回路142は、LZC回路122から出力されたゼロカウント値LZC_Bから、LZC回路121から出力されたゼロカウント値LZC_Aを減算する。
LC算出回路150は、減算回路151と加算回路152とを備えている。減算回路151は、LZC回路122から出力されたゼロカウント値LZC_Bから、LZC回路121から出力されたゼロカウント値LZC_Aを減算する。なお、減算回路151は、例えば、補正値算出回路140の減算回路142と共通化してもよい。加算回路152は、補正値算出回路140から出力された補正値CRと、減算回路151からの出力値と、1とを加算する。その結果、加算回路152からは、式(3)に従って算出された補正ループカウント値LC’が出力される。
[ステップS11]絶対値化回路101は、入力された被除数Aを絶対値化する。また、絶対値化回路102は、入力された除数Bを絶対値化する。
[ステップS16]LC算出回路150は、LZC回路121,122からそれぞれ出力されたゼロカウント値LZC_A,LZC_Bと、補正値算出回路140から出力された補正値CRとを基に、式(3)に従って補正ループカウント値LC’を算出する。算出結果は、除算ループ回路200に出力される。
次に、図9は、除算ループ回路の内部構成例を示す図である。図9では例として、n=2,j=1,k=2であるRadix−4除算処理を、引き戻し法を用いて実行する回路の構成例を挙げる。なお、図9に示す除算ループ回路200の構成は、あくまで一例である。n=2,j=1,k=2であるRadix−4除算処理を行う他の回路構成を適用することも可能である。
[ステップS21]セレクタ201は、制御回路300からのセレクト信号に応じて、前処理回路100からの被除数A’を選択する。また、セレクタ241は、制御回路300からのセレクト信号に応じて、前処理回路100からの補正ループカウント値LC’を選択する。
なお、ステップS21,S22の処理順は逆であってもよい。
[ステップS23]減算回路242は、セレクタ241から出力された値からn、すなわち2を減算する。
[ステップS28]デコーダ226は、減算回路211,212のそれぞれからのキャリーアウトの組み合わせに応じて、部分商Dおよびセレクト信号SELを出力する。このとき、セレクタ225は、セレクト信号SELに応じた選択動作を行い、中間剰余Cを出力する。
図12では、従来の前処理により、除算ループ回路200に入力する被除数、除数およびループカウント値を求めた場合の除算処理の例を示している。被除数Aが“1000 0111”(10進数で“135”)、除数Bが“0011 1100”(10進数で“60”)の場合、従来の前処理では、式(1)によりループカウント値LCが“3”と求められる。そして、このループカウント値LCが、補正ループカウント値LC’の代わりに除算ループ回路200に入力される。また、従来の前処理では、被除数Aおよび除数Bは、それぞれのゼロカウント値分だけ左シフトされ、前処理後に除算ループ回路200に入力される被除数A’および除数B’は、それぞれ“1000 0111”,“1111 0000”となる。
図13において、図12の場合と同じ被除数A“1000 0111”および除数B“0011 1100”が本実施の形態の前処理回路100に入力されると、まず、絶対値化処理(図8のステップS11)により、被除数Aおよび除数Bが絶対値化された後、ゼロ拡張処理(図8のステップS12)により、絶対値化された被除数Aおよび除数Bのそれぞれの上位側が1ビット分拡張される。次に、ゼロ拡張された被除数および除数を基にゼロカウント値算出処理(ステップS13)が実行され、さらに補正値CRが算出される(ステップS14)。図13に示すように、絶対値化処理後の被除数および除数はそれぞれ“0 1000 0111”,“0 0011 1100”となり、補正値CRは“1”となる。なお、これらの被除数および除数に基づく従来のループカウント値LCは“3”となり、この値はn(=2)の倍数となっていない。
図14では、従来の前処理により、n=4の除算ループ回路に入力する被除数、除数およびループカウント値を求めた場合の除算処理の例を示している。被除数Aが“0011 0111 0001”(10進数で“881”)、除数Bが“0000 0011 1111”(10進数で“63”)の場合、従来の前処理では、式(1)によりループカウント値LCが“5”と求められる。そして、このループカウント値LCが除算ループ回路に入力される。また、従来の前処理では、被除数Aおよび除数Bは、それぞれのゼロカウント値分だけ左シフトされ、前処理後に除算ループ回路に入力される被除数A’および除数B’は、それぞれ“1101 1100 0100”,“1111 1100 0000”となる。
図15において、図14の場合と同じ被除数A“0011 0111 0001”および除数B“0000 0011 1111”が本実施の形態の前処理回路100に入力されると、まず、絶対値化処理(図8のステップS11)により、被除数Aおよび除数Bが絶対値化された後、ゼロ拡張処理(図8のステップS12)により、絶対値化された被除数Aおよび除数Bのそれぞれの上位側が3ビット分拡張される。次に、ゼロ拡張された被除数および除数を基にゼロカウント値算出処理(ステップS13)が実行され、さらに補正値CRが算出される(ステップS14)。図15に示すように、絶対値化処理後の被除数および除数はそれぞれ“000 0011 0111 0001”,“000 0000 0011 1111”となり、補正値CRは“3”となる。
図16は、第3の実施の形態の前処理回路の構成を示す図である。なお、図16では、図3に対応する構成要素には同じ符号を付して示している。
シフト値補正回路160は、減算回路161を備えている。減算回路161は、LZC回路121により算出されたゼロカウント値LZC_Aから、補正値算出回路140により算出された補正値CRを減算する。
[ステップS41]前処理回路100aのゼロ拡張回路111,112は、制御回路300からのタイミング制御信号に応じて、ビット幅を拡張した被除数Aおよび除数Bを内部のラッチ回路に取り込む。
[ステップS47]LC算出回路150は、LZC回路121,122からそれぞれ出力されたゼロカウント値LZC_A,LZC_Bと、補正値算出回路140から出力された補正値CRとを基に、式(3)に従って補正ループカウント値LC’を算出する。算出結果は、除算ループ回路200に出力される。
以上の前処理回路100aによれば、第2の実施の形態の前処理回路100と同様に被除数およびループカウント値が補正される。従って、前処理回路100aから出力された被除数A’、除数B’および補正ループカウント値LC’を除算ループ回路200に出力することで、被除数Aおよび除数Bの値に関係なく、正しい最終商を得ることが可能になる。なお、第2の実施の形態と同様に、除算ループ回路200としては、n=kとしてnビット部分商算出処理を繰り返す構成の回路を適用可能である。
図19は、第4の実施の形態の前処理回路の構成を示す図である。なお、図19では、図3および図16に対応する構成要素には同じ符号を付して示している。
補正値算出回路140は、LZC回路123から出力されたゼロカウント値LZC_Aと、ラッチ回路183にラッチされたゼロカウント値LZC_Bと、あらかじめ設定されたnの値とを基に、前述の式(2)に従って補正値CRを算出する。
制御回路300は、ラッチ回路311、加算回路312およびデコーダ313を備えている。制御回路300は、前処理回路100bおよび除算ループ回路200に対する制御状態を、例えば状態ST0〜ST3の4段階の状態として管理する。ラッチ回路311は、現在の制御状態を保持し、加算回路312は、ラッチ回路311が保持する制御状態を1段階ずつ進める。デコーダ313は、ラッチ回路311に保持された制御状態に応じて、セレクト信号SEL1,SEL2の出力値を変化させる。
制御状態は、状態ST0,ST1,ST2,ST3の順に遷移する。これらの制御状態のうち、状態ST0〜ST2は前処理での制御状態であり、状態ST3は除算ループ処理での制御状態である。
[ステップS51]制御回路300のラッチ回路311には、制御状態として状態ST0がセットされる。セレクタ171は、デコーダ313から出力されたセレクト信号SEL1に応じて、入力端子sを選択する。
[ステップS53]ゼロ拡張回路111は、制御回路300からのタイミング制御信号に応じて、絶対値化回路101により絶対値化された被除数Aを内部のラッチ回路に取り込む。また、ゼロ拡張回路112は、制御回路300からのタイミング制御信号に応じて、絶対値化回路102により絶対値化された除数Bを内部のラッチ回路に取り込む。
[ステップS57]左シフタ135は、ラッチ回路182からセレクタ172を通じて入力された除数を、LZC回路123からセレクタ174を通じて入力されたゼロカウント値LZC_Bの分だけ左シフトする。
[ステップS61]補正値算出回路140は、LZC回路123により算出されたゼロカウント値LZC_Aと、ラッチ回路183にラッチされたゼロカウント値LZC_Bと、nの値とを基に、補正値CRを算出する。
上記の第1の実施の形態の演算処理装置1や、第2〜第4の実施の形態の除算回路2が有する機能やその処理内容は、コンピュータなどの情報処理装置において、これらの機能の処理内容を記述したプログラムが実行されることにより実現することも可能である。以下の第5の実施の形態では、情報処理装置の例としてコンピュータを挙げるとともに、そのコンピュータでの処理手順の一例を示す。
図23に示すコンピュータ400は、CPU401、RAM(Random Access Memory)402、HDD(Hard Disk Drive)403、グラフィック処理部404、入力インタフェース(I/F)405、書き込み/読み取り部406および通信インタフェース(I/F)407を備えており、これらの各部はバス408によって相互に接続されている。
図24は、コンピュータにおける前処理手順の例を示すフローチャートである。この図24の処理は、例えば、HDD403などに記憶された所定のプログラムを、CPU401が実行することにより実現される。なお、図24中の変数Reg1〜Reg7は、例えば、RAM402やHDD403などに設けられた個別の記憶領域に格納される。
[ステップS102]CPU401は、変数Reg1を絶対値化し、変数Reg1に書き戻す。さらに、CPU401は、変数Reg1の上位ビットを(n−1)ビット拡張し、拡張したビットに0を代入して、変数Reg1に書き戻す。また、CPU401は、変数Reg2を絶対値化し、変数Reg2に書き戻す。さらに、CPU401は、変数Reg2の上位ビットを(n−1)ビット拡張し、拡張したビットに0を代入して、変数Reg2に書き戻す。
[ステップS109]CPU401は、“n−(Reg4−Reg3)%n−1”の演算を実行して補正値CRを算出し、算出結果を変数Reg5に代入する。
[ステップS111]CPU401は、“(Reg4−Reg3)+Reg5+1”の演算を実行して補正ループカウント値LC’を算出し、算出結果を変数Reg6に代入する。
以上の処理が終了すると、変数Reg1が被除数A’として、変数Reg2が除数B’として、変数Reg6が補正ループカウント値LC’として出力され、これらの値を基に除算ループ処理が実行される。
(付記1) nビット幅(nは1以上の整数)の部分商を繰り返し算出することにより、被除数を除数で除算する除算処理を実行する演算処理装置において、
前記被除数の絶対値の最上位桁からの0の個数である被除数ゼロカウント値を計数する被除数ゼロカウント値計数部と、
前記除数の絶対値の最上位桁からの0の個数である除数ゼロカウント値を計数する除数ゼロカウント値計数部と、
前記被除数ゼロカウント値と前記除数ゼロカウント値と前記nの値とに基づいて、ループカウント値の補正値を算出する補正値算出部と、
前記被除数ゼロカウント値と前記除数ゼロカウント値と前記補正値とに基づいて、補正ループカウント値を算出する補正ループカウント値算出部と、
前記被除数の絶対値を、前記被除数ゼロカウント値と前記補正値とに基づく桁数だけシフトする被除数シフト部と、
前記除数の絶対値を、前記除数ゼロカウント値に基づいてシフトする除数シフト部と、
前記被除数シフト部からの出力値と前記除数シフト部からの出力値と前記補正ループカウント値とに基づいて、除算演算を実行する除算ループ処理部と、
を有することを特徴とする演算処理装置。
さらに、
前記被除数の絶対値と前記除数の絶対値のいずれか一方を前記ゼロカウント値計数部に対して選択的に入力する計数対象選択部と、
前記計数対象選択部の選択動作を制御する制御部と、
を有することを特徴とする付記1〜3のいずれか1つに記載の演算処理装置。
さらに、
前記ゼロカウント値計数部により算出された前記被除数ゼロカウント値から前記補正値を減算する減算部と、
前記ゼロカウント値計数部からの出力値と前記減算部からの出力値のいずれか一方を、前記シフト部でのシフト量として前記シフト部に対して選択的に入力するシフト量選択部と、
前記被除数の絶対値と前記除数の絶対値のいずれか一方を、前記シフト部でのシフト対象として前記シフト部に選択的に入力するシフト対象選択部と、
を有し、
前記制御部は、前記計数対象選択部、前記シフト量選択部および前記シフト対象選択部の選択動作を同期制御することを特徴とする付記4記載の演算処理装置。
前記計数対象選択部、前記シフト量選択部および前記シフト対象選択部に、前記除数の絶対値、前記ゼロカウント値計数部からの出力値および前記除数の絶対値をそれぞれ選択させて、前記ゼロカウント値計数部に前記除数ゼロカウント値を算出させ、前記シフト部に前記除数の絶対値をシフトさせ、
次に、前記計数対象選択部、前記シフト量選択部および前記シフト対象選択部に、前記被除数の絶対値、前記減算部からの出力値および前記被除数の絶対値をそれぞれ選択させて、前記ゼロカウント値計数部に前記被除数ゼロカウント値を算出させ、前記シフト部に前記被除数の絶対値をシフトさせる、
ことを特徴とする付記5記載の演算処理装置。
前記被除数ゼロカウント値計数部および前記除数ゼロカウント値計数部は、前記被除数拡張部からの出力値および前記除数拡張部からの出力値を基にそれぞれ前記被除数ゼロカウント値および前記除数ゼロカウント値を計数し、
前記被除数シフト部および前記除数シフト部は、前記被除数拡張部からの出力値および前記除数拡張部からの出力値をそれぞれシフトする、
ことを特徴とする付記1〜8のいずれか1つに記載の演算処理装置。
前記被除数シフト部は、前記被除数の絶対値を、前記減算部による減算結果の値だけ左シフトすることを特徴とする付記1〜3,7,8のいずれか1つに記載の演算処理装置。
前記被除数の絶対値を、前記被除数ゼロカウント値だけ左シフトする左シフト部と、
前記左シフト部からの出力値を、前記補正値だけ右シフトする右シフト部と、
を有することを特徴とする付記1〜3,7,8のいずれか1つに記載の演算処理装置。
前記演算処理装置が有する被除数ゼロカウント値計数部が、前記被除数の絶対値の最上位桁からの0の個数である被除数ゼロカウント値を計数し、
前記演算処理装置が有する除数ゼロカウント値計数部が、前記除数の絶対値の最上位桁からの0の個数である除数ゼロカウント値を計数し、
前記演算処理装置が有する補正値算出部が、前記被除数ゼロカウント値と前記除数ゼロカウント値と前記nの値とに基づいて、ループカウント値の補正値を算出し、
前記演算処理装置が有する補正ループカウント値算出部が、前記被除数ゼロカウント値と前記除数ゼロカウント値と前記補正値とに基づいて、補正ループカウント値を算出し、
前記演算処理装置が有する被除数シフト部が、前記被除数の絶対値を、前記被除数ゼロカウント値と前記補正値とに基づく桁数だけシフトし、
前記演算処理装置が有する除数シフト部が、前記除数の絶対値を、前記除数ゼロカウント値に基づいてシフトし、
前記演算処理装置が有する除算ループ処理部が、前記被除数シフト部からの出力値と前記除数シフト部からの出力値と前記補正ループカウント値とに基づいて、除算演算を実行する、
ことを特徴とする演算処理装置の制御方法。
前記演算処理プログラムを実行する演算処理装置を、
前記被除数の絶対値の最上位桁からの0の個数である被除数ゼロカウント値を計数する被除数ゼロカウント値計数手段、
前記除数の絶対値の最上位桁からの0の個数である除数ゼロカウント値を計数する除数ゼロカウント値手段、
前記被除数ゼロカウント値と前記除数ゼロカウント値と前記nの値とに基づいて、ループカウント値の補正値を算出する補正値算出手段、
前記被除数ゼロカウント値と前記除数ゼロカウント値と前記補正値とに基づいて、補正ループカウント値を算出する補正ループカウント値算出手段、
前記被除数の絶対値を、前記被除数ゼロカウント値と前記補正値とに基づく桁数だけシフトする被除数シフト手段、
前記除数の絶対値を、前記除数ゼロカウント値に基づいてシフトする除数シフト部と、
前記被除数シフト部からの出力値と前記除数シフト部からの出力値と前記補正ループカウント値とに基づいて、除算演算を実行する除算ループ処理手段、
として機能させることを特徴とする演算処理プログラム。
10 前処理部
11,12 絶対値化処理部
13 被除数ゼロカウント値計数部
14 除数ゼロカウント値計数部
15 補正値算出部
16 補正ループカウント値算出部
17 被除数シフト部
18 除数シフト部
20 除算ループ処理部
Claims (10)
- nビット幅(nは1以上の整数)の部分商を繰り返し算出することにより、被除数を除数で除算する除算処理を実行する演算処理装置において、
前記被除数の絶対値の最上位桁からの0の個数である被除数ゼロカウント値を計数する被除数ゼロカウント値計数部と、
前記除数の絶対値の最上位桁からの0の個数である除数ゼロカウント値を計数する除数ゼロカウント値計数部と、
前記被除数ゼロカウント値と前記除数ゼロカウント値と前記nの値とに基づいて、ループカウント値の補正値を算出する補正値算出部と、
前記被除数ゼロカウント値と前記除数ゼロカウント値と前記補正値とに基づいて、補正ループカウント値を算出する補正ループカウント値算出部と、
前記被除数の絶対値を、前記被除数ゼロカウント値と前記補正値とに基づく桁数だけシフトする被除数シフト部と、
前記除数の絶対値を、前記除数ゼロカウント値に基づいてシフトする除数シフト部と、
前記被除数シフト部からの出力値と前記除数シフト部からの出力値と前記補正ループカウント値とに基づいて、除算演算を実行する除算ループ処理部と、
を有することを特徴とする演算処理装置。 - 前記補正値算出部は、前記除数ゼロカウント値から前記被除数ゼロカウント値を減算した値を前記nの値で除算した剰余を、前記nの値から減算し、その減算値からさらに1を減算した値を、前記補正値とすることを特徴とする請求項1記載の演算処理装置。
- 前記補正ループカウント値算出部は、前記除数ゼロカウント値から前記被除数ゼロカウント値を減算した値に1を加算することで求められる前記ループカウント値に対して、さらに前記補正値を加算した値を、前記補正ループカウント値とすることを特徴とする請求項1または2記載の演算処理装置。
- 前記被除数ゼロカウント値計数部と前記除数ゼロカウント値計数部は、入力された値の最上位桁からの0の個数を計数する共通のゼロカウント値計数部として設けられ、
さらに、
前記被除数の絶対値と前記除数の絶対値のいずれか一方を前記ゼロカウント値計数部に対して選択的に入力する計数対象選択部と、
前記計数対象選択部の選択動作を制御する制御部と、
を有することを特徴とする請求項1〜3のいずれか1つに記載の演算処理装置。 - nビット幅(nは1以上の整数)の部分商を繰り返し算出することにより、被除数を除数で除算する除算処理を実行する演算処理装置の制御方法において、
前記演算処理装置が有する被除数ゼロカウント値計数部が、前記被除数拡張部の最上位桁からの0の個数である被除数ゼロカウント値を計数し、
前記演算処理装置が有する除数ゼロカウント値計数部が、前記除数拡張部の最上位桁からの0の個数である除数ゼロカウント値を計数し、
前記演算処理装置が有する補正値算出部が、前記被除数ゼロカウント値と前記除数ゼロカウント値と前記nの値とに基づいて、ループカウント値の補正値を算出し、
前記演算処理装置が有する補正ループカウント値算出部が、前記被除数ゼロカウント値と前記除数ゼロカウント値と前記補正値とに基づいて、補正ループカウント値を算出し、
前記演算処理装置が有する被除数シフト部が、前記被除数の絶対値を、前記被除数ゼロカウント値と前記補正値とに基づく桁数だけシフトし、
前記演算処理装置が有する除数シフト部が、前記除数の絶対値を、前記除数ゼロカウント値に基づいてシフトし、
前記演算処理装置が有する除算ループ処理部が、前記被除数シフト部からの出力値と前記除数シフト部からの出力値と前記補正ループカウント値とに基づいて、除算演算を実行する、
ことを特徴とする演算処理装置の制御方法。 - 前記補正値算出部は、前記除数ゼロカウント値から前記被除数ゼロカウント値を減算した値を前記nの値で除算した剰余を、前記nの値から減算し、その減算値からさらに1を減算した値を、前記補正値とすることを特徴とする請求項5記載の演算処理装置の制御方法。
- 前記補正ループカウント値算出部は、前記除数ゼロカウント値から前記被除数ゼロカウント値を減算した値に1を加算することで求められる前記ループカウント値に対して、さらに前記補正値を加算した値を、前記補正ループカウント値とすることを特徴とする請求項5または6記載の演算処理装置の制御方法。
- nビット幅(nは1以上の整数)の部分商を繰り返し算出することにより、被除数を除数で除算する除算処理を実行する演算処理プログラムにおいて、
前記演算処理プログラムを実行する演算処理装置を、
前記被除数の絶対値の最上位桁からの0の個数である被除数ゼロカウント値を計数する被除数ゼロカウント値計数手段、
前記除数の絶対値の最上位桁からの0の個数である除数ゼロカウント値を計数する除数ゼロカウント値手段、
前記被除数ゼロカウント値と前記除数ゼロカウント値と前記nの値とに基づいて、ループカウント値の補正値を算出する補正値算出手段、
前記被除数ゼロカウント値と前記除数ゼロカウント値と前記補正値とに基づいて、補正ループカウント値を算出する補正ループカウント値算出手段、
前記被除数の絶対値を、前記被除数ゼロカウント値と前記補正値とに基づく桁数だけシフトする被除数シフト手段、
前記除数の絶対値を、前記除数ゼロカウント値に基づいてシフトする除数シフト部と、
前記被除数シフト部からの出力値と前記除数シフト部からの出力値と前記補正ループカウント値とに基づいて、除算演算を実行する除算ループ処理手段、
として機能させることを特徴とする演算処理プログラム。 - 前記補正値算出手段は、前記除数ゼロカウント値から前記被除数ゼロカウント値を減算した値を前記nの値で除算した剰余を、前記nの値から減算し、その減算値からさらに1を減算した値を、前記補正値とすることを特徴とする請求項8記載の演算処理プログラム。
- 前記補正ループカウント値算出手段は、前記除数ゼロカウント値から前記被除数ゼロカウント値を減算した値に1を加算することで求められる前記ループカウント値に対して、さらに前記補正値を加算した値を、前記補正ループカウント値とすることを特徴とする請求項8または9記載の演算処理プログラム。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2009170258A JP5397061B2 (ja) | 2009-07-21 | 2009-07-21 | 演算処理装置、その制御方法および演算処理プログラム |
US12/836,061 US9009209B2 (en) | 2009-07-21 | 2010-07-14 | Processor, control method of processor, and computer readable storage medium storing processing program for division operation |
EP20100170200 EP2280340B1 (en) | 2009-07-21 | 2010-07-20 | Processor, control method of processor, and computer readable storage medium storing processing program |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2009170258A JP5397061B2 (ja) | 2009-07-21 | 2009-07-21 | 演算処理装置、その制御方法および演算処理プログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2011028312A JP2011028312A (ja) | 2011-02-10 |
JP5397061B2 true JP5397061B2 (ja) | 2014-01-22 |
Family
ID=43086817
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2009170258A Active JP5397061B2 (ja) | 2009-07-21 | 2009-07-21 | 演算処理装置、その制御方法および演算処理プログラム |
Country Status (3)
Country | Link |
---|---|
US (1) | US9009209B2 (ja) |
EP (1) | EP2280340B1 (ja) |
JP (1) | JP5397061B2 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10459689B2 (en) | 2014-06-13 | 2019-10-29 | International Business Machines Corporation | Calculation of a number of iterations |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5966763B2 (ja) * | 2012-08-22 | 2016-08-10 | 富士通株式会社 | 除算装置及び除算方法 |
US9348796B2 (en) | 2013-09-19 | 2016-05-24 | International Business Machines Corporation | Arithmetic operation in a data processing system |
CN104731551B (zh) * | 2013-12-23 | 2018-02-16 | 浙江大华技术股份有限公司 | 基于fpga进行除法操作的方法及装置 |
US20160034256A1 (en) * | 2014-08-01 | 2016-02-04 | Imagination Technologies, Limited | Fast integer division |
Family Cites Families (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS53112627A (en) * | 1977-03-14 | 1978-10-02 | Toshiba Corp | Division control system |
US4760550A (en) * | 1986-09-11 | 1988-07-26 | Amdahl Corporation | Saving cycles in floating point division |
JP2502836B2 (ja) * | 1991-03-19 | 1996-05-29 | 富士通株式会社 | 除算回路の前処理装置 |
JPH0567217A (ja) * | 1991-09-06 | 1993-03-19 | Nec Corp | 演算装置 |
US5644524A (en) * | 1993-11-30 | 1997-07-01 | Texas Instruments Incorporated | Iterative division apparatus, system and method employing left most one's detection and left most one's detection with exclusive or |
US5493523A (en) * | 1993-12-15 | 1996-02-20 | Silicon Graphics, Inc. | Mechanism and method for integer divide involving pre-alignment of the divisor relative to the dividend |
US5576982A (en) * | 1994-10-17 | 1996-11-19 | Unisys Corporation | Fast significant bit calculator and its application to integer multiplication and division |
US5825681A (en) * | 1996-01-24 | 1998-10-20 | Alliance Semiconductor Corporation | Divider/multiplier circuit having high precision mode |
US5805489A (en) * | 1996-05-07 | 1998-09-08 | Lucent Technologies Inc. | Digital microprocessor device having variable-delay division hardware |
JP3544821B2 (ja) * | 1997-04-07 | 2004-07-21 | 株式会社東芝 | 除算回路 |
US6751645B1 (en) * | 1999-02-17 | 2004-06-15 | Elbrus International Limited | Methods and apparatus for performing pipelined SRT division |
JP2000305752A (ja) * | 1999-04-16 | 2000-11-02 | Fujitsu Ltd | 除算器 |
JP2002175179A (ja) | 2000-12-07 | 2002-06-21 | Matsushita Electric Ind Co Ltd | 整数除算方法および整数除算装置 |
US20040249877A1 (en) * | 2003-06-05 | 2004-12-09 | International Business Machines Corporation | Fast integer division with minimum number of iterations in substraction-based hardware divide processor |
US20060129624A1 (en) * | 2004-12-09 | 2006-06-15 | Abdallah Mohammad A | Method and apparatus for performing a divide instruction |
US7539720B2 (en) * | 2004-12-15 | 2009-05-26 | Sun Microsystems, Inc. | Low latency integer divider and integration with floating point divider and method |
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 |
US7873687B2 (en) * | 2005-07-25 | 2011-01-18 | International Business Machines Corporation | Method for calculating a result of a division with a floating point unit with fused multiply-add |
US7584237B1 (en) * | 2005-10-11 | 2009-09-01 | Advanced Micro Devices, Inc. | Fast hardware divider |
JP4232838B2 (ja) * | 2007-03-29 | 2009-03-04 | 日本電気株式会社 | 再構成可能なsimd型プロセッサ |
US8060551B2 (en) * | 2007-12-30 | 2011-11-15 | Agere Systems Inc. | Method and apparatus for integer division |
US8402078B2 (en) * | 2008-02-26 | 2013-03-19 | International Business Machines Corporation | Method, system and computer program product for determining required precision in fixed-point divide operations |
US8452831B2 (en) * | 2009-03-31 | 2013-05-28 | Oracle America, Inc. | Apparatus and method for implementing hardware support for denormalized operands for floating-point divide operations |
-
2009
- 2009-07-21 JP JP2009170258A patent/JP5397061B2/ja active Active
-
2010
- 2010-07-14 US US12/836,061 patent/US9009209B2/en active Active
- 2010-07-20 EP EP20100170200 patent/EP2280340B1/en active Active
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10459689B2 (en) | 2014-06-13 | 2019-10-29 | International Business Machines Corporation | Calculation of a number of iterations |
Also Published As
Publication number | Publication date |
---|---|
US9009209B2 (en) | 2015-04-14 |
US20110022646A1 (en) | 2011-01-27 |
JP2011028312A (ja) | 2011-02-10 |
EP2280340B1 (en) | 2012-06-06 |
EP2280340A1 (en) | 2011-02-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7805478B2 (en) | Montgomery modular multiplier | |
JP5397061B2 (ja) | 演算処理装置、その制御方法および演算処理プログラム | |
JP2835153B2 (ja) | 高基数除算器 | |
US9047119B2 (en) | Circular floating-point number generator and a circular floating-point number adder | |
JP2502836B2 (ja) | 除算回路の前処理装置 | |
JP3003467B2 (ja) | 演算装置 | |
KR20060067874A (ko) | 제산 및 제곱근 연산 유닛 | |
JP2012141952A (ja) | 除算回路及び除算方法 | |
JP5175983B2 (ja) | 演算装置 | |
JPH07234778A (ja) | 演算回路 | |
US5206827A (en) | Iterative high radix divider decoding the upper bits of a divisor and dividend | |
US10838718B2 (en) | Processing device, arithmetic unit, and control method of processing device | |
JP3823107B2 (ja) | 有限体での基底変換方法及び基底変換装置 | |
CN214409954U (zh) | 一种ssd主控芯片中乘法运算电路 | |
CN115079997A (zh) | 对数执行硬件高效无偏舍入的方法 | |
US6109777A (en) | Division with limited carry-propagation in quotient accumulation | |
US20050010632A1 (en) | Digital signal processor based on jumping floating-point arithmetic | |
JP3851024B2 (ja) | 乗算器 | |
JPH0831024B2 (ja) | 演算プロセッサ | |
JP3638218B2 (ja) | シフト機能付きalu命令を持つマイクロプロセッサ | |
JP2000010763A (ja) | 除算回路 | |
JP2864598B2 (ja) | ディジタル演算回路 | |
CN114895868A (zh) | 基于两位商计算的除法运算单元及除法器 | |
CN118915996A (zh) | 取模操作的执行方法及处理器 | |
CN112732219A (zh) | 一种ssd主控芯片中乘法运算电路和方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20120405 |
|
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: 20130924 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20131007 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 5397061 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 Free format text: JAPANESE INTERMEDIATE CODE: R150 |