(57)【特許請求の範囲】
【請求項１】
消費電力構成要素信号を出力するセンサと機能設定可能なレジスタを装備する単数ないし複数の機能ブロックと、不揮発性半導体メモリと、揮発性半導体メモリと、タイマとを有する半導体集積回路装置であって、
全ての前記機能ブロックからアクセスして消費電力の設定が可能なレジスタを装備し、さらに全ての前記機能ブロックに動作クロックを供給する動作クロック分配装置と、
全ての前記機能ブロックからアクセスして消費電力の設定が可能なレジスタを装備し、さらにすべての前記機能ブロックに電源電圧を供給する電源電圧分配装置と、
全ての前記消費電力構成要素信号を集計し加算して総要求電力値に変換し格納して任意の前記機能ブロックからもアクセスして前記総要求電力値を読み込ませることが可能な電力換算装置と、
前記タイマのタイマ割込みを受付且つ前記総要求電力値をロードする消費電力管理装置と、
前記機能ブロックと前記動作クロック分配装置と前記電源電圧分配装置と前記電力換算装置と前記消費電力管理装置と前記不揮発性半導体メモリと前記揮発性半導体メモリと前記タイマとの間を繋いで相互にデータを通信しあうことが可能なバスを装備し、
前記消費電力管理装置は、
予めロード済みで、電源の許容電力から任意のマージンを差し引いた値である電力予算値から、前記総要求電力値を引き算した電力結果値が負の場合は前記総要求電力値が前記電力予算値以下になるように前記動作クロック分配装置に対して前記動作クロックの遮断、または動作周波数の低減、または前記電源電圧分配装置に対して前記電源電圧の遮断を行うことを特徴とする半導体集積回路装置。
【請求項２】
請求項１記載の半導体集積回路装置において、
前記機能ブロックが実行開始直後であることを表す実行開始直後データを前記揮発性半導体メモリの所定共有メモリに書き込んだ後に前記消費電力管理装置に対して実行開始直後通知割込みイベントを発信し、前記消費電力管理装置が前記実行開始直後通知割込みイベントを受け付けて前記所定共有メモリから前記データを読み込み、保持をする、および
前記機能ブロックが実行開始直前であることを表す実行開始直前データを前記揮発性半導体メモリの所定共有メモリに書き込んだ後に前記消費電力管理装置に対して実行開始直前通知割込みイベントを発信し、前記消費電力管理装置が前記実行開始直前通知割込みイベントを受け付けて前記所定共有メモリから前記データを読み込む、保持をする、および
前記機能ブロックが実行終了直後であることを表す実行終了直後データを前記揮発性半導体メモリの所定共有メモリに書き込んだ後に前記消費電力管理装置に対して実行終了直後通知割込みイベントを発信し、前記消費電力管理装置が前記実行終了直後通知割込みイベントを受け付けて前記所定共有メモリから前記データを読み込み、保持をすることを特徴とする半導体集積回路装置。
【請求項３】
請求項２記載の半導体集積回路装置において、
前記機能ブロックが他の単数ないし複数の前記機能ブロックに対して命令を発行する場合、命令を発行する前記機能ブロックが実行開始直後通知割込みイベント、および実行開始直前通知割込みイベント、実行終了直後通知割込みイベントを発信することを特徴とする半導体集積回路装置。
【請求項４】
請求項３記載の半導体集積回路装置において、
前記消費電力管理装置が、前記消費電力管理装置それ自体に対して前記実行開始直後通知割込みイベント、および前記実行開始直前通知割込みイベント、前記実行終了直後通知割込みイベントを発信することを特徴とする半導体集積回路装置。
【請求項５】
請求項４記載の半導体集積回路装置において、
前記機能ブロックおよび前記消費電力管理装置が前記実行開始直後通知割込みイベント、および前記実行開始直前通知割込みイベントを発信することにより、前記消費電力管理装置が前記電力予算値および前記総要求電力値を取得することを特徴とする半導体集積回路装置。
【請求項６】
請求項５記載の半導体集積回路装置において、
前記消費電力管理装置は、
タスク単位をスレッドおよびプロセスおよび命令が発行される機能ブロック単位とし、
全ての前記機能ブロックに対して機能ブロック識別子を割り振り、
タスクの管理を行う機能ブロック管理用リンクリストを全ての前記機能ブロックに対して装備し、電力モードが高電力モードで動作中の前記機能ブロックを管理する電力管理用リンクリストを装備し、前記電力モードが低電力モードで動作中の前記機能ブロックを管理する低電力管理用リンクリストを装備し、前記電力モードが停止モードの機能ブロックを管理するサスペンド用リンクリストを装備し、
前記機能ブロック管理用リンクリストおよび前記電力管理用リンクリストおよび低電力管理用リンクリストおよびサスペンド用リンクリストに挿入するリストには、前記タスク優先度および前記機能ブロック識別子および前記電力モードおよび前記電力モードの持続時間を設定する電力モード時間を格納し、
前記電力管理用リンクリストは前記リストを前記タスク優先度の低い順に並び替え、前記機能ブロック管理用リンクリスト、前記低電力管理用リンクリスト、および前記サスペンド用リンクリストは前記リストを前記タスク優先度の高い順に並び替えることにより、前記機能ブロックをスケジューリングすることを特徴とする半導体集積回路装置。
【請求項７】
請求項６記載の半導体集積回路装置において、
前記消費電力管理装置は、
前記実行開始直後通知割込みイベント、前記実行開始直前通知割込みイベント、前記実行終了直後通知割込みイベントを契機に、前記機能ブロック管理用リンクリストおよび前記電力管理用リンクリストおよび前記低電力管理用リンクリストおよび前記サスペンド用リンクリストは前記リストに対して前記スケジューリングを施すことを特徴とする半導体集積回路装置。
【請求項８】
請求項７記載の半導体集積回路装置において、
前記消費電力管理装置は、
前記タイマからのタイマイベントを周期イベントおよびアラームイベントに変換する時間管理部を装備し、前記周期イベントおよび前記アラームイベントを契機に、前記機能ブロック管理用リンクリストおよび前記電力管理用リンクリストおよび前記低電力管理用リンクリストおよび前記サスペンド用リンクリストは前記リストに対して前記スケジューリングを施すことを特徴とする半導体集積回路装置。
【請求項９】
請求項８の半導体集積回路装置において、
前記消費電力管理装置は、
前記電力結果値が負の場合、前記電力管理用リンクリストから最もタスク優先度の低い順に前記リストを外し、
外した前記リストに格納の前記電力モード時間をアラーム時間として前記時間管理部に設定し、
同じく格納の前記電力モードが前記低電力モードならば同じく格納の前記機能ブロック識別子に対応する前記機能ブロックを前記低電力モードに設定し、前記低電力管理用リンクリストにタスク優先度が高い順に外した前記リストを挿入し、
反対に同じく格納の前記電力モードが前記停止モードならば同じく格納の前記機能ブロック識別子に対応する前記機能ブロックを前記停止モードに設定し、前記サスペンド管理用リンクリストにタスク優先度が高い順に外した前記リストを挿入することを特徴とする半導体集積回路装置。
【請求項１０】
請求項９記載の半導体集積回路装置において、
前記消費電力管理装置は、
前記アラーム時間経過後、前記低電力管理用リンクリストないし前記サスペンド管理用リンクリストが空でない場合、最もタスク優先度が高い前記リストを外し、
外した前記リストに格納の前記機能ブロック識別子に対応する前記機能ブロックを前記高電力モードに設定し、
外した前記リストを前記電力管理用リンクリストから最もタスク優先度の低い順に挿入することを特徴とする半導体集積回路装置。
【請求項１１】
請求項１０記載の半導体集積回路装置において、
前記消費電力管理装置は、
前記機能ブロック管理用リンクリストが空になった際に動作クロックないし電源電圧を遮断することを特徴とする半導体集積回路装置。
【請求項１２】
請求項１１記載の半導体集積回路装置において、
前記消費電力管理装置は、
電源スイッチを同じくする前記機能ブロックの集合であって、前記集合の全ての前記機能ブロックに対応する前記機能ブロック管理用リンクリストが空になった際に動作クロックないし電源電圧を遮断することを特徴とする半導体集積回路装置。
【請求項１３】
請求項１２記載の半導体集積回路装置において、
前記消費電力管理装置は、
前記実行開始直後通知割込みイベントを契機に、前記実行開始直後データ内の前記タスク優先度、前記機能ブロック識別子、前記電力モード、前記電力時間を新規に前記リストに格納し、前記機能ブロック識別子に相当する前記機能ブロック管理用リンクリストに前記リストを前記タスク優先度の高い順に挿入後、前記リストを前記電力管理用リンクリストにタスク優先度の低い順に挿入することを特徴とする半導体集積回路装置。
【請求項１４】
請求項１３記載の半導体集積回路装置において、
前記消費電力管理装置は、
前記実行開始直前通知割込みイベントを契機に、前記実行開始直前データ内の前記タスク優先度、前記機能ブロック識別子、前記電力モード、前記電力時間を新規に前記リストに格納し、前記機能ブロック識別子に相当する前記機能ブロック管理用リンクリストに前記リストを前記タスク優先度の高い順に挿入後、前記リストを前記電力管理用リンクリストにタスク優先度の低い順に挿入し、
前記機能ブロック識別子に相当する機能ブロックに割り込みを発生することを特徴とする半導体集積回路装置。
【請求項１５】
請求項１４記載の半導体集積回路装置において、
前記消費電力管理装置は、
前記実行終了直後通知割込みイベントを契機に、前記実行終了直後データ内の前記機能ブロック識別子に相当する前記機能ブロック管理用リンクリストから最もタスク優先度の高い前記リストを外し、外した前記リストに格納の前記機能ブロック識別子に相当する前記リストを前記電力管理用リンクリストから外すことを特徴とする半導体集積回路装置。 
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体集積回路装置における低消費電力化技術に関し、特に、半導体集積回路装置内の機能ブロックにおける電力消費管理に有効な技術に関する。
【背景技術】
【０００２】
近年、携帯電話、ディジタルカメラ、携帯オーディオプレーヤーなどのバッテリ駆動型や、ディジタルテレビ、ディジタルビデオディスクプレイヤー、ディジタルハードディスクレコーダなどの据え置き型のディジタル家電などは、小型薄型軽量化が進んでおり、ディジタルＬＳＩ（Ｌａｒｇｅ  Ｓｃａｌｅ  Ｉｎｔｅｇｒａｔｉｏｎ）などの半導体集積回路装置が広く用いられている。
【０００３】
ディジタルＬＳＩを生産する半導体の微細化加工技術は年々発展を遂げており、例えばＣＭＯＳ（Ｃｏｍｐｌｅｍｅｎｔａｒｙ  Ｍｅｔａｌ  Ｏｘｉｄｅ  Ｓｅｍｉｃｏｎｄｕｃｔｏｒ）回路のゲート幅や酸化膜厚などを薄くすることにより、ディジタルＬＳＩそれ自体を薄く小さく生産することが可能になった。ディジタルＬＳＩの小型薄型軽量化こそ、半導体の価値とされている。
【０００４】
また前記ゲート幅や前記酸化膜厚を薄くする為、ディジタルＬＳＩに印加する電源電圧も同時に低くする必要がある。その結果、一世代前の微細化加工技術で生産したディジタルＬＳＩと同じ処理性能以上の確保、つまり同じ動作周波数以上の駆動が可能なディジタルＬＳＩを生産するためには、前記酸化膜厚に対する耐圧の関係上、前記電源電圧を低くすることと同時に、前記ディジタルＬＳＩよりもしきい値電圧を低くする必要がある。
【０００５】
しかししきい値電圧を低くしていくと、ディジタルＬＳＩが駆動してもしなくても、つまりＣＭＯＳ回路がスイッチングしてもしなくても、電源電圧が印加されている限り、電流が漏れてエネルギーが勝手に消費されるという特性を持つリーク電流の増加が顕著になる。
【０００６】
２０００年より以前ではＣＭＯＳ回路が実際に駆動することによりエネルギーを消費するという特性を持つスイッチング電流が全消費電力の大部分を占めていた。しかし２０００年以降は微細化加工技術の発展に伴い、リーク電流によるエネルギー消費の割合が指数的に占めてくると予想されている。
【０００７】
そこで前記ディジタルＬＳＩと同じ処理性能以上のディジタルＬＳＩを、電源電圧を低く、動作周波数を高くして実現するのではなく、電源電圧は可能な限り低く設定せず、つまりしきい値電圧の低下を抑えて、同様な複数の処理機構を並列駆動して実現するという方向に進みつつある。
【０００８】
例えば、一つの高速プロセッサを実現するのではなく、前記動作周波数と同程度である代わりに、並列動作可能な複数のプロセッサおよびＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）の混載チップを実現することに相当する。
【０００９】
その方が今後の前記リーク電流の指数的増加の抑制が図れて且つ、微細化加工技術により、半導体の価値とされている、ディジタルＬＳＩの小型薄型軽量化も実現し易くなる。
【００１０】
さらにディジタルＬＳＩの小型薄型軽量化が実現できると、前記ディジタルＬＳＩと同じチップ面積で且つ、更なる処理機能を付加することで製品の差別化を行う為、前記混載チップよりもさらに並列処理が可能な複数個のプロセッサおよびＡＳＩＣを搭載すること、つまり集積化が必然的に行われる。
【００１１】
しかし集積化により、単位チップ面積当たりのＣＭＯＳ回路規模を表すトランジスタ数が増加し、ＬＳＩが大負荷容量化し、スイッチング電流による消費電力が増加する。２０１０年辺りでは１チップ当りプロセッサやＡＳＩＣの搭載数が数十個から百個前後と見込まれており、電源電圧が飽和状態になりながらも低くなっていくのとは反対に、前記スイッチング電流やリーク電流の合計である消費電流は１チップに搭載するプロセッサやＡＳＩＣの搭載数に比例して増加の一途を辿っていくと考えられる。
【００１２】
今後、ディジタルＬＳＩの微細化および集積化に起因した低電圧、大電流時代において解決すべき問題が主に２つ、発生しつつある。一つはディジタルＬＳＩ自体が熱の発生源となって生じる熱設計電力問題、もう一つはディジタルＬＳＩ自体が電磁雑音の発生源となって生じる電磁雑音対策問題である。
【００１３】
熱設計電力問題は、熱計算式を用いてディジタルＬＳＩのパッケージを設計する際に伴う問題である。ディジタルＬＳＩが駆動している、していないに関わらず、電流が消費した分、消費電力は熱に変換し、ディジタルＬＳＩ自身のチップ温度を上昇させる。
【００１４】
チップ温度には動作保証温度の範囲が存在し、前記温度範囲を超えるとディジタルＬＳＩは誤動作し、最悪の場合は、ＣＭＯＳ回路が破損して動作不可能に陥ることがある。パーソナルコンピュータなどではＬＳＩ近傍に冷却ファンを設置することでチップ温度の上昇を抑制している。
【００１５】
しかし前記冷却ファンは騒音となるのでディジタル家電への実装は好まれない。またヒートシンクなど、熱を拡散させる経路をパッケージに設けて、同様にチップ温度の上昇を抑制している例もある。
【００１６】
今後、ディジタルＬＳＩに対して微細化且つ集積化を施していくと消費電流の増加と共に前記チップ温度も上昇し、前記チップ温度が前記動作保証温度の範囲を超す恐れがあり、問題となる。
【００１７】
また電磁雑音対策問題は、ディジタルＬＳＩから前記ディジタルＬＳＩを搭載するボードに至るまでの半導体集積回路装置全体のシステム設計に関わる問題である。電磁雑音は、ボードに搭載されるディジタルＬＳＩと電池までも含む、全電源配線回路の抵抗成分で起こる消費電流の直流成分電圧の値と、前記全電源配線回路で形成されるインダクタンス成分で起こる消費電流の交流成分電圧変化の値の合計値である。
【００１８】
前記直流成分電圧の値は前記全電源配線回路の抵抗の値Ｒと消費電流の値Ｉの積ＩＲに相当する。また、前記交流成分電圧変化の値は前記全電源配線回路のインダクタンスの値Ｌと消費電流の単位時間当たりの変化率ｄＩ／ｄｔの積Ｌ（ｄＩ／ｄｔ）に相当する。
【００１９】
電磁雑音には、許容できる動作電圧マージンが存在し、動作電圧マージンは前記電源電圧の約５％に相当する電圧とされている。
【００２０】
しかし微細化に伴い、電源電圧は飽和状態ではあっても低くなっているので動作電圧マージンも小さくなる。一般的に電磁雑音は前記動作電圧マージンの範囲内に収める必要がある。
【００２１】
もし電源雑音が動作電圧マージンの範囲を超すと、本来一定であるべき電源電圧や接地電位が激しく変動するなど、電力品質（Ｐｏｗｅｒ  Ｉｎｔｅｇｒｉｔｙ）が悪化する。
【００２２】
そして同時に各回路間の信号品質（Ｓｉｇｎａｌ  Ｉｎｔｅｇｒｉｔｙ）も悪化し、ＬＳＩが誤動作し、最悪の場合は不要輻射、つまり不要な電磁波の発生により、ＥＭＩ（Ｅｌｅｃｔｒｏｍａｇｎｅｔｉｃ  Ｉｎｔｅｒｆａｃｅ）が許容値を超えてしまって環境問題となる。
【００２３】
今後、ディジタルＬＳＩに対して微細化且つ集積化を施していくと消費電流や消費電流の時間変化率が増加し易くなり、今後小さくなっていく前記動作電圧マージンの範囲を前記電磁雑音が超してしまう恐れがある。
【００２４】
従って、微細化および集積化によって小型薄型軽量化および多機能化を維持しながらディジタルＬＳＩを生産するには、今後増加していく消費電流が主要素と成る前記チップ温度を前記動作保証温度の範囲内に、さらに同じく主要素と成る電源雑音を動作電圧マージンの範囲内に抑制する為、半導体集積回路装置の最大電力以内で電力の供給が可能な電力予算値を予め設定しておき、前記電力予算値の範囲内でアプリケーション仕様を満足することが可能な機構、工夫をディジタルＬＳＩに施す必要がある。
【００２５】
一般的に消費電流を小さくする技術として２つの技術が考えられる。一つは、ディジタルＬＳＩに搭載される複数のプロセッサやＡＳＩＣに対して、電源電圧を断つ電源遮断や動作クロックを断つ動作クロック遮断などを施す電力ゲーティング技術で、もう一つは同じく前記プロセッサやＡＳＩＣに対して、電源電圧ないし動作周波数を制御する電力コントロール技術である。
【特許文献１】特開平８−１５２９４５号公報
【発明の開示】
【発明が解決しようとする課題】
【００２６】
本願発明者などは本願に先立って、前記ディジタル家電を対象に特許文献１の従来技術である消費電力管理装置について検討した。特許文献１は、前記電力コントロール技術を用い、前記電力予算値以内でアプリケーション仕様を満足させることを特徴とした消費電力管理装置に関する特許である。また特許文献１では前記電力ゲーティング技術の使用も範疇になっている。課題抽出に先立ち、特許文献１について説明する。
【００２７】
図２１は、特許文献１の図４に記載の消費電力管理装置の構成図であり、図２２は、特許文献１の図２に記載の消費電力管理装置の構成図である。
【００２８】
機能ブロック１１１は、現在の負荷状況から必要な電力を要求する。情報集計装置１０４は、各機能ブロックからの要求電力を加算集計する。供給電力分配決定装置１０２は、加算集計された電力の総和が供給可能な電力値以内の場合は、電力分配装置１０５に指示して各機能ブロックに電力要求を出力し、電力の総和が供給可能な電力値を超えた場合には、予め定められた方法によって電力分配方法を決定し、電力分配装置１０５に指示して各機能ブロックに供給可能な電力を電力分配方法に従って分配し出力する。
【００２９】
このような構成の消費電力管理装置による消費電力管理技術では、以下の課題が残されている。
【００３０】
まず、第一の課題として、例えば機能ブロック１１１が処理内容を柔軟に変えることが可能なプロセッサの場合、電力値の固定化が図れるＡＳＩＣとは異なり、処理内容つまりタスク毎に前記要求電力が異なることで電力分配２０３の組合せが多く複雑になってしまい、電力分配候補表装置２０２の実装が困難になってしまうという問題がある。
【００３１】
また、消費電力管理装置４０１は、所望の複数の機能ブロック１１１が動作しても電力分配候補表装置２０２、選択装置２０４および分配装置２０６を搭載し、適切な電力分配２０３で電力分配装置１０５を設定することにより、前記電力予算値以内に前記電力供給制御を可能としている。
【００３２】
しかし、第二の課題として、例えば処理の過程で電力分配装置１０５が低電源電圧且つ低動作周波数つまり低く電力を供給した前記機能ブロックが所定の処理を満足して終了した場合、前記優先度と前記電力分配方法の内容が不明な為、電力分配装置１０５に高い電力を供給することができずに今後常に高速処理状態に戻せないという恐れが生じる。
【００３３】
また処理の過程で総要求電力が電力予算値を超えた場合、例えばある優先度に従ってある機能ブロック１１１に対して前記電力ゲーティング技術を使って前記総要求電力を低くした場合、前記機能ブロック１１１の処理が前記消費電力管理装置４０１に止められている為、前記消費電力管理装置４０１が前記機能ブロック１１１を放置しておくと後々動作することができず、アプリケーション仕様のデッドラインを満たせないという恐れが生じる。
【００３４】
従って前記優先度に基づいて停止状態にある前記機能ブロック１１１に対して時間を設定して前記停止状態を解除して電力を供給することなどの作業が必要である。
【００３５】
第三の課題は、前記消費電力管理装置４０１の消費電力も総要求電力に加えることである。
【００３６】
前記ディジタルＬＳＩを１つのディジタルＬＳＩで実現する場合、前記消費電力管理装置４０１も含めた総要求電力を電力予算値以内する必要が生じる。
【００３７】
また、第四の課題は、電源ＩＣの許容電力以内に前記ディジタルＬＳＩの最大電力値を制限することである。
【００３８】
多くの機能ブロックの同時駆動による急激な大総要求電力のサンプリングを前記消費電力管理装置が逃してしまう、つまり電力予算値との比較のタイミングがずれてしまうと、電源ＩＣの許容電力を超してしまい、十分な電力が各機能ブロックに供給できず、処理が破綻し不具合が生じる。
【００３９】
従って精度高く前記許容電力以内に電力のマージンを見積もって前記最大電力を制限することが必要である。
【００４０】
第五の課題は、機能ブロックのある集合がアイドル状態にあるか判別することである。
【００４１】
前記ディジタルＬＳＩを１つの半導体集積回路装置で実現する場合、機能ブロック毎に電源電圧分配装置を設けることが理想であるが、ディジタルＬＳＩのチップ面積の肥大化を抑える為、相関のある機能ブロックの集合に対して電源電圧分配装置を割り当てて実装することが多々ある。
【００４２】
そこで前記集合に属する機能ブロックの全てがアイドル状態になっていることが分れば、前記集合に所属の機能ブロックに対して纏めて電源電圧の遮断を施せ、低消費電力化の実現が可能となる。
【００４３】
第六の課題は、機能ブロック１１１が複数搭載しても前記消費電力管理装置以外の機能ブロックでも電力を設定できるようにすることである。
【００４４】
機能ブロック１１１がプロセッサやコントローラとしてみなした場合、通常、機能ブロックを動かすソフトウェアから電力分配装置１０５の電源電圧の値や動作周波数の設定を換えることができており、例えば機能ブロックが所定の処理を終えてアイドル状態に入る際に前記ソフトウェアの設定により、前記機能ブロック自ら停止状態にすることができ、低消費電力の実現が可能になる。
【００４５】
しかし特許文献１における消費電力管理装置４０１では、該消費電力管理装置でしか電力の設定ができないので、機能ブロックから電力を設定できる仕掛けが必要となってしまうことになる。
【課題を解決するための手段】
【００４６】
本願において開示される主な発明の要点は以下のとおりである。
【００４７】
半導体集積回路装置は、単数ないし複数の機能ブロックと、機能ブロックの総要求電力を管理して各機能ブロックの供給電力を決定する消費電力管理装置と、機能ブロック毎および消費電力管理装置に動作クロックを供給する動作クロック分配装置と、機能ブロック毎および消費電力管理装置に電源電圧を供給する電源電圧分配装置と、機能ブロックおよび消費電力管理装置における消費電力構成要素信号を集計して総要求電力に換算する電力換算装置と、機能ブロックおよび消費電力管理装置が読み書きできるＲＡＭなどの揮発性半導体メモリと、機能ブロックおよび消費電力管理装置が読めるＲＯＭなどの不揮発性半導体メモリと、タイマで構成し、それぞれをバスで繋ぎ、データ送受信を可能にする。
【００４８】
全ての機能ブロックに対して識別子を付け、前記機能ブロックと前記消費電力管理装置が読み書き可能なＲＡＭ領域に相当するローカルメモリ領域上に、前記識別子と前記機能ブロック上で動作するタスクに割り当てたタスクの優先度と、機能ブロックが高電源電圧、高速動作クロックで動作する高電力モードまたは低電源電圧、低速動作クロックで動作する低電力モードまたは停止状態とする停止モードを表す電力モード値と、前記低電力モードまたは前記停止モードの持続時間を表す電力モード時間をパラメータとして格納するリストを設け、前記リストと連結可能な、前記タスクのスケジュールを管理する単数ないし複数の機能ブロック対応リンクリスト（機能ブロック管理用リンクリスト）と、現在高電力モードで実行中の機能ブロックを管理する電力管理用リンクリストと、現在停止モードで停止中の機能ブロックを管理するサスペンド用リンクリストと、現在低電力モードで実行中の機能ブロックを管理する低電力管理用リンクリストを用意する。
【００４９】
ある機能ブロックを利用する際には、前記機能ブロックの識別子に対応する機能ブロック対応リンクリストに、前記機能ブロック上で動作するタスクの前記優先度と前記識別子と高電力モードを表す電力モード値と電力モード時間を書き込んだリストを前記優先度の高い順番に挿入して連結し、同時に電力管理用リンクリストに全ての前記機能ブロック対応リンクリストの先頭リストを前記優先度の低い順に連結する。
【００５０】
もし前記総要求電力が電源ＩＣの許容電圧からマージン電圧を引いた値に相当する電力予算値を超えない場合は電力分配装置の設定は不動にする。
【００５１】
反対にもし超えて且つ電力供給を停止してもアプリケーション仕様に悪影響を及ぼさない場合は、タイマを管理する時間管理部に停止モードを表す電力モード値と電力モード時間を設定し、電力管理用リンクリストの先頭リストに前記電力モード値と前記電力モード時間を格納し、電力管理用リンクリストから前記先頭リストを外し、外した前記先頭リストに格納の識別子に対応した機能ブロックに供給している動作クロックや電源電圧を前記電力分配装置で遮断して前記機能ブロックを停止モードにさせ、外した前記先頭リストをサスペンド用リンクリストに前記優先度の高い順に連結する。
【００５２】
同じくもし超えて且つ電力供給を停止してもアプリケーション仕様に悪影響を及ぼす場合は、時間管理部に低電力モードを表す電力モード値と電力モード時間を設定し、電力管理用リンクリストの先頭リストに前記電力モード値と前記電力モード時間を格納し、電力管理用リンクリストから前記先頭リストを外し、外した前記先頭リストに格納の識別子に対応した機能ブロックに供給している動作クロックや電源電圧を前記電力分配装置で下げて前記機能ブロックを低電力モードにさせ、外した前記先頭リストを低電力用リンクリストに前記優先度の高い順に連結する。
【００５３】
またある機能ブロックの利用が終了した際には、サスペンド用リンクリストの先頭リストに格納の識別子に対応した機能ブロックに供給している動作クロックや電源電圧を前記電力分配装置で上げて、前記先頭リストを外して前記電力管理用リンクリストに低い優先度順に再挿入すると同時に、低電力用リンクリストの先頭リストに格納の識別子に対応した機能ブロックに供給している動作クロックや電源電圧を前記電力分配装置で上げ、前記先頭リストを外して前記電力管理用リンクリストに低い優先度順に再挿入した後、終了した前記機能ブロック対応リンクリストの先頭リストを削除する。
【００５４】
前記時間管理部に設定した前記電力モード時間経過後に前記時間管理部から出力される前記電力モード値が停止モードを表していれば、サスペンド用リンクリストの先頭リストに格納の識別子に対応する電力分配装置の動作クロックや電源電圧の遮断を解除し、サスペンド用リンクリストから前記先頭リストを外して電力管理用リンクリストに再挿入する。
【００５５】
同じく前記電力モード値が低電力モードを表していれば、低電力用リンクリストの先頭リストに格納の識別子に対応する電力分配装置を動作クロックや電源電圧を上げて、低電力用リンクリストから前記先頭リストを外して電力管理用リンクリストに再挿入する。
【００５６】
以上、提案する手段のうち、ローカルメモリ上に前記機能ブロック対応リンクリスト、前記電力管理用リンクリスト、前記サスペンド用リンクリストおよび前記低電力用リンクリスト等の線形リンクリストを設けることにより、電力分配候補表のような機能ブロックの数および電力分配が固定された表では不可能であったスケーラブルな機能ブロックの追加および削除に対しても、また前記機能ブロックがプロセッサでオペレーティングシステム（以下、ＯＳとする）によってタスクがスケーラブルに追加および削除されても、柔軟に容易に実装および運用を図ることができ、これにより第一の課題を解決することができる。
【００５７】
そして提案する手段のうち、前記識別子と情報処理装置に対して割り当てたタスクの優先度と、機能ブロックが高電源電圧、高速動作クロックで動作する高電力モードまたは低電源電圧、低速動作クロックで動作する低電力モードまたは停止状態とする停止モードを表すモード値と、前記低電力モードまたは前記停止モードの持続時間を表すモード時間をパラメータとして格納するリストを、前記機能ブロック対応リンクリスト、前記電力管理用リンクリスト、前記サスペンド用リンクリストおよび前記低電力用リンクリストで管理することにより、一旦、前記機能ブロックが前記停止状態や前記低電力状態になっても、前記モード時間後に電力分配装置に高い電力を供給することができるので、第二の課題を解決することができる。
【００５８】
さらに同じく提案する手段のうち、半導体集積回路装置を単数ないし複数の前記機能ブロックと、前記消費電力管理装置と、前記動作クロック分配装置と、前記電源電圧分配装置と、前記電力換算装置と、前記揮発性半導体メモリと、前記不揮発性半導体メモリで構成してそれぞれをバスで繋ぎ、データ送受信を可能にすることで、機能ブロックおよび消費電力管理装置から自分自身の電力を設定できる仕組みと、該消費電力管理装置の消費電力も総要求電力に加える仕組みを設けることが可能となり、第三の課題ならびに第六の課題を解決することができる。
【００５９】
またさらに、前記消費電力管理装置は、電源、例えば前記電源ＩＣの許容電力から電力マージン値を引いた値である電力予算値と前記総要求電力との比較により、前記総要求電力を前記許容電力以下になるように管理する。前記電力予算値とすることで、精度よく、前記許容電力以内に前記総要求電力を収めることが可能となり、第四の課題を解決することができる。
【００６０】
最後に相関のある機能ブロックの集合に対して前記電源電圧分配装置を割り当てている場合、前記集合の全ての機能ブロックの識別子に対応する機能ブロック対応リンクリストに前記リストが連結されているかどうかの判別を行うことにより、全ての前記識別子に対応する前記電源電圧分配装置で電源電圧を遮断することが可能となり、第五の課題を解決することができる。
【００６１】
本発明の目的は、単数ないし複数の機能ブロックの総要求電力を供給可能な電力予算値内に管理するように機能ブロックの実行スケジューリングを行うことにより、低消費電力で安定動作を実現することのできる技術を提供することにある。
【００６２】
本発明の前記ならびにそのほかの目的と新規な特徴については、本明細書の記述および添付図面から明らかになるであろう。
【発明の効果】
【００６３】
本願において開示される発明のうち、代表的なものによって得られる効果を簡単に説明すれば以下のとおりである。
【００６４】
半導体集積回路装置に搭載の機能ブロックのスケーラブルな追加および削減に対して柔軟に容易に実装および運用することが可能となり、低消費電力効果および安定動作を達成することができる。
【発明を実施するための最良の形態】
【００６５】
以下、本発明の実施の形態を図面に基づいて詳細に説明する。なお、実施の形態を説明するための全図において、同一の部材には原則として同一の符号を付し、その繰り返しの説明は省略する。
【００６６】
図１は、本発明の代表例のハードウェア構成の実施例を説明する図である。
【００６７】
半導体集積回路装置５０１は単数ないし複数の機能ブロック５０２と、クロックパルス発生装置５０３と、動作クロック分配装置５０４と、電源装置５０５、電源電圧分配装置５０６と、電力換算装置５０７と、消費電力管理装置５０８と、Ｉ／Ｏ装置５０９と、ＲＯＭ（不揮発性半導体メモリ）５１０と、ＲＡＭ（揮発性半導体メモリ）５１１、タイマ５１２、およびバス５１３で構成される。
【００６８】
機能ブロック５０２、動作クロック分配装置５０４、電源電圧分配装置５０６、電力換算装置５０７と、消費電力管理装置５０８と、Ｉ／Ｏ装置５０９と、ＲＯＭ５１０、ＲＡＭ５１１、およびタイマ５１２はバス５１３を介して接続されている。
【００６９】
図２は、機能ブロックとバスの関係を説明する図である。
【００７０】
機能ブロック５０２は、ＡＳＩＣ、アクセラレータなどの専用回路や、プロセッサ、ＤＳＰ、ＦＰＵ、およびＦＰＧＡなどのＲＯＭ５１０、ＲＡＭ５１１に格納したソフトウェアに従ってプログラマブルに命令制御、データ処理などを実施する汎用回路に相当する。それぞれの機能ブロックには割込み受付装置５１４を内蔵する。
【００７１】
バス５１３は、機能ブロック５０２で発行する命令を実行する命令制御線５１５および機能ブロック５０２がＲＯＭ５１０、ＲＡＭ５１１で読み書きを実施するデータ転送線５１６で構成するが、本明細書では説明し易くする為、さらに単数ないし複数の割込み受信線５１７、割込み発信線５１８も構成に加える。
【００７２】
また機能ブロック５０２には消費電力構成要素信号５１９を測定する電力センサ５２０を実装する。電力センサ５２０は逐次、電力換算装置５０７に消費電力構成要素信号５１９を転送する。電力センサ５２０は例えばＣＭＯＳ回路のスイッチング回数などを計測するパフォーマンスカウンター、熱量を測る温度センサ、消費電流や電圧を測る電力モニタ、などに相当する。
【００７３】
図３は、電力換算装置を説明する図である。
【００７４】
電力換算装置５０７は、電力変換装置５２１と加算器５２２と総要求電力格納レジスタ５２３で構成する。
【００７５】
電力変換装置５２１は、消費電力構成要素信号５１９を機能要求電力値に変換する。加算器５２２は、全ての機能要求電力値を合計して得られた総要求電力を総要求電力格納レジスタ５２３に逐次、格納する。
【００７６】
図４は、クロックパルス発生器と動作クロック分配装置を説明する図である。
【００７７】
クロックパルス発生装置５０３は例えば水晶子として実装し、パルス５２４を発生する。
【００７８】
動作クロック分配装置５０４は、全ての機能ブロック５０２と消費電力管理装置５０８に対応したＰＬＬ（Ｐｈａｓｅ  Ｌｏｃｋｅｄ  Ｌｏｏｐ）回路５２５、分周器５２６、動作クロック遮断装置５２７、動作周波数状態制御レジスタ５２８で構成する。
【００７９】
動作クロック分配装置５０４はクロックパルス発生装置５０３で発生したパルス５２４をＰＬＬ５２５で逓倍化し、その結果を分周器５２６で動作クロック５２９に変換して、各機能ブロック５０２に出力する。
【００８０】
動作周波数状態制御レジスタ５２８は設定に従って所定の機能ブロック５０２に対する動作クロック５２９を遮断する。また同じく動作周波数状態制御レジスタ５２８のビットパターンの設定に従ってＰＬＬ５２５および分周器５２６を変更して所望の動作周波数を機能ブロック５０２に供給する。
【００８１】
図５は、電源装置と電源電圧分配装置を説明する図である。
【００８２】
電源装置５０５は例えば電池電圧５３０を電源電圧５３１に変換する電源ＩＣとして実装し、電源電圧５３１を機能ブロック５０２と消費電力管理装置５０８に供給する。また電源回路の系統として、電源装置５０５の他に電源スイッチ５３２を機能ブロック５０２に実装する。
【００８３】
電源電圧分配装置５０６は、電源スイッチ５３２を設定する電源スイッチレジスタ５３３を有し、電源スイッチレジスタ５３３のビットパターンを設定することにより、所定の機能ブロック５０２の電源スイッチ５３２をＯＮまたはＯＦＦにする電源スイッチ制御信号５３４を送り、電源電圧５３１を供給したり遮断したりする。
【００８４】
図６は、本発明の代表的な消費電力管理装置の実施例を説明する図である。
【００８５】
消費電力管理装置５０８は、命令解読装置５３５、割込み受付装置５１４、割込み発生装置５３６、時間管理装置５３７、リスト登録装置５３８、リスト解除装置５３９、電力予算値取得装置５４０、事象処理装置５４１、および電力センサ５２０から構成される。また消費電力管理装置５０８には、バス５１３とタイマ５１２を繋ぐ。
【００８６】
図が複雑になる為、記述はしないが、タイマ５１２は機能ブロック５０２の同種類とする。タイマ５１２は動作クロック分配装置５０４から入力した動作クロック５２９をタイマイベント５４２に変換する。
【００８７】
割込み受付装置５１４はタイマイベント５４２でタイマ割り込みがあったことを時間管理装置５３７に知らせる。
【００８８】
時間管理装置５３７はタイマイベント５４２の入力の度にシステム時刻メモリ５４３に１ずつ加算し、タイマ割込み回数をカウントする。
【００８９】
また時間管理装置５３７は、機能ブロック５０２から所定の周期時間をカウントダウンメモリＡ５４４ａに設定することにより、タイマイベント５４２の度にカウントダウンメモリＡ５４４ａから１ずつ減算していって０になった時に周期イベント５４５ａを発生し、事象処理装置５４１に起動をかけ、自動的にカウントダウンメモリＡ５４４aに前記周期時間の再設定、周期イベント５４５ａを繰り返す。
【００９０】
さらに時間管理装置５３７は、機能ブロック５０２から所定のアラーム時間をカウントダウンメモリＢ５４４ｂに設定することにより、タイマイベント５４２の度にカウントダウンメモリＢ５４４ｂから１ずつ減算していって０になった時にアラームイベントを発生し、事象処理装置５４１に起動をかける。
【００９１】
事象処理装置５４１は、総要求電力値取得装置５４５、電力予算値レジスタ５４６、減算器５４７、比較器５４８、電力正常処理部５４９、電力異常処理部５５０、および電力遮断処理部５５１で構成する。
【００９２】
事象処理装置５４１が起動すると、命令解読装置５３５は総要求電力値取得装置５４５に対して、電力換算装置５０７の総要求電力格納レジスタ５２３からバス５１３経由で前記総要求電力を取得し総要求電力値取得装置５４５に格納する。
【００９３】
次に事象処理装置５４１は減算器５４７で電力予算値レジスタ５４６に格納の電力予算値から総要求電力値取得装置５４５に格納の前記総要求電力を引き算した減算結果を比較器５４８に入力する。
【００９４】
比較器５４８は前記減算結果が０以上かどうかを判別する。もし前記減算結果が０以上ならば電力正常処理部５４９に、反対にマイナスならば電力異常処理部５５０に実行を移す。
【００９５】
最後に電力正常処理部５４９および電力異常処理部５５０の実行後、電力遮断処理部５５１に実行を移す。
【００９６】
消費電力管理装置５０８は、機能ブロック５０２からの割込みを割込み受付装置５１４が受け取ると、命令解読装置５３５に実行を移す。
【００９７】
命令解読装置５３５は割込み要因の種類によって、リスト登録装置５３８、リスト解除装置５３９、電力予算値取得装置５４０、時間管理装置５３７の何れかに実行を移す。
【００９８】
リスト登録装置５３８およびリスト解除装置５３９は処理終了直後に、事象処理装置５４１に対して起動イベント５５２をかける。
【００９９】
割込み発生装置５３６は電力正常処理部５４９で用いる。
【０１００】
図７は、機能ブロックと消費電力管理装置を動かすソフトウェアを説明する図である。
【０１０１】
また本明細書では機能ブロック５０２間におけるマスタとスレーブの関係は、マスタ機能ブロックはスレーブ機能ブロックに命令を下し、スレーブ機能ブロックはスレーブ機能ブロックの所定の処理終了後にマスタ機能ブロックに対して割込みを発生し、マスタ機能ブロックは前記割込みを受け付ける、と定義する。
【０１０２】
またタスクの定義を、マスタ機能ブロック上で動作するＯＳが管理するスレッドまたはプロセスと、スレーブ機能ブロックとする。つまりスレッド、プロセスおよびスレーブ機能ブロック単位がタスク単位となる。但し、スレーブ機能ブロック上にＯＳが搭載した場合はスレーブ機能ブロックが単位ではなく、スレーブ機能ブロック上で動作するスレッドまたはプロセスがタスク単位となる。
【０１０３】
従って図７の機能ブロックＡ５０２ａはマスタ、機能ブロックＢ５０２ｂはスレーブ、という関係となる。また機能ブロックＡ５０２ａと消費電力管理装置５０８との関係はお互いにマスタ、またはスレーブとなる。
【０１０４】
消費電力管理装置５０８は、前記専用回路、前記汎用回路のどちらで実装しても構わないが、以降では前記汎用回路、つまりプロセッサを用いることを想定して説明を続ける。
【０１０５】
機能ブロックＡ５０２ａ上で動作するソフトウェアは、ＯＳ＿A５５３ａ、機能ブロックＡ用ソフトウェア５５４、機能ブロックＢ制御ソフトウェア５５５、電力設定ソフトウェア５５６、機能ブロック間通信ソフトウェア５５７、およびアプリケーションソフトウェア５５８で構成し、消費電力管理装置５０８上で動作するソフトウェアは、ＯＳ＿X５５３ｘ、電力設定ソフトウェア５５６、機能ブロック間通信ソフトウェア５５７、および電力管理アプリケーションソフトウェア５５９で構成する。
【０１０６】
アプリケーションソフトウェア５５８は、ＯＳ＿A５５３ａが管理するスレッド５６０で構成し、スレッド５６０からＯＳ＿Ａ５５３ａのシステムコールＡ５６１ａ、機能ブロックＡ用ソフトウェア５５４の機能ブロックＡ用アプリケーションプログラミングインターフェース（以下、ＡＰＩとする）５６２、機能ブロックＢ制御ソフトウェア５５５の機能ブロックＢ制御ＡＰＩ５６３、電力設定ソフトウェア５５６の電力設定ＡＰＩ５６４、および機能ブロック間通信ソフトウェア５５７の機能ブロック間通信ＡＰＩ５６５を呼び出し、アプリケーション仕様を実現する。
【０１０７】
同じく電力管理アプリケーションソフトウェア５５９は、ＯＳ＿X５５３ｘが管理するスレッド５６０で構成し、その内の電力管理スレッド５６６からＯＳ＿X５５３ｘのシステムコールX５６１ｘ、電力設定ＡＰＩ５６４、および機能ブロック間通信ＡＰＩ５６５を呼び出し、電力管理アプリケーション仕様を実現する。
【０１０８】
スレッド５６０および電力管理スレッド５６６は、ＯＳ＿A５５３ａおよびＯＳ＿X５５３ｘが提供するシステムコールＡ５６１ａ、システムコールＸ５６１ｘを呼び出すことで、スレッド管理、時間管理、同期非同期通信、などの機能を実現する。
【０１０９】
同じく、機能ブロックＡ用ソフトウェア５５４が提供する機能ブロックＡ用ＡＰＩ５６２を呼び出すことで、機能ブロックＡ５０２ａで所定の処理を実施する。
【０１１０】
同じく、機能ブロックＢ制御ソフトウェア５５５が提供する機能ブロックＢ制御ＡＰＩ５６３を呼び出すことにより、機能ブロックＢ５０２ｂの実行を実施する。
【０１１１】
同じく、電力設定ソフトウェア５５６が提供する電力設定ＡＰＩ５６４を呼び出すことにより、機能ブロック５０２に対する電力の設定、つまり動作クロック、電源電圧の遮断、供給、および動作周波数を設定する。
【０１１２】
同じく、機能ブロック間通信ソフトウェア５５７が提供する機能ブロック間通信ＡＰＩ５６５を呼び出すことにより、機能ブロック５０２の間でデータを互いに転送し合う機能を実現する。
【０１１３】
また電力設定ソフトウェア５５６、機能ブロック間通信ソフトウェア５５７、および電力管理スレッド５６６は、ＲＯＭ５１０の一部である特定プログラムメモリ５６７に格納する。
【０１１４】
さらに電力設定ソフトウェア５５６、機能ブロック間通信ソフトウェア５５７、および電力管理スレッド５６６は、消費電力管理装置５０８で読み書き可能なＲＡＭ５１１の一領域である特定ワーキングメモリ５６８を用いて所定の処理を行う。
【０１１５】
特定ワーキングメモリ５６８をデータ処理に用いる。その他のソフトウェアは、特定プログラムメモリ５６７以外のＲＯＭ５１０内にマッピングし、データ処理は特定ワーキングメモリ５６８以外のＲＡＭ５１１領域を用いる。
【０１１６】
図８は、特定ワーキングメモリの構成の実施例を説明する図である。
【０１１７】
特定ワーキングメモリ５６８は、機能ブロック間通信用構造体５６９、リストプール５７０、機能ブロック数の単数ないし複数の機能ブロック用番兵５７１、電力管理用番兵５７２、サスペンド用番兵５７３、および低電力用番兵５７４で構成する。
【０１１８】
機能ブロック間通信用構造体５６９は、命令識別子メモリ５７５と単数ないし複数の通信パラメータメモリ５７６を格納するメモリブロックとする。
【０１１９】
リストプール５７０は、リンクリストに対して提供するリスト５７７の集合体である。またリスト５７７は、タスク管理ポインタメモリ５７８、電力管理ポインタメモリ５７９、タスク優先度メモリ５８０、機能ブロック識別子メモリ５８１、電力モード値メモリ５８２および電力モード時間メモリ５８３と言ったパラメータを格納する動的メモリブロックとする。
【０１２０】
機能ブロック用番兵５７１、電力管理用番兵５７２、サスペンド用番兵５７３、および低電力用番兵５７４はリスト５７７と同じメモリフォーマットであるが、リストプール５７０からは提供されない静的なメモリブロックとする。
【０１２１】
また機能ブロック用番兵５７１、電力管理用番兵５７２、サスペンド用番兵５７３、および低電力用番兵５７４はリスト５７７を用いてそれぞれ、機能ブロック用リンクリスト、電力管理用リンクリスト、サスペンド用リンクリスト、および低電力用リンクリストを管理する。
【０１２２】
機能ブロック用リンクリストは機能ブロック５０２のタスク管理を行う。機能ブロック用番兵５７１のタスク管理ポインタメモリ５７８には先頭リストのアドレスを格納すると同時に、機能ブロック用番兵５７１のアドレスは後尾リストのタスク管理ポインタメモリ５７８に格納される。
【０１２３】
先頭リストのタスク優先度が最高優先で、後尾リストのタスク優先度が最低優先となるように、先頭リストと後尾リストの間に高優先度順にリスト５７７をタスク管理ポインタメモリ５７８で繋ぐ。また同じタスク優先度のリスト５７７を連結する場合はＦＩＦＯ（Ｆｉｒｓｔ  Ｉｎ  Ｆｉｒｓｔ  Ｏｕｔ： 先入れ先出し）順に繋ぐ。
【０１２４】
電力管理用リンクリストは前記総要求電力の管理を行う。電力管理用番兵５７２の電力管理ポインタメモリ５７９には先頭リストのアドレスを格納すると同時に、電力管理用番兵５７２のアドレスには後尾リストの電力管理ポインタメモリ５７９に格納する。
【０１２５】
先頭リストのタスク優先度が最低優先で、後尾リストのタスク優先度が最高優先となるように、先頭リストと後尾リストの間に電力管理ポインタメモリ５７９を用いて低優先度順にリスト５７７を繋ぐ。また同じタスク優先度のリスト５７７を連結する場合はＦＩＦＯ順に繋ぐ。
【０１２６】
サスペンド用リンクリストは動作クロック分配装置５０４における動作クロックの遮断および供給の管理を行う。サスペンド用番兵５７３の電力管理ポインタメモリ５７９には先頭リストのアドレスを格納すると同時に、電力管理用番兵５７２のアドレスは後尾リストの電力管理ポインタメモリ５７９に格納される。
【０１２７】
先頭リストのタスク優先度が最高優先で、後尾リストのタスク優先度が最低優先となるように、先頭リストと後尾リストの間に電力管理ポインタメモリ５７９を用いて高優先度順にリスト５７７を繋ぐ。また同じタスク優先度のリスト５７７を連結する場合はＦＩＦＯ順に繋ぐ。
【０１２８】
低電力処理用リンクリストは動作クロック分配装置５０４における動作周波数の管理を行う。低電力用番兵５７４の電力管理ポインタメモリ５７９には先頭リストのアドレスを格納すると同時に、電力管理用番兵５７２のアドレスは後尾リストの電力管理ポインタメモリ５７９に格納される。
【０１２９】
先頭リストのタスク優先度メモリ５８０が最高優先で、後尾リストのタスク優先度メモリ５８０が最低優先となるように、先頭リストと後尾リストの間に電力管理ポインタメモリ５７９を用いて高優先度順にリスト５７７を繋ぐ。また同じタスク優先度のリスト５７７を連結する場合はＦＩＦＯ順に繋ぐ。
【０１３０】
以下に電力設定ＡＰＩ５６４および機能ブロック間通信ＡＰＩ５６５の詳細について説明する。
【０１３１】
なお、使用プログラミング言語仕様はＡＮＳＩ  Ｃを想定するが、他のプログラミング言語でも構わない。ＡＰＩの形式は関数形式とする。
【０１３２】
説明に先立ち、消費電力管理装置５０８をプロセッサで実現し、電力管理スレッド５６６、ＯＳ＿X５５３ｘ、電力設定ソフトウェア５５６、および機能ブロック間通信ソフトウェア５５７で構成するものとする。つまり消費電力管理装置５０８の命令解読装置５３５、割込み受付装置５１４および割込み発生装置５３６はプロセッサ、時間管理装置５３７はＯＳ＿Ｘ５５３ｘの時間管理機能を用いる。
【０１３３】
電力設定ＡＰＩ５６４としては、動作クロック分配装置５０４の動作周波数状態制御レジスタ５２８にアクセスして動作周波数の設定を行う電力設定ＡＰＩ１、同じくアクセスして動作クロックの遮断および供給の設定を行う電力設定ＡＰＩ２、電源電圧分配装置５０６の電源スイッチレジスタ５３３にアクセスして電源電圧の遮断および供給の設定を行う電力設定ＡＰＩ３、電力換算装置５０７の総要求電力格納レジスタ５２３にアクセスして前記総要求電力値を消費電力管理装置５０８にロードする電力設定ＡＰＩ４などを設ける。
【０１３４】
また機能ブロック間通信ＡＰＩ５６５としては、スレッド５６０を生成したことを消費電力管理装置５０８に伝える機能ブロック間通信ＡＰＩ１、スレーブ機能ブロックを動作させたことを消費電力管理装置５０８に伝える機能ブロック間通信ＡＰＩ２、スレッド５６０をこれから削除することを消費電力管理装置５０８に伝える機能ブロック間通信ＡＰＩ３、スレーブ機能ブロックの動作が終了したことを消費電力管理装置５０８に伝える機能ブロック間通信ＡＰＩ４、マスタ機能ブロックから前記電力予算値を設定する機能ブロック間通信ＡＰＩ５、マスタ機能ブロックから事象処理装置５４１に対する周期イベントの前記周期時間を設定する機能ブロック間通信ＡＰＩ６、などを設ける。
【０１３５】
図９は、機能ブロック間通信ＡＰＩ１および機能ブロック間通信ＡＰＩ２のフローチャートの図である。
【０１３６】
機能ブロック間通信ＡＰＩ１は、プログラマーまたはＯＳ＿Ａ５５３ａが設定するスレッド５６０のタスク優先度、機能ブロックA５０２ａの機能ブロック識別子、機能ブロック間の通信が同期か非同期かを設定する通信モード値、機能ブロックを前記高電力モード、前記中電力モード、または前記低電力モードの何れかを設定する電力モード値、および電力モード値の持続時間を表す電力モード時間を引数として設定する。
【０１３７】
第１処理（ステップＳ５８４）は、機能ブロック間通信用構造体５６９の命令識別子メモリ５７５に自分の命令に対応する命令識別子、通信パラメータメモリＡ５７６ａに前記タスク優先度、通信パラメータメモリＢ５７６ｂに機能ブロック識別子、通信パラメータメモリＣ５７６ｃに前記通信モード値、通信パラメータメモリＤ５７６ｄに前記電力モード値、および通信パラメータメモリＥ５７６ｅに前記電力モード時間をそれぞれ格納する。
【０１３８】
第２処理（ステップＳ５８５）は、機能ブロックＡ５０２ａから消費電力管理装置５０８に割込みをかける。
【０１３９】
次に前記通信モードが同期かどうか判別し、同期ならば第３処理（ステップＳ５８６）へ移行する。
【０１４０】
第３処理（ステップＳ５８６）は、電力設定ＡＰＩ２を用いてマスタ機能ブロックである機能ブロックＡ５０２ａの動作を停止させる。
【０１４１】
機能ブロック間通信ＡＰＩ２でも同様にプログラマーが設定するスレッド５６０のタスク優先度、機能ブロックＢ５０２ｂの機能ブロック識別子、機能ブロック間の通信が同期か非同期かを設定する通信モード値、機能ブロックを前記高電力モード、前記中電力モード、または前記低電力モードの何れかを設定する電力モード値、および電力モード値の持続時間を表す電力モード時間を引数として設定し、第１処理（Ｓ５８４）、第２処理（Ｓ５８５）、第３処理（Ｓ５８６）を同様に行う。
【０１４２】
但し第３処理（ステップＳ５８６）で、電力設定ＡＰＩ２を用いて動作を停止させるのはスレーブ機能ブロックである機能ブロックＢである。
【０１４３】
図１０は、機能ブロック間通信ＡＰＩ３および機能ブロック間通信ＡＰＩ４のフローチャートの図である。
【０１４４】
機能ブロック間通信ＡＰＩ３は、機能ブロックA５０２ａの機能ブロック識別子を引数として設定する。
【０１４５】
第４処理（ステップＳ５８７）は、機能ブロック間通信用構造体５６９の命令識別子メモリ５７５に自分の命令に対応する命令識別子、通信パラメータメモリＡ５７６ａに前記機能ブロック識別子をそれぞれ格納し、第２処理（ステップＳ５８５）を実施する。
【０１４６】
同様に機能ブロック間通信ＡＰＩ４でも、機能ブロックＢの機能ブロック識別子を引数として設定し、第４処理（ステップＳ５８７）後、第２処理（ステップＳ５８５）を実施する。
【０１４７】
図１１は、機能ブロック間通信ＡＰＩ５のフローチャートを説明する図である。
【０１４８】
機能ブロック間通信ＡＰＩ５は、前記電力予算値を引数として設定する。
【０１４９】
第５処理（ステップＳ５８８）は、機能ブロック間通信用構造体５６９の命令識別子メモリ５７５に自分の命令に対応する命令識別子、通信パラメータメモリＡ５７６ａに前記電力予算値をそれぞれ格納し、第２処理（ステップＳ５８５）を実施する。
【０１５０】
図１２は、機能ブロック間通信ＡＰＩ６のフローチャートの図である。
【０１５１】
機能ブロック間通信ＡＰＩ６は、前記周期時間を引数として設定する。
【０１５２】
第６処理（ステップＳ５８９）は、機能ブロック間通信用構造体５６９の命令識別子メモリ５７５に自分の命令に対応する命令識別子、通信パラメータメモリＡ５７６ａに前記電力予算値をそれぞれ格納し、第２処理（ステップＳ５８５）を実施する。
【０１５３】
図１３は、消費電力管理装置上の機能ブロック間通信ソフトウェアのフローチャートを説明する図である。
【０１５４】
消費電力管理装置５０８の割込み受付け装置５１４で割込みを受け付けると、機能ブロック間通信ソフトウェア５５７は第７処理（ステップＳ５９０）として、命令解読装置５３５を介して機能ブロック間通信用構造体５６９にアクセスする。
【０１５５】
次に機能ブロック間通信用構造体５６９の命令識別子メモリ５７５から前記命令識別子を読み込み、所望の機能ブロック間通信ＡＰＩ５６５に対応する処理を第８処理（ステップＳ５９１）から第１３処理（ステップＳ５９６）の中から選択する。
【０１５６】
つまり、もし前記命令識別子が機能ブロック間通信ＡＰＩ１を表していたら第８処理（ステップＳ５９１）、機能ブロック間通信ＡＰＩ２を表していたら第９処理（ステップＳ５９２）、機能ブロック間通信ＡＰＩ３を表していたら第１０処理（ステップＳ５９３）、機能ブロック間通信ＡＰＩ４を表していたら第１１処理（ステップＳ５９４）、機能ブロック間通信ＡＰＩ５を表していたら第１２処理（ステップＳ５９５）、機能ブロック間通信ＡＰＩ６を表していたら第１３処理（ステップＳ５９６）に処理を移す。
【０１５７】
図１４は、リスト登録時の機能ブロック用リンクリストを説明する図である。
【０１５８】
第８処理（ステップＳ５９１）はリスト登録装置５３８に相当する。
【０１５９】
先ずリストプール５７０からリストＡ５７７ａを確保して、機能ブロック間通信用構造体５６９の通信パラメータメモリＡ５７６ａに格納の値をリストＡ５７７ａのタスク優先度メモリ５８０に、通信パラメータメモリＢ５７６ｂに格納の値を同じく機能ブロック識別子メモリ５８１に、通信パラメータメモリＤ５７６ｄに格納の値を同じく電力モード値メモリ５８２に、および通信パラメータメモリＥ５７６ｅに格納の値を同じく電力モード時間メモリ５８３に格納する。
【０１６０】
そして機能ブロック識別子メモリ５８１の値に対応する機能ブロック用番兵Ｂ５７１ｂが管理する機能ブロック用リンクリストに、タスク管理ポインタメモリ５７８を用いてリスト５７７をタスク優先度順およびタスク優先度が同じ場合にはＦＩＦＯ順に挿入する。
【０１６１】
例えば機能ブロック用番兵Ｂ５７１ｂにリストＢ５７７ｂが連結されている場合、リストＡ５７７ａが先頭リストであるリストＢ５７７ｂのタスク優先度よりも高い場合は機能ブロック用番兵Ｂ５７１ｂの次に挿入してリンクし、反対に低い場合および同じタスク優先度の場合は後尾リストとしてリストＢ５７７ｂの後に挿入してリンクする。
【０１６２】
図１５は、リスト登録時の機能ブロック用リンクリストと電力管理用リンクリストを説明する図である。
【０１６３】
第８処理（ステップＳ５９１）では機能ブロック用リンクリストにリストＡ５７７ａを挿入後、さらにリストＡ５７７ａを電力管理用番兵５７２が管理する電力管理用リンクリストに電力管理ポインタメモリ５７９を用いて、タスク優先度の低い順およびタスク優先度が同じ場合にはＦＩＦＯ順に挿入する。
【０１６４】
リストＡ５７７ａを前記機能ブロック用リンクリストおよび電力管理用リンクリスト挿入後、事象処理装置５４１に起動イベント５５２をかけて第８処理（Ｓ５９１）が完了する。
【０１６５】
また第９処理（ステップＳ５９２）も第８処理（ステップＳ５９１）と同様のリスト登録処理となる。
【０１６６】
図１６は、リスト削除時の機能ブロック用リンクリストと電力管理用リンクリストを説明する図である。
【０１６７】
第１０処理（ステップＳ５９３）はリスト削除装置５３９に相当する。
【０１６８】
先ず機能ブロック間通信用構造体５６９の通信パラメータメモリＡ５７６ａの値である機能ブロック識別子に対応する機能ブロック用番兵Ｃ５７１ｃが管理する機能ブロック用リンクリストの先頭のリストＣ５７７ｃのタスク管理ポインタメモリ５７８を外す。
【０１６９】
次に外したリストＣ５７７ｃの機能ブロック識別子メモリ５８１に格納の値に対応するリストＣ５７７ｃの電力管理ポインタメモリ５７９を前記電力管理用リンクリストから外し、リストＣ５７７ｃをリストプール５７０に戻す。
【０１７０】
図１７は、リスト削除時の電力管理用、サスペンド用、低電力用リンクリストを説明する図である。
【０１７１】
第１０処理（ステップＳ５９３）は次に、サスペンド用番兵５７３が管理するサスペンド用リンクリストおよび低電力用番兵５７４が管理する低電力用リンクリストにもし先頭リストが存在する場合、つまりサスペンド用番兵５７３にリストＤ５７７ｄ、または低電力用番兵５７４にリストＥ５７７ｅがリンクされている場合、前記サスペンド用リンクリストからリストＤ５７７ｄのタスク管理ポインタメモリ５７８を外す。同様に前記低電力用リンクリストからリストＥ５７７ｅのタスク管理ポインタメモリ５７８も外す。
【０１７２】
反対に、もしリンクされているリスト５７７が存在しない場合は何も施さない。
【０１７３】
最後に電力設定ＡＰＩ２、さらに電力設定ＡＰＩ１を呼び出して、外したリストＤ５７７ｄおよびリストＥ５７７ｅの機能ブロック識別子メモリ５８１に対応する機能ブロック５０２を、動作クロック分配装置５０４で前記高電力モードに設定、つまり最高動作周波数に戻す。
【０１７４】
第１１処理（ステップＳ５９４）も第１０処理（ステップＳ５９３）と同様のリスト削除処理となる。
【０１７５】
第１２処理（ステップＳ５９５）は電力予算値取得装置５４０に相当する。
【０１７６】
機能ブロック間通信用構造体５６９の通信パラメータメモリＡ５７６ａの値である前記電力予算値を電力予算値レジスタ５４６に格納する。
【０１７７】
第１３処理（ステップＳ５９６）は機能ブロック間通信用構造体５６９の通信パラメータメモリＡ５７６ａの値である前記周期時間をＯＳ＿Ｘ５５３ｘの時間管理機能のシステムコールＸ５６１ｘを用いて設定する。
【０１７８】
事象処理（ステップＳ５９７）は電力管理スレッド５６６で実現する。つまり事象処理Ｓ５９７の起動は電力管理スレッド５６６の起動に相当する。
【０１７９】
電力管理スレッド５６９は先ず総要求電力値取得装置５４５に相当する前記電力設定ＡＰＩ４を呼び出して前記総要求電力値をロードする。
【０１８０】
次に電力予算値レジスタ５４６に格納の前記電力予算値から前記総要求電力値を引き、正または０ならば電力正常処理部５４９、負ならば電力異常処理部５５０に実行を移す。
【０１８１】
電力正常処理部５４９は、機能ブロック間通信用構造体５６９の通信パラメータメモリＣ５７６ｃの値である前記通信モード値と通信パラメータメモリＢ５７６ｂの値である機能ブロック識別子をロードする。
【０１８２】
もし前記通信モード値が同期と設定されているならば、前記機能ブロック識別子に対応する機能ブロック５０２に割込み発生装置５３６で割込みをかける。
【０１８３】
図１８は、電力異常処理部を説明する図である。
【０１８４】
電力異常処理部５５０は、先ず前記電力管理用リンクリストの電力管理ポインタメモリ５７９から先頭のリストＦ５７７ｆを外す。
【０１８５】
そしてリストＦ５７７ｆの電力モード時間メモリ５８３の値である電力モード時間をシステムコールX５６１で前記アラーム時間としてＯＳ＿X５５３ｘのアラーム機能に設定する。
【０１８６】
さらに外したリストＦ５７７ｆの電力モード値メモリ５８２がもし停止モードであったら、前記サスペンド用リンクリストにタスク優先度の高い順に挿入した後、電力設定ＡＰＩ２を呼び出し、挿入したリストＦ５７７ｆの機能ブロック識別子メモリ５８１の値に対応する機能ブロック５０２に対して動作クロック５２９を遮断する。
【０１８７】
同じく電力モード値メモリ５８２がもし低電力モードであったら、前記低電力用リンクリストにタスク優先度の高い順に挿入してリンクした後、電力設定ＡＰＩ１を呼び出し、挿入したリストＦ５７７ｆの機能ブロック識別子メモリ５８１に対応する機能ブロック５０２に対応する動作クロック５２９の動作周波数を低くする。
【０１８８】
また前記アラーム時間経過後、前記アラームイベントにより、サスペンド用番兵５７３および低電力用番兵５７４に直にリンクされている先頭リストを電力管理ポインタメモリ５７９から外す。
【０１８９】
そして電力設定ＡＰＩ２、さらに電力設定ＡＰＩ１を呼び出して、外したリスト５７７の機能ブロック識別子メモリ５８１に対応する機能ブロック５０２を、動作クロック分配装置５０４で前記高電力モードに設定、つまり最高動作周波数に戻す。
【０１９０】
図１９は、電力遮断処理部を説明する図である。
【０１９１】
機能ブロックＡ５０２ａ、機能ブロックＣ５０２ｃ、および機能ブロックD５０２ｄが同じ電源スイッチ５３２を共有していると想定する。
【０１９２】
先ず機能ブロック用リンクリストＡ、機能ブロック用リンクリストＣ、および機能ブロック用リンクリストDのそれぞれが空であるか、つまり機能ブロック用番兵５７１のタスク管理ポインタメモリ５７８に自分自身の機能ブロック用番兵５７１の先頭アドレスが格納されているかを検出する。
【０１９３】
もし機能ブロック用リンクリストＡ、機能ブロック用リンクリストＣ、機能ブロック用リンクリストＤの全てが空である場合は、低消費電力化を施すように電源電圧分配装置５０６の電源スイッチレジスタ５３３を設定して、電源スイッチ５３２で電源電圧５３１を遮断する。
【０１９４】
反対に一つでも空でならば、何も施さない。
【０１９５】
勿論、任意の前記機能ブロック用リンクリストが空であれば動作クロック分配装置５０４で動作クロック５２９を遮断する。
【０１９６】
図２０は、電力管理スレッドを機能ブロック上で動作させる実施例を説明する図である。
【０１９７】
本発明は、図２０のように機能ブロック上に電力設定ソフトウェア５５６、機能ブロック間通信ソフトウェア５５７および電力管理スレッド５６６を搭載することにより、図７の実施例と同様の情報処理装置５０１の電力管理が可能である。つまり電力管理スレッド５６６を任意の機能ブロック５０２が持つことで消費電力管理装置５０８を兼ねる。
【０１９８】
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は前記実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。
【産業上の利用可能性】
【０１９９】
本発明は、半導体集積回路装置における電力管理を行い、該半導体集積回路装置を安定した動作で低消費電力化することのできる技術に適している。
【図面の簡単な説明】
【０２００】
【図１】本発明の代表例のハードウェア構成の実施例を説明する図である。
【図２】機能ブロックとバスの関係を説明する図である。
【図３】電力換算装置を説明する図である。
【図４】クロックパルス発生器と動作クロック分配装置を説明する図である。
【図５】電源装置と電源電圧分配装置を説明する図である。
【図６】本発明の代表的な消費電力管理装置の実施例を説明する図である。
【図７】機能ブロックと消費電力管理装置を動かすソフトウェアを説明する図である。
【図８】特定ワーキングメモリの構成の実施例を説明する図である。
【図９】機能ブロック間通信ＡＰＩ１および機能ブロック間通信ＡＰＩ２のフローチャートである。
【図１０】機能ブロック間通信ＡＰＩ３および機能ブロック間通信ＡＰＩ４のフローチャートである。
【図１１】機能ブロック間通信ＡＰＩ５のフローチャートである。
【図１２】機能ブロック間通信ＡＰＩ６のフローチャートである。
【図１３】消費電力管理装置上の機能ブロック間通信ソフトウェアのフローチャートである。
【図１４】リスト登録時の機能ブロック用リンクリストを説明する図である。
【図１５】リスト登録時の機能ブロック用リンクリストと電力管理用リンクリストを説明する図である。
【図１６】リスト削除時の機能ブロック用リンクリストと電力管理用リンクリストを説明する図である。
【図１７】リスト削除時の電力管理用、サスペンド用、低電力用リンクリストを説明する図である。
【図１８】電力異常処理部を説明する図である。
【図１９】電力遮断処理部を説明する図である。
【図２０】電力管理スレッドを機能ブロック上で動作させる実施例を説明する図である。
【図２１】特許文献１の図４に記載の消費電力管理装置の構成図である。
【図２２】特許文献１の図２に記載の消費電力管理装置の構成図である。
【符号の説明】
【０２０１】
５０１  半導体集積回路装置
５０２  機能ブロック
５０３  クロックパルス発生装置
５０４  動作クロック分配装置
５０５  電源装置
５０６  電源電圧分配装置
５０７  電力換算装置
５０８  消費電力管理装置
５０９  Ｉ／Ｏ装置
５１０  ＲＯＭ（不揮発性半導体メモリ）
５１１  ＲＡＭ（揮発性半導体メモリ）
５１２  タイマ
５１３  バス
５１４  割込み受付装置
５１５  命令制御線
５１６  データ転送線
５１７  割込み受信線
５１８  割込み発信線
５１９  消費電力構成要素信号
５２０  電力センサ
５２１  電力変換装置
５２２  加算器
５２３  総要求電力格納レジスタ
５２４  パルス
５２５  ＰＬＬ
５２６  分周器
５２７  動作クロック遮断装置
５２８  動作周波数状態制御レジスタ
５２９  動作クロック
５３０  電池電圧
５３１  電源電圧
５３２  電源スイッチ
５３３  電源スイッチレジスタ
５３４  電源スイッチ制御信号
５３５  命令解読装置
５３６  割込み発生装置
５３７  時間管理装置
５３８  リスト登録装置
５３９  リスト解除装置
５４０  電力予算値取得装置
５４１  事象処理装置
５４２  タイマイベント
５４３  システム時刻メモリ
５４４  カウントダウンメモリ
５４５  総要求電力値取得装置
５４５ａ  周期イベント
５４６  電力予算値レジスタ
５４７  減算器
５４８  比較器
５４９  電力正常処理部
５５０  電力異常処理部
５５１  電力遮断処理部
５５２  起動イベント
５５３  ＯＳ
５５４  機能ブロックＡ用ソフトウェア
５５５  機能ブロックＢ制御ソフトウェア
５５６  電力設定ソフトウェア
５５７  機能ブロック間通信ソフトウェア
５５８  アプリケーションソフトウェア
５５９  電力管理アプリケーションソフトウェア
５６０  スレッド
５６１  システムコール
５６２  機能ブロックＡ用ＡＰＩ
５６３  機能ブロックＢ制御ＡＰＩ
５６４  電力設定ＡＰＩ
５６５  機能ブロック間通信ＡＰＩ
５６６  電力管理スレッド
５６７  特定プログラムメモリ
５６８  特定ワーキングメモリ
５６９  機能ブロック間通信用構造体
５７０  リストプール
５７１  機能ブロック用番兵
５７２  電力管理用番兵
５７３  サスペンド用番兵
５７４  低電力用番兵
５７５  命令識別子メモリ
５７６  通信パラメータメモリ
５７７  リスト
５７８  タスク管理ポインタメモリ
５７９  電力管理ポインタメモリ
５８０  タスク優先度メモリ
５８１  機能ブロック識別子メモリ
５８２  電力モード値メモリ
５８３  電力モード時間メモリ
５９８  機能ブロックＣ用ソフトウェア
５９９  機能ブロックＣ用ＡＰＩ
【図１】
0004764696.tif 000002
【図２】
0004764696.tif 000003
【図３】
0004764696.tif 000004
【図４】
0004764696.tif 000005
【図５】
0004764696.tif 000006
【図６】
0004764696.tif 000007
【図７】
0004764696.tif 000008
【図８】
0004764696.tif 000009
【図９】
0004764696.tif 000010
【図１０】
0004764696.tif 000011
【図１１】
0004764696.tif 000012
【図１２】
0004764696.tif 000013
【図１３】
0004764696.tif 000014
【図１４】
0004764696.tif 000015
【図１５】
0004764696.tif 000016
【図１６】
0004764696.tif 000017
【図１７】
0004764696.tif 000018
【図１８】
0004764696.tif 000019
【図１９】
0004764696.tif 000020
【図２０】
0004764696.tif 000021
【図２１】
0004764696.tif 000022
【図２２】
0004764696.tif 000023