(57)【要約】【課題】リアルタイム処理を確保しつつ、最大電力を管理する。【解決手段】チップ（１）は、リソースマネージャ（２）、各種機能ブロック（３〜６）、温度センサ（１３）、パフォーマンスカウンタ（１５）等を備える。リソースマネージャは、各種機能ブロックで実行されるタスクを管理し、パフォーマンスカウンタから得られる稼働率（α）と、タスク情報（３３）に含まれるデッドライン（３９）からタスク毎にタスク進捗度（３８）を求めて、タスクの優先度を決定する。リソースマネージャは、タスク実行中に温度センサから検出された温度が閾値（Ｔ＿ｍａｘ）以上である場合、温度を閾値未満とするために設定された電力予算値（Ｐ＿ｍａｘ）をメモリ（９）から読出し、チップ電力値（ｐ＿ｓｕｍ）が電力予算値よりも小さくなるまで、優先度の低いタスクを実行している機能ブロックに供給されるクロックを停止、又はクロックの周波数を低くする。【選択図】図１
2008026948.tif 000002
【特許請求の範囲】
【請求項１】
所定の処理を行う複数の機能ブロックと、前記機能ブロックのリソースを管理するリソースマネージャとを有する半導体集積回路であって、
温度を検出する温度センサと、
前記温度センサにより検出された温度が、前記半導体集積回路の動作が保証される保証温度範囲より低く設定された閾値以上であるとき、前記リソースマネージャに第１割込み信号を出力する割込みコントローラと、
前記機能ブロックに供給されるクロックを制御するクロック制御部と、を備え、
前記リソースマネージャは、前記第１割込み信号が入力されたとき、優先度の低い処理を実行している機能ブロックを特定し、前記クロック制御部を制御して、前記特定された機能ブロックに供給される前記クロックを停止、又は前記クロックの周波数を低くする半導体集積回路。
【請求項２】
前記機能ブロックの処理状況を示す情報を検出するパフォーマンス検出回路と、
前記情報を累算するパフォーマンスカウンタと、をさらに備え、
前記パフォーマンスカウンタの累算値は、前記機能ブロックの稼働率であり、
前記リソースマネージャは、前記稼働率と予め設定された処理毎の終了時間とに基づいて、処理毎に進捗度を算出し、前記終了時間が同じ場合には、前記進捗度が高い順に、前記終了時間が異なる場合には、前記終了時間が遅い順に、前記優先度を低いと判定する請求項１記載の半導体集積回路。
【請求項３】
前記温度を前記閾値未満とするために設定された電力予算値と、前記機能ブロック毎の電力値が格納されたタスク情報と、を保持するメモリをさらに備え、
前記リソースマネージャは、前記第１割込み信号が入力されたとき、前記電力予算値を更新し、前記タスク情報から前記電力値を読出して、前記電力値を合計して全体電力値を算出し、前記メモリから前記更新された電力予算値を読出して、前記全体電力値と前記電力予算値とを比較し、前記全体電力値が前記電力予算値よりも小さくなるまで、前記特定された機能ブロックに供給される前記クロックを停止、又は前記クロックの周波数を低くする請求項１又は２記載の半導体集積回路。
【請求項４】
前記機能ブロックの稼働率に対する充放電電力を示す第１テーブルと、所定の温度に対するリーク電力を示す第２テーブルとからなる電力テーブルをさらに備え、
前記リソースマネージャは、前記稼働率に応じた前記第１テーブルの値に、最大周波数に対する前記機能ブロックに供給される前記クロックの周波数の比率を示す周波数比を乗じた値と、前記所定の温度に応じた前記第２テーブルの値とを加算して、前記機能ブロック毎の電力値を算出し、前記電力値を前記タスク情報に格納する請求項３記載の半導体集積回路。
【請求項５】
前記第１テーブルは、前記処理を実行するときの処理内容を示すモード情報を含み、
前記第１テーブルの値は、前記稼働率と前記モード情報に応じて得られる請求項４記載の半導体集積回路。
【請求項６】
前記割込みコントローラに所定の時間間隔で信号を出力するタイマユニットをさらに備え、
前記割込みコントローラは、前記温度が前記閾値未満であり、かつ、前記信号が入力されたとき、第２割込み信号を出力し、
前記リソースマネージャは、前記第２割込み信号が出力されたとき、前記電力テーブルを用いて前記機能ブロック毎の電力値を算出した後に、前記電力値を合計して前記全体電力値を算出し、前記全体電力値と前記電力予算値とを比較する請求項４又は５記載の半導体集積回路。
【請求項７】
前記機能ブロック毎に電圧を供給するレギュレータをさらに備え、
前記リソースマネージャは、前記第１割込み信号又は前記第２割込み信号が入力されたとき、前記レギュレータを制御して、前記特定された機能ブロックに供給される電圧を低くする請求項１乃至６の何れか１項記載の半導体集積回路。
【請求項８】
前記機能ブロック毎に電源を供給又は遮断する電源スイッチと、
前記電源スイッチを制御する電源制御部と、をさらに備え、
前記リソースマネージャは、前記第１割込み信号又は前記第２割込み信号が入力されたとき、前記電源制御部を制御して、前記特定された機能ブロックの電源を遮断する請求項１乃至７の何れか１項記載の半導体集積回路装置。
【請求項９】
所定の処理を行う複数の機能ブロックと、前記機能ブロックのリソースを管理するリソースマネージャとを有する半導体集積回路であって、
温度を検出する温度センサと、
前記温度センサにより検出された温度が、前記半導体集積回路の動作が保証される保証温度範囲より低く設定された閾値以上であるとき、前記リソースマネージャに割込み信号を出力する割込みコントローラと、
前記機能ブロックに供給されるクロックを制御するクロック制御部と、を備え、
前記リソースマネージャは、前記割込み信号が入力されたとき、優先度の低い処理を実行している機能ブロックを特定し、前記複数の機能ブロック毎の電力値を合計して全体電力値を算出し、前記温度が前記閾値未満となるように設定された電力予算値よりも、前記全体電力値が小さくなるまで、前記クロック制御部を制御して、前記特定された機能ブロックに供給される前記クロックを停止、又は前記クロックの周波数を低くする半導体集積回路。
【請求項１０】
所定の処理を行う複数の機能ブロックと、前記機能ブロックのリソースを管理するリソースマネージャとを有する半導体集積回路であって、
温度を検出する温度センサと、
所定の時間間隔で信号を出力するタイマユニットと、
前記温度が、前記半導体集積回路の動作が保証される保証温度範囲より低く設定された閾値未満であり、かつ、前記信号が入力されたとき、前記リソースマネージャに割込み信号を出力する割込みコントローラと、
前記機能ブロックの処理状況を示す情報を検出するパフォーマンス検出回路と、
前記情報を累算するパフォーマンスカウンタと、
前記機能ブロックに供給されるクロックを制御するクロック制御部と、を備え、
前記リソースマネージャは、前記割込み信号が入力されたとき、優先度の低い処理を実行している機能ブロックを特定し、前記複数の機能ブロック毎の電力値を合計して全体電力値を算出し、
前記パフォーマンスカウンタの累算値と、予め設定された処理毎の終了時間とに基づいて、処理毎に進捗度を算出し、前記進捗度に基づいて処理が前記終了時間までに終了すると判定した場合には、前記温度が前記閾値未満となるように設定された電力予算値よりも、前記全体電力値が小さくなるまで、前記クロック制御部を制御して、前記特定された機能ブロックに供給される前記クロックを停止、又は前記クロックの周波数を低くする半導体集積回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体集積回路に関し、例えば低消費電力動作特性の優れたマイクロコンピュータに適用して有効な技術に関する。
【背景技術】
【０００２】
半導体集積回路の微細化に伴い、集積度が向上し、チップ上でシステムを構成するＳｏＣ（Ｓｙｓｔｅｍ  ｏｎ  Ｃｈｉｐ）のような大規模な半導体集積回路が実現されている。９０ｎｍ以降のプロセスでは、ＳｏＣの構成要素としてマルチプロセッサや多数の機能ブロックが集積される。このように、集積度は向上しているが、その一方で、電力やメモリバンド幅といったＳｏＣのリソースは限られている。このため、集積された構成要素に対し、リソースを有効に活用する技術が必要となっている。
【０００３】
電力には、デバイスの温度を共有リソースとする最大電力と、バッテリーを共有リソースとする平均電力とがある。最大電力は、デバイスの温度に影響を与える。このため、デバイスの動作が保証される保証温度範囲が例えば１２５℃であるときには、１２５℃未満を保証するために、最大電力を制御する必要がある。デバイスの保証温度範囲を設定することは、熱暴走等を回避するために、製品化において必須である。このため、今後、集積度が向上しても、デバイスの保証温度範囲によって最大電力が制限されてしまい、ＳｏＣに搭載される機能ブロックの数を増やせないという問題が起こり得る。また、平均電力は、バッテリーの寿命に影響を与える。このため、バッテリーの寿命を長くするには、平均電力を制御して、消費電力をなるべく小さくする必要がある。バッテリーの寿命を長くすることは、製品の差別化を図る上で重要である。
【０００４】
特許文献１，２には、最大電力を管理することで、最大電力を制限する技術が開示されている。特許文献１には、「機能単位のいずれかから動作要求を受け付け、受け付けた機能単位に対応する電力値を上記電力テーブルから取得し、取得した電力値を用いて上記機能単位を動作させた場合に電力の許容範囲内に納まるか否かを判断し、許容範囲である場合に限り、動作の許可を与える」との記載がある（請求項１０参照）。即ち、特許文献１の技術的特徴点は、例えば（ａ）機能単位で動作要求を受け、電力の許容範囲内に納まるとき、動作許可を与えること、（ｂ）電力テーブルは、機能単位に固定値の動作時電力が記憶されていること、にある。
【０００５】
特許文献２には、「熱時間定数に一致する期間Ｔを使用すると、基準プロセッサ速度及びステップ６０で誘導された平均アクティビティ（特にプロセッサの有効速度）から熱パッケージモデルに匹敵する平均電力散逸量を計算することができる。電力値がパッケージ熱モデル７２に記載されたスレッショルドを超える場合、判断ブロック７４でシナリオを拒否する。この場合、ブロック５４で新しいシナリオを作成し、ステップ６０、６６及び７０を繰り返す。スレッショルドを越えない場合、シナリオを使ってタスクリストを実行する。」との記載がある（段落００２０参照）。即ち、特許文献２の技術的特徴点は、例えば（ｃ）シナリオ毎に電力を算出し、熱パッケージモデルのスレッショルドを超える場合は、シナリオを再作成し、超えない場合は、そのシナリオを用いてタスクリストを作成すること、（ｄ）電力は平均アクティビティから算出されること、にある。
【０００６】
【特許文献１】特開２００３−２０２９３５号公報
【特許文献２】特開２００１−２２９０４０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
最大電力の管理について、特許文献１の技術的特徴点（ａ）では機能単位の動作要求、特許文献２の技術的特徴点（ｃ）ではシナリオの動作要求に対し、どちらも事前に電力の許容範囲内に納まるか否かを判断して、許容範囲であるときに、その機能単位、又はそのシナリオの実行を許可することにしている。しかしながら、事前に実行許可を行う制御では、例えば処理単位が細かい場合や機能単位の数が増えた場合には、問合わせのハンドシェークでのオーバヘッドが問題になってしまう。特に、リアルタイム性が要求されるリアルタイム処理では、そのオーバヘッドによって、即座の応答ができなくなることが考えられる。そこで、本発明の第１の目的は、リアルタイム処理を保ちつつ、最大電力を管理することができる半導体集積回路を提供することにある。
【０００８】
最大電力は、上記したようにデバイスの温度に影響を与える。このため、最大電力の算出は、デバイスの温度に対して厳密でなければならない。特許文献１の技術的特徴点（ｂ）では電力テーブルの合計値、特許文献２の技術的特徴点（ｃ），（ｄ）では平均アクティビティから算出された電力と熱パッケージモデルを使用して、最大電力を算出している。しかしながら、上記電力テーブルの合計値、平均アクティビティ等は、デバイスの温度との関連は低いので、デバイスの温度を厳密に測定することは困難である。そこで、本発明の第２の目的は、温度を厳密に測定することができる半導体集積回路を提供することにある。
【０００９】
平均電力の管理について、特許文献１の技術的特徴点（ｂ）では電力値は機能単位に固定であり、特許文献２の技術的特徴点（ｄ）では平均アクティビティを使用していることから、精度の高い平均電力の管理を行うことは困難であると考える。
【００１０】
機能単位の電力は、機能単位の処理内容に依存すること、微細化によりリーク電力が無視できないこと、そして、リーク電力は温度に強く影響を受けることから、特許文献１，２の技術では、電力算出の精度が低いと考えられる。そこで、本発明の第３の目的は、電力算出を高い精度で行うことができる半導体集積回路を提供することにある。
【００１１】
本発明の前記の目的と新規な特徴は本明細書の記述及び添付図面から明らかになるであろう。
【課題を解決するための手段】
【００１２】
本願において開示される発明のうち代表的なものの概要を簡単に説明すれば下記の通りである。
【００１３】
〔１〕本発明に係る半導体集積回路は、所定の処理を行う複数の機能ブロック（３〜６）と、前記機能ブロックのリソースを管理するリソースマネージャ（２）と、温度センサ（１３）と、割込みコントローラ（１２）と、クロック制御部（１６）とを有する。温度センサは、温度を検出する。割込みコントローラは、前記温度センサにより検出された温度が、前記半導体集積回路（１）の動作が保証される保証温度範囲より低く設定された閾値（３１、Ｔ＿ｍａｘ）以上であるとき、前記リソースマネージャに第１割込み信号を出力する。クロック制御部は、前記機能ブロックに供給されるクロックを制御する。前記リソースマネージャは、前記第１割込み信号が入力されたとき、優先度の低い処理を実行している機能ブロックを特定し（Ｓ６１）、前記クロック制御部を制御して、前記特定された機能ブロックに供給される前記クロックを停止（Ｓ６３）、又は前記クロックの周波数を低くする（Ｓ６５）。
【００１４】
上記より、半導体集積回路の温度を温度センサで検出することにより、温度を厳密に測定できる。リソースマネージャは、温度が閾値以上になると、優先度の低い処理を実行している機能ブロックをクロック停止又は低速実行して、この機能ブロックの電力を削減する。これにより、半導体集積回路の動作時における最大電力が管理されて、半導体集積回路の熱暴走等を確実に回避できる。また、リソースマネージャは、優先度を把握するだけで、優先度の高い処理を実行した状態で最大電力の削減を行うので、応答性が損なわれず、例えば所定の処理を要求されている時間までに完了させて、リアルタイム処理を保つことができる。
【００１５】
本発明の具体的な一つの形態として、前記機能ブロックの処理状況を示す情報を検出するパフォーマンス検出回路（１４）と、前記情報を累算するパフォーマンスカウンタ（１５）と、をさらに備える。前記パフォーマンスカウンタの累算値は、前記機能ブロックの稼働率（α）である。前記リソースマネージャは、前記稼働率と予め設定された処理毎の終了時間（３９）とに基づいて、処理毎に進捗度（３８）を算出し、前記終了時間が同じ場合には、前記進捗度が高い順に、前記終了時間が異なる場合には、前記終了時間が遅い順に、前記優先度を低いと判定する。上記より、リソースマネージャは、パフォーマンスカウンタの累積値と終了時間に基づいて、機能ブロックで実行されている所定の処理の優先度を判定できる。
【００１６】
本発明の具体的な一つの形態として、前記温度を前記閾値未満とするために設定された電力予算値（３０Ｃ、Ｐ＿ｍａｘ）と、前記機能ブロック毎の電力値（３６、Ｐｗｒ＿ｉ）が格納されたタスク情報（３３）と、を保持するメモリ（９）をさらに備える。前記リソースマネージャは、前記第１割込み信号が入力されたとき、前記電力予算値を更新し、前記タスク情報から前記電力値を読出して（Ｓ５２）、前記電力値を合計して全体電力値（ｐ＿ｓｕｍ）を算出する（Ｓ５３）。リソースマネージャは、前記メモリから前記更新された電力予算値を読出して、前記全体電力値と前記電力予算値とを比較（Ｓ６７）し、前記全体電力値が前記電力予算値よりも小さくなるまで、前記特定された機能ブロックに供給される前記クロックを停止、又は前記クロックの周波数を低くする。上記より、第１割込み信号が入力されると、タスク情報から機能ブロック毎の電力値を読出して、それを合計するだけで全体電力値を算出できるので、最大電力の削減を短時間で行い、最大電力の管理を高速で行うことができる。
【００１７】
本発明の具体的な一つの形態として、前記機能ブロックの稼働率に対する充放電電力（Ｐ＿ａｃｔ）を示す第１テーブル（４１）と、所定の温度に対するリーク電力（Ｐ＿ｌｅａｋ）を示す第２テーブル（４２）とからなる電力テーブル（４０）をさらに備える。前記リソースマネージャは、前記稼働率に応じた前記第１テーブルの値（Ｐ＿ａｃｔ）に、最大周波数（ｍａｘ＿ｆｒｅｑ）に対する前記機能ブロックに供給される前記クロックの周波数（ｆｒｅｑ）の比率を示す周波数比（β）を乗じた値と、前記所定の温度に応じた前記第２テーブルの値（Ｐ＿ｌｅａｋ）とを加算して、前記機能ブロック毎の電力値（Ｐｗｒ＿ｉ）を算出し、前記電力値を前記タスク情報に格納する。上記より、稼働率をインデックスとして得られる充放電電力と、温度をインデックスとして得られるリーク電力と、周波数比とに基づいて、機能ブロック毎の電力値を精度よく算出できる。また、この電力値をタスク情報に格納することで、電力値を用いて算出される全体電力値の信頼性を高めることができる。
【００１８】
本発明の具体的な一つの形態として、前記第１テーブルは、前記処理を実行するときの処理内容を示すモード情報（ＭＤ１〜ＭＤ３）を含む。前記第１テーブルの値は、前記稼働率と前記モード情報に応じて得られる。上記より、機能ブロック毎の電力値をモード情報も反映させて算出するので、より高い精度で電力値を算出できる。
【００１９】
本発明の具体的な一つの形態として、前記割込みコントローラに所定の時間間隔で信号（ｔｍｒ）を出力するタイマユニット（７）をさらに備える。前記割込みコントローラは、前記温度が前記閾値未満であり、かつ、前記信号が入力されたとき、第２割込み信号を出力する。前記リソースマネージャは、前記第２割込み信号が出力されたとき、前記電力テーブルを用いて前記機能ブロック毎の電力値を算出した後に（Ｓ１３）、前記電力値を合計して前記全体電力値を算出し（Ｓ１５）、前記全体電力値と前記電力予算値とを比較する（Ｓ４８）。上記より、温度が閾値未満であり、熱暴走等が回避された状態において、定期的に出力される第２割込み信号に応じて、電力テーブルを用いて電力値を算出する。このため、全体電力値を定期的に精度よく算出できる。さらに、全体電力値と電力予算値の比較をすることで、例えば全体電力値を電力予算値よりも小さくなるように削減して、平均電力を管理できる。
【００２０】
本発明の具体的な一つの形態として、前記機能ブロック毎に電圧を供給するレギュレータ（２７）をさらに備える。前記リソースマネージャは、前記第１割込み信号又は前記第２割込み信号が入力されたとき、前記レギュレータを制御して、前記特定された機能ブロックに供給される電圧を低くする。上記より、優先度の低い処理を実行している機能ブロックに対してクロック停止、又は低速実行するだけでなく、低電圧動作を行うことにより、電力をより削減できる。
【００２１】
本発明の具体的な一つの形態として、前記機能ブロック毎に電源を供給又は遮断する電源スイッチ（２８）と、前記電源スイッチを制御する電源制御部（２６）と、をさらに備える。前記リソースマネージャは、前記第１割込み信号又は前記第２割込み信号が入力されたとき、前記電源制御部を制御して、前記特定された機能ブロックの電源を遮断する。上記より、優先度の低い処理を実行している機能ブロックに対してクロック停止、又は低速実行するだけでなく、電源遮断を行うことにより、電力をより削減できる。
【００２２】
〔２〕本発明に係る半導体集積回路は、所定の処理を行う複数の機能ブロックと、前記機能ブロックのリソースを管理するリソースマネージャと、温度センサと、割込みコントローラと、クロック制御部とを有する。温度センサは、温度を検出する。割込みコントローラは、前記温度センサにより検出された温度が、前記半導体集積回路の動作が保証される保証温度範囲より低く設定された閾値以上であるとき、前記リソースマネージャに割込み信号を出力する。クロック制御部は、前記機能ブロックに供給されるクロックを制御する。前記リソースマネージャは、前記割込み信号が入力されたとき、優先度の低い処理を実行している機能ブロックを特定し、前記複数の機能ブロック毎の電力値を合計して全体電力値を算出する（Ｓ５３）。リソースマネージャは、前記温度が前記閾値未満となるように設定された電力予算値よりも、前記全体電力値が小さくなるまで、前記クロック制御部を制御して、前記特定された機能ブロックに供給される前記クロックを停止（Ｓ６３）、又は前記クロックの周波数を低くする（Ｓ６５）。
【００２３】
上記より、半導体集積回路の温度を温度センサで検出することにより、温度を厳密に測定できる。また、リソースマネージャは、機能ブロック毎の電力値から全体電力値を算出し、この全体電力値が電力予算値よりも小さくなるまで、優先度の低い処理を実行している機能ブロックをクロック停止又は低速実行して、この機能ブロックの電力を削減する。このようにすれば、半導体集積回路の動作時における最大電力が管理されて、半導体集積回路の熱暴走等を確実に回避できる。また、リソースマネージャは、処理の問合せ応答を行わず、優先度を把握するだけで、優先度の高い処理を実行した状態で最大電力の削減を行うので、応答性が損なわれず、例えば所定の処理を要求されている時間までに完了させて、リアルタイム処理を保つことができる。
【００２４】
〔３〕本発明に係る半導体集積回路は、所定の処理を行う複数の機能ブロックと、前記機能ブロックのリソースを管理するリソースマネージャと、温度センサと、タイマユニットと、割込みコントローラと、パフォーマンス検出回路と、パフォーマンスカウンタと、クロック制御部とを有する。温度センサは、温度を検出する。タイマユニットは、所定の時間間隔で信号を出力する。割込みコントローラは、前記温度が、前記半導体集積回路の動作が保証される保証温度範囲より低く設定された閾値未満であり、かつ、前記信号が入力されたとき、前記リソースマネージャに割込み信号を出力する。パフォーマンス検出回路は、前記機能ブロックの処理状況を示す情報を検出する。パフォーマンスカウンタは、前記情報を累算する。クロック制御部は、前記機能ブロックに供給されるクロックを制御する。前記リソースマネージャは、前記割込み信号が入力されたとき、優先度の低い処理を実行している機能ブロックを特定し、前記複数の機能ブロック毎の電力値を合計して全体電力値を算出する（Ｓ１５）。リソースマネージャは、前記パフォーマンスカウンタの累算値と、予め設定された処理毎の終了時間とに基づいて、処理毎に進捗度を算出する。リソースマネージャは、前記進捗度に基づいて処理が前記終了時間までに終了すると判定した場合には（Ｓ４２）、前記温度が前記閾値未満となるように設定された電力予算値よりも、前記全体電力値が小さくなるまで、前記クロック制御部を制御して、前記特定された機能ブロックに供給される前記クロックを停止（Ｓ４４）、又は前記クロックの周波数を低くする（Ｓ４６）。
【００２５】
上記より、温度が閾値未満である状態において、定期的に出力される割込み信号に応じて、電力テーブルを用いて電力値を算出するから、全体電力値を定期的に精度よく算出できる。さらに、全体電力値と電力予算値の比較して、全体電力値が電力予算値よりも小さくなるまで、全体電力値を削減するから、平均電力を削減できる。このようにすれば、熱暴走等を回避した状態において、例えばバッテリーの寿命を長くすることができる。
【発明の効果】
【００２６】
本願において開示される発明のうち代表的なものによって得られる効果を簡単に説明すれば下記の通りである。
【００２７】
即ち、リアルタイム処理を保ちつつ、最大電力や平均電力を管理できる。また、温度を厳密に測定できる。さらに、電力算出を高い精度で行うことができる。
【発明を実施するための最良の形態】
【００２８】
《実施形態１》
図１には、本発明の実施形態１に係る半導体集積回路の概略構成が例示される。システムオンチップ（ＳｏＣ：以下、チップという）１は、特に制限されないが、公知のＣＭＯＳ（相補型ＭＯＳトランジスタ）やバイポーラトランジスタ等を形成する半導体集積回路技術によって、単結晶シリコンのような１個の半導体基板に形成される。チップ１は、動作が保証される保証温度範囲が設定された回路であって、例えばリソースマネージャ（ＲＭ）２と、ＣＰＵ３，４と、機能ブロック（ＦＢ）５，６と、タイマ（ＴＭＲ）７と、バスアービタ（ＡＲＢ）８と、ＲＡＭ９と、ＲＯＭ１０と、内部バス１７等を備える。ここで、保証温度範囲は、例えば１２５℃とするが、チップ１の熱暴走等を回避できる範囲であれば、特に限定されない。リソースマネージャ２は、電力等のチップ１全体のリソースを管理して、最大電力制御や平均電力制御を行う（詳細は後述）。ＣＰＵ３，４は、機能ブロックの一種であって、汎用処理を実行する。機能ブロック５，６は、画像処理等の特定処理を実行する。以下、ＣＰＵ３，４と機能ブロック５，６を、説明の便宜上、各種機能ブロックとも記す。また、各種機能ブロックの処理単位をタスクという。タイマ７は、時間管理を行う。バスアービタ８は、内部バス１７内のパケット又はデータの調停を行う。また、ＲＡＭ９，ＲＯＭ１０は、例えばリソースマネージャ２が実行すべきプログラムや固定データを記憶している。ＲＡＭ８は、リソースマネージャ２による演算結果を記憶し、さらに、リソースマネージャ２の作業領域ともなる。
【００２９】
また、チップ１は、例えば割込みコントローラ（ＩＮＴＡ）１１と、リソースマネージャ用割込みコントローラ（ＩＮＴＢ）１２と、温度センサ（ＴＳＮＳ）１３と、パフォーマンス検出回路１４と、パフォーマンスカウンタ（ＰＰＣ）１５と、クロック制御部（ＣＬＫ）１６等を備え、内部バス１７によって相互に接続されている。割込みコントローラ１１は、各種機能ブロックに対する割込みの検出やその割込みの優先度の判定を行う。パフォーマンス検出回路１４は、各種機能ブロックに設けられ、各種機能ブロックの処理状況を示すパフォーマンス情報を生成する。パフォーマンスカウンタ１５は、パフォーマンス情報を累算する。パフォーマンス情報の累算値は、各種機能ブロックの稼働率を示す。温度センサ１３は、チップ１内の温度をデバイスで検出する高精度なセンサである。リソースマネージャ用割込みコントローラ１２は、温度センサ１３により検出された温度が、保証温度範囲よりも低く設定された閾値（Ｔ＿ｍａｘ）以上になると、リソースマネージャ２に温度センサ割込み信号（図３参照）を出力する。また、リソースマネージャ用割込みコントローラ１２は、タイマ７から数ｍｓ間隔で通知される信号を、タイマ割込み信号（図３参照）としてリソースマネージャ２に出力する。タイマ割込み信号は、タスクの実行状況の確認や電力予算値（Ｐ＿ｍａｘ）を変更するためのタイミング信号とされ、その優先度は上記温度センサ割込み信号よりも低い。このため、リソースマネージャ用割込みコントローラ１２は、これらの割込み信号の優先度を判定し、チップ１の温度が閾値（Ｔ＿ｍａｘ）以上であれば、常に温度センサ割込み信号を選択し、閾値（Ｔ＿ｍａｘ）未満であれば、タイマ割込み信号を選択する。
【００３０】
リソースマネージャ２は、命令デコーダ（ＤＥＣ）２０と、制御部（ＣＴＬ）２１と、電力管理部（ＰＷＭ）２２と、電力変換部（ＰＣＮＶ）２３と、タスク管理部（ＴＳＫＭ）２４と、割込みコントローラ（ＩＮＴＣ）２５等を備える。命令デコーダ２０は、ソフトウェアからの命令をデコードする。制御部２１は、デコード結果に基づいて、リソースマネージャ２内の各回路に伝達するための制御信号を生成する。タスク管理部２４は、チップ１全体で処理されるタスクを管理するものであって、例えば各種機能ブロックで実行されるタスクの優先度を決定する（詳細は後述）。電力変換部２３は、電力テーブル（図１０，図１２参照）を用いて、各種機能ブロックの電力値（Ｐｗｒ＿ｉ）を算出する。割込みコントローラ２５は、リソースマネージャ用割込みコントローラ１２から出力される上記タイマ割込み信号と温度センサ割込み信号を受付け、これらの割込み信号を電力管理部２２に通知する。
【００３１】
電力管理部２２は、温度センサ１３で検出された温度を閾値（Ｔ＿ｍａｘ）未満とするために、電力予算値（Ｐ＿ｍａｘ）を設定する。設定された電力予算値（Ｐ＿ｍａｘ）は、例えばＲＡＭ９に保持される。電力管理部２２は、各種機能ブロックの電力値（Ｐｗｒ＿ｉ）に基づいて、チップ電力値（ｐ＿ｓｕｍ）を算出する。また、電力管理部２２は、割込みコントローラ２５から温度センサ割込み信号が通知されると、チップ１の温度が閾値未満となるように最大電力制御を行う。最大電力は、チップ１の温度に影響を与える。このため、チップ１の温度を閾値未満とするには、各種機能ブロックの電力値（Ｐｗｒ＿ｉ）を合計したチップ電力値（ｐ＿ｓｕｍ）を小さくする必要がある。このとき、電力管理部２２は、各種機能ブロックで実行されているタスクのうち、優先度の低いタスクを特定し、このタスクを実行している機能ブロックに供給するクロックを停止するか、又はクロックの周波数を低くするように、クロック制御部１６を制御する。また、電力管理部２２は、割込みコントローラ２５からタイマ割込み信号が通知されると、平均電力制御を行う。平均電力は、バッテリーの寿命に影響を与える。このため、バッテリーの寿命を長くするには、平均電力を小さくする必要がある。以下、最大電力制御と平均電力制御について説明する。
【００３２】
図２には、最大電力制御の概念が例示される。図中、横軸を時間（Ｔｉｍｅ）、縦軸を単位時間での電力（Ｐ）とする。さらに、座標上の矩形は、機能ブロックＦＢ０、ＦＢ１、ＦＢ２で実行されるタスクでの消費電力とする。それぞれのタスクには、デッドライン（ｄｅａｄｌｉｎｅ）が設定されている。但し、説明の便宜上、全てのデッドラインを同じ時間とした。ここで、デッドラインを満たすタスクは、要求時間までにタスクが完了していることになり、リアルタイム処理とされる。最大電力は、ある時間での機能ブロック毎の電力の合計値とされる。消費電力は、機能ブロック毎の矩形の合計面積とされる。図２（ａ）には、最大電力を制御していない場合が例示されている。この例では、機能ブロックＦＢ０、ＦＢ１、ＦＢ２が同時に実行されるときがあり、最大電力、即ち電力予算値（Ｐ＿ｍａｘ）は、機能ブロックＦＢ０、ＦＢ１、ＦＢ２の電力の合計となり、大きくなってしまう。
【００３３】
図２（ｂ）には、遅延（ｄｅｌａｙ）により最大電力を制御した場合が例示されている。この例では、機能ブロックＦＢ１、ＦＢ２の実行開始を遅延することにより、機能ブロックＦＢ１、ＦＢ２は、機能ブロックＦＢ０と同時に実行されることがない。このため、図２（ａ）の例と比べて最大電力を小さくでき、それに応じて電力予算値を小さくできる。この最大電力制御は、設定された電力予算値とデッドラインのどちらも満たすように、遅延量を制御することで可能とされる。図２（ｃ）には、動作周波数を低くすることで最大電力を制御した場合が例示されている。この例では、設定された電力予算値とデッドラインのどちらも満たすように、機能ブロックＦＢ０、ＦＢ１、ＦＢ２を低周波数（ｌｏｗ−ｆｒｅｑ）で動作させることにより、電力予算値を小さくしている。リソースマネージャ２による最大電力制御では、上記（ｂ）（ｃ）を実現することができ、優先度の低いタスクを実行している機能ブロックを特定し、この特定された機能ブロックに供給されるクロックを停止、又は低周波数で動作させる。
【００３４】
《平均電力制御及び最大電力制御の概略》
図３には、リソースマネージャ２による平均電力制御と最大電力制御が概略的に例示される。図中、横軸を時間（Ｔｉｍｅ）、左側の縦軸を電力（Ｐ）、右側の縦軸を温度（ｔｅｍｐ）とする。温度は、図中、曲線で示される。ここでは、機能単位として、ＣＰＵ１、ＣＰＵ２、機能ブロックＦＢ１、ＦＢ２を用いる。これらは、上記各種機能ブロックとされるＣＰＵ３，４と機能ブロック５，６にそれぞれ相当する。機能単位の状態は、実行（Ｒ）、半分の周波数で実行（Ｈ）、停止（Ｓ）のいずれかで示される。また、図中、横軸に平行な点線で電力予算値（Ｐ＿ｍａｘ）３０Ａ〜３０Ｄを示し、実線で閾値（Ｔ＿ｍａｘ）３１を示した。平均電力制御は、図中、△印で示したタイマ割込み信号により開始される。タイマ割込み信号は、リソースマネージャ用割込みコントローラ１２から割込みコントローラ２５に数ｍｓの定期的な時間間隔で出力される信号であって、時刻Ｔ１，Ｔ２，Ｔ４，Ｔ５に出力されている。また、最大電力制御は、図中、○印で示した温度センサ割込み信号により開始される。温度センサ割込み信号は、温度センサ１３より検出された温度が閾値（Ｔ＿ｍａｘ）３１以上になったときに、リソースマネージャ用割込みコントローラ１２から割込みコントローラ２５に不定期に出力される信号であって、時刻Ｔ３に出力されている。要するに、リソースマネージャ２は、平均電力制御を定期的な時間間隔で行い、最大電力制御を不定期に行う。
【００３５】
以下、時刻Ｔ１〜Ｔ５に応じたリソースマネージャ２による平均電力制御及び最大電力制御について概略を説明する。リソースマネージャ２は、時刻Ｔ１において、電力予算値（Ｐ＿ｍａｘ）３０Ａを設定する。電力予算値（Ｐ＿ｍａｘ）３０Ａは、チップ１の温度が閾値（Ｔ＿ｍａｘ）３１よりも小さくなるように設定されている。チップ１の電力（Ｐ）は、時刻Ｔ１〜Ｔ２において、ＣＰＵ１，２が実行されているときがあるが、その値は電力予算値（Ｐ＿ｍａｘ）３０Ａよりも小さい。その結果、チップ１の温度は保証温度範囲よりも小さく、そのときのチップ１の電力（Ｐ）は許容範囲内とされる。
【００３６】
リソースマネージャ２は、時刻Ｔ２において、電力予算値（Ｐ＿ｍａｘ）３０Ｂを設定する。ところが、チップ１の電力（Ｐ）は、時刻Ｔ３において、ＣＰＵ１，２、機能ブロックＦＢ１，ＦＢ２が全て実行される。その結果、チップ１の温度は、図示のように、閾値（Ｔ＿ｍａｘ）３１に達してしまう。このとき、リソースマネージャ用割込みコントローラ１２は、割込みコントローラ２５に温度センサ割込み信号を出力する。そして、リソースマネージャ２は、時刻Ｔ３において、チップ１の温度を下げるために電力予算値（Ｐ＿ｍａｘ）３０Ｂを低くして、電力予算値（Ｐ＿ｍａｘ）３０Ｃとすると共に、直ちに優先度の低いタスクをクロック停止又は低周波数で動作させて、チップ１の電力（Ｐ）を電力予算値（Ｐ＿ｍａｘ）３０Ｃよりも小さくする。ここでは、機能ブロックＦＢ１のみ半分の周波数で動作させ、他のタスクは全て停止させている。これは、機能ブロックＦＢ１が実行しているタスクの優先度が高いことを意味している。これにより、リソースマネージャ２は、チップ１の温度を閾値（Ｔ＿ｍａｘ）３１未満とすることができる。
【００３７】
リソースマネージャ２は、時刻Ｔ３での上記処理によりチップ１の温度が下がるから、時刻Ｔ４において電力予算値（Ｐ＿ｍａｘ）３０Ｃを高く設定し、電力予算値（Ｐ＿ｍａｘ）３０Ｄとする。これにより、リソースマネージャ２は、実行可能なタスク数を増加させることができる。例えば時刻Ｔ４〜Ｔ５の前半では、機能ブロックＦＢ１を実行し、ＣＰＵ１，ＦＢ２を半分の周波数で動作させ、後半では、さらにＣＰＵ２を実行する。
【００３８】
このように、リソースマネージャ２は、平均電力制御において、時刻Ｔ１，Ｔ２，Ｔ４でのタイマ割込み信号に応じて電力予算値（Ｐ＿ｍａｘ）３０Ａ，３０Ｂ，３０Ｄを設定し、電力（Ｐ）がこれらの電力予算値よりも小さくなるようにタスクを管理する。また、リソースマネージャ２は、最大電力制御において、時刻Ｔ３での温度センサ割込み信号に応じて、チップ１の温度を閾値（Ｔ＿ｍａｘ）よりも下げるために電力予算値（Ｐ＿ｍａｘ）３０Ｃを設定し、その後、電力（Ｐ）が電力予算値よりも小さくなるようにタスクを管理する。このタスク管理は、上記したタスク管理部２４で行われる。
【００３９】
図４には、タスク管理部２４でのタスク管理の一例が示される。タスク管理部２４は、管理テーブル３２を用いてチップ１全体のタスクをソフトウェアで管理する。管理テーブル３２は、例えばＲＡＭ９等に保持されており、機能ブロックＦＢ０〜ＦＢ３に対する、ポインタとしてのタスクリストの先頭アドレスと、優先度と、ステータスと、グループ情報と、属性とを有する。タスクリストは、それぞれの機能ブロックＦＢ０〜ＦＢ３で優先度の高い順にタスクがリストで連結されたものであり、ＦＢ０タスクリスト、ＦＢ１タスクリスト、ＦＢ２タスクリスト等がある。タスクリストの先頭タスクが機能ブロックＦＢ０〜ＦＢ３でのタスクの状態を表している。また、例えば各タスクには、タスク情報３３が保持されている。タスク情報３３は、タスク管理部２４がタスクを実行するときに参照する情報であって、例えばＲＡＭ９や適宜の外部メモリに保持され、ＯＳタスクＩＤ３４、チップタスクＩＤ３５、電力値３６、電力モード３７、タスク進捗度３８、デッドライン３９等を含む。ＯＳタスクＩＤ３４は、ＯＳがタスクに付与するＩＤである。チップタスクＩＤ３５は、リソースマネージャ２がチップ１で統一して付与するＩＤである。電力値３６は、このタスク実行に伴う電力値である。電力モード３７は、タスクの処理内容を示すモードである。タスク進捗度３８は、上記したようにタスクの実行状況を示すものである。デッドライン３９は、タスクの終了時間である。
【００４０】
機能ブロックＦＢ０〜ＦＢ３間の優先度は、各種機能ブロックの先頭タスクのタスク進捗度３８とデッドライン３９に基づいて決定され、チップ１内に一意に決められ、平均電力制御や最大電力制御に用いられる。以下、優先度の設定について具体的に説明する。まず、機能ブロックＦＢ０〜ＦＢ３のデッドライン３９をそれぞれＤ０、Ｄ１、Ｄ２、Ｄ３とし、タスク進捗度３８をＰ０、Ｐ１、Ｐ２、Ｐ３とし、優先度をｐ０、ｐ１、ｐ２、ｐ３とする。一例として、Ｄ１＜Ｄ０＝Ｄ３＜Ｄ２であり、デッドライン３９が最も近い、言換えるとデッドライン３９までの時間が短いタスクをＤ１とし、さらに、機能ブロックＦＢ０，ＦＢ３のタスク進捗度３８をＰ０＜Ｐ３、即ち機能ブロックＦＢ３の方が機能ブロックＦＢ０より進捗度３８が高いと仮定する。この場合、デッドライン３９が同じであれば、タスク進捗度３８が低い順に優先度が高いとされる。また、デッドライン３９が異なるときは、デッドライン３９が近い順に優先度が高いとされる。即ち、優先度は、ｐ１＞ｐ０＞ｐ３＞ｐ２となる。そして、管理テーブル３２の優先度は、ＦＢ１が「０」、ＦＢ０が「１」、ＦＢ３が「２」、ＦＢ２が「３」となる。この「」内の値が小さい程、優先度が高いとされる。また、タスク管理部２４は、優先度の精度をより高めるために、デッドライン３９とタスク進捗度３８の関数Ｆ（Ｄｉ，Ｐｉ）（０≦ｉ≦３）を用いて優先度を決定するようにしてもよい。
【００４１】
管理テーブル３２のステータスは、各種機能ブロックの実行（Ｒ）、停止（Ｓ）、周波数の状態、例えば半分の周波数（Ｈ）を示しており、上記優先度が最も高いＦＢ１が「Ｒ」、次に優先度が高いＦＢ０が「Ｈ」、そして優先度が低いＦＢ３，ＦＢ２が「Ｓ」とされる。管理テーブル３２のグループは、同じ電力制御対象であることを示しており、例えばＦＢ１，ＦＢ２はグループ「０」、ＦＢ０，ＦＢ３はグループ「１」であり、それぞれ電源遮断や電圧制御で同時に制御される。管理テーブル３２の属性は、電力制御においてクロック停止が可能か否か、さらに、周波数をどの程度低くできるかを示している。ｆｒｑ＿１は、例えば周波数を１倍と０．５倍にできるが、クロック停止は不能であることを示している。ｆｒｑ＿２は、例えば周波数を１倍と０．２５倍にできるが、クロック停止は不能であることを示している。クロック停止が不能である機能ブロックとしては、例えばＯＳを動作させるＣＰＵ等があり、この場合には、属性として周波数のみとなる。また、ｃｌｋはクロック停止が可能であることを示している。
【００４２】
タスク管理部２４は、タスク実行中又は停止中においてタスク情報３３を把握している。上記タスクリストは、タスク実行開始時に機能ブロックＦＢ０〜ＦＢ３からリソースマネージャ２に通知されて更新され、リストの再構成が行われる。また、タスク情報３３に含まれる電力値３６の算出は、リスト更新時でもタイマ割込み信号の発生時でもよく、特に制限されない。但し、リソースマネージャ２は、タイマ割込み信号が入力されると、後述するチップ電力値（ｐ＿ｓｕｍ）を算出する。このため、以下では、電力値３６、即ち各種機能ブロックの電力値（Ｐｗｒ＿ｉ）は、タイマ割込み信号が入力されたときに算出されるとする。
【００４３】
《平均電力制御及び最大電力制御の動作フロー》
図５には、リソースマネージャ２による平均電力制御及び最大電力制御の動作フローが例示される。以下では、図３に例示した時刻Ｔ１〜Ｔ５で実行した平均電力制御及び最大電力制御に対応させて説明する。まず、リソースマネージャ２は、温度センサ１３で検出されたチップ１の温度が、閾値（Ｔ＿ｍａｘ）３１以上となり、リソースマネージャ用割込みコントローラ１２から温度センサ割込み信号が出力されたか否かを判定する（Ｓ１）。上記したように、時刻Ｔ１では温度は閾値（Ｔ＿ｍａｘ）３１未満であるから、温度センサ割込み信号は出力されず、ステップＳ１ではＮｏとなる。次に、リソースマネージャ２は、リソースマネージャ用割込みコントローラ１２からタイマ割込み信号が出力されたか否かを判定する（Ｓ２）。時刻Ｔ１では、図３に例示したようにタイマ割込み信号が出力されているから、リソースマネージャ２は、電力変換部２３で上記タスク情報３３に含まれる電力値３６を更新すると共に、チップ電力値（ｐ＿ｓｕｍ）計算を行う（Ｓ３、図７参照）。次に、リソースマネージャ２は、電力管理部２２でチップ１の平均電力を下げるためにチップ平均電力制御を行う（Ｓ４、図１３参照）。その後、再びステップＳ１の処理に戻る。時刻Ｔ２までは、タイマ割込み信号が発生しないので、ステップＳ２でＮｏとなり、直にステップＳ１の処理に戻る。そして、時刻Ｔ２になると、リソースマネージャ２は、上記ステップＳ１〜Ｓ４の処理を実行する。
【００４４】
次に、時刻Ｔ２を過ぎて時刻Ｔ３に近づくと、図３に例示した通り、温度が上昇し、時刻Ｔ３において、温度センサ割込み信号が出力され、ステップＳ１でＹｅｓとされる。このため、リソースマネージャ２は、時刻Ｔ３において、タスク情報３３に含まれる電力値３６を用いて、電力変換部２３でチップ電力値（ｐ＿ｓｕｍ）計算を行う（Ｓ５、図１５参照）。その後、リソースマネージャ２は、電力管理部２２でチップ１の温度を下げるためにチップ最大電力制御を行う（Ｓ６、図１６参照）。その後、再びステップＳ１の処理に戻る。そして、ステップＳ６のチップ最大電力制御により、チップ１の温度が閾値（Ｔ＿ｍａｘ）３１未満となり、時刻Ｔ４でタイマ割込み信号が発生すると、ステップＳ２〜Ｓ４の処理が行われる。このステップＳ２〜Ｓ４の処理は、時刻Ｔ５でも繰返される。
【００４５】
図６には、温度センサ１３の概略構成が例示される。温度センサ１３は、サーマルダイオード（ＴＤ）６０とＡ／Ｄコンバータ（ＡＤ＿ＣＮＶ）６１等を備える。温度は、サーマルダイオード６０から出力される電圧をＡ／Ｄコンバータ６１を通して、温度デジタル値ｔｐｒに変換される。温度デジタル値ｔｐｒは、リソースマネージャ用割込みコントローラ１２内の温度表示レジスタ（ＴＲＥＧ）６２に保持される。リソースマネージャ用割込みコントローラ１２は、温度デジタル値ｔｐｒが閾値（Ｔ＿ｍａｘ）３１以上であれば、リソースマネージャ２内の割込みコントローラ２５に温度センサ割込み信号のハンドシェークを、ｉｎｔｒｅｑ、ｉｎｔａｃｋにより行う。また、リソースマネージャ用割込みコントローラ１２は、タイマ７から数ｍｓ間隔でタイマ割込みｔｍｒを受けて、これをタイマ割込み信号として、リソースマネージャ２内の割込みコントローラ２５に出力する。ここで、上記ステップＳ１で温度センサ割込み信号による判定を行い、その後、ステップＳ２でタイマ割込み信号による判定を行うので、温度センサ割込み信号は、タイマ割込み信号より優先度が高い。このため、リソースマネージャ用割込みコントローラ１２内では、これらの割込み信号の優先度判定を行う。但し、この優先度判定は、リソースマネージャ２で行うようにしてもよい。
【００４６】
《平均電力制御のためのチップ電力値（ｐ＿ｓｕｍ）計算》
図７には、ステップＳ３に対応する平均電力制御のためのチップ電力値（ｐ＿ｓｕｍ）計算の動作フローが例示される。まず、電力変換部２３は、各種機能ブロックのうち、電力値（Ｐｗｒ＿ｉ）を算出していない未チェック機能ブロックＦＢがあるか否かを判定する（Ｓ１１）。ステップＳ１１で未チェック機能ブロックＦＢがあれば、電力変換部２３は、パフォーマンスカウンタ１５を用いて、ｉ番目の機能ブロックＦＢｉの所定時間Ｔの稼働率αを求める（Ｓ１２）。稼働率αとは、例えば処理を行っている機能ブロックＦＢがＣＰＵであるとすると、所定時間Ｔの最大実行命令数と実際の実行命令数の比等である。次に、電力変換部２３は、機能ブロックＦＢｉのモードＭＤ１〜３、機能ＦＢｉの稼働率α、温度センサ１３で検出された温度ｔに基づいて、電力テーブル（図１０参照）をサーチして、電力値（Ｐｗｒ＿ｉ）を算出する（Ｓ１３、図９参照）。ＦＢｉのモードＭＤ１〜３とは、例えば、Ｈ．２６４、ＭＰＥＧ−４、エンコード、デコード等の処理内容に相当する。温度ｔは、温度から影響を受け易いリーク電力（Ｐ＿ｌｅａｋ）の算出に用いられる。そして、電力変換部２３は、機能ブロックＦＢｉのタスクリストのタスク情報３３に含まれる電力値（Ｐｗｒ＿ｉ）３６を更新する（Ｓ１４）。次に、電力変換部２３は、各種機能ブロックＦＢｉの電力値（Ｐｗｒ＿ｉ）を累算し、チップ電力値（ｐ＿ｓｕｍ）を求める（Ｓ１５）。その後、ステップＳ１１に戻り、各種機能ブロックＦＢｉの全てをチェックすると、ステップＳ１１でＮｏとなり、上記ステップＳ４に進む。
【００４７】
図８には、パフォーマンスカウンタ１５の回路構成が例示される。ここでは、一例として、入力情報をｎ個のｉｎｆｏ＿１〜ｎ、カウンタ値をｍ個のｐｐｃ＿１〜ｍとする。パフォーマンスカウンタ１５は、例えばｍ個のｎ対１のパフォーマンス情報セレクタ５０と、ｍ個のカウンタ５１と、ｍ個のフリップフロップ５２等を備える。入力情報ｉｎｆｏ＿１〜ｎは、実行命令、キャッシュミス、分岐、機能ブロックＦＢの実行状態等があり、選択された情報に対し、供給クロックでカウントアップする。カウンタ値ｐｐｃ＿１〜ｍは、パフォーマンスカウンタ情報ｐｐｃ＿ｉ（１≦ｉ≦ｍ）として出力される。尚、このパフォーマンスカウンタ情報ｐｐｃ＿ｉを用いると、上記稼働率αを、例えばｐｐｃ＿ｉ／Ｔとして算出することができる。
【００４８】
図９には、ステップＳ１３に対応する電力値（Ｐｗｒ＿ｉ）を算出するための動作フローが例示される。電力変換部２３は、図１０に例示した電力テーブル４０をサーチして電力値（Ｐｗｒ＿ｉ）を算出する。電力テーブル４０は、例えばＲＡＭ９又は適宜の外部メモリに格納されており、充放電電力Ｐ＿ａｃｔを示すテーブル４１と、リーク電力Ｐ＿ｌｅａｋを示すテーブル４２とを含む。テーブル４１は、例えば画像処理ＩＰ１を実行する機能ブロックＦＢの稼働率αとモードＭＤ１〜３をインデックスとし、充放電電力Ｐ＿ａｃｔをテーブル値として示す。モードＭＤ１〜３とは、例えば画像処理ＩＰ１において、ＭＰＥＧ−４やＨ．２６４等のアルゴリズムの相違やエンコード又はデコード等の処理の相違を示す情報であって、単なる画像処理ＩＰ１ではなく、アルゴリズムや処理を反映したモードとされる。これにより、テーブル４１では、充放電電力Ｐ＿ａｃｔを細かく設定できる。テーブル４２は、温度ｔ１，ｔ２，ｔ３をインデックスとし、リーク電力Ｐ＿ｌｅａｋをテーブル値として示す。温度ｔ１，ｔ２，ｔ３は、予めテーブル４２に設定された値であり、温度センサ１３で検出された実測値である温度ｔとは異なる場合があるが、その場合には、温度ｔ１，ｔ２，ｔ３のうち、温度ｔ以上であって、最も近い温度を参照する。このようにすれば、テーブル４２で選択されるリーク電力Ｐ＿ｌｅａｋは、実際のリーク電力よりも小さくなることがなく、十分なマージンを持って電力値（Ｐｗｒ＿ｉ）を算出できる。
【００４９】
まず、電力変換部２３は、温度センサ１３で温度ｔを実測し、テーブル４２に設定されたｔ１，ｔ２，ｔ３のうち最も近い値を選択する（Ｓ２１）。次に、電力変換部２３は、一定時間Ｔでの機能ブロックＦＢ１のモードＭＤ１〜３と稼働率αを計測し（Ｓ２２）、最大周波数（ｍａｘ＿ｆｒｅｑ）に対する設定された周波数（ｆｒｅｑ）の比である周波数比βを求める（Ｓ２３）。そして、電力変換部２３は、稼働率αとモードＭＤ１〜３をインデックスとしてテーブル４１をサーチして得た充放電電力Ｐ＿ａｃｔに周波数比βを乗じた値と、温度ｔ１，ｔ２，ｔ３をインデックスとしてテーブル４２をサーチして得たリーク電力Ｐ＿ｌｅａｋと、を加算して、電力値（Ｐｗｒ＿ｉ）を得る（Ｓ２４）。その後、電力変換部２３は、上記したステップＳ１４の処理を行う。ここで、電力テーブルは、精度とメモリ使用量の間にトレードオフの関係があり、メモリ使用量よりも精度が重要であれば、例えば上記電力テーブル４０のようにインデックスや規模を増やすことで精度を向上させることができる。以下では、メモリ使用量を低減させることが重要である場合での電力テーブルを用いた電力値（Ｐｗｒ＿ｉ）を算出するための動作フローについて説明する。
【００５０】
図１１には、ステップＳ１３に対応する電力値（Ｐｗｒ＿ｉ）を算出するための動作フローが例示される。電力変換部２３は、図１２に例示した電力テーブル４０Ａをサーチして電力値（Ｐｗｒ＿ｉ）を算出する。電力テーブル４０Ａは、充放電電力Ｐ＿ａｃｔを示すテーブル４１Ａと、リーク電力Ｐ＿ｌｅａｋを示すテーブル４２Ａとを含む。テーブル４１Ａは、上記テーブル４１と異なり稼働率αだけをインデックスとして、機能ブロックＦＢの処理ＩＰ１〜ＩＰ３毎の充放電電力Ｐ＿ａｃｔをテーブル値として示す。このようにすれば、テーブル４１Ａでのメモリ使用量を低減させることができる。テーブル４２Ａは、処理ＩＰ１〜ＩＰ３についてリーク電力Ｐ＿ｌｅａｋを示している。まず、電力変換部２３は、温度センサ１３で温度ｔを実測し、テーブル４２Ａに設定されたｔ１，ｔ２，ｔ３のうち最も近い値を選択し（Ｓ３１）、一定時間Ｔでの機能ブロックＦＢ１の稼働率αを計測し（Ｓ３２）、上記周波数比βを求める（Ｓ３３）。次に、電力変換部２３は、稼働率αをインデックスとしてテーブル４１Ａをサーチして得た充放電電力Ｐ＿ａｃｔに周波数比βを乗じた値と、温度ｔ１，ｔ２，ｔ３をインデックスとしてテーブル４２Ａをサーチして得たリーク電力Ｐ＿ｌｅａｋと、を加算して、電力値（Ｐｗｒ＿ｉ）を得る（Ｓ３４）。その後、電力変換部２３は、上記ステップＳ１４を行う。
【００５１】
《チップ平均電力制御》
図１３には、ステップＳ４に対応する電力管理部２２による平均電力制御の動作フローが例示される。まず、電力管理部２２は、割込みコントローラ２５からタイマ割込み信号が通知されると、管理テーブル３２（図４参照）の優先度に基づいて、優先度が最も低いタスクをサーチする（Ｓ４１）。ここでは、説明の便宜上、機能ブロックＦＢｘを優先度が最低と仮定する。次に、電力管理部２２は、機能ブロックＦＢｘの先頭のタスク情報３３に含まれるタスク進捗度３８を参照して、タスク進捗度３８に余裕があるか否かを判定する（Ｓ４２）。タスク進捗度３８に余裕があるとは、タスク進捗度３８が十分に高く、かつ、デッドライン３９が遅い場合をいう。また、タスク進捗度３８が低く、かつ、デッドライン３９が早い場合には、タスク進捗度３８には余裕がないとされる。電力管理部２２は、ステップＳ４２でタスク進捗度３８に余裕があれば、機能ブロックＦＢｘに供給されるクロックを停止可能か否かを判定する（Ｓ４３）。一方、タスク進捗度３８に余裕がなければ、再び上記ステップＳ１（図５参照）の処理に進む。ステップＳ４３において、機能ブロックＦＢｘに供給されるクロックを停止可能か否かは、管理テーブル３２の属性に基づいて判定される。
【００５２】
電力管理部２２は、クロックの供給を停止可能であれば、クロック制御部１６を制御して、機能ブロックＦＢｘのクロック停止処理を行い（Ｓ４４）、チップ電力値（ｐ＿ｓｕｍ）からクロック停止分の電力ｐ＿ｃｌｋ（ｘ）を削減する（Ｓ４５）。また、電力管理部２２は、ステップＳ４３でクロック停止が不能であれば、機能ブロックＦＢｘに供給されるクロックの周波数を変更する処理を行い（Ｓ４６）、チップ電力値（ｐ＿ｓｕｍ）から周波数変更分の電力ｐ＿ｆｒｑ（ｘ）を削減する（Ｓ４７）。ここで、クロック停止分の電力ｐ＿ｃｌｋ（ｘ）は、例えば電力テーブル４０を参照して、テーブル４１の充放電電力を示すテーブル値と、テーブル４２のリーク電力を示すテーブル値とを加算することで得られる。また、リーク電力が小さい場合はテーブル４１のテーブル値をクロック停止分の電力ｐ＿ｃｌｋ（ｘ）とみなしてもよい。さらに、周波数変更分の電力ｐ＿ｆｒｑ（ｘ）は、例えばテーブル４１が示す充放電電力と、テーブル４２が示すリーク電力と、上記周波数比βを用いて算出可能とされる。次に、電力管理部２２は、ステップＳ４５、Ｓ４７で得られたチップ電力値（ｐ＿ｓｕｍ）が電力予算値（Ｐ＿ｍａｘ）よりも大きいか否かを判定する（Ｓ４８）。電力予算値（Ｐ＿ｍａｘ）は、例えばＲＡＭ９に保持されており、タイマ割込み信号が入力されたときに、リソースマネージャ２のソフトウェアにて更新される。ステップＳ４８で、チップ電力値（ｐ＿ｓｕｍ）が電力予算値（Ｐ＿ｍａｘ）よりも大きい場合には、再びステップＳ４１の処理に戻り、チップ電力値（ｐ＿ｓｕｍ）が電力予算値（Ｐ＿ｍａｘ）以下になるまで、ステップＳ４２〜４８の処理を繰返す。電力管理部２２は、チップ電力値（ｐ＿ｓｕｍ）が電力予算値（Ｐ＿ｍａｘ）以下になれば、平均電力制御を終了して、再び上記ステップＳ１の処理に戻る。このように、時刻Ｔ１，Ｔ２，Ｔ４，Ｔ５（図３参照）でのタイマ割込み信号に応じて実行される平均電圧制御によれば、デッドラインを超えない、即ちリアルタイム性を損なわない範囲で、チップ電力値（ｐ＿ｓｕｍ）を削減することができるので、例えばバッテリーの寿命を長くすることができる。
【００５３】
図１４には、クロック制御部１６の概略構成が例示される。クロック制御部１６は、フェーズ・ロックド・ループ（ＰＬＬ）７０と、分周器（Ｄｖｄｒ）７１と、ＡＮＤゲート７２と、クロック制御レジスタ（ＦＲＥＱ＿ＣＦＧ＿ＲＥＧ）７３等を備える。クロック制御部１６は、ＥＸＴＡＬ端子からのクロック入力を、フェーズ・ロックド・ループ７０で逓倍の周波数を発振し、分周器７１で分周させる。また、ＡＮＤゲート７２は、機能ブロック毎のクロック停止を行うモジュールストップ（ＭＳＴＰ）のための最終段となる。機能ブロック毎のステップＳ４４に対応するクロック停止の処理と、ステップＳ４６に対応する逓倍、分周の処理とについては、リソースマネージャ２上のソフトウェアでクロック制御レジスタ７３をライトすることで可能とされる。これにより、リソースマネージャ２は、クロック停止、周波数変更を機能ブロック毎に制御できる。
【００５４】
《最大電力制御のためのチップ電力値（ｐ＿ｓｕｍ）計算》
図１５には、ステップＳ５に対応する最大電力制御のためのチップ電力値（ｐ＿ｓｕｍ）計算の動作フローが例示される。ここで、温度センサ割込み信号に応じたチップ電力値（ｐ＿ｓｕｍ）計算は、短時間に行うことが重要である。これは、チップ１の温度が閾値（Ｔ＿ｍａｘ）を超えているので、できるだけ短時間でチップ１の温度を下げて、チップ１の熱暴走等を回避することが優先されるためである。そこで、電力変換部２３は、未チェック機能ブロックＦＢがあるか否かを判定し（Ｓ５１）、未チェック機能ブロックＦＢがあれば、上記した平均電力制御において用いられた電力テーブル４０、４０Ａをサーチせず、図４に示す各機能ブロックＦＢのタスクリストの先頭のタスク情報３３に含まれる電力値（Ｐｗｒ＿ｉ）３６をリードし（Ｓ５２）、累算することによりチップ電力値（ｐ＿ｓｕｍ）を算出する（Ｓ５３）。このようにすれば、チップ電力値（ｐ＿ｓｕｍ）を短時間で算出できる。そして、ステップＳ５１に戻り、各種機能ブロックＦＢの全てをチェックすると、ステップＳ５１でＮｏとなり、上記ステップＳ６の処理に進む。
【００５５】
《チップ最大電力制御》
図１６には、ステップＳ６に対応する電力管理部２２による最大電力制御の動作フローが例示される。ここで、上記したステップＳ４に対応する平均電力制御の動作フローと重複する説明については適宜省略する。まず、電力管理部２２は、管理テーブル３２の優先度を参照して優先度最低タスクをサーチする（Ｓ６１）。次に、電力管理部２２は、機能ブロックＦＢｘの属性によってクロック停止が可能であれば（Ｓ６２、Ｙｅｓ）、機能ブロックＦＢｘのクロック停止処理を行い（Ｓ６３）、チップ電力値（ｐ＿ｓｕｍ）からクロック停止分の電力ｐ＿ｃｌｋ（ｘ）を削減する（Ｓ６４）。また、電力管理部２２は、クロック停止ができなければ（Ｓ６２、Ｎｏ）、機能ブロックＦＢｘの周波数変更処理を行い（Ｓ６５）、チップ電力値（ｐ＿ｓｕｍ）から周波数変更分の電力ｐ＿ｆｒｑ（ｘ）を削減する（Ｓ６６）。次に、電力管理部２２は、ステップＳ６４、Ｓ６６で得られたチップ電力値（ｐ＿ｓｕｍ）が電力予算値（Ｐ＿ｍａｘ）よりも大きいか否かを判定する（Ｓ６７）。電力予算値（Ｐ＿ｍａｘ）は、温度センサ割込み信号が入力されたときに、リソースマネージャ２のソフトウェアにて、チップ１の温度を下げるために低く設定される。電力管理部２２は、チップ電力値（ｐ＿ｓｕｍ）が電力予算値（Ｐ＿ｍａｘ）以下になるまで、ステップＳ６１〜６７の処理を繰返し、電力を削減する。そして、チップ電力値（ｐ＿ｓｕｍ）が電力予算値（Ｐ＿ｍａｘ）以下になれば、最大電力制御を終了して、再び上記ステップＳ１の処理に戻る。このように、時刻Ｔ３（図３参照）での温度センサ割込み信号に応じて実行される最大電圧制御によれば、短時間でチップ電力値（ｐ＿ｓｕｍ）を算出すると共に、チップ１の温度を下げるためにチップ電力値（ｐ＿ｓｕｍ）を削減して、電力予算値（Ｐ＿ｍａｘ）以下にすることができるので、リアルタイム性を保ちつつ、チップ１の熱暴走等を回避できる。
【００５６】
《実施形態２》
図１７には、本発明の実施形態２に係る半導体集積回路の概略構成が例示される。チップ１Ａは、図１に例示したチップ１に比べて、電源制御部（ＰＷＲ）２６と、レギュレータ（ＲＧＲ）２７と電源スイッチ２８が追加され、さらに、各種機能ブロックに温度センサ（ＴＳＮＳ）１３が搭載されている点が異なる。レギュレータ２７は、各機能ブロックに最適な電圧を供給する。電源スイッチ２８は、各種機能ブロック毎に電源を供給又は遮断する。電源制御部２６は、電源スイッチ２８を制御する。温度センサ１３は、例えば全ての機能ブロックのうち、チップ１の動作時に最も温度が高くなると予測される所定の機能ブロック内に搭載される。これにより、チップ１Ａの最大温度をより正確に測定できる。ここで、温度センサ１３の数は、１以上で特に制限されない。また、温度センサ割込み信号は、全ての温度センサ１３のうち、最も高い温度と閾値（Ｔ＿ｍａｘ）と比較することで発生させる。このようにすれば、リソースマネージャ２による最大電力制御を適切なタイミングで開始させることができる。また、リソースマネージャ２は、上記平均電力制御及び最大電力制御において、電源制御部２６により電源スイッチ２８を制御して、優先度の低い機能ブロックの電源を遮断して、電力を削減できる。さらに、リソースマネージャ２は、レギュレータ２７を制御して、優先度の低い機能ブロックに供給される電圧を低くして低電圧動作をさせて、電力を削減できる。
【００５７】
以上本発明者によってなされた発明を実施形態に基づいて具体的に説明したが、本発明はそれに限定されるものではなく、その要旨を逸脱しない範囲において種々変更可能であることは言うまでもない。
【００５８】
例えば、リソースマネージャ２は、ソフトウェアで制御されるので、各種命令で制御される半導体集積回路に限らず、汎用マイコンやマイクロプロセッサ等で実現してもよい。また、リソースマネージャ２によるリソースの管理は、全てソフトウェアで制御されるので、これらの制御を、特定のＣＰＵ、即ちリソースマネージャ２のリソース管理タスクとして、全てソフトウェアで実現するようにしてもよい。さらに、チップ１は、リソースマネージャ２による最大電力制御によって、温度を保証温度範囲内にできるから、温度の上昇し易い環境で用いられるカーナビゲーションシステムに好適に用いられる。また、チップ１は、リソースマネージャ２による平均電力制御によって、バッテリーの寿命を長くすることができるから、携帯電話、携帯情報端末やデジタルカメラ等の適宜の半導体製品に適用することもできる。
【図面の簡単な説明】
【００５９】
【図１】本発明の実施形態１に係る半導体集積回路の概略構成を示す図である。
【図２】最大電力制御の概念図である。
【図３】リソースマネージャによる平均電力制御と最大電力制御を概略的に示す説明図である。
【図４】タスク管理部によるタスク管理を例示する図である。
【図５】リソースマネージャによる平均電力制御と最大電力制御の動作フローである。
【図６】温度センサの概略構成を例示する図である。
【図７】電力変換部による平均電力制御のためのチップ電力値計算の動作フローである。
【図８】パフォーマンスカウンタの回路構成を示す図である。
【図９】電力変換部による電力算出の動作フローである。
【図１０】図９で用いられる電力テーブルの概略構成を例示する図である。
【図１１】電力変換部による電力算出の動作フローである。
【図１２】図１１で用いられる電力テーブルの概略構成を例示する図である。
【図１３】電力管理部による平均電力制御の動作フローである。
【図１４】クロック制御部の概略構成を例示する図である。
【図１５】電力変換部による最大電力制御のためのチップ電力値計算の動作フローである。
【図１６】電力管理部による最大電力制御の動作フローである。
【図１７】本発明の実施形態２に係る半導体集積回路の概略構成を示す図である。
【符号の説明】
【００６０】
１，１Ａ  システムオンチップ（ＳｏＣ）
２  リソースマネージャ（ＲＭ）
３，４  ＣＰＵ
５，６  機能ブロック（ＦＢ）
７  タイマ（ＴＭＲ）
８  バスアービタ（ＡＲＢ）
９  ＲＡＭ
１０  ＲＯＭ
１１  割込みコントローラ（ＩＮＴＡ）
１２  リソースマネージャ用割込みコントローラ（ＩＮＴＢ）
１３  温度センサ（ＴＳＮＳ）
１４  パフォーマンス検出回路
１５  パフォーマンスカウンタ（ＰＰＣ）
１６  クロック制御部（ＣＬＫ）
１７  内部バス
２０  命令デコーダ（ＤＥＣ）
２１  制御部（ＣＴＬ）
２２  電力管理部（ＰＷＭ）
２３  電力変換部（ＰＣＮＶ）
２４  タスク管理部（ＴＳＫＭ）
２５  割込みコントローラ（ＩＮＴＣ）
２６  電源制御部（ＰＷＲ）
２７  レギュレータ（ＲＧＲ）
２８  電源スイッチ
３０Ａ〜３０Ｄ  電力予算値（Ｐ＿ｍａｘ）
３１  閾値（Ｔ＿ｍａｘ）
４０，４０Ａ  電力テーブル
５０  パフォーマンス情報セレクタ
５１  カウンタ
５２  フリップフロップ
６０  サーマルダイオード（ＴＤ）
６１  Ａ／Ｄコンバータ（ＡＤ＿ＣＮＶ）
６２  温度表示レジスタ（ＴＲＥＧ）
７０  フェーズ・ロックド・ループ（ＰＬＬ）
７１  分周器（Ｄｖｄｒ）
７２  ＡＮＤゲート
７３  クロック制御レジスタ（ＦＲＥＱ＿ＣＦＧ＿ＲＥＧ）
【図１】
2008026948.tif 000003
【図２】
2008026948.tif 000004
【図３】
2008026948.tif 000005
【図４】
2008026948.tif 000006
【図５】
2008026948.tif 000007
【図６】
2008026948.tif 000008
【図７】
2008026948.tif 000009
【図８】
2008026948.tif 000010
【図９】
2008026948.tif 000011
【図１０】
2008026948.tif 000012
【図１１】
2008026948.tif 000013
【図１２】
2008026948.tif 000014
【図１３】
2008026948.tif 000015
【図１４】
2008026948.tif 000016
【図１５】
2008026948.tif 000017
【図１６】
2008026948.tif 000018
【図１７】
2008026948.tif 000019
【手続補正書】
【提出日】平成18年7月18日(2006.7.18)
【手続補正１】
【補正対象書類名】図面
【補正対象項目名】図５
【補正方法】変更
【補正の内容】
【図５】
2008026948.tif 000020
【手続補正２】
【補正対象書類名】図面
【補正対象項目名】図１３
【補正方法】変更
【補正の内容】
【図１３】
2008026948.tif 000021
【手続補正３】
【補正対象書類名】図面
【補正対象項目名】図１６
【補正方法】変更
【補正の内容】
【図１６】
2008026948.tif 000022