(57)【特許請求の範囲】
【請求項１】
パイプライン型プロセッサ内のパワー損失を制御するための方法であって、
高性能モードで動作する対応する複数のパイプライン・ステージに関する複数のスループット・レートを測定するステップと、
前記複数のスループット・レートのうちの１つまたは複数が、第１の所定のスループット・レートまで減少したことを検出するステップと、
前記複数のスループット・レートのうちの前記１つまたは複数が、前記第１の所定のスループット・レートまで減少したことを検出すると同時に、第１のパワー・レベル制御信号を前記複数のパイプライン・ステージに送信するステップと、
前記第１のパワー・レベル制御信号に応答して、前記複数のパイプライン・ステージを低性能モードで動作するように再構成するステップであって、それにより前記複数のパイプライン・ステージによってパワー損失が減少する、再構成するステップと、
を含む方法。
【請求項２】
前記複数のスループット・レートが第２の所定のしきい値レートに一致するかまたは超えたことを検出するために、前記複数のパイプライン・ステージに関して前記複数のスループット・レートを監視するステップと、
前記複数のスループット・レートが、第２の所定のしきい値レートに一致するかまたは超えたことを検出すると同時に、第２のパワー・レベル制御信号を前記複数のパイプライン・ステージに送信するステップと、
前記第２のパワー・レベル制御信号に応答して、前記複数のパイプライン・ステージを高性能モードで動作するように再構成するステップと、
を含む、請求項１に記載の方法。
【請求項３】
複数のスループット・レートを測定するステップが、各パイプライン・ステージに関して、所定のウィンドウ中にどれだけのステージ・イベントが発生するかをカウントするステップを含む、請求項１に記載の方法。
【請求項４】
前記複数のスループット・レートのうちの１つまたは複数が、第１の所定のスループット・レートまで減少したことを検出するステップが、前記複数のスループット・レートのうちの１つまたは複数を、所定の高性能スループットしきい値と比較するステップを含む、請求項１に記載の方法。
【請求項５】
第１のパワー・レベル制御信号を送信するステップが、１ビットのパワー・レベル制御信号を前記複数のパイプライン・ステージにブロードキャストするステップを含む、請求項１に記載の方法。
【請求項６】
第１のパワー・レベル制御信号を送信するステップが、別々のパワー・レベル制御信号を前記複数のパイプライン・ステージそれぞれに送信するステップを含む、請求項１に記載の方法。
【請求項７】
第１のパワー・レベル制御信号を送信するステップが、対応する複数のパイプライン・ステージのパワー損失モード、レベル、または回路を選択するために、複数のパワー・レベル制御信号を各ステージに送信するステップを含む、請求項１に記載の方法。
【請求項８】
前記複数のパイプライン・ステージを再構成するステップが、前記第１のパワー・レベル制御信号に応答して、各ステージで第１の低パワー回路を選択するステップを含む、請求項１に記載の方法。
【請求項９】
パイプライン型プロセッサ内のパワー損失を制御するためのプログラムであって、前記プロセッサに、
高性能モードで動作する対応する複数のパイプライン・ステージに関する複数のスループット・レートを測定するステップと、
前記複数のスループット・レートのうちの１つまたは複数が、第１の所定のスループット・レートまで減少したことを検出するステップと、
前記複数のスループット・レートのうちの前記１つまたは複数が、前記第１の所定のスループット・レートまで減少したことを検出すると同時に、第１のパワー・レベル制御信号を前記複数のパイプライン・ステージに送信するステップと、
前記第１のパワー・レベル制御信号に応答して、前記複数のパイプライン・ステージを低性能モードで動作するように再構成するステップであって、それにより前記複数のパイプライン・ステージによってパワー損失が減少する、再構成するステップと、
を実行させるプログラム。
【請求項１０】
データ処理システムであって、
複数の回路モジュールを備えるプロセッサであって、各回路モジュールが、所定の回路動作を実行し、前記所定の回路動作を実行するための高パワー回路、および前記所定の回路動作を実行するための低パワー回路を備える、プロセッサと、
前記プロセッサに結合されたデータ・バスと、
コンピュータ・プログラム・コードを具体化するコンピュータ使用可能媒体であって、前記コンピュータ使用可能媒体は前記データ・バスに結合され、前記コンピュータ・プログラム・コードは、前記プロセッサによって実行可能であり、
その高パワー回路を使用することによってそれぞれが動作する、対応する複数の回路モジュールに関する複数のスループット・レートを測定するステップと、
前記複数のスループット・レートのうちの１つまたは複数が、第１の所定のスループット・レートまで減少したことを検出するステップと、
前記複数のスループット・レートのうちの前記１つまたは複数が、前記第１の所定のスループット・レートまで減少したことを検出すると同時に、第１のパワー・レベル制御信号を前記複数の回路モジュールに送信するステップと、
前記第１のパワー・レベル制御信号に応答して、その低パワー回路を使用することによって各回路モジュールが動作するように、前記複数の回路モジュールを再構成するステップであって、それにより前記複数の回路モジュールによってパワー損失が減少する、再構成するステップと、
によって、前記プロセッサ内のパワー損失を制御するために構成された、命令を備える、コンピュータ使用可能媒体と、
を備える、データ処理システム。
【請求項１１】
前記複数のスループット・レートが第２の所定のしきい値レートに一致するかまたは超えたことを検出するために、前記複数の回路モジュールに関して前記複数のスループット・レートを監視するステップと、
前記複数のスループット・レートが、第２の所定のしきい値レートに一致するかまたは超えたことを検出すると同時に、第２のパワー・レベル制御信号を前記複数の回路モジュールに送信するステップと、
前記第２のパワー・レベル制御信号に応答して、その高パワー回路を使用することによって各回路モジュールが動作するように、前記複数の回路モジュールを再構成するステップと、
によって、前記プロセッサ内のパワー損失を制御するために構成された、命令をさらに備える、請求項１０に記載のデータ処理システム。
【請求項１２】
前記複数の回路モジュールにより、プロセッサ・コア内の複数のパイプライン型プロセッサ・ステージが実現されるものである、請求項１０に記載のデータ処理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般に、データ処理システムの分野を対象とする。一態様では、本発明は、パイプライン型プロセッサ・システムにおける動的なパワー制御に関する。
【背景技術】
【０００２】
パイプライン型プロセッサの設計では、個々のパイプライン・ステージは、通常、メモリから、およびメモリへの待ち時間を最小にすること、ならびに、各ステージでの帯域幅を最大にすることによって、最大性能を提供するように設計される。しかしながら、典型的なプロセッサの使用では、すべてのステージがあらゆるクロック・サイクルにおいて最大限に機能することを必要としないため、こうしたプロセッサはしばしば「過剰設計」である。プロセッサが可能であればいつでも最大限に実行するように設計された場合、それらの動作によって、大幅なパワー損失を発生させる可能性があり、実際に一部の命令配布に関して性能の低下につながる可能性がある。たとえば、本来、命令レベル並列性（ＩＬＰ）の低いワークロードを実行する場合、プロセッサ・パイプラインは、フルパワー／高スループット・モードで動作する必要はなく、実際のところ、こうした動作モードはユニット内の待ち時間が長く、不必要にパワーを消費することから、性能に悪影響を及ぼす可能性がある。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
したがって、パイプライン型プロセッサ・システムにおいて性能およびパワー損失を制御するためのシステムおよび方法が求められている。加えて、過度のパワー損失なしに必要なレベルの性能およびスループットを提供する、パイプライン型プロセッサ・システムおよび設計も求められている。
【課題を解決するための手段】
【０００４】
当業者であれば、以下の図面および詳細な説明を参照しながら、本明細書の残りの部分を再検討することによって、従来のソリューションの他の制限および欠点が明らかとなるであろう。
【０００５】
本発明の様々な実施形態に従って、動的に構成可能なプロセッサが、プロセッサ内の個々のユニットまたはステージが所与のワークロードを実行した場合に、それらの性能を監視または検出する、プロセッサの設計および方法が示される。動的に構成可能なプロセッサは、高性能設計／モードおよび低性能設計／モードを有する、１つまたは複数のステージを含む。高性能設計／モードは、比較的高いパワー損失レベルでワークロードを実行するために使用されるが、実行ワークロードの検出された性能特徴によって保証された場合、プロセッサは、比較的低いパワー損失レベルでワークロードを実行するための低性能設計／モードの使用に切り替える。実行ワークロードの検出された性能特徴の保証に合わせるために、プロセッサを高性能設計から低性能設計へと後退させるように構成することによって、パワー損失を最適化することができる。選択された諸実施形態では、時間ウィンドウ中のステージ操作の数をカウントすることなどによって、定義された時間ウィンドウの間、個々のパイプライン・ステージ（たとえば、フェッチ、復号、実行、書き戻し、完了）のスループットが監視される。初期には、個々のパイプライン・ステージは高スループット、高パワー設計を使用する。しかしながら、いずれかのステージのスループット・カウントが、そのステージに性能ボトルネックが存在することを示す場合、プロセッサ・パイプラインは、より低いスループット、より低いパワー設計を使用するように、動的に再構成される。
【０００６】
様々な実施形態によれば、１つまたは複数の個々のパイプライン・ステージは、コンピュータ実行可能命令を備えるコンピュータ・プログラム・コードを伴うデータ処理システム内で実装可能な、本明細書に記載された方法または装置あるいはその両方を使用するソフトウェア制御の下で、高スループット、高パワー設計と、低スループット、低パワー設計との間で切り替えるように、動的に構成することができる。実装されるどのような形においても、パイプライン型プロセッサのパワー損失は、高性能モードで動作する複数のパイプライン・ステージについてスループット・レートを測定することによって、制御することができる。例示的実装では、所定のウィンドウ中に、各パイプライン・ステージについてどれだけのステージ・イベントが発生するかをカウントすることによって、スループット・レートが測定される。スループット・レートを経時的に測定することにより、スループット・レートのうちの１つまたは複数を所定の高性能スループットしきい値と比較することなどによって、レートの減少があれば検出することができる。複数のスループット・レートのうちの１つまたは複数が第１の所定のスループット・レートまで減少したことを検出すると、第１のパワー・レベル制御信号が複数のパイプライン・ステージに送信される。様々な実施形態では、パワー制御信号は、すべてのパイプライン・ステージに１ビットのパワー・レベル制御信号としてブロードキャストされるか、または、各パイプライン・ステージに別々のパワー・レベル制御信号として送信されることが可能である。ステージが、様々なスループット・レートおよびパワー・レートを備えた複数レベルの動作を有する場合、動作のレベルを選択するために、複数のパワー・レベル制御信号を実装することができる。第１のパワー・レベル制御信号に応答して、各パイプライン・ステージが低性能モードで動作するように再構成され、それによって複数のパイプライン・ステージによるパワー損失が削減される。低性能モードへの再構成は、各ステージで、第１のパワー・レベル制御信号に応答して第１の低パワー回路を選択することによって、実装可能である。高性能モードに戻すためには、クロック・サイクルのウィンドウ全体にわたって、現在は低性能モードで動作している複数のパイプライン・ステージについてのスループット・レートが監視され、スループット・レートが第２の所定のしきい値レートに合致するかまたはそれを超えた場合を検出し、その時点で、各パイプライン・ステージが高性能モードで動作するように再構成されるように、第２のパワー・レベル制御信号がパイプライン・ステージに送信される。
【０００７】
以下の詳細な説明について以下の図面と共に考察することにより、本発明の選択された諸実施形態について理解し、その多数の目的、特徴、および利点を得ることができる。
【発明を実施するための最良の形態】
【０００８】
プロセッサ・スループットの減少を検出すると、高性能（高パワー）モードから低性能（低パワー）モードに切り替えるようにパイプラインを再構成するために、パイプライン型プロセッサの性能を監視するための方法、システム、およびプログラムが開示されている。複数の動作モードを有するようにユニットを設計すること、および、実行ワークロードのスループットまたはＩＬＰ特徴を感知することによってモード間を切り替えるためのスキームを採用することによって、性能が必ずしも悪化することなく、実際には向上できるように、サイクル当たりの実行待ち時間と共に、パワー損失を減少させることができる。選択された諸実施形態では、性能モニタは、比較的高いパワー損失レベルでワークロードを実行するためには高性能構成が使用されるが、検出された実行ワークロードの性能特徴によって保証された場合、比較的低いパワー損失レベルでワークロードを実行するために低性能構成が使用されるように動作するように、各パイプライン・ステージがどのように構成されるかを調整する。
【０００９】
次に、本発明の様々な例示的実施形態について、添付の図面を参照しながら詳細に説明する。本明細書に記載された流れ図またはブロック図あるいはその両方は、命令（コンピュータまたは他のプログラム可能データ処理装置のプロセッサを介して実行する）が、流れ図あるいはブロック図の１つまたは複数のブロック内に指定された機能／動作を実装するように、汎用コンピュータ、特定用途向けコンピュータ、またはマシンを製造するための他のプログラム可能データ処理装置に提供される、専用のハードウェア回路、ファームウェア、またはコンピュータ・プログラム命令、あるいはそれらすべてによって、全体として、または部分的に、実装可能であることを理解されよう。加えて、以下の説明では様々な細部が示されるが、本発明はこれら特定の細部なしでも実施可能であること、および、実装によって異なる技術または設計関係の制約の遵守などの、デバイス設計者特有の目標を達成するために、本明細書に記載された発明に対して多数の実装特有の意思決定が実行可能であることを理解されよう。こうした開発努力は複雑であり、時間がかかる可能性があるが、それにもかかわらず、本開示の恩恵を有する当業者にとっては日常業務である。たとえば、本発明を限定または不明瞭にすることを避けるために、選択された諸態様は、詳細にではなくブロック図形式で示されている。加えて、本明細書に提供された詳細な説明の一部は、コンピュータ・メモリ内のデータ上のアルゴリズムまたは演算に関して提示されている。こうした記述および表現は、当業者によって、彼等の作業の実態を他の当業者に説明および伝達するために使用される。次に、本発明の様々な例示的実施形態について、図面を参照しながら詳細に説明する。
【００１０】
ここで図１を参照すると、本発明の選択された諸実施形態に従った、性能を低下させることなくプログラム・ワークロードの低パワー実行を提供する、マルチプロセッサ（ＭＰ）データ処理システム１００の高水準ブロック図が示されている。データ処理システム１００は、１つまたは複数のプロセッサ・グループに配列された１つまたは複数の処理ユニットを有し、図に示されるように、プロセッサ・グループ１０内に４つの処理ユニット１１、２１、３１、４１を含む。対称型マルチプロセッサ（ＳＭＰ）実施形態では、処理ユニット１１、２１、３１、４１のすべてが一般に同一であり、すなわちそれらはすべて、動作のために命令およびプロトコルの同一のセットまたはサブセットを使用し、一般には同じアーキテクチャを有する。処理ユニット１１で示されるように、各処理ユニットは、コンピュータを動作させるためにプログラム命令を実行する、１つまたは複数のプロセッサ・コア１６ａ、１６ｂを含むことができる。例示的処理ユニットは、インターナショナル・ビジネス・マシンズ・コーポレーションによって販売されているＰＯＷＥＲ５（ＴＭ）プロセッサであり、これは、すべて集積回路によって形成された様々な実行ユニット、レジスタ、バッファ、メモリ、および他の機能ユニットを有する、単一集積回路のスーパースカラ・マイクロプロセッサを備える。プロセッサ・コアは、縮小命令セット・コンピューティング（ＲＩＳＣ）技法に従って動作可能であり、スーパースカラ・アーキテクチャの性能をさらに向上させるために、命令のパイプライン化およびｏｕｔ−ｏｆ−ｏｒｄｅｒ実行の両方を使用可能である。
【００１１】
さらに図１に示されるように、各プロセッサ・コア１６ａ、１６ｂは、高速メモリ・デバイスから構築されるオンボード（Ｌ１）キャッシュ・メモリ１９ａ、１９ｂ（典型的には別々の命令およびデータ・キャッシュ）を含む。キャッシュは一般に、システム・メモリ６１から値をロードするステップが長くなるのを避けることによって処理を高速化するために、プロセッサによって繰り返しアクセスされる可能性のある値を一時的に格納するために使用される。処理ユニットは、キャッシュ・メモリ・コントローラ（図示せず）と共に、それぞれがコア１６ａおよび１６ｂの一部であるＬ１キャッシュ１９ａ、１９ｂの両方をサポートする、第２レベル（Ｌ２）キャッシュ１２などの他のキャッシュを含むことができる。ファブリック・バス５０を介してアクセス可能なＬ３キャッシュ６６などの、追加のキャッシュ・レベルを提供することができる。最高（Ｌ１）から最低（Ｌ３）までの各キャッシュ・レベルは、より多くの情報を連続して格納することができるが、アクセスが長いというペナルティがある。たとえば、プロセッサ・キャッシュ（たとえば１６ａ）内のオンボードＬ１キャッシュ（たとえば１９ａ）は、格納容量が１２８キロバイトのメモリを有する可能性があり、Ｌ２キャッシュ１２は４メガバイトの格納容量を有する可能性があり、Ｌ３は１３２メガバイトの格納容量を有する可能性がある。欠陥のある処理ユニット構成要素の修理／交換を容易にするために、各処理ユニット１１、２１、３１、４１は、モジュラ様式で、システム１００へのスワップ、インストール、またはシステム１００からのスワップ・アウトが容易に実行可能な、交換可能回路ボード、プラグ可能モジュール、または同様のフィールド交換可能ユニット（ＦＲＵ）の形で、構築することができる。
【００１２】
処理ユニットは、システム相互接続またはファブリック・バス５０を介して、システム１００の他の構成要素と通信する。ファブリック・バス５０は、１つまたは複数のサービス・プロセッサ６０、システム・メモリ・デバイス６１、メモリ・コントローラ６２、共有またはＬ３システム・キャッシュ、または、様々な周辺デバイス６９、あるいはそれらすべてに接続される。プロセッサ・ブリッジ７０は、追加のプロセッサ・グループを相互接続するために、オプションで使用可能である。図には示されていないが、データ処理システム１００は、システムの基本入力／出力論理を格納し、コンピュータ・システムの電源が最初に投入された（ブートされた）場合に必ず、周辺装置のうちの１つからオペレーティング・システムを探し出してロードする、ファームウェアも含むことが可能であることを理解されよう。
【００１３】
図１に示されるように、データ処理システム１００内の各コア（たとえば１６ａ）は、各ステージが同時にタスクを実行できるように複数のパイプライン・ステージが提供されている、パイプライン型構造５０を伴うように実装可能である。例示的実装では、パイプライン型構造５０は、フェッチ・ステージ５１、復号ステージ５２、実行ステージ５３、書き戻しステージ５４、および完了ステージ５５を含むことが可能であり、各ステージは１つまたは複数のユニットを含むことができる。パイプラインとして動作する場合、フェッチ・ステージ５１は所与のサイクル内で１つまたは複数の命令を取り出し、同じサイクル中に、復号ステージ５２は、以前のサイクルでフェッチされた命令を復号する。同時に、実行ステージ５３は、以前にフェッチおよび復号された１つまたは複数の命令の結果を計算し、書き戻しステージ５４は、以前のサイクルで実行ステージによって要求された任意のレジスタ書き戻し動作を実行し、完了ステージ５５は、以前に実行された命令を考慮することによって正しいアーキテクチャ上のマシン状態を維持する。
【００１４】
システム・メモリ・デバイス６１（ランダム・アクセス・メモリまたはＲＡＭ）は、オペレーティング・システム６１Ａおよびアプリケーション・プログラム６１Ｂを含む、処理ユニットによって使用されるプログラム命令およびオペランド・データを、揮発性（一時）状態で格納する。加えて、性能モニタ・モジュール６１Ｃは、オペレーティング・システム・モジュールまたはシステム・スーパーバイザなど、ハイパーバイザ構成要素などの、任意の所望の形で、システム・メモリ内に格納することが可能であり、パイプライン型構造５０内で検出された性能またはスループット条件に応答して、プロセッサ・コアのパワー消費を最適化するために使用される。性能モニタ・モジュール６１Ｃはシステム・メモリ内の機構として示されているが、当業者であれば、別の方法として、性能モニタ・モジュール６１Ｃがデータ処理システム１００の他の構成要素内で実装可能であること、または、性能モニタ・モジュールの個々のインスタンスが、各コアでのパワー損失を別々に制御するために、それぞれの処理コア内で実装可能であることを理解されよう。しかしながら、実装された場合、性能モニタ・モジュール６１Ｃは、プログラム可能レジスタを含む、実行可能命令、コード、または制御論理、あるいはそれらすべてを使用して、いくつかのクロック・サイクル（またはウィンドウ）にわたる所与のパイプライン構造（たとえば８クロック・サイクル内の５イベント）について性能スループットをチェックすること、より低いスループット性能で動作している（たとえば停止していることによる）任意のパイプライン・ステージを検出すること、および、以下でより詳細に説明するように、パイプラインに対して既存の性能レベルを維持しながら、より低いパワー損失で動作する影響を受けるパイプライン・ステージ内で低性能モードまたは回路設計を選択することが可能である。
【００１５】
様々な実施形態では、性能モニタ・モジュールを使用して、スループット（または帯域幅）と待ち時間およびパワーとをトレードオフするように、プロセッサ・コア内の個々のパイプライン・ステージの性能レベルを監視および制御することができる。例示的実施形態は図２に示されており、ここでは、各パイプライン・ステージについてスループットを監視し、検出された個々のステージのスループットに基づいて個々のパイプライン・ステージのパワー消費を制御する、性能モニタ論理２２０を有する例示的プロセッサ・パイプライン２００が、簡略化された概略図の形で示されている。複数のステージを含む任意の所与のパイプライン・アーキテクチャが使用可能である。たとえばパイプライン２００は、命令をフェッチおよび転送する命令キャッシュ・フェッチ・ステージ２０２、フェッチされた命令を復号する命令復号ステージ２０４、実行および書き戻しフィードバックに基づいて復号された命令を実行する実行ステージ２０６、レジスタ・ファイルへの書き戻し動作を実行する書き戻しステージ２０８、ならびに、命令を完了する完了ステージ２１０を、含むことができる。図２に示されるように、プロセッサ・パイプライン２００のフェッチ、復号、実行の発行（execution issue）、書き戻し、および完了の各ステージは、複数の動作モード、または、別々に選択可能な回路または論理、あるいはその両方を有する。たとえばパイプライン２００は、（１）パイプライン化された２サイクルにわたってサイクルごとに４つの命令をフェッチすることができる、高パワー、高スループット・モード、および（２）パイプライン化された１サイクルにわたってサイクルごとに２つの命令をフェッチすることができる、低パワー、低スループット・モードなどの、少なくとも２つのモードを有するフェッチ・ステージ２０２を含むことができる。高パワー、高スループットのフェッチ・モードが第１のフェッチ回路２０２Ａで実装可能である一方で、低パワー、低スループット・モードは第２のフェッチ回路２０２Ｂで実装可能である。加えて、復号ステージ２０４は、（１）パイプライン化された３サイクルにわたって４つの命令を復号する第１の復号回路２０４Ａ、および（２）パイプライン化された１サイクルにわたって２つの命令を復号する第２の復号回路２０４Ｂなどの、２つまたはそれ以上の別々に選択可能な復号回路を有することができる。同様に、命令を実行するために、（１）２サイクルで１つの命令を実行する復号ユニットの２倍のクロック周波数で実行する第１の実行回路２０６Ａ、および（２）４サイクルで１つの命令を実行する復号ユニットと同じクロック周波数で実行する第２の実行回路２０６Ｂなどの、別々に選択可能な回路、モード、あるいは論理、またはそれらすべてを、実行ステージ２０６で提供することができる。同様に、別々に選択可能な回路、モード、あるいは論理、またはそれらすべてを、レジスタ・ファイルへの様々な数および待ち時間の書き戻しを処理するために書き戻しステージ２０８へ、ならびに、様々な数および待ち時間の完了命令を処理するために完了ステージ２１０で、提供することができる。示されたそれぞれのステージでは、高パワー、高スループットの回路またはモードは接尾語「Ａ」と共に示され、低パワー、低スループットの回路またはモードは接尾語「Ｂ」と共に示されている。
【００１６】
図２に示されるように、パイプライン・ステージ２０２、２０４、２０６、２０８、２１０のそれぞれが、性能モニタ論理２２０に送信されたサイクル当たりのスループット・カウントを検出することによって各パイプライン・ステージの性能を監視する、論理または回路あるいはその両方を有する。したがって、命令キャッシュ・フェッチ・ステージ２０２は、フェッチされて命令復号ステージ２０４に転送された、サイクル当たりの命令の数をカウントし、そのフェッチ・カウント２１３を性能モニタ２２０に提供する。同様に、命令復号ステージ２０４はサイクル当たりの復号イベントをカウントし、この復号カウント２１５を性能モニタ２２０に送信するが、実行ステージ２０６はサイクル当たりの実行イベントをカウントし、実行カウント２１７を性能モニタ２２０に提供する。同様に、書き戻しステージ２０８は、書き戻し動作の数に関する書き戻しカウント２１９を送信し、これが完了ステージ２１０に転送されるが、完了ステージ２１０は実行された完了の数をカウントし、この完了カウント２２１を性能モニタ２２０に提供する。熱センサによって生成可能であり、システムの現在のパワー損失状態を示す、パワー損失信号２２２も示される。信号２２２は、システムの様々な部分から生じる複数の信号を備えることができる。
【００１７】
パイプライン性能を監視するために任意の所望の技法が使用可能であるが、本発明の選択された諸実施形態は、カウント・ウィンドウ中の各ステージについて動作の数をカウントすることによって、個々のステージの性能を監視する。例示的実装は図３に示されており、ここでは、プログラム可能サイクル・ウィンドウ中にステージで発生したイベントの数をカウントするために各ステージに提供されるスループット・カウンタ３００が、簡略化された形で示される。カウントするための任意の所望のウィンドウが使用可能であるが、図示されたスループット・カウンタ３００は、８サイクル・シフト・レジスタ３０２を使用することによって、８サイクル・ウィンドウにわたってステージ・イベントをカウントする。プログラム可能シフト・レジスタ３０２は、ステージからイベント・カウント指標を受け取るために提供され、各イベント・カウント指標はカウンタ３０４によって維持される値に追加される。さらにカウンタ３０４は、レジスタ３０２からシフト・アウトされたイベント・カウントがカウンタ３０４から減じられるように、プログラム可能シフト・レジスタ３０２の出力に結合される。動作時には、シフト・レジスタ３０２の左端のレジスタ・ビットに入力されたイベント・カウントが、クロックの刻時ごとに次のレジスタ・ビットへとシフトされる。この配置構成では、カウンタ３０４は、ステージの数と、定常状態、高性能モードで動作する場合、クロック・サイクルごとにステージ内で発生する可能性のある最大イベント数とを掛けた数に等しい、イベント・カウントを出力することになる。たとえば、クロック・サイクルごとに４イベントが発生する可能性があり、レジスタ３０２が８ステージ長さである場合、最大カウンタ値は「３２」とすることができる。しかしながら、ステージがクロック・サイクル中にいずれかのイベントの生成に失敗した場合、カウンタ３０４はより低いイベント・カウントを出力することになり、それによってそのステージに関するより低い性能スループット信号を発信する。このようにして、スループット・カウンタ３００によって生成されるイベント・カウントは、スループット・カウンタ３００によって監視されているステージの性能レベルの指標を提供する。
【００１８】
図２を再度参照すると、性能モニタ２２０はスループット・カウント２１３、２１５、２１７、２１９、２２１を使用して、最低の実行ステージの性能レベルに合致するように個々のパイプライン・ステージの性能を調整するために、１つまたは複数の信号を生成する。したがって、性能モニタ２２０が、プロセッサ・パイプラインのバックエンドが停止したこと（たとえば、未処理のロード・ミスの待機、分岐の誤予測、および実行ユニット待ち時間）をスループット・カウントから決定した場合、フロントエンド・ステージの性能を、高性能、高パワー消費モード（高性能フェッチ回路２０２Ａを使用する）から、低性能、低パワー消費モード（低性能フェッチ回路２０２Ｂを使用する）へと切り替えることができる。このような場合、フロントエンドのフェッチ・ステージ２０２は、低性能回路２０２Ｂまたはモードを使用して、より少ない命令を一度に１つフェッチすることも可能であり、パイプラインのバックエンドが全体のスループットを制限しているため、パイプライン２００全体に対して同じ性能結果がもたらされる。同様に、フロントエンド・ステージが停止した（たとえば、フェッチ・ステージ２０２が命令ミスで停止した）場合、後続の復号ステージ２０４は、復号された後に、フェッチ・ユニットの停止条件によってパイプ内にバブルが出現することになるため、必ずしも高性能、高パワー消費の復号回路２０４Ａを使用し続けて、さらに下方のプロセッサ・パイプライン内で使用するために同じサイクル内で最大数の命令を復号するとは限らない。実行しても性能に影響がない場合、より低い性能の復号回路２０４Ｂを使用してより少ない命令を復号することによって、サイクル当たりのパワー損失を減らすことができる。同様に、停止したフロントエンド・ステージの性能レベルに合致させるために、他方のバックエンド・ステージを効果的にパワーダウンすることが可能であり、それによって、パイプライン全体のパワー消費が大幅に削減される。
【００１９】
選択された諸実施形態では、性能モニタ２２０は、すべてのステージにブロードキャストされる１つまたは複数のパワー・レベル信号２２４を生成するための制御論理を含む。事実上、制御論理は、スループット・カウント２１３、２１５、２１７、２１９、２２１を（単独で、またはプロセッサ・パイプライン２００によって消費されているパワーの量を数値化するパワー損失信号２２２と組み合わせて）、パワー・レベル信号２２４に合体させる。性能モニタ２２０内の制御論理は、あるステージが他のステージに比べて低いスループットを有するかどうかを判別するため、および、パイプラインに関して最低のスループットを有するパイプライン・ステージを識別するために、スループット・カウントを使用するように構成することができる。低実行ステージが検出された場合、性能モニタ２２０内の制御論理は、各ステージに対してより低いパワーの回路または動作モードを選択することによって、最低実行ステージのスループットに合致するように個々のステージの性能を制御するために、１つまたは複数のパワー・レベル信号２２４を生成する。このようにしてパワー・レベル信号２２４は、各ステージが高パワー／高スループットまたは低パワー／低スループットのいずれかを提供するように、どの動作モードを使用するべきかをステージに示す。
【００２０】
性能モニタ制御論理を使用して、最低実行パイプライン・ステージの性能スループットに合致するように、個々のパイプライン・ステージのパワー消費を削減することができる。例示の目的で、パイプラインのスループット・カウントが、パイプラインの全体スループットを損なうことなくパワー・レベルを変更できるタイミングを決定するために、イベントしきい値を使用して個々のパイプライン・ステージに提供されるパワー・レベル信号を動的に再構成するための、オペレーティング・システムまたはシステム・スーパーバイザによって使用可能な擬似コードの例が以下に示される。擬似コードは、ソフトウェア、マイクロコード、またはハードウェア論理回路として実装可能である。この擬似コードは、１ステージ当たり１クロック・サイクル当たり４つのイベントが可能な、８サイクルのイベント・カウント・ウィンドウに適している可能性がある。
【数１】
0005336830.tif 000002
【００２１】
このコード・シーケンスの例では、高パワー／高性能モードで個々のステージが完全に使用される時点（たとえば、ウィンドウ中のステージからのイベント・カウントが、１２のＨＩ＿ＥＶＥＮＴ＿ＴＨＲＥＳＨを超えた時点）を定義するため、および、低パワー／低性能モードで個々のステージが完全に使用される時点（たとえば、ウィンドウ中のステージからのイベント・カウントが、１６のＬＯ＿ＥＶＥＮＴ＿ＴＨＲＥＳＨに等しくなった時点）を定義するために、イベントしきい値が設定される。加えて、高パワー／高性能モードに戻すまでに、低パワー／低性能モードで、どれだけのクロック・サイクルの間、パイプラインを実行するべきかを定義するために、タイムアウト・カウンタしきい値（ＰＬ＿ＣＯＵＮＴ＿ＴＨＲＥＳＨ）が設定され、これによって、パイプラインがより高い全体スループットを有することが可能であるかどうかを判別するための機会がモニタに与えられる。各パイプライン・ステージからのイベント・カウント（たとえば、ＦｅｔｃｈＥｖｅｎｔＣｏｕｎｔ、ＤｅｃｏｄｅＥｖｅｎｔＣｏｕｎｔ、ＥｘｅｃｕｔｅＥｖｅｎｔＣｏｕｎｔ、ＷｒｉｔｅｂａｃｋＥｖｅｎｔＣｏｕｎｔ、ＣｏｍｐｌｅｔｅＥｖｅｎｔＣｏｕｎｔ）が、高パワー・イベントしきい値（ＨＩ＿ＥＶＥＮＴ＿ＴＨＲＥＳＨ）と比較され、この比較の結果を使用して、パイプラインの実行を制御するために使用されるパワー・レベル（ＰＬ）論理ビットが生成される。図示されたコード・シーケンスでは、高パワー・モード（たとえばＰＬ＝１の場合）で動作しているパイプラインは、すべてのステージが高度に利用されていない（たとえば、ステージからのイベント・カウントが高パワー・イベントしきい値、ＨＩ＿ＥＶＥＮＴ＿ＴＨＲＥＳＨよりも低い）場合、低パワー・モード（たとえばＰＬ＝０の場合）に切り替えられる。パイプラインが低パワー・モードに切り替えられた場合（！ＰＬ）、リセット・パワー・レベル・タイムアウト・カウンタ（ＰＬ＿ＣＯＵＮＴ）が各クロック・サイクルと共に増分され、各パイプライン・ステージからのイベント・カウントは最大の低パワー・イベントしきい値（ＬＯ＿ＥＶＥＮＴ＿ＴＨＲＥＳＨ）と比較されるが、これは一実施形態では、８サイクル・ウィンドウにわたって、各サイクルで２つのイベントがカウントされていることを意味する。この比較が、パイプライン・ステージがそれらの低パワー／低性能モードで完全に使用されていること、および、パワー・レベル・タイムアウト・カウンタがタイムアウト・カウンタしきい値（ＰＬ＿ＣＯＵＮＴ＿ＴＨＲＥＳＨ）と一致するかまたはこれを超えていることを示す場合、高パワー・モードが選択される（ＰＬ＝１）。システム・パワー損失信号（ＳＹＳ＿ＰＯＷＥＲ）の使用法も示されており、システム熱センサまたは他の高パワー条件によって高（たとえばＳＹＳ＿ＰＯＷＥＲ＝１）に設定されている場合、パワー・レベル信号を低（たとえばＰＬ＝０）のままで維持させ、これによってシステム・パワーが低下し、最終的に、パワー損失信号を低（たとえばＳＹＳ＿ＰＯＷＥＲ＝０）に戻す。
【００２２】
個々のパイプライン・ステージの動作を制御するためのパワー・レベル（ＰＬ）信号の適用について、図４に示された例を参照しながら示すことが可能であり、この図では、１つまたは複数のパワー・レベル信号４１２がパイプライン・ステージ４０２、４０４、４０６、４０８、４１０に送られてステージの機能を制御する、プロセッサ・パイプライン４００が、簡略化された概略図の形で示される。各ステージでは、第１の高パワー、高スループット・モードが第１の回路（接尾語「Ａ」で示される）で実装可能であり、第２の低パワー、低スループット・モードが第２の回路（接尾語「Ｂ」で示される）で実装可能である。性能モニタが、完了ユニット４１０Ａが、サイクルあたり平均２またはそれより少ない命令を完了したことを検出した場合、フェッチ、復号、書き戻し、および発行ユニットを高パワー／高スループット・モードで実行する理由がないため、そのステージに低パワー／低スループット・モードを使用することができる。これを実施するために、性能モニタは、完了ステージおよび他のステージに、低減モードまたは低パワー／低スループット・モードで実行を開始するよう命令するための、１つまたは複数のパワー・レベル信号４１２を発行する。パワー・レベル信号４１２がすべてのステージに送信される単一信号である実装例では、「低」パワー・レベル信号４１２を受け取ったステージは、その機能を実行するために低パワー・モードまたは低パワー回路を選択する。したがって、フェッチ・ステージ４０２Ａが「低」パワー・レベル信号４１２を受け取った場合、このフェッチ・ステージは、（高パワー／高スループット・モードの場合に予定される）サイクル当たり４命令ではなく、サイクル当たり２命令のみがフェッチされるように、低パワー、低スループット回路４０２Ｂを使用するように再構成される。同様に、「低」パワー・レベル信号４１２を受け取る復号ステージ４０４Ａは、２つの低パワー・デコーダ４０４Ｂを使用してサイクル当たり最大２命令のみを復号する、低パワー、低スループット・モードに再構成することができる。さらに、「低」パワー・レベル信号４１２が提供される場合、高性能実行ステージ４０６Ａは、サイクル当たり２命令のみをスケジューリングするように、または低周波数モードで実行するように、低性能実行ステージ４０６Ｂとして再構成される。加えて、高パワー書き戻しステージ４０８Ａは、サイクル当たり２命令のみを書き戻すように、低性能書き戻しステージ４０８Ｂとして再構成される。このようにして、完了ステージ４１０のスループットが、サイクル当たり２命令が完了されるまでパイプライン４００に関する全体のワークロード実行特徴を低下させる場合、パイプラインの全体性能を劣化させることなく、完了ユニット４１０の性能レベルに合致するように、他のステージを「下方シフト」させることができる。
【００２３】
理解されるように、パイプライン・ステージは無期限に低性能、低パワー・モードのままとするべきではなく、プログラム実行の段階でワークロードの固有の命令レベル並列性（ＩＬＰ）が向上する場合に発生するように、より高いスループットからワークロードが恩恵を受ける可能性があることが明らかな場合、パイプラインを高性能モードに戻すことができるメカニズムが提供されるべきである。これは、ステージが低パワー／低スループット・モードで動作する場合、ステージからのスループット・カウントを継続的に監視することによって実施可能である。その後、性能モニタ２２０（図２に示される）が、低パワー／低スループット・モードのステージが、低パワー／低スループット・モードであることが可能なサイクル当たり最大の命令処理使用率で、またはその付近で平均化していることを検出した場合、パイプライン・ステージを高性能、高パワー・モードに戻るように再構成することができる。このため性能モニタ２２０は、すべてのステージに、高パワー／高スループット・モードに切り替えるよう命令するための１つまたは複数のパワー・レベル信号２２４を発行することができる。高パワー／高スループット・モードに戻ると、性能モニタ２２４は、ワークロード特徴が変化したかどうか、および、ここでさらに命令を並列に処理できるかどうかを判別するために、各ステージからのスループット・カウントの監視を続行する。理解されるように、個々のステージは、同じサイクルまたは異なるサイクルでのモード間で切り替え可能であり、個々のパワー・レベル信号２２４によって別々に制御することが可能である。
【００２４】
パワー消費の削減に加えて、個々のステージに対してより低い性能回路を選択的に使用するための機能は、時には設計のための「欲張り（greedy）」手法と呼ばれる、最大性能実行用にのみ設計されたパイプライン・ステージに比べて、ある種のワークロードに関するワークロード性能を実際に向上させることができる。たとえば、単一サイクルで４つの命令を復号するように設計されたパイプライン型復号ステージは、２つの命令の復号よりも多くのクロック・サイクルを利用する可能性がある。このケースでは、ワークロードがサイクル当たり２つの命令のみの復号を必要とする場合、待ち時間の短いデコーダは待ち時間の長い（ただしスループットは高い）デコーダよりも動的に好ましいことになる。こうしたワークロードの例は、本来、低い命令レベル並列性（ＩＬＰ）を有するものであり、ここではフルパワー／高スループットのプロセッサ・パイプラインの実行は不要であり、ユニット内の多くの待ち時間によって性能に悪影響を与え、不必要にパワーを要する可能性がある。
【００２５】
パワー・レベル信号をどのように使用して、高性能モードと低性能モードとを切り替えるように個々のプロセッサ・ステージを動的に再構成できるかを示すために、図５では、パワー・レベル信号に応答して高性能設計および低性能設計を別々に選択できる、実行ステージ５００の例示的実装が示されている。図に示されるように、実行ステージ５００は、第１の高パワー実行パイプライン回路５２０、第２の高パワー実行パイプライン回路５２２、低パワー実行パイプライン回路５２４、および構成可能実行パイプライン回路５２６を含む、複数の別々に選択可能な実行回路を含む。高パワー実行パイプライン５２０および５２２ならびに構成可能パイプライン５２６は、追加の回路または周波数倍増を使用し、大幅なパワー損失を犠牲にして、命令実行の待ち時間を減少させることができる。図に示されるように、実行スケジューラ５１０は、復号された命令５０１を受け取り、パワー・レベル信号５０２の値に応じて、実行回路５２０、５２２、５２４、５２６による実行のためにこの命令を選択的にルーティングする、スケジューリング論理５１２およびゲーティング論理５１４、５１６を含む。概して、パワー・レベル信号は、実行ステージ５００が実行回路を使用して、高性能モード（結果としてより高いパワー損失を生じさせる）または低性能モード（結果としてより低いパワー損失を生じさせる）のどちらを実装するかを決定する。図５の単純な実装例で示されるように、「高」に設定され、ゲーティング論理５１４、５１６に適用される、単一のパワー・レベル・ビット５０２は、事実上、実行回路５２０、５２２、５２４、５２６のすべてを高性能モードの実行ステージ５００によって使用可能にする。しかしながら、パワー・レベル・ビット５０２が「低」に設定された場合、ゲーティング論理５１４、５１６は、低パワー実行パイプライン回路５２４が低性能モードの実行ステージ５００によって使用されるように、事実上、第１および第２の高パワー実行パイプライン回路５２０、５２２を使用禁止とする。高パワー実行パイプライン回路５２０、５２２を選択的に実行可能にすることに加えて、パワー・レベル・ビット５０２を使用して、構成可能実行ユニット５２６を別々に構成することができる。パワー・レベル・ビット５０２は、スケジューリングされた動作を制限するために、スケジューリング論理５１２内に組み込むこともできる。
【００２６】
もちろん、他の手法を使用して、その現在のスループット・レートを超えてパイプライン全体のスループットを低下させることなく、個々のパイプライン・ステージでのパワー消費および性能を低下させることが可能であることを理解されよう。たとえば個々のパイプライン・ステージは、各ステージのクロッキング・レートを低下させることによって抑制（throttle back）することができる。加えて、または別の方法では、個々のステージが重複リソース（たとえば、ある実行ステージ内の２つの浮動小数点ユニット）を含む場合、そのリソースのうちの１つのみを使用することによって、ステージはより低性能のモードに再構成することができる。
【００２７】
本発明の選択された諸実施形態についてさらに説明するために、図６には、個々のパイプライン・ステージの性能を監視するため、および、パイプライン・ステージを制御するために１つまたは複数のパワー・レベル・ビットを生成するための、例示的方法６００の流れ図が示される。ステップ６０１で、プロセッサが高性能、高パワー・モードで構成されたパイプラインで動作している場合などに、プロセスが開始される。ステップ６０２で、パイプライン・スループットまたは性能が低下したことを検出するために、パイプライン性能が監視される。これは、時間ウィンドウ中にどれだけのステージ・イベントが発生するかをカウントまたは検出することによって、各ステージについて実行可能であり、このウィンドウは固定するか、またはプログラム可能に調整することができる。このようにして性能モニタは、カウント・ウィンドウ中のフェッチ・ステージで発生するフェッチ・イベントをカウントし、それとは別にカウント・ウィンドウ中の復号ステージで発生する復号イベントをカウントするという具合である。ステップ６０２の結果は、スループット・カウントまたはイベント・ウィンドウ・カウントが、各パイプライン・ステージについて測定されることである。ステップ６０３で、各ステージに対するイベント・ウィンドウ・カウントが、性能モニタ内の制御論理を使用して、所定のしきい値と比較される。この比較に基づいて、パイプライン動作を制御するためにパワー・レベル・ビットが生成される。この比較は、単一ステージからのイベント・ウィンドウ・カウントが第１のしきい値よりも低い場合、「低」パワー・レベル・ビットを生成する可能性があり、または、すべてのステージからのイベント・カウントが第１のしきい値よりも低いことを要求する可能性がある。これとは逆に、この比較は、すべてのステージからのイベント・ウィンドウ・カウントが第２のしきい値またはこの値よりも上である場合、「高」パワー・レベル・ビットを生成する可能性がある。ステップ６０４で、各ステージでどのようにリソースが使用されるかを制御するために、パワー・レベル・ビットがパイプライン・ステージに配布またはブロードキャストされる。ステップ６０４で、パワー・レベル・ビットが、より低い性能、より低いパワー・モードを実装すべきであることを示す場合、パイプライン・ステージ・リソースは、命令がフェッチ、復号、実行、書き戻し、および完了されるレートを低下させるように構成される。これとは逆に、ステップ６０４で、パワー・レベル・ビットが、より高い性能、高パワー・モードを実装すべきであることを示す場合、パイプライン・ステージ・リソースは、命令がフェッチ、復号、実行、書き戻し、および完了されるレートを増加させるように構成される。このようにして、方法６００が経時的に繰り返されるにつれて、検出されたスループット・カウントを使用して、パイプライン性能（および付随するパワー消費）を低下または増加させるようにパワー・レベル・ビットが調整される。
【００２８】
以上、パイプライン型プロセッサ内の個々のステージのパワー消費を制御するための例示的実装を参照しながら説明してきたが、本明細書に開示された技法は、より広範囲に適用可能であることを理解されよう。たとえば、マルチコア・プロセッサ・システムを、マルチコア・プロセッサ・システムに関する全体のワークロード実行特徴に基づいて、第１の高性能モード（すべてのプロセッサ・コアが動作している）から、第２の低パワー性能モード（選択されたプロセッサ・コアのみが実行可能および動作可能である）へと、動的に再構成することができる。他の例では、そうでない場合はより高速の、よりパワーを必要とする専用グラフィクス・アクセラレータ回路によって処理されることになる、グラフィクス処理要件を処理するために、低性能モードの汎用プロセッサ・コアを選択することができる。
【００２９】
当業者であれば理解されるように、本発明は、全体としてまたは部分的に、方法、システム、またはコンピュータ・プログラム製品として具体化することができる。したがって本発明は、完全なハードウェア実施形態、完全なソフトウェア実施形態（ファームウェア、常駐ソフトウェア、マイクロコードなどを含む）、あるいは、本明細書ではすべてが全体として「回路」、「モジュール」、または「システム」と呼ばれる場合のあるソフトウェア態様とハードウェア態様とを組み合わせた実施形態の、形を取ることができる。さらに本発明は、媒体内で具体化されたコンピュータ使用可能プログラム・コードを有する、コンピュータ使用可能記憶媒体上のコンピュータ・プログラム製品の形を取ることもできる。たとえば、マルチプロセッサ・システム内の各プロセッサ・コアは、検出されたパイプライン・スループットに基づいてパワー消費を減少させるようにパイプライン性能を再構成するための、その独自のプログラミング命令またはコードを有することができる。別の方法として、性能モニタ制御論理は、マルチプロセッサ・システム全体に対して単一の場所で中央に配置することができる。
【００３０】
前述の説明は、例示および説明のために提示されてきた。これは、本発明を網羅すること、または開示された精細な形に限定することを意図するものではない。前述の教示に鑑みて、多くの修正形態および変形形態が可能である。本発明の範囲は、この詳細な説明によってではなく、本明細書に添付された特許請求の範囲によって、限定されることが意図される。前述の仕様および例示的な実装は、本発明の構成物の製造および使用について完全に説明するものである。本発明の多くの実施形態は本発明の趣旨および範囲を逸脱することなく実行可能であるため、本発明は添付された特許請求の範囲内にあるものとする。
【図面の簡単な説明】
【００３１】
【図１】本発明の選択された諸実施形態が実装可能な、マルチプロセッサ・コンピュータ・アーキテクチャを示す図である。
【図２】いくつかのサイクルの定義されたウィンドウ内のイベントをカウントする性能モニタ論理を備えた、プロセッサ・パイプラインを簡略化された形で示す概略図である。
【図３】プログラム可能なサイクル・ウィンドウ内のイベントをカウントするためのカウンタを簡略化された形で示す図である。
【図４】１つまたは複数のパワー・レベル信号がパイプラインに送られ、ステージの機能を制御する、プロセッサ・パイプラインを簡略化された形で示す概略図である。
【図５】パワー・レベル信号に応答して、高性能設計および低性能設計を別々に選択することが可能な、実行ステージの例示的実装を示す図である。
【図６】個々のパイプライン・ステージの性能を監視するため、および、パイプライン・ステージを制御するために１つまたは複数のパワー・レベル・ビットを生成するための、例示的シーケンスを示す流れ図である。
【符号の説明】
【００３２】
２００    プロセッサ・パイプライン
２０２    ｌｃａｃｈｅフェッチ
２０４    命令復号
２０６    実行
２０８    書き戻し
２１０    完了
２１３    フェッチ
２１５    復号
２１７    実行
２１９    書き戻し
２２０    性能モニタ
２２１    完了
２２２    パワー損失
２２４    パワー・レベル
【図１】
0005336830.tif 000003
【図２】
0005336830.tif 000004
【図３】
0005336830.tif 000005
【図４】
0005336830.tif 000006
【図５】
0005336830.tif 000007
【図６】
0005336830.tif 000008