(57)【要約】 【課題】省電力化を適切に行うことが可能な制御装置、情報処理システムおよびプログラムを提供する。【解決手段】実施形態の制御装置は、設定部を備える。設定部は、電力を個別に制御可能な複数の要素を含むシステムが、電力が供給される要素の数が所定数に制限されて動作を停止するスリープ状態から復帰する要因が発生した場合は、スリープ状態から復帰した後の処理に必要な時間を示すシステム処理時間に応じてシステムの動作状態を示すモードを設定する。【選択図】図７
2015038780.tif 000002
【特許請求の範囲】
【請求項１】
電力を個別に制御可能な複数の要素を含むシステムが、電力が供給される前記要素の数が所定数に制限されて動作を停止するスリープ状態から復帰する要因が発生した場合は、前記スリープ状態から復帰した後の処理に必要な時間を示すシステム処理時間に応じて前記システムの動作状態を示すモードを設定する設定部を備える、
制御装置。
【請求項２】
電力を個別に制御可能な複数の要素を含むシステムが、電力が供給される前記要素の数が所定数に制限されて動作を停止するスリープ状態から復帰する要因が発生した場合は、前記スリープ状態から復帰した後の処理に必要な時間を示すシステム処理時間に応じて前記システムの動作状態を示すモードを設定する、
制御装置。
【請求項３】
スリープ状態から復帰する要因が発生した場合は、前記スリープ状態から復帰した後の処理に必要な時間を示すシステム処理時間に応じてシステムの動作状態を示すモードを設定する、
制御装置。
【請求項４】
電力を個別に制御可能な複数の要素を含むシステムが、電力が供給される前記要素の数が所定数に制限されて動作を停止するスリープ状態から復帰する要因が発生した場合は、前記スリープ状態から復帰した後の処理に必要な時間を示すシステム処理時間に応じたモードで前記システムを動作させる、
制御装置。
【請求項５】
スリープ状態から復帰する要因が発生した場合は、前記スリープ状態から復帰した後の処理に必要な時間を示すシステム処理時間に応じたモードでシステムを動作させる、
制御装置。
【請求項６】
電力を個別に制御可能な複数の要素を含む情報処理システムであって、
前記情報処理システムが、電力が供給される前記要素の数が所定数に制限されて動作を停止するスリープ状態から復帰する要因が発生した場合は、前記スリープ状態から復帰した後の処理に必要な時間に応じたモードで動作する、
情報処理システム。
【請求項７】
スリープ状態から復帰する要因が発生した場合は、前記スリープ状態から復帰した後の処理に必要な時間に応じたモードで動作する、
情報処理システム。
【請求項８】
コンピュータに、
電力を個別に制御可能な複数の要素を含むシステムが、電力が供給される前記要素の数が所定数に制限されて動作を停止するスリープ状態から復帰する要因が発生した場合は、前記スリープ状態から復帰した後の処理に必要な時間を示すシステム処理時間に応じて前記システムの動作状態を示すモードを設定するステップを実行させるためのプログラム。
【請求項９】
コンピュータに、
電力を個別に制御可能な複数の要素を含むシステムが、電力が供給される前記要素の数が所定数に制限されて動作を停止するスリープ状態から復帰する要因が発生した場合は、前記スリープ状態から復帰した後の処理に必要な時間を示すシステム処理時間に応じて前記システムの動作状態を示すモードを設定するステップを実行させるためのプログラム。
【請求項１０】
コンピュータに、
スリープ状態から復帰する要因が発生した場合は、前記スリープ状態から復帰した後の処理に必要な時間を示すシステム処理時間に応じてシステムの動作状態を示すモードを設定するステップを実行させるためのプログラム。
【請求項１１】
コンピュータに、
電力を個別に制御可能な複数の要素を含むシステムが、電力が供給される前記要素の数が所定数に制限されて動作を停止するスリープ状態から復帰する要因が発生した場合は、前記スリープ状態から復帰した後の処理に必要な時間を示すシステム処理時間に応じたモードで前記システムを動作させるステップを実行させるためのプログラム。
【請求項１２】
コンピュータに、
スリープ状態から復帰する要因が発生した場合は、前記スリープ状態から復帰した後の処理に必要な時間を示すシステム処理時間に応じたモードでシステムを動作させるステップを実行させるためのプログラム。
【請求項１３】
電力を個別に制御可能な複数の要素を含む情報処理システムに搭載されたコンピュータに、
前記情報処理システムが、電力が供給される前記要素の数が所定数に制限されて動作を停止するスリープ状態から復帰する要因が発生した場合は、前記スリープ状態から復帰した後の処理に必要な時間に応じたモードで前記情報処理システムが動作するステップを実行させるためのプログラム。
【請求項１４】
情報処理システムに搭載されたコンピュータに、
スリープ状態から復帰する要因が発生した場合は、前記スリープ状態から復帰した後の処理に必要な時間に応じたモードで前記情報処理システムが動作するステップを実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、制御装置、情報処理システムおよびプログラムに関する。
【背景技術】
【０００２】
従来、マイクロプロセッサなどが搭載されたシステムの消費電力を低減するための様々な技術が知られている。例えばシステムの動作が一時的に停止するスリープ状態（節電状態）の場合は、クロックが低速に設定される一方、スリープ状態から復帰して処理を実行する場合は、クロックが高速に設定される技術が知られている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特許第３７５８４７７号明細書
【特許文献２】特開２００８−５３３６号公報
【特許文献３】特開２０１１−６５７０５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、従来の技術では、スリープ状態から復帰した後の処理に必要な時間を全く考慮せずに復帰後のシステムの動作状態が設定されるので、システムの省電力化を適切に行うことができない場合がある。例えばスリープ状態から復帰した後の処理に要する時間が短い場合は、システムが必要な電力量は小さいにもかかわらず、クロックが高速に設定されることで無駄な消費電力が発生してしまう。これにより、省電力化を適切に行うことができない。
【０００５】
本発明が解決しようとする課題は、省電力化を適切に行うことが可能な制御装置、情報処理システムおよびプログラムを提供することである。
【課題を解決するための手段】
【０００６】
実施形態の制御装置は、設定部を備える。設定部は、電力を個別に制御可能な複数の要素を含むシステムが、電力が供給される要素の数が所定数に制限されて動作を停止するスリープ状態から復帰する要因が発生した場合は、スリープ状態から復帰した後の処理に必要な時間を示すシステム処理時間に応じてシステムの動作状態を示すモードを設定する。
【０００７】
実施形態のプログラムは、コンピュータに、電力を個別に制御可能な複数の要素を含むシステムが、電力が供給される前記要素の数が所定数に制限されて動作を停止するスリープ状態から復帰する要因が発生した場合は、スリープ状態から復帰した後の処理に必要な時間を示すシステム処理時間に応じてシステムの動作状態を示すモードを設定するステップを実行させるためのプログラムである。
【０００８】
実施形態の情報処理システムは、電力を個別に制御可能な複数の要素を含むシステムであって、情報処理システムが、電力が供給される前記要素の数が所定数に制限されて動作を停止するスリープ状態から復帰する要因が発生した場合は、スリープ状態から復帰した後の処理に必要な時間に応じたモードで動作する。
【図面の簡単な説明】
【０００９】
【図１】第１実施形態のシステムの構成例を示すブロック図。
【図２】第１実施形態のプロセッサの機能構成例を示すブロック図。
【図３】第１実施形態の第１記憶部に記憶されるデータの例を示す図。
【図４】第１実施形態の第２記憶部に記憶されるデータの例を示す図。
【図５】第１実施形態のシステム割込み処理時間の算出例を示す図。
【図６】第１実施形態のプロセッサの動作手順の一例を示すシーケンス図。
【図７】第１実施形態のプロセッサの動作手順の一例を示すシーケンス図。
【図８】第１実施形態の算出部による処理動作の一例を示すフローチャート。
【図９】第２実施形態のシステムの構成例を示すブロック図。
【図１０】第２実施形態のプロセッサの機能構成例を示すブロック図。
【図１１】第２実施形態の第４記憶部に記憶されるデータの一例を示す図。
【図１２】第２実施形態の第５記憶部に記憶されるデータの一例を示す図。
【図１３】第２実施形態のプロセッサの動作手順の一例を示すシーケンス図。
【図１４】第３実施形態のプロセッサの機能構成例を示すブロック図。
【図１５】第３実施形態の第３記憶部に記憶されるデータの一例を示す図。
【図１６】第３実施形態のシステム割込み処理時間の算出例を示す図。
【図１７】第３実施形態のプロセッサの動作手順の一例を示すシーケンス図。
【図１８】第３実施形態の算出部による処理動作の一例を示すフローチャート。
【図１９】第３実施形態のプロセッサの動作手順の一例を示すシーケンス図。
【図２０】第４実施形態のプロセッサの機能構成例を示すブロック図。
【図２１】第４実施形態の第４記憶部に記憶されるデータの一例を示す図。
【図２２】第４実施形態のプロセッサの動作手順の一例を示すシーケンス図。
【図２３】第５実施形態のプロセッサの機能構成例を示すブロック図。
【図２４】第５実施形態のプロセッサの動作手順の一例を示すシーケンス図。
【図２５】第６実施形態のプロセッサの機能構成例を示すブロック図。
【図２６】第６実施形態のプロセッサの動作手順の一例を示すシーケンス図。
【図２７】第６実施形態のプロセッサの動作手順の一例を示すシーケンス図。
【図２８】変形例の第３記憶部に記憶される設定情報の一例を示す図。
【図２９】変形例のシステムの構成例を示すブロック図。
【図３０】変形例のプロセッサの機能構成例を示すブロック図。
【図３１】変形例のシステムの構成例を示すブロック図。
【発明を実施するための形態】
【００１０】
以下、添付図面を参照しながら、本発明に係る制御装置、情報処理システムおよびプログラムの実施の形態を詳細に説明する。
【００１１】
（第１実施形態）
図１は、本実施形態のターゲットシステム（以下、単に「システム」と呼ぶ）１０の構成例を示すブロック図である。図１に示すように、システム１０は、プロセッサ１００と、記憶領域１７０とを備え、互いにバス１９０で相互に接続されている。ここでは、システム１０は、供給される電力を個別に制御可能な複数の要素を含むと捉えることもできる。上記の要素には、電力を個別に制御可能な部品や部品内の区画などが含まれる。例えばプロセッサ１００および記憶領域１７０を含むＳＯＣ（システムオンチップ）の中の１区画なども上記要素となり得る。
【００１２】
プロセッサ１００は、１または複数の処理を実行可能な処理装置である。図１に示すように、プロセッサ１００は、ＣＰＵ１１０と記憶部１２０とを有する。より具体的には、記憶部１２０は、各種のデータが記憶されるレジスタ１３０、使用頻度の高いデータなどが記憶される１次キャッシュ１４０および２次キャッシュ１５０を含む。１次キャッシュ１４０は、より使用頻度が高いデータを記憶する。２次キャッシュ１５０は、１次キャッシュ１４０から漏れた使用頻度の高いデータを記憶する。
【００１３】
記憶領域１７０は、プロセッサ１００で利用されるプログラムやデータなどを記憶する。
【００１４】
図２は、プロセッサ１００に搭載されたＣＰＵ１１０が、基本ソフトウェアであるＯＳ（operating  system）２００を実行することにより実現される機能の構成と、プロセッサ１００が備えるハードウェアとを示すブロック図である。ここでは、プロセッサ１００上で単一のＯＳ２００が動作し、ＯＳ２００上で１または複数のプロセス（９９９−１〜９９９−ｎ）が動作すると捉えることができる。また、図２においては、プロセッサ１００が備えるハードウェアとプロセッサ１００上で動作するＯＳ２００、ＯＳ２００上で動作する１または複数のプロセスをプロセッサ１００が含む表現としている。
【００１５】
図２に示すように、プロセッサ１００が備えるハードウェアには、ＣＰＵ１１０と、第１記憶部９１０と、第２記憶部９３０とが含まれる。第１記憶部９１０は、割込みの種別を示す割込み種別と、割込みの発生を待つ状態を示す割込み待ちが発生してから割込みの処理を示す割込み処理が開始されるまで時間（待ち時間）を示す割込み待ち時間と、割込み処理の時間を示す割込み処理時間とを対応付けて記憶する。
【００１６】
図３は、第１記憶部９１０に記憶されたデータの一例を示す図である。図３の例では、デバイス読み出しに対応する割込み待ち時間はＴ１＿ｍ、割込み処理時間はＴ１＿ｓにそれぞれ設定される。キーボード入力に対応する割込み待ち時間はＴ２＿ｍ、割込み処理時間はＴ２＿ｓにそれぞれ設定される。タイマーに対応する割込み待ち時間はＴ３＿ｍ、割込み処理時間はＴ３＿ｓにそれぞれ設定される。マウス入力に対応する割込み待ち時間はＴ４＿ｍ、割込み処理時間はＴ４＿ｓにそれぞれ設定される。
【００１７】
図２に戻って説明を続ける。第２記憶部９３０は、割込み種別と、割込み待ちが発生した時刻を示す割込み待ち発生時刻とを対応付けて記憶する。
【００１８】
図４は、第２記憶部９３０に記憶されたデータの一例を示す図である。図４の例では、デバイス読み出しに対応する割込み待ち発生時刻はＴａに設定される。また、キーボード入力に対応する割込み待ち発生時刻はＴｂに設定される。さらに、タイマーに対応する割込み待ち発生時刻はＴｃに設定される。
【００１９】
再び図２に戻って説明を続ける。図２に示すように、ＯＳ２００は、割込み待ち設定部２１０と、割込み検出部２２０と、算出部２３０と、第１決定部２４０と、モード設定部２５０と、割込み待ち解除部２６０とを有する。
【００２０】
割込み待ち設定部２１０は、ある割込み種別の割込み待ちが発生したときに、当該割込み待ちとなった割込み種別と、当該割込み種別の割込み待ち発生時刻とを第２記憶部９３０に記憶する。また、割込み待ち解除部２６０は、割込み処理が開始されたときに、当該割込み処理に対応する割込み種別と、当該割込み種別に対応する割込み待ち発生時刻とを第２記憶部９３０から削除する。詳細な内容については後述する。
【００２１】
割込み検出部２２０は、割込みの発生を検出する。より具体的には、割込み検出部２２０は、プロセッサ１００内外からの割込み通知（割込みが発生することを示す信号）を受け取り、当該割込み通知から、割込み処理が開始される割込み種別を特定する。
【００２２】
算出部２３０は、システム１０がスリープ状態から復帰した後に実行される割込み処理が終了するまでに必要な時間を示すシステム割込み処理時間を算出する。ここでは、電力が供給される要素の数が所定数に制限されるとともにシステム１０の動作が停止する状態をスリープ状態と呼ぶ。本実施形態では、ＣＰＵ１１０が何れの処理も実行しないアイドル状態（見方を変えれば、アイドル状態とは、システム１０が何れの処理も実行しない状態であると捉えることもできる）が一定の期間にわたって継続した場合、システム１０はスリープ状態に移行するが、これに限らず、スリープ状態への移行条件は任意である。一方、スリープ状態において、割込みが発生した場合、システム１０はスリープ状態から復帰して割込み処理を実行する。
【００２３】
本実施形態では、算出部２３０は、システム１０がスリープ状態から復帰した直後に、他の割込み処理とは重複（オーバラップ）せずに単独で実行される割込み処理、あるいは、少なくとも一部の重複を持って実行される複数の割込み処理が終了するまでに必要な時間を、システム割込み処理時間として算出する。
【００２４】
いま、スリープ状態において、デバイス読み出し、キーボード入力、タイマー割込みの３つの割込み種別が割込み待ちとなっている場合を想定する。図５に示すように、デバイス読み出しによる割込み処理が開始される時刻はｔ１、割込み処理時間はＴ１＿ｓに設定されている。また、キーボード入力による割込み処理が開始される時刻はｔ２（＞ｔ１）、割込み処理時間はＴ２＿ｓに設定されている。さらに、タイマー割込みによる割込み処理が開始される時刻はｔ３（＞ｔ２）、割込み処理時間がＴ３＿ｓに設定されている。図５の例では、システム１０がスリープ状態から復帰するタイミングは、デバイス読み出しによる割込み処理が開始される時刻（デバイス読み出しによる割込みが発生する時刻）ｔ１であるとする。また、デバイス読み出しによる割込み処理が実行される期間の一部は、キーボード入力による割込み処理が実行される期間の一部と重複している。一方、タイマー割込みによる割込み処理が実行される期間は、他の割込み処理が実行される期間とは重複せずに独立に設定される。したがって、図５の例では、システム１０がスリープ状態から復帰した後に実行される割込み処理が終了するまでに必要な時間を示すシステム割込み処理時間は、デバイス読み出しによる割込み処理とキーボード入力による割込み処理が実行される時間となる。すなわち、図５の例では、システム割込み処理時間Ｔｓは、Ｔ２＿ｓ＋（ｔ２−ｔ１）と算出される。
【００２５】
図２の第１決定部２４０は、算出部２３０により算出されたシステム割込み処理時間に応じて、スリープ状態からの復帰後のシステム１０の動作状態を示すモードを決定する。システム１０の動作状態とは、システム１０がどのように動作するのかを表すものであり、ここでは、スリープ状態は含まれない。この例では、消費電力が異なる複数のモードがあり、第１決定部２４０は、算出部２３０により算出されたシステム割込み処理時間に応じて、複数のモードのうちの何れかのモードを、スリープ状態からの復帰後のシステム１０のモードとして決定する。各モードは任意に変更可能であり、例えば「１次キャッシュ１４０に対する電力供給が行われる一方、２次キャッシュ１５０に対する電力供給は停止される」というモードがあってもよいし、「１次キャッシュ１４０および２次キャッシュ１５０の各々に対する電力供給が停止される」というモードがあってもよい。また、その他の要素（例えば記憶領域１７０）に対する電力供給が停止されるモードがあってもよいし、ＣＰＵ１１０の電圧やクロック周波数の値が、所定値に設定されるモードがあってもよい。
【００２６】
図２のモード設定部２５０は、システム１０のモードを、第１決定部２４０により決定されたモードに設定する。これにより、システム１０は、スリープ状態から復帰して、モード設定部２５０により設定されたモードに移行する。
【００２７】
図６は、割込み待ちが発生したときのプロセッサ１００の動作手順の一例を示すシーケンス図である。例えば、システム１０に付帯するデバイス（例えばマウス、キーボードなど）が割込み待ちの状態になると、当該デバイスの割込み待ちが発生したことを示す情報が、デバイスドライバ等から割込み待ち設定部２１０へ通知される。割込み待ち設定部２１０は、当該通知を受けることで、割込み待ちが発生した割込み種別を検出することができる（ステップＳ６００）。割込み待ちが発生した割込み種別を検出した場合、割込み待ち設定部２１０は、その検出した割込み種別の割込み待ち発生時刻（この例では、前述の通知を受けた時刻）を取得し（ステップＳ６０１）、割込み待ちとなった割込み種別と、割込み待ち発生時刻とを第２記憶部９３０に対して通知する（ステップＳ６０２）。第２記憶部９３０は、割込み待ち設定部２１０から通知された割込み種別と割込み待ち発生時刻とを対応付けて記憶する（ステップＳ６０３）。
【００２８】
図７は、プロセッサ１００に対して割込みが発生してから、割込み処理を開始するまでの動作手順の一例を示すシーケンス図である。図７に示すように、まず割込み検出部２２０は、プロセッサ１００内外からの割込み通知を受信することで、割込みの発生を検出する（ステップＳ７００）。次に、割込み検出部２２０は、受信した割込み通知から、発生した割込みの割込み種別（割込み処理が開始される割込み種別）を特定する（ステップＳ７０１）。次に、割込み検出部２２０は、システムがスリープ状態であるか否かを検出する（ステップＳ７０２）。システムがスリープ状態の場合（ステップＳ７０２の結果：ＹＥＳ）、割込み検出部２２０は、特定した割込み種別を算出部２３０に対して通知する（ステップＳ７０４）。一方、システム１０の状態がスリープ状態ではない場合（ステップＳ７０２の結果：ＮＯ）、割込み検出部２２０は、特定した割込み種別を、割込み待ち解除部２６０に対して通知する（ステップＳ７０３）。ステップＳ７０３の後、処理はステップＳ７１１に移行する。ステップＳ７１１の処理の内容は後述する。
【００２９】
算出部２３０は、割込みが発生した割込み種別（割込み処理が開始される割込み種別）の通知を割込み検出部２２０から受けると、第１記憶部９１０および第２記憶部９３０の各々に記憶されたデータを用いて、システム割込み処理時間を算出する（ステップＳ７０５）。見方を変えれば、算出部２３０によるシステム割込み処理時間の算出は、スリープ状態において割込みが発生したときに行われる。要するに、算出部２３０は、システム１０がスリープ状態から復帰した後に実行される割込み処理が終了するまでに必要な時間を示すシステム割込み処理時間を算出する。
【００３０】
図８は、算出部２３０によるシステム割込み処理時間の算出例を示すフローチャートである。図８に示すように、まず算出部２３０は、第２記憶部９３０に記憶された割込み種別と、当該割込み種別に対応する割込み待ち発生時刻を抽出する（ステップＳ８００）。次に、算出部２３０は、カウンタの計測値ｉを「０」に初期化する（ステップＳ８０１）。算出部２３０は、ステップＳ８００で抽出した全ての割込み種別に対して、以下に説明するステップＳ８０２〜ステップＳ８０６の処理を行うことで、割込み発生時刻（割込み処理が開始される時刻）と割込み処理時間の対応表を作成する。以下、具体的に説明する。
【００３１】
ステップＳ８０１の後、算出部２３０は、カウンタの計測値ｉが、ステップＳ８００で抽出した割込み種別の総数を示す値に到達したか否かを判断する（ステップＳ８０２）。カウンタの計測値ｉが、抽出した割込み種別の総数を示す値に到達していない場合（ステップＳ８０２の結果：Ｎｏ）、算出部２３０は、ステップＳ８００で抽出した割込み種別の中から、未だ選択されていない割込み種別を１つ選択する（ステップＳ８０３）。次に、算出部２３０は、ステップＳ８０３で選択した割込み種別に対応する割込み待ち時間および割込み処理時間を第１記憶部９１０から抽出する（ステップＳ８０４）。次に、算出部２３０は、ステップＳ８０３で選択した割込み種別に対応する割込み待ち発生時刻および割込み待ち時間から、割込み発生時刻（割込み処理が開始される時刻）を算出する（ステップＳ８０５）。具体的には、割込み待ち発生時刻から割込み待ち時間が経過する時刻を、割込み発生時刻として算出する。次に、算出部２３０は、ステップＳ８０５で算出した割込み発生時刻と、ステップＳ８０３で選択した割込み種別に対応する割込み処理時間（ステップＳ８０４で抽出した割込み処理時間）とを対応付けたデータ（「対応データ」と呼ぶ）を記憶する（ステップＳ８０６）。次に、算出部２３０は、カウンタの計測値ｉを１だけカウントアップする（ステップＳ８０７）。そして、処理は再び前述のステップＳ８０２に移行する。
【００３２】
前述のステップＳ８０２において、カウンタの計測値ｉが、ステップＳ８００で抽出した割込み種別の総数を示す値に到達した場合（ステップＳ８０２の結果：ＹＥＳ）、算出部２３０は、割込み発生時刻順に、前述の対応データを並べ替える（ステップＳ８０８）。
【００３３】
次に、算出部２３０は、現在時刻（この例では割込みの発生が検出された時刻）から、通知された割込み種別に対応する割込み処理時間が経過する時刻を、スリープ状態から復帰した後に実行される割込み処理が終了する時刻（「システム割込み終了時刻」と呼ぶ）として設定する（ステップＳ８０９）。
【００３４】
次に、算出部２３０は、システム割込み終了時刻が、割込みの発生が検出されていない他の割込み種別の割込み発生時刻よりも早いか否かを判断する（ステップＳ８１０）。システム割込み終了時刻が、他の割込み種別の割込み発生時刻よりも早いと判断した場合（ステップＳ８１０の結果：ＹＥＳ）は、算出部２３０は、現在時刻からシステム割込み終了時刻までの時間をシステム割込み処理時間として算出する（ステップＳ８１２）。一方、システム割込み終了時刻が、他の割込み種別の割込み発生時刻よりも遅いと判断した場合（ステップＳ８１０の結果：ＮＯ）は、算出部２３０は、システム割込み終了時刻の再設定を行う（ステップＳ８１１）。より具体的には、算出部２３０は、現在のシステム割込み終了時刻よりも割込み発生時刻が早い割込み種別のうち、最も割込み発生時刻が早い割込み種別を選択し、その選択した割込み種別の割込み発生時刻から、その選択した割込み種別の割込み処理時間が経過する時刻を、システム割込み終了時刻として設定し直す。そして、処理は、再び前述のステップＳ８１０に戻る。
【００３５】
再び図７に戻って説明を続ける。算出部２３０は、以上のように算出したシステム割込み処理時間と、割込み検出部２２０から通知された割込み種別（割込みが発生した割込み種別）とを第１決定部２４０に対して通知することで、スリープ状態からの復帰後のシステム１０のモードを決定することを要求する（ステップＳ７０６）。第１決定部２４０は、算出部２３０から通知されたシステム割込み処理時間に応じて、スリープ状態からの復帰後のシステム１０のモードを決定する（ステップＳ７０７）。より具体的には、第１決定部２４０は、システム割込み処理時間が大きいほど、動作する要素の数（電力が供給される要素の数）が多くなるように、システム１０のモードを決定する。以下に、モードの決定方法の一例を挙げて説明する。例えば算出部２３０から通知されたシステム割込み処理時間が第１基準値以下の場合は、システム１０の最低限の要素を稼働させる（消費電力が最小となる）第１モードを、システム１０のモードとして決定することもできる。第１モードは、例えば電圧や周波数が設定可能な最小値に設定され、１次キャッシュ１４０および２次キャッシュ１５０の各々に対する電力の供給が停止される状態を示すモードであってもよい。一方、例えば算出部２３０から通知されたシステム割込み処理時間が第１基準値よりも大きい第２基準値以上の場合は、システム１０のすべての要素を稼働させる（消費電力が最大となる）第２モードを、システム１０のモードとして決定することもできる。第２モードは、例えば全ての要素に対する電力の供給が行われるモードであってもよい。なお、これに限らず、システム割込み処理時間が大きいほど、消費電力の大きいモードがシステム１０のモードとして決定されるものであればよい。第１決定部２４０は、以上のように決定したシステム１０のモードと、割込みが発生した割込み種別とをモード設定部２５０に対して通知する（ステップＳ７０８）。
【００３６】
モード設定部２５０は、システム１０のモードを、第１決定部２４０から通知されたモードに設定する（ステップＳ７０９）。これにより、システム１０は、スリープ状態から復帰して、モード設定部２５０により設定されたモードに移行する。次に、モード設定部２５０は、割込み待ち解除部２６０に対して、割込みが発生した割込み種別を通知する（ステップＳ７１０）。次に、割込み待ち解除部２６０は、第２記憶部９３０に記憶された割込み種別のうち、モード設定部２５０から通知された割込み種別と、当該割込み種別に対応する割込み待ち発生時刻とを第２記憶部９３０から削除する（ステップＳ７１１）。以上のように、割込み待ちが発生した場合は、割込み待ちとなった割込み種別と、当該割込み待ちとなった時刻を示す割込み待ち発生時刻とが対応付けられて第２記憶部９３０に記憶される一方、割込み待ちが解除された場合（割込みが発生した場合）は、割込み待ちが解除された割込み種別と、当該割込み種別に対応する割込み待ち発生時刻とが第２記憶部９３０から削除される。これにより、現在の割込み待ちの状況を適切に管理することができる。そして、割込み待ち解除部２６０は、モード設定部２５０から通知された割込み種別に対応する割込み処理の実行を開始する（ステップＳ７１２）。
【００３７】
ここで、システム１０を前述の第１モード（最小セット）で動作させる場合は、システム１０の消費電力を低減できる一方で、システム１０を一時的に停止させるための処理等によるオーバーヘッドが大きいうえ、当該処理による影響（電圧、周波数が低いことによる処理時間の増大や、キャッシュが動作していないことによるメモリアクセスの増加等）に起因して発生する消費電力も無視できない。このため、前述のシステム割込み処理時間（システム１０がスリープ状態から復帰した後に実行される割込み処理が終了するまでに必要な時間）の値によっては、システム１０を第１モードで動作させた場合に発生する消費電力の方が、他のモード（例えば前述の第２モード）で動作させた場合に発生する消費電力よりも大きい場合がある。
【００３８】
本実施形態では、前述のシステム割込み処理時間に応じて、システム１０のモードを設定する。より具体的には、前述のシステム割込み処理時間が大きいほど、消費電力が大きいモードに設定するので、適切な処理時間を保ったままシステム１０の消費電力を効率的に低減できる。したがって、本実施形態によれば、システムの消費電力を効率的に低減できる。
【００３９】
また、本実施形態では、スリープ状態において割込みが発生したとき、その後の処理時間に応じて、システム１０のモードが設定されるので、割込みの発生後にその処理時間が決定される場合にも、効率的に消費電力を低減することができるという利点がある。例えばプロセッサ１００の外部の制御装置によって割込みが制御される場合は、スリープ状態に移行する前においては、スリープ状態において割込みが発生した後の処理時間を正しく見積もることができないため、割込みが発生した直後にシステム１０のモードを決定する必要がある。このような場合でも、本実施形態の構成を適用することで、効率的に消費電力を削減できる。
【００４０】
（第２実施形態）
本実施形態では、前述の算出部２３０および第１決定部２４０を動作させずに、電源の電力状態に応じて、モードを設定可能な機能を有する点で第１実施形態と異なる。以下、具体的な内容を説明する。なお、第１実施形態と重複する部分については、同一の符号を付して適宜に説明を省略する。
【００４１】
図９は、第２実施形態のシステム３０の構成例を示すブロック図である。図９に示すように、システム３０は、プロセッサ１００と、記憶領域１７０と、電力状態管理部３６０と、発電モジュール３８０と、バッテリー３８５とを備え、それぞれがバス３９０で相互に接続されている。発電モジュール３８０およびバッテリー３８５は、システム３０の電源であると捉えることができる。
【００４２】
発電モジュール３８０は、システム３０を稼働するために必要な電力を発電する。一例として、太陽光パネルのように、太陽光から電力を発電する構成を発電モジュール３８０として用いることができる。バッテリー３８５は、システム３０を稼働するために必要な電力を蓄える。
【００４３】
電力状態管理部３６０は、電源の電力状態を管理する。例えば発電モジュール３８０の発電量、発電量から計算される発電量の増減の傾向を示す発電傾向、バッテリー３８５の充電容量、充電容量から計算される充電量の増減の傾向を示す充電傾向などの少なくとも１つが電源の電力状態に含まれる。電力状態管理部３６０は、前回の発電量を記憶しておき、今回の発電量と比較することにより、発電傾向を把握することができる。また、電力状態管理部３６０は、前回の充電容量を記憶しておき、今回の充電容量と比較することにより、充電傾向を把握することができる。
【００４４】
図１０は、プロセッサ１００に搭載されたＣＰＵ１１０が、基本ソフトウェアであるＯＳ（operating  system）４００を実行することにより実現される機能の構成と、プロセッサ１００が備えるハードウェアとを示すブロック図である。図１０に示すように、プロセッサ１００が備えるハードウェアには、ＣＰＵ１１０と、第１記憶部９１０と、第２記憶部９３０と、第４記憶部９７０と、第５記憶部９９０とが含まれる。また、図１０においては、プロセッサ１００が備えるハードウェアとプロセッサ１００上で動作するＯＳ４００、ＯＳ４００上で動作する１または複数のプロセスをプロセッサ１００が含む表現としている。
【００４５】
図１１は、第４記憶部９７０に記憶されたデータの一例を示す図である。図１１の例では、第４記憶部９７０は、発電傾向と、充電量と、システム３０のモード決定に利用する決定部とを対応付けて記憶する。つまり、第４記憶部９７０は、電源の電力状態と、モードの決定方法とを対応付けて記憶していると捉えることもできる。この図の場合、発電傾向が増加の傾向を示すとともに、充電量が第１閾値（例えば４０％）未満の場合は、算出部２３０および第１決定部２４０を動作させることを示している。また、発電傾向が増加の傾向を示し、充電量が第１閾値以上の場合は、後述の第２決定部４９０を動作させることを示している。
【００４６】
また、発電傾向が横ばいの傾向を示すとともに、充電量が第２閾値（例えば５０％）以上、かつ、第２閾値よりも大きい第３閾値（例えば６０％）未満である場合は、算出部２３０および第１決定部２４０を動作させることを示している。また、例えば発電傾向が横ばいの傾向を示すとともに、充電量が第３閾値以上の場合は第２決定部４９０を動作させることを示している。
【００４７】
さらに、発電傾向が低下の傾向を示すとともに、充電量が第４閾値（例えば７０％）以上である場合は、算出部２３０および第１決定部２４０を動作させることを示している。また、発電傾向が低下の傾向を示すとともに、充電量が第４閾値未満の場合は第２決定部４９０を動作させることを示している。
【００４８】
なお、これに限らず、第４記憶部９７０は、例えば充電量のみと、利用する決定部とを対応付けて記憶する構成であってもよいし、発電量の変化量のみと、利用する決定部とを対応付けて記憶する構成であってもよい。例えば、充電量が第５閾値以上、かつ、第５閾値よりも大きい第６閾値未満の場合には算出部２３０および第１決定部２４０を利用し、それ以外であれば第２決定部４９０を利用するとすることもできる。また、例えば、発電量の増加量が第７閾値未満、あるいは、発電量の減少量の絶対値が第８閾値（第７閾値と異なる値でもよいし、同じ値でもよい）未満の場合には算出部２３０および第１決定部２４０を利用し、それ以外であれば第２決定部４９０を利用するとすることもできる。
【００４９】
図１２は、第５記憶部９９０に記憶されたデータの一例を示す図である。図１２の例では、第５記憶部９９０は、発電傾向と、充電量と、システム３０のモードとを対応付けて記憶する。つまり、第５記憶部９９０は、電源の電力状態と、システム３０のモードとを対応付けて記憶していると捉えることができる。この図の場合、発電傾向が増加の傾向を示す場合に、充電量が第９閾値（例えば、３０％）以上であれば第２モードを選択し、それ以外であれば第１モードを選択する。また、発電傾向が横ばいの傾向を示す場合に、充電量が第１０閾値（例えば、５０％）以上であれば第２モードを選択し、それ以外であれば第１モードを選択する。さらに、発電傾向が低下の傾向を示す場合に、充電量が第１１閾値（例えば、７０％）以上であれば第２モードを選択し、それ以外であれば第１モードを選択する。
【００５０】
なお、これに限らず、第５記憶部９９０は、例えば充電量のみと、システム３０のモードとを対応付けて記憶する構成であってもよいし、発電量の変化量のみと、システム３０のモードとを対応付けて記憶する構成であってもよい。例えば、充電量が第１２閾値以上であれば第２モードを選択し、第１２閾値未満であれば、第１モードを選択することもできる。また、例えば、発電量の増加量が第１３閾値以上であれば第２モードを選択し、第１３閾値以下であれば第１モードを選択することもできる。
【００５１】
再び図１０に戻って説明を続ける。図１０に示すように、ＯＳ４００は、割込み待ち設定部２１０と、割込み検出部２２０と、電力状態取得部４８０と、判断部４７０と、第２決定部４９０と、算出部２３０と、第１決定部２４０と、モード設定部２５０と、割込み待ち解除部２６０とを有する。
【００５２】
電力状態取得部４８０は、電力状態管理部３６０から電源の電力状態を取得し、その電力状態を判断部４７０に通知する。判断部４７０は、第４記憶部９７０に記憶されたデータに基づいて、システム３０のモードを決定する決定部を選択する。第２決定部４９０は、電源の電力状態に応じてシステム３０のモードを決定する。詳細な内容については後述する。
【００５３】
図１３は、割込みが発生してから、割込み処理を開始するまでのプロセッサ１００の動作手順の一例を示すシーケンス図である。まず割込み検出部２２０は、プロセッサ１００内外からの割込み通知を受信することで、割込みの発生を検出する（ステップＳ１２００）。次に、割込み検出部２２０は、受信した割込み通知から、発生した割込みの割込み種別を特定する（ステップＳ１２０１）。次に、割込み検出部２２０は、システム３０の状態がスリープ状態であるか否かを検出する（ステップＳ１２０２）。システム３０の状態がスリープ状態の場合（ステップＳ１２０２の結果：ＹＥＳ）、割込み検出部２２０は、特定した割込み種別を電力状態取得部４８０に対して通知する（ステップＳ１２０４）。一方、システム３０の状態がスリープ状態ではない場合（ステップＳ１２０２の結果：ＮＯ）、割込み検出部２２０は、特定した割込み種別を、割込み待ち解除部２６０に対して通知する（ステップＳ１２０３）。ステップＳ１２０３の後、処理はステップＳ１２１９に移行する。ステップＳ１２１９以降の処理の内容は、図７のステップＳ７１１以降の処理の内容と同様なので詳細な説明は省略する。
【００５４】
電力状態取得部４８０は、割込みが発生した割込み種別の通知を割込み検出部２２０から受けると、電力状態管理部３６０から電力状態を取得する（ステップＳ１２０５）。次に、電力状態取得部４８０は、取得した電力状態を判断部４７０に通知する（ステップＳ１２０６）。
【００５５】
判断部４７０は、電力状態取得部４８０から電力状態を通知されると、その電力状態と第４記憶部９７０に格納された値から、システム３０のモードの決定方法を決定する（ステップＳ１２０７）。図１１の例では、判断部４７０は、電力状態取得部４８０から取得した電力状態と、第４記憶部９７０に記憶されたデータとから、算出部２３０および第１決定部２４０を動作させてシステム３０のモードを決定するか、第２決定部４９０を動作させてシステム３０のモードを決定するかを決定する。以下、図１１の例を参照しながら、システム３０のモードの決定方法の決定例を説明する。例えば、電力状態取得部４８０から得られた発電傾向が増加傾向であって充電量が３０％である場合は、算出部２３０および第１決定部２４０を動作させてシステム３０のモードを設定することを決定する。つまり、この場合、判断部４７０は、システム３０のモードを決定する決定部として、算出部２３０と第１決定部２４０を選択する。あるいは、電力状態取得部４８０から得られた発電傾向が横ばいであって、充電量が８０％である場合は、第２決定部４９０を動作させてシステム３０のモードを決定することを決定する。つまり、この場合、判断部４７０は、システム３０のモードを決定する決定部として、第２決定部４９０を選択する。
【００５６】
判断部４７０が、算出部２３０および第１決定部２４０を動作させずにシステム３０のモードを決定することを決定した場合（ステップＳ１２０８の結果：ＮＯ）、つまり、判断部４７０が、第２決定部４９０を動作させてシステム３０のモードを決定することを決定した場合、判断部４７０は、第２決定部４９０に電力状態を通知してシステム３０のモード決定を要求する（ステップＳ１２１０）。第２決定部４９０は、判断部４７０から送られてきた現在の電源の電力状態（電力状態取得部４８０により取得された電力状態）と第５記憶部９９０に記憶された値から、システム３０のモードを決定する（ステップ１２１１）。以下では、第５記憶部が図１２の構成になっている場合のシステム３０のモードの決定方法を示す。判断部４７０から送られてきた電力状態のうち、発電傾向が増加傾向を示すとともに、充電量が５０％であれば、システム３０のすべての要素を稼働させる第２モードを、システム３０のモードとして決定することができる。また、例えば、発電傾向が横ばい傾向にあって、充電量が８０％の場合も、第２モードをシステム３０のモードとして決定することができる。一方、第２決定部４９０は、システム３０の最低限の要素を稼働させる第１モードを、システム３０のモードとして決定することができる。例えば、発電傾向が低下傾向にあって、充電量が５０％の場合は、第２決定部４９０は第１モードをシステム３０のモードとして決定することができる。
【００５７】
そして、第２決定部４９０は、決定したモードと、割込みが発生した割込み種別とをモード設定部２５０に対して通知する（ステップＳ１２１２）。モード設定部２５０は、システム３０のモードを、第１決定部２４０または第２決定部４９０から通知されたモードに設定する（ステップＳ１２１７）。これにより、システム３０は、スリープ状態から復帰して、モード設定部２５０により設定されたモードに移行する。
【００５８】
一方、算出部２３０および第１決定部２４０を動作させてシステム３０のモードを決定することを決定した場合（ステップＳ１２０８の結果：ＹＥＳ）、判断部４７０は、算出部２３０に対して、割込みが発生した割込み種別を通知するとともに、システム割込み処理時間の算出を要求する（ステップＳ１２０９）。その後のステップＳ１２１３以降の内容は、図７のステップＳ７０５以降の内容と同様なので、詳細な説明は省略する。
【００５９】
以上に説明したように、本実施形態では、スリープ状態において割込みが発生したときの電源の電力状態に応じて、システム３０を最適な状態で動作させるので、システム３０の消費電力を効率的に低減しつつ、処理を実行することができる。上述のように、システム割込み処理時間に応じてシステム３０のモードを設定することによって消費電力を低減する方法は、プロセッサ１００の消費電力を低減できる一方で、システム３０のモードを変更するための処理等によるオーバーヘッドで発生する消費電力も無視できない。また、発電量や充電量が十分な第１状態の場合には、これらの消費電力を無視したほうが処理時間を短くできるという点でより効率的であるが、発電量や充電量が十分でない第２状態の場合にはシステム３０が動作するという観点から最小セットで動作することが適切であると考えられる。また、発電量や充電量が第１状態と第２状態との間の状態である第３状態の場合には、前述のシステム割込み処理時間に応じたモードでシステム３０を動作させることが適切であると考えられる。つまり、本実施形態では、発電量、充電量、発電傾向、充電傾向などを含む電源の電力状態も考慮して、システム３０のモード設定を行うので、システム３０の電力状況にあわせた処理時間を保ちつつ、効率的に消費電力を低減できるという利点がある。
【００６０】
（第３実施形態）
上述の第１実施形態では、スリープ状態において割込みが発生したときに、前述のシステム割込み処理時間の算出が行われるが、本実施形態では、システムがスリープ状態に移行する前の段階においてシステム割込み処理時間の算出を行う点で第１実施形態と相違する。以下、具体的な内容を説明する。なお、第１実施形態と共通する部分については、同一の符号を付して適宜に説明を省略する。本実施形態のシステムの基本的な構成は、第１実施形態と同様である。以下の説明においては、本実施形態のシステムは５０と表記する。
【００６１】
図１４は、プロセッサ１００に搭載されたＣＰＵ１１０が、基本ソフトウェアであるＯＳ（operating  system）６００を実行することにより実現される機能の構成と、プロセッサ１００が備えるハードウェアとを示すブロック図である。ここでは、プロセッサ１００上で単一のＯＳ６００が動作し、ＯＳ６００上で１または複数のプロセス（９９９−１〜９９９−ｎ）が動作すると捉えることができる。また、図１４においては、プロセッサ１００が備えるハードウェアとプロセッサ１００上で動作するＯＳ６００、ＯＳ６００上で動作する１または複数のプロセスをプロセッサ１００が含む表現としている。
【００６２】
図１４に示すように、プロセッサ１００が備えるハードウェアには、ＣＰＵ１１０と、第１記憶部９１０、第２記憶部９３０、第３記憶部９５０が含まれる。第３記憶部９５０は、システム３０がスリープ状態に移行する前に登録され、スリープ状態から復帰するときに読み出されるシステム５０の設定情報（システム５０のモードを設定するための情報）を記憶する。図１５は、第３記憶部９５０に記憶された設定情報の一例を示す図である。図１５の例では、登録される設定情報として、プロセッサ１００の電圧の値、周波数（クロック数）の値、１次キャッシュ１４０に対する電力供給の有無、２次キャッシュ１５０に対する電力供給の有無が記憶されている。図１５の例では、プロセッサ１００の電圧の値はVx、周波数の値はFx、１次キャッシュ１４０に対する電力供給は行われ（ＯＮ）、２次キャッシュ１５０に対する電力の供給は停止される（ＯＦＦ）という設定になっている。例えば、この設定でスリープ状態から復帰するときには、１次キャッシュ１４０に対しては電力が供給される一方、２次キャッシュ１５０に対する電力の供給は停止されるので、スリープ状態から復帰した後には、２次キャッシュ１５０を利用できない。
【００６３】
図１４に戻って説明を続ける。ＯＳ６００は、割込待ち設定部２１０と、アイドル状態検出部６８０と、算出部６３０と、第１決定部６４０と、スリープ処理部６９０と、割込み検出部６２０と、モード設定部６５０と、設定情報取得部６５５と、割込待ち解除部２６０とを有する。アイドル状態検出部６８０は、アイドル状態を検出する。アイドル状態とは、ＣＰＵ１１０が何れの処理も実行していない状態を示す。
【００６４】
算出部６３０は、アイドル状態検出部６８０によってアイドル状態が検出されたとき、第１記憶部９１０および第２記憶部９３０の各々に記憶されたデータを用いて、システム５０がスリープ状態から復帰した後に実行される処理が終了するまでの時間を示すシステム割込み処理時間を算出する。本実施形態で算出されるシステム割込み処理時間は、第１実施形態と同様に、システム５０がスリープ状態から復帰した直後に、他の割込み処理とは重複（オーバラップ）せずに単独で実行される割込み処理、あるいは、少なくとも一部の重複を持って実行される複数の割込み処理が終了するまでに必要な時間を示す。ここで、本実施形態の割込み待ち設定部２１０は、各割込み種別の割込み待ち発生時刻を予め把握しており、割込み種別と、割込み待ち発生時刻とを対応付けて第２記憶部９３０に書き込む点で第１実施形態と相違する。つまり、本実施形態では、第２記憶部９３０には、割込み種別と割込み待ち発生時刻との対応関係が予め書き込まれている。
【００６５】
図１６は、算出部６３０が、第１記憶部９１０と第２記憶部９３０を用いて、システム割込み処理時間を算出する方法の一例を示す。図１４の例では、割込み待ちとなっている割込み種別は、デバイス読み出し、キーボード入力、タイマー割込みの３つである。図１６に示すように、デバイス読み出しによる割込み処理が開始される時刻はｔ１、割込み処理時間はＴ１＿ｓに設定されている。また、キーボード入力による割込み処理が開始される時刻はｔ２（＞ｔ１）、割込み処理時間はＴ２＿ｓに設定されている。さらに、タイマー割込みによる割込み処理が開始される時刻はｔ３（＞ｔ２）、割込み処理時間はＴ３＿ｓに設定されている。図１６の例では、システム５０がスリープ状態から復帰した直後に発生する割込みはデバイス読み出しによる割込みであり、その割込み処理の間にキーボード入力による割込みが発生することがわかる。したがって、この場合のシステム割込み処理時間は、デバイス読み出しによる割込み処理とキーボード入力による割込み処理を行う時間であるとわかる。つまり、図１６の例では、システム割込み処理時間Ｔｓは、Ｔ２＿ｓ＋（ｔ２−ｔ１）であるといえる。
【００６６】
再び図１４に戻って説明を続ける。第１決定部６４０は、算出部６３０により算出されたシステム割込み処理時間から、復帰後のシステム５０のモードを決定し、その決定したモードに設定するための設定情報を第３記憶部９５０に書き込む。
【００６７】
スリープ処理部６９０は、プロセッサ１００に含まれるレジスタ１３０、１次キャッシュ１４０、２次キャッシュ１５０に記憶されたデータを記憶領域１７０に退避させ、プロセッサ１００の動作を一時的に停止して節電状態（スリープ状態）にする。
【００６８】
割込み検出部６２０は、プロセッサ１００内外からの割込み通知を検出し、当該割込み通知で特定される割込み種別を、設定情報取得部６５５へ通知する。
【００６９】
設定情報取得部６５５は、割込み検出部６２０から割込み種別が通知されると、第３記憶部９５０に記録された設定情報を読み出し、その設定情報と割込み種別をモード設定部６５０へ通知する。モード設定部６５０は、設定情報取得部６５５から通知されると、通知された設定情報に基づいて、システム５０のモードを設定する。
【００７０】
図１７は、プロセッサ１００のアイドル状態が検出されてから、スリープ状態に移行するまでの動作手順の一例を示すシーケンス図である。図１７に示すように、まずアイドル状態検出部６８０が、プロセッサ１００のアイドル状態を検出し（ステップＳ１６００）、算出部６３０に対して、システム割込み処理時間の算出を要求する（ステップＳ１６０１）。その要求を受けた算出部６３０は、第１記憶部９１０および第２記憶部９３０の各々に記憶されたデータを用いて、システム割込み処理時間を算出する（ステップＳ１６０２）。
【００７１】
図１８は、算出部６３０によるシステム割込み処理時間の算出例を示すフローチャートである。ステップＳ１７００〜ステップＳ１７０８の内容は、図８のステップＳ８００〜ステップＳ８０８の内容と同様なので、詳細な説明は省略する。ステップＳ１７０８の後のステップＳ１７０９において、算出部６３０は、スリープ状態からの復帰後に割込みが発生する割込み種別のうち、最も割込み発生時刻が早い割込み種別の割込み発生時刻（「直近の割込み発生時刻」と呼ぶ）から、当該割込み種別の割込み処理時間が経過する時刻を、システム割込み終了時刻として設定する。
【００７２】
次に、算出部６３０は、現時点でのシステム割込み終了時刻が、他の割込み種別の割込み発生時刻よりも早いか否かを判断する（ステップＳ１７１０）。システム割込み終了時刻が、他の割込み種別の割込み発生時刻よりも早いと判断した場合（ステップＳ１７１０の結果：ＹＥＳ）は、算出部６３０は、スリープ状態から復帰する予定の時刻（つまりは直近の割込み発生時刻）からシステム割込み終了時刻までの時間をシステム割込み処理時間として算出する（ステップＳ１７１２）。一方、システム割込み終了時刻が、他の割込み種別の割込み発生時刻よりも遅いと判断した場合（ステップＳ１７１０の結果：ＮＯ）は、算出部６３０は、システム割込み終了時刻の再設定を行う（ステップＳ１７１１）。より具体的には、算出部６３０は、現在のシステム割込み終了時刻よりも割込み発生時刻が早い割込み種別のうち、最も割込み発生時刻が早い割込み種別を選択し、その選択した割込み種別の割込み発生時刻から、その選択した割込み種別の割込み処理時間が経過する時刻を、システム割込み終了時刻として設定し直す。そして、処理は、再び前述のステップＳ１７１０に戻る。
【００７３】
再び図１７に戻って説明を続ける。算出部６３０は、以上のように算出したシステム割込み処理時間を第１決定部６４０に対して通知することで、スリープ状態からの復帰後のシステム５０のモードを決定することを要求する（ステップＳ１６０３）。第１決定部６４０は、算出部６３０から通知されたシステム割込み処理時間に応じて、スリープ状態からの復帰後のシステム５０のモードを決定する（ステップＳ１６０４）。ステップＳ１６０４の内容は、図７のステップＳ７０７の内容と同様である。次に、第１決定部６４０は、決定したモードの設定情報を第３記憶部９５０に書き込む（ステップＳ１６０５）。次に、第１決定部６４０は、スリープ処理部６９０に対して、システム５０をスリープ状態に移行させるスリープ処理の実行を要求する（ステップＳ１６０６）。
【００７４】
スリープ処理の実行を要求されたスリープ処理部６９０は、現在のシステム５０のモードに応じて、スリープ処理を実行する（ステップＳ１６０７）。例えば１次キャッシュ１４０に対する電力が供給されている状態であれば、スリープ処理部６９０は、１次キャッシュ１４０に記憶されたデータを記憶領域１７０に退避させる。また、例えば２次キャッシュ１５０に対する電力が供給されている状態であれば、スリープ処理部６９０は、２次キャッシュ１５０に記憶されたデータを記憶領域１７０に退避させる。そして、スリープ処理部６９０は、レジスタ１３０に記憶されたデータを記憶領域１７０に退避させ、プロセッサ１００の動作を一時的に停止させる。これにより、システム５０は、節電状態（スリープ状態）に移行する。
【００７５】
図１９は、プロセッサ１００に対して割込みが発生してから、割込み処理を開始するまでの動作手順の一例を示すシーケンス図である。図１７に示すように、まず割込み検出部２２０は、プロセッサ１００内外からの割込み通知を受信することで、割込みの発生を検出する（ステップＳ１８００）。次に、割込み検出部２２０は、受信した割込み通知から、発生した割込みの割込み種別（割込み処理が開始される割込み種別）を特定する（ステップＳ１８０１）。次に、割込み検出部２２０は、システム５０の状態がスリープ状態であるか否かを検出する（ステップＳ１８０２）。システム５０の状態がスリープ状態の場合（ステップＳ１８０２の結果：ＹＥＳ）、割込み検出部２２０は、特定した割込み種別を設定情報取得部６５５に対して通知する（ステップＳ１８０４）。一方、システム５０の状態がスリープ状態ではない場合（ステップＳ７０２の結果：ＮＯ）、割込み検出部２２０は、特定した割込み種別を、割込み待ち解除部２６０に対して通知する（ステップＳ１８０３）。ステップＳ１８０３の後、処理はステップＳ１８０９に移行する。ステップＳ１８０９以降の内容は、図７のステップＳ７１１以降の内容と同様なので、詳細な説明は省略する。
【００７６】
設定情報取得部６５５は、割込みが発生した割込み種別の通知を割込み検出部６２０から受けると、第３記憶部９５０に書き込まれた設定情報を読み出す（ステップＳ１８０５）。次に、設定情報取得部６５５は、読み出した設定情報と割込み種別をモード設定部６５０に通知する（ステップS１８０６）。モード設定部６５０は、設定情報取得部６５５から通知された設定情報に従って、システム５０のモードを設定する（ステップＳ１８０７）。図１５に示す例のように、「１次キャッシュ：ＯＮ、２次キャッシュ：ＯＦＦ」と第３記憶部９５０に書き込まれている場合は、モード設定部６５０は、１次キャッシュ１４０に対する電力の供給を開始して初期化を行う一方で、２次キャッシュ１５０に対する電力の供給を行わない。そして、モード設定部６５０は、割込み待ち解除部２６０に対して、割込みが発生した割込み種別を通知する（ステップＳ１８０８）。ステップＳ１８０８以降の内容は、図７のステップＳ７１０以降の内容と同様なので、詳細な説明は省略する。
【００７７】
上述の第１実施形態のように、スリープ状態において割込みが発生したときにシステム割込み処理時間を算出し、復帰後のモードを決定する方法は、システムがスリープ状態から復帰するときの何も初期化されていない状態でこれらの算出を行わなければならないため、算出にかかる時間やプロセッサ１００の消費電力が大きいといった問題がある。例えば、システムがスリープ状態から復帰した直後は、電圧や周波数がスリープ状態における値のままで、かつ、１次キャッシュ１４０や２次キャッシュ１５０に対する電力の供給が開始されていないままであるため、必ずメモリアクセスが発生するという状況が考えられる。一方、本実施形態では、システムがスリープ状態に移行する前（システムが停止する前）に、前述のシステム割込み処理時間を算出することにより、最適な状況でシステム割込み処理時間の算出を行うことができる。システムがスリープ状態に移行する前は、電圧、周波数、１次キャッシュ１４０、および、２次キャッシュ１５０の各々の状態が、システムが通常に動作しているモードにおける状態とほぼ同じであるため、システム割込み処理時間の算出に適した状況で、システム割込み処理時間の算出を行うことができる。つまり、本実施形態によれば、システムの消費電力を効率的に低減しつつ、システム割込み処理時間の算出処理を実行することができる。
【００７８】
（第４実施形態）
本実施形態では、第２実施形態と同様に、電源の電力状態に応じて、モードを設定可能な機能を有する点で第３実施形態と相違する。以下、具体的な内容を説明する。なお、第２実施形態および第３実施形態と共通する部分については、同一の符号を付して適宜に説明を省略する。本実施形態のシステムの基本的な構成は、第２実施形態と同様である。以下の説明においては、本実施形態のシステムは７０と表記する。
【００７９】
図２０は、プロセッサ１００に搭載されたＣＰＵ１１０が、基本ソフトウェアであるＯＳ（operating  system）８００を実行することにより実現される機能の構成と、プロセッサ１００が備えるハードウェアとを示すブロック図である。図２０に示すように、プロセッサ１００が備えるハードウェアには、ＣＰＵ１１０と、第１記憶部９１０と、第２記憶部９３０と、第３記憶部９５０と、第４記憶部９７５と、第５記憶部９９０とが含まれる。また、図２０においては、プロセッサ１００が備えるハードウェアとプロセッサ１００上で動作するＯＳ８００、ＯＳ８００上で動作する１または複数のプロセスをプロセッサ１００が含む表現としている。
【００８０】
図２１は、第４記憶部９７５に記憶されたデータの一例を示す図である。図２１の例では、第４記憶部９７５は、発電傾向と、充電量と、モード決定に利用するモジュールとを対応付けて記憶する。第２実施形態と同様に、第４記憶部９７５は、電源の電力状態と、モードの決定方法とを対応付けて記憶していると捉えることもできる。この図の場合、発電傾向が増加の傾向を示すとともに、充電量が第１閾値（例えば４０％）未満の場合は、設定情報取得部６５５を利用してシステム７０のモードを決定することを示している。つまり、設定情報取得部６５５から取得した設定情報を利用してモードを決定することを示している。また、発電傾向が増加の傾向を示し、充電量が第１閾値以上の場合は、第２決定部４９０で決定したモードを利用することを示している。
【００８１】
また、発電傾向が横ばいの傾向を示すとともに、充電量が第２閾値（例えば５０％）以上、かつ、第２閾値よりも大きい第３閾値（例えば６０％）未満である場合は、設定情報取得部８５５から取得した設定情報を利用してモードを決定することを示している。また、例えば発電傾向が横ばいの傾向を示すとともに、充電量が第３閾値以上の場合は第２決定部４９０で決定したモードを利用することを示している。
【００８２】
さらに、発電傾向が低下の傾向を示すとともに、充電量が第４閾値（例えば７０％）以上である場合は、設定情報取得部８５５から取得した設定情報を利用してモードを決定することを示している。また、発電傾向が低下の傾向を示すとともに、充電量が第４閾値未満の場合は第２決定部４９０で決定したモードを利用することを示している。なお、これに限らず、第４記憶部９７５は、第４記憶部９７０と同様に、例えば充電量のみと、利用するモジュールとが対応付けられて記憶される構成でもよいし、発電量の変化量のみと、利用するモジュールとが対応付けられて記憶される構成であってもよい。
【００８３】
再び図２０に戻って説明を続ける。図２０に示すように、ＯＳ８００は、割込み待ち設定部２１０と、アイドル状態検出部６８０と、算出部６３０と、第１決定部６４０と、スリープ処理部６９０と、割込み検出部８２０と、電力状態取得部４８０と、判断部８７０と、第２決定部４９０と、設定情報取得部６５５と、モード設定部８５０と、割込み待ち解除部２６０とを有する。
【００８４】
割込み検出部８２０は、プロセッサ１００内外からの割込み通知を検出し、当該割込み通知で特定される割込み種別を、電力状態取得部４８０へ通知する。
【００８５】
判断部８７０は、第４記憶部９７５に記憶されたデータに基づいて、システム７０のモードの決定方法を決定する。本実施形態では、電力状態取得部４８０は、スリープ状態において割込みが発生した場合に、電力状態管理部３６０から電力状態を取得し、その取得した電力状態を判断部８７０に通知する。判断部８７０は、電力状態取得部４８０から取得した電力状態と第４記憶部９７５に記憶されたデータに基づいて、システム７０のモード決定に利用するモジュールを選択する。例えば、モード決定に利用するモジュールとして設定情報取得部６５５を選択した場合、判断部８７０は、第３記憶部９５０から設定情報を取り出すように設定情報取得部６５５に要求する。そして、設定情報取得部８５５は、第３記憶部９５０に記憶された設定情報を取得し、その設定情報をモード設定部８５０へ通知する。一方、モード決定に利用するモジュールとして第２決定部４９０を選択した場合、判断部８７０は、第２決定部４９０に対して状態を決定するように要求する。この決定方法は、第２の実施形態と同様である。
【００８６】
モード設定部８５０は、設定情報取得部６５５または第２決定部４９０から通知された設定情報を用いて、システム７０のモードを設定する。
【００８７】
図２２は、割込みが発生してから、割込み処理を開始するまでのプロセッサ１００の動作手順の一例を示すシーケンス図である。まず割込み検出部８２０は、プロセッサ１００内外からの割込み通知を受信することで、割込みの発生を検出する（ステップＳ２０００）。次に、割込み検出部８２０は、受信した割込み通知から、発生した割込みに対応する割込み種別（割込み処理が開始される割込み種別）を特定する（ステップＳ２００１）。次に、割込み検出部８２０は、システム７０の状態がスリープ状態であるか否かを検出する（ステップＳ２００２）。システム７０の状態がスリープ状態の場合（ステップＳ２００２の結果：ＹＥＳ）、割込み検出部８２０は、特定した割込み種別を電力状態取得部４８０に対して通知する（ステップＳ２００４）。一方、システム７０の状態がスリープ状態ではない場合（ステップＳ２００２の結果：ＮＯ）、割込み検出部８２０は、特定した割込み種別を、割込み待ち解除部２６０に対して通知する（ステップＳ２００３）。ステップＳ２００３の後、処理はステップＳ２０１７に移行する。ステップＳ２０１７以降の処理の内容は、図７のステップＳ７１１以降の処理の内容と同様なので詳細な説明は省略する。
【００８８】
電力状態取得部４８０は、発生した割込みの割込み種別の通知を割込み検出部８２０から受けると、電力状態管理部３６０から電力状態を取得する（ステップＳ２００５）。そして、電力状態取得部４６０は、割込み種別と電力状態を判断部８７０へ通知する（ステップＳ２００６）。
【００８９】
判断部８７０は、電力状態取得部４８０から取得した電力状態と第４記憶部９７５に記憶されたデータから、システム７０のモードの決定方法を決定する（ステップＳ２００７）。図２１の例では、判断部８７０は、電力状態取得部４８０から取得した電力状態と、第４記憶部９７５に記憶されたデータとから、設定情報取得部６５５を動作させてシステム７０のモードを決定するか（見方を変えれば、第３記憶部９５０に記憶された設定情報を利用してシステム７０のモードを決定するか）、第２決定部４９０を動作させてシステム７０のモードを決定するかを決定する。以下、図２１を例に挙げて、システム７０のモードの決定方法の決定例を説明する。例えば、電力状態取得部４８０から得られた発電傾向が増加傾向であって充電量が３０％である場合、判断部８７０は、モード決定に利用するモジュールとして設定情報取得部６５５を選択する。つまり、この場合、判断部８７０は、第３記憶部９５０に記憶された設定情報を利用して、システム７０のモードを決定することを決定する。一方、例えば、電力状態取得部４８０から得られた発電傾向が横ばいであって、充電量が８０％である場合、判断部８７０は、モード決定に利用するモジュールとして第２決定部４９０を選択する。つまり、この場合、判断部８７０は、第２決定部４９０を動作させてシステム７０のモードを決定することを決定する。
【００９０】
判断部４７０が、設定情報取得部６５５を用いずにシステム７０のモードを決定することを決定した場合（ステップＳ２００８の結果：ＮＯ）、つまり、第２決定部４９０を動作させてシステム７０のモードを決定することを決定した場合、判断部８７０は、発生した割込みの割込み種別と電力状態を第２決定部４９０に通知する（ステップＳ２０１２）。第２決定部４９０は、判断部８７０から送られてきた電力状態と第５記憶部９９０に記憶されたデータから、システム７０のモードを決定する（ステップ２０１３）。この決定方法は第２実施形態と同様である。そして、判断部８７０は、決定したモードの設定情報と、割込みが発生した割込み種別とをモード設定部８５０に対して通知する（ステップＳ２０１４）。モード設定部８５０は、判断部８７０から通知された設定情報に従って、システム７０のモードを設定する（ステップＳ２０１５）。これにより、システム７０は、スリープ状態から復帰して、モード設定部８５０により設定されたモードに移行する。
【００９１】
一方、設定情報取得部６５５を用いてシステム７０のモードを決定することを決定した場合（ステップＳ２００８の結果：ＹＥＳ）、つまり、第３記憶部９５０に記憶された設定情報を利用してシステム７０のモードを決定することを決定した場合、判断部８７０は設定情報取得部６５５に割込み種別を通知する（ステップＳ２００９）。設定情報取得部６５５は、第３記憶部９５０に記憶された設定情報を読み出し（ステップＳ２０１０）、その読み出した設定情報と、割込みが発生した割込み種別とをモード設定部８５０に対して通知する（ステップＳ２０１１）。モード設定部８５０は、判断部８７０から通知された設定情報に従って、システム７０のモードを設定する（ステップＳ２０１５）。これにより、システム７０は、スリープ状態から復帰して、モード設定部８５０により設定されたモードに移行する。
【００９２】
上述のように、プロセッサ１００をスリープ状態に移行させて消費電力を低減する方法は、プロセッサ１００の消費電力を低減できる一方で、システム７０を一時的に停止させるための処理等によるオーバーヘッドが大きいうえ、当該処理（例えばレジスタの退避および復帰やキャッシュメモリのフラッシュなどの処理）やそれによる影響（キャッシュメモリのフラッシュによるメモリアクセスの増加等）に起因して発生する消費電力も無視できない。また、発電量や充電量が十分な第１状態の場合には、これらの消費電力を無視したほうが処理時間を短くできるという点でより効率的であるが、発電量や充電量が十分でない第２状態の場合にはシステム７０が動作するという観点から最小セットで動作することが適切であると考えられる。また、発電量や充電量が第１状態と第２状態との間の状態である第３状態の場合には、前述のシステム割込み処理時間に応じたモード（第３記憶部９５０に記憶された設定情報により設定されるモード）でシステム７０を動作させることが適切であると考えられる。つまり、本実施形態では、電源の電力状態も考慮して、システム７０のモード設定を行うので、システム７０の電力状況にあわせた処理時間を保ちつつ、効率的に消費電力を低減できるという利点がある。
【００９３】
（第５実施形態）
本実施形態では、システムがスリープ状態に移行する前の段階における電源の電力状態に応じて、システム割込み処理時間の算出を行うか否かを決定する点で第４実施形態と相違する。以下、具体的な内容を説明する。なお、第４実施形態と共通する部分については、同一の符号を付して適宜に説明を省略する。本実施形態のシステムの基本的な構成は、第４実施形態と同様である。以下の説明においては、本実施形態のシステムは９０と表記する。
【００９４】
図２３は、プロセッサ１００に搭載されたＣＰＵ１１０が、基本ソフトウェアであるＯＳ（operating  system）１０００を実行することにより実現される機能の構成と、プロセッサ１００が備えるハードウェアとを示すブロック図である。図２０に示すように、プロセッサ１００が備えるハードウェアには、ＣＰＵ１１０と、第１記憶部９１０と、第２記憶部９３０と、第３記憶部９５０と、第４記憶部９７０と、第５記憶部９９０とが含まれる。また、図２３においては、プロセッサ１００が備えるハードウェアとプロセッサ１００上で動作するＯＳ１０００、ＯＳ１０００上で動作する１または複数のプロセスをプロセッサ１００が含む表現としている。
【００９５】
図２３に示すように、ＯＳ１０００は、割込待ち設定部２１０と、アイドル状態検出部６８０と、電力状態取得部４８０と、第２決定部１０９０と、判断部１０８５と、算出部６３０と、第１決定部６４０と、スリープ処理部６９０と、割込み検出部８２０と、設定情報取得部６５５と、モード設定部６５０と、割込み待ち解除部２６０とを有する。
【００９６】
判断部１０８５は、電力状態取得部４８０から通知された電力状態に応じて、システム１００のモードの決定方法を決定する。第２決定部１０９０は、電源の電力状態に応じてシステム１００のモードを決定し、その決定したモードを第３記憶部９５０に登録する。
【００９７】
図２４は、プロセッサ１００のアイドル状態が検出されてから、スリープ状態に移行するまでの動作手順の一例を示すシーケンス図である。図２４に示すように、まずアイドル状態検出部６８０が、プロセッサ１００のアイドル状態を検出し（ステップＳ２２００）、電力状態取得部４８０に対して、電力状態の読み出しを要求する（ステップＳ２２０１）。その要求を受けた電力状態取得部４８０は、電力状態管理部３６０から電力状態を取得する（ステップＳ２２０２）。次に、電力状態取得部４８０は、取得した電力状態を判断部１０８５へ通知する（ステップＳ２２０３）。そして、判断部１０８５は、電力状態取得部４８０から取得した電力状態から、システム９０のモードの決定方法を決定する（ステップＳ２２０４）。図１１の例では、判断部１０８５は、電力状態取得部４８０から取得した電源の電力状態と第４記憶部９７０に記憶されたデータから、算出部６３０によるシステム割込み処理時間の算出を行ってシステム９０のモードを決定するか、第２決定部１０９０を利用してシステム９０のモードを決定するかを決定する。
【００９８】
たとえば、図１１の場合、発電傾向及び充電量に基づいてシステム９０のモードの決定方法を決定する。たとえば、発電傾向が増加傾向を示すとともに、充電量が３０％であれば、算出部６３０によるシステム割込み時間の算出によりシステム９０のモードを決定する。たとえば、発電傾向が増加の傾向を示し、充電量が５０％であれば第２決定部１０９０を利用してシステム９０のモードを決定する。また、たとえば、発電傾向が横ばいを示すとともに、充電量が５５％であれば、算出部６３０によるシステム割込み時間の算出によりシステム９０のモードを決定する。たとえば、発電傾向が横ばいの傾向を示し、充電量が２０％であれば第２決定部１０９０を利用してシステム９０のモードを決定する。また、たとえば、発電傾向が低下を示すとともに、充電量が８０％であれば、算出部６３０によるシステム割込み時間の算出によりシステム９０のモードを決定する。たとえば、発電傾向が低下の傾向を示し、充電量が６０％であれば第２決定部１０９０を利用してシステム９０のモードを決定する。なお、これに限らず、たとえば、充電量のみ、あるいは、発電量の変化量のみに基づいて、モードの決定方法を決定することもできる。
【００９９】
算出部６３０によるシステム割込み処理時間の算出を行わないことを決定した場合（ステップＳ２２００５の結果：ＮＯ）、つまり、第２決定部１０９０を利用してシステム９０のモードを決定することを決定した場合、判断部１０８５は第２決定部１０９０に対して電力状態を通知して、システム９０のモードの決定を要求する（ステップＳ２２０７）。第２決定部１０９０は、判断部１０８５から通知された電力状態と第５記憶部に記憶されたデータに応じて、スリープ状態から復帰後のシステム９０のモードを決定する（ステップＳ２２０８）。たとえば、発電傾向が増加の傾向を示すとともに、充電量が５０％の場合は、第２決定部１０９０はシステム９０をシステムのすべての要素を稼働させる第２モードを、システム９０のモードとして決定することができる。また、たとえば、発電傾向が横ばいの傾向を示すとともに、充電量が７０％の場合も、第２決定部１０９０は、第２モードをシステム９０のモードとして決定することができる。また、たとえば発電傾向が横ばいの傾向を示すとともに、充電量が４０％の場合は、第２決定部１０９０は消費電力が最小となる最低限の要素を稼働させる第１モードを、システム９０のモードとして決定することができる。また、たとえば、発電傾向が低下の傾向を示すとともに、充電量が６０％の場合も、第２決定部１０９０は、第１モードをシステム９０のモードとして決定することができる。
【０１００】
そして、第２決定部１０９０は、決定したモードの設定情報を第３記憶部９５０に書き込む（ステップＳ２２０９）。次に、第２決定部１０９０は、スリープ処理部６９０に対して、システム９０をスリープ状態に移行させるスリープ処理の実行を要求する（ステップＳ２２１０）。
【０１０１】
一方、算出部６３０によるシステム割込み処理時間の算出を行うことを決定した場合（ステップＳ２２０５の結果：ＹＥＳ）、判断部１０８５は、算出部６３０に対して、システム割込み処理時間の算出を要求する（ステップＳ２２０６）。その後のステップＳ２２１１以降の内容は、図１７のステップＳ１６０２以降の内容と同様なので、詳細な説明は省略する。
【０１０２】
以上に説明したように、本実施形態では、システム９０がスリープ状態に移行する前（システムが停止する前）に、電源の電力状態に応じてシステム９０のモード（スリープ状態から復帰した後のシステム９０のモード）を決定することにより、システム９０の電力状態に合わせて、システム９０の消費電力を効率的に低減しつつ、処理を実行することができる。最適なシステム９０のモードを決定する方法は、システム９０の消費電力を削減することができる一方で、システム９０のモードを決定するための処理（算出部６３０によるシステム割込み処理時間の算出処理等）によってその処理時間や消費電力が増加する。本実施形態では、システム９０の電力状態に応じて、システム９０のモードを動的に決定しなければならない場合（電力状態が前述の所定の条件を満たす場合）に限定して、システム９０のモードを決定するための処理を行うことにより、効率的に消費電力を低減できるという利点がある。
【０１０３】
（第６実施形態）
上述の第１実施形態では、第１記憶部９１０に記憶された割込み処理時間の値は固定値であったが、本実施形態では、第１記憶部９１０に記憶された割込み処理時間の値が可変に設定される。以下、具体的な内容を説明する。なお、第１実施形態と共通する部分については、同一の符号を付して適宜に説明を省略する。本実施形態のシステムの基本的な構成は、第１実施形態と同様である。以下の説明においては、本実施形態のシステムは９５と表記する。
【０１０４】
図２５は、プロセッサ１００に搭載されたＣＰＵ１１０が、基本ソフトウェアであるＯＳ（operating  system）１２００を実行することにより実現される機能の構成と、プロセッサ１００が備えるハードウェアとを示すブロック図である。ここでは、プロセッサ１００上で単一のＯＳ１２００が動作し、ＯＳ１２００上で１または複数のプロセス（９９９−１〜９９９−ｎ）が動作すると捉えることができる。また、図２５においては、プロセッサ１００が備えるハードウェアとプロセッサ１００上で動作するＯＳ１２００、ＯＳ１２００上で動作する１または複数のプロセスをプロセッサ１００が含む表現としている。
【０１０５】
図２５に示すように、プロセッサ１００が備えるハードウェアには、ＣＰＵ１１０と、第１記憶部９１０と、第２記憶部９３０とが含まれる。ＯＳ１２００は、割込み待ち設定部２１０と、割込み検出部２２０と、算出部２３０と、第１決定部２４０と、モード設定部２５０と、割込み待ち解除部１２６０と、更新部１２９０とを有する。
【０１０６】
割込み待ち解除部１２６０は、割込み処理を開始する場合、その割込み処理に対応する割込み種別を更新部１２９０に通知する機能を有する点で第１実施形態と相違する。
【０１０７】
更新部１２９０は、割込み処理が開始された時点で、当該割込み処理が開始された割込み種別に対応する割込み処理時間の計測を開始し、割込み処理が完了した時点で割込み処理時間の計測を停止し、第１記憶部９１０に記憶された割込み処理時間のうち、当該割込み種別に対応する割込み処理時間の値を計測結果に置き換える（更新する）。
【０１０８】
図２６は、プロセッサ１００に対して割込みが発生してから、割込み処理を開始するまでの動作手順の一例を示すシーケンス図である。ステップＳ２４００〜ステップＳ２４１０の内容は、図７のステップＳ７００〜ステップＳ７１０の内容と同様なので、詳細な説明は省略する。ステップＳ２４１０において、割込みが発生した割込み種別の通知をモード設定部２５０から受けた割込み待ち解除部１２６０は、更新部１２９０に対して、割込みが発生した割込み種別を通知する（ステップＳ２４１１）。割込みが発生した割込み種別の通知を受けた更新部１２９０は、通知された割込み種別に対応する割込み処理時間の計測を開始する（ステップＳ２４１４）。例えば、更新部１２９０は、割込み種別と現在時刻を対応付けて管理してもよい。図２６のステップＳ２４１２およびステップＳ２４１３の内容は、図７のステップＳ７１１およびステップＳ７１２の内容と同様なので、詳細な説明は省略する。
【０１０９】
図２７は、割込み待ちが発生したときのプロセッサ１００の動作手順の一例を示すシーケンス図である。ステップＳ２５００およびステップＳ２５０１の内容は、図６のステップＳ６００およびステップＳ６０１の内容と同様なので、詳細な説明は省略する。ステップＳ２５０１の後、割込み待ち設定部２１０は、割込み待ちとなった割込み種別と、割込み待ち発生時刻とを第２記憶部９３０および更新部１２９０の各々に対して通知する（ステップＳ２５０２）。ステップＳ２５０３の内容は、図６のステップＳ６０３の内容と同様なので、詳細な説明は省略する。
【０１１０】
割込み待ちとなった割込み種別および割込み待ち発生時刻の通知を受けた更新部１２９０は、通知された割込み種別に対応する割込み処理時間の計測を停止して、その計測結果を、当該割込み種別に対応する割込み処理時間として取得する（ステップＳ２５０４）。次に、更新部１２９０は、第１記憶部９１０を更新する（ステップＳ２５０５）。より具体的には、更新部１２９０は、第１記憶部９１０に記憶された割込み処理時間のうち、通知を受けた割込み種別に対応する割込み処理時間の値を、ステップＳ２５０４で取得した割込み処理時間の値に置き換える。
【０１１１】
以上に説明したように、本実施形態では、割込み処理を開始してから終了するまでの時間を計測して、第１記憶部９１０に記憶された割込み処理時間の値を可変に設定するため、第１記憶部９１０に記憶された処理時間の値を、現在のシステムにおいて最適な値に近づけることができる。
【０１１２】
（変形例）
以上、本発明の実施形態を説明したが、上述の各実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【０１１３】
例えば上述の第１実施形態では、スリープ状態から復帰する要因を示す復帰要因は割込みの発生である。そして、システムがスリープ状態から復帰した後に、他の割込み処理とは重複せずに単独で実行される割込み処理、あるいは、少なくとも一部の重複を持って実行される複数の割込み処理が終了するまでに必要な時間を、システム割込み処理時間として算出し、その算出したシステム割込み処理時間に応じて、システムのモードを設定しているが、これに限定されるものではない。すなわち、復帰要因は、割込みの発生に限らず任意に設定可能であり、当該復帰要因が発生した場合は、スリープ状態から復帰した後の処理に必要な時間を示すシステム処理時間（システム割込み処理時間はこの一例）に応じてモードを設定する構成であればよい。
【０１１４】
図１５の例では、第３記憶部９５０に記憶される設定情報の一例として、プロセッサ１００の電圧、周波数、１次キャッシュ１４０に対する電力供給の有無、２次キャッシュ１５０に対する電力供給の有無を挙げて説明したが、これに限らず、設定情報の内容は任意に設定可能である。例えばクロック（周波数）のみを設定情報として用いる構成であってもよい。また、メモリの転送方法やメモリの転送レートを指定する情報を設定情報として用いる構成であってもよい。さらに、割込み処理時に利用される命令セットが一部に限定される場合には、それ以外の命令セットにかかわる部分に対する電力供給を停止（電源オフ）することを指定する情報を設定情報として用いる構成であってもよい。例えば、ＡＲＭプロセッサの場合、ＡＲＭ標準命令とは別に、ＮＥＯＮと呼ばれる命令セットが用意されているが、これはシステムとして別々に構成される場合では、ＮＥＯＮの部分に対する電力供給を停止することができる。図２８は、設定情報として、メモリ転送方法、転送レート、および、利用可能な命令セットの各々を指定する情報が用いられる場合の例を示す図である。
【０１１５】
また、上述の各実施形態では、プロセッサ１００は、レジスタ１３０、１次キャッシュ１４０、２次キャッシュ１５０を有しているが、これに限らず、例えばプロセッサ１００が、１次キャッシュ１４０や２次キャッシュ１５０を有しない構成であってもよい。この構成であれば、システムのモード設定の対象（システム構成の対象）として１次キャッシュ１４０や２次キャッシュ１５０が含まれず、それに関する処理を省略できる。また、１次キャッシュ１４０や２次キャッシュ１５０の代わりに命令メモリやデータメモリと呼ばれる内部メモリを含む構成であってもよく、両方を含む構成であってもよい。この構成であれば、システムのモード設定の対象として、内部メモリを含む場合もあり、それに関する処理も行う場合もある。
【０１１６】
さらに、上述したＯＳ（２００，４００，６００，８００，１０００、１２００）の機能の少なくとも一部が、プロセッサ１００以外のハードウェアで実現される構成であってもよい。例えば、図２９に示すように、第１実施形態のプロセッサ１００の機能が、プロセッサ１００とは別のハードウェアである割込み管理部１４６０で実現することもできる。この場合、第１記憶部９１０の管理は割込み管理部１４６０で行われ、ＯＳ２００で第１記憶部９１０に記憶されたデータを読み出す場合には、割込み管理部１４６０を経由して読み出される。図２９の例におけるシステムは１４００と表記する。
【０１１７】
また、例えば図３０に示すように、上述の第２実施形態でハードウェアとして実現されていた電力状態管理部３６０は、ＯＳ１６００内の一機能である電力管理部１６９０として実現される構成であってもよい。電力管理部１６９０は、発電モジュール３８０から発電量を、バッテリー３８５から充電量を取得し、定期的にそれらの値を取得することにより、発電傾向や充電傾向を見積もる。判断部１６７０はターゲットシステムの電力状態を電力管理部１６９０から取得することにより同様の機能を実現することができる。
【０１１８】
また、上述した更新部１２９０で行っている割込み処理時間の計測を、各プロセス（９９９−１〜９９９−ｎ）で行う構成であってもよい。また、割込み処理時間の計測方法については、上述では割込み発生時刻から割込み待ち発生時刻までとしたが、それ以外の方法も考えられる。複数の割込み処理が行われている場合には各割込み処理が行われている時間を正確に把握し、割込み処理が行われている時間を割込み処理時間とする方法でもよい。
【０１１９】
図３１は、第１実施形態の変形例に係るシステム１５の構成例を示すブロック図である。図３１に示すように、システム１５は、プロセッサ１００と、記憶領域１７０と、制御装置１９７とを備え、それぞれがバス１９５で相互に接続されている。プロセッサ１００は、１または複数の処理を実行可能な処理装置である。制御装置１９７は、複数のデバイス（デバイス１（１９９−１）〜デバイスｎ（１９９−ｎ））の各々から、当該デバイスによる割込みの要求を示す割込み要求を受信し、その受信した割込み要求を、プロセッサ１００に送信するか否かを決定する。制御装置１９７は、条件に基づいて、受信した割込み要求を蓄えるか、プロセッサ１００へ送信するかを行う。このシステム１５のように制御装置１９７によって割込みが発生する時間が変わったとしても、それに合わせてシステム１５の状態（モード）が設定されるので、効率的に消費電力を低減できるという利点がある。
【０１２０】
また、ＣＰＵ１１０が実行するプログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するようにしてもよい。また、ＣＰＵ１１０が実行するプログラムを、インターネット等のネットワーク経由で提供または配布するようにしてもよい。また、ＣＰＵ１１０が実行するプログラムを、ＲＯＭ等に予め組み込んで提供するようにしてもよい。
【符号の説明】
【０１２１】
１０  システム
３０  システム
５０  システム
７０  システム
９０  システム
１００  プロセッサ
１１０  ＣＰＵ
１２０  記憶部
１３０  レジスタ
１４０  １次キャッシュ
１５０  ２次キャッシュ
１７０  記憶領域
１９０  バス
２１０  割込み待ち設定部
２２０  割込み検出部
２３０  算出部
２４０  第１決定部
２５０  モード設定部
２６０  割込み待ち解除部
３６０  電力状態管理部
３８０  発電モジュール
３８５  バッテリー
３９０  バス
４７０  判断部
４９０  第２決定部
６２０  割込み検出部
６３０  算出部
６４０  第１決定部
６５０  モード設定部
６５５  設定状態取得部
６８０  アイドル状態検出部
６９０  スリープ処理部
８５０  モード設定部
８７０  判断部
９１０  第１記憶部
９３０  第２記憶部
９５０  第３記憶部
１０８５  判断部
１０９０  第２決定部
１２６０  割込み待ち解除部
１２９０  更新部
１４６０  割込み管理部
１６７０  判断部
１６９０  電力管理部
【図１】
2015038780.tif 000003
【図２】
2015038780.tif 000004
【図３】
2015038780.tif 000005
【図４】
2015038780.tif 000006
【図５】
2015038780.tif 000007
【図６】
2015038780.tif 000008
【図７】
2015038780.tif 000009
【図８】
2015038780.tif 000010
【図９】
2015038780.tif 000011
【図１０】
2015038780.tif 000012
【図１１】
2015038780.tif 000013
【図１２】
2015038780.tif 000014
【図１３】
2015038780.tif 000015
【図１４】
2015038780.tif 000016
【図１５】
2015038780.tif 000017
【図１６】
2015038780.tif 000018
【図１７】
2015038780.tif 000019
【図１８】
2015038780.tif 000020
【図１９】
2015038780.tif 000021
【図２０】
2015038780.tif 000022
【図２１】
2015038780.tif 000023
【図２２】
2015038780.tif 000024
【図２３】
2015038780.tif 000025
【図２４】
2015038780.tif 000026
【図２５】
2015038780.tif 000027
【図２６】
2015038780.tif 000028
【図２７】
2015038780.tif 000029
【図２８】
2015038780.tif 000030
【図２９】
2015038780.tif 000031
【図３０】
2015038780.tif 000032
【図３１】
2015038780.tif 000033