説明

モジュール、周波数制御方法、及び周波数制御プログラム

【課題】 複数のプロセッサが同一処理を同期を取りながら同時に行う、同期状態を保ったまま、各プロセッサの動作周波数を変更するモジュールを提供する。
【解決手段】 本発明のモジュールは、同期して同一処理を実行するプロセッサを有する、同一構成の複数のモジュールを含み、前記複数のモジュールのプロセッサに対して通知される割り込みが、同時に全てのモジュールのプロセッサに対して通知されるフォールトトレラントコンピュータの、前記複数のモジュールに含まれ、周波数変更指示を入力する指示入力手段と、前記周波数変更指示を入力すると前記プロセッサに割り込みを通知するプロセッサ制御手段と、前記割り込みを受信すると、前記同一処理を中断し、当該プロセッサの周波数の変更を行い、周波数の変更の時刻から、前記複数のモジュール全てのプロセッサの周波数が切り替わる時間以上の所定時間経過後に、中断した前記同一処理を再開する前記プロセッサとを含む。

【発明の詳細な説明】
【技術分野】
【0001】
本発明はプロセッサの周波数を制御するモジュール、周波数制御方法、及び周波数制御プログラムに関し、特に、同一処理を同期して行う複数のプロセッサの周波数を制御するモジュール、周波数制御方法、及び周波数制御プログラムに関する。
【背景技術】
【0002】
プロセッサが二重化された情報処理装置のプロセッサの周波数を変更する技術には、例えば、特許文献1乃至3に記載の技術がある。
【0003】
特許文献1に記載の二重化処理装置は、主電源が断状態になると、電源を主電源から副電源であるバッテリに切り替える。主電源が断状態になって第1の所定時間が経過すると、二重化処理装置は、二重化されているプロセッサのうち、障害に備えて待機しているスタンバイ系のプロセッサを切り離し、スタンバイ系のプロセッサの電源を切断する。更に第2の所定時間が経過すると、二重化処理装置は、二重化時に実際に処理を行っているアクティブ系のプロセッサの動作クロック信号の速度を低速度に切り替える。二重化処理装置は、さらに、バッテリの使用限界を監視し、使用限界が近づいた場合、停止処理を実行する。
【0004】
特許文献2には、複数のCPU(Central Processing Unit)コアを内蔵するLSI(Large Scale Integration)を含み、CPUコアが動作する周波数を制御して消費電力を低減する省電力制御システムであるプリンタが記載されている。プリンタは、低消費電力モード(スリープモード)に移行する際、まず、2個のCPUのうちCPU−1が、自身が低消費電力モードに移行する命令を実行して動作を停止する。CPU−1の低消費電力モードへの移行後、CPU−2が、CPU−1に供給されるクロックを通常より低い動作クロック周波数に変更し、CPU−1を低消費電力モードから通常動作モードに移行させる。このことにより、CPU−1は低クロック周波数で動作する。CPU−2は、CPU−1が低消費電力モードから抜けて通常動作モードに移行するまで待ってから、自身が低消費電力モードに移行する命令を実行して動作を停止する。
【0005】
特許文献3には、フォールトトレラントコンピュータ(FTコンピュータ、Fault Tolerant Computer)及びFTコンピュータが備える複数のプロセッサの制御方法が記載されている。特許文献3のFTコンピュータは、正常稼働中は、2つのモジュールが同じ命令列をクロック同期させて全く同じに処理する、2重化状態で動作する。FTコンピュータが2重化状態で動作中に、一方のモジュール(モジュール1)内のプロセッサの温度が上昇し、温度異常信号がアサートされた場合、モジュール1は動作を停止して縮退する。そして、FTコンピュータは、他方のモジュール(モジュール2)のみが動作する片系稼働に遷移する。
【0006】
モジュール1が縮退している状態でモジュール2内のプロセッサの温度が上昇し、温度異常信号がアサートされた場合、モジュール2内の制御部がモジュール2内のプロセッサの動作周波数を落とす。このことにより、モジュール2内の制御部は、モジュール2の動作状態を高消費電力状態から低消費電力状態に遷移させて加熱を押さえる。
【0007】
低消費電力状態が長く続く場合、モジュール2内の制御部は、縮退していたモジュール1を起動して、モジュール1内のプロセッサを、モジュール2内のプロセッサと同じ動作周波数で稼働させ、2重化のための組み込み処理を行って2重化を実現する。
【先行技術文献】
【特許文献】
【0008】
【特許文献1】特開平7−160369号公報
【特許文献2】特開2007−047966号公報
【特許文献3】特開2008−217051号公報
【発明の概要】
【発明が解決しようとする課題】
【0009】
同一周波数で動作する同一の種類の複数のプロセッサの周波数の設定を、同時に他の同一周波数に変更する場合、個体差があるため、周波数の変化が完了する時刻は全てのプロセッサで同じになるとは限らない。
【0010】
図2は、周波数Highで動作する2つの同一種類のプロセッサの周波数の設定を、同時に周波数Lowに変更した場合の、各プロセッサの周波数の遷移の例を表す図である。図2の例の場合、周波数がHighからLowに変化するまでの時間は、一方のプロセッサがT0であり、他方のプロセッサではT1である。この例の場合、周波数の設定を変更してから時間T1が経過するまでの間、2つのプロセッサは異なる周波数で動作する。
【0011】
ロックステップ方式のFTコンピュータにおいては、複数のプロセッサが、同一処理を同期を取りながら同時に行う、同期状態で動作する。FTコンピュータの複数のプロセッサが同期状態で動作している間、処理の冗長性が維持される。
【0012】
前述のように、FTコンピュータの全プロセッサの周波数の設定を変更する場合、全プロセッサの周波数の変化が完了するまでの時間、全てのプロセッサが同じ周波数で動作するとは限らない。各プロセッサの周波数の変化速度に差があれば、その間の各プロセッサの処理速度に差が生じる。この場合、同期状態で動作中の複数のプロセッサの動作周波数の設定を、同時に同じ周波数になるよう変更したとしても、全てのプロセッサの周波数の変化が完了するまでの間に、各プロセッサに処理の進行の度合いに差が生じる。従って、各プロセッサの同期状態は維持されない。
【0013】
特許文献1〜特許文献3に記載されている技術は、いずれも、2個のプロセッサの周波数を変更する過程で、少なくとも一時的に、一方のプロセッサの動作を停止させてプロセッサの冗長性を解消する。従って、特許文献1〜特許文献3に記載されている技術は、いずれも、複数のプロセッサの同期状態を保ったまま、各プロセッサの動作周波数を変更することはできない。従って、特許文献1〜特許文献3に記載されている技術で各プロセッサの動作周波数を変更する場合、少なくとも一時的に、冗長性が失われ信頼性が低下した状態で処理が行われるという問題がある。特に、頻繁な周波数の変更が必要な状況では、冗長性が失われ信頼性が低下した状態で処理が行われる時間が長くなる。
【0014】
本発明の目的は、複数のプロセッサが同一処理を同期を取りながら同時に行う、同期状態を保ったまま、各プロセッサの動作周波数を変更するモジュールを提供することにある。
【課題を解決するための手段】
【0015】
本発明のモジュールは、同期して同一処理を実行するプロセッサを有する、同一構成の複数のモジュールを含み、前記複数のモジュールのプロセッサに対して通知される割り込みが、同時に全てのモジュールのプロセッサに対して通知されるフォールトトレラントコンピュータの、前記複数のモジュールに含まれ、周波数変更指示を入力する指示入力手段と、前記周波数変更指示を入力すると前記プロセッサに割り込みを通知するプロセッサ制御手段と、前記割り込みを受信すると、前記同一処理を中断し、当該プロセッサの周波数の変更を行い、周波数の変更の時刻から、前記複数のモジュール全てのプロセッサの周波数が切り替わる時間以上の所定時間経過後に、中断した前記同一処理を再開する前記プロセッサとを含む。
【0016】
本発明の周波数制御方法は、同期して同一処理を実行するプロセッサを有する、同一構成の複数のモジュールを含み、前記複数のモジュールのプロセッサに対して通知される割り込みが、同時に全てのモジュールのプロセッサに対して通知されるフォールトトレラントコンピュータの、前記複数のモジュールに含まれるモジュールにおいて、周波数変更指示を入力し、前記周波数変更指示を入力すると前記モジュールに含まれるプロセッサに割り込みを通知し、前記割り込みを受信した前記プロセッサは、前記同一処理を中断し、当該プロセッサの周波数の変更を行い、周波数の変更の時刻から、前記複数のモジュール全てのプロセッサの周波数が切り替わる時間以上の所定時間経過後に、中断した前記同一処理を再開する。
【0017】
本発明の周波数変更プログラムは、同期して同一処理を実行するプロセッサを有する、同一構成の複数のモジュールを含み、前記複数のモジュールのプロセッサに対して通知される割り込みが、同時に全てのモジュールのプロセッサに対して通知されるフォールトトレラントコンピュータの、前記複数のモジュールに含まれるモジュールの前記プロセッサを、周波数変更指示を通知する割り込みを受信すると、前記同一処理を中断し、当該プロセッサの周波数の変更を行い、周波数の変更の時刻から、前記複数のモジュール全てのプロセッサの周波数が切り替わる時間以上の所定時間経過後に、中断した前記同一処理を再開する前記プロセッサとして動作させる。
【発明の効果】
【0018】
本発明には、複数のプロセッサの動作周波数を変更する場合でも、冗長性が失われて信頼性が低下したまま処理が行われる時間を無くすことができるという効果がある。
【図面の簡単な説明】
【0019】
【図1】本発明の第1の実施形態の構成を表す図である。
【図2】各プロセッサの周波数の変更に要する時間のばらつきを表す図である。
【図3】各プロセッサの周波数を変更してから各プロセッサの動作を再開させるまでの時間を表す図である。
【図4】本発明の第1の実施形態の動作を表すフローチャートである。
【図5】本発明の第2の実施形態の構成を表す図である。
【発明を実施するための形態】
【0020】
次に、本発明の第1の実施形態について図面を参照して詳細に説明する。
【0021】
図1は、本実施形態のFTコンピュータ0の構成を表す図である。
【0022】
図1を参照すると、FTコンピュータ0は、複数のCPU/IO(Input/Output)モジュール(CPU/IOモジュール1、CPU/IOモジュール2、…、CPU/IOモジュールN)を含む。CPU/IOモジュールは、単にモジュールとも呼ばれる。本実施形態では、各CPU/IOモジュールの構成は同一である。
【0023】
各CPU/IOモジュールは、指示入力部10とプロセッサ制御部12とプロセッサ20を含む。各CPU/IOモジュールは、内部情報記憶部11と、センサ信号入力部13と、監視部14と、周波数記憶部15を含んでいてもよい。さらに、周波数制御装置1に、例えばキーボードなどの入力部40が接続されていてもよい。
【0024】
また、各CPU/IOモジュールは、センサ(例えばセンサ31、センサ32)を含んでいてもよい。これらのセンサは、例えば、プロセッサの温度センサを測定する温度センサや、CPU/IOモジュールの消費電力を測定する電力センサである。また、センサがCPU/IOモジュールの外部で、例えば電力を測定するセンサである場合、センサはCPU/IOモジュール上に無くてもよい。また、CPU/IOモジュールが含むプロセッサや、プロセッサが実行中のOS(Operating System)が、プロセッサの利用率のようなプロセッサの負荷を出力する機能を備えていてもよい。CPU/IOモジュール上には、図示しないIOデバイスが存在していてもよい。また、一つのCPU/IOモジュールが、例えば、CPUモジュールとIOモジュールの組合せなど、複数のモジュールの組合せであってもよい。
【0025】
以下では、主に、一つのCPU/IOモジュール(CPU/IOモジュール1)上にある、指示入力部10とプロセッサ制御部12とプロセッサ20について説明する。
【0026】
本実施形態の各CPU/IOモジュールは、プログラムを記憶する記録媒体からメモリに読み込まれた、CPU/IOモジュールの各部の機能を実現するための専用のプログラムと、そのプログラムを実行するコンピュータ、専用のハードウェア、又は、コンピュータ及び上述の専用プログラムと専用のハードウェアの組合せにより実現することができる。内部情報記憶部11や、周波数記憶部15は、コンピュータが含むメモリやハードディスク装置により実現することができる。また、指示入力部10と、プロセッサ制御部12と、センサ信号入力部13と、監視部14は、例えば、上述の専用のプログラムと、そのプログラムを実行するコンピュータにより実現することができる。あるいは、指示入力部10と、内部情報記憶部11と、プロセッサ制御部12と、センサ信号入力部13と、監視部14と、周波数記憶部15の一部又は全部を、各部の機能を実現する専用の回路によって実現することもできる。
【0027】
本実施形態の各CPU/IOモジュールが含む各プロセッサ(プロセッサ20)は、同一処理を同期して実行することができる。そのために、各CPU/IOモジュールの、例えばプロセッサ制御部12が、例えば、プロセッサ20が他のCPU/IOモジュールが含むプロセッサ20と同一処理を同期して実行するよう制御する、プロセッサ20に接続された図示しない後述のFT制御チップを含んでいればよい。プロセッサ制御部12は、FT制御チップを含むのではなく、FT制御チップの機能を持つよう構成されていてもよい。なお、このことにより、各CPU/IOモジュール上の各プロセッサ制御部12自身も、同時に同一の動作を行うことが可能である。
【0028】
また、プロセッサ20の周波数は可変である。例えばプロセッサ制御部12が、プロセッサ20の周波数を変更すればよい。例えば、プロセッサ制御部12が、プロセッサ20の図示しない周波数変更レジスタに、周波数を変更するための値を書き込み、プロセッサ20のリセットを行うことで、プロセッサ20の周波数を変更すればよい。
【0029】
FT制御チップは、プロセッサ20や、例えばメモリやIOデバイスなどプロセッサ20以外のデバイスと、他のCPU/IOモジュールが含む他のFT制御チップに接続される。そして、FT制御チップは、FT制御チップに接続されている、プロセッサ20を含む各デバイスと、他のFT制御チップに接続されている同種のデバイスが、同期して同一の動作を行うよう制御する。そのためにFT制御チップが備える機能の一つに、FT制御チップが、自らと同一のCPU/IOモジュール上のプロセッサ20と、他のCPU/IOモジュール上のプロセッサ20の全てに対して、同じ種類の割り込みを通知することがあげられる。FT制御チップは、少なくともこのような割り込みが必要な場合に、このような割り込みを通知することができればよい。FT制御チップは、このような割り込みを実現するために、例えば、他のCPU/IOモジュール上のFT制御チップに、そのCPU/IOモジュール上のプロセッサ20に対する割り込みの通知を依頼し、割り込みの通知を行わせればよい。前述の割り込みの実現方法は、既存の任意の方法でよい。例えば、特開2006−178636号公報にも、DMAコントローラやソフトウェアによる割り込みを、自系のCPUと他系のCPUの双方に通知するフォールトトレラントコンピュータが記載されている。FT制御チップは、割り込みを通知する対象の全てのプロセッサ20に、同時に割り込みが通知されるよう制御を行う。FT制御チップは、1個のLSIで構成されていればよく、複数のLSIで構成されていてもよい。FT制御チップは、FT制御チップの機能を実現するための専用のプログラムと、そのプログラムを実行するプロセッサや、FT制御チップの機能を実現するための専用の回路によって実現されうる。
【0030】
また、各CPU/IOモジュールは、例えば図示しないバックプレーンに接続され、そのバックプレーンを通るバスを介して、互いに通信が可能であればよい。この場合、FT制御チップは、このバスを介して、前述の割り込みの通知を行えばよい。また、バックプレーンが、各CPU/IOモジュールに、同一のクロックを供給すればよい。バックプレーンは、供給するクロックを発生するためのクロック回路を含んでいればよい。後述の各CPU/IOモジュールのプロセッサ20やプロセッサ制御部12が、同一処理を同時に行う場合、このクロック回路が供給するクロックにより同期して同一処理を行えばよい。
【0031】
センサ信号入力部13は、センサ(センサ31やセンサ32)から、測定値を受信する。センサ入力部13は、例えば、各センサの測定値を入力し、監視部14に送信するセンサ信号入力回路によって実現され得る。センサ31は、例えば、プロセッサ20の温度を測定する温度センサである。センサ32は、例えば、消費電力を測定する電力センサである。あるいは、センサ信号入力部13は、使用率などの負荷を出力する機能を備えたプロセッサ20やプロセッサ20で動作するOSから、プロセッサ20の使用率などの負荷の大きさを表す値を受信してもよい。センサの種類は、CPU/IOモジュールの何らかの状態を測定するセンサであれば、他の種類であっても構わない。図1に記載されている例におけるセンサの数は2個であるが、センサの数は2個に限らない。なお、センサは、CPU/IOモジュールの何らかの状態が正常であるか異常であるかを検出するセンサであってもよい。この場合、センサは、後述の監視部14を介さず、後述の指示入力部10に、直接、周波数変更指示を出力してもよい。
【0032】
監視部14は、例えばセンサの測定値から異常を検出した場合、指示入力部10に対して、プロセッサ20の周波数を変更するよう指示する周波数変更指示を出力する。監視部14は、例えば、BMC(Baseboard Management Controller)によって実現されうる。監視部14は、センサの測定値から検出した異常が、例えば、温度の測定値が所定値より高い、消費電力の測定値が所定値より高いなどである場合、プロセッサ20の周波数を低くするよう指示する周波数変更指示を出力すればよい。監視部14は、センサの測定値から異常を検出した場合ではなく、異常ではない特定の事象を検出した場合に、周波数変更指示を出力してもよい。監視部14は、例えば、プロセッサ20の負荷の測定値が所定値より低く、処理能力を落とした省電力運転が可能な場合に、プロセッサ20の周波数を低くするよう指示する周波数変更指示を出力してもよい。監視部14が出力する周波数変更指示は、周波数を低くする指示でなくてもよい。例えば、プロセッサ20の周波数が低く設定されている場合に、監視部14がプロセッサ20の負荷の測定値が所定値より高いことを検出した場合、監視部14は、プロセッサ20の周波数を高くする指示を出力すればよい。
【0033】
周波数記憶部15は、センサの測定値に対応付けられたプロセッサ20の周波数を表す値を記憶する。プロセッサ20の周波数を表す値は、具体的な周波数の数値であればよい。あるいは、プロセッサ20の周波数が幾つかの段階に設定可能である場合、プロセッサ20の周波数を表す値は、いずれかの段階を表す値であってもよい。例えば、プロセッサ20の周波数が3段階(High、Middle、Low)に設定可能である場合、プロセッサ20の周波数を表す値は、High、Middle、Lowのいずれかを表す値であればよい。
【0034】
監視部14は、周波数変更指示に加えて周波数を表す値を送信する場合、センサ信号入力部13が入力した測定値に対応する周波数を表す値を、周波数記憶部15から読み出せばよい。監視部14は、周波数変更指示に加えて、読み出した周波数を表す値を指示入力部10に出力すればよい。あるいは、監視部14は、読み出した周波数を表す値を、CPU/IOモジュール上の図示しない指定周波数記憶部に格納してもよい。この指定周波数記憶部は、変更後の周波数を表す値を記憶する記憶装置である。指定周波数記憶部が変更後の周波数を表す値を記憶する構成である場合、後述のように、周波数の変更の際、プロセッサ20が、指定周波数記憶部から周波数を表す値を読み出せばよい。
【0035】
また、例えばオペレータやシステム管理者が、入力部40を介して、周波数変更指示を指示入力部10に入力してもよい。オペレータやシステム管理者は、入力部40を介して、周波数変更指示に加えて、周波数を表す値を指示入力部10に入力してもよい。この場合、例えば、オペレータやシステム管理者が、入力部40を介して、CPU/IOモジュール上の図示しない指定周波数設定回路に変更する周波数を表す値を入力して記憶させてもよい。そして、指定周波数設定回路は、周波数を表す値を入力すると、周波数を表す値を保持したまま、指示入力部10に周波数変更指示を出力してもよい。あるいは、入力部40は、オペレータやシステム管理者が周波数変更指示に加えて周波数を表す値を入力した場合、周波数変更指示を指示入力部10に入力し、前述の指定周波数記憶部に格納してもよい。
【0036】
指示入力部10は、例えば監視部14や入力部40から、周波数変更指示を受信する。監視部14や入力部40が周波数変更指示に加えて周波数を表す値を出力する場合、指示入力部10は、周波数変更指示に加えて周波数を表す値を受信する。指示入力部10は、例えば、プロセッサ20に対する割り込みの信号を生成する割り込み生成回路の、周波数変更指示を入力するインターフェース部によって実現され得る。
【0037】
内部情報記憶部11は、プロセッサ20の内部状態を表す内部情報を記憶する。プロセッサ20の内部情報は、例えばプロセッサ20内の各レジスタの値である。内部情報記憶部11は、プロセッサ20の内部情報だけでなく、例えば、プロセッサ20と各デバイスを接続する1個以上のLSIであるチップセットの内部情報を記憶してもよい。チップセットの内部情報も、例えばチップセット内の各レジスタの値である。
【0038】
プロセッサ制御部12は、指示入力部10を介して周波数変更指示を受信する。監視部14や入力部40が周波数変更指示に加えて周波数を表す値を出力する場合、プロセッサ制御部12は、周波数変更指示に加えて周波数を表す値を受信する。プロセッサ制御部12は、周波数変更指示を受信すると、各CPU/IOモジュール上の各プロセッサ20に対して、周波数変更指示の割り込みを通知する。プロセッサ制御部12は、他のCPU/IOモジュール上のプロセッサ20に対する割り込みの通知を、例えばそのCPU/IOモジュール上のプロセッサ制御部12を介して行えばよい。プロセッサ制御部12は、他のCPU/IOモジュール上のプロセッサ20に対する割り込みの通知を、既存の任意の方法で行ってもよい。
【0039】
また、プロセッサ制御部12は、周波数変更指示に加えて変更後の周波数を表す値を、指示入力部10から受信した場合、受信した変更後の周波数を表す値も、プロセッサ20に通知する。プロセッサ制御部12による、周波数を表す値のプロセッサ20への通知の方法は任意である。あるいは、プロセッサ制御部12が、受信した周波数を表す値を、前述の指定周波数記憶部に格納してもよい。この場合、プロセッサ20が、格納された周波数を表す値を、指定周波数記憶部から読み出せばよい。
【0040】
プロセッサ制御部12は、例えば、前述の割り込み生成回路と、前述のFT制御チップによって実現されうる。プロセッサ制御部12、例えばBMCである監視部14から周波数変更指示を受信すると、SMI(System Management Interrupt)による割り込みをプロセッサ20に通知することで、周波数変更指示を出力すればよい。SMIは優先順位の高い割り込みの一例である。プロセッサ制御部12がプロセッサ20に通知する割り込みは、他の割り込みであってもよい。以下では、主に、割り込みがSMIによる割り込みである例について説明する。
【0041】
プロセッサ20は、割り込みが通知されると、他のCPU/IOモジュール上のプロセッサ20と同期して同時に同一処理を行っていた動作を中断する。プロセッサ20は、前述の同一処理の中断後、自らの周波数を変更し、周波数の変更の時刻から、各CPU/IOモジュール上の全てのプロセッサ20の周波数が切り替わる時間以上の所定の時間経過後に、前述の同一処理を行う動作を再開する。前述の同一処理の中断後にプロセッサ20が行う各処理も、例えば前述のFT制御チップにより、各CPU/IOモジュール上のプロセッサ20で、同期して同時に行われるよう制御される。
【0042】
割り込みを通知され、動作を中断したプロセッサ20は、割り込み通知時のプロセッサ20の内部状態を表す内部情報を、専用のメモリ領域に格納する。この専用のメモリ領域が、内部情報記憶部11であればよい。プロセッサ20は、内部情報の格納後、通知された割り込みの種類(例えば周波数変更指示を表す割り込み)に応じたプログラムを、そのプログラムを記憶する記憶装置から読み出して実行する。前述のように割り込みがSMIである場合、プロセッサ20は、SMIによる割り込みが通知された場合に実行するプログラムであるSMIハンドラを記憶するSMIハンドラ記憶部から、割り込みの種類に応じたSMIハンドラをメモリに読み出して実行する。プロセッサ20は、読み出して実行するSMIハンドラにより、内部情報を、前述の専用メモリから読み出し、その専用メモリとは別の記憶装置である内部情報記憶部11に格納してもよい。
【0043】
本実施形態のプロセッサ20が、周波数変更指示を表す割り込みが通知された場合に読み出して実行するSMIハンドラは、少なくとも周波数の変更を行うSMIハンドラである。周波数の変更方法は、既存の任意の方法でよい。SMIハンドラを実行するプロセッサ20は、例えば以下のように周波数の変更を行ってもよい。
【0044】
本実施形態のプロセッサ20は、例えば、プロセッサ20内の周波数変更レジスタに変更後の周波数を表す値を書き込み、プロセッサ20をリセットすることで周波数の変更が行われるプロセッサである。プロセッサ20は、例えば、プロセッサ20のリセット後に、プロセッサ20の周波数を、周波数変更レジスタに書き込まれている値が表す周波数に変更する、図示しない周波数変更部を含んでいればよい。この場合、SMIハンドラを実行するプロセッサ20は、周波数変更レジスタに値を書き込み、例えばプロセッサ20に接続されている図示しないリセット生成回路を制御して、プロセッサ20のリセットを行うことで周波数の変更を行う。リセット生成回路は、プロセッサ20のリセットを行う信号を生成する回路である。プロセッサ20は、変更後の周波数を表す値を、通知された割り込みが表す周波数変更指示が周波数を低くする指示であるか、高くする指示であるかによって、予め決められた周波数を表す値から選択すればよい。書き込む周波数の値は、周波数の具体的な数値であっても、高い周波数又は低い周波数を表す値であってもよい。プロセッサ20は、周波数変更指示に加えて周波数を表す値を受信した場合、その値を周波数変更レジスタに書き込めばよい。CPU/IOモジュール1が、変更後の周波数が設定・格納された指定周波数設定回路や指定周波数記憶部を含む場合、プロセッサ20は、指定周波数設定回路や指定周波数記憶部から、周波数を表す値を読み出し、その値を周波数変更レジスタに書き込めばよい。各CPU/IOモジュール上のプロセッサ20は、同一時刻に周波数の変更を行う。例えば前述のFT制御チップが、各プロセッサ20の周波数の変更が、同一の時刻に行われるよう制御すればよい。周波数の変更を行う際、プロセッサ20の内部状態は、周波数変更のためのリセットにより失われても構わない。
【0045】
プロセッサ20は、周波数変更を行ってから所定の時間(Tm)が経過した後、自らの内部状態を、内部情報記憶部11から読み出した内部情報で表される、前述の同一処理の中断時の内部状態に復元する。プロセッサ20は、この復元の後、前述の中断した同一処理を再開する。周波数変更を行ってから時間Tmが経過するまでの時間、例えば、例えば、プロセッサ制御部12が、前述のチップセットをリセット状態に保つことで、プロセッサ20が処理を実行しない状態に保っておけばよい。あるいは、周波数の変更を行ってから時間Tmが経過した後、例えばプロセッサ制御部12が、前述の処理再開を指示する割り込みをプロセッサ20に通知してもよい。プロセッサ20の内部状態の復元及び中断した処理の再開の動作は、プロセッサ20が、処理の実行中に通知された割り込みによって開始した割り込み処理の終了時に、通常行う動作と同じであってよい。
【0046】
前述のように、複数のプロセッサ20が周波数の変更を同時に行ったとしても、周波数の変更を行ってから各プロセッサ20の周波数の変更が完了するまでの時間には、例えば図2に示すように、ばらつきが生じる。従って、各プロセッサ20が、周波数の変更が完了するとすぐに動作を再開させるのであれば、各プロセッサ20は同時に同一処理を同期して行えなくなる。しかし、プロセッサ20が、周波数変更を行ってから、全てのプロセッサ20の周波数の変更が完了するまでの時間以上の時間が経過した後に、同時に動作を再開させれば、各プロセッサ20が同時に同一処理を同期して実行する状態が保たれる。従って、前述のTmは、全てのプロセッサ20の周波数の変更が完了するまでの時間以上の時間であればよい。例えばシステムの設計者が、全てのプロセッサ20の周波数の変更が完了するまでの時間を予め測定し、Tmの値を設定しておけばよい。
【0047】
図3は、Tmの例を表す図である。Tmは、図3のように、各プロセッサ20が周波数を変更してから、全プロセッサ20の周波数の変更が完了するまでの時間(図3の例ではT0とT1の大きい方であるT1)以上の時間であればよい。
【0048】
なお、前述のFT制御チップの制御により、プロセッサ20は、前述の同一処理の中断、周波数変更、処理再開を、他のプロセッサ20と同時に行う。
【0049】
本実施形態では、プロセッサ20は、所定の時間Tmが経過した後に、他のプロセッサ20と同時に、前述の同一処理実行時の内部情報を復元し、動作を再開する。しかし、各プロセッサ20が同一の内部状態で同一時刻に動作を再開するのであれば、各プロセッサ20が内部状態を復元する時刻は必ずしも同じでなくても構わない。
【0050】
次に、本実施形態の動作について、図面を参照して詳細に説明する。
【0051】
図4は、本実施形態の動作を表すフローチャートである。
【0052】
図4を参照すると、まず、指示入力部10が、監視部14あるいは入力部40から、周波数変更指示を入力する(ステップS10)。ステップS10の時点で、各プロセッサ20は、同一処理を同期して同時に行っている。
【0053】
図1によると、センサ31やセンサ32は、例えばプロセッサ20の温度や負荷、消費電力を測定し、測定値をセンサ信号入力部13に入力する。監視部14は、センサ信号入力部13を介して受信したその測定値が、例えば予め設定された正常な範囲外であることを検出した場合に、周波数変更指示を指示入力部10に出力すればよい。監視部14は、受信した測定値に対応する周波数の値を、周波数記憶部15から読み出し、周波数変更指示に加えて指示入力部10に出力してもよい。
【0054】
あるいは、例えばシステム管理者が、周波数変更指示を入力部40に入力した場合、入力部40は、その周波数変更指示を指示入力部10に出力すればよい。システム管理者が周波数変更指示に加えて周波数の値を入力部40に入力した場合、入力部は周波数変更指示に加えて周波数の値を指示入力部10に出力する。
【0055】
監視部14あるいは入力部40が、周波数変更指示に加えて周波数の値を出力する場合、指示入力部10は、周波数変更指示に加えて周波数の値を受信する。
【0056】
プロセッサ制御部12は、指示入力部10を介して周波数変更指示を受信すると、プロセッサ20に割り込みを通知する(ステップS11)。プロセッサ制御部12は、同じCPU/IOモジュール上のプロセッサ20に割り込みを通知するのと同時に、他のCPU/IOモジュール上の各プロセッサ20にも、同じ割り込みが通知される。プロセッサ制御部12は、周波数の値を受信した場合、周波数変更指示に加えて、受信した周波数の値をプロセッサ20に通知する。プロセッサ制御部12は、受信した周波数の値を、更に、例えば他のCPU/IOモジュール上の各プロセッサ制御部12を介して、他のCPU/IOモジュール上の各プロセッサ20にも送信する。
【0057】
プロセッサ制御部12が通知した割り込みにより、プロセッサ20は、前述の同一処理を行う動作を中断する(ステップS12)。同時に、他のプロセッサ20各々も、前述の同一処理を行う動作を中断する。
【0058】
更に、プロセッサ20は、プロセッサ20の内部状態を表す内部情報を、内部情報記憶部11に格納する(ステップS13)。同時に、他のプロセッサ20も、内部状態を表す内部情報を、そのプロセッサ20が含まれるCPU/IOモジュール上の内部情報記憶部11に格納する。格納後、プロセッサ20は、周波数の変更を行うためのプログラムを、割り込みを通知された時に実行するプログラムを記憶する割り込みハンドラ記憶部からメモリに読み込んで実行する。割り込みがSMIによる割り込みであるなら、プロセッサ20はSMIハンドラをSMIハンドラ記憶部からメモリに読み込んで実行する。
【0059】
プロセッサ20は、プロセッサ20の周波数の変更を行う(ステップS14)。同時に、他のプロセッサ20も、周波数の変更を行う。
【0060】
例えばプロセッサ制御部12が、周波数の変更を行ってから時間Tmの間、プロセッサ20が処理を再開しないように保つ(ステップS15、N)。前述のように、プロセッサ制御部12が、前述のチップセットをリセット状態に保つことにより、プロセッサ20が処理を再開しないように保てばよい。
【0061】
プロセッサ20は、周波数の変更を行ってから時間Tmが経過すると(ステップS15、Y)、内部情報記憶部11に格納した内部情報を読み出し、自らの内部状態を、読み出した内部情報が表す内部状態に復元する(ステップS16)。同時に、他のプロセッサ20も、自らの内部状態の復元を行う。
【0062】
プロセッサ20は、前述の同一処理を実行する動作を再開する(ステップS17)。同時に、他のプロセッサ20も、前述の同一処理を実行する動作を再開する。
【0063】
以上で説明した本実施形態では、ステップS11の時点で、各プロセッサ20が同期して同一の処理を行う同期状態で動作していることが前提であった。しかし、複数のプロセッサ20のうち一部のプロセッサ20だけが同期状態であってもよい。この場合、ステップS11において、プロセッサ制御部12は、同期状態のプロセッサ20だけに割り込みを通知すればよい。その後の処理は、各プロセッサ20が同期状態で動作している場合と同じである。なお、同期状態で動作しているプロセッサ20以外の、処理を行っていない待機中のプロセッサ20の周波数を変更する必要があれば、プロセッサ制御部12は、これらのプロセッサ20の周波数を、既存の任意の方法で変更すればよい。また、同期状態でないプロセッサ20が存在する場合、プロセッサ制御部12は、そのプロセッサ20を同期状態で動作させてから、各プロセッサ20に割り込みを通知してもよい。その場合、プロセッサ制御部12は、ステップS10で周波数変更指示を受信すると、同期状態でないプロセッサ20を含むCPU/IOモジュールが正常に動作するか、既存の任意の方法でチェックを行えばよい。正常に動作しないCPU/IOモジュールが存在する場合、プロセッサ制御部12は、そのCPU/IOモジュールを、既存の方法でシステムから切り離せばよい。プロセッサ制御部12は、その後、正常に動作するCPU/IOモジュールを既存の方法で同期状態で動作させ、ステップS11以降の動作の通りに周波数の変更を行えばよい。
【0064】
以上で説明した本実施形態には、冗長性が失われて信頼性が低下したまま処理が行われる時間を無くすことができるという効果がある。
【0065】
その理由は、プロセッサ20が、周波数を変更した後、同期状態にあった全てのプロセッサ20の周波数が切り替わる時間以上の所定時間経過後に、内部状態の復元及び動作の再開を行うからである。従って、本実施形態の複数のプロセッサ20は、各プロセッサ20の動作周波数を変更する場合でも、各プロセッサ20が同期を取りながら同一処理を同時に行う、同期状態を保つことができる。
【0066】
次に、本発明の第2の実施形態について、図面を参照して詳細に説明する。
【0067】
図5は、本実施形態の構成を表すブロック図である。
【0068】
図5を参照すると、本実施形態のCPU/IOモジュール1は、同期して同一処理を実行するプロセッサ20を有する、同一構成の複数のCPU/IOモジュールを含み、前記複数のCPU/IOモジュールのプロセッサ20に対して通知される割り込みが、同時に全てのCPU/IOモジュールのプロセッサ20に対して通知されるフォールトトレラントコンピュータ0の、前記複数のCPU/IOモジュールに含まれ、周波数変更指示を入力する指示入力部10と、前記周波数変更指示を入力すると前記プロセッサ20に割り込みを通知するプロセッサ制御部12と、前記割り込みを受信すると、前記同一処理を中断し、当該プロセッサ20の周波数の変更を行い、周波数の変更の時刻から、前記複数のCPU/IOモジュール全てのプロセッサ20の周波数が切り替わる時間以上の所定時間経過後に、中断した前記同一処理を再開する前記プロセッサ20とを含む。
【0069】
以上で説明した本実施形態には、第1の実施形態と同様、冗長性が失われて信頼性が低下したまま処理が行われる時間を無くすことができるという効果がある。
【0070】
その理由は、プロセッサ20が、周波数を変更した後、同期状態にあった全てのプロセッサ20の周波数が切り替わる時間以上の所定時間経過後に、内部状態の復元及び動作の再開を行うからである。従って、本実施形態の複数のプロセッサ20は、各プロセッサ20の動作周波数を変更する場合でも、各プロセッサ20が同期を取りながら同一処理を同時に行う、同期状態を保つことができる。
【0071】
以上、実施形態を参照して本発明を説明したが、本発明は上記実施形態に限定されるものではない。本発明の構成や詳細には、本発明のスコープ内で当業者が理解しうる様々な変更をすることができる。
【符号の説明】
【0072】
0 FTコンピュータ
1、2、N CPU/IOモジュール
10 指示入力部
11 内部情報記憶部
12 プロセッサ制御部
13 センサ信号入力部
14 監視部
15 周波数記憶部
20 プロセッサ
31、32 センサ
40 入力部

