(57)【要約】【課題】キャッシュメモリを複数のポートを介して読み書き可能とすることにより、キャッシュメモリに対する更新処理が行われた時点で両プロセッサに搭載されているキャッシュメモリの内容を一致させることができる二重化システム及び系切り換え方法を提供する。【解決手段】運用系プロセッサ及び予備系プロセッサのいずれかでの障害発生を監視し、運用系プロセッサで発生した場合には予備系プロセッサへ切り替える。キャッシュメモリは同時にデータの読み書きを行うことができる複数のポートを有し、運用系プロセッサのキャッシュメモリコントローラは、キャッシュメモリに対する更新データを、更新処理に用いるポートと相違するポートを用いて予備系プロセッサのキャッシュメモリに対して転送する。予備系プロセッサのキャッシュメモリコントローラは、受信した更新データを、更新処理に用いるポートとは相違するポートを用いて、キャッシュメモリに書き込む。【選択図】図３
2008046685.tif 000002
【特許請求の範囲】
【請求項１】
主として演算処理する運用系プロセッサ及び該運用系プロセッサの障害時に演算処理する予備系プロセッサにそれぞれキャッシュメモリ、メインメモリ、メインメモリコントローラ、及び運用系プロセッサ又は予備系プロセッサのいずれかでの障害発生を監視する障害監視部が搭載されており、
前記障害監視部が自系に障害が発生したと判断した場合、自系のプロセッサに対して他系のプロセッサへの障害通知を指示し、自系のプロセッサが運用系プロセッサであるときには予備系プロセッサへ切り替え、他系のプロセッサから障害通知を受信した場合、自系のプロセッサが予備系プロセッサであるときには運用系プロセッサへ切り替える二重化システムにおいて、
前記キャッシュメモリは同時にデータの読み書きを行うことができる複数のポートを有し、
前記キャッシュメモリの動作を制御するキャッシュメモリコントローラが運用系プロセッサ及び予備系プロセッサにそれぞれ搭載されており、
運用系プロセッサの前記キャッシュメモリコントローラは、
運用系プロセッサの前記キャッシュメモリに対する更新データを中継する手段と、
該手段で更新データを中継した場合、該更新データを、キャッシュメモリに対する更新処理に用いるポートと相違するポートを用いて予備系プロセッサの前記キャッシュメモリに対して転送する手段と
を備え、
予備系プロセッサの前記キャッシュメモリコントローラは、
運用系プロセッサから更新データを受信する手段と、
該手段で受信した更新データを、前記キャッシュメモリに対する更新処理に用いているポートとは相違するポートを用いて、前記キャッシュメモリに書き込む手段と
を備えることを特徴とする二重化システム。
【請求項２】
運用系プロセッサの前記キャッシュメモリコントローラは、
運用系プロセッサの前記キャッシュメモリに対する更新データを中継した場合、前記キャッシュメモリに書き込まれた更新データが正常なデータであるか否かを判断する手段を備え、
該手段で正常なデータであると判断した場合に、前記更新データを予備系プロセッサのキャッシュメモリに対して転送するようにしてあることを特徴とする請求項１記載の二重化システム。
【請求項３】
主として演算処理する運用系プロセッサ及び該運用系プロセッサの障害時に演算処理する予備系プロセッサにそれぞれキャッシュメモリ、メインメモリ、メインメモリコントローラ、及び運用系プロセッサ又は予備系プロセッサのいずれかでの障害発生を監視する障害監視部が搭載されており、前記障害監視部が自系に障害が発生したと判断した場合、自系のプロセッサに対して他系のプロセッサへの障害通知を指示し、自系のプロセッサが運用系プロセッサであるときには予備系プロセッサへ切り替え、他系のプロセッサから障害通知を受信した場合、自系のプロセッサが予備系プロセッサであるときには運用系プロセッサへ切り替える系切り替え方法において、
前記キャッシュメモリは同時にデータの読み書きを行うことができる複数のポートを有し、
前記キャッシュメモリの動作を制御するキャッシュメモリコントローラが運用系プロセッサ及び予備系プロセッサにそれぞれ搭載されており、
運用系プロセッサの前記キャッシュメモリコントローラにて、
運用系プロセッサの前記キャッシュメモリに対する更新データを中継し、
更新データを中継した場合、該更新データを、キャッシュメモリに対する更新処理に用いるポートと相違するポートを用いて予備系プロセッサの前記キャッシュメモリに対して転送し、
予備系プロセッサの前記キャッシュメモリコントローラにて、
運用系プロセッサから更新データを受信し、
受信した更新データを、前記キャッシュメモリに対する更新処理に用いているポートとは相違するポートを用いて、前記キャッシュメモリに書き込むことを特徴とする系切り替え方法。
【請求項４】
運用系プロセッサの前記キャッシュメモリコントローラにて、
運用系プロセッサの前記キャッシュメモリに対する更新データを中継した場合、前記キャッシュメモリに書き込まれた更新データが正常なデータであるか否かを判断し、
正常なデータであると判断した場合に、前記更新データを予備系プロセッサのキャッシュメモリに対して転送することを特徴とする請求項３記載の系切り替え方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、キャッシュメモリ及びキャッシュメモリコントローラを運用系プロセッサ及び予備系プロセッサに搭載し、キャッシュメモリを複数のポートを介して読み書き可能とし、運用系プロセッサのキャッシュメモリを更新した時点で予備系プロセッサのキャッシュメモリへ更新内容を反映させることができる二重化システム及び系切り換え方法に関する。
【背景技術】
【０００２】
昨今の通信システムでは、例えば移動通信システムのマルチメディア交換機等のように２４時間安定して稼動させる要求の強いコンピュータが多々存在する。これらのコンピュータの信頼性を向上するために、例えばプロセッサ、キャッシュメモリ、メインメモリ、メインメモリコントローラ、及び運用系及び予備系のいずれかの系での障害の発生を監視する障害監視部がそれぞれ二重化されており、通常は運用系システムで情報処理を実行し、障害発生時に予備系システムへ切り替える二重化システムが採用されている。
【０００３】
図１は、従来の二重化システムの構成例を示すブロック図である。従来の二重化システムでは、運用系プロセッサ１０ａと予備系プロセッサ１０ｂとで構成されており、運用系プロセッサ１０ａでメインメモリ１４ａへ書き込んだデータを、メインメモリコントローラ１５ａにより予備系のメインメモリ１４ｂに書き込む。運用系プロセッサ１０ａの障害監視部１２ａが障害発生を検出した場合、運用系プロセッサ１０ａ及び予備系プロセッサ１０ｂの両方のＣＰＵ１１ａ、１１ｂをリセットし、運用系プロセッサ１０ａと予備系プロセッサ１０ｂとを切り替えることにより、新たな運用系プロセッサのＣＰＵが自系のメインメモリを用いて処理を継続する。
【０００４】
また、メモリへのアクセス速度を早くするためにキャッシュメモリ１３ａ、１３ｂを備えることが一般的である。キャッシュメモリ１３ａ、１３ｂの動作を制御する方法としては、いわゆるコピーバック方式が良く用いられている。運用系プロセッサ１０ａのＣＰＵ１１ａが、メインメモリ１４ａへの書き込み命令を実行した場合、ＣＰＵ１１ａは、メインメモリ１４ａに直接書き込まず、キャッシュメモリ１３ａのみへ書き込む。キャッシュメモリ１３ａはメインメモリ１４ａよりも容量が少ないことから、キャッシュメモリ１３ａがオーバフローした場合には、メインメモリ１４ａへ書き戻される（コピーバックされる）。つまり、最新のデータは、メインメモリ１４ａへ書き戻されるまでキャッシュメモリ１３ａのみに存在する。
【０００５】
メインメモリコントローラ１５ａは、メインメモリ１４ａへの書き戻しデータを、メインメモリコントローラ１５ｂを介して予備系プロセッサ１０ｂのメインメモリ１４ｂへ書き込む。ＣＰＵ１１ａ、１１ｂがリセットされた場合、運用系プロセッサ１０ａのＣＰＵ１１ａは、キャッシュメモリ１３ａのみに存在するデータをメインメモリ１４ａへ強制的に反映させ、メインメモリコントローラ１５ａへメモリ二重化制御の停止を指示する（特許文献１及び２参照）。
【０００６】
予備系プロセッサ１０ｂのＣＰＵ１１ｂは、予備系プロセッサ１０ｂのメインメモリ１４ｂを用いて中断された処理を再開する。このようにＣＰＵ１１ａ、１１ｂに対するリセットが生じた場合、メインメモリ１４ａ、１４ｂの二重化状態が継続し、キャッシュメモリ１３ａの内容をメインメモリ１４ａへ強制的に書き込む、いわゆるフラッシュ処理が正常に終了することが可能である場合に、予備系プロセッサ１０ｂによる処理を再開することができる。
【特許文献１】特開平６−６７９７９号公報
【特許文献２】特開２００３−２２３３３８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
しかし、上述したコピーバック方式を採用した場合、予備系プロセッサ１０ｂによる処理を再開することができない場合が生じるという問題点があった。例えば、運用系プロセッサ１０ａのＣＰＵバスにてアドレスパリティエラーが発生した場合等は、ソフトウェアによる処理を続行することができない。したがって、ＣＰＵ１１ａ、１１ｂがリセットされた場合であっても、運用系プロセッサ１０ａのキャッシュメモリ１３ａのフラッシュ処理を行うことができず、予備系プロセッサ１０ｂを運用系プロセッサに切り替えて処理を再開するときに使用する情報が、切り替え前の運用系プロセッサ１０ａのメインメモリ１３ａの内容と一致していないことから、処理を継続することができない。
【０００８】
また、例えば、運用系プロセッサ１０ａのキャッシュメモリ１３ａ及び部品へ電力を供給する電源系に障害が発生し、キャッシュメモリ１３ａ内のデータが消失した場合、キャッシュメモリ１３ａのみに記憶されていたデータをメインメモリ１４ａにフラッシュ処理することができず、予備系プロセッサ１０ｂを運用系プロセッサに切り替えて処理を再開するときに使用する情報が、切り替え前の運用系プロセッサ１０ａのメインメモリ１３ａの内容と一致していないことから、処理を継続することができない。
【０００９】
本発明は斯かる事情に鑑みてなされたものであり、キャッシュメモリ及びキャッシュメモリコントローラを運用系プロセッサ及び予備系プロセッサに搭載し、キャッシュメモリを複数のポートを介して読み書き可能とすることにより、キャッシュメモリに対する更新処理が行われた時点で両プロセッサに搭載されているキャッシュメモリの内容を一致させることができる二重化システム及び系切り換え方法を提供することを目的とする。
【課題を解決するための手段】
【００１０】
上記目的を達成するために第１発明に係る二重化システムは、主として演算処理する運用系プロセッサ及び該運用系プロセッサの障害時に演算処理する予備系プロセッサにそれぞれキャッシュメモリ、メインメモリ、メインメモリコントローラ、及び運用系プロセッサ又は予備系プロセッサのいずれかでの障害発生を監視する障害監視部が搭載されており、前記障害監視部が自系に障害が発生したと判断した場合、自系のプロセッサに対して他系のプロセッサへの障害通知を指示し、自系のプロセッサが運用系プロセッサであるときには予備系プロセッサへ切り替え、他系のプロセッサから障害通知を受信した場合、自系のプロセッサが予備系プロセッサであるときには運用系プロセッサへ切り替える二重化システムにおいて、前記キャッシュメモリは同時にデータの読み書きを行うことができる複数のポートを有し、前記キャッシュメモリの動作を制御するキャッシュメモリコントローラが運用系プロセッサ及び予備系プロセッサにそれぞれ搭載されており、運用系プロセッサの前記キャッシュメモリコントローラは、運用系プロセッサの前記キャッシュメモリに対する更新データを中継する手段と、該手段で更新データを中継した場合、該更新データを、キャッシュメモリに対する更新処理に用いるポートと相違するポートを用いて予備系プロセッサの前記キャッシュメモリに対して転送する手段とを備え、予備系プロセッサの前記キャッシュメモリコントローラは、運用系プロセッサから更新データを受信する手段と、該手段で受信した更新データを、前記キャッシュメモリに対する更新処理に用いているポートとは相違するポートを用いて、前記キャッシュメモリに書き込む手段とを備えることを特徴とする。
【００１１】
また、第２発明に係る二重化システムは、第１発明において、運用系プロセッサの前記キャッシュメモリコントローラは、運用系プロセッサの前記キャッシュメモリに対する更新データを中継した場合、前記キャッシュメモリに書き込まれた更新データが正常なデータであるか否かを判断する手段を備え、該手段で正常なデータであると判断した場合に、前記更新データを予備系プロセッサのキャッシュメモリに対して転送するようにしてあることを特徴とする。
【００１２】
また、第３発明に係る系切り替え方法は、主として演算処理する運用系プロセッサ及び該運用系プロセッサの障害時に演算処理する予備系プロセッサにそれぞれキャッシュメモリ、メインメモリ、メインメモリコントローラ、及び運用系プロセッサ又は予備系プロセッサのいずれかでの障害発生を監視する障害監視部が搭載されており、前記障害監視部が自系に障害が発生したと判断した場合、自系のプロセッサに対して他系のプロセッサへの障害通知を指示し、自系のプロセッサが運用系プロセッサであるときには予備系プロセッサへ切り替え、他系のプロセッサから障害通知を受信した場合、自系のプロセッサが予備系プロセッサであるときには運用系プロセッサへ切り替える系切り替え方法において、前記キャッシュメモリは同時にデータの読み書きを行うことができる複数のポートを有し、前記キャッシュメモリの動作を制御するキャッシュメモリコントローラが運用系プロセッサ及び予備系プロセッサにそれぞれ搭載されており、運用系プロセッサの前記キャッシュメモリコントローラにて、運用系プロセッサの前記キャッシュメモリに対する更新データを中継し、更新データを中継した場合、該更新データを、キャッシュメモリに対する更新処理に用いるポートと相違するポートを用いて予備系プロセッサの前記キャッシュメモリに対して転送し、予備系プロセッサの前記キャッシュメモリコントローラにて、運用系プロセッサから更新データを受信し、受信した更新データを、前記キャッシュメモリに対する更新処理に用いているポートとは相違するポートを用いて、前記キャッシュメモリに書き込むことを特徴とする。
【００１３】
また、第４発明に係る系切り替え方法は、第３発明において、運用系プロセッサの前記キャッシュメモリコントローラにて、運用系プロセッサの前記キャッシュメモリに対する更新データを中継した場合、前記キャッシュメモリに書き込まれた更新データが正常なデータであるか否かを判断し、正常なデータであると判断した場合に、前記更新データを予備系プロセッサのキャッシュメモリに対して転送することを特徴とする。
【００１４】
第１発明及び第３発明では、主として演算処理する運用系プロセッサ及び該運用系プロセッサの障害時に演算処理する予備系プロセッサにそれぞれキャッシュメモリ、メインメモリ、メインメモリコントローラ、及び運用系プロセッサ又は予備系プロセッサのいずれかでの障害発生を監視する障害監視部が搭載されており、障害監視部が自系に障害が発生したと判断した場合、自系のプロセッサに対して他系のプロセッサへの障害通知を指示し、自系のプロセッサが運用系プロセッサであるときには予備系プロセッサへ切り替え、他系のプロセッサから障害通知を受信した場合、自系のプロセッサが予備系プロセッサであるときには運用系プロセッサへ切り替える。キャッシュメモリは同時にデータの読み書きを行うことができる複数のポートを有し、キャッシュメモリの動作を制御するキャッシュメモリコントローラが運用系プロセッサ及び予備系プロセッサにそれぞれ搭載されている。運用系プロセッサのキャッシュメモリコントローラは、運用系プロセッサのキャッシュメモリに対する更新データを中継し、更新データを中継した場合、該更新データを、キャッシュメモリに対する更新処理に用いるポートと相違するポートを用いて予備系プロセッサのキャッシュメモリに対して転送する。予備系プロセッサのキャッシュメモリコントローラは、運用系プロセッサから受信した更新データを、キャッシュメモリに対する更新処理に用いているポートとは相違するポートを用いて、キャッシュメモリに書き込む。
【００１５】
このようにすることで、運用系プロセッサのキャッシュメモリの内容が更新された場合には、メインメモリへのフラッシュ処理と並行して更新データ自体が予備系のキャッシュメモリへ転送される。したがって、障害発生により運用系プロセッサのキャッシュメモリのフラッシュ処理を行うことができない場合であっても、予備系プロセッサのキャッシュメモリの内容と運用系プロセッサのキャッシュメモリの内容とが一致していることから、切り替えて処理を再開するプロセッサに搭載されているキャッシュメモリの内容を用いて処理を継続することが可能となる。
【００１６】
第２発明及び第４発明では、運用系プロセッサのキャッシュメモリコントローラは、運用系プロセッサのキャッシュメモリに対する更新データを中継した場合、キャッシュメモリに書き込まれた更新データが正常なデータであるか否かを判断する。正常なデータであると判断した場合にのみ、更新データを予備系プロセッサのキャッシュメモリに対して転送する。これにより、キャッシュメモリに書き込まれた内容が正常なデータである場合にのみ予備系プロセッサのキャッシュメモリへ転送することができ、誤ったデータが転送されることによりプロセッサ切り替え後に処理を再開することができない事態が発生するのを未然に防止することが可能となる。
【発明の効果】
【００１７】
第１発明及び第３発明によれば、運用系プロセッサのキャッシュメモリの内容が更新された場合には、メインメモリへのフラッシュ処理と並行して更新データ自体が予備系のキャッシュメモリへ転送される。したがって、障害発生により運用系プロセッサのキャッシュメモリのフラッシュ処理を行うことができない場合であっても、予備系プロセッサのキャッシュメモリの内容と運用系プロセッサのキャッシュメモリの内容とが一致していることから、切り替えて処理を再開するプロセッサに搭載されているキャッシュメモリの内容を用いて処理を継続することが可能となる。
【００１８】
第２発明及び第４発明によれば、キャッシュメモリに書き込まれた内容が正常なデータである場合にのみ予備系プロセッサのキャッシュメモリへ転送することができ、誤ったデータが転送されることによりプロセッサ切り替え後に処理を再開することができない事態が発生するのを未然に防止することが可能となる。
【発明を実施するための最良の形態】
【００１９】
以下、本発明をその実施の形態を示す図面に基づいて詳述する。
【００２０】
（実施の形態１）
図２は、本発明の実施の形態１に係る二重化システムの構成を示すブロック図である。図２に示すように、本発明の実施の形態１に係る二重化システムは、運用系プロセッサ２０ａ及び予備系プロセッサ２０ｂで構成された二重化システムである。
【００２１】
運用系プロセッサ２０ａは、少なくともＣＰＵ２１ａ、障害監視部２２ａ、キャッシュメモリコントローラ２３ａ、キャッシュメモリ２４ａ、メインメモリ２５ａ、メインメモリコントローラ２６ａ、ＲＯＭ２７ａを搭載してあるプロセッサ基板である。予備系プロセッサ２０ｂも、少なくともＣＰＵ２１ｂ、障害監視部２２ｂ、キャッシュメモリコントローラ２３ｂ、キャッシュメモリ２４ｂ、メインメモリ２５ｂ、メインメモリコントローラ２６ｂ、ＲＯＭ２７ｂを搭載してあるプロセッサ基板である。
【００２２】
ＣＰＵ２１ａ、２１ｂは、ＲＯＭ２７ａ、２７ｂに記憶されているプログラムに従って、特定の処理を実行する。障害監視部２２ａ、２２ｂは互いに通信線を介して接続されており、例えばハートビート信号等に対する応答信号の有無に応じて、いずれかのプロセッサに障害が発生しているか否かを判断する。
【００２３】
キャッシュメモリコントローラ２３ａ、２３ｂは、それぞれキャッシュメモリ２４ａ、２４ｂに対して読み書き可能に接続されており、一方で通信線を介して相互にデータ通信可能に接続されている。キャッシュメモリコントローラ２３ａ、２３ｂは、それぞれキャッシュメモリ２４ａ、２４ｂに対するデータ更新を行う場合、通信線を介して他方のプロセッサに対して更新データを送信する。すなわち、運用系プロセッサ２０ａでの処理により、メインメモリ２５ａへの書込みが生じた場合、キャッシュメモリ２４ａへまず書き込みを開始する。キャッシュメモリ２４ａへの書込みが開始された場合、キャッシュメモリコントローラ２３ａは、更新データを、通信線を介して予備系プロセッサ２０ｂのキャッシュメモリ２４ｂへ書き込む。
【００２４】
キャッシュメモリ２４ａ、２４ｂは、ＲＯＭに記憶されているプログラムに従ってメインメモリ２５ａ、２５ｂに書き込むべきデータを一次記憶する運用領域にのみデータを読み書きすることが可能な第１のポート２４１ａ、２４１ｂ、及び各プロセッサ内でのみ必要なデータの読み書きのみに用いる保守領域にデータを読み書きする第２のポート２４２ａ、２４２ｂの２つのポートを備えているデュアルポートメモリである。キャッシュメモリコントローラ２３ａ、２３ｂは、運用領域へ書き込まれた更新データのみを他のプロセッサのキャッシュメモリ２４ａ、２４ｂへと転送する。
【００２５】
運用系プロセッサ２０ａのＣＰＵ２１ａが、メインメモリ２５ａへの書き込み命令を実行した場合、ＣＰＵ２１ａは、メインメモリ２５ａに直接書き込まず、キャッシュメモリ２３ａのみへ書き込む。キャッシュメモリ２４ａはメインメモリ２５ａよりも容量が少ないことから、キャッシュメモリ２４ａがオーバフローした場合には、メインメモリ２５ａへ書き戻される（コピーバックされる）。
【００２６】
メインメモリコントローラ２６ａは、メインメモリ２５ａへの書き戻しデータを、メインメモリコントローラ２６ｂを介して予備系プロセッサ２０ｂのメインメモリ２５ｂへ書き込む。ＲＯＭ２７ａ、２７ｂは、運用系プロセッサ２０ａ、予備系プロセッサ２０ｂで実行される処理プログラムを記憶してある。記憶してあるプログラムは同一の処理内容を実行するプログラムであり、メインメモリ２５ａ、２５ｂを用いて実行される。
【００２７】
以上の構成の二重化システムの動作について説明する。運用系プロセッサ２０ａのＣＰＵ２１ａは、ＲＯＭ２７ａに記憶してあるプログラムに従って所定の処理を実行する。ＣＰＵ２１ａがメインメモリ２５ａへの書き込みを行う場合、メインメモリ２５ａへ書き込むべき更新データは、まずキャッシュメモリコントローラ２３ａを介してキャッシュメモリ２４ａへ書き込まれる。
【００２８】
キャッシュメモリ２４ａへの更新データの書き込みは、第１のポート２４１ａを介して運用領域に対して行われる。キャッシュメモリコントローラ２３ａは、キャッシュメモリ２４ａの運用領域への書き込みを指示した時点で、更新データを予備系プロセッサ２０ｂのキャッシュメモリ２４ｂへと転送する。予備系プロセッサ２０ｂのキャッシュメモリコントローラ２３ｂは、キャッシュメモリ２４ｂの第１のポート２４１ｂを介して、運用領域へ転送された更新データを書き込む。
【００２９】
なお、予備系プロセッサ２０ｂでは、通常、所定の保守プログラムが作動している。保守プログラムの実行により、ＣＰＵ２１ｂがメインメモリ２５ｂへの書き込みを行う場合、メインメモリ２５ｂへ書き込むべき更新データは、運用系プロセッサ２０ａと同様にキャッシュメモリコントローラ２３ｂを介してキャッシュメモリ２４ｂへ書き込まれる。保守プログラムによる更新データは、キャッシュメモリ２４ｂへ第２のポート２４２ｂを介して保守領域に対して行われる。保守領域に対しては、第１のポート２４１ｂを介して転送されてきた更新データは書き込まれない。したがって、保守プログラムによりキャッシュメモリ２４ｂへ書込みが行われている場合であっても、運用系プロセッサ２０ａから転送されてきた更新データをキャッシュメモリ２４ｂの運用領域へ書き込むことができ、運用系プロセッサ２０ａと予備系プロセッサ２０ｂとで、キャッシュメモリ２４ａ、２４ｂの運用領域に記憶されている内容を一致させることが可能となる。
【００３０】
図３は、本発明の実施の形態１に係る二重化システムの運用系プロセッサ２０ａのキャッシュメモリコントローラ２３ａ及び予備系プロセッサ２０ｂのキャッシュメモリコントローラ２３ｂの処理手順を示すフローチャートである。キャッシュメモリコントローラ２３ａは、ＣＰＵ２１ａからキャッシュメモリ２４ａに対する更新データの書き込み指令を受信する（ステップＳ３０１）。キャッシュメモリコントローラ２３ａは、第１のポート２４１ａを介してキャッシュメモリ２４ａの運用領域へ更新データを書き込む（ステップＳ３０２）。
【００３１】
一方、キャッシュメモリコントローラ２３ａは、予備系プロセッサ２０ｂのキャッシュメモリコントローラ２３ｂに対して、更新データを転送する（ステップＳ３０３）。予備系プロセッサ２０ｂのキャッシュメモリコントローラ２３ｂは、更新データを受信し（ステップＳ３０４）、第１のポート２４１ｂを介してキャッシュメモリ２４ｂの運用領域へ更新データを書き込む（ステップＳ３０５）。
【００３２】
運用系プロセッサ２０ａに障害が発生した場合、運用系プロセッサ２０ａの障害監視部２２ａは、ＣＰＵ２１ａ、２１ｂの双方に対してリセット指令を出し、予備系プロセッサ２０ｂの障害監視部２２ｂに対して障害が発生した旨を示すデータを送信する。リセット指令が出された場合、ＣＰＵ２１ａ、２１ｂは運用系プロセッサ２０ａを予備系に、予備系プロセッサ２０ｂを運用系へ切り替える。
【００３３】
切り替え後の運用系プロセッサ２０ｂ（旧予備系）の障害監視部２２ｂ及び予備系プロセッサ２０ａ（旧運用系）の障害監視部２２ａは、キャッシュメモリコントローラ２３ａ、２３ｂへ自系が運用系であるか予備系であるかを示すデータを送信する。これにより、運用系プロセッサ２０ｂ（旧予備系）のキャッシュメモリコントローラ２３ｂは、キャッシュメモリ２４ｂへの書き込みに使用するポートを、第２のポートから第１のポートへ切り替える。これにより、ＣＰＵ２１ｂの指令によるキャッシュメモリ２４ｂに対する更新データは、キャッシュメモリ２４ｂの運用領域に書き込まれる。
【００３４】
一方、予備系プロセッサ２０ａ（旧運用系）のキャッシュメモリコントローラ２３ａは、キャッシュメモリ２４ａへの書き込みに使用するポートを、第１のポートから第２のポートへ切り替える。これにより、ＣＰＵ２１ａの指令によるキャッシュメモリ２４ａに対する更新データは、保守プログラムによる書き込み領域である保守領域のみに書き込まれる。
【００３５】
切り替え後の運用系プロセッサ２０ｂ（旧予備系）のＣＰＵ２１ｂは、キャッシュメモリ２４ｂに書き込まれている更新データをメインメモリ２５ｂへフラッシュ処理し、処理を再開する。
【００３６】
図４は、本発明の実施の形態１に係る二重化システムの運用系プロセッサ２０ａに障害が発生した場合の予備系プロセッサ２０ｂのキャッシュメモリコントローラ２３ｂの処理手順を示すフローチャートである。予備系プロセッサ２０ｂのキャッシュメモリコントローラ２３ｂは、ＣＰＵ２１ｂからリセット指令を受信する（ステップＳ４０１）。キャッシュメモリコントローラ２３ｂは、キャッシュメモリ２４ｂへアクセス可能なポートを、第２のポート２４２ｂから第１のポート２４１ｂへ切り替える（ステップＳ４０２）。
【００３７】
キャッシュメモリコントローラ２３ｂは、切り替えた第１のポート２４１ｂを介してキャッシュメモリ２４ｂの運用領域に記憶されているデータをメインメモリ２５ｂへ強制的に書き込むフラッシュ処理を行う（ステップＳ４０３）。これにより、障害が発生した運用系プロセッサ２０ａのキャッシュメモリ２４ａのデータと同一のデータを用いて、切り替えられた旧予備系プロセッサ２０ｂのＣＰＵ２１ｂが処理を継続することができる。
【００３８】
以上のように本実施の形態１によれば、運用系プロセッサ２０ａのキャッシュメモリ２４ａの内容が更新された場合には、メインメモリ２５ａへのフラッシュ処理と並行して更新データ自体が予備系プロセッサ２０ｂのキャッシュメモリ２４ｂへ転送される。したがって、障害発生により運用系プロセッサ２０ａのキャッシュメモリ２４ａのフラッシュ処理を行うことができない場合であっても、予備系プロセッサ２０ｂのキャッシュメモリ２４ｂの内容と運用系プロセッサ２０ａのキャッシュメモリ２４ａの内容とが一致していることから、切り替えて処理を再開する旧予備系プロセッサ２０ｂに搭載されているキャッシュメモリ２４ｂの内容を用いて処理を継続することが可能となる。
【００３９】
（実施の形態２）
本発明の実施の形態２に係る二重化システムの構成は、実施の形態１と同様であることから、同一の符号を付することにより詳細な説明を省略する。本実施の形態２は、キャッシュメモリの動作を制御するキャッシュメモリコントローラがデータが正常であるか否かを判断する機能を有する点で実施の形態１とは相違する。
【００４０】
運用系プロセッサ２０ａのＣＰＵ２１ａは、ＲＯＭ２７ａに記憶してあるプログラムに従って所定の処理を実行する。ＣＰＵ２１ａがメインメモリ２５ａへの書き込みを行う場合、メインメモリ２５ａへ書き込むべき更新データは、まずキャッシュメモリコントローラ２３ａを介してキャッシュメモリ２４ａへ書き込まれる。
【００４１】
キャッシュメモリ２４ａへの更新データの書き込みは、第１のポート２４１ａを介して運用領域に対して行われる。キャッシュメモリコントローラ２３ａは、キャッシュメモリ２４ａの運用領域への書き込みを指示した時点で、書き込むべき更新データが正常なデータであるか否かを判断する。更新データが正常なデータであるか否かを判断する方法は、特に限定されるものではなく、例えばパリティチェック、ＥＣＣチェック等、データの正当性を確認することができる方法であれば何でも良い。
【００４２】
キャッシュメモリコントローラ２３ａは、書き込むべき更新データが正常なデータであると判断した場合にのみ、更新データを予備系プロセッサ２０ｂのキャッシュメモリ２４ｂへと転送する。予備系プロセッサ２０ｂのキャッシュメモリコントローラ２３ｂは、キャッシュメモリ２４ｂの第１のポート２４１ｂを介して、運用領域へ転送された更新データを書き込む。
【００４３】
なお、予備系プロセッサ２０ｂでは、通常、所定の保守プログラムが作動している。保守プログラムの実行により、ＣＰＵ２１ｂがメインメモリ２５ｂへの書き込みを行う場合、メインメモリ２５ｂへ書き込むべき更新データは、運用系プロセッサ２０ａと同様にキャッシュメモリコントローラ２３ｂを介してキャッシュメモリ２４ｂへ書き込まれる。保守プログラムによる更新データは、キャッシュメモリ２４ｂへ第２のポート２４２ｂを介して保守領域に対して行われる。保守領域に対しては、第１のポート２４１ｂを介して転送されてきた更新データは書き込まれない。したがって、保守プログラムによりキャッシュメモリ２４ｂへ書込みが行われている場合であっても、運用系プロセッサ２０ａから転送されてきた更新データをキャッシュメモリ２４ｂの運用領域へ書き込むことができ、運用系プロセッサ２０ａと予備系プロセッサ２０ｂとで、キャッシュメモリ２４ａ、２４ｂの運用領域に記憶されている内容を一致させることが可能となる。
【００４４】
図５は、本発明の実施の形態２に係る二重化システムの運用系プロセッサ２０ａのキャッシュメモリコントローラ２３ａ及び予備系プロセッサ２０ｂのキャッシュメモリコントローラ２３ｂの処理手順を示すフローチャートである。キャッシュメモリコントローラ２３ａは、ＣＰＵ２１ａからキャッシュメモリ２４ａに対する更新データの書き込み指令を受信する（ステップＳ５０１）。キャッシュメモリコントローラ２３ａは、第１のポート２４１ａを介してキャッシュメモリ２４ａの運用領域へ更新データを書き込む（ステップＳ５０２）。
【００４５】
一方、キャッシュメモリコントローラ２３ａは、更新データに対してパリティチェックを行い（ステップＳ５０３）、更新データが正常であるか否かを判断する（ステップＳ５０４）。キャッシュメモリコントローラ２３ａが、更新データが異常であると判断した場合（ステップＳ５０４：ＮＯ）、キャッシュメモリコントローラ２３ａは、更新データを予備系プロセッサ２０ｂに対して転送せず、処理を終了する。
【００４６】
キャッシュメモリコントローラ２３ａが、更新データが正常であると判断した場合（ステップＳ５０４：ＹＥＳ）、キャッシュメモリコントローラ２３ａは、予備系プロセッサ２０ｂのキャッシュメモリコントローラ２３ｂに対して、更新データを転送する（ステップＳ５０５）。予備系プロセッサ２０ｂのキャッシュメモリコントローラ２３ｂは、更新データを受信し（ステップＳ５０６）、第１のポート２４１ｂを介してキャッシュメモリ２４ｂの運用領域へ更新データを書き込む（ステップＳ５０７）。
【００４７】
運用系プロセッサ２０ａに障害が発生した場合の系切り替え方法は、実施の形態１と同様となる。すなわち、運用系プロセッサ２０ａの障害監視部２２ａは、ＣＰＵ２１ａ、２１ｂの双方に対してリセット指令を出し、予備系プロセッサ２０ｂの障害監視部２２ｂに対して障害が発生した旨を示すデータを送信する。リセット指令が出された場合、ＣＰＵ２１ａ、２１ｂは運用系プロセッサ２０ａを予備系に、予備系プロセッサ２０ｂを運用系へ切り替える。
【００４８】
切り替え後の運用系プロセッサ２０ｂ（旧予備系）の障害監視部２２ｂ及び予備系プロセッサ２０ａ（旧運用系）の障害監視部２２ａは、キャッシュメモリコントローラ２３ａ、２３ｂへ自系が運用系であるか予備系であるかを示すデータを送信する。これにより、運用系プロセッサ２０ｂ（旧予備系）のキャッシュメモリコントローラ２３ｂは、キャッシュメモリ２４ｂへの書き込みに使用するポートを、第２のポートから第１のポートへ切り替える。これにより、ＣＰＵ２１ｂの指令によるキャッシュメモリ２４ｂに対する更新データは、キャッシュメモリ２４ｂの運用領域に書き込まれる。
【００４９】
一方、予備系プロセッサ２０ａ（旧運用系）のキャッシュメモリコントローラ２３ａは、キャッシュメモリ２４ａへの書き込みに使用するポートを、第１のポートから第２のポートへ切り替える。これにより、ＣＰＵ２１ａの指令によるキャッシュメモリ２４ａに対する更新データは、保守プログラムによる書き込み領域である保守領域のみに書き込まれる。
【００５０】
切り替え後の運用系プロセッサ２０ｂ（旧予備系）のＣＰＵ２１ｂは、キャッシュメモリ２４ｂに書き込まれている更新データをメインメモリ２５ｂへフラッシュ処理し、処理を再開する。
【００５１】
以上のように本実施の形態２によれば、運用系プロセッサ２０ａのキャッシュメモリ２４ａに書き込まれた内容が正常なデータである場合にのみ予備系プロセッサ２０ｂのキャッシュメモリ２４ｂへ転送することができ、誤ったデータが転送されることによりプロセッサ切り替え後に処理を再開することができない事態が発生するのを未然に防止することが可能となる。
【図面の簡単な説明】
【００５２】
【図１】従来の二重化システムの構成例を示すブロック図である。
【図２】本発明の実施の形態１に係る二重化システムの構成を示すブロック図である。
【図３】本発明の実施の形態１に係る二重化システムの運用系プロセッサのキャッシュメモリコントローラ及び予備系プロセッサのキャッシュメモリコントローラの処理手順を示すフローチャートである。
【図４】本発明の実施の形態１に係る二重化システムの運用系プロセッサに障害が発生した場合の予備系プロセッサのキャッシュメモリコントローラの処理手順を示すフローチャートである。
【図５】本発明の実施の形態２に係る二重化システムの運用系プロセッサのキャッシュメモリコントローラ及び予備系プロセッサのキャッシュメモリコントローラの処理手順を示すフローチャートである。
【符号の説明】
【００５３】
２０ａ  運用系プロセッサ
２０ｂ  予備系プロセッサ
２１ａ、２１ｂ  ＣＰＵ
２２ａ、２２ｂ  障害監視部
２３ａ、２３ｂ  キャッシュメモリコントローラ
２４ａ、２４ｂ  キャッシュメモリ
２５ａ、２５ｂ  メインメモリ
２６ａ、２６ｂ  メインメモリコントローラ
２７ａ、２７ｂ  ＲＯＭ
２４１ａ、２４１ｂ  第１のポート
２４２ａ、２４２ｂ  第２のポート
【図１】
2008046685.tif 000003
【図２】
2008046685.tif 000004
【図３】
2008046685.tif 000005
【図４】
2008046685.tif 000006
【図５】
2008046685.tif 000007