(57)【要約】【課題】ロックステップ動作を維持しながら、ＣＰＵの動作周波数を変更するフォールトトレラントシステムを提供する。【解決手段】本発明のフォールトトレラントシステムは、第１のＣＰＵと、第１の主記憶部と、第１のＦＴ制御部とを備えた第１のＨＷシステムと、第２のＣＰＵと、第２の主記憶部と、第２のＦＴ制御部とを備えた第２のＨＷシステムと、ＢＩＯＳが記憶されている不揮発メモリとを備え、第１のＦＴ制御部と、第２のＦＴ制御部は、クロスリンクにより接続され、第１のＨＷシステムと、第２のＨＷシステムが、ロックステップ動作を行う。ＢＩＯＳ、第１のＦＴ制御部、第２のＦＴ制御部が連携して、第１のＣＰＵと、第２のＣＰＵの動作周波数を変更する。【選択図】図１
2013214210.tif 000002
【特許請求の範囲】
【請求項１】
第１のＣＰＵと、第１の主記憶部と、第１のＦＴ（Ｆａｕｌｔ  Ｔｏｌｅｒａｎｔ）制御部とを備えた第１のＨＷ（ｈａｒｄｗａｒｅ）システムと、
第２のＣＰＵと、第２の主記憶部と、第２のＦＴ制御部とを備えた第２のＨＷシステムと、
ＢＩＯＳが記憶されている不揮発メモリとを備え、
前記第１のＦＴ制御部と、前記第２のＦＴ制御部は、クロスリンクにより接続され、前記第１のＨＷシステムと、前記第２のＨＷシステムが、ロックステップ動作を行い、
前記ＢＩＯＳは、前記第１のＣＰＵと前記第２のＣＰＵの動作周波数の変更値を設定後、前記第１のＦＴ制御部と前記第２のＦＴ制御部にリセット命令を発行し、
前記第１のＦＴ制御部と前記第２のＦＴ制御部は、前記リセット命令を受信すると、前記第１のＣＰＵと前記第２のＣＰＵに、リセット信号を同時にアサートする
フォールトトレラントシステム。
【請求項２】
前記フォールトトレラントシステムは、更に省電力制御部を備え、
前記省電力制御部は、前記第１のＣＰＵの負荷の監視結果と、前記第１のＣＰＵの動作周波数に基づいて、前記動作周波数の変更が必要か判定し、
前記動作周波数の変更が必要である場合には、前記省電力制御部が、前記動作周波数の変更値を、前記ＢＩＯＳに通知し、
前記ＢＩＯＳが、前記動作周波数の変更値を前記第１のＣＰＵと、前記第２のＣＰＵに設定する
請求項１に記載のフォールトトレラントシステム。
【請求項３】
前記リセット信号のアサート前に、
前記ＢＩＯＳは、前記第１のＣＰＵのコンテキストデータを、前記第１の主記憶部に退避し、前記第２のＣＰＵのコンテキストデータを、前記第２の主記憶部に退避し、
前記リセット信号のアサート後に、
前記第１のＣＰＵは、初期化処理中に、退避していた前記第１のＣＰＵのコンテキストデータを読み込み、前記第２のＣＰＵは、初期化処理中に、退避していた前記第２のＣＰＵのコンテキストデータを読み込み、
前記第１のＣＰＵと前記第２のＣＰＵは、前記動作周波数の変更値で、クロック動作を再開する
請求項１又は２に記載のフォールトトレラントシステム。
【請求項４】
前記ＢＩＯＳに前記動作周波数の変更値が通知された後に、
前記省電力制御部は、ＳＭＩ（Ｓｙｓｔｅｍ  Ｍａｎａｇｅｍｅｎｔ  Ｉｎｔｅｒｒｕｐｔ）割り込みにより、ＯＳの動作を一時停止させ、
前記第１のＣＰＵと前記第２のＣＰＵが、前記クロック動作を再開した後に、
前記省電力制御部が、前記ＳＭＩ割り込みから復帰する
請求項１乃至３のいずれか１項に記載のフォールトトレラントシステム。
【請求項５】
前記リセット命令を発行した後に、
前記第１のＦＴ制御部が、前記第１の主記憶部のＤＩＭＭ（Ｄｕａｌ  Ｉｎｌｉｎｅ  Ｍｅｍｏｒｙ  Ｍｏｄｕｌｅ）をセルフリフレッシュモードに変更し、前記第２のＦＴ制御部が、前記第２の主記憶部のＤＩＭＭをセルフリフレッシュモードに変更し、
前記第１のＣＰＵと前記第２のＣＰＵが、前記クロック動作を再開した後に、
前記第１のＦＴ制御部が、第１の主記憶部のＤＩＭＭのセルフリフレッシュモードを解除し、前記第２のＦＴ制御部が、第２の主記憶部のＤＩＭＭのセルフリフレッシュモードを解除する
請求項１乃至４のいずれか１項に記載のフォールトトレラントシステム。
【請求項６】
第１のＣＰＵと、第１の主記憶部と、第１のＦＴ（Ｆａｕｌｔ  Ｔｏｌｅｒａｎｔ）制御部とを備えた第１のＨＷ（ｈａｒｄｗａｒｅ）システムと、第２のＣＰＵと、第２の主記憶部と、第２のＦＴ制御部とを備えた第２のＨＷシステムと、ＢＩＯＳが記憶されている不揮発メモリとを備え、前記第１のＦＴ制御部と、前記第２のＦＴ制御部は、クロスリンクにより接続され、前記第１のＨＷシステムと、前記第２のＨＷシステムが、ロックステップ動作を行うフォールトトレラントシステムにおいて、
前記ＢＩＯＳが、前記第１のＣＰＵと前記第２のＣＰＵの動作周波数の変更値を、前記第１のＣＰＵと前記第２のＣＰＵに設定するステップと、
前記ＢＩＯＳが、前記第１のＦＴ制御部と前記第２のＦＴ制御部にリセット命令を発行するステップと、
前記第１のＦＴ制御部と前記第２のＦＴ制御部が、前記リセット命令を受信するステップと、
前記第１のＦＴ制御部と前記第２のＦＴ制御部が、前記第１のＣＰＵと前記第２のＣＰＵに、リセット信号を同時にアサートするステップと
を含むＣＰＵの動作周波数変更方法。
【請求項７】
前記フォールトトレラントシステムは、第１の省電力制御部を更に備え、
前記省電力制御部が、前記第１のＣＰＵの負荷の監視結果と、前記第１のＣＰＵの動作周波数に基づいて、前記動作周波数の変更が必要か判定するステップと、
前記省電力制御部が、前記動作周波数の変更が必要である場合には、前記動作周波数の変更値を前記ＢＩＯＳに通知するステップと
を更に含む請求項６に記載のＣＰＵの動作周波数変更方法。
【請求項８】
前記リセット信号を同時にアサートするステップの前に、
前記ＢＩＯＳが、
前記第１のＣＰＵのコンテキストデータを、前記第１の主記憶部に退避するステップと、前記第２のＣＰＵのコンテキストデータを、前記第２の主記憶部に退避するステップを更に含み、
前記リセット信号を同時にアサートするステップの後に、
前記第１のＣＰＵが、初期化処理中に、退避していた前記第１のＣＰＵのコンテキストデータを読み込むステップと、
前記第２のＣＰＵが、初期化処理中に、退避していた前記第２のＣＰＵのコンテキストデータを読み込むステップと、
前記第１のＣＰＵと前記第２のＣＰＵが、前記動作周波数の変更値でクロック動作を再開するステップと
を更に含む請求項６又は７に記載のＣＰＵの動作周波数変更方法。
【請求項９】
前記動作周波数の変更値を前記ＢＩＯＳに通知するステップの後に、
前記省電力制御部が、ＳＭＩ（Ｓｙｓｔｅｍ  Ｍａｎａｇｅｍｅｎｔ  Ｉｎｔｅｒｒｕｐｔ）割り込みにより、ＯＳの動作を一時停止させるステップを更に含み、
前記動作周波数の変更値でクロック動作を再開するステップの後に、
前記省電力制御部が、前記ＳＭＩ割り込みから復帰するステップ
を更に含む請求項６乃至８のいずれか１項に記載のＣＰＵの動作周波数変更方法。
【請求項１０】
前記リセット命令を発行するステップの後に、
前記第１のＦＴ制御部が、前記第１の主記憶部のＤＩＭＭ（Ｄｕａｌ  Ｉｎｌｉｎｅ  Ｍｅｍｏｒｙ  Ｍｏｄｕｌｅ）をセルフリフレッシュモードに変更するステップと、
前記第２のＦＴ制御部が、前記第２の主記憶部のＤＩＭＭをセルフリフレッシュモードに変更するステップとを更に含み、
前記動作周波数の変更値でクロック動作を再開するステップの後に、
前記第１のＦＴ制御部が、第１の主記憶部のＤＩＭＭのセルフリフレッシュモードを解除するステップと、
前記第２のＦＴ制御部が、第２の主記憶部のＤＩＭＭのセルフリフレッシュモードを解除するステップと
を更に含む請求項６乃至９のいずれか１項に記載のＣＰＵの動作周波数変更方法。
【請求項１１】
請求項６乃至１０のいずれか１項に記載のＣＰＵの動作周波数変更方法をフォールトトレラントシステムに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、フォールトトレラントシステムに関し、特に、ロックステップ動作を維持しながら、ＣＰＵの動作周波数を変更するフォールトトレラントシステムに関する。
【背景技術】
【０００２】
ＣＰＵの動作周波数を、システムに必要最低限の処理能力を維持できる動作周波数に変更する方法が知られている。２つの系をロックステップ動作させているフォールトトレラントシステムにおいては、ロックステップ動作中に、ＣＰＵの動作周波数を変更すると、ロックステップ動作による二重化動作を維持できなくなり、縮退してしまう問題があった。
【０００３】
特開２００８−２１７０５１号公報（特許文献１）には、フォールトトレラントコンピュータ、及びその制御方法の発明が開示されている。この発明の実施例のＦＴサーバにおけるサーマル・スロットリング方法は、一方のモジュール内に実装されているプロセッサが高温状態となった場合に、このモジュールを縮退させる。その後、ＦＴサーバが片系稼動している状態で、動作しているモジュール内に実装されているプロセッサでも高温状態となった場合に、プロセッサの標準機能を利用して、動作周波数を低くして過熱を抑える。ＦＴサーバの負荷が低い状態が続く場合、縮退していたモジュール内に実装されているプロセッサを、稼動しているモジュール内に実装されているプロセッサと同一の周波数で動作を開始させ、結果的に、省電力モードでの二重化を実現している。
【０００４】
上述した特許文献１に記載のフォールトトレラントコンピュータでは、一方のモジュール内に実装されているプロセッサを縮退する必要があったため、ロックステップ動作を維持しながらＣＰＵの動作周波数を変更させることができないという問題点があった。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００８−２１７０５１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
本発明の目的は、ロックステップ動作を維持しながら、ＣＰＵの動作周波数を変更するフォールトトレラントシステムを提供することにある。
【課題を解決するための手段】
【０００７】
本発明のフォールトトレラントシステムは、第１のＣＰＵと、第１の主記憶部と、第１のＦＴ（Ｆａｕｌｔ  Ｔｏｌｅｒａｎｔ）制御部とを備えた第１のＨＷ（ｈａｒｄｗａｒｅ）システムと、第２のＣＰＵと、第２の主記憶部と、第２のＦＴ制御部とを備えた第２のＨＷシステムと、ＢＩＯＳが記憶されている不揮発メモリとを備え、第１のＦＴ制御部と、第２のＦＴ制御部は、クロスリンクにより接続され、第１のＨＷシステムと、第２のＨＷシステムが、ロックステップ動作を行う。
【０００８】
ＢＩＯＳは、第１のＣＰＵと第２のＣＰＵの動作周波数の変更値を設定後、第１のＦＴ制御部と第２のＦＴ制御部にリセット命令を発行し、第１のＦＴ制御部と第２のＦＴ制御部は、リセット命令を受信すると、第１のＣＰＵと第２のＣＰＵに、リセット信号を同時にアサートする。
【０００９】
本発明のＣＰＵ動作周波数変更方法は、第１のＣＰＵと、第１の主記憶部と、第１のＦＴ制御部とを備えた第１のＨＷシステムと、第２のＣＰＵと、第２の主記憶部と、第２のＦＴ制御部とを備えた第２のＨＷシステムと、ＢＩＯＳが記憶されている不揮発メモリとを備え、第１のＦＴ制御部と、第２のＦＴ制御部は、クロスリンクにより接続され、第１のＨＷシステムと、第２のＨＷシステムが、ロックステップ動作を行うフォールトトレラントシステムにより実施される。
【００１０】
本発明のＣＰＵの動作周波数変更方法は、ＢＩＯＳが、第１のＣＰＵと第２のＣＰＵの動作周波数の変更値を設定するステップと、ＢＩＯＳが、第１のＦＴ制御部と第２のＦＴ制御部にリセット命令を発行するステップと、第１のＦＴ制御部と第２のＦＴ制御部が、リセット命令を受信するステップと、第１のＦＴ制御部と第２のＦＴ制御部が、第１のＣＰＵと第２のＣＰＵに、リセット信号を同時にアサートするステップとを含む。
【発明の効果】
【００１１】
本発明によれば、ロックステップ動作を維持しながら、ＣＰＵの動作周波数を変更するフォールトトレラントシステムを提供することができる。
【図面の簡単な説明】
【００１２】
【図１】図１は、本発明の第１実施形態におけるフォールトトレラントシステム１００のハードウェア構成に関するブロック図である。
【図２】図２は、本発明の第１実施形態におけるフォールトトレラントシステム１００のソフトウェア構成に関するブロック図である。
【図３】図３は、本発明の第１実施形態のフォールトトレラントシステム１００におけるＣＰＵの動作周波数変更方法のフローチャートである。
【図４】図４は、本発明の第２実施形態におけるフォールトトレラントシステム１００のハードウェア構成に関するブロック図である。
【図５】図５は、本発明の第２実施形態におけるフォールトトレラントシステム１００のソフトウェア構成に関するブロック図である。
【図６】図６は、本発明の第２実施形態のフォールトトレラントシステム１００におけるＣＰＵの動作周波数変更方法のフローチャートである。
【図７】図７は、本発明の第２実施形態のＣＰＵの動作周波数変更方法における動作周波数の変更判定を説明するための状態遷移図である。
【図８】図８は、本発明の第３実施形態におけるフォールトトレラントシステム１００のハードウェア構成に関するブロック図である。
【発明を実施するための形態】
【００１３】
添付図面を参照して、本発明の実施形態によるフォールトトレラントシステム１００を以下に説明する。
【００１４】
（第１実施形態）
［構成の説明］
はじめに、本発明の第１実施形態におけるフォールトトレラントシステム１００のハードウェア構成に関する説明を行う。図１は、本発明の第１実施形態におけるフォールトトレラントシステム１００のハードウェア構成に関するブロック図である。本実施形態のフォールトトレラントシステム１００のハードウェア構成は、第１のＨＷシステム１０、第２のＨＷシステム２０、及び不揮発メモリ３０を備える。第１のＨＷシステム１０は、主記憶部１１、ＣＰＵ１２、及びＦＴ制御部１４を備える。第２のＨＷシステム２０は、主記憶部２１、ＣＰＵ２２、及びＦＴ制御部２４を備える。不揮発メモリ３０には、第１のＨＷシステム１０、及び第２のＨＷシステム２０に使用されるデバイスの認識や、デバイスに対する入出力の制御を行うＢＩＯＳ３１が記憶されている。
【００１５】
第１のＨＷシステム１０と第２のＨＷシステム２０は、同一の構成であるため、以下、第１のＨＷシステム１０の構成について説明する。
【００１６】
主記憶部１１は、ＣＰＵ１２により利用されるメインメモリである。主記憶部１１は、ＣＰＵ１２に実行させるためのプログラム（命令）の展開や、ＣＰＵ１２の演算に伴うデータの一時記憶等に利用される。主記憶部１１には、本実施形態のＣＰＵの動作周波数変更方法を実現するためのプログラムが展開される。主記憶部１１に展開されるプログラムは、図１では不図示であるが、ハードディスク等の補助記憶装置に記憶されている。
【００１７】
ＣＰＵ１２は、第１のＨＷシステム１０を制御する。ＣＰＵ１２は、第１のＨＷシステム１０を運用するＯＳのシステムプログラムや、第１のＨＷシステム１０のＯＳ上で動作するアプリケーションプログラムを実行する。
【００１８】
ＦＴ（Ｆａｕｌｔ  Ｔｏｌｅｒａｎｔ）制御部１４は、第２のＨＷシステム２０と同期をとるため、クロスリンク３２を介して、第２のＨＷシステム２０のＦＴ制御部２４と接続されている。ＦＴ制御部１４は、第１のＨＷシステム１０と第２のＨＷシステム２０が、ロックステップ動作を行うフォールトトレラントシステム１００を実現するために必要な制御を行う。なお、本実施形態では、ＦＴ制御部１４は、ＦＴ制御チップとして、ハードウェアで実現されている。
【００１９】
次に、本実施形態におけるフォールトトレラントシステム１００のソフトウェア構成に関する説明を行う。図２は、本発明の第１実施形態におけるフォールトトレラントシステム１００のソフトウェア構成に関するブロック図である。本実施形態のフォールトトレラントシステム１００上のＯＳ４０は、ロックステップ方式で動作する第１のＨＷシステム１０と第２のＨＷシステム２０上で動作する。ＯＳ４０は、１つのＯＳでも、ＶＭ（Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅ）等による複数のＯＳでもよい。ただし、ＶＭの場合であっても、ＶＭ毎にＨＷシステムが対応していなくてもよい。本実施形態のフォールトトレラントシステム１００のＯＳ４０、ミドルウェア４１、及びアプリケーション４２は、ＨＷシステムが二重化されていることを意識せずに動作する。
【００２０】
［動作方法の説明］
次に、本実施形態のフォールトトレラントシステム１００におけるＣＰＵの動作周波数変更方法の説明を行う。図３は、本発明の第１実施形態のフォールトトレラントシステム１００におけるＣＰＵの動作周波数変更方法のフローチャートである。
【００２１】
（ステップＳ１）
フォールトトレラントシステム１００は、ＯＳの動作を一時停止し、ＢＩＯＳ３１に処理を引き継ぐ。
【００２２】
（ステップＳ２）
ＢＩＯＳ３１は、新たに設定する動作周波数を、ＣＰＵ１２、及びＣＰＵ２２に設定する。
【００２３】
（ステップＳ３）
ＢＩＯＳ３１は、ＣＰＵ１２のコンテキストデータを、主記憶部１１に退避する。同様に、ＢＩＯＳ３１は、ＣＰＵ２２のコンテキストデータを、主記憶部２１に退避する。
【００２４】
（ステップＳ４）
ＢＩＯＳ３１は、ＦＴ制御部１４、及びＦＴ制御部２４に、ＳｙｎｃＲｅｓｅｔを発行する。ＳｙｎｃＲｅｓｅｔは、ＣＰＵと主記憶にリセットをかけるリセット命令である。ＦＴ制御部１４は、ＳｙｎｃＲｅｓｅｔを受信すると、主記憶部１１のＤＩＭＭ（Ｄｕａｌ  Ｉｎｌｉｎｅ  Ｍｅｍｏｒｙ  Ｍｏｄｕｌｅ）をセルフリフレッシュモードに変更し、ＣＰＵ１２にリセット信号をアサートする。同様に、ＦＴ制御部２４は、ＳｙｎｃＲｅｓｅｔを受信すると、主記憶部２２のＤＩＭＭをセルフリフレッシュモードに変更し、ＣＰＵ２２にリセット信号をアサートする。
【００２５】
（ステップＳ５）
ＳｙｎｃＲｅｓｅｔにより、ＣＰＵ１２は、ＣＰＵ１２の初期化を開始し、初期化処理中に、主記憶部１１に退避していたＣＰＵ１２のコンテキストデータを読み込む。同様に、ＣＰＵ２２は、ＣＰＵ２２の初期化を開始し、初期化処理中に、主記憶部１１に退避していたＣＰＵ２２のコンテキストデータを読み込む。
【００２６】
（ステップＳ６）
ＣＰＵ１２は、ステップＳ５で読み込んだコンテキストデータにより、動作周波数変更前の状態に復元される。ＣＰＵ１２は、ステップＳ２で設定された動作周波数でクロック動作を再開する。また、ＦＴ制御部１４は、主記憶部１１のセルフリフレッシュモードを解除する。同様に、ＣＰＵ２２は、ステップＳ５で読み込んだコンテキストデータにより、動作周波数変更前の状態に復元される。ＣＰＵ２２は、ステップＳ２で設定された動作周波数でクロック動作を再開する。また、ＦＴ制御部２４は、主記憶部２１のセルフリフレッシュモードを解除する。
【００２７】
なお、第１のＨＷシステム１０と、第２のＨＷシステム２０は、ロックステップ動作を行うため、ＦＴ制御部１４とＦＴ制御部２４の間のクロスリンク３２により、常に同期が取られている。そのため、ＳｙｎｃＲｅｓｅｔ契機による両系のＣＰＵの初期化処理は、ロックステップ動作が維持された状態で、ステップＳ２で設定された動作周波数でクロック動作を再開させることができる。
【００２８】
（ステップＳ７）
ＳＭＩ割り込みから、処理がＯＳに戻り、ＯＳの動作が再開する。
【００２９】
本実施形態のフォールトトレラントシステム１００によれば、システムを片系のみの運用状態に縮退させることなく、ロックステップ動作を維持した状態で、変更された動作周波数によるクロック動作でＣＰＵを再開させることができる。
【００３０】
（第２実施形態）
次に、本発明の第２実施形態におけるフォールトトレラントシステム１００について説明する。
【００３１】
［構成の説明］
はじめに、本発明の第２実施形態におけるフォールトトレラントシステム１００のハードウェア構成に関する説明を行う。図４は、本発明の第２実施形態におけるフォールトトレラントシステム１００のハードウェア構成に関するブロック図である。本実施形態のフォールトトレラントシステム１００のハードウェア構成は、第１のＨＷシステム１０、第２のＨＷシステム２０、及び不揮発メモリ３０を備える。第１のＨＷシステム１０は、主記憶部１１、ＣＰＵ１２、チップセット１３、ＦＴ制御部１４、及びＩＯコントローラ１５を備える。第２のＨＷシステム２０は、主記憶部２１、ＣＰＵ２２、チップセット２３、ＦＴ制御部２４、及びＩＯコントローラ２５を備える。不揮発メモリ３０には、第１のＨＷシステム１０、及び第２のＨＷシステム２０に使用されるデバイスの認識や、デバイスに対する入出力の制御を行うＢＩＯＳ３１が記憶されている。
【００３２】
第１のＨＷシステム１０と第２のＨＷシステム２０は、同一の構成であるため、以下、第１のＨＷシステム１０の構成について説明する。
【００３３】
主記憶部１１は、ＣＰＵ１２により利用されるメインメモリである。主記憶部１１は、ＣＰＵ１２に実行させるためのプログラム（命令）の展開や、ＣＰＵ１２の演算に伴うデータの一時記憶等に利用される。主記憶部１１には、本実施形態のＣＰＵの動作周波数変更方法を実現するためのプログラムが展開される。主記憶部１１に展開されるプログラムは、図１では不図示であるが、ハードディスク等の補助記憶装置に記憶されている。
【００３４】
ＣＰＵ１２は、第１のＨＷシステム１０を制御する。ＣＰＵ１２は、第１のＨＷシステム１０を運用するＯＳのシステムプログラムや、第１のＨＷシステム１０のＯＳ上で動作するアプリケーションプログラムを実行する。
【００３５】
チップセット１３は、第１のＨＷシステム１０を構成するＣＰＵ１２や、周辺デバイス等のハードウェアの動作を管理するための制御回路である。
【００３６】
ＦＴ（Ｆａｕｌｔ  Ｔｏｌｅｒａｎｔ）制御部１４は、第２のＨＷシステム２０と同期をとるため、クロスリンク３２を介して、第２のＨＷシステム２０のＦＴ制御部２４と接続されている。ＦＴ制御部１４は、第１のＨＷシステム１０と第２のＨＷシステム２０が、ロックステップ動作を行うフォールトトレラントシステム１００を実現するために必要な制御を行う。なお、本実施形態では、ＦＴ制御部１４は、ＦＴ制御チップとして、ハードウェアで実現されている。
【００３７】
ＩＯコントローラ１５は、第１のＨＷシステム１０に接続されているＩＯデバイスとのデータの送受信を制御するためのコントローラである。
【００３８】
次に、本実施形態におけるフォールトトレラントシステム１００のソフトウェア構成に関する説明を行う。図５は、本発明の第２実施形態におけるフォールトトレラントシステム１００のソフトウェア構成に関するブロック図である。本実施形態のフォールトトレラントシステム１００上のＯＳ４０は、ロックステップ方式で動作する第１のＨＷシステム１０と第２のＨＷシステム２０上で動作する。ＯＳ４０は、１つのＯＳでも、ＶＭ（Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅ）等による複数のＯＳでもよい。ただし、ＶＭの場合であっても、ＶＭ毎にＨＷシステムが対応していなくてもよい。本実施形態のフォールトトレラントシステム１００のＯＳ４０、ミドルウェア４１、及びアプリケーション４２は、ＨＷシステムが二重化されていることを意識せずに動作する。
【００３９】
本実施形態のフォールトトレラントシステム１００のアプリケーション４２には、省電力制御部４３が含まれている。省電力制御部４３は、ＣＰＵ１２の動作周波数、及びＣＰＵ１２の負荷を監視し、本実施形態のＣＰＵの動作周波数変更方法による消費電力低減動作の開始を制御する。なお、監視されるＣＰＵは、ＣＰＵ１２であっても、ＣＰＵ２２でも、或いは両方のＣＰＵであってもよい。
【００４０】
［動作方法の説明］
次に、本実施形態のフォールトトレラントシステム１００におけるＣＰＵの動作周波数変更方法の説明を行う。図６は、本発明の第２実施形態のフォールトトレラントシステム１００におけるＣＰＵの動作周波数変更方法のフローチャートである。
【００４１】
（ステップＳ２１）
省電力制御部４３は、ＣＰＵの負荷を、所定の監視期間の単位で、常時監視する。省電力制御部４３は、ＣＰＵの負荷と、ＣＰＵの動作中の動作周波数に基づいて、動作周波数を変更するかどうかを判定する。
【００４２】
図７は、本発明の第２実施形態のＣＰＵの動作周波数変更方法における動作周波数の変更判定を説明するための状態遷移図である。
【００４３】
省電力制御部４３は、ＣＰＵ１２が、所定の通常動作周波数で動作中であり、かつＣＰＵ１２の負荷が、所定の閾値以下である場合には、動作周波数を、所定の低速動作周波数に変更する判定を行う（矢印５１）。
【００４４】
省電力制御部４３は、ＣＰＵ１２が、所定の通常動作周波数で動作中であり、かつＣＰＵ１２の負荷が、所定の閾値より大きい場合には、動作周波数を、所定の通常動作周波数のまま維持する（矢印５２）。
【００４５】
省電力制御部４３は、ＣＰＵ１２が、所定の低速動作周波数で動作中であり、かつＣＰＵ１２の負荷が、所定の閾値以下である場合には、動作周波数を、所定の低速動作周波数のまま維持する（矢印５３）。
【００４６】
省電力制御部４３は、ＣＰＵ１２が、所定の低速動作周波数で動作中であり、かつＣＰＵ１２の負荷が、所定の閾値より大きい場合には、動作周波数を、所定の通常動作周波数に変更する判定を行う（矢印５４）。
【００４７】
（ステップＳ２２）
省電力制御部４３は、ステップＳ２１の処理において、動作周波数の変更が必要であると判定された場合には、ステップＳ２３の処理に進み、動作周波数の変更が必要でないと判定された場合には、ステップＳ２１の処理に戻る。
【００４８】
（ステップＳ２３）
省電力制御部４３は、ＢＩＯＳ３１に、動作周波数の変更値を通知する。省電力制御部４３は、ＳＭＩ（Ｓｙｓｔｅｍ  Ｍａｎａｇｅｍｅｎｔ  Ｉｎｔｅｒｒｕｐｔ）割り込みをあげ、ＯＳの動作を一時停止し、ＢＩＯＳ３１に処理を引き継ぐ。
【００４９】
（ステップＳ２４）
ＢＩＯＳ３１は、ステップＳ２１により決定された動作周波数を、ＣＰＵ１２に設定する。同様に、ＢＩＯＳ３１は、ステップＳ１により決定された動作周波数を、ＣＰＵ２２に設定する。
【００５０】
（ステップＳ２５）
ＢＩＯＳ３１は、ＣＰＵ１２のコンテキストデータを、主記憶部１１に退避する。同様に、ＢＩＯＳ３１は、ＣＰＵ２２のコンテキストデータを、主記憶部２１に退避する。
【００５１】
（ステップＳ２６）
ＢＩＯＳ３１は、ＦＴ制御部１４、及びＦＴ制御部２４に、ＳｙｎｃＲｅｓｅｔを発行する。ＳｙｎｃＲｅｓｅｔは、ＣＰＵと主記憶にリセットをかけるリセット命令である。ＦＴ制御部１４は、ＳｙｎｃＲｅｓｅｔを受信すると、主記憶部１１のＤＩＭＭ（Ｄｕａｌ  Ｉｎｌｉｎｅ  Ｍｅｍｏｒｙ  Ｍｏｄｕｌｅ）をセルフリフレッシュモードに変更し、ＣＰＵ１２にリセット信号をアサートする。同様に、ＦＴ制御部２４は、ＳｙｎｃＲｅｓｅｔを受信すると、主記憶部２２のＤＩＭＭをセルフリフレッシュモードに変更し、ＣＰＵ２２にリセット信号をアサートする。
【００５２】
（ステップＳ２７）
ＳｙｎｃＲｅｓｅｔにより、ＣＰＵ１２は、ＣＰＵ１２の初期化を開始し、初期化処理中に、主記憶部１１に退避していたＣＰＵ１２のコンテキストデータを読み込む。同様に、ＣＰＵ２２は、ＣＰＵ２２の初期化を開始し、初期化処理中に、主記憶部１１に退避していたＣＰＵ２２のコンテキストデータを読み込む。
【００５３】
（ステップＳ２８）
ＣＰＵ１２は、ステップＳ２７で読み込んだコンテキストデータにより、動作周波数変更前の状態に復元される。ＣＰＵ１２は、ステップＳ２４で設定された動作周波数でクロック動作を再開する。また、ＦＴ制御部１４は、主記憶部１１のセルフリフレッシュモードを解除する。同様に、ＣＰＵ２２は、ステップＳ２７で読み込んだコンテキストデータにより、動作周波数変更前の状態に復元される。ＣＰＵ２２は、ステップＳ２４で設定された動作周波数でクロック動作を再開する。また、ＦＴ制御部２４は、主記憶部２１のセルフリフレッシュモードを解除する。
【００５４】
なお、第１のＨＷシステム１０と、第２のＨＷシステム２０は、ロックステップ動作を行うため、ＦＴ制御部１４とＦＴ制御部２４の間のクロスリンク３２により、常に同期が取られている。そのため、ＳｙｎｃＲｅｓｅｔ契機による両系のＣＰＵの初期化処理は、ロックステップ動作が維持された状態で、ステップＳ２４で設定された動作周波数でクロック動作を再開させることができる。
【００５５】
（ステップＳ２９）
ＳＭＩ割り込みから、処理がＯＳに戻り、ＯＳの動作と省電力制御部４３の動作が再開する。
【００５６】
本実施形態のフォールトトレラントシステム１００によれば、システムを片系のみの運用状態に縮退させることなく、ロックステップ動作を維持した状態で、変更された動作周波数によるクロック動作でＣＰＵを再開させることができる。そのため、動作周波数を、所定の通常動作周波数から、所定の低速動作周波数に変更することにより、ロックステップ状態を維持した状態で、フォールトトレラントシステム１００の消費電力を低減させることができる。
【００５７】
なお、本実施形態では、第１のＨＷシステム１０は、１つのＣＰＵ１２と、１つの主記憶部１１により構成されていた。同様に、第２のＨＷシステム２０は、１つのＣＰＵ２２と、１つの主記憶部２１により構成されていた。ＣＰＵの数と、主記憶部の数は、コスト面、処理性能、可用性等のシステム要件に基づいて、当業者により適宜、変更されうる。
【００５８】
（第３実施形態）
次に、本発明の第３実施形態におけるフォールトトレラントシステム１００について説明する。なお、本実施形態のフォールトトレラントシステム１００と、第２実施形態のフォールトトレラントシステム１００の違いは、ＣＰＵの数と、主記憶部の数だけである。そのため、第２実施形態のフォールトトレラントシステムと同様の箇所については、説明を省略する。
【００５９】
図８は、本発明の第３実施形態におけるフォールトトレラントシステム１００のハードウェア構成に関するブロック図である。図８の例では、第１のＨＷシステム１０は、２つのＣＰＵ（ＣＰＵ１２−１、及びＣＰＵ１２−２）と、２つの主記憶部（主記憶部１１−１、及び主記憶部１１−２）を備えている。同様に、第２のＨＷシステム２０は、２つのＣＰＵ（ＣＰＵ２２−１、及びＣＰＵ２２−２）と、２つの主記憶部（主記憶部２１−１、及び主記憶部２１−２）を備えている。図８の構成であっても、図６の構成と同様の手順で、フォールトトレラントシステム１００の消費電力を低減させることができるが、処理の対象となるＣＰＵ、及び主記憶部の数が増える。例えば、ＦＴ制御部１４は、ＳｙｎｃＲｅｓｅｔを送信する際には、ＣＰＵ１２−１、及びＣＰＵ１２−２に、同時に送信する。同様に、ＦＴ制御部２４は、ＳｙｎｃＲｅｓｅｔを送信する際には、ＣＰＵ２２−１、及びＣＰＵ２２−２に、同時に送信する。
【００６０】
本発明の実施形態の説明では、ＣＰＵの動作周波数を変更したが、変更する動作周波数は、主記憶部の動作周波数や、システムバスの動作周波数であってもよい。
【００６１】
また、本発明の実施形態の説明では、ロックステップ動作を維持しながら、ＣＰＵの動作周波数を下げることによる消費電力低減効果について説明したが、ＣＰＵの動作周波数を上げる制御をしてもよい。これにより、ロックステップ動作を維持しながら、ＣＰＵの動作モードを、ターボモード等に変更することができる。
【００６２】
以上、本発明の実施の形態が添付の図面を参照することにより説明された。但し、本発明は、上述の実施の形態に限定されず、要旨を逸脱しない範囲で当業者により適宜変更され得る。
【符号の説明】
【００６３】
１０  第１のＨＷ（ｈａｒｄｗａｒｅ）システム
１１，１１−１，１１−２  主記憶部
１２，１２−１，１２−２  ＣＰＵ
１３  チップセット
１４  ＦＴ（Ｆａｕｌｔ  Ｔｏｌｅｒａｎｔ）制御部
１５  ＩＯコントローラ
２０  第２のＨＷ（ｈａｒｄｗａｒｅ）システム
２１，２１−１，２１−２  主記憶部
２２，２２−１，２２−２  ＣＰＵ
２３  チップセット
２４  ＦＴ（Ｆａｕｌｔ  Ｔｏｌｅｒａｎｔ）制御部
２５  ＩＯコントローラ
３０  不揮発メモリ
３１  ＢＩＯＳ
３２  クロスリンク
４０  ＯＳ
４１  ミドルウェア
４２  アプリケーション
４３  省電力制御部
１００  フォールトトレラントシステム
【図１】
2013214210.tif 000003
【図２】
2013214210.tif 000004
【図３】
2013214210.tif 000005
【図４】
2013214210.tif 000006
【図５】
2013214210.tif 000007
【図６】
2013214210.tif 000008
【図７】
2013214210.tif 000009
【図８】
2013214210.tif 000010