(57)【要約】【課題】  簡易な構成でエラー検出・訂正符号付きデータを生成することが課題である。【解決手段】  各バイトがｎビットを有するｍバイトの情報部分とｍバイトの情報部分に設けられるｍビットのエラー検出用ビットの冗長部分とを含むエラー検出用ビット付きデータのｍバイトの情報部分の排他的論理和演算を行い、エラー検出・訂正符号付きデータの冗長部分のうち、ｌｏｇ２（ｎ＋１）ビットの一の部分を生成し、生成した一の部分とエラー検出用ビットとを入力してｍビットの他の部分を生成する。【選択図】  図２
2011109476.tif 000002
【特許請求の範囲】
【請求項１】
各バイトがｎビットを有するｍバイトの情報部分と、前記ｍバイトの情報部分に対しそれぞれ設けられるｍビットのエラー検出用ビットの冗長部分とを含むエラー検出用ビット付きデータの前記ｍバイトの情報部分を入力して、エラー検出・訂正符号付きデータの冗長部分のうち、ｌｏｇ２（ｎ＋１）ビットの一の部分を、ｌｏｇ２（ｎ＋１）の小数点以下を切り上げて生成する第１の排他的論理和演算回路と、
前記第１の排他的論理和演算回路が生成した前記エラー検出・訂正符号付きデータの冗長部分のうちの前記一の部分と前記エラー検出用ビットとを入力して、ｍビットの他の部分を生成する第２の排他的論理和演算回路とを有することを特徴とするエラー検出・訂正符号生成回路。
【請求項２】
前記エラー検出用ビット付きデータの前記情報部分の各バイトをｎ個の要素を有するバイトベクトル、前記エラー検出用ビット付きデータの前記情報部分をｍ個の要素を有する情報ベクトルで表現した場合において、前記情報ベクトル及び前記エラー検出用ビットの行列演算によって前記一の部分のベクトル及び前記他の部分のベクトルを生成するエラー検出・訂正符号生成式にしたがい、前記情報ベクトルを入力して、前記第１の排他的論理和演算手段が前記一の部分を生成し、前記第１の部分及び前記エラー検出用ビットを入力して、前記第２の排他的論理和演算手段が前記他の部分を生成することを特徴とする請求項１記載のエラー検出・訂正符号生成回路。
【請求項３】
前記エラー検出・訂正符号生成回路において、
前記エラー検出・訂正符号付きデータは、（ｎ＋１）ｍ＋［ｌｏｇ２（ｎ＋１）］ビットを有し（［ｌｏｇ２（ｎ＋１）］はｌｏｇ２（ｎ＋１）について小数点以下の切り上げたものを表す）、前記ｍｎビットは前記情報部分であり、他のｍ＋［ｌｏｇ２（ｎ＋１）］ビットは前記冗長部分であり、
当該冗長部分のうちの最大［ｌｏｇ２（ｎ＋１）］ビットを入力して、前記エラー検出用ビットを生成する第３の排他論理和演算回路を更に有することを特徴とする請求項１記載のエラー検出・訂正符号生成回路。
【請求項４】
前記エラー検出用ビット付きデータの前記情報部分の各バイトをｎ個の要素を有するバイトベクトルｖｉ（ｖｉ（０），ｖｉ（１），...，ｖｉ（ｎ−２），ｖｉ（ｎ−１））、前記エラー検出用ビット付きデータの前記情報部分をｍ個の要素を有する情報ベクトルｖ（ｖ０，ｖ１，...，ｖｍ−１）、尚前記エラー検出用ビット付きデータの前記冗長部分は前記ｍ個の要素を有する情報ベクトルの要素に対しそれぞれ設けられる、ｍビットのエラー検出用ビットｐ（ｐ０，ｐ１，...，ｐｍ−２，ｐｍ−１）、前記エラー検出用ビット付きデータをバイトパリティ符号ｖｐ（ｖ，ｐ）で表現した場合において、前記エラー検出・訂正符号生成式
【数４９】
2011109476.tif 000051
にしたがい、前記バイトパリティ符号ｖｐ（ｖ，ｐ）の前記情報ベクトルｖ（ｖ０，ｖ１，...，ｖｍ−１）の値と前記エラー検出用ビットｐ（ｐ０，ｐ１，...，ｐｍ−２，ｐｍ−１）とを入力し、前記第１の排他的論理和演算手段が、前記エラー検出・訂正符号付きデータの前記冗長部分のうちの前記一の部分であるｄ次のベクトルｃ２の値を生成し、前記第２の排他的論理和演算手段が、前記エラー検出・訂正符号付きデータの前記冗長部分のうちの前記他の部分であるｍ次のベクトルｃ１の値を生成し、
前記エラー検出用ビットｐ（ｐ０，ｐ１，...，ｐｍ−２，ｐｍ−１）の各ビットｐｉと、上記情報ベクトルｖ（ｖ０，ｖ１，...，ｖｍ−１）の各要素であるバイトベクトルｖｉ（ｖｉ（０），ｖｉ（１），...，ｖｉ（ｎ−２），ｖｉ（ｎ−１））とは以下の関係
ｐｉ＝ｖｉ（０）＋ｖｉ（１）＋...＋ｖｉ（ｎ−２）＋ｖｉ（ｎ−１）
（「＋」は排他的論理和演算、「ｔ」は行列の転置を表す）を有することを特徴とする請求項２記載のエラー検出・訂正符号生成回路。
【請求項５】
ｍｎビットの情報部分と、［ｌｏｇ２（ｎ＋１）］ビットの一の部分及びｍビットの他の部分を有する冗長部分とを有する（ｎ＋１）ｍ＋［ｌｏｇ２（ｎ＋１）］ビットのエラー検出・訂正符号付きデータ（［ｌｏｇ２（ｎ＋１）］はｌｏｇ２（ｎ＋１）について小数点以下の切り上げたものを表す）のうち、
前記冗長部分のうちの最大［ｌｏｇ２（ｎ＋１）］ビットを有する第１のデータを入力して第１のエラー検出用ビットを生成する第１の排他的論理和演算回路と、
前記冗長部分のうちの最大［ｌｏｇ２（ｎ＋１）］ビットを有する第２のデータを入力して第２のエラー検出用ビットを生成する第２の排他的論理和演算回路と、
を有することを特徴とするエラー検出用ビット生成回路。
【請求項６】
エラー検出・訂正符号生成回路が有する第１の排他的論理和演算回路が、各バイトがｎビットを有するｍバイトの情報部分と、前記ｍバイトの情報部分に対しそれぞれ設けられるｍビットのエラー検出用ビットを有する冗長部分とを含むエラー検出用ビット付きデータの前記情報部分を入力して、エラー検出・訂正符号付きデータの冗長部分のうち、ｌｏｇ２（ｎ＋１）ビットの一の部分を、ｌｏｇ２（ｎ＋１）の小数点以下を切り上げて生成するステップと、
前記エラー検出・訂正符号生成回路が有する第２の排他的論理和演算回路が、前記ｌｏｇ２（ｎ＋１）ビットの一の部分を生成するステップで生成された前記一の部分と前記エラー検出用ビットとを入力して、ｍビットの他の部分を生成するステップとを有することを特徴とするエラー検出・訂正符号生成回路の制御方法。
【請求項７】
前記エラー検出用ビット付きデータの前記情報部分の各バイトをｎ個の要素を有するバイトベクトル、前記エラー検出用ビット付きデータの前記情報部分をｍ個の要素を有する情報ベクトルで表現した場合において、前記情報ベクトル及び前記エラー検出用ビットの行列演算によって前記一の部分のベクトル及び前記他の部分のベクトルを生成するエラー検出・訂正符号生成式にしたがい、前記ｌｏｇ２（ｎ＋１）ビットの一の部分を生成するステップにおいて、前記情報ベクトルを入力して前記一の部分を生成し、前記ｍビットの他の部分を生成するステップにおいて、前記第１の部分及び前記エラー検出用ビットを入力して前記他の部分を生成することを特徴とする請求項６記載のエラー検出・訂正符号生成回路の制御方法。
【請求項８】
前記エラー検出・訂正符号付きデータは、（ｎ＋１）ｍ＋［ｌｏｇ２（ｎ＋１）］ビットを有し、前記ｍｎビットは前記情報部分であり（［ｌｏｇ２（ｎ＋１）］はｌｏｇ２（ｎ＋１）について小数点以下の切り上げたものを表す）、他のｍ＋［ｌｏｇ２（ｎ＋１）］ビットは前記冗長部分であり、
前記エラー検出・訂正符号生成回路が有する第３の排他的論理和演算回路が、当該冗長部分のうちの最大［ｌｏｇ２（ｎ＋１）］ビットを入力して、前記エラー検出用ビットの各ビットを生成するステップを更に有することを特徴とする請求項６記載のエラー検出・訂正符号生成回路の制御方法。
【請求項９】
前記エラー検出用ビット付きデータの前記情報部分の各バイトをｎ個の要素を有するバイトベクトルｖｉ（ｖｉ（０），ｖｉ（１），...，ｖｉ（ｎ−２），ｖｉ（ｎ−１））、前記エラー検出用ビット付きデータの前記情報部分をｍ個の要素を有する情報ベクトルｖ（ｖ０，ｖ１，...，ｖｍ−１）、尚前記エラー検出用ビット付きデータの前記冗長部分は前記ｍ個の要素を有する情報ベクトルの要素に対しそれぞれ設けられる、ｍビットのエラー検出用ビットｐ（ｐ０，ｐ１，...，ｐｍ−２，ｐｍ−１）、前記エラー検出用ビット付きデータをバイトパリティ符号ｖｐ（ｖ，ｐ）で表現した場合において、前記エラー検出・訂正符号生成式
【数５０】
2011109476.tif 000052
にしたがい、前記バイトパリティ符号ｖｐ（ｖ，ｐ）の前記情報ベクトルｖ（ｖ０，ｖ１，...，ｖｍ−１）の値と前記エラー検出用ビットｐ（ｐ０，ｐ１，...，ｐｍ−２，ｐｍ−１）とを入力して、前記ｌｏｇ２（ｎ＋１）ビットの一の部分を生成するステップにおいて、前記エラー検出・訂正符号付きデータの前記冗長部分のうちの前記一の部分のｄ次のベクトルｃ２の値を生成し、前記ｍビットの他の部分を生成するステップにおいて、前記エラー検出・訂正符号付きデータの前記冗長部分のうちの前記他の部分のｍ次のベクトルｃ１の値を生成し、
尚前記エラー検出用ビットｐ（ｐ０，ｐ１，...，ｐｍ−２，ｐｍ−１）の各ビットｐｉと、上記情報ベクトルｖ（ｖ０，ｖ１，...，ｖｍ−１）の各要素であるバイトベクトルｖｉ（ｖｉ（０），ｖｉ（１），...，ｖｉ（ｎ−２），ｖｉ（ｎ−１））とは以下の関係
ｐｉ＝ｖｉ（０）＋ｖｉ（１）＋...＋ｖｉ（ｎ−２）＋ｖｉ（ｎ−１）
（「＋」は排他的論理和演算、「ｔ」は行列の転置を表す）を有することを特徴とする請求項７記載のエラー検出・訂正符号生成回路の制御方法。
【請求項１０】
ｍｎビットの情報部分と、［ｌｏｇ２（ｎ＋１）］ビットの一の部分及びｍビットの他の部分を有する冗長部分とを有する（ｎ＋１）ｍ＋［ｌｏｇ２（ｎ＋１）］ビットのエラー検出・訂正符号付きデータ（［ｌｏｇ２（ｎ＋１）］はｌｏｇ２（ｎ＋１）について小数点以下の切り上げたものを表す）のうち、
前記冗長部分のうちの最大［ｌｏｇ２（ｎ＋１）］ビットを有する第１のデータを入力して、第１のエラー検出用ビットを生成するステップと、
前記冗長部分のうちの最大［ｌｏｇ２（ｎ＋１）］ビットを有する第２のデータを入力して、第２のエラー検出用ビットを生成するステップと、
を有することを特徴とするエラー検出用ビット生成回路の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、エラー検出・訂正符号生成回路及びその制御方法に関する。
【背景技術】
【０００２】
データを入力してパリティビット及びＥＣＣ（Error Check and Collection）検査ビットを生成するＸＯＲ（Exclusive-OR、排他的論理和演算、以下同様）回路ツリーが知られている。当該ＸＯＲ回路ツリーでは、データ入力Ａ乃至Ｐのうち、データ入力Ａ乃至ＨがＥＣＣ検査ビット及びパリティビットの生成に関与し、データ入力Ｉ乃至ＰがＥＣＣ検査ビットの生成だけに関与する。そしてデータ入力Ａ乃至Ｈがその生成に関与するパリティビットと、データＩ乃至Ｐがその生成に関与するＥＣＣ検査ビットとが、データ入力Ａ乃至Ｐに対するＥＣＣ検査ビットの生成に関与する、
またデータビット及びデータビットに付されたエラー修正コードからパリティビットを算出するコード変換の方法が知られている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開平６−３２４９５１号公報
【特許文献２】特開昭４８−６６３３４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
簡易な構成でエラー検出・訂正符号の生成を行い得る構成を提供することが課題である。
【課題を解決するための手段】
【０００５】
各バイトがｎビットを有するｍバイトの情報部分と、ｍバイトの情報部分に対しそれぞれ設けられるｍビットのエラー検出用ビットの冗長部分とを含むエラー検出用ビット付きデータの前記ｍバイトの情報部分を入力する。そしてエラー検出・訂正符号付きデータの冗長部分のうち、ｌｏｇ２（ｎ＋１）ビットの一の部分を、ｌｏｇ２（ｎ＋１）の小数点以下を切り上げて生成する。生成した前記エラー検出・訂正符号付きデータの冗長部分のうちの前記一の部分と前記エラー検出用ビットとを入力する。そしてｍビットの他の部分を生成する。
【発明の効果】
【０００６】
上記の構成によれば、簡易な構成でエラー検出・訂正符号の生成を行い得る。
【図面の簡単な説明】
【０００７】
【図１】ＳＥＣＤＥＤ符号の冗長部分を生成する回路の構成例を示す図である。
【図２】実施例によるＳＥＣＤＥＤ符号の冗長部分を生成する回路の構成例を示す図である。
【図３】バイトパリティ符号の冗長部分を生成する回路の構成例を示す図である。
【図４】実施例によるバイトパリティ符号の冗長部分を生成する回路の構成例を示す図である。
【図５】図１に示す回路構成例の更に具体的な回路構成例を示す図である。
【図６】図２に示す回路構成例の更に具体的な回路構成例（その１）を示す図である。
【図７】図２に示す回路構成例の更に具体的な回路構成例（その２）を示す図である。
【図８】図３に示す回路構成例の更に具体的な回路構成例を示す図である。
【図９】図４に示す回路構成例の更に具体的な回路構成例（その１）を示す図である。
【図１０】図４に示す回路構成例の更に具体的な回路構成例（その２）を示す図である。
【図１１】実施例によるデータ演算装置の一例のブロック図である。
【図１２】実施例によるデータ演算装置の他の例のブロック図である。
【発明を実施するための形態】
【０００８】
実施例の構成につき、以下に説明する。
【０００９】
最初に実施例の概要につき説明する。
【００１０】
１）実施例の第１の態様によれば、ｎビットの情報に対しエラー検出用ビット（すなわちパリティビット）１ビットを持つデータを想定する。そして上記ｎビットの情報と当該情報に対するパリティビット１ビットの計(ｎ+1)ビットのデータを一単位（すなわち１バイト）とし、ｍバイト(すなわち(ｎ＋１)ｍビット)のデータαを想定する。すなわち当該(ｎ＋１)ｍビットのデータαは、ｎｍビットの情報部分と、ｍビットのパリティビット（冗長部分）とを有する。ここで「冗長部分」とは、「情報部分」の誤りを検出、あるいは更に、当該検出された誤りを訂正する際に使用される情報を意味する。実施例の第１の態様では、当該データαのｎｍビットの情報部分と、ｍビットのパリティビットとに基づいて生成するｍビットの冗長部分と、［ｌｏｇ２(ｎ＋１)］（後述）ビットの冗長部分とからＳＥＣＤＥＤ符号βを生成する。ここでＳＥＣＤＥＤ符号はSingle bit Error Correct and Double bit Error Detect符号を意味する。また[Ｘ］は、Ｘ≦［Ｘ］＜Ｘ＋1を満たす自然数（すなわちＸの小数点以下を切り上げた数）を示す。したがって上記[ｌｏｇ２（ｎ＋１)]は、ｌｏｇ２(ｎ＋1)≦［ｌｏｇ２（ｎ＋1)]＜ｌｏｇ２(ｎ＋１)＋1を満たす自然数、すなわちｌｏｇ2(ｎ+1)の小数点以下を切り上げて得られる数を示す。すなわち上記ＳＥＣＤＥＤ符号βは、上記データαのｎｍビットの情報部分と、ｍビットの冗長部分と、［ｌｏｇ２(ｎ＋１)］ビットの冗長部分とを有し、計(ｎ+1)ｍ+[ｌｏｇ2 (ｎ+1)]ビットを有する。
【００１１】
２）実施例の第２の態様によれば、上記１）実施例の第１の態様の方法において、上記ＳＥＣＤＥＤ符号βの冗長部分のうち、上記［ｌｏｇ２(ｎ＋１)］ビットの冗長部分（以下、β*と称する）を、上記データαのｎｍビットの情報部分を基に生成する。そして残りのβの冗長部分ｍビットを、上記データαのパリティビット及び上記β*のみから生成する。
【００１２】
３）実施例の第３の態様によれば、上記(ｎ+1)ｍ+[ｌｏｇ2(ｎ+1)] ビットのＳＥＣＤＥＤ符号βから、各ｎビットの情報に対し１ビットのパリティを持つｍバイトのデータ (すなわち (ｎ+1)ｍ ビットのデータ) αを生成する。
【００１３】
４）実施例の第４の態様によれば、上記３）実施例の第３の態様の方法のうち、ＳＥＣＤＥＤ符号βの全ビット（すなわち(ｎ+1)ｍ+[ｌｏｇ2 (ｎ+1)] ビット）中の数ビット（例えば［ｌｏｇ２(ｎ＋１)］ ビット以下）から、データαのパリティビット中の任意の１ビットを生成する。
【００１４】
５）実施例の第５の態様によれば、上記２）実施例の第２の態様の方法と４）実施例の第４の態様の方法とを同時に実施する。
【００１５】
次に実施例の背景について説明する。電子回路は、エラー検出・訂正を行う回路（すなわちＲＡＳ回路：Reliability, Availability and Serviceability回路：信頼性、可用性及び保守性回路）を含む場合がある。ＲＡＳ回路は電子回路の製造段階で発生した固定故障を検出するため、または製品使用時の電圧変動やα線、中性子線等の影響によるデータエラーを検出・訂正する際に使用される。エラーの検出・訂正を行うためには、ハードウェアとしてのＲＡＳ回路を設けることに加え、エラーの検出・訂正の対象となるデータを冗長化させることが必要である。エラーの検出・訂正の目的の相違によりデータに追加する冗長部分のサイズが異なる。
【００１６】
例えば、8ビットの情報（データ）毎に１ビットのパリティビット（論理的には上記情報8ビットの排他的論理和演算結果と同値な値）を設け、情報8ビットと上記パリティビットとの排他的論理和演算を算出する回路を設けて上記情報の１ビットエラーの検出を行う方法がある。当該方法の場合、仮に全情報のビット数が32ビットであったとすると、パリティビットとして32÷8=4ビットが必要になり、データは合計で36ビットになる。当該方法は、情報に対するエラー発生頻度がそれほど高くなく、万が一情報に複数ビットのエラーが発生しても当該エラーが近隣ビットに集中する傾向がなく、かつＲＡＳ回路にあまり多くの物量・実行レイテンシを与えられない場合に使われることが多い。一例として当該方法はプロセッサの演算器内部において使用される。以下、上記の如く、情報（情報部分）に対しパリティビット（冗長部分）が付されたデータであって、当該情報の１ビットエラーの検出を行うことが可能なデータを以下バイトパリティ符号と称する。
【００１７】
他方、データ壊れの修復が必要な場合、例えばＲＡＭ（Random Access Memory）から読み出したデータを扱う場合、エラー検出だけでなく訂正まで行えるＲＡＳ回路を設けることが多い。例えば32ビットデータに7ビットの冗長ビットを追加（計39ビット）することで、１ビットエラー訂正と２ビットエラー検出が可能な誤り訂正符号（すなわちＥＣＣ：Error Correcting Code）を生成することができる。ここで上記「１ビットエラー訂正と２ビットエラー検出」は、ＳＥＣＤＥＤ（Single bit Error Correct and Double bit Error Detect）の意味を示す。したがってＳＥＣＤＥＤ符号は「１ビットエラー訂正と２ビットエラー検出」符号を意味する。当該エラー訂正まで行えるＲＡＳ回路は、必要となる物量が比較的多く、エラー検出・訂正にも時間（レイテンシ）がかかる。ＳＥＣＤＥＤ符号としては、1ビットエラー訂正のみが可能なハミング符号に、全データの排他的論理和演算から生成される１ビットを付加した「拡張ハミング符号」が用いられることが多い。以下、上記の如く、情報（情報部分）に対しＥＣＣ（冗長部分）が付されたデータであって、当該情報の２ビットエラーの検出及び１ビットエラーの訂正を行うことが可能なデータを以下ＳＥＣＤＥＤ符号と称する。
【００１８】
このようにＲＡＳ回路はその使用の場合の特徴に合わせて使い分けがなされ、使われるデータは、情報の内容が同じであってもＲＡＳ回路の種類に合わせてその形式が異なる。例えばデータがＲＡＭから演算器へ送られる時にはＳＥＣＤＥＤ符号からバイトパリティ符号へと変換がなされる。逆に演算器からＲＡＭへデータが送られる場合には、データはバイトパリティ符号からＳＥＣＤＥＤ符号へと変換される。
【００１９】
次に実施例の説明の便宜上、実施例に関連する技術（以下関連技術と称する）について説明する。関連技術では通常、バイトパリティ符号またはＳＥＣＤＥＤ符号等のうちの冗長部分は、情報部分を利用して直接生成される。例えば、バイトパリティ符号の冗長部分は情報部分8ビットの排他的論理和演算から生成され、32ビットデータのＳＥＣＤＥＤ符合の冗長部分は情報部分32ビット中のいくつかのビットの排他的論理和演算を行うことで生成される。異なる符号を扱う回路同士の間でデータのやりとりを行う場合にも、関連技術では相手の符合を利用して符合の生成を行うということは少ない。当然ながら、２つの異なる符合同士を相互利用しようという考えも少ない。これは、例えばバイトパリティ符号とＳＥＣＤＥＤ符号とを想定した場合、当該２種の符号の冗長部分同士の関連性を見出すのが困難であることがその一因と考えられる。
【００２０】
異なる符合のそれぞれの冗長部分同士を相互に利用して互いの符号の生成に用いることができれば、符号生成等にかかる無駄な回路の削減や実行レイテンシの削減等が期待できる。実施例では、バイトパリティ符号とＳＥＣＤＥＤ符号との間で相互変換を行う際、それぞれの冗長部分を互いに利用することにより、符号生成等にかかる無駄な回路の削減や実行レイテンシの削減等を図る。
【００２１】
実施例ではバイトパリティ符号とＳＥＣＤＥＤ符号との間の冗長部分の関連性が容易に見い出せるようにするため、すなわち相互利用を行いやすくするため、ＳＥＣＤＥＤ符号の生成方法を工夫する。関連技術では、ＳＥＣＤＥＤ符号は上記の如く拡張ハミング符号であって、情報部分Ｎビットに対し冗長部分ｋ=[ｌｏｇ2(Ｎ+1)]+1［ビット］を付して生成される。ただしｋ＜(ｌｏｇ2(Ｎ+ｋ+1))+1 の場合、冗長部分は ｋ+1［ビット］となる。これに対し実施例の生成方法によれば、情報部分Ｎ=ｎｍ［ビット］に対し、冗長部分ｋ= (［ｌｏｇ２(ｎ＋１)］ +ｍ)［ビット］を付してＳＥＣＤＥＤ符号を生成する。
【００２２】
例えばｎ=8, ｍ=4, Ｎ= ｎｍ = 32の場合、関連技術によるＳＥＣＤＥＤ符号の冗長部分は ｋ=([ｌｏｇ2 33]+1)=6+1=7［ビット］であり、実施例によるＳＥＣＤＥＤ符号の冗長部分はｋ=[ｌｏｇ2 9]+4=4+4=8［ビット］である。実施例によるＳＥＣＤＥＤ符号を使うことにより、当該ＳＥＣＤＥＤ符号の冗長部分から、情報ｎビットに対して１ビット設けられるパリティビット（すなわちバイトパリティ符号の冗長部分）を生成することが可能である。また逆に、情報ｎビットに対して１ビット設けられるパリティビット（すなわちバイトパリティ符号の冗長部分）を使って上記ＳＥＣＤＥＤ符号の冗長部分を生成することも可能である。実施例によるＳＥＣＤＥＤ符号を使用することにより、ＲＡＳ回路に含まれるゲート数の削減、ＲＡＳ回路の動作の高速化（ディレイ削減）及びＲＡＳ回路の論理検証の容易性・カバレッジの向上が図れる。
【００２３】
以下に実施例について詳細に説明する。
【００２４】
まず、実施例によるＳＥＣＤＥＤ符号の作り方を説明する。
【００２５】
実施例によるＳＥＣＤＥＤ符号の情報部分のＮビットは、ビット数ｎのブロック（すなわちバイト）ｍ個からできているものとする。すなわちＮ=ｎｍである。後述するように、上記１バイト(ｎビット)に対して１ビットのパリティビットを付けて、１バイト中１ビットのエラー検出ができるデータ（バイトパリティ符号）を生成する。最初に上記ｎｍビットの情報部分からＳＥＣＤＥＤ符号を作るための準備として、以下に数式１乃至数６で示される行列Ｈ（検査行列）を定義する。尚以下の説明において使われる行列およびベクトル空間は全て体F2={0,1}上で定義されるものとする。またｄ= ［ｌｏｇ２(ｎ＋１)］ と置き換えることにより、ＳＥＣＤＥＤ符号の冗長部分のビット数ｋはｋ= ｄ+ｍと書ける。
【００２６】
検査行列Ｈ定義は以下の通りである。
【００２７】
【数１】
2011109476.tif 000003
【００２８】
【数２】
2011109476.tif 000004
【００２９】
【数３】
2011109476.tif 000005
【００３０】
【数４】
2011109476.tif 000006
【００３１】
【数５】
2011109476.tif 000007
【００３２】
数５に示すＢは、任意の0≦ｉ,ｊ≦ｎについて(ｉ≠ｊ)、b(ｉ), b(ｊ)(ｉ≠ｊ)が互いに線形独立な、ｄ次の列ベクトルである。
【００３３】
【数６】
2011109476.tif 000008
【００３４】
数６に示すＣは、任意の0≦ｉ,ｊ≦ｎについて(ｉ≠ｊ)、ｃ(ｉ), ｃ(ｊ)(ｉ≠ｊ)がは互いに線形独立な、ｍ次の列ベクトルである。また当該行列Ｃの各列ベクトルｃ(ｉ) に現れる '1' の回数は奇数である。また当該行列Ｃに、現れる'1'の回数が1回のみの列ベクトルｃ(ｉ) が存在する場合、数５の行列Ｂには、上からｉ番目の成分のみが'1' で、他の成分が'0'であるような列ベクトルが存在してはならない。また当該列ベクトルＣに、現れる'1' の回数が1回のみの列ベクトルが複数ｃ(ｉ) ,...,ｃ(ｊ)存在する場合、行列Ｂには、上からｉ番目の成分のみが'1' で残りが'0'であるような列ベクトルが存在してはならず、...、上からｊ番目の成分のみが'1' で、他の成分が'0'であるような列ベクトルが存在してはならない。
【００３５】
ここで上記行列Ｂ,Ｃの作り方は一通りではない。また後述するように、当該検査行列Ｈに基づき、ＳＥＣＤＥＤ符号を生成する際に使用される生成行列を作成し得る。上記数１の検査行列Ｈは、その成分である列ベクトルを任意に３つ選んだとき、後述するように、当該３つの列ベクトルは互いに線形独立となることが確かめられる。当該条件はＳＥＣＤＥＤ符号の検査行列であるための必要条件である。
【００３６】
当該検査行列Ｈの具体例を数７乃至数１０に示す。すなわち例えば ｎ=8, ｍ=4の場合Ｎ=ｎｍ=32となり、ｄ=[ｌｏｇ2 9]=4となる。更に、数１に示される検査行列Ｈの各要素として、数７に示すものを考える。
【００３７】
【数７】
2011109476.tif 000009
【００３８】
この場合、検査行列Ｈは数８に示す値を有する。
【００３９】
【数８】
2011109476.tif 000010
【００４０】
ここで数８の検査行列HＨに含まれる任意の３個の列ベクトルを採った場合、当該３個の列ベクトル相互間で同一となる組み合わせは存在しない。よって当該３つの列ベクトルは互いに線形独立である。したがって当該検査行列は上記ＳＥＣＤＥＤ符号の検査行列としての必要条件を満たす。
【００４１】
数７，数８の検査行列Ｈとは異なる例として、数９，数１０に示すものも考えられる。
【００４２】
【数９】
2011109476.tif 000011
【００４３】
【数１０】
2011109476.tif 000012
【００４４】
ここで数１０の検査行列HＨに含まれる任意の３個の列ベクトルを採った場合も、当該３個の列ベクトル相互間で同一となる組み合わせは存在しない。よって当該３つの列ベクトルは互いに線形独立である。したがってこの場合も上記ＳＥＣＤＥＤ符号の検査行列としての必要条件を満たす。
【００４５】
数８，数１０に示される上記２つの検査行列（１）,（２）の使い分け方につき後述する。
【００４６】
次にバイトパリティ符号とＳＥＣＤＥＤ符号との間の冗長部分の変換方法につき説明する。
【００４７】
情報部分のＮビットを横に並べた体F2上のベクトルを考える。情報部分は上記の如く、１バイト（＝ｎビット）をｍ個有する。したがって情報部分のベクトルｖは
【００４８】
【数１１】
2011109476.tif 000013
と表せる。ここで情報部分の各成分ｖｉ(ｊ)は0または1（すなわち体F2={0,1}の元 ）である。
【００４９】
さらにこのｖをバイトで区切って、バイトベクトルｖｉ を数１２のように定義する。
【００５０】
【数１２】
2011109476.tif 000014
【００５１】
これを基に、バイトパリティ符号の元ｖｐ及びその冗長部分ｐ、並びに上記検査行列Ｈに基づいて生成されるＳＥＣＤＥＤ符号の元 ｖｃ 及びその冗長部分ｃを、体F2上のベクトルとして、数１３のように定義する。
【００５２】
【数１３】
2011109476.tif 000015
【００５３】
また必要に応じてＳＥＣＤＥＤ符号の冗長部分ｃ はｍ次のベクトル ｃ1 とｄ次のベクトル ｃ2 とにより、数１４のように表すこともある。
【００５４】
【数１４】
2011109476.tif 000016
【００５５】
次にパリティの定義により、上記ｖｐの冗長部分のベクトルｐの各成分ｐｉは、情報部分のベクトルｖの各成分との間で、数１５に示す関係を満たす。
【００５６】
【数１５】
2011109476.tif 000017
【００５７】
数１５中の演算子「+」 は体F2上の加算、すなわち排他的論理和演算（排他的論理和演算）を示す。更に以下、ビット、行列、行列の要素、ベクトル、及びベクトルの要素の各々同士の間の演算を行う演算子「＋」、及び「和」または「加算」の語は、同様に排他的論理和演算を示す。
【００５８】
次に符号の定義により、ＳＥＣＤＥＤ符号の元のベクトルｖｃ が、検査行列Ｈに基づいた符号であるための必要十分条件を、数１６に示す。数１６中、ベクトル右上の「t」は転置（すなわち行ベクトルと列ベクトルとの間の置き換え）を意味する。
【００５９】
【数１６】
2011109476.tif 000018
【００６０】
また数１６中、右辺の「0」はｋ次の零列ベクトルを意味する。上記数１６の式（３）は、ＳＥＣＤＥＤ符号の元ｖｃに反転ビット（＝エラー）がない場合に成り立つ。ＳＥＣＤＥＤ符号の元ｖｃにエラーが含まれる場合につき、以下に説明する。
【００６１】
ＳＥＣＤＥＤ符号の元ｖｃにエラーが含まれる場合、上記数１６の式（３）の左辺の計算結果は上記「0」以外の値を示す。具体的には、１ビットエラーの場合、数１６の式（３）の左辺の計算結果（すなわち列ベクトル）は、検査行列Ｈに含まれる列ベクトルのうちのいずれか１つの列ベクトルと一致する。当該一致した列ベクトルの検査行列Ｈ中の位置に対応する、ＳＥＣＤＥＤ符号の元ｖｃに含まれる情報部分ｖのビットが、当該エラーのビットである。よってエラーのビットの訂正が可能となる。
【００６２】
他方、２ビットエラーの場合、数１６の式（３）の左辺の計算結果の列ベクトルは１ビットエラーの場合同様、上記「0」以外の値となるが、この場合、上記計算結果は、上位ｍビットに含まれる１の数が偶数個（０個を含む）の列ベクトルになる。例えば数８，数１０の式（１）、（２）の検査行列Ｈに含まれる各列ベクトルを見ると分かるように、検査行列Ｈには、上位ｍビットに含まれる１の個数が偶数であるような列ベクトルは存在しない。ここで上位ｍビットとは、例えば数８，数１０の式（１）、（２）の検査行列Ｈの例の場合、当該検査行列Ｈに含まれる各列ベクトル中、上半分の４ビットが該当する。よって上記の如くの上位ｍビットに含まれる１の数が偶数個（０個を含む）の列ベクトルが算出された場合、２ビット（もしくはそれ以上）のエラーが発生したと考えられる。この場合にはエラーのビットを特定することはできない。すなわち検出のみが可能である。このように、実施例による検査行列Ｈに基づいて生成されるＳＥＣＤＥＤ符号によれば、当該ＳＥＣＤＥＤ符号の情報部分ｖの１ビットエラーを訂正可能であり２ビットエラーを検出可能である。よって実施例によるＳＥＣＤＥＤ符号はＳＥＣＤＥＤ符号としての本来の機能を有することが分かる。
【００６３】
次に、数１６の式（３）の左辺Ｈ・ｖｃtを、上記検査行列Ｈの各要素を使用して、数１７のように書き換えることができる。
【００６４】
【数１７】
2011109476.tif 000019
【００６５】
また数１７中、最下段の式の各項は、数１８のように書き換えることができる。
【００６６】
【数１８】
2011109476.tif 000020
【００６７】
したがって上記数１７中、最下段の式の各項は数１９のように表し得る。
【００６８】
【数１９】
2011109476.tif 000021
【００６９】
また数１７中、最下段の式の他の各項は、数２０のように表し得る。
【００７０】
【数２０】
2011109476.tif 000022
【００７１】
したがって数１６の式（３）から数２１の上段の関係式が得られ、当該関係式から数２１の関係式（４）が得られる。
【００７２】
【数２１】
2011109476.tif 000023
【００７３】
尚、上記の計算中、上記体F2の性質、−1=+1、が使用されている。
【００７４】
数２１の関係式（４）は実施例によるＳＥＣＤＥＤ符号の冗長部分を求める式であり、当該冗長部分は列ベクトルの形で求まる。
【００７５】
当該関係式（４）から、当該列ベクトルの下位ｄビット(すなわち ｃ2t )は情報部分ｖのいくつかの成分の和から生成され、上位ｍビット(すなわちｃ1t)は，上記生成され得た冗長部分の下位ｄビット(すなわちｃ2t)のいくつかの成分とパリティ１ビットｐtとの和によって生成されることが分かる。特に、上記下位ｄビットはＢ・ｖｉ-1tの形(ｉ=1,...,ｍ)の列ベクトルを繰り返し加算することで得られる。このため、例えば、ｖｉ-1tに対する、行列Ｂによる変換回路を１つだけ設け、当該変換回路から得られるＢ・ｖｉ-1tを、ｉを更新しながら毎サイクル繰り返し加算することによってｃ2t を算出するような回路を実現可能である。その結果ｃ2tを生成する回路の規模を、通常の約1/ｍに抑えることができる。他方レイテンシを重視する場合には上記関係式（４）に示される多項式Ｂ・ｖ0t + Ｂ・ｖ1t + … + Ｂ・ｖm-1tを直接求める回路を設ければ良い。更に、上記２種の回路を組み合わせたハイブリッド版の回路も考え得る。
【００７６】
また上記関係式（４）の上位ｍビットにつき、数２２の関係式（５）を得る。
【００７７】
【数２２】
2011109476.tif 000024
【００７８】
数２２の関係式（５）は実施例によるバイトパリティ符号の冗長部分を求める式であり、当該関係式（５）によれば、パリティビットは実施例によるＳＥＣＤＥＤ符号の冗長部分ｃ1,ｃ2のみから生成可能である。
【００７９】
ここで関係式（５）の右辺の列ベクトルの１つの成分に着目し、関係式（５）の右辺の計算に必要な項の数を考える。そうすると、当該右辺中、最初のｃ1t の部分で最大１個、次のＣ・ｃ2t の部分で最大ｄ個の項が出現することが分かる。よって実施例によるパリティビットの生成に必要とされる項数はｄ+1=［ｌｏｇ２(ｎ＋１)］+1以下であることが分かる。
【００８０】
例えば ｎ=8 場合を考えると、数１５から、関連技術によるパリティビットの生成には8個の項が必要だが、実施例によれば、ｄ+1=[ｌｏｇ2(8+1)]+1=[ｌｏｇ2 9]+1=5 であり、最大でも5個の項のみを使用してパリティビットを生成可能である。同様にｎ=16 の場合、関連技術では16個の項が必要であるのに対し、実施例によれば最大でも[ｌｏｇ2(16+1)]+1=6［個］の項で済む。
【００８１】
また、関係式（５）から、実施例によるパリティビットの生成方法によれば、パリティビット生成時、加算する項数を決めるのは行列Ｃであることが分かる。したがって当該加算する項数を最も少なく抑えるためには、当該行列Ｃとして、各列ベクトルの成分に、'1'が1回のみ現れるものを使用すればよい。すなわち行列Ｃが正方行列の場合には、行列Ｃが置換行列（単位行列を含む）であればよく、一例として数９，数１０に示す検査行列（２）に使用される数９中の行列Ｃが挙げられる。この場合に必要な項数は２個（後述する数３１の式（２−２）参照）であり、ｃ1tとｃ2tの成分それぞれ１個ずつの和（すなわち排他的論理和演算）を算出するだけで全てのパリティビットが生成できる。この例は、ＳＥＣＤＥＤ符号の形式でメモリに保存されたデータをバイトパリティ符号の形式のデータに変換して読み出す場合に極めて有効である。すなわちこの場合のデータ変換に必要な回路では、パリティビットの各1ビットに対し２入力ＸＯＲ回路 を１個のみ設ければよい（後述する図１０参照）。
【００８２】
以下に、具体的にｎ=8,ｍ=4の場合の例につき説明する。検査行列Ｈとしては、数８に示される式（１）を使用する。当該例の場合、各記号の内容は数２３に示すとおりである。
【００８３】
【数２３】
2011109476.tif 000025
【００８４】
これらの内容をＳＥＣＤＥＤ符号の生成の際に使用される関係式（４）に当てはめると、数２４のように、ＳＥＣＤＥＤ符号の冗長部分ｃ0,...,ｃ7が得られる。
【００８５】
【数２４】
2011109476.tif 000026
【００８６】
数２４中、式（１−１）から、ＳＥＣＤＥＤ符号の冗長部分としての列ベクトル（ｃ0,...,ｃ7）の各成分の生成において、加算する項数が最も多いもので12個（ｃ4,...,ｃ7）、最も少ないもので4個（ｃ0,...,ｃ3）であることが分かる。これらを合計すると、12×4 + 4×4 = 64となり、全体で64個の項が使用される。
【００８７】
他方、複数サイクルによる生成を考えると、数２４中、式（１−２）から、当該冗長部分の下位４ビット（ｃ4,...,ｃ7）の各１ビットは、「3個の項の加算」×4［サイクル］で生成し得ることが分かる。このように実施例によれば、ＳＥＣＤＥＤ符号を生成する回路の物量を更に減らすことができ、必要な演算の簡略化が可能である。
【００８８】
ここで比較のため、関連技術によるＳＥＣＤＥＤ符号の検査行列を用いて32ビットデータのＳＥＣＤＥＤ符号を生成する場合について説明する。この場合検査行列として数２５に示すものを用いるが、これは符号生成を行う際の加算回数が最も少なくなるものの一つを選んだものである。
【００８９】
【数２５】
2011109476.tif 000027
【００９０】
この場合、数２６に示すようにＳＥＣＤＥＤ符号の冗長部分としての列ベクトル（ｃ0,...,ｃ6）が得られる。
【００９１】
【数２６】
2011109476.tif 000028
【００９２】
より具体的には、例えば数２５の検査行列中、１行目の１,...,３２番目までの値が、数２３の最上段に示す情報部分ｖの３２ビットとそれぞれ掛け合わされる。その結果当該検査行列の１行目の３２個のうちの"1"に対応する情報部分ｖのそれぞれのビットの和として、数２６の右辺の行列の１行目が得られる。
【００９３】
数２６の例の場合、ＳＥＣＤＥＤ符号の冗長部分の各成分の生成において、加算する項数が最も多いものが15個（ｃ6）、少ない所で11個(ｃ3)である。合計すると、全体として、14×3 + 11 + 13×2 + 15 = 94[個]となる。上記の如く実施例の場合、全体が64個であったため、94/64 = 1.46875となり、当該関連技術による例の場合、実施例による例の場合の約1.5倍の数の項が使用されることが分かる。
【００９４】
また数２５，２６に示す関連技術による例の場合、実施例による例の場合に可能であった演算の簡略化（数２４中、式（１−２））を行うことができない。
【００９５】
このように、ＳＥＣＤＥＤ符号の冗長部分の生成に要される演算量の観点から、関連技術よりも実施例の方が優れていると言える。言い換えると、ＳＥＣＤＥＤ符号の冗長部分の生成に要される回路の規模・設計の自由度の観点から、関連技術よりも実施例の方が優れていると言える。また演算処理のディレイ（レイテンシ）の観点からも、関連技術よりも実施例の方が優れていると言える。
【００９６】
次にバイトパリティ符号の冗長部分を生成する際に使用される数２２の関係式（５）に、数２３を当てはめると数２７の関係式（１−３）が得られる。
【００９７】
【数２７】
2011109476.tif 000029
【００９８】
当該関係式（１−３）から、実施例による例の場合、パリティビット(ｐ0,...,ｐ3)の各１ビットの生成に必要な項は４個であることが分かる。
【００９９】
他方関連技術によるパリティビットの生成の例の場合、数２８のようになる。
【０１００】
【数２８】
2011109476.tif 000030
【０１０１】
したがって関連技術による例の場合、パリティビット(ｐ0,...,ｐ3)の各１ビットの生成に必要な項は８個であり、数２７に示される実施例による例の場合の４個に比し、２倍である。したがってバイトパリティ符号の生成についても、必要な回路規模等の観点から、実施例の方が関連技術よりも優れていると言える。
【０１０２】
また数１に示される如くの、実施例によるＳＥＣＤＥＤ符号の検査行列Ｈ内の各要素から導き出される数２１の関係式（４）において、行列Ｂが繰り返し現れる。これはＳＥＣＤＥＤ符号の冗長部分の生成の際の論理において小規模論理モジュールを繰り返し使えることを意味し、例えば当該論理の論理検証の際、上記小規模モジュール単位に切り分けて論理を検証し得る。他方関連技術のハミング符号によればＳＥＣＤＥＤ符号の冗長部分を生成する回路には特に規則性がなく、論理検証の単位は検査行列全体となる。すなわち、実施例によれば関連技術に比して論理回路の論理検証が容易となり、その結果、検証カバレッジが向上する。
【０１０３】
次に、数１０の検査行列（２）を使用する場合について説明する。検査行列（２）に基づいて数２１の関係式（４）を計算すると、数２９，数３０を経て、数３０の関係式（２−１）が得られる。
【０１０４】
【数２９】
2011109476.tif 000031
【０１０５】
【数３０】
2011109476.tif 000032
【０１０６】
この場合のＳＥＣＤＥＤ符号の冗長部分の生成に係る論路では、数３０の関係式（２−１）から、加算する項数として最も多いもの(ｃ5,ｃ6)が２０個、少ないもの（ｃ0,...,ｃ3）が２個である。すなわち数８の検査行列（１）を使用した場合の数２４の関係式（１−２）よりもバラツキがある。当該関係式（２−１）全体では80個の項を使用している。これは関連技術の場合に必要な項数（９４個）よりも少ないが、検査行列（１）の場合に比べると多い。他方バイトパリティ符号の冗長部分を生成する数２２の関係式（５）に検査行列（２）を当てはめると、数３１の関係式（２−２）が得られる。
【０１０７】
【数３１】
2011109476.tif 000033
【０１０８】
当該関係式（２−２）から、パリティビットの各１ビットを生成する際に必要な項数は、２個であることが分かる。したがってＳＥＣＤＥＤ符号の冗長部分を生成する論理を軽くしたい場合に検査行列（１）を使用し、バイトパリティ符号の冗長部分を生成する論理を軽くしたい場合に検査行列（２）を使用する、というように、目的に応じて検査行列を使い分けることが望ましい。
【０１０９】
図１は関連技術によるＳＥＣＤＥＤ符号の冗長部分を生成する回路の構成例を示す。すなわち当該回路は数３２の論理を実現する回路である。
【０１１０】
【数３２】
2011109476.tif 000034
【０１１１】
ここで数３２中の各Gｉ(ｖ) （ｉ=0,...,ｋ-1），すなわち図１中の各Gｉ（ｉ=0,...,ｋ-1）、１１０，１１１，...，１１ｍ−１，１１ｍ，...，１１ｋ−１ の各々は、情報部分ｖを入力とする関数、すなわちベクトルｖのいくつかの成分を入力とする多入力ＸＯＲ回路である。また数３２、右辺のGは、ＳＥＣＤＥＤ符号の冗長部分を生成する際に使用される生成行列である。
【０１１２】
図２は実施例によるＳＥＣＤＥＤ符号の冗長部分を生成する回路の構成例を示す。すなわち当該回路は数３３，数３４の論理を実現する回路である。
【０１１３】
【数３３】
2011109476.tif 000035
【０１１４】
【数３４】
2011109476.tif 000036
【０１１５】
数３３は数２１の関係式（４）中、上位ｍビットの部分に対応し、数３４は数２１の関係式（４）中、下位ｄビットの部分に対応する。
【０１１６】
数３３中の各Ｃｉ(ｃ2)（ｉ=0,...,ｍ-1），すなわち図２中の各Ｃｉ（ｉ=0,...,ｍ-1）、１３０，１３１，...，１３ｍ−１の各々は、 ｃ2を入力とする関数、すなわちベクトルｃ2のいくつかの成分を入力とする多入力ＸＯＲ回路である。また数３３の右辺のＣは、数６に示す、「検査行列Ｈの定義」中に定義されている行列Ｃである。
【０１１７】
数３４中、各Gｉ(ｖ)（ｉ=ｍ,...,ｋ-1），すなわち図２中の各Gｉ（ｉ=ｍ,...,ｋ-1）、１２ｍ，...，１２ｋ−１の各々は、情報部分ｖを入力とする関数、すなわちベクトルｖのいくつかの成分を入力とする多入力ＸＯＲ回路である。
【０１１８】
また数３４中、各Ｂｉ(ｖｊ)、図２中、各Ｂｉはｖｊを入力とする関数、すなわちベクトルｖj のいくつかの成分を入力とする多入力ＸＯＲ回路である。また数３４の右辺のＢは、数５に示す、「検査行列Ｈの定義」中で定義されている行列Ｂである。
【０１１９】
図３は関連技術によるバイトパリティ符号の冗長部分を生成する回路の構成例を示す。
【０１２０】
図３中、各ｐｉ（ｉ=0,...,ｍ-1）は、数３５（数１５と同様）で定義される、パリティビットの各１ビットである。
【０１２１】
また図３中、１４ｉ(ｉ=0,...,ｍ-1)は各々、情報部分ｖの各成分ｖｉ(j)(ｉ=0,...,ｍ-1, j=0,...,ｎ-1)を入力とするｎ入力ＸＯＲ回路である。
【０１２２】
【数３５】
2011109476.tif 000037
【０１２３】
図４は、実施例によるバイトパリティ符号の冗長部分を生成する回路の構成例を示し、すなわち数３６の論理を実現する回路例を示す。
【０１２４】
【数３６】
2011109476.tif 000038
【０１２５】
図４中のＣｉ（ｉ=0,...,ｍ-1）、１５０，１５１，...，１５ｍ−１、すなわち数３６中のＣｉ(ｃ2)（ｉ=0,...,ｍ-1）の各々は、ｃ2を入力とする関数、すなわちベクトルｃ2のいくつかの成分を入力とする多入力ＸＯＲ回路である。数３６の右辺のＣは、数６に示す、「検査行列Ｈの定義」中で定義されている行列Ｃである。
【０１２６】
次に図５乃至図１０とともに、図１乃至図４に示す回路構成例の更に具体的な回路構成例について説明する。
【０１２７】
この場合、情報部分として、ｎ=8, ｍ=4とした３２ビットのデータを想定する。
【０１２８】
３２ビットの情報部分ｖを、数３７のように表す。
【０１２９】
【数３７】
2011109476.tif 000039
【０１３０】
ただし、必要に応じて情報部分ｖの成分の添字を数３８のように表すことがある。
【０１３１】
【数３８】
2011109476.tif 000040
【０１３２】
数３８のように添字を書き直したｖの成分のビットは、数３７に示すｖの成分のビットとの間で、それぞれ左から順に、数３９に示す対応関係を有する。
【０１３３】
【数３９】
2011109476.tif 000041
【０１３４】
またｍ=4なので、パリティビットは数４０に示すように、4ビットである。
【０１３５】
【数４０】
2011109476.tif 000042
【０１３６】
よってバイトパリティ符号（すなわち上記α）は数４１のように表され、32+4=36［ビット］のデータである。
【０１３７】
【数４１】
2011109476.tif 000043
【０１３８】
また数４２の通り、
【０１３９】
【数４２】
2011109476.tif 000044
ｄ=[ｌｏｇ2(8+1)]=4である。よってＳＥＣＤＥＤ符号（すなわち上記β）のサイズは、α+4=36+4=40［ビット］である。またＳＥＣＤＥＤ符号βの冗長部分ｃのサイズは、40−32=8[ビット]である。更に、ＳＥＣＤＥＤ符号βの冗長部分ｃ及びＳＥＣＤＥＤ符号βは、数４３のように表される。
【０１４０】
【数４３】
2011109476.tif 000045
【０１４１】
更に上記「βの冗長部分のうちの[ｌｏｇ2 (ｎ+1)] ビット＝β*」（すなわちｄ［ビット］）は数４４に示される。
【０１４２】
【数４４】
2011109476.tif 000046
【０１４３】
又上記「残りのβの冗長部分ｍビット」は数４５に示される。
【０１４４】
【数４５】
2011109476.tif 000047
【０１４５】
図５は図１に示す回路構成例の更に具体的な回路構成例を示す図であり、７個のＸＯＲ回路１１０，...，１１6を有し、数２６の論理を実現する回路である。
【０１４６】
図６は図２に示す回路構成例の更に具体的な回路構成例（その１）を示し、バイトパリティ符号からＳＥＣＤＥＤ符号を生成する変換回路（図１１，１２中、ＥＣＣ生成回路２）の構成例を示す。図６の回路は、数８の関係式（１）で示される検査行列Ｈに基づくものであり、数２４の関係式（１−１）、（１−２）の論理を実現する。図６中、４個のＸＯＲ回路１３０，...，１３３はＳＥＣＤＥＤ符号の冗長部分のうちの上位ｍビット(ｃ0,...,ｃ3)を生成し、他の４個のＸＯＲ回路１２４，...，１２７はＳＥＣＤＥＤ符号の冗長部分のうちの下位ｄビット(ｃ4,...,ｃ7)を生成する。
【０１４７】
図６に示す如く実施例によれば、ＳＥＣＤＥＤ符号βの冗長部分のうちの下位ｄビット(ｃ4,...,ｃ7) 、すなわち[ｌｏｇ2 (ｎ+1)]=4［ビット］（β*）を、バイトパリティ符号αの情報部分ｖを基に生成する。そして残りのβの冗長部分（すなわち上記ｍ=4［ビット］）(ｃ0,...,ｃ3)を、バイトパリティ符号αのパリティビット(ｐ0,...,ｐ3)及び上記生成されたβ*(ｃ4,...,ｃ7)のみから生成する。
【０１４８】
図７は図２に示す回路構成例の更に具体的な回路構成例（その２）を示し、実施例による、バイトパリティ符号からＳＥＣＤＥＤ符号を生成する変換回路（図１１，１２中、ＥＣＣ生成回路２）の構成例を示す。図７の回路は、数１０の関係式（２）で示される検査行列Ｈに基づくものであり、数３０の関係式（２−１）の論理を実現する。図７中、４個のＸＯＲ回路１３Ａ０，...，１３Ａ３はＳＥＣＤＥＤ符号の冗長部分のうちの上位ｍビット(ｃ0,...,ｃ3)を生成し、他の４個のＸＯＲ回路１２Ａ４，...，１２Ａ７はＳＥＣＤＥＤ符号の冗長部分のうちの下位ｄビット(ｃ4,...,ｃ7)を生成する。
【０１４９】
図７に示す如く、実施例によれば図６の場合同様、ＳＥＣＤＥＤ符号βの冗長部分のうちの下位ｄビット(ｃ4,...,ｃ7) 、すなわち[ｌｏｇ2 (ｎ+1)]=4[ビット]（β*）を、バイトパリティ符号αの情報部分ｖを基に生成する。そして残りのβの冗長部分（すなわち上記ｍ= 4［ビット］）(ｃ0,...,ｃ3)を、バイトパリティ符号αのパリティビット(ｐ0,...,ｐ3)及び上記生成されたβ*(ｃ4,...,ｃ7)のみから生成する。
【０１５０】
図８は図３に示す回路構成例の更に具体的な回路構成例を示し、関連技術によるバイトパリティ符号を生成する回路であり、４個のＸＯＲ、１４０，...，１４３を有し、数２８の論理を実現する。
【０１５１】
図９は図４に示す回路構成例の更に具体的な回路構成例（その１）を示し、実施例による、ＳＥＣＤＥＤ符号からバイトパリティ符号を生成する変換回路（図１１，１２中、パリティ生成回路５）の回路構成例を示す。図９の回路は、数８の関係式（１）で示される検査行列Ｈに基づくものであり、４個のＸＯＲ、１５０，...，１５３によって、数２７の関係式（１−３）の論理を実現する。実施例によれば当該回路により、上記の如く、ビット数＝[ｌｏｇ2 (ｎ+1)]=4［ビット］以下のビット（図９の例の場合４ビット）から、バイトパリティ符号αのパリティビット中の任意の１ビットを生成する。
【０１５２】
図１０は図４に示す回路構成例の更に具体的な回路構成例（その２）を示し、実施例による、ＳＥＣＤＥＤ符号からバイトパリティ符号を生成する変換回路（図１１，１２中、パリティ生成回路５）の回路構成例を示す。図１０の回路は、数１０の関係式（２）で示される検査行列Ｈに基づくものであり、４個のＸＯＲ、１５Ａ０，...，１５Ａ３によって、数３１の関係式（２−２）の論理を実現する。実施例によれば当該回路により、上記の如く、ビット数＝[ｌｏｇ2 (ｎ+1)]=4［ビット］以下のビット（図１０の例の場合２ビット）から、バイトパリティ符号αのパリティビット中の任意の１ビットを生成する。
【０１５３】
図１１は、実施例によるデータ演算装置の一例のブロック図である。図１１のデータ演算装置は図示の如く、演算器１，ＥＣＣ生成回路２，メモリ３，エラー検出・訂正回路４及びパリティ生成回路５を有する。
【０１５４】
メモリ３には上記実施例によるＳＥＣＤＥＤ符号の形式のデータが保持される。演算器１はデータに対し演算処理を実行する。演算器１が演算処理を実行する際、メモリ３から演算処理の対象となるデータを読み出す。当該読み出されたデータは上記の如く、実施例によるＳＥＣＤＥＤ符号の形式のデータであり、当該データに対し、まずエラー検出・訂正回路４がエラー検出・訂正処理を実行する。エラー検出・訂正回路４は上記ＲＡＳ回路を含み、当該メモリ３から読み出されたＳＥＣＤＥＤ符号の冗長部分を使用し、当該ＳＥＣＤＥＤ符号の情報部分のエラーを検出する。上記の如く、ＳＥＣＤＥＤ符号は、１ビットエラーに対し当該エラーを検出し且つ訂正し、２ビットエラーに対し当該エラーを検出することを可能にする構成を有する。したがってエラー検出・訂正回路４は、与えられたＳＥＣＤＥＤ符号の情報部分の１ビットエラーに対し当該エラーを検出し且つ訂正し、２ビットエラーに対し当該エラーを検出する構成を有する。エラー検出・訂正回路４は当該エラー検出・訂正処理を実行後、ＳＥＣＤＥＤ符号をパリティ生成回路５に渡す。またエラー検出・訂正回路４は、ビットのエラーを訂正した際、訂正後のビットをメモリ３に上書きする。
【０１５５】
パリティ生成回路５はエラー検出・訂正回路４から与えられたＳＥＣＤＥＤ符号をバイトパリティ符号に変換し、変換後のバイトパリティ符号を演算器１に渡す。パリティ生成回路５は例えば図４の如く構成を有する。その場合パリティ生成回路５はＳＥＣＤＥＤ符号の冗長部分に基づき、ＸＯＲ回路１５０,...,１５ｍ−１を使用し、バイトパリティ符号の冗長部分であるパリティビットｐ0,...,ｐm-1を生成する。パリティ生成回路５は当該生成されたパリティビットをＳＥＣＤＥＤ符号の情報部分に付し、バイトパリティ符号を得、演算器１に渡す。
【０１５６】
演算器１はパリティ生成回路５から渡されたバイトパリティ符号に対し演算処理を実行し、実行後のバイトパリティ符号をＥＣＣ生成回路２に渡す。ＥＣＣ生成回路２は渡されたバイトパリティ符号をＳＥＣＤＥＤ符号に変換し、変換後のＳＥＣＤＥＤ符号をメモリ３に書き込む。
【０１５７】
ＥＣＣ生成回路２は例えば図２の如くの構成を有する。その場合ＥＣＣ生成回路２はバイトパリティ符号の情報部分ｖに基づき、ＸＯＲ回路１２ｍ,...,１２ｋ−１を使用してＳＥＣＤＥＤ符号の冗長部分の下位ｄビット(ｃm,...,ｃｋ-1)を生成する。次にＥＣＣ生成回路２は当該ＳＥＣＤＥＤ符号の冗長部分の下位ｄビット(ｃm,...,ｃｋ-1)及びバイトパリティ符号のパリティビット(ｐ0,...,ｐm-1)に基づき、ＸＯＲ回路１３０,...,１３ｍ−１を使用してＳＥＣＤＥＤ符号の冗長部分の上位ｍビット(ｃ１,...,ｃｍ-1)を生成する。そしてＥＣＣ生成回路２は当該生成されたＳＥＣＤＥＤ符号の冗長部分の下位ｄビット及び上位ｍビットをバイトパリティ符号の情報部分に付してＳＥＣＤＥＤ符号を得、当該ＳＥＣＤＥＤ符号をメモリ３に書き込む。
【０１５８】
図１２は実施例によるデータ演算装置の他の例のブロック図である。
【０１５９】
図１２のデータ演算装置の他の例は、メモリ３から演算器１への読み出し速度を優先する構成を有する。
【０１６０】
図１２のデータ演算装置は図示の如く、演算器１，ＥＣＣ生成回路２，メモリ３，エラー検出・訂正回路４及びパリティ生成回路５を有する。当該演算器１，ＥＣＣ生成回路２，メモリ３，エラー検出・訂正回路４及びパリティ生成回路５はそれぞれ、上述した図１１のデータ演算装置の演算器１，ＥＣＣ生成回路２，メモリ３，エラー検出・訂正回路４及びパリティ生成回路５と同様の構成及び機能を有する。
【０１６１】
図１２の構成において、メモリ３には上記実施例によるＳＥＣＤＥＤ符号の形式のデータが保持される。演算器１が演算処理を実行する際、メモリ３から演算処理の対象となるデータを読み出す。当該読み出されたデータはパリティ生成回路５に渡される。パリティ生成回路５は図１１の例で説明した方法によって与えられたＳＥＣＤＥＤ符号をバイトパリティ符号に変換し、変換後のバイトパリティ符号を演算器１に渡す。また上記読み出されたデータは同時にエラー検出・訂正回路４にも渡される。エラー検出・訂正回路４は渡されたデータ、すなわちＳＥＣＤＥＤ符号に対し当該エラー検出・訂正処理を実行後、結果を演算器１に報告する。またエラー検出・訂正回路４はＳＥＣＤＥＤ符号の情報部分のビットのエラーを訂正した際、訂正後のビットをメモリ３に上書きする。
【０１６２】
演算器１はエラー検出・訂正回路４から得たエラー検出・訂正処理の結果に基づき、パリティ生成回路５から渡されたバイトパリティ符号に対し必要に応じてエラーの訂正を実行する。演算器１は当該必要に応じてエラー訂正が実行されたバイトパリティ符号に対し演算処理を実行する。演算器１は当該演算処理の実行後のバイトパリティ符号をＥＣＣ生成回路２に渡す。ＥＣＣ生成回路２は渡されたバイトパリティ符号を図１１の例で説明した方法によってＳＥＣＤＥＤ符号に変換し、変換後のＳＥＣＤＥＤ符号をメモリ３に書き込む。
【０１６３】
以上の実施例を含む実施形態に関し、更に以下の付記を開示する。
（付記１）
各バイトがｎビットを有するｍバイトの情報部分と、前記ｍバイトの情報部分に対しそれぞれ設けられるｍビットのエラー検出用ビットの冗長部分とを含むエラー検出用ビット付きデータの前記ｍバイトの情報部分を入力して、エラー検出・訂正符号付きデータの冗長部分のうち、ｌｏｇ２（ｎ＋１）ビットの一の部分を、ｌｏｇ２（ｎ＋１）の小数点以下を切り上げて生成する第１の排他的論理和演算回路と、
前記第１の排他的論理和演算回路が生成した前記エラー検出・訂正符号付きデータの冗長部分のうちの前記一の部分と前記エラー検出用ビットとを入力して、ｍビットの他の部分を生成する第２の排他的論理和演算回路とを有することを特徴とするエラー検出・訂正符号生成回路。
（付記２）
前記エラー検出用ビット付きデータの前記情報部分の各バイトをｎ個の要素を有するバイトベクトル、前記エラー検出用ビット付きデータの前記情報部分をｍ個の要素を有する情報ベクトルで表現した場合において、前記情報ベクトル及び前記エラー検出用ビットの行列演算によって前記一の部分のベクトル及び前記他の部分のベクトルを生成するエラー検出・訂正符号生成式にしたがい、前記情報ベクトルの値を入力して、前記第１の排他的論理和演算手段が前記一の部分を生成し、前記第１の部分及び前記エラー検出用ビットを入力して、前記第２の排他的論理和演算手段が前記他の部分を生成することを特徴とする付記１記載のエラー検出・訂正符号生成回路。
（付記３）
前記エラー検出・訂正符号付きデータは、（ｎ＋１）ｍ＋［ｌｏｇ２（ｎ＋１）］ビットを有し（［ｌｏｇ２（ｎ＋１）］はｌｏｇ２（ｎ＋１）について小数点以下の切り上げたものを表す）、前記ｍｎビットは前記情報部分であり、他のｍ＋［ｌｏｇ２（ｎ＋１）］ビットは前記冗長部分であり、
当該冗長部分のうちの最大［ｌｏｇ２（ｎ＋１）］ビットを入力して、前記エラー検出用ビットを生成する第３の排他論理和演算回路を更に有することを特徴とする付記１記載のエラー検出・訂正符号生成回路。
（付記４）
前記エラー検出用ビット付きデータの前記情報部分の各バイトをｎ個の要素を有するバイトベクトルｖｉ（ｖｉ（０），ｖｉ（１），...，ｖｉ（ｎ−２），ｖｉ（ｎ−１））、前記エラー検出用ビット付きデータの前記情報部分をｍ個の要素を有する情報ベクトルｖ（ｖ０，ｖ１，...，ｖｍ−１）、尚前記エラー検出用ビット付きデータの前記冗長部分は前記ｍ個の要素を有する情報ベクトルの要素に対しそれぞれ設けられる、ｍビットのエラー検出用ビットｐ（ｐ０，ｐ１，...，ｐｍ−２，ｐｍ−１）、前記エラー検出用ビット付きデータをバイトパリティ符号ｖｐ（ｖ，ｐ）で表現した場合において、前記エラー検出・訂正符号生成式
【数４６】
2011109476.tif 000048
にしたがい、前記バイトパリティ符号ｖｐ（ｖ，ｐ）の前記情報ベクトルｖ（ｖ０，ｖ１，...，ｖｍ−１）の値と前記エラー検出用ビットｐ（ｐ０，ｐ１，...，ｐｍ−２，ｐｍ−１）の値とを入力し、前記第１の排他的論理和演算手段が、前記エラー検出・訂正符号付きデータの前記冗長部分のうちの前記一の部分であるｄ次のベクトルｃ２の値を生成し、前記第２の排他的論理和演算手段が、前記エラー検出・訂正符号付きデータの前記冗長部分のうちの前記他の部分であるｍ次のベクトルｃ１の値を生成し、
前記エラー検出用ビットｐ（ｐ０，ｐ１，...，ｐｍ−２，ｐｍ−１）の各ビットｐｉと、上記情報ベクトルｖ（ｖ０，ｖ１，...，ｖｍ−１）の各要素であるバイトベクトルｖｉ（ｖｉ（０），ｖｉ（１），...，ｖｉ（ｎ−２），ｖｉ（ｎ−１））とは以下の関係
ｐｉ＝ｖｉ（０）＋ｖｉ（１）＋...＋ｖｉ（ｎ−２）＋ｖｉ（ｎ−１）
（「＋」は排他的論理和演算、「ｔ」は行列の転置を表す）を有することを特徴とする付記２記載のエラー検出・訂正符号生成回路。
（付記５）
ｍｎビットの情報部分と、［ｌｏｇ２（ｎ＋１）］ビットの一の部分及びｍビットの他の部分を有する冗長部分とを有する（ｎ＋１）ｍ＋［ｌｏｇ２（ｎ＋１）］ビットのエラー検出・訂正符号付きデータ（［ｌｏｇ２（ｎ＋１）］はｌｏｇ２（ｎ＋１）について小数点以下の切り上げたものを表す）のうち、
前記冗長部分の最大［ｌｏｇ２（ｎ＋１）］ビットを有する第１のデータを入力して第１のエラー検出用ビットを生成する第１の排他的論理和演算回路と、
前記冗長部分の最大［ｌｏｇ２（ｎ＋１）］ビットを有する第２のデータを入力して第２のエラー検出用ビットを生成する第２の排他的論理和演算回路と、
を有することを特徴とするエラー検出用ビット生成回路。
（付記６）
エラー検出・訂正符号生成回路が有する第１の排他的論理和演算回路が、各バイトがｎビットを有するｍバイトの情報部分と、前記ｍバイトの情報部分に対しそれぞれ設けられるｍビットのエラー検出用ビットを有する冗長部分とを含むエラー検出用ビット付きデータの前記情報部分を入力して、エラー検出・訂正符号付きデータの冗長部分のうち、ｌｏｇ２（ｎ＋１）ビットの一の部分を、ｌｏｇ２（ｎ＋１）の小数点以下を切り上げて生成するステップと、
前記エラー検出・訂正符号生成回路が有する第２の排他的論理和演算回路が、前記ｌｏｇ２（ｎ＋１）ビットの一の部分を生成するステップで生成された前記一の部分と前記エラー検出用ビットとを入力して、ｍビットの他の部分を生成するステップとを有することを特徴とするエラー検出・訂正符号生成回路の制御方法。
（付記７）
前記エラー検出用ビット付きデータの前記情報部分の各バイトをｎ個の要素を有するバイトベクトル、前記エラー検出用ビット付きデータの前記情報部分をｍ個の要素を有する情報ベクトルで表現した場合において、前記情報ベクトル及び前記エラー検出用ビットの行列演算によって前記一の部分のベクトル及び前記他の部分のベクトルを生成するエラー検出・訂正符号生成式にしたがい、前記ｌｏｇ２（ｎ＋１）ビットの一の部分を生成するステップにおいて、前記情報ベクトルを入力して前記一の部分を生成し、前記ｍビットの他の部分を生成するステップにおいて、前記第１の部分及び前記エラー検出用ビットを入力して前記他の部分を生成することを特徴とする付記６記載のエラー検出・訂正符号生成回路の制御方法。
（付記８）
前記エラー検出・訂正符号付きデータは、（ｎ＋１）ｍ＋［ｌｏｇ２（ｎ＋１）］ビットを有し、前記ｍｎビットは前記情報部分であり（［ｌｏｇ２（ｎ＋１）］はｌｏｇ２（ｎ＋１）について小数点以下の切り上げたものを表す）、他のｍ＋［ｌｏｇ２（ｎ＋１）］ビットは前記冗長部分であり、
前記エラー検出・訂正符号生成回路が有する第３の排他的論理和演算回路が、当該冗長部分のうちの最大［ｌｏｇ２（ｎ＋１）］ビットを入力して、前記エラー検出用ビットの各ビットを生成するステップを更に有することを特徴とする付記６記載のエラー検出・訂正符号生成回路の制御方法。
（付記９）
前記エラー検出用ビット付きデータの前記情報部分の各バイトをｎ個の要素を有するバイトベクトルｖｉ（ｖｉ（０），ｖｉ（１），...，ｖｉ（ｎ−２），ｖｉ（ｎ−１））、前記エラー検出用ビット付きデータの前記情報部分をｍ個の要素を有する情報ベクトルｖ（ｖ０，ｖ１，...，ｖｍ−１）、尚前記エラー検出用ビット付きデータの前記冗長部分は前記ｍ個の要素を有する情報ベクトルの要素に対しそれぞれ設けられる、ｍビットのエラー検出用ビットｐ（ｐ０，ｐ１，...，ｐｍ−２，ｐｍ−１）、前記エラー検出用ビット付きデータをバイトパリティ符号ｖｐ（ｖ，ｐ）で表現した場合において、前記エラー検出・訂正符号生成式
【数４７】
2011109476.tif 000049
にしたがい、前記バイトパリティ符号ｖｐ（ｖ，ｐ）の前記情報ベクトルｖ（ｖ０，ｖ１，...，ｖｍ−１）と前記エラー検出用ビットｐ（ｐ０，ｐ１，...，ｐｍ−２，ｐｍ−１）とを入力して、前記ｌｏｇ２（ｎ＋１）ビットの一の部分を生成するステップにおいて、前記エラー検出・訂正符号付きデータの前記冗長部分のうちの前記一の部分のｄ次のベクトルｃ２を生成し、前記ｍビットの他の部分を生成するステップにおいて、前記エラー検出・訂正符号付きデータの前記冗長部分のうちの前記他の部分のｍ次のベクトルｃ１を生成し、
尚前記エラー検出用ビットｐ（ｐ０，ｐ１，...，ｐｍ−２，ｐｍ−１）の各ビットｐｉと、上記情報ベクトルｖ（ｖ０，ｖ１，...，ｖｍ−１）の各要素であるバイトベクトルｖｉ（ｖｉ（０），ｖｉ（１），...，ｖｉ（ｎ−２），ｖｉ（ｎ−１））とは以下の関係
ｐｉ＝ｖｉ（０）＋ｖｉ（１）＋...＋ｖｉ（ｎ−２）＋ｖｉ（ｎ−１）
（「＋」は排他的論理和演算、「ｔ」は行列の転置を表す）を有することを特徴とする付記７記載のエラー検出・訂正符号生成回路の制御方法。
（付記１０）
ｍｎビットの情報部分と、［ｌｏｇ２（ｎ＋１）］ビットの一の部分及びｍビットの他の部分を有する冗長部分とを有する（ｎ＋１）ｍ＋［ｌｏｇ２（ｎ＋１）］ビットのエラー検出・訂正符号付きデータ（［ｌｏｇ２（ｎ＋１）］はｌｏｇ２（ｎ＋１）について小数点以下の切り上げたものを表す）のうち、
前記冗長部分のうちの最大［ｌｏｇ２（ｎ＋１）］ビットを有する第１のデータを入力して、第１のエラー検出用ビットを生成するステップと、
前記冗長部分のうちの最大［ｌｏｇ２（ｎ＋１）］ビットを有する第２のデータを入力して、第２のエラー検出用ビットを生成するステップと、
を有することを特徴とするエラー検出用ビット生成回路の制御方法。
（付記１１）
各バイトがｎビットを有するｍバイトの情報部分と冗長部分とを有するエラー検出・訂正符号付きデータを書き込むメモリと、
前記ｍバイトの情報部分と、前記ｍバイトの情報部分に対しそれぞれ設けられるｍビットのエラー検出用ビットの冗長部分とを含むエラー検出用ビット付きデータの前記ｍバイトの情報部分を入力して、エラー検出・訂正符号付きデータの冗長部分のうち、ｌｏｇ２（ｎ＋１）ビットの一の部分を、ｌｏｇ２（ｎ＋１）の小数点以下を切り上げて生成する第１の排他的論理和演算回路と、前記第１の排他的論理和演算回路が生成した前記エラー検出・訂正符号付きデータの冗長部分のうちの前記一の部分と、前記エラー検出用ビットとを入力して、ｍビットの他の部分を生成する第２の排他的論理和演算回路とを有するエラー検出・訂正符号生成回路と、
前記メモリから読み出された前記エラー検出・訂正符号付きデータの前記冗長部分を入力して前記情報部分のエラーを検出し、あるいは更に当該エラーを訂正するエラー検出・訂正回路と、
前記メモリから読み出された前記エラー検出・訂正符号付きデータの前記ｍバイトの情報部分と、当該ｍバイトの情報部分に対しそれぞれ設けられるｍビットのエラー検出用ビットを有する冗長部分とを有するエラー検出用ビット付きデータを生成するエラー検出用ビット付きデータ生成回路と、
前記エラー検出用ビット付きデータに対し演算処理を行う演算器とを有するデータ演算装置。
（付記１２）
前記エラー検出・訂正符号生成回路において、
前記エラー検出用ビット付きデータの前記情報部分の各バイトをｎ個の要素を有するバイトベクトル、前記エラー検出用ビット付きデータの前記情報部分をｍ個の要素を有する情報ベクトルで表現した場合において、前記情報ベクトル及び前記エラー検出用ビットの行列演算によって前記一の部分のベクトル及び前記他の部分のベクトルを生成するエラー検出・訂正符号生成式にしたがい、前記第１の排他的論理和演算手段が、前記情報ベクトルの値を入力して前記一の部分を生成し、前記第２の排他的論理和演算手段が、前記第１の部分及び前記エラー検出用ビットを入力して前記他の部分を生成することを特徴とする付記１１記載のデータ演算装置。
（付記１３）
前記エラー検出・訂正符号付きデータは、（ｎ＋１）ｍ＋［ｌｏｇ２（ｎ＋１）］ビットを有し（［ｌｏｇ２（ｎ＋１）］はｌｏｇ２（ｎ＋１）について小数点以下の切り上げたものを表す）、前記ｍｎビットは前記情報部分であり、他のｍ＋［ｌｏｇ２（ｎ＋１）］ビットは前記冗長部分であり、
前記エラー検出・訂正符号生成回路は、当該冗長部分のうちの最大［ｌｏｇ２（ｎ＋１）］ビットを入力して、前記エラー検出用ビットの各ビットを生成する第３の排他論理和演算回路を更に有することを特徴とする付記１１記載のデータ演算装置。
（付記１４）
前記エラー検出・訂正符号生成回路において、
前記エラー検出用ビット付きデータの前記情報部分の各バイトをｎ個の要素を有するバイトベクトルｖｉ（ｖｉ（０），ｖｉ（１），...，ｖｉ（ｎ−２），ｖｉ（ｎ−１））、前記エラー検出用ビット付きデータの前記情報部分をｍ個の要素を有する情報ベクトルｖ（ｖ０，ｖ１，...，ｖｍ−１）、尚前記エラー検出用ビット付きデータの前記冗長部分は前記ｍ個の要素を有する情報ベクトルの要素に対しそれぞれ設けられる、ｍビットのエラー検出用ビットｐ（ｐ０，ｐ１，...，ｐｍ−２，ｐｍ−１）、前記エラー検出用ビット付きデータをバイトパリティ符号ｖｐ（ｖ，ｐ）で表現した場合において、前記エラー検出・訂正符号生成式
【数４８】
2011109476.tif 000050
にしたがい、前記バイトパリティ符号ｖｐ（ｖ，ｐ）の前記情報ベクトルｖ（ｖ０，ｖ１，...，ｖｍ−１）の値と前記エラー検出用ビットｐ（ｐ０，ｐ１，...，ｐｍ−２，ｐｍ−１）とを入力し、前記第１の排他的論理和演算手段が、前記エラー検出・訂正符号付きデータの前記冗長部分のうちの前記一の部分であるｄ次のベクトルｃ２の値を生成し、前記第２の排他的論理和演算手段が、前記エラー検出・訂正符号付きデータの前記冗長部分のうちの前記他の部分であるｍ次のベクトルｃ１の値を生成し、
前記エラー検出用ビットｐ（ｐ０，ｐ１，...，ｐｍ−２，ｐｍ−１）の各ビットｐｉと、上記情報ベクトルｖ（ｖ０，ｖ１，...，ｖｍ−１）の各要素であるバイトベクトルｖｉ（ｖｉ（０），ｖｉ（１），...，ｖｉ（ｎ−２），ｖｉ（ｎ−１））とは以下の関係
ｐｉ＝ｖｉ（０）＋ｖｉ（１）＋...＋ｖｉ（ｎ−２）＋ｖｉ（ｎ−１）
（「＋」は排他的論理和演算、「ｔ」は行列の転置を表す）を有することを特徴とする付記１２記載のデータ演算装置。
（付記１５）
ｍｎビットの情報部分と、［ｌｏｇ２（ｎ＋１）］ビットの一の部分及びｍビットの他の部分を有する冗長部分とを有する（ｎ＋１）ｍ＋［ｌｏｇ２（ｎ＋１）］ビットのエラー検出・訂正符号付きデータ（［ｌｏｇ２（ｎ＋１）］はｌｏｇ２（ｎ＋１）の小数点以下を切り上げたものを表す）を書き込むメモリと、
前記メモリから読み出された前記エラー検出・訂正符号付きデータの前記冗長部分のうちの最大［ｌｏｇ２（ｎ＋１）］ビットを使用して、前記情報部分と当該情報部分のｎビット毎に１ビット設けられるエラー検出用ビットである冗長部分とを有するエラー検出用ビット付きデータの前記冗長部分の各１ビットを生成するエラー検出用ビット付きデータ生成回路と、
前記メモリから読み出された前記エラー検出・訂正符号付きデータの前記冗長部分を入力して前記情報部分のエラーを検出し、あるいは更に当該エラーを訂正するエラー検出・訂正回路と、
前記情報部分と当該情報部分のｎビット毎に１ビット設けられるエラー検出用ビットである冗長部分とを有するエラー検出用ビット付きデータに対し演算処理を行う演算器とを有するデータ演算装置。
【符号の説明】
【０１６４】
１  演算器
２  ＥＣＣ生成回路
３  メモリ
４  エラー検出・訂正回路
５  パリティ生成回路
１１０，１１１，...，１ｍ−１，１１ｍ，...，１１ｋ−１，１２ｍ，...，１２ｋ−１，１３０，１３１，...，１３ｍ−１，１４０，１４１，...，１４ｍ−１，１５０，１５１，...，１５ｍ−１  排他的論理和回路
【図１】
2011109476.tif 000053
【図２】
2011109476.tif 000054
【図３】
2011109476.tif 000055
【図４】
2011109476.tif 000056
【図５】
2011109476.tif 000057
【図６】
2011109476.tif 000058
【図７】
2011109476.tif 000059
【図８】
2011109476.tif 000060
【図９】
2011109476.tif 000061
【図１０】
2011109476.tif 000062
【図１１】
2011109476.tif 000063
【図１２】
2011109476.tif 000064