(57)【要約】【課題】マルチコアＣＰＵを搭載したパーソナルコンピュータ等における省電力制御を実現する情報処理装置を提供する。【解決手段】省電力制御ユーティリティ１０２は、外部ＡＣ電源からの電力の入力有無やバッテリ２１の残量に関わる情報をＥＣ／ＫＢＣ１９から定期的に収集して、本コンピュータ１の動作用電力の供給環境を監視する。そして、外部ＡＣ電源からの入力が無く、バッテリ２１の残量が予め設定された値以下となっている状況等を検知すると、省電力制御ユーティリティ１０２は、予め設定された数のコアを非稼働状態にする（省電力モードに移行する）旨をＯＳ１０１に要求する。【選択図】      図１
2008257578.tif 000002
【特許請求の範囲】
【請求項１】
複数の命令処理部を有するＣＰＵと、
動作用電力の供給環境を監視する監視手段と、
前記監視手段の監視によって得られる動作用電力の供給環境に応じて、前記ＣＰＵが有する前記複数の命令処理部の稼働数を制御する省電力手段と、
を具備することを特徴とする情報処理装置。
【請求項２】
前記ＣＰＵに対するタスクの割り当てを制御するスケジューラをさらに具備し、
前記スケジューラは、前記省電力手段の制御によって前記複数の命令処理部の稼働数が減少する場合、非稼働状態に移行する命令処理部に割り当て済みのタスクを、稼働状態が維持される命令処理部に再割り当てする手段を含むことを特徴とする請求項１記載の情報処理装置。
【請求項３】
前記スケジューラは、非稼働状態に移行する命令処理部に割り当て済みのタスクを、稼働状態が維持される命令処理部の中から規則的に選択される命令処理部に再割り当てすることを特徴とする請求項２記載の情報処理装置。
【請求項４】
前記スケジューラは、非稼働状態に移行する命令処理部に割り当て済みのタスクを、稼働状態が維持される命令処理部に均等に再割り当てすることを特徴とする請求項２記載の情報処理装置。
【請求項５】
前記スケジューラは、稼働状態が維持される命令処理部の中から割り当て済みのタスクの数が最も少ない命令処理部を検出し、非稼働状態に移行する命令処理部に割り当て済みのタスクを、前記検出した命令処理部に再割り当てすることを特徴とする請求項２記載の情報処理装置。
【請求項６】
前記スケジューラは、前記省電力手段の制御によって前記複数の命令処理部の稼働数が増加する場合、稼働状態が維持されていた命令処理部に割り当て済みのタスクを、稼働状態に復帰する命令処理部に再割り当てする手段をさらに含むことを特徴とする請求項２記載の情報処理装置。
【請求項７】
前記スケジューラは、稼働状態が維持されていた命令処理部の中から規則的に選択される命令処理部に割り当て済みのタスクの半数を、稼働状態に復帰する命令処理部に再割り当てすることを特徴とする請求項６記載の情報処理装置。
【請求項８】
前記スケジューラは、稼働状態が維持されていた命令処理部から均等に、各々に割り当て済みのタスクを稼働状態に復帰する命令処理部に再割り当てすることを特徴とする請求項６記載の情報処理装置。
【請求項９】
前記省電力手段は、前記複数の命令処理部の稼働数を減少させる場合、最も負荷が大きい命令処理部から順に非稼働状態に移行させることを特徴とする請求項１記載の情報処理装置。
【請求項１０】
前記省電力手段は、稼働率の高いものを負荷が大きいと判定することを特徴とする請求項９記載の情報処理装置。
【請求項１１】
前記省電力手段は、割り当て済みのタスクの数の多いものを負荷が大きいと判定することを特徴とする請求項９記載の情報処理装置。
【請求項１２】
前記省電力手段は、前記複数の命令処理部の稼働数を減少させる際、遊休状態にある命令処理部が存在した場合、その命令処理部を非稼働状態に移行させることを特徴とする請求項１記載の情報処理装置。
【請求項１３】
バッテリをさらに具備し、
前記省電力手段は、前記バッテリから動作用電力が供給されており、かつ、その残量が所定量以下となっている状態が前記監視手段の監視によって得られた場合、前記複数の命令処理部の稼働数を減少させることを特徴とする請求項１記載の情報処理装置。
【請求項１４】
前記省電力手段は、前記命令処理部の非稼働状態への移行を、前記バッテリの残量が第１の値以下となった場合には対象の命令処理部を遊休状態とすることで実施し、第１の値より小さい第２の値以下となった場合には対象の命令処理部を停止状態とすることで実施することを特徴とする請求項１３記載の情報処理装置。
【請求項１５】
前記複数の命令処理部の稼働数を減少させる条件とする前記バッテリの残量および非稼働状態へ移行させる命令処理部の数を設定する設定手段をさらに具備することを特徴とする請求項１３記載の情報処理装置。
【請求項１６】
複数の命令処理部を有するＣＰＵを搭載し、前記複数の命令処理部の稼働数を動的に変動させる機能を備えた情報処理装置に適用されるスケジューラであって、
前記複数の命令処理部の稼働数が減少する場合、非稼働状態に移行する命令処理部に割り当て済みのタスクを、稼働状態が維持される命令処理部に再割り当てするタスク再割り当て手段を具備することを特徴とするスケジューラ。
【請求項１７】
前記タスク再割り当て手段は、前記複数の命令処理部の稼働数が増加する場合、稼働状態が維持されていた命令処理部に割り当て済みのタスクを、稼働状態に復帰する命令処理部に再割り当てする手段を含むことを特徴とする請求項１６記載のスケジューラ。
【請求項１８】
複数の命令処理部を有するＣＰＵを搭載し、前記複数の命令処理部の稼働数を動的に変動させる機能を備えた情報処理装置のスケジュール制御方法であって、
前記複数の命令処理部の稼働数が減少する場合、非稼働状態に移行する命令処理部に割り当て済みのタスクを、稼働状態が維持される命令処理部に再割り当てすることを特徴とするスケジュール制御方法。
【請求項１９】
さらに、前記複数の命令処理部の稼働数が増加する場合、稼働状態が維持されていた命令処理部に割り当て済みのタスクを、稼働状態に復帰する命令処理部に再割り当てすることを特徴とする請求項１８記載のスケジュール制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、例えばマルチコアＣＰＵなどと称される複数の命令処理部（コア）を有するＣＰＵを搭載するパーソナルコンピュータ等の情報処理装置に適用して好適なスケジュール制御技術に関する。
【背景技術】
【０００２】
近年、例えばノートブックタイプのパーソナルコンピュータなど、バッテリ駆動が可能で携行容易な情報処理装置が広く普及している。最近では、無線通信環境が整備されてきたことから、この種の情報処理装置を携帯していれば、外出先や移動中でも、最新のデータを取得して作業を行うことが可能となっている。
【０００３】
この種の情報処理装置は、例えばスクランブル化されて放送されるテレビジョン番組データを受信・視聴する機能など、搭載が期待される機能が高度化する傾向にある。この高機能化に対応するために、この種の情報処理装置に関しては、その処理性能を向上させるための工夫が日々図られている。例えばマルチプロセッサシステムは、複数のＣＰＵ（プロセッサ）を搭載することによって、多彩かつ高度な複数の処理を短時間に実行することを可能とするものである。その一方で、この種の情報処理装置は、外出先や移動中に使用されることを前提としているので、バッテリ駆動時の連続使用可能時間を如何に確保するか、つまり省電力化を如何に図るかが非常に重要な問題である。このようなことから、マルチプロセッサシステムにおいて、省電力化を図るための提案もこれまで種々なされている（例えば特許文献１等参照）。
【特許文献１】特開２００４−２５２９３７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
ところで、最近では、複数の命令処理部（コア）を有する、マルチコアＣＰＵなどと称される新しいタイプのＣＰＵが開発されるに至っている。これにより、マルチプロセッサシステムが１つのＣＰＵで実現可能となっている。そのため、複数のＣＰＵを搭載するのではなく、１つのマルチコアＣＰＵを搭載することによってマルチプロセッサシステムを実現する情報処理装置において、この「複数のコアを有する」というマルチコアＣＰＵの特性を考慮した、新たな省電力制御の仕組みが強く望まれている。
【０００５】
この発明は、このような事情を考慮してなされたものであり、マルチコアＣＰＵを搭載したパーソナルコンピュータ等における省電力制御を実現する情報処理装置、スケジューラおよび情報処理装置のスケジュール制御方法を提供することを目的とする。
【課題を解決するための手段】
【０００６】
この目的を達成するために、本発明の情報処理装置は、複数の命令処理部を有するＣＰＵと、動作用電力の供給環境を監視する監視手段と、前記監視手段の監視によって得られる動作用電力の供給環境に応じて、前記ＣＰＵが有する前記複数の命令処理部の稼働数を制御する省電力手段と、を具備することを特徴とする。
【０００７】
また、本発明の情報処理装置は、前記ＣＰＵに対するタスクの割り当てを制御するスケジューラをさらに具備し、前記スケジューラは、前記省電力手段の制御によって前記複数の命令処理部の稼働数が減少する場合、非稼働状態に移行する命令処理部に割り当て済みのタスクを、稼働状態が維持される命令処理部に再割り当てする手段を含むことを特徴とする。
【０００８】
また、本発明の情報処理装置は、前記スケジューラが、前記省電力手段の制御によって前記複数の命令処理部の稼働数が増加する場合、稼働状態が維持されていた命令処理部に割り当て済みのタスクを、稼働状態に復帰する命令処理部に再割り当てする手段をさらに含むことを特徴とする。
【発明の効果】
【０００９】
この発明によれば、マルチコアＣＰＵを搭載したパーソナルコンピュータ等における省電力制御を実現することができる。
【発明を実施するための最良の形態】
【００１０】
以下、図面を参照して、この発明の一実施形態を説明する。図１には、本実施形態に係る情報処理装置のハードウェア構成例が示されている。この情報処理装置は、例えばバッテリ駆動可能で携行容易なノートブックタイプのパーソナルコンピュータ１として実現されている。
【００１１】
本コンピュータ１は、図１に示すように、コア（１）１１ａ，コア（２）１１ｂ，コア（３）１１ｃ，コア（４）１１ｄの４つの命令処理部（コア）を内蔵したＣＰＵ１１を搭載するマルチコアＣＰＵ搭載システムである。なお、本実施形態で説明する本発明の省電力制御手法は、コアを２つ内蔵するいわゆるデュアルコアＣＰＵを搭載するデュアルコアＣＰＵ搭載システムや、４つ以外の複数のコアを内蔵するいずれのタイプのマルチコアＣＰＵ搭載システムにおいても適用可能である。
【００１２】
そして、図１に示すように、本コンピュータ１は、このＣＰＵ１１をはじめとして、ホストコントローラ１２、メインメモリ１３、表示コントローラ１４、表示装置１５、表示用メモリ１６、Ｉ／Ｏコントローラ１７、記憶装置１８、エンベデッドコントローラ／キーボードコントローラ（ＥＣ／ＫＢＣ）１９、電源コントローラ２０、バッテリ２１、キーボード２２、クロックジェネレータ２３等を備えている。
【００１３】
ＣＰＵ１１は、本コンピュータ１内の各部の動作を統合的に管理・制御するためのプロセッサであり、記憶装置１８からメインメモリ１３にロードされるオペレーティングシステム（ＯＳ）１０１や、このＯＳ１０１の制御下で動作する、後述する省電力制御ユーティリティ１０２を含む各種アプリケーションプログラムを実行する。ＯＳ１０１は、ＣＰＵ１１に対するタスク（プロセスまたはスレッド）の割り当てを制御するスケジューラ１０１ａを含んでいる。これらＯＳ１０１や省電力制御ユーティリティ１０２を含む種々のプログラムは、予め記憶装置１８にインストールされている。
【００１４】
ホストコントローラ１２は、ＣＰＵ１１のローカルバスとＩ／Ｏコントローラ１７との間を接続するブリッジデバイスである。ホストコントローラ１２は、バスを介して表示コントローラ１４との通信を実行する機能を有しており、また、メインメモリ１３をアクセス制御するメモリコントローラも内蔵されている。
【００１５】
表示コントローラ１４は、本コンピュータ１のディスプレイモニタとして稼働される表示装置１５を制御する。表示コントローラ１４には表示用メモリ１６が接続され、ＯＳ１０１や省電力制御ユーティリティ１０２を含む種々のプログラムによって表示用メモリ１６に書き込まれた画像データから表示装置１５に送出すべき表示信号を生成する。
【００１６】
Ｉ／Ｏコントローラ１７には、記憶装置１８を制御するためのコントローラが内蔵されている。また、Ｉ／Ｏコントローラ１７は、（ＥＣ／ＫＢＣ１９経由による）電源コントローラ２０の制御およびクロックジェネレータ２３の制御を実行する。
【００１７】
ＥＣ／ＫＢＣ１９は、電力管理のための組み込みコントローラと、キーボード２２を制御するためのキーボードコントローラとが集積された１チップマイクロコンピュータである。ＥＣ／ＫＢＣ１９は、電源コントローラ２０と協働して、バッテリ２１または外部ＡＣ電源からの電力を各部に供給制御する。電源コントローラ２０は、ＣＰＵ１１に対する動作用電力の供給をコア単位に行うことができる。ＣＰＵ１１の動作クロックを生成するクロックジェネレータ２３も、その供給をコア単位に行うことができる。この電源コントローラ２０によるＣＰＵ１１に対する動作用電力の供給およびクロックジェネレータ２３によるＣＰＵ１１に対する動作クロックの供給は、Ｉ／Ｏコントローラ１７から出力される動作コマンドによって制御される。即ち、本コンピュータ１では、この動作コマンドの出力指示をＩ／Ｏコントローラ１７に与えることで、ＣＰＵ１１に対する動作用電力および動作クロックの供給を制御できる。
【００１８】
このようなハードウェア構成の本コンピュータ１上で動作する省電力制御ユーティリティ１０２は、外部ＡＣ電源からの電力の入力有無やバッテリ２１の残量に関わる情報をＥＣ／ＫＢＣ１９から定期的に収集することにより、本コンピュータ１の動作用電力の供給環境を監視する。そして、例えば外部ＡＣ電源からの入力が無く、バッテリ２１からの電力で本コンピュータ１が動作しており、かつ、当該バッテリ２１の残量が予め設定された値以下となっている状況等を検知すると、省電力制御ユーティリティ１０２は、予め設定された数のコアを非稼働状態にする（省電力モードに移行する）旨をＯＳ１０１に要求する。そのためのインタフェースとして、省電力制御ユーティリティ１０２は、例えば図２に示すような設定画面をユーザ向けに提示する。
【００１９】
この設定画面において、ユーザは、第１に、この省電力制御ユーティリティ１０２による省電力機能を有効にするか否か（フィールドａ１）を設定できる。また、有効にする場合、ユーザは、第２に、バッテリ２１からの電力で動作中、当該バッテリ２１の残量が何％以下となったらいくつのコアをアイドル状態に移行させ（フィールドａ２）、さらに当該バッテリ２１の残量が何％以下となったらいくつのコアを停止状態に移行させるか（フィールドａ３）を設定できる。アイドル状態および停止状態のいずれも非稼働状態の一態様であり、フィールドａ２，ａ３による設定は、いずれか一方のみでも構わない。
【００２０】
アイドル状態への移行は、電源コントローラ２０による動作用電力の供給およびクロックジェネレータ２３による動作クロックの供給は継続するが、タスクの割り当てを抑止して遊休状態とすることにより、消費電力の低減を実質的に図るものであり、停止状態への移行は、電源コントローラ２０による動作用電力の供給およびクロックジェネレータ２３による動作クロックの供給そのものを遮断するものである。アイドル状態または停止状態からの復帰は、（バッテリ２１を充電可能な環境となる）外部ＡＣ電源からの電力供給が開始されたことを契機に行われ、この際、アイドル状態にあったならば、その復帰は可及的速やかに実施される。なお、これらの設定情報は、省電力制御ユーティリティ１０２によって記憶装置１８内に格納され、当該省電力制御ユーティリティ１０２の起動に伴ってメインメモリ１３上に読み出されて配置される（設定情報１５１）。
【００２１】
この図２の例では、バッテリ２１からの電力で動作中、当該バッテリ２１の残量が２０％以下になると、まず、２つのコアがアイドル状態に移行し、さらにその残量が１０％以下になると、３つのコアが停止状態に移行することになる。
【００２２】
即ち、本コンピュータ１は、動作用電力の供給環境に応じて、ＣＰＵ１１が有する複数のコアの稼働数を制御するといった、マルチコアＣＰＵの特性を考慮した適切な省電力制御を実行する。
【００２３】
また、この省電力制御を可能とするために、省電力モードに移行する旨の要求を省電力制御ユーティリティ１０２から受け付けるＯＳ１０１のスケジューラ１０１ａは、アイドル状態または停止状態に移行させるコアに割り当て済みのタスクを、稼働状態が維持されるコアに再割り当てする機能を備える。そして、このタスクの再割り当て完了後、停止状態への移行であれば、ＯＳ１０１は、対象のコアに対する動作用電力および動作クロックの供給を遮断させるべく、電源コントローラ２０およびクロックジェネレータ２３に対する動作コマンドの出力指示をＩ／Ｏコントローラ１７に与える。
【００２４】
図３は、ＣＰＵ１１に対するタスクの割り当てを制御するためにＯＳ１０１のスケジューラ１０１ａがメインメモリ１３上で管理するスケジューリングキュー１５２の一構成例を示す図である。
【００２５】
スケジューリングキュー１５２は、コア単位、つまりＣＰＵ１１が有するコア１１ａ〜１１ｄそれぞれに対して１つずつ設けられ、図３に示すように、コア状態フラグ、ロックフラグ、アクティブキュー、レディキューを含んでなる。
【００２６】
コア状態フラグは、各コアが、稼働状態（オンライン）、停止状態（オフライン）、省電力モードとしてのアイドル状態（省電力）、のいずれの状態にあるのかを示すフラグである。スケジューラ１０１ａは、このコア状態フラグで稼働状態である旨が示されているコアに対してのみタスクの割り当て、即ちアクティブキューまたはレディキューへのタスク（プロセッサコンテキスト）のキューイングを実施する。
【００２７】
ロックフラグは、このスケジューリングキュー１５２に対する更新を伴うアクセスを排他的に行うためのフラグであり、ロック状態、アンロック状態、のいずれかを示す。このロックフラグを設けることによって、当該スケジューリングキュー１５２は、整合性が確保されている。
【００２８】
また、アクティブキューは、実行可能状態にあるタスクをキューイングするために設けられるキューであり、レディキューは、待ち状態にあるタスクをキューイングするために設けられるキューである。特定の事象が発生して待ち状態が解除されたタスクは、レディキューから取り出されてアクティブキューに移動する。コアへの割り当ては、アクティブキューにキューイングされたタスクの中から１つずつ選択されて行われる。この選択のためのアルゴリズムとしては、ＦＩＦＯ（First In, First Out）、ＬＩＦＯ（Last In, First Out）、ラウンドロビンスケジューリング、多段フィードバックキュー等、種々の手法が存在するが、本コンピュータ１の省電力制御は、スケジューラ１０１ａがいずれのアルゴリズムを適用すべきかを限定しない。
【００２９】
このような構成のスケジューリングキュー１５２を管理しつつＣＰＵ１１に対するタスクの割り当てを実行するスケジューラ１０１ａは、あるコアがアイドル状態または停止状態に移行する場合、そのコアのスケジューリングキュー１５２内のアクティブキューまたはレディキューにキューイングされているタスクを、稼働状態が維持されるコアのスケジューリングキュー１５２内のアクティブキューまたはレディキューに移動させる。この作業を行う際、スケジューラ１０１ａは、まず、すべてのスケジューリングキュー１５２をロックフラグを使ってロックする。
【００３０】
次に、このすべてのスケジューリングキュー１５２がロックされた状況下で、スケジューラ１０１ａは、コア間でのタスクの移動をアクティブキューおよびレディキューそれぞれについて行う訳であるが、どのタスクをどのコアに移動させるかについては、例えば以下の方式等が考えられる。その中のいずれの方式を採用するかは、本コンピュータ１の仕様として決定される。
【００３１】
（１）単純に、稼働状態が維持されるいずれかのコアに移動させる。稼働状態が維持されるコアがそれぞれどのような状況にあるか等を考慮せず、コアの選択を、所定の規則で機械的に行う。
【００３２】
（２）稼働状態が維持されるコアに均等に振り分ける。この振り分けは、単純に移動させるタスク数が均等になるように行っても良いし、移動完了後における各コアのタスク数が均等になるように考慮して行っても良い。
【００３３】
（３）稼働状態が維持されるコアの中で、その時点においてキューイングされているタスク数が最も少ないコアを検出して移動させる。
【００３４】
以上のタスクの移動が完了すると、スケジューラ１０１ａは、移行対象のコアのスケジューリングキュー１５２内のコア状態フラグを移行後の状態に更新した後、すべてのスケジューリングキュー１５２をロックフラグを使ってアンロックする。この時、ＯＳ１０１は、必要ならば、電源コントローラ２０およびクロックジェネレータ２３に対する動作コマンドの出力指示をＩ／Ｏコントローラ１７に与える。
【００３５】
スケジューリングキュー１５２がアンロックされると、スケジューラ１０１ａによるＣＰＵ１１に対するタスクの割り当てが再開されるが、アイドル状態または停止状態に移行させたコアに割り当て済みであったタスクは、稼働状態が維持されるコアにて実行されることになり、また、それ以降、アイドル状態または停止状態に移行させたコアへのタスクの割り当ては行われない。即ち、ＣＰＵ１１が有する複数のコアの稼働数を制御するといった、マルチコアＣＰＵの特性を考慮した適切な省電力制御が実現される。
【００３６】
また、前述したように、外部ＡＣ電源からの電力供給が開始されると、アイドル状態または停止状態にあったコアは稼働状態に復帰する。この際、スケジューラ１０１ａは、そのコアのスケジューリングキュー１５２をロックフラグを使ってロックし、コア状態フラグを稼働状態に更新した後、同じくロックフラグを使って当該スケジューリングキュー１５２をアンロックするのみでも良い。なお、ＯＳ１０１は、必要ならば、電源コントローラ２０およびクロックジェネレータ２３に対する動作コマンドの出力指示をＩ／Ｏコントローラ１７に与える。
【００３７】
しかしながら、この場合、次回のスケジューリング機会まで、復帰したコアは遊休状態となってしまうので、効率が良いとは言えない。そこで、スケジューラ１０１ａは、あるコアがアイドル状態または停止状態から復帰する場合、稼働状態が維持されていたコアのアクティブキューまたはレディキューにキューイングされているタスクを、当該アイドル状態または停止状態から復帰するコアのアクティブキューまたはレディキューに移動させる機能をさらに備える。どのコアからタスクを取ってくるかについては、例えば以下の方式等が考えられる。その中のいずれの方式を採用するかは、本コンピュータ１の仕様として決定される。
【００３８】
（１）稼働状態が維持されていたいずれかのコアから半分取ってくる。稼働状態が維持されていたコアがそれぞれどのような状況にあるか等を考慮せず、コアの選択を、所定の規則で機械的に行う。
【００３９】
（２）稼働状態が維持されていたコアから均等に取ってくる。この取得は、単純に移動させるタスク数が均等になるように行っても良いし、移動完了後における各コアのタスク数が均等になるように考慮して行っても良い。
【００４０】
以上により、次回のスケジューリング機会まで待機することなく、復帰したコアは可及的速やかに稼働状態となり、効率を向上させることができる。
【００４１】
ところで、図２の例では、ＯＳ１０１は、バッテリ２１からの電力で動作中、当該バッテリ２１の残量が２０％以下になると、２つのコアをアイドル状態に移行させる旨の要求を省電力制御ユーティリティ１０２から受け、さらにその残量が１０％以下になると、３つのコアを停止状態に移行させる旨の要求を省電力制御ユーティリティ１０２から受けることになる。
【００４２】
この要求を受けた際、ＯＳ１０１は、どのコアをアイドル状態または停止状態に移行させるかについても、例えば以下の方法等が考えられる。その中のいずれの方式を採用するかは、本コンピュータ１の仕様として決定される。
【００４３】
（１）最も負荷が大きいコアを選択する。（実行効率よりも優先して）効率の良い省電力を実施するためには、最も負荷が大きいコアを選択することが得策である。この負荷が大きいコアの定義についても、（ｉ）稼働率が高い、（ii）キューイングされているタスク数が多い、等が考えられる。
【００４４】
（２）その時にたまたま遊休状態にあったコアを選択する。この場合、実行効率を損なうことを最小限に止めることができる。
【００４５】
次に、図４乃至図６を参照して、本コンピュータ１が実行する省電力制御の動作手順について説明する。図４は、本コンピュータ１が実行する省電力制御の基幹手順を示すフローチャートである。
【００４６】
省電力制御ユーティリティ１０２は、ＥＣ／ＫＢＣ１９から収集する情報に基づき、外部ＡＣ電源から電力が入力されているかどうかを調べ（ステップＡ１）、入力されていなければ（ステップＡ１のＮＯ）、さらに、同じくＥＣ／ＫＢＣ１９から収集する情報に基づき、バッテリ２１の残量を調べる（ステップＡ２）。
【００４７】
この時、省電力制御ユーティリティ１０２は、まず、バッテリの残量が、停止条件（図２のフィールドａ３で設定される条件）として設定された基準値以下となっていないか判定する（ステップＡ３）。また、当該基準値以下となっていない場合には（ステップＡ３のＮＯ）、省電力制御ユーティリティ１０２は、続いて、アイドル条件（図２のフィールドａ２で設定される条件）として設定された基準値以下となっていないか判定する（ステップＡ４）。
【００４８】
もし、アイドル条件として設定された基準値以下となっていたら（ステップＡ４のＹＥＳ）、省電力制御ユーティリティ１０２は、アイドル条件として設定された個数分、コアがアイドル状態に移行済みかどうかを調べ（ステップＡ５）、移行済みでなければ（ステップＡ５のＮＯ）、いずれかのコアをアイドル状態に移行させる処理をＯＳ１０１に実行させる（ステップＡ６）。図５は、このステップＡ６における詳細な手順を示すフローチャートである。
【００４９】
ＯＳ１０１のスケジューラ１０１ａは、まず、各コアのスケジューリングキュー１５２をロックフラグを使ってロックする（ステップＢ１）。そして、このロック後、スケジューラ１０１ａは、アイドル状態に移行させるコアのアクティブキューにキューイングされているタスクを稼働状態が維持されるコアのアクティブキューに移動させると共に（ステップＢ２）、アイドル状態に移行させるコアのレディキューにキューイングされているタスクを稼働状態が維持されるコアのレディキューに移動させる（ステップＢ３）。どのコアをアイドル状態に移行させ、また、そのコアにキューイング済みのタスクをどのコアのキューに移動させるかは、前述した通り、本コンピュータ１の仕様として決定される。
【００５０】
スケジューラ１０１ａは、コア間でのタスクの移動を完了させると、アイドル状態に移行させるコアのコア状態フラグをアイドル状態に更新する（ステップＢ４）。そして、スケジューラ１０１ａは、各コアのスケジューリングキュー１５２をロックフラグを使ってアンロックする（ステップＢ５）。
【００５１】
一方、バッテリ２１の残量が、停止条件として設定された基準値以下となっていたならば（ステップＡ３のＹＥＳ）、省電力制御ユーティリティ１０２は、停止条件として設定された個数分、コアが停止状態に移行済みかどうかを調べ（ステップＡ７）、移行済みでなければ（ステップＡ７のＮＯ）、いずれかのコアを停止状態に移行させる処理をＯＳ１０１に実行させる（ステップＡ８）。このステップＡ８における手順は、前述したステップＡ６における手順とほぼ同様であるので、ここではその説明については省略する。
【００５２】
また、外部ＡＣ電源から電力が入力されていたら（ステップＡ１のＹＥＳ）、省電力制御ユーティリティ１０２は、停止状態またはアイドル状態のコアは存在するかどうかを調べる（ステップＡ９）。そして、存在すれば（ステップＡ９のＹＥＳ）、省電力制御ユーティリティ１０２は、そのコアを停止状態またはアイドル状態から復帰させる処理をＯＳ１０１に実行させる（ステップＡ１０）。図１０は、このステップＡ１０における詳細な手順を示すフローチャートである。
【００５３】
ＯＳ１０１のスケジューラ１０１ａは、まず、各コアのスケジューリングキュー１５２をロックフラグを使ってロックする（ステップＣ１）。そして、このロック後、スケジューラ１０１ａは、停止状態またはアイドル状態から復帰させるコアのアクティブキューへ稼働状態が維持されていたコアのアクティブキューにキューイングされているタスクの一部を移動させると共に（ステップＣ２）、停止状態またはアイドル状態から復帰させるコアのレディキューへ稼働状態が維持されていたコアのレディキューにキューイングされているタスクの一部を移動させる（ステップＣ３）。このステップＣ２，Ｃ３の処理は必須ではなく、このステップＣ２，Ｃ３の実行有無、および、（実行する場合に）どのコアのキューからタスクを取ってくるかは、前述した通り、本コンピュータ１の仕様として決定される。
【００５４】
この後、スケジューラ１０１ａは、停止状態またはアイドル状態から復帰させるコアのコア状態フラグを稼働状態に更新し（ステップＣ４）、各コアのスケジューリングキュー１５２をロックフラグを使ってアンロックする（ステップＣ５）。
【００５５】
以上のように、本コンピュータ１によれば、動作用電力の供給環境に応じて、ＣＰＵ１１が有する複数のコアの稼働数を制御するといった、マルチコアＣＰＵの特性を考慮した適切な省電力制御が実現される。
【００５６】
なお、本発明は上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。
【図面の簡単な説明】
【００５７】
【図１】この発明の一実施形態に係る情報処理装置（パーソナルコンピュータ）のハードウェア構成例を示す図
【図２】同実施形態のコンピュータ上で動作する省電力制御ユーティリティが提示する設定画面を例示する図
【図３】同実施形態のコンピュータ上で動作するスケジューラが管理するスケジューリングキューの一構成例を示す図
【図４】同実施形態のコンピュータで実行される省電力制御の基幹手順を示すフローチャート
【図５】同実施形態のコンピュータで実行される省電力制御中においてコアをアイドル状態に移行させる処理の詳細な手順を示すフローチャート
【図６】同実施形態のコンピュータで実行される省電力制御中においてコアを停止状態またはアイドル状態から復帰させる処理の詳細な手順を示すフローチャート
【符号の説明】
【００５８】
１…情報処理装置（パーソナルコンピュータ）、１１…ＣＰＵ、１１ａ〜１１ｄ…コア、１２…ホストコントローラ、１３…メインメモリ、１４…表示コントローラ、１５…表示装置、１６…表示用メモリ、１７…Ｉ／Ｏコントローラ、１８…記憶装置、１９…エンベデッドコントローラ／キーボードコントローラ（ＥＣ／ＫＢＣ）、２０…電源コントローラ、２１…バッテリ、２２…キーボード、２３…クロックジェネレータ、１０１…オペレーティングシステム（ＯＳ）、１０１ａ…スケジューラ、１０２…省電力制御ユーティリティ、１５１…設定情報、１５２…スケジューリングキュー。
【図１】
2008257578.tif 000003
【図２】
2008257578.tif 000004
【図３】
2008257578.tif 000005
【図４】
2008257578.tif 000006
【図５】
2008257578.tif 000007
【図６】
2008257578.tif 000008