(57)【特許請求の範囲】
【請求項１】
演算対象の１つ又は複数個のオペランドの入力を受け付けて定められた演算を実行し、演算結果を出力する演算回路において、
浮動小数点演算を実行する浮動小数点演算部と、
固定小数点演算を実行する固定小数点演算部を備え、
前記演算対象のオペランドに対して、前記浮動小数点演算部と前記固定小数点演算部との双方により予め定められた同一の演算を実行し、前記浮動小数点演算部と前記固定小数点演算部とのそれぞれによる演算結果を比較して、各前記演算結果が不一致の場合には異常検出を通知する信号を出力することを特徴とする演算回路。
【請求項２】
前記演算対象のオペランドを２種類の数値とし、
前記浮動小数点演算部と前記固定小数点演算部との双方により実行する前記演算を、前記２種類の数値による加減算とすることを特徴とする請求項１に記載の演算回路。
【請求項３】
前記浮動小数点演算部と前記固定小数点演算部との双方により同一のオペランドにより行われた演算が、同符号の数値の加算処理及び異符号の数値の減算処理である場合に限り、前記浮動小数点演算部及び前記固定小数点演算部のそれぞれの演算結果を比較して、各前記演算結果が不一致の場合には異常検出を通知する信号を出力することを特徴とする請求項２に記載の演算回路。
【請求項４】
前記演算対象のオペランドに対して、前記浮動小数点演算部と前記固定小数点演算部との双方が、前記予め定められた同一の演算を並列処理するベクトル演算を実行することを特徴とする請求項１から請求項３のいずれか一つに記載の演算回路。
【請求項５】
演算対象の１つ又は複数個のオペランドの入力を受け付けて定められた演算を実行し演算結果を出力する演算回路の、前記演算結果の不正を検出するエラー検出方法において、
前記演算回路は、浮動小数点演算を実行する浮動小数点演算部と、固定小数点演算を実行する固定小数点演算部を備え、
前記演算対象のオペランドに対して、前記浮動小数点演算部と前記固定小数点演算部との双方により予め定められた同一の演算を実行し、前記浮動小数点演算部と前記固定小数点演算部とのそれぞれによる演算結果を比較して、各前記演算結果が不一致の場合には異常検出を通知する信号を出力することを特徴とするエラー検出方法。
【請求項６】
前記演算対象のオペランドを２種類の数値とし、
前記浮動小数点演算部と前記固定小数点演算部との双方により実行する前記演算を、前記２種類の数値による加減演算とすることを特徴とする請求項５に記載のエラー検出方法。
【請求項７】
前記浮動小数点演算部と前記固定小数点演算部との双方により同一のオペランドにより行われた演算が、同符号の数値の加算処理及び異符号の数値の減算処理である場合に限り、前記浮動小数点演算部及び前記固定小数点演算部のそれぞれの演算結果を比較して、各前記演算結果が不一致の場合には異常検出を通知する信号を出力することを特徴とする請求項６に記載のエラー検出方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、演算回路による演算結果のエラー検出に関し、特に、同一の演算を並行して多重に（又、２重に）実行し各演算結果が一致するかどうかを比較することにより演算結果のエラーを検出する演算回路とそのエラー検出方法に関する。
【０００２】
【従来の技術】
従来では、演算回路の演算結果のエラーを検出するためには、検査対象の演算回路に対してエラー検出のためのエラー検出の回路や装置を取り付けることにより、エラーの検出を行る。この従来の演算回路のエラー検出方法においては、具体的には例えば、演算対象データにパリティを付加し、演算機能におけるパリティ予測を行ない、その演算結果パリティと比較する等の方法によりエラーの検出を行っている。
【０００３】
【発明が解決しようとする課題】
上述したように従来の演算回路による演算結果のエラー検出では、以下に述べるような問題点があった。
【０００４】
近年ＬＳＩは、更なる高集積、高速化が要求されており、従来のエラー検出機能を備えるハードウェアを用いる方法では、検査対象の演算回路から外部のエラー検出回路等への分配遅延が増加することとなり、演算回路に要求される高い処理性能の達成に対して大きな障害となっている。
【０００５】
本発明の目的は、上記従来技術の欠点を解決し、従来の演算回路の設計を大きく変更することなく、演算結果のエラー検出のための機能を内蔵し、正確なエラー検出と高速な演算を実現する演算回路とそのエラー検出方法を提供することである。
【０００６】
【課題を解決するための手段】
上記目的を達成するため本発明の演算回路は、演算対象の１つ又は複数個のオペランドの入力を受け付けて定められた演算を実行し、演算結果を出力する演算回路において、浮動小数点演算を実行する浮動小数点演算部と、固定小数点演算を実行する固定小数点演算部を備え、前記演算対象のオペランドに対して、前記浮動小数点演算部と前記固定小数点演算部との双方により予め定められた同一の演算を実行し、前記浮動小数点演算部と前記固定小数点演算部とのそれぞれによる演算結果を比較して、各前記演算結果が不一致の場合には異常検出を通知する信号を出力することを特徴とする。
【０００７】
請求項２の本発明の演算回路は、前記演算対象のオペランドを２種類の数値とし、前記浮動小数点演算部と前記固定小数点演算部との双方により実行する前記演算を、前記２種類の数値による加減算とすることを特徴とする。
【０００８】
請求項３の本発明の演算回路は、前記浮動小数点演算部と前記固定小数点演算部との双方により同一のオペランドにより行われた演算が、同符号の数値の加算処理及び異符号の数値の減算処理である場合に限り、前記浮動小数点演算部及び前記固定小数点演算部のそれぞれの演算結果を比較して、各前記演算結果が不一致の場合には異常検出を通知する信号を出力することを特徴とする。
【０００９】
請求項４の本発明の演算回路は、前記演算対象のオペランドに対して、前記浮動小数点演算部と前記固定小数点演算部との双方が、前記予め定められた同一の演算を並列処理するベクトル演算を実行することを特徴とする。
【００１０】
請求項５の本発明のエラー検出方法は、演算対象の１つ又は複数個のオペランドの入力を受け付けて定められた演算を実行し演算結果を出力する演算回路の、前記演算結果の不正を検出するエラー検出方法において、前記演算回路は、浮動小数点演算を実行する浮動小数点演算部と、固定小数点演算を実行する固定小数点演算部を備え、前記演算対象のオペランドに対して、前記浮動小数点演算部と前記固定小数点演算部との双方により予め定められた同一の演算を実行し、前記浮動小数点演算部と前記固定小数点演算部とのそれぞれによる演算結果を比較して、各前記演算結果が不一致の場合には異常検出を通知する信号を出力することを特徴とする。
【００１１】
請求項６の本発明のエラー検出方法は、前記演算対象のオペランドを２種類の数値とし、前記浮動小数点演算部と前記固定小数点演算部との双方により実行する前記演算を、前記２種類の数値による加減演算とすることを特徴とする。
【００１２】
請求項７の本発明のエラー検出方法は、前記浮動小数点演算部と前記固定小数点演算部との双方により同一のオペランドにより行われた演算が、同符号の数値の加算処理及び異符号の数値の減算処理である場合に限り、前記浮動小数点演算部及び前記固定小数点演算部のそれぞれの演算結果を比較して、各前記演算結果が不一致の場合には異常検出を通知する信号を出力することを特徴とする。
【００１３】
【発明の実施の形態】
以下、本発明の実施の形態について図面を参照して詳細に説明する。
【００１４】
図１は、本発明の第１の実施の形態による演算回路１００の構成を示すブロック図である。
【００１５】
本実施の形態の演算回路１００は、図１に示されるように、浮動小数点演算を行なう浮動小数点演算部１０と、固定小数点演算を行なう固定小数点演算部２０とを備える。
【００１６】
本実施の形態の演算回路１００は、指定された演算を、浮動小数点演算部１０と固定小数点演算部２０との双方により実行し、そして不一致検索部４０は、浮動小数点演算部１０と固定小数点演算部２０とのそれぞれによる演算結果を比較して、各演算結果が不一致の場合には異常検出を通知する信号を出力する。選択部３０は、浮動小数点演算部１０と固定小数点演算部２０とのそれぞれによる演算結果のいずれか一方を選択して、この演算回路１００による演算結果として出力する。
【００１７】
また、全ての演算をこの浮動小数点演算部１０と固定小数点演算部２０との双方により実行するのではなく、指定された演算のみを浮動小数点演算部１０と固定小数点演算部２０との双方により実行し、不一致検索部４０は、この浮動小数点演算部１０と固定小数点演算部２０とにおいて同一の演算が実行された場合に限り、その双方による演算結果の比較を行なうものとしてもよい。
【００１８】
更に、不一致検索部４０は、この浮動小数点演算部１０と固定小数点演算部２０の双方により同一の演算が実行された場合であって、かつ“真の加算処理”等の予め指定した種類の演算が実行された場合に限り、その双方の演算部による演算結果の比較を行なうものとしてもよい。
【００１９】
以下本明細書においては、“真の加算処理”とは、２つの数値（オペランド）の加減演算における、同符号の数値の加算処理及び異符号の数値の減算処理を意味するものとする。つまり、真の加算処理は、数値の絶対値が増加する加減演算である。これは、真の加算処理ではない加減演算（つまり、異符号の加算処理と同符号の減算処理）においては、オペランドの有効桁数が大きく減少する場合（オペランドの絶対値がほぼ等しい場合）があるため、演算結果の不一致の比較対象から除外するのである。
【００２０】
なお、図１の演算回路１００においては、オペランドＡとオペランドＢの２つのオペランドを用いる二項演算を行なう場合を例に示しているが、本発明の演算回路が実行する演算は二項演算に限る必要はなく、そのオペランドの数も２種類に限定する必要はない。
【００２１】
以下に述べる本発明の実施例においては、演算回路１００内の浮動小数点演算部１０と固定小数点演算部２０を、オペランドＡとオペランドＢの加減演算を行なう回路とし、この双方の演算部１０、２０が真の加算処理である同一の演算を行なう場合に限り、不一致検索部４０が演算結果のエラー検出を行なう方式を例に、本発明を説明する。
【００２２】
図１を参照すると、本実施例の演算回路１００は、浮動小数点演算部１０と固定小数点演算部２０を備える。
【００２３】
２つのオペランドＡ、Ｂを示す信号は、浮動小数点演算部１０と固定小数点演算部２０に入力される。浮動小数点演算部１０は、浮動小数点加算処理順に、桁あわせ処理を行なう前処理部１１、演算器１２、正規化処理を行なう後処理部１３を備えており、２つのオペランドＡ、Ｂの入力を受けて浮動小数点演算（本実施例では加減算）を実行する。浮動小数点演算部１０における、前処理部１１の浮動小数点加算処理における桁あわせ処理の詳細、及び演算器１２の浮動小数点加算処理における絶対値演算処理の詳細は、当業者によく知られているため、その詳細な説明は省略する。
【００２４】
固定小数点演算部２０は、減算処理であれば減算のための２の補数を行なう前処理部２１と、前処理済みデータを固定小数点加算する演算器２２を備えており、２つのオペランドＡ、Ｂの入力を受けて固定小数点演算（本実施例では加減算）を実行する。
【００２５】
浮動小数点演算部１０と固定小数点演算部２０のそれぞれの演算結果は、選択部３０と不一致検出部４０とのそれぞれに出力される。そして、選択部３０は、演算結果を受け付けて処理命令に従いどちらか一方を選択し、本実施例の演算回路１００による演算結果として出力する。
【００２６】
一方、不一致検出部４０は、浮動小数点演算部１０と固定小数点演算部２０のそれぞれの演算結果を比較して、不一致であるかどうかを調べることによりエラー検出を行なう。ただし、本実施例においては、不一致検出部４０によるエラー検出の処理は、双方の演算部１０、２０が真の加算処理である同一の演算を行なう場合に限り行なう。
【００２７】
この条件を満たすかどうかを判断するためには、例えば、不一致検出部４０が、浮動小数点演算部１０と固定小数点演算部２０により演算された２つのオペランドの値が等しいことと、それぞれの演算器１２により同一の真の加算処理（同符号の加算処理、又は異符号の減算処理）が行われたことを検出する等の方法により判断することができる。
【００２８】
そして、不一致検出部４０は、このエラー検出を実行する条件が成立する場合においては、浮動小数点演算部１０と固定小数点演算部２０のそれぞれの演算結果を比較して不一致であるかどうかを調べ、もしそれぞれの演算結果が不一致の場合には、これをエラーと判断し異常検出を通知する信号（エラー検出信号）を出力する。
【００２９】
以上説明したように、本実施例の演算回路１００によれば、浮動小数点と固定小数点との異種の演算処理部において共通する演算を行なう場合に、その双方の演算結果を用いてエラー検出を行なうため、専用のエラー検出回路を設ける必要なく、他に特別のハードウェアを備える必要がない。このため、これらの外部のエラー検出回路への分配遅延が増加することなくエラーを検出することができる。また、選択部３０による演算結果の出力は、不一致検出部４０によるエラー検出の処理やその判定結果により遅延されないため、高速の演算が実現される。
【００３０】
以下、本実施例の演算回路１００によるエラー検出の動作を説明する。
【００３１】
ここでは、オペランドＡ、Ｂによる数値の浮動小数点加算処理命令を処理する場合を例に説明する。つまり、浮動小数点演算の命令であるため、演算回路１００からの出力には浮動小数点演算部１０の演算結果を用い、固定小数点演算部２０の演算結果はそのエラー検出のために用いる。
【００３２】
２つのオペランドＡ、Ｂを示す信号は、浮動小数点演算部１０と固定小数点演算部２０に供給される。そして、浮動小数点演算部１０は、２つのオペランドＡ、Ｂのそれぞれを浮動小数点データと見なして、“符号部―指数部―仮数部”の形式により構成されるデータとして認識する。
【００３３】
浮動小数点演算部１０の前処理部１１は、２つのオペランドの指数部の差分だけ指数部の小さい方のオペランドの仮数部を右シフトして桁あわせし、演算器１２に供給する。このとき２つのオペランドの指数部に差がない場合は、仮数部は右シフトしない状態により演算器１２に供給する。
【００３４】
浮動小数点演算部１０の演算器１２は、桁あわせ後の２つのオペランドの仮数部を、浮動小数点加算命令でかつ２つのオペランドが同符号の場合、及び浮動小数点減算命令でかつ２つのオペランドが異符号の場合に、加算処理（真の加算処理）する。また、浮動小数点加算命令で２つのオペランドが異符号の場合、及び浮動小数点減算命令で２つのオペランドが同符号の場合には減算処理（真の減算処理）して正の値に変換する。このように本実施例の浮動小数点演算部１０の演算器１２は、２つのオペランドの絶対値演算処理を行なう。
【００３５】
そして、浮動小数点演算部１０の後処理部１３は、演算器１２による演算が真の加算処理であったのか真の減算処理であったのかを不一致検出部４０において識別させるために、絶対値演算の結果を、真の減算処理をした場合に仮数部先頭ビットを“１”とし、真の加算処理をした場合に仮数部先頭ビットを“０”として正規化処理する。後処理部１３は、この正規化処理した浮動小数点加算結果を、選択部３０と不一致検出部４０に供給する。
【００３６】
次に、固定小数点演算部２０においては、２つの入力オペランドＡ、Ｂを固定小数点データと見なす。固定小数点演算部２０の前処理部２１は、もし減算命令の場合には減算のための２の補数を取り、また加算命令の場合には入力オペランドＡ、Ｂを加工せずに、これを演算器２２に供給する。演算器２２は、前処理部２１から供給されるの２つのオペランドを、固定小数点演算し、演算結果を選択部３０と不一致検出部４０に供給する。
【００３７】
選択部３０は、浮動小数点演算部１０の浮動小数点演算結果と、固定小数点演算部２０からの固定小数点演算結果の入力を受け付けて、出力する加算結果を選択し、本演算回路１００の演算結果として出力する。ここで、演算回路１００が受けた命令は、浮動小数点演算命令であったのであるから、この場合においては浮動小数点演算部１０の浮動小数点演算結果を選択して出力する。また、同様に固定小数点命令を受けた場合には、固定小数点演算部２０からの固定小数点演算結果を選択して出力する。
【００３８】
本実施例の不一致検出部４０は、上記の選択部３０の動作と並行して、浮動小数点演算部１０の演算結果と、固定小数点演算部２０の演算結果とを比較しその不一致を検出する。この不一致検出部４０による、演算結果の不一致の検出方法としては、例えば、浮動小数点演算部１０の浮動小数点加算結果の仮数部加算結果部分と、固定小数点演算部２０からの固定小数点加算結果の内の浮動小数点加算結果の仮数部加算結果部分と同等ビット幅とを比較する等の方法が可能である。
【００３９】
不一致検出部４０は、ここで演算結果の不一致が検出され、かつ浮動小数点演算部１０と固定小数点演算部２０がいずれも、同一の真の加算処理を行った演算結果である場合には、異常検出を通知するための不一致信号を生成し出力する。この不一致検出部４０による、浮動小数点演算部１０と固定小数点演算部２０において同一の真の加算処理が行われたことの判定方法としては、浮動小数点演算部１０において２つのオペランドの指数部に差がなく真の加算処理を行われたことと、固定小数点演算部２０において固定小数点加算処理が行われたことを検出する等の方法が可能である。
【００４０】
以上好ましい実施の形態及び実施例をあげて本発明を説明したが、本発明は必ずしも上記実施の形態及び実施例に限定されるものではなく、その技術的思想の範囲内において様々に変形して実施することができる。
【００４１】
【発明の効果】
以上説明したように本発明の演算回路によれば、以下のような効果が達成される。
【００４２】
第１に、本発明の演算回路は、入力されるオペランドに対して、浮動小数点演算処理及び固定小数点演算処理の双方を並行して実行し、双方の検算結果を比較することによりエラーを検出する方式のた、従来の演算回路の設計を大きく変更する必要がなく、従来の演算回路において備える浮動小数点演算機能及び固定小数点演算機能をそのまま用いて、演算結果のエラー検出の機能を実現することができる。
【００４３】
第２に、本発明の演算回路は、演算結果の出力をそのエラー検出の処理のために遅延させることなく、演算部から出力された演算結果を直ちに出力する方式のため、きわめて高速な演算を実現することができる。
【図面の簡単な説明】
【図１】本発明の第１の実施の形態による演算回路の構成を示すブロック図である。
【符号の説明】
１００  演算回路
１０  浮動小数点演算部
１１  前処理部
１２  演算器
１３  後処理部
２０  固定小数点演算部
２１  前処理部
２２  演算器
３０  選択部
４０  不一致検出部
【図１】
0003555881.tif 000002