(57)【要約】【課題】発熱制御のトリガとなる温度センサからの温度情報は、温度センサを含む複数のコアが隣接配置されるため温度干渉が起こり、発熱源となるコア（モジュール）を特定することができない。【解決手段】半導体装置は、複数のコアと、温度を検出するセンサと、前記センサが検出した温度に応じて、前記複数のコアのそれぞれの消費電力を求め、求めた消費電力に応じて制御対象のコアを選択する制御回路と、を有する。【選択図】図２
2019012377.tif 000002
【特許請求の範囲】
【請求項１】
複数のコアと、
温度を検出するセンサと、
前記センサが検出した温度に応じて、前記複数のコアのそれぞれの消費電力を求め、求めた消費電力に応じて制御対象のコアを選択する制御回路と、
を有する半導体装置。
【請求項２】
前記制御回路は、前記センサが検出した温度と予め設定された温度の閾値とを比較した結果に基づいて前記複数のコアのそれぞれの消費電力を求める請求項１に記載の半導体装置。
【請求項３】
前記制御回路は、選択された制御対象のコアの動作周波数と電源電圧のうち、少なくとも一つを制御する請求項１に記載の半導体装置。
【請求項４】
前記制御回路は、求めた複数のコアのそれぞれの消費電力と前記複数のコアに予め設定されたそれぞれの消費電力の基準値とを比較した結果に基づいて制御対象のコアを選択する請求項１に記載の半導体装置。
【請求項５】
前記センサは前記複数のコアのうちの一つに近接して配置された一つのセンサである請求項１に記載の半導体装置。
【請求項６】
前記制御回路は、求めた複数のコアのそれぞれの消費電力と前記複数のコアに予め設定されたそれぞれの消費電力の基準値とを比較した結果に基づいて制御対象のコアを選択する請求項２に記載の半導体装置。
【請求項７】
前記制御回路は、選択された制御対象のコアの動作周波数と電源電圧のうち、少なくとも一つを制御する請求項６に記載の半導体装置。
【請求項８】
前記センサは前記複数のコアのうちの一つに近接して配置された一つのセンサである請求項７に記載の半導体装置。
【請求項９】
さらに、メモリを有し、
前記複数コアの一つはＣＰＵであり、
前記制御回路は前記ＣＰＵと前記メモリで構成される請求項１から８の何れか１項に記載の半導体装置。
【請求項１０】
複数のコアの少なくとも一つのコアの温度を検出し、
検出した少なくとも一つの前記コアの温度と、予め設定されている温度の閾値とを比較し、
比較した結果に基づいて前記複数のコアのそれぞれの消費電力を求め、
前記複数のコアにつき求めたそれぞれの消費電力と前記複数のコアにつき予め設定されたそれぞれの基準電力とを比較し、
前記消費電力と前記基準電力のそれぞれの比較結果に基づいて前記複数のコアから制御対象のコアを選択し、
選択した制御対象のコアの消費電力を制御する半導体装置の制御方法。
【請求項１１】
前記選択されたコアの動作周波数と電源電圧のうち、少なくとも一つを制御する請求項１０に記載の半導体装置の制御方法。
【請求項１２】
複数のコアと、
前記複数のコアの温度を各々検出する複数のセンサと、
前記検出した複数の温度同士を比較した結果と、前記複数のコアの一つにつき求めた消費電力とに応じて制御対象のコアを選択する制御回路と、
を有する半導体装置。
【請求項１３】
前記制御回路は、前記複数のセンサが検出した少なくとも一つの温度と予め設定された温度の閾値とを比較した結果に応じて前記複数のコアの一つの消費電力を求める請求項１２に記載の半導体装置。
【請求項１４】
前記制御回路は、選択されたコアの動作周波数と電源電圧のうち、少なくとも一つを制御する請求項１２に記載の半導体装置。
【請求項１５】
前記制御回路は、求めたコアの消費電力と前記求めたコアに予め設定された消費電力の基準値とを比較した結果に応じて制御対象のコアを選択する請求項１２に記載の半導体装置。
【請求項１６】
前記制御回路は、前記検出した複数の温度のうち、温度が低い側の前記センサが検出する前記コアの消費電力を求める請求項１２に記載の半導体装置。
【請求項１７】
前記制御回路は、選択されたコアの動作周波数と電源電圧のうち、少なくとも一つを制御する請求項１３に記載の半導体装置。
【請求項１８】
前記制御回路は、求めたコアの消費電力と前記求めたコアに予め設定された消費電力の基準値とを比較した結果に応じて制御対象のコアを選択する請求項１７に記載の半導体装置。
【請求項１９】
前記制御回路は、前記検出した複数の温度のうち、温度が低い側の前記センサが検出する前記コアの消費電力を求める請求項１８に記載の半導体装置。
【請求項２０】
複数のコアの温度を各々検出し、
前記複数のコアのうちの一つのコアの消費電力を求め、
前記一つのコアの消費電力と前記一つのコアに予め設定された消費電力の基準値とを比較し、
前記消費電力と前記基準電力の比較結果と検出した前記複数のコアのそれぞれの温度とに基づいて制御対象のコアを選択し、
選択されたコアの消費電力を制御する半導体装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は半導体装置に関し、例えば発熱制御機能を有する半導体装置に適用可能である。
【背景技術】
【０００２】
半導体集積回路装置において、近年、大容量化、高性能化、低コスト化などの市場ニーズに応えるため、半導体プロセスは急速に加速している。一方で、半導体プロセスの向上に伴い、消費電力は増加傾向にあり、発熱制御の重要度は増している。
【０００３】
複数のコアのそれぞれに温度センサを配置し、温度センサからの温度情報に基づいてコアの発熱制御が行われる（例えば、特開２００５−７１３６４号公報、特開２０１３−５４６０７０号公報）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００５−７１３６４号公報
【特許文献２】特開２０１３−５４６０７０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
発熱制御のトリガとなる温度センサからの温度情報は、各々温度センサを含む複数のコアが隣接配置されるためコア間でお互いの温度干渉が起こり、発熱源となるコア（モジュール）を特定することができない。温度干渉により上昇した際の発熱制御は、不要に機能制限を行い適切な発熱制御を行うことが難しい。
その他の課題と新規な特徴は、本明細書の記述および添付図面から明らかになるであろう。
【課題を解決するための手段】
【０００６】
本開示のうち代表的なものの概要を簡単に説明すれば下記の通りである。
すなわち、半導体装置は、センサが検出した温度に応じて、複数のコアのそれぞれの消費電力を求め、求めた消費電力に応じて制御対象のコアを選択する。
【発明の効果】
【０００７】
上記半導体装置によれば、適切な発熱制御を行うことができる。
【図面の簡単な説明】
【０００８】
【図１】発熱制御を行う半導体装置を説明する図
【図２】図１の半導体装置の構成例を説明する図
【図３】図２の半導体装置の発熱制御選択機能の動作を説明する図
【図４】図２の半導体装置の発熱制御の開始温度と発熱制御を説明する図
【図５】温度センサの位置による所定温度到達までに必要な消費電力の違いを説明する図
【図６】温度センサの位置による所定温度到達までに必要な消費電力の違いを説明する図
【図７】図１の半導体装置の構成の変形例を説明する図
【図８】図７の半導体装置の発熱制御選択機能の動作を説明する図
【発明を実施するための形態】
【０００９】
本願発明者が本願開示に先立って検討した複数の温度センサを用いた温度制御を行う技術（比較例）について説明する。図１は発熱制御を行う半導体装置のブロック図である。
【００１０】
半導体装置１は、第一モジュール１０と、第一温度センサ（ＴＨＳ１）６１と、第二モジュール２０と、第二温度センサ（ＴＨＳ２）６２と、メモリ３０と、ＡＤ変換器（ＡＤＣ）４０と、バス５０と、を一つの半導体チップに備える。第一モジュール１０は中央処理装置（ＣＰＵ）であり、第二モジュール２０はグラフィック処理装置（ＧＰＵ）である。第一温度センサ（ＴＨＳ１）６１は第一モジュール１０に近接して配置され、第二温度センサ（ＴＨＳ２）６２は第二モジュール２０に近接して配置される。ＡＤ変換器（ＡＤＣ）４０は例えば第一温度センサ（ＴＨＳ１）６１および第二温度センサ（ＴＨＳ２）６１の温度情報をデジタル情報に変換する。
【００１１】
第一温度センサ（ＴＨＳ１）６１の温度情報に基づいて第一モジュール１０の発熱制御を行い、第二温度センサ（ＴＨＳ２）６２の温度情報に基づいて第二モジュール２０の発熱制御を行う。発熱制御はクロック周波数や電源電圧を低下させて発熱を抑える。
【００１２】
グラフィックアプリ動作時など、ＧＰＵ２０は高負荷（例えば、稼働率９０〜９５％）になり、一方でＣＰＵ１０は低負荷（例えば、稼働率１５％以下）なケースがある。ＧＰＵ２０の発熱ＨＡにより、ＧＰＵ２０の付近の第二温度センサ（ＴＨＳ２）６２だけでなく、ＣＰＵ１０の付近の第一温度センサ（ＴＨＳ１）６１も温度が上昇し、温度干渉が起こる。第一温度センサ（ＴＨＳ１）６１の温度情報に基づいてＣＰＵ１０の発熱制御を行うが、第一温度センサ（ＴＨＳ１）６１の近辺に存在するＣＰＵ１０が発熱源でない場合でも、ＣＰＵ１０付近の第一温度センサ（ＴＨＳ１）６１の温度が上がることでＣＰＵ１０へ発熱制御が適用される。これにより、ＣＰＵ１０の性能を不要に下げるため、ＣＰＵ１０の割込み制御などにも影響を与える。本願発明者はこのような外部要因による熱の伝播をトリガとした非効率的な発熱制御が存在するという課題を見出した。
【００１３】
そこで、実施形態では、実際に発熱制御を行うにあたり、検出した温度異常が、制御対象としているモジュール自身の発熱であるかどうかの判定を行う。発熱制御すべきモジュールを特定するために、発熱制御対象モジュールの消費電力を算出し、予め用意した基準電力との関係から適切に発熱制御すべきモジュールを選択する。複数の発熱制御対象のモジュールに対し、適切に発熱制御すべきモジュールを選択することで適切に発熱制御することができる。
【００１４】
以下、実施例および変形例について、図面を用いて説明する。ただし、以下の説明において、同一構成要素には同一符号を付し繰り返しの説明を省略することがある。
【実施例】
【００１５】
まず、実施例に係る半導体装置について図１、２を用いて説明する。図２は図１の半導体装置の構成例を示すブロック図である。
【００１６】
図１に示すように、半導体装置１は、第一モジュール１０と、第一温度センサ（ＴＨＳ１）６１と、第二モジュール２０と、第二温度センサ（ＴＨＳ２）６２と、メモリ３０と、ＡＤ変換器（ＡＤＣ）４０と、バス５０と、制御回路１１と、を一つの半導体チップに備える。第一モジュール１０は中央処理装置（ＣＰＵ）であり、第二モジュール２０はグラフィック処理装置（ＧＰＵ）である。図１に示すように、第一温度センサ（ＴＨＳ１）６１は第一モジュール１０に近接して配置され、第二温度センサ（ＴＨＳ２）６２は第二モジュール２０に近接して配置される。ＡＤ変換器（ＡＤＣ）４０は例えば第一温度センサ（ＴＨＳ１）６１および第二温度センサ（ＴＨＳ２）６２の温度情報をデジタル情報に変換する。
【００１７】
図２に示すように、制御回路１１は、温度検出部１２と、制御対象選択部１３と、発熱制御部１４と、を備える。制御対象選択部１３は、温度制御が必要か判断するための温度判定部１３１と、発熱制御対象を選択するための基礎データ１５に基づいて消費電力を算出する電力計算部１３２と、それらのデータを基に発熱制御対象を選択する比較部１３３と、を有する。
【００１８】
温度検出部１２は、第一温度センサ（ＴＨＳ１）６１からの温度データを取得する。第一温度センサ（ＴＨＳ１）６１および第二温度センサ（ＴＨＳ２）６２のセンサとして、例えば、ダイオードを用いる。一定の電流が流されるダイオードの端子間電圧は、温度に伴って変化する。ダイオードに一定の電流を流し、ダイオードの両端の電圧を測定することで、温度の変化に伴って変化する電圧から、温度を測定する。アナログの電圧値は、ＡＤＣ６２でＡＤ変換することでデジタル化する。温度検出部１２は、デジタル化した電圧値から、温度と電圧の関係を表す対応表や計算式を用いて、対応する温度を求める。
【００１９】
温度判定部１３１は、取得した温度データと、予め設定してある温度閾値を比較し、温度制御の開始判定を行う。電力計算部１３２は、後述するダイナミック要素電力やリーク電力等の基礎データ１５と、リアルタイムで取得した負荷情報（稼働率）等と、に基づいて発熱制御対象のモジュールの消費電力を算出する。比較部１３３は、電力計算部１３２で算出した消費電力と、予め設定した基準電力との関係から発熱制御対象モジュールの中から発熱制御すべきモジュールを選択する。
【００２０】
発熱制御部１４は、制御対象選択部１３で選択された発熱制御対象モジュールに対し、機能制限を適用し発熱制御を行う。発熱制御部１４は、電源制御部１４２とクロック制御部１４１とを有する。電源制御部１４２は、発熱制御すべきモジュールの電源制御（電源電圧の昇降）を行う。クロック制御部１４１は、発熱制御すべきモジュールのクロック制御（動作周波数の昇降）を行う。
【００２１】
制御回路１１は、ＣＰＵ（Central Processing Unit）とプログラムが格納されるメモリ、および／またはその他の回路で構成することができ、したがって、制御回路１１は、ハードウェアのみ、ソフトウェアのみ、又はそれらの組合せによっていろいろな形で実現できる。制御回路１１は、例えば、ＣＰＵ１０とメモリ３０によって構成することができる。
【００２２】
図２の半導体装置の発熱制御について図３〜６を用いて説明する。図３は図２の半導体装置の発熱制御選択機能の動作を示すフローチャートである。図４は図２の半導体装置の発熱制御の開始温度と制御イメージを示す図である。図５はＣＰＵの基準電力を説明する図である。図６はＧＰＵの基準電力を説明する図である。
【００２３】
（温度監視〜温度閾値）
ステップＳ１、Ｓ２：温度検出部１２はＡＤＣ４０を介して第一温度センサ（ＴＨＳ１）６１より温度情報を取得し、温度判定部１３１は取得した温度情報が発熱制御の開始温度を超えていないかポーリング処理により確認する。なお、ここで発熱制御は例えば第一温度センサ（ＴＨＳ１）６１が閾値である９０℃以上で開始することとし、ターゲット温度（例えば１００℃）で温度飽和するために機能（処理量）を制限し発熱制御を実施する。発熱制御としては、例えば、図４に示すように、ＣＰＵ１０の動作周波数を制御し発熱を抑制する。例えば、動作周波数を１．７ＧＨｚから０．５ＧＨｚに下げてダイナミッ電力を削減する。なお、例えばＣＰＵ１０は４つのコアで構成されるが、この例では動作するコア数を少なくすることはしていない。動作するコア数を少なくしたり、電源電圧を下げたりしてダイナミック電力を削減するようにしてもよい。また、温度検出には、第一温度センサ（ＴＨＳ１）に代えて第二温度センサ（ＴＨＳ２）を用いてもよいし、第一温度センサ（ＴＨＳ１と第二温度センサ（ＴＨＳ２）の両方を用いてもよい。
【００２４】
（制御対象の消費電力計算）
ステップＳ３：電力計算部１３２は発熱制御対象モジュール（ＣＰＵ１０、ＧＰＵ２０）の消費電力を計算する。
【００２５】
消費電力は、下記の式（１）に示すように、ダイナミック電力とリーク電力の和で表される。
消費電力［ｍＷ］＝ダイナミック電力［ｍＷ］＋リーク電力［ｍＷ］・・（１）
ダイナミック電力は、下記の式（２）に示すように、ダイナミック要素電力と実効周波数の積で表される。また、実効周波数は、下記の式（３）に示すように、動作周波数と稼働率の積で表される。
ダイナミック電力［ｍＷ］
＝ダイナミック要素電力［ｍＷ／ＭＨｚ］×実効周波数［ＭＨｚ］  ・・・（２）
実効周波数［ＭＨｚ］＝動作周波数［ＭＨｚ］×稼働率［ＭＨｚ］・・・（３）
ダイナミック要素電力は負荷容量と電源電圧の二乗の積で表される。ダイナミック要素電力をＷＥ、負荷容量をＣ、電源電圧をＶとすると、ダイナミック要素電力は、下記の式（４）で表される。負荷容量は半導体装置の設計値から予め基礎データとして取得しておく。
【００２６】
ＷＥ＝Ｃ×Ｖ２  ・・・（４）
また、稼働率はオペレーティングシステムでリアルタイムに取得される。
【００２７】
リーク電力は、リーク電流と電圧との積で表される。リーク電流は、トランジスタ１個あたりのリーク電流をｉＬ、トランジスタの総数をＮ、シャットダウン率をｒとして、下記式（５）で与えられる。
ＩＬ＝ｉＬ×Ｎ×（１−ｒ）  ・・・（５）
トランジスタ１個あたりのリーク電流をｉＬは、係数α［Ａ／ｎｍ］、ゲート幅Ｗ［ｎｍ］、しきい値電圧ＶT［Ｖ］、サブスレッショルド係数ｎ、ボルツマン定数ｋ＝１．３８×１０−２３［Ｊ／Ｋ］、絶対温度Ｔ［Ｋ］、電気素量ｑ＝１．６×１０−１９［Ｃ］を用いて、下記の式（６）で表すことができる。ここで、係数α及びサブスレッショルド係数ｎは実験などから求めることができる。
【００２８】
ｉＬ＝α×Ｗ×ｅｘｐ｛−ＶＴ×ｑ／（ｎ×ｋＴ）｝  ・・・（６）
なお、図２に示される基礎データ１５には、上記したダイナミック電力及びリーク電力を計算するために必要なパラメータが含まれている。基礎データ１５は、例えばメモリ３０（図２を参照）に記憶されている。
【００２９】
（電力比較）
ステップＳ４、Ｓ５：比較部１３３はステップＳ３で計算した発熱制御対象モジュールの消費電力と基準電力を比較する。ステップＳ４では、第一モジュールであるＣＰＵ１０の消費電力（Ｗ１）が基準電力（Ｗ１Ｓ）以上であるかどうかを判断し、ＹＥＳの場合はステップＳ６に移り、ＮＯの場合はステップＳ１に戻る。ステップＳ５では、第二モジュールであるＧＰＵ２０の消費電力（Ｗ２）が基準電力（Ｗ２Ｓ）以上であるかどうかを判断し、ＹＥＳの場合はステップＳ７に移り、ＮＯの場合はステップＳ１に戻る。なお、基準電力は予め定義しておく必要がある。ここでは基準電力の定義として、発熱制御の開始温度（例：９０℃）に到達するために必要な消費電力とする。
【００３０】
また、発熱制御対象モジュールと温度センサの位置関係により、ある温度に到達するために必要な消費電力は異なる。
【００３１】
図１に示すように、ＧＰＵ２０とＣＰＵ１０の付近に第二温度センサ（ＴＨＳ２）６２と第一温度センサ（ＴＨＳ１）６１がそれぞれ存在しており、第一温度センサ（ＴＨＳ１）６１の温度を監視している。このとき、図５に示すように、ＣＰＵ１０は第一温度センサ（ＴＨＳ１）と近接しているため、９０℃到達に必要な消費電力は５００ｍＷである。一方、図６に示すように、ＧＰＵ２０は第一温度センサ（ＴＨＳ１）とは距離があるため、第一温度センサ（ＴＨＳ１）の温度は上がりにくい。よって、第一温度センサ（ＴＨＳ１）を９０℃まで到達するためには５００ｍＷよりも大きな７００ｍＷの消費電力が必要となる。なお、基準電力は予め算出しておく必要があるが、ある温度センサの任意の温度到達に必要な消費電力はボードの放熱性能や各モジュールの消費電力から計算することが可能である。
【００３２】
ステップＳ６：発熱制御部１４は第一モジュールのＣＰＵ１０の発熱制御を行う。発熱制御部１４はＣＰＵ１０の動作周波数および電源電圧の少なくとも一つを制御する。
【００３３】
ステップＳ７：発熱制御部１４は第二モジュールのＧＰＵ２０の発熱制御を行う。発熱制御部１４はＧＰＵ２０の動作周波数および電源電圧の少なくとも一つを制御する。
【００３４】
（計算例）
式（１）（２）（３）を用いた発熱制御対象モジュールの消費電力および電力比較の計算例の３つのパターンについて説明する。ここで、
第一モジュール（ＣＰＵ）：
・動作周波数：５００ＭＨｚ〜１７００ＭＨｚ
・ダイナミック要素電力：０．４６ｍＷ／ＭＨｚ
・リーク電力：１５０ｍＷ（＠Ｔｊ＝９０℃）
第二モジュール（ＧＰＵ）：
・動作周波数：２００ＭＨｚ〜６００ＭＨｚ
・ダイナミック要素電力：０．５０ｍＷ／ＭＨｚ
・リーク電力：６００ｍＷ（＠Ｔｊ＝９０℃）
とする。
【００３５】
（パターン１）
第一基準電力（Ｗ１Ｓ）：５００ｍＷ、第二基準電力（Ｗ２Ｓ）：７００ｍＷ、ＣＰＵ１０の動作周波数：１７００ＭＨｚ、ＣＰＵ１０の稼働率：９０％、ＧＰＵ２０の動作周波数：６００ＭＨｚ、ＧＰＵ２０の稼働率：９０％、とする。
【００３６】
Ｔｊ＝９０℃におけるＣＰＵ１０の消費電力は以下のように求められる。
・実効周波数＝１７００ＭＨｚ×９０％＝１５３０ＭＨｚ
・ダイナミック電力＝０．４６ｍＷ／ＭＨｚ×１５３０ＭＨｚ＝７０３．８ｍＷ
・消費電力＝７０３．８ｍＷ＋１５０ｍＷ＝８５３．８ｍＷ
よって、第一モジュールの消費電力（Ｗ１）＝８５３．８ｍＷとなる。
【００３７】
同様に、Ｔｊ＝９０℃におけるＧＰＵ２０の消費電力は以下のように求められる。
・実効周波数＝６００ＭＨｚ×９０％＝５４０ＭＨｚ
・ダイナミック電力＝０．５０ｍＷ／ＭＨｚ×５４０ＭＨｚ＝２７０ｍＷ
・消費電力＝２７０ｍＷ＋６００ｍＷ＝８７０ｍＷ
よって、第二モジュールの消費電力（Ｗ２）＝８７０ｍＷとなる。
【００３８】
ＣＰＵ１０では、Ｗ１＝８５３．８ｍＷ＞Ｗ１Ｓ＝５００ｍＷとなり、ステップＳ４のＷ１≧Ｗ１Ｓが成り立ち、発熱制御が必要となる。ＧＰＵ２０では、Ｗ２＝８７０ｍＷ＞Ｗ２Ｓ＝７００ｍＷとなり、ステップＳ５のＷ２≧Ｗ２Ｓが成り立ち、発熱制御が必要となる。よって、ＣＰＵ１０およびＧＰＵ２０は共に発熱源であるので、ステップＳ６、Ｓ７で発熱制御を実施する。
【００３９】
（パターン２）
第一基準電力（Ｗ１Ｓ）：５００ｍＷ、第二基準電力（Ｗ２Ｓ）：７００ｍＷ、ＣＰＵ１０の動作周波数：１７００ＭＨｚ、ＣＰＵ１０の稼働率：２０％、ＧＰＵ２０の動作周波数：６００ＭＨｚ、ＧＰＵ２０の稼働率：９０％、とする。
【００４０】
Ｔｊ＝９０℃におけるＣＰＵ１０の消費電力は以下のように求められる。
・実効周波数＝１７００ＭＨｚ×２０％＝３４０ＭＨｚ
・ダイナミック電力＝０．４６ｍＷ／ＭＨｚ×３４０ＭＨｚ＝１５６．４ｍＷ
・消費電力＝１５６．４ｍＷ＋１５０ｍＷ＝３０６．４ｍＷ
よって、第一モジュールの消費電力（Ｗ１）＝３０６．４ｍＷとなる。
【００４１】
同様に、Ｔｊ＝９０℃におけるＧＰＵ２０の消費電力は以下のように求められる。
・実効周波数＝６００ＭＨｚ×９０％＝５４０ＭＨｚ
・ダイナミック電力＝０．５０ｍＷ／ＭＨｚ×５４０ＭＨｚ＝２７０ｍＷ
・消費電力＝２７０ｍＷ＋６００ｍＷ＝８７０ｍＷ
よって、第二モジュールの消費電力（Ｗ２）＝８７０ｍＷとなる。
【００４２】
ＣＰＵ１０では、Ｗ１＝３０６．４ｍＷ＜Ｗ１Ｓ＝５００ｍＷとなり、ステップＳ４のＷ１≧Ｗ１Ｓが成り立たず、発熱制御が不要となる。ＧＰＵ２０では、Ｗ２＝８７０ｍＷ＞Ｗ２Ｓ＝７００ｍＷとなり、ステップＳ５のＷ２≧Ｗ２Ｓが成り立ち、発熱制御が必要となる。よって、ＧＰＵ２０のみが発熱源であるので、ステップＳ７で発熱制御を実施する。
【００４３】
（パターン３）
第一基準電力（Ｗ１Ｓ）：５００ｍＷ、第二基準電力（Ｗ２Ｓ）：７００ｍＷ、ＣＰＵ１０の動作周波数：１７００ＭＨｚ、ＣＰＵ１０の稼働率：９０％、ＧＰＵ２０の動作周波数：６００ＭＨｚ、ＧＰＵ２０の稼働率：９０％、とする。
【００４４】
Ｔｊ＝９０℃におけるＣＰＵ１０の消費電力は以下のように求められる。
・実効周波数＝１７００ＭＨｚ×９０％＝１５３０ＭＨｚ
・ダイナミック電力＝０．４６ｍＷ／ＭＨｚ×１５３０ＭＨｚ＝７０３．８ｍＷ
・消費電力＝７０３．８ｍＷ＋１５０ｍＷ＝８５３．８ｍＷ
よって、第一モジュールの消費電力（Ｗ１）＝８５３．８ｍＷとなる。
【００４５】
同様に、Ｔｊ＝９０℃におけるＧＰＵ２０の消費電力は以下のように求められる。
・実効周波数＝６００ＭＨｚ×２０％＝１２０ＭＨｚ
・ダイナミック電力＝０．５０ｍＷ／ＭＨｚ×１２０ＭＨｚ＝６０ｍＷ
・消費電力＝６０ｍＷ＋６００ｍＷ＝６６０ｍＷ
よって、第二モジュールの消費電力（Ｗ２）＝６６０ｍＷとなる。
【００４６】
ＣＰＵ１０では、Ｗ１＝８５３．８ｍＷ＞Ｗ１Ｓ＝５００ｍＷとなり、ステップＳ４のＷ１≧Ｗ１Ｓが成り立ち、発熱制御が必要となる。ＧＰＵ２０では、Ｗ２＝６６０ｍＷ＜Ｗ２Ｓ＝７００ｍＷとなり、ステップＳ５のＷ２≧Ｗ２Ｓが成り立たず、発熱制御が不要となる。よって、ＣＰＵ１０のみが発熱源であるので、ステップＳ６で発熱制御を実施する。
【００４７】
本実施例は、制御対象選択部を有することにより、発熱制御対象の複数モジュールのそれぞれの消費電力に基づいて適切に発熱制御すべきモジュールを選択することができる。なお、本実施例では温度監視には第一温度センサ（ＴＨＳ１）６１を用いたが第二温度センサ（ＴＨＳ２）６２を用いてもよいし、第一温度センサ（ＴＨＳ１）６１と第二温度センサ（ＴＨＳ２）６２の両方を用いてもよい。よって、温度監視には温度センサは少なくとも一つあればよい。
【００４８】
＜変形例＞
以下、代表的な変形例について例示する。以下の変形例の説明において、上述の実施例にて説明されているものと同様の構成および機能を有する部分に対しては、上述の実施例と同様の符号が用いられ得るものとする。そして、かかる部分の説明については、技術的に矛盾しない範囲内において、上述の実施例における説明が適宜援用され得るものとする。また、上述の実施例の一部、および、変形例の全部または一部が、技術的に矛盾しない範囲内において、適宜、複合的に適用され得る。
【００４９】
実施例では、少なくとも一つの温度センサによって発熱制御が必要かどうか判断し、すべての発熱制御対象モジュールの消費電力を計算して、実際に発熱制御すべきモジュールを選択している。変形例では、少なくとも一つの温度センサによって発熱制御が必要かどうか判断し、一つの発熱制御対象モジュールの消費電力を計算し、すべての発熱制御対象モジュールのそれぞれの温度センサの温度と一つの発熱制御対象モジュールの消費電力とに基づいて、実際に発熱制御すべきモジュールを選択する。
【００５０】
変形例に係る半導体装置について図７を用いて説明する。図７は実施例に係る半導体装置の構成を説明するブック図である。変形例に係る半導体装置１Ａは制御回路１１Ａを除いて、実施例に係る半導体装置１と同様である。
【００５１】
半導体装置１Ａは、第一モジュール１０と、第一温度センサ（ＴＨＳ１）６１と、第二モジュール２０と、第二温度センサ（ＴＨＳ２）６２と、メモリ３０と、ＡＤ変換器（ＡＤＣ）４０と、バス５０と、制御回路１１Ａと、を一つの半導体チップに備える。第一モジュール１０は中央処理装置（ＣＰＵ）であり、第二モジュール２０はグラフィック処理装置（ＧＰＵ）である。図１に示すように、第一温度センサ（ＴＨＳ１）６１は第一モジュール１０に近接して配置され、第二温度センサ（ＴＨＳ２）６２は第二モジュール２０に近接して配置される。ＡＤ変換器（ＡＤＣ）４０は例えば第一温度センサ（ＴＨＳ１）６１および第二温度センサ（ＴＨＳ２）６２の温度情報をデジタル情報に変換する。
【００５２】
制御回路１１Ａは、温度検出部１２Ａと、制御対象選択部１３Ａと、発熱制御部１４と、を備える。制御対象選択部１３は、温度制御が必要か判断するための温度判定部１３１と、発熱制御対象を選択するための基礎データ１５に基づいて消費電力を算出する電力計算部１３２と、それらのデータを基に発熱制御対象を選択する比較部１３３Ａと、を有する。
【００５３】
温度検出部１２Ａは、第一温度センサ（ＴＨＳ１）６１および第二温度センサ（ＴＨＳ２）６２からの温度データを取得する。
【００５４】
温度判定部１３１Ａは、例えば第一温度センサ（ＴＨＳ１）６１で取得した温度データと、予め設定してある温度閾値を比較し、温度制御の開始判定を行う。電力計算部１３２Ａは、ダイナミック要素電力やリーク電力等の基礎データ１５と、リアルタイムで取得した負荷情報（稼働率）等と、に基づいて発熱制御対象のモジュール（例えば、第一モジュールのＣＰＵ１０）の消費電力を算出する。比較部１３３Ａは、第一温度センサ（ＴＨＳ１）６１で取得した温度データと第二温度センサ（ＴＨＳ２）６２で取得した温度データとの関係、および電力計算部１３２Ａで算出した消費電力と予め設定した基準電力との関係から発熱制御対象モジュールを選択する。
【００５５】
図７の半導体装置の発熱制御について図８を用いて説明する。図８は発熱制御選択機能の動作を説明するフローチャートである。
【００５６】
（温度監視〜温度閾値）
ステップＳ１１、Ｓ１２：実施例と同様、少なくとも一つの温度センサで温度情報に基づいて発熱制御が必要かどうかを判断する。ただし、すべての温度センサの温度情報を取得する。
【００５７】
（消費電力計算）
ステップＳ１３：実施例と同様に消費電力を計算する。ただし、消費電力を計算する発熱制御対象モジュールは一つである。図８ではＣＰＵ１０の消費電力を計算している。
【００５８】
（温度比較〜電力比較）
ステップＳ１４：比較部１３３Ａは第二温度センサ（ＴＨＳ２）６２から取得した温度（Ｔ２）が第一温度センサ（ＴＨＳ１）６１から取得した温度（Ｔ１）よりも高いかどうかを判断する。ＹＥＳの場合はステップＳ１５に移り、ＮＯの場合はステップＳ１６に移る。
【００５９】
ステップＳ１５：比較部１３３ＡはステップＳ１３で計算したＣＰＵ１０の消費電力（Ｗ１）が基準電力（Ｗ１Ｓ）以上であるかどうかを判断し、ＹＥＳの場合はステップＳ１７に移り、ＮＯの場合はステップＳ１８に移る。
【００６０】
ステップＳ１６：比較部１３３ＡはステップＳ１５と同様に、ＣＰＵ１０の消費電力（Ｗ１）が基準電力（Ｗ１Ｓ）以上であるかどうかを判断し、ＹＥＳの場合はステップＳ１９に移り、ＮＯの場合はステップＳ１１に戻る。
【００６１】
ステップＳ１７：発熱制御部１４はＣＰＵ１０およびＧＰＵ２０の発熱制御を行う。発熱制御部１４はＣＰＵ１０の動作周波数および電源電圧の少なくとも一つをおよびＧＰＵ２０の動作周波数および電源電圧の少なくとも一つ制御する。
【００６２】
ステップＳ１８：発熱制御部１４はＧＰＵ２０の発熱制御を行う。発熱制御部１４はＧＰＵ２０の動作周波数および電源電圧の少なくとも一つを制御する。
【００６３】
ステップＳ１９：発熱制御部１４はＣＰＵ１０の発熱制御を行う。発熱制御部１４はＣＰＵ１０の動作周波数および電源電圧の少なくとも一つを制御する。
【００６４】
（計算例）
第一温度センサ（ＴＨＳ１）６１の温度（Ｔ１）および第に二温度センサ（ＴＨＳ２）６２の温度（Ｔ２）の例、式（１）（２）（５）を用いた発熱制御対象モジュールの消費電力および電力比較の計算例の３つのパターンについて説明する。ここで、
第一モジュール（ＣＰＵ）：
・動作周波数：５００ＭＨｚ〜１７００ＭＨｚ
・ダイナミック要素電力：０．４６ｍＷ／ＭＨｚ
・リーク電力：１５０ｍＷ（＠Ｔｊ＝９０℃）
とする。
【００６５】
（パターン１）
第一基準電力（Ｗ１Ｓ）：５００ｍＷ、ＣＰＵ１０の動作周波数：１７００ＭＨｚ、ＣＰＵ１０の稼働率：９０％、Ｔ１＝９０℃、Ｔ２＝１１０℃、とする。
【００６６】
Ｔ１＝９０℃におけるＣＰＵ１０の消費電力は以下のように求められる。
・実効周波数＝１７００ＭＨｚ×９０％＝１５３０ＭＨｚ
・ダイナミック電力＝０．４６ｍＷ／ＭＨｚ×１５３０ＭＨｚ＝７０３．８ｍＷ
・消費電力＝７０３．８ｍＷ＋１５０ｍＷ＝８５３．８ｍＷ
よって、ＣＰＵ１０の消費電力（Ｗ１）＝８５３．８ｍＷとなる。
【００６７】
Ｔ２＝１１０℃＞Ｔ１＝９０℃であり、Ｗ１＝８５３．８ｍＷ≧Ｗ１Ｓ＝５００ｍＷであるので、ステップＳ１４のＴ２＞Ｔ１およびステップＳ１５のＷ１≧Ｗ１Ｓが成り立ち、ＣＰＵ１０とＧＰＵ２０の両方が発熱源となる。よって、発熱制御すべきモジュールはＣＰＵ１０とＧＰＵ２０となる。
【００６８】
（パターン２）
第一基準電力（Ｗ１Ｓ）：５００ｍＷ、ＣＰＵ１０の動作周波数：１７００ＭＨｚ、ＣＰＵ１０の稼働率：２０％、Ｔ１＝９０℃、Ｔ２＝１１０℃、とする。
【００６９】
Ｔ１＝９０℃におけるＣＰＵ１０の消費電力は以下のように求められる。
・実効周波数＝１７００ＭＨｚ×２０％＝３４０ＭＨｚ
・ダイナミック電力＝０．４６ｍＷ／ＭＨｚ×３４０ＭＨｚ＝１５６．４ｍＷ
・消費電力＝１５６．４ｍＷ＋１５０ｍＷ＝３０６．４ｍＷ
よって、ＣＰＵ１０の消費電力（Ｗ１）＝３０６．４ｍＷとなる。
【００７０】
Ｔ２＝１１０℃＞Ｔ１＝９０℃であり、Ｗ１＝３０６．４ｍＷ＜Ｗ１Ｓ＝５００ｍＷであるので、ステップＳ１４のＴ２＞Ｔ１が成り立ち、ステップＳ１５のＷ１≧Ｗ１Ｓが成り立たないので、ＧＰＵ２０が発熱源となる。よって、発熱制御すべきモジュールはＧＰＵ２０となる。
【００７１】
（パターン３）
第一基準電力（Ｗ１Ｓ）：５００ｍＷ、ＣＰＵ１０の動作周波数：１７００ＭＨｚ、ＣＰＵ１０の稼働率：９０％、Ｔ１＝９０℃、Ｔ２＝５０℃、とする。
【００７２】
Ｔ１＝９０℃におけるＣＰＵ１０の消費電力は以下のように求められる。
・実効周波数＝１７００ＭＨｚ×９０％＝１５３０ＭＨｚ
・ダイナミック電力＝０．４６ｍＷ／ＭＨｚ×１５３０ＭＨｚ＝７０３．８ｍＷ
・消費電力＝７０３．８ｍＷ＋１５０ｍＷ＝８５３．８ｍＷ
よって、ＣＰＵ１０の消費電力（Ｗ１）＝８５３．８ｍＷとなる。
【００７３】
Ｔ２＝５０℃＜Ｔ１＝９０℃であり、Ｗ１＝８５３．８ｍＷ≧Ｗ１Ｓ＝５００ｍＷであるので、ステップＳ１４のＴ２＞Ｔ１が成り立たず、ステップＳ１６のＷ１≧Ｗ１Ｓが成り立ち、ＣＰＵ１０が発熱源となる。よって、発熱制御すべきモジュールはＣＰＵ１０となる。
【００７４】
変形例では、発熱制御対象の複数モジュールに対し、一つの発熱制御対象モジュールの消費電力と複数の温度センサの関係に基づいて適切に発熱制御すべきモジュールを選択することができる。また、実施例と比較し、任意の発熱制御対象モジュールの消費電力と複数の温度センサの関係から選択可能なため、すべての発熱制御対象モジュールの消費電力を算出する必要がない。
【００７５】
以上、本発明者によってなされた発明を実施形態、実施例および変形例に基づき具体的に説明したが、本発明は、上記実施形態、実施例および変形例に限定されるものではなく、種々変更可能であることはいうまでもない。
【００７６】
例えば、実施例および変形例では発熱制御対象モジュールは二つの場合について説明したが、二つに限定されるものではなく、三つ以上であってもよい。
【符号の説明】
【００７７】
１・・・半導体装置
１０・・・第一モジュール（ＣＰＵ）
１１・・・制御回路
１２・・・温度検出部
１３・・・制御対象選択部
１４・・・発熱制御部
１５・・・基礎データ
２０・・・第二モジュール（ＧＰＵ）
３０・・・メモリ
４０・・・ＡＤ変換器（ＡＤＣ）
５０・・・バス
６１・・・第一温度センサ（ＴＨＳ１）
６２・・・第二温度センサ（ＴＨＳ２）
【図１】
2019012377.tif 000003
【図２】
2019012377.tif 000004
【図３】
2019012377.tif 000005
【図４】
2019012377.tif 000006
【図５】
2019012377.tif 000007
【図６】
2019012377.tif 000008
【図７】
2019012377.tif 000009
【図８】
2019012377.tif 000010