説明

エラー検出機能付き演算回路、および演算回路のエラー検出方法

【課題】ソフトエラーに基づく演算結果の誤りを確実に検出する。
【解決手段】エラー検出機能付き演算回路は、グレイコード形式の第1の数値を保持するレジスタと、前記レジスタに保持された前記第1の数値から、該第1の数値に対する所定の数値演算の結果である第2の数値をグレイコード形式で求めて出力する数値演算手段と、前記レジスタに保持された前記第1の数値に対するパリティ値である第1のパリティ値を使用して、前記数値演算に対応する所定の論理演算を行うことにより、前記第2の値に対するパリティ値である第2のパリティ値を生成するパリティ演算手段と、前記パリティ演算手段により生成された前記第2のパリティ値を使用して、前記数値演算手段により出力された前記第2の数値に対するパリティチェックを行うパリティチェック手段と、を有する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、演算回路において発生するエラーを検出する技術に関する。
【背景技術】
【0002】
集積回路の微細化に伴い、メモリセルにおけるソフトエラーのみならず、ロジック回路内のフリップフロップやラッチ等におけるソフトエラーも問題になりつつある。それらのソフトエラーについての対策として、バスのようにデータを転送する部分に関してはパリティビットやエラー訂正符号を付加することによって、1ビットまた2ビットのエラーを検出することが行なわれていた。データ転送だけであれば,その前後でパリティビットやエラー訂正の冗長ビットもそのまま転送するだけでよいので、このようなエラー検出を行う回路を簡単に実現することができる。
【0003】
ここで、動作周波数を高くするため、演算回路系においても複数のパイプラインを実現するためのパイプラインレジスタが設けられている。このパイプラインレジスタを構成する回路としてフリップフロップが多用されている。このパイプラインレジスタにおいても、パリティビットを設けるなどの方法で、演算回路はソフトエラーを検出できる。
【0004】
図1は、パイプラインレジスタを設けた、一般的な演算回路の構成を示すブロック図である。この演算回路は、レジスタAの値とレジスタBの値とを演算器で演算し、その結果をレジスタSに保持する。そして、レジスタSに保持された演算結果から、パリティ生成回路により、パリティビットが生成され、このビットがレジスタSPに保持される。これらのレジスタS、およびレジスタSPの組は、パイプラインレジスタを構成する。
【0005】
次いで、パリティチェック回路が、レジスタSPの値を使用して、レジスタSの値に対するパリティチェックを行い、レジスタSの値に対するエラーを検出する。
【0006】
一方、上述した当該パイプラインステージの前段ステージにおいて、パリティ生成回路(図1には記載なし)がレジスタAやレジスタBに対するパリティビットを生成したり、バス等でレジスタAやレジスタBのパリティビットが同時に転送されたりする場合もある。この場合、レジスタAの値に対応するパリティビットはレジスタAPに保持され、レジスタBの値に対応するパリティビットはレジスタBPに保持される。そして、これらのレジスタAP、BPに保持されている値を使用して、それぞれレジスタA、Bの値に対するパリティチェックが行われる。
【0007】
特許文献1に記載の乗算回路は、部分積を保持するレジスタと、元の乗数に基づくパリティビットを生成する回路とを有し、生成したパリティビットを使用して、レジスタのソフトエラーを検出している。
【先行技術文献】
【特許文献】
【0008】
【特許文献1】特開平6−28203号公報
【発明の概要】
【発明が解決しようとする課題】
【0009】
しかし、図1や特許文献1に記載の演算回路では、演算前や演算中に生じたエラーが検出されない場合があった。
【0010】
例えば、図1に記載の演算回路において、演算回路の演算前にレジスタAにソフトエラーが生じた場合について考える。この場合、レジスタAPには、エラー前のレジスタAの値のパリティビットが保持されているので、レジスタAの値に対するパリティチェックでは、エラーが検出される。ところが、演算器の出力値を保持するレジスタSに対するパリティチェックでは、演算器の出力値から生成し、レジスタSPに格納したパリティビットを使用するので、レジスタSの値が誤った値となっているにも関わらず、エラーが検出されない。
【0011】
また、図1に記載の回路の各パリティチェックでは、レジスタに生じたソフトエラーは検出されるが、演算中に演算器に生じたソフトエラーは検出されない。
【0012】
特許文献1に記載の乗算回路の部分積を保持するレジスタにおいて、演算前にソフトエラーが生じた場合、そのエラー後の部分積を加算して最後の積を算出する回路では、パリティエラーは検出されない。また、この回路において、演算中に生じたソフトエラーがパリティチェックで検出されないことがあるという問題があった。
【0013】
本発明は、演算前や演算中に生じたエラーを確実に検出する技術を提供することを目的とする。
【課題を解決するための手段】
【0014】
上記目的を達成するために、本発明のエラー検出機能付き演算回路は、グレイコード形式の第1の数値を保持するレジスタと、前記レジスタに保持された前記第1の数値から、該第1の数値に対する所定の数値演算の結果である第2の数値をグレイコード形式で求めて出力する数値演算手段と、前記レジスタに保持された前記第1の数値に対するパリティ値である第1のパリティ値を使用して、前記数値演算に対応する所定の論理演算を行うことにより、前記第2の値に対するパリティである第2のパリティを生成するパリティ演算手段と、前記パリティ演算手段により生成された前記第2のパリティ値を使用して、前記数値演算手段により出力された前記第2の数値に対するパリティチェックを行うパリティチェック手段と、を有する。
【0015】
本発明のエラー検出方法は、レジスタがグレイコード形式の第1の数値を保持し、数値演算手段が、前記レジスタに保持された前記第1の数値から、該第1の数値に対する所定の数値演算の結果である第2の数値をグレイコード形式で求めて出力し、パリティ演算手段が、前記レジスタに保持された前記第1の数値に対するパリティ値である第1のパリティ値を使用して、前記数値演算に対応する所定の論理演算を行うことにより、前記第2の値に対するパリティ値である第2のパリティ値を生成し、パリティチェック手段が、前記パリティ演算手段により生成された前記第2のパリティ値を使用して、前記数値演算手段により出力された前記第2の数値に対するパリティチェックを行う、エラー検出方法である。
【発明の効果】
【0016】
本発明によれば、エラー検出機能付き演算回路は、レジスタに保持したグレイコード形式の第1の数値を使用して数値演算して第2の数値を出力し、第1の数値に対する第1のパリティを使用して論理演算を行うことで、第2の数値に対する第2のパリティを生成して、第2の数値に対するパリティチェックを行う。前記数値演算と前記論理演算は独立して並列に行われ、相互にエラーの影響を受けないため、演算前や演算中にソフトエラーが生じ、演算結果にエラーがある場合であっても、第2の数値に対するパリティチェックで、そのエラーを検出できる。
【図面の簡単な説明】
【0017】
【図1】一般的な演算回路の構成を示すブロック図である。
【図2】本発明の第1の実施形態の演算回路の構成を示すブロック図である。
【図3】バイナリコードとグレイコードとの特性を説明するための表である。
【図4】本発明の第1の実施形態の演算回路における演算器の組み合わせをまとめた表である。
【図5】本発明の第1の実施形態の演算器の構成を示すブロック図である。
【図6】本発明の第1の実施形態の二進変換器の構成を示す回路図である。
【図7】本発明の第1の実施形態のグレイコード変換器の構成を示す回路図である。
【図8】本発明の第1の実施形態の演算回路の動作結果を示す図である。
【図9】本発明の第1の実施形態の演算回路の動作結果を示す図である。
【図10】一般的な演算回路の動作結果を示す図である。
【図11】本発明の第1の実施形態の演算回路の動作結果を示す図である。
【図12】一般的な演算回路の動作結果を示す図である。
【図13】本発明の変形例の演算回路の構成を示すブロック図である。
【図14】本発明の第2の実施形態の演算回路の構成を示すブロック図である。
【図15】本発明の第3の実施形態の演算回路の構成を示すブロック図である。
【図16】本発明の第3の実施形態の演算器の構成を示すブロック図である。
【図17】本発明の第3の実施形態の演算器の構成を示すブロック図である。
【図18】本発明の第4の実施形態の演算回路の構成を示すブロック図である。
【図19】本発明の第5の実施形態の演算回路の構成を示すブロック図である。
【発明を実施するための形態】
【0018】
(第1の実施形態)
本発明を実施するための第1の実施形態について図面を参照して詳細に説明する。図2は、本実施形態の演算回路1の構成を示すブロック図である。演算回路1は、レジスタ等に生じたソフトエラーや、演算結果のエラーを検出する機能を有する演算回路である。同図を参照すると、演算回路1は、レジスタ10、11、12、および13と、パリティチェック回路14および15と、演算器20と、パリティ演算回路21と、レジスタ30、および31と、パリティチェック回路40とを有する。
【0019】
レジスタ10、12には、グレイコード形式の数値A、B(第1の数値)がそれぞれ入力される。レジスタ10、12は入力された数値A、Bを保持する。
【0020】
レジスタ11には、数値Aのパリティチェックに使用するパリティビット(Pa)が入力され、レジスタ13には、数値Bのパリティチェックに使用するパリティビット(Pb)が入力される。レジスタ11、13は、入力されたビットPa、Pb(第1のパリティ値)を保持する。
【0021】
これらのレジスタ10、11の組と、レジスタ12、13の組とは、例えば、前段のパイプラインステージを構成するのに使用される。
【0022】
パリティチェック回路14、15は、それぞれ、レジスタ11、13から出力されたパリティビットPa、Pbを使用して、レジスタ10、12から出力された数値A、Bに対するパリティチェックを行い、その結果を出力する。例えば、パリティチェック回路14、15は、パリティエラーを検出した場合「1」、検出しなかった場合「0」の値のエラーフラグを出力する。
【0023】
演算器20は、レジスタ10、12に保持された数値A、Bに対し、加算、減算、乗算などの所定の数値演算を実行する。演算器20は、演算結果S(第2の数値)をグレイコード形式でレジスタ30へ出力する。
【0024】
パリティ演算回路21は、レジスタ11、13に保持されたパリティビットPa、Pbを使用して、数値演算に対応する所定の論理演算を行う。そしてパリティ演算回路21は、その論理演算の結果を、演算結果Sに対するパリティチェックに使用するためのパリティビット(第2のパリティ値)としてレジスタ31に出力する。
【0025】
パリティ演算回路21における論理演算は、演算器20の入力値に対するパリティ値から、演算器20の出力値に対するパリティ値を生成できる演算とする。例えば、演算器20が加算器または減算器である場合、パリティ演算回路21は、パリティビットPa、Pbの排他的論理和をレジスタ31へ出力する。また、演算器20が乗算器である場合、パリティ演算回路21は、パリティビットPa、Pbの論理積をレジスタ31へ出力する。これらの排他的論理和、論理積が、演算結果Sに対するパリティとなる理由については、後述する。
【0026】
レジスタ30には、演算器20による演算の結果(S)が入力される。レジスタ30は、この演算結果Sを保持する。
【0027】
レジスタ31には、パリティ演算回路21により生成されたパリティビットが入力される。レジスタ31は、このパリティビットを保持する。
【0028】
レジスタ30、31の組は、例えば、後段のパイプラインレジスタを構成するために使用される。
【0029】
パリティチェック回路40は、レジスタ31から出力されたパリティビットを使用して、レジスタ30から出力された演算結果Sに対するパリティチェックを行い、その結果を出力する。
【0030】
次いで、図3および図4を参照して、演算器20として使用する演算回路と、パリティ演算回路21として使用する演算回路との組み合わせについて説明する。図3は、グレイコードの特性と、バイナリコードの特性とを比較した表である。
【0031】
図3を参照すると、グレイコードは、値が1つ増減するたびに、ハミング距離が1増減するという性質をもつ。いいかえれば、値が1つ異なる場合には、コードのいずれか1ビットのみが異なる状態であることが保証されている。このため、偶数に対応するグレイコードのパリティビットは、常に「0」となり、奇数に対応するグレイコードのパリティビットは、常に「1」となる。これに対し、バイナリコードでは、偶数に対応するコードであっても、パリティビットの値が「1」である場合があり、奇数に対応するコードであっても、パリティビットの値が「0」である場合がある。
【0032】
ここで、奇数同士を乗算した結果は奇数である。偶数同士を乗算した結果、または奇数と偶数とを乗算した結果は偶数である。そして、上述したように、偶数に対応するグレイコードのパリティビットは、常に「0」であり、奇数に対応するグレイコードのパリティビットは、常に「1」である。
【0033】
従って、グレイコード同士の乗算において、乗数のパリティビットと被乗数のパリティビットとの論理積は、乗算結果のグレイコードのパリティビットと等しくなる。
【0034】
一方、奇数同士を加算または減算した結果、あるいは偶数同士を加算または減算した結果は、偶数である。奇数と偶数とを加算または減算した結果は、奇数である。
【0035】
従って、グレイコード形式の数値同士の加算または減算において、加数(減数)のパリティビットと被加数(被減数)のパリティビットとの排他的論理和は、加算(減算)結果のグレイコードのパリティビットと等しくなる。
【0036】
図4は、演算器20と、パリティ演算回路21との組み合わせをまとめた表である。前述したように、グレイコード形式の数値同士の乗算において、乗数、被乗数のパリティビットとの論理積が、乗算結果のパリティビットと等しくなるので、演算器20を乗算器とする場合、パリティ演算回路21としてAND演算器が使用される。
【0037】
また、グレイコード形式の数値同士の加算または減算において、加数(減数)、被加数(被減数)のパリティビットの排他的論理和が、乗算結果のパリティビットと等しくなるので、演算器20を加算器または減算器とする場合、パリティ演算回路21としてXOR演算器が使用される。
【0038】
図5は、演算器20の構成を示すブロック図である。同図を参照すると、演算器20は、二進変換器201および203と、二進演算器205と、グレイコード変換器207とを有する。
【0039】
二進変換器201、203は、それぞれレジスタ10、12から出力されたグレイコード形式の数値A、Bをバイナリコード形式に変換して二進演算器205へ出力する。
【0040】
二進演算器205は、二進変換器201、203から出力されたバイナリコード形式の数値A、Bに対して所定の二進数演算を行い、バイナリコード形式の演算結果をグレイコード変換器207へ出力する。
【0041】
グレイコード変換器207は、二進演算器205からの演算結果(バイナリコード)をグレイコード形式に変換してレジスタ30へ出力する。
【0042】
図6は、二進変換器201の構成を示す回路図である。二進変換器201は、4ビットのグレイコードを、4ビットのバイナリコードに変換する回路である。同図を参照すると、二進変換器201は、NOT演算器2011と、XOR演算器2012、2013、および2014とを有する。
【0043】
NOT演算器2011は、グレイコードの4桁目のビット(Ig3)を反転したビットを、バイナリコードの4桁目のビット(Ob3)として出力する。
【0044】
XOR演算器2012は、グレイコードの3、4桁目のビット(Ig2、Ig3)の排他的論理和をバイナリコードの3桁目のビット(Ob2)として出力する。
【0045】
XOR演算器2013は、グレイコードの2、3、4桁目のビット(Ig1、Ig2、Ig3)の排他的論理和をバイナリコードの2桁目のビット(Ob1)として出力する。
【0046】
XOR演算器2014は、グレイコードの1、2、3、4桁目のビット(Ig0、Ig1、Ig2、Ig3)の排他的論理和をバイナリコードの1桁目のビット(Ob0)として出力する。
【0047】
二進変換器203の構成も、二進変換器201の構成と同様である。
【0048】
図7は、グレイコード変換器207の構成を示す回路図である。グレイコード変換器207は、4ビットのバイナリコードを、4ビットのグレイコードに変換する回路である。同図を参照すると、グレイコード変換器207は、NOT演算器2071と、XOR演算器2072、2073、および2074とを有する。
【0049】
NOT演算器2071は、バイナリコードの4桁目のビット(Ib3)を反転したビットを、グレイコードの4桁目のビット(Og3)として出力する。
【0050】
XOR演算器2072は、バイナリコードの3、4桁目のビット(Ib2、Ib3)の排他的論理和をグレイコードの3桁目のビット(Og2)として出力する。
【0051】
XOR演算器2073は、バイナリコードの2、3桁目のビット(Ib1、Ib2)の排他的論理和をグレイコードの2桁目のビット(Og1)として出力する。
【0052】
XOR演算器2074は、バイナリコードの1、2桁目のビット(Ib0、Ib1)の排他的論理和をグレイコードの1桁目のビット(Ob0)として出力する。
【0053】
図8〜図12を参照して、演算回路1の動作結果について説明する。図8は、演算回路の各レジスタおよび演算器20にソフトエラーが生じないときの動作結果の一例を示す図である。演算器20が加算回路であり、レジスタ10、12にグレイコード表記で「0011」(16進表記で「2」)の値が保持された場合について考える。
【0054】
この場合、レジスタ10、12に保持された値は偶数であるから、レジスタ11、13に保持されるパリティビットPa、Pbの値は「0」である。パリティ演算回路21は、これらのパリティビットの排他的論理和「0」をレジスタ30の値に対するパリティビットとしてレジスタ31に出力する。
【0055】
パリティチェック回路14、15は、レジスタ10、12の値について、レジスタ11、13に保持されたパリティビット(「0」)を使用してパリティチェックを行う。
【0056】
一方、演算器20は、グレイコード表記で「0011」(16進表記で「2」)の値を加算し、グレイコード表記で「0110」(16進表記で「4」)の加算結果をレジスタ30に出力する。
【0057】
パリティチェック回路40は、この値について、レジスタ31に保持されたパリティビット(「0」)を使用してパリティチェックを行う。
【0058】
ここで、図9に示すように、レジスタ10〜14に数値およびパリティビットが格納されてから、演算器20が加算を行う前に、レジスタ10の2桁目のビットにソフトエラーが生じた場合について考える。同図において、網掛けの部分は、ソフトエラーが生じたビットである。
【0059】
この場合、ソフトエラー後のレジスタ10の値は「0001」(16進表記で「1」)となるが、レジスタ11には、エラー前の値に基づくパリティビット「0」が格納されるので、パリティチェック回路14は、ビットエラーを検出する。
【0060】
また、演算器20は、エラー後の値に基づく値「0010」(16進表記で「3」)を出力する一方、パリティ演算回路21は、エラー前のパリティビットの排他的論理和「0」を出力する。
【0061】
演算結果「0010」に対し、そのパリティビットは「0」であるため、パリティチェック回路40は、演算結果の誤りを検出する。
【0062】
これに対して、図1に示したように演算結果の値からパリティビットを生成する回路において、図9と同様のソフトエラーが生じた場合の動作結果を図10に示す。同図を参照すると、この回路においても、演算回路1と同様に、レジスタAに対するエラーが検出される。
【0063】
演算器は二進演算による加算を実行し、結果の「0100」をレジスタSに格納する。また、この演算結果からパリティビットが生成され、レジスタSPには「1」が格納されるので、演算結果に誤りがあるにもかかわらず、レジスタSPの値を使用したパリティチェックにおいて、エラーが検出されない。
【0064】
次に、図11に示すように、演算器20での加算の途中で、図5における二進演算器205(図11には記載なし)において、ソフトエラーが生じ、演算結果が誤った値「0100」となった場合について考える。
【0065】
この場合、パリティ演算回路21は、エラー前のパリティビットの排他的論理和「0」を出力する。
【0066】
この結果、演算結果「0100」に対し、そのパリティビットは「0」であるため、パリティチェック回路40は、ビットエラーを検出する。
【0067】
演算前に、二進変換器201、203において演算前にソフトエラーが生じた場合も同様に、エラーが検出される。
【0068】
演算後に、グレイコード変換器207やレジスタ30において、ソフトエラーが生じた場合についても同様である。
【0069】
これに対して、図1に示したように演算結果の値からパリティビットを生成する回路において、図11と同様のソフトエラーが生じた場合の動作結果を図12に示す。同図に示すように、この回路では、レジスタA、B、Sの値に基づいたパリティビットが生成、保持されるので、演算器内部でソフトエラーが生じても、レジスタA、B、Sにソフトエラーが生じない限り、そのエラーを検出できない。
【0070】
このように、演算回路1においては、数値演算を行う回路(20)と、その演算結果のパリティ生成のための論理演算を行う回路(21)とが独立している。このため、演算器20の演算前、または演算の最中に、レジスタ(10、12)、または演算器20に生じたエラーが、演算結果に対するパリティビットの値に影響を与えず、演算回路1は、ソフトエラーや、ソフトエラーに基づく演算結果のエラーを検出できる。演算回路1全体としては、エラー検出率が向上する。
【0071】
なお、本実施形態ではパリティチェック回路14、15がレジスタ10、12のパリティチェックを実行する構成としているが、図13に示すように、パリティチェック回路14、15を設けない構成とすることもできる。
【0072】
本実施形態では、演算器20において、グレイコードとバイナリコードとを相互に変換してから数値演算を行うこととしているが、演算器20の入出力値がともにグレイコード形式であればよく、演算器20内部でのコード変換は必ずしも必要ではない。
【0073】
本実施形態では、演算対象の数値A、Bを4ビットの値としているが、これらの数値のビット数は4ビットに限られないのは勿論である。
【0074】
本実施形態では、演算器20が2つの数値A、Bに対して数値演算する構成としているが、3つ以上の数値に対し、数値演算を行ってもよいのは勿論である。
【0075】
本実施形態では、演算器20は、1種類の数値演算のみを行う構成としているが、演算器20は、加算、減算、乗算等の数値演算を2種類以上、行うこともできる。その場合、パリティ演算回路21は、XOR演算器、AND演算器等の演算器を演算内容に応じて組み合わせて使用し、演算結果に対するパリティビット(第2のパリティ値)を生成する。
【0076】
演算器20は、1つの数値に対する数値演算を行うこともできる。数値を1つとする演算回路の詳細については、後述する。
【0077】
演算器20は、加算、減算、乗算のいずれかの演算を行う構成としているが、グレイコードの特性を利用して、演算器20の入力値に対するパリティから、出力値に対するパリティを生成できるのであれば、これら以外の演算を行う構成としてもよい。
【0078】
以上説明したように、本実施形態によれば、演算回路1は、レジスタ10、12に保持したグレイコード形式の数値A、B(第1の数値)を使用して数値演算して演算結果S(第2の数値)を出力し、第1の数値に対する第1のパリティ値(Pa、Pb)を使用して論理演算を行うことで、第2の数値に対する第2のパリティ値を生成して、第2の数値に対するパリティチェックを行う。このため、演算前や演算中にソフトエラーが生じ、演算結果にエラーがある場合であっても、第2の数値に対するパリティチェックで、そのエラーを検出できる。
【0079】
また、演算器20は、グレイコードをバイナリコードに変換してから数値演算を行うので、グレイコード演算器よりも一般的な二進演算器(205)を利用することができる。
【0080】
パリティチェック回路40は、レジスタ30のほか、レジスタ10、11、演算器20のエラーを検出するので、図13に示したようにパリティチェック回路40からのエラー検出信号のみでは、演算前、演算中のいずれにおいてエラーが生じたのかが特定できない。しかし、図2に示すように、パリティチェック回路40のほか、レジスタ10、12の値に対するパリティチェックを行うパリティチェック回路14、15を別途設けているので、これらのエラー検出信号を利用することで、エラーが生じたのが演算前なのか、演算中なのかを特定することができる。
【0081】
演算回路1は、演算結果をレジスタ30に保持し、演算結果に対するパリティビットをレジスタ31に保持するので、演算器20、パリティ演算回路21の出力タイミングが異なる場合であっても、レジスタ30、31の保持値の更新タイミングを調整することで、パリティチェック回路40は、正確にパリティチェックを行うことができる。
【0082】
(第2の実施形態)
図14を参照して、本発明の第2の実施形態について説明する。同図は、本実施形態の演算回路1aの構成を示すブロック図である。同図を参照すると、演算回路1aは、レジスタ11、13と、パリティチェック回路14、15との代わりにパリティ生成回路16、17を有する以外は、第1の実施形態の演算回路と同様である。
【0083】
パリティ生成回路16、17は、それぞれ、レジスタ10、12に格納されたグレイコードに基づいてパリティビットPa、Pbを生成してパリティ演算回路21へ出力する。
【0084】
演算回路1aは、パリティ演算回路21の出力値を使用することにより、演算前に二進変換器201、203に生じたソフトエラーに基づくエラーを検出できる。また、演算回路1aは、演算中に二進演算器205にソフトエラーが生じた場合も、演算結果のエラーを検出できる。
【0085】
以上説明したように、本実施形態によれば、演算前または演算中に生じたソフトエラーによる演算結果の誤りの検出を可能としつつ、ハードウェア(レジスタ11、13)を削減することができる。
【0086】
また、第1の実施形態のようにレジスタ11、13を設ける構成では、レジスタ11、13にソフトエラーが生じた場合、パリティ演算回路21は、エラー後のレジスタ11、13の値に基づいてパリティビットを生成してしまう可能性がある。しかし、レジスタ11、13を設けない構成とすることで、パリティ演算回路21は正確なパリティビットを生成することができる。
【0087】
(第3の実施形態)
図15〜図17を参照して、本発明の第3の実施形態について説明する。図15は、本実施形態の演算回路1bの構成を示すブロック図である。演算回路1bは、長いビット数の加数、被加数を短いビット数に分割して保持する点で第1の実施形態の演算回路1と異なる。
【0088】
図15を参照すると、演算回路1bは、パリティチェック回路14および15を有さず、演算器20の代わりに演算器20b、パリティ演算回路21の代わりにXOR演算器21bを有する。また、演算回路1bは、レジスタ50、51、52、および53と、演算器60と、XOR演算器61と、レジスタ70、および71と、パリティチェック回路80とを更に有する。
【0089】
数値Aは8ビットの二進数であり、これを4ビットごとに分割し、それぞれ4ビットのグレイコード形式に変換した数値A1、A2がレジスタ10、50にそれぞれ保持される。レジスタ11、51には、A1、A2に基づくパリティビットが保持される。
【0090】
数値Bは8ビットの二進数であり、これを4ビットごとに分割し、それぞれ4ビットのグレイコード形式に変換した数値B1、B2がレジスタ12、52にそれぞれ保持される。レジスタ12、52には、B1、B2に基づくパリティビットが保持される。
【0091】
ここで、A1、B1が下位桁の部分、A2、B2が上位桁の部分である。
【0092】
図16は、演算器20bの構成を示すブロック図である。同図を参照すると、演算器20bは、二進演算器205の代わりに加算器205bを有する以外は、第1の実施形態の演算器20と同様である。加算器205bは、A1、B1が二進数に変換された後、それらを加算し、桁上げ信号を演算器60へ出力する。桁上げ信号は、A1、B1の加算において桁上げがあった場合は「1」の値、桁上げがなかった場合は「0」の値とする。
【0093】
図15に戻り、XOR演算器21bは、レジスタ11、13の値の排他的論理和をレジスタ31へ出力する。
【0094】
演算器60は、レジスタ50、52に保持されたA2、B2と、桁上げ信号の値との加算値を、レジスタ70へ出力する。
【0095】
図17は、演算器60の構成を示すブロック図である。同図を参照すると、演算器60は、二進変換器601、603、加算器605、およびグレイコード変換器607を有する。二進変換器601、603、およびグレイコード変換器607の構成は、第1の実施形態の二進変換器201、203、およびグレイコード変換器207と同様である。
【0096】
加算器205cは、A1、B1が二進数に変換された後、それらと演算器21bからの桁上げ信号を加算する。
【0097】
再び図15に戻り、XOR演算器61は、レジスタ51、53、および桁上げ信号の値の排他的論理和をレジスタ71へ出力する。
【0098】
レジスタ70は、演算器60の演算結果を保持し、レジスタ71はXOR演算器61の出力値を保持する。パリティチェック回路80は、レジスタ71に保持されたビットをパリティビットとして使用することにより、レジスタ70の値に対するパリティチェックを行う。
【0099】
なお、本実施形態では、演算回路1bは、8ビットの二進数を、4ビットずつに分割してグレイコードに変換して保持する構成としているが、分割対象の数値のビット数は8ビットに限られず、また、分割後の各数値のビット数は任意であり、3つ以上に分割しておいてもよい。ただし、演算する二つの値は同じ分割方法をとる必要がある。
【0100】
例えば、演算回路1bは、12ビットの二進数を5ビット、4ビット、3ビットの3つに分割し、それぞれグレイコードに変換して保持する構成としてもよい。
【0101】
図6に示したようにグレイコードをバイナリコードに変換するためには、XOR演算器2014は、最下位ビット算出のため、全てのビットの排他的論理和を求めなくてはならない。このため、長ビット数においてバイナリコードへの変換を行うと、処理時間が長くなってしまう。
【0102】
しかし、以上説明したように、本実施形態によれば、長ビットのグレイコードを分割するので、演算回路1bは、処理時間を短縮しつつ、演算前または演算中に生じたソフトエラーや、演算結果のエラーを検出できる。
【0103】
(第4の実施形態)
図18を参照して、本発明の第4の実施形態について説明する。同図は、本実施形態の演算回路1cの構成を示すブロック図である。演算回路1cは、レジスタ11、13、51、および53の代わりにパリティ生成回路16、17、54、および55を有し、XOR演算器21b、および61の代わりにXOR演算器21cを有する以外は、第3の実施形態の演算回路1bと同様である。
【0104】
パリティ生成回路16、17、54、および55は、それぞれレジスタ11、13、51、および53に保持された数値A1、B1、A2、およびB2の値に基づき、パリティビットを生成する。
【0105】
XOR演算器21cは、パリティ生成回路16、17、54、および55により生成された各パリティビットの値と、桁上げ信号との排他的論理和をレジスタ31へ出力する。
【0106】
なお、本実施形態では、演算回路1cは、加算回路を使用する構成としているが、減算回路を使用してもよいのは勿論である。この場合、下位側の減算器(20b)は、桁下げがあった場合「1」、そうでない場合「0」の値の桁下げ信号を上位側の減算器(60)とXOR演算器21cとへ出力する。そして、上位側の減算器は、被減数から、減数と桁下げ信号の値とを減算した結果をグレイコード形式で出力する。第3の実施形態の演算回路1bについても同様である。
【0107】
以上説明したように、本実施形態によれば、第3の実施形態と比較して簡易な構成で、演算前または演算中に生じたソフトエラーによる演算結果の誤りを検出できる。
【0108】
(第5の実施形態)
図19を参照して、本発明の第5の実施形態について説明する。同図は、本実施形態の演算回路1dの構成を示すブロック図である。演算回路1dは、演算対象の数値が1つである点で、第1の実施形態と異なる。
【0109】
図19を参照すると、演算回路1dは、レジスタ12、および13と、パリティチェック回路15と、演算器20と、パリティ演算回路21とを有さず、演算器20の代わりにインクリメンタ20dを、パリティ演算回路21の代わりにNOT演算器21dを有する点で第1の実施形態の演算回路1と異なる。
【0110】
インクリメンタ20dは、レジスタ10に保持された数値Aをインクリメントし、その結果をグレイコード形式でレジスタ30へ出力する。
【0111】
NOT演算器21dは、レジスタ11に保持されたパリティビットを反転したビットをインクリメント後の値のパリティビットとしてレジスタ31へ出力する。
【0112】
なお、本実施形態では、演算回路1dとしてインクリメンタを使用したが、インクリメンタの代わりにデクリメンタを使用することもできる。
【0113】
以上説明したように本実施形態によれば、1つの数値に対して数値演算を行う演算回路において演算前または演算中に生じたソフトエラーによる演算結果の誤りを検出できる。
【符号の説明】
【0114】
1、1a、1b、1c、1d 演算回路
10、11、12、13、30、31、50、52、53、70、71 レジスタ
14、15、40、80 パリティチェック回路
16、17、54、55 パリティ生成回路
20、20b、60 演算器
21 パリティ演算回路
21b、61、21c XOR演算器
201、203、601、603 二進変換器
205 二進演算器
205b、605 加算器
207、607 グレイコード演算器
2011、2071、21d NOT演算器
2012、2013、2014、2072、2073、2074 XOR演算器
20d インクリメンタ

