(57)【要約】【課題】  データを演算する方法及びその装置を提供すること。【解決手段】  入力された第１データと、既保存の第２データとの差値を獲得する段階と、獲得された差値に基づいて第１データが演算された結果に対応する第３データを獲得する方法を決定する段階と、少なくとも１つの演算器を利用して、決定された方法による演算を行う段階とを含む、データを演算する方法である。【選択図】      図１
2016071861.tif 000002
【特許請求の範囲】
【請求項１】
入力された第１データと既保存の第２データとの差値を獲得する段階と、
前記獲得された差値に基づいて、前記第１データが演算された結果に対応する第３データを獲得する方法を決定する段階と、
少なくとも１つの演算器を利用して、前記決定された方法による演算を行う段階と、を含む、
データを演算する方法。
【請求項２】
前記決定する段階は、
前記差値を既設定の臨界値と比較し、前記比較結果によって、前記第３データを獲得する方法を決定する、
請求項１に記載の方法。
【請求項３】
前記演算する段階は、
前記差値が前記臨界値を超える場合には、前記第１データを利用して、前記第３データを獲得する演算を行い、前記差値が、前記臨界値以下である場合には、前記差値と、前記第２データが演算された結果とを利用して、前記第３データを獲得する演算を行う、  請求項２に記載の方法。
【請求項４】
前記演算する段階は、
前記差値または前記第１データによって決定された係数を利用して、前記第１データを演算する、
請求項１乃至３いずれか一項に記載の方法。
【請求項５】
前記決定された係数は、前記差値または前記第１データに対応して保存された複数の係数のうちから選択された値である、
請求項４に記載の方法。
【請求項６】
前記決定された方法は、前記第１データ全体を利用して演算を行う第１方法、または、前記差値に前記第１データによって決定された係数を乗じた値と前記第２データに前記係数を乗じた値との加算演算を行う第２方法、を含む、
請求項１乃至５いずれか一項に記載の方法。
【請求項７】
前記差値及び前記第１データを保存する段階をさらに含む、
請求項１乃至６いずれか一項に記載の方法。
【請求項８】
前記演算する段階は、
前記決定された方法によって、単一演算器の一部を利用して、前記演算を行う、
請求項１乃至７いずれか一項に記載の方法。
【請求項９】
前記単一演算器は、Ｎビットの乗算演算、及び、Ｎ／２ビットの乗算演算を行う多重精度演算器を含む、
請求項８に記載の方法。
【請求項１０】
前記演算する段階は、
複数の演算器のうち、前記決定された方法によって選択された互いに異なる演算器を利用して、前記演算を行う、
請求項１乃至９いずれか一項に記載の方法。
【請求項１１】
前記第１データ及び前記第２データは、浮動小数点方式で表現された数に対応するデータを含む、
請求項１乃至１０いずれか一項に記載の方法。
【請求項１２】
請求項１乃至１１いずれか一項に記載の方法をコンピュータで実行させるためのプログラムを記録したコンピュータで読み取り可能な記録媒体。
【請求項１３】
入力された第１データと既保存の第２データとの差値を獲得する獲得部と、
前記獲得された差値に基づいて、前記第１データが演算された結果に対応する第３データを獲得する方法を決定する決定部と、
前記決定された方法による演算を行う演算部と、を含む、
データを演算する装置。
【請求項１４】
前記決定部は
前記差値を既設定の臨界値と比較し、前記比較結果によって、前記第３データを獲得する方法を決定する、
請求項１３に記載の装置。
【請求項１５】
前記演算部は、
前記差値が前記臨界値を超える場合には、前記第１データを利用して、前記第３データを獲得する演算を行い、前記差値が前記臨界値以下である場合には、前記差値と、前記第２データが演算された結果とを利用して、前記第３データを獲得する演算を行う、  請求項１４に記載の装置。
【請求項１６】
前記演算部は、
前記差値または前記第１データによって決定された係数を利用して、前記第１データを演算する、
請求項１３乃至１５いずれか一項に記載の装置。
【請求項１７】
前記決定された係数は、前記差値または前記第１データに対応して保存された複数の係数のうちから選択された値である、
請求項１６に記載の装置。
【請求項１８】
前記決定された方法は、前記第１データ全体を利用して演算を行う第１方法、または、前記差値に前記第１データによって決定された係数を乗じた値と前記第２データに前記係数を乗じた値との加算演算を行う第２方法、を含む、
請求項１３乃至１７いずれか一項に記載の装置。
【請求項１９】
前記差値及び前記第１データを保存する保存部をさらに含む、
請求項１３乃至１８いずれか一項に記載の装置。
【請求項２０】
前記演算部は、単一演算器を含み、前記演算は、前記決定された方法によって、前記演算部の一部で行われる、
請求項１３乃至１９いずれか一項に記載の装置。
【請求項２１】
前記単一演算器は、Ｎビットの乗算演算及びＮ／２ビットの乗算演算を行う多重精度演算器を含む、
請求項２０に記載の装置。
【請求項２２】
前記演算部は、複数の演算器を含み、前記演算は、前記決定された方法によって選択された互いに異なる演算器で行われる、
請求項１３乃至２１いずれか一項に記載の装置。
【請求項２３】
前記第１データ及び前記第２データは、浮動小数点方式で表現された数に対応するデータを含む、
請求項１３乃至２２いずれか一項に記載の装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データを演算する方法及びその装置に関する。
【背景技術】
【０００２】
浮動小数点方式で表現されたデータを演算する中央処理装置（ＣＰＵ）またはグラフィック処理装置（ＧＰＵ）は、データに対応する数を数理関数に代入して演算を行う。
【０００３】
このとき、中央処理装置またはグラフィック処理装置には、入力可能な全データの演算に必要な情報を含むルックアップテーブルを利用して演算を行う。しかし、正確な演算結果が導き出されるためには、ルックアップテーブルに保存された情報の数が多くなければならないから、膨大な保存空間が要求されるという問題がある。
【０００４】
また、中央処理装置またはグラフィック処理装置が、数理関数を多項式の形態に近似化して演算を行うこともできる。しかし、正確な演算結果が導き出されるためには、高次の多項式に対する演算が要求されるので、演算時に、論理ゲートのスイッチングが過度に発生するという問題がある。
【０００５】
一方、中央処理装置またはグラフィック処理装置は、同一の命令語に対して、複数のデータを１回に処理することができる。このとき、処理対象になるデータ間には、集約性がある。言い換えれば、１回に処理されるデータが所定区間に集約されて存在する。従って、中央処理装置またはグラフィック処理装置が、集約性があるデータを順次に処理（すなわち、データを演算）するとき、ルックアップテーブルに保存される情報の量を減らし、演算時に発生する論理ゲートのスイッチング回数を減少させる方法に対する要求が増大している。
【発明の概要】
【発明が解決しようとする課題】
【０００６】
本発明が解決しようとする課題は、データを演算する方法及びその装置を提供するところにある。また、本発明が解決しようとする課題は、前記方法をコンピュータで実行させるためのプログラムを記録したコンピュータで読み取り可能な記録媒体を提供するところにある。なお、解決しようとする技術的課題は、前述のような技術的課題に限定されるものではなく、他の技術的課題が存在しもする。
【課題を解決するための手段】
【０００７】
前記課題を解決するために本発明において、一側面によるデータを演算する方法は、入力された第１データと、既保存の第２データとの差値を獲得する段階と、前記獲得された差値に基づいて、前記第１データが演算された結果に対応する第３データを獲得する方法を決定する段階と、少なくとも１つの演算器を利用して、前記決定された方法による演算を行う段階と、を含む。
【０００８】
前記課題を解決するために本発明において、他の側面によるコンピュータで読み取り可能な記録媒体は、前述の方法をコンピュータで実行させるためのプログラムを記録した記録媒体を含む。
【０００９】
前記課題を解決するために本発明において、さらに他の側面によるデータを演算する装置は、入力された第１データと、既保存の第２データとの差値を獲得する獲得部；前記獲得された差値に基づいて、前記第１データが演算された結果に対応する第３データを獲得する方法を決定する決定部；及び前記決定された方法による演算を行う演算部；を含む。
【発明の効果】
【００１０】
本発明によれば、データ演算装置は、以前に入力されたデータと、現在入力されたデータとの差値を計算し、計算された差値を利用して、現在入力されたデータに対する演算を行う。従って、データ演算装置によれば、ルックアップテーブルに保存される情報の量を減らすことができ、乗算演算が行われることによって発生する論理ゲートのスイッチング回数を減少させる。
【図面の簡単な説明】
【００１１】
【図１】一実施形態によるデータ演算装置の一例を図示した構成図である。
【図２Ａ】一実施形態による数理関数の一例について説明するための図面である。
【図２Ｂ】一実施形態による入力データの一例について説明するための図面である。
【図３】中央処理装置またはグラフィック処理装置に含まれた演算器が、ルックアップテーブルに保存された係数を利用して演算を行う事例について説明するための図面である。
【図４】一実施形態によるデータ演算装置が動作する事例について説明するためのフローチャートである。
【図５】一実施形態によるデータ演算装置の他の例を図示した構成図である。
【図６】一実施形態によるデータ演算装置のさらに他の例を図示した構成図である。
【図７】一実施形態による演算部に含まれた単一演算器の一例について説明するための図面である。
【図８】一実施形態による演算部が、複数の演算器を利用して演算を行う事例について説明するための図面である。
【図９】一実施形態によるデータを演算する方法の一例を示すフローチャートである。
【図１０】一実施形態によるデータを演算する方法の他の例を示すフローチャートである。
【発明を実施するための形態】
【００１２】
以下、図面を参照し、本発明の実施形態について詳細に説明する。本発明の下記実施形態は、本発明を具体化するためだけのものであり、本発明の権利範囲を制限したり限定したりするものではない。また、本発明の詳細な説明及び実施形態から、本発明が属する技術分野の当業者が容易に類推することができることは、本発明の権利範囲に属すると解釈される。
【００１３】
図１は、一実施形態によるデータ演算装置の一例を図示した構成図である。図１を参照すれば、データ演算装置１００は、獲得部１１０、決定部１２０及び演算部１３０を含む。図１に図示されたデータ演算装置１００には、本実施形態に係わる構成要素だけが図示されている。従って、図１に図示された構成要素以外に、他の汎用的な構成要素がさらに含まれるということは、本実施形態に係わる技術分野の当業者であるならば、理解することができるであろう。
【００１４】
また、図１に図示されたデータ演算装置１００の獲得部１１０、決定部１２０及び演算部１３０は、１つまたは複数個のプロセッサに該当する。プロセッサは、多数の論理ゲートのアレイで具現化され、汎用的なマイクロプロセッサと、該マイクロプロセッサで実行されるプログラムが保存されたメモリとの組み合わせによって具現化されもする。また、他の形態のハードウェアによっても具現化されるということは、本実施形態が属する技術分野の当業者であるならば、理解することができるであろう。
【００１５】
獲得部１１０は、入力された第１データと、既保存の第２データとの差値を獲得する。ここで、第１データ及び第２データは、浮動小数点方式で表現された数に対応するデータを意味する。例えば、第１データ及び第２データは、互いに隣接性が強いデータでもあり、互いに隣接性が強いということは、第１データが演算された結果と、第２データが演算された結果とが同一であるか、あるいは非常に類似している結果を示すことを意味する。第１データ及び第２データが、それぞれ浮動小数点方式で表現された数に対応するために、獲得部１１０が獲得する第１データと第２データとの差値も所定の数で表現される。
【００１６】
中央処理装置（ＣＰＵ）またはグラフィック処理装置（ＧＰＵ）は、入力されたデータを利用して、数理関数を演算することができる。言い換えれば、中央処理装置またはグラフィック処理装置は、浮動小数点方式で表現された数を被演算子（operand）にし、数理関数に代入した結果を出力することができる。ここで、数理関数は、所定の関数に対する逆（reciprocal）関数、逆自乗根（reciprocal  square  root）関数、基数が２であるログ関数、底が２である指数関数、三角関数などを意味するが、それらに限定されるものではない。このとき、数理関数に代入される入力データが特定区間に含まれる場合であるならば、同一の結果値が出力される。以下、図２Ａ及び図２Ｂを参照し、数理関数について具体的に説明する。
【００１７】
図２Ａ及び図２Ｂは、一実施形態による数理関数及び入力データの一例について説明するための図面である。
【００１８】
図２Ａには、数理関数の例として、基数が２であるログ関数２１０と、底が２である指数関数２２０とが図示されている。図２に図示された関数２１０，２２０は、互いに逆関数の関係を有する。また、図２Ｂには、中央処理装置またはグラフィック処理装置に、以前に入力されたデータを示す第２データ２３０の一例と、現在入力されたデータを示す第１データ２４０の一例とが図示されている。
【００１９】
中央処理装置またはグラフィック処理装置が、入力データを数理関数に代入した結果である出力データは、入力データが所定の範囲内の値である場合、同一であるか、あるいは非常に類似した値を示すことができる。例えば、中央処理装置が入力データをログ関数２１０に代入し、出力データを生成すると仮定すれば、ログ関数２１０の傾きが小さい区間に含まれた複数のデータが中央処理装置に入力された場合、それぞれのデータに対応する出力データは、互いに同一であるか、あるいは非常に類似している。
【００２０】
一般的に、中央処理装置またはグラフィック処理装置に連続して入力されるデータは、所定の範囲に含まれる。例えば、グラフィック処理装置に、第２データ２３０が入力された後、第１データ２４０が入力されると仮定すれば、第１データ２４０と第２データ２３０は、所定の範囲に含まれた類似した数字でもある。
【００２１】
例えば、第２データ２３０が浮動小数点方式で表現された１０．０００００１に対応する８ｂｉｔのデータで、第１データ２４０が浮動小数点方式で表現された１０．００００１０に対応する８ビットのデータであると仮定すれば、第２データ２３０と第１データ２４０は、下位２個のビット２５０だけ異なり、上位６個のビットは、同一の値を有する。
【００２２】
従って、中央処理装置またはグラフィック処理装置が、第２データ２３０を数理関数に代入した結果値と、中央処理装置またはグラフィック処理装置が第１データ２４０を数理関数に代入した結果値は、互いに同一であるか、あるいは非常に類似している。従って、中央処理装置またはグラフィック処理装置は、数理関数に対応する多項式に入力データを代入することによって演算を行うことができ、このとき、多項式に含まれた係数は、ルックアップテーブルにあらかじめ保存されてもよい。
【００２３】
図３は、中央処理装置またはグラフィック処理装置に含まれた演算器が、ルックアップテーブルに保存された係数を利用して演算を行う事例について説明するための図面である。
【００２４】
一般的に、中央処理装置またはグラフィック処理装置は、入力データ３１０を多項式に代入することによって、数理関数に対応する結果を獲得する。例えば、数理関数が、基数が２であるログ関数２１０であると仮定すれば、中央処理装置またはグラフィック処理装置は、ログ関数２１０に対応する多項式に、入力データ３１０を代入することによって演算を行う。このとき、多項式演算に要求される係数は、ルックアップテーブル３２０に保存される。
【００２５】
中央処理装置またはグラフィック処理装置に、入力データ３１０が入力されれば、ルックアップテーブル３２０から、入力データ３１０の演算に利用される係数が読み取られる。演算器３３０は、入力データ３１０と、ルックアップテーブル３２０から読み取られた係数とを利用して演算を行い、演算の結果である出力データ３４０を出力する。従って、演算器３３０が行う演算の正確度が高くなるためには、中央処理装置またはグラフィック処理装置に入力される全ての入力データ３１０に対応する係数が、ルックアップテーブル３２０に保存されなければならない。
【００２６】
一方、中央処理装置またはグラフィック処理装置に連続して入力されるデータが、互いに類似している場合、以前に入力されたデータと、現在入力されたデータとの差を利用して、現在入力されたデータに対する演算が行われるならば、ルックアップテーブル３２０に保存されなければならない情報の量を減らすことができる。本発明の一実施形態によるデータ演算装置１００は、以前に入力されたデータと、現在入力されたデータとの差値を計算し、計算された差値を利用して、現在入力されたデータに対する演算を行う。従って、データ演算装置１００によれば、ルックアップテーブルに保存される情報の量を減らすことができ、乗算演算が行われることによって発生する論理ゲートのスイッチング回数を減らすことができる。
【００２７】
再び図１を参照すれば、決定部１２０は、獲得された差値に基づいて、第１データが演算された結果に対応する第３データを獲得する方法を決定する。ここで、第３データは、第１データがデータ演算装置１００に入力されたとき、データ演算装置１００から出力されるデータを意味する。言い換えれば、決定部１２０は、第１データが入力された場合、第３データを獲得することができる方法を決定し、前述の方法は、獲得部１１０によって獲得された第１データと第２データとの差値に基づいて決定される。
【００２８】
例えば、決定部１２０は、獲得部１１０から、第１データと第２データとの差値を受信し、受信された差値を、所定の臨界値と比較することができる。そして、決定部１２０は、比較結果に基づいて、第３データを獲得する方法を決定することができる。
【００２９】
もし第１データと第２データとの差値が臨界値を超える場合、決定部１２０は、第１データを利用して演算を行う方法（以下、「全体演算」とする）を選択することができる。また、第１データと第２データとの差値が臨界値以下である場合、決定部１２０は、第１データと第２データとの差値と、第２データとが演算された結果を利用して演算を行う方法（以下、「差分演算」とする）を選択することができる。
【００３０】
演算部１３０は、少なくとも１つの演算器を利用して、決定部１２０によって決定された方法による演算を行う。言い換えれば、演算部１３０は、全体演算または差分演算を介して、第３データを導出する。
【００３１】
このとき、差分演算には、第１データと第２データとの差値、または第１データによって決定された係数が利用される。ここで、該係数は、データ演算装置１００に含まれたルックアップテーブルから読み取られ、ルックアップテーブルには、第１データと第２データとの差値、または第１データに対応して係数がマッピングされている。
【００３２】
演算部１３０は、データ演算装置１００に含まれる少なくとも１つの演算器を利用して演算を行う。例えば、演算部１３０は、単一演算器を利用して演算を行うこともでき、全体演算を行うことに利用される第１演算器、または差分演算を行うことに利用される第２演算器を利用して演算を行うこともできる。ここで、演算部１３０が単一演算器を利用して演算を行う場合、演算部１３０は、単一演算器の一部のみを利用して演算を行うこともできる。このとき、単一演算器は、Ｎビットの乗算演算、及びＮ／２ビットの乗算演算を行う多重精度（multi-precision）演算器でもあるが、それに限定されるものではない。
【００３３】
以下、図４を参照して、決定部１２０が演算方法を決定し、演算部１３０が演算を行う事例について説明する。図４は、一実施形態によるデータ演算装置が動作する事例について説明するためのフローチャートである。
【００３４】
図４に図示された各段階は、図１に図示されたデータ演算装置１００において、時系列的に処理される段階によって構成される。従って、以下で省略された内容であるとしても、図１に図示されたデータ演算装置１００について、以上に記述された内容は、図４に図示される方法にも適用されるということが分かる。
【００３５】
４１０段階において、獲得部１１０は、第１データを受信する。言い換えれば、第１データは、データ演算装置１００に入力される。ここで、第１データは、データ演算装置１００によって、演算の対象になるデータを意味し、グラフィック演算装置に含まれたシェーダで処理されるデータでもある。例えば、第１データは、浮動小数点方式で表現された数に対応するデータでもあるが、それに限定されるものではない。
【００３６】
４２０段階において、第１データは、データ演算装置１００に含まれた保存部に保存される。そして、保存部から第２データが読み取られる。ここで、第２データは、第１データが入力される直前に、データ演算装置１００に入力されたデータを意味する。言い換えれば、データ演算装置１００には、第２データが入力された後、第１データが順次に入力される。
【００３７】
４３０段階において、獲得部１１０は、第１データと第２データとの差分データを獲得する。ここで、差分データは、第１データと第２データとの差値、または第１データと第２データとの変化量に対応するデータを意味する。第１データ及び第２データは、それぞれ浮動小数点方式で表現された数に対応するデータでもあるために、獲得部１１０は、第１データ及び第２データを利用して、差分データを獲得することができる。
【００３８】
例えば、獲得部１１０は、下記数式（１）によって、差分データを獲得することができる。
【００３９】
【数１】
2016071861.tif 000003
数式（１）において、ａｄｉｆｆは、差分データを意味し、ａｎ＋１は、第１データを意味する。また、ａｎは、第２データを意味する。
【００４０】
４４０段階において、決定部１２０は、差分データが臨界値以下であるか否かを判断する。ここで、臨界値は、ユーザによってあらかじめ設定されもし、ユーザの介入なしに、データ演算装置１００が自動的に設定することもできる。このとき、該臨界値は、データの演算結果に対して要求される正確度によって設定されてもよい。
【００４１】
もし差分データが臨界値を超えると判断されれば、４５０段階に進み、差分データが臨界値以下であると判断されれば、４６０段階に進む。
【００４２】
４５０段階において、演算部１３０は、全体演算を行う。言い換えれば、決定部１２０は、第３データを生成する方法として、第１データを利用して演算を行う方法（すなわち、全体演算）を決定し、演算部１３０は、全体演算を行って第３データを生成する。例えば、演算部１３０は、数理関数に第１データを代入することによって、第３データを生成することもでき、数理関数に対応する多項式に第１データを代入することによって、第３データを生成することもできる。
【００４３】
４６０段階において、演算部１３０は、差分演算を行う。言い換えれば、決定部１２０は、第３データを生成する方法として、差分データを利用して演算を行う方法（すなわち、差分演算）を決定し、演算部１３０は、差分演算を行って第３データを生成する。
例えば、演算部１３０は、下記数式（２）によって差分演算を行う。
【００４４】
【数２】
2016071861.tif 000004
数式（２）で、ｃ＊ａｎ＋１は、第３データを意味し、ａｎは、第２データを意味する。また、ａｄｉｆｆは、差分データを意味する。また、ｃは、ルックアップテーブルから読み取られた係数を意味し、演算部１３０は、第１データに基づいて、ルックアップテーブルからｃを読み取ることができる。
【００４５】
数式（２）によれば、演算部１３０は、第２データ、差分データ、及びルックアップテーブルから読み取られた係数を利用して、第３データを生成する演算を行う。従って、演算部１３０が、数理関数に対応する多項式全体を演算する必要がないために、演算部１３０が動作するときに発生する論理ゲートのスイッチング回数が減る。
【００４６】
図５は、一実施形態によるデータ演算装置の他の例を図示した構成図である。図５を参照すれば、データ演算装置１０１は、獲得部１１０、決定部１２０、演算部１３０及び保存部１４０を含む。図５に図示されたデータ演算装置１０１には、本実施形態に係わる構成要素だけが図示されている。従って、図５に図示された構成要素以外に、他の汎用的な構成要素がさらに含まれてもよいということは、本実施形態に係わる技術分野の当業者であるならば、理解することができるであろう。
また、図５に図示されたデータ演算装置１０１の獲得部１１０、決定部１２０及び演算部１３０は、１つまたは複数個のプロセッサに該当する。該プロセッサは、多数の論理ゲートのアレイによって具現化され、汎用的なマイクロプロセッサと、該マイクロプロセッサで実行されるプログラムが保存されたメモリとの組み合わせによって具現化されもする。また、他の形態のハードウェアによっても具現化されるということは、本実施形態が属する技術分野の当業者であるならば、理解することができるであろう。
【００４７】
また、図５に図示されたデータ演算装置１０１の獲得部１１０、決定部１２０及び演算部１３０は、図１に図示されたデータ演算装置１０１の獲得部１１０、決定部１２０及び演算部１３０と同一である。従って、以下では、具体的な説明を省略する。
【００４８】
保存部１４０は、差分データ及び第１データを保存する。また、保存部１４０は、第２データを保存する。言い換えれば、保存部１４０は、データ演算装置１０１に入力されるデータを保存することができる。例えば、保存部１４０は、データ演算装置１０１に入力される第１データ及び第２データを保存することができ、獲得部１１０から差分データを受信して保存することができる。そして、保存部１４０は、演算部１３０が動作する方式（例えば、全体演算の遂行、または差分演算の遂行）によって、演算部１３０に保存された情報を提供し、演算部１３０から第３データを受信して保存する。
【００４９】
また、ルックアップテーブルは、保存部１４０に保存され、別途の構成によってデータ演算装置１００に含まれてもよい。ルックアップテーブルには、演算部１３０が演算を行うのに利用する係数が保存されているということは、図４を参照して詳細に説明した通りである。以下、図６を参照し、データ演算装置１０２に、保存部１４０とルックアップテーブル１５０とが別途の構成で含まれている事例について説明する。
【００５０】
図６は、一実施形態によるデータ演算装置のさらに他の例を図示した構成図である。図６を参照すれば、データ演算装置１０２は、獲得部１１０、決定部１２０、演算部１３０、保存部１４０及びルックアップテーブル１５０を含む。図６に図示されたデータ演算装置１０２には、本実施形態に係わる構成要素だけが図示されている。従って、図６に図示された構成要素以外に、他の汎用的な構成要素がさらに含まれてもよいことは、本実施形態に係わる技術分野の当業者であるならば、理解することができるであろう。
【００５１】
また、図６に図示されたデータ演算装置１０２の獲得部１１０、決定部１２０及び演算部１３０は、１つまたは複数個のプロセッサに該当する。該プロセッサは、多数の論理ゲートのアレイによって具現化され、汎用的なマイクロプロセッサと、該マイクロプロセッサで実行されるプログラムが保存されたメモリとの組み合わせによって具現化されもする。また、他の形態のハードウェアによっても具現化されるということは、本実施形態が属する技術分野の当業者であるならば、理解することができるであろう。
【００５２】
図５に図示されたデータ演算装置１０１と比較すれば、図６に図示されたデータ演算装置１０２は、保存部１４０及びルックアップテーブル１５０を別途の構成で含む。
【００５３】
獲得部１１０は、第１データ６１０を受信する。言い換えれば、第１データ６１０は、データ演算装置１０２に入力される。それだけではなく、第１データ６１０は、保存部１４０に保存され、演算部１３０に伝送される。また、第１データ６１０は、ルックアップテーブル１５０に伝送され、係数を読み取るための資料として利用される。
【００５４】
保存部１４０は、既保存の第２データを獲得部１１０に伝送する。言い換えれば、保存部１４０は、第１データが入力される直前に、データ演算装置１０２に入力された第２データを保存する。そして、第１データが入力されれば、保存部１４０は、既保存の第２データを獲得部１１０に伝送する。
【００５５】
獲得部１１０は、第１データ６１０と第２データとの差分データを獲得する。例えば、獲得部１１０は、前述の数式（１）に基づいて、差分データを獲得することができる。そして、獲得部１１０は、差分データを、決定部１２０及び演算部１３０に伝送する。
【００５６】
決定部１２０は、差分データが臨界値以下であるか否かを判断する。ここで、該臨界値は、ユーザによってあらかじめ設定されもし、ユーザの介入なしに、データ演算装置１０２が自動的に設定することもできるということは、図４を参照して詳細に説明した通りである。
【００５７】
もし差分データが臨界値を超えると判断されれば、決定部１２０は、演算部１３０に全体演算を行うことを指示する。また、差分データが臨界値以下であると判断されれば、決定部１２０は、演算部１３０に差分演算を行うことを指示する。
【００５８】
演算部１３０は、決定部１２０の指示に従い、全体演算または差分演算を行う。このとき、全体演算は、演算部１３０が数理関数に対応する多項式に第１データ６１０を代入することによっても行われるということは、図４を参照して詳細に説明した通りである。
【００５９】
一方、ルックアップテーブル１５０では、第１データ６１０に基づいて係数が読み取られ、演算部１３０に伝送される。従って、演算部１３０は、第１データ６１０、獲得部１１０から伝送された差分データ、及びルックアップテーブル１５０から伝送された係数を利用して差分演算を行う。例えば、演算部１３０は、前述の数式（２）に基づいて、差分演算を行う。演算部１３０が全体演算または差分演算を行うことにより、第３データ６２０が生成される。
【００６０】
一方、演算部１３０は、単一演算器を利用して、全体演算または差分演算を行う。このとき、演算部１３０は、単一演算器の一部を利用して、全体演算または差分演算を行う。例えば、単一演算器は、Ｎビットの乗算演算及びＮ／２ビットの乗算演算を行う多重精度演算器を意味する。
【００６１】
また、演算部１３０は、複数の演算器を利用して、全体演算または差分演算を行うこともできる。言い換えれば、演算部１３０は、全体演算を行うのに利用される演算器と、差分演算を行うのに利用される演算器とを別途に含んでもよい。
【００６２】
以下、図７を参照し、演算部１３０に含まれた単一演算器の一例について説明し、図８を参照し、演算部１３０が複数の演算器を利用して、全体演算または差分演算を行う事例について説明する。図７は、一実施形態による演算部に含まれた単一演算器の一例について説明するための図面である。
【００６３】
図７には、多重精度演算器に含まれた部分的発生器７１０の一例が図示されている。多重精度演算器は、Ｎビットの乗算演算及びＮ／２ビットの乗算演算を行う。ここで、Ｎは、２以上の自然数を意味する。以下では、Ｎビットの入力データと、Ｎ／２ビットの入力データとに、隣接性が存在すると仮定する。
【００６４】
一例として、Ｎビットの乗算演算が行われ、演算に利用される乗数を、Ａ＝｛ＡＮ−１，ＡＮ−２，…，Ａ０｝、被乗数をＢ＝｛ＢＮ−１，ＢＮ−２，…，Ｂ０｝と仮定すれば、図７に図示された部分的発生器７１０に入力されるデータ（ａ０，ａ１，…，ａ５，ｂ０，ｂ１，…，ｂ５）の例は、以下の通りである。
ａ０＝｛ＡＮ−１，…，ＡＮ／２｝，ａ１＝｛ＡＮ／２−１，…，Ａ０｝，ａ２＝｛ＡＮ−１，…，Ａ３Ｎ／４｝，ａ３＝｛Ａ３Ｎ／４−１，…，ＡＮ／２｝，ａ４＝｛ＡＮ／２−１，…，ＡＮ／４｝，ａ５＝｛ＡＮ／４−１，…，Ａ０｝
ｂ０＝｛ＢＮ−１，…，ＢＮ／２｝，ｂ１＝｛ＢＮ／２−１，…，Ｂ０｝，ｂ２＝｛ＢＮ−１，…，Ｂ３Ｎ／４｝，ｂ３＝｛Ｂ３Ｎ／４−１，…，ＢＮ／２｝，ｂ４＝｛ＢＮ／２−１，…，ＢＮ／４｝，ｂ５＝｛ＢＮ／４−１，…，Ｂ０｝
他の例として、Ｎ／２ビットの乗算演算が行われ、演算に利用される第１乗数をＡ＝｛ＡＮ／２−１，ＡＮ／２−２，…，Ａ０｝、第１被乗数をＢ＝｛ＢＮ／２−１，ＢＮ／２−２，…，Ｂ０｝、第２乗数をＣ＝｛ＣＮ／２−１，ＣＮ／２−２，…，Ｃ０｝、第２被乗数をＤ＝｛ＤＮ／２−１，ＤＮ／２−２，…，Ｄ０｝と仮定すれば、図７に図示された部分的発生器７１０に入力されるデータ（ａ０，ａ１，…，ａ５，ｂ０，ｂ１，…，ｂ５）の例は、以下の通りである。
ａ０＝０，ａ１＝０，ａ２＝｛ＡＮ／２−１，…，ＡＮ／４｝，ａ３＝｛ＡＮ／４−１，…，Ａ０｝，ａ４＝｛ＣＮ／２−１，…，ＣＮ／４｝，ａ５＝｛ＣＮ／４−１，…，Ｃ０｝
ｂ０＝０，ｂ１＝０，ｂ２＝｛ＢＮ／２−１，…，ＢＮ／４｝，ｂ３＝｛ＢＮ／４−１，…，Ｂ０｝，ｂ４＝｛ＤＮ／２−１，…，ＤＮ／４｝，ｂ５＝｛ＤＮ／４−１，…，Ｄ０｝
Ｎビットの乗算演算、及びＮ／２ビットの乗算演算が行われる場合、部分的発生器７１０には、マルチプレクサ（multiplexer）によって、前述の例のようなデータａ０，ａ１，…，ａ５，ｂ０，ｂ１，…，ｂ５が選択的に入力される。従って、単一演算器（すなわち、多重精度演算器）が、Ｎビットの乗算演算、及びＮ／２ビットの乗算演算を行うとき、下位ビットでの変化した値のみ独立して累積することができる。従って、単一演算器が行わなければならない演算量が減り、演算時に発生する論理ゲートのスイッチング回数が減少する。
【００６５】
図８は、一実施形態による演算部が、複数の演算器を利用して演算を行う事例について説明するための図面である。図８には、演算部８００に、全体演算を行うのに利用される第１演算器８１０と、差分演算を行うのに利用される第２演算器８２０が別途に含まれた事例が図示されている。また、演算部８００には、第１演算器８１０及び第２演算器８２０以外に、第１選択器８３１、第２選択器８３２及び加算器８４０がさらに含まれてもよい。
【００６６】
また、図８に図示された第１演算器８１０、第２演算器８２０、第１選択器８３１、第２選択器８３２及び加算器８４０は、１つまたは複数個のプロセッサに該当する。該プロセッサは、多数の論理ゲートのアレイによって具現化され、汎用的なマイクロプロセッサと、該マイクロプロセッサで実行されるプログラムが保存されたメモリとの組み合わせによって具現化されもする。また、他の形態のハードウェアによっても具現化されるということは、本実施形態が属する技術分野の当業者であるならば、理解することができるであろう。
【００６７】
第１演算器８１０は、全体演算を行う。例えば、第１演算器８１０は、第１データを利用して、第３データを生成するのに必要な演算を行う。言い換えれば、第１演算器８１０は、数理関数に対応する多項式に、第１データａｎ＋１を代入することにより、第３データｃ＊ａｎ＋１を生成することができる。第２演算器８２０は、差分演算に必要な差分データｃ＊ａｄｉｆｆを生成することができる。
【００６８】
必要によって、第１演算器８１０及び第２演算器８２０には、ルックアップテーブルから読み取られた係数ｃが入力され、演算に利用される。
【００６９】
第１選択器８３１は、保存部１４０から読み取られたデータ、及び第１演算器８１０が生成した第３データのうちいずれか一つを選択する。ここで、保存部１４０から読み取られたデータは、それ以前に演算されて保存されている第２データに係数が乗算されたデータｃ＊ａｎにもなる。また、第２選択器８３２は、第２選択器８３２に入力される０、及び第２演算器８２０が生成した差分データのうちいずれか一つを選択する。
【００７０】
一例として、決定部１２０が、全体演算によって第３データを生成すると決定すれば、第１演算器８１０が動作し、第２演算器８２０の動作は、遮断（isolation）される。そのとき、第１選択器８３１は、第１演算器８１０が生成した第３データを選択し、第２選択器８２０は、０を選択する。
【００７１】
他の例として、決定部１２０が、差分演算によって第３データを生成すると決定すれば、第２演算器８２０が動作し、第１演算器８１０の動作は、遮断される。そのとき、第２選択器８３２は、第２演算器８２０が生成した差分データを選択し、第１選択器８３１は、保存部１４０から読み取られたデータを選択する。
【００７２】
加算器８４０は、第１選択器８３１及び第２選択器８３２から伝送されたデータの加算演算を行う。
【００７３】
一例として、決定部１２０が、全体演算によって第３データを生成すると決定した場合、加算器８４０は、第１選択器８３１から伝送された第３データと、第２選択器８３２から伝送された０と、を加える。結果として、加算器８４０は、第１演算器８１０が演算した第３データを出力することができる。
【００７４】
他の例として、決定部１２０が、差分演算によって第３データを生成すると決定した場合、加算器８４０は、第１選択器８３１から伝送されたデータと、第２選択器８３２から送信された差分データと、を加える。従って、加算器８４０は、差分演算による第３データを出力することができる。
【００７５】
図９は、一実施形態によるデータを演算する方法の一例を示すフローチャートである。図９は、本実施形態によるデータを演算する方法を示したフローチャートである。図９を参照すれば、データを演算する方法は、図１、図６及び図７に図示されたデータ演算装置１００において、時系列的に処理される段階によって構成される。従って、以下で省略された内容であるとしても、図１、図６及び図７に図示されたデータ演算装置１００について、以上で記述された内容は、図９のデータを演算する方法にも適用されるということが分かる。
【００７６】
９１０段階において、獲得部１１０は、入力された第１データと、既保存の第２データとの差値を獲得する。ここで、第１データ及び第２データは、浮動小数点方式で表現された数に対応するデータを意味する。データ演算装置１００には、第２データが入力された後、第１データが順次に入力される。
【００７７】
９２０段階において、決定部１２０は、獲得された差値に基づいて、第１データが演算された結果に対応する第３データを獲得する方法を決定する。言い換えれば、決定部１２０は、９１０段階で獲得された差値に基づいて、第１データ全体を利用して、第３データを獲得する第１方法（すなわち、全体演算）、及び前記差値に第１データによって決定された係数を乗じた値と、第２データに前記係数を乗じた値とを利用して、第３データを獲得する第２方法（すなわち、差分演算）のうちいずれか一つを決定する。ここで、第２方法は、前述の数式（２）によって、第３データを獲得する方法にもなる。
【００７８】
９３０段階において、演算部１３０は、少なくとも１つの演算器を利用して、９２０段階で決定された方法による演算を行う。一例として、演算部１３０は、単一演算器を利用して、全体演算または差分演算を行う。このとき、単一演算器は、多重精度演算器を意味する。他の例として、演算部１３０は、複数の演算器を利用して、全体演算または差分演算を行うこともできる。
【００７９】
図１０は、一実施形態によるデータを演算する方法の他の例を示すフローチャートである。図１０は、本実施形態によるデータを演算する方法を示したフローチャートである。図１０を参照すれば、データを演算する方法、は図１、図６及び図７に図示されたデータ演算装置１００において、時系列的に処理される段階によって構成される。従って、以下で省略された内容であるとしても、図１、図６及び図７に図示されたデータ演算装置１００について、以上で記述された内容は、図１０のデータを演算する方法にも適用されるということが分かる。
【００８０】
一方、図１０の１０１０段階は、図９の９１０段階と同一であるが、以下では、具体的な説明を省略する。
【００８１】
１０２０段階において、決定部１２０は、１０１０段階で獲得された差値を、所定の臨界値と比較する。ここで、該臨界値は、ユーザによってあらかじめ設定されもし、ユーザの介入なしに、データ演算装置１００が自動的に設定することもできる。このとき、該臨界値は、データの演算結果に対して要求される正確度によって設定される。
もし差値が臨界値を超えると判断されれば、１０３０段階に進み、差値が臨界値以下であると判断されれば、１０４０段階に進む。
【００８２】
１０３０段階において、演算部１３０は、第１データを利用して、第３データを獲得する演算を行う。例えば、演算部１３０は、数理関数に第１データを代入することによって、第３データを生成することもでき、数理関数に対応する多項式に、第１データを代入することによって、第３データを生成することもできる。
【００８３】
１０４０段階において、演算部１３０は、１０１０段階で獲得された差値と、第２データが演算された結果とを利用して、第３データを獲得する演算を行う。例えば、演算部１３０は、前述の数式（２）による演算を行うことにより、第３データを獲得することができる。
【００８４】
一方、１０３０段階及び１０４０段階を遂行する演算部１３０に、単一演算器または複数の演算器が含まれてもよいということは、図９の９３０段階を参照して詳細に説明した通りである。
【００８５】
前述のところによれば、データ演算装置１００は、以前に入力されたデータと、現在入力されたデータとの差値を計算し、計算された差値を利用して、現在入力されたデータに対する演算を行う。従って、データ演算装置１００によれば、ルックアップテーブルに保存される情報の量を減らすことができ、乗算演算が行われることによって発生する論理ゲートのスイッチング回数を減少させる。
【００８６】
一方、前述の方法は、コンピュータで実行されるプログラムで作成可能であり、コンピュータで読み取り可能な記録媒体を利用して、前記プログラムを動作させる汎用デジタルコンピュータで具現化される。また、前述の方法で使用されたデータの構造は、コンピュータで読み取り可能な記録媒体に、多くの手段を介して記録される。前記コンピュータで読み取り可能な記録媒体は、磁気記録媒体（例えば、ＲＯＭ（read  only  memory）、ＲＡＭ（random  access  memory）、ＵＳＢ（universal  serial  bus）、フロッピー（登録商標）ディスク、ハードディスクなど）、光学的判読媒体（例えば，ＣＤ（compact  disc）−ＲＯＭ、ＤＶＤ（digital  versatile  disc）など）のような記録媒体を含む。
【００８７】
本実施形態に係わる技術分野における当業者は、前述の本質的な特性から外れない範囲で変形された形態で具現化されることを理解することができるであろう。従って、開示された方法は、限定的な観点ではなく、説明的な観点から考慮されなければならない。本発明の範囲は、前述の説明ではなく、特許請求の範囲に示されており、それと同等な範囲内にある全ての差異は、本発明に含まれたものであると解釈されなければならないのである。
【産業上の利用可能性】
【００８８】
本発明のデータを演算する方法及びその装置は、例えば、データ処理関連の技術分野に効果的に適用可能である。
【符号の説明】
【００８９】
１００，１０１，１０２  データ演算装置
１１０  獲得部
１２０  決定部
１３０  演算部
１４０  保存部
１５０，３２０  ルックアップテーブル
２１０  ログ関数
２２０  指数関数
２３０  第２データ
２４０，６１０  第１データ
２５０  下位２ビット
３１０  入力データ
３３０，８００  演算器
３４０  出力データ
６２０  第３データ
７１０  部分的発生器
８１０  第１演算器
８２０  第２演算器
８３１  第１選択器
８３２  第２選択器
８４０  加算器
【図１】
2016071861.tif 000005
【図２Ａ】
2016071861.tif 000006
【図２Ｂ】
2016071861.tif 000007
【図３】
2016071861.tif 000008
【図４】
2016071861.tif 000009
【図５】
2016071861.tif 000010
【図６】
2016071861.tif 000011
【図７】
2016071861.tif 000012
【図８】
2016071861.tif 000013
【図９】
2016071861.tif 000014
【図１０】
2016071861.tif 000015