(57)【要約】【課題】  感知できるほどの性能損失なしでプロセッサの電力消費を低減させること。【解決手段】  スカラ・プロセッサ又はスーパースカラ・プロセッサのような同期式集積回路である。回路コンポーネント又はユニットが、共通システム・クロックによってクロック駆動され、該共通システム・クロックに同期される。クロック駆動ユニットの少なくとも２つが、多数のレジスタ・ステージ、例えばパイプライン・ステージを含む。クロック駆動ユニット内のローカル・クロック生成装置が、共通システム・クロック及び１つ又はそれ以上の他のユニットからのストール状態を組み合わせ、レジスタ・クロック周波数を上下に調整する。【選択図】      図２
2007521538.tif 000002
【特許請求の範囲】
【請求項１】
共通のシステム・クロックと、
前記共通システム・クロックに同期された複数のクロック駆動ユニットであって、そのうちの少なくとも２つについての各々が、
複数のレジスタ・ステージと、
前記共通システム・クロック及びストール状態を受け取り、前記ストール状態に応答して前記複数のレジスタのクロック周波数を調整するローカル・クロック生成装置と
を備える、クロック駆動ユニットと
を備える同期式集積回路。
【請求項２】
前記ローカル・クロック生成装置が複数の単一ビット・カウンタを含むゲート制御シフト・レジスタ（ＧＣＳＲ）を備える、請求項１に記載の同期式集積回路。
【請求項３】
前記ローカル・クロック生成装置は、前記複数の単一ビット・カウンタの１つから出力を受け取ること、及び、前記出力を前記システム・クロックと組み合わせてレジスタ・ステージ・クロックを生成することを、その各々が行う、複数のローカル・クロック・ドライバをさらに備える、請求項２に記載の同期式集積回路。
【請求項４】
前記複数のレジスタ・ステージがレジスタ・パイプラインのステージであり、前記ＧＣＳＲは、各パイプライン・ステージについて前記複数の単一ビット・カウンタの１つを含む、請求項３に記載の同期式集積回路。
【請求項５】
前記集積回路がスカラ・プロセッサであり、少なくとも２つのクロック駆動ユニットが、前記スカラ・プロセッサ内にＩユニット及びＥユニットを備え、前記Ｉユニットはストール状態を前記Ｅユニットに提供し、Ｅユニットはストール状態を前記Ｉユニットに提供する、請求項４に記載の同期式集積回路。
【請求項６】
前記スカラ・プロセッサが、
前記Ｅユニットと通信するデータ・キャッシュと、
前記Ｉユニット及び前記Ｅユニットと通信するレジスタ・ファイルと
をさらに備え、
前記Ｉユニットは、Ｉキャッシュと、前記Ｉキャッシュからデータを受け取るＩキューと、前記Ｉキューからデータを受け取るＩパイプとを備え、
前記Ｅユニットは、前記Ｉパイプからデータを受け取るＥキューと、前記Ｅキューからデータを受け取るＥパイプとを備える、請求項５に記載の同期式集積回路。
【請求項７】
前記Ｉユニット及び前記Ｅユニットの各々において、前記ＧＣＳＲのそれぞれにおける出力が、前記複数のクロック・ドライバのうちの対応する１つにおいて前記システム・クロックと組み合わされ、該複数のクロック・ドライバの各々は、対応するパイプライン・ステージを個々にゲート制御する、請求項６に記載の同期式集積回路。
【請求項８】
ストール状態ビットが前記ＧＣＳＲの第１のステージに提供される、請求項７に記載の同期式集積回路。
【請求項９】
ストール状態ビットが１ビット・カウンタに提供され、前記１ビット・カウンタは、前記ストール状態ビットがアサートされなければ設定状態に保持され、前記ストール状態ビットがアサートされたときにカウントを行い、前記１ビット・カウンタの出力は前記ＧＣＳＲの第１のステージに提供される、請求項７に記載の同期式集積回路。
【請求項１０】
前記ＧＣＳＲの最後の出力が、前記複数のクロック・ドライバの各々において前記システム・クロックと組み合わされ、ストール状態ビットが１ビット・カウンタに提供され、前記１ビット・カウンタは、前記ストール状態ビットがアサートされなければ設定状態に保持され、前記ストール状態ビットがアサートされたときにカウントを行い、前記１ビット・カウンタの出力は該ＧＣＳＲの第１のステージに提供される、請求項６に記載の同期式集積回路。
【請求項１１】
前記スカラ・プロセッサがスーパースカラ・プロセッサであり、前記Ｉユニットは、前記Ｅユニットから前記ストール状態ビットに応答してＩキャッシュ・フェッチ帯域幅をさらに調整する、請求項５に記載の集積回路。
【請求項１２】
前記Ｅユニットが、
前記Ｉユニットから命令を受け取り、汎用レジスタ／リネーム・バッファ・ユニットと通信する固定小数点ユニットと、
前記Ｉユニットから命令を受け取り、前記汎用レジスタ／リネーム・バッファ・ユニット及びデータ・キャッシュと通信するロード・ストア・ユニットと、
前記Ｉユニットから命令を受け取り、浮動小数点レジスタ／リネーム・バッファ・ユニットと通信する浮動小数点ユニットであって、前記ロード・ストア・ユニットは前記浮動小数点レジスタ／リネーム・バッファ・ユニットとさらに通信し、前記ロード・ストア・ユニットはストール状態を前記浮動小数点ユニットに提供し、前記浮動小数点ユニットはストール状態を前記ロード・ストア・ユニットに提供する、浮動小数点ユニットと、
前記Ｉユニットから命令を受け取り、前記Ｉユニット内の完了ユニットと通信するベクトル・マルチメディア拡張ユニットと
を備える、請求項１１に記載の同期式集積回路。
【請求項１３】
前記Ｉユニットが、
Ｉキャッシュと、
前記Ｉキャッシュから命令を受け取る命令フェッチ・ユニット／分岐ユニット（ＩＦＵ／ＢＲＵ）と、
前記ＩＦＵ／ＢＲＵから命令を受け取り、受け取った前記命令を前記Ｅユニットに提供する、ディスパッチ・ユニットと
をさらに備える、請求項１１に記載の同期式集積回路。
【請求項１４】
前記ＧＣＳＲの各々における各ステージからの出力が、前記システム・クロックと組み合わされ、対応するパイプライン・ステージを個々にゲート制御する、請求項１２に記載の同期式集積回路。
【請求項１５】
ストール状態ビットが前記ＧＣＳＲの第１のステージに提供される、請求項１４に記載の同期式集積回路。
【請求項１６】
前記ＧＣＳＲの各々において、ストール状態ビットが１ビット・カウンタに提供され、前記１ビット・カウンタは、前記１ビット・カウンタがアサートされなければ設定状態に保持され、前記ストール状態ビットがアサートされときにカウントを行い、前記１ビット・カウンタの出力は前記ＧＣＳＲの各々の第１のステージに提供される、請求項１４に記載の同期式集積回路。
【請求項１７】
前記ＧＣＳＲの最後の出力が、前記複数のクロック・ドライバの各々において前記システム・クロックと組み合わされ、ストール状態ビットが１ビット・カウンタに提供され、前記１ビット・カウンタは、前記ストール状態ビットがアサートされなければ設定状態に保持され、前記ストール状態ビットがアサートされたときにカウントを行い、前記１ビット・カウンタの出力は前記ＧＣＳＲの第１のステージに提供される、請求項１４に記載の同期式集積回路。
【請求項１８】
共通のシステム・クロックと、
前記システム・クロックによってクロック駆動されるＩユニットと、
前記システム・クロックによってクロック駆動され、前記Ｉユニットと通信状態にあるＥユニットと
を備え、
前記Ｉユニット及び前記Ｅユニットの各々は、
複数のレジスタ・ステージと、
前記共通システム・クロック及びストール状態を受け取り、前記ストール状態に応答して前記複数のレジスタのクロック周波数を調整するローカル・クロック生成装置であって、前記Ｉユニットがストール状態を前記Ｅユニットに提供し、前記Ｅユニットがストール状態を前記Ｉユニットに提供する、ローカル・クロック生成装置と
を備える、スカラ・プロセッサ。
【請求項１９】
前記ローカル・クロック生成装置が、
複数の単一ビット・カウンタを含むゲート制御シフト・レジスタ（ＧＣＳＲ）と、
その各々が、前記複数の単一ビット・カウンタの１つから出力を受け取り、前記出力を前記システム・クロックと組み合わせてレジスタ・ステージ・クロックを生成する、複数のローカル・クロック・ドライバと
を備える、請求項１８に記載のスカラ・プロセッサ。
【請求項２０】
前記複数のレジスタ・ステージがレジスタ・パイプラインのステージであり、前記ＧＣＳＲが各パイプライン・ステージについて１つの単一ビット・カウンタを含む、請求項１９に記載のスカラ・プロセッサ。
【請求項２１】
前記Ｅユニットと通信するデータ・キャッシュと、
前記Ｉユニット及び前記Ｅユニットと通信するレジスタ・ファイルと、
Ｉキャッシュと、前記Ｉキャッシュからデータを受け取るＩキューと、前記Ｉキューからデータを受け取るＩパイプと、を備えるＩユニットと、
前記Ｉパイプからデータを受け取るＥキューと、前記Ｅキューからデータを受け取るＥパイプと、を備えるＥユニットと
をさらに備える、請求項２０に記載のスカラ・プロセッサ。
【請求項２２】
前記Ｉユニット及び前記Ｅユニットの各々は、前記ＧＣＳＲの出力を、前記複数のクロック・ドライバのうちの対応する１つにおいて、前記システム・クロックと組み合わされ、前記複数のクロック・ドライバの各々は、対応するパイプライン・ステージを個々にゲート制御する、請求項２１に記載のスカラ・プロセッサ。
【請求項２３】
ストール状態ビットが前記ＧＣＳＲの第１のステージに提供される、請求項２２に記載のスカラ・プロセッサ。
【請求項２４】
ストール状態ビットが１ビット・カウンタに提供され、前記１ビット・カウンタは、前記ストール状態ビットがアサートされなければ設定状態に保持され、前記ストール状態ビットがアサートされたときにカウントを行い、前記１ビット・カウンタの出力は前記ＧＣＳＲの第１のステージに提供される、請求項２２に記載のスカラ・プロセッサ。
【請求項２５】
前記ＧＣＳＲの最後の出力が前記複数のクロック・ドライバの各々において前記システム・クロックと組み合わされ、ストール状態ビットが１ビット・カウンタに提供され、前記１ビット・カウンタは、前記ストール状態ビットがアサートされなければ設定状態に保持され、前記ストール状態ビットがアサートされたときにカウントを行い、前記１ビット・カウンタの出力は前記ＧＣＳＲの第１のステージに提供される、請求項２１に記載のスカラ・プロセッサ。
【請求項２６】
共通のシステム・クロックと、
前記システム・クロックによってクロック駆動されるＩユニットであって、
Ｉキャッシュと、
前記Ｉキャッシュから命令を受け取る命令フェッチ・ユニット／分岐ユニット（ＩＦＵ／ＢＲＵ）と、
前記ＩＦＵ／ＢＲＵから命令を受け取り、実行のために受け取った前記命令を送るディスパッチ・ユニットと
を備えるＩユニットと、
前記システム・クロックによってクロック駆動されるＥユニットであって、
前記Ｉユニットから命令を受け取り、汎用レジスタ／リネーム・バッファ・ユニットと通信する固定小数点ユニットと、
前記Ｉユニットから命令を受け取り、前記汎用レジスタ／リネーム・バッファ・ユニット及びデータ・キャッシュと通信するロード・ストア・ユニット（ＬＳＵ）と、
前記Ｉユニットから命令を受け取り、浮動小数点レジスタ／リネーム・バッファ・ユニットと通信する浮動小数点ユニット（ＦＰＵ）であって、前記ロード・ストア・ユニットは前記浮動小数点レジスタ／リネーム・バッファ・ユニットとさらに通信し、前記ロード・ストア・ユニットはストール状態を該浮動小数点ユニットに提供し、前記浮動小数点ユニットはストール状態を前記ロード・ストア・ユニットに提供する、浮動小数点ユニットと、
前記Ｉユニットから命令を受け取り、前記Ｉユニット内の完了ユニットと通信するベクトル・マルチメディア拡張ユニットと
を備えるＥユニットと、
前記ＬＳＵ及び前記ＦＰＵの各々内にあって、前記共通システム・クロックとストール状態とを受け取り、前記ストール状態に応答してユニット・レジスタのクロック周波数を調整するローカル・クロック生成装置と
を備える、スーパースカラ・プロセッサ。
【請求項２７】
前記ストール状態がユニット・レベルの動作を示す、請求項２６に記載のスーパースカラ・プロセッサ。
【請求項２８】
前記ＩユニットがＥユニットのストール状態に応答してフェッチ帯域幅を調整する、請求項２７に記載のスーパースカラ・プロセッサ。
【請求項２９】
集積回路チップ・コンポーネントに対するローカル・クロックのローカル周波数を制御する方法であって、
チップ・コンポーネントの動作レベルを監視するステップと、
第２のコンポーネントにおける動作レベルがしきい値レベルを越えているという表示に応答して、第１のコンポーネントの前記ローカル周波数のクロックを調整するステップと
を有する方法。
【請求項３０】
前記第２のコンポーネントにおける前記動作レベルが、前記しきい値レベルより上に上がった場合に、前記ローカル・クロックが一時停止される、請求項２９に記載の方法。
【請求項３１】
前記第２のコンポーネントにおける前記動作レベルが、前記しきい値レベルより上に上がった場合に、前記クロックの周波数が半分になる、請求項２９に記載の方法。
【請求項３２】
前記動作レベルが第２のしきい値レベルより上に上がった場合に、前記クロックが一時停止される、請求項３１に記載の方法。
【請求項３３】
前記動作レベルが前記しきい値レベルより下に下がった場合に、前記ローカル・クロックが通常の作動周波数に戻る、請求項２９に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般に、複数のクロック駆動されたコンポーネント又はユニットからなるマイクロプロセッサ又はシステムにおける電力消費の低減及び制御に関する。
【背景技術】
【０００２】
半導体技術及びチップ製造の進歩により、オンチップ・クロック周波数、単一チップ上のトランジスタの数、及びダイ・サイズ自体が着実に増大し、これに対応してチップ供給電圧も増加してきている。一般的に、クロック駆動された所定のユニットが消費する電力は、その内部で切り換わる周波数と共に直線的に増加する。したがって、チップ供給電圧の減少にもかかわらず、チップ電力消費も同様に増大している。このチップ電力の増大の当然の結果として、チップ・レベル及びシステム・レベルの両方において、冷却及びパッケージング・コストが増大することになる。バッテリ寿命が重要であるシステム（例えば、手持ち式、携帯型、及びモバイル・システム）の末端部分においては、性能を許容できないレベルまで低下させることなく正味エネルギーを減少させることが重要である。したがって、マイクロプロセッサの電力損失の増大が、将来の性能向上のための主な障害になってきている。
【０００３】
スカラ・プロセッサは、一度に１つの命令をフェッチし、発行／実行する。こうした命令の各々は、スカラ・データ・オペランド上で動作する。こうしたオペランドの各々は、単一の又はアトミックなデータ値又は数である。スカラ・プロセッサ内のパイプライン化は、シングル・イシュー・パラダイムを保持しながら、並行処理として知られるもの、すなわち所定のクロック・サイクルにおける多数の命令の処理をもたらす。
【０００４】
スーパースカラ・プロセッサは、所定のマシン・サイクルにおいて多数の命令をフェッチし、発行し、実行することができる。さらに、通常、各々の命令のフェッチ、発行、及び実行経路はパイプライン化され、さらなる並行処理を可能にする。スーパースカラ・プロセッサの例には、ＩＢＭ  Ｃｏｒｐｏｒａｔｉｏｎ社からのＰｏｗｅｒ／ＰｏｗｅｒＰＣプロセッサ、Ｉｎｔｅｌ  Ｃｏｒｐｏｒａｔｉｏｎ社からのＴｈｅ  Ｐｅｎｔｉｕｍ  Ｐｒｏ（Ｐ６）プロセッサ・ファミリー、Ｓｕｎ  Ｍｉｃｒｏｓｙｓｔｅｍｓ社からのｔｈｅ  Ｕｌｔｒａｓｐａｒｃプロセッサ、Ｈｅｗｌｅｔｔ  Ｐａｃｋａｒｄ  Ｃｏｍｐａｎｙ（ＨＰ）社からのｔｈｅ  ＰＡ−ＲＩＳＣプロセッサ、及びｅｒｓｔｗｈｉｌｅ  Ｃｏｍｐａｑ  Ｃｏｒｐｏｒａｔｉｏｎ（現在はＨＰ社と併合された）からのＡｌｐｈａプロセッサ・ファミリーが含まれる。
【０００５】
典型的な形では、ベクトル・プロセッサは、パイプライン化され、単一のアーキテクチャ・ステップ又は命令におけるアレイ全体の数について１つの演算を実行することができる。例えば、単一の命令は、アレイＡの各エントリをアレイＢの対応するエントリに付加し、その結果をアレイＣの対応するエントリ内に格納することができる。ベクトル命令は、通常、基本的なスカラ命令の組の延長としてサポートされる。大きいアプリケーション内でベクトル化できるそれらのコード・セクションだけが、ベクトル・エンジン上で実行される。ベクトル・エンジンは、単一のパイプライン型実行ユニットとすることができ、或いは異なるデータについて同じ命令を同時に実行する多数の同一実行ユニットを有する、アレイ又は単一命令の多数データ（ＳＩＭＤ）マシンとして組織化することができる。例えば、一般的に、Ｃｒａｙスーパーコンピュータは、ベクトル・プロセッサである。
【０００６】
同期クロック式プロセッサ又はシステムは、該システムを含む全てのユニット又はコンポーネントを駆動する単一のグローバル・マスター・クロックを有する。場合によっては、クロックのレシオ導関数が、主又はマスター・クロック周波数より速いか又は遅い特定のサブユニットを循環させることができる。通常は、設計により、こうしたクロック決定が統計的に予め定められ、予め設定される。例えば、Ｉｎｔｅｌ  Ｐｅｎｔｉｕｍ４プロセッサは、表面上、ダブル・ポンピング又はウェーブ・パイプラインとして当該技術分野において周知のものを用いて、チップ・マスター・クロックの２倍速い整数パイプをクロック駆動する。こうしたクロック倍速化技術は、プロセッサの実行速度及び性能を増大させるものである。しかしながら、バス及びオフチップ・メモリ速度は、プロセッサ・コンピューティング論理コアに追いつかなかった。したがって、最先端の技術を用いたプロセッサは、主プロセッサのクロック周波数の整数分の一である周波数で作動するオフチップ・バス及びキャッシュを有する。通常、これらのクロック作動周波数は、システム設計中に固定される。これは、現世代のプロセッサ複合体が、多数のクロック速度をもつことができるためである。場合によっては、プロセッサと外部バス又はメモリとの間の何らかの性能の不一致を軽減するために、より高性能のマシンにおいてダブル・ポンピング及びウェーブ・パイプラインが用いられる。
【０００７】
非特許文献１は、再生時に、すなわち特定のチップ領域、コンポーネント、又はラッチを供給するローカル・クロック・バッファ（ＬＣＢ）内で、クロックを使用不可にすることができる同期クロック・ゲーティングを用いる電力低減について説明する。より粗いレベルの制御において、クロックは、機能上の境界に沿ってゲート制御される。より細かいレベルの制御において、クロックは、個々のラッチにおいてゲート制御される。例えば、非特許文献２は、各サイクルにおいてディスパッチされ、実行される命令に基づいてクロックを異なる実行ユニットにゲート制御することを教示する。
【０００８】
粗い粒子のユニット・レベルのクロック・ゲーティングは、プロセッサが、一連の特定の機能クラスの命令、例えば、整数のみ又は浮動小数点のみの命令を実行する場合に有利である。入力作業負荷が、プロセッサが整数コードのみを見るというものであるとき、浮動小数点ユニットへのクロック再生装置を使用不可にすることができる。同様に、浮動小数点のみの演算の際に、整数ユニットへのクロックを使用不可にすることができる。このことにより、相当量のチップ電力を節約することができる。粗いアイドル制御は、通常、連続的な命令を通したソフトウェアを用いて、又はアイドル期間を検出するためのハードウェアを用いて、局所的に行われる。通常、細かいアイドル制御は、無効なデータ又は重要度が低いデータの不必要な伝搬を回避することによって、命令のデコード中に局所的にも行われる。起点の初期点から下流のステージ又はユニットへのゲーティング制御情報の原因となるフローは、フィード・フォワード・フローと呼ばれている。こうした流路は、明白なバックワード・フローを有するループを含むことができるが、原因・結果情報フローは、依然として、フィード・フォワード・プロセスであると考えられる。このように、粗いアイドル制御及び細かいアイドル制御の両方が自動的にトリガされ、フィード・フォワードされる。
【０００９】
他方、フィード・フォワード・フローを調整するために下流のパイプラインのストール信号を用いることにより、フィードバック制御システムが構成される。ここで、制御情報のフローは、下流の「結果」から上流の「原因」までのものである。粗い及び細かいストール制御は、主として、パイプライン型プロセッサにおける有効なストール・データの上書きを防止するために用いられるが、こうした機構を用いて、電力消費を節約することもできる。例えば、非特許文献３は、同期パイプラインにおける電力低減のための細かい粒子のストール伝搬機構を提案しており、これは、先に参照した非特許文献２におけるような、「有効」ビットを用いるクロック・ゲーティングのより従来型の細かい粒子のフィード・フォワード機構を補完するものである。非特許文献４も参照されたい。しかしながら、非特許文献３におけるように、刊行された細かい粒子のストール・ゲーティング（フィードバック）機構は、本発明におけるような情報のフロー速度（クロック又はバス帯域スロットリングを介する）を制御するために用いられない。
【００１０】
アドレス指定する必要がある粗いアイドル制御から少なくとも２つの問題が生じる。第１に、大きな過渡電流の低下及び増大は、オンチップ供給電圧における許容できないレベルの誘電（Ｌｄｉ／ｄｔ）ノイズをもたらすことがある。第２に、正しい機能演算を維持するために処理を断続的にゲート制御するために、オーバーヘッド・サイクルが必要とされる。作業負荷におけるより細かい粒子の相変化のためにゲート制御モードと使用可能モードとの間の切り換えを頻繁に行いすぎると、許容できない性能への影響がもたらされる。
【００１１】
さらに、先端技術の細かいアイドル制御は、例えば、データ無効条件又は重要度が低いオペランド条件に基づいて、ステージ・レベルのクロック・ゲーティングをパイプライン化するための局所的に生成されたゲート信号又は条件に依存している。これらの最先端の手法は、予測又は予想ベースでゲーティング信号を生成するものではない。したがって、ゲート信号をアサーションの前に利用可能にし、エラーのないクロック・ゲーティング演算のための適切な期間アサートしなければならないので、タイミング要件が重要になることが多い。非特許文献５は、これらの制約により、設計タイミング分析がどのように著しく複雑になり、さらにクロック周波数性能が低下されるかを説明する。
【００１２】
基本制御機構がフィード・フォワード（原因・結果フロー）式であろうと又はフィードバック（結果・原因フロー）に基づいていようと、最先端のクロック・ゲーティング技術は、粗いものであっても細かいものであっても、空間制御専用でもある。これは、マシンの領域又は他の場所における一時的動作又は履歴に関係なく、影響される領域における冗長クロッキングを排除するために、利用情報が用いられるためである。下流（消費者）のユニット及びステージ（例えば、実行パイプ又は発行キュー）における動作状態及びイベントは、非隣接領域（例えば、命令フェッチ又はディスパッチ・ユニット）における上流（製造者）のクロッキング又は情報フロー速度を調整するようにフィードバックされない。同様に、上流の製造者領域における動作状態及びイベントは、下流の消費者クロッキング又は情報フロー速度を調整するようにフィード・フォワードされない。また、ゲーティング・オフ・クロック信号は、典型的には全か無であり、ここで、クロック信号は使用可能にされるか否かのいずれかである。
【００１３】
【特許文献１】２００１年６月１２日にＳｐｒｏｃｈ他に付与された、「Ｍｅｔｈｏｄ  ａｎｄ  Ｓｙｓｔｅｍ  ｆｏｒ  Ｐｉｐｅ  Ｓｔａｇｅ  Ｇａｔｉｎｇ  Ｗｉｔｈｉｎ  ａｎ  Ｏｐｅｒａｔｉｎｇ  Ｐｉｐｅｌｉｎｅｄ  Ｃｉｒｃｕｉｔ  ｆｏｒ  Ｐｏｗｅｒ  Ｓａｖｉｎｇ」という名称の米国特許第６，２４７，１３４２号明細書
【非特許文献１】Ｒａｂａｓｙ、Ｊａｎ  Ｍ．及びＰｅｄｒａｍ、ｅｄ．著、Ｌｏｗ  Ｐｏｗｅｒ  Ｄｅｓｉｇｎ  Ｍｅｔｈｏｄｏｌｏｇｉｅｓ（Ｋｌｕｗｅｒ  Ａｃａｄｅｍｉｃ  Ｐｕｂｌｉｓｈｅｒｓ、１９９６年）
【非特許文献２】Ｇｅｏｒｓａ他著、Ａ２．２Ｗ、８０ＭＨｚ、ｓｕｐｅｒｓｃａｌａｒ  ＲＩＳＣ  ｍｉｃｒｏｐｒｏｃｅｓｓｏｒ、ＩＥＥＥ  Ｊｏｕｒｎａｌ  ｏｆ  Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｃｉｒｃｕｉｔｓ、ｖｏｌ．２９、ｎｏ．１２、１９９４年１２月、ｐｐ．１４４０−１４５４
【非特許文献３】Ｊａｃｏｂｓｏｎ他著、「Ｓｙｎｃｈｒｏｎｏｕｓ  ｉｎｔｅｒｌｏｃｋｅｄ  ｐｉｐｅｌｉｎｅ」、ＩＥＥＥ  ＡＳＹＮＣ−２００２  ｃｏｎｆｅｒｅｎｃｅ、２００２年４月
【非特許文献４】Ｇｏｗａｎ他著、「Ｐｏｗｅｒ  ｃｏｎｓｉｄｅｒａｔｉｏｎｓ  ｉｎ  ｔｈｅ  ｄｅｓｉｇｎ  ｏｆ  ｔｈｅ  Ａｌｐｈａ  ２１２６４  ｍｉｃｒｏｃｅｓｓｏｒ」、予稿集、１９９８  ＡＣＭ／ＩＥＥＥ  Ｄｅｓｉｇｎ  Ａｕｔｏｍａｔｉｏｎ  Ｃｏｎｆｅｒｅｎｃｅ、ｐｐ．７２６−７３１（１９９８年６月）
【非特許文献５】Ｇｏｗａｎ，Ｍ．Ｋ．、Ｂｉｒｏ，Ｌ．Ｌ．及びＪａｃｋｓｏｎ，Ｄ．Ｂ．、Ｐｏｗｅｒ  ｃｏｎｓｉｄｅｒａｔｉｏｎｓ  ｉｎ  ｔｈｅ  ｄｅｓｉｇｎ  ｏｆ  ｔｈｅ  Ａｌｐｈａ  ２１２６４  ｍｉｃｒｏｃｅｓｓｏｒ、Ｐｒｏｃ．１９９８  ＡＣＭ／ＩＥＥＥ  Ｄｅｓｉｇｎ  Ａｕｔｏｍａｔｉｏｎ  Ｃｏｎｆｅｒｅｎｃｅ、ｐｐ．７２６−７３１（１９９８年６月）
【非特許文献６】Ｏｈｎｉｓｈｉ，Ｍ．、Ｙａｍａｄａ，Ａ．、Ｎｏｄａ，Ｈ．及びＫａｍｂｅ，Ｔ．著、「Ｍｅｔｈｏｄ  ｏｆ  Ｒｅｄｕｎｄａｎｔ  Ｃｌｏｃｋｉｎｇ  Ｄｅｔｅｃｔｉｏｎ  ａｎｄ  Ｐｏｗｅｒ  Ｒｅｄｕｃｔｉｏｎ  ａｔ  ｔｈｅ  Ｒｔ  Ｌｅｖｅｌ  Ｄｅｓｉｇｎ」、Ｐｒｏｃ．Ｓｙｍｐ．Ｏｎ  Ｌｏｗ  Ｐｏｗｅｒ  Ｅｌｅｃｔｒｏｎｉｃｓ  ａｎｄ  Ｄｅｓｉｇｎ（ＩＳＬＰＥＤ）、１９９７年、ｐｐ．１３１−１３６
【発明の開示】
【発明が解決しようとする課題】
【００１４】
このように、性能（オーバーヘッド）の低下を招くことなく、下にある回路に対する大きな電流／電圧の揺れがなく、細かい粒子の空間及び一時的粒度で作動できる接続されたパイプライン化ユニットのための改善されたクロック制御に対する必要性がある。
【課題を解決するための手段】
【００１５】
感知できるほどの性能損失なしでプロセッサの電力消費を低減させることが、本発明の目的である。
【００１６】
本発明は、スカラ・プロセッサ又はスーパースカラ・プロセッサのような同期式集積回路である。回路コンポーネント又はユニットが、共通のシステム・クロックによってクロック制御され、該共通システム・クロックに同期される。クロック制御されるユニットの少なくとも２つが、例えば、パイプライン・ステージのような多数のレジスタ・ステージを含む。クロック駆動ユニットの各々におけるローカル・クロック生成装置が、共通システム・クロック及び１つ又はそれ以上の他のユニットからのストール状態を組み合わせてレジスタのクロック周波数を上下に調整する。
【発明を実施するための最良の形態】
【００１７】
以下の及び他の目的、態様、並びに利点は、図面を参照して、本発明の例証となる実施形態の以下の詳細な説明からより良く理解されるであろう。
【００１８】
ここで図をより具体的に参照すると、図１は、典型的な最先端のパイプライン・スカラ・プロセッサ１００及び対応する命令タイミング・ダイアグラムの高レベル・ブロック図を示す。主機能データ経路は、通常、命令ユニット（Ｉユニット）１０２及び実行ユニット（Ｅユニット）１０４と呼ばれる２つの主コンポーネント又はユニットに分けられる。Ｉユニット１０２及びＥユニット１０４内の多くの詳細なサブユニット並びに例えば分岐予測論理のような機能論理は、本発明の説明に密接な関係がないので、こうしたプロセッサ１００におけるクロック制御全体の説明を明確にするために省略される。この例のプロセッサ１００は、ユニット、サブユニット、又は内部に含まれる付随する格納リソースの冗長クロッキングを防止するためのクロック・ゲーティングを含まない、パイプライン化されたスカラ設計を表す。
【００１９】
ユニット１０２、１０４の一方又は両方によりアクセスされるオンチップ格納部は、レジスタ・ファイル（ＲＥＧファイル）１０６、命令キャッシュ（Ｉキャッシュ）１０８、及びデータ・キャッシュ（Ｄキャッシュ）１１０を含む。ＲＥＧファイル１０６は、一般に、ユニット１０２、１０４の両方からアクセスできる共有リソースであり、したがって、別個のエンティティとして扱われる。Ｉキャッシュ１０８は、Ｉユニット・パイプのステージを終了させる第１のものであり、したがって、Ｉユニット１０２の一部と考えられる。Ｄキャッシュ１１０は、通常、Ｅユニット１０４のみからアクセス可能であるので、該Ｅユニット１０４の一部として扱われる。２つの別個のローカル・クロック・バッファ（ＬＣＢ）１１２、１１４が、各々共通の同期クロック１１５を増幅し、これをユニット１０２、１０４の対応するものに分散させる。各々のユニット１０２、１０４は、入力キュー１１６Ｉ、１１６Ｅ及びパイプ１１８Ｉ、１１８Ｅを含む。任意に、Ｉユニット１０２及びＥユニット１０４内に、共通システム・クロックのより細かい粒子分散、増幅、及び制御のために、ＬＣＢ１１２、１１４のさらなる階層があってもよい。
【００２０】
この例の場合、コンピュータ・プログラムの命令は、Ｉキャッシュ１０８すなわちＩユニット・パイプの第１ステージ内に含まれる。典型的には、Ｉキャッシュ・ミスを引き起こし得る種々の条件において、Ｉキャッシュ１０８は、プロセッサ・サイクルの変数をストールさせることができる。このストールは、前の命令転送ステージすなわち命令メモリ階層のより低いレベルにおけるミスの影響を暗黙的に吸収する。
【００２１】
同期クロック、パイプラインにおけるストールとは関係なく、ＬＣＢ１１２、１１４を通して各ユニットを連続的に駆動する。スイッチング容量の変調及びパターン・ビットのばらつきが、非常にわずかな範囲ながらも電力消費を変化させる。その結果、プログラム実行の最初から最後までの各クロック時間にわたって、およそ同じ量のエネルギー（ここでは、正規化されたエネルギー単位で表される）が費やされる。このように、節電技術、特に本発明による節電方法を用いることによって、相当なエネルギーを節約することができる。
【００２２】
粗いアイドル制御は、命令の組のアーキテクチャ内に含まれる特別の命令を挿入するコンパイラによって、コード生成中に合成することができ、代替的に、これらの命令は、例えば、特別の割り込みの処理時又は特定のコンテキストスイッチ時に、オペレーティング・システムによって動的に発行することができる。最も粗い制御レベルにおいて、特別のスリープ・タイプの命令又はコマンドを発行することができ、この特別のスリープ・コマンドは、一定時間チップの選択された部分に対してクロックを停止させる使用不可信号を生成することができる。この同じ特別のスリープ・コマンドを用いて、命令フェッチ・プロセスを使用不可にすることができる。同様に、使用不可信号が否定されるとき又はスリープ期間後に暗黙のウェークアップが開始するか、或いは明示的な非同期割り込みを用いてウェークアップを達成することができる。当該技術分野において公知のように、種々の電力切断モードには、種々のレベルのＬＣＢ階層において選択的に使用不可にされたクロック分散ツリーを提供することができる（例えば、ナップ、ドーズ、又はスリープ）。次のより細かいレベルの粒度において、コンパイラは、該コンパイラが統計的に計算段階を予測できるときはいつでも、特別の命令を挿入し、クロックを所定のユニット、例えば不動小数点ユニットにゲートオフし始めることが可能である。
【００２３】
自己検出機構を含ませることができ、ユニットがアイドル状態であることが分かったときはいつでも、該ユニットがそれぞれのクロックを一定時間使用不可にすることが可能になる。ハードウェアにおいては、プロセッサにおける局所化されたアイドル期間を検出するように論理を設計することができる。次に、検出により、アイドリング領域の一部又は全てについてクロック使用不可化をトリガすることができる。使用不可にされたユニット又はスリープ・ユニットによって受け取られた新しい作業に基づいて、ウェークアップが同様に自動開始される。
【００２４】
より細かいアイドル制御の場合には、動的に定められた信号が、ローカル・クロックをサイクル毎にゲート制御する。例えば、スーパースカラ・マシンのようなプロセッサは、命令時にデコードを決定し、次の実行サイクル中に機能ユニット・パイプをクロック・ゲート制御することができる。このことは、「順序正しい」発行機構を有するプロセッサにおいて良好に働くので、明らかにかつ十分早めに、すなわちデコード時又はディスパッチ時に、ゲート制御決定をなすことができる。命令のクラス情報がエントリごとのベースで中央発行キュー内に保存される場合には、故障している発行キューについても発行時にこうしたゲート信号を生成することができる。
【００２５】
いずれかのパイプライン化されたデータ経路において、冗長クロッキングを動的に検出し、例えば、論理パイプラインに沿ってデータ有効フラグ又はビットを伝搬することを選択的に防止することができる。このデータ有効フラグは、サイクルにおいて生成されたデータが有効であるときにだけ設定される。次いで、各論理ステージについてのデータ有効フラグを、ステージの出力ラッチの設定を可能にするクロックとして用いることができる。このように、無効なデータは、細かい粒子の有効ビット・ベースのパイプライン・ステージ・レベルのクロック・ゲーティングと呼ぶことができるものにおいて、次のパイプライン・ステージを通して不必要にクロック駆動されない。
【００２６】
特許文献１は、第１のステージの論理による従来のサイクル計算におけるパイプラインにおいて変化しない、新しく受信した重要度が低いオペランドとして識別する論理を有するプロセッサを教示する。こうした重要度が低いものとしての不変性の条件信号の検出を用いて、クロックを第１のステージに、続いて次のステージに使用不可にすることができる。
【００２７】
非特許文献６は、様々な種類の冗長ラッチ・クロッキングを防止するためのより精巧な他のアイドル検出機構について説明する。
【００２８】
粗いものであろうと細かいものであろうと、これらの最先端のアイドル制御機構は、上述のように自動的にトリガされ、空間又はフィード・フォワードされ、すなわちゲーティング条件又は信号は、ユニットのアイドリング又は無効状態の検出に基づいて局所的に生成され、不必要なサイクル毎のクロック及びこうした無効なビット又はアイドル状態ビットの存在下でのデータ伝搬を回避する。ユニットは、領域又は機能ユニット全体とすることができ、或いは、パイプライン・ステージ・ラッチの組とすることもできる。
【００２９】
対照的に、第１の実施形態において、要求駆動型クロック・スロットリング、実行ユニット（Ｅユニット）を用いて調整可能に作動する命令ユニット（Ｉユニット）を有する、パイプライン化されたスカラ・プロセッサが、２つのユニット間に製造者・消費者関係を確立する。製造者のＩユニットは、実行ユニットが受信できるより速くない速度で処理するために、準備が完了したデータ使用可能命令を実行ユニットに送る。各々のユニットは、少なくとも１ビットの情報を有する動作状態レジスタを維持する。この実施形態において、Ｉユニット−Ｅユニットの対は、共通の同期クロックによってクロック駆動される。しかしながら、各ユニットについてのクロックは、ユニット間を通過したローカル・ユニット動作情報に基づいて局所的に修正され、制御される。各ユニットについてのローカル・クロック制御は、ローカル・ユニット及び遠隔ユニットの両方すなわち両方のユニットからの動作状態情報の関数である。
【００３０】
図２は、全く同じに表記された図１のものと同一の要素を有する、本発明による要求駆動型又は動作駆動型電力制御式スカラ・プロセッサ１２０の好ましい実施形態間の高レベルの例を示す。この実施形態において、各々の処理ユニット１２２、１２４は、ユニットの動作レベルを監視する動作監視・クロック制御論理１２６、１２８を含む。簡単な実施形態において、単一の動作状態ビット１３０は、ストール／非ストール状態を意味するストール・ビットである。Ｅユニット１２４がストール状態（現在の又は近い将来の）を感知したとき、該Ｅユニット１２４は、ストール・ビット１３０をアサートする。ストール・ビット１３０は、ＩユニットのクロックすなわちＣＬＫ−Ｉ１３２のクロック速度を下方調整し、Ｉユニット１２２をスロットル・ダウン)し、Ｅユニット１２４への命令速度を効果的に減少（又はカットオフ）させるために用いられる。制御の粒度によって、Ｅユニットの動作状態又はストール・ビット１３０は、それぞれのクロック、例えばＥユニット１２４内の１３４を調整することができる。Ｅユニット１２４のストールが終了すると、ＣＬＫ−Ｉ１３２は、その通常のクロック速度までスロットルされる。同様に、Ｉユニット１２２がストール状態（例えば、Ｉキャッシュ１０８のミス）に遭遇したとき、Ｉパイプ１１８Ｉが空であり、よってＥユニット１２４、Ｉパイプの空のビット１３６について何も有していない幾つかのサイクルを用いて、ＣＬＫ−Ｅ１３８を下方調整し、節電する。動作監視・クロック制御論理１２６、１２８のこのスロットル・アップ／ダウン能力は、多数の異なる方法を用いて実施することができ、その幾つかの例が以下に提供される。
【００３１】
したがって、例えば、各ユニットのクロックは、一度に１パイプライン・ステージずつ段階的に停止させることができる。同様に、ゲーティング条件が終了すると、ユニットのクロックが一度に１つのパイプライン・ステージだけ段階的に戻る。制御論理は、有効な情報を失うことなく、インターフェース論理の付加、バッファリング、又はエネルギーの無駄使いであるパイプラインの保持及び再循環なしに、各ユニットのクロックのタイムリーな段階的廃止又は段階的導入を可能にする。代替的に、ユニットのクロック周波数を遅くするか又は減少させて、節電することができる。また、引き続き、必要な場合／必要に応じてクロックを遅くして停止させることもできる。
【００３２】
図３は、ゲート制御シフト・レジスタ（ＧＣＳＲ）１５０が、システム・クロック１１５をＩパイプ１１８Ｉの個々のステージ１５２に送ることを可能にする、動作監視・クロック制御論理一時停止回路の第１の例を示す。ＧＣＳＲ１５０は、クロック駆動された１ビット・フリップ・フロップ１５４の１ビット線形シフト・レジスタであり、１つが各Ｉ−ＰＩＰＥステージ１５２に対応する。システム・クロック１１５は、ＡＮＤゲート１５６の１つにおいてＧＣＳＲ１５０の各ビットにより各々において論理積演算され、ＡＮＤゲート出力としてのシステム・クロック１１５を、まとめてＩ−ＣＬＫ１５８として対応するＩパイプ・ステージ１５２に選択的に送る。通常、この例において、Ｅユニットのストールが検出されないとき、ストール・ビット１３０は、低いままであり、インバータ１６０によって逆にされる。ＧＣＳＲ１５０内に全て１を用いる場合、Ｉパイプ１１８Ｉは、フルスロットルである。したがって、ＡＮＤゲート１５６は、Ｉ−ＣＬＫ１５８のような修正されていないシステム・クロック１１５を、各々が該システム・クロック１１５と同一のＩパイプ・ステージ１５２の各々に送る。Ｅユニットのストール・ビット１３０が０のままである限り、１がＧＣＳＲ１５０にシフトされ、これによりＩパイプ１１８Ｉがフルスロットルに維持される。
【００３３】
この例において、Ｅユニットの動作監視・クロック制御論理（それぞれ図２の１２４及び１２８）は、近い将来のストール状態を感知したとき、Ｅユニットのストール・ビット１３０をアサートする。インバータ１６０によって逆にされたストール・ビット１３０は、０からＧＣＳＲ１５０までを示し、次のシステム・クロック・サイクルにおいて該ＧＣＳＲ１５０にシフトされる。同じサイクルにおいて、ＧＣＳＲ１５０内に及び該ＧＣＳＲ１５０を通して０を同期的にシフトさせながら、第１のＩパイプ・ステージすなわち図２のＩキャッシュからのＩパイプ・ステージを使用不可にし、Ｉパイプ１８１Ｉへのデータ入力を停止させる。ストール・ビット１３０がアサートされる限り、システムのクロック・サイクルごとに１回、０がＧＣＳＲ１５０内にシフトされる。続いて、各々のゼロは、この例においては左から右に波及するＡＮＤゲートの連続するものを通してシステム・クロックを送ることができない状態にする。このように、Ｉパイプ・クロック１５８の１ステージが、左から右に一度にゲートオフされる。したがって、ストール・ビット１３０をアサートする前に、有効なＩパイプ・エントリがＩパイプ１１８Ｉを通してＥユニットに続く。Ｉパイプ１１８Ｉ内の有効な情報を失うことを回避するために、少なくとも使用可能なＥユニット・バッファ（キュー１１６Ｅ）空間がＩパイプ１１８Ｉ内の有効なエントリの数と等しいときに、ストール・ビット１３０をアサートしなければならない。したがって、少なくとも使用可能なＥユニット・バッファ（キュー１１６Ｅ）空間がＩパイプ１１８Ｉ内の有効なエントリの数と等しいときに、ストール・ビット１３０をアサートしなければならない。極端な場合、後者は、単にＩパイプ１１８Ｉの長さに等しい。したがって、保守的な設計において、利用可能な（自由な）キュー・エントリの数がＩパイプ・ステージの数に等しくなる程度まで、Ｅユニットのキュー１１６Ｅが一杯になるときはいつも、Ｅユニット１２４がストール・ビット１３０をアサートする。従来の細かい粒子のステージ・レベルのクロック・ゲーティングにおけるように、Ｅユニット・キュー１１６Ｅ内の空のエントリ又は無効なエントリは、エントリごとの有効ビット（節電のために）を用いてゲート制御されると推定される。
【００３４】
同様に、ストール・ビット１３０が０に戻るとき、すなわちＥユニットの動作が所定のレベルより下に戻ったことを検出したとき、逆の増加すなわちスロットル・アップ動作が生じる。ストール・ビット１３０が低いことにより、有効な入力データをＩパイプ１１８Ｉにシフトした状態で、１のＧＣＳＲ１５０へのシフトが同時にレジュームされる。したがって、連続する次のシステム・クロック・サイクルによって、Ｉ−ＣＬＫ１５８がステージごとにＩパイプ１１８Ｉに対して使用可能にされ、該Ｉパイプ１１８Ｉは、通常の作動をレジュームし、データをフルスロットルでＥユニット１２４に送る。ステージごとにＩ−ＣＬＫ１５８のオフ／オンをゲート制御することにより、大きな電流の揺れが防止され、これにより供給電圧におけるＬｄｉ／ｄｔノイズの影響が最小になる。
【００３５】
図４は、オンデマンド型Ｉ−ＣＬＫスロットリングのための本発明の好ましい実施形態による図３の一時停止回路の代わりに用いることができる又はこれと共に含ませることができるスローダウン回路１７０の第２の例を示す。スローダウン回路１７０は、全く同じに表記された共有又は共通の要素を有する図３の一時停止回路にほぼ類似している。スロー選択１７２が、フリップ・フロップ／１ビット・トグル・カウンタ１７４及びＡＮＤゲート１７６の逆の組の入力の両方に提供される。スロー選択ビット１７２が高いときすなわちアサートされるとき、ＡＮＤゲート１７６は、システム・クロック１１５をクロックの１ビット・カウンタ１７４に選択的に送る。スロー選択ＧＣＳＲ１７８は、最終ステージの出力１８０が全てのＡＮＤゲート１８２に送られる点を除いて、図３のＧＣＳＲ１５０にほぼ類似している。ＡＮＤゲート１８２は、図３のＡＮＤゲート１５６の一時停止選択機能を提供する３つの入力ＡＮＤゲートとすることができる。したがって、ＡＮＤゲート１８２は、最終ステージの出力１８０を、システム・クロック１１５及びＧＣＳＲ（この例においては図示されない図３の１３０）からの対応するステージ出力と組み合わせることができる。ＡＮＤゲート１８２の個々の出力は、対応するＩパイプ１１８Ｉのステージをクロック駆動する。
【００３６】
この実施形態において、Ｉユニットのクロック周波数は、スロー選択１７２に応答してスロットル・ダウン（アップ）させることができる。Ｅユニットは、スロー選択１７２をアサート（ディアサート）することによって、該Ｅユニット内の要求を減速させる（高める）Ｉユニットに警告する。さらに、１つ又はそれ以上のサイクルについて、Ｉ−ＣＬＫ１５８を完全に一時停止する上述の特徴を保持することができ、図３を参照して上述されたように、一時停止は、Ｅユニット・キューがほぼ一杯であるときにトリガされ、よってＧＣＳＲ１５０から対応する個々のＡＮＤゲート１８２への出力を使用不可にする。上述のように、Ｉ−ＣＬＫ１５８は、Ｅユニットのアクティブ・キューの長さが、所定のしきい値より下に減少したときに再始動する。
【００３７】
通常の作動条件において、スロー選択１７２は低いものであり、１ビット制御カウントに、ＧＣＳＲ１７８への連続的な高いシフトを出力させる。したがって、通常、ＧＣＳＲ１７８は、全て１を含み、システム・クロック１１５は、修正されていないものをＩパイプ・ステージ１５２に送る。ＡＮＤゲート１７６は、スロー選択１７２がアサートされ、例えばストールに起因するＥユニット内の要求スローダウンを知らせるとき、１ビット制御カウンタが切り替わるのを防止する。逆の組の入力に対するスロー選択１７４が上昇し、ＡＮＤゲート１７６がシステム・クロック１１５を送るとき、１ビット制御カウンタ１７４が解放される。１ビット制御カウンタ１７４は、０と１の交互シーケンスをＧＣＳＲ１７８に送るのを切り替え始める。この交互パターンがＧＣＳＲ１７８を通して伝搬すると、ＡＮＤゲート１８２へのＩ−ＣＬＫ制御が代替クロック・サイクルにおいて使用可能及び使用不能にされる。効果的に、このことにより、Ｉ−ＣＬＫ１５８として提供される主システム・クロック周波数が半分になる。
【００３８】
図５は、個々のＧＣＳＲステージの出力が対応する個々のＡＮＤゲート１８２に送られる、図３及び図４の実施形態の変形を示す。作動は、ほぼ図４に類似しているが、最終Ｉ−ＰＩＰＥのクロック・スロットリングの点で異なる。スロットル（速度ダウン）段階中、定常状態の作動のもとで、Ｉパイプの代替的なステージが、有効にシステム・クロック周波数の半分において、所定のシステム・クロック・サイクルでクロック駆動される。有効ビット（Ｖ）が、各Ｉパイプ・ステージ内にほんの一例として示される。こうした有効ビットは、通常、図１乃至図５の例のＩパイプ、Ｅパイプ、Ｉキュー及びＥキュー構造体内に存在する。上流のＩユニットの有効ビットは、Ｅユニット内に下流側に伝搬され、従来のフィード・フォワード・スキームに従って、細かい粒子のステージ・レベルのクロック・ゲーティングが付加的な電力を節約することを可能にする。この例において、パイプライン・ステージ毎の有効ビットは、ローカル・ステージ・レベルのクロックを合成するＡＮＤ構造体のために付加的なゲーティングを提供する。本実施形態の特定のＩパイプ・クロック構成は、スロットル（速度ダウン）モード中にＩパイプ・ステージ内の有効データに上書きするのを防止するために、下にある回路（図示せず）を必要とし、例えば、ステージの間又は各ラッチ・ステージのマスター部分とスレーブ部分との間の予備の中間プレースホルダ・ラッチにより、情報の格納を二倍にすることが可能になる。
【００３９】
図６及び図７は、図３の断面に対応するスカラＩパイプ１１８Ｉのさらに詳細な更に別の例１９０と、対応するタイミング・ダイアグラムとを示す。各々のＩパイプ・ステージ１５２は、レジスタ・ステージ１９２によって入出力がひとまとめにされている。この例において、ＧＣＳＲラッチ１５４の各々は、２ステージのラッチであり、本質的に、単一ビットの直列入力並列出力レジスタである。２ステージのラッチ１５４は、第１のステージ・ラッチ１９４及び第２のステージ・ラッチ１９６を含む。第１のステージ・ラッチ１９４は、レジスタ・ステージ１９２内のラッチと同一である。第２のステージ・ラッチ１９６は、第１のステージ・ラッチ１９４のものから負のクロック極性を用いて使用可能にされる。したがって、例えば、クロックの立ち上がり端において第１のステージ・ラッチ１９４がクロック駆動された状態で、クロック立下り端において第２のステージ・ラッチ１９６がクロック駆動され、有効な入力がＩクロック・ドライバ１５６に提供されることを確実にする。図３乃至図５を参照し、図６においてここで述べられたように、Ｉクロック・ドライバ１５６は、ＡＮＤゲートであり、ＡＮＤゲートとして機能する。しかしながら、必要に応じて、各々のＡＮＤゲート１５６は、二相のクロック・ドライバとすることができるクロック・ドライバを含むことができる。入力ブロック１９８は、特定のタイプの選択された一時停止／スロー制御論理のための適切なクロック制御論理を提供する。したがって、図３の例において、入力ブロック１９８は、この第１のステージについて、インバータ１６０及びラッチ１５４の第１のステージ１９４を含む。同様に、図４及び図５の例の場合、入力ブロック１３０は、ラッチ１７４及びＡＮＤゲート１７６を含む。
【００４０】
図８は、本発明をパイプライン式スーパースカラ・プロセッサ２００に適用する例を示す。このスーパースカラ・プロセッサ２００は、Ｉユニット２０２及びＥユニット２２０を含む。Ｉユニット２０２は、命令キャッシュ（Ｉキャッシュ）２０４、命令フェッチ・ユニット（ＩＦＵ）及び分岐ユニット（ＢＲＵ）の両方を含む組み合わせられたＩＦＵ／ＢＲＵ（２０６）、ディスパッチ・ユニット（ＤＰＵ）２０８、完了ユニット（ＣＭＵ）２１０、及び分岐履歴テーブル（ＢＨＴ）及び分岐ターゲット・アドレス・キャッシュ（ＢＴＡＣ）を含む分岐アドレス・ユニット２１４を含む。さらに、Ｉユニット２０２は、監視・クロック制御論理２１６を含む。これらのユニット２０４、２０６、２０８、２１０及び２１４は、対応する公知のこうしたユニットとほぼ同じように作動するが、監視・クロック制御論理２１６によって以下に述べられるように、本発明に従ってクロック駆動される。
【００４１】
通常、ＩＦＵ／ＢＲＵ２０６のＩＦＵは、サイクル毎にＩキャッシュ２０４からの命令をフェッチする。フェッチ帯域幅（ｆｅｔｃｈ＿ｂｗ）（従来技術において、プロセッサは、サイクル毎にフェッチされる命令の最大数として固定される）は、監視・クロック制御論理２１６によって実行中に調整することができる。ＩＦＵは、利用可能な空きスペースに従って、フェッチ・キュー（ＦＥＴＣＨ＿Ｑ）内のフェッチされた命令をＩＦＵ／ＢＲＵ２０６内に配置する。ＩＦＵ内の命令フェッチ・アドレス・レジスタ（ＩＦＡＲ）は、命令フェッチを案内し、各サイクルのはじめに次のフェッチ・アドレスを提供する。ＩＦＵは、各サイクルについての次のフェッチ・アドレスの各々を、（ａ）前のサイクルのＦＥＴＣＨ＿Ｑにフェッチされた命令の数を考慮するために十分にインクリメントされた、前のサイクルのＩＦＡＲ値である次の順次アドレス、（ｂ）前のサイクルにおいて取られるべき、解決される又は予測される分岐命令ターゲット、又は（ｃ）前に予測を誤ったと判断された後の、分岐命令の正しく解決されたフェッチ・アドレスのうちの１つに設定する。分岐・命令フェッチ・アドレス予測ハードウェア２０６は、分岐履歴テーブル（ＢＨＴ）及び分岐ターゲット・アドレス・キャッシュ（ＢＴＡＣ）を含み、命令フェッチ・プロセスを案内する。対応する固定帯域幅のパラメータ（ｆｅｔｃｈ＿ｂｗ又はｄｉｓｐ＿ｂｗ）によって定められるような、各々のアクティブ・フェッチ（又はディスパッチ）サイクルにおいて、通常、一定数の命令がフェッチ（又はディスパッチ）される。しかしながら、スローダウン／一時停止が必要であることをＥユニット２２０が示すとき、好ましい実施形態のプロセッサ（この例においては２００）が、上述のクロック・スロットリングに加えて、ｆｅｔｃｈ＿ｂｗ及び／又はｄｉｓｐ＿ｂｗの各々の値を動的に調整する。
【００４２】
Ｅユニットからのスローダウン／一時停止（又はその逆の速度アップ／継続）信号は、該Ｅユニット内で生成され、監視される状態信号の組み合わせ関数として合成される。こうした状態信号は、（ａ）発行キューＦＸＱ２２９、ＬＳＱ２３２、ＦＰＱ２４０及びＶＸＱ２４６が一杯であるか空いているかの表示、（ｂ）Ｄキャッシュ２３８のヒット・イベント又はミス・イベント、（ｃ）Ｅユニットの内部共有バス・トラフィック輻輳又はその欠如（例えば、完了ユニット２４０に完了情報を伝えるために単一バスを共有（及びアービトレート）することができる）、又は（ｄ）分岐の予測ミス又は他の形態の推測ミスのために生成された実行パイプ・フラッシュ又は再発行条件を含むことができる。プロセッサ分岐命令は、この例のＦＸＵパイプにおいて実行することができる。しかしながら、代替的に、分岐命令を実行するために、別個の並行ＢＲＵパイプが存在してもよい。
【００４３】
Ｅユニットからのスローダウン／一時停止信号をアサートすることは、Ｉ−ＣＬＫの一方又は両方をスロットルすることによりＩユニット・パイプライン流量をスロットルし、クロックを調整することなく、関連するＩユニット・バス帯域幅をスロット及び／又は狭窄し、例えば、所定のアクセスにおいて、Ｉキャッシュからフェッチされたデータを受け取るラインの半分を使用不可にすることによって、ｆｅｔｃｈ＿ｂｗを効果的に半分にすることができる。このように、スロットルされた帯域幅モードで節電するために、通常のエントリ数の半分が、命令バッファ（ＩＦＵ２０６内の）にある。一般に、フェッチ帯域幅は、下流のＥユニットのスローダウン／一時停止が示す重大度によって、ゼロまでといったように、通常モードの何分の一までもスロットルさせることができる。同様に、ディスパッチ・バス帯域幅（ｄｉｓｐ＿ｂｗ）をスロットルさせて節電し、必要に応じて又は示されるように、より少ない命令を消費Ｅユニットの実行パイプにディスパッチすることができる。
【００４４】
Ｅユニット２２０は、固定小数点実行ユニット（ＦＸＵ）２２２、ロード・ストア・ユニット（ＬＳＵ）２２４、浮動小数点実行ユニット（ＦＰＵ）２２６、及びベクトル・マルチメディア実行ユニット（ＶＭＸＵ）２２８を含む。ＦＸＵ２２２は、固定小数点キュー２２９及び固定小数点ユニット実行ユニット・パイプ２３０を含む。ＬＳＵ２２４は、ロード・ストア・キュー２３２及びロード・ストア・ユニット・パイプ２３４を含む。ＦＸＵ２２２及びＬＳＵ２２４の両方とも、汎用レジスタ２３６と通信する。ＬＳＵ２２４は、データ・キャッシュ２３８との通信を提供する。ＦＰＵ２２６は、固定小数点キュー２４０及び固定小数点ユニット・パイプ２４２、並びに固定小数点レジスタ及びリネーム・バッファ２４４を含む。ＬＳＵ２２４は、固定小数点リネーム・バッファ２４４とも通信する。ＶＭＸＵ２２８は、ベクトル拡張キュー２４６及びベクトル・マルチメディア拡張ユニット・パイプ２４８を含む。
【００４５】
ユニット２２９、２３０、２３２、２３４、２３６、２３８、２４０、２４２、２４６、２４８の各々は、以下に述べられるように本発明に従ってクロック駆動されるが、対応する公知のこうしたユニットとほぼ同一に作動する。いずれかの一般的な最先端のスーパースカラ・プロセッサと同様に、ＦＸＵ２２２及びＦＰＵ２２６における動作は、所定の作業負荷実行段階中に相互排除的であることが極めて多い。この好ましい実施形態のプロセッサ２００は、ＦＰＵ２２６がアクティブであるとき及びその逆のときに、ＦＸＵ２２２のローカル・クロックを使用不可にするか又はスローダウンさせることができる。さらに、この好ましい実施形態のプロセッサ２００は、ＬＳＵ２２４及びＦＰＵ２２６が互いにクロック速度を一時停止／遅くすることを可能にする。これらのユニット内の細かい粒子の要求駆動型クロック・スロットリング・モードは、既に説明されたユニット相互のより粗い粒子のモードに付加されるものである。
【００４６】
上記の好ましいスカラ・プロセッサの例と同様に、Ｅユニット２２０内のこれらの２つのユニット２２４、２２６は、直接データフロー経路の生産者・消費者関係を有するものではなく、すなわちＬＳＵ２２４とＦＰＵ２２６との間に情報の直接フローが存在しない。これらの２つのユニット２２４、２２６の間の通信は、データ・キャッシュ／メモリ及び浮動小数点レジスタ・ファイル２４４を介して間接的に行われる。典型的には、ＦＰＵパイプライン２４２は、幾つかのステージを有し（例えば、現代のギガヘルツ範囲のプロセッサにおいては６−８のステージ）、典型的なＬＳＵ実行パイプ２３４は、２−４ステージである。このため、現在のプロセッサが多数のレジスタ・リネーム・バッファを有することから、ＬＳＵパイプ２３４は、Ｄキャッシュ２３８のヒット段階中に実質的にＦＰＵパイプ２４２より前に稼動する傾向がある。他方、クラスター化されたＤキャッシュ２３８のミス段階中に、有効なＬＳＵ経路の待ち時間が劇的に増大することがある。一連の迅速ミスがＤキャッシュ２３８をストールさせる場合、ＬＳＵ発行キュー２３２が一杯になり、そのことが上流の製造者をストールさせることがある。このことは、上流のリソースの動作駆動型の細かい粒子の一時的クロック・ゲーティング又はＦＰＵ２２６のローカル・クロック・スロットリングを用いる本発明によって利用される。
【００４７】
図９は、Ｅユニット２２０のＬＳＵ２２４及びＦＰＵ２２６のより詳細な例を示す。この実施形態において、ＬＳＵイベント／動作状態モニタ論理２５０が、種々のＬＳＵキューの利用を監視し、ＬＳＵ２２６についての動作状態を得る。この例において、ＬＳＵキューは、ロード・ストア・キュー（ＬＳＱ）２３２、保留ロード・キュー（ＰＬＱ）２５２、及び保留ストア・キュー（ＰＳＱ）２５４、並びにＤキャッシュ２３６を含む。Ｄキャッシュ２３６が監視され、キャッシュ・ミス・イベントが記録される。これらの４つのユニット２３２、２３６、２５２、２５４は、単に例として選択されるものであり、より少ない又はより多いキュー及びイベントを監視できることが理解される。この例の場合、ＬＳＵイベント／動作状態モニタ論理２５０は、この例においてＦＰＵ２２６に送られる出力ストール・ビット２５６をアサートする。より細かい制御が望まれる場合には、１組のストール・ビットを用いることができる。Ｉユニット２０２に対する制御及びＩＦＵ又はＤＩＳＰＡＴＣＨユニット２０６のためのクロック制御のために、ストール・ビット２５６を送ることができる。
【００４８】
例として、ＬＳＵ動作状態モニタ論理出力ストール・ビット２５６及びＦＰＵの出力２５８の両方を最初に用いて、動作状態モニタストール２６０がディアサートされ、ＬＳＵ２２４及びＦＰＵ２２６の両方において通常のフルスロットル動作がもたらされる。ＦＰＵ動作状態モニタストール・ビット２５８がアサートされる場合、例えば、ＦＰＱ内の利用度が高いために、ＬＳＵ動作状態ストール・ビット２５６がアサートされないままになる。ＬＳＵ動作状態ストール・ビット２５６がスロットル・ダウンされ、ＦＰＵ２２６が、キャッシュ・ヒット段階のためにＦＰＵ２２６より先のＬＳＵ２２４に追いつくことが可能になる。逆に、ＬＳＵ動作状態ストール・ビット２５６がアサートされたとき、ＦＰＵ動作状態ストール・ビット２５８がアサートされないままである間、ＦＰＵのローカル・クロックがスロットダウンされる。ＬＳＵ及びＦＰＵのストール・ビットの両方が一緒にアサート／ディアサートされた場合、Ｅユニット２２０又はＩユニット２０２内のいずれかの場所の他の状態条件によって、ＬＳＵ及びＦＰＵのローカル・クロックの両方が、スロットル・ダウンされるか又は同じ周波数まで加速される。
【００４９】
有利なことに、本発明は、他のプロセッサ又はシステム・ユニットにおける動作／非動作に応答して、ユニット又はユニット内のコンピュータを選択的にスローダウンし、加速し、又はゲートオフする、すなわち本発明は、種々のクロック制御粒度を有する。各々のユニットの局所的クロック制御は、動作と、データフロー方向に対して前方及び後方の両方に流れる情報とから取り出される。全か無かの従来技術のクロック・ゲーティングの代わりに、好ましい実施形態の適応クロック制御をフィード・フォワード及びフィードバック制御の両方に用いて、任意の帯域幅スロットリングを有するより柔軟に生成されたクロック・スロットリング機構を提供することができる。
【００５０】
このように、従来技術のパイプライン・ユニットのゲートオフにおいて失われ得る保留情報が、ユニット・キューにおいて適切なサイズを有する電流を維持する。ユニットは、種々のユニット内の動作に関係する情報によって動的に制御される。要求の減少を示す他のユニットにおける動作レベルに応答して、所定のコンポーネント内のクロック速度が段階的に下方に調整されるか、さらにゼロまで減少される。ユニット要求が通常に戻ったことを監視された動作レベルが示すとき、特定のコンポーネントにおけるクロック速度が、同じく段階的にその元の通常レベルまで回復される。１つ又はそれ以上のコンポーネントにおいて、ローカル・クロック速度が下方に調整される間、正味システム電力消費が比例して減少する。各々のコンポーネントのクロック速度は、タイムリーに、かつ、予測した方法で調整され、速度変更を行うハードウェア制御により、例えば、オーバーヘッド・ストール又は廃棄された命令の再計算からの感知できるほどの性能の損失はもたらされない。従来技術のプロセッサにおいてこうした損失から被る性能ペナルティは、ほぼゼロまで減少される。
【００５１】
周波数の下降又は上昇を調整するためのクロック速度スロットリングの段階的方法は、従来のクロック・ゲーティング方法と比較して、優れた（すなわち、より良好な）電流の揺れ（ｄｉ／ｄｔ）特性を保証するものである。したがって、クロッキング速度の段階的減少又は増大によって、誘導性ノイズが最小にされる。その結果、好ましい実施形態のシステムは、感知できるほどの性能損失なしに、著しく少ない電力を消費する。感知できるほどの（アーキテクチャ上の）性能損失（例えば、サイクル又はＩＰＣ毎の命令）なしに、かつ、重要な付加的ハードウェアを必要とすることなく、平均電力が減少される。最大電力損失及び温度限界に忠実であることが厳しく求められる場合、本発明は、性能損失をわずかな所定の時間窓に制限しながら、電力消費をうまく制御し、通常の作動条件を維持し、迅速に通常に戻すことができる。
【００５２】
動的動作レベルの個々のシステム・コンポーネントは、チップ又はシステム全体にわたって伝搬される単一の同期クロックのフレームワーク内の他のコンポーネントに対するクロック速度を用いて監視される。さらに、局所的にクロック駆動される非同期（又は自動時刻指定式）ユニットを有する同期システム又はプロセッサ、或いはグローバルな非同期制御のもとで多数の同期クロック範囲を有するマルチクロック同期システムと違って、本発明は、非同期を維持するために、別個にクロック駆動されるコンポーネント間の「ハンドシェイキング」プロトコルを必要としない。付加的に、本発明は、種々のコンポーネントにおけるクロック速度を動的に調整し、通常、従来の粗い粒子のクロック・ゲーティング方法に関連した誘電ノイズを最小にする。
【００５３】
本発明は、幾つかの（例示的な）好ましい実施形態に関して説明されたが、当業者であれば、本発明が、添付された特許請求の範囲の精神及び範囲内で修正をなし得ることを理解するであろう。
【図面の簡単な説明】
【００５４】
【図１】典型的な最先端のパイプライン化スカラ・プロセッサの例及び対応する命令タイミング図を示す。
【図２】本発明による、好ましい実施形態の要求駆動型又は動作駆動電力制御スカラ・プロセッサの高レベルの例を示す。
【図３】ゲート制御シフト・レジスタ（ＧＣＳＲ）により、システム・クロックをＩ−ＰＩＰＥの個々のステージに通すことが可能にある、動作監視・クロック制御論理一時停止回路の第１の例を示す。
【図４】オンデマンド式Ｉ−ＣＬＫスロットリングのための、本発明の好ましい実施形態による図３の一時停止回路の代わりに用いることができるか又は該図３の一時停止回路と共に含ませることができる、スローダウン回路の第２の例を示す。
【図５】個々のＧＣＳＲステージ出力が対応する個々のＡＮＤゲートに送られる、図３及び図４の実施形態の変形を示す。
【図６】図３の断面に対応するスカラＩパイプの更に別の例をより詳細に示す。
【図７】図３の断面に対応するスカラＩパイプの更に別の例をより詳細に示す。
【図８】本発明をパイプライン・スーパースカラ・プロセッサに適用する例を示す。
【図９】図８におけるようなＥユニットのＬＳＵ及びＦＰＵのより詳細な例を示す。
【符号の説明】
【００５５】
１００：プロセッサ
１０２、１２２：命令ユニット
１０４、１２４、２２０：実行ユニット
１０８：命令キャッシュ
１１０、２３８：データ・キャッシュ
１１５：システム・クロック
１２０：スカラ・プロセッサ
１２６、１２８：動作監視・クロック制御論理
１３０：ストール・ビット
１５０、１７８：ゲート制御シフト・レジスタ
１５６、１７６、１８２：ＡＮＤゲート
１７４：１ビット・カウンタ
２００：スーパースカラ・プロセッサ
２１６：監視・クロック制御論理
【図１】
2007521538.tif 000003
【図２】
2007521538.tif 000004
【図３】
2007521538.tif 000005
【図４】
2007521538.tif 000006
【図５】
2007521538.tif 000007
2007521538.tif 000008
2007521538.tif 000009
【図７】
2007521538.tif 000010
【図８】
2007521538.tif 000011
【国際調査報告】
2007521538.tif 000012
2007521538.tif 000013
2007521538.tif 000014