(57)【要約】【課題】キャッシュヒット率に応じて遅延時間を発生することなしにＣＰＵクロックを制御する情報処理装置の制御方法を提供する。【解決手段】本発明は、キャッシュメモリを有するプロセッサと、プロセッサへクロック信号を供給するクロック供給部とを備える情報処理装置の制御方法であって、前記キャッシュメモリにおけるヒット率を予測するキャッシュヒット率予測部２０１と、予測したヒット率に応じてＣＰＵクロック周波数を決定する周波数決定部２０３と、周波数にクロック信号を変更するようクロック供給部を制御するクロック制御部２０５とを備える。【選択図】図２
2008009647.tif 000002
【特許請求の範囲】
【請求項１】
キャッシュメモリを有するプロセッサと、プロセッサへクロック信号を供給するクロック供給部とを備える情報処理装置の制御方法であって、
前記キャッシュメモリにおけるヒット率を予測する予測ステップと、
予測したヒット率に応じて、前記クロック信号の周波数を変更するようクロック供給部を制御する制御ステップと
を有することを特徴とする情報処理装置の制御方法。
【請求項２】
前記予測ステップにおいて、
前記プロセッサにおける第１の処理の発生を検出し、
検出した前記第１の処理の発生によって開始する第２の処理の種類を判別し、
判別した種類に応じて前記ヒット率を予測する
ことを特徴とする請求項１記載の情報処理装置の制御方法。
【請求項３】
前記予測ステップにおいて、さらに、
前記第１の処理が所定の時間検出されない場合には前記ヒット率が所定値よりも上がると予測する
ことを特徴とする請求項２記載の情報処理装置の制御方法。
【請求項４】
前記第１の処理は、オペレーティングシステムにおけるイベントであり、
前記予測ステップにおいて、
前記第２の処理が記録媒体とメモリとの間のデータ転送を行う処理であると判別された場合に、ヒット率が所定値よりも下がると予測する
ことを特徴とする請求項２記載の情報処理装置の制御方法。
【請求項５】
前記予測ステップにおいて、前記データ転送のサイズに応じてヒット率を予測する
ことを特徴とする請求項４記載の情報処理装置の制御方法。
【請求項６】
前記予測ステップにおいて、さらに、
前記第２の処理が新たなアプリケーションプログラムの起動であると判別された場合、前記第２の処理がキャッシュメモリのフラッシュであると判別された場合、または前記第２の処理がメモリ間の領域コピーであると判別された場合に、ヒット率が所定値よりも下がると予測する
ことを特徴とする請求項４記載の情報処理装置の制御方法。
【請求項７】
前記情報処理装置は、デマンドロード方式の仮想記憶用に仮想アドレスを実アドレスに変換するメモリ管理部を備え、
前記第１の処理は、前記メモリ管理部でのアクセス違反であり、
前記予測ステップにおいて、
前記第２の処理がデマンドロードを行う処理であると判別された場合に、ヒット率が所定値よりも下がると予測する
ことを特徴とする請求項２記載の情報処理装置の制御方法。
【請求項８】
前記メモリ管理部は、さらに、仮想アドレスと対応する実アドレスとを一時的にキャッシュする、ソフトウェアテーブルウォーク方式のテーブルを有し、
前記第１の処理は、前記テーブルでのアクセスミスであり、
前記予測ステップにおいて、
前記第２の処理が前記テーブルの更新処理であると判別された場合に、ヒット率が所定値よりも下がると予測する
ことを特徴とする請求項７記載の情報処理装置の制御方法。
【請求項９】
前記第１の処理は割込み処理であり、
前記予測ステップにおいて、
前記第２の処理が割込みの種類を判別する前処理であると判別された場合に、ヒット率が所定値よりも高いと予測し、
前記第２の処理が判別された割込みの種類に固有の個別処理であると判別された場合に、ヒット率が所定値よりも低いと予測する
ことを特徴とする請求項２記載の情報処理装置の制御方法。
【請求項１０】
前記予測ステップにおいて、さらに、
前記個別処理が入出力部の制御を行う場合に、前記入出力部の種類を判別し、
判別した入出力部の種類に応じてヒット率を予測する
ことを特徴とする請求項９記載の情報処理装置の制御方法。
【請求項１１】
前記情報処理装置の制御方法は、さらに、割込みの発生頻度を種類別に計測するステップを有し、
前記予測ステップにおいて、さらに、判別された前記個別処理の発生頻度に応じてヒット率を予測する
ことを特徴とする請求項９記載の情報処理装置の制御方法。
【請求項１２】
前記第１の処理はシステムコールであり、
前記予測ステップにおいて、
前記第２の処理としてのシステムコール番号を判別し、
判別された番号に応じてヒット率を予測する
ことを特徴とする請求項２記載の情報処理装置の制御方法。
【請求項１３】
前記情報処理装置は、キャッシュメモリのヒット率をモニタするモニタ部を備え、
前記情報処理装置の制御方法は、さらに、
アプリケーションプログラムの中断時に、中断したアプリケーションのヒット率を保存する保存ステップを有し、
前記第１の処理は中断していたアプリケーションプログラムの再開であり、
前記予測ステップにおいて、
再開すべきアプリケーションプログラムの種類を判別し、
判別したアプリケーションプログラムに関して保存されていたヒット率に応じて、再開後のヒット率を予測する
ことを特徴とする請求項２記載の情報処理装置の制御方法。
【請求項１４】
前記予測ステップにおいて、中断から再開までの時間に応じてヒット率を予測する
ことを特徴とする請求項１３記載の情報処理装置の制御方法。
【請求項１５】
前記情報処理装置は、キャッシュメモリのヒット率をモニタするモニタ部を備え、
前記予測ステップにおいて、モニタ部による過去のヒット率の履歴に基づいてヒット率を予測する
ことを特徴とする請求項１記載の情報処理装置の制御方法。
【請求項１６】
前記情報処理装置は、デマンドロード方式の仮想記憶用に仮想アドレスを実アドレスに変換するメモリ管理部を備え、
前記メモリ管理部は、さらに、仮想アドレスと対応する実アドレスとを一時的にキャッシュする、ハードウェアウォーク方式のテーブルを有し、
前記予測ステップにおいて、前記テーブルの更新頻度と、前記過去のヒット率の履歴とに基づいてヒット率を予測する
ことを特徴とする請求項２記載の情報処理装置の制御方法。
【請求項１７】
前記情報処理装置は、さらに、前記プロセッサに給電する電源部を有し、
前記制御ステップは、さらに、前記予測したヒット率に応じて、前記プロセッサに給電する電源電圧を変更するよう前記電源部を制御する
ことを特徴とする請求項１記載の情報処理装置の制御方法。
【請求項１８】
キャッシュメモリを有するプロセッサと、
プロセッサへクロック信号を供給するクロック供給手段と、
前記キャッシュメモリにおけるヒット率を予測する予測手段と、
予測したヒット率に応じて、前記クロック信号の周波数を変更するようクロック供給部を制御する制御手段と
を備えることを特徴とする情報処理装置。
【請求項１９】
プロセッサへクロック信号を供給するクロック供給部とを備えるコンピュータを制御するプログラムであって、
前記キャッシュメモリにおけるヒット率を予測する予測ステップと、
予測したヒット率に応じて、前記クロック信号の周波数を変更するようクロック供給部を制御する制御ステップと
をコンピュータに実行させるコンピュータ読み取り可能なプログラム。
【請求項２０】
第１のプログラムを第２のプログラムに変換するプログラム変換方法であって、
前記第２のプログラムは、キャッシュメモリを有するプロセッサと、プロセッサへクロック信号を供給するクロック供給部とを備える情報処理装置を対象とし
前記第１のプログラム中の所定区間におけるヒット率を予測する予測ステップと、
予測したヒット率に応じて、所定区間における前記クロック信号の周波数を指定する命令を前記第１のプログラムに追加することによって、第２プログラムを生成する
ことを特徴とするプログラム変換方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、キャッシュメモリを有するプロセッサと、プロセッサへクロック信号を供給するクロック供給部とを備える情報処理装置の制御方法、情報処理装置、プログラム、プログラム変換方法に関する。
【背景技術】
【０００２】
情報処理装置における消費電力制御に関する従来技術として、キャッシュヒット率に応じたＣＰＵのクロック周波数を制御する方法がある。この情報処理装置は、ＣＰＵのキャッシュヒット率を測定する専用ハードウェアを備え、キャッシュヒット率が高い場合にＣＰＵのクロック周波数を上げ、キャッシュヒット率が低い場合にはＣＰＵのクロック周波数を下げる。この方法を用いることで、クロック周波数が一定の場合に比べて、消費電力を効率的に抑制できることが可能となる。
【０００３】
図１２は従来の方式を用いた情報処理装置の構成を示すブロック図である。この情報処理装置は、キャッシュを内蔵するＣＰＵ０１０１と、キャッシュヒット率モニタ０１０２と、ＣＰＵのクロックを制御するクロック制御部０１０３とを備える。
【０００４】
以上のように構成された従来技術の情報処理装置において、以下にその動作を説明する。
【０００５】
キャッシュヒット率モニタ回路０１０２は、ＣＰＵ０１０１に搭載されたキャッシュのヒット率を求め、キャッシュヒット率情報０１０４としてクロック制御部０１０３へ入力する。クロック制御部０１０３はキャッシュヒット率情報０１０４に応じてＣＰＵ０１０１へ供給されるクロック０１０５の周波数を制御する。その際、クロック制御部０１０３はキャッシュヒット率が高い場合にＣＰＵのクロック周波数を上げ、キャッシュヒット率が低い場合にはＣＰＵのクロック周波数を下げる。これと同時に、クロック制御部０１０３は、ＣＰＵ０１０１に接続されるバスおよびメモリのクロック周波数を、キャッシュヒット率が高い場合にＣＰＵのクロック周波数を下げ、キャッシュヒット率が低い場合にはＣＰＵのクロック周波数を上げる。
【０００６】
これにより、ヒット率が高いときはＣＰＵが効率よく処理し、ヒット率が低いときはバス・メモリの速度を向上させる。言い換えれば、処理効率の向上と消費電力の低減とを同時に両立させようとしている。
【特許文献１】特開平１１−１３４０７７号公報
【特許文献２】特開平２０００−１４８５８２号公報
【特許文献３】特開平２００５−１１５７６９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
しかしながら上記従来技術によれば、キャッシュヒット率が変化してからＣＰＵのクロック周波数を制御するため、反応が遅いという問題がある。図１３は、キャッシュヒット率、ＣＰＵクロック周波数およびバス・メモリのクロック周波数の変化を示すグラフである。同図のように、キャッシュヒット率が変化してから、ＣＰＵクロック周波数およびバス・メモリのクロック周波数が変化するまでに遅延時間ｄが発生してしまう。遅延時間ｄは、キャッシュヒット率モニタ回路０１０２によるモニタ周期を短縮することにより、短縮すると考えれられる。しかし、モニタ周期を短くすれば、キャッシュヒット率の測定精度が劣化し、却って処理効率の向上または消費電力の低減を阻害する可能性がある。
【０００８】
このように上記従来技術では、キャッシュヒット率の変化からＣＰＵのクロック周波数の制御までの反応が遅いという問題を必然的に内在している。その結果、消費電力の低減は実現できても、処理効率の向上は十分に達成できていない。
【０００９】
上記の課題を解決するために、本発明は、キャッシュヒット率に応じて遅延時間を発生することなしにＣＰＵクロックを制御する情報処理装置の制御方法、情報処理装置、プログラム、プログラム変換方法を提供することを目的とする。
【課題を解決するための手段】
【００１０】
上記課題を解決するため本発明は、キャッシュメモリを有するプロセッサと、プロセッサへクロック信号を供給するクロック供給部とを備える情報処理装置の制御方法であって、前記キャッシュメモリにおけるヒット率を予測する予測ステップと、予測したヒット率に応じて、前記クロック信号の周波数を変更するようクロック供給部を制御する制御ステップとを有する。この構成によれば、予測したヒット率に応じてクロック信号の周波数を制御するので、キャッシュヒット率が変化してからＣＰＵのクロック周波数を制御するまでの遅延時間を解消することができる。その結果、トレードオフの関係にある消費電力の低減と処理効率の向上という両者を最適に満たすことができる。さらに、実際のキャッシュヒット率をモニタするための専用ハードウェアを実装しなくてもよいので、情報処理装置の回路面積化を小さくすることができる。例えば携帯端末装置の場合、電池の消耗を抑えることができ、しかも回路の小型化に適している。
【００１１】
ここで、前記予測ステップにおいて、前記プロセッサにおける第１の処理の発生を検出し、検出した前記第１の処理の発生によって開始する第２の処理の種類を判別し、判別した種類に応じて前記ヒット率を予測するようにしてもよい。この構成によれば、実際のキャッシュヒット率をモニタするための専用ハードウェアを実装しなくても、ソフトウェアまたはハードウェアによってヒット率を簡単に予測することができる。また、例えば、第２の処理の種類とヒット率とを対応させたヒット率テーブル等に予め用意しておけば、ヒット率を正確に予測することができる。
【００１２】
ここで、前記予測ステップにおいて、さらに、前記第１の処理が所定の時間検出されない場合には前記ヒット率が所定値よりも上がると予測するようにしてもよい。この構成によれば、第１の処理が所定の時間検出されない場合には、特にヒット率を下げる要因がなく徐々に上がっていくものとみなして、プロセッサの処理効率を向上させることができる。
【００１３】
ここで、前記第１の処理は、オペレーティングシステムにおけるイベントであり、前記予測ステップにおいて、前記第２の処理が記録媒体とメモリとの間のデータ転送を行う処理であると判別された場合に、ヒット率が所定値よりも下がると予測するようにしてもよい。この構成によれば、記録媒体とメモリとの間のデータ転送、例えば、記憶媒体やハードディスクに格納されたデータ（またはプログラム）をメモリへロードする場合に、ヒット率が所定値よりも下がると容易に予測することができる。
【００１４】
ここで、前記予測ステップにおいて、前記データ転送のサイズに応じてヒット率を予測するようにしてもよい。この構成によれば、データ転送サイズが大きいほどキャッシュヒット率は下がる傾向にあるので、予測をより正確にすることができる。
【００１５】
ここで、前記予測ステップにおいて、さらに、前記第２の処理が新たなアプリケーションプログラムの起動であると判別された場合、前記第２の処理がキャッシュメモリのフラッシュであると判別された場合、または前記第２の処理がメモリ間の領域コピーであると判別された場合に、ヒット率が所定値よりも下がると予測するようにしてもよい。この構成によれば、キャッシュメモリのフラッシュや、メモリ間の領域コピーでは、ヒット率は下がる傾向にあるので、ヒット率を容易に予測することができる。
【００１６】
ここで、前記情報処理装置は、デマンドロード方式の仮想記憶用に仮想アドレスを実アドレスに変換するメモリ管理部を備え、前記第１の処理は、前記メモリ管理部でのアクセス違反であり、前記予測ステップにおいて、前記第２の処理がデマンドロードを行う処理であると判別された場合に、ヒット率が所定値よりも下がると予測するようにしてもよい。この構成によれば、メモリ管理部でのアクセス違反によってデマンドロードを行う場合にはヒット率は下がる傾向にあるので、ヒット率を容易に予測することができる。
【００１７】
ここで、  前記メモリ管理部は、さらに、仮想アドレスと対応する実アドレスとを一時的にキャッシュする、ソフトウェアテーブルウォーク方式のテーブルを有し、前記第１の処理は、前記テーブルでのアクセスミスであり、前記予測ステップにおいて、前記第２の処理が前記テーブルの更新処理であると判別された場合に、ヒット率が所定値よりも下がると予測するようにしてもよい。この構成によれば、上記のテーブルの更新処理ではヒット率は下がる傾向にあるので、ヒット率を容易に予測することができる。
【００１８】
ここで、前記第１の処理は割込み処理であり、前記予測ステップにおいて、前記第２の処理が割込みの種類を判別する前処理であると判別された場合に、ヒット率が所定値よりも高いと予測し、前記第２の処理が判別された割込みの種類に固有の個別処理であると判別された場合に、ヒット率が所定値よりも低いと予測するようにしてもよい。この構成によれば、前処理は割込みの種類に依存せず共通の処理であるため、ヒット率が高い傾向があり、逆に個別処理では割込みの種類に依存するのでヒット率が低い傾向がある。これらにより、ヒット率を容易に予測することができる。
【００１９】
ここで、前記予測ステップにおいて、さらに、前記個別処理が入出力部の制御を行う場合に、前記入出力部の種類を判別し、判別した入出力部の種類に応じてヒット率を予測するようにしてもよい。この構成によれば、個別処理は入出力部の種類によって処理内容が異なり、ヒット率の変化度合いが異なることを利用して、ヒット率をより正確に予測することができる。
【００２０】
ここで、前記情報処理装置の制御方法は、さらに、割込みの発生頻度を種類別に計測するステップを有し、前記予測ステップにおいて、さらに、判別された前記個別処理の発生頻度に応じてヒット率を予測するようにしてもよい。この構成によれば、発生頻度が高いほどヒット率は高くなる傾向があることを利用し、ヒット率をより正確に予測することができる。
【００２１】
ここで、前記第１の処理はシステムコールであり、前記予測ステップにおいて、前記第２の処理としてのシステムコール番号を判別し、判別された番号に応じてヒット率を予測するようにしてもよい。この構成によれば、システムコールに起因するデバイスアクセスや、新規領域の獲得など、キャッシュヒット率が下がる傾向があるので、ヒット率を容易に予測することができる。また、システムコールはシステムコール番号で処理内容を区別しており、処理内容によってキャッシュヒット率の変化度合いが異なるため、ヒット率をより正確に予測することができる。
【００２２】
ここで、前記情報処理装置は、キャッシュメモリのヒット率をモニタするモニタ部を備え、前記情報処理装置の制御方法は、さらに、アプリケーションプログラムの中断時に、中断したアプリケーションのヒット率を保存する保存ステップを有し、前記第１の処理は中断していたアプリケーションプログラムの再開であり、前記予測ステップにおいて、再開すべきアプリケーションプログラムの種類を判別し、判別したアプリケーションプログラムに関して保存されていたヒット率に応じて、再開後のヒット率を予測するようにしてもよい。この構成によれば、保存されていたヒット率に応じて、再開後のヒット率を容易に予測することができる。
【００２３】
ここで、前記予測ステップにおいて、中断から再開までの時間に応じてヒット率を予測するようにしてもよい。この構成によれば、再開までの時間が長いほど、再開時において、キャッシュメモリに再開されるアプリケーションのデータが残っている可能性が低く、キャッシュヒット率が下がるため、再開後のヒット率を正確に予測することができる。
【００２４】
ここで、前記情報処理装置は、キャッシュメモリのヒット率をモニタするモニタ部を備え、前記予測ステップにおいて、モニタ部による過去のヒット率の履歴に基づいてヒット率を予測するようにしてもよい。この構成によれば、履歴に従って再開後のヒット率を正確に予測することができる。
【００２５】
ここで、前記情報処理装置は、デマンドロード方式の仮想記憶用に仮想アドレスを実アドレスに変換するメモリ管理部を備え、前記メモリ管理部は、さらに、仮想アドレスと対応する実アドレスとを一時的にキャッシュする、ハードウェアウォーク方式のテーブルを有し、前記予測ステップにおいて、前記テーブルの更新頻度と、前記過去のヒット率の履歴とに基づいてヒット率を予測するようにしてもよい。
【００２６】
ここで、前記情報処理装置は、さらに、前記プロセッサに給電する電源部を有し、前記制御ステップは、さらに、前記予測したヒット率に応じて、前記プロセッサに給電する電源電圧を変更するよう前記電源部を制御するようにしてもよい。この構成によれば、さらに、消費電力の低減を最適化にすることができる。
【００２７】
また、本発明の情報処理装置は、キャッシュメモリを有するプロセッサと、プロセッサへクロック信号を供給するクロック供給手段と、前記キャッシュメモリにおけるヒット率を予測する予測手段と、予測したヒット率に応じて、前記クロック信号の周波数を変更するようクロック供給部を制御する制御手段とを備える。
【００２８】
また、本発明のプログラムは、プロセッサへクロック信号を供給するクロック供給部とを備えるコンピュータを制御するプログラムであって、前記キャッシュメモリにおけるヒット率を予測する予測ステップと、予測したヒット率に応じて、前記クロック信号の周波数を変更するようクロック供給部を制御する制御ステップとをコンピュータに実行させる。
【００２９】
また、本発明のプログラム変換方法は、第１のプログラムを第２のプログラムに変換するプログラム変換方法であって、前記第２のプログラムは、キャッシュメモリを有するプロセッサと、プロセッサへクロック信号を供給するクロック供給部とを備える情報処理装置を対象とし前記第１のプログラム中の所定区間におけるヒット率を予測する予測ステップと、予測したヒット率に応じて、所定区間における前記クロック信号の周波数を指定する命令を前記第１のプログラムに追加することによって、第２プログラムを生成する。
【００３０】
ここで、前記所定区間は、第１の処理によって開始する第２の処理であり、前記予測ステップにおいて、前記第２の処理の種類を判別し、判別した種類に応じて前記第２の処理中の前記キャッシュメモリのヒット率を予測し、予測したヒット率に応じて、前記クロック供給部によるクロック信号の周波数を指定する命令を、第１の処理の末尾または第２の処理の先頭に追加するようにしてもよい。
【発明の効果】
【００３１】
本発明によれば、予測したヒット率に応じてクロック信号の周波数を制御するので、キャッシュヒット率が変化してからＣＰＵのクロック周波数を制御するまでの遅延時間を解消することができる。その結果、トレードオフの関係にある消費電力の低減と処理効率の向上という両者を最適に満たすことができる。さらに、実際のキャッシュヒット率をモニタするための専用ハードウェアを実装しなくてもよいので、情報処理装置の回路面積化を小さくすることができる。例えば携帯端末装置の場合、電池の消耗を抑えることができ、しかも回路の小型化に適している。
【発明を実施するための最良の形態】
【００３２】
本発明の実施例について、図面を参照して詳細に説明する。
【００３３】
（実施の形態１）
本実施の形態では、キャッシュメモリを有するプロセッサと、プロセッサへクロック信号を供給するクロック供給部と、プロセッサへ電源電圧を供給する電源部とを備え、キャッシュメモリにおけるヒット率を予測し、予測したヒット率に応じてクロック信号の周波数を変更するようクロック供給部を制御し、予測したヒット率に応じて電源電圧を変更するよう電源部を制御する情報処理装置について説明する。
【００３４】
図１は、第１の実施形態における情報処理装置の構成を示すブロック図である。この嬢処理装置は、ＣＰＵ１０１、メモリ１０４、記憶媒体１１１、割込みコントローラ１１２、クロック供給部１５０および電源部１５１を備える。
【００３５】
ＣＰＵ１０１は、キャッシュメモリ１６０と制御部１６１とを備える。
【００３６】
キャッシュメモリは、データキャッシュまたは命令キャッシュとして用いられる。
【００３７】
制御部１６１は、キャッシュメモリ１６０におけるヒット率を予測し、そのヒット率に応じてクロック信号の周波数を決定し、決定した周波数に変更するようクロック供給部１５０を制御し、また、決定した周波数に応じて電源電圧を決定し、その電源電圧に変更するよう電源部１５１を制御する。
【００３８】
図２は、制御部１６１の詳細な構成を示すブロック図である。制御部１６１は、キャッシュヒット率予測部２０１、周波数決定部２０３、クロック制御部２０５、電圧決定部２０６、電圧制御部２０８を備える。制御部１６１のこれらの機能は、オペレーティングシステム（ＯＳ）の一部分に追加された機能として説明する。まず、制御部１６１の概略の動作について説明する。
【００３９】
図３は、制御部１６１の概略動作を示すフローチャートである。キャッシュヒット率予測部２０１は、ＣＰＵ１０１における第１の処理の発生を検出し（Ｓ３０）、検出した第１の処理の発生によって開始または呼び出される第２の処理の種類を判別し（Ｓ３２）、判別した種類に応じて前記ヒット率を予測する（Ｓ３４）。キャッシュヒット率予測部２０１によって決められたキャッシュヒット率２０２に基づいて、周波数決定部２０３は、ＣＰＵクロック１０２、メモリクロック１０６、バスクロック１０７を含む周波数２０４を決定する（Ｓ３６）。クロック制御部２０５は周波数決定部２０３によって決められた周波数２０４を対応するクロック信号を供給するようクロック供給部１５０を制御する。さらに、周波数２０４に基づいて、電圧決定部２０６が、ＣＰＵ電圧１０８、メモリ電圧１０９、バス電圧１１０のうち少なくとも１つ以上の電圧２０７を決定する（Ｓ３８）。電圧制御部２０８は電圧決定部２０６によって決められた電圧２０７を対応する電圧に対して設定をする。このように制御部１６１は、ＣＰＵ１０１の周波数２０４を、キャッシュヒット率予測部２０１によって予測されたキャッシュヒット率２０２に基づいて制御することで、キャッシュヒット率２０２が低い時に、ＣＰＵ１０１の周波数２０４を下げ、キャッシュヒット率２０２が高い時に、ＣＰＵ１０１の周波数２０４を上げることで、消費電力を最適に制御することができる。
【００４０】
より詳しく説明すると、上記の第１の処理は、オペレーティングシステムにおける各種イベントをいう。各種イベントには、システムコール、割込み処理、例外処理、アプリケーションの切り替え（タスク切り替え）、アプリケーションの起動、アプリケーションの完了、などを含む。第２の処理はこれらのイベントにより開始する処理またはイベントから呼び出される処理をいう。
【００４１】
たとえば、イベント（第１の処理）が、ファイルリードを指示イベントであれば、第２の処理が記録媒体とメモリとの間のデータ転送を行う処理であると判別される。この場合、キャッシュヒット率予測部２０１は、ヒット率が所定値よりも下がると予測する。ヒット率予測の一例について図４Ａを用いて説明する。
【００４２】
図４Ａは、イベントに対応する第２の処理と予測ヒット率とを保持する予測テーブルを示す図である。キャッシュヒット率予測部２０１は、図４Ａに示すような予測テーブルに参照することにより予測ヒット率を得る。
【００４３】
周波数決定部２０３は、キャッシュヒット率予測部２０１によって予測されたヒット率２０２に基づいて、クロック周波数２０４を決定する。クロック周波数２０４は、ＣＰＵクロック１０２の周波数、バスクロック１０７の周波数およびメモリクロック１０６の周波数を含む。周波数の決定方法の一例について図５Ａを用いて説明する。
【００４４】
図５Ａは、予想ヒット率に適したクロック周波数２０４を保持するテーブルを示す図である。周波数決定部２０３は、図５Ａに示す周波数テーブルを参照することにより周波数を得る。図５Ａの周波数テーブルは、予測ヒット率に対応させて、ＣＰＵクロック１０２の周波数、バスクロック１０７の周波数およびメモリクロック１０６の周波数を予め記憶している。この周波数テーブルは、キャッシュヒット率２０２が低くなると予測される場合には、ＣＰＵクロック１０２の周波数を下げ、キャッシュヒット率２０２が高くなると予測される場合には、ＣＰＵクロック１０２の周波数を上げるように設定されている。これにより、消費電力を最適に制御することができる。
【００４５】
クロック制御部２０５は、周波数決定部２０３によって決定された周波数２０４に従う各クロック信号を供給するようにクロック供給部１５０を制御する。
【００４６】
電圧決定部２０６は、周波数決定部２０３によって決定された周波数２０４に基づいてＣＰＵ電圧１０８、メモリ電圧１０９およびバス電圧１１０を決定する。なお、電圧決定部２０６は、予測ヒット率に基づいてＣＰＵ電圧１０８、メモリ電圧１０９およびバス電圧１１０を決定してもよい。電圧決定方法の一例について図５Ｂを用いて説明する。
【００４７】
図５Ｂは、予想ヒット率に適したＣＰＵ電圧１０８、バス電圧１１０、メモリ電圧１０９を保持するテーブルを示す図である。
【００４８】
電圧制御部２０８は、電圧決定部２０６によって決められた電圧２０７を対応する各電源電圧を拒給するよう電源部１５１を制御する。
【００４９】
なお、本実施形態では、制御部１６１は、オペレーティングシステム（ＯＳ）の一部分に追加された機能として説明するが、ＯＳ以外のプログラムで実現しても、ハードウェアで実現してもよい。
【００５０】
記憶媒体１１１は、ハードディスクや光ディスクなどの記録媒体である。
【００５１】
割込みコントローラ１１２は、ＣＰＵ１０１への割込みを制御する。ＣＰＵ１０１への各種割込みは、上記イベント（第１の処理）の一部として制御部１６１に取り扱われる。
【００５２】
以上のように構成された情報処理装置について、その動作を説明する。上記のイベント（第１の処理）には、ＯＳ内部で発生するイベント、アプリケーションからシステムコールとして発生するイベント、外部から割込みとして発生するイベントなど様々なものがある。
【００５３】
まず、制御部１６１による、イベントの種類を問わずイベントから呼び出される第２処理の内容に応じてヒット率を予測する動作例について説明する。
【００５４】
例えば、図４ＡのイベントＮｏ．１に示すようにイベントに対応する第２の処理が、記憶媒体１１２に格納されたデータをメモリ１０２へロードする処理である場合、キャッシュヒット率予測部２０１は、ロードが開始から完了するまで前記ＣＰＵのキャッシュヒット率が低いと予測する。
【００５５】
また、図４ＡのイベントＮｏ．５に示すようにイベントに対応する第２の処理が、記憶媒体１１２に格納されたアプリケーションを実行するとき、通常はオペレーティングシステム（以下ＯＳという）は記憶媒体１１２からアプリケーションをロードし、メモリ１０２へ展開を行う。この時、記憶媒体１１２へのアクセスはＣＰＵ１０１のキャッシュにヒットしない傾向が高いことから、キャッシュヒット率予測部２０１はキャッシュヒット率が低いと予測し、キャッシュヒット率２０２を決定する。
【００５６】
例えば、図４ＡのイベントＮｏ．３に示すようにイベントに対応する第２の処理が、ある領域に対して、メモリコピー、またはメモリフィル機能が実施される時、対象領域は未使用であることが多く、キャッシュヒット率が下がる傾向にあるため、キャッシュヒット率予測部２０１が、キャッシュヒット率が下がると予測しキャッシュヒット率２０２を決定する。
【００５７】
また、図４ＡのイベントＮｏ．４に示すようにイベントに対応する第２の処理が、キャッシュ領域のすべて、または大部分をフラッシュする処理を行った後は、前記ＣＰＵのキャッシュヒット率は下がる傾向にあるため、キャッシュヒット率予測部２０１が、ＣＰＵ１０１のキャッシュヒット率が低いと予測し、キャッシュヒット率２０２を決定する。例えば、ＯＳは外部メモリとキャッシュの整合性をとるために、キャッシュをフラッシュすることがある。
【００５８】
例えば、図４ＡのイベントＮｏ．３に示すようにイベントに対応する第２の処理が、メモリコピー、またはメモリフィル機能が実施される時、対象領域が大きいほどキャッシュヒット率は下がる傾向にあるため、キャッシュヒット率予測部２０１が、サイズに応じてキャッシュヒット率を予測しキャッシュヒット率２０２を決定する。
【００５９】
また、図４ＡのイベントＮｏ．５に示すようにイベントに対応する第２の処理が、アプリケーションの実行を開始する時に、開始直後はＣＰＵ１０１のキャッシュに実行するアプリケーションが存在しないため、キャッシュヒット率が下がる傾向にあるため、キャッシュヒット率予測部２０１はキャッシュヒット率が下がると予測し、キャッシュヒット率２０２を決定する。
【００６０】
次に、図４ＡのイベントＮｏ．９に示すようにイベントに対応する第２の処理が、ＭＭＵアクセス違反である場合について説明する。ここでは、ＣＰＵ１０１は、デマンドロード方式の仮想記憶用に仮想アドレスを実アドレスに変換するメモリ管理部（以下ＭＭＵと呼ぶ）を内部に備えるものとする。例えばＬｉｎｕｘのようなＯＳの場合、実際にアクセスが発生するまで実メモリを割り当てない方式（以下デマンドロードという）が用いられる。このデマンドロードを実現するために、ＭＭＵの機能であるアクセス権限機能を利用して、実際にアクセスが発生するまで、アクセス権限をアクセス禁止に設定する。アクセス禁止に設定された領域にアクセスが発生した場合、例外が発生してＯＳによって処理される。デマンドロードが発生した後は、新規に割り当てたメモリへのアクセスを行うことが多いため、ＣＰＵ１０１ａのキャッシュにヒットしない傾向が高いことから、制御部１６１は、キャッシュヒット率予測部２０１はキャッシュヒット率が低いと予測し、キャッシュヒット率２０２を決定する。
【００６１】
さらに、図４ＡのイベントＮｏ．１０に示すようにイベントに対応する第２の処理が、ＴＬＢミスヒットイベントである場合について説明する。ここでは、上記のＭＭＵは、さらに、仮想アドレスと対応する実アドレスとを一時的にキャッシュする、ソフトウェアテーブルウォーク方式のＴａｂｌｅ  Ｌｏｏｋａｓｉｄｅ  Ｂｕｆｆｅｒ（以下ＴＬＢという）を備えるものとする。
【００６２】
ＴＬＢミスヒットが発生する時は、従来アクセスしていなかった領域にアクセスが始まったことを示す場合が多く、今後キャッシュヒット率が下がる傾向があるため、キャッシュヒット率予測部２０１は、ＴＬＢミスヒットを検出した場合、キャッシュヒット率が下がると予測し、キャッシュヒット率２０２を決定する。
【００６３】
なお、ＣＰＵ１０１に搭載されるソフトウェアテーブルウォーク方式のＴＬＢは、ＴＬＢにミスヒットが発生するとＯＳがＴＬＢのエントリを更新するため、ＴＬＢミスヒットの発生をキャッシュヒット率予測部２０１で検出できる。
【００６４】
さらに、ＣＰＵ１０１においてＴＬＢミスヒットが発生し、更新したＴＬＢエントリの内容に基づいて、キャッシュヒット率予測部２０１がキャッシュヒット率２０２を決定する。例えば、更新したＴＬＢエントリの内容が非キャッシュ属性を示す場合、これからアクセスが始まる領域が非キャッシュ領域の可能性が高く、今後キャッシュヒット率が下がる傾向があるため、キャッシュヒット率予測部２０１は、ＴＬＢミスヒットを検出した後に更新されるＴＬＢエントリが非キャッシュ属性を示す場合にキャッシュヒット率が下がると予測し、キャッシュヒット率２０２を決定してもよい。
【００６５】
次に、制御部１６１による、上記イベント（第１の処理）の一部としての割込みに関する動作について説明する。
【００６６】
例えば、図４ＡのイベントＮｏ．１１に示すようにイベントに対応する第２の処理が、割込み前処理である場合、割込みコントローラ１１２から発行される割込み１１４がＣＰＵ１０１で受け付けられると、ＯＳは割込み処理を開始する。割込み処理は主に、割込み種類の識別などを行う前処理部分と、割込み種類に応じて処理を行う割込みハンドラ処理とに分けられる。前処理部分は割込みの種類に依存せず共通の処理であるため、キャッシュヒット率が高い傾向があるため、割込み処理開始後、各割込みハンドラ処理を実施するまで、キャッシュヒット率予測部２０１はキャッシュヒット率が高いと予測しキャッシュヒット率２０２を決定する。
【００６７】
また、図４ＡのイベントＮｏ．１２や１３に示すようにイベントに対応する第２の処理が、割込みハンドラの処理である場合、つまり、割込み処理の前処理の後に割込み種類に応じて実施される割込みハンドラ処理である場合、割込みハンドラ処理はＣＰＵ１０１の周辺デバイスを操作するため、キャッシュヒット率が低い傾向がある。この性質を利用して、各割込みハンドラ処理の実施は、キャッシュヒット率予測部２０１はキャッシュヒット率が低いと予測しキャッシュヒット率２０２を決定する。  割込みハンドラ処理はデバイスの種類によって処理内容が異なり、キャッシュヒット率の変化度合いが異なるため、キャッシュヒット率予測部２０１が、デバイスの種類に応じて各割込みハンドラ処理のキャッシュヒット率を予測しキャッシュヒット率２０２を決定する。
【００６８】
なお、キャッシュヒット率予測部２０１が各割込みの発生頻度を管理し、発生頻度が高いほどキャッシュヒット率は高くなる傾向があることを利用し、発生頻度に応じて各割込みハンドラ処理のキャッシュヒット率を予測しキャッシュヒット率２０２を決定する。この発生頻度は動的に管理しても、あらかじめ決められた静的な値を使用してもよい。
【００６９】
さらに、制御部１６１が、上記イベントの一部としてシステムコールを取り扱う動作について説明する。アプリケーションはＯＳに対してシステムコール（ソフトウェア割込みとも呼ばれる）を発行することで、ＯＳの機能を利用することができる。このＯＳの機能はデバイスアクセスや、新規領域の獲得など、キャッシュヒット率が下がる傾向があるため、キャッシュヒット率予測部２０１はシステムコールが発行された後、キャッシュヒット率が下がると予測し、キャッシュヒット率２０２を決定する。
【００７０】
また、図４Ｂに示すように、システムコールはシステムコール番号で処理内容を区別しており、処理内容によってキャッシュヒット率の変化度合いが異なるため、キャッシュヒット率予測部２０１はシステムコールが発行された後、キャッシュヒット率をシステムコール番号に応じて予測し、キャッシュヒット率２０２を決定する。
【００７１】
図４Ｂは、システムコール番号に対応する第２の処理と予測ヒット率とを保持する予測テーブルを示す図である。システムコール番号１のソケット・システム・コールは、ネットワーク通信を行うためのシステムコールであり、ネットワークデバイスに頻繁にアクセスすることから、制御部１６１はヒット率低下を予測し、予測ヒット率はかなり低い。
【００７２】
システムコール番号２のファイルリード・システムコールは、記憶媒体１１１からファイルを読み出す処理であり、制御部１６１はヒット率がかなり低いと予測する。
【００７３】
システムコール番号３のファイルライト・システム・コールは、記憶媒体１１１にファイルを書き込む処理であり、制御部１６１はヒット率がかなり低いと予測する。
【００７４】
システムコール番号４のファイルの属性変更用システムコールは、ファイルへのアクセスではあるが、属性（例えば、アクセス権限や所有者など）を変更するだけなので、制御部１６１は、ヒット率が若干低下するがほとんど変化しないと予測する。
【００７５】
システムコール番号５のメモリ領域変更用システム・コールは、プロセスのメモリ領域を変更するために使用される（ｍａｌｌｏｃ等）。特に、領域を拡大する場合には、未知の領域へのアクセスを始めることを意味するので、制御部１６１は、サイズが大きいほどかなり低いヒット率と予測する。
【００７６】
システムコール番号６のシグナル用システム・コールは、アプリケーションからの他のアプリケーションへのイベント通知を示すが、通知そのものは１つのデータのみであるので、制御部１６１は、ヒット率が変化しないと予測する。
【００７７】
なお、第１の実施例を示す情報処理装置は典型的には集積回路であるＬＳＩとして実現される。ここではＬＳＩとしたが、集積度の違いにより、ＩＣ、システムＬＳＩ、スーパーＬＳＩ、ウルトラＬＳＩと呼称されることもある。
【００７８】
第１の実施例を示す情報処理装置は携帯電話、蓄積再生装置、デジタルテレビ、車載機器等に適用できる。
【００７９】
また、メモリクロック１０６の周波数と、バスクロック１０７の周波数を制御する場合、ＣＰＵ１０１以外のバスマスタ回路（例えばＤＭＡＣ：Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ Ｃｏｎｔｒｏｌｌｅｒ）がメモリ１０４とバス１０５を使用しているかどうかを考慮する必要がある。
【００８０】
（実施の形態２）
図７は、実施の形態２における情報処理装置の構成を示すブロック図である。同図は、第１の実施形態の図１と比べて、キャッシュヒット率モニタ回路１０３を追加している点が異なっている。
【００８１】
以上のように構成された情報処理装置において、制御部１６１内のキャッシュヒット率予測部２０１は、キャッシュヒット率モニタ回路１０３からの現在のキャッシュヒット率情報（ハードウェア情報）を取得して、取得した情報を利用してキャッシュヒット率２０２を予測する。
【００８２】
キャッシュヒット率予測部２０１は、キャッシュヒット率モニタ回路からの現在のキャッシュヒット率情報に基づいてキャッシュヒット率を予測するため、実施の形態１の予測に対し予測精度が高くなる。以下、いくつかの動作例について説明する。
【００８３】
例えば、キャッシュヒット率予測部２０１がタイマなどにより定期的に起動し、所定の情報を記録する。過去に記録した情報に基づき統計的にキャッシュヒット率２０２を決定する。
【００８４】
また、キャッシュヒット率予測部２０１は、キャッシュヒット率を低下させる所定の処理がなかった場合、ヒット率は上昇していく傾向が高いため、キャッシュヒット率予測部２０１が、キャッシュヒット率を低下させる所定の処理がなかった場合、キャッシュヒット率が上昇すると予測しキャッシュヒット率２０２を決定する。
【００８５】
さらに、ヒット率が上昇する割合はアプリケーションによって異なるため、キャッシュヒット率予測部２０１は、キャッシュヒット率を低下させる所定の処理がなかった場合、アプリケーション毎にキャッシュヒット率が上昇を予測しキャッシュヒット率２０２を決定する。
【００８６】
また、キャッシュヒット率予測部２０１は、定期的に起動し、ハードウェア情報を取得し記録し、履歴として保存し、過去に起動したときに記録されたハードウェア情報に基づきキャッシュヒット率予測部２０１が統計的にキャッシュヒット率２０２を決定する。
【００８７】
次に、ＰＣＵ１０１内のＭＭＵがハードウェア・テーブルウォーク方式のＴＬＢを備えているものとする。命令やデータの時間的局所性が低い場合、ＴＬＢのミスヒットが多く発生し、更新頻度が高くなる。この場合、キャッシュヒット率が低い傾向があるため、キャッシュヒット率予測部２０１は、周期的にＴＬＢをモニタし、ＴＬＢの更新頻度が高い場合にキャッシュヒット率が下がると予測し、キャッシュヒット率２０２を決定する。
【００８８】
さらに、プログラムカウンタを周期的にモニタすることで、命令の空間的局所性が高いかどうかの判断ができ、局所性が低い場合はキャッシュヒット率が低い傾向があるため、キャッシュヒット率予測部２０１が、周期的にプログラムカウンタをモニタし、命令の局所性に応じてキャッシュヒット率を予測しキャッシュヒット率２０２を決定する。
【００８９】
また、キャッシュヒット率予測部２０１は、定期的にキャッシュヒット率モニタ回路１０３の値を記録し、記録された情報に基づいてキャッシュヒット率を予測しキャッシュヒット率２０２を決定してもよい。
【００９０】
例えば、図４ＡのイベントＮｏ．７に示すようにイベントに対応する第２の処理が、実行中のアプリケーションの中断である場合、制御部１６１は、中断時にアプリケーションのキャッシュヒット率情報を保存する。中断の例として、割り込みなどの例外、他のアプリケーションへ移行などがある。
【００９１】
この後、図４ＡのイベントＮｏ．８に示すようにイベントに対応する第２の処理が、中断されているアプリケーションの実行が再開する処理である場合、キャッシュヒット率予測部２０１は、再開時にキャッシュヒット率予測部２０１が保存されたキャッシュヒット率を利用してキャッシュヒット率２０２を決定する。その際、アプリケーションが再開までの時間が長いほど、再開時にＣＰＵ１０１のキャッシュに再開されるアプリケーションのデータが残っている可能性が低く、キャッシュヒット率が下がるため、アプリケーションが再開されるまでの時間に基づいて、キャッシュヒット率予測部２０１はアプリケーションのキャッシュヒット率２０２を決定する。
【００９２】
例えば、実行すべきアプリケーションが複数存在する時、ＯＳはあるタイミングで実行していたアプリケーション（アプリケーションＡ）から異なるアプリケーション（アプリケーションＢ）に切り替えを行う。そして、ある時間が経過した後、再びアプリケーションＡに切り替えを行う。この場合も、図４ＡのイベントＮｏ．７、８と同様に、アプリケーションＡからアプリケーションＢに切り替えを行うとき、キャッシュヒット率予測部２０１が、アプリケーションＡのキャッシュヒット率を保存する。そして、アプリケーションＡが再開されるときに保存されたキャッシュヒット率を利用してキャッシュヒット率２０２を決定する。
【００９３】
また、図４ＡのイベントＮｏ．７、８と同様にして、キャッシュヒット率予測部２０１は、システムコール、または割込みによる例外発生直前まえ実行していたアプリケーションのキャッシュヒット率情報を保存し、その後前記アプリケーションが再開されるときに保存されたキャッシュヒット率情報を利用してキャッシュヒット率を予測しキャッシュヒット率２０２を決定する。
【００９４】
（実施の形態３）
図１０は、実施の形態３における情報処理装置の構成を示すブロック図である。同図は、図７と比べると、マルチプロセッサ構成になっている点が異なる。すなわち、ＣＰＵ１１４ａ〜１１４ｃ、クロック供給部１５０ａ〜１５０ｃおよび電源部１５１ａ〜１５１ｃのセットを複数備えている。
【００９５】
以上のように構成された情報処理装置において、キャッシュヒット率予測部２０１、周波数決定部２０３、クロック制御部２０５は、ＣＰＵ１１４ａ〜１１４ｃに対してそれぞれ実装され、ＣＰＵ１１４ａ〜１１４ｃの各クロック１０２は独立に制御することになる。ただし、バスクロック、メモリクロックは、固定にするか、三者の設定を調停する必要がある。バス電圧、メモリ電圧についても固定にするか、三者の設定を調停する必要がある。
【００９６】
（実施の形態４）
本実施形態では、プロセッサにおいてキャッシュヒット率を動的に予測するのではなく、キャッシュヒット率を静的に予測し、予測結果に従ってプログラム中にクロック信号の周波数を指定する命令および電源電圧を指定する命令を追加するプログラム変換装置について説明する。
【００９７】
図９は、第３の実施の形態におけるプログラム変換装置の構成を示すブロック図である。同図のプログラム変換装置は、コンパイラ１、アセンブラ１８、リンカ１９を備える。コンパイラ１は、構文解析部１０、中間コード生成部１１、クロック・電圧制御部１２、コード生成部１３を備える。同図のプログラム変換装置は、機能ブロックの機能を発揮するソフトウェアをコンピュータ上で実行することにより実現される。
【００９８】
コンパイラ１は、高級言語で記述されたプログラムをアセンブリ言語プログラムに変換する。高級言語プログラムは、例えばＣ言語などである。
【００９９】
構文解析部１０は、Ｃ言語などの高級言語プログラムＰ１の構文を解析する。
【０１００】
中間コード生成部１１は、解析結果に基づいて高級言語プログラムＰ１を中間命令（以下単に命令と呼ぶ。）の記述に置き換えた中間コード命令列Ｐ２を生成する。
【０１０１】
クロック・電圧制御部１２は、第１、第２の実施の形態の制御部１６１に相当し、中間コード命令列Ｐ２において、所定のプログラム区間におけるヒット率を予測し、予測したヒット率に応じて、当該プログラム区間におけるクロック信号の周波数を指定する命令および電源電圧を指定する命令を追加する。ここで所定のプログラム区間とは、中間コード命令列Ｐ２において、図４Ａ、図４Ｂ、図８に示した第２の処理に該当する区間である。
【０１０２】
コード生成部１３は、クロック・電圧制御部１２によって上記命令が追加された中間コード命令列Ｐ２からアセンブリ言語の命令列（ニーモニック形式の命令列）を生成する。
【０１０３】
また、同図のクロック・電圧制御部１２は、プログラム区間検出部１４、キャッシュヒット率予測部１５、周波数・電圧決定部１６、命令挿入部１７を備える。
【０１０４】
プログラム区間検出部１４は、図４Ａ、図４Ｂ、図８に示した第２の処理に該当するプログラム区間を検出する。その際、プログラム区間検出部１４は、第１および第２実施の形態で示した第１の処理（イベントの発生、システムコール、ソフトウェア割込み）を検出し、それによって開始する（または呼び出される）第２の処理（プログラム区間）を検出するようにしてもよい。
【０１０５】
キャッシュヒット率予測部１５は、プログラム区間検出部１４によって検出されたプログラム区間のキャッシュヒット率を予測する。この予測は、図３のステップＳ３４と同様に、予測テーブル（図４Ａ、図４Ｂ等）を参照することによる。
【０１０６】
周波数・電圧決定部１６は、キャッシュヒット率予測部１５によって予測されたヒット率に応じたＣＰＵクロック、バスクロック、メモリクロックそれぞれの周波数を決定し、さらに、予測されたヒット率に応じたＣＰＵ電圧、バス電圧、メモリ電圧をそれぞれ決定する。この決定は、図３のステップＳ３６、Ｓ３８と同様である。
【０１０７】
命令挿入部１７は、周波数・電圧決定部１６によって決定された周波数をクロック供給部に指定する命令と、周波数・電圧決定部１６によって決定された電源電圧を電源部に指定する命令とを、プログラム区間検出部１４によって検出されたプログラム期間の先頭に追加する。なお、命令挿入部１７は、プログラム区間の先頭ではなく、プログラム区間を呼び出す第１の処理の末尾に上記の命令を挿入してもよい。
【０１０８】
コード生成部１３は、命令挿入部１７によって上記の命令が挿入された後の中間コード命令列から、アセンブリ言語の命令列（ニーモニック命令列）を生成する。
【０１０９】
アセンブラ１８は、アセンブリ言語の命令列を機械語命令列に変換する。
【０１１０】
リンカ１９は、複数の機械語命令列をリンクし、実行ファイルを生成する。
【０１１１】
以上説明してきたように、本実施形態のプログラム変換装置によれば、コンパイルの段階でキャッシュヒット率を静的に予測し、予測結果に従ってプログラム中にクロック信号の周波数を指定する命令および電源電圧を指定する命令を追加する。これにより、プロセッサが動的に上記の命令を挿入することによるオーベーヘッドがなくなり、処理能力を向上させることができる。さらに、本プログラム変換装置により既存のプログラムを変換することによって、第１〜第３実施の形態における制御部１６１を備えていないＣＰＵに対しても本発明を結果的に適用することができる。
【０１１２】
なお、第４の実施形態におけるプログラム変換装置は、コンパイラ内で中間コード命令列Ｐ２に対して上記の命令を挿入しているが、この代わりに、（Ａ）高級言語プログラムＰ１に対して上記の命令に対応するプログラム文（関数など）を挿入する構成としてもよいし、（Ｂ）アセンブリ言語命令列に対して、上記の命令に対応するニーモニック命令を挿入するようにしてもよいし、または（Ｃ）機械語命令列に対して、上記の命令に対応する機械語命令を挿入するようにしてもよい。また、第１の処理または第２の処理を、上記（Ａ）、（Ｂ）、（Ｃ）の何れの段階においてより検出しやすいか分類して、分類された第１の処理または第２の処理を対応する段階でクロック・電圧制御部１２の処理を実行してもよい。
【産業上の利用可能性】
【０１１３】
本発明は、情報処理装置のクロック周波数および電源電圧を制御する制御方法、情報処理装置、プログラム、プログラム変換方法に適しており、特にキャッシュメモリを有するプロセッサと、プロセッサへクロック信号を供給するクロック供給部とを備える情報処理装置、そのオペレーティングシステム用プログラム、その情報処理装置を対象とするコンパイラ、アセンブラなどのプログラム変換装置に適している。
【図面の簡単な説明】
【０１１４】
【図１】第１の実施形態における情報処理装置の構成を示すブロック図である。
【図２】制御部の構成を示すブロック図である。
【図３】キャッシュヒット予測部の処理を示すフローチャート図である。
【図４Ａ】イベントと予測ヒット率を示す予測テーブルを示す図である。
【図４Ｂ】システムコールと予測ヒット率を示す予測テーブルを示す図である。
【図５Ａ】予想ヒット率に対するクロック周波数テーブルを示す図である。
【図５Ｂ】予想ヒット率に対する電源電圧テーブルを示す図である。
【図６】ヒット率の変化と各周波数の変化とを示す図である。
【図７】第２の実施形態における情報処理装置の構成を示すブロック図である。
【図８】キャッシュヒット予測部の処理を示すフローチャート図である。
【図９】イベントと予測ヒット率を示す予測テーブルを示す図である。
【図１０】第３の実施形態における情報処理装置の構成を示すブロック図である。
【図１１】第４の実施形態におけるプログラム変換装置の構成を示すブロック図である。
【図１２】従来の情報処理装置の構造を示すブロック図である。
【図１３】従来の制御手段を示すブロック図である。
【符号の説明】
【０１１５】
１  コンパイラ
１０  構文解析部
１１  中間コード生成部
１２  電圧制御部
１３  コード生成部
１４  プログラム区間検出部
１５  キャッシュヒット率予測部
１６  電圧決定部
１７  命令挿入部
１８  アセンブラ
１９  リンカ
１０１、１０１ａ、１０１ｂ、１０１ｃ、１１４ａ、１１４ｂ、１１４ｃ  ＣＰＵ
１０２  ＣＰＵクロック
１０３  キャッシュヒット率モニタ回路
１０４  メモリ
１０２  ＣＰＵクロック
１０５  バス
１０６  メモリクロック
１０７  バスクロック
１０８  ＣＰＵ電圧
１０９  メモリ電圧
１１０  バス電圧
１１１  記憶媒体
１１２  割込みコントローラ
１５０  クロック供給部
１５１  電源部
１６１  制御部
２０１  キャッシュヒット率予測部
２０２  キャッシュヒット率
２０３  周波数決定部
２０４  周波数
２０５  クロック制御部
２０６  電圧決定部
２０７  電圧
２０８  電圧制御部
Ｐ１  高級言語プログラム
Ｐ２  中間コード命令列
【図１】
2008009647.tif 000003
【図２】
2008009647.tif 000004
【図３】
2008009647.tif 000005
【図４Ａ】
2008009647.tif 000006
【図４Ｂ】
2008009647.tif 000007
【図５Ａ】
2008009647.tif 000008
【図５Ｂ】
2008009647.tif 000009
【図６】
2008009647.tif 000010
【図７】
2008009647.tif 000011
【図８】
2008009647.tif 000012
【図９】
2008009647.tif 000013
【図１０】
2008009647.tif 000014
【図１１】
2008009647.tif 000015
【図１２】
2008009647.tif 000016
【図１３】
2008009647.tif 000017