(57)【特許請求の範囲】
【請求項１】
複数のタスクの全部または一部が割り当てられるマスタコアと、
前記複数のタスクの全部または一部が前記マスタコアから割り当てられるスレーブコアと、
前記マスタコアおよび前記スレーブコアのそれぞれに対応するキャッシュと、
前記複数のタスクのそれぞれの完了期限を示すデッドライン情報、前記キャッシュの利用率に対する前記複数のタスクのそれぞれの実行時間情報、前記マスタコアおよび前記スレーブコアが動作可能な電源電圧情報、および前記電源電圧情報に対応する動作クロック情報を記憶する記憶部を有し、
前記マスタコアは、
前記マスタコアおよび前記スレーブコアのそれぞれに対し、前記複数のタスクのそれぞれを割り当てた場合に、割り当てが可能な複数の割り当てパターンの各々において使用可能な前記キャッシュの空き領域および前記実行時間情報に基づいて処理時間を算出し、前記電源電圧情報および前記動作クロック情報に基づいて、前記複数の割り当てパターンの各々における消費電力を算出し、前記処理時間と前記消費電力と前記デッドライン情報に基づいて、前記複数の割り当てパターンの中から前記消費電力が最少となる割り当てパターンを算出する、
ことを特徴とするマルチコアシステム。
【請求項２】
前記マスタコアは、電池残量が閾値よりも多い場合に、前記複数の割り当てパターンの中から、使用される前記キャッシュのサイズが最小となり、前記消費電力が最小となる割り当てパターンを算出し、
電池残量が閾値よりも少ない場合に、前記消費電力が最小となる割り当てパターンを算出することを特徴とする請求項１に記載のマルチコアシステム。
【請求項３】
前記マスタコアは、前記マスタコアおよび前記スレーブコアのそれぞれに対し、前記複数のタスクのそれぞれを割り当てた場合に、割り当てが可能な全ての割り当てパターンに対して処理時間を算出し、全ての割り当てパターンの中から割り当てパターンを算出することを特徴とする請求項１または２に記載のマルチコアシステム。
【請求項４】
前記記憶部は、コアごとに使用可能な前記キャッシュの空き領域のサイズを記憶し、
前記マスタコアは、前記キャッシュの空き領域のサイズを更新することを特徴とする請求項１または２に記載のマルチコアシステム。
【請求項５】
複数のタスクの全部または一部が割り当てられるマスタコアと、
前記複数のタスクの全部または一部が前記マスタコアから割り当てられるスレーブコアと、
前記マスタコアおよび前記スレーブコアのそれぞれに対応するキャッシュと、
前記複数のタスクのそれぞれの完了期限を示すデッドライン情報、前記キャッシュの利用率に対する前記複数のタスクのそれぞれの実行時間情報、前記マスタコアおよび前記スレーブコアが動作可能な電源電圧情報、および前記電源電圧情報に対応する動作クロック情報を記憶する記憶部を有するマルチコアシステムにおける前記複数のタスクのスケジューリング方法であって、
前記マスタコアが、
前記マスタコアおよび前記スレーブコアのそれぞれに対し、前記複数のタスクのそれぞれを割り当てた場合に、割り当てが可能な複数の割り当てパターンの各々において使用可能な前記キャッシュの空き領域および前記実行時間情報に基づいて処理時間を算出し、前記電源電圧情報および前記動作クロック情報に基づいて、前記複数の割り当てパターンの各々における消費電力を算出し、前記処理時間と前記消費電力と前記デッドライン情報に基づいて、前記複数の割り当てパターンの中から前記消費電力が最少となる割り当てパターンを算出する、
処理を実行することを特徴とするスケジューリング方法。
【請求項６】
前記割り当てパターンを算出する処理は、電池残量が閾値よりも多い場合に、前記複数の割り当てパターンの中から、使用される前記キャッシュのサイズが最小となり、前記消費電力が最小となる割り当てパターンを算出し、電池残量が閾値よりも少ない場合に、前記消費電力が最小となる割り当てパターンを算出することを特徴とする請求項５に記載のスケジューリング方法。
【請求項７】
前記処理時間を算出する処理は、前記マスタコアおよび前記スレーブコアのそれぞれに対し、前記複数のタスクのそれぞれを割り当てた場合に、割り当てが可能な全ての割り当てパターンに対して処理時間を算出し、
前記割り当てパターンを算出する処理は、全ての割り当てパターンの中から割り当てパターンを算出することを特徴とする請求項５または６に記載のスケジューリング方法。
【請求項８】
複数のタスクの全部または一部が割り当てられるマスタコアと、
前記複数のタスクの全部または一部が前記マスタコアから割り当てられるスレーブコアと、
前記マスタコアおよび前記スレーブコアのそれぞれに対応するキャッシュと、
前記複数のタスクのそれぞれの完了期限を示すデッドライン情報、前記キャッシュの利用率に対する前記複数のタスクのそれぞれの実行時間情報、前記マスタコアおよび前記スレーブコアが動作可能な電源電圧情報、および前記電源電圧情報に対応する動作クロック情報を記憶する記憶部を有するマルチコアシステムにおける前記複数のタスクのスケジューリングプログラムであって、
前記マスタコアに、
前記マスタコアおよび前記スレーブコアのそれぞれに対し、前記複数のタスクのそれぞれを割り当てた場合に、割り当てが可能な複数の割り当てパターンの各々において使用可能な前記キャッシュの空き領域および前記実行時間情報に基づいて処理時間を算出し、前記電源電圧情報および前記動作クロック情報に基づいて、前記複数の割り当てパターンの各々における消費電力を算出し、前記処理時間と前記消費電力と前記デッドライン情報に基づいて、前記複数の割り当てパターンの中から前記消費電力が最少となる割り当てパターンを算出する、
処理を実行させることを特徴とするスケジューリングプログラム。
【請求項９】
前記割り当てパターンを算出する処理は、電池残量が閾値よりも多い場合に、前記複数の割り当てパターンの中から、使用される前記キャッシュのサイズが最小となり、前記消費電力が最小となる割り当てパターンを算出し、電池残量が閾値よりも少ない場合に、前記消費電力が最小となる割り当てパターンを算出することを特徴とする請求項８に記載のスケジューリングプログラム。
【請求項１０】
前記処理時間を算出する処理は、前記マスタコアおよび前記スレーブコアのそれぞれに対し、前記複数のタスクのそれぞれを割り当てた場合に、割り当てが可能な全ての割り当てパターンに対して処理時間を算出し、
前記割り当てパターンを算出する処理は、全ての割り当てパターンの中から割り当てパターンを算出することを特徴とする請求項８または９に記載のスケジューリングプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、マルチコアシステム、スケジューリング方法およびスケジューリングプログラムに関する。
【背景技術】
【０００２】
従来、複数のプロセッサで同一のメモリを共有するシステムにおいて、複数のプロセッサ間でメモリへのアクセス頻度の情報をやり取りすることでメモリへの競合を減らすようにプログラムを制御するものがある。また、複数のプログラムを同時に実行するシステムにおいて、電力情報に基づいて選択された実行モードに従って各プログラムを実行することで電力消費を管理するものがある。また、マルチタスク処理を行うシステムにおいて、タスクの使用するハードウェア資源の全電力が大きいタスクを優先的に実行することで消費電力を減らすものがある。また、キャッシュメモリの動作モードを変えてプログラムを実行したときの処理時間に基づいてキャッシュメモリのヒット率を推定する方法がある。また、プロセッサの処理能力に影響を与えるキャッシュメモリのサイズなどに基づいてプログラムを修正し、適切なバージョンのプログラムを配布する方法がある。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０００−１４８７１２号公報
【特許文献２】特開２００７−２８０３８０号公報
【特許文献３】特開平８−６８０３号公報
【特許文献４】特開平６−１６１８８９号公報
【特許文献５】特開２００６−９２５４１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
マルチコアシステムにおいてマルチタスク処理を行う際には、マルチタスク動作時のスループットを維持しつつ低消費電力化を実現するのが望ましい。しかしながら、従来の消費電力の管理方法ではスループットを維持しつつ最適な電力管理を行うのは困難である。例えば、マルチコアシステムにおけるマルチタスク処理において、あるコアでタスクスイッチが行われると、そのタスクにより使用されているキャッシュの中身が書き換えられることがある。その場合、キャッシュの書き換えによってメインメモリへのアクセスが増えるため、スループットが低下し、消費電力が増大することになる。特にループ並列処理の場合、コア間で頻繁に通信を行ってデータを共有することが想定されるため、あるコアのタスクで使用されているキャッシュの中身が書き換えられるとスループットが著しく低下する虞がある。
【０００５】
スループットの観点において、並列処理可能なタスクを逐次処理する場合と並列処理する場合とを比較していずれが好ましいかということは、他のタスクがキャッシュを利用するか否かなどの影響を受ける。また、電力の管理については、アイドル状態のコアにパワーゲーティングを適用して逐次処理を行う場合とＤＶＦＳ（Ｄｙｎａｍｉｃ  Ｖｏｌｔａｇｅ  ａｎｄ  Ｆｒｅｑｕｅｎｃｙ  Ｓｃａｌｉｎｇ）を適用して複数のコアで並列処理を行う場合とが考えられる。消費電力の観点において、その二つのうちのいずれが好ましいかということは、キャッシュの利用率によるスループットの低下度合いや各コアのリーク電流の流れ具合などの影響を受ける。
【０００６】
このように、実行可能な状態となっている各タスクによるキャッシュの利用状況と各コアのリーク電流などの電力特性とを考慮してタスクをスケジューリングするのが望ましい。しかし、従来の方法ではキャッシュの利用状況が考慮されていないため、スループットの維持と省電力化とを両立するのは困難である。
【０００７】
マルチコアシステム、スケジューリング方法およびスケジューリングプログラムは、マルチコアシステムにおいてスループットの維持と省電力化とを両立させることを目的とする。
【課題を解決するための手段】
【０００８】
複数のコアで同時にタスクを実行可能なマルチコアシステムにおいて、マルチコアシステムは、タスク情報、電力情報、処理時間見積もり部およびタスク割り当てパターン設定部を備える。タスク情報は、タスクの完了期限を示すデッドライン情報および各コアのキャッシュの利用率に対するタスクの実行時間情報をタスクごとに備えている。電力情報は、コアの動作可能な電源電圧情報およびこの電源電圧に基づいて消費電力を導出する電力導出情報をコアごとに備えている。処理時間見積もり部は、実行時間情報および使用可能なキャッシュサイズ情報に基づいてタスクの処理時間を見積もる。タスク割り当てパターン設定部は、処理時間見積もり部により見積もられたタスクの処理時間がデッドライン情報によるリアルタイム制約を満たす範囲で、タスクの使用するキャッシュサイズが最小となり、電源電圧情報および電力導出情報に基づいて消費電力が最小となるようにタスクの割り当てパターンを設定する。
【発明の効果】
【０００９】
マルチコアシステム、スケジューリング方法およびスケジューリングプログラムによれば、マルチコアシステムにおいてスループットの維持と省電力化とを両立させることができる。
【図面の簡単な説明】
【００１０】
【図１】図１は、実施例１にかかるマルチコアシステムを示すブロック図である。
【図２】図２は、実施例１にかかるスケジューリング方法を示すフローチャートである。
【図３】図３は、実施例２にかかるマルチコアシステムを示すブロック図である。
【図４】図４は、実施例２におけるタスクテーブルの一例を示す図表である。
【図５】図５は、実施例２におけるパワーテーブルの一例を示す図表である。
【図６】図６は、実施例２におけるキャッシュサイズテーブルの一例を示す図表である。
【図７】図７は、実施例２にかかるスケジューリング方法を示すフローチャートである。
【図８】図８は、図７の続きを示すフローチャートである。
【図９】図９は、図８の続きを示すフローチャートである。
【図１０】図１０は、図９の続きを示すフローチャートである。
【図１１】図１１は、図１０の続きを示すフローチャートである。
【図１２】図１２は、図１１の続きを示すフローチャートである。
【発明を実施するための形態】
【００１１】
以下に、この発明にかかるマルチコアシステム、スケジューリング方法およびスケジューリングプログラムの実施例を図面に基づいて詳細に説明する。以下の実施例は、キャッシュの利用率を考慮してタスクの処理時間を見積もり、リアルタイム制約を満たす範囲でタスクの使用するキャッシュサイズおよび消費電力が最小となるようにタスクの割り当てパターンを設定するものである。なお、この実施例によりこの発明が限定されるものではない。
【００１２】
（実施例１）
・マルチコアシステムの説明
図１は、実施例１にかかるマルチコアシステムを示すブロック図である。図１に示すように、マルチコアシステムは処理時間見積もり部１、タスク割り当てパターン設定部２、タスク情報４および電力情報５を備えている。また、マルチコアシステムはキャッシュサイズ情報３、図示しないキャッシュおよび図示しない複数のコアを備えている。
【００１３】
タスク情報４は、タスクの完了期限を示すデッドライン情報をタスクごとに備えている。タスク情報４は各コアのキャッシュの利用率に対するタスクの実行時間情報をタスクごとに備えている。
【００１４】
電力情報５はコアの動作可能な電源電圧情報をコアごとに備えている。電力情報５は、電源電圧に基づいて消費電力を導出する電力導出情報をコアごとに備えている。
【００１５】
処理時間見積もり部１はタスク情報４から実行時間情報を得る。処理時間見積もり部１はキャッシュサイズ情報３から使用可能なキャッシュサイズ情報を得る。処理時間見積もり部１は、実行時間情報および使用可能なキャッシュサイズ情報に基づいてタスクの処理時間を見積もる。
【００１６】
タスク割り当てパターン設定部２はタスク情報４からデッドライン情報を得る。タスク割り当てパターン設定部２は電力情報５から電源電圧情報および電力導出情報を得る。タスク割り当てパターン設定部２は電源電圧情報および電力導出情報に基づいて消費電力を求める。タスク割り当てパターン設定部２は、処理時間見積もり部１により見積もられたタスクの処理時間がデッドライン情報によるリアルタイム制約を満たす範囲で、タスクの使用するキャッシュサイズが最小となり、消費電力が最小となるようにタスクの割り当てパターンを設定する。
【００１７】
処理時間見積もり部１およびタスク割り当てパターン設定部２は、例えばマスターとなるコアがスケジューリングプログラムを実行することにより実現されてもよい。スケジューリングプログラムは、例えば次に説明するスケジューリング方法をコンピュータに実行させるプログラムであってもよい。スケジューリングプログラムはコアがアクセス可能なキャッシュやメモリに格納されていてもよい。キャッシュサイズ情報３、タスク情報４および電力情報５はコアがアクセス可能なキャッシュやメモリに格納されていてもよい。スケジューリングプログラムは、例えばマスターとなるコアで実行されるオペレーティングシステムに含まれていてもよい。
【００１８】
・スケジューリング方法の説明
図２は、実施例１にかかるスケジューリング方法を示すフローチャートである。図２に示すように、スケジューリング処理が開始されると、まず処理時間見積もり部１がタスクの処理時間を見積もる（ステップＳ１）。その際、処理時間見積もり部１は、タスク情報４から得た実行時間情報およびキャッシュサイズ情報３から得た使用可能なキャッシュサイズ情報に基づいて見積もりを行う。
【００１９】
次いで、タスク割り当てパターン設定部２がタスクの割り当てパターンを設定する（ステップＳ２）。その際、タスク割り当てパターン設定部２は、ステップＳ１で見積もられたタスクの処理時間が、タスク情報４から得たデッドライン情報によるリアルタイム制約を満たす範囲で割り当てパターンの設定を行う。タスク割り当てパターン設定部２は、電力情報５から得た電源電圧情報および電力導出情報に基づいて消費電力を求める。タスク割り当てパターン設定部２は、タスクの使用するキャッシュサイズが最小となり、消費電力が最小となるように割り当てパターンの設定を行う。
【００２０】
実施例１によれば、各タスクの使用するキャッシュサイズが最小となるようにタスクの割り当てパターンが設定されることによってより多くのタスクにキャッシュが割り当てられる。従って、タスクスイッチが起こってもキャッシュの書き換えが起こる頻度が減るので、メインメモリへのアクセスが減り、スループットを維持することができる。また、メインメモリへのアクセスが減ることによって、あるいは消費電力が最小となるようにタスクの割り当てパターンが設定されることによって、省電力化を図ることができる。
【００２１】
（実施例２）
実施例２は、マルチコアシステムを組み込みシステムを有する装置、例えば携帯電話機などの携帯端末に適用した例である。携帯電話機などの携帯端末では例えば電池によって電源電圧が供給される。
【００２２】
・マルチコアシステムの説明
図３は、実施例２にかかるマルチコアシステムを示すブロック図である。図３に示すように、マルチコアシステムは処理時間見積もり部およびタスク割り当てパターン設定部としてのスケジューラ１１、複数、特に限定しないが例えば４個のコア（＃０〜＃３）１２、各コアの一次キャッシュ（Ｌ１キャッシュ）１４、二次キャッシュ（Ｌ２キャッシュ）１６およびメモリ２０を備えている。
【００２３】
スケジューラ１１は、例えばマスターとなるコア＃０で実行されるオペレーティングシステムによって実現される。スケジューラ１１は、後述するスケジューリング方法に従ってタスク２５を各コア（＃０〜＃３）１２に割り当てる。また、マスターおよびマスター以外の各コア（＃０〜＃３）では、各コアで実行されるオペレーティングシステムによって実現されるスケジューラによって自コアに対するタスクのスケジューリングが行われる。オペレーティングシステムはファイルシステム２１から読み出されてメモリ２０に割り当てられる。
【００２４】
一次キャッシュ１４および二次キャッシュ１６のデータとメモリ２０のデータとの同一性がスヌープコントローラ１５によって保たれている。バス１８にはメモリ２０に対するデータの入出力などの制御を行うメモリコントローラ１９が接続されている。バス１８には二次キャッシュ１６、例えば音声や画像などのデジタル信号を処理するデジタルシグナルプロセッサ（ＤＳＰ：Ｄｉｇｉｔａｌ  Ｓｉｇｎａｌ  Ｐｒｏｃｅｓｓｏｒ）１３および入出力インタフェース（Ｉ／Ｏ：Ｉｎｐｕｔ／Ｏｕｔｐｕｔ）１７が接続されている。
【００２５】
また、マルチコアシステムはキャッシュサイズ情報としてのキャッシュサイズテーブル２２、電力情報としてのパワーテーブル２３およびタスク情報としてのタスクテーブル２４を備えている。キャッシュサイズテーブル２２、パワーテーブル２３およびタスクテーブル２４は、メモリ２０あるいは例えば一次キャッシュ１４や二次キャッシュ１６のキャッシュ領域に格納されていてもよい。パワーテーブル２３およびタスクテーブル２４は、例えばアプリケーションプログラムの設計段階で予めシミュレータにより取得されている。キャッシュサイズテーブル２２はタスクの割り当て開始時にスケジューラ１１により作成され、各コアでの処理の進行とともに各コアのスケジューラにより更新される。
【００２６】
・タスクテーブルの説明
タスクテーブル２４は、タスクごとにタスク情報として例えばタスクの識別子（ｉｄ）、デッドライン、データサイズ、割り当て可能パターン、および割り当て可能パターンにおけるキャッシュの利用率ごとの実行時間の情報を含んでいる。キャッシュの利用率の一例として例えば０％、２５％、５０％、７５％および１００％などが挙げられる。各タスクのデッドラインおよびデータサイズの情報については、予めシミュレータを用いて各タスクを逐次処理することにより取得することができる。図４にタスクテーブル２４の一例を示す。
【００２７】
・パワーテーブルの説明
パワーテーブル２３は、コアごとにプロセッサ関連情報としてクロック周波数（ｆc）、電源電圧（ＶDD）およびリーク電流（Ｉleak）の情報を含んでいる。パワーテーブル２３は、コアごとに電源電圧、クロック周波数およびリーク電流に基づいて消費電力を計算する電力計算モデル式（Ｐ＝・・・）を含んでいる。図５にパワーテーブル２３の一例を示す。図５に示す電力計算モデル式（Ｐ＝・・・）において右辺第１項の「ｃ」は係数であり、例えば静電容量である。
【００２８】
・キャッシュサイズテーブルの説明
キャッシュサイズテーブル２２は、コアごとにキャッシュの全サイズ、使用可能サイズおよび未使用サイズの情報を含んでいる。キャッシュにオペレーティングシステムが配置される場合、キャッシュの全サイズから、オペレーティングシステムが配置されるキャッシュの領域を引いた残りの容量が使用可能サイズとなる。図６にキャッシュサイズテーブル２２の一例を示す。
【００２９】
・スケジューリング方法の説明
図７〜図１２は、実施例２にかかるスケジューリング方法を示すフローチャートである。図７に示すように、スケジューリング処理が開始されると、まずスケジューラ１１はシステムの動作モードを実行モード２に設定する（ステップＳ１１）。実行モード２は通常のモードである。通常のモードでは、電池の残量が予め設定されている閾値よりも多い。
【００３０】
次いで、スケジューラ１１は、イベントが発生したか否かを判断し、イベントの発生を待つ（ステップＳ１２：Ｎｏ）。ここで、イベントには、例えばシステムに設けられたタイマのカウントが所定値に達すること、タスクが生成されること、タスクの実行が終了することおよびタスクスイッチが発生すること、が含まれる。タイマは、電池の残量を確認する周期をカウントしている。
【００３１】
イベントとしてタイマのカウント値が所定値に達した場合（ステップＳ１２：タイマ＝所定値）、スケジューラ１１は、システムの電池の残量を参照し、電池の残量が閾値以下であるか否かを判断する（ステップＳ１３）。電池の残量が閾値以下でない場合（ステップＳ１３：Ｎｏ）、タイマのカウント値が初期値の０に戻り（ステップＳ１７）、ステップＳ１２に戻ってスケジューラ１１はイベントの発生を監視する。
【００３２】
電池の残量が閾値以下である場合（ステップＳ１３：Ｙｅｓ）、スケジューラ１１はシステムの動作モードを実行モード１に変更する（ステップＳ１４）。実行モード１は低消費電力モードである。低消費電力モードでは、通常のモード（実行モード２）よりも電池の消費が抑えられる。実行モード１になると、まずロックされていたキャッシュ領域が解放される（ステップＳ１５）。次いで、タイマのカウントが終了し（ステップＳ１６）、ステップＳ１２に戻ってスケジューラ１１はイベントの発生を監視する。
【００３３】
ステップＳ１２でイベントとしてタスクが生成されると（ステップＳ１２：タスク生成）、図８に示すように、スケジューラ１１は、システムの動作モードが実行モード２であるか否かを判断する（ステップＳ２１）。システムの動作モードが実行モード１である場合（ステップＳ２１：Ｎｏ）、ステップＳ２６へ進む。システムの動作モードが実行モード２であるが（ステップＳ２１：Ｙｅｓ）、電池の残量が閾値以下でない場合（ステップＳ２２：Ｎｏ）、ステップＳ２６へ進む。システムの動作モードが実行モード２であるが（ステップＳ２１：Ｙｅｓ）、電池の残量が閾値以下である場合（ステップＳ２２：Ｙｅｓ）、スケジューラ１１はシステムの動作モードを実行モード１に変更する（ステップＳ２３）。そして、ロックされていたキャッシュ領域が解放され（ステップＳ２４）、タイマのカウントが終了し（ステップＳ２５）、ステップＳ２６となる。ステップＳ２６では、スケジューラ１１はタスクの最適な割り当てパターンをコア＃０による逐次処理に設定する。
【００３４】
次いで、図９に示すように、スケジューラ１１は、タスクの並列度から求めた割り当てパターンの中に未解析の割り当てパターンがあるか否かを判断する（ステップＳ３１）。未解析の割り当てパターンがある場合（ステップＳ３１：Ｙｅｓ）、スケジューラ１１はタスクテーブル２４を参照し、未解析の割り当てパターンのうちの一つを解析対象割り当てパターンとする。そして、スケジューラ１１はキャッシュサイズテーブル２２およびタスクテーブル２４を参照し、各コアのキャッシュの未使用サイズに基づいてタスクの処理時間を見積もる（ステップＳ３２）。
【００３５】
次いで、スケジューラ１１はタスクテーブル２４を参照し、ステップＳ３２で見積もった処理時間がリアルタイム制約の範囲内に収まるか否かを判断する（ステップＳ３３）。見積もった処理時間がリアルタイム制約の範囲内に収まらない場合（ステップＳ３３：Ｎｏ）、ステップＳ３１に戻ってスケジューラ１１は別の未解析の割り当てパターンを新たな解析対象割り当てパターンとして同様の処理を行う。見積もった処理時間がリアルタイム制約の範囲内に収まる場合（ステップＳ３３：Ｙｅｓ）、スケジューラ１１は、システムの動作モードが実行モード２であるか否かを判断する（ステップＳ３４）。
【００３６】
システムの動作モードが実行モード２である場合（ステップＳ３４：Ｙｅｓ）、スケジューラ１１はキャッシュサイズテーブル２２およびタスクテーブル２４を参照する。そして、スケジューラ１１は、解析対象割り当てパターンにおいて使用されるキャッシュサイズを、リアルタイム制約を満たす範囲内で最小のサイズに設定する（ステップＳ３５）。次いで、スケジューラ１１は、ステップＳ３５で設定した解析対象割り当てパターンにおいて使用されるキャッシュサイズが適当であるか否かを判断する（ステップＳ３６）。解析対象割り当てパターンにおいて使用されるキャッシュサイズが最適な割り当てパターンにおいて使用されるキャッシュサイズよりも小さい場合に適当であり、そうでない場合には不適である。
【００３７】
解析対象割り当てパターンにおいて使用されるキャッシュサイズが不適である場合（ステップＳ３６：Ｎｏ）、ステップＳ３１に戻ってスケジューラ１１は別の未解析の割り当てパターンを新たな解析対象割り当てパターンとして同様の処理を行う。解析対象割り当てパターンにおいて使用されるキャッシュサイズが適当である場合（ステップＳ３６：Ｙｅｓ）、スケジューラ１１はパワーテーブル２３を参照する。そして、スケジューラ１１は、解析対象割り当てパターンに対して例えばパワーゲーティングやＤＶＦＳなどの複数の電力制御モードを適用した場合を想定して消費電力を見積もり、最小の消費電力となる電力制御モードに設定する。また、その場合の解析対象割り当てパターンの消費電力をその最小の消費電力に設定する（ステップＳ３７）。
【００３８】
一例として、タスクのデッドラインが１０ｍｓであり、キャッシュの利用率１００％における実行時間が５ｍｓである場合を想定する。タスクを実行するコアについてクロック周波数（ｆc）と電源電圧（ＶDD）との組み合わせ［ｆc，ＶDD］が［５００ＭＨｚ，１．１Ｖ］および［２５０ＭＨｚ，０．８Ｖ］であり、リーク電流（Ｉleak）が１０ｍＡであるとする。図５に示すパワーテーブル２３において電力計算モデル式の係数ｃが１０-10であるとする。
【００３９】
この条件においてパワーゲーティングを適用した場合、次の（１）式より消費電力Ｗは３５７．５μＪとなる。一方、ＤＶＦＳを適用した場合、次の（２）式より消費電力Ｗは２４０μＪとなる。従って、この例の場合にはステップＳ３７で電力制御モードとしてＤＶＦＳが設定される。
【００４０】
Ｗ＝（１０-10×１．１2×５００×１０6＋１．１×１０×１０-3）×５×１０-3
＝３５７．５［μＪ］  ・・・（１）
Ｗ＝（１０-10×０．８2×２５０×１０6＋０．８×１０×１０-3）×１０×１０-3
＝２４０［μＪ］  ・・・（２）
【００４１】
次いで、スケジューラ１１は最適な割り当てパターンの更新を行い、現在の解析対象割り当てパターンを最新の最適な割り当てパターンに設定する（ステップＳ３８）。そして、ステップＳ３１に戻ってスケジューラ１１は別の未解析の割り当てパターンを新たな解析対象割り当てパターンとして同様の処理を行う。ステップＳ３１からステップＳ３８までの処理は、例えば並列度が４であるタスクの場合、コア＃０、コア＃１、コア＃２、コア＃３（以上、各コアでの逐次処理）、コア＃０とコア＃１、コア＃０とコア＃２、・・・、コア＃３とコア＃４（以上、二つのコアでの並列処理）、コア＃０とコア＃１とコア＃２、コア＃０とコア＃１とコア＃３、コア＃０とコア＃２とコア＃３（以上、三つのコアでの並列処理）、およびコア＃０とコア＃１とコア＃２とコア＃３（以上、四つのコアでの並列処理）の全パターンに対して行われる。
【００４２】
一方、ステップＳ３２で見積もった処理時間がリアルタイム制約の範囲内に収まるが（ステップＳ３３：Ｙｅｓ）、システムの動作モードが実行モード１である場合（ステップＳ３４：Ｎｏ）、図１０に示すように、スケジューラ１１はパワーテーブル２３を参照する。そして、スケジューラ１１は、解析対象割り当てパターンに対して例えばパワーゲーティングやＤＶＦＳなどの複数の電力制御モードを適用した場合を想定して消費電力を見積もり、最小の消費電力となる電力制御モードに設定する。また、その場合の解析対象割り当てパターンの消費電力をその最小の消費電力に設定する（ステップＳ４１）。
【００４３】
次いで、スケジューラ１１は、ステップＳ４１で設定した解析対象割り当てパターンの消費電力が適当であるか否かを判断する（ステップＳ４２）。解析対象割り当てパターンの消費電力が最適な割り当てパターンの消費電力よりも小さい場合に適当であり、そうでない場合には不適である。
【００４４】
解析対象割り当てパターンの消費電力が不適である場合（ステップＳ４２：Ｎｏ）、ステップＳ３１に戻ってスケジューラ１１は別の未解析の割り当てパターンを新たな解析対象割り当てパターンとして同様の処理を行う。解析対象割り当てパターンの消費電力が適当である場合（ステップＳ４２：Ｙｅｓ）、ステップＳ３８に戻ってスケジューラ１１は現在の解析対象割り当てパターンを最新の最適な割り当てパターンに設定する。
【００４５】
一方、未解析の割り当てパターンがなくなった場合（ステップＳ３１：Ｎｏ）、図１１に示すように、スケジューラ１１は割り当て先の各コアのクロック周波数および電源電圧をその時点での最適な割り当てパターンの設定値に設定する（ステップＳ５１）。次いで、割り当て先の各コアのスケジューラは、キャッシュサイズテーブル２２の各コアのキャッシュの未使用サイズを更新する（ステップＳ５２）。そして、スケジューラ１１はタスクをディスパッチし（ステップＳ５３）、ステップＳ１２に戻ってイベントの発生を監視する。
【００４６】
ステップＳ１２でイベントとしてタスクの実行が終了すると（ステップＳ１２：タスク終了）、図１２に示すように、ロックされていたキャッシュ領域が解放される（ステップＳ６１）。次いで、各コアのスケジューラ１１は、キャッシュサイズテーブル２２の各コアのキャッシュの未使用サイズを更新する（ステップＳ６２）。次いで、スケジューラ１１はタスクテーブル２４を参照し、実行可能なタスクが存在するか否かを判断する（ステップＳ６３）。実行可能なタスクがない場合（ステップＳ６３：Ｎｏ）、ステップＳ１２に戻ってスケジューラ１１はイベントの発生を監視する。
【００４７】
実行可能なタスクがある場合（ステップＳ６３：Ｙｅｓ）、スケジューラ１１はパワーテーブル２３を参照する。そして、スケジューラ１１は、次に実行するタスクに対して例えばパワーゲーティングやＤＶＦＳなどの複数の電力制御モードを適用した場合を想定して消費電力を見積もり、最小の消費電力となる電力制御モードを選択する（ステップＳ６４）。次いで、スケジューラ１１は割り当て先の各コアのクロック周波数および電源電圧をその時点での最適な割り当てパターンの設定値に設定する（ステップＳ６５）。次いで、スケジューラ１１はタスクをディスパッチし（ステップＳ６６）、ステップＳ１２に戻ってイベントの発生を監視する。
【００４８】
ステップＳ１２でイベントとしてタスクスイッチが発生すると（ステップＳ１２：タスクスイッチ）、図１２に示すように、ステップＳ６４からステップＳ６６間での処理が行われる。そして、ステップＳ１２に戻ってスケジューラ１１はイベントの発生を監視する。
【００４９】
実施例２によれば、電池の残量が閾値よりも多い場合には、実施例１と同様にスループットを維持しつつ省電力化を図ることができる。電池の残量が閾値以下である場合には、消費電力が最小となるようにタスクの割り当てパターンが設定されるので、省電力化を図ることができる。
【００５０】
なお、実施例１および２においては、マルチコアシステムとして、一つのマイクロプロセッサに複数のコアが内蔵されているマルチコアプロセッサを例にして説明したが、複数のマイクロプロセッサを搭載したマルチプロセッサにも同様に適用することができる。マルチプロセッサに適用する場合には、上述した説明においてコアがプロセッサとなる。また、電力計算モデルは、実施例２において開示したモデルに限らない。また、電力の管理はパワーゲーティングやＤＶＦＳに限らない。
【００５１】
上述した実施の形態に関し、さらに以下の付記を開示する。
【００５２】
（付記１）複数のコアで同時にタスクを実行可能なマルチコアシステムにおいて、
タスクの完了期限を示すデッドライン情報および各コアのキャッシュの利用率に対するタスクの実行時間情報をタスクごとに備えたタスク情報と、
コアの動作可能な電源電圧情報および該電源電圧に基づいて消費電力を導出する電力導出情報をコアごとに備えた電力情報と、
前記実行時間情報および使用可能なキャッシュサイズ情報に基づいてタスクの処理時間を見積もる処理時間見積もり部と、
前記処理時間見積もり部により見積もられたタスクの処理時間が前記デッドライン情報によるリアルタイム制約を満たす範囲で、タスクの使用するキャッシュサイズが最小となり、前記電源電圧情報および前記電力導出情報に基づいて消費電力が最小となるようにタスクの割り当てパターンを設定するタスク割り当てパターン設定部と、
を備えることを特徴とするマルチコアシステム。
【００５３】
（付記２）前記タスク割り当てパターン設定部は、電池残量が閾値よりも多い場合に使用するキャッシュサイズが最小となり、消費電力が最小となるタスクの割り当てパターンを設定し、電池残量が閾値よりも少ない場合に消費電力が最小となるタスクの割り当てパターンを設定することを特徴とする付記１に記載のマルチコアシステム。
【００５４】
（付記３）前記処理時間見積もり部はタスクの割り当てが可能な全てのコアの組み合わせに対して処理時間を見積もり、
前記タスク割り当てパターン設定部は全てのコアの組み合わせの中からタスクの割り当てパターンを設定することを特徴とする付記１または２に記載のマルチコアシステム。
【００５５】
（付記４）コアごとに使用可能なキャッシュサイズを格納するキャッシュサイズ情報、をさらに備え、
前記タスク割り当てパターン設定部は、前記キャッシュサイズ情報を更新することを特徴とする付記１または２に記載のマルチコアシステム。
【００５６】
（付記５）複数のコアで同時にタスクを実行可能なマルチコアシステムにおけるタスクのスケジューリング方法において、
各コアのキャッシュの利用率に対するタスクの実行時間情報および使用可能なキャッシュサイズ情報に基づいてタスクの処理時間を見積もる第１のプロセスと、
前記第１のプロセスで見積もられたタスクの処理時間が該タスクの完了期限を示すデッドライン情報によるリアルタイム制約を満たす範囲で、タスクの使用するキャッシュサイズが最小となり、コアの動作可能な電源電圧情報および該電源電圧に基づいて消費電力を導出する電力導出情報に基づいて消費電力が最小となるようにタスクの割り当てパターンを設定する第２のプロセスと、
を含むことを特徴とするスケジューリング方法。
【００５７】
（付記６）前記第２のプロセスでは、電池残量が閾値よりも多い場合に使用するキャッシュサイズが最小となり、消費電力が最小となるタスクの割り当てパターンを設定し、電池残量が閾値よりも少ない場合に消費電力が最小となるタスクの割り当てパターンを設定することを特徴とする付記５に記載のスケジューリング方法。
【００５８】
（付記７）前記第１のプロセスではタスクの割り当てが可能な全てのコアの組み合わせに対して処理時間を見積もり、
前記第２のプロセスでは全てのコアの組み合わせの中からタスクの割り当てパターンを設定することを特徴とする付記５または６に記載のスケジューリング方法。
【００５９】
（付記８）前記第２のプロセスでタスクの割り当てパターンを設定した後、コアごとに使用可能なキャッシュサイズを更新することを特徴とする付記５または６に記載のスケジューリング方法。
【００６０】
（付記９）コンピュータを、
メモリから各コアのキャッシュの利用率に対するタスクの実行時間情報および使用可能なキャッシュサイズ情報を読み出し、該実行時間情報およびキャッシュサイズ情報に基づいてタスクの処理時間を見積もる処理時間見積もり部と、
メモリからタスクの完了期限を示すデッドライン情報、コアの動作可能な電源電圧情報および該電源電圧に基づいて消費電力を導出する電力導出情報を読み出し、前記処理時間見積もり部により見積もられたタスクの処理時間が前記デッドライン情報によるリアルタイム制約を満たす範囲で、タスクの使用するキャッシュサイズが最小となり、前記電源電圧情報および前記電力導出情報に基づいて消費電力が最小となるようにタスクの割り当てパターンを設定するタスク割り当てパターン設定部と、
として機能させることを特徴とするスケジューリングプログラム。
【００６１】
（付記１０）前記タスク割り当てパターン設定部は、電池残量が閾値よりも多い場合に使用するキャッシュサイズが最小となり、消費電力が最小となるタスクの割り当てパターンを設定し、電池残量が閾値よりも少ない場合に消費電力が最小となるタスクの割り当てパターンを設定することを特徴とする付記９に記載のスケジューリングプログラム。
【００６２】
（付記１１）前記処理時間見積もり部はタスクの割り当てが可能な全てのコアの組み合わせに対して処理時間を見積もり、
前記タスク割り当てパターン設定部は全てのコアの組み合わせの中からタスクの割り当てパターンを設定することを特徴とする付記９または１０に記載のスケジューリングプログラム。
【００６３】
（付記１２）前記タスク割り当てパターン設定部は、メモリに格納されているコアごとに使用可能なキャッシュサイズを更新することを特徴とする付記９または１０に記載のスケジューリングプログラム。
【符号の説明】
【００６４】
１  処理時間見積もり部
２  タスク割り当てパターン設定部
３  キャッシュサイズ情報
４  タスク情報
５  電力情報
【図１】
0005585651.tif 000002
【図２】
0005585651.tif 000003
【図３】
0005585651.tif 000004
【図４】
0005585651.tif 000005
【図５】
0005585651.tif 000006
【図６】
0005585651.tif 000007
【図７】
0005585651.tif 000008
【図８】
0005585651.tif 000009
【図９】
0005585651.tif 000010
【図１０】
0005585651.tif 000011
【図１１】
0005585651.tif 000012
【図１２】
0005585651.tif 000013