(57)【特許請求の範囲】
【請求項１】
複数のタスクをそれぞれ実行する複数のコアを有するプロセッサーと、
前記複数のタスクごとに、前記複数のコアそれぞれの処理量を記録したタスク量テーブルを記憶する記憶部と
を具備し、
前記複数のコアは、それぞれ、
自コアが実行する前記複数のタスクの処理量の総量であるタスク総量を計算し、計算した前記自コアのタスク総量で前記タスク量テーブルを更新するタスク総量計算部と、
前記タスク量テーブルを参照して、前記自コアの前記タスク総量が第１のしきい値を下回っており、前記自コアとは別のコアの前記タスク総量が第２のしきい値（第２のしきい値＞第１のしきい値）を超えていないかを判断するスリープ移行チェック部と、
前記スリープ移行チェック部が、前記自コアの前記タスク総量が前記第１のしきい値を下回っており、前記自コアとは別のコアの前記タスク総量が前記第２のしきい値を超えていないと判断すると、前記自コアをスリープ状態に移行させるスリープ移行処理部と
を備えた
電子機器。
【請求項２】
請求項１に記載の電子機器であって、
前記複数のコアは、それぞれ、
前記自コアとは別のコアが前記スリープ状態にあるとき、前記タスク量テーブルを参照して、前記自コアの前記タスク総量が第３のしきい値（第３のしきい値＞第２のしきい値）を超えているかを判断するスリープ復帰チェック部と、
前記スリープ復帰チェック部が、前記自コアの前記タスク総量が前記第３のしきい値を超えていると判断すると、前記スリープ状態にある前記コアを前記スリープ状態から復帰させるスリープ復帰処理部と
をさらに備えた
電子機器。
【請求項３】
複数のタスクをそれぞれ実行する複数のコアを有するプロセッサーと、
前記複数のタスクごとに、前記複数のコアそれぞれの処理量を記録したタスク量テーブルを記憶する記憶部と
を具備する電子機器の前記複数のコアを、それぞれ、
自コアが実行する前記複数のタスクの処理量の総量であるタスク総量を計算し、計算した前記自コアのタスク総量で前記タスク量テーブルを更新するタスク総量計算部と、
前記タスク量テーブルを参照して、前記自コアの前記タスク総量が第１のしきい値を下回っており、前記自コアとは別のコアの前記タスク総量が第２のしきい値（第２のしきい値＞第１のしきい値）を超えていないかを判断するスリープ移行チェック部と、
前記スリープ移行チェック部が、前記自コアの前記タスク総量が前記第１のしきい値を下回っており、前記自コアとは別のコアの前記タスク総量が前記第２のしきい値を超えていないと判断すると、前記自コアをスリープ状態に移行させるスリープ移行処理部
として動作させる給電制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のプロセッサーまたは複数のコアを持つプロセッサーの低消費電力制御を行う電子機器および給電制御プログラムに関する。
【背景技術】
【０００２】
従来、複数のプロセッサー（ＣＰＵ、Central Processing Unit）を持つ電子機器や、複数のコアを持つＣＰＵにおいて、処理量が少ない時に、一部のＣＰＵまたは一部のコアをスリープさせて消費電力を低減させる工夫がなされてきた。
【０００３】
例えば、特許文献１において開示されている技術では、一部のＣＰＵがスリープ状態にある時に、外部割り込みや稼働中のＣＰＵからの割り込みによらず、スリープ解除を行う制御回路が参照する制御ビットの書き換え、または同回路が参照する、メモリー上の所定アドレスへのタスク制御データの格納を行うことにより、スリープ状態からの復帰を行う。
【０００４】
また、例えば、特許文献２の技術では、マルチコアＣＰＵの外部に、ＣＰＵコア状態検出部、ＣＰＵコア使用量監視部、およびＣＰＵコア制御部を設け、稼働しているコアの数およびコア使用量に基づき、各コアの停止および開始制御を行う。
【０００５】
また、例えば、特許文献３の技術では、複数あるＣＰＵのうち、主ＣＰＵが、副ＣＰＵに対し起動のためのｂｏｏｔ要求や停止のためのｈａｌｔ要求を専用ハードウェアにより実現されたプロセス間通信で送信し、電源管理デバイスが各ＣＰＵの電源のオン・オフを行うものである。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２０１３−４１３６６号公報
【特許文献２】特開２０１３−１４９２２１号公報
【特許文献３】特開２００４−３５５１５３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
上述した各技術では、一部のＣＰＵまたは一部のコアを停止させたり開始させたりするために特殊な専用ハードウェアを追加する必要があったので、停止・開始のための仕組みが複雑になったり、コストがかかるものになったりしていた。
【０００８】
以上のような事情に鑑み、本発明の目的は、特殊なハードウェアを用いることなく、ソフトウェアにより一部のＣＰＵまたは一部のコアをスリープさせて消費電力を低減させることが出来る電子機器および給電制御プログラムを提供することにある。
【課題を解決するための手段】
【０００９】
上記目的を達成するため、本発明の一形態に係る電子機器は、複数のタスクをそれぞれ実行する複数のコアを有するプロセッサーと、実行される前記複数のタスクの処理量の総量であるタスク総量を前記コア毎に計算するタスク総量計算部と、前記コア毎に計算された前記タスク総量に基づき、前記複数のコアの一部をスリープ状態に移行させるスリープ移行処理部と、前記一部のコアが前記スリープ状態にあるとき、前記タスク総量に基づき、前記スリープ状態にあるコアを前記スリープ状態から復帰させるスリープ復帰処理部とを備える。そのため、特殊なハードウェアを用いることなく、ソフトウェアにより一部のＣＰＵまたは一部のコアをスリープさせて消費電力を低減させることが出来る。
【００１０】
上記目的を達成するため、本発明の一形態に係る電子機器は、前記タスク総量が、特定のコアで第１のしきい値を下回ったか否かを判断するスリープ移行チェック部を更に備え、  前記スリープ移行処理部は、前記スリープ移行チェック部の判断に基づき、前記タスク総量が前記第１のしきい値を下回ったコアをスリープ状態に移行させる構成でもよい。
【００１１】
上記目的を達成するため、本発明の一形態に係る電子機器では、前記スリープ移行チェック部は、前記タスク総量が前記第１のしきい値を下回ったコア以外のコアの前記タスク総量が第２のしきい値を超えるか否かを更に判断し、前記スリープ移行処理部は、前記スリープ移行チェック部の判断に基づき、前記タスク総量が前記第１のしきい値を下回ったコアを、前記タスク総量が前記第１のしきい値を下回ったコア以外のコアの前記タスク総量が第２のしきい値を超えない場合に、スリープ状態に移行させる構成でもよい。
【００１２】
上記目的を達成するため、本発明の一形態に係る電子機器は、一部の前記コアが前記スリープ状態にあるとき、前記スリープ状態にないコアにおける、前記タスク総量の合計が、第３のしきい値を超えるか否かを判断するスリープ復帰チェック部を更に備え、前記スリープ復帰処理部は、前記スリープ復帰チェック部の判断に基づき、前記スリープ状態にないコアにおける、前記タスク総量の合計が、第３のしきい値を超える場合に、前記スリープ状態にあるコアを前記スリープ状態から復帰させる構成でもよい。
【００１３】
上記目的を達成するため、本発明の一形態に係る給電制御プログラムは、複数のタスクをそれぞれ実行する複数のコアを有するプロセッサー上で稼働し、実行される前記複数のタスクの処理量の総量であるタスク総量を前記コア毎に計算し、前記コア毎に計算された前記タスク総量に基づき、前記複数のコアの一部をスリープ状態に移行させ、前記一部のコアが前記スリープ状態にあるとき、前記タスク総量に基づき、前記スリープ状態にあるコアを前記スリープ状態から復帰させる手順をコンピューターに実行させる。
【発明の効果】
【００１４】
以上のように、本発明によれば、特殊なハードウェアを用いることなく、ソフトウェアにより一部のＣＰＵまたは一部のコアをスリープさせて消費電力を低減させることが出来る。
【図面の簡単な説明】
【００１５】
【図１】電子機器１０が一般的なコンピューターにより構成される場合の構成図である。
【図２】ＣＰＵ１１の機能ブロック図である。
【図３】タスク量テーブルの一例である。
【図４】タスク総量が少なくなった１つのコアがスリープ状態に移行する際の処理について説明するためのフローチャートである。
【図５】一方のコアがスリープしている状態で、もう一方のコアが処理するタスク総量が増え、スリープしているコアをスリープ状態から復帰させる際の処理について説明するためのフローチャートである。
【発明を実施するための形態】
【００１６】
以下、図面を参照しながら、本発明の実施形態を説明する。
【００１７】
［概要］
最初に、概要について説明する。
【００１８】
図１に示すように、本発明の実施形態に係る電子機器１０は、１つのＣＰＵ１１を備え、ＣＰＵ１１は、ＳＭＰ（Symmetric Multi-Processing、対称型マルチプロセッシング）を行う２つのコア、コア０およびコア１を備えている。コア０およびコア１は、共有メモリー等により互いに通信することが出来る。
【００１９】
なお、以下の説明では、１つのマルチコアＣＰＵとして説明するが、電子機器がＳＭＰ型の複数のＣＰＵを備えている場合も同様である。
【００２０】
本発明では、１つのコアのタスク総量（後述）が第１のしきい値を下回り、かつもう一つのコアのタスク総量が大きくなり過ぎない場合（第２のしきい値を超えない場合）には、第１のしきい値を下回ったコアをスリープさせ、本来処理を担当すべきであったタスクをもう一つのスリープしない方のコアに分担させる。
【００２１】
ここで、両方のコアが第１のしきい値を下回る場合には、タスク総量が小さい方のコアをスリープさせ、本来処理を担当すべきであったタスクをもう一つのスリープしない方のコアに分担させる。
【００２２】
なお、第１のしきい値は第２のしきい値よりも小さい値とすることができる。例えば、第１のしきい値をコアが特定時間内に処理可能なタスク総量の２０％、第２のしきい値をコアが特定時間内に処理可能なタスク総量の６０％とすることが出来る。
【００２３】
そして、１つのコアがスリープし、もう一方のコアだけで処理を行っている場合に、タスク総量が第３のしきい値を超える場合には、スリープしているコアをスリープから復帰させ、２つのコアを用いて処理を継続する。
【００２４】
ここで、第3のしきい値は、第２のしきい値よりも大きい値とすることが出来る。例えば、コア０とコア１が同じ処理能力を有しており、第２のしきい値をコアが特定時間内に処理可能なタスク総量の６０％とするとき、第３のしきい値をコアが特定時間内に処理可能なタスク総量の８０％とすることが出来る。
【００２５】
このようにすることで、特殊なハードウェアを用いることなく、ソフトウェアにより一部のＣＰＵまたは一部のコアをスリープさせて消費電力を低減させることが出来る。
以上、概要について説明した。
【００２６】
［電子機器１０の構成］
次に、電子機器１０のハードウェア構成について説明する。電子機器１０は、専用のハードウェアやソフトウェアにより構成されていてもよいし、一般的なコンピューターにより構成されてもよい。電子機器１０が一般的なコンピューターにより構成される場合の構成図を図１に示す。
【００２７】
図１に示すように、電子機器１０は、ＣＰＵ１１、ＲＯＭ（Read Only Memory）１２、ＲＡＭ（Random Access Memory）１３、操作入力部１４、ネットワークインターフェイス部１５、表示部１６、および記憶部１７を有し、これら各ブロックがバス１８を介して接続されている。
【００２８】
なお、以下の説明では、ＣＰＵ１１は、コア０およびコア１を有するデュアルコア構成であるとして説明するが、本発明はデュアルコアに限らず、３つ以上のコアにより構成されたＣＰＵであっても適用可能である。
【００２９】
ＲＯＭ１２は、各種の処理を実行するためのファームウェア等の複数のプログラムやデータを固定的に記憶する。ＲＡＭ１３は、ＣＰＵ１１の作業用領域として用いられ、ＯＳ（Operating System）、実行中の各種アプリケーション、処理中の各種データを一時的に保持する。
【００３０】
記憶部１７は、例えばＨＤＤ（Hard Disk Drive）や、フラッシュメモリー、その他の不揮発性メモリーである。記憶部１７には、ＯＳや各種アプリケーション、各種データに加え、後述するタスク量テーブル１７ａが記憶される。
【００３１】
ネットワークインターフェイス部１５は、外部と情報のやりとりを行う為のネットワークと結ばれている。
【００３２】
ＣＰＵ１１は、ＲＯＭ１２や記憶部１７に格納された複数のプログラムのうち、操作入力部１４から与えられる命令に対応するプログラムをＲＡＭ１３に展開し、この展開されたプログラムにしたがって、表示部１６及び記憶部１７を適宜制御する。
【００３３】
操作入力部１４は、例えばマウス等のポインティングデバイス、キーボード、タッチパネル、その他の操作装置である。
【００３４】
表示部１６は、例えば液晶ディスプレイ、ＥＬ（Electro-Luminescence）ディスプレイ、プラズマディスプレイ、ＣＲＴ（Cathode Ray Tube）ディスプレイ等である。表示部１６は、電子機器１０に内蔵されていてもよいし、外部接続されていてもよい。
【００３５】
なお、図２に示すように、コア０およびコア１は、それぞれ、タスク総量計算部１１ｃ、スリープ移行チェック部１１ｄ、スリープ移行処理部１１ｅ、スリープ復帰チェック部１１ｆ、およびスリープ復帰処理部１１ｇを有している。タスク総量計算部１１ｃ、スリープ移行チェック部１１ｄ、スリープ移行処理部１１ｅ、スリープ復帰チェック部１１ｆ、およびスリープ復帰処理部１１ｇは、ＲＯＭ１２などからＲＡＭ１３にロードされたプログラムがコア０またはコア１により実行されることで実現される機能ブロックである。
【００３６】
タスク総量計算部１１ｃは、後述するタスク量テーブル１７ａを更新し、更新したタスク量テーブル１７ａを用いてタスク総量を計算する。
【００３７】
スリープ移行チェック部１１ｄは、コア０またはコア１において１つのタスクが終了した時点で、タスク総量をチェックし、コア０またはコア１をスリープに移行させる条件が成立しているか否かをチェックする。
【００３８】
スリープ移行処理部１１ｅは、タスク総量の少なくなったコア、例えばコア１をスリープ状態に移行させると共に、スリープ移行通知をもう一方のコア０に送信し、スリープしないもう一方のコア０においては、スリープ移行通知を受信してコア１がスリープしたことを覚えておく。
【００３９】
スリープ復帰チェック部１１ｆは、スリープしていない方のコアにおいて、１つのタスクが終了した時点で、タスク総量をチェックし、スリープしているコアをスリープから復帰させる条件が成立しているか否かをチェックする。
【００４０】
スリープ復帰処理部１１ｇは、スリープしているコアをスリープから復帰させ、スリープしていない方のコアのみで行っていたタスクを、本来の分担割合に基づいて２つのコアが分担する状態に戻す。
【００４１】
以上、電子機器１０の構成について説明した。
【００４２】
［タスク量テーブルについて］
次に、各コアをスリープさせたり、スリープから復帰させたりする際の判断に用いるタスク総量を求めるために用いられるタスク量テーブル１７ａについて説明する。図３はタスク量テーブルの一例である。この例は、例えばコア１においてタスクＺが終了してタスク総量をチェックする時点での状態を表したものである。
【００４３】
例えば、タスクＡは、タスクＡを完了させるまでに１００個の命令（例えばアセンブラ命令）を実行しなければならず、その１００個の命令のうち、コア０の分担割合は７０％であるので、タスクＡを実行する際にコア０が分担する処理量は７０となる。
【００４４】
ＣＰＵ１１では、タスクＡからタスクＦまでを処理することになっており、各タスクの処理量の合計（タスク総量）は４９０である。
【００４５】
また、コア０におけるタスク総量は１９８であり、コア１ではタスク総量は２９２である。
【００４６】
なお、１つのタスクを２つのコアで分担させる割合は、電子機器１０の設計者により予め決められていてもよい。例えば、急ぐ処理の場合は、コア０およびコア１の分担割合を５０％ずつとしてもよい。
【００４７】
また、例えば、電子機器１０が画像形成装置（ＭＦＰ、Multifunction Peripheral）であり、設計者がタスクの分担を設計時に予め決めやすい場合は、原稿を読取りながら印刷するコピー処理など、読取り処理を一方のコアに多く分担させ、もう一方のコアに印刷処理を多く分担させることが考えられる。このような分担にすると、印刷処理が完了していなくても、読取り処理が終了した時点で一方のコアをスリープさせ、省電力化を図ることが出来る。
【００４８】
なお、タスク量テーブル１７ａは、タスク総量計算部１１ｃにより管理されている。
【００４９】
以上、タスク量テーブル１７ａについて説明した。
【００５０】
［処理の流れ（スリープ移行時）］
次に、タスク総量が少なくなった１つのコアがスリープ状態に移行する際の処理について説明する。図４は、タスク総量が少なくなった１つのコアがスリープ状態に移行する際の処理について説明するためのフローチャートである。
【００５１】
なお、ここでは、コア０の負荷が低くなり、コア１において両コア分のタスクを処理しても問題が無いと判断され、コア０がスリープ状態に移行する場合を例に説明している。
【００５２】
まず、コア０において、スリープ移行チェック部１１ｄが、コア０において処理されているタスクのうちの１つが終了したか否かを判断する（ステップＳ１）。
【００５３】
タスクが終了していない場合（ステップＳ１のＮ）、スリープ移行チェック部１１ｄはステップＳ１に戻り、タスクの終了を継続的にチェックする。
【００５４】
タスクが終了した場合（ステップＳ１のＹ）、コア０のスリープ移行チェック部１１ｄは、タスク総量計算部１１ｃに問い合わせて、コア０がスリープ可能か否かをチェックする（ステップＳ２）。具体的には、コア０のタスク総量が第１のしきい値を下回っており、かつコア０のスリープ時にコア１が処理しなければならないタスク総量が第２のしきい値を超えていないかをチェックする。
【００５５】
次に、コア０のスリープ移行チェック部１１ｄは、スリープ移行が可能であるか否かを判断する（ステップＳ３）。
【００５６】
スリープ移行が不可能と判断された場合（ステップＳ３のＮ）、スリープ移行処理は行われず、２つのコアで分担して処理が継続される。
【００５７】
スリープ移行が可能と判断された場合（ステップＳ３のＹ）、コア０のスリープ移行処理部１１ｅが、自コアをスリープさせるための処理を行い、もう一方のコアであるコア１のスリープ移行処理部１１ｅに対し、コア０がスリープする旨を伝えるためのスリープ移行通知を送信する（ステップＳ４）。
【００５８】
スリープ移行通知を受信した、コア１のスリープ移行処理部１１ｅは、コア０がスリープしたことを認識し、コア０が分担していたタスク処理を引き継ぐ（ステップＳ５）。
【００５９】
次に、コア０がスリープ状態に入る（ステップＳ６）。なお、コアがスリープ状態であるとは、スリープするコアに対する電力供給が遮断されている状態であってもよい。
【００６０】
以上、タスク総量が少なくなった１つのコアがスリープ状態に移行する際の処理について説明した。
【００６１】
［処理の流れ（スリープ復帰時）］
次に、一方のコアがスリープしている状態で、もう一方のコアが処理するタスク総量が増え、スリープしているコアをスリープ状態から復帰させる際の処理について説明する。図５は、一方のコアがスリープしている状態で、もう一方のコアが処理するタスク総量が増え、スリープしているコアをスリープ状態から復帰させる際の処理について説明するためのフローチャートである。
【００６２】
なお、ここでは、コア０がスリープしている状態で、コア１が処理している両コア分のタスクの総量が増え、コア０をスリープ状態から復帰させる場合を例に説明している。
【００６３】
最初、コア０はスリープ状態にあるとする（ステップＳ１０）。
【００６４】
次に、コア１において、スリープ復帰チェック部１１ｆが、コア１において処理されているタスクのうちの１つが終了したか否かを判断する（ステップＳ１１）。
【００６５】
タスクが終了していない場合（ステップＳ１１のＮ）、コア１のスリープ復帰チェック部１１ｆはステップＳ１１に戻り、タスクの終了を継続的にチェックする。
【００６６】
タスクが終了した場合（ステップＳ１１のＹ）、コア１のスリープ復帰チェック部１１ｆは、タスク総量計算部１１ｃに問い合わせて、コア０をスリープから復帰させるべきか否かをチェックする（ステップＳ１２）。具体的には、コア１のタスク総量が第３のしきい値を超えているかをチェックする。
【００６７】
次に、コア１のスリープ復帰チェック部１１ｆは、コア０をスリープ状態から復帰させるべきか否かを判断する（ステップＳ１３）。
【００６８】
スリープ復帰が不要と判断された場合（ステップＳ３１のＮ）、コア０のスリープからの復帰処理は行われず、コア１のみで処理が継続される。
【００６９】
スリープ復帰が必要と判断された場合（ステップＳ３のＹ）、コア１のスリープ復帰処理部１１ｇが、コア０をスリープ状態から復帰させるための処理を行い、コア０の復帰後、コア１において処理していた、本来コア０で行うべき処理を、コア０に移す（ステップＳ１４、Ｓ１５）。
【００７０】
例えば、コア０およびコア１の特定時間内に処理可能なタスク総量が２７０のとき、第１のしきい値を５４、第２のしきい値を１６２、第３のしきい値を２１６とする。
【００７１】
このとき、コア０でタスクが完了したと判断されたとき（ステップＳ１のＹ）に図３に示すタスクＥとタスクＦが処理中であれば、コア０のタスク総量は３７（＝１２＋２５）、コア１のタスク総量は１３３（＝１０８＋２５）である。
【００７２】
そうすると、コア０のタスク総量（３７）が第１のしきい値（５０）を下回っており、コア１のタスク総量（１３３）が第２のしきい値（１５０）を超えていない。
【００７３】
従って、コア０のスリープ移行チェック部１１ｄは、スリープ移行可能と判断し（ステップＳ３のＹ）、ステップＳ４およびステップＳ６を経てコア０がスリープ状態に入る。コア１は、コア０が分担していたタスクＥとタスクＦの処理を引き継ぐ（ステップＳ５）ので、コア１のタスク総量は１７０（＝１２０＋５０）になる。
【００７４】
次に、図３に示すタスクＡが発生したとする。このとき、コア１がタスクＡの処理を開始する。さらに、コア１でタスクＦが完了すると（ステップＳ１１のＹ）、コア１のタスク総量は２２０（＝１００＋１２０）になる。
【００７５】
コア１のスリープ復帰チェック部１１ｆは、タスク総量（２２０）が第３のしきい値（２１６）を上回っているので、コア０をスリープ状態から復帰させるべきと判断し（ステップＳ１３のＹ）、ステップＳ１４及びステップＳ１５を経てコア０がスリープ状態から復帰させる。
【００７６】
コア０の復帰後、コア１において処理していた、タスクＡとタスクＥの処理のうちコア０の分担割合に応じた処理を、コア０に移す。そして、コア０のタスク総量は８２（＝７０＋１２）、コア１のタスク総量は１３８（＝３０＋１０８）になる。
【００７７】
なお、本来、コア０で行うべき処理を、コア１からコア０に移す際に時間がかかる場合は、コア０を復帰させた後もコア１で処理を一時的に継続させることにより、コア１からコア０への移行をスムーズに行わせることが出来る。
【００７８】
以上、一方のコアがスリープしている状態で、もう一方のコアが処理するタスク総量が増え、スリープしているコアをスリープ状態から復帰させる際の処理について説明した。
【００７９】
［補足事項］
以上のように、本発明の一実施形態に係る電子機器１０は、複数のタスクをそれぞれ実行する複数のコア（コア０およびコア１）を有するＣＰＵ１１と、実行される前記複数のタスクの処理量の総量であるタスク総量を前記コア毎に計算するタスク総量計算部１１ｃと、前記コア毎に計算された前記タスク総量に基づき、前記複数のコアの一部をスリープ状態に移行させるスリープ移行処理部１１ｅと、前記一部のコアが前記スリープ状態にあるとき、前記タスク総量に基づき、前記スリープ状態にあるコアを前記スリープ状態から復帰させるスリープ復帰処理部１１ｇとを備える。
【００８０】
その他、本発明は、上述の実施形態にのみ限定されるものではなく、本発明の要旨を逸脱しない範囲内において種々変更を加え得ることは勿論である。
【００８１】
例えば、上述の実施形態において、図４のステップＳ１、図５のステップＳ１１において、タスク終了を判断する代わりに、新たなタスクの発生を判断してもよい。この場合新たなタスクが発生するとステップＳ２またはステップＳ１２に進む。
【００８２】
また、図４のステップＳ１、図５のステップＳ１１におけるタスク終了の判断に加えて、新たなタスクの発生を判断してもよい。この場合、タスクが終了した、又は新たなタスクが発生したと判断するとステップＳ２またはステップＳ１２に進む。
【００８３】
また、全てのコアがタスクを処理している状態において、新たなタスクの発生により、一方のコアが分担するタスク総量が特定時間内に処理可能なタスク総量を超える場合、新たなタスクの超える分の処理量を他方のコアに分担させてもよい。
【符号の説明】
【００８４】
０  …  コア
１  …  コア
１０  …  電子機器
１１  …  ＣＰＵ
１１ｃ…  タスク総量計算部
１１ｄ…  スリープ移行チェック部
１１ｅ…  スリープ移行処理部
１１ｆ…  スリープ復帰チェック部
１１ｇ…  スリープ復帰処理部
１２  …  ＲＯＭ
１３  …  ＲＡＭ
１４  …  操作入力部
１５  …  ネットワークインターフェイス部
１６  …  表示部
１７  …  記憶部
１７ａ…  タスク量テーブル
１８  …  バス
【図１】
0006380261.tif 000002
【図２】
0006380261.tif 000003
【図３】
0006380261.tif 000004
【図４】
0006380261.tif 000005
【図５】
0006380261.tif 000006