(57)【要約】【課題】開示のシステムは、復旧に要する時間を短縮することを目的とする。【解決手段】現用系プロセッサと予備系プロセッサそれぞれにＣＰＵと主メモリを有し、現用系プロセッサで障害が発生すると再開起動手段を起動して障害要因に応じた再開方法を選択し再開起動を行うデュプレックスプロセッサシステムにおいて、再開起動手段は、現用系プロセッサの主メモリから読み出したデータのエラー訂正及び検出符号で訂正不能な誤りの検出時に、当該データを予備系プロセッサの主メモリから読み出して現用系プロセッサの主メモリに書き込んで修復するメモリ修復手段を有し、メモリ修復手段で現用系プロセッサの主メモリのデータを修復したのち障害要因に応じた再開方法を選択して再開起動を行う。【選択図】  図５
2010061258.tif 000002
【特許請求の範囲】
【請求項１】
現用系プロセッサと予備系プロセッサそれぞれにＣＰＵと主メモリを有し、現用系プロセッサで障害が発生すると再開起動手段を起動して障害要因に応じた再開方法を選択し再開起動を行うデュプレックスプロセッサシステムにおいて、
再開起動手段は、前記現用系プロセッサの主メモリから読み出したデータのエラー訂正及び検出符号で訂正不能な誤りの検出時に、当該データを前記予備系プロセッサの主メモリから読み出して前記現用系プロセッサの主メモリに書き込んで修復するメモリ修復手段を有し、
前記メモリ修復手段で前記現用系プロセッサの主メモリのデータを修復したのち前記障害要因に応じた再開方法を選択して再開起動を行うことを特徴とするデュプレックスプロセッサシステム。
【請求項２】
請求項１記載のデュプレックスプロセッサシステムにおいて、
再開起動手段は、再開起動を行うときに障害割り込みの抑止を行わないことを特徴とするデュプレックスプロセッサシステム。
【請求項３】
現用系プロセッサと予備系プロセッサそれぞれにＣＰＵと主メモリを有し、現用系プロセッサで障害が発生すると障害要因に応じた再開方法を選択し再開起動を行うプロセッサ二重化方法において、
前記現用系プロセッサの主メモリから読み出したデータのエラー訂正及び検出符号で訂正不能な誤りの検出時に、当該データを前記予備系プロセッサの主メモリから読み出して前記現用系プロセッサの主メモリに書き込んで修復し、
前記現用系プロセッサの主メモリのデータを修復したのち前記障害要因に応じた再開方法を選択して再開起動を行うことを特徴とするプロセッサ二重化方法。
【請求項４】
請求項３記載のプロセッサ二重化方法において、
前記再開起動を行うときに障害割り込みの抑止を行わないことを特徴とするプロセッサ二重化方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、現用系プロセッサと予備系プロセッサそれぞれにＣＰＵと主メモリを有するデュプレックスプロセッサシステム及びプロセッサ二重化方法に関する。
【背景技術】
【０００２】
図１は、従来のデュプレックスプロセッサシステムの一例の構成図を示す。同図中、現用系プロセッサ１Ａは、ＣＰＵ２Ａと、主メモリ３Ａと、メモリ交差制御部４Ａと、ＩＯ制御部５Ａと、ＩＯ装置（ハードディスク等）６Ａを有している。また、予備系プロセッサ１Ｂは、ＣＰＵ２Ｂと、主メモリ３Ｂと、メモリ交差制御部４Ｂと、ＩＯ制御部５Ｂと、ＩＯ装置６Ｂを有している。
【０００３】
図１において、現用系プロセッサ１Ａにて障害が発生すると、現用系の主メモリ３Ａを用いてＣＰＵ２Ａで再開起動プログラムが走行する。再開起動プログラムは、障害内容を分析し、最適な再開方法を選択し、速やかに復旧を行うものである。
【０００４】
例えば、プロセッサ１Ａ，１Ｂに二重化されたＩＯ装置６Ａ，６Ｂが接続されている場合、現用系ＩＯ装置６Ａに故障が発生した場合は、予備系ＩＯ装置６Ｂを用いて処理を継続する。
【０００５】
例えば、障害がプログラムミスやデータ誤り等のソフトウェアに起因するソフトウェア要因の場合は、該当プログラムや被疑データの初期化を行い、自系（現用系）にてメモリ再開を行う。
【０００６】
例えば、障害がハード要因（ＣＰＵ故障、メモリ故障など）の場合は、予備系に切り替えてメモリ再開を行う。メモリ再開とは、二重化されている予備系の主メモリ３Ｂを用いて再開を起動するものである。
【０００７】
ところで、メモリデバイスではα線によるソフトエラー（間欠的にビット反転が発生すること）が知られている。一般的な対策として、メモリにＥＣＣ（Ｅｒｒｏｒ  Ｃｏｒｒｅｃｔｉｎｇ  Ｃｏｄｅ：誤り訂正符号）を実装し、ｎ（ｎは１以上の整数）ビットエラーを訂正することで、データの紛失を抑止し処理を継続する方法がある。
【０００８】
しかし、長時間運用を行うシステムの場合、メモリ上のｎビットエラーが蓄積されて、エラー訂正不能なｎ＋１ビットエラーになる場合がある。また、近年、宇宙線（中性子）によりソフトエラーが発生することが知られており、中性子によるソフトエラーは、発生する電荷密度がα線の場合より約１桁大きいため、ｎ＋１ビット以上（場合によっては異なるｎ＋１以上のアドレス）が同時に反転する場合がある。つまり、メモリにＥＣＣを実装しても、ｎ＋１ビットエラーは正しい値に訂正できないため、ソフトエラーによる一時的なメモリ故障を全て回避することは困難である。
【０００９】
図２に、従来のＣＰＵ２Ａで実行する再開起動プログラム処理の一例のフローチャートを示す。同図中、ステップＳ１で割り込みカウンタの値を１だけインクリメントする。なお、割り込みカウンタの値は復旧時にゼロリセットされている。
【００１０】
次に、ステップＳ２で割り込みカウンタが所定値（例えば１０）である場合は、障害割り込みが繰り返し発行され、これ以上、再開起動プログラムは完走できないと判断し、ステップＳ３でＣＰＵ２Ａ及び主メモリ３ＡをＣＰＵ２Ｂ及び主メモリ３Ｂに切り替えた後に、ステップＳ４でローディング再開を起動する。
【００１１】
割り込みカウンタが９以下である場合は、障害要因により再開起動方法が異なるので、ステップＳ５で障害要因を判別する。この結果、ハードディスク等のＩＯ装置６Ａの障害の場合は、ステップＳ６で予備系のＩＯ装置６Ｂに切り替えて、ステップＳ７で中断点復帰を行う。中断点復帰は障害割り込みが発行された時に走行していたＰＣ（プログラムアドレス）に処理を戻すことである。
【００１２】
ソフトウェア要因の場合は、ステップＳ８で現用系の主メモリ３Ａの該当プログラムとデータの初期化を行い、ステップＳ９で自系（現用系）にて再開を起動する。
【００１３】
ハード要因の場合は、ステップＳ１０でＣＰＵ２Ａ及び主メモリ３ＡをＣＰＵ２Ｂ及び主メモリ３Ｂに切り替えた後にステップＳ１１でメモリ再開を起動する。
【００１４】
ところで、現用系メモリ障害が発生した場合に、現用系メモリ診断を行い、修復可能な一時的なメモリ故障と判断できた場合に、予備系主メモリのデータを現用系主メモリにコピーして、現用系処理を継続する方法がある（例えば特許文献１参照）。
【特許文献１】特開平３−２６９７４５号公報
【発明の開示】
【発明が解決しようとする課題】
【００１５】
デュプレックスプロセッサシステムにおいて、現用系プロセッサ１Ａにて障害が発生すると、障害割り込みが発生し、再開起動プログラムが起動される。再開起動プログラム走行中は、障害内容から最適な再開方法を選択する必要があるため、割り込みの抑止は行わない場合がある。これは、例えばソフトウェア要因を検出した後に、このソフトウェア要因の原因となったハード要因を検出する場合もあり得るからである。
【００１６】
このように割り込みの抑止を行わない場合、再開起動プログラムが走行中に再度障害割り込みが発生し、再開起動プログラムが再び起動される場合があり、障害状況によっては、これを繰り返してしまう場合がある。更に、故障が回復しない場合はこれを無限に繰り返し、システムが停止する場合があるという問題がある。
【００１７】
この問題に対する対策として、障害割り込みが繰り返された場合に、その繰り返し回数を計測し、繰り返し回数が一定回数以上となると再開起動プログラムの走行をあきらめて、予備系に切り替えて全てのプログラムやデータの初期化を行うローディング再開を行う方法がある。
【００１８】
予備系に切り替えてメモリ再開を行う方法では、ソフトウェア要因を復旧することができない。また、再開起動プログラムが走行できず初期化を行う該当プログラムや被疑データを絞り込むことができない場合は、安全に復旧するために全てのプログラムやデータの初期化を行うローディング再開が必要である。
【００１９】
一定回数まで再開起動プログラムが繰り返された後にローディング再開を行う場合は、最初に障害が発生してからローディング再開起動までの時間と、全てのプログラムやデータの初期化の時間がかかるため、復旧するまでに多くの時間が必要となる。また、処理中のデータが初期化されるため、例えばデュプレックスプロセッサシステムを交換機に用いた場合は通信中の呼制御データが失われ通信を継続できない等のシステムへの影響が大きいという問題があった。
【００２０】
現用系にてソフトエラーによる一時的なメモリ障害が発生した場合も、障害割り込みが発生し、再開起動プログラムが起動される。ＥＣＣを実装していてもｎ＋１ビットエラーが発生する場合は正しい値に訂正できずメモリ障害となる場合がある。
【００２１】
また、再開起動プログラムの走行中にアクセスを行うアドレスで一時的なメモリ障害が発生した場合は、再開起動プログラムが無限に繰り返され、その結果、影響の大きなローディング再開となるという問題があった。
【００２２】
また、通常デュプレックスシステムにおける保守運用では、現用系の障害により予備系に切り替わって再開起動し、旧現用系で走行した再開起動プログラムにより旧現用系のハード故障が判断できた場合は、旧現用系装置（ハード故障部分）の交換を行うことで故障要因を取り除き、システムの運用を続けることができる。しかし、再開起動プログラムの走行中にアクセスを行うアドレスでソフトエラーによる一時的なメモリ障害が発生した場合は、再開起動プログラムが完走できないため、旧現用系の故障要因がわからず旧現用系装置（プロセッサ１Ａ）全体を交換しなければならないという問題もあった。
【００２３】
しかし、例えば特許文献１で知られた方法では、メモリ試験プログラムが走行中にアクセスを行うアドレスで（例えばスタック領域やプログラム領域などを含めて）、一時的なメモリ故障が発生した場合は、再度障害割り込みが発生してしまうため、障害割り込みが無限に繰り返されてしまう事象に対して回避することができない。また、再開起動までの間にメモリ診断を行うための時間が必要であるため、再開までの時間がかかるといった問題がある。
【００２４】
開示のシステムは、復旧に要する時間を短縮することを目的とする。
【課題を解決するための手段】
【００２５】
開示の一実施態様によるデュプレックスプロセッサシステムは、現用系プロセッサと予備系プロセッサそれぞれにＣＰＵと主メモリを有し、現用系プロセッサで障害が発生すると再開起動手段を起動して障害要因に応じた再開方法を選択し再開起動を行うデュプレックスプロセッサシステムにおいて、
前記現用系プロセッサの主メモリから読み出したデータのエラー訂正及び検出符号で訂正不能な誤りの検出時に、当該データを前記予備系プロセッサの主メモリから読み出して前記現用系プロセッサの主メモリに書き込んで修復するメモリ修復手段を有し、
前記メモリ修復手段で前記現用系プロセッサの主メモリのデータを修復したのち前記障害要因に応じた再開方法を選択して再開起動を行う。
【００２６】
また、開示の一実施態様によるプロセッサ二重化方法は、現用系プロセッサと予備系プロセッサそれぞれにＣＰＵと主メモリを有し、現用系プロセッサで障害が発生すると障害要因に応じた再開方法を選択し再開起動を行うプロセッサ二重化方法において、
前記現用系プロセッサの主メモリから読み出したデータのエラー訂正及び検出符号で訂正不能な誤りの検出時に、当該データを前記予備系プロセッサの主メモリから読み出して前記現用系プロセッサの主メモリに書き込んで修復し、
前記現用系プロセッサの主メモリのデータを修復したのち前記障害要因に応じた再開方法を選択して再開起動を行う。
【発明の効果】
【００２７】
開示のシステムによれば、復旧に要する時間を短縮することができる。
【発明を実施するための最良の形態】
【００２８】
以下、図面に基づいて実施形態について説明する。
【００２９】
＜実施形態＞
図３は、デュプレックスプロセッサシステムの一実施形態の構成図を示す。同図中、現用系プロセッサ１１Ａは、ＣＰＵ１２Ａと、主メモリ１３Ａと、メモリ交差制御部１４Ａと、ＩＯ制御部１５Ａと、ＩＯ装置（ハードディスク等）１６Ａを有している。また、予備系プロセッサ１１Ｂは、ＣＰＵ１２Ｂと、主メモリ１３Ｂと、メモリ交差制御部１４Ｂと、ＩＯ制御部１５Ｂと、ＩＯ装置１６Ｂを有している。
【００３０】
現用系のＣＰＵ１２Ａと予備系のＣＰＵ１２Ｂは、再開起動プログラムを実行する再開起動手段２０Ａ，２０Ｂを有しており、互いに再開起動通知を行う。
【００３１】
また、ＣＰＵ１２Ａと主メモリ１３Ａ，メモリ交差制御部１４Ａ，ＩＯ制御部１５Ａとの間はプロセッサバス１７Ａで接続されており、これらの間を転送されるデータにはＥＣＣが付与されている。
【００３２】
同様に、ＣＰＵ１２Ｂと主メモリ１３Ｂ，メモリ交差制御部１４Ｂ，ＩＯ制御部１５Ｂとの間はプロセッサバス１７Ｂで接続されており、これらの間を転送されるデータにはＥＣＣが付与されている。
【００３３】
また、メモリ交差制御部１４Ａ，１４ＢそれぞれはＤＭＡ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）転送機能を有する。
【００３４】
現用系のＩＯ制御部１５Ａには、現用系のＩＯ装置１６Ａが接続されており、ＩＯ制御部１５Ａは自系ＩＯ装置１６Ａを制御し、また、ＩＯ制御部１５Ａは予備系のＩＯ制御部１６Ｂを経由して予備系のＩＯ装置１６Ｂも制御する。ＩＯ制御部１５Ａは、ＣＰＵの現用系予備系とは別にＩＯ装置の現用系予備系を管理している。現用系ＩＯ装置１６Ａに障害が発生した場合は、ＩＯ制御部１５ＡがＣＰＵ１２Ａに障害割り込みを発行する。ＣＰＵ１２ＡはＩＯ制御部１５Ａに対しＩＯ装置１６Ａ，１６Ｂの切り替えを行うことができる。
【００３５】
同様に、予備系のＩＯ制御部１５Ｂには、予備系のＩＯ装置１６Ｂが接続されており、ＩＯ制御部１５Ｂは自系ＩＯ装置１６Ｂを制御し、また、ＩＯ制御部１５Ｂは現用系のＩＯ制御部１６Ａを経由して現用系のＩＯ装置１６Ｂも制御する。ＩＯ制御部１５Ｂは、ＣＰＵの現用系予備系とは別にＩＯ装置の現用系予備系を管理している。予備系ＩＯ装置１６Ｂに障害が発生した場合は、ＩＯ制御部１５ＢがＣＰＵ１２Ｂに障害割り込みを発行する。ＣＰＵ１２ＢはＩＯ制御部１５Ｂに対しＩＯ装置１６Ｂ，１６Ａの切り替えを行うことができる。
【００３６】
図３に、通常時のデータ書き込みルートを一点鎖線で示す。すなわち、現用系ＣＰＵ１２Ａから主メモリ１３Ａへのデータの書き込みは、現用系主メモリ１３Ａに対して行われ、これと共にメモリ交差制御部１４Ａ，１４Ｂを経由して予備系主メモリ１３Ｂにも上記データの書き込みが行われる。
【００３７】
また、現用系ＣＰＵ１２Ａは、現用系主メモリ１３Ａからデータの読み出しを行う。現用系ＣＰＵ１２Ａが主メモリ１３Ａからデータを読み出した時に２ビットエラーを検出した場合は、ＣＰＵ１２Ａは障害割り込みを発行する。ここで、現用系ＣＰＵ１２Ａで処理実行中に、未実装アドレスアクセス等のソフトウェア要因の障害を検出した場合は、ＣＰＵ１２Ａ内部で障害割り込みを発行する。
【００３８】
図４に、メモリ修復時のデータ読み出しと書き込みルートを一点鎖線で示す。すなわち、ＣＰＵ１２Ａの指示によりメモリ交差制御部１４ＡのＤＭＡ転送機能が起動され、メモリ交差制御部１４Ａはメモリ交差制御部１４Ｂを通して予備系主メモリ１３Ｂのデータを読み出し、現用系の主メモリ１３Ａに書き込む。
【００３９】
＜再開起動プログラム＞
図５に、再開起動プログラム処理の一実施形態のフローチャートを示す。同図中、ステップＳ２１で割り込みカウンタの値を１だけインクリメントする。なお、割り込みカウンタの値は復旧時にゼロリセットされている。
【００４０】
次に、ステップＳ２２で割り込みカウンタが所定値（例えば１０）である場合は、障害割り込みが繰り返し発行され、これ以上再開起動プログラムは完走できないと判断し、ステップＳ２３でＣＰＵ１２Ａ及び主メモリ１３ＡをＣＰＵ１２Ｂ及び主メモリ１３Ｂに切り替えた後に、ステップＳ２４でローディング再開を起動する。
【００４１】
割り込みカウンタが９以下である場合は、ステップＳ２５でＣＰＵ１２Ａは主メモリ１３Ｂから読み出したデータに付加されているＥＣＣから、読み出しデータにｎ＋１ビットエラーを検出したか否かを判別する。
【００４２】
ＣＰＵ１２Ａが主メモリ１３Ａの読み出しデータにｎ＋１ビットエラーを検出した場合は、ステップＳ２６で履障アドレス（ｎ＋１ビットエラーを検出したアドレス）のデータ修復を行う。データ修復の方法は、メモリ交差制御部１４Ａに予備系の主メモリ１３Ｂから現用系の主メモリ１３ＡへのＤＭＡ転送を起動することで実現する。なお、読み出しデータにｎビットエラーがある場合には、ＥＣＣを用いて読み出しデータのｎビットエラーを訂正することはもちろんである。
【００４３】
この後、障害要因により再開起動方法が異なるので、ステップＳ２７で障害の発生位置や発生状況等から障害要因を判別する。
【００４４】
この結果、ハードディスク等のＩＯ装置１６Ａの障害の場合は、ステップＳ２８で予備系のＩＯ装置１６Ｂに切り替えて、ステップＳ２９で中断点復帰を行う。中断点復帰は障害割り込みが発行された時に走行していたＰＣ（プログラムアドレス）に処理を戻すことである。
【００４５】
ソフトウェア要因の場合は、ステップＳ３０で現用系の主メモリ１３Ａの該当プログラムとデータの初期化を行い、ステップＳ３１で自系（現用系）にて再開を起動する。
【００４６】
ハード要因の場合は、ステップＳ３２でＣＰＵ１２Ａ及び主メモリ１３ＡをＣＰＵ１２Ｂ及び主メモリ１３Ｂに切り替えた後にステップＳ３３でメモリ再開を起動する。
【００４７】
これにより、現用系主メモリ１３Ａにてソフトエラーによる一時的なメモリ障害が発生した場合は、予備系主メモリ１３Ｂからデータを読み出して現用系主メモリ１３Ａに書き込むことでデータ修復を行った後に、復旧方法を選択し再開を起動するため、再開起動プログラム走行中にアクセスを行うアドレスで一時的なメモリ障害が発生した場合でも、再開起動プログラムが走行できるようになる。
【００４８】
このため、ソフトウェア要因を検出した後に、このソフトウェア要因の原因となったハード要因を検出する場合があるために再開起動プログラム走行中の割り込みの抑止を行わない制御を行っていても、メモリ障害（ハード要因）と判断することができるようになるので、影響の大きなローディング再開ではなく、メモリ再開で復旧させることができるようになる。
【００４９】
メモリ再開で復旧させることができることから、障害発生から短時間で復旧させることが可能となり、また、処理中のデータを用いて処理を継続することができるようになる。
【００５０】
また、上記実施形態では、再開起動プログラムの最初の段階で履障アドレスのデータ修復を行うため、メモリ診断を必要とせず、その後に走行する再開起動プログラムでメモリ障害が発生することを回避できる。
【００５１】
なお、宇宙線（中性子）の影響によるソフトエラーにより異なる複数のアドレスでｎ＋１ビットエラーが発生する可能性があり、それが再開起動プログラム走行中にアクセスを行うアドレスで発生した場合は、再開起動プログラム走行中に再度メモリ障害が発生するが、次回の再開起動プログラム走行時にステップＳ２６で復旧する。このような場合を考慮し、割り込みカウンタを例えば１０に設定し許容している。
（付記１）
現用系プロセッサと予備系プロセッサそれぞれにＣＰＵと主メモリを有し、現用系プロセッサで障害が発生すると再開起動手段を起動して障害要因に応じた再開方法を選択し再開起動を行うデュプレックスプロセッサシステムにおいて、
再開起動手段は、前記現用系プロセッサの主メモリから読み出したデータのエラー訂正及び検出符号で訂正不能な誤りの検出時に、当該データを前記予備系プロセッサの主メモリから読み出して前記現用系プロセッサの主メモリに書き込んで修復するメモリ修復手段を有し、
前記再開起動手段は、前記メモリ修復手段で前記現用系プロセッサの主メモリのデータを修復したのち前記障害要因に応じた再開方法を選択して再開起動を行うことを特徴とするデュプレックスプロセッサシステム。
（付記２）
付記１記載のデュプレックスプロセッサシステムにおいて、
再開起動手段は、再開起動を行うときに障害割り込みの抑止を行わないことを特徴とするデュプレックスプロセッサシステム。
（付記３）
現用系プロセッサと予備系プロセッサそれぞれにＣＰＵと主メモリを有し、現用系プロセッサで障害が発生すると障害要因に応じた再開方法を選択し再開起動を行うプロセッサ二重化方法において、
前記現用系プロセッサの主メモリから読み出したデータのエラー訂正及び検出符号で訂正不能な誤りの検出時に、当該データを前記予備系プロセッサの主メモリから読み出して前記現用系プロセッサの主メモリに書き込んで修復し、
前記現用系プロセッサの主メモリのデータを修復したのち前記障害要因に応じた再開方法を選択して再開起動を行うことを特徴とするプロセッサ二重化方法。
（付記４）
付記１記載のデュプレックスプロセッサシステムにおいて、
前記再開起動手段は、前記障害要因がハード要因の場合にＣＰＵ及び主メモリを予備系プロセッサに切り替えてメモリ再開を行うことを特徴とするデュプレックスプロセッサシステム。
（付記５）
付記１記載のデュプレックスプロセッサシステムにおいて、
前記再開起動手段は、前記障害要因がソフトウェア要因の場合に該当プログラムとデータの初期化を行って自系で再開を行うことを特徴とするデュプレックスプロセッサシステム。
【図面の簡単な説明】
【００５２】
【図１】従来のデュプレックスプロセッサシステムの一例の構成図である。
【図２】従来の再開起動プログラム処理の一例のフローチャートである。
【図３】デュプレックスプロセッサシステムの一実施形態の構成図である。
【図４】メモリ修復時のデータ読み出しと書き込みルートを示す図である。
【図５】再開起動プログラム処理の一実施形態のフローチャートである。
【符号の説明】
【００５３】
１１Ａ  現用系プロセッサ
１１Ｂ  予備系プロセッサ
１２Ａ，１２Ｂ  ＣＰＵ
１３Ａ，１３Ｂ  主メモリ
１４Ａ，１４Ｂ  メモリ交差制御部
１５Ａ，１５Ｂ  ＩＯ制御部
１６Ａ，１６Ｂ  ＩＯ装置
１７Ａ，１７Ｂ  プロセッサバス
２０Ａ，２０Ｂ  再開起動手段
【図１】
2010061258.tif 000003
【図２】
2010061258.tif 000004
【図３】
2010061258.tif 000005
【図４】
2010061258.tif 000006
【図５】
2010061258.tif 000007