(57)【要約】【課題】論理的に区分された仮想プロセッサ間などでＣＰＵの配分を調整するための機器、プログラム製品、および方法を提供すること。【解決手段】仮想プロセッサは、それ自体の実行の前提となっているオカレンスを促進するためにＣＰＵを譲渡することができる。したがって、プログラム・コードは、この引き渡されたＣＰＵを指定された仮想プロセッサにディスパッチすることができる。
2005501333.tif 000002
【特許請求の範囲】
【請求項１】
複数のパーティションをサポートし、第１のパーティションが少なくとも１つのＣＰＵを共用する複数の仮想プロセッサを含む、論理的に区分されたデータ処理システム内で、仮想プロセッサを譲渡する方法であって、
譲渡側仮想プロセッサに、前記複数の仮想プロセッサのうちからターゲット仮想プロセッサを指定することを含めて、前記仮想プロセッサがその上で実行している前記ＣＰＵの譲渡を要求すること、および
前記要求された譲渡に応答して前記ＣＰＵによる実行のため前記ターゲット仮想プロセッサに切り替えることを含む方法。
【請求項２】
前記ターゲット仮想プロセッサが、前記譲渡側仮想プロセッサが制御する前記ＣＰＵへのアクセスを必要とする、請求項１に記載の方法。
【請求項３】
前記仮想プロセッサからのyieldコマンド（譲渡コマンド）を生成することをさらに含み、前記yieldコマンドが、前記ターゲット仮想プロセッサに関するポインタおよび状況情報を含む、請求項１に記載の方法。
【請求項４】
状況情報を前記ターゲット仮想プロセッサに割り当てることをさらに含む、請求項１に記載の方法。
【請求項５】
ターゲット・カウントを前記ターゲット仮想プロセッサに割り当てることをさらに含む、請求項１に記載の方法。
【請求項６】
前記ターゲット・カウントを前記yieldコマンド中で伝えられる提示されたカウントと比較することをさらに含む、請求項５に記載の方法。
【請求項７】
yield-to-activeコマンドに応答して、前記譲渡を中断することをさらに含む、請求項１に記載の方法。
【請求項８】
前記譲渡側仮想プロセッサを、前記ターゲット・プロセッサを待っているものとして指定することをさらに含む、請求項１に記載の方法。
【請求項９】
前記ターゲット仮想プロセッサを、前記ターゲット仮想プロセッサを待っている譲渡側プロセッサがあるものとして指定することをさらに含む、請求項１に記載の方法。
【請求項１０】
前記譲渡側仮想プロセッサの状態を記憶することをさらに含む、請求項１に記載の方法。
【請求項１１】
複数の論理パーティションを含み、第１の論理パーティションが少なくとも１つのＣＰＵを共用する複数の仮想プロセッサを含む、論理的に区分されたコンピュータと、
譲渡側仮想プロセッサによって制御されるＣＰＵの譲渡を求める要求を開始するように構成され、さらに前記ＣＰＵの制御を前記譲渡側仮想プロセッサから前記ターゲット仮想プロセッサへと論理的に再割当てするように構成され、前記要求が、前記複数の仮想プロセッサのうちからターゲット仮想プロセッサを指定する、前記コンピュータ中に常駐するプログラムとを備える機器。
【請求項１２】
前記ターゲット仮想プロセッサが、前記譲渡側仮想プロセッサが制御する前記ＣＰＵへのアクセスを必要とする、請求項１１に記載の機器。
【請求項１３】
前記プログラムが、前記仮想プロセッサからのyieldコマンドの生成を開始し、前記yieldコマンドが、前記ターゲット仮想プロセッサに関するポインタおよび状況情報を含む、請求項１１に記載の機器。
【請求項１４】
前記プログラムが、前記ターゲット仮想プロセッサに対するターゲット・カウントの割当てを開始する、請求項１１に記載の機器。
【請求項１５】
前記プログラムが、前記ターゲット・カウントと前記yieldコマンド中で伝えられる提示されたカウントの比較を開始する、請求項１４に記載の機器。
【請求項１６】
前記プログラムが、yield-to-activeコマンドに応答して前記譲渡の中断を開始する、請求項１１に記載の機器。
【請求項１７】
前記プログラムが、前記譲渡側仮想プロセッサを前記ターゲット・プロセッサを待っているものとして指定することを開始する、請求項１１に記載の機器。
【請求項１８】
前記プログラムが、前記ターゲット仮想プロセッサを前記ターゲット仮想プロセッサを待っている譲渡側プロセッサがあるものとして指定する、請求項１１に記載の機器。
【請求項１９】
（ａ）論理的に区分されたデータ処理システム中の複数の仮想プロセッサ間での、譲渡側仮想プロセッサによって制御されるＣＰＵの譲渡を求める要求を開始するように構成され、さらに前記ＣＰＵの制御を前記譲渡側仮想プロセッサから前記ターゲット仮想プロセッサへと論理的に再割当てするように構成され、前記要求が複数の仮想プロセッサのうちからターゲット仮想プロセッサを指定する、プログラムと、
（ｂ）前記第１のプログラムを保持する信号保持媒体とを含む、プログラム製品。
【請求項２０】
前記信号保持媒体が、記録可能な媒体および伝送タイプの媒体のうちの少なくとも一方を含む、請求項１９に記載のプログラム製品。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、計算機システムに関し、より詳細には、論理的に区分されパーティションが中央演算処理装置（ＣＰＵ）を共用する環境内でプロセッサを譲渡すること（yielding）に関する。
【背景技術】
【０００２】
多くの計算アプリケーションの速度および効率は、処理資源の利用可能性に依存する。この目的で、インターナショナル・ビジネス・マシーンズ・コーポレーションによって開発された「仮想マシン」設計などの計算機アーキテクチャは、複数のプロセス間で共通の処理資源を共用する。かかるアーキテクチャは、従来技術では、１つまたは複数の物理的な制御装置または中央演算処理装置（ＣＰＵ）を有する１台の計算機を利用することができる。ＣＰＵは、複数の仮想プロセッサをシミュレートするように構成されたソフトウェアを実行することができる。
【０００３】
かかるマルチプロセッサ環境は、論理的「パーティションの区分（partitioning）」の概念的な実施をサポートする。このパーティションの区分は、割当てに適したプログラム式アーキテクチャ、および計算機資産の共用をもたらす。１つのパーティションは、論理的に、アドミニストレータによって割り当てられる、計算機の複数のＣＰＵ、メモリおよびその他の資源の一部分を論理的に含むことができる。したがって、アドミニストレータは、同じ資源を複数のパーティションに割り付けることができる。各パーティションは、複数の仮想プロセッサに加えて、さらにオペレーティング・システムのホスティングすることができる。このようにして、各パーティションは、ほとんどまるで別のコンピュータであるかのように動作する。
【０００４】
原理的には、各仮想プロセッサは、その基礎となる物理的なマシンの物理的な資源の多くにアクセスすることができる。資源の例には、ＣＰＵに加えて、メモリ資産およびハードウェア・レジスタが含まれ得る。仮想プロセッサはさらに、異なる仮想プロセッサ間などで処理サイクルの割付けを部分的に指示する優先順位方式またはスケジュールを共用することができる。基礎となる「ハイパーバイザ」またはパーティション・マネージャと呼ばれるプログラムが、この方式を使用して、各仮想プロセッサにＣＰＵを割り当て、ディスパッチすることができる。例えば、ハイパーバイザは、オペレーティング・システムからの資源要求を遮って、それらを全体にわたって共用し割り付けることができる。
【０００５】
このようにして、仮想プロセッサは、ホストのパーティションの実行の論理スレッドとして働く。したがって、仮想プロセッサは、資源を共用しながら別々に命令を実行することができる。一部の物理的な資産の利用を複製することにより、パーティションに区分された環境は、性能と効率をさらに向上させることができる。パーティションのプログラム可能な柔軟性を用いて、さらに、再ブートすることなく負荷の変化に動的に応答できるようにすることができる。例えば、１０個の仮想プロセッサを含む２つのパーティションがそれぞれ、再ブートまたはオペレータの介入を必要とせずに、作業負荷がシフトするにつれて、共用物理システムの１０個のＣＰＵをすべて譲り受けることができる。
【０００６】
バランスのとれた資源の割付けを促進するために、アドミニストレータは、仮想プロセッサがアクセスすることができる資源数に制約を設けることができる。例えば、ハイパーバイザは、ある仮想プロセッサに利用可能なＣＰＵの５０％より多くを決してディスパッチしないようにすることもできる。同様に、このハイパーバイザは、あるＣＰＵのある仮想プロセッサによる使用が指定された期間を確実に超過しないようにすることもできる。このようにして、その仮想プロセッサにＣＰＵの「タイム・スライス」を割り付けることができ、タイム・スライスの満了とともに、ハイパーバイザはその仮想プロセッサのＣＰＵを優先使用（preempt）することができる。同様なプログラミングをすることにより、１つのプロセッサが実行するのを待つ代わりに、理論的には多数のプロセッサの間で複雑なアプリケーションを配分することができる。しかし、かかるマルチプロセッシング・システムがもたらす柔軟性にもかかわらず、資源割付けに関連する複雑さが残る。一部のかかる障害は、オペレーティング・システムの動的な絡み合った処理要件から生じる。例えば、ある仮想プロセスが開始されるには、他のプロセスが以前に実行されていることが前提となることがある。かかる依存性のために、マルチ処理アプリケーションにそれ自体の複雑さおよび非効率性が導入されることがある。共用プロセッサ環境では、仮想プロセッサに関して同じ障害が生ずる可能性がある。例えば、ハイパーバイザは、それ自体のＣＰＵを得るためにスピン・ロック（spin-lock）を保持している前提として必要な（prerequisite）仮想プロセッサを待ちながら、スピン・ロックを要求している仮想プロセッサにＣＰＵを割り当てることもできる。したがって、割り当てられたＣＰＵがその仮想プロセッサを実行できないだけでなく、そのパーティション内の他の仮想プロセッサを実行することもできない。
【０００７】
アドミニストレータによっては、プログラムされた譲渡機能（yield function）を導入することにより、マルチプロセッサの効率の悪さに対処しようと試みるものもいる。例えば、仮想プロセッサは、スピン（spin）しようとしているときはいつでもハイパーバイザに対してyield-to-activeコマンドを発行することができる。仮想プロセッサは、実行すべき不可欠なプロセス、または利用可能となる資源を待つときに、「スピンする」ことができる。資源の保有者（holder）がアクティブでないことがあるので、その仮想プロセッサは、スピンしている間、ＣＰＵサイクルを浪費することになる。yield-to-activeコマンドに応答して、仮想プロセッサは、譲渡状態に入り、そのＣＰＵを解放することができる。ハイパーバイザは、譲渡されるＣＰＵをスケジュール上に提示される次の仮想プロセッサに再割り付けすることができる。
【０００８】
かかる技術は、資源の管理の改善をもたらすが、それにもかかわらず、効率が悪い。すなわち、譲渡プロセスは、ハイパーバイザが諸ＣＰＵを他のすべての仮想プロセッサに順次割り付けるのを待ちながら、しばしば長時間の間、非アクティブ状態にとどまらねばならない。複数の処理レイヤおよび反復とあいまって、かかる非アクティブ状態により、処理速度が遅くなり、効率が悪くなる。
【発明の開示】
【発明が解決しようとする課題】
【０００９】
したがって、物理的な計算機資源を管理するより有効な方法が必要とされている。
【課題を解決するための手段】
【００１０】
本発明の原理による一実施形態は、論理的に区分されたデータ処理システム内でＣＰＵを譲渡するように構成された機器、方法、およびプログラム製品を含む。かかるシステムは、複数の仮想プロセッサをサポートすることができる。したがって、この実施形態では、譲渡側仮想プロセッサからの要求を開始することができる。この要求により、譲渡側仮想プロセッサによって制御されるＣＰＵの譲渡を促すことができる。より詳細には、この要求は、複数の仮想プロセッサのうちからターゲット仮想プロセッサを指定することができる。例えば、その信号は、ターゲット・プロセッサに関するポインタまたは状況情報あるいはその両方を含むことができる。
【００１１】
ターゲット仮想プロセッサは、譲渡側仮想プロセッサが制御し、その譲渡を要求するＣＰＵに対してアクセスする必要があることがある。その場合、この実施形態では、ＣＰＵの制御を譲渡側仮想プロセッサからターゲット仮想プロセッサに論理的に再割当てし、または「切り替える」ことができる。ＣＰＵをターゲット仮想プロセッサにディスパッチする前に、ハイパーバイザは、譲渡側仮想プロセッサが依然として非アクティブ状態であり、ターゲット仮想プロセッサ自体がさらに譲渡状態にないことを検証することができる。ハイパーバイザはさらに、ディスパッチャに制御を渡す前に、譲渡側ハイパーバイザの状態を保存することができる。
【００１２】
本発明の以上およびその他の目的と利点は、添付図面およびその説明から明らかになるであろう。プログラム・コードは、譲渡側仮想プロセッサの状態を記憶することができる。
【００１３】
本明細書に組み込まれ、その一部を構成する添付図面は、本発明の実施形態を示し、上記本発明の一般的な説明および以下の実施形態の詳細な説明と共に、本発明の原理を説明するのに役に立つ。
【発明を実施するための最良の形態】
【００１４】
本発明の一実施形態は、論理的に区分された仮想プロセッサ間などで調整し、ＣＰＵを再配分するための機器、プログラム製品、および方法を含み得る。この実施形態では、それ自体の実行の前提となっているオカレンス（occurence）を促進するためにＣＰＵを譲渡することができる。一般的に、この実施形態では、ＣＰＵをターゲット仮想プロセッサに効率的に譲渡することによって仮想プロセッサの実行を調整することができる。
【００１５】
より詳細には、譲渡側仮想プロセッサが「ターゲット」仮想プロセッサを決定し、指定することができる。ターゲット・プロセッサの一例は、譲渡側仮想プロセッサによって保持されるＣＰＵを必要とすることがある。ターゲット・プロセッサは、さらに譲渡側プロセッサの実行の前に、必要とされる条件を実施する（embody）ことができる。この実施形態の譲渡機能により、ハイパーバイザが、譲渡側プロセッサによって引き渡されるＣＰＵまたはメモリ資源を指定された仮想プロセッサに割り付けることを可能にすることができる。ターゲット・プロセッサをイネーブル状態にする際に、この実施形態の方法では、譲渡側プロセッサの実行を妨げる条件を取り除くことができる。かかる実施形態の実行に適した環境を図１および図２に示す。
【００１６】
ハードウェアおよびソフトウェア環境
図面を参照すると、図１に、本発明によるデータ処理機器、すなわちコンピュータ１０が示されている。複数の図面にわたって、同じ番号は同様な部品を示す。機器１０は、例えばネットワーク・サーバ、中規模コンピュータ、メインフレーム・コンピュータなど複数のマルチユーザ・コンピュータ・システムのどれかを一般的に表す。しかし、本発明がその他のデータ処理機器、例えばワークステーション、デスクトップ・コンピュータ、ポータブル・コンピュータなどのスタンドアロンまたはシングルユーザのコンピュータ・システム、あるいは埋込み型制御装置など他の計算機装置などの形でも実装できることを理解されたい。機器１０の適した一実装形態は、インターナショナル・ビジネス・マシーンズ・コーポレーションから市販のＡＳ／４００またはｅシリーズ・コンピュータなどの中規模コンピュータである。
【００１７】
機器１０は一般に、主記憶装置１４、例えばＤＲＡＭ（dynamic randomaccess memoryダイナミック・ランダム・アクセス・メモリ）のアレイを含むメモリ・サブシステムに結合された１つまたは複数のシステム・プロセッサ１２を含む。一般に１つまたは複数レベルのデータ・キャッシュ、命令キャッシュ、または組合せキャッシュあるいはそれらの組合せを含むキャッシュ・サブシステム１６が、プロセッサ１２と主記憶装置１４の間に介在するものとして示されており、あるキャッシュは当技術分野においてよく知られているように個々のプロセッサまたは複数のプロセッサにサービスするようになっている。さらに、主記憶装置１４は、システム・バス１８、および複数のインターフェース装置、例えば、Ｉ／Ｏバス接続インターフェース２０、ワークステーション制御装置２２、および記憶制御装置２４を介して複数のタイプの外部（Ｉ／Ｏ）装置に結合されている。Ｉ／Ｏバス接続インターフェース２０、ワークステーション制御装置２２、および記憶制御装置２４のそれぞれが１つまたは複数の外部ネットワーク２６、１つまたは複数のワークステーション２８、あるいはＤＡＳＤ（directaccess storage device直接アクセス記憶装置）３０などの１つまたは複数の記憶装置あるいはこれらの組合せに対する外部アクセスを実現する。
【００１８】
図２に、パーティション・マネージャすなわちハイパーバイザ４６によって管理される複数の論理パーティション４０、４２、４４を含むコンピュータ１０上の論理的に区分された計算機環境を実装するのに利用される主要なソフトウェア構成要素および資源をより詳細に示す。当技術分野でよく知られているように任意数の論理パーティションをサポートすることができる。
【００１９】
この実装形態の例では、論理パーティション４０は、一次パーティションとして動作し、論理パーティション４２および４４は、二次パーティションとして動作する。この文脈における一次パーティションは、コンピュータ１０上の二次論理パーティションのパワーオンもしくはパワーオフの取扱い、または二次論理パーティションのメモリ・ダンプの開始などコンピュータのパーティション管理機能の一部を分担する。したがって、ハイパーバイザ４６の一部を、一次パーティション４０中に常駐するオペレーティング・システム５２中に配置された一次パーティション制御ブロック５０で示している。すべての論理パーティションからアクセス可能な他のパーティション管理サービスを共用サービス・ブロック４８で示す。しかし、本発明による他の実装形態では、パーティション管理機能を特定の論理パーティション内で実装する必要はない。
【００２０】
各論理パーティションは、オペレーティング・システム（例えば、論理パーティション４０、４２、および４４に対するそれぞれのオペレーティング・システム５２、５４、および５６）を利用し、このオペレーティング・システムが、パーティションに区分されていないコンピュータのオペレーティング・システムと同様に論理パーティションの一次動作を制御する。各論理パーティション４０〜４４は、仮想メモリ６０で示される別々のメモリ空間で実行する。さらに、各論理パーティション４０〜４４には、静的にまたは動的にあるいはその両方でコンピュータ１０中の利用可能な資源の一部分が割り付けられる。例えば、各論理パーティションは、１つまたは複数のプロセッサ１２、ならびに仮想メモリ６０で使用する利用可能なメモリ空間の一部分を共用することができる。このようにして、所与のプロセッサを複数の論理パーティションが利用することができる。追加の資源、例えば、大容量記憶装置、バックアップ記憶装置、ユーザ入力、ネットワーク接続などは、一般に、当技術分野においてよく知られた方法で１つまたは複数の論理パーティションに割り付けられる。資源は、いくつかの方法で、例えばバスごと、または資源ごとに割り付けることができ、複数の論理パーティションが同じバス上の資源を共用する。一部の資源は、複数の論理パーティションに同時に割り付けることさえできる。図２は、例えば、３本の論理バス６２、６４、６６を示しており、バス６２上には、一次論理パーティション４０に割り付けられた直接アクセス記憶装置（ＤＡＳＤ）６８、制御パネル７０、テープ・ドライブ７２、および光ディスク・ドライブ７４を含めて、複数の資源がある。他方、バス６４には、資源が資源ごとに割り付けられ、例えば二次論理パーティション４２にはローカル・エリア・ネットワーク（ＬＡＮ）アダプタ７６、光ディスク・ドライブ７８およびＤＡＳＤ８０が割り付けられ、二次論理パーティション４４にはＬＡＮアダプタ８２および８４が割り付けられることができる。バス６６は、例えば、バス上のすべての資源、例えばＤＡＳＤ８６および８８が同じ論理パーティションに割り付けられるように論理パーティション４４に特に割り付けられたバスであってもよい。
【００２１】
図２の具体的な資源の例は、単なる例にすぎず、代替形態においては資源の任意の組合せおよび構成を任意の論理パーティションに割り付けることができることが理解されよう。さらに、一部の実装形態では、他の論理パーティションの必要性に応えるため、資源を動的ベースで再割付けできることが理解されよう。コンピュータを特定のハードウェア装置とインターフェースするために使用されるＩＯＰ（input/output processors入出力プロセッサ）によって資源を表すこともできることが理解されよう。
【００２２】
図２に示す様々なソフトウェア構成要素および資源、ならびに本発明の実施形態の実装には、以下「コンピュータ・プログラム」または単に「プログラム」と称する、様々なコンピュータ・ソフトウェア・アプリケーション、ルーチン、構成要素、プログラム、オブジェクト、モジュール、データ構造などを使用することを含めて、いくつかの方法で実装することができる。このコンピュータ・プログラムは一般に、コンピュータ中の様々なメモリおよび記憶装置中に様々な時点に存在し、コンピュータ中の１つまたは複数のプロセッサがそれを読み取って実行するとき、本発明の様々な態様を実施するステップまたは要素を実行するのに必要なステップをそのコンピュータに実施させる、１つまたは複数の命令を含む。
【００２３】
さらに、本発明を完全に機能するコンピュータの文脈で、ここまで説明し、また以下でも説明するが、当業者なら、本発明の様々な実施形態を、様々な形式のプログラム製品として配布することが可能であり、実際に配布を行うのに使用する信号保持媒体（signal bearing medium）の種類にかかわらず、本発明を同等に適用できることが理解されよう。信号保持媒体の例には、それだけには限らないが、とりわけ、揮発性および不揮発性のメモリ・デバイス、フロッピー（Ｒ）およびその他着脱可能なディスク、ハード・ディスク・ドライブ、磁気テープ、光ディスク（例えば、ＣＤ−ＲＯＭ、ＤＶＤなど）などの記録可能なタイプの媒体、ならびにディジタルおよびアナログの通信リンクなどの伝送タイプの媒体が含まれる。さらに、以下に説明する様々なプログラムは、本発明の特定の実施形態中で実装されるアプリケーションに基づいて識別することができる。しかし、以下の特定のプログラム用語は、単に便宜上使用しているにすぎないこと、したがって、本発明は、かかる用語で識別または示唆される特定のアプリケーションだけに使用を限定すべきでないことを理解されたい。
【００２４】
図１および図２に示す環境の例が本発明を限定するものでないことが、当業者には理解されよう。実際、本発明の範囲を逸脱することなく、その他の代替のハードウェア環境またはソフトウェア環境あるいはその両方を使用できることが、当業者には理解されよう。
【００２５】
プロセッサへの譲渡（Yield-to-Processor）機能
図３の流れ図は、最初の２つの図のハードウェア環境およびソフトウェア環境内で、ＣＰＵを譲渡するための実施形態の例を示すものである。一般に、図に示したプロセス・ステップは、ＣＰＵを効率的に譲渡することにより仮想プロセッサの実行を調整する。図３の実施形態では、譲渡側仮想プロセッサが「ターゲット」仮想プロセッサを決定し、指定することができる。譲渡側仮想プロセッサと同じパーティション内に、このターゲット・プロセッサを配置することができることに留意されたい。一例では、ターゲット仮想プロセッサが、譲渡側仮想プロセッサが制御するＣＰＵを要求することがある。ターゲット仮想プロセッサはさらに、譲渡側仮想プロセッサの実行以前に必要とされる条件を実施することができる。
【００２６】
この実施形態の譲渡機能により、ハイパーバイザまたはパーティション・マネージャが譲渡側オペレーティング・システムが引き渡したＣＰＵまたはメモリ資源を再割り付けできるようになり得る。このようにして、ハイパーバイザによって、ターゲット仮想プロセッサがイネーブル状態になり、譲渡側仮想プロセッサの実行を妨げる状態を軽減することもある。この実施形態の目標とする機能が、譲渡される資源を無差別に剥奪し再割当てする従来技術の管理アプリケーションとは異なるものであることに留意されたい。先に論じたように、かかる従来技術のアプリケーションでは、目標の譲渡動作に焦点を合わせることができないので、かなりの処理遅延がもたらされる可能性がある。
【００２７】
図３のブロック１５０で、あるパーティションのある仮想プロセッサが、ハイパーバイザによってそれ自体にＣＰＵが割り当てられていることを認識することができる。それ自体が利用可能なＣＰＵがあることを登録した後、その仮想プロセッサは、ブロック１５２で、割り付けられたＣＰＵを利用できるかどうかどうかを評価することができる。より詳細には、その仮想プロセッサは、スピン・ロックを評価して、ＣＰＵが現在利用できるかどうかを判定することができる。例えば、ハイパーバイザは、別の仮想プロセッサが保持するロック上でスピンしながら、その仮想プロセッサにＣＰＵをディスパッチした可能性もある。別の場合には、ハイパーバイザは、ディスパッチされたＣＰＵへの仮想プロセッサのアクセスをタイム・スライス化し、またはその他の方法で優先使用していることもある。
【００２８】
図３のブロック１５２で、かかる状態が検出された場合には、この実施形態では、ブロック１５４で、同じパーティション内に配置された「ターゲット」仮想プロセッサに関連する情報を検索し記憶することができる。ターゲット仮想プロセッサの一例では、譲渡側仮想プロセッサによって制御されるＣＰＵが必要なことがあり得る。譲渡側仮想プロセッサは、ターゲット仮想プロセッサの実行に論理的に依存することもまたあり得る。したがって、譲渡側仮想プロセッサは、ターゲット仮想プロセッサが実行するのを待っていると言う。
【００２９】
図３のブロック１５４でターゲット仮想プロセッサから検索された情報が、ターゲット仮想プロセッサのアドレスおよびターゲット・カウントを含むこともできる。ターゲット・カウントは、各仮想プロセッサの記憶構成要素に割り当てられた値に関係するものでよい。以下に詳細に論じるが、一実施形態では、かかるターゲット・カウントを保持し、それを使用して処理状況を判断することができる。ハイパーバイザは、プログラムされたオカレンスに応答して仮想プロセッサのターゲット・カウントを増分することができる。例えば、ハイパーバイザは、仮想プロセッサが譲渡するまたは優先使用されるごとにターゲット・カウントを１だけ増すことができる。
【００３０】
一実施形態では、かかる増分によって、カウントが奇数値になることがある。同様に、仮想プロセッサが実行を開始するときはいつでも、ハイパーバイザがターゲット・カウントを増分することができる。この増分によって、仮想プロセッサのターゲット・カウントが偶数に戻ることができる。したがって、偶数のターゲット・カウントは、その資源要件が満たされた（すなわち、物理プロセッサを有する）仮想プロセッサに対応することができる。
【００３１】
以上で論じたターゲット・カウントを含む、ターゲット仮想プロセッサに属する情報は、譲渡側仮想プロセッサにもハイパーバイザにも利用可能である。あるアーキテクチャでは、あるパーティション内のすべての仮想プロセッサが、共用メモリ位置のかかる情報にアクセスできるようにすることができる。図３のブロック１５６で、オペレーティング・システムまたは譲渡側仮想プロセッサは、ハイパーバイザに「yield-to-processor」コール信号を送ることができる。このコールには、ブロック１５４でターゲット・プロセッサからサンプリングされる情報のスナップショットを含めることができる。したがって、スナップショットは、そのターゲット仮想プロセッサのターゲット・カウントもアドレスも含むことができる。このようにして、ブロック１５８で、ハイパーバイザは、このコール内で提示されるターゲット・カウントを評価することができる。図３を二分する破線は、ハイパーバイザとオペレーティング・システムが実施する役割を区分するものであることに留意されたい。より詳細には、オペレーティング・システムは、ブロック１５０〜１５６の図示のステップを開始するが、ハイパーバイザはブロック１５８〜１６５を実行する。
【００３２】
以上論じたように、ブロック１５８でターゲット仮想プロセッサの譲渡カウントが偶数であると判定される場合、ブロック１５６で仮想プロセッサに譲渡されて以降、ハイパーバイザが、すでにＣＰＵをターゲット仮想プロセッサにディスパッチしてしまっている可能性がある。譲渡の条件がこのように満たされてしまっているので、譲渡側仮想プロセッサがそれ自体のＣＰＵを引き渡す必要がもはやないかもしれない。例えば、ターゲット仮想プロセッサの実行により、その譲渡側仮想プロセッサの実行を以前に禁止していたロック機構が解除されているかもしれない。その結果、偶数のターゲット・カウントの場合には、ブロック１５０で、この実施形態で、譲渡側仮想プロセッサが実際に依然としてスピンしているかどうか再評価を行うこともできる。ブロック１５６で仮想プロセッサが行うyieldコール（譲渡コール）により、ハイパーバイザが、それに応じて仮想プロセッサの譲渡カウントを調整することができることに留意されたい。以下で取り扱うように、この特徴は、譲渡側仮想プロセッサを指定しまたはターゲットとすることがある他の仮想プロセッサに影響を及ぼすことがある。
【００３３】
図３のブロック１５８で、奇数のターゲット・カウントが検出された場合、ブロック１６０で、ハイパーバイザは、yieldコール内で提示されるターゲット・カウントを実際のターゲット・カウントのカウントと比較することができる。ハイパーバイザは、ターゲット仮想プロセッサ・フィールドまたはハードウェア・レジスタを、yieldコールを受け取った時点でサンプリングすることによって、実際のターゲット・カウントを得ることができる。ブロック１６０の比較ステップにより、そのターゲット仮想プロセッサが、譲渡のためにコールを行ってから必要なＣＰＵをまだ取得していないことを保証することができる。かかるシナリオの下では、そのコール中で提示されるターゲット・カウントは、ハイパーバイザが検証するカウントと一致しないことになる。したがって、ハイパーバイザは、ステップ１５０に戻って、譲渡側仮想プロセッサにその状況を再評価させることができる。
【００３４】
逆に、ブロック１６０で、提示された譲渡カウントがサンプリングされた実際のカウントと一致する場合には、ハイパーバイザは、ターゲット仮想プロセッサが、実際にＣＰＵを必要とすると認識することができる。しかし、ＣＰＵを再割付けする以前に、ハイパーバイザは、そのターゲット仮想プロセッサが「yield-to-active」コール中でないことを保証することができる。ターゲット・プロセッサは、従来技術のyield-to-activeコールを行って、すべての非譲渡側仮想プロセッサがサービスを受けるまで資源を引き渡すように要求し続けることもある。かかる状況の下では、譲渡側ターゲット仮想プロセッサに譲渡を行うことは、循環型で逆効果となり、システム性能をストールする可能性がある。したがって、ブロック１６２の予防ステップにより、所与のアプリケーションにおける機能ループの形成が防止できる。したがって、この実施形態では、ブロック１５３で、ブロック１５６のyield-to-processorコールを中断することができる。この実施形態のこの特徴により、さらに、この実施形態の譲渡プログラムは従来技術の譲渡アプリケーションの範囲内で実行できるようになることに留意されたい。
【００３５】
図３のブロック１６３で、ハイパーバイザは、譲渡側仮想プロセッサに対応する記憶域をターゲット・プロセッサを待っているものとして指定しまたは「マークする」ことができる。この仮想プロセッサの記憶域は、ハイパーバイザの記憶域の外部に割り付けられる。したがって、ハイパーバイザは、さらにターゲット・プロセッサに対応する記憶域に、ターゲット・プロセッサを、それを待っている譲渡側プロセッサがあるとマークすることができる。ブロック１６３で、ターゲット・プロセッサと仮想プロセッサの間のそれぞれの関係を示した後、ステップ１６４で、ハイパーバイザは、譲渡側仮想プロセッサのオペレーティング・システムの状態を記憶することができる。
【００３６】
例えば、この実施形態では、ブロック１６４で、仮想プロセッサのすべての条件が満たされ保持されるように、仮想プロセッサに関連するすべてのレジスタを記録することができる。このようにして、記憶された仮想プロセッサは、ただＣＰＵを待つだけである。すなわち、すべての論理的条件および物理的条件が満たされるとすぐにオペレーティング・システムが実行できるように、ハイパーバイザは、譲渡側仮想プロセッサの保持状態を呼び戻すことができる。かかる条件には、不可欠なプロセッサによる実行もＣＰＵの割当ても含まれ得る。
【００３７】
図３のブロック１６５で、ハイパーバイザは、ハイパーバイザ・ディスパッチャに制御を渡す。ハイパーバイザ・ディスパッチャは、パーティションの仮想プロセッサに対応する諸コードを調整して、所与のＣＰＵ上でどの仮想プロセッサが次に実行されるかを決定することができる。例えば、ハイパーバイザ・ディスパッチャは、ターゲット仮想プロセッサが次に利用可能なＣＰＵのタイム・スライスを現在受け取ることができるように、資源割付けスケジュールを操作することができる。以下に詳細に論じるように、ハイパーバイザのディスパッチャがターゲット・プロセッサに「切り替える」ことを決定した後、そのハイパーバイザは、そのＣＰＵをそのターゲット仮想プロセッサにディスパッチすることができる。このようにして、そのターゲット・プロセッサは、最終的に実行し、その仮想プロセッサにかけられる条件付きロックを緩和することができる。
【００３８】
図４の流れ図は、図３のブロック１６５でハイパーバイザ・ディスパッチャが実行するステップと合致するプロセス・ステップを示している。より詳細には、この流れ図は、ディスパッチャがＣＰＵ資源上の所与のターゲット・プロセッサに切り替えるかどうかを判断するためにディスパッチャが行わなければならないステップを示している。すなわち、ハイパーバイザは、ブロック１６５〜１６８を実行して、ＣＰＵを割り付けるべき仮想プロセッサがyield-to-processorコールの対象であることを保証しなければならない。
【００３９】
したがって、ブロック１６６で、ハイパーバイザはディスパッチャ回路にそれに提示されるすべての仮想プロセッサの適切な評価プロセスを開始するよう指示する。ハイパーバイザは、切り替え手続きが差し迫っていることをディスパッチャに示すことにより、かかるプロセスをトリガすることができる。それに応答して、ハイパーバイザ・ディスパッチャは、ブロック１６７でその仮想プロセッサの記憶域を調べて、提示された仮想プロセッサがyield-to-processorコールの対象であるかどうかを判定することができる。ブロック１６７の条件がそのように満たされている場合には、ブロック１６９で、ハイパーバイザは、譲受側プロセッサの記憶域に実行準備ができている（ready-to-run）とマークすることができる。それがもともと譲渡されるための条件、すなわちターゲット・プロセッサの実行の条件が満たされているので、ハイパーバイザは、このようにして、譲渡側プロセッサを符号化し、または指定する。したがって、譲受側仮想プロセッサは、ＣＰＵがハイパーバイザを介して利用可能になるのをただ待つ必要があるだけである。
【００４０】
したがって譲渡側プロセッサはコード化され、ブロック１６８でハイパーバイザは、この仮想プロセッサの状態レジスタおよび関連レジスタをそのハードウェア（ＣＰＵ）上に配置し、制御をそのパーティションに戻すことができる。ブロック１６７で評価される仮想プロセッサがyield-to-processorコールの対象でない場合には、ブロック１６８でその仮想プロセッサの状態が復元され、制御がそのパーティションに渡されることに留意されたい。したがって、その譲渡する条件が満たされないままのとき、ハイパーバイザは、譲受側仮想プロセッサの状態を変更しない。
【００４１】
本発明を、様々な実施形態の説明により示し、これらの実施形態をかなり詳細に説明してきたが、本出願人には、添付の特許請求の範囲をかかる詳細に限定し、またはいかなる形でも制限する意図はない。
【００４２】
さらなる利点および変更形態が、当業者には容易に思い浮かぶであろう。したがって、そのより広い態様における本発明は、その特定の詳細、代表的な機器および方法、ならびに示し説明した実例に限定されることはない。したがって、出願人の一般的な発明の概念の趣旨または範囲を逸脱することなく、かかる詳細から逸脱することができる。
【図面の簡単な説明】
【００４３】
【図１】本発明によるコンピュータを示すブロック図である。
【図２】図１のコンピュータの主要なソフトウェアの構成要素および資源を示すブロック図である。
【図３】図１および図２の環境内でサポートされるパーティション間でＣＰＵを再配分する一方法を実施する流れ図である。
【図４】図３のプロセス・ステップに関連する順番通りのステップを示す流れ図である。
【図１】
2005501333.tif 000003
【図２】
2005501333.tif 000004
【図３】
2005501333.tif 000005
【図４】
2005501333.tif 000006
【国際公開パンフレット】
2005501333.tif 000007
2005501333.tif 000008
2005501333.tif 000009
2005501333.tif 000010
2005501333.tif 000011
2005501333.tif 000012
2005501333.tif 000013
2005501333.tif 000014
2005501333.tif 000015
2005501333.tif 000016
2005501333.tif 000017
2005501333.tif 000018
2005501333.tif 000019
2005501333.tif 000020
2005501333.tif 000021
2005501333.tif 000022
2005501333.tif 000023
2005501333.tif 000024
2005501333.tif 000025
2005501333.tif 000026
2005501333.tif 000027
2005501333.tif 000028
2005501333.tif 000029
2005501333.tif 000030
2005501333.tif 000031
【国際公開パンフレット（コレクトバージョン）】
2005501333.tif 000032
2005501333.tif 000033
【国際調査報告】
2005501333.tif 000034
2005501333.tif 000035
2005501333.tif 000036