(57)【要約】【課題】より少ない回路量で数値的に大きな誤差をもつエラーを効率的に検出する浮動小数点演算回路を提供する。【解決手段】上記課題を解決するために、浮動小数点演算回路に、第１の演算結果を出力する第１の演算器１０１と、第２の演算結果を出力する第２の演算器１０２と、第１の演算結果と第２の演算結果とについて所定ビット幅の比較を行う比較回路１０３と、を備える。【選択図】図１
2008158822.tif 000002
【特許請求の範囲】
【請求項１】
浮動小数点形式で表現された演算オペランドを入力し、該浮動小数点形式における仮数部に第１のデータ幅を有する第１の演算結果を出力する第１の演算器と、
前記演算オペランドを入力し、前記浮動小数点形式における仮数部に前記第１のデータ幅よりも小さい第２のデータ幅を有する第２の演算結果を出力する第２の演算器と、
前記第１の演算結果と前記第２の演算結果の仮数部について、それぞれの所定ビットから前記第２のデータ幅について比較を行う比較回路とを有することを特徴とする浮動小数点演算回路。
【請求項２】
前記比較回路は、
前記第１の演算結果と前記第２の演算結果の仮数部について、最上位ビットから前記第２のデータ幅についてビット毎に排他的論理和演算を行なう排他的論理和演算回路と、
該排他的論理和演算の演算結果について、所定のビットパターンであるか否かを判定し、該所定のビットパターンの場合に一致の比較結果を出力する仮数部比較回路と、を有し、
該仮数部比較回路が一致の比較結果を出力した場合に、前記第１の演算結果と前記第２の演算結果とが一致すると判断することを特徴とする請求項１記載の浮動小数点演算回路。
【請求項３】
前記所定のビットパターンは、
全てのビットが１のビットパターン、全てのビットが０のビットパターン、または、最上位ビットから任意のビットまで０が連続し該任意のビットの次のビットから所定のビットまで１が連続するビットパターンのいずれかであることを特徴とする請求項２記載の浮動小数点演算回路。
【請求項４】
浮動小数点形式で表現された演算オペランドを入力し、該浮動小数点形式における仮数部に第１のデータ幅を有する第１の演算結果を出力する第１の演算器に接続され、前記第１の演算結果の検査を行う演算検査回路において、
前記演算オペランドを入力し、前記浮動小数点形式における仮数部に前記第１のデータ幅よりも小さい第２のデータ幅を有する第２の演算結果を出力する第２の演算器と、
前記第１の演算結果と前記第２の演算結果の仮数部について、それぞれの所定ビットから前記第２のデータ幅について比較を行う比較回路とを有することを特徴とする演算検査回路。
【請求項５】
浮動小数点形式で表現された演算オペランドを入力し、該浮動小数点形式における仮数部に第１のデータ幅を有する第１の演算結果を出力する第１の演算回路と、
前記演算オペランドを入力し、前記浮動小数点形式における仮数部に前記第１のデータ幅よりも小さい第２のデータ幅を有する第２の演算結果を出力する第２の演算回路と、
前記第１の演算結果と前記第２の演算結果の仮数部について、それぞれの所定ビットから前記第２のデータ幅について比較を行う比較回路とを有することを特徴とする情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、浮動小数点演算時に発生するエラーを訂正することができる演算回路及び演算方法並びに情報処理装置に関する。
【背景技術】
【０００２】
半導体製造プロセスの進歩にともなう微細化により、例えば、半導体に用いる配線幅の縮小化も進んでいる。その結果、半導体の高集積化が進む一方で、回路の誤作動の確率も増加している。
【０００３】
特に、大規模な科学技術計算を行うスーパーコンピュータでは、多数の浮動小数点演算器が用いられ、アルファ線や宇宙線起因の中性子の衝突により浮動小数点演算器の一つで誤動作が発生し計算結果が誤る危険性が増加する。
【０００４】
例えば、浮動小数点演算器１個の故障率を１０ＦＩＴ（Ｆａｉｌｕｒｅ  Ｉｎ  Ｔｉｍｅ：１億時間に１回の故障が発生する率）としても、１００万個の浮動小数点演算器を用いるスーパーコンピュータでは、１００時間に１回の頻度で、いずれかの浮動小数点演算器にエラーが発生することになる。
【０００５】
浮動小数点演算器のエラーを検出する方法としては、２つの同一の演算器を並列に動作させ、両者の結果を比較する方法がある。しかし、通常の２倍の演算器や比較回路が必要となるので回路量が大幅に増加してしまい、多数の浮動小数点演算器を必要とするスーパーコンピュータにとっては負担が大きくなってしまう。
【０００６】
また、加算器ではパリティ予測、乗算器ではＭｏｄｕｌｏ  ３剰余チェックを行うなどの方法により、浮動小数点演算器の主要部分のエラーを検出することもできる。しかし、パリティチェックでは偶数個の出力ビットが誤るエラーは検出できない。また、Ｍｏｄｕｌｏ  ３剰余チェックでは同一の剰余となるエラーは検出できない。さらに、これらのチェックを行うためには演算器自体の２０％を超える量の回路をエラー検出のために追加しなくてはならない。
【０００７】
特許文献１には、丸め・桁合わせ器の出力と下位ｍビットの出力を選択的に出力して観測することにより、２進乗算器の下位に位置するゲートの故障を検出しやすくする浮動小数点演算器について開示されている。
【特許文献１】特開平０６−０８３５９１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
以上に説明したように、なるべく少ない回路量で、浮動小数点演算で問題となるエラーを高い確率で検出を行なう演算回路及び計算機システムが望まれており、さらに、エラーが検出された場合には，その演算命令を再度実行することにより中性子の衝突などに起因する間欠エラーを訂正できる演算回路及び計算機システムが望まれている。
【０００９】
本発明は、上述した問題に鑑みてなされたものであり、その解決しようとする課題は、より少ない回路量で数値的に大きな誤差をもつエラーを効率的に検出することである。
【課題を解決するための手段】
【００１０】
上記課題を解決するために、本発明に係る浮動小数点演算回路は、浮動小数点形式で表
現された演算オペランドを入力し、該浮動小数点形式における仮数部に第１のデータ幅を有する第１の演算結果を出力する第１の演算器と、前記演算オペランドを入力し、前記浮動小数点形式における仮数部に前記第１のデータ幅よりも小さい第２のデータ幅を有する第２の演算結果を出力する第２の演算器と、前記第１の演算結果と前記第２の演算結果の仮数部について、それぞれの所定ビットから前記第２のデータ幅について比較を行う比較回路と、を有する。
【００１１】
本発明によると、比較回路が第１の演算結果と第２の演算結果の仮数部について、それぞれの所定ビットから第２のデータ幅について比較を行うので、比較の結果に応じて第１の演算結果が正しいか否かを判定することが可能となる。
【００１２】
また、第２の演算器は、記浮動小数点形式における仮数部に第１のデータ幅よりも小さい第２のデータ幅を有する第２の演算結果を出力する演算器なので、より少ない回路量で第１の演算結果が正しいか否かを判定することが可能となる。
【００１３】
さらに、第２の演算結果は、第１のデータ幅よりも小さい第２のデータ幅を有するので、第１の演算結果と第２の演算結果とで一定以上に大きい誤差がある場合には比較の結果から確実に検出することが可能となる。
【発明の効果】
【００１４】
以上に説明したように、本発明によると、より少ない回路量で数値的に大きな誤差をもつエラーを効率的に検出することが可能となる。
【発明を実施するための最良の形態】
【００１５】
以下、本発明の実施の形態について図１〜図１０に基づいて説明する。
図１は、本発明の実施例に係る浮動小数点演算回路１００の概要を説明する図である。
図１に示す浮動小数点演算回路１００は、第１の演算結果を出力する第１の演算器１０１と、第２の演算結果を出力する第２の演算器１０２と、第１の演算結果と第２の演算結果とについて所定ビット幅だけ比較する比較回路１０３と、を備える。
【００１６】
第１の演算器１０１は、浮動小数点形式で表現された演算オペランドが入力されると、第１の演算結果を出力する。第１の演算結果は浮動小数点形式のデータであり、その仮数部は第１のデータ幅（例えば、５２ビット幅）を有する。以下、この第１の演算結果を構成する符号部、指数部及び仮数部を、それぞれ第１の符号部、第１の指数部及び第１の仮数部という。ただし、本実施例に係る第１の符号部、指数部及び仮数部は、丸め処理が施されていないものとする。
【００１７】
第２の演算器１０２は、第１の演算器１０１と同じ演算オペランドが入力される。そして、第２の演算結果を出力する。第２の演算結果も浮動小数点形式のデータであり、その仮数部には第２のデータ幅を有する。ここで、第２のデータ幅は、第１のデータ幅よりも小さいデータ幅（例えば、４ビット幅）とする。したがって、第２の演算器１０２は、第１の演算器１０１より回路量が少ない。
【００１８】
以下、この第２の演算結果を構成する符号部、指数部及び仮数部を、それぞれ第２の符号部、第２の指数部及び第２の仮数部という。
比較回路１０３は、第１の演算結果と第２の演算結果とについて第２のデータ幅だけ比較し、比較結果を出力する。
【００１９】
以下、本発明の実施例に係る浮動小数点演算回路１００の具体例として倍精度浮動小数点演算回路について説明する。ただし、本発明を倍精度浮動小数点演算回路に限定する趣
旨ではない。例えば、単精度浮動小数点演算回路等についても本発明は適用可能なのは当然である。
【００２０】
なお、以下の説明では、本実施例に係る浮動小数点演算回路１００への入力データは、ＩＥＥＥ（Ｉｎｓｔｉｔｕｔｅ  ｏｆ  Ｅｌｅｃｔｒｉｃａｌ  ａｎｄ  Ｅｌｅｃｔｒｏｎｉｃ  Ｅｎｇｉｎｅｅｒｓ）７５４に基づく倍精度浮動小数点形式のデータとする。そして、符号部Ｓ１（１ビット幅）と指数部Ｅ１（１１ビット幅）と仮数部Ｆ１（５２ビット幅）とで構成される第１の演算オペランドと、符号部Ｓ２（１ビット幅）と指数部Ｅ２（１１ビット幅）と仮数部Ｆ２（５２ビット幅）とで構成される第２の演算オペランドを入力データとする。
【００２１】
したがって、本実施例に係る浮動小数点演算回路１００（すなわち、第１の演算器１０１）の出力も、ＩＥＥＥ７５４に基づく倍精度浮動小数点形式のデータであり、符号部ＳＩＧＮ（１ビット）と指数部ＥＸＰ（１１ビット幅）と仮数部ＦＲＡＣ（５２ビット幅）とで構成される出力データとする。
【００２２】
（第１の実施例）
図２は、本発明の第１の実施例に係る第１の演算器１０１の具体的な構成例を示す図である。
【００２３】
図２に示す第１の演算器１０１は、仮数部Ｆ１とＦ２の和を求める加算器２０１と、指数部Ｅ１とＥ２の差を求める引算器２０２と、指数部Ｅ１とＥ２の差を絶対値に変換する変換器２０３と、その絶対値に応じて仮数部をシフトする右シフタ２０４と、指数部Ｅ１とＥ２の差の正負に応じて出力を切替える切替器２０５〜２０７と、符号部Ｓ１とＳ２の排他的論理和を求める排他的論理和演算器２０８と、加算器２０１の出力値を絶対値に変換する変換器２０９と、最上位ビットからみて最初に１を持つビット位置を検出するビット位置検出器２１０と、検出したビット位置が最上位となるように左シフトを行うビット位置調整器２１１と、丸め処理を行う丸め処理器２１２と、符号部Ｓ１とＳ２と加算器２０１および引算器２０２の出力値の符号とから符号部ＳＩＧＮを決定するデコーダ２１３と、指数部Ｅ１またはＥ２とビット位置検出器２１０およびビット位置調整器２１１との差を求める引算器２１４と、を備える倍精度浮動小数点加算器である。
【００２４】
加算処理では、指数部Ｅ１とＥ２の桁を合わせる必要がある。そのため、引算器２０２は、指数部Ｅ１とＥ２の差を求める。そして、その結果に応じて、右シフタ２０３は仮数部Ｆ２を右シフトする。
【００２５】
ここで、指数部Ｅ１とＥ２の差が負の値となる場合には、仮数部Ｆ１を右にシフトする必要があるので、引算器２０２の結果の正負に応じて、切替器２０５及び２０６の出力を切替えて、右シフタ２０３及び加算器２０１への入力（仮数部Ｆ１またはＦ２）を切替える。
【００２６】
加算器２０１は、２つの演算オペランドの仮数部（５２ビット）に最上位の”１”を復元して５３ビット幅のデータの加算を行い、５４ビット幅のデータを出力する加算器である。なお、加算器２０１は、排他的論理和演算器２０１の出力値に応じて加算または引算を行う。符号部Ｓ１とＳ２が同じ場合は加算を行い、異なる場合は引算を行う。
【００２７】
仮数部Ｆ１とＦ２は常に正の値であるので、変換器２０９は、加算器２０１の出力値の絶対値をとって正の数に揃える。ビット位置検出器２１０は、正の数となった加算結果の最上位ビットからみて最初に”１”を持つビット位置を検出し、ビット位置調整器２１１に出力する。
【００２８】
ビット位置調整器２１１は、変換器２０９から入力される加算結果を左シフトし、ビット位置検出器２１０が検出したビット位置を最上位ビットの位置にシフトする。この左シフト分を指数部ＥＸＰに反映するために、ビット位置検出器２１０が検出したビット位置は、引算器２１４にも入力される。
【００２９】
丸め処理器２１２は、ビット位置調整器２１１から出力された値について丸め処理を行う。なお、この丸め処理は、ＩＥＥＥ７５４に基づく丸め処理であるので詳細は省略する。
【００３０】
引算器２１４は、仮数部（Ｅ１またはＥ２）からビット位置検出器２１０の出力値及び丸め処理器２１２によるシフト分を差し引いて桁合わせを行う。
デコーダ２１３は、符号部（Ｓ１、Ｓ２）と引算器２０２の出力値の符号と加算器２０１の出力値の符号とから符号部ＳＩＧＮを計算する。
【００３１】
以上の処理によって、第１の演算オペランドと第２の演算オペランドとの加算結果（符号部ＳＩＧＮ、指数部ＥＸＰ、仮数部ＦＲＡＣ）が求められる。また、本実施例では、デコーダ２１３、切替器２０７および変換器２０９の出力値を、それぞれ第１の符号部、第１の指数部および第１の仮数部として使用する。
【００３２】
図３は、本発明の第１の実施例に係る第２の演算器１０２及び比較回路１０３の具体的な構成例を示す図である。
なお、第２の演算器１０２には、第１の演算器１０１と同様に、第１及び第２の演算オペランドが入力されるが、仮数部は上位４ビットのみを使用する。図３の説明では、符号部Ｓ１（１ビット幅）と指数部Ｅ１（１１ビット幅）と仮数部ｆ１（４ビット幅）とで構成される第１の演算オペランドと、符号部Ｓ２（１ビット幅）と指数部Ｅ２（１１ビット幅）と仮数部ｆ２（４ビット幅）とで構成される第２の演算オペランドを入力データとする。
【００３３】
図３に示す第２の演算器１０２は、仮数部ｆ１とｆ２の和を求める加算器３０１と、指数部Ｅ１とＥ２の差を求める引算器２０２と、指数部Ｅ１とＥ２の差を絶対値に変換する変換器２０３と、その絶対値に応じて仮数部をシフトする右シフタ３０２と、指数部Ｅ１とＥ２の差の正負に応じて出力を切替える切替器２０５〜２０７と、符号部Ｓ１とＳ２の排他的論理和を求める排他的論理和演算器２０８と、加算器２０１の出力値を絶対値に変換する変換器３０３と、を備える倍精度浮動小数点加算器である。
【００３４】
第１の演算器１０１と同様に、右シフタ３０２は、引算器２０２が算出する指数部Ｅ１とＥ２の差に応じて仮数部ｆ２を右シフトする。また、引算器２０２の出力値の正負に応じて、切替器２０５及び２０６の出力を切替えて、加算器３０１及び右シフタ３０２への入力（仮数ｆ１またはｆ２）を切替える。
【００３５】
加算器３０１は、例えば、５ビット幅のデータを出力する加算器である。なお、加算器３０１は、第１の演算器と同様に、排他的論理和演算器２０８の信号に応じて、加算または引算が行われる。変換器３０３は、加算器３０１の出力値の絶対値をとって正の数に揃える。
【００３６】
デコーダ２１３は、符号部Ｓ１とＳ２と引算器２０２及び加算器２０１の出力値の符号とから第２の符号部を算出する。
以上の処理によって、第１の演算オペランドと第２の演算オペランドとの加算処理が行われ、第２の演算結果が算出される。本実施例では、デコーダ２１３、切替器２０７およ
び変換器３０３の出力値を、それぞれ第２の符号部、第２の指数部および第２の仮数部として使用する。
【００３７】
図３に示す比較回路１０３は、第１の仮数部と第２の仮数部とを比較して誤差が一定範囲内か否かを判定する略一致検出器３０４と、第１の指数部と第２の指数部とを比較して不一致を検出する不一致検出器３０５と、第１の符号部と第２の符号部とを比較して不一致を検出する不一致検出器３０６と、略一致検出器３０４、不一致検出器３０５及び３０６の出力値について論理和を求めてエラーを検出する論理和演算器３０７と、を備える。
【００３８】
第１の仮数部と第２の仮数部は、略一致検出器３０４に入力される。ここで、第２の演算結果における仮数部は、その最下位１ビット（１ＬＳＢ：Ｌｅａｓｔ  Ｓｉｇｎｉｆｉｃａｎｔ  Ｂｉｔ）分のエラーを含むことは避けられない。そのため、正しい精度で計算が行われた場合でも１ＬＳＢだけ異なる場合がある。以下、この時の誤差を「１ＬＳＢの誤差」という。
【００３９】
そこで、本実施例に係る比較回路１０３では、完全な一致検出回路ではなく、１ＬＳＢの誤差を許容する比較を行う略一致検出器３０４を使用する。なお、誤差の範囲を大きくする場合、例えば、最下位２ビット分のエラー分を許容する場合には、略一致検出器３０４の入力データを１ビット減じてＬＳＢを除く上位ビットを比較することにより２ＬＳＢの誤差を許容する比較を行うこともできる。詳しくは図５で後述する。
【００４０】
第１の仮数部と第２の仮数部は、略一致検出器３０４に入力される。略一致検出器３０４は、両仮数部の誤差が一定範囲内にあるか否かを判定する。例えば、誤差が一定範囲（１ＬＳＢの誤差の範囲）内にある場合には一致と判定し、一定範囲（１ＬＳＢの誤差の範囲）内にない場合には不一致と判定する。なお、具体的な構成例については、図６で説明する。
【００４１】
第１の指数部と第２の指数部は、不一致検出器３０５に入力される。不一致検出器３０５は、ビットごとの排他的論理和をとり，その出力にたいして論理和演算を行うことによって両指数部の一致・不一致を判定する。同様に、第１の符号部と第２の符号部は、不一致検出器３０６に入力される。そして、不一致検出器３０６は、排他的論理和演算を行うことによって両符号部の一致・不一致を判定する。
【００４２】
略一致検出器３０４、不一致検出器３０５及び３０６の出力は、論理和演算器３０７に入力される。例えば、略一致検出器３０４、不一致検出器３０５及び３０６がそれぞれ不一致を検出した場合に１を出力すると、論理和演算器３０７は、略一致検出器３０４、不一致検出器３０５及び３０６の少なくとも１つ以上が不一致を検出した場合に１を出力する。その結果、第１の演算結果と第２の演算結果との不一致、すなわち、第１の演算器１０１のエラーを検出することができる。
【００４３】
図４は、本発明の第１の実施例に係る略一致検出器３０４が行う１ＬＳＢの誤差を許容する比較を説明する図である。
図４（ａ）は、略一致検出器３０４に入力されるＡとＢとがＬＳＢ以外全く同じ場合を示している。例えば、Ａが”１１１１０”、Ｂが”１１１１１”のような場合である。Ａ及びＢの排他的論理和をとると、その演算結果Ｃは、ＬＳＢ以外が全て”０”（０の連続）となり、ＬＳＢのみ”１”となる。
【００４４】
図４（ｂ）は、略一致検出器３０４に入力されるＡとＢとが１ＬＳＢ異なる場合を示している。例えば、Ａが”１００００”、Ｂが”０１１１１”のように数値的には１ＬＳＢのみ異なる場合である。Ａ及びＢの排他的論理和をとると、その演算結果Ｃは、ＡとＢと
が一致したビット位置では”０”（０の連続）となり、一致しないビット位置では”１”（１の連続）となる。
【００４５】
図４（ａ）及び（ｂ）のいずれの場合も、排他的論理和をとった演算結果Ｃは、上位ビットから順に”０”が連続し、”１”が現われるとその後は”１”が連続するビットパターンとなっていることが分かる。すなわち、ＡとＢとが上述のビットパターンとなっていれば、ＡとＢとは１ＬＳＢ以下の違いであると判定できる。
【００４６】
なお、演算結果Ｃが全て”１”のビットパターンの場合は、ＡとＢとの誤差が１ＬＳＢ分の誤差の場合であり、演算結果Ｃが全て”０”のビットパターンの場合は、ＡとＢとが完全一致の場合であるので、ＡとＢとが１ＬＳＢ以下の違いである場合に含まれる。
【００４７】
以下、図５〜図６を用いて比較回路１０３の具体的な構成例について説明する。
図５は、本発明の第１の実施例に係る比較回路１０３の入力部の構成例を示す図である。Ａ０〜Ａｎは、ビット幅がｎである場合の第１の仮数部の各ビットを示し、Ｂ０〜Ｂｎは、ビット幅がｎである場合の第２の仮数部の各ビットを示している。なお、本実施例の場合には、ｎ＝４とすればよい。
【００４８】
比較回路１０３の入力部には、排他的論理和演算回路５００〜５０ｎを備え、Ａ０〜ＡｎとＢ０〜Ｂｎについて、それぞれ排他的論理和をとって演算結果Ｘ０〜Ｘｎを出力する。図５に示すように、比較回路１０３を１ＬＳＢの誤差を許容する比較回路とする場合には、Ａ０とＢ０、Ａ１とＢ１、・・・、ＡｎとＢｎの排他的論理和の演算結果を、それぞれＸ０、Ｘ１、・・・Ｘｎとし、比較回路１０３を２ＬＳＢの誤差を許容する比較回路とする場合には、Ａ１とＢ１、Ａ２とＢ２、・・・、ＡｎとＢｎの排他的論理和の演算結果を、それぞれＸ０、Ｘ１、・・・Ｘｎ−１とし、”０”をＸｎとする。
【００４９】
図６は、本発明の第１の実施例に係る比較回路１０３の判定部の構成例を示す図である。なお、説明を簡単にするために８ビット精度（ｎ＝７）の比較回路について説明するが、これに限定する趣旨でないのは当然である。
【００５０】
図５に示した演算結果Ｘ０とＸ１、Ｘ２とＸ３、Ｘ４とＸ５、Ｘ６とＸ７は、それぞれ論理積演算器６０１〜６０４と、論理和演算器６１１〜６１４に入力される。
論理積演算器６０１と６０２の出力Ｏ１０とＯ３２は、論理積演算器６０５に入力される。論理積演算器６０５は、出力Ｏ３０を出力する。同様に、論理積演算器６０３と６０４の出力Ｏ５４とＯ７６は、論理積演算器６０６に入力される。論理積演算器６０６は、出力Ｏ７４を出力する。
【００５１】
したがって、出力Ｏｎｍはｍビット目からｎビット目までが”１”であることを示す。
また、論理和演算器６１１と６１２の出力Ｚ１０とＺ３２は、論理積演算器６１５に入力される。論理積演算器６１５は、出力Ｚ３０を出力する。同様に、論理和演算器６１３と６１４の出力Ｚ５４とＺ７６は、論理積演算器６１６に入力される。論理積演算器６１６は、出力Ｚ７４を出力する
したがって、出力Ｚｎｍはｍビット目からｎビット目までが”０”であることを示す。そして、以上の処理から、Ｘ０〜Ｘ７における”０”の連続と”１”の連続が求められる。
【００５２】
さらに、出力Ｚ３０とＺ７４、Ｚ３２とＺ７４とＸ１、Ｏ１０とＺ７４とＸ２、Ｏ３０とＺ７６とＸ５の反転、Ｏ３０とＯ５４とＸ７の反転、Ｏ３０とＯ７４は、それぞれ論理積演算器６２１〜６２６に入力される。論理積演算器６２１〜６２６の出力は、反転器６２９〜６３４を介して論理積演算器６３５に入力される。
【００５３】
以上の構成において、例えば、（１）Ｏ３０＝Ｏ７４＝１の場合には、Ｘ０〜Ｘ７が全て１であると判定できる。また、（２）Ｘ７＝０、かつ、Ｏ５４＝Ｏ３０＝１、（３）Ｚ７６＝Ｘ５＝０、かつ、Ｏ３０＝１、（４）Ｚ７４＝０、かつ、Ｘ２＝Ｏ１０＝１、（５）Ｚ７４＝Ｚ３２＝０、かつ、Ｘ１＝１の場合には、Ｘ０〜Ｘ７が上位から所定ビットまで０が連続し続いて１が連続すると判定できる。さらに、（６）Ｚ７４＝Ｚ３０＝０の場合には、Ｘ０〜Ｘ７が全て０である（ＡとＢとが完全に一致する）と判定できる。
【００５４】
以上の（１）〜（６）の場合に、論理積演算器６３５は”１”を出力する。すなわち、ＡとＢとの誤差が１ＬＳＢより大きい場合に”１”を出力する。
その結果、比較回路１０３の出力（０または１）から、比較回路１０３に入力される第１及び第２の仮数部の誤差が１ＬＳＢの範囲である略一致か否かを判定することが可能となる。
【００５５】
（第２の実施例）
図７は、本発明の第２の実施例に係る第１の演算器１０１の具体的な構成例を示す図である。
【００５６】
図７に示す第１の演算器１０１は、仮数部Ｆ１とＦ２の積を求める乗算器７０１と、丸め処理を行う丸め処理器２１２と、指数部Ｅ１とＥ２の和から指数部を算出する加算器７０２と、符号部Ｓ１とＳ２の排他的論理和から符号部を算出する排他的論理和演算器７０３と、を備える倍精度浮動小数点乗算器である。
【００５７】
乗算器７０１は、２つの演算オペランドの仮数部（５２ビット）に最上位の”１”を復元し、５３ビット幅のデータの掛け算を行う。また、加算器７０２は、２つの演算オペランドの指数部の足し算を行う。排他的論理和演算器７０３は、２つの演算オペランドの符号部の排他的論理和を求める。
【００５８】
乗算器７０１による乗算結果は、丸め処理器２１２でＩＥＥＥ規格にしたがった丸め処理が行われる。その結果、桁上がりが発生した場合には、加算器７０４で補正が行われる。
【００５９】
以上の処理によって、第１の演算オペランドと第２の演算オペランドとの乗算結果（符号部ＳＩＧＮ、指数部ＥＸＰ、仮数部ＦＲＡＣ）が求められる。また、本実施例では、排他的論理和演算器７０３、加算器７０２および乗算器７０１の出力値を、それぞれ第１の符号部、第１の指数部および第１の仮数部として使用する。
【００６０】
図８は、本発明の第２の実施例に係る第２の演算器１０２及び比較回路１０３の具体的な構成例を示す図である。
なお、第１の実施例と同様に、第２の演算器１０２には、第１及び第２の演算オペランドが入力されるが、仮数部は上位４ビットのみを使用する。図８の説明では、符号部Ｓ１（１ビット幅）と指数部Ｅ１（１１ビット幅）と仮数部ｆ１（４ビット幅）とで構成される第１の演算オペランドと、符号部Ｓ２（１ビット幅）と指数部Ｅ２（１１ビット幅）と仮数部ｆ２（４ビット幅）とで構成される第２の演算オペランドを入力データとする。
【００６１】
図８に示す第２の演算器１０２は、仮数部ｆ１とｆ２の積を求める乗算器８０１と、指数部Ｅ１とＥ２の和から第２の指数部を算出する加算器７０２と、符号部Ｓ１とＳ２の排他的論理和から第１の符号部を算出する排他的論理和演算器８０４と、を備える倍精度浮動小数点乗算器である。
【００６２】
乗算器８０１は、例えば、４＋１（第２の仮数部のビット幅＋１）ビットの掛け算を行う乗算器である。乗算器８０１は、２つの演算オペランドの仮数部（４ビット）に最上位の”１”を復元し、５ビット幅のデータの掛け算を行う。
【００６３】
加算器７０２は、２つの演算オペランドの指数部と（−１０２３）の足し算を行う。排他的論理和演算器８０４は、２つの演算オペランドの符号部と第１の符号部との排他的論理和を求める。
【００６４】
以上の処理によって、第１の演算オペランドと第２の演算オペランドとの乗算処理が行われ、第２の演算結果が算出される。本実施例では、排他的論理和演算器８０４、加算器７０２および乗算器８０１の出力値を、それぞれ第２の符号部、第２の指数部および第２の仮数部として使用する。
【００６５】
図８に示す比較回路１０３は、第１の仮数部と第２の仮数部とを比較して誤差が一定範囲（２ＬＳＢの誤差の範囲）内か否かを判定する略一致検出器８０２と、第１の指数部と第２の指数部とを比較して不一致を検出する不一致検出器８０３と、第１の符号部と第２の符号部とを比較して不一致を検出する不一致検出器８０４と、略一致検出器８０２、不一致検出器８０３及び８０４の出力結果について論理和を求めてエラーを検出する論理和演算器８０５と、を備える。なお、第２の演算器１０２で使用する排他的論理和演算器８０４は、比較回路１０３で使用する不一致検出器８０４と共有しているが、別々に構成してもよい。
【００６６】
第１の仮数部と第２の仮数部は、略一致検出器８０２に入力される。略一致検出器８０２は、第１の仮数部と第２の仮数部との誤差が一定範囲（２ＬＳＢの誤差の範囲）内にあるか否かを判定する。
【００６７】
ここで、例えば、第１の演算オペランドａと第２の演算オペランドｂとにそれぞれ誤差（Δa、Δｂ）が含まれる場合の乗算は、下記の式を計算することになる。
ａ＊（１−Δａ）＊ｂ＊（１−Δｂ）  ＝  ａ＊ｂ＊（１−Δａ−Δｂ＋Δａ＊Δｂ）
今、第１及び第２の仮数部が４ビットであるとすると、Δａ、Δｂは１／３２より小さい値となる。しかし、乗算結果の誤差（Δａ＋Δｂ−Δａ＊Δｂ）は、１／１６より小さい値となるが加算結果の誤差のように１／３２より小さい値とならない。そこで、本実施例に係る略一致検出器８０２では、２ＬＳＢの誤差を許容する比較を行う略一致検出器を使用する。なお、具体的な構成例は、図５及び図６で説明したので省略する。
【００６８】
第１の指数部と第２の指数部は、不一致検出器８０３に入力される。不一致検出器８０３は、ビットごとに排他的論理和をとり，それらに対して論理和演算を行うことによって両指数部の一致・不一致を判定する。第１の符号部と第１及び第２の演算オペランドの符号部Ｓ１、Ｓ２は、排他的論理和演算器８０４に入力され、排他的論理和が求められる。
【００６９】
論理和演算器８０５は、略一致検出器８０２、不一致検出器８０３及び８０４の論理和をとる。したがって、例えば、略一致検出器８０２、不一致検出器８０３及び８０４がそれぞれ不一致を検出した場合に１を出力すると、論理和演算器３０７は、略一致検出器３０４、不一致検出器３０５及び３０６の少なくとも１つ以上が不一致を検出した場合に１を出力する。その結果、第１の演算結果と第２の演算結果との不一致、すなわち、第１の演算器１０１のエラーを検出することができる。
【００７０】
第一の演算器と第二の演算器で符号と指数の計算回路は同じ規模の回路を二組必要とするが，次に述べるように，第二の演算器の仮数部の回路量は大幅に少なくなる。
一般に、加算器やシフタの回路量は、ビット幅をＮとすると、およそ
【００７１】
【数１】
2008158822.tif 000003
【００７２】
に比例する。したがって、例えば、５２ビットの加算器２０１や右シフタ２０４と比べて、５ビットの加算器３０１や右シフタ３０２に必要な回路量は約１／２０である。
したがって、第１の実施例においては、仮数部が５２ビットの場合は、浮動小数点演算回路１００全体の１０％以下の回路量で第２の演算器１０２及び比較回路１０３を実現することができる。
【００７３】
また、乗算器の回路量はおよそＮの２乗に比例する。したがって、例えば、５３ビットの乗算器７０１に比べて、５ビットの乗算器８０１は１／１００程度の回路量で実現することができる。
【００７４】
したがって、第２の実施例においては、浮動小数点演算回路１００全体の２〜３％の回路量で第２の演算器１０２及び比較回路１０３を実現することができる。
なお、仮数部は省略された１．０を補うと１．０以上２．０未満である。そこで、仮数部の値を１．０とみなして第１及び第２の符号部と第１及び第２の指数部についてのみ比較を行うようにすれば、エラーを検出する精度は低下するが、例えば、加算器３０１や乗算器８０１が不要となるため必要となるハードウェアを更に減少させることができる。
【００７５】
図９は、本実施例を反復集束計算に適応した場合の例を説明する図である。
図９に示すグラフは、２次方程式：Ｙ＝Ｘ＊Ｘ−３＊Ｘ＋２のグラフである。以下、反復収束計算であるＮｅｗｔｏｎ  Ｌａｐｓｏｎ法を用いてこの２次元方程式の解を求める場合について説明する。
【００７６】
２次方程式Ｙ（Ｘ）＝Ｘ＊Ｘ−３＊Ｘ＋２は、Ｘ＝１とＸ＝２でＹ＝０となるが、これをＸ＝０からスタートしてＸ＝１の解を求めることを考える。
ｄＹ／ｄＸ＝２＊Ｘ−３であるので、Ｘ＝０におけるＹの傾きＹ’（０）＝−３、Ｙ（０）＝２となる。この時、Ｘ＝Ｘ−Ｙ（０）／Ｙ’（０）から次のＸの値を求めるとＸ＝２／３となる。同様に、Ｘ＝２／３における傾きＹ’（２／３）＝−５／３、Ｙ（２／３）＝４／９となる。次のＸの値はＸ＝１４／１５となるので、同様に、Ｙ’（１４／１５）＝−１７／１５、Ｙ（１４／１５）＝１６／２２５となる。その次のＸの値はＸ＝２５４／２５５となる。この時、正しい解Ｘ＝１との誤差は、０．４％程度に減少する。
【００７７】
以上の計算から明らかなように、ＹやＹ’またはＸの補正量の計算に計算エラーが生じて次のＸに誤差が生じたとしても、Ｘが１．５未満に留まる限り反復を繰返すとＸ＝１．０に収束することになる。
【００７８】
なお、計算エラーで誤差が生じて解の値から遠ざかってしまうと反復回数が増加し計算時間が余計かかることになるが、上述した中性子などによるエラーの発生頻度は低いので全体の計算時間に与える影響は無視できる程度である。
【００７９】
一方、計算エラーによる誤差が大きく、Ｘが１．５より大きくなってしまうと以降の反復でＸの値は２．０に収束することになる。これもＸ＊Ｘ−３＊Ｘ＋２＝０の解であるので、この２次方程式の解としては正しいが、実際の反復収束計算では、中間での計算誤差が大きいと、意図しない点に収束してしまったり、高次のカーブでは収束点が見つからず発散してしまう場合がある。
【００８０】
例えば、スーパーコンピュータ等の主要な用途となるナノやバイオ分野で用いられる第一原理計算では、各電子間の反発力を計算し、それを合計して各原子に働く力を計算し、それにより原子の位置を動かし、また、各原子に働く力を計算する、という反復により、系全体のエネルギーが最小に収束するように計算を行う。
【００８１】
各原子に働く力は、他の原子全ての電子からの和であるので、一つの電子から受ける力の計算において、ハードウェアの間欠エラーが原因である程度の誤差が生じたとしても、数千、数万の電子の一つであるので、その影響は軽減される。
【００８２】
このように、一般的な計算では、個々の計算において桁が大きく異なるようなエラーが発生しなければ、値として小さなエラーの影響は反復収束過程で自動的に修正されてしまうケースが多い。
【００８３】
したがって、本実施例に係る浮動小数点演算回路１００を用いて桁違いに大きな誤差となるエラーを検出して再実行を行うことによって、アルファ線や宇宙線起因の中性子の衝突等の固定障害でない障害に起因して発生する間欠エラーを訂正することが可能となる。
【００８４】
図１０は、本発明の実施例に係る浮動小数点演算回路１００の再実行に必要となる構成の例を示す図である。なお、ハードウェアエラーが検出された場合の再実行に関しては、以下の文献に詳細が記載されているので、概要について説明する。
【００８５】
１．Ｈ．Ａｎｄｏ，Ｔ．Ｋｉｔａｍｕｒａ，Ｍ．Ｓｈｅｂａｎｏｗ，Ｍ．Ｂｕｔｌｅｒ，ＵＳ  Ｐａｔｅｎｔ  ６，５１９，７３０，”Ｃｏｍｐｕｔｅｒ  ａｎｄ  ｅｒｒｏｒ
ｒｅｃｏｖｅｒｙ  ｍｅｔｈｏｄ  ｆｏｒ  ｔｈｅ  ｓａｍｅ”
２．Ｈ．Ａｎｄｏ，Ｙ．Ｙｏｓｈｉｄａ，Ａ．Ｉｎｏｕｅ，Ｉ．Ｓｕｇｉｙａｍａ，Ｔ．Ａｓａｋａｗａ，Ｋ．Ｍｏｒｉｔａ，Ｔ．Ｍｕｔａ，Ｔ．Ｍｏｔｏｋｕｒｕｍａｄａ，Ｓ．Ｏｋａｄａ，Ｈ．Ｙａｍａｓｈｉｔａ，Ｙ．Ｓａｔｓｕｋａｗａ，Ａ．Ｋｏｎｍｏｔｏ，Ｒ．Ｙａｍａｓｈｉｔａ，Ｈ．Ｓｕｇｉｙａｍａ，”Ａ  １．３−ＧＨｚ  ｆｉｆｔｈ−ｇｅｎｅｒａｔｉｏｎ  ＳＰＡＲＣ６４  ｍｉｃｒｏｐｒｏｃｅｓｓｏｒ”，Ｓｏｌｉｄ−Ｓｔａｔｅ  Ｃｉｒｃｕｉｔｓ，ＩＥＥＥ  Ｊｏｕｒｎａｌ，Ｖｌｕｍｅ３８，１１．１１．２００３，１８９６−１９０５
図１０に示す浮動小数点演算回路１０００は、演算回路の実行に必要な状態を保持するプロセッサ・ステイト１００１と、正しく演算が実行された時の状態を格納するチェックポイント・アレイ１００２と、最後に正しく実行を完結した状態を格納しているエントリを指すコミット・ポインタ１００３と、直前の状態を格納するエントリを指すカレント・ポインタ１００４と、誤作動等が起こった場合にコミット・ポインタで指された状態をチェックポイント・アレイ１００２から取り出し、プロセッサ・ステイト１００１に格納することにより、その状態から実行を再開させる制御を行うバックアップ・コントロール１００５と、分岐命令を取り扱うブランチ・ユニット１００６と、各ユニットの誤作動を監視するエラー検出ユニット１００７と、各ユニットを制御するコントロール・ユニット１００８と、第１の演算器１０１で構成された演算実行ユニット１００９と、第２の演算器１０２及び比較回路１０３で構成することにより演算実行ユニット１００９の演算結果の正誤を監視するエラーチェックユニット１０１０と、を少なくとも備える。
【００８６】
分岐先が決定する前に、方向を予測して投機的に実行を行うには、その分岐命令の実行直前の状態（プロセッサ・ステイト１００１の内容）をカレント・ポインタ１００４が指すチェックポイント・アレイ１００２のエントリに格納する。そして、予測した分岐先の命令実行を開始する。そして、ブランチ・ユニット１００６は、カレント・ポインタ１００４を一つ進める。また、命令の実行完結を監視し、コミット・ポインタ１００３の指す
エントリの次のエントリまで実行が完結すると、コミット・ポインタ１００３を一つ進め、常に最後の実行命令の完結状態を指すように制御する。
【００８７】
分岐予測ミスが発見された場合は，条件分岐命令の直前のチェックポイントをチェックポイント・アレイ１００２から取り出してプロセッサ・ステイトを復元してチェックポイント直後の命令から実行を再開することにより，分岐予測の誤りを修正する。
【００８８】
第１及び第２の実施例で示した処理によって、エラー検出ユニット１００７がエラーを検出すると、エラー検出ユニット１００７は、バックアップ・コントロール１００５に誤動作を通知する。
【００８９】
誤作動の通知を受けると、バックアップ・コントロール１００５は、コミット・ポインタ１００３で指される正しく実行を完結した状態を取り出し、プロセッサ・ステイト１００１に復元する。そして、この状態から実行が再開される（再実行される）。その結果、中性子の衝突などに起因する間欠エラーを訂正することができる。この手順は，分岐予測誤りの修正と同様の手順であり，分岐予測ミスのために存在する回路を有効に利用することが出来る。
【００９０】
以上に説明したように、第１の演算器１０１に短い精度（例えば、４ビット）の第２の演算器１０２と比較回路１０３とをエラーチェック用に追加し、第１の演算結果と第２の演算結果とが一定の誤差（例えば、１ＬＳＢの誤差）を許容する比較を行うことにより大きな数値誤差となるエラーを効率的に検出することが可能となる。さらに、検出したエラーは上述した再実行の機構を用いて訂正を行うことが可能となる。
【００９１】
また、本実施例に係る第２の仮数部は４ビット幅であるので、第２の演算器１０２及び比較回路１０３は、浮動小数点演算器の場合にあっては、浮動小数点演算回路１００全体の２〜３％程度の回路量、浮動小数点加算器の場合でも浮動小数点演算回路１００全体の１０％以下の回路量で実現することが可能となる。すなわち、従来の手法に比べてエラー検出に必要となる回路量を低減することが可能となる。
【００９２】
また、演算結果の数値が何桁も異なるような、パリティチェックや剰余チェックにより浮動小数点演算器の主要部分のエラーを検出する従来の方法では検出できない間欠エラーであっても、本発明の方法では、第２の仮数部の精度より大きな誤差を確実に検出することが可能となる。
【００９３】
また、反復集束計算を行う場合には、許容される数値誤差以下のエラーはその反復収束計算の過程で訂正されるので、従来のエラー検出法に比べて少ない追加回路でエラー訂正回路を実現でき、かつ、計算が収束しない、または、異常を検出せずに終了して計算結果にエラーが生じ等の問題が発生する確率を大幅に低減することが可能となる。
【００９４】
（付記１）  浮動小数点形式で表現された演算オペランドを入力し、該浮動小数点形式における仮数部に第１のデータ幅を有する第１の演算結果を出力する第１の演算器と、
前記演算オペランドを入力し、前記浮動小数点形式における仮数部に前記第１のデータ幅よりも小さい第２のデータ幅を有する第２の演算結果を出力する第２の演算器と、
前記第１の演算結果と前記第２の演算結果の仮数部について、それぞれの所定ビットから前記第２のデータ幅について比較を行う比較回路とを有することを特徴とする浮動小数点演算回路。
（付記２）  前記比較回路は、
前記第１の演算結果と前記第２の演算結果の仮数部について、最上位ビットから前記第２のデータ幅についてビット毎に排他的論理和演算を行なう排他的論理和演算回路と、
該排他的論理和演算の演算結果について、所定のビットパターンであるか否かを判定し、該所定のビットパターンの場合に一致の比較結果を出力する仮数部比較回路と、を有し、
該仮数部比較回路が一致の比較結果を出力した場合に、前記第１の演算結果と前記第２の演算結果とが一致すると判断することを特徴とする付記１記載の浮動小数点演算回路。（付記３）  前記所定のビットパターンは、
全てのビットが１のビットパターン、全てのビットが０のビットパターン、または、最上位ビットから任意のビットまで０が連続し該任意のビットの次のビットから所定のビットまで１が連続するビットパターンのいずれかであることを特徴とする付記２記載の浮動小数点演算回路。
（付記４）  前記第１の演算結果と前記第２の演算結果について、それぞれの符号を比較し、該比較の結果が一致する場合に一致の比較結果を出力する符号比較回路をさらに有し、
前記仮数部比較回路と前記符号比較回路とが一致の比較結果を出力した場合に、前記第１の演算結果と前記第２の演算結果とが一致すると判断することを特徴とする付記２記載の浮動小数点演算回路。
（付記５）  前記第１の演算結果と前記第２の演算結果について、それぞれの指数部を比較し、該比較の結果が一致する場合に一致の比較結果を出力する指数部比較回路をさらに有し、
前記仮数部比較回路と前記指数部比較回路とが一致の比較結果を出力した場合に、前記第１の演算結果と前記第２の演算結果とが一致すると判断することを特徴とする付記２記載の浮動小数点演算回路。
（付記６）  前記比較回路の比較の結果に応じて前記第１の演算回路に対して演算を再実行させる再実行回路をさらに有することを特徴とする付記１記載の浮動小数点演算回路。（付記７）  浮動小数点形式で表現された演算オペランドを入力し、該浮動小数点形式における仮数部に第１のデータ幅を有する第１の演算結果を出力する第１の演算器に接続され、前記第１の演算結果の検査を行う演算検査回路において、
前記演算オペランドを入力し、前記浮動小数点形式における仮数部に前記第１のデータ幅よりも小さい第２のデータ幅を有する第２の演算結果を出力する第２の演算器と、
前記第１の演算結果と前記第２の演算結果の仮数部について、それぞれの所定ビットから前記第２のデータ幅について比較を行う比較回路とを有することを特徴とする演算検査回路。
（付記８）  前記比較回路は、
前記第１の演算結果と前記第２の演算結果の仮数部について、最上位ビットから前記第２のデータ幅についてビット毎に排他的論理和演算を行なう排他的論理和演算回路と、
該排他的論理和演算の演算結果について、所定のビットパターンであるか否かを判定し、該所定のビットパターンの場合に一致の比較結果を出力する仮数部比較回路と、を有し、
該仮数部比較回路が一致の比較結果を出力した場合に、前記第１の演算結果と前記第２の演算結果とが一致すると判断することを特徴とする付記７記載の演算検査回路。
（付記９）  前記所定のビットパターンは、
全てのビットが１のビットパターン、全てのビットが０のビットパターン、または、最上位ビットから任意のビットまで０が連続し該任意のビットの次のビットから所定のビットまで１が連続するビットパターンのいずれかであることを特徴とする付記８記載の演算検査回路。
（付記１０）  前記第１の演算結果と前記第２の演算結果について、それぞれの符号を比較し、該比較の結果が一致する場合に一致の比較結果を出力する符号比較回路をさらに有し、
前記仮数部比較回路と前記符号比較回路とが一致の比較結果を出力した場合に、前記第１の演算結果と前記第２の演算結果とが一致すると判断することを特徴とする付記８記載
の演算検査回路。
（付記１１）  前記第１の演算結果と前記第２の演算結果について、それぞれの指数部を比較し、該比較の結果が一致する場合に一致の比較結果を出力する指数部比較回路をさらに有し、
前記仮数部比較回路と前記指数部比較回路とが一致の比較結果を出力した場合に、前記第１の演算結果と前記第２の演算結果とが一致すると判断することを特徴とする付記８記載の演算検査回路。
（付記１２）  前記比較回路の比較の結果に応じて前記第１の演算回路に対して演算を再実行させる再実行回路をさらに有することを特徴とする付記７記載の演算検査回路。
（付記１３）  浮動小数点形式で表現された演算オペランドを入力し、該浮動小数点形式における仮数部に第１のデータ幅を有する第１の演算結果を出力する第１の演算回路と、
前記演算オペランドを入力し、前記浮動小数点形式における仮数部に前記第１のデータ幅よりも小さい第２のデータ幅を有する第２の演算結果を出力する第２の演算回路と、
前記第１の演算結果と前記第２の演算結果の仮数部について、それぞれの所定ビットから前記第２のデータ幅について比較を行う比較回路とを有することを特徴とする情報処理装置。
（付記１４）  前記比較回路は、
前記第１の演算結果と前記第２の演算結果の仮数部について、最上位ビットから前記第２のデータ幅についてビット毎に排他的論理和演算を行なう排他的論理和演算回路と、
該排他的論理和演算の演算結果について、所定のビットパターンであるか否かを判定し、該所定のビットパターンの場合に一致の比較結果を出力する仮数部比較回路と、を有し、
該仮数部比較回路が一致の比較結果を出力した場合に、前記第１の演算結果と前記第２の演算結果とが一致すると判断することを特徴とする付記１３記載の情報処理装置。
（付記１５）  前記所定のビットパターンは、
全てのビットが１のビットパターン、全てのビットが０のビットパターン、または、最上位ビットから任意のビットまで０が連続し該任意のビットの次のビットから所定のビットまで１が連続するビットパターンのいずれかであることを特徴とする付記１４記載の情報処理装置。
（付記１６）  前記第１の演算結果と前記第２の演算結果について、それぞれの符号を比較し、該比較の結果が一致する場合に一致の比較結果を出力する符号比較回路をさらに有し、
前記仮数部比較回路と前記符号比較回路とが一致の比較結果を出力した場合に、前記第１の演算結果と前記第２の演算結果とが一致すると判断することを特徴とする付記１４記載の情報処理装置。
（付記１７）  前記第１の演算結果と前記第２の演算結果について、それぞれの指数部を比較し、該比較の結果が一致する場合に一致の比較結果を出力する指数部比較回路をさらに有し、
前記仮数部比較回路と前記指数部比較回路とが一致の比較結果を出力した場合に、前記第１の演算結果と前記第２の演算結果とが一致すると判断することを特徴とする付記１４記載の情報処理装置。
（付記１８）  前記比較回路の比較の結果に応じて前記第１の演算回路による演算を再実行する再実行回路をさらに有することを特徴とする付記１３記載の情報処理装置。
（付記１９）  第１の演算器が出力する第１の演算結果を、第２の演算器が出力する第２の演算結果を用いて検査を行う演算回路の演算方法であって、
浮動小数点形式で表現された演算オペランドを入力し、該浮動小数点形式における仮数部に第１のデータ幅を有する第１の演算結果を出力するステップと、
前記演算オペランドを入力し、前記浮動小数点形式における仮数部に前記第１のデータ幅よりも小さい第２のデータ幅を有する第２の演算結果を出力するステップと、
前記第１の演算結果と前記第２の演算結果の仮数部について、それぞれの所定ビットか
ら前記第２のデータ幅について比較を行うステップとを有することを特徴とする浮動小数点演算方法。
（付記２０）  浮動小数点形式で表現された演算オペランドを入力し、浮動小数点形式における仮数部に第１のデータ幅を有する第１の演算結果を出力する第１の演算器に接続され、前記第１の演算結果の検査を行う演算検査回路の検査方法であって、
前記演算オペランドを入力し、前記浮動小数点形式における仮数部に前記第１のデータ幅よりも小さい第２のデータ幅を有する第２の演算結果を出力するステップと、
前記第１の演算結果と前記第２の演算結果の仮数部について、それぞれの所定ビットから前記第２のデータ幅について比較を行うステップとを有することを特徴とする演算検査方法。
【図面の簡単な説明】
【００９５】
【図１】本発明の実施例に係る浮動小数点演算回路の概要を説明する図である。
【図２】本発明の第１の実施例に係る第１の演算器の具体的な構成例を示す図である。
【図３】本発明の第１の実施例に係る第２の演算器及び比較回路の具体的な構成例を示す図である。
【図４】本発明の第１の実施例に係る略一致検出器が行う１ＬＳＢの誤差を許容する比較を説明する図である。
【図５】本発明の第１の実施例に係る比較回路の入力部の構成例を示す図である。
【図６】本発明の第１の実施例に係る比較回路の入力部の構成例を示す図である。
【図７】本発明の第２の実施例に係る第１の演算器の具体的な構成例を示す図である。
【図８】本発明の第２の実施例に係る第２の演算器及び比較回路の具体的な構成例を示す図である。
【図９】本実施例を反復集束計算に適応した場合の例を説明する図である。
【図１０】本発明の実施例に係る浮動小数点演算回路の再実行に必要となる構成の例を示す図である。
【符号の説明】
【００９６】
１００      浮動小数点演算回路
１０１      第１の演算器
１０２      第２の演算器
１０３      比較回路
【図１】
2008158822.tif 000004
【図２】
2008158822.tif 000005
【図３】
2008158822.tif 000006
【図４】
2008158822.tif 000007
【図５】
2008158822.tif 000008
【図６】
2008158822.tif 000009
【図７】
2008158822.tif 000010
【図８】
2008158822.tif 000011
【図９】
2008158822.tif 000012
【図１０】
2008158822.tif 000013