(57)【要約】【課題】  性能上の損失を許容することなくプロセッサの消費電力を低減するとともに、プロセッサの漏洩電力を低減する。【解決手段】  ユニット電力調整機構と、集積回路装置（ＩＣ）においてＬｄＩ／ｄｔノイズを低減して漏洩電力を調整可能に低減する漏洩低減回路と、ＩＣ中のアクティブ／休眠状態を呼び出すアクティビティ予測ユニット１３０とを備えた集積回路装置（ＩＣ）を提供する。アクティビティ予測ユニット１３０は各ＩＣユニットについてターンオン時間とターンオフ時間を決める。アクティビティ予測ユニット１３０は供給電圧選択回路を制御して、予測されたターンオン時間に供給電圧を個別の供給線へ選択的に通過させ、予測されたターンオフ時間に供給電圧を選択的に阻止させる。【選択図】          図１
2004334872.tif 000002
【特許請求の範囲】
【請求項１】
ユニット電力調整機構を備えた集積回路装置（ＩＣ）であって、
複数の機能ユニットであって、前記複数の機能ユニットのうちのいくつかが供給線を備えている、複数の機能ユニットと、
前記複数の機能ユニットの各々について次に予期されるオペレーションを判断し、判断した前記次に予期されるオペレーションの各々についてターンオン時間およびターンオフ時間を予測する予測ユニットと、
前記供給線の各々に設けられた供給電圧選択回路であって、前記供給電圧選択回路の各々は予測されたターンオン時間に応答して対応する前記供給線へ供給電圧を選択的に通過させ、予測されたターンオフ時間に応答して前記対応する供給線への前記供給電圧を選択的に阻止する、供給電圧選択回路と
を備えた
集積回路装置。
【請求項２】
前記供給電圧選択回路が、
対応する前記供給線と前記供給電圧との間に設けられた選択可能なブリーダ電流経路であって、前記選択可能なブリーダ電流経路は前記対応する供給線への電流経路を選択的に実現する、選択可能なブリーダ電流経路と、
前記対応する供給線を監視し、前記対応する供給線が、選定しておいた閾値レベルになったらレディ信号を供給する放電検出器と、
前記対応する供給線を前記供給電圧へ選択的にクランプする供給スイッチと
を備えている、
請求項１に記載の集積回路装置。
【請求項３】
前記機能ユニットが論理回路、メモリ回路、およびステージング・ラッチ回路を備えている、
請求項２に記載の集積回路装置。
【請求項４】
前記選択可能なブリーダ電流経路が前記対応する供給線を選択的に充電し、前記放電検出器が供給線の充電を監視する、
請求項２に記載の集積回路装置。
【請求項５】
前記選択可能なブリーダ電流経路が前記対応する供給線を選択的に放電し、前記放電検出器が供給線の放電を監視する、
請求項２に記載の集積回路装置。
【請求項６】
前記放電検出器が、電圧、電荷、放電電流、および放電電力から成る群から選択した放電パラメータを監視する、
請求項５に記載の集積回路装置。
【請求項７】
供給線電圧が閾値電圧未満に放電したのを前記放電検出器が検出したら、前記対応する供給線を接地へクランプすることにより前記供給スイッチを閉じる、
請求項２に記載の集積回路装置。
【請求項８】
前記予測ユニットは前記対応する供給線を接地へクランプすることにより、前記供給スイッチを選択的に閉じる、
請求項２に記載の集積回路装置。
【請求項９】
前記供給スイッチは前記ブリーダ電流経路中の電流より少なくとも１０％多い電流を担持することができる、
請求項２に記載の集積回路装置。
【請求項１０】
前記供給スイッチは前記ブリーダ電流経路中の電流の１０００倍の電流を担持することができる、
請求項９に記載の集積回路装置。
【請求項１１】
予測されたターンオフ時間ののち、前記対応する供給線をフロートにすることにより前記供給スイッチおよび前記選択可能なブリーダ電流経路を開く、
請求項２に記載の集積回路装置。
【請求項１２】
前記予測ユニットは前記予測されたターンオン時間に先行し要求に応じて電力を供給する、
請求項１に記載の集積回路装置。
【請求項１３】
前記予測ユニットは予測された第１のリソース命令が、対応する機能ユニットを必要とする前に、多数の命令に応答し要求に応じて電力を供給する、
請求項１２に記載の集積回路装置。
【請求項１４】
前記予測ユニットは予測された第１のリソース命令が、対応する機能ユニットを必要とする前に、多数のサイクルに応答し要求に応じて電力を供給する、
請求項１２に記載の集積回路装置。
【請求項１５】
さらに、
前記複数の機能ユニットのうちのいくつか用に指定されたリソース命令を検出するルックアヘッド論理を備えた命令バッファ
を備え、
前記予測ユニットが前記命令のうちの検出されたものに応答し要求に応じて前記電力の各々を供給する、
請求項１に記載の集積回路装置。
【請求項１６】
さらに、
前記複数の機能ユニットのうちのいくつか用に指定されたリソース命令を示す命令デコード手段
を備え、
前記予測ユニットがデコーされた命令に応答し要求に応じて前記電力の各々を供給する、
請求項１に記載の集積回路装置。
【請求項１７】
前記予測ユニットがコンパイルされた命令に応答し要求に応じて前記電力の各々を供給する、
請求項１に記載の集積回路装置。
【請求項１８】
前記予測ユニットが、
使用率履歴テーブル（ＵＨＴ）と、
使用率予測カウンタと
利用率ベクトル（ＵＶ）ユニットであって、前記ＵＨＴが前記ＵＶおよび前記使用率予測カウンタが出すサブベクトルを連結することよりインデックス付けされている、利用率ベクトル（ＵＶ）ユニットと
を備えている、
請求項１に記載の集積回路装置。
【請求項１９】
前記予測ユニットが、
対応する機能ユニットの要求された使用、
前記対応する機能ユニットの予測された使用、
無条件のターンオン信号、および
割込み信号
から成る群から選択され予測されたイベントに応答し要求に応じて電力を供給する、
請求項１に記載の集積回路装置。
【請求項２０】
集積回路装置（ＩＣ）において漏洩電力を調整可能に低減する漏洩低減回路であって、
回路の供給線と供給電圧との間に設けられた選択可能ブリーダ・スイッチであって、前記選択可能ブリーダ・スイッチは要求信号に応答して前記回路の供給線への電流経路を選択的に実現する、選択可能ブリーダ・スイッチと、
前記回路の供給線を監視し、前記回路の供給線が、選定しておいた閾値レベルになったらレディ信号を供給する放電検出器と、
前記レディ信号に応答して前記回路の供給線を前記供給電圧へ選択的にクランプする供給スイッチと
を備えた
漏洩低減回路。
【請求項２１】
前記放電検出器が、
ブリーダ・スイッチ電圧、
ブリーダ・スイッチ電流、
ブリーダ・スイッチ電力、および
前記供給線上の容量性電荷
のうちの少なくとも１つを監視する、
請求項２０に記載の漏洩低減回路。
【請求項２２】
先を見越し予測してアクティブ／休眠ユニット状態を呼び出すアクティビティ予測ユニットであって、
現在サイクルのマシン状態ベクトルを受け取るユニット利用率ベクトル／命令フェッチ・アドレス・レジスタ（ＵＶ／ＩＦＡＲ）と、
前記ＵＶ／ＩＦＡＲから命令フェッチ・アドレスを受け取る予測ユニットと、
即パワーアップ要求を供給する命令デコード・ユニット（ＩＤＵ）と、
前記ＵＶ／ＩＦＡＲからユニット利用率ベクトルを、前記予測ユニットから予測されたカウント値およびカウント期間を、前記ＩＤＵから即パワーアップ要求をそれぞれ受け取るゲーティング要求調整ユニット（ＧＲＣＵ）であって、前記ＧＲＣＵは目標ユニットのパワーアップ／パワーダウン要求を生成する、ゲーティング要求調整ユニット（ＧＲＣＵ）と
を備えた
アクティビティ予測ユニット。
【請求項２３】
前記予測ユニットが、前記目標ユニットの各々において以前に実行された命令についてカウント値および期間を保持する利用率履歴テーブル（ＵＨＴ）を備えている、
請求項２２に記載のアクティビティ予測ユニット。
【請求項２４】
前記ＵＶ／ＩＦＡＲが、ユニット利用率ベクトル（ＵＶ）と命令フェッチ・アドレス・レジスタ（ＩＦＡＲ）が出す少なくとも２ビットとを連結してパワーオン要求用に前記ＵＨＴへインデックスを供給する、
請求項２３に記載のアクティビティ予測ユニット。
【請求項２５】
前記ＧＲＣＵが、
前記ＵＶと前記ＵＨＴが出す対応するルックアップ・エントリとを組み合わせするエンコーダと、
前記エンコーダから予測されたパワーオンへのカウント値を受け取るカウントダウン・レジスタと、
前記カウントダウン・レジスタからカウントダウン完了信号を、前記ＩＤＵから前記即パワーアップ要求をそれぞれ受け取る優先度マルチプレクサであって、前記優先度マルチプレクサは前記目標ユニットのうちの対応する１つ用に前記パワーアップ要求を供給する、優先度マルチプレクサと
を備えている、
請求項２４に記載のアクティビティ予測ユニット。
【請求項２６】
前記ＧＲＣＵが、
前記ＵＨＴから予期される現在のパワーアップ状態の期間を保持する予測期間レジスタと、
前記現在のパワーアップ状態用に現在のカウント値を保持する期間カウント・レジスタと、
前記予期される期間と前記現在のカウント値とを比較する比較器と、
前記ＵＨＴ中の前記予期される期間を更新する手段と、
前記比較器に応答して前記目標ユニットのうちの対応する１つ用に前記パワーダウン要求を供給する手段と
を備えている、
請求項２４に記載のアクティビティ予測ユニット。
【請求項２７】
前記パワーダウン要求を供給する前記手段が、前記比較器の出力とパワーアップ要求とを組み合わせ、前記パワーアップ要求がアサートされているときにのみ前記パワーダウン要求を供給する、
請求項２６に記載のアクティビティ予測ユニット。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は一般にクロック駆動された複数のコンポーネントまたはユニットを備えたマイクロプロセッサまたはシステムにおける消費電力の低減と調整に関する。
【背景技術】
【０００２】
半導体技術とチップ製造の進歩によって、オンチップのクロック周波数、単一のチップ上のトランジスタ数、チップのダイ・サイズ自体は着実に増大したが、それに対応してチップの供給電圧（Ｖdd）は低減した。一般に、クロック駆動される所定のユニットが消費する有効電力は主としてチップの容量性負荷の切り替えによって決まり、クロック周波数に比例して増大する。したがって、チップの供給電圧が低減したにもかかわらず、チップの実際の消費電力は増大した。
【０００３】
また、動作周波数と無関係に、チップ漏洩または待機電力はチップ上のトランジスタ数に比例して増大する。特に、通常はＣＭＯＳと呼ばれる絶縁ゲート型電界効果トランジスタ（ＦＥＴ）技術におけるチップと回路の場合、チップ漏洩の大部分はサブスレショルド漏洩である。サブスレショルド漏洩とはＦＥＴのゲート−ソース間電圧がＦＥＴをオンさせるのに不十分、すなわちＦＥＴのスレショルド電圧（Ｖt ）未満のときであってもＦＥＴのチャネルを通じて（ドレインからソースに）流れる電流のことである。ボーカー「縮小技術の設計上の課題」（アイ・トリプルイー・マイクロ、第１９巻第４号、７／８月号、１９９９年、第２３〜２９頁）（S. Borkar, "Design Challenges of Technology Scaling", IEEE Micro, vil.19, no.4, July/Aug. 1999, pp.23-29）には、サブスレショルド漏洩電力が合計消費電力のある割合で増大する様子が記載されている。この割合をもった増大が生じるのは、Ｖddが低下しても、Ｖt は事実上一定に止まる必要があるからである。したがって、チップの有効電力が低減して０になっても、すなわち実質的にチップがシャットダウンしても、サブスレショルド漏洩は電力を消費し続ける。
【０００４】
したがって、チップ・レベルおよびシステム・レベルの双方において、これらチップ電力増大の結果として冷却コストとパッケージング・コストが増大した。電池の寿命がきわめて重要なロウ・エンド・システム（たとえばハンドヘルド、ポータブル・システム、モバイル・システムなど）の場合、合計消費電力を低減させることが重要である。しかも、それは性能を許容できない程度までに劣化させずに行なう必要がある。したがって、特に最新の中央処理装置（ＣＰＵ）の場合、スカラ、スーパスカラ、ベクトル、または他の種類のプロセッサなどＣＰＵアーキテクチャが進歩しても、マイクロプロセッサの消費電力におけるこの増加は性能の向上に対する主要な障害になった。
【０００５】
スカラ・プロセッサは一度に１つの命令をフェッチし、発行／実行する。このような命令は各々、スカラ・データのオペランドを処理する。このようなオペランドは各々、単一のデータ値すなわち原子データ値または数値である。スカラ・プロセッサ内をパイプライン化すると、いわゆるコンカレンシ（すなわち単一発行パラダイムを維持しながら、所定のクロック・サイクルで複数の命令を処理すること）が実現する。
【０００６】
スーパスカラ・プロセッサは所定のマシン・サイクルで複数の命令をフェッチし、発行し、実行することができる。また、命令フェッチ・パス、命令発行パス、および命令実行パスは各々、通常、パイプライン化されており、さらなるコンカレンシが可能になっている。スーパスカラ・プロセッサの例として、ＩＢＭコーポレーション製のＰｏｗｅｒ／ＰｏｗｅｒＰＣプロセッサ、インテル（Intel)コーポレーション製のＰｅｎｔｉｕｍ(R)  Ｐｒｏ（Ｐ６）プロセッサ・ファミリ、サン・マイクロシステムズ（Sun Microsystems）製のＵｌｔｒａｓｐａｒｃプロセッサ、およびヒューレット・パッカード（Hewlett Packard)カンパニ製のＰＡ−ＲＩＳＣプロセッサ・ファミリおよびＡｌｐｈａプロセッサ・ファミリが挙げられる。
【０００７】
ベクトル・プロセッサは通常、パイプライン化されており、単一のアーキテクチャ上のステップすなわち命令で数値から成るアレイ全体について１回のオペレーションを実行することができる。たとえば、単一の命令でアレイＡの各エントリとアレイＢの対応するエントリとを加算しその結果をアレイＣの対応するエントリに格納することができる。ベクトル命令は通常、基本スカラ命令セットの拡張としてサポートされている。ベクトル・エンジンではより大きなアプリケーション内でベクトル化しうるようなコード部のみを実行する。ベクトル・エンジンは単一のパイプライン化された実行ユニットでありうる。すなわち、ベクトル・エンジンは異なるデータについて同じ命令を同時並行的に実行する複数の同一の実行ユニットを備えたアレイすなわちＳＩＭＤ（single instruction multiple data）マシンとして構成することができる。たとえば、クレイ（Cray）社のスーパコンピュータはベクトル・プロセッサである。
【０００８】
同期クロック駆動されたプロセッサまたはシステムはシステムを構成しているすべてのユニットまたはコンポーネントを駆動している単一のグローバル・マスタ・クロックを有する。時として、クロックを比例的に高めたり低めたりする（たとえばクロックを２倍にする）ことにより、特定のサブユニットを主またはマスタ・クロック周波数より速くしたり遅くしたりすることがある。通常、そのようなクロッキングは設計によって事前に決めるとともに静的にプリセットする。たとえば、インテル社のＰｅｎｔｉｕｍ(R)  ４プロセッサは当技術分野でダブル−ポンピング（double-pumping）またはウエーブ−パイプライニング（wave-pipelining)と呼ばれいてるものを表向き使用することにより、その整数パイプをチップのマスタ・クロックの２倍の速さでクロック駆動している。このようなクロック倍加手法によって、プロセッサの実行速度と性能が向上する。しかし、バスおよびオフチップ・メモリの速度はプロセッサの計算論理コアと歩調を合わせていない。したがって、最新のプロセッサは主プロセッサのクロック周波数の整約数である周波数で動作するオフチップのバスとキャッシュを備えている。通常、これらのクロック動作周波数はシステム設計の間、固定されている。これが、現在世代のプロセッサがその複雑さゆえに複数のクロック速度を有する理由である。時として、ハイエンドのマシンでも、プロセッサと外部バスまたはメモリとの間の性能上の不一致を軽減するためにダブル−ポンピングとウエーブ−パイプライニングを使用している。
【０００９】
通常、クロック・ゲーティングを用いて有効電力を低減している。チャンドラカサンおよびブローダーセン編「低電力ＣＭＯＳ設計」（アイ・トリプルイー・プレス、１９９８年）（A. Chandrakasan and R. Brodersen, ed., "Low-Power CMOS Design," IEEE Press, 1998）には、同期クロック・ゲーティングを用いて電力を低減する技術が記載されている。そこでは、再生成地点、すなわち特定のチップ領域、コンポーネント、またはラッチにクロックを供給しているローカル・クロック・バッファ（ＬＣＢ）内においてクロックを無効にする技術が記載されている。レベルの粗い制御では、機能境界に沿ってクロックをゲーティングする。レベルの細かい制御では、個々のラッチでクロックをゲーティングする。たとえば、サンチェス「高性能ＰｏｗｅｒＰＣマイクロプロセッサ用の熱管理システム」（ダイジェスト・オブ・テクニカル・ペーパーズ、アイ・トリプルイー  コムプコン、１９９７年）（H. Sanchez, "Thermal management system for high performance PowerPC microprocessors," Digest of Technical Papers, IEEE COMPCON, 1997）には、各サイクルごとにディスパッチされ実行される命令に基づいて様々な実行ユニットへのクロックをゲーティングすることが教示されている。
【００１０】
コード生成の間にコンパイラが命令セット・アーキテクチャに含まれる特別の命令を挿入することにより、粗アイドル調整を合成することができる。あるいは，これらの命令はたとえば特別の割込みを処理するとき、またはある種のコンテキスト・スイッチを行なうときにオペレーティング・システムが動的に発行してもよい。最も粗い調整レベルでは、特別のスリープ型命令すなわちコマンドを発行してもよい。この特別のスリープ・コマンドはある期間、チップの選択した部分へのクロックを停止する無効信号を生成することができる。これと同じ特別のスリープ・コマンドを用いて命令フェッチ・プロセスを無効にすることができる。同様に、無効信号が否定されたとき、またはスリープ期間満了後、黙示のウエイクアップが開始する。あるいは、ウエイクアップは明示の非同期割込みを用いて達成することもできる。当技術分野で周知のように、クロック分布ツリーをＬＣＢハイアラキの様々なレベルにおいて選択的に無効にすることにより、様々なパワーダウン・モード（たとえばｎａｐ、ｄｏｚｅ、ｓｌｅｅｐなど）を実現することができる。次に細かい細分度のレベルでは、コンパイラは自身が計算フェーズを静的に予測しうるときは常に、クロックのゲートオフを開始する特別の命令を所定のユニット（たとえば浮動小数点ユニット）に挿入することができる。
【００１１】
ハードウェア・アイドル自己検出機構を備えることができる。アイドル自己検出論理はローカル化されたプロセッサのアイドル期間を検出するように設計することができる。検出すると、ローカル・ユニットはアイドル中のユニット領域の一部または全部についてクロックを無効にし、および／またはローカル供給電圧（Ｖddおよび／または接地）を低減させる。（「Ａおよび／またはＢ」は「ＡおよびＢ、Ａ、またはＢ」を表わす。）各ユニットはある期間、自身のクロックおよび／またはローカル供給電圧を無効にする。同様に、無効にされた、またはスリープ中のユニットが受け取った新たな仕事に基づいてウエイクアップを自己始動させる。
【００１２】
より細かいアイドル調整の場合、動的に規定された信号がローカル・クロックをサイクルごとにゲーティングする（しかし先行して供給電圧をゲーティングすることはない）。たとえば、典型的なスーパスカラ・マシンの場合、プロセッサは命令デコードの間に、引き続く実行サイクルの間にクロック・ゲーティングしうる機能ユニット・パイプを決める。これは「インオーダ（in-order）」発行機構を備えたプロセッサではうまく機能する。したがって、ゲーティングの判断は時間的に明白かつ十分に先行して、すなわちデコード時またはディスパッチ時に行なうことができる。命令クラス情報が中央化された発行キューにエントリごとに保存されている場合、そのようなゲーティング信号はアウト・オブ・オーダ（out-of-order）発行キューの場合であっても発行時にも生成することができる。
【００１３】
パイプライン化された任意のデータ・パスにおいて、たとえば論理パイプラインに沿ってデータ有効フラグ（すなわちデータ有効ビット）を伝播させることにより、冗長なクロッキングを動的に検出するとともに選択的に防止することができる。このデータ有効フラグをセットするのは１サイクルで生成されるデータが有効なときのみである。したがって、各論理ステージ用のデータ有効フラグをクロック有効子として用いることにより当該ステージの出力ラッチをセットすることができる。それゆえ、微細細分度かつ有効ビット・ベースかつパイプライン・ステージ・レベルのクロック・ゲーティングで、後続するパイプライン・ステージを通じて、無効なデータが不必要にクロック駆動されることはない。
【００１４】
スプロッチ（Sproch）らの「電力節減を目的として動作中のパイプライン化された回路内においてパイプ・ステージ・ゲーティングを行なう方法とシステム（Method and System for Pipe Stage Gating Within an Operating Pipelined Circuit for Power Savings)」なる名称の米国特許第６２４７１３４号（Ｂ１）には、パイプラインにおいて論理の第１ステージが先行するサイクルの計算で変更しなかったであろう新たに受け取ったオペランドを論理的でないものとして識別するプロセッサが教示されている。このような不変の状態信号を論理的でないものとして検出する機構を用いることにより、第１ステージへのクロックを無効にしたのち、引き続くステージへのクロックも継続して無効にすることができる。
【００１５】
大西、山田、野田、神戸「Ｒｔレベル設計において冗長クロッキングの検出お電力の低減を行なう方法」（プロシーディングス・インターナショナル・シンポジウム・オン・ロウ・パワー・エレクトロニクス・アンド・デザイン（アイ・エス・エル・ピー・イー・ディー）１９９７年、第１３１〜１３６頁）（Ohnishi, M., Yamada, A., Noda, H. and Kambe, T. "A Method of Redundant Clocking Detection and Power Reduction at the Rt Level Design," Proc. Int'l. Symp. On Low Power Electronics and Design (ISLPED), 1997, pp.131-136）では、様々な種類の冗長ラッチ・クロッキングを防止する他のより複雑なアイドル検出機構が検討されている。
【００１６】
プロセッサが一連のある種の機能クラスの命令（たとえば整数のみ命令や浮動小数点のみ命令など）を実行しているときには細分度の粗いユニット・レベルのクロック・ゲーティングが好都合である。入力負荷が、プロセッサが整数コードのみを処理するようなものである場合、浮動小数点ユニット用のクロック再生成器は使用不可にすることができる。同様に、浮動小数点のみオペレーションの間、整数ユニットへのクロックを無効にすることができる。粗アイドル調整は通常、順次命令によるソフトウェアにより、あるいはアイドル期間を検出するハードウェアを使用することによりローカルに有効にする。微細アイドル調整は通常、無効なすなわち論理的でないデータの不必要な伝播を抑止することにより命令デコードの間、ここでもローカルに有効にする。
【００１７】
粗アイドル調整にはここで述べておく必要のある問題点が少なくとも２つある。それらの問題点は供給電圧ゲーティングを採用するするときに特に懸念される。第１に、大きな電流降下と利得によって、オンチップの供給電圧に許容できないレベルの誘導（ＬｄＩ／ｄｔ）ノイズが生じる可能性がある。第２に、正確な機能オペレーションを維持するためにプロセスをゲートオン／ゲートオフするのにオーバヘッド・サイクルを必要とする。作業負荷のより細かい細分度のフェーズの変化のためにゲーティング・モードと無効モードとの間を頻繁に切り替えすぎると許容できない性能上の損害が生じる。
【００１８】
また、最新の微細アイドル調整はパイプラインのステージ・レベルのクロック・ゲーティング用にローカルに生成したゲーティング信号すなわちゲーティング状態に依存している。たとえば、データ無効状態すなわち非論理オペランド状態に基づいている。これら最新の手法では、予測すなわち予期に基づいてゲーティング信号を生成してはいない。したがって、タイミング要件が重要になる場合が多い。なぜなら、ゲーティング信号は無エラーのクロック・ゲーティング・オペレーションのためにアサートに先行して利用できなければならいとともに、適切な期間、アサートしなければならないからである。ゴーワン、ビロ、およびジャクソン「Ａｌｐｈａ  ２１２６４マイクロプロセッサの設計における電力の考察」（プロシーディングス  １９９８  エイ・シー・エム／アイ・トリプルイー  デザイン・オートメーション・カンファレンス、第７２６〜７３１頁（１９９８年６月）（Gowan, M. K., Biro, L. L. and Jackson, D. B., "Power consideration in the design of the Alpha 21264 microproceeor," Proc. 1998 ACM/IEEE Design Automation Conference, pp. 726-731, (June 1998)）では、これらの要件が設計上のタイミング分析を顕著に複雑化し、クロック周波数性能を劣化させる様子が検討されている。これらの問題点にもかかわらずクロック・ゲーティングによってプロセッサにおける平均の有効電力（すなわち「スイッチング」電力）が低減するけれども、それは静的電力すなわちスタンバイ電力を低減させるものではない。
【００１９】
その代わりに、（電力ゲーティングまたはＶddゲーティングとも呼ばれる）供給電圧ゲーティングを用いて静的電力すなわち漏洩電力を低減させる。ＦＥＴ回路ブロックまたはＣＭＯＳ回路ブロックがイナクティブ（オフ）の場合でさえ、Ｖddから接地への電流漏洩はサブスレショルド漏洩として生じる。したがって、これらのＣＭＯＳ回路はクロックを無効にし、または一定（すなわち“Ｈ”または“Ｌ”）に保っても電力を消費する。上述したように、合計電力に対するこのサブスレショルド漏洩成分の割合は回路縮小技術の効果として上昇しつつある。これにより、Ｖddとデバイスのスレショルド電圧Ｖt との間のギャップは小さくなりつつある。供給電圧ゲーティングはＶddまたは接地（ＧＮＤ）をＦＥＴ／回路にゲーティングして、電流経路を無くすものである。したがって、Ｖddから接地に至る電流経路に余分の「ヘッダ」ＦＥＴ（すなわちデバイス）または「フッタ」ＦＥＴ（すなわちデバイス）を設けている。ヘッダ・デバイス／フッタ・デバイスは通常動作の間、すなわち回路がアクティブにゲーティングされているときにオンになる。ゲーティングがオフすなわちアイドルのとき、ヘッダ・デバイス／フッタ・デバイスはオフして相補ＦＥＴペアを両供給レール（すなわちＶddレールまたはＧＮＤレール）から電気的に絶縁する。ウエイ、ロイ、ディ「深サブミクロンＩＣ用の低電圧低電力ＣＭＯＳ設計手法」（プロアーディングス・オブ・アイ・トリプルイー・インターナショナル・カンフェレンス・オン・ブイ・エル・エス・アイ・デザイン、２０００年１月、第２４〜２９頁）（L. Wei, K. Roy, V. De, "Low Voltage Low Power CMOS Design Techniques for Deep Submicron IC's," Prc. of IEEE Int'l Conf. On VLSI Design, Jan. 2000, pp. 24-29）には、Ｖddゲーティングの直接的な適用が記載されている。
【００２０】
しかしながら、ロイの方法を適用すると、電力供給ライン中の大きな（非制御の）サージに起因して回路動作の信頼性が欠如して性能が大いに劣化し、合計平均電力が増加する可能性さえある。性能劣化には２つの理由がある。第１に、供給ゲーティング制御回路を付加するとゲーティングした回路の供給経路のインピーダンスが増加するから、ゲーティングした回路ブロックの基本遅延が増加する。急峻なオン／オフを許容することにより性能上のオーバヘッドを低減すると、ＬｄＩ／ｄｔノイズが顕著になる。いすれにしても、供給ゲーティングによって性能上のオーバヘッドがいくぶん増加する。これが性能劣化の第２の原因である。適度な上昇／下降によって回路をゲートオン／ゲートオフしてＬｄＩ／ｄｔを最小化すると、通常のオペレーションを停止／再開するのに最大数百プロセッサ・サイクルの遅延が生じる。その結果、合計平均消費電力はきわめて頻繁にゲートオン／ゲートオフを行なう場合よりも実際上増大する可能性がある。特に、平均利用率が小さくとも、ゲーティング制御デバイスおよび関連回路に要する余分のスイッチング電力すなわち有効電力が節減した漏洩電力より大きいと、平均消費電力は増加する可能性がある。
【００２１】
現在のゲーティング法、特に供給ゲーティング法は細分度が粗かろうが細かかろうが、非予測性であると呼ばれている。典型的な電圧ゲーティング信号は数サイクルの一時ウインドウ内で追跡されるイベントと論理状態に基づいてローカルに生成される。
【発明の開示】
【発明が解決しようとする課題】
【００２２】
したがって、たとえば電圧供給レール上で増大する誘導ノイズによって回路の信頼性を損ねることなく、現在の大きな性能上のオーバヘッドを隠しうるゲーティングされた電力供給設計、特にプロセッサの設計において存在するこのような電力供給設計が求められている。
【００２３】
本発明の目的は性能上の損失を許容することなくプロセッサの消費電力を低減することである。
【００２４】
本発明の別の目的はプロセッサの漏洩電力を低減することである。
【課題を解決するための手段】
【００２５】
本発明はユニット電力調整機構と、集積回路装置（ＩＣ）においてＬｄＩ／ｄｔノイズを低減して漏洩電力を調整可能に低減する漏洩低減回路と、ＩＣ中のアクティブ／休眠状態を呼び出すアクティビティ予測ユニットとを備えた集積回路装置（ＩＣ）に関する。アクティビティ予測ユニットは各ＩＣユニットについてターンオン時間とターンオフ時間を決める。アクティビティ予測ユニットは供給電圧選択回路を制御して、予測されたターンオン時間に供給電圧を個別の供給線へ選択的に通過させ、予測されたターンオフ時間に供給電圧を選択的に阻止させる。
【発明を実施するための最良の形態】
【００２６】
次に、図面を参照する。特に図１を参照する。図１は本発明に係るサブスレショルド漏洩消費電力の低減・調整機構を備えた好適な実施形態のコンポーネント（この例ではプロセッサ１００）の高レベルのブロック図の例を示す図である。特に、コンポーネント回路群またはコンポーネント・ユニット群は共通供給電圧源または複数の供給電圧源（Ｖdd）を共用している。たとえばＩＰＣ（instructions per cycle: サイクル当りの命令数）を用いて測定される性能の劣化を許容することなく、大量のハードウェアを追加する必要なく、平均コンポーネント漏洩電力を低減させている。また、誘導ノイズ（ＬｄＩ／ｄｔ）効果を厳格に制御して信頼性の高いコンポーネント動作を維持している。最大消費電力（したがって温度）の限界を厳格に守ることにより、事前に決められた小さな時間ウインドウにわたって性能損失を最小にしてコンポーネントを通常の動作状態に維持し、あるいは通常の動作状態に復帰させて消費電力を調整している。
【００２７】
本発明は同期しクロック駆動されたすべてのプロセッサ（たとえばスカラ、スーパスカラ、ベクトルなど）に適用することができる。すなわち、ユニットの動作／非動作は実行に先立って十分に予測することができる。この例では、コンポーネントは複数発行（この例では二重発行）かつスーパスカラかつパイプライン化されたプロセッサ１００である。また、本発明は任意の程度（粗または微細）のアイドル調整に適用することができる。ただし、本発明は微細アイドル調整と組み合わせて使用すると最も効率的に適用することができる。命令キャッシュ（ＩＣＡＣＨＥ）１０２、命令フェッチ・アドレス・レジスタ（ＩＦＡＲ）１０４、命令バッファ（ＩＢＵＦ）１０６、マルチプレクサ（ＭＵＸ）１０８、分岐履歴テーブル／分岐目標バッファ論理（ＢＨＴ／ＢＴＢ）１１０、分岐ユニット（ＢＲＵ）１１２、命令デコード−ディスパッチ・ユニット（ＩＤＵ）１１４、および発行キュー１１６が典型的な命令ユニット（Ｉ−ユニット）を形成している。データ・キャッシュ（ＤＣＡＣＨＥ）１２４と組み合わせたロード−ストア・ユニット（ＬＳＵ）１１８、固定小数点整数実行ユニット（ＦＸＵ）１２０、および浮動小数点実行ユニット（ＦＰＵ）１２２、汎用（整数）データ・レジスタ（ＧＰＲ）１２６、ならびに浮動小数点データ・レジスタ（ＦＰＲ）１２８が典型的な実行ユニット（Ｅ−ユニット）を形成している。また、ユニット・レベル・アクティビティ予測論理１３０は現在サイクルのマシン状態ベクトル１３２を入力として受け取り、目標ユニットを「ウエイクアップ」させ、あるいは「スリープ」または「パワーダウン」を開始してあるユニットの（比較的）長いアイドル期間を見越して当該ユニットを選択的にシャットダウンさせる要求信号１３４を出力する。さらに、ユニット１０２、１０４、１０６、１０８、１１０、１１２、１１４、１１６、１１８、１２０、１２２、１２４、１２６、および／または１２８の各々および任意のものを目標ユニットに指定することができる。
【００２８】
特に、ユニット・レベル・アクティビティ予測論理１３０はユニット・レベルの利用率の顕著な変化（および有意期間の関連する作業負荷フェーズ）を追跡し、そのようなイベントに数百サイクル先行してそれを特定／予測する利用率履歴テーブルを備えている。ユニット・レベルの変化の予測に基づいて、ユニット・レベル・アクティビティ予測論理１３０は供給有効回路（この例ではＶdd−有効）を立ち上げ、アイドル状態にある（「パワーオフしている」）ユニットをその使用を見越して徐々に「ウエイクアップ」させる。Ｖdd−有効を立ち上げると、ＬｄＩ／ｄｔが最小化して誘導ノイズが管理可能になることが保証される。したがって、以前にアイドルであったユニットはそれが実際に必要になる時点までに完全にＶdd−有効になるから、ＣＰＩ（cycles per instruction: 命令当りのサイクル数）で測定されるアーキテクチャ上の損失はない。同様に、特定のユニットが長期間アイドル状態にあるという予測に基づいて、当該ユニットをＶdd−ゲーティングし、性能の劣化を引き起こすことなく、あるいは許容できないほど大きな電圧のオーバシュートを引き起こすことなく停止させる（ramped off）ことができる。
【００２９】
各有効フェッチ・サイクルの間、マシン命令はＩＦＡＲ１０４が出す命令フェッチ・アドレスに基づいてＩＣＡＣＨＥ１０２からフェッチする。フェッチした命令はＩＢＵＦ１０６に格納する。このＩＢＵＦ１０６から、引き続く処理ステップが開始する。各フェッチ・サイクルの始めに、ＭＵＸ１０８が選択した命令フェッチ・アドレスをＩＦＡＲ１０４にロードする。ＭＵＸ１０８は複数の源からアドレスを受け取る。ＭＵＸ１０８への次の順次アドレスは現在のＩＦＡＲ値に４バイトを加えて得られる整数値である。（４バイト＝４×８ビット＝３２ビット＝１ワード）ＭＵＸ１０８はＢＨＴ／ＢＴＢ１１０が予測する分岐の目標アドレスを受け取る。ＢＲＵ１１２は解決済みの実際の分岐アドレス（これはＢＨＴ／ＢＴＢ１１０が予測した以前の値を上書きする）を出力する。これはＭＵＸ１０８へ渡される。分岐命令はＩＢＵＦ１０６から走査し、ＢＲＵ１１２が、ＩＤＵ１１４が実行するデコード−ディスパッチ・プロセスと並行して処理する。（非分岐）命令はデコードしオペレーション種別に分類したら、発行キュー１１６にディスパッチする。そこで命令は実際の実行ユニット（ＬＳＵ１１８、ＦＸＵ１２０、ＦＰＵ１２２）のうちの１つへ発行するために選択される。ＬＳＵ１１８、ＦＸＵ１２０、ＦＰＵ１２２は発行済みの命令を処理するのに使用するＤＣＡＣＨＥ１２４、ＧＰＲ１２６、およびＦＰＲ１２８中のデータにアクセスすることができる。任意実行事項として、アウト・オブ・オーダ発行用に、発行キュー１１６はバックエンドの実行パイプに、元のプログラム命令シーケンスに対してアウト・オブ・オーダ（out-of-order: 順序が乱れた）であるシーケンスとして命令を発行するのを可能にする論理を備えている。また、典型的な完了論理（図示せず）を備えることにより、ユーザ可視のアーキテクチャ上のマシン状態に関するかぎり、命令の実際上のインオーダ（in-order: 順序通りの）完了を保証することができる。さらに、他の典型的な機能（たとえばレジスタ・リネーム）をサポートするために、追加のハードウェアを備えてもよい。そのようなスーパスカラ・マシンでさらに性能を向上させるには、リネームしたデータ値をバッファし制御するハードウェアが必要になる。
【００３０】
また、後述するように、ユニット・レベル・アクティビティ予測論理１３０は所定の作業負荷実行の間にプロセッサ１００のサブユニットへの供給電圧（Ｖdd）を時宜に適った形で選択的に有効にしたり無効にしたりする。ユニット・レベル・アクティビティ予測論理１３０は入力１３２における現在サイクルのマシン状態ベクトルを用い、目標ユニットに対して「ウエイクアップ」、および「スリープ」または「パワーダウン」要求信号１３４を時宜に適った形で生成する。
【００３１】
特に、予測された「ウエイクアップ」要求信号を時宜を得て生成すると、各目標ユニットが、要求元ユニットが目標ユニットに処理用のマシン命令を実際に供給するよりも十分に前にアクティブ（パワーオン）状態になることが保証される。同様に、あるユニットに対して（比較的）長いアイドル期間が確認されると、「パワーオフ」要求または「スリープ」要求を発行して当該ユニットをシャットダウンし、それを休眠状態にする。好適な予測論理は組み込みかつ履歴ベースの適合（すなわち「学習」）機構を備えている。この学習機構によって、アプリケーションが実行される可能性が増す。すなわち、このような漏洩を管理された各ユニットは終極的に決して早すぎず「ジャスト・イン・タイム（just-in-time）」でオンするようになるまで適合する。同様に、このようなユニットは各々、最後の「アクティブ期間」が終わった直後にオフする。各ユニットが始動時の性能オーバヘッド損失なしに要求時にのみパワーアップすることを保証することにより漏洩電力を低減するのが好ましい。また、後述するように、各ユニットに対して最適に予測したパワーアップ・プロセスによって、消費される平均の（余分な）電力およびノイズに乗る誘導性すなわち電流サージ（ＬｄＩ／ｄｔ）電力を最小にすることができる。十分に予測されていないきわめてまれなパワーアップ要求の場合でも、電流サージと「ターンオン」時の消費電力を制御することにより安全な（信頼できる）オペレーションを保証しながら、開始性能のペナルティを許容範囲に収めることができる。
【００３２】
図２は好適なユニット・レベル・アクティビティ予測論理１３０のブロック図である。ユニット・レベル・アクティビティ予測論理１３０は先を見越しており、アクティブ／休眠ユニット状態への遷移を予測して要求する。現在サイクルのマシン・アクティビティ状態ベクトルを入力１３２においてユニット利用率ベクトル（ＵＶ）フィールドに供給する。ユニット利用率ベクトル（ＵＶ）フィールドには組み合わせＵＶ／ＩＦＡＲレジスタ１３６内で命令フェッチ・アドレス・レジスタ（ＩＦＡＲ）が連結されている。ＵＶ／ＩＦＡＲ１３６は利用率履歴テーブル（ＵＨＴ）１４０と呼ばれる予測テーブル・ユニットにテーブル・インデックス１３８を供給するとともに、ユニット利用率ベクトル１４２を出力する。ＵＨＴ１４０は長期予測１４４（すなわち数百プロセッサ・サイクル）を供給する。ＵＨＴ１４０のルックアップ・エントリ（ＵＨＴ−１〜ＵＨＴ−ｎ）は予測して管理し供給ゲーティングしている目標ユニットを特定している（ｎは管理している目標ユニットの個数である）。この例では説明を簡潔にするために、ｊ番目のエントリ・フィールド（ＵＨＴ−ｊ）のみが示されている。ＩＤＵ１１４は短期（最長数十サイクル）の先行予測を即パワーアップ要求ベクトル１４８としてゲーティング要求管理ユニット（ＧＲＣＵ）１５０に供給している。各即パワーアップ要求ベクトル１４８はｍビットの２進ストリングであり、ｍ個の下流受信実行ユニットのうち次の数サイクル内にオンさせるものを特定している（ｍは一般に供給ゲーティング可能なユニットの合計個数ｎ以下の正整数である）。ＧＲＣＵ１５０はＵＨＴ１４０から使用率予測１４４（すなわち全ｎ個のゲーティング可能なユニットに対するＣＤＰ値とＡＤＰ値）も受け取り、ＵＶ／ＩＦＡＲレジスタ１３６からＵＶフィールド・エントリ１４２を受け取る。ＧＲＣＵ１５０は「ウエイクアップ」（つまりパワーアップ）および「スリープ」（つまりパワーダウン）、すなわちアクティブ／休眠要求信号１３４を目標ユニットに対して生成する。長期使用率予測／使用率信号１４４および短期使用率予測／使用率信号１４８に加え一般に、ＧＲＣＵ１５０は目標の（ゲーティング可能な）ユニットからアイドル履歴ベクトル（ＩＨＶ）１４９も受け取る。ＩＨＶ１４９はｎビットの２進ストリングであり、どのユニットが所定の「長」期間（たとえば１０００００サイクル）アイドルでありパワーダウンさせる可能性のある候補であるかを示している。
【００３３】
所定の設計（チップまたはプロセッサ）では、単一の特に電力消費量の多いユニット（たとえば浮動小数点ユニット）における漏洩電力を管理するためにｎ＝１である。一般に、このような各エントリは次に示す２つの２進サブフィールドに値を含むフィールド群を備えている。すなわち、ｐビットと少なくとも１ビットとから成るカウントダウン予測（ＣＤＰ）サブフィールドと、ｑビットと少なくとも１ビットとから成るアクティブ期間予測（ＡＤＰ）サブフィールドとである。まず、各ユニットはパワーアップ中のストールに起因する性能ペナルティを回避するためにできるだけ早くオンするようにしておくことができる。この伝統的な手法では、（ＵＶ／ＩＦＡＲインデックスを用いた最初のルックアップに対して）各エントリＵＨＴ−ｊのＣＤＰフィールドを０に設定する（たとえば全ｐビットを０にセットする）。同様に始めに、ＡＤＰフィールドを最大値に設定する（すなわち全ｑビットを１にセットする）ことにより、オンしたあときわめて長期間使用中にしておくことができる。あるいは、使用率予測に基づきアーキテクチャ／コンパイラのサポートによってＣＤＰとＡＤＰを明示的に初期化することができる（あるいは時として明示的にセットすることができる）。この明示の初期化予測は周知のプログラム分析あるいはプロファイル駆動分析法を用いて行なうことができる。ｐとｑの双方が１ビットである最小（最低コスト）のエンコード例の場合、一方のＣＤＰ状態（たとえば０）は即（ＡＳＡＰ:as soon as possible) ターンオン要求を表しており、他方のＣＤＰ状態（１）は現時点から遅延するターンオン要求（たとえば１００または５００サイクル）を表わしている。同様に、一方のＡＤＰ状態（たとえば０）は予期される最小アクティブ期間（たとえば１０サイクル）を表しており、他方のＡＤＰアクティブ状態（１）は予期される最大アクティブ期間（たとえば１０００００サイクル以上）を表わしている。ただし、黙示値（１０００００）はゲーティング可能な目標ユニットの個数によって変化する変数として理解すべきである。ＡＤＰフィールドとＣＤＰフィールドがより大きい場合、異なるｐビットのエンコードとｑビットのエンコードは設計が選択した期間を暗示している。ＵＶ／ＩＦＡＲレジスタは可能な最大サイズ（（ｎ＋ｗ）ビット、ただしｎは供給ゲーティング可能な目標ユニットの個数であり、ｗは命令アドレス（プログラム・カウンタ）である）ではなくきわめて低減された（ハッシュされた）ベクトルを含んでいるのが望ましい。このとき、所定の設計で選択したコスト−電力−性能から成るトレードオフ点に応じて、任意の好適な周知のハッシュ・アルゴリズムを用いることができる。また、ＵＶ／ＩＦＡＲルックアップ・インデックス中のハッシュしたビットの個数はＵＨＴ中の厳密なインデックス・エントリの個数の２を底とするｌｏｇに等しい。
【００３４】
ＧＲＣＵ１５０はＵＶ１４２入力を用いてどのユニットがすでにアクティブ（パワーオン）でありどのユニットが休眠（パワーオフ）であるかを判断する。したがって、（ＵＨＴ１４０が出す）長期使用率予測１４４およびＩＤＵ１１４が出す短期使用率予測１４８によって、ＧＲＣＵ１５０はゲーティング可能な目標ユニットへの決定済みの「ターンオン」要求または「ターンオフ」要求から成る適時かつ非冗長の通信を開始する。
【００３５】
図３は図２のＧＲＣＵ出力ｒｅｑj １３４を生成する多数のパワーオン要求信号のうちの１つを生成する、ＧＲＣＵ１５０中のパワーオン要求論理１５２Ａのブロック図の例を示す図である。選択／エンコード論理１５６はＵＶ／ＩＦＡＲ１３６が出す利用率ベクトル１４２と使用率予測１４４とを組み合わせ、そのカウント値１５８をカウントダウン・レジスタ１６０に渡す。優先度マルチプレクサ１６２はカウントダウン・レジスタ１６０から予測されたアクティブ／休眠信号１６４を受け取り、ＩＤＵ１１４から即アクティブ信号１４８を受け取る。優先度マルチプレクサ１６２はパワーオン要求信号１５４を対応するｒｅｑj １３４に駆動する。
【００３６】
図４はＧＲＣＵ出力ｒｅｑj １３４を生成する多数のパワーオフ要求信号のうちの１つを生成する、ＧＲＣＵ１５０中のパワーオン要求論理１５２Ｂのブロック図の例を示す図である。各アクティブ期間の始めに期間カウンタ１６８をリセット１７０する。期間カウンタ１６８は現在のアクティブ期間を表わすカウント値を保持する。比較器１７２は現在の期間カウント値と使用率履歴テーブルが出す予測された期間カウント値とを比較する。利用率ベクトル（ビットベクトル１４２）は図２の予測ユニット１４０中の利用率テーブルにインデックス１７６を供給する。マルチプレクサ１７８はたとえば実際の期間カウント値が予測されたものより長い場合、現在の期間カウント値を選択的に通過させて予測ユニット１４０中の利用率履歴テーブルを更新する。ＡＮＤゲート１８０はパワーアップ１３４がアサートされていないとき、比較器の結果１８２をパワーオフ要求信号１６６として通過させる。パワーオン要求信号１３４とパワーオフ要求信号１６６とを組み合わせ、たとえばセット／リセット・ラッチ（図示せず）を用いてＧＲＣＵ出力ｒｅｑj １３４を生成する。
【００３７】
任意実行事項として、各ゲーティング可能ユニットは連続するアイドル・サイクルの単純なカウント値に基づいて別の自己パワーオフ要求を生成することができる。したがって、このようなユニットが所定のサイクル数の間アイドルである場合、当該ユニットは長いアイドル期間の開始を予測し、（図２の）ＩＨＶストリング１４９中の対応するビットをアサートする。この任意実行の実施形態では、ＧＲＣＵパワーオフ要求生成論理はＩＨＶ入力中の要因にまで増大させられ、たとえば予測よりも早く利用可能になるパワーダウン要求オーバライドを発信する。これにより、ゲーティング可能な目標ユニットにおける漏洩電力消費をさらに低減することが可能になる。
【００３８】
図５はたとえばユニット・レベル・アクティビティ予測論理１３０が図２の例中の所定のユニット用のＶdd−ゲーティング機構を用いて好適な実施形態のプロセッサ・ユニットをパワーアップ／パワーダウンする状態図２００を示す図である。たとえば、これは唯一かつ好適な変更であり、所定のゲーティング可能ユニットに望まれる電力−性能のトレードオフに応じて個別の管理機構に対しては調整がなされる。
【００３９】
始めに（すなわちデフォルトでは）、各ユニットは休眠しているかアクティブであるかどちらかである。すなわち、各ユニットはデフォルトではパワーダウン状態すなわち休眠状態２０２にあるか、完全パワーアップ状態すなわちアクティブ状態２０４にあるかどちらかである。説明を簡潔にするために、任意の所定のユニットのデフォルト状態すなわち開始状態はパワーダウン（休眠）状態２０２であるとする。そして、このような各ユニットは上述したように、要求時にのみ長期または短期の先を見越した予測によってウエクアップするものとする。あるユニットが必要であるというアクティブ期間の指示を受け取ると、当該ユニットはパワーアップ準備状態２０８になる。このような指示があることが推測されるのは、（図２の）ＧＲＣＵ１５０が当該ユニットに対してパワーアップ「ＲＥＱＵＥＳＴ」信号１３４をアサートしたときである。ある遅延ののち、当該ユニットはパワーアップ準備状態２０８からユニット・アクティブ（パワーアップ）状態２０４へ遷移する。この遅延はその最後のアイドル（休眠）期間によって決まる。この点については後述する。
【００４０】
パワーアップしアクティブ状態２０４になったら、アクティブ・ユニットは普通に動作し、リセットもし、アイドル期間カウンタを始動させもする。アイドル期間カウンタはタイムアップし、またはユニットが処理すべきマシン命令を受け取るまでユニットをカウントし続ける。カウント値がプリセットされた閾値を超えたことに起因してアイドル期間カウンタがタイムアップしたら、ユニットはオーバライドする即パワーダウン要求を生成する。この即パワーダウン要求によって、ユニットは休眠状態２０２に直接に帰還し、リセットし、アクティブ期間カウンタを停止させる。これが本質的に当てはまるのは、マシンが誤予測（時期尚早）のパワーオン要求に遭遇した場合である。その結果、漏洩電力がいくぶん浪費される。状態２０２へ帰還する際に、関連する「カウントダウン予測」値をたとえば「１」を右シフトさせることにより現在値の２倍に増加させることにより、誤予測を結果したＵＨＴエントリを更新する。ユニットがマシン命令を受け取ったら、当該ユニットはリセットし、アイドル期間カウンタを停止させ、リセットし、当該ユニットのアクティブ期間カウンタを始動させ、パワーダウン・カウントダウン状態２０６へ遷移する。
【００４１】
（アクティブ命令の休止によりパワーオン要求を逆アサートし）アクティブ期間がＵＨＴ予測期間以上になったことによりパワーオフ要求を生成すると、ユニットはパワーダウン・カウントダウン状態２０６からユニット休眠状態２０２へ遷移する。アクティブ期間カウンタは上向きにカウントし続ける。ユニットは有効なマシン命令を受け取るかぎり、状態２０６に留まる。留意点を挙げると、ユニットが最後の命令を受け取ったのち微小サイクル・ウインドウ（たとえば１０サイクル）の間、当該ユニットに対するパワーオン要求はアサートされ続ける。したがって、パワーオン要求を逆アサートするのは、ユニットが連続１０サイクルの間、命令の受領を停止したのちのみである。アクティブ期間カウント値がいまだにＵＨＴ予測期間カウント値未満である間にユニットが再び有効な命令を受け取り始めたら、パワーオン要求を再アサートする。その間、ユニットは状態２０６に留まる。したがって、アクティブ期間カウンタはＵＨＴ予測期間カウント値を超えてカウントし続けることが可能である。ユニットが最終的に状態２０６から休眠状態２０２に戻ったら、アクティブ期間カウンタの現在の内容を反映させるためにＵＨＴエントリを更新し、アクティブ期間カウンタをリセットしたのち停止させる。
【００４２】
図６は本発明の好適な実施形態に従いユニット・レベル・アクティビティ予測論理１３０が出すウエイクアップ／スリープ要求１３４に応答して供給電圧スイッチング（この例では接地スイッチング）を論理２２２に適用する様子を示す（たとえば図１のプロセッサ１００の）プロセッサ断面２２０の例を示す図である。この例では、各要求１３４は即パワーアップ要求または短期パワーアップ要求、および長期パワーアップ要求の双方を開始させる情報を担持している。ここでも留意点を挙げると、断面２２０に関し、予測論理１３０はたとえば設計スペースの制約に適合するためなど、そうすることが望ましい場合には単なる同時選択（contemporaneous selection)でかまわない。ウエイクアップ／スリープ要求１３４はブリーダ・デバイス２２４のゲートとフッタ・デバイス制御回路２２６（たとえば単なるＡＮＤゲート）に供給する。フッタ・デバイス制御回路２２６の出力は主供給スイッチＦＥＴ２２８のゲートに供給される。主供給スイッチＦＥＴ２２８はブリーダ・デバイス２２４とドットＯＲされており、論理２２２に仮想接地２３０を提供している。主供給スイッチＦＥＴ２２８のチャネルの幅対長さの比（Ｗ／Ｌ）は主供給スイッチＦＥＴ２２８がブリーダ・デバイス２２４より少なくとも１０％多い（数桁〔たとえば１０００倍〕多いのが望ましい）電流を流しうるような値を有する。レベル検出回路２３２（これは実質的に〔出力を反転させる〕インバータ遅延である）は仮想接地のレベルをセンスし、フッタ・デバイス制御回路２２６にＲＥＡＤＹ信号２３４入力を供給する。
【００４３】
通常かつ持続的なパワーオン動作の間、論理２２２がアクティブになると、パワーオン要求信号１３４は予測論理１３０が先を見越してセットしたのちアサート状態を維持する。その結果、ブリーダ・デバイス２２４のゲートは“Ｈ”になり、仮想接地２３０は“Ｌ”になる。ＲＥＡＤＹ２３４は“Ｈ”になり、パワーオン要求信号１３４とＡＮＤされる。その結果、フッタ・デバイス制御回路２２６の出力は“Ｈ”なるから、主スイッチ２２８は閉じる。ブリーダ２２４と主スイッチ２２８の双方がオンすると、仮想接地２３０は接地にクランプされる。ユニット・レベル・アクティビティ予測論理１３０が、次のｍサイクル（たとえばｍ＞１００サイクル）の間、論理２２２にアクティビティが起こりそうもないと判断したら、要求１３４を逆アサートしブリーダ２２４をオフする。フッタ・デバイス制御回路２２６はその出力を降下させるから、主スイッチ２２８は開き、仮想接地２３０はフロートになる。サブスレショルド漏洩が十分で仮想接地２３０がレベル検出回路２３２の入力スイッチング点より上に引き上げられると、ＲＥＡＤＹ２３４は降下する。
【００４４】
後刻、ユニット・レベル・アクティビティ予測論理１３０が次のｋサイクル内に論理２２２でアクティビティが発生すると判断したら、要求１３４を再びアサートする。使用する要求１３４は被制御回路（この例では１３０）を必要とする第１のリソース命令の前の命令数またはサイクル数の測定結果に基づいている。また、要求１３４はコンパイラ命令（そのデコード結果が、リソース命令が引き続くディスパッチの間にキューに入り被制御回路の機能を使用することになることを示している命令）、または被制御回路を必要とするリソース命令を検出する命令バッファ中のルックアヘッド論理で生成されている。
【００４５】
使用する要求１３４によってブリーダ２２４はオンするが、この例ではＲＥＡＤＹ２３４が“Ｌ”であるから、フッタ・デバイス制御回路２２６は主スイッチ２２８をオフのままにしておく。仮想接地２３０はブリーダ２２４を通じて徐々に放電するから、論理２２２は徐々にオンし、そうでなかったら発生したであろう大きな電流スパイク（ｄＩ／ｄｔ）を最小化することができる。仮想接地２３０がレベル検出回路２２０のスイッチング点に到達すると、スイッチはレベル検出回路２２０を通じて伝播し始める。いくぶんの遅延ののち、レベル検出回路２２０はＲＥＡＤＹ２３４を“Ｈ”に駆動し、再びＲＥＡＤＹ２３４とパワーオン要求信号１３４とをＡＮＤする。これに応答して、フッタ・デバイス制御回路２２６が主スイッチ２２８を閉じる。主スイッチ２２８は仮想接地２３０を接地にクランプする。たとえばＩＤＵ１１４が出す短期のパワーオン要求は予測テーブルＵＨＴ１４０に由来する長期のパワーオン要求とまったく同じに処理する。仮想接地２３０が、パワーオン要求をアサートしたときにＲＥＡＤＹ２３４がアサートしているほどすでに十分に“Ｌ”であれば、ブリーダ２２４と主スイッチ２２８はほとんど同時にオンする。この場合、仮想接地２３０の電圧レベルは十分に低いから、仮想接地２３０から接地（ＧＮＤ）へ流れるプルダウン放電電流は小さい。パワーオン要求が到着したときＲＥＡＤＹ２３４が逆アサートされていると、通常の「ブリード（bleeding）」が行なわれる。このあとＲＥＡＤＹ２３４をアサートする（そして主スイッチ２２８を閉じる）。上述したように、論理回路２２２はＲＥＡＤＹがアサートされる前に新たな仕事（マシン命令）を受け入れることはない。したがって、時として短期のパワーオン要求は性能遅延または性能ペナルティを招来する。
【００４６】
図７はＣＭＯＳレベル検出回路２２０の例を示す図である。この例では、仮想接地入力２３０は非対称の２つのインバータ２２０２、２２０４の第１のものに渡される。第１の非対称インバータ２２０２の出力は第２の非対称インバータ２２０４の入力になる。第２の非対称インバータ２２０４の出力は直列接続されたインバータ群（この例では３個）２２０６、２２０８、２１０の入力になる。直列接続されたインバータ群２２０６、２２０８、２１０の出力がＲＥＡＤＹ２３４である。非対称インバータ２２０２、２２０４は普通の過渡スイッチング応答特性（すなわち特定の技術用の普通の立ち上がり立ち下がり時間〔たとえば１００ピコ秒（１００ｐｓ）の立ち上がり立ち下がり〕を有するパルス）を有する。すなわち、出力は一の方向の方が他の方向よりより速くスイッチングする。この例では、２つの非対称のインバータ２２０２、２２０４の各々は第１の種類の一連の直列接続されたＦＥＴと第２の種類の１つのＦＥＴとを備えている。この例では、非対称インバータ２２０２はＶddとその出力との間に４個のＰ型ＦＥＴ（ＰＦＥＴ）、および出力と接地との間に１個のＮ型ＦＥＴ（ＮＦＥＴ）を備えている。非対称インバータ２２０４はＶddとその出力との間に１個のＰ型ＦＥＴ（ＰＦＥＴ）、および出力と接地との間に４個のＮ型ＦＥＴ（ＮＦＥＴ）を備えている。したがって、第１の非対称インバータ２２０２の出力は立ち下がりの方がその立ち上がりよりも速い。第２の非対称インバータ２２０４の出力は立ち上がりの方がその立ち下がりよりも速い。この非対称性によって、仮想接地２３０の非対称性が偏倚（へんい）される。仮想接地２３０は論理サブスレショルド漏洩電流に起因して小さなブリーダ・デバイス２２４によってその立ち上がりよりも速く“Ｌ”に引き込まれる。直列接続されたインバータ群２２０６、２２０８、２２１０はＲＥＡＤＹ出力２３４を整形するように機能する。付加する遅延はごくわずかである。
【００４７】
図８は図６の例の供給ノード（仮想接地２３０）のパワーアップ／パワーダウン電圧応答特性を示す図である。パワーダウン要求は２４０でアサートして開始し、パワーアップは２４２でアサートする。したがって、図６、図７、図８について、応答曲線２４４はＬｄＩ／ｄｔ制御要求１３４のアサートに対する応答を示している。これに対して、応答曲線２４６はパワーオン要求のアサートに対する応答を示している。応答曲線２４６は放電速度が応答曲線２４４よりずっと急峻である。応答曲線２４６はブリーダ・スイッチ２２４、レベル検出回路２２０、およびフッタ・デバイス制御回路２２６が実現しているＬｄＩ／ｄｔ制御機構がない場合に観察される。２つの応答曲線２４４、２４６における主な相違点は２４２におけるパワーアップに対する応答にある。すなわち、短期の要求に対する応答２４６における仮想接地２３０の立ち下がりはＬｄＩ／ｄｔ制御要求対する応答２４４におけるの場合よりずっと急峻である。破線２４８はＲＥＡＤＹの閾値を表わしている。２４８未満では論理は有効であり、レベル検出回路２２０はＲＥＡＤＹ２３４を“Ｈ”に駆動している。２４８超では論理２２２は接地を利用できず、ＲＥＡＤＹ２３４は“Ｌ”である。２つの曲線２４４、２４６の頂点（この例では実質的に２４２）は漏洩が停止し論理が完全にオフの地点と同じである。また、仮想接地が傾斜を上って下るとき、漏洩電流は低減しつつあり、漏洩電力は徐々に少なくなって停止する。これにより、全漏洩電力が低減するとともに節減される。
【００４８】
パワーオフ要求を受け取ると、主スイッチ２２８は開き、ブリーダ・デバイスも（閉じている場合には）開く。２４０と２４２の双方に示すように、仮想接地２３０は立ち上がり、“Ｈ”にフロートする。フッタ・デバイス制御回路２２６が主スイッチ２２８を開くのを可能にする制御条件（たとえば予測アイドル・フェーズ）の下では、仮想接地２３０は完全な供給電圧値（この例ではＶdd）に向かってチャージアップする傾向がある。供給ゲーティングを行なっていない場合にユニット論理２２２でＧＮＤへ流れる（静的）漏洩電流は仮想接地のキャパシタンスを充電するから、漏洩は最終的には停止する。（たとえば「ウエイクアップ」要求と「スリープ」要求を迅速に切り替えるのに応答して）主スイッチ２２８の開閉を頻繁に繰り返すと、電力節減の効果が低減する。なぜなら、部分的に充電する（すなわち頂点に到達せず傾斜のなだらかな領域に到達しない）のは仮想接地のキャパシタンスのみであり、被制御論理ユニット２２２はそのオフ状態に十分に長く留まれないからである。したがって、レベル検出回路２２０は仮想接地２３０を特徴付ける好適な電気パラメータを監視して主スイッチ２２８を時期尚早に閉じないようにする。それゆえ、この例ではレベル検出回路２２０が仮想接地２３０の電圧を監視しているが、他の好適な電気パラメータ（たとえば電流、電力、電荷など）を監視してもよい。
【００４９】
パワーアップ／パワーダウン要求は特定のアイドル・ユニット（たとえば浮動小数点ユニット）に対して数十ないし数百サイクル先行してゲーティング機会を予測するソフトウェア（コンパイラやＯＳ）およびアーキテクチャ上のサポートによって生成することができる。しかしながら、そのような要求はそのようなソフトウェアと長期の供給ゲーティング・イベント予測を実現するハードウェア技術との組み合わせを用いて生成するのが望ましい。したがって、特定の回路ブロックとユニットは大きな性能上のオーバヘッドを招来することなく明白かつ切れ目無くパワーアップ／パワーダウンすることができる。ゲーティングのための従来の解決策はハードウェアのみであろうがハードウェアとソフトウェアの組み合わせであろうが、正確な予測ウインドウを微調整するのに履歴ベースの学習を採用していなかった。したがって、本発明はより効果的で効率的な供給ゲーティング調整法を提供するものである。
【００５０】
任意実行事項として、大きな電流サージを発生させる可能性のあるいくつかのユニットを同時にオンさせるのを避けるために追加的にスタガ調整を含めてもよい。この追加的なスタガ調整によって、複数のユニットを許容できる形でスタガ調整することによりユニット群をオンさせてターンオン電流を許容できる期間に分散させるとともにピーク電流を許容できる範囲内に維持することが保証される。たとえば、複数のユニットに対する長期のカウントダウン値を調整することにより、そのような時間スタガ調整を実現することができる。
【００５１】
本発明はカバー範囲が広く、長期および短期双方の予測／要求ならびに関連する判断論理をサポートする。そして、これにより、最小のＬｄＩ／ｄｔノイズでユニット群をオンさせ、予測を用いたターンオフによって電力を節減することを保証している。所定の設計内の特定の例示では、これらの一般的な特徴のうちの少なくとも１つを省略することにより、電力節減効果を低めたり性能ペナルティを招来するというコストを払って面積を節約し、または複雑さを軽減することができる。
【００５２】
本発明は特定のイベントに対して数十サイクル、数百サイクル、あるいはおそらく数千サイクルさえ先行して供給ゲーティングを行なう履歴ベースの予測法を提供できる点で有利である。また、本発明は選択した任意のレベル（たとえばユニット・レベルまたはパイプライン・ステージ・レベル）で適用することができる。さらに、そのような長期の予測によって、関連するハードウェアが、ゲーティング・イベントの開始を円滑なハードウェア・ゲーティングを保証する十分に規定されたステップ群にステージングすることが可能になる。これにより、ＬｄＩ／ｄｔ効果を最小化することができる。また、漏洩の低減に付随する通常のアーキテクチャ上の性能ペナルティ（ＣＰＩ（cycles-per-instruction: 命令当りのサイクル数）の増大）を避けることができる。
【００５３】
以上、（例示した）いくつかの好適な実施形態の観点から本発明を説明したが、当業者が理解しうるように、本発明は特許請求の範囲の本旨と範囲の内で変更して実施することができる。
【図面の簡単な説明】
【００５４】
【図１】本発明に従いサブスレショルド漏洩電力消費を低減するとともに調整した好適な実施形態の高レベルのブロック図の例を示す図である。
【図２】好適なユニット・レベル・アクティビティ予測論理のブロック図の例を示す図である。
【図３】個別の要求信号ｒｅｑj を生成するパワーアップ／パワーダウン要求論理のブロック図の例を示す図である。
【図４】個別の要求信号ｒｅｑj を生成するパワーアップ／パワーダウン要求論理のブロック図の例を示す図である。
【図５】好適な実施形態に係るプロセッサにおいてユニットを選択的にパワーアップ／パワーダウンする状態図である。
【図６】本発明の好適な実施形態に従い、ユニット・レベル・アクティビティ予測論理が出すウエイクアップ／スリープ要求に応答して供給電圧スイッチングを論理に適用するプロセッサ断面の例を示す図である。
【図７】本発明の好適な実施形態に従い、ユニット・レベル・アクティビティ予測論理が出すウエイクアップ／スリープ要求に応答して供給電圧スイッチングを論理に適用するプロセッサ断面の例を示す図である。
【図８】図６の例の供給ノードのパワーアップ／パワーダウン電圧応答特性を示す図である。
【符号の説明】
【００５５】
１００  プロセッサ
１０２  命令キャッシュ（ＩＣＡＣＨＥ）
１０４  命令フェッチ・アドレス・レジスタ（ＩＦＡＲ）
１０６  命令バッファ（ＩＢＵＦ）
１０８  マルチプレクサ（ＭＵＸ）
１１０  分岐履歴テーブル／分岐目標バッファ論理（ＢＨＴ／ＢＴＢ）
１１２  分岐ユニット（ＢＲＵ）
１１４  命令デコード−ディスパッチ・ユニット（ＩＤＵ）
１１６  発行キュー
１１８  ロード−ストア・ユニット（ＬＳＵ）
１２０  固定小数点整数実行ユニット（ＦＸＵ）
１２２  浮動小数点実行ユニット（ＦＰＵ）
１２４  データ・キャッシュ（ＤＣＡＣＨＥ）
１２６  汎用（整数）データ・レジスタ（ＧＰＲ）
１２８  浮動小数点データ・レジスタ（ＦＰＲ）
１３０  ユニット・レベル・アクティビティ予測論理
１３２  現在サイクルのマシン状態ベクトル
１３４  要求信号
１３６  ＵＶ／ＩＦＡＲレジスタ
１３８  テーブル・インデックス
１４０  利用率履歴テーブル（ＵＨＴ）
１４２  ユニット利用率ベクトル
１４４  長期予測
１４８  即パワーアップ要求ベクトル
１５０  ゲーティング要求管理ユニット（ＧＲＣＵ）
１５２Ａ  パワーオン要求論理
１５２Ｂ  パワーオン要求論理
１５４  パワーオン要求信号
１５６  選択／エンコード論理
１５８  カウント値
１６０  カウントダウン・レジスタ
１６２  優先度マルチプレクサ
１６４  予測されたアクティブ／休眠信号
１６６  パワーオフ要求信号
１６８  期間カウンタ
１７０  リセット
１７２  比較器
１７４  予測期間
１７６  インデックス
１７８  マルチプレクサ
１８０  ＡＮＤゲート
１８２  結果
２００  状態図
２０２  休眠状態
２０４  アクティブ状態
２０６  パワーダウン・カウントダウン状態
２０８  パワーアップ準備状態
２１０  インバータ
２２０  プロセッサ断面
２２０２  インバータ
２２０４  インバータ
２２０６  インバータ
２２０８  インバータ
２２１０  インバータ
２２２  論理
２２４  ブリーダ・デバイス
２２６  フッタ・デバイス制御回路
２２８  主供給スイッチＦＥＴ
２３０  仮想接地
２３２  レベル検出回路
２４４  応答曲線
２４６  応答曲線
２４８  破線
【図１】
2004334872.tif 000003
【図２】
2004334872.tif 000004
【図３】
2004334872.tif 000005
【図４】
2004334872.tif 000006
【図５】
2004334872.tif 000007
【図６】
2004334872.tif 000008
【図７】
2004334872.tif 000009
【図８】
2004334872.tif 000010