(57)【特許請求の範囲】
【請求項１】
少なくとも１つのプロセッサと、
前記少なくとも１つのプロセッサに結合されたメモリと、
前記少なくとも１つのプロセッサに結合された複数のハードウェア・リソースと、
装置上で定義された複数のロジカル・パーティションと、
前記メモリ内に常駐し、前記少なくとも１つのプロセッサによって実行される電源オン／電源オフ・メカニズムであって、選択された前記ハードウェア・リソースの制御が前記複数のロジカル・パーティションの１つに転送されるときに、選択された前記ハードウェア・リソースを電源オン・リセット状態にする電源オン／電源オフ・メカニズムと、
前記メモリ内に常駐する複数のロックであって、前記複数のハードウェア・リソースのそれぞれが対応するロックを有する複数のロックと、
対応するロックの排他所有権を要求することにより、前記複数のロジカル・パーティションによる各ハードウェア・リソースへのアクセスを制御するロック・メカニズムとを有し、
前記ロック・メカニズムは、対応するハードウェア・リソースの制御を前記複数のロジカル・パーティションの１つに転送する前に、かつ前記複数のロジカル・パーティションの１つが前記対応するハードウェア・リソースにアクセスできるようにする前に、前記排他所有権を要求する、
装置。
【請求項２】
前記複数のハードウェア・リソースが複数の入出力スロットを有する、請求項１に記載の装置。
【請求項３】
前記電源オン／電源オフ・メカニズムが、選択された前記ハードウェア・リソース上の少なくとも１つのメモリ位置を電源投入時に予想される値に初期設定することにより、選択された前記ハードウェア・リソースを電源オン・リセット状態にする、請求項１に記載の装置。
【請求項４】
前記複数のハードウェア・リソースが複数の入出力スロットを有し、
選択された前記入出力スロット内のアダプタに対するメモリおよび仮想アドレス・バインディングが以前にアンバインドされていない場合に、選択された前記入出力スロットの制御が前記複数のロジカル・パーティションの１つから除去されるときに、前記アダプタに対する前記メモリおよび仮想アドレス・バインディングをすべてアンバインドするためのメカニズムをさらに有する、請求項１に記載の装置。
【請求項５】
前記複数のハードウェア・リソースが複数の入出力スロットを有し、
選択された前記入出力スロットの制御が前記複数のロジカル・パーティションの１つに転送されるときに、選択された前記入出力スロット内のアダプタに対するメモリおよび仮想アドレス・バインディングを使用可能にするためのメカニズムをさらに有する、請求項１に記載の装置。
【請求項６】
選択された前記ハードウェア・リソースの制御が前記複数のロジカル・パーティションの１つから除去されるときに、選択された前記ハードウェア・リソースの制御をリソースおよびパーティション・マネージャに転送するためのメカニズムをさらに有する、請求項１に記載の装置。
【請求項７】
前記複数のロジカル・パーティションの１つが、前記１つのロジカル・パーティションによって所有されているハードウェア・リソースの制御を放棄するためのメカニズムをさらに有する、請求項１に記載の装置。
【請求項８】
前記複数のロジカル・パーティションの１つが、以前に放棄したハードウェア・リソースの制御を取り戻すためのメカニズムをさらに有する、請求項７に記載の装置。
【請求項９】
複数のロジカル・パーティションを含むコンピュータ・システム内の複数のハードウェア・リソースを管理するためのコンピュータによって実現される方法であって、
前記複数のロジカル・パーティションの１つから選択されたハードウェア・リソースを除去するステップと、
前記選択されたハードウェア・リソースの制御が前記複数のロジカル・パーティションの１つに転送されるときに、前記コンピュータ・システムのメモリ内に常駐する電源オン／電源オフ・メカニズムにより前記選択されたハードウェア・リソースを電源オン・リセット状態にするステップと、
複数のロックを定義するステップであって、前記複数のハードウェア・リソースのそれぞれが対応するロックを有するステップと、
対応するハードウェア・リソースの制御を前記複数のロジカル・パーティションの１つに転送する前に、対応するロックの排他所有権を要求することにより、前記複数のロジカル・パーティションによる各ハードウェア・リソースへのアクセスを制御するステップと、
を有する方法。
【請求項１０】
前記電源オン・リセット状態にするステップがが、選択された前記ハードウェア・リソース上の少なくとも１つのメモリ位置を、電源投入時に、予想される値に初期設定するステップを有する、請求項９に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は一般に、データ処理に関し、より具体的には、コンピュータ・システム内の共用リソースの割振りに関する。
【背景技術】
【０００２】
関連出願
この特許出願は、２００３年３月１３日に同じ発明者によって出願された同じ発明の名称の米国特許出願第１０／３８８３５０号に関連するが、同特許出願は参照により本明細書に組み込まれる。
【０００３】
コンピュータ時代の幕開け以来、コンピュータ・システムは、多種多様な設定で提供可能な極めて精巧な装置に進化している。コンピュータ・システムは概して、ハードウェア（たとえば、半導体、回路基板など）とソフトウェア（たとえば、コンピュータ・プログラム）の組合せを含む。半導体処理およびコンピュータ・アーキテクチャの進歩によってコンピュータ・ハードウェアのパフォーマンスが押し上げられるにつれて、ハードウェアのパフォーマンスの向上を利用するためにより精巧なコンピュータ・ソフトウェアが発生し、その結果、現在では、わずか数年前よりはるかに強力なコンピュータ・システムになっている。
【０００４】
特定のコンピュータ・システム上のハードウェアとソフトウェアの組合せにより、コンピューティング環境が定義される。したがって、種々のハードウェア・プラットフォームと種々のオペレーティング・システムにより、種々のコンピューティング環境が得られる。近年では、エンジニアは、種々のコンピューティング環境に合わせてコンピュータ・システム・リソースをロジカル・パーティショニングすることによって同じ物理コンピュータ・システム上で種々のコンピューティング環境を提供することが可能であることを認識している。ＩＢＭ社によって開発されたｉＳｅｒｉｅｓ（ＩＢＭ  Ｃｏｒｐｏｒａｔｉｏｎの商標）コンピュータ・システムは、ロジカル・パーティショニングをサポートするコンピュータ・システムの一例である。ｉＳｅｒｉｅｓコンピュータ・システム上のロジカル・パーティショニングが所望である場合、同じプラットフォーム上の種々のコンピューティング環境の定義を可能にするリソースおよびパーティション・マネージャ（resource and partition manager）・コード（ｉＳｅｒｉｅｓ用語では「ハイパーバイザ」という）がインストールされる。リソースおよびパーティション・マネージャがインストールされると、種々のコンピューティング環境を定義するロジカル・パーティションを作成することができる。リソースおよびパーティション・マネージャはロジカル・パーティションを管理して、ロジカル・パーティションによって定義された個別のコンピューティング環境を維持しながら、ロジカル・パーティションがコンピュータ・システム内の必要なリソースを共用できることを保証する。
【０００５】
複数のロジカル・パーティションを含むコンピュータ・システムは概して、そのロジカル・パーティション間でリソースを共用する。たとえば、２つのロジカル・パーティションを備えたコンピュータ・システムは、ＣＰＵの５０％を各パーティションに割り振り、メモリの３３％を第１のパーティションに、メモリの６７％を第２のパーティションに割り振り、２つの異なる入出力スロットを２つのロジカル・パーティションに、パーティション当たり１つずつ割り振るものとして定義することができるであろう。ロジカル・パーティションが定義され、共用リソースがロジカル・パーティションに割り振られると、各ロジカル・パーティションは個別のコンピュータ・システムとして動作する。したがって、２つのロジカル・パーティションを備えた単一コンピュータ・システムを有する上記の例では、２つのロジカル・パーティションは、すべての実用目的において、２つの個別かつ別個のコンピュータ・システムに見えるであろう。
【特許文献１】米国特許出願第１０／３８８３５０号
【発明の開示】
【発明が解決しようとする課題】
【０００６】
既知のロジカル・パーティション・コンピュータ・システムの問題の１つは、ロジカル・パーティション間でハードウェア・リソースを転送する必要がある場合に発生する。たとえば、第１のロジカル・パーティション内のＰＣＩスロットを第２のロジカル・パーティションに転送する必要がある場合、まず第１のロジカル・パーティションからＰＣＩスロットを除去しなければならず、その後、ＰＣＩスロットを第２のロジカル・パーティションに割り振ることができる。しかし、第１のロジカル・パーティションからＰＣＩスロットが除去されると、従来技術では、２つのロジカル・パーティションが同時にＰＣＩスロットの制御を競い合う可能性があることに留意されたい。加えて、ＰＣＩスロットが異なるロジカル・パーティションに割り振られると、それは、特定の状況で損なわれている可能性のある前のロジカル・パーティションからのデータを収容している可能性がある。さらに、ＰＣＩスロットは第１のロジカル・パーティションに適した特定の状態で構成することができるが、これは必ずしも第２のロジカル・パーティションに適しているわけではない。当技術分野で知られている欠点を伴わずにロジカル・パーティション・コンピュータ・システム内で入出力リソースを動的に転送する方法がない場合、コンピュータ業界は、ロジカル・パーティション・コンピュータ・システム内で入出力リソース転送を実行するために潜在的に不確実で非効率なメカニズムおよび方法に苦しみ続けることになる。
【課題を解決するための手段】
【０００７】
リソースおよびパーティション・マネージャは、ハードウェア・リソースの制御がロジカル・パーティションから除去されるときに、ハードウェア・リソースが電源遮断されることを保証し、ハードウェア・リソースの制御がロジカル・パーティションに転送されるときに、ハードウェア・リソースが電源投入されることを保証するために使用される電源オン／電源オフ・メカニズムを含む。代替例では、リソースおよびパーティション・マネージャは、ハードウェア・リソースがロジカル・パーティションに転送されるときに、そのハードウェア・リソースを単純に電源オン・リセット状態にすることができる。このように、パーティションにとって使用可能になると、ハードウェア・リソースは電源オン・リセット状態になり、これは概してロジカル・パーティションによって予想される状態である。
【０００８】
好ましい諸実施形態は、ロジカル・パーティション・コンピュータ・システム内の入出力スロットへのアクセスを制御するのに適している。しかし、本明細書で開示した好ましい諸実施形態を使用して、入出力バス、入出力通信チャネル、仮想入出力スロットまたはデバイス、ＣＰＵ、およびメモリなど、その他のハードウェア・リソースへのアクセスも制御できることに留意されたい。
【０００９】
本発明の上記その他の特徴および利点は、添付図面に図示した本発明の好ましい諸実施形態に関する以下のより詳細な説明から明らかになるであろう。
【発明を実施するための最良の形態】
【００１０】
本発明の好ましい諸実施形態によれば、電源オン／電源オフ・メカニズムは、ハードウェア・リソースがロジカル・パーティションに割り振られるときに、そのハードウェア・リソースが電源オン・リセット状態になることを保証するものである。これは、ハードウェア・リソースの電源投入時に予想されると考えられる値をハードウェア・リソース上の１つまたは複数のメモリ位置に書き込むか、またはハードウェア・リソースがロジカル・パーティションから除去されるときに、そのハードウェア・リソースを電源オフし、ハードウェア・リソースがロジカル・パーティションに割り振られるときに、そのハードウェア・リソースを電源オンすることにより、行うことができる。このように、各ロジカル・パーティションは、ハードウェア・リソースがその電源オン・リセット状態になっていることを確認することを保証される。入出力スロットの特定の例の場合、その入出力スロット内のアダプタを電源オン・リセット状態にする（アダプタに適切な値を書き込むことによるかまたはアダプタを収容する入出力スロットへの電力を物理的に循環することのいずれかによる）ことにより、電源オン／電源オフ・メカニズムは、その入出力スロットを異なるロジカル・パーティションに割り振るときに、そのスロットに差し込まれた入出力アダプタからのデータと構成情報の両方がパージされることを保証する。加えて、ハードウェア・リソースまたはそのハードウェア・リソースを収容する物理的エンクロージャのコンポーネントに対してハードウェア・サービス操作を実行するために、ハードウェア・リソースをそのロジカル・パーティションからリソースおよびパーティション・マネージャに一時的に転送することができる。ハードウェア・サービスが完了すると、ハードウェア・リソースはそのロジカル・パーティションに転送して戻される。
【００１１】
本明細書および本明細書の特許請求の範囲で使用する「ハードウェア・リソース」という用語は、ロジカル・パーティションに独立して割振り可能な、コンピュータ・システム内のハードウェアの全体または一部分を意味することに留意されたい。ハードウェア・リソースの例としては、物理的入出力スロット、物理的エンクロージャ内の入出力スロットのグループ、プロセッサの一部分、およびメモリの一部分を含む。本明細書で提示する好ましい諸実施形態は、ロジカル・パーティションに独立して割振り可能なハードウェア・リソースとして、入出力スロットの特定の例を使用する。しかし、ロジカル・パーティションに独立して割振り可能な任意のハードウェアまたはハードウェアの一部分は、本明細書で使用する「ハードウェア・リソース」という用語の範囲に含まれることに留意されたい。
【００１２】
図１を参照すると、コンピュータ・システム１００は、拡張ＩＢＭ  ｅＳｅｒｖｅｒ（ＩＢＭ  Ｃｏｒｐｏｒａｔｉｏｎの商標）ｉＳｅｒｉｅｓコンピュータ・システムであり、好ましい諸実施形態によりロジカル・パーティショニングおよびリソース割振りをサポートする、１つの適切なタイプのコンピュータ・システムを表す。当業者であれば、本発明のメカニズムおよび装置はロジカル・パーティションをサポートする任意のコンピュータ・システムに等しく適用されることが分かるであろう。図１に示した通り、コンピュータ・システム１００は、メイン・メモリ１２０に接続された１つまたは複数のプロセッサ１１０と、大容量ストレージ・インターフェース１３０と、ディスプレイ・インターフェース１４０と、ネットワーク・インターフェース１５０と、複数の入出力スロット１８０とを有する。これらのシステム・コンポーネントは、システム・バス１６０の使用により相互接続される。大容量ストレージ・インターフェース１３０は、大容量ストレージ・デバイス（直接アクセス・ストレージ・デバイス１５５など）をコンピュータ・システム１００に接続するために使用する。１つの特定のタイプの直接アクセス・ストレージ・デバイスはＣＤ  ＲＷドライブであり、これはＣＤ  ＲＷ１９５からデータを読み取ることができる。大容量ストレージ・インターフェース１３０、ディスプレイ・インターフェース１４０、およびネットワーク・インターフェース１５０は、実際には入出力スロット１８０に結合されたアダプタとして実現可能であることに留意されたい。
【００１３】
メイン・メモリ１２０は、リソースおよびパーティション・マネージャ１２１と、入出力スロット・ロック・メカニズム１２２と、電源オン／電源オフ・スロット・メカニズム１２４と、ロジカル・パーティション１２５Ａ〜１２５Ｎとして図１に示したＮ個のロジカル・パーティション１２５とを収容する。リソースおよびパーティション・マネージャ１２１は好ましくはこれらのＮ個のロジカル・パーティション１２５を作成する。各ロジカル・パーティションは好ましくは、オペレーティング・システム１２６Ａ〜１２６Ｎとして図１に示した、対応するオペレーティング・システム１２６を含む。
【００１４】
入出力スロット・ロック・メカニズム１２２は、１つのスロット・ロック１２３が好ましくは各入出力スロット１８０に対応する、複数のスロット・ロック１２３を定義することにより、入出力スロット１８０へのアクセスを管理する。入出力スロットをロジカル・パーティションに割り振る必要がある場合、リソースおよびパーティション・マネージャは対応するスロット・ロックをチェックして、その入出力スロットが使用可能であるかどうかを確認する。対応するスロット・ロックが異なるロジカル・パーティションによって所有されている場合、その入出力スロットは当該ロジカル・パーティションの制御下にある。対応するスロット・ロックがリソースおよびパーティション・マネージャによって所有されているかまたは未割当て状態である場合、その入出力スロットは、リソースおよびパーティション・マネージャが対応するスロット・ロックを設定し、その入出力スロットを要求側ロジカル・パーティションに割り振ることにより、制御することができる。このように、スロット・ロック１２３は、対応する入出力スロットが使用可能であるかどうかを示すセマフォとして効果的に機能する。
【００１５】
電源オン／電源オフ・スロット・メカニズム１２４は、入出力スロットがロジカル・パーティションから除去される前にスロットが電源遮断されることを保証し、スロットがロジカル・パーティションに割り振られるときにスロットが電源投入されることを保証するために使用する。従来技術では、入出力スロットは、あるロジカル・パーティションから除去し、異なるロジカル・パーティションに割り振ることができる。しかし、この再割振りを実行すると、結果的に、２つの問題が発生する。第１の問題はデータ保全性の問題である。第１のロジカル・パーティションで実行されるプロセスからのデータは、入出力スロットが異なるロジカル・パーティションに再割当てされるときに、入出力スロットに差し込まれた入出力アダプタで保持可能であることは、あり得ることである。理論上は、十分な技能を有する人であれば、おそらく第２のロジカル・パーティションからのデータにハッキングすることができ、それにより、第１のロジカル・パーティションからのデータを損なうことになるであろう。第２の問題は、入出力スロットを受け入れる新しいロジカル・パーティションがその入出力スロットの現行構成を把握していないことである。実際のところ、複数のロジカル・パーティションは種々のコンピュータ・システムのように動作するので、１つのロジカル・パーティションは、入出力アダプタがロジカル・パーティションに割り当てられるときに、その入出力アダプタが電源オン・リセット状態になっていると自動的に想定する。これは、ロジカル・パーティション化されていないコンピュータ・システムでは確かに妥当な想定である。入出力アダプタが２つの異なるコンピュータ・システム間で物理的に転送される場合、その入出力アダプタは、第１のコンピュータ・システムから抜かれ、第２のコンピュータ・システムに差し込まれることになる。その結果、電力はコンピュータ・システム間での転送中に入出力アダプタ上で循環され、それにより、そのデータをクリアし、入出力アダプタを電源オン・リセット状態にする。入出力アダプタを受け入れた第２のコンピュータ・システムは、そのコンピュータ・システムが最初に始動するときに、入出力アダプタが電源オン・リセット状態であることを把握する。しかし、この想定は、ロジカル・パーティション・コンピュータ・システムの場合には当てはまらない。反対に、従来技術は、いかなる電源オフまたは電源オン・サイクルも実行せずにパーティション間の入出力リソースの転送を可能にし、それにより、前述の２つの問題を発生させる。電源オン／電源オフ・スロット・メカニズム１２４は、入出力スロットがあるロジカル・パーティションに割り振られるときに、その入出力スロットが電源オン・リセット状態になることを保証することにより、この問題を解決する。第１の特定の実施形態では、入出力スロット内のアダプタを電源オン状態にするためにそのアダプタ上の１つまたは複数のメモリ位置に適切な値を書き込むことにより、入出力スロットが電源オン・リセット状態になる。第２の特定の実施形態では、入出力スロットがあるロジカル・パーティションから除去され、異なるロジカル・パーティションに割り振られるときに、電力が必ずその入出力スロット上で循環されるが、これは、操作に対する妨害がその入出力スロットのみに影響し、同じ物理的エンクロージャを共用可能な他のスロットには一切影響せずに起こり得ることである。このように、各ロジカル・パーティションは、ロジカル・パーティションが最初にブートするとき、またはアクティブ・ロジカル・パーティションが入出力アダプタの制御を受け取るときに、入出力アダプタがその電源オン・リセット状態であると正しく想定することができる。
【００１６】
オペレーティング・システム１２６は、ＯＳ／４００、ＡＩＸ（ＩＢＭ  Ｃｏｒｐｏｒａｔｉｏｎの商標）、またはＬｉｎｕｘ（Ｌｉｎｕｓ  Ｔｏｒｖａｌｄｓの商標）などのマルチタスキング・オペレーティング・システムであるが、当業者であれば、本発明の精神および範囲は任意の１つのオペレーティング・システムに限定されないことが分かるであろう。適切なものであれば、どのオペレーティング・システムも使用することができる。オペレーティング・システム１２６は、コンピュータ・システム１００のリソースを管理するための低レベル・コードを含む精巧なプログラムである。これらのリソースのうちのいくつかは、プロセッサ１１０、メイン・メモリ１２０、大容量ストレージ・インターフェース１３０、ディスプレイ・インターフェース１４０、ネットワーク・インターフェース１５０、システム・バス１６０、および入出力スロット１８０である。各パーティション内のオペレーティング・システム１２６は、他のパーティション内のオペレーティング・システムと同じである場合もあれば、まったく異なるオペレーティング・システムである場合もある。したがって、あるパーティションがＯＳ／４００オペレーティング・システムを実行し、異なるパーティションがＯＳ／４００の他のインスタンス、おそらく異なるリリースを実行するか、または異なる環境設定（たとえば、時間帯）で実行することができる。ロジカル・パーティション内のオペレーティング・システムは、ハードウェアとの互換性があるという条件で、ＯＳ／４００とは異なるもの（ＡＩＸまたはＬｉｎｕｘなど）にすることもできるであろう。このように、ロジカル・パーティションは、同じ物理的コンピュータ・システム上でまったく異なるコンピューティング環境を提供することができる。
【００１７】
パーティション１２５Ａ〜１２５Ｎは、メイン・メモリ１２０内に常駐するものとして図１に示されている。しかし、当業者であれば、パーティションはメモリ以外のリソースを含む論理構成体（logical construct）であることを認識するであろう。ロジカル・パーティションは概して、プロセッサ・キャパシティと、入出力スロット１８０などの他のシステム・リソースの割当てとともに、メモリの一部分を指定する。したがって、あるパーティションは、大容量ストレージ・インターフェース１３０、ディスプレイ・インターフェース１４０、ネットワーク・インターフェース１５０、または入出力スロット１８０に差し込まれた入出力装置へのインターフェースの機能を提供できる１つまたは複数の入出力プロセッサとともに、２つのプロセッサと、メモリ１２０の一部分とを含むように定義することができるであろう。次に、他のパーティションは、３つの他のプロセッサと、メモリ１２０の他の一部分と、１つまたは複数の入出力プロセッサとを含むように定義することができるであろう。パーティションは、ロジカル・パーティションを象徴的に表すものとして図１に示されており、これは、コンピュータ・システム１００内のメモリ１２０の外部にシステム・リソースを含むことになるであろう。また、リソースおよびパーティション・マネージャ１２１、入出力スロット・ロック・メカニズム１２２、および電源オン／電源オフ・スロット・メカニズム１２４は好ましくは、パーティションとは別のメモリおよびハードウェア内に常駐し、パーティションにとって直接使用可能ではない機能およびメカニズムであることにも留意されたい。代替例では、入出力スロット・ロック・メカニズム１２２および電源オン／電源オフ・スロット・メカニズム１２４は、コンピュータ・システム１００内のいずれかの定義済みパーティション内、またはネットワーク１７０を介してコンピュータ・システム１００に結合されたコンピュータ・システム１７５上に常駐することができるであろう。
【００１８】
コンピュータ・システム１００は、コンピュータ・システム１００のプログラムがメイン・メモリ１２０およびＤＡＳＤデバイス１５５などの複数の小規模ストレージ・エンティティの代わりに大規模単一ストレージ・エンティティにのみアクセスできる場合と同様に振る舞えるようにする、周知の仮想アドレッシング・メカニズムを使用する。したがって、リソースおよびパーティション・マネージャ１２１およびパーティション１２５Ａ〜１２５Ｎはメイン・メモリ１２０内に常駐するものとして示されているが、当業者であれば、これらの項目が必ずしもすべて同時にメイン・メモリ１２０に完全に収容されるわけではないことを認識するであろう。また、「メモリ」という用語はコンピュータ・システム１００の仮想メモリ全体を総称的に指すために本明細書で使用することにも留意されたい。
【００１９】
プロセッサ１１０は、１つまたは複数のマイクロプロセッサあるいは集積回路またはその両方から構築することができる。プロセッサ１１０は、メイン・メモリ１２０に保管されたプログラム命令を実行する。メイン・メモリ１２０は、プロセッサ１１０がアクセス可能なプログラムおよびデータを保管する。コンピュータ・システム１００が始動すると、プロセッサ１１０は最初に、リソースおよびパーティション・マネージャ１２１を構成するプログラム命令を実行し、そのリソースおよびパーティション・マネージャ１２１がロジカル・パーティション内のオペレーティング・システムを初期設定する。
【００２０】
コンピュータ・システム１００は単一システム・バスのみを含むものとして示されているが、当業者であれば、本発明は複数のバスを有するコンピュータ・システムを使用して実施可能であることが分かるであろう。加えて、好ましい実施形態で使用される入出力インターフェースはそれぞれ、ｉＳｅｒｉｅｓ入出力プロセッサ内など、プロセッサ１１０から計算主体の処理をオフロードするために使用する、個別の完全にプログラミングされたマイクロプロセッサを含む場合もあれば、単純な業界標準入出力アダプタ（ＩＯＡ）である場合もある。
【００２１】
ディスプレイ・インターフェース１４０は、１つまたは複数のディスプレイ１６５をコンピュータ・システム１００に直接接続するために使用する。これらのディスプレイ１６５は、非インテリジェント（すなわち、ダム）端末または完全プログラマブル・ワークステーションである場合もあり、システム管理者およびユーザがコンピュータ・システム１００と通信できるようにするために使用する。しかし、ディスプレイ・インターフェース１４０は１つまたは複数のディスプレイ１６５との通信をサポートするために設けられているが、ユーザおよびその他のプロセスとの必要な対話はすべてネットワーク・インターフェース１５０を介して行うことができるので、コンピュータ・システム１００は必ずしもディスプレイ１６５を必要とするわけではないことに留意されたい。
【００２２】
ネットワーク・インターフェース１５０は、他のコンピュータ・システムあるいはワークステーションまたはその両方（たとえば、図１の１７５）をネットワーク１７０によりコンピュータ・システム１００に接続するために使用する。本発明は、ネットワーク接続１７０が現代のアナログ技法あるいはディジタル技法またはその両方を使用して行われるか、将来の何らかのネットワーキング・メカニズムを介して行われるかにかかわらず、コンピュータ・システム１００がどのように他のコンピュータ・システムあるいはワークステーションまたはその両方に接続可能であろうとも、等しく適用される。加えて、ネットワークを実現するために、多種多様なネットワーク・プロトコルを使用することができる。これらのプロトコルは、コンピュータがネットワーク１７０により通信できるようにする特殊コンピュータ・プログラムである。ＴＣＰ／ＩＰ（伝送制御プロトコル／インターネット・プロトコル）は、適切なネットワーク・プロトコルの一例である。
【００２３】
この時点では、完全に機能しうるコンピュータ・システムに関連して本発明をこれまで説明し、今後も説明し続けるが、当業者であれば、本発明は様々な形のプログラムとして配布可能であり、本発明はその配布を実際に実行するために使用されるコンピュータ可読信号伝送媒体の特定のタイプにかかわらず等しく適用されることが分かるであろうということは、留意すべき重要なことである。適切な信号伝送媒体の例としては、フレキシブル・ディスクおよびＣＤ  ＲＷ（たとえば、図１の１９５）などの記録可能タイプの媒体と、ディジタルおよびアナログ通信リンクなどの伝送タイプの媒体とを含む。
【００２４】
図１は、好ましい諸実施形態によるハードウェアとソフトウェアの両方の顕著な特徴のいくつかを示す、サンプル・コンピュータ・システムを示している。次に、図２および図３では、より詳細な実現例を提示する。図２は、好ましい諸実施形態によりロジカル・パーティションおよび入出力リソース割振りをサポートするコンピュータ・システムのハードウェア図である。１つの物理的エンクロージャ２１０は、システム・バス１６０を介してまとめて結合された１つまたは複数のＣＰＵ１１０とメモリ１２０とを収容している。第２のエンクロージャ２２０は、システム・バス１６０に結合されたバス２１２に結合された入出力コンポーネントを収容するエンクロージャである。この特定の例の場合、ＰＣＩコンポーネントは、エンクロージャ２２０内に収容された入出力コンポーネントであると想定する。ＰＣＩホスト・ブリッジ２３０は、バス２１２に結合され、複数のＰＣＩ／ＰＣＩブリッジ（PCI to PCI bridge）２４０へのインターフェースを提供する。図２には、２つのＰＣＩホスト・ブリッジ２３０Ａおよび２３０Ｂが存在する。ＰＣＩホスト・ブリッジ２３０Ａは４つのＰＣＩ／ＰＣＩブリッジ２４０Ａ〜２４０Ｄへのインターフェースを提供し、ＰＣＩホスト・ブリッジ２３０Ｂは４つのＰＣＩ／ＰＣＩブリッジ２４０Ｅ〜２４０Ｈへのインターフェースを提供する。各ＰＣＩ／ＰＣＩブリッジ２４０は、単一ＰＣＩアダプタ・スロット２５０に接続する。したがって、ＰＣＩ／ＰＣＩブリッジ２４０Ａは対応するＰＣＩアダプタ・スロット２５０Ａに結合され、ＰＣＩ／ＰＣＩブリッジ２４０Ｂは対応するＰＣＩアダプタ・スロット２５０Ｂに結合され、対応するＰＣＩアダプタ・スロット２５０Ｈに結合されたＰＣＩ／ＰＣＩブリッジ２４０Ｈまで以下同様である。
【００２５】
各ＰＣＩホスト・ブリッジ２３０は、１次ＰＣＩバス２６０を介してＰＣＩ／ＰＣＩブリッジ２４０に接続する。図２は２つの１次ＰＣＩバス２６０Ａおよび２６０Ｂを示している。次にＰＣＩ／ＰＣＩブリッジ２４０は２次ＰＣＩバス２７０を介してＰＣＩアダプタ・スロット２５０に接続する。図２は、それぞれの対応するＰＣＩアダプタ・スロット２５０Ａ〜２５０Ｈに結合された８つの２次ＰＣＩバス２７０、すなわち、２７０Ａ〜２７０Ｈを示している。ＰＣＩアダプタ・スロット２５０は、ＰＣＩアダプタ・カードを受け入れるコネクタである場合もあれば、対応するＰＣＩ／ＰＣＩブリッジ２４０またはＰＣＩホスト・ブリッジ２３０を収容する電子基板上に直接埋め込まれたＰＣＩアダプタ・チップである場合もある。ロジカル・パーティション・オペレーティング・システムは、ＣＰＵからアダプタへのメモリ・マップ入出力のためにＣＰＵアドレスをＰＣＩアダプタ・メモリに「バインド」し、アダプタがマップされたメモリ・アドレスとの間で直接メモリ・アクセス（ＤＭＡ）操作を実行できるようにするために、メモリ・アドレスをアダプタにバインドする。
【００２６】
好ましい諸実施形態では、ＰＣＩホスト・ブリッジ２３０とＰＣＩアダプタ・スロット２５０との間のＰＣＩ／ＰＣＩブリッジ２４０の存在は、ＰＣＩアダプタ・スロット２５０内の個々のＰＣＩアダプタと、ＰＣＩホスト・ブリッジ２３０、ＣＰＵ１１０、およびメモリ１２０との間でシグナリングおよびアダプタ・バインディング隔離を可能にする。この隔離は種々のロジカル・パーティションへの個々のＰＣＩアダプタ・スロットの割当てを容易にするものであり、その結果、これらのロジカル・パーティションはＰＣＩ／ＰＣＩブリッジ２４０に共通して接続されたプラットフォーム・ハードウェアを共用することができるが、他のパーティションに割り当てられたアダプタの動作は特定のパーティションに割り当てられたアダプタの動作を妨害せず、いかなるパーティションまたはアダプタも他のパーティション／アダプタ・バインディングを使用できないようにアダプタ・アドレス・バインディングが実施される。単一ＰＣＩホスト・ブリッジに対する各スロットの関連付けなど、スロットレベルの割振りおよびバインディングを可能にするその他の隔離方法は、好ましい諸実施形態の範囲内であることに留意されたい。
【００２７】
図１に示した電源オン／電源オフ・スロット・メカニズム１２４は好ましくは、各ＰＣＩホスト・ブリッジ２３０または各ＰＣＩ／ＰＣＩブリッジ２４０のいずれかでスロット電源制御ハードウェアを制御する。図１に関連して前述した通り、電源オン／電源オフ・スロット・メカニズム１２４は、他のスロットを含む、そのプラットフォームの他の入出力コンポーネントへの電力の状態とは無関係に、特定のスロット２５０に電力を印加するかまたは除去することができる。最も好ましい実施形態では、その対応するスロット２５０への電力を制御する電源オン／電源オフ・スロット・メカニズム１２４の対象となる各ＰＣＩ／ＰＣＩブリッジ２４０内に電源オン／電源オフ制御ハードウェアが存在する。したがって、図２に示した構成の場合、ＰＣＩ／ＰＣＩブリッジ２４０Ａはスロット２５０Ａへの電力を制御する電源オン／電源オフ・ハードウェアを含み、ＰＣＩ／ＰＣＩブリッジ２４０Ｂはスロット２５０Ｂへの電力を制御する電源オン／電源オフ・ハードウェアを含み、各ＰＣＩ／ＰＣＩブリッジ２４０ごとに以下同様である。したがって、図２に示したシステムの場合、ＰＣＩ／ＰＣＩブリッジ２４０Ａ〜２４０Ｈのそれぞれは、それぞれのスロット２５０Ａ〜２５０Ｈへの電力を制御し、電源オン／電源オフ・スロット・メカニズム１２４によって制御される、電源オン／電源オフ・ハードウェアを有することになる。電源オン／電源オフ・ハードウェアは必ずしもスロットを物理的に電源遮断するわけではないことに留意されたい。好ましい諸実施形態は明白に、スロットおよびその関連アダプタを電源オン・リセット状態にするための任意の方法にも及ぶ。たとえば、いくつかのアダプタは、そのアダプタへの電力を個々に制御するためのコンポーネントなしに印刷回路基板上に埋め込むことができる。この場合、電源オン／電源オフ・ハードウェアは、アダプタへの電力を物理的に循環せずに、アダプタ上の１つまたは複数のメモリ位置に適切な値を書き込むことにより、そのデータのすべてをフラッシュし、アダプタをそれが最初に電源投入したときと同じ状態にすることにより、そのアダプタを電源オン・リセット状態にすることができるであろう。
【００２８】
図２に示した構成は、ＣＰＵ１１０とメモリ１２０とを収容する１つのエンクロージャ２１０にプラットフォーム・エレクトロニクスを分離し、別のエンクロージャ２２０にＰＣＩ入出力ハードウェア・コンポーネント（たとえば、２３０、２４０、２５０、２６０、および２７０）を分離する。これは、当技術分野で知られている一般的なタイプの分離である。しかし、小規模コンピュータ・システムでは、図２のすべてのエレメントを単一エンクロージャ内に収容させることが一般的であることに留意されたい。大規模システムでは、多くのＣＰＵおよびメモリ・カードと、より多くのＰＣＩホスト・ブリッジ２３０およびＰＣＩ／ＰＣＩブリッジ２４０を必要とする多くのＰＣＩアダプタ・スロットが存在する可能性があり、その結果、電子パッケージ化技術では、これらのハードウェア・エレメントを収容するために複数の電子エンクロージャを必要とする。好ましい諸実施形態は明白に、すべてが単一エンクロージャ内に収容されるか複数エンクロージャ間に分散されるかにかかわらず、任意の適切なハードウェア構成にも及ぶ。
【００２９】
好ましい諸実施形態では、エンクロージャ２２０のすべてのエレメントから電力を除去することを要求する可能性のある、そのエンクロージャの電源、入出力スロット、またはその他のコンポーネントなど、そのエンクロージャ２２０のコンポーネントに対してハードウェア・サービスを実行することが望ましい可能性がある。好ましい諸実施形態では、これは、まずそのエンクロージャ内の入出力スロットの制御をその割当てロジカル・パーティションからリソースおよびパーティション・マネージャに転送し、次にそのエンクロージャを電源オフしてハードウェア・サービスを実行し、そのエンクロージャを電源オンし、次に入出力スロットをその割当てロジカル・パーティションに転送して戻すことによって実施される。ロジカル・パーティションとリソースおよびパーティション・マネージャとの間でロックを転送するための入出力スロット・ロックおよび関連メカニズムは、ロジカル・パーティションが動作し続けている間のこの動作シーケンスを容易にするものである。リソースおよびパーティション・マネージャは、これらのハードウェア管理機能を実行するためにハードウェア・マネージャに併せて動作可能であることに留意されたい。
【００３０】
図３は、好ましい諸実施形態の範囲内で本発明を実現可能な特定のソフトウェア・コンポーネントを示すブロック図である。図３に示したソフトウェア・コンポーネントは好ましくは、図２に示したコンピュータ・システム２００などのハードウェア・プラットフォーム上で実行されることになることに留意されたい。Ｎ個のロジカル・パーティション１２５Ａ〜１２５Ｎは、それぞれのオペレーティング・システム１２６Ａ〜１２６Ｎを実行しているものとして示されている。ハイパーバイザ３００は、図１のリソースおよびパーティション・マネージャ１２１の特定の一実現例として示されている。ハイパーバイザ３００は、オペレーティング・システム・カーネル３１２を実行するハイパーバイザ・パーティション３１０を含む。オペレーティング・システム・カーネル３１２は、ディスパッチ可能かつ再配置可能であり、マルチタスキングおよびメモリ管理などのオペレーティング・システム・カーネルの典型的な機能を提供する。ハイパーバイザ・パーティション３１０は、他のロジカル・パーティションと同じように多くのことを実行するが、ユーザ・アプリケーションを提供せず、プラットフォーム・リソースを制御するための特殊権限を有する専用または隠れたパーティションであり、ＨｖＰｒｉｍａｒｙＣａｌｌインターフェース３３０を介してディスパッチ不能ハイパーバイザ３２０と通信することが許可されている唯一のパーティションであるという点で他のロジカル・パーティションとは異なっている。図３のハイパーバイザ・パーティション３１０は図１のパーティション１２５に対応する可能性があり、これは、オペレーティング・システム・カーネル３１２も図１のオペレーティング・システム１２６に対応することを意味する。現行のｉＳｅｒｉｅｓ実現例では、ハイパーバイザ・パーティション３１０は「基本パーティション」と呼ぶことができるであろう。ＨｖＰｒｉｍａｒｙＣａｌｌインターフェース３３０は、特権のあるディスパッチ不能ハイパーバイザ・モードのプロセッサによって実行されるハイパーバイザ機能を呼び出すためにハイパーバイザ・パーティション３１０によって使用される。
【００３１】
ロジカル・パーティションはＨｖＣａｌｌインターフェース３４０を介してハイパーバイザと通信するが、このインターフェースは特権のあるディスパッチ不能ハイパーバイザ３２０を呼び出すためにロジカル・パーティションによって使用される。ディスパッチ不能ハイパーバイザ３２０は、ディスパッチ不能かつ再配置不能である監視エージェントであり、物理アドレスにアクセスすることによって機能する。ディスパッチ不能ハイパーバイザ３２０は、１）ハイパーバイザ・パーティションがロジカル・パーティション実行をスケジューリングまたはディスパッチしている間のＨｖＰｒｉｍａｒｙＣａｌｌインターフェース３３０、２）プラットフォーム・ハードウェア割込み、および３）ＨｖＣａｌｌインターフェース３４０によって定義され、ロジカル・パーティション実行スレッドをハイパーバイザ実行（すなわち、特権）モードにするプロセッサ監視呼出し命令を使用するロジカル・パーティションのいずれかにより呼び出される特権モード機能を提供する。
【００３２】
ハイパーバイザ・ハードウェア・マネージャ３５０および入出力スロット・ロック１２３は好ましくは、図３に示した通り、ディスパッチ不能ハイパーバイザ３２０内のカプセル化された機能であるが、異なる位置に実現することも可能である。ハイパーバイザ・ハードウェア・マネージャ３５０は、図２のＰＣＩホスト・ブリッジ２３０およびＰＣＩ／ＰＣＩブリッジ２４０にアクセスしてこれらを制御し、ＰＣＩアダプタ・スロット２５０のハードウェア状態を追跡して施行するためのハイパーバイザ機能をカプセル化する。スロット・ロック１２３は、ロックの所有権を設定し、ハイパーバイザとロジカル・パーティションとの間のスロット・ロックの転送を直列化するための機能をカプセル化する。
【００３３】
ハイパーバイザ・パーティション３１０は、スロット状態およびスロット・ロック遷移を実施するためにディスパッチ不能ハイパーバイザ３２０と対話する。ハイパーバイザ・パーティション３１０は、システム管理者インターフェース３６０のエージェントであり、そのインターフェースによりシステム管理者３７０によって要求されたロジカル・パーティション構成およびプラットフォーム・サービス操作を実行する。システム管理者２７０は好ましくは管理コンソール３７２とハードウェア管理コンソール３７４とを含むことに留意されたい。
【００３４】
ディスパッチ不能ハイパーバイザ３２０がハイパーバイザ・パーティション３１０内の機能との通信を開始するために、ディスパッチ不能ハイパーバイザ３２０はハイパーバイザ・パーティション３１０によってモニターされたイベント・メッセージ・キュー３１４にメッセージをエンキューする。一般に、ディスパッチ不能ハイパーバイザ３２０からディスパッチ可能ハイパーバイザ３１０へのイベント・メッセージは、ブリッジ・ハードウェアのリセットおよび初期設定、仮想アドレス変換テーブルの走査、ハードウェア整定時間（hardware settle time）に関連するリアルタイム遅延の実行など、複雑なハードウェア制御シーケンスを実行するために使用する。ハイパーバイザ・パーティション３１０内の機能は、ＨｖＰｒｉｍａｒｙＣａｌｌインターフェース３３０を呼び出して、ディスパッチ不能ハイパーバイザ３２０が要求した操作の完了をシグナル通知し、これらのハードウェア状態をディスパッチ不能ハイパーバイザ機能と同期させる。
【００３５】
入出力スロットは概して、ロジカル・パーティションによって使用されるプラットフォーム・リソースの構成の一部として、ロジカル・パーティションに割り当てられる。しかし、任意の所与の時点で、システム管理者機能は、入出力スロットを使用するロジカル・パーティションから他のロジカル・パーティションへの入出力スロットの転送を開始するか、または、そのロジカル・パーティションがアクティブである間にロジカル・パーティションの構成からその入出力スロットを単純に除去することができる。同様に、システム・サービス機能は、そのスロットの個別サービスまたは同じエンクロージャ内の当該スロットまたはその他のスロットに対する妨害なしに実行できない当該エンクロージャ内の他のハードウェアのサービスなどのサービス機能を実行するために、アクティブ・ロジカル・パーティションからハイパーバイザまたはサービス・エージェントへのスロット制御の転送を必要とする可能性がある。
【００３６】
好ましい諸実施形態のスロット・ロックは、ロジカル・パーティションに関する構成データベースから入出力スロットを除去せずに、ロジカル・パーティション・オペレーティング・システムとハイパーバイザとの間、または制御状態と非制御状態または未割当て状態との間で入出力スロットの制御の動的転送を容易にする。スロット・ロックは、ロジカル・パーティションまたはハイパーバイザに割り当てられる場合もあれば、いかなるエンティティ（ロジカル・パーティションおよびハイパーバイザを含む）にも割り当てられない場合もある。スロット・ロックは、ハイパーバイザとロジカル・パーティションとの間の相互排除を可能にするだけでなく、スロットの電源およびリセット状態を施行するための同期点も提供し、ＯＳ仮想アドレス空間とアダプタＰＣＩメモリまたは入出力空間（メモリ・マップ・バインディング）との間ならびにＯＳストレージとそのストレージへのアダプタＤＭＡマッピング（たとえば、ロジカル・パーティション・メモリ内のストレージ・アドレスに変換されるＰＣＩメモリ空間内の間接アドレス）との間のＯＳバインディングを除去する。
【００３７】
ロジカル・パーティション・オペレーティング・システムは、本明細書でオフに変更（Vary Off）と呼ばれる機能を使用して、スロットの制御をハイパーバイザまたは未割当て状態に解除することができ、本明細書でオンに変更（Vary On）と呼ばれる機能を使用して、ハイパーバイザからスロットの制御を受け取ることができる。ＰＣＩアダプタ・スロットをオフに変更し、オンに変更するためにハイパーバイザと対話するロジカル・パーティション・オペレーティング・システムの一般的な概念および方法は、ロジカル・パーティショニングを可能にするＡＳ／４００およびｅＳｅｒｖｅｒ（ｉＳｅｒｉｅｓおよびｐＳｅｒｉｅｓ（ＩＢＭ  Ｃｏｒｐｏｒａｔｉｏｎの商標））コンピュータ・システムで実現されている。好ましい諸実施形態では、スロット・ロックの新しい特徴を使用して、オンに変更プロセスおよびオフに変更プロセスを制御し、スロット電源状態、リセット状態、およびオペレーティング・システム・バインディング状態の施行のための同期点を提供する。加えて、好ましい諸実施形態は、使用のために入出力スロットを準備し、ロジカル・パーティション電源オン操作、ロジカル・パーティション電源オフ操作、およびロジカル・パーティション・リブート操作に関してスロット・ロックを使用してハイパーバイザとロジカル・パーティションとの間で入出力スロットを転送するための装置および方法も提供する。
【００３８】
ハイパーバイザ３００の機能は図４〜８の流れ図により詳細に示されている。図４は、ロジカル・パーティションをリブートするための方法４００の流れ図を示している。ハイパーバイザ３００がロジカル・パーティションをリブートすることを決定する場合もあれば、ロジカル・パーティションがシャットダウンしており、リブートしなければならないことをそのロジカル・パーティション自体がハイパーバイザ３００にシグナル通知する場合もあることに留意されたい。図３のハイパーバイザ３００がロジカル・パーティションをリブートする必要がある場合、ハイパーバイザ・パーティション３１０は、そのロジカル・パーティション内のオペレーティング・システム１２６にリブートをシグナル通知する（ステップ１ａ）。したがって、ハイパーバイザ３００が図３のロジカル・パーティション１２５Ａをリブートしたい場合、ハイパーバイザ（ＨＶ）パーティション３１０は、リブートのためにシャットダウンするよう、ロジカル・パーティション・オペレーティング・システム１２６Ａにシグナル通知する。ロジカル・パーティション・オペレーティング・システム１２６Ａは、その入出力アダプタを準備し、シャットダウンのためにクリーンアップするためのハウスキーピング作業（chore）を実行し、次に、リブートを開始するよう、ＨＶパーティション３１０にシグナル通知する（ステップ１ｂ）。そのパーティションがリブートする必要があると判断した場合、そのパーティションは、その入出力アダプタを準備し、シャットダウンのためにクリーンアップするためのハウスキーピング作業を実行し、次に、ハイパーバイザがステップ１ａでリブートを要求せずに、リブートを開始するよう、ＨＶパーティション３１０にシグナル通知する（ステップ１ｂ）。次に、ＨＶパーティション３１０は、ロジカル・パーティションＣＰＵの実行を停止し（ステップ２）、ロジカル・パーティション・オペレーティング・システムを終了する。通常シャットダウンでは、ＬＰ  ＯＳ１２６は、シャットダウンする前にそのハウスキーピング作業を完了する。しかし、ロジカル・パーティションがクラッシュした場合、シャットダウンする前にハウスキーピング作業のいずれかを完了できない可能性がある。
【００３９】
次に、ＨＶパーティション３１０は、ＨｖＰｒｉｍａｒｙＣａｌｌインターフェース３３０に対するｓｅｔＳｌｏｔＬｏｃｋ機能を呼び出す（ステップ３）。これは、現在、リブート中のパーティションの制御下にあるスロットの制御をハイパーバイザに転送するものである。ｓｅｔＳｌｏｔＬｏｃｋ呼出しとともに、３つのパラメータ、すなわち、ｓｌｏｔ、ｆｒｏｍ＿ＬＰ、ｔｏ＿ＨＶが渡される。ｓｌｏｔパラメータは関心のあるスロットを指定するものである。ｆｒｏｍ＿ＬＰパラメータはリブート中のロジカル・パーティション（現在、そのスロットを制御しているもの）を指定し、ｔｏ＿ＨＶパラメータはハイパーバイザ３００によって制御すべきスロット・ロックが転送中であることを指定するものである。ｓｅｔＳｌｏｔＬｏｃｋ呼出しを実行する際に、ハイパーバイザはステップ４を実行し、スロット・ロック・ストレージに関するマルチプロセッサ・スレッド・ロックを取得する。この特定の実現例では、これは、他のいかなるマルチプロセッサＣＰＵスレッドも、スロット・ロック・ストレージがロックされている間に任意のスロット・ロックにアクセスできないことを意味する。しかし、スロット・ロック・ストレージ全体をロックする代わりに、個々にロック可能なスロット・ロックを提供することは、等しく好ましい諸実施形態の範囲内である。次に、スロット・ロックの状況をチェックして、それが現在、リブート中のロジカル・パーティションによって所有されているかどうか（ｌｏｃｋ［ｓｌｏｔ］＝ＬＰであるかどうか）を確認する。スロット・ロックがリブート中のロジカル・パーティションによって所有されている場合、スロット・ロックの所有権はハイパーバイザに転送され（ｌｏｃｋ［ｓｌｏｔ］＝ＨＶ）、戻り状況はＳＵＣＣＥＳＳに設定される。スロット・ロックがリブート中のロジカル・パーティションによって所有されていない場合、戻り状況はＦＡＩＬに設定される。次に、スロット・ロック・ストレージに関するマルチプロセッサ（ＭＰ）スレッド・ロックが解除される。次に、ハイパーバイザはハイパーバイザ・ハードウェア・マネージャ（ＨＶ  ＨＷ  ＭＧＲ）３５０と対話する（ステップ５）。ステップ４からのスロット・ロック状況がＳＵＣＣＥＳＳである場合、スロット入出力および制御権限はハイパーバイザに渡され、このようなバインディングを確立または使用するためのこのロジカル・パーティションあるいはその他のロジカル・パーティションまたは入出力スロット内の入出力アダプタによる後続試行が失敗するように、スロットに対するロジカル・パーティション・バインディングは除去され使用不可になる。
【００４０】
次に、ＨＶパーティション３１０は、ステップ６〜９でＨｖＰｒｉｍａｒｙＣａｌｌインターフェース３３０を呼び出す。ステップ６では、スロットに関するＰＣＩ／ＰＣＩブリッジをリセットし、スロットに対してリセット信号ＰＣＩ  ＲＳＴをアサートするための呼出しが行われる。ステップ７では、ＰＣＩ／ＰＣＩブリッジを再初期設定するための呼出しが行われる。ステップ８では、スロットを電源オンするための呼出しが行われる。スロットはステップ６でリセットされたが、電源遮断されていないので、ステップ８は省略できることに留意されたい。ステップ８は概して、ハイパーバイザ・パーティションが入出力スロットに関連しないリブート処理を実行した後で実行される。ステップ９では、関心のあるスロットを指定し、所有権がハイパーバイザから（ｆｒｏｍ＿ＨＶ）ロジカル・パーティションに（ｔｏ＿ＬＰ）転送されることを指定するｓｅｔＳｌｏｔＬｏｃｋ呼出しが行われる。次に、ハイパーバイザは、リブート中のロジカル・パーティションにスロット・ロックを割り当てようと試みる（ステップ１０）。まず、他のスレッドが同時にスロット・ロックを取得しようと試みないようにするために、スロット・ロックに関するマルチプロセッサ・スレッド・ロックが達成される。スロット・ロックがハイパーバイザによって所有されている場合、スロット・ロックはリブート中のロジカル・パーティションに設定され、状況はＳＵＣＣＥＳＳに設定される。スロット・ロックがそのロジカル・パーティションによって所有されていない場合、状況はＦＡＩＬに設定される。次に、マルチプロセッサ・スレッド・ロックは解除される。次に、ステップ１１では、ＨｖＰｒｉｍａｒｙＣａｌｌ３３０がスロット・ロックの状況を判断する。スロット・ロック状況がＳＵＣＣＥＳＳである場合、ハイパーバイザ・ハードウェア・マネージャ３５０が呼び出され、スロット入出力および制御権限をロジカル・パーティションに設定し、スロット制御ハードウェアを再初期設定し、スロットに対するロジカル・パーティション・バインディングを使用可能にする。
【００４１】
ステップ３〜１１はロジカル・パーティションに割り当てられた各スロットごとに実行されることに留意されたい。すべての入出力スロットについてステップ３〜１１が実行されると、ロジカル・パーティション・オペレーティング・システム１２６の実行を開始することができる（ステップ１２）。好ましい諸実施形態では、これらのステップのいくつかは直列化することができ、その他のステップは種々のスロットについて並列実行することができる。たとえば、スロットは、一度に１つずつハイパーバイザに転送することができる。次に、大量の並列処理によってすべてのスロットをリセットし、初期設定することができる。パーティション・リブート処理が実行されると、スロットは大量の並列処理によって電源オンされる。最後に、スロットは、一度に１つずつ元通りそのパーティションに割り振られる。
【００４２】
図５は、好ましい諸実施形態の範囲内でロジカル・パーティションを電源オフするための方法５００を示している。ロジカル・パーティションの電源オフは、システム管理者５１０からの要求（ステップ１ａ）に応答してまたはスケジューリングした電源遮断（ステップ１ｂ）に応答して行うことができる。ロジカル・パーティション・オペレーティング・システム１２６は電源遮断するようシグナル通知され（ステップ２ａ）、ロジカル・パーティションが準備されると、ハイパーバイザへの信号が続く（ステップ２ｂ）。リブートの場合のように、ロジカル・パーティションは、それがシャットダウンの準備ができたことをハイパーバイザにシグナル通知する前に、ハウスキーピングおよび入出力アダプタ準備を実行する。ステップ２ｂに続いて、ハイパーバイザは、ロジカル・パーティションＣＰＵの実行を停止し（ステップ３）、ロジカル・パーティション・オペレーティング・システムを終了して、その論理電源オフ状態を確立する。次に、関心のあるスロットを指定するｓｌｏｔと、それからスロット・ロック所有権が転送されるロジカル・パーティションを指定するｆｒｏｍ＿ＬＰと、スロット・ロック所有権がハイパーバイザに転送されることを指定するｔｏ＿ＨＶという３つのパラメータを指定して、ＨｖＰｒｉｍａｒｙＣａｌｌインターフェース３３０についてｓｅｔＳｌｏｔＬｏｃｋ機能が呼び出される（ステップ４）。これに応答して、ＨｖＰｒｉｍａｒｙＣａｌｌインターフェース３３０は、ステップ５に示す通り、スロット・ロック１２３と対話する。まず、それは、スロット・ロックに関するマルチプロセッサ・スレッド・ロックを取得する。スロット・ロックが現在、電源遮断中のロジカル・パーティションによって所有されている場合（ｌｏｃｋ［ｓｌｏｔ］＝ＬＰ）、スロット・ロックはハイパーバイザに再割当てされ（ｌｏｃｋ［ｓｌｏｔ］＝ＨＶ）、戻り状況はＳＵＣＣＥＳＳに設定される。スロット・ロックが現在、電源遮断中のロジカル・パーティションによって所有されていない場合、戻り状況はＦＡＩＬに設定される。戻り状況がその適切な値に設定された後、マルチプロセッサ・スレッド・ロックが解除される。
【００４３】
スロット・ロック状況がＳＵＣＣＥＳＳである場合、ハイパーバイザ・ハードウェア・マネージャ３５０が次にステップ６で呼び出される。スロット制御ハードウェアおよびそのスロットに対するロジカル・パーティション・バインディングはリセットされ、スロット入出力および制御権限はハイパーバイザに転送される。ステップ６が完了すると、ステップ７は、スロットに関するブリッジ・ハードウェアをリセットし、スロットに対してリセット信号ＰＣＩ  ＲＳＴをアサートし、ステップ８はスロット電源オフを設定する。ステップ９は、ハイパーバイザからスロット・ロックを転送してそのスロット・ロックを未割当て状態にするための呼出しであり、これはステップ１０で実現される。ステップ４〜１０は、電源遮断中のロジカル・パーティションに割り当てられた各スロットごとに実行されることに留意されたい。
【００４４】
図６は、好ましい諸実施形態によりロジカル・パーティションを電源オンするための方法６００を示している。このプロセスは、システム管理者５１０がロジカル・パーティションを電源オンすることを要求したときに始まる（ステップ１）。ロジカル・パーティション電源オンは、ＨＶパーティション３１０のスケジューリングしたタスクにすることもできる。ＨＶパーティション３１０は、未割当て状態からハイパーバイザにスロットを転送するためにｓｅｔＳｌｏｔＬｏｃｋ呼出しを発行する（ステップ２）。これに応答して、ステップ３が実行され、マルチプロセッサ・スレッド・ロックを取得し、スロット・ロックが未割当て状態である場合、それはスロット・ロックをハイパーバイザに割り当てる。ステップ３でスロット・ロックがハイパーバイザに正常に転送された場合のみ、図６の残りのステップが実行される。
【００４５】
選択されたスロットに関するブリッジ・スロット・ハードウェアが初期設定され（ステップ４）、次にそのスロットが電源オンされる（ステップ５）。次に、スロット・リセット信号ＰＣＩ  ＲＳＴがアサート解除され（ステップ６）、そのリセット状態からスロットを取り出し、それが機能できるようにする。次に、関心のあるスロット（ｓｌｏｔ）と、関心のあるスロット・ロックが現在、ハイパーバイザに属していること（ｆｒｏｍ＿ＨＶ）と、関心のあるスロット・ロックの所有権が電源投入中のロジカル・パーティションに転送されること（ｔｏ＿ＬＰ）とを指定するｓｅｔＳｌｏｔＬｏｃｋ呼出しが行われる（ステップ７）。
【００４６】
次に、ステップ８が実行され、スロット・ロックに関するマルチプロセッサ・スレッド・ロックを取得し、そのスロット・ロックが現在、ハイパーバイザによって所有されているかどうかを判断し、そうである場合、スロット・ロックをロジカル・パーティションに割り振る。次に、戻り状況はＳＵＣＣＥＳＳに設定される。スロット・ロックがすでに異なるパーティションによって所有されている場合、戻り状況はＦＡＩＬに設定される。戻り状況がその適切な値に設定されると、マルチプロセッサ・スレッド・ロックが解除される。
【００４７】
次に、ステップ９が実行され、スロット・ロック状況をチェックし、それがＳＵＣＣＥＳＳを示す場合、スロット入出力および制御権限がロジカル・パーティションに設定され、スロット制御ハードウェアが初期設定され、スロットからロジカル・パーティションへのバインディングが使用可能になる。ステップ２〜９は、電源投入中のターゲット・ロジカル・パーティションに割り当てられた各スロットごとに実行されることに留意されたい。ステップ２〜９がターゲット・ロジカル・パーティションに割り当てられた各スロットごとに実行されると、ロジカル・パーティション・オペレーティング・システム１２６の実行が開始される（ステップ１０）。
【００４８】
上述の通り、いずれかのパーティションを電源オフまたはリブートせずに、入出力スロットの制御をあるロジカル・パーティションから他のロジカル・パーティションに転送可能な時期がある。同様に、同じくそのロジカル・パーティションを電源オフまたはリブートせずに、メンテナンスのために入出力スロットの制御をあるロジカル・パーティションからハイパーバイザに転送可能な時期がある。「オフに変更」という機能は、プラットフォーム・パーティション構成データベース内のスロットの所有権を放棄せずに、アクティブ・パーティションがスロットの制御を動的に放棄できるようにするものである。同様に、「オンに変更」という機能は、アクティブ・パーティションがプラットフォーム・パーティション構成データベースによりそれが所有しているスロットの制御を動的に獲得できるようにするものである。図７および図８は、それぞれ、オフに変更機能およびオンに変更機能に関する詳細な流れ図を示している。
【００４９】
次に図７を参照すると、システム管理者５１０またはその他のシステム・マネージャ（ワークロード・マネージャ・アプリケーションなど）がロジカル・パーティション・オペレーティング・システム１２６にオフに変更メッセージを送信したときに（ステップ１）、好ましい諸実施形態によりオフに変更機能を実現するための方法７００が開始される。次に、ロジカル・パーティション・オペレーティング・システムはＨｖＣａｌｌインターフェース３４０を呼び出して、スロットに対してスロット・リセット信号ＰＣＩ  ＲＳＴをアサートする（ステップ２）。次に、ＰＣＩ  ＲＳＴ信号をアサートするために、ハイパーバイザ・ハードウェア・マネージャ３５０が呼び出される（ステップ３）。これに応答して、ハイパーバイザ・ハードウェア・マネージャ３５０は、ディスパッチ不能ハイパーバイザがハイパーバイザ・パーティションと通信できるようにするメッセージをイベント・キューに乗せる（ステップ４）。ＨＶパーティション３１０は、メッセージの有無についてイベント・キューをモニターし、ステップ４でキューに入れられたメッセージを確認すると、ＨｖＰｒｉｍａｒｙＣａｌｌインターフェース３３０を呼び出してＰＣＩ  ＲＳＴ信号をアサートする（ステップ５）。次に、ＰＣＩ  ＲＳＴ信号をアサートするために、ハイパーバイザ・ハードウェア・マネージャ３５０が呼び出される（ステップ６）。ＨＶパーティション３１０は、ハードウェアの状態が落ち着くようにするためにある程度の期間、遅延する。適切な遅延を待った後、ＨＶパーティション３１０は、ＰＣＩ  ＲＳＴ処理が完了したことをディスパッチ不能ハイパーバイザにシグナル通知する（ステップ７）。次に、ＰＣＩ  ＲＳＴ処理の完了がハイパーバイザ・ハードウェア・マネージャにシグナル通知される（ステップ８）。
【００５０】
次に、ロジカル・パーティション・オペレーティング・システム１２６はＨｖＰｒｉｍａｒｙＣａｌｌインターフェース３３０を呼び出して、スロットの電源オフを要求する（ステップ９）。これはハイパーバイザ・ハードウェア・マネージャを呼び出し（ステップ１０）、ＨＶパーティション３１０に対してイベント・キュー内の電源オフ・スロット・イベントを発生する（ステップ１１）。ＨＶパーティション３１０は、ステップ１１でイベント・キュー上の「スロット電源オフ」というロジカル・パーティション・イベントを確認すると、ＨｖＰｒｉｍａｒｙＣａｌｌインターフェース３３０を呼び出して、スロットを電源オフし、ブリッジ・ハードウェアをリセットする（ステップ１２）。次に、これはハイパーバイザ・ハードウェア・マネージャに渡される（ステップ１３）。ＨＶパーティション３１０は、この場合も、ハードウェアが落ち着くようにするために所定の遅延を待ち、ＨｖＰｒｉｍａｒｙＣａｌｌインターフェース３３０を呼び出して、スロット電源オフ処理が完了したことをディスパッチ不能ハイパーバイザにシグナル通知する（ステップ１４）。次に、これはハイパーバイザ・ハードウェア・マネージャにリレーされる（ステップ１５）。この詳細な実現例では、ＰＣＩ  ＲＳＴ信号がまず、スロットに対応するＰＣＩ／ＰＣＩブリッジの下の２次バスをリセットするためにアサートされ、次にブリッジ自体がリセットされるが、これはそのブリッジの下にあるすべてのものを隔離していたものである。この時点で、スロットは電源遮断される。
【００５１】
また、ＬＰ  ＯＳ１２６は、ＨｖＣａｌｌインターフェース３４０も呼び出して、アダプタに対するＯＳバインディングを解除する（ステップ１６）。これに応答して、ＨｖＣａｌｌインターフェース３４０はハイパーバイザ・ハードウェア・マネージャ３５０を呼び出して、アダプタ・マッピングをアンバインドする（ステップ１７）。次に、そのスロットに関するマッピングをアンバインドするためのイベント・メッセージがイベント・キューに入れられる（ステップ１８）。次に、ＨＶパーティション３１０は、このスロット内のアダプタに関するページ・テーブルおよびＤＭＡバインディングをマップ解除する（ステップ１９）。次に、ＨＶパーティション３１０は、メモリ・マッピングがアンバインドされたことをシグナル通知する（ステップ２０）。ＨｖＰｒｉｍａｒｙＣａｌｌ３３０はこれをハイパーバイザ・ハードウェア・マネージャにリレーする（ステップ２１）。
【００５２】
ＬＰ  ＯＳ１２６は、ＨｖＣａｌｌインターフェース３４０を呼び出して、スロットに関する制御権限を解除する（ステップ２２）。これに応答して、ステップ２３が実行される。スロットが電源オフされ、バインディングがマップ解除された場合、スロット入出力および制御権限はハイパーバイザに設定され、ＳＵＣＣＥＳＳが返される。そうではない場合、ＦＡＩＬが返される。次に、ステップ２４が実行される。まず、マルチプロセッサ・スレッド・ロックが入手される。スロット・ロックが現在、ロジカル・パーティションによって所有され（ｌｏｃｋ［ｓｌｏｔ］＝ＬＰ）、ステップ２３がＳＵＣＣＥＳＳを示した場合、スロット・ロック所有権は放棄され（ｌｏｃｋ［ｓｌｏｔ］＝ｕｎａｓｓｉｇｎｅｄ）、戻り状況はＳＵＣＣＥＳＳに設定される。そうではない場合、戻り状況はＦＡＩＬに設定される。次に、マルチプロセッサ・スレッド・ロックが解除される。次に、システム管理者５１０またはステップ１でオフに変更機能を要求したその他のエージェントは、ステップ１〜２３のシーケンスから返された状況を使用して、オフに変更機能が成功したかどうかを判断することになる。この時点でスロットは放棄されており、異なるパーティションに転送するかまたはハードウェア・サービス・ツールによって引き継ぐことができる。
【００５３】
図８の方法８００は、好ましい諸実施形態の範囲内でオンに変更メッセージを実現する際に実行される諸ステップを示している。まず、システム管理者またはその他のシステム・マネージャは、ロジカル・パーティション・オペレーティング・システム１２６にオンに変更メッセージを送信する（ステップ１）。次に、ＬＰ  ＯＳ１２６は、ＨｖＣａｌｌインターフェース３４０を呼び出して、そのスロットに関する制御権限を獲得する（ステップ２）。これに応答して、ステップ３が実行され、スロット・ロックに関するマルチプロセッサ・スレッド・ロックを取得する。スロット・ロックが現在、要求側パーティションによって所有されているかまたは未割当て状態である場合、スロット・ロックはロジカル・パーティションに割り当てられ、戻り状況はＳＵＣＣＥＳＳに設定される。スロット・ロックがこのロジカル・パーティションによって所有されていない場合、戻り状況はＦＡＩＬに設定される。次に、マルチプロセッサ・スレッド・ロックが解除される。
【００５４】
ステップ３に関して状況がＳＵＣＣＥＳＳであると想定して、ステップ４〜２０を実行することができる。ステップ４では、スロットに関するスロット入出力および制御権限がロジカル・パーティションに設定される（ステップ４）。ＬＰ  ＯＳ１２６は、ＨｖＣａｌｌインターフェース３４０を呼び出して、ＤＭＡおよび仮想アドレス（ＶＡ）バインディングを使用可能にする（ステップ５）。これによりハイパーバイザ・ハードウェア・マネージャが呼び出される（ステップ６）。これに応答して、ハイパーバイザ・ハードウェア・マネージャ３５０は、スロット内のアダプタに関するＤＭＡおよびＶＡバインディングを使用可能にする。ＬＰ  ＯＳ１２６は、ＨｖＣａｌｌインターフェース３４０を呼び出して、スロットを電源オンする（ステップ７）。これによりハイパーバイザ・ハードウェア・マネージャが呼び出される（ステップ８）。これに応答して、スロットを電源オンすることを要求するイベントがイベント・キューに入れられる（ステップ９）。これに応答して、ＨＶパーティション３１０はＨｖＰｒｉｍａｒｙＣａｌｌインターフェース３３０を呼び出して、ブリッジを初期設定し、スロットを電源オンする（ステップ１０）。これによりハイパーバイザ・ハードウェア・マネージャが呼び出される（ステップ１１）。スロットが電源オンされ、安定していることを保証するために適切な遅延を待った後、電源オン処理が完了したことを示すメッセージが送信される（ステップ１２）。次に、電源オン処理の完了がハイパーバイザ・ハードウェア・マネージャにシグナル通知される（ステップ１３）。
【００５５】
ＬＰ  ＯＳ１２６は、ＨｖＣａｌｌインターフェース３４０を呼び出して、スロットに対してＰＣＩ  ＲＳＴ信号をアサート解除する（ステップ１４）。これによりハイパーバイザ・ハードウェア・マネージャが呼び出される（ステップ１５）。これに応答して、ＰＣＩ  ＲＳＴ信号がアサート解除されることを要求するイベント・メッセージがイベント・キューに書き込まれる（ステップ１６）。次に、ＰＣＩ  ＲＳＴ信号をアサート解除するためにＨｖＰｒｉｍａｒｙＣａｌｌが行われ（ステップ１７）、それがハイパーバイザ・ハードウェア・マネージャに渡される（ステップ１８）。これに応答して、ディスパッチ不能ハイパーバイザはスロットに対してＰＣＩ  ＲＳＴ信号をアサート解除する。スロットがリセット状態を脱し、安定していることを保証するために適切な遅延を待った後、ＨＶパーティション３１０はＨｖＰｒｉｍａｒｙＣａｌｌインターフェース３３０を呼び出して、ＰＣＩ  ＲＳＴ処理が完了したことを示す（ステップ１９）。ＰＣＩ  ＲＳＴ処理の完了はハイパーバイザ・ハードウェア・マネージャにも伝達される（ステップ２０）。この時点で、ロジカル・パーティションは、スロットの制御を獲得しており、そのスロットを使用して動作を再開することができる。
【００５６】
好ましい諸実施形態は、スロットに関する操作を実行する前に入手しなければならないスロット・ロックを提供することにより、また、そのスロットの制御がエンティティ間で転送可能になる前にスロットが電源オフされ、もう一度、電源オンされることを保証することにより、従来技術に比べて重大な進歩をもたらすものである。スロットは、ロジカル・パーティションまたはハイパーバイザによって制御される場合もあれば、割り当てられない場合もある。ハードウェア・マネージャなど、ハイパーバイザの制御下にある様々なエージェントもスロットを制御できることに留意されたい。相互排除的なスロット・ロックは、競合するエンティティ同士によるスロットへの非競合アクセスを保証する。スロットがロジカル・パーティションから除去されるときに、そのスロットを電源遮断すると、アダプタ内のデータに関するデータ保全性の問題が解消され、アダプタがロジカル・パーティションに割り振られるときにそのアダプタが必ず電源オン・リセット状態になっていることが保証される。
【００５７】
当業者であれば、多くの変形例が本発明の範囲内で可能であることが分かるであろう。したがって、その好ましい諸実施形態に関連して本発明を特に図示し説明してきたが、当業者であれば、本発明の精神および範囲から逸脱せずに、形式および詳細の点で上記その他の変更が可能であることを理解できるであろう。たとえば、ＰＣＩスロットは独立して制御可能な特定のタイプのリソースの一例として示されているが、ＰＣＩスロットに加えてその他のタイプのリソースも好ましい諸実施形態の範囲内で制御できるであろう。たとえば、ＰＣＭＣＩＡスロット、Ｓ３９０チャネルまたは制御装置など、様々な種々のタイプの入出力スロットまたはアダプタは、好ましい諸実施形態の教示を使用して制御できるであろう。好ましい諸実施形態により制御可能なその他のタイプの同様のリソースとしては、入出力バス、入出力通信チャネル（Ｉｎｆｉｎｉｂａｎｄキュー・ペアなど）、仮想スロットまたはデバイス、ＣＰＵ、およびメモリ・ブロックを含む。
【図面の簡単な説明】
【００５８】
【図１】好ましい諸実施形態によりロジカル・パーティショニングおよび入出力リソース割振りをサポートするコンピュータ装置のブロック図である。
【図２】好ましい諸実施形態によりロジカル・パーティション・コンピュータ・システム内で使用可能な１つの特定のハードウェア実現例を示す、より詳細なブロック図である。
【図３】好ましい諸実施形態により図２に示したハードウェア・システム上で実現可能な特定のロジカル・パーティション・ソフトウェア実現例のブロック図である。
【図４】好ましい諸実施形態によりロジカル・パーティションをリブートするための方法の流れ図である。
【図５】好ましい諸実施形態によりロジカル・パーティションをシャットダウンするための方法の流れ図である。
【図６】好ましい諸実施形態によりロジカル・パーティションを電源投入するための方法の流れ図である。
【図７】好ましい諸実施形態によりロジカル・パーティションが所有するスロットの制御を放棄するための方法の流れ図である。
【図８】好ましい諸実施形態によりロジカル・パーティションが所有するスロットの制御を取り戻すための方法の流れ図である。
【図１】
0004568271.tif 000002
【図２】
0004568271.tif 000003
【図３】
0004568271.tif 000004
【図４】
0004568271.tif 000005
【図５】
0004568271.tif 000006
【図６】
0004568271.tif 000007
【図７】
0004568271.tif 000008
【図８】
0004568271.tif 000009