(57)【要約】【課題】  算術演算を行う方法及び処理装置を提供する。【解決手段】  処理装置及び処理装置において演算を行う方法は、変数に対して行われる算術演算を近似する多項式を決定し、ルックアップテーブルをアドレス指定するための上位ビットを決定し、決定された上位ビットの値を利用して、ルックアップテーブルから多項式の係数を取得し、取得された係数を利用して、多項式の結果値を算出することにより、算術演算を処理する。【選択図】      図１
2017059229.tif 000002
【特許請求の範囲】
【請求項１】
処理装置において算術演算を行う方法であって、
与えられた変数に対して行われる算術演算を近似する多項式を決定する段階と、
前記与えられた変数が属する変数区間に応じて、ルックアップテーブルをアドレス指定するための上位ビットを適応的に決定する段階と、
前記の適応的に決定された上位ビットの値を利用して、前記ルックアップテーブルをアドレス指定することにより、前記ルックアップテーブルから、前記多項式の係数を取得する段階と、
前記の取得された係数を利用して、前記多項式の結果値を算出することにより、前記算術演算を処理する段階と、を含む方法。
【請求項２】
前記ルックアップテーブルのアドレスそれぞれは、
不均一な個数の上位ビットを利用して設定される、請求項１に記載の方法。
【請求項３】
前記ルックアップテーブルのアドレスは、
前記算術演算に入力可能な変数を不均一に区分する変数区間それぞれの大きさに対応する個数の上位ビットを利用して設定される、請求項１に記載の方法。
【請求項４】
前記変数区間を区分するための不均一の程度は、
前記の近似された多項式と、前記算術演算との誤差に基づく、請求項３に記載の方法。
【請求項５】
前記ルックアップテーブルの前記アドレスは、
前記誤差が大きいほどより多くの個数の上位ビットを利用して設定され、前記誤差が小さいほどより少ない個数の上位ビットを利用して設定される、請求項４に記載の方法。
【請求項６】
前記不均一の程度は、
前記算術演算の種類に応じて可変的であり、
前記ルックアップテーブルでは、
前記算術演算の種類に応じて、前記アドレスに利用される上位ビットの個数が可変的である、請求項４または５に記載の方法。
【請求項７】
前記適応的に決定する段階は、
前記与えられた変数が属する前記変数区間の大きさに対応する個数を有する前記上位ビットを決定する、請求項１ないし６のうちいずれか１項に記載の方法。
【請求項８】
前記与えられた変数がｎビット（ｎは、自然数である）であり、前記の決定された上位ビットがｍビット（ｍは、自然数である）である場合、前記の決定された多項式の入力変数は、前記与えられた変数において、（ｎ−ｍ）ビットの下位ビットの値であり、
前記処理する段階は、
前記（ｎ−ｍ）ビットの前記下位ビットの値に対応する前記入力変数、及び前記の取得された係数を用いて、前記多項式の前記結果値を算出することにより、前記算術演算を処理する、請求項１ないし７のうちいずれか１項に記載の方法。
【請求項９】
前記算術演算は、
平方根関数、逆平方根関数、逆数関数、対数関数、指数関数、冪級数関数及び三角関数のうち少なくとも一つを含む初等関数を処理するための演算である、請求項１ないし８のうちいずれか１項に記載の方法。
【請求項１０】
前記ルックアップテーブルのアドレスそれぞれは、
前記算術演算に入力可能な変数を不均一に区分する変数区間それぞれに対応する、請求項１に記載の方法。
【請求項１１】
前記ルックアップテーブルでは、
前記多項式がｋ次多項式である場合、アドレスごとにそれぞれ、前記ｋ次多項式の（ｋ＋１）個の係数がマッピングされている、請求項１ないし１０のうちいずれか１項に記載の方法。
【請求項１２】
請求項１ないし１１のうちいずれか１項に記載の方法をコンピュータに実行させるプログラム。
【請求項１３】
算術演算を行う処理装置であって、
与えられた変数に対して行われる算術演算を近似する多項式を決定する多項式変換部と、
前記与えられた変数が属する変数区間に応じて、メモリデバイスに保存されているルックアップテーブルをアドレス指定するための上位ビットを適応的に決定するアドレス指定部と、
前記の適応的に決定された上位ビットの値を利用して、前記ルックアップテーブルをアドレス指定することにより、前記ルックアップテーブルから、前記多項式の係数を取得する取得部と、
前記の取得された係数を利用して、前記多項式の結果値を算出することにより、前記算術演算を処理する算出部と、を含む処理装置。
【請求項１４】
前記ルックアップテーブルのアドレスは、
不均一な個数の上位ビットを利用して設定される、請求項１３に記載の処理装置。
【請求項１５】
前記ルックアップテーブルのアドレスは、
前記算術演算に入力可能な変数を不均一に区分する変数区間それぞれの大きさに対応する個数の上位ビットを利用して設定される、請求項１３に記載の処理装置。
【請求項１６】
前記変数区間を区分するための不均一の程度は、
前記の近似された多項式と、前記算術演算との誤差に基づき、
前記ルックアップテーブルの前記アドレスは、
前記誤差が大きいほどより多くの個数の上位ビットを利用して設定され、前記誤差が小さいほどより少ない個数の上位ビットを利用して設定される、請求項１５に記載の処理装置。
【請求項１７】
前記不均一の程度は、
前記算術演算の種類に応じて可変的であり、
前記ルックアップテーブルでは、
前記算術演算の種類に応じて、前記アドレスに利用される上位ビットの個数が可変的である、請求項１６に記載の処理装置。
【請求項１８】
前記アドレス指定部は、
前記与えられた変数が属する前記変数区間の大きさに対応する個数を有する前記上位ビットを決定する、請求項１３ないし１７のうちいずれか１項に記載の処理装置。
【請求項１９】
前記与えられた変数がｎビット（ｎは、自然数である）であり、前記の決定された上位ビットがｍビット（ｍは、自然数である）である場合、前記の決定された多項式の入力変数は、前記与えられた変数において、（ｎ−ｍ）ビットの下位ビットの値であり、
前記算出部は、
前記（ｎ−ｍ）ビットの前記下位ビットの値に対応する前記入力変数、及び前記の取得された係数を用いて、前記多項式の前記結果値を算出することにより、前記算術演算を処理する、請求項１３ないし１８のうちいずれか１項に記載の処理装置。
【請求項２０】
前記ルックアップテーブルのアドレスそれぞれは、
前記算術演算に入力可能な変数を不均一に区分する変数区間それぞれに対応する、請求項１３に記載の処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、算術演算を行う方法及び処理装置に関する。
【背景技術】
【０００２】
コンピュータ環境において、プロセッサの役割は、日増しに重要になっている。プロセッサは、高解像度のイメージまたは動画、複雑なソフトウェアアルゴリズムなどを処理する主体であって、デュアル−コアプロセッサ、クアッド−コアプロセッサ、マルチ−スレッディングなどの多様なプロセッサアーキテクチャ技術の発展は、かような周辺技術分野、例えば、イメージ処理分野、ソフトウェアエンジニアリング分野などの発展に直結する。コンピュータ環境内においてプロセッサは、限定されたリソース内で駆動される。例えば、プロセッサとメモリとの通信帯域幅は、性能ボトルネック（performance  bottleneck）のため制限されてしまい、またプロセッサのエネルギー消費も、一定レベル以下に制限されてしまう。従って、最近では、コンピュータ環境の限定されたリソース内において、いかなる方式で処理性能を増大させることができるかということについての研究が多く進められている。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
本発明が解決しようとする課題は、算術演算を行う方法及び処理装置を提供することにある。本実施形態がなすべき技術的課題は、前述のような技術的課題に限定されるものではなく、以下の実施形態から他の技術的課題が類推される。
【課題を解決するための手段】
【０００４】
一側面によれば、処理装置において演算を行う方法は、与えられた変数に対して行われる算術演算を近似する多項式を決定する段階と、前記与えられた変数が属する変数区間に応じて、ルックアップテーブルをアドレス指定するための上位ビットを適応的に決定する段階と、前記の適応的に決定された上位ビットの値を利用して、前記ルックアップテーブルをアドレス指定することにより、前記ルックアップテーブルから、前記多項式の係数を取得する段階と、前記の取得された係数を利用して、前記多項式の結果値を算出することにより、前記算術演算を処理する段階と、を含む。
【０００５】
また、前記ルックアップテーブルのアドレスそれぞれは、不均一な個数の上位ビットを利用して設定される。
【０００６】
また、前記ルックアップテーブルのアドレスは、前記算術演算に入力可能な変数を不均一に区分する変数区間それぞれの大きさに対応する個数の上位ビットを利用して設定される。
【０００７】
また、前記変数区間を区分するための不均一の程度は、前記の近似された多項式と、前記算術演算との誤差に基づく。
【０００８】
また、前記ルックアップテーブルの前記アドレスは、前記誤差が大きいほどより多くの個数の上位ビットを利用して設定され、前記誤差が小さいほどより少ない個数の上位ビットを利用して設定される。
【０００９】
また、前記不均一の程度は、前記算術演算の種類に応じて可変的であり、前記ルックアップテーブルでは、前記算術演算の種類に応じて、前記アドレスに利用される上位ビットの個数が可変的である。
【００１０】
また、前記適応的に決定する段階は、前記与えられた変数が属する前記変数区間の大きさに対応する個数を有する前記上位ビットを決定する。
【００１１】
また、前記与えられた変数がｎビット（ｎは、自然数である）であり、前記の決定された上位ビットがｍビット（ｍは、自然数である）である場合、前記の決定された多項式の入力変数は、前記与えられた変数において、（ｎ−ｍ）ビットの下位ビットの値であり、前記処理する段階は、前記（ｎ−ｍ）ビットの前記下位ビットの値に対応する前記入力変数、及び前記の取得された係数を用いて、前記多項式の前記結果値を算出することにより、前記算術演算を処理する。
【００１２】
また、前記算術演算は、平方根関数、逆平方根関数、逆数関数、対数関数、指数関数、冪級数関数及び三角関数のうち少なくとも一つを含む初等関数を処理するための演算である。
【００１３】
また、前記ルックアップテーブルのアドレスそれぞれは、前記算術演算に入力可能な変数を不均一に区分する変数区間それぞれに対応する。
【００１４】
また、前記ルックアップテーブルでは、前記多項式がｋ次多項式である場合、アドレスごとにそれぞれ、前記ｋ次多項式の（ｋ＋１）個の係数がマッピングされている。
【００１５】
他の側面によれば、前記方法をコンピュータに実行させるプログラムを提供する。
【００１６】
さらに他の側面によれば、前記プログラムを記録したコンピュータで読み取り可能な記録媒体を提供する。
【００１７】
さらに他の側面によれば、演算を行う処理装置は、与えられた変数に対して行われる算術演算を近似する多項式を決定する多項式変換部と、前記与えられた変数が属する変数区間に応じて、メモリデバイスに保存されているルックアップテーブルをアドレス指定するための上位ビットを適応的に決定するアドレス指定部と、前記の適応的に決定された上位ビットの値を利用して、前記ルックアップテーブルをアドレス指定することにより、前記ルックアップテーブルから、前記多項式の係数を取得する取得部と、前記の取得された係数を利用して、前記多項式の結果値を算出することにより、前記算術演算を処理する算出部と、を含む。
【００１８】
また、前記ルックアップテーブルのアドレスは、不均一な個数の上位ビットを利用して設定される。
【００１９】
また、前記ルックアップテーブルのアドレスは、前記算術演算に入力可能な変数を不均一に区分する変数区間それぞれの大きさに対応する個数の上位ビットを利用して設定される。
【００２０】
また、前記変数区間を区分するための不均一の程度は、前記の近似された多項式と、前記算術演算との誤差に基づき、前記ルックアップテーブルの前記アドレスは、前記誤差が大きいほどより多くの個数の上位ビットを利用して設定され、前記誤差が小さいほどより少ない個数の上位ビットを利用して設定される。
【００２１】
また、前記不均一の程度は、前記算術演算の種類に応じて可変的であり、前記ルックアップテーブルでは、前記算術演算の種類に応じて、前記アドレスに利用される上位ビットの個数が可変的である。
【００２２】
また、前記アドレス指定部は、前記与えられた変数が属する前記変数区間の大きさに対応する個数を有する前記上位ビットを決定する。
【００２３】
また、前記与えられた変数がｎビット（ｎは、自然数である）であり、前記の決定された上位ビットがｍビット（ｍは、自然数である）である場合、前記の決定された多項式の入力変数は、前記与えられた変数において、（ｎ−ｍ）ビットの下位ビットの値であり、前記算出部は、前記（ｎ−ｍ）ビットの前記下位ビットの値に対応する前記入力変数、及び前記の取得された係数を用いて、前記多項式の前記結果値を算出することにより、前記算術演算を処理する。
【００２４】
また、前記ルックアップテーブルのアドレスそれぞれは、前記算術演算に入力可能な変数を不均一に区分する変数区間それぞれに対応する。
【発明の効果】
【００２５】
本発明によれば、ルックアップテーブルをアドレス指定するために利用される上位ビットの個数を不均一に設定することにより、算術演算と、算術演算を近似する多項式との誤差を小さくすることができるので、処理装置は、さらに正確で精密な算術演算を行うことができる。
【図面の簡単な説明】
【００２６】
【図１】一実施形態によるコンピュータシステムのブロック図である。
【図２】一実施形態による、多項式を利用して初等関数を近似することについて説明するための図面である。
【図３Ａ】一実施形態によって、初等関数ｆ（Ｘ）を計算するための算術演算を近似することについて説明するための図面である。
【図３Ｂ】一実施形態によって、処理装置が図３Ａの算術演算を行うことについて説明するための図面である。
【図４Ａ】他の実施形態によって、初等関数ｆ（Ｘ）を計算するための算術演算を近似することについて説明するための図面である。
【図４Ｂ】他の実施形態によって、処理装置が図４Ａの算術演算を行うことについて説明するための図面である。
【図５】変数区間の大きさが同一である場合について説明するための図面である。
【図６】一実施形態による処理装置の詳細構成を図示したブロック図である。
【図７】一実施形態によるルックアップテーブルの例示を図示した図面である。
【図８】一実施形態による、変数区間、上位ビットの個数及びアドレスの関係について説明するための図面である。
【図９】一実施形態による、上位ビットの個数と変数区間との関係について説明するための図面である。
【図１０】一実施形態によって、処理装置において、ルックアップテーブルを利用して、算術演算を近似する多項式を計算する過程について説明するための図面である。
【図１１】一実施形態によって、１０ビット変数Ｘから取得された、二次多項式に入力される値について説明するための図面である。
【図１２】他の実施形態によるルックアップテーブルの例示を図示した図面である。
【図１３】他の実施形態によって、処理装置において、ルックアップテーブルを利用して、算術演算を近似する多項式を計算する過程について説明するための図面である。
【図１４】他の実施形態によって、ルックアップテーブルのアドレスを設定するための上位ビットの個数を決定する方式について説明するための図面である。
【図１５】固定された個数の上位ビットを利用して、ルックアップテーブルのアドレスを設定する場合について説明するための図面である。
【図１６】一実施形態によって、初等関数ｌｏｇ２（Ｘ）の場合、ルックアップテーブルのアドレスを設定するための上位ビットの個数を決定する方式について説明するための図面である。
【図１７】一実施形態によって、初等関数１／Ｘの場合、ルックアップテーブルのアドレスを設定するための上位ビットの個数を決定する方式について説明するための図面である。
【図１８】一実施形態によって、初等関数√Ｘの場合、ルックアップテーブルのアドレスを設定するための上位ビットの個数を決定する方式について説明するための図面である。
【図１９】一実施形態によって、初等関数１／√Ｘの場合、ルックアップテーブルのアドレスを設定するための上位ビットの個数を決定する方式について説明するための図面である。
【図２０】一実施形態によって、初等関数ｅＸの場合、ルックアップテーブルのアドレスを設定するための上位ビットの個数を決定する方式について説明するための図面である。
【図２１】一実施形態によって、初等関数ｓｉｎ（Ｘ）の場合、ルックアップテーブルのアドレスを設定するための上位ビットの個数を決定する方式について説明するための図面である。
【図２２】一実施形態による、処理装置において演算を行う方法のフローチャートである。
【発明を実施するための形態】
【００２７】
本実施形態で使用される用語について、本実施形態での機能を考慮しながら、可能な限り現在広く使用されている一般的な用語を選択したが、それは、当技術分野に従事する技術者の意図、判例または新たな技術の出現などによって異なりもする。また、特定の場合は、任意に選定された用語もあり、その場合、当該実施形態の説明部分において、詳細にその意味を記載する。従って、本実施形態で使用される用語は、単純な用語の名称ではない、その用語が有する意味と、本実施形態の全般にわたる内容とを基に定義されなければならない。
【００２８】
実施形態に係わる説明において、ある部分が他の部分と接続されているとするとき、それは、直接的に接続されている場合だけではなく、その中間に、他の構成要素を挟んで電気的に接続されている場合も含む。また、ある部分がある構成要素を含むとするとき、それは、特別に反対になる記載がない限り、他の構成要素を除くものではなく、他の構成要素をさらに含んでもよいことを意味する。また、実施形態に記載された「・・・部」、「・・・モジュール」という用語は、少なくとも１つの機能や動作を処理する単位を意味し、それは、ハードウェアまたはソフトウェアによって具現化されるか、あるいはハードウェアとソフトウェアとの組合せによって具現化される。
【００２９】
本実施形態で使用される「構成される」または「含む」というような用語は、明細書に記載された多くの構成要素、あるいは多くの段階のいずれも必ず含むものであると解釈されるべきではなく、そのうち一部の構成要素、または一部の段階は、含まれないこともあり、または追加的な構成要素または段階をさらに含んでもよいと解釈されなければならない。
【００３０】
下記実施形態に係わる説明は、権利範囲を限定するものであると解釈されてはならず、当該技術分野の当業者であるならば、容易に類推することができるものは、実施形態の権利範囲に属するものであると解釈されなければならない。以下、添付された図面を参照しながら、例示のために過ぎない実施形態について詳細に説明する。
【００３１】
図１は、一実施形態によるコンピュータシステムのブロック図である。図１を参照すると、コンピュータシステム１は、ＣＰＵ（central  processing  unit）１１、ＧＰＵ（graphics  processing  unit）１２及びメモリデバイス２０を含む。ここで、ＣＰＵ１１及びＧＰＵ１２は、処理装置に該当するものであり、処理装置の範疇には、ＣＰＵ１１及びＧＰＵ１２以外にも、他種のプロセッサが含まれてもよい。なお、図１に図示されたコンピュータシステム１には、実施形態に係わる構成要素だけが図示されている。従って、図１に図示された構成要素以外に、他の汎用的な構成要素がさらに含まれてもよいことは、当該技術分野の当業者であるならば、理解することができるであろう。
【００３２】
コンピュータシステム１の例として、デスクトップコンピュータ、ノート型パソコン、スマートフォン、ＰＤＡ（personal  digital  assistant）、携帯型メディアプレーヤ、ビデオゲーム用コンソール、テレビセットトップボックス、タブレットデバイス、電子書籍リーダ、ウェアラブルデバイスなどを挙げることができるが、それらに限定されるものではない。すなわち、それら以外にも、コンピュータシステム１の範疇には、多様な装置が含まれてもよい。
【００３３】
ＣＰＵ１１及びＧＰＵ１２のような処理装置は、各種演算を処理するハードウェアに該当する。ＣＰＵ１１は、コンピュータシステム１の全般的な機能を制御するハードウェアとして動作し、他の構成要素であるＧＰＵ１２及びメモリデバイス２０を制御することができる。ＣＰＵ１１は、コンピュータシステム１の機能を制御するための多種の演算を行うことができる。ＧＰＵ１２は、コンピュータシステム１のグラフィックス処理機能を制御するハードウェアとして動作することができる。すなわち、ＧＰＵ１２は、OpenＧＬ（登録商標）（open  graphic(s)  library）、DirectＸ（登録商標）、ＣＵＤＡ（compute  unified  device  architecture）のような多種のグラフィックスパイプラインを実行しながら、グラフィックスパイプラインに係わる演算（例えば、シェーディング演算）を行うことができる。
【００３４】
メモリデバイス２０は、ＤＲＡＭ（dynamic  random  access  memory）、ＳＲＡＭ（static  random  access  memory）のようなＲＡＭ（random  access  memory）に該当するか、あるいはＲＯＭ（read  only  memory）、ＥＥＰＲＯＭ（electrically  erasable  and  programmable  read  only  memory）のようなデバイスに該当する。すなわち、メモリデバイス２０は、ＣＰＵ１１またはＧＰＵ１２で処理が完了したデータ（例えば、算術演算の結果）を保存するか、あるいはＣＰＵ１１またはＧＰＵ１２で実行されるデータ（例えば、ソースコード）を提供するデバイスに該当する。
【００３５】
本実施形態によれば、メモリデバイス２０は、ＣＰＵ１１及びＧＰＵ１２のような処理装置が参照可能なルックアップテーブル（ＬＵＴ：look-up  table）２００を保存することができる。ＣＰＵ１１またはＧＰＵ１２は、算術演算を行うために、ルックアップテーブル２００にアクセスすることにより、算術演算の実行に必要なデータを取得することができる。ここで、ルックアップテーブル２００は、アドレスそれぞれに、数値データがマッピングされたテーブルである。
【００３６】
算術演算は、例えば、平方根演算、逆平方根演算、逆数演算、対数演算、指数演算、冪級数演算、三角関数演算などであるが、それらに限定されるものではない。平方根関数、逆平方根関数、逆数関数、対数関数、指数関数、冪級数関数、三角関数などは、初等関数（elementary  function）であり、ＣＰＵ１１またはＧＰＵ１２は、かような初等関数の計算を介して、コンピュータシステム１の機能制御またはグラフィックス処理のための算術演算を行うことができる。
【００３７】
例えば、ＣＰＵ１１またはＧＰＵ１２が、ある種の算術演算を行うとき、ＣＰＵ１１またはＧＰＵ１２は、ルックアップテーブル２００を参照し、特定アドレスにマッピングされた特定数値データを取得し、取得された数値データを利用して、算術演算をさらに迅速に処理することができる。
【００３８】
図２は、一実施形態による、多項式を利用して初等関数を近似することについて説明するための図面である。
【００３９】
ＰＰＡ（performance,  power,  area）側面で、平方根演算、逆平方根演算、逆数演算、対数演算、指数演算、冪級数演算、三角関数演算のような初等関数を直接計算するための回路（ハードウェアロジック）が、処理装置内部に具現化されることは、非効率的である。また、たとえばソフトウェアレベルで、前述のような種類の初等関数が処理されるとしても、そのソースコードには、多くのインストラクション呼び出しや、多くの分岐文が含まれ、同様に非効率的である。従って、前述のような種類の初等関数を多項式に近似し、多項式計算が、処理装置の処理性能側面においてさらに適切な場合がある。
【００４０】
図２を参照すると、ターゲット初等関数２０１（例えば、Ｙ＝ｆ（Ｘ））は、ｋ次（ｋは、自然数である）多項式に近似される。例えば、ターゲット初等関数２０１は、二次多項式２０２（例えば、ａＸ’２＋ｂＸ’＋ｃ）に近似される。ただし、二次多項式２０２は、ターゲット初等関数２０１から近似されたものであるので、誤差２０５が存在する。従って、ターゲット初等関数２０１に係わるさらに正確な結果を求めるためには、誤差２０５を小さくすることが必要である。
【００４１】
図３Ａは、一実施形態によって、初等関数ｆ（Ｘ）を計算するための算術演算を近似することについて説明するための図面である。
【００４２】
図３Ａを参照すると、初等関数ｆ（Ｘ）３０１を計算するための算術演算は、互いに異なる複数の二次多項式３０３，３０４，３０５及び３０６で近似される。さらに詳細に説明すると、初等関数３０１（すなわち、算術演算）には、変数Ｘが与えられ、変数Ｘは、変数区間１，変数区間２，変数区間３及び変数区間４に区分される（split）。変数区間１において初等関数３０１は、二次多項式ａ１Ｘ’２＋ｂ１Ｘ’＋ｃ１（３０３）で近似され、変数区間２において初等関数３０１は、二次多項式ａ２Ｘ’２＋ｂ２Ｘ’＋ｃ２（３０４）で近似され、変数区間３において初等関数３０１は、二次多項式ａ３Ｘ’２＋ｂ３Ｘ’＋ｃ３（３０５）で近似され、変数区間４において初等関数３０１は、二次多項式ａ４Ｘ’２＋ｂ４Ｘ’＋ｃ４（３０６）で近似される。変数Ｘ’は、二次多項式の計算のために入力される、与えられた変数Ｘに由来する変数である。
【００４３】
本実施形態において、変数区間という用語は、算術演算に入力可能な変数の範囲を区分したことを意味し、変数区間それぞれの大きさは、不均一である。図３Ａに図示されているように、変数区間１，変数区間２，変数区間３及び変数区間４の大きさは、不均一である。変数区間１，変数区間２，変数区間３及び変数区間４それぞれの大きさは、近似された二次多項式と算術演算との誤差に基づくものであり、誤差が大きいほど変数区間の大きさが小さく、誤差が小さいほど変数区間の大きさが大きいように区分される。
【００４４】
図３Ｂは、一実施形態によって、処理装置が図３Ａの算術演算を行うことについて説明するための図面である。図３Ｂを参照すると、近似される二次多項式３０３，３０４，３０５及び３０６で利用される係数ａ１，ｂ１，ｃ１，・・・，ａ４，ｂ４，ｃ４は、ルックアップテーブル３１０に保存されている。処理装置は、ルックアップテーブル３１０をアドレス指定することにより、初等関数３０１の変数Ｘ１，Ｘ２，Ｘ３，・・・それぞれに対応する係数をルックアップテーブル３１０から取得し、取得された係数を利用して、近似される二次多項式３０３，３０４，３０５及び３０６を計算することにより、初等関数３０１の算術演算を行うことができる。
【００４５】
一方、処理装置は、与えられた変数に対応するアドレスを利用して、ルックアップテーブル３１０を参照することができる。例えば、与えられた変数Ｘ１が変数区間１に属する場合、処理装置は、変数区間１に対応するアドレスＡｄｄｒ．ｉでルックアップテーブル３１０をアドレス指定し、係数ａ１，ｂ１，ｃ１を取得することができる。また、与えられた変数Ｘ２が変数区間２に属する場合、処理装置は、変数区間２に対応するアドレスＡｄｄｒ．ｉ＋１でルックアップテーブル３１０をアドレス指定し、係数ａ２，ｂ２，ｃ２を取得することができる。
【００４６】
図４Ａは、他の実施形態によって、初等関数ｆ（Ｘ）を計算するための算術演算を近似することについて説明するための図面である。図４Ｂは、他の実施形態によって、処理装置が図４Ａの算術演算を行うことについて説明するための図面である。
【００４７】
図４Ａを参照すると、初等関数ｆ（Ｘ）４０１を計算するための算術演算は、互いに異なる複数の三次多項式４０３，４０４，４０５及び４０６で近似される。初等関数４０１（すなわち、算術演算）には、変数Ｘが与えられ、変数Ｘは、変数区間ａ，変数区間ｂ，変数区間ｃ及び変数区間ｄに区分される。前述のように、本実施形態によれば、変数区間ａ，変数区間ｂ，変数区間ｃ及び変数区間ｄの大きさは、不均一である。変数区間ａ，変数区間ｂ，変数区間ｃ及び変数区間ｄそれぞれの大きさは、近似された三次多項式と算術演算との誤差に基づくものであり、誤差が大きいほど変数区間の大きさが小さく、誤差が小さいほど変数区間の大きさが大きいように区分される。
【００４８】
図４Ｂを参照すると、処理装置は、ルックアップテーブル４１０をアドレス指定することにより、初等関数４０１の変数Ｘ１，Ｘ２，Ｘ３，・・・それぞれに対応する係数をルックアップテーブル４１０から取得し、取得された係数を利用して、近似される三次多項式４０３，４０４，４０５及び４０６を計算することにより、初等関数４０１の算術演算を行うことができる。
【００４９】
すなわち、図３Ａないし図４Ｂを参照すると、本実施形態によって近似された多項式を利用した処理装置の算術演算は、いかなる次数の多項式で近似されても、類似した方式で実行される。
【００５０】
図５は、変数区間の大きさが同一である場合について説明するための図面である。図５を参照すると、先に図３Ａ及び図４Ａで説明したものと異なり、変数区間の大きさがいずれも同一である。前述の種類の初等関数のグラフでは、いずれも曲線区間と特定値に収束している収束区間とが存在する。曲線区間と収束区間とがいずれも均一な大きさの変数区間によって区分される場合、曲線区間での初等関数と、近似された多項式との誤差は、収束区間での初等関数と、近似された多項式との誤差より大きくなる。従って、変数区間の大きさがいずれも同一である場合には、初等関数グラフの曲線区間での大きい誤差によって、正確な算術演算の実行結果を得難い。一方、本実施形態によれば、初等関数と近似された多項式との誤差を考慮し、変数区間の大きさは、不均一に区分される。
【００５１】
図６は、一実施形態による処理装置の詳細構成を図示したブロック図である。図６を参照すると、処理装置１０は、多項式変換部１１０、アドレス指定部１２０、取得部１３０及び算出部１４０を含んでよい。なお、図６に図示された処理装置１０には、一実施形態に係わる構成要素だけが図示されている。従って、図６に図示された構成要素以外に、他の汎用的な構成要素がさらに含まれてもよいことは、当該技術分野の当業者であるならば、理解することができるであろう。
【００５２】
処理装置１０は、先に図１で説明したＣＰＵ１１に該当するか、ＧＰＵ１２に該当するか、その他の種類のプロセッサに該当するか、あるいはそれらをいずれも含むように具現化される。
【００５３】
多項式変換部１１０は、与えられた変数に対して行われる算術演算を近似する多項式を決定する。多項式変換部１１０は、算術演算をいかなる次数の多項式で近似するかを決定する。本実施形態では、説明の便宜のために、算術演算が二次多項式または三次多項式で近似されるとして説明するが、本実施形態は、それらに限定されるものではない。
【００５４】
アドレス指定部１２０は、与えられた変数が属する変数区間に応じて、メモリデバイス２０に保存されているルックアップテーブル（例えば、ルックアップテーブル２００（図１））をアドレス指定するための上位ビットを適応的に決定する。例えば、もし与えられた変数がｎビット（ｎは、自然数である）である場合、アドレス指定部１２０は、ｎビット変数が属する変数区間に応じて、ｎビットのうちｍビット（ｍは、自然数である）の上位ビットを決定することができる。適応的に上位ビットが決定されるという意味は、変数区間に応じて決定される上位ビットの個数が適応的に異なることを示す。従って、適応的という用語は、動的（dynamic）という用語で置き換えられてもよい。
【００５５】
アドレス指定部１２０は、与えられた変数が属する変数区間の大きさに対応する個数を有する上位ビットを決定することができる。例えば、変数区間が相対的に大きい大きさを有する場合、アドレス指定部１２０は、相対的に少ない個数の上位ビットを決定し、反対に、変数区間が相対的に小さい大きさを有する場合、アドレス指定部１２０は、相対的に多くの個数の上位ビットを決定することができる。
【００５６】
アドレス指定部１２０で上位ビットを決定する理由は、ルックアップテーブルをアドレス指定するためである。すなわち、アドレス指定部１２０は、決定された上位ビットを利用して、ルックアップテーブルを参照することができる。
【００５７】
ルックアップテーブルについて説明すると、ルックアップテーブルのアドレスそれぞれは、変数区間それぞれに対応し、不均一な個数の上位ビットを利用して設定される。さらに詳細には、ルックアップテーブルのアドレスは、算術演算に入力可能な変数を不均一に区分する変数区間それぞれの大きさに対応する個数の上位ビットを利用して設定される。ここで、変数区間を区分するための不均一の程度は、先に図３Ａまたは図４Ａで説明したように、近似された多項式と算術演算との誤差に基づく。ルックアップテーブルのアドレスは、誤差が大きいほどより多くの個数の上位ビットを利用して設定され、誤差が小さいほどより少ない個数の上位ビットを利用して設定される。
【００５８】
ルックアップテーブルでは、多項式がｋ次多項式である場合、アドレスごとにそれぞれ、ｋ次多項式の（ｋ＋１）個の係数がマッピングされている。例えば、二次多項式に係わるルックアップテーブルでは、１つのアドレスに３個の係数がマッピングされており、三次多項式に係わるルックアップテーブルでは、１つのアドレスに４個の係数がマッピングされている。図１などで、メモリデバイス２０には、１つのルックアップテーブルが保存されているように図示されたが、本実施形態によれば、メモリデバイス２０には、算術演算の種類ごとに、そして多項式の次数ごとに、互いに異なるルックアップテーブルが保存されていてもよい。
【００５９】
一方、算術演算の種類に応じて、例えば、対数演算であるか、あるいは平方根演算であるかに応じて、変数区間を区分するための不均一の程度は、可変的である。それにより、算術演算の種類に応じて、ルックアップテーブルでは、アドレスに利用される上位ビットの個数が可変的である。
【００６０】
それ以外に、アドレス指定部１２０による上位ビットの決定とルックアップテーブルとの関係については、以下の図面を参照してさらに詳細に説明する。
【００６１】
取得部１３０は、適応的に決定された上位ビットの値を利用して、ルックアップテーブルをアドレス指定することにより、ルックアップテーブルから多項式の係数を取得する。例えば、図３Ａ及び図３Ｂを参照すると、多項式変換部１１０によって決定された多項式が、二次多項式３０３，３０４，３０５及び３０６である場合、取得部１３０は、ルックアップテーブル３１０から、二次多項式３０３，３０４，３０５及び３０６の係数ａ１，ｂ１，ｃ１，・・・，ａ４，ｂ４，ｃ４を取得することができる。
【００６２】
算出部１４０は、取得された係数を利用して、多項式の結果値を算出することにより、算術演算を処理する。すなわち、多項式の結果値は、算術演算の処理結果と見なされる。先に例として挙げたように、与えられた変数がｎビットであり、決定された上位ビットがｍビットである場合、決定された多項式の入力変数Ｘ’は、与えられた変数において、（ｎ−ｍ）ビットの下位ビットの値である。算出部１４０は、（ｎ−ｍ）ビットの下位ビットの値に対応する入力変数Ｘ’、及び取得された係数を用いて、多項式の結果値を算出することにより、算術演算を処理する。
【００６３】
メモリデバイス２０には、ルックアップテーブルが事前に保存されている。ここで、メモリデバイス２０には、前述のように、算術演算の種類に応じた、あるいはさまざまな次数の多項式に応じた別途の多様なルックアップテーブルが保存されている。メモリデバイス２０に保存されているルックアップテーブルにおいて、アドレスに利用される上位ビットの個数、係数の値などは、いずれもコンピュータシステム１の使用環境に応じて可変的である。すなわち、ユーザの指定通りにルックアップテーブル内のデータは変更され、いずれか１つの形態に限定されるものではない。ただし、ルックアップテーブルにおいて、アドレスは、利用される上位ビットの個数が不均一に設定される。
【００６４】
図７は、一実施形態によるルックアップテーブルの例示を図示した図面である。図７を参照すると、ルックアップテーブル７０１は、アドレス項目と係数項目とを含む。例えば、ルックアップテーブル７０１が二次多項式に係わる場合、ルックアップテーブル７０１では、１つのアドレスに二次多項式の３個の係数がマッピングされている。例えば、処理装置１０のアドレス指定部１２０が、アドレスＡｄｄｒ．ｉへのアドレス指定を要求した場合、取得部１３０は、ルックアップテーブル７０１から、係数ａ１，ｂ１，ｃ１を取得することができる。なお、図７に図示されたルックアップテーブル７０１は、説明の便宜のために図示されたに過ぎず、ルックアップテーブルの形態は、多様に変更される。従って、本実施形態は、図７のルックアップテーブル７０１によって限定されるものではない。
【００６５】
図８は、一実施形態による、変数区間、上位ビットの個数及びアドレスの関係について説明するための図面である。図８を参照すると、算術演算が、ｌｏｇ２（Ｘ）の初等関数である場合について図示されている。初等関数ｌｏｇ２（Ｘ）に入力可能な変数は、不均一な大きさの変数区間８０１，８０２及び８０３に区分される。前述のように、初等関数ｌｏｇ２（Ｘ）において変数は、急な曲線区間に該当する変数区間８０１、相対的にそれほど急ではない曲線区間に該当する変数区間８０２、及び収束区間に近い変数区間８０３に区分される。ただし、図８において、説明の便宜のために、変数区間８０１及び８０３の外側については、別途説明しない。
【００６６】
変数区間８０１，８０２及び８０３それぞれの大きさは、近似される多項式と初等関数ｌｏｇ２（Ｘ）とに基づいて定義される。例えば、変数区間８０１及び８０２のいずれに対しても１つの多項式で近似される場合には、変数区間８０３と異なり、誤差が大きくなる。従って、変数区間８０１及び８０２は、２個に分離され、それぞれの多項式で近似され、それにより誤差を比較的小さくすることができる。ただし、そのとき、変数区間８０１は、変数区間８０２より小さい大きさに区分されると、誤差をさらに一層小さくすることができる。その結果、変数２−ｎ−４と変数２−ｎ−１との間の変数は、不均一な大きさの変数区間８０１，８０２及び８０３に区分される。
【００６７】
変数区間８０１，８０２及び８０３の大きさが不均一であるので、各変数区間８０１，８０２及び８０３に含まれる変数の個数にも差がある。従って、ある変数区間の大きさが大きい場合には、アドレスに利用される上位ビットの個数が少なくなり、ある変数区間の大きさが小さい場合には、アドレスに利用される上位ビットの個数が多くなるであろう。すなわち、変数区間８０１，８０２及び８０３の大きさが不均一であるのは、アドレスに利用される上位ビットの個数が不均一であるということに帰結される。例えば、候補変数リスト８１０を参照すると、変数区間８０１に対応する上位ビットは、「０００００１」であり、変数区間８０２に対応する上位ビットは、「００００１」であり、変数区間８０３に対応する上位ビットは、「０００１」である。
【００６８】
初等関数ｌｏｇ２（Ｘ）に係わるＬＵＴアドレス指定８２０によれば、例えば、２−ｎ−４≦Ｘ＜２−ｎ−３である場合は、変数Ｘが変数区間８０１に属する場合であり、上位ビット「０００００１」に対応するアドレスＡｄｄｒ．ｉがアドレス指定され、２−ｎ−３≦Ｘ＜２−ｎ−２である場合は、変数Ｘが変数区間８０２に属する場合であり、上位ビット「００００１」に対応するアドレスＡｄｄｒ．ｉ＋１がアドレス指定され、２−ｎ−２≦Ｘ＜２−ｎ−１である場合は、変数Ｘが変数区間８０３に属する場合であり、上位ビット「０００１」に対応するアドレスＡｄｄｒ．ｉ＋２がアドレス指定される。
【００６９】
図６と関連させて説明すると、アドレス指定部１２０は、現在与えられた１０ビットの変数Ｘが、例えば、変数区間８０１に属すると判定されれば、候補変数リスト８１０に基づいて、変数Ｘの６個の上位ビット「０００００１」を決定することができる。その後、取得部１３０は、上位ビット「０００００１」に対応するアドレスが、Ａｄｄｒ．ｉであると決定し、ルックアップテーブルを、アドレスＡｄｄｒ．ｉでアドレス指定することにより、変数区間８０１での初等関数ｌｏｇ２（Ｘ）を近似する多項式の係数を取得することができる。
【００７０】
図９は、一実施形態による、上位ビットの個数と変数区間との関係について説明するための図面である。
【００７１】
前述のように、変数区間の大きさが大きいほど、より少ない個数の上位ビットが対応する。反対に、変数区間の大きさが小さいほど、より多くの個数の上位ビットが対応する。
【００７２】
図９を参照すると、変数区間９０１に属する変数は、３個の上位ビット「０１０」であり、アドレスＡｄｄｒ．ｉ’がアドレス指定され、変数区間９０２に属する変数は、５個の上位ビット「１１１１０」であり、アドレスＡｄｄｒ．ｉ”がアドレス指定される。変数区間９０１には、「０１００００００００」から「０１０１１１１１１１」の１０ビット変数が属し、変数区間９０２には、「１１１１００００００」から「１１１１０１１１１１」の１０ビット変数が属することができる。すなわち、変数区間９０１には、変数区間９０２よりさらに多くの変数が属するので、変数区間９０１の大きさは、変数区間９０２の大きさより大きい。
【００７３】
このように、不均一な個数の上位ビットを利用して、ルックアップテーブルのアドレスを設定することにより、アドレスが不均一に区分された多様な大きさの変数区間に対応する。一方、変数区間の不均一の程度は、近似された多項式と、算術演算との誤差に基づくものであり、算術演算の種類、多項式の次数などに応じて、ルックアップテーブルを生成するユーザが任意に定義することができる要素（factor）である。
【００７４】
図１０は、一実施形態によって、処理装置において、ルックアップテーブルを利用して、算術演算を近似する多項式を計算する過程について説明するための図面である。図１０を参照すると、多項式変換部１１０は、まず算術演算ｆ（Ｘ）を二次多項式Ｃ０＋Ｃ１Ｘ’＋Ｃ２Ｘ’２で近似すると決定する。処理装置１０で処理される算術演算に対して、ｎビットの変数Ｘ１００１が入力される。ここで、算術演算は、前述の種類の初等関数である。アドレス指定部１２０は、ｎビットの変数Ｘ１００１が属する変数区間に応じて、適応的な個数の上位ビットを決定する。取得部１３０は、決定された上位ビットの値を利用して、ルックアップテーブル１０１０をアドレス指定することにより、ルックアップテーブル１０１０から、二次多項式Ｃ０＋Ｃ１Ｘ’＋Ｃ２Ｘ’２の係数であるＣ０、Ｃ１及びＣ２を取得する。算術演算に与えられたｎビットの変数Ｘ１００１と異なり、二次多項式に入力される変数Ｘ’は、ｎビットの変数Ｘ１００１において、決定された上位ビットを除いた残りのｍビットの下位ビットの値に該当する。算出部１４０は、ｍビットの下位ビットの値を二乗してＸ’２を計算する。最後に、算出部１４０は、係数Ｃ０，Ｃ１及びＣ２と、Ｘ’及びＸ’２とを利用して、近似された二次多項式Ｃ０＋Ｃ１Ｘ’＋Ｃ２Ｘ’２の結果値を算出することにより、算術演算を処理する。
【００７５】
図１１は、一実施形態によって、１０ビット変数Ｘから取得された、二次多項式に入力される値について説明するための図面である。図１１を参照すると、初等関数ｌｏｇ２（Ｘ）を計算するための算術演算に入力された１０ビット変数Ｘは、「０１００１０１０ｘｘ」であると仮定する。アドレス指定部１２０は、変数Ｘ「０１００１０１０ｘｘ」が属する変数区間（例えば、変数区間９０１（図９））に応じて、３個の上位ビット「０１０」を決定する。図９で仮定したように、３個の上位ビット「０１０」は、ルックアップテーブルのアドレスＡｄｄｒ．ｉ’に対応する。取得部１３０は、アドレスＡｄｄｒ．ｉ’でルックアップテーブルをアドレス指定することにより、ルックアップテーブルから、二次多項式Ｃ０＋Ｃ１Ｘ’＋Ｃ２Ｘ’２（１１００）の係数ａｋ，ｂｋ，ｃｋを取得する。一方、残りの７個の下位ビット「０１０１０ｘｘ」は、二次多項式１１００の入力変数Ｘ’に該当する。算出部１４０は、Ｘ’２を計算し、その後、算出部１４０は、係数ａｋ，ｂｋ，ｃｋと、Ｘ’及びＸ’２とを利用して、二次多項式１１００の結果値を算出することにより、初等関数ｌｏｇ２（Ｘ）の算術演算を処理する。
【００７６】
図１２は、他の実施形態によるルックアップテーブルの例示を図示した図面である。図１２を参照すると、ルックアップテーブル１２０１は、図７のルックアップテーブル７０１と異なり、三次多項式に係わる。従って、ルックアップテーブル１２０１は、１つのアドレスに、三次多項式の４個の係数がマッピングされている。一方、前述のように、メモリデバイス２０は、ルックアップテーブル７０１及びルックアップテーブル１２０１を共に事前に保存し、処理装置１０は、多項式変換部１１０によって決定された多項式の次数に応じて、ルックアップテーブル７０１またはルックアップテーブル１２０１を利用することができる。ただし、本実施形態としては、説明の便宜のために、二次多項式または三次多項式についてのみ説明したが、本実施形態は、それらに限定されるものではない。
【００７７】
図１３は、他の実施形態によって、処理装置において、ルックアップテーブルを利用して、算術演算を近似する多項式を計算する過程について説明するための図面である。図１３を参照すると、二次多項式を計算する過程について説明した図１０と異なり、三次多項式Ｃ０＋Ｃ１Ｘ’＋Ｃ２Ｘ’２＋Ｃ３Ｘ’３を計算するための過程が図示されている。図１０と比較すると、図１３の過程によれば、ルックアップテーブル１３１０から三次項係数Ｃ３が追加して取得され、算出部１４０によって、Ｘ’３が追加して計算されることを除いて、全般的な計算過程は、図１０の過程と類似した方式で実行される。
【００７８】
図１４は、他の実施形態によって、ルックアップテーブルのアドレスを設定するための上位ビットの個数を決定する方式について説明するための図面である。図１４を参照すると、決定方式１４１０は、変数値が大きくなるほど漸進的に小さくなる大きさを有する変数区間に変数が区分された場合を示している。従って、変数値が大きくなるほど、ルックアップテーブルのアドレスに利用される上位ビットの個数は、多くなる。決定方式１４２０は、変数値が大きくなるほど漸進的に大きくなる大きさを有する変数区間に変数が区分された場合を示す。従って、変数値が大きくなるほど、ルックアップテーブルのアドレスに利用される上位ビットの個数は少なくなる。すなわち、ルックアップテーブルのアドレスに利用される上位ビットの個数は、算術演算の種類、多項式の次数、算術演算の正確度、算術演算の精度などに応じて多様に変更される。
【００７９】
図１５は、固定された個数の上位ビットを利用して、ルックアップテーブルのアドレスを設定する場合について説明するための図面である。図１５を参照すると、ルックアップテーブルのアドレスを設定するために、固定された均一の（fixed,  uniform）個数の上位ビットを利用することは、結局、変数区間の大きさが同一であることを意味する。前述のように、初等関数の場合、変数区間の大きさが同一であるならば、初等関数と多項式との誤差が大きい領域及び小さい領域がいずれも存在するので、正確な算術演算の結果を得難い。
【００８０】
図１６は、一実施形態によって、初等関数ｌｏｇ２（Ｘ）の場合、ルックアップテーブルのアドレスを設定するための上位ビットの個数を決定する方式について説明するための図面である。図１６を参照すると、初等関数ｌｏｇ２（Ｘ）のグラフ１６００において変数は、変数区間１６０１，１６０２及び１６０３に区分される。グラフ１６００において、曲線区間に該当する変数区間１６０１それぞれの大きさは、相対的により小さく、収束区間に該当する変数区間１６０３の大きさは、相対的により大きくなる。なお、本実施形態において、曲線区間及び収束区間という用語は、説明の便宜のために使用されたに過ぎず、本実施形態は、それらに限定されるものではない。
【００８１】
変数区間１６０１それぞれに対応するアドレスを設定するために、５個の上位ビットが利用される。すなわち、変数区間１６０１それぞれに対応するアドレスは、「０１０００」、「０１００１」、「０１０１０」、「０１０１１」、「０１１００」及び「０１１０１」の上位ビットを利用して設定される。すなわち、他の変数区間１６０２及び１６０３よりさらに多くの個数の上位ビットでアドレスが設定され、これは、変数区間１６０１それぞれの大きさが、異なる変数区間１６０２及び１６０３の大きさより小さいためである。変数区間１６０２の大きさは、変数区間１６０３の大きさより小さいために、４個の上位ビットでアドレスが設定される。相対的に最大の大きさを有する変数区間１６０３は、３個の上位ビットでアドレスが設定される。
【００８２】
変数区間１６０１，１６０２及び１６０３の大きさが不均一に区分されたのは、結局、初等関数ｌｏｇ２（Ｘ）と多項式との誤差を小さくし、算術演算の正確度または精度を上げるためである。従って、ｎビット（例えば、１０ビット）の変数を利用してアドレス指定されるルックアップテーブルのアドレスを、不均一な個数の上位ビットで設定することにより、初等関数ｌｏｇ２（Ｘ）と多項式との誤差を小さくし、算術演算の正確度または精度を上げることができる。
【００８３】
なお、図１６において、変数区間１６０１，１６０２及び１６０３それぞれの大きさ、及び上位ビットの決定方式１６１０は、説明の便宜のために任意に図示されたものであり、本実施形態は、それらに限定されるものではない。
【００８４】
図１７は、一実施形態によって、初等関数１／Ｘの場合、ルックアップテーブルのアドレスを設定するための上位ビットの個数を決定する方式について説明するための図面である。図１７を参照すると、図１６と同様に、初等関数１／Ｘのグラフ１７００において変数は、不均一な大きさを有する変数区間１７０１，１７０２及び１７０３に区分される。そして、変数区間１７０１，１７０２及び１７０３の不均一な大きさに基づいて、ルックアップテーブルのアドレスを設定するための上位ビットの個数も不均一である。ただし、図１７において、変数区間１７０１，１７０２及び１７０３それぞれの大きさ、及び上位ビットの決定方式１７１０は、説明の便宜のために任意に図示されており、本実施形態は、それらに限定されるものではない。
【００８５】
図１８は、一実施形態によって、初等関数√Ｘの場合、ルックアップテーブルのアドレスを設定するための上位ビットの個数を決定する方式について説明するための図面である。
【００８６】
図１８を参照すると、初等関数√Ｘのグラフ１８００において変数は、不均一な大きさを有する変数区間１８０１，１８０２及び１８０３に区分される。そして、変数区間１８０１，１８０２及び１８０３の不均一な大きさに基づいて、ルックアップテーブルのアドレスを設定するための上位ビットの個数も不均一である。ただし、図１８において、変数区間１８０１，１８０２及び１８０３それぞれの大きさ、及び上位ビットの決定方式１８１０は、説明の便宜のために任意に図示されており、本実施形態は、それらに限定されるものではない。
【００８７】
図１９は、一実施形態によって、初等関数1/√Ｘの場合、ルックアップテーブルのアドレスを設定するための上位ビットの個数を決定する方式について説明するための図面である。図１９を参照すると、初等関数1/√Ｘのグラフ１９００において変数は、不均一な大きさを有する変数区間１９０１，１９０２及び１９０３に区分される。そして、変数区間１９０１，１９０２及び１９０３の不均一な大きさに基づいて、ルックアップテーブルのアドレスを設定するための上位ビットの個数も不均一である。ただし、図１９において、変数区間１９０１，１９０２及び１９０３それぞれの大きさ、及び上位ビットの決定方式１９１０は、説明の便宜のために任意に図示されており、本実施形態は、それらに限定されるものではない。
【００８８】
図２０は、一実施形態によって、初等関数ｅＸの場合、ルックアップテーブルのアドレスを設定するための上位ビットの個数を決定する方式について説明するための図面である。図２０を参照すると、初等関数ｅＸのグラフ２０００において変数は、不均一な大きさを有する変数区間２００１，２００２及び２００３に区分される。そして、変数区間２００１，２００２及び２００３の不均一な大きさに基づいて、ルックアップテーブルのアドレスを設定するための上位ビットの個数も不均一である。ただし、図２０において、変数区間２００１，２００２及び２００３それぞれの大きさ、及び上位ビットの決定方式２０１０は、説明の便宜のために任意に図示されており、本実施形態は、それらに限定されるものではない。
【００８９】
図２１は、一実施形態によって、初等関数ｓｉｎ（Ｘ）の場合、ルックアップテーブルのアドレスを設定するための上位ビットの個数を決定する方式について説明するための図面である。図２１を参照すると、初等関数ｓｉｎ（Ｘ）のグラフ２１００において変数は、不均一な大きさを有する変数区間２１０１，２１０２及び２１０３に区分される。そして、変数区間２１０１，２１０２及び２１０３の不均一な大きさに基づいて、ルックアップテーブルのアドレスを設定するための上位ビットの個数も不均一である。ただし、図２１において、変数区間２１０１，２１０２及び２１０３それぞれの大きさ、及び上位ビットの決定方式２１１０は、説明の便宜のために任意に図示されており、本実施形態は、それらに限定されるものではない。
【００９０】
図１６ないし図２１では、一部の初等関数について、曲線区間と収束区間とに係わる変数区間の大きさを互いに異なるように区分することにより、ルックアップテーブルのアドレスを設定するための上位ビットの個数を不均一に決定することについて説明した。本実施形態は、図１６ないし図２１で説明した初等関数以外にも、他種の初等関数についても同様に適用されることは、当該技術分野の当業者であるならば、理解することができるであろう。
【００９１】
本実施形態によるメモリデバイス２０は、先に図面で説明した上位ビットの決定方式（例えば、決定方式１６１０，１７１０，１８１０，１９１０，２０１０または２１１０）に基づいたアドレスを含むルックアップテーブルが保存されている。また、本実施形態による処理装置１０（アドレス指定部１２０）は、かような決定方式（例えば、決定方式１６１０，１７１０，１８１０，１９１０，２０１０または２１１０）に基づいて、算術演算のためのある変数が入力されたとき、アドレス指定のための上位ビットを決定することができる。
【００９２】
図２２は、一実施形態による、処理装置において演算を行う方法のフローチャートである。図２２を参照すると、処理装置１０の演算実行方法は、前述の図面において、処理装置１０において、時系列的に処理される段階を含む。従って、以下で省略された内容があるとしても、前述の図面で説明した内容は、図２２の演算実行方法にも適用される。
【００９３】
段階２２０１において、多項式変換部１１０は、与えられた変数に対して行われる算術演算を近似する多項式を決定する。
【００９４】
段階２２０２において、アドレス指定部１２０は、与えられた変数が属する変数区間に応じて、ルックアップテーブル（例えば、ルックアップテーブル２００（図１））をアドレス指定するための上位ビットを適応的に決定する。
【００９５】
段階２２０３において、取得部１３０は、適応的に決定された上位ビットの値を利用して、ルックアップテーブルをアドレス指定することにより、ルックアップテーブルから多項式の係数を取得する。
【００９６】
段階２２０４において、算出部１４０は、取得された係数を利用して、多項式の結果値を算出することにより、算術演算を処理する。
【００９７】
なお、前述の本実施形態は、コンピュータで実行されるプログラムでもって実施可能であり、コンピュータで読み取り可能な記録媒体を利用して、前記プログラムを動作させる汎用デジタルコンピュータで具現化される。また、前述の本実施形態で使用されたデータの構造は、多くの手段を介して、コンピュータで読み取り可能な記録媒体に記録される。前記コンピュータで読み取り可能な記録媒体は、磁気記録媒体（例えば、ＲＯＭ（read  only  memory）、フロッピー（登録商標）ディスク、ハードディスクなど）、光記録媒体（例えば、ＣＤ（compact  disc）−ＲＯＭ、ＤＶＤ（digital  versatile  disc）など）のような記録媒体を含む。
【００９８】
以上、好ましい実施形態を中心に説明した。当該技術分野の当業者であるならば、本実施形態が本質的な特徴から外れない範囲で変形された形態に具現化されることを理解することができるであろう。従って、開示された実施形態は、限定的な観点ではなく、説明的な観点から考慮されなければならない。本実施形態の範囲は、前述の説明ではなく、特許請求の範囲に示されており、それと均等な範囲内にある全ての差異は、本実施形態に含まれるものであると解釈されなければならない。
【産業上の利用可能性】
【００９９】
本発明の算術演算を行う方法及び処理装置は、例えば、プロセッサ関連の技術分野に効果的に適用可能である。
【符号の説明】
【０１００】
１      コンピュータシステム
１０    処理装置
１１    ＣＰＵ
１２    ＧＰＵ
２０    メモリデバイス
１１０  多項式変換部
１２０  アドレス指定部
１３０  取得部
１４０  算出部
２００，１０１０，１３１０    ルックアップテーブル
【図１】
2017059229.tif 000003
【図２】
2017059229.tif 000004
【図３Ａ】
2017059229.tif 000005
【図４Ａ】
2017059229.tif 000006
【図５】
2017059229.tif 000007
【図６】
2017059229.tif 000008
【図８】
2017059229.tif 000009
【図１０】
2017059229.tif 000010
【図１３】
2017059229.tif 000011
【図１５】
2017059229.tif 000012
【図１６】
2017059229.tif 000013
【図１７】
2017059229.tif 000014
【図１８】
2017059229.tif 000015
【図１９】
2017059229.tif 000016
【図２１】
2017059229.tif 000017
【図２２】
2017059229.tif 000018
【図３Ｂ】
2017059229.tif 000019
【図４Ｂ】
2017059229.tif 000020
【図７】
2017059229.tif 000021
【図９】
2017059229.tif 000022
【図１１】
2017059229.tif 000023
【図１２】
2017059229.tif 000024
【図１４】
2017059229.tif 000025
【図２０】
2017059229.tif 000026