(57)【要約】【課題】ＲＡＳ機能の性能を向上させる。【解決手段】ＥＣＣ生成回路１１０は、各バイトがｎビットのデータを有するｍバイトの情報部データと、その情報部データの１バイト毎に１ビットずつ設けられた合計ｍビットのパリティビットとを含むデータの情報部データから、情報部データの誤りを訂正する誤り符号を構成するビットのうち、そのパリティビットに一致するビット以外のビットを生成する。エラー検出・訂正部１４０は、上述のデータの排他的論理和を生成して、情報部データの誤りの検出を行い、誤りが検出された場合には、情報部データの誤りの訂正を、上述のデータに含まれるパリティビットと、生成された誤り訂正符号の部分とを用いて行う。【選択図】図４
2013070122.tif 000002
【特許請求の範囲】
【請求項１】
各バイトがｎビットのデータを有するｍバイトの情報部データと、前記情報部データの１バイト毎に１ビットずつ設けられた合計ｍビットのパリティビットとを含むデータの前記情報部データから、前記情報部データの誤りを訂正する誤り符号を構成するビットのうち、前記パリティビットに一致するビット以外のビットを生成する誤り訂正符号生成部と、
前記データの排他的論理和を生成して、前記情報部データの誤りを検出する誤り検出部と、
前記誤り検出部が前記情報部データの誤りを検出した場合、前記情報部データの誤りの訂正を、前記データに含まれるパリティビットと、前記生成された誤り訂正符号の部分とを用いて行う誤り訂正部と、
を有することを特徴とする誤り訂正装置。
【請求項２】
前記誤り訂正符号生成部は、
前記パリティビット付きデータの前記情報部データのｉ番目のバイトを構成するｎビットデータを、ｎ個の要素を有するバイトベクトルｖi である、
【数３５】
2013070122.tif 000037
で表現すると共に、前記パリティビット付きデータの前記情報部データを、ｍ個のバイトベクトルを要素として有する情報ベクトルＶである、
【数３６】
2013070122.tif 000038
で表現し、且つ、行列Ｂを、
【数３７】
2013070122.tif 000039
（但し、b(ｉ), b(ｊ)は、任意の整数ｉ及びｊ（但し、ｉ≠ｊであって、０≦ｉ≦ｎ−１且つ０≦ｊ≦ｎ−１）において、互いに線形独立な、零ベクトルではないｄ次の列ベクトル）とした場合において、
【数３８】
2013070122.tif 000040
（但し、「Ｔ」は行列の転置を表し、「＋」は排他的論理和演算を表す）に従い、ｄ次のベクトルＣ2 の値を生成する排他的論理和演算回路を有することを特徴とする請求項１記載の誤り訂正装置。
【請求項３】
前記行列Ｂにおける列ベクトルｂ(i) の成分における「１」の個数が、任意の整数ｉ（但し、０≦ｉ≦ｎ−１）において偶数であることを特徴とする請求項２記載の誤り訂正装置。
【請求項４】
前記誤り訂正装置は、
前記生成された誤り訂正符号のうち前記一の部分を格納する部分格納部を更に備え、
前記パリティビット付きデータは、
前記誤り訂正装置に接続された演算器がレジスタに出力したデータであり、
前記誤り訂正部は、
前記レジスタに格納された前記パリティビット付きデータのパリティビットと、前記部分格納部に格納された前記誤り訂正符号の前記一の部分とを用いて前記誤りの訂正を行うことを特徴とする請求項１から３のいずれか１項記載の誤り訂正装置。
【請求項５】
各バイトがｎビットのデータを有するｍバイトの情報部データと、前記情報部データの１バイト毎に１ビットずつ設けられた合計ｍビットのパリティビットとを含むパリティビット付きデータの前記情報部データから、前記情報部データについての誤り訂正符号の一の部分であり、前記ｍビットのパリティビットに一致する部分以外の一の部分を生成し、
前記パリティビット付きデータの排他的論理和を生成し、
前記パリティビット付きデータの情報部データの誤りを検出し、
前記パリティビット付きデータの情報部データの誤りを検出した場合、前記パリティビット付きデータの情報部データの誤りの訂正を、前記パリティビット付きデータに含まれるパリティビットと、前記生成された誤り訂正符号の前記一の部分とを用いて行うことを特徴とする誤り訂正方法。
【請求項６】
各バイトがｎビットのデータを有するｍバイトの情報部データと、前記情報部データの１バイト毎に設けられた合計ｍビットのパリティビットとを含むパリティビット付きデータを出力する演算器と、
前記演算器から出力されるパリティビット付きデータを格納するレジスタと、
前記演算器が前記レジスタから読み出したパリティビット付きデータの排他的論理和を生成して前記読み出したパリティビット付きデータの誤りを検出する誤り検出部と、
前記誤り検出部が前記パリティビット付きデータの誤りを検出した場合、前記パリティビット付きデータの情報部データの誤りの訂正を行う誤り訂正装置を備える演算装置において、
前記誤り訂正装置は、
前記演算器が前記レジスタに格納する前記パリティビット付きデータの前記情報部データから、前記情報部データについての誤り訂正符号の一の部分であり、前記パリティビット付きデータの前記ｍビットのパリティビットに一致する部分以外の一の部分を生成する誤り訂正符号生成部と、
前記誤りが検出されたパリティビット付きデータの情報部データの誤りの訂正を、前記パリティビット付きデータに含まれるパリティビットと、前記生成された誤り訂正符号の前記一の部分とを用いて行う誤り訂正部を有することを特徴とする演算装置。
【請求項７】
前記誤り訂正符号生成部は、前記パリティビット付きデータの前記情報部分データにおけるｉ番目のバイトを構成するｎビットデータを、ｎ個の要素を有するバイトベクトルｖi である、
【数３９】
2013070122.tif 000041
で表現すると共に、前記パリティビット付きデータの前記情報部分データを、ｍ個のバイトベクトルを要素として有する情報ベクトルＶである、
【数４０】
2013070122.tif 000042
で表現し、且つ、行列Ｂを、
【数４１】
2013070122.tif 000043
（但し、b(ｉ), b(ｊ)は、任意の整数ｉ及びｊ（但し、ｉ≠ｊであって、０≦ｉ≦ｎ−１且つ０≦ｊ≦ｎ−１）において、互いに線形独立な、零ベクトルではないｄ次の列ベクトル）とした場合において、
【数４２】
2013070122.tif 000044
（但し、「Ｔ」は行列の転置を表し、「＋」は排他的論理和演算を表す）に従い、ｄ次のベクトルＣ2 の値を生成する排他的論理和演算回路を有することを特徴とする請求項６記載の演算装置。
【請求項８】
前記行列Ｂにおける列ベクトルｂ(i) の成分における「１」の個数が、任意の整数ｉ（但し、０≦ｉ≦ｎ−１）において偶数であることを特徴とする請求項７記載の演算装置。
【請求項９】
前記演算装置はさらに、
前記誤り訂正符号生成部により生成された誤り訂正符号の前記一の部分を格納する部分格納部を有し、
前記誤り訂正部は、
前記レジスタに格納される前記パリティビット付きデータのパリティビットと、前記部分格納部に格納される前記誤り訂正符号の前記一の部分とを用いて前記誤りの訂正を行うことを特徴とする請求項６から８のいずれか１項記載の演算装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、誤り訂正装置、誤り訂正方法及び演算装置に関するものである。
【背景技術】
【０００２】
例えば、回路の製造段階で発生した固定故障を検出するために、若しくは、製品使用時の電圧変動やα線、中性子線が回路に入射することによりデータが反転するソフトエラー等の影響によるデータの誤りを検出し訂正するために、その回路自身にデータの誤りの検出及び訂正を行うための回路を持たせることがある。このデータの誤りの検出及び訂正の機能は、ＲＡＳ（Reliability, Availability and Serviceability）機能などと称されている。
【０００３】
回路で発生するデータの誤りの検出及び訂正を行うためには、誤りの検出及び訂正の対象となるデータを冗長化させることと、その回路にＲＡＳ機能を実現するための回路を設けることと、が必要である。但し、データに付加する冗長部分のサイズと内容とは、データの誤りの検出及び訂正の目的によって異なる。
【０００４】
例えば、８ビットの情報データに対して１ビットのパリティビットを持たせる。このパリティビットは、情報データの各ビットのＸＯＲ（排他的論理和）演算を行って生成する。それと共に、情報データの各ビットとパリティ検査ビットとのＸＯＲ演算を行う誤り検出回路を設ける。この構成により、１ビットのデータ誤りを検出できる。パリティ検査機能と呼ばれるこのＲＡＳ機能は、データ誤りの発生頻度が低く、仮に複数ビットの誤りが発生しても、その誤りが近隣ビットに集中する傾向がなく、また、演算の再実行若しくはデータの再取得等で誤りの修復が可能な場合の利用に適している。このパリティ検査機能は、多くの物量や実行レイテンシをＲＡＳ回路に割くことができないような回路（例えば演算器など）で使われることが多い。
【０００５】
一方、データの自己修復が必要となるレジスタには、誤りの検出だけではなく、誤りの訂正も行えるＲＡＳ機能を備えることが多い。例えば、３２ビットの情報データに対する１ビットの誤り訂正(ＳＥＣ：Single bit Error Correct)回路は、６ビットの検査ビットを冗長部分として情報データに追加することでＲＡＳ機能を実現することができる（例えばハミング符号）。また、この検査ビットを更に１ビット増やして拡張ハミング符号を用いると、２ビットの誤り検出及び１ビットの誤り訂正（ＳＥＣＤＥＤ：Single bit Error Correct and Double bit Error Detect）機能が実現できる。但し、これらのＲＡＳ機能を実現する回路は、前述したパリティ検査によるデータ誤りの検出回路に比べて構成素子数が多く、また、データ誤りの検出及び訂正には、ある程度のレイテンシが生じる。
【０００６】
上述したＲＡＳ機能に関し、幾つかの技術が知られている。
そのうちのひとつに、簡易な構成でエラー検出・訂正符号付きデータを生成するという技術がある。この技術では、まず、各バイトがｎビットを有するｍバイトの情報部分とｍバイトの情報部分に設けられるｍビットのエラー検出用ビットの冗長部分とを含むエラー検出用ビット付きデータのｍバイトの情報部分の排他的論理和演算を行う。そして、エラー検出・訂正符号付きデータの冗長部分のうち、ｌｏｇ2 （ｎ＋１）ビットの一の部分を生成し、生成した一の部分とエラー検出用ビットとを入力してｍビットの他の部分を生成するというものである。
【０００７】
また、そのうちの別のひとつに、メモリにパリティ検査機能とＳＥＣＤＥＤ機能とを持たせ、制御信号によりそのいずれか一方を使用するようにするという技術が知られている。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２０１１−１０９４７６号公報
【特許文献２】特開昭５６−９４５９６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
例えば、プロセス技術の微細化によるソフトエラーの増加への対応のため、ＲＡＳ機能が既に装備されている既存の回路におけるＲＡＳ機能の能力を向上させる必要が生じる場合がある。
【００１０】
図１について説明する。図１は、パリティ検査機能を備える演算装置の構成例を図解したものである。
【００１１】
図１の演算装置１は、演算器２と、汎用レジスタ（ＧＰＲ：General Purpose Register）３と、１ビットエラー検出回路４とを備えている。
【００１２】
演算器２は、パリティ検査機能のための、パリティビットの生成回路及びパリティ検査回路を内蔵している。この演算器２には、パリティビット付きデータが入力され出力される。なお、パリティビット付きデータとは、そのデータが本来有している情報が表されている情報部データと、当該情報部データについてのパリティビットとを含むデータである。
【００１３】
なお、以下の説明では、情報部データは、各バイトがｎビットのデータで構成されており、バイト数がｍバイトのデータ（但し、ｍ及びｎは、どちらも１以上の整数）であるとする。そして、パリティビット付きデータには、情報部データを構成している１バイト毎に１ビットのパリティビットを含むものとする。つまり、パリティビット付きデータは、ｍ×ｎビットの情報部データとｎビットのパリティビットとを含むものとする。
【００１４】
汎用レジスタ３は、演算器２に入力される、若しくは演算器２から出力されるパリティビット付きデータを保持しておくレジスタであり、複数用意されている。なお、図３において、「ｄａｔａ」は情報部データの格納領域を表しており、「ｐ」は、「ｄａｔａ」に格納されている情報部データについてのパリティビットの格納領域を表している。
【００１５】
１ビットエラー検出回路４は、演算器２が汎用レジスタ３から読み出したパリティビット付きデータの誤りを、パリティ検査により検出する回路である。より具体的には、１ビットエラー検出回路４は、パリティビット付きデータにおける１バイトのデータを構成しているｎ個のビットデータと当該１バイトのデータについてのパリティビットとのＸＯＲ演算を、ｍバイトの各データについて行う回路である。
【００１６】
この図１の演算装置１において演算処理を実行する際には、まず、演算器２が、演算対象の情報部データを含むパリティビット付きデータを汎用レジスタ３から読み込む。このとき、１ビットエラー検出回路４は、演算器２が汎用レジスタ３から読み出したパリティビット付きデータに対してパリティ検査を行う。
【００１７】
ここで、パリティビット付きデータにデータ誤りが検出された場合には、１ビットエラー検出回路４は、データ誤りが検出されたことを示す誤り検出信号を、「エラー報告」として出力する。図１の演算装置１の制御を行っている不図示の制御部は、１ビットエラー検出回路４から出力された誤り検出信号を受け取ると、汎用レジスタ３に格納されているパリティビット付きデータの誤りの修復のための制御処理を行う。より具体的には、制御部は、誤り検出信号を受け取ると、汎用レジスタ３から、データ誤りが検出されたパリティビット付きデータを読み出す処理を再度実行させる。そして、得られたパリティビット付きデータを、汎用レジスタ３に格納させる処理を演算器２に行わせる。
【００１８】
一方、演算器２は、自身でも、汎用レジスタ３から読み出したパリティビット付きデータに対してパリティ検査を行う。そして、誤りのないことが判明した場合に、汎用レジスタ３から読み出したパリティビット付きデータから情報部データを取り出して演算処理を実行して、演算結果データを得る。そして、この演算結果データについてのパリティビットの生成を行い、生成されたパリティビットを演算結果データに付加して得られるパリティビット付きデータを、汎用レジスタ３に格納する。
【００１９】
ここで、この図１の演算装置１が備えているＲＡＳ機能の能力を向上させるべく、演算装置１のパリティ検査機能をＳＥＣ機能若しくはＳＥＣＤＥＤ機能に変更する手法を考える。
【００２０】
ここで図２について説明する。図２は、ＲＡＳ機能の能力を、図１の演算装置１から向上させた演算装置の構成の一例である。
【００２１】
図２の演算装置５は、図１の既存の構成から、１ビットエラー検出回路４を削除すると共に、エラー検出・訂正回路６、パリティ生成回路７、及びＥＣＣ（誤り訂正符号：Error Correcting Code ）生成回路８を追加して構成されている。更に、この演算装置５では、パリティビット付きデータの代わりに、情報部データに、ＳＥＣ機能若しくはＳＥＣＤＥＤ機能に使用されるＥＣＣが付加されたＥＣＣ付きデータが、汎用レジスタ３により保持される。
【００２２】
エラー検出・訂正回路６は、演算器２が汎用レジスタ３から読み出したＥＣＣ付きデータを受け取り、そこに含まれているＥＣＣを用いて、ＥＣＣ付きデータの誤りの検出及び訂正を行う。ここで、誤りの訂正を行った場合には、エラー検出・訂正回路６は、当該ＥＣＣ付きデータが格納されていた汎用レジスタ３に、訂正されたＥＣＣ付きデータを格納する。
【００２３】
パリティ生成回路７は、誤りのないＥＣＣ付きデータをエラー検出・訂正回路６から受け取って、当該ＥＣＣ付きデータに含まれている情報部データについてのパリティビットを生成する。そして、情報部データに当該パリティビットを付加したパリティビット付きデータを、演算器２に入力する。このパリティ生成回路７を設けることで、既存の演算器２に対し、パリティ検査機能を変更するための回路構成の変更を行わずに済む。
【００２４】
ＥＣＣ生成回路８は、演算処理の実行結果を汎用レジスタ３に格納するために演算器２から出力されるパリティビット付きデータに含まれているｍバイトの情報部データの全体から、ＳＥＣ機能若しくはＳＥＣＤＥＤ機能に使用されるＥＣＣを生成する。そして、生成されたＥＣＣを、演算器２からのパリティビット付きデータに含まれている演算結果データに付加して得られるＥＣＣ付きデータを汎用レジスタ３に格納する。
【００２５】
図２の演算装置５の構成では、演算器２と汎用レジスタ３との間に、エラー検出・訂正回路６、パリティ生成回路７、及びＥＣＣ生成回路８が挿入されている。このため、演算器２と汎用レジスタ３との間のデータ伝送にレイテンシが生じてしまう。
【００２６】
また、図２の演算装置５の構成では、汎用レジスタ３は、パリティビット付きデータよりもビット数の多いＥＣＣ付きデータを保持する必要がある。
【００２７】
例えば、情報部データが、各バイトが８ビットのデータで構成されている、バイト数が４バイトのデータ、すなわち、ビット数が３２ビットのデータであるとする。この場合、パリティビット付きデータに含まれるパリティビットのビット数は４ビットである。これに対し、３２ビットの情報部データに対するＳＥＣ機能を実現するには、ＥＣＣのビット数は少なくとも６ビット必要である。また、３２ビットの情報部データに対するＳＥＣＤＥＤ機能を実現するには、ＥＣＣのビット数は少なくとも７ビット必要である。
【００２８】
このように、ＲＡＳ機能の能力をパリティ検査からＳＥＣ機能若しくはＳＥＣＤＥＤ機能に向上させると、ＲＡＳ機能のために必要となる冗長データのビット数が増加する。このため、図１の構成を変更して図２の構成とする場合には、汎用レジスタ３を格納ビット数の多いものへ差し替える変更も行われる。このように、図２の演算装置５を構成するためには、図１の演算装置１の既存の構成に対する大幅な変更が必要となる。
【００２９】
１つの側面では、本発明は、ＲＡＳ機能の性能の向上を図ることを目的とする。
【課題を解決するための手段】
【００３０】
本明細書で後述する誤り訂正装置のひとつに、誤り訂正符号生成部と、誤り検出部と、誤り訂正部とを有するものがある。ここで、誤り訂正符号生成部は、各バイトがｎビットのデータを有するｍバイトの情報部データと、その情報部データの１バイト毎に１ビットずつ設けられた合計ｍビットのパリティビットとを含むデータの情報部データから、情報部データの誤りを訂正する誤り符号を構成するビットのうち、そのパリティビットに一致するビット以外のビットを生成する。誤り検出部は、上述のデータの排他的論理和を生成して、情報部データの誤りを検出する。そして、誤り訂正部は、誤り検出部が情報部データの誤りを検出した場合、情報部データの誤りの訂正を、上述のデータに含まれるパリティビットと、生成された誤り訂正符号の部分とを用いて行う。
【発明の効果】
【００３１】
１態様によれば、ＲＡＳ機能の性能を向上が図られる。
【図面の簡単な説明】
【００３２】
【図１】パリティ検査機能を備える演算装置の構成例である。
【図２】ＲＡＳ機能の能力を向上させた演算装置の構成の一例である。
【図３】誤り訂正装置の追加によりＲＡＳ機能の性能を向上させた演算装置の構成図である。
【図４】図３の誤り訂正装置の構成図である。
【図５】ＥＣＣ生成回路の第一の回路構成例である。
【図６】ＥＣＣ生成回路の第二の回路構成例である。
【図７】拡張ハミング符号を普通に用いたＳＥＣＤＥＤ機能に使用されるＥＣＣの全部の生成を行う場合のＥＣＣ生成回路の回路構成例である。
【図８】ＥＣＣレジスタにおける回路削減の効果の説明図である。
【発明を実施するための形態】
【００３３】
まず図３について説明する。図３は、誤り訂正装置の追加によりＲＡＳ機能の性能を向上させた演算装置の構成図である。
【００３４】
図３の演算装置１０は、図１の演算装置１に、誤り訂正装置１００を追加して構成されている。
【００３５】
演算器２は、パリティ検査機能のための、パリティビットの生成回路及びパリティ検査回路を内蔵しており、前述した、ｍ×ｎビットの情報部データとｍビットのパリティビットとを含むパリティビット付きデータを入出力する。
【００３６】
汎用レジスタ３は、演算器２に入力される、若しくは演算器２から出力されるパリティビット付きデータを保持するレジスタであり、図３の例では複数用意されている。
【００３７】
１ビットエラー検出回路４は、演算器２が汎用レジスタ３から読み出したパリティビット付きデータの誤りを、パリティ検査により検出する回路である。より具体的には、１ビットエラー検出回路４は、読み出したパリティビット付きデータにおける１バイトのデータを構成しているｎ個のビットデータと当該１バイトのデータについてのパリティビットとのＸＯＲ演算を、ｍバイトの各データについて行う回路である。ここで、パリティビット付きデータにデータ誤りが検出された場合には、１ビットエラー検出回路４は、データ誤りが検出されたことを示している誤り検出信号を出力する。
【００３８】
以上のように、図３の演算装置１０が備えている演算器２、汎用レジスタ３、及び１ビットエラー検出回路４は、図１の演算装置１が備えているものと同一の構成である。
【００３９】
誤り訂正装置１００は、ＳＥＣ機能若しくはＳＥＣＤＥＤ機能を用いてデータの訂正を行う装置である。誤り訂正装置１００は、１ビットエラー検出回路４から出力された誤り検出信号を受け取ったときに、汎用レジスタ３に格納されているデータの誤りを訂正する。なお、誤り訂正装置１００は、ＲＡＳ機能としてＳＥＣＤＥＤ機能を採用している場合において、訂正することができない２ビットのデータ誤りを検出した場合には、データ誤りを検出したことを示している誤り検出信号を、「エラー報告」として出力する。この検出信号は、図１の演算装置１と同様の不図示の制御部に送られて、誤りの修復のための制御処理が行われる。
【００４０】
図３の演算装置１０の制御を行っている不図示の制御部は、誤り訂正装置１００から出力された当該誤り検出信号を受け取った場合には、汎用レジスタ３に格納されているパリティビット付きデータの誤りの修復のための制御処理を行う。
【００４１】
誤り訂正装置１００の構成について更に詳細に説明する。図４は、図３の誤り訂正装置１００の構成を表している。
【００４２】
誤り訂正装置１００は、ＥＣＣ生成部１１０、ＥＣＣレジスタ１２０、誤り検出信号取得部１３０、及びエラー検出・訂正部１４０を備えている。
【００４３】
ＥＣＣ生成部１１０は、演算処理の実行結果を汎用レジスタ３に格納するために演算器２から出力されるパリティビット付きデータを、図３に示した節点Ａから取り込む。そして、このパリティビット付きデータに含まれているｍバイトの情報部データの全体から、ＳＥＣ機能若しくはＳＥＣＤＥＤ機能に使用するＥＣＣを生成する。但し、詳細は後述するが、本実施例では、ＥＣＣ生成部１１０は、ＳＥＣ機能若しくはＳＥＣＤＥＤ機能に必要なＥＣＣの全部を生成するのではなく、ＥＣＣの一部分を生成し、生成されたＥＣＣの一部分を、ＥＣＣレジスタ１２０に格納する。
【００４４】
ＥＣＣレジスタ１２０は、ＥＣＣ生成部１１０で生成されたＥＣＣの一部分を保持しておくレジスタである。汎用レジスタ３の個数と同数のレジスタがＥＣＣレジスタ１２０として用意されおり、これらは一対一に対応付けられている。ＥＣＣ生成部１１０は、パリティビット付きデータからＥＣＣの一部分を生成すると、生成されたＥＣＣの一部分を、当該パリティビット付きデータが格納された汎用レジスタ３に対応付けられているＥＣＣレジスタ１２０に格納する。
【００４５】
誤り検出信号取得部１３０は、１ビットエラー検出回路４から出力される誤り検出信号を、図３に示した節点Ｂから受け取り、この誤り検出信号の受け取りをトリガとして、エラー検出・訂正部１４０の動作を開始させる。
【００４６】
エラー検出・訂正部１４０は、誤り検出信号取得部１３０からの動作開始指示に従い、１ビットエラー検出回路４によって誤りが検出されたパリティビット付きデータにおける情報部データに対する誤りの検出及び訂正を行う。
【００４７】
この誤りの検出及び訂正では、エラー検出・訂正部１４０は、まず、１ビットエラー検出回路４によって誤りが検出されたパリティビット付きデータを汎用レジスタ３から読み出す。また、このとき、エラー検出・訂正部１４０は、当該パリティビット付きデータが保持されていた汎用レジスタ３に対応付けられているＥＣＣレジスタ１２０で保持されているＥＣＣの一部分を読み出す。そして、パリティビット付きデータに付加されているパリティビットと、ＥＣＣレジスタ１２０から読み出したＥＣＣの一部分とを用いて、当該パリティビット付きデータに含まれている情報部データに対するＳＥＣ若しくはＳＥＣＤＥＤを行う。
【００４８】
なお、エラー検出・訂正部１４０は、誤りの訂正を行った場合には、誤りが検出されたパリティビット付きデータが格納されていた汎用レジスタ３に、訂正されたデータを格納する。なお、エラー検出・訂正部１４０は、ＳＥＣＤＥＤを行っている場合において、訂正することができない２ビットのデータ誤りを検出した場合には、当該データ誤りを検出したことを示している誤り検出信号を出力する。
【００４９】
次に、図３の誤り訂正装置１００において行われるデータの誤りの検出及び訂正の手法について説明する。
【００５０】
一般に、ＳＥＣ機能若しくはＳＥＣＤＥＤ機能を実現するデータの誤りの検出及び訂正には、通常のハミング符号（Hamming Code）が使用されることが多い。まず、誤り訂正装置１００でのデータの誤りの検出及び訂正の手法の理解を容易にするために、通常のハミング符号を用いて行うデータの誤りの検出及び訂正について簡単に説明する。
【００５１】
なお、以下の説明において使用される行列及びベクトル空間は、全て体Ｆ2 ＝｛０，１｝上で定義されるものとする。従って、扱われる数量（スカラー）は「０」または「１」のみであり、その加算及び演算は全てＸＯＲ演算に置換できる。
【００５２】
ハミング符号を用いる誤り訂正では、検査行列Ｈと生成行列Ｇとが用いられる。ｓビットの情報ビットとｔビットの検査ビットとによりｕ（＝ｓ＋ｔ）ビットの符号語が形成されている場合、検査行列Ｈは、ｔ行ｕ列の行列である。また、生成行列Ｇは、ＨＧT ＝ＧＨT ＝０を満たし、且つ零ではない、ｓ行ｕ列の行列である。なお、ＧT 及びＨT は、それぞれ生成行列Ｇ及び検査行列Ｈの転置行列である。
【００５３】
符号語を組織符号とした場合、検査行列Ｈ及び生成行列Ｇは、それぞれ下記の［数１］式により表される。
【００５４】
【数１】
2013070122.tif 000003
【００５５】
なお、［数１］式において、Ａはｔ行ｓ列の行列であり、ＡT は行列Ａの転置行列である。また、Ｉt 及びＩs は、それぞれｔ次の単位行列及びｓ次の単位行列である。
【００５６】
ここで、ｓビットの情報ビットを、各ビットの値を各成分の値としたｓ次の行ベクトルａとして表すと、符号語を表すｕ次の行ベクトルｃは、生成行列Ｇを用いた下記の［数２］式の演算により生成される。
【００５７】
【数２】
2013070122.tif 000004
【００５８】
また、符号語の検査においては、検査対象の符号語を表すｕ次の行ベクトルｃ’と検査行列Ｈとの積を求める。ここで、行ベクトルｃ’に誤りがない場合には、ｃ’＝ｃであるので、下記の［数３］式が成立する。
【００５９】
【数３】
2013070122.tif 000005
【００６０】
つまり、行ベクトルｃ’と検査行列Ｈの転置行列との積が零ベクトルである場合には、検査対象の符号語に誤りがないことが分かる。
【００６１】
ここで、検査対象の符号語におけるｉビット目の値が、元の符号語と異なっている（すなわち、ビットの値が反転している）場合を考える。
【００６２】
この場合は、ｃ’＝ｃ＋ｅi と表すことができる。但し、行ベクトルｅi は、ｉ番目の成分の値のみが「１」であるｕ次の基本ベクトルである。このとき、行ベクトルｃ’と検査行列Ｈの転置行列との積は、下記の［数４］式のように表される。
【００６３】
【数４】
2013070122.tif 000006
【００６４】
ここで、［数４］式の右辺は、検査行列Ｈの第ｉ列を転置して行ベクトルとしたものである。従って、この行ベクトルを転置した列ベクトルに一致する列の位置を、検査行列Ｈから見い出すことで、検査対象の符号語において誤っているビットの位置を特定することができ、特定されたビットの値を反転することで、誤りを訂正することができる。但し、この列ベクトルに一致する列が検査行列Ｈに１つのみであるためには、検査行列Ｈの各列は互いに異なっていることが必要である。また、成分が全て零である列が検査行列Ｈに存在すると、検査対象の符号語に誤りのない場合との区別が付けられないので、検査行列Ｈには、成分が全て零である列が存在しないことも必要である。
【００６５】
なお、ハミング符号を用いてｓビットの情報ビットに対する１ビットの誤りの検出及び訂正を行うために必要とされる検査ビットのビット数ｔは、ｔ＝［log2 （ｓ＋１）］である。（なお、関数“［ｘ］”は、ｘ以上の大きさである最小の整数を表すものとする。）
【００６６】
以上のハミング符号は、ＳＥＣ機能を実現するためのものである。このハミング符号の生成により得られたｕビットの符号語の各ビットの排他的論理和演算を行って１ビットのパリティビットを生成して、当該符号語についてのパリティ検査と上述したハミング符号によるＳＥＣとを行うと、ＳＥＣＤＥＤ機能が実現される。このようにして実現されるＳＥＣＤＥＤ機能は、拡張ハミング符号（Enhanced Hamming Code）と称されている。なお、拡張ハミング符号を用いてＳＥＣＤＥＤ機能を実現するために必要とされる検査ビットのビット数ｔは、ｔ＝［log2 （ｓ＋１）］＋１である。
【００６７】
以上のハミング符号についての説明を踏まえて、誤り訂正装置１００でのデータの誤りの検出及び訂正の手法について説明する。
【００６８】
誤り訂正装置１００では、ｍ×ｎビットの情報部データの誤り及び訂正に使用するＥＣＣのうちのｍビットを、情報部データを構成しているｍバイトのバイトデータの各々についてのパリティビットに一致させる。まず、このようなデータの誤りの検出及び訂正を行う場合の検査行列Ｈについて説明する。
【００６９】
誤り訂正装置１００では、下記の［数５］式により定義される検査行列Ｈを使用する。
【００７０】
【数５】
2013070122.tif 000007
【００７１】
この検査行列Ｈは、前述したｍ×ｎビットの情報部データと当該情報部データについてのＥＣＣとで構成される符号語（ＥＣＣ付きデータ）の検査に使用される。なお、ここで、このＥＣＣにおいてのｍビットのパリティビットに一致する部分以外の部分のビット数をｄビットとする。従って、この場合のＥＣＣのビット数ｋはｋ＝ｍ＋ｄであり、ＥＣＣ付きデータのビット数はｍ×ｎ＋ｍ＋ｄビットである。
【００７２】
なお、ｄの値は、ＳＥＣ機能を実現する場合にはｄ＝［log2 （ｎ＋１）］とする。また、ＳＥＣＤＥＤ機能を実現する場合には、このｄの値は、ｄ＝［log2 （ｎ＋１）］＋１とする。
【００７３】
［数５］式において、Ｉm 及びＩd は、それぞれｍ次の単位行列及びｄ次の単位行列であり、Ｏ1 及びＯ2 は、それぞれｍ行ｄ列の零行列及びｄ行ｍ列の零行列である。つまり、［数５］式に示されている行列においてＩm 及びＩd は並びにＯ1 及びＯ2 により構成されている部分は、前掲した［数１］式に示されている検査行列Ｈにおける単位行列Ｉt に相当する。
【００７４】
一方、［数５］式に示されている行列においてＡ(i) 、…、Ａ(m-1) 及びＢ(0) 、…、Ｂ(m-1) により構成されている部分は、前掲した［数１］式に示されている検査行列Ｈにおける行列Ａに相当する。
【００７５】
［数５］式において、Ａ(i) （但し、ｉ＝０，１，２，…，ｍ−１）は、下記の［数６］式により定義されるｍ行ｎ列の行列である。
【００７６】
【数６】
2013070122.tif 000008
【００７７】
なお、［数６］式において、ｅ(i) は、ｍ次の列ベクトルであって先頭行を第０行としたときの第ｉ行の成分の値のみが「１」である基本ベクトルである。従って、［数６］式のＡ(i) の各成分き、［数７］式のように表される。
【００７８】
【数７】
2013070122.tif 000009
【００７９】
［数５］式におけるＡ(i) の成分として、［数７］式に示したものを用いることによって、ＥＣＣのうちのｍビットが、情報部データを構成しているｍバイトのバイトデータの各々についてのパリティビットに一致するようになる。また、［数５］式におけるＡ(i) 、Ｉm 、Ｉd 、Ｏ1 、及びＯ2 が以上のように定義されたことで、検査行列Ｈに必要とされる前述の２つの条件の一方である、成分が全て零である列が存在しないことが満たされる。
【００８０】
［数５］式における、Ｂ(i) （但し、ｉ＝０，１，２，…，ｍ−１）は、検査行列Ｈに必要とされる前述の２つの条件の他方である、検査行列Ｈの各列が互いに異なっているという条件を満たすように定義する。より具体的には、Ｂ(i) を下記の［数８］式のように定義する。
【００８１】
【数８】
2013070122.tif 000010
【００８２】
なお、ＳＥＣ機能を実現する場合には、［数８］式において、ｂ(i) 及びｂ(j) を、零ベクトルではなく、且つ、任意の整数ｉ及びｊ（但し、ｉ≠ｊであって、０≦ｉ≦ｎ−１且つ０≦ｊ≦ｎ−１）において互いに線形独立であるｄ次の列ベクトルとする。また、ＳＥＣＤＥＤ機能を実現する場合には、更に、全てのｄ次列ベクトルｂ(i) について、ｄ個の成分のうち値が「１」である成分の個数を偶数個とする。
【００８３】
なお、このような条件を満たすＢは複数存在する。次に、以上のようにして定義される検査行列Ｈの具体例を挙げる。
【００８４】
まず、検査行列Ｈの第一の例として、ｎ＝８であり、ｍ＝４である３２ビットの情報部データについてＳＥＣ機能を実現するための検査行列Ｈの一例を求める。
【００８５】
このとき、ｄの値は、ｄ＝［log2 （ｎ＋１）］＝［log2 （８＋１）］＝４である。この場合、Ａ(i) 、Ｉm 、Ｉd 、Ｏ1 、及びＯ2 の各行列の各成分は、下記の［数９］式のように値が定まる。
【００８６】
【数９】
2013070122.tif 000011
【００８７】
また、行列Ｂ(i) については、この例では、下記の［数１０］式に成分を示した行列Ｂを、Ｂ1 、Ｂ2 、Ｂ3 、及びＢ4 の全てについて用いることとする。
【００８８】
【数１０】
2013070122.tif 000012
【００８９】
この［数１０］式の行列Ｂは、各列ベクトルが、零ベクトルではなく且つ互いに線形独立であるので、前述した、ＳＥＣ機能を実現するためのＢ(i) の条件を満たしている。
【００９０】
これらの［数９］式及び［数１０］式に示した値を［数５］式に代入すると、下記の［数１１］式に値を示す検査行列Ｈが得られる。
【００９１】
【数１１】
2013070122.tif 000013
【００９２】
次に、検査行列Ｈの第二の例として、ｎ＝８であり、ｍ＝４である３２ビットの情報部データについてＳＥＣＤＥＤ機能を実現するための検査行列Ｈの一例を求める。
【００９３】
このとき、ｄの値は、ｄ＝［log2 （ｎ＋１）］＋１＝［log2 （８＋１）］＋１＝５である。この場合、Ａ(i) 、Ｉm 、Ｉd 、Ｏ1 、及びＯ2 の各行列の各成分は、下記の［数１２］式のように値が定まる。
【００９４】
【数１２】
2013070122.tif 000014
【００９５】
また、行列Ｂ(i) については、この例では、下記の［数１３］式に成分を示した行列Ｂを、Ｂ1 、Ｂ2 、Ｂ3 、及びＢ4 の全てについて用いることとする。
【００９６】
【数１３】
2013070122.tif 000015
【００９７】
この［数１３］式の行列Ｂは、各列ベクトルが、零ベクトルではなく且つ互いに線形独立であり、更に、各列ベクトルの５個の成分のうち値が「１」である成分の個数がいずれも偶数個である。従って、この行列Ｂは、前述した、ＳＥＣＤＥＤ機能を実現するためのＢ(i) の条件を満たしている。
【００９８】
これらの［数１２］式及び［数１３］式に示した値を［数５］式に代入すると、下記の［数１４］式に値を示す検査行列Ｈが得られる。
【００９９】
【数１４】
2013070122.tif 000016
【０１００】
次に、ＥＣＣにおいて、ｍ×ｎビットの情報部データについてのｍビットのパリティビットに一致する部分以外の部分を生成する手法について説明する。
【０１０１】
まず、ｍ×ｎビットの情報部データを１行に並べた体Ｆ2 上のベクトルを考える。前述したように、この情報部データは、各バイトがｎビットのデータで構成されているｍバイトのデータであるので、この情報部データを、下記の［数１５］式に示した情報ベクトルＶで表現する。
【０１０２】
【数１５】
2013070122.tif 000017
【０１０３】
この情報ベクトルＶの各成分ｖi （ｊ）は、値が「０」又は「１」である（すなわち、体Ｆ2 の元である。）。
【０１０４】
ここで、情報ベクトルＶの各成分ｖi （ｊ）をバイト単位で区切って、バイトベクトルｖi を［数１６］式のように定義し、このバイトベクトルを用いて、情報ベクトルＶを［数１７］式のように表現する。
【０１０５】
【数１６】
2013070122.tif 000018
【０１０６】
【数１７】
2013070122.tif 000019
【０１０７】
次に、前述したパリティビット付きデータを表すベクトルＶｐと、ＳＥＣ機能若しくはＳＥＣＤＥＤ機能に使用するＥＣＣを情報部データに付加したＥＣＣ付きデータを表すベクトルＶｃとを、体Ｆ2 上のベクトルとして、［数１８］式のように定義する。
【０１０８】
【数１８】
2013070122.tif 000020
【０１０９】
なお、［数１８］式において、Ｐは、パリティビット付きデータにおけるｍビットのパリティビットを１行に並べたパリティビットベクトルであり、ｐi は、このパリティビットベクトルＰの各成分である。また、Ｃは、ＥＣＣ付きデータにおけるｋビットのＥＣＣを１行に並べたＥＣＣベクトルであり、ｃi は、このＥＣＣベクトルＣの各成分である。
【０１１０】
なお、パリティの定義により、パリティビットベクトルＰの各成分ｐi は、情報ベクトルＶの各成分ｖi （ｊ）と、下記の［数１９］式の関係を有している。
【０１１１】
【数１９】
2013070122.tif 000021
【０１１２】
なお、［数１９］式において使用されている演算子「＋」は、体Ｆ2 上の加算、すなわちＸＯＲ演算を表している。以降の説明においても、演算子「＋」はＸＯＲ演算を表すものとし、「和」若しくは「加算」の語も、ＸＯＲ演算を表すものとする。
【０１１３】
なお、以下の説明では、ＥＣＣベクトルＣを、ｍ次の行ベクトルＣ1 と、ｄ次の行ベクトルＣ2 とを用いて、下記の［数２０］式のように表すこともある。
【０１１４】
【数２０】
2013070122.tif 000022
【０１１５】
次に、ベクトルＶｃで表される前述したＥＣＣ付きデータが、検査行列Ｈによって生成されるための必要十分条件は、下記の［数２１］式を満たすことである。
【０１１６】
【数２１】
2013070122.tif 000023
【０１１７】
なお、［数２１］式において、ＶｃT は、前述したベクトルＶｃを転置した列ベクトルであり、右辺の「０」は、零ベクトルであるｋ次の列ベクトルである。なお、この［数２１］式は、前掲した［数３］式より明らかである。
【０１１８】
この［数２１］式の左辺を下記の［数２２］式のように変形する。
【０１１９】
【数２２】
2013070122.tif 000024
【０１２０】
この［数２２］式の右辺に関して、下記の［数２３］式及び［数２４］式が成立する。
【０１２１】
【数２３】
2013070122.tif 000025
【０１２２】
【数２４】
2013070122.tif 000026
【０１２３】
従って、［数２２］式から、下記の［数２５］式が得られる。
【０１２４】
【数２５】
2013070122.tif 000027
【０１２５】
この［数２５］式と前掲した［数２１］式との関係により、ベクトルＶｃで表される前述したＥＣＣ付きデータが、検査行列Ｈによって生成されるための必要十分条件は、下記の［数２６］式を満たすことである。
【０１２６】
【数２６】
2013070122.tif 000028
【０１２７】
この［数２６］式の両辺の対応関係を考慮すると、ＥＣＣのうちの一部（ベクトルＣ1 で表されている部分）は、パリティビットベクトルＰで表される、パリティビット付きデータにおけるｍビットのパリティビットそのものであることが分かる。また、ＥＣＣのうちの残りの部分（ベクトルＣ2 で表されている部分）は、行列Ｂ(i) と、バイトベクトルｖi で表される、情報部データにおけるｉ番目の１バイトデータとの積の総和（ｉ＝１の場合からｉ＝ｍ−１の場合までの総和）を求めればよいことが分かる。
【０１２８】
ここで、前掲した行列Ｂの値の具体例を［数２６］式に代入して、ＥＣＣベクトルＣの各成分を具体的に算出してみる。
【０１２９】
始めに、前述した検査行列Ｈの第一の例（［数１１］式）を求めるために使用した、行例Ｂの値の具体例（［数１０］式）を代入して、ＥＣＣベクトルＣの各成分の算出を行う。この検査行列Ｈの第一の例は、ｎ＝８であり、ｍ＝４である３２ビットの情報部データについてＳＥＣ機能を実現するためのものである。
【０１３０】
まず、この場合の情報ベクトルＶ、パリティビットベクトルＰ、ＥＣＣベクトルＣ、並びに、前述のベクトルＣ1 及びベクトルＣ2 の各成分を、［数２７］式のように表す。
【０１３１】
【数２７】
2013070122.tif 000029
【０１３２】
［数１０］式の行列Ｂの値と［数２７］式の各ベクトルの各成分とを［数２６］式に代入すると、［数２８］式のようになる。
【０１３３】
【数２８】
2013070122.tif 000030
【０１３４】
次に、前述した検査行列Ｈの第二の例（［数１４］式）を求めるために使用した、行例Ｂの値の具体例（［数１３］式）を代入して、ＥＣＣベクトルＣの各成分の算出を行う。この検査行列Ｈの第二の例は、ｎ＝８であり、ｍ＝４である３２ビットの情報部データについてＳＥＣＤＥＤ機能を実現するためのものである。
【０１３５】
まず、この場合の情報ベクトルＶ、パリティビットベクトルＰ、ＥＣＣベクトルＣ、並びに、前述のベクトルＣ1 及びベクトルＣ2 の各成分を、［数２９］式のように表す。
【０１３６】
【数２９】
2013070122.tif 000031
【０１３７】
［数１３］式の行列Ｂの値と［数２９］式の各ベクトルの各成分とを［数２６］式に代入すると、［数３０］式のようになる。
【０１３８】
【数３０】
2013070122.tif 000032
【０１３９】
次に、図４の誤り訂正装置１００におけるＥＣＣ生成部１１０の具体的な回路構成例について説明する。ここでは、［数２８］式及び［数３０］式に示されている、ＥＣＣベクトルＣのうちのベクトルＣ2 についての論理を実現する回路について説明する。
【０１４０】
始めに、ｎ＝８であり、ｍ＝４である３２ビットの情報部データについてＳＥＣ機能を実現するためのＥＣＣ生成部１１０の回路構成例について説明する。
【０１４１】
まず、ｍ×ｎビットの情報部データを表す情報ベクトルＶの各成分の添字を、下記の［数３１］式のように書き直す。
【０１４２】
【数３１】
2013070122.tif 000033
【０１４３】
この［数３１］式は、添字を書き直す前の各成分に対して添字を書き直した各成分を左から順に対応付けたものである。つまり、［数３１］式は、情報ベクトルＶの各成分の添字を、下記の［数３２］式に従って書き直したものである。
【０１４４】
【数３２】
2013070122.tif 000034
【０１４５】
なお、［数３２］式において、ｉ及びｊは整数であって、０≦ｉ≦３且つ０≦ｊ≦７である。
【０１４６】
この［数３１］式を［数２８］式に代入すると、ベクトルＣ2 の各成分ｃ4 、ｃ5 、ｃ6 、及びｃ7 について、下記の［数３３］式が得られる。
【０１４７】
【数３３】
2013070122.tif 000035
【０１４８】
ここで図５について説明する。図５は、ＥＣＣ生成部１１０の第一の回路構成例である。この回路は、４個のＸＯＲ回路１２１−１、１２１−２、１２１−３、及び１２１−４を用いて、［数３３］式におけるベクトルＣ2 の各成分ｃ4 、ｃ5 、ｃ6 、及びｃ7 についての論理を実現する回路である。図３の誤り訂正装置１００によりＳＥＣ機能を用いてデータの訂正を行う場合には、ＥＣＣ生成部１１０は、検査ビットとして、この図５の回路を用いてベクトルＣ2 の各成分の生成を行うようにする。
【０１４９】
なお、この場合には、エラー検出・訂正部１４０は、［数１１］式に示した検査行列Ｈを用いて、前述した検出・訂正を行うように構成する。
【０１５０】
次に、ｎ＝８であり、ｍ＝４である３２ビットの情報部データについてＳＥＣＤＥＤ機能を実現するためのＥＣＣ生成部１１０の回路構成例について説明する。
【０１５１】
前掲した［数３１］式を［数３０］式に代入すると、ベクトルＣ2 の各成分ｃ4 、ｃ5 、ｃ6 、ｃ7 、及びｃ8 について、下記の［数３４］式が得られる。
【０１５２】
【数３４】
2013070122.tif 000036
【０１５３】
ここで図６について説明する。図６は、ＥＣＣ生成部１１０の第二の回路構成例である。この回路は、５個のＸＯＲ回路１２２−１、１２２−２、１２２−３、１２２−４、及び１２２−５を用いて、［数３４］式におけるベクトルＣ2 の各成分ｃ4 、ｃ5 、ｃ6 、ｃ7 、及びｃ8 についての論理を実現する回路である。図３の誤り訂正装置１００によりＳＥＣＤＥＤ機能を用いてデータの訂正を行う場合には、ＥＣＣ生成部１１０は、検査ビットとして、この図６の回路を用いてベクトルＣ2 の各成分の生成を行うようにする。
【０１５４】
なお、この場合には、エラー検出・訂正部１４０は、［数１４］式に示した検査行列Ｈを用いて、前述した検出・訂正を行うように構成する。
【０１５５】
次に、ＥＣＣ生成部１１０を以上のように構成した場合の利点について説明する。
まず、比較のために図７を提示する。図７は、前述した拡張ハミング符号を普通に用いたＳＥＣＤＥＤ機能に使用されるＥＣＣの全部の生成を行う場合のＥＣＣ生成部１１０の回路構成例であり、ｎ＝８且つｍ＝４である３２ビットの情報部データについてのものである。
【０１５６】
この場合、ＳＥＣＤＥＤ機能を実現するために必要とされる検査ビットのビット数は、［log2 （３２＋１）］＋１＝７ビットである。図７の回路は、７個のＸＯＲ回路２００−１から２００−７を用いて、この７ビットの検査ビットを生成する。
【０１５７】
図６と図７との回路を比較すると分かるように、図６の回路の方が図７の回路よりも回路量が小さい。つまり、ＥＣＣ生成部１１０に図６の回路を採用して、ＥＣＣである検査ビットのうちの５ビットを生成し、他の４ビットを、情報部データについてのパリティビットを流用するようにしたことで、誤り訂正装置１００の回路量が小さくなる。
【０１５８】
なお、誤り訂正装置１００の回路量の削減効果は、ＥＣＣ生成部１１０よりも、ＥＣＣレジスタ１２０において寧ろ顕著に表れる。ＥＣＣレジスタ１２０における回路削減の効果について、図８を参照しながら説明する。
【０１５９】
図８において、（Ａ）は、情報部データについてのパリティビットをＥＣＣに利用しない場合のＥＣＣレジスタ１２０の回路量を模式的に表現したものであり、ＥＣＣ生成部１１０として図７の回路を採用した場合のものである。この場合には、ｎ＝８且つｍ＝４である３２ビットの情報部データ毎に７ビットの検査ビットがＥＣＣ生成部１１０により生成されるので、ＥＣＣレジスタ１２０として、情報部データ毎に７ビットの検査ビットを格納するレジスタが必要になる。
【０１６０】
一方、図８において、（Ｂ）は、情報部データについてのパリティビットをＥＣＣに利用する場合のＥＣＣレジスタ１２０の回路量を模式的に表現したものであり、ＥＣＣ生成部１１０として図６の回路を採用した場合のものである。この場合には、ｎ＝８且つｍ＝４である３２ビットの情報部データ毎に５ビットの検査ビットがＥＣＣ生成部１１０により生成されるので、ＥＣＣレジスタ１２０としては、情報部データ毎に５ビットの検査ビットを格納するレジスタを用意すれば済む。従って、（Ｂ）のＥＣＣレジスタ１２０の回路量は、（Ａ）のものよりも少なくなる。
【０１６１】
図４の誤り訂正装置１００において、ＧＰＲレジスタ１２０の回路量は、誤り訂正装置１００の大部分を占めている。一例として、誤り訂正装置１００（拡張ハミング符号を用いてＳＥＣＤＥＤ機能を実現した回路）を実際に調べたところ、ＥＣＣ生成部１１０と、ＥＣＣレジスタ１２０と、エラー検出・訂正部１４０とでのトランジスタ数の比率は、１５：３：１であった。従って、ＧＰＲレジスタ１２０の回路量の削減は、誤り訂正装置１００全体での回路量の削減に大きく寄与する。
【符号の説明】
【０１６２】
１、５、１０  演算装置
２  演算器
３  汎用レジスタ
４  １ビットエラー検出回路
６  エラー検出・訂正回路
７  パリティ生成回路
８  ＥＣＣ生成回路
１００  誤り訂正装置
１１０  ＥＣＣ生成部
１２０  ＥＣＣレジスタ
１３０  誤り検出信号取得部
１４０  エラー検出・訂正部
１２１−１〜１２１−４、１２２−１〜１２２−５、
２００−１〜２００−７  ＸＯＲ回路
【図１】
2013070122.tif 000045
【図２】
2013070122.tif 000046
【図３】
2013070122.tif 000047
【図４】
2013070122.tif 000048
【図５】
2013070122.tif 000049
【図６】
2013070122.tif 000050
【図７】
2013070122.tif 000051
【図８】
2013070122.tif 000052
【手続補正書】
【提出日】平成24年4月11日(2012.4.11)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
各バイトがｎビットのデータを有するｍバイトの情報部データと、前記情報部データの１バイト毎に１ビットずつ設けられた合計ｍビットのパリティビットとを含むパリティビット付きデータの前記情報部データから、前記情報部データの誤りを訂正する誤り訂正符号を構成するビットのうち、前記パリティビットに一致するビット以外のビットを生成する誤り訂正符号生成部と、
前記パリティビット付きデータの排他的論理和を生成して、前記情報部データの誤りを検出する誤り検出部と、
前記誤り検出部が前記情報部データの誤りを検出した場合、前記情報部データの誤りの訂正を、前記パリティビット付きデータに含まれるパリティビットと、前記誤り訂正符号生成部により生成されたビットとを用いて行う誤り訂正部と、
を有することを特徴とする誤り訂正装置。
【請求項２】
前記誤り訂正符号生成部は、
前記パリティビット付きデータの前記情報部データのｉ番目のバイトを構成するｎビットデータを、ｎ個の要素を有するバイトベクトルｖi である、
【数３５】
2013070122.tif 000053
で表現すると共に、前記パリティビット付きデータの前記情報部データを、ｍ個のバイトベクトルを要素として有する情報ベクトルＶである、
【数３６】
2013070122.tif 000054
で表現し、且つ、行列Ｂを、
【数３７】
2013070122.tif 000055
（但し、b(ｉ), b(ｊ)は、任意の整数ｉ及びｊ（但し、ｉ≠ｊであって、０≦ｉ≦ｎ−１且つ０≦ｊ≦ｎ−１）において、互いに線形独立な、零ベクトルではないｄ次の列ベクトル）とした場合において、
【数３８】
2013070122.tif 000056
（但し、「Ｔ」は行列の転置を表し、「＋」は排他的論理和演算を表す）に従い、ｄ次のベクトルＣ2 の値を生成する排他的論理和演算回路を有することを特徴とする請求項１記載の誤り訂正装置。
【請求項３】
前記行列Ｂにおける列ベクトルｂ(i) の成分における「１」の個数が、任意の整数ｉ（但し、０≦ｉ≦ｎ−１）において偶数であることを特徴とする請求項２記載の誤り訂正装置。
【請求項４】
前記誤り訂正装置は、
前記誤り訂正符号生成部により生成されたビットを格納する部分格納部を更に備え、
前記パリティビット付きデータは、
前記誤り訂正装置に接続された演算器がレジスタに出力したデータであり、
前記誤り訂正部は、
前記レジスタに格納された前記パリティビット付きデータのパリティビットと、前記部分格納部に格納されたビットとを用いて前記誤りの訂正を行うことを特徴とする請求項１から３のいずれか１項記載の誤り訂正装置。
【請求項５】
各バイトがｎビットのデータを有するｍバイトの情報部データと、前記情報部データの１バイト毎に１ビットずつ設けられた合計ｍビットのパリティビットとを含むパリティビット付きデータの前記情報部データから、前記情報部データの誤りを訂正する誤り訂正符号を構成するビットのうちの、前記パリティビットに一致する部分以外のビットを生成し、
前記パリティビット付きデータの排他的論理和を生成し、
前記パリティビット付きデータの情報部データの誤りを検出し、
前記パリティビット付きデータの情報部データの誤りを検出した場合、前記パリティビット付きデータの情報部データの誤りの訂正を、前記パリティビット付きデータに含まれるパリティビットと、前記生成されたビットとを用いて行うことを特徴とする誤り訂正方法。
【請求項６】
各バイトがｎビットのデータを有するｍバイトの情報部データと、前記情報部データの１バイト毎に１ビットずつ設けられた合計ｍビットのパリティビットとを含むパリティビット付きデータを出力する演算器と、
前記演算器から出力されるパリティビット付きデータを格納するレジスタと、
前記演算器が前記レジスタから読み出したパリティビット付きデータの排他的論理和を生成して前記読み出したパリティビット付きデータにおける前記情報部データの誤りを検出する誤り検出部と、
前記誤り検出部が前記パリティビット付きデータにおける前記情報部データの誤りを検出した場合、前記パリティビット付きデータの情報部データの誤りの訂正を行う誤り訂正装置を備える演算装置において、
前記誤り訂正装置は、
前記演算器が前記レジスタに格納する前記パリティビット付きデータの前記情報部データから、前記情報部データの誤りを訂正する誤り訂正符号を構成するビットのうちの、前記パリティビットに一致するビット以外のビットを生成する誤り訂正符号生成部と、
前記情報部データの誤りの訂正を、前記パリティビット付きデータに含まれるパリティビットと、前記誤り訂正符号生成部により生成されたビットとを用いて行う誤り訂正部を有することを特徴とする演算装置。
【請求項７】
前記誤り訂正符号生成部は、前記パリティビット付きデータの前記情報部分データにおけるｉ番目のバイトを構成するｎビットデータを、ｎ個の要素を有するバイトベクトルｖi である、
【数３９】
2013070122.tif 000057
で表現すると共に、前記パリティビット付きデータの前記情報部分データを、ｍ個のバイトベクトルを要素として有する情報ベクトルＶである、
【数４０】
2013070122.tif 000058
で表現し、且つ、行列Ｂを、
【数４１】
2013070122.tif 000059
（但し、b(ｉ), b(ｊ)は、任意の整数ｉ及びｊ（但し、ｉ≠ｊであって、０≦ｉ≦ｎ−１且つ０≦ｊ≦ｎ−１）において、互いに線形独立な、零ベクトルではないｄ次の列ベクトル）とした場合において、
【数４２】
2013070122.tif 000060
（但し、「Ｔ」は行列の転置を表し、「＋」は排他的論理和演算を表す）に従い、ｄ次のベクトルＣ2 の値を生成する排他的論理和演算回路を有することを特徴とする請求項６記載の演算装置。
【請求項８】
前記行列Ｂにおける列ベクトルｂ(i) の成分における「１」の個数が、任意の整数ｉ（但し、０≦ｉ≦ｎ−１）において偶数であることを特徴とする請求項７記載の演算装置。
【請求項９】
前記演算装置はさらに、
前記誤り訂正符号生成部により生成されたビットを格納する部分格納部を有し、
前記誤り訂正部は、
前記レジスタに格納される前記パリティビット付きデータのパリティビットと、前記部分格納部に格納されるビットとを用いて前記誤りの訂正を行うことを特徴とする請求項６から８のいずれか１項記載の演算装置。