(57)【特許請求の範囲】
【請求項１】
プラットフォーム上のプロセッサ状態を選ぶシステムであって：
現在のプロセッサ周波数、および前記プロセッサがビジーである時間のパーセンテージを含むプロセッサ状態に関したハードウェアフィードバックを提供するための回路を有するプロセッサと；
プロセッサストール時間情報に基づいて前記ハードウェアフィードバックを調整し、調整された前記フィードバックに基づいて、前記プロセッサ状態を更新するための手段であって、前記調整および更新は、前記プロセッサ状態をアップデートするためにロジックによって有効なプロセッサ状態が読み出される前に、実行される、手段と；
を有し、
前記調整し更新するための手段は、一つ以上のアクタが実際のプロセッサの周波数を計数した第１のマシン状態レジスタおよび最大プロセッサ周波数を計数した第２のマシン状態レジスタの比率の算出の結果を使用することを許可する前に、前記第１のマシン状態レジスタのための値を修正するロジックを更に有し、前記修正は、プロセッサストール時間情報を適用し、新しいプロセッサ周波数を算出する、
システム。
【請求項２】
前記調整し更新するための手段は、前記ハードウェアフィードバックおよびプロセッサストール時間情報を受信するための、かつ前記ハードウェアフィードバックおよびプロセッサストール時間情報に基づいて新しいプロセッサ周波数を算出するための、かつ前記新しいプロセッサ周波数を前記プロセッサで開始させるための前記一つ以上のアクタを有する請求項１に記載のシステム。
【請求項３】
前記一つ以上のアクタは、オペレーティングシステム、プロセッサ回路、プロセッサ内部のソフトウェアエージェント、ファームウェアサービス、組み込みパーティションエージェント、仮想アプライアンスエージェント、オペレーティングシステムの外部のソフトウェアエージェントおよび前記プロセッサの外部の回路、からなるグループから選択される請求項２に記載のシステム。
【請求項４】
前記一つ以上のアクタは、オペレーティングシステム、プロセッサ回路、ファームウェアサービス、組み込みパーティションエージェント、仮想アプライアンスエージェント、オペレーティングシステムの外部のソフトウェアエージェントおよび前記プロセッサの外部の回路、からなるグループから選択される請求項１に記載のシステム。
【請求項５】
前記プロセッサ状態を更新するための目標Ｐ−Ｓｔａｔｅ（Ｐ−Ｓｔａｔｅｔａｒｇｅｔ）は、前記プロセッサがビジーである時間パーセンテージ（％Ｂｕｓｙ）と、有効なＰ−Ｓｔａｔｅ（Ｐ−Ｓｔａｔｅｅｆｆｅｃｔｉｖｅ）との積によって、Ｐ−Ｓｔａｔｅｔａｒｇｅｔ←％Ｂｕｓｙ＊Ｐ−Ｓｔａｔｅｅｆｆｅｃｔｉｖｅの算出式により決定され、前記Ｐ−Ｓｔａｔｅｅｆｆｅｃｔｉｖｅは、前記プロセッサの、プロセッサストール時間情報、現在のＰ−Ｓｔａｔｅおよび最大周波数に依存する請求項１に記載のシステム。
【請求項６】
前記プロセッサの目標サイクルカウント（Ｃ０ｔａｒｇｅｔ）は、数１の計算により決定され、
【数１】
0004954957.tif 000010
数１において、Ｃ０ｉは、現在のサイクルカウントを表し、Ｃ０ｐｏは最大周波数サイクルカウントを表し、Ｃ０ｓｔａｌｌはプロセッサストール時間の間のサイクルカウントを表し、かつＰｅｒｆｌｏｓｓは予め定められた許容可能な実行時間パフォーマンスロスのパーセンテージを表し、かつＣ０ｔａｒｇｅｔは修正された前記第１のマシン状態レジスタの値として返される請求項５に記載のシステム。
【請求項７】
前記第１のマシン状態レジスタ（ＭＳＲ）は、ＩＡ３２＿ＡＰＥＲＦ  ＭＳＲであり、前記第２のマシン状態レジスタは、ＩＡ３２＿ＭＰＥＲＦ  ＭＳＲであって、ＩＡ３２＿ＡＰＥＲＦは実際のプロセッサ周波数を計数し、かつＩＡ３２＿ＭＰＥＲＦは最大プロセッサ周波数を計数するものであって、比率ＩＡ３２＿ＡＰＥＲＦ／ＩＡ３２＿ＭＰＥＲＦと、前記プロセッサがビジーである時間のパーセンテージとの積が、前記ＩＡ３２＿ＡＰＥＲＦの修正前の前記プロセッサの有効なＰ−Ｓｔａｔｅを含み、かつＩＡ３２＿ＡＰＥＲＦレジスタが、プロセッサストール時間情報に基づき減ぜられる請求項１に記載のシステム。
【請求項８】
前記プロセッサ状態を更新するための手段が、第１のマシン状態レジスタおよび第２のマシン状態レジスタの比率を算出した結果を修正するロジックを更に有する手段であって、前記修正はプロセッサストール時間情報に基づく請求項１に記載のシステム。
【請求項９】
前記プロセッサ状態を更新するための手段が、第１のマシン状態レジスタおよび第２のマシン状態レジスタの比率の算出の結果を使用する前に、前記第１のマシン状態レジスタの値を修正するロジックをさらに有し、前記修正はプロセッサストール時間情報を反映しているカウンタを適用する請求項１に記載のシステム。
【請求項１０】
ハードウェア、ソフトウェアまたはこれら２つの組合せによって実行される、プラットフォーム上のプロセッサ状態の選択のための方法であって：
現在のプロセッサ周波数、および前記プロセッサがビジーである時間のパーセンテージを含むプロセッサ状態に関したハードウェアフィードバックを、前記プラットフォーム上のプロセッサから受け取るステップと；
プロセッサストール時間情報に基づいて前記ハードウェアフィードバックを調整し、調整された前記フィードバックに基づいて前記プロセッサ状態を更新するステップであって、前記調整および更新は、前記プロセッサ状態をアップデートするためにロジックによって有効なプロセッサ状態が読み出される前に、実行される、ステップと；
を有し、
前記更新するステップは、実際のプロセッサの周波数を計数した第１のマシン状態レジスタおよび最大プロセッサ周波数を計数した第２のマシン状態レジスタの比率の算出の前に、前記第１のマシン状態レジスタの値を変更するステップを更に有し、前記修正は、プロセッサストール時間情報を適用し、新しいプロセッサ周波数を算出する、
方法。
【請求項１１】
前記フィードバックおよびプロセッサストール時間情報に基づいて新しいプロセッサ周波数を算出するステップ；および
前記プロセッサの前記新しいプロセッサ周波数を開始するステップ；
を更に有する請求項１０に記載の方法。
【請求項１２】
前記算出するステップおよび前記開始するステップは、オペレーティングシステム、プロセッサ回路、プロセッサ内部のソフトウェアエージェント、ファームウェアサービス、組み込みパーティションエージェント、仮想アプライアンスエージェント、オペレーティングシステムの外部のソフトウェアエージェントおよび前記プロセッサの外部の回路、からなるグループから選択される一つ以上のアクタにより実行される請求項１１に記載の方法。
【請求項１３】
ビジーである時間パーセンテージ（％Ｂｕｓｙ）と、有効なＰ−Ｓｔａｔｅ（Ｐ−Ｓｔａｔｅｅｆｆｅｃｔｉｖｅ）との積によって、Ｐ−Ｓｔａｔｅｔａｒｇｅｔ←％Ｂｕｓｙ＊Ｐ−Ｓｔａｔｅｅｆｆｅｃｔｉｖｅに従って、前記プロセッサ周波数を更新するための目標Ｐ−Ｓｔａｔｅ（Ｐ−Ｓｔａｔｅｔａｒｇｅｔ）を決定するステップを更に有する方法であって、前記Ｐ−Ｓｔａｔｅｅｆｆｅｃｔｉｖｅは、前記プロセッサの、プロセッサストール時間情報、現在のＰ−Ｓｔａｔｅおよび最大周波数に依存する請求項１０に記載の方法。
【請求項１４】
数２により前記プロセッサの目標サイクルカウント（Ｃ０ｔａｒｇｅｔ）を計算するステップを更に有する方法であって、
【数２】
0004954957.tif 000011
数２において、Ｃ０ｉは、現在のサイクルカウントを表し、Ｃ０ｐｏは最大周波数サイクルカウントを表し、Ｃ０ｓｔａｌｌはプロセッサストール時間の間のサイクルカウントを表し、かつＰｅｒｆｌｏｓｓは予め定められた許容可能な実行時間パフォーマンスロスのパーセンテージを表し、かつＣ０ｔａｒｇｅｔは修正された前記第１のマシン状態レジスタの値として返される請求項１３に記載の方法。
【請求項１５】
前記プロセッサ状態を更新するステップは、第１のマシン状態レジスタおよび第２のマシン状態レジスタの比率を算出した結果を修正するステップを更に有し、前記修正はプロセッサストール時間情報に基づく請求項１０に記載の方法。
【請求項１６】
現在のプロセッサ周波数、および前記プロセッサがビジーである時間のパーセンテージを含むプロセッサ状態に関したハードウェアフィードバックを、プラットフォーム上のプロセッサから受け取る手順と；
プロセッサストール時間情報に基づいて前記ハードウェアフィードバックを調整し、調整された前記フィードバックに基づいて前記プロセッサ状態を更新する手順であって、前記調整および更新は、前記プロセッサ状態をアップデートするためにロジックによって有効なプロセッサ状態が読み出される前に、実行される、手順と；
を機械に実行させるための命令であって、  前記更新する手順は、実際のプロセッサの周波数を計数した第１のマシン状態レジスタおよび最大プロセッサ周波数を計数した第２のマシン状態レジスタの比率の算出の前に、前記第１のマシン状態レジスタの値を修正する手順を更に有し、前記修正は、プロセッサストール時間情報を適用し、新しいプロセッサ周波数を算出する、命令を記憶した、前記プラットフォーム上のプロセッサ状態の選択のための、機械読み取り可能な記録媒体。
【請求項１７】
前記フィードバックおよびプロセッサストール時間情報に基づいて新しいプロセッサ周波数を算出する手順；および
前記プロセッサの前記新しいプロセッサ周波数を開始する手順と；
を機械に実行させるための命令を記憶した、請求項１６に記載の機械読み取り可能な記録媒体。
【請求項１８】
前記算出する手順および開始する手順は、オペレーティングシステム、プロセッサ回路、プロセッサ内部のソフトウェアエージェント、ファームウェアサービス、組み込みパーティションエージェント、仮想アプライアンスエージェント、オペレーティングシステムの外部のソフトウェアエージェントおよび前記プロセッサの外部の回路、からなるグループから選択される一つ以上のアクタにより実行される請求項１７に記載の機械読み取り可能な記録媒体。
【請求項１９】
ビジーである時間パーセンテージ（％Ｂｕｓｙ）と、有効なＰ−Ｓｔａｔｅ（Ｐ−Ｓｔａｔｅｅｆｆｅｃｔｉｖｅ）との積によって、Ｐ−Ｓｔａｔｅｔａｒｇｅｔ←％Ｂｕｓｙ＊Ｐ−Ｓｔａｔｅｅｆｆｅｃｔｉｖｅに従って、前記プロセッサの周波数を更新するための目標Ｐ−Ｓｔａｔｅ（Ｐ−Ｓｔａｔｅｔａｒｇｅｔ）を決定する手順を機械に実行させるための命令を更に記憶した、機械読み取り可能な記録媒体であって、前記Ｐ−Ｓｔａｔｅｅｆｆｅｃｔｉｖｅは、前記プロセッサの、プロセッサストール時間情報、現在のＰ−Ｓｔａｔｅおよび最大周波数に依存する請求項１６に記載の機械読み取り可能な記録媒体。
【請求項２０】
数３により前記プロセッサの目標サイクルカウント（Ｃ０ｔａｒｇｅｔ）を計算する手順を機械に実行させるための命令を更に記憶した、機械読み取り可能な記録媒体であって、
【数３】
0004954957.tif 000012
数３において、Ｃ０ｉは、現在のサイクルカウントを表し、Ｃ０ｐｏは最大周波数サイクルカウントを表し、Ｃ０ｓｔａｌｌはプロセッサストール時間の間のサイクルカウントを表し、かつＰｅｒｆｌｏｓｓは予め定められた許容可能な実行時間パフォーマンスロスのパーセンテージを表し、かつＣ０ｔａｒｇｅｔは、修正された前記第１のマシン状態レジスタの値として返される請求項１９に記載の機械読み取り可能な記録媒体。
【請求項２１】
前記プロセッサ状態を更新する手順は、第１のマシン状態レジスタおよび第２のマシン状態レジスタの比率を算出した結果を修正する手順を更に有し、前記修正はプロセッサストール時間情報に基づく請求項１６に記載の機械読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施例は、プラットフォームのパワーマネジメントに関する。特にハードウェアフィードバックを用い、適応化したパワーマネジメントの方策に関する。
【背景技術】
【０００２】
プラットフォームのパワーマネジメントには、さまざまな手法が存在する。既存の手法としては、プロセッサ利用に基づいてプロセッサ周波数を調整することである。適応型パワーマネージメントポリシーを用いたコンピュータシステムにおいて、プロセッサ性能状態（Ｐ−Ｓｔａｔｅ）は要求に基づいて調整される。プロセッサの利用が減少するにつれて、プロセッサは電源を節約するために、状態をより低い性能に移行する。プロセッサ利用が増加するにつれて、プロセッサはパフォーマンス状態を高くして、より電力を消費する。多くのオペレーティングシステムにおいて、目標パフォーマンスレベル（Ｐ−Ｓｔａｔｅの選択）は、プロセッサ利用度および有効なＰ−Ｓｔａｔｅの組合せに基づく。有効なＰ−Ｓｔａｔｅは、ＩＡ３２＿ＡＰＥＲＦおよびＩＡ３２＿ＭＰＥＲＦマシンステータスレジスタ（ＭＳＲ）を用いたＧＶ３ハードウェアフィードバックによって定まる。ＩＡ３２＿ＡＰＥＲＦ／ＩＡ３２＿ＭＰＥＲＦ比率（ＧＶ３ハードウェアフィードバックにおいて返される）は、コアが動作しているとき（Ｃ０  Ｃ−状態）の実際のクロック周波数を最大のクロック周波数で割ることによって、直近の計測期間の有効なＰ−Ｓｔａｔｅを提供する。
【０００３】
たとえばインテル社から入手可能な大部分のプロセッサにおいて、Ｐ−Ｓｔａｔｅは、プロセッサの多数のコアの中で調整される。１つのコアが１００％ビジーで、最も高い周波数での動作を選ぶ場合、同じプロセッサの他のコアは同様に高い周波数で動作する。コアは協調しているので、有効なコアの周波数を見つけるために、すなわち単に直近のＰ−Ｓｔａｔｅを用いるのではなく、より正確な新しいＰ−Ｓｔａｔｅを選択するために、ＩＡ３２＿ＡＰＥＲＦおよびＩＡ３２＿ＭＰＥＲＦ  ＭＳＲｓによって提供されるＧＣＶハードウェアフィードバックが加えられる。
【発明の開示】
【発明が解決しようとする課題】
【０００４】
本発明の実施例は、最適プロセッサ周波数を選び、電力を減少させるための、ハードウェアフィードバックを使用した適応型パワーマネジメントに関するシステム及び方法を開示する。少なくとも一つの実施例において、本発明は、プロセッサストール状態の挙動のために調整されたハードウェアフィードバックに基づき、プロセッサ周波数を最適化するとともに電力使用を減少させることを目的とする。プロセッサが、メモリアクセス、バスの挙動等によりストール状態になる場合、フィードバックはより低くなる。すなわち、ＭＰＥＲＦとＡＰＥＲＦとの比率はより小さくなる。これは、ＯＳ（オペレーティングシステム）がプロセッサのために、小さいＰ−Ｓｔａｔｅを選ぶ結果となる。それは、パフォーマンスにほとんど影響を与えることなく、さらなる省電力化がなされる。いくつかの実施例では、Ｐ−Ｓｔａｔｅは、回路内、ファームウェアまたはＯＳの外部の他のサービスによってアップデートされる。本発明の実施例は、いかなるタイプのストール状態にも利用できる。このとき、プロセッサは、低下したパフォーマンス状態であっても、ワークロードのパフォーマンスにほとんどまたは全く影響を与えずに動作できる。
【０００５】
明細書において、本発明の「一実施例」という語は、実施例と関連して記載されている特定の特色、構造または特徴が、本発明の少なくとも一つの実施例に含まれることを意味する。したがって、明細書の全体にわたってさまざまな場所に記載されている「一実施例において」という語は、必ずしも同じ実施例を指しているというわけではない。
【０００６】
特定の構成および細部の説明は、本発明の完全な理解を提供するために記載される。なお、具体的な詳細な説明を要さずして、本発明の実施例は、当業者によって実施できることは明らかである。さらに、周知の特徴は、本発明を不明瞭にしないために、省略しまたは単純化して説明する。さまざまな実施例が、本明細書の全体にわたって記載されている。これらは、本発明の特定実施例の説明のためだけである。本発明の範囲は、記載された実例に限定されない。
【課題を解決するための手段】
【０００７】
本願明細書において、改良された適応パワーマネジメントシステム及び方法が開示される。発明者による最初の実験は、１００％ビジーのプロセッサにおいて、プロセッサストール状態の間、目標Ｐ−Ｓｔａｔｅの選択を周期的に減少させると、無視できる程度のパフォーマンス低下でもって、追加的な省力化がもたらされることが示された。目標Ｐ−Ｓｔａｔｅ選択はＧＶ３ハードウェアフィードバックの機能であるが、本発明の実施例では、プロセッサストール状態挙動に基づいてＧＶ３ハードウェアフィードバックを調整することによって、最小のオペレーティングシステムのオーバーヘッドのみで最適目標Ｐ−Ｓｔａｔｅ選択を達成できるように設計した。プロセッサストール状態挙動に基づいてＧＶ３ハードウェアフィードバックを調整するための二つの選択的アプローチを以下説明する。第１の手法は、プロセッサストール状態の挙動に基づく調整されたカウント値を返すようＩＡ３２＿ＡＰＥＲＦを変更する手法である。これにより、小さい比率の値をＧＶ３ハードウェアフィードバックが返すことになる。第２の手法は、新しいＭＳＲまたはカウンタを使用してＧＶ３ハードウェアフィードバックを調整する手法である。これにより、プロセッサストール状態の挙動に基づくＩＡ３２＿ＡＰＥＲＦ／ＩＡ３２＿ＭＰＥＲＦ比率が調整される。他の選択肢としては、これらの２つの手法を統合して行うことである。
【０００８】
説明の便宜上、ＭＳＲの使用法に関して少し触れる。ＩＡ３２＿ＡＰＥＲＦ  ＭＳＲ（以下「ＡＰＥＲＦ」）は実際のプロセッサ周波数を計測する。そして、ＩＡ３２＿ＭＰＥＲＦ（以下「ＭＰＥＲＦ」）には最大周波数が格納される。例えば、２ＧＨｚの最大周波数を有するプラットフォームに、Ｐ−Ｓｔａｔｅ選択に基づいて、ある時刻におけるプロセッサの実際の周波数が１ＧＨｚである場合、ＭＰＥＲＦに対するＡＰＥＲＦの比率（ＩＡ３２＿ＡＰＥＲＦ／ＩＡ３２＿ＭＰＥＲＦ）は５０％になる。
【０００９】
本発明の実施例は、ストール状態の挙動に基づくＰ−Ｓｔａｔｅを検査するに際し、ＯＳまたは他の制御ロジックから見えるＡＰＥＲＦの値を変える。すなわち、ＡＰＥＲＦは、ストールの挙動に基づいて、調整された戻り値を返す。この点については以下に詳述する。ＡＰＥＲＦ比率の戻り値を調整することによって、ＯＳから見えるＡＰＥＲＦ／ＭＰＥＲＦも同様に変わる。既存のシステムにおいて、プロセッサが１００％ビジーに見える場合、ストールが９０％発生する場合であっても、プロセッサは最大周波数（最高のＰ−Ｓｔａｔｅ）で動作を続ける。
【００１０】
あるオペレーティングシステムにおいて、ＯＳは、１００ｍｓごとにカウンタを検査して、これに基づいてＰ−Ｓｔａｔｅを調整する。他のＯＳは、異なる時間感覚でＰ−Ｓｔａｔｅの更新を行う。このように、本発明の実施例は、処理量利用（ビジー％）およびストール状態挙動の組合せに基づいて、Ｐ−Ｓｔａｔｅの選択値を変える。ところが、既存のシステムは、Ｐ−Ｓｔａｔｅを選ぶために、ストール状態により調整済みのＡＰＥＲＦ／ＭＰＥＲＦ比率を使用しない。
【００１１】
Ｐ−Ｓｔａｔｅ検査の間は、プロセッサが最高周波数で動作するため、ほとんどストール状態が発生しない。
【発明を実施するための最良の形態】
【００１２】
図１には、本発明の一実施例による最適プロセッサ性能レベルを選ぶ例示的な方法が示されている。方法１００によってＰ−Ｓｔａｔｅはアップデートされることを示している。ブロック１０１において、ある期間の有効なＰ−Ｓｔａｔｅが検知される。これは、マシン状態レジスタ（ＭＳＲ：Ｍａｃｈｉｎｅ  Ｓｔａｔｅ  Ｒｅｇｉｓｔｅｒｓ）ＩＡ３２＿ＡＰＥＲＦ（ＡＰＥＲＦ）およびＩＡ３２＿ＭＰＥＲＦ（ＭＰＥＲＦ）値を用いてなされる。ＡＰＥＲＦは（プロセッサストール状態のために調整された）実際の周波数コア比を計数する、そして、ＭＰＥＲＦは最大周波数コア比を計数する。有効なＰ−Ｓｔａｔｅは、ＡＰＥＲＦ／ＭＰＥＲＦ比率により算出される。マシン状態レジスタ（ＭＳＲ）ＩＡ３２＿ＡＰＥＲＦおよびＩＡ３２＿ＭＰＥＲＦが使われる一方、本発明の実施例では、ＭＳＲを利用する既存のＯＳにおいて、新しいバリエーションを有するＭＳＲを使用する。本発明の実施形態では、ＡＰＥＲＦは、実際の周波数コア比を計数するが、プロセッサストール状態のために調整済みである。ＭＰＥＲＦは、最大周波数コア比を計数する。有効なＰ−Ｓｔａｔｅは、修正されたＡＰＥＲＦをＭＰＥＲＦ値によって割った比率から算出される。この計算値は既存のシステムで使用される計算値と比べて、プロセッサストール状態時間が考慮されるという点で異なっている。
【００１３】
目標のＰ−Ｓｔａｔｅは、ブロック１０３において決定される。Ｐ−Ｓｔａｔｅは、ビジー（％Ｂｕｓｙ）と有効なＰ−Ｓｔａｔｅ（Ｐ−Ｓｔａｔｅｅｆｆｅｃｔｉｖｅ）との積で与えられる。ビジー（％Ｂｕｓｙ）は、アイドル状態を除く利用値である。ブロック１０５において、目標Ｐ−Ｓｔａｔｅが現在のＰ−Ｓｔａｔｅと異なっているかを判定する。それらが異なる場合、ブロック１０７においてＰ−Ｓｔａｔｅは切替えられる。この処理は、上で決定された値によって、論理プロセッサまたはコアに新規なＰ−Ｓｔａｔｅをセットすることによって実行される。Ｐ−Ｓｔａｔｅがセットされた後、ＡＰＥＲＦおよびＭＰＥＲＦもリセットされる。別の実施例においては、ＡＰＥＲＦおよびＭＰＥＲＦ値は実際にリセットされず、ＡＰＥＲＦおよびＭＰＥＲＦの最新値は保存されて、それからＭＳＲの最新のカウントから減算されるようにする。実際の実装は単に与えられた期間のカウンタの変化の比率が算出される結果となる。なお、算出の詳細はアーキテクチャまたは設計によって異なる。処理は、その後ブロック１０９に続く。
【００１４】
ＡＰＥＲＦが修正される実施例は既存のシステムと比して非常に良好なアーキテクチャ（ＩＡ）を提供する。そして、既存のオペレーティングシステム（ＯＳ）のように目標Ｐ−Ｓｔａｔｅを選択においてＩＡ３２＿ＡＰＥＲＦ／ＩＡ３２＿ＭＰＥＲＦ比率を使用するものと比べて、最小のオペレーティングシステムのオーバーヘッド増加に止まる。プロセッサストール状態に基づいてＩＡ３２＿ＡＰＥＲＦを減らすことは、直接比率を減少させることになる。これは、適度なストール状態を伴う、より低い目標Ｐ−Ｓｔａｔｅを自動的に選ぶ結果となる。
【００１５】
他の実施例は、ＧＶ３ハードウェアフィードバックを調整するために用いるＯＳの付加的なカウンタの使用を必要とする。この実施例では、オペレーティングシステムのオーバーヘッドがより増加するが、より少ないプロセッサの変更で済むというトレードオフが存在する。
【００１６】
処理量パフォーマンスは、処理が完了するために必要とする時間に基づいて表してもよい。最も高いＰ−Ｓｔａｔｅで動作するのに必要とされる時間をＴｐｏとし、目標Ｐ−Ｓｔａｔｅのときの処理時間をＴｔａｒｇｅｔとする。パフォーマンスのロスＰｅｒｆｌｏｓｓは、下記数４のように表される。
【数４】
0004954957.tif 000002
【００１７】
上記の値は、Ｔｏｎ−ｄｉｅおよびＴｏｆｆ−ｄｉｅとしてオン・ダイとオフ・ダイの二つの値に分割することができる。下記の数５に示されるように、パフォーマンスロスは、目標Ｐ−Ｓｔａｔｅでの処理時間（Ｔ）と最大周波数Ｐ−Ｓｔａｔｅ  Ｐ０での処理時間との関連を使用して算出されてもよい。
【数５】
0004954957.tif 000003
【００１８】
プロセッサストール状態の間の実行時間は変化しないため、すなわちストール状態時間は同じプロセッサ周波数のときは、変化しないため、現在のＰ−Ｓｔａｔｅ（ｉによって表される）でのオフ・ダイのプロセッサタイムである数６は、目標のオフ・ダイの時間およびＰ０のオフ・ダイの時間と等しい。
【数６】
0004954957.tif 000004
なお、オフ・ダイとは、プロセッサがストールして、何かが起こるのを待っていることを意味する。同様に、実行時間はプロセッサ周波数に依存するため、Ｐ−ＳｔａｔｅにおけるサイクルカウントＣ０すなわちＣ０ｉ（すなわちプロセッサの現在の実行状態）と、Ｐ０  Ｐ−ＳｔａｔｅにおけるサイクルカウントＣ０との間には、数７の式３．１および式３．２が成り立つ。
【数７】
0004954957.tif 000005
現在のＰ−Ｓｔａｔｅで動作中のサイクルカウントを目標Ｐ−Ｓｔａｔｅで動作中のサイクルカウントで割った値は、現在のＰ−Ｓｔａｔｅでの周波数を目標Ｐ−Ｓｔａｔｅでの周波数で割った値と等しい。この比は、周波数の比と同じであるということである。しかし、一つは、実際の周波数Ｃ０サイクルでカウントしている。Ｃ０ｉは、現在のＰ−Ｓｔａｔｅでカウントしており、最高のＰ−Ｓｔａｔｅでカウントするよりもカウントは遅くなる。
【００１９】
オン・ダイ（ストールなし）での動作処理における目標Ｐ−ＳｔａｔｅがＰ０（最大周波数）であり、オフ・ダイ（ストール時）での動作処理における目標Ｐ−Ｓｔａｔｅが例えばＰ３であるとき、下記数８の式４に示すように、ごくわずかなパフォーマンスロスでさらなる省力化達成され得る。
【数８】
0004954957.tif 000006
【００２０】
パフォーマンスロスの値は、プロセッサのストールがどれくらい正確に発見できるか、およびどれくらい早くＰ−Ｓｔａｔｅの調整が行えるかに依存する。より正確なストール状態検出をする能力、および直接プロセッサに対するより頻繁なＰ−Ｓｔａｔｅ調整は、最高のパフォーマンスを提供する。
【００２１】
新しいＡＰＥＲＦ値を算出する１つの手法は、上記式（数８）に適応させることと、現在のサイクルカウント（Ｃ０ｉ）および最大周波数サイクルカウント（Ｃ０Ｐ０）を用いたサイクルカウントに式３．１および３．２を使用することである。これは、数９に示される。
【数９】
0004954957.tif 000007
【００２２】
数９において、Ｃ０ｔａｒｇｅｔを求めると数１０となる。
【数１０】
0004954957.tif 000008
【００２３】
Ｔｏｆｆ−ｄｉｅ／Ｔｏｎ−ｄｉｅをストールの比に置き換えると数１１となる。
【数１１】
0004954957.tif 000009
【００２４】
上記数１１の式において計算されるＣ０ｔａｒｇｅｔは、ＡＰＥＲＦ値の新しい値を求める一つの手法を提示している。目標周波数の算出で、パフォーマンスロスの値として定数が用いられている点に留意する必要がある。本願明細書において、パフォーマンスロスがプロセッサで動いているアプリケーションに基づいてあらかじめ選択されることは、当業者にとって明らかである。実験における検討において、発明者は、上記の方程式で受け入れられる値として、５％のパフォーマンスロスの値を使用した。算出されたＣ０ｔａｒｇｅｔが、ＭＳＲの新しいＡＰＥＲＦ値として返されるとしてもよい。この方程式の利用によって、ＡＰＥＲＦの値として既存のシステムで返される値より小さい値を返す結果となる。したがって、ＡＰＥＲＦ／ＭＰＥＲＦ比率は、ＡＰＥＲＦ値の調整によって、より小さい値となる。結果として小さい比率は低い周波数のＰ−Ｓｔａｔｅとなる。これにより省エネとなる。
【００２５】
ストールしたプロセッサは、アイドル状態のプロセッサとは別のＣ−Ｓｔａｔｅとなる点に留意する必要がある。アイドル状態のプロセッサは何もしていない。しかしながら、ストールしたプロセッサはビジーであり、ウエイト状態であるプロセッサは、種々のＣ−Ｓｔａｔｅｓのうちの１つの状態にある。例えば、Ｃ０状態は、プロセッサが動作していることを示す。Ｃ１、Ｃ２またはＣ３は、プロセッサがある別のアイドル状態にあることを示す。最も深いＣ−Ｓｔａｔｅｓは、最も高い省力化を提供する。
【００２６】
なお、ＯＳが必要とする処理周波数は、しばしば過大に設定される点に注意しなければならない。例えば、充分な処理パワーを有することを確実に得るため、目標Ｐ−Ｓｔａｔｅが２／３比率で算出される場合、ＯＳは最大の２．３３／３で実際の周波数をセットする。プロセッサがビジー１００％で動作している場合、他のＯＳはＰ−Ｓｔａｔｅ周波数を最大周波数にアップデートしてもよい。その後、自然に、可能であれば次のアップデート期間において低い周波数に移行する。
【００２７】
図２Ａ−Ｂは、上記の式を使用して、初期の実験から得られた経験的データを示した表である。図において、本発明の実施例を使用している結果は、図の「ＡＣＮＴ２」として示されている。本発明の実施例は、サンドラメモリテストにおいてごくわずかなパフォーマンスロスで２桁の省力化を示している。標準のベンチマークテストであるサンドラに関する詳細な情報は、インターネットのＵＲＬ  ｗｗｗ＊ｓｉｓｏｆｔｗａｒｅ＊ｎｅｔ／から得られる。なお、このＵＲＬは、不用意な接続を避けるために、ピリオドをアスタリスクに置き換えて記述している。例えば、図２Ａは、以下の５つの可能なＰ−Ｓｔａｔｅ（２３３３，２０００，１６６６，１３３３，１０００）を有するモーバイルシステムを使用した予備的な実験結果を示す。図２Ｂは、以下の４つの可能なＰ−Ｓｔａｔｅ（３０００、２６６６，２３３３，２０００）を有するサーバーシステムを使用している予備的な実験結果を示す。
【００２８】
第一列は、特定のベンチマーク動作を示す。「ＤＢＳ  Ｓｃｏｒｅ」と書かれた第二列は、ＡＣＮＴ２使用しないＤｅｍａｎｄ  Ｂａｓｅｄ  Ｓｗｉｔｃｈｉｎｇ（ＤＢＳ）のスコアを示す。「Ａｃｎｔ２  Ｓｃｏｒｅ」と書かれた第三列は、ＡＣＮＴ２使用を有したスコアを示す。「Ａｃｎｔ２  Ｐｅｒｆ  Ｌｏｓｓ」と書かれた第四列は、ＡＣＮＴ２を使用したときに、テストスコアのパフォーマンスロスのパーセント表示である。最後の３つの列はそれぞれ、ＤＢＳパワー（ワット）、ＡＣＮＴ２パワー（ワット）およびＡＣＮＴ２を使用するときの省電力化のパーセント表示である。
【００２９】
別の実施例において、目標Ｐ−Ｓｔａｔｅの算出のためにＡＰＥＲＦ  ＭＳＲを使用する代わりに、上述のように、ストール状態を計数するために、新規なカウンタとして例えば「ＳＰＥＲＦ」をプロセッサに加える。本実施例において、ＳＰＥＲＦは、ＭＰＥＲＦを用いて比率を算出するために用いる前に、ＡＰＥＲＦから減算される。別の実施例において、比率を直接示すカウンタがプロセッサに実装される、そして、ストール状態のための計算に使われる。これらの実施例は、新しいＭＳＲを設置するためにプロセッサアーキテクチャに付加的な変更が要求される。加えて、ＭＳＲデータを受信した後に算出がなされる場合、ＯＳの変更も必要となってくる。他の実施例としては、ＡＰＥＲＦ  ＭＳＲを生成するための調整手段として、プロセッサの制御を提供してもよい。例えば、フラグがＯＮであるときに、ＡＰＥＲＦはストール状態のカウントに自動的に調整されてもよい。ＯＳが比率を算出する前にＡＰＥＲＦレジスタを修正する実施例では、ＯＳを適合させる労力が軽減される。このように、ＯＳによる算出が実行される方法を変えなくても、単に変数を調整することによって、算出を修正することができる。
【００３０】
本発明の実施形態では、ＯＳによってアクセスされる前に、ＭＳＲカウンタは、生成されて、ハードウェアにおいて調整される。各々の論理プロセッサは、それ自身のＭＳＲを有する。コアは、複数の論理プロセッサを有してもよい。しかしながら、単一のコアは、１つの周波数で動作するだけである。算出結果がソケットの同じコア上の他の論理プロセッサより低い周波数を示す場合、最大周波数が各々の論理プロセッサのために使われるであろう。しかしながら、将来のプロセッサでは同じソケット上のコアが別の周波数で動作することができると考えられる。
【００３１】
図３は本発明の実施例が実装されるシステム３００を例示したブロック図である。プロセッサ３１０は、フロントサイドバス３０１で、ノースブリッジとして知られているメモリーコントローラハブ（ＭＣＨ）３１４と通信する。ＭＣＨ  ３１４は、システムメモリ３１２にメモリバス３０３を経て接続されている。オペレーティングシステム（ＯＳ）３１３は、通常システムに存在し、プロセッサ３１０によって実行される。ＭＣＨ３１４は、同様に、グラフィックスバス３０５を介してアドバンストグラフィックスポート（ＡＧＰ）３１６と通信する。ＭＣＨ３１４は、サウスブリッジとしてしられているＰＣＩ（ｐｅｒｉｐｈｅｒａｌ  ｃｏｍｐｏｎｅｎｔ  ｉｎｔｅｒｃｏｎｎｅｃｔ）バス３０７を経て、Ｉ／Ｏコントローラハブ（ＩＣＨ）３２０と通信する。ＩＣＨ３２０は、以下のような機器と接続されてもよい。すなわち、ＰＣＩハードディスク（図示せず）、レガシー構成要素であるＩＤＥ３２２、ＵＳＢ３２４、ＬＡＮ３２６およびＡｕｄｉｏ３２８およびＬＰＣ（ｌｏｗ  ｐｉｎ  ｃｏｕｎｔ）バス３５６経由でのＳｕｐｅｒ  Ｉ／Ｏ（ＳＩＯ）コントローラ３５６である。
【００３２】
プロセッサ３１０は、ソフトウェア（例えばマイクロプロセッサ、デジタルシグナルプロセッサ、マイクロコントローラ、マルチコアプロセッサ等）を実行することができるいかなるプロセッサでもよい。図３は、プロセッサ３１０だけを示すが、プラットフォームハードウェア３００には、一つ以上のプロセッサがあってもよい。一つ以上のプロセッサとしては、マルチスレッド、マルチコア等が含まれる。
【００３３】
メモリ３１２としては、プロセッサ３１０によって読み込み可能なハードディスク、フロッピー（登録商標）ディスク、ランダムアクセスメモリ（ＲＡＭ）、読取り専用メモリ（ＲＯＭ）、フラッシュメモリまたは他のいかなる種類の媒体も含まれる。メモリ３１２は、本発明の実施例を実行するための命令を保存してもよい。
【００３４】
不揮発性メモリ（例えばフラッシュメモリ３５２）は、ＬＰＣ（ｌｏｗ  ｐｉｎ  ｃｏｕｎｔ）バス３０９を経て、ＩＯ（入出力）コントローラに連結する。ＢＩＯＳファームウェア３５４は通常はＦｌａｓｈメモリ３５２にある。そして、ブートアップはＦｌａｓｈまたはファームウェアからの指示で実行される。
【００３５】
いくつかの実施例では、プラットフォーム３００は、サーバマネージメントタスクを可能にしているサーバである。このプラットフォームの実施例は、ＬＰＣ３０９を経てＩＣＨ３２０に連結したベースボードマネージメントコントローラ（ＢＭＣ）３５０を有してもよい。
【００３６】
プロセッサ３１０は、いくつかのマシンステータスレジスタ（ＭＳＲ）を３１１オンボードに有する。実施例において、上述したように、１つのＭＳＲは、ＩＡ３２＿ＡＰＥＲＦレジスタである。他のＭＳＲとしては、ＩＡ３２＿ＭＰＥＲＦレジスタがある。これらのレジスタ３１１は、プロセッサ３１０のための目標Ｐ−Ｓｔａｔｅの決定において使用されるＯＳ３１３によってアクセスされてもよい。ＯＳへの影響を最小化するために、ＯＳがそれらを読み出す前にレジスタが修正されるために、本発明の実施例はプロセッサ上に実装されてもよい。他の実施例では、ＯＳは、目標Ｐ−Ｓｔａｔｅを決定するためにＡＰＥＲＦ／ＭＰＥＲＦ比率の算出を変えるために変更される。別の実施例において、他のレジスタは、ストール状態時間を算出して、プロセッサ３１０に実装されるプロセッサ回路またはＯＳによって、算出用に提供される。
【００３７】
大部分の既存のシステムがプロセッサＰ−Ｓｔａｔｅを変えるためにＯＳを使用するが、一部の既存のまたは将来アーキテクチャはこれらの動作を実行するためにＯＳ以外のロジックを使用する。たとえば、プロセッサ内部または外部の回路、ファームウェアサービス、組み込みパーティション内で動作するコード、ＯＳ外の仮想アプライアンスまたは他のサービスである。これらの事例は、ビジー時間のパーセントおよび現在のＰ−Ｓｔａｔｅに関するフィードバック情報に基づき新しいＰ−Ｓｔａｔｅ値を調整するために、ストール状態挙動を利用する本発明の実施例にも有効である。いくつかの実施例では、ＡＰＥＲＦおよびＭＰＥＲＦレジスタ値を使用すること以外の方法が、Ｐ−Ｓｔａｔｅ算出において用いられてもよい。これらの場合、ストール状態挙動の測定は、ストールのための計算結果を調整するために上記と同様に行われてもよい。
【００３８】
本願明細書において記載されている技術は、いかなる特定のハードウェアもまたはソフトウェア配列にも限られない。本発明は、いかなる計算機器、一般電子機器または、処理環境においても適用できる。本技術は、ハードウェア、ソフトウェアまたはこれら２つの組合せにおいて実装される。
【００３９】
シミュレーションにおいて、プログラムコードは、ハードウェア記述言語または他の関数的記述言語を使用して、ハードウェアを表現する。これらの言語は、ハードウェアがどのように希望通りに作動するかのモデルを提供する。プログラムコードは、アセンブリまたはマシン語またはデータであって、コンパイルされまたはインタープリタで解釈される。さらにまた、アクションを起こすか結果を生じさせる１つの形式または別の方式を、一般にソフトウェアと呼んでいる。このプログラムコードという語句は、プロセッサに動作を実行させるかまたは結果をもたらす処理を行わせるときに、総称して用いられる。
【００４０】
各々のプログラムは、処理システムによって通信する高水準手順であるかオブジェクト指向プログラミング言語によって実装される。しかしながら、必要に応じて、プログラムは、アセンブリまたは機械言語で実装される。いずれにせよ、言語はコンパイルされるかまたはインタープリタで解釈される。
【００４１】
プログラム命令は、本願明細書において記載されている動作を実行するために、一般用であるか特殊目的用の処理システムで利用されてもよい。あるいは、動作は、動作を実行するためのハードワイヤードロジックを含む特定のハードウェアコンポーネントによって、またはプログラムされたコンピュータ構成要素およびカスタムハードウェアコンポーネントのいかなる組合せによって実行されてもよい。本願明細書において記載されている方法は、以下を含むコンピュータプログラム製品として提供されてもよい。コンピュータプログラム製品には、処理システムまたは他の電子デバイスが方法を実行するようにプログラムするために用いる命令を保存した機械アクセス可能な媒体が含まれてもよい。
【００４２】
例えば、プログラムコードまたは命令は、以下のものに格納されてもよい。すなわち、揮発性および／または不揮発性メモリ、機械可読であるか機械アクセスできる媒体すなわち、固体型メモリ、ハードディスク、フレキシブルディスク、光記憶装置、テープ、フラッシュメモリ、メモリースティック、デジタルビデオディスク、ＤＶＤその他を含む。そして生物学的状態を保存して記憶を保持するものも含まれる。機械可読媒体は、機械によって読み込み可能な形式の情報を保存するか、送信するかまたは、受信するためのいかなる手法も含む。たとえば、電気的、光学的、聴覚的、その他の形式で信号を送る、または、プログラムコードをエンコードしている搬送波が伝送される有形的媒体、たとえば、アンテナ、光ファイバ、通信用インタフェース、その他を含む。プログラムコードは、パケット、シリアルデータ、パラレルデータ、その他の伝播する信号で送信されてもよい。また、圧縮されているか暗号化されたフォーマットで使われてもよい。
【００４３】
プログラムコードは、プログラマブルな機械で実行されるプログラムによりインプリメントされる。プログラムを実行する機械としては、備え付けのコンピュータ、パーソナル携帯情報機器、セットトップボックス、携帯電話およびポケットベル、一般電子機器（ＤＶＤプレーヤ、個人ビデオレコーダ、個人ビデオプレーヤ、衛星受信機、ステレオ受信器、有線テレビ受信器を含む）および他の電子デバイスであって、その各々が、プロセッサ、プロセッサによって読み込み可能な揮発性および／または不揮発性メモリ、少なくとも一つの入力装置および／または一つ以上の出力装置を含むものであってもよい。プログラムコードは、本願明細書に記載されている実施例を実行し、出力情報を生成するために、入力装置を使用している入力データに適用される。出力情報は、一つ以上の出力装置に適用される。開示された発明は、マルチプロセッサまたはマルチコア・プロセッサシステム、ミニコンピュータ、メインフレームコンピュータ、普及しているミニコンピュータまたはプロセッサを含む、多様なコンピュータシステム構成に適用できることを当業者であれば理解するであろう。同様に、開示された内容の実施例は、それのタスクまたはその一部分が通信ネットワークでリンクされるリモート処理デバイスによって実行される分散コンピュータ環境において実現されてもよい。
【００４４】
動作がシーケンシャルプロセスとして記載されているにもかかわらず、いくつかの動作が実際には、平行に、同時に、および／または、分散環境において保存されるプログラムコードについては、ローカルおよび／または遠隔に保存され、シングルまたはマルチプロセッサによってアクセスすることで実行されてもよい。加えて、一部の実施例で、動作の順序は、開示された内容の精神から逸脱することなく、再編成されてもよい。プログラムコードは、組込型コントローラによって利用され、またはこれと連動して使われてもよい。
【００４５】
本発明が実施例に関し例示的に説明されていたとしても、この説明は限定的に解釈されることを目的としない。本発明の他の実施例と同様に、例示された実施例の中で多様な変更態様が発明の範囲内にあると当業者であれば理解するであろう。
【図面の簡単な説明】
【００４６】
本発明の特徴および効果は、本発明の上述の詳細な説明から明らかになる。
【００４７】
【図１】本発明の一実施例におけるプロセッサのＰ−Ｓｔａｔｅを最適化する方法を例示したフローチャートを示す図である。
【図２Ａ】本発明の実施例を使用した初期の実験による経験的データを示した表である。
【図２Ｂ】本発明の実施例を使用した初期の実験による経験的データを示した表である。
【図３】本発明の実施例が実装されたシステムのブロック図である。
【符号の説明】
【００４８】
３００  プラットフォームハードウェア
３０１  フロントサイドバス
３０３  メモリバス
３０５  グラフィックバス
３１０  プロセッサ
３１４  ＭＣＨ（ノースブリッジ）
３１６  ＡＧＰ  ディスクリートＧＦＸ
３２０  ＩＣＨ（サウスブリッジ）
３５２  Ｆｌａｓｈ（ファームウエアハブ）
３５６  スーパーＩ／Ｏ
【図１】
0004954957.tif 000013
【図２Ａ】
0004954957.tif 000014
【図２Ｂ】
0004954957.tif 000015
【図３】
0004954957.tif 000016