(57)【要約】  【課題】  コピーバック方式採用の二重化構成のプロセッサの障害発生時のキャッシュフラッシュ実行中にキャッシュエラーが発生した場合に障害処理が繰り返され、正常処理のプログラムの起動が再開できない問題がある。  【解決手段】  置換フラッシュを行う場合に、障害発生を表示するフラグを設定し、障害中のフラグの表示がある場合にキャッシュエラーが発生しても、置換アドレスの初期設定、及びフラグの障害発生の再設定の手順をスキップすることにより、障害処理の繰り返しを回避してプログラムの再開起動を行う。【選択図】図２
2007328543.tif 000002
【特許請求の範囲】
【請求項１】
運用系プロセッサと待機系プロセッサよる二重化構成を行い、運用系プロセッサの障害発生時に障害処理中か否かを示す障害フラグに障害処理中を表示してキャッシュフラッシュを行う二重化構成プロセッサ装置において、前記キャッシュフラッシュ実行中にキャッシュエラーが発生した場合の二重化構成プロセッサ装置の障害処理方法であって、
運用系プロセッサは前記障害発生時に、前記キャッシュフラッシュを開始する開始時点における前記障害表示フラグを確認し、
前記開始時点において障害が発生していない場合は、キャッシュフラッシュを行う前記運用系プロセッサの主メモリの置換アドレスの初期設定と前記障害フラグに障害中である表示の設定を行い、
前記キャッシュフラッシュを行うメモリに前記キャッシュフラッシュを順次行い、
前記運用系プロセッサの主メモリの情報を前記待機系プロセッサの主メモリへの転送を行い、
前記運用系プロセッサと前記待機系プロセッサの切り替えを行い、
プログラムの再開起動を行い、
前記開始時点において障害が発生している場合は、前記キャッシュフラッシュの実行と前記待機系プロセッサへの転送の実行と、
を行い前記運用系プロセッサと前記待機系プロセッサの切り替えを行いプログラムの再開起動を行うことを特徴とする前記キャッシュフラッシュ実行中にキャッシュエラーが発生した場合の二重化構成プロセッサ装置の障害処理方法。
【請求項２】
運用系プロセッサと待機系プロセッサの二重化構成を行い、運用系プロセッサの障害発生時に障害処理中か否かを示す障害フラグに障害処理中を表示してキャッシュフラッシュを行う二重化構成プロセッサ装置であって、
前記運用系プロセッサは前記障害発生時に、前記キャッシュフラッシュを開始する開始時点における前記障害表示フラグの表示の有無を確認する手段と、
前記開始時点において障害が発生していない場合は、キャッシュフラッシュを行う前記運用系プロセッサの主メモリの置換アドレスの初期設定と前記障害フラグに障害中である表示の設定を行う手段と
前記キャッシュフラッシュを行うメモリに前記キャッシュフラッシュを順次行う手段と、
前記運用系プロセッサの主メモリの情報を前記待機系プロセッサの主メモリへの転送を行う手段と、
前記運用系プロセッサと前記待機系プロセッサの切り替えを行いプログラムの再開起動を行う手段と、
を備えたことを特徴とする二重化構成プロセッサ装置。
【請求項３】
請求項２記載の二重化構成プロセッサ装置であって、さらに前記運用系プロセッサ及び前記待機系プロセッサに、障害発生時に障害処理を走行するプログラムを非キャッシュで走行するアドレス空間に格納する手段を備えたことを特徴とする請求項２記載の二重化構成プロセッサ装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はコピーバック方式を採用した二重化構成プロセッサの障害処理方式に係り、特にキャッシュエラー発生時に繰り返し障害処理実行を防止するキャッシュエラー防止に関するものである。
【背景技術】
【０００２】
信頼性向上の観点よりプロセッサ装置を二重化構成し、０系、１系としてＣＰＵのプログラムを走行させ、通信システム、情報処理システムなどの障害管理を行っている。図１は本発明の二重化構成プロセッサ装置を示す図である。０系プロセッサ１、１系プロセッサ２を使用した二重化構成である。０系プロセッサ１はＣＰＵ１１、キャッシュメモリ１２、メモリコントローラ１３、主メモリ１４、メモリ交差コントローラ１５を備えている。１系プロセッサ２も同様にＣＰＵ２１、キャッシュメモリ２２、メモリコントローラ２３、主メモリ２４、メモリ交差コントローラ２５を備える。具体的動作については後述する。
【０００３】
ＣＰＵはコピーバックキャッシュ方式を採用している。コピーバックキャッシュ方式（ライトバックキャッシュ方式とも言う）ではメモリへの書き込み命令を実行する時、書き込みデータをキャッシュメモリには書き込むが、主メモリへの書き込みを行なわない方式である。また、ＣＰＵが実行するキャッシュフラッシュにおいては、キャッシュメモリに書き込まれたデータを主メモリに書き戻す動作（以下ライトバック）が必要となる。キャッシュフラッシュとはキャッシュメモリの情報の一部、あるいは全てを開放することである。
【０００４】
図１において、０系プロセッサが運用中で（アクティブ、以下ＡＣＴと表現）、１系プロセッサが待機中（スタンドバイ、以下ＳＢＹと表現）であると仮定した場合に、０系ＣＰＵでアプリケーションプログラム処理が走行する二重化構成のプロセッサ装置において、ＡＣＴ系ＣＰＵのプログラムが走行することによりＡＣＴ系のキャッシュメモリ内のデータの入れ替えが発生した場合に、すでにＡＣＴ系のキャッシュメモリに更新された書き込みデータが保存されている場合は、ＣＰＵはメモリコントローラを経由してＡＣＴ系主メモリに更新されたデータのライトバックを行う。
【０００５】
このライトバック時のライトアクセスに対し、ＡＣＴ系の主メモリにキャッシュメモリのデータを書き込むと同時にＡＣＴ系メモリ交差コントローラはＳＢＹ系交差コントローラにライトアクセスを転送する。ＳＢＹ系メモリ交差コントローラはＡＣＴから転送されたライトアクセスをメモリ制御コントローラへ転送し、メモリコントローラはＳＢＹ系主メモリにデータを書き込む。このようにして、ＡＣＴ系主メモリとＳＢＹ系主メモリの内容の一致性を保つことでメモリ二重化を行なっている。
【０００６】
以上説明した二重化構成のプロセッサ装置にハードウエア障害が発生した場合、プロセッサ装置内蔵の障害処理プログラムが走行する。障害処理プログラムは障害の解析から障害プログラムで定義されている障害処理を実行する。障害処理としては、例えば、障害解析結果からＡＣＴ系ハードウエア障害と判断した場合は、キャッシュフラッシュの実施と０系／１系のプロセッサの切り替えなどの処理をシステムの運用に応じて実行する。
【０００７】
障害処理の重要な処理事項として、前述したＡＣＴ系キャッシュメモリのデータの主メモリへのライトバックがある。ＡＣＴ系キャッシュメモリ上のデータをＡＣＴ系主メモリにライトバックし、また、ＳＢＹ系の主メモリにもライトアクセスを転送する事によりＡＣＴ系主メモリとＳＢＹ系主メモリの内容を一致させた後にＡＣＴ系の切り替えを行なう。
【０００８】
新ＡＣＴ系では、旧ＡＣＴ系のキャッシュメモリ上の書き込みデータを含む主メモリの内容が引継がれていることを期待し新ＡＣＴ系主メモリの内容を用いて、アプリケーションプログラムの走行の再開を行なう。
【０００９】
キャッシュメモリのデータを読み出したときにキャッシュメモリ上のデータエラー（ビット化け）などにより、正しくデータを読み出せずキャッシュエラーとなる場合がある。キャッシュエラーは例えば、データに付加したパリティービットのパリティチェックを行ない、パリティーエラーを検出した場合にキャッシュエラーとして認識できる。
【００１０】
ＡＣＴ系でキャッシュエラーが発生した場合は、キャッシュメモリのハードウエア障害の可能性があり、障害処理を行う。障害処理として、キャッシュフラッシュを行なうが、キャッシュエラーが発生したデータが更新されたデータである時は再度キャッシュエラーとなり障害処理が繰り返されてしまう。これにより障害処理が終了せず、プログラムの走行再開ができなくなる問題がある。
【００１１】
一方、キャッシュフラッシュの方法として置換フラッシュがある。置換フラッシュは、主メモリ上に割り当てられた特定のアドレスをプログラムにより読み出すことにより、フラッシュを行なう方法である。後での説明上置換フラッシュの動作の説明を行う。
【００１２】
図５は置換フラッシュの動作を説明する図である。キャッシュ構成がダイレクトマッピングでキャッシュサイズが２ＭＢｙｔｅ、ブロックサイズを６４Ｂｙｔｅとして説明する。
主メモリのアドレスはＴａｇアドレス相当部とＯｆｆｓｅｔアドレス相当部とブロック内アドレスで構成されている。主メモリには、置換フラッシュ用の領域として２ＭＢｙｔｅの空間を割り付けてある。
【００１３】
プログラムにより置換フラッシュ用の領域のメモリを読み出すことにより、例えば、キャッシュメモリのアドレス「Ｔａｇ＝Ｂ、Ｏｆｆｓｅｔ＝３」に更新されたデータ＝０１２３４５６が保存されていた場合に、置換フラッシュ用の領域「Ｔａｇ＝Ｄ、Ｏｆｆｓｅｔ＝３」を読み出すことで、置換フラッシュされた後の各メモリの情報は以下となる。
１）主メモリのキャッシュフラッシュ対応領域のアドレス「Ｏｆｆｓｅｔ＝３、Ｔａｇ＝Ｄ」、データ＝００００００００がキャッシュメモリのアドレス「Ｏｆｆｓｅｔ＝３、Ｔａｇ＝Ｂ」のデータとなる。
２）主メモリの元のデータ＝１１１１１１１１が更新され、キャッシュメモリのアドレス「Ｏｆｆｓｅｔ＝３、Ｔａｇ＝Ｂ」のデータ＝０１２３４５６７が主メモリのアドレス「Ｏｆｆｓｅｔ＝３、Ｔａｇ＝Ｂ」のデータとなる。
【００１４】
また、ＣＰＵはプログラムが走行する環境としてキャッシュ有効な状態で走行する場合と、キャッシュ無効な状態で走行する場合がある。通常はキャッシュ有効な状態で走行しており、キャッシュメモリが使われる。このため、障害処理過程の中でキャッシュの中にある更新されたデータを主メモリに反映するためにキャッシュフラッシュを行なう必要があるが、障害処理プログラムの走行中にキャッシュエラーが発生した場合は、再度キャッシュエラーとなり、繰り返して障害処理が行われる。そのため障害処理が終了せず、プログラムの走行再開ができなくなる問題がある。
【００１５】
図４は従来の二重化構成プロセッサ装置の障害処理手順を示す図である。手順を述べる。ここではＣＰＵのキャッシュ構成をキャッシュサイズ２ＭＢｙｔｅ、ブロックサイズ６４Ｂｙｔｅとし、置換フラッシュを行う例である。
Ｓ１１：置換フラッシュアドレスの初期設定としてＯｆｆｓｅｔ＝０を設定する。Ｏｆｆｓｅｔはキャッシュメモリの１ブロックのアドレスエリアである。
Ｓ１２：１ライン分の置換フラッシュアドレスを行うためＯｆｆｓｅｔを読む。
Ｓ１３：置換フラッシュアドレスの更新としてＯｆｆｓｅｔ＝Ｏｆｆｓｅｔ+６４を行う。
Ｓ１４：フラッシュの完了をＯｆｆｓｅｔが２ＭＢｙｔｅであるか否かで確認する。完了していない場合いはＳ１２に戻り繰り返す。
Ｓ１５、Ｓ１６：Ｏｆｆｓｅｔが２ＭＢｙｔｅなら、フラッシュの完了として系を切り替えてプログラムの起動を再開する。
【００１６】
しかしながら、置換フラッシュ時にエラーが発生する場合がある。このため、再度障害トラップが発生するのでトラップハンドラを経由して障害処理は起動してしまう。対策として、再開起動を優先しトラップハンドラでキャッシュフラッシュを行わない処理を行なうこともできるが、その場合は、キャッシュメモリ上の更新されたデータが主メモリに反映されないので、ＡＣＴ系を切り替えて再開を起動しても正常な処理は望めない。なお、トラップハンドラは障害発生時の障害検出から障害処理起動、終了までの手順を処理するＣＰＵの機能であり、障害発生時、障害を検出すると障害処理手順が起動し障害処理を自動的に行う。
【００１７】
また、置換フラッシュを実行中にキャッシュエラーが発生する可能性がある。この場合はトラップハンドラが動作し障害処理が起動してしまう問題が生じる。
【００１８】
特許文献１ではライトバック方式の二重化構成のプロセッサにおける障害発生に伴う系の切り替え時、ＡＣＴ系のキャッシュフラッシュが完了済みの場合は第１フェーズ再起動を行い、キャッシュフラッシュが未完了の場合は、第２フェーズ再起動を行うことにより迅速に再開処理を行う技術を開示している。しかしながら、両プロセッサのメモリにデータ整合性が無く、フラッシュ実行中にエラーが発生した場合の障害処理技術は開示されていない。
【特許文献１】特開２００３−２２３３３８号公報
【発明の開示】
【発明が解決しようとする課題】
【００１９】
解決しようとする課題はコピーバック方式採用の二重化構成のプロセッサの障害発生時のキャッシュフラッシュ実行中に、キャッシュエラーが発生した場合に障害処理が繰り返され、正常処理のプログラムの起動が再開できない問題である。
【課題を解決するための手段】
【００２０】
第１の発明は、運用系プロセッサと待機系プロセッサよる二重化構成を行い、運用系プロセッサの障害発生時に障害処理中か否かを示す障害フラグに障害処理中を表示してキャッシュフラッシュを行う二重化構成プロセッサ装置において、前記キャッシュフラッシュ実行中にキャッシュエラーが発生した場合の二重化構成プロセッサ装置の障害処理方法である。
【００２１】
運用系プロセッサは前記障害発生時に、前記キャッシュフラッシュを開始する開始時点における前記障害表示フラグを確認し、前記開始時点において障害が発生していない場合は、キャッシュフラッシュを行う前記運用系プロセッサの主メモリの置換アドレスの初期設定と前記障害フラグに障害中である表示の設定を行い、前記キャッシュフラッシュを行うメモリに前記キャッシュフラッシュを順次行い、前記運用系プロセッサの主メモリの情報を前記待機系プロセッサの主メモリへの転送を行い、前記運用系プロセッサと前記待機系プロセッサの切り替えを行い、プログラムの再開起動を行い、前記開始時点において障害が発生している場合は、前記キャッシュフラッシュの実行と前記待機系プロセッサへの転送の実行と、を行い前記運用系プロセッサと前記待機系プロセッサの切り替えを行いプログラムの再開起動を行う。
【００２２】
第２の発明は、運用系プロセッサと待機系プロセッサの二重化構成を行い、運用系プロセッサの障害発生時に障害処理中か否かを示す障害フラグに障害処理中を表示してキャッシュフラッシュを行う二重化構成プロセッサ装置である。
【００２３】
二重化構成プロセッサ装置は、前記運用系プロセッサは前記障害発生時に、前記キャッシュフラッシュを開始する開始時点における前記障害表示フラグの表示の有無を確認する手段と、前記開始時点において障害が発生していない場合は、キャッシュフラッシュを行う前記運用系プロセッサの主メモリの置換アドレスの初期設定と前記障害フラグに障害中である表示の設定を行う手段と、前記キャッシュフラッシュを行うメモリに前記キャッシュフラッシュを順次行う手段と、前記運用系プロセッサの主メモリの情報を前記待機系プロセッサの主メモリへの転送を行う手段と、前記開始時点において障害が発生している場合は、前記キャッシュフラッシュの実行と前記待機系プロセッサへの転送を行う手段と、前記運用系プロセッサと前記待機系プロセッサの切り替えを行いプログラムの再開起動を行う手段と、を備える。
【００２４】
第３の発明は、第２のプロセッサ装置にさらに前記運用系プロセッサ及び前記待機系プロセッサに、障害発生時に障害処理を走行するプログラムを非キャッシュで走行するアドレス空間に格納する手段を備える。
【発明の効果】
【００２５】
本発明により、二重化構成のプロセッサでのキャッシュエラー発生による障害処理中に再度キャッシュエラーが発生しても、キャッシュフラッシュを継続することができ、キャッシュメモリのデータを主メモリに反映してプログラムの再開ができる。また、障害処理プログラムの走行アドレス空間を非キャッシュの状態で走行することにより、障害処理プログラムの走行により使われていたキャッシュに対しキャッシュエラーの発生がなくなり障害処理を繰り返すことなくプログラムの再開ができる。
【発明を実施するための最良の形態】
【００２６】
（実施例１）
一部重複するが、図１で示す二重化構成のプロセッサ装置の説明を行う。０系プロセッサ１、１系プロセッサ２を使用した二重化構成である。０系プロセッサ１はＣＰＵ１１、
キャッシュメモリ１２、メモリコントローラ１３、主メモリ１４、メモリ交差コントローラ１５を備えている。１系プロセッサ２も同様にＣＰＵ２１、キャッシュメモリ２２、メモリコントローラ２３、主メモリ２４、メモリ交差コントローラ２５を備える。主メモリは大量のデータ（プログラム及びデータ）を格納・保持し、キャッシュメモリは主メモリの一部のデータを格納・保持している。
【００２７】
０系プロセッサ１はプロセッサバス１６を介してメモリコントローラ１３、メモリ交差コントローラ１５がＣＰＵ１１と接続し、キャッシュメモリ１２はＣＰＵ１１と接続している。また、メモリコントローラ１５と主メモリ１４が接続している。１系プロセッサも同様にプロセッサバス２６を介してＣＰＵ２１とメモリコントローラ２３、メモリ交差コントローラ２５が接続し、ＣＰＵ２１とキャッシュメモリ２２が接続している。また、両プロセッサはメモリ交差バス３１を介してメモリ交差コントローラ１５、メモリ交差コントローラ２５が接続している。
【００２８】
このような二重化プロセッサの構成により、ＣＰＵは主メモリあるいはキャッシュメモリに保持するプログラムを読み込み、命令に対応した処理を実行する。キャッシュメモリはＣＰＵに必要なデータを高速に処理する。メモリコントローラはＣＰＵの制御の下で主メモリへのリード・ライトのメモリアクセス制御を行う。また、メモリ交差コントローラは両プロセサッサの連携した制御の下の両プロセッサのメモリのデータのやり取りを行う。例えば、ＡＣＴ系プロセッサの主メモリへのライトバックの転送を抽出し、ＳＢＹ系プロセッサの主メモリにＡＣＴ系キャッシュメモリのデータの書き込みを行う。
【００２９】
図２は本発明の二重化構成プロセッサ装置の障害処理手順を示す図である。障害処理におけるキャッシュフラッシュを実行中にキャッシュエラーが発生した場合でも障害処理中である状態を認識してキャッシュフラッシュを継続し、プログラムの起動再開を実行する手順を示している。
【００３０】
なお、図４の手順と同様に、ＣＰＵのキャッシュ構成をキャッシュサイズ２ＭＢｙｔｅ、ブロックサイズ６４Ｂｙｔｅとし、キャッシュフラッシュは置換フラッシュ方法とする。
Ｓ１：ＣＰＵは、ハードウエア故障を検出すると障害発生のフラグが「ＯＮ」であるか確認し、「ＯＦＦ」の場合はＳ２に進む。一方「ＯＮ」の場合はＳ４に進む。
【００３１】
一般にＣＰＵにハードウエア障害が発生した場合、前述したようにトラップハンドラにより障害処理が起動する。この障害処理の起動により障害発生のフラグの確認動作が可能となる。この障害処理起動はＣＰＵの障害処理で通常実行されている事項であり、説明は省略する。
Ｓ２：置換アドレスの初期設定としてＯｆｆｓｅｔ＝０を設定する。
Ｓ３：障害処理中を表示するフラグ＝ＯＮの設定を行う。
Ｓ４：１ライン分の置換フラッシュを行うためにＯｆｆｓｅｔの値を読み、そのラインの置換フラッシュを行う。
【００３２】
Ｓ１において、フラッグが「ＯＮ」の場合、Ｓ２の手順、Ｓ３の手順をスキップする。これにより、初回の障害処理時に置換フラッシュアドレスが初期設定され、置換フラッシュを実行する。２回目以降の障害処理中に再度障害処理が起動してもこのＳ２、Ｓ３手順のスキップにより置換アドレスの初期設定は行われないので、障害処理中であることを認識してキャッシュフラッシュを継続できる。さらに、従来の手順で問題のあった主メモリに更新データが反映されない事によるＡＣＴ系を切り替えての再開起動ができない問題は回避できる。
Ｓ５：次のラインの置換フラッシュを行うための置換フラッシュアドレスを更新してＯｆｆｓｅｔ＝Ｏｆｆｓｅｔ+６４とする。
Ｓ６：全てのラインの置換フラッシュを終えたかＯｆｆｓｅｔの値で確認する。Ｏｆｆｓｅｔの値が２ＭＢｙｔｅの場合は全てのラインの置換フラッシュ終了と見なし、Ｓ７に進み、そうでない場合はＳ４に戻り次のラインの置換フラッシュ処理を行う。
Ｓ７、Ｓ８：プロセッサの系の切り替えを行い、起動を再開する。
（実施例２）
図３は本発明の二重化構成プロセッサの他の実施例を示す図である。
図１で示した０系プロセッサ１の構成のプロセッサバス１６にさらにフラッシュＲＯＭ１７が接続された構成となる。１系プロセッサ２も同様にフラッシュＲＯＭ２７をプロセッサバス２６に接続した構成である。動作は図１で述べた動作と基本的に同一なので省略する。
【００３３】
フラッシュＲＯＭ１７、フラッシュＲＯＭ２７には電源投入時にＢＯＯＴプログラムを格納しておく。
【００３４】
電源投入時のＢＯＯＴプログラムの走行はＣＰＵ１１、ＣＰＵ２１及びキャッシュメモリ１２、キャッシュメモリ２２の初期設定が完了していない状態で走行する必要があるので、非キュッシュ領域にマッピングしておく。例えば、フラッシュＲＯＭ１７、フラッシュＲＯＭ２７の空き領域に障害トラップハンドラと障害処理プログラムを書き込んでおく。これにより障害処理プログラムは非キャッシュ状態で走行できるアドレス空間で走行できる。
【図面の簡単な説明】
【００３５】
【図１】本発明の二重化構成プロセッサ装置を示す図である。
【図２】本発明の二重化構成プロセッサ装置の障害処理手順を示す図である。
【図３】本発明の二重化構成プロセッサの他の実施例を示す図である。
【図４】従来の二重化構成プロセッサ装置の障害処理手順を示す図である。
【図５】置換フラッシュの動作を説明する図である。
【符号の説明】
【００３６】
１  ０系プロセッサ
２  １系プロセッサ
１１  ＣＰＵ
１２  キャッシュメモリ
１３  メモリコントローラ
１４  主メモリ
１５  メモリ交差コントローラ
１６  プロセッサバス
１７  フラッシュＲＯＭ
２１  ＣＰＵ
２２  キャッシュメモリ
２３  メモリコントローラ
２４  主メモリ
２５  メモリ交差コントローラ
２６  プロセッサバス
２７  フラッシュＲＯＭ
３１  メモリ交差バス
【図１】
2007328543.tif 000003
【図２】
2007328543.tif 000004
【図３】
2007328543.tif 000005
【図４】
2007328543.tif 000006
【図５】
2007328543.tif 000007