【実施例】
【0015】
まず、実施例に係る半導体装置について
図1、2を用いて説明する。
図2は
図1の半導体装置の構成例を示すブロック図である。
【0016】
図1に示すように、半導体装置1は、第一モジュール10と、第一温度センサ(THS1)61と、第二モジュール20と、第二温度センサ(THS2)62と、メモリ30と、AD変換器(ADC)40と、バス50と、制御回路11と、を一つの半導体チップに備える。第一モジュール10は中央処理装置(CPU)であり、第二モジュール20はグラフィック処理装置(GPU)である。
図1に示すように、第一温度センサ(THS1)61は第一モジュール10に近接して配置され、第二温度センサ(THS2)62は第二モジュール20に近接して配置される。AD変換器(ADC)40は例えば第一温度センサ(THS1)61および第二温度センサ(THS2)62の温度情報をデジタル情報に変換する。
【0017】
図2に示すように、制御回路11は、温度検出部12と、制御対象選択部13と、発熱制御部14と、を備える。制御対象選択部13は、温度制御が必要か判断するための温度判定部131と、発熱制御対象を選択するための基礎データ15に基づいて消費電力を算出する電力計算部132と、それらのデータを基に発熱制御対象を選択する比較部133と、を有する。
【0018】
温度検出部12は、第一温度センサ(THS1)61からの温度データを取得する。第一温度センサ(THS1)61および第二温度センサ(THS2)62のセンサとして、例えば、ダイオードを用いる。一定の電流が流されるダイオードの端子間電圧は、温度に伴って変化する。ダイオードに一定の電流を流し、ダイオードの両端の電圧を測定することで、温度の変化に伴って変化する電圧から、温度を測定する。アナログの電圧値は、ADC62でAD変換することでデジタル化する。温度検出部12は、デジタル化した電圧値から、温度と電圧の関係を表す対応表や計算式を用いて、対応する温度を求める。
【0019】
温度判定部131は、取得した温度データと、予め設定してある温度閾値を比較し、温度制御の開始判定を行う。電力計算部132は、後述するダイナミック要素電力やリーク電力等の基礎データ15と、リアルタイムで取得した負荷情報(稼働率)等と、に基づいて発熱制御対象のモジュールの消費電力を算出する。比較部133は、電力計算部132で算出した消費電力と、予め設定した基準電力との関係から発熱制御対象モジュールの中から発熱制御すべきモジュールを選択する。
【0020】
発熱制御部14は、制御対象選択部13で選択された発熱制御対象モジュールに対し、機能制限を適用し発熱制御を行う。発熱制御部14は、電源制御部142とクロック制御部141とを有する。電源制御部142は、発熱制御すべきモジュールの電源制御(電源電圧の昇降)を行う。クロック制御部141は、発熱制御すべきモジュールのクロック制御(動作周波数の昇降)を行う。
【0021】
制御回路11は、CPU(Central Processing Unit)とプログラムが格納されるメモリ、および/またはその他の回路で構成することができ、したがって、制御回路11は、ハードウェアのみ、ソフトウェアのみ、又はそれらの組合せによっていろいろな形で実現できる。制御回路11は、例えば、CPU10とメモリ30によって構成することができる。
【0022】
図2の半導体装置の発熱制御について
図3〜6を用いて説明する。
図3は
図2の半導体装置の発熱制御選択機能の動作を示すフローチャートである。
図4は
図2の半導体装置の発熱制御の開始温度と制御イメージを示す図である。
図5はCPUの基準電力を説明する図である。
図6はGPUの基準電力を説明する図である。
【0023】
(温度監視〜温度閾値)
ステップS1、S2:温度検出部12はADC40を介して第一温度センサ(THS1)61より温度情報を取得し、温度判定部131は取得した温度情報が発熱制御の開始温度を超えていないかポーリング処理により確認する。なお、ここで発熱制御は例えば第一温度センサ(THS1)61が閾値である90℃以上で開始することとし、ターゲット温度(例えば100℃)で温度飽和するために機能(処理量)を制限し発熱制御を実施する。発熱制御としては、例えば、
図4に示すように、CPU10の動作周波数を制御し発熱を抑制する。例えば、動作周波数を1.7GHzから0.5GHzに下げてダイナミッ電力を削減する。なお、例えばCPU10は4つのコアで構成されるが、この例では動作するコア数を少なくすることはしていない。動作するコア数を少なくしたり、電源電圧を下げたりしてダイナミック電力を削減するようにしてもよい。また、温度検出には、第一温度センサ(THS1)に代えて第二温度センサ(THS2)を用いてもよいし、第一温度センサ(THS1と第二温度センサ(THS2)の両方を用いてもよい。
【0024】
(制御対象の消費電力計算)
ステップS3:電力計算部132は発熱制御対象モジュール(CPU10、GPU20)の消費電力を計算する。
【0025】
消費電力は、下記の式(1)に示すように、ダイナミック電力とリーク電力の和で表される。
消費電力[mW]=ダイナミック電力[mW]+リーク電力[mW]・・(1)
ダイナミック電力は、下記の式(2)に示すように、ダイナミック要素電力と実効周波数の積で表される。また、実効周波数は、下記の式(3)に示すように、動作周波数と稼働率の積で表される。
ダイナミック電力[mW]
=ダイナミック要素電力[mW/MHz]×実効周波数[MHz] ・・・(2)
実効周波数[MHz]=動作周波数[MHz]×稼働率[MHz]・・・(3)
ダイナミック要素電力は負荷容量と電源電圧の二乗の積で表される。ダイナミック要素電力をW
E、負荷容量をC、電源電圧をVとすると、ダイナミック要素電力は、下記の式(4)で表される。負荷容量は半導体装置の設計値から予め基礎データとして取得しておく。
【0026】
W
E=C×V
2 ・・・(4)
また、稼働率はオペレーティングシステムでリアルタイムに取得される。
【0027】
リーク電力は、リーク電流と電圧との積で表される。リーク電流は、トランジスタ1個あたりのリーク電流をi
L、トランジスタの総数をN、シャットダウン率をrとして、下記式(5)で与えられる。
I
L=i
L×N×(1−r) ・・・(5)
トランジスタ1個あたりのリーク電流をi
Lは、係数α[A/nm]、ゲート幅W[nm]、しきい値電圧V
T[V]、サブスレッショルド係数n、ボルツマン定数k=1.38×10
−23[J/K]、絶対温度T[K]、電気素量q=1.6×10
−19[C]を用いて、下記の式(6)で表すことができる。ここで、係数α及びサブスレッショルド係数nは実験などから求めることができる。
【0028】
i
L=α×W×exp{−V
T×q/(n×kT)} ・・・(6)
なお、
図2に示される基礎データ15には、上記したダイナミック電力及びリーク電力を計算するために必要なパラメータが含まれている。基礎データ15は、例えばメモリ30(
図2を参照)に記憶されている。
【0029】
(電力比較)
ステップS4、S5:比較部133はステップS3で計算した発熱制御対象モジュールの消費電力と基準電力を比較する。ステップS4では、第一モジュールであるCPU10の消費電力(W1)が基準電力(W1S)以上であるかどうかを判断し、YESの場合はステップS6に移り、NOの場合はステップS1に戻る。ステップS5では、第二モジュールであるGPU20の消費電力(W2)が基準電力(W2S)以上であるかどうかを判断し、YESの場合はステップS7に移り、NOの場合はステップS1に戻る。なお、基準電力は予め定義しておく必要がある。ここでは基準電力の定義として、発熱制御の開始温度(例:90℃)に到達するために必要な消費電力とする。
【0030】
また、発熱制御対象モジュールと温度センサの位置関係により、ある温度に到達するために必要な消費電力は異なる。
【0031】
図1に示すように、GPU20とCPU10の付近に第二温度センサ(THS2)62と第一温度センサ(THS1)61がそれぞれ存在しており、第一温度センサ(THS1)61の温度を監視している。このとき、
図5に示すように、CPU10は第一温度センサ(THS1)と近接しているため、90℃到達に必要な消費電力は500mWである。一方、
図6に示すように、GPU20は第一温度センサ(THS1)とは距離があるため、第一温度センサ(THS1)の温度は上がりにくい。よって、第一温度センサ(THS1)を90℃まで到達するためには500mWよりも大きな700mWの消費電力が必要となる。なお、基準電力は予め算出しておく必要があるが、ある温度センサの任意の温度到達に必要な消費電力はボードの放熱性能や各モジュールの消費電力から計算することが可能である。
【0032】
ステップS6:発熱制御部14は第一モジュールのCPU10の発熱制御を行う。発熱制御部14はCPU10の動作周波数および電源電圧の少なくとも一つを制御する。
【0033】
ステップS7:発熱制御部14は第二モジュールのGPU20の発熱制御を行う。発熱制御部14はGPU20の動作周波数および電源電圧の少なくとも一つを制御する。
【0034】
(計算例)
式(1)(2)(3)を用いた発熱制御対象モジュールの消費電力および電力比較の計算例の3つのパターンについて説明する。ここで、
第一モジュール(CPU):
・動作周波数:500MHz〜1700MHz
・ダイナミック要素電力:0.46mW/MHz
・リーク電力:150mW(@Tj=90℃)
第二モジュール(GPU):
・動作周波数:200MHz〜600MHz
・ダイナミック要素電力:0.50mW/MHz
・リーク電力:600mW(@Tj=90℃)
とする。
【0035】
(パターン1)
第一基準電力(W1S):500mW、第二基準電力(W2S):700mW、CPU10の動作周波数:1700MHz、CPU10の稼働率:90%、GPU20の動作周波数:600MHz、GPU20の稼働率:90%、とする。
【0036】
Tj=90℃におけるCPU10の消費電力は以下のように求められる。
・実効周波数=1700MHz×90%=1530MHz
・ダイナミック電力=0.46mW/MHz×1530MHz=703.8mW
・消費電力=703.8mW+150mW=853.8mW
よって、第一モジュールの消費電力(W1)=853.8mWとなる。
【0037】
同様に、Tj=90℃におけるGPU20の消費電力は以下のように求められる。
・実効周波数=600MHz×90%=540MHz
・ダイナミック電力=0.50mW/MHz×540MHz=270mW
・消費電力=270mW+600mW=870mW
よって、第二モジュールの消費電力(W2)=870mWとなる。
【0038】
CPU10では、W1=853.8mW>W1S=500mWとなり、ステップS4のW1≧W1Sが成り立ち、発熱制御が必要となる。GPU20では、W2=870mW>W2S=700mWとなり、ステップS5のW2≧W2Sが成り立ち、発熱制御が必要となる。よって、CPU10およびGPU20は共に発熱源であるので、ステップS6、S7で発熱制御を実施する。
【0039】
(パターン2)
第一基準電力(W1S):500mW、第二基準電力(W2S):700mW、CPU10の動作周波数:1700MHz、CPU10の稼働率:20%、GPU20の動作周波数:600MHz、GPU20の稼働率:90%、とする。
【0040】
Tj=90℃におけるCPU10の消費電力は以下のように求められる。
・実効周波数=1700MHz×20%=340MHz
・ダイナミック電力=0.46mW/MHz×340MHz=156.4mW
・消費電力=156.4mW+150mW=306.4mW
よって、第一モジュールの消費電力(W1)=306.4mWとなる。
【0041】
同様に、Tj=90℃におけるGPU20の消費電力は以下のように求められる。
・実効周波数=600MHz×90%=540MHz
・ダイナミック電力=0.50mW/MHz×540MHz=270mW
・消費電力=270mW+600mW=870mW
よって、第二モジュールの消費電力(W2)=870mWとなる。
【0042】
CPU10では、W1=306.4mW<W1S=500mWとなり、ステップS4のW1≧W1Sが成り立たず、発熱制御が不要となる。GPU20では、W2=870mW>W2S=700mWとなり、ステップS5のW2≧W2Sが成り立ち、発熱制御が必要となる。よって、GPU20のみが発熱源であるので、ステップS7で発熱制御を実施する。
【0043】
(パターン3)
第一基準電力(W1S):500mW、第二基準電力(W2S):700mW、CPU10の動作周波数:1700MHz、CPU10の稼働率:90%、GPU20の動作周波数:600MHz、GPU20の稼働率:90%、とする。
【0044】
Tj=90℃におけるCPU10の消費電力は以下のように求められる。
・実効周波数=1700MHz×90%=1530MHz
・ダイナミック電力=0.46mW/MHz×1530MHz=703.8mW
・消費電力=703.8mW+150mW=853.8mW
よって、第一モジュールの消費電力(W1)=853.8mWとなる。
【0045】
同様に、Tj=90℃におけるGPU20の消費電力は以下のように求められる。
・実効周波数=600MHz×20%=120MHz
・ダイナミック電力=0.50mW/MHz×120MHz=60mW
・消費電力=60mW+600mW=660mW
よって、第二モジュールの消費電力(W2)=660mWとなる。
【0046】
CPU10では、W1=853.8mW>W1S=500mWとなり、ステップS4のW1≧W1Sが成り立ち、発熱制御が必要となる。GPU20では、W2=660mW<W2S=700mWとなり、ステップS5のW2≧W2Sが成り立たず、発熱制御が不要となる。よって、CPU10のみが発熱源であるので、ステップS6で発熱制御を実施する。
【0047】
本実施例は、制御対象選択部を有することにより、発熱制御対象の複数モジュールのそれぞれの消費電力に基づいて適切に発熱制御すべきモジュールを選択することができる。なお、本実施例では温度監視には第一温度センサ(THS1)61を用いたが第二温度センサ(THS2)62を用いてもよいし、第一温度センサ(THS1)61と第二温度センサ(THS2)62の両方を用いてもよい。よって、温度監視には温度センサは少なくとも一つあればよい。
【0048】
<変形例>
以下、代表的な変形例について例示する。以下の変形例の説明において、上述の実施例にて説明されているものと同様の構成および機能を有する部分に対しては、上述の実施例と同様の符号が用いられ得るものとする。そして、かかる部分の説明については、技術的に矛盾しない範囲内において、上述の実施例における説明が適宜援用され得るものとする。また、上述の実施例の一部、および、変形例の全部または一部が、技術的に矛盾しない範囲内において、適宜、複合的に適用され得る。
【0049】
実施例では、少なくとも一つの温度センサによって発熱制御が必要かどうか判断し、すべての発熱制御対象モジュールの消費電力を計算して、実際に発熱制御すべきモジュールを選択している。変形例では、少なくとも一つの温度センサによって発熱制御が必要かどうか判断し、一つの発熱制御対象モジュールの消費電力を計算し、すべての発熱制御対象モジュールのそれぞれの温度センサの温度と一つの発熱制御対象モジュールの消費電力とに基づいて、実際に発熱制御すべきモジュールを選択する。
【0050】
変形例に係る半導体装置について
図7を用いて説明する。
図7は実施例に係る半導体装置の構成を説明するブック図である。変形例に係る半導体装置1Aは制御回路11Aを除いて、実施例に係る半導体装置1と同様である。
【0051】
半導体装置1Aは、第一モジュール10と、第一温度センサ(THS1)61と、第二モジュール20と、第二温度センサ(THS2)62と、メモリ30と、AD変換器(ADC)40と、バス50と、制御回路11Aと、を一つの半導体チップに備える。第一モジュール10は中央処理装置(CPU)であり、第二モジュール20はグラフィック処理装置(GPU)である。
図1に示すように、第一温度センサ(THS1)61は第一モジュール10に近接して配置され、第二温度センサ(THS2)62は第二モジュール20に近接して配置される。AD変換器(ADC)40は例えば第一温度センサ(THS1)61および第二温度センサ(THS2)62の温度情報をデジタル情報に変換する。
【0052】
制御回路11Aは、温度検出部12Aと、制御対象選択部13Aと、発熱制御部14と、を備える。制御対象選択部13は、温度制御が必要か判断するための温度判定部131と、発熱制御対象を選択するための基礎データ15に基づいて消費電力を算出する電力計算部132と、それらのデータを基に発熱制御対象を選択する比較部133Aと、を有する。
【0053】
温度検出部12Aは、第一温度センサ(THS1)61および第二温度センサ(THS2)62からの温度データを取得する。
【0054】
温度判定部131Aは、例えば第一温度センサ(THS1)61で取得した温度データと、予め設定してある温度閾値を比較し、温度制御の開始判定を行う。電力計算部132Aは、ダイナミック要素電力やリーク電力等の基礎データ15と、リアルタイムで取得した負荷情報(稼働率)等と、に基づいて発熱制御対象のモジュール(例えば、第一モジュールのCPU10)の消費電力を算出する。比較部133Aは、第一温度センサ(THS1)61で取得した温度データと第二温度センサ(THS2)62で取得した温度データとの関係、および電力計算部132Aで算出した消費電力と予め設定した基準電力との関係から発熱制御対象モジュールを選択する。
【0055】
図7の半導体装置の発熱制御について
図8を用いて説明する。
図8は発熱制御選択機能の動作を説明するフローチャートである。
【0056】
(温度監視〜温度閾値)
ステップS11、S12:実施例と同様、少なくとも一つの温度センサで温度情報に基づいて発熱制御が必要かどうかを判断する。ただし、すべての温度センサの温度情報を取得する。
【0057】
(消費電力計算)
ステップS13:実施例と同様に消費電力を計算する。ただし、消費電力を計算する発熱制御対象モジュールは一つである。
図8ではCPU10の消費電力を計算している。
【0058】
(温度比較〜電力比較)
ステップS14:比較部133Aは第二温度センサ(THS2)62から取得した温度(T2)が第一温度センサ(THS1)61から取得した温度(T1)よりも高いかどうかを判断する。YESの場合はステップS15に移り、NOの場合はステップS16に移る。
【0059】
ステップS15:比較部133AはステップS13で計算したCPU10の消費電力(W1)が基準電力(W1S)以上であるかどうかを判断し、YESの場合はステップS17に移り、NOの場合はステップS18に移る。
【0060】
ステップS16:比較部133AはステップS15と同様に、CPU10の消費電力(W1)が基準電力(W1S)以上であるかどうかを判断し、YESの場合はステップS19に移り、NOの場合はステップS11に戻る。
【0061】
ステップS17:発熱制御部14はCPU10およびGPU20の発熱制御を行う。発熱制御部14はCPU10の動作周波数および電源電圧の少なくとも一つをおよびGPU20の動作周波数および電源電圧の少なくとも一つ制御する。
【0062】
ステップS18:発熱制御部14はGPU20の発熱制御を行う。発熱制御部14はGPU20の動作周波数および電源電圧の少なくとも一つを制御する。
【0063】
ステップS19:発熱制御部14はCPU10の発熱制御を行う。発熱制御部14はCPU10の動作周波数および電源電圧の少なくとも一つを制御する。
【0064】
(計算例)
第一温度センサ(THS1)61の温度(T1)および第に
二温度センサ(THS2)62の温度(T2)の例、式(1)(2)(5)を用いた発熱制御対象モジュールの消費電力および電力比較の計算例の3つのパターンについて説明する。ここで、
第一モジュール(CPU):
・動作周波数:500MHz〜1700MHz
・ダイナミック要素電力:0.46mW/MHz
・リーク電力:150mW(@Tj=90℃)
とする。
【0065】
(パターン1)
第一基準電力(W1S):500mW、CPU10の動作周波数:1700MHz、CPU10の稼働率:90%、T1=90℃、T2=110℃、とする。
【0066】
T1=90℃におけるCPU10の消費電力は以下のように求められる。
・実効周波数=1700MHz×90%=1530MHz
・ダイナミック電力=0.46mW/MHz×1530MHz=703.8mW
・消費電力=703.8mW+150mW=853.8mW
よって、CPU10の消費電力(W1)=853.8mWとなる。
【0067】
T2=110℃>T1=90℃であり、W1=853.8mW≧W1S=500mWであるので、ステップS14のT2>T1およびステップS15のW1≧W1Sが成り立ち、CPU10とGPU20の両方が発熱源となる。よって、発熱制御すべきモジュールはCPU10とGPU20となる。
【0068】
(パターン2)
第一基準電力(W1S):500mW、CPU10の動作周波数:1700MHz、CPU10の稼働率:20%、T1=90℃、T2=110℃、とする。
【0069】
T1=90℃におけるCPU10の消費電力は以下のように求められる。
・実効周波数=1700MHz×20%=340MHz
・ダイナミック電力=0.46mW/MHz×340MHz=156.4mW
・消費電力=156.4mW+150mW=306.4mW
よって、CPU10の消費電力(W1)=306.4mWとなる。
【0070】
T2=110℃>T1=90℃であり、W1=306.4mW<W1S=500mWであるので、ステップS14のT2>T1が成り立ち、ステップS15のW1≧W1Sが成り立たないので、GPU20が発熱源となる。よって、発熱制御すべきモジュールはGPU20となる。
【0071】
(パターン3)
第一基準電力(W1S):500mW、CPU10の動作周波数:1700MHz、CPU10の稼働率:90%、T1=90℃、T2=50℃、とする。
【0072】
T1=90℃におけるCPU10の消費電力は以下のように求められる。
・実効周波数=1700MHz×90%=1530MHz
・ダイナミック電力=0.46mW/MHz×1530MHz=703.8mW
・消費電力=703.8mW+150mW=853.8mW
よって、CPU10の消費電力(W1)=853.8mWとなる。
【0073】
T2=50℃<T1=90℃であり、W1=853.8mW≧W1S=500mWであるので、ステップS14のT2>T1が成り立たず、ステップS16のW1≧W1Sが成り立ち、CPU10が発熱源となる。よって、発熱制御すべきモジュールはCPU10となる。
【0074】
変形例では、発熱制御対象の複数モジュールに対し、一つの発熱制御対象モジュールの消費電力と複数の温度センサの関係に基づいて適切に発熱制御すべきモジュールを選択することができる。また、実施例と比較し、任意の発熱制御対象モジュールの消費電力と複数の温度センサの関係から選択可能なため、すべての発熱制御対象モジュールの消費電力を算出する必要がない。
【0075】
以上、本発明者によってなされた発明を実施形態、実施例および変形例に基づき具体的に説明したが、本発明は、上記実施形態、実施例および変形例に限定されるものではなく、種々変更可能であることはいうまでもない。
【0076】
例えば、実施例および変形例では発熱制御対象モジュールは二つの場合について説明したが、二つに限定されるものではなく、三つ以上であってもよい。