(57)【特許請求の範囲】
【請求項１】
同期して同一処理を実行するプロセッサを有する、同一構成の複数のモジュールを含み、前記複数のモジュールのプロセッサに対して通知される割り込みが、同時に全てのモジュールのプロセッサに対して通知されるフォールトトレラントコンピュータの、前記複数のモジュールに含まれ、
周波数変更指示を入力する指示入力手段と、
前記周波数変更指示を入力すると前記プロセッサに割り込みを通知するプロセッサ制御手段と、
前記割り込みを受信すると、前記同一処理を中断し、当該プロセッサの周波数の変更を行い、周波数の変更の時刻から、前記複数のモジュール全てのプロセッサの周波数が切り替わる時間以上の所定時間経過後に、中断した前記同一処理を再開する前記プロセッサと
を含むモジュール。
【請求項２】
センサに接続され、前記センサから計測値を入力するセンサ信号入力手段と、
前記計測値が所定の状態である場合、前記指示入力手段に前記周波数変更指示を出力する監視手段
を含む請求項１に記載のモジュール。
【請求項３】
前記センサの計測値と周波数の値を対応付けて記憶する周波数記憶手段を含み、
前記監視手段は、前記センサから入力した計測値に対応する周波数の値を前記周波数記憶手段から読み出し、読み出した前記周波数の値を前記周波数変更指示に加え前記指示入力手段に出力し、
前記指示入力手段は、前記周波数変更指示と共に前記周波数の値を受信し、
前記プロセッサ制御手段は、前記指示入力手段が前記周波数変更指示に加え前記周波数の値を受信すると、前記プロセッサを除く前記複数のプロセッサに各々接続されているプロセッサ制御手段各々に前記周波数の値を送信し、前記周波数の変更において、当該プロセッサ制御手段全てで前記周波数を前記周波数の値に変更させ、前記プロセッサの周波数を前記周波数の値に変更する
請求項２に記載のモジュール。
【請求項４】
前記センサと、請求項２又は３に記載のモジュールを含むフォールトトレラントコンピュータ。
【請求項５】
同期して同一処理を実行するプロセッサを有する、同一構成の複数のモジュールを含み、前記複数のモジュールのプロセッサに対して通知される割り込みが、同時に全てのモジュールのプロセッサに対して通知されるフォールトトレラントコンピュータの、前記複数のモジュールに含まれるモジュールにおいて、
周波数変更指示を入力し、
前記周波数変更指示を入力すると前記モジュールに含まれるプロセッサに割り込みを通知し、
前記割り込みを受信した前記プロセッサは、前記同一処理を中断し、当該プロセッサの周波数の変更を行い、周波数の変更の時刻から、前記複数のモジュール全てのプロセッサの周波数が切り替わる時間以上の所定時間経過後に、中断した前記同一処理を再開する
周波数制御方法。
【請求項６】
センサから計測値を入力し、
前記計測値が所定の状態である場合、前記周波数変更指示を出力する
請求項５に記載の周波数制御方法。
【請求項７】
同期して同一処理を実行するプロセッサを有する、同一構成の複数のモジュールを含み、前記複数のモジュールのプロセッサに対して通知される割り込みが、同時に全てのモジュールのプロセッサに対して通知されるフォールトトレラントコンピュータの、前記複数のモジュールに含まれるモジュールの前記プロセッサを、
周波数変更指示を通知する割り込みを受信すると、前記同一処理を中断し、当該プロセッサの周波数の変更を行い、周波数の変更の時刻から、前記複数のモジュール全てのプロセッサの周波数が切り替わる時間以上の所定時間経過後に、中断した前記同一処理を再開する前記プロセッサと
して動作させる周波数制御プログラム。
【請求項８】
請求項７に記載の周波数制御プログラムを実行する前記プロセッサに接続されたコンピュータを、
周波数変更指示を入力する指示入力手段と、
前記周波数変更指示を入力すると前記プロセッサに前記割り込みを通知するプロセッサ制御手段と
して動作させるモジュール制御プログラム。
【請求項９】
前記コンピュータを、
センサに接続され、前記センサから計測値を入力するセンサ信号入力手段と、
前記計測値が所定の状態である場合、前記指示入力手段に前記周波数変更指示を出力する監視手段と
して動作させる請求項８に記載のモジュール制御プログラム。
【請求項１０】
前記コンピュータを、
前記センサの計測値と周波数の値を対応付けて記憶する周波数記憶手段と、
前記センサから入力した計測値に対応する周波数の値を前記周波数記憶手段から読み出し、読み出した前記周波数の値を前記周波数変更指示に加え前記指示入力手段に出力する前記監視手段と、
前記周波数変更指示と共に前記周波数の値を受信する前記指示入力手段と、
前記指示入力手段が前記周波数変更指示に加え前記周波数の値を受信すると、前記プロセッサを除く前記複数のプロセッサに各々接続されているプロセッサ制御手段各々に前記周波数の値を送信し、前記周波数の変更において、当該プロセッサ制御手段全てで前記周波数を前記周波数の値に変更させ、前記プロセッサの周波数を前記周波数の値に変更する前記プロセッサ制御手段と、
して動作させる請求項９に記載のモジュール制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はプロセッサの周波数を制御するモジュール、周波数制御方法、及び周波数制御プログラムに関し、特に、同一処理を同期して行う複数のプロセッサの周波数を制御するモジュール、周波数制御方法、及び周波数制御プログラムに関する。
【背景技術】
【０００２】
プロセッサが二重化された情報処理装置のプロセッサの周波数を変更する技術には、例えば、特許文献１乃至３に記載の技術がある。
【０００３】
特許文献１に記載の二重化処理装置は、主電源が断状態になると、電源を主電源から副電源であるバッテリに切り替える。主電源が断状態になって第１の所定時間が経過すると、二重化処理装置は、二重化されているプロセッサのうち、障害に備えて待機しているスタンバイ系のプロセッサを切り離し、スタンバイ系のプロセッサの電源を切断する。更に第２の所定時間が経過すると、二重化処理装置は、二重化時に実際に処理を行っているアクティブ系のプロセッサの動作クロック信号の速度を低速度に切り替える。二重化処理装置は、さらに、バッテリの使用限界を監視し、使用限界が近づいた場合、停止処理を実行する。
【０００４】
特許文献２には、複数のＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）コアを内蔵するＬＳＩ（Ｌａｒｇｅ  Ｓｃａｌｅ  Ｉｎｔｅｇｒａｔｉｏｎ）を含み、ＣＰＵコアが動作する周波数を制御して消費電力を低減する省電力制御システムであるプリンタが記載されている。プリンタは、低消費電力モード（スリープモード）に移行する際、まず、２個のＣＰＵのうちＣＰＵ−１が、自身が低消費電力モードに移行する命令を実行して動作を停止する。ＣＰＵ−１の低消費電力モードへの移行後、ＣＰＵ−２が、ＣＰＵ−１に供給されるクロックを通常より低い動作クロック周波数に変更し、ＣＰＵ−１を低消費電力モードから通常動作モードに移行させる。このことにより、ＣＰＵ−１は低クロック周波数で動作する。ＣＰＵ−２は、ＣＰＵ−１が低消費電力モードから抜けて通常動作モードに移行するまで待ってから、自身が低消費電力モードに移行する命令を実行して動作を停止する。
【０００５】
特許文献３には、フォールトトレラントコンピュータ（ＦＴコンピュータ、Ｆａｕｌｔ  Ｔｏｌｅｒａｎｔ  Ｃｏｍｐｕｔｅｒ）及びＦＴコンピュータが備える複数のプロセッサの制御方法が記載されている。特許文献３のＦＴコンピュータは、正常稼働中は、２つのモジュールが同じ命令列をクロック同期させて全く同じに処理する、２重化状態で動作する。ＦＴコンピュータが２重化状態で動作中に、一方のモジュール（モジュール１）内のプロセッサの温度が上昇し、温度異常信号がアサートされた場合、モジュール１は動作を停止して縮退する。そして、ＦＴコンピュータは、他方のモジュール（モジュール２）のみが動作する片系稼働に遷移する。
【０００６】
モジュール１が縮退している状態でモジュール２内のプロセッサの温度が上昇し、温度異常信号がアサートされた場合、モジュール２内の制御部がモジュール２内のプロセッサの動作周波数を落とす。このことにより、モジュール２内の制御部は、モジュール２の動作状態を高消費電力状態から低消費電力状態に遷移させて加熱を押さえる。
【０００７】
低消費電力状態が長く続く場合、モジュール２内の制御部は、縮退していたモジュール１を起動して、モジュール１内のプロセッサを、モジュール２内のプロセッサと同じ動作周波数で稼働させ、２重化のための組み込み処理を行って２重化を実現する。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開平７−１６０３６９号公報
【特許文献２】特開２００７−０４７９６６号公報
【特許文献３】特開２００８−２１７０５１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
同一周波数で動作する同一の種類の複数のプロセッサの周波数の設定を、同時に他の同一周波数に変更する場合、個体差があるため、周波数の変化が完了する時刻は全てのプロセッサで同じになるとは限らない。
【００１０】
図２は、周波数Ｈｉｇｈで動作する２つの同一種類のプロセッサの周波数の設定を、同時に周波数Ｌｏｗに変更した場合の、各プロセッサの周波数の遷移の例を表す図である。図２の例の場合、周波数がＨｉｇｈからＬｏｗに変化するまでの時間は、一方のプロセッサがＴ０であり、他方のプロセッサではＴ１である。この例の場合、周波数の設定を変更してから時間Ｔ１が経過するまでの間、２つのプロセッサは異なる周波数で動作する。
【００１１】
ロックステップ方式のＦＴコンピュータにおいては、複数のプロセッサが、同一処理を同期を取りながら同時に行う、同期状態で動作する。ＦＴコンピュータの複数のプロセッサが同期状態で動作している間、処理の冗長性が維持される。
【００１２】
前述のように、ＦＴコンピュータの全プロセッサの周波数の設定を変更する場合、全プロセッサの周波数の変化が完了するまでの時間、全てのプロセッサが同じ周波数で動作するとは限らない。各プロセッサの周波数の変化速度に差があれば、その間の各プロセッサの処理速度に差が生じる。この場合、同期状態で動作中の複数のプロセッサの動作周波数の設定を、同時に同じ周波数になるよう変更したとしても、全てのプロセッサの周波数の変化が完了するまでの間に、各プロセッサに処理の進行の度合いに差が生じる。従って、各プロセッサの同期状態は維持されない。
【００１３】
特許文献１〜特許文献３に記載されている技術は、いずれも、２個のプロセッサの周波数を変更する過程で、少なくとも一時的に、一方のプロセッサの動作を停止させてプロセッサの冗長性を解消する。従って、特許文献１〜特許文献３に記載されている技術は、いずれも、複数のプロセッサの同期状態を保ったまま、各プロセッサの動作周波数を変更することはできない。従って、特許文献１〜特許文献３に記載されている技術で各プロセッサの動作周波数を変更する場合、少なくとも一時的に、冗長性が失われ信頼性が低下した状態で処理が行われるという問題がある。特に、頻繁な周波数の変更が必要な状況では、冗長性が失われ信頼性が低下した状態で処理が行われる時間が長くなる。
【００１４】
本発明の目的は、複数のプロセッサが同一処理を同期を取りながら同時に行う、同期状態を保ったまま、各プロセッサの動作周波数を変更するモジュールを提供することにある。
【課題を解決するための手段】
【００１５】
本発明のモジュールは、同期して同一処理を実行するプロセッサを有する、同一構成の複数のモジュールを含み、前記複数のモジュールのプロセッサに対して通知される割り込みが、同時に全てのモジュールのプロセッサに対して通知されるフォールトトレラントコンピュータの、前記複数のモジュールに含まれ、周波数変更指示を入力する指示入力手段と、前記周波数変更指示を入力すると前記プロセッサに割り込みを通知するプロセッサ制御手段と、前記割り込みを受信すると、前記同一処理を中断し、当該プロセッサの周波数の変更を行い、周波数の変更の時刻から、前記複数のモジュール全てのプロセッサの周波数が切り替わる時間以上の所定時間経過後に、中断した前記同一処理を再開する前記プロセッサとを含む。
【００１６】
本発明の周波数制御方法は、同期して同一処理を実行するプロセッサを有する、同一構成の複数のモジュールを含み、前記複数のモジュールのプロセッサに対して通知される割り込みが、同時に全てのモジュールのプロセッサに対して通知されるフォールトトレラントコンピュータの、前記複数のモジュールに含まれるモジュールにおいて、周波数変更指示を入力し、前記周波数変更指示を入力すると前記モジュールに含まれるプロセッサに割り込みを通知し、前記割り込みを受信した前記プロセッサは、前記同一処理を中断し、当該プロセッサの周波数の変更を行い、周波数の変更の時刻から、前記複数のモジュール全てのプロセッサの周波数が切り替わる時間以上の所定時間経過後に、中断した前記同一処理を再開する。
【００１７】
本発明の周波数変更プログラムは、同期して同一処理を実行するプロセッサを有する、同一構成の複数のモジュールを含み、前記複数のモジュールのプロセッサに対して通知される割り込みが、同時に全てのモジュールのプロセッサに対して通知されるフォールトトレラントコンピュータの、前記複数のモジュールに含まれるモジュールの前記プロセッサを、周波数変更指示を通知する割り込みを受信すると、前記同一処理を中断し、当該プロセッサの周波数の変更を行い、周波数の変更の時刻から、前記複数のモジュール全てのプロセッサの周波数が切り替わる時間以上の所定時間経過後に、中断した前記同一処理を再開する前記プロセッサとして動作させる。
【発明の効果】
【００１８】
本発明には、複数のプロセッサの動作周波数を変更する場合でも、冗長性が失われて信頼性が低下したまま処理が行われる時間を無くすことができるという効果がある。
【図面の簡単な説明】
【００１９】
【図１】本発明の第１の実施形態の構成を表す図である。
【図２】各プロセッサの周波数の変更に要する時間のばらつきを表す図である。
【図３】各プロセッサの周波数を変更してから各プロセッサの動作を再開させるまでの時間を表す図である。
【図４】本発明の第１の実施形態の動作を表すフローチャートである。
【図５】本発明の第２の実施形態の構成を表す図である。
【発明を実施するための形態】
【００２０】
次に、本発明の第１の実施形態について図面を参照して詳細に説明する。
【００２１】
図１は、本実施形態のＦＴコンピュータ０の構成を表す図である。
【００２２】
図１を参照すると、ＦＴコンピュータ０は、複数のＣＰＵ／ＩＯ（Ｉｎｐｕｔ／Ｏｕｔｐｕｔ）モジュール（ＣＰＵ／ＩＯモジュール１、ＣＰＵ／ＩＯモジュール２、…、ＣＰＵ／ＩＯモジュールＮ）を含む。ＣＰＵ／ＩＯモジュールは、単にモジュールとも呼ばれる。本実施形態では、各ＣＰＵ／ＩＯモジュールの構成は同一である。
【００２３】
各ＣＰＵ／ＩＯモジュールは、指示入力部１０とプロセッサ制御部１２とプロセッサ２０を含む。各ＣＰＵ／ＩＯモジュールは、内部情報記憶部１１と、センサ信号入力部１３と、監視部１４と、周波数記憶部１５を含んでいてもよい。さらに、周波数制御装置１に、例えばキーボードなどの入力部４０が接続されていてもよい。
【００２４】
また、各ＣＰＵ／ＩＯモジュールは、センサ（例えばセンサ３１、センサ３２）を含んでいてもよい。これらのセンサは、例えば、プロセッサの温度センサを測定する温度センサや、ＣＰＵ／ＩＯモジュールの消費電力を測定する電力センサである。また、センサがＣＰＵ／ＩＯモジュールの外部で、例えば電力を測定するセンサである場合、センサはＣＰＵ／ＩＯモジュール上に無くてもよい。また、ＣＰＵ／ＩＯモジュールが含むプロセッサや、プロセッサが実行中のＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）が、プロセッサの利用率のようなプロセッサの負荷を出力する機能を備えていてもよい。ＣＰＵ／ＩＯモジュール上には、図示しないＩＯデバイスが存在していてもよい。また、一つのＣＰＵ／ＩＯモジュールが、例えば、ＣＰＵモジュールとＩＯモジュールの組合せなど、複数のモジュールの組合せであってもよい。
【００２５】
以下では、主に、一つのＣＰＵ／ＩＯモジュール（ＣＰＵ／ＩＯモジュール１）上にある、指示入力部１０とプロセッサ制御部１２とプロセッサ２０について説明する。
【００２６】
本実施形態の各ＣＰＵ／ＩＯモジュールは、プログラムを記憶する記録媒体からメモリに読み込まれた、ＣＰＵ／ＩＯモジュールの各部の機能を実現するための専用のプログラムと、そのプログラムを実行するコンピュータ、専用のハードウェア、又は、コンピュータ及び上述の専用プログラムと専用のハードウェアの組合せにより実現することができる。内部情報記憶部１１や、周波数記憶部１５は、コンピュータが含むメモリやハードディスク装置により実現することができる。また、指示入力部１０と、プロセッサ制御部１２と、センサ信号入力部１３と、監視部１４は、例えば、上述の専用のプログラムと、そのプログラムを実行するコンピュータにより実現することができる。あるいは、指示入力部１０と、内部情報記憶部１１と、プロセッサ制御部１２と、センサ信号入力部１３と、監視部１４と、周波数記憶部１５の一部又は全部を、各部の機能を実現する専用の回路によって実現することもできる。
【００２７】
本実施形態の各ＣＰＵ／ＩＯモジュールが含む各プロセッサ（プロセッサ２０）は、同一処理を同期して実行することができる。そのために、各ＣＰＵ／ＩＯモジュールの、例えばプロセッサ制御部１２が、例えば、プロセッサ２０が他のＣＰＵ／ＩＯモジュールが含むプロセッサ２０と同一処理を同期して実行するよう制御する、プロセッサ２０に接続された図示しない後述のＦＴ制御チップを含んでいればよい。プロセッサ制御部１２は、ＦＴ制御チップを含むのではなく、ＦＴ制御チップの機能を持つよう構成されていてもよい。なお、このことにより、各ＣＰＵ／ＩＯモジュール上の各プロセッサ制御部１２自身も、同時に同一の動作を行うことが可能である。
【００２８】
また、プロセッサ２０の周波数は可変である。例えばプロセッサ制御部１２が、プロセッサ２０の周波数を変更すればよい。例えば、プロセッサ制御部１２が、プロセッサ２０の図示しない周波数変更レジスタに、周波数を変更するための値を書き込み、プロセッサ２０のリセットを行うことで、プロセッサ２０の周波数を変更すればよい。
【００２９】
ＦＴ制御チップは、プロセッサ２０や、例えばメモリやＩＯデバイスなどプロセッサ２０以外のデバイスと、他のＣＰＵ／ＩＯモジュールが含む他のＦＴ制御チップに接続される。そして、ＦＴ制御チップは、ＦＴ制御チップに接続されている、プロセッサ２０を含む各デバイスと、他のＦＴ制御チップに接続されている同種のデバイスが、同期して同一の動作を行うよう制御する。そのためにＦＴ制御チップが備える機能の一つに、ＦＴ制御チップが、自らと同一のＣＰＵ／ＩＯモジュール上のプロセッサ２０と、他のＣＰＵ／ＩＯモジュール上のプロセッサ２０の全てに対して、同じ種類の割り込みを通知することがあげられる。ＦＴ制御チップは、少なくともこのような割り込みが必要な場合に、このような割り込みを通知することができればよい。ＦＴ制御チップは、このような割り込みを実現するために、例えば、他のＣＰＵ／ＩＯモジュール上のＦＴ制御チップに、そのＣＰＵ／ＩＯモジュール上のプロセッサ２０に対する割り込みの通知を依頼し、割り込みの通知を行わせればよい。前述の割り込みの実現方法は、既存の任意の方法でよい。例えば、特開２００６−１７８６３６号公報にも、ＤＭＡコントローラやソフトウェアによる割り込みを、自系のＣＰＵと他系のＣＰＵの双方に通知するフォールトトレラントコンピュータが記載されている。ＦＴ制御チップは、割り込みを通知する対象の全てのプロセッサ２０に、同時に割り込みが通知されるよう制御を行う。ＦＴ制御チップは、１個のＬＳＩで構成されていればよく、複数のＬＳＩで構成されていてもよい。ＦＴ制御チップは、ＦＴ制御チップの機能を実現するための専用のプログラムと、そのプログラムを実行するプロセッサや、ＦＴ制御チップの機能を実現するための専用の回路によって実現されうる。
【００３０】
また、各ＣＰＵ／ＩＯモジュールは、例えば図示しないバックプレーンに接続され、そのバックプレーンを通るバスを介して、互いに通信が可能であればよい。この場合、ＦＴ制御チップは、このバスを介して、前述の割り込みの通知を行えばよい。また、バックプレーンが、各ＣＰＵ／ＩＯモジュールに、同一のクロックを供給すればよい。バックプレーンは、供給するクロックを発生するためのクロック回路を含んでいればよい。後述の各ＣＰＵ／ＩＯモジュールのプロセッサ２０やプロセッサ制御部１２が、同一処理を同時に行う場合、このクロック回路が供給するクロックにより同期して同一処理を行えばよい。
【００３１】
センサ信号入力部１３は、センサ（センサ３１やセンサ３２）から、測定値を受信する。センサ入力部１３は、例えば、各センサの測定値を入力し、監視部１４に送信するセンサ信号入力回路によって実現され得る。センサ３１は、例えば、プロセッサ２０の温度を測定する温度センサである。センサ３２は、例えば、消費電力を測定する電力センサである。あるいは、センサ信号入力部１３は、使用率などの負荷を出力する機能を備えたプロセッサ２０やプロセッサ２０で動作するＯＳから、プロセッサ２０の使用率などの負荷の大きさを表す値を受信してもよい。センサの種類は、ＣＰＵ／ＩＯモジュールの何らかの状態を測定するセンサであれば、他の種類であっても構わない。図１に記載されている例におけるセンサの数は２個であるが、センサの数は２個に限らない。なお、センサは、ＣＰＵ／ＩＯモジュールの何らかの状態が正常であるか異常であるかを検出するセンサであってもよい。この場合、センサは、後述の監視部１４を介さず、後述の指示入力部１０に、直接、周波数変更指示を出力してもよい。
【００３２】
監視部１４は、例えばセンサの測定値から異常を検出した場合、指示入力部１０に対して、プロセッサ２０の周波数を変更するよう指示する周波数変更指示を出力する。監視部１４は、例えば、ＢＭＣ（Ｂａｓｅｂｏａｒｄ  Ｍａｎａｇｅｍｅｎｔ  Ｃｏｎｔｒｏｌｌｅｒ）によって実現されうる。監視部１４は、センサの測定値から検出した異常が、例えば、温度の測定値が所定値より高い、消費電力の測定値が所定値より高いなどである場合、プロセッサ２０の周波数を低くするよう指示する周波数変更指示を出力すればよい。監視部１４は、センサの測定値から異常を検出した場合ではなく、異常ではない特定の事象を検出した場合に、周波数変更指示を出力してもよい。監視部１４は、例えば、プロセッサ２０の負荷の測定値が所定値より低く、処理能力を落とした省電力運転が可能な場合に、プロセッサ２０の周波数を低くするよう指示する周波数変更指示を出力してもよい。監視部１４が出力する周波数変更指示は、周波数を低くする指示でなくてもよい。例えば、プロセッサ２０の周波数が低く設定されている場合に、監視部１４がプロセッサ２０の負荷の測定値が所定値より高いことを検出した場合、監視部１４は、プロセッサ２０の周波数を高くする指示を出力すればよい。
【００３３】
周波数記憶部１５は、センサの測定値に対応付けられたプロセッサ２０の周波数を表す値を記憶する。プロセッサ２０の周波数を表す値は、具体的な周波数の数値であればよい。あるいは、プロセッサ２０の周波数が幾つかの段階に設定可能である場合、プロセッサ２０の周波数を表す値は、いずれかの段階を表す値であってもよい。例えば、プロセッサ２０の周波数が３段階（Ｈｉｇｈ、Ｍｉｄｄｌｅ、Ｌｏｗ）に設定可能である場合、プロセッサ２０の周波数を表す値は、Ｈｉｇｈ、Ｍｉｄｄｌｅ、Ｌｏｗのいずれかを表す値であればよい。
【００３４】
監視部１４は、周波数変更指示に加えて周波数を表す値を送信する場合、センサ信号入力部１３が入力した測定値に対応する周波数を表す値を、周波数記憶部１５から読み出せばよい。監視部１４は、周波数変更指示に加えて、読み出した周波数を表す値を指示入力部１０に出力すればよい。あるいは、監視部１４は、読み出した周波数を表す値を、ＣＰＵ／ＩＯモジュール上の図示しない指定周波数記憶部に格納してもよい。この指定周波数記憶部は、変更後の周波数を表す値を記憶する記憶装置である。指定周波数記憶部が変更後の周波数を表す値を記憶する構成である場合、後述のように、周波数の変更の際、プロセッサ２０が、指定周波数記憶部から周波数を表す値を読み出せばよい。
【００３５】
また、例えばオペレータやシステム管理者が、入力部４０を介して、周波数変更指示を指示入力部１０に入力してもよい。オペレータやシステム管理者は、入力部４０を介して、周波数変更指示に加えて、周波数を表す値を指示入力部１０に入力してもよい。この場合、例えば、オペレータやシステム管理者が、入力部４０を介して、ＣＰＵ／ＩＯモジュール上の図示しない指定周波数設定回路に変更する周波数を表す値を入力して記憶させてもよい。そして、指定周波数設定回路は、周波数を表す値を入力すると、周波数を表す値を保持したまま、指示入力部１０に周波数変更指示を出力してもよい。あるいは、入力部４０は、オペレータやシステム管理者が周波数変更指示に加えて周波数を表す値を入力した場合、周波数変更指示を指示入力部１０に入力し、前述の指定周波数記憶部に格納してもよい。
【００３６】
指示入力部１０は、例えば監視部１４や入力部４０から、周波数変更指示を受信する。監視部１４や入力部４０が周波数変更指示に加えて周波数を表す値を出力する場合、指示入力部１０は、周波数変更指示に加えて周波数を表す値を受信する。指示入力部１０は、例えば、プロセッサ２０に対する割り込みの信号を生成する割り込み生成回路の、周波数変更指示を入力するインターフェース部によって実現され得る。
【００３７】
内部情報記憶部１１は、プロセッサ２０の内部状態を表す内部情報を記憶する。プロセッサ２０の内部情報は、例えばプロセッサ２０内の各レジスタの値である。内部情報記憶部１１は、プロセッサ２０の内部情報だけでなく、例えば、プロセッサ２０と各デバイスを接続する１個以上のＬＳＩであるチップセットの内部情報を記憶してもよい。チップセットの内部情報も、例えばチップセット内の各レジスタの値である。
【００３８】
プロセッサ制御部１２は、指示入力部１０を介して周波数変更指示を受信する。監視部１４や入力部４０が周波数変更指示に加えて周波数を表す値を出力する場合、プロセッサ制御部１２は、周波数変更指示に加えて周波数を表す値を受信する。プロセッサ制御部１２は、周波数変更指示を受信すると、各ＣＰＵ／ＩＯモジュール上の各プロセッサ２０に対して、周波数変更指示の割り込みを通知する。プロセッサ制御部１２は、他のＣＰＵ／ＩＯモジュール上のプロセッサ２０に対する割り込みの通知を、例えばそのＣＰＵ／ＩＯモジュール上のプロセッサ制御部１２を介して行えばよい。プロセッサ制御部１２は、他のＣＰＵ／ＩＯモジュール上のプロセッサ２０に対する割り込みの通知を、既存の任意の方法で行ってもよい。
【００３９】
また、プロセッサ制御部１２は、周波数変更指示に加えて変更後の周波数を表す値を、指示入力部１０から受信した場合、受信した変更後の周波数を表す値も、プロセッサ２０に通知する。プロセッサ制御部１２による、周波数を表す値のプロセッサ２０への通知の方法は任意である。あるいは、プロセッサ制御部１２が、受信した周波数を表す値を、前述の指定周波数記憶部に格納してもよい。この場合、プロセッサ２０が、格納された周波数を表す値を、指定周波数記憶部から読み出せばよい。
【００４０】
プロセッサ制御部１２は、例えば、前述の割り込み生成回路と、前述のＦＴ制御チップによって実現されうる。プロセッサ制御部１２、例えばＢＭＣである監視部１４から周波数変更指示を受信すると、ＳＭＩ（Ｓｙｓｔｅｍ  Ｍａｎａｇｅｍｅｎｔ  Ｉｎｔｅｒｒｕｐｔ）による割り込みをプロセッサ２０に通知することで、周波数変更指示を出力すればよい。ＳＭＩは優先順位の高い割り込みの一例である。プロセッサ制御部１２がプロセッサ２０に通知する割り込みは、他の割り込みであってもよい。以下では、主に、割り込みがＳＭＩによる割り込みである例について説明する。
【００４１】
プロセッサ２０は、割り込みが通知されると、他のＣＰＵ／ＩＯモジュール上のプロセッサ２０と同期して同時に同一処理を行っていた動作を中断する。プロセッサ２０は、前述の同一処理の中断後、自らの周波数を変更し、周波数の変更の時刻から、各ＣＰＵ／ＩＯモジュール上の全てのプロセッサ２０の周波数が切り替わる時間以上の所定の時間経過後に、前述の同一処理を行う動作を再開する。前述の同一処理の中断後にプロセッサ２０が行う各処理も、例えば前述のＦＴ制御チップにより、各ＣＰＵ／ＩＯモジュール上のプロセッサ２０で、同期して同時に行われるよう制御される。
【００４２】
割り込みを通知され、動作を中断したプロセッサ２０は、割り込み通知時のプロセッサ２０の内部状態を表す内部情報を、専用のメモリ領域に格納する。この専用のメモリ領域が、内部情報記憶部１１であればよい。プロセッサ２０は、内部情報の格納後、通知された割り込みの種類（例えば周波数変更指示を表す割り込み）に応じたプログラムを、そのプログラムを記憶する記憶装置から読み出して実行する。前述のように割り込みがＳＭＩである場合、プロセッサ２０は、ＳＭＩによる割り込みが通知された場合に実行するプログラムであるＳＭＩハンドラを記憶するＳＭＩハンドラ記憶部から、割り込みの種類に応じたＳＭＩハンドラをメモリに読み出して実行する。プロセッサ２０は、読み出して実行するＳＭＩハンドラにより、内部情報を、前述の専用メモリから読み出し、その専用メモリとは別の記憶装置である内部情報記憶部１１に格納してもよい。
【００４３】
本実施形態のプロセッサ２０が、周波数変更指示を表す割り込みが通知された場合に読み出して実行するＳＭＩハンドラは、少なくとも周波数の変更を行うＳＭＩハンドラである。周波数の変更方法は、既存の任意の方法でよい。ＳＭＩハンドラを実行するプロセッサ２０は、例えば以下のように周波数の変更を行ってもよい。
【００４４】
本実施形態のプロセッサ２０は、例えば、プロセッサ２０内の周波数変更レジスタに変更後の周波数を表す値を書き込み、プロセッサ２０をリセットすることで周波数の変更が行われるプロセッサである。プロセッサ２０は、例えば、プロセッサ２０のリセット後に、プロセッサ２０の周波数を、周波数変更レジスタに書き込まれている値が表す周波数に変更する、図示しない周波数変更部を含んでいればよい。この場合、ＳＭＩハンドラを実行するプロセッサ２０は、周波数変更レジスタに値を書き込み、例えばプロセッサ２０に接続されている図示しないリセット生成回路を制御して、プロセッサ２０のリセットを行うことで周波数の変更を行う。リセット生成回路は、プロセッサ２０のリセットを行う信号を生成する回路である。プロセッサ２０は、変更後の周波数を表す値を、通知された割り込みが表す周波数変更指示が周波数を低くする指示であるか、高くする指示であるかによって、予め決められた周波数を表す値から選択すればよい。書き込む周波数の値は、周波数の具体的な数値であっても、高い周波数又は低い周波数を表す値であってもよい。プロセッサ２０は、周波数変更指示に加えて周波数を表す値を受信した場合、その値を周波数変更レジスタに書き込めばよい。ＣＰＵ／ＩＯモジュール１が、変更後の周波数が設定・格納された指定周波数設定回路や指定周波数記憶部を含む場合、プロセッサ２０は、指定周波数設定回路や指定周波数記憶部から、周波数を表す値を読み出し、その値を周波数変更レジスタに書き込めばよい。各ＣＰＵ／ＩＯモジュール上のプロセッサ２０は、同一時刻に周波数の変更を行う。例えば前述のＦＴ制御チップが、各プロセッサ２０の周波数の変更が、同一の時刻に行われるよう制御すればよい。周波数の変更を行う際、プロセッサ２０の内部状態は、周波数変更のためのリセットにより失われても構わない。
【００４５】
プロセッサ２０は、周波数変更を行ってから所定の時間（Ｔｍ）が経過した後、自らの内部状態を、内部情報記憶部１１から読み出した内部情報で表される、前述の同一処理の中断時の内部状態に復元する。プロセッサ２０は、この復元の後、前述の中断した同一処理を再開する。周波数変更を行ってから時間Ｔｍが経過するまでの時間、例えば、例えば、プロセッサ制御部１２が、前述のチップセットをリセット状態に保つことで、プロセッサ２０が処理を実行しない状態に保っておけばよい。あるいは、周波数の変更を行ってから時間Ｔｍが経過した後、例えばプロセッサ制御部１２が、前述の処理再開を指示する割り込みをプロセッサ２０に通知してもよい。プロセッサ２０の内部状態の復元及び中断した処理の再開の動作は、プロセッサ２０が、処理の実行中に通知された割り込みによって開始した割り込み処理の終了時に、通常行う動作と同じであってよい。
【００４６】
前述のように、複数のプロセッサ２０が周波数の変更を同時に行ったとしても、周波数の変更を行ってから各プロセッサ２０の周波数の変更が完了するまでの時間には、例えば図２に示すように、ばらつきが生じる。従って、各プロセッサ２０が、周波数の変更が完了するとすぐに動作を再開させるのであれば、各プロセッサ２０は同時に同一処理を同期して行えなくなる。しかし、プロセッサ２０が、周波数変更を行ってから、全てのプロセッサ２０の周波数の変更が完了するまでの時間以上の時間が経過した後に、同時に動作を再開させれば、各プロセッサ２０が同時に同一処理を同期して実行する状態が保たれる。従って、前述のＴｍは、全てのプロセッサ２０の周波数の変更が完了するまでの時間以上の時間であればよい。例えばシステムの設計者が、全てのプロセッサ２０の周波数の変更が完了するまでの時間を予め測定し、Ｔｍの値を設定しておけばよい。
【００４７】
図３は、Ｔｍの例を表す図である。Ｔｍは、図３のように、各プロセッサ２０が周波数を変更してから、全プロセッサ２０の周波数の変更が完了するまでの時間（図３の例ではＴ０とＴ１の大きい方であるＴ１）以上の時間であればよい。
【００４８】
なお、前述のＦＴ制御チップの制御により、プロセッサ２０は、前述の同一処理の中断、周波数変更、処理再開を、他のプロセッサ２０と同時に行う。
【００４９】
本実施形態では、プロセッサ２０は、所定の時間Ｔｍが経過した後に、他のプロセッサ２０と同時に、前述の同一処理実行時の内部情報を復元し、動作を再開する。しかし、各プロセッサ２０が同一の内部状態で同一時刻に動作を再開するのであれば、各プロセッサ２０が内部状態を復元する時刻は必ずしも同じでなくても構わない。
【００５０】
次に、本実施形態の動作について、図面を参照して詳細に説明する。
【００５１】
図４は、本実施形態の動作を表すフローチャートである。
【００５２】
図４を参照すると、まず、指示入力部１０が、監視部１４あるいは入力部４０から、周波数変更指示を入力する（ステップＳ１０）。ステップＳ１０の時点で、各プロセッサ２０は、同一処理を同期して同時に行っている。
【００５３】
図１によると、センサ３１やセンサ３２は、例えばプロセッサ２０の温度や負荷、消費電力を測定し、測定値をセンサ信号入力部１３に入力する。監視部１４は、センサ信号入力部１３を介して受信したその測定値が、例えば予め設定された正常な範囲外であることを検出した場合に、周波数変更指示を指示入力部１０に出力すればよい。監視部１４は、受信した測定値に対応する周波数の値を、周波数記憶部１５から読み出し、周波数変更指示に加えて指示入力部１０に出力してもよい。
【００５４】
あるいは、例えばシステム管理者が、周波数変更指示を入力部４０に入力した場合、入力部４０は、その周波数変更指示を指示入力部１０に出力すればよい。システム管理者が周波数変更指示に加えて周波数の値を入力部４０に入力した場合、入力部は周波数変更指示に加えて周波数の値を指示入力部１０に出力する。
【００５５】
監視部１４あるいは入力部４０が、周波数変更指示に加えて周波数の値を出力する場合、指示入力部１０は、周波数変更指示に加えて周波数の値を受信する。
【００５６】
プロセッサ制御部１２は、指示入力部１０を介して周波数変更指示を受信すると、プロセッサ２０に割り込みを通知する（ステップＳ１１）。プロセッサ制御部１２は、同じＣＰＵ／ＩＯモジュール上のプロセッサ２０に割り込みを通知するのと同時に、他のＣＰＵ／ＩＯモジュール上の各プロセッサ２０にも、同じ割り込みが通知される。プロセッサ制御部１２は、周波数の値を受信した場合、周波数変更指示に加えて、受信した周波数の値をプロセッサ２０に通知する。プロセッサ制御部１２は、受信した周波数の値を、更に、例えば他のＣＰＵ／ＩＯモジュール上の各プロセッサ制御部１２を介して、他のＣＰＵ／ＩＯモジュール上の各プロセッサ２０にも送信する。
【００５７】
プロセッサ制御部１２が通知した割り込みにより、プロセッサ２０は、前述の同一処理を行う動作を中断する（ステップＳ１２）。同時に、他のプロセッサ２０各々も、前述の同一処理を行う動作を中断する。
【００５８】
更に、プロセッサ２０は、プロセッサ２０の内部状態を表す内部情報を、内部情報記憶部１１に格納する（ステップＳ１３）。同時に、他のプロセッサ２０も、内部状態を表す内部情報を、そのプロセッサ２０が含まれるＣＰＵ／ＩＯモジュール上の内部情報記憶部１１に格納する。格納後、プロセッサ２０は、周波数の変更を行うためのプログラムを、割り込みを通知された時に実行するプログラムを記憶する割り込みハンドラ記憶部からメモリに読み込んで実行する。割り込みがＳＭＩによる割り込みであるなら、プロセッサ２０はＳＭＩハンドラをＳＭＩハンドラ記憶部からメモリに読み込んで実行する。
【００５９】
プロセッサ２０は、プロセッサ２０の周波数の変更を行う（ステップＳ１４）。同時に、他のプロセッサ２０も、周波数の変更を行う。
【００６０】
例えばプロセッサ制御部１２が、周波数の変更を行ってから時間Ｔｍの間、プロセッサ２０が処理を再開しないように保つ（ステップＳ１５、Ｎ）。前述のように、プロセッサ制御部１２が、前述のチップセットをリセット状態に保つことにより、プロセッサ２０が処理を再開しないように保てばよい。
【００６１】
プロセッサ２０は、周波数の変更を行ってから時間Ｔｍが経過すると（ステップＳ１５、Ｙ）、内部情報記憶部１１に格納した内部情報を読み出し、自らの内部状態を、読み出した内部情報が表す内部状態に復元する（ステップＳ１６）。同時に、他のプロセッサ２０も、自らの内部状態の復元を行う。
【００６２】
プロセッサ２０は、前述の同一処理を実行する動作を再開する（ステップＳ１７）。同時に、他のプロセッサ２０も、前述の同一処理を実行する動作を再開する。
【００６３】
以上で説明した本実施形態では、ステップＳ１１の時点で、各プロセッサ２０が同期して同一の処理を行う同期状態で動作していることが前提であった。しかし、複数のプロセッサ２０のうち一部のプロセッサ２０だけが同期状態であってもよい。この場合、ステップＳ１１において、プロセッサ制御部１２は、同期状態のプロセッサ２０だけに割り込みを通知すればよい。その後の処理は、各プロセッサ２０が同期状態で動作している場合と同じである。なお、同期状態で動作しているプロセッサ２０以外の、処理を行っていない待機中のプロセッサ２０の周波数を変更する必要があれば、プロセッサ制御部１２は、これらのプロセッサ２０の周波数を、既存の任意の方法で変更すればよい。また、同期状態でないプロセッサ２０が存在する場合、プロセッサ制御部１２は、そのプロセッサ２０を同期状態で動作させてから、各プロセッサ２０に割り込みを通知してもよい。その場合、プロセッサ制御部１２は、ステップＳ１０で周波数変更指示を受信すると、同期状態でないプロセッサ２０を含むＣＰＵ／ＩＯモジュールが正常に動作するか、既存の任意の方法でチェックを行えばよい。正常に動作しないＣＰＵ／ＩＯモジュールが存在する場合、プロセッサ制御部１２は、そのＣＰＵ／ＩＯモジュールを、既存の方法でシステムから切り離せばよい。プロセッサ制御部１２は、その後、正常に動作するＣＰＵ／ＩＯモジュールを既存の方法で同期状態で動作させ、ステップＳ１１以降の動作の通りに周波数の変更を行えばよい。
【００６４】
以上で説明した本実施形態には、冗長性が失われて信頼性が低下したまま処理が行われる時間を無くすことができるという効果がある。
【００６５】
その理由は、プロセッサ２０が、周波数を変更した後、同期状態にあった全てのプロセッサ２０の周波数が切り替わる時間以上の所定時間経過後に、内部状態の復元及び動作の再開を行うからである。従って、本実施形態の複数のプロセッサ２０は、各プロセッサ２０の動作周波数を変更する場合でも、各プロセッサ２０が同期を取りながら同一処理を同時に行う、同期状態を保つことができる。
【００６６】
次に、本発明の第２の実施形態について、図面を参照して詳細に説明する。
【００６７】
図５は、本実施形態の構成を表すブロック図である。
【００６８】
図５を参照すると、本実施形態のＣＰＵ／ＩＯモジュール１は、同期して同一処理を実行するプロセッサ２０を有する、同一構成の複数のＣＰＵ／ＩＯモジュールを含み、前記複数のＣＰＵ／ＩＯモジュールのプロセッサ２０に対して通知される割り込みが、同時に全てのＣＰＵ／ＩＯモジュールのプロセッサ２０に対して通知されるフォールトトレラントコンピュータ０の、前記複数のＣＰＵ／ＩＯモジュールに含まれ、周波数変更指示を入力する指示入力部１０と、前記周波数変更指示を入力すると前記プロセッサ２０に割り込みを通知するプロセッサ制御部１２と、前記割り込みを受信すると、前記同一処理を中断し、当該プロセッサ２０の周波数の変更を行い、周波数の変更の時刻から、前記複数のＣＰＵ／ＩＯモジュール全てのプロセッサ２０の周波数が切り替わる時間以上の所定時間経過後に、中断した前記同一処理を再開する前記プロセッサ２０とを含む。
【００６９】
以上で説明した本実施形態には、第１の実施形態と同様、冗長性が失われて信頼性が低下したまま処理が行われる時間を無くすことができるという効果がある。
【００７０】
その理由は、プロセッサ２０が、周波数を変更した後、同期状態にあった全てのプロセッサ２０の周波数が切り替わる時間以上の所定時間経過後に、内部状態の復元及び動作の再開を行うからである。従って、本実施形態の複数のプロセッサ２０は、各プロセッサ２０の動作周波数を変更する場合でも、各プロセッサ２０が同期を取りながら同一処理を同時に行う、同期状態を保つことができる。
【００７１】
以上、実施形態を参照して本発明を説明したが、本発明は上記実施形態に限定されるものではない。本発明の構成や詳細には、本発明のスコープ内で当業者が理解しうる様々な変更をすることができる。
【符号の説明】
【００７２】
０    ＦＴコンピュータ
１、２、Ｎ    ＣＰＵ／ＩＯモジュール
１０    指示入力部
１１    内部情報記憶部
１２    プロセッサ制御部
１３    センサ信号入力部
１４    監視部
１５    周波数記憶部
２０    プロセッサ
３１、３２    センサ
４０    入力部
【図１】
0005508354.tif 000002
【図２】
0005508354.tif 000003
【図３】
0005508354.tif 000004
【図４】
0005508354.tif 000005
【図５】
0005508354.tif 000006