(57)【要約】【課題】マルチプロセッサシステムを構成するＣＰＵの処理速度が低下しないようにする。【解決手段】コンピュータ１０は、マルチプロセッサシステムを構成する複数のＣＰＵ１２０を備える。ＣＰＵ情報初期化部１０１は、コンピュータ１０の起動時に、ＣＰＵ１２０ａを活性化させるとともに、ＣＰＵ１２０ｂを非活性化させる。所定時間経過後、ＣＰＵ制御部１０３は、ＣＰＵ１２０ａを非活性化させるとともに、ＣＰＵ１２０ｂを活性化させる。【選択図】図１
2008152567.tif 000002
【特許請求の範囲】
【請求項１】
マルチプロセッサシステムを構成する複数のＣＰＵを備えるコンピュータであって、
前記コンピュータの起動時に、第１の前記ＣＰＵを活性化させるとともに、第２の前記ＣＰＵを非活性化させる起動処理部と、
所定時間経過後に、前記第１のＣＰＵを非活性化させるとともに、前記第２のＣＰＵを活性化させる切り替え処理部と、
を備えることを特徴とするコンピュータ。
【請求項２】
請求項１に記載のコンピュータであって、
前記第１及び第２のＣＰＵはそれぞれ第１及び第２のレジスタを備え、
前記第２のＣＰＵを活性化させる際に、前記第１のレジスタに格納されているデータを前記第２のレジスタに転送するコンテキスト転送部を備えること、
を特徴とするコンピュータ。
【請求項３】
請求項２に記載のコンピュータであって、
前記レジスタには、前記ＣＰＵに対して割り込みを行うデバイスを特定するデバイスＩＤを書き込むことにより前記ＣＰＵに割り込みを発生させる割り込みレジスタが含まれており、
前記コンテキスト転送部は、
前記切り替え処理部が前記第１のＣＰＵを非活性化させた後、前記第１のレジスタに含まれる前記割り込みレジスタ以外のレジスタに格納されているデータを前記第２のレジスタに転送し、
前記切り替え処理部が前記第２のＣＰＵを活性化させた後に、前記第１のレジスタに含まれる前記割り込みレジスタに格納されているデータを、前記第２のレジスタに含まれる前記割り込みレジスタに転送すること、
を特徴とするコンピュータ。
【請求項４】
請求項１に記載のコンピュータであって、
前記第１のＣＰＵの温度を取得する温度取得部を備え、
前記切り替え処理部は、前記第１のＣＰＵの温度が所定の閾値以上になった場合にのみ、前記第１のＣＰＵを非活性化させること、
を特徴とするコンピュータ。
【請求項５】
請求項１に記載のコンピュータであって、
前記第１及び第２のＣＰＵのそれぞれの温度を取得する温度取得部を備え、
前記切り替え処理部は、前記第１のＣＰＵの温度が、前記第２のＣＰＵの温度よりも高い場合にのみ、前記第１のＣＰＵを非活性化させ、前記第２のＣＰＵを活性化させること、
を特徴とするコンピュータ。
【請求項６】
請求項１に記載のコンピュータであって、
前記複数のＣＰＵのそれぞれの温度を取得する温度取得部を備え、
前記切り替え処理部は、前記温度の最も高い前記ＣＰＵを非活性化させ、前記温度の最も低い前記ＣＰＵを活性化させること、
を特徴とするコンピュータ。
【請求項７】
請求項１に記載のコンピュータであって、
前記ＣＰＵの識別情報に対応付けて、前記ＣＰＵが所属するグループを記憶するグループ記憶部を備え、
前記起動処理部は、複数の前記第２のＣＰＵを非活性化させ、
前記切り替え処理部は、前記第２のＣＰＵのうち、前記第１のＣＰＵと同一の前記グループに所属するものを選択し、選択した前記第２のＣＰＵを活性化させること、
を特徴とするコンピュータ。
【請求項８】
請求項１に記載のコンピュータであって、
前記第１及び第２のＣＰＵは、１つのマルチコアＣＰＵに実装される第１及び第２のＣＰＵコアであること、
を特徴とするコンピュータ。
【請求項９】
複数のＣＰＵを備えるコンピュータであって、
前記ＣＰＵはそれぞれ、前記ＣＰＵに割り込みを発生させる割り込み要求の宛先となる割り込みアドレスを格納するアドレスレジスタと、前記割り込み要求の発信元であるデバイスを特定するデバイスＩＤを格納するデバイスレジスタと、を備え、
前記コンピュータの起動時に、第１の前記ＣＰＵを活性化させ、前記第１のＣＰＵが備える前記アドレスレジスタに所定の前記割り込みアドレスを設定し、第２の前記ＣＰＵを非活性化させる起動処理部と、
前記所定の割り込みアドレスに対する前記割り込み要求に応じて、前記第１のＣＰＵが備える前記デバイスレジスタに前記デバイスＩＤを書き込む割り込み処理部と、
所定時間経過後に、前記第１のＣＰＵを非活性化させ、前記第１のＣＰＵが備える前記アドレスレジスタに格納されている前記割り込みアドレスを、前記第２のＣＰＵが備える前記アドレスレジスタに転送するとともに、前記第２のＣＰＵを活性化させ、前記第１のＣＰＵが備える前記デバイスレジスタに格納されている前記デバイスＩＤを前記第２のＣＰＵが備える前記デバイスレジスタに転送する切り替え処理部と、
を備えることを特徴とするコンピュータ。
【請求項１０】
マルチプロセッサシステムを構成する複数のＣＰＵを備えるコンピュータの制御方法であって、
前記コンピュータの起動時に、第１の前記ＣＰＵを活性化させるとともに、第２の前記ＣＰＵを非活性化させ、
所定時間経過後に、前記第１のＣＰＵを非活性化させるとともに、前記第２のＣＰＵを活性化させること、
を備えることを特徴とするコンピュータの制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のＣＰＵを備えるコンピュータ及びその制御方法に関する。
【背景技術】
【０００２】
ＣＰＵの演算処理を継続して行った場合に、ＣＰＵの温度が上昇し、これによりＣＰＵの演算性能が低下することが知られている。そこで各種のＣＰＵを冷却する技術が提案されている。例えば、特許文献１では、ＣＰＵの温度を監視し、ＣＰＵの温度が閾値を超えた場合にＣＰＵの処理速度を低下するようにしている。
【特許文献１】特開２００５−１６５４７０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
しかしながら、特許文献１に記載の仕組みでは、ＣＰＵの温度が上昇すると、発熱による誤動作を防止するために、ＣＰＵの処理速度を低下させる必要がある。  
本発明は、このような背景を鑑みてなされたものであり、マルチプロセッサシステムを構成するＣＰＵの処理速度が低下しないようにすることができるコンピュータを提供することを目的とする。
【課題を解決するための手段】
【０００４】
上記課題を解決するための本発明のうち請求項１に記載の発明は、マルチプロセッサシステムを構成する複数のＣＰＵを備えるコンピュータであって、前記コンピュータの起動時に、第１の前記ＣＰＵを活性化させるとともに、第２の前記ＣＰＵを非活性化させる起動処理部と、所定時間経過後に、前記第１のＣＰＵを非活性化させるとともに、前記第２のＣＰＵを活性化させる切り替え処理部と、を備えることとする。
【０００５】
本発明のコンピュータによれば、所定時間後にＣＰＵを切り替えて演算処理を行うことができるので、ＣＰＵを連続稼働することによる温度の上昇を抑制することができる。したがって、ＣＰＵの温度上昇に伴う性能の低下や誤作動などを防止し、効率的にＣＰＵを稼動させることができる。
【０００６】
また、本発明のうち請求項２に記載の発明は、請求項１に記載のコンピュータであって、前記第１及び第２のＣＰＵはそれぞれ第１及び第２のレジスタを備え、前記第２のＣＰＵを活性化させる際に、前記第１のレジスタに格納されているデータを前記第２のレジスタに転送するコンテキスト転送部を備えることとする。  
この場合、切り替え元のＣＰＵのレジスタから、切り替え先のＣＰＵのレジスタに内容を引き継ぐことができる。したがって、切り替え先のＣＰＵにおいて、切り替え元の演算処理を途中から引き継ぐことができる。
【０００７】
また、本発明のうち請求項３に記載の発明は、請求項２に記載のコンピュータであって、前記レジスタには、前記ＣＰＵに対して割り込みを行うデバイスを特定するデバイスＩＤを書き込むことにより前記ＣＰＵに割り込みを発生させる割り込みレジスタが含まれており、前記コンテキスト転送部は、前記切り替え処理部が前記第１のＣＰＵを非活性化させた後、前記第１のレジスタに含まれる前記割り込みレジスタ以外のレジスタに格納されているデータを前記第２のレジスタに転送し、前記切り替え処理部が前記第２のＣＰＵを活性化させた後に、前記第１のレジスタに含まれる前記割り込みレジスタに格納されているデータを、前記第２のレジスタに含まれる前記割り込みレジスタに転送することとする。  
この場合、第２のＣＰＵの活性化後に、第２のＣＰＵの割り込みレジスタに、第１のＣＰＵの割り込みレジスタの内容が転送される。したがって、第１のＣＰＵの非活性化後、第２のＣＰＵの活性化前に、デバイスから割り込み要求が発せられ、第１のＣＰＵの割り込みレジスタにデバイスＩＤが書き込まれたとしても、第２のＣＰＵの活性化後に第２のＣＰＵの割り込みレジスタにデバイスＩＤを転送することができるので、第２のＣＰＵにおいて割り込みを発生させることができる。これにより、ＣＰＵを切り替えても、適切に切り替え先のＣＰＵで割り込みを発生させることができる。
【０００８】
また、本発明のうち請求項４に記載の発明は、請求項１に記載のコンピュータであって、前記第１のＣＰＵの温度を取得する温度取得部を備え、前記切り替え処理部は、前記第１のＣＰＵの温度が所定の閾値以上になった場合にのみ、前記第１のＣＰＵを非活性化させることとする。  
この場合、第１のＣＰＵの温度が性能を低下する程に上昇していない場合には、ＣＰＵの切り替えを行わないようにして、ＣＰＵの切り替えにかかるオーバヘッドを抑えることができる。したがって、ＣＰＵをより効率的に動作させることができる。
【０００９】
また、本発明のうち請求項５に記載の発明は、請求項１に記載のコンピュータであって、前記第１及び第２のＣＰＵのそれぞれの温度を取得する温度取得部を備え、前記切り替え処理部は、前記第１のＣＰＵの温度が、前記第２のＣＰＵの温度よりも高い場合にのみ、前記第１のＣＰＵを非活性化させ、前記第２のＣＰＵを活性化させることとする。  
この場合、ＣＰＵの切り替えを行うことで、より高温なＣＰＵに切り替わることを防止することができる。
【００１０】
また、本発明のうち請求項６に記載の発明は、請求項１に記載のコンピュータであって、前記複数のＣＰＵのそれぞれの温度を取得する温度取得部を備え、前記切り替え処理部は、前記温度の最も高い前記ＣＰＵを非活性化させ、前記温度の最も低い前記ＣＰＵを活性化させることとする。  
この場合、最も温度の低いＣＰＵに演算処理を行わせることができる。
【００１１】
また、本発明のうち請求項７に記載の発明は、請求項１に記載のコンピュータであって、前記ＣＰＵの識別情報に対応付けて、前記ＣＰＵが所属するグループを記憶するグループ記憶部を備え、前記起動処理部は、複数の前記第２のＣＰＵを非活性化させ、前記切り替え処理部は、前記第２のＣＰＵのうち、前記第１のＣＰＵと同一の前記グループに所属するものを選択し、選択した前記第２のＣＰＵを活性化させることとする。  
例えば、異なるアーキテクチャのＣＰＵが混在している場合に、同一のアーキテクチャのＣＰＵ間でのみ切り替えを行うようにすることができる。これにより、ＣＰＵを切り替えた場合でも、演算処理を確実に引き継ぐことができる。
【００１２】
また、本発明のうち請求項８に記載の発明は、請求項１に記載のコンピュータであって、前記第１及び第２のＣＰＵは、１つのマルチコアＣＰＵに実装される第１及び第２のＣＰＵコアであることとする。  
この場合、集積度の高いマルチコアＣＰＵが局所的に高温になることを防ぎ、効率的にＣＰＵコアを稼働させることができる。
【００１３】
その他本願が開示する課題やその解決方法については、発明の実施形態の欄及び図面により明らかにされる。
【発明の効果】
【００１４】
本発明によれば、マルチプロセッサシステムを構成するＣＰＵの処理速度が低下しないようにすることができる。
【発明を実施するための最良の形態】
【００１５】
以下、本発明の一実施形態に係るコンピュータ１０について説明する。本実施形態のコンピュータ１０は、マルチプロセッサシステムを構成する２つのＣＰＵ１２０を備え、同時に１つのＣＰＵ１２０のみが活性化される。なお、ＣＰＵ１２０が活性化されている状態（以下、活性化状態ともいう。）とは、通電されて、命令信号に応じて演算処理を行うことができる状態をいう。一方、ＣＰＵ１２０が非活性化されている状態（以下、非活性化状態ともいう。）とは、ＣＰＵ１２０に通電はされているものの、命令信号が与えられても演算処理を行わない状態をいう。コンピュータ１０で動作するオペレーティングシステムは、活性化されているＣＰＵ１２０のみを認識することができる。ＣＰＵ１２０は、例えば、イネーブル（ｅｎａｂｌｅ）信号を与えることにより活性化させ、ディセーブル（ｄｉｓａｂｌｅ）信号を与えることにより非活性化させることができる。なお、本実施形態では、ＣＰＵ１２０は起動時には非活性化状態であり、イネーブル信号が与えられることにより活性化されるものとする。
【００１６】
＝＝コンピュータ１０の構成＝＝
本実施形態に係るコンピュータ１０の構成例を図１に示す。同図に示すように、本実施形態のコンピュータ１０は、ＣＰＵ管理機構１００、ＣＰＵ１２０ａ、ＣＰＵ１２０ｂ、主記憶１４０、及びデバイス１５０を備えており、これらは互いにバス１６０を介して接続されている。なお、ＣＰＵ１２０ａ、ＣＰＵ１２０ｂ、主記憶１４０、デバイス１５０、及びバス１６０はそれぞれ、一般的なマルチプロセッサ構成のコンピュータに用いられるものである。
【００１７】
デバイス１５０は、コンピュータ１０とユーザとのインタフェースとなる装置である。デバイス１５０は、例えば、キーボードやマウスなどの入力装置である。デバイス１５０は、例えば、キーボードからデータが入力されたときなどには、ＣＰＵ１２０に対して割り込みを発生させる。デバイス１５０は、イベントＩＤレジスタ１５１及び割り込み先レジスタ１５２を備えている。
【００１８】
イベントＩＤレジスタ１５１には、デバイス１５０を識別する情報（以下、デバイスＩＤという。）が格納される。デバイスＩＤは、ＣＰＵ１２０に対して割り込みを行う際に、ＣＰＵ１２０に対して割り込みの発生元となる装置を通知するために用いられる。
【００１９】
割り込み先レジスタ１５２には、デバイス１５０がＣＰＵ１２０に対して割り込みを行うための割り込み要求の宛先となるアドレス（以下、割り込みアドレスという。）が格納される。デバイス１５０が割り込み先レジスタ１５２に格納されているアドレスを宛先とした割り込み要求をバス１６０に送出することで、ＣＰＵ１２０に対する割り込みが行われる。なお、本実施形態において、ＣＰＵ１２０に対する割り込みは、ＰＣＩバスのＭＳＩ（Message Signaled Interrupt）として知られる方式により行われるものとする。
【００２０】
なお、イベントＩＤレジスタ１５１及び割り込み先レジスタ１５２は共に、例えば、コンピュータ１０で動作するオペレーティングシステムがデバイス１５０を認識した時点において、オペレーティングシステムによって設定される。イベントＩＤレジスタ１５１及び割り込み先レジスタ１５２の設定方法については、ＭＳＩに規定されている。
【００２１】
ＣＰＵ１２０は、演算処理を行うプロセッサであり、主記憶１４０に記憶されるプログラムを実行することにより各種の情報処理を行う。ＣＰＵ１２０は、ＴＬＢ（Translation Look-aside Buffer）１２１、キャッシュ１２２、レジスタ１２３、温度センサ１２８を備えている。
【００２２】
ＴＬＢ１２１は、仮想記憶のアドレス空間におけるアドレス（仮想アドレス）と、主記憶１４０の物理アドレスとを対応付ける情報を記憶する。ＣＰＵ１２０は、ＴＬＢ１２１を参照して、仮想アドレスを物理アドレスに変換し、変換した物理アドレスに基づいて主記憶１４０にアクセスすることができる。
【００２３】
キャッシュ１２２は、ＣＰＵ１２０が主記憶１４０から読み出したデータを一時的に記憶しておき、次に同じデータにアクセスする場合にはキャッシュ１２２から読み出すことで、データの読み出しを高速に行うための記憶装置である。
【００２４】
レジスタ１２３は、各種の情報を記憶する高速な記憶装置である。レジスタ１２３には、特権レジスタ１２４、割り込みレジスタ１２５、プログラムカウンタ１２６、及びＧＰＲ（General Purpose Register）１２７が含まれる。
【００２５】
ＧＰＲ１２７は、汎用的なレジスタであり、ＣＰＵ１２０の演算処理中に一時的にデータを記憶するためのものである。
【００２６】
プログラムカウンタ１２６は、ＣＰＵ１２０が実行中の命令が記憶されている記憶領域のアドレスを格納するレジスタである。特権レジスタ１２４は、特定の命令操作のために用途が限定されるレジスタである。特権レジスタ１２４には、割り込みレジスタ１２５が含まれている。
【００２７】
割り込みレジスタ１２５には、割り込みレジスタ１２５自身の物理アドレスである割り込みアドレスと、デバイス１５０からの割り込み要求に関する情報（本実施形態ではデバイスＩＤであるものとする。）とが格納される。割り込みアドレスは、後述するＣＰＵ管理機構１００によって割り当てられる。本実施形態では、割り込みレジスタ１２５の上位ビット（本発明のアドレスレジスタに該当する。）に割り込みアドレスが格納され、下位ビット（本発明のデバイスレジスタに該当する。）にはデバイスＩＤが格納されるものとする。デバイス１５０から割り込み要求がバス１６０に送出され、割り込み要求の宛先となるアドレスと、割り込みレジスタ１２５の上位ビットに設定されているアドレスとが一致すると、割り込み要求の送信元のデバイスＩＤが割り込みレジスタ１２５の下位ビットに書き込まれ、割り込みレジスタ１２５への書き込みに応じてＣＰＵ１２０に割り込みが発生する。なお、割り込みレジスタ１２５の下位ビットの各ビットを、コンピュータ１０に接続されるデバイス１５０のそれぞれに対応付けて、複数のデバイス１５０からの割り込み要求を受け付けるようにすることもできる。この場合、割り込み要求の送信元のデバイス１５０に対応するビットをオンにするようにする。
【００２８】
温度センサ１２８は、ＣＰＵ１２０の温度を取得するためのセンサである。温度センサ１２８は、例えば、ＩＰＭＩ（Intelligent Platform Management Interface）の規格に従って、ＣＰＵ１２０の温度を出力する。なお、温度センサ１２８は、ＣＰＵ１２０に内蔵されるようにしてもよいし、ＣＰＵ１２０の表面に配置してパッケージの表面温度を測定するようにしてもよい。
【００２９】
主記憶１４０は、プログラムやデータを記憶する記憶装置である。主記憶１４０には、ファームウェアプログラム１４１、オペレーティングシステムプログラム１４２、及びＣＰＵ構成情報テーブル１４３が記憶されている。ＣＰＵ１２０が主記憶１４０に記憶されているプログラムを実行することにより、オペレーティングシステムやファームウェアその他の各種の機能が実現される。ファームウェアは、コンピュータ１０の初期化やコンピュータ１０が備える各種のハードウェアの基本的な制御を行い、オペレーティングシステムは、コンピュータ１０で実行される各種のアプリケーションプログラムが利用するＣＰＵ１２０や主記憶１４０、デバイス１５０などのリソースを管理する。
【００３０】
ＣＰＵ構成情報テーブル１４３は、コンピュータ１０で動作するオペレーティングシステムが認識可能なＣＰＵ１２０に関する情報（以下、ＣＰＵ構成情報という。）を記憶する。ＣＰＵ構成情報テーブル１４３は、例えば、ＡＣＰＩ（Advanced Configuration and Power Interface）の仕様により規定されるものである。図２にＣＰＵ構成情報テーブル１４３に記憶されるＣＰＵ構成情報の構成例を示す。同図に示すように、ＣＰＵ構成情報は、ＣＰＵＩＤ欄４０１及び割り込みアドレス欄４０２を備えている。ＣＰＵＩＤ欄４０１には、ＣＰＵ１２０の識別情報（以下、ＣＰＵＩＤという。）が設定される。本実施形態では、「ＣＰＵ１」はＣＰＵ１２０ａを示し、「ＣＰＵ２」はＣＰＵ１２０ｂを示すものとする。割り込みアドレス欄４０２には、上記識別情報が示すＣＰＵ１２０に対応する割り込みアドレスが設定される。割り込みアドレス欄４０２に設定されている割り込みアドレスに対して書き込みを行うことで、ＣＰＵＩＤ欄４０１に設定されている識別情報が示すＣＰＵ１２０に割り込みを発生させることができる。
【００３１】
ＣＰＵ管理機構１００は、ＣＰＵ１２０の管理を行う。ＣＰＵ管理機構１００は、例えば、回路として実現するようにしてもよいし、サービスプロセッサ（ＳＶＰ）がマイクロプログラムを実行することにより実現するようにしてもよい。ＣＰＵ管理機構１００は、ＣＰＵ情報初期化部１０１、ＣＰＵ監視部１０２、ＣＰＵ制御部１０３、及びＣＰＵ状態管理テーブル１０４を備えている。
【００３２】
ＣＰＵ状態管理テーブル１０４は、コンピュータ１０が備えるＣＰＵ１２０のそれぞれの状態に関する情報（以下、ＣＰＵ状態情報という。）を記憶する。図３は、ＣＰＵ状態管理テーブル１０４に記憶されるＣＰＵ状態情報の構成例を示す図である。同図に示すように、ＣＰＵ状態情報は、ＣＰＵＩＤ欄５０１、ＣＰＵ状態欄５０２、及び割り込みアドレス欄５０３を備えている。ＣＰＵＩＤ欄５０１には、ＣＰＵ１２０の識別情報が設定される。ＣＰＵ状態欄５０２には、ＣＰＵ１２０が活性化されているかどうかを示す情報が設定される。ＣＰＵ１２０が活性化状態であれば、ＣＰＵ状態欄５０２には「Ａｃｔｉｖｅ」が設定され、ＣＰＵ１２０が非活性化状態であれば、ＣＰＵ状態欄５０２には「Ｉｎａｃｔｉｖｅ」が設定される。割り込みアドレス欄５０３には、ＣＰＵ１２０に割り当てられた割り込みアドレスが設定される。
【００３３】
ＣＰＵ情報初期化部１０１は、コンピュータ１０の起動時に、ＣＰＵ１２０に関する初期化処理を行う。なお、ＣＰＵ情報初期化部１０１によるコンピュータ１０の初期化処理の詳細については後述する。
【００３４】
ＣＰＵ制御部１０３は、活性化状態のＣＰＵ１２０と、非活性化状態のＣＰＵ１２０とを切り替える切り替え処理を行う。切り替え処理の対象となるＣＰＵ１２０は、後述するＣＰＵ監視部１０２により決定される。なお、ＣＰＵ制御部１０３によるＣＰＵ１２０の切り替え処理の詳細については後述する。
【００３５】
ＣＰＵ監視部１０２は、ＣＰＵの稼動時間などを監視し、所定の時間が経過すると、ＣＰＵ１２０の切り替え処理に係る切り替え元となるＣＰＵ１２０（以下、切り替え元ＣＰＵという。）と、切り替え先となるＣＰＵ１２０（以下、切り替え先ＣＰＵという。）とを決定し、決定した切り替え元ＣＰＵ及び切り替え先ＣＰＵをＣＰＵ制御部１０３に通知する。
【００３６】
以下、本実施形態のコンピュータ１０の処理について説明する。
【００３７】
＝＝初期化処理＝＝
まず、コンピュータ１０の起動時には、ＣＰＵ情報初期化部１０１により初期化処理が行われる。ＣＰＵ情報初期化部１０１による初期化処理の流れを図４に示す。
【００３８】
ＣＰＵ情報初期化部１０１は、バス１６０に接続されている全てのＣＰＵ１２０を検出し（Ｓ３０１）、検出したＣＰＵ１２０のそれぞれに割り込みアドレスを割り当てる（Ｓ３０２）。ＣＰＵ情報初期化部１０１は、検出したＣＰＵ１２０のそれぞれについて、ＣＰＵＩＤと、割り当てた割り込みアドレスとを含むＣＰＵ構成情報を生成し、生成したＣＰＵ構成情報をＣＰＵ構成情報テーブル１４３に登録する（Ｓ３０３）。なお、以上の（Ｓ３０１）〜（Ｓ３０３）の処理は、一般的なコンピュータの起動処理と同様の処理である。
【００３９】
また、ＣＰＵ情報初期化部１０１は、検出したＣＰＵ１２０のそれぞれについて、ＣＰＵ１２０を示すＣＰＵＩＤ、「Ｉｎａｃｔｉｖｅ」と、割り当てた割り込みアドレスとを含むＣＰＵ状態情報をＣＰＵ状態管理テーブル１０４に登録する（Ｓ３０４）。この時点でのＣＰＵ構成情報テーブル１４３及びＣＰＵ状態管理テーブル１０４の状態例を図５に示す。図５の例では、ＣＰＵ１２０ａ（ＣＰＵ１）に「０ｘ１０００」番地が割り込みアドレスとして割り当てられ、ＣＰＵ１２０ｂ（ＣＰＵ２）には「０ｘ２０００」番地が割り込みアドレスとして割り当てられている。
【００４０】
次に、ＣＰＵ情報初期化部１０１は、所定のＣＰＵ１２０（ここでは、ＣＰＵ１２０ａとする。）に対して、イネーブル信号を送信し、ＣＰＵ１２０ａを活性化させる（Ｓ３０５）。ＣＰＵ情報初期化部１０１は、活性化させたＣＰＵ１２０ａを示す「ＣＰＵ１」に対応する、ＣＰＵ状態管理テーブル１０４のＣＰＵ状態欄５０２に「Ａｃｔｉｖｅ」を設定する（Ｓ３０６）。また、ＣＰＵ情報初期化部１０１は、ＣＰＵ構成情報テーブル１４３から、非活性化状態であるＣＰＵ１２０ｂを示す「ＣＰＵ２」に対応するＣＰＵ構成情報を削除する（Ｓ３０７）。
【００４１】
この時点でのＣＰＵ構成情報テーブル１４３及びＣＰＵ状態管理テーブル１０４の状態例を図６に示す。図６の例では、図５の例に比べて、非活性化状態であるＣＰＵ１２０ｂを示す「ＣＰＵ２」に対応するＣＰＵ構成情報がＣＰＵ構成情報テーブル１４３から削除され、活性化状態であるＣＰＵ１２０ａを示す「ＣＰＵ１」についてのＣＰＵ構成情報のみが登録されている。これにより、コンピュータ１０で動作するオペレーティングシステムは、活性化状態であるＣＰＵ１２０ａのみを認識するようになる。一方、ＣＰＵ状態管理テーブル１０４では、活性化されたＣＰＵ１２０ａを示す「ＣＰＵ１」に対応するＣＰＵ状態欄５０２が「Ａｃｔｉｖｅ」に更新されている。
【００４２】
以上のようにして、コンピュータ１０の起動時には、ＣＰＵ１２０ａのみが活性化され、活性化されたＣＰＵ１２０ａについてのＣＰＵ構成情報のみがＣＰＵ構成情報テーブル１４３に登録される。
【００４３】
＝＝切り替え処理＝＝
コンピュータ１０が起動してから所定の時間が経過すると、ＣＰＵ１２０の切り替え処理が行われる。図７及び図８はＣＰＵ１２０の切り替え処理に係る処理の流れを示す図である。
【００４４】
まず、ＣＰＵ監視部１０２は、ＣＰＵ１２０の稼動時間を測定し、ＣＰＵ１２０の稼動時間が所定時間以上になった場合、切り替え処理の対象となるＣＰＵ１２０の決定処理を行う。図７に切り替え処理の対象となるＣＰＵ１２０の決定処理の流れを示す。
【００４５】
ＣＰＵ監視部１０２は、ＣＰＵ状態管理テーブル１０４からＣＰＵ状態欄５０２に「Ａｃｔｉｖｅ」が設定されているＣＰＵ状態情報を読み出し（Ｓ４０１）、読みだしたＣＰＵ状態情報のＣＰＵＩＤ欄５０１に設定されているＣＰＵＩＤを切り替え元ＣＰＵとする（Ｓ４０２）。ＣＰＵ監視部１０２は、ＣＰＵ状態管理テーブル１０４からＣＰＵ状態欄５０２に「Ｉｎａｃｔｉｖｅ」が設定されているＣＰＵ状態情報を読み出し（Ｓ４０３）、読み出したＣＰＵ状態情報のＣＰＵＩＤ欄５０１に設定されているＣＰＵＩＤを切り替え先ＣＰＵとする（Ｓ４０４）。例えば、ＣＰＵ状態管理テーブル１０４が図６に示す状態であった場合には、「ＣＰＵ１」が切り替え元ＣＰＵとして決定され、「ＣＰＵ２」が切り替え先ＣＰＵとして決定される。ＣＰＵ監視部１０２は、上記のようにして決定した切り替え元ＣＰＵ及び切り替え先ＣＰＵをＣＰＵ制御部１０３に通知する（Ｓ４０５）。
【００４６】
ＣＰＵ制御部１０３は、ＣＰＵ監視部１０２から切り替え元ＣＰＵ及び切り替え先ＣＰＵの通知を受けると、図８に示すＣＰＵ１２０の切り替え処理を行う。なお、以下の説明において、切り替え元ＣＰＵ及び切り替え先ＣＰＵとは、上記ＣＰＵ監視部１０２から通知されたＣＰＵＩＤにより示されるＣＰＵ１２０のことを示す。
【００４７】
ＣＰＵ制御部１０３は、切り替え元ＣＰＵに対してディセーブル信号を与えて非活性化させる（Ｓ４２１）。これにより、切り替え元ＣＰＵが備えるプログラムカウンタ１２６、ＧＰＲ１２７、及び割り込みレジスタ１２５以外の特権レジスタ１２４の内容（以下、コンテキストという。）の変更が行われなくなる。なお、切り替え元ＣＰＵが非活性化状態であっても、切り替え元ＣＰＵに対するデバイス１５０からの割り込み要求が発せられた場合には、割り込みレジスタ１２５にはデバイスＩＤが書き込まれるが、切り替え元ＣＰＵには割り込みが発生しないことになる。
【００４８】
次に、ＣＰＵ制御部１０３は、切り替え元ＣＰＵのコンテキストを、バス１６０を介して切り替え先ＣＰＵの各レジスタ１２３に転送する（Ｓ４２２）。なお、ＣＰＵ間を直接結ぶ伝送路であるクロスバーが設けられている場合には、ＣＰＵ制御部１０３は、クロスバーを介してコンテキストを転送するようにしてもよい。
【００４９】
ＣＰＵ制御部１０３は、ＣＰＵ状態管理テーブル１０４から、切り替え元ＣＰＵに対応する割り込みアドレス（以下、切り替え元アドレスという。）と、切り替え先ＣＰＵに対応する割り込みアドレス（以下、切り替え先アドレスという。）とを取得し（Ｓ４２３、Ｓ４２４）、切り替え元ＣＰＵの割り込みレジスタ１２５の上位ビットに切り替え先アドレスを設定し（Ｓ４２５）、切り替え先ＣＰＵの割り込みレジスタ１２５の上位ビットに切り替え元アドレスを設定する（Ｓ４２６）。
【００５０】
ＣＰＵ制御部１０３は、ＣＰＵ状態管理テーブル１０４の切り替え元ＣＰＵに対応する割り込みアドレス欄５０３に切り替え先アドレスを書き込み（Ｓ４２７）、切り替え先ＣＰＵに対応する割り込みアドレス欄５０３に切り替え元アドレスを書き込む（Ｓ４２８）。また、ＣＰＵ制御部１０３は、ＣＰＵ状態管理テーブル１０４の切り替え元ＣＰＵに対応するＣＰＵ状態欄５０２に「Ｉｎａｃｔｉｖｅ」を設定する（Ｓ４２９）。ＣＰＵ制御部１０３は、切り替え元ＣＰＵが備える割り込みレジスタ１２５の下位ビットを、切り替え先ＣＰＵが備える割り込みレジスタ１２５の下位ビットに転送する（Ｓ４３０）。ＣＰＵ制御部１０３は、切り替え先ＣＰＵに対応するＣＰＵ状態欄５０２に「Ａｃｔｉｖｅ」を設定し（Ｓ４３１）、切り替え先ＣＰＵにイネーブル信号を与えて活性化させる（Ｓ４３２）。
【００５１】
以上の処理が所定時間毎に行われることにより、コンピュータ１０において活性化状態となるＣＰＵ１２０が定期的に切り替わることになる。
【００５２】
図９は、ＣＰＵ１２０の活性化状態が変化する様子を説明する図である。同図に示すように、ｔ０時点からｔ１時点までの期間では、ＣＰＵ１２０ａ（ＣＰＵ１）が活性化状態（２０１）であり、ＣＰＵ１２０ｂ（ＣＰＵ２）が非活性化状態（２０２）である。一方、時点ｔ１から時点ｔ２までの期間では、ＣＰＵ１２０ａ（ＣＰＵ１）が非活性化状態（２０３）であり、ＣＰＵ１２０ｂ（ＣＰＵ２）が活性化状態（２０４）である。このように、本実施形態のコンピュータ１０では、同時に一つのＣＰＵ１２０のみが活性化状態となる。
【００５３】
以上のように、本実施形態のコンピュータ１０によれば、定期的に活性化状態となるＣＰＵ１２０を切り替えることができる。一般に、ＣＰＵ１２０において演算処理が継続して行われるとＣＰＵ１２０の温度が上昇し、ＣＰＵ１２０の温度が上昇すると演算性能が低下し、ときには誤動作を行うことが知られている。しかしながら、本実施形態のコンピュータ１０によれば、定期的にＣＰＵ１２０を非活性化させて演算処理を行わないようにすることにより、ＣＰＵ１２０を冷却することが可能となる。したがって、ＣＰＵ１２０の温度上昇を防ぎ、演算性能の低下や誤動作を防止することができる。
【００５４】
また、本実施形態のコンピュータ１０によれば、ＣＰＵ１２０の切り替え処理において、切り替え元ＣＰＵのコンテキストが切り替え先ＣＰＵのレジスタ１２３に転送される。したがって、切り替え元ＣＰＵで行われていた演算処理を、切り替え先ＣＰＵにおいて引き継ぐことが可能となる。したがって、コンピュータ１０で動作するオペレーティングシステムの処理状態に依存することなく、ＣＰＵ１２０を切り替えることができる。
【００５５】
図１０は、上述したＣＰＵ１２０の切り替え処理が行われた後のＣＰＵ構成情報テーブル１４３及びＣＰＵ状態管理テーブル１０４の状態例を示す図である。同図に示すように、ＣＰＵ状態管理テーブル１０４では、ＣＰＵ１２０ａ（ＣＰＵ１）に対応するＣＰＵ状態欄５０２が「Ｉｎａｃｔｉｖｅ」に変更され、ＣＰＵ１２０ｂ（ＣＰＵ２）に対応するＣＰＵ状態欄５０２が「Ａｃｔｉｖｅ」に変更されている。また、ＣＰＵ１２０ａの割り込みアドレスとＣＰＵ１２０ｂの割り込みアドレスとがスワップされている。これに対し、ＣＰＵ構成情報テーブル１４３は、切り替え処理が開始される前の図６と同じ状態である。その一方で、切り替え処理により活性化状態のＣＰＵ１２０は変更になり、割り込みアドレスも引き継がれるので、実際に割り込みが発生するＣＰＵ１２０は変更される。
【００５６】
このように、本実施形態のコンピュータ１０では、ＣＰＵ１２０の切り替え処理が行われても、ＣＰＵ構成情報テーブル１４３に記憶されている割り込みアドレスも、デバイス１５０の割り込み先レジスタ１５２に記憶されている割り込みアドレスも変更されない。したがって、コンピュータ１０で動作するオペレーティングシステムやデバイス１５０は、ＣＰＵ１２０の切り替え処理が行われる前と同じ割り込みアドレスに対して割り込み要求を送り続けることになる。
【００５７】
しかし、本実施形態のコンピュータ１０によれば、デバイス１５０からは同一の割り込みアドレスに対して割り込み要求を送り続けたとしても、切り替え先ＣＰＵが活性化された後に割り込みレジスタ１２５の値が転送されるので、切り替え先ＣＰＵにおいて割り込みを発生させることができる。この場合の切り替え処理の具体例について説明する。ＣＰＵ構成情報テーブル１４３及びＣＰＵ状態管理テーブル１０４は、図６の状態である場合に、図８に示す切り替え処理が実行されて、（Ｓ４２１）においてＣＰＵ１２０ａ（ＣＰＵ１）が非活性化された後に、「０ｘ１０００」番地を宛先とする割り込み要求がデバイス１５０から発せられると、ＣＰＵ１２０ａの割り込みレジスタ１２５ａの上位ビットにはまだ「０ｘ１０００」が設定されているので、デバイスＩＤは割り込みレジスタ１２５ａの下位ビットに書き込まれる。しかしながら、ＣＰＵ１２０ａは非活性化状態であるので、ＣＰＵ１２０ａに割り込みは発生しない。ＣＰＵ制御部１０３により図８の（Ｓ４２２）〜（Ｓ４３２）が実行されると、ＣＰＵ構成情報テーブル１４３及びＣＰＵ状態管理テーブル１０４は図１０に示す状態となり、ＣＰＵ１２０ａの割り込みレジスタ１２５ａの下位ビットがＣＰＵ１２０ｂの割り込みレジスタ１２５ｂに転送されることにより、上記の割り込み要求により割り込みレジスタ１２５ａに書き込まれたデバイスＩＤが、割り込みレジスタ１２５ｂに書き込まれ、ＣＰＵ１２０ｂが活性化状態になる。これにより、ＣＰＵ１２０ｂにおいて割り込みが発生する。
【００５８】
このように、本実施形態のコンピュータ１０によれば、オペレーティングシステムやデバイス１５０が割り込み要求の送信先を変更することなく、また、送信済みの割り込み要求を再送することなく、割り込みが発生するＣＰＵ１２０を切り替えることができる。
【００５９】
＝＝温度を考慮した切り替え処理＝＝
なお、本実施形態では、所定時間を経過する度に、無条件でＣＰＵ１２０を切り替えるものとしたが、ＣＰＵ１２０の温度に応じて切り替え処理を行うかどうかを決定するようにしてもよい。この場合、各ＣＰＵ１２０についての温度をＣＰＵ状態管理テーブル１０４に管理するようにすることもできる。ＣＰＵ１２０の温度を管理する場合のＣＰＵ状態管理テーブル１０４の構成例を図１１に示す。同図に示すように、ＣＰＵ状態管理テーブル１０４に、ＣＰＵ温度欄５０４を追加するようにする。また、ＣＰＵ監視部１０２は、定期的に、ＣＰＵ１２０が備える温度センサ１２８からＣＰＵの温度を取得し、取得した温度をＣＰＵ温度欄５０４に設定するようにする。
【００６０】
ＣＰＵ１２０の温度を考慮して切り替え処理を行うかどうかを決定する場合の、切り替え処理の対象となるＣＰＵ１２０の決定処理の流れを図１２に示す。同図に示す処理では、ＣＰＵ監視部１０２は、上述した図７に示す処理の（Ｓ４０４）の後に、切り替え元ＣＰＵの温度と、切り替え先ＣＰＵの温度とをＣＰＵ状態管理テーブル１０４から読み出し（Ｓ６０１）、読み出した切り替え元ＣＰＵの温度が切り替え先ＣＰＵの温度よりも高い場合にのみ（Ｓ６０２：ＹＥＳ）、（Ｓ４０５）に進み、切り替え元ＣＰＵと切り替え先ＣＰＵとをＣＰＵ制御部１０３に通知するようにする。これにより、温度の高いＣＰＵ１２０に切り替えてしまうことにより演算効率が低下することを防止することができる。
【００６１】
図１３は、図１２の処理により、図１１のＣＰＵ状態管理テーブル１０４が更新された様子を示す図である。同図の例では、ＣＰＵ温度欄５０４に設定されている温度が低い方のＣＰＵ１２０が活性化された様子が示されている。これにより、より低温のＣＰＵ１２０を活性化させることで、コンピュータ１０におけるＣＰＵ１２０の演算性能の低下を防止することができる。
【００６２】
また、切り替え処理を行うかどうかの判断は、切り替え元ＣＰＵと切り替え先ＣＰＵとの温度を比較するのみでなく、切り替え元ＣＰＵの温度が所定の温度を超えたかどうかを考慮するようにしてもよい。この場合の、ＣＰＵ監視部１０２による切り替え処理の対象となるＣＰＵ１２０の決定処理の流れを図１４に示す。同図に示す処理では、上述した図１２の処理に加えて、（Ｓ６０２）の後に、ＣＰＵ監視部１０２は、切り替え元ＣＰＵの温度が所定の閾値を超えているかどうかを判断する（Ｓ６０３）。ここで切り替え元ＣＰＵの温度が閾値を超えていない場合には（Ｓ６０３：ＮＯ）、切り替え元ＣＰＵと切り替え先ＣＰＵとをＣＰＵ制御部１０３に通知しないようにする。なお、（Ｓ６０２）の処理を省略し、切り替え元ＣＰＵの温度が閾値を超えたかどうかによって、切り替え処理を行うかどうかを決定するようにしてもよい。
【００６３】
一般に、ＣＰＵ１２０の温度が所定の温度以下になった場合、それ以上どれだけ温度が下がっても、ＣＰＵ１２０の演算効率は向上しない。これに対し、ＣＰＵ１２０の切り替え処理には、切り替え元ＣＰＵの非活性化、コンテキストの転送、切り替え先ＣＰＵの活性化、割り込みレジスタ１２５の転送などのオーバヘッドが伴う。したがって、所定の閾値よりも温度が高くなったときだけ切り替え処理を行うようにすることで、切り替え処理のオーバヘッドに伴う演算効率の低下を防止することができる。
【００６４】
＝＝複数のＣＰＵ１２０を備える場合＝＝
以上の説明では、コンピュータ１０が２つのＣＰＵ１２０を備える場合を想定していたが、もちろん３つ以上のＣＰＵ１２０を備えるようにしてもよい。図１５は、ＣＰＵ１２０を４つ備えるコンピュータ１０の構成例を示す図である。この場合、同時に活性化されるＣＰＵ１２０は２つとして、活性化状態のＣＰＵ１２０のそれぞれについて、上述したＣＰＵ１２０の切り替え処理を行う。
【００６５】
また、コンピュータ１０が４つ以上のＣＰＵ１２０を備える場合に、切り替え処理の対象となるＣＰＵ１２０のペアをＣＰＵ状態管理テーブル１０４に管理するようにしてもよい。この場合のＣＰＵ状態管理テーブル１０４に記憶されるＣＰＵ状態情報の構成例を図１６に示す。同図に示すように、この場合のＣＰＵ状態情報は、上述した図３に示すＣＰＵ状態管理テーブル１０４に加えて、切り替え先欄５０５を備えている。切り替え先欄５０５には、ＣＰＵＩＤ欄５０１のＣＰＵＩＤにより示されるＣＰＵ１２０を切り替え元ＣＰＵとする場合に、切り替え先ＣＰＵとなるＣＰＵ１２０を示すＣＰＵＩＤが設定される。
【００６６】
図１７に示すＣＰＵ状態管理テーブル１０４を用いて切り替え処理の対象となるＣＰＵ１２０を決定する処理の流れを図１７に示す。ＣＰＵ監視部１０２は、ＣＰＵ状態管理テーブル１０４から、ＣＰＵ状態欄５０２に「Ａｃｔｉｖｅ」が設定されているＣＰＵ状態情報を読み出し（Ｓ４０１）、読み出したＣＰＵ状態情報のそれぞれについて以下の処理を行う。ＣＰＵ監視部１０２は、ＣＰＵ状態情報のＣＰＵＩＤ欄５０１に設定されているＣＰＵＩＤを切り替え元ＣＰＵとし（Ｓ４０２）、切り替え先欄５０５に設定されているＣＰＵＩＤを切り替え先ＣＰＵとして（Ｓ６２１）、切り替え元ＣＰＵ及び切り替え先ＣＰＵをＣＰＵ制御部１０３に通知する（Ｓ４０５）。ＣＰＵ制御部１０３は、この通知に応じて、上述したＣＰＵ１２０の切り替え処理を行う。このようにしてＣＰＵ１２０の切り替え処理が行われた場合の、ＣＰＵ状態管理テーブル１０４の状態を図１８に示す。同図に示すように、「ＣＰＵ１」及び「ＣＰＵ３」が非活性化され、「ＣＰＵ２」及び「ＣＰＵ４」が活性化されている。また、「ＣＰＵ１」と「ＣＰＵ２」との間で割り込みアドレスがスワップされ、「ＣＰＵ３」と「ＣＰＵ４」との間で割り込みアドレスがスワップされている。
【００６７】
なお、上記のＣＰＵ１２０の切り替え処理においても、上述した図１２の処理と同様に、切り替え元ＣＰＵと切り替え先ＣＰＵとの温度を比較して、切り替え先ＣＰＵの温度の方が低い場合にのみ、ＣＰＵ１２０の切り替え処理を行うようにすることができる。さらに、上述した図１３の処理と同様に、切り替え元ＣＰＵの温度が所定の閾値より高い場合にのみ、ＣＰＵ１２０の切り替え処理を行うようにすることもできる。
【００６８】
また、複数のＣＰＵ１２０の中で最も温度の低いものから所定数を活性化状態として、それ以外を非活性化状態としてもよい。この場合に用いられるＣＰＵ状態管理テーブル１０４に記憶されるＣＰＵ状態情報の構成例を図１９に示す。同図に示すように、ＣＰＵ状態情報には、ＣＰＵ温度欄５０４及び切り替え先欄５０５が含まれている。ＣＰＵ温度欄５０４には、ＣＰＵ監視部１０２が定期的に各ＣＰＵ１２０の温度センサ１２８から取得した温度が設定される。切り替え先欄５０５には、切り替え先となるＣＰＵ１２０のＣＰＵＩＤが設定される。
【００６９】
温度が低い順にＣＰＵ１２０を活性化させる切り替え処理を行う場合の、ＣＰＵ１２０の選択処理の流れを図２０に示す。なお、図２０の処理は、上述した図１７の処理に、（Ｓ７０１）〜（Ｓ７０７）のステップを加えたものである。
【００７０】
この場合、ＣＰＵ監視部１０２は、まずＣＰＵ状態管理テーブル１０４に登録されている各ＣＰＵ状態情報の切り替え先欄５０５をクリアし（Ｓ７０１）、ＣＰＵ状態欄５０２に「Ａｃｔｉｖｅ」が設定されているＣＰＵ状態情報の数をＮとする（Ｓ７０２）。ＣＰＵ監視部１０２は、ＣＰＵ状態管理テーブル１０４から、温度の低い順にＮ個のＣＰＵＩＤのリストを取得する（Ｓ７０３）。ＣＰＵ監視部１０２は、変数ｉに１を設定して（Ｓ７０４）、ＣＰＵ状態欄５０２に「Ａｃｔｉｖｅ」が設定されているＣＰＵ状態情報をＣＰＵ状態管理テーブル１０４から取得し（Ｓ４０１）、取得したＣＰＵ状態情報のそれぞれについて以下の処理を行う。
【００７１】
ＣＰＵ監視部１０２は、上記のリストに含まれているｉ番目のＣＰＵＩＤを、ＣＰＵ状態情報の切り替え先に設定し（Ｓ７０５）、ｉをインクリメントする（Ｓ７０６）。ＣＰＵ監視部１０２は、ＣＰＵ状態情報のＣＰＵＩＤ欄５０１に設定されているＣＰＵＩＤを切り替え元ＣＰＵとし（Ｓ４０２）、切り替え先欄５０５に設定されているＣＰＵＩＤを切り替え先ＣＰＵとする（Ｓ６２１）。ここで、ＣＰＵ監視部１０２は、切り替え元ＣＰＵと切り替え先ＣＰＵとが一致していない場合（Ｓ７０７：ＮＯ）にのみ、切り替え元ＣＰＵと切り替え先ＣＰＵとをＣＰＵ制御部１０３に通知する（Ｓ４０５）。
【００７２】
上記のようにして、活性化状態のＣＰＵ１２０を、複数のＣＰＵ１２０の中で最も温度の低いものになるように保つことができる。
【００７３】
なお、上記図２０の処理においても、切り替え元ＣＰＵと切り替え先ＣＰＵの温度を比較して、切り替え先ＣＰＵの温度の方が低い場合にのみ切り替え処理を行うようにすることができる。また、切り替え元ＣＰＵの温度が所定の閾値よりも高い場合にのみ切り替え処理を行うようにすることもできる。
【００７４】
また、コンピュータ１０におけるＣＰＵ１２０の配置位置に応じて、切り替え先欄５０５を設定し、隣り合うＣＰＵ１２０が同時に活性化状態とならないようにすることもできる。この場合、コンピュータ１０の内部において発熱部位を分散配置することができるので、局所的に高温になることを防ぐことができる。
【００７５】
＝＝グループ化＝＝
次に、ＣＰＵ１２０の切り替え処理の対象をグループ化する場合について説明する。  
図２１は、切り替え処理の対象をグループ化する場合のＣＰＵ状態情報の構成例を示す図である。同図に示すように、この場合のＣＰＵ状態情報は、上述の図１９に示すＣＰＵ状態情報に加えて、グループ欄５０６を備えている。グループ欄５０６には、ＣＰＵ１２０が所属するグループを示すグループＩＤが設定される。
【００７６】
切り替え処理の対象をグループ化する場合の、ＣＰＵ１２０の選択処理の流れを図２２に示す。なお、図２２の処理は、上述した図２０の処理に（Ｓ７２１）の処理を加え、（Ｓ７０２）（Ｓ７０３）及び（Ｓ４０１）の処理を（Ｓ７２２）〜（Ｓ７２４）に置き換えたものである。
【００７７】
ＣＰＵ監視部１０２は、図２１に示すＣＰＵ状態管理テーブル１０４に登録されているＣＰＵ状態情報の切り替え先欄５０５をクリアし（Ｓ７０１）、ＣＰＵ状態情報のグループＩＤ欄５０６に設定されている重複のないグループＩＤをＣＰＵ状態管理テーブル１０４から読み出す（Ｓ７２１）。ＣＰＵ監視部１０２は、読み出したグループＩＤのそれぞれについて以下の処理を行う。
【００７８】
ＣＰＵ監視部１０２は、ＣＰＵ状態管理テーブル１０４から、グループ欄５０６にグループＩＤが設定され、ＣＰＵ状態欄５０２に「Ａｃｔｉｖｅ」が設定されているＣＰＵ状態情報の数をカウントしてＮとする（Ｓ７２２）。ＣＰＵ監視部１０２は、グループＩＤに対応するＣＰＵＩＤから、温度の低い順にＮ個のＣＰＵＩＤが含まれるリストを取得する（Ｓ７２３）。ＣＰＵ監視部１０２は、変数ｉに１を設定して（Ｓ７０４）、グループ欄５０６にグループＩＤが設定され、ＣＰＵ状態欄５０２に「Ａｃｔｉｖｅ」が設定されているＣＰＵ状態情報をＣＰＵ状態管理テーブル１０４から取得する（Ｓ７２４）。ＣＰＵ状態欄５０２は、取得したＣＰＵ状態情報のそれぞれについて以下の処理を行う。
【００７９】
ＣＰＵ監視部１０２は、上記のリストからｉ番目のＣＰＵＩＤを切り替え先欄５０５に設定し（Ｓ７０５）、ｉをインクリメントする（Ｓ７０６）。ＣＰＵ監視部１０２は、ＣＰＵ状態情報のＣＰＵＩＤ欄５０１に設定されているＣＰＵＩＤを切り替え元ＣＰＵとし（Ｓ４０２）、切り替え先欄５０５に設定されているＣＰＵＩＤを切り替え先ＣＰＵとする（Ｓ６２１）。ＣＰＵ監視部１０２は、切り替え元ＣＰＵと切り替え先ＣＰＵとが一致しない場合（Ｓ７０７：ＮＯ）にのみ、切り替え元ＣＰＵと切り替え先ＣＰＵとをＣＰＵ制御部１０３に通知する（Ｓ４０５）。
【００８０】
以上の処理を各ＣＰＵ状態情報及び各グループＩＤについて繰り返すことにより、同一グループ内のＣＰＵ１２０間で切り替え処理が行われる。
【００８１】
このように、上記の図２２の処理を行う場合のコンピュータ１０によれば、同一グループ内でのみＣＰＵ１２０の切り替え処理を行うことができる。したがって、コンピュータ１０に異なるアーキテクチャのＣＰＵ１２０を複数搭載する場合に、同一のアーキテクチャのＣＰＵ１２０を同一のグループとすることにより、同一のアーキテクチャのＣＰＵ１２０間でのみ切り替え処理が行われるようにすることができる。これにより、異なるアーキテクチャのＣＰＵ１２０間でレジスタ１２３の互換性がなかったり、レジスタ１２３に格納されている値の意味が異なったりすることに起因する誤作動を防止し、切り替え先ＣＰＵにおいて適切に処理が継続されるようにすることができる。
【００８２】
＝＝マルチコアＣＰＵへの適用＝＝
本実施形態では、コンピュータ１０が備える複数のＣＰＵ１２０を切り替えるものとしたが、コンピュータ１０がマルチコアＣＰＵ１３０を備え、マルチコアＣＰＵ１３０内のＣＰＵコア１３１を切り替えるようにしてもよい。なお、ＣＰＵコア１３１は、ＣＰＵ１２０と同様の演算処理機能を有する演算装置であり、各ＣＰＵコア１３１は独立したプロセッサとして認識される。図２３は４つのＣＰＵコア１３１を有するマルチコアＣＰＵ１３０の配置を示す図である。図２３の例では、マルチコアＣＰＵ１３０では、２×２の行列状にＣＰＵコア１３１が配置されている。また、実線で示すＣＰＵコア１３１は活性化状態であり、破線で示すＣＰＵコア１３１は非活性化状態であることを示す。この場合、上述の図１５におけるＣＰＵ１２０ａ〜ＣＰＵ１２０ｄはそれぞれＣＰＵコア１３１ａ〜ＣＰＵコア１３１ｄに対応する。このように、ＣＰＵコア１３１の活性化状態を切り替えながらマルチコアＣＰＵ１３０を動作させることにより、ＣＰＵコア１３１の温度の上昇を抑え、マルチコアＣＰＵ１３０の演算性能の低下を防止することができる。
【００８３】
なお、ＣＰＵコア１３１の切り替え処理は、同時に活性化状態となるＣＰＵコア１３１の距離を最大にするように配置することにより、より温度の上昇を抑えることができる。図２３の例に示すマルチコアＣＰＵ１３０の状態から切り替え処理を行う場合、図２４に示すように、ＣＰＵコア１３１ａ及び１３１ｃを非活性化するとともに、ＣＰＵコア１３１ｂ及び１３１ｄを活性化する。このように、対角線上に配置されている２つのＣＰＵコア１３１を切り替えるようにすることで、集積度の高いマルチコアＣＰＵ１３０が、局所的に高温になることを防ぐことができる。
【００８４】
また、特定の処理（例えば、Ｊａｖａ（登録商標）により記述されたプログラムの実行処理やＸＭＬ（eXtensible Markup Language）形式で記述されたデータの処理など）に特化した、異なるアーキテクチャのＣＰＵコア１３１が同一のマルチコアＣＰＵ１３０に混在している場合には、同一のアーキテクチャのＣＰＵコア１３１間で切り替え処理が行われるように切り替え先欄５０５を設定することにより、異なるアーキテクチャのＣＰＵコア１３１間で切り替え処理が行われることによる不具合を回避することができる。
【００８５】
また、ＣＰＵ状態情報にアーキテクチャを示す情報を設定する欄を設け、ＣＰＵ監視部１０２が、同一のアーキテクチャのＣＰＵコア１３１を選択するようにしてもよい。
【００８６】
以上、本実施形態について説明したが、上記実施形態は本発明の理解を容易にするためのものであり、本発明を限定して解釈するためのものではない。本発明は、その趣旨を逸脱することなく、変更、改良され得ると共に、本発明にはその等価物も含まれる。
【図面の簡単な説明】
【００８７】
【図１】本実施形態に係るコンピュータ１０の構成例を示す図である。
【図２】ＣＰＵ構成情報テーブル１４３に記憶されるＣＰＵ構成情報の構成例を示す図である。
【図３】ＣＰＵ状態管理テーブル１０４に記憶されるＣＰＵ状態情報の構成例を示す図である。
【図４】ＣＰＵ情報初期化部１０１による初期化処理の流れを示す図である。
【図５】初期化処理の途中時点でのＣＰＵ構成情報テーブル１４３及びＣＰＵ状態管理テーブル１０４の状態例を示す図である。
【図６】初期化処理終了後のＣＰＵ構成情報テーブル１４３及びＣＰＵ状態管理テーブル１０４の状態例を示す図である。
【図７】切り替え処理の対象となるＣＰＵ１２０の決定処理の流れを示す図である。
【図８】ＣＰＵ１２０の切り替え処理の流れを示す図である。
【図９】ＣＰＵ１２０の活性化状態が変化する様子を説明する図である。
【図１０】切り替え処理が行われた後のＣＰＵ構成情報テーブル１４３及びＣＰＵ状態管理テーブル１０４の状態例を示す図である。
【図１１】ＣＰＵ１２０の温度を管理する場合のＣＰＵ状態管理テーブル１０４の構成例を示す図である。
【図１２】ＣＰＵ１２０の温度を管理する場合の切り替え処理の対象となるＣＰＵ１２０の決定処理の流れを示す図である。
【図１３】ＣＰＵ状態管理テーブル１０４が更新された様子を示す図である。
【図１４】切り替え元ＣＰＵの温度が所定の温度を超えたかどうかにより切り替え処理を行う場合の、切り替え処理の対象となるＣＰＵ１２０の決定処理の流れを示す図である。
【図１５】ＣＰＵ１２０を４つ備えるコンピュータ１０の構成例を示す図である。
【図１６】コンピュータ１０が４つのＣＰＵ１２０を備える場合の、ＣＰＵ状態管理テーブル１０４に記憶されるＣＰＵ状態情報の構成例を示す図である。
【図１７】コンピュータ１０が４つのＣＰＵ１２０を備える場合の、切り替え処理の対象となるＣＰＵ１２０を決定する処理の流れを示す図である。
【図１８】ＣＰＵ１２０の切り替え処理が行われた後のＣＰＵ状態情報１０４の状態を示す図である。
【図１９】複数のＣＰＵ１２０の中で最も温度の低いものから所定数を活性化状態として、それ以外を非活性化状態としてもよい。この場合に用いられるＣＰＵ状態管理テーブル１５に記憶されるＣＰＵ状態情報の構成例を示す図である。
【図２０】温度が低い順にＣＰＵ１２０を活性化させる切り替え処理を行う場合の、ＣＰＵ１２０の選択処理の流れを示す図である。
【図２１】切り替え処理の対象をグループ化する場合の、ＣＰＵ状態情報の構成例を示す図である。
【図２２】切り替え処理の対象をグループ化する場合の、ＣＰＵ１２０の選択処理の流れを示す図である。
【図２３】４つのＣＰＵコア１３１を有するマルチコアＣＰＵ１３０の配置を示す図である。
【図２４】切り替え処理を行った後のマルチコアＣＰＵ１３０の状態を説明するための図である。
【符号の説明】
【００８８】
１０    コンピュータ                          １００  ＣＰＵ管理機構
１０１  ＣＰＵ情報初期化部                    １０２  ＣＰＵ監視部
１０３  ＣＰＵ制御部                          １０４  ＣＰＵ状態管理テーブル
１２０  ＣＰＵ                                １２１  ＴＬＢ
１２２  キャッシュ                            １２３  レジスタ
１２４  特権レジスタ                          １２５  割り込みレジスタ
１２６  プログラムカウンタ                    １２７  ＧＰＲ
１２８  温度センサ                            １３０  マルチコアＣＰＵ
１４０  主記憶                                １４１  ファームウェアプログラム
１４２  オペレーティングシステムプログラム    １４３  ＣＰＵ構成情報テーブル
１５０  デバイス                              １５１  イベントＩＤレジスタ
１５２  割り込み先レジスタ                    １６０  バス
４０１  ＣＰＵＩＤ欄                          ４０２  割り込みアドレス欄
５０１  ＣＰＵＩＤ欄                          ５０２  ＣＰＵ状態欄
５０３  割り込みアドレス欄                    ５０４  ＣＰＵ温度欄
５０５  切り替え先欄                          ５０６  グループ欄
【図１】
2008152567.tif 000003
【図２】
2008152567.tif 000004
【図３】
2008152567.tif 000005
【図４】
2008152567.tif 000006
【図５】
2008152567.tif 000007
【図６】
2008152567.tif 000008
【図７】
2008152567.tif 000009
【図８】
2008152567.tif 000010
【図９】
2008152567.tif 000011
【図１０】
2008152567.tif 000012
【図１１】
2008152567.tif 000013
【図１２】
2008152567.tif 000014
【図１３】
2008152567.tif 000015
【図１４】
2008152567.tif 000016
【図１５】
2008152567.tif 000017
【図１６】
2008152567.tif 000018
【図１７】
2008152567.tif 000019
【図１８】
2008152567.tif 000020
【図１９】
2008152567.tif 000021
【図２０】
2008152567.tif 000022
【図２１】
2008152567.tif 000023
【図２２】
2008152567.tif 000024
【図２３】
2008152567.tif 000025
【図２４】
2008152567.tif 000026