(57)【要約】プログラム実行時間決定部は、登録された実行時間に関する要求と許容範囲とを満たす範囲で、所定時間範囲における、プログラムの実行に必要な処理量が均等化するように、プログラムの実行開始時刻及び単位時間当りの処理量を決定する。その結果、プログラムの実行時間に関する要求の許容範囲内で必要とする処理量を極力均等化するプログラムの実行時間を決定することができ、ＣＰＵの動作周波数の変動を抑えるクロック制御が行える。これにより、ＣＰＵの消費電力を削減することが可能となる。【特許請求の範囲】
【請求項１】
自身が有するＣＰＵのクロックを制御するＣＰＵクロック制御装置であって、
前記ＣＰＵが実行するプログラムをロードし、当該プログラムと、当該プログラムの実行時間に関する要求及び当該プログラムの実行時間に関する要求の許容範囲とを対応づけるプログラム管理部と、
前記プログラムの実行時間に関する要求と許容範囲とを前記プログラム管理部から受け取り、前記プログラムと対応づけて登録するプログラム実行時間登録部と、
前記プログラムの実行に必要な処理量を検知するプログラム処理量検知部と、
前記プログラム実行時間登録部に登録された実行時間に関する要求と許容範囲とを満たす範囲内で、前記プログラム処理量検知部により検知された処理量が所定時間範囲において均等化するように、前記プログラムの実行開始時刻及び単位時間当りの処理量を決定するプログラム実行時間決定部と、
前記プログラム実行時間決定部により決定された前記プログラムの実行開始時刻及び単位時間当りの処理量に基づき、前記ＣＰＵの各時刻における動作周波数を決定し、当該動作周波数を前記ＣＰＵに設定するＣＰＵ動作周波数設定部と、
前記ＣＰＵ動作周波数設定部により設定された動作周波数で動作する前記ＣＰＵに、前記プログラム実行時間決定部により決定された実行開始時刻及び単位時間当りの処理量で前記プログラムを実行させるプログラム実行部と、
を備えることを特徴とするＣＰＵクロック制御装置。
【請求項２】
割り込み発生時に実行される割り込み処理を行う割り込み処理部と、
前記割り込み処理に必要な処理量を検知する割り込み処理量検知部と、
前記割り込み処理部が割り込みの発生時刻において当該割り込み処理を行う場合、前記プログラム実行時間登録部に登録された実行時間に関する要求と許容範囲とを満たす範囲内で、前記プログラムの実行に必要な処理量と前記割り込み処理の処理量とが所定時間範囲において均等化するように、前記プログラムの実行開始時刻及び単位時間当りの処理量を再決定する割り込み時実行時間調整部と、
を更に備え、
前記ＣＰＵ動作周波数設定部は、前記プログラム実行時間決定部により均等化された処理量、または前記割り込み時実行時間調整部により均等化された処理量のいずれか新しい処理量に基づき前記ＣＰＵの動作周波数を決定し、
前記プログラム実行部は、前記プログラム実行時間決定部により決定された実行開始時刻及び単位時間当りの処理量、または前記割り込み時実行時間調整部により再決定された実行開始時刻及び単位時間当りの処理量のいずれか新しい実行開始時刻及び単位時間当りの処理量で、前記プログラムを実行させることを特徴とする請求項１記載のＣＰＵクロック制御装置。
【請求項３】
自身が有するＣＰＵのクロックを制御するＣＰＵクロック制御装置であって、
前記ＣＰＵが実行するタスクをロードし、当該タスクと、当該タスクの実行時間に関する要求及び当該タスクの実行時間に関する要求の許容範囲とを対応づけるタスク管理部と、
前記タスクの実行時間に関する要求と許容範囲とを前記タスク管理部から受け取り、前記タスクと対応づけて登録するタスク実行時間登録部と、
前記タスクの実行に必要な処理量を検知するタスク処理量検知部と、
前記タスク実行時間登録部に登録された実行時間に関する要求と許容範囲とを満たす範囲内で、前記タスク処理量検知部により検知された処理量が所定時間範囲において均等化するように、前記タスクの実行開始時刻及び単位時間当りの処理量をスケジューリングするタスクスケジューリング部と、
前記タスクスケジューリング部によりスケジューリングされた前記タスクの実行開始時刻及び単位時間当りの処理量に基づき、前記ＣＰＵの動作周波数を決定し、当該動作周波数を前記ＣＰＵに設定するＣＰＵ動作周波数設定部と、
前記ＣＰＵ動作周波数設定部により設定された動作周波数で動作する前記ＣＰＵに、前記タスクスケジューリング部によるスケジューリングに基づいて、前記タスクを実行させるタスク実行部と、
を備えることを特徴とするＣＰＵクロック制御装置。
【請求項４】
自身が有するＣＰＵのクロックを制御するＣＰＵクロック制御装置であって、
前記ＣＰＵが実行するタスクをロードし、当該タスクと、当該タスクの実行時間に関する要求及び当該タスクの実行時間に関する要求の許容範囲とを対応づけるタスク管理部と、
前記タスクの実行時間に関する要求と許容範囲とを前記タスク管理部から受け取り、前記タスクと対応づけて登録するタスク実行時間登録部と、
前記タスクの実行に必要な処理量を検知するタスク処理量検知部と、
前記タスク実行時間登録部に登録された実行時間に関する要求と許容範囲とを満たすように、前記タスクを制御するタイマーイベントを決定するタスク実行時間要求解釈部と、
前記タスク実行時間要求解釈部が決定したタイマーイベントを含むタイマーイベントの実行時間に関する要求と、前記タイマーイベントの実行時間の許容範囲とを登録するタイマーイベント登録部と、
前記タイマーイベントの実行に必要な処理量を検知するタイマーイベント処理量検知部と、
前記タイマーイベント登録部に登録されたタイマーイベントの実行時間に関する要求と許容範囲とを満たす範囲内で、タイマーイベントにより実行に移されるタスクに関し前記タスク処理量検知部が検知した必要処理量と、前記タイマーイベント処理量検知部が検知したタイマーイベントの処理量との合計が、所定時間範囲において均等化するように、前記タイマーイベントの実行開始時刻及び単位時間当りの処理量を決定するタイマーイベント決定部と、
前記タイマーイベント決定部により決定された前記タイマーイベントの実行開始時刻及び単位時間当りの処理量に基づき、前記ＣＰＵの動作周波数を決定し、当該動作周波数を前記ＣＰＵに設定するＣＰＵ動作周波数設定部と、
前記ＣＰＵ動作周波数設定部により設定された動作周波数で動作する前記ＣＰＵに、前記タイマーイベント決定部により決定された実行開始時刻及び単位時間当りの処理量に基づいて、前記タイマーイベントを実行させるタイマーイベント実行部と、
を備えることを特徴とするＣＰＵクロック制御装置。
【請求項５】
ＣＰＵが実行するプログラムの実行時間に関する要求と、前記プログラムの実行時間に関する要求の許容範囲とを、前記プログラムに対応づけて登録するプログラム実行時間登録工程と、
前記プログラムの実行に必要な処理量を検知するプログラム処理量検知工程と、
前記プログラム実行時間登録工程により登録された実行時間に関する要求と許容範囲とを満たす範囲内で、前記プログラム処理量検知工程により検知された処理量が所定時間範囲において均等化するように、前記プログラムの実行開始時刻及び単位時間当りの処理量を決定するプログラム実行時間決定工程と、
前記プログラム実行時間決定工程により決定された前記プログラムの実行開始時刻及び単位時間当りの処理量に基づき、前記ＣＰＵの各時刻における動作周波数を決定し、当該動作周波数を前記ＣＰＵに設定するＣＰＵ動作周波数設定工程と、
前記ＣＰＵ動作周波数設定工程により設定された動作周波数で動作する前記ＣＰＵに、前記プログラム実行時間決定工程により決定された実行開始時刻及び単位時間当りの処理量で前記プログラムを実行させるプログラム実行工程と、
を備えることを特徴とするＣＰＵクロック制御方法。
【請求項６】
自身が有するＣＰＵのクロックを制御するＣＰＵクロック制御装置としてコンピュータを機能させるＣＰＵクロック制御プログラムであって、
前記ＣＰＵが実行するプログラムの実行時間に関する要求と、前記プログラムの実行時間に関する要求の許容範囲とを、前記プログラムに対応づけて登録するプログラム実行時間登録手段と、
前記プログラムの実行に必要な処理量を検知するプログラム処理量検知手段と、
前記プログラム実行時間登録手段により登録された実行時間に関する要求と許容範囲とを満たす範囲内で、前記プログラム処理量検知手段により検知された処理量が所定時間範囲において均等化するように、前記プログラムの実行開始時刻及び単位時間当りの処理量を決定するプログラム実行時間決定手段と、
前記プログラム実行時間決定手段により決定された前記プログラムの実行開始時刻及び単位時間当りの処理量に基づき、前記ＣＰＵの各時刻における動作周波数を決定し、当該動作周波数を前記ＣＰＵに設定するＣＰＵ動作周波数設定手段と、
前記ＣＰＵ動作周波数設定手段により設定された動作周波数で動作する前記ＣＰＵに、前記プログラム実行時間決定工程により決定された実行開始時刻及び単位時間当りの処理量で前記プログラムを実行させるプログラム実行手段として前記コンピュータを機能させるＣＰＵクロック制御プログラム。
【請求項７】
自身が有するＣＰＵのクロックを制御するＣＰＵクロック制御装置としてコンピュータを機能させるＣＰＵクロック制御プログラムを記録したコンピュータ読み取り可能な記録媒体であって、
前記ＣＰＵが実行するプログラムの実行時間に関する要求と、前記プログラムの実行時間に関する要求の許容範囲とを、前記プログラムに対応づけて登録するプログラム実行時間登録手段と、
前記プログラムの実行に必要な処理量を検知するプログラム処理量検知手段と、
前記プログラム実行時間登録手段により登録された実行時間に関する要求と許容範囲とを満たす範囲内で、前記プログラム処理量検知手段により検知された処理量が所定時間範囲において均等化するように、前記プログラムの実行開始時刻及び単位時間当りの処理量を決定するプログラム実行時間決定手段と、
前記プログラム実行時間決定手段により決定された前記プログラムの実行開始時刻及び単位時間当りの処理量に基づき、前記ＣＰＵの各時刻における動作周波数を決定し、当該動作周波数を前記ＣＰＵに設定するＣＰＵ動作周波数設定手段と、
前記ＣＰＵ動作周波数設定手段により設定された動作周波数で動作する前記ＣＰＵに、前記プログラム実行時間決定工程により決定された実行開始時刻及び単位時間当りの処理量で前記プログラムを実行させるプログラム実行手段として前記コンピュータを機能させるＣＰＵクロック制御プログラムを記録したコンピュータ読み取り可能な記録媒体。
【請求項８】
自身が有するＣＰＵのクロックを制御するＣＰＵクロック制御装置としてコンピュータを機能させるＣＰＵクロック制御プログラムを保持する伝送媒体であって、
前記ＣＰＵが実行するプログラムの実行時間に関する要求と、前記プログラムの実行時間に関する要求の許容範囲とを、前記プログラムに対応づけて登録するプログラム実行時間登録手段と、
前記プログラムの実行に必要な処理量を検知するプログラム処理量検知手段と、
前記プログラム実行時間登録手段により登録された実行時間に関する要求と許容範囲とを満たす範囲内で、前記プログラム処理量検知手段により検知された処理量が所定時間範囲において均等化するように、前記プログラムの実行開始時刻及び単位時間当りの処理量を決定するプログラム実行時間決定手段と、
前記プログラム実行時間決定手段により決定された前記プログラムの実行開始時刻及び単位時間当りの処理量に基づき、前記ＣＰＵの各時刻における動作周波数を決定し、当該動作周波数を前記ＣＰＵに設定するＣＰＵ動作周波数設定手段と、
前記ＣＰＵ動作周波数設定手段により設定された動作周波数で動作する前記ＣＰＵに、前記プログラム実行時間決定工程により決定された実行開始時刻及び単位時間当りの処理量で前記プログラムを実行させるプログラム実行手段として前記コンピュータを機能させるＣＰＵクロック制御プログラムを保持する伝送媒体。
【発明の詳細な説明】
【技術分野】
【０００１】  本発明は、情報処理装置におけるＣＰＵの動作周波数を制御して消費電力の削減を行うＣＰＵクロック制御装置、ＣＰＵクロック制御方法、ＣＰＵクロック制御プログラム、記録媒体、及び伝送媒体に関するものである。
【背景技術】
【０００２】  情報処理装置（コンピュータ）は中央演算装置（ＣＰＵ）が命令を解釈、実行することで動作するが、ＣＰＵが消費する電力はその動作周波数（単位時間あたりに入力するクロック数）により変化する。動作周波数の制御によりＣＰＵの消費電力を削減する方法は、様々なものが考案、実用化されている。【０００３】  代表的な電力削減方法として、ＣＰＵを最大動作周波数で駆動することで要求される処理をなるべく早く行い、処理の必要の無い時間（アイドル時間）ではクロックを停止する方法がある。例えば、最大動作周波数が１００ＭＨｚのＣＰＵで５０Ｍ（メガ）クロック分の処理を１秒以内に行う必要が有る場合を考える。この場合は、まず１００ＭＨｚの動作周波数で０．５秒間ＣＰＵを駆動して処理を完了させ、残りの０．５秒間はクロックを完全に停止するといった処理を行う。また別の方法として、要求される時間内で処理を完了できる最小の動作周波数を算出し、その動作周波数でＣＰＵを駆動する方法がある。例えば、５０Ｍクロック分の処理を１秒以内に行う必要が有る場合、５０ＭＨｚの動作周波数で１秒間ＣＰＵを駆動する。この２つの方法は、いずれも処理に必要な最小限のクロックだけを使うことで無駄なクロックを削減し、ＣＰＵの消費電力を抑えるものである。【０００４】  要求される時間内で処理を完了できる最小動作周波数を算出して用いる技術として、タスク毎に要求するＣＰＵの性能情報を用いて、必要最小限の動作周波数でＣＰＵを動作させるクロック制御装置が開示されている（特許文献１参照）。また、ＣＰＵを複数備えたシステムにおいて、タスクを遅延なく処理するように動作周波数を変化させる演算処理システムが発明されている（特許文献２参照）。【０００５】  １クロックの入力でＣＰＵが消費する電力は、その電源電圧の２乗に比例することが知られている。また、ＣＰＵの動作周波数を上げる為には、同時に電源電圧を上げる必要があることが多い。従って、このようなＣＰＵでは、１クロックあたりに消費する電力が動作周波数によって異なるため、同じだけの処理量でも合計消費電力が異なる。例えば、動作周波数に比例した電源電圧が必要となるＣＰＵを用いると、前記従来の２つの電力削減方法では１秒間の総クロック数（＝処理量）は同じだが、この１秒間の消費電力は後者が前者の１／４になる。また、同様に、同じ量の処理を同じ時間内に行う場合では、なるべく動作周波数は変えずに一定の動作周波数でＣＰＵを駆動した方が消費電力は少なくなる。例えば最初の０．５秒間を２００ＭＨｚで駆動し、残りの０．５秒間を１００ＭＨｚで駆動するより、１５０ＭＨｚで１秒間駆動する方が消費電力は少なくなる。電源電圧と動作周波数の関係はＣＰＵの設計によるが、前述した様に、処理量の要求を満たす範囲でなるべくアイドルの期間を作らず、同一の動作周波数でＣＰＵを駆動すると大きな電力削減効果を得られる場合が多い。【０００６】  また、電力の供給に電池を用いる場合、単位時間当りの電力消費が安定している方が電池内のエネルギーを有効に利用できることが報告されている。また、これを利用したタスクスケジューリングアルゴリズムが開示されている（非特許文献１参照）。【０００７】  しかしながら、情報処理装置で処理を行う場合、処理の開始時刻や終了時刻、あるいは実行の周期といった実行時間が指定される場合が多い。例えば、映像の描画を行う場合、映像１フレームに相当する時間毎に周期的に処理を行う必要がある。状況によっては、周期の異なる複数の周期的処理や、周期的ではないが実行する時間を指定された処理を多数同時に実行することもある。このような時間を指定された処理は、例えば、情報処理装置のオペレーティングシステム（ＯＳ）が管理するタイマーイベントを用いたり、あるいはタイマーイベントからタスクを起動したりする形で実現することができる。【０００８】  前述した従来のＣＰＵでは、動作周波数を制御して、なるべくアイドルの期間を作らずかつ同一の動作周波数で動作させると、大きな電力削減効果を得られる。しかしながら、一般に、時間を指定された処理、例えばタイマーイベントやそれによって起動されるタスクは、特定の時間に集中することがある。また、それとは逆に特定の時間は処理が存在せずアイドル期間になることがある。つまり、ＣＰＵに要求される処理量は時間により変動するので、前記特許文献１に係る発明を用いても、ＣＰＵの動作周波数はその時間に要求される処理量に応じて大きく変動することになる。このように、動作周波数が大きく変動するため、前記特許文献１に係る発明の電力削減効果は減少するという課題を有していた。【０００９】  一方、タイマーイベントなどの実行時間を指定する処理において、その要求の厳密さは様々である。例えば、実行開始時刻を指定している場合でも、一定の範囲内なら実行開始時刻が遅れても許容できるものもある。しかし、このような実行時間要求の許容範囲を利用して、ＣＰＵが行うべき処理量を平滑化し、ＣＰＵ動作周波数の変動を抑える制御は、前記特許文献１、特許文献２、及び非特許文献１に記載の発明や技術では考慮されておらず、実現することが不可能であった。
【特許文献１】特開平８−７６８７４号公報
【特許文献２】特開２００２−９９４３３号公報
【非特許文献１】電子情報通信学会論文誌  Ｄ−Ｉ  Ｖｏｌ．Ｊ８３−Ｄ−Ｉ  Ｎｏ．１２  ｐｐ．１２４９−１２５９．
【発明の開示】
【００１０】  本発明は、上記課題を鑑みて成されたものであり、情報処理装置においてＣＰＵに要求される処理量を平滑化することによりＣＰＵの消費電力の削減を行うものである。
【００１１】  この目的のために本発明の一態様に係るＣＰＵクロック制御装置は、自身が有するＣＰＵのクロックを制御するＣＰＵクロック制御装置であって、前記ＣＰＵが実行するプログラムの実行時間に関する要求と、前記プログラムの実行時間に関する要求の許容範囲とを登録するプログラム実行時間登録部と、前記プログラムの実行に必要な処理量を検知するプログラム処理量検知部と、前記プログラム実行時間登録部に登録された実行時間に関する要求と許容範囲とを満たす範囲内で、前記プログラム処理量検知部により検知された処理量が所定時間範囲において均等化するように、前記プログラムの実行開始時刻及び単位時間当りの処理量を決定するプログラム実行時間決定部と、前記プログラム実行時間決定部により決定された前記プログラムの実行開始時刻及び単位時間当りの処理量に基づき、前記ＣＰＵの各時刻における動作周波数を決定し、当該動作周波数を前記ＣＰＵに設定するＣＰＵ動作周波数設定部と、前記ＣＰＵ動作周波数設定部により設定された動作周波数で動作する前記ＣＰＵに、前記プログラム実行時間決定部により決定された実行開始時刻及び単位時間当りの処理量で前記プログラムを実行させるプログラム実行部と、を備えるものである。
【００１２】  本発明の目的、特徴、局面、及び利点は、以下の詳細な説明と添付図面とによって、より明白となる。
【図面の簡単な説明】
【００１３】
【図１】本発明の実施の形態１におけるＣＰＵクロック制御装置を構築する情報処理装置の概略構成図である。
【図２】本発明の実施の形態１におけるＣＰＵ動作周波数制御時の動作を説明するフローチャートである。
【図３】本発明の実施の形態１における処理の一例を説明する図である。
【図４】本発明の実施の形態１における処理の一例を説明する図である。
【図５】本発明の実施の形態２におけるＣＰＵクロック制御装置を構築する情報処理装置の概略構成図である。
【図６】本発明の実施の形態２におけるＣＰＵ動作周波数制御時の動作を説明するフローチャートである。
【図７】本発明の実施の形態２における処理の一例を説明する図である。
【図８】本発明の実施の形態３におけるＣＰＵクロック制御装置を構築する情報処理装置の概略構成図である。
【図９】本発明の実施の形態３におけるＣＰＵ動作周波数制御時の動作を説明するフローチャートである。
【図１０】本発明の実施の形態３における処理の一例を説明する図である。
【図１１】本発明の実施の形態４におけるＣＰＵクロック制御装置を構築する情報処理装置の概略構成図である。
【図１２】本発明の実施の形態４におけるＣＰＵ動作周波数制御時の動作を説明するフローチャートである。
【図１３】本発明の実施の形態４における処理の一例を説明する図である。
【図１４】本発明の実施の形態４における処理の一例を説明する図である。
【発明を実施するための最良の形態】
【００１４】  以下本発明の実施の形態について、図面を参照しながら説明する。【００１５】  （実施の形態１）
図１は、本発明の実施の形態１のＣＰＵ動作周波数制御を行う情報処理装置を示す図である。情報処理装置５１は少なくても一つ以上の中央演算装置（ＣＰＵ）１とメモリ装置２とを備えている。また、情報処理装置５１は入力装置としての操作部３を備えている。さらに、情報処理装置５１は、図示しないが出力装置のような他の機器を備えていても良い。入力装置、出力装置については、他の実施の形態でも同様である。【００１６】  ＣＰＵ１は、動作周波数を変更可能であれば任意のタイプのものを用いることができる。ＣＰＵ１の動作周波数の変更はオペレーティングシステム（ＯＳ）１００、より正確には後述するＯＳ１００内のＣＰＵ動作周波数設定部１０４により行われる。【００１７】  メモリ装置２には、少なくとも一つ以上のプログラム１０、情報処理装置５１のＯＳ１００が格納されている。メモリ装置２は、十分な機能及び容量があればランダムアクセスメモリ（ＲＡＭ）、フラッシュメモリのような任意のタイプのものを使用することができる。また、メモリ装置２は単一のメモリ装置で構成されている必要はなく、同種の複数のメモリ装置、またはリードオンリーメモリ（ＲＯＭ）を含む、異なる種類のメモリ装置の組み合わせであっても良い。さらに、メモリ装置２以外に、例えばハードディスクのような外部記憶装置を設け、情報処理装置５１の動作に問題の無い範囲で外部記憶装置にメモリ装置２の内容を移動させても良い。【００１８】  本実施の形態でのプログラム１０とは、情報処理装置５１で実行される各々の処理を情報処理装置５１のプログラムとして記述したものである。つまり、プログラム１０に含まれる個々のプログラム＃１、＃２等は、実行単位として分けられるものであればサイズや形態等は任意で良い。また、本実施の形態では、ＯＳ１００の制御の元でプログラム１０を実行することで、情報処理装置５１は各種の処理を行う。【００１９】  上記のプログラム１０等は、ＲＯＭ、フレキシブルディスク、ＣＤ−ＲＯＭ等の記録媒体３１を通じて供給することも、電話回線、ネットワーク等の伝送媒体３３を通じて供給することも可能である。図１には、記録媒体３１としてＣＤ−ＲＯＭが描かれており、伝送媒体３３として電話回線が描かれている。ＣＤ−ＲＯＭに記録されたプログラム１０等は、例えば情報処理装置５１の外部装置としてのＣＤ−ＲＯＭ読取装置３２を情報処理装置５１本体へ接続することによって読み出すことができ、例えばＲＡＭあるいは図示しないハードディスク等に格納することができる。記録媒体３１としてＲＯＭの形態でプログラム１０等が供給される場合には、当該ＲＯＭを情報処理装置５１に搭載することにより、情報処理装置５１はプログラム１０等に従った処理を実行可能となる。この場合、当該ＲＯＭは、メモリ装置２に含まれる。伝送媒体３３を通じて供給されるプログラム１０等は、通信装置３４を通じて受信され、例えばＲＡＭあるいは図示しないハードディスク等に格納される。伝送媒体３３は、有線の伝送媒体に限らず無線の伝送媒体であっても良い。【００２０】  ＯＳ１００は、本実施の形態のＣＰＵクロック制御を行う為、プログラム管理部１１０、プログラム実行時間登録部１０１、プログラム処理量検��部１０２、プログラム実行時間決定部１０３、ＣＰＵ動作周波数設定部１０４、及びプログラム実行部１０５を備えている。本実施の形態においては、このプログラム管理部１１０、プログラム実行時間登録部１０１、プログラム処理量検知部１０２、プログラム実行時間決定部１０３、ＣＰＵ動作周波数設定部１０４、プログラム実行部１０５、及びＣＰＵ１がＣＰＵクロック制御装置１１としての機能を有する。【００２１】  プログラム管理部１１０は、管理テーブル１１１を備えている。管理テーブル１１１は、プログラム１０に含まれる個々のプログラム＃１、＃２等に対応させて、個々のプログラムの実行開始時刻、許容範囲等を記憶している。プログラム管理部１１０は、例えば、操作部３を介してユーザが実行を指示した個々のプログラム＃１、＃２等に対応する実行開始時刻、許容範囲等をプログラム実行時間登録部１０１に通知し、登録させる。ここで、プログラム管理部１１０は、必ずしもプログラムの実行開始時刻、許容範囲等を記憶している必要はなく、個々のプログラムと、当該プログラムの実行時間に関する要求及び当該プログラムの実行時間に関する要求の許容範囲とを対応づける機能を有していれば良い。【００２２】  プログラム実行時間登録部１０１は、プログラム管理部１１０の指示により、実行が指示されたプログラムの実行時間に関する要求とその許容範囲についての情報を登録する。プログラム実行時間登録部１０１は、登録されたプログラムの実行時間に関する要求とその許容範囲とをプログラム実行時間決定部１０３に通知する。【００２３】  プログラムの実行時間に関する要求とは、例えば、開始時刻に関する要求、つまりいつプログラムの実行を開始するかの要求である。あるいは、いつまでに処理を終える必要があるかといった終了時刻に関する要求や、周期的にプログラムを実行する場合の実行周期等である。どのような要求を登録可能にするかは、情報処理装置５１の使用の目的や環境に合わせて設計することが出来る。【００２４】  また、許容範囲とは、実行時間に関する要求に対してどの程度の変動が許されるかを示す情報である。例えば、開始時刻に関する要求に対しては、許される開始時刻の遅れ等が許容範囲の一例である。１秒後の実行開始を要求するが、０．１秒の開始時刻の遅れが許される場合は、実行時間に関する要求が１秒後、許容範囲が＋０．１秒となる。また、１０秒ごとの周期的な実行を要求し１秒の周期の早まりあるいは遅れ等の変動が許容できる場合は、実行時間に関する要求が１０秒周期、許容範囲は±１秒となる。どのような許容範囲を登録可能にするか、あるいはその表記の方法は、実行時間に関する要求と同様に、情報処理装置５１の使用の目的や環境に合わせて設計することが出来る。【００２５】  プログラム実行時間登録部１０１に登録される情報である実行時間に関する要求と許容範囲とは、例えば、プログラムを情報処理装置５１に登録またはインストールする時に、実行時間要求を登録する関数を呼び出して引数として渡せば良い。情報処理装置５１は、登録やインストールを行う専用のプログラムを備えているのが普通である。そのため、当該プログラムが前述した実行時間要求を登録する関数を呼び出すこと��、プログラム管理部１１０の制御のもとに、プログラム実行時間登録部１０１への登録処理を実現できる。【００２６】  あるいは、それに限られず、情報処理装置５１のユーザが、あるプログラムの実行指示を行った際に実行時間に関する要求と許容範囲とを指定する形態であっても良い。さらには、プログラム中にコードとして、実行時間に関する要求と許容範囲とが書き込まれている形態であっても良い。以上のプログラムの実行時間に関する要求と許容範囲とを登録する形態は、以下の実施の形態におけるタスクやタイマーイベントの実行時間に関する要求と許容範囲とを登録する際においても適用可能である。【００２７】  プログラム処理量検知部１０２は、プログラム１０に含まれる個々のプログラム＃１、＃２等の実行時に必要とされる処理量を検知し、プログラム実行時間決定部１０３に通知する。処理量の検知は、例えば、各プログラム＃１、＃２等の中に必要とされる処理量を記述しておき、実行前に各プログラム＃１、＃２等から関数の引数として渡すことで可能である。あるいは各プログラム＃１、＃２等のヘッダ等に処理量を記述しておき、プログラム処理量検知部１０２がその値を読み出しても良い。【００２８】  あるいは、複数回実行されるプログラムでは、プログラムを実際に実行して終了までにかかった時間を記録し、その時間に亘ってＣＰＵの動作周波数を積分（ＣＰＵ動作周波数が一定の場合は乗算することと等価）して要した処理量を実測しても良い。さらには、処理量の実測を複数回行い、そのデータの平均を取るといった方法でも良い。処理量の検知方法は、実際に検知が可能であれば任意の方法を用いることが出来る。また、本発明ではプログラムが必要とする処理量は正確な値である必要は必ずしもなく、処理量を大、中、あるいは小のようにおおまかに分類したものでも効果を得ることが出来る。これは本実施の形態に限らず、他の実施の形態でも同様である。【００２９】  プログラム実行時間決定部１０３は、プログラム実行時間登録部１０１から通知されたプログラム１０の実行時間に関する要求と許容範囲、及びプログラム処理量検知部１０２から通知された必要な処理量に基づき、プログラム１０に含まれる個々のプログラム＃１、＃２等の実行の時間を決定する。ここで、プログラム実行時間決定部１０３は、実行時間に関する要求とその許容範囲を満たす範囲で各プログラム１０に含まれる個々のプログラム＃１、＃２等の実行時間を決定する。同時に、予め定められた単位時間毎で、実行されるプログラムの必要処理量の合計がなるべく一定になるように実行の時間を決定する。つまり、単位時間当りのプログラムの必要処理量が極力等しくなる（均等化）ようにプログラムの実行時間を決定する。これにより、時間毎の必要処理量は平滑化されたことになる。そして、プログラム実行時間決定部１０３は、平滑化した処理量をＣＰＵ動作周波数設定部１０４に通知する。【００３０】  ＣＰＵ動作周波数設定部１０４は、プログラム実行時間決定部１０３により平滑化された処理量に基づいてＣＰＵの動作周波数を決定する。そして、ＣＰＵ動作周波数設定部１０４は、ＣＰＵ１に印加される電圧を制御すること等で当該動作周波数をＣＰＵ１に設定する。���た、例えば、ＣＰＵ動作周波数設定部１０４が、ＣＰＵ１内に設けられている、動作周波数を決定するレジスタの値を書き換えることで動作周波数を設定する形態であっても良い。【００３１】  設定される周波数は、例えば、必要とされる処理を各単位時間で丁度終了し、アイドル時間を作らない最小の動作周波数である。単位時間が１秒間で、ある単位時間の間（ここでは１秒間）に１００Ｍクロック分の処理が必要とされる場合、この１秒間は１００ＭＨｚの動作周波数に設定する。あるいは、実際の処理量に余裕を持たす為、最低限必要な動作周波数に一定量を加えた動作周波数に設定しても良い。【００３２】  いずれの場合も、単位時間毎に行わなければならない処理量は、プログラム実行時間決定部１０３により平滑化されている。そのため、ＣＰＵ動作周波数設定部１０４により設定される動作周波数の変動は、平滑化を行わない場合に比べて少なくなる。前述した様に、同じだけの処理量でもＣＰＵの動作周波数の変動は少ない方が消費電力は少なくなる。従って、平滑化を行わない場合に比べ、ＣＰＵが消費する電力は少なくなる。【００３３】  プログラム実行部１０５は、ＣＰＵ動作周波数設定部１０４により設定された動作周波数で動作するＣＰＵ１を用いて、プログラム実行時間決定部１０３の決定した実行時間でプログラム１０に含まれる個々のプログラム＃１、＃２等を実行する。【００３４】  図２は、本実施の形態のＣＰＵクロック制御装置の動作を説明するフローチャートである。ステップＳ２−１からステップＳ２−５までは、プログラム管理部１１０、プログラム実行時間登録部１０１及びプログラム処理量検知部１０２との動作、ステップＳ２−６からステップＳ２−９までは、プログラム実行時間決定部１０３、ＣＰＵ動作周波数設定部１０４、及びプログラム実行部１０５の動作である。【００３５】  ステップＳ２−１では、例えばユーザが操作部３を操作することにより、プログラム管理部１１０は情報処理装置５１が実行するプログラムを、例えば前述のＲＯＭ等からメモリ装置２内にロードし、登録する。続いてステップＳ２−２では、プログラム管理部１１０は管理テーブル１１１を参照し、登録されたプログラム１０の実行時間に関する要求と許容範囲とをプログラム実行時間登録部１０１に登録する。ステップＳ２−３では、プログラム実行時間登録部１０１は、登録された実行時間に関する要求と許容範囲とをプログラム実行時間決定部１０３に通知する。【００３６】  ステップＳ２−４では、プログラム処理量検知部１０２は、実行を要求されたプログラムに必要な処理量の検知を行う。前述の通り、ステップＳ２−４は、例えば情報処理装置５１が備えている、登録やインストールを行う専用のプログラムが、実行時間要求を登録する関数を呼び出して必要処理量を検知したり、実際のプログラムの実行を待って必要処理量の実測をしたりする。ステップＳ２−５では、プログラム処理量検知部１０２は、検知したプログラムの必要処理量をプログラム実行時間決定部１０３に通知する。なお、図２のフローチャートでは、時間に関する要求と許容範囲との登録、及び通知（Ｓ２−２、Ｓ２−３）を必要処理量の検知と通知（Ｓ２−４、Ｓ２−５）より先に行���ているが、必ずしもその必要は無い。これらは独立したものなので、任意の順番で実行することが可能である。【００３７】  ステップＳ２−６は、プログラム実行時間決定部１０３の呼び出しである。プログラム実行時間決定部１０３の呼び出しは、新しいプログラムが登録された直後、つまりプログラム実行時間登録部１０１からの実行時間に関する要求と許容範囲、及びプログラム処理量検知部１０２からの必要処理量がプログラム実行時間決定部１０３に通知された後（ステップＳ２−５の直後）で良い。あるいは、特定の周期で周期的に行ったり、一つのプログラムが処理を完了した時に呼び出したりしても良い。【００３８】  Ｓ２−７は、実行が要求され、プログラム実行時間決定部１０３に実行時間に関する要求等が通知されている全てのプログラムの実行時間の決定を行う。前述の通り、プログラム実行時間決定部１０３は、ステップＳ２−３で通知されている各プログラムの実行時間要求と許容範囲とを満たす範囲で、ステップＳ２−５で通知された各プログラムの必要処理量の単位時間当りの合計が、極力均等化するように実行時間を決定する。【００３９】  ステップＳ２−７の実行時間の決定は、制約を満たしながらプログラムの実行時間を配置する一般的な問題であり、様々なアルゴリズムを用いることが出来る。例えば、対象となるプログラム１０が比較的少数なら、考えられる全ての実行時間のパターンを列挙して処理量の変動を比較しても良い。ただし、本発明では完全な均等化を行う必要は必ずしも無い。ＣＰＵ動作周波数の変動を少なくした分だけ消費電力を少なく出来るので、完全でなくても均等化した分だけの消費電力削減効果を得られる。従って、例えば、最も必要処理量の大きくなる時間から、一つのプログラムの実行を別の時間へ移動させるだけでも効果がある。【００４０】  また、プログラムの必要処理量が正確な値でなく近似値の場合でも、ある程度の均等化は可能なので、消費電力削減の効果を得ることが出来る。さらに、ここでは全てのプログラムの実行時間を決定する必要はなく、現在時刻から一定先の時刻までの実行時間を決定するだけでも良い。均等化には計算時間が必要となるので、どの程度正確な均等化を行うかは、情報処理装置５１の使用の目的や環境に合わせて設計すれば良い。【００４１】  ステップＳ２−８では、プログラム実行時間決定部１０３により決定された実行時間を受けて、ＣＰＵ動作周波数設定部１０４はＣＰＵ１の動作周波数を決定し、当該動作周波数をＣＰＵ１に設定する。Ｓ２−９では、プログラム実行部１０５が実行を要求されたプログラムを実行する。プログラムはプログラム実行時間決定部１０３により決定された時間に実行される。従って、実際は、ステップＳ２−９はステップＳ２−８終了後直ちに実行されるわけではなく、決定された実行時間を迎えた時に実行される。【００４２】  図３は、本実施の形態において、ＣＰＵクロック制御装置が行う処理の一例である。図３（ａ１）は、実行が要求されているプログラムと、当該プログラムが要求している実行時間とをそのまま時間軸上に配置した模式図である。（ａ１）は、図２のステップＳ２−１からステップＳ２−５の結果、プログラム実行時間決定部１０３に���知される情報であり、横軸は時刻（単位は任意）、縦軸はその時間に必要される処理量（Ｍクロック）である。四角のブロックはプログラムを表しており、ブロックの縦の大きさはそれぞれのプログラムの必要処理量に対応する。（ａ１）では、ＡからＤまでの４つのプログラムが登録されている。プログラム名であるアルファベットの後の値はプログラムの必要処理量（単位はＭクロック）であり、その後ろの値は要求された実行開始時刻と許容範囲である。プログラムＡの場合、必要処理量が１００、実行開始時刻が０、許容範囲が＋２となる。【００４３】  図３の例では、実行時間の要求は、その値の時刻からその次の時刻までの間での実行と処理の完了とを要求しているとする。つまり、Ａの場合は実行開始時刻が０であるから、時刻０から１の間での実行と処理の完了とを要求していることになる。以下では、これを「時刻０での実行を要求している」という様に表記する。Ｃの場合は、時刻２から３の間での実行と処理の完了とを要求しているので、「時刻２での実行を要求している」となる。【００４４】  許容範囲の値は、実行時間の変動の範囲を表しており、＋１の場合は時間１の実行の遅れまで許容、＋２なら時間２の遅れまで許容となる。プログラムＡの場合は許容範囲が＋２なので、要求時刻０での実行を要求しているが時刻１や２での実行でも許容できる。プログラムＢは時刻０での実行を要求しており、かつ許容範囲が０なので、他の時刻での実行は出来ない。プログラムＣ及びＤは時刻２での実行を要求しており、かつ許容範囲が０なので、この時刻で実行しなければならない。【００４５】  図３（ｂ１）は、（ａ１）の実行時間でプログラムＡからＤを実行し、各時間でそれぞれの処理を必要最小限の動作周波数で完了する、つまりアイドル期間をつくらないようにＣＰＵ動作周波数を設定した場合を表している。この（ｂ１）の横軸は（ａ１）と同じく時刻であるが、縦軸はＣＰＵ１の動作周波数（Ｍクロック／単位時間）である。【００４６】  図３（ａ２）は、ステップＳ２−６、Ｓ２−７が実行され、プログラム実行時間決定部１０３により決定されたプログラムの実際の実行時間を表している。ステップＳ２−７の結果、プログラム実行時間決定部１０３は、時間毎の必要周波数が均等化するように、プログラムＡを時刻１で実行することを決定する。なお、ここでは計算に必要な処理量を考えて、現在時刻より３時刻先までのプログラム実行のみを均等化している。つまり図３中の時刻の範囲のみで考えている。【００４７】  図３（ｂ２）は、プログラム実行時間決定部１０３により決定された（ａ２）のプログラム実行時間を達成するために、ＣＰＵ動作周波数設定部１０４が決定したＣＰＵ動作周波数である。（ｂ２）は（ｂ１）と比較すると動作周波数の変動が少なくなっており、この期間でのＣＰＵの消費電力が削減される。また、各プログラムはそれぞれの許容範囲を満たして実行されている。【００４８】  図４は、本実施の形態において、ＣＰＵクロック制御装置が行う処理の他の一例である。図４（ａ１）は、図３（ａ１）と同様、実行が要求されているプログラムと、当該プログラムが要求している実行時間とをそのまま時間軸上に配置した模式図である。プロ���ラムＡは周期２での周期的実行を要求しており、図４（ａ１）ではこれを実行時間要求においてＰ２と表記している。周期的実行なので、プログラムＡは時刻０、２、４での実行を要求していることになる。ただしプログラムＡの許容範囲は＋１なので、実行される時刻が１だけ遅れても許容できる。（ａ２）は、プログラム実行時間決定部１０３により実行時間が決定された後の状態を示す模式図である。この（ａ２）に示した例では、時刻２での実行を要求しているプログラムＡは、許容範囲が＋１であるため実行される時刻が１だけ遅れて、実際には時刻３で実行される。【００４９】  図４（ｂ１）、（ｂ２）は、ＣＰＵ動作周波数設定部１０４により決定された、プログラム実行処理に必要な最小の動作周波数を用いる場合のＣＰＵ１の動作周波数である。（ｂ２）においても、動作周波数が完全に均等化されている訳ではないが、（ｂ１）に比べて動作周波数の変動が少なくなり、ＣＰＵの消費電力はその分だけ削減される。また、各プログラムＡ〜Ｅはそれぞれの許容範囲を満たして実行されている。【００５０】  以上の様に、本発明ではプログラムの実行時間に関する要求を許容範囲内で満たした上で、ＣＰＵの消費電力を削減することが可能である。なお、本実施の形態でのプログラム１０は、情報処理装置５１で実行される全ての処理である必要はなく、その内の特定の一部でも良い。同様に、全てのプログラム１０が、時間要求と許容範囲とを登録する必要は無い。処理量を平滑化されるのが全ての処理のうちの一部であっても、平滑化された分に応じた消費電力の削減効果を得ることが可能である。【００５１】  なお、本発明の実施の形態ではＯＳ１００内に、プログラム実行時間登録部１０１、プログラム処理量検知部１０２、プログラム実行時間決定部１０３、ＣＰＵ動作周波数設定部１０４、及びプログラム実行部１０５を設けたが、ＯＳ１００の外部に設けることも可能である。【００５２】  （実施の形態２）
図５は、本発明の実施の形態２のＣＰＵ動作周波数制御を行う情報処理装置を示す図である。この図において、ＣＰＵ１及びメモリ装置２を備える構成は実施の形態１と同じである。また、プログラム２０は実施の形態１のプログラム１０と同様に、情報処理装置５１で実行される各々の処理を情報処理装置５２のプログラムとして記述したものである。ＣＰＵ１の動作周波数の変更等は、ＯＳ２００内のＣＰＵ動作周波数設定部２０７により行われる。【００５３】  ＯＳ２００は、本実施の形態のＣＰＵクロック制御を行う為、プログラム管理部２１０、プログラム実行時間登録部２０１、プログラム処理量検知部２０２、プログラム実行時間決定部２０３、割り込み処理量検知部２０４、割り込み処理部２０５、割り込み時実行時間調整部２０６、ＣＰＵ動作周波数設定部２０７、及びプログラム実行部２０８を備えている。本実施の形態においては、このプログラム管理部２１０、プログラム実行時間登録部２０１、プログラム処理量検知部２０２、プログラム実行時間決定部２０３、割り込み処理量検知部２０４、割り込み処理部２０５、割り込み時実行時間調整部２０６、ＣＰＵ動作周波数設定部２０７、プログラム実行部２０８、及びＣＰＵ１がＣＰＵクロック制御装置１２としての機能を有する。【００５４】  プログラム管理部２１０は、管理テーブル２１１を備えている。管理テーブル２１１は、プログラム２０に含まれる個々のプログラム＃１、＃２等に対応させて、個々のプログラムの実行開始時刻、許容範囲等を記憶している。プログラム管理部２１０は、例えば、操作部３を介してユーザが実行を指示した個々のプログラム＃１、＃２等に対応する実行開始時刻、許容範囲等をプログラム実行時間登録部２０１に通知し、登録させる。ここで、プログラム管理部２１０は、必ずしもプログラムの実行開始時刻、許容範囲等を記憶している必要はなく、個々のプログラムと、当該プログラムの実行時間に関する要求及び当該プログラムの実行時間に関する要求の許容範囲とを対応づける機能を有していれば良い。【００５５】  プログラム実行時間登録部２０１は実施の形態１のプログラム実行時間登録部１０１と同様に、プログラム２０からその時間に対する要求と、許容範囲についての情報とを受け取り、プログラム実行時間決定部２０３と割り込み時実行時間調整部２０６とに通知する。同様に、プログラム処理量検知部２０２は実施の形態１のプログラム処理量検知部１０２と同様に、プログラム２０の実行に必要な処理量を、プログラム実行時間決定部２０３と割り込み時実行時間調整部２０６とに通知する。【００５６】  プログラム実行時間決定部２０３は、実施の形態１のプログラム実行時間調整部１０３と同様に、プログラムの実行時間に関する要求、許容範囲、及び必要な処理量に基づき、一定時間毎のプログラムの必要処理量の合計がなるべく均等になるようにプログラムの実行の時間を決定する。【００５７】  割り込み処理量検知部２０４は、割り込み発生時に実行される処理（割り込みハンドラ）が必要とする処理量を、割り込み時実行時間調整部２０６に通知する。割り込み処理が必要とする処理量の検知は、例えば、予め処理量を見積もっておき、割り込みハンドラをＯＳ��００に登録する時にその値を渡せば可能である。あるいは、実際に割り込み処理が行われた際に要した処理量を実測して、それに基づき検知しても良い。【００５８】  割り込み処理部２０５は、割り込み信号が発生した際に、対応する割り込み処理を実行し、合わせて割り込み処理が発生したことを割り込み時実行時間調整部２０６に通知する。【００５９】  割り込み時実行時間調整部２０６は、プログラム実行時間決定部２０３と同様に、プログラムの実行時間に関する要求、許容範囲、及び必要な処理量に基づき、一定時間毎のプログラムの必要処理量の合計が時間に依らずなるべく一定になるようにプログラムの実行の時間を決定する。ただし、割り込み時実行時間調整部２０６は、割り込み処理部２０５より割り込み発生が通知された場合にのみプログラム実行時間の決定を行う。また、プログラム実行時間の決定は、割り込み処理量検知部２０４より通知されている割り込み処理の処理量を、割り込み発生時間に行う処理として追加した上で、単位時間毎の処理量を極力均等化するようにプログラムの実行の時間を決定するものである。つまり、割り込み処理に費やした処理量を計算に入れた上で処理量が平滑化するようにプログラムの実行時間を再決定する。【００６０】  ＣＰＵ動作周波数設定部２０７は、実施の形態１のＣＰＵ動作周波数設定部１０４と同様に、プログラム実行時間決定部２０３により平滑化された単位時間毎に必要になる処理量に基づいてＣＰＵの動作周波数を決定する。そして、ＣＰＵ動作周波数設定部２０７は、ＣＰＵ１に印加される電圧を制御することで当該動作周波数をＣＰＵ１に設定する。さらに、割り込み時実行時間調整部２０６がプログラム実行時間を再決定した場合は、ＣＰＵ動作周波数設定部２０７は、割り込み時実行時間調整部２０６により平滑化された処理量に基づいてＣＰＵ動作周波数を決定する。つまり、ＣＰＵ動作周波数設定部２０７は、最新の平滑化の結果に基づきＣＰＵ動作周波数を設定する。その結果、ＣＰＵ動作周波数設定部２０７が平滑化を行わない場合に比べて、設定される動作周波数の変動は少なくなるため、ＣＰＵが消費する電力は削減される。また、割り込み処理が実行された場合は、それを加えた上で、ＣＰＵ動作周波数設定部２０７は平滑化された必要処理量に基づいてＣＰＵ動作周波数を決定するので、割り込みが発生した場合でも適切なＣＰＵ動作周波数を用いることが出来る。【００６１】  プログラム実行部２０８は、ＣＰＵ動作周波数設定部２０７により設定された動作周波数で動作するＣＰＵ１を用いて、プログラム実行時間決定部２０３の決定した実行時間でプログラム２０に含まれる個々のプログラム＃１、＃２等を実行する。しかしながら、割り込み時実行時間調整部２０６がプログラム実行時間を再決定した場合は、プログラム実行部２０８は、再決定された実行時間でプログラム１０を実行する。つまり、プログラム実行部２０８は、割り込み発生も含めた最新の決定に基づきプログラム１０を実行する。【００６２】  図６は本実施の形態のＣＰＵクロック制御装置の動作を説明するフローチャートである。ステップＳ６−１からステップＳ６−５は、プログラムの時間要求と許容範囲の登録、及び処理量の検知���あり、実施の形態１のステップＳ２−１からステップＳ２−５（図２）と同様である。【００６３】  ステップＳ６−６はプログラム実行時間決定部２０３の呼び出しであり、実施の形態１のステップＳ２−６と同様である。また、ステップＳ６−７は、実施の形態１のステップＳ２−７と同様である。ステップＳ６−８では、プログラム実行時間決定部２０３は、決定した実行時間と必要な処理量とをＣＰＵ動作周波数設定部２０７とプログラム実行部２０８とに通知する。【００６４】  ステップＳ６−９からステップＳ６−１１は割り込み処理部２０５及び割り込み時実行時間調節部２０６が行う処理の流れである。ここでは、割り込み処理の処理量は、事前に検知されているとし図示していない。ステップＳ６−９は割り込みの発生であり、ＣＰＵ１はレジスタ４を読みに行き、要求された割り込みを割り込み処理部２０５に通知する。その通知を受け取ると、割り込み処理部２０５は、ステップＳ６−２０において要求された割り込み処理を実行する。そして、ステップＳ６−１０及びＳ６−１１は割り込みを契機に行なわれる処理である。ステップＳ６−１０は、割り込み時実行時間調整部２０６が行う、割り込み処理に必要な処理量を含めた上でのプログラム実行時間の決定である。このステップＳ６−１０は、割り込み処理を現在の時間に必要な処理とみなす以外は、ステップＳ６−７と同様である。ステップＳ６−１１では、割り込み時実行時間調整部２０６は、決定した実行時間と必要な処理量とをＣＰＵ動作周波数設定部２０７とプログラム実行部２０８とに通知する。【００６５】  ステップＳ６−１２からステップＳ６−１４は、ＣＰＵ動作周波数２０７とプログラム実行部２０８とが行う処理の流れである。ステップＳ６−１２は、ステップＳ６−８（割り込みが発生しなかった場合）、またはＳ６−１１（割り込みが発生した場合）におけるプログラム実行時間と必要処理量との通知であり、ステップＳ６−１３及びＳ６−１４はこれを契機に実行される。Ｓ６−１３は、ＣＰＵ動作周波数設定部２０７が、通知された必要処理量に基づいて行うＣＰＵ動作周波数の決定である。また、ステップＳ６−１４では、プログラム実行部２０８は、ステップＳ６−８またはステップＳ６−１１において決定された実行時間でプログラム２０を実行する。【００６６】  図７は、本実施の形態において、ＣＰＵクロック制御装置が行う処理の一例である。図７（ａ１）及び（ａ２）は、図３（ａ１）及び（ａ２）と同様に、縦軸が必要処理量（Ｍクロック）であり、横軸が時刻（単位は任意）を表す。また、図７（ｂ１）及び（ｂ２）は、図３（ｂ１）及び（ｂ２）と同様に、縦軸が動作周波数（Ｍクロック／単位時間）であり、横軸が時刻（単位は任意）を表す。【００６７】  図７（ａ１）は、図６のステップＳ６−１からＳ６−８の結果として、プログラムの実行時間が決定された後に、必要処理量１５０の割り込み処理が発生した状態を示している。この割り込み発生により、ステップＳ６−９、Ｓ６−２０及びＳ６−１０が実行され、割り込み時実行時間調整部２０６においてプログラムの実行時間が再決定される。この例では、プログラムＡ、Ｂは共に、実行開始時刻が０であり、許容範囲は＋２である。そのため、「時刻０での実行を要求している」が時間２の遅れまでが許容され、時刻２までに実行すればよいことがわかる。それに対して、プログラムＣ、Ｄは共に許容範囲が０であるために、それぞれ時刻１及び時刻２で実行されなければならない。【００６８】  以上により、割り込み時実行時間調整部２０６は、（ａ２）に示したように、プログラムＡ、Ｂの実行の時刻を変更し、それぞれ時刻１及び時刻２での実行とする。この図７（ａ１）及び（ａ２）に示した縦軸の必要処理量をＣＰＵ１の動作周波数に直したものが、それぞれ図７（ｂ１）及び（ｂ２）である。図７（ｂ１）からわかるように、時刻０と１との間で実行させる割り込みが発生した場合、そのままではＣＰＵ１の動作周波数として「２５０」が必要となる。しかしながら、時刻１以降は割り込み処理が終了しているため、ＣＰＵ１の動作周波数としては「１００」が設定される。このように、割り込み時実行時間調整部２０６がプログラムＡ、Ｂの実行の時刻を変更しなければ、ＣＰＵ１の動作周波数の変動が大きく、それに伴ってＣＰＵ１の消費電力も大きいものとなる。【００６９】  それに対して、割り込み時実行時間調整部２０６がプログラムＡ、Ｂの実行の時刻を変更すると、図７（ｂ２）に示したように、プログラムの実行に必要な処理量が均等化されるため、ＣＰＵ１の動作周波数の変動が少なくなる。これにより、ＣＰＵ１の消費電力は削減される。またこのとき、各プログラムはそれぞれの許容範囲を満たして実行されている。【００７０】  なお、本実施の形態においても、実施の形態１と同様に、プログラム２０は情報処理装置で実行される全ての処理である必要はなく、その内の特定の一部であっても良い。また、時間要求と許容範囲を登録するのは一部のプログラムでも良い。【００７１】  なお、本発明の実施の形態ではＯＳ２００内に、プログラム管理部２１０、プログラム実行時間登録部２０１、プログラム処理量検知部２０２、プログラム実行時間決定部２０３、割り込み処理量検知部２０４、割り込み処理部２０５、割り込み時実行時間調整部２０６、ＣＰＵ動作周波数設定部２０７、プログラム実行部２０８を設けたが、ＯＳ２００の外部に設けることも可能である。【００７２】  （実施の形態３）
図８は、本発明の実施の形態３のＣＰＵ動作周波数制御を行う情報処理装置を示す図である。この図において、ＣＰＵ１及びメモリ装置２を備える構成は実施の形態１と同じである。【００７３】  タスク３０に含まれる各タスク＃１、＃２等は、情報処理装置が処理を行う単位であり、ＯＳ３００により、それぞれが持つ優先度に応じた順番で時分割的に実行される。ここで、タスクは、ＯＳによって「プロセス」または「スレッド」に分類される。プロセスとは、お互いに相互干渉しないように制御される処理単位であり、一般的なパソコンでは、ワープロや表計算プログラムなどがある。スレッドとは、ＯＳが１つのアプリケーション内の処理を並列して行う場合の処理の最小単位であり、プロセス内の逐次処理の単位である。一つのプロセスは複数のスレッドで構成することができる。【００７４】  また、このように複数のタスクを並行して動作させる処理形態はマルチタスク処理と呼ばれ、一般的に用いられる処理形態である。本実施の形態の情報処理装置は、このマルチタスク処理を行うものとして説明する。また、本明細書においては、実施の形態１及び２におけるプログラムは、本実施の形態におけるタスク等を含んだ包括的なものであり、必ずしも最小の実行単位である必要はない。つまり、単独のタスクも、複数のタスクをまとめたものも共にプログラムということができる。【００７５】  ＯＳ３００は、本実施の形態のＣＰＵクロック制御を行う為、タスク管理部３１０、タスク実行時間登録部３０１、タスク処理量検知部３０２、タスクスケジューリング部３０３、ＣＰＵ動作周波数設定部３０４、及びタスク実行部３０５を備えている。本実施の形態においては、このタスク管理部３１０、タスク実行時間登録部３０１、タスク処理量検知部３０２、タスクスケジューリング部３０３、ＣＰＵ動作周波数設定部３０４、タスク実行部３０５、及びＣＰＵ１がＣＰＵクロック制御装置１３としての機能を有する。【００７６】  タスク管理部３１０は、管理テーブル３１１を備えている。管理テーブル３１１は、タスク３０に含まれる個々のタスク＃１、＃２等に対応させて、個々のタスクの実行開始時刻、許容範囲等を記憶している。タスク管理部３１０は、例えば、操作部３を介してユーザが実行を指示した個々のタスク＃１、＃２等に対応する実行開始時刻、許容範囲等をタスク実行時間登録部３０１に通知し、登録させる。ここで、タスク管理部３１０は、必ずしもタスクの実行開始時刻、許容範囲等を記憶している必要はなく、個々のタスクと、当該タスクの実行時間に関する要求及び当該タスクの実行時間に関する要求の許容範囲とを対応づける機能を有していれば良い。【００７７】  タスク実行時間登録部３０１は、タスク管理部３１０の指示により、タスクの実行時間に対する要求と、その許容範囲についての情報とを登録し、それらの情報をタスクスケジューリング部３０３に通知する。ここで、タスクの実行時間に関する要求とは、例えば、タスクの開始時刻に関する要求、終了時刻に関する要求、実行周期等である。どのような要求を登録可能にするかは、ＯＳ３００のタスクスケジューリングの方法に合わせて設計することが出来る。また、同様に、どのような許容範囲を登録��能にするか、あるいはその表記の方法は、ＯＳ３００のタスクスケジューリングの方法に合わせて設計される。【００７８】  タスク処理量検知部３０２は、各タスクの必要とする処理量を検知し、タスクスケジューリング部３０３に通知する。処理量の検知は、例えば、タスクのスケジューリングの方法を指定する際に、予め見積もられた処理量を合わせてＯＳ３００に渡すことで可能である。あるいは、実際にタスクを実行して要した処理量を求めて、それに基づき決定しても良い。【００７９】  一般的にマルチタスクの情報処理装置５３は、タスクのスケジューリングの方法を指定するインターフェイスを備えていることが多い。このインターフェイスは、例えば、周期的なタスクの実行を関数呼び出しで要求し、関数の引数で周期を指定するものである。また、それとは異なり、特定のタスクに関し、特定の時間毎にかならず一定量の処理を行うといった指定などもある。そのようなインターフェイスを備えている場合、その指定を実行時間に関する要求や処理量の検知に用いることが出来る。【００８０】  タスクスケジューリング部３０３はタスクのスケジューリングを行う。タスクスケジューリング部３０３は、時間に関する要求とその許容範囲とを満たす範囲でタスクをスケジューリングするが、同時に一定時間毎のタスクの必要処理量の合計がなるべく均等になるようにタスクをスケジューリングする。【００８１】  ＣＰＵ動作周波数設定部３０４は、タスクスケジューリング部３０３により平滑化された単位時間毎に必要になる処理量に基づいてＣＰＵの動作周波数を決定する。そして、ＣＰＵ動作周波数設定部３０４は、ＣＰＵ１に印加される電圧を制御することで当該動作周波数をＣＰＵ１に設定する。タスク３０が単位時間毎に実行を要求される処理量はタスクスケジューリング部３０３により平滑化される。そのため、ＣＰＵ動作周波数設定部３０４により設定される動作周波数の変動は平滑化を行わない場合に比べて少なくなり、ＣＰＵ１の消費する電力は削減される。タスク実行部３０５は、タスクスケジューリング部３０３の行ったスケジューリングに基づきタスク３０を実行する。【００８２】  図９は本実施の形態での処理の流れを示すフローチャートである。ステップＳ９−１では、まず、例えばユーザが操作部３を操作することにより、タスク管理部３１０は、情報処理装置５３が実行するタスクを、例えば前述のＲＯＭ等からメモリ装置２内にロードし、登録する。続いてステップＳ９−２では、タスク管理部３１０は、登録されたタスク３０の実行時間に関する要求と許容範囲とをタスク実行時間登録部３０１に登録する。ステップＳ９−３では、タスク実行時間登録部３０１は、登録された実行時間に関する要求と許容範囲とをタスクスケジューリング部１０３に通知する。【００８３】  ステップＳ９−４では、タスク処理量検知部３０２は、実行を要求されたタスクに必要な処理量の検知を行う。前述の通り、ステップＳ９−４は、例えばタスクから関数を呼び出して必要処理量を検知したり、実際のプログラムの実行を待って必要処理量の実測をしたりする。ステップＳ９−５では、タスク処理量検知部１０２は、検知したタスクの必要処理量をタスクスケジューリング部��０３に通知する。なお、図９のフローチャートでは、時間に関する要求と許容範囲との登録、及び通知（Ｓ９−２、Ｓ９−３）を必要処理量の検知と通知（Ｓ９−４、Ｓ９−５）より先に行っているが、必ずしもその必要は無い。これらは独立したものなので、任意の順番で実行することが可能である。【００８４】  ステップＳ９−６は、タスクスケジューリング部３０３の呼び出しである。タスクスケジューリング部３０３の呼び出しは、通常のタスクスケジューリングのタイミングで行えば良い。あるいは、特定の周期で周期的に行ったり、一つのタスクが処理を完了した時に呼び出したりしても良い。【００８５】  Ｓ９−７では、実行が要求され、タスクスケジューリング部３０３に実行時間に関する要求等が通知されている全てのタスクの実行時間の決定を行う。前述の通り、タスクスケジューリング部３０３は、ステップＳ９−３で通知されている各タスクの実行時間要求と許容範囲とを満たす範囲で、ステップＳ９−５で通知された各タスクの必要処理量の単位時間当りの合計が、極力均等化するようにスケジューリングする。【００８６】  ステップＳ９−７の実行時間の決定は、制約を満たしながらタスクの実行時間を配置する一般的な問題であり、様々なアルゴリズムを用いることが出来る。例えば、対象となるタスク３０が比較的少数なら、考えられる全ての実行時間のパターンを列挙して処理量の変動を比較しても良い。ただし、本発明では完全な均等化を行う必要は必ずしも無い。ＣＰＵ動作周波数の変動を少なくした分だけ消費電力を少なく出来るので、完全でなくても均等化した分だけの消費電力削減効果を得られる。従って、例えば、最も必要処理量の大きくなる時間から、一つのプログラムの実行を別の時間へ移動させるだけでも効果がある。【００８７】  また、プログラムの必要処理量が正確な値でなく近似値の場合でも、ある程度の均等化は可能なので、消費電力削減の効果を得ることが出来る。さらに、ここでは全てのタスクの実行時間を決定する必要はなく、現在時刻から一定先の時刻までの実行時間を決定するだけでも良い。均等化には計算時間が必要となるので、どの程度正確な均等化を行うかは、情報処理装置５３の使用の目的や環境に合わせて設計すれば良い。【００８８】  ステップＳ９−８では、タスクスケジューリング部３０３により決定された実行時間を受けて、ＣＰＵ動作周波数設定部３０４はＣＰＵ１の動作周波数を決定し、当該動作周波数をＣＰＵ１に設定する。Ｓ９−９では、タスク実行部３０５が実行を要求されたタスクを実行する。タスクはタスクスケジューリング部３０３により決定された時間に実行される。従って、実際は、ステップＳ９−９はステップＳ９−８終了後直ちに実行されるわけではなく、決定された実行時間を迎えた時に実行される。【００８９】  本実施の形態での実際の処理の例としては、実施の形態１の例で示したもの（図３、図４）と同様のものがある。つまり、実行時間を指定されたタスクのスケジューリングを図３、図４と同様に行うことが可能である。特に、図４と同様なスケジューリングは、特定のタスク（図４ではプログラムＡ）を周期的に実行するスケジューリングであるが、同時に一定周期毎（図４では周期２��に必ず定められた量の処理量（図４では５０）を行うようなスケジューリングでもある。【００９０】  図１０は本実施の形態において、ＣＰＵクロック制御装置が行う処理の他の一例である。図１０の例では、タスクのデットラインスケジュールを行うものとして説明する。デットラインスケジュールは、タスクの処理が完了しなければならない時刻を指定し、その時刻（デットライン）が早いタスクから実行するものである。【００９１】  図１０（ａ１）は、要求しているデットラインが早いものから順にタスクを実行する通常のスケジューリングを表す模式図である。四角のブロックはタスクを表しており、（ａ１）では、ＡとＢの２つタスクがスケジューリングの対象である。タスク名であるアルファベットの後の値はタスクの必要処理量であり、その次の値は実行時間要求と許容範囲である。この例では、実行時間の要求はデットラインであり、デットラインであることをアルファベットのＥで表す。許容範囲はデットラインの許容範囲、つまりデットラインからどの位の進みまたは遅れが許容できるかである。【００９２】  タスクＡの場合、必要処理量が２００、デットラインが１、許容範囲が＋２となる。これは、タスクＡは時刻１までの終了を要求するが、最悪時刻３までの終了を認めることを意味する。タスクＢの場合、必要処理量が１００、デットラインが２、許容範囲が（−１，０）となる。この許容範囲の（−１，０）は、デットラインを１だけ早めた時刻から指定されたデットラインの時刻の間にタスクが終了すればよいことを意味する。つまり、タスクＢは時刻２までの終了を要求するが、時刻１から時刻２までの間に終了すればよい。また、（ａ１）は、図９のステップＳ９−１からステップＳ９−５の結果、タスクスケジューリング部３０３に通知される情報である。【００９３】  図１０（ｂ１）は、（ａ１）のスケジューリングでタスクＡ、Ｂを実行し、それぞれの処理を必要最小限の動作周波数で完了し、アイドル期間をつくらないようにした場合のＣＰＵ動作周波数を表している。【００９４】  図１０（ａ２）は、タスクスケジューリング部３０３がステップＳ９−６及びＳ９−７において行ったスケジューリングの結果である。ここでは、時間毎に要求される処理量を極力平滑化するスケジューリングが行なわれている。【００９５】  図１０（ｂ２）は、（ａ２）のタスクを実行する際のＣＰＵ動作周波数である。（ｂ２）は（ｂ１）と比較すると動作周波数の変動が少なくなっており、この期間でのＣＰＵの消費電力が削減される。またこのとき、タスクＡ、Ｂはそれぞれの許容範囲を満たして実行されている。【００９６】  このように本実施の形態では、実行時間の要求と許容範囲、必要処理量の指定により様々なスケジューリングが可能である。なお、本実施の形態でタスク３０の全てが実行時間に関する要求を登録する必要は無い。処理量を平滑化されるのが全てのタスクの一部であっても、限定的ではあるがある程度の効果を得ることが可能である。【００９７】  また、本実施の形態においても実施の形態２と同様に、割り込み処理量検知部と、割り込み処理部と、割り込み発生時にタスクの再スケジューリングを行う割り込み時実行時間調整部とを設けることも可能���ある。この場合は、割り込み発生時に、割り込み処理の分を加えた上で処理量が均等化するようにタスクを再スケジューリングする。これにより、割り込みの発生にも対応することが出来る。【００９８】  なお、本発明の実施の形態ではＯＳ３００内に、タスク管理部３１０、タスク実行時間登録部３０１、タスク処理量検知部３０２、タスクスケジューリング部３０３、ＣＰＵ動作周波数設定部３０４、及びタスク実行部３０５を設けたが、ＯＳ３００の外部に設けることも可能である。【００９９】  （実施の形態４）
図１１は、本発明の実施の形態４のＣＰＵ動作周波数制御を行う情報処理装置を示す図である。情報処理装置５４は少なくても一つ以上のＣＰＵ１とメモリ装置２とを備えている。この図において、ＣＰＵ１及びメモリ装置２を備える構成は実施の形態１と同じである。またこの図において、メモリ装置２がタスク４０を備える構成は実施の形態３と同じである。ＣＰＵ１の動作周波数の変更、及びタスク４０の制御はＯＳ４００により行われる。【０１００】  タイマーイベント４１は、当該タイマーイベント４１を実行する時間を指定してＯＳ４００に登録される処理である。タイマーイベント４１の登録と実行の機能は、実時間に応じた処理を行うため、多くのＯＳにおいて実現されている。タイマーイベント４１は単体でも利用できるが、本実施の形態ではタイマーイベント４１に含まれる個々のタイマーイベント＃１、＃２等が、対応するタスク４０に含まれる個々のタスク＃１、＃２等を起床するものとして説明する。ただし、タイマーイベント＃Ｎとタスク＃Ｎ（Ｎ＝１，２，３・・・）とが対応している必要はなく、対応する組み合わせは任意でよい。【０１０１】  ＯＳ４００は、本実施の形態のＣＰＵクロック制御を行う為、タスク管理部４１０、タイマーイベント管理部４２０、タスク実行時間登録部４０１、タスク実行時間要求解釈部４０２、タスク処理量検知部４０３、タイマーイベント処理量検知部４０４、タイマーイベント登録部４０５、タイマーイベント調整部４０６、ＣＰＵ動作周波数設定部４０７、タイマーイベント実行部４０８、及びタスク実行部４０９を備えている。本実施の形態においては、このタスク管理部４１０、タイマーイベント管理部４２０、タスク実行時間登録部４０１、タスク実行時間要求解釈部４０２、タスク処理量検知部４０３、タイマーイベント処理量検知部４０４、タイマーイベント登録部４０５、タイマーイベント調整部４０６、ＣＰＵ動作周波数設定部４０７、タイマーイベント実行部４０８、タスク実行部４０９、及びＣＰＵ１がＣＰＵクロック制御装置１４としての機能を有する。【０１０２】  タスク管理部４１０は、管理テーブル４１１を備えている。管理テーブル４１１は、タスク４０に含まれる個々のタスク＃１、＃２等に対応させて、個々のタスクの実行開始時刻、許容範囲等を記憶している。タスク管理部４１０は、例えば、操作部３を介してユーザが実行を指示した個々のタスク＃１、＃２等に対応する実行開始時刻、許容範囲等をタスク実行時間登録部４０１に通知し、登録させる。ここで、タスク管理部４１０は、必ずしもタスクの実行開始時刻、許容範囲等を記憶している必要はなく、個々のタスクと、当該タスクの実行時間に関する要求及び当該タスクの実行時間に関する要求の許容範囲とを対応づける機能を有していれば良い。【０１０３】  タイマーイベント管理部４２０は、管理テーブル４２１を備えている。管理テーブル４２１は、タイマーイベントがタスクを起床するものか否か等を記憶している。タイマーイベント管理部４２０は、タイマーイベント登録部４０５に指示し、タイマーイベント処理量検知部４０４からはタイマーイベントが必要とする処理量を、そして管理テーブル４２１を参照し、当該タイマーイベント���タスクを起床するものであった場合、タスク処理量検知部４０３からは当該タイマーイベントに対応するタスクが必要とする処理量をさらに受け取らせる。【０１０４】  タスク実行時間登録部４０１は、実施の形態３のタスク実行時間登録部３０１と同様の機能を有する。タスク実行時間登録部４０１は、タスク管理部４１０の指示により、タスクの実行時間に関する要求と許容範囲についての情報を登録し、その情報をタスク実行時間要求解釈部４０２に通知する。【０１０５】  タスク実行時間要求解釈部４０２は、タスク実行時間登録部４０１から通知されたタスク４０の実行時間に関する要求を満たすように、タスク制御を行うタイマーイベント４１を決定する。例えば、特定時間にタスク＃１の実行開始が要求されている場合は、タスク＃１を起床するタイマーイベント＃１をその時間に実行するようにする。この様なタイマーイベント４１によるタスク４０の制御は現在一般的に行なわれているので、本実施の形態でのタスク制御のタイマーイベントもそれと同様にすれば良い。【０１０６】  合わせて、タスク実行時間要求解釈部４０２は、タスク実行時間登録部４０１から通知されたタスク４０の実行時間に関する要求の許容範囲から、タスク制御のタイマーイベント４１の実行時間の許容範囲を求める。例えば、タスク４０の実行開始時刻の許容範囲として一定時間の遅れが許されるなら、その時間をタスク４０を起床するタイマーイベント４１の実行開始時刻の許容範囲とする。周期的タスク実行が要求されるならば、要求されている周期でタスク４０を起床するタイマーイベント４１を実行し、タスク実行周期に許容範囲があればその許容範囲をタイマーイベントの実行周期の許容範囲とする。タスク実行時間要求解釈部４０２は、その実行時間、許容範囲とともに、決定したタスク制御のタイマーイベント４１の登録をタイマーイベント登録部４０５に要求する。【０１０７】  タスク処理量検知部４０３は、実施の形態３のタスク処理量検知部３０２と同様の機能を有する。タスク処理量検知部４０３は、タイマーイベント登録部４０５からの要求があった場合、検知したタスクが必要とする処理量をタイマーイベント登録部４０５に通知する。【０１０８】  タイマーイベント処理量検知部４０４は、タイマーイベント登録部４０５からの要求があった場合、タイマーイベントが必要とする処理量を検知し、タイマーイベント登録部４０５に通知する。必要な処理量の検知は、タスク処理量検知部４０３と同様に、例えば、各タイマーイベント内で予め見積もった必要処理量を通知したり、実際に実行して要した処理量を実測してそれに基づき決定したりすることで可能である。【０１０９】  タイマーイベント登録部４０５は、タスク実行時間要求解釈部４０２より要求されたタイマーイベントを、タイマーイベントの実行時間に対する要求と許容範囲と共に登録する。また、タイマーイベント登録部４０５は、タスクとは無関係なタイマーイベントを外部からの要求に基づき登録できる形態であっても良い。この場合も、タイマーイベント実行時間に対する要求及び許容範囲を登録可能としても良い。【０１１０】  さらにタイマーイベント登録部４０５は、タイマーイベント管理部４２０からの指��により、タイマーイベント処理量検知部４０４からはタイマーイベントが必要とする処理量を、そして当該タイマーイベントがタスクを起床するものであった場合、タスク処理量検知部４０３からは当該タイマーイベントに対応するタスクが必要とする処理量をさらに受け取る。そして、タイマーイベント登録部４０５は、タイマーイベント自身の必要処理量と、タイマーイベントにより実行されるタスクの必要処理量とを合わせた処理量を算出し、当該処理量を含めたタイマーイベントに関する情報をタイマーイベント決定部４０６に通知する。【０１１１】  タイマーイベント決定部４０６は、タイマーイベント登録部４０５から通知されたタイマーイベントの実行時間に関する要求と許容範囲、さらにタイマーイベントによりタスクが実行される場合はタスクに必要となる処理量、及びタイマーイベント自身が必要な処理量に基づき、タイマーイベントを実際に実行する時間を決定する。この時、タイマーイベント決定部４０６は、タイマーイベントの実行時間に関する要求とその許容範囲とを満たす範囲で、タイマーイベントを実行する時間を決定する。また、同時にタイマーイベントを実行することで必要となる処理量、つまり、タイマーイベント決定部４０６は、タイマーイベント自身と、タイマーイベントにより実行されるタスクとを合わせた処理量が一定時間毎でなるべく均等になるようにタイマーイベントを実行する時間を決定する。従って、タイマーイベントとそれによるタスク実行が一定時間毎に必要とする処理量を合わせた全体が平滑化される。【０１１２】  ＣＰＵ動作周波数設定部４０７は、タイマーイベント決定部４０６により平滑化された処理量に基づいて、ＣＰＵの動作周波数を決定する。そして、ＣＰＵ動作周波数設定部４０７は、ＣＰＵ１に印加される電圧を制御することで当該動作周波数をＣＰＵ１に設定する。タイマーイベント実行部４０８は、動作周波数設定部４０７により設定された動作周波数で動作するＣＰＵ１を用いて、タイマーイベント決定部４０６が決定した実行時間でタイマーイベント４１を実行する。タスク実行部４０９は、タイマーイベント実行部４０８が実行するタイマーイベントがタスク４０を起床するものであった場合、当該タスク４０を実行する。【０１１３】  図１２は本実施の形態のＣＰＵクロック制御装置の動作を説明するフローチャートである。ステップＳ１２−１からステップＳ１２−５は、タスク管理部４１０、タスク実行時間登録部４０１、タスク実行時間要求解釈部４０２、及びタスク処理量検知部４０３の処理の流れを示している。ステップＳ１２−６からステップＳ１２−７までは、タイマーイベント管理部４２０、タイマーイベント登録部４０５、タイマーイベント決定部４０６、ＣＰＵ動作周波数設定部４０７、及びタイマーイベント実行部４０８の処理の流れを示している。【０１１４】  ステップＳ１２−１では、例えばユーザが操作部４を操作することにより、情報処理装置５４が実行するタスク４０が例えば前述のＲＯＭ等からメモリ装置２内にロードされ、登録される。ステップＳ１２−２では、タスク管理部４１０は、登録されたタスク４０の実行時間に関する要求と許容範囲とをタスク実行時間登録部４０１に登録する。ステップＳ１２−３では、タスク実行時間要求解釈部４０２は、タスク実行時間登録部４０１に登録されたタスク４０の実行時間に関する要求と許容範囲を満たすようにタスク４０を制御するタイマーイベント４１と、タイマーイベント４１の実行時間に関する要求、及び許容範囲を決定する。【０１１５】  例えば、タスクが１秒後の起床を要求し、許容できる起床時間の遅れを０．１秒としている場合、タスク実行時間要求解釈部４０２は、タスクを起床するタイマーイベントを１秒後に０．１秒の遅れの範囲内で実行するように決定する。【０１１６】  ステップＳ１２−６は、タイマーイベントの登録要求であり、ステップＳ１２−７からステップＳ１２−１３はタイマーイベントの登録要求を契機に実行される。ステップＳ１２−７では、登録要求されているタイマーイベントの処理量の検知が行なわれる。これは、タイマーイベント登録部４０５がタイマーイベント処理量検知部４０４から当該タイマーイベントの処理量を受け取ることで実現される。ただし、ステップＳ１２−７は必ずしもこの時点で行う必要は無く、タイマーイベントの処理量の情報が必要になる前ならどの時点でも良い。【０１１７】  ステップ１２−８では、タイマーイベント管理部４２０は、タイマーイベント登録部４０５への登録を要求しているタイマーイベントがタスクを起床するものかどうかを、管理テーブル４２１を参照することで判定する。その結果、登録を要求しているタイマーイベントがタスクを起床する場合は、ステップＳ１２−２０において、タイマーイベント登録部４０５はタスク処理量検知部４０３からタスクの実行に必要な処理量を受け取る。ただし、ステップＳ１２−２０は必ずしもこの時点で実行される必要はなく、タスクの必要処理量の情報が必要となる前なら、任意の時点で実行されても良い。【０１１８】  次にステップ１２−９において、タイマーイベント登録部４０５は、タイマーイベント自身の必要処理量に起床されるタスクの必要処理量を加え、全体の必要処理量を算出する。つまり、タスクの必要処理量もタイマーイベント実行に必要な処理量として計算される。そして、ステップＳ１２−１０では、タイマーイベント登録部４０５は、タイマーイベント管理部４２０から送出されたタイマーイベントとその実行時間要求、及び許容範囲を登録する。そして、タイマーイベント登録部４０５は、算出された全体の必要処理量を含めた情報を、タイマーイベント決定部４０６に通知する。【０１１９】  ステップ１２−１１では、タイマーイベント決定部４０６は、各タイマーイベントの時間要求と許容範囲とを満たす範囲で、各タイマーイベントの必要処理量の単位時間当りの合計が極力均等化するように実行時間を決定する。つまり、タイマーイベントの必要処理量にはタスクの起床の結果、タスクが必要とする処理量が加わっているので、ステップ１２−１１ではタイマーイベントとそれによって起床されるタスクの全ての処理量が均等化される。【０１２０】  ステップＳ１２−１２では、ＣＰＵ動作周波数設定部４０７は、タイマーイベント決定部４０６により平滑化された処理量に基づいてＣＰＵの動作周波数を決定する。そして、ＣＰＵ動作周波数設定部４０７は、ＣＰＵ１に印加される電圧を制御することで当該動作周波数をＣＰＵ１に設定する。最後に、ステップＳ１２−１３では、タイマーイベント実行部４０８は、登録されたタイマーイベントを実行する。しかしながら、タイマーイベントの実行は指定されている時間に起こるので、実際にはステップＳ１２−１３はステップＳ１２−１２の直後に実行されるわけではなく、適切な時間の経過後に実行される。【０１２１】  本実施の形態の実装としては、例えば、タイマーイベントを実行すべき時間ごとのキューで管理することが挙げられる。キューには、タイマーイベントを登録する際に、実行時間、許容範囲、必要処理量（タスク分を含む）を合わせて記録する（ステップＳ１２−１からＳ１２−５、Ｓ１２−６からＳ１２−１０）。その上で、新しいタイマーイベントが登録される毎に、キューを走査し、各時間での必要処理量が均等化するように許容範囲内でキューを組替え、各時間でのＣＰＵ動作周波数を決定する（ステップＳ１２−１１、Ｓ１２−１２）。そして、タイマーイベントを組替えられたキューに従った順番で実行し（ステップＳ１２−１３）、合わせて決定した各時間の動作周波数でＣＰＵを駆動する。【０１２２】  図１３は本実施の形態において、ＣＰＵクロック制御装置が行う処理の一例である。図１３（ａ１）は、図３（ａ１）と同様、実行が要求されているタイマーイベントと、当該タイマーイベントが要求している実行時間とをそのまま時間軸上に配置した模式図である。（ａ１）は、図１２のステップＳ１２−１からステップＳ１２−５、及びステップＳ１２−６からステップＳ１２−１０までが実行された結果、タイマーイベント決定部４０６に通知される情報である。【０１２３】  この図において、四角のブロックはタイマーイベントを表している。つまり、（ａ１）では、Ａ、Ｂ、Ｃの３つのタイマーイベントが要求されている。タイマーイベント名であるアルファベットの後の値はタイマーイベントの必要処理量であり、その後ろの値は実行時間要求と許容範囲である。タスクを起床するタイマーイベントの場合は、タイマーイベント自身の処理量の後ろに、符号「＋」と共にタスクの処理量を表記している。従って、タイマーイベントＡの場合、タイマーイベント自身の必要処理量が５０、起床されるタスクの処理量が５０、実行時間要求が０、許容範囲が＋２となる。【０１２４】  また、図１３の例では、タイマーイベントとタスクは、実行時間要求の値の時間からその次の時間までの間隔での実行と処理の完了とを要求しているとする。つまり、Ａの場合は、時刻０から１の間での実行と処理の完了とを要求している。実施の形態１の例（図３、図４）と同様に、これを「時刻０での実行を要求している」という様に表記する。許容範囲の値も、同様に実行時間の変動の範囲を表している。【０１２５】  図１３（ｂ１）は、（ａ１）の実行時間でタイマーイベントＡ、Ｂ及びＣを実行し、各時間でそれぞれの処理を必要最小限の動作周波数で、アイドル期間をつくらないようにＣＰＵ動作周波数を設定した場合の動作周波数を表している。【０１２６】  図１３（ａ２）は、ステップＳ１２−１１が実行されて決定されたタイマーイベントの実際の実行時間を表している。そして、図１３（ｂ２）は、（ａ２）のタイマーイベント実行時のＣＰＵ動作周波数を表している。図１３（ｂ２）は、（ｂ１）と比較すると動作周波数の変動が少なくなっており、この期間でのＣＰＵの消費電力が削減される。またこのとき、各タイマーイベントはそれぞれの許容範囲を満たして実行されている。【０１２７】  図１４は、本実施の形態において、ＣＰＵクロック制御装置が行う処理の他の一例である。図１４（ａ１）は、図１３と同様に、実行が要求されているタイマーイベントと、当該タイマーイベントが要求している実行時間とをそのまま時間軸上に配置した模式図である。タイマーイベントＡは周期３での周期的実行、Ｂは周期２での周期的実行を要求しており、図１４（ａ１）ではこれを実行時間要求がＰ３、Ｐ２と表記している。タイマーイベントＡ、Ｂはいずれも、処理量５０のタイマーイベント自身に加えて処理量５０のタスクを起動する。また、タイマーイベントＡで起動されるタスクは実行される時刻が１遅れても許容できるので、タイマーイベントＡは＋１の許容範囲を持つ。それに対して、タイマーイベントＢで起動されるタスクは実行される時刻が遅れることは許容できないので、タイマーイベントＢの許容範囲は０である。【０１２８】  図１４（ａ２）は、タイマーイベント決定部４０６が行うタイマーイベントの実行時間を平滑化した後の状態を表しており、この例では、タイマーイベントＡの実行時間が、もともと実行を要求されていた時刻から変更されている。【０１２９】  （ｂ１）、（ｂ２）は処理に必要な最小の動作周波数を用いる場合の動作周波数を表す模式図である。（ｂ２）においては、動作周波数が完全に均等化されている訳ではないが、（ｂ１）に比べて動作周波数の変動が少なくなり、その分ＣＰＵの消費電力は削減される。またこのとき、タイマーイベントとタスクとは、それぞれの許容範囲を満たして実行されている。【０１３０】  以上の様に、本実施の形態では、タスクとタイマーイベントの実行時間に関する要求と許容範囲とを満たした上で、ＣＰＵの消費電力を削減することが可能である。なお、他の実施の形態と同様に、全てのタイマーイベントにおいて許容範囲が登録されている必要は無い。処理量を平滑化されるのが全ての処理の一部であったとしても、その分の処理量は平滑化されるので、消費電力の削減効果を得ることが可能である。また、本実施の形態ではタスク及びタイマーイベントの両方の必要処理量を平滑化しているが、必ずしもその必要は無い。いずれかの必要な処理量が十分小さい場合は、影響が小さいとして無視しても良い。例えばタスクに比べてタイマーイベントの必要処理量が十分小さい場合は、タイマーイベントの必要処理量を実質上は「０」として、タスクの必要処理量のみを平滑化しても良い。【０１３１】  また、本実施の形態においても実施の形態２と同様に、割り込み処理量検知部と、割り込み処理部と、割り込み発生時にタイマーイベント実行時間を再決定する割り込み時実行時間調整部とを設けることも可能である。この場合は、割り込み発生時に、割り込み処理の分を加えた上で処理量が均等化するようにタイマーイベントの実行時間を再決定する。これにより、割り込みの発生にも対応した上で、ＣＰＵの消費電��を削減することが可能となる。【０１３２】  なお、本発明の実施の形態ではＯＳ４００内に、タスク管理部４１０、タイマーイベント管理部４２０、タスク実行時間登録部４０１、タスク実行時間要求解釈部４０２、タスク処理量検知部４０３、タイマーイベント処理量検知部４０４、タイマーイベント登録部４０５、タイマーイベント決定部４０６、ＣＰＵ動作周波数設定部４０７、タイマーイベント実行部４０８、及びタスク実行部４０９を設けたが、ＯＳ４００の外部に設けることも可能である。【０１３３】  ［実施の形態の概要］
本発明に係る実施の形態の概要を以下に記載する。【０１３４】  （１）上記したように、本願発明に係るＣＰＵクロック制御装置は、自身が有するＣＰＵのクロックを制御するＣＰＵクロック制御装置であって、前記ＣＰＵが実行するプログラムをロードし、当該プログラムと、当該プログラムの実行時間に関する要求及び当該プログラムの実行時間に関する要求の許容範囲とを対応づけるプログラム管理部と、前記プログラムの実行時間に関する要求と許容範囲とを前記プログラム管理部から受け取り、前記プログラムと対応づけて登録するプログラム実行時間登録部と、前記プログラムの実行に必要な処理量を検知するプログラム処理量検知部と、前記プログラム実行時間登録部に登録された実行時間に関する要求と許容範囲とを満たす範囲内で、前記プログラム処理量検知部により検知された処理量が所定時間範囲において均等化するように、前記プログラムの実行開始時刻及び単位時間当りの処理量を決定するプログラム実行時間決定部と、前記プログラム実行時間決定部により決定された前記プログラムの実行開始時刻及び単位時間当りの処理量に基づき、前記ＣＰＵの各時刻における動作周波数を決定し、当該動作周波数を前記ＣＰＵに設定するＣＰＵ動作周波数設定部と、前記ＣＰＵ動作周波数設定部により設定された動作周波数で動作する前記ＣＰＵに、前記プログラム実行時間決定部により決定された実行開始時刻及び単位時間当りの処理量で前記プログラムを実行させるプログラム実行部と、を備えることが好ましい。【０１３５】  この構成によれば、プログラム実行時間登録部は、プログラム管理部の制御のもと、ＣＰＵが実行するプログラムの実行時間に関する要求と、プログラムの実行時間に関する要求の許容範囲とを登録する。ここで、実行時間に関する要求とは、当該プログラムをいつ実行させるかを指定する実行開始時刻や、いつまでに処理を終える必要があるかを指定する終了時刻、さらには周期的にプログラムを実行する場合の実行周期等である。また、許容範囲とは、実行時間に関する要求に対してどの程度の変動が許されるかを示す情報である。例えば、実行開始時刻や終了時刻をどれだけ早めるまたは遅くすることが許容されるかを表す。【０１３６】  また、プログラム処理量検知部は、ＣＰＵが実行するプログラムの実行に必要な処理量を検知する。そして、プログラム実行時間登録部は実行時間に関する要求と許容範囲とを、プログラム処理量検知部は必要な処理量を、それぞれプログラム実行時間決定部に通知する。プログラム実行時間決定部は、それらの情報に基づいて、実行時間に関する要求と許容範囲とを満たす範囲内で、所定時間範囲における処理量が、完全ではなくともできるだけ均等化するように、実行開始時刻及び単位時間当りの処理量を決定する。例えば、プログラム実行時間決定部は、同じ処理量が必要な２つのプログラムが同じ時刻に実行開始を要求しており、かつそれ以外のプログラムの実行が要求されていない場合、一方のプログラムを他方のプログラムが終了した後に行うように実行開始時刻の調整を行う。【０１３７】  続いて、ＣＰＵ動作周波数設定部は、プログラム実行時間決定部により決定されたプログラムの実行開始時刻及び単位時間当���の処理量に基づき、ＣＰＵの各時刻における動作周波数を決定し、設定する。プログラム実行部は、当該ＣＰＵを用いてプログラムの実行を行わせるので、結果として、プログラムの実行時間に関する要求と許容範囲とを満たす範囲内で、当該プログラムの実行を行うことができる。さらに、ＣＰＵに要求される処理量を均等化しているので、それに応じてＣＰＵの消費電力の削減を行うことが可能である。【０１３８】  （２）ＣＰＵクロック制御装置は、ＣＰＵクロック制御装置（１）であって、割り込み発生時に実行される割り込み処理を行う割り込み処理部と、前記割り込み処理に必要な処理量を検知する割り込み処理量検知部と、前記割り込み処理部が割り込みの発生時刻において当該割り込み処理を行う場合、前記プログラム実行時間登録部に登録された実行時間に関する要求と許容範囲とを満たす範囲内で、前記プログラムの実行に必要な処理量と前記割り込み処理の処理量とが所定時間範囲において均等化するように、前記プログラムの実行開始時刻及び単位時間当りの処理量を再決定する割り込み時実行時間調整部と、を更に備え、前記ＣＰＵ動作周波数設定部は、前記プログラム実行時間決定部により均等化された処理量、または前記割り込み時実行時間調整部により均等化された処理量のいずれか新しい処理量に基づき前記ＣＰＵの動作周波数を決定し、前記プログラム実行部は、前記プログラム実行時間決定部により決定された実行開始時刻及び単位時間当りの処理量、または前記割り込み時実行時間調整部により再決定された実行開始時刻及び単位時間当りの処理量のいずれか新しい実行開始時刻及び単位時間当りの処理量で、前記プログラムを実行させることが好ましい。【０１３９】  この構成によれば、割り込み処理部は、割り込みが発生するとその発生時刻において当該割り込み処理を行う。そして、その割り込み処理に必要な処理量は、割り込み処理量検知部により検知されている。このままでは、当該割り込みが発生した時刻における処理量だけが増加してしまい、ＣＰＵの消費電力もその分増加することが懸念される。そこで、割り込みが発生した場合は、割り込み時実行時間調整部が、割り込み発生時刻における割り込み処理量を含めて、プログラムの実行開始時刻及び単位時間当りの処理量を再決定する。このとき、割り込み時実行時間調整部は、プログラム実行時間決定部と同様に、実行時間に関する要求と許容範囲とを満たす範囲内で再決定する。これにより、割り込みが発生した場合にも、ＣＰＵに要求される処理量を均等化し、それに応じてＣＰＵの消費電力の削減を行うことが可能となる。【０１４０】  （３）上記したように、本願発明に係るＣＰＵクロック制御装置は、自身が有するＣＰＵのクロックを制御するＣＰＵクロック制御装置であって、前記ＣＰＵが実行するタスクをロードし、当該タスクと、当該タスクの実行時間に関する要求及び当該タスクの実行時間に関する要求の許容範囲とを対応づけるタスク管理部と、前記タスクの実行時間に関する要求と許容範囲とを前記タスク管理部から受け取り、前記タスクと対応づけて登録するタスク実行時間登録部と、前記タスクの実行に必要な処理量を検知するタスク処理量検知部と、前記タスク実行時間登録部に登���された実行時間に関する要求と許容範囲とを満たす範囲内で、前記タスク処理量検知部により検知された処理量が所定時間範囲において均等化するように、前記タスクの実行開始時刻及び単位時間当りの処理量をスケジューリングするタスクスケジューリング部と、前記タスクスケジューリング部によりスケジューリングされた前記タスクの実行開始時刻及び単位時間当りの処理量に基づき、前記ＣＰＵの動作周波数を決定し、当該動作周波数を前記ＣＰＵに設定するＣＰＵ動作周波数設定部と、前記ＣＰＵ動作周波数設定部により設定された動作周波数で動作する前記ＣＰＵに、前記タスクスケジューリング部によるスケジューリングに基づいて、前記タスクを実行させるタスク実行部と、を備えることが好ましい。【０１４１】  この構成によれば、タスク実行時間登録部は、タスク管理部の制御のもと、ＣＰＵが実行するタスクの実行時間に関する要求と、タスクの実行時間に関する要求の許容範囲とを登録する。ここで、実行時間に関する要求とは、当該タスクをいつ実行させるかを指定する実行開始時刻や、いつまでに処理を終える必要があるかを指定する終了時刻、さらには周期的にタスクを実行する場合の実行周期等である。また、許容範囲とは、実行時間に関する要求に対してどの程度の変動が許されるかを示す情報である。例えば、実行開始時刻や終了時刻をどれだけ早めるまたは遅くすることが許容されるかを表す。【０１４２】  また、タスク処理量検知部は、ＣＰＵが実行するタスクの実行に必要な処理量を検知する。そして、タスク実行時間登録部は実行時間に関する要求と許容範囲とを、タスク処理量検知部は必要な処理量を、それぞれタスクスケジューリング部に通知する。タスクスケジューリング部は、それらの情報に基づいて、実行時間に関する要求と許容範囲とを満たす範囲内で、所定時間範囲における処理量が、完全ではなくともできるだけ均等化するように、実行開始時刻及び単位時間当りの処理量を決定する。例えば、タスクスケジューリング部は、同じ処理量が必要な２つのタスクが同じ時刻に実行開始を要求しており、かつそれ以外のタスクの実行が要求されていない場合、一方のタスクを他方のタスクが終了した後に行うように実行開始時刻の調整を行う。【０１４３】  続いて、ＣＰＵ動作周波数設定部は、タスクスケジューリング部により決定されたタスクの実行開始時刻及び単位時間当りの処理量に基づき、ＣＰＵの各時刻における動作周波数を決定し、設定する。タスク実行部は、当該ＣＰＵを用いてタスクの実行を行わせるので、結果として、タスクの実行時間に関する要求と許容範囲とを満たす範囲内で、当該タスクの実行を行うことができる。さらに、ＣＰＵに要求される処理量を均等化しているので、それに応じてＣＰＵの消費電力の削減を行うことが可能である。【０１４４】  （４）上記したように、本願発明に係るＣＰＵクロック制御装置は、自身が有するＣＰＵのクロックを制御するＣＰＵクロック制御装置であって、前記ＣＰＵが実行するタスクをロードし、当該タスクと、当該タスクの実行時間に関する要求及び当該タスクの実行時間に関する要求の許容範囲とを対応づけるタスク管理部と、前記タスクの実行時間に関する要求と許容範囲とを前記タ��ク管理部から受け取り、前記タスクと対応づけて登録するタスク実行時間登録部と、前記タスクの実行に必要な処理量を検知するタスク処理量検知部と、前記タスク実行時間登録部に登録された実行時間に関する要求と許容範囲とを満たすように、前記タスクを制御するタイマーイベントを決定するタスク実行時間要求解釈部と、前記タスク実行時間要求解釈部が決定したタイマーイベントを含むタイマーイベントの実行時間に関する要求と、前記タイマーイベントの実行時間の許容範囲とを登録するタイマーイベント登録部と、前記タイマーイベントの実行に必要な処理量を検知するタイマーイベント処理量検知部と、前記タイマーイベント登録部に登録されたタイマーイベントの実行時間に関する要求と許容範囲とを満たす範囲内で、タイマーイベントにより実行に移されるタスクに関し前記タスク処理量検知部が検知した必要処理量と、前記タイマーイベント処理量検知部が検知したタイマーイベントの処理量との合計が、所定時間範囲において均等化するように、前記タイマーイベントの実行開始時刻及び単位時間当りの処理量を決定するタイマーイベント決定部と、前記タイマーイベント決定部により決定された前記タイマーイベントの実行開始時刻及び単位時間当りの処理量に基づき、前記ＣＰＵの動作周波数を決定し、当該動作周波数を前記ＣＰＵに設定するＣＰＵ動作周波数設定部と、前記ＣＰＵ動作周波数設定部により設定された動作周波数で動作する前記ＣＰＵに、前記タイマーイベント決定部により決定された実行開始時刻及び単位時間当りの処理量に基づいて、前記タイマーイベントを実行させるタイマーイベント実行部と、を備えることが好ましい。【０１４５】  この構成によれば、タスク実行時間登録部は、タスク管理部の制御のもと、ＣＰＵが実行するタスクの実行時間に関する要求と、タスクの実行時間に関する要求の許容範囲とを登録する。ここで、実行時間に関する要求とは、当該タスクをいつ実行させるかを指定する実行開始時刻や、いつまでに処理を終える必要があるかを指定する終了時刻、さらには周期的にタスクを実行する場合の実行周期等である。また、許容範囲とは、実行時間に関する要求に対してどの程度の変動が許されるかを示す情報である。例えば、実行開始時刻や終了時刻をどれだけ早めるまたは遅くすることが許容されるかを表す。【０１４６】  タスク実行時間要求解釈部は、タスク実行時間登録部に登録された実行時間に関する要求と許容範囲とを満たすように、タスクを制御するタイマーイベントを決定する。また、タスク処理量検知部は、ＣＰＵが実行するタスクの実行に必要な処理量を検知し、タイマーイベント処理量検知部は、ＣＰＵが実行するタイマーイベントの実行に必要な処理量を検知する。そして、タイマーイベント登録部は、タイマーイベント管理部の指示により、タイマーイベント処理量検知部からタイマーイベントの実行に必要な処理量を受け取る。さらに、タイマーイベント登録部は、タイマーイベント管理部の指示により、当該タイマーイベントがタスクを起床する場合には、タスク処理量検知部からタスクの実行に必要な処理量を受け取る。【０１４７】  タイマーイベント決定部は、タイマーイベント（及びタスク）の処理量、及��タイマーイベントの実行時間に関する要求と許容範囲等をタイマーイベント登録部から受け取り、タイマーイベントの実行開始時刻及び単位時間当りの処理量を決定する。つまり、タイマーイベント決定部は、タイマーイベントがタスクを起床しない場合にはタイマーイベントのみの、タイマーイベントがタスクを起床する場合にはタイマーイベントとタスクの処理量を加えた処理量を均等化する。【０１４８】  続いて、ＣＰＵ動作周波数設定部は、タイマーイベント決定部により決定されたタイマーイベントの実行開始時刻及び単位時間当りの処理量に基づき、ＣＰＵの各時刻における動作周波数を決定し、設定する。タイマーイベント実行部は、当該ＣＰＵを用いてタイマーイベントの実行を行わせるので、結果として、タイマーイベントの実行時間に関する要求と許容範囲とを満たす範囲内で、当該タイマーイベントの実行を行うことができる。さらに、ＣＰＵに要求される処理量を均等化しているので、それに応じてＣＰＵの消費電力の削減を行うことが可能である。【０１４９】  （５）上記したように、本願発明に係るＣＰＵクロック制御方法は、ＣＰＵが実行するプログラムの実行時間に関する要求と、前記プログラムの実行時間に関する要求の許容範囲とを、前記プログラムに対応づけて登録するプログラム実行時間登録工程と、前記プログラムの実行に必要な処理量を検知するプログラム処理量検知工程と、前記プログラム実行時間登録工程により登録された実行時間に関する要求と許容範囲とを満たす範囲内で、前記プログラム処理量検知工程により検知された処理量が所定時間範囲において均等化するように、前記プログラムの実行開始時刻及び単位時間当りの処理量を決定するプログラム実行時間決定工程と、前記プログラム実行時間決定工程により決定された前記プログラムの実行開始時刻及び単位時間当りの処理量に基づき、前記ＣＰＵの各時刻における動作周波数を決定し、当該動作周波数を前記ＣＰＵに設定するＣＰＵ動作周波数設定工程と、前記ＣＰＵ動作周波数設定工程により設定された動作周波数で動作する前記ＣＰＵに、前記プログラム実行時間決定工程により決定された実行開始時刻及び単位時間当りの処理量で前記プログラムを実行させるプログラム実行工程と、を備えることが好ましい。【０１５０】  この構成は、装置（１）について述べたと同様の理由により、ＣＰＵに要求される処理量を均等化しているので、それに応じてＣＰＵの消費電力の削減を行うことが可能である。【０１５１】  （６）上記したように、本願発明に係るＣＰＵクロック制御プログラムは、自身が有するＣＰＵのクロックを制御するＣＰＵクロック制御装置としてコンピュータを機能させるＣＰＵクロック制御プログラムであって、前記ＣＰＵが実行するプログラムの実行時間に関する要求と、前記プログラムの実行時間に関する要求の許容範囲とを、前記プログラムに対応づけて登録するプログラム実行時間登録手段と、前記プログラムの実行に必要な処理量を検知するプログラム処理量検知手段と、前記プログラム実行時間登録手段により登録された実行時間に関する要求と許容範囲とを満たす範囲内で、前記プログラム処理量検知手段により検知された処理量が所定時間範囲において均等化するように、前記プログラムの実行開始時刻及び単位時間当りの処理量を決定するプログラム実行時間決定手段と、前記プログラム実行時間決定手段により決定された前記プログラムの実行開始時刻及び単位時間当りの処理量に基づき、前記ＣＰＵの各時刻における動作周波数を決定し、当該動作周波数を前記ＣＰＵに設定するＣＰＵ動作周波数設定手段と、前記ＣＰＵ動作周波数設定手段により設定された動作周波数で動作する前記ＣＰＵに、前記プログラム実行時間決定工程により決定された実行開始時刻及び単位時間当りの処理量で前記プログラムを実行させるプログラム実行手段として前記コンピュータを機能させる。【０１５２】  この構成は、装置（１）について述べたと同様の理由により、ＣＰＵに要求される処理量を均等化しているので、それに応じてＣＰＵの消費電力の削減を行うことが可能である。【０１５３】  （７）上記したように、本願発明に係る記録媒体は、自身が有するＣＰＵのクロックを制御するＣＰＵクロック制御装置としてコンピュータを機能させるＣＰＵクロック制御プログラムを記録したコンピュータ読み取り可能な記録媒体であって、前記ＣＰＵが実行するプログラムの実行時間に関する要求と、前記プログラムの実行時間に関する要求の許容範囲とを、前記プログラムに対応づけて登録するプログラム実行時間登録手段と、前記プログラムの実行に必要な処理量を検知するプログラム処理量検知手段と、前記プログラム実行時間登録手段により登録された実行時間に関する要求と許容範囲とを満たす範囲内で、前記プログラム処理量検知手段により検知された処理量が所定時間範囲において均等化するように、前記プログラムの実行開始時刻及び単位時間当りの処理量を決定するプログラム実行時間決定手段と、前記プログラム実行時間決定手段により決定された前記プログラムの実行開始時刻及び単位時間当りの処理量に基づき、前記ＣＰＵの各時刻における動作周波数を決定し、当該動作周波数を前記ＣＰＵに設定するＣＰＵ動作周波数設定手段と、前記ＣＰＵ動作周波数設定手段により設定された動作周波数で動作する前記ＣＰＵに、前記プログラム実行時間決定工程により決定された実行開始時刻及び単位時間当りの処理量で前記プログラムを実行させるプログラム実行手段として前記コンピュータを機能させるＣＰＵクロック制御プログラムを記録したものである。【０１５４】  この構成は、装置（１）について述べたと同様の理由により、ＣＰＵに要求される処理量を均等化しているので、それに応じてＣＰＵの消費電力の削減を行うことが可能である。【０１５５】  （８）上記したように、本願発明に係る伝送媒体は、自身が有するＣＰＵのクロックを制御するＣＰＵクロック制御装置としてコンピュータを機能させるＣＰＵクロック制御プログラムを保持する伝送媒体であって、前記ＣＰＵが実行するプログラムの実行時間に関する要求と、前記プログラムの実行時間に関する要求の許容範囲とを、前記プログラムに対応づけて登録するプログラム実行時間登録手段と、前記プログラムの実行に必要な処理量を検知するプログラム処理量検知手段と、前記プログラム実行時間登録手段により登録された実行時間に関する要求と許容範囲とを満たす範囲内で、前記プログラ���処理量検知手段により検知された処理量が所定時間範囲において均等化するように、前記プログラムの実行開始時刻及び単位時間当りの処理量を決定するプログラム実行時間決定手段と、前記プログラム実行時間決定手段により決定された前記プログラムの実行開始時刻及び単位時間当りの処理量に基づき、前記ＣＰＵの各時刻における動作周波数を決定し、当該動作周波数を前記ＣＰＵに設定するＣＰＵ動作周波数設定手段と、前記ＣＰＵ動作周波数設定手段により設定された動作周波数で動作する前記ＣＰＵに、前記プログラム実行時間決定工程により決定された実行開始時刻及び単位時間当りの処理量で前記プログラムを実行させるプログラム実行手段として前記コンピュータを機能させるＣＰＵクロック制御プログラムを保持するものである。【０１５６】  この構成は、装置（１）について述べたと同様の理由により、ＣＰＵに要求される処理量を均等化しているので、それに応じてＣＰＵの消費電力の削減を行うことが可能である。【０１５７】  本発明は詳細に説明されたが、上記した説明は、全ての局面において、例示であって、本発明がそれに限定されるものではない。例示されていない無数の変形例が、この発明の範囲から外れることなく想定され得るものと解される。
【産業上の利用可能性】
【０１５８】  本発明にかかるＣＰＵクロック制御装置及び方法は、情報処理装置を用いるものであれば幅広い分野において有効である。例えば、大型計算機やパーソナルコンピュータのような形態のみならず、各種の家電機器、携帯電話のような通信機器、産業機器、乗用機器などでも利用可能である。
【図１】
2005106623.tif 000002
【図２】
2005106623.tif 000003
【図３】
2005106623.tif 000004
【図４】
2005106623.tif 000005
【図５】
2005106623.tif 000006
【図６】
2005106623.tif 000007
【図７】
2005106623.tif 000008
【図８】
2005106623.tif 000009
【図９】
2005106623.tif 000010
【図１０】
2005106623.tif 000011
【図１１】
2005106623.tif 000012
【図１２】
2005106623.tif 000013
【図１３】
2005106623.tif 000014
【図１４】
2005106623.tif 000015
【手続補正書】
【提出日】平成18年5月8日(2006.5.8)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
自身が有するＣＰＵのクロックを制御するＣＰＵクロック制御装置であって、
前記ＣＰＵが実行するプログラムをロードし、当該プログラムと、当該プログラムの実行時間に関する要求及び当該プログラムの実行時間に関する要求の許容範囲とを対応づけるプログラム管理部と、
前記プログラムの実行時間に関する要求と許容範囲とを前記プログラム管理部から受け取り、前記プログラムと対応づけて登録するプログラム実行時間登録部と、
前記プログラムの実行に必要な処理量を検知するプログラム処理量検知部と、
前記プログラム実行時間登録部に登録された実行時間に関する要求と許容範囲とを満たす範囲内で、前記プログラム処理量検知部により検知された処理量が所定時間範囲において均等化するように、前記プログラムの実行開始時刻及び単位時間当りの処理量を決定するプログラム実行時間決定部と、
前記プログラム実行時間決定部により決定された前記プログラムの実行開始時刻及び単位時間当りの処理量に基づき、前記ＣＰＵの各時刻における動作周波数を決定し、当該動作周波数を前記ＣＰＵに設定するＣＰＵ動作周波数設定部と、
前記ＣＰＵ動作周波数設定部により設定された動作周波数で動作する前記ＣＰＵに、前記プログラム実行時間決定部により決定された実行開始時刻及び単位時間当りの処理量で前記プログラムを実行させるプログラム実行部と、
を備えることを特徴とするＣＰＵクロック制御装置。
【請求項２】
割り込み発生時に実行される割り込み処理を行う割り込み処理部と、
前記割り込み処理に必要な処理量を検知する割り込み処理量検知部と、
前記割り込み処理部が割り込みの発生時刻において当該割り込み処理を行う場合、前記プログラム実行時間登録部に登録された実行時間に関する要求と許容範囲とを満たす範囲内で、前記プログラムの実行に必要な処理量と前記割り込み処理の処理量とが所定時間範囲において均等化するように、前記プログラムの実行開始時刻及び単位時間当りの処理量を再決定する割り込み時実行時間調整部と、
を更に備え、
前記ＣＰＵ動作周波数設定部は、前記プログラム実行時間決定部により均等化された処理量、または前記割り込み時実行時間調整部により均等化された処理量のいずれか新しい処理量に基づき前記ＣＰＵの動作周波数を決定し、
前記プログラム実行部は、前記プログラム実行時間決定部により決定された実行開始時刻及び単位時間当りの処理量、または前記割り込み時実行時間調整部により再決定された実行開始時刻及び単位時間当りの処理量のいずれか新しい実行開始時刻及び単位時間当りの処理量で、前記プログラムを実行させることを特徴とする請求項１記載のＣＰＵクロック制御装置。
【請求項３】
自身が有するＣＰＵのクロックを制御するＣＰＵクロック制御装置であって、
前記ＣＰＵが実行するタスクをロードし、当該タスクと、当該タスクの実行時間に関する要求及び当該タスクの実行時間に関する要求の許容範囲とを対応づけるタスク管理部と、
前記タスクの実行時間に関する要求と許容範囲とを前記タスク管理部から受け取り、前記タスクと対応づけて登録するタスク実行時間登録部と、
前記タスクの実行に必要な処理量を検知するタスク処理量検知部と、
前記タスク実行時間登録部に登録された実行時間に関する要求と許容範囲とを満たす範囲内で、前記タスク処理量検知部により検知された処理量が所定時間範囲において均等化するように、前記タスクの実行開始時刻及び単位時間当りの処理量をスケジューリングするタスクスケジューリング部と、
前記タスクスケジューリング部によりスケジューリングされた前記タスクの実行開始時刻及び単位時間当りの処理量に基づき、前記ＣＰＵの動作周波数を決定し、当該動作周波数を前記ＣＰＵに設定するＣＰＵ動作周波数設定部と、
前記ＣＰＵ動作周波数設定部により設定された動作周波数で動作する前記ＣＰＵに、前記タスクスケジューリング部によるスケジューリングに基づいて、前記タスクを実行させるタスク実行部と、
を備えることを特徴とするＣＰＵクロック制御装置。
【請求項４】
自身が有するＣＰＵのクロックを制御するＣＰＵクロック制御装置であって、
前記ＣＰＵが実行するタスクをロードし、当該タスクと、当該タスクの実行時間に関する要求及び当該タスクの実行時間に関する要求の許容範囲とを対応づけるタスク管理部と、
前記タスクの実行時間に関する要求と許容範囲とを前記タスク管理部から受け取り、前記タスクと対応づけて登録するタスク実行時間登録部と、
前記タスクの実行に必要な処理量を検知するタスク処理量検知部と、
前記タスク実行時間登録部に登録された実行時間に関する要求と許容範囲とを満たすように、前記タスクを制御するタイマーイベントを決定するタスク実行時間要求解釈部と、
前記タスク実行時間要求解釈部が決定したタイマーイベントを含むタイマーイベントの実行時間に関する要求と、前記タイマーイベントの実行時間の許容範囲とを登録するタイマーイベント登録部と、
前記タイマーイベントの実行に必要な処理量を検知するタイマーイベント処理量検知部と、
前記タイマーイベント登録部に登録されたタイマーイベントの実行時間に関する要求と許容範囲とを満たす範囲内で、タイマーイベントにより実行に移されるタスクに関し前記タスク処理量検知部が検知した必要処理量と、前記タイマーイベント処理量検知部が検知したタイマーイベントの処理量との合計が、所定時間範囲において均等化するように、前記タイマーイベントの実行開始時刻及び単位時間当りの処理量を決定するタイマーイベント決定部と、
前記タイマーイベント決定部により決定された前記タイマーイベントの実行開始時刻及び単位時間当りの処理量に基づき、前記ＣＰＵの動作周波数を決定し、当該動作周波数を前記ＣＰＵに設定するＣＰＵ動作周波数設定部と、
前記ＣＰＵ動作周波数設定部により設定された動作周波数で動作する前記ＣＰＵに、前記タイマーイベント決定部により決定された実行開始時刻及び単位時間当りの処理量に基づいて、前記タイマーイベントを実行させるタイマーイベント実行部と、
を備えることを特徴とするＣＰＵクロック制御装置。
【請求項５】
ＣＰＵが実行するプログラムの実行時間に関する要求と、前記プログラムの実行時間に関する要求の許容範囲とを、前記プログラムに対応づけて登録するプログラム実行時間登録工程と、
前記プログラムの実行に必要な処理量を検知するプログラム処理量検知工程と、
前記プログラム実行時間登録工程により登録された実行時間に関する要求と許容範囲とを満たす範囲内で、前記プログラム処理量検知工程により検知された処理量が所定時間範囲において均等化するように、前記プログラムの実行開始時刻及び単位時間当りの処理量を決定するプログラム実行時間決定工程と、
前記プログラム実行時間決定工程により決定された前記プログラムの実行開始時刻及び単位時間当りの処理量に基づき、前記ＣＰＵの各時刻における動作周波数を決定し、当該動作周波数を前記ＣＰＵに設定するＣＰＵ動作周波数設定工程と、
前記ＣＰＵ動作周波数設定工程により設定された動作周波数で動作する前記ＣＰＵに、前記プログラム実行時間決定工程により決定された実行開始時刻及び単位時間当りの処理量で前記プログラムを実行させるプログラム実行工程と、
を備えることを特徴とするＣＰＵクロック制御方法。
【請求項６】
自身が有するＣＰＵのクロックを制御するＣＰＵクロック制御装置としてコンピュータを機能させるＣＰＵクロック制御プログラムであって、
前記ＣＰＵが実行するプログラムの実行時間に関する要求と、前記プログラムの実行時間に関する要求の許容範囲とを、前記プログラムに対応づけて登録するプログラム実行時間登録手段と、
前記プログラムの実行に必要な処理量を検知するプログラム処理量検知手段と、
前記プログラム実行時間登録手段により登録された実行時間に関する要求と許容範囲とを満たす範囲内で、前記プログラム処理量検知手段により検知された処理量が所定時間範囲において均等化するように、前記プログラムの実行開始時刻及び単位時間当りの処理量を決定するプログラム実行時間決定手段と、
前記プログラム実行時間決定手段により決定された前記プログラムの実行開始時刻及び単位時間当りの処理量に基づき、前記ＣＰＵの各時刻における動作周波数を決定し、当該動作周波数を前記ＣＰＵに設定するＣＰＵ動作周波数設定手段と、
前記ＣＰＵ動作周波数設定手段により設定された動作周波数で動作する前記ＣＰＵに、前記プログラム実行時間決定手段により決定された実行開始時刻及び単位時間当りの処理量で前記プログラムを実行させるプログラム実行手段として前記コンピュータを機能させるＣＰＵクロック制御プログラム。
【請求項７】
自身が有するＣＰＵのクロックを制御するＣＰＵクロック制御装置としてコンピュータを機能させるＣＰＵクロック制御プログラムを記録したコンピュータ読み取り可能な記録媒体であって、
前記ＣＰＵが実行するプログラムの実行時間に関する要求と、前記プログラムの実行時間に関する要求の許容範囲とを、前記プログラムに対応づけて登録するプログラム実行時間登録手段と、
前記プログラムの実行に必要な処理量を検知するプログラム処理量検知手段と、
前記プログラム実行時間登録手段により登録された実行時間に関する要求と許容範囲とを満たす範囲内で、前記プログラム処理量検知手段により検知された処理量が所定時間範囲において均等化するように、前記プログラムの実行開始時刻及び単位時間当りの処理量を決定するプログラム実行時間決定手段と、
前記プログラム実行時間決定手段により決定された前記プログラムの実行開始時刻及び単位時間当りの処理量に基づき、前記ＣＰＵの各時刻における動作周波数を決定し、当該動作周波数を前記ＣＰＵに設定するＣＰＵ動作周波数設定手段と、
前記ＣＰＵ動作周波数設定手段により設定された動作周波数で動作する前記ＣＰＵに、前記プログラム実行時間決定手段により決定された実行開始時刻及び単位時間当りの処理量で前記プログラムを実行させるプログラム実行手段として前記コンピュータを機能させるＣＰＵクロック制御プログラムを記録したコンピュータ読み取り可能な記録媒体。
【請求項８】
自身が有するＣＰＵのクロックを制御するＣＰＵクロック制御装置としてコンピュータを機能させるＣＰＵクロック制御プログラムを保持する伝送媒体であって、
前記ＣＰＵが実行するプログラムの実行時間に関する要求と、前記プログラムの実行時間に関する要求の許容範囲とを、前記プログラムに対応づけて登録するプログラム実行時間登録手段と、
前記プログラムの実行に必要な処理量を検知するプログラム処理量検知手段と、
前記プログラム実行時間登録手段により登録された実行時間に関する要求と許容範囲とを満たす範囲内で、前記プログラム処理量検知手段により検知された処理量が所定時間範囲において均等化するように、前記プログラムの実行開始時刻及び単位時間当りの処理量を決定するプログラム実行時間決定手段と、
前記プログラム実行時間決定手段により決定された前記プログラムの実行開始時刻及び単位時間当りの処理量に基づき、前記ＣＰＵの各時刻における動作周波数を決定し、当該動作周波数を前記ＣＰＵに設定するＣＰＵ動作周波数設定手段と、
前記ＣＰＵ動作周波数設定手段により設定された動作周波数で動作する前記ＣＰＵに、前記プログラム実行時間決定手段により決定された実行開始時刻及び単位時間当りの処理量で前記プログラムを実行させるプログラム実行手段として前記コンピュータを機能させるＣＰＵクロック制御プログラムを保持する伝送媒体。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置におけるＣＰＵの動作周波数を制御して消費電力の削減を行うＣＰＵクロック制御装置、ＣＰＵクロック制御方法、ＣＰＵクロック制御プログラム、記録媒体、及び伝送媒体に関するものである。
【背景技術】
【０００２】
情報処理装置（コンピュータ）は中央演算装置（ＣＰＵ）が命令を解釈、実行することで動作するが、ＣＰＵが消費する電力はその動作周波数（単位時間あたりに入力するクロック数）により変化する。動作周波数の制御によりＣＰＵの消費電力を削減する方法は、様々なものが考案、実用化されている。
【０００３】
代表的な電力削減方法として、ＣＰＵを最大動作周波数で駆動することで要求される処理をなるべく早く行い、処理の必要の無い時間（アイドル時間）ではクロックを停止する方法がある。例えば、最大動作周波数が１００ＭＨｚのＣＰＵで５０Ｍ（メガ）クロック分の処理を１秒以内に行う必要が有る場合を考える。この場合は、まず１００ＭＨｚの動作周波数で０．５秒間ＣＰＵを駆動して処理を完了させ、残りの０．５秒間はクロックを完全に停止するといった処理を行う。また別の方法として、要求される時間内で処理を完了できる最小の動作周波数を算出し、その動作周波数でＣＰＵを駆動する方法がある。例えば、５０Ｍクロック分の処理を１秒以内に行う必要が有る場合、５０ＭＨｚの動作周波数で１秒間ＣＰＵを駆動する。この２つの方法は、いずれも処理に必要な最小限のクロックだけを使うことで無駄なクロックを削減し、ＣＰＵの消費電力を抑えるものである。
【０００４】
要求される時間内で処理を完了できる最小動作周波数を算出して用いる技術として、タスク毎に要求するＣＰＵの性能情報を用いて、必要最小限の動作周波数でＣＰＵを動作させるクロック制御装置が開示されている（特許文献１参照）。また、ＣＰＵを複数備えたシステムにおいて、タスクを遅延なく処理するように動作周波数を変化させる演算処理システムが発明されている（特許文献２参照）。
【０００５】
１クロックの入力でＣＰＵが消費する電力は、その電源電圧の２乗に比例することが知られている。また、ＣＰＵの動作周波数を上げる為には、同時に電源電圧を上げる必要があることが多い。従って、このようなＣＰＵでは、１クロックあたりに消費する電力が動作周波数によって異なるため、同じだけの処理量でも合計消費電力が異なる。例えば、動作周波数に比例した電源電圧が必要となるＣＰＵを用いると、前記従来の２つの電力削減方法では１秒間の総クロック数（＝処理量）は同じだが、この１秒間の消費電力は後者が前者の１／４になる。また、同様に、同じ量の処理を同じ時間内に行う場合では、なるべく動作周波数は変えずに一定の動作周波数でＣＰＵを駆動した方が消費電力は少なくなる。例えば最初の０．５秒間を２００ＭＨｚで駆動し、残りの０．５秒間を１００ＭＨｚで駆動するより、１５０ＭＨｚで１秒間駆動する方が消費電力は少なくなる。電源電圧と動作周波数の関係はＣＰＵの設計によるが、前述した様に、処理量の要求を満たす範囲でなるべくアイドルの期間を作らず、同一の動作周波数でＣＰＵを駆動すると大きな電力削減効果を得られる場合が多い。
【０００６】
また、電力の供給に電池を用いる場合、単位時間当りの電力消費が安定している方が電池内のエネルギーを有効に利用できることが報告されている。また、これを利用したタスクスケジューリングアルゴリズムが開示されている（非特許文献１参照）。
【特許文献１】特開平８−７６８７４号公報
【特許文献２】特開２００２−９９４３３号公報
【非特許文献１】電子情報通信学会論文誌  Ｄ−Ｉ  Ｖｏｌ．Ｊ８３−Ｄ−Ｉ  Ｎｏ．１２  ｐｐ．１２４９−１２５９．
【発明の開示】
【発明が解決しようとする課題】
【０００７】
しかしながら、情報処理装置で処理を行う場合、処理の開始時刻や終了時刻、あるいは実行の周期といった実行時間が指定される場合が多い。例えば、映像の描画を行う場合、映像１フレームに相当する時間毎に周期的に処理を行う必要がある。状況によっては、周期の異なる複数の周期的処理や、周期的ではないが実行する時間を指定された処理を多数同時に実行することもある。このような時間を指定された処理は、例えば、情報処理装置のオペレーティングシステム（ＯＳ）が管理するタイマーイベントを用いたり、あるいはタイマーイベントからタスクを起動したりする形で実現することができる。
【０００８】
前述した従来のＣＰＵでは、動作周波数を制御して、なるべくアイドルの期間を作らずかつ同一の動作周波数で動作させると、大きな電力削減効果を得られる。しかしながら、一般に、時間を指定された処理、例えばタイマーイベントやそれによって起動されるタスクは、特定の時間に集中することがある。また、それとは逆に特定の時間は処理が存在せずアイドル期間になることがある。つまり、ＣＰＵに要求される処理量は時間により変動するので、前記特許文献１に係る発明を用いても、ＣＰＵの動作周波数はその時間に要求される処理量に応じて大きく変動することになる。このように、動作周波数が大きく変動するため、前記特許文献１に係る発明の電力削減効果は減少するという課題を有していた。
【０００９】
一方、タイマーイベントなどの実行時間を指定する処理において、その要求の厳密さは様々である。例えば、実行開始時刻を指定している場合でも、一定の範囲内なら実行開始時刻が遅れても許容できるものもある。しかし、このような実行時間要求の許容範囲を利用して、ＣＰＵが行うべき処理量を平滑化し、ＣＰＵ動作周波数の変動を抑える制御は、前記特許文献１、特許文献２、及び非特許文献１に記載の発明や技術では考慮されておらず、実現することが不可能であった。
【００１０】
本発明は、上記課題を鑑みて成されたものであり、情報処理装置においてＣＰＵに要求される処理量を平滑化することによりＣＰＵの消費電力の削減を行うものである。
【課題を解決するための手段】
【００１１】
この目的のために本発明の一態様に係るＣＰＵクロック制御装置は、自身が有するＣＰＵのクロックを制御するＣＰＵクロック制御装置であって、前記ＣＰＵが実行するプログラムの実行時間に関する要求と、前記プログラムの実行時間に関する要求の許容範囲とを登録するプログラム実行時間登録部と、前記プログラムの実行に必要な処理量を検知するプログラム処理量検知部と、前記プログラム実行時間登録部に登録された実行時間に関する要求と許容範囲とを満たす範囲内で、前記プログラム処理量検知部により検知された処理量が所定時間範囲において均等化するように、前記プログラムの実行開始時刻及び単位時間当りの処理量を決定するプログラム実行時間決定部と、前記プログラム実行時間決定部により決定された前記プログラムの実行開始時刻及び単位時間当りの処理量に基づき、前記ＣＰＵの各時刻における動作周波数を決定し、当該動作周波数を前記ＣＰＵに設定するＣＰＵ動作周波数設定部と、前記ＣＰＵ動作周波数設定部により設定された動作周波数で動作する前記ＣＰＵに、前記プログラム実行時間決定部により決定された実行開始時刻及び単位時間当りの処理量で前記プログラムを実行させるプログラム実行部と、を備えるものである。
【００１２】
本発明の目的、特徴、局面、及び利点は、以下の詳細な説明と添付図面とによって、より明白となる。
【発明の効果】
【００１３】
本発明によれば、プログラムの実行時間に関する要求と許容範囲とを満たす範囲内で、当該プログラムの実行を行うことができる。さらに、ＣＰＵに要求される処理量を均等化しているので、それに応じてＣＰＵの消費電力の削減を行うことが可能である。
【発明を実施するための最良の形態】
【００１４】
以下本発明の実施の形態について、図面を参照しながら説明する。
【００１５】
（実施の形態１）
図１は、本発明の実施の形態１のＣＰＵ動作周波数制御を行う情報処理装置を示す図である。情報処理装置５１は少なくても一つ以上の中央演算装置（ＣＰＵ）１とメモリ装置２とを備えている。また、情報処理装置５１は入力装置としての操作部３を備えている。さらに、情報処理装置５１は、図示しないが出力装置のような他の機器を備えていても良い。入力装置、出力装置については、他の実施の形態でも同様である。
【００１６】
ＣＰＵ１は、動作周波数を変更可能であれば任意のタイプのものを用いることができる。ＣＰＵ１の動作周波数の変更はオペレーティングシステム（ＯＳ）１００、より正確には後述するＯＳ１００内のＣＰＵ動作周波数設定部１０４により行われる。
【００１７】
メモリ装置２には、少なくとも一つ以上のプログラム１０、情報処理装置５１のＯＳ１００が格納されている。メモリ装置２は、十分な機能及び容量があればランダムアクセスメモリ（ＲＡＭ）、フラッシュメモリのような任意のタイプのものを使用することができる。また、メモリ装置２は単一のメモリ装置で構成されている必要はなく、同種の複数のメモリ装置、またはリードオンリーメモリ（ＲＯＭ）を含む、異なる種類のメモリ装置の組み合わせであっても良い。さらに、メモリ装置２以外に、例えばハードディスクのような外部記憶装置を設け、情報処理装置５１の動作に問題の無い範囲で外部記憶装置にメモリ装置２の内容を移動させても良い。
【００１８】
本実施の形態でのプログラム１０とは、情報処理装置５１で実行される各々の処理を情報処理装置５１のプログラムとして記述したものである。つまり、プログラム１０に含まれる個々のプログラム＃１、＃２等は、実行単位として分けられるものであればサイズや形態等は任意で良い。また、本実施の形態では、ＯＳ１００の制御の元でプログラム１０を実行することで、情報処理装置５１は各種の処理を行う。
【００１９】
上記のプログラム１０等は、ＲＯＭ、フレキシブルディスク、ＣＤ−ＲＯＭ等の記録媒体３１を通じて供給することも、電話回線、ネットワーク等の伝送媒体３３を通じて供給することも可能である。図１には、記録媒体３１としてＣＤ−ＲＯＭが描かれており、伝送媒体３３として電話回線が描かれている。ＣＤ−ＲＯＭに記録されたプログラム１０等は、例えば情報処理装置５１の外部装置としてのＣＤ−ＲＯＭ読取装置３２を情報処理装置５１本体へ接続することによって読み出すことができ、例えばＲＡＭあるいは図示しないハードディスク等に格納することができる。記録媒体３１としてＲＯＭの形態でプログラム１０等が供給される場合には、当該ＲＯＭを情報処理装置５１に搭載することにより、情報処理装置５１はプログラム１０等に従った処理を実行可能となる。この場合、当該ＲＯＭは、メモリ装置２に含まれる。伝送媒体３３を通じて供給されるプログラム１０等は、通信装置３４を通じて受信され、例えばＲＡＭあるいは図示しないハードディスク等に格納される。伝送媒体３３は、有線の伝送媒体に限らず無線の伝送媒体であっても良い。
【００２０】
ＯＳ１００は、本実施の形態のＣＰＵクロック制御を行う為、プログラム管理部１１０、プログラム実行時間登録部１０１、プログラム処理量検知部１０２、プログラム実行時間決定部１０３、ＣＰＵ動作周波数設定部１０４、及びプログラム実行部１０５を備えている。本実施の形態においては、このプログラム管理部１１０、プログラム実行時間登録部１０１、プログラム処理量検知部１０２、プログラム実行時間決定部１０３、ＣＰＵ動作周波数設定部１０４、プログラム実行部１０５、及びＣＰＵ１がＣＰＵクロック制御装置１１としての機能を有する。
【００２１】
プログラム管理部１１０は、管理テーブル１１１を備えている。管理テーブル１１１は、プログラム１０に含まれる個々のプログラム＃１、＃２等に対応させて、個々のプログラムの実行開始時刻、許容範囲等を記憶している。プログラム管理部１１０は、例えば、操作部３を介してユーザが実行を指示した個々のプログラム＃１、＃２等に対応する実行開始時刻、許容範囲等をプログラム実行時間登録部１０１に通知し、登録させる。ここで、プログラム管理部１１０は、必ずしもプログラムの実行開始時刻、許容範囲等を記憶している必要はなく、個々のプログラムと、当該プログラムの実行時間に関する要求及び当該プログラムの実行時間に関する要求の許容範囲とを対応づける機能を有していれば良い。
【００２２】
プログラム実行時間登録部１０１は、プログラム管理部１１０の指示により、実行が指示されたプログラムの実行時間に関する要求とその許容範囲についての情報を登録する。プログラム実行時間登録部１０１は、登録されたプログラムの実行時間に関する要求とその許容範囲とをプログラム実行時間決定部１０３に通知する。
【００２３】
プログラムの実行時間に関する要求とは、例えば、開始時刻に関する要求、つまりいつプログラムの実行を開始するかの要求である。あるいは、いつまでに処理を終える必要があるかといった終了時刻に関する要求や、周期的にプログラムを実行する場合の実行周期等である。どのような要求を登録可能にするかは、情報処理装置５１の使用の目的や環境に合わせて設計することが出来る。
【００２４】
また、許容範囲とは、実行時間に関する要求に対してどの程度の変動が許されるかを示す情報である。例えば、開始時刻に関する要求に対しては、許される開始時刻の遅れ等が許容範囲の一例である。１秒後の実行開始を要求するが、０．１秒の開始時刻の遅れが許される場合は、実行時間に関する要求が１秒後、許容範囲が＋０．１秒となる。また、１０秒ごとの周期的な実行を要求し１秒の周期の早まりあるいは遅れ等の変動が許容できる場合は、実行時間に関する要求が１０秒周期、許容範囲は±１秒となる。どのような許容範囲を登録可能にするか、あるいはその表記の方法は、実行時間に関する要求と同様に、情報処理装置５１の使用の目的や環境に合わせて設計することが出来る。
【００２５】
プログラム実行時間登録部１０１に登録される情報である実行時間に関する要求と許容範囲とは、例えば、プログラムを情報処理装置５１に登録またはインストールする時に、実行時間要求を登録する関数を呼び出して引数として渡せば良い。情報処理装置５１は、登録やインストールを行う専用のプログラムを備えているのが普通である。そのため、当該プログラムが前述した実行時間要求を登録する関数を呼び出すことで、プログラム管理部１１０の制御のもとに、プログラム実行時間登録部１０１への登録処理を実現できる。
【００２６】
あるいは、それに限られず、情報処理装置５１のユーザが、あるプログラムの実行指示を行った際に実行時間に関する要求と許容範囲とを指定する形態であっても良い。さらには、プログラム中にコードとして、実行時間に関する要求と許容範囲とが書き込まれている形態であっても良い。以上のプログラムの実行時間に関する要求と許容範囲とを登録する形態は、以下の実施の形態におけるタスクやタイマーイベントの実行時間に関する要求と許容範囲とを登録する際においても適用可能である。
【００２７】
プログラム処理量検知部１０２は、プログラム１０に含まれる個々のプログラム＃１、＃２等の実行時に必要とされる処理量を検知し、プログラム実行時間決定部１０３に通知する。処理量の検知は、例えば、各プログラム＃１、＃２等の中に必要とされる処理量を記述しておき、実行前に各プログラム＃１、＃２等から関数の引数として渡すことで可能である。あるいは各プログラム＃１、＃２等のヘッダ等に処理量を記述しておき、プログラム処理量検知部１０２がその値を読み出しても良い。
【００２８】
あるいは、複数回実行されるプログラムでは、プログラムを実際に実行して終了までにかかった時間を記録し、その時間に亘ってＣＰＵの動作周波数を積分（ＣＰＵ動作周波数が一定の場合は乗算することと等価）して要した処理量を実測しても良い。さらには、処理量の実測を複数回行い、そのデータの平均を取るといった方法でも良い。処理量の検知方法は、実際に検知が可能であれば任意の方法を用いることが出来る。また、本発明ではプログラムが必要とする処理量は正確な値である必要は必ずしもなく、処理量を大、中、あるいは小のようにおおまかに分類したものでも効果を得ることが出来る。これは本実施の形態に限らず、他の実施の形態でも同様である。
【００２９】
プログラム実行時間決定部１０３は、プログラム実行時間登録部１０１から通知されたプログラム１０の実行時間に関する要求と許容範囲、及びプログラム処理量検知部１０２から通知された必要な処理量に基づき、プログラム１０に含まれる個々のプログラム＃１、＃２等の実行の時間を決定する。ここで、プログラム実行時間決定部１０３は、実行時間に関する要求とその許容範囲を満たす範囲で各プログラム１０に含まれる個々のプログラム＃１、＃２等の実行時間を決定する。同時に、予め定められた単位時間毎で、実行されるプログラムの必要処理量の合計がなるべく一定になるように実行の時間を決定する。つまり、単位時間当りのプログラムの必要処理量が極力等しくなる（均等化）ようにプログラムの実行時間を決定する。これにより、時間毎の必要処理量は平滑化されたことになる。そして、プログラム実行時間決定部１０３は、平滑化した処理量をＣＰＵ動作周波数設定部１０４に通知する。
【００３０】
ＣＰＵ動作周波数設定部１０４は、プログラム実行時間決定部１０３により平滑化された処理量に基づいてＣＰＵの動作周波数を決定する。そして、ＣＰＵ動作周波数設定部１０４は、ＣＰＵ１に印加される電圧を制御すること等で当該動作周波数をＣＰＵ１に設定する。また、例えば、ＣＰＵ動作周波数設定部１０４が、ＣＰＵ１内に設けられている、動作周波数を決定するレジスタの値を書き換えることで動作周波数を設定する形態であっても良い。
【００３１】
設定される周波数は、例えば、必要とされる処理を各単位時間で丁度終了し、アイドル時間を作らない最小の動作周波数である。単位時間が１秒間で、ある単位時間の間（ここでは１秒間）に１００Ｍクロック分の処理が必要とされる場合、この１秒間は１００ＭＨｚの動作周波数に設定する。あるいは、実際の処理量に余裕を持たす為、最低限必要な動作周波数に一定量を加えた動作周波数に設定しても良い。
【００３２】
いずれの場合も、単位時間毎に行わなければならない処理量は、プログラム実行時間決定部１０３により平滑化されている。そのため、ＣＰＵ動作周波数設定部１０４により設定される動作周波数の変動は、平滑化を行わない場合に比べて少なくなる。前述した様に、同じだけの処理量でもＣＰＵの動作周波数の変動は少ない方が消費電力は少なくなる。従って、平滑化を行わない場合に比べ、ＣＰＵが消費する電力は少なくなる。
【００３３】
プログラム実行部１０５は、ＣＰＵ動作周波数設定部１０４により設定された動作周波数で動作するＣＰＵ１を用いて、プログラム実行時間決定部１０３の決定した実行時間でプログラム１０に含まれる個々のプログラム＃１、＃２等を実行する。
【００３４】
図２は、本実施の形態のＣＰＵクロック制御装置の動作を説明するフローチャートである。ステップＳ２−１からステップＳ２−５までは、プログラム管理部１１０、プログラム実行時間登録部１０１及びプログラム処理量検知部１０２との動作、ステップＳ２−６からステップＳ２−９までは、プログラム実行時間決定部１０３、ＣＰＵ動作周波数設定部１０４、及びプログラム実行部１０５の動作である。
【００３５】
ステップＳ２−１では、例えばユーザが操作部３を操作することにより、プログラム管理部１１０は情報処理装置５１が実行するプログラムを、例えば前述のＲＯＭ等からメモリ装置２内にロードし、登録する。続いてステップＳ２−２では、プログラム管理部１１０は管理テーブル１１１を参照し、登録されたプログラム１０の実行時間に関する要求と許容範囲とをプログラム実行時間登録部１０１に登録する。ステップＳ２−３では、プログラム実行時間登録部１０１は、登録された実行時間に関する要求と許容範囲とをプログラム実行時間決定部１０３に通知する。
【００３６】
ステップＳ２−４では、プログラム処理量検知部１０２は、実行を要求されたプログラムに必要な処理量の検知を行う。前述の通り、ステップＳ２−４は、例えば情報処理装置５１が備えている、登録やインストールを行う専用のプログラムが、実行時間要求を登録する関数を呼び出して必要処理量を検知したり、実際のプログラムの実行を待って必要処理量の実測をしたりする。ステップＳ２−５では、プログラム処理量検知部１０２は、検知したプログラムの必要処理量をプログラム実行時間決定部１０３に通知する。なお、図２のフローチャートでは、時間に関する要求と許容範囲との登録、及び通知（Ｓ２−２、Ｓ２−３）を必要処理量の検知と通知（Ｓ２−４、Ｓ２−５）より先に行っているが、必ずしもその必要は無い。これらは独立したものなので、任意の順番で実行することが可能である。
【００３７】
ステップＳ２−６は、プログラム実行時間決定部１０３の呼び出しである。プログラム実行時間決定部１０３の呼び出しは、新しいプログラムが登録された直後、つまりプログラム実行時間登録部１０１からの実行時間に関する要求と許容範囲、及びプログラム処理量検知部１０２からの必要処理量がプログラム実行時間決定部１０３に通知された後（ステップＳ２−５の直後）で良い。あるいは、特定の周期で周期的に行ったり、一つのプログラムが処理を完了した時に呼び出したりしても良い。
【００３８】
Ｓ２−７は、実行が要求され、プログラム実行時間決定部１０３に実行時間に関する要求等が通知されている全てのプログラムの実行時間の決定を行う。前述の通り、プログラム実行時間決定部１０３は、ステップＳ２−３で通知されている各プログラムの実行時間要求と許容範囲とを満たす範囲で、ステップＳ２−５で通知された各プログラムの必要処理量の単位時間当りの合計が、極力均等化するように実行時間を決定する。
【００３９】
ステップＳ２−７の実行時間の決定は、制約を満たしながらプログラムの実行時間を配置する一般的な問題であり、様々なアルゴリズムを用いることが出来る。例えば、対象となるプログラム１０が比較的少数なら、考えられる全ての実行時間のパターンを列挙して処理量の変動を比較しても良い。ただし、本発明では完全な均等化を行う必要は必ずしも無い。ＣＰＵ動作周波数の変動を少なくした分だけ消費電力を少なく出来るので、完全でなくても均等化した分だけの消費電力削減効果を得られる。従って、例えば、最も必要処理量の大きくなる時間から、一つのプログラムの実行を別の時間へ移動させるだけでも効果がある。
【００４０】
また、プログラムの必要処理量が正確な値でなく近似値の場合でも、ある程度の均等化は可能なので、消費電力削減の効果を得ることが出来る。さらに、ここでは全てのプログラムの実行時間を決定する必要はなく、現在時刻から一定先の時刻までの実行時間を決定するだけでも良い。均等化には計算時間が必要となるので、どの程度正確な均等化を行うかは、情報処理装置５１の使用の目的や環境に合わせて設計すれば良い。
【００４１】
ステップＳ２−８では、プログラム実行時間決定部１０３により決定された実行時間を受けて、ＣＰＵ動作周波数設定部１０４はＣＰＵ１の動作周波数を決定し、当該動作周波数をＣＰＵ１に設定する。Ｓ２−９では、プログラム実行部１０５が実行を要求されたプログラムを実行する。プログラムはプログラム実行時間決定部１０３により決定された時間に実行される。従って、実際は、ステップＳ２−９はステップＳ２−８終了後直ちに実行されるわけではなく、決定された実行時間を迎えた時に実行される。
【００４２】
図３は、本実施の形態において、ＣＰＵクロック制御装置が行う処理の一例である。図３（ａ１）は、実行が要求されているプログラムと、当該プログラムが要求している実行時間とをそのまま時間軸上に配置した模式図である。（ａ１）は、図２のステップＳ２−１からステップＳ２−５の結果、プログラム実行時間決定部１０３に通知される情報であり、横軸は時刻（単位は任意）、縦軸はその時間に必要される処理量（Ｍクロック）である。四角のブロックはプログラムを表しており、ブロックの縦の大きさはそれぞれのプログラムの必要処理量に対応する。（ａ１）では、ＡからＤまでの４つのプログラムが登録されている。プログラム名であるアルファベットの後の値はプログラムの必要処理量（単位はＭクロック）であり、その後ろの値は要求された実行開始時刻と許容範囲である。プログラムＡの場合、必要処理量が１００、実行開始時刻が０、許容範囲が＋２となる。
【００４３】
図３の例では、実行時間の要求は、その値の時刻からその次の時刻までの間での実行と処理の完了とを要求しているとする。つまり、Ａの場合は実行開始時刻が０であるから、時刻０から１の間での実行と処理の完了とを要求していることになる。以下では、これを「時刻０での実行を要求している」という様に表記する。Ｃの場合は、時刻２から３の間での実行と処理の完了とを要求しているので、「時刻２での実行を要求している」となる。
【００４４】
許容範囲の値は、実行時間の変動の範囲を表しており、＋１の場合は時間１の実行の遅れまで許容、＋２なら時間２の遅れまで許容となる。プログラムＡの場合は許容範囲が＋２なので、要求時刻０での実行を要求しているが時刻１や２での実行でも許容できる。プログラムＢは時刻０での実行を要求しており、かつ許容範囲が０なので、他の時刻での実行は出来ない。プログラムＣ及びＤは時刻２での実行を要求しており、かつ許容範囲が０なので、この時刻で実行しなければならない。
【００４５】
図３（ｂ１）は、（ａ１）の実行時間でプログラムＡからＤを実行し、各時間でそれぞれの処理を必要最小限の動作周波数で完了する、つまりアイドル期間をつくらないようにＣＰＵ動作周波数を設定した場合を表している。この（ｂ１）の横軸は（ａ１）と同じく時刻であるが、縦軸はＣＰＵ１の動作周波数（Ｍクロック／単位時間）である。
【００４６】
図３（ａ２）は、ステップＳ２−６、Ｓ２−７が実行され、プログラム実行時間決定部１０３により決定されたプログラムの実際の実行時間を表している。ステップＳ２−７の結果、プログラム実行時間決定部１０３は、時間毎の必要周波数が均等化するように、プログラムＡを時刻１で実行することを決定する。なお、ここでは計算に必要な処理量を考えて、現在時刻より３時刻先までのプログラム実行のみを均等化している。つまり図３中の時刻の範囲のみで考えている。
【００４７】
図３（ｂ２）は、プログラム実行時間決定部１０３により決定された（ａ２）のプログラム実行時間を達成するために、ＣＰＵ動作周波数設定部１０４が決定したＣＰＵ動作周波数である。（ｂ２）は（ｂ１）と比較すると動作周波数の変動が少なくなっており、この期間でのＣＰＵの消費電力が削減される。また、各プログラムはそれぞれの許容範囲を満たして実行されている。
【００４８】
図４は、本実施の形態において、ＣＰＵクロック制御装置が行う処理の他の一例である。図４（ａ１）は、図３（ａ１）と同様、実行が要求されているプログラムと、当該プログラムが要求している実行時間とをそのまま時間軸上に配置した模式図である。プログラムＡは周期２での周期的実行を要求しており、図４（ａ１）ではこれを実行時間要求においてＰ２と表記している。周期的実行なので、プログラムＡは時刻０、２、４での実行を要求していることになる。ただしプログラムＡの許容範囲は＋１なので、実行される時刻が１だけ遅れても許容できる。（ａ２）は、プログラム実行時間決定部１０３により実行時間が決定された後の状態を示す模式図である。この（ａ２）に示した例では、時刻２での実行を要求しているプログラムＡは、許容範囲が＋１であるため実行される時刻が１だけ遅れて、実際には時刻３で実行される。
【００４９】
図４（ｂ１）、（ｂ２）は、ＣＰＵ動作周波数設定部１０４により決定された、プログラム実行処理に必要な最小の動作周波数を用いる場合のＣＰＵ１の動作周波数である。（ｂ２）においても、動作周波数が完全に均等化されている訳ではないが、（ｂ１）に比べて動作周波数の変動が少なくなり、ＣＰＵの消費電力はその分だけ削減される。また、各プログラムＡ〜Ｅはそれぞれの許容範囲を満たして実行されている。
【００５０】
以上の様に、本発明ではプログラムの実行時間に関する要求を許容範囲内で満たした上で、ＣＰＵの消費電力を削減することが可能である。なお、本実施の形態でのプログラム１０は、情報処理装置５１で実行される全ての処理である必要はなく、その内の特定の一部でも良い。同様に、全てのプログラム１０が、時間要求と許容範囲とを登録する必要は無い。処理量を平滑化されるのが全ての処理のうちの一部であっても、平滑化された分に応じた消費電力の削減効果を得ることが可能である。
【００５１】
なお、本発明の実施の形態ではＯＳ１００内に、プログラム実行時間登録部１０１、プログラム処理量検知部１０２、プログラム実行時間決定部１０３、ＣＰＵ動作周波数設定部１０４、及びプログラム実行部１０５を設けたが、ＯＳ１００の外部に設けることも可能である。
【００５２】
（実施の形態２）
図５は、本発明の実施の形態２のＣＰＵ動作周波数制御を行う情報処理装置を示す図である。この図において、ＣＰＵ１及びメモリ装置２を備える構成は実施の形態１と同じである。また、プログラム２０は実施の形態１のプログラム１０と同様に、情報処理装置５２で実行される各々の処理を情報処理装置５２のプログラムとして記述したものである。ＣＰＵ１の動作周波数の変更等は、ＯＳ２００内のＣＰＵ動作周波数設定部２０７により行われる。
【００５３】
ＯＳ２００は、本実施の形態のＣＰＵクロック制御を行う為、プログラム管理部２１０、プログラム実行時間登録部２０１、プログラム処理量検知部２０２、プログラム実行時間決定部２０３、割り込み処理量検知部２０４、割り込み処理部２０５、割り込み時実行時間調整部２０６、ＣＰＵ動作周波数設定部２０７、及びプログラム実行部２０８を備えている。本実施の形態においては、このプログラム管理部２１０、プログラム実行時間登録部２０１、プログラム処理量検知部２０２、プログラム実行時間決定部２０３、割り込み処理量検知部２０４、割り込み処理部２０５、割り込み時実行時間調整部２０６、ＣＰＵ動作周波数設定部２０７、プログラム実行部２０８、及びＣＰＵ１がＣＰＵクロック制御装置１２としての機能を有する。
【００５４】
プログラム管理部２１０は、管理テーブル２１１を備えている。管理テーブル２１１は、プログラム２０に含まれる個々のプログラム＃１、＃２等に対応させて、個々のプログラムの実行開始時刻、許容範囲等を記憶している。プログラム管理部２１０は、例えば、操作部３を介してユーザが実行を指示した個々のプログラム＃１、＃２等に対応する実行開始時刻、許容範囲等をプログラム実行時間登録部２０１に通知し、登録させる。ここで、プログラム管理部２１０は、必ずしもプログラムの実行開始時刻、許容範囲等を記憶している必要はなく、個々のプログラムと、当該プログラムの実行時間に関する要求及び当該プログラムの実行時間に関する要求の許容範囲とを対応づける機能を有していれば良い。
【００５５】
プログラム実行時間登録部２０１は実施の形態１のプログラム実行時間登録部１０１と同様に、プログラム２０からその時間に対する要求と、許容範囲についての情報とを受け取り、プログラム実行時間決定部２０３と割り込み時実行時間調整部２０６とに通知する。同様に、プログラム処理量検知部２０２は実施の形態１のプログラム処理量検知部１０２と同様に、プログラム２０の実行に必要な処理量を、プログラム実行時間決定部２０３と割り込み時実行時間調整部２０６とに通知する。
【００５６】
プログラム実行時間決定部２０３は、実施の形態１のプログラム実行時間決定部１０３と同様に、プログラムの実行時間に関する要求、許容範囲、及び必要な処理量に基づき、一定時間毎のプログラムの必要処理量の合計がなるべく均等になるようにプログラムの実行の時間を決定する。
【００５７】
割り込み処理量検知部２０４は、割り込み発生時に実行される処理（割り込みハンドラ）が必要とする処理量を、割り込み時実行時間調整部２０６に通知する。割り込み処理が必要とする処理量の検知は、例えば、予め処理量を見積もっておき、割り込みハンドラをＯＳ２００に登録する時にその値を渡せば可能である。あるいは、実際に割り込み処理が行われた際に要した処理量を実測して、それに基づき検知しても良い。
【００５８】
割り込み処理部２０５は、割り込み信号が発生した際に、対応する割り込み処理を実行し、合わせて割り込み処理が発生したことを割り込み時実行時間調整部２０６に通知する。
【００５９】
割り込み時実行時間調整部２０６は、プログラム実行時間決定部２０３と同様に、プログラムの実行時間に関する要求、許容範囲、及び必要な処理量に基づき、一定時間毎のプログラムの必要処理量の合計が時間に依らずなるべく一定になるようにプログラムの実行の時間を決定する。ただし、割り込み時実行時間調整部２０６は、割り込み処理部２０５より割り込み発生が通知された場合にのみプログラム実行時間の決定を行う。また、プログラム実行時間の決定は、割り込み処理量検知部２０４より通知されている割り込み処理の処理量を、割り込み発生時間に行う処理として追加した上で、単位時間毎の処理量を極力均等化するようにプログラムの実行の時間を決定するものである。つまり、割り込み処理に費やした処理量を計算に入れた上で処理量が平滑化するようにプログラムの実行時間を再決定する。
【００６０】
ＣＰＵ動作周波数設定部２０７は、実施の形態１のＣＰＵ動作周波数設定部１０４と同様に、プログラム実行時間決定部２０３により平滑化された単位時間毎に必要になる処理量に基づいてＣＰＵの動作周波数を決定する。そして、ＣＰＵ動作周波数設定部２０７は、ＣＰＵ１に印加される電圧を制御することで当該動作周波数をＣＰＵ１に設定する。さらに、割り込み時実行時間調整部２０６がプログラム実行時間を再決定した場合は、ＣＰＵ動作周波数設定部２０７は、割り込み時実行時間調整部２０６により平滑化された処理量に基づいてＣＰＵ動作周波数を決定する。つまり、ＣＰＵ動作周波数設定部２０７は、最新の平滑化の結果に基づきＣＰＵ動作周波数を設定する。その結果、ＣＰＵ動作周波数設定部２０７が平滑化を行わない場合に比べて、設定される動作周波数の変動は少なくなるため、ＣＰＵが消費する電力は削減される。また、割り込み処理が実行された場合は、それを加えた上で、ＣＰＵ動作周波数設定部２０７は平滑化された必要処理量に基づいてＣＰＵ動作周波数を決定するので、割り込みが発生した場合でも適切なＣＰＵ動作周波数を用いることが出来る。
【００６１】
プログラム実行部２０８は、ＣＰＵ動作周波数設定部２０７により設定された動作周波数で動作するＣＰＵ１を用いて、プログラム実行時間決定部２０３の決定した実行時間でプログラム２０に含まれる個々のプログラム＃１、＃２等を実行する。しかしながら、割り込み時実行時間調整部２０６がプログラム実行時間を再決定した場合は、プログラム実行部２０８は、再決定された実行時間でプログラム２０を実行する。つまり、プログラム実行部２０８は、割り込み発生も含めた最新の決定に基づきプログラム２０を実行する。
【００６２】
図６は本実施の形態のＣＰＵクロック制御装置の動作を説明するフローチャートである。ステップＳ６−１からステップＳ６−５は、プログラムの時間要求と許容範囲の登録、及び処理量の検知であり、実施の形態１のステップＳ２−１からステップＳ２−５（図２）と同様である。
【００６３】
ステップＳ６−６はプログラム実行時間決定部２０３の呼び出しであり、実施の形態１のステップＳ２−６と同様である。また、ステップＳ６−７は、実施の形態１のステップＳ２−７と同様である。ステップＳ６−８では、プログラム実行時間決定部２０３は、決定した実行時間と必要な処理量とをＣＰＵ動作周波数設定部２０７とプログラム実行部２０８とに通知する。
【００６４】
ステップＳ６−９からステップＳ６−１１は割り込み処理部２０５及び割り込み時実行時間調整部２０６が行う処理の流れである。ここでは、割り込み処理の処理量は、事前に検知されているとし図示していない。ステップＳ６−９は割り込みの発生であり、ＣＰＵ１はレジスタ４を読みに行き、要求された割り込みを割り込み処理部２０５に通知する。その通知を受け取ると、割り込み処理部２０５は、ステップＳ６−２０において要求された割り込み処理を実行する。そして、ステップＳ６−１０及びＳ６−１１は割り込みを契機に行なわれる処理である。ステップＳ６−１０は、割り込み時実行時間調整部２０６が行う、割り込み処理に必要な処理量を含めた上でのプログラム実行時間の決定である。このステップＳ６−１０は、割り込み処理を現在の時間に必要な処理とみなす以外は、ステップＳ６−７と同様である。ステップＳ６−１１では、割り込み時実行時間調整部２０６は、決定した実行時間と必要な処理量とをＣＰＵ動作周波数設定部２０７とプログラム実行部２０８とに通知する。
【００６５】
ステップＳ６−１２からステップＳ６−１４は、ＣＰＵ動作周波数設定部２０７とプログラム実行部２０８とが行う処理の流れである。ステップＳ６−１２は、ステップＳ６−８（割り込みが発生しなかった場合）、またはＳ６−１１（割り込みが発生した場合）におけるプログラム実行時間と必要処理量との通知であり、ステップＳ６−１３及びＳ６−１４はこれを契機に実行される。Ｓ６−１３は、ＣＰＵ動作周波数設定部２０７が、通知された必要処理量に基づいて行うＣＰＵ動作周波数の決定である。また、ステップＳ６−１４では、プログラム実行部２０８は、ステップＳ６−８またはステップＳ６−１１において決定された実行時間でプログラム２０を実行する。
【００６６】
図７は、本実施の形態において、ＣＰＵクロック制御装置が行う処理の一例である。図７（ａ１）及び（ａ２）は、図３（ａ１）及び（ａ２）と同様に、縦軸が必要処理量（Ｍクロック）であり、横軸が時刻（単位は任意）を表す。また、図７（ｂ１）及び（ｂ２）は、図３（ｂ１）及び（ｂ２）と同様に、縦軸が動作周波数（Ｍクロック／単位時間）であり、横軸が時刻（単位は任意）を表す。
【００６７】
図７（ａ１）は、図６のステップＳ６−１からＳ６−８の結果として、プログラムの実行時間が決定された後に、必要処理量１５０の割り込み処理が発生した状態を示している。この割り込み発生により、ステップＳ６−９、Ｓ６−２０及びＳ６−１０が実行され、割り込み時実行時間調整部２０６においてプログラムの実行時間が再決定される。この例では、プログラムＡ、Ｂは共に、実行開始時刻が０であり、許容範囲は＋２である。そのため、「時刻０での実行を要求している」が時間２の遅れまでが許容され、時刻２までに実行すればよいことがわかる。それに対して、プログラムＣ、Ｄは共に許容範囲が０であるために、それぞれ時刻１及び時刻２で実行されなければならない。
【００６８】
以上により、割り込み時実行時間調整部２０６は、（ａ２）に示したように、プログラムＡ、Ｂの実行の時刻を変更し、それぞれ時刻１及び時刻２での実行とする。この図７（ａ１）及び（ａ２）に示した縦軸の必要処理量をＣＰＵ１の動作周波数に直したものが、それぞれ図７（ｂ１）及び（ｂ２）である。図７（ｂ１）からわかるように、時刻０と１との間で実行させる割り込みが発生した場合、そのままではＣＰＵ１の動作周波数として「２５０」が必要となる。しかしながら、時刻１以降は割り込み処理が終了しているため、ＣＰＵ１の動作周波数としては「１００」が設定される。このように、割り込み時実行時間調整部２０６がプログラムＡ、Ｂの実行の時刻を変更しなければ、ＣＰＵ１の動作周波数の変動が大きく、それに伴ってＣＰＵ１の消費電力も大きいものとなる。
【００６９】
それに対して、割り込み時実行時間調整部２０６がプログラムＡ、Ｂの実行の時刻を変更すると、図７（ｂ２）に示したように、プログラムの実行に必要な処理量が均等化されるため、ＣＰＵ１の動作周波数の変動が少なくなる。これにより、ＣＰＵ１の消費電力は削減される。またこのとき、各プログラムはそれぞれの許容範囲を満たして実行されている。
【００７０】
なお、本実施の形態においても、実施の形態１と同様に、プログラム２０は情報処理装置で実行される全ての処理である必要はなく、その内の特定の一部であっても良い。また、時間要求と許容範囲を登録するのは一部のプログラムでも良い。
【００７１】
なお、本発明の実施の形態ではＯＳ２００内に、プログラム管理部２１０、プログラム実行時間登録部２０１、プログラム処理量検知部２０２、プログラム実行時間決定部２０３、割り込み処理量検知部２０４、割り込み処理部２０５、割り込み時実行時間調整部２０６、ＣＰＵ動作周波数設定部２０７、プログラム実行部２０８を設けたが、ＯＳ２００の外部に設けることも可能である。
【００７２】
（実施の形態３）
図８は、本発明の実施の形態３のＣＰＵ動作周波数制御を行う情報処理装置を示す図である。この図において、ＣＰＵ１及びメモリ装置２を備える構成は実施の形態１と同じである。
【００７３】
タスク３０に含まれる各タスク＃１、＃２等は、情報処理装置が処理を行う単位であり、ＯＳ３００により、それぞれが持つ優先度に応じた順番で時分割的に実行される。ここで、タスクは、ＯＳによって「プロセス」または「スレッド」に分類される。プロセスとは、お互いに相互干渉しないように制御される処理単位であり、一般的なパソコンでは、ワープロや表計算プログラムなどがある。スレッドとは、ＯＳが１つのアプリケーション内の処理を並列して行う場合の処理の最小単位であり、プロセス内の逐次処理の単位である。一つのプロセスは複数のスレッドで構成することができる。
【００７４】
また、このように複数のタスクを並行して動作させる処理形態はマルチタスク処理と呼ばれ、一般的に用いられる処理形態である。本実施の形態の情報処理装置は、このマルチタスク処理を行うものとして説明する。また、本明細書においては、実施の形態１及び２におけるプログラムは、本実施の形態におけるタスク等を含んだ包括的なものであり、必ずしも最小の実行単位である必要はない。つまり、単独のタスクも、複数のタスクをまとめたものも共にプログラムということができる。
【００７５】
ＯＳ３００は、本実施の形態のＣＰＵクロック制御を行う為、タスク管理部３１０、タスク実行時間登録部３０１、タスク処理量検知部３０２、タスクスケジューリング部３０３、ＣＰＵ動作周波数設定部３０４、及びタスク実行部３０５を備えている。本実施の形態においては、このタスク管理部３１０、タスク実行時間登録部３０１、タスク処理量検知部３０２、タスクスケジューリング部３０３、ＣＰＵ動作周波数設定部３０４、タスク実行部３０５、及びＣＰＵ１がＣＰＵクロック制御装置１３としての機能を有する。
【００７６】
タスク管理部３１０は、管理テーブル３１１を備えている。管理テーブル３１１は、タスク３０に含まれる個々のタスク＃１、＃２等に対応させて、個々のタスクの実行開始時刻、許容範囲等を記憶している。タスク管理部３１０は、例えば、操作部３を介してユーザが実行を指示した個々のタスク＃１、＃２等に対応する実行開始時刻、許容範囲等をタスク実行時間登録部３０１に通知し、登録させる。ここで、タスク管理部３１０は、必ずしもタスクの実行開始時刻、許容範囲等を記憶している必要はなく、個々のタスクと、当該タスクの実行時間に関する要求及び当該タスクの実行時間に関する要求の許容範囲とを対応づける機能を有していれば良い。
【００７７】
タスク実行時間登録部３０１は、タスク管理部３１０の指示により、タスクの実行時間に対する要求と、その許容範囲についての情報とを登録し、それらの情報をタスクスケジューリング部３０３に通知する。ここで、タスクの実行時間に関する要求とは、例えば、タスクの開始時刻に関する要求、終了時刻に関する要求、実行周期等である。どのような要求を登録可能にするかは、ＯＳ３００のタスクスケジューリングの方法に合わせて設計することが出来る。また、同様に、どのような許容範囲を登録可能にするか、あるいはその表記の方法は、ＯＳ３００のタスクスケジューリングの方法に合わせて設計される。
【００７８】
タスク処理量検知部３０２は、各タスクの必要とする処理量を検知し、タスクスケジューリング部３０３に通知する。処理量の検知は、例えば、タスクのスケジューリングの方法を指定する際に、予め見積もられた処理量を合わせてＯＳ３００に渡すことで可能である。あるいは、実際にタスクを実行して要した処理量を求めて、それに基づき決定しても良い。
【００７９】
一般的にマルチタスクの情報処理装置５３は、タスクのスケジューリングの方法を指定するインターフェイスを備えていることが多い。このインターフェイスは、例えば、周期的なタスクの実行を関数呼び出しで要求し、関数の引数で周期を指定するものである。また、それとは異なり、特定のタスクに関し、特定の時間毎にかならず一定量の処理を行うといった指定などもある。そのようなインターフェイスを備えている場合、その指定を実行時間に関する要求や処理量の検知に用いることが出来る。
【００８０】
タスクスケジューリング部３０３はタスクのスケジューリングを行う。タスクスケジューリング部３０３は、時間に関する要求とその許容範囲とを満たす範囲でタスクをスケジューリングするが、同時に一定時間毎のタスクの必要処理量の合計がなるべく均等になるようにタスクをスケジューリングする。
【００８１】
ＣＰＵ動作周波数設定部３０４は、タスクスケジューリング部３０３により平滑化された単位時間毎に必要になる処理量に基づいてＣＰＵの動作周波数を決定する。そして、ＣＰＵ動作周波数設定部３０４は、ＣＰＵ１に印加される電圧を制御することで当該動作周波数をＣＰＵ１に設定する。タスク３０が単位時間毎に実行を要求される処理量はタスクスケジューリング部３０３により平滑化される。そのため、ＣＰＵ動作周波数設定部３０４により設定される動作周波数の変動は平滑化を行わない場合に比べて少なくなり、ＣＰＵ１の消費する電力は削減される。タスク実行部３０５は、タスクスケジューリング部３０３の行ったスケジューリングに基づきタスク３０を実行する。
【００８２】
図９は本実施の形態での処理の流れを示すフローチャートである。ステップＳ９−１では、まず、例えばユーザが操作部３を操作することにより、タスク管理部３１０は、情報処理装置５３が実行するタスクを、例えば前述のＲＯＭ等からメモリ装置２内にロードし、登録する。続いてステップＳ９−２では、タスク管理部３１０は、登録されたタスク３０の実行時間に関する要求と許容範囲とをタスク実行時間登録部３０１に登録する。ステップＳ９−３では、タスク実行時間登録部３０１は、登録された実行時間に関する要求と許容範囲とをタスクスケジューリング部３０３に通知する。
【００８３】
ステップＳ９−４では、タスク処理量検知部３０２は、実行を要求されたタスクに必要な処理量の検知を行う。前述の通り、ステップＳ９−４は、例えばタスクから関数を呼び出して必要処理量を検知したり、実際のプログラムの実行を待って必要処理量の実測をしたりする。ステップＳ９−５では、タスク処理量検知部３０２は、検知したタスクの必要処理量をタスクスケジューリング部３０３に通知する。なお、図９のフローチャートでは、時間に関する要求と許容範囲との登録、及び通知（Ｓ９−２、Ｓ９−３）を必要処理量の検知と通知（Ｓ９−４、Ｓ９−５）より先に行っているが、必ずしもその必要は無い。これらは独立したものなので、任意の順番で実行することが可能である。
【００８４】
ステップＳ９−６は、タスクスケジューリング部３０３の呼び出しである。タスクスケジューリング部３０３の呼び出しは、通常のタスクスケジューリングのタイミングで行えば良い。あるいは、特定の周期で周期的に行ったり、一つのタスクが処理を完了した時に呼び出したりしても良い。
【００８５】
Ｓ９−７では、実行が要求され、タスクスケジューリング部３０３に実行時間に関する要求等が通知されている全てのタスクの実行時間の決定を行う。前述の通り、タスクスケジューリング部３０３は、ステップＳ９−３で通知されている各タスクの実行時間要求と許容範囲とを満たす範囲で、ステップＳ９−５で通知された各タスクの必要処理量の単位時間当りの合計が、極力均等化するようにスケジューリングする。
【００８６】
ステップＳ９−７の実行時間の決定は、制約を満たしながらタスクの実行時間を配置する一般的な問題であり、様々なアルゴリズムを用いることが出来る。例えば、対象となるタスク３０が比較的少数なら、考えられる全ての実行時間のパターンを列挙して処理量の変動を比較しても良い。ただし、本発明では完全な均等化を行う必要は必ずしも無い。ＣＰＵ動作周波数の変動を少なくした分だけ消費電力を少なく出来るので、完全でなくても均等化した分だけの消費電力削減効果を得られる。従って、例えば、最も必要処理量の大きくなる時間から、一つのプログラムの実行を別の時間へ移動させるだけでも効果がある。
【００８７】
また、プログラムの必要処理量が正確な値でなく近似値の場合でも、ある程度の均等化は可能なので、消費電力削減の効果を得ることが出来る。さらに、ここでは全てのタスクの実行時間を決定する必要はなく、現在時刻から一定先の時刻までの実行時間を決定するだけでも良い。均等化には計算時間が必要となるので、どの程度正確な均等化を行うかは、情報処理装置５３の使用の目的や環境に合わせて設計すれば良い。
【００８８】
ステップＳ９−８では、タスクスケジューリング部３０３により決定された実行時間を受けて、ＣＰＵ動作周波数設定部３０４はＣＰＵ１の動作周波数を決定し、当該動作周波数をＣＰＵ１に設定する。Ｓ９−９では、タスク実行部３０５が実行を要求されたタスクを実行する。タスクはタスクスケジューリング部３０３により決定された時間に実行される。従って、実際は、ステップＳ９−９はステップＳ９−８終了後直ちに実行されるわけではなく、決定された実行時間を迎えた時に実行される。
【００８９】
本実施の形態での実際の処理の例としては、実施の形態１の例で示したもの（図３、図４）と同様のものがある。つまり、実行時間を指定されたタスクのスケジューリングを図３、図４と同様に行うことが可能である。特に、図４と同様なスケジューリングは、特定のタスク（図４ではプログラムＡ）を周期的に実行するスケジューリングであるが、同時に一定周期毎（図４では周期２）に必ず定められた量の処理量（図４では５０）を行うようなスケジューリングでもある。
【００９０】
図１０は本実施の形態において、ＣＰＵクロック制御装置が行う処理の他の一例である。図１０の例では、タスクのデットラインスケジュールを行うものとして説明する。デットラインスケジュールは、タスクの処理が完了しなければならない時刻を指定し、その時刻（デットライン）が早いタスクから実行するものである。
【００９１】
図１０（ａ１）は、要求しているデットラインが早いものから順にタスクを実行する通常のスケジューリングを表す模式図である。四角のブロックはタスクを表しており、（ａ１）では、ＡとＢの２つタスクがスケジューリングの対象である。タスク名であるアルファベットの後の値はタスクの必要処理量であり、その次の値は実行時間要求と許容範囲である。この例では、実行時間の要求はデットラインであり、デットラインであることをアルファベットのＥで表す。許容範囲はデットラインの許容範囲、つまりデットラインからどの位の進みまたは遅れが許容できるかである。
【００９２】
タスクＡの場合、必要処理量が２００、デットラインが１、許容範囲が＋２となる。これは、タスクＡは時刻１までの終了を要求するが、最悪時刻３までの終了を認めることを意味する。タスクＢの場合、必要処理量が１００、デットラインが２、許容範囲が（−１，０）となる。この許容範囲の（−１，０）は、デットラインを１だけ早めた時刻から指定されたデットラインの時刻の間にタスクが終了すればよいことを意味する。つまり、タスクＢは時刻２までの終了を要求するが、時刻１から時刻２までの間に終了すればよい。また、（ａ１）は、図９のステップＳ９−１からステップＳ９−５の結果、タスクスケジューリング部３０３に通知される情報である。
【００９３】
図１０（ｂ１）は、（ａ１）のスケジューリングでタスクＡ、Ｂを実行し、それぞれの処理を必要最小限の動作周波数で完了し、アイドル期間をつくらないようにした場合のＣＰＵ動作周波数を表している。
【００９４】
図１０（ａ２）は、タスクスケジューリング部３０３がステップＳ９−６及びＳ９−７において行ったスケジューリングの結果である。ここでは、時間毎に要求される処理量を極力平滑化するスケジューリングが行なわれている。
【００９５】
図１０（ｂ２）は、（ａ２）のタスクを実行する際のＣＰＵ動作周波数である。（ｂ２）は（ｂ１）と比較すると動作周波数の変動が少なくなっており、この期間でのＣＰＵの消費電力が削減される。またこのとき、タスクＡ、Ｂはそれぞれの許容範囲を満たして実行されている。
【００９６】
このように本実施の形態では、実行時間の要求と許容範囲、必要処理量の指定により様々なスケジューリングが可能である。なお、本実施の形態でタスク３０の全てが実行時間に関する要求を登録する必要は無い。処理量を平滑化されるのが全てのタスクの一部であっても、限定的ではあるがある程度の効果を得ることが可能である。
【００９７】
また、本実施の形態においても実施の形態２と同様に、割り込み処理量検知部と、割り込み処理部と、割り込み発生時にタスクの再スケジューリングを行う割り込み時実行時間調整部とを設けることも可能である。この場合は、割り込み発生時に、割り込み処理の分を加えた上で処理量が均等化するようにタスクを再スケジューリングする。これにより、割り込みの発生にも対応することが出来る。
【００９８】
なお、本発明の実施の形態ではＯＳ３００内に、タスク管理部３１０、タスク実行時間登録部３０１、タスク処理量検知部３０２、タスクスケジューリング部３０３、ＣＰＵ動作周波数設定部３０４、及びタスク実行部３０５を設けたが、ＯＳ３００の外部に設けることも可能である。
【００９９】
（実施の形態４）
図１１は、本発明の実施の形態４のＣＰＵ動作周波数制御を行う情報処理装置を示す図である。情報処理装置５４は少なくても一つ以上のＣＰＵ１とメモリ装置２とを備えている。この図において、ＣＰＵ１及びメモリ装置２を備える構成は実施の形態１と同じである。またこの図において、メモリ装置２がタスク４０を備える構成は実施の形態３と同じである。ＣＰＵ１の動作周波数の変更、及びタスク４０の制御はＯＳ４００により行われる。
【０１００】
タイマーイベント４１は、当該タイマーイベント４１を実行する時間を指定してＯＳ４００に登録される処理である。タイマーイベント４１の登録と実行の機能は、実時間に応じた処理を行うため、多くのＯＳにおいて実現されている。タイマーイベント４１は単体でも利用できるが、本実施の形態ではタイマーイベント４１に含まれる個々のタイマーイベント＃１、＃２等が、対応するタスク４０に含まれる個々のタスク＃１、＃２等を起床するものとして説明する。ただし、タイマーイベント＃Ｎとタスク＃Ｎ（Ｎ＝１，２，３・・・）とが対応している必要はなく、対応する組み合わせは任意でよい。
【０１０１】
ＯＳ４００は、本実施の形態のＣＰＵクロック制御を行う為、タスク管理部４１０、タイマーイベント管理部４２０、タスク実行時間登録部４０１、タスク実行時間要求解釈部４０２、タスク処理量検知部４０３、タイマーイベント処理量検知部４０４、タイマーイベント登録部４０５、タイマーイベント決定部４０６、ＣＰＵ動作周波数設定部４０７、タイマーイベント実行部４０８、及びタスク実行部４０９を備えている。本実施の形態においては、このタスク管理部４１０、タイマーイベント管理部４２０、タスク実行時間登録部４０１、タスク実行時間要求解釈部４０２、タスク処理量検知部４０３、タイマーイベント処理量検知部４０４、タイマーイベント登録部４０５、タイマーイベント決定部４０６、ＣＰＵ動作周波数設定部４０７、タイマーイベント実行部４０８、タスク実行部４０９、及びＣＰＵ１がＣＰＵクロック制御装置１４としての機能を有する。
【０１０２】
タスク管理部４１０は、管理テーブル４１１を備えている。管理テーブル４１１は、タスク４０に含まれる個々のタスク＃１、＃２等に対応させて、個々のタスクの実行開始時刻、許容範囲等を記憶している。タスク管理部４１０は、例えば、操作部３を介してユーザが実行を指示した個々のタスク＃１、＃２等に対応する実行開始時刻、許容範囲等をタスク実行時間登録部４０１に通知し、登録させる。ここで、タスク管理部４１０は、必ずしもタスクの実行開始時刻、許容範囲等を記憶している必要はなく、個々のタスクと、当該タスクの実行時間に関する要求及び当該タスクの実行時間に関する要求の許容範囲とを対応づける機能を有していれば良い。
【０１０３】
タイマーイベント管理部４２０は、管理テーブル４２１を備えている。管理テーブル４２１は、タイマーイベントがタスクを起床するものか否か等を記憶している。タイマーイベント管理部４２０は、タイマーイベント登録部４０５に指示し、タイマーイベント処理量検知部４０４からはタイマーイベントが必要とする処理量を、そして管理テーブル４２１を参照し、当該タイマーイベントがタスクを起床するものであった場合、タスク処理量検知部４０３からは当該タイマーイベントに対応するタスクが必要とする処理量をさらに受け取らせる。
【０１０４】
タスク実行時間登録部４０１は、実施の形態３のタスク実行時間登録部３０１と同様の機能を有する。タスク実行時間登録部４０１は、タスク管理部４１０の指示により、タスクの実行時間に関する要求と許容範囲についての情報を登録し、その情報をタスク実行時間要求解釈部４０２に通知する。
【０１０５】
タスク実行時間要求解釈部４０２は、タスク実行時間登録部４０１から通知されたタスク４０の実行時間に関する要求を満たすように、タスク制御を行うタイマーイベント４１を決定する。例えば、特定時間にタスク＃１の実行開始が要求されている場合は、タスク＃１を起床するタイマーイベント＃１をその時間に実行するようにする。この様なタイマーイベント４１によるタスク４０の制御は現在一般的に行なわれているので、本実施の形態でのタスク制御のタイマーイベントもそれと同様にすれば良い。
【０１０６】
合わせて、タスク実行時間要求解釈部４０２は、タスク実行時間登録部４０１から通知されたタスク４０の実行時間に関する要求の許容範囲から、タスク制御のタイマーイベント４１の実行時間の許容範囲を求める。例えば、タスク４０の実行開始時刻の許容範囲として一定時間の遅れが許されるなら、その時間をタスク４０を起床するタイマーイベント４１の実行開始時刻の許容範囲とする。周期的タスク実行が要求されるならば、要求されている周期でタスク４０を起床するタイマーイベント４１を実行し、タスク実行周期に許容範囲があればその許容範囲をタイマーイベントの実行周期の許容範囲とする。タスク実行時間要求解釈部４０２は、その実行時間、許容範囲とともに、決定したタスク制御のタイマーイベント４１の登録をタイマーイベント登録部４０５に要求する。
【０１０７】
タスク処理量検知部４０３は、実施の形態３のタスク処理量検知部３０２と同様の機能を有する。タスク処理量検知部４０３は、タイマーイベント登録部４０５からの要求があった場合、検知したタスクが必要とする処理量をタイマーイベント登録部４０５に通知する。
【０１０８】
タイマーイベント処理量検知部４０４は、タイマーイベント登録部４０５からの要求があった場合、タイマーイベントが必要とする処理量を検知し、タイマーイベント登録部４０５に通知する。必要な処理量の検知は、タスク処理量検知部４０３と同様に、例えば、各タイマーイベント内で予め見積もった必要処理量を通知したり、実際に実行して要した処理量を実測してそれに基づき決定したりすることで可能である。
【０１０９】
タイマーイベント登録部４０５は、タスク実行時間要求解釈部４０２より要求されたタイマーイベントを、タイマーイベントの実行時間に対する要求と許容範囲と共に登録する。また、タイマーイベント登録部４０５は、タスクとは無関係なタイマーイベントを外部からの要求に基づき登録できる形態であっても良い。この場合も、タイマーイベント実行時間に対する要求及び許容範囲を登録可能としても良い。
【０１１０】
さらにタイマーイベント登録部４０５は、タイマーイベント管理部４２０からの指示により、タイマーイベント処理量検知部４０４からはタイマーイベントが必要とする処理量を、そして当該タイマーイベントがタスクを起床するものであった場合、タスク処理量検知部４０３からは当該タイマーイベントに対応するタスクが必要とする処理量をさらに受け取る。そして、タイマーイベント登録部４０５は、タイマーイベント自身の必要処理量と、タイマーイベントにより実行されるタスクの必要処理量とを合わせた処理量を算出し、当該処理量を含めたタイマーイベントに関する情報をタイマーイベント決定部４０６に通知する。
【０１１１】
タイマーイベント決定部４０６は、タイマーイベント登録部４０５から通知されたタイマーイベントの実行時間に関する要求と許容範囲、さらにタイマーイベントによりタスクが実行される場合はタスクに必要となる処理量、及びタイマーイベント自身が必要な処理量に基づき、タイマーイベントを実際に実行する時間を決定する。この時、タイマーイベント決定部４０６は、タイマーイベントの実行時間に関する要求とその許容範囲とを満たす範囲で、タイマーイベントを実行する時間を決定する。また、同時にタイマーイベントを実行することで必要となる処理量、つまり、タイマーイベント決定部４０６は、タイマーイベント自身と、タイマーイベントにより実行されるタスクとを合わせた処理量が一定時間毎でなるべく均等になるようにタイマーイベントを実行する時間を決定する。従って、タイマーイベントとそれによるタスク実行が一定時間毎に必要とする処理量を合わせた全体が平滑化される。
【０１１２】
ＣＰＵ動作周波数設定部４０７は、タイマーイベント決定部４０６により平滑化された処理量に基づいて、ＣＰＵの動作周波数を決定する。そして、ＣＰＵ動作周波数設定部４０７は、ＣＰＵ１に印加される電圧を制御することで当該動作周波数をＣＰＵ１に設定する。タイマーイベント実行部４０８は、動作周波数設定部４０７により設定された動作周波数で動作するＣＰＵ１を用いて、タイマーイベント決定部４０６が決定した実行時間でタイマーイベント４１を実行する。タスク実行部４０９は、タイマーイベント実行部４０８が実行するタイマーイベントがタスク４０を起床するものであった場合、当該タスク４０を実行する。
【０１１３】
図１２は本実施の形態のＣＰＵクロック制御装置の動作を説明するフローチャートである。ステップＳ１２−１からステップＳ１２−３は、タスク管理部４１０、タスク実行時間登録部４０１、タスク実行時間要求解釈部４０２、及びタスク処理量検知部４０３の処理の流れを示している。ステップＳ１２−６からステップＳ１２−１３までは、タイマーイベント管理部４２０、タイマーイベント登録部４０５、タイマーイベント決定部４０６、ＣＰＵ動作周波数設定部４０７、及びタイマーイベント実行部４０８の処理の流れを示している。
【０１１４】
ステップＳ１２−１では、例えばユーザが操作部３を操作することにより、情報処理装置５４が実行するタスク４０が例えば前述のＲＯＭ等からメモリ装置２内にロードされ、登録される。ステップＳ１２−２では、タスク管理部４１０は、登録されたタスク４０の実行時間に関する要求と許容範囲とをタスク実行時間登録部４０１に登録する。ステップＳ１２−３では、タスク実行時間要求解釈部４０２は、タスク実行時間登録部４０１に登録されたタスク４０の実行時間に関する要求と許容範囲を満たすようにタスク４０を制御するタイマーイベント４１と、タイマーイベント４１の実行時間に関する要求、及び許容範囲を決定する。
【０１１５】
例えば、タスクが１秒後の起床を要求し、許容できる起床時間の遅れを０．１秒としている場合、タスク実行時間要求解釈部４０２は、タスクを起床するタイマーイベントを１秒後に０．１秒の遅れの範囲内で実行するように決定する。
【０１１６】
ステップＳ１２−６は、タイマーイベントの登録要求であり、ステップＳ１２−７からステップＳ１２−１３はタイマーイベントの登録要求を契機に実行される。ステップＳ１２−７では、登録要求されているタイマーイベントの処理量の検知が行なわれる。これは、タイマーイベント登録部４０５がタイマーイベント処理量検知部４０４から当該タイマーイベントの処理量を受け取ることで実現される。ただし、ステップＳ１２−７は必ずしもこの時点で行う必要は無く、タイマーイベントの処理量の情報が必要になる前ならどの時点でも良い。
【０１１７】
ステップＳ１２−８では、タイマーイベント管理部４２０は、タイマーイベント登録部４０５への登録を要求しているタイマーイベントがタスクを起床するものかどうかを、管理テーブル４２１を参照することで判定する。その結果、登録を要求しているタイマーイベントがタスクを起床する場合は、ステップＳ１２−２０において、タイマーイベント登録部４０５はタスク処理量検知部４０３からタスクの実行に必要な処理量を受け取る。ただし、ステップＳ１２−２０は必ずしもこの時点で実行される必要はなく、タスクの必要処理量の情報が必要となる前なら、任意の時点で実行されても良い。
【０１１８】
次にステップＳ１２−９において、タイマーイベント登録部４０５は、タイマーイベント自身の必要処理量に起床されるタスクの必要処理量を加え、全体の必要処理量を算出する。つまり、タスクの必要処理量もタイマーイベント実行に必要な処理量として計算される。そして、ステップＳ１２−１０では、タイマーイベント登録部４０５は、タイマーイベント管理部４２０から送出されたタイマーイベントとその実行時間要求、及び許容範囲を登録する。そして、タイマーイベント登録部４０５は、算出された全体の必要処理量を含めた情報を、タイマーイベント決定部４０６に通知する。
【０１１９】
ステップＳ１２−１１では、タイマーイベント決定部４０６は、各タイマーイベントの時間要求と許容範囲とを満たす範囲で、各タイマーイベントの必要処理量の単位時間当りの合計が極力均等化するように実行時間を決定する。つまり、タイマーイベントの必要処理量にはタスクの起床の結果、タスクが必要とする処理量が加わっているので、ステップＳ１２−１１ではタイマーイベントとそれによって起床されるタスクの全ての処理量が均等化される。
【０１２０】
ステップＳ１２−１２では、ＣＰＵ動作周波数設定部４０７は、タイマーイベント決定部４０６により平滑化された処理量に基づいてＣＰＵの動作周波数を決定する。そして、ＣＰＵ動作周波数設定部４０７は、ＣＰＵ１に印加される電圧を制御することで当該動作周波数をＣＰＵ１に設定する。最後に、ステップＳ１２−１３では、タイマーイベント実行部４０８は、登録されたタイマーイベントを実行する。しかしながら、タイマーイベントの実行は指定されている時間に起こるので、実際にはステップＳ１２−１３はステップＳ１２−１２の直後に実行されるわけではなく、適切な時間の経過後に実行される。
【０１２１】
本実施の形態の実装としては、例えば、タイマーイベントを実行すべき時間ごとのキューで管理することが挙げられる。キューには、タイマーイベントを登録する際に、実行時間、許容範囲、必要処理量（タスク分を含む）を合わせて記録する（ステップＳ１２−１からＳ１２−３、Ｓ１２−６からＳ１２−１０）。その上で、新しいタイマーイベントが登録される毎に、キューを走査し、各時間での必要処理量が均等化するように許容範囲内でキューを組替え、各時間でのＣＰＵ動作周波数を決定する（ステップＳ１２−１１、Ｓ１２−１２）。そして、タイマーイベントを組替えられたキューに従った順番で実行し（ステップＳ１２−１３）、合わせて決定した各時間の動作周波数でＣＰＵを駆動する。
【０１２２】
図１３は本実施の形態において、ＣＰＵクロック制御装置が行う処理の一例である。図１３（ａ１）は、図３（ａ１）と同様、実行が要求されているタイマーイベントと、当該タイマーイベントが要求している実行時間とをそのまま時間軸上に配置した模式図である。（ａ１）は、図１２のステップＳ１２−１からステップＳ１２−３、及びステップＳ１２−６からステップＳ１２−１０までが実行された結果、タイマーイベント決定部４０６に通知される情報である。
【０１２３】
この図において、四角のブロックはタイマーイベントを表している。つまり、（ａ１）では、Ａ、Ｂ、Ｃの３つのタイマーイベントが要求されている。タイマーイベント名であるアルファベットの後の値はタイマーイベントの必要処理量であり、その後ろの値は実行時間要求と許容範囲である。タスクを起床するタイマーイベントの場合は、タイマーイベント自身の処理量の後ろに、符号「＋」と共にタスクの処理量を表記している。従って、タイマーイベントＡの場合、タイマーイベント自身の必要処理量が５０、起床されるタスクの処理量が５０、実行時間要求が０、許容範囲が＋２となる。
【０１２４】
また、図１３の例では、タイマーイベントとタスクは、実行時間要求の値の時間からその次の時間までの間隔での実行と処理の完了とを要求しているとする。つまり、Ａの場合は、時刻０から１の間での実行と処理の完了とを要求している。実施の形態１の例（図３、図４）と同様に、これを「時刻０での実行を要求している」という様に表記する。許容範囲の値も、同様に実行時間の変動の範囲を表している。
【０１２５】
図１３（ｂ１）は、（ａ１）の実行時間でタイマーイベントＡ、Ｂ及びＣを実行し、各時間でそれぞれの処理を必要最小限の動作周波数で、アイドル期間をつくらないようにＣＰＵ動作周波数を設定した場合の動作周波数を表している。
【０１２６】
図１３（ａ２）は、ステップＳ１２−１１が実行されて決定されたタイマーイベントの実際の実行時間を表している。そして、図１３（ｂ２）は、（ａ２）のタイマーイベント実行時のＣＰＵ動作周波数を表している。図１３（ｂ２）は、（ｂ１）と比較すると動作周波数の変動が少なくなっており、この期間でのＣＰＵの消費電力が削減される。またこのとき、各タイマーイベントはそれぞれの許容範囲を満たして実行されている。
【０１２７】
図１４は、本実施の形態において、ＣＰＵクロック制御装置が行う処理の他の一例である。図１４（ａ１）は、図１３と同様に、実行が要求されているタイマーイベントと、当該タイマーイベントが要求している実行時間とをそのまま時間軸上に配置した模式図である。タイマーイベントＡは周期３での周期的実行、Ｂは周期２での周期的実行を要求しており、図１４（ａ１）ではこれを実行時間要求がＰ３、Ｐ２と表記している。タイマーイベントＡ、Ｂはいずれも、処理量５０のタイマーイベント自身に加えて処理量５０のタスクを起動する。また、タイマーイベントＡで起動されるタスクは実行される時刻が１遅れても許容できるので、タイマーイベントＡは＋１の許容範囲を持つ。それに対して、タイマーイベントＢで起動されるタスクは実行される時刻が遅れることは許容できないので、タイマーイベントＢの許容範囲は０である。
【０１２８】
図１４（ａ２）は、タイマーイベント決定部４０６が行うタイマーイベントの実行時間を平滑化した後の状態を表しており、この例では、タイマーイベントＡの実行時間が、もともと実行を要求されていた時刻から変更されている。
【０１２９】
（ｂ１）、（ｂ２）は処理に必要な最小の動作周波数を用いる場合の動作周波数を表す模式図である。（ｂ２）においては、動作周波数が完全に均等化されている訳ではないが、（ｂ１）に比べて動作周波数の変動が少なくなり、その分ＣＰＵの消費電力は削減される。またこのとき、タイマーイベントとタスクとは、それぞれの許容範囲を満たして実行されている。
【０１３０】
以上の様に、本実施の形態では、タスクとタイマーイベントの実行時間に関する要求と許容範囲とを満たした上で、ＣＰＵの消費電力を削減することが可能である。なお、他の実施の形態と同様に、全てのタイマーイベントにおいて許容範囲が登録されている必要は無い。処理量を平滑化されるのが全ての処理の一部であったとしても、その分の処理量は平滑化されるので、消費電力の削減効果を得ることが可能である。また、本実施の形態ではタスク及びタイマーイベントの両方の必要処理量を平滑化しているが、必ずしもその必要は無い。いずれかの必要な処理量が十分小さい場合は、影響が小さいとして無視しても良い。例えばタスクに比べてタイマーイベントの必要処理量が十分小さい場合は、タイマーイベントの必要処理量を実質上は「０」として、タスクの必要処理量のみを平滑化しても良い。
【０１３１】
また、本実施の形態においても実施の形態２と同様に、割り込み処理量検知部と、割り込み処理部と、割り込み発生時にタイマーイベント実行時間を再決定する割り込み時実行時間調整部とを設けることも可能である。この場合は、割り込み発生時に、割り込み処理の分を加えた上で処理量が均等化するようにタイマーイベントの実行時間を再決定する。これにより、割り込みの発生にも対応した上で、ＣＰＵの消費電力を削減することが可能となる。
【０１３２】
なお、本発明の実施の形態ではＯＳ４００内に、タスク管理部４１０、タイマーイベント管理部４２０、タスク実行時間登録部４０１、タスク実行時間要求解釈部４０２、タスク処理量検知部４０３、タイマーイベント処理量検知部４０４、タイマーイベント登録部４０５、タイマーイベント決定部４０６、ＣＰＵ動作周波数設定部４０７、タイマーイベント実行部４０８、及びタスク実行部４０９を設けたが、ＯＳ４００の外部に設けることも可能である。
【０１３３】
［実施の形態の概要］
本発明に係る実施の形態の概要を以下に記載する。
【０１３４】
（１）上記したように、本願発明に係るＣＰＵクロック制御装置は、自身が有するＣＰＵのクロックを制御するＣＰＵクロック制御装置であって、前記ＣＰＵが実行するプログラムをロードし、当該プログラムと、当該プログラムの実行時間に関する要求及び当該プログラムの実行時間に関する要求の許容範囲とを対応づけるプログラム管理部と、前記プログラムの実行時間に関する要求と許容範囲とを前記プログラム管理部から受け取り、前記プログラムと対応づけて登録するプログラム実行時間登録部と、前記プログラムの実行に必要な処理量を検知するプログラム処理量検知部と、前記プログラム実行時間登録部に登録された実行時間に関する要求と許容範囲とを満たす範囲内で、前記プログラム処理量検知部により検知された処理量が所定時間範囲において均等化するように、前記プログラムの実行開始時刻及び単位時間当りの処理量を決定するプログラム実行時間決定部と、前記プログラム実行時間決定部により決定された前記プログラムの実行開始時刻及び単位時間当りの処理量に基づき、前記ＣＰＵの各時刻における動作周波数を決定し、当該動作周波数を前記ＣＰＵに設定するＣＰＵ動作周波数設定部と、前記ＣＰＵ動作周波数設定部により設定された動作周波数で動作する前記ＣＰＵに、前記プログラム実行時間決定部により決定された実行開始時刻及び単位時間当りの処理量で前記プログラムを実行させるプログラム実行部と、を備えることが好ましい。
【０１３５】
この構成によれば、プログラム実行時間登録部は、プログラム管理部の制御のもと、ＣＰＵが実行するプログラムの実行時間に関する要求と、プログラムの実行時間に関する要求の許容範囲とを登録する。ここで、実行時間に関する要求とは、当該プログラムをいつ実行させるかを指定する実行開始時刻や、いつまでに処理を終える必要があるかを指定する終了時刻、さらには周期的にプログラムを実行する場合の実行周期等である。また、許容範囲とは、実行時間に関する要求に対してどの程度の変動が許されるかを示す情報である。例えば、実行開始時刻や終了時刻をどれだけ早めるまたは遅くすることが許容されるかを表す。
【０１３６】
また、プログラム処理量検知部は、ＣＰＵが実行するプログラムの実行に必要な処理量を検知する。そして、プログラム実行時間登録部は実行時間に関する要求と許容範囲とを、プログラム処理量検知部は必要な処理量を、それぞれプログラム実行時間決定部に通知する。プログラム実行時間決定部は、それらの情報に基づいて、実行時間に関する要求と許容範囲とを満たす範囲内で、所定時間範囲における処理量が、完全ではなくともできるだけ均等化するように、実行開始時刻及び単位時間当りの処理量を決定する。例えば、プログラム実行時間決定部は、同じ処理量が必要な２つのプログラムが同じ時刻に実行開始を要求しており、かつそれ以外のプログラムの実行が要求されていない場合、一方のプログラムを他方のプログラムが終了した後に行うように実行開始時刻の調整を行う。
【０１３７】
続いて、ＣＰＵ動作周波数設定部は、プログラム実行時間決定部により決定されたプログラムの実行開始時刻及び単位時間当りの処理量に基づき、ＣＰＵの各時刻における動作周波数を決定し、設定する。プログラム実行部は、当該ＣＰＵを用いてプログラムの実行を行わせるので、結果として、プログラムの実行時間に関する要求と許容範囲とを満たす範囲内で、当該プログラムの実行を行うことができる。さらに、ＣＰＵに要求される処理量を均等化しているので、それに応じてＣＰＵの消費電力の削減を行うことが可能である。
【０１３８】
（２）ＣＰＵクロック制御装置は、ＣＰＵクロック制御装置（１）であって、割り込み発生時に実行される割り込み処理を行う割り込み処理部と、前記割り込み処理に必要な処理量を検知する割り込み処理量検知部と、前記割り込み処理部が割り込みの発生時刻において当該割り込み処理を行う場合、前記プログラム実行時間登録部に登録された実行時間に関する要求と許容範囲とを満たす範囲内で、前記プログラムの実行に必要な処理量と前記割り込み処理の処理量とが所定時間範囲において均等化するように、前記プログラムの実行開始時刻及び単位時間当りの処理量を再決定する割り込み時実行時間調整部と、を更に備え、前記ＣＰＵ動作周波数設定部は、前記プログラム実行時間決定部により均等化された処理量、または前記割り込み時実行時間調整部により均等化された処理量のいずれか新しい処理量に基づき前記ＣＰＵの動作周波数を決定し、前記プログラム実行部は、前記プログラム実行時間決定部により決定された実行開始時刻及び単位時間当りの処理量、または前記割り込み時実行時間調整部により再決定された実行開始時刻及び単位時間当りの処理量のいずれか新しい実行開始時刻及び単位時間当りの処理量で、前記プログラムを実行させることが好ましい。
【０１３９】
この構成によれば、割り込み処理部は、割り込みが発生するとその発生時刻において当該割り込み処理を行う。そして、その割り込み処理に必要な処理量は、割り込み処理量検知部により検知されている。このままでは、当該割り込みが発生した時刻における処理量だけが増加してしまい、ＣＰＵの消費電力もその分増加することが懸念される。そこで、割り込みが発生した場合は、割り込み時実行時間調整部が、割り込み発生時刻における割り込み処理量を含めて、プログラムの実行開始時刻及び単位時間当りの処理量を再決定する。このとき、割り込み時実行時間調整部は、プログラム実行時間決定部と同様に、実行時間に関する要求と許容範囲とを満たす範囲内で再決定する。これにより、割り込みが発生した場合にも、ＣＰＵに要求される処理量を均等化し、それに応じてＣＰＵの消費電力の削減を行うことが可能となる。
【０１４０】
（３）上記したように、本願発明に係るＣＰＵクロック制御装置は、自身が有するＣＰＵのクロックを制御するＣＰＵクロック制御装置であって、前記ＣＰＵが実行するタスクをロードし、当該タスクと、当該タスクの実行時間に関する要求及び当該タスクの実行時間に関する要求の許容範囲とを対応づけるタスク管理部と、前記タスクの実行時間に関する要求と許容範囲とを前記タスク管理部から受け取り、前記タスクと対応づけて登録するタスク実行時間登録部と、前記タスクの実行に必要な処理量を検知するタスク処理量検知部と、前記タスク実行時間登録部に登録された実行時間に関する要求と許容範囲とを満たす範囲内で、前記タスク処理量検知部により検知された処理量が所定時間範囲において均等化するように、前記タスクの実行開始時刻及び単位時間当りの処理量をスケジューリングするタスクスケジューリング部と、前記タスクスケジューリング部によりスケジューリングされた前記タスクの実行開始時刻及び単位時間当りの処理量に基づき、前記ＣＰＵの動作周波数を決定し、当該動作周波数を前記ＣＰＵに設定するＣＰＵ動作周波数設定部と、前記ＣＰＵ動作周波数設定部により設定された動作周波数で動作する前記ＣＰＵに、前記タスクスケジューリング部によるスケジューリングに基づいて、前記タスクを実行させるタスク実行部と、を備えることが好ましい。
【０１４１】
この構成によれば、タスク実行時間登録部は、タスク管理部の制御のもと、ＣＰＵが実行するタスクの実行時間に関する要求と、タスクの実行時間に関する要求の許容範囲とを登録する。ここで、実行時間に関する要求とは、当該タスクをいつ実行させるかを指定する実行開始時刻や、いつまでに処理を終える必要があるかを指定する終了時刻、さらには周期的にタスクを実行する場合の実行周期等である。また、許容範囲とは、実行時間に関する要求に対してどの程度の変動が許されるかを示す情報である。例えば、実行開始時刻や終了時刻をどれだけ早めるまたは遅くすることが許容されるかを表す。
【０１４２】
また、タスク処理量検知部は、ＣＰＵが実行するタスクの実行に必要な処理量を検知する。そして、タスク実行時間登録部は実行時間に関する要求と許容範囲とを、タスク処理量検知部は必要な処理量を、それぞれタスクスケジューリング部に通知する。タスクスケジューリング部は、それらの情報に基づいて、実行時間に関する要求と許容範囲とを満たす範囲内で、所定時間範囲における処理量が、完全ではなくともできるだけ均等化するように、実行開始時刻及び単位時間当りの処理量を決定する。例えば、タスクスケジューリング部は、同じ処理量が必要な２つのタスクが同じ時刻に実行開始を要求しており、かつそれ以外のタスクの実行が要求されていない場合、一方のタスクを他方のタスクが終了した後に行うように実行開始時刻の調整を行う。
【０１４３】
続いて、ＣＰＵ動作周波数設定部は、タスクスケジューリング部により決定されたタスクの実行開始時刻及び単位時間当りの処理量に基づき、ＣＰＵの各時刻における動作周波数を決定し、設定する。タスク実行部は、当該ＣＰＵを用いてタスクの実行を行わせるので、結果として、タスクの実行時間に関する要求と許容範囲とを満たす範囲内で、当該タスクの実行を行うことができる。さらに、ＣＰＵに要求される処理量を均等化しているので、それに応じてＣＰＵの消費電力の削減を行うことが可能である。
【０１４４】
（４）上記したように、本願発明に係るＣＰＵクロック制御装置は、自身が有するＣＰＵのクロックを制御するＣＰＵクロック制御装置であって、前記ＣＰＵが実行するタスクをロードし、当該タスクと、当該タスクの実行時間に関する要求及び当該タスクの実行時間に関する要求の許容範囲とを対応づけるタスク管理部と、前記タスクの実行時間に関する要求と許容範囲とを前記タスク管理部から受け取り、前記タスクと対応づけて登録するタスク実行時間登録部と、前記タスクの実行に必要な処理量を検知するタスク処理量検知部と、前記タスク実行時間登録部に登録された実行時間に関する要求と許容範囲とを満たすように、前記タスクを制御するタイマーイベントを決定するタスク実行時間要求解釈部と、前記タスク実行時間要求解釈部が決定したタイマーイベントを含むタイマーイベントの実行時間に関する要求と、前記タイマーイベントの実行時間の許容範囲とを登録するタイマーイベント登録部と、前記タイマーイベントの実行に必要な処理量を検知するタイマーイベント処理量検知部と、前記タイマーイベント登録部に登録されたタイマーイベントの実行時間に関する要求と許容範囲とを満たす範囲内で、タイマーイベントにより実行に移されるタスクに関し前記タスク処理量検知部が検知した必要処理量と、前記タイマーイベント処理量検知部が検知したタイマーイベントの処理量との合計が、所定時間範囲において均等化するように、前記タイマーイベントの実行開始時刻及び単位時間当りの処理量を決定するタイマーイベント決定部と、前記タイマーイベント決定部により決定された前記タイマーイベントの実行開始時刻及び単位時間当りの処理量に基づき、前記ＣＰＵの動作周波数を決定し、当該動作周波数を前記ＣＰＵに設定するＣＰＵ動作周波数設定部と、前記ＣＰＵ動作周波数設定部により設定された動作周波数で動作する前記ＣＰＵに、前記タイマーイベント決定部により決定された実行開始時刻及び単位時間当りの処理量に基づいて、前記タイマーイベントを実行させるタイマーイベント実行部と、を備えることが好ましい。
【０１４５】
この構成によれば、タスク実行時間登録部は、タスク管理部の制御のもと、ＣＰＵが実行するタスクの実行時間に関する要求と、タスクの実行時間に関する要求の許容範囲とを登録する。ここで、実行時間に関する要求とは、当該タスクをいつ実行させるかを指定する実行開始時刻や、いつまでに処理を終える必要があるかを指定する終了時刻、さらには周期的にタスクを実行する場合の実行周期等である。また、許容範囲とは、実行時間に関する要求に対してどの程度の変動が許されるかを示す情報である。例えば、実行開始時刻や終了時刻をどれだけ早めるまたは遅くすることが許容されるかを表す。
【０１４６】
タスク実行時間要求解釈部は、タスク実行時間登録部に登録された実行時間に関する要求と許容範囲とを満たすように、タスクを制御するタイマーイベントを決定する。また、タスク処理量検知部は、ＣＰＵが実行するタスクの実行に必要な処理量を検知し、タイマーイベント処理量検知部は、ＣＰＵが実行するタイマーイベントの実行に必要な処理量を検知する。そして、タイマーイベント登録部は、タイマーイベント管理部の指示により、タイマーイベント処理量検知部からタイマーイベントの実行に必要な処理量を受け取る。さらに、タイマーイベント登録部は、タイマーイベント管理部の指示により、当該タイマーイベントがタスクを起床する場合には、タスク処理量検知部からタスクの実行に必要な処理量を受け取る。
【０１４７】
タイマーイベント決定部は、タイマーイベント（及びタスク）の処理量、及びタイマーイベントの実行時間に関する要求と許容範囲等をタイマーイベント登録部から受け取り、タイマーイベントの実行開始時刻及び単位時間当りの処理量を決定する。つまり、タイマーイベント決定部は、タイマーイベントがタスクを起床しない場合にはタイマーイベントのみの、タイマーイベントがタスクを起床する場合にはタイマーイベントとタスクの処理量を加えた処理量を均等化する。
【０１４８】
続いて、ＣＰＵ動作周波数設定部は、タイマーイベント決定部により決定されたタイマーイベントの実行開始時刻及び単位時間当りの処理量に基づき、ＣＰＵの各時刻における動作周波数を決定し、設定する。タイマーイベント実行部は、当該ＣＰＵを用いてタイマーイベントの実行を行わせるので、結果として、タイマーイベントの実行時間に関する要求と許容範囲とを満たす範囲内で、当該タイマーイベントの実行を行うことができる。さらに、ＣＰＵに要求される処理量を均等化しているので、それに応じてＣＰＵの消費電力の削減を行うことが可能である。
【０１４９】
（５）上記したように、本願発明に係るＣＰＵクロック制御方法は、ＣＰＵが実行するプログラムの実行時間に関する要求と、前記プログラムの実行時間に関する要求の許容範囲とを、前記プログラムに対応づけて登録するプログラム実行時間登録工程と、前記プログラムの実行に必要な処理量を検知するプログラム処理量検知工程と、前記プログラム実行時間登録工程により登録された実行時間に関する要求と許容範囲とを満たす範囲内で、前記プログラム処理量検知工程により検知された処理量が所定時間範囲において均等化するように、前記プログラムの実行開始時刻及び単位時間当りの処理量を決定するプログラム実行時間決定工程と、前記プログラム実行時間決定工程により決定された前記プログラムの実行開始時刻及び単位時間当りの処理量に基づき、前記ＣＰＵの各時刻における動作周波数を決定し、当該動作周波数を前記ＣＰＵに設定するＣＰＵ動作周波数設定工程と、前記ＣＰＵ動作周波数設定工程により設定された動作周波数で動作する前記ＣＰＵに、前記プログラム実行時間決定工程により決定された実行開始時刻及び単位時間当りの処理量で前記プログラムを実行させるプログラム実行工程と、を備えることが好ましい。
【０１５０】
この構成は、装置（１）について述べたと同様の理由により、ＣＰＵに要求される処理量を均等化しているので、それに応じてＣＰＵの消費電力の削減を行うことが可能である。
【０１５１】
（６）上記したように、本願発明に係るＣＰＵクロック制御プログラムは、自身が有するＣＰＵのクロックを制御するＣＰＵクロック制御装置としてコンピュータを機能させるＣＰＵクロック制御プログラムであって、前記ＣＰＵが実行するプログラムの実行時間に関する要求と、前記プログラムの実行時間に関する要求の許容範囲とを、前記プログラムに対応づけて登録するプログラム実行時間登録手段と、前記プログラムの実行に必要な処理量を検知するプログラム処理量検知手段と、前記プログラム実行時間登録手段により登録された実行時間に関する要求と許容範囲とを満たす範囲内で、前記プログラム処理量検知手段により検知された処理量が所定時間範囲において均等化するように、前記プログラムの実行開始時刻及び単位時間当りの処理量を決定するプログラム実行時間決定手段と、前記プログラム実行時間決定手段により決定された前記プログラムの実行開始時刻及び単位時間当りの処理量に基づき、前記ＣＰＵの各時刻における動作周波数を決定し、当該動作周波数を前記ＣＰＵに設定するＣＰＵ動作周波数設定手段と、前記ＣＰＵ動作周波数設定手段により設定された動作周波数で動作する前記ＣＰＵに、前記プログラム実行時間決定手段により決定された実行開始時刻及び単位時間当りの処理量で前記プログラムを実行させるプログラム実行手段として前記コンピュータを機能させる。
【０１５２】
この構成は、装置（１）について述べたと同様の理由により、ＣＰＵに要求される処理量を均等化しているので、それに応じてＣＰＵの消費電力の削減を行うことが可能である。
【０１５３】
（７）上記したように、本願発明に係る記録媒体は、自身が有するＣＰＵのクロックを制御するＣＰＵクロック制御装置としてコンピュータを機能させるＣＰＵクロック制御プログラムを記録したコンピュータ読み取り可能な記録媒体であって、前記ＣＰＵが実行するプログラムの実行時間に関する要求と、前記プログラムの実行時間に関する要求の許容範囲とを、前記プログラムに対応づけて登録するプログラム実行時間登録手段と、前記プログラムの実行に必要な処理量を検知するプログラム処理量検知手段と、前記プログラム実行時間登録手段により登録された実行時間に関する要求と許容範囲とを満たす範囲内で、前記プログラム処理量検知手段により検知された処理量が所定時間範囲において均等化するように、前記プログラムの実行開始時刻及び単位時間当りの処理量を決定するプログラム実行時間決定手段と、前記プログラム実行時間決定手段により決定された前記プログラムの実行開始時刻及び単位時間当りの処理量に基づき、前記ＣＰＵの各時刻における動作周波数を決定し、当該動作周波数を前記ＣＰＵに設定するＣＰＵ動作周波数設定手段と、前記ＣＰＵ動作周波数設定手段により設定された動作周波数で動作する前記ＣＰＵに、前記プログラム実行時間決定手段により決定された実行開始時刻及び単位時間当りの処理量で前記プログラムを実行させるプログラム実行手段として前記コンピュータを機能させるＣＰＵクロック制御プログラムを記録したものである。
【０１５４】
この構成は、装置（１）について述べたと同様の理由により、ＣＰＵに要求される処理量を均等化しているので、それに応じてＣＰＵの消費電力の削減を行うことが可能である。
【０１５５】
（８）上記したように、本願発明に係る伝送媒体は、自身が有するＣＰＵのクロックを制御するＣＰＵクロック制御装置としてコンピュータを機能させるＣＰＵクロック制御プログラムを保持する伝送媒体であって、前記ＣＰＵが実行するプログラムの実行時間に関する要求と、前記プログラムの実行時間に関する要求の許容範囲とを、前記プログラムに対応づけて登録するプログラム実行時間登録手段と、前記プログラムの実行に必要な処理量を検知するプログラム処理量検知手段と、前記プログラム実行時間登録手段により登録された実行時間に関する要求と許容範囲とを満たす範囲内で、前記プログラム処理量検知手段により検知された処理量が所定時間範囲において均等化するように、前記プログラムの実行開始時刻及び単位時間当りの処理量を決定するプログラム実行時間決定手段と、前記プログラム実行時間決定手段により決定された前記プログラムの実行開始時刻及び単位時間当りの処理量に基づき、前記ＣＰＵの各時刻における動作周波数を決定し、当該動作周波数を前記ＣＰＵに設定するＣＰＵ動作周波数設定手段と、前記ＣＰＵ動作周波数設定手段により設定された動作周波数で動作する前記ＣＰＵに、前記プログラム実行時間決定手段により決定された実行開始時刻及び単位時間当りの処理量で前記プログラムを実行させるプログラム実行手段として前記コンピュータを機能させるＣＰＵクロック制御プログラムを保持するものである。
【０１５６】
この構成は、装置（１）について述べたと同様の理由により、ＣＰＵに要求される処理量を均等化しているので、それに応じてＣＰＵの消費電力の削減を行うことが可能である。
【０１５７】
本発明は詳細に説明されたが、上記した説明は、全ての局面において、例示であって、本発明がそれに限定されるものではない。例示されていない無数の変形例が、この発明の範囲から外れることなく想定され得るものと解される。
【産業上の利用可能性】
【０１５８】
本発明にかかるＣＰＵクロック制御装置及び方法は、情報処理装置を用いるものであれば幅広い分野において有効である。例えば、大型計算機やパーソナルコンピュータのような形態のみならず、各種の家電機器、携帯電話のような通信機器、産業機器、乗用機器などでも利用可能である。
【図面の簡単な説明】
【０１５９】
【図１】本発明の実施の形態１におけるＣＰＵクロック制御装置を構築する情報処理装置の概略構成図である。
【図２】本発明の実施の形態１におけるＣＰＵ動作周波数制御時の動作を説明するフローチャートである。
【図３】本発明の実施の形態１における処理の一例を説明する図である。
【図４】本発明の実施の形態１における処理の一例を説明する図である。
【図５】本発明の実施の形態２におけるＣＰＵクロック制御装置を構築する情報処理装置の概略構成図である。
【図６】本発明の実施の形態２におけるＣＰＵ動作周波数制御時の動作を説明するフローチャートである。
【図７】本発明の実施の形態２における処理の一例を説明する図である。
【図８】本発明の実施の形態３におけるＣＰＵクロック制御装置を構築する情報処理装置の概略構成図である。
【図９】本発明の実施の形態３におけるＣＰＵ動作周波数制御時の動作を説明するフローチャートである。
【図１０】本発明の実施の形態３における処理の一例を説明する図である。
【図１１】本発明の実施の形態４におけるＣＰＵクロック制御装置を構築する情報処理装置の概略構成図である。
【図１２】本発明の実施の形態４におけるＣＰＵ動作周波数制御時の動作を説明するフローチャートである。
【図１３】本発明の実施の形態４における処理の一例を説明する図である。
【図１４】本発明の実施の形態４における処理の一例を説明する図である。
【手続補正３】
【補正対象書類名】図面
【補正対象項目名】全図
【補正方法】変更
【補正の内容】
【図１】
2005106623.tif 000016
【図２】
2005106623.tif 000017
【図３】
2005106623.tif 000018
【図４】
2005106623.tif 000019
【図５】
2005106623.tif 000020
【図６】
2005106623.tif 000021
【図７】
2005106623.tif 000022
【図８】
2005106623.tif 000023
【図９】
2005106623.tif 000024
【図１０】
2005106623.tif 000025
【図１１】
2005106623.tif 000026
【図１２】
2005106623.tif 000027
【図１３】
2005106623.tif 000028
【図１４】
2005106623.tif 000029
【国際調査報告】
2005106623.tif 000030
2005106623.tif 000031