(57)【特許請求の範囲】
【請求項１】
１つ又は複数の共有デバイスのリソースを、少なくとも１つのプロセッサ及び仮想化層を有するデータ処理システム内の仮想化環境の１つ又は複数のパーティションに割り当てる方法であって、
１つ又は複数のパーティション内の１つ又は複数のデバイスについての少なくとも１つのリソース割り当てを受信するステップと、
前記少なくとも１つのリソース割り当てを１つ又は複数のパーティションと関連付けるステップと、
前記少なくとも１つのリソース割り当ての受信に応答して、前記１つ又は複数のデバイスが、前記少なくとも１つのリソース割り当てより少ない又はこれと等しい容量で、前記パーティション内で１つ又は複数のトランザクションを実行することを可能にするステップと、
１つ又は複数のレジスタが、前記少なくとも１つのリソース割り当てを実施することを動的に可能にするステップであって、前記少なくとも１つのリソース割り当ては、前記１つ又は複数のトランザクションが前記１つ又は複数のパーティション内で実行されるとき、デバイス使用の予め定義された定量的尺度を可能にする、ステップと、
アクセス・カウントを前記１つ又は複数のレジスタと関連付けるステップと、
前記１つ又は複数のレジスタがプロセッサ・バスを介してトランザクション要求を実行する度に、前記１つ又は複数のレジスタの各々の前記アクセス・カウントをデクリメントするステップであって、前記プロセッサ・バスは前記１つ又は複数のデバイスへのアクセスを可能にする、ステップと、
前記１つ又は複数のレジスタの前記アクセス・カウントをチェックするステップと、
前記アクセス・カウントがゼロでないとき、前記トランザクション要求を前記プロセッサ・バスに伝送するステップと、
前記アクセス・カウントがゼロである場合、前記プロセッサ・バスへのアクセスをブロックするステップと、
将来のバス・サイクルにおいて前記トランザクション要求を再試行するステップと、
を含む方法。
【請求項２】
１つ又は複数のオペレーティング・システムを前記１つ又は複数のパーティションと関連付けるステップと、
前記少なくとも１つのリソース割り当てを１つ又は複数のレジスタ内に格納するステップと、
前記１つ又は複数のレジスタを前記１つ又は複数のパーティションと関連付けるステップと、
前記１つ又は複数のレジスタを介して前記リソース割り当てを実行するステップであって、前記１つ又は複数のリソース割り当ては前記１つ又は複数のデバイスの使用を管理する、ステップと、
をさらに含む請求項１に記載の方法。
【請求項３】
前記アクセス・カウントがゼロに達したとき、アクセス・カウントがゼロより大きい他のパーティションからの前記バスへの待ち状態のアクセスがない場合にのみ、前記トランザクションが、前記バスへのアクセスに進むことを可能にするステップをさらに含む、請求項１に記載の方法。
【請求項４】
グラフィカル・ユーザ・インターフェースにおいて前記１つ又は複数の予め定義されたリソース割り当てを受信するステップと、
１つ又は複数の受信したリソース割り当てを、前記１つ又は複数のパーティションと関連した前記１つ又は複数のデバイスの使用と関連付けるステップと、
をさらに含む、請求項１に記載の方法。
【請求項５】
パーティションが修正されたとき、パーティションのリストを動的に更新するステップと、
前記１つ又は複数のリソースが加えられたとき及び取り去られたときのいずれかに、前記グラフィカル・ユーザ・インターフェースを動的に更新するステップと、
をさらに含む請求項４に記載の方法。
【請求項６】
１つ又は複数の共有デバイスのリソースを、データ処理システム内の仮想化環境の１つ又は複数のパーティションに割り当てるためのコンピュータ・プログラムであって、
プロセッサにより実行されたとき、請求項１から請求項５までのいずれかに記載の方法を実行するプログラム・コードを含むコンピュータ・プログラム。
【請求項７】
１つ又は複数の共有デバイスのリソースを、データ処理システム内の仮想化環境の１つ又は複数のパーティションに割り当てるためのコンピュータ・システムであって、
プロセッサ・コンポーネントと、
前記プロセッサ・コンポーネントにより実行されたとき、請求項１から請求項５までのいずれかに記載の方法を実行するプログラム・コードと、
を含むコンピュータ・システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般に、コンピュータ・システムに関し、特定的には、コンピュータ・システム内の仮想化環境に関する。
【背景技術】
【０００２】
仮想化環境においては、ハイパーバイザ（仮想マシン・モニタとしても知られる）と呼ばれるソフトウェアの層が、ハードウェアとオペレーティング・システムとの間で実行され、パーティションとも呼ばれる複数の「仮想」マシン（ＶＭ）の外観又は錯覚を与える。仮想マシンは、マシンのハードウェアに排他的にアクセスできるように見える仮想データ処理システムであるが、その機能は、場合によってはマシン内に共存する他の仮想マシン間でハードウェア・リソースを共有することによって達成される。物理的なデータ処理システム内で共有されるハードウェア・リソースは、これらに限られるものではないが、メモリ、プロセッサ、及び入力／出力（Ｉ／Ｏ）デバイスを含む。
【０００３】
仮想化環境は、同じデータ処理システム上で複数のオペレーティング・システムが同時に実行されることを可能にするので、各々の仮想マシン又はパーティションは、オペレーティング・システムの１つだけのインスタンスを実行する。現在、ハイパーバイザは、仮想マシン・インターフェースを用いて、プロセッサ、メモリページ、及びディスクのようなハードウェア・リソースを、１つ又は複数の異なるパーティションに割り当てる。ハイパーバイザは、１つ又は複数のパーティションが互いに干渉し合わないことを確実にするように、これらのリソースを割り当てる。メモリページ及びＣＰＵコアのような幾つかのリソースは、異なるパーティション間で割り当てられるので、パーティション間でリソースの物理的な共有は存在しない。メモリ・バス、コヒーレンス・バス、スケーラビリティ・ポート又はメモリ・コントローラのような他のリソースを、本質的に、いずれかの個々のパーティション専用に割り当てることはできない。マルチコア・プロセッサ・チップの普及により、非排他的な割り当ての問題が増強される。例えば、同じチップ上の種々のコアに現在割り当てられている幾つかのパーティションがあり、そのパーティションの各々が、上述のバスのような同じデータ経路を有効に共有している場合がある。１つのパーティションが共有リソースを飽和状態にする作業負荷を実行したとき、同じデータ経路を共有しているパーティションは、深刻な性能の干渉を被り、これにより他のパーティションが不足状態になることがある。例えば、１つ又は複数のパーティションにおける作業負荷が、メモリ・バス、コヒーレンス・バス、スケーラビリティ・ポート及び／又はＩ／Ｏバスを大量に使用しているとき、異なるパーティション上で実行されている他の作業負荷の性能に悪影響を受ける。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
仮想化環境におけるリソース割り当てを提供すること。
【課題を解決するための手段】
【０００５】
１つ又は複数の共有デバイス及び／又はデータ経路容量のリソースを、データ処理システム内の仮想化環境の１つ又は複数のパーティションに割り当てるための装置、方法、システム及びコンピュータ・プログラムが開示される。仮想化環境内の各パーティションは、１つ又は複数のユーザ・作業負荷を管理する。データ処理システムと関連した１つ又は複数のデバイス及び／又はデータ経路容量について、少なくとも１つのユーザ定義のリソース割り当てを受信する。システムは、少なくとも１つのリソース割り当てを制御するように動的に設定される１つ又は複数のレジスタを管理する。リソース割り当てにより、１つ又は複数の作業負荷がパーティションを介して実行されたときに、デバイス及び／又はデータ経路容量のユーザ定義の定量的尺度（quantitative measure）（数及び／又は百分率）が機能することが可能になる。システムにより、１つ又は複数のパーティションがデバイスの帯域幅及び／又はデータ経路容量を共有することが可能になる。作業負荷は、ユーザ定義のリソース割り当てより少ない又はこれと等しいデバイスの特定の帯域幅及び／又はデータ経路容量で実行される。システムは、各パーティション上で実行されている作業負荷を隔離し、これにより、１つ又は複数のパーティション間での望ましくない干渉が最小になる。
【０００６】
ここで、添付の図面を参照して、本発明の実施形態を、単なる一例として説明する。
【図面の簡単な説明】
【０００７】
【図１】本発明の１つの実施形態による、本発明の種々の特徴を有利に実装することができるデータ処理システムのブロック図を提供する。
【図２】本発明の１つの実施形態による、１つ又は複数のパーティションに分割されたマルチコア処理チップの図である。
【図３】本発明の１つの実施形態による、仮想化環境における１つ又は複数のパーティションについてのユーザ定義のリソース割り当てを表示する例示的なリソース管理グラフィカル・ユーザ・インターフェースを示す。
【図４】本発明の１つの実施形態による、１つ又は複数のリソース割り当てを実施するためのトランザクションを実行するプロセスを示すフローチャートである。
【発明を実施するための形態】
【０００８】
例示的な実施形態は、１つ又は複数の共有デバイス及び／又はデータ経路の容量のリソースを、データ処理システム内の仮想化環境の１つ又は複数のパーティションに割り当てるための装置、方法、システム及びコンピュータ・プログラムを提供する。仮想化環境内の各パーティションは、１つ又は複数のユーザ作業負荷を管理する。データ処理システムと関連した１つ又は複数のデバイス及び／又はデータ経路容量について、少なくとも１つのユーザ定義のリソースの割り当てを受信する。システムは、少なくとも１つのリソース割り当てを制御するように動的に設定される１つ又は複数のレジスタを管理する。１又は複数の作業負荷がパーティションを介して実行されると、リソース割り当てにより、デバイス及び／又はデータ経路容量のユーザ定義の定量的尺度（数及び／又は百分率）が機能することが可能になる。システムにより、１又は複数のパーティションが、デバイスの帯域幅及び／又はデータ経路容量を共有することが可能になる。作業負荷は、ユーザ定義のリソース割り当てより少ない又はこれと等しいデバイスの特定の帯域幅及び／又はデータ経路容量を有するように実行される。システムは、各パーティション上で実行されている作業負荷を隔離し、これにより１又は複数のパーティション間の望ましくない干渉が最小になる。
【０００９】
本発明の例示的な実施形態の以下の詳細な説明において、本発明を実施することができる特定の例示的な実施形態が、当業者が本発明を実施することを可能にするように十分に詳細に説明されたが、他の実施形態が用いられてもよいこと、及び、本発明の精神又は範囲から逸脱することなく、論理的変更、アーキテクチャ上の変更、プログラム上の変更、機械的変更、電気的変更及び他の変更を行い得ることを理解すべきである。従って、以下の詳細な説明は、限定的な意味に解されるべきではなく、本発明の範囲は、添付の特許請求の範囲及びその等価物によって定められる。
【００１０】
図の説明において、同様の要素には、前の図のものと同様の名称及び参照符号が与えられる。後の図がその要素を異なる文脈において又は異なる機能を有するものとして利用する場合、その要素には、図番を表わす異なる先頭数字が与えられる。要素に割り当てられた特定の数字は、単に説明に役立つために与えられるものであり、説明される実施形態に対する如何なる（構造上又は機能上、或いはその他の）限定も意味することを意図しているものではない。
【００１１】
特定のコンポーネント、デバイス及び／又はパラメータ名（本明細書に説明された実行ユーティリティ／論理の関するものなど）の使用は単なる例示であり、本発明に対する如何なる限定を意味することも意図するものではないことが理解される。従って、本発明は、制限なく、本明細書においてコンポーネント／デバイス／パラメータを説明するのに利用される種々の名称／用語により実施することができる。本明細書で利用される各用語は、それが利用される文脈で与えられるその最も広い解釈が与えられるべきである。
【００１２】
ここで図面を参照し、図１から始めると、１つの実施形態において利用される例示的なデータ処理システム（ＤＰＳ）のブロック図表現が示される。ＤＰＳは、コンピュータ、携帯情報端末のような携帯機器、スマートフォン、及び／又は一般に処理装置と考えることができる他のタイプの電子機器とすることができる。図示のように、ＤＰＳ１００は、システム相互接続部／バス１１０を介してシステム・メモリ１１５に接続された少なくとも１つのプロセッサ又は中央処理装置（ＣＰＵ）１０５を含む。入力／出力（Ｉ／Ｏ）コントローラ１２０も、システム・バス１１０に接続され、この入力／出力（Ｉ／Ｏ）コントローラ１２０は、ポインティング・デバイス（又はマウス）１２５及びキーボード１２７が図示される入力デバイスに対する接続及び制御を提供する。Ｉ／Ｏコントローラ１２０はまた、ディスプレイ１２９が図示される出力デバイスに対する接続及び制御も提供する。さらに、マルチメディア・ドライブ１２８（例えば、コンパクト・ディスク読み取り／書き込み（ＣＤＲＷ）又はデジタル・ビデオ・ディスク（ＤＶＤ）ドライブ）及びＵＳＢ（ユニバーサル・シリアル・バス）ポート１２６が、Ｉ／Ｏコントローラ１２０に結合された状態で示される。マルチメディア・ドライブ１２８及びＵＳＢポート１２６は、データ／命令／コードを格納することができ、及び／又は、データ／命令／コードを取り出すことができる、取り外し可能ストレージ・デバイス（例えば、光ディスク又はサム・ドライブ）の挿入を可能にする。ＤＰＳ１００はまた、その中に／そこから、データ／命令／コードを格納／取り出すことができるストレージ１１７も含む。
【００１３】
ＤＰＳ１００はまた、これによりインターネットを一例する１つ又は複数のアクセス／外部ネットワーク１７０に、ＤＰＳ１００が接続することができる、ネットワーク・インターフェース・デバイス（ＮＩＤ）１５０を有するようにも示される。この実施において、インターネットは、伝送制御プロトコル／インターネット・プロトコル（ＴＣＰ／ＩＰ）プロトコル・スイートを利用して互いに通信する、ネットワーク及びゲートウェイの世界的な集合を表わす／である。ＮＩＤ１５０は、ネットワーク・アクセス・ポイントへの有線／無線接続を介して作動するように構成することができる。ネットワーク１７０は、インターネット又は広域ネットワーク（ＷＡＮ）のような外部ネットワーク、或いはイーサネット（ローカル・エリア・ネットワーク（ＬＡＮ））又は仮想プライベート・ネットワーク（ＶＰＮ）のような内部ネットワークとすることができる。１つの実施形態において、外部ネットワーク１７０への接続は、ＤＰＳ１００上での実行のためにデータ／命令／コードを提供することもできる１つ又は複数のサーバ１６５と共に確立することができる。
【００１４】
上述のＤＰＳ１００のハードウェア・コンポーネントに加えて、本発明の種々の特徴が、ソフトウェア（又は、ファームウェア）コード又は論理によって完成／支援される。例えば、ハイパーバイザ１９５は、複数のオペレーティング・システムが、ホスト・コンピュータ上で同時に実行されるのを可能にするコンピュータ・ソフトウェア／ハードウェアのプラットフォーム仮想化ソフトウェアである。ハイパーバイザ１９５は、ハードウェア制御部及びゲスト・オペレーティング・システム・モニタとしてＤＰＳ１００のハードウェア上で直接実行され、及び／又は、オペレーティング・システム環境内で実行されるソフトウェア・アプリケーションである。さらに、ソフトウェア（又は、ファームウェア）コード又は論理は、システム・メモリ１１５又は他のストレージ（例えば、ストレージ１１７）内に格納され、かつ、ＣＰＵ１０５によって実行される。従って、例えば、仮想マシン層１７５及びアプリケーション１３５を含む多数のソフトウェア／ファームウェア／論理コンポーネントが、システム・メモリ１１５内に示される。仮想マシン層１７５内では、例えばオペレーティング・システムＡ（ＯＳ  Ａ）１３０、ＯＳ  Ｂ１３２及びＯＳ  Ｎ１３８（ここで「Ｎ」は有限数を表わす）などの１つ又は複数のオペレーティング・システムが管理される。可能なオペレーティング・システムの例は、Ｍｉｃｒｏｓｏｆｔ  Ｃｏｒｐ．社の商標であるＭｉｃｒｏｓｏｆｔ  Ｗｉｎｄｏｗｓ（登録商標）、又は、Ｆｒｅｅ  Ｓｏｆｔｗａｒｅ  Ｆｏｕｎｄａｔｉｏｎ及びＴｈｅ  Ｌｉｎｕｘ  Ｍａｒｋ  Ｉｎｓｔｉｔｕｔｅの登録商標であるＧＮＵ（登録商標）／Ｌｉｎｕｘ（登録商標）である。仮想マシン層１７５は、ハイパーバイザ１９５と通信し、及び／又は、ハイパーバイザ１９５によって生成され、ハイパーバイザ１９５と関連した１つ又は複数のパーティションの作業負荷を管理する。同じく仮想マシン層１７５内には、リソース優先順位割り当て（ＲＰＡ）ユーティリティ１４０（ＲＰＡ論理を提供するために、ＣＰＵ１０５上で実行される）がある。実際の実施においては、ＲＰＡユーティリティ１４０を仮想マシン層１７５と組み合わせて又はこれに組み込んで、単一の実行可能なコンポーネントをもたらし、対応する組み合わせられたコードがＣＰＵ１０５により実行されるとき、個々のソフトウェア・コンポーネントの種々の機能をまとめて提供することができる。簡単にするために、後述されるように、ＲＰＡユーティリティ１４０は、特定の機能を提供する独立した又は別個のソフトウェア／ファームウェア・コンポーネントとして図示され、説明される。
【００１５】
１つの実施形態において、サーバ１６５がソフトウェア配備サーバを含み、ＤＰＳ１００は、ネットワーク・インターフェース・デバイス１５０を用いて、ネットワーク（例えば、インターネット１７０）を介してソフトウェア配備サーバ（１６５）と通信する。次に、ＲＰＡユーティリティ１４０は、ソフトウェア配備サーバ１６５を介して、ネットワークから／ネットワーク上に配備することができる。この構成を用いて、ソフトウェア配備サーバは、ＲＰＡユーティリティ１４０の実行と関連した機能の全てを実行する。従って、ＤＰＳ１００は、ＲＰＡユーティリティ１４０を実行するために、ＤＰＳ１００の内部計算リソースを用いる必要がない。
【００１６】
ＣＰＵ１０５は、ＲＰＡユーティリティ１４０、並びに、ＲＰＡユーティリティ１４０のユーザ・インターフェース・フィーチャ（feature）をサポートするＯＳ  Ａ１３０、ＯＳ  Ｂ１３２及びＯＳ  Ｎ１３８を実行する。説明される実施形態において、ＲＰＡユーティリティ１４０は、ＲＰＡユーティリティ１４０の機能的特徴とのユーザ対話又はその操作を可能にするための幾つかのグラフィカル・ユーザ・インターフェース（ＧＵＩ）を生成／提供する。ＲＰＡユーティリティによってサポート及び／又は実施される特定の機能は、その機能の実施を完成するために、プロセッサ及び／又はデバイスのハードウェアによって実行される処理論理を生成する。説明を簡単にするために、これらの種々の特徴を可能にするコードの集合体は、本明細書ではＲＰＡユーティリティ１４０と呼ばれる。ＲＰＡユーティリティ１４０によって提供され、かつ、本発明に特有であるソフトウェア・コード／命令／論理には、（ａ）１つ又は複数のデバイスについての少なくとも１つのリソース割り当てを受信するためのコード／論理、（ｂ）少なくとも１つのリソース割り当てを１つ又は複数のパーティションと関連付けるためのコード／論理、及び（ｃ）少なくとも１つのリソース割り当ての受信に応答して、少なくとも１つのリソース割り当てより少ないか又はそれに等しい容量で１つ又は複数のトランザクションを実行することを可能にするためのコード／論理、がある。例示的な実施形態によると、ＣＰＵ１０５がＲＰＡユーティリティ１４０を実行するとき、ＤＰＳ１００は、上述の機能的特徴及びさらなる特徴／機能を可能にする一連の機能的なプロセスを開始する。これらの特徴及び機能は、図２乃至図４の説明においてより詳細に後述される。
【００１７】
図１に示されるハードウェア・コンポーネント及び基本的構成が変わり得ることは、当業者であれば理解するであろう。ＤＰＳ１００内の例示的なコンポーネントは、網羅的であることを意図するものではなく、むしろ本発明を実施するために用いられる本質的なコンポーネントを強調表示するために示される。例えば、図示されたハードウェアに加えて又はその代わりに、他のデバイス／コンポーネントを用いてもよい。図示される例は、現在説明されている実施形態及び／又は一般的な発明に関してアーキテクチャ上の限定又は他の限定を意味することを意図するものではない。図１に示されるデータ処理システムは、例えば、Ａｄｖａｎｃｅｄ  Ｉｎｔｅｒａｃｔｉｖｅ  Ｅｘｅｃｕｔｉｖｅ（ＡＩＸ）オペレーティング・システム、又はＬＩＮＵＸオペレーティング・システムを実行している、ニューヨーク州Ａｒｍｏｎｋ所在のＩｎｔｅｒｎａｔｉｏｎａｌ  Ｂｕｓｉｎｅｓｓ  Ｍａｃｈｉｎｅｓ  Ｃｏｒｐｏｒａｔｉｏｎ社の製品である、ＩＢＭ  ｅＳｅｒｖｅｒ  ｐＳｅｒｉｅｓシステムとすることができる。
【００１８】
ここで図２を参照すると、仮想環境内で１つ又は複数のパーティションが実行されるマルチコア処理チップが示される。マルチコア処理チップ２５０は、パーティションＡ２２０、パーティションＢ２３０、及びパーティションＮ２９０（ここで「Ｎ」は有限数を表わす）を含む。マルチコア処理チップ２５０内には、ＲＰＡユーティリティ２４０、プロセッサ・バス２２２、メモリ・コントローラＡ２５２、メモリ・コントローラＢ２５４、バス・レジスタＡ２６０、バス・レジスタＢ２７０、及びバス・レジスタＣ２８０も含まれる。パーティションＡ２２０は、Ｌ１命令キャッシュ２１８、Ｌ１データ・キャッシュ２２８、及びＬ２／Ｌ３キャッシュ２３８を含む。マルチコア・チップ２５０上の第２のパーティションは、２つのＬ１命令キャッシュ２１８、２つのＬ１データ・キャッシュ２２８、及び２つのＬ２／Ｌ３キャッシュ２３８を含む。パーティションＮ２９０（ここで「Ｎ」は有限数である）は、マルチコア処理チップ２５０内の「Ｎ」番目のパーティションを表わす。パーティションＮは、１つ又は複数の（３として示される）Ｌ１命令キャッシュ２１８、１つ又は複数のＬ１データ・キャッシュ２２８、及び１つ又は複数のＬ２／Ｌ３キャッシュ２３８を含む。バス・レジスタＡ２６０は、パーティションＡ２２０とプロセッサ・バス２２２との間の通信手段である。バス・レジスタＢ２７０は、パーティションＢ２３０とプロセッサ・バス２２２との間の通信を可能にし、パーティションＮ２９０は、バス・レジスタＣ２８０を介してプロセッサ・バス２２２と通信する。
【００１９】
１つの実施形態において、システムの１つ又は複数のハードウェア機構が、１つ又は複数のリソース割り当ての実行を可能にする。ＲＰＡユーティリティ２４０は、共有されるシステムのリソースへのアクセスを抑制する論理を含む。ＲＰＡユーティリティ２４０は、システム・リソースを１つ又は複数のパーティションに割り当てるための１つ又は複数の割り当てを受信する。パーティションＡ２２０、パーティションＢ２３０、及びパーティションＮ２９０のようなパーティションは、仮想マシン層１７５（図１に示される）によってサポートされる隔離の論理ユニットであり、これにより１つ又は複数のオペレーティング・システムが実行される。パーティションＡ２２０、パーティションＢ２３０、及びパーティションＮ２９０は、それぞれ、バス・レジスタＡ２６０、バス・レジスタＢ２７０、及びバス・レジスタＣ２８０と関連付けられる。さらに、パーティションＡ２２０、パーティションＢ２３０、及びパーティションＮ２９０は、１つ又は複数のハードウェア・バスと関連付けられる。１つ又は複数のパーティションがリソース割り当てを受信すると、受信したリソース割り当てに従って、それぞれのバス・レジスタ（バス・レジスタＡ２６０、バス・レジスタＢ２７０及び／又はバス・レジスタＣ２８０）が設定される。
【００２０】
１つ又は複数のオペレーティング・システムのトランザクションが、パーティションと関連して実行されると、それぞれのバス・レジスタ（バス・レジスタＡ２６０、バス・レジスタＢ２７０、及びバス・レジスタＣ２８０）が、要求された割り当てを実行する。例えば、ＲＰＡユーティリティ２４０は、パーティションＡ２２０をサポートするリソースの使用の上限を２０％の容量に定めるユーザ定義（又は、デフォルト）の割り当てを受信する。この割り当てを実施するために、（共有リソースにアクセスするために）バス・レジスタＳ２６０により、１００のバス・サイクルごとに２０以下のアクセス（トランザクション）が可能になる。プロセッサ・バス２２２がビジー状態ではないとき（すなわち、他のパーティションからの待ち状態の要求がないとき）、リソースの許容量が緩和される。この場合、バス・レジスタＡ２６０により許容されるアクセス数は、最善努力方式（best-effort basis）で増加させ得る。１つ又は複数のトランザクションが実行されるとき、リソース割り当てにより、プロセッサ・バス２２２へのアクセスのユーザ定義の定量的尺度が可能になる。
【００２１】
１つの実施形態において、レジスタに多数のアクセスが割り当てられた場合、パーティションがバスにアクセスする度に、レジスタがデクリメントされる。バス・レジスタＡ２６０に２０のカウントが割り当てられる例においては、バス・レジスタＡ２６０のカウントは、１００のバス・サイクルが完了するごとに、２０にリセットされる。パーティションＡ２２０が、プロセッサ・バス２２２への割り当て量（割り当てられたアクセス数）を消費すると、バス・レジスタＡ２６０のカウントはゼロに達する。別のパーティションからバスにアクセスする待ち状態のトランザクションがないときにのみ、パーティションＡ２２０によるプロセッサ・バス２２２へのさらなるアクセスが可能になり、そのため、パーティションは、ユーザ定義のリソース割り当てを消費しなかった（すなわち、プロセッサ・バス２２２への割り当てられた数／容量のアクセスを消費した）。
【００２２】
別の実施形態において、１つ又は複数のオペレーティング・システムが、パーティションＡ２２０、パーティションＢ２３０、及びパーティションＮ２９０と関連付けられる。バス・レジスタＡ２６０、バス・レジスタＢ２７０、バス・レジスタＣ２８０、及び／又は１つ又は複数の他のレジスタが、パーティションＡ２２０、パーティションＢ２３０、及びパーティションＮ２９０と関連付けられる。バス・レジスタＡ２６０、バス・レジスタＢ２７０、バス・レジスタＮ２８０、及び／又は１つ又は複数の他のレジスタは、ＲＰＡユーティリティ２４０（及び／又は、１つ又は複数のオペレーティング・システム）を介して、１つ又は複数のリソース割り当てを受信する。リソース割り当ては、１つ又は複数のバス・レジスタＡ２６０、バス・レジスタＢ２７０、及び／又はバス・レジスタＣ２８０を介して実施される。
【００２３】
１つの実施形態において、バス・レジスタＢ２７０を、各々がバスへの特定のプロセッサ・コアのアクセスを制御する複数のレジスタにより実装することができる。図２を参照すると、パーティションＢ２３０は、２つのＬ２／Ｌ３キャッシュ２３８と共に４つのプロセッサ・コアを用いるように示される。１つの実施形態において、バス・レジスタＢ２７０は、各々がバス２２２への１つのＬ２／Ｌ３キャッシュ（２３８）のアクセスをゲート制御する２つの物理的レジスタを介して実装することができる。バス・レジスタＡ２６０、バス・レジスタＢ２７０、バス・レジスタＣ２８０、及び／又は１つ又は複数の他のレジスタは、プロセッサ・バス２２２と通信して、パーティションＢ２３０についてのバス・アクセスの計算が適切に行われることを確実にする。例えば、プロセッサ・バス２２２へのＬ２／Ｌ３キャッシュ（２３８）の１つによるアクセスにより、両方のレジスタにおいて割り当てカウントが同時にデクリメントされる。こうした実施は、Ｌ２／Ｌ３キャッシュ２３８のキャッシュ設計に組み込まれる。
【００２４】
別の実施形態において、ハイパーバイザ（図１のハイパーバイザ１９５と同様の）は、ハードウェアの利用を最大にするために、パーティションのプリエンプション（preemption）を可能にする。バス・レジスタＡ２６０は、パーティションＡ２２０のソフトウェア文脈の一部となる。同様に、バス・レジスタＡ２６０は、パーティションＢ２３０のレジスタＢ２７０のソフトウェア文脈の一部となり、パーティションＮ２９０のレジスタＮ２８０のソフトウェア文脈の一部となる。対応するパーティション（例えば、パーティションＡ２２０、パーティションＢ２３０、及びパーティションＮ２９０）が、それぞれ、割り当て解除される又は再割り当てされるとき、ハイパーバイザは、バス・レジスタＡ２６０、バス・レジスタＢ２７０、及び／又はバス・レジスタＣ２８０の値を格納及び再格納しなければならない。
【００２５】
別の実施形態において、ハイパーバイザは、ハードウェアの利用を最大にするために、パーティションのプリエンプションを可能にする。パーティションにおけるスワッピング（例えば、システム（例えば、サーバ）が物理的に使用可能であるより多い、ＲＡＭのようなリソースの割り当てを可能にする）時に、ハイパーバイザは、バス・レジスタを対応するユーザ定義の値に再初期化する。
【００２６】
図３は、リソース管理グラフィカル・ユーザ・インターフェース（ＧＵＩ）を示す。リソース管理ＧＵＩ３０５は、１つ又は複数のリソースのカテゴリであるリソース３１５、パーティションのリストであるパーティション３０２、リソース割り当て３７２、利用可能な尺度３７０、及びドロップダウン・メニュー選択３７５を含む。リソース３１５は、これらに限られるものではないが、メモリ・バス３６２、Ｉ／Ｏバス３６４、コヒーレンス・バス３６６、及びスケーラビリティ・ポート３６８を含む。パーティション３０２は、これらに限られるものではないが、パーティションＡ３２０、パーティションＢ３３０、及びパーティションＮ３４０（ここで「Ｎ」は有限数である）を含む。
【００２７】
１つの実施形態において、少なくとも１つのリソース割り当てが、１つ又は複数のデバイス又はリソースと関連付けられる。パーティションＡ３２０、パーティションＢ３３０、及びパーティションＮ３４０は、仮想環境と関連付けられ、パーティション・リストはリソース管理ＧＵＩ３０５に出力される。パーティション・リストは、パーティションが修正された（仮想環境に加えられた又はこれから取り去られた）とき、動的に更新される。メモリ・バス３６２、Ｉ／Ｏバス３６４、コヒーレンス・バス３６６、及びスケーラビリティ・ポート３６８のようなリソース３１５は、各々のパーティションと関連付けられる。パーティションと関連したリソースは、予め定義される及び／又はユーザ定義される。１つ又は複数のリソース（３１５）がデータ処理システム（図１の１００）に加えられた及び／又はこれから取り去られたとき、リソース管理ＧＵＩ３０５は動的に更新される。
【００２８】
別の実施形態において、１つ又は複数のデバイスについて、少なくとも１つのリソース割り当てを受信する。リソース管理ＧＵＩ３０５のリソース割り当て３７２、利用可能な尺度３７０、及びドロップダウン・メニュー選択３７５は、（図１の）ＲＰＡユーティリティ１４０によって、１つ又は複数のユーザ定義の及び／又は予め定義された入力を受信することを可能にする。例えば、リソース割り当て３７２は、これに限られるものではないが、１つ又は複数のトランザクションの実行中に利用されるデバイス帯域幅の百分率及び／又は使用されるデバイスの数を含むことができる定量的尺度の入力である。利用可能な尺度３７０は、選択されるべき予め定義された又はデフォルトの定量的尺度（それぞれのリソース及びパーティションと関連した）、又は、自動的に選択された尺度を示す。ドロップダウン・メニュー選択３７５が選択されると、利用可能な尺度３７０が表示される。データ処理システム内で１つ又は複数の修正が検出及び／又は受信されると、リソース３１５、パーティション３０２、及び利用可能な尺度３７０は動的に更新される。
【００２９】
１つの実施形態において、少なくとも１つのリソース割り当てを受信すると、１つ又は複数のデバイスが、少なくとも１つのリソース割り当てより少ない又はこれと等しい容量で１つ又は複数のトランザクションを実行することが可能になる。リソース管理ＧＵＩ３０５は、１つ又は複数のデバイス（リソース３１５）についてのユーザ定義のリソース割り当て（リソース割り振り）を受信する。例えば、１つ又は複数のトランザクション中、メモリ・バス３６２は、パーティションＡ３２０については３０％で又は３０％未満で動作し、メモリ・バス３６２は、パーティションＢ３３０について２５％で動作する。リソース管理ＧＵＩ３０５が、リソース割り当て３７２についてのユーザ定義の入力を受信すると、１つ又は複数のレジスタは、ユーザ定義のリソース割り当てを実行するように動的に調整される。ユーザ定義のリソース割り当ての実行により、特定のデバイス（リソース）が、関連したパーティションについてのユーザ定義の容量（帯域幅）で動作することが可能になる。リソース管理ＧＵＩ３０５は、（図１の）仮想マシン層１７５と直接関連付けられる。仮想マシン層１７５は、リソース管理ＧＵＩ３０５内に入力された値によって指定されるように、レジスタ（パーティション３０２と関連した）へのアクセスを制御／管理／提供する。
【００３０】
図４は、例示的な実施形態の上記のプロセスを完成させる方法を示すフローチャートである。図４に示される方法は、図１−図３に示されるコンポーネントを参照して説明することができるが、これは便宜のためだけのものであり、種々の方法を実施するときに、代替的なコンポーネント及び／又は構成を用い得ることを理解すべきである。方法の主要な部分は、ＤＰＳ１００（図１）内のプロセッサ１０５上で実行され、ＤＰＳ１００の／ＤＰＳ１００上の特定の動作を制御するＲＰＡユーティリティ１４０によって完成することができ、従って、この方法は、ＲＰＡユーティリティ１４０及びＤＰＳ１００両方の観点から説明される。
【００３１】
図４は、１つ又は複数のリソースの割り当てを受信したとき、１つ又は複数のトランザクション要求を実行するためのプロセスを示す。図４のプロセスは、イニシエータ・ブロック４００で始まり、１つ又は複数のレジスタが各パーティションにおけるオペレーティング・システムと関連付けられるブロック４０２に進む。ブロック４０４において、各々のパーティションについて、１つ又は複数のユーザ定義（又はデフォルト）のリソース割り当てを受信する。ブロック４０６において、リソース割り当てを実施するように、１つ又は複数のレジスタを動的に設定する。ブロック４０８において、１つ又は複数のトランザクション要求を受信する。
【００３２】
ブロック４１０において、トランザクション要求に必要とされる帯域幅／容量が、１つ又は複数の予め設定されたリソース割り当て（又は、割り振り）を上回るかどうかを判断する。トランザクション要求についての帯域幅／容量が１つ又は複数のリソース割り当てを上回る場合、プロセスはブロック４１４に続く。トランザクション要求についての帯域幅／容量が１つ又は複数のリソース割り当てを上回らない場合には、プロセスはブロック４１２に続く。ブロック４１４において、容量が使い果たされていないパーティションからのトランザクション要求があるかどうかについての判断を行う。容量が使い果たされていないパーティションからのトランザクション要求がある場合には、プロセスはブロック４１６に続く。ブロック４１６において要求は再実行され、プロセスはブロック４０８に続く。容量が使い果たされていないパーティションからのトランザクション要求がない場合には、プロセスはブロック４１２に進む。ブロック４１２において、トランザクションが実行され、１つ又は複数のリソース割り当てを実施する。ブロック４１８において、プロセスが終了する。
【００３３】
上記のフローチャートにおいて、方法のうちの１つ又は複数は、コンピュータ可読コードを含むコンピュータ可読ストレージ媒体において具体化され、コンピュータ可読コードがコンピューティング・デバイス上で（処理ユニットにより）実行されたときに一連のステップが実行される。幾つかの実施において、方法の特定のプロセスは、本発明の精神及び範囲から逸脱することなく、組み合わされ、同時に若しくは異なる順序で実行され、又は場合によっては省略される。従って、方法のプロセスは、特定のシーケンスで説明及び図示されるが、プロセスの特定のシーケンスの使用は、本発明に対する如何なる限定を意味することも意図するものではない。本発明の精神又は範囲から逸脱することなく、プロセスのシーケンスに対して変更を行うことができる。従って、特定のシーケンスの使用は、制限的な意味で解釈されるべきではなく、本発明の範囲は、添付の特許請求の範囲及びその等価物にまで及ぶ。
【００３４】
当業者には理解されるように、本発明は、方法、システム、又はコンピュータ・プログラムとして具体化することができる。従って、本発明は、完全にハードウェアの実施形態、完全にソフトウェアの実施形態（ファームウェア、常駐ソフトウェア、マイクロコードなどを含む）、又はソフトウェア及びハードウェアの態様を組み合わせた実施形態の形態をとることができ、これらは全て、本明細書において、一般的に「回路」、「モジュール」、「論理」又は「システム」と呼ぶことができる。さらに、本発明は、媒体内又は媒体上に具体化されたコンピュータ使用可能プログラム・コードを有する、コンピュータ使用可能ストレージ媒体上のコンピュータ・プログラムの形態をとることができる。
【００３５】
さらに理解されるように、本発明の実施形態におけるプロセスは、ソフトウェア、ファームウェア、マイクロコード、又はハードウェアの任意の組み合わせを用いて実施することができる。本発明をソフトウェアで実施するための準備ステップとして、プログラミング・コード（ソフトウェアであれ、ファームウェアであれ）は、典型的には、固定（ハード）ドライブ、ディスケット、磁気ディスク、光ディスク、磁気テープ、ＲＡＭ、ＲＯＭ、ＰＲＯＭ等のような半導体メモリといった１つ又は複数の機械可読ストレージ媒体内に格納され、これによって本発明による製品が製造される。コンピュータ・プログラミング・コードを含む製品は、該コードをストレージ・デバイスから直接実行することによって、該コードをストレージ・デバイスからハードディスク、ＲＡＭ等のような別のストレージ・デバイスにコピーすることによって、或いは、デジタル及びアナログ通信リンクのような伝送タイプの媒体を用いて該コードを遠隔実行のために伝送することによって用いられる。媒体は、電子、磁気、光学、電磁気、赤外線、又は半導体システム（又は、装置若しくはデバイス）、或いは伝搬媒体とすることができる。さらに、媒体は、実行システム、装置又はデバイスによって、或いはそれらと接続して使用するためのプログラムを含み、格納し、通信し、伝搬し、又は転送することができるあらゆる装置とすることができる。本発明の方法は、説明された実施形態に従ったコードを含む１つ又は複数の機械可読ストレージ・デバイスを、適切な処理ハードウェアと組み合わせて、内部に含まれるコードを実行することにより実施することができる。本発明を実施するための装置は、本発明に従ってコード化されたプログラムへのネットワーク・アクセス（サーバを介した）を含む又は有する１つ又は複数の処理デバイス及びストレージ・システムとすることができる。一般に、コンピュータ、コンピュータ・システム、又はデータ処理システムという用語は、メモリ媒体からの命令／コードを実行する、プロセッサ（又は処理ユニット）を有するあらゆるデバイスを含むように広く定義することができる。
【００３６】
従って、本発明の例示的な実施形態は、ソフトウェアがインストールされた（又は実行された）完全に機能的なコンピュータ（サーバ）システムに即して説明されるが、当業者であれば、本発明の例示的な実施形態のソフトウェアの態様は、種々の形態のプログラムとして分散させ得ること、及び、本発明の例示的な実施形態は、分散を実際に実行するのに用いられる特定のタイプの媒体にかかわらず、等しく適用されることを理解するであろうことは重要である。一例として、媒体のタイプの非排他的なリストは、フロッピーディスク、サム・ドライブ、ハードディスク・ドライブ、ＣＤ−ＲＯＭ、ＤＶＤのような記録可能型（有形）媒体、並びに、デジタル及びアナログ通信リンクのような伝送型媒体を含む。
【００３７】
本発明を例示的な実施形態を参照して説明してきたが、当業者であれば、本発明の範囲から逸脱することなく、種々の変更を行うことができ、その要素を均等物に置換することができることを理解するであろう。さらに、本発明の本質的な範囲から逸脱することなく、特定のシステム、デバイス、又はコンポーネントを本発明の教示に適合させるように、多くの修正を行うことができる。従って、本発明は、本発明を実行するための開示された特定の実施形態に限定されるものではなく、特許請求の範囲内にある全ての実施形態を含むように意図されるものである。さらに、第１、第２などの用語の使用は、如何なる順序又は重要性をも示すものではなく、１つの要素を別の要素と区別するために用いられるものである。
【符号の説明】
【００３８】
１００：データ処理システム（ＤＰＳ）
１０５：中央処理装置（ＣＰＵ）
１１０：システム・バス
１１５：システム・メモリ
１１７：ストレージ
１２０：Ｉ／Ｏコントローラ
１２５：ポインティング・デバイス（マウス）
１２６：ＵＳＢポート
１２７：キーボード
１２８：マルチメディア・ドライブ
１２９：ディスプレイ
１３０：オペレーティング・システム（ＯＳ）Ａ
１３２：ＯＳ  Ｂ
１３５：アプリケーション
１３８：ＯＳ  Ｎ
１４０、２４０：リソース優先順位割り当て（ＲＰＡ）ユーティリティ
１５０：ネットワーク・インターフェース・デバイス（ＮＩＤ）
１６５：サーバ
１７０：ネットワーク
１７５：仮想マシン層
１９５：ハイパーバイザ
２１８：Ｌ１命令キャッシュ
２２０、３２０：パーティションＡ
２２２：プロセッサ・バス
２２８：Ｌ１データ・キャッシュ
２３０、３３０：パーティションＢ
２３８：Ｌ２／Ｌ３キャッシュ
２５０：マルチコア処理チップ
２５２：メモリ・コントローラＡ
２５４：メモリ・コントローラＢ
２６０：バス・レジスタＡ
２７０：バス・レジスタＢ
２８０：バス・レジスタＣ
２９０、３４０：パーティションＮ
３０２：パーティション
３０５：リソース管理グラフィカル・ユーザ・インターフェース（ＧＵＩ）
３１５：リソース
３６２：メモリ・バス
３６４：Ｉ／Ｏバス
３６６：コヒーレンス・バス
３６８：スケーラビリティ・ポート
３７０：利用可能な尺度
３７２：リソース割り当て
３７５：ドロップダウン・メニュー選択
【図１】
0005607732.tif 000002
【図２】
0005607732.tif 000003
【図３】
0005607732.tif 000004
【図４】
0005607732.tif 000005