(57)【要約】【課題】複数のプロセッサにかかる負荷を平均化し、消費電力を抑制しつつ性能を発揮できるマルチプロセッサシステムなどを提供する。【解決手段】第１および第２のプロセッサ１１ａ〜ｂと、各々のプロセッサの各々がそれぞれに実行予定のスレッドを保持するタスクキュー２９ａ〜ｂとを有するマルチプロセッサシステム１で、消費電力記録手段から消費電力情報を収集する消費電力情報収集手段２１と、複数のプロセッサのうち第１のプロセッサの消費電力が第１の閾値を超えた場合に、第１のプロセッサ以外の第２のプロセッサの消費電力が第１の閾値より小さい第２の閾値を超えていなければ、スレッドの移動が必要であると判断する判断手段２５と、第１のプロセッサのタスクキューに保持されているスレッドを第２のプロセッサのタスクキューに移動させるスレッド移動手段２７とを備える。【選択図】図２
2010039802.tif 000002
【特許請求の範囲】
【請求項１】
第１および第２のプロセッサと、前記第１および第２のプロセッサの消費電力を時刻ごとに記録する消費電力記録手段と、前記第１および第２のプロセッサの各々がそれぞれに実行予定のスレッドを保持するタスクキューとを有するマルチプロセッサシステムであって、
前記消費電力記録手段から消費電力情報を収集する消費電力情報収集手段と、
前記複数のプロセッサのうち第１のプロセッサの消費電力が予め定められた第１の閾値を超えた場合に、前記第１のプロセッサ以外の第２のプロセッサの消費電力が前記第１の閾値より小さい値が予め定められた第２の閾値を超えていなければ、スレッドの移動が必要であると判断する判断手段と、
前記判断手段がスレッドの移動が必要であると判断したら、前記第１のプロセッサのタスクキューに保持されているスレッドを前記第２のプロセッサのタスクキューに移動させるスレッド移動手段と
を備えたことを特徴とするマルチプロセッサシステム。
【請求項２】
前記消費電力情報収集手段が、前記第１もしくは第２のプロセッサで実行されるスレッドの切り替えのタイミングで前記消費電力情報を収集することを特徴とする、請求項１に記載のマルチプロセッサシステム。
【請求項３】
前記第１および第２のプロセッサにおける前記タスクの実行方針を変更する動作条件決定手段を備え、
前記第１および第２のプロセッサの消費電力がいずれも前記第１の閾値を超えている場合に、前記判断手段が、前記動作条件決定手段に対して、前記第１および第２のプロセッサにおける前記スレッドの実行方針を変更する方針変更指令を出力することを特徴とする、請求項１に記載のマルチプロセッサシステム。
【請求項４】
前記第１および第２のプロセッサにおける前記スレッドの実行方針の変更指令は、当該プロセッサの動作周波数もしくは電圧のうち少なくとも一方の低下を含む内容であることを特徴とする、請求項３に記載のマルチプロセッサシステム。
【請求項５】
前記第１および第２のプロセッサにおける前記スレッドの実行方針の変更指令は、一定時間の間何のスレッドも実行しない空き時間の挿入を含む内容であることを特徴とする、請求項３に記載のマルチプロセッサシステム。
【請求項６】
前記判断手段が、前記複数のプロセッサのうち第１のプロセッサの消費電力が前記第１の閾値より大きい値が予め定められた第３の閾値を超えた場合に、前記第２のプロセッサの消費電力が前記第１の閾値を超えていなければ、前記第１のプロセッサのタスクキューに保持されているタスクを前記第２のプロセッサのタスクキューに移動するよう前記スレッド移動手段に指令することを特徴とする、請求項１に記載のマルチプロセッサシステム。
【請求項７】
前記第１および第２のプロセッサの温度を時刻ごとに記録する温度記録手段と、前記温度記録判断手段を収集する温度情報収集手段とを備え、
前記スレッド移動手段が、前記複数のプロセッサのうち第１のプロセッサの温度が予め定められた第４の閾値を超えた場合に、前記第１のプロセッサ以外の第２のプロセッサの温度が前記第４の閾値より小さい値が予め定められた第５の閾値を超えていなければ、前記第１のプロセッサのタスクキューに保持されているタスクを前記第２のプロセッサのタスクキューに移動するよう前記スレッド移動手段に指令することを特徴とする、請求項１に記載のマルチプロセッサシステム。
【請求項８】
第１および第２のプロセッサと、前記第１および第２のプロセッサの各々がそれぞれに実行予定のスレッドを保持するタスクキューとを有するマルチプロセッサシステムで、前記第１および第２のプロセッサの間で実行予定のスレッドを割り振るスケジューリング方法であって、
前記第１および第２のプロセッサの消費電力を時刻ごとに記録して消費電力情報を収集し、
前記複数のプロセッサのうち第１のプロセッサの消費電力が予め定められた第１の閾値を超えたか否かを判断し、
前記第１のプロセッサの消費電力が前記第１の閾値を超えた場合、前記第１のプロセッサ以外の第２のプロセッサの消費電力が前記第１の閾値より小さい値が予め定められた第２の閾値を超えていないか否かを判断し、
前記第２のプロセッサの消費電力が前記第２の閾値を超えていなければ、前記第１のプロセッサのタスクキューに保持されているスレッドを前記第２のプロセッサのタスクキューに移動させる
ことを特徴とするスケジューリング方法。
【請求項９】
前記消費電力情報の収集が、前記第１もしくは第２のプロセッサで実行されるスレッドの切り替えのタイミングで行われることを特徴とする、請求項８に記載のスケジューリング方法。
【請求項１０】
前記第１および第２のプロセッサの消費電力がいずれも前記第１の閾値を超えている場合に、前記第１および第２のプロセッサにおける前記タスクの実行方針を変更し、当該プロセッサの動作周波数もしくは電圧のうち少なくとも一方を低下させることを特徴とする、請求項８に記載のスケジューリング方法。
【請求項１１】
前記第１および第２のプロセッサの消費電力がいずれも前記第１の閾値を超えている場合に、前記第１および第２のプロセッサにおける前記タスクの実行方針を変更し、当該プロセッサに一定時間の間何のスレッドも実行しない空き時間を挿入させることを特徴とする、請求項８に記載のスケジューリング方法。
【請求項１２】
第１および第２のプロセッサと、前記第１および第２のプロセッサの各々がそれぞれに実行予定のスレッドを保持するタスクキューとを有するマルチプロセッサシステムに、
前記第１および第２のプロセッサの消費電力を時刻ごとに記録して消費電力情報を収集する処理と、
前記複数のプロセッサのうち第１のプロセッサの消費電力が予め定められた第１の閾値を超えたか否かを判断する処理と、
前記第１のプロセッサの消費電力が前記第１の閾値を超えた場合、前記第１のプロセッサ以外の第２のプロセッサの消費電力が前記第１の閾値より小さい値が予め定められた第２の閾値を超えていないか否かを判断する処理と、
前記第２のプロセッサの消費電力が前記第２の閾値を超えていなければ、前記第１のプロセッサのタスクキューに保持されているスレッドを前記第２のプロセッサのタスクキューに移動させる処理と
を実行させることを特徴とするスケジューリングプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はマルチプロセッサシステムに関し、特にそこで実行されるスレッドのスケジューリングに関する。
【背景技術】
【０００２】
コンピュータで、プロセッサの動作クロックの高速化によって性能を向上させることは、プロセッサの面積あたりの発熱量が既に過大であるなどの理由で、限界に達している。そのため、近年は複数のプロセッサを備え、処理を並列化することによって性能の向上を行うコンピュータが多くなっている。これをマルチプロセッサシステムという。マルチプロセッサシステムは、消費電力および温度の上昇も、該システムが備えているプロセッサの数だけ生じることになり、このことがコンピュータシステムの新たな問題となっている。
【０００３】
マルチプロセッサシステムにおいては、実行しようとしている複数の処理（タスクまたはスレッド）を各々のプロセッサに割り振る処理が不可欠である。これをスケジューリングという。このスケジューリングで、複数のプロセッサ間で負荷にバラツキが生じないよう、均等かつ適切にスレッドを割り振ることが、マルチプロセッサシステムにとっては重要である。マルチプロセッサシステムをサポートするＯＳ（オペレーティングシステム）は、スケジューリングに係る機能、たとえば実行予定のスレッドをプロセッサごとにタスクキューに保存し、その保存中のスレッドをタスクキュー間で移動するなどのような機能を標準的に備えている。
【０００４】
一方、多くのコンピュータシステムは、該システム内部に温度や消費電力を測定する機能を標準的に備えており、それらについて次のような文献が開示されている。特許文献１には、目標性能を設定しておき、それを達成するレベルにクロックを変更して消費電力を抑えるという技術が記載されている。特許文献２および４には、コンピュータシステムやプロセッサの使用電力量を測定し、それを履歴情報として保存するという技術が記載されている。特許文献３には、実行予定の業務を複数のサーバ間で移動し、その結果業務が稼働しなくなったサーバの電源をオフにするという技術が記載されている。
【０００５】
この他、たとえば非特許文献１〜２にそれぞれ記載されているインテル株式会社のスピードステップ（SpeedStep、登録商標）技術およびスロットリング（Throttling）技術などのように、消費電力が大きくなったことや温度が高くなったことを検出してプロセッサの動作クロックを下げ、消費電力を抑制するという技術も既に公知である。
【０００６】
【特許文献１】特開２００２−３５８１３９号公報
【特許文献２】特開２００３−１７８１０６号公報
【特許文献３】特開２００７−３１０７９１号公報
【特許文献４】特開２００８−１０２９２７号公報
【非特許文献１】「ワイヤレスIntel SpeedStepパワー・マネージャ」インテル株式会社、２００５年
【非特許文献２】「マルチコア・アーキテクチャーの改良: EPIスロットリングと非対称マルチプロセシングによる電力効率の改善」インテル株式会社、２００６年２月
【発明の開示】
【発明が解決しようとする課題】
【０００７】
しかしながら、従来のマルチプロセッサシステムでは、消費電力を記録するのみであり、現在実行中のスレッドの実行時に消費電力を抑制するのではなく、次のスレッドを実行する際に該消費電力情報を参考にして目標性能を設定し、それに基づいてスレッドを実行するしかなかった。目標性能の設定は煩雑な処理であり、またその設定が適切でないと、実行時の消費電力がかえって高くなる可能性もある。
【０００８】
また、この技術に、プロセッサの動作クロックを下げて消費電力を抑制するという手法を組み合わせると、動作クロックを下げられたプロセッサで実行される全てのスレッドの実行が遅くなる。消費電力が高い状況を作り出しているスレッドだけでなく、それとは関係ないスレッドまでが、実行が遅くなることによる影響を受けてしまう。
【０００９】
一方、消費電力を基準として、実行予定の業務を複数のサーバ間で移動するという技術は、前述の特許文献３で開示されている。しかしながら、これは複数のサーバ間で業務に係る負荷を均等化するものではなく、それどころか業務が稼働しなくなったサーバの電源をオフにして、消費電力を節減することを目的とするものである。
【００１０】
既に述べたように、マルチプロセッサシステムのスケジューリングでは、複数のプロセッサ間で負荷にバラツキが生じないよう、均等かつ適切にスレッドを割り振ることが重要であるので、明らかにそのことに反する特許文献３の技術をこの目的に使用することはできない。従って、特許文献３の技術に残る特許文献１，２，４と非特許文献１〜２の技術を組み合わせること自体に意味がなく、またそれらの組み合わせによって何の問題点を解決するものでもない。
【００１１】
本発明の目的は、煩雑な目標性能の設定をしなくても、マルチプロセッサシステムで複数のプロセッサにかかる負荷を平均化し、消費電力を抑制しつつ性能を発揮できるマルチプロセッサシステム、スケジューリング方法およびそのプログラムを提供することにある。
【課題を解決するための手段】
【００１２】
上記目的を達成するため、本発明に係るマルチプロセッサシステムは、第１および第２のプロセッサと、第１および第２のプロセッサの消費電力を時刻ごとに記録する消費電力記録手段と、第１および第２のプロセッサの各々がそれぞれに実行予定のスレッドを保持するタスクキューとを有するマルチプロセッサシステムであって、消費電力記録手段から消費電力情報を収集する消費電力情報収集手段と、複数のプロセッサのうち第１のプロセッサの消費電力が予め定められた第１の閾値を超えた場合に、第１のプロセッサ以外の第２のプロセッサの消費電力が第１の閾値より小さい値が予め定められた第２の閾値を超えていなければ、スレッドの移動が必要であると判断する判断手段と、判断手段がスレッドの移動が必要であると判断したら、第１のプロセッサのタスクキューに保持されているスレッドを第２のプロセッサのタスクキューに移動させるスレッド移動手段とを備えたことを特徴とする。
【００１３】
上記目的を達成するため、本発明に係るスケジューリング方法は、第１および第２のプロセッサと、第１および第２のプロセッサの各々がそれぞれに実行予定のスレッドを保持するタスクキューとを有するマルチプロセッサシステムで、第１および第２のプロセッサの間で実行予定のスレッドを割り振るスケジューリング方法であって、第１および第２のプロセッサの消費電力を時刻ごとに記録して消費電力情報を収集し、複数のプロセッサのうち第１のプロセッサの消費電力が予め定められた第１の閾値を超えたか否かを判断し、第１のプロセッサの消費電力が第１の閾値を超えた場合、第１のプロセッサ以外の第２のプロセッサの消費電力が第１の閾値より小さい値が予め定められた第２の閾値を超えていないか否かを判断し、第２のプロセッサの消費電力が第２の閾値を超えていなければ、第１のプロセッサのタスクキューに保持されているスレッドを第２のプロセッサのタスクキューに移動させることを特徴とする。
【００１４】
上記目的を達成するため、本発明に係るスケジューリングプログラムは、第１および第２のプロセッサと、第１および第２のプロセッサの各々がそれぞれに実行予定のスレッドを保持するタスクキューとを有するマルチプロセッサシステムに、第１および第２のプロセッサの消費電力を時刻ごとに記録して消費電力情報を収集する処理と、複数のプロセッサのうち第１のプロセッサの消費電力が予め定められた第１の閾値を超えたか否かを判断する処理と、第１のプロセッサの消費電力が第１の閾値を超えた場合、第１のプロセッサ以外の第２のプロセッサの消費電力が第１の閾値より小さい値が予め定められた第２の閾値を超えていないか否かを判断する処理と、第２のプロセッサの消費電力が第２の閾値を超えていなければ、第１のプロセッサのタスクキューに保持されているスレッドを第２のプロセッサのタスクキューに移動させる処理とを実行させることを特徴とする。
【発明の効果】
【００１５】
本発明は、上述したように消費電力と第１の閾値とを比較することによって、スレッドの移動の要否を判断する判断手段を設けたので、目標性能の設定をする必要がないばかりでなく、煩雑な目標性能の設定をしなくても、マルチプロセッサシステムで複数のプロセッサにかかる負荷を平均化し、消費電力を抑制しつつ性能を発揮できるという、従来にない優れたマルチプロセッサシステム、スケジューリング方法およびそのプログラムを提供することができる。
【発明を実施するための最良の形態】
【００１６】
［第１の実施の形態］
以下、本発明の第１の実施の形態を添付図に基づいて説明する。
最初に、本実施の形態の基本的な内容について説明し、その後で具体的な内容について説明する。
本実施の形態に係るマルチプロセッサシステム１は、図１に示すように、第１および第２のプロセッサ１１ａ〜ｂと、第１および第２のプロセッサの消費電力を時刻ごとに記録する消費電力記録手段（コントローラ１６）と、第１および第２のプロセッサの各々がそれぞれに実行予定のスレッドを保持するタスクキュー２９ａ〜ｂとを有する。
【００１７】
その上でマルチプロセッサシステム１は、図２に示すように、消費電力記録手段（コントローラ１６）から消費電力情報を収集する消費電力情報収集手段（消費電力情報収集部２１）と、スレッド移動の要否を判断する判断手段（状態判定部２５）と、第１のプロセッサ１１ａのタスクキュー２９ａに保持されているスレッドを第２のプロセッサ１１ｂのタスクキュー２９ｂに移動させるスレッド移動手段（スレッド移動部２７）とを備える。
そして、判断手段（状態判定部２５）は、第１のプロセッサ１１ａの消費電力が第１の閾値（後述のＬ２）を超えた場合に、第２のプロセッサ１１ｂの消費電力が第２の閾値（後述のＬ１、Ｌ１＜Ｌ２）を超えていなければ、スレッドの移動が必要であると判断する。この判断に基づいて、スレッド移動手段（スレッド移動部２７）は第１のプロセッサ１１ａのタスクキュー２９ａに保持されているスレッドを第２のプロセッサ１１ｂのタスクキュー２９ｂに移動させる。
【００１８】
ここで、消費電力情報収集手段（消費電力情報収集部２１）は、第１もしくは第２のプロセッサ１１ａ〜ｂで実行されるスレッドの切り替えのタイミングで消費電力情報を収集するようになっている。
そして、第１および第２のプロセッサ１１ａ〜ｂの消費電力がいずれも第１の閾値を超えている場合、つまりスレッドの移動を行っても両プロセッサにかかる負荷が平均化しない場合に、判断手段（状態判定部２５）が動作条件決定手段（動作条件決定部３０）に、第１および第２のプロセッサにおけるスレッドの実行方針を変更させることができる。
この場合の「スレッドの実行方針の変更」とは、たとえば当該プロセッサの動作周波数もしくは電圧のうち少なくとも一方の低下であってもよく、また当該プロセッサで一定時間の間何のスレッドも実行しない空き時間の挿入であってもよい。
【００１９】
そして、判断手段（状態判定部２５）は、第１のプロセッサ１１ａの消費電力が第３の閾値（後述のＬ３、Ｌ２＜Ｌ３）を超えた場合に、第２のプロセッサ１１ｂの消費電力が第１の閾値（後述のＬ２）を超えていなければ、第１のプロセッサ１１ａのタスクキュー２９ａに保持されているスレッドを第２のプロセッサ１１ｂのタスクキュー２９ｂに移動させる。
【００２０】
このようにすることにより、目標性能の設定をしなくても、適切に複数のプロセッサにかかる負荷を平均化することのできるマルチプロセッサシステム１を得ることができる。以下、これをさらに詳述する。
【００２１】
図１は本発明の実施の形態に係るマルチプロセッサシステム１の構成を示す概念図である。マルチプロセッサシステム１は、複数のプロセッサ１１ａ〜ｂを備えるコンピュータである。各々のプロセッサ１１ａ〜ｂはそれぞれ、電源供給手段１２ａ〜ｂ、電流測定手段１３ａ〜ｂ、温度測定手段１４ａ〜ｂを備える。以後、参照番号の後にａの記号が付いているものはプロセッサ１１ａについてのものであることを示し、参照番号の後にｂの記号が付いているものはプロセッサ１１ｂについてのものであることを示すものとする。
【００２２】
電源供給手段１２ａ〜ｂは、コンピュータのハードウェアの状態を制御するマイクロコンピュータであるコントローラ１６の制御により、プロセッサ１１ａ〜ｂの動作周波数および電圧を決定することができる。この動作周波数および電圧の決定については、任意の公知技術を適用することができる。
【００２３】
電流測定手段１３ａ〜ｂはセンス抵抗１５ａ〜ｂを含み、該センス抵抗の両端の電圧を測定することにより、プロセッサ１１ａ〜ｂに流れる電流値を測定し、この電流値から各プロセッサ１１ａ〜ｂの消費電力を把握することができる。温度測定手段１４ａ〜ｂは各々のプロセッサ１１ａ〜ｂに内蔵された温度センサである。電流測定手段１３ａ〜ｂおよび温度測定手段１４ａ〜ｂによる測定結果は、コントローラ１６に、時刻と共に記憶される。
【００２４】
プロセッサ１１ａ〜ｂで動作するＯＳは、チップセット１７を経由してコントローラ１６から温度および電流の測定結果を取得し、それによってプロセッサ１１ａ〜ｂの消費電力を把握することができる。さらに、把握された消費電力に応じて、コントローラ１６から電源供給手段１２ａ〜ｂに対してプロセッサ１１ａ〜ｂの動作周波数および電圧を変更させる制御命令を発行させることもできる。
【００２５】
図１において、電流測定手段１３ａ〜ｂおよび温度測定手段１４ａ〜ｂによる測定結果は破線、コントローラ１６から電源供給手段１２ａ〜ｂへの制御命令は点線、プロセッサ１１ａ〜ｂからコントローラ１６への制御命令およびデータ取得は太線、それ以外の接続関係は実線で示されている。
【００２６】
このように、プロセッサが自らの消費電力および動作温度を把握し、それに応じて自らの動作周波数および電圧を変更する仕組みは、背景技術の欄で説明したように公知であり、多くのコンピュータはそのためのハードウェアを標準的に備えている。本発明は、そのようなハードウェアを利用することにより、既存のハードウェアを改変することなしに実現可能である。
【００２７】
なお、この図１における記載は、本発明の原理的な部分を示したに過ぎない。実際には、もっと複雑な構造の装置が使用されるが、それらは公知である。また、コンピュータを構成する上では、図１に示した以外にも多くのデバイスが使われるが、それらも公知である。
【００２８】
図２は、図１に示したマルチプロセッサシステム１で動作するスケジューリングシステム２０の構成を示す概念図である。スケジューリングシステム２０は、マルチプロセッサシステム１で動作するＯＳの一部として実行される。以下の各々の動作部および記憶データは、ＯＳが動作しているＲＡＭ（図示せず）上に存在し、実行される。
【００２９】
消費電力情報収集部２１は、スレッド切り替えのタイミングで該スレッド実行による消費電力の情報を、コントローラ１６に記録された内容から収集する。消費電力記録部２２は、消費電力情報収集部２１で収集された消費電力に関する情報を、予め定義された一定時間のプロセッサの消費電力として、また実行スレッドの消費電力情報として消費電力情報２３としてＯＳ内部に記録する。
【００３０】
動作パラメータ２４は、プロセッサの消費電力のレベルを決定する、後述のパラメータＬ１，Ｌ２，Ｌ３の各値を保持する。状態判定部２５は、消費電力情報２３を後述のパラメータＬ１，Ｌ２，Ｌ３と比較して、プロセッサの消費電力のレベルを判定する。そして状態判定部２５は、この判断結果に基づいて、スレッド操作部２６および動作条件決定部３０に対して動作指令を発する。スレッド操作部２６は、状態判定部２５の指令に基づいて、スレッド移動が必要であれば、スレッド移動部２７で当該スレッドを別プロセッサに移動する。なお、スレッド移動部２７が実行するスレッド移動の詳細は、既に当業者に知られている技術である。
【００３１】
次の実行候補選択部２８はタスクキュー２９ａ〜ｂに格納されている実行予定のスレッドの中から、次に実行するスレッドを選択する。タスクキュー２９ａはプロセッサ１１ａで動作しようとしているスレッドを格納し、タスクキュー２９ｂはプロセッサ１１ｂで動作しようとしているスレッドを格納する。
【００３２】
動作条件決定部３０は、状態判定部２５の指令に基づいてプロセッサ１１ａ〜ｂ各々の動作周波数および電圧を決定し、コントローラ１６に対して制御命令を発行して当該動作周波数および電圧でそれぞれのプロセッサ１１ａ〜ｂを動作させる。また動作条件決定部３０は、同じようにコントローラ１６に対して制御命令を発行し、プロセッサ１１ａ〜ｂが何のスレッドも実行しない空き時間を挿入させることもできる。
【００３３】
なお、図２では図面の錯綜を回避するため、動作条件決定部３０がコントローラ１６を介してプロセッサ１１ａ〜ｂの動作周波数などを制御することを示す矢印などの記載を省略している。この矢印は図１には記載されている。
【００３４】
図３は、図２に示したスケジューリングシステム２０の動作を示すフローチャートである。まず、消費電力情報収集部２１が消費電力情報を収集する（ステップＳ１０１）。収集された消費電力情報は、単位時間あたりのプロセッサの消費電力として、消費電力記録部２２が消費電力情報２３として記録する（ステップＳ１０２）。
【００３５】
この際に、実行スレッドの情報を利用して、スレッドの実行時間に対応する消費電力情報を実行スレッドの属性として記録することにより、各スレッドの実行に伴う属性として把握することが可能となる。以上の消費電力の記録は任意のタイミングで実行可能であるが、後述の処理で利用するため、少なくともスレッド切り替えのタイミングで実行されるものとする。
【００３６】
次に、状態判定部２５が、記録された消費電力情報２３と、あらかじめ設定されて記憶されている動作パラメータ２４とを比較して、プロセッサの動作状態を判定する（ステップＳ１０３）。この判定結果が、後述のスレッドの移動の必要性、および移動対象となるプロセッサの選択に利用される。
【００３７】
この後、状態判定部２５は、ステップＳ１０３の判定結果からスレッド移動の必要性を消費電力のレベルで判定し（ステップＳ１０４）、必要であれば移動候補プロセッサと移動スレッドを選択し（ステップＳ１０５）、スレッド移動部２７にスレッドを移動させる（ステップＳ１０６）。ステップＳ１０６でスレッドの移動が完了した後、もしくはステップＳ１０４で移動が不要であると判断された場合には、次の実行候補選択部２８が該プロセッサで次に実行されるスレッドを選択する（ステップＳ１０７）。なお、ステップＳ１０４〜１０６で示した処理については、後で詳述する。
【００３８】
図４は、図１に示したマルチプロセッサシステムで、動作パラメータ２４にあらかじめ記憶された消費電力レベルの設定の一例を示す概念図である。図４の例では、動作状態を消費電力に対してＬ１、Ｌ２、Ｌ３という３つの閾値を設定し、「小」、「中」、「大」、および「超過」の４段階の消費電力レベルに分割している。段階数はこの例で示す４段階以外であってもよい。
【００３９】
消費電力レベルが「小」の場合には、該プロセッサにかかっている負荷が軽いので、無条件で他プロセッサからのスレッド移動対象として選択可能である。消費電力レベルが「中」の場合、該プロセッサにかかっている負荷は中程度であるので、プロセッサ間で負荷に大きな偏りがある場合にのみスレッド移動対象として選択可能である。つまり、消費電力レベル「中」状態のプロセッサには、「超過」状態のプロセッサからのみスレッドを移動させることが可能である。
【００４０】
消費電力が「大」の場合、該プロセッサにかかっている負荷が重いので、スレッドの移動対象として「小」状態のプロセッサが他にないか否かを探す。見つかった場合はそこに対してスレッドを移動する。見つからない場合、つまり他のプロセッサが全て「中」以上の負荷であると判定されている場合には、スレッド移動は行わず、プロセッサの実行方針を変更して、該プロセッサにかかっている負荷を抑制する。
【００４１】
該プロセッサにかかっている負荷を抑制するには、具体的には、動作条件決定部３０によって、コントローラ１６に制御命令を送って、プロセッサ１１ａ〜ｂの動作周波数および電圧を低下させる。これ以外にも、たとえばスレッドの実行に割り当てない空き時間を一定の比率で挿入することや、消費電力の高いスレッドを割り当てる際には一定の時間間隔を必要とするように設定するなどのことも、コントローラ１６に制御命令を送ることによって可能である。
【００４２】
最後に、消費電力が「超過」である場合、消費電力が「小」または「中」であると判定されたプロセッサに対してスレッドを移動可能である。移動対象が見つからない場合は、前述の消費電力が「大」の場合と同様に、プロセッサの実行方針を変更して負荷の抑制を行う。また、この状態での実行方針は、スレッドを新規に実行しない空き状態を消費電力の状態が「中」以下になるまで継続するようにしてもよい。これにより、プロセッサの消費電力を抑制する。
【００４３】
図５は、図３のステップＳ１０４〜１０６として示した、スレッド移動処理の詳細を示すフローチャートである。まず、該プロセッサの消費電力がＬ２以上であるか否か、つまり該プロセッサの消費電力の状態が「大」または「超過」であるか否かを判断する（ステップＳ２０１）。消費電力がＬ２未満であれば、該プロセッサの消費電力の状態は「小」または「中」であるので、特に何もしないで終了する。
【００４４】
ステップＳ２０１で該プロセッサの消費電力がＬ２以上であった場合、該プロセッサ以外に消費電力の状態が「小」であるプロセッサが存在するか否かを判断し（ステップＳ２０２）、それが存在すればその消費電力の状態が「小」であるプロセッサを移動先として指定する（ステップＳ２０３）。
【００４５】
ステップＳ２０２で該プロセッサ以外に消費電力の状態が「小」であるプロセッサが存在しなかった場合、該プロセッサの消費電力がＬ３以上であるか否か、つまり該プロセッサの消費電力の状態が「超過」であるか否かを判断する（ステップＳ２０４）。「超過」であれば、該プロセッサ以外に消費電力の状態が「中」であるプロセッサが存在するか否かを判断し（ステップＳ２０５）、それが存在すればその消費電力の状態が「中」であるプロセッサを移動先として指定する（ステップＳ２０６）。
【００４６】
ステップＳ２０３または２０６で移動先として指定されたプロセッサに対して、該プロセッサのタスクキュー２９ａ〜ｂに保存されている実行待ちスレッドの中から、移動するスレッドを選択し（ステップＳ２０７）、該スレッドをその移動先のプロセッサに移動する（ステップＳ２０８）。これで、スレッド移動の処理が完了する。
【００４７】
ステップＳ２０４または２０５で、該当するプロセッサが存在しない場合は、スレッドの移動先として指定できるプロセッサが存在しないということである。この場合は、前述のようにプロセッサ１１ａ〜ｂの動作周波数および電圧を低下させるなど、プロセッサの実行方針を変更し、該プロセッサにかかっている負荷の抑制を行う（ステップＳ２０９）。
【００４８】
以上で説明した図５の各ステップは、ステップＳ２０１が図３のステップＳ１０４に対応し、ステップＳ２０２〜２０７が図３のステップＳ１０４に対応する。そして、ステップＳ２０８〜２０９が図３のステップＳ１０６に対応する。
【００４９】
なお、図５のステップＳ２０７に示した、タスクキュー２９ａ〜ｂの中から移動するスレッドを選択するには、任意の公知技術を適用することができる。たとえば、実行時間に対して消費電力が大きなスレッドを選ぶ方法が考えられる。このほか、移動元と移動先の消費電力がほぼ均等になるようにスレッドの移動を行うことにしてもよい。この移動スレッドの決定方法は、システムの運用方針などを考慮して選択することができる。
【００５０】
以上のように、消費電力の大きなプロセッサから、消費電力の小さなプロセッサにスレッドを移動することで、消費電力の最大値を超えないようにすると共に、消費電力の偏りを減らした並列実行を実現する。
【００５１】
スレッド移動の後、または移動の必要がなければ、前述のステップＳ１０７として示したように、次の実行候補選択部２８で次に実行するスレッドの選択を行う。前述のように、この動作は公知技術を適用できる。
【００５２】
次に、上記の第１の実施の形態の全体的な動作について再び説明する。本発明の第１の実施の形態に係るマルチプロセッサシステム１は、第１および第２のプロセッサ１１ａ〜ｂと、第１および第２のプロセッサの各々がそれぞれに実行予定のスレッドを保持するタスクキュー２９ａ〜ｂとを有するマルチプロセッサシステムで、第１および第２のプロセッサの間で実行予定のスレッドを割り振るスケジューリング方法を提供するものである。
【００５３】
まず第１および第２のプロセッサ１１ａ〜ｂの消費電力を時刻ごとに記録して消費電力情報を収集し（図３：ステップＳ１０１〜１０２）、第１のプロセッサ１１ａの消費電力が予め定められた第１の閾値Ｌ２を超えたか否かを判断する（図５：ステップＳ２０１）。第１のプロセッサの消費電力が第１の閾値を超えた場合、第２のプロセッサ１１ｂの消費電力が第１の閾値より小さい値が予め定められた第２の閾値Ｌ１を超えていないか否かを判断し（図５：ステップＳ２０２）、第２のプロセッサの消費電力がＬ１を超えていなければ、第１のプロセッサ１１ａのタスクキュー２９ａに保持されているスレッドを第２のプロセッサ１１ｂのタスクキュー２９ｂに移動させる（図５：ステップＳ２０３，２０７，２０８）。
【００５４】
ここで、この消費電力情報の収集は、第１もしくは第２のプロセッサで実行されるスレッドの切り替えのタイミングで行われるものである。そして、第１および第２のプロセッサ１１ａ〜ｂの消費電力がいずれも第１の閾値Ｌ２を超えている場合に、第１および第２のプロセッサにおけるタスクの実行方針を変更する（図５：ステップＳ２０９）。
【００５５】
ここで、上記各動作ステップについては、これをコンピュータで実行可能にプログラム化し、これらを前記各ステップを直接実行するマルチプロセッサシステム１に実行させるようにしてもよい。
【００５６】
以上説明したように、本発明においては、以上のような動作を行うことにより、次に記載するような効果を奏する。まず、消費電力情報をスレッドのスケジューリングおよびスレッドの移動判定に利用ことにより、目標性能の設定をしなくても、実行性能に加えて消費電力を考慮した適切なスケジューリングが可能になる。次いで、スレッドのスケジューリングで消費電力を一定以下に抑える割り当てを行うため、実行時にプロセッサ間の消費電力の偏りを修正することが可能になる。
【００５７】
［第２の実施の形態］
本発明の第２の実施の形態に係るマルチプロセッサシステムは、前述の第１の実施の形態で消費電力情報を収集して使用したかわりに、温度測定手段１４ａ〜ｂが取得した各プロセッサの温度分布に係る情報を使用する。この場合、各プロセッサの温度に対して、前述のＬ１〜Ｌ３と同様の閾値を設定し、図３および図５のフローチャートとして示したものと同様の処理を、温度情報に対して行うようにすればよい。または、消費電力と温度情報の両方に対してそのような処理を行うようにしてもよい。
【００５８】
温度と消費電力とを併用することによって、より正確に各プロセッサにかかる負荷を把握し、スレッドの移動などの処置を行うことができる。これ以外の、本発明の第２の実施の形態に係るマルチプロセッサシステムの装置の構成および作用効果は、図１〜２で示した第１の実施の形態に係るマルチプロセッサシステム１と同一である。
【００５９】
［第３の実施の形態］
前述した本発明の第１および第２の実施の形態では２つのみのプロセッサを接続したマルチプロセッサシステムについて説明した。これと同じ手法を、３つ以上の非常に多数のプロセッサを接続したシステムに適用することができる。この場合、実行の途中で消費電力が大きくなったとしても、スレッドを何もしていないプロセッサに移動することで、クロック変更などの消費電力を抑えるために実行速度を低下させることなく、スレッドの移動コストのみで実行を継続することが可能となる。
【００６０】
本発明の第３の実施の形態に係るマルチプロセッサシステムの装置の構成は、図１〜２で示した第１の実施の形態に係るマルチプロセッサシステム１のプロセッサの数を３つ以上に増やすだけである。この場合も、図３および図５のフローチャートとして示した処理をそのまま適用することができる。これ以外の、本発明の第３の実施の形態に係るマルチプロセッサシステムの装置の構成および作用効果も、図１〜２で示した第１の実施の形態に係るマルチプロセッサシステム１と同一である。
【００６１】
これまで本発明について図面に示した特定の実施の形態をもって説明してきたが、本発明は図面に示した実施の形態に限定されるものではなく、本発明の効果を奏する限り、これまで知られたいかなる構成であっても採用することができる。
【産業上の利用可能性】
【００６２】
マルチプロセッサシステム、即ち複数のプロセッサを有するコンピュータ装置に対して幅広く適用できる。
【図面の簡単な説明】
【００６３】
【図１】本発明の実施の形態に係るマルチプロセッサシステムの構成を示す概念図である。
【図２】図１に示したマルチプロセッサシステムで動作するスケジューリングシステムの構成を示す概念図である。
【図３】図２に示したスケジューリングシステムの動作を示すフローチャートである。
【図４】図１に示したマルチプロセッサシステムで、動作パラメータ２４にあらかじめ記憶された消費電力レベルの設定の一例を示す概念図である。
【図５】図３のステップＳ１０４〜１０６として示した、スレッド移動処理の詳細を示すフローチャートである。
【符号の説明】
【００６４】
１  マルチプロセッサシステム
１１ａ、１１ｂ  プロセッサ
１２ａ、１２ｂ  電源供給手段
１３ａ、１３ｂ  電流測定手段
１４ａ、１４ｂ  温度測定手段
１５ａ、１５ｂ  センス抵抗
１６  コントローラ
１７  チップセット
２０  スケジューリングシステム
２１  消費電力情報収集部
２２  消費電力記録部
２３  消費電力情報
２４  動作パラメータ
２５  スレッド操作部
２７  スレッド移動部
２８  次の実行候補選択部
２９ａ、２９ｂ  タスクキュー
３０  動作条件決定部
【図１】
2010039802.tif 000003
【図２】
2010039802.tif 000004
【図３】
2010039802.tif 000005
【図４】
2010039802.tif 000006
【図５】
2010039802.tif 000007