(57)【特許請求の範囲】
【請求項１】
プロセッサを有する情報処理装置において、
所定のルールに従い前記プロセッサが複数のタスクを繰り返し実行する場合に、タスク毎に前記プロセッサでの動作履歴を記憶する記憶部と、
該記憶部に記憶した動作履歴に基づき、各タスクに対する前記プロセッサの使用率を算出する算出部と、
該算出部により算出した使用率に基づき各タスクに対する前記プロセッサの動作周波数を決定する決定部と、
前記算出部による使用率の算出命令を受け付ける受け付け部と、
該受け付け部による算出命令受け付け時から所定時間以内の動作履歴を前記記憶部から読み出す読み出し部とを備え、
前記算出部は、
前記読み出し部により読み出した動作履歴に基づき、各タスクに対する前記プロセッサの使用率を算出する
情報処理装置。
【請求項２】
タスク毎に優先度を記憶した優先度記憶部を備え、
前記決定部は、
前記算出部により算出した使用率及び前記優先度記憶部に記憶した優先度に基づき各タスクに対する前記プロセッサの動作周波数を決定する
請求項１に記載の情報処理装置。
【請求項３】
情報処理装置のプロセッサに対する制御方法において、
所定のルールに従い前記プロセッサが複数のタスクを繰り返し実行する場合に、タスク毎に前記プロセッサでの動作履歴を記憶部に記憶し、
該記憶部に記憶した動作履歴に基づき、各タスクに対する前記プロセッサの使用率を算出し、
算出した使用率に基づき各タスクに対する前記プロセッサの動作周波数を決定し、
使用率の算出命令を受け付け、
該算出命令の受け付け時から所定時間以内の動作履歴を前記記憶部から読み出し、
読み出した動作履歴に基づき、各タスクに対する前記プロセッサの使用率を算出する
制御方法。
【請求項４】
プロセッサを有するコンピュータに用いられるプログラムにおいて、
コンピュータに、
所定のルールに従い前記プロセッサが複数のタスクを繰り返し実行する場合に、タスク毎に前記プロセッサでの動作履歴を記憶部に記憶し、
該記憶部に記憶した動作履歴に基づき、各タスクに対する前記プロセッサの使用率を算出し、
算出した使用率に基づき各タスクに対する前記プロセッサの動作周波数を決定し、
使用率の算出命令を受け付け、
該算出命令の受け付け時から所定時間以内の動作履歴を前記記憶部から読み出し、
読み出した動作履歴に基づき、各タスクに対する前記プロセッサの使用率を算出する
処理を実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プロセッサを有する情報処理装置、制御方法及びプログラムに関する。
【背景技術】
【０００２】
情報処理装置においては、環境保全の観点から消費電力の低減化が求められている。情報処理装置のＣＰＵ（Central Processing Unit）の消費電力が機器全体の消費電力に占める割合が高いことから、ＣＰＵの動作周波数を制御し、消費電力の低減を図る技術が提案されている
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００５−２８５０９３号公報
【特許文献２】特開平１０−１４３２７４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、従来の技術では、予めテーブルに記憶した特定のタスクに対応する要求性能を用いて制御を行うため、現実の使用状況に応じたＣＰＵの制御が出来ないという問題があった。さらに、タスクは数多く存在するところ、従来技術では任意のシステムまたはタスクに対して十分対応できないという問題もあった。
【０００５】
１つの側面では、本発明は、使用状況に応じたプロセッサの制御が可能となる情報処理装置等を提供することにある。
【課題を解決するための手段】
【０００６】
本願に開示する情報処理装置は、プロセッサを有する情報処理装置において、所定のルールに従い前記プロセッサが複数のタスクを繰り返し実行する場合に、タスク毎に前記プロセッサでの動作履歴を記憶する記憶部と、該記憶部に記憶した動作履歴に基づき、各タスクに対する前記プロセッサの使用率を算出する算出部と、該算出部により算出した使用率に基づき各タスクに対する前記プロセッサの動作周波数を決定する決定部と、前記算出部による使用率の算出命令を受け付ける受け付け部と、該受け付け部による算出命令受け付け時から所定時間以内の動作履歴を前記記憶部から読み出す読み出し部とを備え、前記算出部は、前記読み出し部により読み出した動作履歴に基づき、各タスクに対する前記プロセッサの使用率を算出する。
【発明の効果】
【０００７】
一態様によれば、複数のタスクの動作履歴に基づき、プロセッサの動作周波数を決定するので、使用状況に応じたプロセッサの制御が可能となる。また、一態様によれば、タスクが複数存在する場合でも、適切な動作周波数の決定が可能となる。
【図面の簡単な説明】
【０００８】
【図１】情報処理装置のハードウェア群を示すブロック図である。
【図２】第１履歴記憶部のレコードレイアウトを示す説明図である。
【図３】第２履歴記憶部のレコードレイアウトを示す説明図である。
【図４】動作周波数テーブルのレコードレイアウトを示す説明図である。
【図５】動作履歴記憶処理の手順を示すフローチャートである。
【図６】動作周波数の決定処理の手順を示すフローチャートである。
【図７】実施の形態２に係るサーバコンピュータのハードウェア群を示すブロック図である。
【図８】優先度記憶部のレコードレイアウトを示す説明図である。
【図９】実施の形態２に係る動作周波数テーブルのレコードレイアウトを示す説明図である。
【図１０】実施の形態２に係る動作周波数の決定処理の手順を示すフローチャートである。
【図１１】実施の形態３に係る動作周波数の決定処理の手順を示すフローチャートである。
【図１２】実施の形態４に係る動作周波数の算出処理の手順を示すフローチャートである。
【図１３】実施の形態４に係る動作周波数の算出処理の手順を示すフローチャートである。
【図１４】実施の形態５に係るサーバコンピュータのハードウェア群を示すブロック図である。
【発明を実施するための形態】
【０００９】
実施の形態１
以下実施の形態を、図面を参照して説明する。図１は情報処理装置のハードウェア群を示すブロック図である。情報処理装置１は例えばサーバコンピュータ、パーソナルコンピュータまたはＰＤＡ（Personal Digital Assistance）等である。以下では情報処理装置１をサーバコンピュータ１であるものとして説明する。サーバコンピュータ１は、制御部としてのプロセッサ（以下、ＣＰＵという）１１、ＲＡＭ（Random Access Memory）１２、入力部１３、表示部１４、記憶部１５及び通信部１６等を含む。ＣＰＵ１１は、バス１７を介してハードウェア各部と接続されている。ＣＰＵ１１は各ハードウェアを制御すると共に、記憶部１５に格納されたＯＳ（Operating System）１５１及び制御プログラム１５３に従って、ソフトウェア機能を実行する。
【００１０】
通信部１６はファイアウォールとしての機能を果たすゲートウェイ等であり、他の図示しないコンピュータ等との間でＨＴＴＰ（HyperText Transfer Protocol）等により情報を送受信する。記憶部１５は例えばハードディスクまたは大容量メモリ等である。記憶部１５には上述したＯＳ１５１が記憶されている。ＯＳ１５１はスケジューラ１５２及び制御プログラム１５３を有する。スケジューラ１５２は所定のルールに従い複数のタスクから一のタスクをＣＰＵ１１に割り当てる。制御プログラム１５３には後述するように動作履歴の記憶、使用率の算出、動作周波数の決定及び動作周波数の制御等を行うプログラムが記述されている。なお、本実施形態においてはＯＳ１５１内に制御プログラム１５３を設ける例を挙げて説明するがこれに限るものではない。ＯＳ１５１とは別の専用のプログラムとして記憶部１５に記憶しても良い。
【００１１】
入力部１３はマウス、キーボード及び電源スイッチ等の入力デバイスである。入力部１３は、受け付けた操作情報をＣＰＵ１１へ出力する。表示部１４は液晶ディスプレイまたは有機ＥＬ（electroluminescence）ディスプレイ等であり、ＣＰＵ１１の指示に従い各種情報を表示する。クロック１８は時間情報をＣＰＵ１１へ出力する。ＲＡＭ１２は例えばＳＲＡＭ（Static ＲＡＭ）、ＤＲＡＭ（Dynamic ＲＡＭ）、フラッシュメモリ等である。ＲＡＭ１２は、記憶部としても機能し、ＣＰＵ１１による各種プログラムの実行時に発生する種々のデータを一時的に記憶する。ＲＡＭ１２には、第１履歴記憶部１２１、第２履歴記憶部１２２及び動作周波数テーブル１２３が記憶される。
【００１２】
ＣＰＵ１１はタイムスタンプカウンタ（以下、ＴＳＣ（Time Stamp Counter）という）１１１及びパフォーマンスカウンタ（以下、ＰＭＣ（Performance Monitoring Counter）という）１１２を含む。ＴＳＣ１１１はＣＰＵ１１のクロックサイクル毎に増加するレジスタであり、１クロックに付き１ずつ値が加算される値を出力する。ＰＭＣ１１２はＣＰＵ１１のイベントを計測する。イベントは例えば、タスク実行期間中に、ＣＰＵ１１が停止していなかった（すなわちビジー状態であった）サイクル数、分岐命令数、実行命令数、バストトランザクション数、または、分岐予測失敗数等である。本実施形態では一例として、ＰＭＣ１１２がタスク実行期間中にＣＰＵ１１が停止していなかったサイクル数（以下、動作サイクル数という）を計測する例を挙げて説明するが、これに限るものではない。
【００１３】
図２は第１履歴記憶部１２１のレコードレイアウトを示す説明図である。第１履歴記憶部１２１は経過時間フィールド、実行タスクフィールド、ＴＳＣフィールド、及びＰＭＣフィールドを含む。本実施形態においては、説明を容易にするために一例としてタスクＡ、タスクＢ及びタスクＣの３つが存在し、スケジューラ１５２に従い、タスクＡ、タスクＢ及びタスクＣが１ｍｓおきに繰り返し実行される例を挙げて説明する。なお、このスケジューラ１５２により設定される所定のルールは一例でありこれに限るものではない。さらに数多くのタスクを実行しても良く、また各タスクの実行時間は均等でなくても良い。またスケジューラ１５２の設定によりタスクＡ、タスクＢ、タスクＣとしていたルールを、予め記憶した時間または予め定めた条件に合致した場合に、タスクＡ、タスクＣ、タスクＢの順序で行うというルールへ変更して実行しても良い。ＣＰＵ１１はスケジューラ１５２に従い、最初にタスクＡを１ｍｓ間実行する。ＣＰＵ１１は１ｍｓ経過後、タスクＡからタスクＢに切り替える。
【００１４】
経過時間フィールドには、最初のタスクを開始してからの経過時間が記憶される。ＣＰＵ１１はクロック１８を参照し経過時間フィールドに経過時間を記憶する。実行タスクフィールドには実行済みのタスク名が経過時間に対応付けて記憶される。ＣＰＵ１１は、実行済みのタスクを実行タスクフィールドに記憶する。図２の例では、１ｍｓ経過後にタスクＡの実行が完了したことから、経過時間１ｍｓに対応付けて実行タスクフィールドにタスクＡが記憶される。またＣＰＵ１１はタスクＡからタスクＢに切り替えた際に、ＴＳＣ１１１から取得した値をＴＳＣフィールドに記憶する。具体的には、ＣＰＵ１１はタスクＡの実行開始時にＴＳＣ１１１を０にリセットし、タスクＡの終了時にＴＳＣ１１１から出力される値（以下カウント数という）をＴＳＣフィールドに記憶する。なお、ＣＰＵ１１はＴＳＣ１１１をリセットすることなく、タスクＡの終了時におけるＴＳＣ１１１から出力される値から、タスクＡの実行開始時にＴＳＣ１１１から出力された値を減じてカウント数としても良い。
【００１５】
ＣＰＵ１１はタスクＡの実行開始時から実行終了時までの間に、ＰＭＣ１１２からＣＰＵ１１が停止していなかった動作サイクル数を取得する。図２は、ＣＰＵ１１及びＴＳＣ１１１の周波数を１ＧＨｚとし、タスクＡ、タスクＢ及びタスクＣを１ｍｓ毎に切り替える例を示している。なお、Ｍは１０の６乗である。経過時間１ｍｓ経過後はタスクＡのカウント数として１Ｍ、動作サイクル数として０．１Ｍが対応付けて第１履歴記憶部１２１に記憶される。ＣＰＵ１１はタスクＡの実行後、スケジューラ１５２に従い、タスクＢを実行する。ＣＰＵ１１はＴＳＣ１１１及びＰＭＣ１１２を参照し、タスクＢの実行開始時から終了時までのカウント数及び動作サイクル数を記憶する。図２の例では、２ｍｓ経過後にタスクＢの動作履歴としてカウント数１Ｍ、動作サイクル数０．９Ｍと記憶される。動作サイクル数は０．９Ｍであるため、ＣＰＵ１１はタスクＢの処理中、タスクＡと比較して長時間動作していたことが理解できる。
【００１６】
ＣＰＵ１１はタスクＢの実行後、スケジューラ１５２に従い、タスクＣを実行する。同様にＣＰＵ１１はＴＳＣ１１１及びＰＭＣ１１２を参照し、タスクＣの実行開始時から終了時までのカウント数及び動作サイクル数を記憶する。図２の例では、３ｍｓ経過後にタスクＣの動作履歴としてカウント数１Ｍ、動作サイクル数０．５Ｍと記憶される。ＣＰＵ１１はタスクＣの実行後、スケジューラ１５２に従い、再びタスクＡを実行する。ＣＰＵ１１はＴＳＣ１１１及びＰＭＣ１１２を参照し、タスクＡの実行開始時から終了時までのカウント数及び動作サイクル数を記憶する。図２の例では、４ｍｓ経過後にタスクＡの動作履歴としてカウント数１Ｍ、動作サイクル数０．１Ｍと記憶される。
【００１７】
ＣＰＵ１１はタスクＡの実行後、スケジューラ１５２に従い、タスクＢを実行する。ＣＰＵ１１はＴＳＣ１１１及びＰＭＣ１１２を参照し、タスクＢの実行開始時から終了時までのカウント数及び動作サイクル数を記憶する。図２の例では、５ｍｓ経過後にタスクＢの動作履歴としてカウント数１Ｍ、動作サイクル数０．７Ｍと記憶される。なお、本実施形態で述べる数値はあくまで一例でありこれに限るものではない。
【００１８】
図３は第２履歴記憶部１２２のレコードレイアウトを示す説明図である。第２履歴記憶部１２２は経過時間フィールド、タスクフィールド、累積カウント数フィールド、及び累積動作サイクル数フィールドを含む。図３では、説明のため図３Ａ〜図３Ｆに第２履歴記憶部１２２の時間的変化を示している。図３Ａは経過時間０ｍｓ、図３Ｂは経過時間１ｍｓ、図３Ｃは経過時間２ｍｓ、図３Ｄは経過時間３ｍｓ、図３Ｅは経過時間４ｍｓ、図３Ｆは経過時間５ｍｓの状態をそれぞれ示す。ＣＰＵ１１は第１履歴記憶部１２１のレコードが更新される度に、第２履歴記憶部１２２の記憶内容を更新する。
【００１９】
第２履歴記憶部１２２の経過時間フィールドには、スケジューラ１５２の実行及び制御プログラム１５３の実行に伴う第１番目のタスクの実行開始後からの経過時間が記憶される。タスクフィールドには各タスクを識別するための識別情報が記憶される。なお、本実施形態では説明のため、タスクの名称で記載しているが、プロセスＩＤを記憶しても良い。累積カウント数フィールドには、タスクの実行開始時からの累積カウント数をタスク毎に記憶している。例えば、図３Ｅの如く４ｍｓ経過後は、タスクＡの累積カウント数は１Ｍ＋１Ｍで２Ｍとなり、タスクＢの累積カウント数及びタスクＣの累積カウント数は依然として１Ｍである。
【００２０】
累積動作サイクル数フィールドには、タスクの実行開始時からの累積動作サイクル数をタスク毎に記憶している。例えば、図３Ｆの如く５ｍｓ経過後は、タスクＡの累積動作サイクル数は０．１Ｍ＋０．１Ｍで０．２Ｍとなる。また、タスクＢの累積動作サイクル数は０．９Ｍ＋０．７Ｍで１．６Ｍとなり、タスクＣの累積動作サイクル数は依然として０．５Ｍである。
【００２１】
ＣＰＵ１１はあるタスクに係る使用率の算出命令を受け付けた場合に、第２履歴記憶部１２２を参照し、タスクを実行するのに必要なＣＰＵ１１の使用率（以下、ＣＰＵ使用率という）を算出する。例えば図３Ｅに示す経過時間４ｍｓ経過後に算出命令を受け付けた場合、ＣＰＵ１１は累積動作サイクル数フィールドに記憶した累積動作サイクル数を累積カウント数フィールドに記憶した累積カウント数で除し、１００を乗じることでＣＰＵ使用率を算出する。図３ＥのタスクＡのＣＰＵ使用率は０．２Ｍ÷２Ｍ×１００で１０％となる。またタスクＢのＣＰＵ使用率は０．９Ｍ÷１Ｍで９０％となる。タスクＣのＣＰＵ使用率は０．５Ｍ÷１Ｍで５０％となる。なお、タスクに係るＣＰＵ使用率の算出処理はこれに限るものではない。例えば、累積動作サイクル数または他のイベント数を、累積サイクル数または各タスクの実行時間で除すことにより算出しても良い。タスクＣＰＵ使用率の算出命令の出力タイミングは、制御プログラム１５３に記述されている。例えば、累積カウント数が閾値（例えば８Ｍ）を越えた場合、ＣＰＵ１１は算出命令を受け付ける。
【００２２】
その他、経過時間が予め記憶した時間（例えば１０ｍｓ）を超えた場合、累積動作サイクル数が予め記憶した動作サイクル数（例えば３Ｍ）を超えた場合、または、各タスクの繰り返し実行回数が予め記憶した回数（例えば１０回）を超えた場合に出力しても良い。さらに、ＣＰＵ１１はＣＰＵ使用率の算出命令を受け付けた後に、第２履歴記憶部１２２を参照し、継続してＣＰＵ使用率を算出しても良い。例えば、経過時間が５ｍｓを超えた場合、図３Ｆを参照し、タスクＡのＣＰＵ使用率を１０％、タスクＢのＣＰＵ使用率を８０％、タスクＣのＣＰＵ使用率を５０％と算出する。その他、ＣＰＵ１１はＣＰＵ使用率の算出命令を受け付けた時点で１度だけ、ＣＰＵ使用率を算出しても良く、その他算出命令を受け付けた後に、定期的（例えば３ｍｓ毎）にＣＰＵ使用率を算出しても良い。本実施形態ではＣＰＵ１１はＣＰＵ使用率の算出命令を受け付けた後、継続して各タスクのＣＰＵ使用率を算出する例を挙げて説明する。
【００２３】
図４は動作周波数テーブル１２３のレコードレイアウトを示す説明図である。動作周波数テーブル１２３はＣＰＵ使用率フィールド及び動作周波数フィールドを含む。動作周波数フィールドには、ＣＰＵ使用率に対応付けてＣＰＵ１１を動作させる動作周波数が記憶されている。ＣＰＵ１１は動作周波数テーブル１２３を参照し、算出したタスクに係るＣＰＵ使用率に基づき、対応する動作周波数を読み出す。ＣＰＵ１１は読み出した動作周波数をタスクに対応する動作周波数として決定する。例えば、図３Ｆに示す５ｍｓ経過後のタスクＡのＣＰＵ使用率は１０％であるので、タスクＡに対するＣＰＵ１１の動作周波数は０．３ＧＨｚとなる。一方、タスクＢのＣＰＵ使用率は８０％であるので、タスクＢに対するＣＰＵ１１の動作周波数は１ＧＨｚとなる。またタスクＣのＣＰＵ使用率は５０％であるので、タスクＣに対するＣＰＵ１１の動作周波数は０．５ＧＨｚとなる。
【００２４】
ＣＰＵ１１は決定したタスクに係る動作周波数に従い、タスクを実行する。なお、図４に示した数値例は一例でありこれに限るものではない。また、動作周波数テーブル１２３を設けるほかに、係数を乗じて各タスクに係る動作周波数を決定しても良い。例えばＣＰＵ１１の最大動作周波数に、タスクに係るＣＰＵ使用率に基づく係数を乗じ、動作周波数を算出する。図３Ｆの例では、タスクＢのＣＰＵ使用率は８０％であることから１００で除した値０．８を係数とする。係数０．８を最大動作周波数１ＧＨｚに乗じて、タスクＢの動作周波数を０．８ＧＨｚとしても良い。
【００２５】
以上のハードウェア群においてソフトウェア処理を、フローチャートを用いて説明する。図５は動作履歴記憶処理の手順を示すフローチャートである。ＣＰＵ１１は制御プログラム１５３を起動する。ＣＰＵ１１はスケジューラ１５２により割り当てられたタスクの実行を開始する（ステップＳ５１）。ＣＰＵ１１はタスクの実行を終了する（ステップＳ５２）。ＣＰＵ１１はタスクを実行していた間のカウント数をＴＳＣ１１１から取得し、またＰＭＣ１１２から動作サイクル数を取得する（ステップＳ５３）。ＣＰＵ１１は第１番目のタスクの実行を開始してからタスクの実行を終了するまでの経過時間、実行したタスク、カウント数、及び、動作サイクル数を対応付けて第１履歴記憶部１２１に記憶する（ステップＳ５４）。ＣＰＵ１１は第１履歴記憶部１２１に記憶したカウント数及び動作サイクル数と第２履歴記憶部１２２に記憶した履歴とに基づき、累積カウント数及び累積動作サイクル数を第２履歴記憶部１２２に、経過時間及びタスクに対応付けて記憶する（ステップＳ５５）。
【００２６】
ＣＰＵ１１は上述したステップＳ５３〜Ｓ５５の処理と並行して次に実行するタスクが存在するか否かを判断する（ステップＳ５６）。ＣＰＵ１１はタスクが存在すると判断した場合（ステップＳ５６でＹＥＳ）、スケジューラ１５２により割り当てられたタスクを切り替える（ステップＳ５７）。ＣＰＵ１１は処理をステップＳ５１へ戻し、新たに割り当てられたタスクについて以上の処理を繰り返す。これにより第２番目、第３番目のタスクの累積カウント数及び累積動作サイクル数が第２履歴記憶部１２２に記憶される。一方、ＣＰＵ１１はスケジューラ１５２により割り当てられたタスクがなく、タスクが存在しないと判断した場合（ステップＳ５６でＮＯ）、処理を終了する。
【００２７】
図６は動作周波数の決定処理の手順を示すフローチャートである。ＣＰＵ１１は第２履歴記憶部１２２を参照し、タスクに係る累積カウント数が記憶部１５に予め記憶した閾値を越えるか否かを判断する（ステップＳ６１）。ＣＰＵ１１は閾値を越えないと判断した場合（ステップＳ６１でＮＯ）、以上の処理を繰り返す。ＣＰＵ１１は閾値を越えると判断した場合（ステップＳ６１でＹＥＳ）、タスクに係るＣＰＵ使用率の算出命令を制御プログラム１５３から受け付ける（ステップＳ６２）。ＣＰＵ１１は第２履歴記憶部１２２を参照し、タスクのＣＰＵ使用率を算出する（ステップＳ６３）。
【００２８】
ＣＰＵ１１は動作周波数テーブル１２３を参照し、タスクに対応する動作周波数を決定する（ステップＳ６４）。ＣＰＵ１１は決定した動作周波数に従い、タスクを実行する（ステップＳ６５）。最後にＣＰＵ１１は第２履歴記憶部１２２を初期化（全レコードをクリア）する（ステップＳ６６）。具体的には、ＣＰＵ１１は第２履歴記憶部１２２の全レコードをクリアする。これにより、時間局所性が保たれた状態での動作履歴に応じて適切な動作周波数にて各タスクを実行することができる。またこれにより、動作履歴に応じて適切な動作周波数にて各タスクを実行することができる。また数多くのタスクに対しても適切に動作周波数を決定することが可能となる。なお、ステップＳ６６の処理はステップＳ６３以降に行えば良い。またステップＳ６６の処理は必ずしも実行する必要はない。
【００２９】
実施の形態２
実施の形態２はタスクの優先度に基づき動作周波数を決定する形態に関する。図７は実施の形態２に係るサーバコンピュータ１のハードウェア群を示すブロック図である。ＲＡＭ１２内に新たに優先度記憶部１２４が格納されている。図８は優先度記憶部１２４のレコードレイアウトを示す説明図である。優先度記憶部１２４にはタスクに対応付けて優先度が記憶されている。例えばタスクＡは優先度が中、タスクＢは優先度が高、タスクＣは優先度が低と記憶されている。なお、優先度は数値を記憶しても良い。また本実施形態では優先度を３段階としたが、複数段階であればこれに限るものではない。なお、タスクの優先度は制御プログラム１５３に予め記述しておくほか、入力部１３からオペレータが適宜の値を入力し、優先度記憶部１２４に記憶するようにしても良い。
【００３０】
図９は実施の形態２に係る動作周波数テーブル１２３のレコードレイアウトを示す説明図である。動作周波数テーブル１２３はＣＰＵ使用率フィールド、及び、優先度毎の動作周波数フィールドを含む。動作周波数フィールドには、ＣＰＵ使用率に対応付けて、優先度毎の動作周波数が記憶されている。例えば優先度が高の場合、ＣＰＵ使用率０％以上３０％未満に対応付けて０．５ＧＨｚ、ＣＰＵ使用率３０％以上７０％未満に対応付けて０．７ＧＨｚ、ＣＰＵ使用率７０％以上１００％以下に対応付けて１ＧＨｚが記憶されている。優先度が中の場合、優先度が高の場合と比較して、低い動作周波数が記憶されている。例えば優先度が中の場合、ＣＰＵ使用率０％以上３０％未満に対応付けて０．３ＧＨｚ、ＣＰＵ使用率３０％以上７０％未満に対応付けて０．５ＧＨｚ、ＣＰＵ使用率７０％以上１００％以下に対応付けて０．８ＧＨｚが記憶されている。
【００３１】
さらに、優先度が低の場合、優先度が中の場合と比較して、低い動作周波数が記憶されている。例えば優先度が低の場合、ＣＰＵ使用率０％以上３０％未満に対応付けて０．２ＧＨｚ、ＣＰＵ使用率３０％以上７０％未満に対応付けて０．３ＧＨｚ、ＣＰＵ使用率７０％以上１００％以下に対応付けて０．６ＧＨｚが記憶されている。ＣＰＵ１１は、タスクの優先度を優先度記憶部１２４から読み出す。またＣＰＵ１１は読み出した優先度及びタスクのＣＰＵ使用率に基づき、動作周波数テーブル１２３から対応する動作周波数を決定する。例えば、タスクＢのＣＰＵ使用率が６０％の場合、タスクＢの優先度は高であるので、動作周波数は０．７ＧＨｚと決定される。なお、本実施形態においては優先度毎に複数の動作周波数の値を動作周波数テーブル１２３に記憶する例を挙げたがこれに限るものではない。例えば、実施の形態１で決定した動作周波数に、優先度に応じた係数を乗じることで、動作周波数を決定しても良い。例えば、優先度が高の場合、係数１を乗じ、優先度が中の場合、係数０．７を乗じ、優先度が低の場合、係数０．３を乗じ、動作周波数を補正すれば良い。
【００３２】
図１０は実施の形態２に係る動作周波数の決定処理の手順を示すフローチャートである。実施の形態１で述べたとおり、ＣＰＵ１１は第２履歴記憶部１２２を参照し、タスクのＣＰＵ使用率を算出する（ステップＳ１０１）。ＣＰＵ１１はタスクの優先度を優先度記憶部１２４から読み出す（ステップＳ１０２）。ＣＰＵ１１は動作周波数テーブル１２３を参照し、優先度及びタスクのＣＰＵ使用率に基づき、タスクに対応する動作周波数を決定する（ステップＳ１０３）。ＣＰＵ１１は決定した動作周波数に従い、タスクを実行する（ステップＳ１０４）。これにより、優先すべきタスクについて速やかに処理を実行することが可能となる。なお、実施の形態１と同様に、適宜第２履歴記憶部１２２の内容を初期化しても良い。例えば、ＣＰＵ１１は定期的にタイマー割込みを受け（例えば１ｍ毎のインターバル）、その度に第２履歴記憶部１２２を初期化（全レコードをクリア）する。これにより第２履歴記憶部１２２のレコードが常に現在の使用状況に保たれ、適切な動作周波数を決定することが可能となる。
【００３３】
本実施の形態２は以上の如きであり、その他は実施の形態１と同様であるので、対応する部分には同一の参照番号を付してその詳細な説明を省略する。
【００３４】
実施の形態３
実施の形態３は所定時間内の動作履歴を用いて動作周波数を決定する形態に関する。本実施形態においては経過時間が閾時間（例えば１０ｍｓ）経過する度に算出命令を制御プログラム１５３から受け付ける例を挙げて説明する。またＣＰＵ１１はタスクの算出命令を受け付けた時点から所定時間内（例えば８ｍｓ内）の動作履歴に基づき、ＣＰＵ使用率を算出する例を挙げて説明する。
【００３５】
図１１は実施の形態３に係る動作周波数の決定処理の手順を示すフローチャートである。ＣＰＵ１１は記憶部１５から閾時間を読み出す。ＣＰＵ１１は第１履歴記憶部１２１に記憶した経過時間が閾時間を経過したか否かを判断する（ステップＳ１１１）。ＣＰＵ１１は閾時間を経過していないと判断した場合（ステップＳ１１１でＮＯ）、以上の処理を繰り返す。ＣＰＵ１１は閾時間を経過したと判断した場合（ステップＳ１１１でＹＥＳ）、制御プログラム１５３からタスクのＣＰＵ使用率の算出命令を受け付ける（ステップＳ１１２）。ＣＰＵ１１は記憶部１５から所定時間を読み出す。ＣＰＵ１１は第１履歴記憶部１２１を参照し、ステップＳ１１２の算出命令受け付け時から所定時間遡った分のカウント数及び動作サイクル数をタスク毎に読み出す（ステップＳ１１３）。
【００３６】
ＣＰＵ１１は所定時間内の累積カウント数及び累積動作サイクル数をタスク毎に算出する（ステップＳ１１４）。ＣＰＵ１１は累積動作サイクル数を累積カウント数で除し、１００を乗ずることで、各タスクのＣＰＵ使用率を算出する（ステップＳ１１５）。ＣＰＵ１１はタスクの優先度を優先度記憶部１２４から読み出す（ステップＳ１１６）。ＣＰＵ１１は動作周波数テーブル１２３を参照し、優先度及びタスクのＣＰＵ使用率に基づき、タスクに対応する動作周波数を決定する（ステップＳ１１７）。ＣＰＵ１１は決定した動作周波数に従い、タスクを実行する（ステップＳ１１８）。なお、実施の形態１の如く、優先度を考慮することなく動作周波数を決定しても良い。以上の処理はさらに閾時間を経過することで、ステップＳ１１２以降の処理が繰り返し実行される。これにより、現在の使用状況に応じた適切な動作周波数を決定することが可能となる。
【００３７】
本実施の形態３は以上の如きであり、その他は実施の形態１及び２と同様であるので、対応する部分には同一の参照番号を付してその詳細な説明を省略する。
【００３８】
実施の形態４
実施の形態４は実施の形態１の処理と実施の形態３の処理とを切り替えて実行する形態に関する。ＣＰＵ１１は、通常は第２履歴記憶部１２２に記憶した動作履歴に基づきＣＰＵ使用率を算出するが、所定時間内における動作履歴の変動に関する値が閾値を越える場合は、実施の形態３で述べたＣＰＵ使用率の算出処理を実行する。動作履歴の変動に関する値は、例えば、所定時間内の動作サイクル数の分散値、単位時間当たりの変化率、または平均値である。本実施形態では所定時間内の動作サイクル数の分散値を用いる例を挙げて説明する。
【００３９】
図１２及び図１３は実施の形態４に係る動作周波数の算出処理の手順を示すフローチャートである。ＣＰＵ１１は記憶部１５から閾時間を読み出す。ＣＰＵ１１は第１履歴記憶部１２１に記憶した経過時間が閾時間を経過したか否かを判断する（ステップＳ１２１）。ＣＰＵ１１は閾時間を経過していないと判断した場合（ステップＳ１２１でＮＯ）、以上の処理を繰り返す。ＣＰＵ１１は閾時間を経過したと判断した場合（ステップＳ１２１でＹＥＳ）、制御プログラム１５３からタスクのＣＰＵ使用率の算出命令を受け付ける（ステップＳ１２２）。ＣＰＵ１１は記憶部１５から所定時間を読み出す。ＣＰＵ１１は第１履歴記憶部１２１を参照し、ステップＳ１２２の算出命令受け付け時から所定時間遡った分のカウント数及び動作サイクル数をタスク毎に読み出す（ステップＳ１２３）。
【００４０】
ＣＰＵ１１は閾値を記憶部１５から読み出す（ステップＳ１２４）。ＣＰＵ１１はステップＳ１２３で読み出した所定時間内の動作サイクル数の分散値を算出する（ステップＳ１２５）。ＣＰＵ１１は算出したタスクに係る分散値が読み出した閾値を越えるか否かを判断する（ステップＳ１２６）。ＣＰＵ１１は分散値が閾値を越えると判断した場合（ステップＳ１２６でＹＥＳ）、当該タスクに係る所定時間内の累積カウント数及び累積動作サイクル数を算出する（ステップＳ１２７）。ＣＰＵ１１は累積動作サイクル数を累積カウント数で除し、１００を乗ずることで、当該タスクのＣＰＵ使用率を算出する（ステップＳ１２８）。
【００４１】
ＣＰＵ１１はタスクに係る分散値が閾値を越えないと判断した場合（ステップＳ１２６でＮＯ）、ステップＳ１２９へ移行する。ＣＰＵ１１はタスクの実行開始から算出命令を受け付けた時点までにステップＳ５５の処理により第２履歴記憶部１２２に記憶された累積カウント数及び累積動作サイクル数に基づき、タスクのＣＰＵ使用率を算出する（ステップＳ１２９）。ステップＳ１２８及びＳ１２９の処理後、ＣＰＵ１１は処理をステップＳ１２１０へ移行させる。ＣＰＵ１１は全てのタスクについてＣＰＵ使用率を算出したか否かを判断する（ステップＳ１２１０）。
【００４２】
ＣＰＵ１１は全てのタスクについてＣＰＵ使用率を算出していないと判断した場合（ステップＳ１２１０でＮＯ）、処理をステップＳ１２６へ戻す。これにより、各タスクのＣＰＵ使用率が算出される。ＣＰＵ１１は全てのタスクについてＣＰＵ使用率を算出したと判断した場合（ステップＳ１２１０でＹＥＳ）、タスクの優先度を優先度記憶部１２４から読み出す（ステップＳ１３１）。ＣＰＵ１１は動作周波数テーブル１２３を参照し、優先度及びタスクのＣＰＵ使用率に基づき、タスクに対応する動作周波数を決定する（ステップＳ１３２）。ＣＰＵ１１は決定した動作周波数に従い、タスクを実行する（ステップＳ１３３）。なお、実施の形態１の如く、優先度を考慮することなく動作周波数を決定しても良い。以上の処理はさらに閾時間を経過することで、ステップＳ１２１以降の処理が繰り返し実行される。これにより、ＣＰＵ使用率を算出する時点から所定時間前の動作履歴の変動が大きいタスクについてはその変動に応じた動作周波数を決定することが可能となる。また、変動が少ないタスクについては、長期間の履歴に基づく動作周波数を決定することが可能となる。
【００４３】
本実施の形態４は以上の如きであり、その他は実施の形態１乃至３と同様であるので、対応する部分には同一の参照番号を付してその詳細な説明を省略する。
【００４４】
実施の形態５
図１４は実施の形態５に係るサーバコンピュータ１のハードウェア群を示すブロック図である。サーバコンピュータ１を動作させるためのプログラムは、ディスクドライブ等の読み取り部１０ＡにCD-ROM、DVD（Digital Versatile Disc）ディスクまたはUSB（Universal Serial Bus）メモリ等の可搬型記録媒体１Ａを読み取らせて記憶部１５に記憶しても良い。また当該プログラムを記憶したフラッシュメモリ等の半導体メモリ１Ｂをサーバコンピュータ１内に実装しても良い。さらに、当該プログラムは、インターネット等の通信網Ｎを介して接続される他のサーバコンピュータ（図示せず）からダウンロードすることも可能である。以下に、その内容を説明する。
【００４５】
図１４に示すサーバコンピュータ１は、上述した各種ソフトウェア処理を実行するプログラムを、可搬型記録媒体１Ａまたは半導体メモリ１Ｂから読み取り、或いは、通信網Ｎを介して他のサーバコンピュータ（図示せず）からダウンロードする。当該プログラムは、制御プログラム１５３としてインストールされ、ＲＡＭ１２にロードして実行される。これにより、上述したサーバコンピュータ１として機能する。
【００４６】
本実施の形態５は以上の如きであり、その他は実施の形態１乃至４と同様であるので、対応する部分には同一の参照番号を付してその詳細な説明を省略する。
【００４７】
以上の実施の形態１乃至５を含む実施形態に関し、さらに以下の付記を開示する。
【００４８】
（付記１）
プロセッサを有する情報処理装置において、
所定のルールに従い前記プロセッサが複数のタスクを繰り返し実行する場合に、タスク毎に前記プロセッサでの動作履歴を記憶する記憶部と、
該記憶部に記憶した動作履歴に基づき、各タスクに対する前記プロセッサの使用率を算出する算出部と、
該算出部により算出した使用率に基づき各タスクに対する前記プロセッサの動作周波数を決定する決定部と
を備える情報処理装置。
【００４９】
（付記２）
タスク毎に優先度を記憶した優先度記憶部を備え、
前記決定部は、
前記算出部により算出した使用率及び前記優先度記憶部に記憶した優先度に基づき各タスクに対する前記プロセッサの動作周波数を決定する
付記１に記載の情報処理装置。
【００５０】
（付記３）
前記算出部による使用率の算出命令を受け付ける受け付け部と、
該受け付け部による算出命令受け付け時から所定時間以内の動作履歴を前記記憶部から読み出す読み出し部とを備え、
前記算出部は、
前記読み出し部により読み出した動作履歴に基づき、各タスクに対する前記プロセッサの使用率を算出する
付記１または２に記載の情報処理装置。
【００５１】
（付記４）
タスク毎に優先度を記憶した優先度記憶部と、
使用率及び優先度に対応付けて動作周波数を記憶したテーブルとを備え、
前記決定部は、
前記テーブルを参照し、前記算出部により算出した使用率及び前記優先度記憶部に記憶した優先度に基づき、対応する各タスクの動作周波数を決定する
付記１に記載の情報処理装置。
【００５２】
（付記５）
前記算出部による使用率の算出命令を受け付ける受け付け部と、
該受け付け部による算出命令受け付け時から所定時間以内の動作履歴を前記記憶部から読み出す読み出し部と、
該読み出し部により読み出した動作履歴の変動に関する値が、閾値を越えるか否かを判断する判断部と、
前記算出部は、
前記判断部により閾値を越えると判断した場合に、前記読み出し部により読み出した動作履歴に基づき、各タスクに対する前記プロセッサの使用率を算出する
付記１または２に記載の情報処理装置。
【００５３】
（付記６）
情報処理装置のプロセッサに対する制御方法において、
所定のルールに従い前記プロセッサが複数のタスクを繰り返し実行する場合に、タスク毎に前記プロセッサでの動作履歴を記憶部に記憶し、
該記憶部に記憶した動作履歴に基づき、各タスクに対する前記プロセッサの使用率を算出し、
算出した使用率に基づき各タスクに対する前記プロセッサの動作周波数を決定する
制御方法。
【００５４】
（付記７）
プロセッサを有するコンピュータに用いられるプログラムにおいて、
コンピュータに、
所定のルールに従い前記プロセッサが複数のタスクを繰り返し実行する場合に、タスク毎に前記プロセッサでの動作履歴を記憶部に記憶し、
該記憶部に記憶した動作履歴に基づき、各タスクに対する前記プロセッサの使用率を算出し、
算出した使用率に基づき各タスクに対する前記プロセッサの動作周波数を決定する
処理を実行させるプログラム。
【符号の説明】
【００５５】
１      サーバコンピュータ
１Ａ    可搬型記録媒体
１Ｂ    半導体メモリ
１１    ＣＰＵ
１２    ＲＡＭ
１３    入力部
１４    表示部
１５    記憶部
１５３  制御プログラム
１６    通信部
１８    クロック
１１１  ＴＳＣ
１１２  ＰＭＣ
１２１  第１履歴記憶部
１２２  第２履歴記憶部
１２３  動作周波数テーブル
１２４  優先度記憶部
１５１  ＯＳ
１５２  スケジューラ
Ｎ      通信網
【図１】
0005621613.tif 000002
【図２】
0005621613.tif 000003
【図３】
0005621613.tif 000004
【図４】
0005621613.tif 000005
【図５】
0005621613.tif 000006
【図６】
0005621613.tif 000007
【図７】
0005621613.tif 000008
【図８】
0005621613.tif 000009
【図９】
0005621613.tif 000010
【図１０】
0005621613.tif 000011
【図１１】
0005621613.tif 000012
【図１２】
0005621613.tif 000013
【図１３】
0005621613.tif 000014
【図１４】
0005621613.tif 000015