以下に添付図面を参照して、本発明にかかる情報処理装置、電力制御方法、および電力制御プログラムの実施の形態を詳細に説明する。本実施の形態では、情報処理装置の一例として、携帯端末装置について説明をおこなう。携帯端末装置としては、例えば、携帯電話、スマートフォン、PDA(Personal Digital Assistant)が挙げられる。また、携帯端末装置は、通話機能の他に、例えば、メール、Webブラウザ、ニュース、ブログ等の閲覧、地図、交通情報、ゲーム等のアプリを実行することで様々な機能をユーザに提供する。
携帯端末装置では、アプリが1プロセスまたは複数のプロセスとして実行されている。そして、各プロセスは、イベントを発生させている。イベントとは、プロセスの処理に伴って他の装置に発信される信号である。
本実施の形態にかかる携帯端末装置は、プロセスが発生させたイベントの実行が開始される時刻(以下、「予定開始時刻」という)を他のプロセスが発生させたイベントの予定開始時刻に近づくように補正する。以下では、予定開始時刻を補正されるイベントを「補正対象イベント」という。また、補正対象イベントの予定開始時刻を近づける目標となるイベントを「目標イベント」という。
これにより、補正対象イベントと他のイベントとのそれぞれの処理に伴って実行されるデバイスの実行時間を纏めて、デバイスの実行時間を減少させ、デバイスの低消費電力化を図る。なお、補正対象イベントと他のイベントは、単一アプリの異なるプロセスが発生させたイベントであってもよく、異なるアプリのそれぞれのプロセスが発生させたイベントであってもよい。また、携帯端末装置で発生したイベントの中には、補正対象イベントにならないイベントがあってもよい。
(携帯端末装置による補正対象イベントの予定開始時刻の補正の内容)
まず、図1を用いて、携帯端末装置による補正対象イベントの予定開始時刻の補正の内容について説明する。
図1は、携帯端末装置による補正対象イベントの予定開始時刻の補正の内容を示す説明図である。図1において、携帯端末装置では、3種類のアプリがそれぞれ、プロセス1、プロセス2およびプロセス3として実行されている。各プロセスは、一定時間間隔(以下、「ポーリング間隔」という)ごとに動作して、各プロセスに対応するイベントを実行する。
ここでは、3種類のアプリがプロセス1、プロセス2およびプロセス3として実行されているとしたが、単一アプリがプロセス1、プロセス2およびプロセス3として実行されている場合であってもよい。また、1つのアプリがプロセス1およびプロセス2として実行され、他の1つのアプリがプロセス3として実行されている場合であってもよい。
(A)は、プロセス1の動作を示す。ここで、ポーリング間隔T1ごとにプロセス1により実行されるイベントをそれぞれE11〜E13とする。また、プロセス1により実行される各イベントの予定開始時刻をt11〜t13とする。
(B)は、プロセス2の動作を示す。ここで、ポーリング間隔T2ごとにプロセス2により実行されるイベントをそれぞれE21〜E25とする。また、プロセス2により実行される各イベントの予定開始時刻をt21〜t25とする。
(C)は、プロセス3の動作を示す。ここで、ポーリング間隔T3ごとにプロセス3により実行されるイベントをそれぞれE31〜E35とする。また、プロセス3により実行される各イベントの予定開始時刻をt31〜t35とする。
ここで、プロセス1がイベントE11の実行を開始した時点t11を現在時刻CT(Current Time)として、携帯端末装置が、プロセス1により次に実行されるイベントE12の予定開始時刻を補正する場合を例に挙げて、補正の内容について説明する。
(1)まず、携帯端末装置は、現在時刻t11にポーリング間隔T1を加算して、補正対象イベントE12の補正前の予定開始時刻INP(Ideal Next Polling time)を算出する。ここでは、補正前の予定開始時刻INPは、時刻t11にT1を加算した時刻t12である。
(2)次に、携帯端末装置は、現在時刻CT以後の所定の期間内にプロセス2およびプロセス3により実行されるイベントの予定開始時刻を検出する。ここでは、所定の期間を、現在時刻CTから時刻t13までとする。よって、携帯端末装置により、プロセス2により実行されるイベントE22〜E24の予定開始時刻t22〜t24が検出され、プロセス3により実行されるイベントE31〜E33の予定開始時刻t31〜t33が検出される。
(3)そして、携帯端末装置は、プロセス2およびプロセス3により実行されるイベントのうちイベントE12の補正前の予定開始時刻t12に最も近い予定開始時刻のイベントを目標イベントに決定する。そして、携帯端末装置は、決定した目標イベントの予定開始時刻へとイベントE12の予定開始時刻を補正する。すなわち、携帯端末装置は、イベントE12の予定開始時刻を、時刻t12から目標イベントであるイベントE23の予定開始時刻t23へと補正する。
これにより、携帯端末装置は、イベントE12およびイベントE23のそれぞれの処理に伴って実行されるデバイスの実行時間を纏めて、デバイスの消費電力を削減できる。ここで、デバイスの実行時間とは、イベントの処理に使用される時間(以下、「アクティブ時間」という)とイベントの処理に使用された後にデバイスが低電力モードに遷移するまでの時間(以下、「アイドル時間」という)とを合わせた時間である。
例えば、(D)のようにデバイスの実行時間が纏められる。(D)は、デバイスの動作を示している。ここで、イベントE11〜E13のそれぞれの処理に使用されるデバイスのアクティブ時間をA11〜A13で示す。イベントE21〜E25のそれぞれの処理に使用されるデバイスのアクティブ時間をA21〜A25で示す。イベントE31〜E35のそれぞれの処理に使用されるデバイスのアクティブ時間をA31〜A35で示す。
具体的には、補正前のデバイスの実行時間は、プロセス1のイベントE12とプロセス2のイベントE23とプロセス3のイベントE33とのそれぞれのイベントによるデバイスのアクティブ時間(A12,A23,A33)とアイドル時間との和である。一方、補正後のデバイスの実行時間は、プロセス1のイベントE12とプロセス2のイベントE23とが同時に実行されるため、補正前の実行時間より、イベントE12によるデバイスのアクティブ時間部分とアイドル時間部分の実行時間が減少している。このように、携帯端末装置は、デバイスの実行時間を減少させることで、デバイスの実行時間に比例するデバイスの消費電力を削減することができる。
(携帯端末装置200のハードウェア)
図2は、実施の形態にかかる携帯端末装置200のハードウェアを示すブロック図である。携帯端末装置200は、マルチコアのCPU(Central Processing Unit)201、GPU(Graphics Processing Unit)202を含む。また、携帯端末装置200は、LCD(Liquid Crystal Display)I/F203、タッチパネルI/F204、前面カメラI/F205、メモリ206、背面カメラI/F207、無線I/F208、USB(Universal Serial Bus)I/F209、Wi−Fi(Wireless Fidelity)I/F210を含む。
なお、図2はLCDI/F203、タッチパネルI/F204、前面カメラI/F205、背面カメラI/F207、無線I/F208、USBI/F209、Wi−FiI/F210を介して接続される各装置の図示を省略している。バス211で相互に接続されているGPU202〜Wi−FiI/F210は、CPU201による管理下で相互にデータの送受信をおこなうことができる。
CPU201は携帯端末装置200全体の動作制御を司る中央処理装置である。なお、CPU201は、複数のコアを搭載するマルチコアプロセッサであってもよい。GPU202はグラフィック処理に特有な計算処理をおこなう。LCDI/F203は液晶ディスプレイとのI/Fである。液晶ディスプレイは、カーソル、アイコンあるいはツールボックスを始め、文書、画像、機能情報などのデータを表示する。タッチパネルI/F204はタッチパネルとのI/Fである。例えば、ユーザによりタッチパネルが押下されると、タッチパネルI/F204は、マウスダウンイベントが発生したとしてCPU201に通知する。
前面カメラI/F205および背面カメラI/F207はカメラとのI/Fである。メモリ206は主記憶装置および補助記憶装置である。具体的には、メモリ206は、ROM(Read‐Only Memory)、RAM(Random Access Memory)、フラッシュROMといった記憶装置である。ROMは、ブートプログラムなどのプログラムを記憶している。RAMは、CPU201のワークエリアとして使用される。フラッシュROMは、OSなどのシステムソフトウェアやアプリケーションソフトウェア、または前面カメラ、背面カメラから生成された画像、動画等を記憶している。
無線I/F208はアンテナなど無線デバイスとのI/Fである。USBI/F209はUSB規格に対応した周辺機器とのI/Fである。周辺機器には、例えば、SDカード(登録商標)といったフラッシュメモリなどの記録媒体が存在する。Wi−FiI/F210は無線LANの標準規格である「IEEE 802.11 a/IEEE 802.11b」に対応する無線LANデバイスとのI/Fである。
図3は、携帯端末装置200のソフトウェアを示すブロック図である。携帯端末装置200は、アプリ310、API(Application Program Interface)320、ライブラリ330、カーネル340を有する。API320〜カーネル340はOS301が提供するソフトウェア群である。
アプリ310には、ブラウザアプリ311、電話アプリ312、ニュースアプリ313、メールアプリ314等が含まれる。ブラウザアプリ311は、Wi−FiI/F210経由等で通信され、主にHTTP(HyperText Transfer Protocol)で得たWebページを閲覧するアプリである。電話アプリ312は、無線I/F208によって基地局に接続され、他の携帯端末装置、固定電話等と通話をおこなうアプリである。ニュースアプリ313は、Wi−FiI/F210経由等で通信され、NNTP(Network News Transfer Protocol)で得たネットニュースを閲覧するアプリである。
メールアプリ314は、Wi−FiI/F210経由等で通信され、SMTP(Simple Mail Transfer Protocol)、POP(Post Office Protocol)等によってメールの送受信をおこなうアプリである。なお、本実施の形態にかかるアプリ310は、それぞれ1プロセスとして実行していると想定する。具体的には、ブラウザアプリ311が一つのプロセスであり、電話アプリ312がまた別のプロセスである。ただし、アプリ310内は複数のプロセスとして実行されるアプリがあってもよい。
API320は、OS301の一部の機能であり、アプリ310がOS301の提供するライブラリ330にアクセスするためのインターフェイスである。API320には、アプリ管理API321、イベント管理API322、タイマAPI323等が含まれる。
アプリ管理API321は、液晶ディスプレイに表示されているアプリ310について、開始処理、終了処理、切り替え処理をおこなう。本実施の形態の特徴であるイベント管理API322は、現在時刻以後に実行されるイベントが登録されているイベントリスト302と、携帯端末装置200の電力情報とから、アプリ310により実行されるイベントの予定開始時刻を補正する。なお、イベントリスト302の記憶内容の例は、図5にて記述する。
イベント管理API322は、具体的には、ブラウザアプリ311内のWebページのHTML等で指定された再読み込み間隔や、メールアプリ314のPOPサーバへのメール問い合わせ間隔に基づくイベントの予定開始時刻を補正する。また、イベント管理API322は、イベントリスト302と電力情報をライブラリ330から取得する。タイマAPI323は、アプリ310、イベント管理API322等から呼び出されたときに時刻情報を提供する。
ライブラリ330は、OS301の一部の機能であり、アプリ310が利用できるサービス群を示す。ライブラリ330には、タイミング制御ライブラリ331、電力制御ライブラリ332、Java(登録商標)VM(Virtual Machine)333が含まれる。
タイミング制御ライブラリ331は、タイマAPI323からの要求に従って時刻情報、例えば現在時刻を取得する機能を有する。また、電力制御ライブラリ332は、イベント管理API322の要求に従って電力情報を取得する。JavaVM333は、アプリ310のいずれかの実行オブジェクトがネイティブコードとなる携帯端末装置200の機械語で記載されておらず、Javaの中間コードで記述されている場合に、携帯端末装置200で実行可能にするライブラリである。もし、アプリ310内の全てのアプリがネイティブコードで記載されているならば、JavaVM333は存在しなくてもよい。
カーネル340は、OS301の中核となるソフトウェアである。カーネル340には、デバイス制御部341、プロセス制御部342が含まれる。デバイス制御部341は、携帯端末装置200に接続されているデバイス303の制御をおこなう機能を有する。
デバイス303は、例えば、携帯端末装置200の中で、CPU201の代わりにデータ転送を制御する装置であるDMAC(Direct Memory Access Controller)である。また、デバイス303は、例えば、LCDI/F203に接続される液晶ディスプレイ、前面カメラI/F205、背面カメラI/F207に接続されるカメラ、無線I/F208、Wi−FiI/F210に接続されるアンテナである。さらに、デバイス303は、USBI/F209に接続されるフラッシュメモリ等の記録媒体等も含まれる。
例えば、デバイス制御部341は、LCDI/F203にアクセスすることにより液晶ディスプレイを制御する。プロセス制御部342は、携帯端末装置200で実行されているプロセスを制御する機能を有する。例えば、プロセス制御部342は、アプリ310で実行されているプロセスを優先度、時分割等によってCPU201に割り当てる。
図4は、イベント管理API322によって補正された予定開始時刻にて、アプリ310を動作させる場合を示す説明図である。なお、図4は図3からアプリ310、API320を抽出した図である。
ニュースアプリ313、メールアプリ314はプロセス制御部342によりプロセス切り替えがおこなわれる。イベント管理API322は、ニュースアプリ313、メールアプリ314からイベントの実行要求が通知されると、次のイベントの予定開始時刻を補正する。タイマAPI323により時刻情報が提供され、補正された予定開始時刻以後の時刻となった場合に、イベント管理API322は、実行要求元のアプリ310にイベント予定開始時刻となったことを通知し、実行要求元のアプリ310がイベントを実行する。
図5は、イベント管理API322とアプリ管理API321の処理内容の一例を示す説明図である。イベント管理API322は、イベントリスト302を管理しており、アプリ管理API321は、イベントとアプリ310の関係を示した情報を保持している。符号501は、現在時刻が「2010年4月3日12:40:40」におけるイベント管理API322によるイベントリスト302の保持状態を示している。また、符号502は、アプリ管理API321によるイベントとアプリ310の関係を示している。
保持状態501において、イベントリスト302は、イベント管理API322によって管理されており、アプリ310が指定した時刻をトリガとして発生するイベントのリストである。イベントの種類には、1回だけ発生するイベントと、定期的に繰り返されるイベントと、の2種類が存在する。保持状態501においては、イベントリスト302にイベント503〜イベント506が登録されている。
イベントは、イベントID、種類、予定開始時刻という3つのフィールドを含む。イベントIDフィールドは、アプリ310と対応づけられたIDが格納されている。種類フィールドは、1回だけ発生するイベントか、定期的に繰り返されるイベントかを判断できる情報が格納されている。さらに、種類フィールドは、対象のイベントが定期的に繰り返されるイベントである場合に、どれぐらいの間隔で対象のイベントが実行されるかという時間の情報についても格納される。予定開始時刻フィールドは、対象のイベントが次に実行される時刻が格納されている。
符号502において、アプリ管理API321には、アプリ310のポインタが格納されている。それぞれのポインタに、イベントリスト302に登録されたイベントIDが関連付けられている。例えば、ブラウザアプリ311は、イベントID:1と関連付けられている。電話アプリ312は、どのイベントとも関連付けられていない。ニュースアプリ313は、イベントID:3と関連付けられている。メールアプリ314は、イベントID:2およびイベントID:4と関連付けられている。
例えば、ブラウザアプリ311は、イベントIDが1であるイベント503を「2010年4月3日12:40:50」に実行する。イベント503が特定のWebページの再読み込みをおこなうイベントである場合、ブラウザアプリ311は、予定開始時刻にWebページを再読み込みする。
同様に、ニュースアプリ313は、イベントIDが3であるイベント505を「2010年4月5日9:11:00」に実行する。イベント505が前回の取得以降に投稿されたネットニュースを取得するイベントである場合、ニュースアプリ313は、指定された予定開始時刻にネットニュースを取得する。なお、イベント505は繰り返し発生するイベントであるため、イベント505の終了後、3日後となる「2010年4月8日9:11:00」に実行される予定の新たなイベントがイベントリスト302に追加される。
同様に、メールアプリ314は、イベントIDが2であるイベント504を「2010年4月3日12:43:30」に実行し、イベントIDが4であるイベント506を「2010年4月3日13:00:00」に実行する。なお、ここではメールアプリ314がマルチアカウントに対応したソフトウェアであることを想定している。イベント504、イベント506がそれぞれのメールアカウントの新着メールチェックを実行するイベントである場合、メールアプリ314は、指定された予定開始時刻に新着メールチェックを実行する。このように、1つのアプリが複数のイベントを発生する場合も有り得る。発生された複数のイベントは、処理内容が等しい場合も存在するし、異なる場合も存在する。
なお、イベント504、イベント506は共に繰り返し発生するイベントであるため、イベント終了後に新たなイベントがイベントリスト302に登録される。例えば、イベント504の終了後、イベント504の開始時刻から205秒後となる「2010年4月3日12:46:55」に実行される予定の新たなイベントがイベントリスト302に登録される。また、イベント506の終了後、イベント506の開始時刻から1時間後となる「2010年4月3日14:00:00」に実行される予定の新たなイベントがイベントリスト302に登録される。
(携帯端末装置200の機能的構成例)
図6は、携帯端末装置200の機能的構成例を示すブロック図である。携帯端末装置200は、第1の検出部601と、第2の検出部602と、算出部603と、決定部604と、補正部605と、を含む。この制御部となる機能(第1の検出部601〜補正部605)は、記憶装置に記憶されたプログラムをCPU201が実行することにより、その機能を実現する。記憶装置とは、具体的には、例えば、図2に示したメモリ206、USBI/F209に接続された記録媒体等である。また、各機能部(第1の検出部601〜補正部605)の処理結果は、特に指定する場合を除いて、例えば、図2に示したメモリ206、USBI/F209に接続された記録媒体等の記憶装置に記憶される。
第1の検出部601は、現在時刻以後に実行される補正対象イベントの予定開始時刻を検出する。ここで、補正対象イベントとは、予定開始時刻を補正されるイベントである。具体的には、例えば、第1の検出部601は、プロセスから発生した、現在時刻以後に実行される補正対象イベントの予定開始時刻を検出する。また、第1の検出部601は、イベントリスト302に登録されているイベント群から、補正対象イベントの予定開始時刻を検出してもよい。
第2の検出部602は、第1の検出部601によって検出された補正対象イベントとは異なる処理内容の現在時刻以後に実行される複数のイベントの各々のイベントの予定開始時刻を検出する。ここで、補正対象イベントとは異なる処理内容のイベントとは、補正対象イベントを実行したプロセスとは異なる他のプロセスが実行するイベントである。
具体的には、例えば、第2の検出部602は、イベントリスト302に登録されているイベント群の各々のイベントの予定開始時刻を検出する。また、第2の検出部602は、イベントリスト302に登録されているイベント群の各々のイベントの予定開始時刻、および、各々のイベントの種類と予定開始時刻とから推定されるイベントリスト302に未登録のイベントの予定開始時間を検出してもよい。
より具体的には、例えば、第2の検出部602は、イベントリスト302に登録されているイベント504の予定開始時刻「2010年4月3日12:43:30」を検出する。また、第2の検出部602は、イベント504の種類「205秒ごとの繰り返し」に基づいて、検出したイベント504の予定開始時刻以後に繰り返されると推定されるイベントリスト302に未登録のイベントの予定開始時刻を検出する。例えば、イベント504の次に実行されるイベントの予定開始時刻は、「2010年4月3日12:43:30+205秒」である。
ただし、第2の検出部602は、現在時刻以後で、予定開始時刻を含む所定の期間内に実行されるイベントのみを検出してもよい。所定の期間とは、例えば、現在時刻CTから、補正対象イベントの予定開始時刻に補正対象イベントのポーリング間隔を加算した時刻までの期間である。また、所定の期間は、現在時刻CTから、補正対象イベントの予定開始時刻までの期間であってもよく、補正対象イベントの予定開始時刻から、補正対象イベントの予定開始時刻に補正対象イベントのポーリング間隔を加算した時刻までの期間であってもよい。
算出部603は、第1の検出部601によって検出された補正対象イベントの予定開始時刻と、第2の検出部602によって検出された複数のイベントの各々のイベントの予定開始時刻と、の差分を算出する。具体的には、例えば、算出部603は、第2の検出部602によって検出された複数のイベントの各々のイベントの予定開始時刻から、第1の検出部601によって検出された補正対象イベントの予定開始時刻を減算した値の絶対値を、差分として算出する。
決定部604は、算出部603によって算出された差分群に基づいて、複数のイベントの中から、補正対象イベントに対する目標イベントを決定する。ここで、目標イベントとは、補正対象イベントの予定開始時刻を近づける目標となるイベントである。具体的には、例えば、決定部604は、第2の検出部602によって検出された複数のイベントのうち算出部603によって算出された差分が最も小さいイベントを、目標イベントに決定する。これにより、決定部604は、補正対象イベントの予定開始時刻との間隔が最も短いイベントを目標イベントに決定することができる。
具体的には、例えば、決定部604は、第2の検出部602によって検出された複数のイベントのうち算出部603によって算出された差分が所定の閾値以下のイベントを、目標イベントに決定する。これにより、決定部604は、補正対象イベントの予定時刻との間隔が所定の閾値以下のイベントを目標イベントとして決定することができる。
これにより、情報処理装置は、補正対象イベントの予定開始時刻と間隔が遠い時刻に開始されるイベントを目標イベントから除外できる。このため、情報処理装置は、目標イベントとなるイベントが補正対象イベントの遠方にしか存在せず、消費電力の削減が期待できない場合に、補正をおこなわないようにできる。
また、例えば、補正部605が補正対象イベントの制約情報を順守する範囲で補正をおこなうときに、補正対象イベントの予定開始時刻との間隔が最も短いイベントが補正対象イベントの制約情報を順守できない場合がある。この場合、決定部604は、補正対象イベントの予定時刻との間隔が所定の閾値以下のイベントのうち制約情報を順守できるイベントを選択して目標イベントとして決定することができる。ここで、制約情報とは、イベントを実行するアプリの仕様に基づく情報であり、ポーリング間隔に制約を与える情報である。例えば、ポーリング間隔の下限値や上限値である。
また、例えば、あるプロセスが実行するイベント群のそれぞれを補正対象イベントとして、各々の補正対象イベントの予定開始時刻を順次補正していく場合を想定する。この場合に、決定部604は、補正後のポーリング間隔の平均が補正前のポーリング間隔に近づくように、所定の閾値以下のイベントから目標イベントを選択するようにしてもよい。
具体的には、例えば、決定部604は、第2の検出部602によって検出された複数のイベントのうち算出部603によって算出された差分が所定の閾値以上のイベントを、目標イベントに決定する。これにより、決定部604は、補正対象イベントの予定開始時刻との間隔が短いイベントを目標イベントから除外することができる。
具体的には、例えば、決定部604は、第2の検出部602によって検出された複数のイベントを算出部603によって算出された差分の昇順に並べた場合の所定の順位以内のイベントを、目標イベントに決定する。これにより、決定部604は、補正対象イベントの予定開始時刻との間隔の大小に関わらず、複数のイベントのうち補正対象イベントの予定開始時刻に近いイベントを目標イベントに決定できる。
補正部605は、補正対象イベントの予定開始時刻と決定部604によって決定された目標イベントの予定開始時刻との間隔が短くなるように、補正対象イベントの予定開始時刻を補正する。具体的には、例えば、補正部605は、目標イベントによるデバイス303の実行時間と補正対象イベントによるデバイス303の実行時間とが重なるように、補正対象イベントの予定開始時刻を補正する。これにより、補正部605は、補正前の補正対象イベントによるデバイス303の実行時間と、目標イベントによるデバイス303の実行時間と、を纏め、デバイス303の実行時間を減少させて携帯端末装置200の低消費電力化を図ることができる。
また、補正部605は、補正対象イベントまたは目標イベントの消費電力量に基づいて、補正対象イベントの予定開始時刻を補正する。具体的には、例えば、補正部605は、いずれかのイベントの消費電力量が大きいほど、補正対象イベントと目標イベントの予定開始時刻の間隔が短くなるように補正する。これにより、情報処理装置は、消費電力に大きく影響を与えるアプリの消費電力を削減することができる。また、イベントの消費電力量が小さい場合、補正前のポーリング間隔を優先することになり、情報処理装置は、制約情報を順守しやすくなる。
また、補正部605は、自装置の有する電力の残量に基づいて、補正対象イベントの予定開始時刻を補正する。ここで、電力の残量は、例えば、0〜1の指標値で示される。そして、指標値が0ならば電力の残量がない完全放電状態を示し、指標値が1ならば満充電状態を示す。
具体的には、補正部605は、電力の残量が少ないほど、補正対象イベントの予定開始時刻と目標イベントの予定開始時刻の間隔が短くなるように、補正対象イベントの予定開始時刻を補正する。これにより、補正部605は、電力の残量が少ない場合、電力の消費を抑えることができる。また、補正部605は、電力の残量が多い場合、補正前のポーリング間隔を優先することになり、制約情報を順守しやすくなる。
また、補正部605は、補正対象イベントの制約情報を順守する範囲内で、補正対象イベントの予定開始時刻を補正する。
具体的には、例えば、補正部605は、予め定められた制約情報に基づいて補正対象イベントの補正後の予定開始時刻を修正する。ここで、ブラウザアプリ311に関するプロセスのポーリング間隔の仕様として、特定のWebページに対する再読み込み間隔の最小値が設定されている場合を想定する。この場合、補正部605は、現在時刻CTに特定のWebページに対する再読み込み間隔の下限値を加算した値を目標イベントの予定開始時刻が下回った場合、補正後の補正対象イベントの予定開始時刻を現在時刻CTに特定のWebページに対する再読み込み間隔の下限値を加算した値に補正する。
また、補正部605は、補正対象イベントの予定開始時刻を目標イベントの予定開始時刻に補正する。これにより、補正部605は、補正対象イベントの予定開始時刻を目標イベントの予定開始時刻に一致させる。そのため、デバイス303が複数のプロセスによって同時に使用できる場合は、補正対象イベントと目標イベントとの処理がデバイス303を同時に使用するようになる。よって、補正部605は、補正対象イベントによるデバイス303の実行時間と、目標イベントによるデバイス303の実行時間と、を纏めることができ、デバイス303の実行時間を減少させて携帯端末装置200の低消費電力化を図ることができる。
また、デバイス303が複数のプロセスによって同時に使用できない場合は、補正対象イベントと目標イベントとの処理のうち一方のイベントがデバイス303を使用し、他方のイベントは一方のイベントの実行が終了するまで待つようになる。よって、補正部605は、一方のイベントの実行が終了した時刻に、他方のイベントの実行を開始させることができる。
即ち、補正部605は、一方のイベントにより使用されたデバイス303がアイドル時間に移行する前に、他方のイベントを開始させることができ、デバイス303の実行時間を纏めることができる。そのため、補正部605は、補正前の補正対象イベントによるデバイス303の実行時間と、目標イベントによるデバイス303の実行時間と、を纏めることができ、携帯端末装置200の低消費電力化を図ることができる。
また、補正部605は、目標イベントの予定開始時刻と目標イベントの予測処理時間とに基づいて、補正対象イベントの予定開始時刻を目標イベントの予定開始時刻に目標イベントの予測処理時間を加算した時刻に補正する。ここで、目標イベントの予測処理時間とは、目標イベントを実行したプロセスが現在時刻以前に実行したイベントの処理時間から予測した処理時間である。目標イベントの予定開始時刻に目標イベントの予測処理時間を加算した時刻とは、目標イベントの予定終了時刻である。
これにより、補正部605は、目標イベントの実行が終了した時刻に、補正対象イベントの実行を開始させることができる。即ち、補正部605は、目標イベントにより使用されたデバイス303がアイドル時間に移行する前に、補正対象イベントを開始させることができる。そのため、補正部605は、補正前の補正対象イベントによるデバイス303の実行時間と、目標イベントによるデバイス303の実行時間と、を纏めることができ、デバイス303の実行時間を減少させて携帯端末装置200の低消費電力化を図ることができる。
また、補正部605は、目標イベントの予定開始時刻と補正対象イベントの予測処理時間とに基づいて、補正対象イベントの予定開始時刻を目標イベントの予定開始時刻から補正対象イベントの予測処理時間を減算した時刻に補正する。ここで、補正対象イベントの予測処理時間とは、補正対象イベントを実行したプロセスが現在時刻以前に実行したイベントの処理時間から予測した処理時間である。目標イベントの予定開始時刻から補正対象イベントの予測処理時間を減算した時刻とは、目標イベントの予定開始時刻に補正対象イベントの予定終了時刻が一致するようにした場合の、補正対象イベントの予定開始時刻である。
これにより、補正部605は、補正対象イベントの実行が終了した時刻に、目標イベントの実行を開始させることができる。即ち、補正部605は、補正対象イベントにより使用されたデバイス303がアイドル時間に移行する前に、目標イベントを開始させることができる。そのため、補正部605は、補正前の補正対象イベントによるデバイス303の実行時間と、目標イベントによるデバイス303の実行時間と、を纏めることができ、デバイス303の実行時間を減少させて携帯端末装置200の低消費電力化を図ることができる。
また、補正部605は、決定部604によって目標イベントが決定されなかった場合、補正をおこなわない。これにより、補正部605は、制約情報を順守できない場合に補正をおこなわずに、理想的なポーリング間隔でプロセスを動作させることができる。
(実施例1)
次に、実施例1にかかる補正対象イベントの予定開始時刻の補正の内容について説明する。実施例1では、補正対象イベントの予定開始時刻を、目標イベントの予定開始時刻へと補正する例である。また、実施例1では、アプリ1〜アプリ3が使用するデバイス303は、アプリ1〜アプリ3が同時に使用することができる。
図7〜13は、実施例1にかかる補正対象イベントの予定開始時刻の補正の内容を示す説明図である。携帯端末装置200では、イベントの予定開始時刻をアプリ310が独自に設定するのではなく、アプリ310から提供された値に基づいて、OS301が最適な予定開始時刻に補正する。また、アプリ310が、OS301によって算出された予定開始時刻に基づいて、イベントの予定開始時刻を補正してもよい。
(補正の計算式の例1)
ここで、実施例1における予定開始時刻の補正の計算式の例を示す。まず、イベント管理API322は、下記(1)式に従って補正対象イベントの補正前の予定開始時刻を算出する。
INP = CT+T…(1)
ただし、INPは、補正対象イベントの補正前の予定開始時刻を示している。CTは、現在時刻を示している。Tは、アプリのポーリング間隔を示している。そして、イベント管理API322は、補正対象イベントの予定開始時刻を、下記(2)式に従って補正する。
FPT = INP + (PT(n)−INP)×BL×(1/PAL)…(2)
ただし、FPT(Fixed Polling Time)は、補正対象イベントの補正後の予定開始時刻を示している。PT(n)は、現在時刻CT以後の所定期間内に実行される複数のイベントのうち、目標イベントに決定されたイベントの予定開始時刻を示している。
PAL(Power Api Level)は、アプリの消費電力量の指標を示している。消費電力量の指標は、「1」が最も消費電力量が大きく、値が大きくなるにつれ消費電力量が小さくなることを示している。例えば、PALは下記(3)式で算出できる。
PAL=(CPU201の負荷が100%である場合の消費電力/アプリの消費電力)…(3)
(3)式を適用し、例えば、CPU201の負荷が100%である場合の消費電力が3[mW]である場合に、3[mW]消費するアプリは、消費電力量の指標=(3/3)=1となる。また、1[mW]消費するアプリは、消費電力量の指標=(3/1)=3となる。
BL(Battery Life)は携帯端末装置200の電力の残量を示している。具体的には、BLは0〜1の数値で、0ならば電力の残量がない完全放電状態を示し、1ならば満充電状態を示す。
また、イベント管理API322は、制約情報(例えば、予定開始時刻の上限値または下限値といった閾値)に基づいて、補正対象イベントの予定開始時刻を補正してもよい。例えば、ブラウザアプリ311のポーリング間隔の仕様として、特定のWebページに対する再読み込み間隔の最小値が設定されている場合を想定する。この場合、予定開始時刻の下限値を現在時刻CTに再読み込み間隔の最小値を加算した値としておき、(2)式の算出結果が下限値より小さい場合、イベント管理API322は、補正後の予定開始時刻として(2)式の算出結果を採用せず下限値を採用してもよい。
このように、補正対象イベントの予定開始時刻と目標イベントの予定開始時刻との差分(PT(n)−INP)に基づいて、補正後の補正対象イベントの予定開始時刻を算出する。なお、イベントが1つしか存在しない場合、イベント管理API322は、PT(n)が存在しないため補正を実行しない。したがって、該当のイベントの予定開始時刻は、CT+Tに等しく、ポーリング間隔はアプリが仕様等から決定したポーリング間隔Tに等しくなる。
(補正の計算式の例2)
また、イベント管理API322は、補正対象イベントの予定開始時刻を、補正対象イベントと目標イベントとの間隔が所定の閾値より短い場合にのみ、補正をおこなってもよい。(4)式は、補正対象イベントと目標イベントとの間隔が所定の閾値より短いか、所定の閾値より長いか、を判定する判定式の例である。
|FPT−PT(n)| < Th×BL×(1/PAL)…(4)
ただし、Thは定数である。ここで、(4)式の条件を満たす場合は、(2)式のFPTを補正対象イベントの補正後の予定開始時刻とする。一方で、(4)式の条件を満たさない場合は、(1)式のINPを補正対象イベントの補正後の予定開始時刻とする。
(補正の計算式の例3)
また、イベント管理API322は、補正対象イベントの予定開始時刻を、補正対象イベントと目標イベントとの間隔が所定の閾値より長い場合にのみ、補正をおこなってもよい。ここで、(4)式の条件を満たす場合は、(1)式のINPを補正対象イベントの補正後の予定開始時刻とする。一方で、(4)式の条件を満たさない場合は、(2)式のFPTを補正対象イベントの補正後の予定開始時刻とする。
以下では、図7〜図14を用いて、上述した補正の計算式の例1を用いた場合の補正対象イベントの予定開始時刻の補正の例を示す。以下、説明の簡略化のため、図7〜図14における時刻の記載にて日時の指定がない場合は、2010年4月3日内の時刻とする。また、BLは「1」とし、PALは「1」とする。ここでは、プロセス1に関してポーリング間隔を45秒以下にできないという制約情報があるとする。
図7は、補正をおこなう前のプロセス1〜プロセス3の動作およびデバイス303の動作を示している。
プロセス1は、ポーリング間隔T1=55[秒]ごとにイベントを実行する。補正をおこなう前のプロセス1は、時刻t11=12:40:25にイベントE11を実行し、時刻t13=12:41:20にイベントE12を実行し、時刻t15=12:42:15にイベントE13を実行する。
プロセス2は、ポーリング間隔T2=40[秒]ごとにイベントを実行する。補正をおこなう前のプロセス2は、時刻t21=12:40:10にイベントE21を実行し、時刻t23=12:40:50にイベントE22を実行する。また、補正をおこなう前のプロセス2は、時刻t25=12:41:30にイベントE23を実行し、時刻t27=12:42:10にイベントE24を実行する。
プロセス3は、ポーリング間隔T3=50[秒]ごとにイベントを実行する。補正をおこなう前のプロセス3は、時刻t31=12:40:15にイベントE31を実行し、時刻t33=12:41:05にイベントE32を実行し、時刻t35=12:41:55にイベントE33を実行する。
デバイス303は、各イベントの処理に伴って実行が開始され、アクティブ時間およびアイドル時間を合わせた時間の経過後、低電力モードに遷移する。イベントE11〜E13のそれぞれの処理に使用されるデバイス303のアクティブ時間をA11〜A13で示す。イベントE21〜E24のそれぞれの処理に使用されるデバイス303のアクティブ時間をA21〜A24で示す。イベントE31〜E33のそれぞれの処理に使用されるデバイス303のアクティブ時間をA31〜A33で示す。
図8は、プロセス2にて、イベントE21の実行を開始した時点を現在時刻CTとして、プロセス2が発生させた新たなイベントE22の予定開始時刻を補正する例を示している。
プロセス2は、イベントE21を時刻t21=12:40:10(現在時刻CT)に実行開始し、時刻t22=12:40:15にて終了する。時刻t21にて、ポーリング間隔T2経過後の時刻t23=12:40:50に実行開始されるイベントE22がプロセス2から発生した場合、タイミング制御ライブラリ331は、イベントE22を補正対象イベントとして処理を開始する。
ここで、時刻t21の時点にて、イベントリスト302には、イベントE11,E31が存在するとする。また、タイミング制御ライブラリ331は、イベントE11の予定開始時刻およびポーリング間隔T1より、イベントリスト302には未登録であるがイベントE12,E13の予定開始時刻を算出しておく。同様に、タイミング制御ライブラリ331は、イベントE31の予定開始時刻およびポーリング間隔T3より、イベントリスト302には未登録であるがイベントE32,E33の予定開始時刻を算出しておく。
ここで、タイミング制御ライブラリ331は、イベントE11〜E13,E31〜E33のイベントのうち、各々のイベントの予定開始時刻とイベントE22の予定開始時刻との間隔が最も短いイベントを目標イベントに決定する。ここでは、イベントE32が目標イベントとなる。
ここで、イベント管理API322は、(2)式を用いて、イベントE22の補正後の予定開始時刻FPT(t23’)を算出する。即ち、FPT=(時刻t23)+(時刻t33−時刻t23)×1×1=12:40:50+(15)=12:41:05となる。
算出した結果、イベントE22の予定開始時刻は、時刻t23=12:40:50から、時刻t23’=12:41:05に補正される。補正により、イベントE22によるデバイス303の実行時間とイベントE32によるデバイス303の実行時間とが重なり、デバイス303の実行時間を纏めることができる。
図9は、プロセス3にて、イベントE31の実行を開始した時点を現在時刻CTとして、プロセス3が発生させた新たなイベントE32の予定開始時刻を補正する例を示している。
プロセス3は、イベントE31を時刻t31=12:40:15(現在時刻CT)に実行開始し、時刻t32=12:40:20にて終了する。時刻t31にて、ポーリング間隔T3経過後の時刻t33=12:41:05に実行開始されるイベントE32がプロセス3から発生した場合、タイミング制御ライブラリ331は、イベントE32を補正対象イベントとして処理を開始する。
ここで、時刻t31の時点にて、イベントリスト302には、イベントE11,E22が存在するとする。また、タイミング制御ライブラリ331は、イベントE11の予定開始時刻およびポーリング間隔T1より、イベントリスト302には未登録であるがイベントE12,E13の予定開始時刻を算出しておく。同様に、タイミング制御ライブラリ331は、イベントE22の予定開始時刻およびポーリング間隔T2より、イベントリスト302には未登録であるがイベントE23,E24の予定開始時刻を算出しておく。
ここで、タイミング制御ライブラリ331は、イベントE11〜E13,E22〜E24のイベントのうち、各々のイベントの予定開始時刻とイベントE32の予定開始時刻との間隔が最も短いイベントを目標イベントに決定する。ここでは、イベントE22が目標イベントとなる。
ここで、イベント管理API322は、(2)式を用いて、イベントE32の補正後の予定開始時刻FPT(t33’)を算出する。即ち、FPT=(時刻t33)+(時刻t23’−時刻t33)×1×1=12:41:05+(0)=12:41:05となる。
算出した結果、イベントE32の予定開始時刻は、時刻t33=12:41:05のままである。なお、目標イベントの予定開始時刻と補正対象イベントの予定開始時刻との間隔が同一または所定の閾値以下である場合に、補正をおこなわないようにすれば、図9を用いて説明した処理を省略することができる。
図10は、プロセス1にて、イベントE11の実行を開始した時点を現在時刻CTとして、プロセス1が発生させた新たなイベントE12の予定開始時刻を補正する例を示している。
プロセス1は、イベントE11を時刻t11=12:40:25(現在時刻CT)に実行開始し、時刻t12=12:40:30にて終了する。時刻t11にて、ポーリング間隔T1経過後の時刻t13=12:41:20に実行開始されるイベントE12がプロセス1から発生した場合、タイミング制御ライブラリ331は、イベントE12を補正対象イベントとして処理を開始する。
ここで、時刻t11の時点にて、イベントリスト302には、イベントE22,E32が存在するとする。また、タイミング制御ライブラリ331は、イベントE22の予定開始時刻およびポーリング間隔T2より、イベントリスト302には未登録であるがイベントE23,E24の予定開始時刻を算出しておく。同様に、タイミング制御ライブラリ331は、イベントE32の予定開始時刻およびポーリング間隔T3より、イベントリスト302には未登録であるがイベントE33の予定開始時刻を算出しておく。
ここで、タイミング制御ライブラリ331は、イベントE22〜E24,E32,E33のイベントのうち、各々のイベントの予定開始時刻とイベントE12の予定開始時刻との間隔が最も短いイベントを目標イベントに決定する。ここでは、イベントE22が目標イベントとなる。
ここで、イベント管理API322は、(2)式を用いて、イベントE12の補正後の予定開始時刻FPT(t13’)を算出する。即ち、FPT=(時刻t13)+(時刻t23’−時刻t13)×1×1=12:41:20+(−15)=12:41:05となる。しかし、プロセス1の制約情報から、ポーリング間隔を45秒以下にすることができないため、イベントE12の補正後の予定開始時刻t13’は12:41:10となる。
結果として、イベントE12の予定開始時刻は、時刻t13=12:41:20から、時刻t13’=12:41:10に補正される。補正により、イベントE12によるデバイス303の実行時間のアクティブ時間部分とイベントE22によるデバイス303の実行時間のアイドル時間部分とが重なり、デバイス303の実行時間を纏めることができる。
図11は、プロセス2にて、イベントE22の実行を開始した時点を現在時刻CTとして、プロセス2が発生させた新たなイベントE23の予定開始時刻を補正する例を示している。
プロセス2は、イベントE22を時刻t23’=12:41:05(現在時刻CT)に実行開始し、時刻t24’=12:41:10にて終了する。時刻t23’にて、ポーリング間隔T2経過後の時刻t25=12:41:45に実行開始されるイベントE23がプロセス2から発生した場合、タイミング制御ライブラリ331は、イベントE23を補正対象イベントとして処理を開始する。
ここで、時刻t23’の時点にて、イベントリスト302には、イベントE12,E32が存在するとする。また、タイミング制御ライブラリ331は、イベントE12の予定開始時刻およびポーリング間隔T1より、イベントリスト302には未登録であるがイベントE13の予定開始時刻を算出しておく。同様に、タイミング制御ライブラリ331は、イベントE32の予定開始時刻およびポーリング間隔T3より、イベントリスト302には未登録であるがイベントE33の予定開始時刻を算出しておく。
ここで、タイミング制御ライブラリ331は、イベントE12,E13,E32,E33のイベントのうち、各々のイベントの予定開始時刻とイベントE23の予定開始時刻との間隔が最も短いイベントを目標イベントに決定する。ここでは、イベントE33が目標イベントとなる。
ここで、イベント管理API322は、(2)式を用いて、イベントE23の補正後の予定開始時刻FPT(t25’)を算出する。即ち、FPT=(時刻t25)+(時刻t35−時刻t25)×1×1=12:41:45+(10)=12:41:55となる。
算出した結果、イベントE23の予定開始時刻は、時刻t25=12:41:45から、時刻t25’=12:41:55に補正される。補正により、イベントE23によるデバイス303の実行時間とイベントE33によるデバイス303の実行時間とが重なり、デバイス303の実行時間を纏めることができる。
図12は、プロセス3にて、イベントE32の実行を開始した時点を現在時刻CTとして、プロセス3が発生させた新たなイベントE33の予定開始時刻を補正する例を示している。
プロセス3は、イベントE32を時刻t33=12:41:05(現在時刻CT)に実行開始し、時刻t34=12:41:10にて終了する。時刻t33にて、ポーリング間隔T3経過後の時刻t35=12:41:55に実行開始されるイベントE33がプロセス3から発生した場合、タイミング制御ライブラリ331は、イベントE33を補正対象イベントとして処理を開始する。
ここで、時刻t33の時点にて、イベントリスト302には、イベントE12,E23が存在するとする。また、タイミング制御ライブラリ331は、イベントE12の予定開始時刻およびポーリング間隔T1より、イベントリスト302には未登録であるがイベントE13の予定開始時刻を算出しておく。同様に、タイミング制御ライブラリ331は、イベントE23の予定開始時刻およびポーリング間隔T2より、イベントリスト302には未登録であるがイベントE24の予定開始時刻を算出しておく。
ここで、タイミング制御ライブラリ331は、イベントE12,E13,E23,E24のイベントのうち、各々のイベントの予定開始時刻とイベントE33の予定開始時刻との間隔が最も短いイベントを目標イベントに決定する。ここでは、イベントE23が目標イベントとなる。
ここで、イベント管理API322は、(2)式を用いて、イベントE33の補正後の予定開始時刻FPT(t35’)を算出する。即ち、FPT=(時刻t35)+(時刻t25’−時刻t35)×1×1=12:41:55+(0)=12:41:55となる。算出した結果、イベントE33の予定開始時刻は、時刻t35=12:41:55のままである。
図13は、プロセス1にて、イベントE12の実行を開始した時点を現在時刻CTとして、プロセス1が発生させた新たなイベントE13の予定開始時刻を補正する例を示している。
プロセス1は、イベントE12を時刻t13’=12:41:10(現在時刻CT)に実行開始し、時刻t14’=12:41:15にて終了する。時刻t13’にて、ポーリング間隔T1経過後の時刻t15=12:42:05に実行開始されるイベントE13がプロセス1から発生した場合、タイミング制御ライブラリ331は、イベントE13を補正対象イベントとして処理を開始する。
ここで、時刻t13’の時点にて、イベントリスト302には、イベントE23,E33が存在するとする。また、タイミング制御ライブラリ331は、イベントE23の予定開始時刻およびポーリング間隔T2より、イベントリスト302には未登録であるがイベントE24の予定開始時刻を算出しておく。
ここで、タイミング制御ライブラリ331は、イベントE23,E24,E33のイベントのうち、各々のイベントの予定開始時刻とイベントE13の予定開始時刻との間隔が最も短いイベントを目標イベントに決定する。ここでは、イベントE23が目標イベントとなる。
ここで、イベント管理API322は、(2)式を用いて、イベントE13の補正後の予定開始時刻FPT(t15’)を算出する。即ち、FPT=(時刻t15)+(時刻t25’−時刻t15)×1×1=12:42:05+(−10)=12:41:55となる。
算出した結果、イベントE13の予定開始時刻は、時刻t15=12:42:05から、時刻t15’=12:41:55に補正される。図10での補正では、イベントE12によるデバイス303の実行時間と他のイベントによるデバイス303の実行時間とは完全には重ならなかった。しかし、図13での補正により、イベントE13によるデバイス303の実行時間とイベントE23によるデバイス303の実行時間とが重なり、デバイス303の実行時間を纏めることができる。
このように、携帯端末装置200は、段階的に補正をおこない、最終的にはプロセス1が発生させたイベントによるデバイス303の実行時間を短くして、消費電力を削減することができる。
ここでは、携帯端末装置200は、補正対象イベントの予定開始時刻に最も近い時刻に開始されるイベントを目標イベントに決定したが、補正対象イベントの予定開始時刻を含む所定の期間内の任意のイベントを目標イベントに決定してもよい。また、携帯端末装置200は、補正対象イベントの予定開始時刻に近い時刻に開始される順にイベントを整列した場合に、所定の順位以内の任意のイベントを目標イベントに決定してもよい。
また、ここでは、携帯端末装置200は、プロセスが発生させた新たなイベントを補正対象イベントとして採用したが、イベントリスト302に存在するイベントを採用してもよい。
また、ここでは、携帯端末装置200は、プロセス1〜3のそれぞれが実行するイベントの予定開始時刻を補正したが、予定開始時刻を補正されないイベントがあってもよい。例えば、プロセス2が実行するイベントは予定開始時刻を補正されないイベントであるとする。そして、プロセス2は、ポーリング間隔T2を常に保って、イベントを実行することにしてもよい。
また、携帯端末装置200は、PALとして、補正対象イベントを実行するプロセスの消費電力量の指標を採用したが、目標イベントを実行するプロセスの消費電力量の指標を採用してもよい。
また、携帯端末装置200は、補正対象イベントを実行するプロセスの消費電力量の指標と目標イベントを実行するプロセスの消費電力量の指標とのうち、消費電力量の指標の値が大きい方を選択して採用してもよい。消費電力量の指標の値が大きい場合、すなわち消費電力量が小さい方を選択する理由は次のとおりである。
プロセスの消費電力量が小さい場合、それに伴うデバイス303の消費電力量も小さくなる。大きい消費電力量となる実行時間と小さい消費電力量となる実行時間とが重なる場合、小さい消費電力量の分が、消費電力の最大の削減量となる。このように、消費電力の最大の削減量は小さい消費電力量の方に左右されるため、携帯端末装置200は、消費電力量の指標の値が大きい方を選択することで、消費電力量の最大の削減量に基づいて補正対象イベントの予定開始時刻を補正することができる。
このように、携帯端末200は、複数のイベントによるデバイス303の実行時間を纏めて、デバイス303の実行時間を減少させることができ、消費電力を削減することができる。次に、図14を用いて、補正によるデバイス303の実行時間の変化と消費電力の削減について説明する。
図14は、実施例1にかかるデバイス303の補正前の実行時間および補正後の実行時間を示す説明図である。なお、図14において以下の前提条件が存在する。消費電力量の計算にあたって、デバイス303の低電力モードの消費電力を0[mW]と想定する。
また、デバイス303は、プロセス1〜3が同時に使用可能なデバイス303(例えば、DMAC)である。具体的には、プロセスごとに異なるDMACのチャネルを使用するようにすることで、各プロセスはDMACを同時に使用することができる。例えば、プロセス1がチャネルAとチャネルBを使用し、プロセス2がチャネルCとチャネルDを使用し、プロセス3がチャネルEとチャネルFを使用するとする。
デバイス303の消費電力量は、デバイス303の消費電力×デバイス303の実行時間となる。なお、デバイス303の消費電力以外に、デバイス303に接続されるI/Fの消費電力も存在するが、図14では、I/Fの消費電力をデバイス303の消費電力に含めて省略する。また、デバイス303は、デバイス303の実行時間が終了すると、低電力モードに遷移する。
ここで、補正によるデバイス303の実行時間の変化と消費電力の削減について説明する。例えば、図14において、符号1401に示す範囲では、携帯端末200は、プロセス1〜3によるデバイス303の実行時間を纏め、プロセス1〜3がデバイス303の別チャネルを用いるようにしてデバイス303を同時に使用するようにした。また、携帯端末200は、プロセス1によるデバイス303のアクティブ時間とプロセス2によるデバイス303のアイドル時間とを纏め、デバイスの実行時間を減少させた。
符号1401に示す範囲では、補正前は、携帯端末装置200は、プロセス2によるデバイス303の実行時間とプロセス3によるデバイス303の実行時間とプロセス1によるデバイス303の実行時間とについて、デバイス303において電力を消費していた。
一方で、補正後は、携帯端末装置200は、プロセス2およびプロセス3により同時使用されるデバイス303のアクティブ時間とプロセス1によるデバイス303の実行時間とについて、デバイス303において電力を消費するだけでよい。即ち、携帯端末装置200は、プロセス2によるデバイス303のアイドル時間と、プロセス3によるデバイス303の実行時間と、についてのデバイス303における消費電力を削減することができる。
また、図14の全体での消費電力の削減量について説明する。例えば、デバイス303の単位時間当たりの消費電力を1[mW]とすると、デバイス303の消費電力は、1[mW]×(アクティブ時間の和+アイドル時間の和)となる。よって、補正前のデバイス303の消費電力量は、1[mW]×(5[秒]×10+5[秒]×8)=90[mW秒]である。一方、補正後のデバイス303の消費電力量は、1[mW]×(5[秒]×7+5[秒]×5)=60[mW秒]となり、携帯端末装置200は、消費電力量を30[mW秒]削減できる。
(予定開始時刻の補正処理)
次に、図15および図16を用いて、OS301でおこなわれる補正対象イベントの予定開始時刻の補正をおこなう予定開始時刻補正処理について説明する。図15、図16にて起動されるプロセスは、アプリ310に含まれるアプリによるプロセス1およびプロセス2であることを想定する。なお、プロセス1、プロセス2以外に起動される他のプロセスがあれば、他のプロセスもプロセス1またはプロセス2と同様に以下に説明する処理をおこなう。一方、起動されるプロセスの中には、以下に説明する処理をおこなわないプロセスがあってもよい。
図15は、予定開始時刻補正処理を示すフローチャート(その1)である。OS301は、携帯端末装置200のブート終了後等に、OS301の動作を開始する(ステップS1501)。動作開始後、ユーザからの指示等により、OS301は、プロセスの起動要求を実行する(ステップS1502)。起動要求を受けたプロセス1は、動作を開始する(ステップS1503)。起動要求を受けたプロセス2も同様に、動作を開始する(ステップS1504)。なお、動作を開始後、プロセス1と、プロセス2は、ポーリング補正をおこなうイベント発生処理を開始する。
OS301は、電力制御ライブラリ332からBLを取得する(ステップS1505)。また、動作を開始したプロセス1は、プロセス1のPAL、プロセス1の補正前の予定開始時刻INPをOS301に通知する(ステップS1506)。プロセス2も同様に、プロセス2のPAL、プロセス2の補正前の予定開始時刻INPをOS301に通知する(ステップS1507)。
OS301は、イベント管理API322によって、イベントリスト302のイベントを検出し、また、ポーリング間隔に基づいて、イベントリスト302に未登録のイベントを検出する。そして、OS301は、検出された複数のイベントの中から、目標イベントを決定する(ステップS1508)。
以下、OS301は、ステップS1506の処理による通知とステップS1507の処理による通知のうち、ステップS1506の処理による通知を先に受け付けたと想定する。目標イベントの取得後、OS301は、先に受け付けられたプロセス1によるイベントの補正後の予定開始時刻FPTを算出する(ステップS1509)。補正の計算式は、例えば、上述した補正の計算式の例1や補正の計算式の例2や補正の計算式の例3である。
なお、ステップS1509の処理については、ステップS1507によるプロセス2の通知の方が早い場合、OS301は、プロセス2の各値を代入してプロセス2によるイベントの補正後の予定開始時刻FPTを算出する。また、ステップS1506による通知より遅い通知となったステップS1507に関するプロセス2の補正後の予定開始時刻FPTの算出は、再びステップS1509が実行される際におこなわれる。また、現在時刻CTの取得については、ステップS1509の実行前に、OS301がタイマAPI323を呼び出して取得する。
算出後、OS301は、算出された補正後の予定開始時刻FPTをプロセスへ通知する(ステップS1510)。なお、通知先となるプロセスに関して、先に受け付けられたプロセスがプロセス1であればプロセス1へ、先に受け付けられたプロセスがプロセス2であればプロセス2へ通知する。
図16は、予定開始時刻補正処理を示すフローチャート(その2)である。以下、OS301がステップS1510にてプロセス1に通知した場合を想定する。プロセス1は、補正後の予定開始時刻FPTを取得する(ステップS1601)。続けて、プロセス1は、プロセス1固有の動作により、イベントの実行要求を発生させる(ステップS1602)。なお、イベントは、プロセス1が呼び出したイベント管理API322により、イベントリスト302に登録される。登録後、プロセス1は、イベント実行時までスタンバイする(ステップS1603)。なお、ステップS1603にて、プロセス1は、プロセス1を実行する以外に実行可能な他の処理が存在すれば、スタンバイせずに他の処理を実行してもよい。
OS301は、イベント管理API322によって、新たなイベントが登録されたことが検出されたかを判断する(ステップS1607)。検出された場合(ステップS1607:Yes)、OS301は、登録されたイベントを補正対象イベントとし、イベントの予定開始時刻をFPTに補正する(ステップS1608)。
なお、ステップS1601の処理にて、FPTを取得したプロセス1は、自身が持つ制約情報に基づいて、FPTを更新してもよい。例えば、現在時刻CT=12:40:25において、FPT=12:41:05で通知されたが、プロセス1の制約情報として、ポーリング間隔が45秒以上と定められていることを想定する。このとき、プロセス1は、FPT’=12:41:10として、ステップS1602の処理時にFPT’をOS301に通知する。続けて、ステップS1608の処理にて、OS301は、イベントの予定開始時刻をFPTに補正する。
ステップS1608の終了後、または、新たなイベントが検出されていない場合(ステップS1607:No)、OS301は、イベントリスト302に登録されたイベントのうち、タイマAPI323により現在時刻がイベントの予定開始時刻以後となったかを判断する(ステップS1609)。予定開始時刻以後である場合(ステップS1609:Yes)、OS301は、イベントが予定開始時刻以後になったことをイベントに対応するプロセスに通知する(ステップS1610)。プロセスに通知後、または、予定開始時刻以後となったイベントがない場合(ステップS1609:No)、OS301は、ステップS1505の処理に移行する。
予定開始時刻以後となったことの通知を受けたプロセス1は、イベントを実行する(ステップS1611)。なお、通知を受けたプロセス1は、スタンバイせずに他の処理を実行している場合も有り得る。例えば、イベントの処理より優先度が高い他の処理が存在する場合である。この場合、プロセス1は、他の処理が完了してからイベントの処理をおこなってもよい。
イベントを実行後、プロセス1は、イベントが発生するループが終了するかを判断する(ステップS1612)。イベントが発生するループが継続する場合(ステップS1612:No)、プロセス1は、ステップS1506の処理に移行する。イベントが発生するループが終了する場合(ステップS1612:Yes)、プロセス1は、ポーリング補正をおこなうイベント発生処理を終了する。
なお、ステップS1506の処理にて、PALは、プロセス固有の値であり、かつプロセス実行中に変更されない。したがって、ステップS1506の処理に移行したプロセス1は、2度目以降のステップS1506の処理では、次のイベントの補正前の予定開始時刻であるINPのみをOS301に送信してもよい。
なお、OS301がステップS1510にてプロセス2に通知した場合、プロセス1の代わりにプロセス2が処理を実行する。具体的には、プロセス2は、補正後の予定開始時刻FPTを取得する(ステップS1604)。続けて、プロセス2は、プロセス2固有の動作により、イベントの実行要求を発生させる(ステップS1605)。なお、イベントは、プロセス2が呼び出したイベント管理API322により、イベントリスト302に登録される。登録後、プロセス2は、イベント実行時までスタンバイする(ステップS1606)。なお、ステップS1606にて、プロセス2はプロセス1と同様に、イベントを実行する以外におこなう他の処理が存在すれば、スタンバイせずに他の処理を実行してもよい。
続けて、予定開始時刻以後となったことの通知を受けたプロセス2は、イベントを実行し(ステップS1613)、イベントが発生するループが終了するかを判断する(ステップS1614)。イベントが発生するループが継続する場合(ステップS1614:No)、プロセス2は、ステップS1507の処理に移行する。イベントが発生するループが終了する場合(ステップS1614:Yes)、プロセス2は、ポーリング補正をおこなうイベント発生処理を終了する。
これにより、携帯端末装置200は、複数のイベントの予定開始時刻を近づけて、複数のイベントによるデバイス303の実行時間を纏めることができ、デバイス303の消費電力を削減することができる。
(実施例2)
次に、実施例2について説明する。実施例1では、デバイス303が同時実行可能である場合の予定開始時刻の補正について説明したが、実施例2では、デバイス303が同時実行不可能である場合の予定開始時刻の補正について説明する。
図17〜図22は、実施例2にかかる補正対象イベントの予定開始時刻の補正の内容を示す説明図である。携帯端末装置200では、イベントの予定開始時刻をアプリ310が独自に設定するのではなく、アプリ310から提供された値に基づいて、OS301が最適な予定開始時刻に補正する。また、アプリ310が、OS301によって算出された予定開始時刻に基づいて、イベントの予定開始時刻を補正してもよい。
(補正の計算式の例4)
ここで、実施例2における予定開始時刻の補正の計算式の例を示す。まず、イベント管理API322は、(1)式に従って補正対象イベントの補正前の予定開始時刻を算出する。そして、イベント管理API322は、補正対象イベントの予定開始時刻を、下記(5)式に従って補正する。
FPT = INP + (PT(n)−INP−補正対象イベントのTASK)×BL×(1/PAL)…(5)
ただし、TASKは、イベントの処理時間である。また、イベント管理API322は、制約情報に基づいて、補正対象イベントの予定開始時刻を補正してもよい。例えば、ブラウザアプリ311のポーリング間隔の仕様として、特定のWebページに対する再読み込み間隔の最小値が設定されている場合を想定する。この場合、予定開始時刻の下限値を現在時刻CTに再読み込み間隔の最小値を加算した値としておき、(5)式の算出結果が下限値より小さい場合、イベント管理API322は、補正後の予定開始時刻として(5)式の算出結果を採用せず下限値を採用してもよい。
このように、補正対象イベントの予定開始時刻と目標イベントの予定開始時刻との差分(PT(n)−INP)に基づいて、補正後の補正対象イベントの予定開始時刻を算出する。なお、イベントが1つしか存在しない場合、イベント管理API322は、PT(n)が存在しないため補正を実行しない。したがって、該当のイベントの予定開始時刻は、CT+Tに等しく、ポーリング間隔はアプリが仕様等から決定したポーリング間隔Tに等しくなる。
(補正の計算式の例5)
また、イベント管理API322は、補正対象イベントの予定開始時刻を、INP<PT(n)の場合には(5)式に従って補正し、INP>PT(n)の場合には下記(6)式に従って補正するようにしてもよい。また、INP=PT(n)の場合には、補正しないようにしてもよい。
FPT = INP + (PT(n)−INP+目標イベントのTASK)×BL×(1/PAL)…(6)
(補正の計算式の例6)
また、イベント管理API322は、補正対象イベントの予定開始時刻を、補正対象イベントと目標イベントとの間隔が所定の閾値より短い場合にのみ、補正をおこなってもよい。(7)式は、補正対象イベントと目標イベントとの間隔が所定の閾値より短いか、所定の閾値より長いか、を判定する判定式の例である。
|FPT−PT(n)+補正対象イベントのTASK| < Th×BL×(1/PAL)…(7)
ただし、Thは定数である。ここで、(7)式の条件を満たす場合は、(5)式のFPTを補正対象イベントの補正後の予定開始時刻とする。一方で、(7)式の条件を満たさない場合は、(1)式のINPを補正対象イベントの補正後の予定開始時刻とする。
(補正の計算式の例7)
また、イベント管理API322は、補正対象イベントの予定開始時刻を、補正対象イベントと目標イベントとの間隔が所定の閾値より長い場合にのみ、補正をおこなってもよい。ここで、(7)式の条件を満たす場合は、(1)式のINPを補正対象イベントの補正後の予定開始時刻とする。一方で、(7)式の条件を満たさない場合は、(5)式のFPTを補正対象イベントの補正後の予定開始時刻とする。
以下では、図17〜図23を用いて、上述した補正の計算式の例5を用いた場合の補正対象イベントの予定開始時刻の補正の例を示す。以下、説明の簡略化のため、図17〜図23における時刻の記載にて日時の指定がない場合は、2010年4月3日内の時刻とする。また、BLは「1」とし、PALは「1」とする。なお、初めは図7に示した状態であるとする。また、各イベントのTASKは、5秒とする。
図17は、プロセス2にて、イベントE21の実行を開始した時点を現在時刻CTとして、プロセス2が発生させた新たなイベントE22の予定開始時刻を補正する例を示している。
プロセス2は、イベントE22を時刻t21=12:40:10(現在時刻CT)に実行開始し、時刻t22=12:40:15にて終了する。時刻t21にて、ポーリング間隔T2経過後の時刻t23=12:40:50に実行開始されるイベントE22がプロセス2から発生した場合、タイミング制御ライブラリ331は、イベントE22を補正対象イベントとして処理を開始する。
ここで、時刻t21の時点にて、イベントリスト302には、イベントE11,E31が存在するとする。また、タイミング制御ライブラリ331は、イベントE11の予定開始時刻およびポーリング間隔T1より、イベントリスト302には未登録であるがイベントE12,E13の予定開始時刻を算出しておく。同様に、タイミング制御ライブラリ331は、イベントE31の予定開始時刻およびポーリング間隔T3より、イベントリスト302には未登録であるがイベントE32,E33の予定開始時刻を算出しておく。
ここで、タイミング制御ライブラリ331は、イベントE11〜E13,E31〜E33のイベントのうち、各々のイベントの予定開始時刻とイベントE22の予定開始時刻との間隔が最も短いイベントを目標イベントに決定する。ここでは、イベントE32が目標イベントとなる。
また、イベント管理API322は、t23<t33であるため、(5)式を用いて、イベントE22の補正後の予定開始時刻FPT(t23’)を算出する。イベントE22のTASKは、イベントE21の処理時間を計測して求めてもよいし、現在時刻CT以前にプロセス2により実行されたイベントの処理時間から推定して求めてもよい。
即ち、FPT=(時刻t23)+(時刻t33−時刻t23−イベントE22のTASK)×1×1=12:40:50+(10)=12:41:00となる。
算出した結果、イベントE22の予定開始時刻は、時刻t23=12:40:50から、時刻t23’=12:41:00に補正される。補正により、イベントE22によるデバイス303の実行時間のアイドル時間部分とイベントE32によるデバイス303の実行時間のアクティブ時間部分とが重なり、デバイス303の実行時間を纏めることができる。
図18は、プロセス3にて、イベントE31の実行を開始した時点を現在時刻CTとして、プロセス3が発生させた新たなイベントE32の予定開始時刻を補正する例を示している。
プロセス3は、イベントE31を時刻t31=12:40:15(現在時刻CT)に実行開始し、時刻t32=12:40:20にて終了する。時刻t31にて、ポーリング間隔T3経過後の時刻t33=12:41:05に実行開始されるイベントE32がプロセス3から発生した場合、タイミング制御ライブラリ331は、イベントE32を補正対象イベントとして処理を開始する。
ここで、時刻t31の時点にて、イベントリスト302には、イベントE11,E22が存在するとする。また、タイミング制御ライブラリ331は、イベントE11の予定開始時刻およびポーリング間隔T1より、イベントリスト302には未登録であるがイベントE12,E13の予定開始時刻を算出しておく。同様に、タイミング制御ライブラリ331は、イベントE22の予定開始時刻およびポーリング間隔T2より、イベントリスト302には未登録であるがイベントE23,E24の予定開始時刻を算出しておく。
ここで、タイミング制御ライブラリ331は、イベントE11〜E13,E22〜E24のイベントのうち、各々のイベントの予定開始時刻とイベントE32の予定開始時刻との間隔が最も短いイベントを目標イベントに決定する。ここでは、イベントE22が目標イベントとなる。ここで、イベント管理API322は、INP=PT(n)であるため、補正をおこなわない。
図19は、プロセス1にて、イベントE11の実行を開始した時点を現在時刻CTとして、プロセス1が発生させた新たなイベントE12の予定開始時刻を補正する例を示している。
プロセス1は、イベントE11を時刻t11=12:40:25(現在時刻CT)に実行開始し、時刻t12=12:40:30にて終了する。時刻t11にて、ポーリング間隔T1経過後の時刻t13=12:41:20に実行開始されるイベントE12がプロセス1から発生した場合、タイミング制御ライブラリ331は、イベントE12を補正対象イベントとして処理を開始する。
ここで、時刻t11の時点にて、イベントリスト302には、イベントE22,イベントE32が存在するとする。また、タイミング制御ライブラリ331は、イベントE22の予定開始時刻およびポーリング間隔T2より、イベントリスト302には未登録であるがイベントE23,E24の予定開始時刻を算出しておく。同様に、タイミング制御ライブラリ331は、イベントE32の予定開始時刻およびポーリング間隔T3より、イベントリスト302には未登録であるがイベントE33の予定開始時刻を算出しておく。
ここで、タイミング制御ライブラリ331は、イベントE22〜E24,E32,E33のイベントのうち、各々のイベントの予定開始時刻とイベントE12の予定開始時刻との間隔が最も短いイベントを目標イベントに決定する。ここでは、イベントE32が目標イベントとなる。
また、イベント管理API322は、t13>t33であるため、(6)式を用いて、イベントE12の補正後の予定開始時刻FPT(t13’)を算出する。イベントE32のTASKは、現在時刻CT以前にプロセス3により実行されたイベント(例えば、イベントE31)の処理時間から推定して求める。
即ち、FPT=(時刻t13)+(時刻t33−時刻t13+イベントE32のTASK)×1×1=12:41:20+(−10)=12:41:10となる。
算出した結果、イベントE12の予定開始時刻は、時刻t13=12:41:20から、時刻t13’=12:41:10に補正される。補正により、イベントE12によるデバイス303の実行時間のアクティブ時間部分とイベントE22によるデバイス303の実行時間のアイドル時間部分とが重なり、デバイス303の実行時間を纏めることができる。
図20は、プロセス2にて、イベントE22の実行を開始した時点を現在時刻CTとして、プロセス2が発生させた新たなイベントE23の予定開始時刻を補正する例を示している。
プロセス2は、イベントE22を時刻t23’=12:41:00(現在時刻CT)に実行開始し、時刻t24’=12:41:05にて終了する。時刻t23’にて、ポーリング間隔T2経過後の時刻t25=12:41:40に実行開始されるイベントE23がプロセス2から発生した場合、タイミング制御ライブラリ331は、イベントE23を補正対象イベントとして処理を開始する。
ここで、時刻t23’の時点にて、イベントリスト302には、イベントE12,E32が存在するとする。また、タイミング制御ライブラリ331は、イベントE12の予定開始時刻およびポーリング間隔T1より、イベントリスト302には未登録であるがイベントE13の予定開始時刻を算出しておく。同様に、タイミング制御ライブラリ331は、イベントE32の予定開始時刻およびポーリング間隔T3より、イベントリスト302には未登録であるがイベントE33の予定開始時刻を算出しておく。
ここで、タイミング制御ライブラリ331は、イベントE12,E13,E32,E33のイベントのうち、各々のイベントの予定開始時刻とイベントE23の予定開始時刻との間隔が最も短いイベントを目標イベントに決定する。ここでは、イベントE33が目標イベントとなる。
また、イベント管理API322は、t25<t35であるため、(5)式を用いて、イベントE23の補正後の予定開始時刻FPT(t25’)を算出する。イベントE23のTASKは、上述したイベントE22のTASKと同様にして求められる。
即ち、FPT=(時刻t25)+(時刻t35−時刻t25−イベントE23のTASK)×1×1=12:41:40+(10)=12:41:50となる。
算出した結果、イベントE23の予定開始時刻は、時刻t25=12:41:40から、時刻t25’=12:41:50に補正される。補正により、イベントE23によるデバイス303の実行時間のアイドル時間部分とイベントE33によるデバイス303の実行時間のアクティブ時間部分とが重なり、デバイス303の実行時間を纏めることができる。
図21は、プロセス3にて、イベントE32の実行を開始した時点を現在時刻CTとして、プロセス3が発生させた新たなイベントE33の予定開始時刻を補正する例を示している。
プロセス3は、イベントE32を時刻t33=12:41:05(現在時刻CT)に実行開始し、時刻t34=12:41:10にて終了する。時刻t33にて、ポーリング間隔T3経過後の時刻t35=12:41:55に実行開始されるイベントE33がプロセス3から発生した場合、タイミング制御ライブラリ331は、イベントE33を補正対象イベントとして処理を開始する。
ここで、時刻t33の時点にて、イベントリスト302には、イベントE12,イベントE23が存在するとする。また、タイミング制御ライブラリ331は、イベントE12の予定開始時刻およびポーリング間隔T1より、イベントリスト302には未登録であるがイベントE13の予定開始時刻を算出しておく。同様に、タイミング制御ライブラリ331は、イベントE23の予定開始時刻およびポーリング間隔T2より、イベントリスト302には未登録であるがイベントE24の予定開始時刻を算出しておく。
ここで、タイミング制御ライブラリ331は、イベントE12,E13,E23,E24のイベントのうち、各々のイベントの予定開始時刻とイベントE33の予定開始時刻との間隔が最も短いイベントを目標イベントに決定する。ここでは、イベントE23が目標イベントとなる。
また、イベント管理API322は、t35>t25であるため、(6)式を用いて、イベントE12の補正後の予定開始時刻FPT(t35’)を算出する。イベントE33のTASKは、上述したイベントE32のTASKと同様にして求められる。
即ち、FPT=(時刻t35)+(時刻t25’−時刻t35+イベントE33のTASK)×1×1=12:41:55+(0)=12:41:55となる。算出した結果、イベントE33の予定開始時刻は、時刻t35=12:41:55のままである。
図22は、プロセス1にて、イベントE12の実行を開始した時点を現在時刻CTとして、プロセス1が発生させた新たなイベントE13の予定開始時刻を補正する例を示している。
プロセス1は、イベントE12を時刻t13’=12:41:10(現在時刻CT)に実行開始し、時刻t14’=12:41:15にて終了する。時刻t13’にて、ポーリング間隔T1経過後の時刻t15=12:42:05に実行開始されるイベントE13がプロセス1から発生した場合、タイミング制御ライブラリ331は、イベントE13を補正対象イベントとして処理を開始する。
ここで、時刻t13’の時点にて、イベントリスト302には、イベントE23,E33が存在するとする。また、タイミング制御ライブラリ331は、イベントE23の予定開始時刻およびポーリング間隔T2より、イベントリスト302には未登録であるがイベントE24の予定開始時刻を算出しておく。
ここで、タイミング制御ライブラリ331は、イベントE23,E24,イベントE33のイベントのうち、各々のイベントの予定開始時刻とイベントE13の予定開始時刻との間隔が最も短いイベントを目標イベントに決定する。ここでは、イベントE23が目標イベントとなる。
また、イベント管理API322は、t15>t35であるため、(6)式を用いて、イベントE12の補正後の予定開始時刻FPT(t15’)を算出する。イベントE33のTASKは、上述したイベントE32のTASKと同様にして求められる。
即ち、FPT=(時刻t15’)+(時刻t25’−時刻t15’+イベントE33のTASK)×1×1=12:42:05+(−5)=12:42:00となる。
算出した結果、イベントE13の予定開始時刻は、時刻t15=12:42:05から、時刻t15’=12:42:00に補正される。補正により、イベントE13によるデバイス303の実行時間のアクティブ時間部分とイベントE33によるデバイス303の実行時間のアイドル時間部分とが重なり、デバイス303の実行時間を纏めることができる。
ここでは、携帯端末装置200は、補正対象イベントの予定開始時刻に最も近い時刻に開始されるイベントを目標イベントに決定したが、補正対象イベントの予定開始時刻を含む所定の期間内の任意のイベントを目標イベントに決定してもよい。また、携帯端末装置200は、補正対象イベントの予定開始時刻に近い時刻に開始される順にイベントを整列した場合に、所定の順位以内の任意のイベントを目標イベントに決定してもよい。
また、ここでは、プロセスが発生させた新たなイベントを補正対象イベントとして採用したが、イベントリスト302に存在するイベントを採用してもよい。
また、ここでは、携帯端末装置200は、プロセス1〜3のそれぞれが実行するイベントの予定開始時刻を補正したが、予定開始時刻を補正されないイベントがあってもよい。例えば、プロセス2が実行するイベントは予定開始時刻を補正されないイベントであるとする。そして、プロセス2は、ポーリング間隔T2を常に保って、イベントを実行することにしてもよい。
また、PALとして、補正対象イベントを実行するプロセスの消費電力量の指標を採用したが、目標イベントを実行するプロセスの消費電力量の指標を採用してもよい。
また、補正対象イベントを実行するプロセスの消費電力量の指標と目標イベントを実行するプロセスの消費電力量の指標とのうち、消費電力量の指標の値が大きい方を選択して採用してもよい。消費電力量の指標の値が大きい場合、すなわち消費電力量が小さい方を選択する理由は次のとおりである。
プロセスの消費電力量が小さい場合、それに伴うデバイス303の消費電力量も小さくなる。大きい消費電力量となる実行時間と小さい消費電力量となる実行時間とが重なる場合、小さい消費電力量の分が、消費電力の最大の削減量となる。このように、消費電力の最大の削減量は小さい消費電力量の方に左右されるため、携帯端末装置200は、消費電力量の指標の値が大きい方を選択することで、消費電力量の最大の削減量に基づいて補正対象イベントの予定開始時刻を補正することができる。
このように、携帯端末200は、複数のイベントによるデバイス303の実行時間を纏めて、デバイス303の実行時間を減少させることができ、消費電力を削減することができる。次に、図23を用いて、補正によるデバイス303の実行時間の変化と消費電力の削減について説明する。
図23は、実施例2にかかるデバイス303の補正前の実行時間および補正後の実行時間を示す説明図である。なお、図23において以下の前提条件が存在する。消費電力量の計算にあたって、デバイス303の低電力モードの消費電力を0[mW]と想定する。また、デバイス303は、プロセス1〜3が同時に使用できないデバイス303である。
デバイス303の消費電力量は、デバイス303の消費電力×デバイス303の実行時間となる。なお、デバイス303の消費電力以外に、デバイス303に接続されるI/Fの消費電力も存在するが、図23では、I/Fの消費電力をデバイス303の消費電力に含めて省略する。また、デバイス303は、デバイス303の実行時間が終了すると、低電力モードに遷移する。
ここで、補正によるデバイス303の実行時間の変化と消費電力の削減について説明する。例えば、図23において、符号2301に示す範囲では、携帯端末200は、プロセス2によるデバイス303の実行時間とプロセス3によるデバイス303の実行時間とプロセス1によるデバイス303の実行時間とを纏め、デバイス303の実行時間を減少させた。
符号2301に示す範囲では、補正前は、携帯端末装置200は、プロセス2によるデバイス303の実行時間とプロセス3によるデバイス303の実行時間とプロセス1によるデバイス303の実行時間とについて、デバイス303において電力を消費していた。
一方で、補正後は、携帯端末装置200は、プロセス2およびプロセス3によるデバイス303のアクティブ時間と、プロセス1によるデバイス303の実行時間と、について、デバイス303において電力を消費するだけでよい。即ち、携帯端末装置200は、プロセス2によるデバイス303のアイドル時間と、プロセス3によるデバイス303のアイドル時間と、についてのデバイス303における消費電力を削減することができる。
また、図23の全体での消費電力の削減量について説明する。例えば、デバイス303の単位時間当たりの消費電力を1[mW]とすると、デバイス303の消費電力は、1[mW]×(アクティブ時間の和+アイドル時間の和)となる。よって、補正前のデバイス303の消費電力量は、1[mW]×(5[秒]×10+5[秒]×8)=90[mW秒]である。一方、補正後のデバイス303の消費電力量は、1[mW]×(5[秒]×10+5[秒]×5)=75[mW秒]となり、携帯端末装置200は、消費電力量を15[mW秒]削減できる。
なお、実施例2におけるOS301でおこなわれる予定開始時刻補正処理は、図15および図16に示した処理と同様であり、ステップS1509における補正の計算式を、上述した補正の計算式の例4〜7に置き換えればよい。そのため、詳細な説明を省略する。
以上説明したように、情報処理装置、電力制御方法、および電力制御プログラムによれば、現在時刻以後で実行される複数のイベントの中の目標イベントの予定開始時刻との間隔が短くなるように、補正対象イベントの予定開始時刻を補正する。これにより、情報処理装置は、イベントの処理に伴って実行されるデバイス303の実行時間を纏めて、消費電力を削減することができる。
また、情報処理装置は、複数のイベントの各々のイベントの予定開始時刻と補正対象イベントの予定開始時刻との差分を算出する。そして、情報処理装置は、複数のイベントの中から、算出された差分が最も小さいイベントを目標イベントに決定する。これにより、情報処理装置は、補正対象イベントの予定開始時刻の補正によって生じるポーリング間隔の変化を最小限にすることができる。
また、情報処理装置は、複数のイベントの中から、算出された差分が所定の閾値以下のイベントを目標イベントに決定する。これにより、情報処理装置は、補正対象イベントの予定開始時刻と間隔が長い時刻に開始されるイベントを目標イベントから除外できる。このような場合は、消費電力の削減が期待できないため、補正をおこなわないようにできる。
また、情報処理装置は、複数のイベントの中から、算出された差分が所定の閾値以上のイベントを目標イベントに決定する。これにより、情報処理装置は、補正対象イベントの予定開始時刻と間隔が短い時刻に開始されるイベントを目標イベントから除外できる。このため、情報処理装置は、目標イベントとなるイベントが補正対象イベントの近傍にしか存在しない場合に、補正をおこなわないようにできる。
また、情報処理装置は、算出された差分群の昇順に複数のイベントを並べた場合の所定の順位以内のイベントのいずれかを目標イベントに決定する。これにより、情報処理装置は、予めイベントごとに所定の閾値を定めておかなくても目標イベントを決定できる。
また、情報処理装置は、補正対象イベントの予定開始時刻を目標イベントの予定開始時刻に補正する。これにより、デバイス303が複数のプロセスによって同時に使用できる場合は、補正対象イベントと目標イベントとの処理がデバイス303を同時に使用するようになる。そのため、情報処理装置は、補正対象イベントおよび目標イベントによるデバイス303の実行時間の減少量を最大にすることができ、省電力化を図ることができる。
また、デバイス303が複数のプロセスによって同時に使用できない場合は、補正対象イベントと目標イベントとの処理のうち一方のイベントがデバイス303を使用し、他方のイベントは一方のイベントの実行が終了するまで待つようになる。そのため、情報処理装置は、一方のイベントにより使用されたデバイス303がアイドル時間に移行する前に、他方のイベントを開始させることがでる。そして、情報処理装置は、デバイス303の実行時間を減少させ、省電力化を図ることができる。
また、情報処理装置は、補正対象イベントの予定開始時刻を目標イベントの予定終了時刻に補正する。これにより、情報処理装置は、目標イベントにより使用されたデバイス303がアイドル時間に移行する前に、補正対象イベントを開始させることができる。そして、情報処理装置は、デバイス303の実行時間を減少させ、省電力化を図ることができる。
また、情報処理装置は、補正対象イベントの予定開始時刻を補正することにより、補正対象イベントの予定終了時刻と目標イベントの予定開始時刻とを一致させる。これにより、情報処理装置は、補正対象イベントにより使用されたデバイス303がアイドル時間に移行する前に、目標イベントを開始させることができる。そして、情報処理装置は、デバイス303の実行時間を減少させ、省電力化を図ることができる。
また、情報処理装置は、補正対象イベントの制約情報を順守する範囲内で、補正対象イベントの予定開始時刻を補正する。これにより、補正対象イベントを実行するアプリの仕様に反しない範囲でイベントを実行するため、アプリがユーザまたはアプリ制作者の予想しない動作をすることを防止できる。
制約情報を順守する範囲内での補正では、情報処理装置は、補正対象イベントによるデバイス303の実行時間と目標イベントによるデバイス303の実行時間とを重ねることができない場合がある。この場合、情報処理装置は、補正対象イベントを実行したプロセスが、補正対象イベントの実行以降に実行するイベントを新たな補正対象イベントとして予定開始時刻を段階的に補正していく。これにより、最終的には、情報処理装置は、補正対象イベントによるデバイス303の実行時間を目標イベントによるデバイス303の実行時間に重ねて、消費電力を削減することができる。
また、情報処理装置は、算出された差分と補正対象イベントと目標イベントのうちいずれか一方のイベントの消費電力量とに基づいて、補正対象イベントの予定開始時刻を補正してもよい。具体的には、情報処理装置は、いずれかのイベントの消費電力量が大きいほど、補正対象イベントと目標イベントの予定開始時刻の間隔が短くなるように補正する。これにより、情報処理装置は、消費電力に大きく影響を与えるアプリの消費電力を削減することができる。また、イベントの消費電力量が小さい場合、補正前のポーリング間隔を優先する。
また、情報処理装置は、算出された差分と自装置の有する電力の残量とに基づいて、補正対象イベントの予定開始時刻を補正してもよい。具体的には、情報処理装置は、電力の残量が少ないほど、補正対象イベントの予定開始時刻と目標イベントの予定開始時刻の間隔が短くなるように、補正対象イベントの予定開始時刻を補正する。これにより、情報処理装置は、電力の残量が少ない場合、電力の消費を抑えることができる。また、電力の残量が多い場合、補正前のポーリング間隔を優先する。
なお、本実施の形態で説明した電力制御方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本電力制御プログラムは、ハードディスク、フレキシブルディスク、CD−ROM、MO、DVD等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また本電力制御プログラムは、インターネット等のネットワークを介して配布してもよい。
上述した実施の形態に関し、さらに以下の付記を開示する。
(付記1)現在時刻以後に実行される補正対象イベントの予定開始時刻を検出する第1の検出手段と、
前記第1の検出手段によって検出された前記補正対象イベントとは異なる処理内容の前記現在時刻以後に実行される複数のイベントの各々のイベントの予定開始時刻を検出する第2の検出手段と、
前記第1の検出手段によって検出された前記補正対象イベントの予定開始時刻と、前記第2の検出手段によって検出された前記複数のイベントの各々のイベントの予定開始時刻と、の差分を算出する算出手段と、
前記算出手段によって算出された差分群に基づいて、前記複数のイベントの中から、前記補正対象イベントに対する目標イベントを決定する決定手段と、
前記補正対象イベントの予定開始時刻と前記決定手段によって決定された前記目標イベントの予定開始時刻との間隔が短くなるように、前記補正対象イベントの予定開始時刻を補正する補正手段と、
を備えることを特徴とする情報処理装置。
(付記2)前記決定手段は、
前記複数のイベントのうち前記差分が最も小さいイベントを、前記目標イベントに決定することを特徴とする付記1に記載の情報処理装置。
(付記3)前記決定手段は、
前記複数のイベントのうち前記差分が所定の閾値以下のイベントを、前記目標イベントに決定することを特徴とする付記1に記載の情報処理装置。
(付記4)前記決定手段は、
前記複数のイベントのうち前記差分が所定の閾値以上のイベントを、前記目標イベントに決定することを特徴とする付記1に記載の情報処理装置。
(付記5)前記決定手段は、
前記複数のイベントを前記差分の昇順に並べた場合の所定の順位以内のイベントを、前記目標イベントに決定することを特徴とする付記1に記載の情報処理装置。
(付記6)前記補正手段は、
前記目標イベントによるデバイスの実行時間と前記補正対象イベントによる前記デバイスの実行時間とが重なるように、前記補正対象イベントの予定開始時刻を補正することを特徴とする付記1〜5のいずれか一つに記載の情報処理装置。
(付記7)前記補正手段は、
前記補正対象イベントまたは前記目標イベントの消費電力量に基づいて、前記補正対象イベントの予定開始時刻を補正することを特徴とする付記1〜6のいずれか一つに記載の情報処理装置。
(付記8)前記補正手段は、
自装置の有する電力の残量に基づいて、前記補正対象イベントの予定開始時刻を補正することを特徴とする付記1〜7のいずれか一つに記載の情報処理装置。
(付記9)前記補正手段は、
前記補正対象イベントの制約情報を順守する範囲内で、前記補正対象イベントの予定開始時刻を補正することを特徴とする付記1〜8のいずれか一つに記載の情報処理装置。
(付記10)前記補正手段は、
前記補正対象イベントの予定開始時刻を前記目標イベントの予定開始時刻に補正することを特徴とする付記6〜9のいずれか一つに記載の情報処理装置。
(付記11)前記補正手段は、
前記目標イベントの予定開始時刻と前記目標イベントの予測処理時間とに基づいて、前記補正対象イベントの予定開始時刻を前記目標イベントの予定開始時刻に前記予測処理時間を加算した時刻に補正することを特徴とする付記6〜9のいずれか一つに記載の情報処理装置。
(付記12)前記補正手段は、
前記目標イベントの予定開始時刻と前記補正対象イベントの予測処理時間とに基づいて、前記補正対象イベントの予定開始時刻を前記目標イベントの予定開始時刻から前記予測処理時間を減算した時刻に補正することを特徴とする付記6〜9のいずれか一つに記載の情報処理装置。
(付記13)前記補正手段は、
前記決定手段によって目標イベントが決定されなかった場合、補正をおこなわないことを特徴とする付記1〜12のいずれか一つに記載の情報処理装置。
(付記14)コンピュータが、
現在時刻以後に実行される補正対象イベントの予定開始時刻を検出する第1の検出工程と、
前記第1の検出工程によって検出された前記補正対象イベントとは異なる処理内容の前記現在時刻以後に実行される複数のイベントの各々のイベントの予定開始時刻を検出する第2の検出工程と、
前記第1の検出工程によって検出された前記補正対象イベントの予定開始時刻と、前記第2の検出工程によって検出された前記複数のイベントの各々のイベントの予定開始時刻と、の差分を算出する算出工程と、
前記算出工程によって算出された差分群に基づいて、前記複数のイベントの中から、前記補正対象イベントに対する目標イベントを決定する決定工程と、
前記補正対象イベントの予定開始時刻と前記決定工程によって決定された前記目標イベントの予定開始時刻との間隔が短くなるように、前記補正対象イベントの予定開始時刻を補正する補正工程と、
を実行することを特徴とする電力制御方法。
(付記15)現在時刻以後に実行される補正対象イベントの予定開始時刻を検出する第1の検出工程と、
前記第1の検出工程によって検出された前記補正対象イベントとは異なる処理内容の前記現在時刻以後に実行される複数のイベントの各々のイベントの予定開始時刻を検出する第2の検出工程と、
前記第1の検出工程によって検出された前記補正対象イベントの予定開始時刻と、前記第2の検出工程によって検出された前記複数のイベントの各々のイベントの予定開始時刻と、の差分を算出する算出工程と、
前記算出工程によって算出された差分群に基づいて、前記複数のイベントの中から、前記補正対象イベントに対する目標イベントを決定する決定工程と、
前記補正対象イベントの予定開始時刻と前記決定工程によって決定された前記目標イベントの予定開始時刻との間隔が短くなるように、前記補正対象イベントの予定開始時刻を補正する補正工程と、
をコンピュータに実行させることを特徴とする電力制御プログラム。