(57)【要約】【課題】  一群のタスクに着目して、一群のタスクを処理する複数のプロセッサコアへ供給する電源電圧又は動作クロックの周波数を関連をもたせて制御する機能を備えることにより、低電力化を図ったマルチコアプロセッサの提供。【解決手段】  複数のプロセッサコアと、タスクについての第１タスク群の識別番号と、タスク処理時間と、第１タスク群に含まれるタスクを実行する上限期間を記憶するレジスタと、第１タスク群に含まれるタスクの内、並列に処理される複数のタスクからなる第２タスク群を抽出し、第２タスク群を処理する第１処理時間を、第２タスク群を処理するプロセッサコアの消費電力に応じて第２処理時間として設定する設定回路と、タスク処理時間と、第２処理時間との比率に応じて、各タスクを処理するプロセッサコアへ供給する動作クロックの周波数又は電源電圧を変更する駆動回路と、を備えるマルチコアプロセッサが提供される。 【選択図】    図１
2010211544.tif 000002
【特許請求の範囲】
【請求項１】
複数のタスクを並列処理する複数のプロセッサコアと、
各前記タスクについて、関連する第１タスク群を識別する識別番号と、予め決められた動作クロックの周波数又は電源電圧の供給を受けて、前記プロセッサコアが前記タスクを処理するのに必要なタスク処理時間と、前記第１タスク群に含まれる前記タスクを実行する上限期間を記憶するレジスタと、
前記第１タスク群に含まれる前記タスクの内、並列に処理される前記タスクであって同一の前記タスクに繋がる複数の前記タスクからなる第２タスク群を抽出し、前記複数の前記タスクの前記タスク処理時間の内、最長の前記タスク処理時間を前記第２タスク群を処理する第１処理時間とし、前記第２タスク群を処理する前記プロセッサコアの消費電力と前記第１処理時間に応じて、前記上限期間中に占める前記第２タスク群を実行する第２処理時間を設定する設定回路と、
前記タスク処理時間と、前記第２処理時間との比率に応じて、各前記タスクを処理する前記プロセッサコアへ供給する動作クロックの周波数又は電源電圧を前記予め決められた動作クロックの周波数又は電源電圧から変更させる駆動回路と、
を備えることを特徴とするマルチコアプロセッサ。
【請求項２】
前記設定回路は、さらに、前記第１タスク群に含まれる前記タスクについて、前記第２タスク群を含む前記タスクに対して直列に実行される直列タスクを特定し、前記直列タスクの前記タスク処理時間と、前記直列タスクを処理する前記プロセッサコアの消費電力とに応じて、前記上限期間中に占める前記直列タスクを実行する第３処理時間を設定し、
駆動回路は、さらに、前記直列マスクの前記タスク処理時間と、前記第３処理時間との比率に応じて、前記直列タスクを処理する前記プロセッサコアへ供給する動作クロックの周波数又は電源電圧を前記予め決められた動作クロックの周波数又は電源電圧より低下させることを特徴とする請求項１記載のマルチコアプロセッサ。
【請求項３】
前記第２タスク群を処理する前記プロセッサコアの消費電力をＡ２、前記第２処理時間をＴ２、前記Ａ２とＴ２（１−ｑ）との比例係数をＢ２とし、前記直列タスクを処理する前記プロセッサコアの消費電力をＡ３、前記第３処理時間をＴ３、前記Ａ３とＴ３（１−ｑ）との比例係数をＢ３とすると、前記設定回路は、Ｂ２（１／ｑ）：Ｂ３（１／ｑ）＝Ｔ２：Ｔ３と設定することを特徴とする請求項２記載のマルチコアプロセッサ。
【請求項４】
複数のタスクを並列処理する複数のプロセッサコアと、
各前記タスクについて、関連する第１タスク群を識別する識別番号と、予め決められた動作クロックの周波数又は電源電圧の供給を受けて、前記プロセッサコアが前記タスクを処理するのに必要なタスク処理時間と、前記第１タスク群に含まれる前記タスクを実行する上限期間を記憶するレジスタと、を備える前記マルチコアプロセッサの制御方法であって、
前記第１タスク群に含まれる前記タスクの内、並列に処理される前記タスクであって同一の前記タスクに繋がる複数の前記タスクからなる第２タスク群を抽出する工程と、
前記複数の前記タスクの前記タスク処理時間の内、最長の前記タスク処理時間を前記第２タスク群を処理する第１処理時間とし、前記第２タスク群を処理する前記プロセッサコアの消費電力と前記第１処理時間に応じて、前記上限期間中に占める前記第２タスク群を実行する前記第２処理時間を設定する工程と、
前記タスク処理時間と、前記第２処理時間との比率に応じて、各前記タスクを処理する前記プロセッサコアへ供給する動作クロックの周波数又は電源電圧を前記予め決められた動作クロックの周波数又は電源電圧から変更させる工程と、
を備えることを特徴とするマルチコアプロセッサの制御方法。
【請求項５】
複数のタスクを並列処理する複数のプロセッサコアと、
各前記タスクについて、関連する第１タスク群を識別する識別番号と、予め決められた動作クロックの周波数又は電源電圧の供給を受けて、前記プロセッサコアが前記タスクを処理するのに必要なタスク処理時間と、前記第１タスク群に含まれる前記タスクを実行する上限期間を記憶するレジスタと、を備える前記マルチコアプロセッサの制御方法であって、
前記第１タスク群に含まれる前記タスクの内、並列に処理される前記タスクであって同一の前記タスクに繋がる複数の前記タスクからなる第２タスク群を抽出する工程と、
前記第１タスク群に含まれるタスクについて、前記第２タスク群に含まれる前記タスクに対して直列に実行される直列タスクを特定する工程と、
前記第２タスク群を処理する前記プロセッサコアの消費電力をＡ２、前記第２処理時間をＴ２、前記Ａ２とＴ２（１−ｑ）との比例係数をＢ２とし、前記直列タスクを処理する前記プロセッサコアの消費電力をＡ３、前記直列タスクの前記タスク処理時間をＴ３、前記Ａ３とＴ３（１−ｑ）との比例係数をＢ３とすると、前記設定回路は、Ｂ２（１／ｑ）：Ｂ３（１／ｑ）＝Ｔ２：Ｔ３と設定する工程と、
前記タスク処理時間と、前記第２処理時間との比率に応じて、各前記タスクを処理する前記プロセッサコアへ供給する動作クロックの周波数又は電源電圧を前記予め決められた動作クロックの周波数又は電源電圧から変更させ、前記直列マスクの前記タスク処理時間と、前記第３処理時間との比率に応じて、前記直列タスクを処理する前記プロセッサコアへ供給する動作クロックの周波数又は電源電圧を前記予め決められた動作クロックの周波数又は電源電圧から変更させる工程と、
を備えることを特徴とするマルチコアプロセッサの制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
アルチコアプロセッサ及びマルチコアプロセッサの低電力化を図る制御方法に関する。
【背景技術】
【０００２】
複数のプロセッサコアを備えるマルチコアプロセッサにおいては、各プロセッサコアがタスクを並列実行するように、タスクが各プロセッサコアに割り振られるため、高い演算性能が実現されている。そして、マルチコアプロセッサの低電力化を図るため、いわゆる、動的電圧周波数制御（ＤＶＦＳ：Dynamic Voltage Frequency Scaling）がマルチコアプロセッサにおいて行われている。
ここで、単一のプロセッサコアを備えるプロセッサにおいて、タスクに対して要求される処理時間が、プロセッサコアの最大性能によって決まるタスク処理可能な時間より長い場合がある。そこで、単一のプロセッサコアにおいて、ＤＦＶＳは、プロセッサコアへ供給する電源電圧又は動作クロックの周波数を低下させ、要求される処理時間に応じて、実際のタスク処理時間を引き延ばすことによって実行される。
【０００３】
一方、マルチコアプロセッサにおいては、各プロセッサコアにとって、タスクは切れ目なく連続して割り当てられるのではなく、並列性の要因で、他のプロセッサコアの状況に応じて、一つのタスク終了後、次のタスク処理開始までの待ち時間が存在する。そこで、マルチコアプロセッサにおいて、ＤＦＶＳは、タスクに対して要求される処理時間と、タスク処理開始までの待ち時間の双方を考慮して、プロセッサコアへ供給する電源電圧又は動作クロックの周波数を低下させ、実際のタスク処理時間を引き延ばすことによって実行される（特許文献１参照。）。
【０００４】
すなわち、一般的に、ＤＦＶＳは注目するプロセッサコアに割り当てられた、一つのタスクとその次に割り当てられたタスクとの関係に着目して、注目するプロセッサコアへ供給する電源電圧又は動作クロックの周波数を制御することにより実行される。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００６−２９３７６８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
一群のタスクに着目して、一群のタスクを処理する複数のプロセッサコアへ供給する電源電圧又は動作クロックの周波数を関連をもたせて制御する機能を備えることにより、低電力化を図ったマルチコアプロセッサ、及び、一群のタスクを処理する複数のプロセッサコアへ供給する電源電圧又は動作クロックの周波数を関連をもたせて制御して、マルチコアプロセッサの低電力化を図る制御方法を提供する。
【課題を解決するための手段】
【０００７】
上記の課題を解決するため、発明の側面によって、
複数のタスクを並列処理する複数のプロセッサコアと、各タスクについて、関連する第１タスク群を識別する識別番号と、プロセッサコアがタスクを処理するのに必要なタスク処理時間と、第１タスク群に含まれるタスクを実行する上限期間を記憶するレジスタと、
第１タスク群に含まれるタスクの内、並列に処理されるタスクであって同一のタスクに繋がる複数のタスクからなる第２タスク群を抽出し、複数のタスクのタスク処理時間の内、最長のタスク処理時間を第２タスク群を処理する第１処理時間とし、第２タスク群を処理するプロセッサコアの消費電力と第１処理時間に応じて、上限期間中に占める第２タスク群を実行する第２処理時間を設定する設定回路と、
タスク処理時間と、第２処理時間との比率に応じて、各タスクを処理するプロセッサコアへ供給する動作クロックの周波数又は電源電圧を予め決められた動作クロックの周波数又は電源電圧から変更させる駆動回路と、を備えることを特徴とするマルチコアプロセッサが提供される。
【発明の効果】
【０００８】
その結果、大きな消費電力を必要とするタスク群について、上限期間中に占める処理時間が長くなり、そのタスク群を実行するプロセッサコアの消費電力が大きく削減されるため、マルチコアプロセッサの消費電力削減が大きくなる効果がある。
【図面の簡単な説明】
【０００９】
【図１】図１は実施例１のマルチコアプロセッサ１０を示す図である。
【図２】図２は、マルチコアプロセッサ１０の低電力化を図る制御方法を説明するフローチャート２０である。
【図３】図３Ａ、図３Ｂ、図３Ｃ、図３Ｄは、オペレーションｏｐ１の具体例を説明する図である。
【図４】図４Ａ、図４Ｂは、オペレーションｏｐ２の具体例を説明する図である。
【図５】図５Ａ、図５Ｂ、図５Ｃ、図５Ｄ、及び、図５Ｅはオペレーションｏｐ２を、より複雑な関係にあるタスクから構成されているタスクグループに対して行う例を示す。
【図６】図６はオペレーションｏｐ４の具体例を説明する図である。
【発明を実施するための形態】
【００１０】
本発明は、以下に説明する実施例に対し、当業者が想到可能な、設計上の変更が加えられたもの、及び、実施例に現れた構成要素の組み換えが行われたものも含む。また、本発明は、その構成要素が同一の作用効果を及ぼす他の構成要素へ置き換えられたもの等も含み、以下の実施例に限定されない。
【実施例】
【００１１】
図１は実施例１のマルチコアプロセッサ１０を示す図である。実施例１のマルチコアプロセッサ１０は、スケジューラ１１、基準タスク情報用メモリ１２、タスク情報用メモリ１３、周波数制御回路１４、電源電圧制御回路１５、ｎ個のプロセッサコア１８１からプロセッサコア１８ｎ（ｎは１以上の整数）まで、バス１９によって構成されている。
マルチコアプロセッサ１０は、タスクグループに含まれる複数のタスクを並列に実行するプロセッサである。
スケジューラ１１は、各プロセッサコア１８ｎに対してタスクの割り当て、各プロセッサコア１８ｎにおける割り当てたタスクの処理時間を算出し、その処理時間に応じて各プロセッサコアに供給する電源電圧及び動作クロックの周波数を決定する回路である。
基準タスク情報用メモリ１２は、タスクグループに含まれる基準タスクについて、その基準タスクが関連するタスクグループを特定するタスクＩＤ番号（識別番号）と、予め決められた標準動作において、各プロセッサコア１８ｎが基準タスクを処理する制約時間、基準タスクの開始時間、基準タスクを実行しているか否かを表す実行フラグを記憶するメモリである。
【００１２】
タスク情報用メモリ１３は、基準タスクを除く、すべてのタスクを特定するタスクＩＤ（識別番号）、そのタスクが関連する基準タスクのＩＤ（識別番号）、各プロセッサコア１８ｎの標準動作に対する動作クロックの周波数及び電源電圧においてそのタスクを実行する標準処理時間を記憶するメモリである。
周波数制御回路１４は、クロック発生回路を含み、各プロセッサコア１８ｎへ動作クロックを供給する回路である。周波数制御回路１４は、各プロセッサコア１８ｎの動作クロックの周波数の情報を、スケジューラ１１から、バス１９を介して、受け取る。なお、クロック発生回路は異なるクロック周波数をもつ複数のクロックを発生することとし、それらを切替ることにより、ことなる動作クロックを供給することでもよいし、一つのクロックを発生させ、そのクロックを分周することにより、動作クロックを発生させてもよい。
【００１３】
電源電圧制御回路１５は、電源電圧発生回路を含み、各プロセッサコア１８ｎへ電源電圧を供給する。電源電圧制御回路１５は、各プロセッサコア１８ｎの電源電圧の情報を、スケジューラ１１からバス１９を介して、受け取る。
プロセッサコア１８ｎは、スケジューラに割り当てられた各タスクを実行するプロセッサである。
バス１９は、マルチコアプロセッサ１０を構成する各回路間の信号を伝達するために用いられる。
【００１４】
図２は、マルチコアプロセッサ１０の低電力化を図る制御方法を説明するフローチャート２０である。
オペレーションｏｐ１において、スケジューラ１１は、時間配分を実施するタスクグループを、基準タスクのタスクＩＤ番号により抽出し、そのタスクグループに関連するすべてのタスクを、そのタスクのタスクＩＤと、そのタスクが関連する基準タスクのＩＤにより特定する。次いで、スケジューラ１１は、タスク間の時間順序関係を、マルチコアプロセッサ１０に与えられたプログラムの解析を行うことにより把握する。ここで、時間順序関係には、各タスクの開始時期の順序関係だけでなく、一方のタスクの処理結果を、他方のタスクの実行に用いることとなるか否かの関係も含む。なお、スケジューラ１１は、図３Ｄに示すタスク間の依存グラフについても、プログラムの解析から得られた時間順序関係から構築する。
【００１５】
図３Ａ、図３Ｂ、図３Ｃ、図３Ｄは、オペレーションｏｐ１の具体例を説明する図である。図３Ａは基準タスクとなるタスクＥの基準タスク情報を示すテーブルを示す。基準タスク情報は、基準タスクＥのタスクＩＤ番号、制約時間、開始時間、実行フラグから構成されている。そして、基準タスクＥのタスクＩＤ番号により、タスクグループを、スケジューラ１１は抽出する。図３Ｂはタスクのタスク情報を示すテーブルを示す。タスク情報は、タスクＡ、Ｂ、Ｃ、ＤのタスクＩＤ、基準タスクＩＤ、処理量、標準処理時間から構成されている。そこで、スケジューラ１１はタスクＩＤと、基準タスクＩＤからタスクグループに関連するタスクを特定する。
図３Ｃはタスクグループにおけるタスク間の時間順序関係を示す図である。スケジューラ１１は、与えられたプログラムから、タスクＡ、Ｂ、Ｃ、及び基準タスクＥの処理が開始後、タスクＤの処理が開始され、タスクＡ、Ｂ、Ｃの処理結果をタスクＤで使用することを認識する。さらに、スケジューラ１１は、タスクＦの処理はタスクＤの処理が開始された後に行われ、タスクＦは基準タスクＥ及びタスクＤの結果を使用することを認識する。なお、タスクＡ、Ｂ、Ｃ、Ｄ、Ｅはこのタスクグループに関連するタスクであり、処理時間の割り振りの対象となるタスクである。タスクＦはこのタスクグループの後に続くタスクである。
図３Ｄはタスクグループの依存関係グラフを示す図である。依存グラフとは、タスクをノード、タスク間の時間順序関係を枝としたグラフをいう。さらに、最終段のノードをルート、自己へ繋がるノードを持たないノードをリーフとする。そうすると、タスクＡ、Ｂ、Ｃ及び、基準タスクＥはリーフノードであり、タスクＤ、Ｆはルートノードとなる。スケジューラ１１は、タスクグループにおけるタスク間の順序関係をプログラムの解析から抽出し、図３Ｄのような依存グラフとして認識する。
【００１６】
図２を参照し、オペレーションｏｐ２において、スケジューラ１１は、各タスクに処理時間の割り振りを行う。より詳細には、オペレーションｏｐ２は以下のように行われる。
オペレーションｏｐ２−１において、スケジューラ１１は、並列に処理されるタスクであって、同一タスクに繋がるタスクを抽出する。そして、各タスク及び同一タスクを処理するプロセッサコア１８ｎに対して、タスクの処理時間Ｔｌに依存する消費電力Ｐｋを求める。ここで、消費電力Ｐｋは以下の式で与えられる。
Ｐｋ＝Ｐ０×Ｔｌ×（Ｌｋ／Ｔｌ／Ｒ０）ｑ＝Ａｋ×Ｔｌ(1-q)―――――（１）式
Ａｋ＝Ｐ０×（Ｌｋ／Ｒ０）ｑ―――――（２）式
Ｐ０：プロセッサコア１８ｎの標準動作に対する、プロセッサコア１８ｎの消費電力
Ｒ０：プロセッサコア１８ｎの標準動作に対する、プロセッサコア１８ｎの単位時間あたりの最大処理量
Ｌｋ：タスクの処理量
ｑ：ＤＶＦＳを適用するプロセッサコア１８ｎの特性によってきまる特性係数であり、１．５から２程度の値である
なお、Ｐ０、Ｒ０については、すべてのプロセッサコア１８ｎにおいて共通値としたが、共通値でなくても、差し支えない。また、Ｐ０、Ｒ０は予め、スケジューラ１１に記憶させておくことができる。
また、消費電力Ｐｋが処理時間Ｔｌの関数として表される理由を以下において説明する。まず、単位時間あたりの電力Ｐは一般的に周波数ｆと電源電圧Ｖとから、Ｐ∝ｆ×Ｖ２と表される。次いで、論理ゲートの遅延時間は、電源電圧Ｖと、Ｔｄ∝Ｖ−２．５〜−３．５の関係にある。よって、Ｖ２∝Ｔ−0．57〜−0．8である。一方、f∝１／Ｔｄである。よって、Ｐ∝ｆ１．57〜１．8である。さらに、負荷量Ｌのタスクを周波数ｆで処理した場合の処理時間Ｔは、周波数ｆ０で単位時間あたりのＲ０の負荷を処理できるプロセッサと仮定すると、Ｔ＝Ｌ×ｆ０／Ｒ０／ｆとなる。従って、ｆ∝Ｌ／Ｔ／Ｒ０となる。そこで、処理時間Ｔの間の消費電力は、Ｐ×Ｔであるから、Ｐｋ＝Ｐ×Ｔ∝Ｔ×（Ｌ／Ｔ／Ｒ０）１．57〜１．8となる。
【００１７】
次いで、抽出したタスクを統合タスクとし、統合タスクの消費電力として、各タスクの消費電力の和をとる。すなわち、以下のようになる。
統合タスクの総電力＝ΣＰ０×Ｔｓ×（Ｌｋ／Ｔｓ／Ｒ０）ｑ＝（Ｂｓ）×Ｔｓ(1-q)――――――――（３）式
Ｂｓ＝ΣＡｋ＝ΣＰ０×（Ｌｋ／Ｒ０）ｑ―――（４）式
ここで、Ｔｓは統合タスクを実行する複数のプロセッサコア１８ｎについて共通の処理時間である。
【００１８】
オペレーションｏｐ２−２において、スケジューラ１１は、順次直列的に行われる統合タスクを抽出し、シーケンシャルタスクとする。なお、並列に行われるタスクがなく、オペレーションｏｐ２−１の統合タスクとはならないが、オペレーションｏｐ２−１の統合タスクと直列に行われるタスクも、オペレーションｏｐ２−２の統合タスクであるとする。
その結果、複数の統合タスクが順次直列に繋がることになる。そして、ｍ個の統合マスクからシーケンシャルタスクが構成されたとすると、そのシーケンシャルタスクの消費電力ＣＳｎは、以下となる。
ＣＳｎ＝Ｂｎ１×Ｔｎ１(1-q)＋Ｂｎ２×Ｔｎ２(1-q)＋．．．．．＋Ｂｎｍ×Ｔｎｍ(1-q)――――（５）式
なお、Ｂｎｍは統合タスクの総電力を表す式における係数Ｂｓであり、電力係数とする。また、Ｔｎｍは統合タスクを実行する複数のプロセッサコア１８ｎについて共通の処理時間である。
次いで、スケジューラ１１は、それぞれの統合タスクの電力係数の１／ｑ乗の比率と、それぞれの統合タスクの処理時間の比率が一致するように、統合タスクの処理時間の比率を決定する。
すなわち、Ｂｎ１(1／q)：Ｂｎ２(1／q)：．．．：Ｂｎｍ(1／q)＝Ｔｎ１：Ｔｎ２：．．．：Ｔｎｍとなるように、Ｔｎ１、Ｔｎ２、．．．、Ｔｎｍの比率を決定する。
シーケンシャルタスク全体を行うための処理時間がＴｎと与えられた場合には、Ｔｎ内における、それぞれの統合タスクの処理時間はＴｎ１＝Ｔｎ×Ｂｎ１(1／q)／（Ｂｎ１(1／q)＋Ｂｎ２(1／q)＋．．．＋Ｂｎｍ(1／q)）、．．．．、Ｔｎｍ＝Ｔｎ×Ｂｎｍ(1／q)／（Ｂｎ１(1／q) ＋Ｂ２(1／q)＋．．．＋Ｂｎｍ(1／q)）のように割り振られ、ＣＳｎは（５）式より、
ＣＳｎ＝Ｔｎ(1-q)×（Ｂｎ１(1／q)＋Ｂｎ２(1／q)＋．．．＋Ｂｎｍ(1／q)）／（Ｂｎ１(1／q)＋Ｂｎ２(1／q)＋．．．＋Ｂｎｍ(1／q)）(1-q)＝Ｔｎ(1-q)×（Ｂｎ１(1／q)＋Ｂｎ２(1／q)＋．．．＋Ｂｎｍ(1／q)）q――――（６）式
となる。
【００１９】
オペレーションｏｐ２−３において、スケジューラ１１は、基準タスクを除く、タスクグループ中のすべてのタスクをオペレーションｏｐ２−１、オペレーションｏｐ２−２の統合タスク又はオペレーションｏｐ２−２のシーケンシャルタスクに組み込む。ここで、上記のタスクをシーケンシャルタスクに取り込む際、オペレーションｏｐ２−２のシーケンシャルタスクに並列であり、同一タスクに繋がるオペレーションｏｐ２−２又はオペレーションｏｐ２−１の統合タスク、又は、オペレーションｏｐ２−２シーケンシャルタスクがあった場合は、あらたに、それらを統合してオペレーション２−３の統合タスクを形成する。
上記のあらたなオペレーションｏｐ２−３の統合タスクを計算するときに、並列するシーケンシャルタスクを統合タスクとするときは、それぞれのシーケンシャルタスク全体の処理時間Ｔａ、Ｔｂの内、大きいほうＴａを採用し、その統合タスクの消費電力ＣＳｍは、
ＣＳｍ＝（Ｂａ）×Ｔａ(1-q)
Ｂａ＝（Ｂａ１(1／q) ＋Ｂａ２(1／q)＋．．．＋Ｂａｍ(1／q)）q＋（Ｂｂ１(1／q) ＋Ｂｂ２(1／q)＋．．．＋Ｂｂｓ(1／q)）q――――（７）式
なお、並列なシーケンシャルタスクが複数あった場合には、一番長い処理時間をＴａとし、上記の（７）式に（Ｂｂ１(1／q) ＋Ｂｂ２(1／q)＋．．．＋Ｂｂｓ(1／q)）qの項が、シーケンシャルタスクの数分、加算されるものとなる。
一方、統合タスクとシーケンシャルタスクを新たなオペレーション２−３の統合タスクとするときは、統合タスクの総電力を（Ｂｓ）×Ｔｓ(1-q)、シーケンシャルタスクの消費電力をＣＳｎ＝Ｔｎ(1-q)×（Ｂｎ１(1／q) ＋Ｂｎ２(1／q)＋．．．＋Ｂｎｍ(1／q)）qとすると、その統合タスクの消費電力ＣＳｍは、ＴｓとＴｎの内長い処理時間をＴａとして、
ＣＳｍ＝（Ｂｓ）Ｔａ(1-q)＋Ｔａ(1-q)×（Ｂｎ１(1／q) ＋Ｂｎ２(1／q)＋．．．＋Ｂｎｍ(1／q)）q
ＣＳｍ＝（Ｂａ）×Ｔａ(1-q)
Ｂａ＝（Ｂｎ１(1／q) ＋Ｂｎ２(1／q)＋．．．＋Ｂｎｍ(1／q)）q＋Ｂｓ――――（８）式
となる。
以上より、オペレーションｏｐ２−３が終了すると、オペレーションｏｐ２−３の統合タスクが順次繋がったシーケンシャルタスクができあがる。
【００２０】
オペレーションｏｐ２−４において、スケジューラ１１は、それぞれのオペレーションｏｐ２−３の統合タスクの電力係数の１／ｑ乗の比率と、それぞれの統合タスクの処理時間の比率が一致するように、統合タスクの処理時間の比率を決定する。
すなわち、Ｂ１(1／q)：Ｂ２(1／q)：．．．：Ｂｎ(1／q)＝Ｔ１：Ｔ２：．．．：Ｔｎ―（９）式
となるように、Ｔ１、Ｔ２、．．．、Ｔｎの比率を決定する。なお、上記（９）式におけるＢ１からＢｎは、（７）式、又は（８）式におけるＢａと同様な係数である。
次いで、スケジューラ１１は、このタスクグループの基準タスクの制約時間（Ｔ基準）を、統合タスクの処理時間の比率で、各統合タスクの処理時間として割り振る。  
すなわち、Ｔ基準×Ｂ１(1／q)／（Ｂ１(1／q)＋Ｂ２(1／q)＋．．．＋Ｂｎ(1／q)）、．．．．、Ｔ基準×Ｂｎ(1／q)／（Ｂ１(1／q) ＋Ｂ２(1／q)＋．．．＋Ｂｎ(1／q)）のように、各統合タスクを実行する、プロセッサコア１８ｎの処理時間を設定しなおす。ただし、再設定された処理時間が、その統合タスクの標準処理時間より短くなった場合は、基準タスクの制約時間から予め、短くなった統合タスクの標準処理時間を差し引き、残りの制約時間を、残りの統合タスクの処理時間の比率で、残りの統合タスクに対して割り振る。
ただし、標準処理時間と短くなった再設定された処理時間との差が少ない場合は、プロセッサコア１８ｎの電源電圧又は動作クロックの周波数を上昇させて対応することも可能である。
次いで、各オペレーションｏｐ２−３の統合タスクを構成する、オペレーションｏｐ２−１、オペレーションｏｐ２−２の統合タスク、オペレーションｏｐ２−２のシーケンシャルタスクに対して、そのオペレーションｏｐ２−３の統合タスクに割り当てられた処理時間Ｔｍを、さらに、それらを構成する上記タスクの電力係数の１／ｑ乗の比率で、各上記タスクに割り振る。
【００２１】
その結果、統合タスクそれぞれの消費電力ＣＳｍは、以下となる。
ＣＳｍ＝Ｔ基準(1-q)×Ｂｍ(1／q)／（Ｂ１(1／q)＋Ｂ２(1／q)＋．．．＋Ｂｍ(1／q)）(1-q)
また、ｍ個の統合マスクからなるシーケンシャルタスク全体の消費電力は、以下となる。
ＣＳ＝Ｔ基準(1-q)×（Ｂ１(1／q) ＋Ｂ２(1／q)＋．．．＋Ｂｍ(1／q)）／（Ｂ１(1／q)＋Ｂ２(1／q)＋．．．＋Ｂｍ(1／q)）(1-q) ＝Ｔ基準(1-q)×（Ｂ１(1／q) ＋Ｂ２(1／q)＋．．．＋Ｂｍ(1／q)）q―（１０）式
各統合タスクに対する処理時間よりも、タスクグループの基準タスクの制約時間が、長くなる。そこで、ｑは１．５から２程度であるから、１−ｑがマイナスの数字となるので、Ｔ基準(1-q) が減少するため、消費電力ＣＳは、各統合タスクに対する処理時間を伸ばしたことにより、減少する。
【００２２】
また、上記のように、各統合タスクにおいて、タスクの実行を行うプロセッサコア１８ｎの処理時間を、引き延ばすということは、各統合タスクの処理量に、基準タスクの制約時間内のプロセッサコア１８ｎの処理量をあわせるように、プロセッサコア１８ｎへ供給する動作クロックの周波数及び電源電圧を低下させることを意味する。さらに、各統合タスクの電力係数の１／ｑ乗に応じてプロセッサコア１８ｎの処理時間を伸ばすということは、消費電力が大きいプロセッサコア１８ｎ程、消費電力の削減量を大きくしていることを表す。
従って、タスクグループを実行する、マルチプロセッサコア１０の消費電力を大幅に減少させることができる。
【００２３】
図４Ａ、図４Ｂは、オペレーションｏｐ２の具体例を説明する図である。図４Ａは、タスクグループに関連するタスクＡ、Ｂ、Ｃ、ＤのタスクＩＤ、基準タスクＩＤ、標準処理時間、時間配分比率、再時間配分比率、処理時間を示すテーブルである。
タスクＡの処理量は３００Ｍである。タスクＢとタスクＣの処理量は、２５０Ｍである。タスクＤの処理量は１００Ｍである。従って、各プロセッサコア１８ｎの標準動作に対する、単位時間あたりの最大処理量Ｒ０が１０００Ｍであるとすると、タスクＡ、Ｂ、Ｃ、Ｄそれぞれの標準処理時間は、３００ｍｓ、２５０ｍｓ、２５０ｍｓ、１００ｍｓとなる。なお、タスクＡ、Ｂ、Ｃ、Ｄが関連するタスクグループの標準タスクＥの制約時間は６００ｍｓであり、このタスクグループの後に続く、タスクＦの処理時間は１００ｍｓであるとする。
【００２４】
ここで、プロセッサコア１８ｎの標準動作に対する、プロセッサコア１８ｎの消費電力Ｐ０が４１２ｍＷであるとすると、タスクＡ、Ｂ、Ｃからなる統合タスクの電力係数の総和（ＡＢＣ）は、以下のようになる。
電力係数の総和（ＡＢＣ）＝４１２×（３００／１０００）1.6＋４１２×（２５０／１０００）1.6＋４１２×（２５０／１０００）1.6＝１４９
一方、タスクＤの電力係数（Ｄ）は、
電力係数（Ｄ）＝４１２×（３００／１０００）1.6＝１０
従って、タスクＡ、Ｂ、Ｃからなる統合タスクの制約時間の比率と、タスクＤの制約時間の時間配分比率は、以下となる。
統合タスクの制約時間の比率：タスクＤの制約時間の比率＝１４９1／1.6：１０1／1.6＝２２．８：４．３＝５．３：１
【００２５】
ここで、タスクグループの基準タスクＥの制約時間は６００ｍｓであるので、６００ｍｓを、５．３：１の割合で、統合タスクとタスクＤの処理時間に割り振ると、５０５ｍｓと９５ｍｓとなる。
【００２６】
しかし、プロセッサコア１８ｎは９５ｍｓでは、タスクＤの処理量を処理することができないため、タスクＤを処理できる最小の処理時間１００ｍｓに、タスクＤの処理時間を再設定する。一方、タスクＡ、Ｂ、Ｃからなる統合タスクの処理時間は、基準タスクＥの制約時間６００ｍｓからタスクＤを処理できる最小の処理時間１００ｍｓを差し引き、５００ｍｓとする。その結果、タスクＡ、Ｂ、Ｃからなる統合タスクの処理時間とタスクＤの処理時間の再時間配分比率は、５：１となる。
図４Ｂは、上記のように、タスクＡ、Ｂ、Ｃからなる統合タスクの処理時間を上記のように割り振ったあとのタスクＡ、Ｂ、Ｃの処理状況を示す図である。タスクＥ開始後、５００ｍｓ後にタスクＤは開始される。また、タスクＡ、Ｂ、Ｃは、タスクＥと同時に開始するが処理時間は、５００ｍｓ後まで延長されている。
【００２７】
図５Ａ、図５Ｂ、図５Ｃ、図５Ｄ、及び、図５Ｅはオペレーションｏｐ２を、より複雑な関係にあるタスクから構成されているタスクグループに対して行う例を示す。図５Ａは同一のタスクグループを形成するタスクＡからタスクＩまでのタスクの依存グラフを示す。図５Ａの依存グラフによれば、基準タスクはタスクＩである。タスクＡ、タスクＢ、及びタスクＣは並列に行われ、タスクＤに繋がるタスクである。タスクＤはタスクＡ、タスクＢ、及びタスクＣとは直列なタスクであり、タスクＥに繋がる。タスクＦはタスクＧに繋がるタスクである。タスクＡからＥまでと、並列にタスクＦ、Ｇは行われ、タスクＥとタスクＧはタスクＨに繋がる。タスクＨは、タスクＡからタスクＧまでと、直列なタスクであり、基準タスクＩとともに、タスクＪに繋がっている。
そこで、オペレーションｏｐ２−１を行い、スケジューラ１１は、タスクＡ、タスクＢ、及びタスクＣを、並列に処理されるタスクであり、同一のタスクＤに繋がる統合タスクＡ−Ｃとして抽出する。
図５Ｂは、オペレーションｏｐ２−１を行った結果、統合タスクＡ−Ｃを形成したところである。
そこで、タスクＡ、タスクＢ、及びタスクＣについて（１）、（２）式により、それぞれのタスクを実行するプロセッサコア１８ｎの消費電力を求める。
次いで、（３）、（４）式により、タスクＡ、Ｂ、Ｃからなる統合タスクを実行するための総電力を求める。
次いで、オペレーションｏｐ２−２行う。その結果、スケジューラ１１は、統合タスクＡ−Ｃ、タスクＤ、タスクＥをシーケンシャルタスクとして、抽出する。また、タスクＦ、タスクＧをシーケンシャルタスクとして抽出する。
図５Ｃは、オペレーションｏｐ２−２を行った結果、統合タスクＡ−Ｃ、タスクＤ、タスクＥがシーケンシャルタスクＡ−Ｅを形成し、同様に、タスクＦ、ＧもシーケンシャルタスクＦ−Ｇを形成したところである。
そこで、まず、タスクＤ、タスクＥをオペレーションｏｐ２−２の統合タスクとして、タスクＡ−Ｃ、タスクＤ、タスクＥからなるシーケンシャルタスクＡ−Ｅの消費電力ＣＳ１は、（４）式より、以下となる。
ＣＳ１＝Ｂ１１×Ｔ１１(1-q)＋Ｂ１２×Ｔ１２(1-q)＋Ｂ１３×Ｔ１３(1-q)
なお、Ｂ１１×Ｔ１１(1-q)は統合タスクＡ−Ｃの総電力、Ｂ１２×Ｔ１２(1-q)はタスクＤの総電力、Ｂ１３×Ｔ１３(1-q)はタスクＥの総電力である。また、Ｔ１１はタスクＡからタスクＣに共通の処理時間であり、Ｔ１２はタスクＤの処理時間であり、Ｔ１３はタスクＥの処理時間である。Ｂ１１、Ｂ１２、Ｂ１３はそれぞれのタスクの電力係数である。ここで、シーケンシャルタスクＡ−Ｅ全体の処理時間Ｔ１は、Ｔ１＝Ｔ１１＋Ｔ１２＋Ｔ１３である。
次いで、Ｔ１を各タスクの電力係数の１／ｑ乗に比例して、割り振りをし直すと、（５）式、（６）式から、
ＣＳ１＝Ｔ１(1-q)（Ｂ１１(1／q)＋Ｂ１２(1／q)＋Ｂ１３(1／q)）qとなる。
一方、タスクＦ、タスクＧをオペレーションｏｐ２−２の統合タスクとして、タスクＦ、ＧからなるシーケンシャルタスクＦ−Ｇの消費電力ＣＳ２は、（４）式より以下となる。
ＣＳ２＝Ｂ２１×Ｔ２１(1-q)＋Ｂ２２×Ｔ２２(1-q)
なお、Ｂ２１×Ｔ２１(1-q)は統合タスクＦの総電力、Ｂ２２×Ｔ２２(1-q)はタスクＧの総電力である。Ｂ２１、Ｂ２２はタスクＦ、タスクＧの電力係数である。また、Ｔ２１はタスクＦの処理時間であり、Ｔ２２はタスクＤの処理時間である。ここで、シーケンシャルタスクＦ−Ｇ全体の処理時間Ｔ２は、Ｔ２＝Ｔ２１＋Ｔ２２である。
同様に、Ｔ２を各タスクの電力係数の１／ｑ乗に比例して、割り振り直すと、（５）式、（６）式から
ＣＳ２＝Ｔ２(1-q)（Ｂ２１(1／q)＋Ｂ２２(1／q)）qとなる。
次いで、オペレーションｏｐ２−３行う。その結果、スケジューラ１１は、タスクＡ−Ｃ、タスクＤ、タスクＥからなるシーケンシャルタスクＡ−Ｅと、タスクＦ、タスクＧからなるシーケンシャルタスクＦ−Ｇとから、オペレーションｏｐ２−３の統合タスクを形成する。
図５Ｄは、オペレーションｏｐ２−３を行った結果、スケジューラ１１が、シーケンシャルタスクＡ−Ｅと、シーケンシャルタスクＦ−Ｇとから、統合タスクＡ−Ｇを形成したところである。
統合タスクＡ−Ｇの総電力は、以下である。
統合タスクＡ−Ｇの総電力＝ＣＳ１＋ＣＳ２＝Ｔ１(1-q)（Ｂ１１(1／q)＋Ｂ１２(1／q)＋Ｂ１３(1／q)）q＋Ｔ２(1-q)（Ｂ２１(1／q)＋Ｂ２２(1／q)）q――――（１１）式
ここで、Ｔ１とＴ２の長いほうを、Ｔ（Ａ−Ｇ）とする。そうすると、統合タスクＡ−Ｇの総電力は以下のようになる。
統合タスクＡ−Ｇの総電力＝Ｔ（Ａ−Ｇ）(1-q)×Ｂ（Ａ−Ｇ）――――（１２）式
Ｂ（Ａ−Ｇ）＝（Ｂ１１(1／q)＋Ｂ１２(1／q)＋Ｂ１３(1／q)）q＋（Ｂ２１(1／q)＋Ｂ２２(1／q)）q
図５Ｅは、スケジューラ１１が、統合タスクＡ−Ｇと統合タスクＨから、シーケンシャルタスクＡ−Ｈを形成したところを示す。
タスクＡからＨまでから形成されるシーケンシャルタスクの消費電力ＣＳ（Ａ−Ｈ）は以下のようになる。
ＣＳ（Ａ−Ｈ）＝Ｔ（Ａ−Ｇ）(1-q)×Ｂ（Ａ−Ｇ）＋ＴＨ(1-q)×Ｂ（Ｈ）――――（１３）式
そこで、基準タスクＩの標準処理時間をＴ基準とし、以下の式を満たすように、各統合タスクに処理時間を振り分ける。
Ｔ（Ａ−Ｇ）：ＴＨ＝Ｂ（Ａ−Ｇ）(1／q)：Ｂ（Ｈ）(1／q) ――――（１４）式
その結果、ＣＳ（Ａ−Ｈ）は下記のようになる。
ＣＳ（Ａ−Ｈ）＝Ｔ基準×（Ｂ（Ａ−Ｇ）(1／q)＋Ｂ（Ｈ）(1／q)）q――――（１５）式
【００２８】
図２を参照して、さらに、オペレーションｏｐ３を説明する。オペレーションｏｐ３において、スケジューラ１１は、基準タスクの実行状況をチェックし、実行中であったときは、実行時間を、基準タスクの制約時間から差し引いた後の値を、新たな制約時間とする。次いで、新たな制約時間に対して、再時間配分比率をもとに、オペレーションｏｐ２で決定した各統合タスクの処理時間を補正する。
オペレーションｏｐ４において、スケジューラ１１は、統合タスクを構成する各タスクの標準処理時間を、統合タスク割り当てられた処理時間で割って、負荷率を計算する。
次いで、フケジューラ１１は、のちに説明する図６Ｂに示すテーブルを予め保有し、図６Ｂのテーブルに基づいて、上記の負荷率から各タスクを実行するプロセッサコア１８ｎへ供給する動作クロックの周波数及び電源電圧を決定する。次いで、スケジューラ１１は、決定した各プロセッサコア１８ｎの動作クロックの周波数及び電源電圧を周波数制御回路１４、電源電圧制御回路１５に伝達する。周波数制御回路１４、及び、電源電圧制御回路１５は、各プロセッサコア１８ｎに、スケジューラ１１によって決定された周波数をもつ動作クロック及び決定された電圧を有する電源電圧を供給し、各プロセッサコア１８ｎの動作を制御する。
【００２９】
図６は、タスクグループについてのオペレーションｏｐ４の具体例を説明する図である。図６Ａは、図４Ａ、図４Ｂに示すタスクグループに関連するタスクＡ、Ｂ、Ｃ、Ｄの標準処理時間と、統合タスクに割り振られた処理時間と、標準処理時間及び統合タスクに割り振られた処理時間から求めた負荷率を表すテーブルを示す。タスクＡ、Ｂ、Ｃ、Ｄの標準処理時間は３００ｍｓ、２５０ｍｓ、２５０ｍｓ、１００ｍｓである。一方、統合タスクに割り振られた処理時間はタスクＡ、Ｂ、Ｃに対しては５００ｍｓ、タスクＤに対しては１００ｍｓである。その結果、タスクＡの負荷率は０．６、タスクＢの負荷率は０．５、タスクＣの負荷率は０．５、タスクＤの負荷率は１．０である。
【００３０】
図６Ｂは、プロセッサコア１８ｎの負荷率に対する、動作クロックの周波数、電源電圧、消費電力を表したテーブルである。負荷率は１から０．２まで、０．１刻みで記載されている。動作クロックの周波数は負荷率１．０のタスクを実行する場合は１０００Ｍｈｚである。以下、負荷率が０．１刻みで減少する毎に、動作クロックの周波数は１００Ｍｈｚずつ減少する。電源電圧は、負荷率が１．０から０．２まで減少すると、１．２Ｖ、１．２Ｖ、１．１５Ｖ、１．１Ｖ、１．０５Ｖ、１．０Ｖ、０．９５Ｖ、０．８５Ｖ、０．７５Ｖと減少する。消費電力は、４１２ｍＷ、４１２ｍｗ、３０３ｍＷ、２４２ｍＷ、１９０ｍＷ、１４４ｍＷ、１０４ｍＷ、６３ｍＷ、３２ｍＷと減少する。スケジューラ１１は予め図５Ｂのテーブルを記憶しておき、計算したタスク毎の負荷率によって、そのタスクを実行するプロセッサコア１８ｎの動作クロックの周波数及び電源電圧を決定する。
【００３１】
さらに、図５Ａから図５Ｅまでに示すタスクグループについての、オペレーションｏｐ４の具体例を説明する。スケジューラ１１は、（１４）式を満足し、かつ、Ｔ基準＝Ｔ（Ａ−Ｇ）＋ＴＨとなるようにＴ（Ａ−Ｇ）及びＴＨを決定し、統合タスクＡ−Ｇに処理時間Ｔ（Ａ−Ｇ）を割り振る。次いで、スケジューラ１１は、シーケンシャルタスクＡ−Ｅ、及び、シーケンシュアルタスクＦ−Ｇに、Ｔ２＝Ｔ１＝Ｔ（Ａ−Ｇ）となるように処理時間Ｔ１、Ｔ２を割り振る。次いで、スケジューラ１１は、Ｔ２＝Ｔ２１＋Ｔ２２となり、かつ、Ｔ２１：Ｔ２２＝Ｂ２１(1／q)：Ｂ２２(1／q) となるように処理時間Ｔ２１、Ｔ２２を割り振る。次いで、スケジューラ１１は、Ｔ１＝Ｔ１１＋Ｔ１２＋Ｔ１３となり、かつ、Ｔ１１：Ｔ１２：Ｔ１３＝Ｂ１１(1／q)：Ｂ１２(1／q) ：Ｂ１３(1／q)となるように処理時間Ｔ１１、Ｔ１２、Ｔ１３を割り振る。すなわち、基準タスクＩと並列に実行が行われるシーケンシャルタスクを形成した後、そのシーケンシャルタスクを形成する統合タスクにさかのぼって、各タスクの処理時間を決定してことになる。
次いで、スケジューラ１１は、タスクＡ、Ｂ、Ｃの標準処理時間をＴ１１で割り、負荷率を計算し、図６Ｂのテーブルによって、タスクＡ、Ｂ、Ｃを実行するプロセッサコアへ供給する動作クロックの周波数及び電源電圧を求める。次いで、タスクＤ、Ｅの負荷率を、タスクＤ、Ｅの標準処理時間を、Ｔ１２、Ｔ１３で割り、求める。次いで、タスクＤ、Ｅを実行するプロセッサコアへ供給する動作クロック及び電源電圧を、図６Ｂのテーブルより求める。次いで、タスクＦ、Ｇの標準処理時間を、Ｔ２１、Ｔ２２で割り、タスクＦ、Ｇの負荷率を求める。次いで、図６Ｂのテーブルより、タスクＦ、Ｇを実行するプロセッサコアへ供給する動作クロックの周波数及び電源電圧を求める。次いで、タスクＨの標準処理時間を、ＴＨで割り、タスクＨの負荷率を求める。次いで、図６Ｂのテーブルより、タスクＨを実行するプロセッサコアへ供給する動作クロックの周波数及び電源電圧を求める。
【００３２】
上記より、実施例１のプロセッサコアは、
複数のタスクを並列処理する複数のプロセッサコア（プロセッサコア１８ｎ）と、
各タスクについて、関連する第１タスク群（タスクＡ、Ｂ、Ｃ、Ｄ、Ｅ）を識別する識別番号と、そのタスクを処理するのに必要なタスク処理時間（タスクＡ、Ｂ、Ｃの標準処理時間）と、第１タスク群に含まれるタスクを実行する上限期間（タスクＥの制約時間）を記憶するレジスタ（基準タスク情報用メモリ１２、タスク情報用メモリ１３）と、
第１タスク群に含まれるタスクの内、並列に処理されるタスク（タスクＡ、Ｂ、Ｃ）であって同一のタスク（タスクＤ）に繋がる複数のタスクからなる第２タスク群（タスクＡ、Ｂ、Ｃからなる群）を抽出し、前記複数のタスクのタスク処理時間の内、最長のタスク処理時間を第２タスク群を処理する第１処理時間（タスクＡの標準処理時間）とし、第２タスク群を処理するプロセッサコアの消費電力と第１処理時間に応じて、前記上限期間中に占める第２タスク群の第２処理時間(オペレーションｏｐ２−４におけるＴｍ)を設定する設定回路と、
第１処理時間と、第２処理時間との比率（オペレーションｏｐ４の負荷率）に応じて、第２タスク群を処理するプロセッサコアへ供給する動作クロックの周波数又は電源電圧（図５Ｂの動作周波数、電源電圧）を低下させる駆動回路（スケジューラ１１）と、
を備えることを特徴とするマルチコアプロセッサである。
上記のマルチコアプロセッサによれば、消費電力に応じて第２タスク群を処理するプロセッサコアの処理時間を引き延ばすことになる。
その結果、大きな消費電力を必要とする第２タスク群程、上限期間中に占める第２処理時間が長くなり、第２タスク群を実行するプロセッサコアの消費電力が大きく削減されるため、マルチコアプロセッサの消費電力削減が大きくなる効果がある。
【００３３】
以下に本発明の特徴を付記する。
（付記１）
複数のタスクを並列処理する複数のプロセッサコアと、
各前記タスクについて、関連する第１タスク群を識別する識別番号と、予め決められた動作クロックの周波数又は電源電圧の供給を受けて、前記プロセッサコアが前記タスクを処理するのに必要なタスク処理時間と、前記第１タスク群に含まれる前記タスクを実行する上限期間を記憶するレジスタと、
前記第１タスク群に含まれる前記タスクの内、並列に処理される前記タスクであって同一の前記タスクに繋がる複数の前記タスクからなる第２タスク群を抽出し、前記複数の前記タスクの前記タスク処理時間の内、最長の前記タスク処理時間を前記第２タスク群を処理する第１処理時間とし、前記第２タスク群を処理する前記プロセッサコアの消費電力と前記第１処理時間に応じて、前記上限期間中に占める前記第２タスク群を実行する第２処理時間を設定する設定回路と、
前記タスク処理時間と、前記第２処理時間との比率に応じて、各前記タスクを処理する前記プロセッサコアへ供給する動作クロックの周波数又は電源電圧を前記予め決められた動作クロックの周波数又は電源電圧から変更させる駆動回路と、
を備えることを特徴とするマルチコアプロセッサ。
（付記２）
前記設定回路は、さらに、前記第１タスク群に含まれる前記タスクについて、前記第２タスク群を含む前記タスクに対して直列に実行される直列タスクを特定し、前記直列タスクの前記タスク処理時間と、前記直列タスクを処理する前記プロセッサコアの消費電力とに応じて、前記上限期間中に占める前記直列タスクを実行する第３処理時間を設定し、
駆動回路は、さらに、前記直列マスクの前記タスク処理時間と、前記第３処理時間との比率に応じて、前記直列タスクを処理する前記プロセッサコアへ供給する動作クロックの周波数又は電源電圧を前記予め決められた動作クロックの周波数又は電源電圧より低下させることを特徴とする付記１記載のマルチコアプロセッサ。
（付記３）
前記第２タスク群を処理する前記プロセッサコアの消費電力をＡ２、前記第２処理時間をＴ２、前記Ａ２とＴ２（１−ｑ）との比例係数をＢ２とし、前記直列タスクを処理する前記プロセッサコアの消費電力をＡ３、前記直列タスクの前記タスク処理時間をＴ３、前記Ａ３とＴ３（１−ｑ）との比例係数をＢ３とすると、前記設定回路は、Ｂ２（１／ｑ）：Ｂ３（１／ｑ）＝Ｔ２：Ｔ３と設定することを特徴とする付記２記載のマルチコアプロセッサ。
（付記４）
複数のタスクを並列処理する複数のプロセッサコアと、
各前記タスクについて、関連する第１タスク群を識別する識別番号と、予め決められた動作クロックの周波数又は電源電圧の供給を受けて、前記プロセッサコアが前記タスクを処理するのに必要なタスク処理時間と、前記第１タスク群に含まれる前記タスクを実行する上限期間を記憶するレジスタと、を備える前記マルチコアプロセッサの制御方法であって、
前記第１タスク群に含まれる前記タスクの内、並列に処理される前記タスクであって同一の前記タスクに繋がる複数の前記タスクからなる第２タスク群を抽出する工程と、
前記複数の前記タスクの前記タスク処理時間の内、最長の前記タスク処理時間を前記第２タスク群を処理する第１処理時間とし、前記第２タスク群を処理する前記プロセッサコアの消費電力と前記第１処理時間に応じて、前記上限期間中に占める前記第２タスク群を実行する前記第２処理時間を設定する工程と、
前記タスク処理時間と、前記第２処理時間との比率に応じて、各前記タスクを処理する前記プロセッサコアへ供給する動作クロックの周波数又は電源電圧を前記予め決められた動作クロックの周波数又は電源電圧から変更させる工程と、
を備えることを特徴とするマルチコアプロセッサの制御方法。
（付記５）
前記第１タスク群に含まれる前記タスクについて、前記第２タスク群に含まれる前記タスクに対して直列に実行される直列タスクを特定する工程と、
前記直列タスクの前記タスク処理時間と、前記直列タスクを処理する前記プロセッサコアの消費電力とに応じて、前記上限期間中に占める前記直列タスクを実行する第３処理時間を設定する工程と、
前記直列マスクの前記タスク処理時間と、第３処理時間との比率に応じて、前記直列タスクを処理する前記プロセッサコアへ供給する動作クロックの周波数又は電源電圧を前記予め決められた動作クロックの周波数又は電源電圧より低下させる工程と、
をさらに備えることを特徴とする付記４記載のマルチコアプロセッサの制御方法。
（付記６）
複数のタスクを並列処理する複数のプロセッサコアと、
各前記タスクについて、関連する第１タスク群を識別する識別番号と、予め決められた動作クロックの周波数又は電源電圧の供給を受けて、前記プロセッサコアが前記タスクを処理するのに必要なタスク処理時間と、前記第１タスク群に含まれる前記タスクを実行する上限期間を記憶するレジスタと、を備える前記マルチコアプロセッサの制御方法であって、
前記第１タスク群に含まれる前記タスクの内、並列に処理される前記タスクであって同一の前記タスクに繋がる複数の前記タスクからなる第２タスク群を抽出する工程と、
前記第１タスク群に含まれるタスクについて、前記第２タスク群に含まれる前記タスクに対して直列に実行される直列タスクを特定する工程と、
前記第２タスク群を処理する前記プロセッサコアの消費電力をＡ２、前記第２処理時間をＴ２、前記Ａ２とＴ２（１−ｑ）との比例係数をＢ２とし、前記直列タスクを処理する前記プロセッサコアの消費電力をＡ３、前記直列タスクの前記タスク処理時間をＴ３、前記Ａ２とＴ２（１−ｑ）との比例係数をＢ２とすると、前記設定回路は、Ｂ２（１／ｑ）：Ｂ３（１／ｑ）＝Ｔ２：Ｔ３と設定する工程と、
前記タスク処理時間と、前記第２処理時間との比率に応じて、各前記タスクを処理する前記プロセッサコアへ供給する動作クロックの周波数又は電源電圧を前記予め決められた動作クロックの周波数又は電源電圧より低下させ、前記直列マスクの前記タスク処理時間と、前記第３処理時間との比率に応じて、前記直列タスクを処理する前記プロセッサコアへ供給する動作クロックの周波数又は電源電圧を前記予め決められた動作クロックの周波数又は電源電圧から変更させ工程と、
を備えることを特徴とするマルチコアプロセッサの制御方法。
【産業上の利用可能性】
【００３４】
本発明によれば、プロセッサコアの消費電力が大きく削減されるため、消費電力削減が大きいマルチコアプロセッサを提供することができる。
【符号の説明】
【００３５】
１０  マルチコアプロセッサ
１１  スケジューラ
１２  基準タスク情報用メモリ
１３  タスク情報用メモリ
１４  周波数制御回路
１５  電源電圧制御回路
１９  バス
２０  フローチャート
１８１−１８ｎ  プロセッサコア
【図１】
2010211544.tif 000003
【図２】
2010211544.tif 000004
【図３】
2010211544.tif 000005
【図４】
2010211544.tif 000006
【図５】
2010211544.tif 000007
【図６】
2010211544.tif 000008