(57)【要約】【課題】負荷に応じてクロック周波数を制御する半導体装置で、半導体装置の温度が上限温度を超えない範囲で、動作周波数の低下を抑制する制御を実現する。【解決手段】半導体装置１は、クロックを発振する発振部２０と、発振部２０が発振したクロックに応じて動作する回路部５と、回路部５の温度を検出する温度検出部７と、回路部５の消費電力を監視電力値として取得する電力検出部６とを有する。半導体装置１は、温度検出部７が検出した温度が温度閾値を超えた場合、回路部５の温度が温度閾値よりも高い温度に収束する目標電力に監視電力値が一致するように発振部２０のクロックの周波数を制御する周波数制御部１０を更に有する。【選択図】図６
2018005569.tif 000002
【特許請求の範囲】
【請求項１】
クロックを発振する発振部と、
前記発振部が発振したクロックに応じて動作する回路部と、
前記回路部の温度を検出する温度検出部と、
前記回路部の消費電力を監視電力値として取得する電力検出部と、
前記温度検出部が検出した温度が温度閾値を超えた場合、前記回路部の温度が前記温度閾値よりも高い温度に収束する目標電力に前記監視電力値が一致するように前記発振部のクロックの周波数を制御する周波数制御部と、
を有する半導体装置。
【請求項２】
周波数制御部は、
前記監視電力値に基づいて、前記温度検出部で検出された温度が前記温度閾値に一致したときの温度に対応するベース電力値を推定する電力推定部と、
前記目標電力が前記ベース電力値以上であり且つ前記温度検出部で検出された温度が温度閾値を超えたときの前記監視電力値以下になるように、前記クロックの周波数を決定する周波数決定部と、
を有する、請求項１に記載の半導体装置。
【請求項３】
周波数制御部は、前記ベース電力値を記憶するベース電力レジスタを更に有する、請求項２に記載の半導体装置。
【請求項４】
クロックを発振する発振部と、前記発振部が発振したクロックに応じて動作する回路部を有する半導体装置の制御方法において、
前記半導体装置が有する温度検出部が、前記回路部の温度を検出し、
前記半導体装置が有する電力検出部が、前記回路部の消費電力を監視電力値として取得し、
前記半導体装置が有する周波数制御部が、前記温度検出部により検出された温度が温度閾値を超えた場合、前記回路部の温度が前記温度閾値よりも高い温度に収束する目標電力に前記監視電力値が一致するように、前記発振部のクロックの周波数を制御する半導体装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体装置及び半導体装置の制御方法に関する。
【背景技術】
【０００２】
プロセッサ等の半導体装置の性能向上にともない、半導体装置の消費電力は年々上昇する傾向にあり、電力供給能力の上限やチップ温度上限のために、半導体装置を仕様上実行可能とされている最大負荷で動作させることができないという問題が表面化してきている。以下、半導体装置として、ＣＰＵ（Central Processing Unit）やＭＰＵ〈Micro Processing Unit〉等のプロセッサを例とした場合を説明する。
【０００３】
プロセッサは、消費電力上限や温度上限を超えないように動作することが求められ、もしこれらの制約を超えた場合には、クリティカルパスにおけるディレイやスキューの増大などにより誤動作が発生する場合がある。そこで、プロセッサが通常動作時に消費電力上限や温度上限を超える可能性がある状況において、これら制約を超えないように負荷を調整することが行われる。負荷を調整する方法として、ＤＦＳ(Dynamic Frequency Scaling)や、ＤＶＦＳ(Dynamic Voltage and Frequency Scaling) 等の手法が知られている。ＤＦＳは、クロック周波数を動的に変更することで負荷を変化させる手法である。ＤＶＦＳは、クロック周波数を下げることで生じるタイミング余裕の分だけ動作電圧を下げることで消費電力をさらに下げる手法である。
【０００４】
上記の手法を行う場合、負荷の上限を超えない範囲でなるべく高いクロック周波数で動作させることが、プロセッサの性能（パフォーマンス）の観点からは望ましい。負荷の上限を超えない範囲でなるべく高いクロック周波数で動作させる制御方法として、上限値の下に負荷に対する閾値を設け、負荷がこの閾値を超えた時にクロック周波数や電源電圧を低下させるという制御を開始する方法が一般的に行われる。これにより、クロック周波数または電源電圧が下がり、それに応じて負荷が下がる。プロセッサの温度が動作制約となる場合には、制御用の温度閾値を設け、プロセッサの温度が温度閾値を超えた時にクロック周波数を下げるという処理になる。ただし、温度が温度閾値を超えた時にクロック周波数を下げた場合も、実際にクロック周波数が下がるまでには遅延があり、その間温度は上昇を続ける。
【０００５】
この制御において、温度閾値を下げるとプロセッサのパフォーマンスが定常的に下がることになるため、なるべく温度閾値は上限温度に近い値であることが望ましい。しかし、温度閾値が上限温度に近すぎるとプロセッサの温度が温度閾値を超えてからクロック周波数が下がるまでの間に温度が上限温度を超えてしまう場合があり得る。そのため、温度閾値は、周波数制御にかかる遅延時間における温度上昇分以上低くなる。
【０００６】
上記の温度制御で想定される最大の温度上昇が発生するのは、負荷変動により消費電力がステップ的に最大値に変化する場合である。この場合、温度閾値を超えた時に、クロック周波数は、最大の消費電力でも温度が上限温度を下回るようなクロック周波数に低下させられる。
【０００７】
温度閾値を超えた時の消費電力が最大消費電力より小さい場合は、クロック周波数は、上記のように制御されない。しかし、検出した温度のみに基づいて周波数制御を行う場合、温度閾値超えした時点で最終的にどこまで温度が上昇するかを判別することが困難なため、負荷変動が最大の場合でも温度が上限を超えないように常に上記の周波数まで下げることになる。そのため、このような制御は、プロセッサのパフォーマンス低下につながる。
【０００８】
この対策として、温度閾値を２点以上設けて温度がそれぞれの閾値を超えた時間差を測定するなどして間接的に温度変化を予測することが知られている。５０℃以下の第１の温度状態、急激な温度変化の検出に伴う第２の温度状態、８０℃以上の第３の温度状態及び１００℃以上の第４の温度状態の４つの温度状態のそれぞれに応じて、半導体装置の動作を制限することが知られている（例えば、特許文献１を参照）。この例では、半導体装置は、第１の温度状態から第４の温度状態に徐々に、制限する動作を増やすことができる。しかしながら、この例では、半導体装置は、処理量の増加に応じた温度変化に基づかずに、動作を制限するため、マージンの増大に伴う実質的な温度閾値が低下することに加えて、制御遅延が増大して、半導体装置のパフォーマンスが低下するおそれがある。
【０００９】
そこで、温度センサで検出された温度が所定値を超えた場合に、回路部の消費電力の時間差分に基づいてクロックの周波数を制御する半導体装置が知られている（例えば、特許文献２を参照）。この半導体装置では、一定時間温度閾値を上回り続けているときに、強制的にクロック周波数を大幅に低減して、消費電力を大幅に削減することで、半導体装置の温度を低下するように制御する。
【先行技術文献】
【特許文献】
【００１０】
【特許文献１】特開２０１５−１６５４０５号公報
【特許文献２】特開２０１５−１３００３５号公報
【発明の概要】
【発明が解決しようとする課題】
【００１１】
しかしながら、センサで検出された温度が所定値を超えた場合に強制的にクロック周波数を大幅に低減する場合、周波数の低下に伴って、半導体装置のパフォーマンスが無駄に低下するおそれがある。
【００１２】
実施形態によれば、負荷に応じてクロック周波数を制御する半導体装置で、半導体装置の温度が上限温度を超えない範囲で、動作周波数の低下を抑制する制御が実現される。
【課題を解決するための手段】
【００１３】
発明の第１の観点によれば、半導体装置は、クロックを発振する発振部と、発振部が発振したクロックに応じて動作する回路部と、回路部の温度を検出する温度検出部と、回路部の消費電力を監視電力値として取得する電力検出部とを有する。半導体装置は、温度検出部が検出した温度が温度閾値を超えた場合、回路部の温度が温度閾値よりも高い温度に収束する目標電力に監視電力値が一致するように発振部のクロックの周波数を制御する周波数制御部を更に有する。
【発明の効果】
【００１４】
実施形態によれば、負荷に応じてクロック周波数を制御する半導体装置で、半導体装置の温度が上限温度を超えない範囲で最大のクロック周波数になるように制御され、動作周波数の低下を抑制する。
【図面の簡単な説明】
【００１５】
【図１】実施形態に係る半導体装置に関連する半導体装置のブロック図である。
【図２】図１に示す周波数決定部による周波数制御処理のフローチャートである。
【図３】監視電力値の変化に応じて周波数決定部が図２に示すＳ１０１〜Ｓ１０２の処理を実行したときのタイミングチャートを示す図である。
【図４】実施形態に係る半導体装置を含む電子装置のブロック図である。
【図５】図４に示す電力モニタの内部回路例を示す図である。
【図６】図４に示す周波数制御部の内部回路ブロック図である。
【図７】図４に示す指数移動平均フィルタの内部回路ブロック図である。
【図８】（ａ）は図４に示す第１周波数演算部の内部回路ブロック図であり、（ｂ）は図４に示す第２周波数演算部の内部回路ブロック図である。
【図９】図４に示す周波数決定部の内部構成の一例を示す図である
【図１０】（ａ）は図９に示すステートマシンの内部構成を示す図であり、（ｂ）は図９に示すステートマシンの状態遷移の説明を示す図である。
【図１１】図４に示す半導体装置による周波数制御処理のフローチャートである。
【図１２】監視電力値の変化に応じて図４に示す周波数制御部がＳ２０２〜Ｓ２１０の処理を実行したときのタイミングチャートを示す図である。
【図１３】（ａ）は図４に示す半導体装置の作用効果を説明する第１の図であり、（ａ）は図４に示す半導体装置の作用効果を説明する第２の図である。
【発明を実施するための形態】
【００１６】
実施形態を説明する前に、実施形態に係る半導体装置に関連する半導体装置について説明する。なお、本発明の技術的範囲はそれらの実施の形態に限定されない。
【００１７】
（関連する半導体装置の構成及び機能）
図１は、実施形態に係る半導体装置に関連する半導体装置のブロック図である。
【００１８】
半導体装置９００は、温度センサ９０１と、ＡＤ（Analog to Digital）コンバータ９０２と、比較回路９０３と、電力モニタ９０４と、指数移動平均フィルタ９０５と、周波数演算部９０６と、周波数決定部９０７とを有する。半導体装置９００は、周波数設定表９１０から周波数を取得可能なＰＬＬ（Phase Locked Loop）制御部９０８と、ＰＬＬ９０９と、ＰＬＬ９０９からクロックが入力される回路部９１１を更に有する。
【００１９】
温度センサ９０１は、回路部９１１の温度を検出し、検出温度Tjを示す温度信号をＡＤコンバータ９０２に出力する。ＡＤコンバータ９０２は、温度センサ９０１から入力された温度信号をアナログ信号からデジタル信号に変換する。比較回路９０３は、ＡＤコンバータ９０２においてデジタル信号に変換された温度信号に対応する検出温度Tjと、温度閾値Tthとを比較する。温度閾値Tthは、不図示のオペレータにより設定可能な値であり、回路部９１１の動作が変化して回路部９１１の消費電力が最大電力量に達した場合でも、半導体装置９００の温度上限値を超えない温度である。比較回路９０３は、温度信号に対応する検出温度Tjが温度閾値Tthより高いときに信号値「１」を示す比較結果信号を周波数決定部９０７に出力し、温度信号に対応する検出温度Tjが温度閾値Tth以下のときに信号値「０」を示す比較結果信号を周波数決定部９０７に出力する。温度センサ９０１と周波数決定部９０７との間にはＡＤコンバータ９０２等の種々の素子が介在するため、温度センサ９０１が回路部９１１の温度を検出してから比較結果信号が周波数決定部９０７に入力されるまで、所定の遅延時間が掛かる。
【００２０】
電力モニタ９０４は、複数のレジスタと、複数の乗算器と、加算器とを有する。電力モニタ９０４は、チップ各部の消費電力と相関の高い信号の動作率情報を取得し、乗算器により、動作率情報にレジスタに記憶された適当な重み付係数を乗じ、さらに加算器で総和を取る。この総和は、チップの動的電力値にほぼ対応する。電力モニタ９０４は、演算した監視電力値Pmonを示す監視電力値信号を指数移動平均フィルタ９０５及び周波数演算部９０６に出力する。
【００２１】
指数移動平均フィルタ９０５は、移動平均の一種である指数移動平均を演算して、演算した指数移動平均電力値Pexpを示す指数移動平均信号を周波数演算部９０６に出力する。後に詳細に説明するように、指数移動平均フィルタ９０５では、時定数τが半導体装置９００の熱時定数に対応するように規定されることにより、指数移動平均電力値Pexpは、監視電力値Pexpの変化に応じた回路部９１１の温度の変化に対応する電力である。指数移動平均フィルタ９０５は、指数移動平均電力値Pexpを示す指数移動平均電力信号を、温度センサ９０１が検出温度Tjを検出してから周波数決定部９０７に比較結果信号が入力されるまでの時間に対応する時間だけ遅延させて出力する。指数移動平均フィルタ９０５が指数移動平均電力信号を遅延して出力することで、指数移動平均信号に対応する指数移動平均電力値Pexpは、回路部９１１の温度の変化と同期して変化することができる。
【００２２】
周波数演算部９０６は、電力モニタ９０４から入力される監視電力値Pmon、指数移動平均フィルタ９０５から入力される指数移動平均電力値Pexp、及び周波数決定部９０７から入力される現在の周波数Freqから変更周波数Freqnewを演算する。変更周波数Freqnewは、
【００２３】
【数１】
2018005569.tif 000003
【００２４】
で示される。
【００２５】
周波数決定部９０７は、比較回路９０３から入力される比較結果信号に対応する信号値に基づいて、ＰＬＬ制御部９０８にＰＬＬ９０９の周波数を変更することを示す周波数変更指示信号を出力する。ＰＬＬ制御部９０８は、周波数決定部９０７から周波数変更指示信号が入力されると、周波数設定表９１０を使用して、周波数変更指示信号に対応する要求に基づいて、ＰＬＬ９０９の周波数を変更する。ＰＬＬ９０９は、ＰＬＬ制御部９０８の制御に基づいて周波数を変更する。
【００２６】
（関連する半導体装置の動作）
図２は、周波数決定部９０７による周波数制御処理のフローチャートである。
【００２７】
まず、周波数決定部９０７は、温度センサ９０１が検出した検出温度Tjが温度閾値Tthより高いか否かを判定する（Ｓ１０１）。具体的には、周波数決定部９０７は、比較回路９０３から入力される比較結果信号に対応する信号値が「０」又は「１」の何れかであるかを判定する。周波数決定部９０７は、検出温度Tjが温度閾値Tthより高いと判定する（Ｓ１０１−ＹＥＳ）と、ＰＬＬ９０９の発振周波数を、現在の周波数Freqから変更周波数Freqnewに変更する指示を示す周波数変更指示信号をＰＬＬ制御部９０８に出力する（Ｓ１０２）。
【００２８】
周波数決定部９０７は、所定の第１待機時間が経過したと判定した（Ｓ１０３）後に、温度センサ９０１が検出した検出温度Tjが温度閾値Tth以下であるかを判定する（Ｓ１０４）。検出温度Tjが温度閾値Tth以下であると判定される（Ｓ１０４−ＹＥＳ）と、処理はＳ１０１に戻る。周波数決定部９０７は、検出温度Tjが温度閾値Tthより高いと判定する（Ｓ１０４−ＮＯ）と、温度センサ９０１が検出した検出温度Tjが所定の時間に亘って温度閾値Tthを上回り続けているか否かを判定する（Ｓ１０５）。検出温度Tjが所定の時間に亘って温度閾値Tthを上回り続けていないと判定される（Ｓ１０５−ＮＯ）と、処理は、Ｓ１０３に戻る。周波数決定部９０７は、検出温度Tjが所定の時間に亘って温度閾値Tthを上回り続けていると判定する（Ｓ１０５−ＹＥＳ）と、ＰＬＬ９０９の発振周波数を強制的に大幅に低減する指示を示す周波数変更指示信号をＰＬＬ制御部９０８に出力する（Ｓ１０６）。そして、処理はＳ１０１に戻る。
【００２９】
周波数決定部９０７は、検出温度Tjが温度閾値Tth以下であると判定する（Ｓ１０１−ＮＯ）と、ＰＬＬ９０９の発振周波数が最大周波数であるか否かを判定する（Ｓ１０７）。周波数決定部９０７は、ＰＬＬ９０９の発振周波数が最大周波数でないと判定する（Ｓ１０７−ＮＯ）と、ＰＬＬ９０９の発振周波数を一段階上げる指示を示す周波数変更指示信号をＰＬＬ制御制御部９０８に出力する（Ｓ１０８）。そして、周波数決定部９０７が所定の第２待機時間が経過したと判定した（Ｓ１０９）後に、処理はＳ１０１に戻る。
【００３０】
図３は、監視電力値Pmonの変化に応じて周波数決定部９０７がＳ１０１〜Ｓ１０２の処理を実行したときのタイミングチャートを示す図である。図３において、（ａ）は監視電力値Pexpのタイミングチャートを示し、（ｂ）は検出温度Tjのタイミングチャートを示し、（ｃ）は比較結果信号のタイミングチャートを示す。また、（ｄ）は指数移動平均電力値Pexpのタイミングチャートを示し、（ｅ）はＰＬＬ９０９の発振周波数のタイミングチャートを示す。
【００３１】
まず、回路部９１１の動作の変化に伴って、矢印Ａで示される時点で電力モニタ９０４によって監視される回路部９１１の消費電力が監視電力値Pmon1から監視電力値Pmon2に増加する。回路部９１１の消費電力が監視電力値Pmon1から監視電力値Pmon2に増加するに従って、検出温度Tjは、半導体装置９００の熱時定数τに応じた変化量で、検出温度Tj１から徐々に増加して矢印Ｂで示す時点で温度閾値Tthに達する。
【００３２】
周波数決定部９０７は、検出温度Tj１から徐々に増加して矢印Ｂで示す時点で温度閾値Tthに達してから、ＡＤコンバータ９０２等の種々の素子の介在に起因する所定の遅延時間Tdが経過した矢印Ｃで示す時点で、信号値「１」を示す比較結果信号が入力される。
【００３３】
周波数決定部９０７は、信号値「１」を示す比較結果信号が入力されることに応じて、ＰＬＬ９０９の発振周波数を、現在の周波数Freqから変更周波数Freqnewに変更することを示す変更要求信号を出力する。ここで、変更周波数Freqnewは、増加した後の回路部９１１の消費電力値Pmon2、比較結果信号に対応する信号値が「０」から「１」に変化したときの指数移動平均電力値Pexp、及びＰＬＬ９０９の現在の発振周波数Freqから周波数演算部９０６によって演算される。なお、指数移動平均電力値Pexpは、温度センサ９０１が検出温度Tjを検出してから周波数決定部９０７に比較結果信号が入力されるまでの時間に亘って遅延されて出力されるため、回路部９１１の温度の変化に対応する電力になる。
【００３４】
そして、矢印Ｄで示す時点において、ＰＬＬ９０９の発振周波数が周波数Freqから変更周波数Freqnewに変更されることで、電力モニタ９０４によって監視される回路部９１１の消費電力が監視電力値Pmon2から監視電力値Pmon3に減少する。また、回路部９１１の消費電力が監視電力値Pmon2から監視電力値Pmon3に減少することに応じて、矢印Ｅに示すように、検出温度Tjは徐々に減少し、矢印Ｆで示す時点において、温度閾値Tthまで減少する。そして、周波数決定部９０７は、検出温度Tjが温度閾値Tthまで減少してから所定の遅延時間Tdが経過した矢印Ｇで示す時点で、信号値「０」を示す比較結果信号が入力される。
【００３５】
（関連する半導体装置の作用効果）
半導体装置９００は、回路部９１１の温度が温度閾値Tthに達したときの回路部９１１の温度の変化に対応する指数移動平均電力値Pexpを回路部９１１の温度が温度閾値Tthで安定する電力とみなして、ＰＬＬ９０９の動作周波数を制御する。すなわち、半導体装置９００は、ＰＬＬ９０９の動作周波数を、回路部９１１の消費電力値Pmonと指数移動平均電力値Pexpとの比率に応じて減少させることで、回路部９１１の消費電力値Pmonを回路部９１１の温度が温度閾値Tthで安定する電力で安定させることができる。
【００３６】
また、半導体装置９００は、電力から推定された温度ではなく温度センサ９０１が実測した回路部９１１の温度に基づいてＰＬＬ９０９の動作周波数を制御するため、周辺温度の仮定及び冷却系を考慮した電力温度変換等の誤差マージンは、考慮されない。半導体装置９００は、電力から推定された温度を使用することに起因する種々の誤差マージンを考慮されないので、高い精度の制御が可能である。
【００３７】
また、半導体装置９００は、指数移動平均フィルタ９０５の時定数τが半導体装置９００の熱時定数に対応するように規定されるため、指数移動平均フィルタ９０５が演算した指数移動平均電力値Pexpは、検出温度Tjに対応する。半導体装置９００は、検出温度Tjに対応する指数移動平均電力値Pexpを目標電力とすることで、回路部９１１の温度が温度閾値に一致するように調整することができる。
【００３８】
（関連する半導体装置の課題）
しかしながら、半導体装置９００は、温度センサ９０１が検出した検出温度Tjを使用するため、検出温度Tjが温度閾値Tthまで減少してから所定の遅延時間Tdが経過するまで、ＰＬＬ９０９の動作周波数は、制御されない。温度センサ９０１が検出温度Tjを検出してからＰＬＬ９０９の動作周波数が変更されるまでの遅延時間Tdの間も、回路部９１１の温度は上昇するため、温度閾値Tthは、遅延時間Tdにおける温度上昇に対応する温度だけ低く設定される。
【００３９】
遅延時間Tdは、例えば、温度センサ９０１が半導体装置９００の外部に配置されるオフチップ構成の場合、温度センサ９０１の素子遅延と、温度センサ９０１と半導体装置９００との間の配線遅延等によっては数ミリ秒以上の遅延になるおそれがある。一方、電力モニタ９０４が監視電力値を演算する演算時間は、遅延時間Tdと比較すると非常に小さく数百μs未満程度である。
【００４０】
（実施形態に係る半導体装置の構成及び機能）
図４は、実施形態に係る半導体装置を含む電子装置のブロック図である。
【００４１】
電子装置１００は、半導体装置１と、システムコントローラ２と、外部メモリ３と、ＡＤＣ（Analog to Digital Converter）４とを有する。半導体装置１は、回路部５と、電力モニタ６と、温度センサ７と第１インタフェース部８ａ及び第２インタフェース部８ｂと、レジスタ設定制御部９ａと、温度情報取得制御部９ｂと、周波数制御部１０と、ＰＬＬ２０とを有する。
【００４２】
半導体装置１は、一例ではプロセッサ（ＣＰＵ）であり、消費電力上限及び温度上限を超えないように動作することが求められる。システムコントローラ２は、半導体装置１を含む電子装置１００に搭載される種々の装置を制御する上位制御装置である。システムコントローラ２は、半導体装置１に、温度閾値Tth、重み係数w、及びオフセット電力値Poffsetのそれぞれを示す温度閾値信号、重み係数信号及びオフセット電力信号を出力する。温度閾値Tthは、不図示のオペレータにより設定可能な値であり、回路部５の動作が変化して回路部５の消費電力が最大電力量に達した場合でも、半導体装置１の温度上限値を超えない温度である。重み係数wは周波数制御部１０が演算に使用する重み係数であり、オフセット電力値Poffsetは周波数制御部１０が演算に使用される定数である。外部メモリ３は、半導体装置１の外部に配置されるＲＡＭ（Random Access Memory）やＲＯＭ（Read Only Memory）等の記憶装置である。ＡＤコンバータ４は、温度センサ７から入力された温度信号をアナログ信号からデジタル信号に変換し、半導体装置１に出力する。回路部５は、複数の演算コア５ａと、共有キャッシュ５ｂとメモリコントローラ５ｃとを有する。複数の演算コア５ａのそれぞれは、共有キャッシュ５ｂに記憶されるコンピュータプログラム及びデータに基づいて所定の処理を実行する。共有キャッシュ５ｂは、複数の演算コア５ａのそれぞれがアクセス可能な記領域である。メモリコントローラ５ｃは、外部メモリ３に記憶される種々の情報を共有キャッシュ５ｂに記憶する。
【００４３】
図５は、電力モニタ６の内部回路例を示す図である。
【００４４】
電力モニタ６は、複数（ここではＮ個）のモニタレジスタ６１Ａ−６１Ｎと、複数のモニタ乗算器６２Ａ−６２Ｎと、モニタ加算器６３とを有し、回路部５の消費電力を監視電力値Pmonとして取得する。電力モニタ６は、複数の演算コア５ａ、共有キャッシュ５ｂ及びメモリコントローラ５ｃの消費電力と相関の高い信号の動作率情報Ａ−Ｎを取得する。電力モニタ６は、モニタ乗算器６２Ａ−６２Ｎにより、動作率情報Ａ−Ｎにモニタレジスタ６１Ａ−６１Ｎに記憶された適当な重み付係数を乗じ、さらにモニタ加算器６３で総和を取る。この総和は、回路部５の動的電力値にほぼ対応する。電力モニタ６は、演算した監視電力値Pmonを示す監視電力値信号を周波数制御部１０に出力する。
【００４５】
温度センサ７は、オンチップ型の温度センサであり、一例では、バンドギャップ型温度センサである。温度センサ７は、回路部５の温度を検出し、検出した温度を示す温度信号をＡＤコンバータ４に出力する。
【００４６】
第１インタフェース部８ａ及び第２インタフェース部８ｂのそれぞれは、半導体装置１の外部と、半導体装置１の内部回路とを接続するＩ／Ｏセルである。第１インタフェース部８ａは、システムコントローラ２から入力される温度閾値信号、重み係数信号及びオフセット電力信号をレジスタ設定制御部９ａに出力する。第２インタフェース部８ｂは、ＡＤコンバータ４から入力される温度信号を温度情報取得制御部９ｂに出力する。
【００４７】
レジスタ設定制御部９ａは、システムコントローラ２から入力される温度閾値信号、重み係数信号及びオフセット電力信号のそれぞれに対応する温度閾値Tth、重み係数w、及びオフセット電力値Poffsetのそれぞれを周波数制御部１０のレジスタに書き込む。温度情報取得制御部９ｂは、ＡＤコンバータ４から入力される温度信号Tjを周波数制御部１０に出力する。
【００４８】
図６は、周波数制御部１０の内部回路ブロック図である。
【００４９】
周波数制御部１０は、温度閾値レジスタ１１と、比較回路１２と、オフセット電力レジスタ１３と、指数移動平均フィルタ１４と、第１周波数演算部１５と、第２周波数演算部１６と、周波数決定部１７とを有する。周波数制御部１０は、ＰＬＬ制御部１８と、周波数設定表１９とを更に有する。
【００５０】
温度閾値レジスタ１１は、システムコントローラ２からレジスタ設定制御部９ａを介して入力される温度閾値Tthを記憶し、記憶した温度閾値Tthを比較回路１２に出力する。温度閾値Tthは、温度の変化速度が最大速度で温度閾値Tthを越えた場合でも、半導体装置１が動作保証上限温度を超えない値に設定される。具体的には、温度閾値Tthは、動作保証上限温度Tlimit、第１温度上昇速度ΔT1、制御マージンに相当する温度であるマージン温度Tmarginから、
Tth=Tlimit-ΔT1-Tmargin
として求められる。動作保証上限温度Tlimitは、タイミング設計時の温度条件等により決定される。第１温度上昇速度ΔT1は、想定される最大の電力変動及び変化速度で電力増加時に、回路部５の温度がこの閾値を超えてから温度センサ７の出力変化に応じて周波数が下がるまでの制御時間D1の間に回路部５の温度が温度閾値Tthより上昇する温度である。
【００５１】
比較回路１２は、温度センサ７が検出した検出温度Tjと温度閾値Tthとを比較する。比較回路１２は、温度信号に対応する検出温度Tjが温度閾値Tthより高いときに信号値「１」を示す比較結果信号Tcmpを第２周波数演算部１６及び周波数決定部１７に出力する。また、比較回路１２は、温度信号に対応する検出温度Tjが温度閾値Tth以下のときに信号値「０」を示す比較結果信号Tcmpを第２周波数演算部１６及び周波数決定部１７に出力する。
【００５２】
オフセット電力レジスタ１３は、システムコントローラ２からレジスタ設定制御部９ａを介して入力されるオフセット電力値Poffsetを記憶し、記憶したオフセット電力値Poffsetを第１周波数演算部１５及び第２周波数演算部１６に出力する。
【００５３】
指数移動平均フィルタ１４は、重み係数レジスタ１４１を有し、移動平均の一種である指数移動平均を演算して、演算した指数移動平均電力値Pexpを示す指数移動平均信号を第１周波数演算部１５及び第２周波数演算部１６に出力する。
【００５４】
図７は、指数移動平均フィルタ１４の内部回路ブロック図である。
【００５５】
指数移動平均フィルタ１４は、重み係数レジスタ１４１に加えて、フィルタ減算器１４２と、第２フィルタ乗算器１４３と、フィルタ加算器１４４とを有する。指数移動平均フィルタ１４は、移動平均電力レジスタ１４５と、レジスタ更新タイマ１４６と、フィルタ遅延回路１４７とを有する。指数移動平均フィルタ１４は、監視電力値Pmonに基づいて、温度センサ７で検出された温度が温度閾値Tthに一致したときの温度に対応するベース電力値Pbaseを推定する電力推定部として機能する。
【００５６】
フィルタ減算器１４２、第２フィルタ乗算器１４３及びフィルタ加算器１４４は先の指数移動平均電力値Pexp(t-Δt)、現在の監視電力値Pmon(t)及び重み係数wから現在の指数移動平均電力値Pexp(t)を演算する。指数移動平均電力値Pexp(t)は、
【００５７】
【数２】
2018005569.tif 000004
【００５８】
で示される。移動平均電力レジスタ１４５は、演算された指数移動平均電力値Pexpを記憶する。レジスタ更新タイマ１４６は、時間Δｔ毎に、移動平均電力レジスタ１４５にクロック信号を出力し、移動平均電力レジスタ１４５に記憶される指数移動平均電力値Pexpを更新する。フィルタ遅延回路１４７は、直列接続されたフリップフロップを含み、指数移動平均電力値Pexpを、温度センサ７が検出温度Tjを検出してから周波数決定部１７に比較結果信号Tcmpが入力されるまでの時間に対応する時間だけ遅延させて出力する。
【００５９】
重み係数wは、指数移動平均電力値Pexpを回路部５の温度の変化と同期して変化するように決定される。外気温度Taが一定のとき、半導体装置１の現在の温度T(t)は、
【００６０】
【数３】
2018005569.tif 000005
【００６１】
で示される。ここで、Δtは時間変化を示し、αは半導体装置１の熱容量Ｃ及び熱抵抗θから（α＝Δｔ／（Ｃθ））で示される。指数移動平均電力値Pexp(t)と、温度T(t)とは、（Pexp(t)= T(t)/θ）の関係を有するので、指数移動平均電力値Pexpを所定の値に制御することにより、回路部５の温度T(t)を所望の温度に制御することができる。
【００６２】
第１周波数演算部１５は、電力モニタ６から入力される監視電力値Pmon、指数移動平均フィルタ１４から入力される指数移動平均電力値Pexp、オフセット電力レジスタ１３から入力されるオフセット電力値Poffset及び現在の周波数Freqから第１周波数Freq1を演算する。第１周波数Freq1は、
【００６３】
【数４】
2018005569.tif 000006
【００６４】
で示される。
【００６５】
第２周波数演算部１６は、ベース電力レジスタ１６０を有し、第２周波数Freq2を演算する。ベース電力レジスタ１６０は、比較結果信号Tcmpの信号値が「１」に対応するときに、指数移動平均フィルタ１４から入力される指数移動平均電力値Pexpをベース電力値Pbaseとして記憶する。第２周波数Freq2は、電力モニタ６から入力される監視電力値Pmon、ベース電力レジスタ１６０に記憶される指数移動平均電力値Pbase、オフセット電力レジスタから入力されるオフセット電力値Poffset及び現在の周波数Freqから
【００６６】
【数５】
2018005569.tif 000007
【００６７】
で示される。
【００６８】
図８（ａ）は第１周波数演算部１５の内部回路ブロック図であり、図８（ｂ）は第２周波数演算部１６の内部回路ブロック図である。
【００６９】
第１周波数演算部１５は、第１演算加算器１５１と、第１演算乗算器１５２と、第１演算減算器１５３とを有する。第１演算加算器１５１は、指数移動平均電力値Pexpとオフセット電力値Poffsetとを加算する。第１演算乗算器１５２は、第１演算加算器１５１の出力と現在の周波数Freqとを乗算する。第１演算減算器１５３は、第１演算乗算器１５２の出力から監視電力値Pmonを減算して第１周波数Freq1を出力する。
【００７０】
第２周波数演算部１６は、ベース電力レジスタ１６０と、第２演算加算器１６１と、第２演算乗算器１６２と、第２演算減算器１６３とを有する。ベース電力レジスタ１６０は、比較結果信号Tcmpの信号値が「１」に対応するときに、指数移動平均フィルタ１４から入力される指数移動平均電力値Pexpをベース電力値Pbaseとして記憶する。第２演算加算器１６１は、ベース電力値Pbaseとオフセット電力値Poffsetとを加算する。第２演算乗算器１６２は、第２演算加算器１６１の出力と現在の周波数Freqとを乗算する。第２演算減算器１６３は、第２演算乗算器１６２の出力から監視電力値Pmonを減算して第２周波数Freq2を出力する。
【００７１】
オフセット電力値Poffsetは、温度センサ７が検出した検出温度Tjに基づく制御から電力モニタ６が演算した監視電力値Pmonに基づく制御に切り替えたことによる制御遅延の削減による閾値マージンの削減量である。オフセット電力値Poffsetは、第１温度上昇速度ΔT1、第２温度上昇速度ΔT2、半導体装置１の熱抵抗θc及び制御マージンに相当する電力であるマージン電力Pmarginに対して、
Poffset=(ΔT1-ΔT2)/θc-Pmargin
として求められる。第１温度上昇速度ΔT1は、想定される最大の電力変動及び変化速度で電力増加時に、回路部５の温度がこの閾値を超えてから温度センサ７の出力変化に応じて周波数が下がるまでの制御時間D1の間に半導体装置１の温度が温度閾値Tthより上昇する温度である。第２温度上昇速度ΔT2は、電力が増加してから電力モニタ６の出力に応じて周波数が下がるまでにかかる時間D2の間に、想定される最大・最速の変動で電力が増加した時の半導体装置１の温度の上昇最大値である。半導体装置１の熱抵抗θcは、数ms〜数十ms程度の高速な温度変化に寄与する熱抵抗成分であり、一例では半導体装置１のチップの熱抵抗であり、他の例ではチップ-パッケージ間の熱伝導材料(TIM)の熱抵抗を含めた熱抵抗である。
【００７２】
図９は、周波数決定部１７の内部構成の一例を示す図である。
【００７３】
周波数決定部１７は、制御レジスタ１７０と、第１変換部１７１と、第２変換部１７２と、ステートマシン１７３と、待機時間タイマ１７４と、アドレスレジスタ１７５と、アドレスインクリメント部１７６と、制御選択部１７７とを有する。周波数決定部１７は、温度センサ７で検出された温度が温度閾値Tthを超えた場合に、温度閾値Tthよりも高い温度に、回路部５の温度が収束する目標電力に回路部５の消費電力が一致するようにクロックの周波数を決定する。すなわち、周波数決定部１７は、温度センサ７で検出された温度が温度閾値Tthを超えた場合に、監視電力値Pmonが目標電力に一致するように、ＰＬＬ２０から出力されるクロックの周波数を決定する。すなわち、チップ温度が閾値を超えた時にPbase＜Pmon＜Pmon+Poffsetが成立し、かつ、周波数が上限に達していない場合に、温度センサ出力が１になったとき、PmonをPbase+Poffsetに合わせるように周波数が調整され、周波数が高くなる。そして、目標電力は、ベース電力とオフセット電力とを加算した電力値であり、Pbase +(ΔT1-ΔT2)/θc-Pmarginと等しくなる。
【００７４】
制御レジスタ１７０は、ＰＬＬ２０の最低周波数、並びに周波数設定表１９に記憶されるアドレスの最大値及び周波数調整幅を記憶する。第１変換部１７１は、第１周波数Freq1並びに制御レジスタ１７０に記憶される最低周波数及び周波数調整幅から第１周波数Freq1を超えない範囲で最も近い周波数設定値のアドレスを、
（第１周波数Freq1−最低周波数）／（周波数調整幅）
から演算し、演算したアドレスを出力する。なお、制御レジスタ１７０は、演算したアドレスがアドレスの最大値を超える場合は、アドレスの最大値を出力する。第２変換部１７２は、第２周波数Freq2並びに制御レジスタ１７０に記憶される最低周波数及び周波数調整幅から第２周波数Freq2を超えない範囲で最も近い周波数設定値のアドレスを、
（第２周波数Freq2−最低周波数）／（周波数調整幅）
から演算し、演算したアドレスを出力する。なお、制御レジスタ１７０は、演算したアドレスがアドレスの最大値を超える場合は、アドレスの最大値を出力する。
【００７５】
図１０（ａ）はステートマシン１７３の内部構成を示す図であり、図１０（ｂ）はステートマシン１７３の状態遷移の説明を示す図である。
【００７６】
ステートマシン１７３は、制御タイマから通知信号が入力されることに応じて状態遷移する。ステートマシン１７３は、状態遷移に応じて、状態遷移後の遷移番号を示す遷移番号信号を制御選択部１７７に出力すると共に、周波数の変更要求を示す周波数変更要求信号を待機時間タイマ１７４及びＰＬＬ制御部１８に出力する。
【００７７】
遷移番号１は、温度センサ７が検出した検出温度Tjが温度閾値Tth以下の状態から一定時間経過した後に、検出温度Tjが温度閾値Tth以下になったときの遷移を示す。遷移番号１では、ステートマシン１７３は、現在の周波数Freqを一段階上げる。なお、現在の周波数FreqがＰＬＬ２０の調整可能な最大値である場合、ステートマシン１７３は、現在の周波数Freqを変更しない。
【００７８】
遷移番号２は、検出温度Tjが温度閾値Tth以下の状態で、検出温度Tjが温度閾値Tthより高くなったときの遷移を示す。遷移番号２では、ステートマシン１７３は、第１周波数Freq1より低い一番高い周波数設定値に周波数を変更する。
【００７９】
遷移番号３は、検出温度Tjが温度閾値Tthより高い状態から一定時間経過した後に、検出温度Tjが温度閾値Tthより高くなったときの遷移を示す。遷移番号３では、ステートマシン１７３は、第２周波数Freq2より低い一番高い周波数設定値に周波数を変更する。
【００８０】
遷移番号４は、遷移番号３による遷移の後に、検出温度Tjが温度閾値Tthより依然として高いときの遷移を示す。遷移番号４では、遷移番号３と同様に、ステートマシン１７３は、第２周波数Freq2より低い一番高い周波数設定値に周波数を変更する。
【００８１】
遷移番号５は、遷移番号２による遷移の後に、検出温度Tjが温度閾値Tth以下になったときの遷移を示す。遷移番号５では、ステートマシン１７３は、現在の周波数Freqを一段階上げる。なお、現在の周波数FreqがＰＬＬ２０の調整可能な最大値である場合、ステートマシン１７３は、現在の周波数Freqを変更しない。
【００８２】
遷移番号６は、遷移番号３又は４による遷移の後に、検出温度Tjが温度閾値Tth以下になったときの遷移を示す。遷移番号６では、ステートマシン１７３は、現在の周波数Freqを一段階上げる。なお、現在の周波数FreqがＰＬＬ２０の調整可能な最大値である場合、ステートマシン１７３は、現在の周波数Freqを変更しない。
【００８３】
待機時間タイマ１７４は、周波数変更要求信号がステートマシン１７３から入力されてからの経過時間をカウントする。待機時間タイマ１７４は、周波数変更要求信号がステートマシン１７３から入力されてから所定の待機時間が経過したときに、通知信号をステートマシン１７３に出力する。
【００８４】
アドレスレジスタ１７５は、現在の周波数Freqに対応するアドレスを記憶する。アドレスインクリメント部１７６は、アドレスレジスタ１７５に記憶されるアドレスがアドレスの最大値でないときに、アドレスレジスタ１７５に記憶されるアドレスをインクリメントして出力する。アドレスインクリメント部１７６は、アドレスレジスタ１７５に記憶されるアドレスがアドレスの最大値であるときに、アドレスレジスタ１７５に記憶されるアドレスを出力する。
【００８５】
制御選択部１７７は、ステートマシン１７３から入力される遷移番号信号に対応する遷移番号に応じて選択されるアドレスである周波数指示値を示す周波数指示信号を出力する。制御選択部１７７は、遷移番号信号に対応する遷移番号が１、５及び６のときにアドレスインクリメント部１７６から入力されるアドレスを示す周波数指示信号を出力する。制御選択部１７７は、遷移番号信号に対応する遷移番号が２のときに第１変換部１７１から入力されるアドレスを示す周波数指示信号を出力する。制御選択部１７７は、遷移番号信号に対応する遷移番号が３及び４のときに第１変換部１７１から入力されるアドレスを示す周波数指示信号を出力する。
【００８６】
ＰＬＬ制御部１８は、周波数決定部１７から入力される周波数指示信号及び周波数変更要求信号に応じて、周波数設定表１９を参照してＰＬＬ２０の周波数を設定する。表１は周波数設定表１９の一例を示す表である。
【００８７】
【表１】
2018005569.tif 000008
【００８８】
周波数設定表１９は、アドレスと、ＰＬＬ周波数設定と、設定周波数とを記憶する。周波数設定表１９は、
（周波数）＝（最低周波数）＋（アドレス）×（周波数調整幅）
となるように、アドレスと設定周波数とを記憶する。ここで、表１に示すように、最低周波数は２０００ＭＨｚであり、周波数調整幅は５０ＭＨｚである。
【００８９】
ＰＬＬ２０は、ＰＬＬ制御部１８の制御に応じた周波数で発振してクロック信号を生成し、生成したクロック信号を回路部５に出力する。
【００９０】
（実施形態に係る半導体装置の動作）
図１１は、半導体装置１における周波数制御処理のフローチャートである。
【００９１】
まず、システムコントローラ２は、レジスタ設定制御部９ａを介して温度閾値Tth、オフセット電力値Poffset及び重み係数wを周波数制御部１０のレジスタに設定する（Ｓ２０１）。具体的には、温度閾値Tthは温度閾値レジスタ１１に記憶され、オフセット電力値Poffsetはオフセット電力レジスタ１３に記憶され、重み係数wは重み係数レジスタ１４１に記憶される。次いで、周波数決定部１７は、比較回路１２から入力される比較結果信号Tcmpに対応する信号値が「１」であるか否かを判定する（Ｓ２０２）。比較回路１２が出力する比較結果信号Tcmpに対応する信号値が「１」であるとき、ベース電力レジスタ１６０は、指数移動平均フィルタ１４から入力される指数移動平均電力値Pexpをベース電力値Pbaseとして記憶する（Ｓ２０３）。また、第１周波数演算部１５は、式（４）に従って第１周波数Freq1を演算する（Ｓ２０４）。また、周波数決定部１７は、比較回路１２が出力する比較結果信号Tcmpに対応する信号値が「１」であると判定する（Ｓ２０２−ＹＥＳ）と、ＰＬＬ２０の発振周波数を第１周波数Freq1に変更する指示を示す周波数変更指示信号をＰＬＬ制御部１８に出力する（Ｓ２０５）。周波数決定部１７は、所定の待機時間が経過したと判定した（Ｓ２０６）後に、比較回路１２から入力される比較結果信号Tcmpに対応する信号値が「０」であるか否かを判定する（Ｓ２０７）。
【００９２】
第２周波数演算部１６は、式（５）に従って第２周波数Freq2を演算する（Ｓ２０８）。周波数決定部１７は、比較回路１２が出力する比較結果信号Tcmpに対応する信号値が「１」であると判定する（Ｓ２０７−ＮＯ）と、ＰＬＬ２０の発振周波数を第２周波数Freq2に変更する指示を示す周波数変更指示信号をＰＬＬ制御部１８に出力する（Ｓ２０９）。周波数決定部１７は、所定の第１待機時間が経過したと判定した（Ｓ２１０）後に、比較回路１２から入力される比較結果信号Tcmpに対応する信号値が「０」であるか否かを判定する（Ｓ２０７）。以降、比較回路１２が出力する比較結果信号Tcmpに対応する信号値が「０」であると判定される（Ｓ２０８−ＹＥＳ）まで、Ｓ２０７〜Ｓ２１０の処理が繰り返される。比較回路１２が出力する比較結果信号Tcmpに対応する信号値が「０」であると判定される（Ｓ２０８−ＹＥＳ）と、処理はＳ２０２に戻る。
【００９３】
周波数決定部１７は、Ｓ２０２において、比較回路１２が出力する比較結果信号Tcmpに対応する信号値が「０」であると判定する（Ｓ２０２−ＮＯ）と、現在の周波数が最大周波数であるか否かを判定する（Ｓ２１１）。周波数決定部１７は、現在の周波数が最大周波数でないと判定する（Ｓ２１１−ＮＯ）と、現在の周波数に対応するアドレスをインクリメントして周波数を一段階上げる（Ｓ２１２）。次いで、周波数決定部１７によって比較回路１２が出力する比較結果信号Tcmpに対応する信号値が「１」であると判定される（Ｓ２１３−ＹＥＳ）と、処理はＳ２０３に進む。一方、一定時間が経過する（Ｓ２１４）までに、周波数決定部１７によって比較回路１２が出力する比較結果信号Tcmpに対応する信号値が「１」であると判定されない（Ｓ２１３−ＮＯ）と、処理はＳ２０２に戻る。
【００９４】
図１２は、監視電力値Pmonの変化に応じて周波数制御部１０がＳ２０２〜Ｓ２１０の処理を実行したときのタイミングチャートを示す図である。図１２において、（ａ）は監視電力値Pexp及び指数移動平均電力値Pexpのタイミングチャートを示し、（ｂ）は検出温度Tjのタイミングチャートを示し、（ｃ）は比較結果信号のタイミングチャートを示す。また、（ｄ）はＰＬＬ２０の発振周波数のタイミングチャートを示す。
【００９５】
まず、回路部５の動作の変化に伴って、矢印Ａで示される時点で電力モニタ６によって監視される回路部５の消費電力が監視電力値Pmon1から監視電力値Pmon2に増加する。回路部５の消費電力が監視電力値Pmon1から監視電力値Pmon2に増加するに従って、検出温度Tjは、半導体装置１の熱時定数τに応じた変化量で、検出温度Tj１から徐々に増加して矢印Ｂで示す時点で温度閾値Tthに達する。
【００９６】
周波数制御部１０は、検出温度Tj１から徐々に増加して矢印Ｂで示す時点で温度閾値Tthに達してから、ＡＤコンバータ４等の種々の素子が介在することに起因する所定の遅延時間Tdが経過した矢印Ｃで示す時点で、信号値「１」を示す比較結果信号が入力される。信号値「１」を示す比較結果信号が入力されることに応じて、ベース電力レジスタ１６０は、比較結果信号Tcmpの信号値が「１」に対応するときに、指数移動平均フィルタ１４から入力される指数移動平均電力値Pexpをベース電力値Pbaseとして記憶する。
【００９７】
周波数制御部１０は、信号値「１」を示す比較結果信号が入力されることに応じて、ＰＬＬ２０の発振周波数を、現在の周波数Freqから第１周波数Freq1に変更することを示す周波数指示信号を出力する。ここで、第１周波数Freq1は、回路部５の消費電力値Pmon2、比較結果信号に対応する信号値が「０」から「１」に変化したときの指数移動平均電力値Pexp、オフセット電力値Poffset及びＰＬＬ２０の現在の発振周波数Freqから周波数制御部１０によって演算される。なお、指数移動平均電力値Pexpは、温度センサ７が検出温度Tjを検出してから周波数制御部１０に比較結果信号が入力されるまでの時間に対応する時間だけフィルタ遅延回路１４７によって遅延されて出力されるため、回路部５の温度の変化に対応する電力になる。
【００９８】
次いで、矢印Ｄで示す時点において、ＰＬＬ２０の発振周波数が周波数Freqから第１周波数Freq1に変更されることで、電力モニタ６によって監視される回路部５の消費電力が監視電力値Pmon2から監視電力値Pmon3に減少する。監視電力値Pmon3は、ベース電力値Pbaseとオフセット電力値Poffsetを加算した値である。
【００９９】
次いで、回路部５の動作の変化に伴って、矢印Ｅで示される時点で電力モニタ６によって監視される回路部５の消費電力が監視電力値Pmon3から監視電力値Pmon4に増加する。周波数制御部１０は、比較結果信号Tcmpに対応する信号値が「１」であると判定して、ＰＬＬ２０の発振周波数を第２周波数Freq2に変更する指示を示す周波数変更指示信号をＰＬＬ制御部１８に出力する。次いで、矢印Ｆで示される時点で、ＰＬＬ２０の周波数は、第２周波数Freq2に変更されて、回路部５の消費電力が監視電力値Pmon5に減少する。監視電力値Pmon5は、監視電力値Pmon3と同様に、ベース電力値Pbaseとオフセット電力値Poffsetを加算した値である。
【０１００】
次いで、回路部５の動作の変化に伴って、矢印Ｇで示される時点で電力モニタ６によって監視される回路部５の消費電力が監視電力値Pmon5から監視電力値Pmon6に減少する。周波数制御部１０は、比較結果信号Tcmpに対応する信号値が「１」であると判定して、ＰＬＬ２０の発振周波数を第２周波数Freq2に変更する指示を示す周波数変更指示信号をＰＬＬ制御部１８に出力する。次いで、矢印Ｈで示される時点で、ＰＬＬ２０の周波数は、第２周波数Freq2に変更されて、回路部５の消費電力が監視電力値Pmon7に減少する。監視電力値Pmon7は、監視電力値Pmon3及びPmon5と同様に、ベース電力値Pbaseとオフセット電力値Poffsetを加算した値である。
【０１０１】
次いで、回路部５の動作の変化に伴って、矢印Ｉで示される時点で電力モニタ６によって監視される回路部５の消費電力が監視電力値Pmon7から監視電力値Pmon8に増加する。周波数制御部１０は、比較結果信号Tcmpに対応する信号値が「１」であると判定して、ＰＬＬ２０の発振周波数を第２周波数Freq2に変更する指示を示す周波数変更指示信号をＰＬＬ制御部１８に出力する。次いで、矢印Ｊで示される時点で、ＰＬＬ２０の周波数は、第２周波数Freq2に変更されて、回路部５の消費電力が監視電力値Pmon9に減少する。監視電力値Pmon98は、監視電力値Pmon3、Pmon5及びPmon7と同様に、ベース電力値Pbaseとオフセット電力値Poffsetを加算した値である。
【０１０２】
以降、周波数制御部１０は、比較結果信号Tcmpに対応する信号値が「０」であると判定まで、回路部５の消費電力をベース電力値Pbaseとオフセット電力値Poffsetを加算した値に維持するようにＰＬＬ２０の周波数を制御する。
【０１０３】
（実施形態に係る半導体装置の作用効果）
半導体装置１は、回路部５の温度が温度閾値Tthに達したときの回路部５の温度の変化に対応する指数移動平均電力値Pexpにオフセット電力値Poffsetを加算した値を目標電力値として、ＰＬＬ２０の動作周波数を制御する。半導体装置１は、指数移動平均電力値Pexpにオフセット電力値Poffsetを加算した値を目標電力値とすることで、指数移動平均電力値Pexpを目標電力とする半導体装置９００よりも高い動作周波数でＰＬＬを制御することができる。半導体装置１は、半導体装置９００よりも高い動作周波数でＰＬＬを制御することができるので、半導体装置の動作周波数が無駄に低下することを防止できる。
【０１０４】
例えば、図１３（ａ）に示すように、半導体装置の温度上限値が９７℃であり、検出温度Tjに基づいてＰＬＬ２０の周波数が制御されるまでの時間が４ｍｓであり、監視電力値Pmonに基づいてＰＬＬ２０の周波数が制御されるまでの時間が１ｍｓであるとする。また、検出温度Tj及び監視電力値Pmon基づく制御遅延を考慮したときのベース電力値Pbase及びオフセット電力値Poffsetがそれぞれ９０Ｗ及び１０Ｗであるとする。
【０１０５】
例えば４．５ＧＨｚで消費電力が１２０Ｗとなるように半導体装置が制御された場合、半導体装置９００では、回路部の温度が温度閾値Tthを超えたときにベース電力値Pbaseに対応する９０Ｗに合わせるようにＰＬＬの周波数は３．３７５ＧＨＺに調整される。一方、半導体装置１では、回路部の温度が温度閾値Tthを超えたときにベース電力値Pbaseとオフセット電力値Poffsetを加算した値に対応する１００Ｗに合わせるようにＰＬＬの周波数は３．７５ＧＨＺに調整される。したがって、この例では、半導体装置１は、半導体装置９００に対して、約１１％（＝（３．７５−３．３７５）／３．３７５）の性能改善が実現される。
【０１０６】
（実施形態に係る半導体装置の変形例）
半導体装置１では、周波数制御部１０は、第１周波数演算部１５と第２周波数演算部１６とを有するが、第１周波数演算部１５及び第２周波数演算部１６は、ベース電力レジスタ１６０以外は同一の構成要素を有し且つ同時に動作することはない。したがって、実施形態に係る半導体装置では、第１周波数演算部１５及び第２周波数演算部１６の演算器部分を共通化して、指数移動平均電力値Pexpとベース電力値Pbaseとを選択回路で選択する構成にしてもよい。この場合、選択回路の選択信号は比較結果信号Tcmpを１サイクル遅らせた信号が使用される。
【符号の説明】
【０１０７】
１    半導体装置
５    回路部
６    電力モニタ（電力検出部）
７    温度センサ（温度検出部）
１０    周波数制御部
１２    比較回路
１４    指数移動平均フィルタ（電力推定部）
１５    第１周波数演算部
１６    第２周波数演算部
１７    周波数決定部
２０    ＰＬＬ（発振部）
【図１】
2018005569.tif 000009
【図２】
2018005569.tif 000010
【図３】
2018005569.tif 000011
【図４】
2018005569.tif 000012
【図５】
2018005569.tif 000013
【図６】
2018005569.tif 000014
【図７】
2018005569.tif 000015
【図８】
2018005569.tif 000016
【図９】
2018005569.tif 000017
【図１０】
2018005569.tif 000018
【図１１】
2018005569.tif 000019
【図１２】
2018005569.tif 000020
【図１３】
2018005569.tif 000021