(57)【特許請求の範囲】
【請求項１】
複数の回路ブロックと電力制御回路とを有する半導体集積回路装置であって、
上記複数の回路ブロックのそれぞれは少なくとも第１の状態と第２の状態とを含む複数の動作状態をもち、上記第１の状態における上記回路ブロックはその機能に従って動作し、上記第２の状態においては上記回路ブロックの上記動作が停止され、
上記電力制御回路は、上記複数の回路ブロックの動作状態を決定する際に参照する消費電力の許容値を記憶する記憶手段を有し、上記半導体集積回路装置の電源投入後上記記憶手段に記憶された消費電力の許容値を前記半導体集積回路装置の温度に応じて変化させ、上記消費電力の許容値を超えないように上記複数の回路ブロックの上記動作状態を決定することを特徴とする半導体集積回路装置。
【請求項２】
請求項１記載の半導体集積回路装置において、
上記複数の回路ブロックは、上記第１の状態の動作周波数よりも低い動作周波数で動作する第３の状態を有することを特徴とする半導体集積回路装置。
【請求項３】
複数の回路ブロックと電力制御回路とを有する半導体集積回路装置であって、
上記複数の回路ブロックのそれぞれは少なくとも第１の状態と第２の状態とを含む複数の動作状態をもち、上記第２の状態における上記回路ブロックは上記第１の状態の動作周波数よりも低い動作周波数でその機能に従って動作し、
上記電力制御回路は、上記複数の回路ブロックの動作状態を決定する際に参照する消費電力の許容値を記憶する記憶手段を有し、上記半導体集積回路装置の電源投入後上記記憶手段に記憶された消費電力の許容値を前記半導体集積回路装置の温度に応じて変化させ、上記消費電力の許容値を超えないように上記複数の回路ブロックの動作状態を決定することを特徴とする半導体集積回路装置。
【請求項４】
請求項１乃至３の何れか１項に記載の半導体集積回路装置おいて、
上記電力制御回路は、上記回路ブロックが上記第１の状態において消費する消費電力及び上記第１の状態に遷移する場合に要する消費電力に基づいて、上記回路ブロックの動作状態を決定することを特徴とする半導体集積回路装置。
【請求項５】
請求項１乃至４の何れか１項に記載の半導体集積回路装置おいて、
上記回路ブロックは、リーク電流による消費電力を制御するリーク電流制御回路と、負荷の充放電による消費電力を制御する充放電電力制御回路とを備え、
上記リーク電流制御回路及び上記充放電電力制御回路により、上記回路ブロックの動作状態に対応して上記回路ブロックの消費電力が制御されることを特徴とする半導体集積回路装置。
【請求項６】
請求項５記載の半導体集積回路装置において、
クロック分配系を備え、
上記回路ブロックの上記充放電電力制御回路は、上記回路ブロックに分配されるクロックの周波数を制御することにより、負荷の充放電による消費電力を制御することを特徴とする半導体集積回路装置。
【請求項７】
請求項１乃至６の何れか１項に記載の半導体集積回路装置おいて、
上記記憶手段は、不揮発性メモリであることを特徴とする半導体集積回路装置。
【請求項８】
請求項１乃至７の何れか１項に記載の半導体集積回路装置おいて、
上記複数の回路ブロックの夫々の動作状態における電力値が格納される電力テーブルを更に有することを特徴とする半導体集積回路装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は半導体集積回路装置に係わり、特に高速・低電力動作特性の優れた半導体集積回路装置に関する。
【背景技術】
【０００２】
「デザイン・チャレンジズ・オブ・テクロノジー・スケーリング アイ・イー・イー・イー・マイクロ，  vol.19  no.4  pp.23-29，1999（”Design Challenges of Technology Scaling” IEEE MICRO vol.19 no. 4 pp.23-29，1999）」（以下、文献１と記す）に記載されているように、マイクロプロセッサ等のチップの消費電力は年々増加しており、2000年には100Wを超えるものも多く市販されると予想されている。
【０００３】
また、同じく文献1に記載されているように、消費電力のうちでリーク電流による電力消費も製造プロセスの微細化にともなって指数関数的に増加している。特にサブスレッショルドリーク電流の増加が顕著である。また、サブスレッシュドリーク電流の他にも、「アイデンティファイング・ディフェクツ・イン・ディープサブミクロン・ＣＭＯＳ・ＩＣｓ  アイ・イー・イー・イー・スペクトラム，pp.66-71 September, 1996（”Identifying defects in deep-submicron CMOS ICs” IEEE Spectrum pp.66-71, September, 1996）」（以下、文献２と記す）に記載されているように、製造プロセスの微細化にともなってゲートリーク電流やGIDL(Gate-Induced Drain Leakage)電流等の接合リーク電流も増大している。
【０００４】
上記動作時電力の中で負荷の充放電による電力Pacは、文献１で記載されているように、（動作周波数ｆ）×（負荷容量Ｃ）×（電源電圧Ｖ）×（電源電圧Ｖ）に比例するため、従来は電源電圧を低電圧化して対処している（以下、従来例１と記す）。
【０００５】
また、サブスレッショルドリーク電流による電力消費Pslは、「サブスレッショルドカレント・リダクション・サーキッツ・フォー・マルチギガビット・ＤＲＡＭｓ  シンポジウム・オン・ブイエルエスアイ・サーキッツ・ダイジェスト・オブ・テクニカル・ペーパーズ，pp.45-46, May 1993（”Subthreshold-Current Reduction Circuits for Multi-Gigabit DRAMs”, Symposium on VLSI Circuits Digest of Technical Papers, pp. 45-46, May 1993）」（以下、文献３と記す）で記載されているように、電源ラインと回路との間に電源スイッチを挿入し、回路が待機中にその電源スイッチをオフ状態にし、待機時のサブスレッショルドリーク電流による電力消費を削減する電源スイッチ方式が提案されている（以下、従来例２と記す）。
【０００６】
さらにまた、「５０％  アクティブパワー・セービング・ウィズアウト・スピード・デグラデーション・ユージング・スタンバイ・パワー・リダクション（ＳＰＲ）・サーキッツ  アイ・エス・エス・シー・シー・ダイジェスト・オブ・テクニカル・ペーパーズ， pp. 318-319, 1995（”50% Active-Power Saving without Speed Degradation using Standby Power Reduction (SPR) Circuit”, ISSCC Digest of Technical Papers, pp. 318-319, 1995）」（以下、文献４に記す）で記載されているように、回路を構成しているMOSトランジスタの基板端子の電圧を動作時と待機時とで切り替え、MOSトランジスタのしきい値電圧を動作時と待機時とで切り替え、サブスレッショルドリーク電流を待機時に削減する基板バイアス制御方式が提案されている（以下、従来例３と記す）。
【０００７】
さらに、上記ゲートリーク電流による電力消費Pglは、「サプレッション・オブ・スタンバイ・トンネル・カレント・イン・ウルトラシン・ゲート・オキサイド・ＭＯＳＦＥＴｓ・バイ・デュアル・オキサイド・シックネス・ＭＴＣＭＯＳ（ＤＯＴ−ＭＴＣＭＯＳ）  エクステンディット・アブストラクト・オブ・ザ・１９９９・インターナショナル・コンファレンス・オン・ソリッド・ステート・デバイシーズ・アンド・マテリアルズ，pp. 264-265, 1999（”Suppression of Stand-by Tunnel Current in Ultra-Thin Gate Oxide MOSFETs by Dual Oxide Thickness MTCMOS (DOT-MTCMOS)”, Extended Abstract of the 1999 International Conference on Solid State Devices and Materials, pp. 264-265, 1999）」（以下、文献５と記す）に記載されているように、薄い酸化膜のMOSトランジスタで構成されている回路と、電源ラインの間に厚い酸化膜のPMOSトランジスタを挿入し、回路が待機中にその電源スイッチをオフ状態にして、待機時のゲートリーク電流による電力消費を削減する方式が提案されている（以下、従来例４と記す）。
【０００８】
チップレベルの消費電力を管理する一方法が特開平８−１５２９４５号公報に開示されている。本公知例で開示されている方法は以下の通りである。各機能ブロックはその負荷状況から必要な電力を電力管理装置に要求し、電力管理装置は各機能ブロックからの要求電力を集計してその総和を求める。総和が供給可能な電力値以内であれば要求された電力を出力し、総和が供給可能な電力値を超える場合には機能クロックのクロック周波数、電源電圧を制御して、総和が供給可能な電力値を超えないようにする。しかしながら、本公知例の方法では上記した増大傾向にある待機時電流については考慮されていない。また、電力管理装置は機能ブロックの動作を禁止することはできないので、従来例の方法によって集積できる回路の範囲は限られたものであった。また、電力管理装置は機能ブロックのクロック周波数、電源電圧を制御する際に、その制御自体による電力消費を考慮されていない。このため、従来例の方法によって制御できるチップの電力は限られたものであった。
【０００９】
【非特許文献１】デザイン・チャレンジズ・オブ・テクロノジー・スケーリング アイ・イー・イー・イー・マイクロ，  vol.19  no.4  pp.23-29，1999（”Design Challenges of Technology Scaling” IEEE MICRO vol.19 no. 4 pp.23-29，1999）
【発明の開示】
【発明が解決しようとする課題】
【００１０】
チップに要求される機能の増加にともない、チップに集積されるMOSトランジスタの数や動作周波数も年々増加している。これにともない負荷の充放電による電力Pacも増加している。この電力Pacを従来例１の方法により削減する場合、電力Pacの増加トレンドに対して完全に対応することができない。なぜなら、一般に、低電圧化すればPacを低減できるが、そのときにチップの動作速度を維持あるいは向上するためには、チップを構成しているMOSトランジスタのしきい値電圧を低く設定したり、MOSトランジスタのゲート酸化膜厚を薄膜化する必要があるが、これらによってPslやPglが指数関数的に増加するからである。
【００１１】
上記課題があるものの、Pacの削減には従来例1による方法が最も効果的であり、文献1に記載されているように広く用いられている。これにともなって、文献１や文献２に記載のようにPslやPglは年々増加している。かかるPslとPglの増加の課題に対しては、従来例２から従来例４による方法が提案されているが、これらの方法ではチップの待機時のPslやPglは削減できるが、動作時のPslやPglは削減できない。したがって、サブスレッショルドリーク電流やゲートリーク電流による電力(Psl、 Pgl)が、Pacに対して無視できる量であれば、Pacが零に近くなる待機時のみPslやPglを削減すればよいために、従来例２から従来例４の方法が有効である。しかし、PslやPglがPacに対して無視できないほど大きい場合には、PslやPglが動作時のチップの消費電力に大きな影響を及ぼすことになり、従来例２から従来例４を用いても消費電流を削減することができない。
【課題を解決するための手段】
【００１２】
本願において開示される発明のうち代表的なものの概要を簡単に説明すれば下記の通りである。
【００１３】
そこで、本発明においては各回路ブロックの動作モード、待機モードを統括的に管理、制御する電力制御回路を設ける。この電力制御回路による電力制御を半導体集積回路の全体動作に先だって行うことにより、半導体集積回路の消費電力を制御する（この点、半導体集積回路の全体動作に従って回路ブロックに供給する電力量を制御する特開平８−１５２９４５号公報開示の先行技術と異なる）。
【００１４】
本発明の代表的な構成としては、複数の回路ブロックと電力制御回路とを有し、複数の回路ブロックのそれぞれは少なくとも第１の状態と第２の状態とを含む複数の動作状態をもち、第１の状態においては回路ブロックはその機能に従って動作し、第２の状態においては回路ブロックの動作が停止され、電力制御回路は、複数の回路ブロックのそれぞれの動作状態を半導体集積回路装置の消費電力の許容値を超えないように決定する。
【００１５】
この場合、電力制御回路は複数の動作状態における回路ブロックの電力消費のみならず、状態遷移に伴う電力消費をも考慮して、複数の回路ブロックのそれぞれの動作状態を決定する。ここで、各回路ブロックの電力消費は回路ブロックに供給されるクロック周波数、回路ブロックのリーク電流を制御することで可変とされる。
【００１６】
さらに、この電力制御回路はHDL(Hardware Description Language)等の言語でその回路の機能を記述したデータとして、電子データ格納媒体（例えば、ＣＤ−ＲＯＭのような光学記録媒体、ＦＤのような磁気記録媒体、インターネットあるいはイントラネットを用いたデータ配送）により供給される。これにより、同様に供給される回路ブロックの電子データを利用して半導体集積回路を設計することにより、過去あるいは第三者の設計資産を生かした半導体集積回路の設計が可能になる。
【００１７】
また、各回路ブロックの電力制御を行うための電力制御回路と回路ブロックとの間のインタフェース仕様さらに電力制御回路において各回路ブロック個別の電力制御を行う電力制御モジュールと回路ブロック間での調整を行う電力アービタとの間のインタフェース仕様を確定することにより、設計者は容易に本発明を用いて半導体集積回路装置の設計が可能になる。
【発明の効果】
【００１８】
チップの電力制約から集積できなかった量の低しきい値電圧のMOSトランジスタや薄い酸化膜のMOSトランジスタを同一チップ上に集積することができる。
【発明を実施するための最良の形態】
【００１９】
＜第１の実施の形態＞
図１は、本発明の電力制御方式を用いたチップCHP1の概念的実施例を示す図である。CKT1〜CKTnはサブ回路、MCKTはメイン回路、CHPKNLはチップ統括電力制御部（以下、チップカーネルと呼ぶ）である。DATS1〜DATSnはデータ信号（データ線）、CTLS1〜CTLSnは電力制御信号（電力制御線）、REQS1〜REQSnはリクエスト信号（リクエスト線）、ACKS1〜ACKSnはアクノレッジ信号（アクノレッジ線）である（なお、信号と当該信号を伝達するための配線とは同じ符号であらわすものとする）。メイン回路MCKTは、サブ回路CKT1〜CKTnを以下に示す方式に従って使用し、データ線DATS1〜DATSnを介してデータの授受を行うことで、チップCHP1に要求される機能を実現している。ここで、メイン回路MCKTは、電力制御されない回路であって、各サブ回路CKT1〜CKTnの使用権をもつ回路である。チップCHIP1に電源投入されるとともにメイン回路MCKTはアクティブ状態となり、以下のようにサブ回路CKT1〜CKTnを起動する。メイン回路MCKTがサブ回路CKT1を使用する場合を例に、起動の手順を説明する。
【００２０】
チップCHIP1に電源投入された段階では、メイン回路MCKTはアクティブ状態であり、サブ回路CKT1〜CKTnは消費電力が低減されるよう制御された待機状態にある。待機状態としては、さまざまな態様がありうる（図２に関して後述するSTB状態、SLP状態はここでいう待機状態に含まれる）。消費電力を低減するためには、（１）サブ回路CKT1〜CKTnにクロックを供給しない、（２）電源電圧を供給しない、（３）リーク電流を抑制する等の方法がある。チップの消費電力が許容範囲内に収まる限り、これらの方法を特性に応じて組み合わせて用いればよい。
【００２１】
例えば、電源電圧を供給し、クロックの供給のみを停止するように制御すると、クロック供給のみを再開することで回路動作を再開できるので、回路動作を迅速に再開できる。一方、（２）、（３）の方法を併用する場合には、（１）の方法のみを用いる場合よりもスタティックな消費電力も削減でき、より低消費電力化が可能である。待機状態については、回路ごとに、クロックの供給のみを停止する、クロック及び電源電圧の供給を停止するといったように、その制御方法を異ならせることも可能である。
【００２２】
メイン回路MCKTがサブ回路CKT1を使用する場合、メイン回路MCKTはチップカーネルCHPKNLにリクエスト信号REQS1により、サブ回路CKT1の使用要求を申請する。使用許可はチップカーネルCHPKNLによってアクノレッジ信号ACKS1によりメイン回路MCKTに通知され、またサブ回路CKT1は電力制御信号CTLS1により待機状態から通常動作可能な状態に移行する。メイン回路MCKTはサブ回路CKT1を使用し、このときのデータの授受はデータ線DATS1を介して行われる。アクノレッジ線ACKS1によって使用許可が得られている場合に限り、メイン回路MCKTはサブ回路CKT1を使用することができ、使用許可が得られない限り、メイン回路MCKTはサブ回路CKT1を使用することはできない。
【００２３】
チップカーネルCHPKNLは、サブ回路の使用を開始した場合に予め設定されたチップ許容電力Pmaxを超えるようであればその使用を許可できない。そこで、チップカーネルCHPKNLはサブ回路使用要求に対して、電力制御線CTLS1〜CTLSnを用いて、チップの消費電力が予め設定されたチップ許容電力Pmax以下になるように各サブ回路の動作状態を制御しながら、使用要求されたサブ回路が使用できる状態にする。その後、サブ回路CKT1〜CKTnの使用許可を、アクノレッジ信号ACKS1〜ACKSnによりメイン回路MCKTに与える。
【００２４】
なお、使用要求が許可できない場合には、アクノレッジ信号ACKSをメイン回路MCKTに与えない等により不許可をメイン回路に通知することで、メイン回路MCKTはそのサブ回路の使用を遅らせるか、別のサブ回路の使用を中止してそのサブ回路を優先使用するか判断することができる。また、チップカーネルCHPKNLは待機状態にあるサブ回路のリーク電流を低減することにより、消費電力のマージンを上げることができる。
【００２５】
以下、電力制御信号CTLS1〜CTLSnを用いたサブ回路CKT1〜CKTnの電力制御方法（消費電力の異なる複数の動作状態（待機状態を含む）を作る方法をいう）の実施例を示す。さらに、チップの消費電力が、予め設定されたチップ許容電力Pmax以下になるように各サブ回路の動作状態を制御して使用要求されたサブ回路が使用できる状態にする動作状態制御方法（以下、サブ回路スケジューリングと呼ぶ）の実施例を示す。
【００２６】
図２はサブ回路CKT1〜CKTnの電力制御方法の実施例を示している。G1〜G3はANDゲート、MP1はPMOSトランジスタ、MN1はNMOSトランジスタ、MN2はMN1のゲート酸化膜厚tox1よりも厚いゲート酸化膜tox2を持ち、MN1のしきい値電圧（絶対値）Vth1よりも高いしきい値電圧（絶対値）Vth2であるNMOSトランジスタ、VDDとVSSはそれぞれ正側と負（グランド）側の電源線である。なお、ゲート絶縁膜の厚さは物理的な長さのみならず電気的な長さによって決定される。すなわち、MN1とMN2とを同じ絶縁膜材料で構成してその物理的な絶縁膜厚を異ならせることにより、またはMN1とMN2とで物理的な絶縁膜厚は等しいけれどもそれぞれ誘電率の異なる絶縁膜材料を用いることにより、またはMN1とMN2とで絶縁膜材料、物理的な厚さともに異ならせることにより実現することができる。
【００２７】
LGはサブ回路の機能を実現するための回路であり、ここではフリップフロップFFと、PMOSトランジスタMP1とNMOSトランジスタMN1からなるインバータを例示している。また、回路LGと負側電源線の間にNMOSトランジスタMN2が接続されており、NMOSトランジスタMN2のドレインに接続された配線は仮想接地線VVSSとして回路LGの負側電源線として使用されている。
【００２８】
電力制御信号（電力制御線）CTLSはCTLSa〜CTLScによって構成されている。第１の電力制御信号CTLSaが'H'の場合には、NMOSトランジスタMN2はオン状態となり、回路LGに電源が供給される。また、第１の電力制御信号CTLSaが'L'の場合には、NMOSトランジスタMN2はオフ状態となり、回路LGへの給電が停止される。また、第２の電力制御信号CTLSbが'H'の場合には、ANDゲートG1を介してクロック信号CLKがGCLKに伝播され、回路LG内にクロックが分配される。また、第２の電力制御信号CTLSbが'L'の場合には、ANDゲートG1の出力GCLKは'L'となるため、LG内のクロック分配は停止される。
【００２９】
以下、(CTLSa，CTLSb) = (H'，H')の時をACT状態、(CTLSa，CTLSb) = (H'，L')の時をSTB状態、(CTLSa，CTLSb) = (L'，L')の時をSLP状態と呼ぶ。
【００３０】
ACT状態では、回路LGは給電されているためサブスレッショルドリーク電流やゲートリーク電流等による電力が消費され、さらに、クロックも配分されるために負荷の充放電による電力も消費する。一方、STB状態では、回路LGは給電されているためサブスレッショルドリーク電流やゲートリーク電流等による電力が消費されるが、クロックが配分されないために負荷の充放電による電力は消費されない。また、SLP状態では、回路LGに給電されないためサブスレッショルドリーク電流やゲートリーク電流等による電力は消費されない。また、MN2のしきい値電圧vth2は高く、かつ厚い酸化膜tox2をもつため、NMOSトランジスタMN2のオフ時に大きなゲートリーク電流が流れることがなく、NMOSトランジスタMN2を介して回路LGのサブスレッショルドリーク電流が流れることもない。また当然、クロックも配分されないために負荷の充放電による電力も消費されない。
【００３１】
第３の電力制御信号CTLScは、LGの入力信号INと出力信号OUTに接続されたANDゲートG2およびG3に接続されている。CTLScが'H'の場合、サブ回路CKTの外部から入力された信号INは、ANDゲートG2を介してそのまま信号GINとして回路LGに伝播され、回路LGからの出力OUTもANDゲートG3を介してそのまま出力GOUTとしてサブ回路CKTの外部に出力される。一方、第３の電力制御信号CTLScが'L'の場合、ANDゲートG2及びG3の出力は'L'となり、サブ回路CKTの外部から入力された信号INは回路LGに伝播されず、回路LGからの出力OUTがいかなる電圧であっても、サブ回路CKTの出力GOUTは'L'のままになる。
【００３２】
上記のようなANDゲートG2による入力信号の伝播抑制によって、不必要な信号GINの遷移を防止できる。例えば回路LGにクロックが分配されないSTB状態やSLP状態のような回路LGを使用しないときに第３の電力制御信号CTLScを'L'にすることで、不必要な遷移による電力消費を小さくできる。また、ANDゲートG3による出力信号の固定は、例えば回路LGに給電されないSLP状態のときに信号GOUTの電圧が'H'や'L'以外の不定電圧になることを回避でき、信号GOUTを入力とする回路LGの次段回路の貫通電流等を防止できる。したがって、特に限定しないが、STB状態とSLP状態で第３の電力制御信号CTLScが'L'になるようにすれば効果的であり、その場合、第３の電力制御信号CTLScと第２の電力制御信号CTLSbとは共通化すればよい。
【００３３】
なお、図２のように電源スイッチとして高しきい値・厚酸化膜のNMOSトランジスタMN2を用いた場合、文献５のようにPMOSトランジスタを電源スイッチに用いた場合と比較して以下の効果がある。
（１）電源スイッチがオン時には、電源インピーダンスを下げるためにオン抵抗を小さくする必要がある。NMOSトランジスタは、PMOSトランジスタよりも同じゲート幅で小さなオン抵抗が得られる。
（２）VDDが低電圧化した場合でも、NMOSトランジスタMN2のオン状態時に、NMOSトランジスタMN2のゲート電圧にVDDよりも高い電圧(VDDH)が印加できる。これにより、NMOSトランジスタのオン抵抗を小さくできる。特に、NMOSトランジスタMN2を、チップの外部とのインターフェース回路(I/O回路)で用いる厚酸化膜MOSトランジスタと同じ高耐圧MOSトランジスタで構成すれば、製造プロセスの複雑化を防ぐことができる。またその場合、VDDHをI/O電圧(VDDQ)と同じ電圧にすることができ、VDDHのための電圧発生回路を設ける必要がなくなる。もちろん、「同じトランジスタ」という場合に製造ばらつきによる違いは許容される。
【００３４】
図３は、図２で示した電力制御方法を用いた場合の、サブ回路の消費電力の例を示している。ここでは、サブ回路として、マイクロプロセッサCPUと、浮動小数点演算回路FPU、シグナルプロセッサDSP、通信回路RFを例として用いた。それぞれの回路規模や回路の特性によって、ACT状態、STB状態、SLP状態の三状態によって例えば図３で示されたように消費電力が変化する。もちろん、ACT状態時の電力が最も大きく、その次にSTB状態の電力が大きく、SLP状態では電源が遮断されるためにほとんど電力を消費しない。
【００３５】
図４はACT状態、STB状態、SLP状態の三状態を含むサブ回路CKTの状態遷移図の実施例を示している。SLP状態からSTB状態に遷移する間とSTB状態からACT状態に遷移する間に、それぞれS1とS2で示された中間状態が存在する。これらの中間状態を設けることで各状態の遷移を安定して行うことができる。
【００３６】
例えば、SLP状態からSTB状態への遷移では回路LGへの電源供給が行われる。回路LGの回路規模にも依存するが、一般に回路LGに電源を投入した時には大きな突入電流が流れる。この突入電流は回路LG内の負荷の充電による電流と、充電過程での貫通電流等から成っている(一般にCMOS回路は、入力ノード電圧が正側か負（グランド）側の電源電圧電位以外の電位である場合、大きな貫通電流が流れる)。この突入電流を特性するためには、電源の投入をゆっくりと実行する方法が効果的である。具体的にはMOSトランジスタMN2のゲート信号を小さいスルーレートで'L'から'H'に遷移させる。これによって突入電流を小さく抑えることができ、電源バンプ等を小さくでき、結果的にチップ全体の誤差動をも防ぐことができる。この遷移過程を状態S1として処理する。完全に回路LGへの電力給電が完了したことを検出してから(T2)、STB状態に遷移することで、電源が非安定であることによる誤作動を防ぐことができる。
【００３７】
なお、NMOSトランジスタMN2のゲート信号を小さいスルーレートで'L'から'H'に遷移させた場合、MN2のゲート信号電位をモニタすることで、回路LGの電源供給の完了を検出できる。すなわち、回路LG内のノードの充放電時間よりも遅い時間でMOSトランジスタMN2のゲート信号を遷移させればよい。MOSトランジスタMN2のゲート信号が完全に'H'になった頃には、回路LG内のノードの充電も完了していることになるからである。遅い時間でMOSトランジスタMN2のゲート信号を遷移させるためには、例えば比較的大きな出力インピーダンスのドライバでMOSトランジスタMN2のゲートを駆動すればよい。なお、この方式ではMOSトランジスタMN2のゲートインピーダンスが高くなる。クロストーク等のノイズがこの高インピーダンス配線に悪影響を及ぼす懸念がある場合、MN2のゲート信号電位をモニタしてLGの電源供給の完了を検出した後に、比較的小さな出力インピーダンスのドライバでMOSトランジスタMN2のゲートを駆動し直せばよい。後述する図９の構成例にこのための構成を示す。バッファBUF中のドライバC1、C2、C3が上記のようなMOSトランジスタMN2の駆動方法を実現する回路になっている。ドライバC2が上記比較的大きな出力インピーダンスのドライバであって、まず最初にドライバC2でMOSトランジスタMN2を駆動する。ドライバC1が上記比較的小さな出力インピーダンスのドライバで、ドライバC3はMN2のゲート信号電位をモニタする回路である。
【００３８】
また、上記S1の効果は、STB状態からACT状態の遷移でも同様のことがいえる。例えば、クロック信号の分配に所定時間を要する場合、STB状態からACT状態への遷移に中間状態S2を設けることにより、それに要する時間を吸収する。
【００３９】
なお、図２には図示していないが、デカップリングコンデンサをVDDとVSSの間に接続する方が望ましい。また、デカップリングコンデンサをVDDとVVSSの間に接続すれば、VDDとVSSの間に接続した場合よりもノイズ除去性能は高くなる。ただし、NMOSトランジスタMN2のオン・オフにともなってデカップリングコンデンサに蓄えられている電荷も充放電されることになり、不要な電力を消費することになる。
【００４０】
また、図２で示したMOSトランジスタの基板端子の接続先は、特に図２の接続方法に限定しない。さらに、図２ではNMOSトランジスタMN2を用いた電源スイッチの方法を用いてサブスレッショルドリーク電流を制御しているが、文献４で記述されているような基板バイアス制御の方法を用いてもよい。
【００４１】
また、図３では各サブ回路LGをマイクロプロセッサCPUやシグナルプロセッサDSP等の大きな回路ブロックを仮定したが、特に各サブ回路の回路規模は限定しない。例えば一つの演算器をサブ回路として扱ったり、一つのメモリ回路をサブ回路として扱ってもよい。多くの小規模回路に分割した方が、きめ細かい電力制御ができる。
【００４２】
また、図３では三種類の状態を仮定したが、SLP状態とACT状態の二種類や、STB状態とACT状態の二種類でもよい。さらに４つ以上の状態数を設けてもよい。また、これらの状態数は各サブ回路ごとに設定でき、例えば回路によっては２状態をもつもの、２状態持つものが混在していてもよい。状態数を多く設けた方が、きめ細かい電力制御ができる。
【００４３】
また、状態遷移の方法は図４で示したものには限定されない。チップあるいはサブ回路ごとに最適な状態遷移方法を用いることができる。
【００４４】
図５にサブ回路スケジューリングの実施例を示す。ここでは説明を簡単にするために、チップ許容電力Pmaxを250mWとして、サブ回路CKT〜CKTnまでの回路のトータル電力消費が200mW以下になるように、各サブ回路CKT1〜CKTnの状態を図４の状態遷移に従って遷移させた例を示した。例えば、時刻0ではCKT1はACT状態で、CKT2とCKT4はSTB状態で、CKT3はSLP状態であり、100mWの電力を消費している。ここで、時刻1ではCKT2がACT状態に遷移しており、150mWの電力消費に増加している。サブ回路の電力消費の合計がPmax以下でなるべく小さくなるように各サブ回路の状態を制御している。
【００４５】
サブ回路スケジューリングの具体的な手法としては、例えばMaurice J. Bach著(坂本文 他訳)、 「UNIXカーネルの設計」コンピュータサイエンス誌BIT別冊、共立出版、1990年10月発行（以下、文献6と記す）の211頁から記載されているようなUNIX（登録商標、以下同様）オペレーティングシステムのプロセススケジューリングや、同じく文献6文献の231頁から記載されているようなUNIXオペレーティングシステムのメモリ管理と同様の考え方を用いることができる。すなわち、UNIXオペレーティングシステムではメモリ容量に上限があるというメモリ制約と、CPUの数が限られているために同時に実行できるプロセスの数が制約されるという実行制約から、複数のプロセスのスワップインとスワップアウト等を行って、全てのプロセスが定められたスケジューリング規則に従って実行している。一方、本発明のチップでは、消費電力に上限があるという制約から複数のサブ回路の電力制御を行い、全てのサブ回路が定められたスケジューリング規則に従って実行する。
【００４６】
UNIXオペレーティングシステムにおけるプロセススケジューリングやメモリ管理には多くの手法が存在するが、それぞれのスケジューリング手法を本発明のサブ回路スケジューリングに適用することができる。ここでは特にその方法は限定しない。例えば、UNIXオペレーティングシステムでプロセスがメモリ上に存在（スワップイン状態）して実行中の状態が本発明のACT状態、UNIXオペレーティングシステムでプロセスがメモリ上に存在（スワップイン状態）して実行待ちの状態が本発明のSTB状態、UNIXオペレーティングシステムでプロセスがメモリ上に存在しない状態（スワップアウト状態）が本発明のSLP状態に対応させることができる。
【００４７】
以上で述べたUNIXオペレーティングシステム以外でも、米国マイクロソフト社のウィンドウズ（登録商標）のようなオペレーティングシステムが多く存在するが、それらの方法で使用されているプロセススケジューリング方式やメモリ管理方式も同様に利用できる。μITRONのようなリアルタイムオペレーティングシステムと呼ばれるものも多く存在し、それらのオペレーティングシステムはリアルタイム性を保証するために特別のスケジューリングを行っている。これらも本発明のサブ回路スケジューリングに適用できる。
【００４８】
なお、図５では説明の簡単化のため、サブ回路CKT〜CKTnまでの回路のトータル電力消費が200mW以下になるようなサブ回路スケジューリングの実施例を示した（なお、後で記す図７の実施例の説明でも同様に、電力状態遷移に伴う電力消費は無視している）。しかし、本発明のサブ回路スケジューリングは、チップの消費電力が予め設定されたチップ許容電力Pmax以下になるように、各サブ回路の動作状態を制御しながら、使用要求されたサブ回路が使用できる状態にする必要がある。そのためには各サブ回路の状態遷移にともなう電力消費も考慮する必要がある。特に、電源のオン・オフを伴う遷移では、遷移自体による電力消費が無視できない大きさになることが多い。これは電源の遮断時には、回路内の多くのノードの電荷を放電することになり、電源の投入は前記ノードの電荷を充電することになるからである。
【００４９】
このような多数の遷移による電力増加のオーバヘッドを抑制するためには、遷移頻度を抑制する方法が効果的である。例えば、ある一定時間サブ回路が使用されなかったときだけ、電源がオフされる状態に遷移するようにする。そこで、各サブ回路の動作状態遷移頻度を制約する回路をチップカーネルCHPKNLに設けるか、各サブ回路CKTに動作状態遷移頻度を制約する回路を設ければよい。そのためには、各サブ回路CKTあるいはチップカーネルCHPKNLに、各サブ回路における各動作状態遷移で消費する電力情報を管理格納しておく。例えば、ACT状態からSLP状態またはSTB状態からSLP状態に遷移する場合に、電源を供給したまま消費電力が漸減する（あるいは一定に維持される）ような中間状態を設けておく（このような中間状態の設定が上述の電力情報に相当する）。この中間状態の数は電源のオン・オフを伴う遷移による電力消費が大きい場合には多く、小さい場合には少なく設定しておくことが望ましい。一つの制御の方法を例示すると、サブ回路の使用が終了してACT状態からSTB状態に遷移するにあたり、５つの中間状態（Ｓ１〜５）を順次経由してSTB状態に至るように設定し、かつ中間状態Ｓ５からSTB状態に遷移するときに電源をオフするようにする。これら中間状態の遷移は一定周期で行うようにする。この場合、遷移頻度が大きい場合には、STB状態に遷移してしまう前、すなわち中間状態（例えばＳ３）からACT状態に遷移することになり、電源のオン・オフを伴う電力消費の発生を防止できる。もちろん、動作状態遷移にともなう電力消費が無視できる場合には、動作状態遷移頻度を制約する回路を省略してもよい。
【００５０】
このようにして、各サブ回路CKTの状態遷移時の電力消費を含めて、チップの消費電力がある決められた値以下になるように制御する。また、サブ回路スケジューリングは、チップの消費電力をPmax以下にするようにスケジューリングするだけではなく、チップの処理性能が高くなるように考慮されながら、チップの消費電力をPmax以下のなるべく小さな値になるように制御することが望ましい。
【００５１】
電力制約の仕方は以上に限られない。チップ内に１０個のサブ回路CKT1〜CKT10が存在する場合、その中のｎ個(1≦ｎ≦１０)のサブ回路の消費電力の合計がある値以下になるようにスケジューリングしてもよい。また、サブ回路CKT1〜CKT3の消費電力の合計がある値以下で、かつ、サブ回路CKT4〜CKT10までのサブ回路の消費電力の合計がある値以下となるようにスケジューリングしてもよい。Pmaxを超えない限り、様々な電力制約の方法がなされうる。
【００５２】
かかる本発明のチップ電力制御によって、以下のような効果がある。
（１）本発明のチップでは、チップ全体の回路規模にかかわらずチップの消費電力の合計がPmaxを超えないように制御できるため、消費電流Pac+Psl+Pglの増加を抑制できる。また、サブスレッショルドリーク電流による電力消費Psl等が大きい場合には、従来ではチップを格納するパッケージによっては熱暴走の危険性があった。特に非同期動作を行うと、チップの動作周波数が高熱で高速になるために熱暴走の危険性が高くなる。しかし、本発明を適用することにより、消費電力の上限が方式的に規定されるために、熱暴走を防ぐことができる。
（２）従来のチップでは、最大消費電力はどれだけの規模の回路をどれだけの頻度で動かすかによって依存するため、設計者は、最大消費電力の値をチップの設計前に把握することができなかった。本発明のチップでは、Pmaxを定めることで最大消費電力の値をチップの設計前に決定でき、設計が容易になる。
（３）従来では、チップの消費電力制約が厳しい場合、各サブ回路の設計を多くの設計者に委託することや、多くの別々の設計者で作られたサブ回路を用いて、一つのチップを設計することが困難であった。これは各サブ回路の電力消費が把握し難いことに起因する。本発明のチップでは、リクエスト線REQS1〜REQSn、アクノレッジ線ACKS1〜ACKSn、電力制御線CTLS1〜CTLSnを介したチップカーネルCHPKNLの仕様を公開し、それに基づいて各サブ回路が設計することで、高集積の半導体集積回路の設計が容易になる。
（４）従来のチップでは、電力制約から多くの低しきい値電圧のMOSトランジスタや多くの薄い酸化膜のMOSトランジスタを同一チップ上に集積することができなかった。例えば、しきい値電圧が0.2VのMOSトランジスタを1000万個同一チップ上に集積した場合、サブスレッショルドリーク電流だけで100mA以上になる可能性があり、電力制約が100mA程度の時には、上記の数の低しきい値MOSトランジスタを集積することができなかった。本発明のチップでは、チップのリーク電流を含めた消費電力がPmaxの値に従って制御されるため、例えば先に述べたしきい値電圧が0.2VのMOSトランジスタを1000万個同一チップ上に集積することができる(以下、この集積を仮想集積と呼ぶ)。もちろん、Pmaxの値が小さい場合には、それらのMOSトランジスタをすべての通電して同時に使用することはできないが、同時でなければ全てのMOSトランジスタを使用することができる。特に、サブ回路を構成するトランジスタのしきい値電圧Vth1が0.2V以下の場合や、ゲート酸化膜厚tox1が4nm以下の場合には、サブスレッショルドリーク電流やゲートリーク電流が無視できないために効果的である。
（５）仮想集積が可能になることで、チップの機能を実現するためのMOSトランジスタのしきい値電圧Vth1を従来よりも低く設定でき、さらに酸化膜厚tox1を従来よりも薄く設定できる。これによって、従来よりも高性能なMOSトランジスタ（低しきい値電圧のトランジスタ）を多く使用することができ、チップの動作周波数を従来よりも高くすることができる。本発明ではチップカーネルCHPKNLがサブ回路の動作をある程度制約するために、チップの速度性能の劣化が懸念される。しかし、MOSトランジスタに従来よりも高性能なものを使用することにより、トータルのチップの速度性能を従来よりも高くできる可能性を有する。
【００５３】
＜第２の実施の形態＞
図１で示した実施形態では、メイン回路MCKTが、チップカーネルCHPKNLの管理下のもとで、サブ回路CKT1〜CKTnを使用していた。本実施例では、各サブ回路CKT1〜CKTnの使用権をもつ回路もまた電力制御の対象となる点で第１の実施形態と相違する。この実施形態を図６に示す。
【００５４】
CKT1〜CKT4はサブ回路である。サブ回路CKT3は、サブ回路CKT2とサブ回路CKT4を用いてある機能を実現する。また、サブ回路CKT2は、サブ回路CKT1を用いてある機能を実現する。すなわち、サブ回路CKT3はサブ回路CKT2,CKT4の使用権をもち、サブ回路CKT2はサブ回路CKT1の使用権を有する。また、各サブ回路の使用許可は、図１の実施例の場合と同様に、チップカーネルCHPKNLが統括的に行っている。
【００５５】
本実施形態の別の特徴として、図１で存在していたチップカーネルCHPKNLによって電力が制御されないメイン回路MCKTが存在しない。メイン回路MCKTがない場合には、電源投入時のサブ回路の状態を全て図３で示されるSLP状態にすると、どの回路も動作しないために起動がかからない（永遠にチップが動作を始めない）という問題が生ずる。この問題を回避するためには、例えば電源投入時にACT状態になるサブ回路（以下、ブート回路と呼ぶ）を予め決定しておけばよい。図６に示した構成例においてはブート回路はサブ回路CKT3である。図に示す通り、ブート回路CKT3に対するリクエスト線REQS、アクノレッジ線ACKSは存在しない。電源の投入後、電力制御信号CTLS3によりブート回路CKT3が起動される。ブート回路CKT3は起動後においては、必要に応じて使用権をもつサブ回路CKT2やサブ回路CKT4を起動して所定の機能を実現する。このとき、リクエスト線REQS、アクノレッジ線ACKSによりチップカーネルCHPKNLからサブ回路の使用許可を得る必要があるのは第１の実施の形態と同様である。また、サブ回路CKT2がサブ回路CKT1を使用する場合も同様である。
【００５６】
ここで、使用権を持つ回路（例えば、サブ回路CKT3）を上位の回路、上位の回路に使用される回路（例えばサブ回路CKT3に対してサブ回路CKT2）を下位の回路と定義すると、ブート回路は最上位の回路（すなわち、該サブ回路を使用するサブ回路が存在しないサブ回路）とすることが望ましい。言い換えれば、ブート回路が直接に（例えば、サブ回路CKT2）または間接に（例えば、サブ回路CKT1）使用することのできない回路については、チップカーネルCHPKNLによる電力制御は適用できない。
【００５７】
なお、図１や図６の構成に限らず、サブ回路CKTとメイン回路MCKTの構成は数々の構成が可能である。例えば、メイン回路MCKTを有する構成において、サブ回路CKTを図６のように階層的に構成しても良い。また、上位の回路と下位の回路とは１対１の関係にある必要はなく、１対多、多対１の関係にあってもよい。
【００５８】
＜第３の実施の形態＞
図１や図６に示されるリクエスト線REQS1〜REQSn、アクノレッジ線ACKS1〜ACKSn、電力制御線CTLS1〜CTLSnの物理的な形態や論理的な形態は特に限定しない。
【００５９】
物理的な形態として図２の構成例では、電力制御線CTLS1〜CTLSnはそれぞれ３本の配線CTLSa, CTLSb, CTLScで構成されている。このようにパラレルに電力制御信号を伝送するのではなく、シリアルに伝送することにより１本の配線で電力制御することも可能である。もちろん、電力制御の種類を限定すれば配線数は少なくて済む。
【００６０】
リクエスト線REQS1〜REQSnについても同様である。状態遷移が１種類に限定されていれば（例えばACT状態とSTB状態のみ）、１ビットのリクエスト信号を１本のリクエスト線により伝達することができる。図４の実施例で示したように３つ以上の状態があり、遷移する先が複数ありうる場合には、２ビット以上のリクエスト信号をビット数に応じた複数の配線を用いて各状態への遷移を要求できるようにしてもよい。またさらに、各状態への遷移を要求する際、その遷移の優先度を指定できるようにすることも望ましい。サブ回路スケジューリングは、その優先度にしたがってサブ回路の電力遷移を制御する。チップカーネルCHPKNLは、優先度の高い要求に対して優先的に使用許可を出し、リソースの使用効率が向上する。
【００６１】
リクエスト線REQS1〜REQSn、アクノレッジ線ACKS1〜ACKSn、電力制御線CTLS1〜CTLSnは、まとめてバス構造(以下、電力制御バスと呼ぶ)にして各サブ回路に接続してもよい。サブ回路の数が多い場合には、配線に要する面積を小さくすることができ、当然バス構造の方が拡張性にも優れる。この場合、一つのバス構造に対する、複数のアクセスの競合を回避する必要がある。リクエスト信号REQSは各サブ回路から任意のタイミングで出力されるため、リクエスト線REQS1〜REQSnについては一つの共通するバスで共用できない。ラウインドロビン方式やトークンリング方式を採用する場合、リクエスト信号の到達が遅れる回路が生じるが、設計時の拡張性が高い。あるいは、アクノレッジ線ACKS、電力制御線はCTLSは共通バスにまとめ、リクエスト線REQSはポイント・ツウ・ポイント方式によって接続してもよい。この場合は、どの回路もリクエスト信号が平等にかつ高速にチップカーネルCHPKNLに到達する。
【００６２】
また、電力制御バスとして、従来からチップ内に存在している信号伝播用のオンチップバス(例えば、英国ARM社のAdvanced Microcontroller Bus Architecture (SMBA)などが挙げられる)と一部あるいは全ての信号線を共用することも可能である。
【００６３】
＜第４の実施の形態＞
チップ許容電力Pmaxは、チップの製造時や設計時に決定し、その後は変更しないようにしてもよいし、チップの製造後に変更できるようにしてもよい。変更できるようにするためには、Pmaxをチップ上に集積した不揮発性メモリに格納しておいてもよい。あるいはチップの電源投入時にチップ外部からPmaxの値を読み込むようにしてもよい。また、チップのボンティング仕様やチップ上に形成された配線によるジャンパ切り替えによって決定するようにしてもよい。その他、様々な方法が考えられるがその手法は特に限定しない。
【００６４】
チップ許容電力Pmaxをその設計後に変更できるようにすることで、同じ回路を集積したチップであっても、その実装するパッケージごとに異なる許容電力Pmaxを設定できる。一般に、安価なプラスティックパッケージを用いた場合には、熱抵抗が大きく耐熱性が悪いためにチップの消費電力の許容上限が低い。このような場合には、Pmaxの値を小さくすればよい。また逆に、高価なセラミックパッケージを用いた場合には、Pmaxの値を高くすることができる。Pmaxの値を高く設定すればそれだけ多くのサブ回路を同時に動作させることができるためにチップ性能を向上させることができる。パッケージごとに異なるPmaxを設定することで、チップの性能をパッケージに応じて設定できる。
【００６５】
このようにパッケージの種類に応じてPmaxの値を異ならせることにより、高速バージョンのチップと低電力バージョンのチップが、回路設計を共通にして開発コストを抑制しつつ実現でき、安価かつ容易に多くの品種展開ができる。図７にPmaxの値を図５の実施例の場合よりも小さく設定し、サブ回路の消費電力の合計を150mWに設定した場合の、図５とは異なるサブ回路スケジューリングの実施例を示す。図５では、時刻5で200mWの電力を消費していたが、図７の実施例ではCKT1とCKT4のACT状態への遷移が延期され、結果的に150mW以下で動作が推移している。たとえば、図５を高速バージョンのサブ回路スケジューリングとすれば、図７は低電力バージョンのチップにおけるサブ回路スケジューリングに相当する。このように処理性能と消費電力のバランスを要求されるチップの仕様に応じて変化させることができる。
【００６６】
また、設計後のPmaxの変更は、チップを異なる製造プロセスで作りなおした場合にも有効である。製造プロセスごとに最適なPmaxが設定できる。
【００６７】
さらに、チップ許容電力Pmaxは、チップの電源投入後に動的に変化させてもよい。例えば、Pmaxの値をチップの温度に応じて変化させる。チップ温度が高くなればPmaxを小さくし、チップ温度が低くなればPmaxを大きくする。時間的な遅延はあるものの、チップの温度は消費電力と対応する（Tj＝Ta＋θ×W（Tj：ジャンクション温度、Ta：周辺温度、θ：パッケージの熱抵抗、Ｗ：消費電力））ため、本発明によってチップの温度を管理できる。
【００６８】
また、本発明のチップを電池で駆動している場合には、電池残量によってPmaxの設定値を変化させてもよい。電池残量が多い場合やＡＣコンセントから給電されている場合にはPmaxを大きくする。電池残量が少なくなったらPmaxを小さくする。あるいはＡＣコンセントからの給電が停止された場合にPmaxを小さくしてもよい。電池駆動時間を長くできる。
【００６９】
＜第５の実施の形態＞
各サブ回路の消費電力を考慮してサブ回路スケジューリングを行うためには、チップカーネルCHPKNLは図３で示したように、各サブ回路の各状態における消費電力量を把握している必要がある。把握する方法としては、数々の方法が考えられるが、本発明では特にその方法は限定しない。例えば、チップの設計時に図３の表をチップカーネルCHPKNL内に格納してもよい。また、各サブ回路に各状態時の電力情報を格納し、電源投入時等に、チップカーネルCHPKNLが特定のプロトコルに従ってその電力情報を各サブ回路から読み出してもよい。
【００７０】
＜第６の実施の形態＞
サブ回路スケジューリングは、チップカーネルCHPKNLがリクエスト線REQSを介してサブ回路の使用許可申請を受けてから、なるべく早くにアクノレッジ線ACKSを介して使用許可を与えた方が、チップの処理性能が高くなる。一つの方法としては、状態遷移に時間を要するものについてはそのような状態遷移がなるべく避けるようにスケジューリングする。例えば、図４の状態遷移図の例ではSLP状態への遷移はなるべく避けるようにスケジューリングする。これは、SLP状態からACT状態またはSTB状態への遷移は電源のオンが伴い、電源のオンを伴わないSTB状態からACT状態への遷移と比べて多くの時間を要するためである。このようなスケジューリングを実現するためには、ACT状態（またはSTB状態）からSLP状態に遷移するために経由する中間状態をACT状態からSTB状態に遷移するために経由する中間状態を多く設ければよい。しかし、SLP状態をなるべく使わない方法では、電力の削減効果が小さくなるという課題がある。
【００７１】
電力の削減効果を高めるため、サブ回路が実際に必要になる時刻よりも前に、チップカーネルCHPKNLにそのサブ回路の使用許可予定の申請をしてもよい。チップカーネルCHPKNLはこの使用許可予定の申請を受け取ると、引き続いて使用許可申請がなされたときに、すぐに使用許可を与えられるようにサブ回路の状態をスケジューリングする。このサブ回路スケジューリングによって、チップカーネルCHPKNLがサブ回路の使用許可申請を受けてから使用許可を与えるまでの時間を短くすることができ、チップの処理性能を高くできる。例えば、ある機能を実現するために必要なサブ回路についてあらかじめ使用許可予定の申請によってSLP状態からSTB状態に遷移させておく。その後、サブ回路を使用するときに使用許可の申請によってSTB状態からACT状態に遷移させることで、許可申請がなされた後に比較的早くにサブ回路を使用することができる。
【００７２】
＜第７の実施の形態＞
図２では、NMOSトランジスタMN2（電源スイッチ）を用いてサブスレッショルドリーク電流を制御している。しかし、低消費電力化するための回路構成は図２に示すものに限られない。電源回路を内蔵し、その電源電圧を変化させる方式でもよい。前記のようにCMOS回路の動作時消費電力は電源電圧の２乗に比例するため、低い電源電圧(例えば0.5V)と高い電源電圧(例えば1.2V)で動作する少なくとも二つの状態を設けることでも回路LGの電力を制御できる。
【００７３】
図２の実施例では、MOSトランジスタMN2をオフ状態にしてしまうと、回路LG内のフリップフロップ等の情報記憶素子に格納されている情報が消去されてしまう。これを防ぐ一つの方法として、MOSトランジスタMN2がオフ状態でも上記情報を保持するためのレベルホルダ回路を付加する。例えば、このレベルホルダ回路は、正の電源線VDDと負（グランド）の電源線VSSとの間で動作し、比較的低い駆動力のトランジスタで構成されるラッチ回路として実現できる。また、上記のようにサブ回路の電源電圧として、低い電源電圧と高い電源電圧で動作する少なくとも二つの状態を設ける場合には、低い電源電圧の状態時にサブ回路に与える電源電圧を、サブ回路内のフリップフロップ等の情報記憶素子に格納されている情報が消去されないような電圧値とする（情報が保持できないような低い電圧値にしない）。かかる構成では、レベルホルダ回路が不要になるという効果がある。また、そのような電圧であれば、高い電源電圧の状態への遷移が高速にでき、さらにその遷移に要する電力消費が少なくて済むという効果もある。
【００７４】
また、図２ではANDゲートG1を用いて回路LGに伝播されるクロックのオン・オフを制御している。いわば、図２の制御方法はクロックを所定の周波数のクロック発振と周波数が０のクロック発振とを切り替えているともいえる。これに対して、クロックCLKの周波数を変化させる手段（例えば分周器やフェーズ・ロックド・ループ(PLL)回路）をANDゲートG1の代わりに設置してもよい。前記のようにCMOS回路の動作時消費電力は動作周波数に比例するため、低い動作周波数(例えば10MHz)と高い動作周波数(例えば200MHz)で動作する少なくとも二つの状態を設けることでも回路LGの電力を制御できる。
【００７５】
図８はこのような多様な電力制御を実現できるサブ回路の構成を示したものである（図１を元にした構成例であるが、図６についてもサブ回路は同様の構成になる）。サブ回路CKT1とCKT2はそれぞれ、電力制御回路PWC1、PWC2と、サブ回路の機能を実現する回路LG1、LG2と、サブ回路の外部との通信を行うインターフェース回路IFC1、IFC2とで構成されている。
【００７６】
電力制御回路PWCは、上記のような方法を用いて、サブ回路の負荷の充放電による電力消費とリーク電流による電力消費を、チップカーネルCHPKNLからの電力制御線CTLSの指示にしたがって制御する。上記の電源回路やPLL回路等のクロック周波数可変回路が、電力制御回路PWCの具体的な構成例である。
【００７７】
また、上記のようにサブ回路内の回路LGに供給する電源電圧をサブ回路毎に異なる値にして、サブ回路の電力を制御する場合には、それらのサブ回路CKT間あるいはサブ回路CKTとメイン回路MCKT間でのインターフェースを行う回路が必要となる。電源電圧値の異なるCMOS回路をそのまま接続すると貫通電流等のリーク電流が流れるからである。インターフェース回路IFCはこれらの貫通電流を防ぐために設置する。電源電圧の異なるサブ回路のインターフェース回路IFCに好ましいレベル変換回路の構成例が、特開平11-195975号公報に開示されている。
【００７８】
なお、図２の構成例と図８の構成例との対応は次の通りである。ANDゲートG2及びG3がインターフェース回路IFCに相当し、NMOSトランジスタNM2及びANDゲートG1が電力制御回路PWCに相当する。
【００７９】
＜第９の実施の形態＞
図９にチップカーネルCHPKNLの構成例を示す。バッファBUF1〜BUFnは電力制御線CTLSの駆動回路である。シーケンサSEQ1〜SEQnは図４の例に示したような状態遷移を実現する。電力テーブルPWRTABは、図３の例に示したような各動作状態時の電力値や、各動作状態遷移に必要な電力の値(エネルギー値でも可)が格納されている。バッファBUF1〜BUFnを構成するドライバC1〜C3については第１の実施の形態において説明した。シーケンサSEQ1〜SEQnとバッファBUF1〜BUFnによって、電力制御モジュールPCM1〜PCMnが構成され、各サブ回路毎の動作状態が管理されている。
【００８０】
電力アービタARBITは、各電力制御モジュールPCM1〜PCMn中の電力テーブルPWRTABの値を参照しながら、上記のサブ回路スケジューリングにしたがって各サブ回路の動作状態を制御している。このように、各サブ回路CKT1〜CKTnに対する電力制御は各電力制御モジュールPCM1〜PCMnが行い、電力アービタARBITは、各サブ回路CKT1〜CKTn間での電力消費の調整を行うことで、サブ回路スケジューリングに必要な処理を階層で分散することができ、各階層の設計が容易になるという効果がある。
【００８１】
上記した各サブ回路CKTの動作状態遷移頻度を制約する回路は、電力制御モジュールPCM1〜PCMnで実現する。また、別の例では、サブ回路CKTがある一定以上の時間使用されなかった場合には、そのサブ回路に対応した電力制御モジュールPCMが、電力アービタARBITとは独立して、そのサブ回路の動作状態をより低電力な動作状態になるように変更し、変更後の状態及びその電力消費量を電力アービタARBITに通知する。これにより電力アービタARBITに多くの処理負荷を負わすことなく、チップの消費電力を効率的に削減するサブ回路スケジューリングが実現できる。
【００８２】
＜第１０の実施の形態＞
図１０は、本発明のチップ電力制御を実現する半導体装置の設計フローを示す。ライブラリLG_LIB1は、サブ回路CKTの機能を実現する回路が格納されたライブラリである。すなわち、図９の実施例で示したサブ回路CKTの電力制御モジュールPCMが付加されていないものである。ライブラリPCM_LIB1はLG_LIB1中のサブ回路CKTに対応する電力制御モジュールPCMが格納されたライブラリである。ライブラリLG_LIB2もサブ回路CKTのライブラリであるが、格納されているサブ回路には電力制御モジュールPCMが既に付加されている。ライブラリMC_LIBは図１の実施例で示したメイン回路MCKTが格納されたライブラリである。
【００８３】
LG_LIB1、PCM_LIB1、LG_LIB2、MC_LIBで示された４つのライブラリと、チップカーネルCHPKNLは、例えばその機能がHDL(Hardware Description Language)等の言語でその回路の機能を記述したデータとして格納される。論理合成用セルライブラリCELL_LIBには、論理合成に用いられる各種セル（例えば、AND、OR等の論理ゲートまたは複合論理ゲートのセル）の情報（例えば、各種セルの遅延時間情報）が格納される。設計者はチップ全体に係る論理仕様RTL(特に限定しないが、ここではレジスタ・トランスファ・レベル(RTL：Registor Transfer Level)で記述されているものと仮定した)を作成し、論理仕様RTL、ライブラリに格納された回路データ及びセルの情報からネットリストNETLSTを論理合成(LOG_SYN)する。ネットリストNETLSTはその後、レイアウトされる(LAY)。
【００８４】
上記設計フローによって、そのままでは本発明の電力制御が適用できないようなサブ回路(ライブラリLG_LIB1に格納されたサブ回路)でも、電力制御モジュールPCMを付加することで、本発明の電力制御が適用できるようになる。いわゆるIPプロバイダの供給する多くのIP(Intellectual Property：半導体集積回路に設けられる演算機能や信号制御機能等の機能上のまとまりを単位とする回路ブロック)をチップ設計に取り込むことができ、効率的な設計が可能になる。
【００８５】
電力制御モジュールPCMは各サブ回路毎に作成する必要がある。このためには、電力アービタARBITと電力制御モジュールPCMの間のインターフェース仕様(以下、PSI(Power Scheduling Interface)と呼ぶ)に基づき設計する。PSIには、電力アービタARBITからのコマンドとそのコマンドに対する電力制御モジュールの応答のプロトコルが含まれる。
【００８６】
同様に、論理仕様RTLを設計する設計者は、電力制御モジュールPCMとサブ回路ブロックCKTの間のインターフェース仕様(以下、PMI(Power Managing Interface)と呼ぶ。PMIには、メイン回路MKCTまたはサブ回路ブロックCKTからのリクエスト信号REQSとチップカーネルCHPKNLからのアクノレッジ信号REQSとのプロトコルが含まれる。)を把握し、リクエスト信号REQSとアクノレッジ信号ACKSで制御される各サブ回路を用いた設計ができる。
【００８７】
インターフェース仕様PMIとPSIに基づき、既存の回路ブロックの設計を利用して本発明の電力制御を容易に実現することができる。
【００８８】
＜第１１の実施の形態＞
図１１は、本発明の電力制御を用いたチップ(CHP3)の実施例を示した図である。チップ内の信号伝播用のオンチップバスSBUSに、マイクロプロセッサ(Central Processing Unit)CPU、Long Instruction word方式のマイクロプロセッサVLIW、デジタル信号処理プロセッサ(Degital signal processor)DSP、グラフィックプロセッサ(Graphic processor)GP、MPEG(Moving Picture Experts Group)信号処理回路MPEG、バス制御回路BSC、チップ電力制御回路PMU、USB(Universal Sirial Bus)インターフェース回路USB、IrDA(Infrared Data Association)赤外線通信インターフェース回路IrDA、IEEE1394インターフェース回路IEEE1394、PCI(Peripheral Component Interconnect)インターフェース回路PCI、メモリMEMが接続されている。EXTBUSは外部バスであって、バスコントローラBSCを介してオンチップバスSBUSと接続される。CHP3は、CPU、VLIW、DSP、GP、MPEG等の専用回路とメモリMEMを用いてデータ処理を行い、USB、IrDA、IEEE1394、PCI、BSCを用いてチップ外部とのデータの授受を行う。もちろんこれらの回路ブロックは例示であって、チップCHP3の用途に応じて必要な回路ブロックを搭載する。また、電力制御バスPBUSは本発明の電力制御を実施するためのものである。
【００８９】
チップCHP3の電力制御は以下のように行われる。チップ電力制御回路PMUはチップCHP3の電力状態を制御している回路であり、チップ外部(例えばEXTBUS)からの指示(割り込み処理等)あるいは、CPU等が実行する命令列(スタンバイ命令等)にしたがって、チップ全体の動作状態を制御する。たとえば、チップ全体を高速動作する動作状態や、低速動作する動作状態、あるいは、動作を停止させる待機状態等に制御する(以下、これらのチップ全体の動作状態をチップ動作状態と記す)。チップ電力制御回路PMUはチップカーネルCHPKNLを制御して、上記したような数々のチップ動作状態を実現する。チップ電力制御回路PMUのチップカーネルCHPKNLの制御方法は特に限定しないが、例えばチップカーネルCHPKNL のPmax値を、チップ動作状態に応じて変化させることで実現できる。また、ほとんど全ての回路モジュールはチップカーネルCHPKNLによって、本発明の方法にしたがって電力制御される。なお、チップカーネルCHPKNLは、図１１に示されるように独立の回路ブロックとしてもよく、一部の回路ブロック（例えばCPU）の一部機能として実現することも可能である。
【００９０】
一般に、専用回路は汎用回路よりも消費電力が小さい。専用回路は汎用回路と比較して、ある機能を実現するために無駄な回路が少ないためである。例えばMPEG処理を汎用のマイクロプロセッサで実現するよりも、MPEG処理専用の回路で実現する方が低電力である。本発明のチップでは上記した仮想集積を行えるために、図１１の実施例のように多くの専用回路をチップ上に集積することができ、汎用回路ではなく専用回路で処理することにより、チップの消費電力を大幅に削減できる。
【００９１】
＜第１２の実施の形態＞
本発明のチップは、従来のチップに比べてその消費電流変動を小さくできる。従来のチップでは、チップ全体の消費電力を考慮することなくサブ回路の電力制御を行う。そのため、電力のピーク値（熱設計電力:Thermal Design Power）は平均電力の数倍の大きさになってしまうのが通常である。これに対して本発明のチップでは、チップ全体の消費電力が予め設定されたチップ許容電力Pmaxに制限され、Pmaxの超過を生ぜしめるようなサブ回路の使用は後回しにされる。チップの消費電力に余裕が生じ、当該サブ回路を使用してもPmaxの超過を生じない状況になって初めて、当該サブ回路の使用が許可される。すなわち、本発明の電力制御は、いわば従来のチップにみられた電力消費の山を削り、その削った電力消費量をもって、従来のチップにみられた電力処理の谷を埋めることに相当する。チップ許容電力Pmaxは従来のチップのピーク電力よりも低く、平均電力に近づけることができる。それに伴ってチップの消費電流の時間変動di/dtは緩やかになる。この消費電力の時間変動di/dtは、Ｌdi/dt（Ｌはチップの電源ラインのインダクタンスである）で表される電圧の時間変動dV/dtを生じさせる。したがって、本発明はチップの電圧変動を従来のチップよりも小さく抑制できるという効果をも有する。
【００９２】
さて、第４の実施の形態としてチップ許容電力Pmaxを変更できるようにした実施例を先に示した。ここでは、電圧変動（Ｌdi/dt）を小さくするようにPmaxを変更する制御方法について示す。図１２は、例えばチップの負荷に応じてチップ許容電力Pmaxを３段階に制御する場合を示している。
【００９３】
チップ動作状態１（ST1）は、チップに電源が供給されていないあるいは回路動作が待機・停止している状態であり、例えばPmax＝０とする。チップ動作状態２（ST2）は、チップの処理負荷が小さく、Pmaxが比較的低くても処理遅延が問題にならない状態であり、例えばPmax＝５とする。チップ動作状態３（ST3）は、チップの処理負荷が大きく、Pmaxを高くして処理遅延を抑制する必要のある状態であり、例えばPmax＝１０とする。本実施例は、これらのチップ動作状態の遷移においてPmaxを段階的に変化させるものである。例えば、チップ動作状態１からチップ動作状態２に一度に遷移した場合には一度にｋ個のサブ回路ブロックが動作可能になるとすれば、段階的に制御した場合には一度に動作可能になるサブ回路ブロックの数はｋよりも少なく抑えられる。その結果、電流変動による電圧変動を小さくすることができるものである。
【００９４】
＜第１３の実施の形態＞
本発明のチップの平均電力AVEP、タスク実行時間EXETのPmax依存性の一例を図１３に示す。点線が平均電力を、実線が実行時間を示している。なお、図１３の平均電力にはトランジスタのリーク電流は考慮していない。Pmaxとの依存性の大小によって大きく２つの領域（領域Ａと領域Ｂ）に分けられる。領域ＡではPmaxが変化しても、平均電力AVEP、実行時間EXETの変化はほとんど見られない。一方、領域ＢではPmaxを小さくするにつれて、平均電力AVEPは小さくなり、実行時間EXETは大きくなる。領域Ａは、チップ許容電力Pmaxによって、一部のサブ回路の使用が後回しになる状態が生じても、電力に余裕のあるときに、その時間帯に使用すべきサブ回路とともに後回しになった一部のサブ回路の使用をも許可することにより、タスク全体としての実行時間の遅延はほとんど生じないで済んでいる状態である。一方、領域Ｂは、ほぼ常にチップ許容電力Pmaxに近い状態で動作しており、サブ回路の使用の後回しが、タスク全体としての実行時間にかなり反映されてしまう状態である。領域Ａと領域Ｂの境界となるチップ許容電力Pmaxは、チップ許容電力が∞の場合の平均電力AVEP(∞)付近の値となる（図１３の例では１０Ｗ）。なぜならば、チップ許容電力PmaxをAVEP(∞)以下にするならば、タスク全体としての実行時間は延びざるを得ず、チップ許容電力Pmaxの制限はそのまま消費電力の低下につながるためである。
【００９５】
上述のように、リーク電流及び電力制御のための消費電力分を除外して算出した平均電力AVEPと実行時間EXETの積で計算されるタスク全体の処理に要する消費エネルギーは、Pmaxには依存しない。
【００９６】
一方、リーク電流はオフ状態のトランジスタを流れる電流でありタスクの処理とは無関係に生じる。しかしながら、第１の実施の形態において図５に関連して述べたように、本発明においては各サブ回路は動作状態遷移頻度に応じて低消費電力モードに遷移するように構成できる。この構成を採用する場合には、Pmaxを小さくすることによってタスクの処理時間が長くなり、動作しないサブ回路はリーク電流を制限する低消費電力モードに移行することができ、リーク電流による電力消費も削減することができる。したがって、リーク電流を考慮した場合Pmaxを小さくすればタスクの処理時間が長くなり、タスク全体の処理に要する消費エネルギーは小さくなる。
【００９７】
そこで、第１２の実施の形態と同様の動作状態を設ける場合、Pmaxをチップ許容電力が∞の場合の平均電力AVEP(∞)（すなわちチップ全体の消費電力に応じたタスクの処理制御を行わない場合の平均電力）と関連づけて定める。なお、このAVEP(∞)の大きさはチップのシステム構成によって主に決定され、タスクの内容によって大きく変わることはない。
【００９８】
チップ動作状態２（ST2）においてはチップが低消費電力で動作することを重視し、Pmax(ST2)の値は領域Ｂの値で、例えばPmax＝5Wとする。チップ動作状態３（ST3）においてはチップが最小の動作速度劣化で低消費電力で動作することを重視し、Pmax(ST3)の値は領域Ａの値で、例えばPmax＝10Wとする。このように（Pmax(ST3)−AVEP(∞)）の絶対値が（Pmax(ST2)−AVEP(∞)）の絶対値より小さくなるようにPmaxの値を制御することにより、リーク電流によるチップの消費エネルギーへの影響を小さくすることができる。
【００９９】
以上、本発明者によりなされた発明を実施例に基づき具体的に説明したが、本発明は前記実施例に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。例えば図１で示された回路の具体的構造やレイアウト構造は、種々の実施形態を取ることができる。この発明は、チップ上に集積された全ての回路が同時に電源投入あるいは動作させると、チップあるいはシステムの許容電力を超えるような、チップあるいはそれを使用したシステムに対して、広く利用できるものである。
【０１００】
また、チップの消費電力を資源として統括管理する方法を示したが、統括管理する資源はチップの消費電力に限られない。例えば、リコンフィギャラブルな構成のチップ（チップ製造後に電気的あるいは物理的に結線状態を変更することで、同一トランジスタあるいはゲートを異なった機能を実現するための部品として使用できるように構成されているチップ）において、チップに集積したトランジスタ、ゲートあるいは配線を資源として統括管理することもできる。
【図面の簡単な説明】
【０１０１】
【図１】本発明のチップの実施例を示す図である。
【図２】本発明の電力制御方式の実施例を示す図である。
【図３】本発明の電力制御方式を用いた場合のサブ回路の状態の電力テーブルを示す実施例である。
【図４】サブ回路の動作状態の状態遷移図を示す実施例である。
【図５】サブ回路スケジューリングの例を示す実施例である。
【図６】本発明のチップの実施例を示す図である。
【図７】サブ回路スケジューリングの例を示す実施例である。
【図８】図１の実施例をより具体的に図示した図である。
【図９】図１のチップカーネルCHPKNLをより具体的に図示した図である。
【図１０】設計フローの実施例を示した図である。
【図１１】本発明の電力制御を用いたチップの実施例を示した図である。
【図１２】Pmaxを段階的に変化させて、チップ動作状態を遷移させた場合を例示した図である。
【図１３】本発明のチップの平均電力(AVEP)と実行時間(EXET)のPmax依存性の例を示した図である。
【符号の説明】
【０１０２】
CHPKNL  チップカーネル
CKT1〜CKTn  サブ回路
MCKT  メイン回路
CTLS1〜CTLSn、CTLSa、CTLSb、CTLSc  電力制御線
DATS1〜DATSn  データ線
REQS1〜REQSn  リクエスト線
ACKS1〜ACKSn  アクノレッジ線
VDD  正側電源
VSS  負側電源(接地)
VVDD  仮想接地線
MN1  低しきい値・薄ゲート酸化膜NMOSトランジスタ
MP1  低しきい値・薄ゲート酸化膜PMOSトランジスタ
MN2  高しきい値・厚ゲート酸化膜NMOSトランジスタ
FF  フリップフロップ
G1、G2、G3  ANDゲート
PWC1、PWC2  電力制御回路
IFC1、IFC2  インターフェース回路
LG、LG1、LG2  回路
BUF1〜BUFn  電力制御線の駆動回路
SEQ1〜SEQn  シーケンサ
ARBIT  電力アービタ
PWRTAB  電力テーブル
PCM1〜PCMn  電力制御モジュール
CPU  マイクロプロセッサ
VLIW  Long Instruction word方式のマイクロプロセッサ
DSP  デジタル信号処理プロセッサ(Degital signal processor)
GP  グラフィックプロセッサ(Graphic processor)
MPEG  MPEG(Moving Picture Experts Group)信号処理回路
BSC  バス制御回路
PMU  チップ電力制御回路
USB  USB(Universal Serial Bus)インターフェース回路
IrDA  IrDA(Infrared Data Association)赤外線通信インターフェース回路
PCI  PCI(Peripheral Component Interconnect)インターフェース回路
MEM  メモリ
EXTBUS  外部バス
SBUS  チップ内の信号伝播用のバス
PBUS  電力制御バス
【図１】
0004521676.tif 000002
【図２】
0004521676.tif 000003
【図３】
0004521676.tif 000004
【図４】
0004521676.tif 000005
【図５】
0004521676.tif 000006
【図６】
0004521676.tif 000007
【図７】
0004521676.tif 000008
【図８】
0004521676.tif 000009
【図９】
0004521676.tif 000010
【図１０】
0004521676.tif 000011
【図１１】
0004521676.tif 000012
【図１２】
0004521676.tif 000013
【図１３】
0004521676.tif 000014