(57)【要約】【課題】要求される演算精度を有する除数の逆数をより高速に得ることができる。【解決手段】半導体装置は、除数の絶対値のサンプル値と当該サンプル値の逆数とを関連付けたテーブル、および入力された除数の絶対値に基づいて、逆数の近似値を算出する。サンプル値と、当該サンプル値に隣接するサンプル値との間隔は、当該サンプル値が小さいほど小さい。半導体装置は、ニュートンラフソン法の反復計算の第１の回数と、簡易演算法の反復計算の第２の回数との比較結果に基づいて、ニュートンラフソン法の反復計算を第１の回数繰り返す第１演算方式および簡易演算法の反復計算を第２の回数繰り返す第２演算方式のうち演算レイテンシが小さい演算方式を選択する。半導体装置は、選択された演算方式により算出された逆数を、入力された被除数に乗じて除算を実行する。【選択図】図１
2020077038.tif 000002
【特許請求の範囲】
【請求項１】
除数の絶対値のサンプル値と当該サンプル値の逆数とを関連付けた第１テーブル、および入力された除数の絶対値に基づいて、前記入力された除数の絶対値の逆数の近似値を算出する近似値算出回路を備え、
複数の前記サンプル値の各々について、当該サンプル値と、当該サンプル値に隣接するサンプル値との間隔は、当該サンプル値が小さいほど小さく、
前記入力された除数の絶対値と前記近似値との誤差を算出する誤差算出回路と、
要求される演算精度と前記算出された誤差とに基づいて、ニュートンラフソン法の反復計算の第１の回数を算出する第１算出回路と、
前記要求される演算精度と前記算出された誤差とに基づいて、前記ニュートンラフソン法の反復計算の式を変形して当該反復計算に用いられる乗算の一部を省略した簡易演算法の反復計算の第２の回数を算出する第２算出回路と、
前記ニュートンラフソン法の反復計算を前記第１の回数繰り返す第１演算方式により、前記入力された除数の絶対値の逆数を算出する第１逆数演算回路と、
前記簡易演算法の反復計算を前記第２の回数繰り返す第２演算方式により、前記入力された除数の絶対値の逆数を算出する第２逆数演算回路と、
前記第１および第２の回数の比較結果に基づいて、前記第１および第２演算方式のうち演算レイテンシが小さい演算方式を選択する選択回路と、
前記選択された演算方式により算出された逆数を、入力された被除数に乗じて除算を実行する演算器とをさらに備える、半導体装置。
【請求項２】
前記第１算出回路は、前記要求される演算精度と前記誤差算出回路により算出された誤差とに基づいて、複数の演算精度の各々について、前記誤差のサンプル値と前記ニュートンラフソン法の反復計算の回数との関係を示す第２テーブルを参照することにより前記第１の回数を算出する、請求項１に記載の半導体装置。
【請求項３】
前記第２算出回路は、前記要求される演算精度と前記誤差算出回路により算出された誤差とに基づいて、複数の演算精度の各々について、前記誤差のサンプル値と前記簡易演算法の反復計算の回数との関係を示す第３テーブルを参照することにより前記第２の回数を算出する、請求項１に記載の半導体装置。
【請求項４】
前記入力された除数の絶対値をｄとし、前記ニュートンラフソン法の反復計算をｋ回繰り返して得られる前記入力された除数の絶対値の逆数をＸｋとしたとき、前記第１逆数演算回路は、下記［数１］を用いて前記ニュートンラフソン法の反復計算を前記第１の回数繰り返すことにより前記入力された除数の絶対値の逆数を算出する、
【数１】
2020077038.tif 000009
請求項１に記載の半導体装置。
【請求項５】
前記入力された除数の絶対値をｄとし、前記簡易演算法の反復計算をｋ回繰り返して得られる前記入力された除数の絶対値の逆数をＸｋとしたとき、前記第２逆数演算回路は、下記［数２］を用いて前記簡易演算法の反復計算を前記第２の回数繰り返すことにより前記入力された除数の絶対値の逆数を算出する、
【数２】
2020077038.tif 000010
請求項２に記載の半導体装置。
【請求項６】
前記選択回路は、前記第１の回数が前記第２の回数の１／２以下の場合には前記第１演算方式を選択し、前記第１の回数が前記第２の回数の１／２よりも大きい場合には前記第２演算方式を選択する、請求項１に記載の半導体装置。
【請求項７】
前記第１逆数演算回路および前記第２逆数演算回路は、１つの演算回路として構成されており、
前記第１演算方式に用いられる乗算器および加算器は、前記第２演算方式に用いられる乗算器および加算器と共有化されている、請求項１に記載の半導体装置。
【請求項８】
前記１つの演算回路は、前記選択回路により選択された演算方式により前記入力された除数の絶対値の逆数を算出する、請求項７に記載の半導体装置。
【請求項９】
前記近似値算出回路、前記誤差算出回路、前記第１逆数演算回路、および前記第２逆数演算回路は、１つの演算回路として構成されている、請求項１に記載の半導体装置。
【請求項１０】
前記近似値算出回路は、前記第１テーブルを有する、請求項１に記載の半導体装置。
【請求項１１】
前記第１算出回路は、前記要求される演算精度に対応する、前記誤差の第１サンプル値と前記ニュートンラフソン法の反復計算の回数との関係を示す第２テーブルを有し、
前記第１算出回路は、前記要求される演算精度と前記誤差算出回路により算出された誤差とに基づいて、前記第２テーブルを参照することにより前記第１の回数を算出する、請求項１０に記載の半導体装置。
【請求項１２】
前記第２算出回路は、前記要求される演算精度に対応する、前記誤差の第２サンプル値と前記簡易演算法の反復計算の回数との関係を示す第３テーブルを有し、
前記第２算出回路は、前記要求される演算精度と前記誤差算出回路により算出された誤差とに基づいて、前記第３テーブルを参照することにより前記第２の回数を算出する、請求項１１に記載の半導体装置。
【請求項１３】
プロセッサと、
前記プロセッサの指示により動作する制御回路とを備え、
前記制御回路は、除算回路と、前記除算回路に除数を入力する第１演算回路と、前記除算回路に被除数を入力する第２演算回路とを含み、
前記除算回路は、除数の絶対値のサンプル値と当該サンプル値の逆数とを関連付けた第１テーブル、および入力された除数の絶対値に基づいて、前記入力された除数の絶対値の逆数の近似値を算出する近似値算出回路を含み、
複数の前記サンプル値の各々について、当該サンプル値と、当該サンプル値に隣接するサンプル値との間隔は、当該サンプル値が小さいほど小さく、
前記除算回路は、
前記入力された除数の絶対値と前記近似値との誤差を算出する誤差算出回路と、
要求される演算精度と前記算出された誤差とに基づいて、ニュートンラフソン法の反復計算の第１の回数を算出する第１算出回路と、
前記要求される演算精度と前記算出された誤差とに基づいて、前記ニュートンラフソン法の反復計算の式を変形して当該反復計算に用いられる乗算の一部を省略した簡易演算法の反復計算の第２の回数を算出する第２算出回路と、
前記ニュートンラフソン法の反復計算を前記第１の回数繰り返す第１演算方式により、前記入力された除数の絶対値の逆数を算出する第１逆数演算回路と、
前記簡易演算法の反復計算を前記第２の回数繰り返す第２演算方式により、前記入力された除数の絶対値の逆数を算出する第２逆数演算回路と、
前記第１および第２の回数の比較結果に基づいて、前記第１および第２演算方式のうち演算レイテンシが小さい演算方式を選択する選択回路と、
前記選択された演算方式により算出された逆数を、入力された被除数に乗じて除算を実行する演算器とをさらに含む、半導体装置。
【請求項１４】
コンピュータにより実行される除算方法であって、
除数の絶対値のサンプル値と当該サンプル値の逆数とを関連付けた第１テーブル、および入力された除数の絶対値に基づいて、前記入力された除数の絶対値の逆数の近似値を算出するステップを含み、
複数の前記サンプル値の各々について、当該サンプル値と、当該サンプル値に隣接するサンプル値との間隔は、当該サンプル値が小さいほど小さく、
前記除算方法は、
前記入力された除数の絶対値と前記近似値との誤差を算出するステップと、
要求される演算精度と前記算出された誤差とに基づいて、ニュートンラフソン法の反復計算の第１の回数を算出するステップと、
前記要求される演算精度と前記算出された誤差とに基づいて、前記ニュートンラフソン法の反復計算の式を変形して当該反復計算に用いられる乗算の一部を省略した簡易演算法の反復計算の第２の回数を算出するステップと、
前記第１および第２の回数の比較結果に基づいて、前記ニュートンラフソン法の反復計算を前記第１の回数繰り返す第１演算方式、および前記簡易演算法の反復計算を前記第２の回数繰り返す第２演算方式のうち演算レイテンシが小さい演算方式を選択するステップと、
前記選択された演算方式により算出された、前記入力された除数の絶対値の逆数を、入力された被除数に乗じて除算を実行するステップとを含む、除算方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、半導体装置、および除算方法に関し、例えば、除数の逆数を被除数に乗じて除算を行なう半導体装置、および除算方法に関する。
【背景技術】
【０００２】
一般に、計算機やコンピュータで行われる四則演算のうち、除算は最も時間を要する演算である。例えば、代表的な乗算型除算として、ニュートンラフソン法が知られている。ニュートンラフソン法は、与えられた除数の逆数の近似値を得て、規定の演算式の反復計算を行なうことにより所定精度の逆数を得て、これを被除数に乗じて除算を実現する方法である。
【０００３】
例えば、特許第４３１３４６７号公報（特許文献１）は、小容量メモリを用いた除算方式を開示している。この除算方式では、与えられた除数の仮数部を表現するビット配列をＭＳＢ（most  significant  bit）の１ビットを除き３つのビットフィールドに分ける。さらに、この除算方式では、そのうちＭＳＢ側のビットフィールドの内容をインデックスとしてメモリから２つの値を引きだし、これらと中間のビットフィールドの内容とを用いて一次近似を行なってニュートンラフソン法の反復計算の初期値を計算する。また、特許文献１では、ニュートンラフソン法の反復計算の式を変形して差分を分離し、この差分の演算に必要な情報が少ないことを利用して、反復計算に用いられる乗算回路の一部を省略している。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特許第４３１３４６７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
特許文献１では、除数の仮数部のＭＳＢのビットフィールドをメモリのインデックスとして用いているため、メモリに格納されるサンプル値の間隔が均等になる。そのため、除数の値が小さい場合には逆数の近似値の誤差が大きくなる。そして、このように逆数の初期値の誤差が大きい場合には、ニュートンラフソン法を変形した式では解の収束率が悪いため、必要とする演算精度の解を得るために反復計算を繰り返す回数が多くなり、その結果、演算レイテンシが大きくなるという問題がある。
【０００６】
その他の課題と新規な特徴は、本明細書の記述および添付図面から明らかになるであろう。
【課題を解決するための手段】
【０００７】
一実施の形態に従う半導体装置は、除数の絶対値のサンプル値と当該サンプル値の逆数とを関連付けた第１テーブル、および入力された除数の絶対値に基づいて、入力された除数の絶対値の逆数の近似値を算出する。複数のサンプル値の各々について、当該サンプル値と、当該サンプル値に隣接するサンプル値との間隔は、当該サンプル値が小さいほど小さい。半導体装置は、要求される演算精度と、入力された除数の絶対値と近似値との誤差とに基づいて、ニュートンラフソン法の反復計算の第１の回数を算出し、当該演算精度と当該算出された誤差とに基づいて、簡易演算法の反復計算の第２の回数を算出する。半導体装置は、第１および第２の回数の比較結果に基づいて、ニュートンラフソン法の反復計算を第１の回数繰り返す第１演算方式および簡易演算法の反復計算を第２の回数繰り返す第２演算方式のうち演算レイテンシが小さい演算方式を選択する。半導体装置は、選択された演算方式により算出された逆数を、入力された被除数に乗じて除算を実行する。
【０００８】
一実施の形態に従う半導体装置は、プロセッサと、プロセッサの指示により動作する制御回路とを備える。制御回路は、除算回路と、除算回路に除数を入力する第１演算回路と、除算回路に被除数を入力する第２演算回路とを含む。除算回路は、除数の絶対値のサンプル値と当該サンプル値の逆数とを関連付けた第１テーブル、および入力された除数の絶対値に基づいて、入力された除数の絶対値の逆数の近似値を算出する。複数のサンプル値の各々について、当該サンプル値と、当該サンプル値に隣接するサンプル値との間隔は、当該サンプル値が小さいほど小さい。除算回路は、要求される演算精度と、入力された除数の絶対値と近似値との誤差とに基づいて、ニュートンラフソン法の反復計算の第１の回数を算出し、当該演算精度と当該算出された誤差とに基づいて、簡易演算法の反復計算の第２の回数を算出する。除算回路は、第１および第２の回数の比較結果に基づいて、ニュートンラフソン法の反復計算を第１の回数繰り返す第１演算方式および簡易演算法の反復計算を第２の回数繰り返す第２演算方式のうち演算レイテンシが小さい演算方式を選択する。除算回路は、選択された演算方式により算出された逆数を、入力された被除数に乗じて除算を実行する。
【０００９】
一実施の形態に従う除算方法は、除数の絶対値のサンプル値と当該サンプル値の逆数とを関連付けた第１テーブル、および入力された除数の絶対値に基づいて、入力された除数の絶対値の逆数の近似値を算出するステップを含む。複数のサンプル値の各々について、当該サンプル値と、当該サンプル値に隣接するサンプル値との間隔は、当該サンプル値が小さいほど小さい。除算方法は、入力された除数の絶対値と近似値との誤差を算出するステップと、要求される演算精度と算出された誤差とに基づいて、ニュートンラフソン法の反復計算の第１の回数を算出するステップと、要求される演算精度と算出された誤差とに基づいて、簡易演算法の反復計算の第２の回数を算出するステップとをさらに含む。除算方法は、第１および第２の回数の比較結果に基づいて、ニュートンラフソン法の反復計算を第１の回数繰り返す第１演算方式、および簡易演算法の反復計算を第２の回数繰り返す第２演算方式のうち演算レイテンシが小さい演算方式を選択するステップを含む。除算方法は、選択された演算方式により算出された、入力された除数の絶対値の逆数を、入力された被除数に乗じて除算を実行するステップを含む。
【発明の効果】
【００１０】
一実施の形態によれば、要求される演算精度を有する除数の逆数をより高速に得ることができる。
【図面の簡単な説明】
【００１１】
【図１】実施の形態１に従う半導体装置の構成例を示す模式図である。
【図２】逆数の近似値を求めるために利用されるルックアップテーブルの一例を示す図である。
【図３】除数と、除数の逆数との関係を説明するための図である。
【図４】ニュートンラフソン法の反復計算の回数を求めるために利用されるルックアップテーブルの一例を示す図である。
【図５】簡易演算法の反復計算の回数を求めるために利用されるルックアップテーブルの一例を示す図である。
【図６】実施の形態１に従う逆数演算回路の構成例を示す模式図である。
【図７】実施の形態１に従う他の逆数演算回路の構成例を示す模式図である。
【図８】実施の形態１に従う半導体装置の処理手順を示すフローチャートである。
【図９】実施の形態１に従うニュートンラフソン法の反復計算を用いる演算方式の処理手順を示すフローチャートである。
【図１０】実施の形態１に従う簡易演算法の反復計算を用いる演算方式の処理手順を示すフローチャートである。
【図１１】実施の形態２に従う半導体装置の構成例を示す模式図である。
【図１２】実施の形態２に従う逆数演算回路の回路構成例を示す模式図である。
【図１３】実施の形態３に従う半導体装置の構成例を示す模式図である。
【図１４】実施の形態４に従う半導体装置の構成例を示す図である。
【発明を実施するための形態】
【００１２】
以下、各実施形態について図面を参照して詳しく説明する。なお、同一または相当する部分には同一の参照符号を付して、その説明を繰返さない。
【００１３】
［実施の形態１］
＜全体構成＞
図１は、実施の形態１に従う半導体装置５の構成例を示す模式図である。図１を参照して、半導体装置５は、ＣＰＵ（Central  Processing  Unit）１０と、メモリ２０，３０，４０と、除算回路１００とを含む。なお、半導体装置５は、図示しないＲＯＭ（Read  Only  Memory）、ＲＡＭ（Random  access  memory）、フラッシュメモリ等を含んでいてもよい。
【００１４】
ＣＰＵ１０は、フラッシュメモリ等の不揮発性メモリに記憶されたプログラムを読み出して実行することで、半導体装置５の各部の動作を制御する。
【００１５】
メモリ２０は、除数の逆数を求めるために利用されるルックアップテーブル（以下、「ＬＵＴ」とも称する。）２１を格納する。メモリ３０は、ニュートンラフソン法の反復計算の回数を得るために利用されるＬＵＴ３１を格納する。メモリ４０は、ニュートンラフソン法の反復計算の式を変形した簡易演算法の反復計算の回数を得るために利用されるＬＵＴ４１を格納する。
【００１６】
実施の形態１では、メモリ２０，３０，４０に、それぞれＬＵＴ２１，３１，４１を格納する構成について説明するが、当該構成に限られない。例えば、１つのメモリを複数のセクタに分けて構成し、３つの異なるセクタにそれぞれＬＵＴ２１，３１，４１を設定する構成であってもよい。
【００１７】
除算回路１００は、ＳＦＲ（Special  Function  Register）回路１２０と、ステートマシン回路１４０と、演算処理回路１６０とを含む。
【００１８】
ＳＦＲ回路１２０は、除算の動作を制御するパラメータ、および除算の演算結果等を格納する。具体的には、ＳＦＲ回路１２０は、被除数Ｙを格納するレジスタ１２１と、除数Ｄを格納するレジスタ１２２と、演算精度Ｐを格納するレジスタ１２３と、起動制御情報を格納するレジスタ１２４と、完了通知情報を格納するレジスタ１２５と、演算処理回路１６０により算出された商Ｑを格納するレジスタ１２６とを含む。
【００１９】
被除数Ｙ、除数Ｄ、演算精度Ｐおよび起動制御情報の各情報は、ＣＰＵ１０により設定される。例えば、ＣＰＵ１０は、半導体装置５を用いるシステムから要求される演算精度を、演算精度Ｐに設定する。完了通知情報および商Ｑは、ＳＦＲ回路１２０からＣＰＵ１０へ出力される。
【００２０】
ステートマシン回路１４０は、除算の動作制御を行い演算の完了を通知する。具体的には、ステートマシン回路１４０は、カウンタ回路１４２と、サブカウンタ回路１４４とを含む。
【００２１】
カウンタ回路１４２は、演算処理回路１６０に設けられた逆数演算回路１７２Ａ，１７２Ｂの動作を制御するためのカウンタｋを出力する。サブカウンタ回路１４４は、逆数演算回路１７２Ａの動作を制御するためのサブカウンタｉを出力する。
【００２２】
演算処理回路１６０は、符号処理回路１６２，１８２と、近似値算出回路１６４と、誤差算出回路１６６と、回数算出回路１６８，１７０と、逆数演算回路１７２Ａ，１７２Ｂと、比較器１７６と、出力回路１７８と、乗算器１８０とを含む。
【００２３】
符号処理回路１６２は、ＳＦＲ回路１２０から被除数Ｙおよび除数Ｄの入力を受け付けて、符号処理を実行する。具体的には、符号処理回路１６２は、被除数Ｙが正の数の場合には被除数の絶対値ｙに被除数Ｙをそのまま代入し（すなわち、ｙ＝Ｙ）、被除数Ｙが負の数の場合には被除数の絶対値ｙに被除数Ｙの絶対値を代入する（すなわち、ｙ＝｜Ｙ｜）。符号処理回路１６２は、除数Ｄが正の数の場合には除数の絶対値ｄに除数Ｄをそのまま代入し（すなわち、ｄ＝Ｄ）、除数Ｄが負の数の場合には除数の絶対値ｄに除数Ｄの絶対値を代入する（すなわち、ｄ＝｜Ｄ｜）。
【００２４】
また、被除数Ｙおよび除数Ｄの両方が正の数または負の数の場合、符号処理回路１６２は、演算処理回路１６０から最終的に出力される商Ｑが正の数であることを示す値“０”を符号情報ｓに代入する（すなわち、ｓ＝０）。被除数Ｙおよび除数Ｄの一方が正の数であり他方が負の数である場合、符号処理回路１６２は、商Ｑが負の数であることを示す値“１”を符号情報ｓに代入する（すなわち、ｓ＝１）。
【００２５】
近似値算出回路１６４は、入力された絶対値ｄに基づいて、メモリ２０に格納されたＬＵＴ２１を参照することにより絶対値ｄの逆数の近似値Ｘ０を算出する。近似値Ｘ０は、絶対値ｄの逆数の初期値に対応する。
【００２６】
図２は、逆数の近似値を求めるために利用されるルックアップテーブルの一例を示す図である。図２を参照して、ＬＵＴ２１は、絶対値ｄのサンプル値ｅと、サンプル値ｅの逆数である切片ｆ（すなわち、ｆ＝１／ｄ）と、傾きｇとを互いに関連付けて格納する。
【００２７】
ここで、傾きｇは、サンプル値ｅおよび切片ｆで構成される座標点（ｅ，ｆ）において、あるサンプル値ｅに対応する座標点と、次のサンプル値ｅに対応する座標点とを通る直線の傾きを示している。例えば、サンプル値ｅ＝２、切片ｆ＝０．５の場合、傾きｇは、座標点（２，０．５）と座標点（４，０．２５）とを通る直線の傾き“−０．１２５”となる。
【００２８】
近似値算出回路１６４は、絶対値ｄのすべてのビットフィールドをインデックスとして、サンプル値ｅ≦絶対値ｄが成立する最も近いサンプル値ｅを特定し、当該特定されたサンプル値ｅに関連付けられた切片ｆおよび傾きｇをメモリ２０から読み出す。近似値算出回路１６４は、以下の式（１）のように線形補間を行なうことにより、逆数の近似値Ｘ０を算出する。
【００２９】
【数１】
2020077038.tif 000003
【００３０】
ここで、ＬＵＴ２１では、複数のサンプル値ｅの各々について、当該サンプル値ｅと、当該サンプル値ｅに隣接するサンプル値ｅとの間隔は、当該サンプル値ｅが小さいほど小さくなるように構成される。例えば、Ｎｏ．２に対応するサンプル値ｅ（＝２）と、Ｎｏ．３に対応するサンプル値ｅ（＝４）との間隔である“２”は、Ｎｏ．３に対応するサンプル値ｅ（＝４）とＮｏ．４に対応するサンプル値ｅ（＝８）との間隔である“４”よりも小さい。図２の例では、サンプル値ｅと、当該サンプル値ｅよりも大きくかつ隣接するサンプル値ｅとの間隔は、１，２，４，８，・・・というように２のべき乗で変化する。このように、サンプル値ｅをとっている理由を図３を参照しながら説明する。
【００３１】
図３は、除数と、除数の逆数との関係を説明するための図である。図３を参照して、曲線７１０は、除数と、当該除数の逆数との関係を示している。図３に示すように、互いに隣接する２つのサンプル値ｅの間隔Ｌを均等にした場合、サンプル値ｅが大きい場合には線形補間により求められる逆数の近似値の誤差は小さいが、サンプル値ｅが小さい場合には逆数の近似値の誤差が大きくなる。
【００３２】
例えば、点Ｚ１と点Ｚ２とを結ぶ直線７０１と曲線７１０との誤差は、点Ｚ２と点Ｚ３とを結ぶ直線７０２と曲線７１０との誤差よりも大きい。すなわち、サンプル値ｅが小さいほど逆数の近似値の誤差が大きくなる。そこで、本実施の形態に従うＬＵＴ２１では、図２に示すように、サンプル値ｅと、当該サンプル値ｅに隣接するサンプル値ｅとの間隔は、当該サンプル値ｅが小さいほど小さくなるように構成される。これにより、サンプル値ｅが小さい場合であっても逆数の近似値の誤差を小さくでき、ニュートンラフソン法の反復計算を高速化できる。
【００３３】
上述したように、特許文献１に係る技術では、除数の仮数部のＭＳＢのビットフィールドをメモリのインデックスとして用いているため、メモリに格納されるサンプル値の間隔が均等になる。したがって、除数の値が小さい場合には逆数の近似値の誤差が大きくなるため、ニュートンラフソン法を用いた反復計算の高速化が困難となる。
【００３４】
再び、図１を参照して、誤差算出回路１６６は、近似値算出回路１６４により算出された近似値Ｘ０と、符号処理回路から出力された絶対値ｄとの入力を受け付ける。誤差算出回路１６６は、絶対値ｄと近似値Ｘ０との誤差を示す誤差率βを算出する。誤差率βは、以下の式（２）により算出される。
【００３５】
【数２】
2020077038.tif 000004
【００３６】
回数算出回路１６８は、誤差率βと、ＳＦＲ回路１２０に設定されている演算精度Ｐとの入力を受け付ける。回数算出回路１６８は、誤差率βと演算精度Ｐとに基づいて、メモリ３０に格納されたＬＵＴ３１を参照することにより、ニュートンラフソン法の反復計算の回数を示す反復回数ｍを算出する。
【００３７】
図４は、ニュートンラフソン法の反復計算の回数を求めるために利用されるルックアップテーブルの一例を示す図である。図４を参照して、ＬＵＴ３１は、複数の演算精度（例えば、８ビット、１６ビット、３２ビット）の各々について、誤差率βのサンプル値βｍａｘ１とニュートンラフソン法の反復計算の回数との関係を示している。
【００３８】
ここで、サンプル値βｍａｘ１は、要求される演算精度Ｐで、指定された反復回数を実現する場合に許容される誤差率βの最大値を示している。例えば、要求される演算精度Ｐが“８ビット”であり、指定された反復回数が“４”であるとすると、誤差率βは“０．６７７１３”よりも大きくてもよいが、“０．８２２８８”以下でなければならない。また、反復回数が同一である場合、要求される演算精度Ｐが高いほどサンプル値βｍａｘ１は小さくなる。例えば、反復回数が“３”である場合、演算精度Ｐが８ビットの場合には誤差率βは“０．６７７１３”まで許容されるが、演算精度Ｐが３２ビットの場合には誤差率βは“０２３９４０”までしか許容されない。
【００３９】
回数算出回路１６８は、演算精度Ｐに対するサンプル値βｍａｘ１を参照することにより、誤差率βに適した反復回数ｍを求めることができる。具体的には、回数算出回路１６８は、演算精度Ｐに対応するサンプル値βｍａｘ１≧誤差率βが成立する最も近いサンプル値βｍａｘ１を特定する。例えば、演算精度Ｐが“８ビット”であり誤差率βが“０．５６８４５”である場合には、サンプル値βｍａｘ１“０．６７７１３”が特定される。
【００４０】
回数算出回路１６８は、当該特定されたサンプル値βｍａｘ１に関連付けられた反復回数をメモリ３０から読み出す。回数算出回路１６８は、読み出した反復回数を反復回数ｍとして算出する。ＬＵＴ３１を参照することにより演算精度Ｐを満たす適切な反復回数ｍを容易に得ることができる。
【００４１】
再び、図１を参照して、回数算出回路１７０は、誤差率βおよび演算精度Ｐの入力を受け付ける。回数算出回路１７０は、誤差率βと演算精度Ｐとに基づいて、メモリ４０に格納されたＬＵＴ４１を参照することにより、ニュートンラフソン法の反復計算の式を変形した簡易演算法の反復計算の回数を示す反復回数ｎを算出する。
【００４２】
図５は、簡易演算法の反復計算の回数を求めるために利用されるルックアップテーブルの一例を示す図である。図５を参照して、ＬＵＴ４１は、複数の演算精度（例えば、８ビット、１６ビット、３２ビット）の各々について、誤差率βのサンプル値βｍａｘ２と簡易演算法の反復計算の回数との関係を示している。
【００４３】
図４と同様の考え方により、例えば、要求される演算精度Ｐが“８ビット”であり、指定された反復回数が“４”であるとすると、誤差率βは“０．２８７１７”よりも大きくてもよいが、“０．３５３５５”以下でなければならない。なお、反復回数が同一である場合、簡易演算法では、ニュートンラフソン法よりも小さい誤差率βが要求される。例えば、反復回数が“３”であり、かつ演算精度Ｐが８ビットの場合を想定する。この場合、ニュートンラフソン法では、誤差率βは“０．６７７１３”まで許容される（図４参照）。一方、簡易演算法では、誤差率βは“０．３５３５５”までしか許容されない（図５参照）。
【００４４】
回数算出回路１７０は、演算精度Ｐに対するサンプル値βｍａｘ２を参照することにより、誤差率βに適した反復回数ｎを求めることができる。具体的には、回数算出回路１７０は、演算精度Ｐに対応するサンプル値βｍａｘ２≧誤差率βが成立する最も近いサンプル値βｍａｘ２を特定し、当該特定されたサンプル値βｍａｘ２に関連付けられた反復回数をメモリ４０から読み出す。回数算出回路１７０は、読み出した反復回数を反復回数ｎとして算出する。ＬＵＴ４１を参照することにより演算精度Ｐを満たす適切な反復回数ｎを容易に得ることができる。
【００４５】
再び、図１を参照して、逆数演算回路１７２Ａは、絶対値ｄ、近似値Ｘ０、誤差率βおよび反復回数ｍの入力を受け付ける。逆数演算回路１７２Ａは、絶対値ｄ、近似値Ｘ０、誤差率βおよび反復回数ｍと、ニュートンラフソン法の反復計算の式（３）および式（４）とを用いて、絶対値ｄの逆数Ｘｍを算出する。なお、カウンタｋ＝０の場合には、反復回数が１回の場合の逆数Ｘ１が式（３）で算出される。
【００４６】
【数３】
2020077038.tif 000005
【００４７】
カウンタｋ＞０の場合には、反復回数が“ｋ＋１”回（ｋ：１以上の整数）の場合の逆数Ｘｋ＋１が式（４）で表される。
【００４８】
【数４】
2020077038.tif 000006
【００４９】
逆数演算回路１７２Ａは、式（３）および式（４）を用いて、ニュートンラフソン法の反復計算を、回数算出回路１６８により算出された反復回数ｍだけ繰り返す演算方式Ａにより、逆数Ｘｍを算出する。
【００５０】
ニュートンラフソン法の反復計算の式（４）では、逆数Ｘｋ＋１は、前回の逆数Ｘｋと絶対値ｄとの積を２より減じた値に、前回の逆数Ｘｋを乗算した値である。そのため、逆数Ｘ１を算出するための乗算回数は２回であり、加減算回数は１回となり、逆数Ｘ２を算出するための乗算回数は４回であり、加減算回数は２回となる。以下同様に、逆数Ｘｋを算出するための乗算回数は２ｋ回であり、加減算回数はｋ回となる。なお、逆数演算回路１７２Ａの具体的な回路構成については後述する。
【００５１】
逆数演算回路１７２Ｂは、近似値Ｘ０、誤差率βおよび反復回数ｎの入力を受け付ける。逆数演算回路１７２Ｂは、入力された近似値Ｘ０、誤差率βおよび反復回数ｎと、ニュートンラフソン法の反復計算の式（４）を変形して簡易化した式（５）、式（６）および式（７）とを用いて、絶対値ｄの逆数Ｘｎを算出する。式（５）には、反復回数が“ｋ＋１”回の場合の逆数Ｘｋ＋１が表されている。
【００５２】
【数５】
2020077038.tif 000007
【００５３】
また、上記式（５）〜（７）を用いると、逆数Ｘｋ＋１は以下の式（８）のように表現することもできる。
【００５４】
【数６】
2020077038.tif 000008
【００５５】
逆数演算回路１７２Ｂは、式（５）または式（８）を用いて、簡易演算法の反復計算を、回数算出回路１７０により算出された反復回数ｎだけ繰り返す演算方式Ｂにより、逆数Ｘｎを算出する。
【００５６】
簡易演算法の反復計算の式（５）または式（８）では、逆数Ｘｋ＋１は、逆数の初期値（すなわち、近似値）であるＸ０に、誤差率βのｉ乗の総和を乗算した値となる。そのため、逆数Ｘ１を算出するための乗算回数は２回であり、逆数Ｘ２を算出するための乗算回数は２回であり、以下同様に、逆数Ｘｋを算出するための乗算回数は“ｋ＋１”回となる。一方、ニュートンラフソン法では、逆数Ｘｋを算出するための乗算回数は２ｋ回である。そのため、簡易演算法ではニュートンラフソン法の反復計算に用いられる乗算の一部が省略されていることがわかる。
【００５７】
なお、簡易演算法では、逆数Ｘ１を算出するための加減算回数は２回であり、逆数Ｘ２を算出するための加減算回数は３回である。以下同様に考えて、逆数Ｘｋを算出するための加減算回数は“ｋ＋１”回となる。逆数演算回路１７２Ｂの具体的な回路構成については後述する。
【００５８】
このように、ニュートンラフソン法の反復計算の場合、反復回数が１回増加するごとに乗算回数が２回ずつ増加していくが、簡易演算法の反復計算の場合、反復回数が１回増加するごとに乗算回数が１回ずつしか増加しない。このことから、簡易演算法の反復計算の乗算回数は、ニュートンラフソン法の反復計算の乗算回数の１／２となる。また、ニュートンラフソン法および簡易演算法ともに、反復回数が１回増加するごとに加減算回数が１回ずつ増加していく。ただし、同一の反復回数の場合には、簡易演算法の方がニュートンラフソン法よりも加減算回数が１回だけ多くなる。
【００５９】
ここで、演算レイテンシに関しては、乗算回数の方が加減算回数よりも大きく影響する。そのため、反復回数ｍと反復回数ｎが同一である場合には、簡易演算法を用いる逆数演算回路１７２Ｂの演算レイテンシは、ニュートンラフソン法を用いる逆数演算回路１７２Ａの演算レイテンシの約１／２で済む。このことから、ｎ／２＜ｍが成立する場合には、簡易演算法の反復計算を反復回数ｎだけ繰り返す演算方式Ｂの方が、ニュートンラフソン法の反復計算を反復回数ｍだけ繰り返す演算方式Ａよりも演算レイテンシが小さくなる。
【００６０】
比較器１７６は、反復回数ｍと反復回数ｎの１／２とを比較し、比較結果ｓｅｌを出力する。この比較結果ｓｅｌは、演算方式Ａおよび演算方式Ｂのうち演算レイテンシが小さい演算方式を示す情報である。すなわち、比較器１７６は、反復回数ｍと反復回数ｎの１／２との比較結果に基づいて、演算方式Ａおよび演算方式Ｂのうち演算レイテンシが小さい演算方式を選択する機能を有する。
【００６１】
具体的には、比較器１７６は、ｎ／２≧ｍが成立する場合には、比較結果ｓｅｌに“１”を代入して出力する。この場合、比較結果ｓｅｌは、演算レイテンシが小さい演算方式として演算方式Ａが選択されたことを示している。比較器１７６は、ｎ／２＜ｍが成立する場合には、比較結果ｓｅｌに“０”を代入して出力する。この場合、比較結果ｓｅｌは、演算レイテンシが小さい演算方式として演算方式Ｂが選択されたことを示している。
【００６２】
出力回路１７８は、比較結果ｓｅｌに基づいて、逆数演算回路１７２Ａの演算方式Ａにより得られる逆数Ｘｍ、および逆数演算回路１７２Ｂの演算方式Ｂにより得られる逆数Ｘｎのいずれかを絶対値ｄの逆数Ｘとして乗算器１８０に出力する。
【００６３】
具体的には、出力回路１７８は、比較結果ｓｅｌが“１”である（すなわち、演算方式Ａの方が演算レイテンシが小さい）場合には、演算方式Ａにより得られる逆数Ｘｍを、絶対値ｄの逆数Ｘとして出力する。一方、出力回路１７８は、比較結果ｓｅｌが“０”である（すなわち、演算方式Ｂの方が演算レイテンシが小さい）場合には、演算方式Ｂにより得られる逆数Ｘｎを、絶対値ｄの逆数Ｘとして出力する。
【００６４】
乗算器１８０は、逆数Ｘと被除数ｙとの入力を受け付ける。乗算器１８０は、逆数Ｘと被除数ｙとを乗算して、商の絶対値ｑを算出する。
【００６５】
符号処理回路１８２は、符号情報ｓと商の絶対値ｑとの入力を受け付ける。符号処理回路１８２は、符号情報ｓが“０”の場合には商Ｑに絶対値ｑを代入し、符号情報ｓが“１”の場合には商Ｑに絶対値ｑの２の補数を代入する。算出された商Ｑは、ＳＦＲ回路１２０のレジスタ１２６に格納される。
【００６６】
上述した処理によって、被除数Ｙと除数Ｄに対して、半導体装置５を用いるシステム等から要求される演算精度Ｐの商Ｑが算出された場合に、ステートマシン回路１４０は完了通知を生成する。完了通知は、レジスタ１２５に格納される。
【００６７】
＜逆数演算回路の構成例＞
図６は、実施の形態１に従う逆数演算回路１７２Ａの構成例を示す模式図である。図６を参照して、逆数演算回路１７２Ａは、演算回路２００，２０２，２０４と、保持回路２０６と、出力回路２０８とを含む。
【００６８】
演算回路２００は、入力された近似値Ｘ０および誤差率βを用いた式（３）で示される演算により、１回目の反復計算結果である逆数Ｘ１を算出する。演算回路２０２は、入力された絶対値ｄおよびｋ回目の反復計算結果である逆数Ｘｋを乗算して一時変数ｔｍｐを算出する。演算回路２０４は、一時変数ｔｍｐおよび逆数Ｘｋを乗算して、“ｋ＋１”回目の反復計算結果である逆数Ｘｋ＋１を算出する。
【００６９】
出力回路２０８は、カウンタｋが０（すなわち、演算開始）の場合には、演算回路２００の演算結果（すなわち、逆数Ｘ１）を逆数Ｘｋ＋１として出力し、カウンタｋがｋ＞０の場合には、演算回路２０４の演算結果を逆数Ｘｋ＋１として出力する。保持回路２０６は、サブカウンタｉが指定するタイミングに従って逆数Ｘｋ＋１を保持する。このような回路構成により、反復回数ｍに対応する逆数Ｘｍが算出される。
【００７０】
図７は、実施の形態１に従う他の逆数演算回路１７２Ｂの構成例を示す模式図である。図７を参照して、逆数演算回路１７２Ｂは、演算回路２２０，２２２，２２４と、保持回路２２６，２３２と、出力回路２２８，２３０，２３４とを含む。
【００７１】
出力回路２２８は、カウンタｋが０（すなわち、演算開始）の場合には固定値“１”を選択して演算結果Ｒｋ（すなわち、Ｒ０）として出力し、カウンタｋがｋ＞０の場合にはｋ回目の演算結果Ｒｋを選択して出力する。
【００７２】
演算回路２２０は、誤差率βと演算結果Ｒｋとを乗算して、“ｋ＋１”回目の演算結果Ｒｋ＋１を算出する。出力回路２３０は、カウンタｋが０の場合には誤差率βを選択して演算結果Ｒｋ＋１（すなわち、Ｒ１）として出力し、カウンタｋがｋ＞０の場合には、演算回路２２０により算出された演算結果Ｒｋ＋１を選択して出力する。
【００７３】
出力回路２３４は、カウンタｋが０の場合には固定値“１”を選択して演算結果Ｔｋ（すなわち、Ｔ０）として出力し、カウンタｋがｋ＞０の場合にはｋ回目の演算結果Ｔｋを選択して出力する。
【００７４】
演算回路２２２は、演算結果Ｔｋと演算結果Ｒｋ＋１とを加算することにより、“ｋ＋１”回目の演算結果Ｔｋ＋１を算出する。演算回路２２４は、近似値Ｘ０と演算結果Ｔｋ＋１を乗算することにより、“ｋ＋１”回目の逆数の演算結果である逆数Ｘｋ＋１を算出する。保持回路２２６は、演算回路２２０により算出された演算結果Ｒｋ＋１を保持する。保持回路２３２は、演算回路２２２により算出された演算結果Ｔｋ＋１を保持する。このような回路構成により、反復回数ｎに対応する逆数Ｘｎが算出される。
【００７５】
＜処理手順＞
図８は、実施の形態１に従う半導体装置５の処理手順を示すフローチャートである。図８を参照して、半導体装置５は、被除数Ｙ、除数Ｄおよび演算精度Ｐを設定する（ステップＳ３００）。典型的には、ＣＰＵ１０は、被除数Ｙ、除数Ｄ、演算精度Ｐを、ＳＦＲ回路１２０のレジスタ１２１，１２２，１２３にそれぞれ設定する。
【００７６】
ステートマシン回路１４０は、レジスタ１２４から起動制御情報を読み出して、演算処理回路１６０に演算を開始させる（ステップＳ３０２）。
【００７７】
演算処理回路１６０は、被除数Ｙおよび除数Ｄの符号処理を実行する（ステップＳ３０４）。具体的には、符号処理回路１６２は、被除数Ｙおよび除数Ｄに基づいて、被除数Ｙの絶対値ｙと、除数Ｄの絶対値ｄと、符号情報ｓとを生成する。
【００７８】
演算処理回路１６０は、絶対値ｄの近似値Ｘ０を算出する（ステップＳ３０６）。具体的には、近似値算出回路１６４は、絶対値ｄに基づいて、メモリ２０に格納されたＬＵＴ２１を参照することにより近似値Ｘ０を算出する。
【００７９】
演算処理回路１６０は、誤差率βを算出する（ステップＳ３０８）。具体的には、誤差算出回路１６６は、絶対値ｄと近似値Ｘ０とを用いて式（２）に示された演算を実行することにより、誤差率βを算出する。
【００８０】
演算処理回路１６０は、ニュートンラフソン法の反復計算の回数を示す反復回数ｍを算出する（ステップＳ３１０）。具体的には、回数算出回路１６８は、誤差率βと演算精度Ｐとに基づいて、メモリ３０に格納されたＬＵＴ３１を参照することにより反復回数ｍを算出する。
【００８１】
演算処理回路１６０は、簡易演算法の反復計算の回数を示す反復回数ｎを算出する（ステップＳ３１２）。具体的には、回数算出回路１７０は、誤差率βと演算精度Ｐとに基づいて、メモリ４０に格納されたＬＵＴ４１を参照することにより反復回数ｎを算出する。
【００８２】
演算処理回路１６０は、ｎ／２≧ｍが成立するか否かを判断する（ステップＳ３１４）。反復回数ｍが反復回数ｎの１／２以下である場合には（ステップＳ３１４においてＹＥＳ）、演算処理回路１６０は演算方式Ａにより絶対値ｄの逆数Ｘを算出する（ステップＳ３１６）。ステップＳ３１６の詳細については後述する。
【００８３】
反復回数ｍが反復回数ｎの１／２よりも大きい場合には（ステップＳ３１４においてＮＯ）、演算処理回路１６０は演算方式Ｂにより絶対値ｄの逆数Ｘを算出する（ステップＳ３１８）。ステップＳ３１８の詳細については後述する。
【００８４】
演算処理回路１６０は、被除数Ｙの絶対値ｙと、ステップＳ３１６またはＳ３１８において演算された逆数Ｘとを乗算して商の絶対値ｑを算出する（ステップＳ３２０）。演算処理回路１６０は、商の絶対値ｑの符号処理を実行して商Ｑを算出して（ステップＳ３２２）、処理を終了する。このとき、ステートマシン回路１４０は、商Ｑの演算が完了したことを示す完了通知を生成する。
【００８５】
図９は、実施の形態１に従うニュートンラフソン法の反復計算を用いる演算方式の処理手順を示すフローチャートである。具体的には、図９には、図８中のステップＳ３１６の具体的な処理手順が示されている。
【００８６】
図９を参照して、カウンタ回路１４２は、演算中の反復回数を示すカウンタｋを０に設定する（ステップＳ３４０）。逆数演算回路１７２Ａは、式（３）を用いて１回目の逆数の演算結果である逆数Ｘ１を算出する（ステップＳ３４２）。このとき、逆数演算回路１７２Ａは、逆数Ｘ１を保持する。
【００８７】
逆数演算回路１７２Ａは、カウンタｋが反復回数ｍと同一であるか否かを判断する（ステップＳ３４４）。カウンタｋが反復回数ｍと同一ではない場合（ステップＳ３４４においてＮＯ）、カウンタ回路１４２は、カウンタｋをインクリメントする（ステップＳ３４６）。
【００８８】
逆数演算回路１７２Ａは、ｋ回目の逆数の演算結果である逆数Ｘｋと絶対値ｄとを乗算することにより一時変数ｔｍｐを算出する（ステップＳ３４８）。逆数演算回路１７２Ａは、逆数Ｘｋと、一時変数ｔｍｐを２から減じた値とを乗算することにより“ｋ＋１”回目の逆数の演算結果である逆数Ｘｋ＋１を算出して（ステップＳ３５０）、ステップＳ３４４に戻る。逆数演算回路１７２Ａは、逆数Ｘｋ＋１を保持する。
【００８９】
ここで、カウンタｋが反復回数ｍと同一である場合には（ステップＳ３４４においてＹＥＳ）、逆数演算回路１７２Ａは処理を終了する。このとき、ステップＳ３５０において算出された逆数Ｘｋ＋１が、絶対値ｄの逆数Ｘとなる。
【００９０】
図１０は、実施の形態１に従う簡易演算法の反復計算を用いる演算方式の処理手順を示すフローチャートである。具体的には、図１０には、図８中のステップＳ３１８の具体的な処理手順が示されている。
【００９１】
図１０を参照して、カウンタ回路１４２は、演算中の反復回数を示すカウンタｋを０に設定する（ステップＳ３６０）。逆数演算回路１７２Ｂは、演算中の演算結果Ｒｋ，Ｔｋに１を代入する（ステップＳ３６２）。
【００９２】
逆数演算回路１７２Ｂは、誤差率βと演算結果Ｒｋとを乗算して、“ｋ＋１”回目の演算結果Ｒｋ＋１を算出する（ステップＳ３６４）。ただし、１回目の演算結果Ｒ１は誤差率βとなるため、上記乗算は行なわれない。逆数演算回路１７２Ｂは、演算結果Ｒｋ＋１を保持する。
【００９３】
逆数演算回路１７２Ｂは、演算結果Ｔｋと演算結果Ｒｋ＋１とを加算することにより、“ｋ＋１”回目の演算結果Ｔｋ＋１を算出する（ステップＳ３６６）。逆数演算回路１７２Ｂは、演算結果Ｔｋ＋１を保持する。逆数演算回路１７２Ｂは、カウンタｋが反復回数ｎと同一であるか否かを判断する（ステップＳ３６８）。
【００９４】
カウンタｋが反復回数ｎと同一ではない場合（ステップＳ３６８においてＮＯ）、カウンタ回路１４２は、カウンタｋをインクリメントする（ステップＳ３７０）。処理は、ステップＳ３６４に戻る。カウンタｋが反復回数ｎと同一である場合（ステップＳ３７０においてＹＥＳ）、逆数演算回路１７２Ｂは、近似値Ｘ０と演算結果Ｔｋ＋１を乗算することにより、“ｋ＋１”回目の逆数の演算結果である逆数Ｘｋ＋１を算出して（ステップＳ３７２）、処理を終了する。このとき、ステップＳ３７２において算出された逆数Ｘｋ＋１が、絶対値ｄの逆数Ｘとなる。
【００９５】
＜利点＞
実施の形態１によると、除数が小さいほどサンプル値を多くとったＬＵＴ２１を用いることで、除数が小さい場合であっても、除数の逆数の近似値の誤差を小さくすることができる。これにより、ニュートンラフソン法および簡易演算法の反復計算の高速化を図ることができる。さらに、反復回数ｍと反復回数ｎとの比較結果に基づいて、演算レイテンシの小さい演算方式を選択することで、要求される演算精度の解をより高速に得ることができる。
【００９６】
［実施の形態２］
実施の形態２では、実施の形態１において、ニュートンラフソン法の反復計算に用いられる演算器（乗算器および加算器）と、簡易演算法の反復計算に用いられる演算器（乗算器および加算器）とを共有化した構成について説明する。
【００９７】
＜全体構成＞
図１１は、実施の形態２に従う半導体装置５Ａの構成例を示す模式図である。図１１を参照して、半導体装置５Ａは、ＣＰＵ１０と、メモリ２０，３０，４０と、除算回路１００Ａとを含む。半導体装置５Ａは、図１中の半導体装置５の除算回路１００を、除算回路１００Ａに置き換えたものに相当する。除算回路１００Ａは、除算回路１００から逆数演算回路１７２Ａ、逆数演算回路１７２Ｂ、および出力回路１７８を削除し、その代わりに逆数演算回路１８４を設けた構成に相当する。
【００９８】
逆数演算回路１８４は、逆数演算回路１７２Ａ，１７２Ｂおよび出力回路１７８の各機能を有する。すなわち、逆数演算回路１８４は、逆数演算回路１７２Ａ，１７２Ｂおよび出力回路１７８を１つの演算回路として構成したものである。また、逆数演算回路１８４では、逆数演算回路１７２Ａが実行する演算方式Ａに用いられる乗算器および加算器は、逆数演算回路１７２Ｂが実行する演算方式Ｂに用いられる乗算器および加算器と共有化されている。
【００９９】
比較器１７６から出力される比較結果ｓｅｌが“１”の場合（すなわち、演算レイテンシが小さい演算方式として演算方式Ａが選択されている場合）には、逆数演算回路１８４は、逆数演算回路１７２Ａとして動作して、ニュートンラフソン法の反復計算をｍ回繰り返す演算方式Ａにより、絶対値ｄの逆数Ｘを演算する。比較器１７６から出力される比較結果ｓｅｌが“０”の場合（すなわち、演算レイテンシが小さい演算方式として演算方式Ｂが選択されている場合）には、逆数演算回路１８４は、逆数演算回路１７２Ｂとして動作して、簡易演算法の反復計算をｎ回繰り返す演算方式Ｂにより、絶対値ｄの逆数Ｘを演算する。
【０１００】
図１２は、実施の形態２に従う逆数演算回路の回路構成例を示す模式図である。図１２を参照して、逆数演算回路１８４は、入力生成回路４００，４０２，４０８，４１０と、加算器４０４と、保持回路４０６，４１６，４１８と、乗算器４１２と、保持値選択回路４１４とを含む。
【０１０１】
入力生成回路４００は、保持回路４０６により保持されている値ａｄｄ＿ｆｆ、比較結果ｓｅｌ、およびカウンタｋに基づいて、値ａｄｄ＿ａを出力する。入力生成回路４０２は、誤差率β、比較結果ｓｅｌ、カウンタｋ、保持回路４１８に保持されている値ｍｕｌ＿ｆｆ２、および乗算器４１２から出力される乗算値ｍｕｌ＿ｑ１に基づいて、値ａｄｄ＿ｂを出力する。
【０１０２】
加算器４０４は、値ａｄｄ＿ａと値ａｄｄ＿ｂとの加算値ａｄｄ＿ｑを出力する。保持回路４０６は、値ａｄｄ＿ｑを保持し、値ａｄｄ＿ｆｆを出力する。そのため、値ａｄｄ＿ｑと値ａｄｄ＿ｆｆとは実質的に同一である。
【０１０３】
入力生成回路４０８は、保持回路４１６により保持されている値ｍｕｌ＿ｆｆ１、近似値Ｘ０、誤差率β、比較結果ｓｅｌ、カウンタｋ、およびサブカウンタｉに基づいて、値ｍｕｌ＿ａを出力する。入力生成回路４１０は、近似値Ｘ０、誤差率β、絶対値ｄ、加算値ａｄｄ＿ｑ、保持回路４０６により保持されている値ａｄｄ＿ｆｆ、比較結果ｓｅｌ、カウンタｋ、およびサブカウンタｉに基づいて、値ｍｕｌ＿ｂを出力する。
【０１０４】
乗算器４１２は、値ｍｕｌ＿ａおよび値ｍｕｌ＿ｂの乗算値ｍｕｌ＿ｑ１を出力する。保持値選択回路４１４は、保持回路４１６により保持されている値ｍｕｌ＿ｆｆ１、誤差率β、乗算値ｍｕｌ＿ｑ１、比較結果ｓｅｌ、カウンタｋ、およびサブカウンタｉに基づいて、値ｍｕｌ＿ｑ２を出力する。保持回路４１６は、値ｍｕｌ＿ｑ２を保持し、値ｍｕｌ＿ｆｆ１を出力する。そのため、値ｍｕｌ＿ｑ２と値ｍｕｌ＿ｆｆ１とは実質的に同一である。保持回路４１８は、値ｍｕｌ＿ｑ１を保持し、値ｍｕｌ＿ｆｆ２を出力する。そのため、値ｍｕｌ＿ｑ１と値ｍｕｌ＿ｆｆ２とは実質的に同一である。
【０１０５】
＜処理手順＞
実施の形態２に従う半導体装置５Ａの処理手順は、図８に示す半導体装置５の処理手順におけるステップＳ３１４〜Ｓ３１８の処理を逆数演算回路１８４が実行するように構成したものである。
【０１０６】
ここでは、実施の形態２において、逆数演算回路１８４が演算方式Ａを用いて逆数Ｘを算出する処理（すなわち、ステップＳ３１６に対応する処理）と、演算方式Ｂを用いて逆数Ｘを算出する処理（すなわち、ステップＳ３１８に対応する処理）について説明する。
【０１０７】
逆数演算回路１８４は、比較結果ｓｅｌが“１”の場合に演算方式Ａを用いて逆数Ｘを算出する処理を実行する。この場合、図９に示すフローチャートが適用される。
【０１０８】
図９および図１２を参照して、ステップＳ３４０に対応する処理として、カウンタ回路１４２はカウンタｋに“０”を代入し、サブカウンタ回路１４４はサブカウンタｉに“１”を代入する。
【０１０９】
続いて、ステップＳ３４２に対応する処理として、次の処理が実行される。具体的には、入力生成回路４００は、値ａｄｄ＿ａに“１”を代入して出力する。入力生成回路４０２は、値ａｄｄ＿ｂに“β”を代入して出力する。そのため、加算器４０４により算出される加算値ａｄｄ＿ｑは“１＋β”となる。
【０１１０】
入力生成回路４０８は、値ｍｕｌ＿ａに“Ｘ０”を代入して出力する。入力生成回路４１０は、値ｍｕｌ＿ｂに加算値ａｄｄ＿ｑである“１＋β”を代入して出力する。そのため、乗算器４１２により算出される乗算値ｍｕｌ＿ｑ１は“Ｘ０（１＋β）”となる。すなわち、逆数Ｘ１が算出される。保持値選択回路４１４は、値ｍｕｌ＿ｑ２に乗算値ｍｕｌ＿ｑ１を代入して出力する。保持回路４１６は、値ｍｕｌ＿ｑ２である逆数Ｘ１を保持する。より具体的には、保持回路４１６は、ｋ回目の逆数の演算結果である逆数Ｘｋを保持する。
【０１１１】
続いて、カウンタｋが反復回数ｍと同一ではない場合（ステップＳ３４４においてＮＯ）、ステップＳ３４６，Ｓ３４８，Ｓ３５０に対応する処理が実行される。
【０１１２】
ステップＳ３４６に対応する処理として、カウンタ回路１４２はカウンタｋをインクリメントし（すなわち、ｋ＞０が成立）、サブカウンタ回路１４４はサブカウンタｉに“０”を代入する。
【０１１３】
ステップＳ３４８に対応する処理として、次の処理が実行される。具体的には、入力生成回路４０８は、値ｍｕｌ＿ａに保持回路４１６で保持されている値ｍｕｌ＿ｆｆ１を代入して出力する。ここで、値ｍｕｌ＿ｆｆ１には逆数Ｘｋが代入されているため、入力生成回路４０８は、値ｍｕｌ＿ａに“Ｘｋ”を代入して出力する。入力生成回路４１０は、値ｍｕｌ＿ｂに絶対値ｄを代入して出力する。そのため、乗算器４１２により算出される乗算値ｍｕｌ＿ｑ１は“Ｘｋ＊ｄ”となる。すなわち、一時変数ｔｍｐが算出される。
【０１１４】
保持値選択回路４１４は、値ｍｕｌ＿ｑ２に乗算値ｍｕｌ＿ｆｆ１を代入して出力する。そのため、保持回路４１６により保持される値ｍｕｌ＿ｆｆ１は更新されない。なお、保持回路４１８には、乗算値ｍｕｌ＿ｑ１である“Ｘｋ＊ｄ”が保持される。
【０１１５】
続いて、ステップＳ３５０に対応する処理として、次の処理が実行される。具体的には、サブカウンタ回路１４４はサブカウンタｉに“１”を代入する。この場合、入力生成回路４００は、値ａｄｄ＿ａに“２”を代入して出力する。入力生成回路４０２は、値ａｄｄ＿ｂに保持回路４１８に保持されている値ｍｕｌ＿ｆｆ２の２の補数を代入する。ここで、値ｍｕｌ＿ｆｆ２には“Ｘｋ＊ｄ”（すなわち、一時変数ｔｍｐ）が代入されているため、入力生成回路４０２は、値ａｄｄ＿ｂに“−Ｘｋ＊ｄ”を代入して出力する。したがって、加算器４０４により算出される加算値ａｄｄ＿ｑは“２−ｔｍｐ”となる。
【０１１６】
また、入力生成回路４０８は、値ｍｕｌ＿ａに保持回路４１６に保持されている値ｍｕｌ＿ｆｆ１（すなわち、逆数Ｘｋ）を代入して出力する。入力生成回路４１０は、値ｍｕｌ＿ｂに加算値ａｄｄ＿ｑ（すなわち、“２−ｔｍｐ”）を代入する。そのため、乗算器４１２による乗算値ｍｕｌ＿ｑ１は“Ｘｋ（２−ｔｍｐ）”となる。すなわち、“ｋ＋１”回目の逆数の演算結果である逆数Ｘｋ＋１が算出される。
【０１１７】
保持値選択回路４１４は、値ｍｕｌ＿ｑ２に乗算値ｍｕｌ＿ｑ１（すなわち、Ｘｋ＋１）を代入して出力する。保持回路４１６は、値ｍｕｌ＿ｑ２に代入された“ｋ＋１”回目の逆数の演算結果である逆数Ｘｋ＋１を保持する。
【０１１８】
そして、カウンタｋが反復回数ｍと同一となった場合（ステップＳ３４４においてＹＥＳ）、逆数演算回路１８４は、保持回路４１６に保持されている結果（すなわち、逆数Ｘｍ）を逆数Ｘとして算出する。
【０１１９】
次に、演算方式Ｂを用いて逆数Ｘを算出する処理について説明する。逆数演算回路１８４は、比較結果ｓｅｌが“０”の場合に演算方式Ｂを用いて逆数Ｘを算出する。この場合、図１０に示すフローチャートが適用される。
【０１２０】
図１０および図１２を参照して、ステップＳ３６０に対応する処理として、カウンタ回路１４２はカウンタｋおよびサブカウンタｉに“０”を代入する。
【０１２１】
ステップＳ３６２に対応する処理として、入力生成回路４００は、値ａｄｄ＿ａに“１”を代入して出力する。
【０１２２】
ステップＳ３６４に対応する処理として、次の処理を実行する。具体的には、入力生成回路４０２は、値ａｄｄ＿ｂに“β”を代入して出力する。また、保持値選択回路４１４は、値ｍｕｌ＿ｑ２に“β”を代入して出力する。そのため、保持回路４１６は、値ｍｕｌ＿ｑ２に代入された“１”回目の演算結果Ｒ１を保持する。
【０１２３】
ステップＳ３６６に対応する処理として、加算器４０４は、加算値ａｄｄ＿ｑとして“１＋β”を算出する。Ｔ０＝１、Ｒ１＝βであることから、加算値ａｄｄ＿ｑは１回目の反復計算結果であるＴ１（＝Ｔ０＋Ｒ１）に対応する。保持回路４０６は、加算値ａｄｄ＿ｑである“Ｔ１”を保持する。このように、保持回路４０６には、ｋ回目の演算結果Ｔｋが保持される。
【０１２４】
続いて、カウンタｋが反復回数ｎと同一ではない場合（ステップＳ３６８においてＮＯ）、ステップＳ３７０，Ｓ３６４，Ｓ３６６に対応する処理が実行される。
【０１２５】
ステップＳ３７０に対応する処理として、カウンタ回路１４２はカウンタｋをインクリメントする（すなわち、ｋ＞０が成立）。
【０１２６】
ステップＳ３６４に対応する処理として、次の処理が実行される。具体的には、入力生成回路４０８は、値ｍｕｌ＿ａに保持回路４１６で保持されている値ｍｕｌ＿ｆｆ１を代入して出力する。値ｍｕｌ＿ｆｆ１にはｋ回目の演算結果Ｒｋが保持されている。入力生成回路４１０は、値ｍｕｌ＿ｂに“β”を代入して出力する。そのため、乗算器４１２により算出される乗算値ｍｕｌ＿ｑ１は“Ｒｋ＊β”となる。すなわち、“ｋ＋１”回目の演算結果Ｒｋ＋１が算出される。
【０１２７】
保持値選択回路４１４は、値ｍｕｌ＿ｑ２に値ｍｕｌ＿ｑ１（すなわち、Ｒｋ＋１）を代入して出力する。そのため、保持回路４１６は、値ｍｕｌ＿ｑ２に代入された“ｋ＋１”回目の演算結果Ｒｋ＋１を保持する。
【０１２８】
続いて、ステップＳ３６６に対応する処理として、次の処理が実行される。具体的には、入力生成回路４００は、値ａｄｄ＿ａに保持回路４０６に保持されている値ａｄｄ＿ｆｆ（すなわち、Ｔｋ）を代入する。入力生成回路４０２は、値ａｄｄ＿ｂに乗算値ｍｕｌ＿ｑ１（すなわち、Ｒｋ＋１）を代入する。そのため、加算器４０４により算出される加算値ａｄｄ＿ｑは“Ｔｋ＋Ｒｋ＋１”となる。これは、“ｋ＋１”回目の演算結果Ｔｋ＋１に対応する。保持回路４０６は、演算結果Ｔｋ＋１を保持する。
【０１２９】
続いて、カウンタｋが反復回数ｎと同一となった場合（ステップＳ３６８においてＹＥＳ）、ステップＳ３７２に対応する処理が実行される。
【０１３０】
ステップＳ３７２に対応する処理として、次の処理が実行される。具体的には、サブカウンタｉを“１”にする。入力生成回路４０８は、値ｍｕｌ＿ａに“Ｘ０”を代入して出力する。入力生成回路４１０は、値ｍｕｌ＿ｂに加算値ａｄｄ＿ｑ（すなわち、Ｔｋ＋１）を代入して出力する。そのため、乗算器４１２により算出される乗算値ｍｕｌ＿ｑ１は“Ｘ０＊Ｔｋ＋１”となる。すなわち、“ｋ＋１”回目の逆数の演算結果である逆数Ｘｋ＋１が算出される。
【０１３１】
保持値選択回路４１４は、値ｍｕｌ＿ｑ２に乗算値ｍｕｌ＿ｑ１（すなわち、Ｘｋ＋１）を代入して出力する。保持回路４１６は、値ｍｕｌ＿ｑ２に代入された“ｋ＋１”回目の逆数の演算結果である逆数Ｘｋ＋１を保持する。そして、逆数演算回路１８４は、保持回路４１６に保持されている結果（すなわち、逆数Ｘｎ）を逆数Ｘとして算出する。
【０１３２】
上述した実施の形態２では、逆数演算回路１７２Ａ，１７２Ｂの乗算器および加算器を共有化する構成について説明したが、当該構成に限られない。近似値算出回路１６４における演算でも、式（１）に示されるように乗算および加算が行なわれ、誤差算出回路１６６における演算でも、式（２）に示されるように乗算および加算が行なわれる。そのため、同様の考え方により、近似値算出回路１６４および誤差算出回路１６６の各々で用いられる演算器を、逆数演算回路１８４で用いられる演算器と共有化する構成であってもよい。すなわち、実施の形態１における近似値算出回路１６４、誤差算出回路１６６、逆数演算回路１７２Ａ、逆数演算回路１７２Ｂの各々で用いられる演算器を共有化する構成であってもよい。
【０１３３】
＜利点＞
実施の形態２によると、演算処理回路１６０内に設けられる各回路において用いられる演算器を共有化するように構成したため、実施の形態１と比較して回路規模を削減することができる。
【０１３４】
［実施の形態３］
実施の形態１および２では、ＬＵＴ２１，３１，４１がそれぞれメモリ２０、３０，４０に格納されており、演算精度ＰがＳＦＲ回路１２０に設定される構成について説明した。実施の形態３では、ＬＵＴ２１，３１，４１が演算処理回路１６０に設けられた各回路に格納されており、ＳＦＲ回路１２０から演算精度Ｐを設定するためのレジスタ１２３が削除されている構成について説明する。
【０１３５】
＜全体構成＞
図１３は、実施の形態３に従う半導体装置５Ｂの構成例を示す模式図である。図１３を参照して、半導体装置５Ｂは、ＣＰＵ１０と、除算回路１００Ｂとを含む。半導体装置５Ｂは、半導体装置５Ａからメモリ２０〜４０を削除し、除算回路１００Ａを除算回路１００Ｂに置き換えたものである。
【０１３６】
除算回路１００Ｂは、ＳＦＲ回路１２０Ｂと、ステートマシン回路１４０と、演算処理回路１６０Ｂとを含む。ＳＦＲ回路１２０Ｂは、図１１中のＳＦＲ回路１２０から演算精度Ｐのレジスタ１２３を削除した構成に相当する。
【０１３７】
演算処理回路１６０Ｂは、図１１中の演算処理回路１６０Ａの近似値算出回路１６４、回数算出回路１６８および回数算出回路１７０を、それぞれ近似値算出回路１８６、回数算出回路１８８および回数算出回路１９０に置き換えたものに相当する。
【０１３８】
近似値算出回路１８６は、ＬＵＴ２１を回路内部に有している点で、図１１中の近似値算出回路１６４と異なる。
【０１３９】
回数算出回路１８８は、ニュートンラフソン法の反復計算の回数を得るために利用されるＬＵＴ２０４を有する。ＬＵＴ２０４は、予め定められた演算精度（例えば、８ビット）に対応する、誤差率βのサンプル値βｍａｘ１とニュートンラフソン法の反復計算の回数との関係を示すルックアップテーブルである。例えば、ＬＵＴ２０４は、図４に示すＬＵＴ３１において、８ビット以外の演算精度におけるサンプル値βｍａｘ１とニュートンラフソン法の反復計算の回数とを削除したものである。
【０１４０】
回数算出回路１９０は、簡易演算法の反復計算の回数を求めるために利用されるＬＵＴ２０６を有する。ＬＵＴ２０６は、予め定められた演算精度（例えば、８ビット）に対応する、誤差率βのサンプル値βｍａｘ２と簡易演算法の反復計算の回数との関係を示すルックアップテーブルである。例えば、ＬＵＴ２０６は、図５に示すＬＵＴ４１において、８ビット以外の演算精度におけるサンプル値βｍａｘ２と簡易演算法の反復計算の回数とを削除したものである。
【０１４１】
＜処理手順＞
実施の形態３に従う半導体装置５Ｂは、基本的には図８に示すフローチャートに従って動作する。異なる点としては、ステップＳ３０６，Ｓ３１０，Ｓ３１２の内部処理のみである。
【０１４２】
具体的には、ステップＳ３０６に対応する処理として、近似値算出回路１８６は、絶対値ｄのすべてのビットフィールドをインデックスとして、回路内部に実装されたＬＵＴ２１を参照することにより、近似値Ｘ０を算出する。具体的には、近似値算出回路１８６は、サンプル値ｅ≦絶対値ｄが成立する最も近いサンプル値ｅを特定し、当該特定されたサンプル値ｅに関連付けられた切片ｆおよび傾きｇを取得する。近似値算出回路１８６は、式（１）を用いて線形補間を行なうことにより、逆数の近似値Ｘ０を算出する。
【０１４３】
ステップＳ３１０に対応する処理として、回数算出回路１８８は、誤差率βをインデックスとして、回路内部に実装されたＬＵＴ２０４を参照することにより、反復回数ｍを算出する。具体的には、回数算出回路１８８は、サンプル値βｍａｘ１≧誤差率βが成立する最も近いサンプル値βｍａｘ１を特定し、当該特定されたサンプル値βｍａｘ１に関連付けられた反復回数を取得する。回数算出回路１８８は、取得した反復回数を反復回数ｍとして算出する。
【０１４４】
ステップＳ３１２に対応する処理として、回数算出回路１９０は、誤差率βをインデックスとして、回路内部に実装されたＬＵＴ２０６を参照することにより、反復回数ｎを算出する。具体的には、回数算出回路１９０は、サンプル値βｍａｘ２≧誤差率βが成立する最も近いサンプル値βｍａｘ２を特定し、当該特定されたサンプル値βｍａｘ２に関連付けられた反復回数を取得する。回数算出回路１９０は、取得した反復回数を反復回数ｎとして算出する。
【０１４５】
上述した実施の形態３では、半導体装置５Ｂが、半導体装置５Ａに含まれる逆数演算回路１８４を有する構成について説明したが、当該構成に限られない。例えば、半導体装置５Ｂは、逆数演算回路１８４の代わりに、実施の形態１に従う半導体装置５に含まれる逆数演算回路１７２Ａ，１７２Ｂおよび出力回路１７８を有していてもよい。
【０１４６】
＜利点＞
実施の形態３によると、ＬＵＴが近似値算出回路１８６、回数算出回路１８８および回数算出回路１９０の内部に実装されている。そのため、実施の形態１または２のようにメモリ２０，３０，４０にアクセスしてデータを読み出す時間を省略することができるため、より高速に商Ｑを算出することができる。
【０１４７】
さらに、要求される演算精度が予め定められている場合には、実施の形態３のように演算精度のレジスタを削除し、当該要求される演算精度に対応した専用のＬＵＴを設けることで回路規模を削減することができる。
【０１４８】
［実施の形態４］
実施の形態４では、実施の形態１〜３に従う除算回路がアルゴリズム回路の一部として用いられる構成について説明する。
【０１４９】
図１４は、実施の形態４に従う半導体装置５Ｃの構成例を示す図である。図１４を参照して、半導体装置５Ｃは、ＣＰＵ１０と、アルゴリズム制御回路１０００とを含む。アルゴリズム制御回路１０００は、アルゴリズム制御用ＳＦＲ回路１０１０と、アルゴリズム制御用ステートマシン回路１０２０と、演算回路１０３０，１０４０，１０６０と、除算回路１０５０とを含む。
【０１５０】
アルゴリズム制御用ＳＦＲ回路１０１０は、アルゴリズムの動作を制御するためのパラメータと、演算結果とを格納する。アルゴリズム制御用ステートマシン回路１０２０は、アルゴリズムを構成する演算回路１０３０，１０４０，１０６０、および除算回路１０５０の動作を制御する。演算回路１０３０は、被除数Ｙを生成する。演算回路１０４０は、除数Ｄを生成する。演算回路１０６０は、除算回路１０５０から商Ｑの入力を受け付けて、商Ｑを用いて各種の演算を実行する。
【０１５１】
除算回路１０５０は、実施の形態１に従う除算回路１００からＳＦＲ回路１２０を削除した構成に相当する。除算回路１０５０は、被除数Ｙ、除数Ｄ、起動制御情報等の除算に必要な各種パラメータの入力を受け付けて、商Ｑ、完了通知等の情報を出力する。なお、除算回路１０５０は、実施の形態２に従う除算回路１００ＡからＳＦＲ回路１２０を削除した構成であってもよいし，実施の形態３に従う除算回路１００ＢからＳＦＲ回路１２０Ｂを削除した構成であってもよい。
【０１５２】
図１４を参照しながら、半導体装置５Ｃの動作の一例について説明する。ＣＰＵ１０は、アルゴリズム制御用ＳＦＲ回路１０１０に対してアルゴリズム制御回路１０００を動作させる指示を与える。
【０１５３】
動作開始の指示を受け付けたアルゴリズム制御用ＳＦＲ回路１０１０は、アルゴリズム制御用ステートマシン回路１０２０を起動する。アルゴリズム制御用ステートマシン回路１０２０は、演算回路１０３０に対して起動指示を与える。演算回路１０３０は、演算を行なって被除数Ｙを生成し、アルゴリズム制御用ステートマシン回路１０２０に対して完了通知を出力する。
【０１５４】
アルゴリズム制御用ステートマシン回路１０２０は、演算回路１０４０に対して起動指示を与える。演算回路１０４０は、演算を行なって除数Ｄを生成し、アルゴリズム制御用ステートマシン回路１０２０に対して完了通知を出力する。
【０１５５】
アルゴリズム制御用ステートマシン回路１０２０は、演算回路１０３０および演算回路１０４０の各々から完了通知を受けた後、除算回路１０５０に対して起動指示を与える。除算回路１０５０は、被除数Ｙと除数Ｄとの入力を受け付けて、演算を行なって商Ｑを生成し、アルゴリズム制御用ステートマシン回路１０２０に対して完了通知を出力する。
【０１５６】
アルゴリズム制御用ステートマシン回路１０２０は、除算回路１０５０からの完了通知を受けて後、演算回路１０６０に対して起動指示を与える。演算回路１０６０は、商Ｑの入力を受け付けて、演算を行なってアルゴリズム制御用ステートマシン回路１０２０に対して完了通知を出力する。
【０１５７】
＜利点＞
実施の形態４によると、実施の形態１〜３の利点に加えて、アルゴリズム制御回路１０００により被除数Ｙ、除数Ｄ等が設定されるため、ＣＰＵ１０の処理負荷を軽減させることができる。
【０１５８】
［その他］
（１）上述した実施の形態３では、ＬＵＰ２１、ＬＵＰ２０４、ＬＵＰ２０６のすべてを演算処理回路１６０内に実装する構成について説明したが、当該構成に限られない。例えば、ＬＵＰ２１、ＬＵＰ２０４、ＬＵＰ２０６のうちの少なくとも１つを演算処理回路１６０内に実装する構成であってもよい。
【０１５９】
（２）上述のフローチャートで説明したような制御を実行させるプログラムは、コンピュータに付属するフレキシブルディスク、ＲＯＭ、ＲＡＭおよびメモリカードなどの一時的でないコンピュータ読取り可能な記録媒体にて記録させて、プログラム製品として提供することもできる。あるいは、コンピュータに内蔵するハードディスクなどの記録媒体にて記録させて、プログラムを提供することもできる。また、ネットワークを介したダウンロードによって、プログラムを提供することもできる。
【０１６０】
（３）上述した実施の形態において、その他の実施の形態で説明した処理や構成を適宜採用して実施する場合であってもよい。
【０１６１】
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は上記実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。
【符号の説明】
【０１６２】
５，５Ａ，５Ｂ，５Ｃ  半導体装置、１０  ＣＰＵ、２０，３０，４０  メモリ、１００，１００Ａ，１００Ｂ，１０５０  除算回路、１２０，１２０Ｂ，１０１０  ＳＦＲ回路、１２１〜１２６  レジスタ、１４０  ステートマシン回路、１４２  カウンタ回路、１４４  サブカウンタ回路、１６０，１６０Ａ，１６０Ｂ  演算処理回路、１６２，１８２  符号処理回路、１６４，１８６  近似値算出回路、１６６  誤差算出回路、１６８，１７０，１８８，１９０  回数算出回路、１７２Ａ，１７２Ｂ，１８４  逆数演算回路、１７６  比較器、１７８，２０８，２２８，２３０，２３４  出力回路、１８０，４１２  乗算器、１０３０，１０４０，１０６０  演算回路、２０６，２２６，２３２，４０６，４１６，４１８  保持回路、４００，４０２，４０８，４１０  入力生成回路、４０４  加算器、４１４  保持値選択回路、１０００  アルゴリズム制御回路、１０２０  アルゴリズム制御用ステートマシン回路。
【図１】
2020077038.tif 000011
【図２】
2020077038.tif 000012
【図３】
2020077038.tif 000013
【図４】
2020077038.tif 000014
【図５】
2020077038.tif 000015
【図６】
2020077038.tif 000016
【図７】
2020077038.tif 000017
【図８】
2020077038.tif 000018
【図９】
2020077038.tif 000019
【図１０】
2020077038.tif 000020
【図１１】
2020077038.tif 000021
【図１２】
2020077038.tif 000022
【図１３】
2020077038.tif 000023
【図１４】
2020077038.tif 000024