(57)【特許請求の範囲】
【請求項１】
共用リソースの割り当てを制御するためのシステムであって、
共用リソースおよび要求側識別子によって識別される複数の要求側に接続された次要求優先権モジュールであって、
前記要求側の１個以上からの前記共用リソースに対する１つ以上の待ち状態の要求に優先順位を付ける待ち状態要求機構であって、各待ち状態の要求が、関連付けられた要求側識別子を含み、前記待ち状態の要求の１つが、関連付けられた次の要求側識別子を有する次の待ち状態の要求として指名される、前記待ち状態要求機構と、
前記共用リソースに対する優先権を付与された以前の要求に関連付けられた要求側識別子のログをとるロギング機構と、
前記次の待ち状態の要求および前記次の要求側識別子にアクセスし、前記共用リソースに対する優先権を前記次の待ち状態の要求に付与するか否かを判定する次要求優先権論理であって、該次要求優先権論理による判定が、ログをとった要求側識別子および前記次の要求側識別子に応じたものであり、更に、前記共用リソースに対する優先権を前記次の待ち状態の要求に付与することの判定に応答して前記共用リソースに対する優先権を前記次の待ち状態の要求に付与し、前記優先権の付与に応答して前記次の要求側識別子のログをとる、前記次要求優先権論理と、を含む前記次要求優先権モジュールを含む、システム。
【請求項２】
前記次の待ち状態の要求が唯一の待ち状態の要求であることに応答して、前記共用リソースに対する優先権を前記次の待ち状態の要求に付与することを判定する、請求項１に記載のシステム。
【請求項３】
前記共用リソースに対する優先権を前記次の待ち状態の要求に付与しないことの判定に応答して、前記次要求優先権論理が更に、前記次の待ち状態の要求および前記次の要求側識別子として他の待ち状態の要求および関連付けられた要求識別子を指名する、請求項１に記載のシステム。
【請求項４】
前記共用リソースに対する規定数の最も最近の優先権付与の要求識別子のログをとる、請求項１に記載のシステム。
【請求項５】
前記次の要求側識別子がログをとった要求側識別子と一致しないことに応答して、前記共用リソースに対する優先権を前記次の待ち状態の要求に付与することを判定する、請求項１に記載のシステム。
【請求項６】
前記要求側が仮想サーバである、請求項１に記載のシステム。
【請求項７】
前記要求側が仮想サーバのグループである、請求項１に記載のシステム。
【請求項８】
前記共用リソースがメモリであり、前記次要求優先権モジュールがメモリ・コントローラに位置している、請求項１に記載のシステム。
【請求項９】
前記共用リソースに対する優先権の前記次の要求への前記付与に応答して、前記次要求優先権論理が更に前記次の要求を前記共用リソースに送信する、請求項１に記載のシステム。
【請求項１０】
前記次要求優先権モジュールが、前記要求側と前記共用シリソース間の要求の流れを制御するように機能する制御論理によって実施される、請求項１に記載のシステム。
【請求項１１】
共用リソースの割り当てを制御するための方法であって、
共用リソースにアクセスするための要求を受信することであって、前記要求がプロセッサ上で実行する要求側から送信され、前記受信が、前記プロセッサおよび前記共用リソースに接続された次要求優先権モジュールにおいて行われる、ことと、
前記共用リソースに対する規定数の最も最近の優先権付与のいずれかが前記要求側に対して行われたか否かを判定することと、
前記共用リソースに対する前記規定数の最も最近の優先権付与のいずれも前記要求側に対して行われなかったことの判定に応答して、前記共用リソースに対する優先権を前記要求に付与することと、
前記共用リソースに対する前記規定数の最も最近の優先権付与のいずれかが前記要求側に対して行われたことの判定に応答して、
前記共用リソースに対する１つ以上の他の要求が待ち状態であるか否かを判定することと、
前記共用リソースに対する前記１つ以上の他の要求が待ち状態であることの判定に応答して、前記共用リソースに対する優先権を前記他の要求の１つに付与するか否かを判定することと、
を含む、方法。
【請求項１２】
前記共用リソースに対する他の要求が待ち状態でないことの判定に応答して、前記共用リソースに対する優先権を前記要求に付与することを更に含む、請求項１１に記載の方法。
【請求項１３】
前記次要求優先権モジュールが、前記要求側と前記共用シリソース間の要求の流れを制御するように機能する制御論理によって実施される、請求項１１に記載の方法。
【請求項１４】
前記共用リソースに対する優先権を前記要求に付与することに応答して、前記要求を前記共用リソースに送信することを更に含む、請求項１１に記載の方法。
【請求項１５】
共用リソースの割り当てを制御するためのコンピュータ・プログラムであって、
前記コンピュータ・プログラムは、コンピュータに、
要求側から送信される共用リソースにアクセスするための要求を受信することと、
前記共用リソースに対する規定数の最も最近の優先権付与のいずれかが前記要求側に対して行われたか否かを判定することと、
前記共用リソースに対する前記規定数の最も最近の優先権付与のいずれも前記要求側に対して行われなかったことの判定に応答して、前記共用リソースに対する優先権を前記要求に付与することと、
前記共用リソースに対する前記規定数の最も最近の優先権付与のいずれかが前記要求側に対して行われたことの判定に応答して、
前記共用リソースに対する１つ以上の他の要求が待ち状態であるか否かを判定することと、
前記共用リソースに対する前記他の要求が待ち状態でないことの判定に応答して、前記共用リソースに対する優先権を前記要求に付与することと、
前記共用リソースに対する前記１つ以上の他の要求が待ち状態であることの判定に応答して、前記共用リソースに対する優先権を前記他の要求の１つに付与するか否かを判定することと、
を実行させる、コンピュータ・プログラム。
【請求項１６】
前記要求側が仮想サーバである、請求項１５に記載のコンピュータ・プログラム。
【請求項１７】
前記要求側が仮想サーバのグループである、請求項１５に記載のコンピュータ・プログラム。
【請求項１８】
前記コンピュータに、前記共用リソースに対する前記他の要求が待ち状態でないことの判定に応答して、前記共用リソースに対する優先権を前記要求に付与することを更に実行させる、請求項１５に記載のコンピュータ・プログラム。
【請求項１９】
前記コンピュータに、前記共用リソースに対する優先権を前記要求に付与することに応答して、前記要求を前記共用リソースに送信することを更に実行させる、請求項１５に記載のコンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般に、コンピューティング環境内の処理に関し、更に具体的には、コンピューティング環境における共用リソースの割り当てに関する。
【背景技術】
【０００２】
コンピュータ・システム全体の性能は、コンピュータ構造の重要な要素の各々によって影響を受ける。それらの要素には、プロセッサ（複数のプロセッサ）の性能／構造、いずれかのメモリ・キャッシュ（複数のキャッシュ）、入出力（Ｉ／Ｏ）サブシステム（複数のサブシステム）、メモリ制御機能（複数の機能）の効率、主メモリ・デバイス（複数のデバイス）、ならびに相互接続インタフェース（複数のインタフェース）の種類および構造が含まれる。
【０００３】
コンピュータ・システム／サブシステムの設計または構造あるいはその両方を改良することによってシステム全体の性能および密度を最大化する改良型の解決策または革新的な解決策あるいはその両方を生成するために、この業界において幅広い研究開発の努力が目下進行中である。高可用性システムでは、システム全体の信頼性に関して更に別の問題がある。なぜなら、新しいコンピュータ・システムは、追加機能の提供、性能の向上、記憶容量の増大、動作コストの削減等に加えて、平均故障間隔（ＭＴＢＦ）に関して既存のシステムよりも著しく優れているものだというカスタマの期待があるからである。頻繁に見られる他のカスタマ要求も、コンピュータ・システム設計の問題を更に悪化させる。それらの要求には、アップグレードの容易さおよびシステム環境への影響（スペース、電力、および冷却等）の軽減のような事項が含まれる。
【０００４】
今日のマイクロプロセッサは多くのプロセッサを有し、それらの各々が多くの実行スレッドを動作させる。例えば、今日のマイクロプロセッサは、各々が４個のスレッドを有する８個のプロセッサを有し、ハイパーバイザのソフトウェアを用いて多数の仮想プロセッサを管理する場合がある。同時に実行させるスレッドの数は今後増えると予測されており、マイクロプロセッサは同時に数十のスレッドを動作させるようになると考えられる。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】米国特許第７，３２０，０４７号
【発明の概要】
【発明が解決しようとする課題】
【０００６】
マイクロプロセッサは、ハイパーバイザの制御のもとにある多数の仮想プロセッサによって共用される多くのハードウェア・リソースを有する。これらの共用リソースには、物理プロセッサ、キャッシュ、多数のキャッシュ間のキャッシュ・コヒーレンスを提供する相互接続ネットワーク、メモリ・コントローラ、入出力（Ｉ／Ｏ）コントローラ等が含まれる。今日のマイクロプロセッサのハードウェア設計は、各物理プロセッサにおけるハードウェア・タイマと組み合わせたハイパーバイザ・ソフトウェアに頼って、仮想プロセッサが物理ハードウェア・リソースの公平な共用資源（share）を受け取ることを保証する。今日の設計においては、キャッシュ・アクセスおよびメモリ・コントローラ・アクセス等の「ダウンストリーム」共用リソースの公平な共用資源を各プロセッサに提供するように仮想プロセスを物理プロセッサにディスパッチするために、仮想プロセッサはハイパーバイザに頼っている。
【課題を解決するための手段】
【０００７】
本発明の例示的な実施形態は、共用リソースの割り当てを制御するためのシステムを含む。このシステムは、共用リソースおよび要求側識別子によって識別される複数の要求側に接続された次要求優先権モジュールを含む。次要求優先権モジュールは、待ち状態要求機構、ロギング機構、および次要求優先権論理を含む。待ち状態要求機構は、要求側の１個以上からの共用リソースに対する１つ以上の待ち状態の要求に優先順位を付ける。各待ち状態の要求は、関連付けられた要求側識別子を含む。待ち状態の要求の１つが、関連付けられた次の要求側識別子を有する次の待ち状態の要求として指名される。ロギング機構は、共用リソースに対する優先権を付与された以前の要求に関連付けられた要求側識別子のログをとる。次要求優先権論理は、次の待ち状態の要求および次の要求側識別子にアクセスし、共用リソースに対する優先権を次の待ち状態の要求に付与するか否かを判定する。この判定は、ログをとった要求側識別子および次の要求側識別子に応じたものである。共用リソースに対する優先権を次の待ち状態の要求に付与することの判定に応答して、共用リソースに対する優先権を次の待ち状態の要求に付与する。この付与に応答して次の要求側識別子のログをとる。
【０００８】
別の例示的な実施形態は、共用リソースの割り当てを制御するための方法を含む。この方法は、共用リソースにアクセスするための要求を受信することを含む。この要求は、プロセッサ上で実行する要求側から受信される。この受信は、プロセッサおよび共用リソースに接続された次要求優先権モジュールにおいて行われる。共用リソースに対する規定数の最も最近の優先権付与のいずれかが要求側に対して行われたか否かを判定する。共用リソースに対する規定数の最も最近の優先権付与のいずれも要求側に対して行われなかった場合、共用リソースに対する優先権を要求に付与する。共用リソースに対する規定数の最も最近の優先権付与のいずれかが要求側に対して行われた場合、共用リソースに対する１つ以上の他の要求が待ち状態であるか否かを判定する。共用リソースに対する他の要求が待ち状態である場合、共用リソースに対する優先権を他の要求の１つに付与するか否かを判定する。
【０００９】
更に別の例示的な実施形態は、共用リソースの割り当てを制御するためのコンピュータ・プログラムを含む。このコンピュータ・プログラムは、処理回路によって読み取り可能でありこの処理回路によって方法を実行するために実行される命令を記憶するタンジブルな記憶媒体を含む。この方法は、共用リソースにアクセスするための要求を受信することを含む。この要求は、プロセッサ上で実行する要求側から受信される。この受信は、プロセッサおよび共用リソースに接続された次要求優先権モジュールにおいて行われる。共用リソースに対する規定数の最も最近の優先権付与のいずれかが要求側に対して行われたか否かを判定する。共用リソースに対する規定数の最も最近の優先権付与のいずれも要求側に対して行われなかった場合、共用リソースに対する優先権を要求に付与する。共用リソースに対する規定数の最も最近の優先権付与のいずれかが要求側に対して行われたと判定された場合、共用リソースに対する１つ以上の他の要求が待ち状態であるか否かを判定する。共用リソースに対する待ち状態の他の要求が存在しない場合、共用リソースに対する優先権を要求に付与する。共用リソースに対する他の要求が待ち状態である場合、共用リソースに対する優先権を他の要求の１つに付与するか否かを判定する。
【００１０】
これより本発明の好適な実施形態について、以下の図面を参照しながら、単に一例として説明する。
【図面の簡単な説明】
【００１１】
【図１】本発明の例示的な実施形態によって実施可能であるいくつかのプロセッサおよび共用システム・リソースを有するコンピューティング・システムを示す。
【図２】本発明の例示的な実施形態によって実施可能である仮想サーバ制御論理ハードウェアを示す。
【図３】従来技術のメモリ・コントローラを示す。
【図４】本発明の例示的な実施形態によって実施可能であるメモリ・コントローラを示す。
【図５】本発明の例示的な実施形態によって実施可能である、共用システム・リソースに送信される次要求を選択するための一般化フローチャートを示す。
【図６】本発明の例示的な実施形態によって実施可能であるコンピュータ・プログラムを示す。
【発明を実施するための形態】
【００１２】
本発明の例示的な実施形態は、単一の仮想サーバまたは仮想サーバのグループに専用とすることができる共用リソースの入口において要求の数を制限するハードウェア制御を提供する。
【００１３】
今日のマイクロプロセッサのハードウェア設計においては、多くの仮想プロセッサを有する単一の仮想サーバが、マイクロプロセッサ・コアの外側で共用ハードウェア・リソースに対する大きな需要を生成する場合がある。この需要は、同一のハードウェア・システム上で現在動作している他の仮想サーバに性能の影響を及ぼすほど大きい場合がある。過去においては、ハイパーバイザまたはいずれかの同様のソフトウェア・システムにとって、仮想サーバの進行状況を監視し、他の仮想サーバを犠牲にして進行中の仮想プロセッサのディスパッチを制限することは比較的容易であった。仮想サーバ当たりのスレッド数が増えた場合、更に、単一のマイクロプロセッサ・チップ上の物理プロセッサ・コア（本明細書においてコア・プロセッサまたはプロセッサとも称する）の数が現在の１から８およびもっと大きい数に増えると、ハイパーバイザが監視することは難しくなる。
【００１４】
更に、キャッシュ挙動の極めて悪い作業負荷を動作させている仮想サーバによって、または（他の可能性の中でも）物理サーバの動作を混乱させようとする悪質なウィルス・プログラムによって、システム・リソースに対する過剰な需要が生じる場合がある。本発明の例示的な実施形態では、ハイパーバイザまたは他の制御プログラムが、仮想サーバまたは仮想サーバのグループによって消費することができるハードウェア・リソースに制限を設定することができる。本発明の例示的な実施形態は、単一の仮想サーバによって消費することができる最大のリソース共用資源を制限する能力を提供する。これらの制限は、ハイパーバイザまたは別の制御プログラムによって設定することができる。例示的な実施形態においては、ハイパーバイザの制御のもとで、各々の一意の仮想サーバに仮想サーバ識別子（ＶＳＩＤ）を指定する。ＶＳＩＤはいずれかの要求と共に送信され、この要求はプロセッサを発し、マイクロプロセッサ・チップ上またはシステム内の他のチップもしくはインタフェース上で共用リソースの使用を試みる。ハードウェア制御またはソフトウェア制御あるいはその両方によって、いずれかの単一の仮想サーバまたは仮想サーバのグループがハードウェア・リソースのある割合以上を占めるのを防ぐ。
【００１５】
図１は、例示的な実施形態によって実施可能であるマイクロプロセッサ・コンピューティング・システムの一部を示す。各コア・プロセッサ１００は、専門のインタフェース１１０、１４０、および次要求優先権モジュール１２０を介して、１つ以上の共用リソース１５０に接続されている。本発明の例示的な実施形態においては、次要求優先権モジュール１２０はソフトウェアで実施される。本発明の例示的な実施形態では、次要求優先権モジュール１２０は、コア・プロセッサ１００と共用リソース１５０との間に位置するシステム制御論理（ＳＣＬ）の部分である。ＳＣＬは、複数のマイクロプロセッサ・コア間、および、それらのコアと、メモリ、データ・キャッシュ、Ｉ／Ｏコントローラ、専用アクセレレータ、データ圧縮エンジン等の他のシステム要素との間の物理相互接続を提供する。集中型スイッチ構造を用いる最新のコンピューティング・システムは、スイッチ機能に専用の１つ以上のチップ上でＳＣＬを実施する場合がある。そして、これらのスイッチ・チップが、マイクロプロセッサ・チップおよびメモリ・チップ・アレイおよびシステムの他の要素に接続される。分散型スイッチ構造を用いるコンピューティング・システムは、各マイクロプロセッサ・チップ上でＳＣＬの一部を実施する場合がある。この場合、マイクロプロセッサ・チップを相互に直接接続し、それらの接続のために用いるインタフェースはＳＣＬによって制御される。ＳＣＬは、ソース・マイクロプロセッサ・コアと共用システム・リソースとの間の要求の流れを制御するように機能する。また、これは、戻ってくるデータの流れも制御する。
【００１６】
集中型スイッチの場合または分散型スイッチの場合のいずれかにおいて、本発明の実施形態を用いるコンピューティング・システムは、今日のシステムにおいて見られるＳＣＬの典型的な位置の他に、例えばメモリＤＲＡＭ上で共用リソースに最も近い箇所にＳＣＬの一部を配置することができる。本発明の他の例示的な実施形態は、他の点では標準的なメモリ・インタフェースを駆動するメモリ・コントローラ論理等の共用通信インタフェースのいずれかの端部にＳＣＬの一部を配置することができる。特定のコンピューティング・システム設計におけるＳＣＬの一部の配置は、限定ではないが、利用可能な論理空間、電力消費、および設計の複雑さを含む多数のファクタに依存する。多くの今日の設計はマルチスレッド・プロセッサを含むので、例示的な実施形態において、重要な共用リソースもコアと同じマイクロプロセッサ・チップ上に位置させることができ、従ってＳＣＬの一部もそこに位置させることができる。他の例示的な実施形態では、ＳＲＡＭまたはｅＤＲＡＭデータ・キャッシュ等の共用リソースへと通じる論理の共用パイプラインの始点に論理を配置することができる。
【００１７】
図１に示したシステムの１つのコア・プロセッサ１００ｂは、インタフェース１１０ｂを介して次要求優先権モジュール１２０ａに接続されている。また、同じコア・プロセッサ１００ｂは、別の専用インタフェース１１０ｃを介して次要求優先権モジュール１２０ｂに接続されている。共用リソース１５０に対するアクセスは、次要求優先権モジュール１２０によって制御される。
【００１８】
図１に示した次要求優先権モジュール１２０は、仮想サーバ制御論理１２１および次要求優先権論理１２２を含む。図２に関連付けて、仮想サーバ制御論理１２１の例示的な実施形態について以下に説明する。図４に関連付けて、次要求優先権論理１２２の例示的な実施形態について以下に説明する。
【００１９】
本発明の例示的な実施形態は多数のＩＢＭ  Ｐ６マイクロプロセッサを用い、その各々は４個の処理コアを有する。本発明の例示的な実施形態は、いずれかの数のマイクロプロセッサ・チップを有するシステム上で用いることができる。更に、例示的な実施形態は、いずれかの数のコア・プロセッサを含むいずれかのタイプのマイクロプロセッサと共に実施することができる。更に、例示的な実施形態は、多数のマルチスレッド実施のいずれかをサポートするマイクロプロセッサと組み合わせて用いることができる。
【００２０】
図１に示すように、このシステムにおいて、コア・プロセッサ１００の各々にＶＳＩＤレジスタ１６０が設けられている。ＶＳＩＤレジスタ１６０は、コア・プロセッサ１００上で実行するソフトウェアによって書き込むことができる。本発明の例示的な実施形態は、ハイパーバイザを用いてこのタスクを実行する。マルチスレッドがアクティブであると予想され、一度に多数の仮想サーバからのソフトウェアを動作させるために個々のスレッドが指定されるシステムにおいて、各スレッドにＶＳＩＤレジスタ１６０を提供することができる。本発明の例示的な実施形態において、ハイパーバイザは、制御する各仮想サーバについてＶＳＩＤを選択する。仮想サーバを物理プロセッサ（例えばコア・プロセッサ１００）にディスパッチすると、そのコア・プロセッサ１００についてＶＳＩＤレジスタ１６０にＶＳＩＤが書き込まれる。
【００２１】
ＶＳＩＤレジスタ１６０の内容は、インタフェース１１０を介して共用リソース１５０に伝達されるコマンド、アドレス、およびデータに含まれている。インタフェース１１０は、最新のメモリ・コントローラに接続するために用いられるもの等の今日の要求インタフェースと同様のものとすることができる。ＶＳＩＤ情報および従来技術のコマンド、アドレス、およびデータ情報の組み合わせは、コア・プロセッサ１００からダウンストリームで共用リソース１５０に対するアクセスを制御するために論理によって用いられる。本発明の例示的な実施形態では、次要求優先権モジュール１２０を用いて、コア・プロセッサ１００ａ〜１００ｃを有するマイクロプロセッサ・チップの外側の（すなわちそのマイクロプロセッサ・チップ上には位置していない）共用リソース１５０に対するアクセスを制御する。他の実施形態では、同様のハードウェアおよび方法を用いて、オンチップ・メモリ・コントローラ、オンチップＩ／Ｏコントローラ、オンチップ・データ・キャッシュ、または他のいずれかのオンチップ・リソース等のマイクロプロセッサ・チップの内側に位置するリソースに対するアクセスを制御する。
【００２２】
本発明の例示的な実施形態において、ＶＳＩＤは、コンピューティング・システム上でハイパーバイザが現在ホストとして機能している各仮想サーバごとに一意である。本発明の他の実施形態では、一意のＶＳＩＤのハッシュまたは全ＶＳＩＤのビットの単純なサブセットを用いることができる。本発明の１つの例示的な実施形態では、コア・プロセッサ１００から共用リソース１５０へと伝達しなければならない要求情報をＶＳＩＤに追加するのに必要なハードウェア・オーバーヘッドを軽減するために、ＶＳＩＤの最下位２ビットだけを用いる。ＶＳＩＤのサブセットの使用によって、仮想サーバに対する要求スロット分配の精度レベルが下がるが、コンピューティング・システム上で動作しているほとんどの仮想サーバにとって予測できない性能を防ぐことができる。
【００２３】
本明細書において用いる場合、ＶＳＩＤは、共用リソース（例えばメモリ）に対する要求に要求側（例えば仮想サーバ）を関連付けるために使用可能な要求側識別子の一例である。代替的な実施形態においては、当業者に明らかであるような他の要求側識別子を利用することができる。
【００２４】
図１に、コア・プロセッサ１００と共用リソース１５０との間の相互接続を、ポイント・ツー・ポイント・バス１１０、１４０の集合として示す。本発明の代替的な例示の実施形態では、他の多くの構成の中でも、共用バス、全クロスバー・スイッチ、または一連の相互接続スイッチ等の他のいずれかのタイプの相互接続を利用することができる。
【００２５】
図２は、本発明の例示的な実施形態によって利用可能な仮想サーバ制御論理１２１を示す。図２に示した仮想サーバ制御論理１２１は、共用リソース１５０について待ち状態の要求を格納するための要求キューを構成するレジスタ・グループ２２０を含む。また、レジスタ２２０は、各要求ごとに要求側識別子（例えばＶＳＩＤ）を含む。要求側識別子は、要求側（例えばコア・プロセッサ１００上で実行している仮想サーバ）に要求を関係付ける。要求キューは、（例えば、キュー内で各要求がどのような長さであったか、キュー内の時間および要求側に関連付けた優先権の組み合わせ等に基づいて）配列され、新しい要求の処理に共用リソース１５０が利用可能である場合に処理のために評価される次要求として、要求の１つが指名される。レジスタ２２０は、インタフェース１１０の１つを介してコア・プロセッサ１００から到着した待ち状態の要求を含む。本発明の例示的な実施形態では、４個の要求を待ち状態に保持することができる。他の実施形態では、この機能のためにいかなる数のレジスタも追加して（または減少させて）用いることができる。また、キュー内に保持される要求の数は、プログラム可能な深さによって設計することができる。
【００２６】
また、本発明の例示的な実施形態は、複数のレジスタ２３０で構成される以前の要求側キューも含む。本発明の例示的な実施形態は、４位置深さ（four positiondeep）先入れ先出しバッファを用いた以前の要求側キューを実施して、共用リソース１５０に対する優先権を付与された最後の４個の要求のＶＳＩＤを保持する。他のいずれかのバッファ深さも用いることができる。また、バッファはプログラム可能な深さを用いて設計することも可能である。例示的な実施形態において、この深さは、ハイパーバイザによって、または他のいずれかの適切なスーパーバイザ・ソフトウェアによって、または適切なハードウェア・アルゴリズムによって設定される。例示的な実施形態においては、バッファの深さはシステムの初期起動シーケンスの間に設定され、次いで後の時点でハイパーバイザによって変更される。
【００２７】
図２に示した要求キュー２２０は、本発明の例示的な実施形態によって実施可能である待ち状態要求機構の一例である。本発明の例示的な実施形態によって、ハードウェアまたはソフトウェアあるいはその両方において待ち状態要求機構を実施する他の方法を利用可能である。例えば、待ち状態要求機構は、特定のＶＳＩＤに有利であるように設計することができる。有利とされたＶＳＩＤには、例えば２５パーセント等、ある一定の共用リソース使用割合を与えることができる。
【００２８】
同様に、図２に示した以前の要求側キュー２３０は、本発明の例示的な実施形態によって実施可能であるロギング機構の一例である。本発明の例示的な実施形態によって、ハードウェアまたはソフトウェアあるいはその両方においてロギング機構を実施する他の方法を利用可能である。例えば、特定のＶＳＩＤを有する要求に対して共用リソースの次の使用の優先権を付与するたびに増分する１組のカウンタとして、ログを実施することができる。各カウンタには、ある範囲のＶＳＩＤを指定することができる。本発明の実施形態を実施するために、待ち状態要求機構およびロギング機構の広範囲の組み合わせを使用可能であることは理解されよう。待ち状態要求機構の状態と共にロギング機構の状態を用いるいずれかの適切な論理を用いて、共用リソースに送信される次の要求を決定することができる。
【００２９】
本発明の例示的な実施形態は、共用リソース１５０としてメモリを用いる。米国特許第７，３２０，０４７号からの図３におけるメモリ・システム３００は、本発明の例示的な実施形態と共に使用可能な従来技術のメモリ・システムの一例である。メモリ・システム３００は、メモリ・コントローラ３１０、複数のポイント・ツー・ポイント・リンク３２０ａ〜３２０ｎ、複数のメモリ・サブシステム３３０ａ〜３３０ｃ、およびインタフェース３７５上の複数のメモリ・サブシステム・ポート３７８ａ〜３７８ｎを含む。図３において、メモリ・サブシステム３３０ａの更に詳細な図をメモリ・サブシステム３４０として示す。メモリ・サブシステム３４０は、メモリ・サブシステム３４０上に配置されたバッファ・デバイス３５０および複数のメモリ・デバイス３６０を含む。バッファ・デバイス３５０は、チャネル３７０を介して複数のメモリ・デバイス３６０に結合されている。
【００３０】
図４に示したメモリ・システム３００Ｂは、図３に示した従来技術のメモリ・システムと共に実施可能である例示的な実施形態を示す。図３と同様に、図４が示すメモリ・システム３００Ｂは、メモリ・コントローラ３１０Ｂ、複数のポイント・ツー・ポイント・リンク３２０ａＢ〜３２０ｎＢ、複数のメモリ・サブシステム３３０ａＢ〜３３０ｃＢ、およびインタフェース３７５Ｂ上の複数のメモリ・サブシステム・ポート３７８ａＢ〜３７８ｎＢを含む。図４において、メモリ・サブシステム３３０ａＢの更に詳細な図をメモリ・サブシステム３４０Ｂとして示す。メモリ・サブシステム３４０Ｂは、メモリ・サブシステム３４０Ｂ上に配置されたバッファ・デバイス３５０Ｂおよび複数のメモリ・デバイス３６０Ｂを含む。バッファ・デバイス３５０Ｂは、チャネル３７０Ｂを介して複数のメモリ・デバイス３６０Ｂに結合されている。また、図４に示したメモリ・コントローラ３１０Ｂは、図４に要素３９０Ｂとして示す次要求優先権論理１２０、１３０を含む。図示した例示的な実施形態では次要求優先権モジュール３９０Ｂがメモリ・コントローラ３１０Ｂに配置されているが、これはメモリ・バッファ・デバイス３５０Ｂまたはメモリ・デバイス３６０Ｂに位置させることも可能であることは理解されよう。例示的な実施形態は、メモリ・システムにおける使用に限定されず、他のいずれかの共用リソースを同様の方法で制御することができる。
【００３１】
図５は、本発明の例示的な実施形態によって実施可能な、共用システム・リソース１５０に送信される次要求を選択するための一般化したフローチャートを示す。図５は、仮想サーバ制御論理１２１および要求インタフェース１４０を管理する次要求優先権論理１２２において実施される機能を示す。ブロック４１０において、次要求優先権論理１２２は、要求キューにおける次エントリを調査する。前述のように、本発明の１つの例示的な実施形態においては、次エントリは要求キューにおける最も古いエントリである。ブロック４２０において、次エントリに関連付けられた要求側識別子が、以前の要求側キューにおけるエントリのいずれかと一致するか否かを判定する。図５に示す例示的な実施形態において、以前の要求側キューは、共用リソースに対する優先権が付与された最後の４個の要求側の要求側識別子を含む４深さ先入れ先出しバッファによって実施される。この例において、最も最近の優先権付与の規定数は４であり、他の実施形態においては他の規定数が実施される。
【００３２】
ブロック４２０において、要求側識別子が以前の要求側キューにおける要求側識別子のいずれかと一致すると判定されると、処理は続いてブロック４５０において、次の要求が要求キューにおける最後の要求であるか否かを判定する。この場合、共用リソース１５０を待っている要求側は他には存在しないので、共用リソース１５０に対する優先権を要求側に付与しなければならない。ブロック４６０において、要求側は共用リソースに対する優先権を付与される。代替的な例示の実施形態においては、要求キューに存在する要求が１つだけであり、それに関連付けられた要求側識別子が以前の要求キューにおいて見出された場合に、異なるアクションが行われる。この代替的な例示の実施形態においては、次要求に優先権は与えられず、次サイクルにおいて共用リソース１５０に要求は送信されない。これは、共用リソース１５０が一度に対応することができる要求数に比べて要求のサービス時間が長い場合に、望ましい場合がある。
【００３３】
ブロック４５０において、次要求が要求キューにおける最後の要求でないと判定された場合、キューにおける別の要求を次要求として指名し（例えばこれが次に最も古い要求であること、または他の何らかの優先権スキームに基づいて）、処理はブロック４１０において継続する。
【００３４】
ブロック４２０において、要求側識別子が以前の要求側キューにおける要求側識別子のいずれにも一致しないと判定された場合、処理はブロック４３０において継続する。ブロック４３０において、次要求には共用リソース１５０に対する優先権が付与される。ブロック４４０において、次要求に関連付けられた要求側識別子を以前の要求側キューに追加する。本発明の例示的な実施形態においては、新しい要求側識別子によって以前の要求側キューにおける最も古いエントリを置換する。優先権が付与された要求は、インタフェース１４０を介して共用リソース１５０に送信される次要求になる。
【００３５】
図５は例示的な実施形態によって実施可能である１つの処理フローを示すが、本発明の代替的な例示的な実施形態によって他の処理フローを実施することも可能である。例えば、本発明の別の例示的な実施形態においては、１つ以上の特定の仮想サーバからの要求を他の全ての要求よりも有利とする優先権機能を実施するために、１つ以上の仮想サーバに要求側識別子を指定し、更に、以前の要求側キュー（または他のロギング機構）にいくつの以前の要求側識別子をセーブするかを選択する。一例においては、多くのＣＰＵ間で共用されるメモリ・コントローラについての要求スロットの少なくとも１０パーセントを特定の仮想サーバに与えることができる。
【００３６】
本発明の別の例示的な実施形態においては、機能においてＶＳＩＤと類似した要求タグ（要求側識別子の一例）を用いるが、これは異なるソフトウェア層によって生成される。例示的な実施形態では、ハイパーバイザによって生成されるＶＳＩＤを用いるが、いずれかの個々のオペレーティング・システムは、そのオペレーティング・システム上で動作する個々の作業ユニットを識別する１組のプロセスＩＤ（ＰＩＤ）を生成することができる。これらのＰＩＤは、実施可能である別のタイプの要求側識別子であり、それらは、ディスパッチの間にＶＳＩＤと同じハードウェア・レジスタに直接書き込むことができる。
【００３７】
別の例示的な実施形態においては、ハードウェアは、ＣＰＵのＶＳＩＤを変更しようとするオペレーティング・システムの試みを傍受し、その後にＣＰＵの制御をハイパーバイザに渡すように設計されている。この場合、ハイパーバイザは、いずれかの数のアルゴリズムを用いて、ＶＳＩＤハードウェア・レジスタをどの値に設定するかを決定する。
【００３８】
技術的な努力および利点には、多数の仮想サーバを動作させている場合に物理コンピュータ・サーバが信頼できるレベルの高性能を提供する能力が含まれる。サーバによって、ハイパーバイザまたは他の制御プログラムは、仮想サーバまたは仮想サーバのグループが消費することができるハードウェア・リソースに制限を設定することができる。これにより、単一の仮想サーバが消費することができる最大のリソース共用資源を制限する能力を提供し、結果としてプロセッサの性能向上をもたらすことができる。
【００３９】
本明細書において用いた用語は、特定の実施形態を記載する目的のためだけのものであり、過度に限定することは意図していない。本明細書において用いたように、単数形「１つの（ａ）、（ａｎ）、（ｔｈｅ）」は、文脈によって明らかに他の場合が示されない限り、複数形を含むことが意図されている。また、「含む」または「含んでいる」という言葉あるいはその両方は、本明細書において用いられた場合、述べた特徴、整数、ステップ、動作、要素、または構成要素あるいはそれら全ての存在を規定するが、１つ以上の他の特徴、整数、ステップ、動作、要素、構成要素、またはそれらのグループあるいはそれら全ての存在または追加を除外するものではないことは、理解されよう。
【００４０】
以下の特許請求の範囲における全てのミーンズまたはステップ・プラス・ファンクション要素の対応する構造、材料、行為、および均等物は、具体的に特許請求したような他の特許請求した要素と組み合わせて機能を実行するためのいずれかの構造、材料、または行為を含むことが意図されている。本発明の実施形態の記載は、例示および記述の目的のために提示したが、網羅的であることや、開示した形態に本発明を限定することは、意図していない。当業者には多くの変更および変形が明らかであろう。実施形態は、原理および実際的な用途を最良に説明するため、更に、想定される特定の用途に適した様々な変更と共に本発明の様々な実施形態を当業者が理解することを可能とするために、選択し記載したものである。
【００４１】
当業者には認められようが、本発明の実施形態は、システム、方法、またはコンピュータ・プログラムとして具現化することができる。従って、本発明の実施形態は、全体的にハードウェアの実施形態、全体的にソフトウェアの実施形態（ファームウェア、常駐ソフトウェア、マイクロコード等を含む）、または、ソフトウェアおよびハードウェアの態様を組み合わせた実施形態という形態を取ることができ、それらは全て本明細書において、「回路」、「モジュール」、または「システム」と一般的に称することができる。更に、本発明の実施形態は、具現化されたコンピュータ使用可能プログラム・コードを有するいずれかのタンジブルな表現媒体において具現化されるコンピュータ・プログラムの形態を取ることも可能である。１つ以上のコンピュータ使用可能またはコンピュータ読み取り可能媒体（複数の媒体）のあらゆる組み合わせを利用することができる。コンピュータ使用可能またはコンピュータ読み取り可能媒体は、例えば、限定ではないが、電子、磁気、光、電磁、赤外線、または半導体のシステム、装置、デバイス、または伝播媒体とすることができる。コンピュータ読み取り可能記憶媒体の更に具体的な例（非網羅的な列挙）は、以下を含む。すなわち、１本以上のワイヤを含む電気的接続、携帯型コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ（ＲＡＭ）、読み取り専用メモリ（ＲＯＭ）、電気的プログラマブル読み取り専用メモリ（ＥＰＲＯＭまたはフラッシュ・メモリ）、光ファイバ、携帯型コンパクト・ディスク読み取り専用メモリ（ＣＤ−ＲＯＭ）、光記憶デバイス、インターネットまたはイントラネットをサポートするもの等の伝送媒体、または磁気記憶デバイスである。コンピュータ使用可能またはコンピュータ読み取り可能媒体は、プログラムが印刷されている紙または別の適切な媒体とすることも可能であることに留意すべきである。この場合、プログラムは、例えば紙または他の媒体の光学式走査を行うことで電子的に取り込み、次いで必要であれば適切な方法でコンパイルし、解釈し、または他の方法で処理し、次いでコンピュータ・メモリに記憶することができる。この文書の文脈において、コンピュータ使用可能またはコンピュータ読み取り可能媒体は、命令実行システム、装置、またはデバイスによってまたはそれと接続して用いるためにプログラムを含有、記憶、伝達、伝播、または転送することが可能ないずれかの媒体とすることができる。コンピュータ使用可能媒体は、ベースバンドにおいてまたは搬送波の一部として、具現化されたコンピュータ使用可能プログラム・コードを有する伝播データ信号を含むことができる。コンピュータ使用可能プログラム・コードは、限定ではないが、無線、有線、光ファイバ・ケーブル、ＲＦ等を含むいずれかの適切な媒体を用いて、伝送することができる。
【００４２】
本発明の実施形態における動作を実行するためのコンピュータ・プログラム・コードは、Java、Smalltalk、Ｃ＋＋等のオブジェクト指向プログラミング言語、および、「Ｃ」プログラミング言語または同様のプログラミング言語を含む従来の手順プログラミング言語を含む１つ以上のプログラミング言語のいずれかの組み合わせにおいて記述することができる。プログラム・コードは、全体的にユーザのコンピュータ上で、部分的にユーザのコンピュータ上で、スタンドアロンのソフトウェア・パッケージとして、部分的にユーザのコンピュータ上でおよび部分的に遠隔コンピュータ上で、または全体的に遠隔コンピュータもしくはサーバ上で、実行することができる。後者の場合、遠隔コンピュータは、ローカル・エリア・ネットワーク（ＬＡＮ）またはワイド・エリア・ネットワーク（ＷＡＮ）を含むいずれかのタイプのネットワークを介してユーザのコンピュータに接続することができ、または、接続は外部コンピュータに対して行うことができる（例えばインターネット・サービス・プロバイダを用いてインターネットを介して）。
【００４３】
本発明の実施形態に従った方法、装置（システム）、およびコンピュータ・プログラムのフローチャート図またはブロック図あるいはその両方を参照して、本発明の実施形態について記載している。フローチャート図またはブロック図あるいはその両方の各ブロックならびにフローチャート図またはブロック図あるいはその両方におけるブロックの組み合わせは、コンピュータ・プログラム命令によって実施可能であることは理解されよう。これらのコンピュータ・プログラム命令は、汎用コンピュータ、特殊目的コンピュータ、または他のプログラマブル・データ処理装置のプロセッサに提供されて機械を生成することができ、これによって、コンピュータまたは他のプログラマブル・データ処理装置のプロセッサによって実行される命令が、フローチャートまたはブロック図あるいはその両方のブロックまたは複数のブロックに規定された機能／行為を実施するための手段を生成するようになっている。また、これらのコンピュータ・プログラム命令はコンピュータ読み取り可能媒体に記憶することができ、これによって、コンピュータまたは他のプログラマブル・データ処理装置に特定の方法で機能するように指示することができ、これによって、コンピュータ読み取り可能媒体に記憶された命令が、フローチャートまたはブロック図あるいはその両方のブロックまたは複数のブロックに規定された機能／行為を実施する命令手段を含む製造品を生成するようになっている。
【００４４】
また、コンピュータ・プログラム命令を、コンピュータまたは他のプログラマブル・データ処理装置にロードして、そのコンピュータまたは他のプログラマブル装置上で一連の動作ステップを実行させてコンピュータ実施プロセスを生成することができ、これによって、コンピュータまたは他のプログラマブル装置上で実行する命令が、フローチャートまたはブロック図あるいはその両方のブロックまたは複数のブロックに規定された機能／行為を実施するためのプロセスを提供するようになっている。
【００４５】
上述したように、コンピュータ実施プロセスおよびこれらのプロセスを実施するための装置の形態で実施形態を具現化することができる。例示的な実施形態においては、本発明は、１つ以上のネットワーク要素によって実行されるコンピュータ・プログラム・コードにおいて具現化される。実施形態は、コンピュータ使用可能媒体５０２上に図６に示すようなコンピュータ・プログラム５００を含み、コンピュータ・プログラム・コード論理５０４が、製造品としてのタンジブルな媒体において具現化された命令を含む。コンピュータ使用可能媒体５０２のための例示的な製造品は、フレキシブル・ディスケット、ＣＤ−ＲＯＭ、ハード・ドライブ、ユニバーサル・シリアル・バス（ＵＳＢ）・フラッシュ・ドライブ、または他のいずれかのコンピュータ読み取り可能記憶媒体を含むことができる。ここで、コンピュータ・プログラム・コード論理５０４がコンピュータにロードされてコンピュータによって実行されると、そのコンピュータが本発明の実施形態を実施するための装置となる。実施形態が含むコンピュータ・プログラム・コード論理５０４は、記憶媒体に記憶されるか、コンピュータにロードされるかまたはコンピュータによって実行されるかあるいはその両方であるか、または、電気的配線またはケーブル上で、光ファイバを介して、もしくは電磁放射によって等、何らかの伝送媒体で送信される。ここで、コンピュータ・プログラム・コード論理５０４がコンピュータにロードされてコンピュータによって実行されると、そのコンピュータが本発明の実施形態を実施するための装置となる。汎用マイクロプロセッサ上で実施された場合は、コンピュータ・プログラム・コード論理５０４のセグメントがこのマイクロプロセッサを構成して特定の論理回路を生成する。
【００４６】
図面におけるフローチャートおよびブロック図は、本発明の様々な実施形態に従ったシステム、方法、およびコンピュータ・プログラムの可能な実施のアーキテクチャ、機能性、および動作を示す。この点で、フローチャートまたはブロック図における各ブロックは、規定された論理機能（複数の機能）を実施するための１つ以上の実行可能命令を含むコードのモジュール、セグメント、または一部を表すことができる。また、いくつかの代替的な実施において、ブロックに明記した機能は、図面に明記した順序どおりでなく発生する場合があることに留意すべきである。例えば、関与する機能性に応じて、連続して示した２つのブロックは実際には実質的に同時に実行されることがあり、またはブロックは時に逆の順序で実行される場合がある。また、ブロック図またはフローチャートあるいはその両方の各ブロック、およびブロック図またはフローチャートあるいはその両方におけるブロックの組み合わせは、特殊目的ハードウェアおよびコンピュータ命令の規定された機能もしくは行為または組み合わせを実行する特殊目的ハードウェア・ベースのシステムによって実施可能であることに留意すべきである。
【図１】
0005536807.tif 000002
【図２】
0005536807.tif 000003
【図３】
0005536807.tif 000004
【図４】
0005536807.tif 000005
【図５】
0005536807.tif 000006
【図６】
0005536807.tif 000007