(57)【要約】【課題】マルチプロセッサ・コンピュータ・システム内の省電力機能を提供すること。【解決手段】マルチプロセッサ・コンピュータ・システム内の省電力機能は、コンピュータ・プログラムを含む。前記コンピュータ・プログラムは、高電力状態で実行すべき一のタスクを受け取り、一のマルチプロセッサ・システム内の一のプロセッサの現在の電力状態を決定する。前記マルチプロセッサ・システムは、指定された一の電力限度を有する。もし、前記プロセッサの前記現在の電力状態が前記高電力状態であれば、前記タスクを前記プロセッサにディスパッチする。一方、前記プロセッサが前記高電力状態になければ、前記プロセッサを前記高電力状態に移動させると、前記マルチプロセッサ・システムが前記指定された電力限度を超えることになるか否かを決定する。前記プロセッサを前記高電力状態に移動させても、前記マルチプロセッサ・システムが前記指定された電力限度を超えることはないという決定に応答して、前記プロセッサを前記高電力状態に移動させる。前記プロセッサを前記高電力状態に移動させることに応答して、前記タスクを前記プロセッサにディスパッチする。【選択図】  図２
2013527948.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータ・システム内でタスクをディスパッチするための方法であって、
（ａ）高電力状態で実行すべき一のタスクを受け取るステップと、
（ｂ）一のプロセッサの現在の電力状態を決定するステップを含み、
前記プロセッサは、一のマルチプロセッサ・システム内の複数のプロセッサのうちの１つであり、前記マルチプロセッサ・システムは、指定された一の電力限度を有しており、
（ｃ）前記プロセッサの前記現在の電力状態が前記高電力状態であるという決定に応答して、前記タスクを前記プロセッサにディスパッチするステップと、
（ｄ）前記プロセッサの前記現在の電力状態が前記高電力状態ではないという決定に応答して、前記指定された電力限度及び前記マルチプロセッサ・システム内の前記複数のプロセッサの現在の電力状態に基づき、前記プロセッサを前記高電力状態に移動させると、前記マルチプロセッサ・システムが前記指定された電力限度を超えることになるか否かを決定するステップと、
（ｅ）前記プロセッサを前記高電力状態に移動させても、前記マルチプロセッサ・システムが前記指定された電力限度を超えることはないという決定に応答して、前記プロセッサを前記高電力状態に移動させるステップと、
（ｆ）前記プロセッサを前記高電力状態に移動させることに応答して、前記タスクを前記プロセッサにディスパッチするステップをさらに含む、方法。
【請求項２】
前記プロセッサを前記高電力状態に移動させると、前記マルチプロセッサ・システムが前記指定された電力限度を超えることになるという決定に応答して、一の割り込みを他のプロセッサに送信するステップをさらに含む、請求項１に記載の方法。
【請求項３】
前記割り込みを前記他のプロセッサに送信する前に、前記他のプロセッサが前記高電力状態で実行中であることを検証するステップをさらに含む、請求項２に記載の方法。
【請求項４】
前記プロセッサを前記高電力状態に移動させると、前記マルチプロセッサ・システムが前記指定された電力限度を超えることになるという決定に応答して、低電力状態のタスクである一の代替タスクを前記プロセッサにディスパッチするステップをさらに含む、請求項１に記載の方法。
【請求項５】
前記マルチプロセッサ・システム内の前記複数のプロセッサが２つ以上の異なる電力特性を含み、前記複数のプロセッサの全てが前記高電力状態で実行する能力を有するとは限らず、
前記プロセッサを前記高電力状態に移動させると、前記マルチプロセッサ・システムが前記指定された電力限度を超えることになるか否かを決定する前に、前記プロセッサが前記高電力状態をサポート可能であることを検証するステップをさらに含む、請求項１に記載の方法。
【請求項６】
前記指定された電力限度が現在の環境条件に応答して周期的に更新される、請求項１に記載の方法。
【請求項７】
前記複数のプロセッサの各々の前記現在の電力状態が周期的に収集される、請求項１に記載の方法。
【請求項８】
前記タスクの現在のサービス・レベル及び前記タスクに関連するサービス・レベル契約に基づき、前記タスクを前記高電力状態で実行すべきであることを決定するステップをさらに含む、請求項１に記載の方法。
【請求項９】
請求項１ないし請求項８の何れか１項に記載の方法の各ステップを実行するのに適した手段から成るシステム。
【請求項１０】
請求項１ないし請求項８の何れか１項に記載の方法の各ステップをコンピュータに実行させるためのコンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータ環境内の処理に係り、さらに詳細に説明すれば、マルチプロセッサ・コンピュータ・システム内の省電力機能に係る。
【背景技術】
【０００２】
コンピュータ・システム全体の性能は、プロセッサの性能／構造、キャッシュ・メモリ、入力／出力（Ｉ／Ｏ）サブシステム、メモリ管理機能の効率、主メモリ装置、並びに相互接続インタフェースのタイプ及び構造を含む、コンピュータ構造の重要な要素の各々によって影響を受ける。
【０００３】
産業界では、システム／サブシステムの設計及び／又は構造を改良することを通してコンピュータ・システム全体の性能及び密度を最大化するための改良された及び／又は革新的な解決策を作成することを目的として、広範囲な研究開発努力に対する投資が継続的に行われている。高可用性システムは、システム全体の信頼性に関係するさらなる挑戦を提示する。というのは、顧客が期待するのは、新しいコンピュータ・システムが平均故障間隔（ＭＴＢＦ）の点で既存のシステムよりも著しく優れているというだけではなく、追加の機能、増大した性能、増大したストレージ、より低い運転コスト等を提供するというものであるからである。コンピュータ・システム設計の挑戦をさらに困難にする顧客の他の要件には、アップグレードの容易さ、システム環境（例えば、スペース、電力、冷却等）への影響を低減すること等がある。
【０００４】
プロセッサの性能が継続的に増大するにつれて、プロセッサが消費する電力量も継続的に増大する傾向がある。所与のプロセッサが消費し得る電力量は、当該プロセッサの動作環境のような種々の要因によってしばしば制限される。従って、プロセッサの性能上の改良は、これらの改良を実装するために当該プロセッサが必要とする追加の電力によって制限されることがある。
【０００５】
米国特許第７４６１２７５号明細書は、諸プロセッサ・コアを動的に交換するための技術に向けられている。第１のコアは、第１の命令セットを有する。第１のコアは、第１の性能レベルでプログラムを実行する。第１のコアは、トリガ・イベントが生じるときに、プログラムの実行を停止する。第２のコアは、第１の命令セットと互換性のある第２の命令セットを有し、第１の性能レベルとは異なる第２の性能レベルを有する。第１のコアがプログラムを実行しているとき、第２のコアはパワーダウン状態にある。第１のコアがプログラムの実行を停止した後、第２のコアが第２の性能レベルでプログラムの実行を継続するように、回路が第２のコアをパワーアップする。
【０００６】
米国特許第７０９３１４７号明細書は、少なくともそれぞれの動作電力要件及び処理能力が互いに異なる多数のプロセッサ・コアを含むコンピュータ・システムにおいて、その動作電力を節約するための技術に向けられている。一のモニタは、プロセッサ・コアの各々から、そのときに実行しているアプリケーション・ソフトウェアの特定のランに特有の性能メトリック情報を収集する。ワークロード転送機構は、低減された動作電力を検索するために、実行中のアプリケーション・ソフトウェアを第２のプロセッサ・コアに転送する。もし、システムの動作電力が或る遅延によって節約されるならば、実行中のアプリケーション・ソフトウェアのその後の転送を遅らせるために転送遅延構造が接続される。
【０００７】
米国特許第７５２６６６１号明細書は、実行すべき一のスレッドを選択し且つ当該スレッドに基づいて一のプロセッサ・コアの目標性能状態を識別するための、スレッドを管理するシステム及び方法に向けられている。目標性能状態の識別は、選択されたスレッドの優先順位をマッピング・ポリシに適用して、目標性能状態を得ることを含み得る。一実施形態では、選択されたコアの目標性能状態への遷移を開始することができ、そして選択されたスレッドを前記プロセッサ・コアによる実行のためにスケジュールすることができる。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】米国特許第７４６１２７５号明細書
【特許文献２】米国特許第７０９３１４７号明細書
【特許文献３】米国特許第７５２６６６１号明細書
【発明の概要】
【発明が解決しようとする課題】
【０００９】
しかしながら、従来技術のシステムには、多数のプロセッサにわたってバイナリ互換のアプリケーション・コードを実行する間に、１ワット当たりの最良のスループットを提供するように最適化されていないという課題がある。１つの理由は、ディスパッチャが、システム内のコア相互間の性能差を利用せず、これらのコアの利用を最適化しないという点にある。
【課題を解決するための手段】
【００１０】
前記の課題を解決するために、本発明の第１の側面では、コンピュータ・システム内でタスクをディスパッチするための方法が提供される。前記方法は、（ａ）高電力状態（high power state）で実行すべき一のタスクを受け取るステップと、（ｂ）一のプロセッサの現在の電力状態（current power state）を決定するステップを含み、前記プロセッサは、一のマルチプロセッサ・システム内の複数のプロセッサのうちの１つであり、前記マルチプロセッサ・システムは、指定された一の電力限度（power limit）を有しており、（ｃ）前記プロセッサの前記現在の電力状態が前記高電力状態であるという決定に応答して、前記タスクを前記プロセッサにディスパッチするステップと、（ｄ）前記プロセッサの前記現在の電力状態が前記高電力状態ではないという決定に応答して、前記指定された電力限度及び前記マルチプロセッサ・システム内の前記複数のプロセッサの現在の電力状態に基づき、前記プロセッサを前記高電力状態に移動させると、前記マルチプロセッサ・システムが前記指定された電力限度を超えることになるか否かを決定するステップと、（ｅ）前記プロセッサを前記高電力状態に移動させても、前記マルチプロセッサ・システムが前記指定された電力限度を超えることはないという決定に応答して、前記プロセッサを前記高電力状態に移動させるステップと、（ｆ）前記プロセッサを前記高電力状態に移動させることに応答して、前記タスクを前記プロセッサにディスパッチするステップをさらに含む。
【００１１】
本発明の第２の側面では、コンピュータ・システム内でタスクをディスパッチするためのシステムが提供される。前記コンピュータ・システムは、一のコンピュータ・メモリと、前記コンピュータ・メモリと通信する一のプロセッサを備える。前記プロセッサは、メモリから諸命令を取り出すための一の命令取り出し要素及び取り出された諸命令を実行するための１つ以上の実行要素を有する。前記コンピュータ・システムは、前記第１の側面に係る方法を実施するように構成される。
【００１２】
本発明の第３の側面では、前記第１の側面に係る方法の各ステップをコンピュータに実行させるためのコンピュータ・プログラムが提供される。
【００１３】
本発明の第４の側面では、コンピュータ・システム内でタスクをディスパッチするためのコンピュータ・プログラムが提供される。前記コンピュータ・プログラムは、一の処理回路によって読み取り可能であり且つ一の方法を実施するために前記処理回路によって実行するための諸命令を格納するストレージ媒体を含む。前記方法は、（ａ）低電力状態（low power state）で実行すべき一のタスクを受け取るステップと、（ｂ）一のプロセッサの現在の電力状態を決定するステップを含み、前記プロセッサは、一のマルチプロセッサ・システム内の複数のプロセッサのうちの１つであり、前記マルチプロセッサ・システムは、指定された一の電力限度を有しており、（ｃ）前記プロセッサの前記現在の電力状態が前記低電力状態であるという決定に応答して、前記タスクを前記プロセッサにディスパッチするステップと、（ｄ）前記プロセッサの前記現在の電力状態が前記低電力状態ではないという決定に応答して、前記プロセッサを前記低電力状態に移動させるステップと、（ｅ）前記プロセッサを前記低電力状態に移動させることに応答して、前記タスクを前記プロセッサにディスパッチするステップをさらに含む。
【００１４】
追加の特徴及び利点は、本発明の技術を通して実現される。本発明の他の実施形態及び側面は、本明細書において詳述され、請求項に記載の発明の一部と見なされる。利点及び特徴を有する本発明をより良く理解するためには、以下の説明及び図面を参照されたい。
【発明の効果】
【００１５】
本発明は、一のマルチプロセッサ・システム内の複数のプロセッサにわたって電力消費を管理することができるという効果を奏する。その結果、本発明は、依然として電力消費のしきい値内に留まりつつ、当該マルチプロセッサ・システム内の電力消費を低減させるか又は当該マルチプロセッサ・システムによって実行可能な処理の量を増加させることができるという効果を奏する。
【図面の簡単な説明】
【００１６】
【図１】実施形態によって実装することができる、データ処理システムのブロック図である。
【図２】実施形態によって実装することができる、ディスパッチ・アルゴリズムのプロセス・フローである。
【図３】実施形態によって実装することができる、マルチプロセッサ・システムのブロック図である。
【図４】実施形態によって実装することができる、ディスパッチ・アルゴリズムのプロセス・フローである。
【図５】実施形態によって実装することができる、ディスパッチ・アルゴリズムのプロセス・フローの追加の詳細である。
【図６】環境の変化に応答して、マルチプロセッサ・システムにわたって複数の最大電力フラグを調整するためのプロセスのプロセス・フローである。
【図７】実施形態によって実装することができる、コンピュータ・プログラムを示す図である。
【発明を実施するための形態】
【００１７】
本発明の実施形態は、複数のプロセッサを有する一のコンピュータ・システム（すなわち、一のマルチプロセッサ・システム）内で諸タスクをディスパッチする場合に、電力／性能を最適化するための能力を提供する。前記複数のプロセッサは、（例えば、異なる電力レベルをサポートする）異なる性能点を有することがある。当該マルチプロセッサ・システム内で諸タスクをディスパッチする場合、ディスパッチ・アルゴリズムは、前記プロセッサ間の性能差を利用する。
【００１８】
実施形態では、最適化は、当該マルチプロセッサ・システム内の各プロセッサの現在の電力／性能状態（リアル・タイム集合）及び当該マルチプロセッサ・システム内の一の電力限度に基づく。各プロセッサは、当該プロセッサが現に高電力状態にあるかか否かを示す最大電力フラグを有する。この最大電力フラグは、当該プロセッサを高電力状態に移動可能であるか否かを示すこともできる。さらに、各マルチプロセッサ・システムは、当該マルチプロセッサ・システム内の幾つのプロセッサが同時に最大電力状態にあり得るか（電力限度）を示す、一の数を格納するための一のレジスタを含む。また、当該マルチプロセッサ・システムは、諸プロセッサの現在の電力レベルをセット／追跡するための中央電力制御モジュールを含む。
【００１９】
本発明の実施形態は、一のマルチプロセッサ・システムにわたって電力消費を最適化することにより、当該マルチプロセッサ・システムの電力／性能を最適化するように作用する。本明細書では、「電力／性能」という用語は、一のマルチプロセッサ・システム又は単一プロセッサのような、一のコンピュータ・システム内の電力消費の効率の測定量を指す。
【００２０】
既存のソフトウェア及びハードウェアを使用する場合、１ワット当たりのピーク性能について大規模なマルチプロセッサ・システムを最適化することは、困難であることが多い。諸システムは、種々の電力／性能動作点（本明細書では「電力状態」とも称する）を有する複数の処理要素を含むことがあり、これらの処理要素は、単一のパッケージ内にパッケージ化されるか、又は複数のパッケージ間のキャッシュ・コヒーレント・リンクを介して接続される。現在のディスパッチ・アルゴリズムは、ピーク性能を達成するというゴールに基づいて、諸プロセスを諸処理要素にディスパッチするために使用される。現在の幾つかのシステムは、当該システムが収容される部屋の環境によって許容された、最大の可能な電力消費に関する厳しい制限の対象となっている。
【００２１】
現在のマルチプロセッサ・コンピュータ・システムは、所与の量の電力について必ずしも最良のスループットを提供するとは限らない。幾つかの既存のコンピュータ・システムは、単一のマイクロプロセッサ・コア設計を使用し、諸アプリケーションを実行している種々の期間中に、動的な電圧スケーリングを使用して、１ワット当たりの性能を変更する。他の既存のシステムは、特定のアプリケーションについて性能優位性を提供するために、異なる命令セット・アーキテクチャを有する複数のコアを含む。これらのシステムは、多くのマイクロプロセッサ・コア（本明細書では、「プロセッサ」とも称する）にわたってバイナリ互換のアプリケーション・コードを実行する間に、１ワット当たりの最良のスループットを提供するように最適化されていない。１つの理由は、ディスパッチャが、システム内のコア相互間の性能差を利用せず、それらの使用率を最適化しないという点にある。
【００２２】
本発明の実施形態は、種々のワークロードを実行する間に、システム全体の電力／性能を最適化するように作用する。実施形態では、１ワット当たりのシステム全体のスループットを最適化する一のコンピュータ・システムを提供するために、複数のマルチプロセッサ・システムがともに使用される。実施形態は、２つ以上のチップ（本明細書では、「集積回路」又は「マイクロプロセッサ・チップ」とも称する）にまたがる、複数のプロセッサから構成された一のマルチプロセッサ・システムを含む。これらのチップは、異なるタイプのものであり、同じバイナリ・ソフトウェアを実行可能であるが、１ワット当たりの性能特性において互いに異なる。非常に広範なコンピュータ・システムについて、Intel（登録商標）社のIA-32（IntelArchitecture、３２ビット）及びIBM（登録商標）社のPower Architecture（登録商標）のようなアーキテクチャが使用される。これらのアーキテクチャの各々については、既に多くのバイナリ互換のプロセッサ・コア設計が利用可能である。これらのコア設計の各々は、異なる電力／性能特性を有する。実施形態は、単一のマルチプロセッサ・サーバ上で複数のプロセスを実行するとき、より良い全体的な電力／性能を可能にするであろう。異なる性能及び電力最適化を有する複数のチップを使用することによって、１ワット当たりのシステム・スループットを増大させることができる。既存のマイクロプロセッサは、最大で４.５〜５×の電力／性能を犠牲にして、最大で２×の範囲の性能を示す。この範囲は、追加のシリコン・チューニング、装置チューニング及び回路の選択でさらに拡大することができる。複数のマルチプロセッサ・チップ及び当該チップの複数の電力／性能点を使用する機会を与えられると、実施形態は、システムの電力／性能能力を最大化するように、諸コアへの諸スレッドのディスパッチを最適化する。
【００２３】
実施形態では、複数のチップは、潜在的には一のノード・コントローラを通る、諸相互接続バスを介して接続される。これらのチップのサブセットは、高電力を犠牲にして高速化のために最適化されたシリコン・プロセスで実装され、一方、これらのチップの大部分は、電力のために最適化されたシリコン・プロセスで実装される。これらのチップ・タイプは、両方とも同一のバイナリを実行可能である。実施形態は、これらの異種のプロセッサを対称マルチプロセッシング（ＳＭＰ）システムとして組み合わせるとともに、電力／性能を最適化するように調整されたディスパッチ・アルゴリズムを使用する。もし、高性能で且つ高電力のプロセッサを使用することなく、これらのプロセスのサービス・レベル契約（ＳＬＡ）上の要件（又は他のシステム要件）を満たすことができれば、実施形態によって提供される電力遮断（power gating）制御は、当該プロセッサの有効電力及び漏洩電力の両方を最小化するために使用される。
【００２４】
必要とされる場合、高性能で且つ高電力の一のコアが電力遮断制御を通してパワーオンされ、そして高優先順位の諸プロセスが（高電力状態にある）このプロセッサにディスパッチされる。実施形態では、このことは、ＳＬＡ及び／又は当該マルチプロセッサ・システムの現在の状態のテーブルを使用する、新規なハイパーバイザ又はオペレーティング・システムによって行われる。このテーブルは、どのコアが高性能対電力最適化であり且つどのコアが現にパワーオンされているかというマッピングを含む。最適な電力／性能のケースでは、全ての高電力のコアがパワーオフされ、そしてこれらのコアは、ＳＬＡ（又は他のシステム要件）を満たすために必要とされる場合にのみパワーオンされる。
【００２５】
１例を挙げると、電力が最適化された一のコア上では、一のスレッドは、タイマ割り込みによって示されるその現在のタイムスライスを終了し、そしてディスパッチャが呼び出される。ディスパッチャ・コードは、サービス品質又は現在のサービス・レベルを定期的に検査することを含む。この例では、潜在的なサービス品質の問題が発生したことが決定される。この情報は、ディスパッチすべき次のスレッドがどのスレッドであるかを決定するために使用される。高性能のコアを使用すべきであると決定されることがある。ディスパッチャは、現に実行中の諸スレッド及び潜在的なサービス品質の問題を発生したこの新しいスレッドの組み合わせについて、十分な高性能ハードウェア・コアが利用可能である（そしてパワーオンされている）か否かを決定する。幾つかのケースでは、ディスパッチャは、システムの制御コードに対し、利用可能なハードウェアを増大させて当該システム内の全てのスレッドのＳＬＡを満たすために、高性能コアをパワーオンすべきであることを通知する。利用可能であれば、ディスパッチャは、待機中の他のスレッドを選択することがある。このスレッドは、現在それぞれのサービス品質レベルを満たしている複数のスレッドのうち最高優先順位のスレッドになるであろう。代替実施形態では、十分な発熱オーバーヘッドを解放してシステムが追加の高電力コアをパワーオンすることを可能にするため、現に実行中の低優先順位の諸スレッドを多数のコア上で中断することができる。
【００２６】
実施形態は、ハイパーバイザ又はオペレーティング・システムによって制御される、１セットのソフトウェア・テーブルを使用する。これらのテーブルは、どのスレッドが高電力／高性能コア上にディスパッチされるのを待機しているかという情報を含む。他の情報は、システム内の全てのコアの現在の状態（特に、どのコアが高性能であり且つどの位置にあるかという情報や、どのコアが現にパワーオンされているかという情報）を含むことがある。結果的なシステムは、可変数のスレッドをディスパッチャに利用可能にするであろう。これらのスレッドの数は、ＳＬＡ要件を満たすために、ハイパーバイザ及び／又はオペレーティング・システムによって動的に変更されるであろう。
【００２７】
図１は、本発明の実施形態によって実装することができる、データ処理システム１００のブロック図である。システム１００は、対称マルチプロセッシング（ＳＭＰ）サーバ・コンピュータ・システムである。図１のＳＭＰサーバ・コンピュータ・システム１００は、一のユーザ・アプリケーションを実行するために当該アプリケーションにマップ（すなわち、当該アプリケーションが一時的に所有）することができる、諸物理ハードウェア装置を含む。
【００２８】
ＳＭＰサーバコンピュータ・システム１００は、物理ＳＭＰサーバ１０２を含み、物理ＳＭＰサーバ１０２は、プロセッサ１０４、メモリ１０６及びＩ／Ｏアダプタ１０８のような物理ハードウェア装置を含む。これらの物理装置は、物理ＳＭＰサーバ・コンピュータ・システム１００上に常駐するハイパーバイザ１１０によって管理される。図１に示すように、物理ＳＭＰサーバ１０２は、１つ以上のマイクロプロセッサ・チップ１２６によって実装される。図１では、同様の構成を有するものとして示されているが、物理ＳＭＰサーバ１０２内の諸マイクロプロセッサ・チップ１２６は、異なる構成（例えば、異なる数のプロセッサ１０４）を有することがある。
【００２９】
本明細書では、「マイクロプロセッサ・チップ」という用語は、シリコンの単一ピースを使用して製造される一の装置を指す。マイクロプロセッサ・チップ１２６をチップ又は集積回路と称することもある。１つ以上のハードウェア要素が単一のマイクロプロセッサ・チップ１２６上に製造される。一般に、これらのハードウェア要素は、プロセッサ１０４（又はプロセッサ・コア）、メモリ１０６（例えば、キャッシュ・メモリ）、Ｉ／Ｏアダプタ１０８を含むが、これに加えて、圧縮エンジン、暗号化エンジン、プロトコル処理エンジン、アーキテクチャ・エミュレーション・エンジン、データ・ストリーム処理エンジン等の特殊機能要素を含むことがある。
【００３０】
仮想サーバとは、同じ能力、インタフェース及び状態を有する物理サーバのためのプロキシである。諸仮想サーバは、ハイパーバイザ１００によって作成され且つ管理される。各仮想サーバは、物理ＳＭＰサーバのユーザ（例えば、その上で稼働するオペレーティング・システム、ミドルウェア及びアプリケーション・ソフトウェア）に対し、一の物理ＳＭＰサーバであるように見える。図１のＳＭＰサーバ・コンピュータ・システム１００は、仮想サーバ１１２及び１１２ａのような１つ以上の仮想サーバを含む。各仮想サーバ１１２は、そのソフトウェアに対し、当該仮想サーバ１１２の排他的使用に利用可能なそれ自体のプロセッサ、メモリ及びＩ／Ｏアダプタを含むように見える。例えば、仮想サーバ１１２は、仮想プロセッサ１２０、仮想メモリ１２２及び仮想Ｉ／Ｏアダプタ１２４を含む。仮想サーバ１１２ａは、仮想プロセッサ１２０ａ、仮想メモリ１２２ａ及び仮想Ｉ／Ｏアダプタ１２４ａを含む。
【００３１】
各仮想サーバ１１２は、オペレーティング・システム、ミドルウェア及びアプリケーションを含む、それ自体のソフトウェア環境をサポートする。各仮想サーバ１１２のソフトウェア環境は、他の仮想サーバのソフトウェア環境とは異なることがある。各仮想サーバによって実行されるオペレーティング・システムは、互いに異なっていてもよい。例えば、仮想サーバ１１２は、オペレーティング・システム１１４、ミドルウェア１１６及びアプリケーション１１８をサポートする。仮想サーバ１１２ａは、オペレーティング・システム１１４ａ、ミドルウェア１１６ａ及びアプリケーション１１８ａをサポートする。オペレーティング・システム１１４及び１１４ａは、互いに同じであってもよいし、互いに異なっていてもよい。
【００３２】
仮想サーバ１１２は、サーバ環境を定義する一のサーバの論理記述であって、ユーザに対しあたかも一の物理サーバであるかのように作用し、一の物理サーバと同じ方法でアクセスされ、情報を提供するものである。各仮想サーバのために定義される仮想プロセッサ、仮想メモリ及び仮想Ｉ／Ｏアダプタは、物理プロセッサ、メモリ及びＩ／Ｏアダプタの論理的な代替物である。
【００３３】
ハイパーバイザ１１０は、仮想プロセッサ、仮想メモリ及び仮想Ｉ／Ｏアダプタを有する諸仮想サーバとこれらの仮想装置を実装するために選択される諸物理ハードウェア装置との間のマッピングを管理する。例えば、一の仮想プロセッサがディスパッチされる場合、ハイパーバイザ１１０は、当該仮想プロセッサを実行し且つ実装するために使用すべき一の物理プロセッサ１０４を選択する。ハイパーバイザ１１０は、諸物理装置の選択及び諸仮想装置へのそれらの一時的割り当てを管理する。
【００３４】
ハイパーバイザ１１０は、諸仮想ＳＭＰサーバを動的に作成し、管理し、破棄することに責任を有する。ハイパーバイザ１１０は、諸仮想プロセッサ、諸仮想Ｉ／Ｏアダプタ及び諸仮想メモリ・ブロックを、全体として除去又は追加することができる。さらに、ハイパーバイザ１１０は、資源を動的に割り振り、諸物理資源のタイム・シェアリングを管理し、オペレーティング・システムを介在させることなく、一のプロセッサにマップされた物理資源を変更することにも責任を有する。さらに、ハイパーバイザ１１０は、シェアリングが望まれない状況では、諸物理資源を諸仮想資源に専用化することができる。ハイパーバイザ１１０は、諸物理資源の追加又は除去を管理する責任を有する。ハイパーバイザ１１０は、これらの追加及び除去を上部レベルのアプリケーションに対し透明な態様で実行する。
【００３５】
本明細書では、「プロセッサ・コア」及び「プロセッサ」という用語は、同じ装置を指すために交換可能に使用される。「物理プロセッサ」という用語は、プロセッサ・コアを指し、当該コアに専用化されているか又は複数のコアによって共用される他のハードウェア要素を含むことがある。従って、一の物理プロセッサは、一のプロセッサ・コア及び当該プロセッサ・コアに専用化されているか又は当該プロセッサ・コアによって共用されるハードウェア要素である。
【００３６】
「現在の電力状態」という用語は、一のプロセッサの現在の電力状態を指す。実施形態では、現在の電力状態は、高電力状態又は低電力状態である。「高電力状態」という用語は、高クロック周波数モードに置かれた一のプロセッサ・コアを指す。「高電力コア」という用語は、高電力状態で実行中のプロセッサ・コアを指す。「低電力状態」という用語は、低クロック周波数モードに置かれたプロセッサ・コアを指す。一般に、低電力状態は、省電力状態である。実施形態は、システム内の種々のプロセッサ・コアの電力／性能を調整するための手段として、コア・クロック周波数の変化を使用する。このクロック周波数制御に代えて、又はこれに加えて、コアの電力／性能を調整するための他の手段を使用することもできる。本明細書では、コアの電力／性能の調整は、プロセッサを特定の電力状態に「移動させる」ことを指す。プロセッサを低電力状態から高電力状態に移動させることは、クロック制御論理における動作周波数設定値をより高い周波数設定値に変更することを含む。適切な任意のクロック制御機構を使用することができる。実施形態は、２つの設定値として、高い設定値（例えば、４ＧＨｚ）及び低い設定値（例えば、３ ＧＨｚ）を利用する。代替実施形態は、周波数スケール単位で増加されるステップの数を決定するために、幾つかの可能な周波数設定値及び追加の論理を含む。同様に、プロセッサを高電力状態から低電力状態に移動させることは、クロック制御論理における動作周波数設定値をより低い周波数設定値に変更することを含む。
【００３７】
図２は、実施形態によって実装することができる、ディスパッチ・アルゴリズムのプロセス・フローを示す。このディスパッチ・アルゴリズムは、ハイパーバイザ１１０によって実行される。前述のように、ハイパーバイザ１１０は、データ処理システム内で諸仮想サーバを実装する責任を有し、例えば、多数の異なる仮想プロセッサ間で諸物理プロセッサのタイム・シェアリングを管理することを含む。ハイパーバイザ１１０内のディスパッチ・アルゴリズムは、諸タスクの実行を開始する。
【００３８】
ブロック２０２では、一のプロセッサ上で実行すべき一のタスクを受け取る。このタスクは、高電力状態にある一のプロセッサ上の実行を必要とする、高電力状態のタスクである。本明細書では、「タスク」という用語は、一のスレッド又は１群のスレッドを指す。ブロック２０４では、当該プロセッサが高電力状態にあるか否かを決定する。もし、当該プロセッサが高電力状態にあれば、ブロック２０６に進み、そこで当該プロセッサ上で当該タスクの実行を開始する。一方、当該プロセッサが高電力状態になければ、ブロック２０８に進み、そこで当該プロセッサが位置するチップ（すなわち、マルチプロセッサ・システム）が当該プロセッサを高電力状態に移動させることをサポート可能であるか否かを決定する。もし、当該マルチプロセッサ・システムが当該プロセッサを高電力状態に移動させることをサポート可能であれば、ブロック２１０に進み、そこで当該プロセッサを高電力状態に移動させる。実施形態では、このディスパッチ・プロセスは、当該プロセッサを高電力状態に移動させることができるか否かを検査する。一旦当該プロセッサが高電力状態に移動された場合、ブロック２１２に進み、そこで当該プロセッサ上で当該タスクの実行を開始する。一方、当該マルチプロセッサ・システムが当該プロセッサを高電力状態に移動させることをサポート不能であれば、ブロック２１４に進み、そこで他のチップ（又は他のマルチプロセッサ・システム）上に位置する一のプロセッサ上で当該タスクの実行を開始する。
【００３９】
図３は、マイクロプロセッサ・チップ１２６のような単一のマイクロプロセッサ・チップによって実装することができる、マルチプロセッサ・チップ３０２のブロック図である。図３のマルチプロセッサ・チップ３０２は、複数のプロセッサ３０４、「#Max_Pwr_Flag」３１０及び各プロセッサ３０４と通信するオプションの中央電力制御モジュール３０８を含む。#Max_Pwr_Flag ３１０は、マルチプロセッサ・チップ３０２上に位置する複数のプロセッサ３０４のうち、任意の所与の時間に高電力状態であり得るプロセッサ３０４の最大数を示す。#Max_Pwr_Flag ３１０は、ディスパッチ・プロセスによって迅速に検索するために、当分野で公知の任意の手段（例えば、レジスタ又はメモリ）に格納することができる。図３の各プロセッサ３０４は、当該プロセッサ３０４が高電力状態にあるか否かを示すSpr_Max_Pwr_Flag ３０６を含む。また、Spr_Max_Pwr_Flag ３０６は、当該プロセッサ３０４を高電力状態に移動させることができるか否かを示すこともある。代替実施形態では、各プロセッサ３０４を高電力状態に移動させることができるという標識は、ディスパッチ・プロセスによってアクセス可能な、中央電力制御モジュール３０８内に格納されるか又は当該プロセッサ３０４の外部にある他の位置に格納される。大規模なマルチプロセッサ・システムでは、複数のチップ３０２が一緒に使用され、ハイパーバイザ１１０が、当該マルチプロセッサ・システムにわたってMAX_PWR FLAGS ３１０を調整することができる。
【００４０】
図３の実施形態では、新しい特殊目的レジスタ、すなわちSpr_Max_Pwr_Flag ３０６は、諸プロセッサ３０４の最高の電力設定値を許可すべき時機を示すために利用される。（#Max_Pwr_Flag ３１０によって示されるような）プロセッサ３０４の最大数は、それらのSpr_Max_Pwr_Flag ３０６をセットすることを許可される。実施形態では、新しいディスパッチ・コードは、マルチプロセッサ・システム３０２の推定電力及び温度をモニタするとともに、マルチプロセッサの動作条件からのフィードバックを維持する特殊目的レジスタをモニタする。これらの追加の特殊目的レジスタは、電力消費を最適化しつつ、ＳＬＡを満たすという全体的なゴールについてディスパッチ・アルゴリズムを最適化するために、ハイパーバイザ１１０によって読み取ることができる。
【００４１】
図３では、マルチプロセッサ・システムが単一の集積回路上に設けられているように示されているが、一のマルチプロセッサ・システムは複数の集積回路にまたがって設けられてもよい。
【００４２】
図４は、実施形態によって実装することができる、ディスパッチ・アルゴリズムのプロセス・フローである。このディスパッチ・アルゴリズムは、ハイパーバイザ１１０によって実行される。前述のように、ハイパーバイザ１１０は、一のデータ処理システム内で諸仮想サーバを実装する責任を有し、例えば、多数の異なる仮想プロセッサ間で諸物理プロセッサのタイム・シェアリングを管理することを含む。ハイパーバイザ１１０内のディスパッチ・アルゴリズムは、諸タスクの実行を開始する。
【００４３】
ブロック４０２では、高電力状態にある一のプロセッサ上の実行を必要とする一のタスクを受け取る。当該タスクは、作動可能キュー内にある諸プロセスの状態を追跡する、（例えば、ハイパーバイザ及び／又はオペレーティング・システム内の）ソフトウェアによって識別される。この作動可能キューは、諸タスクの一のリストと、諸優先順位と、各タスクが対応するＳＬＡに関しどのように実行しているかという状態を含む。高い優先順位を有するか又はＳＬＡを満たさない恐れがある諸タスクは、高電力状態の実行を必要とするタスクとして、ディスパッチ・プロセスに送信される。
【００４４】
ブロック４０４では、（Spr_Max-Pwr_Flag ３０６によって示されるように）当該プロセッサが高電力状態で実行可能であるか否かを決定する。もし、当該プロセッサが高電力状態で実行可能であれば、ブロック４０６に進み、そこで通常のディスパッチ・アルゴリズムを実行する。この実施形態では、当該プロセッサが高電力状態で実行可能であれば、当該プロセッサは、現に高電力状態で実行中であると仮定する。代替実施形態では、当該タスクを実行する前に、当該プロセッサを高電力状態に移動させなければならない。その後、ブロック４０８に進み、そこで当該タスクを実行するために一のタイムスライスを実行する。
【００４５】
一方、ブロック４０４で、当該プロセッサが高電力状態で実行不能であることを決定すれば、ブロック４１０に進む。ブロック４１０〜４１４では、マルチプロセッサ・システム３０２が当該プロセッサを高電力状態に移動させることをサポート可能であるか否かを決定する。ブロック４１０では、現在の#Max_Pwr_Flags ３１０を読み取ることにより、高電力状態で実行可能なプロセッサの最大数（すなわち、指定された電力限度）を決定する。ブロック４１２では、マルチプロセッサ・システム３０２内の各プロセッサ３０４上にある現在のSpr_Max_Pwr_Flags ３０６を読み取る。他の実施形態では、Spr_Max_Pwr_Flags３０６を周期的に読み取り且つこれを格納する。他の実施形態では、現在の電力状態を決定するために各プロセッサにアクセスしなければならないことを回避するために、ハイパーバイザ１１０は、Spr_Max_Pwr_Flags ３０６を（それらの変更時に）ディスパッチャによってアクセス可能な共通のストレージ領域内に格納する。ブロック４１４では、（Spr_Max_Pwr_Flags ３０６によって示されるような）現に高電力状態に移動可能なプロセッサの数を、#Max_Pwr_Flags ３１０内で指定された数と比較する。
【００４６】
もし、現に高電力状態に移動可能なプロセッサの数が、#Max_Pwr_Flags３１０内の数よりも小さければ、ブロック４２０に進み、そこで当該プロセッサ３０４上のSpr_Max_Pwr_Flag３０６を１にセットする。実施形態では、その結果として、当該プロセッサ３０４が高電力状態に移動されることになる。代替実施形態では、その結果として、当該プロセッサ３０４が高電力状態で実行可能であるか否かを決定するための検査が行われることになる。ブロック４２２では、当該タスクをディスパッチし、その後、ブロック４０８に進む。
【００４７】
一方、現に高電力状態に移動可能なプロセッサの数が、#Max_Pwr_Flags３１０内の数に等しければ、ブロック４１６に進み、そこで他のチップ又はマルチプロセッサ・システム上に位置する一のプロセッサに対し、割り込みを送信する。実施形態では、ディスパッチャは、割り込みを送信する前に、当該他のチップが当該プロセッサを高電力状態に移動させることをサポート可能であることを検証する。次のブロック４１８では、他のタスク（例えば、高電力状態を必要としないもの）を当該プロセッサにディスパッチし、その後、ブロック４０８に進む。
【００４８】
#Max_Pwr_Flags ３１０内に格納されるような、一度に高電力状態で実行可能なプロセッサの最大数は、実施形態によって実装することができる指定された電力限度の１つの例である。
【００４９】
実施形態では、前記指定された電力限度は、現在の環境条件（例えば、プロセッサ、チップ及び／又はシステムが位置する部屋の温度、他のシステム・コンポーネントの電力消費）に応答して、周期的に更新される。他の実施形態では、前記指定された電力限度は、他のマルチプロセッサ・システムの諸特性（（例えば、現在の電力、温度、指定された電力限度）に基づいて更新される。
【００５０】
図５は、実施形態によって実装することができる、ディスパッチ・アルゴリズムのプロセス・フローの追加の詳細である。ブロック５０２では、高電力のプロセッサを使用することを必要としない一のタスクを受け取る。ブロック５０４では、（SPR_MAX_PWR_FLAG ３０６によって示されるように）当該プロセッサが高電力状態で実行可能であるか否かを決定する。もし、当該プロセッサが高電力状態で実行不能であれば、ブロック５０６に進み、そこで通常のディスパッチ・アルゴリズムを実行し、その後のブロック５１２では、そのタイムスライスを実行する。
【００５１】
一方、ブロック５０４で、（SPR_MAX_PWR_FLAG ３０６によって示されるように）当該プロセッサが高電力状態で実行可能であることを決定すれば、ブロック５０８に進み、そこで高電力状態が必要ではないので、SPR_MAX_PWR_FLAG ３０６を０（低電力状態）にセットする。次のブロック５１０では、当該タスクをディスパッチし、その後のブロック５１２では、そのタイムスライスを実行する。
【００５２】
図６は、環境の変化に応答して、当該システムの全ての要素にわたって#MAX_PWR_FLAGS ３１０を調整するために、当該システムによって利用されるプロセス・フローの追加の詳細を示す。図６のプロセス・フローは、専用化ハードウェア、ハイパーバイザ１１０内にあるコードの周期的な実行、又は他の適切なシステム・レベルのソフトウェアによって実行可能である。
【００５３】
ブロック６０２では、当該システムの環境条件が変化し、その結果、当該システム内の特定のチップ上にある#MAX_PWR_FLAGS ３１０への更新が必要となることを決定する。ブロック６０４では、当該システム内の全ての#MAX_PWR_FLAGS３１０を読み取る。次のブロック６０６では、これらのフラグを分析し、新しい最適の設定値を決定する。他の実施形態では、この要約情報を、レジスタ又はメモリ内に格納し、ハードウェア及びソフトウェアの任意の適切な組み合わせによって周期的に更新することができる。これらの新しい最適の設定値は、#MAX_PWR_FLAGS ３１０を減少させ且つ１つのプロセッサ上のSPR_MAX_PWR_FLAG ３０６を０にセットすることを含む。これは、図６のブロック６０８〜６１０で行われる。ブロック６０８では、選択されたチップの#MAX_PWR_FLAGS３１０を１だけ減少させる。ブロック６１０では、同じチップ上の複数のプロセッサのうちSPR_MAX_PWR_FLAG=１を有する１つのプロセッサ上のSPR_MAX_PWR_FLAGを０にリセットする。
【００５４】
他の実施形態では、３つ以上の電力状態がサポートされる。例えば、３つの異なる電力状態（例えば、高電力状態、中間電力状態、低電力状態）をサポートすることができる。
【００５５】
技術的な効果及び利点は、一のマルチプロセッサ・システム内の複数のプロセッサにわたって電力消費を管理することができるという点にある。その結果、依然として電力消費のしきい値内に留まりつつ、当該マルチプロセッサ・システム内の電力消費を低減させるか又は当該マルチプロセッサ・システムによって実行可能な処理の量を増加させることができる。
【００５６】
請求項に記載された全ての手段又はステップ＋機能要素に対応する構造、材料、行為及びそれらの均等物は、請求項に明示的に記載された他の要素と組み合わせてその機能を実施するための任意の構造、材料又は行為を含むことが意図される。本発明に関する記述は、例示及び説明を目的として与えられたものであり、網羅的であること及び開示された形態に本発明を限定することを意図するものではない。当業者にとって、本発明の範囲及び精神から逸脱することなく、多くの修正及び変形を施し得ることが明らかであろう。実施形態は、本発明の原理及び実際の応用を最もよく説明し、考えられる特定の用途に適するような種々の修正を伴う種々の実施形態に関して当業者が本発明を理解することを可能にするために、選択され説明されたものである。
【００５７】
当業者には明らかなように、本発明の諸側面は、システム、方法又はコンピュータ・プログラムとして具体化することができる。従って、本発明の諸側面は、完全にハードウェアの実施形態、（ファームウェア、常駐ソフトウェア、マイクロコード等を含む）完全にソフトウェアの実施形態、又はソフトウェア及びハードウェア側面を組み合わせた実施形態の形式を取ることができ、これらの全てを一般に「回路」、「モジュール」又は「システム」と称することができる。さらに、本発明の諸側面は、コンピュータ可読プログラム・コードを１つ以上のコンピュータ可読媒体上に具体化したコンピュータ・プログラムの形式を取ることができる。
【００５８】
１つ以上のコンピュータ可読媒体の任意の組み合わせを利用することができる。コンピュータ可読媒体は、コンピュータ可読信号媒体又はコンピュータ可読ストレージ媒体とすることができる。例えば、コンピュータ可読ストレージ媒体は、電子、磁気、光学、電磁気、赤外線、半導体システム、装置又はこれらの任意の適切な組み合わせとすることができる。コンピュータ可読ストレージ媒体の特定の例は、１つ以上の線を有する電気接続、ポータブル・コンピュータ用のフレキシブル・ディスク、ハード・ディスク、ランダム・アクセス・メモリ（ＲＡＭ）、読み取り専用メモリ（ＲＯＭ）、消去可能プログラマブル読み取り専用メモリ（ＥＰＲＯＭ又はフラッシュ・メモリ）、光ファイバ、ポータブルのコンパクト・ディスクを使った読み出し専用メモリ（ＣＤ−ＲＯＭ）、光ストレージ装置、磁気ストレージ装置又はこれらの任意の適切な組み合わせとすることができる。本明細書の文脈では、コンピュータ可読ストレージ媒体は、命令実行システム等に関連して又はこれらによって使用するためのプログラムを保持するか又は格納することができる、任意の媒体とすることができる。
【００５９】
コンピュータ可読信号媒体は、伝搬されるデータ信号の形式を有することもできるが、その場合には、ベースバンド内に又は搬送波の一部として、コンピュータ使用可能プログラム・コードを具体化することができる。そのような伝搬信号は、電磁気、光学又はその任意の適切な組み合わせ等を含む、種々の形式のうち任意の形式を取ることができる。コンピュータ可読信号媒体は、コンピュータ可読ストレージ媒体ではない任意のコンピュータ可読媒体であって、命令実行システム等に関連して又はこれらによって使用するためのプログラムを通信し、伝搬し又は移送することができる。
【００６０】
コンピュータ可読媒体上に具体化されたプログラム・コードは、無線、有線、光ファイバ・ケーブル、ＲＦ又はこれらの任意の適切な組み合わせを含む、適切な任意の媒体を使用して伝送することができる。
【００６１】
本発明の諸側面に係る動作を実施するためのコンピュータ・プログラム・コードは、Ｊａｖａ、Ｓｍａｌｌｔａｌｋ、Ｃ＋＋等のようなオブジェクト指向プログラミング言語及び「Ｃ」プログラミング言語又は同様のプログラミング言語のような通常の手続き的プログラミング言語を含む、１つ以上のプログラミング言語の任意の組み合わせで書くことができる。かかるプログラム・コードは、完全にユーザのコンピュータ上で、部分的にはユーザのコンピュータ上で、独立のソフトウェア・パッケージとしてユーザ・コンピュータ上で完全に実行可能であり、その一部をユーザ・コンピュータ上で且つ他の一部を遠隔コンピュータ上で実行可能であり、或いは遠隔コンピュータ又はサーバ上で完全に実行可能である。後者のシナリオでは、遠隔コンピュータは、ローカル・エリア・ネットワーク（ＬＡＮ）又は広域ネットワーク（ＷＡＮ）を含む任意のタイプのネットワークを通してユーザ・コンピュータに接続することができ、或いはその接続を（例えば、インターネット・サービス・プロバイダを利用するインターネットを通して）外部コンピュータに行うことができる。
【００６２】
以上では、本発明の実施形態に従った方法、装置（システム）及びコンピュータ・プログラムのフローチャート及び／又はブロック図を参照して、本発明の諸側面を説明した。この点に関し、フローチャート及び／又はブロック図の各ブロック、並びにフローチャート及び／又はブロック図の諸ブロックの組み合わせは、諸コンピュータ・プログラム命令によって実装することができることを理解されたい。これらのコンピュータ・プログラム命令を、汎用コンピュータ、専用コンピュータ又は他のプログラム可能なデータ処理装置のプロセッサに提供すると、前記コンピュータ又は他のプログラム可能なデータ処理装置のプロセッサ上で実行される諸命令が、前記フローチャート又はブロック図の諸ブロックで指定された機能／行為を実装するための手段を作成することを目的として、一のマシンを生産することができる。
【００６３】
また、これらのコンピュータ・プログラム命令をコンピュータ可読媒体内に格納すると、前記コンピュータ可読媒体内に格納された諸命令が、前記フローチャート及び／又はブロック図の諸ブロックで指定された機能／行為を実装する命令手段を含む一の製品を生産することを目的として、コンピュータ又は他のプログラム可能なデータ処理装置に対し特定の態様で機能するように指示することができる。
【００６４】
また、これらのコンピュータ・プログラム命令を、コンピュータ、他のプログラム可能なデータ処理装置又は他の装置にロードすると、前記コンピュータ、他のプログラム可能なデータ処理装置又は他の装置上で実行される諸命令が、前記フローチャート及び／又はブロック図の諸ブロックで指定された機能／行為を実装するためのプロセスを提供することを目的として、一のコンピュータ実装方法を生成するように前記コンピュータ、他のプログラム可能なデータ処理装置又は他の装置上で一連の動作ステップを実行させることができる。
【００６５】
前述のように、諸実施形態は、コンピュータ実装プロセス及びそれらのプロセスを実施するための装置の形式で具体化することができる。実施形態では、本発明は、１つ以上のネットワーク要素によって実行されるコンピュータ・プログラム・コード内で具体化される。諸実施形態は、図７に示すように、製品として有形的媒体内に記録された諸命令を保持する、コンピュータ・プログラム信号論理７０４を備えたコンピュータ使用可能媒体７０２上のコンピュータ・プログラム７００を含む。コンピュータ使用可能媒体７０２のための推奨製品は、フレキシブル・ディスク、ＣＤ−ＲＯＭ、ハード・ドライブ、ユニバーサル・シリアル・バス（ＵＳＢ）フラッシュ・ドライブ、又は他の任意のコンピュータ可読ストレージ媒体を含むことができる。コンピュータ・プログラム信号論理７０４が一のコンピュータにロードされ且つ当該コンピュータによって実行される場合、当該コンピュータは、本発明を実施するための装置になる。コンピュータ・プログラム・コード論理７０４は、例えば、ストレージ媒体内に格納され、一のコンピュータにロードされ且つ当該コンピュータによって実行され、或いは電気的ケーブル、光ファイバ、電磁放射等の特定の伝送媒体を介して伝送される。その場合、コンピュータ・プログラム・コード論理７０４が一のコンピュータにロードされ且つ当該コンピュータによって実行される場合、当該コンピュータは、本発明を実施するための装置になる。汎用のマイクロプロセッサ上で実装される場合、コンピュータ・プログラム・コード論理７０４のセグメントは、特定の論理回路を作成するようにマイクロプロセッサを構成する。
【００６６】
諸図面のうちフローチャート及びブロック図は、本発明の種々の実施形態に従った、システム、方法及びコンピュータ・プログラムの可能な実装のアーキテクチャ、機能性及び動作を示す。この点に関連して、フローチャート又はブロック図内の各ブロックは、指定された論理機能を実装するための１つ以上の実行可能命令から成る、モジュール、セグメント又はコード部分を表すことがある点に留意されたい。また、幾つかの代替的実装では、ブロック内に表記された機能を図面に示した順序とは異なる順序で実施することができる点にも留意されたい。例えば、特定の機能性に依存して、連続的に示した２つのブロックを実質的に並列に実施したり、これらのブロックを反対の順序で実施することができる。さらに、ブロック図又はフローチャートの各ブロック及び複数ブロックの組み合わせは、指定された機能又は行為を実行する専用のハードウェア・ベースのシステム又は専用ハードウェア及びコンピュータ命令の組み合わせによって実装することができる点にも留意されたい。
【符号の説明】
【００６７】
１００・・・ＳＭＰサーバ・コンピュータ・システム
１０２・・・物理ＳＭＰサーバ
１０４・・・プロセッサ
１０６・・・メモリ
１０８・・・Ｉ／Ｏアダプタ
１１０・・・ハイパーバイザ
１１２、１１２ａ・・・仮想ＳＭＰサーバ
１１４、１１４ａ・・・オペレーティング・システム
１１６、１１６ａ・・・ミドルウェア
１１８、１１８ａ・・・アプリケーション
１２０、１２０ａ・・・仮想プロセッサ
１２２、１２２ａ・・・仮想メモリ
１２４、１２４ａ・・・仮想Ｉ／Ｏアダプタ
１２６・・・マイクロプロセッサ・チップ
３０２・・・マルチプロセッサ・チップ
３０４・・・コア（プロセッサ）
３０６・・・Spr_Max_Pwr_Flag（特殊目的レジスタ内の最大電力フラグ）
３１０・・・#Max_Pwr_Flags（高電力状態で実行可能なプロセッサの最大数）
【図１】
2013527948.tif 000003
【図２】
2013527948.tif 000004
【図３】
2013527948.tif 000005
【図４】
2013527948.tif 000006
【図５】
2013527948.tif 000007
【図６】
2013527948.tif 000008
【図７】
2013527948.tif 000009
【国際調査報告】
2013527948.tif 000010
2013527948.tif 000011
2013527948.tif 000012