(57)【特許請求の範囲】
【請求項１】
各プロセッサが互いに通信する３以上のプロセッサを含み、タスク群の処理を行うマルチプロセッサシステムであって、
前記マルチプロセッサシステムを構成する各プロセッサ間の接続関係を反映した接続情報と、ＯＳに割り当てられているタスクの数に基づき前記マルチプロセッサシステムを構成するどの位置のプロセッサにどのＯＳを割り当てるかを示す動作パターン情報と、前記マルチプロセッサシステム上で動作させるＯＳごとに割り当てられているタスクの数を示すＯＳタスク対応情報とを記憶する記憶手段と、
前記マルチプロセッサシステムを構成する各プロセッサにタスクが割り当てられたＯＳを割り当てて動作させることにより、当該各プロセッサへのタスクの割り当てを行うタスク管理手段とを備え、
前記タスク管理手段は、前記タスクの割り当てにおいて、（１）前記記憶手段に記憶されているＯＳタスク対応情報に基づいて、前記マルチプロセッサシステム上で動作させるＯＳごとに割り当てられているタスクの数を特定し、（２）前記記憶手段に記憶されている接続情報および動作パターン情報に基づいて、前記マルチプロセッサシステムを構成するプロセッサであってタスクの割り当てられた第１のプロセッサと、前記マルチプロセッサシステムを構成するプロセッサであって、直接接続されるプロセッサのうちタスクの割り当てられるプロセッサの数が前記第１のプロセッサよりも少ない第２のプロセッサとについては、前記第１のプロセッサに割り当てられるタスクの量が前記第２のプロセッサに割り当てられるタスクの量以上となるように前記タスクの割り当てを行う
ことを特徴とするマルチプロセッサシステム。
【請求項２】
前記タスク管理手段は、所定の時間ごとに前記タスクの割り当てを行い、所定の場合に、割り当てるタスクの量が最多となるプロセッサが直前に割り当てていたタスクの量が最多のプロセッサ以外となるように前記タスクの割り当てを行う、
ことを特徴とする請求項１記載のマルチプロセッサシステム。
【請求項３】
前記タスク管理手段によって各プロセッサに割り当てられたタスクの量に基づいて、各プロセッサの動作周波数を決定する動作周波数決定手段と、
前記動作周波数決定手段によって決定された動作周波数で各プロセッサを動作させる動作制御手段とを備え、
前記動作周波数決定手段は、前記動作周波数の決定において、前記第１のプロセッサと前記第２のプロセッサとについては、前記第１のプロセッサの動作周波数が前記第２のプロセッサの動作周波数以上となるように前記動作周波数の決定を行う
ことを特徴とする請求項２記載のマルチプロセッサシステム。
【請求項４】
前記動作周波数決定手段によって決定された前記プロセッサの各々の動作周波数に基づいて、第１の動作周波数で動作するプロセッサと当該第１の動作周波数未満の動作周波数である第２の動作周波数で動作するプロセッサとが存在する場合に、前記第１の動作周波数で動作するプロセッサの動作電圧が前記第２の動作周波数で動作するプロセッサの動作電圧以上となるように、各プロセッサの動作電圧を決定する動作電圧決定手段と、
前記動作電圧決定手段で決定された動作電圧を各プロセッサに供給する電圧供給手段とを備える
ことを特徴とする請求項３記載のマルチプロセッサシステム。
【請求項５】
前記動作周波数決定手段は、前記決定する動作周波数の決定を、タスクが割り当てられていないプロセッサが存在する場合に、当該プロセッサの動作周波数が０ヘルツとなるように行う
ことを特徴とする請求項３記載のマルチプロセッサシステム。
【請求項６】
前記タスク管理手段は、前記タスクの割り当てを、タスクが割り当てられる各プロセッサが直接接続するプロセッサのうちの少なくとも１つは、タスクが割り当てられるプロセッサとなるように行う
ことを特徴とする請求項１記載のマルチプロセッサシステム。
【請求項７】
前記タスクの量が、タスクの数である
ことを特徴とする請求項１記載のマルチプロセッサシステム。
【請求項８】
前記マルチプロセッサシステムに含まれる全てのプロセッサは、３次元状に配置される
ことを特徴とする請求項１記載のマルチプロセッサシステム。
【請求項９】
各プロセッサが互いに通信する３以上のプロセッサを含み、タスク群の処理を行うマルチプロセッサシステムであって、
前記マルチプロセッサシステムを構成する各プロセッサ間の接続関係を示す接続情報を記憶する記憶手段と、
前記マルチプロセッサシステムを構成する各プロセッサへのタスクの割り当てを行うタスク管理手段とを備え、
前記タスク管理手段は、（１）前記マルチプロセッサシステムを構成するプロセッサ上で動作するＯＳから当該ＯＳ上でスケジューリングの対象とされるタスクの数に基づいて、当該ＯＳを実行するプロセッサに割り当てられるタスクの数を算定し、（２）前記マルチプロセッサシステムを構成する各プロセッサに割り当てられるタスクの数および当該各プロセッサに割り当てられるタスクの上限値を示す数に基づいて、割り当てられるプロセッサの数およびプロセッサに割り当てられるタスクの数とを算定し、（３）前記割り当てられるプロセッサの数、前記各プロセッサに割り当てられるタスクの数、および前記接続情報に基づいて、前記マルチプロセッサシステムを構成するプロセッサであってタスクの割り当てられた第１のプロセッサと、前記マルチプロセッサシステムを構成するプロセッサであって、 直接接続されるプロセッサのうちタスクの割り当てられるプロセッサの数が前記第１のプロセッサよりも少ない第２のプロセッサとについては、前記第１のプロセッサに割り当てられるタスクの量が前記第２のプロセッサに割り当てられるタスクの量以上となるように前記タスクの割り当てを行う
ことを特徴とするマルチプロセッサシステム。
【請求項１０】
各プロセッサが互いに通信する３以上のプロセッサと、プロセッサ間の接続関係を反映した接続情報、ＯＳに割り当てられているタスクの数に基づきどの位置のプロセッサにどのＯＳを割り当てるかを示す動作パターン情報、およびＯＳごとに割り当てられているタスクの数を示すＯＳタスク対応情報を記憶する記憶手段とを含み、タスク群の処理を行うマルチプロセッサシステムを制御するマルチプロセッサ制御方法であって、
前記マルチプロセッサシステムを構成する各プロセッサにタスクが割り当てられたＯＳを割り当てて動作させることにより、当該各プロセッサへのタスクの割り当てを行うタスク管理ステップを有し、
前記タスク管理ステップは、前記タスクの割り当てにおいて、（１）前記記憶手段に記憶されているＯＳタスク対応情報に基づいて、前記マルチプロセッサシステム上で動作させるＯＳごとに割り当てられているタスクの数を特定し、（２）前記記憶手段に記憶されている接続情報および動作パターン情報に基づいて、前記マルチプロセッサシステムを構成するプロセッサであってタスクの割り当てられた第１のプロセッサと、前記マルチプロセッサシステムを構成するプロセッサであって、直接接続されるプロセッサのうちタスクの割り当てられるプロセッサの数が前記第１のプロセッサよりも少ない第２のプロセッサとについては、前記第１のプロセッサに割り当てられるタスクの量が前記第２のプロセッサに割り当てられるタスクの量以上となるように前記タスクの割り当てを行う
ことを特徴とするマルチプロセッサ制御方法。
【請求項１１】
各プロセッサが互いに通信する３以上のプロセッサを含み、タスク群の処理を行うマルチプロセッサ集積回路であって、
前記マルチプロセッサ集積回路を構成する各プロセッサ間の接続関係を反映した接続情報と、ＯＳに割り当てられているタスクの数に基づき前記マルチプロセッサ集積回路を構成するどの位置のプロセッサにどのＯＳを割り当てるかを示す動作パターン情報と、前記マルチプロセッサ集積回路上で動作させるＯＳごとに割り当てられているタスクの数を示すＯＳタスク対応情報とを記憶する記憶手段と、
前記マルチプロセッサ集積回路を構成する各プロセッサにタスクが割り当てられたＯＳを割り当てて動作させることにより、当該各プロセッサへのタスクの割り当てを行うタスク管理手段とを備え、
前記タスク管理手段は、前記タスクの割り当てにおいて、（１）前記記憶手段に記憶されているＯＳタスク対応情報に基づいて、前記マルチプロセッサ集積回路上で動作させるＯＳごとに割り当てられているタスクの数を特定し、（２）前記記憶手段に記憶されている接続情報および動作パターン情報に基づいて、前記マルチプロセッサ集積回路を構成するプロセッサであってタスクの割り当てられた第１のプロセッサと、前記マルチプロセッサ集積回路を構成するプロセッサであって、直接接続されるプロセッサのうちタスクの割り当てられるプロセッサの数が前記第１のプロセッサよりも少ない第２のプロセッサとについては、前記第１のプロセッサに割り当てられるタスクの量が前記第２のプロセッサに割り当てられるタスクの量以上となるように前記タスクの割り当てを行う
ことを特徴とするマルチプロセッサ集積回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のプロセッサからなるマルチプロセッサシステムに関する。
【背景技術】
【０００２】
複数のプロセッサが行列状に配置され、互いに隣接するプロセッサ同士が接続してなるマルチプロセッサシステムがある。
このようなマルチプロセッサシステムは、複数のプロセッサが並列にタスクを処理することができるため、単一のプロセッサからなるプロセッサシステムと比べて、単位時間当たりのタスク処理量が多くなるという特徴がある。
【０００３】
一方、デジタルテレビ、携帯電話機等の家電機器は、高機能化と共に低消費電力化が求められている。
家電機器等に搭載されるＬＳＩ（Large Scale Integration）の低消費電力化を実現するための技術として、例えば、電源島単位に電源制御を行う技術（特許文献１）等が知られている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特表２００７−５０１４７８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
上述のマルチプロセッサシステムにおいて、各プロセッサは、例えば、他のプロセッサのタスク処理結果を利用して自プロセッサに割り当てられているタスクの処理を行う場合等に、そのプロセッサと通信する必要がある。
【０００６】
互いに通信するプロセッサが直接接続されていない場合には、これらのプロセッサの接続経路上にあるプロセッサを経由して通信する。
通信するプロセッサの経路上のプロセッサは、通信する他のプロセッサの通信を実現するために、本来自プロセッサに割り当てられているタスクの処理に加えて、通信する他のプロセッサ間の通信に係るルーティング処理をも行わなければならない。
【０００７】
従って、上述のマルチプロセッサシステムでは、本来の処理対象であるタスクの処理に加えて、プロセッサ間の通信に係るルーティング処理が必要となる。
上述のマルチプロセッサシステムの低消費電力化を実現するためには、個々のプロセッサの低消費電力化の実現に加えて、上述のルーティング処理を効率よく行うことで、ルーティング処理に係る消費電力を小さくすることが求められる。
【０００８】
そこで本発明は、係る問題に鑑みてなされたものであり、効率よくルーティング処理を行えるように、各プロセッサにタスクを割り当てることができるマルチプロセッサシステムを提供することを目的とする。
【課題を解決するための手段】
【０００９】
上記課題を解決するために本発明に係るプロセッサシステムは、各プロセッサが互いに通信する３以上のプロセッサを含み、タスク群の処理を行うマルチプロセッサシステムであって、プロセッサ間の接続関係を反映した接続情報を記憶する記憶手段と、前記記憶手段に記憶されている接続情報を参照して、各プロセッサに処理させるタスクを割り当てるタスク管理手段とを備え、前記タスク管理手段は、前記タスクの割り当てにおいて、第１のプロセッサと、直接接続されるプロセッサのうちタスクの割り当てられているプロセッサの数が前記第１のプロセッサよりも少ない第２のプロセッサとについては、前記第１のプロセッサに割り当てられるタスクの量が前記第２のプロセッサに割り当てられるタスクの量以上となるように前記タスクの割り当てを行うことを特徴とする。
【発明の効果】
【００１０】
マルチプロセッサシステムにおいては、一般に、より多くの量のタスクを割り当てられているプロセッサの方が、より少ない量のタスクを割り当てられているプロセッサよりも、他のタスクの割り当てられているプロセッサとの通信量が多くなる傾向がある。
【００１１】
従って、上述の構成を備える本発明に係るマルチプロセッサシステムは、第２のプロセッサよりもタスクの割り当てられているプロセッサと接続する数の多い第１のプロセッサの方が、第２のプロセッサよりも割り当てられるタスクの量が多くなるように、各プロセッサにタスクを割り当てることができるようになるため、効率よくルーティング処理を行えるように、各プロセッサにタスクを割り当てることができるという効果を有する。
【００１２】
また、前記タスク管理手段によって各プロセッサに割り当てられたタスクの量に基づいて、各プロセッサの動作周波数を決定する動作周波数決定手段と、前記動作周波数決定手段によって決定された動作周波数で各プロセッサを動作させる動作制御手段とを備え、前記動作周波数決定手段は、前記動作周波数の決定において、前記第１のプロセッサと前記第２のプロセッサとについては、前記第１のプロセッサの動作周波数が前記第２のプロセッサの動作周波数以上となるように前記動作周波数の決定を行うことを特徴とするとしてもよい。
【００１３】
このような構成にすることによって、第１のプロセッサに割り当てられているタスクの量以下の量のタスクが割り当てられている第２のプロセッサの動作周波数を、第１のプロセッサの動作周波数以下とすることができるため、効率よく各プロセッサの動作周波数を決定することで、マルチプロセッサシステムの性能に対する消費電力の効率を良くすることができるという効果を有する。
【００１４】
また、前記動作周波数決定手段によって決定された前記プロセッサの各々の動作周波数に基づいて、第１の動作周波数で動作するプロセッサと当該第１の動作周波数未満の動作周波数である第２の動作周波数で動作するプロセッサとが存在する場合に、前記第１の動作周波数で動作するプロセッサの動作電圧が前記第２の動作周波数で動作するプロセッサの動作電圧以上となるように、各プロセッサの動作電圧を決定する動作電圧決定手段と、前記動作電圧決定手段で決定された動作電圧を各プロセッサに供給する電圧供給手段とを備えることを特徴とするとしてもよい。
【００１５】
このような構成にすることによって、第１の動作周波数未満の動作周波数である第２の動作周波数で動作するプロセッサの動作電圧を、第１の動作周波数で動作するプロセッサの動作電圧以下とすることができるため、効率よく各プロセッサの動作電圧を決定することで、マルチプロセッサシステムの性能に対する消費電力の効率を良くすることができるという効果を有する。
【００１６】
また、前記タスク管理手段は、前記タスクの割り当てを、タスクが割り当てられる各プロセッサが接続するプロセッサのうちの少なくとも１つは、タスクが割り当てられるプロセッサとなるように行うことを特徴とするとしてもよい。
【００１７】
このような構成にすることによって、タスクが割り当てられていないプロセッサにルーティング処理をさせることなく、タスクが割り当てられているプロセッサ間の通信を実現できるという効果を有する。
【００１８】
また、前記動作周波数決定手段は、前記決定する動作周波数の決定を、タスクが割り当てられていないプロセッサが存在する場合に、当該プロセッサの動作周波数が０ヘルツとなるように行うことを特徴とするとしてもよい。
【００１９】
このような構成にすることによって、タスクを割り当てられていないプロセッサの動作を停止することができるようになるため、タスクを割り当てられていないプロセッサの動作電力を０にすることができるという効果を有する。
【００２０】
また、前記タスクの量が、タスクの数であることを特徴とするとしてもよい。
マルチプロセッサシステムにおいては、一般に、より多くの数のタスクを割り当てられているプロセッサの方が、より少ない数のタスクを割り当てられているプロセッサよりも、他のタスクの割り当てられているプロセッサとの通信量が多くなる傾向がある。
【００２１】
また、一般に、プロセッサがタスクの数を数えるために必要な演算量は少ない。
従って、このような構成とすることによって、タスクの量を算定するための消費電力が少ないマルチプロセッサシステムを提供することができるという効果を有する。
【００２２】
また、前記タスク管理手段は、時間の経過を測定するタイマを備え、前記タスクの割り当てを、所定時間毎に、割り当てるタスクの量が最多となるプロセッサが直前に割り当てていたタスクの量が最多のプロセッサ以外となるように行う、ことを特徴とするとしてもよい。
【００２３】
マルチプロセッサシステムにおいては、一般に、割り当てられているタスクの量が最多のプロセッサの単位時間当たりの発熱量は、全てのプロセッサの中で最多となる傾向にある。
【００２４】
また、プロセッサは、所定の温度以上になると、正しく動作しなくなる状態（熱暴走状態）となる場合があり、温度の高いプロセッサで処理を実行すると、温度の低いプロセッサで実行した場合に比べて、消費電力量が大きくなる。
【００２５】
加えて、温度の高いプロセッサで継続して処理を実行すると、熱による劣化で、故障発生率が高くなることが知られている。
従って、このような構成にすることによって、所定時間毎に、割り当てられているタスクの量が最多のプロセッサが変わるようになるため、タスクの量が最多のプロセッサを意図的に変えない場合に比べて、熱暴走状態になるプロセッサの出現する可能性を低くすることができ、消費電力量の増加を抑制し、故障発生率が高くなるのを抑制するという効果を有する。
【００２６】
また、前記マルチプロセッサシステムに含まれる全てのプロセッサは１つの半導体集積回路内に行列状に配置され、各プロセッサは、互いに同じ形状の長方形であって、隣接する他のプロセッサと直接接続することを特徴とするとしてもよい。
【００２７】
このような構成にすることによって、１つの半導体集積回路内に全てのプロセッサを集積しない場合に比べて、プロセッサ間の通信の際に消費する電力を少なくすることができるという効果を有する。
【図面の簡単な説明】
【００２８】
【図１】マルチプロセッサＬＳＩ１００内のプロセッサの接続関係を示す図
【図２】マルチプロセッサＬＳＩ１００内の電源ブロックの構成を示すブロック図
【図３】クロック制御部２０２のブロック図
【図４】電源ブロックＭ２２３の構成を示すブロック図
【図５】電源選択回路の構成を示すブロック図
【図６】マルチプロセッサＬＳＩ１００上で動作するモジュールを示すブロック図
【図７】ＯＳタスク対応情報のデータ構成図
【図８】電圧周波数情報のデータ構成図
【図９】動作パターン情報を図面で表現した図
【図１０】起動処理のフローチャート
【図１１】タスクの割り当てられているＯＳが７つの場合の動作パターン情報を図面で表現した図
【図１２】具体例における各プロセッサの動作周波数と電源電圧とを示す図
【図１３】電源選択回路１３００の構成を示すブロック図
【図１４】変形マルチプロセッサＬＳＩ上で動作するモジュールを示すブロック図
【図１５】変形電圧周波数情報
【図１６】接続情報のデータ構成図
【図１７】起動処理のフローチャート
【図１８】システム負荷管理処理のフローチャート
【図１９】プロセッサ選択処理のフローチャート
【図２０】変形マルチプロセッサＬＳＩ上で動作するモジュールを示すブロック図
【図２１】変形システム負荷管理処理のフローチャート
【図２２】変形プロセッサ選択処理のフローチャート
【図２３】具体例における各プロセッサに割り当てられたＯＳとタスク数とを示す図
【図２４】１８個のプロセッサが３次元状に配置された例を示す図
【発明を実施するための形態】
【００２９】
＜実施の形態１＞
以下、本発明に係るマルチプロセッサシステムの一実施形態として、２５個のプロセッサが、５×５の行列状に配置されたマルチプロセッサＬＳＩを用いて実現されるマルチプロセッサシステムについて説明する。
【００３０】
このマルチプロセッサＬＳＩを構成するプロセッサの各々は、それぞれ互いに独立な動作周波数と動作電圧とで動作することが可能となっている。
マルチプロセッサＬＳＩ上では、ハイパーバイザと、ハイパーバイザ上で動作する複数のＯＳと、ＯＳに割り当てられたタスクとが動作する。
【００３１】
ハイパーバイザは、各ＯＳをそれぞれ１つのプロセッサに割り当てて、その割り当てたプロセッサ上でそのＯＳを動作させる。
以下、本実施の形態１に係るマルチプロセッサシステムの構成について、図面を参照しながら説明する。
【００３２】
＜構成＞
図１は、マルチプロセッサＬＳＩ１００に配置されている２５個のプロセッサＡ１１１〜プロセッサＹ１３５の接続関係を示す図である。
【００３３】
同図に示す通り、プロセッサＡ１１１〜プロセッサＹ１３５は５×５の行列状に配置されている。これら２５個のプロセッサは、互いに同じ機能を持った同じ形状のプロセッサであり、互いに他のプロセッサと通信しながら、互いに並列に動作する。
【００３４】
専用通信線群１４１〜専用通信線群１８０は、隣接するプロセッサ間を接続する通信線群である。
各プロセッサは、専用通信線群を介して隣接する他のプロセッサと接続する。
【００３５】
互いに隣接するプロセッサ同士の通信は、専用通信線群を用いて直接行われ、互いに隣接しないプロセッサ同士の通信は、これらのプロセッサの接続経路上にあるプロセッサを経由して通信する。
【００３６】
通信するプロセッサの経路上のプロセッサは、通信する他のプロセッサの通信を実現するために、本来自プロセッサに割り当てられているタスクの処理に加えて、通信する他のプロセッサ間の通信に係るルーティング処理を行う。
【００３７】
例えば、プロセッサＡ１１１とプロセッサＤ１１４とは、プロセッサＢ１１２とプロセッサＣ１１３とを介して通信を行う。
図２は、マルチプロセッサＬＳＩ１００内の電源ブロックの構成を示すブロック図である。
ここで電源ブロックとは、電源電圧を共通とする複数の回路からなるブロックであり、各電源ブロックは互いに独立な電源電圧で動作する。
【００３８】
同図に示す通り、マルチプロセッサＬＳＩ１００は、固定電位電源ブロック２０１と、電源ブロックＡ２１１〜電源ブロックＹ２３５との２６個の電源ブロックを有する。
固定電位電源ブロック２０１は、電源電圧が１．２Ｖに固定された電源ブロックであり、クロック制御部２０２と電圧制御部２０３とを備える。
【００３９】
クロック制御部２０２は、マルチプロセッサＬＳＩ１００上で動作するハイパーバイザによって制御され、電源ブロックＡ２１１〜電源ブロックＹ２３５のそれぞれに、クロック信号であるClockA２７１〜ClockY２９５を供給する機能を有する。
【００４０】
ここで、ClockA２７１〜ClockY２９５の各々は、互いに独立に、８００ＭＨｚ、６００ＭＨｚ、３００ＭＨｚ、１００ＭＨｚ、０Ｈｚのうちのいずれか１つの周波数に設定される。
【００４１】
図３は、クロック制御部２０２のブロック図である。
クロック制御部２０２は、２４００ＭＨｚＰＬＬ（Phase Locked Loop）３０１、１／３分周回路３０２、１／４分周回路３０３、１／８分周回路３０４、１／２４分周回路３０５、５−１セレクタ３１１〜５−１セレクタ３３５等から構成され、ClockA２７１〜ClockY２９５の２５個のクロック信号を出力する。
【００４２】
ClockA２７１〜ClockY２９５のそれぞれは、８００ＭＨｚ、６００ＭＨｚ、３００ＭＨｚ、１００ＭＨｚ、０Ｈｚのうちのいずれか１つの周波数となる。
２４００ＭＨｚＰＬＬ３０１は、周波数２．４ＧＨｚのクロック信号を出力するＰＬＬである。
【００４３】
１／３分周回路３０２は、２４００ＭＨｚＰＬＬ３０１の２．４ＧＨｚの出力信号を３分周して８００ＭＨｚの信号を出力する。１／４分周回路３０３は、２４００ＭＨｚＰＬＬ３０１の２．４ＧＨｚの出力信号を４分周して６００ＭＨｚの信号を出力する。１／８分周回路３０４は、２４００ＭＨｚＰＬＬ３０１の２．４ＧＨｚの出力信号を８分周して３００ＭＨｚの信号を出力する。１／２４分周回路３０５は、２４００ＭＨｚＰＬＬ３０１の２．４ＧＨｚの出力信号を２４分周して１００ＭＨｚの信号を出力する。
【００４４】
５−１セレクタ３１１〜５−１セレクタ３３５は、１／３分周回路３０２の８００ＭＨｚの出力信号、１／４分周回路３０３の６００ＭＨｚの出力信号、１／８分周回路３０４の３００ＭＨｚの出力信号、１／２４分周回路３０５の１００ＭＨｚの出力信号、ＶＳＳ電位のグラウンド３０６のうちのいずれか１つを選択してクロック信号として出力する５入力セレクタである。
【００４５】
５−１セレクタ３１１〜５−１セレクタ３３５のそれぞれは、マルチプロセッサＬＳＩ１００上で動作するハイパーバイザによって互いに独立に制御される。
上述の構成により、クロック制御部２０２は、それぞれ８００ＭＨｚ、６００ＭＨｚ、３００ＭＨｚ、１００ＭＨｚ、０Ｈｚのうちのいずれか１つの周波数のクロック信号であるClockA２７１〜ClockY２９５を出力する。
【００４６】
また、クロック制御部２０２は、マルチプロセッサＬＳＩ１００の起動時に、中央位置のプロセッサであるプロセッサＭへのクロック信号ClockM２８３に８００ＭＨｚのクロック信号を出力するように設定されている。
【００４７】
再び図２に戻って、マルチプロセッサＬＳＩ１００内の電源ブロックの構成の説明を続ける。
電圧制御部２０３は、マルチプロセッサＬＳＩ１００上で動作するハイパーバイザによって制御され、電源ブロックＡ２１１〜電源ブロックＹ２３５のそれぞれに、電源ブロックの電源電圧を示す信号である電圧信号Ａ２４１〜電圧信号Ｙ２６５を出力する機能を有する。
【００４８】
電圧信号Ａ２４１〜電圧信号Ｙ２６５のそれぞれは、１．２Ｖ、１．１Ｖ、１．０Ｖ、０．８Ｖ、０Ｖのうちいずれか１つの電圧を示す信号である。
また、電圧制御部２０３は、マルチプロセッサＬＳＩ１００の起動時に、電圧信号Ｍ２５３として１．２Ｖの電圧を示す信号を出力するように設定されている。この設定は、起動時にプロセッサＭ１２３を電源電圧１．２Ｖで動作させるために設定されている。
【００４９】
マルチプロセッサＬＳＩ１００の電源は、そのチップ全体に、電圧が１．２Ｖのメッシュ構造配線である１．２Ｖ電源配線と、電圧が１．１Ｖのメッシュ構造配線である１．１Ｖ電源配線と、電圧が１．０Ｖのメッシュ構造配線である１．０Ｖ電源配線と、電圧が０．８Ｖのメッシュ構造配線である０．８Ｖ電源配線と、電圧が０Ｖのメッシュ構造配線であるグラウンド配線とを備えている。
【００５０】
電源ブロックＡ２１１〜電源ブロックＹ２３５は、それぞれ、入力されるClockA２７１〜ClockY２９５をクロック信号として動作し、それぞれ、入力される電圧信号Ａ２４１〜電圧信号Ｙ２６５によって示される電源電圧で動作し、それぞれ、プロセッサＡ１１１〜プロセッサＹ１３５を有する。
【００５１】
図４は、電源ブロックＭ２２３の構成を示すブロック図である。
ここでは、電源ブロックＭ２２３を用いて電源ブロックの構成の説明を行うが、他の電源ブロックも、電源ブロックＭ２２３と同様の構成をしている。
【００５２】
電源ブロックＭ２２３は、プロセッサＭ１２３、クロック供給回路Ｍ４０１、電源選択回路Ｍ４０２、ローカルメモリＭ４０３、キャッシュＭ４０４等から構成される。
クロック供給回路Ｍ４０１は、クロック制御部２０２から出力されたクロック信号ClockM２８３を受信し、受信したクロック信号を、プロセッサＭ１２３、電源選択回路Ｍ４０２、ローカルメモリＭ４０３、キャッシュＭ４０４に供給する機能を有する。
【００５３】
電源選択回路Ｍ４０２は、電圧制御部２０３から出力された電圧信号Ｍ２５３を受信し、受信した電圧信号Ｍ２５３の示す電圧の電源電圧を、プロセッサＭ１２３、クロック供給回路Ｍ４０１、ローカルメモリＭ４０３、キャッシュＭ４０４に供給する機能を有する。
【００５４】
電源選択回路Ｍ４０２は、受信した電圧信号Ｍ２５３応じて、メッシュ構造配線である１．２Ｖ電源配線と１．１Ｖ電源配線と１．０Ｖ電源配線と０．８Ｖ電源配線とグラウンド配線とに供給されている電源のうち１つの電源を選択し、選択した電源の電圧を、電源ブロック内電源配線に供給することで、前述のクロック供給回路Ｍ４０１、ローカルメモリＭ４０３、キャッシュＭ４０４に電源を供給する。
【００５５】
図５は電源選択回路の構成を示すブロック図である。
同図に示すように、電源選択回路５００は、切替スイッチ５１０を備える。
切替スイッチ５１０は、電圧信号５２１に応じて、１．２Ｖ電源配線５３１と、１．１Ｖ電源配線５３２と、１．０Ｖ電源配線５３３と、０．８Ｖ電源配線５３４と、グラウンド配線５３５との中から１つの電源配線を選択し、選択した電源配線と電源ブロック内電源配線５３７とを電気的に接続するスイッチである。
【００５６】
コンデンサ５４０は、スイッチ切り替え時の電圧ノイズ除去のため、電源選択回路５００に挿入されている。
上述の構成により、電源選択回路５００は、それぞれ１．２Ｖと１．１Ｖと１．０Ｖと０．８Ｖと０Ｖとのうちの１つの電源電圧を、クロック供給回路Ｍ４０１、ローカルメモリＭ４０３、キャッシュＭ４０４に供給する。
【００５７】
再び図４に戻って、電源ブロックＭ２２３の構成の説明を続ける。
ローカルメモリＭ４０３は、プロセッサＭ１２３と接続し、プロセッサＭ１２３がメモリ領域として利用するためのメモリであって、プロセッサＭ１２３が使用するプログラムやデータを一時的に記憶する。
【００５８】
キャッシュＭ４０４は、プロセッサＭ１２３とメモリバス４３０とに接続するキャッシュメモリであって、プロセッサＭ１２３がメモリバス４３０を介して接続する外部メモリ４４０にアクセスする際のキャッシュメモリとして使用される。
【００５９】
プロセッサＭ１２３は、電源ブロックＨ２１８のプロセッサＨ１１８と、電源ブロックＬ２２２のプロセッサＬ１２２と、電源ブロックＮ２２４のプロセッサＮ１２４と、電源ブロックＲ２２８のプロセッサＲ１２８と、同じ電源ブロック内のローカルメモリＭ４０３と、同じ電源ブロック内のキャッシュＭ４０４とに接続し、キャッシュＭ４０４とメモリバス４３０とを介して接続する外部メモリ４４０に記憶されているプログラムを実行することで、ローカルメモリＭ４０３、キャッシュＭ４０４等を用いて、他のプロセッサと共同で、様々な機能を実現する。
【００６０】
また、プロセッサＭ１２３は、上述のルーティング処理を行う機能を有する。
図６は、マルチプロセッサＬＳＩ１００上で動作するプログラムモジュール（以下、単に「モジュール」という。）を示すブロック図である。
【００６１】
マルチプロセッサＬＳＩ１００上で動作するモジュールには、ハイパーバイザ６３１、ハイパーバイザ６３１上で動作する第１ＯＳ６０１〜第ＫＯＳ６０４、各ＯＳ上で動作する第１タスク６５１〜第Ｎタスク６５５等がある。
【００６２】
これらのモジュールは、外部メモリ４４０に記憶されたプログラムが、プロセッサＡ１１１〜プロセッサＹ１３５のうちの１又は複数のプロセッサによって実行されることで動作する。
【００６３】
第１タスク６５１〜第Ｎタスク６５５のそれぞれは、第１ＯＳ６０１〜第ＫＯＳ６０４のうちのいずれか１つのＯＳに割り当てられている。
第１ＯＳ６０１〜第ＫＯＳ６０４のそれぞれは、互いに種類の異なるＯＳであって、ハイパーバイザ６３１によってプロセッサＡ１１１〜プロセッサＹ１３５のうちのいずれか１つに割り当てられて、その割り当てられたプロセッサ上で動作する。
【００６４】
マルチプロセッサＬＳＩ１００には２５個のプロセッサが存在するため、マルチプロセッサＬＳＩ１００上で動作させるＯＳの数は、最大で２５個である。
ハイパーバイザ６３１は、ＯＳタスク対応情報保持モジュール６３２、プロセッサ選択モジュール６３３、電圧周波数情報保持モジュール６３４、動作パターン情報保持モジュール６３５とから構成され、第１ＯＳ６０１〜第ＫＯＳ６０４のそれぞれを、プロセッサＡ１１１〜プロセッサＹ１３５のうちのいずれか１つに割り当て、割り当てたプロセッサの電源電圧と動作周波数とを決定し、決定した電源電圧と動作周波数とで、そのプロセッサを動作させる機能を有する。
【００６５】
ＯＳタスク対応情報保持モジュール６３２は、プロセッサ選択モジュール６３３と通信し、外部メモリ４４０の所定の記憶領域に記憶されているＯＳタスク対応情報を読み込んで保持する機能を有する。
【００６６】
ＯＳタスク対応情報は、ＯＳ毎に割り当てられているタスクの数と、それら割り当てられているタスクのタスクＩＤとを示す情報である。
図７は、ＯＳタスク対応情報保持モジュール６３２が保持するＯＳタスク対応情報のデータ構成図である。
【００６７】
同図に示されるように、ＯＳタスク対応情報は、ＯＳを特定するためのＯＳ識別子７０１と、ＯＳ識別子７０１で特定されるＯＳに割り当てられているタスクの数であるタスク数７０２と、ＯＳ識別子７０１で特定されるＯＳに割り当てられているタスクを特定するためのタスクＩＤ７０３とが対応付けられている。
【００６８】
このＯＳタスク対応情報によれば、マルチプロセッサＬＳＩ１００で実行されるＯＳは第１ＯＳ〜第７ＯＳの計７個のＯＳであり、第１ＯＳには７０個のタスクが割り当てられ、第２ＯＳには５０個のタスクが割り当てられ、第３ＯＳには３０個のタスクが割り当てられ、第４ＯＳには２０個のタスクが割り当てられ、第５ＯＳには１５個のタスクが割り当てられ、第６ＯＳには９個のタスクが割り当てられ、第７ＯＳには８個のタスクが割り当てられていることがわかる。
【００６９】
再び図６に戻って、ハイパーバイザ６３１の構成についての説明を続ける。
電圧周波数情報保持モジュール６３４は、プロセッサ選択モジュール６３３と通信し、外部メモリ４４０の所定の記憶領域に記憶されている電圧周波数情報を読み込んで保持する機能を有する。
【００７０】
電圧周波数情報は、プロセッサの電源電圧と動作周波数とを、そのプロセッサに割り当てられたタスクの数に応じて設定するための情報である。
図８は、電圧周波数情報保持モジュール６３４が保持する電圧周波数情報のデータ構成図である。
【００７１】
同図に示されるように、電圧周波数情報は、ＯＳに割り当てられているタスクの数を示すタスクの数８０１と、電源ブロックの電源電圧を示す電源電圧８０２と、プロセッサの動作周波数を示す動作周波数８０３とが対応付けられている。
【００７２】
この電圧周波数情報によれば、例えば、タスクの数が６１以上割り当てられているＯＳを割り当てられているプロセッサの属する電源ブロックは、１．２Ｖの電源電圧を供給され、そのプロセッサは８００ＭＨｚの動作周波数で動作するということを示している。
【００７３】
再び図６に戻って、ハイパーバイザ６３１の構成についての説明を続ける。
動作パターン情報保持モジュール６３５は、プロセッサ選択モジュール６３３と通信し、外部メモリ４４０の所定の記憶領域に記憶されている動作パターン情報を読み込んで保持する機能を有する。
【００７４】
動作パターン情報は、タスクの割り当てられているＯＳが１個の場合〜２５個の場合のそれぞれについて、割り当てられているタスクの数が多いＯＳから順に、どの位置のプロセッサにそのＯＳを割り当てるかを示す情報である。
【００７５】
タスクの割り当てられているプロセッサのうちのいずれかのプロセッサを第１のプロセッサ、第２のプロセッサとすると、この動作パターン情報は、第１のプロセッサと、直接接続されるプロセッサのうちタスクの割り当てられているプロセッサの数が第１のプロセッサよりも少ない第２のプロセッサとが存在する場合に、第１のプロセッサに割り当てられるタスクの量が第２のプロセッサに割り当てられるタスクの量以上となるように、ＯＳとプロセッサとを対応付けるものである。
【００７６】
図９は、動作パターン情報保持モジュール６３５が保持する動作パターン情報を図面で表現した図である。
図９は、割り当てられているタスクの数の多いＯＳから順に、そのＯＳをどのプロセッサに割り当てるかを示すものであって、図９ａはタスクの割り当てられているＯＳが１つの場合、図９ｂはタスクの割り当てられているＯＳが２つの場合、図９ｃはタスクの割り当てられているＯＳが３つの場合、図９ｄはタスクの割り当てられているＯＳが４つの場合、図９ｅはタスクの割り当てられている数が５つの場合、図９ｆはタスクの割り当てられている数が２５の場合の図である。
【００７７】
再び図６に戻って、ハイパーバイザ６３１の構成についての説明を続ける。
プロセッサ選択モジュール６３３は、ＯＳタスク対応情報保持モジュール６３２と電圧周波数情報保持モジュール６３４と動作パターン情報保持モジュール６３５と通信し、以下の４つの機能を有する。
【００７８】
機能１：ＯＳタスク対応情報保持モジュール６３２が保持するＯＳタスク対応情報と、動作パターン情報保持モジュール６３５が保持する動作パターン情報とから、それぞれのＯＳをどのプロセッサに割り当てるかを決定する機能。
【００７９】
機能２：電圧周波数情報保持モジュール６３４が保持する電圧周波数情報を参照して、決定したプロセッサ毎に、そのプロセッサに割り当てられたＯＳに割り当てられているタスクの数から、そのプロセッサの動作周波数と電源電圧とを決定する機能。
【００８０】
機能３：割り当てられたＯＳとプロセッサと動作周波数と電源電圧との組とを記憶し、決定した動作周波数となるようにクロック制御部２０２を制御し、決定した電源電圧となるように電圧制御部２０３を制御する機能。
【００８１】
機能４：プロセッサに起動信号を送信して、そのプロセッサを起動させる機能。ここで、起動信号とは、リセット解除信号であって、各プロセッサは、電源が供給されている状態でリセットが解除されることで、起動される。
【００８２】
以上のように構成されるマルチプロセッサシステムの動作について、以下図面を参照しながら説明する。
＜動作＞
マルチプロセッサＬＳＩ１００は、その上で実行されるソフトウエアに応じて、様々な機能、例えば、ＭＰＥＧ（Moving Picture Experts Group）のエンコード処理や、映像加工処理等の機能を実現する。
【００８３】
この実施の形態１では、マルチプロセッサＬＳＩ１００は、外部のコントローラによって起動され、起動時に外部メモリ４４０の所定のメモリ領域に記憶されているプログラムを読み込んで実行する構成となっており、コントローラは、マルチプロセッサＬＳＩ１００を起動する前に、その所定のメモリ領域に実行させたいプログラムをロードする構成となっている。
【００８４】
ここでは、マルチプロセッサＬＳＩ１００が起動されてから、マルチプロセッサＬＳＩ１００を構成する各プロセッサがタスクの処理を開始するまでの起動処理について説明する。
【００８５】
図１０は、本実施の形態に係るマルチプロセッサシステムの行う、上述の起動処理のフローチャートである。
マルチプロセッサＬＳＩ１００が起動されると、プロセッサＭ１２３に１．２Ｖの電源電圧と８００ＭＨｚのクロック信号とが供給され、プロセッサＭ１２３が起動される。
【００８６】
プロセッサＭ１２３は、起動されると、自プロセッサ上でハイパーバイザ６３１を起動する（ステップＳ１０００）。
ハイパーバイザ６３１が起動されると、ＯＳタスク対応情報保持モジュール６３２は、外部メモリ４４０の所定の記憶領域に記憶されているＯＳタスク対応情報を読み込んで保持し、電圧周波数情報保持モジュール６３４は、外部メモリ４４０の所定の記憶領域に記憶されている電圧周波数情報を読み込んで保持し、動作パターン情報保持モジュール６３５は、外部メモリ４４０の所定の記憶領域に記憶されている動作パターン情報を読み込んで保持する。
【００８７】
次に、プロセッサ選択モジュール６３３は、ＯＳタスク対応情報保持モジュール６３２が保持するＯＳタスク対応情報と、動作パターン情報保持モジュール６３５が保持する動作パターン情報とから、割り当てられているタスク数の多いＯＳから順に、動作パターン情報に従って、それぞれのＯＳをどのプロセッサに割り当てるかを決定する（ステップＳ１０１０）。
【００８８】
プロセッサへのＯＳの割り当てを決定すると、プロセッサ選択モジュール６３３は、電圧周波数情報保持モジュール６３４が保持する電圧周波数情報を参照して、決定したプロセッサ毎に、そのプロセッサに割り当てられたＯＳに割り当てられているタスクの数から、そのプロセッサの動作周波数と電源電圧とを決定する（ステップＳ１０２０）。
【００８９】
動作周波数と電源電圧とを決定すると、プロセッサ選択モジュール６３３は、決定した動作周波数となるようにクロック制御部２０２を制御し、決定した電源電圧となるように電圧制御部２０３を制御し、決定したプロセッサに起動信号を送信して、そのプロセッサを起動させる（ステップＳ１０３０）。
【００９０】
起動信号を受信したプロセッサの各々は、起動されると、自プロセッサ上でハイパーバイザを起動し、さらにハイパーバイザ上で、割り当てられたＯＳを起動する。
起動されたプロセッサの各々は、割り当てられたＯＳに割り当てられたタスクの処理を開始する（ステップＳ１０４０）。
【００９１】
＜具体例＞
以下、上述の起動処理のうち、ステップＳ１０１０の処理とステップＳ１０２０の処理とについて、具体例を用いて説明を補足する。
【００９２】
この具体例は、ＯＳタスク対応情報保持モジュール６３２が保持するＯＳタスク対応情報が、図７に示されるものである場合の例である。
ステップＳ１０１０において、プロセッサ選択モジュール６３３は、ＯＳタスク対応情報保持モジュール６３２が保持するＯＳタスク対応情報から、タスクの割り当てられているＯＳの数は７つであることがわかるので、動作パターン情報保持モジュール６３５が保持する動作パターン情報のうち、タスクの割り当てられているＯＳが７つの場合の動作パターン情報を読み出す。
【００９３】
図１１は、動作パターン情報保持モジュール６３５が保持する動作パターン情報のうち、タスクの割り当てられているＯＳが７つの場合の動作パターン情報を図面で表現した図である。
【００９４】
同図に示す通り、タスクの割り当てられているＯＳが７つの場合の動作パターン情報は、割り当てられているタスクの数の多いＯＳから順にプロセッサ１１０１、プロセッサ１１０２、プロセッサ１１０３、プロセッサ１１０４、プロセッサ１１０５、プロセッサ１１０６、プロセッサ１１０７に割り当てられることを示している。
【００９５】
従って、プロセッサ選択モジュール６３３は、第１ＯＳをプロセッサＭ１２３へ、第２ＯＳをプロセッサＨ１１８へ、第３ＯＳをプロセッサＬ１２２へ、第４ＯＳをプロセッサＧ１１７へ、第５ＯＳをプロセッサＩ１１９へ、第６ＯＳをプロセッサＮ１２４へ、第７ＯＳをプロセッサＲ１２８へ割り当てると決定する（ステップＳ１０１０）。
【００９６】
次にプロセッサ選択モジュール６３３は、電圧周波数情報保持モジュール６３４が保持する電圧周波数情報を参照して、タスク数７０の第１ＯＳの割り当てられているプロセッサＭ１２３は、動作周波数８００ＭＨｚで電源電圧１．２Ｖであると決定し、タスク数５０の第２ＯＳが割り当てられているプロセッサＨ１１８は、動作周波数６００ＭＨｚで電源電圧１．１Ｖであると決定し、タスク数３０の第３ＯＳが割り当てられているプロセッサＬ１２２は、動作周波数３００ＭＨｚで電源電圧１．０Ｖであると決定し、タスク数２０の第４ＯＳが割り当てられているプロセッサＧ１１７は、動作周波数３００ＭＨｚで電源電圧１．０Ｖであると決定し、タスク数１５の第５ＯＳが割り当てられているプロセッサＩ１１９は、動作周波数３００ＭＨｚで電源電圧１．０Ｖであると決定し、タスク数９の第６ＯＳが割り当てられているプロセッサＮ１２４は、動作周波数１００ＭＨｚで電源電圧０．８Ｖであると決定し、タスク数８の第７ＯＳが割り当てられているプロセッサＲ１２８は、動作周波数１００ＭＨｚで電源電圧０．８Ｖであると決定する（ステップＳ１０２０）。
【００９７】
また、タスクの割り当てられているＯＳの割り当てられていないプロセッサは、動作周波数０Ｈｚで電源電圧０Ｖであると決定する。
図１２は、上述の具体例によって決定された、各プロセッサの動作周波数と電源電圧とを示す図である。
【００９８】
同図に示されるように、プロセッサＡ１１１〜プロセッサＦ１１６とプロセッサＪ１２０とプロセッサＫ１２１とプロセッサＯ１２５〜プロセッサＱ１２７とプロセッサＳ１２９〜プロセッサＹ１３５とは動作周波数０Ｈｚで電源電圧０Ｖであり、プロセッサＭ１２３は動作周波数８００ＭＨｚで電源電圧１．２Ｖであり、プロセッサＨ１１８は動作周波数６００ＭＨｚで電源電圧１．１Ｖであり、プロセッサＬ１２２とプロセッサＧ１１７とプロセッサＩ１１９とは動作周波数３００ＭＨｚで電源電圧１．０Ｖであり、プロセッサＮ１２４とプロセッサＲ１２８とは、動作周波数１００ＭＨｚで電源電圧０．８Ｖであると決定される。
【００９９】
上述のマルチプロセッサシステムによれば、マルチプロセッサシステムの処理対象であるタスク群のタスクを複数のプロセッサに割り当てて処理させる場合において、タスクの割り当てられているプロセッサのうちのいずれかのプロセッサを第１のプロセッサ、第２のプロセッサとすると、第１のプロセッサと、直接接続されるプロセッサのうちタスクの割り当てられているプロセッサの数が第１のプロセッサよりも少ない第２のプロセッサとが存在する場合に、第１のプロセッサに割り当てられるタスクの量が第２のプロセッサに割り当てられるタスクの量以上となるように、各プロセッサにタスクの割り当てを行う。
【０１００】
より多くのタスクを割り当てられているプロセッサの方が、より少なくタスクを割り当てられているプロセッサよりも、他のタスクの割り当てられているプロセッサとの通信量が多くなる傾向があり、また、互いに接続されているプロセッサ間の通信には、他のプロセッサを経由する必要がない。
【０１０１】
従って、本マルチプロセッサシステムは、効率よくルーティング処理を行えるように、各プロセッサにタスクを割り当てることができるようになる。
また、上述のマルチプロセッサシステムによれば、第１のプロセッサに割り当てられているタスクの量以下の量のタスクが割り当てられている第２のプロセッサの動作周波数を、第１のプロセッサの動作周波数以下とすることができるため、効率よく各プロセッサの動作周波数を決定することで、マルチプロセッサシステムの性能に対する消費電力の効率を良くすることができるようになる。
【０１０２】
また、上述のマルチプロセッサシステムによれば、タスクを割り当てられていないプロセッサの動作を停止することができるようになるため、タスクを割り当てられていないプロセッサの動作電力を０にすることができるようになる。
【０１０３】
また、本マルチプロセッサシステムは、第１の動作周波数未満の動作周波数である第２の動作周波数で動作するプロセッサの動作電圧を、第１の動作周波数で動作するプロセッサの動作電圧以下とすることができるため、効率よく各プロセッサの動作電圧を決定することで、マルチプロセッサシステムの性能に対する消費電力の効率を良くすることができるようになる。
＜実施の形態２＞
以下、本発明に係るマルチプロセッサシステムの一実施形態として、実施の形態１に係るマルチプロセッサシステムの一部を変形した実施の形態２に係る変形マルチプロセッサシステムについて説明する。
【０１０４】
変形マルチプロセッサシステムは、一定周期（例えば５分）毎に処理対象であるタスクの数の変動の検出を試みて、変動が検出された場合に、タスクをプロセッサに割り当て直すというものである。
【０１０５】
変形マルチプロセッサシステムは、マルチプロセッサシステムと同様に、２５個のプロセッサが、５×５の行列状に配置された変形マルチプロセッサＬＳＩを用いて実現される。
【０１０６】
実施の形態１に係るマルチプロセッサシステムは、タスクの割り当てられたＫ個のＯＳのそれぞれが１つのプロセッサに割り当てられる例であったのに対して、実施の形態２に係る変形マルチプロセッサシステムは、プロセッサ上で稼働するＯＳは３個であるとし、それぞれのＯＳは１以上のプロセッサに割り当てられる。
【０１０７】
また、各プロセッサは、電源電圧０．７Ｖと０Ｈｚのクロック信号とが供給されると、プロセッサとしては動作しないが、レジスタ等に記憶されているデータはそのまま保持し続けるという状態となる。
【０１０８】
以下、本実施の形態２に係る変形マルチプロセッサシステムの構成について、実施の形態１に係るマルチプロセッサシステムとの相違点を中心に、図面を参照しながら説明する。
【０１０９】
＜構成＞
実施の形態２に係る変形マルチプロセッサＬＳＩと実施の形態１に係るマルチプロセッサＬＳＩ１００とのハードウエア上の相違点は、（１）メッシュ電源配線として、電圧が０．７Ｖのメッシュ構造配線である０．７Ｖ電源配線が追加されている点と、（２）電圧制御部２０３が変形電圧制御部に変形されている点と、（３）各電源ブロックの電源選択回路５００が、電源選択回路１３００に変形されている点と（４）クロック制御部２０２が変形クロック制御部に変形されている点である。
【０１１０】
また、変形マルチプロセッサＬＳＩ上で動作するモジュールとマルチプロセッサＬＳＩ１００上で動作するモジュールとの相違点は、（１）ハイパーバイザ６３１がハイパーバイザ１４３１に変形されている点と、（２）マルチプロセッサＬＳＩ１００上で動作するＯＳが、第１ＯＳ６０１〜第ＫＯＳ６０４であるのに対し、変形マルチプロセッサＬＳＩ上で動作するＯＳが、第１ＯＳ１４０１〜第３ＯＳ１４０３に変形されている点とである。
【０１１１】
変形電圧制御部は、変形マルチプロセッサＬＳＩ上で動作するハイパーバイザ１４３１によって制御され、電源ブロックＡ２１１〜電源ブロックＹ２３５のそれぞれに、電源ブロックの電源電圧を示す信号である電圧信号ａ〜電圧信号ｙを出力する機能を有する。
【０１１２】
電圧制御部２０３が出力する電圧信号Ａ２４１〜電圧信号Ｙ２６５のそれぞれは、１．２Ｖ、１．１Ｖ、１．０Ｖ、０．８Ｖ、０Ｖの５種類の電圧を示す信号のうちいずれか１つの電圧を示す信号であるのに対して、変形電圧制御部が出力する電圧信号ａ〜電圧信号ｙのそれぞれは、１．２Ｖ、１．１Ｖ、１．０Ｖ、０．８Ｖ、０．７Ｖ、０Ｖの６種類の電圧を示す信号のうちのいずれか１つの電圧を示す信号となっている。
【０１１３】
また、変形電圧制御部は、変形マルチプロセッサＬＳＩの起動時に、電圧信号ｈ、電圧信号ｌ、電圧信号ｍとして１．２Ｖの電圧を示す信号を出力するように設定されている。この設定は、起動時にプロセッサＨ１１８、プロセッサＬ１２２、プロセッサＭ１２３を電源電圧１．２Ｖで動作させるために設定されている。
【０１１４】
電源選択回路１３００は、変形電圧制御部から出力された電圧信号を受信し、受信した電圧信号の示す電圧の電源電圧を、同じ電源ブロック内のプロセッサ、クロック供給回路、ローカルメモリ、キャッシュに供給する機能を有する。
【０１１５】
電源選択回路Ｍ４０２は、１．２Ｖ電源配線と１．１Ｖ電源配線と１．０Ｖ電源配線と０．８Ｖ電源配線とグラウンド配線とに供給されている５種類の電源のうち１つの電源を選択してブロック内電源配線に供給するものであるのに対して、電源選択回路１３００は、１．２Ｖ電源配線と１．１Ｖ電源配線と１．０Ｖ電源配線と０．８Ｖ電源配線と０．７Ｖ電源配線とグラウンド配線とに供給されている６種類のうち１つの電源を選択してブロック内電源配線に供給するものである。
【０１１６】
図１３は電源選択回路１３００の構成を示すブロック図である。
同図に示すように、電源選択回路１３００は、切替スイッチ１３１０を備える。
切替スイッチ１３１０は、電圧信号１３２１に応じて、１．２Ｖ電源配線１３３１と、１．１Ｖ電源配線１３３２と、１．０Ｖ電源配線１３３３と、０．８Ｖ電源配線１３３４と、０．７Ｖ電源配線１３３５と、グラウンド配線１３３６との中から１つの電源配線を選択し、選択した電源配線と電源ブロック内電源配線１３３７とを電気的に接続するスイッチである。
【０１１７】
コンデンサ１３４０は、スイッチ切り替え時の電圧ノイズ除去のため、電源選択回路１３００に挿入されている。
変形クロック制御部は、クロック制御部２０２に設定されていた、マルチプロセッサＬＳＩ１００の起動時にClockM２８３に８００ＭＨｚのクロック信号を出力するという設定が、変形マルチプロセッサＬＳＩの起動時にClockH２７８とClockL２８２とClockM２８３とに８００ＭＨｚのクロック信号を出力するという設定に変形されたものである。この設定は、起動時にプロセッサＨ１１８、プロセッサＬ１２２、プロセッサＭ１２３を動作周波数８００ＭＨｚで動作させるために設定されている。
【０１１８】
図１４は、変形マルチプロセッサＬＳＩ上で動作するモジュールを示すブロック図である。
変形マルチプロセッサＬＳＩ上で動作するモジュールには、ハイパーバイザ１４３１、ハイパーバイザ１４３１上で動作する第１ＯＳ１４０１〜第３ＯＳ１４０３、各ＯＳ状で動作する第１タスク１４５１〜第Ｎタスク１４５５等がある。
【０１１９】
これらのモジュールは、外部メモリ４４０に記憶されたプログラムが、プロセッサＡ１１１〜プロセッサＹ１３５のうちの１又は複数のプロセッサによって実行されることで動作する。
【０１２０】
第１タスク１４５１〜第Ｎタスク１４５５のそれぞれは、第１ＯＳ１４０１〜第３ＯＳ１４０３のうちのいずれか１つのＯＳに割り当てられている。
第１ＯＳ１４０１〜第３ＯＳ１４０３は、それぞれ互いに種類の異なるＯＳであって、タスクのスケジューリングをする機能を有する第１スケジューラ１４１１〜第３スケジューラ１４１３を備え、ハイパーバイザ１４３１によってプロセッサＡ１１１〜プロセッサＹ１３５のうちの１つ以上のプロセッサに割り当てられて、割り当てられた全てのプロセッサ上で動作する。
【０１２１】
第１スケジューラ１４１１〜第３スケジューラ１４１３のそれぞれは、自スケジューラが起動されているプロセッサに割り当てられているタスクのスケジューリングを行う機能と、自スケジューラがスケジューリングの対象とするタスクの数を示すタスク負荷指標を記憶する機能とを有する。
【０１２２】
プロセッサに割り当てられているタスクに増減があった場合には、スケジューラは、増減後のタスク群に対して再度スケジューリングを行い、記憶するタスク負荷指標を、増減後のタスク群の数を示すものに更新する。
【０１２３】
プロセッサに割り当てられているタスクが減少する場合は、例えば、割り当てられているタスクの処理が終了したことで、割り当てられる対象のタスクから除外される場合等があり、また、プロセッサに割り当てられているタスクが増加する場合は、処理中のタスクが新たなタスクを発生させる場合等がある。
【０１２４】
ハイパーバイザ１４３１は、ハイパーバイザ６３１から、ＯＳタスク対応情報保持モジュール６３２と動作パターン情報保持モジュール６３５とを削除し、プロセッサ選択モジュール６３３をプロセッサ選択モジュール１４３３に変形し、電圧周波数情報保持モジュール６３４を電圧周波数情報保持モジュール１４３４に変形し、新たに、タスク割当フラグ保持モジュール１４３６と接続情報保持モジュール１４３５とが追加されたものである。
【０１２５】
タスク割当フラグ保持モジュール１４３６は、プロセッサ選択モジュール１４３３と通信し、プロセッサＡ１１１〜プロセッサＹ１３５のそれぞれのタスク割当フラグを保持する機能を有する。
【０１２６】
ここで、タスク割当フラグとは、変形マルチプロセッサＬＳＩが起動されてから現在までの期間中に、対応するプロセッサにタスクが割り当てられたことがあるか否かを示す１ビットのフラグであって、タスクが割り当てられたことがない場合に“０”、タスクが割り当てられたことがある場合に“１”となるものである。
【０１２７】
電圧周波数情報保持モジュール１４３４は、プロセッサ選択モジュール１４３３と通信し、外部メモリ４４０の所定の記憶領域に記憶されている変形電圧周波数情報を読み込んで保持する機能を有する。
【０１２８】
変形電圧周波数情報は、プロセッサの電源電圧と動作周波数とを、そのプロセッサに割り当てられたタスクの数とそのプロセッサに対応するタスク割当フラグとに応じて設定するための情報である。
【０１２９】
図１５は、電圧周波数情報保持モジュール１４３４が保持する変形電圧周波数情報のデータ構成図である。
同図に示されるように、変形電圧周波数情報は、プロセッサに割り当てられているタスクの数を示すタスクの数１５０１と、タスク割当フラグの値を示すタスク割当フラグ１５０２と、電源ブロックの電源電圧を示す電源電圧１５０３と、プロセッサの動作周波数を示す動作周波数１５０４とが対応付けられたものである。
【０１３０】
この変形電圧周波数情報によれば、例えば、０個のタスクが割り当てられ、対応するタスク割当フラグが１のプロセッサの属する電源ブロックには０．７Ｖの電源電圧を供給され、そのプロセッサは０Ｈｚの動作周波数で動作する（すなわち、動作しない）ことを示しており、例えば、１〜１０のタスクが割り当てられ、対応するタスク割当フラグの値が０又は１のプロセッサの属する電源ブロックには０．８Ｖの電源電圧を供給され、そのプロセッサは１００ＭＨｚで動作することを示している。
【０１３１】
ここで、電源ブロックには０．７Ｖの電源電圧が供給されているが、その電源ブロックに属するプロセッサが動作していない状態とは、その電源ブロックに属するローカルメモリ、キャッシュメモリ、プロセッサ内のレジスタ等は、電源電圧が供給されているためにデータを保持しているが、プロセッサが動作していないため、データの書き込みや読み出しは行われることがない状態である。
【０１３２】
プロセッサは動作していないがデータは保持され続けるため、再度プロセッサが動作する場合に、プロセッサはこれらのデータを再ロードすることなく利用することができる。
システム負荷管理モジュール１４３２は、第１スケジューラ１４１１、第２スケジューラ１４１２、第３スケジューラ１４１３、プロセッサ選択モジュール１４３３と通信し、以下の４つの機能を有する。
【０１３３】
機能１：所定時間Ｔ１（例えば１分）と所定時間Ｔ２（例えば５分）との経過を計測するタイマ機能。
機能２：所定時間Ｔ２（例えば５分）毎に、起動中の各スケジューラの記憶するタスク負荷指数を取得する機能。
【０１３４】
機能３：取得したタスク負荷指数を記憶する機能。
機能４：記憶するタスク負荷指数と新たに取得したタスク負荷指数とを比較し、記憶するタスク負荷指数の示すタスクの数の総和と新たに取得したタスク負荷指数の示すタスクの数の総和との変動量が所定量（例えば５％）以上である場合に、記憶するタスク負荷指数を、新たに取得したタスク負荷指数で上書きし、取得したタスク負荷指数をプロセッサ選択モジュール１４３３に送信する機能。
【０１３５】
接続情報保持モジュール１４３５は、プロセッサ選択モジュール１４３３と通信し、外部メモリ４４０の所定の記憶領域に記憶されている接続情報を読み込んで保持する機能を有する。
【０１３６】
接続情報は、プロセッサ間の接続関係を示す情報である。
図１６は、接続情報保持モジュール１４３５が保持する接続情報のデータ構成図である。
【０１３７】
同図に示されるように、接続情報は、プロセッサを特定するプロセッサＩＤ１６０１と、直接接続するプロセッサを特定する接続プロセッサＩＤとが対応付けられたものである。
【０１３８】
この接続情報によれば、例えば、プロセッサＡは、プロセッサＢとプロセッサＦとに接続していることを示している。
プロセッサ選択モジュール１４３３は、システム負荷管理モジュール１４３２、タスク割当フラグ保持モジュール１４３６、電圧周波数情報保持モジュール１４３４、接続情報保持モジュール１４３５と通信し、以下の６つの機能を有する。
【０１３９】
機能１：システム負荷管理モジュールからタスク負荷指標を受信すると、ＯＳの種別毎に、タスクを割り当てられるプロセッサの数を算定し、算定された各プロセッサに割り当てられるタスクの数を算定する機能。
【０１４０】
プロセッサ選択モジュール１４３３は、機能１において、ＯＳ種別毎にタスク負荷指標によって示されるタスクの数の総和を８０で除算したときの商の数のプロセッサにそれぞれ８０のタスクが割り当てられ、１つのプロセッサに余りの数のタスクが割り当てられるように、割り当てられるプロセッサの数とプロセッサに割り当てられるタスクの数とを算定する。
【０１４１】
機能２：タスクの割り当てられるプロセッサの数と、それらプロセッサに割り当てられるタスクの数と、接続情報保持モジュール１４３５の保持する接続情報とから、タスクを割り当てるプロセッサ群の候補（以下、割当プロセッサ群候補という。）を算定する機能。
【０１４２】
プロセッサ選択モジュール１４３３は、機能２において、接続情報に基づいて、タスクを割り当てるプロセッサの組み合わせを全て算出し、それら全ての組み合わせの中で、タスクの割り当てられているプロセッサのうちのいずれかのプロセッサを第１のプロセッサ、第２のプロセッサとすると、第１のプロセッサと、直接接続されるプロセッサのうちタスクの割り当てられているプロセッサの数が第１のプロセッサよりも少ない第２のプロセッサとが存在する場合に、第１のプロセッサに割り当てられるタスクの量が第２のプロセッサに割り当てられるタスクの量以上となる組み合わせを選んで、その組み合わせによって示されるプロセッサ群を割当プロセッサ群候補として算定する。
【０１４３】
機能３：割当プロセッサ群候補の中から、プロセッサとそのプロセッサに割り当てられるＯＳとの組み合わせについて、現在タスクの割り当てられているプロセッサ群における組み合わせとの差分が最も少なくなる割当プロセッサ群を選出し、選出した割当プロセッサ群を、タスクを割り当てるプロセッサ群とする機能。
【０１４４】
機能４：タスクを割り当てるプロセッサ群を構成するプロセッサのそれぞれについて、電圧周波数情報保持モジュール１４３４が保持する変形電圧周波数情報と、タスク割当フラグ保持モジュール１４３６が保持するタスク割当フラグとを用いて、そのプロセッサに割り当てられているタスクの数から、そのプロセッサの動作周波数と電源電圧とを算定する機能。
【０１４５】
機能５：タスクを割り当てるプロセッサ群を構成するプロセッサのそれぞれが、算定された動作周波数と電源電圧とで動作するように、変形クロック制御部と変形電圧制御部とを制御し、タスクを割り当てるプロセッサ群を構成するプロセッサのそれぞれにＯＳとタスクとを割り当て直す機能。
【０１４６】
機能６：タスク割当フラグ保持モジュール１４３６が保持するタスク割当フラグを更新する機能。
プロセッサ選択モジュール１４３３は、機能６において、タスクを割り当てるプロセッサ群の中に、新規にタスクが割り当てられるプロセッサが存在する場合に、タスク割当フラグ保持モジュール１４３６が保持する、該当するプロセッサのタスク割当フラグの値を“０”から“１”に変更する。
【０１４７】
以上のように構成される変形マルチプロセッサシステムの特徴的な動作について、以下図面を参照しながら説明する。
＜動作＞
ここでは、本実施の形態２に係る変形マルチプロセッサシステムの行う処理のうち、変形マルチプロセッサＬＳＩが起動されてから、各ＯＳのスケジューラがタスクのスケジューリングを開始するまでの起動処理と、各ＯＳのスケジューラから定期的にタスク負荷指標を取得するシステム負荷管理処理と、各プロセッサにタスクを割り当てるプロセッサ選択処理とについて説明する。
【０１４８】
＜起動処理＞
図１７は、本実施の形態２に係る変形マルチプロセッサシステムの行う起動処理のフローチャートである。
【０１４９】
変形マルチプロセッサＬＳＩが起動されると、プロセッサＨ１１８とプロセッサＬ１２２とプロセッサＭ１２３とに１．２Ｖの電源電圧と８００ＭＨｚのクロック信号とが供給され、プロセッサＨ１１８とプロセッサＬ１２２とプロセッサＭ１２３とが起動される。
【０１５０】
プロセッサＨ１１８とプロセッサＬ１２２とプロセッサＭ１２３とは、起動されると、自プロセッサ上でハイパーバイザ１４３１を起動する（ステップＳ１７００）。
さらに、プロセッサＭ１２３は、ハイパーバイザ１４３１上で第１ＯＳ１４０１を起動し、プロセッサＨ１１８は、ハイパーバイザ１４３１上で第２ＯＳ１４０２を起動し、プロセッサＬ１２２は、ハイパーバイザ１４３１上で第３ＯＳ１４０３を起動する（ステップＳ１７１０）。
【０１５１】
第１ＯＳ１４０１、第２ＯＳ１４０２、第３ＯＳ１４０３は、起動されると、それぞれのスケジューラは、自スケジューラが起動されているプロセッサに割り当てられているタスクのスケジューリングを開始し、自スケジューラがスケジューリングの対象とするタスクの数を示すタスク負荷指標を記憶する（ステップＳ１７２０）。
【０１５２】
ハイパーバイザ１４３１が起動されてから、各スケジューラがタスク負荷指標を記憶するまでの所要時間は、例えば１分未満である。
＜システム負荷管理処理＞
図１８は、本実施の形態２に係る変形マルチプロセッサシステムの行うシステム負荷管理処理のフローチャートである。
【０１５３】
ハイパーバイザ１４３１が起動されると、システム負荷管理モジュール１４３２は、起動処理において、各スケジューラがタスク負荷指標を記憶するまで待機するために、タイマを起動して所定時間Ｔ１（例えば１分）の計測を開始する（ステップＳ１８００）。
【０１５４】
タイマを起動後所定時間Ｔ１（例えば１分）経過すると、システム負荷管理モジュール１４３２は、各ＯＳのスケジューラからタスク負荷指標を取得し、タイマを再起動して所定時間Ｔ２（例えば５分）の計測を開始する（ステップＳ１８１０）。
【０１５５】
タスク負荷指標を取得すると、システム負荷管理モジュール１４３２は、取得した各ＯＳのタスク負荷指標をプロセッサ選択モジュール１４３３に送信して（ステップＳ１８２０）、取得した各ＯＳのタスク負荷指標を記憶する（ステップＳ１８３０）。
【０１５６】
ステップＳ１８３０の処理が終了すると、システム負荷管理モジュール１４３２は、タイマ起動後所定時間Ｔ２（例えば５分）経過するまで待機し（ステップＳ１８４０）、タイマ起動後所定時間Ｔ２（例えば５分）経過すると、各ＯＳのスケジューラからタスク負荷指標を取得し、タイマを再起動して再び所定時間Ｔ２（例えば５分）の計測を開始する（ステップＳ１８５０）。
【０１５７】
タスク負荷指標を取得すると、システム負荷管理モジュール１４３２は、記憶するタスク負荷指標と、取得したタスク負荷指標とを比較する（ステップＳ１８６０）。
比較した結果、タスク負荷指標の示すタスクの数の総和の変動量が所定量（例えば５％）以上の場合に（ステップＳ１８７０：Ｙｅｓ）、変形マルチプロセッサシステムは、再び、ステップＳ１８２０以降の処理を行い、タスク負荷指標の示すタスクの数の総和の変動量が所定量（例えば５％）未満の場合に（ステップＳ１８７０：Ｎｏ）、変形マルチプロセッサシステムは、再び、ステップＳ１８４０以降の処理を行う。
【０１５８】
＜プロセッサ選択処理＞
図１９は、本実施の形態２に係る変形マルチプロセッサシステムの行うプロセッサ選択処理のフローチャートである。
【０１５９】
ハイパーバイザ１４３１が起動されると（ステップＳ１９００）、タスク割当フラグ保持モジュール１４３６は、保持する各プロセッサのタスク割当フラグを初期値“０”で初期化する（ステップＳ１９０５）。
【０１６０】
ステップＳ１９０５の処理が終わると、プロセッサ選択モジュール１４３３は、システム負荷管理モジュール１４３２からタスク負荷指標が送信されるまで待機（ステップＳ１９１０：Ｎｏ〜ステップＳ１９１０のループ）する。
【０１６１】
ステップＳ１９１０において、プロセッサ選択モジュール１４３３は、システム負荷管理モジュール１４３２からのタスク負荷指標を受信すると（ステップＳ１９１０：Ｙｅｓ）、ＯＳの種別毎に、タスクを割り当てられるプロセッサの数を算定し、算定された各プロセッサに割り当てられるタスクの数を算定する（ステップＳ１９１５）。
【０１６２】
ステップＳ１９１５において、プロセッサ選択モジュール１４３３は、ＯＳ種別毎に、タスク負荷指標によって示されるタスクの数の総和を８０で除算したときの商の数のプロセッサにそれぞれ８０のタスクが割り当てられ、余りの数のタスクが１つのプロセッサに割り当てられるように、割り当てられるプロセッサの数とプロセッサに割り当てられるタスクの数とを算定する。
【０１６３】
ステップＳ１９１５の処理が終わると、プロセッサ選択モジュール１４３３は、タスクの割り当てられるプロセッサの数と、それらプロセッサに割り当てられるタスクの数と、接続情報保持モジュール１４３５の保持する接続情報とから、割当プロセッサ群候補を算定する（ステップＳ１９２０）。
【０１６４】
ステップＳ１９２０において、プロセッサ選択モジュール１４３３は、接続情報に基づいて、タスクを割り当てるプロセッサの組み合わせを全て算出し、それら全ての組み合わせの中で、タスクの割り当てられているプロセッサのうちのいずれかのプロセッサを第１のプロセッサ、第２のプロセッサとすると、第１のプロセッサと、直接接続されるプロセッサのうちタスクの割り当てられているプロセッサの数が第１のプロセッサよりも少ない第２のプロセッサとが存在する場合に、第１のプロセッサに割り当てられるタスクの量が第２のプロセッサに割り当てられるタスクの量以上となる組み合わせを選んで、その組み合わせによって示されるプロセッサ群を割当プロセッサ群候補として算定する。
【０１６５】
ステップＳ１９２０の処理が終わると、プロセッサ選択モジュール１４３３は、算定された割当プロセッサ群候補の中から、プロセッサとそのプロセッサに割り当てられるＯＳとの組み合わせについて、現在タスクの割り当てられているプロセッサ群における組み合わせとの差分が最も少なくなる割当プロセッサ群を選出し、選出した割当プロセッサ群を、タスクを割り当てるプロセッサ群とする（ステップＳ１９２５）。
【０１６６】
ステップＳ１９２５の処理が終わると、プロセッサ選択モジュール１４３３は、タスクを割り当てるプロセッサ群を構成するプロセッサのそれぞれについて、電圧周波数情報保持モジュール１４３４が保持する変形電圧周波数情報と、タスク割当フラグ保持モジュール１４３６が保持するタスク割当フラグとを用いて、そのプロセッサに割り当てられているタスクの数から、そのプロセッサの動作周波数と電源電圧とを算定する（ステップＳ１９３０）。
【０１６７】
ステップＳ１９３０の処理が終わると、プロセッサ選択モジュール１４３３は、タスクを割り当てるプロセッサ群の中に新規にタスクが割り当てられるプロセッサが存在するか否かを調べる（ステップＳ１９３５）。
【０１６８】
新規に割り当てられるプロセッサとは、タスクが割り当てられるプロセッサのうち、タスク割当フラグ保持モジュール１４３６が保持するタスク割当フラグの値が“０”であるプロセッサのことである。
【０１６９】
ステップＳ１９３５において、新規にタスクが割り当てられたプロセッサが存在する場合に（ステップＳ１９３５：Ｙｅｓ）、プロセッサ選択モジュール１４３３は、タスク割当フラグ保持モジュール１４３６が保持する、該当するプロセッサのタスク割当フラグの値を“０”から“１”に変更する（ステップＳ１９４０）。
【０１７０】
ステップＳ１９４０の処理が終わった場合と、ステップＳ１９３５において、新規にタスクが割り当てられたプロセッサが存在しない場合とに（ステップＳ１９３５：Ｎｏ）、プロセッサ選択モジュール１４３３は、タスクを割り当てるプロセッサ群を構成するプロセッサのそれぞれが、算定された動作周波数と電源電圧とで動作するように、変形クロック制御部と変形電圧制御部とを制御し、タスクを割り当てるプロセッサ群を構成するプロセッサのそれぞれにＯＳとタスクとを割り当て直す（ステップＳ１９４５）。
【０１７１】
ステップＳ１９４５の処理が終わると、変形マルチプロセッサシステムは、再びステップＳ１９１０の処理に戻って、ステップＳ１９１０以降の処理を繰り返す。
上述の変形マルチプロセッサシステムによれば、変形マルチプロセッサシステムの処理対象であるタスクの数が時間の経過と共に変動した場合に、ＯＳとタスクとをプロセッサに割り当て直すことができるようになる。
【０１７２】
従って、処理対象であるタスクの量が時間的に変動する場合であっても、効率よくルーティング処理を行えるように、各プロセッサにタスクを割り当て直すことができるようになる。
【０１７３】
＜実施の形態３＞
以下、本発明に係るマルチプロセッサシステムの一実施形態として、実施の形態２に係る変形マルチプロセッサシステムの一部をさらに変形した実施の形態３に係る第２変形マルチプロセッサシステムについて説明する。
【０１７４】
第２変形マルチプロセッサシステムは、一定周期（例えば５分）毎に、現在最も多くのタスクが割り当てられているプロセッサが、新たに最も多くタスクが割り当てられるプロセッサとならないように、タスクをプロセッサに割り当て直すものである。
【０１７５】
これは、同一のプロセッサに長期間多数のタスクが割り当てられることによって発生する熱暴走を防ぐためである。
第２変形マルチプロセッサシステムと、変形マルチプロセッサシステムとは、ハードウエアの相違点はないが、動作するソフトウエアの一部が互いに異なっている。
【０１７６】
以下、本実施の形態に係る第２変形マルチプロセッサシステムの構成について、実施の形態２に係る変形マルチプロセッサシステムとの相違点を中心に、図面を参照しながら説明する。
【０１７７】
図２０は、第２変形マルチプロセッサシステムにおいて、変形マルチプロセッサＬＳＩ上で動作するモジュールを示すブロック図である。
第２変形マルチプロセッサシステムで動作するモジュールは、変形マルチプロセッサシステムで動作するモジュールのうち、ハイパーバイザ１４３１がハイパーバイザ２０３１に変更されたものとなっている。
【０１７８】
ハイパーバイザ２０３１は、ハイパーバイザ１４３１から、システム負荷管理モジュール１４３２をシステム負荷管理モジュール２０３２に変形し、プロセッサ選択モジュール１４３３をプロセッサ選択モジュール２０３３に変形したものである。
【０１７９】
システム負荷管理モジュール２０３２は、第１スケジューラ１４１１、第２スケジューラ１４１２、第３スケジューラ１４１３、プロセッサ選択モジュール２０３３と通信し、システム負荷管理モジュール１４３２の有する機能１と機能２とに加えて、以下の機能を有する。
【０１８０】
機能３ａ：取得したタスク負荷指数をプロセッサ選択モジュール２０３３に送信する機能。
プロセッサ選択モジュール２０３３は、システム負荷管理モジュール２０３２、タスク割当フラグ保持モジュール１４３６、電圧周波数情報保持モジュール１４３４、接続情報保持モジュール１４３５と通信し、プロセッサ選択モジュール１４３３の有する機能１と機能２と機能４と機能５と機能６とに加え、以下の機能を有する。
【０１８１】
機能３ａ：現在最も多くのタスクを割り当てられているプロセッサと異なるプロセッサに最も多くタスクが割り当てられ、かつ、プロセッサとそのプロセッサに割り当てられるＯＳとの組み合わせについて、現在タスクの割り当てられているプロセッサ群における組み合わせとの差分が最も少なくなる割当プロセッサ群を選出し、選出した割当プロセッサ群を、タスクを割り当てるプロセッサ群とする機能。
【０１８２】
以上のように構成される第２変形マルチプロセッサシステムの特徴的な動作について、以下図面を参照しながら説明する。
＜動作＞
ここでは、本実施の形態３に係る第２変形マルチプロセッサシステムの行う処理のうち、各ＯＳのスケジューラから定期的にタスク負荷指標を取得する変形システム負荷管理処理と、各プロセッサにタスクを割り当てる変形プロセッサ選択処理とについて説明する。
【０１８３】
＜変形システム負荷管理処理＞
この変形システム負荷管理処理は、実施の形態２におけるシステム負荷管理処理の一部を変形したものであって、実施の形態２におけるシステム負荷管理処理のステップＳ１８２０の処理が終わると、ステップＳ１８３０の処理を行うことなくステップＳ１８４０以下の処理を行い、ステップＳ１８５０の処理が終わるとステップＳ１８６０の処理とステップＳ１８７０の処理とを行うことなく、再びステップＳ１８２０以下の処理を行うというものである。
【０１８４】
図２１は、本実施の形態３に係る第２変形マルチプロセッサシステムの行う変形システム負荷管理処理のフローチャートである。
ステップＳ２１００〜ステップＳ２１２０、ステップＳ２１４０〜ステップＳ２１５０の処理は、それぞれ、実施の形態２におけるシステム負荷管理処理のステップＳ１８００〜ステップＳ１８２０、ステップＳ１８４０〜ステップＳ１８５０（図１８参照）の処理に対応し、ハイパーバイザ１４３１をハイパーバイザ２０３１に置き換え、システム負荷管理モジュール１４３２をシステム負荷管理モジュール２０３２置き換え、プロセッサ選択モジュール１４３３をプロセッサ選択モジュール２０３３に置き換えたものである。
【０１８５】
従って、ここでは説明を省略する。
ステップＳ２１２０の処理が終わると、第２変形マルチプロセッサシステムは、ステップＳ２１４０の処理を行い、また、ステップＳ２１５０の処理が終わると、第２変形マルチプロセッサシステムは、再び、ステップＳ２１２０以降の処理を行う。
【０１８６】
＜変形プロセッサ選択処理＞
この変形プロセッサ選択処理は、実施の形態２におけるプロセッサ選択処理の一部を変形したものであって、実施の形態２におけるプロセッサ選択処理のステップＳ１９２５の処理を、後述のステップＳ２２２５の処理に置き換えられたものである。
【０１８７】
図２２は、本実施の形態３に係る変形マルチプロセッサシステムの行う変形プロセッサ選択処理のフローチャートである。
ステップＳ２２００〜ステップＳ２２２０、ステップＳ２２３０〜ステップＳ２２４５の処理は、それぞれ、実施の形態２におけるプロセッサ選択処理のステップＳ１９００〜ステップＳ１９２０、ステップＳ１９３０〜ステップＳ１９４５（図１９参照）の処理に対応し、ハイパーバイザ１４３１をハイパーバイザ２０３１に置き換え、システム負荷管理モジュール１４３２をシステム負荷管理モジュール２０３２置き換え、プロセッサ選択モジュール１４３３をプロセッサ選択モジュール２０３３に置き換えたものである。
【０１８８】
従って、ここでは説明を省略する。
ステップＳ２２２０の処理が終わると、プロセッサ選択モジュール２０３３は、現在最も多くのタスクを割り当てられているプロセッサと異なるプロセッサに最も多くタスクが割り当てられ、かつ、プロセッサとそのプロセッサに割り当てられるＯＳとの組み合わせについて、現在タスクの割り当てられているプロセッサ群における組み合わせとの差分が最も少なくなる割当プロセッサ群を選出し、選出した割当プロセッサ群を、タスクを割り当てるプロセッサ群とする（ステップＳ２２２５）。
【０１８９】
ステップＳ２２２５の処理が終わると、第２変形マルチプロセッサシステムは、ステップＳ２２３０以降の処理を行う。
＜具体例＞
図２３は、ハイパーバイザ２０３１によって、タスクをプロセッサに割り当て直される直前の時刻（以後、時刻ｔ１という。）と直後の時刻（以後、時刻ｔ２という。）とにおける、プロセッサに割り当てられているＯＳとタスクの数との一例を示す図である。
【０１９０】
同図の上図は、時刻ｔ１におけるプロセッサに割り当てられているＯＳとタスクの数とを示す図であり、下図は、時刻ｔ２におけるプロセッサに割り当てられているＯＳとタスクの数とを示す図である。
【０１９１】
時刻ｔ１において、最も多くタスクの割り当てられているプロセッサは、第１ＯＳとタスク数８０とが割り当てられているプロセッサＭ１２３と、第２ＯＳとタスク数８０とが割り当てられているプロセッサＨ１１８とであったが、時刻ｔ２になると、最も多くタスクの割り当てられているプロセッサは、第１ＯＳとタスク数８０とが割り当てられているプロセッサＬ１２２と、第２ＯＳとタスク数８０とが割り当てられているプロセッサＧ１１７とになる。
【０１９２】
このように、ハイパーバイザ２０３１がタスクをプロセッサに割り当て直すごとに、タスクが最も割り当てられているプロセッサが変わっていくため、同一のプロセッサに最多のタスクが割り当てられ続けることがない。
【０１９３】
上述のマルチプロセッサシステムによれば、タスクをプロセッサに割り当て直す場合に、現在最も多くのタスクが割り当てられているプロセッサが、新たに最も多くタスクが割り当てられるプロセッサとならないように、タスクをプロセッサに割り当て直すことができるようになる。
【０１９４】
従って、同一のプロセッサが長期間多数のタスクが割り当てられることによって発生する熱暴走を防ぐことができるようになる。
また、温度の高いプロセッサで処理を実行すると、温度の低いプロセッサで実行した場合に比べて、消費電力量が大きくなることが知られ、温度の高いプロセッサで継続して処理を実行すると、熱による劣化で、そのプロセッサの故障発生率が高くなることが知られているが、上述のマルチプロセッサシステムによれば、プロセッサの温度が高くなることによる消費電力量の増加を抑制し、プロセッサの温度が高くなることによる故障発生率の増加を抑制することができるようになる。
＜補足＞
以上、本発明に係るマルチプロセッサシステムの一実施形態として、実施の形態１、実施の形態２、実施の形態３として、３つのマルチプロセッサシステムの例に基づいて説明したが、以下のように変形することも可能であり、本発明は上述した実施の形態で示した通りの認証システムに限られないことはもちろんである。
（１）実施の形態１において、マルチプロセッサＬＳＩ１００は、５×５の行列状に配置された２５個のプロセッサによって構成され、各プロセッサは、互いに同じ機能を持った同じ形状である例について説明したが、３以上の互いに通信するプロセッサを含む構成であって、それらのプロセッサの全てが互いに直接接続されていない構成であれば、必ずしもプロセッサの数は２５個でなくても良いし、必ずしもプロセッサが５×５の行列状に配置される必要もないし、必ずしも各プロセッサが同じ機能である必要もないし、必ずしも各プロセッサが同じ形状である必要もない。
（２）実施の形態１において、第１ＯＳ６０１〜第ＫＯＳ６０４のそれぞれは、互いに異なる種類のＯＳである例について説明したが、ハイパーバイザ６３１上で動作するものであれば、必ずしも互いに異なる種類のＯＳである必要はなく、それらの一部、もしくは全部が同じ種類のＯＳであっても構わない。
（３）実施の形態１において、動作パターン情報の例として、図９ａ〜図９ｆ、図１１に示されるものを挙げたが、タスクの割り当てられているプロセッサのうちのいずれかのプロセッサを第１のプロセッサ、第２のプロセッサとすると、この動作パターン情報は、第１のプロセッサと、直接接続されるプロセッサのうちタスクの割り当てられているプロセッサの数が第１のプロセッサよりも少ない第２のプロセッサとが存在する場合に、第１のプロセッサと第２のプロセッサの全ての組み合わせについて、第１のプロセッサに割り当てられるタスクの量が第２のプロセッサに割り当てられるタスクの量以上となるように、ＯＳとプロセッサとを対応付けるものであれば、必ずしも図９ａ〜図９ｆ、図１１に示されるものに限られる必要はない。
（４）実施の形態１において、ハイパーバイザ６３１が、各ＯＳに割り当てられているタスクの数に基づいて各ＯＳをプロセッサに割り当てる例について説明したが、各ＯＳに割り当てられているタスクの量を示すものであれば、必ずしも各ＯＳに割り当てられているタスクの数に基づくものでなくても構わない。例えば、タスクに含まれる命令ステップの総数、タスクが取り扱うデータのサイズ等であってもよい。
【０１９５】
割り当てられているタスクに含まれる命令ステップの総数がより多いプロセッサの方が、割り当てられているタスクに含まれる命令ステップの総数がより少ないプロセッサよりも、他のタスクの割り当てられているプロセッサとの通信量が多くなる傾向があり、割り当てられているタスクが取り扱うデータのサイズがより大きいプロセッサの方が、割り当てられているタスクが取り扱うデータのサイズがより小さいプロセッサよりも、他のタスクの割り当てられているプロセッサとの通信量が多くなる傾向がある。
（５）実施の形態１において、マルチプロセッサシステムを構成する全てのプロセッサが１つの半導体集積回路内に構成されている例について説明したが、各プロセッサが互いに通信することができれば、必ずしも１つの半導体集積回路内に全てのプロセッサが構成されている必要はなく、例えば、複数の半導体集積回路内に構成されていても構わないし、また、必ずしも半導体集積回路でプロセッサが形成されていなくても構わない。
（６）実施の形態１において、複数のプロセッサが１つの平面内に配置された構成の例について説明したが、各プロセッサが互いに通信することができれば、必ずしも１つの平面内に配置されていなくても構わない。
【０１９６】
図２４は、１８個のプロセッサ（プロセッサ２４０１〜プロセッサ２４１４）が、３×３×２の３次元状に配置された例を示す図である。
例えば、同図に示されるように、複数のプロセッサが３次元状に配置されている構成であっても構わない。
（７）実施の形態１において、各電源ブロックに含まれるプロセッサとローカルメモリとキャッシュメモリとが同じクロック信号と電源電圧との組み合わせで動作する例について説明したが、プロセッサがローカルメモリとキャッシュメモリとを正常に使用することができれば、必ずしも、プロセッサとローカルメモリとキャッシュメモリとが同じクロック信号と電源電圧との組み合わせで動作する必要はない。
【０１９７】
例えば、キャッシュメモリがプロセッサとは異なる電源ブロックに配置され、プロセッサの動作周波数と電源電圧とに関係なく、常に１００ＭＨｚの動作周波数と電源電圧０．８Ｖとで動作するという構成等であってもよいし、ローカルメモリがプロセッサとは異なる電源ブロックに配置され、プロセッサとは独立に制御される動作周波数と電源電圧とで動作するという構成であってもよい。
（８）実施の形態１において、外部メモリ４４０はマルチプロセッサＬＳＩ１００の外部に存在する例について説明したが、マルチプロセッサＬＳＩ１００内に集積されていても構わない。
（９）実施の形態１において、プロセッサに割り当てられているタスクの数に応じて、そのプロセッサの電源電圧と動作周波数とが設定される例について説明したが、プロセッサに割り当てられているタスクの数に応じて、そのプロセッサの動作周波数が設定され、プロセッサの電源電圧は、そのプロセッサに割り当てられているタスクの数に関わらず一定であるとしても構わないし、プロセッサに割り当てられているタスクの数に関わらず、そのプロセッサの電源電圧と動作周波数とが一定であるとしても構わない。
（１０）実施の形態２において、割当プロセッサ群候補の中から、プロセッサとそのプロセッサに割り当てられるＯＳとの組み合わせについて、現在タスクの割り当てられているプロセッサ群における組み合わせとの差分が最も少なくなる割当プロセッサ群を選出し、選出した割当プロセッサ群を、タスクを割り当てるプロセッサ群とする例について説明したが、プロセッサとそのプロセッサの電源電圧との組み合わせについて、現在タスクの割り当てられているプロセッサ群における組み合わせとの差分が最も少なくなる割当プロセッサ群を選出するとしても構わないし、プロセッサとそのプロセッサの動作周波数との組み合わせについて、現在タスクの割り当てられているプロセッサ群における組み合わせとの差分が最も少なくなる割当プロセッサ群を選出するとしても構わない
（１１）実施の形態２において、ハイパーバイザ１４３１上で３つの種類のＯＳが動作する例について説明したが、必ずしもＯＳの種類は３つでなくても構わない。
（１２）実施の形態２において、タスク割当フラグは、タスク割当フラグ保持モジュール１４３６によってハイパーバイザ１４３１起動時に初期値“０”で初期化される例について説明したが、必ずしも、ハイパーバイザ１４３１起動時にのみ“０”に設定されるという構成に限る必要はない。
【０１９８】
長時間タスクの割り当てられていないプロセッサについては、対応するローカルメモリ、キャッシュ等に記憶されているデータが、最新のデータではなくなっている可能性が高くなる場合もある。
【０１９９】
このため、例えば、タスク割当フラグ保持モジュール１４３６は、一定時間（例えば１５分）以上タスクの割り当てられていないプロセッサについて、タスク割当フラグを“０”に設定するという構成にしても構わない。
（１３）実施の形態２において、各プロセッサには８０個を上限としてタスクを割り当てる例について説明したが、必ずしも上限が８０個に限られる必要はなく、タスクの種類やプロセッサの性能に応じてタスクの上限数を８１個以上、又は７９個以下としても構わない。
（１４）実施の形態３において、第２変形プロセッサシステムは、タスクをプロセッサに割り当て直す動作を所定の時間毎に行う例について説明したが、必ずしも所定の時間毎に行う必要はなく、例えば、処理対象であるタスクの数の変動を検出する場合にタスクをプロセッサに割り当て直すとしても構わない。
【産業上の利用可能性】
【０２００】
本発明は複数のプロセッサを備える情報処理装置に広く利用することができる。
【符号の説明】
【０２０１】
６５１  第１タスク
６５２  第２タスク
６５３  第３タスク
６５４  第４タスク
６５５  第Ｎタスク
６０１  第１ＯＳ
６０２  第２ＯＳ
６０３  第３ＯＳ
６０４  第ＫＯＳ
６３１  ハイパーバイザ
６３２  ＯＳタスク対応情報保持モジュール
６３３  プロセッサ選択モジュール
６３４  電圧周波数情報保持モジュール
６３５  動作パターン情報保持モジュール
【図１】
0005406287.tif 000002
【図２】
0005406287.tif 000003
【図３】
0005406287.tif 000004
【図４】
0005406287.tif 000005
【図５】
0005406287.tif 000006
【図６】
0005406287.tif 000007
【図７】
0005406287.tif 000008
【図８】
0005406287.tif 000009
【図９】
0005406287.tif 000010
【図１０】
0005406287.tif 000011
【図１１】
0005406287.tif 000012
【図１２】
0005406287.tif 000013
【図１３】
0005406287.tif 000014
【図１４】
0005406287.tif 000015
【図１５】
0005406287.tif 000016
【図１６】
0005406287.tif 000017
【図１７】
0005406287.tif 000018
【図１８】
0005406287.tif 000019
【図１９】
0005406287.tif 000020
【図２０】
0005406287.tif 000021
【図２１】
0005406287.tif 000022
【図２２】
0005406287.tif 000023
【図２３】
0005406287.tif 000024
【図２４】
0005406287.tif 000025