(57)【特許請求の範囲】
【請求項１】
プロセッサによって制御されるプロセスの切り替えが検出されたときに、切り替え後のプロセスを特定し、
プロセスごとに対応付けて記憶手段に記憶された、各プロセス処理における前記プロセッサの動作特性を示す特性値であって所定時間内に各プロセス処理において発生する複数の所定イベントそれぞれの発生回数のうち、特定された前記切り替え後のプロセスに対応する発生回数を該記憶手段から取得し、
取得した前記切り替え後のプロセスに対応する前記所定イベントごとの発生回数と、当該所定イベントごとに対応させて設定された所定閾値とを比較し、当該比較結果、及び当該比較結果において前記所定イベントの発生回数が前記所定閾値よりも大きいとき又は小さいときのいずれの場合にクロック周波数を増加させるかが前記所定イベントごとに対応させて設定された判定基準に基づいて、前記プロセッサのクロック周波数の制御を行う、
処理をコンピュータに実行させるクロック周波数制御プログラム。
【請求項２】
前記クロック周波数の制御を行う処理は、前記比較結果に応じて前記プロセッサのオーバークロック機能を有効又は無効にする請求項１記載のクロック周波数制御プログラム。
【請求項３】
前記プロセスを特定する処理は、プロセスの切り替え前まで前記プロセッサによって制御されていた切り替え前のプロセスをさらに特定し、
特定した前記切り替え前のプロセスについて計測された特性値を、前記記憶手段に記憶させる処理を、前記コンピュータにさらに実行させる請求項１又は２に記載のクロック周波数制御プログラム。
【請求項４】
プロセッサによって制御されるプロセスの切り替えが検出されたときに、切り替え後のプロセスを特定する手段と、
プロセスごとに対応付けて記憶手段に記憶された、各プロセス処理における前記プロセッサの動作特性を示す特性値であって所定時間内に各プロセス処理において発生する複数の所定イベントそれぞれの発生回数のうち、特定された前記切り替え後のプロセスに対応する発生回数を該記憶手段から取得する手段と、
取得した前記切り替え後のプロセスに対応する前記所定イベントごとの発生回数と、当該所定イベントごとに対応させて設定された所定閾値とを比較し、当該比較結果、及び当該比較結果において前記所定イベントの発生回数が前記所定閾値よりも大きいとき又は小さいときのいずれの場合にクロック周波数を増加させるかが前記所定イベントごとに対応させて設定された判定基準に基づいて、前記プロセッサのクロック周波数の制御を行う手段と、
を備えたクロック周波数制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プロセッサにおけるクロック周波数を制御する技術に関する。
【背景技術】
【０００２】
プロセッサの動作特性に応じてクロック周波数を変化させる技術がある。一例として、プロセッサにおいて発生する種々のイベントの発生回数を所定時間間隔でカウントすることによって動作特性を特定し、その動作特性に応じてクロック周波数を変更する技術が提案されている。この技術では、非効率的な動作（例えば、外部装置からの応答を待つイベント等）が多く発生しているときに、クロック周波数を低下させて消費電力を抑制する一方、非効率的な動作の発生が減少すると、クロック周波数を増加させて処理性能を向上させている。
【０００３】
なお、プロセッサにおいて発生するイベントの発生回数のカウントに関連する先行技術としては、例えば、イベントの発生回数のカウント値をプロセスごとに採取する方法がある。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００９−２７７２２８号公報
【特許文献２】特開２００９−２２３４５１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ここで、プロセッサで実行されるプロセスによって、プロセス処理におけるプロセッサの動作特性はそれぞれ異なる。そして、プロセスによっては、クロック周波数を増加させてもプロセッサの処理が効果的に高速化しない場合がある。この場合、クロック周波数増加に伴って増加する消費電力に相応するだけの処理効率の向上が図れない。しかし、上述のような従来技術では、プロセスごとにクロック周波数を変更することが難しかった。
【０００６】
以上のような問題点に鑑み、本技術は、プロセッサの消費電力を抑制させることを目的とする。
【課題を解決するための手段】
【０００７】
本技術は、１つの側面において、プロセッサによる制御を割当てるプロセスの切り替えが検出されたときに、切り替え後にプロセッサによる制御が割当てられる切り替え後プロセスを特定する。さらに、プロセスごとに対応付けて記憶手段に記憶された、プロセス処理におけるプロセッサの動作特性を示す特性値のうち、切り替え後プロセスに対応する特性値を記憶手段から取得する。そして、切り替え後プロセスに対応する特性値と所定閾値とを比較し、比較結果に応じて、プロセッサのクロック周波数の制御を行う。
【発明の効果】
【０００８】
本技術によれば、１つの側面において、プロセッサの消費電力を抑制することが可能となる。
【図面の簡単な説明】
【０００９】
【図１】クロック周波数制御技術の一実施形態が具現化された情報処理装置のハードウェア構成の一例の説明図である。
【図２】一実施形態に係るクロック周波数制御装置を含んだ情報処理装置の機能ブロック図の説明図である。
【図３】一実施形態に係る性能モニタリングカウンタの構造の説明図である。
【図４】一実施形態に係る閾値テーブルの構造の説明図である。
【図５】一実施形態に係る動作特性テーブルの構造の説明図である。
【図６】一実施形態に係るクロック周波数制御装置を含んだ情報処理装置の各構成要素の処理の説明図である。
【図７】一実施形態に係る割り込みハンドラの処理を示すフローチャートである。
【発明を実施するための形態】
【００１０】
本明細書では、マルチタスク処理を行うプロセッサによる制御を割当てるプロセスの切り替え時に、切り替え後のプロセス処理におけるプロセッサの動作特性が所定条件を満たすか否かに基づいて、クロック周波数の制御を行う技術について説明する。かかるクロック周波数制御技術によれば、プロセスごとの動作特性、すなわち、アプリケーションごとの特性に応じたクロック周波数の制御が可能となる。具体的には、例えば、クロック周波数を増加させることで処理速度が効果的に向上する特性を有するアプリケーションのプロセスを実行するときにのみクロック周波数を増加させて処理速度を向上させる。一方で、クロック周波数を増加させても処理速度が効果的に向上しない特性を有するアプリケーションのプロセスを実行するときには、クロック周波数を無駄に増加させることを防ぐ。このため、本明細書で説明するクロック周波数制御技術によれば、プロセスごとの動作特性に応じたクロック周波数の制御が実現されるため、消費電力を抑制しつつ、効果的にプロセッサにおける処理効率を向上させることができる。
【００１１】
図１は、上述したクロック周波数制御技術の一実施形態が具現化された情報処理装置のハードウェア構成の一例を示す。本情報処理装置は、プロセッサ１、メモリ２、ストレージ３、可搬記憶媒体駆動装置４、入出力装置５及び通信インタフェース６を備える。
【００１２】
プロセッサ１は、制御ユニット、演算ユニット及び命令デコーダ等を含み、実行ユニットが、命令デコーダで解読されたプログラムの命令に従い、制御ユニットより出力される制御信号に応じ、演算ユニットを用いて算術・論理演算を実行する。かかるプロセッサ１は、制御に用いる各種情報が格納される制御レジスタ、既にアクセスしたメモリ２等の内容を一時的に格納可能なキャッシュ、及び、仮想記憶のページテーブルのキャッシュとしての機能を果たすＴＬＢを備える。なお、プロセッサ１は、ＣＰＵ（Central Processing
Unit）コアが複数設けられている構成でもよい。
【００１３】
メモリ２は、例えばＲＡＭ（Random Access Memory）等の記憶手段であり、プロセッサ１で実行されるプログラムがロードされるとともに、プロセッサ１の処理に用いるデータが格納されるメインメモリである。また、ストレージ３は、例えばＨＤＤ（Hard Disk Drive）やフラッシュメモリ等の記憶手段であり、プログラムや各種データが格納される。可搬記憶媒体駆動装置４は、可搬記憶媒体７に記憶されたデータやプログラムを読み出す装置である。可搬記憶媒体７は、例えば磁気ディスク、光ディスク、光磁気ディスク又はフラッシュメモリ等である。なお、プロセッサ１は、メモリ２やストレージ３と協働しつつ、ストレージ３や可搬記憶媒体７に格納されたプログラムを実行する。なお、プロセッサ１が実行するプログラムや、アクセス対象となるデータは、当該情報処理装置と通信可能な他の装置に格納されていてもよい。
【００１４】
入出力装置５は例えばキーボード等やディスプレイ等であり、ユーザ操作等による動作命令を受け付ける一方、情報処理装置による処理結果を出力する。通信インタフェース６は例えばＬＡＮ（Local Area Network）カード等であり、外部とのデータ通信を可能にする。上述した情報処理装置の各構成要素は、バス８で接続されている。
【００１５】
図２は、本実施形態に係るクロック周波数制御装置を含んだ情報処理装置の機能ブロック図の一例である。本情報処理装置は、プロセッサ１０、メモリ２０、オペレーティングシステム３０、デバイスドライバ４０及びアプリケーション処理部５０を有する。プロセッサ１０は、図１のプロセッサ１に対応し、メモリ２０は、図１のメモリ２に対応する。
【００１６】
プロセッサ１０は、性能モニタリングカウンタ１１及びオーバークロック機能設定レジスタ１２を備えている。
【００１７】
性能モニタリングカウンタ１１は、プロセッサ１０において発生するイベント等の発生回数をカウントするカウンタである。性能モニタリングカウンタ１１でカウントするイベントには、プロセッサ内部で発生するイベント及びプロセッサ外部とのやり取りで発生するイベントの両方が含まれる。この性能モニタリングカウンタ１１のカウント値は、換言すれば、プロセス処理におけるプロセッサの動作特性を示す特性値である。本実施形態では、性能モニタリングカウンタ１１は、クロック周波数の制御をするための判断基準となるプロセッサの動作特性を特定可能なイベントの一例として、実行命令数、メモリアクセス数及びＩ／Ｏアクセス数のカウントを行う。また、性能モニタリングカウンタ１１には、所定のイベントが発生したときに所定のベクタに割り込み処理を発生させるように設定をすることが可能である。本実施形態では、性能モニタリングカウンタ１１が、ＴＬＢのエントリの無効化（ＴＬＢフラッシュ）を検出したときに、後述する割り込みハンドラ４２を呼び出すように設定をする。なお、ＴＬＢフラッシュを検出することによりプロセスの切り替えを検出する技術については、特開２００９−２２３４５１号公報に記載の技術を用いることができる。かかる技術を用いることにより、オペレーティングシステム３０を改変することなくプロセスの切り替えを検出でき、オーバーヘッドも少なく抑えることができる。
【００１８】
オーバークロック機能設定レジスタ１２は、プロセッサ１０におけるオーバークロック機能（即ち、プロセッサを通常のクロック周波数を上回るクロック周波数で動作させる機能）を有効にするか又は無効にするかの制御を行うレジスタである。
【００１９】
メモリ２０には、閾値テーブル２１と、動作特性テーブル２２が格納される。
【００２０】
閾値テーブル２１は、プロセス処理におけるプロセッサの動作特性を示す性能モニタリングカウンタ１１のカウント値との比較において、クロック周波数を増加させるか否かを判定するための閾値等が格納されるテーブルである。
【００２１】
動作特性テーブル２２は、性能モニタリングカウンタ１１のカウント値が、プロセスごとに設定されるテーブルである。
【００２２】
なお、閾値テーブル２１及び動作特性テーブル２２に格納されている情報は、テーブル形式に限らず、いかなる形式でメモリ２０に記憶されていてもよい。特に、閾値については、少なくともクロック周波数を増加させるか否かの判定処理において使用可能なパラメータであればよい。
【００２３】
デバイスドライバ４０は、オペレーティングシステム３０と連携して動作し、カウンタ設定部４１と、割り込みハンドラ４２と、を有する。
【００２４】
カウンタ設定部４１は、後述するアプリケーション処理部５０から、性能モニタリングカウンタ１１によるイベント発生回数の計測の開始又は終了指示を受信したときに、性能モニタリングカウンタ１１のイベント設定を行う。性能モニタリングカウンタ１１のイベ
ント設定とは、具体的には、性能モニタリングカウンタ１１がカウントを行うイベントや、イベントが発生したときのアクション等の設定である。
【００２５】
割り込みハンドラ４２は、プロセッサ１０による制御の割り当て対象のプロセス、すなわちプロセッサ１０により制御されるプロセスが切り替わってＴＬＢフラッシュが発生したときに、割り込み処理を行う。割り込みハンドラ４２は、プロセス特定部４３、記憶部４４及びクロック周波数制御部４５を有する。
【００２６】
プロセス特定部４３は、プロセッサ１０による制御の割り当て対象の切り替え前後のプロセスを識別するための情報をオペレーティングシステム３０から取得し、切り替え前後のプロセスを特定する。なお、以下、プロセッサ１０による制御の割り当て対象の切り替え前のプロセスを「切り替え前プロセス」、切り替え後のプロセスを「切り替え後プロセス」という。
【００２７】
記憶部４４は、プロセス特定部４３が特定した切り替え前プロセスにつき、性能モニタリングカウンタ１１のカウント値をメモリ２０の動作特性テーブル２２に格納する（すなわち、記憶手段に記憶させる）。
【００２８】
クロック周波数制御部４５は、動作特性テーブル２２に格納された性能モニタリングカウンタ１１のカウント値のうち、プロセス特定部４３が特定した切り替え後プロセスに対応するカウント値を取得する。一方で、クロック周波数制御部４５は、閾値テーブル２１に格納された閾値を取得する。そして、クロック周波数制御部４５は、計測対象となるイベントごとに、動作特性テーブル２２から取得した切り替え後プロセスのカウント値と閾値とを比較する。さらに、クロック周波数制御部４５は、その比較結果に応じて、オーバークロック機能設定レジスタ１２の値を、オーバークロック機能を有効にする値又はオーバークロック機能を無効にする値のいずれかに設定する。これにより、オーバークロック機能が有効又は無効のいずれかに制御される。換言すれば、クロック周波数制御部４５は、切り替え後プロセスのプロセス処理におけるプロセッサの動作特性に応じて、オーバークロック機能を有効にするか無効にするかの制御を行う。
【００２９】
アプリケーション処理部５０は、オペレーティングシステム３０上において各種アプリケーションの処理を行う。このアプリケーション処理部５０は、アプリケーションの１つとして管理プログラムの処理を行う。管理プログラムは、性能モニタリングカウンタ１１によるイベント発生回数の計測の開始又は終了指示、クロック周波数制御の開始指示又は終了指示を行う。さらに、管理プログラムは、閾値テーブル２１への閾値の設定等を行う。アプリケーション処理部５０は、これらの処理を、入出力装置５を介して受け付けたユーザからの入力に基づいて行ってもよいし、単に管理プログラムの実行が開始されたことを契機として行ってもよい。
【００３０】
図３は、本実施形態に係る性能モニタリングカウンタ１１の構造を示す。性能モニタリングカウンタ１１は、カウント値及びイベント設定の組み合わせで実装されている。イベント設定は、（Ａ）発生回数をカウントする対象（計測対象）のイベント、（Ｂ）イベントが発生したときに割り込み処理を行うか否か、（Ｃ）割り込み処理を発生させる場合、イベントが何回発生するごとに割り込み処理を行うか、の設定を含む。例えば、図３に示す１つめの性能モニタリングカウンタ１１１のイベント設定には、「TLB Flash／割り込みＯＮ／１回毎」と設定されている。このイベント設定は、「（Ａ）ＴＬＢフラッシュの発生回数をカウントする（Ｂ）ＴＬＢフラッシュが発生したときに割り込み処理を行う（Ｃ）割り込み処理を、ＴＬＢフラッシュが１回発生する毎に行う」ことを意味している。図３に示す他の性能モニタリングカウンタ１１２〜１１４も同様であり、２つめの性能モニタリングカウンタ１１２は、実行命令の発生回数をカウントする。また、３つめの性能
モニタリングカウンタ１１３は、メモリアクセス（Ｌ２キャッシュ又はＬ３キャッシュミス）の発生回数をカウントする。４つめの性能モニタリングカウンタ１１４は、Ｉ／Ｏアクセスの発生回数をカウントする。
【００３１】
図４は、本実施形態に係る閾値テーブル２１の構造を示す。閾値テーブル２１は、図４に示すように、性能モニタリングカウンタ１１で発生回数をカウントする計測対象のイベントと、そのイベント内容に応じた閾値と、クロック周波数を増加させるか否かを、閾値との比較においてどのように判定するかを示す判定基準と、を含む。なお、この閾値は、イベントのクロック単位（すなわち、単位時間（１クロック）あたり）の発生回数と比較するための閾値である。判定基準には、具体的には「１」又は「２」のいずれかの値が格納される。判定基準が「１」の場合には、イベントのクロック単位の発生回数が閾値よりも大きいときに、クロック周波数を増加させる判定基準を満たすものとする。一方、判定基準が「２」の場合には、イベントのクロック単位の発生回数が閾値以下であるときに、クロック周波数を増加させる判定基準を満たすものとする。
【００３２】
図５は、本実施形態に係る動作特性テーブル２２の構造を示す。動作特性テーブル２２は、図５に示すように、プロセスを一意に特定する識別子（ＰＩＤ）と、性能モニタリングカウンタ１１による計測期間におけるクロック発生数（積算値）と、性能モニタリングカウンタ１１による計測対象のイベントである実行命令数、メモリアクセス数及びＩ／Ｏアクセスと、を含む。実行命令数、メモリアクセス数及びＩ／Ｏアクセスは、それぞれ、計測期間における積算値及びクロック単位のカウント値を含む。
【００３３】
次に、本実施形態に係るクロック周波数制御装置を含んだ情報処理装置における各構成要素の処理の一例につき、図６の（１）〜（７）を参照して説明する。
【００３４】
（１）アプリケーション処理部５０は、管理プログラムを実行し、性能モニタリングカウンタ１１における計測の開始指示及びクロック周波数制御の開始指示を、デバイスドライバ４０のカウンタ設定部４１に送信する。この送信処理は、上述したように、入出力装置５を介してユーザから指示が入力されたことを契機として行ってもよいし、単に管理プログラムの実行開始を契機として行ってもよい。
【００３５】
（２）また、アプリケーション処理部５０は、メモリ２０の閾値テーブル２１に、計測対象の各イベントの閾値及び判定基準を設定する。ここで、アプリケーション処理部５０は、入出力装置５を介してユーザから閾値及び判定基準が入力された場合には入力を受け付け、その入力された閾値及び判定基準を閾値テーブル２１に設定してもよい。なお、上述したように、閾値及び判定基準は必ずしもテーブルの形式で保持されている必要はない。また、閾値及び判定基準は、この段階で必ずしもメモリ２０に保持される必要があるものでもなく、後述する割り込みハンドラ４２におけるカウント値と閾値との比較処理において使用可能であればよい。
【００３６】
（３）カウンタ設定部４１は、アプリケーション処理部５０から受信した指示に応じ、性能モニタリングカウンタ１１の設定を行う。具体的には、性能モニタリングカウンタ１１のイベント設定に、図３で示したような内容の設定を行う。さらに、カウンタ設定部４１は、ＴＬＢフラッシュ発生時、すなわち、プロセス切り替え時に割り込みハンドラ４２が呼び出されるように、割り込みハンドラ４２のアドレスを割込みベクタ（図示略）に設定する。そして、デバイスドライバ４０及びプロセッサ１０は、プロセス処理におけるプロセッサの動作特性の計測及びクロック周波数制御を開始する。
【００３７】
（４）ここで、オペレーティングシステム３０によりＴＬＢフラッシュが行われたことを性能モニタリングカウンタ１１が検出し、ＴＬＢフラッシュのカウント値が増加すると、性能モニタリングカウンタ１１のイベント設定に基づき、割り込みハンドラ４２の割り込み処理が開始する。換言すれば、プロセッサ１０による制御の割り当て対象のプロセスの切り替えが発生したときに、割り込みハンドラ４２の割り込み処理が発生する。
【００３８】
（５）割り込みハンドラ４２は、切り替え前プロセス及び切り替え後プロセスを特定する
。そして、割り込みハンドラ４２は、性能モニタリングカウンタ１１の計測対象のイベントのカウント値を読み出し、読み出したカウント値を、切り替え前プロセスの動作特性を示すカウント値として動作特性テーブル２２に格納する。
【００３９】
（６）一方、割り込みハンドラ４２は、動作特性テーブル２２を参照して、切り替え後プロセスの動作特性を示す計測対象のイベントのカウント値を取得する一方、閾値テーブル２１を参照して、計測対象のイベントの判定基準及び閾値を取得する。そして、計測対象のイベントのそれぞれについて、取得した判定基準に基づき、カウント値と閾値とを比較する。
【００４０】
（７）さらに、割り込みハンドラ４２は、（６）の比較の結果、計測対象のイベントのうちいずれかのカウント値が、クロック周波数を増加させる判定基準を満たす場合には、オーバークロック機能設定レジスタ１２に、オーバークロック機能を有効にする値を設定する。一方、割り込みハンドラ４２は、（６）の比較の結果、計測対象の全てのイベントのカウント値が、クロック周波数を増加させる判定基準を満たさない場合には、オーバークロック機能設定レジスタ１２に、オーバークロック機能を無効にする値を設定する。換言すれば、割り込みハンドラ４２は、切り替え後プロセスにおいて、オーバークロック状態にすることが処理速度の向上に有効である場合には、オーバークロック機能を有効にする一方、オーバークロック状態にすることが処理速度の向上にあまり有効でない場合には、オーバークロック機能を無効にする。
【００４１】
なお、図６には示していないが、アプリケーション処理部５０は、性能モニタリングカウンタ１１における計測の終了指示及びクロック周波数制御の終了指示を、デバイスドライバ４０のカウンタ設定部４１に送信する。この処理も、上述したように、入出力装置５を介してユーザから指示が入力されたことを契機として行ってもよい。そして、カウンタ設定部４１及び割り込みハンドラ４２を含むデバイスドライバ４０並びに性能モニタリングカウンタ１１を含むプロセッサ１０は、プロセス処理におけるプロセッサの動作特性の計測及びクロック周波数制御を終了する。
【００４２】
次に、割り込みハンドラ４２の処理を、図７のフローチャートを参照して詳述する。なお、この処理は、上述した図６の説明における（５）〜（７）に対応するものである。
【００４３】
ステップ１（図ではＳ１と略記する。以下同様）では、プロセス特定部４３が、切り替え前プロセスのプロセス識別子及び切り替え後プロセスのプロセス識別子をオペレーティングシステム３０から取得して、切り替え前プロセス及び切り替え後プロセスを特定する。
【００４４】
ステップ２では、記憶部４４が、性能モニタリングカウンタ１１の計測対象のイベントのカウント値を読み出す。この読み出した値は、切り替え前プロセスについて計測されたカウント値である。記憶部４４は、動作特性テーブル２２に格納されているカウント値のうち、プロセス特定部４３が特定した切り替え前プロセスのプロセス識別子に対応するカウント値に、読み出したカウント値を反映させる。具体的には、記憶部４４は、動作特性テーブル２２に格納された、切り替え前プロセスのプロセス識別子に対応するクロック発生数の積算値に、前回のプロセス切り替えから今回のプロセス切り替えまでのクロック発生数を加算する。なお、前回のプロセス切り替えから今回のプロセス切り替えまでのクロック発生数は、プロセッサ１０においてカウンタ等で保持しておけばよい。また、記憶部４４は、動作特性テーブル２２に格納されたカウント値のうち、切り替え前プロセスのプロセス識別子に対応する実行命令数の積算値に、性能モニタリングカウンタ１１の実行命令数のカウント値を加算する。さらに、記憶部４４は、実行命令数の積算値をクロック発生数の積算値で除算して、クロック単位、すなわち、単位時間あたりの実行命令数を算出する。なお、この単位時間あたりの実行命令数は、単位時間あたりの実行命令数の平均値となる。そして、記憶部４４は、これらの算出した値で、性能モニタリングカウンタ１１
のクロック単位の実行命令数を更新する。また、記憶部４４は、メモリアクセス数及びＩ／Ｏアクセス数についても、実行命令数と同様に処理を行う。
【００４５】
なお、動作特性テーブル２２に、切り替え前プロセスのプロセス識別子に対応するカウント値が登録されていない場合には、記憶部４４は、次のように処理を行う。すなわち、記憶部４４は、性能モニタリングカウンタ１１から読み出したカウント値を積算値とするとともに、その積算値を、前回のプロセス切り替えから今回のプロセス切り替えまでのクロック発生数で除算してクロック単位のカウント値を算出する。そして、記憶部４４は、前回のプロセス切り替えから今回のプロセス切り替えまでのクロック発生数並びにカウント値の積算値及びクロック単位のカウント値を、プロセス識別子に対応付けて動作特性テーブル２２に新たに格納する。
【００４６】
また、各イベントのカウント値の積算値は、計測している期間全体の積算値に限定されるものではなく、例えば、所定期間分（所定数のクロック発生数分）のカウント値が積算されるごとに、積算値をリセットしてもよい。さらには、記憶部４４は、切り替え前プロセスのプロセス識別子に対応するカウント値が動作特性テーブル２２に既に登録されている場合にも、上記のような新たにカウント値を格納する場合における処理と同様に、直近の計測期間のみのカウント値で動作特性テーブル２２を更新してもよい。
【００４７】
ステップ３では、クロック周波数制御部４５が、動作特性テーブル２２を参照し、プロセス特定部４３により特定された切り替え後プロセスのプロセス識別子に対応するカウント値が動作特性テーブル２２に格納されているか否かを判定する。クロック周波数制御部４５は、切り替え後プロセスのプロセス識別子に対応するカウンタ値が動作特性テーブル２２に登録されていればステップ４に進み（Ｙｅｓ）、登録されていなければステップ７に進む（Ｎｏ）。
【００４８】
ステップ４では、クロック周波数制御部４５が、動作特性テーブル２２に格納されているカウント値のうち、切り替え後プロセスのプロセス識別子に対応するカウント値を読み出す。
【００４９】
ステップ５では、クロック周波数制御部４５が、計測対象のイベントのそれぞれにつき、動作特性テーブル２２から読み出した、切り替え後プロセスのプロセス識別子に対応するカウント値と、閾値テーブル２１の閾値と、を比較する。具体的には、クロック周波数制御部４５は、計測対象のイベントである実行命令数、メモリアクセス数及びＩ／Ｏアクセス数のそれぞれにつき、閾値テーブル２１に格納された判断基準に基づいて、切り替え後プロセスのクロック単位のカウント値と閾値との比較を行う。そして、クロック周波数制御部４５は、計測対象のイベントの少なくともいずれか１つにおけるクロック単位のカウント値が、クロック周波数を増加させる判定基準を満たしているか否かを判定する。具体的には、閾値テーブル２１に格納された判定基準が「１」である実行命令数については、クロック単位の発生回数が閾値よりも大きいか否かを判定する。一方、閾値テーブル２１に格納された判定基準が「２」であるメモリアクセス数及びＩ／Ｏアクセス数については、クロック単位の発生回数が閾値以下であるか否かを判定する。そして、クロック周波数制御部４５は、計測対象のイベントの少なくともいずれか１つにおけるクロック単位のカウント値が判定基準を満たしていれば、ステップ６に進み（Ｙｅｓ）、計測対象の全てのイベントのクロック単位のカウント値が判定基準を満たしていなければ、ステップ７に進む（Ｎｏ）。なお、クロック周波数制御部４５は、上述のような判定方法に限らず、例えば、計測対象の全てのイベントにおけるクロック単位のカウント値がクロック周波数を増加させる判定基準を満たしているときにのみ、ステップ６に進むようにしてもよい。
【００５０】
ステップ６では、クロック周波数制御部４５が、オーバークロック機能設定レジスタ１
２の値を、オーバークロック機能を有効にする値に設定する。換言すれば、クロック周波数制御部４５は、クロック周波数が通常のクロック周波数を超えて増加し得るように制御を行う。
【００５１】
ステップ７では、クロック周波数制御部４５が、オーバークロック機能設定レジスタ１２の値を、オーバークロック機能を無効にする値に設定する。換言すれば、クロック周波数制御部４５は、クロック周波数が通常のクロック周波数を超えないように制御を行う。
【００５２】
ステップ８では、クロック周波数制御部４５が、性能モニタリングカウンタ１１のカウント値を初期化する。このように、性能モニタリングカウンタ１１のカウント値が、プロセスの切り替えごとに発生する割り込み処理において初期化されることにより、性能モニタリングカウンタ１１は、プロセス毎のカウント値を保持できることとなる。
【００５３】
かかるクロック周波数制御技術によれば、プロセス毎（すなわち、アプリケーション毎）のイベントの発生回数が性能モニタリングカウンタ１１で計測され、動作特性テーブル２２に格納される。そして、プロセスの切り替えが発生したときに、切り替え後プロセスについて動作特性テーブル２２に格納された性能モニタリングカウンタ１１のカウント値と閾値との比較結果に基づいて、オーバークロック機能を有効にするか無効にするかが決定され、クロック周波数が制御される。このため、マルチタスク処理においてプロセスにプロセッサの制御が割り当てられるときに、そのプロセス処理におけるプロセッサの動作特性に応じて、オーバークロック機能のＯＮとＯＦＦが切り替えられることとなる。
【００５４】
具体的には、例えば、単位時間あたりの実行命令数が多くカウントされるプロセスは、クロック周波数を増加させると、効果的に処理速度が向上する傾向にある。逆に、単位時間あたりのメモリアクセス数やＩ／Ｏアクセス数が多くカウントされるプロセスは、クロック周波数を増加させても、処理速度が向上しない傾向にある。本実施形態に係るクロック周波数制御技術によれば、プロセスごとにこれらのイベントが発生する回数と閾値とが比較される。そして、イベントに応じた判定基準に基づいて、オーバークロック機能がＯＮ又はＯＦＦのいずれかに制御され、クロック周波数が切り替えられる。このため、プロセスの動作特性に応じて、プロセッサにおける処理効率を効果的に向上させる一方で、無駄な消費電力を抑制することができる。
【００５５】
なお、上記実施形態では、クロック周波数の制御を、プロセッサに一般的に具備されているオーバークロック機能を有効にするか無効にするかを切り替えることで簡易に実現している。しかしながら、クロック周波数の制御方法はかかる方法に限定されるものではなく、いかなる方法を用いてもよい。
【００５６】
また、上記実施形態では、プロセスの切り替えを検出する毎に、切り替え前プロセスについての性能モニタリングカウンタ１１のカウント値を動作特性テーブル２２に格納している。これにより、直近のプロセッサにおける動作状態を動作特性テーブル２２に反映させることができ、動作特性テーブル２２の各プロセスのカウント値の精度が高くなる。しかしながら、動作特性テーブル２２のカウント値の初期化はプロセスの切り替え毎に行う必要があるものの、動作特性テーブル２２への格納については、必ずしもプロセスの切り替え時に行う必要があるものではない。例えば、処理のオーバーヘッドを低減させるべく、プロセスの切り替えが複数回行われる毎に、動作テーブル２２へのカウント値の反映を行ってもよい。さらには、例えば、予め管理プログラムで、アプリケーションごとにプロセスの動作特性を示す特性値を保持しておき、アプリケーション実行時に、その特性値をプロセス識別子に対応付けて動作特性テーブル２２に格納するようにしてもよい。
【００５７】
さらに、計測対象とするイベントを、ユーザにより設定可能としてもよい。具体的には
、例えば、アプリケーション処理部５０の管理プログラムが、入出力装置５から入力されたイベント設定情報を受け付け、入力されたイベント設定情報で指定されたイベントを、動作特性テーブル２２の項目として設定してもよい。一方で、管理プログラムは、カウンタ設定部４１に対し、性能モニタリングカウンタ１１において当該入力されたイベントの発生回数をカウントするように指示を送信し、カウンタ設定部４１が、かかる指示内容を性能モニタリングカウンタ１１のイベント設定に反映させればよい。このように、計測対象のイベントをユーザが任意に切り替えることができるようにすることで、クロック周波数制御における汎用性及び柔軟性が向上する。
【００５８】
上述した情報処理装置の機能的構成及び物理的構成は、上述の態様に限るものではなく、例えば、各機能や物理資源を統合して実装したり、逆に、さらに分散して実装したりすることも可能である。
【００５９】
以上の実施形態に関し、更に以下の付記を開示する。
【００６０】
（付記１）プロセッサによって制御されるプロセスの切り替えが検出されたときに、切り替え後のプロセスを特定し、プロセスごとに対応付けて記憶手段に記憶された、各プロセス処理における前記プロセッサの動作特性を示す特性値のうち、特定された前記切り替え後のプロセスに対応する特性値を該記憶手段から取得し、取得した前記切り替え後のプロセスに対応する特性値と所定閾値とを比較し、比較結果に応じて、前記プロセッサのクロック周波数の制御を行う処理をコンピュータに実行させるクロック周波数制御プログラム。
【００６１】
（付記２）前記クロック周波数の制御を行う処理は、前記比較結果に応じて前記プロセッサのオーバークロック機能を有効又は無効にする付記１に記載のクロック周波数制御プログラム。
【００６２】
（付記３）前記特性値は、所定時間内にプロセス処理において発生する所定イベントの発生回数である一方、前記所定閾値はイベント内容に応じた値であり、前記クロック周波数の制御を行う処理は、前記所定イベントに応じた判定基準に基づき、前記切り替え後のプロセスにおいて発生する前記所定イベントの発生回数と当該所定イベントの内容に応じた所定閾値との比較結果に応じて、前記プロセッサのクロック周波数の制御を行う付記１又は２に記載のクロック周波数制御プログラム。
【００６３】
（付記４）前記所定イベントは、ユーザによる入力で指定されたイベントである付記３に記載のクロック周波数制御プログラム。
【００６４】
（付記５）前記特性値及び所定閾値は、クロック単位の実行命令数である付記１〜４のいずれか１つに記載のクロック周波数制御プログラム。
【００６５】
（付記６）前記特性値及び所定閾値は、クロック単位のメモリアクセス数である付記１〜５のいずれか１つに記載のクロック周波数制御プログラム。
【００６６】
（付記７）前記特性値及び所定閾値は、クロック単位のＩ／Ｏアクセス数である付記１〜６のいずれか１つに記載のクロック周波数制御プログラム。
【００６７】
（付記８）前記プロセスを特定する処理は、プロセスの切り替え前まで前記プロセッサによって制御されていた切り替え前のプロセスをさらに特定し、特定した前記切り替え前のプロセスについて計測された特性値を、前記記憶手段に記憶させる処理を、前記コンピュータにさらに実行させる付記１〜７のいずれか１つに記載のクロック周波数制御プログ
ラム。
【００６８】
（付記９）前記クロック周波数の制御を行う処理は、ユーザにより入力された閾値と前記特性値とを比較する付記１〜８のいずれか１つに記載のクロック周波数制御プログラム。
【００６９】
（付記１０）プロセッサによって制御されるプロセスの切り替えが検出されたときに、切り替え後のプロセスを特定する手段と、プロセスごとに対応付けて記憶手段に記憶された、各プロセス処理における前記プロセッサの動作特性を示す特性値のうち、特定された前記切り替え後のプロセスに対応する特性値を該記憶手段から取得する手段と、取得した前記切り替え後のプロセスに対応する特性値と所定閾値とを比較し、比較結果に応じて、プロセッサのクロック周波数の制御を行う手段と、を備えたクロック周波数制御装置。
【符号の説明】
【００７０】
１０  プロセッサ
１１  性能モニタリングカウンタ
１２  オーバークロック機能設定レジスタ
２０  メモリ
２１  閾値テーブル
２２  動作特性テーブル
３０  オペレーティングシステム
４０  デバイスドライバ
４１  カウンタ設定部
４２  割り込みハンドラ
４３  プロセス特定部
４４  記憶部
４５  クロック周波数制御部
５０  アプリケーション処理部
【図１】
0005668505.tif 000002
【図２】
0005668505.tif 000003
【図３】
0005668505.tif 000004
【図４】
0005668505.tif 000005
【図５】
0005668505.tif 000006
【図６】
0005668505.tif 000007
【図７】
0005668505.tif 000008