(57)【要約】【課題】マルチコアプロセッサシステムにおいて無駄な電力消費を削減する。【解決手段】複数のプロセッサ１１０−１〜ｎで構成されたシステムで実行される複数のタスク２２０−１〜ｍのスケジューリングを行うタスクスケジューリング装置であって、複数のタスク２２０の各タスク２２０の仕事量をタスクの処理前に計測する計測部２１１を有し、計測部２１１によって計測された仕事量に基づいて複数のプロセッサ１１０の使用率を予測し、アイドル状態となるプロセッサ１１０が存在することを検知した場合に、該当するプロセッサ１１０への電源供給をオフさせるスケジューラ２１０を備えた。【選択図】図１
2010160565.tif 000002
【特許請求の範囲】
【請求項１】
複数のプロセッサで構成されたシステムで実行される複数のタスクのスケジューリングを行うタスクスケジューリング装置であって、
前記複数のタスクの各タスクの仕事量をタスクの処理前に計測する計測部を有し、前記計測部によって計測された仕事量に基づいて前記複数のプロセッサの使用率を予測し、アイドル状態となるプロセッサが存在することを検知した場合に、該当するプロセッサへの電源供給をオフさせるスケジューラを備えていること
を特徴とするタスクスケジューリング装置。
【請求項２】
請求項１記載のタスクスケジューリング装置であって、
前記スケジューラは、
実行される複数のタスクの処理順序を決定し割り当てるタスク割り当て部と、
前記該当するプロセッサへの電源供給をオフさせる制御要求部と、
を備えていることを特徴とするタスクスケジューリング装置。
【請求項３】
請求項１又は２記載のタスクスケジューリング装置であって、
前記スケジューラは、前記電源供給をオフしたプロセッサに対して前記電源供給オフ後の所定期間に、前記プロセッサに対するタスク割り当て要求があった場合、前記プロセッサ以外の動作中のプロセッサに対してタスクの割り当てを行うこと
を特徴とするタスクスケジューリング装置。
【請求項４】
請求項１又は２記載のタスクスケジューリング装置であって、
前記スケジューラは、電源が投入されていないプロセッサに対してタスクを割り当てる必要があるとき、該当するプロセッサの電源を立ち上げ、初期化するための新たなタスクを生成し、当該タスク実行待ち状態のタスクキューの先頭に配置すること
を特徴とするタスクスケジューリング装置。
【請求項５】
請求項１又は２記載のタスクスケジューリング装置であって、
外部要求により電源がオフされているプロセッサの電源を復帰させるインターフェイスを備え、
前記スケジューラは、前記複数のプロセッサ上で実行するタスクを投入する前に、前記インターフェイスを介して前記複数のプロセッサを利用可能な状態に復帰させること
を特徴とするスケジューリング装置。
【請求項６】
請求項１又は２記載のタスクスケジューリング装置であって、
外部記憶装置を備え、
前記スケジューラは、前記複数のタスクの処理に際し、前記外部記憶装置へのアクセスが発生しない場合に、前記外部記憶装置の駆動モータを停止させること
を特徴とするタスクスケジューリング装置。
【請求項７】
請求項１又は２記載のタスクスケジューリング装置であって、
前記複数のプロセッサを冷却するためのファンを備え、
前記スケジューラは、処理量が低いプロセッサを検知した場合に、当該プロセッサを冷却するファンの回転数を所定回転数以下に下げることを特徴とするタスクスケジューリング装置。
【請求項８】
請求項１ないし５のいずれか１項に記載のタスクスケジューリング装置であって、
前記プロセッサへの電源供給を制御する電源制御部を備え、
当該電源制御部は前記制御要求部からの要求に応じて前記プロセッサへの電源供給を制御すること
を特徴とするタスクスケジューリング装置。
【請求項９】
請求項６記載のタスクスケジューリング装置であって、
前記外部記憶装置への電源供給を制御する電源制御部を備え、
当該電源制御部は前記制御要求部からの要求に応じて前記外部記憶の駆動モータの駆動を制御すること
を特徴とするタスクスケジューリング装置。
【請求項１０】
請求項７記載のタスクスケジューリング装置であって、
前記ファンへの電源供給を制御する電源制御部を備え、
当該電源制御部は前記制御要求部からの要求に応じて前記ファンの駆動を制御すること
を特徴とするタスクスケジューリング装置。
【請求項１１】
複数のプロセッサで構成されたシステムで実行される複数のタスクのスケジューリングを行うタスクスケジューリング制御方法であって、
前記複数のタスクの各タスクの仕事量を計測部でタスクの処理前に計測し、
前記計測部によって計測された仕事量に基づいて前記複数のプロセッサの使用率を予測し、
アイドル状態となるプロセッサが存在することを検知した場合に、該当するプロセッサへの電源供給をオフさせること
を特徴とするタスクスケジューリング制御方法。
【請求項１２】
複数のプロセッサで構成されたシステムで実行される複数のタスクのスケジューリングをコンピュータによって実行させるタスクスケジューリング制御プログラムであって、
前記複数のタスクの各タスクの仕事量を計測部でタスクの処理前に計測する手順と、
前記計測部によって計測された仕事量に基づいて前記複数のプロセッサの使用率を予測する手順と、
アイドル状態となるプロセッサが存在することを検知した場合に、該当するプロセッサへの電源供給をオフさせる手順と、
を備えていることを特徴とするタスクスケジューリングプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は複数のプロセッサを搭載したシステムにおける省電力制御に係り、特に、マルチコアプロセッサ方式を採用している情報処理装置で省電力制御を実行するためのタスクスケジューリング装置、そのための制御方法、及びタスクスケジューリング制御をコンピュータで実行するためのタスクスケジューリング制御プログラムに関する。
【背景技術】
【０００２】
小型情報処理機器の分野においては複数個のＣＰＵを搭載したマルチプロセッサシステムが普及しつつある。一般的に、これらのマルチプロセッサシステムにおいては、演算性能が高く消費電力の大きなＣＰＵが複数個搭載されることから、システム全体の消費電力が大きくなってしまう。そこで、例えば、特許文献１には、マルチプロセッサ方式の情報処理装置に適用される省電力制御システムに関し、全体的な動作の整合性を損なわずに待機状態のシステムの消費電力が抑制されるように、各々のＣＰＵの状態遷移制御及びその動作状態に応じた個別の省電力制御を行うようにした発明が提案されている。
【０００３】
この発明は、複数のＣＰＵを備えるマルチプロセッサシステムにおいて、プロセッサバスを監視することによって個々のＣＰＵの動作状態を検出するプロセッサバス監視部と、システムの負荷状態を監視するシステム状態監視部とを設け、また、システム状態監視部からの通知に基づいて個々のＣＰＵによる消費電力を制御するシステム状態制御部を設ける。そして、キー入力待ちなどのために特定のＣＰＵに対する負荷が少ない状態が続くと、そのことがプロセッサバス監視部などによってシステム状態制御部に通知され、システム状態制御部はクロック切り替え部に指令して当該ＣＰＵへ供給するクロックを低い周波数に切り替えるようになっている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平８−００６６８１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
マルチプロセッサシステムでは、ＯＳ側でソフトウェア的に省電力制御を行うことも必要となる。例えば、複数のＣＰＵを備えるマルチプロセッサシステムの状態遷移制御、ここでは、通常状態と待機状態との間の遷移制御を実行する場合には、複数のＣＰＵのうちのいずれのＣＰＵの状態を遷移させるのかを決定して、当該ＣＰＵの起動又は停止処理を行うとともに、接続されているハードウェア資源の論理的な管理を行う必要がある。これに対応できるように、前記従来技術では、ＣＰＵの電源を切るのではなく周波数を下げることによる省電力方法と、周波数を下げるためにクロックを変動したり、２種類のクロックを利用したりする方式を採用している。
【０００６】
このように前記従来技術では、ＣＰＵの電源を切らずに、周波数を下げる際、ハードウェアによりＣＰＵの電源制御するようにした場合には、プラットフォームに大きく依存するため、ソフトウェアの移植性が損なわれる。
【０００７】
また、前記従来技術では、マルチプロセッサのシステムにおいて、アイドル状態のプロセッサも使用中のプロセッサも同等の電源が投入されており、アイドル状態のプロセッサは無駄に電力を消費してしまう。
【０００８】
そこで、本発明が解決しようとする課題は、マルチコアプロセッサシステムにおいて無駄な電力消費を削減すること、及びソフトウェアのスケジューラのみによるＣＰＵその他ハードウェアの電源制御を実施することによってハードウェアへの依存性を抑えながら、ソフトウェアの移植性を向上させることにある。
【課題を解決するための手段】
【０００９】
前記課題を解決するため、第１の手段は、複数のプロセッサで構成されたシステムで実行される複数のタスクのスケジューリングを行うタスクスケジューリング装置であって、前記複数のタスクの各タスクの仕事量をタスクの処理前に計測する計測部を有し、前記計測部によって計測された仕事量に基づいて前記複数のプロセッサの使用率を予測し、アイドル状態となるプロセッサが存在することを検知した場合に、該当するプロセッサへの電源供給をオフさせるスケジューラを備えていることを特徴とする。
【００１０】
第２の手段は、第１の手段において、前記スケジューラが、実行される複数のタスクの処理順序を決定し割り当てるタスク割り当て部と、前記該当するプロセッサへの電源供給をオフさせる制御要求部と、を備えていることを特徴とする。
【００１１】
第３の手段は、第１又は第２の手段において、前記スケジューラは、前記電源供給をオフしたプロセッサに対して前記電源供給オフ後の所定期間に、前記プロセッサに対するタスク割り当て要求があった場合、前記プロセッサ以外の動作中のプロセッサに対してタスクの割り当てを行うことを特徴とする。
【００１２】
第４の手段は、第１又は第２の手段において、前記スケジューラは、電源が投入されていないプロセッサに対してタスクを割り当てる必要があるとき、該当するプロセッサの電源を立ち上げ、初期化するための新たなタスクを生成し、当該タスク実行待ち状態のタスクキューの先頭に配置することを特徴とする。
【００１３】
第５の手段は、第１又は第２の手段において、外部要求により電源がオフされているプロセッサの電源を復帰させるインターフェイスを備え、前記スケジューラは、前記複数のプロセッサ上で実行するタスクを投入する前に、前記インターフェイスを介して前記複数のプロセッサを利用可能な状態に復帰させることを特徴とする。
【００１４】
第６の手段は、第１又は第２の手段において、外部記憶装置を備え、前記スケジューラは、前記複数のタスクの処理に際し、前記外部記憶装置へのアクセスが発生しない場合に、前記外部記憶装置の駆動モータを停止させることを特徴とする。
【００１５】
第７の手段は、第１又は第２の手段において、前記複数のプロセッサを冷却するためのファンを備え、前記スケジューラは、処理量が低いプロセッサを検知した場合に、当該プロセッサを冷却するファンの回転数を所定回転数以下に下げることを特徴とする。
【００１６】
第８の手段は、第１ないし第５のいずれかの手段において、前記プロセッサへの電源供給を制御する電源制御部を備え、当該電源制御部は前記制御要求部からの要求に応じて前記プロセッサへの電源供給を制御することを特徴とする。
【００１７】
第９の手段は、第６の手段において、前記外部記憶装置への電源供給を制御する電源制御部を備え、当該電源制御部は前記制御要求部からの要求に応じて前記外部記憶の駆動モータの駆動を制御することを特徴とする。
【００１８】
第１０の手段は、第７の手段において、前記ファンへの電源供給を制御する電源制御部を備え、当該電源制御部は前記制御要求部からの要求に応じて前記ファンの駆動を制御することを特徴とする。
【００１９】
第１１の手段は、複数のプロセッサで構成されたシステムで実行される複数のタスクのスケジューリングを行うタスクスケジューリング制御方法であって、前記複数のタスクの各タスクの仕事量を計測部でタスクの処理前に計測し、前記計測部によって計測された仕事量に基づいて前記複数のプロセッサの使用率を予測し、アイドル状態となるプロセッサが存在することを検知した場合に、該当するプロセッサへの電源供給をオフさせることを特徴とする。
【００２０】
第１１の手段は、複数のプロセッサで構成されたシステムで実行される複数のタスクのスケジューリングをコンピュータによって実行させるタスクスケジューリング制御プログラムであって、前記複数のタスクの各タスクの仕事量を計測部でタスクの処理前に計測する手順と、前記計測部によって計測された仕事量に基づいて前記複数のプロセッサの使用率を予測する手順と、アイドル状態となるプロセッサが存在することを検知した場合に、該当するプロセッサへの電源供給をオフさせる手順と、を備えていることを特徴とする。
【００２１】
なお、後述の実施形態では、複数のプロセッサはプロセッサ（ＣＰＵ）１１０−１〜ｎに、複数のタスクはタスク２２０−１〜ｎに、計測部は計測部２１１に、スケジューラはスケジューラ２１０に、タスク割り当て部はタスク割り当て部２１２に、制御要求部は制御要求部２１３に、インターフェイスは制御要求部２１３に、外部記憶装置はハードディスクドライブ装置（ＨＤＤ）１６０に、ファンはＦＡＮ１４０−１〜ｎに、電源制御部は電源制御部１２０に、それぞれ対応する。
【発明の効果】
【００２２】
本発明によれば、複数のタスクの各タスクの仕事量をタスクの処理前に計測し、計測された仕事量に基づいて前記複数のプロセッサの使用率を予測し、アイドル状態となるプロセッサが存在することを検知した場合に、該当するプロセッサへの電源供給をオフさせるので、マルチコアプロセッサシステムにおける無駄な電力消費を削減することができる。
【００２３】
また、ソフトウェアのスケジューラのみによるプロセッサの電源制御を実施するので、ハードウェアへの依存性を抑えながら、ソフトウェアの移植性を向上させることができる。
【図面の簡単な説明】
【００２４】
【図１】本発明の実施形態に係るマルチプロセッサシステムの概略構成を示す図である。
【図２】本実施形態におけるマルチコアプロセッサシステムの各プロセッサの状態の遷移を示す状態遷移図である。
【図３】タスクスケジューリングにおけるスケジューラの処理手順を示すフローチャートである。
【発明を実施するための形態】
【００２５】
以下、図面を参照し、本発明の実施形態について説明する。
【００２６】
図１は本発明の実施形態に係るマルチプロセッサシステムの概略構成を示す図である。同図において、本実施形態に係るマルチプロセッサシステムは、ハードウェア部１００とソフトウェア部２００とからなる。
【００２７】
ハードウェア部１００は、複数個のＣＰＵ（プロセッサ）１１０−１，１１０−２，・・・１１０−ｎ（ｎは１以上の整数、以下同様）、電源制御部１２０、ＦＡＮコントローラ１３０、ＦＡＮ１４０−１，１４０−２，・・・１４０−ｎ、メモリ１５０、ＨＤＤ１６０、及びクロック発生部（図では、単にクロックと記す）１７０等のハードウェアモジュールを備えている。なお、プロセッサは図１ではＣＰＵと表記しているが、以下の実施形態では、プロセッサとして説明する。
【００２８】
プロセッサ１１０−１，１１０−２，・・・１１０−ｎは、演算装置であり、当該プロセッサ１１０−１，１１０−２，・・・１１０−ｎに割り当てられた制御対象を制御する。電源制御部１２０は各ハードウェアモジュールの電源を管理する。ＦＡＮ１４０−１，１４０−２，・・・１４０−ｎはそれぞれ対応するプロセッサ１１０−１，１１０−２，・・・１１０−ｎの温度上昇を抑え、ＦＡＮコントローラ１３０はこれらの各ＦＡＮ１４０−１，１４０−２，・・・１４０−ｎの回転数を制御する。メモリ１５０はオペレーションシステム（ＯＳ）を始め、システム上で動作するプログラムを実行するための記憶装置である。ＨＤＤ１６０はメモリ１５０上に収まりきらないプログラムや、参照データ、実行される前のプログラムを格納する記憶装置である。クロック発生部１７０はハードウェアを動作させる際に同期を取るための周期的な信号を発生する。
【００２９】
ソフトウェア部２００は、スケジューラ２１０、複数のタスク２２０−１，２２０−２，・・・２２０−ｍ（ｍは１以上の整数、以下同様）、ディスパッチャ２３０−１，２３０−２，・・・２３０−ｎ、及びデバイスドライバ２４０を備えている。
【００３０】
スケジューラ２１０は、タスク２２０−１，２２０−２，・・・２２０−ｍを各プロセッサ１１０−１，１１０−２，・・・１１０−ｎに割り当てる機能を有し、計測部２１１、タスク割り当て部２１２、及び制御要求部２１３を備えている。計測部２１１は、スケジューラ２１０に登録されたタスク２２０−１，２２０−２，・・・２２０−ｍから情報を収集し、割り当てられるコア、リソース消費時間を計測する。タスク割り当て部２１２は、どのディスパッチャ２３０−１，２３０−２，・・・２３０−ｎにタスク２２０−１，２２０−２，・・・２２０−ｍを渡すかを決定する。制御要求部２１３は電源管理デバイスに対して、指定したデバイスの電源制御を要求する。ディスパッチャ２３０−１，２３０−２，・・・２３０−ｎは、スケジューラの一部で、プロセッサ１１０−１，１１０−２，・・・１１０−ｎの個数ｎ分存在し、実行可能なタスク２２０−１，２２０−２，・・・２２０−ｍを各プロセッサ１１０−１，１１０−２，・・・１１０−ｎに割り当てる。
【００３１】
タスク２２０−１，２２０−２，・・・２２０−ｍは実行要求される仕事の単位であり、デバイスドライバ２４０はハードウェア部１００の各ハードウェアモジュールを制御するプログラムである。なお、前記クロック発生部１７０からはソフトウェア部１００に対してクロック割り込み２５０が入る。クロック割り込み２５０は、クロック発生部１７０から出力されるクロック信号に基づいて周期的にプロセッサ１１０−１，１１０−２，・・・１１０−ｎに入る割り込みである。
【００３２】
なお、以下プロセッサ、ＦＡＮ、タスク、ディスパッチャについて総括的に述べる場合には、ｎ又はｍの添え字は省略し、符号１１０，１４０，２２０，２３０のみを付して説明する。
【００３３】
このようなシステムでは、各プロセッサ（ＣＰＵ）１１０が電源制御できる仕組みを持っていて、各プロセッサ１１０の上で実行されるタスク（処理の単位）２２０を管理するスケジューラ２１０は、タスク割り当て部２１２において各タスク２２０を任意のプロセッサ１１０に割り当てる。これは、負荷分散が目的で、複数あるプロセッサ１１０をできるだけ均等に利用することが望ましいからである。しかし、プロセッサ１１０で処理されているタスク２２０の状態は時々刻々変化し、図２の状態遷移図に示すように実行中３１０、実行可能状態３２０、及びブロック状態（休眠状態）３３０の３つの状態を遷移する。そして、システム全体の負荷が高くないとき、言い換えれば、処理されるべきタスク２２０の総量が多くないときは、いくつかのプロセッサ１１０は限りなくアイドル状態に近づく。なお、前記タスクの遷移は、図２に示したように実行中３１０、実行可能状態３２０、及びブロック状態３３０の３つの状態を遷移するもので、実行中３１０から実行可能状態３２０（矢印（１））及びブロック状態３３０（矢印（３））へ、実行可能状態３２０から実行中３１０へ（矢印（２））へ、ブロック状態３３０から実行可能状態３２０（矢印（４））へ、それぞれ処理の状態に応じて遷移する。すなわち、ブロック状態３３０からは必ず実行可能状態３２０に遷移し、実行可能状態３２０を経て、実行中の状態に遷移することができる。また、アプリケーションによっては並列性を求めないものもあり、それらは単一のプロセッサによって常に処理される方がよい。このような場合、アイドル状態のプロセッサの電源をオフする方が消費電力の削減の観点から効果がある。
【００３４】
そこで、本実施形態では、図１に示したように、複数のプロセッサ１１０−１〜ｎで構成されたシステムにおいて、実行される複数のタスク２２０−１〜ｍの処理順序を決定するスケジューラ２１０と、このスケジューラ２１０が、前記複数のタスク２２０−１〜ｍの各タスクの仕事量をタスクの処理前に計測する計測部２１１と、この計測部２１１によって計測したタスク２２０の仕事量に基づいて各プロセッサ１１０の使用率を予測して、アイドル状態となるプロセッサ１１０が存在することを検知した場合に、該当するプロセッサ１１０の電源を電源制御部１３０によってオフし、実行される複数のタスク２２０のスケジューリングを行うようにした。
【００３５】
図３は、このようなタスクスケジューリングにおけるスケジューラ２１０の処理手順を示すフローチャートである。この処理手順では、タスク要求待ち状態とタスクスケジューリング状態の２つの状態が設定され、タスク要求待ち状態では、実行待ちタスクが存在し、実行するタスクが割り当てられたプロセッサ（ＣＰＵ）ではタスク実行中３１０であり、タスクが割り当てられていないプロセッサでは実行可能状態３２０もしくはブロック状態３３０で、タスク要求を待っているとき（ステップＳ１，Ｓ２，Ｓ３）に、外部からタスク実行要求Ｓ０が入力されると、直ちにタスクスケジューリング状態に移行する（ステップＳ１０→Ｓ１００）。
【００３６】
通常、タスク実行要求ＳＯがスケジューラ２１０にわたったとき、タスク２２０は実行可能状態３２０となっている。要求されたタスク２２０は、スケジューラ２１０の持つタスク２２０のキューの最後に割り当てられ、スケジューラ２１０によって実行可能状態３２０から実行状態３１０になりプロセッサを割り当てられるのを待つ。このとき、スケジューラは新規に要求されたタスクの中の情報から、タスクがどの程度の処理量なのかを予測する。
【００３７】
すなわち、タスクスケジューリング状態では、タスク実行要求（ステップＳ１０１）に基づいてタスク情報を取得し（ステップＳ１０２）、タスク２２０のリソース消費量を解析する（ステップＳ１０３）。そして、この解析結果に基づいてプロセッサ１１０へのタスク２２０−ａ（ａは１≦ａ≦ｍの整数で、割り当てられたタスクを示す。）を割り当てる（ステップＳ１０４）。割り当てられたプロセッサ１１０−ｂ（ｂは１≦ｂ≦ｎの整数で、割り当てられたプロセッサを示す。）が休眠中（ブロック状態３３０）でなければステップＳ１１０以降の処理を実行し（ステップＳ１０５−Ｎ）、休眠中であれば（ステップＳ１０５−Ｙ）、タスクが割り当てられたプロセッサ１１０−ｂの電源オンの可否を判断する（ステップＳ１０６）。そして、タスク２２０−ａが割り当てられたプロセッサ１１０−ｂの電源をオンしてもよい場合には（ステップＳ１０６−Ｙ）、そのプロセッサ１１０−ｂの電源をオンし（ステップＳ１０９）、ステップＳ１に戻って割り当てられたタスク２２０−ａを実行する。
【００３８】
一方、割り当てられたプロセッサ１１０−ｂが休眠中でない場合（ステップＳ１０５−Ｎ）には、使用されないプロセッサ１１０が存在するかどうかを確認し（ステップＳ１１０）、あるいは割り当てられたプロセッサ１１０−ｂの電源をオンにできない場合（ステップＳ１０６−Ｎ）には、タスク２２０−ａを他のプロセッサ１１０−ｃ（ｃはｃ≠ｂ、１≦ｃ≦ｎの整数で、割り当てられたプロセッサ１１０−ｂとは異なるプロセッサを示す。）に割り当てて（ステップＳ１０８）、使用されないプロセッサ１１０が存在するかどうかを確認する（ステップＳ１１０）。
【００３９】
使用されないプロセッサ１１０が存在すれば（ステップＳ１１０−Ｙ）、使用されないプロセッサ１１０−ｄ（ｃは１≦ｄ≦ｎの整数で、使用されないプロセッサを示す。）の状態を確認し、そのプロセッサ１１０−ｄについては、追加のタスク２２０の割り当てを禁止し（ステップＳ１１２）、当該プロセッサ１１０−ｄがタスク２２０を実行中であるかどうかを確認する（ステップＳ１１３）。タスク実行中であればタスク完了を待ち（ステップＳ１１４）、実行中のタスク２２０がなくなった時点で（ステップＳ１１３−Ｎ）、当該プロセッサ１１０−ｄで使用したキャッシュデータを書き出し（ステップＳ１１５）、他のメモリに書き込んだ上で、当該プロセッサ１１０−ｄの電源をオフする（ステップＳ１１６）。次いで、プロセッサ１１０−ｄの管理情報を更新し（ステップＳ１１７）、このプロセッサ１１０−ｄへのタスク割り当て禁止を解除した（ステップＳ１１８）後、タスク要求待ち状態に戻る（ステップＳ１１９→Ｓ１）。
【００４０】
ステップＳ１１０で、使用されないプロセッサ１１０が存在せず、全てのプロセッサ１１０が使用可能であれば（ステップＳ１１０−Ｎ）、タスク要求待ち状態に戻る（ステップＳ１２０→Ｓ１）。
【００４１】
このように処理すると、複数のプロセッサ１１０を持つシステムにおいて、プロセッサ１１０が使用中でもアイドル中でも同様の電力を消費しているが、ステップＳ１１６で処理しているようにアイドル状態のプロセッサ１１０−ｄの電源を切ることにより、システムの消費電力を削減することができる。
【００４２】
なお、図３のステップＳ１、Ｓ１００、Ｓ１０９、Ｓ１１９、Ｓ１２０では○で、Ｓ１０では○の中にＨが書かれているが、これのＨが書かれた○は、タスク要求待ち状態のどのシーケンス上からでも、処理が横取りされてタスク２２０のスケジューリング状態に移行できることを意味している。具体例としては、タスク２２０が追加されたタイミングでソフトウェアの割り込みがかかり、タスク実行の処理を一旦停止させ、処理を横取りし、タスク２２０のスケジューリングを最優先に行うという処理に該当する。
【００４３】
通常のマルチコアプロセッサシステムでは、各プロセッサごとにキャッシュを持っていて、そのキャッシュを有効に利用するために、通常スケジューラは同様の処理を行うタスクは同じプロセッサで実行する。前記スケジューラ２１０においても同様のスケジューリングを取っており、要求されたタスクの検査を行う際には、そのタスクがどのコアに割り当てられる可能性があるかについても調査を行っている。しかしこの方式では、プロセッサ電源のオン、オフがタスクに依存しているために頻発する可能性があり、ハードウェアの障害を与える可能性がある。
【００４４】
すなわち、ステップＳ１０７では割り当てられたプロセッサ１１０−ｂの電源をオンし、ステップＳ１１６ではタスクを完了したプロセッサ１１０−ｄの電源をオフするようになっており、各プロセッサ１１０に対して頻繁に電源をオフ、オンする頻度が頻発すると、ハードウェア信頼性の低下と電力効率の低下を招く場合がある。そこで、これを回避するために、本実施形態では、プロセッサ１１０に対する電源のオン、オフ状態が変化した後の所定期間に、そのプロセッサ１１０に対するタスク割り当て要求があった場合（ステップＳ１０４）には、別の動作中のプロセッサ１１０に対してタスクの割り当てを行う（ステップＳ１０８）ようにした。これにより、スケジューラ２１０が電源を落とすことができるプロセッサ１１０をタスク要求時ごとに判断し、プロセッサ１１０に対する電源のオン、オフを抑制するが可能となる。その結果、ハードウェアにかかる負担を軽減することができる。
【００４５】
また、すでに電源がオフしているプロセッサ１１０について、そのプロセッサ１１０の電源がいつオフされたのか知りたい場合がある。例えば、電源オフから電源オンまでの期間が問題となり、前記オン、オフする頻度を下げたい場合などが挙げられる。その他、プロセッサ１１０の電源オンによって定常状態よりも多くの電流が流れるなどが原因となり、プロセッサ１１０の耐障害性へのリスクが高まり、あるいは、逆に消費電力に対する効率が落ちることがあることから、これを防止するためでもある。
【００４６】
そこで、本実施形態では、スケジューラ２１０は、これらの問題に対応してプロセッサ１１０の電源のオン、オフを判断するため、プロセッサの管理情報を有する。すなわち、プロセッサ１１０の状態管理は、プロセッサ管理情報として、メモリの一部に持たせ、スケジューラ２１０は常にこのプロセッサ管理情報を参照することができる。そのため、ステップＳ１１７では、ステップＳ１１６で電源オフしたプロセッサ１１０−ｄの管理情報を更新するようになっている。これにより、スケジューラ２１０は、前記プロセッサ１１０−ｄへのタスクの割り当て、使用状態、及び休眠状態などが分かる。
【００４７】
プロセッサ管理情報はスケジューラ２１０から参照可能なアドレスにあればどこにおいてあっても構わないが、固定されたアドレスでありスケジューラ２１０以外のソフトウェアモジュールによって変更できないように設計してあることが望ましい。
【００４８】
また、前記ステップＳ１１５でキャッシュの書き出しを行うのは次のような理由による。すなわち、前述のようにステップＳ１０８で、タスク２２０を別のコアに再割り当てするようになっているが、現在休眠中のプロセッサ１１０−ｂで処理されていたタスク２２０を別のプロセッサ１１０上で処理させるためには、以前のプロセッサ１１０−ｂの情報をコピーすることが必要となる場合がある。そのために、本実施形態では、ステップＳ１１６でプロセッサ１１０の電源をオフして休眠状態にする前に、そのプロセッサ１１０の持つキャッシュメモリの内容を全てのプロセッサ１１０が共有できるメモリへ書き出しておき、新しく割り当てられたプロセッサ１１０から参照可能な状態にしておく。これにより、同じタスク要求があったときにも、異なるプロセッサ１１０で前に処理したプロセッサ１１０と同様の処理速度で処理することができる。
【００４９】
また、ステップＳ１０４でタスク２２０を割り当てるときに、プロセッサ１１０の電源を再投入する（ステップＳ１０７）と、プロセッサ１１０の初期化にかかる時間でタイムラグが発生する。すなわち、プロセッサ１１０を休眠状態から活動状態にするとき、活動状態となったプロセッサ１１０で実行されるタスク２２０がそのプロセッサ上で処理される直前に活動状態にされた場合、ハードウェア、ソフトウェアともに活動状態となったプロセッサの初期化の時間が必要になり、タスクが即時に実行されない。
【００５０】
そこで、本実施形態では、電源が投入されていないプロセッサ１１０に対してタスクを割り当てる必要性が生じたとき（ステップＳ１０５，Ｓ１０６）、該当するプロセッサ１１０の電源を立ち上げ（ステップＳ１０７）、初期化するための新たなタスクを生成し、当該タスク実行待ち状態のタスクキューの先頭に配置する。そのために、本実施形態では、タスク２２０がスケジューラ２１０に対して要求され、タスク２２０の処理待ちキューに接続され、スケジューラ２１０によってタスク解析が行われた（ステップＳ１０３）時点で、プロセッサ１１０を活動状態にするかどうかを決定する（ステップＳ１０３→Ｓ１０６）。そして、プロセッサ１１０の電源をオンし、タスクが実行待ちの状態にプロセッサ１１０を復帰させる（ステップＳ１０７→Ｓ１→Ｓ２）ので、後に処理されるタスク２２０が該当するプロセッサ１１０で即時実行することが可能となる（ステップＳ２，Ｓ３）。なお、プロセッサの初期化処理は、アーキテクチャにより異なり、ここではその処理内容には特に触れない。
【００５１】
一方、アプリケーションによっては、１回の仕事、いわゆるジョブに対し、非常に多くのタスクを必要とする場合がある。この場合、一度に多くのプロセッサ１１０の電源を起動する必要があるため、スケジューラ２１１にタスク要求が入った時点で判断していては、プロセッサの初期化が間に合わないこともある。また、大量のタスクが一度にタスクの処理待ちキューにつなげられた場合に、スケジューラ２１１によるタスク解析に時間がかかり処理にオーバヘッドが生じることがある。
【００５２】
このために、本実施形態では、外部からプロセッサ１１０の電源管理を行うための制御要求部２１３をインターフェイスとしてスケジューラ２１１に設けた。実行タスクが非常に多いと分かっているジョブに関しては前記制御要求部２１３からデバイスドライバ２４０を介して電源制御部１２０にアクセスすることにより、所望の複数のプロセッサ１１０の電源をオンにする。その際、プロセッサ１１０が活動状態にした前後に大量に投入されるタスク２２０の解析が行われないように、タスク情報には解析の必要性の有無を判断できるフラグを用意する。あるいは、フラグの代替手段として、スケジューラ２１１にタスク実行要求を行う際に渡す引数を用意し、その引数が渡されたときに動作するタスク解析（ステップＳ１０２，Ｓ１０３）ではプロセッサ１１０の電源制御に関する解析は実施されないようにする。
【００５３】
これまでの電源制御は、プロセッサ１１０の電源に関するものであるが、この電源制御はプロセッサ１１０−１〜ｎを冷却するＦＡＮ１４０−１〜ｎ、及びハードディスク装置（ＨＤＤ）１６０に適用することができる。制御要求部２１３はデバイスドライバ２４０に対して、指定したデバイスの電源制御を要求する。ハードディスク装置１６０の場合は、タスク要求時に登録される情報にディスクアクセスが存在するかどうかの情報が提供されるようにタスク情報を作成しておき、スケジューラ２１０によって処理待ちキューに接続された全タスクがハードディスク装置１６０に対してアクセスしないかどうかを判断し、ハードディスク装置１６０への電源の制御を実施する。これにより、スケジューラ２１０によってタスク２２０がハードディスクドライブ装置１６０へのアクセスが発生しない場合に、ハードディスクドライブ装置１６０のモータを止めるようにすることができる。このようにスケジューラ２１０全体でハードディスクドライブ装置１６０を使用しない場合に、ハードディスクドライブ装置１６０のモータを停止すると、その分の消費電力を削減することができる。なお、ここでは、ハードディスクドライブ装置１６０を例に取っているが、ハードディスクドライブ装置１６０を含むＣＤドライブのようなモータ駆動の外部記憶装置全般にこの制御を適用することができる。
【００５４】
ＦＡＮ１４０の場合はプロセッサ１１０の場合よりもさらに単純であり、プロセッサ１１０を休眠状態にするのと同時にＦＡＮ１４０の電源をオフにするようにしてもよいし、プロセッサ１１０の電源を落とさずにＦＡＮ１４０の回転数だけを下げ、電力消費を抑えるようにしてもよい。この制御も、スケジューラ２１０の制御要求部２１０からの要求に応じてデバイスドライバ２４０が電源制御部１２０にアクセスし、電源制御部１２０からＦＡＮコントローラ１３０に対してＦＡＮの電源のオン、オフの指示、あるいは回転数を下げる指示を行う。ＦＡＮコントローラ１３０は、この指示に基づいて各ＦＡＮ１４０−１〜ｎの駆動を制御する。ＦＡＮコントローラ１３０はプロセッサ１４０−１〜ｎの温度によってその回転数を制御するのが一般的であるが、プロセッサ１４０−１〜ｎの温度が上昇していない場合は、各々のプロセッサ１４０−１〜ｎの使用状態にかかわらず一定の回転数でＦＡＮを回転し続けるという制御も可能である。これにより、温度上昇を招くことなく、効率よく消費電力を削減することができる。
【００５５】
なお、本発明は本実施形態に限定されるものではなく、特許請求の範囲に記載された技術思想に含まれる技術的事項の全てが対象となる。
【産業上の利用可能性】
【００５６】
本発明は、マルチコアプロセッサシステムにおける電力消費の削減を意図しているが、このようなマルチコアプロセッサを使用した省電力制御システム全般、例えばマルチコアプロセッサを使用した情報処理装置、画像形成装置、画像処理装置などのデジタルデータを取り扱う処理装置全般に適用することができる。
【符号の説明】
【００５７】
１００  ハードウェア部
１１０、１１０−１〜ｎ  プロセッサ（ＣＰＵ）
１２０  電源制御部
１４０、１４０−１〜ｎ  ＦＡＮ
１６０  ハードディスクドライブ装置（ＨＤＤ）
２００  ソフトウェア部
２１０  スケジューラ
２１１  計測部
２１２  タスク割り当て部
２１３  制御要求部
２２０、２２０−１〜ｎ  タスク
【図１】
2010160565.tif 000003
【図２】
2010160565.tif 000004
【図３】
2010160565.tif 000005