(57)【要約】【課題】各プロセッサ間で発熱量を均一にし、過熱による処理停止の発生を抑制する。【解決手段】  制御用ＩＣが、各プロセッサＰ１〜Ｐ４に各タスクを割り当てた後、温度センサｔｓ１〜ｔｓ４により得られた各プロセッサの温度に基づいて、各プロセッサＰ１〜Ｐ４の温度が略均一になるように、割り当て結果を修正する。これにより、各プロセッサ間で発熱量を均一にでき、過熱による処理停止の発生を抑制できる。【選択図】  図１
2006106807.tif 000002
【特許請求の範囲】
【請求項１】
互いに接続された複数のプロセッサにより、複数のタスクを実行するためのマルチプロセッサ計算機であって、
前記各タスクに付加されて前記プロセッサにより実行された際に生じる発熱量を示す発熱量データを、各プロセッサ毎に累積した値が略均一になるように、前記各プロセッサに各タスクを割り当てるタスク割り当て手段と、
前記タスク割り当て手段による割り当て結果に基づいて、前記各プロセッサにタスクを実行させる手段と、
を備えたことを特徴とするマルチプロセッサ計算機。
【請求項２】
互いに接続された複数のプロセッサとメモリとにより、複数のタスクを実行するためのマルチプロセッサ計算機に用いられるプログラムであって、
前記マルチプロセッサのコンピュータを、
前記各タスクに付加されて前記プロセッサにより実行された際に生じる発熱量を示す発熱量データを、各プロセッサ毎に累積した値が略均一になるように、前記各プロセッサに各タスクを割り当ててこの割り当て結果を示すプロセッサ割り当てテーブルを作成するプロセッサ割り当て手段、
前記プロセッサ割り当てテーブルを前記メモリに書込む手段、
前記メモリ内のプロセッサ割り当てテーブルに基づいて、前記各プロセッサにタスクを実行させる手段、
として機能させるためのプログラム。
【請求項３】
互いに接続された複数のプロセッサにより、複数のタスクを実行するためのマルチプロセッサ計算機であって、
前記各プロセッサの温度を検出するための温度検出手段と、
前記各プロセッサに各タスクを割り当てるタスク割り当て手段と、
前記検出された各プロセッサの温度に基づいて、当該各プロセッサの温度が略均一になるように、前記タスク割り当て手段による割り当て結果を修正する割り当て結果修正手段と、
前記割り当て結果修正手段による修正結果に基づいて、前記各プロセッサにタスクを実行させる手段と、
を備えたことを特徴とするマルチプロセッサ計算機。
【請求項４】
互いに接続された複数のプロセッサとメモリとにより、複数のタスクを実行するためのマルチプロセッサ計算機に用いられるプログラムであって、
前記マルチプロセッサ計算機のコンピュータを、
前記各プロセッサの温度を検出するための温度検出手段、
前記各プロセッサに各タスクを割り当ててこの割り当て結果を示すプロセッサ割り当てテーブルを作成するプロセッサ割り当て手段、
前記プロセッサ割り当てテーブルを前記メモリに書込む手段、
前記検出された各プロセッサの温度に基づいて、当該各プロセッサの温度が略均一になるように、前記メモリ内のプロセッサ割り当てテーブルを修正する割り当てテーブル修正手段、
前記修正されたプロセッサ割り当てテーブル結果に基づいて、前記各プロセッサにタスクを実行させる手段、
として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のプロセッサにタスクを割付け可能なマルチプロセッサ計算機及びプログラムに係り、特に、各プロセッサ間で発熱量を均一にでき、過熱による処理停止の発生を抑制し得るマルチプロセッサ計算機及びプログラムに関する。
【背景技術】
【０００２】
工場の生産ラインやプラントなどを制御する分野では、制御対象の動作タイミングである実時間と同期して制御を行う計算機が広く用いられている。このような計算機は、実時間処理を実現するように設計されたハードウェアおよびソフトウェアが実装されている。
【０００３】
ここで、実時間処理は、工場内の制御処理に限らず、企業の情報管理処理や電子商取引処理、あるいはマルチメディア処理の動画像処理などでも利用されている。
【０００４】
この種の計算機では、要求される処理能力が、単一プロセッサの処理能力よりも高い場合、複数プロセッサを同時に活用するマルチプロセッサ計算機が利用される。
【０００５】
多くのマルチプロセッサ計算機では、実時間処理に限らず、各プロセッサの処理能力を有効活用するため、一つのプロセッサに対し、複数の処理を割り当てている。
【０００６】
マルチプロセッサ計算機は、処理を実行する場合、処理をタスクという処理単位に分割し、各タスクの実行に必要な数のプロセッサを割り当て、タスクを実装する。タスクが複数のプロセッサを必要とする場合、各プロセッサ上でそれぞれ動作する実行単位をスレッドと呼ぶことがある。また、タスクおよびそれを構成するスレッドが、プロセッサ上で複数期間実行される場合、各実行期間をジョブと呼ぶことがある。例えば、２つのプロセッサを利用するタスクが周期的に実行される場合、そのタスクは利用プロセッサ数と同じ２つのスレッドで構成され、周期毎に各スレッドがジョブとして実行される。
【０００７】
マルチプロセッサ計算機では、複数のタスクを実行する場合、各タスクの実行順序を決めるスケジューリングを実行する必要がある。スケジューリング方式のうち、タスクおよびそのジョブの実行を開始する前に、全てのジョブの実行順序を決めておくスケジューリング方式をスタティックスケジューリングと呼ぶ。スタティックスケジューリングは、計算機システムが稼動する前に全てのタスクをスケジューリングするオフラインスケジューリング方式と、システム稼働中に、実際に実行するタスクが決定した段階でスケジューリングを行うオンラインスケジューリング方式とに分類可能である。オンラインスケジューリング方式を用いれば、稼働中における制御対象の変化やユーザの要求に応じて、必要なタスクのみを実行可能となっている。
【０００８】
一方、ジョブを実際に実行するプロセッサに割り当てることをディスパッチと呼ぶ。スタティックスケジューリング方式では、スケジューリングを事前に実行し、ディスパッチをジョブの実行時に動的に実行する。
【０００９】
なお、この出願に関連する先行技術文献としては次のものがある。  
【非特許文献１】J. W. S. Liu, Real-Time Systems, Prentice Hall, 2000
【発明の開示】
【発明が解決しようとする課題】
【００１０】
しかしながら、以上のようなマルチプロセッサ計算機は、通常は特に問題は無いが、本発明者の検討によれば、処理性能や実時間処理のみを考慮してスケジューリングやディスパッチを行うので、各プロセッサ間で発熱量が不均一になり、熱くなったプロセッサの冷却ノイズ（ファン音等）が増大し、最終的には、過熱による処理停止などが発生する可能性があると考えられる。
【００１１】
本発明は上記実情を考慮してなされたもので、各プロセッサ間で発熱量を均一にでき、過熱による処理停止の発生を抑制し得るマルチプロセッサ計算機及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【００１２】
第１の発明は、互いに接続された複数のプロセッサにより、複数のタスクを実行するためのマルチプロセッサ計算機であって、前記各タスクに付加されて前記プロセッサにより実行された際に生じる発熱量を示す発熱量データを、各プロセッサ毎に累積した値が略均一になるように、前記各プロセッサに各タスクを割り当てるタスク割り当て手段と、前記タスク割り当て手段による割り当て結果に基づいて、前記各プロセッサにタスクを実行させる手段と、を備えたマルチプロセッサ計算機である。
【００１３】
第２の発明は、互いに接続された複数のプロセッサにより、複数のタスクを実行するためのマルチプロセッサ計算機であって、前記各プロセッサの温度を検出するための温度検出手段と、前記各プロセッサに各タスクを割り当てるタスク割り当て手段と、前記検出された各プロセッサの温度に基づいて、当該各プロセッサの温度が略均一になるように、前記タスク割り当て手段による割り当て結果を修正する割り当て結果修正手段と、前記割り当て結果修正手段による修正結果に基づいて、前記各プロセッサにタスクを実行させる手段と、を備えたマルチプロセッサ計算機である。
【００１４】
（作用）
従って、第１の発明は以上のような手段を講じたことにより、各プロセッサに各タスクを割り当てる際に、各タスクに付加された発熱量データを各プロセッサ毎に累積した値が略均一になるように、各プロセッサに各タスクを割り当てるので、各プロセッサ間で発熱量を均一にでき、過熱による処理停止の発生を抑制することができる。
【００１５】
第２の発明は、各プロセッサに各タスクを割り当てた後、各プロセッサの温度が略均一になるように、割り当て結果を修正するので、各プロセッサ間で発熱量を均一にでき、過熱による処理停止の発生を抑制することができる。
【発明の効果】
【００１６】
以上説明したように本発明によれば、各プロセッサ間で発熱量を均一にでき、過熱による処理停止の発生を抑制できる。
【発明を実施するための最良の形態】
【００１７】
以下、本発明の各実施形態について図面を参照して説明する。なお、以下の説明では、４プロセッサ構成のマルチプロセッサ計算機を用いるが、２つ以上の任意のプロセッサ数を用いてもよい。また、個々のプロセッサが別々のチップで実装される例を示すが、複数のプロセッサを１チップで実現する、オンチップマルチプロセッサを用いてもよい。また、マルチプロセッサとしては、一つあるいは複数のシステム制御用プロセッサ（図２中の制御用ＩＣ１３）と、複数のタスク処理用プロセッサ（図２中のＰ１〜Ｐ４）とで構成される例を示すが、これに限らず、システム制御用プロセッサとタスク処理用プロセッサを共有してもよい。また、システム制御用プロセッサとタスク処理用プロセッサは、別々の命令セットアーキテクチャであってもよい。スレッドを割り当てるプロセッサは、常にタスク処理用プロセッサであるため、スレッドを割り当てる場合には、タスク処理用プロセッサのことを単にプロセッサと表記する。
【００１８】
（第１の実施形態）
図１は本発明の第１の実施形態に係るマルチプロセッサ計算機の構成を示す模式図である。このマルチプロセッサ計算機１０は、基板１１上に４つのプロセッサＰ１〜Ｐ４が実装されている。
【００１９】
各プロセッサＰ１〜Ｐ４には、それぞれ冷却用の冷却フィンｆ１〜ｆ４が取り付けられている。各冷却フィンｆ１〜ｆ４には冷却ファンを取り付けてもよい。冷却システムとして、水冷による冷却システムを採用してもよい。
【００２０】
各プロセッサＰ１〜Ｐ４の直下の基板１１には、プロセッサ温度を個別に測定するための温度センサｔｓ１〜ｔｓ４が配置されている。各温度センサｔｓ１〜ｔｓ４は、プロセッサＰ１〜Ｐ４上面に設置するか、又はプロセッサＰ１〜Ｐ４のチップ内に内蔵してもよい。オンチップマルチプロセッサの場合には、温度センサｔｓ１〜ｔｓ４をチップ内に内蔵し、各プロセッサＰ１〜Ｐ４毎に温度を測定可能とすることが望ましい。
【００２１】
マルチプロセッサ計算機１０のケース内には、ケース内の温度を測定するための温度センサｔｓ５が基板１上に立設されている。この温度センサｔｓ５は、プロセッサＰ１〜Ｐ４などの発熱物に影響されない箇所への設置が望ましい。温度センサｔｓ５としては、例えば熱電対などが使用可能となっている。温度センサｔｓ１〜ｔｓ５の測定値は、ＡＤ変換などを行い、計算機プログラムから取得可能に処理される。
【００２２】
なお、上述した温度センサｔｓ１〜ｔｓ５は、温度測定が必要な場合に設けられる構成要素であり、温度測定が不要な場合には省略可能となっている。
【００２３】
次に、以上のようなマルチプロセッサ計算機１０のシステム構成を述べる。マルチプロセッサ計算機１０は、図２に示すように、プロセッサＰ１〜Ｐ４、共有メモリ１２及び制御用ＩＣ１３がインタフェースＩ／Ｆ１〜Ｉ／Ｆ６を個別に介してリング状の伝送線１４に接続されている。
【００２４】
ここで、各プロセッサＰ１〜Ｐ４は、前述したタスク処理用プロセッサに該当し、制御用ＩＣ１３から実行制御されるものである。
【００２５】
共有メモリ１２は、各プロセッサＰ１〜Ｐ４及び制御用ＩＣ１３により読出／書込可能なメモリであり、例えば、後述する図３〜図４に示す処理２０やタスク２１，…、図５に示すような各テーブルＴ１０，Ｔ２０、図６〜図８に示すようなスケジューリングプログラム、及び温度センサｔｓ１〜ｔｓ５による温度測定結果、等が記憶されるものである。
【００２６】
。なお、共有メモリ１２に代えて、各プロセッサＰ１〜Ｐ４が個別にメモリを有していてもよい。あるいは、共有メモリ１２に加え、各プロセッサＰ１〜Ｐ４が個別にメモリを有していてもよい。
【００２７】
制御用ＩＣ１３は、前述したシステム制御用プロセッサに該当し、共有メモリ１２内のスケジューリングプログラムと各温度センサｔｓ１〜ｔｓ５による測定結果に基づいて、各プロセッサＰ１〜Ｐ４に各タスクを割り当てるスタティックスケジューリング処理を実行するものであり、共有メモリ１２内のディスパッチテーブルＴ１０（スケジューリング結果）に基づいて、各プロセッサＰ１〜Ｐ４にタスクを実行させる機能をもっている。なお、スケジューリング処理は、必ずしも温度測定結果を用いる必要が無く、例えばスレッド毎に予め設定される発熱量に基づいて実行される場合がある。この場合、温度測定結果を用いる必要が無いので、各温度センサｔｓ１〜ｔｓ５を省略可能となっている。スタティックスケジューリングアルゴリズムには、例えば、テーブルベーススケジューリングアルゴリズムを用いることができる。ここで、テーブルベーススケジューリングアルゴリズムは、ある期間分のジョブの実行順序を示すテーブルを用意し、そのテーブルを基にジョブのディスパッチを行う方式である。
【００２８】
ここで、スケジューリング処理は、タスクの実行により生じる発熱量を示す発熱量データが各タスクに付加されているとき、各プロセッサＰ１〜Ｐ４に各タスクを割り当てる際に、タスク毎に発熱量データを参照する処理と、この参照結果に基づいて、発熱量データを累積した値が各プロセッサ間で略均一になるように、各プロセッサＰ１〜Ｐ４に各タスクを割り当ててこの割り当て結果を示すディスパッチテーブル（プロセッサ割り当てテーブル）Ｔ１０を作成する処理と、ディスパッチテーブルＴ１０を共有メモリ１２に書込む処理とを含んでいる。
【００２９】
インタフェースＩ／Ｆ１〜Ｉ／Ｆ６は、リング状に接続された伝送路１４に接続され、伝送路１４に沿ってデータ転送を可能としている。相互にデータ転送が可能であれば、このようなリング形態ではなく、例えば、１つあるいは複数のバスを用いて、各プロセッサＰ１〜Ｐ４と共有メモリ１２を接続してもよい。あるいは、あるプロセッサを他の全てのプロセッサに直接接続する形態をとってもよい。マルチプロセッサ計算機１０は、プロセッサの接続方式として、バス型、格子型、リング型など、様々な接続方式が利用可能となっている。
【００３０】
次に、各プロセッサＰ１〜Ｐ４により実行される、処理とタスクとスレッドの概念について図３を用いて説明する。マルチプロセッサ計算機１０は、一つあるいは複数の処理２０を実行する。ここで、処理２０は、例えば複数のタスク２１〜２４で構成される。各タスク２１〜２４は、利用プロセッサ数と同数のスレッドで構成される。例えば利用プロセッサ数２のタスク２１は、２つのスレッド２１ａ，２１ｂで構成される。他のタスクは、例えば次のように構成される。タスク２２はスレッド２２ａで構成される。タスク２３はスレッド２３ａ，２３ｂで構成される。タスク２４はスレッド２４ａで構成される。
【００３１】
各タスクに含まれるスレッドは、個々にプロセッサに割り当てられ、ジョブとして実行される。例えばタスク２１が周期的に実行される場合、スレッド２１ａ，２１ｂに対して周期的にプロセッサが割り当てられ、周期ごとにジョブとして実行される。
【００３２】
なお、処理の中には、タスク間の実行順序を指定する先行制約により、処理の進行を制御するものがある。例えば処理２０では、先行制約２５によりタスク２１をタスク２２より先に実行することを指定し、先行制約２６によりタスク２１をタスク２３より先に実行することを指定している。先行制約２５，２６の指定により、両タスク２２，２３は、タスク２１の終了後に実行される。また、処理２０では、先行制約２７によりタスク２２をタスク２４より先に実行することを指定し、先行制約２８によりタスク２３をタスク２４より先に実行することを指定している。先行制約２７，２８の指定により、タスク２４は、両タスク２２，２３の終了後に実行される。処理順序を指定する必要がない場合には、先行制約を用いてタスク間の実行順序を指定しなくてもよい。
【００３３】
次に、タスクのうち、実時間処理を実行するリアルタイムタスクに付与されるパラメータの一例を図４により述べる。例えばタスク２１には、予めパラメータ２１ｃが付加されている。パラメータには、利用プロセッサ数、実行期間（処理時間の長さ）、リリースタイム（処理開始可能時刻）、デッドライン（処理完了時刻）、周期、発熱量といった各データが含まれている。パラメータに周期が含まれている場合、実行期間、リリースタイム、デッドラインは、それぞれ、周期的に実行されるジョブの、その周期における、実行期間、リリースタイム、デッドラインを意味する。発熱量は、実行期間だけプロセッサがタスク２１を実行した場合に発生する熱量を示すデータである。タスクに複数のスレッドが含まれる場合には、発熱量をスレッド毎に指定可能となっている。
【００３４】
続いて、タスクの割り当て結果を示すディスパッチテーブルＴ１０と、プロセッサ毎の発熱量を管理するための発熱量管理テーブルＴ２０について図５を用いて説明する。
【００３５】
ディスパッチテーブルＴ１０は、例えばテーブル周期３０ｍｓで、図３に示した処理を各プロセッサＰ１〜Ｐ４に割り当てた結果を示している。ここで、ディスパッチテーブルＴ１０は、プロセッサテーブルＴ１１、タスク割り当てテーブルＴ１２、タスク割り当て票Ｔ１３〜Ｔ１６で構成されている。
【００３６】
プロセッサテーブルＴ１１は、タスク割り当てテーブルＴ１２内の第１〜第４割り当てＩＤに個別に結合するように、各プロセッサＰ１〜Ｐ４の割り当てＩＤを保持するテーブルである。
【００３７】
タスク割り当てテーブルＴ１２は、各割り当てＩＤ毎に、対応するタスク割り当て票が、その開始時刻の順に繋がれている。各周期の時刻０〜１０ｍｓでは、タスク割り当て票Ｔ１３に示すように、プロセッサＰ１にはタスク１のスレッド１が、プロセッサＰ２にはスレッド２が、それぞれ割り当てられている。時刻１０〜２０ｍｓでは、タスク割り当て票Ｔ１４に示すように、プロセッサＰ１にはタスク２のスレッド１が、タスク割り当て票Ｔ１５に示すように、プロセッサＰ２にはタスク３のスレッド１が、プロセッサＰ３にはスレッド２が、それぞれ割り当てられている。時刻２０〜３０ｍｓでは、タスク割り当て票Ｔ１６が示すように、プロセッサＰ１にはタスク４のスレッド１が割り当てられている。
【００３８】
ディスパッチテーブルＴ１０は、各プロセッサと実行するスレッドとの対応が取れれば、どのような形式のテーブルでも良い。  
発熱量管理テーブルＴ２０は、各プロセッサＰ１，Ｐ２，…，Ｐ４のＩＤ毎に、割り当てられたタスクの発熱量を累積した値（累積発熱量）が記憶されるテーブルである。ここでは、発熱量管理テーブルＴ２０をプロセッサテーブルＴ１０に結合した例を示しているが、これに限らず、発熱量管理テーブルＴ２０内に各プロセッサのＩＤと累積発熱量とを関連付けて保持する構成としてもよい。
【００３９】
次に、以上のように構成されたマルチプロセッサ計算機の動作を図６〜図８のフローチャートを用いて述べる。始めに全体動作を述べ、以下、スタティックスケジューリング動作及びディスパッチ動作の順に詳述する。
【００４０】
（全体動作）
システム起動後、制御用ＩＣ１３は、図６に示すように、システムで実行すべきタスクがあるか否かを確認する（ＳＴ１０）。実行すべきタスクがない場合、システムを終了すべきか確認する（ＳＴ２０）。ステップＳＴ１０において、実行すべきタスクがある場合には、各タスクに付加された発熱量データを各プロセッサＰ１〜Ｐ４毎に累積した値が略均一になるように、発熱量を考慮したスタティックスケジューリングを行う（ＳＴ３０）。なお、スタティックスケジューリングの詳細は後述する。
【００４１】
スケジューリングの完了後、制御用ＩＣ１３は、スケジューリング結果を表すディスパッチテーブルＴ１０を基に、スレッドのディスパッチを行う（ＳＴ５０）。制御用ＩＣ３０は、ディスパッチ後に実行すべきタスクに変化があったか確認し（ＳＴ６０）、変化が無かった場合には、ディスパッチを継続する。変化があった場合にはステップＳＴ１０に戻る。
【００４２】
（ＳＴ３０：スタティックスケジューリング処理）
制御用ＩＣ１３は、図７に示すように、実行する全タスクからテーブル周期を決定する（ＳＴ３１）。テーブル周期は、事前に一つに決めておいてもよい。あるいは、全てのタスクの周期の最小公倍数を用いてもよい。この場合、各タスクはテーブル周期をタスク周期で割った回数だけ、複製される。
【００４３】
次に、制御用ＩＣ１３は、テーブル周期内の時刻であるスケジューリング時刻や各プロセッサの累積発熱量を初期化する（ＳＴ３２）。以降、スケジューリング時刻にどのタスクにプロセッサを割り当てるのかを決定する。
【００４４】
まず、制御用ＩＣ１３は、プロセッサが割り当てられていないタスクが残っているか確認する（ＳＴ３３）。プロセッサ未割り当てタスクが無い場合には、ステップＳＴ４４に進んでスケジューリング結果を出力し、スケジューリングを終了する。
【００４５】
プロセッサ未割り当てタスクがある場合、現在のスケジューリング時刻で実行可能なタスクがあるか確認する（ＳＴ３４）。全てのタスクのリリースタイムが０であったり、先行制約の指定が無かったりする場合には、プロセッサ未割り当てタスクはすべて実行可能タスクであるので、その場合には、本ステップを省略することができる。
【００４６】
実行可能タスクがある場合には、その中からタスクを１つ選択する（ＳＴ３５）。次に、選択されたタスクの利用プロセッサ数だけプロセッサに空きがあるか確認する（ＳＴ３６）。プロセッサに空きがある場合には、制御用ＩＣ１３は、各タスク毎の発熱量データと発熱量管理テーブルＴ２０とを参照し、各プロセッサＰ１〜Ｐ４の累積発熱量を互いに均一にするように、タスクにプロセッサを割り当てる（ＳＴ３７）。
【００４７】
この割り当ての際に、タスクの利用プロセッサと同数の空きプロセッサしかない場合、空きプロセッサを全て該当タスクに割り当てる。タスクの利用プロセッサよりも空きプロセッサが多い場合には、最も累積発熱量が少ないプロセッサを優先的に該当タスクに割り当てる。この様に割り当てれば、各プロセッサの累積発熱量を均一化でき、特定プロセッサの過熱によるシステム停止を回避することができる。
【００４８】
ステップＳＴ３７の完了後、発熱量管理テーブルＴ２０内の該当プロセッサの累積発熱量に、今回割り当てたタスクの発熱量を加算し（ＳＴ３８）、該当プロセッサの累積発熱量を更新する。プロセッサの累積発熱量の計算は、各タスクあるいはタスクを構成するスレッドに付加された発熱量に関するパラメータを用いる。発熱量のパラメータは、例えば、事前に実機上でタスクを実行し、その時の発熱量を実測した値を用いることができる。あるいは、温度モデルを用いた計算機シミュレーションの結果を用いても良い。
【００４９】
また、プロセッサの発熱に関する指標として、プロセッサの累積発熱量の代わりに、プロセッサの過渡的な温度変化を用いることができる。各タスクあるいはタスクを構成するスレッドに付加された発熱量に関するパラメータを基に、温度モデルを用いた非定常熱伝導シミュレーションを行うことにより、単純な累積発熱量よりも正確にプロセッサ温度を予測することが可能となる。
【００５０】
ステップＳＴ３８の完了後、制御用ＩＣ１３は、他の実行可能タスクを処理するためにステップＳＴ３４に戻る。プロセッサに空きが無い場合には、全ての実行可能タスクを確認したか判断し（ＳＴ３９）、まだ全ての実行可能タスクを確認していない場合には、ステップＳＴ３５のタスクの選択に戻り、他のタスクを選択する。
【００５１】
ステップＳＴ３４において、実行可能タスクが無い場合や、ステップＳＴ３９において、全てのタスクの確認が終了した場合には、スケジューリング時刻を次のイベントが発生する時刻まで進める（ＳＴ４０）。イベント発生時刻には、空きプロセッサの数が変化する時刻、すなわち、現在プロセッサが割り当てられているタスクの実行期間の終了時刻や、プロセッサ未割り当てタスクのリリース時刻などがある。
【００５２】
スケジューリング時刻を進めた結果、スケジューリング結果がテーブル周期を超えると判断できる場合（ＳＴ４１）、スケジューリング不可能と出力し（ＳＴ４２）スケジューリングを終了する。この時、制御用ＩＣ１３は、ステップＳＴ３５におけるタスク選択の順序を変更し、再度スケジューリングしなおしてもよい。
【００５３】
スケジューリング結果がテーブル周期を超えると判断する際、例えば、現在のスケジューリング時刻がテーブル周期よりも大きいかという比較が利用できる。また、現在のスケジューリング時刻はテーブル周期以内であるが、プロセッサ未割り当てタスクから、今後のスケジューリングがテーブル周期以内で終わらないことを判断してもよい。例えば、プロセッサ未割り当てタスクの実行に必要な処理能力が、テーブル周期の残りの処理能力より大きい場合には、その時点で、スケジューリング不可能と判断することができる。
【００５４】
ステップＳＴ４１で、周期を超えないと判断された場合には、その時刻に発生するイベントによって引き起こされる、プロセッサやプロセッサ未割り当てタスクの状態を変更し（ＳＴ４３）、ステップＳＴ３３から処理を再開する。
【００５５】
（ＳＴ５０：１周期分のディスパッチ処理）
制御用ＩＣ１３は、図８に示すように、各プロセッサＰ１〜Ｐ４の現在のタスク割り当て票を、タスク割り当てテーブルＴ１２の先頭に繋がれたタスク割り当て票に設定する（ＳＴ５１）。次に、制御用ＩＣ１３は、全てのタスク割り当て票に関する処理が終了したか確認する（ＳＴ５２）。終了している場合には、１周期分のディスパッチを終了する。終了していない場合には、全てのタスク割り当て票の開始時刻あるいは終了時刻のうち、現在時刻以降最も早い時刻になるまで待つ（ＳＴ５３）。
【００５６】
最も早い時刻になった場合、制御用ＩＣ１３は、全てのプロセッサＰ１〜Ｐ４に対して以下の処理を行う（ＳＴ５４）。
【００５７】
現在のタスク割り当て票の終了時刻が現在の時刻と等しいか確認する（ＳＴ５５）。等しい場合には、実行中のスレッドを停止し（ＳＴ５６）、現在のタスク割り当て票を、次のタスク割り当て票に変更する（ＳＴ５７）。
【００５８】
続いて、現在のタスク割り当て票の開始時刻が現在の時刻と等しいか確認する（ＳＴ５８）。等しい場合には、タスク割り当て票で指定されたスレッドの実行を開始する（ＳＴ５９）。全てのプロセッサに対する処理が終了した後、ステップＳＴ５２に戻る。
【００５９】
上述したように本実施形態によれば、各プロセッサに各タスクを割り当てる際に、制御用ＩＣ１３が、各タスクに付加された発熱量データを、各プロセッサ毎に累積した値が略均一になるように、各プロセッサに各タスクを割り当てるので、各プロセッサ間で発熱量を均一にでき、過熱による処理停止の発生を抑制することができる。
【００６０】
（第２の実施形態）
次に、本発明の第２の実施形態に係るマルチプロセッサ計算機について図１〜図５を参照しながら説明する。  
本実施形態は、第１の実施形態の変形例であり、累積発熱量を考慮したスタティックスケジューリングを行わず、通常のスタティックスケジューリングの後に、プロセッサ温度を考慮してスケジューリング結果を修正するものである。
【００６１】
これに伴い、制御用ＩＣ１３は、前述した図６及び図７の動作に代えて、図９及び図１０に示す動作を実行するものとなっている。
【００６２】
（全体動作）
システム起動後、制御用ＩＣ１３は、図９に示すように、システムで実行すべきタスクがあるか否かを確認する（ＳＴ１０）。実行すべきタスクがない場合、システムを終了すべきか確認する（ＳＴ２０）。ステップＳＴ１０において、実行すべきタスクがある場合には、タスク発熱量を考慮しないスタティックスケジューリングを行う（ＳＴ３０Ｘ）。ここでのスタティックスケジューリングは、図１０に示すように、ステップＳＴ３７Ｘにてタスク発熱量を考慮しない点と、ステップＳＴ３８が無い点とが図７とは異なるものである。
【００６３】
スケジューリングの完了後、制御用ＩＣ１３は、各温度センサｔｓ１〜ｔｓ４により得られるプロセッサ温度とスケジューリング結果とを基に、各プロセッサ温度が略均一になるように、ディスパッチテーブルＴ１０を修正する。具体的にはディスパッチテーブルＴ１０において、プロセッサテーブルＴ１１内の各プロセッサＰ１〜Ｐ４の各ＩＤと、タスク割り当てテーブルＴ１２内の各割り当てＩＤとの関係を変更する（ＳＴ４５）。
【００６４】
ここで、関係を変更する際の基準としては、例えば、単純に、プロセッサとタスク割り当てテーブルの関係を順にずらしていくこともできる。この例は第３の実施形態で詳述する。あるいは、最も温度の低いプロセッサに対して、優先的に総発熱量が大きいタスク割り当てテーブルを関係付けることができる。また、温度モデルを用い、現在のプロセッサ温度とタスク割り当てテーブルを用いて非定常熱伝導シミュレーションを行い、最もプロセッサ温度が低くなるような組合せを用いることもできる。
【００６５】
ステップＳＴ４５の完了後、制御用ＩＣ１３は、テーブル周期の１周期分のディスパッチが完了したか確認する（ＳＴ４６）。続いて、ディスパッチテーブルを基に、スレッドのディスパッチを行う（ＳＴ５０）。ステップＳＴ５０のディスパッチは、図８に述べた通りである。
【００６６】
以下、制御用ＩＣ１３は、ディスパッチ後に実行すべきタスクに変化があったか確認し（ＳＴ６０）、変化が無かった場合には、ディスパッチを継続する。変化があった場合には、実行すべきタスクがあるか確認するステップＳＴ１０に戻る。
【００６７】
上述したように本実施形態によれば、制御用ＩＣ１３が、各プロセッサに各タスクを割り当てた後、各プロセッサＰ１〜Ｐ４の温度が略均一になるように、割り当て結果を修正するので、各プロセッサ間で発熱量を均一にでき、過熱による処理停止の発生を抑制することができる。
【００６８】
なお、図９のフローチャートでは、１周期分のディスパッチをまとめて行ってから、プロセッサＰ１〜Ｐ４とタスク割り当てテーブルＴ１２の関係を変更したが、これに限らず、複数のプロセッサ上で同時に実行するスレッドが入れ替わる場合や、空きプロセッサがある際に一つ以上のプロセッサ上で実行するスレッドが入れ替わる場合にも、それらのプロセッサ間でタスク割り当てテーブルＴ１２内の割り当てＩＤを交換することもできる。
【００６９】
（第３の実施形態）
次に、本発明の第３の実施形態に係るマルチプロセッサ計算機について図１〜図５及び図９を参照しながら説明する。
【００７０】
本実施形態は、第２の実施形態の具体例であり、ステップＳＴ４５において、プロセッサ温度を考慮してスケジューリング結果を修正する際に、各プロセッサ間の相対位置を一定に保持するものである。
【００７１】
図１１に、リング型を考慮したプロセッサとタスク割り当てテーブルとの関係を変更するための方式を示す。
【００７２】
マルチプロセッサの結合方式がリング型である場合、データ交換を行うスレッドの組において、スレッドを実行するプロセッサの相対位置が変化すると、データ転送能力が変化する。この結果、該当スレッドによって構成されたアプリケーションの挙動が不安定になり、場合によっては障害が発生する可能性がある。そのため、スレッドを実行するプロセッサの相対位置を保存したまま、発熱量を均一化することが望ましい。
【００７３】
現在のプロセッサとタスク割り当てテーブルとの関係が、プロセッサテーブルＴ１１とタスク割り当てテーブルＴ１２で構成されるディスパッチテーブルＴ１０ａで示されるとする。ディスパッチテーブルＴ１０ａは、プロセッサの相対位置を保存しつつ、プロセッサとタスク割り当てテーブルの関係を変更する場合、７種類のディスパッチテーブルＴ１０ｂ〜Ｔ１０ｈに変更可能である。
【００７４】
制御用ＩＣ１３は、元のディスパッチテーブルＴ１０ａも含め、全てのディスパッチテーブルＴ１０ｂ〜Ｔ１０ｈに対し、現在のプロセッサ温度と、プロセッサテーブルＴ１１とタスク割り当てテーブルＴ１２の関係を用いて、プロセッサの温度変化を予測する。その予測結果を基に、全てのディスパッチテーブルＴ１０ａ〜Ｔ１０ｈの中から、最も発熱量を均一化できるディスパッチテーブルを選択する。
【００７５】
ここで、プロセッサの温度変化を予測する方法としては、例えば、プロセッサ温度と、タスク割り当てテーブルＴ１２の各割り当てＩＤ毎のタスクの総発熱量を用いることができる。
【００７６】
プロセッサ温度は、例えば、プロセッサＰ１〜Ｐ４に取り付けた温度センサｔｓ１〜ｔｓ４等で測定される。あるいは、プロセッサ温度に代えて、各タスクあるいはタスクを構成するスレッドに付加された発熱量に関するパラメータを基に、プロセッサの累積発熱量を用いてもよい。
【００７７】
各割り当てＩＤ毎の総発熱量は、例えば、各タスクあるいはタスクを構成するスレッドに付加された発熱量に関するパラメータを基に算出可能である。あるいは、以前にタスクを実行した際に、実測した温度変化を用いることができる。
【００７８】
また、温度変化を予測する方法としては、現在のプロセッサ温度とタスク割り当てテーブルＴ１２の総発熱量を基に、温度モデルを用いた非定常熱伝導シミュレーションを行うことにより、より正確にプロセッサ温度を予測する方式も使用可能となっている。
【００７９】
いずれにしても、制御用ＩＣ１３は、プロセッサの温度変化を予測し、予測結果を基に、各プロセッサＰ１〜Ｐ４の相対位置を保存したディスパッチテーブルＴ１０ａ〜Ｔ１０ｈのうち、最も発熱量を均一化できるディスパッチテーブルを選択する。これにより、制御用ＩＣ１３は、ステップＳＴ４５にてスケジューリング結果を修正する際に、各プロセッサＰ１〜Ｐ４の相対位置を一定に保持することができる。
【００８０】
上述したように本実施形態によれば、ステップＳＴ４５にてスケジューリング結果を修正する際に、各プロセッサ間の相対位置を一定に保持する構成により、第２の実施形態の作用効果に加え、データ転送能力の変化を防ぎ、アプリケーションの挙動を安定化させることができる。
【００８１】
なお、上記各実施形態に記載した手法は、コンピュータに実行させることのできるプログラムとして、磁気ディスク（フロッピー（登録商標）ディスク、ハードディスクなど）、光ディスク（ＣＤ−ＲＯＭ、ＤＶＤなど）、光磁気ディスク（ＭＯ）、半導体メモリなどの記憶媒体に格納して頒布することもできる。
【００８２】
また、この記憶媒体としては、プログラムを記憶でき、かつコンピュータが読み取り可能な記憶媒体であれば、その記憶形式は何れの形態であっても良い。
【００８３】
また、記憶媒体からコンピュータにインストールされたプログラムの指示に基づきコンピュータ上で稼働しているＯＳ（オペレーティングシステム）や、データベース管理ソフト、ネットワークソフト等のＭＷ（ミドルウェア）等が本実施形態を実現するための各処理の一部を実行しても良い。
【００８４】
さらに、本発明における記憶媒体は、コンピュータと独立した媒体に限らず、ＬＡＮやインターネット等により伝送されたプログラムをダウンロードして記憶または一時記憶した記憶媒体も含まれる。
【００８５】
また、記憶媒体は１つに限らず、複数の媒体から本実施形態における処理が実行される場合も本発明における記憶媒体に含まれ、媒体構成は何れの構成であっても良い。
【００８６】
尚、本発明におけるコンピュータは、記憶媒体に記憶されたプログラムに基づき、本実施形態における各処理を実行するものであって、パソコン等の１つからなる装置、複数の装置がネットワーク接続されたシステム等の何れの構成であっても良い。
【００８７】
また、本発明におけるコンピュータとは、パソコンに限らず、情報処理機器に含まれる演算処理装置、マイコン等も含み、プログラムによって本発明の機能を実現することが可能な機器、装置を総称している。
【００８８】
なお、本願発明は上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。
【図面の簡単な説明】
【００８９】
【図１】本発明の第１の実施形態に係るマルチプロセッサ計算機の構成を示す模式図である。
【図２】同実施形態におけるシステム構成を示す模式図である。
【図３】同実施形態における処理とタスクとスレッドの概念を説明するための模式図である。
【図４】同実施形態におけるパラメータを説明するための模式図である。
【図５】同実施形態における各テーブルを説明するための模式図である。
【図６】同実施形態における動作を説明するためのフローチャートである。
【図７】同実施形態における動作を説明するためのフローチャートである。
【図８】同実施形態における動作を説明するためのフローチャートである。
【図９】本発明の第２の実施形態に係るマルチプロセッサ計算機の動作を説明するためのフローチャートである。
【図１０】同実施形態における動作を説明するためのフローチャートである。
【図１１】本発明の第３の実施形態におけるディスパッチテーブルを変更するための方式を説明するための模式図である。
【符号の説明】
【００９０】
１０…マルチプロセッサ計算機、１１…基板、１２…共有メモリ、１３…制御用ＩＣ、１４…伝送路、２０…処理、２１〜２４…タスク、２１ａ，２１ｂ，２２ａ，２３ａ，２３ｂ，２４ａ…スレッド、２１ｃ…パラメータ、２５〜２８…先行制約、Ｉ／Ｆ１〜Ｉ／Ｆ６…インタフェース、Ｐ１〜Ｐ４…プロセッサＰ１〜Ｐ４、ｆ１〜ｆ４…冷却フィン、ｔｓ１〜ｔｓ５…温度センサ、Ｔ１０…ディスパッチテーブル、Ｔ１１…プロセッサテーブル、Ｔ１２…タスク割り当てテーブル、Ｔ１３〜Ｔ１６…タスク割り当て票、Ｔ２０…発熱量管理テーブル。
【図１】
2006106807.tif 000003
【図２】
2006106807.tif 000004
【図３】
2006106807.tif 000005
【図４】
2006106807.tif 000006
【図５】
2006106807.tif 000007
【図６】
2006106807.tif 000008
【図７】
2006106807.tif 000009
【図８】
2006106807.tif 000010
【図９】
2006106807.tif 000011
【図１０】
2006106807.tif 000012
【図１１】
2006106807.tif 000013