(57)【要約】【課題】消費電力を低減することが可能なフォールトトラレントシステムを提供する。【解決手段】フォールトトレラントシステムは、複数のサブシステムを具備し、前記複数のサブシステムにより多重化されたシステムである。複数のサブシステムの各々は、二重化制御部と、ＣＰＵとを備える。二重化制御部は、タスクスケジューラから出力された連続するタスクを受信して、連続するタスクの優先度情報に基づいて、連続するタスクを他のサブシステムとの間で並列処理するか、又は、同時処理するかを選択する。ＣＰＵは、選択された処理方法で連続するタスクを処理する。【選択図】図１
2010224940.tif 000002
【特許請求の範囲】
【請求項１】
複数のサブシステムを具備し、前記複数のサブシステムにより多重化されたフォールトトレラントシステムであって、
前記複数のサブシステムの各々は、
タスクスケジューラから出力された連続するタスクを受信して、前記連続するタスクの優先度情報に基づいて、前記連続するタスクを他のサブシステムとの間で並列処理するか、又は、同時処理するかを選択する二重化制御部と、
前記選択された処理方法で前記連続するタスクを処理するＣＰＵと
を備える
フォールトトレラントシステム。
【請求項２】
請求項１に記載のフォールトトレラントシステムにおいて、
前記二重化制御部からの制御信号に基づいて、前記ＣＰＵのクロックを制御するクロック制御部を更に具備し、
前記二重化制御部は、前記並列処理の場合、前記同時処理の場合と比較して、前記クロックを下げるように前記クロック制御部を制御する
フォールトトレラントシステム。
【請求項３】
請求項１又は２に記載のフォールトトレラントシステムにおいて、
前記タスクの処理状態を示す状態情報を格納するＬＳレジスタを更に具備し、
前記二重化制御部は、前記状態情報が第１状態のとき、前記タスクスケジューラから前記連続するタスクとして出力された前記優先度情報の低いタスクを受信し、
前記ＣＰＵは、前記優先度情報に基づいて、前記並列処理の実行を開始し、
前記二重化制御部は、所定時間経過後に、前記状態情報を第２状態に変更し、
前記二重化制御部は、前記タスクスケジューラが前記第２状態に応答して前記連続するタスクとして出力した前記優先度情報の高いタスクを受信し、前記並列処理の終了に応答して前記状態情報を第３状態に変更し、
前記ＣＰＵは、前記優先度情報に基づいて、前記同時処理を実行し、
前記二重化制御部は、前記同時処理の終了後に、前記状態情報を前記第１状態に変更する
フォールトトレラントシステム。
【請求項４】
複数のサブシステムを具備し、前記複数のサブシステムにより多重化されたフォールトトレラントシステムの動作方法であって、
前記複数のサブシステムの各々が、
タスクスケジューラから出力された連続するタスクを受信するステップと、
前記連続するタスクの優先度情報に基づいて、前記連続するタスクを他のサブシステムとの間で並列処理するか、又は、同時処理するかを選択するステップと、
前記選択された処理方法で前記連続するタスクをＣＰＵで処理するステップと
を具備する
フォールトトレラントシステムの動作方法。
【請求項５】
請求項４に記載のフォールトトレラントシステムの動作方法において、
前記並列処理の場合、前記同時処理の場合と比較して、前記ＣＰＵのクロックを下げるステップを更に具備する
フォールトトレラントシステムの動作方法。
【請求項６】
請求項４又は５に記載のフォールトトレラントシステムの動作方法において、
前記タスクの処理状態を示す状態情報が第１状態のとき、前記タスクスケジューラから前記連続するタスクとして出力された前記優先度情報の低いタスクを受信するステップと、
前記優先度情報に基づいて、前記並列処理の実行を開始するステップと、
所定時間経過後に、前記状態情報を第２状態に変更するステップと、
前記タスクスケジューラが前記第２状態に応答して前記連続するタスクとして出力した前記優先度情報の高いタスクを受信するステップと、
前記並列処理の終了に応答して、前記状態情報を第３状態に変更するステップと、
前記優先度情報に基づいて、前記同時処理を実行するステップと、
前記同時処理の終了後に、前記状態情報を前記第１状態に変更するステップと
を更に具備する
フォールトトレラントシステムの動作方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、フォールトトレラントシステムに関する。
【背景技術】
【０００２】
データセンターの大型化などに伴い、そこで用いられるコンピュータシステムの消費電力の低減が求められている。コンピュータシステムとしては、フォールトトレラントシステムや通常のサーバシステムが知られている。フォールトトレラントシステムは、その構成要素の一部に異常が発生しても正常に処理を続行することが可能なシステムである。異常が発生した場合、通常のサーバシステムでは全体が停止するが、フォールトトレラントシステムでは処理を続行することができる。
【０００３】
関連する技術として、特開２００１−６７３３１号公報に、マルチプロセッサシステムの無停止プログラム変更方法およびマルチプロセッサシステムが開示されている。このマルチプロセッサシステムの無停止プログラム変更方法は、複数のプロセッサの各ローカルメモリにそれぞれプログラムを格納し、各プロセッサが自ローカルメモリに格納したプログラムをそれぞれ実行してジョブを処理するマルチプロセッサシステムにおいて、以下のプロセスを実行する。上記複数のプロセッサをクラスタ１からクラスタＮ（Ｎは、２以上で全プロセッサ数以下の自然数）までのＮ個のクラスタにグループ分けし、且つ、自プロセッサが属するクラスタと同一クラスタに属するプロセッサ群の間でのみジョブの分散処理を行なうクラスタ限定モードと全てのプロセッサの間でジョブの分散処理を行なうクラスタ非限定モードとを設ける。そして、通常動作時は、クラスタ非限定モードでジョブを分散処理する。一方、ログラム変更動作時は、まず、クラスタ非限定モードでのジョブの処理からクラスタ限定モードでのジョブの処理に移行する。移行が完了したら一つのクラスタを選択する。非選択クラスタのプロセッサ群でのジョブの処理および新たなジョブの受け付けを継続しつつ選択クラスタのプロセッサ群での新たなジョブの受け付けを停止する。選択クラスタのプロセッサ群で処理されるジョブが無くなったら選択クラスタのプロセッサ群の各ローカルメモリに格納されているプログラムを新たなプログラムにそれぞれ変更する。選択クラスタの全てのプロセッサのプログラムの変更を完了したら選択クラスタのプロセッサ群での新たなジョブの受け付けおよびジョブの処理を再開する。これを全てのクラスタについて順に繰り返した後、クラスタ限定モードでのジョブの処理をクラスタ非限定モードでのジョブの処理に戻して通常動作に戻ることを特徴とする。
【０００４】
また、特開平５−２３３１６２号公報に、データ退避方式および保守機能を備えたデータ処理システムが開示されている。このデータ退避方式は、マルチタスク処理を行なう中央処理装置と、該処理装置のタスクによって処理されるデータをオンラインで記憶する複数の記憶手段からなる多重化記憶装置と、該記憶装置のデータを退避させる退避用記憶装置を有する計算機システムで実行される。このデータ退避方式は、前記中央処理装置が、前記多重化記憶装置との間で通常の業務を処理する業務タスクと、前記多重化記憶装置の一部の記憶手段からオンラインで前記退避用記憶装置にデータを退避させる保守タスクを並列処理することを特徴とする。
【０００５】
特開２００５−１２２５８２号公報に、命令処理装置が開示されている。この命令処理装置は、命令入力部と、スケジュール管理部と、処理資源と、タスク実行処理量テーブルと、クロック周波数計算部と、クロック発生部とを備えたことを特徴とする。命令入力部は、処理命令及び処理要求時間を入力し、１つ以上のタスクとして発行する。スケジュール管理部は、命令入力部から発行されたタスクを受け取り、処理スケジューリングを行ってタスクを振り出す。処理資源は、スケジュール管理部から振り出されたタスクを実行し、処理結果として出力する。タスク実行処理量テーブルは、スケジュール管理部で使用するためのタスクの実行処理量を蓄えている。クロック周波数計算部は、スケジュール管理部から振り出されたタスクに同期してスケジュール管理部から当該タスクの処理要求時間と実行処理量とを受け取り、処理資源を動作させるためのクロックの周波数を計算する。クロック発生部は、クロック周波数計算部にて計算された周波数に応じたクロックを生成し、処理資源に供給する。
【０００６】
特開平７−１１４５２０号公報に、冗長資源の管理方法及びそれを用いた分散型フォールトトレラントコンピュータシステムが開示されている。この分散型フォールトトレラントコンピュータシステムは、複数のタスクを複数のコンピュータモジュールに割当て実行する。この分散型フォールトトレラントコンピュータシステムは、システム内の任意のコンピュータモジュールに故障が発生した場合、当該故障が発生したコンピュータモジュールが実行していたタスクと異なるタスクを割り当てられていた他のコンピュータモジュールの中から少なくとも１以上のコンピュータモジュールを選択し、当該選択したコンピュータモジュールに対し前記故障が発生したコンピュータモジュールが実行していたタスクを割当て実行させる選択実行手段を設けたことを特徴とする。
【０００７】
特開平７−２３９７９８号公報に、コンピュータのフォールト・トレラント方式が開示されている。このコンピュータのフォールト・トレラント方式は、コンピュータを障害の有無にかかわらず無停止で運転させることが可能である。このフォールト・トレラント方式は、２重化のバスに接続されたそれぞれ疎結合な第１および第２の中央処理部から構成される少なくとも１組の現用の中央処理部と１個の予備の中央処理部とを備え、前記各組の第１および第２の中央処理部は１つのタスク処理を同期して並列に実行し、前記第１，第２の中央処理部の一方の中央処理部に障害が発生したとき他方の中央処理部と前記予備の中央処理部とにより前記１つのタスク処理を実行することを特徴とする。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２００１−６７３３１号公報
【特許文献２】特開平５−２３３１６２号公報
【特許文献３】特開平７−１１４５２０号公報
【特許文献４】特開平７−２３９７９８号公報
【特許文献５】特開２００５−１２２５８２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
上記フォールトトレラントシステムでは、その構成要素の一部に異常が発生しても正常に処理を続行することが可能なように、ＣＰＵ等を二重化して動作させている。そのため、二重化している分だけ、同等の性能の通常のサーバシステムに比べ消費電力が大きくなってしまっている。フォールトトレラントシステムの消費電力の低減が望まれている。
【００１０】
従って、本発明の目的は、消費電力を低減することが可能なフォールトトラレントシステムを提供することにある。
【課題を解決するための手段】
【００１１】
本発明のフォールトトレラントシステムは、複数のサブシステムを具備し、複数のサブシステムにより多重化されたシステムである。複数のサブシステムの各々は、二重化制御部と、ＣＰＵとを備える。二重化制御部は、タスクスケジューラから出力された連続するタスクを受信して、連続するタスクの優先度情報に基づいて、連続するタスクを他のサブシステムとの間で並列処理するか、又は、同時処理するかを選択する。ＣＰＵは、選択された処理方法で連続するタスクを処理する。
【００１２】
本発明のフォールトトレラントシステムの動作方法は、複数のサブシステムを具備し、複数のサブシステムにより多重化されたシステムの動作方法である。フォールトトレラントシステムの動作方法は、複数のサブシステムの各々が、タスクスケジューラから出力された連続するタスクを受信するステップと、連続するタスクの優先度情報に基づいて、連続するタスクを他のサブシステムとの間で並列処理するか、又は、同時処理するかを選択するステップと、選択された処理方法で連続するタスクをＣＰＵで処理するステップとを具備する。
【発明の効果】
【００１３】
本発明により、消費電力を低減することが可能なフォールトトラレントシステムを提供することができる。
【図面の簡単な説明】
【００１４】
【図１】図１は、本発明の実施の形態に係るフォールトトレラントシステムの構成を示すブロック図である。
【図２】図２は、本発明の実施の形態に係るタスクスケジューラを説明する概略図である。
【図３】図３は、本発明の実施の形態に係るタスクの処理時間の関係を示す概略図である。
【図４】図４は、本発明の実施の形態に係るフォールトトレラントシステムの動作を示すフロー図である。
【発明を実施するための形態】
【００１５】
以下、本発明のフォールトトレラントシステムの実施の形態に関して、添付図面を参照して説明する。
【００１６】
まず、本発明の実施の形態に係るフォールトトレラントシステムの構成について説明する。図１は、本発明の実施の形態に係るフォールトトレラントシステムの構成を示すブロック図である。フォールトトレラントシステム２０は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）サブシステム１、２と、Ｉ／Ｏ（Ｉｎｐｕｔ／Ｏｕｔｐｕｔ）サブシステム３、４とを具備する。フォールトトレラントシステム２０は、ＣＰＵサブシステム１、２に同じタスク処理を行わせることで二重化動作を行うシステムである。
【００１７】
ＣＰＵサブシステム１は、ＣＰＵ５、二重化制御部７、及びメモリ１４を含む。同様に、ＣＰＵサブシステム２は、ＣＰＵ６、二重化制御部８、及びメモリ１５を含む。また、クロック制御部１０、及び、ロックステップレジスタ（以下、「ＬＳレジスタ」と記す）１１は、ＣＰＵサブシステム１、２に共通の構成である。ＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）１２は、タスクスケジューラ１３を含み、ＣＰＵサブシステム１、２に同じタスク処理を発行し、二重化動作を意識することなく動作する。
【００１８】
ＣＰＵ５とＣＰＵ６とは、ロックステップ動作で同じ処理を行うものとする。二重化制御部７、８は、いずれもＣＰＵバスコントローラ（図示されず）、及びメモリコントローラ（図示されず）を有する。二重化制御部７は、ＣＰＵ５、メモリ１４の制御を行う。それと共に、二重化制御部７は、ＣＰＵサブシステム１とＣＰＵサブシステム２との間、及びＣＰＵ５とＩ／Ｏサブシステム３、４との間の制御を行う。同様に、二重化制御部８は、ＣＰＵ６、メモリ１５の制御を行う。それと共に、二重化制御部８は、ＣＰＵサブシステム１とＣＰＵサブシステム２との間、及びＣＰＵ６とＩ／Ｏサブシステム３、４との間の制御を行う。
【００１９】
クロック制御部１０は、二重化制御部７、８からの指示に基づいて、ＣＰＵ５、６（クロック可変部９）の動作クロックを変化させる。ただし、ＣＰＵ５、６の動作クロックは同じとする。
ＬＳレジスタ１１は、ＣＰＵサブシステム１、２で実行されるタスクの状態を示す情報を有する。その情報は、タスクスケジューラ１３又は二重化制御部７、８がＣＰＵサブシステム１、２で実行されるタスクの状態を判断するために使用される。ただし、タスクの状態は、「状態０」、「状態１」及び「状態２」のいずれかである。「状態０」は並列処理フェーズであることを示し、「状態１」は同時処理フェーズのためのスタンバイの状態であることを示し、「状態２」は並列処理フェーズであることを示す。並列処理フェーズは、ＣＰＵ５とＣＰＵ６とが異なるタスクを並列で処理するフェーズである。同時処理フェーズは、ＣＰＵ５とＣＰＵ６とが同一のタスクを同時に処理するフェーズである。ＬＳレジスタ１１は、二重化制御部７、８により、タスクの状態に基づいて「状態０」、「状態１」、及び「状態２」のいずれかの値に設定される。
タスクスケジューラ１３は、ＯＳ１２の発行するタスクを実行するためのスケジュールを生成する。
【００２０】
次に、タスクスケジューラ１３について説明する。図２は、本発明の実施の形態に係るタスクスケジューラを説明する概略図である。
この図の例では、処理すべきタスクを、タスク１、２、３、…とし、タスク１はＴ１−１、Ｔ１−２、Ｔ１−３に分割され、タスク２はＴ２−１、Ｔ２−２、Ｔ２−３に分割され、タスク３はＴ３−１、Ｔ３−２、Ｔ３−３に分割され、以下同様であるとする。この場合、各タスクは、例えば１クロック分の処理ごとに分割される。そして、各タスクには、優先度に関する情報（図示されず）が含まれているとする。優先度に関する情報は、例えばそのタスクの情報処理が複雑で処理量が多いなど、情報処理が重い場合には優先度が高くなり、情報処理が軽い場合には優先度が低くなる情報に例示される。例えば、情報処理が重いタスクは、二重化動作を行ったほうが安全であると考えられるので、優先度を高く設定する。情報処理が軽いタスクは、二重化動作を行う必要がないと考えられるので、優先度を低く設定する。
【００２１】
この図の例の場合、タスクスケジューラ１３は、優先度に関する情報（図示されず）に基づいて、最初の二つのタスク１、２の優先度は低いと判定する。その場合、タスクスケジューラ１３は、タスク１をＣＰＵサブシステム１に、タスク２をＣＰＵサブシステム２にそれぞれ実行させるように、タスク１のＴ１−１、Ｔ１−２、Ｔ１−３と、タスク２のＴ２−１、Ｔ２−２、Ｔ２−３を交互にスケジューリングする。それにより、ＣＰＵサブシステム１、２が各タスクの優先度を参照した上で、ＣＰＵサブシステム１がまずＴ１−１を実行し、ＣＰＵサブシステム２がまずＴ２−１を実行し、続いて、ＣＰＵサブシステム１がＴ１−２を実行し、ＣＰＵサブシステム２がＴ２−２を実行し、その後、ＣＰＵサブシステム１がＴ１−３を実行し、ＣＰＵサブシステム２がＴ２−３を実行することになる。すなわち、並列処理（分散処理）を実行する。
【００２２】
続いて、タスクスケジューラ１３は、優先度に関する情報（図示されず）に基づいて、次のタスク３の優先度は高いと判定する。その場合、タスクスケジューラ１３は、タスク３をＣＰＵサブシステム１とＣＰＵサブシステム２とに同時に実行させる（二重化処理する）ように、タスク３のＴ３−１、Ｔ３−２、Ｔ３−３を連続してスケジューリングする。それにより、ＣＰＵサブシステム１、２が各タスクの優先度を参照した上で、ＣＰＵサブシステム１がＴ３−１、Ｔ３−２、Ｔ３−３を連続して実行するのと同時に、ＣＰＵサブシステム２がＴ３−１、Ｔ３−２、Ｔ３−３を連続して実行することになる。すなわち、同時処理を実行する。
【００２３】
その後、タスクスケジューラ１３は、優先度に関する情報（図示されず）に基づいて、次の二つのタスク４、５の優先度は低いと判定する。その場合、タスクスケジューラ１３は、タスク４をＣＰＵサブシステム１に、タスク５をＣＰＵサブシステム２にそれぞれ実行させるように、タスク４のＴ４−１、Ｔ４−２と、タスク５のＴ５−１、Ｔ５−２、Ｔ５−３を交互にスケジューリングする。それにより、ＣＰＵサブシステム１、２が各タスクの優先度を参照した上で、ＣＰＵサブシステム１がまずＴ４−１を実行し、ＣＰＵサブシステム２がまずＴ５−１を実行し、続いて、ＣＰＵサブシステム１がＴ４−２を実行し、ＣＰＵサブシステム２がＴ５−２を実行し、その後、ＣＰＵサブシステム１が休止している間に、ＣＰＵサブシステム２がＴ５−３を実行することになる。すなわち、並列処理（分散処理）を実行する。
以下同様である。なお、図中の「状態０」〜「状態２」や「Δｔ」については後述される。
【００２４】
図４は、本発明の実施の形態に係るフォールトトレラントシステムの動作を示すフロー図である。
ＯＳ１２は、タスクスケジューラ１３にタスクを発行する。タスクスケジューラ１３は、ＬＳレジスタ１１の状態を読み出す（ステップＳ０１）。ここでは、ＬＳレジスタ１１に格納されたタスクの状態が「状態０」であるとする。その場合、ＣＰＵサブシステム１、２は並列処理フェーズにある。タスクスケジューラ１３は、ＬＳ１１レジスタ１１から「状態０」を受け取る（ステップＳ０２）。一方、タスクスケジューラ１３は、ＯＳ１２から発行されたタスク１、２の優先度に関する情報より、タスク１、２の優先度が低いと判断する。そして、タスクスケジューラ１３は、ＬＳレジスタ１１からの「状態０」の情報と、タスク１、２の優先度（低い優先度）とに基づいて、タスク１、２が並列処理されるように各タスクを割り当てる（ステップＳ０３）。例えば、図２における「状態０」（、「状態１」）に示すように、各タスクを、Ｔ１−１、Ｔ２−１、Ｔ１−２、Ｔ２−２、Ｔ１−３、Ｔ２−３のような順番に割り当てる。その後、タスクスケジューラ１３は、割り当てられた「タスク１」及び「タスク２」に関する各タスクを二重化制御部７、８に同時に出力する。二重化制御部７、８は、「タスク１」及び「タスク２」に関する各タスクを同時に受信する（ステップＳ０４）。
【００２５】
二重化制御部７、８は、タスクの状態が「状態０」のとき、クロック制御部１０によりＣＰＵ５、６（クロック可変部９）の動作クロック周波数を標準周波数よりも低く設定する。そして、ＣＰＵサブシステム単位で独立したタスクの並列処理を行う。具体的には、二重化制御部７は、並列処理であることをタスク１、２の優先度に基づいて判断し、入力されたタスク１及びタスク２（これら並行に発行されるタスクは個々に独立したものとする）のうち、タスク１の処理（Ｔ１−１、Ｔ１−２、Ｔ１−３）をＣＰＵ５に対して発行する（ステップＳ０５）。例えば、受信した各タスクのうち、最初の処理から一つおきに発行する。ＣＰＵ５は、発行されたタスクを順番に実行する（ステップＳ０６）。一方、二重化制御部８は、並列処理であることをタスク１、２の優先度に基づいて判断し、入力されたタスク１及びタスク２のうち、タスク２の処理（Ｔ２−１、Ｔ２−２、Ｔ２−３）をＣＰＵ６に対して発行する（ステップＳ０７）。例えば、受信した各タスクのうち、二番目の処理から一つおきに実行する。ＣＰＵ６は、発行されたタスクを順番に実行する（ステップＳ０８）。並列処理の場合に、最初の処理から一つおきに発行するか、二番目の処理から一つおきに実行するかは、あらかじめ設定されている。
【００２６】
タスクの並列処理の一定時間（Δｔ）経過後、二重化制御部７、８は、ＬＳレジスタ１１のタスクの状態を「状態１」に書き換える信号を出力する（ステップＳ０９）。ＬＳレジスタ１１は、タスクの状態を「状態１」に変更する（ステップＳ１０）。このとき、二重化制御部７、８のいずれが書き換え信号を出力しても構わない。また、図２の例では、一定時間であるΔｔは４クロックに設定されているが、この一定時間Δｔは、他の時間であっても構わない。
【００２７】
タスクスケジューラ１３は、ＬＳレジスタ１１を逐次参照しており（ステップＳ１１）、ＬＳレジスタ１１のタスクの状態が「状態１」になったことを確認する（ステップＳ１２）。「状態１」は、既述のように同時処理フェーズのためのスタンバイの状態であることを示している。タスクスケジューラ１３は、次のタスクが優先度の高いタスクの場合、比較対象タスクとして位置づけ、単独でＣＰＵの割当てを行う。具体的には、タスクスケジューラ１３は、ＬＳレジスタ１１からの「状態１」の情報と、ＯＳ１２から発行されたタスク３の優先度に関する情報（優先度が高い）とに基づいて、タスク３が同時処理されるように各タスクを割り当てる（ステップＳ１３）。例えば、図２における「状態２」に示すように、各タスクを、Ｔ３−１、Ｔ３−２、Ｔ３−３のような順番に連続的に割り当てる。タスクスケジューラ１３は、割り当てられた「タスク３」に関する各タスクを二重化制御部７、８に同時に出力する。二重化制御部７、８は、「タスク３」に関する各タスクを同時に受信する（ステップＳ１４）。
【００２８】
一方、ＣＰＵ５は、タスク１の実行結果（結果１）を二重化制御部７へ出力し（ステップＳ１５）、二重化制御部７はその実行結果をＯＳ１２へ出力する（出力１）（ステップＳ１６）。同様に、ＣＰＵ６は、タスク２の実行結果（結果２）を二重化制御部８へ出力し（ステップＳ１７）、二重化制御部８はその実行結果をＯＳ１２へ出力する（出力２）（ステップＳ１８）。なお、図示していないが、ステップＳ１２の後、次のタスクが優先度の低いタスクの場合、例えばステップＳ０３〜Ｓ０８、Ｓ１５〜Ｓ１８を繰り返す。
【００２９】
二重化制御部７、８は、タスク３が同時処理であることをタスク３の優先度に基づいて判断する。そして、既にＣＰＵ５、６に割当てられているタスクの処理の完了（ステップＳ１６、Ｓ１８）を待って、ＬＳレジスタ１１のタスクの状態を「状態２」に書き換える信号を出力する（ステップＳ１９）。ＬＳレジスタ１１は、タスクの状態を「状態２」に変更する（ステップＳ２０）。タスクスケジューラ１３は、ＬＳレジスタ１１を逐次参照しており（ステップＳ２１）、ＬＳレジスタ１１のタスクの状態が「状態２」になったことを確認する（ステップＳ２２）。
【００３０】
二重化制御部７、８は、タスクの状態が「状態２」のとき、クロック制御部１０によりＣＰＵ５、６（クロック可変部９）の動作クロック周波数を標準周波数に設定する。そして、ＣＰＵサブシステム１，２で同じタスク３の同時処理（ロックステップ処理）を行う。具体的には、二重化制御部７は、入力されたタスク３の処理（Ｔ３−１、Ｔ３−２、Ｔ３−３）をＣＰＵ５に対して発行する（ステップＳ２３）。ＣＰＵ５は、発行されたタスクを順番に実行する（ステップＳ２４）。一方、二重化制御部８は、入力されたタスク３の処理（Ｔ３−１、Ｔ３−２、Ｔ３−３）をＣＰＵ６に対して発行する（ステップＳ２５）。ＣＰＵ６は、発行されたタスクを順番に実行する（ステップＳ２６）。ＣＰＵ５はタスク３の実行結果（結果３−１）を二重化制御部７へ出力し（ステップＳ２７）、ＣＰＵ６はタスク３の実行結果（結果３−２）を二重化制御部８へ出力し（ステップＳ２８）、二重化制御部８はその実行結果３−２を二重化制御部７へ出力する（ステップＳ２９）。二重化制御部７は、その実行結果３−１と実行結果３−２とを比較する（ステップＳ３０）。二重化制御部７は、比較結果に問題がなければ、その実行結果をＯＳ１２に出力する（出力３）（ステップＳ３１）。問題があれば、所定のエラー処理を実行する（図示されず）。
【００３１】
このように、ＬＳレジスタ１１が「状態２」の場合、比較対象タスク以降のタスクへのＣＰＵ割当てはロックされ、比較対象タスクのみがロックステップ動作で処理され、出力比較が行われる。これにより、比較対象タスクに対して出力比較を行う従来どおりのフォールトトレラントシステム処理が実施され、ＣＰＵ単体の障害検出が行われる。
【００３２】
二重化制御部７、８は、比較対象タスクの処理／出力比較が完了した時点（ステップＳ３１）で、ＬＳレジスタ１１のタスクの状態を「状態０」に書き換える信号を出力する（ステップＳ３２）。ＬＳレジスタ１１は、タスクの状態を「状態０」に変更する（ステップＳ３３）。これ以降のタスクに対しては、ステップＳ０１へ戻って並列処理が行われる。
【００３３】
なお、上記の例では、動作クロック数を並列処理で遅く、同時処理で標準にしているが、本発明はその例に限定されるものではない。例えば、動作クロック数を並列処理及び同時処理のいずれも標準としてもよいし、動作クロック数を並列処理及び同時処理のいずれも遅くしてもよい。
【００３４】
なお、上記の例（図２の例）では、タスク３が優先度の高いタスクとして処理を行っている。しかし、タスク３も優先度が低い場合、タスクスケジューラ１３は、上記タスク１、２の場合と同様の処理を行う。具体的には、タスク３、４（タスク４も優先度が低いとする）に並列処理の割り当てを行い（ステップＳ０３）、二重化制御部７、８及びＣＰＵ５、６が並列処理でタスクを実行する（ステップＳ０４〜Ｓ０８）。
【００３５】
図３は、本発明の実施の形態に係るタスクの処理時間の関係を示す概略図である。この図の例では、処理時間が同等のタスク１〜３が連続して処理される場合における、各処理時間同士の関係の一例を示している。図３の（ａ）は、全てのタスク（タスク１〜３）を両ＣＰＵサブシステム１、２で同時処理する従来のシステムでの処理時間の関係を示している。図３の（ｂ）〜（ｄ）は、タスクの一部（タスク１、２）をＣＰＵサブシステム１、２で分散処理する本発明のフォールトトラレントシステム２０での処理時間の関係を示している。ただし、（ａ）は動作クロック数を並列処理及び同時処理のいずれも標準とし、（ｂ）は動作クロック数を並列処理及び同時処理のいずれも遅くし、（ｄ）は動作クロック数を並列処理で遅く、同時処理で標準にしている。なお、図４の動作は、図３の（ｄ）の場合を示している。
【００３６】
本発明のフォールトトラレントシステム２０である図３の（ｂ）〜（ｄ）では、タスク１、２はＣＰＵサブシステム１、２において分散処理され、タスク３は両ＣＰＵサブシステム１、２で同時処理を実行後、出力比較が行なわれる。
そのため、本フォールトトラレントシステム２０は、図３の（ｂ）や（ｄ）の場合には、タスク１、２の並列処理により、両ＣＰＵサブシステム１、２に同じタスクを全て実行させる場合（図３の（ａ））に比較して、処理時間を低減することが可能となる。そして、総処理時間の低減をした分、一つのタスク処理にかかる電力を低減することが可能となる。
また、本フォールトトラレントシステム２０は、図３の（ｃ）や（ｄ）の場合、分散処理により総処理時間を低減した分、動作クロックを低下させて動作させている。動作クロック低下による処理時間の増加分を、並列処理により短縮された処理時間以下にすることで、低い動作クロックで両ＣＰＵサブシステム１、２を動作させても、同じタスクを標準周波数で処理を実施するのと同等又はそれ以下の処理時間で処理を行うことが可能となる。そして、動作クロック低下により、一つのタスク処理にかかる電力を低減することが可能となる。
【００３７】
なお、両ＣＰＵサブシステム１、２の出力比較（ステップＳ３０）により障害を検出した場合や、セルフテスト（図示されず）によりＣＰＵ５、６の障害を検出した場合には、二重化制御部７、８により当該ＣＰＵサブシステム１、２での処理は即座に停止し、他系のＣＰＵサブシステムのみに処理が発行することでフォールトトレラント動作を行う。その際、二重化制御部７、８よりクロック制御部１０により動作クロックを標準周波数に戻して動作させる。
【００３８】
以上に示すように、本発明では、発生頻度のまれなＣＰＵの出力比較相違検出に対処するために行われる同時処理と、高速に処理が可能な並列処理とのトレードオフの関係を適切に調整し、ＣＰＵの動作クロックを低下させることにより、ＣＰＵの動作クロック周波数に比例する消費電力を抑えたフォールトトレラントシステムを実現することが可能となる。すなわち、ＣＰＵサブシステムへの発行タスクの一部を分散して並列で処理させることで、出力応答処理速度を大幅に落とすことなく、ＣＰＵの動作クロックを下げ、消費電力を抑えることができる。
【００３９】
本発明は上記各実施の形態に限定されず、本発明の技術思想の範囲内において、各実施の形態は適宜変形又は変更され得ることは明らかである。
【符号の説明】
【００４０】
１、２    ＣＰＵサブシステム
３、４    Ｉ／Ｏサブシステム
５、６    ＣＰＵ
７、８    二重化制御部
９    クロック可変部
１０    クロック制御部
１１    ＬＳレジスタ
１２    ＯＳ
１３    タスクスケジューラ
１４、１５    メモリ
２０    フォールトトレラントシステム
【図１】
2010224940.tif 000003
【図２】
2010224940.tif 000004
【図３】
2010224940.tif 000005
【図４】
2010224940.tif 000006