JP2004005395A - 演算処理装置、半導体デバイス - Google Patents
演算処理装置、半導体デバイス Download PDFInfo
- Publication number
- JP2004005395A JP2004005395A JP2003008501A JP2003008501A JP2004005395A JP 2004005395 A JP2004005395 A JP 2004005395A JP 2003008501 A JP2003008501 A JP 2003008501A JP 2003008501 A JP2003008501 A JP 2003008501A JP 2004005395 A JP2004005395 A JP 2004005395A
- Authority
- JP
- Japan
- Prior art keywords
- floating
- upper limit
- lower limit
- arithmetic processing
- point numbers
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/483—Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/499—Denomination or exception handling, e.g. rounding or overflow
- G06F7/49942—Significance control
- G06F7/49989—Interval arithmetic
Landscapes
- Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Computational Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Nonlinear Science (AREA)
- Complex Calculations (AREA)
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
Abstract
【課題】精度保証のための処理の負荷を低減して、演算速度を向上させるための演算処理装置を提供する。
【解決手段】複数の浮動小数点数が格納されるデータメモリ12と、データメモリ12から2以上の浮動小数点数を取り込み、取り込んだ2以上の浮動小数点数のそれぞれについて、その真値を含む範囲で上限値及び下限値を設定する区間設定部13と、区間設定部により設定された2以上の浮動小数点数のそれぞれの上限値と下限値とにより所定の演算処理を実行するALU14と、を備えている。真値を含む範囲設定を専門に行う区間設定部13と、区間演算を専門に行うALU14とにより、ソフトウエアで機械区間演算を行っていた従来よりも精度保証のための処理負荷を低減でき、演算速度が向上する。
【選択図】 図2
【解決手段】複数の浮動小数点数が格納されるデータメモリ12と、データメモリ12から2以上の浮動小数点数を取り込み、取り込んだ2以上の浮動小数点数のそれぞれについて、その真値を含む範囲で上限値及び下限値を設定する区間設定部13と、区間設定部により設定された2以上の浮動小数点数のそれぞれの上限値と下限値とにより所定の演算処理を実行するALU14と、を備えている。真値を含む範囲設定を専門に行う区間設定部13と、区間演算を専門に行うALU14とにより、ソフトウエアで機械区間演算を行っていた従来よりも精度保証のための処理負荷を低減でき、演算速度が向上する。
【選択図】 図2
Description
【0001】
【発明の属する技術分野】
本発明は、浮動小数点演算において発生する誤差を保証するための精度保証処理を、高速に行うための技術に関する。
【0002】
【従来の技術】
コンピュータなどの情報処理装置で実行される演算は、情報処理装置の処理性能の向上、処理内容の高度化に伴って複雑になっている。複雑な演算処理を実行する場合でも、より正確な演算結果を得るために浮動小数点数を用いた演算を行うことが多い。浮動小数点演算を用いることにより、有効桁数を増やすことができ、正確な演算が可能となるためである。浮動小数点演算の標準的な規格として、IEEE(Institute of Electrical and Electronic Engineers)754がある。
【0003】
しかし、浮動小数点を用いて実数に基づく連続数学の問題を取り扱う際には、連続数である実数を不連続である浮動小数点数に置き換えて演算を行うため、演算結果に誤差が含まれることになる。
つまり、浮動小数点数を用いた処理を行うFPU(Floating Point Unit)のような演算処理装置には、処理できる桁数に制限があるために、浮動小数点数の最も下位の桁の数を、切り捨て、切り上げ、四捨五入などの「丸め処理」により決める必要がある。この丸め処理により、浮動小数点数は、実数とは異なる値になり、その差が誤差となる。このような誤差を含んだ浮動小数点数を用いて演算を行うと、当然ながら演算結果には誤差が含まれることになる。
【0004】
従来の演算処理装置のようなハードウエアにおいて、このような誤差を考慮した演算(精度保証付きの演算)を行っているものは稀である。そのために、連続数学の問題に対して数学的に真に正しいと保証された演算結果を導くには、ソフトウエアにより精度保証を行い、真の解がどのような範囲にあるかを確かめながら計算を行う必要がある。あるいは、演算結果を単なる近似値として取り扱い、真の解を、演算結果の近傍にあるなどという経験則に基づいて取り扱うこともある。
【0005】
誤差を正しく保証し、演算結果に対して真に数学的な意味を導くために、精度保証付き数値計算という手法が研究されている。しかしながら、前述の通りハードウエアではこのような精度保証つき数値計算を考慮していないので、ソフトウエアにより精度保証のすべてを行わなければならない。そのために、ソフトウエアの開発に専門的な知識と膨大な手間、時間が必要になる。
【0006】
ソフトウエアによる精度保証は、演算対象となる実数(以下、「真値」という)を、演算処理装置で扱うことができる浮動小数点数を両端とする区間の中にはさみこみ、それによって連続数の問題を扱おうとするものである。この区間を数と同様に扱うための四則演算は区間演算と呼ばれ、この区間演算を浮動小数点により行うものは機械区間演算と呼ばれている。
【0007】
例えば、真値「0.001234」を、小数点以下3位までの浮動小数点数の演算が可能な演算処理装置で演算処理する場合、真値「0.001234」を含む区間「0.123×10−2」〜「0.124×10−2」を浮動小数点数により設定して、これに基づいて演算処理を行う。これが区間演算である。特に、区間を浮動小数点で設定しているために、機械区間演算となる。区間は、真値を含むような範囲に定められる。具体的には、真値「0.001234」を浮動小数点数「0.1234×10−2」で表し、これを含むように区間が決められる。なお、本明細書では、区間を表す浮動小数点数のうち区間の上限を表すものを上限値、区間の下限を表すものを下限値という。
【0008】
機械区間演算において、例えば加減算の際には、加減算の対象となる2つの真値に対して丸め処理を行って下限値を設定して、下限値同士による加減算を行った後に、真値に対して再び丸め処理を行って上限値を設定して、上限値同士による加減算を行う。つまり、「下限値の設定→演算→上限値の設定→演算」というルーチンになる。また、乗除算においては、下限値同士の乗除算、上限値同士の乗除算の後に、一方の上限値と他方の下限値による乗除算、一方の下限値と他方の上限値による乗除算を行い、各演算結果を比較して最大値、最小値を選択する処理を行う。
【0009】
従来はこれらの区間演算による四則演算を組み合わせて、精度保証付きの計算を行っている。
この方法は、解を有限回の四則演算の組み合わせで求める場合には、ある程度の成功を収めた。しかしながら、上述のように同じ演算処理を上限値と下限値とを入れ替えて行う必要がある。例えば、加算のときには、下限値同士の加算を行った後に、上限値同士の加算を行う。さらに乗除算においては演算結果の比較処理が入るために、演算速度の大幅な低下が見られる。
【0010】
【発明が解決しようとする課題】
本発明は、上記のような問題点に鑑み、精度保証のための処理の負荷を低減して、演算速度を上げるための演算処理技術を提供することを課題とする。
【0011】
【課題を解決するための手段】
以上のような課題を解決する本発明の演算処理装置は、複数の浮動小数点数が格納されるデータ格納手段と、前記データ格納手段から2以上の浮動小数点数を取り込み、取り込んだ前記2以上の浮動小数点数のそれぞれについて、その真値を含む範囲で上限値及び下限値を設定する区間設定手段と、前記区間設定手段により設定された前記2以上の浮動小数点数のそれぞれの前記上限値と前記下限値とにより所定の演算処理を実行する演算手段と、を備える。前記データ格納手段、前記区間設定手段、及び前記演算手段は、ハードウェアにより構成されている。
この演算処理装置は、区間を設定する専用のハードウエア(区間設定手段)と、区間演算専用のハードウエア(演算手段)とを備えることにより、ソフトウエア処理のみで誤差を保証する従来の精度保証よりも、高速に精度保証が可能となる。
なお、ここでいうハードウエアには、その動作の手順が予めプログラムされたハードウエアであるファームウエアも含まれる。
【0012】
このような演算処理装置は、前記演算手段により得られる複数の演算結果を比較して、所定の条件を満たす演算結果を選択し、選択した演算結果を前記データ格納手段に書き込む演算結果選択手段をさらに備えるようにしてもよい。演算結果選択手段は、例えば、前記複数の演算結果のうち最大値を取るものと最小値を取るものとを選択するように構成される。演算結果選択手段により、例えば、浮動小数点数の真値による演算結果を含む範囲を設定できる。
【0013】
上記の演算処理装置における前記演算手段は、演算態様に応じて以下のような構成にすることができる。
(1)2つの前記浮動小数点数を加算するときには、例えば、前記2つの浮動小数点数から得られる2つの前記上限値同士を加算するとともに2つの前記下限値同士を加算するように構成する。
(2)2つの前記浮動小数点数の一方から他方を減算するときには、例えば、前記一方の浮動小数点数から得られた下限値を前記他方の浮動小数点数から得られた上限値により減算するとともに、前記一方の浮動小数点数から得られた上限値を前記他方の浮動小数点数から得られた下限値により減算するように構成する。
(3)2つの前記浮動小数点数の乗算時または除算時には、例えば、前記2つの浮動小数点数から得られる2つの前記上限値同士を乗算または除算し、2つの前記下限値同士を乗算または除算し、一方の浮動小数点数から得られた上限値と他方の浮動小数点から得られた下限値とを乗算または除算し、前記一方の浮動小数点から得られた下限値と前記他方の浮動小数点数から得られた上限値とを乗算または除算するように構成する。この場合、前記演算結果選択手段は、例えば、前記演算手段による4つの乗算結果または4つの除算結果のうち、最大値を取るものと最小値を取るものとを選択するように構成する。
【0014】
本発明の他の演算処理装置は、所定の演算処理を指示するための命令が格納される命令格納手段と、複数の浮動小数点数が格納されるデータ格納手段と、前記命令格納手段から前記命令を取り込んで、この命令に基づいて前記データ格納手段から2以上の浮動小数点数を取り込み、取り込んだ前記2以上の浮動小数点数のそれぞれについて、その真値を含む範囲で上限値及び下限値を設定する区間設定手段と、前記命令格納手段から前記命令を取り込み、前記区間設定手段により前記命令に基づいて設定された2以上の前記上限値と2以上の前記下限値とを取り込んで、取り込んだ前記2以上の上限値及び前記2以上の下限値により取り込んだ前記所定の命令が指示する前記所定の演算処理を実行する演算手段と、前記演算手段による演算の結果得られた複数の演算結果から、所定の条件を満たす演算結果を選択して前記データ格納手段に書き込む演算結果選択手段とを備える。上記の演算処理装置と同様、前記命令格納手段、前記データ格納手段、前記区間設定手段、及び前記演算手段は、ハードウェアにより構成されている。
命令には、例えば、演算の対象となる浮動小数点数を示す情報、演算の種類(加算、減算等)、演算の手順などの情報、等が含まれる。
【0015】
このような演算処理装置において、前記区間設定手段が取り込んだ浮動小数点数の個数が2であり、前記命令が加算を指示するものである場合には、前記演算手段を、例えば、2つの当該浮動小数点数の上限値同士及び下限値同士を加算するように構成する。この場合、前記演算結果選択手段は、例えば、前記演算手段による2つの演算結果を前記データ格納手段に書き込むように構成する。
前記区間設定手段が取り込んだ前記浮動小数点数の個数が2であり、前記所定の命令が2つの前記浮動小数点数の一方から他方の減算を指示するものである場合には、前記演算手段を、例えば、2つの当該浮動小数点数の、前記一方から得られた下限値を前記他方から得られた上限値により減算するとともに、前記一方から得られた上限値を前記他方から得られた下限値により減算するように構成し、前記演算結果選択手段を、例えば、前記演算手段による2つの演算結果を前記データ格納手段に書き込むように構成する。
また、前記区間設定手段が取り込んだ前記浮動小数点数の個数が2であり、前記命令が乗算または除算を指示するものである場合には、前記演算手段を、例えば、2つの当該浮動小数点数の、上限値同士及び下限値同士について乗算または除算し、一方から得られた上限値と他方から得られた下限値とについて乗算または除算し、前記一方から得られた下限値と前記他方から得られた上限値とについて乗算または除算を実行するように構成し、前記演算結果選択手段を、例えば、前記演算手段による4つの乗算結果または4つの除算結果のうち、最大値を取るものと最小値を取るものとを前記データ格納手段に書き込むように構成する。
【0016】
上記のような各演算処理装置において、データ格納手段に格納される浮動小数点数は、真値に対して丸め処理を行って求められている。そのために区間設定手段は、例えば、浮動小数点数の仮数部の最も下位の桁の数に1を加減算することにより、真値を含む区間を設定するようにしてもよい。このようにして得られた真値を含んだ区間に対して、演算手段により区間演算を行えば、誤差を保証しながらの演算処理が可能となる。
【0017】
本発明の他の演算処理装置は、複数の誤差付きの数値が格納されるデータ格納手段と、前記データ格納手段から2以上の誤差付きの数値を取り込み、取り込んだ前記2以上の誤差付きの数値のそれぞれについて、その誤差を含む範囲で上限値及び下限値を設定する区間設定手段と、前記区間設定手段により設定された前記2以上の誤差付きの数値のそれぞれの前記上限値と前記下限値とにより所定の演算処理を実行する演算手段とを備え、前記データ格納手段、前記区間設定手段、及び前記演算手段が、ハードウェアにより構成されていることを特徴とする。
【0018】
本発明は、以下のような半導体デバイスも提供する。
この半導体デバイスは、所定の演算処理を指示するための命令が格納される命令メモリと、複数の浮動小数点数が格納されるデータメモリと、前記命令メモリから前記命令を取り込んで、この命令に基づいて前記データメモリから2以上の浮動小数点数を取り込み、取り込んだ前記2以上の浮動小数点数のそれぞれについて、その真値を含む範囲で上限値及び下限値を設定する区間設定部と、前記命令メモリから前記命令を取り込み、前記区間設定部により前記命令に基づいて設定された2以上の前記上限値と2以上の前記下限値とを取り込んで、取り込んだ前記2以上の上限値及び前記2以上の下限値により取り込んだ前記所定の命令が指示する前記所定の演算処理を実行する演算部と、前記演算部による演算の結果得られた複数の演算結果から、最大値を取るものと最小値を取るものとを選択して前記データメモリに書き込む演算結果選択部と、を備えている。
【0019】
【発明の実施の形態】
以下に、本発明の実施形態を、図を参照しつつ説明する。
【0020】
図1は、本発明の演算処理装置が搭載される情報処理システムのハードウエア構成を示す図である。この情報処理システムは、CPU(Central Processing Unit)1、RAM(Random Access Memory)2、ROM(Read Only Memory)3および入出力インタフェース4が、バスBを介して接続されている。入出力インタフェース4には、キーボードやマウスなどの入力装置、及びディスプレイ装置などの出力装置が接続されており、入力装置による情報処理システム外部からのデータの入力や、出力装置への処理結果の出力の制御を行っている。
【0021】
CPU1は、RAM2、ROM3に記録されているプログラムやデータを用いて所定の情報処理を行うものである。本実施形態のCPU1は、情報処理の際に浮動小数点を用いた演算処理を行うために、FPUのような、浮動小数点による演算が可能な演算処理装置10を含んで構成される。これにより、例えば、この情報処理システムが3次元画像処理を行うような装置である場合には、CPU1により浮動小数点演算が可能になるために、精細な画像を表示したり、画像内の物体が複雑な動作をする様子を表示することできる。
なお、この実施形態では、演算処理装置10をCPU1に含むものとして説明するが、これに限らず、CPU1とは独立して設けるようにしてもよい。
【0022】
演算処理装置10の具体的な構成例を図2に示す。
本実施形態の演算処理装置10は、図2のように、命令メモリ11、データメモリ12、区間設定部13、ALU(Arithmetic and Logical Unit)14、演算結果選択部15、及び演算処理装置10に含まれる各構成要素の動作を制御する制御部16を備えている。これらの各構成要素は、浮動小数点数の精度保証を行うための専用のハードウエアとして設けられており、例えば、1つの半導体デバイス上に構築される。
【0023】
命令メモリ11は、演算処理装置10の外部から演算処理を実行するための命令を受け取り、これを格納するものである。
命令には、例えば、2つの浮動小数点数を、加算させる加算命令、減算させる減算命令、乗算させる乗算命令、除算させる除算命令などが挙げられる。また、命令には、以上のような演算命令の他に、演算対象となる浮動小数点数を特定するための情報も含まれている。
データメモリ12は、演算処理装置10の外部から演算処理に用いられる浮動小数点数を受け取り、これを格納するものである。データメモリ12には、演算処理装置10による演算結果も格納される。演算処理に用いられる浮動小数点数は、例えば、真値を所定の桁で四捨五入などの丸め処理を行うことにより得られた数である。
命令メモリ11及びデータメモリ12は、物理的に同じメモリ内に存在してもかまわない。また、RAM2を、命令メモリ11、データメモリ12として用いるようにしてもよい。
【0024】
区間設定部13は、データメモリ12から演算処理に用いる浮動小数点数を取り込んで、この浮動小数点数の真値を含む範囲(区間)の上限値及び下限値を設定する。例えば、浮動小数点数の仮数部の最も下位の桁の数に、1加算及び1減算して浮動小数点数の上限値及び下限値を算出する。
つまり、浮動小数点数は、前述の通り、真値に対して所定の桁を丸め処理を施すことにより、演算処理装置10で処理可能なように置き換えられているために、正確に真値を示すものとは限らない。そのために、浮動小数点数の仮数部の最も下位の桁の数に1加減算することにより、浮動小数点数を、真値を含む所定の範囲を示すものとする。これにより、真値を含む区間を設定することができるようになる。
【0025】
例えば、区間設定部13がデータメモリ12から取り込んだ浮動小数点数を「0.123×10−2」とする。丸め処理が四捨五入で行われている場合、この浮動小数点数は、「0.1225×10−2」〜「0.1234×10−2」の間に真値を含むことになる。そのために、区間設定部13は、「0.123」に「0.001」を加減算して下限値「0.122×10−2」、上限値「0.124×10−2」を算出して、常に真値を含む範囲で演算が可能なようにする。
算出した上限値及び下限値は、区間設定部13からALU14へ送られる。
【0026】
ALU14は、制御部16からの指示に従って、区間設定部13から送られる上限値及び下限値についての演算処理を実行するものである。ALU14が実行する演算処理は、例えば、四則演算等の数値計算処理である。演算結果は、演算結果選択部15へ送られる。
演算結果選択部15は、ALU14から送られる複数の演算結果を比較して、所定の条件をみたす演算結果を選択し、選択した演算結果をデータメモリ12に書き込むものである。例えば演算結果選択部15は、複数の演算結果から最大値及び最小値を選択してデータメモリ12に書き込むように構成される。
【0027】
制御部16は、命令メモリ11に演算処理装置10外部からの命令の受け取りを指示するとともに、命令メモリ11から命令を読み出して、これを区間設定部13、ALU14、演算結果選択部15に送る。また、制御部16は、データメモリ12に演算処理装置10外部からの浮動小数点数の受け取りを指示するとともに、データメモリ12に格納されている演算結果や浮動小数点数を演算処理装置10外部へ出力させる。
【0028】
以上のような演算処理装置10の動作、特に浮動小数点数の演算処理の手順を、図3〜図7を参照して説明する。
図3は、このような演算処理の処理手順を示す図である。演算処理の前提として、演算処理装置10の命令メモリ11には、演算処理を実行するための命令が格納されており、データメモリ12には、演算処理の対象となる丸め処理された浮動小数点数が少なくとも2つ格納されているものとする。演算処理の対象となる2つの浮動小数点数を「x」、「y」、(x<y)とする。
【0029】
制御部16は、命令メモリ11から、これから実行することになる演算処理についての命令を読み出し、これを区間設定部13へ送る(ステップS10)。制御部16から命令を受けた区間設定部13は、この命令に基づいてデータメモリ12から演算処理の対象となる2つの浮動小数点数x、yを取り込む(ステップS20)。
【0030】
次いで、区間設定部13は、データメモリ12から取り込んだ浮動小数点数x、yの下限値x1、y1及び上限値x2、y2を設定する(ステップS30)。例えば、浮動小数点数x、yのそれぞれの仮数部の最も下位の桁の数に対して1加減算を行う。これにより区間設定部13は、x1、x2、y1、y2を算出する。
区間設定部13は、算出したx1、x2、y1、y2をALU14へ送る(ステップS40)。
【0031】
制御部16は、命令をALU14へ送って演算処理の指示を出す。ALU14は命令に基づいて、区間設定部13から送られるx1、x2、y1、y2に対する演算処理を実行する(ステップS50)。演算結果は、ALU14から演算結果選択部15に転送される(ステップS60)。ALU14によって実行される演算処理は、図4〜図7に示すようなものである。
命令が加算演算を指示するものである場合、ALU14は、x1+y1及びx2+y2を実行する(図4)。
命令が減算演算を指示するものである場合、ALU14は、x1−y2及びx2−y1を実行する(図5)。
命令が乗算演算を指示するものである場合、ALU14は、x1×y1、x1×y2、x2×y1及びx2×y2を実行する(図6)。
命令が除算演算を指示するものである場合、ALU14は、x1/y1、x1/y2、x2/y1及びx2/y2を実行する(図7)。
【0032】
次いで、演算結果選択部15は、制御部16からの指示により、ALU14から送られた演算結果を比較し、所定の条件をみたすものを選択して、データメモリ12に書き込む(ステップS70、S80)。具体的には、制御部16から送られる命令がどのような処理を要求しているかによって、以下のような処理を行う。
命令が加算演算を指示するものである場合、演算結果選択部15は、x1+y1、x2+y2を、それぞれ演算結果z1、z2として、データメモリ12に書き込む。z1(=x1+y1)、z2(=x2+y2)は、それぞれ、演算結果の下限値、上限値を表す(図4)。
命令が減算演算を指示するものである場合、演算結果選択部15は、z1=x1−y2、z2=x2−y1をデータメモリ12に書き込む(図5)。
命令が乗算演算を指示するものである場合、演算結果選択部15は、x1×y1、x1×y2、x2×y1、x2×y2を比較して最小値と最大値を選択する。最小値をz1、最大値をz2としてデータメモリ12に書き込む(図6)。
命令が除算演算を指示するものである場合、演算結果選択部15は、x1/y1、x1/y2、x2/y1、x2/y2を比較して最小値と最大値を選択する。最小値をz1、最大値をz2としてデータメモリ12に書き込む(図7)。
【0033】
このようにして、浮動小数点数x、yを用いて演算結果z1、z2が得られる。浮動小数点数x、yの真値を用いた演算結果は、演算結果z1を下限値とし、z2を上限値とする範囲内に存在することになる。得られた演算結果z1、z2は、データメモリ12から演算処理装置10の外部に出力されたり、あるいは再び演算処理に用いられることになる。
【0034】
以上のようにして、機械区間演算をハードウエアにより処理できるようになる。このような演算処理装置10は、区間設定部13とALU14とを並列に動作させることが可能である。つまり、区間設定部13とALU14とが連続して動作しているときには、区間設定部13で浮動小数点数の上限値及び下限値を算出しているのと同時に、先に算出された上限値及び下限値を用いてALU14が演算処理を可能となる。そのために、全体の処理を高速化することができる。
【0035】
区間設定部13を備えることで、入力された浮動小数点数の上限値、下限値を計算により求めることができるために、上限値、下限値を逐次データメモリ12から読み込む必要がない。さらに、ALU14では制御部16からの命令と区間設定部13からの上限値、下限値とに基づき、計算を実行することができる。これによって、従来の「下限値設定→演算→上限値設定→演算」というルーチンを、「下限値、上限値設定→演算」というルーチンで済ませることができ、高速化が図れる。
乗除演算では最小値、最大値を選択するための処理も必要であるが、これも演算結果選択部15が入力された命令とALU14からの演算結果に基づいて比較演算を行い、最小値、最大値を選択して出力することができるために、従来に比べて精度保証つき演算を大幅に高速化できる。
また、精度保証をハードウエアにより行うために、ソフトウエアの設計者は、浮動小数点を用いたソフトウエアの開発の際に、精度保証を考慮する必要がなくなる。そのためにソフトウエアの開発時に、浮動小数点の精度保証に関する専門的な知識と膨大な手間と時間をかけずにすむようになり、開発の能率が向上する。
【0036】
上記の実施形態では区間設定部13が浮動小数点数の仮数部の最も下位の桁の数に、1加算及び1減算して浮動小数点数の上限値及び下限値を算出するように構成されているが、これに限らず、入力装置により外部から上限値及び下限値を入力して設定するようにしてもよい。また、入力装置により浮動小数点数の仮数部の最も下位の桁の数に加減算される数を入力するようにしてもよい。
【0037】
また、演算処理装置10は、「100±10」のような誤差付きの数値の演算にも用いることができる。この場合、データメモリ12には、演算処理装置10の外部から演算処理に用いられる誤差付きの数値が格納される。このような誤差付きの数値は、例えば測定値等のばらつきがある数値から得られた数値である。
【0038】
区間設定部13は、データメモリ12から演算処理に用いる誤差付きの数値を取り込んで、誤差を含む範囲で上限値及び下限値を設定する。例えば、区間設定部13は、誤差付きの数値が「100±10」の場合には、入力された「100」と誤差値「10」とから「100+10」及び「100−10」の演算を行い、上限値「110」、下限値「90」を設定する。ALU14は、この上限値及び下限値を用いて演算を行うことになる。
このように、同じ構成の演算処理装置10により、誤差付きの数値の演算も可能である。
【0039】
【発明の効果】
以上の説明から明らかなように、本発明によれば、精度保証を専門に行うハードウエアによって、精度保証の処理を高速に実行することができる演算処理装置が得られる。
【図面の簡単な説明】
【図1】本発明が適用される情報処理システムの全体の構成を示す図。
【図2】本実施形態の演算処理装置の具体的な構成例を示す図。
【図3】本実施形態の演算処理装置による処理手順説明図。
【図4】加算演算時のデータの流れを説明する図。
【図5】減算演算時のデータの流れを説明する図。
【図6】乗算演算時のデータの流れを説明する図。
【図7】除算演算時のデータの流れを説明する図。
【符号の説明】
1 CPU
2 RAM
3 ROM
4 入出力インタフェース
10 演算処理装置
11 命令メモリ
12 データメモリ
13 区間設定部
14 ALU
15 演算結果選択部
16 制御部
【発明の属する技術分野】
本発明は、浮動小数点演算において発生する誤差を保証するための精度保証処理を、高速に行うための技術に関する。
【0002】
【従来の技術】
コンピュータなどの情報処理装置で実行される演算は、情報処理装置の処理性能の向上、処理内容の高度化に伴って複雑になっている。複雑な演算処理を実行する場合でも、より正確な演算結果を得るために浮動小数点数を用いた演算を行うことが多い。浮動小数点演算を用いることにより、有効桁数を増やすことができ、正確な演算が可能となるためである。浮動小数点演算の標準的な規格として、IEEE(Institute of Electrical and Electronic Engineers)754がある。
【0003】
しかし、浮動小数点を用いて実数に基づく連続数学の問題を取り扱う際には、連続数である実数を不連続である浮動小数点数に置き換えて演算を行うため、演算結果に誤差が含まれることになる。
つまり、浮動小数点数を用いた処理を行うFPU(Floating Point Unit)のような演算処理装置には、処理できる桁数に制限があるために、浮動小数点数の最も下位の桁の数を、切り捨て、切り上げ、四捨五入などの「丸め処理」により決める必要がある。この丸め処理により、浮動小数点数は、実数とは異なる値になり、その差が誤差となる。このような誤差を含んだ浮動小数点数を用いて演算を行うと、当然ながら演算結果には誤差が含まれることになる。
【0004】
従来の演算処理装置のようなハードウエアにおいて、このような誤差を考慮した演算(精度保証付きの演算)を行っているものは稀である。そのために、連続数学の問題に対して数学的に真に正しいと保証された演算結果を導くには、ソフトウエアにより精度保証を行い、真の解がどのような範囲にあるかを確かめながら計算を行う必要がある。あるいは、演算結果を単なる近似値として取り扱い、真の解を、演算結果の近傍にあるなどという経験則に基づいて取り扱うこともある。
【0005】
誤差を正しく保証し、演算結果に対して真に数学的な意味を導くために、精度保証付き数値計算という手法が研究されている。しかしながら、前述の通りハードウエアではこのような精度保証つき数値計算を考慮していないので、ソフトウエアにより精度保証のすべてを行わなければならない。そのために、ソフトウエアの開発に専門的な知識と膨大な手間、時間が必要になる。
【0006】
ソフトウエアによる精度保証は、演算対象となる実数(以下、「真値」という)を、演算処理装置で扱うことができる浮動小数点数を両端とする区間の中にはさみこみ、それによって連続数の問題を扱おうとするものである。この区間を数と同様に扱うための四則演算は区間演算と呼ばれ、この区間演算を浮動小数点により行うものは機械区間演算と呼ばれている。
【0007】
例えば、真値「0.001234」を、小数点以下3位までの浮動小数点数の演算が可能な演算処理装置で演算処理する場合、真値「0.001234」を含む区間「0.123×10−2」〜「0.124×10−2」を浮動小数点数により設定して、これに基づいて演算処理を行う。これが区間演算である。特に、区間を浮動小数点で設定しているために、機械区間演算となる。区間は、真値を含むような範囲に定められる。具体的には、真値「0.001234」を浮動小数点数「0.1234×10−2」で表し、これを含むように区間が決められる。なお、本明細書では、区間を表す浮動小数点数のうち区間の上限を表すものを上限値、区間の下限を表すものを下限値という。
【0008】
機械区間演算において、例えば加減算の際には、加減算の対象となる2つの真値に対して丸め処理を行って下限値を設定して、下限値同士による加減算を行った後に、真値に対して再び丸め処理を行って上限値を設定して、上限値同士による加減算を行う。つまり、「下限値の設定→演算→上限値の設定→演算」というルーチンになる。また、乗除算においては、下限値同士の乗除算、上限値同士の乗除算の後に、一方の上限値と他方の下限値による乗除算、一方の下限値と他方の上限値による乗除算を行い、各演算結果を比較して最大値、最小値を選択する処理を行う。
【0009】
従来はこれらの区間演算による四則演算を組み合わせて、精度保証付きの計算を行っている。
この方法は、解を有限回の四則演算の組み合わせで求める場合には、ある程度の成功を収めた。しかしながら、上述のように同じ演算処理を上限値と下限値とを入れ替えて行う必要がある。例えば、加算のときには、下限値同士の加算を行った後に、上限値同士の加算を行う。さらに乗除算においては演算結果の比較処理が入るために、演算速度の大幅な低下が見られる。
【0010】
【発明が解決しようとする課題】
本発明は、上記のような問題点に鑑み、精度保証のための処理の負荷を低減して、演算速度を上げるための演算処理技術を提供することを課題とする。
【0011】
【課題を解決するための手段】
以上のような課題を解決する本発明の演算処理装置は、複数の浮動小数点数が格納されるデータ格納手段と、前記データ格納手段から2以上の浮動小数点数を取り込み、取り込んだ前記2以上の浮動小数点数のそれぞれについて、その真値を含む範囲で上限値及び下限値を設定する区間設定手段と、前記区間設定手段により設定された前記2以上の浮動小数点数のそれぞれの前記上限値と前記下限値とにより所定の演算処理を実行する演算手段と、を備える。前記データ格納手段、前記区間設定手段、及び前記演算手段は、ハードウェアにより構成されている。
この演算処理装置は、区間を設定する専用のハードウエア(区間設定手段)と、区間演算専用のハードウエア(演算手段)とを備えることにより、ソフトウエア処理のみで誤差を保証する従来の精度保証よりも、高速に精度保証が可能となる。
なお、ここでいうハードウエアには、その動作の手順が予めプログラムされたハードウエアであるファームウエアも含まれる。
【0012】
このような演算処理装置は、前記演算手段により得られる複数の演算結果を比較して、所定の条件を満たす演算結果を選択し、選択した演算結果を前記データ格納手段に書き込む演算結果選択手段をさらに備えるようにしてもよい。演算結果選択手段は、例えば、前記複数の演算結果のうち最大値を取るものと最小値を取るものとを選択するように構成される。演算結果選択手段により、例えば、浮動小数点数の真値による演算結果を含む範囲を設定できる。
【0013】
上記の演算処理装置における前記演算手段は、演算態様に応じて以下のような構成にすることができる。
(1)2つの前記浮動小数点数を加算するときには、例えば、前記2つの浮動小数点数から得られる2つの前記上限値同士を加算するとともに2つの前記下限値同士を加算するように構成する。
(2)2つの前記浮動小数点数の一方から他方を減算するときには、例えば、前記一方の浮動小数点数から得られた下限値を前記他方の浮動小数点数から得られた上限値により減算するとともに、前記一方の浮動小数点数から得られた上限値を前記他方の浮動小数点数から得られた下限値により減算するように構成する。
(3)2つの前記浮動小数点数の乗算時または除算時には、例えば、前記2つの浮動小数点数から得られる2つの前記上限値同士を乗算または除算し、2つの前記下限値同士を乗算または除算し、一方の浮動小数点数から得られた上限値と他方の浮動小数点から得られた下限値とを乗算または除算し、前記一方の浮動小数点から得られた下限値と前記他方の浮動小数点数から得られた上限値とを乗算または除算するように構成する。この場合、前記演算結果選択手段は、例えば、前記演算手段による4つの乗算結果または4つの除算結果のうち、最大値を取るものと最小値を取るものとを選択するように構成する。
【0014】
本発明の他の演算処理装置は、所定の演算処理を指示するための命令が格納される命令格納手段と、複数の浮動小数点数が格納されるデータ格納手段と、前記命令格納手段から前記命令を取り込んで、この命令に基づいて前記データ格納手段から2以上の浮動小数点数を取り込み、取り込んだ前記2以上の浮動小数点数のそれぞれについて、その真値を含む範囲で上限値及び下限値を設定する区間設定手段と、前記命令格納手段から前記命令を取り込み、前記区間設定手段により前記命令に基づいて設定された2以上の前記上限値と2以上の前記下限値とを取り込んで、取り込んだ前記2以上の上限値及び前記2以上の下限値により取り込んだ前記所定の命令が指示する前記所定の演算処理を実行する演算手段と、前記演算手段による演算の結果得られた複数の演算結果から、所定の条件を満たす演算結果を選択して前記データ格納手段に書き込む演算結果選択手段とを備える。上記の演算処理装置と同様、前記命令格納手段、前記データ格納手段、前記区間設定手段、及び前記演算手段は、ハードウェアにより構成されている。
命令には、例えば、演算の対象となる浮動小数点数を示す情報、演算の種類(加算、減算等)、演算の手順などの情報、等が含まれる。
【0015】
このような演算処理装置において、前記区間設定手段が取り込んだ浮動小数点数の個数が2であり、前記命令が加算を指示するものである場合には、前記演算手段を、例えば、2つの当該浮動小数点数の上限値同士及び下限値同士を加算するように構成する。この場合、前記演算結果選択手段は、例えば、前記演算手段による2つの演算結果を前記データ格納手段に書き込むように構成する。
前記区間設定手段が取り込んだ前記浮動小数点数の個数が2であり、前記所定の命令が2つの前記浮動小数点数の一方から他方の減算を指示するものである場合には、前記演算手段を、例えば、2つの当該浮動小数点数の、前記一方から得られた下限値を前記他方から得られた上限値により減算するとともに、前記一方から得られた上限値を前記他方から得られた下限値により減算するように構成し、前記演算結果選択手段を、例えば、前記演算手段による2つの演算結果を前記データ格納手段に書き込むように構成する。
また、前記区間設定手段が取り込んだ前記浮動小数点数の個数が2であり、前記命令が乗算または除算を指示するものである場合には、前記演算手段を、例えば、2つの当該浮動小数点数の、上限値同士及び下限値同士について乗算または除算し、一方から得られた上限値と他方から得られた下限値とについて乗算または除算し、前記一方から得られた下限値と前記他方から得られた上限値とについて乗算または除算を実行するように構成し、前記演算結果選択手段を、例えば、前記演算手段による4つの乗算結果または4つの除算結果のうち、最大値を取るものと最小値を取るものとを前記データ格納手段に書き込むように構成する。
【0016】
上記のような各演算処理装置において、データ格納手段に格納される浮動小数点数は、真値に対して丸め処理を行って求められている。そのために区間設定手段は、例えば、浮動小数点数の仮数部の最も下位の桁の数に1を加減算することにより、真値を含む区間を設定するようにしてもよい。このようにして得られた真値を含んだ区間に対して、演算手段により区間演算を行えば、誤差を保証しながらの演算処理が可能となる。
【0017】
本発明の他の演算処理装置は、複数の誤差付きの数値が格納されるデータ格納手段と、前記データ格納手段から2以上の誤差付きの数値を取り込み、取り込んだ前記2以上の誤差付きの数値のそれぞれについて、その誤差を含む範囲で上限値及び下限値を設定する区間設定手段と、前記区間設定手段により設定された前記2以上の誤差付きの数値のそれぞれの前記上限値と前記下限値とにより所定の演算処理を実行する演算手段とを備え、前記データ格納手段、前記区間設定手段、及び前記演算手段が、ハードウェアにより構成されていることを特徴とする。
【0018】
本発明は、以下のような半導体デバイスも提供する。
この半導体デバイスは、所定の演算処理を指示するための命令が格納される命令メモリと、複数の浮動小数点数が格納されるデータメモリと、前記命令メモリから前記命令を取り込んで、この命令に基づいて前記データメモリから2以上の浮動小数点数を取り込み、取り込んだ前記2以上の浮動小数点数のそれぞれについて、その真値を含む範囲で上限値及び下限値を設定する区間設定部と、前記命令メモリから前記命令を取り込み、前記区間設定部により前記命令に基づいて設定された2以上の前記上限値と2以上の前記下限値とを取り込んで、取り込んだ前記2以上の上限値及び前記2以上の下限値により取り込んだ前記所定の命令が指示する前記所定の演算処理を実行する演算部と、前記演算部による演算の結果得られた複数の演算結果から、最大値を取るものと最小値を取るものとを選択して前記データメモリに書き込む演算結果選択部と、を備えている。
【0019】
【発明の実施の形態】
以下に、本発明の実施形態を、図を参照しつつ説明する。
【0020】
図1は、本発明の演算処理装置が搭載される情報処理システムのハードウエア構成を示す図である。この情報処理システムは、CPU(Central Processing Unit)1、RAM(Random Access Memory)2、ROM(Read Only Memory)3および入出力インタフェース4が、バスBを介して接続されている。入出力インタフェース4には、キーボードやマウスなどの入力装置、及びディスプレイ装置などの出力装置が接続されており、入力装置による情報処理システム外部からのデータの入力や、出力装置への処理結果の出力の制御を行っている。
【0021】
CPU1は、RAM2、ROM3に記録されているプログラムやデータを用いて所定の情報処理を行うものである。本実施形態のCPU1は、情報処理の際に浮動小数点を用いた演算処理を行うために、FPUのような、浮動小数点による演算が可能な演算処理装置10を含んで構成される。これにより、例えば、この情報処理システムが3次元画像処理を行うような装置である場合には、CPU1により浮動小数点演算が可能になるために、精細な画像を表示したり、画像内の物体が複雑な動作をする様子を表示することできる。
なお、この実施形態では、演算処理装置10をCPU1に含むものとして説明するが、これに限らず、CPU1とは独立して設けるようにしてもよい。
【0022】
演算処理装置10の具体的な構成例を図2に示す。
本実施形態の演算処理装置10は、図2のように、命令メモリ11、データメモリ12、区間設定部13、ALU(Arithmetic and Logical Unit)14、演算結果選択部15、及び演算処理装置10に含まれる各構成要素の動作を制御する制御部16を備えている。これらの各構成要素は、浮動小数点数の精度保証を行うための専用のハードウエアとして設けられており、例えば、1つの半導体デバイス上に構築される。
【0023】
命令メモリ11は、演算処理装置10の外部から演算処理を実行するための命令を受け取り、これを格納するものである。
命令には、例えば、2つの浮動小数点数を、加算させる加算命令、減算させる減算命令、乗算させる乗算命令、除算させる除算命令などが挙げられる。また、命令には、以上のような演算命令の他に、演算対象となる浮動小数点数を特定するための情報も含まれている。
データメモリ12は、演算処理装置10の外部から演算処理に用いられる浮動小数点数を受け取り、これを格納するものである。データメモリ12には、演算処理装置10による演算結果も格納される。演算処理に用いられる浮動小数点数は、例えば、真値を所定の桁で四捨五入などの丸め処理を行うことにより得られた数である。
命令メモリ11及びデータメモリ12は、物理的に同じメモリ内に存在してもかまわない。また、RAM2を、命令メモリ11、データメモリ12として用いるようにしてもよい。
【0024】
区間設定部13は、データメモリ12から演算処理に用いる浮動小数点数を取り込んで、この浮動小数点数の真値を含む範囲(区間)の上限値及び下限値を設定する。例えば、浮動小数点数の仮数部の最も下位の桁の数に、1加算及び1減算して浮動小数点数の上限値及び下限値を算出する。
つまり、浮動小数点数は、前述の通り、真値に対して所定の桁を丸め処理を施すことにより、演算処理装置10で処理可能なように置き換えられているために、正確に真値を示すものとは限らない。そのために、浮動小数点数の仮数部の最も下位の桁の数に1加減算することにより、浮動小数点数を、真値を含む所定の範囲を示すものとする。これにより、真値を含む区間を設定することができるようになる。
【0025】
例えば、区間設定部13がデータメモリ12から取り込んだ浮動小数点数を「0.123×10−2」とする。丸め処理が四捨五入で行われている場合、この浮動小数点数は、「0.1225×10−2」〜「0.1234×10−2」の間に真値を含むことになる。そのために、区間設定部13は、「0.123」に「0.001」を加減算して下限値「0.122×10−2」、上限値「0.124×10−2」を算出して、常に真値を含む範囲で演算が可能なようにする。
算出した上限値及び下限値は、区間設定部13からALU14へ送られる。
【0026】
ALU14は、制御部16からの指示に従って、区間設定部13から送られる上限値及び下限値についての演算処理を実行するものである。ALU14が実行する演算処理は、例えば、四則演算等の数値計算処理である。演算結果は、演算結果選択部15へ送られる。
演算結果選択部15は、ALU14から送られる複数の演算結果を比較して、所定の条件をみたす演算結果を選択し、選択した演算結果をデータメモリ12に書き込むものである。例えば演算結果選択部15は、複数の演算結果から最大値及び最小値を選択してデータメモリ12に書き込むように構成される。
【0027】
制御部16は、命令メモリ11に演算処理装置10外部からの命令の受け取りを指示するとともに、命令メモリ11から命令を読み出して、これを区間設定部13、ALU14、演算結果選択部15に送る。また、制御部16は、データメモリ12に演算処理装置10外部からの浮動小数点数の受け取りを指示するとともに、データメモリ12に格納されている演算結果や浮動小数点数を演算処理装置10外部へ出力させる。
【0028】
以上のような演算処理装置10の動作、特に浮動小数点数の演算処理の手順を、図3〜図7を参照して説明する。
図3は、このような演算処理の処理手順を示す図である。演算処理の前提として、演算処理装置10の命令メモリ11には、演算処理を実行するための命令が格納されており、データメモリ12には、演算処理の対象となる丸め処理された浮動小数点数が少なくとも2つ格納されているものとする。演算処理の対象となる2つの浮動小数点数を「x」、「y」、(x<y)とする。
【0029】
制御部16は、命令メモリ11から、これから実行することになる演算処理についての命令を読み出し、これを区間設定部13へ送る(ステップS10)。制御部16から命令を受けた区間設定部13は、この命令に基づいてデータメモリ12から演算処理の対象となる2つの浮動小数点数x、yを取り込む(ステップS20)。
【0030】
次いで、区間設定部13は、データメモリ12から取り込んだ浮動小数点数x、yの下限値x1、y1及び上限値x2、y2を設定する(ステップS30)。例えば、浮動小数点数x、yのそれぞれの仮数部の最も下位の桁の数に対して1加減算を行う。これにより区間設定部13は、x1、x2、y1、y2を算出する。
区間設定部13は、算出したx1、x2、y1、y2をALU14へ送る(ステップS40)。
【0031】
制御部16は、命令をALU14へ送って演算処理の指示を出す。ALU14は命令に基づいて、区間設定部13から送られるx1、x2、y1、y2に対する演算処理を実行する(ステップS50)。演算結果は、ALU14から演算結果選択部15に転送される(ステップS60)。ALU14によって実行される演算処理は、図4〜図7に示すようなものである。
命令が加算演算を指示するものである場合、ALU14は、x1+y1及びx2+y2を実行する(図4)。
命令が減算演算を指示するものである場合、ALU14は、x1−y2及びx2−y1を実行する(図5)。
命令が乗算演算を指示するものである場合、ALU14は、x1×y1、x1×y2、x2×y1及びx2×y2を実行する(図6)。
命令が除算演算を指示するものである場合、ALU14は、x1/y1、x1/y2、x2/y1及びx2/y2を実行する(図7)。
【0032】
次いで、演算結果選択部15は、制御部16からの指示により、ALU14から送られた演算結果を比較し、所定の条件をみたすものを選択して、データメモリ12に書き込む(ステップS70、S80)。具体的には、制御部16から送られる命令がどのような処理を要求しているかによって、以下のような処理を行う。
命令が加算演算を指示するものである場合、演算結果選択部15は、x1+y1、x2+y2を、それぞれ演算結果z1、z2として、データメモリ12に書き込む。z1(=x1+y1)、z2(=x2+y2)は、それぞれ、演算結果の下限値、上限値を表す(図4)。
命令が減算演算を指示するものである場合、演算結果選択部15は、z1=x1−y2、z2=x2−y1をデータメモリ12に書き込む(図5)。
命令が乗算演算を指示するものである場合、演算結果選択部15は、x1×y1、x1×y2、x2×y1、x2×y2を比較して最小値と最大値を選択する。最小値をz1、最大値をz2としてデータメモリ12に書き込む(図6)。
命令が除算演算を指示するものである場合、演算結果選択部15は、x1/y1、x1/y2、x2/y1、x2/y2を比較して最小値と最大値を選択する。最小値をz1、最大値をz2としてデータメモリ12に書き込む(図7)。
【0033】
このようにして、浮動小数点数x、yを用いて演算結果z1、z2が得られる。浮動小数点数x、yの真値を用いた演算結果は、演算結果z1を下限値とし、z2を上限値とする範囲内に存在することになる。得られた演算結果z1、z2は、データメモリ12から演算処理装置10の外部に出力されたり、あるいは再び演算処理に用いられることになる。
【0034】
以上のようにして、機械区間演算をハードウエアにより処理できるようになる。このような演算処理装置10は、区間設定部13とALU14とを並列に動作させることが可能である。つまり、区間設定部13とALU14とが連続して動作しているときには、区間設定部13で浮動小数点数の上限値及び下限値を算出しているのと同時に、先に算出された上限値及び下限値を用いてALU14が演算処理を可能となる。そのために、全体の処理を高速化することができる。
【0035】
区間設定部13を備えることで、入力された浮動小数点数の上限値、下限値を計算により求めることができるために、上限値、下限値を逐次データメモリ12から読み込む必要がない。さらに、ALU14では制御部16からの命令と区間設定部13からの上限値、下限値とに基づき、計算を実行することができる。これによって、従来の「下限値設定→演算→上限値設定→演算」というルーチンを、「下限値、上限値設定→演算」というルーチンで済ませることができ、高速化が図れる。
乗除演算では最小値、最大値を選択するための処理も必要であるが、これも演算結果選択部15が入力された命令とALU14からの演算結果に基づいて比較演算を行い、最小値、最大値を選択して出力することができるために、従来に比べて精度保証つき演算を大幅に高速化できる。
また、精度保証をハードウエアにより行うために、ソフトウエアの設計者は、浮動小数点を用いたソフトウエアの開発の際に、精度保証を考慮する必要がなくなる。そのためにソフトウエアの開発時に、浮動小数点の精度保証に関する専門的な知識と膨大な手間と時間をかけずにすむようになり、開発の能率が向上する。
【0036】
上記の実施形態では区間設定部13が浮動小数点数の仮数部の最も下位の桁の数に、1加算及び1減算して浮動小数点数の上限値及び下限値を算出するように構成されているが、これに限らず、入力装置により外部から上限値及び下限値を入力して設定するようにしてもよい。また、入力装置により浮動小数点数の仮数部の最も下位の桁の数に加減算される数を入力するようにしてもよい。
【0037】
また、演算処理装置10は、「100±10」のような誤差付きの数値の演算にも用いることができる。この場合、データメモリ12には、演算処理装置10の外部から演算処理に用いられる誤差付きの数値が格納される。このような誤差付きの数値は、例えば測定値等のばらつきがある数値から得られた数値である。
【0038】
区間設定部13は、データメモリ12から演算処理に用いる誤差付きの数値を取り込んで、誤差を含む範囲で上限値及び下限値を設定する。例えば、区間設定部13は、誤差付きの数値が「100±10」の場合には、入力された「100」と誤差値「10」とから「100+10」及び「100−10」の演算を行い、上限値「110」、下限値「90」を設定する。ALU14は、この上限値及び下限値を用いて演算を行うことになる。
このように、同じ構成の演算処理装置10により、誤差付きの数値の演算も可能である。
【0039】
【発明の効果】
以上の説明から明らかなように、本発明によれば、精度保証を専門に行うハードウエアによって、精度保証の処理を高速に実行することができる演算処理装置が得られる。
【図面の簡単な説明】
【図1】本発明が適用される情報処理システムの全体の構成を示す図。
【図2】本実施形態の演算処理装置の具体的な構成例を示す図。
【図3】本実施形態の演算処理装置による処理手順説明図。
【図4】加算演算時のデータの流れを説明する図。
【図5】減算演算時のデータの流れを説明する図。
【図6】乗算演算時のデータの流れを説明する図。
【図7】除算演算時のデータの流れを説明する図。
【符号の説明】
1 CPU
2 RAM
3 ROM
4 入出力インタフェース
10 演算処理装置
11 命令メモリ
12 データメモリ
13 区間設定部
14 ALU
15 演算結果選択部
16 制御部
Claims (14)
- 複数の浮動小数点数が格納されるデータ格納手段と、
前記データ格納手段から2以上の浮動小数点数を取り込み、取り込んだ前記2以上の浮動小数点数のそれぞれについて、その真値を含む範囲で上限値及び下限値を設定する区間設定手段と、
前記区間設定手段により設定された前記2以上の浮動小数点数のそれぞれの前記上限値と前記下限値とにより所定の演算処理を実行する演算手段とを備え、
前記データ格納手段、前記区間設定手段、及び前記演算手段が、ハードウェアにより構成されていることを特徴とする、
演算処理装置。 - 前記演算手段により得られる複数の演算結果を比較して、所定の条件を満たす演算結果を選択し、選択した演算結果を前記データ格納手段に書き込む演算結果選択手段をさらに備えてなる、
請求項1記載の演算処理装置。 - 前記演算結果選択手段は、前記複数の演算結果のうち最大値を取るものと最小値を取るものとを選択するように構成されている、
請求項2記載の演算処理装置。 - 2つの前記浮動小数点数を加算するときに、
前記演算手段は、
前記2つの浮動小数点数から得られる、2つの前記上限値同士を加算するとともに、2つの前記下限値同士を加算するように構成されている、
請求項1記載の演算処理装置。 - 2つの前記浮動小数点数の一方から他方を減算するときに、
前記演算手段は、
前記一方の浮動小数点数から得られた下限値を前記他方の浮動小数点数から得られた上限値により減算するとともに、前記一方の浮動小数点数から得られた上限値を前記他方の浮動小数点数から得られた下限値により減算するように構成されている、
請求項1記載の演算処理装置。 - 2つの前記浮動小数点数を乗算または除算するときに、
前記演算手段は、
前記2つの浮動小数点数から得られる、2つの前記上限値同士を乗算または除算し、2つの前記下限値同士を乗算または除算し、一方の浮動小数点数から得られた上限値と他方の浮動小数点から得られた下限値とを乗算または除算し、前記一方の浮動小数点から得られた下限値と前記他方の浮動小数点数から得られた上限値とを乗算または除算するように構成されており、
前記演算結果選択手段は、
前記演算手段による4つの乗算結果または4つの除算結果のうち、最大値を取るものと最小値を取るものとを選択するように構成されている、
請求項2記載の演算処理装置。 - 所定の演算処理を指示するための命令が格納される命令格納手段と、
複数の浮動小数点数が格納されるデータ格納手段と、
前記命令格納手段から前記命令を取り込んで、この命令に基づいて前記データ格納手段から2以上の浮動小数点数を取り込み、取り込んだ前記2以上の浮動小数点数のそれぞれについて、その真値を含む範囲で上限値及び下限値を設定する区間設定手段と、
前記命令格納手段から前記命令を取り込み、前記区間設定手段により前記命令に基づいて設定された2以上の前記上限値と2以上の前記下限値とを取り込んで、取り込んだ前記2以上の上限値及び前記2以上の下限値により取り込んだ前記所定の命令が指示する前記所定の演算処理を実行する演算手段と、
前記演算手段による演算の結果得られた複数の演算結果から、所定の条件を満たす演算結果を選択して前記データ格納手段に書き込む演算結果選択手段とを備え、
前記命令格納手段、前記データ格納手段、前記区間設定手段、及び前記演算手段が、ハードウェアにより構成されていることを特徴とする、
演算処理装置。 - 前記区間設定手段が取り込んだ前記浮動小数点数の個数が2であり、前記所定の命令が加算を指示するものである場合に、
前記演算手段は、
2つの当該浮動小数点数の上限値同士及び下限値同士を加算するように構成されており、
前記演算結果選択手段は、
前記演算手段による2つの演算結果を前記データ格納手段に書き込むように構成されている、
請求項7記載の演算処理装置。 - 前記区間設定手段が取り込んだ前記浮動小数点数の個数が2であり、前記所定の命令が2つの前記浮動小数点数の一方から他方の減算を指示するものである場合に、
前記演算手段は、
2つの当該浮動小数点数の、前記一方から得られた下限値を前記他方から得られた上限値により減算するとともに、前記一方から得られた上限値を前記他方から得られた下限値により減算するように構成されており、
前記演算結果選択手段は、
前記演算手段による2つの演算結果を前記データ格納手段に書き込むように構成されている、
請求項7記載の演算処理装置。 - 前記区間設定手段が取り込んだ前記浮動小数点数の個数が2であり、前記所定の命令が乗算または除算を指示するものである場合に、
前記演算手段は、
2つの当該浮動小数点数の、上限値同士及び下限値同士について乗算または除算し、一方から得られた上限値と他方から得られた下限値とについて乗算または除算し、前記一方から得られた下限値と前記他方から得られた上限値とについて乗算または除算を実行するように構成されており、
前記演算結果選択手段は、
前記演算手段による4つの乗算結果または4つの除算結果のうち、最大値を取るものと最小値を取るものとを前記データ格納手段に書き込むように構成されている、
請求項7記載の演算処理装置。 - 前記区間設定手段は、前記2以上の浮動小数点数のそれぞれについて、仮数部の最も下位の桁の数に1加算して上限値を算出するとともに、前記仮数部の最も下位の桁の数から1減算して下限値を算出するように構成されている、
請求項1または7記載の演算処理装置。 - 前記区間設定手段は、浮動小数点数についての上限値及び下限値が外部から設定することができるようになっている、
請求項1または7記載の演算処理装置。 - 複数の誤差付きの数値が格納されるデータ格納手段と、
前記データ格納手段から2以上の誤差付きの数値を取り込み、取り込んだ前記2以上の誤差付きの数値のそれぞれについて、その誤差を含む範囲で上限値及び下限値を設定する区間設定手段と、
前記区間設定手段により設定された前記2以上の誤差付きの数値のそれぞれの前記上限値と前記下限値とにより所定の演算処理を実行する演算手段とを備え、前記データ格納手段、前記区間設定手段、及び前記演算手段が、ハードウェアにより構成されていることを特徴とする、
演算処理装置。 - 所定の演算処理を指示するための命令が格納される命令メモリと、
複数の浮動小数点数が格納されるデータメモリと、
前記命令メモリから前記命令を取り込んで、この命令に基づいて前記データメモリから2以上の浮動小数点数を取り込み、取り込んだ前記2以上の浮動小数点数のそれぞれについて、その真値を含む範囲で上限値及び下限値を設定する区間設定部と、
前記命令メモリから前記命令を取り込み、前記区間設定部により前記命令に基づいて設定された2以上の前記上限値と2以上の前記下限値とを取り込んで、取り込んだ前記2以上の上限値及び前記2以上の下限値により取り込んだ前記所定の命令が指示する前記所定の演算処理を実行する演算部と、
前記演算部による演算の結果得られた複数の演算結果から、最大値を取るものと最小値を取るものとを選択して前記データメモリに書き込む演算結果選択部と、を備える、
半導体デバイス。
Priority Applications (3)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2003008501A JP2004005395A (ja) | 2002-04-16 | 2003-01-16 | 演算処理装置、半導体デバイス |
| EP03250531A EP1355230A3 (en) | 2002-04-16 | 2003-01-29 | Arithmetic processing unit and semiconductor device |
| US10/365,884 US20030195912A1 (en) | 2002-04-16 | 2003-02-13 | Arithmetic processing unit and semiconductor device |
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2002113952 | 2002-04-16 | ||
| JP2003008501A JP2004005395A (ja) | 2002-04-16 | 2003-01-16 | 演算処理装置、半導体デバイス |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| JP2004005395A true JP2004005395A (ja) | 2004-01-08 |
Family
ID=28677647
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP2003008501A Pending JP2004005395A (ja) | 2002-04-16 | 2003-01-16 | 演算処理装置、半導体デバイス |
Country Status (3)
| Country | Link |
|---|---|
| US (1) | US20030195912A1 (ja) |
| EP (1) | EP1355230A3 (ja) |
| JP (1) | JP2004005395A (ja) |
Cited By (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2009017287A (ja) * | 2007-07-05 | 2009-01-22 | Saga Univ | データ処理装置、データ処理方法、及びデータ処理プログラム |
| US7531588B2 (en) | 2004-07-30 | 2009-05-12 | Momentive Performance Materials Inc. | Silane compositions, processes for their preparation and rubber compositions containing same |
| JP2014515509A (ja) * | 2011-05-23 | 2014-06-30 | ピルツ ゲーエムベーハー アンド コー.カーゲー | 安全制御装置の動作方法および安全制御装置 |
| WO2021106253A1 (ja) | 2019-11-27 | 2021-06-03 | 株式会社コアコンセプト・テクノロジー | 情報処理装置、プログラム、及び情報処理方法 |
| US11334317B2 (en) | 2019-11-27 | 2022-05-17 | Core Concept Technologies Inc. | Information processing apparatus, program, and information processing method configured to handle a high-precision computer number |
Families Citing this family (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| EP2441003B1 (de) * | 2010-08-03 | 2015-07-29 | Siemens Aktiengesellschaft | Gleitkommaarithmetik mit fehlererkennung |
| JP2016057831A (ja) | 2014-09-09 | 2016-04-21 | 株式会社東芝 | 浮動小数点演算装置、及び情報処理システム |
Family Cites Families (9)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPS61256436A (ja) * | 1985-05-10 | 1986-11-14 | Hitachi Ltd | 演算装置 |
| US5600584A (en) * | 1992-09-15 | 1997-02-04 | Schlafly; Roger | Interactive formula compiler and range estimator |
| US5440504A (en) * | 1993-02-19 | 1995-08-08 | Matsushita Electric Industrial Co., Ltd. | Arithmetic apparatus for digital signal processor |
| US6629120B1 (en) * | 2000-11-09 | 2003-09-30 | Sun Microsystems, Inc. | Method and apparatus for performing a mask-driven interval multiplication operation |
| US6751638B2 (en) * | 2001-05-11 | 2004-06-15 | Sun Microsystems, Inc. | Min and max operations for multiplication and/or division under the simple interval system |
| US7016928B2 (en) * | 2001-05-25 | 2006-03-21 | Sun Microsystems, Inc. | Floating point status information testing circuit |
| US6823352B2 (en) * | 2001-09-13 | 2004-11-23 | Sun Microsystems, Inc. | Solving a nonlinear equation through interval arithmetic and term consistency |
| US6859817B2 (en) * | 2001-11-16 | 2005-02-22 | Sun Microsystems, Inc. | Solving systems of nonlinear equations using interval arithmetic and term consistency |
| US6976048B2 (en) * | 2002-03-11 | 2005-12-13 | Sun Microsystems, Inc. | Method and apparatus solving problems having interval parameters |
-
2003
- 2003-01-16 JP JP2003008501A patent/JP2004005395A/ja active Pending
- 2003-01-29 EP EP03250531A patent/EP1355230A3/en not_active Withdrawn
- 2003-02-13 US US10/365,884 patent/US20030195912A1/en not_active Abandoned
Cited By (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US7531588B2 (en) | 2004-07-30 | 2009-05-12 | Momentive Performance Materials Inc. | Silane compositions, processes for their preparation and rubber compositions containing same |
| JP2009017287A (ja) * | 2007-07-05 | 2009-01-22 | Saga Univ | データ処理装置、データ処理方法、及びデータ処理プログラム |
| JP2014515509A (ja) * | 2011-05-23 | 2014-06-30 | ピルツ ゲーエムベーハー アンド コー.カーゲー | 安全制御装置の動作方法および安全制御装置 |
| WO2021106253A1 (ja) | 2019-11-27 | 2021-06-03 | 株式会社コアコンセプト・テクノロジー | 情報処理装置、プログラム、及び情報処理方法 |
| US11334317B2 (en) | 2019-11-27 | 2022-05-17 | Core Concept Technologies Inc. | Information processing apparatus, program, and information processing method configured to handle a high-precision computer number |
Also Published As
| Publication number | Publication date |
|---|---|
| EP1355230A3 (en) | 2006-09-13 |
| US20030195912A1 (en) | 2003-10-16 |
| EP1355230A2 (en) | 2003-10-22 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| TWI470545B (zh) | 用以執行範圍檢測之設備,處理器,系統,方法,指令,及邏輯 | |
| CN107305484B (zh) | 一种非线性函数运算装置及方法 | |
| JP2011501310A (ja) | 算術演算のためにマグニチュード検出を実行するための装置および方法 | |
| US20170102942A1 (en) | Variable Length Execution Pipeline | |
| Salcic et al. | A floating-point FPGA-based self-tuning regulator | |
| JP2004005395A (ja) | 演算処理装置、半導体デバイス | |
| KR100847934B1 (ko) | 스케일링된 정수를 사용하는 부동 소수점 연산 | |
| JP4757328B2 (ja) | 逆正接演算装置及び逆正接演算プログラム | |
| JP2020067897A (ja) | 演算処理装置、学習プログラム及び学習方法 | |
| CN116243883A (zh) | 一种测试激励生成方法、测试方法及相关设备 | |
| van Dam | Enabling high performance posit arithmetic applications using hardware acceleration | |
| WO2007094047A2 (ja) | 演算装置および演算方法 | |
| CN118312130A (zh) | 数据处理方法及装置、处理器、电子设备、存储介质 | |
| JP6519530B2 (ja) | 検証装置、検証プログラム、及び、検証方法 | |
| KR101986669B1 (ko) | Vliw 프로세서와 명령 구조와 명령 실행 방법 | |
| JP6548848B2 (ja) | 情報処理装置、情報処理方法及び情報処理プログラム | |
| JP2006323710A (ja) | データプロセッサ、データ処理方法及び演算制御プログラム | |
| CN110009021B (zh) | 一种目标识别方法及设备 | |
| US20090094306A1 (en) | Cordic rotation angle calculation | |
| Zadiraka et al. | Parallel Methods of Representing Multidigit Numbers in Numeral Systems for Testing Multidigit Arithmetic Operations | |
| JP3659408B2 (ja) | データ演算処理装置及びデータ演算処理プログラム | |
| CN109992892B (zh) | 一种参考模型校验方法、装置、电子设备及可读存储介质 | |
| Kleinekathöfer et al. | Automatic Polynomial Formal Verification of a Floating-Point Multiplier | |
| Ardaya-Lieb | Floating-Point Units: Capabilities of Current Architectures and Approaches for Future Developments | |
| JPH0628153A (ja) | 低誤差計算処理装置 |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20040528 |
|
| A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20040601 |
|
| A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20041012 |