(57)【特許請求の範囲】
【請求項１】
プロセッサの温度を測定する温度センサと、
前記プロセッサにかかる負荷に応じて第１の動作周波数を決定し、
前記プロセッサの温度上昇率及び前記プロセッサの限界温度と前記プロセッサの現在温度との温度差分に基づいて決定した低減率で前記第１の動作周波数を低減させた第２の動作周波数を決定し、
前記プロセッサの動作周波数を前記第２の動作周波数に設定する前記プロセッサを有する
情報処理装置。
【請求項２】
前記プロセッサは、前記プロセッサにかかる負荷が大きい程、前記第１の動作周波数を大きくする
請求項１記載の情報処理装置。
【請求項３】
前記プロセッサは、前記プロセッサの温度上昇率が大きい程、前記低減率を大きくする
請求項２記載の情報処理装置。
【請求項４】
前記プロセッサは、前記プロセッサの限界温度と前記プロセッサの現在温度との温度差分が小さい程、前記低減率を大きくする
請求項３記載の情報処理装置。
【請求項５】
前記プロセッサは、前記プロセッサの温度上昇率に基づく第１の低減率と、前記プロセッサの限界温度と前記プロセッサの現在温度との温度差分に基づく第２の低減率とをそれぞれ決定し、前記第１及び第２の低減率を積算した結果で前記第１の動作周波数を低減させた第２の動作周波数を決定する
請求項４記載の情報処理装置。
【請求項６】
前記プロセッサは、前記プロセッサの温度上昇率が第１の基準値より小さいとき、前記低減率を０にする
請求項４記載の情報処理装置。
【請求項７】
前記プロセッサは、前記プロセッサの限界温度と前記プロセッサの現在温度との温度差分が第２の基準値より大きいとき、前記低減率を０にする
請求項４記載の情報処理装置。
【請求項８】
前記プロセッサは、前記プロセッサが単位時間あたりに放出する熱量を表す熱放射率が小さい程、前記低減率を大きくする
請求項４記載の情報処理装置。
【請求項９】
前記プロセッサは、前記プロセッサにかかる負荷上昇率が高い程、前記低減率を大きくする
請求項８記載の情報処理装置。
【請求項１０】
前記プロセッサは、前記プロセッサの温度上昇率に基づく第１の低減率と、前記プロセッサの限界温度と前記プロセッサの現在温度との温度差分に基づく第２の低減率と、前記熱放射率に基づく第３の低減率と、前記負荷上昇率に基づく第４の低減率とをそれぞれ決定し、前記第１、第２、第３、及第４の低減率を積算した結果で前記第１の動作周波数を低減させた第２の動作周波数を決定する
請求項９記載の情報処理装置。
【請求項１１】
前記プロセッサは、前記プロセッサの前記熱放射率が第３の基準値より大きいとき、前記低減率を０にする
請求項８記載の情報処理装置。
【請求項１２】
プロセッサの温度を測定する温度センサと、
前記プロセッサを有する情報処理装置の前記プロセッサに実行させる動作周波数制御プログラムであって、
前記プロセッサにかかる負荷に応じて第１の動作周波数を決定し、
前記プロセッサの温度上昇率及び前記プロセッサの限界温度と前記プロセッサの現在温度との温度差分に基づいて決定した低減率で前記第１の動作周波数を低減させた第２の動作周波数を決定し、
前記プロセッサの動作周波数を前記第２の動作周波数に設定する
処理を前記プロセッサに実行させる動作周波数制御プログラム。
【請求項１３】
プロセッサの温度を測定する温度センサと、
前記プロセッサを有する情報処理装置における動作周波数制御方法であって、
前記プロセッサによって、前記プロセッサにかかる負荷に応じて第１の動作周波数を決定し、
前記プロセッサの温度上昇率及び前記プロセッサの限界温度と前記プロセッサの現在温度との温度差分に基づいて決定した低減率で前記第１の動作周波数を低減させた第２の動作周波数を決定し、
前記プロセッサの動作周波数を前記第２の動作周波数に設定する
動作周波数制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、動作周波数制御プログラム、及び動作周波数制御方法に関する。
【背景技術】
【０００２】
情報処理装置は、プロセッサによって、データの計算や加工を行っている。プロセッサは、例えば、ＣＰＵ（Central Processing Unit）である。ＣＰＵは、情報処理装置のメモリに記憶されたプログラムを実行することで、様々な機能を実現する。
【０００３】
ＣＰＵの性能の指標の一つとして、動作周波数がある。動作周波数は、ＣＰＵの動作を制御するクロックの周波数であり、単位はＨｚ（ヘルツ）で表される。
【０００４】
クロックとは、ＣＰＵの動作基準となる時間単位である。ＣＰＵは、このクロックの整数倍の時間をかけて、命令を実行する。よって、ＣＰＵは、動作周波数が高いほど、１秒間に実行できる命令が多くなる。
【０００５】
ＣＰＵは、動作周波数を変更することがきる。ＣＰＵは、例えば、実行すべき命令が多いときには動作周波数を上げ、実行すべき命令が少ないときには動作周波数を下げる処理を行う。
【０００６】
ＣＰＵに関する技術としては、以下のような技術がある。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開平８−４６４２８
【特許文献２】特開２０１１−１７６５１７
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかし、ＣＰＵの動作周波数を上げると、それに比例してＣＰＵに流れる電流も増加する。ＣＰＵから発する熱量は電流の二乗に比例して増加するため、ＣＰＵの動作周波数を上げると、ＣＰＵから発生する熱量は大幅に増加し、ＣＰＵの温度が急激に上昇する。
【０００９】
ＣＰＵは定格の限界温度に達すると、急激に処理性能が低下したり、あるいは故障したりする場合がある。そこで、ある情報処理装置においては、ＣＰＵが定格の限界温度に達すると、ＣＰＵの温度上昇を抑制するめに、動作周波数を下げる処理を行っている。
【００１０】
このような処理では、ＣＰＵが定格の限界温度に達するまで高い動作周波数を維持しており、その間のＣＰＵの仕事量は多い。しかし、ＣＰＵが定格の限界温度に達すると、温度が下がるまで低い動作周波数を維持しなければならず、その間のＣＰＵの仕事量は少ない。よって、動作周波数を下げる前後の時間におけるＣＰＵの処理性能が低下することがある。
【００１１】
そこで、一開示は、ＣＰＵの処理性能を高くする、温度調整手段を有する情報処理装置を提供することにある。
【課題を解決するための手段】
【００１２】
プロセッサの温度を測定する温度センサと、前記プロセッサにかかる負荷に応じて第１の動作周波数を決定し、前記プロセッサの温度上昇率及び前記プロセッサの限界温度と前記プロセッサの現在温度との温度差分に基づいて決定した低減率で前記第１の動作周波数を低減させた第２の動作周波数を決定し、前記プロセッサの動作周波数を前記第２の動作周波数に設定する前記プロセッサを有する。
【発明の効果】
【００１３】
一開示は、ＣＰＵの処理性能を高くする、ＣＰＵの温度調整手段を有する情報処理装置を提供する。
【図面の簡単な説明】
【００１４】
【図１】図１は、情報処理装置の構成例を表す図である。
【図２】図２は、動作周波数変更処理のフローチャートの例を表す図である。
【図３】図３は、温度履歴テーブルの例を表す図である。
【図４】図４は、差分温度と動作周波数の低減率の対応関係を表すテーブルの例を表す図である。
【図５】図５は、温度上昇率と動作周波数の低減率の対応関係を表すテーブルの例を表す図である。
【図６】図６は、動作周波数及び温度を従来方式と比較した例を表す図である。
【図７】図７は、動作周波数変更処理のフローチャートの例を表す図である。
【図８】図８は、負荷履歴テーブルの例を表す図である。
【図９】図９は、負荷上昇率と動作周波数の低減率の対応関係を表すテーブルの例を表す図である。
【発明を実施するための形態】
【００１５】
以下、本発明を実施するための形態について説明する。
【００１６】
［第１の実施の形態］
最初に第１の実施の形態について説明する。
【００１７】
＜情報処理装置の構成例＞
図１は、情報処理装置１００の構成例を表す図である。
【００１８】
情報処理装置１００は、ＣＰＵ（Central Processing Unit）１１０、ストレージ１２０、ＲＡＭ（Random Access Memory） １３０、温度検出部１４０、及びクロック発生部１５０を有する。
【００１９】
ＣＰＵ１１０は、ストレージ１２０に記憶されているプログラムを、ＲＡＭ１３０にロードし、ロードしたプログラムを実行するプロセッサである。ＣＰＵ１１０は、ロードした制御プログラム１２１を実行することで、制御部の機能を実現する。制御部は、ＣＰＵ１１０の動作周波数を決定する。制御部は動作周波数変更処理を行う。制御部は、動作周波数変更処理において、ＣＰＵ１１０にかかる負荷に応じて暫定的に動作周波数を算出する。制御部は、ＣＰＵ１１０の温度上昇率及びＣＰＵ１１０の限界温度と現在温度との差分温度に基づいて、算出した暫定的な動作周波数を低下させ、動作周波数を決定する。限界温度とは、ＣＰＵ１１０が当該温度以上になると、故障したり、極端に処理性能が低下したりする温度であり、定格で定められている。制御部は、決定した動作周波数をＣＰＵ１１０に設定するよう、動作周波数生成部１１１に命令する。
【００２０】
ＣＰＵ１１０は、動作周波数生成部１１１を有する。動作周波数生成部１１１は、クロック発生部１５０から受信したクロック信号を分周し、ＣＰＵ１１０に動作周波数（ｆ）を生成し、ＣＰＵ１１０に動作周波数（ｆ）に応じたクロック信号を与える。動作周波数生成部１１１は、例えば、分周回路である。動作周波数生成部１１１は、制御部の命令により、ＣＰＵ１１０の動作周波数（ｆ）を設定する。
【００２１】
ストレージ１２０は、プログラムやデータを記憶する補助記憶装置である。ストレージ１２０は、制御プログラム１２１を記憶する。ＣＰＵ１１０は、制御プログラム１２１を実行することで、ＣＰＵ１１０の動作周波数変更処理を行う。
【００２２】
ＲＡＭ１３０は、メインメモリであり、ストレージ１２０に記憶されているプログラムをロードする領域である。また、ＲＡＭ１３０は、プログラムがデータを記憶する領域としても使用される。
【００２３】
温度検出部１４０は、ＣＰＵ１１０の温度を検出する装置であり、例えば、温度センサである。温度検出部１４０は、ＣＰＵ１１０の温度を定期的に取得し、ＲＡＭ１３０に記憶する。
【００２４】
クロック発生部１５０は、ＣＰＵ１１０にクロック信号を供給するクロック発生装置である。動作周波数生成部１１１は、クロック発生部１５０から受信したクロック信号の分周比を変更することで、動作周波数（ｆ）を変更する。
【００２５】
＜動作周波数変更処理＞
図２は、制御部が行う動作周波数変更処理のフローチャートの例を表した図である。
【００２６】
制御部は、ＣＰＵ１１０の現在温度を取得し、メモリに記憶する（Ｓ１０）。制御部は、温度検出部１４０からＣＰＵ１１０の現在温度をある測定タイミングで取得し、ＲＡＭ１３０に記憶する。ＲＡＭ１３０には、ＣＰＵ１１０の温度の履歴を記憶する温度履歴テーブルが存在する。
【００２７】
図３は、温度履歴テーブルの例を示す図である。温度履歴テーブル（Ｌ１）に記憶される情報としては、「測定タイミング」と「温度（℃）」がある。「測定タイミング」は、制御部がＣＰＵ１１０の現在温度を取得した時刻である。「温度（℃）」は、制御部が温度検出部１４０から取得したＣＰＵ１１０の現在温度である。温度は摂氏で表現し、単位は度（℃）である。温度履歴テーブル（Ｌ１）は、制御部がＣＰＵ１１０の現在温度を取得するたびに追加されるが、記憶している測定タイミングの数が所定の数を超えると、最も古い測定タイミングの温度を削除してもよい。
【００２８】
次に、制御部はＣＰＵ１１０の温度上昇率を算出する（Ｓ１１）。温度上昇率は、ＣＰＵ１１０の温度が、ある一定時間において上昇する割合を表す指標である。温度上昇率は、例えば、以下の方法で算出する。
【００２９】
温度上昇率をＲｔ、ある測定タイミングｔｘでの温度をＴｘとする。「ｘ」は、１が現在を示し、数字が大きくなる程過去の測定タイミングを示す。温度Ｔ１が現在の温度であり、Ｔ２，Ｔ３・・・と、「ｘ」が大きいほど過去の温度を示す。このとき、Ｒｔは以下の式（１）で算出する。
【００３０】
Ｒｔ＝１０×（Ｔ１−Ｔ３）＋７×（Ｔ２−Ｔ４）＋４×（Ｔ３−Ｔ５）＋（Ｔ４−Ｔ６）・・・（１）
式（１）では、温度変化に対して、測定タイミングの新しい順番に重みを付けて、温度上昇率Ｒｔを算出する。
【００３１】
図３における温度履歴テーブルのデータを式（１）に代入して、温度上昇率Ｒを算出すると、
Ｒｔ＝１０×（７５−６４）＋７×（７０−６０）＋４×（６４−５３）＋（６０−５０）＝２３４
となり、温度上昇率Ｒｔは２３４となる。
【００３２】
温度上昇率の算出方法の別の例として、今回測定タイミングでの温度と、前回測定タイミングでの温度の差分を温度上昇率とする算出方法がある。また、さらに別の例として、ある測定タイミングでの温度（Ｔｘ）と、その１回前の測定タイミングでの温度（Ｔｘ−１）の温度の温度差分を算出し、算出した過去数回分の温度差分の平均値を温度上昇率とする算出方法がある。
【００３３】
次に、制御部は、ＣＰＵ１１０の限界温度と現在温度の温度差分を算出する（Ｓ１２）。制御部は、ＲＡＭ１３０に記憶されているＣＰＵ１１０の限界温度を読み出す。ＣＰＵ１１０の限界温度が、例えば９０度であった場合、図３における今回測定タイミング（ｔ１）での温度である７５度との差分を計算し、温度差分は１５度となる。
【００３４】
次に、制御部は、ＣＰＵ１１０の動作周波数を決定する（Ｓ１３）。動作周波数の決定は、以下の処理を行う。
【００３５】
制御部は、ＣＰＵ１１０にかかる負荷に応じて暫定的に動作周波数を決定する。以下、暫定的に決定した動作周波数を第１の動作周波数と呼ぶ。ＣＰＵ１１０にかかる負荷とは、例えば、ＣＰＵ１１０の使用率である。ＣＰＵ１１０の負荷が大きくなると、第１の動作周波数は大きくなり、ＣＰＵ１１０の負荷が小さくなると、第１の動作周波数は小さくなる。第１の動作周波数は、ＣＰＵ１１０の負荷と第１の動作周波数の対応関係を示す表から抽出してもよいし、ＣＰＵ１１０の負荷と第１の動作周波数の関係を示す式を用いて算出してもよい。制御部は、例えば、ＣＰＵ１１０の使用率が４０％である場合、第１の動作周波数を１０００ＭＨｚと決定する。
【００３６】
次に、制御部は、Ｓ１１で算出した温度上昇率及びＳ１２で算出した温度差分に基づいて低減率を決定し、その低減率で第１の動作周波数を低減させ、ＣＰＵ１１０に設定する動作周波数を決定する。以下、ＣＰＵ１１０に設定する動作周波数を第２の動作周波数と呼ぶ。
【００３７】
温度差分に基づいて第１の動作周波数を低減させるときの、第１の動作周波数の低減率の決定方法について説明する。
【００３８】
制御部は、温度差分が小さい程、第１の動作周波数の低減率を大きくする。温度差分が小さいということは、ＣＰＵ１１０が限界温度に達するまでの時間が短いということである。よって、制御部は、ＣＰＵ１１０の温度上昇を抑制させるため、低減率を大きくし、第２の動作周波数を低くする。温度差分に基づく第１の動作周波数の低減率は、例えば、以下のように決定する。
【００３９】
図４は、温度差分と第１の動作周波数の低減率との対応関係を示すテーブルの例を表す図である。テーブルＬ２に記憶されている情報としては、「温度差分」と「動作周波数の低減率」がある。「温度差分」は、ＣＰＵ１１０の限界温度と現在温度の温度差分の範囲を示す。「動作周波数の低減率」は、「温度差分」に記載されている温度差分に対応する第１の動作周波数の低減率である。制御部は、テーブルＬ２より、Ｓ１２で算出した温度差分に対応する第１の動作周波数の低減率を抽出する。
【００４０】
制御部は、例えば、温度差分が１５度である場合、テーブルＬ２の「１５度以上２０度未満」に対応する「０．１」を、第１の動作周波数の低減率として抽出する。そして、第１の動作周波数を抽出した低減率だけ低下させる。低減率が「０．１」の場合、第１の動作周波数は、（１−０．１＝０．９）倍される。
【００４１】
図４のテーブルＬ２において、温度差分が「２０度以上」に対応する第１の動作周波数の低減率が「０」となっている。第１の動作周波数の低減率が０であるということは、第２の動作周波数は、第１の動作周波数から低下させないということである。つまり、この「２０度」は、第１の動作周波数の低減率を０にするための基準値である。すなわち、温度差分が２０度未満であれば、温度差分に基づく低減率が０となり、例えば、温度上昇率に基づく低減率が高い数値となっていても、第１の動作周波数を低下させずに第２の動作周波数とする。制御部は、温度差分が基準値より大きい場合、短時間ではＣＰＵ１１０が限界温度に達しないため、温度上昇を抑制することを考慮せず、負荷に応じて決定した第１の動作周波数を第２の動作周波数とする。
【００４２】
次に、温度上昇率に基づいて第１の動作周波数を低減させるときの、第１の動作周波数の低減率の決定方法について説明する。
【００４３】
制御部は、温度上昇率が大きい程、第１の動作周波数の低減率を大きくする。温度上昇率が大きいということは、ＣＰＵ１１０が限界温度に達するまでの時間が短いということである。よって、制御部は、ＣＰＵ１１０の温度浄書率を抑制するため、第１の動作周波数の低減率を大きくし、第２の動作周波数を低くする。温度上昇率に基づく第１の動作周波数の低減率は、例えば、以下のように決定する。
【００４４】
図５は、温度上昇率と第１の動作周波数の低減率との対応関係を示すテーブルの例を表す図である。テーブルＬ３に記憶されている情報としては、「温度上昇率」と「動作周波数の低減率」がある。「温度上昇率」は、ＣＰＵ１１０の温度上昇率の範囲である。「動作周波数の低減率」は、「温度上昇率」に記載されている温度上昇率の範囲に対応する第１の動作周波数の低減率である。制御部は、テーブルＬ３より、Ｓ１１で算出した温度上昇率に対応する第１の動作周波数の低減率を抽出する。制御部は、例えば、温度上昇率が２３４である場合、テーブルＬ３の「２００以上３００未満」に対応する「０．２」を第１の動作周波数の低減率として抽出する。
【００４５】
図５のテーブルＬ３において、温度上昇率が「１００未満」に対応する第１の動作周波数の低減率が「０」となっている。第１の動作周波数の低減率が０であるということは、第２の動作周波数は、第１の動作周波数から低下させないということである。つまり、この「１００未満」は、第１の動作周波数の低減率を０にするための基準値である。すなわち、温度上昇率が「１００未満」であれば、温度上昇率に基づく低減率が０となり、例えば、温度差分に基づく低減率が高い数値となっていても、第１の動作周波数を低下させずに第２の動作周波数とする。よって、制御部は、温度上昇率が基準値より大きい場合、短時間ではＣＰＵ１１０が限界温度に達しないため、温度上昇を抑制することを考慮せず、負荷に応じて決定した第１の動作周波数を第２の動作周波数とする。
【００４６】
また、基準値は０以下の数値を含んでおり、温度が低下しているときの低減率も規定している。例えば、温度が下降している場合、ＣＰＵ１１０は短時間で限界温度に達しないため、第１の動作周波数を低減しなくてもよい。温度が下降しているとき、温度上昇率は０以下であるため、基準値を図５に示す「１００未満」、すなわち、０以下の温度上昇率の低減率を規定することで、温度が下降しているときの低減率を０にすることができる。
【００４７】
制御部は、第１の動作周波数、温度差分に基づく第１の動作周波数の低減率、及び温度上昇率に基づく第１の動作周波数の低減率から、第２の動作周波数を決定する。第２の動作周波数は、例えば、以下の式で算出する。
【００４８】
第２の動作周波数をＦｒ、第１の動作周波数をＦｔ、温度上昇率に基づく第１の動作周波数の低減率をＤｒ、温度差分に基づく第１の動作周波数の低減率をＤｇとする。Ｆｒは以下の式（２）で算出する。
【００４９】
Ｆｒ＝Ｆｔ×（１−Ｄｒ×Ｄｇ）・・・（２）
式（２）では、第２の動作周波数を、第１の動作周波数に、温度上昇率に基づく低減率と温度差分による上昇率を積算したものを１から減算した結果を、積算することで算出している。（Ｄｒ×Ｄｇ）は、温度上昇率に基づく低減率と温度差分に基づく低減率を積算した数値で、第１の動作周波数を低下させる総合的な低減率である。この式（２）を用いて算出することで、例えば、温度上昇率が「４００以上」（低減率は「１．０」）と大きい場合でも、温度差分が「１５度以上２０度未満」（低減率は「０．１」）と大きければ、総合的なの低減率（１．０×０．１＝０．１）は低い数値となる。この例で算出した総合的な低減率は、第１の動作周波を大きく低下させないことを示している。式（２）は、温度上昇率と温度差分の低減率のどちらか一方が大きく、どちらか一方が小さい場合、総合的な低減率は小さいほうの低減率に近い数値となる。式（２）を使用して総合的な低減率を算出することで、第１の動作周波数をなるべく大きく低下させないことができる。すなわち、なるべく高い動作周波数を維持することができる。
【００５０】
なお、総合的な低減率は、例えば、温度上昇率に基づく低減率と温度差分に基づく低減率の平均値であってもよい。この場合、温度上昇率と温度差分の低減率のどちらか一方が大きく、どちらか一方が小さい場合、総合的な低減率は大きいほうの低減率に近い数値となる。この算出方法を使用すると、式（２）に比べて、第１の動作周波数の低減率が大きくなる傾向にあるが、よりＣＰＵ１１０の温度上昇を抑制することができる。
【００５１】
式（２）にそれぞれの値を代入して、Ｆｒを算出すると、
Ｆｒ＝１０００×（１−０．１×０．２）＝９８０
となり、第２の動作周波数は９８０ＭＨｚに決定する。
【００５２】
次に、制御部は、ＣＰＵ１１０の動作周波数を、第２の動作周波数に設定する（Ｓ１４）。制御部は、Ｓ１３で算出した第２の動作周波数なるよう、動作周波数生成部１１１に命令する。動作周波数生成部１１１は、クロック発生部１５０から受信したクロック信号を分周し、ＣＰＵ１１０の動作周波数を第２の動作周波数に設定する。
【００５３】
次に、制御部は、一定時間が経過すると、ＣＰＵ１１０の現在温度を取得し（Ｓ１０）、動作周波数変更処理を行う。
【００５４】
第１の実施の形態では、ＣＰＵ１１０の負荷が上昇すれば、第１の動作周波数も大きくなる。ＣＰＵ１１０は、温度が限界温度より十分に低ければ、ＣＰＵ１１０の負荷に応じた第１の動作周波数をＣＰＵ１１０の動作周波数として設定し、温度が限界温度に近くなると、ＣＰＵ１１０の負荷に応じた第１の動作周波数より低い動作周波数を設定する。制御部は、ＣＰＵ１１０の負荷に応じた第１の動作周波数より低い動作周波数にすることで、温度が上昇するのを抑制し、ＣＰＵ１１０が限界温度に達しないようにする。第１の動作周波数の低減率は、温度差分に基づいて決定し、温度差分が小さいほど第１の動作周波数の低減率を大きくする。温度差分が小さいほど、短い時間でＣＰＵ１１０が限界温度に達するので、より大きく動作周波数を低下させ、温度上昇を抑制する。
【００５５】
また、ＣＰＵ１１０は、温度上昇率が十分に小さければ、ＣＰＵ１１０の負荷に応じた第１の動作周波数をＣＰＵ１１０の動作周波数として設定するが、温度上昇率が大きくなると、ＣＰＵ１１０の動作周波数を、第１の動作周波数を低減した動作周波数に設定する。第１の動作周波数の低減率は、温度上昇率に基づいて決定し、温度上昇率が大きいほど大きくなる。温度上昇率が大きいほど、短い時間でＣＰＵ１１０が限界温度に達するということであり、温度上昇を抑制するため、第１の動作周波数よりも低い動作周波数に設定する。
【００５６】
＜従来方式との比較＞
第１の実施の形態では、ＣＰＵ１１０にかかる負荷に応じて決定した第１の動作周波数を、温度上昇率と温度差分とに基づいて算出した第１の動作周波数の低減率に応じて低下させ、第２の動作周波数を決定し、ＣＰＵ１１０の動作周波数を第２の動作周波数に設定する。
【００５７】
第１の実施の形態におけるＣＰＵ１１０の処理性能について、例えば、温度上昇率や温度差分を考慮しないで動作周波数を決定する従来方式と比較して説明する。
【００５８】
まず、従来方式について説明する。従来方式では、ＣＰＵ１１０にかかる負荷に応じて動作周波数を決定する。そして、ＣＰＵ１１０の温度が限界温度以上になると動作周波数を所定の動作週数に低下させ、ＣＰＵ１１０が制限解除温度になるまで低下させた所定の動作周波数を維持する。制限解除温度とは、ＣＰＵ１１０が限界温度より十分に温度が低下したと判断する温度である。
【００５９】
図６は、第１の実施の形態と比較対象方式における、動作周波数及び温度を時間経過で示した図である。図６（Ａ）のグラフは、縦方向にＣＰＵ１１０の動作周波数を示しており、図６（Ｂ）のグラフは、縦方向にＣＰＵ１１０の温度を示している。図６（Ａ）及び（Ｂ）のグラフは、横方向に時間を示しており、両グラフとも同じ時間軸である。また、図６（Ａ）及び（Ｂ）のグラフは、一点破線が従来方式であり、実線が第１の実施の形態である。なお、図６は、ＣＰＵ１１０にかかる負荷が一定である場合のグラフである。
【００６０】
まず、従来方式について説明する。時刻ｔ０からｔ２までは、ＣＰＵの負荷に応じた動作周波数（Ｆｈ）を維持し、ＣＰＵの温度上昇率は一定であり、温度は上がり続ける。時刻ｔ２でＣＰＵが限界温度（Ｔｈ）に達すると、動作周波数を所定の値（Ｆｌ）に低下させる。時刻ｔ２からｔ４までは、動作周波数は低下した所定の値（Ｆｌ）を維持し、温度は下がり続ける。時刻ｔ４で、ＣＰＵの温度が制限解除温度（Ｔｌ）に達すると、再び動作周波数を低下させる前の、ＣＰＵの負荷に応じた動作周波数（Ｆｈ）に戻す。このように、従来方式では、ＣＰＵが限界温度に達すると、動作周波数を低下させ、ＣＰＵの温度を下げている。
【００６１】
次に、第１の実施の形態ついて説明する。時刻ｔ０からｔ１までは、ＣＰＵ１１０の限界温度（Ｔｈ）と現在温度の温度差分が十分に大きいため、第１の動作周波数の低減率は０である。そのため、この時間帯は、ＣＰＵ１１０の負荷に応じて算出した第１の動作周波数が、ＣＰＵ１１０に設定する。時刻ｔ１において、ＣＰＵ１１０の限界温度（Ｔｈ）と現在温度の温度差分が小さくなると、第１の動作周波数の低減率を大きくする。すなわち、制御部は、ＣＰＵ１１０の動作周波数を第１の動作周波数よりも低く設定し、温度上昇を抑制する。温度上昇を抑制した結果、時刻ｔ３において、ＣＰＵ１１０の限界温度（Ｔｈ）と現在温度の温度差分が大きくなると、第１の動作周波数の低減率を小さくする。すなわち、ＣＰＵ１１０は、ＣＰＵ１１０の動作周波数を第１の動作周波数に近づける。そして、時刻ｔ５において、ＣＰＵ１１０の限界温度と現在温度の温度差分が十分に大きくなると、第１の動作周波数の低減率を０にし、第１の動作周波数をＣＰＵ１１０に設定する。
【００６２】
このように、第１の実施の形態においては、温度上昇率と、限界温度との温度差分に基づいて動作周波数を調整している。そのため、図６（Ｂ）のグラフに示すように、ＣＰＵ１１０の温度は限界温度に達することはない。また、図６（Ａ）のグラフで示すように、動作周波数が従来方式のように低下せず、高い動作周波数を維持しつつＣＰＵ１１０の温度を下げることができる。動作周波数を比較すると、時刻ｔ１からｔ２までの間と、時刻ｔ４からｔ５までの間では、従来方式のほうが高い動作周波数を維持しているものの、時刻ｔ２からｔ４までの間は、第１の実施の形態のほうが高い動作周波数を維持している。従って、時刻ｔ１からｔ５までの間での動作周波数の積分値を比較すると、第１の実施の形態のほうが高い数値となっている。すなわち、動作周波数の積分値は仕事量と比例することから、動作周波数の積分値が高い第１の実施の形態は、従来方式よりもＣＰＵ１１０の処理性能が高いと言える。
【００６３】
また、図６（Ａ）のグラフから、第１の実施の形態では、従来方式と比べて高い動作周波数を維持していることがわかる。例えば、動画再生など、高負荷が長く続く処理においては、比較対象方式では動作周波数が低下している時間帯（時刻ｔ２〜ｔ４）は、動画を円滑に再生できない場合もある。しかし、第１の実施の形態は、高い動作周波数を維持しているため、長時間の動画再生でも、円滑に動画を再生できる。
【００６４】
なお、第１の実施の形態においては、ＣＰＵ１１０の動作周波数を低下させることで、ＣＰＵ１１０の温度上昇を抑制している。しかし、ＣＰＵ１１０のコア数を減少させること、またはＣＰＵ１１０のコア数の減少及び動作周波数の低下の両方を行うことで、ＣＰＵ１１０の温度上昇を抑制してもよい。ＣＰＵ１１０のコア数とは、ＣＰＵ１１０が演算を並列で処理できる数であり、ＣＰＵ１１０のコア数が増加すると、ＣＰＵ１１０の発熱量も増加し、温度も上昇する。よって、ＣＰＵ１１０のコア数を減少させることは、ＣＰＵ１１０の発熱量を減少させ、温度の上昇を抑制でき、動作周波数を低下させることと同様の効果を持つ。
【００６５】
［第２の実施の形態］
次に第２の実施の形態について説明する。
【００６６】
＜動作周波数変更処理＞
図７は、制御部が行う動作周波数変更処理のフローチャートの例を表した図である。
【００６７】
第２の実施の形態では、図７に示すＳ１０、Ｓ１１、Ｓ１２、Ｓ１４、Ｓ１５の処理は、図２に示すそれぞれの処理と同様である。
【００６８】
制御部は、ＣＰＵ１１０の現在温度を取得し、メモリに記憶すると（Ｓ１０）、ＣＰＵの負荷を取得し、メモリに記憶する（Ｓ１１）。ＣＰＵ１１０の負荷は、例えば、ＣＰＵ１１０の使用率であり、ＣＰＵ１１０のアイドル時間から算出する。制御部は、ＣＰＵ１１０の負荷をＲＡＭ１３０に記憶する。ＲＡＭ１３０には、ＣＰＵ１１０の負荷の履歴を記憶する負荷履歴テーブルが存在する。
【００６９】
図８は、負荷履歴テーブルの例を表す図である。負荷履歴テーブルＬ４に記憶される情報としては、「測定タイミング」と「負荷（％）」がある。「測定タイミング」は、制御部がＣＰＵ１１０の負荷を取得した時刻である。「負荷（％）」は、制御部が取得したＣＰＵ１１０の負荷である。負荷は、例えば、ＣＰＵ１１０の使用率であり、単位はパーセント（％）である。負荷履歴テーブルＬ４は、制御部がＣＰＵ１１０の負荷を取得するたびに追加されるが、記憶している測定タイミングの数が所定の数を超えると、最も古い測定タイミングの負荷を削除してもよい。
【００７０】
次に、制御部は、温度上昇率を算出し（Ｓ１１）、ＣＰＵ１１０の現在温度と限界温度の温度差分を算出する（Ｓ１２）。
【００７１】
制御部は、さらに、ＣＰＵ１１０の負荷上昇率を算出する（Ｓ２１）。負荷上昇率は、ＣＰＵ１１０の負荷が、ある一定時間において上昇する割合を表す指標である。負荷上昇率は、例えば、以下の方法で算出する。
【００７２】
負荷上昇率をＲｌ、ある測定タイミングｔｘでの負荷をＬｘとする。「ｘ」は、１が現在を示し、数字が大きくなる程過去の測定タイミングを示す。このとき、Ｒｌは以下の式（３）で算出する。
【００７３】
Ｒｌ＝２×（Ｌ１−Ｌ３）＋（Ｌ２−Ｌ４）＋（Ｌ３−Ｌ５）＋０．５（Ｌ４−Ｌ６）・・・（３）
式（３）では、負荷の変化に対して、測定タイミングの新しい順番に重みを付けて、負荷上昇率Ｒｌを算出する。図８における負荷履歴テーブルのデータを式（３）に代入して、負荷上昇率Ｒｌを算出すると、
Ｒｌ＝２×（４０−３６）＋（３７−３５）＋（３６−３０）＋０．５（３５−２８）      Ｒｌ＝１９．５
となり、負荷上昇率Ｒｌは１９．５となる。
【００７４】
負荷上昇率の算出方法の別の例として、今回測定タイミングでの負荷と、前回測定タイミングでの負荷の差分を負荷上昇率とする算出方法がある。また、さらに別の例として、ある測定タイミングでの負荷（Ｌｘ）と、その１回前の測定タイミングでの負荷（Ｌｘ−１）の差分を算出し、算出した過去数回分の負荷の差分の平均値を負荷上昇率とする算出方法がある。
【００７５】
次に、制御部は、ＣＰＵ１１０の第２の動作周波数を決定する（Ｓ２２）。第２の動作周波数の決定は、以下の処理を行う。
【００７６】
制御部は、ＣＰＵ１１０にかかる負荷に応じて第１の動作周波数を決定する。第１の動作周波数を決定する処理は、第１の実施の形態と同様である。制御部は、例えば、ＣＰＵ１１０の使用率が４０％である場合、第１の動作周波数を１０００ＭＨｚと算出する。
【００７７】
次に、制御部は、Ｓ１２で算出した温度差分、Ｓ１１で算出した温度上昇率、Ｓ２１で算出した負荷上昇率、及びＣＰＵ１１０の熱放射率に基づいて、第１の動作周波数を低減させた第２の動作周波数を決定する。ＣＰＵ１１０の熱放射率とは、ＣＰＵ１１０が単位時間あたりに放出する熱量を示す指標である。
【００７８】
温度差分に基づく第１の動作周波数の低減率の決定方法、及び温度上昇率に基づく第１の動作周波数の低減率の決定方法は、第１の実施の形態と同様である。
【００７９】
負荷上昇率に基づく第１の動作周波数の低減率の決定方法について説明する。制御部は、負荷上昇率が大きい程、第１の動作周波数の低減率を大きくする。負荷上昇率が大きいということは、これから温度上昇率がさらに大きくなることが予測できる。そこで、制御部は、ＣＰＵ１１０の温度の上昇を抑制するため、第１の動作周波数を大きく低下させた第２の動作周波数をＣＰＵ１１０に設定する。負荷上昇率に基づく第１の動作周波数の低減率は、例えば、以下のように決定する。
【００８０】
図９は、負荷上昇率と第１の動作周波数の低減率との対応関係を示すテーブルＬ５である。テーブルＬ５に記憶されている情報としては、「負荷上昇率」と「動作周波数の低減率」がある。「負荷上昇率」は、ＣＰＵ１１０の負荷上昇率の範囲である。「動作周波数の低減率」は、「負荷上昇率」に記載されている負荷上昇率に対応する第１の動作周波数の低減率である。制御部は、テーブルＬ５より、Ｓ２１で算出した負荷上昇率に対応する第１の動作周波数の低減率を抽出する。制御部は、例えば、負荷上昇率が１９．５である場合、テーブルＬ５の「１０以上２０未満」に対応する「０．９」を第１の動作周波数の低減率として抽出する。
【００８１】
なお、負荷上昇率については、温度上昇率や温度差分のように、低減率を０とするための基準値を設定していない。負荷上昇率は、温度上昇率を予測するための要素である。そのため、負荷上昇率が極めて小さい数値であっても、総合的な低減率を０にしてしまうと、例えば、温度上昇率が非常に高い場合でも、低減率が０となってしまい温度上昇を抑制することができなくなる。このようなことを防止するため、負荷上昇率には基準値を設定せず、低減率が０とならないようにする。
【００８２】
次に、熱放射率に基づく第１の動作周波数の低減率の決定方法について説明する。熱放射率は、ＣＰＵ１１０の材質、形状や、冷却装置の精度などにより決まる数値であるため、制御プログラム１２１に固定の数値としてあらかじめ記憶しておく。熱放射率が高ければ、ＣＰＵ１１０の温度上昇率は小さくなり、短い時間ではＣＰＵ１１０が限界温度に達しない。制御部は、熱放射率が高いほど第１の動作周波数の低減率を小さくする。熱放射率に基づく第１の動作周波数の低減率は、例えば０．９である。なお、熱放射率が基準値よりも大きい場合、熱放射率に基づく第１の動作周波数の低減率を０とする。基準値は、例えば、ＣＰＵ１１０の単位時間あたりの発熱量の最大値である。熱放射率が高く、基準値に近似する数値であった場合、ＣＰＵ１１０の温度はほとんど上昇しないため、第１の動作周波数をＣＰＵ１１０の動作周波数として設定する。しかし、情報処理装置が携帯電話などの場合、装置の大きさが小さく、高精度な冷却装置を設置することは困難である。また、ＣＰＵ１１０の大きさも小さいため、ＣＰＵ１１０の表面積も小さく、熱放射率も小さい。よって、低減率を０とするような熱放射率の基準値は、あくまでも理論上の数値である。
【００８３】
制御部は、第１の動作周波数、温度差分に基づく第１の動作周波数の低減率、温度上昇率に基づく第１の動作周波数の低減率、負荷上昇率に基づく第１の動作周波数の低減率、及び熱放射率に基づく第１の動作周波数の低減率から、第２の動作周波数を決定する。第２の動作周波数は、例えば、以下の式で算出する。
【００８４】
第２の動作周波数をＦｒ、第１の動作周波数をＦｔ、温度上昇率に基づく第１の動作周波数の低減率をＤｒ、温度差分に基づく第１の動作周波数の低減率をＤｇ、負荷上昇率に基づく第１の動作周波数の低減率をＤｌ、熱放射率に基づく第１の動作周波数の低減率をＤａとする。Ｆｒは以下の式（４）で算出する。
【００８５】
Ｆｒ＝Ｆｔ×（１−Ｄｒ×Ｄｇ×Ｄｌ×Ｄａ）・・・（４）
式（４）では、第２の動作周波数を、第１の動作周波数に、温度上昇率、温度差分、負荷上昇率、及び熱放射率に基づく低減率を積算したものを１から減算した結果を、積算することで算出している。（Ｄｒ×Ｄｇ×Ｄｌ×Ｄａ）は、４つの低減率を積算した数値で、第１の動作周波数を低下させる総合的な低減率である。式（４）では、第１の実施の形態で説明した式（２）に加えて、負荷上昇率及び熱放射率を考慮にしれた第２の動作周波数を算出する。４つの低減率を積算して総合的な低減率を算出することで、第１の動作周波数をなるべく大きく低下させないことができる。すなわち、なるべく高い動作周波数を維持することができる。
【００８６】
なお、総合的な低減率は、例えば、４つの低減率の平均値であってもよい。この場合、第１の実施の形態と同様に、第１の動作周波数の低減率が大きくなる傾向にあるが、よりＣＰＵ１１０の温度上昇を抑制することができる。
【００８７】
式（４）にそれぞれの値を代入して、Ｆｒを算出すると、
Ｆｒ＝１０００×（１−０．１×０．２×０．９×０．９）＝９８３．８
となり、第２の動作周波数は９８３．８ＭＨｚに決定する。
【００８８】
次に、制御部は、ＣＰＵ１１０の動作周波数を第２の動作周波数に設定し（Ｓ１４）、一定時間が経過するとＣＰＵ１１０の現在温度を取得し、メモリに記憶する（Ｓ１０）。
【００８９】
このように、第２の実施の形態では、ＣＰＵ１１０の負荷上昇率及び熱放射率も考慮し、第１の動作周波数の低減率を決定する。制御部は、負荷上昇率が高い場合、これから温度上昇率上がることを予測し、ＣＰＵ１１０が限界温度に達するまでの時間が短いとみなす。また、制御部は、熱放射率が低い場合、ＣＰＵ１１０の温度上昇率が上がりやすく、ＣＰＵ１１０が限界温度に達するまでの時間が短いとみなす。このようにみなすことで、ＣＰＵ１１０が限界温度に達するまでにどれくらいの時間がかかるかを予測する精度が向上し、より適正な動作周波数を決定できる。
【００９０】
以上、まとめると付記のようになる。
【００９１】
（付記１）
プロセッサの温度を測定する温度センサと、
前記プロセッサにかかる負荷に応じて第１の動作周波数を決定し、
前記プロセッサの温度上昇率及び前記プロセッサの限界温度と前記プロセッサの現在温度との温度差分に基づいて決定した低減率で前記第１の動作周波数を低減させた第２の動作周波数を決定し、
前記プロセッサの動作周波数を前記第２の動作周波数に設定する前記プロセッサを有する
情報処理装置。
【００９２】
（付記２）
前記プロセッサは、前記プロセッサにかかる負荷が大きい程、前記第１の動作周波数を大きくする
付記１記載の情報処理装置。
【００９３】
（付記３）
前記プロセッサは、前記プロセッサの温度上昇率が大きい程、前記低減率を大きくする
付記２記載の情報処理装置。
【００９４】
（付記４）
前記プロセッサは、前記プロセッサの限界温度と前記プロセッサの現在温度との温度差分が小さい程、前記低減率を大きくする
付記３記載の情報処理装置。
【００９５】
（付記５）
前記プロセッサは、前記プロセッサの温度上昇率に基づく第１の低減率と、前記プロセッサの限界温度と前記プロセッサの現在温度との温度差分に基づく第２の低減率とをそれぞれ決定し、前記第１及び第２の低減率を積算した結果で前記第１の動作周波数を低減させた第２の動作周波数を決定する
付記４記載の情報処理装置。
【００９６】
（付記６）
前記プロセッサは、前記プロセッサの温度上昇率が第１の基準値より小さいとき、前記低減率を０にする
付記４記載の情報処理装置。
【００９７】
（付記７）
前記プロセッサは、前記プロセッサの限界温度と前記プロセッサの現在温度との温度差分が第２の基準値より大きいとき、前記低減率を０にする
付記４記載の情報処理装置。
【００９８】
（付記８）
前記プロセッサは、前記プロセッサが単位時間あたりに放出する熱量を表す熱放射率が小さい程、前記低減率を大きくする
付記４記載の情報処理装置。
【００９９】
（付記９）
前記プロセッサは、前記プロセッサにかかる負荷上昇率が高い程、前記低減率を大きくする
付記８記載の情報処理装置。
【０１００】
（付記１０）
前記プロセッサは、前記プロセッサの温度上昇率に基づく第１の低減率と、前記プロセッサの限界温度と前記プロセッサの現在温度との温度差分に基づく第２の低減率と、前記熱放射率に基づく第３の低減率と、前記負荷上昇率に基づく第４の低減率とをそれぞれ決定し、前記第１、第２、第３、及第４の低減率を積算した結果で前記第１の動作周波数を低減させた第２の動作周波数を決定する
付記９記載の情報処理装置。
【０１０１】
（付記１１）
前記プロセッサは、前記プロセッサの前記熱放射率が第３の基準値より大きいとき、前記低減率を０にする
付記８記載の情報処理装置。
【０１０２】
（付記１２）
プロセッサの温度を測定する温度センサと、
前記プロセッサを有する情報処理装置の前記プロセッサに実行させる動作周波数制御プログラムであって、
前記プロセッサにかかる負荷に応じて第１の動作周波数を決定し、
前記プロセッサの温度上昇率及び前記プロセッサの限界温度と前記プロセッサの現在温度との温度差分に基づいて決定した低減率で前記第１の動作周波数を低減させた第２の動作周波数を決定し、
前記プロセッサの動作周波数を前記第２の動作周波数に設定する
処理を前記プロセッサに実行させる動作周波数制御プログラム。
【０１０３】
（付記１３）
プロセッサの温度を測定する温度センサと、
前記プロセッサを有する情報処理装置における動作周波数制御方法であって、
前記プロセッサによって、前記プロセッサにかかる負荷に応じて第１の動作周波数を決定し、
前記プロセッサの温度上昇率及び前記プロセッサの限界温度と前記プロセッサの現在温度との温度差分に基づいて決定した低減率で前記第１の動作周波数を低減させた第２の動作周波数を決定し、
前記プロセッサの動作周波数を前記第２の動作周波数に設定する
動作周波数制御方法。
【符号の説明】
【０１０４】
１００…情報処理装置                １１０…ＣＰＵ
１１１…動作周波数生成部            １２０…ストレージ
１２１…制御プログラム              １３０…ＲＡＭ
１４０…温度検出部                  １５０…クロック発生部
【図１】
0006448035.tif 000002
【図２】
0006448035.tif 000003
【図３】
0006448035.tif 000004
【図４】
0006448035.tif 000005
【図５】
0006448035.tif 000006
【図６】
0006448035.tif 000007
【図７】
0006448035.tif 000008
【図８】
0006448035.tif 000009
【図９】
0006448035.tif 000010