【特許請求の範囲】
【請求項1】
グレイコード形式の第1の数値を保持するレジスタと、
前記レジスタに保持された前記第1の数値から、該第1の数値に対する所定の数値演算の結果である第2の数値をグレイコード形式で求めて出力する数値演算手段と、
前記レジスタに保持された前記第1の数値に対するパリティ値である第1のパリティ値を使用して、前記数値演算に対応する所定の論理演算を行うことにより、前記第2の数値に対するパリティ値である第2のパリティ値を生成するパリティ演算手段と、
前記パリティ演算手段により生成された前記第2のパリティ値を使用して、前記数値演算手段により出力された前記第2の数値に対するパリティチェックを行うパリティチェック手段と、
を有するエラー検出機能付き演算回路。
【請求項2】
前記数値演算手段は、グレイコード形式の前記第1の数値をバイナリコード形式に変換し、前記数値演算として、変換した該第1の数値を使用する二進数演算を実行し、該二進数演算の結果をグレイコード形式に変換し、変換した該結果を前記第2の数値として出力する、請求項1に記載のエラー検出機能付き演算回路。
【請求項3】
前記第1のパリティ値を使用して、前記レジスタに保持された前記第1の数値に対するパリティチェックを行う入力値パリティチェック手段を更に有する、請求項1又は2に記載のエラー検出機能付き演算回路。
【請求項4】
前記レジスタに保持された前記第1の数値に基づいて前記第1のパリティ値を生成するパリティ生成手段を更に有する、請求項1又は2に記載のエラー検出機能付き演算回路。
【請求項5】
前記数値演算手段により出力された前記第2の数値を保持する出力値用レジスタと、
前記パリティ演算手段により生成された前記第2のパリティ値を保持する第2パリティ用レジスタと、
を更に有し、
前記パリティチェック手段は、前記第2パリティ用レジスタに保持された前記第2のパリティ値を使用して、前記出力値用レジスタに保持された前記第2の数値に対するパリティチェックを行う、請求項1乃至4のいずれか1項に記載のエラー検出機能付き演算回路。
【請求項6】
前記第1の数値は、複数あり、
複数の前記第1の数値を保持する複数の前記レジスタを有し、
前記数値演算は、複数の前記第1の数値の乗算であり、
前記論理演算は、複数の前記第1の数値に対応する複数の第1のパリティ値の論理積を求める演算である、請求項1乃至5のいずれか1項に記載のエラー検出機能付き演算回路。
【請求項7】
前記第1の数値は、複数あり、
複数の第1の数値を保持する複数の前記レジスタを有し、
前記数値演算は、複数の前記第1の数値の加算であり、
前記論理演算は、複数の前記第1の数値に対応する複数の前記第1のパリティ値の排他的論理和を求める演算である、請求項1乃至5のいずれか1項に記載のエラー検出機能付き演算回路。
【請求項8】
前記第1の数値は、複数あり、
複数の第1の数値を保持する複数の前記レジスタを有し、
前記数値演算は、複数の前記第1の数値のうち、いずれかの値から、それ以外の値を減算する演算であり、
前記論理演算は、複数の前記第1の数値に対応する複数の前記第1のパリティ値の排他的論理和を求める演算である、請求項1乃至5のいずれか1項に記載のエラー検出機能付き演算回路。
【請求項9】
前記数値演算は、前記第1の数値に対するインクリメント又はデクリメントであり、
前記論理演算は、前記第1のパリティ値を反転する演算である、請求項1乃至5のいずれか1項に記載のエラー検出機能付き演算回路。
【請求項10】
前記数値演算手段は、
それぞれの前記第1の数値の下位桁部分を加算した結果を前記第2の数値の下位桁部分として出力するとともに、該加算における桁上げの有無を示す桁上げ信号を出力する下位側加算器と、
それぞれの前記第1の数値の上位桁部分と前記桁上げ信号とを加算した結果を前記第2の数値の上位桁部分として出力する上位側加算器と、
を有し、
前記パリティ演算手段は、
それぞれの前記第1の数値の下位桁部分に対するパリティ値と、それぞれの該第1の数値の上位桁部分に対するパリティ値と、前記桁上げ信号との排他的論理和を前記第2のパリティ値として出力する、請求項7に記載のエラー検出機能付き演算回路。
【請求項11】
前記数値演算手段は、
それぞれの前記第1の数値の下位桁部分を加算した結果を前記第2の数値の下位桁部分として出力するとともに、該加算における桁上げの有無を示す桁上げ信号を出力する下位側加算器と、
それぞれの前記第1の数値の上位桁部分と前記桁上げ信号とを加算した結果を前記第2のグレイコードの上位桁部分として出力する上位側加算器と、
を有し、
前記パリティ演算手段は、それぞれの前記第1の数値の下位桁部分に対するパリティの排他的論理和を下位桁に対応する第2のパリティ値として出力し、それぞれの前記第1のグレイコードの上位桁部分に対するパリティ値と前記桁上げ信号との排他的論理和を上位桁に対応する第2のパリティ値として出力し、
前記パリティチェック手段は、前記パリティ演算手段により出力された前記下位桁に対応する第2のパリティ値を使用して、前記第2の数値の下位桁部分に対するパリティチェックを行うとともに、前記上位桁に対応する第2のパリティ値を使用して、前記第2の数値の上位桁部分に対するパリティチェックを行う、請求項7に記載のエラー検出機能付き演算回路。
【請求項12】
前記数値演算手段は、
それぞれの前記第1の数値の下位桁部分のうち、いずれか1つから、それ以外を減算した結果を前記第2の数値の下位桁部分として出力するとともに、該減算における桁下げの有無を示す桁下げ信号を出力する下位側減算器と、
それぞれの前記第1の数値の上位桁部分のうち、いずれか1つから、それ以外及び前記桁下げ信号を減算した結果を前記第2のグレイコードの上位桁部分として出力する上位側減算器と、
を有し、
前記パリティ演算手段は、
それぞれの前記第1の数値の下位桁部分に対するパリティ値と、それぞれの該第1の数値の上位桁部分に対するパリティ値と、前記桁下げ信号との排他的論理和を前記第2のパリティ値として出力する、請求項8に記載のエラー検出機能付き演算回路。
【請求項13】
前記数値演算手段は、
それぞれの前記第1の数値の下位桁部分のうち、いずれか1つから、それ以外を減算した結果を前記第2の数値の下位桁部分として出力するとともに、該減算における桁下げの有無を示す桁下げ信号を出力する下位側減算器と、
それぞれの前記第1の数値の上位桁部分のうち、いずれか1つから、それ以外及び前記桁下げ信号を減算した結果を前記第2の数値の上位桁部分として出力する上位側減算器と、
を有し、
前記パリティ演算手段は、それぞれの前記第1の数値の下位桁部分に対するパリティの排他的論理和を下位桁に対応する第2のパリティ値として出力し、それぞれの前記第1のグレイコードの上位桁部分に対するパリティ値と前記桁下げ信号との排他的論理和を上位桁に対応する第2のパリティ値として出力し、
前記パリティチェック手段は、前記パリティ演算手段により出力された前記下位桁に対応する第2のパリティ値を使用して、前記第2の数値の下位桁部分に対するパリティチェックを行うとともに、前記上位桁に対応する第2のパリティ値を使用して、前記第2の数値の上位桁部分に対するパリティチェックを行う、請求項8に記載のエラー検出機能付き演算回路。
【請求項14】
レジスタがグレイコード形式の第1の数値を保持し、
数値演算手段が、前記レジスタに保持された前記第1の数値から、該第1の数値に対する所定の数値演算の結果である第2の数値をグレイコード形式で求めて出力し、
パリティ演算手段が、前記レジスタに保持された前記第1の数値に対するパリティ値である第1のパリティ値を使用して、前記数値演算に対応する所定の論理演算を行うことにより、前記第2の値に対するパリティ値である第2のパリティ値を生成し、
パリティチェック手段が、前記パリティ演算手段により生成された前記第2のパリティ値を使用して、前記数値演算手段により出力された前記第2の数値に対するパリティチェックを行う、演算回路のエラー検出方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate

【図19】
image rotate


【公開番号】特開2010−205135(P2010−205135A)
【公開日】平成22年9月16日(2010.9.16)
【国際特許分類】
【出願番号】特願2009−52116(P2009−52116)
【出願日】平成21年3月5日(2009.3.5)
【出願人】(000004237)日本電気株式会社 (19,353)
【Fターム(参考)】