(57)【要約】【課題】精度保証のための処理の負荷を低減して、演算速度を向上させるための演算処理装置を提供する。【解決手段】複数の浮動小数点数が格納されるデータメモリ１２と、データメモリ１２から２以上の浮動小数点数を取り込み、取り込んだ２以上の浮動小数点数のそれぞれについて、その真値を含む範囲で上限値及び下限値を設定する区間設定部１３と、区間設定部により設定された２以上の浮動小数点数のそれぞれの上限値と下限値とにより所定の演算処理を実行するＡＬＵ１４と、を備えている。真値を含む範囲設定を専門に行う区間設定部１３と、区間演算を専門に行うＡＬＵ１４とにより、ソフトウエアで機械区間演算を行っていた従来よりも精度保証のための処理負荷を低減でき、演算速度が向上する。【選択図】　　　図２
2004005395.tif 000002
【特許請求の範囲】
【請求項１】
複数の浮動小数点数が格納されるデータ格納手段と、
前記データ格納手段から２以上の浮動小数点数を取り込み、取り込んだ前記２以上の浮動小数点数のそれぞれについて、その真値を含む範囲で上限値及び下限値を設定する区間設定手段と、
前記区間設定手段により設定された前記２以上の浮動小数点数のそれぞれの前記上限値と前記下限値とにより所定の演算処理を実行する演算手段とを備え、
前記データ格納手段、前記区間設定手段、及び前記演算手段が、ハードウェアにより構成されていることを特徴とする、
演算処理装置。
【請求項２】
前記演算手段により得られる複数の演算結果を比較して、所定の条件を満たす演算結果を選択し、選択した演算結果を前記データ格納手段に書き込む演算結果選択手段をさらに備えてなる、
請求項１記載の演算処理装置。
【請求項３】
前記演算結果選択手段は、前記複数の演算結果のうち最大値を取るものと最小値を取るものとを選択するように構成されている、
請求項２記載の演算処理装置。
【請求項４】
２つの前記浮動小数点数を加算するときに、
前記演算手段は、
前記２つの浮動小数点数から得られる、２つの前記上限値同士を加算するとともに、２つの前記下限値同士を加算するように構成されている、
請求項１記載の演算処理装置。
【請求項５】
２つの前記浮動小数点数の一方から他方を減算するときに、
前記演算手段は、
前記一方の浮動小数点数から得られた下限値を前記他方の浮動小数点数から得られた上限値により減算するとともに、前記一方の浮動小数点数から得られた上限値を前記他方の浮動小数点数から得られた下限値により減算するように構成されている、
請求項１記載の演算処理装置。
【請求項６】
２つの前記浮動小数点数を乗算または除算するときに、
前記演算手段は、
前記２つの浮動小数点数から得られる、２つの前記上限値同士を乗算または除算し、２つの前記下限値同士を乗算または除算し、一方の浮動小数点数から得られた上限値と他方の浮動小数点から得られた下限値とを乗算または除算し、前記一方の浮動小数点から得られた下限値と前記他方の浮動小数点数から得られた上限値とを乗算または除算するように構成されており、
前記演算結果選択手段は、
前記演算手段による４つの乗算結果または４つの除算結果のうち、最大値を取るものと最小値を取るものとを選択するように構成されている、
請求項２記載の演算処理装置。
【請求項７】
所定の演算処理を指示するための命令が格納される命令格納手段と、
複数の浮動小数点数が格納されるデータ格納手段と、
前記命令格納手段から前記命令を取り込んで、この命令に基づいて前記データ格納手段から２以上の浮動小数点数を取り込み、取り込んだ前記２以上の浮動小数点数のそれぞれについて、その真値を含む範囲で上限値及び下限値を設定する区間設定手段と、
前記命令格納手段から前記命令を取り込み、前記区間設定手段により前記命令に基づいて設定された２以上の前記上限値と２以上の前記下限値とを取り込んで、取り込んだ前記２以上の上限値及び前記２以上の下限値により取り込んだ前記所定の命令が指示する前記所定の演算処理を実行する演算手段と、
前記演算手段による演算の結果得られた複数の演算結果から、所定の条件を満たす演算結果を選択して前記データ格納手段に書き込む演算結果選択手段とを備え、
前記命令格納手段、前記データ格納手段、前記区間設定手段、及び前記演算手段が、ハードウェアにより構成されていることを特徴とする、
演算処理装置。
【請求項８】
前記区間設定手段が取り込んだ前記浮動小数点数の個数が２であり、前記所定の命令が加算を指示するものである場合に、
前記演算手段は、
２つの当該浮動小数点数の上限値同士及び下限値同士を加算するように構成されており、
前記演算結果選択手段は、
前記演算手段による２つの演算結果を前記データ格納手段に書き込むように構成されている、
請求項７記載の演算処理装置。
【請求項９】
前記区間設定手段が取り込んだ前記浮動小数点数の個数が２であり、前記所定の命令が２つの前記浮動小数点数の一方から他方の減算を指示するものである場合に、
前記演算手段は、
２つの当該浮動小数点数の、前記一方から得られた下限値を前記他方から得られた上限値により減算するとともに、前記一方から得られた上限値を前記他方から得られた下限値により減算するように構成されており、
前記演算結果選択手段は、
前記演算手段による２つの演算結果を前記データ格納手段に書き込むように構成されている、
請求項７記載の演算処理装置。
【請求項１０】
前記区間設定手段が取り込んだ前記浮動小数点数の個数が２であり、前記所定の命令が乗算または除算を指示するものである場合に、
前記演算手段は、
２つの当該浮動小数点数の、上限値同士及び下限値同士について乗算または除算し、一方から得られた上限値と他方から得られた下限値とについて乗算または除算し、前記一方から得られた下限値と前記他方から得られた上限値とについて乗算または除算を実行するように構成されており、
前記演算結果選択手段は、
前記演算手段による４つの乗算結果または４つの除算結果のうち、最大値を取るものと最小値を取るものとを前記データ格納手段に書き込むように構成されている、
請求項７記載の演算処理装置。
【請求項１１】
前記区間設定手段は、前記２以上の浮動小数点数のそれぞれについて、仮数部の最も下位の桁の数に１加算して上限値を算出するとともに、前記仮数部の最も下位の桁の数から１減算して下限値を算出するように構成されている、
請求項１または７記載の演算処理装置。
【請求項１２】
前記区間設定手段は、浮動小数点数についての上限値及び下限値が外部から設定することができるようになっている、
請求項１または７記載の演算処理装置。
【請求項１３】
複数の誤差付きの数値が格納されるデータ格納手段と、
前記データ格納手段から２以上の誤差付きの数値を取り込み、取り込んだ前記２以上の誤差付きの数値のそれぞれについて、その誤差を含む範囲で上限値及び下限値を設定する区間設定手段と、
前記区間設定手段により設定された前記２以上の誤差付きの数値のそれぞれの前記上限値と前記下限値とにより所定の演算処理を実行する演算手段とを備え、前記データ格納手段、前記区間設定手段、及び前記演算手段が、ハードウェアにより構成されていることを特徴とする、
演算処理装置。
【請求項１４】
所定の演算処理を指示するための命令が格納される命令メモリと、
複数の浮動小数点数が格納されるデータメモリと、
前記命令メモリから前記命令を取り込んで、この命令に基づいて前記データメモリから２以上の浮動小数点数を取り込み、取り込んだ前記２以上の浮動小数点数のそれぞれについて、その真値を含む範囲で上限値及び下限値を設定する区間設定部と、
前記命令メモリから前記命令を取り込み、前記区間設定部により前記命令に基づいて設定された２以上の前記上限値と２以上の前記下限値とを取り込んで、取り込んだ前記２以上の上限値及び前記２以上の下限値により取り込んだ前記所定の命令が指示する前記所定の演算処理を実行する演算部と、
前記演算部による演算の結果得られた複数の演算結果から、最大値を取るものと最小値を取るものとを選択して前記データメモリに書き込む演算結果選択部と、を備える、
半導体デバイス。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、浮動小数点演算において発生する誤差を保証するための精度保証処理を、高速に行うための技術に関する。
【０００２】
【従来の技術】
コンピュータなどの情報処理装置で実行される演算は、情報処理装置の処理性能の向上、処理内容の高度化に伴って複雑になっている。複雑な演算処理を実行する場合でも、より正確な演算結果を得るために浮動小数点数を用いた演算を行うことが多い。浮動小数点演算を用いることにより、有効桁数を増やすことができ、正確な演算が可能となるためである。浮動小数点演算の標準的な規格として、ＩＥＥＥ（Ｉｎｓｔｉｔｕｔｅ　ｏｆ　Ｅｌｅｃｔｒｉｃａｌ　ａｎｄ　Ｅｌｅｃｔｒｏｎｉｃ　Ｅｎｇｉｎｅｅｒｓ）７５４がある。
【０００３】
しかし、浮動小数点を用いて実数に基づく連続数学の問題を取り扱う際には、連続数である実数を不連続である浮動小数点数に置き換えて演算を行うため、演算結果に誤差が含まれることになる。
つまり、浮動小数点数を用いた処理を行うＦＰＵ（Ｆｌｏａｔｉｎｇ　Ｐｏｉｎｔ　Ｕｎｉｔ）のような演算処理装置には、処理できる桁数に制限があるために、浮動小数点数の最も下位の桁の数を、切り捨て、切り上げ、四捨五入などの「丸め処理」により決める必要がある。この丸め処理により、浮動小数点数は、実数とは異なる値になり、その差が誤差となる。このような誤差を含んだ浮動小数点数を用いて演算を行うと、当然ながら演算結果には誤差が含まれることになる。
【０００４】
従来の演算処理装置のようなハードウエアにおいて、このような誤差を考慮した演算（精度保証付きの演算）を行っているものは稀である。そのために、連続数学の問題に対して数学的に真に正しいと保証された演算結果を導くには、ソフトウエアにより精度保証を行い、真の解がどのような範囲にあるかを確かめながら計算を行う必要がある。あるいは、演算結果を単なる近似値として取り扱い、真の解を、演算結果の近傍にあるなどという経験則に基づいて取り扱うこともある。
【０００５】
誤差を正しく保証し、演算結果に対して真に数学的な意味を導くために、精度保証付き数値計算という手法が研究されている。しかしながら、前述の通りハードウエアではこのような精度保証つき数値計算を考慮していないので、ソフトウエアにより精度保証のすべてを行わなければならない。そのために、ソフトウエアの開発に専門的な知識と膨大な手間、時間が必要になる。
【０００６】
ソフトウエアによる精度保証は、演算対象となる実数（以下、「真値」という）を、演算処理装置で扱うことができる浮動小数点数を両端とする区間の中にはさみこみ、それによって連続数の問題を扱おうとするものである。この区間を数と同様に扱うための四則演算は区間演算と呼ばれ、この区間演算を浮動小数点により行うものは機械区間演算と呼ばれている。
【０００７】
例えば、真値「０．００１２３４」を、小数点以下３位までの浮動小数点数の演算が可能な演算処理装置で演算処理する場合、真値「０．００１２３４」を含む区間「０．１２３×１０−２」〜「０．１２４×１０−２」を浮動小数点数により設定して、これに基づいて演算処理を行う。これが区間演算である。特に、区間を浮動小数点で設定しているために、機械区間演算となる。区間は、真値を含むような範囲に定められる。具体的には、真値「０．００１２３４」を浮動小数点数「０．１２３４×１０−２」で表し、これを含むように区間が決められる。なお、本明細書では、区間を表す浮動小数点数のうち区間の上限を表すものを上限値、区間の下限を表すものを下限値という。
【０００８】
機械区間演算において、例えば加減算の際には、加減算の対象となる２つの真値に対して丸め処理を行って下限値を設定して、下限値同士による加減算を行った後に、真値に対して再び丸め処理を行って上限値を設定して、上限値同士による加減算を行う。つまり、「下限値の設定→演算→上限値の設定→演算」というルーチンになる。また、乗除算においては、下限値同士の乗除算、上限値同士の乗除算の後に、一方の上限値と他方の下限値による乗除算、一方の下限値と他方の上限値による乗除算を行い、各演算結果を比較して最大値、最小値を選択する処理を行う。
【０００９】
従来はこれらの区間演算による四則演算を組み合わせて、精度保証付きの計算を行っている。
この方法は、解を有限回の四則演算の組み合わせで求める場合には、ある程度の成功を収めた。しかしながら、上述のように同じ演算処理を上限値と下限値とを入れ替えて行う必要がある。例えば、加算のときには、下限値同士の加算を行った後に、上限値同士の加算を行う。さらに乗除算においては演算結果の比較処理が入るために、演算速度の大幅な低下が見られる。
【００１０】
【発明が解決しようとする課題】
本発明は、上記のような問題点に鑑み、精度保証のための処理の負荷を低減して、演算速度を上げるための演算処理技術を提供することを課題とする。
【００１１】
【課題を解決するための手段】
以上のような課題を解決する本発明の演算処理装置は、複数の浮動小数点数が格納されるデータ格納手段と、前記データ格納手段から２以上の浮動小数点数を取り込み、取り込んだ前記２以上の浮動小数点数のそれぞれについて、その真値を含む範囲で上限値及び下限値を設定する区間設定手段と、前記区間設定手段により設定された前記２以上の浮動小数点数のそれぞれの前記上限値と前記下限値とにより所定の演算処理を実行する演算手段と、を備える。前記データ格納手段、前記区間設定手段、及び前記演算手段は、ハードウェアにより構成されている。
この演算処理装置は、区間を設定する専用のハードウエア（区間設定手段）と、区間演算専用のハードウエア（演算手段）とを備えることにより、ソフトウエア処理のみで誤差を保証する従来の精度保証よりも、高速に精度保証が可能となる。
なお、ここでいうハードウエアには、その動作の手順が予めプログラムされたハードウエアであるファームウエアも含まれる。
【００１２】
このような演算処理装置は、前記演算手段により得られる複数の演算結果を比較して、所定の条件を満たす演算結果を選択し、選択した演算結果を前記データ格納手段に書き込む演算結果選択手段をさらに備えるようにしてもよい。演算結果選択手段は、例えば、前記複数の演算結果のうち最大値を取るものと最小値を取るものとを選択するように構成される。演算結果選択手段により、例えば、浮動小数点数の真値による演算結果を含む範囲を設定できる。
【００１３】
上記の演算処理装置における前記演算手段は、演算態様に応じて以下のような構成にすることができる。
（１）２つの前記浮動小数点数を加算するときには、例えば、前記２つの浮動小数点数から得られる２つの前記上限値同士を加算するとともに２つの前記下限値同士を加算するように構成する。
（２）２つの前記浮動小数点数の一方から他方を減算するときには、例えば、前記一方の浮動小数点数から得られた下限値を前記他方の浮動小数点数から得られた上限値により減算するとともに、前記一方の浮動小数点数から得られた上限値を前記他方の浮動小数点数から得られた下限値により減算するように構成する。
（３）２つの前記浮動小数点数の乗算時または除算時には、例えば、前記２つの浮動小数点数から得られる２つの前記上限値同士を乗算または除算し、２つの前記下限値同士を乗算または除算し、一方の浮動小数点数から得られた上限値と他方の浮動小数点から得られた下限値とを乗算または除算し、前記一方の浮動小数点から得られた下限値と前記他方の浮動小数点数から得られた上限値とを乗算または除算するように構成する。この場合、前記演算結果選択手段は、例えば、前記演算手段による４つの乗算結果または４つの除算結果のうち、最大値を取るものと最小値を取るものとを選択するように構成する。
【００１４】
本発明の他の演算処理装置は、所定の演算処理を指示するための命令が格納される命令格納手段と、複数の浮動小数点数が格納されるデータ格納手段と、前記命令格納手段から前記命令を取り込んで、この命令に基づいて前記データ格納手段から２以上の浮動小数点数を取り込み、取り込んだ前記２以上の浮動小数点数のそれぞれについて、その真値を含む範囲で上限値及び下限値を設定する区間設定手段と、前記命令格納手段から前記命令を取り込み、前記区間設定手段により前記命令に基づいて設定された２以上の前記上限値と２以上の前記下限値とを取り込んで、取り込んだ前記２以上の上限値及び前記２以上の下限値により取り込んだ前記所定の命令が指示する前記所定の演算処理を実行する演算手段と、前記演算手段による演算の結果得られた複数の演算結果から、所定の条件を満たす演算結果を選択して前記データ格納手段に書き込む演算結果選択手段とを備える。上記の演算処理装置と同様、前記命令格納手段、前記データ格納手段、前記区間設定手段、及び前記演算手段は、ハードウェアにより構成されている。
命令には、例えば、演算の対象となる浮動小数点数を示す情報、演算の種類（加算、減算等）、演算の手順などの情報、等が含まれる。
【００１５】
このような演算処理装置において、前記区間設定手段が取り込んだ浮動小数点数の個数が２であり、前記命令が加算を指示するものである場合には、前記演算手段を、例えば、２つの当該浮動小数点数の上限値同士及び下限値同士を加算するように構成する。この場合、前記演算結果選択手段は、例えば、前記演算手段による２つの演算結果を前記データ格納手段に書き込むように構成する。
前記区間設定手段が取り込んだ前記浮動小数点数の個数が２であり、前記所定の命令が２つの前記浮動小数点数の一方から他方の減算を指示するものである場合には、前記演算手段を、例えば、２つの当該浮動小数点数の、前記一方から得られた下限値を前記他方から得られた上限値により減算するとともに、前記一方から得られた上限値を前記他方から得られた下限値により減算するように構成し、前記演算結果選択手段を、例えば、前記演算手段による２つの演算結果を前記データ格納手段に書き込むように構成する。
また、前記区間設定手段が取り込んだ前記浮動小数点数の個数が２であり、前記命令が乗算または除算を指示するものである場合には、前記演算手段を、例えば、２つの当該浮動小数点数の、上限値同士及び下限値同士について乗算または除算し、一方から得られた上限値と他方から得られた下限値とについて乗算または除算し、前記一方から得られた下限値と前記他方から得られた上限値とについて乗算または除算を実行するように構成し、前記演算結果選択手段を、例えば、前記演算手段による４つの乗算結果または４つの除算結果のうち、最大値を取るものと最小値を取るものとを前記データ格納手段に書き込むように構成する。
【００１６】
上記のような各演算処理装置において、データ格納手段に格納される浮動小数点数は、真値に対して丸め処理を行って求められている。そのために区間設定手段は、例えば、浮動小数点数の仮数部の最も下位の桁の数に１を加減算することにより、真値を含む区間を設定するようにしてもよい。このようにして得られた真値を含んだ区間に対して、演算手段により区間演算を行えば、誤差を保証しながらの演算処理が可能となる。
【００１７】
本発明の他の演算処理装置は、複数の誤差付きの数値が格納されるデータ格納手段と、前記データ格納手段から２以上の誤差付きの数値を取り込み、取り込んだ前記２以上の誤差付きの数値のそれぞれについて、その誤差を含む範囲で上限値及び下限値を設定する区間設定手段と、前記区間設定手段により設定された前記２以上の誤差付きの数値のそれぞれの前記上限値と前記下限値とにより所定の演算処理を実行する演算手段とを備え、前記データ格納手段、前記区間設定手段、及び前記演算手段が、ハードウェアにより構成されていることを特徴とする。
【００１８】
本発明は、以下のような半導体デバイスも提供する。
この半導体デバイスは、所定の演算処理を指示するための命令が格納される命令メモリと、複数の浮動小数点数が格納されるデータメモリと、前記命令メモリから前記命令を取り込んで、この命令に基づいて前記データメモリから２以上の浮動小数点数を取り込み、取り込んだ前記２以上の浮動小数点数のそれぞれについて、その真値を含む範囲で上限値及び下限値を設定する区間設定部と、前記命令メモリから前記命令を取り込み、前記区間設定部により前記命令に基づいて設定された２以上の前記上限値と２以上の前記下限値とを取り込んで、取り込んだ前記２以上の上限値及び前記２以上の下限値により取り込んだ前記所定の命令が指示する前記所定の演算処理を実行する演算部と、前記演算部による演算の結果得られた複数の演算結果から、最大値を取るものと最小値を取るものとを選択して前記データメモリに書き込む演算結果選択部と、を備えている。
【００１９】
【発明の実施の形態】
以下に、本発明の実施形態を、図を参照しつつ説明する。
【００２０】
図１は、本発明の演算処理装置が搭載される情報処理システムのハードウエア構成を示す図である。この情報処理システムは、ＣＰＵ（Ｃｅｎｔｒａｌ　Ｐｒｏｃｅｓｓｉｎｇ　Ｕｎｉｔ）１、ＲＡＭ（Ｒａｎｄｏｍ　Ａｃｃｅｓｓ　Ｍｅｍｏｒｙ）２、ＲＯＭ（Ｒｅａｄ　Ｏｎｌｙ　Ｍｅｍｏｒｙ）３および入出力インタフェース４が、バスＢを介して接続されている。入出力インタフェース４には、キーボードやマウスなどの入力装置、及びディスプレイ装置などの出力装置が接続されており、入力装置による情報処理システム外部からのデータの入力や、出力装置への処理結果の出力の制御を行っている。
【００２１】
ＣＰＵ１は、ＲＡＭ２、ＲＯＭ３に記録されているプログラムやデータを用いて所定の情報処理を行うものである。本実施形態のＣＰＵ１は、情報処理の際に浮動小数点を用いた演算処理を行うために、ＦＰＵのような、浮動小数点による演算が可能な演算処理装置１０を含んで構成される。これにより、例えば、この情報処理システムが３次元画像処理を行うような装置である場合には、ＣＰＵ１により浮動小数点演算が可能になるために、精細な画像を表示したり、画像内の物体が複雑な動作をする様子を表示することできる。
なお、この実施形態では、演算処理装置１０をＣＰＵ１に含むものとして説明するが、これに限らず、ＣＰＵ１とは独立して設けるようにしてもよい。
【００２２】
演算処理装置１０の具体的な構成例を図２に示す。
本実施形態の演算処理装置１０は、図２のように、命令メモリ１１、データメモリ１２、区間設定部１３、ＡＬＵ（Ａｒｉｔｈｍｅｔｉｃ　ａｎｄ　Ｌｏｇｉｃａｌ　Ｕｎｉｔ）１４、演算結果選択部１５、及び演算処理装置１０に含まれる各構成要素の動作を制御する制御部１６を備えている。これらの各構成要素は、浮動小数点数の精度保証を行うための専用のハードウエアとして設けられており、例えば、１つの半導体デバイス上に構築される。
【００２３】
命令メモリ１１は、演算処理装置１０の外部から演算処理を実行するための命令を受け取り、これを格納するものである。
命令には、例えば、２つの浮動小数点数を、加算させる加算命令、減算させる減算命令、乗算させる乗算命令、除算させる除算命令などが挙げられる。また、命令には、以上のような演算命令の他に、演算対象となる浮動小数点数を特定するための情報も含まれている。
データメモリ１２は、演算処理装置１０の外部から演算処理に用いられる浮動小数点数を受け取り、これを格納するものである。データメモリ１２には、演算処理装置１０による演算結果も格納される。演算処理に用いられる浮動小数点数は、例えば、真値を所定の桁で四捨五入などの丸め処理を行うことにより得られた数である。
命令メモリ１１及びデータメモリ１２は、物理的に同じメモリ内に存在してもかまわない。また、ＲＡＭ２を、命令メモリ１１、データメモリ１２として用いるようにしてもよい。
【００２４】
区間設定部１３は、データメモリ１２から演算処理に用いる浮動小数点数を取り込んで、この浮動小数点数の真値を含む範囲（区間）の上限値及び下限値を設定する。例えば、浮動小数点数の仮数部の最も下位の桁の数に、１加算及び１減算して浮動小数点数の上限値及び下限値を算出する。
つまり、浮動小数点数は、前述の通り、真値に対して所定の桁を丸め処理を施すことにより、演算処理装置１０で処理可能なように置き換えられているために、正確に真値を示すものとは限らない。そのために、浮動小数点数の仮数部の最も下位の桁の数に１加減算することにより、浮動小数点数を、真値を含む所定の範囲を示すものとする。これにより、真値を含む区間を設定することができるようになる。
【００２５】
例えば、区間設定部１３がデータメモリ１２から取り込んだ浮動小数点数を「０．１２３×１０−２」とする。丸め処理が四捨五入で行われている場合、この浮動小数点数は、「０．１２２５×１０−２」〜「０．１２３４×１０−２」の間に真値を含むことになる。そのために、区間設定部１３は、「０．１２３」に「０．００１」を加減算して下限値「０．１２２×１０−２」、上限値「０．１２４×１０−２」を算出して、常に真値を含む範囲で演算が可能なようにする。
算出した上限値及び下限値は、区間設定部１３からＡＬＵ１４へ送られる。
【００２６】
ＡＬＵ１４は、制御部１６からの指示に従って、区間設定部１３から送られる上限値及び下限値についての演算処理を実行するものである。ＡＬＵ１４が実行する演算処理は、例えば、四則演算等の数値計算処理である。演算結果は、演算結果選択部１５へ送られる。
演算結果選択部１５は、ＡＬＵ１４から送られる複数の演算結果を比較して、所定の条件をみたす演算結果を選択し、選択した演算結果をデータメモリ１２に書き込むものである。例えば演算結果選択部１５は、複数の演算結果から最大値及び最小値を選択してデータメモリ１２に書き込むように構成される。
【００２７】
制御部１６は、命令メモリ１１に演算処理装置１０外部からの命令の受け取りを指示するとともに、命令メモリ１１から命令を読み出して、これを区間設定部１３、ＡＬＵ１４、演算結果選択部１５に送る。また、制御部１６は、データメモリ１２に演算処理装置１０外部からの浮動小数点数の受け取りを指示するとともに、データメモリ１２に格納されている演算結果や浮動小数点数を演算処理装置１０外部へ出力させる。
【００２８】
以上のような演算処理装置１０の動作、特に浮動小数点数の演算処理の手順を、図３〜図７を参照して説明する。
図３は、このような演算処理の処理手順を示す図である。演算処理の前提として、演算処理装置１０の命令メモリ１１には、演算処理を実行するための命令が格納されており、データメモリ１２には、演算処理の対象となる丸め処理された浮動小数点数が少なくとも２つ格納されているものとする。演算処理の対象となる２つの浮動小数点数を「ｘ」、「ｙ」、（ｘ＜ｙ）とする。
【００２９】
制御部１６は、命令メモリ１１から、これから実行することになる演算処理についての命令を読み出し、これを区間設定部１３へ送る（ステップＳ１０）。制御部１６から命令を受けた区間設定部１３は、この命令に基づいてデータメモリ１２から演算処理の対象となる２つの浮動小数点数ｘ、ｙを取り込む（ステップＳ２０）。
【００３０】
次いで、区間設定部１３は、データメモリ１２から取り込んだ浮動小数点数ｘ、ｙの下限値ｘ１、ｙ１及び上限値ｘ２、ｙ２を設定する（ステップＳ３０）。例えば、浮動小数点数ｘ、ｙのそれぞれの仮数部の最も下位の桁の数に対して１加減算を行う。これにより区間設定部１３は、ｘ１、ｘ２、ｙ１、ｙ２を算出する。
区間設定部１３は、算出したｘ１、ｘ２、ｙ１、ｙ２をＡＬＵ１４へ送る（ステップＳ４０）。
【００３１】
制御部１６は、命令をＡＬＵ１４へ送って演算処理の指示を出す。ＡＬＵ１４は命令に基づいて、区間設定部１３から送られるｘ１、ｘ２、ｙ１、ｙ２に対する演算処理を実行する（ステップＳ５０）。演算結果は、ＡＬＵ１４から演算結果選択部１５に転送される（ステップＳ６０）。ＡＬＵ１４によって実行される演算処理は、図４〜図７に示すようなものである。
命令が加算演算を指示するものである場合、ＡＬＵ１４は、ｘ１＋ｙ１及びｘ２＋ｙ２を実行する（図４）。
命令が減算演算を指示するものである場合、ＡＬＵ１４は、ｘ１−ｙ２及びｘ２−ｙ１を実行する（図５）。
命令が乗算演算を指示するものである場合、ＡＬＵ１４は、ｘ１×ｙ１、ｘ１×ｙ２、ｘ２×ｙ１及びｘ２×ｙ２を実行する（図６）。
命令が除算演算を指示するものである場合、ＡＬＵ１４は、ｘ１／ｙ１、ｘ１／ｙ２、ｘ２／ｙ１及びｘ２／ｙ２を実行する（図７）。
【００３２】
次いで、演算結果選択部１５は、制御部１６からの指示により、ＡＬＵ１４から送られた演算結果を比較し、所定の条件をみたすものを選択して、データメモリ１２に書き込む（ステップＳ７０、Ｓ８０）。具体的には、制御部１６から送られる命令がどのような処理を要求しているかによって、以下のような処理を行う。
命令が加算演算を指示するものである場合、演算結果選択部１５は、ｘ１＋ｙ１、ｘ２＋ｙ２を、それぞれ演算結果ｚ１、ｚ２として、データメモリ１２に書き込む。ｚ１（＝ｘ１＋ｙ１）、ｚ２（＝ｘ２＋ｙ２）は、それぞれ、演算結果の下限値、上限値を表す（図４）。
命令が減算演算を指示するものである場合、演算結果選択部１５は、ｚ１＝ｘ１−ｙ２、ｚ２＝ｘ２−ｙ１をデータメモリ１２に書き込む（図５）。
命令が乗算演算を指示するものである場合、演算結果選択部１５は、ｘ１×ｙ１、ｘ１×ｙ２、ｘ２×ｙ１、ｘ２×ｙ２を比較して最小値と最大値を選択する。最小値をｚ１、最大値をｚ２としてデータメモリ１２に書き込む（図６）。
命令が除算演算を指示するものである場合、演算結果選択部１５は、ｘ１／ｙ１、ｘ１／ｙ２、ｘ２／ｙ１、ｘ２／ｙ２を比較して最小値と最大値を選択する。最小値をｚ１、最大値をｚ２としてデータメモリ１２に書き込む（図７）。
【００３３】
このようにして、浮動小数点数ｘ、ｙを用いて演算結果ｚ１、ｚ２が得られる。浮動小数点数ｘ、ｙの真値を用いた演算結果は、演算結果ｚ１を下限値とし、ｚ２を上限値とする範囲内に存在することになる。得られた演算結果ｚ１、ｚ２は、データメモリ１２から演算処理装置１０の外部に出力されたり、あるいは再び演算処理に用いられることになる。
【００３４】
以上のようにして、機械区間演算をハードウエアにより処理できるようになる。このような演算処理装置１０は、区間設定部１３とＡＬＵ１４とを並列に動作させることが可能である。つまり、区間設定部１３とＡＬＵ１４とが連続して動作しているときには、区間設定部１３で浮動小数点数の上限値及び下限値を算出しているのと同時に、先に算出された上限値及び下限値を用いてＡＬＵ１４が演算処理を可能となる。そのために、全体の処理を高速化することができる。
【００３５】
区間設定部１３を備えることで、入力された浮動小数点数の上限値、下限値を計算により求めることができるために、上限値、下限値を逐次データメモリ１２から読み込む必要がない。さらに、ＡＬＵ１４では制御部１６からの命令と区間設定部１３からの上限値、下限値とに基づき、計算を実行することができる。これによって、従来の「下限値設定→演算→上限値設定→演算」というルーチンを、「下限値、上限値設定→演算」というルーチンで済ませることができ、高速化が図れる。
乗除演算では最小値、最大値を選択するための処理も必要であるが、これも演算結果選択部１５が入力された命令とＡＬＵ１４からの演算結果に基づいて比較演算を行い、最小値、最大値を選択して出力することができるために、従来に比べて精度保証つき演算を大幅に高速化できる。
また、精度保証をハードウエアにより行うために、ソフトウエアの設計者は、浮動小数点を用いたソフトウエアの開発の際に、精度保証を考慮する必要がなくなる。そのためにソフトウエアの開発時に、浮動小数点の精度保証に関する専門的な知識と膨大な手間と時間をかけずにすむようになり、開発の能率が向上する。
【００３６】
上記の実施形態では区間設定部１３が浮動小数点数の仮数部の最も下位の桁の数に、１加算及び１減算して浮動小数点数の上限値及び下限値を算出するように構成されているが、これに限らず、入力装置により外部から上限値及び下限値を入力して設定するようにしてもよい。また、入力装置により浮動小数点数の仮数部の最も下位の桁の数に加減算される数を入力するようにしてもよい。
【００３７】
また、演算処理装置１０は、「１００±１０」のような誤差付きの数値の演算にも用いることができる。この場合、データメモリ１２には、演算処理装置１０の外部から演算処理に用いられる誤差付きの数値が格納される。このような誤差付きの数値は、例えば測定値等のばらつきがある数値から得られた数値である。
【００３８】
区間設定部１３は、データメモリ１２から演算処理に用いる誤差付きの数値を取り込んで、誤差を含む範囲で上限値及び下限値を設定する。例えば、区間設定部１３は、誤差付きの数値が「１００±１０」の場合には、入力された「１００」と誤差値「１０」とから「１００＋１０」及び「１００−１０」の演算を行い、上限値「１１０」、下限値「９０」を設定する。ＡＬＵ１４は、この上限値及び下限値を用いて演算を行うことになる。
このように、同じ構成の演算処理装置１０により、誤差付きの数値の演算も可能である。
【００３９】
【発明の効果】
以上の説明から明らかなように、本発明によれば、精度保証を専門に行うハードウエアによって、精度保証の処理を高速に実行することができる演算処理装置が得られる。
【図面の簡単な説明】
【図１】本発明が適用される情報処理システムの全体の構成を示す図。
【図２】本実施形態の演算処理装置の具体的な構成例を示す図。
【図３】本実施形態の演算処理装置による処理手順説明図。
【図４】加算演算時のデータの流れを説明する図。
【図５】減算演算時のデータの流れを説明する図。
【図６】乗算演算時のデータの流れを説明する図。
【図７】除算演算時のデータの流れを説明する図。
【符号の説明】
１　ＣＰＵ
２　ＲＡＭ
３　ＲＯＭ
４　入出力インタフェース
１０　演算処理装置
１１　命令メモリ
１２　データメモリ
１３　区間設定部
１４　ＡＬＵ
１５　演算結果選択部
１６　制御部
【図１】
2004005395.tif 000003
【図２】
2004005395.tif 000004
【図３】
2004005395.tif 000005
【図４】
2004005395.tif 000006
【図５】
2004005395.tif 000007
【図６】
2004005395.tif 000008
【図７】
2004005395.tif 000009