(57)【特許請求の範囲】
【請求項１】
所定の時間内に実行された命令数を実行命令数としてカウントするカウント手段と、
命令を実行する所定のユニット付近の温度を計測する温度計測手段と、
あらかじめ設定された第１の温度を前記所定のユニット付近の温度が超えたときの前記実行命令数を第１の命令数として記憶する第１の記憶手段と、
あらかじめ設定され、前記第１の温度よりも高い第２の温度を前記所定のユニット付近の前記温度が超えたときの前記実行命令数を第２の命令数として記憶する第２の記憶手段と、
前記所定の時間に実行する命令の数が前記第２の命令数より小さく、前記第１の命令数より大きくなるように命令の実行を制御する制御手段と
を備えることを特徴とするプロセッサ。
【請求項２】
前記第２の記憶手段に記憶された前記第２の命令数と、前記カウント手段がカウントした前記実行命令数とを比較する比較手段をさらに備え、
前記制御手段は、前記所定のユニット付近の前記温度が、前記第２の温度を超えているときに、前記実行命令数の値よりも前記第２の命令数の値が大きい場合に、前記第２の命令数の値を前記実行命令数の値となるように更新することを特徴とする請求項１に記載のプロセッサ。
【請求項３】
前記制御手段は、前記所定のユニット付近の前記温度が、前記第２の温度を下回っているときに、前記実行命令数の値よりも前記第２の命令数の値が小さい場合に、前記第２の命令数の値を第２の所定の値、増加させることを特徴とする請求項２に記載のプロセッサ。
【請求項４】
前記比較手段は、前記第１の記憶手段に記憶された前記第１の命令数と、前記カウント手段がカウントした前記実行命令数とを比較する手段をさらに備え、
前記制御手段は、前記所定のユニット付近の前記温度が、前記第１の温度未満となったときに、前記実行命令数の値よりも前記第１の命令数の値が小さい場合に、前記第１の命令数の値を前記実行命令数の値となるように更新することを特徴とする請求項２または３いずれかに記載のプロセッサ。
【請求項５】
前記制御手段は、前記所定のユニット付近の前記温度が、前記第１の温度を超えたときに、前記実行命令数の値よりも前記第１の命令数の値が大きい場合に、前記第１の命令数の値を第１の所定の値、減少させることを特徴とする請求項４に記載のプロセッサ。
【請求項６】
前記温度計測手段は、前記所定のユニット付近の温度として複数の箇所で温度を計測する手段を備え、前記第１の命令数および前記第２の命令数が温度を計測する箇所に応じて設定されていることを特徴とする請求項１から５いずれかに記載のプロセッサ。
【請求項７】
所定の時間内に実行された命令数を実行命令数としてカウントし、
命令を実行する所定のユニット付近の温度を計測し、
あらかじめ設定された第１の温度を前記所定のユニット付近の前記温度が超えたときの前記実行命令数を第１の命令数として記憶し、
あらかじめ設定され、前記第１の温度よりも高い第２の温度を前記所定のユニット付近の前記温度が超えたときの前記実行命令数を第２の命令数として記憶し、
前記所定の時間に実行する命令の数が前記第２の命令数より小さく、前記第１の命令数より大きくなるように命令の実行を制御することを特徴とするプロセッサの制御方法。
【請求項８】
記憶された前記第２の命令数と、カウントした前記実行命令数とを比較し、
前記所定のユニット付近の前記温度が、前記第２の温度を超えているときに、前記実行命令数の値よりも前記第２の命令数の値が大きい場合に、前記第２の命令数の値を前記実行命令数の値となるように更新することを特徴とする請求項７に記載のプロセッサの制御方法。
【請求項９】
記憶された前記第１の命令数と、前記実行命令数とを比較し、
前記所定のユニット付近の前記温度が、前記第１の温度未満となったときに、前記実行命令数の値よりも前記第１の命令数の値が小さい場合に、前記第１の命令数の値を前記実行命令数の値となるように更新することを特徴とする請求項７または８いずれかに記載のプロセッサの制御方法。
【請求項１０】
前記所定のユニット付近の温度として複数の箇所で温度を計測し、
前記第１の命令数および前記第２の命令数を温度を計測する箇所に応じて設定することを特徴とする請求項７から９いずれかに記載のプロセッサの制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、特に半導体プロセッサに関するものであり、特に半導体プロセッサの命令実行制御に関するものである。
【背景技術】
【０００２】
情報処理装置や通信端末装置等の高性能化にともない使用されるプロセッサの高性能化が進んでいる。高性能化にともないプロセッサは高クロックで動作するため、消費電力や発熱量も増大する傾向にある。また、情報処理装置等の用途の多様化によってプロセッサは様々な環境での動作が要求されるようになっている。情報処理装置等の重要性が増していることから、様々な環境で使われた場合においても高可用性が求められている。そのため、プロセッサには、様々な環境下で使用された際にも性能の維持と安定動作の両立が求められることが多い。
【０００３】
モバイル用途のプロセッサでは消費電力を抑制して稼働時間を長くするために、例えば、ＤＶＦＳ（Dynamic Voltage and Frequency Scaling）制御技術が用いられる。ＤＶＦＳ技術では、プロセッサの動作負荷が高い場合には、通常の動作周波数および動作電圧で稼働し、動作負荷が低い場合には動作周波数や動作電圧を下げることにより消費電力等を抑制しつつ、必要な性能が維持される。
【０００４】
また、複数のプロセッサを備えるサーバのような情報処理装置では、動作負荷の軽いプロセッサの動作を抑制して、他のプロセッサの動作周波数を上げて性能を高くする技術が用いられることもある。このような動作を行うことで、消費電力の増大や装置内の発熱を抑制しつつ性能を高くすることが可能となる。
【０００５】
プロセッサには、冷却機能が備えられていることが多いが、動作負荷が高くなったときに冷却能力を超えて温度が上昇する可能性がある。温度上昇は、半導体素子の特性変化による動作不良や、半導体素子や配線の信頼性および寿命の低下をもたらす。そのため、温度上昇を抑制するために、プロセッサの温度を監視して動作状態を制御する技術の開発が行われている。そのような動作状態を制御する方法としては、例えば、温度上昇時に、クロック数を抑制した状態で稼動する方法が用いられる。プロセッサの温度を監視して動作状態を制御する技術としては、例えば、特許文献１のような技術が開示されている。
【０００６】
特許文献１は、温度制御部を備えた処理装置に関するものである。特許文献１の処理装置は、温度測定部と、温度ごとに実行可能な命令数を設定したデータデーブルを備えている。特許文献１の温度ごとのデータテーブルは、クロック数、命令実行が可能な時間および実行可能な命令数の情報を有している。特許文献１の処理装置の制御部は、温度測定結果に応じたデータテーブルを参照して、実行を予定している命令数等を基に命令を実行する際のクロック数を判断している。特許文献１の処理装置の制御部は、命令を実行する際に判断したクロック数で命令が実行されるように制御を行う。特許文献１では、データテーブルと温度測定結果を基にクロック数を判断することで、温度上昇を抑制しつつ必要な処理能力を確保して出来るだけ高速な命令実行が可能になるとしている。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２０１１−１３８２１７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかしながら、特許文献１の技術は次のような点で十分ではない。特許文献１の処理装置は、あらかじめ設定されたデータテーブルを参照して命令実行可能なクロック数を予測して命令の実行の制御を行っている。そのため、特許文献１の処理装置は、処理装置が備えられている情報処理装置等の使用環境が変わって、温度特性に変化が生じた場合などに正確なクロック数を予測できない可能性がある。また、特許文献１の処理装置は、処理装置として用いている半導体プロセッサの特性が変動した場合や、装置構成が変更された場合などに、温度変化の特性が変わると的確なクロック数を判断できない恐れがある。すなわち、特許文献１の処理装置はあらかじめ設定されたデータテーブルと実際の特性にずれが生じたときに適正なクロック数を判断することができない。そのような場合に、特許文献１の処理装置では、温度上昇による動作不良が生じる恐れや、電力量の抑制が十分に行えない恐れが生じる。よって、特許文献１の技術は、動作環境によらずに温度に応じた的確な制御を行うことが可能なプロセッサに用いる技術としては十分ではない。
【０００９】
本発明は、動作環境によらずに温度に応じた的確な制御を行うことが可能なプロセッサを得ることを目的としている。
【課題を解決するための手段】
【００１０】
上記の課題を解決するため、本発明のプロセッサは、カウント手段と、温度計測手段と、第１の記憶手段と、第２に記憶手段と、制御手段を備えている。カウント手段は、所定の時間内に実行された命令数を実行命令数としてカウントする。温度計測手段は、命令を実行する所定のユニット付近の温度を計測する。第１の記憶手段は、あらかじめ設定された第１の温度を所定のユニット付近の温度が超えたときの実行命令数を第１の命令数として記憶する。第２の記憶手段は、あらかじめ設定され、第１の温度よりも高い第２の温度を所定のユニット付近の温度が超えたときの実行命令数を第２の命令数として記憶する。制御手段は、所定の時間に実行する命令の数が第２の命令数より小さく、第１の命令数より大きくなるように命令の実行を制御する。
【００１１】
本発明のプロセッサの制御方法は、所定の時間内に実行された命令数を実行命令数としてカウントし、命令を実行する所定のユニット付近の温度を計測する。本発明のプロセッサの制御方法は、あらかじめ設定された第１の温度を所定のユニット付近の温度が超えたときの実行命令数を第１の命令数として記憶する、本発明のプロセッサの制御方法は、あらかじめ設定され、第１の温度よりも高い第２の温度を所定のユニット付近の温度が超えたときの実行命令数を第２の命令数として記憶する。本発明のプロセッサの制御方法は、所定の時間に実行する命令の数が第２の命令数より小さく、第１の命令数より大きくなるように命令の実行を制御する。
【発明の効果】
【００１２】
本発明によると、動作環境によらずに温度に応じた的確な制御を行うことができる。
【図面の簡単な説明】
【００１３】
【図１】本発明の第１の実施形態の構成の概要を示す図である。
【図２】本発明の第２の実施形態の構成の概要を示す図である。
【図３】本発明の第２の実施形態の構成の一部を示した図である。
【図４】本発明の第２の実施形態の構成の一部を示した図である。
【図５】本発明の第２の実施形態における動作フローの概要を示した図である。
【図６】本発明の第２の実施形態のプロセッサの温度変化の例を示す図である。
【図７】本発明の第２の実施形態における各信号の例を示す図である。
【図８】本発明の第３の実施形態の構成の概要を示す図である。
【図９】本発明の第３の実施形態の構成の一部を示した図である。
【図１０】本発明の第３の実施形態における動作フローの概要を示した図である。
【図１１】本発明の第３の実施形態における動作フローの一部を示した図である。
【図１２】本発明の第３の実施形態における動作フローの一部を示した図である。
【図１３】本発明の第３の実施形態のプロセッサの温度変化の例を示す図である。
【図１４】本発明の第３の実施形態のプロセッサの温度変化の例を示す図である。
【発明を実施するための形態】
【００１４】
（第１の実施形態）
本発明の第１の実施形態について図を参照して詳細に説明する。図１は、本実施形態のプロセッサの構成の概要を示したものである。本実施形態のプロセッサは、カウント手段１と、温度計測手段２と、第１の記憶手段３と、第２の記憶手段４と、制御手段５を備えている。
【００１５】
カウント手段１は、所定の時間内に実行された命令数を実行命令数としてカウントする。温度計測手段２は、命令を実行する所定のユニット付近の温度を計測する。第１の記憶手段３は、あらかじめ設定された第１の温度を所定のユニット付近の温度が超えたときの実行命令数を第１の命令数として記憶する。第２の記憶手段４は、あらかじめ設定され、第１の温度よりも高い第２の温度を所定のユニット付近の温度が超えたときの実行命令数を第２の命令数として記憶する。制御手段５は、所定の時間に実行する命令の数が第２の命令数より小さく、第１の命令数より大きくなるように命令の実行を制御する。
【００１６】
本実施形態のプロセッサは、あらかじめ設定された第１の温度と第２の温度を、温度計測手段２によって計測を行っている所定のユニット付近の温度が超えたときに、カウント手段１がカウントした所定の時間に実行された命令数を保存している。本実施形態のプロセッサは、カウント手段１がカウントした命令数を、第１の温度では第１の命令数、第２の温度では第２の命令数として記憶手段３と第２の記憶手段４にそれぞれ保存している。また、制御手段５は、所定の時間に実行する命令の数が第２の命令数より小さく、第１の命令数より大きくなるように命令の実行を制御している。
【００１７】
このように、第１の温度および第２の温度において実際に実行された命令数を保存し、保存した２つの命令数の間になるように命令の実行数を制御することで、プロセッサの温度が第１の温度と第２の温度の間で推移する可能性が高くなる。そのため、本実施形態のプロセッサでは、温度上昇によってプロセッサの動作に不具合が生じる状態を避けることができる。また、本実施形態のプロセッサでは、実際に計測した結果に基づいて、命令の実行数を制御するので環境が変化しても環境に応じた制御を行うことが可能となる。以上より、本実施形態のプロセッサでは、動作環境によらずに温度に応じた的確な制御を行うことができる。
【００１８】
（第２の実施形態）
本発明の第２の実施形態について図を参照して詳細に説明する。図２は、本実施形態のプロセッサの構成の概要を示したものである。本実施形態のプロセッサは、演算処理部１０と、温度制御部２０を備えている。また、演算処理部１０は、プロセッサが備えられた情報処理装置の主記憶装置とも接続されている。
【００１９】
演算処理部１０の構成について詳細に説明する。図３は演算処理部１０の構成の概要を示したものである。
【００２０】
演算処理部１０は、命令キャッシュ部１１と、命令フェッチ部１２と、命令デコード部１３と、命令制御部１４を備えている。また、演算処理部１０は、ロード／ストア部１５−１と、整数演算部１５−２と、浮動小数点演算部１５−３と、分岐部１５−４をさらに備えている。また、演算処理部１０は、レジスタファイル部１６と、データキャッシュ部１７と、メモリ管理部１８をさらに備えている。また、演算処理部１０は、温度センサ１９をさらに備えている。
【００２１】
命令キャッシュ部１１は、演算処理部１０が実行する命令のデータを保存する機能を有する。命令キャッシュ部１１は、演算処理部１０が実行する命令のデータを命令列として複数、保存している。命令キャッシュ部１１に命令列として保存されているデータは１つであってもよい。命令キャッシュ部１１に保存されている命令のデータは、メモリ管理部１８を介して主記憶装置から入力される。
【００２２】
命令フェッチ部１２は、命令のデータを読み出して命令デコード部１３に送る機能を有する。命令フェッチ部１２は、命令キャッシュ部１１に命令列として保存されているデータを読み出して、命令デコード部１３に送る。
【００２３】
命令デコード部１３は、入力された命令のデコードを行う機能を有する。命令デコード部１３は、命令列として入力された複数の命令を命令発行や命令実行の順になるようにデコードを行う。デコードが行われた命令は、命令制御部１４に送られる。
【００２４】
命令制御部１４は、命令発行および命令実行を制御する機能を有する。命令制御部１４は、命令デコード部１３から入力された命令のデータを基に、命令間の依存性の解析および命令実行に必要なリソースの割り当て等のリソース管理を行う。命令制御部１４は、依存性の解析およびリソース管理の結果を基に、命令種別ごとに対応する命令実行ユニットに命令を発行する。本実施形態では命令実行ユニットとして、ロード／ストア部１５−１、整数演算部１５−２、浮動小数点演算部１５−３および分岐部１５−４が備えられている。
【００２５】
命令制御部１４は、複数の命令実行ユニットに同時に命令を送って実行させることもできる。また、命令実行ユニットには、ロード／ストア部１５−１、整数演算部１５−２、浮動小数点演算部１５−３および分岐部１５−４以外の機能ユニットが備えられていてもよい。また、各ユニットが複数、備えられていてもよい。
【００２６】
命令制御部１４は、命令実行の制御を行う際に所定の時間あたりの命令の実行数が最大実行可能命令数と最小実行命令数の間となるように制御を行う。最大実行可能命令数と最小実行命令数の情報は、上限命令数信号Ｓ３２および下限命令数信号Ｓ３３として温度制御部２０から入力される。最大実行可能命令数と最小実行命令数の設定方法については、後で説明する。
【００２７】
また、命令制御部１４は温度制御部２０から温度状態信号Ｓ３１として送られてくるプロセッサの温度の情報に基づいて、命令実行の制御を行う。命令制御部１４は、プロセッサの温度が上限設定温度としてあらかじめ設定されている温度を超えたと判断したときに、所定の抑制状態となるように制御を行う。所定の抑制状態とするための制御方法としては、例えば、スロットリング制御が用いられる。命令制御部１４は、所定の抑制状態のときに、プロセッサの温度が下限設定温度としてあらかじめ設定されている温度を下回ったと判断したときに通常の動作状態の制御に移行する。また、本実施形態の命令制御部１４は、第１の実施形態の制御手段５に相当する。
【００２８】
ロード／ストア部１５−１は、命令制御部１４から送られてくる命令に基づいて、データキャッシュ部１７のデータを参照して、レジスタファイル部１６との間でデータの読み出し動作および書き込み動作を行う機能を有する。
【００２９】
整数演算部１５−２は、命令制御部１４から送られてくる命令に基づいて、整数演算を行う機能を有する。
【００３０】
浮動小数点演算部１５−３は、命令制御部１４から送られてくる命令に基づいて、浮動小数点演算を行う機能を有する。
【００３１】
分岐部１５−４は、命令制御部１４から送られてくる命令に基づいて、必要な分岐処理を行う機能を有する。
【００３２】
ロード／ストア部１５−１、整数演算部１５−２、浮動小数点演算部１５−３および分岐部１５−４の各命令実行ユニットは、命令を実行する際にレジスタファイル部１６にアクセスして命令実行に必要なレジスタの値を読み出す。また、各命令実行ユニットは、命令を実行した際に、必要に応じて命令実行結果をレジスタファイル部１６に書き込む。
【００３３】
レジスタファイル部１６は、命令実行に必要なレジスタの値を保存する機能を有する。レジスタファイル部１６は、各命令実行ユニットからの制御に基づいて、レジスタの値の保存および出力を行う。
【００３４】
データキャッシュ部１７は、各命令実行ユニットで行われる命令実行に必要なデータを保存する機能を有する。データキャッシュ部１７は、ロード／ストア部１５−１の制御により必要なデータの保存および出力を行う。ロード／ストア部１５−１が、処理を行う対象とするデータが保存されていない場合には、データキャッシュ部１７は、メモリ管理部１８を介して、主記憶装置との間で必要なデータの転送動作を行う。
【００３５】
メモリ管理部１８は、主記憶装置との間でデータの送受信を行う機能を有する。メモリ管理部１８は、演算処理部１０で実行する命令のデータ、命令実行に必要なデータを主記憶装置から受け取って、演算処理部１０の各ユニットに送る。また、メモリ管理部１８は、演算処理部１０での命令実行結果を主記憶装置等に送る。
【００３６】
温度センサ１９は、プロセッサの温度を計測する機能を有する。温度センサ１９は、プロセッサの温度を測定して、計測した温度のデータを計測温度信号Ｓ１２として、温度制御部２０の温度計測部２３に送る。
【００３７】
本実施形態の温度センサ１９は、ＣＭＯＳ（Complementary Metal-Oxide-Semiconductor）温度センサによってプロセッサにおいて命令を実行する所定のユニット付近の温度の計測を行う。温度センサには、サーミスタ等の他の温度測定用素子を用いてもよい。本実施形態のＣＭＯＳ温度センサは、命令を実行する所定のユニットとして演算処理部１０の命令実行ユニット付近の温度を計測できるように備えられている。
【００３８】
温度センサ１９は、命令を実行する所定のユニットとして、例えば、命令実行ユニットである、ロード／ストア部１５−１、整数演算部１５−２、浮動小数点演算部１５−３および分岐部１５−４付近の温度を測定する。温度センサ１９は、命令制御部１４、レジスタファイル部１６、または、データキャッシュ部１７などの他のユニットを計測するように備えられていてもよい。
【００３９】
次に温度制御部２０の構成について詳細に説明する。図４は、温度制御部２０の構成の概要を示したものである。
【００４０】
温度制御部２０は、制御部２１と、タイマ部２２と、温度計測部２３と、カウンタ部２４と、上限値記憶部２５と、下限値記憶部２６を備えている。
【００４１】
制御部２１は、プロセッサの温度管理に関する温度制御部２０における動作の全般を制御する機能を有する。制御部２１は、プロセッサの温度測定結果を基に上限値記憶部２５および下限値記憶部２６への命令数の保存を制御する機能を有する。また、制御部２１は、プロセッサの温度の情報を演算処理部１０に伝達する機能を有する。
【００４２】
制御部２１は、所定の時間ごとに温度計測部２３に温度の情報を要求し、プロセッサの温度の状態を監視する。所定の時間は、プロセッサの温度を監視する間隔としてあらかじめ設定されている。制御部２１は、所定の時間の経過をタイマ部２２から入力される時間経過信号Ｓ２１を受信することにより判断する。時間経過信号Ｓ２１は、タイマ部２２が所定の時間が経過するごとに、所定の時間が経過したことを制御部２１に伝達する信号である。
【００４３】
制御部２１は、温度の測定結果を基に上限値記憶部２５および下限値記憶部２６への命令数の保存の要否を判断する。制御部２１は、プロセッサの稼働開始後に最初に上限設定温度を超えたと判断したときに、上限値記憶部２５に命令数の保存を要求する信号を上限値保存信号Ｓ２４として送る。上限設定温度とは、その温度を超えたときに演算処理部１０がスロットリング等の抑制状態の動作を開始する温度のことをいう。
【００４４】
制御部２１は、プロセッサの稼働開始後に最初に下限設定温度を超えたと判断したときに、下限値記憶部２６に命令数の保存を要求する信号を下限値保存信号Ｓ２５として送る。下限設定温度とは、その温度を下回ると演算処理部１０がスロットリング等の抑制状態の動作を解除して通常状態の動作に戻る温度のことをいう。上限設定温度および下限設定温度は、上限設定温度の方が、下限設定温度よりも高い温度となるようにあらかじめ設定された温度である。
【００４５】
制御部２１は、カウンタ部２４に保存している命令数の情報の出力を要求する信号を命令数出力信号Ｓ２６として送る。制御部２１が命令数出力信号Ｓ２６を送信するタイミングは、温度を計測する所定の時間の間隔と同じである。
【００４６】
また、制御部２１は、プロセッサの温度の情報を演算処理部１０に温度状態信号Ｓ３１として送る。また、制御部２１は、温度状態信号Ｓ３１を温度計測部２３から温度の情報を得る所定の時間ごとに送る。演算処理部１０は、温度状態信号Ｓ３１の温度情報を基に各ユニットの制御を行う。
【００４７】
制御部２１は、プロセッサの温度が上限設定値および下限設定値を超えたときにアラームを出力する構成としてもよい。また、アラームは上限設定値を超えているときのみとしてもよく、他の温度または複数段階で設定された温度で出力されるようにしてもよい。
【００４８】
タイマ部２２は、プロセッサの温度測定を行う間隔を計測する機能を有する。タイマ部２２は、あらかじめ設定された所定の時間ごとに制御部２１に設定時間が経過したことを示す信号を時間経過信号Ｓ２１として送る。タイマ部２２は、クロック数を積算し、積算した値があらかじめ設定された時間に相当するクロック数となったときにあらかじめ設定された所定の時間が経過したと判断する。タイマ部２２は、積算した値が所定の時間に相当するクロック数となるごとに時間経過信号Ｓ２１を出力する。また、タイマ部２２に入力されるクロックは、プロセッサが起動している間は動作状態に関わらず一定である。
【００４９】
温度計測部２３は、プロセッサの温度を計測する機能を有する。温度計測部２３は、演算処理部１０の温度センサ１９から温度計測信号Ｓ１２として送られてくるプロセッサの温度のデータを基に、制御部２１から測定要求信号Ｓ２２を受け取ったときに温度測定結果の情報を計測温度信号Ｓ２３として制御部２１に送る。
また、温度センサ１９を演算処理部１０内に複数、備えて各温度センサ１９から温度計測信号Ｓ１２として送られてくる温度データを基に、温度計測部２３が各温度センサ１９の計測値の平均値を、計測温度信号Ｓ２３として出力してもよい。本実施形態の温度センサ部１９および温度計測部２３は、第１の実施形態の温度計測手段２に相当する。
【００５０】
カウンタ部２４は、演算処理部１０が実行した命令の数を積算する機能を有する。カウンタ部２４は、演算処理部１０の命令制御部１４から実行命令数信号Ｓ１１として送られてくる命令数を積算する。カウンタ部２４は、所定の時間ごとに制御部２１から命令数出力信号Ｓ２６として送られてくるストローブ信号の間隔ごとに命令数を命令数信号Ｓ２７として出力する。カウンタ部２４は、所定の時間ごとの命令数を示す命令数信号Ｓ２７を上限値記憶部２５および下限値記憶部２６にそれぞれ送る。本実施形態のカウンタ部２４は、第１の実施形態のカウント手段１に相当する。
【００５１】
上限値記憶部２５は、プロセッサが上限設定温度付近で動作している際の、所定の時間に実行された命令数を保存する機能を有する。上限値記憶部２５は、制御部２１から命令数の保存を要求する信号を上限値保存信号Ｓ２４として受け取ると、カウンタ部２４から命令数信号Ｓ２７として入力される命令数を保存する。制御部２１は、稼動開始後、最初に上限設定温度を超えていると判断した際に、上限値記憶部２５に命令数の保存を要求する。上限値記憶部２５は、保存している命令数の情報を上限命令数信号Ｓ３２として命令制御部１４に送る。また、本実施形態では上限値記憶部２５に保存されている命令数のことを最大実行可能命令数とも呼ぶ。本実施形態の上限値記憶部２５は、第１の実施形態の第２の記憶手段４に相当する。
【００５２】
下限値記憶部２６は、下限設定温度付近で動作している際に、所定の時間に実行された命令数を保存する機能を有する。下限値記憶部２６は、制御部２１から命令数の保存を要求する信号を下限値保存信号S２５として受け取ると、カウンタ部２４から命令数信号Ｓ２７として入力される所定の時間に演算処理部１０で実行された命令数の情報を保存する。制御部２１は、稼動開始後、最初に下限設定温度を超えていると判断した際に、下限値記憶部２６に命令数の保存を要求する。下限値記憶部２６は、保存している命令数の情報を下限命令数信号Ｓ３３として命令制御部１４に送る。また、本実施形態では下限値記憶部２６に保存されている命令数のことを最小実行命令数とも呼ぶ。実施形態の下限値記憶部２６は、第１の実施形態の第１の記憶手段３に相当する。
【００５３】
本実施形態のプロセッサの動作について説明する。本実施形態のプロセッサが稼働を開始したときに、上限設定温度と下限設定温度における命令数が設定される際の動作について説明する。本実施形態では、稼動開始後にプロセッサの温度が初めて下限設定温度を超えたときに、下限値記憶部２６に最小実行命令数の情報が設定される。また、上限設定温度を初めて超えたときに、最大実行可能命令数が設定される。図５は、実施形態のプロセッサにおいて、上限設定温度と下限設定温度における命令の実行数が設定される際のフローの概要を示したものである。
【００５４】
プロセッサが稼働を開始するとタイマ部２２にクロック信号が入力される（ステップ１０１）。タイマ部２２は、クロック数を積算することにより温度を計測する間隔を所定の時間として計測する。所定の時間が経過していないとき、すなわち、クロック数の積算数が所定の回数に達していないとき（ステップ１０２でＮｏ）、タイマ部２２は、クロック数が所定の回数に到達するまでクロック数の積算を行う。
【００５５】
所定の時間が経過したとき、すなわち、クロック数の積算値が所定の回数に達したとき（ステップ１０２でＹｅｓ）、タイマ部２２は所定の時間が経過したことを示す情報を時間経過信号Ｓ２１として制御部２１に送る。
【００５６】
制御部２１は、時間経過信号Ｓ２１を受け取ると、温度計測部２３にプロセッサの温度の情報を要求する信号を測定要求信号Ｓ２２として送り、温度の情報を取得する（ステップ１０３）。温度計測部２３は、測定要求信号Ｓ２２を受け取ると、温度計測信号Ｓ１２を基にプロセッサの温度の情報を計測温度信号Ｓ２３として制御部２１に送る。
【００５７】
制御部２１は、計測温度信号Ｓ２３としてプロセッサの温度の情報を受け取ると、受け取った温度の情報を下限設定温度と比較する。計測温度信号Ｓ２３の温度が下限設定温度未満のとき（ステップ１０４でＮｏ）、制御部２１は温度が下限設定温度未満の通常状態であることを示す情報を温度状態信号Ｓ３１として演算処理部１０の命令制御部１４に送る。通常状態であることを示す温度状態信号Ｓ３１を受け取ると、命令制御部１４は通常状態の命令実行動作を継続する（ステップ１１１）。
【００５８】
計測温度信号Ｓ２３の温度が下限設定温度よりも高いとき（ステップ１０４でＹｅｓ）、制御部２１は温度が制御部２１は温度が下限設定温度を超過していることを示す情報を温度状態信号Ｓ３１として演算処理部１０の命令制御部１４に送る。命令制御部１４は、通常の動作状態なので、温度が下限設定温度を超過していることを示す情報を温度状態信号Ｓ３１として受け取った後も通常の動作状態を継続する。
【００５９】
また、制御部２１は演算処理部１０で所定の時間に実行された命令数の情報の保存を要求する信号を下限値保存信号Ｓ２５として下限値記憶部２６に送る。下限値記憶部２６は、下限値保存信号Ｓ２５を受け取ると、カウンタ部２４から命令数信号Ｓ２７として入力される命令数を保存する（ステップ１０５）。このとき保存される命令数は、最小実行命令数の値となる。命令数信号Ｓ２７は、制御部２１からカウンタ部２４に所定の時間ごとに送られる命令数出力信号Ｓ２６に基づいてカウンタ部２４から出力される。
【００６０】
最小実行命令数、すなわち、下限設定温度に対応する命令数が保存されると、所定の時間ごとの温度モニターが継続される。タイマ部２２は、クロック数の積算を行い所定の回数に達しているかの確認を行う。所定の時間が経過していないとき、すなわち、クロック数の積算値が所定の回数に達していないときは（ステップ１０６でＮｏ）、所定の時間が経過するまでクロック数の積算が行われる。
【００６１】
クロック数の積算値が所定の回数に達し所定の時間が経過したことを検出すると（ステップ１０６でＹｅｓ）、タイマ部２２は所定の時間が経過したことを示す情報を時間経過信号Ｓ２１として制御部２１に送る。
【００６２】
制御部２１は、時間経過信号Ｓ２１を受け取ると、温度計測部２３にプロセッサの温度の情報を要求する信号を測定要求信号Ｓ２２として送り温度の情報を取得する（ステップ１０７）。温度計測部２３は、測定要求信号Ｓ２２を受け取ると、温度計測信号Ｓ１２を基にプロセッサの温度の情報を計測温度信号Ｓ２３として制御部２１に送る。制御部２１は、計測温度信号Ｓ２３としてプロセッサの温度の情報を受け取ると、受け取った温度の情報を上限設定温度と比較する。
【００６３】
計測温度信号Ｓ２３の温度が上限設定温度未満のとき（ステップ１０８でＮｏ）、制御部２１は温度状態の情報を温度状態信号Ｓ３１として演算処理部１０の命令制御部１４に送る。このときプロセッサは通常の動作状態のため、下限設定温度を超えていることを示す温度状態信号Ｓ３１を受け取った後も、命令制御部１４は、通常の動作状態での命令の実行を継続する（ステップ１１２）。
【００６４】
計測温度信号Ｓ２３の温度が上限設定温度よりも高いとき（ステップ１０８でＹｅｓ）、制御部２１は温度が動作可能温度を超過していることを示す情報を温度状態信号Ｓ３１として演算処理部１０の命令制御部１４に送る。演算処理部１０は、温度が動作可能温度を超過していることを示す情報を温度状態信号Ｓ３１として受け取ると、命令の実行動作を抑止状態に移行させる。抑止状態とは、例えば、スロットリング制御により命令実行に関するクロック数を下げる状態のことをいう。演算処理部１０の命令制御部１４は、抑止状態に移行する際に、命令の実行を一時的に休止する制御や、一部の機能を停止する制御を行ってもよい。
【００６５】
また、制御部２１は、プロセッサで所定の時間に実行された命令数の保存を要求する信号を上限値保存信号Ｓ２４として上限値記憶部２５に送る。上限値記憶部２５は、上限値保存信号Ｓ２４を受け取ると、カウンタ部２４から命令数信号Ｓ２７として入力される命令数を保存する（ステップ１０９）。このとき上限値記憶部２５に保存される命令数は、最大実行可能命令数の値である。命令数信号Ｓ２７は、制御部２１からカウンタ部２４に所定の時間ごとに送られる命令数出力信号Ｓ２６に基づいてカウンタ部２４から出力される。
【００６６】
上限設定温度に対応する命令数が保存されると、所定の時間ごとの温度モニターが継続され、命令制御部１４は最大実行可能命令数および最小実行命令数を満たすように命令の実行を制御する（ステップ１１０）。以上で、プロセッサが稼働を開始したときに、上限設定温度と下限設定温度における命令数、すなわち、大実行可能命令数および最小実行命令数が設定される際の動作は完了する。
【００６７】
最大実行可能命令数および最小実行命令数が設定された後のプロセッサの動作について説明する。演算処理部１０の命令キャッシュ部１１には、メモリ管理部１８を介して主記憶装置から命令データが保存される。命令フェッチ部１２は、命令キャッシュ部１１から命令データを読み出し、命令デコード部１３に送る。命令デコード部１３は、命令のデコード処理を行い、デコード処理を行った命令を命令制御部１４に送る。
【００６８】
命令制御部１４は、受け取った命令の実行に必要な命令実行ユニットを判断する。命令制御部１４は、所定の時間あたりの命令の実行数が最大実行可能命令数および最小実行命令数の間になるように命令の実行を制御する。最大実行可能命令数および最小実行命令数の情報は、上限命令数信号Ｓ３２および下限命令数信号Ｓ３３として温度制御部２０から命令制御部１４に入力される。
【００６９】
各命令実行ユニットは、命令制御部１４の制御に基づいて命令の実行を行い、必要に応じてレジスタファイル部１６およびデータキャッシュ部１７へのデータの読み書きを行う。演算処理部１０での処理結果は必要に応じてメモリ管理部１８を介して主記憶装置に送られる。また、命令制御部１４は、所定の時間に実行した命令数の情報を実行命令数信号Ｓ１１として温度制御部２０に送る。
【００７０】
命令制御部１４は、命令実行の制御を行う際に温度制御部３１から送られてくる温度状態信号Ｓ３１を参照して温度に応じた制御を行う。温度状態信号Ｓ３１の温度が上限設定温度を超えているときは、命令制御部１４は抑制状態として命令の実行を制御する。また、抑制状態で制御しているときに、温度状態信号Ｓ３１の温度が下限設定温度を下回ったとき、命令制御部１４は通常状態の制御に移行する。
【００７１】
命令制御部１４は、通常状態の制御の際に、温度状態信号Ｓ３１の温度が下限設定温度未満のときは最大実行可能命令数を目標に命令の実行数を制御し、下限設定温度を超えたときは最小実行命令数を目標として命令の実行数を制御するようにしてもよい。
【００７２】
抑制状態の制御方法としては、クロック数の抑制の他、順次命令を実行していき、上限設定温度の命令数に達した段階で以降の命令実行を停止する方法とすることもできる。また、抑制状態の制御方法としては、下限値や上限値の理論最大命令実行数に対する比率を求めて、その比率になるよう数クロックサイクルに１回の頻度でＮＯＰ（No Operation）命令を挿入する方法を用いることもできる。
【００７３】
本実施形態のプロセッサにおいて最大実行可能命令数および最小実行命令数、すなわち、上限設定温度と下限設定温度に対応する命令の実行数が設定される際の動作をより具体的な例で説明する。本実施形態のプロセッサの温度が稼動開始後に図６のような変化した場合を例に説明する、図６は、横軸を時間、縦軸を温度度してプロセッサの温度変化を示した図である。図６の温度のＴＬは下限設定温度の値を示している。また、図６の温度のＴＨは上限設定温度の値を示している。図６の時間のＴ１、Ｔ２、Ｔ３、Ｔ４、Ｔ５およびＴ６はプロセッサの稼動開始後からの時間を示している。
【００７４】
図６ではプロセッサの稼働開始後にプロセッサの温度の上昇が始まり、時間Ｔ１では下限設定温度ＴＬ以下であったプロセッサの温度は、時間Ｔ２で下限設定温度ＴＬを超えている。また、図６の例では、プロセッサの温度は、時間Ｔ４で上限設定温度ＴＨも超えている。その後、動作が抑制されて時間Ｔ５以降では下限設定温度ＴＬと上限設定温度ＴＨの間でプロセッサの温度が推移している。
【００７５】
図７は、図６のような温度変化を行った場合の、各信号の状態を模式的に示したものである。図７の横軸は時間を示し、縦軸は信号の状態、すなわち、Ｈｉｇｈ状態またはＬｏｗ状態もしくは信号が有している情報を示している。
【００７６】
図７の最上段の「タイマ」は、タイマ部２２が温度の測定間隔を計測するために行うクロック数のカウントを示している。タイマ部２２は、クロック数を積算して所定の積算数に達するごとに所定の時間が経過したと判断する。
【００７７】
図７の上から２番目の「温度センサ測定要求信号」は、制御部２１から温度計測部２３に測定要求信号Ｓ２２として送るストローブ信号を示している。制御部２１から温度計測部２３への温度情報の要求を示す測定要求信号Ｓ２２は、クロック数が所定の積算数に達するごとにＨｉｇｈ状態、すなわち、温度情報を要求する状態となる。
【００７８】
図７の上から３番目の「温度センサ出力」は、温度計測部２３から制御部２１に計測温度信号Ｓ２３として送られる温度計測結果の信号を示している。図７の上から３番目の「温度センサ出力」は、時間Ｔ１で最初の測定要求信号Ｓ２２が入力されてから温度計測結果の出力が開始されている。時間Ｔ１では、計測温度信号Ｓ２３が示す温度は下限設定温度ＴＬよりも低い。時間Ｔ２およびＴ３では、温度は下限設定温度ＴＬよりも高く、上限設定温度ＴＨよりも低い。また、時間Ｔ４では、温度は上限設定温度ＴＨよりも高くなり、時間Ｔ５およびＴ６では、温度は再び、下限設定温度ＴＬよりも高く、上限設定温度ＴＨよりも低い状態になっている。
【００７９】
図７の上から４番目の「命令数カウンタ」は、クロック数のカウントの周期ごとに、演算処理部１０実行された命令数をカウントしている状態を示している。また、図７の上から５番目の「命令数カウンタ出力」は、カウンタ部２４から所定の時間ごとに命令数信号Ｓ２７として出力される命令数の情報を示している。図７では、時間Ｔ１で命令数Ｎ１、時間Ｔ２で命令数Ｎ２、時間Ｔ３で命令数Ｎ３、時間Ｔ４で命令数Ｎ４、時間Ｔ５で命令数Ｎ５、時間Ｔ６で命令数Ｎ６がそれぞれ出力されている。
【００８０】
図７の上から６番目の「温度下限値比較結果」は、制御部２１が温度計測部２３から受け取った温度情報と下限設定温度を比較した結果を示している。時間Ｔ２以降、温度が下限設定温度ＴＬを超えているので、温度下限値比較結果は、Ｈｉｇｈ状態となっている。
【００８１】
図７の上から７番目の「温度上限値比較結果」は、制御部２１が温度計測部２３から受け取った温度情報と上限設定温度を比較した結果を示している。時間Ｔ４以降、温度が上限設定温度ＴＨを超えているので、温度上限値比較結果は、Ｈｉｇｈ状態となっている。また、時間Ｔ５で再び、温度が上限設定温度ＴＨより低くなっているので、温度上限値比較結果は、Ｌｏｗ状態に戻っている。
【００８２】
図７の上から８番目の「温度下限値命令数」は、下限値記憶部２６に保存されている命令実行数、すなわち、最小実行命令数のデータの状態を示している。起動直後には初期値の情報が保存されている。本実施形態では、初期値は０として設定されている。初期値には、データの保存が行われていないことを示す情報が設定されている。下限値記憶部２６には時間Ｔ２で命令数Ｎ２が入力されるので、時間Ｔ２以降はＮ２の値が保持されている。
【００８３】
図７の上から９番目の「温度上限値命令数」は、上限値記憶部２５に保存されている命令実行数、すなわち、最大実行可能命令数のデータの状態を示している。起動直後には初期値の情報が保存されている。初期値としては、演算処理部１０で所定の時間に理論的に実行可能な最大の命令数が設定されている。理論的に実行可能な最大の命令数は、例えば、１クロックで同時に実行可能な命令数に所定の時間に相当するクロック数を乗じた値として算出することができる。上限値記憶部２５には時間Ｔ４で命令数Ｎ４が入力されるので、時間Ｔ４以降はＮ４の値が保持されている。
【００８４】
本実施形態のプロセッサは、稼動開始後、下限設定温度と上限設定温度を超えたときに、所定の時間におけるプロセッサの命令実行数をカウンタ部２４で積算し、積算した命令実行数を下限値記憶部２６および上限値記憶部２５に保存している。演算処理部１０は、上限値記憶部２５および下限値記憶部２６に保存された命令数の範囲に入るように、実行する命令数を制御する。このような制御を行うことで、本実施形態のプロセッサでは、下限設定温度と上限設定温度の範囲で動作するため、温度の上昇によって不具合が生じる可能性を抑制することができる。また、下限値記憶部２６に保存された命令数以上となるように制御するので、処理能力の低下を抑制することができる。よって、本実施形態のプロセッサでは、温度上昇の抑制と処理能力の維持を両立することができる。また、本実施形態のプロセッサは、実際の動作における命令実行数を基に、上限値記憶部２５および下限値記憶部２６に命令数を保存して制御を行っている。そのため、動作環境が変わっても環境に応じた条件を設定することができる。以上より、本実施形態のプロセッサは、動作環境によらずに温度に応じた的確な制御を行うことができる。
【００８５】
（第３の実施形態）
本発明の第３の実施形態について図を参照して詳細に説明する。図８は、本実施形態のプロセッサの構成の概要を示したものである。本実施形態のプロセッサは、演算処理部１０と、温度制御部４０を備えている。また、演算処理部１０には第２の実施形態と同様に主記憶装置が接続されている。本実施形態の演算処理部１０は、第２の実施形態の演算処理部と同様の構成を備えている。
【００８６】
温度制御部４０の詳細な構成について説明する。図９は、本実施形態の温度制御部４０の構成の概要を示した図である。図９に示す通り、温度制御部４０は、制御部４１と、タイマ部４２と、温度計測部４３と、カウンタ部４４と、上限値記憶部４５と、下限値記憶部４６と、上限値比較部４７と、下限値比較部４８を備えている。
【００８７】
本実施形態のタイマ部４２、温度計測部４３、カウンタ部４４、上限値記憶部４５および下限値記憶部４６の構成と機能は、第２の実施形態の同名称の部位と同様である。また、本実施形態の時間経過信号Ｓ４１、測定要求信号Ｓ４２、計測温度信号Ｓ４３および命令数出力信号Ｓ４６の機能は、第２の実施形態の同名称の信号と同様である。本実施形態の命令数信号Ｓ４７は第２の実施形態の命令数信号と同様の機能を有する。また、本実施形態においてカウンタ部４４から出力された命令数信号Ｓ４７は、上限値記憶部４５および下限値記憶部４６に加え、上限値比較部４７および下限値比較部４８にも入力される。
【００８８】
本実施形態の温度状態信号Ｓ５１、上限命令数信号Ｓ５２および下限命令数信号Ｓ５３の機能は第２の実施形態の同名称の信号と同様であり、それぞれ温度制御部４０から演算処理部１０の命令制御部１４に入力される。また、本実施形態においても第２の実施形態と同様に命令制御部１４が実行した命令数の情報が実行命令数信号Ｓ１１として命令制御部１４から温度制御部４０に送られる。また、本実施形態においても第２の実施形態と同様に演算処理部１０の温度センサ１９が測定した温度データが、温度計測信号Ｓ１２として温度センサ部１９から温度制御部４０に送られる。
【００８９】
上限値記憶部４５から出力される上限命令数信号Ｓ５２は、演算処理部１０への出力に加え上限値比較部４７にも入力される。下限値記憶部４６から出力される下限命令数信号Ｓ５３は、演算処理部１０への出力に加え下限値比較部４８にも入力される。
【００９０】
制御部４１は、第２の実施形態の制御部と同様の機能に加え、上限値記憶部４５および下限値記憶部４６に保存された命令数の情報を補正する機能を有する。制御部４１は、上限値比較部４７から送られてくる上限値比較信号Ｓ４８および計測温度信号Ｓ４３に基づいて、上限値記憶部４５に保存されている上限設定温度の命令数を補正する。また、制御部４１は、下限値比較部４８から送られてくる下限値比較信号Ｓ４９および計測温度信号Ｓ４３に基づいて、下限値記憶部４６に保存されている下限設定温度の命令数を補正する。制御部４１は、命令数の補正の内容を示す上限値保存信号Ｓ４４および下限値保存信号Ｓ４５を上限値記憶部４５および下限値記憶部４６にそれぞれ送ることで命令数の補正を行う。
【００９１】
上限値比較部４７は、上限値記憶部４５とカウンタ部４４に保存されている命令数を比較する機能を有する。上限値比較部４７は、上限値記憶部４５から送られてくる上限命令数信号Ｓ５２の命令数と、カウンタ部４４から送られてくる命令数信号Ｓ４７の命令数を比較し、比較結果を上限値比較信号Ｓ４８として制御部４１に送る。
【００９２】
下限値比較部４８は、下限値記憶部４６とカウンタ部４４に保存されている命令数を比較する機能を有する。下限値比較部４８は、下限値記憶部４６から送られてくる下限命令数信号Ｓ５３の命令数と、カウンタ部４４から送られてくる命令数信号Ｓ４７の命令数を比較し、比較結果を下限値比較信号Ｓ４９として制御部４１に送る。
【００９３】
本実施形態のプロセッサの動作について説明する。本実施形態のプロセッサにおいて、上限設定温度と下限設定温度に対応した命令数の補正以外の動作は、第２の実施形態と同様である。すなわち、本実施形態のプロセッサは、稼動開始後の下限設定温度および上限設定温度に対応する命令数の設定や命令実行の制御等については、第２の実施形態のプロセッサと同様の動作を行う。そのため、以下では、下限設定温度および上限設定温度に対応する命令数、すなわち、最大実行可能命令数および最小実行命令数が設定された後に、それぞれに対応する命令数の補正が行われる際の動作について図１０を参照して説明する。図１０は、上限設定温度および下限設定温度に対応する命令数の補正が行われる際のフローの概要を示したものである。
【００９４】
プロセッサの稼働開始後に、下限設定温度および上限設定温度に対応する命令数がそれぞれ設定される（ステップ１２１）。上限設定温度の命令数、すなわち、最大実行可能命令数が設定されると、タイマ部４２は、クロック数を積算してさらに所定の時間が経過したかを監視する。所定の時間が経過していない場合は（ステップ１２２でＮｏ）、タイマ部４２は、所定の時間に対応するクロック数が積算されるまで、クロック数の積算および積算数の監視を継続する。
【００９５】
上限設定温度の命令数が設定されてから所定の時間が経過すると（ステップ１２２でＹｅｓ）、タイマ部４２は、時間経過信号Ｓ４１を制御部４１に送る。時間経過信号Ｓ４１を受け取ると、制御部４１は、温度情報を要求する測定要求信号Ｓ４２を温度計測部４３に送って温度の情報を取得する（ステップ１２３）。測定要求信号Ｓ４２を受け取ると、温度計測部４２は測定要求信号Ｓ４２を受け取ったときのプロセッサの温度の情報を計測温度信号Ｓ４３として制御部４１に送る。また、このとき温度計測部４２は、プロセッサの温度のデータを、温度計測信号Ｓ１２として演算処理部１０の温度センサ１９から受け取っている。
【００９６】
計測温度信号Ｓ４３を受け取ると、制御部４１は、上限値記憶部４５の補正の要否を判断する（ステップ１２４）。制御部４１が上限値記憶部４５の補正の要否を判断する際のフローは、図１１を参照して説明する。図１１は、上限値記憶部４５の補正の要否を判断する際のフローの概要を示した図である。
【００９７】
計測温度信号Ｓ４３を受け取ると、制御部４１は、上限値記憶部４５の補正の要否の判断を開始する。制御部４１は、上限値比較信号Ｓ４８として上限値比較部４７から送られてくるデータを基に上限値記憶部４５とカウンタ部４４の値を比較する（ステップ１３１）。
【００９８】
上限値記憶部４５の命令数の方がカウンタ部４４の値より大きいとき、すなわちカウンタ部４４の値が小さい場合は（ステップ１３２でＹｅｓ）、制御部４１は計測温度信号Ｓ４３が示すプロセッサの温度の確認を行う。計測温度信号Ｓ４３の温度が上限設定温度よりも高いとき（ステップ１３３でＹｅｓ）、制御部４１は、カウンタ部４４の値で上限値記憶部４５に保存された命令数のデータを更新する（ステップ１３４）。
【００９９】
制御部４１は、上限値記憶部４５にカウンタ部４４の値でデータの更新を要求する信号を上限値保存信号Ｓ４４として上限値記憶部４５に送る。データの更新を要求する上限値保存信号Ｓ４４を受け取ると、上限値記憶部４５は、命令数信号Ｓ４７としてカウンタ部４４から入力される命令の実行数の情報をそれまで保存していたデータに代えて保存する。
【０１００】
ステップ１３４で上限値記憶部４５のデータを更新すると、制御部４１はステップ１２４の動作を終えてステップ１２５へ進む。また、計測温度信号Ｓ４３の温度が上限設定温度よりも低いとき（ステップ１３３でＮｏ）、制御部４１はステップ１２４の動作を終えてステップ１２５へと進む。
【０１０１】
上限値記憶部４５の命令数の方がカウンタ部４４の値より小さい場合は（ステップ１３２でＮｏ）、制御部４１は計測温度信号Ｓ４３が示すプロセッサの温度の確認を行う。計測温度信号Ｓ４３の温度が上限設定温度よりも低いとき（ステップ１３５でＹｅｓ）、制御部４１は、上限値記憶部４５に保存されているデータを所定の数、増加させる（ステップ１３６）。所定の数は、あらかじめ制御部４１に保存されている。所定の数は、上限値記憶部４５の値を増加させて更新した際に、元の値から大きく変動しないように設定される。また、所定の数は、上限値記憶部４５とカウンタ部４４の命令数の差に応じた変動値として設定されるようにしてもよい。
【０１０２】
制御部４１は、増加させる所定の数を示す信号を上限値保存信号Ｓ４４として上限値記憶部４５に送る。上限値記憶部４５は、受け取った信号を基に保存しているデータを所定の数、増加させることにより更新する。
【０１０３】
ステップ１３６で上限値記憶部４５のデータを更新すると、制御部４１はステップ１２４の動作を終えてステップ１２５へ進む。また、計測温度信号Ｓ４３の温度が上限設定温度よりも高いとき（ステップ１３５でＮｏ）、制御部４１はステップ１２４の動作を終えてステップ１２５へと進む。
【０１０４】
ステップ１２４の動作を終えると、制御部４１は、下限値記憶部４６の補正の要否を判断する（ステップ１２５）。制御部４１が下限値記憶部４６の補正の要否を判断する際のフローは、図１２を参照して説明する。図１２は、下限値記憶部４６の補正の要否を判断する際のフローの概要を示した図である。
【０１０５】
下限値記憶部４６の補正の要否の判断を開始すると、制御部４１は、下限値比較信号Ｓ４９として下限値比較部４８から送られてくるデータを基に下限値記憶部４６とカウンタ部４４の値を比較する（ステップ１４１）。
【０１０６】
下限値記憶部４６の命令数の方がカウンタ部４４の値より小さいとき、すなわちカウンタ部４４の値が大きい場合は（ステップ１４２でＹｅｓ）、制御部４１は計測温度信号Ｓ４３が示すプロセッサの温度の確認を行う。計測温度信号Ｓ４３の温度が下限設定温度よりも低いとき（ステップ１４３でＹｅｓ）、制御部４１は、カウンタ部４４の値で下限値記憶部４６に保存された命令数のデータを更新する（ステップ１４４）。
【０１０７】
制御部４１は、下限値記憶部４６にカウンタ部４４の値でデータの更新を要求する信号を下限値保存信号Ｓ４５として下限値記憶部４６に送る。データの更新を要求する下限値保存信号Ｓ４５を受け取ると、下限値記憶部４６は、命令数信号Ｓ４７としてカウンタ部４４から入力される命令数の情報で保存している命令数のデータを更新する。
【０１０８】
ステップ１４４で下限値記憶部４６のデータを更新すると、制御部４１は上限値記憶部４５および下限値記憶部４６の命令数の補正の動作を終了する。また、計測温度信号Ｓ４３の温度が下限設定温度よりも高いときも（ステップ１４３でＮｏ）、制御部４１は上限値記憶部４５および下限値記憶部４６の命令数の補正の動作を終了する。
【０１０９】
下限値記憶部４６の命令数の方がカウンタ部４４の値より大きい場合は（ステップ１４２でＮｏ）、制御部４１は計測温度信号Ｓ４３が示すプロセッサの温度の確認を行う。計測温度信号Ｓ４３の温度が下限設定温度よりも高いとき（ステップ１４５でＹｅｓ）、制御部４１は、下限値記憶部４６に保存されているデータを所定の数、減少させる（ステップ１４６）。
【０１１０】
データを減少させる際の所定の数は、あらかじめ制御部４１に保存されている。所定の数は、下限値記憶部４６の値を減少させて更新した際に、元の値から大きく変動しないように設定される。また、所定の数は、下限値記憶部４６とカウンタ部４４の命令数の差に応じた変動値として設定されるようにしてもよい。また、上限値記憶部４５の値を増加させる際の所定の数と、下限値記憶部４６の値を減少させる際の所定の数は、同じ大きさの値でもよく、異なっていてもよい。
【０１１１】
制御部４１は、増加させる所定の数を示す信号を下限値保存信号Ｓ４５として下限値記憶部４６に送る。下限値記憶部４６は、受け取った信号を基に保存しているデータを所定の数、減少させることにより更新する。
【０１１２】
ステップ１４６で下限値記憶部４６のデータを更新すると、制御部４１は上限値記憶部４５および下限値記憶部４６の命令数の補正の動作を終了する。また、計測温度信号Ｓ４３の温度が下限設定温度よりも低いときも（ステップ１４５でＮｏ）、上限値記憶部４５および下限値記憶部４６の制御部４１は命令数の補正の動作を終了する。
【０１１３】
制御部４１は、上限値記憶部４５および下限値記憶部４６の命令数の補正の動作を終了すると、命令実行の制御を継続し、所定の時間の経過後に、再度、命令数の補正の要否の判断を行う。
【０１１４】
本実施形態のプロセッサの動作についてより具体的な例を基に説明する。図１３は、プロセッサ稼働時のプロセッサの温度変化の例を示したグラフである。図１３の例では、プロセッサの温度は、時間ｔ１で下限設定温度ＴＬを超え、時間ｔ２で上限設定温度ＴＨを超えている。すなわち、図１３の例では、時間ｔ１で下限設定温度に対応する命令実行数が設定され、時間ｔ２で上限設定温度に対応する命令実行数が設定される。時間ｔ２で上限設定温度に対応する命令実行数を設定する動作が時間ｔ２での動作がステップ１２１に相当し、時間ｔ２以降で、本実施形態で説明したステップ１２２以降の動作が行われる。
【０１１５】
図１３の時間ｔ３で温度の計測が行われたとすると、温度は下限設定温度ＴＬよりも低い状態である。このときカウンタ部４４に保存されている命令数の値が、下限値記憶部４６に保存されている値よりも大きい場合には、カウンタ部４４の値で下限値記憶部４６のデータが更新される。
【０１１６】
また、図１４は、図１３とは異なるプロセッサの温度変化の例を示したグラフである。図１４の例でも、図１３の例と同様に時間ｔ２でステップ１２１に相当する上限設定温度に対応する命令実行数を設定する動作が行われ、時間ｔ２以降で、本実施形態で説明したステップ１２２以降の動作が行われる。
【０１１７】
図１４の時間ｔ３で温度の計測が行われたとすると、温度は上限設定温度ＴＨよりも高い状態である。このときカウンタ部４４に保存されている命令数の値が、上限値記憶部４５に保存されている値未満の場合には、カウンタ部４４の値で上限値記憶部４５のデータが更新される。
【０１１８】
本実施形態のプロセッサは、第２の実施形態と同様の効果を得ることができる。また、本実施形態のプロセッサは、所定の時間ごとにカウントされた命令実行数と、上限値記憶部４５に保存されている命令数を比較し、比較結果とプロセッサの温度を基に上限値記憶部４５の値を更新している。また、同様にまた、本実施形態のプロセッサは、所定の時間ごとにカウントされた命令実行数と、下限値記憶部４６に保存されている命令数を比較し、比較結果とプロセッサの温度を基に下限値記憶部４６の値を更新している。すなわち、本実施形態のプロセッサでは動作を継続している間にも、上限値記憶部４５および下限値記憶部４６に保存されている命令実行数を更新している。そのため、本実施形態のプロセッサでは、稼働を行っているうちに環境等が変化した場合でも、変化に応じた条件で的確に命令実行数を制御することができる。その結果、本実施形態のプロセッサは、動作環境によらずに温度に応じた制御をより的確に行うことができる。
【０１１９】
本実施形態の第２および第３のプロセッサでは、スロットリング等の抑制状態の開始温度および解除温度と、命令制御部が実行数の制御を行う際の目標温度を一致させていたが、いずれか一方または両方の温度が異なっていてもよい。また、温度設定を複数段階にしてそれぞれに命令数の設定し、より多段階で命令実行の制御を行ってもよい。
【０１２０】
第２および第３の実施形態のプロセッサでは、それぞれ１つの温度制御部を備えていた。すなわち、演算処理部の全ての命令実行ユニットに対して、１つの温度制御部を備えていた。そのような構成に代えて、温度制御部が複数、備えられている構成としてもよい。例えば、第２および第３の実施形態のように、ロード／ストア部、整数演算部、浮動小数点演算部および分岐部の４つのユニットで構成されているとき、プロセッサが温度制御部を４つ備える構成としてもよい。各命令実行ユニットの温度を計測して、命令実行数を制御することにより、より精度の高い命令実行数の制御が可能となる。命令実行ユニットは、各ユニットの特性や処理内容に応じて動作状態が異なるからである。命令実行数の制御の精度を上げることで、処理能力と、消費電力および温度のバランスをより良く保つことができるようになる。
【０１２１】
また、命令実行ユニットごとに温度制御を行う構成とした場合に、制御部は共通していてもよい。すなわち、温度の測定およびデータ保存機能のみ各実行ユニットに対応する数を備える構成としてもよい。また、温度制御部は、命令実行ユニットごとではなく、複数の命令実行ユニットまたはその他のユニットに１つ備え、全体で複数、備えられているようにしてもよい。そのような構成とする場合には、命令の実行種別が似ていて動作特性の近い命令実行ユニットと組み合わせて、温度制御部を備える構成とすることが望ましい。
【０１２２】
例えば、命令の実行種別を演算命令、ロード／ストア命令、その他の命令の３つの種別に分類したとする。そのような場合に、温度センサを整数演算部および浮動小数点演算部の近傍、ロード／ストア部およびデータキャッシュ部の近傍ならびに命令フェッチ部および命令デコード部の近傍などに１つずつ備える構成とする。命令種別毎の一定時間内の実行命令数が各温度センサにおける温度測定結果により大きな影響として現れるようにすることでより的確な温度制御を行うことができる。
【０１２３】
上記の実施形態の一部又は全部は、以下の付記のようにも記載されうるが、以下には限られない。
【０１２４】
［付記１］
所定の時間内に実行された命令数を実行命令数としてカウントするカウント手段と、
命令を実行する所定のユニット付近の温度を計測する温度計測手段と、
あらかじめ設定された第１の温度を前記所定のユニット付近の前記温度が超えたときの前記実行命令数を第１の命令数として記憶する第１の記憶手段と、
あらかじめ設定され、前記第１の温度よりも高い第２の温度を前記所定のユニット付近の前記温度が超えたときの前記実行命令数を第２の命令数として記憶する第２の記憶手段と、
前記所定の時間に実行する命令の数が前記第２の命令数より小さく、前記第１の命令数より大きくなるように命令の実行を制御する制御手段と
を備えることを特徴とするプロセッサ。
【０１２５】
［付記２］
前記制御手段は、前記第２の命令数の設定後に、前記所定のユニット付近の前記温度が前記第２の温度を超えたときに、所定の抑制状態となるように命令の実行を制御することを特徴とする付記１に記載のプロセッサ。
【０１２６】
［付記３］
前記制御手段は、前記所定の抑制状態のときに、前記所定のユニット付近の前記温度が前記第１の温度未満となった場合に、前記所定の抑制状態を解除することを特徴とする付記２に記載のプロセッサ。
【０１２７】
［付記４］
前記第２の記憶手段に記憶された前記第２の命令数と、前記カウント手段がカウントした前記実行命令数とを比較する比較手段をさらに備え、
前記制御部は、前記所定のユニット付近の前記温度が、前記第２の温度を超えているときに、前記実行命令数の値よりも前記第２の命令数の値が大きい場合に、前記第２の命令数の値を前記実行命令数の値となるように更新することを特徴とする付記１から３いずれかに記載のプロセッサ。
【０１２８】
［付記５］
前記制御部は、前記所定のユニット付近の前記温度が、前記第２の温度を下回っているときに、前記実行命令数の値よりも前記第２の命令数の値が小さい場合に、前記第２の命令数の値を第２の所定の値、増加させることを特徴とする付記４に記載のプロセッサ。
【０１２９】
［付記６］
前記比較手段は、前記第１の記憶手段に記憶された前記第１の命令数と、前記カウント手段がカウントした前記実行命令数とを比較する手段をさらに備え、
前記制御部は、前記所定のユニット付近の前記温度が、前記第１の温度未満となったときに、前記実行命令数の値よりも前記第１の命令数の値が小さい場合に、前記第１の命令数の値を前記実行命令数の値となるように更新することを特徴とする付記４または５いずれかに記載のプロセッサ。
【０１３０】
［付記７］
前記制御部は、前記所定のユニット付近の前記温度が、前記第１の温度を超えたときに、前記実行命令数の値よりも前記第１の命令数の値が大きい場合に、前記第１の命令数の値を第１の所定の値、減少させることを特徴とする付記６に記載のプロセッサ。
【０１３１】
［付記８］
前記所定の抑制状態は、通常状態よりもクロック数を減少させる状態であることを特徴とする付記２から７いずれかに記載のプロセッサ。
【０１３２】
［付記９］
前記温度計測手段は、前記所定のユニット付近の温度として複数の箇所で温度を計測する手段を備え、前記第１の命令数および前記第２の命令数が温度を計測する箇所に応じて設定されていることを特徴とする付記１から８いずれかに記載のプロセッサ。
【０１３３】
［付記１０］
所定の時間内に実行された命令数を実行命令数としてカウントし、
命令を実行する所定のユニット付近の温度を計測し、
あらかじめ設定された第１の温度を前記所定のユニット付近の前記温度が超えたときの前記実行命令数を第１の命令数として記憶し、
あらかじめ設定され、前記第１の温度よりも高い第２の温度を前記所定のユニット付近の前記温度が超えたときの前記実行命令数を第２の命令数として記憶し、
前記所定の時間に実行する命令の数が前記第２の命令数より小さく、前記第１の命令数より大きくなるように命令の実行を制御することを特徴とするプロセッサの制御方法。
【０１３４】
［付記１１］
前記第２の命令数の設定後に、前記所定のユニット付近の前記温度が前記第２の温度を超えたときに、所定の抑制状態となるように命令の実行を制御することを特徴とする付記１０に記載のプロセッサの制御方法。
【０１３５】
［付記１２］
前記所定の抑制状態のときに、前記所定のユニット付近の前記温度が前記第１の温度未満となった場合に、前記所定の抑制状態を解除することを特徴とする付記１１に記載のプロセッサの制御方法。
【０１３６】
［付記１３］
記憶された前記第２の命令数と、カウントした前記実行命令数とを比較し、
前記所定のユニット付近の前記温度が、前記第２の温度を超えているときに、前記実行命令数の値よりも前記第２の命令数の値が大きい場合に、前記第２の命令数の値を前記実行命令数の値となるように更新することを特徴とする付記１０から１２いずれかに記載のプロセッサの制御方法。
【０１３７】
［付記１４］
前記所定のユニット付近の前記温度が、前記第２の温度を下回っているときに、前記実行命令数の値よりも前記第２の命令数の値が小さい場合に、前記第２の命令数の値を第２の所定の値、増加させることを特徴とする付記１３に記載のプロセッサの制御方法。
【０１３８】
［付記１５］
記憶された前記第１の命令数と、前記実行命令数とを比較し、
前記所定のユニット付近の前記温度が、前記第１の温度未満となったときに、前記実行命令数の値よりも前記第１の命令数の値が小さい場合に、前記第１の命令数の値を前記実行命令数の値となるように更新することを特徴とする付記１３または１４いずれかに記載のプロセッサの制御方法。
【０１３９】
［付記１６］
前記所定のユニット付近の前記温度が、前記第１の温度を超えたときに、前記実行命令数の値よりも前記第１の命令数の値が大きい場合に、前記第１の命令数の値を第１の所定の値、減少させることを特徴とする付記１５に記載のプロセッサの制御方法。
【０１４０】
［付記１７］
前記所定の抑制状態は、通常状態よりもクロック数を減少させる状態であることを特徴とする付記１１から１６いずれかに記載のプロセッサの制御方法。
【０１４１】
［付記１８］
前記所定のユニット付近の温度として複数の箇所で温度を計測し、
前記第１の命令数および前記第２の命令数を温度を計測する箇所に応じて設定することを特徴とする付記１０から１７いずれかに記載のプロセッサの制御方法。
【符号の説明】
【０１４２】
１    カウント手段
２    温度計測手段
３    第１の記憶手段
４    第２の記憶手段
５    制御手段
１０    演算処理部
１１    命令キャッシュ部
１２    命令フェッチ部
１３    命令デコード部
１４    命令制御部
１５−１    ロード／ストア部
１５−２    整数演算部
１５−３    浮動小数点演算部
１５−４    分岐部
１６    レジスタファイル部
１７    データキャッシュ部
１８    メモリ管理部
１９    温度センサ部
２０    温度制御部
２１    制御部
２２    タイマ部
２３    温度計測部
２４    カウンタ部
２５    上限値記憶部
２６    下限値記憶部
４０    温度制御部
４１    制御部
４２    タイマ部
４３    温度計測部
４４    カウンタ部
４５    上限値記憶部
４６    下限値記憶部
４７    上限値比較部
４８    下限値比較部
Ｓ１１    実行命令数信号
Ｓ１２    温度計測信号
Ｓ２１    時間経過信号
Ｓ２２    測定要求信号
Ｓ２３    計測温度信号
Ｓ２４    上限値保存信号
Ｓ２５    下限値保存信号
Ｓ２６    命令数出力信号
Ｓ２７    命令数信号
Ｓ３１    温度状態信号
Ｓ３２    上限命令数信号
Ｓ３３    下限命令数信号
Ｓ４１    時間経過信号
Ｓ４２    測定要求信号
Ｓ４３    計測温度信号
Ｓ４４    上限値保存信号
Ｓ４５    下限値保存信号
Ｓ４６    命令数出力信号
Ｓ４７    命令数信号
Ｓ４８    上限値比較信号
Ｓ４９    下限値比較信号
Ｓ５１    温度状態信号
Ｓ５２    上限命令数信号
Ｓ５３    下限命令数信号
【図１】
0006477032.tif 000002
【図２】
0006477032.tif 000003
【図３】
0006477032.tif 000004
【図４】
0006477032.tif 000005
【図５】
0006477032.tif 000006
【図６】
0006477032.tif 000007
【図７】
0006477032.tif 000008
【図８】
0006477032.tif 000009
【図９】
0006477032.tif 000010
【図１０】
0006477032.tif 000011
【図１１】
0006477032.tif 000012
【図１２】
0006477032.tif 000013
【図１３】
0006477032.tif 000014
【図１４】
0006477032.tif 000015