JP6048560B1 - 情報処理装置、情報処理方法、及び、プログラム - Google Patents

情報処理装置、情報処理方法、及び、プログラム Download PDF

Info

Publication number
JP6048560B1
JP6048560B1 JP2015206096A JP2015206096A JP6048560B1 JP 6048560 B1 JP6048560 B1 JP 6048560B1 JP 2015206096 A JP2015206096 A JP 2015206096A JP 2015206096 A JP2015206096 A JP 2015206096A JP 6048560 B1 JP6048560 B1 JP 6048560B1
Authority
JP
Japan
Prior art keywords
underflow
function
input data
data
value
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
Application number
JP2015206096A
Other languages
English (en)
Other versions
JP2017078928A (ja
Inventor
重人 乾
重人 乾
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NEC Corp
Original Assignee
NEC Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by NEC Corp filed Critical NEC Corp
Priority to JP2015206096A priority Critical patent/JP6048560B1/ja
Application granted granted Critical
Publication of JP6048560B1 publication Critical patent/JP6048560B1/ja
Publication of JP2017078928A publication Critical patent/JP2017078928A/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Complex Calculations (AREA)

Abstract

【課題】区間の端部での値を保証し、偽のアンダーフローを発生させない値を算出する情報処理装置を提供する。【解決手段】情報処理装置は、入力データ100が入力データの区間の端部のデータであるか否かを検出する端部検出部14と、所定の第1の関数に対する近似値を算出する第2の関数に入力データを適用した算出結果である加算結果が、入力データを第1の関数に適用した場合に発生しないアンダーフローである偽のアンダーフローを発生させるか否かを検知し、加算結果が偽のアンダーフローを発生させる場合に、加算結果を偽のアンダーフローを発生させない値に修正するアンダーフロー検知部15と、入力データが端部のデータの場合、端部に対応した所定のデータを選択し、入力データが端部のデータでない場合、加算結果を選択する選択部16と、を含む。【選択図】図1

Description

本発明は、数値の計算処理に関し、特に、近似計算を用いる情報処理装置、情報処理方法、及び、プログラムに関する。
情報処理装置において、算術演算(例えば、加算、減算、乗算、及び、除算)は、いろいろな構成を用いて実行される。例えば、情報処理装置は、汎用的な加算器を用いたソフトウェア処理に基づいて、各種の算術演算を実行している。あるいは、情報処理装置は、各種の演算用の専用回路を用いて、算術演算を実行している。
CPU(Central Processing Unit)などの集積回路に実装される除算回路に用いられる方法として、大きく分けて、二種類の方法が、用いられている。
第1の方法は、人が除算を計算する場合に用いる筆算と同等の処理を実施する方法である。つまり、第1の方法は、減算と、ビットのシフトとを用いた方法である。第1の方法は、「減算シフト型除算方式」と呼ばれている。
第2の方法は、除算を除数の逆数の乗算に変換して、除算の結果を算出する方法である。第2の方法は、除数に対する逆数を算出することが必要である。そこで、第2の方法は、除数の逆数を、逆数近似値の初期値(以下、「初期逆数近似値」と呼ぶ)から所定の方法(例えば、ニュートン法)を用いて算出する(例えば、特許文献1及び2を参照)。第2の方法は、「乗算型除算方式」と呼ばれている。なお、乗算型除算方法における乗算の処理は、一般的な乗算に用いられる乗算処理(例えば、乗算器を用いる処理)である。
各方法は、以下のような特徴がある。
減算シフト型除算方式は、逐次的に計算を実行する。そのため、減算シフト型除算方式は、計算処理におけるレイテンシ(遅延:latency)が大きくなる。また、減算シフト型除算方式は、除算として完結する専用のハードウェア(Hardware:HW)を必要とする。そのため、減算シフト型除算方式は、HWの実装に必要となる面積が大きい。上記の点が、減算シフト型除算方式における欠点である。
しかし、減算シフト型除算方式は、演算処理が、上記の専用のHWの回路内で、完結する方式である。つまり、減算シフト型除算方法は、他の回路の処理などに影響を与えない。この点は、減算シフト型除算方法の利点である。
一方、乗算型除算方式が必要とするHWは、初期逆数近似値を求める回路となる。そのため、乗算型除算方式は、減算シフト型除算方式に比べ、回路(ハードウェア)量及び実装面積を削減できる。さらに、乗算型除算方式において、上記の初期逆数近似値を算出した後の処理は、乗算器を用いた数回の乗算処理となる。つまり、乗算型除算方式は、上記の初期逆数近似値の算出と数回の乗算とを基に、除算の結果を得ることができる。そのため、乗算型除算方式は、減算シフト型除算方式に比べ、高速に除算の結果を得ることができる。上記の点は、乗算型除算方式の利点である。
しかし、乗算型除算方式は、一定期間、上記の乗算のため、乗算の処理に伴うリソース、又は、乗算器を占有する。そのため、乗算型除算方式は、他の回路の処理又はシステムのパフォーマンスに、影響を与える。この点は、乗算型除算方法の欠点である。
上記のとおり、各方式は、それぞれ、利点及び欠点を備えている。そこで、一般的に、除算回路の方式は、除算回路が実装されるHWにおける面積、及び、所望の性能を勘案して選択される。
以下、本発明に関連する乗算型乗算方式について、さらに説明する。
上記の説明からも明らかなように、乗算型除算方式は、性能、すなわち、レイテンシの短縮が求められている場合に、選択されることが多い。乗算型除算方法において、初期逆数近似値から所定の方法を用いて逆数を算出する処理の回数は、初期逆数近似値の精度に概ね比例する。つまり、レイテンシを短縮するために、高い精度の初期逆数近似値の算出が、求められる。
乗算型除算方式において、精度の高い初期逆数近似値を求めるための方法の一つは、保持する初期逆数近似値の数を増やすことである。ただし、一般的に、初期逆数近似値は、メモリなどに、初期逆数近似値のデータのテーブル(以下、「初期値テーブル」を呼ぶ)として保持される。そのため、保持する初期逆数近似値の数の増大は、初期値テーブルの拡大となる。そして、初期値テーブルの拡大は、大規模なハードウェアを必要とする。つまり、初期値テーブルの拡大は、上記の乗算型除算方式における実装面積の利点を実現できないという問題点があった。
上記の問題を解決する方法として、初期逆数近似値を、小規模な初期値テーブルと線形補間とを用いて高精度に求める方法が、提案された(例えば、特許文献1及び2を参照)。
特許文献1に記載の逆数回路(以下、特許文献1と呼ぶ)は、線形補間を基に、初期逆数近似値を算出する。そして、特許文献1は、逆数を求めるための算出を高速及び高精度とするために、除数を、上位データと下位データと分けて処理を実行する。しかし、特許文献1は、近似区間の中央付近では、初期逆数近似値の誤差が大きくなるという問題点があった。
そこで、区間の中央付近でも誤差を小さくする方法が提案されている(例えば、特許文献2を参照)。
特許文献2に記載の逆数演算方式(以下、特許文献2と呼ぶ)は、除数の仮数部が採り得る区間(0.5から1.0)の端部を交点とする一次関数(特許文献2における「−CX+D」)を算出する。そして、特許文献2は、区間内での誤差を小さくするため、区間中間点での誤差の半分に対応するように上記の一次関数を平行移動した一次関数(特許文献2における「−AX+B」)を算出する。そして、特許文献2は、平行移動した一次関数を初期逆数近似値の算出に用いる。このように、特許文献2は、区間内での誤差の影響を低減している。
特開平2−156328号公報 特開昭63−163630号公報
ここで、除数の区間の一例として、1.0から2.0の区間を想定する。この場合、区間の2つの端部の除数(1.0と2.0)に対応した正確な逆数は、それぞれ、「1.0」と「0.5」である。
この場合、特許文献2は、上記の一次関数のC及びDとして、「0.5」と「1.5」を用いる。つまり、一次関数「−CX+D」は、「−0.5X+1.5」となる。そして、この場合の中間地点(X=1.5)での誤差は、「|1/1.5−(−0.5×1.5+1.5)|≒0.08」となる。その結果、特許文献2は、誤差の半分の値に対応するように平行移動した一次関数として、「−0.5X+1.46」を用いる。その結果、特許文献2は、区間の2つの端部の除数(1.0と2.0)に対応した逆数として、「0.96」と「0.46」を算出する。
しかし、特許文献2の乗算回路に後続する処理(上記のニュートン法などの処理)は、区間の端部(例えば、除数「1.0」)に対応した逆数が、正確な値(例えば、「1.0」)であることを前提とした処理となっている場合がある。このような場合、特許文献2の結果は、後続処理を、正しく動作させない可能性がある。つまり、特許文献2は、区間の端部での値を保証しないという問題点があった。
さらに、特許文献2は、除数「2.0」の場合、逆数を、「0.5」より小さな値である「0.46」と算出する。ここで、一般的に、情報処理装置において、小数を含むデータ形式は、二進数表現の浮動小数点形式である。浮動小数点形式は、仮数部と指数部とを備えている。
以下の、二進数の表記法を用いて説明する。なお、二進数は、数値を括弧で囲い、括弧に下付けで二進数を示す数値(2)を付して示す表記法を用いる。例えば、十進数の「2.0」及び「0.5」の二進数表現は、それぞれ、「(10)」及び「(0.1)」となる。なお、十進数は、上記のような表記法を用いないで、そのままの表記とする。
繰り返しとなるが、除数「(10)」に対する正確な逆数は、「(0.1)」である。一方、「(0.1)」より小さい値(例えば、「0.46」)は、二進数として一桁小さい値である「(0.01dddd)」となる。
なお、上記において、「(0.01)」以下のデータは、以下の説明に関連しないため、「dddd」と省略した表記とした。そのため、上記の各dは、必ずしも、同じ値を示しているわけではない。また、上記のdの個数(桁数)も、4つに限るわけではなく、処理系に依存した数となる。
ここで、例えば、IEEE(Institute of Electrical and Electronics Engineers, Inc.)における浮動小数点演算の標準であるIEEE754において、仮数部の数値の正規化が、必要である。つまり、上記の「(0.01dddd)」は、仮数部として「(0.1dddd)」に修正することが、必要である。この修正に伴い、指数部に、一桁分のシフトが、発生する。このシフトは、指数部の値を「1」減らす操作である。そして、指数部の値の「1」減らすことは、アンダーフローを発生させる場合がある。つまり、上記の正規化に伴う指数部の値の変更は、アンダーフローを発生させる場合がある。
しかし、正確な逆数は、「0.5=(0.1)」である。そのため、上記のアンダーフローは、本来発生しないアンダーフローである。つまり、除数の値が「2.0=(10)」の近傍の場合に発生するアンダーフローは、偽のアンダーフローである。
このように、特許文献2は、偽のアンダーフローを発生させるという問題点があった。
本発明の目的は、上記問題点を解決し、区間の端部での値の保証し、偽のアンダーフローを発生させない値を算出する情報処理装置、情報処理方法、及び、プログラムを提供することにある。
本発明の一形態における情報処理装置は、入力データが入力データの区間の端部のデータであるか否かを検出する端部検出手段と、所定の第1の関数に対する近似値を算出する第2の関数に入力データを適用した算出結果である加算結果が、入力データを第1の関数に適用した場合に発生しないアンダーフローである偽のアンダーフローを発生させるか否かを検知し、加算結果が偽のアンダーフローを発生させる場合に、加算結果を偽のアンダーフローを発生させない値に修正するアンダーフロー検知手段と、入力データが端部のデータの場合、端部に対応した所定のデータを選択し、入力データが端部のデータでない場合、加算結果を選択する選択手段と含む。
本発明の一形態におけるデータ処理方法は、入力データが入力データの区間の端部のデータであるか否かを検出し、所定の第1の関数に対する近似値を算出する第2の関数に入力データを適用した算出結果である加算結果が、入力データを第1の関数に適用した場合に発生しないアンダーフローである偽のアンダーフローを発生させるか否かを検知し、加算結果が偽のアンダーフローを発生させる場合に、加算結果を偽のアンダーフローを発生させない値に修正し、入力データが端部のデータの場合、端部に対応した所定のデータを選択し、入力データが端部のデータでない場合、加算結果を選択する。
本発明の一形態におけるプログラムは、入力データが入力データの区間の端部のデータであるか否かを検出する処理と、所定の第1の関数に対する近似値を算出する第2の関数に入力データを適用した算出結果である加算結果が、入力データを第1の関数に適用した場合に発生しないアンダーフローである偽のアンダーフローを発生させるか否かを検知する処理と、加算結果が偽のアンダーフローを発生させる場合に、加算結果を偽のアンダーフローを発生させない値に修正する処理と、入力データが端部のデータの場合、端部に対応した所定のデータを選択する処理と、入力データが端部のデータでない場合、加算結果を選択する処理とをコンピュータに実行させる。
本発明に基づけば、区間の端部での値を保証し、偽のアンダーフローを発生させない値を算出するとの効果を奏することができる。
図1は、本発明における第1の実施形態に係る情報処理装置の構成の一例を示すブロック図である。 図2は、第1の実施形態に係る情報処理装置の動作を説明するための図である。 図3は、第1の実施形態に係る情報処理装置の構成の変形例を示すブロック図である。 図4は、第1の実施形態に係る情報処理装置の構成の変形例を示すブロック図である。
次に、本発明における実施形態について図面を参照して説明する。
なお、各図面は、本発明における実施形態を説明するものである。ただし、本発明は、各図面の記載に限られるわけではない。また、各図面の同様の構成には、同じ番号を付し、その繰り返しの説明を、省略する場合がある。
また、以下の説明に用いる図面において、各実施形態の説明に関係しない部分の構成については、記載を省略し、図示しない場合もある。
なお、各実施形態において、近似対象の関数は、単純減少凸関数であれば、特に制限されない。例えば、近似対象の関数は、逆数関数「y=1/x(xは正の実数)」でもよい。あるいは、近似対象の関数は、n乗根の逆数関数「y=1/(x1/n)(nは2以上の整数、xは正の実数)」、又は、n乗の逆数関数「y=1/(x)(nは2以上の整数、xは正の実数)」でもよい。ただし、以下の説明では、一例として、近似対象の関数は、逆数関数「y=1/x(xは正の実数)」とする。この関数は、既に説明した、除数に対応した逆数の算出に相当する。そのため、関数の独立変数(x)を「除数」と呼ぶ場合もある。
各実施形態において、独立変数(x)の範囲は、逆数関数が単純減少凸関数となる範囲であれば、特に制限されない。ただし、以下の説明では、独立変数(x)の範囲は、1.0から2.0とする。なお、独立変数(x)の範囲を、「区間」とも呼ぶ。また、区間の小さい側の端部(x=1.0)を「始点」と呼び、区間の大きい側の端部(x=2.0)を「終点」と呼ぶ。
また、各実施形態は、近似対象の関数を近似する関数として、一次関数(y=ax+b)を用いるとする。独立変数(x)が除数の場合、従属変数(y)は、初期逆数近似値に相当する。また、「a」は、一次関数の傾きであり、「b」は、y切片である。
ただし、これは、各実施形態を限定するものではない。例えば、各実施形態は、二次以上の関数を用いてもよい。
<第1の実施形態>
図面を参照して、本発明における第1の実施形態に係る情報処理装置19について説明する。
[構成の説明]
まず、本発明における第1の実施形態に係る情報処理装置19の構成について説明する。
図1は、本発明における第1の実施形態に係る情報処理装置19の構成の一例を示すブロック図である。
情報処理装置19は、入力データ100を受信し、受信した入力データ100に対応する出力データ101を出力する。
なお、以下の説明おいて、入力データ100は、除算における除数(より詳細には、除数を浮動小数点形式とした場合の仮数部)とする。また、出力データ101は、除数の逆数を算出するために用いられる初期逆数近似値とする。ただし、入力データ100及び出力データ101は、これに限られない。
入力データ100は、所定のビット数の上位(上位ビット)と、残りのビットである下位(下位ビット)に分かれている。
そして、図1に示されているように、情報処理装置19は、傾き抽出部10と、切片抽出部11と、乗算部12と、加算部13と、端部検出部14と、アンダーフロー検知部15と、選択部16とを含む。
傾き抽出部10は、入力データ100の上位ビットを基に、入力データ100に対応した出力データ101の算出に適用する一次関数の傾き(a)を抽出する。傾き抽出部10は、抽出した傾きを、切片抽出部11及び乗算部12に出力する。
なお、傾き抽出部10は、予め、除数の上位ビットに対応した傾きのデータを保持している。例えば、傾き抽出部10は、上位ビットに対応する傾きの値を、テーブル形式のデータ(以下、「傾きテーブル」と呼ぶ)として保持する。そして、傾き抽出部10は、受信した上位ビットを用いて、傾きテーブルから「傾き」を抽出する。
切片抽出部11は、傾き抽出部10から傾きを受信する。そして、切片抽出部11は、傾きを基に、一次関数のy軸の切片(y切片)を抽出する。この切片は、上記の一次関数「y=ax+b」の「b」である。切片抽出部11は、抽出した切片を加算部13に出力する。
なお、切片抽出部11は、予め、傾きに対応した切片のデータを保持している。例えば、切片抽出部11は、傾きに対応する切片の値を、テーブル形式のデータ(以下、「切片テーブル」と呼ぶ)として保持する。そして、切片抽出部11は、傾きを基に、切片テーブルから切片を抽出する。
図2を参照して、切片についてさらに説明する。
図2において、実線の曲線が、近似の対象である除数(x)と逆数(y=1/x)との関係に対応する関数(以下、「逆数関数R」と呼ぶ)を示す線である。
破線が、対象となる区間(今の場合、1.0から2.0)に対する、一般的な近似に用いられる一次関数(以下、「一般的な一次関数M」と呼ぶ)である。一般的な一次関数Mにおける区間の端部(1.0及び2.0)での値は、逆数関数Rの値と一致している。つまり、一般的な一次関数Mは、逆数関数Rの区間の両端部における値を基に算出された一次関数である。しかし、一般的な一次関数Mと逆数関数Rとの誤差は、図2に示されているように、区間の中央付近(「x」の値が「2の平方根」となる点の近傍)において、極大値(区間内の最大誤差)となる。この誤差の値は、予め、算出可能である。
そこで、情報処理装置19の切片抽出部11は、図2において実線の直線に示されているように、上記の最大誤差の値の半分を削減(修正)した一次関数(以下、「本実施形態の一次関数L」と呼ぶ)を用いる。その結果、情報処理装置19は、対象区間(今の場合、1.0から2.0の区間)にける最大誤差を半分とすることができる。
このように、本実施形態に切片抽出部11は、区間における最大誤差を、より小さくする切片のデータを保持する。
図1を参照した説明に戻る。
このように、傾き抽出部10及び切片抽出部11は、本実施形態の一次関数Lの係数(aとb)の値を抽出する構成である。なお、情報処理装置19が、一次関数Lとは異なる関数を用いる場合、情報処理装置19は、傾き抽出部10及び切片抽出部11に換えて、その関数のパラメータを算出する構成を含めばよい。
乗算部12は、傾き抽出部10から受信した傾きと、入力データ100の下位ビットとを乗算する。乗算部12は、乗算の結果を、加算部13に出力する。
加算部13は、乗算部12から受信した乗算結果と、切片抽出部11から受信した切片とを加算する。加算部13は、算出の結果(加算結果)をアンダーフロー検知部15に出力する。
このように、乗算部12及び加算部13は、入力データ100を、本実施形態の一次関数Lに適用した算出結果(加算結果)を計算する構成である。つまり、加算結果は、近似対象である逆数関数R(以下、「第1の関数」とも呼ぶ)を近似する本実施形態の一次関数L(以下、「第2の関数」とも呼ぶ)に、入力データ100を適用した算出結果(加算結果)である。
なお、情報処理装置19が、一次関数Lとは異なる関数を用いる場合、情報処理装置19は、乗算部12及び加算部13に換えて、その関数の結果を算出する構成を含めばよい。
アンダーフロー検知部15は、受信した算出結果において、偽のアンダーフローが発生するか否か検知する。ここで、「偽のアンダーフロー」とは、既に説明したとおり、近似対象の逆数関数Rに入力データ100を適用した場合には発生しないが、本実施形態の一次関数Lに入力データ100を適用した場合に発生するアンダーフローである。偽のアンダーフローが発生する場合、アンダーフロー検知部15は、受信した算出結果を、アンダーフローが発生しない所定の値(例えば、除数が「2.0」の場合の逆数「0.5」)に変更して(丸めて)から、選択部16に出力する。偽のアンダーフローが発生しない場合、アンダーフロー検知部15は、受信した算出結果を、選択部16に出力する。なお、アンダーフロー検知部15における、アンダーフローを検知する動作については、後ほど詳細に説明する。
端部検出部14は、入力データ100が端部のデータ(今の場合、1.0及び2.0)であるか否か検出する。端部検出部14は、検出結果を基に、選択部16に、入力データ100が端部のデータであるとの結果、又は、端部のデータでないとの結果を出力する。なお、大きい側の端部(終点、今の場合「2.0」)は、後ほど説明するように、アンダーフローに対応した処理の対象となる。そのため、端部検出部14は、入力データ100が小さい側の端部のデータ(始点、今の場合は1.0)であるか否か検出してもよい。つまり、端部検出部14は、入力データ100が大きい側の端部のデータ(終点、今の場合は2.0)の検出を省略してもよい。以下では、説明を明確にするため、端部検出部14は、入力データ100が始点(今の場合は1.0)であるか否か検出するとして説明する。
選択部16は、端部に対応した所定のデータ(例えば、端部に対応した正確な逆数の値)を受信している。なお、選択部16は、予め、所定のデータを受信して、保持してもよい。あるいは、選択部16は、初期値として、所定のデータを保持してもよい。なお、以下の説明では、選択部16は、端部に対応した正確な逆数のデータ(例えば、始点(1.0)に対する逆数「1.0」)を保持しているとする。
そして、選択部16は、端部検出部14から端部(今の場合、「1.0」)であるとの結果を受信した場合、出力データ101として、端部に対応した所定のデータ(今の場合、正確な逆数の値「1.0」)を選択して、出力する。端部でないとの結果を受信した場合、選択部16は、出力データ101として、アンダーフロー検知部15から受信した算出結果を選択して、出力する。
[動作の説明]
次に、図2を参照して、情報処理装置19の区間の端部での動作について、さらに説明する。
既に説明したとおり、情報処理装置19の加算部13は、入力データ100を一次関数Lに適用した算出結果である加算結果を出力する。
しかし、情報処理装置19は、初期逆数近似値の算出に用いる一次関数として、最大誤差の値の半分に修正した一次関数Lを用いる。つまり、情報処理装置19が用いる一次関数Lにおいて、区間の端部(1.0及び2.0)での値は、逆数関数Rの値と一致しない。
そこで、情報処理装置19は、以下で説明するように出力データ101を修正する。
(端部での修正)
まず、区間の端部での修正に関連する動作について説明する。なお、既に説明したとおり、区間の大きい側の端部である終点(2.0)は、後ほど説明するアンダーフローに対応する処理を実施される。そのため、以下は、区間の小さい側の端部である始点(1.0)について説明する。
前述のとおり、始点「1.0」における誤差は、逆数関数Rと一般的な一次関数Mとの最大誤差の値の半分に相当する。この誤差は、一般的な演算処理に適用された場合、必ずしも問題が発生させるわけではない。しかし、情報処理装置19に後続する処理として、端部のデータ(例えば「1.0」)に対して正確な近似対象の逆数関数Rの値(今の場合「1.0」)を前提とした処理が、用いられている可能性がある。
そこで、情報処理装置19は、端部検出部14及び選択部16を含む。すなわち、端部検出部14は、入力データ100が、端部のデータであるか否かを検出する。そして、端部検出部14が、端部のデータ(例えば、始点である「1.0」)であると検出した場合、選択部16は、端部に対応した所定のデータ(例えば、正確な逆数の値(今の場合、「1.0」))を選択して、出力する。
なお、端部検出部14において、端部のデータとして検出される値は、一つの数値に限られない。例えば、端部検出部14は、所定に範囲の入力データ100に対して、端部のデータと検出してもよい。その場合、選択部16は、端部に対応した所定のデータとして、所定の範囲のデータを、受信又は記憶すればよい。そして、端部に対応したデータが所定の範囲のデータの場合、選択部16は、所定の範囲のデータに加え、所定の範囲のデータと端部のデータとの関係を示す情報を記憶する。そして、選択部16は、端部検出部14から端部のデータの情報を受信し、受信した端部のデータの情報を基に、所定の範囲のデータから端部に対応したデータを選択すればよい。以下、データが範囲となる場合を含め、「端部に対応した所定のデータ」と呼ぶ。
このような構成及び動作を基に、情報処理装置19は、区間の端部での値を保証する。
その結果、情報処理装置19の結果である初期逆数近似値を用いる後続処理は、正常に動作できる。
なお、上記の情報処理装置19の動作は、出力データ101を初期逆数近似値とした場合、初期逆数近似値を、正確な逆数の値に修正する動作となっている。そのため、情報処理装置19は、初期逆数近似値における誤差を削減している。
(偽のアンダーフローに対する修正)
次に、偽のアンダーフローに対する修正に関連する動作について説明する。
情報処理装置19は、最大誤差の半分減じた一次関数Lを用いている。そして、図2に示されているように、一次関数Lは、独立変数(x)大きい側(終点)において従属変数(y)の値が小さくなる単調減少関数である。そのため、図2に示すように、偽のアンダーフローは、区間の大きい側の端部(終点、今の場合、「2.0」)の近傍、つまり、加算結果の最小値(今の場合、「0.5=(0.1)」)の近傍で発生する。
そこで、アンダーフロー検知部15は、加算部13からの加算結果における仮数部の値が、所定の閾値(今の場合「(0.1)」)を下回る場合、加算結果の仮数部を、アンダーフローが発生しない所定の値(今の場合「(0.1)」)に変更する(丸める)。つまり、アンダーフロー検知部15は、偽のアンダーフローの検知として、加算結果と所定の閾値(今の場合、「(0.1)」)との比較を用いる。そして、アンダーフロー検知部15は、加算結果が所定の閾値より小さい場合に、加算結果を、アンダーフローが発生しない所定の値に(今の場合、「(0.1)」)に修正する。
このように、アンダーフロー検知部15は、加算部13から受信した加算結果が、偽のアンダーフローを発生させるか否かを検知し、偽のアンダーフローを発生させる場合に、加算結果を変更する。
このような構成及び動作を基に、情報処理装置19は、偽のアンダーフローの発生を抑止する。
なお、上記の情報処理装置19の動作は、出力データ101を初期逆数近似値とした場合、初期逆数近似値を、正しい逆数の値に修正する(丸める)動作となっている。そのため、情報処理装置19は、初期逆数近似値における誤差を削減している。
[効果の説明]
本実施形態に係る情報処理装置19の効果について説明する。
以上説明したように、情報処理装置19は、区間の端部における値を保証し、偽のアンダーフローを抑止できるとの効果を奏することができる。
その理由は、次のとおりである。
情報処理装置19の端部検出部14が、入力データ100が端部であるか否かを検出する。そして、入力データ100が端部の場合、選択部16が、端部に対応した所定のデータを選択して、出力するためである。さらに、アンダーフロー検知部15が、加算結果において偽のアンダーフローが発生するか否かを検知し、偽のアンダーフローが発生する場合、加算結果をアンダーフローが発生しない値に修正するためである。
[変形例1]
以上の説明した情報処理装置19は、次のように構成される。
例えば、情報処理装置19の各構成部は、ハードウェア回路で構成されてもよい。
また、情報処理装置19において、各構成部は、ネットワーク又はバスを介して接続された複数の装置を用いて、構成されてもよい。
図3は、本変形例に係る情報処理装置18の構成の一例を示すブロック図である。
情報処理装置18は、端部検出部14と、アンダーフロー検知部15と、選択部16とを含む。情報処理装置18の端部検出部14は、入力データ100を基に、上記の説明における端部検出部14と同様に動作する。アンダーフロー検知部15は、図示しないネットワーク又はバスを介して、図示しない加算部13に相当する構成から加算結果102を受信し、上記の説明におけるアンダーフロー検知部15と同様に動作する。選択部16は、上記の説明における選択部16と同様に動作する。
このように構成された情報処理装置18は、情報処理装置19と同様の効果を得ることができる。
その理由は、次のとおりである。
情報処理装置19の端部検出部14が、入力データ100が端部であるか否かを検出する。そして、入力データ100が端部の場合、選択部16が、端部に対応する所定のデータを選択して出力するためである。さらに、アンダーフロー検知部15が、加算結果において偽のアンダーフローが発生する否かを検知し、偽のアンダーフローが発生する場合、加算結果をアンダーフローが発生しない値に修正するためである。
なお、情報処理装置18は、本発明の実施形態における最小構成である。
[変形例2]
また、情報処理装置19において、複数の構成部は、1つのハードウェアで構成されてもよい。
また、情報処理装置19は、CPUと、ROM(Read Only Memory)と、RAM(Random Access Memory)とを含むコンピュータ装置として実現されてもよい。情報処理装置19は、上記構成に加え、さらに、入出力接続回路(IOC:Input / Output Circuit)と、ネットワークインターフェース回路(NIC:Network Interface Circuit)とを含むコンピュータ装置として実現されてもよい。
図4は、本変形例に係る情報処理装置600の構成の一例を示すブロック図である。
情報処理装置600は、CPU610と、ROM620と、RAM630と、内部記憶装置640と、IOC650と、NIC680とを含み、コンピュータ装置を構成している。
CPU610は、ROM620からプログラムを読み込む。そして、CPU610は、読み込んだプログラムに基づいて、RAM630と、内部記憶装置640と、IOC650と、NIC680とを制御する。そして、CPU610を含むコンピュータは、これらの構成を制御し、図1に示されている、傾き抽出部10と、切片抽出部11と、乗算部12と、加算部13と、端部検出部14と、アンダーフロー検知部15と、選択部16としての各機能を実現する。
CPU610は、各機能を実現する際に、RAM630又は内部記憶装置640を、プログラムの一時記憶として使用してもよい。
また、CPU610は、コンピュータで読み取り可能にプログラムを記憶した記憶媒体700が含むプログラムを、図示しない記憶媒体読み取り装置を用いて読み込んでもよい。あるいは、CPU610は、NIC680を介して、図示しない外部の装置からプログラムを受け取り、RAM630に保存して、保存したプログラムを基に動作してもよい。
ROM620は、CPU610が実行するプログラム及び固定的なデータを記憶する。ROM620は、傾きテーブル、切片テーブル、及び、端部に対応した所定のデータを保存してもよい。ROM620は、例えば、P−ROM(Programmable-ROM)又はフラッシュROMである。
RAM630は、CPU610が実行するプログラム及びデータを一時的に記憶する。RAM630は、例えば、D−RAM(Dynamic-RAM)である。
内部記憶装置640は、情報処理装置600が長期的に保存するデータ及びプログラムを記憶する。また、内部記憶装置640は、CPU610の一時記憶装置として動作してもよい。内部記憶装置640は、傾きテーブル、切片テーブル、及び、端部に対応した所定のデータを保存してもよい。内部記憶装置640は、例えば、ハードディスク装置、光磁気ディスク装置、SSD(Solid State Drive)又はディスクアレイ装置である。
ここで、ROM620と内部記憶装置640は、不揮発性(non-transitory)の記憶媒体である。一方、RAM630は、揮発性(transitory)の記憶媒体である。そして、CPU610は、ROM620、内部記憶装置640、又は、RAM630に記憶されているプログラムを基に動作可能である。つまり、CPU610は、不揮発性記憶媒体又は揮発性記憶媒体を用いて動作可能である。
IOC650は、CPU610と、入力機器660及び表示機器670とのデータを仲介する。IOC650は、例えば、IOインターフェースカード又はUSB(Universal Serial Bus)カードである。
入力機器660は、情報処理装置600の操作者からの入力指示を受け取る機器である。入力機器660は、例えば、キーボード、マウス又はタッチパネルである。
表示機器670は、情報処理装置600の操作者に情報を表示する機器である。表示機器670は、例えば、液晶ディスプレイである。
NIC680は、ネットワークを介した図示しない外部の装置とのデータのやり取りを中継する。NIC680は、例えば、LAN(Local Area Network)カードである。
このように構成された情報処理装置600は、情報処理装置19と同様の効果を得ることができる。
その理由は、情報処理装置600のCPU610が、プログラムに基づいて情報処理装置19と同様の機能を実現できるためである。
以上、実施形態を参照して本願発明を説明したが、本願発明は上記実施形態に限定されるものではない。本願発明の構成及び詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
10 傾き抽出部
11 切片抽出部
12 乗算部
13 加算部
14 端部検出部
15 アンダーフロー検知部
16 選択部
18 情報処理装置
19 情報処理装置
100 入力データ
101 出力データ
600 情報処理装置
610 CPU
620 ROM
630 RAM
640 内部記憶装置
650 IOC
660 入力機器
670 表示機器
680 NIC
700 記憶媒体

Claims (7)

  1. 入力データが前記入力データの区間の端部のデータであるか否かを検出する端部検出手段と、
    所定の第1の関数に対する近似値を算出する第2の関数に前記入力データを適用した算出結果である加算結果が、前記入力データを前記第1の関数に適用した場合に発生しないアンダーフローである偽のアンダーフローを発生させるか否かを検知し、前記加算結果が偽のアンダーフローを発生させる場合に、前記加算結果を偽のアンダーフローを発生させない値に修正して出力値とし、前記加算結果が偽のアンダーフローを発生させない場合に、前記加算結果を前記出力値とするアンダーフロー検知手段と、
    前記入力データが端部のデータの場合、前記端部に対応した所定のデータを選択し、前記入力データが端部のデータでない場合、前記出力値を選択する選択手段と
    を含む情報処理装置。
  2. 前記第2の関数が、一次関数であり、
    前記入力データにおける最上位ビットから所定の範囲の上位ビットを基に前記一次関数の傾きを抽出する傾き抽出手段と、
    前記傾きを基に前記一次関数の切片を抽出する切片抽出手段と、
    前記傾きと、前記入力データにおける前記上位ビットを除いた下位ビットとを乗算する乗算手段と、
    前記乗算の結果と前記切片とを加算して前記加算結果を算出する加算手段とを
    さらに含む請求項1に記載の情報処理装置。
  3. 前記傾き抽出手段が、
    前記第1の関数と第2の関数との最大誤差を、前記区間の両端部における前記第1の関数の値を基に算出された一次関数と前記第1の関数との最大誤差の半分の値とする傾きを抽出する
    請求項2に記載の情報処理装置。
  4. アンダーフロー検知手段が、
    前記加算結果を浮動小数点表記としたときの仮数部の値が所定の値より小さいか否かを基に、前記加算結果が前記偽のアンダーフローを発生させるか否かを検知する
    請求項1ないし3のいずれか1項に記載の情報処理装置。
  5. 前記第1の関数が、
    前記入力データに対する逆数関数、累乗根逆数関数、又は、累乗逆数関数である
    請求項1ないし4のいずれか1項に記載の情報処理装置。
  6. 入力データが前記入力データの区間の端部のデータであるか否かを検出し、
    所定の第1の関数に対する近似値を算出する第2の関数に前記入力データを適用した算出結果である加算結果が、前記入力データを前記第1の関数に適用した場合に発生しないアンダーフローである偽のアンダーフローを発生させるか否かを検知し、
    前記加算結果が偽のアンダーフローを発生させる場合に、前記加算結果を偽のアンダーフローを発生させない値に修正して出力値とし、
    前記加算結果が偽のアンダーフローを発生させない場合に、前記加算結果を前記出力値とし
    前記入力データが端部のデータの場合、前記端部に対応した所定のデータを選択し、
    前記入力データが端部のデータでない場合、前記出力値を選択する
    情報処理方法。
  7. 入力データが前記入力データの区間の端部のデータであるか否かを検出する処理と、
    所定の第1の関数に対する近似値を算出する第2の関数に前記入力データを適用した算出結果である加算結果が、前記入力データを前記第1の関数に適用した場合に発生しないアンダーフローである偽のアンダーフローを発生させるか否かを検知する処理と、
    前記加算結果が偽のアンダーフローを発生させる場合に、前記加算結果を偽のアンダーフローを発生させない値に修正して出力値とする処理と、
    前記加算結果が偽のアンダーフローを発生させない場合に、前記加算結果を前記出力値とする処理と
    前記入力データが端部のデータの場合、前記端部に対応した所定のデータを選択する処理と、
    前記入力データが端部のデータでない場合、前記出力値を選択する処理と
    をコンピュータに実行させるプログラム。
JP2015206096A 2015-10-20 2015-10-20 情報処理装置、情報処理方法、及び、プログラム Active JP6048560B1 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2015206096A JP6048560B1 (ja) 2015-10-20 2015-10-20 情報処理装置、情報処理方法、及び、プログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2015206096A JP6048560B1 (ja) 2015-10-20 2015-10-20 情報処理装置、情報処理方法、及び、プログラム

Publications (2)

Publication Number Publication Date
JP6048560B1 true JP6048560B1 (ja) 2016-12-21
JP2017078928A JP2017078928A (ja) 2017-04-27

Family

ID=57572390

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015206096A Active JP6048560B1 (ja) 2015-10-20 2015-10-20 情報処理装置、情報処理方法、及び、プログラム

Country Status (1)

Country Link
JP (1) JP6048560B1 (ja)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS63163630A (ja) * 1986-12-26 1988-07-07 Hitachi Ltd 逆数演算方式

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS63163630A (ja) * 1986-12-26 1988-07-07 Hitachi Ltd 逆数演算方式

Also Published As

Publication number Publication date
JP2017078928A (ja) 2017-04-27

Similar Documents

Publication Publication Date Title
JP5731937B2 (ja) ベクトル浮動小数点引数削減
US12026618B2 (en) Method and system for training machine learning system
US9760339B2 (en) Apparatus and method of processing numeric calculation
US8914431B2 (en) Range check based lookup tables
US10726179B1 (en) Circuit design supporting method and storage medium
JP2016062404A (ja) 演算処理方法及び演算処理装置
CN113342671B (zh) 对运算模块进行验证的方法、装置、电子设备和介质
TWI754680B (zh) 產生起始估算值的裝置及方法、製造方法及測試方法
JP6048560B1 (ja) 情報処理装置、情報処理方法、及び、プログラム
US10216481B2 (en) Digit recurrence division with scaling and digit selection using intermediate value
CN115857655B (zh) Gpu的功耗控制方法、装置、设备、介质和程序产品
JP6919539B2 (ja) 演算処理装置および演算処理装置の制御方法
JP2009122732A (ja) 動作タイミング検証装置及びプログラム
US10482157B2 (en) Data compression apparatus and data compression method and storage medium
CN113391787B (zh) 一种除法器及除法处理方法
US10353671B2 (en) Circuitry and method for performing division
US9594728B2 (en) Device and method for determining an estimate of the logarithm of an input variable
WO2018150588A1 (ja) 情報処理装置、情報処理方法及び情報処理プログラム
US9298421B2 (en) Performing quotient selection for a carry-save division operation
CN113703717B (zh) 二进制浮点数乘法运算电路及其控制方法、计算装置
US8375077B2 (en) Method, apparatus and media for performing GF(2) polynomial operations
CN105468566B (zh) 用于计算数据的方法和设备
JP2019175225A (ja) 出力値生成回路、プロセッサ、出力値生成方法、及びプログラム
JP2020166661A (ja) 除算装置、除算方法及びプログラム
US20200081688A1 (en) Speculative calculations in square root operations

Legal Events

Date Code Title Description
A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20161004

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: 20161025

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20161107

R150 Certificate of patent or registration of utility model

Ref document number: 6048560

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150