(57)【要約】【課題】  浮動小数点形式で記述された数値から構成される数列の自乗和を含む演算を実行する際に、オーバーフローの予測を低い計算負荷で行うことが可能な技術を提供する。【解決手段】  本発明の演算方法は、浮動小数点方式で表現された数値から構成される数列の自乗和を含む演算に係るオーバーフローを予測する演算方法である。その演算方法は、演算に対応した指数の許容値を固定小数点方式で表現する第１整数を特定する工程と、数列を構成するそれぞれの数値について、第１整数と、数値の指数を固定小数点方式で表現する整数とを比較する工程と、第１整数に比べて数値の指数を示す整数が大きい場合に、オーバーフローの発生を示すデータを出力する工程とを実施する工程とを備えている。【選択図】  図２
2006252287.tif 000002
【特許請求の範囲】
【請求項１】
浮動小数点方式で表現された数値の列からなる数列の自乗和を求める過程を含む演算を実施する際のオーバーフローの発生を予測する演算方法であって、
演算結果の指数の許容値を固定小数点方式で表現した第１整数を特定する工程と、
数列を構成するそれぞれの数値について、「当該数値の指数を固定小数点方式で表現した整数と第１整数とを比較し、前者が後者よりも大きい場合にオーバーフローの発生を示すデータを出力する比較工程」を、実施する工程と、
を備えることを特徴とするオーバーフローの発生を予測する演算方法。
【請求項２】
浮動小数点方式で表現された数値の列からなる数列の自乗和を求める過程を含む演算を実施する演算方法であって、
先に請求項１の演算方法を実施し、次いで自乗和を求める過程を含む演算工程を実施することを特徴とし、
数列を構成するそれぞれの数値について比較工程を実施する間に、オーバーフローの発生を示すデータが出力された時点で、演算を終了することを特徴とする演算方法。
【請求項３】
浮動小数点方式で表現された数値の列からなる数列の自乗和を求める過程を含む演算を実施する演算方法であって、
請求項１の演算方法と、自乗和を求める過程を含む演算工程を同時に並行して実施することを特徴とし、
数列を構成するそれぞれの数値について比較工程を実施する間に、オーバーフローの発生を示すデータが出力された時点で、演算を終了することを特徴とする演算方法。
【請求項４】
浮動小数点方式で表現された第１数値の列からなる第１数列と、浮動小数点方式で表現された第２数値の列からなる第２数列について、対応する第１数値と第２数値の差の自乗和を求める過程を含む演算を実施する際のオーバーフローの発生を予測する演算方法であって、
演算結果の指数の許容値を固定小数点方式で表現した第１整数を特定する工程と、
第１数値の指数を固定小数点方式で表現した整数と第２数値の指数を固定小数点方式で表現した整数の差の許容値を固定小数点方式で表現した第２整数を特定する工程と、
対応する第１数値と第２数値の組のそれぞれについて、「第１数値の指数を固定小数点方式で表現した整数と第１整数とを比較する第１比較工程と、第２数値の指数を固定小数点方式で表現した整数と第１整数とを比較する第２比較工程と、第１数値の指数を固定小数点方式で表現した整数と第２数値の指数を固定小数点方式で表現した整数の差の絶対値と第２整数の絶対値とを比較する第３比較工程を実施し、第１比較工程で前者が後者より大きいか、あるいは、第２比較工程で前者が後者より大きく、かつ、第３比較工程で前者が後者よりも大きい場合に、オーバーフローの発生を示すデータを出力する比較工程」を、実施する工程と、
を備えることを特徴とするオーバーフローの発生を予測する演算方法。
【請求項５】
浮動小数点方式で表現された第１数値の列からなる第１数列と、浮動小数点方式で表現された第２数値の列からなる第２数列について、対応する第１数値と第２数値の差の自乗和を求める過程を含む演算を実施する演算方法であって、
先に請求項４の演算方法を実施し、次いで差の自乗和を求める過程を含む演算工程を実施することを特徴とし、
対応する第１数値と第２数値の組について比較工程を実施する間に、オーバーフローの発生を示すデータ出力された時点で、演算を終了することを特徴とする演算方法。
【請求項６】
浮動小数点方式で表現された第１数値の列からなる第１数列と、浮動小数点方式で表現された第２数値の列からなる第２数列について、対応する第１数値と第２数値の差の自乗和を求める過程を含む演算を実施する演算方法であって、
請求項４の演算方法と、差の自乗和を求める過程を含む演算工程を同時に並行して実施することを特徴とし、
対応する第１数値と第２数値の組について比較工程を実施する間に、オーバーフローの発生を示すデータ出力された時点で、演算を終了することを特徴とする演算方法。
【請求項７】
請求項１から６のいずれかの演算方法における各工程をコンピュータに実行させるためのプログラム。
【請求項８】
浮動小数点方式で表現された数値の列からなる数列の自乗和を求める過程を含む演算を実施する際のオーバーフローの発生を予測する演算装置であって、
入力される数値を記憶する第１レジスタと、
数列を構成するそれぞれの数値を第１レジスタに入力する手段と、
演算結果の指数の許容値を固定小数点方式で表現した第１整数を記憶する第３レジスタと、
第１レジスタに記憶されている数値の指数を固定小数点方式で表現した整数と、第３レジスタに記憶されている第１整数を比較する比較器と、
比較器によって前者が後者よりも大きいと比較されたときに、オーバーフローの発生を示すデータを出力する手段と、
を備えることを特徴とするオーバーフローの発生を予測する演算装置。
【請求項９】
浮動小数点方式で表現された数値の列からなる数列の自乗和を求める過程を含む演算を実施する演算装置であって、
請求項８の演算装置と、自乗和を求める過程を含む演算を実施する演算装置を備えており、
先に請求項８の演算装置が作動し、次いで自乗和を求める過程を含む演算を実施する演算装置が作動することを特徴とし、
請求項８の演算装置が作動している間にオーバーフローの発生を示すデータが出力された場合には、自乗和を求める過程を含む演算を実施する演算装置を作動させないことを特徴とする演算装置。
【請求項１０】
浮動小数点方式で表現された数値の列からなる数列の自乗和を求める過程を含む演算を実施する演算装置であって、
請求項８の演算装置と、自乗和を求める過程を含む演算を実施する演算装置を備えており、
請求項８の演算装置と、自乗和を求める過程を含む演算を実施する演算装置が同時に並行して作動することを特徴とし、
請求項８の演算装置が作動している間にオーバーフローの発生を示すデータが出力された時点で、自乗和を求める過程を含む演算を実施する演算装置の作動を終了することを特徴とする演算装置。
【請求項１１】
浮動小数点方式で表現された第１数値の列からなる第１数列と、浮動小数点方式で表現された第２数値の列からなる第２数列について、対応する第１数値と第２数値の差の自乗和を求める過程を含む演算を実施する際のオーバーフローの発生を予測する演算装置であって、
入力される第１数値を記憶する第１レジスタと、
第１数列を構成するそれぞれの第１数値を第１レジスタへ入力する手段と、
入力される第２数値を記憶する第２レジスタと、
第１レジスタへ入力される第１数値に対応した第２数列を構成するそれぞれの第２数値を第２レジスタへ入力する手段と、
演算結果の指数の許容値を固定小数点方式で表現した第１整数を記憶する第３レジスタと、
第１数値の指数を固定小数点方式で表現した整数と第２数値の指数を固定小数点方式で表現した整数の差の許容値を固定小数点方式で表現した第２整数を記憶する第４レジスタと、
第２整数を２の補数で表現した第３整数値を記憶する第５レジスタと、
第１レジスタに記憶されている第１数値の指数から第２レジスタに記憶されている第２数値の指数を減じ、その差を固定小数点方式で表現した整数で出力する減算器と、
第１レジスタに記憶されている第１数値の指数を固定小数点方式で表現した整数と、第３レジスタに記憶されている第１整数を比較する第１比較器と、
第２レジスタに記憶されている第２数値の指数を固定小数点方式で表現した整数と、第３レジスタに記憶されている第１整数を比較する第２比較器と、
減算器の出力する整数と第４レジスタに記憶されている第２整数を比較する第３比較器と、
減算器の出力する整数と第５レジスタに記憶されている第３整数を比較する第４比較器と、
第１比較器で前者が後者より大きいか、あるいは、第２比較器で前者が後者より大きいと比較され、かつ、第３比較器で前者が後者よりも大きいか、あるいは、第４比較器で前者が後者よりも小さいと比較されたときに、オーバーフローの発生を示すデータを出力する手段と、
を備えることを特徴とするオーバーフローの発生を予測する演算装置。
【請求項１２】
浮動小数点方式で表現された第１数値の列からなる第１数列と、浮動小数点方式で表現された第２数値の列からなる第２数列について、対応する第１数値と第２数値の差の自乗和を求める過程を含む演算を実施する演算装置であって、
請求項１１の演算装置と、差の自乗和を求める過程を含む演算を実施する演算装置を備えており、
先に請求項１１の演算装置が作動し、次いで差の自乗和を求める過程を含む演算を実施する演算装置が作動することを特徴とし、
請求項１１の演算装置が作動している間にオーバーフローの発生を示すデータが出力された場合には、差の自乗和を求める過程を含む演算を実施する演算装置を作動させないことを特徴とする演算装置。
【請求項１３】
浮動小数点方式で表現された第１数値の列からなる第１数列と、浮動小数点方式で表現された第２数値の列からなる第２数列について、対応する第１数値と第２数値の差の自乗和を求める過程を含む演算を実施する演算装置であって、
請求項１１の演算装置と、差の自乗和を求める過程を含む演算を実施する演算装置を備えており、
請求項１１の演算装置と、差の自乗和を求める過程を含む演算を実施する演算装置が同時に並行して作動することを特徴とし、
請求項１１の演算装置が作動している間にオーバーフローの発生を示すデータが出力された時点で、差の自乗和を求める過程を含む演算を実施する演算装置の作動を終了することを特徴とする演算装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は浮動小数点演算を高速に行う技術に関する。詳しくは、浮動小数点演算の実行中にオーバーフローが発生する場合にはそれを事前に予測し、それによって無駄な演算を省略して演算を高速に行うことを可能とする演算方法とプログラムと演算装置に関する。
【背景技術】
【０００２】
画像認識の分野を始めとして、多くの技術分野において浮動小数点を用いた演算が多用されている。その中でも、浮動小数点を用いて表現された数値の列からなる数列の自乗和を求める過程を含む演算が、様々な技術分野で用いられている。
例えば、ＳＶＭ（Support Vector Machine）技術を用いた画像認識では、図１１に示すように、カメラ等から得られた画像を画像データ１１０２として取り込む。取り込まれた画像データ１１０２は、例えば画素毎のＲＧＢそれぞれの色の照度といった、画像を特徴付ける数値分布を示すデジタルデータである。画像データ１１０２の中に、特定の対象物が存在するか否か、存在する場合には画像データ１１０２の中のどこに存在するか、といったことがパターン・マッチング処理によって判断される。パターン・マッチング処理では、画像データ１１０２の中に、辞書データ群１１０４に含まれている辞書データ１１０８ａ、１１０８ｂ、１１０８ｃ、・・・と一致する部分があるか否かを検出する処理が行われる。より詳細には、取り込まれた画像データ１１０２を幾つかの領域に分割し、分割された領域の画像データ１１０６と辞書データ１１０８ａ、１１０８ｂ、１１０８ｃ、・・・・とを比較し、一致する度合いを評価することで、辞書データ１１０８ａ、１１０８ｂ、１１０８ｃ、・・・・で表現されるパターンの有無を判別する。分割された領域の画像データ１１０６と一つの辞書データ１１０８ａとの比較は、以下に示すような自乗和を含む演算を実施して行う。
【０００３】
【数１】
2006252287.tif 000003
【０００４】
上記式において、ｉは画素の番号を示し、ｘｉはその画素の画像データ１１０６における数値を示し、ａｉはその画素の辞書データ１１０８ａにおける数値を示し、ｎは画素数を示している。
上記の演算によって取得されるＦ（ｎ）が小さい値であるほど、画像データ１１０６と辞書データ１１０８ａが一致する度合いは大きい。また上記の演算によって取得されるＦ（ｎ）が大きい値であるほど、画像データ１１０６と辞書データ１１０８ａが一致する度合いは小さい。
ある分割された領域の画像データ１１０６に対して、全ての辞書データ１１０８ａ、１１０８ｂ、１１０８ｃ、・・・・との比較を行い、上記のＦ（ｎ）が所定のしきい値を下回るか否かを判断する。上記のＦ（ｎ）が所定のしきい値を下回る場合、その辞書データで表現されるパターンが、分割された領域の画像データ１１０６と一致すると判断する。
上記した辞書データとの比較を、画像データ１１０２に含まれる全ての領域について行うことによって、画像データ１１０２の内部に存在する対象物を認識することができる。
【０００５】
上記した画像データ１１０６は、通常は浮動小数点方式で表現された数値から構成される数列ｘ１、ｘ２、・・・、ｘｎで表現されている。上記した辞書データ１１０８ａも、通常は浮動小数点方式で表現された数値から構成される数列ａ１、ａ２、・・・、ａｎで表現されている。上記した演算の結果得られるＦ（ｎ）も、浮動小数点方式の数値で表現されている。
このような浮動小数点で表現された数値の演算は、固定小数点で表現された数値の演算に比べて、一般に計算負荷が高く、処理速度が遅いという難点がある。
【０００６】
浮動小数点の方式としては、現在ではＩＥＥＥ７５４に規定される浮動小数点方式が広く用いられている。
ＩＥＥＥ７５４に規定される浮動小数点方式では、図１２に示すように、ある数値データ１２０２を、１ビットの符号部１２０４と、８ビットの指数部１２０６と、２３ビットの仮数部１２０８で表現する。
符号部１２０４はその数値の正負を示すデータであり、その数値が正である場合には「０」が、その数値が負である場合には「１」が付与される。
指数部１２０６はその数値を２進法で表現した場合の、有効な最上位桁の位置を示す整数である。この整数は、２進数の固定小数点方式で表現される。例えば数値データ１２０２が表現する数値が１６＝２４の場合、指数部１２０６には整数４が付与される。ただし、ＩＥＥＥ７５４では、指数部に１２７のバイアスを付加し、指数部が常に正の整数として表記されるようにしているため、上記の場合実際の指数部１２０６は１３１が付与される。
仮数部１２０８はその数値を２進法で表現した場合の、有効数字を示すデータである。このデータは、最上位桁からの「０」と「１」のビット列で表現される。ＩＥＥＥ７５４では、指数部１２０６が有効な最上位桁の位置を示しているため、有効数字の最上位桁は必ず「１」になる。従ってＩＥＥＥ７５４では、仮数部１２０８に、最上位桁の「１」を省略して、次の桁以降のビット列が付与される。このような表記の仕方を、仮数部の正規化という。
【０００７】
またＩＥＥＥ７５４形式の浮動小数点形式では、演算の結果がオーバーフローした場合、無限大∞を表現するデータが与えられる。本明細書でオーバーフローとは、演算の結果得られる数値が、与えられたビット数の浮動小数点方式で表現可能な範囲を上回る状態を示す。正の無限大は、符号ビットが０であり、指数ビットが全て１であり、仮数ビットが全て０とする状態で表現される。
【０００８】
上記したような演算では、浮動小数点を用いた四則演算が行われる。一般に浮動小数点を用いた四則演算は、固定小数点を用いた四則演算に比べて処理に時間を要するため、演算を少しでも高速に実施できるように従来から様々な工夫がなされている。
演算を高速に実施するための工夫の一つに、オーバーフローの予測処理があげられる。
上記したような演算では、演算中にオーバーフローが発生する場合がある。浮動小数点方式で表現可能な範囲を超えた時点で、オーバーフローが発生し、例外処理が実行される。
オーバーフローの発生を、事前に予測することができれば、無駄な演算を行うことなく、次に行うべき処理へ速やかに移行することができる。例えば上記したパターン・マッチング処理の場合、画像データと辞書データが大きく異なる場合に、Ｆ（ｎ）の演算時にオーバーフローが発生する。オーバーフローが発生した場合、画像データと辞書データは一致していないと判断して、次に行うべき処理として画像データと他の辞書データの組合せについての比較処理へ移行する。オーバーフローの発生を事前に予測することができれば、一連の処理に要する時間を大幅に低減することが可能である。
【０００９】
実際に演算をする前にオーバーフローの発生を予測して、数値演算の処理速度を向上する技術が開示されている。
例えば特許文献１には、積和演算を行う際のオーバーフローの可能性を評価し、選択的に飽和演算を行う技術が開示されている。この技術では、まず積和対象となる一方の数列の絶対値の総和を計算するとともに、もう一方の数列の絶対値の最大値を計算する。次にそれらの積を求め、その積を積和演算のとりうる数値範囲の上限値と下限値として設定する。オーバーフローの可能性はその上限値または下限値から判断され、オーバーフローの可能性なしと判断した場合には、逐次飽和演算を含まない単純な積和演算を行い、オーバーフローの可能性ありと判断した場合には、逐次飽和演算を行う。
また特許文献２には、固定小数点のブース乗算を行う際にオーバーフローの発生を予測することで、飽和演算に係る回路構成を簡略化することが可能な技術が開示されている。
【特許文献１】特開２００２−２６９０６６号公報
【特許文献２】特開平９−２４５０１９号公報
【発明の開示】
【発明が解決しようとする課題】
【００１０】
オーバーフローの予測はあくまでも付加的な処理であり、その処理に要する計算負荷は小さいほど好ましく、処理を行うための装置構成は簡素なものであるほど好ましい。オーバーフローの予測の処理に高い計算負荷を要すると、それだけ演算に係る時間が長くなり、演算を高速化する利点が損なわれてしまう。またオーバーフローの予測の処理を行うための装置構成が複雑なものとなると、装置が大型化し、重量の増大や消費電力の増加を招いてしまう。
【００１１】
特許文献２に記載の技術は、固定小数点のブース乗算に特化した技術であって、浮動小数点形式で記述されるデータの演算に適用することはできない。
【００１２】
特許文献１に記載の技術では、オーバーフローの予測を行うために、浮動小数点の四則演算を必要とする。浮動小数点の四則演算は処理に時間を要する。より計算負荷の低い手法でオーバーフローを予測したい。
【００１３】
本発明者らは、多くの技術分野において多用される浮動小数点の自乗和を含む演算において、より低い計算負荷でオーバーフローを予測することが可能な技術を発明した。
【００１４】
本発明の技術は、浮動小数点形式で表現された数値の列からなる数列の自乗和を求める過程を含む演算を実施する際に、低い計算負荷でオーバーフローの発生を予測することが可能な技術を提供する。
【課題を解決するための手段】
【００１５】
本発明の演算方法は、浮動小数点方式で表現された数値の列からなる数列の自乗和を求める過程を含む演算を実施する際のオーバーフローの発生を予測する演算方法である。その演算方法は、演算結果の指数の許容値を固定小数点方式で表現した第１整数を特定する工程と、数列を構成するそれぞれの数値について「当該数値の指数を固定小数点方式で表現した整数と第１整数とを比較し前者が後者よりも大きい場合にオーバーフローの発生を示すデータを出力する比較工程」を実施する工程とを備えている。
【００１６】
本発明で扱う浮動小数点方式は、指数部と仮数部をそなえており、指数部が固定小数点方式で記述され、仮数部が正規化されたものであれば、どのようなものであってもよい。
このような浮動小数点方式としては、例えばＩＥＥＥ７５４に規定される３２ビット浮動小数点方式、６４ビット浮動小数点方式などがあげられる。以下では例示のためにＩＥＥＥ７５４に規定される３２ビット浮動小数点方式の場合について説明する。
【００１７】
上記の演算方法によるオーバーフローの予測の原理を説明する。以下では浮動小数点方式で表現された数値から構成される数列をｘ１、ｘ２、・・・ｘｎとする。この数列の自乗和を含む演算として、次式で表現される関数Ｆ（ｎ）の値を算出する処理を想定する。
【００１８】
【数２】
2006252287.tif 000004
【００１９】
ＩＥＥＥ７５４に規定される３２ビットの浮動小数点形式で表現されるデータは、符号部が１ビット、指数部が８ビット、仮数部が２３ビットで構成されている。指数部には１２７のバイアスが付与されており、指数がとりうる値は−１２６〜１２７の範囲内である。また仮数部に関しては正規化がなされている。従って、表現可能なデータの最大値は２１２８より小さい。演算の結果得られる数値の絶対値が２１２８を超える場合には、オーバーフローが生起する。すなわち、次式の条件が成立する場合、上式で表現される関数Ｆ（ｎ）の値はオーバーフローする。
【００２０】
【数３】
2006252287.tif 000005
【００２１】
上式の演算において、任意のｘｉについてその自乗は非負であり、自然対数の底eについての指数関数は単調増加関数であるから、以下の関係が成り立つ。
【００２２】
【数４】
2006252287.tif 000006
【００２３】
従って次式の条件を満足する場合、関数Ｆ（ｎ）の値はオーバーフローする。
【００２４】
【数５】
2006252287.tif 000007
【００２５】
上記の不等式について、両辺の自然対数をとると、次式の条件を得る。
【００２６】
【数６】
2006252287.tif 000008
【００２７】
上式の右辺について、ｌｎ２１２８＝１２８×ｌｎ２＜８８．７３である。従って、次式の条件が成り立つ場合、Ｆ（ｎ）はオーバーフローする。
【００２８】
【数７】
2006252287.tif 000009
【００２９】
上記した不等式の平方根を考慮することによって、次式の条件を得る。
【００３０】
【数８】
2006252287.tif 000010
【００３１】
従って、あるｘｉについて、その絶対値が９．４２を超える場合、関数Ｆ（ｎ）を算出する演算において、オーバーフローが生起する。９．４２は２４（＝１６）よりも小さい。従って、数列ｘ１、ｘ２、・・・、ｘｎを構成する数値ｘｉのうちで、どれか一つでも指数が４以上のものがあれば、関数Ｆ（ｎ）の値はオーバーフローすることが分かる。数列ｘ１、ｘ２、・・・、ｘｎを構成する数値の指数は全て整数であるから、どれか一つでも指数が３より大きいものがあれば、関数Ｆ（ｎ）の値はオーバーフローすることが分かる。
本発明の演算方法では、数列ｘ１、ｘ２、・・・、ｘｎを構成するそれぞれの数値について、その指数を許容値（第１整数に相当する。上記の例の場合３）と比較し、どれか一つでもその指数が許容値を超えるものがあれば、関数Ｆ（ｎ）の値を求める演算においてオーバーフローが明らかに生起すると判断して、オーバーフローの発生を示すデータを出力する。
それぞれの数値の指数の許容値は、求めようとする関数Ｆ（ｎ）の種類に依存して変化するが、数列ｘ１、ｘ２、・・・、ｘｎを構成するそれぞれの数値には依存しない。従って、それぞれの数値の指数の許容値は、求めようとする関数Ｆ（ｎ）に応じて予め与えておくことができる。
【００３２】
本発明のオーバーフローの発生を予測する演算方法は、様々な種類の演算に適用することが可能である。上記した原理からも分かるように、数列ｘ１、ｘ２、・・・、ｘｎの自乗和に対して単調増加する関数の値を算出する演算であれば、どのような演算に対しても適用することができる。例えば、数列の自乗和そのものであってもよいし、数列の自乗和を引数とする双曲線正弦関数や、双曲線余弦関数であってもよい。
【００３３】
上記したオーバーフローの発生を予測する演算方法によれば、数列ｘ１、ｘ２、・・・、ｘｎを構成するそれぞれの数値ｘｉについて、固定小数点方式で表現される整数である指数と、同じく整数である許容値との比較を一回ずつ実施すれば、オーバーフローが生起するか否かを判断することができる。従って、整数同士の比較をｎ回実施するだけで、数列ｘ１、ｘ２、・・・、ｘｎの自乗和を含む演算がオーバーフローを生起するか否かを予測することができる。
整数同士の比較をする処理は、計算負荷が非常に小さく、極めて高速に実施することができる。従って、上記したオーバーフローの予測の処理は、通常の浮動小数点での四則演算と比較して、極めて高速に実施することが可能である。
本発明の演算方法は、オーバーフローが発生する演算を事前に予測するものであるが、オーバーフローが発生するすべての場合を予測するものではない。本発明の演算方法でオーバーフローの発生が予測されれば実際の演算時にもオーバーフローが発生するが、本発明の演算方法でオーバーフローの発生が予測されない場合でもオーバーフローが発生することがありえる。オーバーフローが発生するすべての演算を予測するのではなく、明らかにオーバーフローが発生するであろう一部の演算を事前に予測することが可能であり、その実質的価値は大きい。
【００３４】
上記したオーバーフローの発生を予測する演算方法は、次のような演算装置を用いることによって好適に実施することができる。
本発明の演算装置は、浮動小数点方式で表現された数値の列からなる数列の自乗和を求める過程を含む演算を実施する際のオーバーフローの発生を予測する演算装置である。その演算装置は、入力される数値を記憶する第１レジスタと、数列を構成するそれぞれの数値を第１レジスタに入力する手段と、演算結果の指数の許容値を固定小数点方式で表現した第１整数を記憶する第３レジスタと、第１レジスタに記憶されている数値の指数を固定小数点方式で表現した整数と第３レジスタに記憶されている第１整数を比較する比較器と、比較器によって前者が後者よりも大きいと比較されたときにオーバーフローの発生を示すデータを出力する手段とを備えている。
上記した演算装置を用いれば、浮動小数点方式で表現された数値の列からなる数列の自乗和を求める過程を含む演算をする際のオーバーフローの予測を、少ない計算負荷で高速に実施することができる。
【００３５】
本発明の他の１つの演算方法は、浮動小数点方式で表現された数値の列からなる数列の自乗和を求める過程を含む演算を実施する演算方法である。その演算方法は、先に上記したオーバーフローの発生を予測する演算方法を実施し、次いで自乗和を求める過程を含む演算工程を実施することを特徴とする。その演算方法は、数列を構成するそれぞれの数値について比較工程を実施する間に、オーバーフローの発生を示すデータが出力された時点で、演算を終了することを特徴とする。
【００３６】
上記の演算方法では、先ず与えられた数列ｘ１、ｘ２、・・・、ｘｎから、上記したオーバーフローの発生を予測する方法によってオーバーフローの予測を行い、オーバーフローが発生しないと判断された場合に限り、自乗和を求める過程を含む演算を実施する。
上述したように、オーバーフローの予測は非常に短い時間で実行することが可能である。浮動小数点の四則演算を繰返し実施して結局はオーバーフローしてしまう演算を省略することが可能である。従って、例えば辞書ファイルを用いたパターン・マッチングのように、自乗和を求める過程を含む演算を高速化することができる。
【００３７】
上記の演算方法では、オーバーフローを予測する処理と、自乗和を求める過程を含む演算を実施する処理を、同時に実施する必要がなく、まずオーバーフローの予測処理を実施し、次に自乗和を求める過程を含む演算を実施する。このような演算方法であれば、自乗和を求める過程を含む演算を実施するために用いる演算装置に対して、オーバーフローを予測するために用いる演算装置の一部または全部を共用化することができ、装置の小型化、軽量化、省電力化をはかることができる。
【００３８】
上記した演算方法は、次のような演算装置を用いることによって好適に実施することができる。
本発明の他の１つの演算装置は、浮動小数点方式で表現された数値の列からなる数列の自乗和を求める過程を含む演算を実施する演算装置である。その演算装置は、上記したオーバーフローの発生を予測する演算装置と、自乗和を求める過程を含む演算を実施する演算装置を備えている。その演算装置は、先に上記したオーバーフローの発生を予測する演算装置が作動し、次いで自乗和を求める過程を含む演算を実施する演算装置が作動することを特徴とする。その演算装置は、上記したオーバーフローの発生を予測する演算装置が作動している間にオーバーフローの発生を示すデータが出力された場合には、自乗和を求める過程を含む演算を実施する演算装置を作動させないことを特徴とする。
【００３９】
本発明の他の１つの演算方法は、浮動小数点方式で表現された数値の列からなる数列の自乗和を求める過程を含む演算を実施する演算方法である。その演算方法は、上記したオーバーフローの発生を予測する演算方法と、自乗和を求める過程を含む演算工程を同時に並行して実施することを特徴とする。その演算方法は、数列を構成するそれぞれの数値について比較工程を実施する間に、オーバーフローの発生を示すデータが出力された時点で、演算を終了することを特徴とする。
【００４０】
上記した演算方法では、自乗和を求める過程を含む演算処理と、オーバーフローの予測処理とを並行して実施する。自乗和を求める過程を含む演算処理を実施している間に、オーバーフローの発生が予測されると、上記の演算処理を終了する。
上記した演算方法によれば、オーバーフローの予測処理と並行して、自乗和を求める過程を含む演算処理を実行するため、オーバーフローの予測処理の結果を待つことなく、自乗和を求める過程を含む演算処理を進めることができる。従って、オーバーフローが発生しない場合であっても、予測処理を追加したことによる処理の遅れを生じることがない。またオーバーフローが発生すると判断された場合には、その時点で自乗和を求める過程を含む演算処理を停止して、次に行うべき処理に移行することができる。この演算方法によれば、非常に高速に自乗和を求める過程を含む演算処理を実行することができる。
【００４１】
上記した演算方法は、次のような演算装置を用いることによって、好適に実施することができる。
本発明の他の１つの演算装置は、浮動小数点方式で表現された数値の列からなる数列の自乗和を求める過程を含む演算を実施する演算装置である。その演算装置は、上記したオーバーフローの発生を予測する演算装置と、自乗和を求める過程を含む演算を実施する演算装置を備えている。その演算装置は、上記したオーバーフローの発生を予測する演算装置と、自乗和を求める過程を含む演算を実施する演算装置が同時に並行して作動することを特徴とする。その演算装置は、上記したオーバーフローの発生を予測する演算装置が作動している間にオーバーフローの発生を示すデータが出力された時点で、自乗和を求める過程を含む演算を実施する演算装置の作動を終了することを特徴とする。
【００４２】
上記では、１つの数列の自乗和を求める過程を含む演算において、オーバーフローを予測する技術を説明した。上記と同様の原理に基づいて、２つの数列の差の自乗和を求める過程を含む演算においても、オーバーフローの発生を予測することが可能である。
画像認識の分野におけるパターン・マッチングのように、浮動小数点方式で表現された数値の列からなる２つの数列について、それぞれの対応する数値の差の自乗和を求める過程を含む演算を実施したい場合がある。本発明の原理を応用することで、上記のような差の自乗和を求める過程を含む演算についても、オーバーフローの発生を予測することが可能となる。
【００４３】
本発明の他の１つの演算方法は、浮動小数点方式で表現された第１数値の列からなる第１数列と、浮動小数点方式で表現された第２数値の列からなる第２数列について、対応する第１数値と第２数値の差の自乗和を求める過程を含む演算を実施する際のオーバーフローの発生を予測する演算方法である。その演算方法は、演算結果の指数の許容値を固定小数点方式で表現した第１整数を特定する工程と、第１数値の指数を固定小数点方式で表現した整数と第２数値の指数を固定小数点方式で表現した整数の差の許容値を固定小数点方式で表現した第２整数を特定する工程と、対応する第１数値と第２数値の組のそれぞれについて、「第１数値の指数を固定小数点方式で表現した整数と第１整数とを比較する第１比較工程と、第２数値の指数を固定小数点方式で表現した整数と第１整数とを比較する第２比較工程と、第１数値の指数を固定小数点方式で表現した整数と第２数値の指数を固定小数点方式で表現した整数の差の絶対値と第２整数の絶対値とを比較する第３比較工程を実施し、第１比較工程で前者が後者より大きいか、あるいは、第２比較工程で前者が後者より大きく、かつ、第３比較工程で前者が後者よりも大きい場合に、オーバーフローの発生を示すデータを出力する比較工程」を、実施する工程とを備えている。
【００４４】
上記の演算方法によるオーバーフローの予測の原理を説明する。以下では浮動小数点方式で表現された第１数値の列からなる第１数列をｘ１、ｘ２、・・・ｘｎとし、浮動小数点方式で表現された第２数値の列からなる第２数列をａ１、ａ２、・・・ａｎする。この第１数列と第２数列の差の自乗和を求める過程を含む演算として、次式で表現される関数Ｆ（ｎ）の値を算出する処理を想定する。
【００４５】
【数９】
2006252287.tif 000011
【００４６】
上式の演算において、任意のｉについて、（ｘｉ−ａｉ）２は非負であり、自然対数の底eに関する指数関数は単調増加関数であるから、以下の関係が成り立つ。
【００４７】
【数１０】
2006252287.tif 000012
【００４８】
関数Ｆ（ｎ）は３２ビットの浮動小数点方式で表現されており、その値が２１２８以上となる場合、オーバーフローが生起する。従って上記の関係式から、次式の条件を満足する場合にＦ（ｎ）はオーバーフローすることが分かる。
【００４９】
【数１１】
2006252287.tif 000013
【００５０】
上記の不等式について、両辺の自然対数をとると、次式の条件を得る。
【００５１】
【数１２】
2006252287.tif 000014
【００５２】
上式の右辺について、ｌｎ２１２８＝１２８×ｌｎ２＜８８．７３である。従って、次式の条件が成り立つ場合、Ｆ（ｎ）はオーバーフローする。
【００５３】
【数１３】
2006252287.tif 000015
【００５４】
上記した不等式の平方根を考慮することによって、次式の条件を得る。
【００５５】
【数１４】
2006252287.tif 000016
【００５６】
従って、あるｘｉ、ａｉについて、その差の絶対値が９．４２を超える場合、関数Ｆ（ｎ）を算出する演算において、オーバーフローが生起する。以下では仮にｘｉの絶対値がａｉの絶対値に比べて大きいとする。上式の左辺｜ｘｉ−ａｉ｜の最小値を考慮すると、以下の関係を得る。
【００５７】
【数１５】
2006252287.tif 000017
【００５８】
ただし、添え字Ｅは浮動小数点方式で表現した場合の指数の値を示している。ｘｉＥは数値ｘｉの指数の値であり、ａｉＥは数値ａｉの指数の値である。
以上の議論を整理すると、結局以下の条件が満足される場合に、Ｆ（ｎ）はオーバーフローすることが分かる。
【００５９】
【数１６】
2006252287.tif 000018
【００６０】
上記の条件は、例えばｘｉＥが４以上であって、かつｘｉＥとａｉＥの差が３以上であれば成立する。指数ｘｉＥ、ａｉＥは整数で与えられているため、上記の条件は、ｘｉＥが３より大きく、かつｘｉＥとａｉＥの差が２より大きい場合に成立する。
上記ではｘｉの絶対値がａｉの絶対値より大きい場合を説明したが、ａｉの絶対値がｘｉの絶対値より大きい場合にも、同様の条件が導かれる。この場合には、ａｉＥが３より大きく、かつａｉＥとｘｉＥの差が２より大きい場合に、オーバーフローが発生する。
【００６１】
従って、第１数列ｘ１、ｘ２、・・・、ｘｎと第２数列ａ１、ａ２、・・・、ａｎの差の自乗和を演算する際には、あるｘｉとａｉの組について、いずれか一方の指数が許容値（第１整数に相当する。上記の例の場合３）より大きく、かつ両者の指数の差の絶対値が許容値（第２整数に相当する。上記の例の場合２）より大きい場合に、オーバーフローが発生する。
あるｘｉとａｉの組について、ｘｉの指数を許容値（第１整数）と比較し、ａｉの指数を許容値（第１整数）と比較することで、いずれか一方の指数が許容値より大きいか否かを判断することができる。また、ｘｉとａｉのそれぞれの指数の差を算出しておき、その指数の差の絶対値を、指数の差の許容値（第２整数）の絶対値と比較することで、両者の指数の差の絶対値が許容値より大きいか否かを判断することができる。従って、上記した演算方法によれば、オーバーフローの発生を予測することができる。
【００６２】
上記したｘｉとａｉの両者の指数の差の絶対値と許容値（第２整数）の絶対値との比較は、例えば第２整数を２の補数で表現したものを第３整数として、ｘｉとａｉの両者の指数の差を第２整数と比較し、ｘｉとａｉの両者の指数の差を第３整数と比較することによって実現することができる。ｘｉとａｉの両者の指数の差が第２整数より大きいか、あるいはｘｉとａｉの両者の指数の差が第３整数より小さい場合、ｘｉとａｉの両者の指数の差の絶対値は許容値（第２整数）の絶対値より大きい。
【００６３】
上記のオーバーフローの発生を予測する演算方法によれば、浮動小数点の四則演算処理を行うことなく、１組のデータｘｉおよびａｉについて、固定小数点で表現される整数同士の１回の減算処理と、４回の比較処理とによって、オーバーフローの有無を判断することができる。従って、第１数列ｘ１、ｘ２、・・・、ｘｎと第２数列ａ１、ａ２、・・・、ａｎの差の自乗和を求める過程を含む演算を実施する際のオーバーフローの有無を、ｎ回の整数の減算処理と、４ｎ回の整数の比較処理によって判断することができる。
上記のオーバーフローの発生を予測する演算方法によれば、低い計算負荷で、極めて高速に、オーバーフローの有無を判断することができる。
【００６４】
上記したオーバーフローの発生を予測する演算方法は、次のような演算装置を用いることによって、好適に実施することができる。
本発明の他の１つの演算装置は、浮動小数点方式で表現された第１数値の列からなる第１数列と、浮動小数点方式で表現された第２数値の列からなる第２数列について、対応する第１数値と第２数値の差の自乗和を求める過程を含む演算を実施する際のオーバーフローの発生を予測する演算装置である。その演算装置は、入力される第１数値を記憶する第１レジスタと、第１数列を構成するそれぞれの第１数値を第１レジスタへ入力する手段と、入力される第２数値を記憶する第２レジスタと、第１レジスタへ入力される第１数値に対応した第２数列を構成するそれぞれの第２数値を第２レジスタへ入力する手段と、演算結果の指数の許容値を固定小数点方式で表現した第１整数を記憶する第３レジスタと、第１数値の指数を固定小数点方式で表現した整数と第２数値の指数を固定小数点方式で表現した整数の差の許容値を固定小数点方式で表現した第２整数を記憶する第４レジスタと、第２整数を２の補数で表現した第３整数値を記憶する第５レジスタと、第１レジスタに記憶されている第１数値の指数から第２レジスタに記憶されている第２数値の指数を減じ、その差を固定小数点方式で表現した整数で出力する減算器と、第１レジスタに記憶されている第１数値の指数を固定小数点方式で表現した整数と、第３レジスタに記憶されている第１整数を比較する第１比較器と、第２レジスタに記憶されている第２数値の指数を固定小数点方式で表現した整数と、第３レジスタに記憶されている第１整数を比較する第２比較器と、減算器の出力する整数と第４レジスタに記憶されている第２整数を比較する第３比較器と、減算器の出力する整数と第５レジスタに記憶されている第３整数を比較する第４比較器と、第１比較器で前者が後者より大きいか、あるいは、第２比較器で前者が後者より大きいと比較され、かつ、第３比較器で前者が後者よりも大きいか、あるいは、第４比較器で前者が後者よりも小さいと比較されたときに、オーバーフローの発生を示すデータを出力する手段とを備えている。
上記したオーバーフローの発生を予測する演算装置を用いれば、浮動小数点方式で表現された数値から構成される２つの数列の差の自乗和を求める過程を含む演算を実施する際のオーバーフローの予測を、少ない計算負荷で高速に実現することが可能となる。
【００６５】
本発明の他の１つの演算方法は、浮動小数点方式で表現された第１数値の列からなる第１数列と、浮動小数点方式で表現された第２数値の列からなる第２数列について、対応する第１数値と第２数値の差の自乗和を求める過程を含む演算を実施する演算方法である。その演算方法は、先に上記したオーバーフローの発生を予測する演算方法を実施し、次いで差の自乗和を求める過程を含む演算工程を実施することを特徴とする。その演算方法は、対応する第１数値と第２数値の組について比較工程を実施する間に、オーバーフローの発生を示すデータ出力された時点で、演算を終了することを特徴とする。
【００６６】
上記の演算方法では、先ず与えられた数列ｘ１、ｘ２、・・・、ｘｎとａ１、ａ２、・・・、ａｎから、オーバーフローの予測を行い、オーバーフローが発生しないと判断された場合に限り、差の自乗和を求める過程を含む演算を実施する。
上記の演算方法によれば、差の自乗和を求める過程を含む演算を実行する際に、浮動小数点の四則演算を繰返し実施しているうちに結局はオーバーフローしてしまう演算の実行を省略することが可能である。従って、例えば辞書ファイルを用いたパターン・マッチングのように、差の自乗和を求める過程を含む演算を行う処理を高速化することができる。
【００６７】
上記の演算方法では、オーバーフローを予測する処理と、差の自乗和を含む演算を実施する処理は、同時に実施する必要がなく、まずオーバーフローの予測処理を実施して、次に差の自乗和を求める過程を含む演算を実施する。このような演算方法であれば、差の自乗和を求める過程を含む演算を実施するために用いる装置に対して、オーバーフローを予測するために用いる装置の一部または全部を共用化することができ、装置の小型化、軽量化、省電力化をはかることができる。
【００６８】
上記の演算方法は、次のような演算装置を用いることによって、好適に実施することができる。
本発明の他の１つの演算装置は、浮動小数点方式で表現された第１数値の列からなる第１数列と、浮動小数点方式で表現された第２数値の列からなる第２数列について、対応する第１数値と第２数値の差の自乗和を求める過程を含む演算を実施する演算装置である。その演算装置は、上記したオーバーフローの発生を予測する演算装置と、差の自乗和を求める過程を含む演算を実施する演算装置を備えている。その演算装置は、先に上記したオーバーフローの発生を予測する演算装置が作動し、次いで差の自乗和を求める過程を含む演算を実施する演算装置が作動することを特徴とする。その演算装置は、上記したオーバーフローの発生を予測する演算装置が作動している間にオーバーフローの発生を示すデータが出力された場合には、差の自乗和を求める過程を含む演算を実施する演算装置を作動させないことを特徴とする。
【００６９】
本発明の他の１つの演算方法は、浮動小数点方式で表現された第１数値の列からなる第１数列と、浮動小数点方式で表現された第２数値の列からなる第２数列について、対応する第１数値と第２数値の差の自乗和を求める過程を含む演算を実施する演算方法である。その演算方法は、上記したオーバーフローの発生を予測する演算方法と、差の自乗和を求める過程を含む演算工程を同時に並行して実施することを特徴とする。その演算方法は、対応する第１数値と第２数値の組について比較工程を実施する間に、オーバーフローの発生を示すデータ出力された時点で、演算を終了することを特徴とする。
【００７０】
上記した演算方法では、差の自乗和を求める過程を含む演算処理と、オーバーフローの予測処理とを並行して実施する。差の自乗和を求める過程を含む演算処理を実施している間に、オーバーフローの発生が予測されると、上記の演算処理を終了する。
上記した演算方法によれば、オーバーフローの予測処理と並行して、差の自乗和を求める過程を含む演算処理を実行するため、オーバーフローの予測処理の結果を待つことなく、差の自乗和を求める過程を含む演算処理を進めることができる。従って、オーバーフローが発生しない場合であっても、予測処理を追加したことによる処理の遅れを生じることがない。またオーバーフローが発生すると判断された場合には、その時点で差の自乗和を求める過程を含む演算処理を停止して、次に行うべき処理へ移行することができる。この演算方法によれば、非常に高速に差の自乗和を求める過程を含む演算処理を実行することができる。
【００７１】
上記の演算方法は、次のような演算装置を用いることによって、好適に実施することができる。
本発明の他の１つの演算装置は、浮動小数点方式で表現された第１数値の列からなる第１数列と、浮動小数点方式で表現された第２数値の列からなる第２数列について、対応する第１数値と第２数値の差の自乗和を求める過程を含む演算を実施する演算装置である。その演算装置は、上記したオーバーフローの発生を予測する演算装置と、差の自乗和を求める過程を含む演算を実施する演算装置を備えている。その演算装置は、上記したオーバーフローの発生を予測する演算装置と、差の自乗和を求める過程を含む演算を実施する演算装置が同時に並行して作動することを特徴とする。その演算装置は、上記したオーバーフローの発生を予測する演算装置が作動している間にオーバーフローの発生を示すデータが出力された時点で、差の自乗和を求める過程を含む演算を実施する演算装置の作動を終了することを特徴とする。
【００７２】
上記した本発明の種々の演算方法は、いずれもプログラムを用いて各工程をコンピュータに実行させることができる。
【発明の効果】
【００７３】
本発明のオーバーフローの発生を予測する演算方法、プログラムまたは演算装置を用いることで、浮動小数点形式で記述された数値の列からなる数列の自乗和を求める過程を含む演算を実行する際に、オーバーフローの予測を低い計算負荷で行うことができる。
また上記のオーバーフロー予測技術を応用した本発明の演算方法、プログラムまたは演算装置を用いることで、浮動小数点形式で記述された数値から構成される数列の自乗和を求める過程を含む演算や、浮動小数点形式で記述された数値から構成される２つの数列の差の自乗和を求める過程を含む演算を高速に実施することが可能となる。
【発明を実施するための最良の形態】
【００７４】
以下、本発明を具現化した実施例について図面を参照して説明する。最初に実施例の主要な特徴を列記する。
（形態１）  浮動小数点方式で表現された数値の列からなる数列の自乗和を求める過程を含む演算においてオーバーフローが発生するか否かを予測する演算方法であって、
演算結果の指数の許容値を固定小数点方式で表現した第１整数を特定する工程と、
数列を構成するそれぞれの数値について、
（１）当該数値の指数を固定小数点方式で表現した整数と第１整数を比較する工程と、
（２）前者が後者よりも大きい場合にオーバーフローの発生を示すデータを出力する工程
を数列の先頭から末尾に至るまで、順に繰返していくことを特徴とするオーバーフローの発生を予測する演算方法。
【実施例】
【００７５】
（第１実施例）
以下、本発明を具現化した実施例について図面を参照しながら説明する。
図１は演算装置１０２の構成を示している。演算装置１０２は、入力された数値ｘ１、ｘ２、・・・、ｘｎの列に基づいて、次式に示す関数Ｆ（ｎ）を演算し、演算された値であるＦ（ｎ）を出力する。
【００７６】
【数１７】
2006252287.tif 000019
【００７７】
数値ｘ１、ｘ２、・・・、ｘｎおよび関数値Ｆ（ｎ）は、いずれもＩＥＥＥ７５４に規定されている３２ビットの浮動小数点方式で表現される。
【００７８】
図１２に示すように、ＩＥＥＥ７５４に規定されている３２ビットの浮動小数点方式では、数値データ１２０２は１ビットの符号部１２０４と、８ビットの指数部１２０６と、２３ビットの仮数部１２０８から構成されている。
【００７９】
以下では、浮動小数点形式で表現された数値のそれぞれについて、添字Ｓを付してその符号部を、添字Ｅを付してその指数部を、添字Ｍを付してその仮数部を表現する。例えば、数値ｘ１について、その符号部をｘ１Ｓと記述し、その指数部をｘ１Ｅと記述し、その仮数部をｘ１Ｍと記述する。
【００８０】
演算装置１０２は、メイン・コントローラ１０４と、オーバーフロー予測装置１０６と、Ｆ（ｎ）演算装置１０８とを備えている。
【００８１】
Ｆ（ｎ）演算装置１０８は、浮動小数点の四則演算および特殊関数の演算が可能なＦＰＵである。Ｆ（ｎ）演算装置１０８は、メイン・コントローラ１０４からの指示に従い、入力された数値ｘ１、ｘ２、・・・・ｘｎの列に基づいて、Ｆ（ｎ）の値を演算して出力する。より詳細には、Ｆ（ｎ）演算装置１０８は、（１）数値ｘｉ（ｉ＝１，２、・・・、ｎ）の自乗を算出し、（２）算出されたｘｉの自乗値をすべてのｉについて累積加算し、（３）累積加算された和を引数として、自然対数の底ｅに関する指数関数を算出する。
Ｆ（ｎ）演算装置１０８はまた、メイン・コントローラ１０４からオーバーフローの検出に伴う演算処理の終了を指示する信号を受信すると、その時点で実施している処理を中断する。処理を中断した後、Ｆ（ｎ）演算装置１０８は、オーバーフローを示すデータ∞を演算の結果として出力する。オーバーフローを示すデータ∞は、指数部が全て１であり、仮数部が全て０のデータである。
【００８２】
オーバーフロー予測装置１０６は、入力された数値ｘ１、ｘ２、・・・・ｘｎの列に基づいて、Ｆ（ｎ）演算装置１０８が演算を実行したときに、オーバーフローが発生するか否かを判断する。オーバーフローが発生すると判断した場合、オーバーフロー予測装置１０６はオーバーフロー検出フラグｆ（ｎ）に「１」を出力する。オーバーフローが発生しないと判断した場合には、オーバーフロー予測装置１０６はオーバーフロー検出フラグに「０」を出力する。オーバーフロー予測装置１０６は当初「０」を出力しており、入力された数値ｘ１、ｘ２、・・・・ｘｎにの列に基づいて、自乗和を求める過程を含む演算時にオーバーフローを生じると判断した場合、オーバーフロー検出フラグを「１」に変更する。オーバーフローを生じないと判断した場合、オーバーフロー検出フラグを「０」のままで維持する。
【００８３】
メイン・コントローラ１０４は、Ｆ（ｎ）の演算を開始すると、Ｆ（ｎ）演算装置１０８と、オーバーフロー予測装置１０６に、並列して処理を実行させる。Ｆ（ｎ）演算装置１０８とオーバーフロー予測装置１０６がそれぞれの処理を実行している間、メイン・コントローラ１０４は、オーバーフロー予測装置１０６から出力されるオーバーフロー検出フラグｆ（ｎ）を看視する。オーバーフロー検出フラグｆ（ｎ）が「１」に変化すると、メイン・コントローラ１０４はＦ（ｎ）演算装置１０８に指示して、処理を終了させる。またＦ（ｎ）演算装置１０８に、演算の結果として、オーバーフローを示すデータ∞を出力させる。オーバーフロー検出フラグｆ（ｎ）が「０」から変化しなければ、Ｆ（ｎ）演算装置１０８にそのまま処理を実行させる。
【００８４】
図２はオーバーフロー予測装置１０６の構成を示している。本実施例のオーバーフロー予測装置１０６は、サブ・コントローラ２０２、メモリ２０４、マルチプレクサ２０６、３２ビットレジスタ２０８、８ビットレジスタ２１６、比較器２１８、１ビットレジスタ２２０を備えている。
【００８５】
サブ・コントローラ２０２は、メイン・コントローラ１０４と通信可能であって、メイン・コントローラ１０４からの指示によって、オーバーフロー予測処理を開始する。
サブ・コントローラ２０２は、メモリ２０４と接続しており、メモリ２０４へのデータの書込みおよびメモリ２０４からのデータの読出しを制御する。またサブ・コントローラ２０２は、マルチプレクサ２０６と接続しており、マルチプレクサ２０６から３２ビット
レジスタ２０８への出力信号を選択する。
サブ・コントローラ２０２は、図示されないカウンタを備えている。このカウンタは、オーバーフロー予測装置１０６がその時点で処理の対象としている数値ｘｉに対応するカウント値ｉを保持している。サブ・コントローラ２０２は、所定のクロック数が経過するごとに、カウント値ｉを１増加させる。
【００８６】
メモリ２０４は、３２ビットの数値をｎ個格納しておくことが可能な記憶装置である。メモリ２０４は、サブ・コントローラ２０２からの指示によって、入力された数値ｘ１、ｘ２、・・・、ｘｎを格納する。またメモリ２０４は、サブ・コントローラ２０２からの指示によって、格納されている数値ｘ１、ｘ２、・・・、ｘｎをマルチプレクサ２０６へ出力する。
【００８７】
マルチプレクサ２０６は、サブ・コントローラ２０２からの制御信号に従って、メモリ２０４から入力される複数のデータの中から１つを選択して、３２ビットレジスタ２０８へ出力する。
【００８８】
３２ビットレジスタ２０８は、３２ビットの浮動小数点方式で表現された数値データを格納することができる。３２ビットレジスタ２０８は、マルチプレクサ２０６から入力されるデータを格納する。格納されるデータは、１ビットの符号部２１４と、８ビットの指数部２１２と、２３ビットの仮数部２１０から構成されている。３２ビットレジスタ２０８は、格納されているデータの指数部２１２を、８ビットのデータとして、比較器２１８へ出力する。
【００８９】
８ビットレジスタ２１６には、８ビットの固定小数点方式で表現された整数が格納されている。８ビットレジスタ２１６に格納されている整数は、指数の許容値Ｅｍａｘである。
本実施例のオーバーフロー予測装置１０６では、数値ｘｉの指数が３より大きい場合に、オーバーフローが生起すると判断する。従って８ビットレジスタ２１６には、指数の許容値Ｅｍａｘとして、３にバイアス値１２７を加えた１３０が固定小数点方式の整数として格納されている。
８ビットレジスタ２１６はＲＯＭであって、予め数値が格納されている。
【００９０】
比較器２１８は、入力される２つの８ビットの整数のデータを比較し、比較した結果を１ビットのデータとして出力する。比較器２１８は、図示Ａから入力された数値が図示Ｂから入力された数値に比べて大きい場合には「１」を出力し、図示Ａから入力された数値が図示Ｂから入力された数値に比べて小さいか等しい場合には「０」を出力する。
【００９１】
１ビットレジスタ２２０は、比較器２１８から出力される１ビットのデータを格納する。１ビットレジスタ２３０は、格納された１ビットのデータをオーバーフロー検出フラグｆ（ｎ）として出力する。
【００９２】
図３は本実施例の演算装置１０２の動作を説明するフローチャートである。本実施例の演算装置１０２は、処理を開始すると、Ｆ（ｎ）演算装置１０８によるＦ（ｎ）演算処理Ｓ３０２と、オーバーフロー予測装置１０６によるオーバーフロー予測処理Ｓ３０４とを並行して実施する。オーバーフロー予測処理Ｓ３０４を実施した結果、オーバーフローが生起すると判断されると、Ｆ（ｎ）演算処理Ｓ３０２をその時点で終了し、オーバーフローを示すデータを出力して、処理を終了する。
【００９３】
図４は本実施例のオーバーフロー予測装置１０６の動作を説明するフローチャートである。図４を参照しながら、本実施例のオーバーフロー予測装置１０６によるオーバーフロー予測処理Ｓ３０４の詳細について説明する。
【００９４】
ステップＳ４０２では、サブ・コントローラ２０２は、カウント値ｉを１に設定する。
【００９５】
ステップＳ４０４では、３２ビットレジスタ２０８に、演算の対象となるデータｘｉを読込む。サブ・コントローラ２０２は次に処理の対象とするデータｘｉを格納しているメモリ２０４に、読込み信号を出力する。またマルチプレクサ２０６に制御信号を出力して、３２ビットレジスタ２０８に次に処理の対象とするデータｘｉを入力させる。３２ビットレジスタ２０８は、入力されたデータｘｉを格納する。３２ビットレジスタ２０８は、格納されたデータｘｉのうち、８ビットの指数部２１２のデータｘｉＥを出力する。
【００９６】
ステップＳ４０６では、比較器２１８において、３２ビットレジスタ２０８に格納されたデータの指数部２１２の整数ｘｉＥと、８ビットレジスタ２１６に格納された整数Ｅｍａｘを比較する。
ｘｉＥがＥｍａｘにくらべて大きい場合（ステップＳ４０６でＹＥＳの場合）、比較器２１８は「１」を出力する。この場合、処理はステップＳ４０８へ進む。ｘｉＥがＥｍａｘにくらべて小さいか、等しい場合（ステップＳ４０６でＮＯの場合）、比較器２１８は「０」を出力する。この場合、処理はステップＳ４１０へ進む。
【００９７】
ステップＳ４０８では、１ビットレジスタ２２０は比較器２１８から入力されるデータを格納する。ステップＳ４０８では比較器２１８の出力は「１」であるから、１ビットレジスタ２２０には「１」が格納される。１ビットレジスタ２２０は、格納されたデータをオーバーフロー検出フラグｆ（ｎ）として出力する。
サブ・コントローラ２０２は、オーバーフロー検出フラグｆ（ｎ）が「１」に変化したときに、オーバーフロー予測の処理を終了する。
【００９８】
ステップＳ４１０では、１ビットレジスタ２２０は比較器２１８から入力されるデータを格納する。ステップＳ４１０では比較器２１８の出力は「０」であるから、１ビットレジスタ２２０には「０」が格納される。１ビットレジスタ２２０は、格納されたデータをオーバーフロー検出フラグｆ（ｎ）として出力する。
【００９９】
ステップＳ４１２では、サブ・コントローラ２０２はカウント値ｉを増加させる。サブ・コントローラ２０２は、上記した一連の処理を実行するために要するクロック数を予め記憶しており、所定のクロック数が経過する毎にカウント値ｉを増加させる。
【０１００】
ステップＳ４１４では、サブ・コントローラ２０２は全ての数値ｘｉを処理したか否かを判断する。カウント値ｉがｎを超える場合（ステップＳ４１４でＹＥＳの場合）、サブ・コントローラ２０２は数列ｘ１、ｘ２、・・・、ｘｎの全ての数値に関して処理を実行し終えたと判断して、オーバーフロー予測の処理を終了する。カウント値ｉがｎを超えない場合（ステップＳ４１４でＮＯの場合）、サブ・コントローラ２０２は未だ数列ｘ１、ｘ２、・・・、ｘｎの全ての数値に関して処理を実行していないと判断して、処理はステップＳ４０４へ進む。
【０１０１】
Ｆ（ｎ）演算装置１０８は、オーバーフロー予測装置１０６が図４の処理を実行している間も、並行してＦ（ｎ）を算出する演算を実行している。
オーバーフロー予測装置１０６から出力されるオーバーフロー検出フラグが「１」になると、メイン・コントローラ１０４からの指示に従って、Ｆ（ｎ）演算装置１０８はオーバーフローを示すデータ∞を演算結果Ｆ（ｎ）として出力する。
オーバーフロー予測装置１０６から出力されるオーバーフロー検出フラグが「０」のままであれば、Ｆ（ｎ）演算装置１０８はそのまま処理を継続し、Ｆ（ｎ）を算出する演算が終わり次第、その演算結果をＦ（ｎ）として出力する。
【０１０２】
上記のオーバーフロー予測装置１０６は、ｎ回の整数の比較処理のみによって、オーバーフローが生起するか否かを判断する。
以下では例として、数列ｘ１、ｘ２、ｘ３について、Ｆ（３）を演算する場合を説明する。例えばｘ１＝１＝２０であり、ｘ２＝８＝２３であり、ｘ３＝１６＝２４であるとする。この場合、ｘ１、ｘ２、ｘ３は、それぞれ３２ビットの浮動小数点方式で、以下のように表現される。
【０１０３】
【数１８】
2006252287.tif 000020
【０１０４】
ｘ１、ｘ２、ｘ３の指数はそれぞれ０、３、４である。上述の浮動小数点方式では、指数部に１２７のバイアスが付与されていることに注意されたい。ｘ１、ｘ２、ｘ３のバイアスが付加された指数はそれぞれ１２７、１３０、１３１である。
【０１０５】
上記の数列ｘ１、ｘ２、ｘ３に基づいて上記したオーバーフローの予測処理を実行すると、ｘ３に関して、その指数が許容値Ｅｍａｘ＝１３０を超えているため、オーバーフローが生起すると予測される。
【０１０６】
上記の演算を実際に実行してみると、以下に示すように、確かにオーバーフローが生起することが分かる。
【０１０７】
【数１９】
2006252287.tif 000021
【０１０８】
本実施例のオーバーフロー予測装置１０６によれば、浮動小数点の四則演算を行うことなく、わずかｎ回の整数の比較処理によって、オーバーフローの生起を予測することができる。これによって、オーバーフローが生起した後に行うべき処理を、より迅速に行うことが可能となり、演算の高速化が図られる。
本実施例の演算装置１０２によれば、Ｆ（ｎ）の演算と並行してオーバーフローの予測を行う。Ｆ（ｎ）の演算処理とオーバーフローの予測処理とを互いに独立して実行しているため、オーバーフローが生起しない場合であっても、予測処理の追加による処理の遅延を招くことがない。またオーバーフローが生起する場合には、予測処理によってそれが判明した時点で演算を終了し、次に行うべき処理へ移行することができる。極めて高速に処理を実施することができる。
【０１０９】
上記の実施例では８ビットレジスタ２１６をＲＯＭとした例を説明したが、８ビットレジスタ２１６は例えばＲＡＭといった他のデータ保持手段であってもよい。
【０１１０】
当業者にとって、本実施例のオーバーフロー予測の方法は、選択的にハードウェア、ソフトウェア、あるいはハードウェアとソフトウェアの組合せによって実装することができることが明らかである。
【０１１１】
（第２実施例）
本発明の他の１つの実施例について説明する。
本実施例の演算装置は、浮動小数点で表現された数値から構成される数列ｘ１、ｘ２、・・・、ｘｎに関して、その自乗和を含む関数Ｆ（ｎ）を算出して、その結果を出力する。本実施例の演算装置は、Ｆ（ｎ）演算装置と、オーバーフロー予測装置を備える。
本実施例のＦ（ｎ）演算装置は、第１実施例のＦ（ｎ）演算装置１０８と同様の構成を備える、浮動小数点の四則演算および特殊関数の演算が可能なＦＰＵである。
本実施例のオーバーフロー予測装置は、図２に示す第１実施例のオーバーフロー予測装置１０６と同様の構成を備えているが、サブ・コントローラ２０２、メモリ２０４、マルチプレクサ２０６、３２ビットレジスタ２０８、比較器２１８、８ビットレジスタ２１６、１ビットレジスタ２２０は、全てＦ（ｎ）演算装置と共用されている。第１実施例のオーバーフロー予測装置１０６は簡素な構成をしているため、Ｆ（ｎ）演算装置として一般的なＦＰＵを用いることで、その内部にオーバーフロー予測装置１０６と等価な構成を容易に実現することができる。
【０１１２】
図５は本実施例の演算装置の動作を説明するフローチャートである。図５に示すように、本実施例の演算装置は、処理を開始すると、先ずオーバーフロー予測の処理Ｓ５０２を実施する。オーバーフロー予測の処理Ｓ５０２においてオーバーフローが生起すると判断されると（Ｓ５０４でＹＥＳの場合）、演算装置はＦ（ｎ）の演算の処理Ｓ５０６を行うことなく、Ｆ（ｎ）としてオーバーフローを示すデータ∞を出力して（Ｓ５０８）、処理を終了する。オーバーフロー予測の処理Ｓ５０２においてオーバーフローが生起しないと判断されると（Ｓ５０４でＮＯの場合）、演算装置はＦ（ｎ）の演算の処理Ｓ５０６を実施して、その結果を出力する。オーバーフロー予測の処理Ｓ５０２は、第１実施例のオーバーフロー予測装置１０６が行う図４に示す処理と同様である。
本実施例の演算装置によれば、Ｆ（ｎ）演算装置と、オーバーフロー予測装置の構成要素を共用化することによって、小さな回路構成でＦ（ｎ）の演算処理とオーバーフローの予測処理を行うことができる。回路構成を小型化することで、演算装置の省スペース化、軽量化、省電力化を図ることができる。
【０１１３】
（第３実施例）
本発明の他の１つの実施例を説明する。
本実施例の演算装置は、浮動小数点で表現された数値から構成される数列ｘ１、ｘ２、・・・、ｘｎに関して、その自乗和を含む関数Ｆ（ｎ）を算出して、その結果を出力する。本実施例の演算装置は、Ｆ（ｎ）演算装置と、オーバーフロー予測装置を備える。
Ｆ（ｎ）演算装置は、第１実施例のＦ（ｎ）演算装置１０８と同様の構成を備え、浮動小数点の四則演算および特殊関数の演算が可能なＦＰＵである。
オーバーフロー予測装置は、図２に示す第１実施例のオーバーフロー予測装置１０６と同様の構成を備えているが、サブ・コントローラ２０２、メモリ２０４、マルチプレクサ２０６および３２ビットレジスタ２０８はＦ（ｎ）演算装置と共用されている。Ｆ（ｎ）演算装置は、共用された３２ビットレジスタ２０８からｘｉを読出し、ｘｉの自乗値を算出して、その自乗値を累積加算して自乗和を算出し、算出された自乗和の自然対数の底ｅに関する指数関数を算出する。
【０１１４】
図６は本実施例の演算装置の動作を説明するフローチャートである。本実施例の演算装置の動作を、図６を参照しながら詳細に説明する。
【０１１５】
ステップＳ６０２では、演算装置はカウント値ｉを１に設定する。またｘｉの自乗値の累積加算値ｄを０に設定する。ｘｉの自乗値の累積加算値ｄは、Ｆ（ｎ）演算装置が備える３２ビットレジスタに格納される。
【０１１６】
ステップＳ６０４では、メモリ２０４から３２ビットレジスタ２０８に、演算の対象となるデータｘｉを読込む。３２ビットレジスタ２０８は、入力されたデータｘｉを格納する。３２ビットレジスタ２０８は、格納されたデータｘｉのうち、８ビットの指数部２１２のデータｘｉＥを出力する。
【０１１７】
ステップＳ６０６では、比較器２１８において、３２ビットレジスタ２０８に格納されたデータの指数部２１２の整数ｘｉＥと、８ビットレジスタ２１６に格納された整数Ｅｍａｘを比較する。
ｘｉＥがＥｍａｘにくらべて大きい場合（ステップＳ６０６でＹＥＳの場合）、比較器２１８は「１」を出力する。この場合、処理はステップＳ６０８へ進む。ｘｉＥがＥｍａｘにくらべて小さいか、等しい場合（ステップＳ６０６でＮＯの場合）、比較器２１８は「０」を出力する。この場合、処理はステップＳ６１２へ進む。
【０１１８】
ステップＳ６０８では、１ビットレジスタ２２０は比較器２１８から入力されるデータを格納する。ステップＳ６０８では比較器２１８の出力は「１」であるから、１ビットレジスタ２２０には「１」が格納される。１ビットレジスタ２２０は、格納されたデータをオーバーフロー検出フラグｆ（ｎ）として出力する。
【０１１９】
ステップＳ６１０では、演算装置はＦ（ｎ）の演算の結果として、オーバーフローを示すデータ∞を出力し、処理を終了する。
【０１２０】
ステップＳ６１２では、１ビットレジスタ２２０は比較器２１８から入力されるデータを格納する。ステップＳ６１２では比較器２１８の出力は「０」であるから、１ビットレジスタ２２０には「０」が格納される。１ビットレジスタ２２０は、格納されたデータをオーバーフロー検出フラグｆ（ｎ）として出力する。
【０１２１】
ステップＳ６１４では、３２ビットレジスタ２０８に格納された数値ｘｉの自乗を算出する。数値ｘｉの自乗を算出する演算は、Ｆ（ｎ）演算装置が備える浮動小数点の乗算器を用いて実行される。算出されたｘｉの自乗値ｑは、Ｆ（ｎ）演算装置が備える３２ビットレジスタに格納される。
【０１２２】
ステップＳ６１６では、ｘｉの自乗値の累積加算値ｄに、ステップＳ６１４で算出されたｑを加算する。
【０１２３】
ステップＳ６１８では、カウント値ｉを１増加させる。
【０１２４】
ステップＳ６２０では、全ての数値ｘｉを処理したか否かを判断する。カウント値ｉがｎを超える場合（ステップＳ６２０でＹＥＳの場合）、数列ｘ１、ｘ２、・・・、ｘｎの全ての数値に関して処理を実行したと判断して、処理はステップＳ６２２へ進む。カウント値ｉがｎを超えない場合（ステップＳ６２０でＮＯの場合）、未だ数列ｘ１、ｘ２、・・・、ｘｎの全ての数値に関する処理を実行していないと判断して、処理はステップＳ６０４へ進む。
【０１２５】
ステップＳ６２２では、数列ｘ１、ｘ２、・・・、ｘｎの自乗値の累積加算値ｄを引数として、自然対数の底ｅに関する指数関数を算出する。算出された値は、関数Ｆ（ｎ）として出力される。
【０１２６】
本実施例のオーバーフロー予測装置または方法によれば、オーバーフロー予測装置のメモリ、マルチプレクサおよび３２ビットレジスタをＦ（ｎ）演算装置と共用としているため、第１実施例のオーバーフロー予測装置または方法にくらべて、Ｆ（ｎ）の演算に要する回路構成を小型化することができる。また３２ビットレジスタへの数値ｘｉの読込みを、オーバーフロー予測の処理とＦ（ｎ）演算の処理で共通としているため、第２実施例のオーバーフロー予測装置にくらべて演算時間を短縮することができる。
【０１２７】
（第４実施例）
本発明を具現化した他の１つの実施例について図面を参照しながら説明する。
図７は演算装置７０２の構成を示している。演算装置７０２は、入力された数値ｘ１、ｘ２、・・・、ｘｎと、数値ａ１、ａ２、・・・、ａｎに基づいて、次式の関数Ｆ（ｎ）を演算し、演算されたＦ（ｎ）を出力する。
【０１２８】
【数２０】
2006252287.tif 000022
【０１２９】
数値ｘ１、ｘ２、・・・、ｘｎ、数値ａ１、ａ２、・・・、ａｎ、および関数Ｆ（ｎ）は、いずれもＩＥＥＥ７５４に規定されている３２ビットの浮動小数点方式で表現されている。
【０１３０】
演算装置７０２は、演算の結果得られた数値Ｆ（ｎ）を出力する。Ｆ（ｎ）は３２ビットの浮動小数点方式で記述された数値である。関数Ｆ（ｎ）がオーバーフローすると、演算装置７０２は、オーバーフローしたことを示すデータ∞を出力する。オーバーフローしたことを示すデータ∞は、指数部が全て１であって、仮数部が全て０のデータである。
【０１３１】
Ｆ（ｎ）演算装置７０８は、浮動小数点の四則演算および特殊関数の演算が可能なＦＰＵである。Ｆ（ｎ）演算装置７０８は、メイン・コントローラ７０４からの指示に従って、入力された数値ｘ１、ｘ２、・・・・ｘｎと、数値ａ１、ａ２、・・・、ａｎに基づいて、Ｆ（ｎ）の値を演算して出力する。より詳細には、Ｆ（ｎ）演算装置７０８は、（１）ｘｉとａｉの差を算出し、（２）算出された差の自乗値を算出し、（３）算出された自乗値をすべてのｉについて累積加算し、（３）累積加算された値について、自然対数の底ｅの指数関数を算出する。
【０１３２】
オーバーフロー予測装置７０６は、入力された数値ｘ１、ｘ２、・・・・ｘｎと、数値ａ１、ａ２、・・・、ａｎに基づいて、Ｆ（ｎ）演算装置７０８が演算を実行したときにオーバーフローを生起するか否かを判断する。オーバーフローが生起すると判断した場合、オーバーフロー予測装置７０６はオーバーフロー検出フラグｆ（ｎ）として「１」を出力する。オーバーフローが生起しないと判断した場合には、オーバーフロー予測装置７０６はオーバーフロー検出フラグとして「０」を出力する。オーバーフロー予測装置７０６は当初「０」を出力しており、入力された数値ｘ１、ｘ２、・・・・ｘｎと、数値ａ１、ａ２、・・・、ａｎに基づいて、オーバーフローを生じると判断した場合、オーバーフロー検出フラグに「１」に変更する。オーバーフローを生じないと判断した場合、オーバーフロー検出フラグに「０」のままで維持する。
【０１３３】
メイン・コントローラ７０４は、Ｆ（ｎ）演算装置７０８と、オーバーフロー予測装置７０６に、並列して処理を実行させる。Ｆ（ｎ）演算装置７０８とオーバーフロー予測装置７０６がそれぞれの処理を実行している間、メイン・コントローラ７０４は、オーバーフロー予測装置７０６から出力されるオーバーフロー検出フラグｆ（ｎ）を看視する。オーバーフロー検出フラグｆ（ｎ）が「１」に変化すると、メイン・コントローラ７０４はＦ（ｎ）演算装置７０８に指示して、処理を終了させる。またＦ（ｎ）演算装置７０８に、演算の結果として、オーバーフローを示すデータ∞を出力させる。オーバーフロー検出フラグｆ（ｎ）が「０」から変化しなければ、Ｆ（ｎ）演算装置７０８にそのまま処理を実行させる。
【０１３４】
図８はオーバーフロー予測装置７０６の構成を示している。本実施例のオーバーフロー予測装置７０６は、サブ・コントローラ８０２、メモリ８０４、８４８、マルチプレクサ８０６、８５０、３２ビットレジスタ８０８、８４６、８ビットレジスタ８１８、８２０、８３８、比較器８２２、８２４、８３４、８３６、減算器８１６、ＯＲゲート８２６、８３２、ＡＮＤゲート８２８、１ビットレジスタ８３０を備えている。
【０１３５】
サブ・コントローラ８０２は、メイン・コントローラ７０４と通信可能であって、メイン・コントローラ７０４からの指示によって、オーバーフロー予測処理を開始する。
サブ・コントローラ８０２は、メモリ８０４、８４８と接続しており、メモリ８０４、８４８へのデータの書込みおよびメモリ８０４、８４８からのデータの読出しを制御する。またサブ・コントローラ８０２は、マルチプレクサ８０６、８５０と接続しており、マルチプレクサ８０６から３２ビットレジスタ８０８への出力信号およびマルチプレクサ８５０から３２ビットレジスタ８４６への出力信号を選択する。
サブ・コントローラ８０２は、図示されないカウンタを備えている。このカウンタは、オーバーフロー予測装置７０６がその時点で処理の対象としている数値ｘｉに対応するカウント値ｉを保持している。サブ・コントローラ８０２は、所定のクロック数が経過するごとに、カウント値ｉを１増加させる。
【０１３６】
メモリ８０４、８４８は、それぞれ３２ビットの数値をｎ個格納しておくことが可能な記憶装置である。メモリ８０４は、サブ・コントローラ８０２からの指示によって、入力された数値ａ１、ａ２、・・・、ａｎを格納する。メモリ８４８は、コントローラ８０２からの指示によって、入力された数値ｘ１、ｘ２、・・・、ｘｎを格納する。
またメモリ８０４、８４８は、サブ・コントローラ８０２からの指示によって、格納されている数値を出力する。メモリ８０４は、サブ・コントローラ８０２からの指示によって、格納されている数値ａ１、ａ２、・・・、ａｎをマルチプレクサ８０６へ出力する。メモリ８４８は、サブ・コントローラ８０２からの指示によって、格納されている数値ｘ１、ｘ２、・・・、ｘｎをマルチプレクサ８５０へ出力する。
【０１３７】
マルチプレクサ８０６、８５０は、サブ・コントローラ８０２からの制御信号に従って、複数の入力データの中から１つのデータを選択して出力する。
【０１３８】
３２ビットレジスタ８０８、８４６は、３２ビットの浮動小数点方式で表現された数値データを格納することができる。
３２ビットレジスタ８０８は、マルチプレクサ８０６から入力されるデータを格納する。格納されるデータは、１ビットの符号部８１２と、８ビットの指数部８１０と、２３ビットの仮数部８１４から構成されている。３２ビットレジスタ８０８は、格納されているデータの指数部８１０を、８ビットのデータとして出力することができる。
３２ビットレジスタ８４６は、マルチプレクサ８５０から入力されるデータを格納する。格納されるデータは、１ビットの符号部８４４と、８ビットの指数部８４２と、２３ビットの仮数部８４０から構成されている。３２ビットレジスタ８４６は、格納されているデータの指数部８４２を、８ビットのデータとして出力することができる。
【０１３９】
８ビットレジスタ８１８、８２０、８３８には、８ビットの整数が格納されている。
８ビットレジスタ８３８に格納されている整数は、指数の許容値Ｅｍａｘである。８ビットレジスタ８２０に格納されている整数は、指数の差の許容値ΔＥｍａｘである。８ビットレジスタ８１８に格納されている整数は、８ビットレジスタ８２０に格納されている整数ΔＥｍａｘの正負を反転した整数−ΔＥｍａｘである。
本実施例のオーバーフロー予測装置７０６では、数値ｘｉの指数ｘｉＥまたは数値ａｉの指数ａｉＥが３より大きく、かつｘｉＥとａｉＥの差の絶対値が２より大きい場合に、オーバーフローが生起すると判断する。従って８ビットレジスタ８３８には、指数の許容値Ｅｍａｘとして、３にバイアス値１２７を加えた１３０が固定小数点方式の整数として格納されている。また８ビットレジスタ８２０には、指数の差の許容値ΔＥｍａｘとして２が固定小数点方式の整数として格納されている。８ビットレジスタ８１８には、−ΔＥｍａｘとして−２が固定小数点方式の整数として格納されている。
８ビットレジスタ８１８、８２０、８３８は、いずれもＲＯＭであって、予め数値が与えられている。８ビットレジスタ８１８、８２０、８３８は、ＲＡＭ等のデータを保持することが可能な他の手段に置き換えられていてもよい。
【０１４０】
比較器８２２、８２４、８３４、８３６は、入力される２つの８ビットの整数のデータを比較し、比較した結果を１ビットのデータとして出力する。比較器８２２、８２４、８３４、８３６は、図示Ａから入力された数値が、図示Ｂから入力された数値に比べて大きい場合、図示Ｃへ「１」を出力する。比較器８２２、８２４、８３４、８３６は、図示Ａから入力された数値が、図示Ｂから入力された数値に比べて小さいか、等しい場合には、図示Ｃへ「０」を出力する。
【０１４１】
減算器８１６は、入力される２つの８ビットの整数の差を演算して出力する。減算器８１６は、図示Ｄから入力される整数から、図示Ｅから入力される整数を減じて、得られる８ビットの整数を図示Ｆへ出力する。
【０１４２】
ＯＲゲート８２６、８３２およびＡＮＤゲート８２８は、通常の論理演算子である。
これらの論理演算子は、等価な構成の他の論理回路で構成されていてもよい。
【０１４３】
１ビットレジスタ８３０は、ＡＮＤゲート８２８から出力される１ビットのデータを格納する。１ビットレジスタ８３０は、格納された１ビットのデータをオーバーフロー検出フラグｆ（ｎ）として出力する。
【０１４４】
本実施例の演算装置７０２は、処理を開始すると、Ｆ（ｎ）演算装置７０８によるＦ（ｎ）演算処理と、オーバーフロー予測装置７０６によるオーバーフロー予測処理とを並行して実施する。オーバーフロー予測処理を実施した結果、オーバーフローが生起すると判断されると、Ｆ（ｎ）演算処理をその時点で終了し、オーバーフローを示すデータ∞を出力して、処理を終了する。オーバーフローが生起しないと判断されると、Ｆ（ｎ）演算処理をそのまま継続して、算出された結果を出力する。
【０１４５】
図９は本実施例のオーバーフロー予測装置７０６の動作を説明するフローチャートである。図９を参照しながら、本実施例のオーバーフロー予測装置７０６によるオーバーフロー予測処理の詳細について説明する。
【０１４６】
ステップＳ９０２では、サブ・コントローラ８０２はカウント値ｉを１に設定する。
【０１４７】
ステップＳ９０４では、３２ビットレジスタ８４６に、演算の対象となるデータｘｉを読込む。サブ・コントローラ８０２は次に処理の対象とするデータｘｉを格納しているメモリ８４８に、読込み信号を出力する。またマルチプレクサ８５０に制御信号を出力して、３２ビットレジスタ８４６に次に処理の対象とするデータｘｉを入力する。３２ビットレジスタ８４６は、入力されたデータｘｉを格納する。３２ビットレジスタ８４６は、格納されたデータｘｉのうち、８ビットの指数部８４２のデータｘｉＥを出力する。
またステップＳ９０４では、３２ビットレジスタ８０８に、演算の対象となるデータａｉを読込む。サブ・コントローラ８０２は次に処理の対象とするデータａｉを格納しているメモリ８０４に、読込み信号を出力する。またマルチプレクサ８０６に制御信号を出力して、３２ビットレジスタ８０８に、次に処理の対象とするデータａｉを入力する。３２ビットレジスタ８０８は、入力されたデータａｉを格納する。３２ビットレジスタ８０８は、格納されたデータａｉのうち、８ビットの指数部８１０のデータａｉＥを出力する。
【０１４８】
ステップＳ９０６では、比較器８３４において、３２ビットレジスタ８４６に格納されたデータの指数部ｘｉＥと、８ビットレジスタ８３８に格納されたデータＥｍａｘを比較する。
ｘｉＥがＥｍａｘに比べて大きい場合（ステップＳ９０６でＹＥＳの場合）、処理はステップＳ９１０へ進む。この場合、比較器８３４は「１」を出力し、ＯＲゲート８３２は比較器８３６からの出力に関わらず「１」を出力する。ｘｉＥがＥｍａｘに比べて小さいか、等しい場合（ステップＳ９０６でＮＯの場合）、処理はステップＳ９０８へ進む。この場合、比較器８３４は「０」を出力する。
【０１４９】
ステップＳ９０８では、比較器８３６において、３２ビットレジスタ８０８に格納されたデータの指数部ａｉＥと、８ビットレジスタ８３８に格納されたデータＥｍａｘを比較する。
ａｉＥがＥｍａｘに比べて大きい場合（ステップＳ９０８でＹＥＳの場合）、処理はステップＳ９１０へ進む。この場合、比較器８３６は「１」を出力し、ＯＲゲート８３２は「１」を出力する。ａｉＥがＥｍａｘに比べて小さいか等しい場合（ステップＳ９０８でＮＯの場合）、処理はステップＳ９１８へ進む。この場合、比較器８３４は「０」を出力し、ＯＲゲート８３２は「０」を出力する。従ってＡＮＤゲート８２８は、ＯＲゲート８２６からの出力に関わらず「０」を出力する。
【０１５０】
ステップＳ９１０では、減算器８１６において、３２ビットレジスタ８４６に格納されたデータの指数部ｘｉＥから、３２ビットレジスタ８０８に格納されたデータの指数部ａｉＥを減ずる。ｘｉＥ、ａｉＥはともに固定小数点方式で表現される８ビットの整数であり、減算の結果として得られる差ΔＥも固定小数点方式で表現される８ビットの整数である。
減算の結果として得られる差ΔＥは、減算器８１６から、比較器８２２、８２４へ出力される。
【０１５１】
ステップＳ９１２では、比較器８２４において、減算器８１６から出力された差ΔＥと、８ビットレジスタ８２０に格納された指数の差の許容値ΔＥｍａｘを比較する。
ΔＥがΔＥｍａｘに比べて大きい場合（ステップＳ９１２でＹＥＳの場合）、処理はステップＳ９１６へ進む。この場合、比較器８２４は「１」を出力し、ＯＲゲート８２６は比較器８２２からの出力に関わらず「１」を出力する。従ってＡＮＤゲート８２８は「１」を出力する。ΔＥがΔＥｍａｘに比べて小さいか等しい場合（ステップＳ９１２でＮＯの場合）、処理はステップＳ９１４へ進む。この場合、比較器８２４は「０」を出力する。
【０１５２】
ステップＳ９１４では、比較器８２２において、８ビットレジスタ８１８に格納された指数の差の許容値−ΔＥｍａｘと、減算器８１６から出力された差ΔＥを比較する。
−ΔＥｍａｘがΔＥに比べて大きい場合（ステップＳ９１４でＹＥＳの場合）、処理はステップＳ９１６へ進む。この場合、比較器８２２は「１」を出力し、ＯＲゲート８２６は「１」を出力する。従ってＡＮＤゲート８２８は「１」を出力する。−ΔＥｍａｘがΔＥに比べて小さいか等しい場合（ステップＳ９１４でＮＯの場合）、処理はステップＳ９１８へ進む。この場合、比較器８２２は「０」を出力し、ＯＲゲート８２６は「０」を出力する。従ってＡＮＤゲート８２８は「０」を出力する。
【０１５３】
ステップＳ９１２とＳ９１４の処理は、減算器８１６から出力された差ΔＥの絶対値と、８ビットレジスタ８２０に格納された指数の差の許容値ΔＥｍａｘの絶対値を比較する処理に相当する。ステップＳ９１２とＳ９１４の処理を実行することによって、ΔＥの絶対値がΔＥｍａｘの絶対値に比べて大きい場合は処理はステップＳ９１６へ進み、ΔＥの絶対値がΔＥｍａｘの絶対値に比べて小さいか等しい場合は処理はステップＳ９１８へ進む。
【０１５４】
ステップＳ９１６では、１ビットレジスタ８３０は、ＡＮＤゲート８２８から入力されるデータを格納する。ステップＳ９１６では、ＯＲゲート８３２の出力は「１」であって、かつＯＲゲート８２６の出力は「１」である。従ってＡＮＤゲート８２８からの出力は「１」である。１ビットレジスタ８３０には「１」が格納される。
１ビットレジスタ８３０は、格納されたデータを、オーバーフロー検出フラグｆ（ｎ）として出力する。
【０１５５】
ステップＳ９１８では、１ビットレジスタ８３０は、ＡＮＤゲート８２８から入力されるデータを格納する。ステップＳ９１８では、ＯＲゲート８３２、８２６の出力は、いずれか一方または両方が「０」である。従ってＡＮＤゲート８２８からの出力は「０」である。１ビットレジスタ８３０には「０」が格納される。
１ビットレジスタ８３０は、格納されたデータを、オーバーフロー検出フラグｆ（ｎ）として出力する。
【０１５６】
ステップＳ９２０では、サブ・コントローラ８０２はカウント値ｉを１増加させる。サブ・コントローラ８０２は、上記した一連の処理を実行するために要するクロック数を予め記憶しており、所定のクロック数が経過する毎にカウント値ｉを１増加させる。
【０１５７】
ステップＳ９２２では、サブ・コントローラ８０２は全ての数値を処理したか否かを判断する。カウント値ｉがｎを超える場合（ステップＳ９２２でＹＥＳの場合）、サブ・コントローラ８０２は数列ｘ１、ｘ２、・・・、ｘｎの全ての数値に関して処理を実行し終えたと判断して、オーバーフロー予測の処理を終了する。カウント値ｉがｎを超えない場合（ステップＳ９２２でＮＯの場合）、サブ・コントローラ８０２は未だ数列ｘ１、ｘ２、・・・、ｘｎの全ての数値に関する処理を実行していないと判断して、処理はステップＳ９０４へ進む。
【０１５８】
Ｆ（ｎ）演算装置７０８は、オーバーフロー予測装置７０６が図９の処理を実行している間も、並行してＦ（ｎ）を算出する演算を実行している。
オーバーフロー予測装置７０６から出力されるオーバーフロー検出フラグが「１」になると、メイン・コントローラ７０４からの指示に従って、Ｆ（ｎ）演算装置７０８はオーバーフローを示すデータ∞を演算結果Ｆ（ｎ）として出力する。
オーバーフロー予測装置７０６から出力されるオーバーフロー検出フラグが「０」のままであれば、Ｆ（ｎ）演算装置７０８はそのまま処理を継続し、Ｆ（ｎ）を算出する演算が終わり次第、その演算結果をＦ（ｎ）として出力する。
【０１５９】
上記のオーバーフロー予測装置７０６は、ｎ回の整数の減算処理と、４ｎ回の整数の比較処理のみによって、オーバーフローが生起するか否かを判断する。
以下では例として、数列ｘ１、ｘ２、ｘ３とａ１、ａ２、ａ３について、Ｆ（３）を演算する場合を説明する。例えばｘ１＝１＝２０であり、ｘ２＝８＝２３であり、ｘ３＝１６＝２４であり、ａ１＝２＝２１であり、ａ２＝２＝２１であり、ａ３＝２＝２１であるとする。この場合、ｘ１、ｘ２、ｘ３、ａ１、ａ２、ａ３は、それぞれ３２ビットの浮動小数点方式で、以下のように表現される。
【０１６０】
【数２１】
2006252287.tif 000023
【０１６１】
ｘ１、ｘ２、ｘ３の指数はそれぞれ０、３、４である。またａ１、ａ２、ａ３の指数はすべて１である。上述の浮動小数点方式では、指数部に１２７のバイアスが付与されていることに注意されたい。ｘ１、ｘ２、ｘ３、ａ１、ａ２、ａ３のバイアスが付加された指数はそれぞれ１２７、１３０、１３１、１２８、１２８、１２８である。
【０１６２】
上記の数列ｘ１、ｘ２、ｘ３およびａ１、ａ２、ａ３に基づいてオーバーフローの予測処理を実行すると、ｘ３の指数が許容値Ｅｍａｘ＝１３０を超えており、ｘ３の指数とａ３の指数の差が３であって、許容値ΔＥｍａｘ＝２を超えているため、オーバーフローが生起すると予測される。
【０１６３】
上記の演算を実際に実行してみると、以下に示すように、確かにオーバーフローが生起することが分かる。
【０１６４】
【数２２】
2006252287.tif 000024
【０１６５】
なお図９に示すフローチャートでは、理解を容易にするために、実際には並列的に実施される処理についても、直列的に記載していることに注意されたい。例えば、ステップＳ９０６とステップＳ９０８とステップＳ９１０の処理は、図８のオーバーフロー予測装置７０６において、同じタイミングで実施される。図８のオーバーフロー予測装置７０６では、比較器８３４の出力と比較器８３６の出力についてＯＲ論理を評価しており、このような構成で実現される処理は、図９のフローチャートに示すステップＳ９０６とステップＳ９０８の処理と等価である。また図９のステップＳ９１２とステップＳ９１４の処理も、同じタイミングで実施される。図８のオーバーフロー予測装置７０６では、比較器８２２の出力と比較器８２４の出力についてのＯＲ論理を評価しており、このような構成で実現される処理は、図９のフローチャートに示すステップＳ９１２とステップＳ９１４の処理と等価である。
【０１６６】
本実施例のオーバーフロー予測装置７０６によれば、浮動小数点の四則演算を行うことなく、わずかｎ回の整数の減算処理と、４ｎ回の整数の比較処理によって、オーバーフローの生起を予測することができる。これによって、オーバーフローが生起した後に行うべき処理を、より迅速に行うことが可能となり、演算の高速化が図られる。
本実施例の演算装置７０２によれば、Ｆ（ｎ）の演算と並行してオーバーフローの予測を行う。Ｆ（ｎ）の演算処理とオーバーフローの予測処理とを互いに独立して実行しているため、オーバーフローが生起しない場合であっても、予測処理の追加による処理の遅延を招くことがない。またオーバーフローが生起する場合には、予測処理によってそれが判明した時点で演算を終了し、次に行うべき処理へ移行することができる。極めて高速に処理を実施することができる。
【０１６７】
当業者にとって、本実施例のオーバーフロー予測の方法は、選択的にハードウェア、ソフトウェア、あるいはハードウェアとソフトウェアの組合せによって実装することができることが明らかである。
【０１６８】
（第５実施例）
本発明の他の１つの実施例について説明する。
本実施例の演算装置は、Ｆ（ｎ）演算装置と、オーバーフロー予測装置を備える。
本実施例のＦ（ｎ）演算装置は、第４実施例のＦ（ｎ）演算装置７０８と同様の構成を備える、浮動小数点の四則演算および特殊関数の演算が可能なＦＰＵである。
本実施例のオーバーフロー予測装置は、図８に示す第４実施例のオーバーフロー予測装置７０６と同様の構成を備えているが、サブ・コントローラ８０２、メモリ８０４、８４８、マルチプレクサ８０６、８５０、３２ビットレジスタ８０８、８４６、比較器８２２、８２４、８３４、８３６、８ビットレジスタ８１８、８２０、８３８、ＯＲゲート８２６、８３２、ＡＮＤゲート８２８、１ビットレジスタ８３０は、全てＦ（ｎ）演算装置と共用されている。第４実施例のオーバーフロー予測装置７０６は簡素な構成をしているため、Ｆ（ｎ）演算装置として一般的なＦＰＵを用いることで、その内部にオーバーフロー予測装置７０６と等価な構成を容易に実現することができる。
【０１６９】
本実施例の演算装置は、処理を開始すると、先ずオーバーフロー予測の処理を実施する。オーバーフロー予測の処理においてオーバーフローが生起すると判断されると、演算装置はＦ（ｎ）の演算の処理を行うことなく、Ｆ（ｎ）としてオーバーフローを示すデータ∞を出力して処理を終了する。オーバーフロー予測の処理においてオーバーフローが生起しないと判断されると、演算装置はＦ（ｎ）の演算の処理を実施して、その結果を出力する。オーバーフロー予測の処理は、第４実施例のオーバーフロー予測装置７０６が行う図９に示す処理と同様である。
本実施例の演算装置によれば、Ｆ（ｎ）演算装置と、オーバーフロー予測装置の構成要素を共用化することによって、小さな回路構成でＦ（ｎ）の演算処理に加えてオーバーフローの予測処理を行うことができる。回路構成を小型化することで、演算装置の省スペース化、軽量化、省電力化を図ることができる。
【０１７０】
（第６実施例）
本発明の他の１つの実施例を説明する。
本実施例の演算装置は、Ｆ（ｎ）演算装置と、オーバーフロー予測装置を備える。
Ｆ（ｎ）演算装置は、第４実施例のＦ（ｎ）演算装置７０８と同様の構成を備え、浮動小数点の四則演算および特殊関数の演算が可能なＦＰＵである。
オーバーフロー予測装置は、図８に示す第４実施例のオーバーフロー予測装置７０６と同様の構成を備えているが、サブ・コントローラ８０２、メモリ８０４、８４８、マルチプレクサ８０６、８５０および３２ビットレジスタ８０８、８４６はＦ（ｎ）演算装置と共用されている。Ｆ（ｎ）演算装置は、共用された３２ビットレジスタ８４６からｘｉを読出し、同じく共用された３２ビットレジスタ８０８からａｉを読出し、ｘｉとａｉの差を算出し、算出された差の自乗値を算出して、その自乗値を累積加算していく。
【０１７１】
図１０は本実施例の演算装置の動作を説明するフローチャートである。本実施例の演算装置の動作を、図１０を参照しながら詳細に説明する。
【０１７２】
ステップＳ１００２では、演算装置はカウント値ｉを１に設定する。またｘｉとａｉの差の自乗値の累積加算値ｄを０に設定する。ｘｉとａｉの差の自乗値の累積加算値ｄは、Ｆ（ｎ）演算装置が備える３２ビットレジスタに格納される。
【０１７３】
ステップＳ１００４では、メモリ８４８から３２ビットレジスタ８４６に、演算の対象となるデータｘｉを読込む。３２ビットレジスタ８４６は、入力されたデータｘｉを格納する。３２ビットレジスタ８４６は、格納されたデータｘｉのうち、８ビットの指数部８４２のデータｘｉＥを出力する。またステップＳ１００４では、メモリ８０４から３２ビットレジスタ８０８に、演算の対象となるデータａｉを読込む。３２ビットレジスタ８０８は、入力されたデータａｉを格納する。３２ビットレジスタ８０８は、格納されたデータａｉのうち、８ビットの指数部８１０のデータａｉＥを出力する。
【０１７４】
ステップＳ１００６では、比較器８３４において、３２ビットレジスタ８４６に格納されたデータｘｉの指数部２１２のデータｘｉＥと、８ビットレジスタ８３８に格納された整数Ｅｍａｘを比較する。
ｘｉＥがＥｍａｘにくらべて大きい場合（ステップＳ１００６でＹＥＳの場合）、比較器８３４は「１」を出力する。この場合、ＯＲゲート８３２は、比較器８３６からの出力に関わらず「１」を出力する。この場合、処理はステップＳ１０１０へ進む。ｘｉＥがＥｍａｘにくらべて小さいか、等しい場合（ステップＳ１００６でＮＯの場合）、比較器８３４は「０」を出力する。この場合、処理はステップＳ１００８へ進む。
【０１７５】
ステップＳ１００８では、比較器８３６において、３２ビットレジスタ８０８に格納されたデータａｉの指数部８１０のデータａｉＥと、８ビットレジスタ８３８に格納された整数Ｅｍａｘを比較する。
ａｉＥがＥｍａｘにくらべて大きい場合（ステップＳ１００８でＹＥＳの場合）、比較器８３６は「１」を出力する。この場合、ＯＲゲート８３２は「１」を出力する。この場合、処理はステップＳ１０１０へ進む。ａｉＥがＥｍａｘにくらべて小さいか、等しい場合（ステップＳ１００８でＮＯの場合）、比較器８３６は「０」を出力する。この場合、ＯＲゲート８３２は「０」を出力し、ＡＮＤゲート８２８はＯＲゲート８２６の出力に関わらず「０」を出力する。この場合、処理はステップＳ１０２０へ進む。
【０１７６】
ステップＳ１０１０では、減算器８１６において、３２ビットレジスタ８４６に格納されたデータの指数部ｘｉＥから、３２ビットレジスタ８０８に格納されたデータの指数部ａｉＥを減ずる。ｘｉＥ、ａｉＥはともに固定小数点方式で表現される８ビットの整数であり、減算の結果として得られる差ΔＥも固定小数点方式で表現される８ビットの整数である。
減算の結果として得られる差ΔＥは、減算器８１６から、比較器８２２、８２４へ出力される。
【０１７７】
ステップＳ１０１２では、比較器８２４において、減算器８１６から出力された差ΔＥと、８ビットレジスタ８２０に格納された指数の差の許容値ΔＥｍａｘを比較する。
ΔＥがΔＥｍａｘに比べて大きい場合（ステップＳ９１２でＹＥＳの場合）、処理はステップＳ９１６へ進む。この場合、比較器８２４は「１」を出力し、ＯＲゲート８２６は比較器８２２の出力に関わらず「１」を出力する。ΔＥがΔＥｍａｘに比べて小さいか等しい場合（ステップＳ９１２でＮＯの場合）、処理はステップＳ９１４へ進む。この場合、比較器８２４は「０」を出力する。
【０１７８】
ステップＳ１０１４では、比較器８２２において、８ビットレジスタ８１８に格納された指数の差の許容値−ΔＥｍａｘと、減算器８１６から出力された差ΔＥを比較する。
−ΔＥｍａｘがΔＥに比べて大きい場合（ステップＳ１０１４でＹＥＳの場合）、処理はステップＳ１０１６へ進む。この場合、比較器８２２は「１」を出力し、ＯＲゲート８２６は「１」を出力する。従って、ＡＮＤゲート８２８は「１」を出力する。−ΔＥｍａｘがΔＥに比べて小さいか等しい場合（ステップＳ１０１４でＮＯの場合）、処理はステップＳ１０２０へ進む。この場合、比較器８２２は「０」を出力し、ＯＲゲート８２６は「０」を出力する。従って、ＡＮＤゲート８２８は「０」を出力する。
【０１７９】
ステップＳ１０１６では、１ビットレジスタ８３０はＡＮＤゲート８２８から入力されるデータを格納する。ステップＳ１０１６ではＡＮＤゲート８２８の出力は「１」であるから、１ビットレジスタ８３０には「１」が格納される。１ビットレジスタ８３０は、格納されたデータをオーバーフロー検出フラグｆ（ｎ）として出力する。
【０１８０】
ステップＳ１０１８では、Ｆ（ｎ）の演算の結果として、オーバーフローを示すデータ∞を出力し、処理を終了する。
【０１８１】
ステップＳ１０２０では、１ビットレジスタ８３０はＡＮＤゲート８２８から入力されるデータを格納する。ステップＳ１０２０ではＡＮＤゲート８２８の出力は「０」であるから、１ビットレジスタ８３０には「０」が格納される。１ビットレジスタ８３０は、格納されたデータをオーバーフロー検出フラグｆ（ｎ）として出力する。
【０１８２】
ステップＳ１０２２では、３２ビットレジスタ８４６に格納された数値ｘｉと、３２ビットレジスタ８０８に格納された数値ａｉとの差ｒを算出する。数値ｘｉと数値ａｉの差ｒの算出は、Ｆ（ｎ）演算装置が備える浮動小数点の減算器を用いて実行される。算出された差ｒは、Ｆ（ｎ）演算装置が備える３２ビットレジスタに格納される。
【０１８３】
ステップＳ１０２４では、ステップＳ１０２２で算出された差ｒの自乗を算出する。差ｒの自乗を算出する演算は、Ｆ（ｎ）演算装置が備える浮動小数点の乗算器を用いて実行される。算出された差ｒの自乗値ｑは、Ｆ（ｎ）演算装置が備える３２ビットレジスタに格納される。
【０１８４】
ステップＳ１０２６では、数値ｘｉと数値ａｉの差ｒの自乗値ｑの累積加算値ｄに、ステップＳ１０２４で算出された自乗値ｑを加算する。
【０１８５】
ステップＳ１０２８では、カウント値ｉを１増加させる。
【０１８６】
ステップＳ１０３０では、全ての数値ｘｉ、ａｉを処理したか否かを判断する。カウント値ｉがｎを超える場合（ステップＳ１０３０でＹＥＳの場合）、数列ｘ１、ｘ２、・・・、ｘｎおよび数列ａ１、ａ２、・・・、ａｎの全ての数値に関して処理を実行したと判断して、処理はステップＳ１０３２へ進む。カウント値ｉがｎを超えない場合（ステップＳ１０３０でＮＯの場合）、未だ数列ｘ１、ｘ２、・・・、ｘｎおよび数列ａ１、ａ２、・・・、ａｎの全ての数値に関する処理を実行していないと判断して、処理はステップＳ１００４へ進む。
【０１８７】
ステップＳ１０３２では、数列ｘ１、ｘ２、・・・、ｘｎと数列ａ１、ａ２、・・・、ａｎの自乗和ｄを引数として、自然対数の底ｅに関する指数関数を算出する。算出された値は、Ｆ（ｎ）として出力される。
【０１８８】
上記の実施例の演算装置によれば、オーバーフロー予測装置のメモリ、マルチプレクサおよび３２ビットレジスタをＦ（ｎ）演算装置と共用することによって、第４実施例のオーバーフロー予測装置または方法にくらべて、Ｆ（ｎ）の演算に要する回路構成を小型化することができる。また３２ビットレジスタへの数値ｘｉ、ａｉの読込みを、オーバーフロー予測の処理とＦ（ｎ）演算の処理で共通としているため、第５実施例のオーバーフロー予測装置にくらべて演算時間を短縮することができる。
【０１８９】
以上、本発明の実施形態について詳細に説明したが、これらは例示に過ぎず、特許請求の範囲を限定するものではない。特許請求の範囲に記載の技術には、以上に例示した具体例を様々に変形、変更したものが含まれる。
また、本明細書または図面に説明した技術要素は、単独であるいは各種の組み合わせによって技術的有用性を発揮するものであり、出願時請求項記載の組み合わせに限定されるものではない。また、本明細書または図面に例示した技術は複数目的を同時に達成するものであり、そのうちの一つの目的を達成すること自体で技術的有用性を持つものである。
【図面の簡単な説明】
【０１９０】
【図１】図１は演算装置１０２の構成を示す図である。（第１実施例）
【図２】図２は演算装置１０２のオーバーフロー予測装置１０６の構成を示す図である。（第１実施例）
【図３】図３は演算装置１０２が行う処理を示すフローチャートである。（第１実施例）
【図４】図４は演算装置１０２のオーバーフロー予測装置１０６が行う処理を示すフローチャートである。（第１実施例）
【図５】図５は他の一つの演算装置が行う処理を示すフローチャートである。（第２実施例）
【図６】図６は他の一つの演算装置が行う処理を示すフローチャートである。（第３実施例）
【図７】図７は他の一つの演算装置７０２の構成を示す図である。（第４実施例）
【図８】図８は演算装置７０２のオーバーフロー予測装置７０６の構成を示す図である。（第４実施例）
【図９】図９はオーバーフロー予測装置７０６が行う処理を示すフローチャートである。（第４実施例）
【図１０】図１０は他の一つの演算装置が行う処理を示すフローチャートである。（第６実施例）
【図１１】図１１は画像認識の分野におけるパターン・マッチング処理の概要を示す図である。
【図１２】図１２はＩＥＥＥ７５４に規定される３２ビットの浮動小数点方式で表現された数値データの構造を示す図である。
【符号の説明】
【０１９１】
１０２・・・演算装置
１０４・・・メイン・コントローラ
１０６・・・オーバーフロー予測装置
１０８・・・Ｆ（ｎ）演算装置
２０２・・・サブ・コントローラ
２０４・・・メモリ
２０６・・・マルチプレクサ
２０８・・・３２ビットレジスタ
２１０・・・仮数部
２１２・・・指数部
２１４・・・符号部
２１６・・・８ビットレジスタ
２１８・・・比較器
２２０・・・１ビットレジスタ
７０２・・・演算装置
７０４・・・メイン・コントローラ
７０６・・・オーバーフロー予測装置
７０８・・・Ｆ（ｎ）演算装置
８０２・・・サブ・コントローラ
８０４、８４８・・・メモリ
８０６、８５０・・・マルチプレクサ
８０８、８４６・・・３２ビットレジスタ
８１０、８４２・・・指数部
８１２、８４４・・・符号部
８１４、８４０・・・仮数部
８１８、８２０、８３８・・・８ビットレジスタ
８１６・・・減算器
８２２、８２４、８３４、８４６・・・比較器
８２６、８３２・・・ＯＲゲート
８２８・・・ＡＮＤゲート
８３０・・・１ビットレジスタ
１１０２・・・画像データ
１１０６・・・分割された領域の画像データ
１１０４・・・辞書データ群
１１０８ａ、１１０８ｂ、１１０８ｃ・・・辞書データ
１２０２・・・数値データ
１２０４・・・符号部
１２０６・・・指数部
１２０８・・・仮数部
【図１】
2006252287.tif 000025
【図２】
2006252287.tif 000026
【図３】
2006252287.tif 000027
【図４】
2006252287.tif 000028
【図５】
2006252287.tif 000029
【図６】
2006252287.tif 000030
【図７】
2006252287.tif 000031
【図８】
2006252287.tif 000032
【図９】
2006252287.tif 000033
【図１０】
2006252287.tif 000034
【図１１】
2006252287.tif 000035
【図１２】
2006252287.tif 000036