【特許請求の範囲】
【請求項1】
同期して同一処理を実行するプロセッサを有する、同一構成の複数のモジュールを含み、前記複数のモジュールのプロセッサに対して通知される割り込みが、同時に全てのモジュールのプロセッサに対して通知されるフォールトトレラントコンピュータの、前記複数のモジュールに含まれ、
周波数変更指示を入力する指示入力手段と、
前記周波数変更指示を入力すると前記プロセッサに割り込みを通知するプロセッサ制御手段と、
前記割り込みを受信すると、前記同一処理を中断し、当該プロセッサの周波数の変更を行い、周波数の変更の時刻から、前記複数のモジュール全てのプロセッサの周波数が切り替わる時間以上の所定時間経過後に、中断した前記同一処理を再開する前記プロセッサと
を含むモジュール。
【請求項2】
センサに接続され、前記センサから計測値を入力するセンサ信号入力手段と、
前記計測値が所定の状態である場合、前記指示入力手段に前記周波数変更指示を出力する監視手段
を含む請求項1に記載のモジュール。
【請求項3】
前記センサの計測値と周波数の値を対応付けて記憶する周波数記憶手段を含み、
前記監視手段は、前記センサから入力した計測値に対応する周波数の値を前記周波数記憶手段から読み出し、読み出した前記周波数の値を前記周波数変更指示に加え前記指示入力手段に出力し、
前記指示入力手段は、前記周波数変更指示と共に前記周波数の値を受信し、
前記プロセッサ制御手段は、前記指示入力手段が前記周波数変更指示に加え前記周波数の値を受信すると、前記プロセッサを除く前記複数のプロセッサに各々接続されているプロセッサ制御手段各々に前記周波数の値を送信し、前記周波数の変更において、当該プロセッサ制御手段全てで前記周波数を前記周波数の値に変更させ、前記プロセッサの周波数を前記周波数の値に変更する
請求項2に記載のモジュール。
【請求項4】
前記センサと、請求項1乃至3のいずれかに記載のモジュールを含むフォールトトレラントコンピュータ。
【請求項5】
同期して同一処理を実行するプロセッサを有する、同一構成の複数のモジュールを含み、前記複数のモジュールのプロセッサに対して通知される割り込みが、同時に全てのモジュールのプロセッサに対して通知されるフォールトトレラントコンピュータの、前記複数のモジュールに含まれるモジュールにおいて、
周波数変更指示を入力し、
前記周波数変更指示を入力すると前記モジュールに含まれるプロセッサに割り込みを通知し、
前記割り込みを受信した前記プロセッサは、前記同一処理を中断し、当該プロセッサの周波数の変更を行い、周波数の変更の時刻から、前記複数のモジュール全てのプロセッサの周波数が切り替わる時間以上の所定時間経過後に、中断した前記同一処理を再開する
周波数制御方法。
【請求項6】
センサから計測値を入力し、
前記計測値が所定の状態である場合、前記周波数変更指示を出力する
請求項6に記載の周波数制御方法。
【請求項7】
同期して同一処理を実行するプロセッサを有する、同一構成の複数のモジュールを含み、前記複数のモジュールのプロセッサに対して通知される割り込みが、同時に全てのモジュールのプロセッサに対して通知されるフォールトトレラントコンピュータの、前記複数のモジュールに含まれるモジュールの前記プロセッサを、
周波数変更指示を通知する割り込みを受信すると、前記同一処理を中断し、当該プロセッサの周波数の変更を行い、周波数の変更の時刻から、前記複数のモジュール全てのプロセッサの周波数が切り替わる時間以上の所定時間経過後に、中断した前記同一処理を再開する前記プロセッサと
して動作させる周波数制御プログラム。
【請求項8】
請求項7に記載の周波数制御プログラムを実行する前記プロセッサに接続されたコンピュータを、
周波数変更指示を入力する指示入力手段と、
前記周波数変更指示を入力すると前記プロセッサに前記割り込みを通知するプロセッサ制御手段と
して動作させるモジュール制御プログラム。
【請求項9】
前記コンピュータを、
センサに接続され、前記センサから計測値を入力するセンサ信号入力手段と、
前記計測値が所定の状態である場合、前記指示入力手段に前記周波数変更指示を出力する監視手段と
して動作させる請求項8に記載のモジュール制御プログラム。
【請求項10】
前記コンピュータを、
前記センサの計測値と周波数の値を対応付けて記憶する周波数記憶手段と、
前記センサから入力した計測値に対応する周波数の値を前記周波数記憶手段から読み出し、読み出した前記周波数の値を前記周波数変更指示に加え前記指示入力手段に出力する前記監視手段と、
前記周波数変更指示と共に前記周波数の値を受信する前記指示入力手段と、
前記指示入力手段が前記周波数変更指示に加え前記周波数の値を受信すると、前記プロセッサを除く前記複数のプロセッサに各々接続されているプロセッサ制御手段各々に前記周波数の値を送信し、前記周波数の変更において、当該プロセッサ制御手段全てで前記周波数を前記周波数の値に変更させ、前記プロセッサの周波数を前記周波数の値に変更する前記プロセッサ制御手段と、
して動作させる請求項9に記載のモジュール制御プログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate