(57)【特許請求の範囲】
【請求項１】
ｃ（ｃ＞０）ビット誤り訂正・ｄ（ｄ＞ｃ）ビット誤り検出符号を使用した情報通信システム、あるいはメモリシステムの誤り検出・訂正方法において、
送信対象データを符号化する以前に発生した障害の有無、及びこの障害の発生原因を示す障害情報と、前記送信対象データとから検査ビットを生成して前記障害情報、送信対象データ並びに検査ビットから成る符号語を生成するステップと、
前記符号語から前記障害情報を除いた符号列を通信路もしくはメモリに送出するステップと、
前記通信路もしくはメモリから受信した符号語について、除かれた前記障害情報に当たる部分を固定値であると仮定した符号列からシンドロームを生成し、該シンドロームのパタンに基づき、前記符号列の誤り検出・訂正を行い、もって前記障害情報を再現するステップとを有することを特徴とする誤り検出・訂正方法。
【請求項２】
プロセッサと、主記憶と、誤り制御符号化されたデータを格納する主記憶制御装置と、ＩＯ装置と、複数の前記プロセッサと前記主記憶制御装置を接続するプロセッサバスと、前記主記憶と前記主記憶制御装置を接続するメモリバスと、前記ＩＯ装置と前記主記憶制御装置を接続するＩＯバスを備える計算機システムにおいて、前記主記憶制御装置は、
前記プロセッサバスから転送された前記主記憶への書き込み対象データの誤りを検出する第１の誤り検出回路と、
前記ＩＯバスから転送された前記主記憶への書き込み対象データの誤りを検出する第２の誤り検出回路と、
前記書き込み対象データについて前記第１もしくは第２の誤り検出回路で訂正不能な誤りを検出したか否かをそれぞれの符号パタンで示す障害情報と、該書き込み対象データとから成る符号列から検査ビットを生成し、該障害情報を除いて該書き込み対象データと該検査ビットとから成る符号列を前記主記憶に書き込む符号語として出力する符号化回路と、
前記主記憶から読み出した符号語について、除かれた前記障害情報に当たる部分が固定のパタンであると仮定した符号列からシンドロームを生成し、該シンドロームのパタンに基づき、前記符号列の誤り検出・訂正を行い、もって前記障害情報を再現する復号回路と、
前記復号回路で再現された障害情報の符号パタンを検出して前記符号化回路による符号化以前に発生した訂正不能な誤りの発生源を識別する障害情報検出テーブルとを備えることを特徴とする計算機システムの主記憶制御装置。
【請求項３】
請求項２記載の計算機システムの主記憶制御装置において、前記主記憶制御装置を他の主記憶制御装置と接続する場合には、前記主記憶制御装置とクロスバスイッチを接続するためのクロスバスイッチ入出力制御と、
前記クロスバスイッチから転送されたデータの誤りを検出する回路とを備えることを特徴とする計算機システムの主記憶制御装置。
【請求項４】
請求項２または３記載の計算機システムの主記憶制御装置において、
前記誤り制御符号化にＳＥＣ−ＤＥＤ符号の短縮化符号を使用し、このＳＥＣ−ＤＥＤ符号のパリティ検査行列から削除した列に相当する複数のビットのうちの特定のビットを、前記プロセッサバスまたは前記ＩＯバスまたは前記クロスバスイッチからの転送データの訂正不能誤りを検出したことを意味する障害情報ビットに割り当て、前記符号化回路で前記主記憶に書き込むデータと共に符号化し、前記主記憶には前記プロセッサバスまたは前記ＩＯバスから転送された前記主記憶への書き込みデータと検査ビットのみを書き込み、復号時には前記プロセッサバスの障害情報ビットを０として復号し、前記プロセッサバスあるいは前記ＩＯバスあるいは前記クロスバスイッチからの転送データに障害情報が発生したデータの場合は障害情報ビットの１ビットエラーとして検出し、障害情報ビットが１である符号語に、更にもう１ビットのエラーが発生した場合も検出することを特徴とする計算機システムの主記憶制御装置。
【請求項５】
請求項２または３記載の計算機システムの主記憶制御装置において、
前記誤り制御符号化にｂビット（ｂ＞２）単位のバイトで誤り制御をするＳｂＥＣ−ＤｂＥＤ符号の短縮化符号を使用し、このＳｂＥＣ−ＤｂＥＤ符号のパリティ検査行列から削除した列に相当する複数のビットのうちの特定のビットを、前記プロセッサバスまたは前記ＩＯバスまたは前記クロスバスイッチからの転送データの訂正不能誤りを検出したことを意味する障害情報ビットに割り当て、前記符号化回路で前記主記憶に書き込むデータと共に符号化し、前記主記憶には前記プロセッサバスまたは前記ＩＯバスから転送された前記主記憶への書き込みデータと検査ビットのみを書き込み、復号時には前記プロセッサバスの障害情報ビットを０として復号し、前記プロセッサバスあるいは前記ＩＯバスあるいは前記クロスバスイッチからの転送データに障害情報が発生したデータの場合は障害情報ビットの１バイトエラーとして検出し、障害情報ビットが１である符号語に、更にもう１バイトのエラーが発生した場合も検出することを特徴とする計算機システムの主記憶制御装置。
【請求項６】
ＯＳを搭載した計算機システムにおいて、主記憶に記憶されているデータに対して請求項１記載の処理をソフトウェアで行い、障害箇所の特定を行うことを特徴とする計算機システム。
【請求項７】
主記憶の内容の採取やエラーログの採取が可能なモニタ装置を持つ計算機システムにおいて、請求項１記載の処理をソフトウェアで行い、障害箇所の特定を行うことを特徴とする計算機システム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、計算機システムの障害検出方式及びその主記憶制御装置に係り、特にエラー発生時のシステムダウンを回避し、エラー発生源の特定に好適な誤り検出・訂正方法、計算機システムの主記憶制御装置、及び計算機システムに適用して有効な技術に関する。
【０００２】
【従来の技術】
従来、ＣＰＵバスやＩＯバスから主記憶に書き込むデータに訂正不能なエラーを検出した場合においてシステムダウンをさせない方法として、例えば特開平６−８９１９６号公報では、主記憶制御装置がＣＰＵバスやＩＯバスから転送されたデータに訂正不能なエラーを検出した場合、ある受信データを特定のパタンのデータに置き換え、このデータから生成した検査ビットを全て反転させた特定の誤り訂正符号付きデータを主記憶へ書き込んでいる。そして、主記憶からこのデータを読み出したときシンドロームが全１で、特定パタンのデータになっていれば、ＣＰＵバスやＩＯバスで訂正不能なエラーとなったデータであると判別する。これにより、障害情報を記憶するために必要な、主記憶へのインタフェース信号数、主記憶のメモリ容量を増加させないで障害情報を記録できる。
【０００３】
また、ＣＰＵバスやＩＯバスでリトライなどの障害回復手段を持たない場合は、障害検出時にリブートさせず、当該データをＣＰＵが読み出そうとしたときだけＣＰＵに割り込みをかけて障害通知をすればよいことになり、障害のあるデータを主記憶に書き込んでもＣＰＵから読み出しがなければデータの障害がシステムの障害（停止やリブート等、ユーザに直接見える障害）を避けることができ、システムのアベイラビリティの向上に有効である。
【０００４】
【発明が解決しようとする課題】
しかし、前記のような従来方式で提案している符号の構成方法について、本発明者が検討した結果、以下に挙げる３つの問題点が明らかとなった。この問題点とは、（１）検査ビットを反転させれば、シンドロームが全１のパタンになり発生頻度の低い多重エラーのパタンとなるとしていること、（２）この特定の誤り訂正符号付きデータが主記憶でさらに１ビットエラーが発生すると誤訂正する場合があること、（３）特定パタンにデータを書き換えているため元のデータパタンを参照できないことの３点が挙げられる。これらの問題点について具体例を挙げながら説明する。
【０００５】
まず、（１），（２）について凡例を挙げて説明する。ここでは、説明を簡単にするため図１６に示す符号長８、検査ビット長４のＳＥＣ−ＤＥＤ符号（単一ビット誤り・二重ビット誤り検出符号）を例に挙げる。この符号についての説明は、文献Ｔ．Ｒ．Ｎ．Ｒａｏ，Ｅ．Ｆｕｊｉｗａｒａ著、”Ｅｒｒｏｒ−Ｃｏｎｔｒｏｌ  Ｃｏｄｉｎｇ  Ｆｏｒ  Ｃｏｍｐｕｔｅｒ  Ｓｙｓｔｅｍｓ”のＰ１４０に記載されている。
【０００６】
図１６には、パリティ検査行列Ｈ（以下、Ｈ行列と呼ぶ）と、情報ビット及び検査ビットの配置の例が示してある。Ｈ行列の各列ベクトルをｈ０，ｈ１，・・・，ｈ７と呼ぶことにする。図１７は（１）の問題点の具体例を示している。図１６のｄ０とｃ３の位置に合計２ビットの誤りが生じたとする。このときシンドロームＳとして全１のパタンが生じる。つまり、符号の作り方によってはシンドロームが全１になるケースが発生頻度の低い多重誤りにはならないということである。
【０００７】
次に図１８を使って（２）の問題点を説明する。図１８（１）に示すように、符号語が［０，０，０，０，０，０，０，０］のとき、従来方式のやり方で検査ビットを全て反転させ、データｄ＝［０，０，０，０，１，１，１，１］を得る。次に図１８（２）に示すように１ビットエラーが起き、データが［０，０，０，０，１，１，１，０］になる。そして、図１８（３）に示すように図１６のＨ行列からシンドロームを生成すると、図１６のＨ行列のｈ０という列ベクトルに一致し、ｄ０に１ビット誤りが発生したと判定することになり、誤って［１，０，０，０，１，１，１，０］と誤訂正してしまう。
【０００８】
従来方式を計算機システムで一般的に用いられている誤り制御符号に適用しようとすると、（１），（２）の問題が発生する可能性がある。したがって、従来方式は全ての誤り制御符号には適用できず、ある特定のパタンのＨ行列の誤り制御符号にしか適用できない。しかし、従来例では適用した符号の種類について何の言及もなされていない。
【０００９】
次に（３）の問題点について説明する。エラーを検出した時のパタンを幾つか調査すると、例えば特定のビットが０固定故障を起こしているようなパタンを発生する場合もある。このように障害発生時のデータのパタンを残していくことは、エラー原因解析の糸口となる場合もありうるので、エラー発生時のパタンを棄ててしまうのは障害原因の解析時間を延ばしてＭＴＴＲ（Ｍｅａｎ  Ｔｉｍｅ  Ｔｏ  Ｒｅｐａｉｒ）の増大を引き起こす。
【００１０】
上記（１），（２），（３）の問題点を解決することが課題となる。さらに、エラー訂正不能な障害を発生した箇所がどこであるか特定できれば、障害回復処理の大幅な削減が見込まれる為、符号のビット数を増加させずにエラー訂正不能な箇所の特定も同時に可能とすることが課題となる。また、この提案方式を実現する装置では既存の符号化、復号化回路に大規模な修正を加えずに実現することも課題として挙げられる。
【００１１】
そこで、本発明の目的は、符号化するデータが障害情報である情報をデータの大きさを変えずに符号化することができ、また復号においても誤訂正することなく障害データであると識別することができる誤り検出・訂正方法、計算機システムの主記憶制御装置、及び計算機システムを提供するものである。
【００１２】
本発明の前記ならびにその他の目的と新規な特徴は、本明細書の記述および添付図面から明らかになるであろう。
【００１３】
【課題を解決するための手段】
本願において開示される発明のうち、代表的なものの概要を簡単に説明すれば、次のとおりである。
【００１４】
始めに、前記図１６で示した誤り制御符号を用いて本発明の概要を説明する。図１６のＳＥＣ−ＤＥＤ符号は符号長８ビット、情報ビット長４ビットであり、以降では（８，４）ＳＥＣ−ＤＥＤ符号と呼ぶことにする。検査ビット数が４のＳＥＣ−ＤＥＤ符号の最大符号長は前記文献のＰ１３９から８ビットであることがわかる。誤り制御符号で保護したい情報ビット数が２ビットの場合、図１に示すように情報ビットとして使用しないビット数分だけ列ベクトルを削除し、（６，２）ＳＥＣ−ＤＥＤ符号として使用する。このように必要な情報ビット数分だけＨ行列から切り出した符号を短縮化符号という。本発明では、この削除した列ベクトルに対応する情報ビットに障害情報を配置することが基本的な考え方である。
【００１５】
図２の例では、削除した部分に障害情報ｅ０とｅ１を割り当てている。符号語でどのようにビットを配置しているかを図３に示す。通常、障害情報なしで符号化する場合は図３（１）のように障害情報に０を配置する。この場合の符号化、復号の手順を図４に示す。符号化するデータ７０とデータ７０に障害が発生しているかどうかを示す障害情報７１を図２の（８，４）ＳＥＣ−ＤＥＤ符号のＨ行列を使って符号化する。符号化とは、具体的には検査ビットｃ０，ｃ１，ｃ２，ｃ３を生成することである。ここで生成した符号語７３のうち、障害情報を除いた［ｄ０，ｄ１，ｃ０，ｃ１，ｃ２，ｃ３］のみを通信路または記憶装置７５に送信する。通信路または記憶装置７５から受信したデータ７６に、固定値［０，０］を障害情報として仮定して図２の（８，４）ＳＥＣ−ＤＥＤ符号のＨ行列を使い復号７８し、データ７９を得る。ここで復号とは、受信した符号語からシンドロームを生成し、そのシンドロームをデコードしてエラーの発生したビット位置を反転することである。ここで重要な点は、障害情報を通信路や記憶装置に送信しないことである。受信側では送信元のデータ７０には、いつも障害がないと仮定して復号している点である。
【００１６】
障害情報がある場合は、図３（２）の様にｅ０またはｅ１に障害情報を配置する。図５に示すように障害情報８０を与えて符号化７２する。そして、復号７８をするときに障害情報として［０，０］を仮定しているため先頭の１ビットが誤っていることになる。したがって、復号７８をすることで、データ８１が得られ、障害情報が再現されることになる。ただし、この例で使用している符号を使っている限りｅ０，ｅ１の両方が１となることはできない。なぜならば、ここで使用している符号の誤り訂正能力は１ビットであるから最大１ビットの情報までしか再現できないからである。ＳＥＣ−ＤＥＤ符号よりさらに強力な誤り訂正能力を持つ符号を使用すれば、一度に転送できる障害情報は増やすことができる。このように、短縮化符号を使用している場合、短縮した部分に障害情報を乗せれば上記（１）の問題点は解決できる。さらに、符号化をする前のデータのパタンもそのまま残っている。通常使用するデータ幅では３２ビット、６４ビット、１２８ビットが多いが、それぞれの場合でＳＥＣ−ＤＥＤ符号化するときに必要な検査ビット数は、それぞれ７ビット、８ビット、９ビットとなる。この検査ビット数でＳＥＣ−ＤＥＤ符号化できる最大のデータ幅は、それぞれ、５７ビット、１２０ビット、２４７ビットとなり、どの場合も必ず短縮符号を使用しているため本発明の方式をたいていの場合は適用できる。
【００１７】
さらに図６では、上記（２）の問題が解決できることを示している。図６において、データ７０の障害情報８０とともに符号化７２をし、通信路または記憶装置７５に転送したデータの一部９０にエラーが生じたとする。このとき復号するデータ９１には９２，９３の２箇所でエラーが発生していることになる。これは２ビットエラーと同じであるからエラー検出が可能である。
【００１８】
上記の例を一般化した場合を図７を使って説明する。図７において、Ｈｅは（ｍ−ｋ×ｒ）の行列、Ｈｄは（ｋ×ｒ）の行列で、Ｉｒは（ｒ×ｒ）の単位行列である。（Ｈｅ，Ｈｄ）は情報ビット部分を、Ｉｒは検査ビット部分を表す。図７（ａ）に示す最大情報ビット長ｍビット、検査ビット長ｒビット、最大符号長ｍ＋ｒビットの（ｍ＋ｒ，ｍ）ｔ（ｔ＞０）ビットエラー訂正、ｕ（ｕ＞ｔ）ビットエラー検出符号のＨ行列を使用すると仮定する（なお、特許請求の範囲ではｔをｃ、ｕをｄとしている）。このとき、使用する情報ビット長をｋ（ｍ＞ｋ＞０）とする。この符号を使用する場合、最大ｍｉｎ（ｔ，ｍ−ｋ）ビットの障害情報を符号化することができる。ここでｍｉｎ（ａ，ｂ）はａ≦ｂでｍｉｎ（ａ，ｂ）＝ａ、ａ≧ｂでｍｉｎ（ａ，ｂ）＝ｂを意味する。さらに、障害情報をのせた符号にｕ−ｍｉｎ（ｔ，ｍ−ｋ）ビットのエラーが通信路や記憶装置内で付加されても誤訂正することはない。図７（ｂ）には、（ａ）のＨ行列を使用した場合の符号語内のデータ配置について説明している。ｅ０，ｅ１，・・・，ｅｍ−ｋ−１のｍ−ｋビットに障害情報を配置し、ｄ０，ｄ１，・・・，ｄｋ−１のｋビットに情報ビットを配置し、ｃ０，ｃ１，・・・，ｃｒ−１のｒビットに検査ビットを配置する。ただし、これらの配置は符号の性質を変えない範囲で場所を入れ替えることが可能である。本発明では、図７の説明で示した符号化方式を特徴とする誤り検出・訂正手段を提供するものである。
【００１９】
また、符号語と符号語の和は符号語であることを利用して、通信路や記憶装置に転送するデータを誤り制御符号化する場合、符号化する対象であるＣＰＵでの処理に用いるデータとこのデータの障害情報をまとめて検査ビットを生成せず、既存にあるデータ符号化手段と障害情報の符号化手段を別にし、後に線形和をとり符号化をすることを特徴とする誤り検出・訂正手段を提供する。
【００２０】
また、本発明の課題は以下の装置で解決できる。プロセッサと、主記憶と、誤り制御符号化されたデータを格納する主記憶制御装置と、ＩＯ装置と、複数のプロセッサと主記憶制御装置を接続するプロセッサバスと、主記憶と主記憶制御装置を接続するメモリバスと、ＩＯ装置と主記憶制御装置を接続するＩＯバスと、特に他の主記憶制御装置と接続する場合には、主記憶制御装置とクロスバスイッチを接続する為のクロスバスイッチ入出力制御を備える計算機システムの主記憶制御装置において、プロセッサバス上のデータの誤りを検出する回路と、ＩＯバス上のデータの誤りを検出する回路と、クロスバスイッチから転送されたデータの誤りを検出する回路と、主記憶へ書き込むデータと、プロセッサバスから転送された主記憶への書き込みデータに訂正不能な誤りを検出した情報、あるいはＩＯバスから転送された主記憶への書き込みデータに訂正不能な誤りを検出した情報から検査ビットを生成する符号化回路と、主記憶から読み出したデータのシンドロームを生成し、このシンドロームのパタンから誤りの検出・訂正をする復号回路と、符号化回路による符号化以前に発生した訂正不能な誤りの発生源を識別するために復号回路で生成されたシンドロームが特定のパタンであるかを検出する障害情報検出テーブルとを備えることを特徴とする主記憶制御装置を設けることで課題を解決できる。
【００２１】
【発明の実施の形態】
以下、本発明の実施の形態を図面に基づいて詳細に説明する。なお、実施の形態を説明するための全図において、同一部材には同一の符号を付し、その繰り返しの説明は省略する。
【００２２】
本発明の方式の一実施の形態として図８の（１１２，１０４）ＳＥＣ−ＤＥＤ−Ｓ４ＥＤ(単一４ビットのブロックを検出可能なＳＥＣ−ＤＥＤ符号)を使用したシステムを図面を参照しながら説明する。ＳＥＣ−ＤＥＤ−Ｓ４ＥＤは主記憶用メモリ素子の読み出し幅が４ビットであるようなシステムに多く使用され、単一のメモリ素子故障を検出できる。この符号については前記文献のＰ２８０−２８３を参照することができる。本実施の形態では、システムで使用しているデータの幅（ＣＰＵなどが実際に処理に使用するデータの幅）を６４ビットと仮定する。このとき、本発明の方式ではなく通常のエラー制御方式では（７２，６４）ＳＥＣ−ＤＥＤ−Ｓ４ＥＤ符号を用いる。本発明の方式では、単一ビット誤り訂正の能力の符号を使用するので、短縮した４０ビットの部分に１ビットづつ排他的に使用して、最大４０種類の障害情報を符号化することができる。ここでは、先頭の４ビットｅ０，e１，e２，e３に障害情報をのせる。
【００２３】
図９に障害情報とシンドロームの組み合わせ表を示す。図９では、Ｈ行列のｅ０の位置にＣＰＵバスの訂正不能エラーという障害情報を配置することを意味する。本発明で使用する誤り制御符号は、ＳＥＣ−ＤＥＤ符号（単一ビット誤り・二重ビット誤り検出符号）、あるいはＳＥＣ−ＤＥＤ符号に機能を追加した符号のみならず、多重ビット誤り訂正の機能を持つ符号や、ｂ（ｂ＞１）ビットのブロック（＝バイト）の誤り訂正をするＳｂＥＤ−ＤｂＥＤ符号(単一バイト誤り訂正・二重バイト誤り訂正符号)といった誤り制御符号を使用するほとんどの場合に適用することが可能である。以下に示す符号化、復号の手順、及び装置例もほとんど同じ方法で実施することができる。
【００２４】
また、本発明の方式の処理の流れを図１０を使用して説明する。図１０の入力データ１と障害情報入力２を入力とする符号化回路５と、通信路または記憶装置７から受信した符号語８を入力とし、誤りを訂正したデータ１５と誤りを検出したことを示す誤り検出出力１６と入力データ障害情報出力１７を出力とする復号回路９を設け、復号回路９には、通信路または記憶装置７から受信した符号語８からシンドロームを生成するシンドローム生成回路１０と、シンドローム１１から誤りの発生した位置や訂正不能な誤りの検出、及び入力データ１とともに符号化された障害情報入力２を識別するシンドロームデコード回路１２と誤りの位置情報１３から通信路または記憶装置７から受信した符号語８の誤りを訂正し、訂正したデータ１５を出力する訂正回路１４を設けることで実現される。
【００２５】
符号化の手順を図１１に示す。（ａ）方法１と（ｂ）方法２の手順があり、ここでは図７のＨ行列、データ構造を使うとする。（ａ）の手順を説明する。まず、符号化するデータに付随する障害情報をエンコードし、ビット列に変換する（Ｓ１）。次に、符号化する入力データと障害情報を一つのデータとして纏め（Ｓ２）、Ｈ行列に基づき検査ビットを生成して（Ｓ４）、符号化が完了する。次に（ｂ）の手順を説明する、障害情報のエンコードと、入力データを全て０としたデータを作成し（Ｓ４）、Ｈ行列に基づき検査ビットを生成する（Ｓ５）。手順Ｓ４、Ｓ５と平行して、障害情報が全て０と仮定して入力データだけのデータを作成し（Ｓ６）、Ｈ行列に基づき検査ビットを生成する（Ｓ７）。次に、手順Ｓ５と手順Ｓ７で作成した検査ビットの線形和を行う（Ｓ８）ことで符号化が完了する。（ｂ）方法２は符号語と符号語の線形和は符号語である性質を利用している。（ｂ）方法２では、既存の符号化手段に相当するＳ６，Ｓ７を変更せず、手順Ｓ４，Ｓ５を追加する方法である。
【００２６】
復号の手順を図１２に示す。復号する符号語とＨ行列の転置との積をとりシンドロームＳを生成する（Ｓ１１）。次に、シンドロームＳが全０であればエラーは存在しないので復号は終了で、シンドロームが非零であれば（Ｓ１２）、Ｈ行列のどこかの列に一致するか（多重誤り訂正の場合複数の列ベクトルの線形和のパタンとなる）調べ、どの列にも一致しない（多重誤り訂正の場合複数の列ベクトルの線形和のパタンと一致しない）場合はエラー検出をして終了となる（Ｓ１３）。一致した列があれば、その列が障害情報を配置した列となっているかどうか調べる（Ｓ１４）。障害情報がなければエラー訂正をして（Ｓ１５）、処理は終了となる。また、障害情報がある場合は、障害原因をシンドロームのパタンからデコード（Ｓ１６）して、障害情報を報告して終了となる。さらに、障害情報を含んだ符号語にさらにエラーが発生した場合、シンドロームのパタンは手順Ｓ１３の処理を行い、エラー検出まで可能である。ＳＥＣ−ＤＥＤ符号、あるいはそれに準ずる機能を持つ符号では、障害情報とさらにもう１ビットのエラーまで同時に発生しても検出できる。
【００２７】
本発明を実現する装置の例を図を参照しながら説明する。図１３は、本発明の実施の形態に係る計算機システムの全体構成図である。この計算機システムは、ノードＮ１００，Ｎ１０１をクロスバスイッチＸ１００で信号線Ｘ１０１，Ｘ１０２，Ｘ１０３，Ｘ１０４を介して互いのノードの資源をアクセスする。ノードの数は本実施の形態では２個であるが、２個以上の構成であってもよく、複数のノードはクロスバスイッチＸ１００で相互結合されている。
【００２８】
ノードＮ１００は、主記憶制御装置Ｃ１００と、プロセッサＢ１００，Ｂ１０１、プロセッサバスＢ１０２、ＩＯ装置Ａ１００，Ａ１０１，Ａ１０２，Ａ１０３、ＩＯバスＡ１０４，Ａ１０５、主記憶ｍ１００から構成される。プロセッサやＩＯ装置やプロセッサバスやＩＯバスの個数は本実施の形態で示した個数に特定されず、任意の数の組み合わせがあってもよい。このプロセッサＢ１００，Ｂ１０１は、プロセッサバスＢ１０２を介して主記憶制御装置Ｃ１００と結合している。主記憶ｍ１００は信号線Ｃ１１３，Ｃ１１４で主記憶制御装置Ｃ１００と結合している。
【００２９】
主記憶制御装置Ｃ１００は、プロセッサバス制御部Ｂ１０３、ＩＯバス制御部Ａ１０６、クロスバスイッチ入出力制御部Ｘ１０５、主記憶制御部Ｃ１１０、ログレジスタＣ１１６から構成されている。プロセッサバス制御部Ｂ１０３は、信号線Ｂ１０５，Ｂ１０７で主記憶制御部Ｃ１１０と結合している。またプロセッサバス制御部Ｂ１０３には、プロセッサバスＢ１０２から転送されてくる主記憶への書き込みデータの誤り検出を行うエラー検出回路Ｂ１０４がある。エラー検出回路Ｂ１０４で誤り訂正不能なエラー（パリティ符号を使用している場合はパリティエラー、ＳＥＣ−ＤＥＤ符号を使っている場合は１ビットを超えるエラー等）を検出した場合、信号線Ｂ１０６で訂正不能なエラーがあったことを信号線Ｂ１０５を渡る主記憶への書き込みデータと同期して主記憶制御部Ｃ１１０に通知する。
【００３０】
ＩＯバス制御部Ａ１０６には、ＩＯバスＡ１０４，Ａ１０５から転送されてくる主記憶への書き込みデータのエラー検出をするエラー検出回路Ａ１０７がある。エラー検出回路Ａ１０７で主記憶への書き込みデータに訂正不能なエラーがあった場合、信号線Ａ１０８で転送される主記憶への書き込みデータと同期して訂正不能エラーの存在を信号線Ａ１０９で主記憶制御部Ｃ１１０へ通知する。
【００３１】
主記憶制御部Ｃ１１０では、プロセッサバス制御部Ｂ１０３やＩＯバス制御部Ａ１０６からそれぞれ信号線Ｂ１０５、Ａ１０８を通して転送される書き込みデータの書き込みアドレスを解読して、自ノードＮ１００か他ノードＮ１０１宛てのデータか判別して、他ノードＮ１０１宛ての場合、信号線Ｘ１０７を通してクロスバスイッチ入出力制御部Ｘ１０５へ、クロスバスイッチ入出力制御部Ｘ１０５から信号線Ｘ１０２とクロスバスイッチＸ１００と信号線Ｘ１０４を経由して他ノードＮ１０１へ転送する。
【００３２】
クロスバスイッチ入出力制御部Ｘ１０５には、他ノードＮ１０１からの転送されたデータのエラー検出をするエラー検出回路Ｘ１０８があり、訂正不能なエラーがある場合は、データを転送する信号線Ｘ１０６と同期して信号線Ｘ１０９で訂正不能エラーがあったことを主記憶制御部Ｃ１１０に通知する。
【００３３】
主記憶制御部Ｃ１１０には、主記憶ｍ１００に書き込むデータの誤り制御符号化をする符号化回路Ｃ１１１と、主記憶ｍ１００から読み出されたデータの誤りを検出・訂正する復号回路Ｃ１１２がある。復号回路Ｃ１１２で検出された誤りの情報や誤ったデータそのものをログとして記憶するログレジスタＣ１１６があり、信号線Ｃ１１５で復号回路Ｃ１１２からエラー情報を受け取る。ログレジスタＣ１１６の内容は、アドレス空間にマッピングされたレジスタで、プロセッサＢ１００，Ｂ１０１で障害処理ルーチンが起動したときプロセッサバスＢ１０２、プロセッサバス制御部Ｂ１０３、信号線Ｂ１０９を経由してアクセスされ、信号線Ｂ１０８、プロセッサバス制御部Ｂ１０３、プロセッサバスＢ１０２を経由してプロセッサＢ１００，Ｂ１０１に転送される。
【００３４】
また、ノードＮ１００，Ｎ１０１の外部に設けられたモニタＤ１００は、信号線Ｄ１０１を経由してログレジスタＣ１１６にアクセスし、ログレジスタＣ１１６の内容を信号線Ｄ１０２を通してモニタＤ１００に転送され、モニタＤ１００の表示画面にログの内容が表示される。また、モニタＤ１００は信号線Ｄ１０２，Ｄ１０３，Ｄ１０４，Ｄ１０５を通して各ノードの主記憶０の内容をダンプもする。
【００３５】
図１４に示す符号化回路Ｃ１１１について説明する。符号化回路Ｃ１１１は、主記憶へのライトデータを格納するレジスタＣ２０２と、検査ビット生成回路Ｃ２０４と、主記憶へのライトデータにプロセッサバス制御部やＩＯバス制御部やクロスバスイッチ入出力制御部で検出した訂正不能エラーがあることの情報やエラー検出場所等の障害情報を格納する障害情報レジスタＣ２０６と、障害情報から検査ビットのパタンを生成する障害情報照合テーブルＣ２０８と、検査ビットどうしの線形和を生成するＥＸＯＲ回路Ｃ２１０と、主記憶へ書き込む符号語のデータビットを格納するレジスタＣ２１１と、検査ビットを格納するレジスタＣ２１２から構成される。なお、Ｃ２５０は従来の検査ビット生成回路と同一の回路であり、Ｃ２５１の部分を新たに追加することで本発明で提案した符号化方法を実現可能となる。これは既に説明した図１１の（ｂ）方法２に相当する回路であり、手順Ｓ６、Ｓ７が図１４のＣ２５０の部分に、図１１の（ｂ）方法２の手順Ｓ４、Ｓ５が図１４のＣ２５１の部分に相当する。
【００３６】
符号化回路Ｃ１１１の動作について説明する。符号化回路Ｃ１１１の動作は既に説明した図１１の（ｂ）方法２の手順を実行する。図１３において、プロセッサバス制御部Ｂ１０３、またはＩＯバス制御部Ａ１０６、またはクロスバ入出力制御部Ｘ１０５から主記憶制御部Ｃ１１０に転送されたライトデータと訂正不能エラーが発生した情報は、図示はしていないが主記憶制御部Ｃ１１０内のセレクタで選択され、それぞれ図１４の信号線Ｃ２００，Ｃ２０１を通し符号化回路Ｃ１１１に転送される。ライトデータは、レジスタＣ２０２から信号線Ｃ２０３を通し、検査ビット生成回路Ｃ２０４で検査ビットを生成し、信号線Ｃ２０５でＥＸＯＲ回路Ｃ２１０に転送される。一方、訂正不能エラー情報とエラーの検出元を示した信号は信号線Ｃ２０１で障害情報レジスタＣ２０６に格納され、信号線２０７を通し、障害情報照合テーブルＣ２０８に転送され、図９のテーブルに相当する連想回路が搭載されていて、障害発生内容からシンドロームのパタンを生成する。このシンドロームのパタンは符号化時には検査ビットのパタンになる。障害情報照合テーブルＣ２０８で生成された検査ビットは、信号線Ｃ２０９を通しＥＸＯＲ回路Ｃ２１０では方法２の手順８の処理を行う。完成した符号語はレジスタＣ２１１とＣ２１２に格納されて、信号線Ｃ１１３を介し主記憶へ転送される。
【００３７】
次に、図１５に示す復号回路Ｃ１１２を説明する。復号回路Ｃ１１２には、データビットレジスタＣ３００と、検査ビットレジスタＣ３０１と、シンドローム生成回路Ｃ３０４と、シンドロームデコード回路Ｃ３０６と、ビット反転回路Ｃ３０８と、障害情報照合テーブルＣ３５１と、データビットレジスタＣ３１０と、検査ビットレジスタＣ３１１がある。
【００３８】
復号回路Ｃ１１２の動作について説明する。復号回路Ｃ１１２の動作は図１２の手順を実行する。図１５において、主記憶から読み出されたデータは信号線Ｃ１１４を通してデータビットレジスタＣ３００と検査ビットレジスタＣ３０１に格納される。信号線Ｃ３０３を通してシンドローム生成回路Ｃ３０４にレジスタＣ３００，Ｃ３０１のデータは転送され、シンドロームが生成される。シンドロームを生成する手順は、従来の誤り制御方式と同様に図１２の手順Ｓ１１である。生成したシンドロームは、信号線Ｃ３０５を通しシンドロームデコード回路Ｃ３０６に転送され、シンドロームが０ならばエラーは存在しないとし、そうでない場合は、エラー訂正あるいはエラー検出を図１２の手順Ｓ１３，Ｓ１５の処理を行う。この処理は従来の誤り検出・訂正の手順に準ずる。シンドロームをデコードし、エラーのあったポインタを示す信号を信号線Ｃ３０７を通し反転回路Ｃ３０８へ転送し、信号線Ｃ３０３で転送される主記憶からの読み出しデータのエラーポインタで示された位置をビット反転する。この誤りを訂正されたデータは、レジスタＣ３１０とＣ３１１に格納され信号線３１２へ転送される。この信号線３１２のデータは、図示はしていないが図１３の主記憶制御部Ｃ１１０で主記憶の読み出しを要求した部分（プロセッサバス制御部またはＩＯバス制御部またはクロスバスイッチ入出力制御部）に転送する。
【００３９】
ここで説明した図１５のＣ３５０部分の動作は従来の誤り検出・訂正の回路と全く同一の回路である。本発明で追加された部分がＣ３５１の障害情報照合テーブルである。障害情報照合テーブルＣ３５１は信号線３０５で転送されるシンドロームのパタンからデータの障害情報を解読する回路であり、動作は、既に説明したように図１２の手順Ｓ１６を行い、図９の表でシンドロームから障害発生原因を連想する処理を行う。解読した障害情報は図１５の信号線Ｃ１１５を通し、図１３のログレジスタＣ１１６へ転送される。
【００４０】
さらに、本実施の形態でのプロセッサバスと主記憶や主記憶制御回路内のデータパスでは同じ誤り制御符号で保護されているとする。特に、プロセッサにはエラー検出・訂正回路が存在する。この回路は、図１４のＣ２５０、図１５のＣ３５０の回路と同一の回路が存在する。
【００４１】
誤り制御符号の訂正機能以上の多重誤りが起きた場合（障害情報を含んでいる場合を除く）は、図示していないがさらに、復号回路Ｃ１１２の出力Ｃ３１２を符号化回路Ｃ１１１の入力Ｃ２００へ再入力して、障害情報を追加して符号化を行い、プロセッサバス制御回路にデータを転送する。また、障害情報が含まれている主記憶の読み出しデータの場合は、そのまま、プロセッサ制御回路にデータを転送する。
【００４２】
プロセッサがプロセッサバスから障害情報を一緒に符号化した主記憶データを受け取り、プロセッサの復号回路で処理をすると、障害情報を配置したＨ行列の列ベクトルは、プロセッサの復号回路では短縮された列ベクトルなので、訂正対象の誤りではなく、かつシンドロームが非零なので、訂正不能エラーとして処理される。本発明の方式は、本発明の方式を実現する回路（図１４のＣ２５１、図１５のＣ３５１）を追加していない従来の誤り検出・訂正回路が混在していても障害情報を含んだデータは、誤り訂正不能な障害データとして扱われるため、適切なエラー処理が行われる下位互換方式であるといえる。プロセッサで障害情報を含む主記憶の読み出しデータを復号すると訂正不能エラーが発生し、障害割り込みが発生し、障害処理ルーチンがプロセッサで処理される。この障害処理ルーチンに図１３のログレジスタＣ１１６を読み出す処理を追加すれば、障害の発生したＩＯバスを切り離し、漸次縮退させる方法も可能である。また、ログレジスタの内容を画面にエラー発生個所として表示することにより障害個所を直ちに確認可能となる。障害処理ルーチンで主記憶のダンプをとり、画面に表示する場合もある。この場合、主記憶の内容をＢＩＯＳ等のソフトウェア上で本発明の提案方式の処理を行い、画面に障害発生個所を表示することも可能である。
【００４３】
主記憶に書き込むデータに訂正不能なエラーがあっても、そのデータがプロセッサの処理で使用されなければプロセッサの障害は発生せず、システムの稼働率を向上させることができる。また、上記の例のようにプロセッサで訂正不能エラーを検出したとしても、その障害データを読み出したプロセスのみを停止させることが可能で、システム全体がダウンする確率を減らすことができる。
【００４４】
さらに、図１３のモニタＤ１００をシステム動作中、あるいは、停止中に動作させ、主記憶のダンプを採取し、ソフトウェア上の処理で障害情報をデコードし表示することも可能である。また、ログレジスタの内容も表示することも可能である。これにより、障害発生源の迅速な発見をすることが可能である。
【００４５】
以上、本発明者によってなされた発明をその実施の形態に基づき具体的に説明したが、本発明は前記実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。
【００４６】
【発明の効果】
本願において開示される発明のうち、代表的なものによって得られる効果を簡単に説明すれば、以下のとおりである。
【００４７】
本発明によれば、誤り検出符号を使用した情報通信システム、あるいはメモリシステムの誤り検出・訂正方法に関して、符号化するデータが障害情報である情報をデータの大きさを変えずに符号化可能な方式を与え、また本方式を追加していない復号方法でも誤訂正することなく障害データであると識別できる方式を実現することができる。この方式を実現した装置では、障害データを読み出したプロセスだけが障害処理をし、可能な限りシステムをダウンさせず、システムの稼働率を向上させることができる。また、障害発生源を特定する速度を向上でき、システムのダウンタイムの削減が可能となる。
【図面の簡単な説明】
【図１】本発明で提案する方法の考え方を示すための符号の例を示す説明図である。
【図２】本発明で提案する方法の考え方を示す説明図である。
【図３】本発明で提案する方法のデータ構造を示す説明図である。
【図４】本発明で提案する方法の処理の流れの例（エラーの無い場合）を示すフロー図である。
【図５】本発明で提案する方法の処理の流れの例（障害情報が存在する場合）を示すフロー図である。
【図６】本発明で提案する方法の処理の流れの例（障害情報が存在し、かつ通信路あるいは記憶装置にエラーが発生する場合）を示すフロー図である。
【図７】（ａ），（ｂ）は本発明で提案する符号化方式を示す説明図である。
【図８】本発明の一実施の形態に係る誤り制御符号の例を示す説明図である。
【図９】本発明の一実施の形態に係る障害情報とシンドロームのパタンの関係表を示す説明図である。
【図１０】本発明の一実施の形態に係る符号化方式の処理の流れを示すフロー図である。
【図１１】（ａ），（ｂ）は本発明の一実施の形態に係る符号化方式の符号化手順を示すフロー図である。
【図１２】本発明の一実施の形態に係る符号化方式の復号手順を示すフロー図である。
【図１３】本発明の一実施の形態に係る計算機システムの全体を示すブロック図である。
【図１４】本発明の一実施の形態に係る装置の符号化回路を示すブロック図である。
【図１５】本発明の一実施の形態に係る装置の復号回路を示すブロック図である。
【図１６】従来技術の問題点を説明するための符号の例を示す説明図である。
【図１７】従来技術の問題点を説明するための例（２ｂｉｔエラー）を示す説明図である。
【図１８】従来技術の問題点を説明するための例（誤訂正）を示す説明図である。
【符号の説明】
Ｎ１００，Ｎ１０１  ノード
Ｘ１００  クロスバスイッチ
Ｃ１００  主記憶制御装置
Ａ１００，Ａ１０１，Ａ１０２，Ａ１０３  ＩＯ装置
Ａ１０４，Ａ１０５  ＩＯバス
Ａ１０６  ＩＯバス制御部
Ａ１０７，Ｂ１０４，Ｘ１０８  エラー検出回路
Ｂ１００，Ｂ１０１  プロセッサ
Ｂ１０２  プロセッサバス
Ｂ１０３  プロセッサバス制御部
Ｘ１０５  クロスバスイッチ入出力制御部
Ｃ１１０  主記憶制御部
Ｃ１１１  符号化回路
Ｃ１１２  復号回路
ｍ１００  主記憶
Ｃ１１６  ログレジスタ
Ｄ１００  モニタ
Ｃ２０２，Ｃ２１１，Ｃ３００，Ｃ３１０  データビットレジスタ
Ｃ２０４  検査ビット生成回路
Ｃ２０６  障害情報レジスタ
Ｃ２０８，Ｃ３５１  障害情報照合テーブル
Ｃ２１０  ＥＸＯＲ回路
Ｃ２１２，Ｃ３０１，Ｃ３１１  検査ビットレジスタ
Ｃ３０４  シンドローム生成回路
Ｃ３０６  シンドロームデコード回路
Ｃ３０８  ビット反転回路
【図１】
0003839215.tif 000002
【図２】
0003839215.tif 000003
【図３】
0003839215.tif 000004
【図４】
0003839215.tif 000005
【図５】
0003839215.tif 000006
【図６】
0003839215.tif 000007
【図７】
0003839215.tif 000008
【図８】
0003839215.tif 000009
【図９】
0003839215.tif 000010
【図１０】
0003839215.tif 000011
【図１１】
0003839215.tif 000012
【図１２】
0003839215.tif 000013
【図１３】
0003839215.tif 000014
【図１４】
0003839215.tif 000015
【図１５】
0003839215.tif 000016
【図１６】
0003839215.tif 000017
【図１７】
0003839215.tif 000018
【図１８】
0003839215.tif 000019