(57)【要約】【課題】フォールトトレラントシステムにおいてロックステップ動作を行う領域に接続された外部デバイスが故障した場合に発生しうるシステム・クラッシュや可用性の低下を、より確実に防止する技術を提供すること。【解決手段】フォールトトレラントシステム１において、プロセッサシステム１０は、システム１００間でロックステップ動作を行う。監視装置５０は、プロセッサシステム１０に接続された外部デバイス４０に対して、所定のタイミング毎に所定の記憶領域のリードを行うリード部５１と、リードデータおよびデータ記憶部５３に記憶されたデータを比較する比較部５２と、比較結果が一致しないことを示す場合、自系のプロセッサシステム１０を、フォールトトレラントシステム１から切り離す切り離し部５４と、を備える。【選択図】      図１
2017146833.tif 000002
【特許請求の範囲】
【請求項１】
フォールトトレラントシステムにおいて同一のハードウェア・コンポーネントで構成される複数のシステムのそれぞれに含まれる監視装置であって、
自系の前記システムにおいて他系の前記システムとの間でロックステップ動作を行うプロセッサシステムに接続された外部デバイスに対して、所定のタイミング毎に所定の記憶領域のリードを行うリード部と、
前記リード部により読み込まれたリードデータおよびデータ記憶部に記憶されたデータを比較する比較部と、
前記比較部による比較結果が一致しないことを示す場合、自系のプロセッサシステムを、前記フォールトトレラントシステムから切り離す切り離し部と、
を備えた監視装置。
【請求項２】
前記プロセッサシステムによる前記外部デバイスに対する所定の時点でのアクセス先のアドレスをアドレス記憶部に記憶し、前記アドレスが示す記憶領域のデータを前記データ記憶部に記憶するとともに、前記アドレスが示す記憶領域のデータが更新される度に前記データ記憶部を更新するデータ更新部をさらに備え、
前記リード部は、前記外部デバイスにおける前記アドレス記憶部のアドレスの記憶領域に対して所定のタイミング毎にリードを行うことを特徴とする請求項１に記載の監視装置。
【請求項３】
請求項１または請求項２に記載の監視装置と、
前記プロセッサシステムと、
前記外部デバイスと、
前記プロセッサシステムに接続される入出力システムと、
自系および他系の各前記プロセッサシステムからの自系の前記入出力システムへのデータを比較することによりロックステップ外れを検出すると、自系のプロセッサシステムを、必要に応じて前記フォールトトレラントシステムから切り離す制御装置と、
をそれぞれが有する複数のシステムからなるフォールトトレラントシステム。
【請求項４】
フォールトトレラントシステムに含まれる同一のハードウェア・コンポーネントで構成される複数のシステムのそれぞれにおいて、
自系の前記システムにおいて他系の前記システムとの間でロックステップ動作を行うプロセッサシステムに接続された外部デバイスに対して、所定のタイミング毎に所定の記憶領域のリードを行い、
読み込んだリードデータおよびデータ記憶部に記憶されたデータを比較し、
比較結果が一致しないことを示す場合、自系のプロセッサシステムを、前記フォールトトレラントシステムから切り離す方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ロックステップ方式のフォールトトレラントシステムに関する。
【背景技術】
【０００２】
稼働中の計算機でハードウェア故障が発生しても、その故障を隠蔽して、計算機上で処理されているサービスを継続可能にする技術として、フォールトトレラントシステムが知られている。フォールトトレラントシステムの一例として、ロックステップ方式を採用するものがある。ロックステップ方式では、計算機のハードウェア・コンポーネントは多重化されている。そして、同一のハードウェア・コンポーネントからなる各システムは、同一のクロックで互いに同期して同一の動作を行う。以降、同一のクロックで同期して同一の動作を行うことをロックステップ動作とも記載する。また、同一のクロックで同期して同一の動作を行っている状態を、ロックステップ状態とも記載する。また、故障等に起因してロックステップ状態を維持できなくなることを、ロックステップ外れとも記載する。ロックステップ方式は、複数のシステムの１つが故障してロックステップ外れが発生しても、正常な他のシステムによる動作の継続を可能にする。
【０００３】
このようなロックステップ方式を採用したフォールトトレラントシステムの一例が、特許文献１に記載されている。
【０００４】
特許文献１に記載されたフォールトトレラントシステムは、同一のハードウェア・コンポーネントからなる複数のシステムを有する。各システムは、ＣＰＵ（Central Processing Unit）を含むプロセッサシステムと、ストレージやネットワーク等のＩＯ（input output）デバイスを含む入出力システムと、制御装置とからなる。また、このうち、ロックステップ動作をしているのは、プロセッサシステムである。入出力システムは、プロセッサシステムのＣＰＵで実行されるソフトウェアによるミラーリング処理によって、他の入出力システムとの間で冗長性を保つよう構成されている。
【０００５】
制御装置は、プロセッサシステム間の動作に不一致が生じたか否かを検出する。例えば、制御装置は、自系のプロセッサシステムから入出力システムへ転送されるデータと、他系のプロセッサシステムから自系の入出力システムへ転送されるデータとを比較する。これらのデータに不一致が生じた場合、いずれかのシステムの制御装置が、自系のプロセッサシステムを、フォールトトレラントシステムから切り離す。
【０００６】
データに不一致が生じるのは、例えば、ＣＰＵから流れてくるデータの一部が化けた場合や、データのタイミングがずれた場合等である。なお、どちらのシステムのプロセッサシステムを切り離すかについては、各種の方法が提案されているが、例えば、プロセッサシステムのＭＴＢＦ（Mean Time Between Failure）や、故障の発生頻度に基づき優先度を算出して決定する方法がある。
【０００７】
また、ロックステップ動作をしているプロセッサシステム内部で故障が発生する場合もある。例えば、外部からの電気的ノイズ、宇宙線やその他放射線によるメモリ化けなどにより、一時的に故障と判断される場合がある。この場合、エラーを検出したプロセッサシステムが、自らをフォールトトレラントシステムから切り離す。
【０００８】
例えば、ＣＰＵは、何らかのエラーを検出した場合、プロセッサシステムに対してシャットダウンメッセージを送出する。そして、シャットダウンメッセージを受信したプロセッサシステムは、自らをフォールトトレラントシステムから切り離す。
【０００９】
このようにして、ロックステップ方式のフォールトトレラントシステムでは、故障の可能性があるプロセッサシステムが切り離されると、他のシステムのプロセッサシステムが処理を継続する。その後、正常であると判断されたプロセッサシステムがフォールトトレラントシステムに再び組み込まれると、これらのプロセッサシステムは、再びロックステップ動作を行う。
【先行技術文献】
【特許文献】
【００１０】
【特許文献１】特開２００９−２０５６３０号公報
【発明の概要】
【発明が解決しようとする課題】
【００１１】
しかしながら、特許文献１に記載された関連技術に代表されるロックステップ方式のフォールトトレラントシステムでは、ロックステップ動作を行うプロセッサシステムに接続された外部デバイスが故障した場合に、次の課題が発生する。すなわち、外部デバイスの故障に起因するロックステップ外れにより、正常なプロセッサシステムが切り離される可能性があり、その結果、システム・クラッシュが発生する可能性がある。
【００１２】
この課題について詳細に説明する。プロセッサシステムがロックステップ動作中に外部デバイスが故障したとする。その後、故障した外部デバイスへのアクセスが発生すると、プロセッサシステムは、ロックステップ状態を維持できなくなる。そこで、上述した制御装置は、ロックステップ外れを検出し、いずれかのプロセッサシステムを切り離すことになる。このとき、故障した外部デバイスが接続された側のプロセッサシステムが切り離されるべきである。ところが、外部デバイスは、故障を通知する機能を有していないことが多い。このため、制御装置は、外部デバイスの故障を知ることができない。したがって、各制御装置は、検出したロックステップ外れが実際には外部デバイスの故障に起因するにも関わらず、外部デバイスの故障以外の要素を考慮して、いずれのプロセッサシステムを切り離すかを決定する。そのため、故障した外部デバイスが接続されていない側のプロセッサシステムが切り離される可能性がある。
【００１３】
そして、故障した外部デバイスが接続された側のプロセッサシステムが処理を継続しているとする。この後、このプロセッサシステムにおいて、ＣＰＵが外部デバイスの故障によるエラーを検出すると、自系のプロセッサシステムを切り離す。この場合、本来正常であったはずの他のプロセッサシステムが既に切り離されているため、両系のプロセッサシステムが切り離されることになる。そのため、システム・クラッシュが発生してしまう。あるいは、三重化以上に多重化されているフォールトトレラントシステムであったとしても、可用性が低下してしまう。
【００１４】
例えば、プロセッサシステムに接続される外部デバイスとして、フラッシュメモリを想定する。フラッシュメモリには、ＢＩＯＳのコードが格納されているとする。そして、ロックステップ動作中にこのようなフラッシュメモリの故障に起因するロックステップ外れが検出され、故障したフラッシュメモリが接続されていない側のプロセッサシステムが切り離されたとする。すると、処理を継続すべきプロセッサシステムは、再起動時にＢＩＯＳのコードを読み込むため、故障したフラッシュメモリにアクセスしてエラーを検出し、自系を切り離すことになる。その結果、両系のプロセッサシステムが切り離され、上述のシステム・クラッシュまたは可用性の低下が発生する。
【００１５】
本発明は、上述の課題を解決するためになされたものである。すなわち、本発明は、フォールトトレラントシステムにおいてロックステップ動作を行う領域に接続された外部デバイスが故障した場合に発生しうるシステム・クラッシュや可用性の低下を、より確実に防止する技術を提供することを目的とする。
【課題を解決するための手段】
【００１６】
本発明の監視装置は、フォールトトレラントシステムにおいて同一のハードウェア・コンポーネントで構成される複数のシステムのそれぞれに含まれる監視装置であって、自系の前記システムにおいて他系の前記システムとの間でロックステップ動作を行うプロセッサシステムに接続された外部デバイスに対して、所定のタイミング毎に所定の記憶領域のリードを行うリード部と、前記リード部により読み込まれたリードデータおよびデータ記憶部に記憶されたデータを比較する比較部と、前記比較部による比較結果が一致しないことを示す場合、自系のプロセッサシステムを、前記フォールトトレラントシステムから切り離す切り離し部と、を備える。
【００１７】
また、本発明のフォールトトレラントシステムは、上述の監視装置と、前記プロセッサシステムと、前記外部デバイスと、前記プロセッサシステムに接続される入出力システムと、自系および他系の各前記プロセッサシステムからの自系の前記入出力システムへのデータを比較することによりロックステップ外れを検出すると、自系のプロセッサシステムを、必要に応じて前記フォールトトレラントシステムから切り離す制御装置と、をそれぞれが有する複数のシステムからなる。
【００１８】
また、本発明の方法は、フォールトトレラントシステムに含まれる同一のハードウェア・コンポーネントで構成される複数のシステムのそれぞれにおいて、自系の前記システムにおいて他系の前記システムとの間でロックステップ動作を行うプロセッサシステムに接続された外部デバイスに対して、所定のタイミング毎に所定の記憶領域のリードを行い、読み込んだリードデータおよびデータ記憶部に記憶されたデータを比較し、比較結果が一致しないことを示す場合、自系のプロセッサシステムを、前記フォールトトレラントシステムから切り離す。
【発明の効果】
【００１９】
本発明は、フォールトトレラントシステムにおいてロックステップ動作を行う領域に接続された外部デバイスが故障した場合に発生しうるシステム・クラッシュや可用性の低下を、より確実に防止する技術を提供することができる。
【図面の簡単な説明】
【００２０】
【図１】本発明の第１の実施の形態としてのフォールトトレラントシステムの構成の概要を示すブロック図である。
【図２】本発明の第１の実施の形態としてのフォールトトレラントシステムに含まれるシステムのハードウェア要素の一例を示す図である。
【図３】本発明の第１の実施の形態において外部デバイスを監視する動作を説明するフローチャートである。
【図４】本発明の第２の実施の形態としてのフォールトトレラントシステムの構成の概要を示すブロック図である。
【図５】本発明の第２の実施の形態としてのフォールトトレラントシステムに含まれるシステムのハードウェア要素の一例を示す図である。
【図６】本発明の第２の実施の形態としてのフォールトトレラントシステムにおいてアドレス記憶部およびデータ記憶部を更新する動作を説明するフローチャートである。
【図７】本発明の第２の実施の形態において外部デバイスを監視する動作を説明するフローチャートである。
【発明を実施するための形態】
【００２１】
以下、本発明の実施の形態について、図面を参照して詳細に説明する。
【００２２】
（第１の実施の形態）
本発明の第１の実施の形態としてのフォールトトレラントシステム１の構成を図１に示す。図１において、フォールトトレラントシステム１は、複数のシステム１００を含む。なお、図１には、２つのシステム１００を示しているが、フォールトトレラントシステム１が含むシステム１００の数は、限定されない。
【００２３】
各システム１００は、同一のハードウェア・コンポーネントで構成される。詳細には、各システム１００は、プロセッサシステム１０と、入出力システム２０と、制御装置３０と、外部デバイス４０と、監視装置５０とを有する。
【００２４】
プロセッサシステム１０は、各システム１００間でロックステップ動作を行う。プロセッサシステム１０の詳細については後述する。
【００２５】
入出力システム２０は、１つ以上のＩＯ（Input Output）デバイスを含む。入出力システム２０は、プロセッサシステム１０で実行されるソフトウェアによるミラーリング処理によって、他の入出力システム２０との間で冗長性を保つよう構成されている。
【００２６】
制御装置３０は、プロセッサシステム１０および入出力システム２０の間に接続され、プロセッサシステム１０がロックステップ状態にあるか否かを監視する。制御装置３０の詳細については後述する。なお、各システム１００の制御装置３０間は、クロスリンクにより相互に通信可能に接続される。
【００２７】
外部デバイス４０は、記憶領域を有するデバイスである。外部デバイス４０は、プロセッサシステム１０に接続される。例えば、外部デバイス４０は、フラッシュメモリであってもよい。
【００２８】
監視装置５０は、外部デバイス４０が故障しているか否かを監視する。監視装置５０は、リード部５１と、比較部５２と、データ記憶部５３と、切り離し部５４とを有する。監視装置５０の詳細については後述する。
【００２９】
なお、図１には、各システム１００を構成する要素を１つずつ示しているが、各システム１００が含む各要素の数は、限定されない。
【００３０】
ここで、システム１００に含まれるハードウェア要素の一例を図２に示す。図２において、プロセッサシステム１０は、ＣＰＵ（Central Processing Unit）１０１と、主記憶としてのメモリ１０２と、外部デバイスインタフェース１０３と、ＣＰＵステートマシン１０４とを含む。また、監視装置５０は、タイマ５０１と、リード生成回路５０２と、レジスタ５０３と、比較回路５０４と、制御信号出力回路５０５とを含む。なお、図２は一例であり、システム１００に含まれるハードウェア要素はこれらに限定されない。
【００３１】
次に、プロセッサシステム１０の詳細について、図１および図２を参照して説明する。
【００３２】
上述したように、プロセッサシステム１０は、自系および他系のシステム１００間でロックステップ動作を行う。具体的には、各システム１００間で、ＣＰＵ１０１は、同一のクロックで同期して同一の動作を行い、メモリ１０２は同一の状態を保つ。なお、自系とは、自身が含まれるシステム１００、または、そのシステム１００に含まれる要素をさす。他系とは、自身が含まれないシステム１００、または、そのシステム１００に含まれる要素をさす。
【００３３】
また、プロセッサシステム１０は、自系の入出力システム２０に、制御装置３０を介してアクセス可能となっている。また、プロセッサシステム１０は、他系の入出力システム２０に、自系の制御装置３０および他系の制御装置３０を介してアクセス可能となっている。プロセッサシステム１０は、自系および他系の入出力システム２０に対して、データを転送する。
【００３４】
また、プロセッサシステム１０は、外部デバイス４０の記憶領域にアクセスする。具体的には、外部デバイスインタフェース１０３は、ＣＰＵ１０１からのコマンドに従って、外部デバイス４０へのライトまたはリードを実行する。また、外部デバイスインタフェース１０３は、後述の監視装置５０からの要求に基づいて、外部デバイス４０の所定の記憶領域へのリードを実行する。
【００３５】
また、プロセッサシステム１０の状態は、ＣＰＵステートマシン１０４によって示される。ＣＰＵステートマシン１０４は、自系のプロセッサシステム１０がフォールトトレラントシステム１に組み込まれて動作中のオンライン状態であるか、切り離されたブロークン状態であるかを少なくとも記憶可能である。
【００３６】
次に、監視装置５０の詳細について、図１および図２を参照して説明する。
【００３７】
リード部５１は、外部デバイス４０における所定の記憶領域に対して、所定のタイミング毎にリードを行う。例えば、リード部５１は、タイマ５０１と、リード生成回路５０２とによって構成され、プロセッサシステム１０の外部デバイスインタフェース１０３を制御することにより、その機能を実現する。タイマ５０１は、所定のタイミングを決定する信号を出力する。また、リード生成回路５０２は、タイマ５０１から出力される信号のタイミングで、外部デバイス４０の所定の記憶領域に対するリード命令を、外部デバイスインタフェース１０３に対して出力する。所定の記憶領域とは、例えば、外部デバイス４０において、更新されることのない固定値が記憶されている記憶領域であってもよい。外部デバイスインタフェース１０３から返却されるリードデータは、後述の比較部５２に入力される。
【００３８】
例えば、外部デバイス４０がフラッシュメモリであるとする。一般的に、フラッシュメモリには、ＳＦＤＰ（Serial Flash Discoverable Parameter）が記憶されている。ＳＦＤＰは、ＪＥＤＥＣ（Joint Electron Device Engineering Council）で規定された３２ビットの固定値となり、ベンダー依存がない。この場合、リード部５１は、ＳＦＤＰの記憶領域に対するリード命令を出力すればよい。
【００３９】
データ記憶部５３は、レジスタ５０３によって構成される。データ記憶部５３は、比較部５２によって用いられるデータを記憶している。比較部５２によって用いられるデータは、リード部５１により読み込まれたリードデータと比較されるためのデータである。例えば、リード部５１によって、所定の記憶領域として、固定値が記憶されている記憶領域が適用されている場合、データ記憶部５３は、その固定値をあらかじめ記憶しておけばよい。
【００４０】
前述のように、外部デバイス４０がフラッシュメモリであり、リード部５１により読み込まれる所定の記憶領域として、上述のＳＦＤＰの領域が定められているとする。この場合、データ記憶部５３は、ＳＦＤＰの値を記憶しておく。
【００４１】
比較部５２は、リード部５１により得られたリードデータと、データ記憶部５３のデータとを比較する。具体的には、比較部５２は、比較回路５０４によって構成される。比較回路５０４には、リード部５１により生成されたリード命令の応答としてのリードデータが、プロセッサシステム１０の外部デバイスインタフェース１０３から入力される。また、比較回路５０４には、レジスタ５０３のデータが入力される。そして、比較回路５０４は、リードデータと、レジスタ５０３のデータとの比較結果を、切り離し部５４に出力する。
【００４２】
切り離し部５４は、比較部５２による比較結果が一致しないことを示す場合、必要に応じて、自系のプロセッサシステム１０をフォールトトレラントシステム１から切り離す。具体的には、切り離し部５４は、制御信号出力回路５０５によって構成され、プロセッサシステム１０のＣＰＵステートマシン１０４を制御することによりその機能を実現する。制御信号出力回路５０５は、比較回路５０４から、不一致を表す信号が入力されると、プロセッサシステム１０のＣＰＵステートマシン１０４に対して、ブロークン状態に遷移させるための制御信号を出力する。その他、制御信号出力回路５０５は、プロセッサシステム１０を構成する各部に対して、切り離しに必要な停止信号やリセット信号等を出力する。
【００４３】
次に、制御装置３０について詳細に説明する。
【００４４】
制御装置３０は、自系のプロセッサシステム１０から自系の入出力システム２０へ流れるデータと、他系のプロセッサシステム１０から自系の入出力システム２０へ流れるデータとを比較する。そして、比較結果が一致しない場合、制御装置３０は、必要に応じて、自系のプロセッサシステム１０をフォールトトレラントシステム１から切り離す。
【００４５】
具体的には、比較結果が一致しない場合、制御装置３０は、自系のプロセッサシステム１０を切り離す必要があるか否かを判断する。具体的には、制御装置３０は、自系のプロセッサシステム１０が他系より故障の可能性が高いと判断可能な場合に切り離す必要があると判断する。例えば、制御装置３０は、各プロセッサシステム１０について記録された過去の切り離しおよび再組込みの回数に基づいて、故障の可能性がより高いプロセッサシステム１０を判定してもよい。
【００４６】
以上のように構成されたフォールトトレラントシステム１の動作について、図面を参照して説明する。
【００４７】
なお、フォールトトレラントシステム１が起動すると、各システム１００のプロセッサシステム１０は、ロックステップ動作を開始する。そして、ロックステップ動作中、制御装置３０によるロックステップ状態の監視動作と、プロセッサシステム１０による外部デバイス４０の監視動作とが繰り返し行われる。
【００４８】
ここでは、外部デバイス４０の監視動作を図３に示す。
【００４９】
図３では、まず、リード部５１は、所定のタイミングまで待機する（ステップＳ１）。
【００５０】
次に、リード部５１は、外部デバイス４０の所定の記憶領域に対してリードを行う（ステップＳ２）。
【００５１】
次に、比較部５２は、リード部５１によるリードデータと、データ記憶部５３のデータとを比較する（ステップＳ３）。
【００５２】
ここで、リードデータとデータ記憶部５３のデータとが一致していれば、フォールトトレラントシステム１は、ステップＳ１からの動作を繰り返す。
【００５３】
一方、リードデータとデータ記憶部５３のデータとが一致していなければ、切り離し部５４は、自系のプロセッサシステム１０を、フォールトトレラントシステム１から切り離す（ステップＳ４）。
【００５４】
以降、フォールトトレラントシステム１は、切り離されていないシステム１００のプロセッサシステム１０によって、処理を続行する。処理を続行するプロセッサシステム１０が１つであれば、そのプロセッサシステム１０は、ロックステップ動作を行わずに動作する。
【００５５】
以上で、監視装置５０は、外部デバイス４０を監視する動作を終了する。
【００５６】
このようなフォールトトレラントシステム１の動作を具体例で説明する。
【００５７】
ここでは、フォールトトレラントシステム１は、二重化されており、２つのシステム１００ａおよび１００ｂを含むものとする。また、それぞれのシステム１００ａおよび１００ｂにおいて、プロセッサシステム１０には、外部デバイス４０としてフラッシュメモリが接続されているとする。また、フラッシュメモリには、ＢＩＯＳ（Basic Input Output System）のコードが記憶されているものとする。また、このフラッシュメモリは、ＳＦＤＰを記憶しているものとし、プロセッサシステム１０のデータ記憶部５３には、ＳＦＤＰの値が記憶されている。また、このフラッシュメモリ自体は、自身の故障を検出し通知する機能を有していないものとする。また、このフラッシュメモリへのアクセスは、主記憶としてのメモリ１０２に対するアクセスに比べてアクセス頻度が低いものとする。例えば、システム１００の起動時または再起動時に、ＣＰＵ１０１がフラッシュメモリからＢＩＯＳのコードをリードする程度のアクセス頻度であるものとする。また、制御装置３０によってロックステップ状態が外れたことが検出された場合、システム１００ａおよび１００ｂのうち、過去の切り離しおよび再組込みの回数が多い方のプロセッサシステム１０が切り離されるものとする。
【００５８】
まず、フォールトトレラントシステム１において、システム１００ａのプロセッサシステム１０およびシステム１００ｂのプロセッサシステム１０は、ロックステップ動作を行っている。
【００５９】
また、システム１００ａおよび１００ｂでは、各制御装置３０が、ロックステップ状態を監視する動作を繰り返し行っている。この具体例では、この時点までは、ロックステップ状態が維持されているものとする。
【００６０】
また、システム１００ａおよび１００ｂでは、プロセッサシステム１０が、フラッシュメモリを監視する動作を繰り返し行っている。
【００６１】
ここで、システム１００ａのフラッシュメモリが故障したとする。
【００６２】
すると、システム１００ａでフラッシュメモリを監視する動作において、フラッシュメモリのＳＦＤＰの領域からリードされたリードデータと、データ記憶部５３に記憶してあるＳＦＤＰの値とが一致しなくなる（ステップＳ３でＮｏ）。
【００６３】
そこで、システム１００ａのプロセッサシステム１０は、フォールトトレラントシステム１から切り離される（ステップＳ４）。
【００６４】
以降、システム１００ｂのプロセッサシステム１０が、フォールトトレラントシステム１における処理を継続する。
【００６５】
これにより、以降、システム１００ａおよび１００ｂのプロセッサシステム１０間でロックステップ動作が行われないので、制御装置３０によりロックステップ外れが検出されることはない。したがって、フラッシュメモリが故障していない方のシステム１００ｂのプロセッサシステム１０が、ロックステップ外れからの判断によりフォールトトレラントシステム１から切り離される状態が回避される。
【００６６】
ここで、本実施の形態の具体例との比較のために、システム１００ａおよび１００ｂが監視装置５０を含んでいない場合について説明する。
【００６７】
この場合、システム１００ａにおいてアクセス頻度の低いフラッシュメモリが故障しても、その故障によるエラーは、システム１００ａの再起動時にＣＰＵ１０１がＢＩＯＳをリードする時点まで検出されない可能性が高い。そのため、システム１００ａおよび１００ｂのプロセッサシステム１０では、フラッシュメモリの故障に起因するロックステップ外れが制御装置３０により検出される。そして、過去の切り離しおよび再組込みの回数等に基づいて、フラッシュメモリが故障していない方のシステム１００ｂのプロセッサシステム１０が切り離される可能性がある。この場合、処理を継続するシステム１００ａのプロセッサシステム１０が再起動した際に、ＢＩＯＳのコードを読み込むため、故障したフラッシュメモリにアクセスすることになる。そして、システム１００ａのプロセッサシステム１０は、フラッシュメモリの故障によるエラーを検出し、フォールトトレラントシステム１から自身を切り離す。その結果、システム１００ａおよび１００ｂのプロセッサシステム１０が共に切り離されて、システム・クラッシュが発生してしまう。
【００６８】
本実施の形態の具体例では、システム１００ａおよび１００ｂが監視装置５０を含んでいるため、故障したフラッシュメモリが接続されたシステム１００ａのプロセッサシステム１０は、ロックステップ外れが検出される前に監視装置５０により切り離される。したがって、フォールトトレラントシステム１は、システム・クラッシュを回避することができる。
【００６９】
以上で、具体例の説明を終了する。
【００７０】
次に、本発明の第１の実施の形態の効果について述べる。
【００７１】
本発明の第１の実施の形態としてのフォールトトレラントシステムは、ロックステップ動作を行う領域に接続された外部デバイスが故障した場合に発生しうるシステム・クラッシュや可用性の低下を、より確実に防止する。
【００７２】
その理由について説明する。本実施の形態では、同一のハードウェア・コンポーネントで構成される複数のシステムからなるフォールトトレラントシステムにおいて、各監視装置が、次のように構成されるからである。すなわち、各監視装置において、リード部が、ロックステップ動作を行うプロセッサシステムに接続された外部デバイスの所定の記憶領域に対して、所定のタイミング毎にリードを行う。そして、比較部が、リード部により読み込まれたリードデータと、データ記憶部に記憶されたデータとを比較する。そして、切り離し部が、比較部による比較結果が一致しないことを示す場合、自系のプロセッサシステムをフォールトトレラントシステムから切り離すからである。
【００７３】
これにより、本実施の形態は、外部デバイスの故障をより速やかに検出し、外部デバイスが故障したシステムをより速やかにフォールトトレラントシステムから切り離すことができる。このため、本実施の形態は、外部デバイスの故障に起因するロックステップ外れが検出されて外部デバイスが故障していない方のプロセッサシステムがフォールトトレラントシステムから切り離される可能性を大幅に低減できる。その結果、本実施の形態は、処理を継続するプロセッサシステムが外部デバイスの故障によるエラーを検出した際に、既に他方のプロセッサシステムが切り離されているために招かれるシステム・クラッシュまたは可用性の低下を防止することができる。
【００７４】
（第２の実施の形態）
次に、本発明の第２の実施の形態について図面を参照して詳細に説明する。本実施の形態では、外部デバイスとして、フラッシュメモリのＳＦＤＰのように固定値が記憶された領域を特に持たない外部デバイスを適用する場合について説明する。なお、本実施の形態の説明において参照する各図面において、本発明の第１の実施の形態と同一の構成および同様に動作するステップには同一の符号を付して本実施の形態における詳細な説明を省略する。
【００７５】
まず、本発明の第２の実施の形態としてのフォールトトレラントシステム２の構成を図４に示す。図４において、フォールトトレラントシステム２は、複数のシステム２００を含む。なお、図４には、２つのシステム２００を示しているが、フォールトトレラントシステム２が含むシステム２００の数は、限定されない。
【００７６】
各システム２００は、同一のハードウェア・コンポーネントで構成される。システム２００は、本発明の第１の実施の形態におけるシステム１００に対して、監視装置５０に替えて監視装置６０を含む点が異なる。監視装置６０は、本発明の第１の実施の形態における監視装置５０に対して、リード部５１に替えてリード部６１と、データ記憶部５３に替えてデータ記憶部６３とを有する点が異なる。さらに、監視装置６０は、データ更新部６５と、アドレス記憶部６６とを有する点も異なる。
【００７７】
ここで、システム２００に含まれるハードウェア要素の一例を図５に示す。図５において、監視装置６０は、図２を参照して説明した本発明の第１の実施の形態と同一のハードウェア要素に加えて、さらに、アクセス監視回路６０６と、レジスタ６０７とを備える。なお、図５は一例であり、システム２００に含まれるハードウェア要素はこれらに限定されない。
【００７８】
次に、監視装置６０の詳細について、図４および図５を参照して説明する。
【００７９】
データ更新部６５は、プロセッサシステム１０による外部デバイス４０への所定の時点でのアクセス先のアドレスを、アドレス記憶部６６に記憶する。例えば、データ更新部６５は、アクセス監視回路６０６によって構成され、プロセッサシステム１０の外部デバイスインタフェース１０３を制御することにより、その機能を実現する。また、アドレス記憶部６６は、レジスタ６０７によって構成可能である。なお、所定の時点とは、例えば、システム２００が起動後、外部デバイス４０に対する初回のアクセス時点であってもよい。
【００８０】
また、データ更新部６５は、前述の所定の時点でのアクセス先の記憶領域のデータを、データ記憶部６３に記憶する。例えば、所定の時点でのアクセスがリードであれば、データ更新部６５は、その応答として得られるリードデータをデータ記憶部６３に記憶する。また、所定の時点のアクセスがライトであれば、データ更新部６５は、ライト対象のデータをデータ記憶部６３に記憶する。
【００８１】
また、データ更新部６５は、アドレス記憶部６６に記憶したアドレスが示す記憶領域のデータが更新される度に、データ記憶部６３のデータを更新する。外部デバイス４０における該当する記憶領域のデータの更新は、アクセス監視回路６０６によって検出可能である。アクセス監視回路６０６は、該当する記憶領域に対するライトおよびライトデータを検出すればよい。
【００８２】
リード部６１は、外部デバイス４０に対して、所定のタイミング毎に、アドレス記憶部６６に記憶されたアドレスの記憶領域のリードを行う。
【００８３】
以上のように構成されたフォールトトレラントシステム２の動作について、図面を参照して説明する。
【００８４】
なお、フォールトトレラントシステム２が起動すると、本発明の第１の実施の形態としてのフォールトトレラントシステム１と同様に、各システム２００のプロセッサシステム１０は、ロックステップ動作を開始する。そして、ロックステップ動作中、制御装置３０によるロックステップ状態の監視動作と、監視装置６０による外部デバイス４０の監視動作とが繰り返し行われる。ただし、本実施の形態では、監視装置６０による監視動作の詳細が、本発明の第１の実施の形態に対して異なる。
【００８５】
本実施の形態における監視装置６０の動作を、図６〜図７に示す。
【００８６】
図６は、データ更新部６５によるアドレス記憶部６６およびデータ記憶部６３の更新動作である。
【００８７】
図６では、まず、データ更新部６５は、プロセッサシステム１０による外部デバイス４０に対する所定の時点のアクセスを検出すると（ステップＳ１１でＹｅｓ）、そのアクセス先のアドレスを、アドレス記憶部６６に記憶する（ステップＳ１２）。
【００８８】
次に、データ更新部６５は、アクセス先の記憶領域に記憶されるデータを、データ記憶部６３に記憶する（ステップＳ１３）。
【００８９】
前述のように、データ更新部６５は、ステップＳ１１で検出されたアクセスがリードであれば、リードデータをデータ記憶部６３に記憶する。また、検出されたアクセスがライトであれば、データ更新部６５は、ライトデータをデータ記憶部６３に記憶する。
【００９０】
次に、データ更新部６５は、アドレス記憶部６６のアドレスの記憶領域に対するライトを検出すると（ステップＳ１４でＹｅｓ）、ライトデータを用いて、データ記憶部６３を更新する（ステップＳ１５）。
【００９１】
そして、データ更新部６５は、ステップＳ１４からの動作を繰り返す。
【００９２】
以上で、アドレス記憶部６６およびデータ記憶部６３の更新動作の説明を終了する。
【００９３】
次に、外部デバイス４０の監視動作を図７に示す。
【００９４】
図７において、外部デバイス４０の監視動作は、図３を参照して説明した本発明の第１の実施の形態の動作に対して、ステップＳ２の代わりにステップＳ２２を実行する点が異なる。
【００９５】
ステップＳ２２において、リード部６１は、アドレス記憶部６６のアドレスが示す外部デバイス４０の記憶領域に対して、リードを行う（ステップＳ２２）。
【００９６】
以降、監視装置６０は、ステップＳ３〜Ｓ４まで、本発明の第１の実施の形態における監視装置５０と同様に動作する。
【００９７】
すなわち、ステップＳ３において、比較部５２は、アドレス記憶部６６のアドレスが示す記憶領域から読み込んだリードデータと、その記憶領域から事前に読み込んでデータ記憶部６３に記憶しておいたデータとを比較することになる。もし、リードデータがデータ記憶部６３のデータに一致しない場合、切り離し部５４は、自系のプロセッサシステム１０をフォールトトレラントシステム２から切り離す。以降、フォールトトレラントシステム２は、切り離されていないシステム２００のプロセッサシステム１０によって、処理を続行する。処理を続行するプロセッサシステム１０が１つであれば、そのプロセッサシステム１０は、ロックステップ動作を行わずに動作する。
【００９８】
以上で、監視装置６０は、外部デバイス４０を監視する動作を終了する。
【００９９】
次に、本発明の第２の実施の形態の効果について述べる。
【０１００】
本実施の形態としてのフォールトトレラントシステムは、ロックステップ動作を行う領域に、固定値の記憶領域を持たない外部デバイスが接続される場合でも、その外部デバイスの故障により発生しうるシステム・クラッシュや可用性の低下を、より確実に防止する。
【０１０１】
その理由について説明する。本実施の形態では、本発明の第１の実施の形態と同様の構成に加えて、監視装置において、データ更新部が、プロセッサシステムによる外部デバイスに対する所定の時点でのアクセス先のアドレスをアドレス記憶部に記憶する。そして、データ更新部が、そのアクセス先のアドレスが示す記憶領域のデータを、データ記憶部に記憶する。さらに、データ更新部が、アドレス記憶部のアドレスが示す記憶領域のデータが更新される度に、データ記憶部を更新する。そして、リード部は、外部デバイスにおけるアドレス記憶部のアドレスに対して、所定のタイミング毎にリードを行うからである。
【０１０２】
このように、本実施の形態では、比較部は、所定タイミング毎に、外部デバイスにおけるある記憶領域から読み込んだリードデータと、その記憶領域のデータとして事前に記憶し更新しているデータとを、比較することになる。その結果、本実施の形態は、プロセッサシステムに接続される外部デバイスが、ＳＦＤＰが規定される以前のフラッシュメモリであったり、ＳＦＤＰのような固定値の記憶領域を持たないその他の外部デバイスであったりする場合にも、対応可能となる。すなわち、本実施の形態は、そのような外部デバイスの故障をより速やかに検出し、外部デバイスが故障したシステムをより速やかにフォールトトレラントシステムから切り離すことができる。
【０１０３】
このため、本実施の形態は、外部デバイスの故障が検出される前にロックステップ外れが検出されて外部デバイスが故障していない方の正常なシステムがフォールトトレラントシステムから切り離される可能性を大きく低減できる。その結果、本実施の形態は、処理を継続するシステムのプロセッサシステムが外部デバイスの故障を検出した際に、既に他方のプロセッサシステムが切り離されているために招かれるシステム・クラッシュまたは可用性の低下を防止することができる。
【０１０４】
なお、本実施の形態において、外部デバイスとして、固定値が記憶された領域を持たない外部デバイスを適用する例について説明した。これに限らず、本実施の形態は、固定値が記憶された領域を持つ外部デバイス（例えば、ＳＦＤＰを持つフラッシュメモリ）にも適用可能である。
【０１０５】
また、上述した本発明の各実施の形態において、外部デバイスがフラッシュメモリである例について説明したが、外部デバイスはフラッシュメモリに限定されない。
【０１０６】
また、本発明の各実施の形態において、制御装置が、ロックステップ外れを検出した際に切り離すシステムを決定する基準として、切り離しおよび再組込みの回数に基づく例について説明した。ただし、制御装置が、ロックステップ外れに基づき切り離すシステムを決定する基準は限定されない。
【０１０７】
また、本発明の各実施の形態において、切り離し部が、ＣＰＵステートマシンを遷移させることによりプロセッサシステムの切り離しを行う例について説明したが、切り離しを実現するための処理および構成は限定されない。
【０１０８】
また、本発明の各実施の形態において、図２および図５を参照して説明した各装置に含まれるハードウェア要素は一例であり、これらに限定されない。
【０１０９】
また、本発明の各実施の形態において、監視装置は、物理的に独立した装置として実装されていなくてもよい。例えば、監視装置は、プロセッサシステムに含まれるハードウェア要素を含む集積回路の一部として実装されていてもよい。
【０１１０】
また、本発明の各実施の形態において、フォールトトレラントシステムが二重化された例を中心に説明した。これに限らず、各実施の形態は、三重化以上に多重化されたシステムにも適用可能である。
【０１１１】
また、上述した各実施の形態は、適宜組み合わせて実施されることが可能である。
【０１１２】
また、本発明は、上述した各実施の形態に限定されず、様々な態様で実施されることが可能である。
【符号の説明】
【０１１３】
１、２    フォールトトレラントシステム
１００、１００ａ、１００ｂ、２００    システム
１０    プロセッサシステム
２０    入出力システム
３０    制御装置
４０    外部デバイス
５０、６０    監視装置
５１、６１    リード部
５２    比較部
５３、６３    データ記憶部
５４    切り離し部
６５    データ更新部
６６    アドレス記憶部
１０１    ＣＰＵ
１０２    メモリ
１０３    外部デバイスインタフェース
１０４    ＣＰＵステートマシン
５０１    タイマ
５０２    リード生成回路
５０３    レジスタ
５０４    比較回路
５０５    制御信号出力回路
６０６    アクセス監視回路
６０７    レジスタ
【図１】
2017146833.tif 000003
【図２】
2017146833.tif 000004
【図３】
2017146833.tif 000005
【図４】
2017146833.tif 000006
【図５】
2017146833.tif 000007
【図６】
2017146833.tif 000008
【図７】
2017146833.tif 000009