(57)【要約】      （修正有）【課題】誤り判定回路及び共有メモリシステムにおいて、システムのコストを増加させることなく主記憶メモリの領域の利用効率を向上してデータ保証を行う。【解決手段】Ｐ（ｘ）をガロア体ＧＦ（２）上のｍ次の原始多項式とし、（ｋ，ｋ−３）リード・ソロモン符号を用いたＳｍＥＣ−ＤｍＥＤにおいて、ｍビットブロック単位のデータに対し、誤りから保護するべき対象である元符号の多項式表現Ｉ（ｘ）に対し、１ブロックの誤り、２ブロックの誤り、或いは、誤りがないことを検出すると共に、ブロック誤りの位置ｐを前記ガロア拡大体ＧＦ（２ｍ）上でＳ０αｐ＝Ｓ１から検出する誤り検出回路部を備えるように構成する。【選択図】図９
2010122828.tif 000002
【特許請求の範囲】
【請求項１】
Ｐ（ｘ）をガロア体ＧＦ（２）上のｍ次（ｍは８以上の自然数）の原始多項式とし、ガロア拡大体ＧＦ（２ｍ）の原始元をαとし、Ｐ（ｘ）＝０の根をαｉ（ｉ＝０，...，ｍ−１）とすると、（ｋ，ｋ−３）リード・ソロモン符号（ｋは２ｍ以下の自然数）を用いたＳｍＥＣ−ＤｍＥＤにおいて、ｍビットブロック単位のデータに対し、誤りから保護するべき対象である元符号の多項式表現Ｉ（ｘ）に対し、Ｃ（ｘ）＝ｘ２Ｉ（ｘ）ｍｏｄＰ（ｘ）なる多項式剰余演算により訂正コードのチェックビットの生成を前記ガロア拡大体ＧＦ（２ｍ）上の加算で行う第１の排他的論理和ツリーと、
前記元符号に前記チェックビットを添加した符号Ｃ（ｘ）に対して、エラーが混入した可能性のある誤りを検出するべき対象である符号の多項式表現をＹ（ｘ）とし、シンドロームＳ０，Ｓ１，Ｓ２をＳｎ＝Ｙ（αｎ）（ｎ＝０，１，２）から生成する第２の排他的論理和ツリーと、
Ｓ１２＝Ｓ０Ｓ２が成立しているか否かに基づいて、１ブロックの誤り、２ブロックの誤り、或いは、誤りがないことを検出すると共に、ブロック誤りの位置ｐを前記ガロア拡大体ＧＦ（２ｍ）上でＳ０αｐ＝Ｓ１から検出する誤り検出回路部を備えた、誤り判定回路。
【請求項２】
前記誤り検出回路部は、積Ｓ０Ｓ２を指数部の加算で求める対数変換回路を含む、請求項１記載の誤り判定回路。
【請求項３】
前記データと、前記誤り検出回路部から出力される前記２ブロック誤りの位置及び前記１ブロック誤りの位置に基づいて、１ブロック以上の誤りの位置を検出すると共に、Ｓ１２＝Ｓ０Ｓ２が成立している場合にはシンドロームＳ０から訂正データを出力する誤り訂正回路部を更に備えた、請求項１又は２記載の誤り判定回路。
【請求項４】
ｍ＝８である、請求項１乃至３のいずれか１項記載の誤り判定回路。
【請求項５】
前記第２の排他的論理和ツリーに入力される前記データ及び前記チェックビットは、９バイトのメモリモジュール２個に対して２インターリーブにより２回の読み出しを１つの単位として行うことで得られた３２バイトのデータ、３バイトのチェックビット及び１バイトの余りデータに含まれる、請求項４記載の誤り判定回路。
【請求項６】
ｋ＝３６である、請求項１乃至５のいずれか１項記載の誤り判定回路。
【請求項７】
プロセッサ、主記憶メモリ及びキャッシュメモリを有するノードが複数接続された共有メモリシステムであって、
各ノードは、
Ｐ（ｘ）をガロア体ＧＦ（２）上のｍ次（ｍは８以上の自然数）の原始多項式とし、ガロア拡大体ＧＦ（２ｍ）の原始元をαとし、Ｐ（ｘ）＝０の根をαｉ（ｉ＝０，...，ｍ−１）とすると、（ｋ，ｋ−３）リード・ソロモン符号（ｋは２ｍ以下の自然数）を用いたＳｍＥＣ−ＤｍＥＤにおいて、ｍビットブロック単位のデータに対し、誤りから保護するべき対象である元符号の多項式表現Ｉ（ｘ）に対し、Ｃ（ｘ）＝ｘ２Ｉ（ｘ）ｍｏｄＰ（ｘ）なる多項式剰余演算により訂正コードのチェックビットの生成を前記ガロア拡大体ＧＦ（２ｍ）上の加算で行う第１の排他的論理和ツリーと、
前記元符号に前記チェックビットを添加した符号Ｃ（ｘ）に対して、エラーが混入した可能性のある誤りを検出するべき対象である符号の多項式表現をＹ（ｘ）とし、シンドロームＳ０，Ｓ１，Ｓ２をＳｎ＝Ｙ（αｎ）（ｎ＝０，１，２）から生成する第２の排他的論理和ツリーと、
Ｓ１２＝Ｓ０Ｓ２が成立しているか否かに基づいて、１ブロックの誤り、２ブロックの誤り、或いは、誤りがないことを検出すると共に、ブロック誤りの位置ｐを前記ガロア拡大体ＧＦ（２ｍ）上でＳ０αｐ＝Ｓ１から検出する誤り検出回路部を備えた、共有メモリシステム。
【請求項８】
前記誤り検出回路部は、積Ｓ０Ｓ２を指数部の加算で求める対数変換回路を含む、請求項７記載の共有メモリシステム。
【請求項９】
各ノードは、
前記データと、前記誤り検出回路部から出力される前記２ブロック誤りの位置及び前記１ブロック誤りの位置に基づいて、１ブロック以上の誤りの位置を検出すると共に、Ｓ１２＝Ｓ０Ｓ２が成立している場合にはシンドロームＳ０から訂正データを出力する誤り訂正回路部を更に備えた、請求項７又は８記載の共有メモリシステム。
【請求項１０】
ｍ＝８である、請求項７乃至９のいずれか１項記載の共有メモリシステム。
【請求項１１】
前記第２の排他的論理和ツリーに入力される前記データ及び前記チェックビットは、前記主記憶メモリ内の複数の９バイトのメモリモジュールのうち２個のメモリモジュールに対して２インターリーブにより２回の読み出しを１つの単位として行うことで得られた３２バイトのデータ、３バイトのチェックビット及び１バイトの余りデータに含まれる、請求項１０記載の共有メモリシステム。
【請求項１２】
前記１バイトの余りデータは、各ノードの前記キャッシュメモリに格納されるデータのコヒーレンシーを保つための情報、データ保証をするための情報、メモリを保護するための情報のいずれかである、請求項１１記載の共有メモリシステム。
【請求項１３】
ｋ＝３６である、請求項７乃至１２のいずれか１項記載の共有メモリシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、誤り判定回路及び共有メモリシステムに係り、特に主記憶メモリのデータ保証をする誤り判定回路及び共有メモリシステムに関する。
【背景技術】
【０００２】
マルチプロセッサシステム又は共有メモリシステムにおいてキャッシュコヒーレンシーを保つ方法としては、ＳＭＰ（Symmetric Multi Processing）方式とｃｃＮＵＭＡ（cache coherent Non-Uniform Memory Access）方式がある。
【０００３】
ｃｃＮＵＭＡ方式では、一般的に主記憶メモリをあるサイズのブロック毎に分割し、各ブロックに対してディレクトリ（Directory）と呼ばれるキャッシュコヒーレンシー（Coherency）を保つための情報を主記憶メモリに格納するフルディレクトリ（Full Directory）方式が採用されている。ブロックサイズは、キャッシュメモリのラインサイズと等しいことが多い。
【０００４】
ディレクトリを格納する領域を、主記憶メモリとは別の領域に確保する手法がある。しかし、ディレクトリを格納するために主記憶メモリとは別のメモリを設けると、主記憶メモリとして使用できる領域を確保することはできるものの、システムのコストが増加してしまう。
【０００５】
一方、特にサーバとして使用されるシステムの主記憶メモリは例えば８：１の割合の１の部分にパリティ（Parity）情報又は誤り訂正コードのチェックビットを格納できるようなＤＩＭＭ（Dual Inline Memory Module）が一般的であり、この８：１の割合の１の部分をパリティ情報の代わりにディレクトリを格納する領域とする手法もある。しかし、サーバとして使用されるシステムの主記憶メモリ、即ち、ＤＩＭＭでは、格納されたデータの信頼性（即ち、データ化けが起きていないこと）を保証する必要がある。
【０００６】
ｃｃＮＵＭＡ方式以外の方式、即ち、主記憶メモリにデータ以外を格納する必要が無いＳＭＰ方式等では、１バイト分のところにＳＥＣ−ＤＥＤ（Single Error Correct, Double Error Detect）誤り訂正コード（ＥＣＣ：Error Check and correction Code）を格納したり、或いは、複数回データを読み出す単位でチェックすることでＳ８ＥＣ−Ｄ８ＥＤ（Single-8-bit-group Error Correct, Double-8-bit-group Error Detect）ＥＣＣ方式が採用されている。特に後者の場合、市販の例えば１８チップで構成されたＤＩＭＭにおいて１チップが故障したとしても、データ訂正によりＤＩＭＭの運用が可能となる。
【０００７】
従って、サーバとして使用されるシステムがフルディレクトリ方式のｃｃＮＵＭＡ方式を採用する場合、ＳＭＰ方式のようなＤＩＭＭの１チップ故障にも耐えられるデータインテグリティ（Data Integrity）又はデータ保証をしつつ、ディレクトリのための領域を確保することが望ましい。
【０００８】
一方、主記憶メモリをページと呼ばれる単位に区切り、ページ毎にストレージキー（Storage Key）と呼ばれる情報を格納するメインフレーム等のアーキテクチャが提案されている。主記憶メモリの領域に例えば４ビットのキー情報を格納しておくことで、同一キー情報を持つアクセスのみを許可するメモリ保護機能（又は、メモリプロテクト機能）を実現できる。しかし、近年のマルチプロセッサシステムでは、主記憶メモリの容量が増大しているので、主記憶メモリの容量の増大に比例してページ数も増大し、キー情報の総量も増大している。又、主記憶メモリには安価な規格化されたＤＩＭＭを用いるのが一般的であるため、キー情報を格納する領域を別途安価に構築することが難しい。
【０００９】
そこで、従来は、ＤＩＭＭで構築される主記憶メモリの領域の一部をキー情報の格納領域に転用している。このため、本来なら主記憶メモリの領域として使用したい領域がキー情報の格納用に使用されており、主記憶メモリの利用効率を向上するのが難しい。
【特許文献１】特開平１１−２３２１２９号公報
【特許文献２】特開平９−１２０６７１号公報
【特許文献３】特開２００６−２５２５４５号公報
【特許文献４】特開昭５４−５７８４８号公報
【発明の開示】
【発明が解決しようとする課題】
【００１０】
従来のマルチプロセッサシステム又は共有メモリシステムでは、主記憶メモリの領域の一部をキャッシュコヒーレンシーを保つための情報、データ保証をするための情報、メモリを保護するための情報等を格納するために使用するため、システムのコストを増加させることなく主記憶メモリの領域の利用効率を向上してデータ保証を行うことが難しいという問題があった。
【００１１】
そこで、本発明は、システムのコストを増加させることなく主記憶メモリの領域の利用効率を向上してデータ保証を行うことが可能な誤り判定回路及び共有メモリシステムを提供することを目的とする。
【課題を解決するための手段】
【００１２】
本発明の一観点によれば、Ｐ（ｘ）をガロア体ＧＦ（２）上のｍ次（ｍは８以上の自然数）の原始多項式とし、ガロア拡大体ＧＦ（２ｍ）の原始元をαとし、Ｐ（ｘ）＝０の根をαｉ（ｉ＝０，...，ｍ−１）とすると、（ｋ，ｋ−３）リード・ソロモン符号（ｋは２ｍ以下の自然数）を用いたＳｍＥＣ−ＤｍＥＤにおいて、ｍビットブロック単位のデータに対し、誤りから保護するべき対象である元符号の多項式表現Ｉ（ｘ）に対し、Ｃ（ｘ）＝ｘ２Ｉ（ｘ）ｍｏｄＰ（ｘ）なる多項式剰余演算により訂正コードのチェックビットの生成を前記ガロア拡大体ＧＦ（２ｍ）上の加算で行う第１の排他的論理和ツリーと、前記元符号に前記チェックビットを添加した符号Ｃ（ｘ）に対して、エラーが混入した可能性のある誤りを検出するべき対象である符号の多項式表現をＹ（ｘ）とし、シンドロームＳ０，Ｓ１，Ｓ２をＳｎ＝Ｙ（αｎ）（ｎ＝０，１，２）から生成する第２の排他的論理和ツリーと、Ｓ１２＝Ｓ０Ｓ２が成立しているか否かに基づいて、１ブロックの誤り、２ブロックの誤り、或いは、誤りがないことを検出すると共に、ブロック誤りの位置ｐを前記ガロア拡大体ＧＦ（２ｍ）上でＳ０αｐ＝Ｓ１から検出する誤り検出回路部を備えた誤り判定回路が提供される。
【００１３】
本発明の一観点によれば、プロセッサ、主記憶メモリ及びキャッシュメモリを有するノードが複数接続された共有メモリシステムであって、各ノードは、Ｐ（ｘ）をガロア体ＧＦ（２）上のｍ次（ｍは８以上の自然数）の原始多項式とし、ガロア拡大体ＧＦ（２ｍ）の原始元をαとし、Ｐ（ｘ）＝０の根をαｉ（ｉ＝０，...，ｍ−１）とすると、（ｋ，ｋ−３）リード・ソロモン符号（ｋは２ｍ以下の自然数）を用いたＳｍＥＣ−ＤｍＥＤにおいて、ｍビットブロック単位のデータに対し、誤りから保護するべき対象である元符号の多項式表現Ｉ（ｘ）に対し、Ｃ（ｘ）＝ｘ２Ｉ（ｘ）ｍｏｄＰ（ｘ）なる多項式剰余演算により訂正コードのチェックビットの生成を前記ガロア拡大体ＧＦ（２ｍ）上の加算で行う第１の排他的論理和ツリーと、前記元符号に前記チェックビットを添加した符号Ｃ（ｘ）に対して、エラーが混入した可能性のある誤りを検出するべき対象である符号の多項式表現をＹ（ｘ）とし、シンドロームＳ０，Ｓ１，Ｓ２をＳｎ＝Ｙ（αｎ）（ｎ＝０，１，２）から生成する第２の排他的論理和ツリーと、Ｓ１２＝Ｓ０Ｓ２が成立しているか否かに基づいて、１ブロックの誤り、２ブロックの誤り、或いは、誤りがないことを検出すると共に、ブロック誤りの位置ｐを前記ガロア拡大体ＧＦ（２ｍ）上でＳ０αｐ＝Ｓ１から検出する誤り検出回路部を備えた、共有メモリシステムが提供される。
【発明の効果】
【００１４】
開示の誤り判定回路及び共有メモリシステムによれば、システムのコストを増加させることなく主記憶メモリの領域の利用効率を向上してデータ保証を行うことができる。
【発明を実施するための最良の形態】
【００１５】
開示の誤り判定回路及び共有メモリシステムでは、Ｐ（ｘ）をガロア体ＧＦ（２）上のｍ次（ｍは８以上の自然数）の原始多項式とし、ガロア拡大体（Galois Field）ＧＦ（２ｍ）の原始元をαとし、Ｐ（ｘ）＝０の根をαｉ（ｉ＝０，...，ｍ−１）とすると、（ｋ，ｋ−３）リード・ソロモン（Reed-Solomon）符号（ｋは２ｍ以下の自然数）を用いたＳｍＥＣ−ＤｍＥＤにおいて、ｍビットブロック単位のデータに対し、誤りから保護するべき対象である元符号の多項式表現Ｉ（ｘ）に対し、Ｃ（ｘ）＝ｘ２Ｉ（ｘ）ｍｏｄＰ（ｘ）なる多項式剰余演算により訂正コードのチェックビットの生成を前記ガロア拡大体ＧＦ（２ｍ）上の加算で行う第１の排他的論理和ツリーと、元符号にチェックビットを添加した符号Ｃ（ｘ）に対してエラーが混入した可能性のある誤りを検出するべき対象である符号の多項式表現をＹ（ｘ）とし、シンドロームＳ０，Ｓ１，Ｓ２をＳｎ＝Ｙ（αｎ）（ｎ＝０，１，２）から生成する第２の排他的論理和ツリーと、Ｓ１２＝Ｓ０Ｓ２が成立しているか否かに基づいて、１ブロックの誤り、２ブロックの誤り、或いは、誤りがないことを検出すると共に、ブロック誤りの位置ｐを前記ガロア拡大体ＧＦ（２ｍ）上でＳ０αｐ＝Ｓ１から検出する誤り検出回路部を用いる。
【００１６】
主記憶メモリに格納されて読み出されるデータに対して上記の如きリードソロモン符号を用いた符号化及び復号化処理を行うことで、主記憶メモリの空き領域を生み出して別の用途に転用すると共に誤り訂正強度を従来と同程度に保つことで、主記憶メモリの領域の利用効率を向上してデータ保証を行うことができる。
【００１７】
以下に、本発明の誤り判定回路及び共有メモリシステムの各実施例を、図面と共に説明する。
【実施例】
【００１８】
図１は、本発明の一実施例における共有メモリシステムを示すブロック図である。図１に示す共有メモリシステムは、ｃｃＮＵＭＡ方式のマルチプロセッサシステムである。共有メモリシステムは、複数のノード１が周知の接続手段２により接続された構成を有する。ここでは説明の便宜上、１つのノード１のみを示す。ノード１は、ＣＰＵ（Central Processing Unit）等のプロセッサ１１、ディレクトリコントローラ（ＤＣ：Directory Controller）１２、主記憶メモリ１３及びキャッシュメモリ１４を有する。ｃｃＮＵＭＡ方式を採用するため、主記憶メモリ１３にはデータに加え、キャッシュメモリ１４に格納されるデータのコヒーレンシーを保つためのディレクトリ情報も格納される。
【００１９】
後述するように、符号化回路は、Ｐ（ｘ）をガロア体ＧＦ（２）上のｍ次（ｍは８以上の自然数）の原始多項式とし、ガロア拡大体（Galois Field）ＧＦ（２ｍ）の原始元をαとし、Ｐ（ｘ）＝０の根をαｉ（ｉ＝０，...，ｍ−１）とすると、（ｋ，ｋ−３）リード・ソロモン（Reed-Solomon）符号（ｋは２ｍ以下の自然数）を用いたＳｍＥＣ−ＤｍＥＤにおいて、ｍビットブロック単位のデータに対し、誤りから保護するべき対象である元符号の多項式表現Ｉ（ｘ）に対し、Ｃ（ｘ）＝ｘ２Ｉ（ｘ）ｍｏｄＰ（ｘ）なる多項式剰余演算により訂正コードのチェックビットの生成を前記ガロア拡大体ＧＦ（２ｍ）上の加算で行う第１の排他的論理和ツリーを有する。一方、復号化回路は、前記元符号に前記チェックビットを添加した符号Ｃ（ｘ）に対して、エラーが混入した可能性のある誤りを検出するべき対象である符号の多項式表現をＹ（ｘ）とし、シンドロームＳ０，Ｓ１，Ｓ２をＳｎ＝Ｙ（αｎ）（ｎ＝０，１，２）から生成する第２の排他的論理和ツリーと、Ｓ１２＝Ｓ０Ｓ２が成立しているか否かに基づいて、１ブロックの誤り、２ブロックの誤り、或いは、誤りがないことを検出すると共に、ブロック誤りの位置ｐを前記ガロア拡大体ＧＦ（２ｍ）上でＳ０αｐ＝Ｓ１から検出する誤り検出回路部を有する。後述するように、誤り判定回路は、第１の排他的論理和ツリー、第２の排他的論理和ツリー及び検出回路部を有する。
【００２０】
尚、本実施例では、説明の便宜上、ｋ＝３６であるものとする。この場合、（ｋ，ｋ−３）リード・ソロモン符号は、（３６，３３）リード・ソロモン符号である。
【００２１】
又、ｍが８未満の自然数であると、（ｋ，ｋ−３）リード・ソロモン符号とならないため、ｍは８以上の自然数である必要がある。本実施例では、説明の便宜上、ｍ＝８であるものとするが、例えばｍ＝１６等であっても良いことは言うまでもない。
【００２２】
主記憶メモリ１３は複数のＤＩＭＭ１３０を有する。各ＤＩＭＭ１３０は、図２に示すように、１８個のメモリチップ１３１−１〜１３１−１８を有する。各メモリチップ１３１−１〜１３１−１８は、４ビットのデータ幅を有する。図２は、ＤＩＭＭ１３０の構成を示す図であり、データ線以外のアドレス線等の図示は省略してある。
【００２３】
ＥＣＣを用いたデータ訂正可能なＤＩＭＭ１３０を用いた主記憶メモリ１３は、データ幅が例えば８バイト＋１バイト（＝７２ビット）である。この場合、ＤＩＭＭ１３０が１チップ故障に耐えられることがデータの信頼性を保証する上で必要条件であると、Ｓ４ＥＣ−Ｄ４ＥＤを行えば十分である。例えば、１６バイトのデータに対して１６ビットのチェックビットを設けることで、Ｓ４ＥＣ−Ｄ４ＥＤを実現できることが知られている（例えば、特許文献４）。この場合のデータとチェックビットの比率は８：１であるため、図３に示すように、ＤＩＭＭ１３０には余分のデータを格納するだけのビットの余りはない。図３は、２個のＤＩＭＭ１３０を用いて１７バイトのデータ幅の誤り検出及び訂正処理を実現する場合を示す図である。
【００２４】
そこで、本実施例では、２インターリーブ（2 interleave）により２回の読み出しを１つの単位とすることで、Ｓ８ＥＣ−Ｄ８ＥＤコードであれば、１チップ故障による場合でも８ビットブロックの単一誤りとして取り扱う。これにより、余分のデータを格納するために８ビット（１バイト）の領域を確保することができ、他のチップに誤りが無ければ、データ訂正が可能である。図４は、２個のＤＩＭＭ１３０を用いて２インターリーブにより２回の読み出しを１つの単位とする誤り検出及び訂正処理を行う場合を示す図である。
【００２５】
本実施例では、Ｓ８ＥＣ−Ｄ８ＥＤ符号として、ガロア拡大体ＧＦ（２８）における（３６，３３）リードソロモン符号を用いる、高速処理が可能な符号化及び復号化回路を構成する。ガロア体ＧＦ（２）上の８次の原始多項式Ｐ（ｘ）には、例えばＰ（ｘ）＝ｘ８＋ｘ４＋ｘ３＋ｘ２＋１を用いる。ガロア拡大体ＧＦ（２８）の原始元（ガロア体ＧＦ（２）の原始元でもある）をαとすると、原始多項式Ｐ（ｘ）が８次多項式なのでＰ（ｘ）＝０の根は８個あり、αｉ（ｉ＝０，...，７）となる。
【００２６】
〔符号化回路〕
Ｓ８ＥＣ−Ｄ８ＥＤは、１バイト誤り訂正可能で２バイト誤り検出可能な符号であり、データと誤り訂正コードを合わせて３６バイトになるリードソロモン符号は、符号間距離を３にすればデータ部が３３バイトで誤り訂正コードが３バイトの（３６，３３）リードソロモン符号となる。この（３６，３３）リードソロモン符号の生成多項式Ｇ（ｘ）は、Ｇ（ｘ）＝（ｘ＋α０）（ｘ＋α１）（ｘ＋α２）で表すことができる。
【００２７】
この場合、誤りから保護するべき対象（即ち、誤り保護対象）である元符号の多項式をＩ（ｘ）とすると、誤り訂正コードの多項式Ｃ（ｘ）はＣ（ｘ）＝ｘ２Ｉ（ｘ）ｍｏｄＰ（ｘ）なる多項式剰余演算で表され、保護された符号Ｆ（ｘ）はＦ（ｘ）＝ｘ２Ｉ（ｘ）＋Ｃ（ｘ）で表される。
【００２８】
符号化処理を高速なハードウェア回路で実現する際に問題となるのは、上記多項式剰余演算の部分である。多項式剰余演算を既存のＳＥＣ−ＤＥＤ ＥＣＣと同様の生成行列の形で表すことができれば、符号化処理のハードウェアへの実装は容易になる。
【００２９】
元符号の３３バイトのデータビット列Ｄ＝｛ｄ２６３，ｄ２６２，...，ｄ０｝は、次の多項式で表すことができる。次の多項式において、ｉは３３バイトのブロックのバイト位置（バイト０〜３２）を示し、ｊはバイトブロック内のビット位置（ビット０〜７）を示し、各ｄは０又は１の値を取る。
【００３０】
【数１】
2010122828.tif 000003
ここで、ある単一ビットのみが１であるようなデータビット列をＤｉ＝｛（２６３−ｉ）番目のみが１で他が０のビット列｝と定義し、Ｉｉ（ｘ）を各データビット列Ｄｉに対応する多項式とするとき、線形性により元符号の多項式Ｉ（ｘ）はｄｉ＝１であるデータビットに対応する多項式Ｉｉ（ｘ）の線形和で表すことができる。Ｄｉ，Ｉｉ（ｘ），ｄｉにおいて、ｉは０から２６３までの自然数である。このため、誤り訂正コードの多項式Ｃ（ｘ）もＣｉ（ｘ）＝ｘ２Ｉｉ（ｘ）ｍｏｄＰ（ｘ）の線形和、即ち、Ｃ（ｘ）＝ΣＣｉ（ｘ）で表すことができる。従って、データビット列Ｄｉに関する誤り訂正コードの多項式Ｃｉ（ｘ）を予め求めておくことができ、誤り訂正コードの多項式Ｃｉ（ｘ）から生成行列を構成可能である。
【００３１】
原始多項式Ｐ（ｘ）の性質Ｐ（α）＝０より、本実施例ではα８＝α４＋α３＋α２＋１を繰り返し用いてαの次数を７以下にする。このようにすると、誤り訂正コードの多項式Ｃｉ（ｘ）を次のように表すことができる。
【００３２】
【数２】
2010122828.tif 000004
誤り訂正コードの多項式Ｃｉ（ｘ）において、ｋ＝０，１，２であり、Ｃｉ〔ｎ〕（上記の多項式中、ｎは８ｋ＋ｊ）の「ｉ」は「Ｃ」の添え字、「〔ｎ〕」は「ｉ」の添え字を表し、各Ｃｉ〔ｎ〕は０又は１の値を取り、ｉは０〜２６３である。この｛Ｃｉ〔ｎ〕｝（ｎ＝２３...０）の線形結合がチェックビット列｛Ｃｎ｝（ｎ＝２３...０）になる。
【００３３】
【数３】
2010122828.tif 000005
上記の式は、ガロア拡大体ＧＦ（２８）上の加算なので、実体は排他的論理和である。
【００３４】
図５及び図６は、上記の如く求めた生成行列の一例を示す図である。図５及び図６では、バイト毎に区切られるブロック番号Block35〜Block3について生成行列ｃ２３〜ｃ０が示されているが、ブロック番号の利用方法自体については復号化回路の動作と共に後述する。尚、ブロック番号Block2〜Block0は、２４ビットの誤り訂正コードに割り当てられる。
【００３５】
尚、データビットがオール０（All-0）となるデータ壊れの検出耐性を向上するために、Ｃｎのうちいくつかを反転してＤＩＭＭ１３０に格納する等の保護対策を取るようにしても良い。尚、このような保護対策自体は周知であるため、その説明は省略する。
【００３６】
図７は、符号化回路を示すブロック図であり、図８は、符号化回路の排他的論理和（ＥＯＲ：Exclusive-OR）ツリーの構成を示す回路図である。符号化回路は、ノード１においてプロセッサ１１内又はプロセッサ１１外に設けられている。
【００３７】
図７に示すように、ＥＯＲツリー２１には３３バイトのデータDataが入力され、２４ビットのチェックビットCheckBitが出力される。ＥＯＲツリー２１は、図８に示す如く接続されたＥＯＲ回路２１１を有し、データData[262]〜Data[5]に対してチェックビットCheckBit[23]を出力する。ＥＯＲツリー２１は、図６及び７に示す生成行列中「１」のビットについて全て排他的論理和を求める。
【００３８】
データData及び誤り訂正コードのチェックビットCheckBitは、図４と共に説明したように主記憶メモリ１３（ＤＩＭＭ１３０）に格納される。
【００３９】
〔復号化回路〕
図９は、復号化回路を示すブロック図である。復号化回路は、図９に示す如く接続されたＥＯＲツリー３１、誤り検出回路部３２及び誤り訂正回路部３３を有する。復号化回路は、ノード１においてプロセッサ１１内又はプロセッサ１１外に設けられている。
【００４０】
ＥＯＲツリー３１は、図８に示すＥＯＲツリー２１と同様の構成を有するので、その図示及び説明は省略する。ＥＯＲツリー３１は、符号化されたデータReadData[263:0]及びチェックビットReadCheckBit[23:0]に基づいて以下に説明するシンドロームSyndrom0[7:0], Syndrom1[7:0], Syndrom2[7:0]を生成する。
【００４１】
Ｓ８ＥＣ−Ｄ８ＥＤのために、本実施例では８ビットのシンドロームを３種類生成する。形式的には２４ビットのシンドロームを生成することと実質的に同じであるが、誤り検出及び訂正処理の説明を簡単にするため、シンドロームをＳ０，Ｓ１，Ｓ２で表す。主記憶メモリ１３（ＤＩＭＭ１３０）から読み出された符号が、データとチェックビットを合わせて３６バイトの多項式表現Ｙ（ｘ）で表されるものとすると、シンドロームＳ０，Ｓ１，Ｓ２はＳｎ＝Ｙ（αｎ）（ｎ＝０，１，２）なるシンドローム生成行列の抽象表現式で表される。つまり、Ｙ（ｘ）は、誤りが検出される対象（即ち、誤り検出対象）である符号の多項式表現である。ここでは、読み出されたデータ列Ｄ'をＤ'＝ｄ'２６３，...，ｄ'０，ｃ'２３，...，ｃ'０で表す。ＤＩＭＭ１３０に保存されている間にデータが壊れた、或いは、誤りが混入した可能性があるので、格納前のデータとは読み出し後のデータに「'」なる記号を付けて区別すると、読み出された符号は次のような多項式表現Ｙ（ｘ）で表される。
【００４２】
【数４】
2010122828.tif 000006
ここで、シンドロームＳ０，Ｓ１，Ｓ２についても上記生成行列を作ったときと同様に、読み出したデータとチェックビットからなるビット列が１つだけ１であるような線形結合で表すことができる。この場合も、符号化時と同様にしてα８＝α４＋α３＋α２＋１により次数を落とすことでシンドロームＳ０，Ｓ１，Ｓ２を求める生成行列を得ることができる。チェックビットが加わるものの、シンドロームＳ０，Ｓ１，Ｓ２を求める行列を得る手法は符号化時に用いる手法と同様であるため、その説明は省略する。
【００４３】
以下の行列表現においては、Ｓ０＝ΣＳ０ｉαｉ、Ｓ１＝ΣＳ１ｉαｉ、Ｓ２＝ΣＳ２ｉαｉであり、各Ｓ０ｉ，Ｓ１ｉ，Ｓ２ｉは０又は１の値を取る。
【００４４】
図１０及び図１１は、シンドロームを求める行列の一例を示す図である。図１０及び図１１は、ブロック番号Block35〜Block0についてシンドロームＳ０の生成行列要素Ｓ０７〜Ｓ００、シンドロームＳ１の生成行列要素Ｓ１７〜Ｓ１０、シンドロームＳ２の生成行列要素Ｓ２７〜Ｓ２０を示す。
【００４５】
図１２は、誤り検出回路部３２を示す回路図である。誤り検出回路部３２は、図１２に示す如く接続されたデコード・エンコード回路４１、指数部分ｍｏｄ２５５付き加算回路４２、誤り判定回路４３、インバータ回路４４及び並び替え回路４５を有する。
【００４６】
上記の如く得られた３つのシンドロームＳ０，Ｓ１，Ｓ２の値がいずれも０であれば誤りは無い。少なくとも１つのシンドロームが０でなければ、何らかの誤りがある。少なくとも１つのシンドロームが０でない場合、ガロア拡大体ＧＦ（２８）上で方程式Ｓ１２＝Ｓ０Ｓ２が成立すると、復元可能な１ブロック誤りである。リード・ソロモン符号としては、方程式の等号不成立ならば２ブロック誤りであるが、方程式の等号成立、且つ、Ｓ０＝０、即ち３ブロック以上誤りというのは式上あり得ない。方程式の等号不成立であれば、２ブロック以上誤りであり、Ｓ８ＥＤの能力を超えているためデータの訂正（回復）は不可能であるが、Ｄ８ＥＤ能力により検出可能である。このようにデータの訂正が不可能である場合には、システムにより誤りを通知したり、或いは、誤りマーク処理等の適切な処置を行う必要がある。又、ここではα２５５＝１であることも考慮する必要がある。
【００４７】
上記の如く、シンドロームＳ０，Ｓ１，Ｓ２はＳ０＝ΣＳ０ｉαｉ、Ｓ１＝ΣＳ１ｉαｉ、Ｓ２＝ΣＳ２ｉαｉなる７次以下のαの項の和で表されているので、このままでは方程式Ｓ１２＝Ｓ０Ｓ２を評価するのは容易ではない。そこで、この評価と後述する誤り訂正処理の両方において、図１３に示す対数変換をデコード・エンコード回路４１により行う。図１３は、対数変換の一例を説明する図であり、対数変換表の内容を示す。Ｓｎ７，Ｓｎ６，Ｓｎ５，Ｓｎ４，Ｓｎ３，Ｓｎ２，Ｓｎ１，Ｓｎ０（ｎ＝０，１，２）を１つの１６進数２桁（２進数８桁）の数値としてこの対数変換表を辿ると、その交点がαｋのべき指数ｋを表している。ビット誤りを起こしている場合にこの対数変換表を用いるため、シンドロームＳ０もシンドロームＳ１も０にはならない。従って、対数変換表の定義域は１以上である。尚、対数変換表の内容は１６進数で示されている。この対数変換表は、αｎ（ｎ＝０，...，２５４）の夫々に対してα８＝α４＋α３＋α２＋１により次数を落とすことで得ることができる。
【００４８】
このようにして、ＥＯＲツリー３１が出力するシンドロームSyndrom0[7:0], Syndrom1[7:0], Syndrom2[7:0]に基づいて、３個のデコード・エンコード回路４１は対数変換後のシンドロームAlog_Syndrom0[7:0], Alog_Syndrom1[7:0], Alog_Syndrom2[7:0]を出力すると共に、１ブロック誤りを示すSingleBlockErrorData[7:0]を出力する。
【００４９】
加算回路４２は、図１２に示す如く接続された加算器４２１、アンド（ＡＮＤ）回路４２２、オア（ＯＲ）回路４２３及びインクリメント回路４２４を有する。加算器４２１のキャリー（Carry）ビットはオア回路４２３に入力される。インクリメント回路４２４のキャルービットは無視する。加算回路４２は、ブロック誤りの判定及びブロック誤りの位置を計算するために、ｍｏｄ２５５演算を含む剰余演算を行う。
【００５０】
図１２において、上側の加算回路４２は、一番上側のデコード・エンコード回路４１の出力するシンドロームAlog_Syndrom0[7:0]をインバータ回路４４を介して入力されると共に、上から２番目のデコード・エンコード回路４１の出力するシンドロームAlog_Syndrom1[7:0]を入力され、１ブロック誤りの位置（即ち、訂正するべきバイト位置）ｐを示すSingleBlockErrorPos[7:0]を出力する。
【００５１】
又、図１２において、下側の加算回路４２は、一番上側のデコード・エンコード回路４１の出力するシンドロームAlog_Syndrom0[7:0]を入力されると共に、一番下側のデコード・エンコード回路４１の出力するシンドロームAlog_Syndrom2[7:0]を入力される。対数変換後のシンドロームＳ０とシンドロームＳ２の積は、べき指数部の加算で実現できるので、下側の加算回路４２はこのべき数部の加算結果Alog_Syn2_PL_Syn0_mod[7:0]を出力する。このようにして、α２５５＝１（＝α０）を考慮したべき指数部の加算を実現できる。
【００５２】
誤り判定回路４３は、図１２に示す如く接続された加算器４３１、一致検出回路４３２、インバータ回路４３３、アンド回路４３４及びノア（ＮＯＲ）回路４３５を有する。加算器４３１には、ＥＯＲツリー３１が出力するシンドロームSyndrom0[7:0], Syndrom1[7:0], Syndrom2[7:0]が入力される。加算器４３１からは、誤りが無いことを示すビットNo_Errorを出力する。一致検出回路４３２には、図１２において上から２番目のデコード・エンコード回路４１は出力するシンドロームAlog_Syndrom1[7:0]のビットの並び替えを行う並び替え回路４５の出力Alog_Syndrom1[6:0,7]と、下側の加算回路４２の出力Alog_Syn2_PL_Syn0_mod[7:0]が入力される。アンド回路４３４からは、１ブロック誤りを示すビットSingleBlockErrorが出力される。ノア回路４３５からは、２ブロック誤りを示すビットDoubleBlockErrorが出力される。このように、Ｓ１２は、α２５５＝１（＝α０）を考慮すると指数部のビットの並び替えのみで実現でき、シンドロームＳ０，Ｓ２の一致検出を行うことで場合分けができる。
【００５３】
図１４は、誤り訂正回路部３３を示す回路図である。誤り訂正回路部３３は、図１４に示す如く接続されたデコード回路５１、３６個のアンド回路５２及び３６個のＥＯＲ回路５３を有する。デコード回路５１には、図１２において上側の誤り判定回路４２が出力する、１ブロック誤りの位置ｐを示すSingleBlockErrorPos[7:0]が入力される。デコード回路５１の３６ビットの出力は、対応するアンド回路５２に入力される。又、デコード回路５１は、１ブロック以上の誤りの位置を示す値BlockPosErrorを出力する。各アンド回路５２には、デコード・エンコード回路４１が出力する、１ブロック誤りを示すSingleBlockErrorData[7:0]も入力される。上側の３３個のＥＯＲ回路５３は、対応するアンド回路５２の出力とデータReadData[253:255]〜ReadData[7:0]を入力され、訂正データCorrectData[263:255]〜CorrectData[7:0]を出力する。又、下側の３個のＥＯＲ回路５３は、対応するアンド回路５２の出力とチェックビットReadCheckBit[23:16], ReadCheckBit[15:8], ReadCheckBit[7:0]を入力され、訂正チェックビットCorrectCB[23:16], CorrectCB[15:8], CorrectCB[7:0]を出力する。つまり、誤り訂正回路部３３からは、訂正データCorrectData[263:0]、訂正チェックビットCorrectCB[23:0]及び１ブロック以上の誤りの位置を示す値BlockPosErrorが出力される。
【００５４】
誤り訂正回路部３３が出力する訂正データCorrectData[263:0]が誤り訂正処理を施された（即ち、訂正後の）正しいデータとなるので、２ブロック誤りでなければこの訂正データを使用すれば良い。又、誤り訂正回路部３３が出力する訂正チェックビットCorrectCB[23:0]をその後の処理で使用しない場合には、誤り訂正回路部３３中の訂正チェックビットCorrectCB[23:0]を生成する回路部分は省略しても良い。又、１ブロック誤りの位置ｐを示すSingleBlockErrorData[7:0] （誤り訂正回路部３３は値BlockPosErrorを出力する）の値が０〜３５の範囲外、即ち、３６以上になった場合には、多ブロック誤りと判断し、２ブロック誤りと同様の扱いにすれば良い。
【００５５】
方程式Ｓ１２＝Ｓ０Ｓ２が成立している場合、シンドロームＳ０が訂正データを意味しており、又、訂正するべきバイト位置ｐは、ガロア拡大体ＧＦ（２８）上でＳ０αｐ＝Ｓ１より求められる。従って、読み出しデータのブロック位置ｐにある８ビットデータに対し、シンドロームＳ０との排他的論理和を演算すれば誤りが訂正され、Ｓ８ＥＣの能力が確保される。
【００５６】
尚、上記の如くα２５５＝１（＝α０）が成り立つので、べき指数の加算時にガロア拡大体ＧＦ（２８）上で方程式Ｓ１２＝Ｓ０Ｓ２の等号成立検出や誤り位置検出の回路を構成する際は、べき指数の加算結果が０だけでなく２５５になる場合もあることを考慮する必要があることは。言うまでもない。
【００５７】
次に、上記実施例の符号化回路及び復号化回路の回路規模とレイテンシについて説明する。
【００５８】
生成行列の大きさから分かるように、符号化回路の回路規模は約１４０ビットのＥＯＲ回路が２４個である。符号化回路のレイテンシは、ＥＯＲツリーを用いるので、２ビットのＥＯＲ回路が９段分程度となる。
【００５９】
復号化回路において、シンドロームを生成する回路の規模は（シンドロームＳ０だけは疎行列のため他のシンドロームより若干小さいが）約１４０ビットのＥＯＲ回路が２４個である。シンドロームを生成する回路のレイテンシは、符号化回路と同様にＥＯＲツリーを用いるので、２ビットのＥＯＲ回路が９段分程度となる。誤り検出回路部及び誤り訂正回路部は、生成されたシンドロームから誤り訂正処理を行うために８ビットから８ビットへの対数変換のための回路を３個、誤り判定のために８ビット加算器と一致検出回路を１個、シングルブロック訂正のための回路を１個（ＡＮＤ−ＥＯＲ回路を２６４ビット分）を少なくとも必要とする。対数変換回路として機能する８ビットデコード・エンコード回路は、ＡＮＤ−ＯＲ回路で構成可能である。従って、誤り検出回路部及び誤り訂正回路部のレイテンシは、シンドロームを生成する回路よりやや時間が必要となる。
【００６０】
上記実施例の如く簡略化されたＥＣＣのチェックビットは、ＤＩＭＭ１３０中の１チップが故障してもデータ訂正を可能とする。上記の例の場合、図４に示すように３６バイトのうち３３バイトをデータ領域（３２バイトが元々のデータ、１バイトが余分のデータのために新規に確保される空き領域）となる。従来であれば、上記の例の場合、図３に示すように主記憶メモリ１３は例えば８：１の割合の１の部分（２バイト）にチェックビットを格納するが、本実施例では、図４に示すように１１：１の割合の１の部分（３バイト）にチェックビットを格納しても、従来と同等のデータの信頼性を確保することができる。
【００６１】
このように、上記実施例の場合、３２バイトデータに対して従来と同等の誤り訂正、検出能力を維持しつつ、必要となるチェックビットの数を減らして、主記憶メモリ１３に１バイト分の余分なデータ（又は、情報）を格納可能な空き領域を確保できる。この１バイト分の空き領域を用いて、ｃｃＮＵＭＡのディレクトリ情報や、メインフレームのキー情報等を格納することができる。つまり、従来と同等の誤り訂正、検出能力を維持し、且つ、主記憶メモリ１３の領域の一部を、キャッシュコヒーレンシーを保つための情報、データ保証をするための情報、メモリを保護するための情報等の格納用に使用できる。従って、システムのコストを増加させることなく、主記憶メモリ１３の領域の利用効率を向上してデータ保証を行うことが可能となる。
【００６２】
以上の実施例を含む実施形態に関し、更に以下の付記を開示する。
（付記１）
Ｐ（ｘ）をガロア体ＧＦ（２）上のｍ次（ｍは８以上の自然数）の原始多項式とし、ガロア拡大体ＧＦ（２ｍ）の原始元をαとし、Ｐ（ｘ）＝０の根をαｉ（ｉ＝０，...，ｍ−１）とすると、（ｋ，ｋ−３）リード・ソロモン符号（ｋは２ｍ以下の自然数）を用いたＳｍＥＣ−ＤｍＥＤにおいて、ｍビットブロック単位のデータに対し、誤りから保護するべき対象である元符号の多項式表現Ｉ（ｘ）に対し、Ｃ（ｘ）＝ｘ２Ｉ（ｘ）ｍｏｄＰ（ｘ）なる多項式剰余演算により訂正コードのチェックビットの生成を前記ガロア拡大体ＧＦ（２ｍ）上の加算で行う第１の排他的論理和ツリーと、
前記元符号に前記チェックビットを添加した符号Ｃ（ｘ）に対して、エラーが混入した可能性のある誤りを検出するべき対象である符号の多項式表現をＹ（ｘ）とし、シンドロームＳ０，Ｓ１，Ｓ２をＳｎ＝Ｙ（αｎ）（ｎ＝０，１，２）から生成する第２の排他的論理和ツリーと、
Ｓ１２＝Ｓ０Ｓ２が成立しているか否かに基づいて、１ブロックの誤り、２ブロックの誤り、或いは、誤りがないことを検出すると共に、ブロック誤りの位置ｐを前記ガロア拡大体ＧＦ（２ｍ）上でＳ０αｐ＝Ｓ１から検出する誤り検出回路部を備えた、誤り判定回路。
（付記２）
前記誤り検出回路部は、積Ｓ０Ｓ２を指数部の加算で求める対数変換回路を含む、付記１記載の誤り判定回路。
（付記３）
前記データと、前記誤り検出回路部から出力される前記２ブロック誤りの位置及び前記１ブロック誤りの位置に基づいて、１ブロック以上の誤りの位置を検出すると共に、Ｓ１２＝Ｓ０Ｓ２が成立している場合にはシンドロームＳ０から訂正データを出力する誤り訂正回路部を更に備えた、付記１又は２記載の誤り判定回路。
（付記４）
前記誤り訂正回路部は、１ブロック誤りまでが訂正された訂正データを出力する、付記３記載の誤り判定回路。
（付記５）
ｍ＝８である、付記１乃至４のいずれか１項記載の誤り判定回路。
（付記６）
前記第２の排他的論理和ツリーに入力される前記データ及び前記チェックビットは、９バイトのメモリモジュール２個に対して２インターリーブにより２回の読み出しを１つの単位として行うことで得られた３２バイトのデータ、３バイトのチェックビット及び１バイトの余りデータに含まれる、付記５記載の誤り判定回路。
（付記７）
ｋ＝３６である、付記１乃至６のいずれか１項記載の誤り判定回路。
（付記８）
プロセッサ、主記憶メモリ及びキャッシュメモリを有するノードが複数接続された共有メモリシステムであって、
各ノードは、
Ｐ（ｘ）をガロア体ＧＦ（２）上のｍ次（ｍは８以上の自然数）の原始多項式とし、ガロア拡大体ＧＦ（２ｍ）の原始元をαとし、Ｐ（ｘ）＝０の根をαｉ（ｉ＝０，...，ｍ−１）とすると、（ｋ，ｋ−３）リード・ソロモン符号（ｋは２ｍ以下の自然数）を用いたＳｍＥＣ−ＤｍＥＤにおいて、ｍビットブロック単位のデータに対し、誤りから保護するべき対象である元符号の多項式表現Ｉ（ｘ）に対し、Ｃ（ｘ）＝ｘ２Ｉ（ｘ）ｍｏｄＰ（ｘ）なる多項式剰余演算により訂正コードのチェックビットの生成を前記ガロア拡大体ＧＦ（２ｍ）上の加算で行う第１の排他的論理和ツリーと、
前記元符号に前記チェックビットを添加した符号Ｃ（ｘ）に対して、エラーが混入した可能性のある誤りを検出するべき対象である符号の多項式表現をＹ（ｘ）とし、シンドロームＳ０，Ｓ１，Ｓ２をＳｎ＝Ｙ（αｎ）（ｎ＝０，１，２）から生成する第２の排他的論理和ツリーと、
Ｓ１２＝Ｓ０Ｓ２が成立しているか否かに基づいて、１ブロックの誤り、２ブロックの誤り、或いは、誤りがないことを検出すると共に、ブロック誤りの位置ｐを前記ガロア拡大体ＧＦ（２ｍ）上でＳ０αｐ＝Ｓ１から検出する誤り検出回路部を備えた、共有メモリシステム。
（付記９）
前記誤り検出回路部は、積Ｓ０Ｓ２を指数部の加算で求める対数変換回路を含む、付記８記載の共有メモリシステム。
（付記１０）
各ノードは、
前記データと、前記誤り検出回路部から出力される前記２ブロック誤りの位置及び前記１ブロック誤りの位置に基づいて、１ブロック以上の誤りの位置を検出すると共に、Ｓ１２＝Ｓ０Ｓ２が成立している場合にはシンドロームＳ０から訂正データを出力する誤り訂正回路部を更に備えた、付記８又は９記載の共有メモリシステム。
（付記１１）
前記誤り訂正回路部は、１ブロック誤りまでが訂正された訂正データを出力する、付記１０記載の共有メモリシステム。
（付記１２）
ｍ＝８である、付記８乃至１１のいずれか１項記載の共有メモリシステム。
（付記１３）
前記第２の排他的論理和ツリーに入力される前記データ及び前記チェックビットは、前記主記憶メモリ内の複数の９バイトのメモリモジュールのうち２個のメモリモジュールに対して２インターリーブにより２回の読み出しを１つの単位として行うことで得られた３２バイトのデータ、３バイトのチェックビット及び１バイトの余りデータに含まれる、付記１２記載の共有メモリシステム。
（付記１４）
前記１バイトの余りデータは、各ノードの前記キャッシュメモリに格納されるデータのコヒーレンシーを保つための情報、データ保証をするための情報、メモリを保護するための情報のいずれかである、付記１３記載の共有メモリシステム。
（付記１５）
前記１バイトの余りデータは、ｃｃＮＵＭＡ方式で使用されるディレクトリ情報である、付記１３又は１４記載の共有メモリシステム。
（付記１６）
ｋ＝３６である、付記８乃至１５のいずれか１項記載の共有メモリシステム。
【００６３】
以上、本発明を実施例により説明したが、本発明は上記実施例に限定されるものではなく、本発明の範囲内で種々の変形及び改良が可能であることは言うまでもない。
【図面の簡単な説明】
【００６４】
【図１】本発明の一実施例における共有メモリシステムを示すブロック図である。
【図２】ＤＩＭＭの構成を示す図である。
【図３】２個のＤＩＭＭを用いて１７バイトのデータ幅の誤り検出及び訂正処理を実現する場合を示す図である。
【図４】２個のＤＩＭＭを用いて２インターリーブにより２回の読み出しを１つの単位とする誤り検出及び訂正処理を行う場合を示す図である。
【図５】生成行列の一例を示す図である。
【図６】生成行列の一例を示す図である。
【図７】符号化回路を示すブロック図である。
【図８】符号化回路のＥＯＲツリーの構成を示す回路図である。
【図９】復号化回路を示すブロック図である。
【図１０】シンドロームを求める行列の一例を示す図である。
【図１１】シンドロームを求める行列の一例を示す図である。
【図１２】誤り検出回路部を示す回路図である。
【図１３】対数変換の一例を説明する図である。
【図１４】誤り訂正回路部を示す回路図である。
【符号の説明】
【００６５】
１      ノード
２      接続手段
１１      プロセッサ
１２      ＤＣ
１３      主記憶メモリ
１４      キャッシュメモリ
２１，３１      ＥＯＲツリー
３２      誤り検出回路部
３３      誤り訂正回路部
【図１】
2010122828.tif 000007
【図２】
2010122828.tif 000008
【図３】
2010122828.tif 000009
【図４】
2010122828.tif 000010
【図５】
2010122828.tif 000011
【図６】
2010122828.tif 000012
【図７】
2010122828.tif 000013
【図８】
2010122828.tif 000014
【図９】
2010122828.tif 000015
【図１０】
2010122828.tif 000016
【図１１】
2010122828.tif 000017
【図１２】
2010122828.tif 000018
【図１３】
2010122828.tif 000019
【図１４】
2010122828.tif 000020
【手続補正書】
【提出日】平成21年12月25日(2009.12.25)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】００２３
【補正方法】変更
【補正の内容】
【００２３】
ＥＣＣを用いたデータ訂正可能なＤＩＭＭ１３０を用いた主記憶メモリ１３は、データ幅が例えば８バイト＋１バイト（＝７２ビット）である。この場合、ＤＩＭＭ１３０が１チップ故障に耐えられることがデータの信頼性を保証する上で必要条件であると、Ｓ４ＥＣ−Ｄ４ＥＤを行えば十分である。例えば、１６バイトのデータに対して１６ビットのチェックビットを設けることで、Ｓ４ＥＣ−Ｄ４ＥＤを実現できることが知られている（例えば、特許文献４）。この場合のデータとチェックビットの比率は８：１であるため、図３に示すように、ＤＩＭＭ１３０には余分のデータを格納するだけのビットの余りはない。図３は、２個のＤＩＭＭ１３０を用いて１６バイトのデータ幅の誤り検出及び訂正処理を実現する場合を示す図である。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】００６４
【補正方法】変更
【補正の内容】
【００６４】
【図１】本発明の一実施例における共有メモリシステムを示すブロック図である。
【図２】ＤＩＭＭの構成を示す図である。
【図３】２個のＤＩＭＭを用いて１６バイトのデータ幅の誤り検出及び訂正処理を実現する場合を示す図である。
【図４】２個のＤＩＭＭを用いて２インターリーブにより２回の読み出しを１つの単位とする誤り検出及び訂正処理を行う場合を示す図である。
【図５】生成行列の一例を示す図である。
【図６】生成行列の一例を示す図である。
【図７】符号化回路を示すブロック図である。
【図８】符号化回路のＥＯＲツリーの構成を示す回路図である。
【図９】復号化回路を示すブロック図である。
【図１０】シンドロームを求める行列の一例を示す図である。
【図１１】シンドロームを求める行列の一例を示す図である。
【図１２】誤り検出回路部を示す回路図である。
【図１３】対数変換の一例を説明する図である。
【図１４】誤り訂正回路部を示す回路図である。
【手続補正３】
【補正対象書類名】図面
【補正対象項目名】図３
【補正方法】変更
【補正の内容】
【図３】
2010122828.tif 000021