(57)【要約】【課題】従来、ＡＳＩＣに接続されるＤＩＭＭの個数が多くなればなるほどＰＩＮ数が増えるので、ＡＳＩＣのＬＳＩのサイズが大きくなりＬＳＩのコストが高くなっていた。【解決手段】第１のＡＳＩＣ群の各ＡＳＩＣ５、６は第１のＡＳＩＣ群内でＥＣＣの塊を作成しライトデータに対するＥＣＣコードの発生及びＥＣＣコードのライトデータへの付加機能とＥＣＣコード付きライトデータを第２のＡＳＩＣ群の各ＡＳＩＣ７、８へ振り分ける機能とＤＩＭＭからのリードデータに対するＥＣＣチェック及びＥＣＣ訂正機能とを有し、第２のＡＳＩＣ群の各ＡＳＩＣ７、８はＤＩＭＭの制御を行う機能と、第１のＡＳＩＣ群で発生させたＥＣＣの塊がＤＩＭＭの中の同じ素子にアクセスしないようにライトデータの並替を行う機能と、ＤＩＭＭからのリードデータに対しライト時に並替たデータを元に戻す機能を有し、各機能で１バイト誤り訂正又は２バイト誤り検出可能にした。【選択図】  図１
2006004133.tif 000002
【特許請求の範囲】
【請求項１】
ＣＰＵとＡＳＩＣと２個のＤＩＭＭを有し、前記ＣＰＵとＤＩＭＭとの間でＡＳＩＣを介してライト／リードデータの転送を行う情報処理装置におけるエラー訂正、検出装置であって、
前記ＡＳＩＣは、前記ＣＰＵとのインタフェースを持ち、かつ、同じ機能を持つ２又は４個のＡＳＩＣに分割した第１のＡＳＩＣ群と、前記第１のＡＳＩＣ群及び前記２個のＤＩＭＭとのインタフェースを持ち、かつ、同じ機能を有する２個のＡＳＩＣからなる第２のＡＳＩＣ群とで構成し、
前記第１のＡＳＩＣ群の各ＡＳＩＣは、該第１のＡＳＩＣ群内でＥＣＣの塊を作成し、このＥＣＣの塊により、ライトデータに対するＥＣＣコードの発生及び該発生させたＥＣＣコードのライトデータへの付加機能と、ＥＣＣコード付きライトデータを第２のＡＳＩＣ群の各ＡＳＩＣへ振り分ける機能と、ＤＩＭＭからのリードデータに対するＥＣＣチェック及びＥＣＣ訂正機能とを有し、
前記第２のＡＳＩＣ群の各ＡＳＩＣは、ＤＩＭＭの制御を行う機能と、第１のＡＳＩＣ群で発生させたＥＣＣの塊がＤＩＭＭの中の同じ素子にアクセスしないようにライトデータの並び替えを行う機能と、ＤＩＭＭからのリードデータに対し、ライト時に並び替えたデータを元に戻す機能とを有し、
前記各機能により１バイト誤り訂正又は２バイト誤り検出を可能にしたことを特徴とする情報処理装置におけるエラー訂正、検出装置。
【請求項２】
ＣＰＵとＡＳＩＣと２個のＤＩＭＭを有し、前記ＣＰＵとＤＩＭＭとの間でＡＳＩＣを介してライト／リードデータの転送を行う情報処理装置におけるエラー訂正、検出装置であって、
前記ＣＰＵに対してそれぞれインタフェースを持ち、かつ、同じ機能を持つ２又は４個に分割したＡＳＩＣからなる第１のＡＳＩＣ群と、前記第１のＡＳＩＣ群及び前記２個のＤＩＭＭとのインタフェースを持ち、かつ、同じ機能を有する２個のＡＳＩＣからなる第２のＡＳＩＣ群とを備え、
前記第１のＡＳＩＣ群の各ＡＳＩＣは、それぞれ、ＣＰＵからＤＩＭＭへのライトデータに対し、ＥＣＣコードを発生してライトデータに付与するＥＣＣコード発生回路と、前記ＥＣＣコード付きライトデータを第２のＡＳＩＣ群の各ＡＳＩＣへ振り分ける転送データ振り分け回路と、ＤＩＭＭからＣＰＵへのリードデータに対し、ＥＣＣチェックを行うＥＣＣチェック回路と、前記ＥＣＣチェック回路のチェック結果が１バイトエラーであればエラー訂正を行い、２バイトエラーであればエラー検出のみを行うＥＣＣ訂正回路を備え、
前記第２のＡＳＩＣ群の各ＡＳＩＣは、それぞれ、ＤＩＭＭの制御を行うメモリコントローラと、第１のＡＳＩＣ群で発生させたＥＣＣの塊がＤＩＭＭの中の同じ素子にアクセスしないようにデータの並び替えを行う書き込みデータ並び替え回路と、ＤＩＭＭからのリードデータに対し、ライト時に並び替えたデータを元に戻す読出しデータ並べ替え回路を備えていることを特徴とする情報処理装置におけるエラー訂正、検出装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、汎用のメモリモジュール（ＤＩＭＭ：Dual Inline Memory Module ）を使用するサーバ等の各種情報処理装置に利用されるものであり、該情報処理装置におけるハード故障及びソフトエラー両面でのエラー訂正、検出が可能な情報処理装置におけるエラー訂正、検出装置に関する。
【背景技術】
【０００２】
(1) ：従来例１
従来例１は、単一バイト誤り検出符号を使用した例である。従来、単一バイト誤り検出符号を使用した例として、１６バイト＋１６ビットのＥＣＣビット、合計１４４ビットデータでＥＣＣの塊を構成する例が知られていた。このＥＣＣは４ビットブロックの訂正と４ビットブロック２箇所故障検出が可能であるので、２枚のＤＩＭＭにアクセスして訂正・検出が可能である。
【０００３】
(2) ：従来例２
以下、特許文献１を従来例２として説明する。なお、特許文献２も参照しながら従来例２（特許文献１）を説明する。従来例２（特許文献１）は、ハードウェア量の少ない高速で動作する効率的な倍長単一誤り訂正２重誤り検出リード・ソロモン符号の復号器を提供するものである。
【０００４】
１バイトをｂビットとしたとき、（２b ＋２）×２バイトの長さの検査行列を用い、特に、情報ビット長１２８、チェックビット長１６の符号に対して有効である。なお、単一誤りか２重誤りかを判定する手段を有している。復号器は、シンドローム生成手段、単一誤り訂正手段、２重誤り判定手段、誤り検出手段等で構成される。以下、関連技術について詳細に説明する。
【０００５】
(a) ：大容量の記憶装置においては、動作の信頼度を向上させるために、誤り訂正／検出符号が必要である。このため、１ビット誤り訂正／２ビット誤り検出符号が用いられてきた。更に、半導体技術の進歩により、数ビットの情報を１バイトとして、一個のメモリ素子に格納されるようにもなった。この場合には、一個のメモリ素子の障害のため数ビットまとめてエラーが生じる。
【０００６】
この種の素子を用いた記憶装置に対しては、バイトの誤りを検出または訂正可能な符号が効果的である。なお、コンピュータでは、情報ビットとして３２，６４，１２８が用いられる。本願発明は、このようなバイト単位に誤り処理をする単一バイト誤り訂正２重バイト誤り検出符号に関するものであり、特に、情報ビット１２８の場合に有効である。この種の従来例について述べる。なお、本明細書において、
｜      ｜                                                                      ｜      ｜
｜      ｜
は行列の符号である。
【０００７】
まず、単一バイト誤り２重バイト誤り検出を行うリード・ソロモン符号の基本形を示す。ＧＦ（２b ）の原始元をαとすると検査マトリクスは次式となる。
【０００８】
【数１】
2006004133.tif 000003
ただし、ｑ＝２b 。この符号の符号長ｎ＝ｂ×（２b ＋２）であり、ｂ＝４のとき、ｎ＝７２、情報ビットｋ＝６０となり、情報ビット６４、１２８の符号が構成できない。
【０００９】
次に、金田、藤原（" Single Byte Error Correcting-Double ByteError Detecting Codes for Memory Systems" ,IEEE Trans.onComputer,C-31,NO.7,july 1982) の符号は次式の検査マトリクスを用いる。まず、ＧＦ（２4 ）を構成するｇ（ｘ）＝Ｘ4 ＋ｘ＋１の随伴行列をＴとする。なお、Ｔとαは本質的に同一である。
【００１０】
【数２】
2006004133.tif 000004
として、さらに、Ｈ0 の行を巡回させて、４倍の長さの検査マトリクスＨを作る。ｂ＝４であり、符号長ｎ＝９×４×４＝１４４、検査ビット長＝１６、情報ビット＝１２８である。モジュラ構成のため復号が複雑になる。
【００１１】
なお、金田、藤原”主記憶用誤り検出・訂正符号”（日本電信電話公社、研究実用化報告第３０巻第４号，１９８１）に、各バイト位置において、バイト誤り検出手段を用いる一般的な方法が述べられている。
【００１２】
次に、特許文献２の検査マトリクスは情報６４ビットについて有効であり、それについて述べられている。ｑ＝２b としたとき、検査マトリクスは次式になる。
【００１３】
【数３】
2006004133.tif 000005
これは、左半分のｑ−１列の基本行列を行巡回して、右半分におき、４列の単位検査マトリクスを加えている。ｂ＝４のとき、ｎ＝１５×２×４＋４×４＝１３６、情報ビットは１２０となる。情報ビットを１２８にするためには、３プロック構造となり復号は複雑になる。
【００１４】
情報ビット１２８に対して有効な単一バイト誤り訂正／２重バイト誤り検出符号を構成する従来（前記）の符号はいずれも復号法が複雑になる。したがって、情報ビット１２８に対して有効な単一バイト誤り訂正／２重バイト誤り検出符号の検査マトリクスを見いだし、復号動作が高速で、ハードウェア量の少ない復号器を構成する必要がある。
【００１５】
本発明はかかる問題点を解決するためになされたものであって、情報ビット１２８に対して有効であり、一般的に、ｂビットを１バイトとする単一バイト誤り訂正／２重バイト誤り検出符号の検査マトリクスを見いだし、復号ステップあるいは、ハードウェア量の少ない倍長単一誤り訂正２重誤り検出リード・ソロモン符号の復号器を提供することを目的とする。
【００１６】
請求項１のエラー訂正処理装置は、ｂビットを一バイトとし、単一バイト誤り訂正／２重バイト誤り検出符号を採用し、ｑ＝２b とし、
【００１７】
【数４】
2006004133.tif 000006
の検査行列を用いると共に、下記の(1) 乃至(6) の手段を含むことを特徴とする。
【００１８】
(1) 上記検査行列を用いて、受信系列から、シンドロームＣ１、Ｃ２、Ｃ３、Ｃ４を発生させるためのシンドローム生成手段。ただし、Ｃは検査行列第１行目、Ｃ２は検査行列第２行目、Ｃ３は検査行列第３行目、Ｃ４は検査行列第４行目に対応する。
【００１９】
(2) シントロームＣ１、Ｃ２、Ｃ３、Ｃ４が全て零のとき誤りなしと判定する手段。
【００２０】
(3) 誤りのあるバイト位置を求める手段。
【００２１】
(4) 誤りの大きさを求める手段。
【００２２】
(5) 単一誤りのとき、誤りのあるバイト位置の情報を、誤りの大きさを用いて訂正する手段。
【００２３】
(6) ２重誤り検出する手段。
【００２４】
請求項２のエラー訂正処理装置は、誤りのあるバイト位置を求める手段として、各バイト位置において、誤り検査手段を設けたことを特徴とする。この方法によると、ハードウェア量は増加するが高速復号する。
【００２５】
請求項３のエラー訂正処理装置は、２重誤りを検出する手段の一部として、検査行列の左からｑ−１列のブロックおよび続くｑ−１列のブロックの、それぞれのブロック内の２重誤りを検出するために、Ｓ0 ＝Ｃ１＋Ｃ２，Ｓ1 ＝Ｃ３、Ｓ2 ＝Ｃ４とし、Ｚ＝Ｓ12＋Ｓ0 ・Ｓ2 ＝０が真のときは単位一誤りとし、偽のときは２重誤りと判定する２重誤り判定手段を含むことを特徴とする。
【００２６】
本発明に係る倍長単一誤り訂正２重誤り検出リード・ソロモン符号の復号器は、効率的な検査マトリクスを用いて、ハードウェア量の少ない復号器を構成しており、受信語を受け取るとシンドロームを発生させ、高速に、単一バイト誤りを訂正し、２重バイト誤りを訂正する。
【００２７】
(3) ：従来例３
図６は従来のチップ構成図、図７は従来のＤＩＭＭとのインタフェースを持つＡＳＩＣを分割した時のチップ構成図である。以下、図６、７を参照しながら従来例３を説明する。
【００２８】
(a) ：チップ構成の説明
図６の(a) 図に示した例は、基本的なチップ構成であり、ＣＰＵに１個のＡＳＩＣ０を接続し、前記１個のＡＳＩＣ０に１個のＡＳＩＣ２を接続し、前記１個のＡＳＩＣ２に２個（又は２枚）のＤＩＭＭ（ＤＩＭＭ：Dual Inline Memory Module ）を接続した構成である。
【００２９】
また、図６の(b) 図に示した例は、前記１個のＡＳＩＣ０を２分割した例であり、ＣＰＵに２個のＡＳＩＣ１（前記ＡＳＩＣ０を分割したもの）を接続し、前記２個のＡＳＩＣ１に１個のＡＳＩＣ２を接続し、前記１個のＡＳＩＣ２に２個のＤＩＭＭを接続した構成である。
【００３０】
(b) ：ＤＩＭＭとのインタフェースを持つＡＳＩＣを分割した時のチップ構成の説明
図７の(a) 図に示した例は、図６の(a) 図に示した１個のＡＳＩＣ２を２分割した例であり、ＣＰＵに１個のＡＳＩＣ０を接続し、前記１個のＡＳＩＣ０に２個のＡＳＩＣ４（前記１個のＡＳＩＣ２を２分割したもの）を接続し、前記２個のＡＳＩＣ４にそれぞれ１個のＤＩＭＭを接続した構成である。
【００３１】
また、図７の(b) 図に示した例は、図７の(a) 図に示した１つのＡＳＩＣ０を２分割した例であり、ＣＰＵに２個のＡＳＩＣ１（１個のＡＳＩＣ０を２分割したもの）を接続し、前記２枚のＡＳＩＣ４にそれぞれ１個のＡＳＩＣ４を接続し、前記２個のＡＳＩＣ４にそれぞれ１個のＤＩＭＭを接続した構成である。
【００３２】
(4) ：従来例４
以下、特許文献３を従来例４として説明する。従来例４は自己回復するメモリ構成に関するものであり、複雑なデータ修復方法を必要とせず、複数チャネル上の複数エラーに対するエラー検出および訂正を行うと共に、障害の発生したメモリのホットスワッピングもサポートする、メモリシステム構成を提供するものである。
【００３３】
本メモリ構成には、メモリコンローラに電気的に結合されているＣＰＵバスと、スイッチング手段に接続されたメモリコンローラと、複数のメモリモジュールに電気的に接続されたスイッチとを含む。
【００３４】
複数のメモリモジュールは、少なくとも一つのデータ用のメモリモジュールと、少なくとも一つのデータ訂正用のメモリモジュールと、少なくともホットスペアモジュールとを含む。データ用メモリモジュールと、エラー訂正用メモリモジュールと、ホットスペアメモリモジュールとは並列に接続されている。
【００３５】
また、従来例４には次のような内容も記載されている。すなわち、利用可能なサーバメモリシステムのサイズは、時と共に増大し続けており、現サーバメモリシステムは、６４ギガバイト以上であることも多い。メモリシステムのサイズが増大するに従い、メモリビットの障害、すなわちメモリシステムに障害が発生する可能性も増加している。
【００３６】
メモリシステム障害は、一時的エラーまたは永続的エラーの両方で起こりえる。一時的エラーは、一般に、アルファ粒子によって起こる。永続的エラーには、一般に、メモリセルウォール障害、行または列デコーダ障害、状態機械障害、またはデュアルインラインメモリモジュール（以下、「ＤＩＭＭ」とする）の印刷回路基板とシステム印刷回路基板間の機械的インタフェースの故障といった他の破局故障などがある。
【００３７】
(4) ：従来例５
以下、特許文献４を従来例５として説明する。従来例５は、冗長メモリモジュールおよびメモリコントローラに関するものであり、システム稼働中に異常なＤＩＭＭを動的に交換可能にするものである。
【００３８】
そして、この発明では、ＥＣＣ／ＣｈｉｐＫｉｌｌ回路４−０〜４−４は、ＥＣＣの生成／チェック／再構成およびＣｈｉｐＫｉｌｌを行うパリティ生成／チェック／再構成回路５は、データライト時にはパリティデータの生成、データリード時にはパリティデータのチェック、異常なＤＩＭＭが存在する場合には正常なＤＩＭＭからデータの最構成を行う。
【００３９】
これにより、４枚のＤＩＭＭ１−０〜１０３に対して１枚のパリティＤＩＭＭ１−４を用意することで、ＤＩＭＭの障害時に、異常なＤＩＭＭをホットプラグすることを可能とし、ＯＳのメモリ縮退機能によらずにＤＩＭＭの動的な交換を可能にする。
【特許文献１】特開平６−２９８６５号公報
【特許文献２】特開昭５２−１２３１４７号公報
【特許文献３】特開２００１−１６７００１号公報
【特許文献４】特開２００３−３０３１３９号公報
【発明の開示】
【発明が解決しようとする課題】
【００４０】
(1) ：従来例１〜３の課題
(a) ：従来例の場合、ＡＳＩＣ２に接続されるＤＩＭＭの個数が多くなればなるほどＰＩＮ数が増えるので、ＡＳＩＣ２のＬＳＩのサイズが大きくなりＬＳＩのコストが高くなる。
【００４１】
(b) ：図７に示したように、ＡＳＩＣを２個のＡＳＩＣ４に分割することにより、ＡＳＩＣ４の１個当たりピン数を減らすことができ、コストを低くすることができる。すなわち、通常の場合、図６に示したＡＳＩＣ２と、これを２分割した２個のＡＳＩＣ４のコストはＡＳＩＣ４を２個の方が安い。
【００４２】
(c) ：図７の(a) 図のものは、ＡＳＩＣ０で単一バイト（１バイト）誤り、二重バイト（２バイト）誤り検出符号を使ってチェックビットの生成や、シンドロームの生成を行い、エラー訂正・検出を行うことは可能である。しかし、図７の(b) 図のように、ＡＳＩＣ０も２個のＡＳＩＣ１に分割した例では、ＣＰＵで単一バイト誤り、二重バイト誤り検出符号を使えばエラー訂正や検出が可能であるが、大型機など複数のＣＰＵが実装されたシステムでは、ＣＰＵ間でのデータの遣り取りを行うことが非常に多いので、１６バイトの単一バイト（１バイト）誤り、二重バイト（２バイト）誤り検出符号ではビット幅が大きいため有効ではない。
【００４３】
(2) ：従来例４、５の課題
従来例４、５は前記のような内容が記載されているが、本発明の特許請求の範囲に記載された具体的な構成は記載されておらず、参考程度の内容である。
【００４４】
本発明は前記従来例の課題を解決し、複数個のＡＳＩＣでＥＣＣの塊を作成し、そのＥＣＣの塊が同じＤＩＭＭ（汎用のメモリモジュール、例えば、ＤＲＡＭ）の素子にアサイン（assign）されないようにデータを割り振ることにより、単一バイト（１バイト）誤り、二重バイト（２バイト）誤り検出を可能にして、１つのＬＳＩに対するピン数を削減可能にすることを目的とする。
【課題を解決するための手段】
【００４５】
(1) ：ＣＰＵとＡＳＩＣと２個のＤＩＭＭ（デュアルインラインメモリモジュール）を有し、前記ＣＰＵとＤＩＭＭとの間でＡＳＩＣを介してライト／リードデータの転送を行う情報処理装置におけるエラー訂正、検出装置であって、前記ＡＳＩＣは、前記ＣＰＵとのインタフェースを持ち、かつ、同じ機能を持つ２又は４個（２又は４枚）のＡＳＩＣに分割した第１のＡＳＩＣ群と、前記第１のＡＳＩＣ群及び前記２個のＤＩＭＭとのインタフェースを持ち、かつ、同じ機能を有する２個のＡＳＩＣからなる第２のＡＳＩＣ群とで構成し、前記第１のＡＳＩＣ群の各ＡＳＩＣは、該第１のＡＳＩＣ群内でＥＣＣの塊を作成し、このＥＣＣの塊により、ライトデータに対するＥＣＣコードの発生及び該発生させたＥＣＣコードのライトデータへの付加機能と、ＥＣＣコード付きライトデータを第２のＡＳＩＣ群の各ＡＳＩＣへ振り分ける機能と、ＤＩＭＭからのリードデータに対するＥＣＣチェック及びＥＣＣ訂正機能とを有し、前記第２のＡＳＩＣ群の各ＡＳＩＣは、ＤＩＭＭの制御を行う機能と、第１のＡＳＩＣ群で発生させたＥＣＣの塊がＤＩＭＭの中の同じ素子にアクセスしないようにライトデータの並び替えを行う機能と、ＤＩＭＭからのリードデータに対し、ライト時に並び替えたデータを元に戻す機能とを有し、前記各機能により１バイト誤り訂正又は２バイト誤り検出を可能にしたことを特徴とする。
【００４６】
(2) ：ＣＰＵとＡＳＩＣと２個のＤＩＭＭを有し、前記ＣＰＵとＤＩＭＭとの間でＡＳＩＣを介してライト／リードデータの転送を行う情報処理装置におけるエラー訂正、検出装置であって、前記ＣＰＵに対してそれぞれインタフェースを持ち、かつ、同じ機能を持つ２又は４個に分割したＡＳＩＣからなる第１のＡＳＩＣ群と、前記第１のＡＳＩＣ群及び前記２個のＤＩＭＭとのインタフェースを持ち、かつ、同じ機能を有する２個のＡＳＩＣからなる第２のＡＳＩＣ群とを備え、前記第１のＡＳＩＣ群の各ＡＳＩＣは、それぞれ、ＣＰＵからＤＩＭＭへのライトデータに対し、ＥＣＣコードを発生してライトデータに付与するＥＣＣコード発生回路と、前記ＥＣＣコード付きライトデータを第２のＡＳＩＣ群の各ＡＳＩＣへ振り分ける転送データ振り分け回路と、ＤＩＭＭからＣＰＵへのリードデータに対し、ＥＣＣチェックを行うＥＣＣチェック回路と、前記ＥＣＣチェック回路のチェック結果が１バイトエラーであればエラー訂正を行い、２バイトエラーであればエラー検出のみを行うＥＣＣ訂正回路を備え、前記第２のＡＳＩＣ群の各ＡＳＩＣは、それぞれ、ＤＩＭＭの制御を行うメモリコントローラと、第１のＡＳＩＣ群で発生させたＥＣＣの塊がＤＩＭＭの中の同じ素子にアクセスしないようにデータの並び替えを行う書き込みデータ並び替え回路と、ＤＩＭＭからのリードデータに対し、ライト時に並び替えたデータを元に戻す読出しデータ並べ替え回路を備えていることを特徴とする。
【００４７】
（作用）
以下、図１を参照しながら、前記構成に基づく作用を説明する。
【００４８】
(a) ：前記(1) では、ＣＰＵから２個のＤＩＭＭへのデータ書き込みを行う場合、ＣＰＵから第１のＡＳＩＣ群の各ＡＳＩＣ（５、６等）へライトデータを振り分けて送信する。この時、第１のＡＳＩＣ群の各ＡＳＩＣは、該第１のＡＳＩＣ群内でＥＣＣの塊を作成し、このＥＣＣの塊により、ライトデータに対するＥＣＣコードを発生させ、そのＥＣＣコードをライトデータへ付加する。そして、ＥＣＣコード付きライトデータを第２のＡＳＩＣ群の各ＡＳＩＣ（７、８）へ振り分けて送信する。
【００４９】
また、第２のＡＳＩＣ群の各ＡＳＩＣは、ＤＩＭＭの制御を行うことで、第１のＡＳＩＣ群で発生させたＥＣＣの塊がＤＩＭＭの中の同じ素子にアクセスしないようにライトデータの並び替えを行い、ＤＩＭＭに書き込む。
【００５０】
また、第２のＡＳＩＣ群の各ＡＳＩＣは、ＤＩＭＭからのリードデータに対し、ライト時に並び替えたデータを元に戻し、第１のＡＳＩＣ群の各ＡＳＩＣに送信する。第１のＡＳＩＣ群の各ＡＳＩＣでは、受信したＤＩＭＭからのリードデータに対し、ＥＣＣチェックが行われ、１バイトエラーであればリードデータの訂正を行い、２バイトエラーであればエラー検出のみを行い、ＣＰＵへ送信する。
【００５１】
(b) ：前記(2) では、ＣＰＵから２個のＤＩＭＭへのデータ書き込みを行う場合、ＣＰＵから第１のＡＳＩＣ群の各ＡＳＩＣ（５、６等）へライトデータを振り分けて送信する。この時、第１のＡＳＩＣ群の各ＡＳＩＣでは、ＥＣＣコード発生回路１５がＣＰＵからＤＩＭＭへのライトデータに対し、ＥＣＣコードを発生してライトデータに付与する。そして、転送データ振り分け回路１６は、前記ＥＣＣコード付きライトデータを第２のＡＳＩＣ群の各ＡＳＩＣへ振り分けて送信する。
【００５２】
第２のＡＳＩＣ群の各ＡＳＩＣでは、書き込みデータ並び替え回路２７は、前記ＥＣＣコード付きライトデータを受信すると、前記ＥＣＣの塊が、同じＤＩＭＭにアサインされないようにデータの並べ替えを行い、メモリコントローラ２６の制御によりＤＩＭＭに書き込む。
【００５３】
また、ＤＩＭＭからのリードデータは、メモリコントローラ２６の制御によりＤＩＭＭから読み出し、そのリードデータは、読み出しデータ並べ替え回路２８が、ＤＩＭＭからのリードデータに対し、ライト時に並び替えたデータを元に戻す。その後、元に戻したリードデータを第１のＡＳＩＣ群の各ＡＳＩＣに送信する。
【００５４】
第１のＡＳＩＣ群の各ＡＳＩＣでは、受信したリードデータに対し、ＥＣＣチェック回路１９がＥＣＣチェックを行い、ＥＣＣ訂正回路２０により、前記ＥＣＣチェック回路１９のチェック結果が１バイトエラーであればエラー訂正を行い、２バイトエラーであればエラー検出のみを行う。その後、データをＣＰＵへ送信する。
【００５５】
(c) ：以上のようにして、複数のＡＳＩＣでＥＣＣの塊を作成し、そのＥＣＣの塊が同じＤＩＭＭ（ＤＲＡＭ）の素子にアサイン（assign）されないようにデータを割り振ることにより、単一バイト（１バイト）誤り、二重バイト（２バイト）誤り検出を可能にして、１つのＬＳＩに対するピン数を削減可能にすることができる。
【発明の効果】
【００５６】
(1) ：１個当たりのＡＳＩＣのピン数を少なくした構成においても、ＤＩＭＭのＥＣＣ訂正、検出が行なえるため、同じ信頼性でコストを下げることが期待できる。
【００５７】
(2) ：複数のＡＳＩＣでＥＣＣの塊を作成し、そのＥＣＣの塊が同じＤＩＭＭ（デュアルインラインメモリモジュール）の素子にアサイン（assign）されないようにデータを割り振ることにより、単一バイト（１バイト）誤り、二重バイト（２バイト）誤り検出を可能にして、１つのＬＳＩに対するピン数を削減可能にすることができる。
【発明を実施するための最良の形態】
【００５８】
§１：簡単なチップ構成と結線の説明
図２はチップ構成と結線の説明図である。以下、図２を参照しながら、情報処理装置におけるエラー訂正、検出装置と、その簡単なチップ構成と結線について説明する。
【００５９】
(a) ：エラー訂正、検出装置と、その簡単なチップ構成と結線の説明
以下に説明する装置は、ＣＰＵと複数のＡＳＩＣと２つのＤＩＭＭ(Dual Inline Memory Module）を有し、前記ＣＰＵとＤＩＭＭとの間でＡＳＩＣを介してライト／リードデータの転送を行う情報処理装置におけるエラー訂正、検出装置である。
【００６０】
この装置では、前記ＡＳＩＣは、前記ＣＰＵとのインタフェースを持ち、かつ、同じ機能を持つ２個のＡＳＩＣ５、６に分割した第１のＡＳＩＣ群と、前記第１のＡＳＩＣ群及び前記ＤＩＭＭとのインタフェースを持ち、かつ、同じ機能を有する２個のＡＳＩＣ７、８からなる第２のＡＳＩＣ群とで構成する。
【００６１】
そして、前記第１のＡＳＩＣ群の各ＡＳＩＣは、該第１のＡＳＩＣ群内でＥＣＣの塊を作成し、このＥＣＣの塊により、ライトデータに対するＥＣＣコードの発生及び該発生させたＥＣＣコードのライトデータへの付加機能と、ＥＣＣコード付きライトデータを第２のＡＳＩＣ群の各ＡＳＩＣへ振り分ける機能と、ＤＩＭＭからのリードデータに対するＥＣＣチェック及びＥＣＣ訂正機能とを有する。
【００６２】
また、前記第２のＡＳＩＣ群の各ＡＳＩＣは、ＤＩＭＭの制御を行う機能と、第１のＡＳＩＣ群で発生させたＥＣＣの塊がＤＩＭＭの中の同じ素子にアクセスしないようにライトデータの並び替えを行う機能と、ＤＩＭＭからのリードデータに対し、ライト時に並び替えたデータを元に戻す機能とを有する。
【００６３】
このように、ＡＳＩＣ５とＡＳＩＣ６でＥＣＣの塊を作成し、そのＥＣＣの塊が同じＤＩＭＭの素子にアサインされないようにデータを並べ替えて書き込み、読み出したリードデータは、ライト時に並び替えたデータを元に戻して転送することにより、単一バイト（１バイト）誤り、二重バイト（２バイト）誤り検出を可能にする。
【００６４】
(b) ：転送データの具体例による説明
例えば、ＣＰＵから６４バイトデータをスライスして各ＡＳＩＣ５、６に３２バイトのデータを転送する例で説明する。
【００６５】
ＡＳＩＣ５、６では、それぞれ、１６バイト単位に単一バイト誤り（１バイト誤り）、二重バイト誤り（２バイト誤り）検出符号を使って、１６バイトデータと１６ビットのチェックビットを生成し、８バイトデータと８ビットのチェックビットに分け、ＡＳＩＣ７、８へ転送する。
【００６６】
この時、エラー箇所の指摘精度が求められるシステムでは、ＡＳＩＣ５−７間、ＡＳＩＣ５−８間、ＡＳＩＣ６−７間、ＡＳＩＣ６−８間のエラー訂正・検出が行われるように、新しくＥＣＣを生成し、エラー箇所の指摘を行うこともできる。
【００６７】
また、ＡＳＩＣ７、８では、それぞれＡＳＩＣ５とＡＳＩＣ６からそれぞれ１６バイト合計３２バイトのデータが転送されるので、８バイトと８ビットのチェックビット、合計７２ビットのデータ幅で４回（バーストレングス＝４）アクセスを行う。この時、ＡＳＩＣ５、６で作成したＥＣＣの塊が同じＤＩＭＭ（ＤＲＡＭ）の同じ素子に書き込み、読み出しが行われないようにデータのアサインを行う。
【００６８】
§２：装置の構成と処理の説明
図３は処理説明図である。以下、図３を参照しながら、装置の構成と処理について説明する。なお、図３は図２に示したチップ構成での処理である。
【００６９】
(1) ：本装置の構成は次の通りである。
【００７０】
ＣＰＵと複数のＡＳＩＣと２つのＤＩＭＭを有し、ＣＰＵとＤＩＭＭとの間でＡＳＩＣを介してライト／リードデータの転送を行う情報処理装置におけるエラー訂正、検出装置であって、ＣＰＵに対してそれぞれインタフェースを持ち、かつ、同じ機能を持つ２個のＡＳＩＣ５、６で構成した第１のＡＳＩＣ群と、前記第１のＡＳＩＣ群及び前記ＤＩＭＭとそれぞれインタフェースを持ち、かつ、同じ機能を持ち２つのＡＳＩＣ７、８で構成した第２のＡＳＩＣ群とを備える。
【００７１】
そして、ＣＰＵには、ＣＰＵと２個のＤＩＭＭとの間でデータのリード、ライトやそれらのデータの各種処理を行うプログラム１１と、リクエストの送受信を行うリクエスト送受信回路１２と、複数個のＡＳＩＣ（ＡＳＩＣ５、６）へのデータの振り分けを行う転送データ振り分け回路１３を備えている。
【００７２】
また、前記第１のＡＳＩＣ群の各ＡＳＩＣ５、６は、それぞれ、ＣＰＵからＤＩＭＭへのライトデータに対し、ＥＣＣコードを発生してライトデータに付与するＥＣＣコード発生回路１５と、前記ＥＣＣコード付きライトデータを第２のＡＳＩＣ群の各ＡＳＩＣへ振り分ける転送データ振り分け回路１６と、ＤＩＭＭからＣＰＵへのリードデータに対し、ＥＣＣチェックを行うＥＣＣチェック回路１９と、前記ＥＣＣチェック回路のチェック結果が１バイトエラーであればエラー訂正を行い、２バイトエラーであればエラー検出のみを行うＥＣＣ訂正回路２０と、ＣＰＵからのデータを受信する受信回路１４と、第２のＡＳＩＣ群の各ＡＳＩＣからのデータを受信する受信回路１８と、ＣＰＵへデータを送信する送信回路２１と、第２のＡＳＩＣ群の各ＡＳＩＣ７、８へデータを送信する送信回路１７を備えている。
【００７３】
また、第２のＡＳＩＣ群の各ＡＳＩＣ７、８は、それぞれ、ＤＩＭＭの制御を行うメモリコントローラ２６と、第１のＡＳＩＣ群の各ＡＳＩＣ５、６で発生させたＥＣＣの塊がＤＩＭＭの中の同じ素子にアクセスしないようにデータの並び替えを行う書き込みデータ並び替え回路２７と、ＤＩＭＭからのリードデータに対し、ライト時に並び替えたデータを元に戻す読出しデータ並べ替え回路２８と、第１のＡＳＩＣ群の各ＡＳＩＣ５、６からのデータを受信する受信回路２５と、第１のＡＳＩＣ群の各ＡＳＩＣ５、６へデータを送信する送信回路２９を備えている。
【００７４】
(2) ：本装置での処理は次の通りである。
【００７５】
(a) ：ＣＰＵでは、ＣＰＵ内にあるプログラム１１で発生したメモリ（ＤＩＭＭ）へのライト・リード要求をリクエスト送受信回路１２にてＡＳＩＣ５、６に対して送受信する。この場合、ライトデータは転送データ振り分け回路１３にて振り分けＡＳＩＣ５、６への転送を行い、リードデータはＡＳＩＣ５、６より受信しプログラム１１へ送出する。
【００７６】
(b) ：ＡＳＩＣ５、６では、ＣＰＵからのライト・リード要求を受信回路１４にて受信し、送信回路１７よりＡＳＩＣ７、８に転送する。ライトデータも受信回路１４で受信し、ＥＣＣコード発生回路１５にてＥＣＣコードを発生させ、ライトデータに付加する。そして、転送データ振り分け回路１６にてデータの振り分けを行なってから送信回路１７よりＡＳＩＣ７、８に送信する。ＤＩＭＭからのリードデータは、ＡＳＩＣ７、８から受信回路１８にて受信し、ＥＣＣチェック回路１９でデータのエラーチェックを行う。
【００７７】
ＥＣＣ訂正回路２０では、４ビットを１つのブロックとする３６個のブロックの内、１ブロック（１バイト）が誤りであれば訂正し、２ブロック（２バイト）に誤りがあれば、それを検出したことを送信回路２１にてＣＰＵに送信する。
【００７８】
(c) ：ＡＳＩＣ７、８では、ライト・リードデータ要求を受信回路２５にて受信し、メモリコントローラ２６でＤＩＭＭの制御信号に変換してＤＩＭＭに送出する。ライトデータも受信回路２５で受信し、書き込みデータ並び替え回路２７にてＡＳＩＣ５、６で発生させたＥＣＣの塊がＤＩＭＭの中の同じ素子にアクセスしないようにデータの並び替えを行う。リードデータも、読出しデータ並び替え回路２８にてライト時に並び替えたデータを元に戻し送信回路２９でＡＳＩＣ５、６に送信する。
【００７９】
(d) ：以上のように、ＬＳＩを分割した場合においても、従来通りにＤＩＭＭの１ブロック訂正（１バイト訂正）、２ブロック検出（２バイト検出）が可能となる。また、ＡＳＩＣ５、６とＡＳＩＣ７、８の間、ＡＳＩＣ７、８とＤＩＭＭの間でシステムボード上の配線が故障した場合においても、ＥＣＣチェックにてエラーの訂正または検出が可能となる。                            
【００８０】
§３：データ例と処理の説明
(1) ：データの説明
図４はデータ例の説明図である。以下、図４を参照しながら、データ例について説明する。
【００８１】
(a) ：図４のＣＰＵには、図示のデータが格納されているものとする。この場合、図示のように、１ＳＴ（ファースト：１番目）のデータは、８Ｂ（Ｂ：バイト）のデータ「Ａ０−３」（前半の４バイト）＋「Ａ４−７」（後半の４バイト）である。２ＮＤ（セカンド：２番目）のデータは、８Ｂ（Ｂ：バイト）のデータ「Ｂ０−３」（前半の４バイト）＋「Ｂ４−７」（後半の４バイト）である。
【００８２】
３ＲＤ（サード：３番目）のデータは、８Ｂ（バイト）のデータ「Ｃ０−３」（前半の４バイト）＋「Ｃ４−７」（後半の４バイト）である。４ＴＨ（４番目）のデータは、８Ｂ（バイト）のデータ「Ｄ０−３」（前半の４バイト）＋「Ｄ４−７」（後半の４バイト）である。
【００８３】
５ＴＨ（５番目）のデータは、８Ｂ（バイト）のデータ「Ｅ０−３」（前半の４バイト）＋「Ｅ４−７」（後半の４バイト）である。６ＴＨ（６番目）のデータは、８Ｂ（バイト）のデータ「Ｆ０−３」（前半の４バイト）＋「Ｆ４−７」（後半の４バイト）である。７ＴＨ（７番目）のデータは、８Ｂ（バイト）のデータ「Ｇ０−３」（前半の４バイト）＋「Ｇ４−７」（後半の４バイト）である。８ＴＨ（８番目）のデータは、８Ｂ（バイト）のデータ「Ｈ０−３」（前半の４バイト）＋「Ｈ４−７」（後半の４バイト）である。
【００８４】
前記のような前半４バイトのデータと後半４バイトの合計８バイトデータがＣＰＵ内に存在するものとする。このデータは、ＣＰＵからＤＩＭＭへライトするデータ、又はＤＩＭＭからリードしたデータである。
【００８５】
(b) ：前記のような前半４バイトのデータと後半４バイトの合計８バイトデータをＣＰＵ内に持ち、このデータをＤＩＭＭに対してライトする場合、ＣＰＵからＡＳＩＣ５、６へ前記８バイトのデータを４バイトに分割して転送する。
【００８６】
この時、ＡＳＩＣ５には、Ａ０−３の４バイト、Ｂ０−３の４バイト、Ｃ０−３の４バイト、Ｄ０−３の４バイト、Ｅ０−３の４バイト、Ｆ０−３の４バイト、Ｇ０−３の４バイト、Ｈ０−３の４バイトが格納される。
【００８７】
また、ＡＳＩＣ６には、Ａ４−７の４バイト、Ｂ４−７の４バイト、Ｃ４−７の４バイト、Ｄ４−７の４バイト、Ｅ４−７の４バイト、Ｆ４−７の４バイト、Ｇ４−７の４バイト、Ｈ４−７の４バイトが格納される。
【００８８】
そして、データのライト時には、これらのデータをＥＣＣの塊としてＥＣＣビットを生成し、前記データに付加する。また、データのリード時には、これらのデータにＥＣＣビットが付加されたデータ（転送されたデータ）をチェックする。具体的には次の通りである。
【００８９】
Ａ０−３／Ｂ０−３／Ｃ０−３／Ｄ０−３の１６バイトでＥＣＣビットｊ０−Ｆを生成（データライト時）／チェック（データリード時）する。Ｅ０−３／Ｆ０−３／Ｇ０−３／Ｈ０−３の１６バイトでＥＣＣビットｋ０−Ｆを生成（データライト時）／チェック（データリード時）する。
【００９０】
Ａ４−７／Ｂ４−７／Ｃ４−７／Ｄ４−７の１６バイトでＥＣＣビットｍ０−Ｆを生成（データライト時）／チェック（データリード時）する。Ｅ４−７／Ｆ４−７／Ｇ４−７／Ｈ４−７の１６バイトでＥＣＣビットｎ０−Ｆを生成（データライト時）／チェック（データリード時）する。
【００９１】
このようにしてＡＳＩＣ５、６には、次のようなデータが格納される。すなわち、（Ａ０−３、Ｂ０−３、Ｃ０−３、Ｄ０−３）＋（ｊ０−Ｆ）及び（Ｅ０−３、Ｆ０−３、Ｇ０−３、Ｈ０−３）＋（ｋ０−Ｆ）のデータが格納される。また、ＡＳＩＣ６には、（Ａ４−７、Ｂ４−７、Ｃ４−７、Ｄ４−７）＋（ｍ０−Ｆ）及び（Ｅ４−７、Ｆ４−７、Ｇ４−７、Ｈ４−７）＋（ｎ０−Ｆ）のデータが格納される。
【００９２】
(c) ：次に、ＡＳＩＣ５、６とＡＳＩＣ７、８間でデータ転送を行う。この場合、ＡＳＩＣ７には、（Ａ０−３＋ｊ０−３）、（Ｃ０−３＋ｊ８−Ｂ）、（Ｅ０−３＋ｋ０−３）、（Ｇ０−３＋ｋ８−Ｂ）のデータ及び（Ａ４−７＋ｍ０−３）、（Ｃ４−７＋ｍ８−Ｂ）、（Ｅ４−７＋ｎ０−３）、（Ｇ４−７＋ｎ８−Ｂ）のデータが格納される。
【００９３】
また、ＡＳＩＣ８には、（Ｂ０−３＋ｊ４−７）、（Ｄ０−３＋ｊＣ−Ｆ）、（Ｆ０−３＋ｋ４−７）、（Ｈ０−３＋ｋＣ−Ｆ）のデータ及び（Ｂ４−７＋ｍ４−７）、（Ｄ４−７＋ｍＣ−Ｆ）、（Ｆ０−３＋ｎ４−７）、（Ｈ０−３＋ｎＣ−Ｆ）のデータが格納される。
【００９４】
なお、ＡＳＩＣ５−７、８間、ＡＳＩＣ６−７、８間で発生したデータ転送時の故障を訂正検出（１ビットだと訂正し、２ビットエラーだと検出のみ）する場合、１６バイトのＥＣＣと別のＥＣＣでガードする。
【００９５】
(d) ：次に、ＡＳＩＣ７、８がＤＩＭＭとデータ転送を行う（データのリード／ライトを行う）。
【００９６】
この場合、一方のＡＳＩＣ７とデータ転送を行うＤＩＭＭでは、１ＳＴ（１番目）のデータは、Ａ０−３、Ａ４−７、ｊ０−３、ｍ０−３である。２ＮＤ（２番目）のデータは、Ｃ４−７、Ｃ０−３、ｍ８−Ｂ、ｊ８−Ｂである。３ＲＤ（３番目）のデータは、Ｅ０−３、Ｅ４−７、ｋ０−３、ｎ０−３のデータである。４ＴＨ（４番目）のデータは、Ｇ４−７、Ｇ０−３、ｎ８−Ｂのデータである。
【００９７】
また、他方のＡＳＩＣ８とデータ転送を行うＤＩＭＭでは、１ＳＴ（１番目）のデータは、Ｂ０−３、Ｂ４−７、ｊ４−７、ｍ４−７である。２ＮＤ（２番目）のデータは、Ｄ４−７、Ｄ０−３、ｍＣ−Ｆ、ｊＣ−Ｆである。３ＲＤ（３番目）のデータは、Ｆ０−３、Ｆ４−７、ｋ４−７、ｎ４−７のデータである。４ＴＨ（４番目）のデータは、Ｈ４−７、Ｈ０−３、ｎＣ−Ｆ、ＫＣ−Ｆのデータである。
【００９８】
このように、ＡＳＩＣ５、６で作成したＥＣＣの塊が同じＤＩＭＭ（ＤＲＡＭ）にアクセスしない。
【００９９】
§４：ＣＰＵ−ＡＳＩＣ間でデータを４つにスライスした時の説明
図５はＣＰＵ−ＡＳＩＣ間でデータを４つにスライスした時の説明図である。以下、図５を参照しながら、ＣＰＵ−ＡＳＩＣ間でデータを４つにスライスした時の変形例について説明をする。
【０１００】
(a) ：他の実施形態（変形例）の説明
図５に示したように、この例では、ＣＰＵにＡＳＩＣ９、１０、１１、１２からなる４分割したＡＳＩＣ（第１のＡＳＩＣ群）を接続し、前記４分割したＡＳＩＣ９、１０、１１、１２には、それぞれ、２個づつのＡＳＩＣ１３、１４（第２のＡＳＩＣ群）を接続する。また、前記２個のＡＳＩＣ１３、１４には、それぞれ１個のＤＩＭＭを接続する。このような構成により前記データを４個にスライスすることができる。
【０１０１】
この場合、ＡＳＩＣ９、１０、１１、１２（第１のＡＳＩＣ群）には、１６バイトのデータが転送されるので、その１６バイト単位にＥＣＣの塊を生成し、前記図２、３、４の例と同様に、その塊が同じＤＩＭＭの同じ素子にデータに読み書きされないようにデータのアサインを行う。
【０１０２】
(b) ：具体的なデータ例の説明
図５に示した装置では、ＣＰＵ−ＡＳＩＣ間でデータが４つにスライスした例が示されている。この装置において、ＡＳＩＣ９、１０、１１、１２には、１６バイトのデータが転送されるので、その１６バイト単位にＥＣＣの塊を生成し、前記と同様に、前記ＥＣＣの塊が同じＤＩＭＭの同じ素子に対して書き込みや読み出しがされないようにデータのアサインを行う。
【０１０３】
このようにすれば、アドレス故障、データ故障、ＤＩＭＭ１個の故障が発生した場合でも、エラーの訂正、検出が可能になる。そのため、１個当たりのＡＳＩＣのピン数を少なくすることができ、コストダウンが期待できる。また、ＤＩＭＭやＣＰＵを多く搭載することも可能になる。
【図面の簡単な説明】
【０１０４】
【図１】本発明の原理説明図である。
【図２】実施の形態におけるチップ構成と結線の説明図である。
【図３】実施の形態における処理説明図である。
【図４】実施の形態におけるデータ例の説明図である。
【図５】実施の形態におけるＣＰＵ−ＡＳＩＣ間でデータを４つにスライスした時の説明図である。
【図６】従来のチップ構成図である。
【図７】従来のＤＩＭＭとのインタフェースを持つＡＳＩＣを分割した時のチップ構成図である。
【符号の説明】
【０１０５】
１１  プログラム
１２  リクエスト送受信回路
１３  転送データ振り分け回路
１４  受信回路
１５  ＥＣＣコード発生回路
１６  転送データ振り分け回路
１７  送信回路
１８  受信回路
１９  ＥＣＣチェック回路
２０  ＥＣＣ訂正回路
２１  送信回路
２５  受信回路
２６  メモリコントローラ
２７  書込みデータ並び替え回路
２８  読出しデータ並び替え回路
２９  送信回路
【図１】
2006004133.tif 000007
【図２】
2006004133.tif 000008
【図３】
2006004133.tif 000009
【図４】
2006004133.tif 000010
【図５】
2006004133.tif 000011
【図６】
2006004133.tif 000012
【図７】
2006004133.tif 000013