(57)【要約】【課題】マルチプロセッサの消費電力の低減を図る。【解決手段】本発明の一態様に係るマルチプロセッサ１の制御装置ＣＰＥは、プロセッサエレメントＰＥ0〜ＰＥnに割り当てられる複数のタスクの実行スケジュールに基づいて、プロセッサエレメントＰＥ0〜ＰＥnのそれぞれに対して、タスクの実行中に用いられる通常モードと、タスクの実行されていない時間に用いられ通常モードよりも消費電力が抑制される第１のモードと、タスクの実行されていない時間に用いられ第１のモードよりも消費電力の抑制効果が大きいがモード切替時間が長い第２のモードとのいずれかを選択する選択手段６と、プロセッサエレメントＰＥ0〜ＰＥnのそれぞれに対して、選択手段６によって選択されたモードに応じた制御を実行するモード制御手段７とを具備する。【選択図】      図１
2008276331.tif 000002
【特許請求の範囲】
【請求項１】
複数のプロセッサエレメントに割り当てられる複数のタスクの実行スケジュールに基づいて、前記複数のプロセッサエレメントのそれぞれに対して、前記タスクの実行中に用いられる通常モードと、前記タスクの実行されていない時間に用いられ前記通常モードよりも消費電力が抑制される第１のモードと、前記タスクの実行されていない時間に用いられ前記第１のモードよりも消費電力の抑制効果が大きいがモード切替時間が長い第２のモードとのいずれかを選択する選択手段と、
前記複数のプロセッサエレメントのそれぞれに対して、前記選択手段によって選択されたモードに応じた制御を実行するモード制御手段と
を具備することを特徴とするマルチプロセッサの制御装置。
【請求項２】
請求項１記載のマルチプロセッサの制御装置において、
前記選択手段は、前記複数のプロセッサエレメントに対して、
前記タスクの実行時間において前記通常モードを選択し、
前記タスクの実行終了から次のタスクの実行開始までの時間が第１のモード適用範囲に含まれる場合、前記タスクの実行終了から前記次のタスクの実行開始までの間に対して、前記第１のモードを選択し、
前記タスクの実行終了から次のタスクの実行開始までの時間が前記第１のモード適用範囲より長い場合、前記タスクの実行終了から前記次のタスクの実行開始までの間に対して、前記第２のモードを選択し、
前記次のタスクの実行時間において前記通常モードを選択する
ことを特徴とするマルチプロセッサの制御装置。
【請求項３】
請求項１又は請求項２記載のマルチプロセッサの制御装置において、
前記選択手段は、前記第２のモードを選択する場合、前記モード切替時間と前記第２のモードの実施時間とが、前記タスクの実行終了から次のタスクの実行開始までの時間を超えない範囲となるように、前記第２のモードの実施時間を決定し、
前記モード制御手段は、前記選択手段によって決定された前記第２のモードの実施時間だけ、前記第２のモードを実施する旨の命令を発する
ことを特徴とするマルチプロセッサの制御装置。
【請求項４】
請求項１乃至請求項３のいずれか１項に記載のマルチプロセッサの制御装置において、
前記実行スケジュールでは、前記複数のタスクのうち並列に実行される必要のないタスクが、前記複数のプロセッサエレメントのうちの特定のプロセッサエレメントに優先的に割り当てられていることを特徴とするマルチプロセッサの制御装置。
【請求項５】
複数のプロセッサエレメントに割り当てられる複数のタスクの実行スケジュールに基づいて、前記複数のプロセッサエレメントのそれぞれに対して、前記タスクの実行中に用いられる通常モードと、前記タスクの実行されていない時間に用いられ前記通常モードよりも消費電力が抑制される第１のモードと、前記タスクの実行されていない時間に用いられ前記第１のモードよりも消費電力の抑制効果が大きいがモード切替時間が長い第２のモードとのいずれかを選択し、
前記複数のプロセッサエレメントのそれぞれに対して、選択されたモードに応じた制御を実行する
ことを特徴とするマルチプロセッサの制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、１チップ上に複数のプロセッサエレメント（内部演算ユニット）が搭載されたマルチプロセッサにおいて、低消費電力化を図るマルチプロセッサの制御装置及び方法に関する。
【背景技術】
【０００２】
近年のマイクロプロセッサにおいては、周波数の向上よりむしろ、プロセッサエレメントの数の向上で、演算性能向上を図る傾向にある。
【０００３】
複数のプロセッサエレメントを備えたマルチプロセッサでは、消費電力が低く抑制されることが好ましい。
【０００４】
特許文献１には、チップ上に配置されている複数のプロセッサエレメントにおける消費電力を、各プロセッサエレメントに対しそれぞれ割り当てられたジョブの処理状況に応じて制御できるプロセッサエレメント監視制御手段が開示されている。
【０００５】
特許文献２には、命令実行制御部における命令実行状態を監視し、命令アイドルカウンタにて一定時間の連続した停止状態が検出された場合、クロック分配制御部においてプロセッサ内のクロックを停止する発明が開示されている。
【０００６】
特許文献３には、マルチタスクオペレーティングシステムが各ＣＰＵの利用量を監視し、利用量が少ないＣＰＵに対して停止又はサスペンドさせる発明が開示されている。
【０００７】
特許文献４には、待機時間の増減により、並列ＣＰが処理すべきタスク量の増減を知り、実際に並列処理をするＣＰの数を決定し、残りのＣＰの動作電源を切断する発明が開示されている。
【０００８】
特許文献５には、待機中のマイクロプロセッサがＢＵＳＹ信号を出力し、待機中のクロックに切替える発明が開示されている。
【特許文献１】特開２００４−２４０６６９号公報
【特許文献２】特開２０００−１１２５５９号公報
【特許文献３】特開平１１−２０２９８８号公報
【特許文献４】特開平６−３０９２８８号公報
【特許文献５】特開平４−８８５１５号公報
【発明の開示】
【発明が解決しようとする課題】
【０００９】
実際のアプリケーションは必ずしも高い並列度を持ったものばかりではない。並列度の低いアプリケーションをマルチプロセッサで実行すると、チップに搭載されている多数のプロセッサエレメントにおいて処理を実行していない時間が増える傾向にある。この場合、マルチプロセッサ全体で、無駄に電力を消費し、熱を発生させるという問題がある。
【００１０】
本発明は、以上のような実情に鑑みてなされたもので、実行されるアプリケーションに対して適切な電力消費を実現するマルチプロセッサの制御装置及び方法を提供することを目的とする。
【課題を解決するための手段】
【００１１】
上記課題は、複数のプロセッサエレメントに割り当てられる複数のタスクの実行スケジュールに基づいて、複数のプロセッサエレメントのそれぞれに対して、タスクの実行中に用いられる通常モードと、タスクの実行されていない時間に用いられ通常モードよりも消費電力が抑制される第１のモードと、タスクの実行されていない時間に用いられ第１のモードよりも消費電力の抑制効果が大きいがモード切替時間が長い第２のモードとのいずれかを選択する選択手段と、複数のプロセッサエレメントのそれぞれに対して、選択手段によって選択されたモードに応じた制御を実行するモード制御手段とを具備するマルチプロセッサの制御装置、により解決される。
【発明の効果】
【００１２】
本発明により、実行されるアプリケーションに対して適切な電力消費を実現することができる。
【発明を実施するための最良の形態】
【００１３】
以下、図面を参照しながら本発明の実施の形態について説明する。なお、以下の各図において同様の機能を実現する部分については同一の符号を付して説明を省略する。
【００１４】
（第１の実施の形態）
本実施の形態においては、複数のプロセッサエレメントを１チップ上に搭載するマルチプロセッサにおいて、タスクのスケジューリングを行い、各プロセッサエレメントに対して通常モード、２段階で電力消費を抑制するＲｅｓｔモード及びＳｌｅｅｐモードの切り替えを行う制御プロセッサエレメント（制御装置）について説明する。
【００１５】
図１は、本実施の形態に係る制御プロセッサエレメントを具備するマルチプロセッサの構造の一例を示すブロック図である。
【００１６】
マルチプロセッサ１は、１チップ上に複数のプロセッサエレメントＰＥ0〜ＰＥnを具備する。さらに、マルチプロセッサ１は、クロックを発生するＰＬＬ（Phase Locked Loop）２、制御プロセッサエレメントＣＰＥを具備する。
【００１７】
プロセッサエレメントＰＥ0〜ＰＥnは、メモリ３に記憶されているアプリケーション・プログラム３ａを実行する。
【００１８】
各プロセッサエレメントＰＥ0〜ＰＥnには、それぞれクロックの供給時にＯＮ状態となり、クロックの供給停止時にＯＦＦ状態となるクロックゲートＧ0〜Ｇnが備えられている。
【００１９】
各プロセッサエレメントＰＥ0〜ＰＥnには、それぞれ電源モジュールＥ0〜Ｅnによって電源が供給される。
【００２０】
電源制御チップ４は、制御プロセッサエレメントＣＰＥからの命令にそって、電源モジュールＥ0〜ＥnのＯＮ／ＯＦＦを切り替える。
【００２１】
本実施の形態においては、各プロセッサエレメントＰＥ0〜ＰＥnのそれぞれに対して、電源モジュールＥ0〜Ｅnが対応付けされている場合を例として説明する。
【００２２】
制御プロセッサエレメントＣＰＥは、メモリ５に記憶されている制御プログラム５ａを実行し、スケジュール管理部８、選択部６、モード制御部７として機能する。
【００２３】
スケジュール管理部８は、プロセッサエレメントＰＥ0〜ＰＥnに対するジョブ投入スケジュールを管理する。本実施の形態においては、スケジュール管理部８は、複数のタスクのうち並列に実行される必要のないタスクが、プロセッサエレメントＰＥ0〜ＰＥnのうちの特定のプロセッサエレメントに優先的に割り当てられるよう、タスクの実行スケジュールを調整する。
【００２４】
選択部６は、プロセッサエレメントＰＥ0〜ＰＥnのそれぞれに割り当てられるアプリケーション・プログラム３ａに含まれる複数のタスクの実行スケジュールに基づいて、プロセッサエレメントＰＥ0〜ＰＥnのそれぞれに対して、通常モード、Ｒｅｓｔモード、Ｓｌｅｅｐモードのいずれかを選択する。
【００２５】
ここで、通常モードは、タスクを実行する通常の状態を意味する。
【００２６】
Ｒｅｓｔモードは、モード切替時間がそれほどかからないが消費電力抑制効果が小さいモードである。すなわち、Ｒｅｓｔモードは、タスクが実行されていない時間に用いられ、通常モードよりも消費電力が抑制されるモードである。
【００２７】
Ｓｌｅｅｐモードは、モード切替時間がそれなりにかかる代わりに消費電力抑制効果が大きいモードである。すなわち、Ｓｌｅｅｐモードは、タスクが実行されていない時間に用いられ、Ｒｅｓｔモードよりも消費電力の抑制効果は大きいがモード切替時間が長いモードである。
【００２８】
なお、本実施の形態においては、Ｒｅｓｔモード選択時には、クロックの供給停止を行い、Ｓｌｅｅｐモード選択時には、電源供給の停止を行う場合について説明する。しかしながら、ＲｅｓｔモードとＳｌｅｅｐモードとしては、上記の関係を有すれば他の消費電力抑制手法を用いるとしてもよい。他の消費電力抑制の手法としては、例えば、電源電圧抑制、周波数抑制、バックバイアス印加などを用いることができる。
【００２９】
具体的には、選択部６は、プロセッサエレメントＰＥ0〜ＰＥnのそれぞれに対して、タスクの実行時間において通常モードを選択する。
【００３０】
また、選択部６は、プロセッサエレメントＰＥ0〜ＰＥnのそれぞれに対して、タスクの実行終了から次のタスクの実行開始までの時間が、設定されているＲｅｓｔモード適用範囲内の場合、このタスクの実行終了から次のタスクの実行開始までの間に対してＲｅｓｔモードを選択する。
【００３１】
さらに、選択部６は、プロセッサエレメントＰＥ0〜ＰＥnのそれぞれに対して、タスクの実行終了から次のタスクの実行開始までの時間が、Ｒｅｓｔモード適用範囲より長い場合（Ｓｌｅｅｐモード適用範囲の場合）、このタスクの実行終了から次のタスクの実行開始までの間に対してＳｌｅｅｐモードを選択する。
【００３２】
なお、選択部６は、Ｓｌｅｅｐモードを選択する場合、モード切替時間（Ｓｌｅｅｐモードの前と後の双方）とＳｌｅｅｐモードの実施時間とが、タスクの実行終了から次のタスクの実行開始までの時間を超えない範囲となるように、Ｓｌｅｅｐモードの実施時間を決定する。
【００３３】
そして、選択部６は、プロセッサエレメントＰＥ0〜ＰＥnのそれぞれに対して、次のタスクの実行時間において通常モードを選択する。
【００３４】
モード制御部７は、プロセッサエレメントＰＥ0〜ＰＥnのそれぞれに対して、選択部６によって選択されたモードに応じた制御を実行する。
【００３５】
具体的には、モード制御部７は、選択部６によってＲｅｓｔモードが選択されたプロセッサエレメントのクロックゲートに対してＯＦＦ状態となる旨のモード切替命令を発する。クロックゲートは、このモード切替命令に応じて、このクロックゲートに対応するプロセッサエレメントがタスクを実行していない状態になった後に、ＯＦＦ状態となる。また、モード制御部７は、Ｒｅｓｔモードが解消されるプロセッサエレメントのクロックゲートに対してＯＮ状態となる旨のモード切替命令を発する。クロックゲートは、モード切替命令に応じて、ＯＮ状態となる。
【００３６】
このように、クロックゲートにＯＦＦ状態となる旨のモード切替命令を発することで、このクロックゲートに対応するプロセッサエレメントで消費されるクロック消費電力をゼロにすることができる。
【００３７】
さらに、モード制御部７は、選択部６によってＳｌｅｅｐモードが選択されたプロセッサエレメントの識別情報と決定されたＳｌｅｅｐモードの実施時間とを含むモード切替命令を電源制御チップ４に発する。
【００３８】
電源制御チップ４は、モード切替命令の示すプロセッサエレメントに対応する電源モジュールを、モード切替命令の示すプロセッサエレメントがタスクを実行していない状態になった後、モード切替命令の示すＳｌｅｅｐモードの実施時間だけ停止させる。
【００３９】
このように、プロセッサエレメントに対応する電源モジュールをＯＦＦとし、このプロセッサエレメントへの電源供給を停止することにより、このプロセッサエレメントの消費電力そのものをゼロにすることができる。
【００４０】
以下に、上記のような構成の制御プロセッサエレメントＣＰＥを搭載したマルチプロセッサ１を、具体例を用いながら説明する。
【００４１】
本実施の形態に係るマルチプロセッサ１は、１チップ上に、例えば数百ＭＨｚ〜数ＧＨｚ級の複数のプロセッサエレメントＰＥ0〜ＰＥnを備えたチッププロセッサシステムである。
【００４２】
マルチプロセッサ１は、プロセッサエレメントＰＥ0〜ＰＥnに対するジョブ投入スケジュールを管理する制御プロセッサエレメントＣＰＥを具備する。
【００４３】
制御プロセッサエレメントＣＰＥは、プロセッサエレメントＰＥ0〜ＰＥnに対するジョブ投入スケジュールを管理する。なお、制御プロセッサエレメントＣＰＥも、他のプロセッサエレメントＰＥ0〜ＰＥnと同様にアプリケーション・プログラム３ａの実行に用いられるとしてもよい。
【００４４】
マルチプロセッサ１において消費電力抑制を図る手法としては、例えば、電源電圧抑制、周波数抑制、クロック供給停止、電源供給の停止、バックバイアス印加などがある。
【００４５】
このマルチプロセッサ１では、プロセッサエレメントＰＥ0〜ＰＥn単位、又はその上位のグループで２つの段階の消費電力抑制モードが設定される。
【００４６】
Ｒｅｓｔモードでは、プロセッサエレメントＰＥ0〜ＰＥnが通常に動作する通常モードからの移行、通常モードへの復帰にＳｌｅｅｐモードよりも時間がかからないが、消費電力抑制効果はＳｌｅｅｐモードよりも小さい消費電力抑制手法が用いられる。
【００４７】
これに対して、Ｓｌｅｅｐモードでは、通常モードからの移行、通常モードへの復帰にＲｅｓｔモードよりも時間がかかるがＲｅｓｔモードより消費電力抑制効果が大きい消費電力抑制手法が用いられる。
【００４８】
ここで、制御マルチプロセッサエレメントＣＰＥは、各プロセッサエレメントＰＥ0〜ＰＥnに対し、ジョブの実行を指示する時に、Ｒｅｓｔモードへの移行、Ｓｌｅｅｐモードへの移行、移行しない（通常モードのまま）、のいずれかを選択する選択部６を具備する。
【００４９】
制御マルチプロセッサエレメントＣＰＥのモード制御部７は、どのようなタイミングであっても、プロセッサエレメントＰＥ0〜ＰＥn及び電源制御チップ４に対して、モード切替命令を通知可能とする。すなわち、モード制御部７は、各プロセッサエレメントＰＥ0〜ＰＥn及び電源制御チップ４に対して、同時であってもモード切替命令を発行可能である。
【００５０】
なお、本実施の形態において、Ｓｌｅｅｐモードへ移行するモード切替命令については、このＳｌｅｅｐモードの実施時間情報（例えば、何ｓｅｃ経過後に通常モードに復帰するかを示す時間パラメータなど）が付加される。
【００５１】
プロセッサエレメントＰＥ0〜ＰＥnは、指定されたジョブの処理を完了した場合、制御マルチプロセッサエレメントＣＰＥから命令されたモードに移行する。
【００５２】
例えば、Ｓｌｅｅｐモードへの移行を示すモード切替命令にしたがって電源制御チップ４がいずれかの電源モジュールによる電源供給を停止すると、この電源モジュールに対応するプロセッサエレメントがＳｌｅｅｐモードに移行する。このＳｌｅｅｐモードのプロセッサエレメントについてＳｌｅｅｐモードの実施時間が経過すると、電源制御チップ４がＳｌｅｅｐモードのプロセッサエレメントに対する電源供給を開始し、このプロセッサエレメントは自動的に通常モードへ復帰する。
【００５３】
また、プロセッサエレメントＰＥ0〜ＰＥnは、制御マルチプロセッサエレメントＣＰＥからＲｅｓｔモードへの移行を示すモード切替命令を直接受けると、このモード切替命令にしたがってＲｅｓｔモードに移行する。例えば、プロセッサエレメントＰＥ0〜ＰＥnは、Ｒｅｓｔモードを示すモード切替命令を受けた場合に、自己のクロックゲートＧ0〜Ｇnを閉じ、Ｒｅｓｔモードに移行する。また、例えば、プロセッサエレメントＰＥ0〜ＰＥnは、通常モードへの移行を示すモード切替命令を受けた場合に、自己のクロックゲートＧ0〜Ｇnを開き、通常モードに移行する。
【００５４】
図２は、本実施の形態に係る制御プロセッサエレメントＣＰＥの動作の一例を示すフローチャートである。
【００５５】
ステップＳ１において、制御プロセッサエレメント１の選択部６は、ジョブ投入スケジュールに基づいて、プロセッサエレメントＰＥ0〜ＰＥnのうちのモード切替対象のプロセッサエレメントに対して、通常モード、Ｒｅｓｔモード、Ｓｌｅｅｐモードとのうちのいずれかを選択する。
【００５６】
ステップＳ２において、制御プロセッサエレメント１のモード制御部７は、モード切替対象のプロセッサエレメントに対して、選択部６によって選択されたモードに応じた動作を実行するために、モード切替命令を発する。
【００５７】
図３は、本実施の形態に係るマルチプロセッサ１によって実行されるアプリケーション・プログラム３ａの一例を示すタスクフローグラフである。
【００５８】
タスクフローグラフは、アプリケーション・プログラム３ａのコンパイル時に作成される。図３において、丸表示されたものがタスクであり、丸の中の文字がタスク番号であり、丸の右上の数値がそのタスクの見込み実行時間（例えばｓｅｃ）である。見込み実行時間は、コンパイラによる静的解析などによって得られる。
【００５９】
＜第１例＞として、図３のタスクフローに対するＲｅｓｔモードの選択について説明する。
【００６０】
図４は、Ｒｅｓｔモードによるバリア同期時の消費電力抑制の一例を表す図である。
【００６１】
タスクＴ６は、タスクＴ２，Ｔ３の実行結果を必要とし、タスクＴ７はタスクＴ３，Ｔ４の実行結果を必要とする。
【００６２】
このように、複数のタスク実行結果に依存した後続タスクがある場合、先行の複数のタスク（例えば、タスクＴ２，Ｔ３）間でバリア同期が必要になる。
【００６３】
タスクＴ２，Ｔ３又はタスクＴ３，Ｔ４のように、バリア同期が必要な同程度の見込み実行時間のタスクが投入される場合、両タスクはなるべく同程度の時期に終了し、時間的にも電力的にもロスなく処理されることが期待される。
【００６４】
しかしながら、実際には、プロセッサエレメントのマイクロアーキテクチャ依存の問題、メモリアーキテクチャの問題などにより終了時間にずれが生じる。
【００６５】
そこで、このようにバリア同期が必要であり、かつタスクの見込み実行時間が同程度のタスクを投入するようなケースでは、制御プロセッサエレメントＣＰＥは、制御対象のプロセッサエレメントに、そのタスクの終了後Ｒｅｓｔモードに移行するように、予めＲｅｓｔモードを示すモード切替命令を通知しておく。
【００６６】
そして、制御対象のプロセッサエレメントは、タスク実行を完了すると直ちにＲｅｓｔモードに移行する。
【００６７】
これにより、バリア同期対象のタスク間において、そのタスクの終了時刻にずれが生じた場合であっても、無駄な電力消費を抑えることができる。
【００６８】
Ｒｅｓｔモード中のプロセッサエレメントに対して新たなタスクを投入する場合、制御プロセッサエレメントは通常モードへ復帰する旨のモード切替命令を、モード切替対象のプロセッサエレメントに通知する。この場合において、Ｒｅｓｔモードから通常モードへの復帰時間は短いため、ほとんどロスなくタスクを投入できる。
【００６９】
次に、＜第２例＞として、上記の図３のタスクフローに対するＳｌｅｅｐモードの選択について説明する。
【００７０】
図５は、Ｓｌｅｅｐモードによるバリア同期時の消費電力抑制の一例を表す図である。
【００７１】
タスクＴ５は、タスクＴ６〜Ｔ８と同様に、タスクＴ１０を後続に持つ先行依存タスクである。
【００７２】
先で説明した＜第１例＞にしたがった場合、タスクＴ５は、タスク実行終了後直ちにＲｅｓｔモードに移行すべきタスクである。
【００７３】
しかしながら、静的スケジューリングによりタスクＴ５がマップされたプロセッサエレメントＰＥ3には、タスクＴ５実行終了後、割り当てられる後続タスクがしばらく（あるしきい値を超えて）ないことが認識される。
【００７４】
このような場合、制御プロセッサエレメントＣＰＥは、プロセッサエレメントＰＥ3に対してタスクＴ５実行終了後、Ｓｌｅｅｐモードに４６ｓｅｃの間移行する旨のモード切替命令を電源制御チップ４に通知する。
【００７５】
通常モードからＳｌｅｅｐモードへのモード切替時間、及びＳｌｅｅｐモードから通常モードへのモード切替時間は、Ｒｅｓｔモードの場合と比べて長くなる。すなわち、タスクの処理にプロセッサエレメントＰＥ3が必要となった時点で、Ｓｌｅｅｐモードから通常モードに復帰するのでは時間ロスが大きくなるため、この＜第２例＞では、タスクＴ５実行終了後から、次のタスクＴ１５の開始前までの間に、通常モードからＳｌｅｅｐモードへのモード切替時間、Ｓｌｅｅｐモードの実施時間、Ｓｌｅｅｐモードから通常モードへのモード切替時間が含まれるように、Ｓｌｅｅｐモードの実施時間を特定することが有効である。
【００７６】
以上説明した本実施の形態においては、投入されるタスクの特性に応じて、通常モードと、消費電力抑制のための２段階のモードとのうちのいずれかが選択される。これにより、アプリケーション・プログラム３ａを実行するマルチプロセッサ１を、適切な消費電力により動作させることができる。
【００７７】
本実施の形態において、Ｓｌｅｅｐモードの実施時間は、モード切替時間を考慮して決定される。これにより、タスクの実行スケジュールに影響を与えることなく、消費電力を抑制することができる。
【００７８】
本実施の形態においては、並列に実行される必要のないタスクをなるべく１つのプロセッサエレメントに集中させて実行させる。これにより、モード切替回数を少なくすることができ、一層の消費電力抑制効果が得られる。
【００７９】
上記実施の形態において、各構成要素は同様の動作を実現可能であれば配置を変更させてもよく、また各構成要素を自由に組み合わせてもよく、各構成要素を自由に分割してもよく、いくつかの構成要素を削除してもよい。すなわち、本実施の形態については、上記の構成そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。
【００８０】
例えば、電源制御チップ４と電源モジュールＥ0〜Ｅnを削除し、各プロセッサエレメントＰＥ0〜ＰＥn自体がモード切替命令に応じて電源ＯＮ／ＯＦＦを切り替える機能を持つとしてもよい。すなわち、図６に例示するマルチプロセッサ９のように、プロセッサエレメントＰＥ0〜ＰＥn自体が、モード切替命令を受信し、受信したモード切替命令に応じて自己のモードを切り替える機能を備えるとしてもよい。
【００８１】
また、例えば、複数のプロセッサエレメントＰＥ0〜ＰＥnに一つの電源モジュールが対応付けされており、この一つの電源モジュールが各プロセッサエレメントＰＥ0〜ＰＥnへの電源の供給をＯＮ／ＯＦＦ可能としてもよい。
【００８２】
また、例えば、電源モジュールＥ0〜Ｅnと電源制御チップ４とを組み合わせた装置により、プロセッサエレメントＰＥ0〜ＰＥnのいずれかには電源を供給し、プロセッサエレメントＰＥ0〜ＰＥnの他のいずれかには電源供給を停止可能としてもよい。
【００８３】
例えば、図７に示すように、プロセッサエレメントＰＥ0〜ＰＥnのいずれかが、本実施の形態に係る制御プロセッサエレメントＣＰＥと同様の動作を実施するとしてもよい。この図７のマルチプロセッサ１０は、プロセッサエレメントＰＥ0によりジョブ投入スケジュールが管理され、プロセッサエレメントＰＥ0からから他のプロセッサエレメントＰＥ1〜ＰＥnにモード切替命令が通知され、プロセッサエレメントＰＥ1〜ＰＥnはモード切替命令にしたがってモードを切り替える。プロセッサエレメントＰＥ0もアプリケーション・プログラム３ａの実行に用いられるとしてもよい。
【００８４】
（第２の実施の形態）
本実施の形態においては、上記第１の実施の形態の変形例について説明する。本実施の形態では、並列に実行する必要のないタスクを特定のプロセッサエレメントに集中させる最適化を行った場合と、集中させない場合との比較について説明する。
【００８５】
本実施の形態では、マルチプロセッサに消費される電力１００％のうち、ＡＣで５０％、クロックで４０％、ＤＣで１０％が消費されると仮定する。ここで、ＡＣとは回路が動作することによって消費する電力であり、クロックとはそのブロックに供給されているクロックで消費する電力であり、ＤＣとはその回路のリーク電力である。
【００８６】
また、本実施の形態においては、Ｒｅｓｔモードは動作周波数を１／４に抑制するモードであり、Ｓｌｅｅｐモードはクロック供給の停止を行う（クロックゲーティング）モードであるとする。
【００８７】
この場合、図８に例示するように、Ｒｅｓｔモードでは、ＡＣの割合５０％＋クロックの割合４０％×（３／４）＝８０％の電力を抑制できる。また、Ｒｅｓｔモードでは、モード切替時間が０．２ｓｅｃかかるとする。
【００８８】
一方、Ｓｌｅｅｐモードでは、ＡＣの消費電力の割合５０％とクロックの消費電力の割合４０％の全てがカットされ、９０％の電力を抑制できる。また、Ｓｌｅｅｐモードでは、モード切替時間が５ｓｅｃかかるとする。
【００８９】
図９は、なるべくプロセッサエレメントＰＥ2にタスクが集められているが、各タスク間ではプロセッサエレメントＰＥ0〜ＰＥ3がidle状態となる（モード切替が行われない）場合のタスクフローグラフの一例を示している。
【００９０】
この図９のタスクフローグラフに対するトータルの消費電力の評価値は２４８．９となる。
【００９１】
図１０は、特定のプロセッサエレメントＰＥ2に並列に動作する必要のないタスクを集める最適化を行うとともに、モード切替を行う場合のタスクフローグラフの一例を示している。
【００９２】
この図１０のタスクフローグラフに対するトータルの消費電力の評価値は２１８．７となる。
【００９３】
図１１は、タスク配置の最適化は行われないが、モード切替が行われる場合のタスクフローグラフの一例を示している。
【００９４】
この図１１のタスクフローグラフに対するトータルの消費電力の評価値は２２８．５となる。
【００９５】
上記図９から図１０のタスクフローグラフにおけるシミュレーションによって得られる評価値は、数が少ないほど消費電力が抑制されている状態を表す。
【００９６】
このシミュレーションにより、Ｒｅｓｔモード及びＳｌｅｅｐモードへの切替を行う方が、Ｒｅｓｔモード及びＳｌｅｅｐモードへの切替を行わない場合よりも消費電力が抑制可能であり、さらに、最適化を行うことで消費電力が抑制されることが確認される。
【００９７】
なお、上記各実施の形態において、Ｒｅｓｔモードに周波数抑制を用い、Ｓｌｅｅｐモードに電源停止を用いるとしてもよい。
【図面の簡単な説明】
【００９８】
【図１】本発明の第１の実施の形態に係る制御プロセッサエレメントを具備するマルチプロセッサの構造の一例を示すブロック図。
【図２】第１の実施の形態に係る制御プロセッサエレメントの動作の一例を示すフローチャート。
【図３】第１の実施の形態に係るマルチプロセッサによって実行されるアプリケーション・プログラムの一例を示すタスクフローグラフ。
【図４】Ｒｅｓｔモードによるバリア同期時の消費電力抑制の一例を表す図。
【図５】Ｓｌｅｅｐモードによるバリア同期時の消費電力抑制の一例を表す図。
【図６】第１の実施の形態に係るマルチプロセッサの第１変形例を示すブロック図。
【図７】第１の実施の形態に係るマルチプロセッサの第２変形例を示すブロック図。
【図８】Ｒｅｓｔモード及びＳｌｅｅｐモードについてのモード切替時間と削減電力の比率との一例を示す図。
【図９】特定のプロセッサエレメントに並列に動作しなくてよいタスクを集める最適化がなされているが、モード切替が行われない場合のタスクフローグラフの一例を示す図。
【図１０】特定のプロセッサエレメントに並列に動作しなくてよいタスクを集める最適化を行うとともに、モード切替を行う場合のタスクフローグラフの一例を示す図。
【図１１】は、タスク配置の最適化は行われないが、モード切替を行う場合のタスクフローグラフの一例を示す図。
【符号の説明】
【００９９】
１，９，１０…マルチプロセッサ、２…ＰＬＬ、３，５…メモリ、３ａ…アプリケーション・プログラム、４…電源制御チップ、５ａ…制御プログラム、６…選択部、７…モード制御部、８…スケジュール管理部、ＣＰＥ…制御プロセッサエレメント、ＰＥ0〜ＰＥn…プロセッサエレメント、Ｇ0〜Ｇn…クロックゲート、Ｅ0〜Ｅn…電源モジュール
【図１】
2008276331.tif 000003
【図２】
2008276331.tif 000004
【図３】
2008276331.tif 000005
【図４】
2008276331.tif 000006
【図５】
2008276331.tif 000007
【図６】
2008276331.tif 000008
【図７】
2008276331.tif 000009
【図８】
2008276331.tif 000010
【図９】
2008276331.tif 000011
【図１０】
2008276331.tif 000012
【図１１】
2008276331.tif 000013