(57)【要約】【課題】ＣＰＵのクロック周波数および電源電圧を簡易に制御して省電力効果を得るようにした電子機器およびＣＰＵ動作環境制御プログラムを得ること。【解決手段】電子機器は、操作部１０７の操作等によりイベントが発生しアプリケーションプログラムの起動が検出されると（ステップＳ２０１）、そのアプリケーションプログラムを実行する際のＣＰＵの使用率をテーブルにより算出し（ステップＳ２０２）、その使用率に対応する動作周波数と動作電圧をテーブルにより算出する（ステップＳ２０３）。そして、これらをＣＰＵに設定する（ステップＳ２０４）。これにより、使用率の低いアプリケーションプログラムに対する消費電力を低減できる。【選択図】図７
2008077563.tif 000002
【特許請求の範囲】
【請求項１】
ＣＰＵと、
このＣＰＵを動作させるクロックの周波数を予め定めた複数の動作周波数のいずれか１つに選択する動作周波数選択手段と、
前記ＣＰＵを動作させる前記クロックの動作電圧を予め定めた複数の動作電圧のいずれか１つに選択する動作電圧選択手段と、
前記ＣＰＵが装置を制御するために使用する各種のアプリケーションプログラムを格納したアプリケーションプログラム格納手段と、
前記ＣＰＵの動作環境についてのポリシとして、前記動作周波数選択手段の選択可能な複数の動作周波数および前記動作電圧選択手段の選択可能な複数の動作電圧の中から１つずつを選択して前記アプリケーションプログラム格納手段に格納されているアプリケーションプログラムのそれぞれに個別に対応付けたポリシテーブルと、
前記アプリケーションプログラム格納手段に格納されているアプリケーションプログラムの中から実行するアプリケーションプログラムを順次検出する実行アプリケーションプログラム検出手段と、
この実行アプリケーションプログラム検出手段の検出したアプリケーションプログラムに対応する動作周波数および動作電圧を前記ポリシテーブルから検索するテーブル検索手段と、
前記ＣＰＵがアプリケーションプログラムを実行するたびにこのテーブル検索手段によって検索された対応する動作周波数および動作電圧に設定するＣＰＵ動作環境設定手段
とを具備することを特徴とする電子機器。
【請求項２】
前記ポリシテーブルは、前記ＣＰＵの使用率を前記アプリケーションプログラム格納手段に格納されているアプリケーションプログラムのそれぞれについて予め対応付けて記憶したアプリケーション別ＣＰＵ使用率格納手段と、それぞれのＣＰＵ使用率で効率的な消費電力を実現するＣＰＵの動作周波数および動作電圧を、それぞれの使用率に対応させて予め記憶した使用率別動作周波数・動作電圧格納手段とによって構成されていることを特徴とする請求項１記載の電子機器。
【請求項３】
前記ＣＰＵ動作環境設定手段は、タスクごとに時分割処理で実行されるマルチタスク処理における１つずつのアプリケーションプログラムに対応するＣＰＵの動作周波数と動作電圧を前記ポリシテーブルから順次読み出して設定することを特徴とする請求項１記載の電子機器。
【請求項４】
前記マルチタスク処理でミドルウェアが実行されるとき、これらのミドルウェアに応じて前記ＣＰＵの動作周波数および動作電圧を設定するためのミドルウェア用動作周波数・動作電圧設定手段を具備することを特徴とする請求項３記載の電子機器。
【請求項５】
前記マルチタスク処理でドライバが実行されるとき、前記ＣＰＵの動作周波数を前記動作周波数選択手段の選択可能な最も高い動作周波数に設定し、動作電圧を前記動作電圧選択手段の選択可能な最も高い動作電圧に設定するドライバ用動作周波数・動作電圧設定手段を具備することを特徴とする請求項３記載の電子機器。
【請求項６】
前記マルチタスク処理でアイドルタスクが実行されるとき、前記ＣＰＵの動作周波数を前記動作周波数選択手段の選択可能な最も低い動作周波数に設定し、動作電圧を前記動作電圧選択手段の選択可能な最も低い動作電圧に設定するアイドルタスク用動作周波数・動作電圧設定手段を具備することを特徴とする請求項３記載の電子機器。
【請求項７】
ＣＰＵを動作させるクロックの周波数を複数の動作周波数から１つずつ選択する動作周波数選択手段と、このＣＰＵを動作させる前記クロックの動作電圧を前記動作周波数に応じて予め定めた複数の動作電圧の中から１つずつ選択する動作電圧選択手段とを備えた電子機器の前記ＣＰＵが、
マルチタスク処理で実行を待機するアプリケーションプログラムを検出する実行待機アプリケーション検出処理と、
この実行待機アプリケーション検出処理で検出された待機中のアプリケーションプログラムについての前記動作周波数および前記動作電圧を前記動作周波数選択手段および前記動作電圧選択手段からそれぞれ選択するＣＰＵ動作環境選択処理と、
前記マルチタスク処理におけるタスク単位で時分割処理で実行される１つずつのアプリケーションプログラムに対応させて、ＣＰＵ動作環境選択処理で選択した前記動作周波数および前記動作電圧に設定するＣＰＵ動作環境設定処理
とを実行することを特徴とするＣＰＵ動作環境制御プログラム。
【請求項８】
前記マルチタスク処理でミドルウェアが実行されるとき、これらのミドルウェアに応じて前記ＣＰＵの動作周波数および動作電圧を設定するためのミドルウェア用動作周波数・動作電圧設定処理を実行することを特徴とする請求項７記載のＣＰＵ動作環境制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＣＰＵの動作周波数や動作電圧を制御するようにした電子機器およびＣＰＵ動作環境制御プログラムに係わり、特に省電力に効果がある電子機器およびＣＰＵ動作環境制御プログラムに関する。
【背景技術】
【０００２】
携帯電話機、ＰＨＳ（Personal Handy-phone System）、ＰＤＡ（Personal Digital Assistant）、携帯型のパーソナルコンピュータといったバッテリで駆動される小型の電子機器は、商用電源に接続する必要がないので、外出先で広く使用されている。これらの電子機器は一般に高機能化しており、これに伴ってプロセッサの高速化が望まれている。ところが、プロセッサを高速化すると、これに伴って消費電力が大きくなるので、バッテリの持続時間が短くなるという問題がある。
【０００３】
そこで従来からＣＰＵ（Central Processing Unit；中央演算処理ユニット）の動作周波数とＣＰＵへの印加電圧を必要最小限に抑制することで、電子機器の省電力化を実現している。一般に電子機器の消費電力をＰとし、ＣＰＵへの供給電圧をＶ、ＣＰＵの駆動周波数あるいはプロセッサ周波数をＦ、漏れ電流をＩ、スイッチングキャパシタンス（Switching Capacitance）をＣとすると、次の（１）式が成立する。
Ｐ＝Ｃ＊Ｖ＊Ｖ＊Ｆ＋Ｖ＊Ｉ      ……（１）
【０００４】
この（１）式を用いて電子機器のＬＳＩ（Large Scale Integration）を効率的に使用してその消費電力を下げる提案が各種行われている。このために、ＣＰＵの動作電圧と周波数を可変制御するためのハードウェアとしてのＬＳＩ（Large Scale Integration）が製品化されており、一般に供給されている。しかしながら、このようなＬＳＩは消費電力を重視する設計のために、コンピュータが実行する各処理を完了させるための所要時間が長くなるという問題がある。この結果として総電力の削減効果を十分得ることができない。また、それぞれの処理が中断することなく順次行われるようにするために、各処理の処理タイミングを予め設定するようにしておくと、リアルタイム処理のように緊急度の高い処理の要求が発生したときにこれに対応することができない。
【０００５】
そこで、ソフトウェアを用いることで、次の周期の開始までに実行を完了させる必要がある周期リアルタイムタスクと実行完了時間に関する制約のない非リアルタイムタスクを並行して実行することで電力削減を図るようにした第１の提案が提案されている（たとえば特許文献１参照）。この第１の提案では、プロセッサが実行するタスクの管理や、タスク実行に必要なプロセッサの動作周波数の算出は、例えば、オペレーティング・システムの機能として実装するようにしている。そして、起動された周期リアルタイム・タスク並びに非リアルタイム・タスクを遅滞なく処理するために必要なプロセッサの動作周波数を適応的に変化させるとともに、時々刻々と切り替わる動作周波数に応じて最適なプロセッサ用電源電圧を決定していくことで、プロセッサの消費電力を低減するようにしている。そして、実行可能な周期リアルタイム・タスクのリストの先頭からタスクを取り出す処理を行い、このリストが空の場合には、実行可能な非リアルタイム・タスクのリストの先頭からタスクを取り出すようにする。これにより、周期リアルタイム・タスクに課された要求を満たしながら各タスクを実行することができる。更に、この第１の提案では、実行すべきタスクがなくなったことに応答して、前記プロセッサを稼動率が低下したスリープ状態に移行させるスリープ遷移手段又はステップを備えることで、未処理タスクがない場合におけるプロセッサの消費電力を最大限に節約するようにしている。
【０００６】
ここで、第１の提案では、具体的には、起動開始すべき周期リアルタイム・タスクにタスク番号ｉを付与し、現在オペレーティング・システムに登録され、かつ起動要求が発行された周期リアルタイム・タスクの処理負荷を周期で割った値に合計値ｌaにタスクｉの分ｃi／ｐiを加算する。次いで、現在オペレーティング・システムに登録され、かつ起動要求が発行された周期リアルタイム・タスクの処理負荷を周期で割った値に合計値ｌaと、アプリケーションプログラムによって設定された動作周波数の下限値ｆminのうち、大きい値を変数ｆに設定する。そして、プロセッサの動作周波数をｆに設定するとともに、プロセッサに供給する電源電圧を周波数ｆで動作可能な最小の電圧に設定する。プロセッサの動作周波数や電源電圧の変更は、プロセッサ・クロック生成器ならびにプロセッサ用ＤＣ／ＤＣ変換器の各々に指示値を送信することによって行われる。プロセッサに課された処理負荷から求まる動作周波数がアプリケーションプログラムによって設定された動作周波数の下限値ｆminを下回る場合には、下限値ｆminを動作周波数として設定することにより、プロセッサに生まれる余剰時間に非リアルタイム・タスクを実行することができる。この結果、周期リアルタイム・タスクが次の周期の開始以前に実行を完了することを保証しつつ、非リアルタイム・タスクの実行によって消費される電力量を削減することができる。
【０００７】
一方、クロック周波数および電源電圧を頻繁に変更すると十分な消費電力低減効果を得ることができないという観点から、これらのチェック間隔を動的に制御することが第２の提案として提案されている（たとえば特許文献２参照）。この第２の提案では、具体的にはクロック周波数および電源電圧の制御頻度をまず決定する。そしてクロック周波数および電源電圧の制御を実行する場合には、タイマにより現在の時刻情報を得る。次にアプリケーションプログラムの処理の進捗状況を把握し、これらの結果を基にして、動作クロック周波数を決定し、更に電源電圧を決定するようにしている。最後に、決定されたクロック周波数および電源電圧を設定して、プログラムを終了するようにしている。
【特許文献１】特開２００２−０９９４３２号公報（第００２２、第００２５〜第００２７段落、第０１０１〜第０１０３段落、図６）
【特許文献２】特開２００４−０２９９８３号公報（第００２０段落、図１）
【発明の開示】
【発明が解決しようとする課題】
【０００８】
ところが、このような第１および第２の提案によれば、ＣＰＵのクロック周波数および電源電圧をそれぞれの状況に応じて変更できる利点はあるものの、このような状況判断が必要とされる。したがって、ソフトウェアによる処理が重くなり、ＣＰＵに負担を掛ける結果、必ずしも効率的で省電力効果のある制御を行うことができないという問題があった。
【０００９】
そこで本発明の目的は、ＣＰＵのクロック周波数および電源電圧を簡易に制御して省電力効果を得るようにした電子機器およびＣＰＵ動作環境制御プログラムを提供することにある。
【課題を解決するための手段】
【００１０】
請求項１記載の発明では、（イ）ＣＰＵと、（ロ）このＣＰＵを動作させるクロックの周波数を予め定めた複数の動作周波数のいずれか１つに選択する動作周波数選択手段と、（ハ）ＣＰＵを動作させるクロックの動作電圧を予め定めた複数の動作電圧のいずれか１つに選択する動作電圧選択手段と、（ニ）ＣＰＵが装置を制御するために使用する各種のアプリケーションプログラムを格納したアプリケーションプログラム格納手段と、（ホ）ＣＰＵの動作環境についてのポリシとして、動作周波数選択手段の選択可能な複数の動作周波数および動作電圧選択手段の選択可能な複数の動作電圧の中から１つずつを選択してアプリケーションプログラム格納手段に格納されているアプリケーションプログラムのそれぞれに個別に対応付けたポリシテーブルと、（へ）アプリケーションプログラム格納手段に格納されているアプリケーションプログラムの中から実行するアプリケーションプログラムを順次検出する実行アプリケーションプログラム検出手段と、（ト）この実行アプリケーションプログラム検出手段の検出したアプリケーションプログラムに対応する動作周波数および動作電圧をポリシテーブルから検索するテーブル検索手段と、（チ）ＣＰＵがアプリケーションプログラムを実行するたびにこのテーブル検索手段によって検索された対応する動作周波数および動作電圧に設定するＣＰＵ動作環境設定手段とを電子機器に具備させる。
【００１１】
すなわち本発明は、ＣＰＵの動作周波数を複数のうちから１つ選択する動作周波数選択手段と、動作電圧を複数のうちから１つ選択する動作電圧選択手段を備えた携帯電話機等の電子機器に関するものであり、アプリケーションプログラムのそれぞれに個別に対応付けたポリシテーブルを備えている。ポリシテーブルは、アプリケーションプログラムごとにＣＰＵの動作環境としての動作周波数と動作電圧を記載している。したがって、電子機器は実行するアプリケーションプログラムごとにポリシテーブルを検索してＣＰＵの動作周波数と動作電圧を設定すればよく、従来のような演算処理を必要としない。したがって、ＣＰＵのクロック周波数および電源電圧を簡易に制御して省電力効果を得ることができる。
【００１２】
請求項７記載の発明では、ＣＰＵを動作させるクロックの周波数を複数の動作周波数から１つずつ選択する動作周波数選択手段と、このＣＰＵを動作させるクロックの動作電圧を動作周波数に応じて予め定めた複数の動作電圧の中から１つずつ選択する動作電圧選択手段とを備えた電子機器のＣＰＵが、（イ）マルチタスク処理で実行を待機するアプリケーションプログラムを検出する実行待機アプリケーション検出処理と、（ロ）この実行待機アプリケーション検出処理で検出された待機中のアプリケーションプログラムについての動作周波数および動作電圧を動作周波数選択手段および動作電圧選択手段からそれぞれ選択するＣＰＵ動作環境選択処理と、（ハ）マルチタスク処理におけるタスク単位で時分割処理で実行される１つずつのアプリケーションプログラムに対応させて、ＣＰＵ動作環境選択処理で選択した動作周波数および動作電圧に設定するＣＰＵ動作環境設定処理とをＣＰＵ動作環境制御プログラムとして実行することを特徴としている。
【００１３】
すなわち本発明では、ＣＰＵを動作させるクロックの周波数を複数の動作周波数から１つずつ選択する動作周波数選択手段と、このＣＰＵを動作させるクロックの動作電圧を動作周波数に応じて予め定めた複数の動作電圧の中から１つずつ選択する動作電圧選択手段とを備えた電子機器に関するもので、この電子機器に搭載されたＣＰＵが、マルチタスク処理で実行を待機するアプリケーションプログラムを検出する実行待機アプリケーション検出処理と、この実行待機アプリケーション検出処理で検出された待機中のアプリケーションプログラムについての動作周波数および動作電圧を動作周波数選択手段および動作電圧選択手段からそれぞれ選択するＣＰＵ動作環境選択処理と、マルチタスク処理におけるタスク単位で時分割処理で実行される１つずつのアプリケーションプログラムに対応させて、ＣＰＵ動作環境選択処理で選択した動作周波数および動作電圧に設定するＣＰＵ動作環境設定処理とをＣＰＵ動作環境制御プログラムとして実行することにしている。これにより、電子機器は実行するアプリケーションプログラムごとにポリシテーブルを検索してＣＰＵの動作周波数と動作電圧を設定すればよく、従来のような演算処理を必要としない。したがって、ＣＰＵのクロック周波数および電源電圧を簡易に制御して省電力効果を得ることができる。
【発明の効果】
【００１４】
以上説明したように本発明によれば、電子機器がＣＰＵについての動作周波数選択手段と動作電圧選択手段とを備えていれば、個々のアプリケーションプログラムに対応させてＣＰＵの動作周波数および動作電圧を適切な組み合わせに設定することにしたので、ＣＰＵの負荷の状況を演算するといった複雑な手法を採らずに、マルチタスク処理で省電力効果を簡単に得ることができる。更に、ミドルウェアについても同様にＣＰＵの動作周波数および動作電圧を適切な組み合わせに設定することで、省電力の効果を高めることができる。
【発明を実施するための最良の形態】
【００１５】
以下実施例につき本発明を詳細に説明する。
【実施例１】
【００１６】
図１は、本発明の一実施例における電子機器としての携帯電話装置の構成の概要を表わしたものである。この携帯電話装置１００は、装置内の各種の制御を行う主制御部１０１を有している。主制御部１０１は、ＣＰＵ（Central Processing Unit）１０２と、このＣＰＵ１０２が実行する各種のプログラムを格納したメモリ１０３を備えており、バス等の信号伝達手段１０４を介して装置内の各部と接続されている。
【００１７】
このうち通信制御部１０５は、アンテナ１０６に接続されており、図示しない基地局と通話あるいはデータ転送のための無線通信を行うようになっている。操作部１０７は、図示しない各種のキースイッチやポインタ等の入力デバイスによって構成されており、ユーザが各種の入力操作を行うときに使用される。表示部１０８は、たとえば液晶ディスプレイや有機ディスプレイによって構成されており、視覚的な情報を表示するようになっている。音声処理部１０９は、音声の入出力処理を行うためのものであり、通話のためのマイクロフォン１１１およびレシーバ１１２と、音声の外部出力用のスピーカ１１３を接続している。画像処理部１１４は、ＣＣＤ（Charged Coupled Device）等の撮像デバイス１１５を接続しており、静止画および動画の撮影後の処理を行うようになっている。
【００１８】
図２は、この携帯電話装置の主制御部の回路構成の概要を表わしたものである。図１と共に説明する。主制御部１０１は、図１に示したＣＰＵ１０２にクロックを供給するためのクロック供給回路１２１と、ＣＰＵ１０２のクロックの動作電圧を設定する電圧設定回路１２２を備えている。クロック供給回路１２１に供給するクロックの周波数は、クロック制御回路１２３によって制御されるようになっている。また、電圧設定回路１２２は、電圧制御回路１２４によってＣＰＵ１０２に供給するクロックの印加電圧を制御されるようになっている。
【００１９】
この主制御部１０１には、図１に示したＣＰＵ１０２とメモリ１０３に格納された制御プログラムによって実現されるタスク処理部１２５が存在しており、その内部にタスクスケジューラ１２６が配置されている。また、本実施例では、アプリケーションプログラムについてＣＰＵ１０２の動作周波数と動作電圧を専用に管理するアプリケーションマネージャ１２７が配置されている。アプリケーションマネージャ１２７には、図１のメモリ１０３の一部領域によって構成されるアプリケーション別ＣＰＵ使用率テーブル１３１および使用率・動作周波数・動作電圧テーブル１３２と、アクティブアプリケーション検出部１３３が接続されている。
【００２０】
ここで、アクティブアプリケーション検出部１３３は、複数のアプリケーションプログラムのうちで１つだけアクティブとなっているそのアプリケーションプログラムを検出するようになっている。アプリケーション別ＣＰＵ使用率テーブル１３１は、アプリケーションプログラム別のＣＰＵ１０２の使用率を示したテーブルである。使用率・動作周波数・動作電圧テーブル１３２は、それぞれの使用率に対するＣＰＵ１０２の動作周波数と動作電圧を対比させたテーブルである。本実施例では、ＣＰＵ１０２の動作周波数および動作電圧をＨ（高）、Ｍ（中）、Ｌ（低）の３つのいずれかに設定することでその動作環境の制御を行うことになる。動作周波数および動作電圧についてのＨ、Ｍ、Ｌの詳細については、後に説明する。アプリケーションマネージャ１２７は、ＣＰＵ１０２のクロックの周波数を設定するためのクロック制御回路１２３および印加電圧を設定するための電圧制御回路１２４と接続されている。
【００２１】
一方、タスク処理部１２５には、アプリケーションマネージャ１２７の管轄外のミドルウェア（middle ware）やドライバ（あるいはデバイスドライバ；device driver）ならびにアイドルタスクについてのＣＰＵ１０２の動作周波数および動作電圧を規定したアプリケーション外動作環境テーブル１３４を接続している。また、これらミドルウェアやドライバならびにアイドルタスクを処理しているときのＣＰＵ１０２の動作周波数および動作電圧を制御するために、タスク処理部１２５はクロック制御回路１２３および電圧制御回路１２４と接続されている。ここで、アプリケーション外動作環境テーブル１３４は、ミドルウェアについてＣＰＵ１０２の動作周波数および動作電圧をＨ、Ｍ、Ｌの３つのいずれかに設定するようになっている。また、ドライバについては、ＣＰＵ１０２の動作周波数および動作電圧をＨの１種類に設定するようになっている。
【００２２】
タスク処理部１２５内のタスクスケジューラ１２６は、複数のタスクを並行処理するためのマルチタスク処理を行うようになっている。本実施例のマルチタスク処理では、実際には複数のタスクを時分割的に処理しており、一度に１つのタスクしか処理しない。このタスク処理部１２５は、クロック制御回路１２３を介してクロック供給回路１２１を制御してＣＰＵ１０２に所定の周波数のクロックを供給し、また電圧制御回路１２４を介して電圧設定回路１２２を制御してＣＰＵ１０２の印加電圧を制御するようになっている。
【００２３】
図３は、アプリケーション別ＣＰＵ使用率テーブルの一部を表わしたものである。アプリケーション別ＣＰＵ使用率テーブル１３１は、本実施例の携帯電話機１００が使用するそれぞれのアプリケーションを特定するためのアプリケーションＩＤ（Identification）と、これらのアプリケーションプログラムを実行する際のＣＰＵ１０２の使用率を対応付けたものである。
【００２４】
ここでＣＰＵ１０２の使用率は、実際にこれらのアプリケーションプログラムを使用した場合の測定結果を基に算出している。本実施例でＣＰＵ１０２の使用率は、最も低い使用率Ｒ1から最も高い使用率Ｒ10までの１０段階に区分されており、個々のアプリケーションプログラム別にこれらの使用率がアプリケーション別ＣＰＵ使用率テーブル１３１に示されている。たとえばアプリケーションＩＤが「ＸＸＸ」で示されるあるアプリケーションプログラムについては、ＣＰＵ使用率が最も低い使用率Ｒ1から３番目の使用率Ｒ3となっている。もちろん、ＣＰＵ１０２の使用率は１０段階に区分けする必要はなく、たとえば３段階あるいはその他の段階に区分けするものであってもよい。
【００２５】
図４は、使用率・動作周波数・動作電圧テーブルの一部を表わしたものである。使用率・動作周波数・動作電圧テーブル１３２は、図１に示したＣＰＵ１０２の使用率と、クロック制御回路１２３に指示するクロックの動作周波数および電圧制御回路１２４に指示するＣＰＵ１０２へのクロックによる印加電圧の関係を規定したものである。
【００２６】
本実施例では、ＣＰＵ使用率を使用率Ｒ1〜使用率Ｒ3までの比較的低いグループと、使用率Ｒ8〜使用率Ｒ10までの比較的高いグループと、使用率Ｒ4〜使用率Ｒ7までの中間的なグループの３つのグループに分けている。そして、使用率Ｒ1〜使用率Ｒ3までのＣＰＵ使用率が比較的低いグループについては動作周波数および動作電圧が低い「Ｌ」を割り当てて、クロックの周波数を低めることでＣＰＵ１０２の効率的な活用を図るようにしている。クロックの周波数が低い場合には、動作電圧も低くできるので省電力を図ることができる。
【００２７】
一方、使用率Ｒ8〜使用率Ｒ10までのＣＰＵ使用率が比較的高いグループについては、ＣＰＵ１０２の動作周波数および動作電圧が高い「Ｈ」を割り当てて、クロックの周波数を高めにして迅速な処理を可能にしている。このとき、動作電圧はクロックの周波数に対応させて高くすることが要求される。使用率Ｒ4〜使用率Ｒ7までの中間的なグループについては、中間的な動作周波数および動作電圧の「Ｍ」が割り当てられるようになっている。
【００２８】
以上説明したアプリケーション別ＣＰＵ使用率テーブル１３１および使用率・動作周波数・動作電圧テーブル１３２は、図１に示した携帯電話装置１００の実行するそれぞれのアプリケーションプログラムを動作周波数および動作電圧との関係でどのように設定するかといったＣＰＵ１０２の処理負荷のポリシを定めたものとも考えることができる。
【００２９】
図５は、本実施例の携帯電話装置の各種のソフトウェアの管理の仕組みを概念的に表わしたものである。電力制御の対象となるソフトウェア１４１は、アプリケーションプログラム（AP）１４２と、複数のタスクから共通して使用されるタスクとしてのミドルウエア（MDL）１４３およびハードウェアとの間に緩衝的に用意されたソフトウェア群としてのドライバ（Driver）１４４のそれぞれから得られた情報１４５をエネルギコントローラ１４６とでも言うべき回路部分に与えて、図２に示すＣＰＵ１０２が各制御の過程で効率的に動作するためのコマンド１４７を発行するようになっている。このコマンド１４７はパワー管理ユニット１４８とでも言うべき回路部分に与えられて、クロック制御部１４９とでも言うべき回路部分がＣＰＵ１０２のクロックの周波数と電圧を制御することになる。
【００３０】
図６は、ＣＰＵの稼働する様子と使用エネルギの一例を従来の場合と本実施例の場合とで対比したものである。同図（ａ）は従来のＣＰＵの稼働率を時間軸上で表わしている。ＣＰＵは、それぞれ画一的に稼働率１００％で動作するように動作周波数および動作電圧が規定されている。これは、本実施例における動作周波数および動作電圧が高い「Ｈ」の場合に相当する。
【００３１】
同図（ｂ）は本実施例の場合を示しており、単位時間当たりのＣＰＵ使用率（稼働率）を「Ｈ」、「Ｍ」、「Ｌ」の３段階に分けている。この結果として、ＣＰＵ使用率が「Ｍ」および「Ｌ」の場合における動作周波数と動作電圧を、ＣＰＵ使用率が「Ｈ」の場合よりも低めて効率を高めることができる。この結果として、同図（ｂ）に示す本実施例の総使用エネルギＥ1の方が、同図（ａ）に示す従来の総使用エネルギＥ2よりも小さくなり、この分だけバッテリの寿命を延ばすことができることになる。
【００３２】
図７は、本実施例におけるタスクの処理の一般原則を原理的に説明するためのものである。図１および図２と共に説明する。携帯電話装置１００のユーザが操作部１０７を構成する所定のキーを押すことで、これに対応するイベント２０１が発生したものとする。アプリケーションマネージャ１２７は、図２に示したアクティブアプリケーション検出部１３３を用いて、起動したアプリケーションプログラムを検出する（ステップＳ２０１）。そして、アプリケーション別ＣＰＵ使用率テーブル１３１を検索して、対応するタスクが処理されるときのＣＰＵ１０２の使用率を求める（ステップＳ２０２）。
【００３３】
次にアプリケーションマネージャ１２７は使用率・動作周波数・動作電圧テーブル１３２を検索することで、該当する使用率に対応するＣＰＵ１０２の動作周波数と動作電圧を求める（ステップＳ２０３）。そして、クロック制御回路１２３および電圧制御回路１２４を用いてＣＰＵ１０２を動作させるクロックの周波数と電圧を設定する（ステップＳ２０４）。このようにしてＣＰＵ１０２の動作環境が設定されたら、ステップＳ２０１で検出した該当のアプリケーションプログラムにイベントを渡して（ステップＳ２０５）、電力消費を適正化したタスクが実行されることになる。
【００３４】
このような処理が行われる結果として、アプリケーションマネージャ１２７は、たとえばアプリケーションＩＤが「ＸＸＸ」で示されるあるアプリケーションプログラムを実行するときに、そのタスクに対してクロック周波数と電圧値を共に「Ｈ」に割り当てることになる。また、「ＹＹＹ」で示される他のアプリケーションプログラムのタスクについてはクロックと電圧値を「Ｍ」に割り当て、「ＺＺＺ」で示される更に他のアプリケーションプログラムのタスクについてはクロックと電圧値を「Ｌ」に割り当てることになる。
【００３５】
すでに説明したように、複数のアプリケーションプログラムが並行処理される場合のある本実施例のマルチタスク処理で、ＣＰＵ１０２は１つずつタスクを処理するようになっており、同時に複数のタスクが処理されるものではない。
【００３６】
図８は、本実施例におけるタスクの状態遷移を説明するためのものである。図２と共に説明する。本実施例でもタスクの処理について一般的な手順が採用されている。すなわち、あるタスクが生成されると（ステップＳ２２１）、ＣＰＵ１０２により実行可能なレディ（ＲＥＡＤＹ）状態になり、そのタスクの処理が待機される（ステップＳ２２２）。図２に示したタスクスケジューラ１３６は、この段階でスケジューリングの調整を行い（ステップＳ２２３）、タスクがその調整されたタイミングで実行される（ＲＵＮ)（ステップＳ２２４)。これにより該当するタスクの処理が終了したとすれば、リソースが開放される（ステップＳ２２５)。
【００３７】
一方、ステップＳ２２４で実行されるタスクが終了しない場合、入出力動作が終了するまで事象待ちの状態となる（ＷＡＩＴ）（ステップＳ２２６）。入出力動作が終了すると、該当するタスクは再び実行可能な状態としてのレディ（ＲＥＡＤＹ）状態になり、他のタスクが実行されている間、そのタスクの次の処理が待機される（ステップＳ２２２）。このようにして、個々のタスクの時分割処理が行われることになる。
【００３８】
図９〜図１５は、各アプリケーションプログラム、ミドルウェア、ドライバにおけるタスクの処理の際のＣＰＵの動作周波数および動作電圧の設定の様子を個別に表わしたものである。先に説明したように図２に示したタスク処理部１２５は、並行処理すべき各タスクを時分割的に順に読み出して、それぞれに応じた制御を行うことになる。
【００３９】
このうち図９はドライバの通常の制御の様子を表わしている。ドライバのタスクが処理される場合には、図２に示すタスク処理部１２５がアプリケーション外動作環境テーブル１３４を参照する。アプリケーション外動作環境テーブル１３４には、図示しないがドライバの場合、ＣＰＵ１０２の動作周波数および動作電圧を常に「Ｈ」に割り当てることが記載されている。したがって、タスク処理部１２５はドライバのタスクを処理するとき、ＣＰＵ１０２の動作周波数および動作電圧を「Ｈ」に設定する（図９ステップＳ２４１）。そして、ドライバに関する通常の処理を実行する（ステップＳ２４２）。このようにドライバに関するタスクの処理については、ＣＰＵ１０２の動作周波数および動作電圧の設定に関して、従来の処理と結果的に同様となる。
【００４０】
図１０は、他のタスクの処理中に割り込み処理でドライバのタスクが実行される場合を示したものである。デバイスからの割り込みを受けるドライバは、このための割り込み処理用のエントリ（entry）を持っている。割り込み処理の要求があると、まず、現在処理しているタスクについてのＣＰＵ１０２の動作周波数および動作電圧に関する情報をセーブ（保存）する（ステップＳ２６１）。続いて、図９のステップＳ２４１と同様にクロックと電圧値をドライバ用に「Ｈ」に設定する（ステップＳ２６２）。そして、ドライバに関する通常の割り込み処理を行って（ステップＳ２６３）、該当するタスクを実行する。
【００４１】
この後、ステップＳ２６１でセーブしておいたＣＰＵ１０２の動作周波数および動作電圧をロードする（ステップＳ２６４）。そして、割り込み前の処理が行われる直前のタスクを処理するためにＣＰＵ１０２の動作周波数および動作電圧をその時点の動作環境に戻す設定を行う（ステップＳ２６５）。これでドライバの割り込み処理が終了し、割り込み直前のタスクの実行待ちの状態となる（エンド）。
【００４２】
図１１は、ミドルウェアのタスクが処理される場合の処理を表わしたものである。ミドルウェアのタスクがアクティブになると、図２に示すタスク処理部１２５はアプリケーション外動作環境テーブル１３４を参照する。アプリケーション外動作環境テーブル１３４は、個々のミドルウェアごとにＣＰＵ１０２の動作環境を「Ｈ」、「Ｍ」、「Ｌ」のいずれかに設定するようになっている。タスク処理部１２５は、これを基にしてＣＰＵ１０２の動作周波数および動作電圧を「Ｈ」、「Ｍ」、「Ｌ」のうちの該当するものに設定する（ステップＳ２８１）。その後、タスク処理部１２５は通常のミドルウェアの処理を行って（ステップＳ２８２）、処理を終了する（エンド）。
【００４３】
すなわち、この図１１に示したタスクの処理の場合には、ミドルウェアの内容に応じてＣＰＵ１０２の動作周波数および動作電圧が設定される。したがって、すべてのミドルウェアに対してクロックと電圧値を画一的に「Ｈ」に割り当てた従来の処理とは異なる処理が行われることになる。
【００４４】
図１２は、アプリケーションプログラムについてタスクが起動した場合の処理を表わしたものである。アプリケーションプログラムについては図２に示したアプリケーションマネージャ１２７がＣＰＵ１０２の動作周波数および動作電圧についての管理を行う。そこで、図２に示すタスク処理部１２５による特別な処理は不要であり、タスクが起動されると通常のアプリケーションプログラムの処理が行われ（ステップＳ３０１）、そのタスクを終了する（エンド）。
【００４５】
図１３は、アイドルタスクの処理を表わしたものである。アイドルタスクは、他にどのタスクも実行されていない時に実行されるタスクであるために基本的には消費電力を最小にしたい。そこで、アイドルタスクを実行する場合には、図２に示したアプリケーション外動作環境テーブル１３４が参照され、図１に示したＣＰＵ１０２の動作周波数および動作電圧が「Ｌ」に設定される（ステップＳ３２１）。そして、通常のアイドルタスクの処理が行われることになる（ステップＳ３２２）。この場合には、アイドルタスクの処理の期間だけセルフループして処理を終了させる（エンド）。
【００４６】
図１４は、タスクスケジューラの処理についてタスクが起動した場合を表わしたものである。タスクスケジューラ１２６に処理が渡ってきた場合には通常のタスクスケジューラとしての処理を行う（ステップＳ３４１）。その後、アプリケーション外動作環境テーブル１３４が参照され、ＣＰＵ１０２の動作周波数および動作電圧を「Ｍ」に設定する（ステップＳ３４２）。そして、次のタスクに処理を渡すことになる（ステップＳ３４３）。次のタスクは、図９あるいは図１０に示したドライバの処理か、図１１に示したミドルウェアの処理か、図１２で示したアプリケーションプログラムの処理か、図１３に示したアイドルタスクの処理となる。
【００４７】
このうち、図１２で示したアプリケーションプログラムの処理以外は、それぞれの処理の先頭でＣＰＵ１０２の動作周波数および動作電圧を再設定している。アプリケーションプログラムの場合には、通常、その数が多く、これらの全部に対してタスク処理部１２５が動作周波数や動作電圧を再設定することが困難である。そこで、タスクスケジューラ１２６はＣＰＵ１０２の動作周波数および動作電圧を「Ｍ」に画一的に設定することにして、これらの設定の処理を省略することができるようにしている。
【００４８】
図１５は、アプリケーションマネージャの処理を表わしたものである。アプリケーションマネージャ１２７に制御が渡された場合、通常の処理が行われる（ステップＳ３６１）。次にそのアプリケーションプログラムについてのＣＰＵ１０２の動作周波数および動作電圧を、図２に示したアプリケーション別ＣＰＵ使用率テーブル１３１および使用率・動作周波数・動作電圧テーブル１３２を参照してチェックする（ステップＳ３６２）。そして、その結果に応じて、ＣＰＵ１０２の動作周波数および動作電圧をＨ、Ｍ、Ｌの３つのうちの該当するものに設定する（ステップＳ３６３）。そして、スタートしたイベントを渡すことになる（ステップＳ３６４）。
【００４９】
このように本実施例では、ＣＰＵ１０２の動作周波数および動作電圧を動的に変更する手段を設けた。このため、特にアプリケーションプログラムを管理するソフトウェアでＣＰＵ１０２の処理負荷のポリシに応じた制御を行うことができ、図６（ｂ）に示したように従来よりも使用エネルギを低減することが可能になる。
【００５０】
なお、以上説明した実施例ではＣＰＵを駆動するクロックの周波数および動作電圧をＨ、Ｍ、Ｌの３段階に設定したが、２段階でもよいし、４段階以上に設定してもよい。また、実施例ではクロックの動作周波数および動作電圧をＨ、Ｍ、Ｌの３つずつ異なった値のものとしたが、たとえばクロックの動作周波数をＨ、Ｍ、Ｌの３つに規定し、動作電圧については２段階のＨ、Ｌとしてもよい。この場合、クロックの動作周波数のＨ、Ｍを動作電圧についてのＨに対応させてもよいし、クロックの動作周波数のＭ、Ｌを動作電圧についてのＬに対応させてもよい。
【図面の簡単な説明】
【００５１】
【図１】本発明の一実施例における電子機器としての携帯電話装置の構成の概要を表わしたブロック図である。
【図２】本実施例の携帯電話装置の主制御部の回路構成の要部を表わしたブロック図である。
【図３】本実施例のアプリケーション別ＣＰＵ使用率テーブルの一部を表わした説明図である。
【図４】本実施例の使用率・動作周波数・動作電圧テーブルの一部を表わした説明図である。
【図５】本実施例の携帯電話装置のアプリケーションマネージャの管理の仕組みを表わした説明図である。
【図６】ＣＰＵの稼働する様子と使用エネルギについての一例を従来の場合と本実施例の場合と比較した説明図である。
【図７】本実施例におけるタスクの処理の一般原則を示した説明図である。
【図８】本実施例におけるタスクの状態遷移を示した説明図である。
【図９】ドライバの通常の制御の様子を表わした流れ図である。
【図１０】割り込み処理でドライバのタスクが実行される場合を示した流れ図である。
【図１１】ミドルウェアのタスクが処理される場合の処理を表わした流れ図である。
【図１２】アプリケーションプログラムについてタスクが起動した場合の処理を表わした流れ図である。
【図１３】アイドルタスクの処理を表わした流れ図である。
【図１４】スケジューラの処理についてタスクが起動した場合を表わした流れ図である。
【図１５】アプリケーションマネージャの処理を表わした流れ図である。
【符号の説明】
【００５２】
１００  携帯電話装置
１０１  主制御部
１０２  ＣＰＵ
１０３  メモリ
１０７  操作部
１２１  クロック供給回路
１２２  電圧設定回路
１２３  クロック制御回路
１２４  電圧制御回路
１２５  タスク処理部
１２６  タスクスケジューラ
１２７  アプリケーションマネージャ
１３１  アプリケーション別ＣＰＵ使用率テーブル
１３２  使用率・動作周波数・動作電圧テーブル
１３３  アクティブアプリケーション検出部
１３４  アプリケーション外動作環境テーブル
１４２  アプリケーションプログラム
１４３  ミドルウエア
１４４  ドライバ
１４６  エネルギコントローラ
１４８  パワー管理ユニット
１４９  クロック制御部
【図１】
2008077563.tif 000003
【図２】
2008077563.tif 000004
【図３】
2008077563.tif 000005
【図４】
2008077563.tif 000006
【図５】
2008077563.tif 000007
【図６】
2008077563.tif 000008
【図７】
2008077563.tif 000009
【図８】
2008077563.tif 000010
【図９】
2008077563.tif 000011
【図１０】
2008077563.tif 000012
【図１１】
2008077563.tif 000013
【図１２】
2008077563.tif 000014
【図１３】
2008077563.tif 000015
【図１４】
2008077563.tif 000016
【図１５】
2008077563.tif 000017