(57)【要約】【課題】複数の専用パーティション・アジャンクト・インスタンスを介して、複数の論理パーティションに対し、データ処理システムの自己仮想化入出力デバイスへのアクセスを提供する。【解決手段】アクセスは、以下のことによって構築される：各論理パーティションを、１つ以上の関連パーティション・アジャンクト・インスタンスにインターフェース接続することであって、各パーティション・アジャンクト・インスタンスは、関連論理パーティションを、自己仮想化入出力デバイスの仮想機能またはキュー・ペアのうちの１つに連結し、各パーティション・アジャンクト・インスタンスは、別個のディスパッチ可能状態にあり、さらにそれぞれの論理パーティションまたはデータ処理システムのハイパーバイザから供与された仮想アドレス空間を使用して作成され、各パーティション・アジャンクト・インスタンスは、自己仮想化入出力デバイスの仮想機能またはキュー・ペア用のデバイス・ドライバを含む、インターフェース接続すること；および、各論理パーティションに、その論理パーティションのそれぞれのパーティション・アジャンクト・インスタンス（単数または複数）を介して自己仮想化入出力デバイスの仮想機能またはキュー・ペアにインターフェース接続される少なくとも１つの仮想入出力を備えること。【選択図】図２８
2011519089.tif 000002
【特許請求の範囲】
【請求項１】
データ処理システムの複数の論理パーティション用に、自己仮想化入出力デバイスへのアクセスを構築する方法であって、前記方法は、
前記複数の論理パーティションの各論理パーティションを少なくとも１つの関連パーティション・アジャンクト・インスタンスにインターフェース接続するステップであって、各パーティション・アジャンクト・インスタンスは、前記複数の論理パーティションのうちの自身の関連論理パーティションを、前記自己仮想化入出力デバイスの仮想機能またはキュー・ペアのうちの１つに連結し、各パーティション・アジャンクト・インスタンスは、別個のディスパッチ可能状態を含み、さらに前記関連論理パーティションまたは前記データ処理システムのハイパーバイザから供与された仮想アドレス空間を使用して作成され、各パーティション・アジャンクト・インスタンスは、前記自己仮想化入出力デバイスの前記仮想機能またはキュー・ペア用のデバイス・ドライバを含む、インターフェース接続するステップと、
前記複数の論理パーティションの各論理パーティションに、前記論理パーティションの少なくとも１つの関連パーティション・アジャンクト・インスタンスを介して前記自己仮想化入出力デバイスの前記仮想機能またはキュー・ペアにインターフェース接続された少なくとも１つの仮想入出力を提供するステップと、
を含む、方法。
【請求項２】
前記自己仮想化入出力デバイスは、物理機能と、これに関連する複数の仮想機能インスタンスとを含み、各仮想機能インスタンスは、１つ以上の物理リソースを前記物理機能と共用し、前記複数の論理パーティションは、複数のパーティション・アジャンクト・インスタンスを介して前記複数の仮想機能インスタンスにインターフェース接続され、各パーティション・アジャンクト・インスタンスは、前記複数の論理パーティションのうちの関連論理パーティションを、前記自己仮想化入出力デバイスの前記複数の仮想機能インスタンスのそれぞれの仮想機能インスタンスにインターフェース接続する、請求項１に記載の方法。
【請求項３】
前記インターフェース接続するステップは、各パーティション・アジャンクト・インスタンスを前記自己仮想化入出力デバイスの関連仮想機能にインターフェース接続するステップを含み、前記自己仮想化入出力デバイスは、物理機能をさらに含み、前記方法は、前記物理機能にインターフェース接続された物理機能パーティション・アジャンクトを提供するステップを含み、前記物理機能パーティション・アジャンクトは、前記複数の論理パーティションを複数の仮想機能インスタンスにインターフェース接続する前記パーティション・アジャンクト・インスタンスの作成を容易にする、請求項１に記載の方法。
【請求項４】
前記自己仮想化入出力デバイスは、関連する複数のキュー・ペア・インスタンスを持った機能を含み、前記複数の論理パーティションは、複数のパーティション・アジャンクト・インスタンスを介して前記複数のキュー・ペア・インスタンスにインターフェース接続され、各パーティション・アジャンクト・インスタンスは、前記複数の論理パーティションのうちの関連論理パーティションを、前記自己仮想化入出力デバイスの前記複数のキュー・ペア・インスタンスのそれぞれのキュー・ペア・インスタンスにインターフェース接続する、請求項１に記載の方法。
【請求項５】
前記インターフェース接続するステップは、複数のパーティション・アジャンクト・インスタンスを使用して前記複数の論理パーティションを前記自己仮想化入出力デバイスの複数のキュー・ペア・インスタンスにインターフェース接続するステップを含み、前記方法は、前記自己仮想化入出力デバイスの少なくとも１つの機能にインターフェース接続された少なくとも１つの機能パーティション・アジャンクトを提供するステップをさらに含み、前記複数のキュー・ペア・インスタンスは、前記自己仮想化入出力デバイスの前記少なくとも１つの機能に関連する、請求項１に記載の方法。
【請求項６】
前記自己仮想化入出力デバイスは、第１物理機能と、前記第１物理機能に関連する複数の第１仮想機能インスタンスとを含み、各第１仮想機能インスタンスは、１つ以上の物理リソースを前記第１物理機能と共用しており、前記複数の論理パーティションの１つの論理パーティションにインターフェース接続されたパーティション・アジャンクト・インスタンスは、前記１つの論理パーティションを前記自己仮想化入出力デバイスの或る第１仮想機能インスタンスに連結し、前記自己仮想化入出力デバイスは、関連する少なくとも１つの第２仮想機能インスタンスを持った第２物理機能をさらに含み、各第２仮想機能インスタンスは、１つ以上の物理リソースを前記第２物理機能と共用しており、複数のパーティション・アジャンクト・インスタンスの別のパーティション・アジャンクト・インスタンスが、前記複数の論理パーティションの前記１つの論理パーティションにインターフェース接続されて、前記１つの論理パーティションを前記少なくとも１つの第２仮想機能インスタンスのうちの或る第２仮想機能インスタンスに連結し、前記１つの論理パーティションは、別々のパーティション・アジャンクト・インスタンスを使用している前記第１仮想機能インスタンスと前記第２仮想機能インスタンスとに連結される、請求項１に記載の方法。
【請求項７】
前記インターフェース接続するステップは、前記複数の論理パーティションの各論理パーティション用に少なくとも１つのパーティション・アジャンクト・インスタンスを構築するステップをさらに含み、前記構築するステップは、各パーティション・アジャンクト・インスタンスに関し、前記パーティション・アジャンクト・インスタンスのパーティション・アジャンクト・コードおよび読み取り専用データを複数のパーティション・アジャンクト・インスタンスによって利用される共通パーティション・アジャンクト・コードおよび共通読み取り専用データを含む共通物理メモリ・ページへマッピングするように、前記関連論理パーティションの仮想アドレスと実アドレスのページ・テーブルを使用するステップを含み、前記共通物理メモリ・ページは、前記複数の論理パーティションのうちの前記論理パーティションの１つあるいは前記データ処理システムのハイパーバイザの共通物理メモリ・ページを含む、請求項１に記載の方法。
【請求項８】
前記インターフェース接続するステップは、各関連パーティション・アジャンクト・インスタンスを作成するステップをさらに含み、前記作成するステップは、前記パーティション・アジャンクト・インスタンスにその関連論理パーティションから供与された仮想アドレス空間を使用し、前記関連論理パーティションは、ネイティブ・オペレーティング・システムを含み、作成された前記パーティション・アジャンクト・インスタンスは、前記関連論理パーティションを前記自己仮想化入出力デバイスの前記仮想機能またはキュー・ペアにインターフェース接続するための、ネイティブまたは非ネイティブのオペレーティング・システムのデバイス・ドライバを含む、請求項１に記載の方法。
【請求項９】
論理パーティションに備えられる各仮想入出力は、前記論理パーティションによって構成可能であり、各パーティション・アジャンクト・インスタンスを作成するステップは、前記ネイティブまたは非ネイティブのオペレーティング・システムのデバイス・ドライバをそれぞれ実行して前記自己仮想化入出力デバイスの前記仮想機能またはキュー・ペアにアクセスするように、前記パーティション・アジャンクト・インスタンス内にネイティブまたは非ネイティブのカーネル・サービスを提供するステップをさらに含み、前記ネイティブまたは非ネイティブのカーネル・サービスは、対応する完全なネイティブまたは非ネイティブのオペレーティング・システムより小さい、請求項８に記載の方法。
【請求項１０】
複数の論理パーティションと、前記複数の論理パーティションの入出力アクセスを容易にする複数のパーティション・アジャンクト・インスタンスとを含む、少なくとも１つのプロセッサと、
前記複数のパーティション・アジャンクト・インスタンスに連結された自己仮想化入出力デバイスと、
を含む、データ処理システムであって、
前記複数の論理パーティションの各論理パーティションは、少なくとも１つの関連パーティション・アジャンクト・インスタンスにインターフェース接続され、各パーティション・アジャンクト・インスタンスは、前記複数の論理パーティションのうちの関連論理パーティションを、前記データ処理システムの前記自己仮想化入出力デバイスの仮想機能またはキュー・ペアのうちの１つに連結し、各パーティション・アジャンクト・インスタンスは、別個のディスパッチ可能状態を含み、さらにそれぞれの論理パーティションまたは前記データ処理システムのハイパーバイザから供与された仮想アドレス空間を使用しており、各パーティション・アジャンクト・インスタンスは、前記自己仮想化入出力デバイスの各仮想機能またはキュー・ペア用のデバイス・ドライバを含み、前記複数の論理パーティションの各論理パーティションは、前記論理パーティションの少なくとも１つの関連パーティション・アジャンクト・インスタンスを介して前記自己仮想化入出力デバイスの前記仮想機能またはキュー・ペアの少なくとも１つにインターフェース接続された少なくとも１つの仮想入出力を含む、データ処理システム。
【請求項１１】
前記自己仮想化入出力デバイスは、物理機能と、これに関連する複数の仮想機能インスタンスとを含み、各仮想機能インスタンスは、１つ以上の物理リソースを前記物理機能と共用し、前記複数の論理パーティションは、前記複数のパーティション・アジャンクト・インスタンスを介して前記複数の仮想機能インスタンスにインターフェース接続され、各パーティション・アジャンクト・インスタンスは、前記複数の論理パーティションのうちの関連論理パーティションを、前記自己仮想化入出力デバイスの前記複数の仮想機能インスタンスのそれぞれの仮想機能インスタンスにインターフェース接続する、請求項１０に記載のデータ処理システム。
【請求項１２】
前記自己仮想化入出力デバイスは、関連する複数のキュー・ペア・インスタンスを持った機能を含み、前記複数の論理パーティションは、前記複数のパーティション・アジャンクト・インスタンスを介して前記複数のキュー・ペア・インスタンスにインターフェース接続され、各パーティション・アジャンクト・インスタンスは、前記複数の論理パーティションのうちの関連論理パーティションを、前記自己仮想化入出力デバイスの前記複数のキュー・ペア・インスタンスのそれぞれのキュー・ペア・インスタンスにインターフェース接続する、請求項１０に記載のデータ処理システム。
【請求項１３】
前記自己仮想化入出力デバイスは、第１物理機能と、前記第１物理機能に関連する複数の第１仮想機能インスタンスとを含み、各第１仮想機能インスタンスは、前記第１物理機能の１つ以上の物理リソースを共用しており、前記複数の論理パーティションの１つの論理パーティションにインターフェース接続されたパーティション・アジャンクト・インスタンスは、前記１つの論理パーティションを前記自己仮想化入出力デバイスの或る第１仮想機能インスタンスに連結し、前記自己仮想化入出力デバイスは、関連する少なくとも１つの第２仮想機能インスタンスを持った第２物理機能をさらに含み、各第２仮想機能インスタンスは、１つ以上の物理リソースを前記第２物理機能と共用しており、前記複数のパーティション・アジャンクト・インスタンスの別のパーティション・アジャンクト・インスタンスが、前記複数の論理パーティションの前記１つの論理パーティションにインターフェース接続されて、前記１つの論理パーティションを前記少なくとも１つの第２仮想機能インスタンスのうちの或る第２仮想機能インスタンスに連結し、前記１つの論理パーティションは、別々のパーティション・アジャンクト・インスタンスを使用している前記第１仮想機能インスタンスと前記第２仮想機能インスタンスとに連結される、請求項１０に記載のデータ処理システム。
【請求項１４】
各パーティション・アジャンクト・インスタンスは、前記パーティション・アジャンクト・インスタンスのパーティション・アジャンクト・コードおよび読み取り専用データを複数のパーティション・アジャンクト・インスタンスによって利用される共通パーティション・アジャンクト・コードおよび共通読み取り専用データを含む共通物理メモリ・ページへマッピングするように、前記関連論理パーティションの仮想アドレスと実アドレスのページ・テーブルを使用し、前記共通物理メモリ・ページは、前記複数の論理パーティションのうちの前記論理パーティションの１つあるいは前記データ処理システムのハイパーバイザの共通物理メモリ・ページを含む、請求項１０に記載のデータ処理システム。
【請求項１５】
各パーティション・アジャンクト・インスタンスは、前記複数の論理パーティションのうちの関連論理パーティションから供与された仮想アドレス空間を使用し、前記関連論理パーティションは、ネイティブ・オペレーティング・システムを含み、前記複数のパーティション・アジャンクト・インスタンスの少なくとも１つのパーティション・アジャンクト・インスタンスは、前記関連論理パーティションを前記自己仮想化入出力デバイスの前記仮想機能またはキュー・ペアにインターフェース接続するための非ネイティブ・オペレーティング・システムのデバイス・ドライバを含み、各論理パーティションに備えられる各仮想入出力は、前記論理パーティションによって構成可能であり、前記少なくとも１つのパーティション・アジャンクト・インスタンスは、前記非ネイティブ・オペレーティング・システムのデバイス・ドライバを実行して前記自己仮想化入出力デバイスの前記仮想機能またはキュー・ペアにアクセスするように、前記少なくとも１つのパーティション・アジャンクト・インスタンス内に非ネイティブのカーネル・サービスをさらに含み、前記非ネイティブのカーネル・サービスは、対応する完全な非ネイティブ・オペレーティング・システムより小さい、請求項１０に記載のデータ処理システム。
【請求項１６】
コンピュータ・プログラムであって、前記プログラムがコンピュータ上で実行されると、請求項１乃至９のいずれかに記載の全ステップを実施するようになっているプログラム・コード手段を含む、コンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、全般的にはデータ処理システムに関し、特に、データ処理システムの新しい実行環境を備えたパーティション・アジャンクトの作成および利用に関する。一態様では、パーティション・アジャンクトは、自己仮想化入出力（Ｉ／Ｏ：ｉｎｐｕｔ／ｏｕｔｐｕｔ）デバイスへのアクセスを論理パーティションに提供する専用アジャンクトとして利用される。
【背景技術】
【０００２】
データ処理システムのハイパーバイザの上で動作している論理パーティション（ＬＰＡＲ：ｌｏｇｉｃａｌ  ｐａｒｔｉｔｉｏｎ）は、ハイパーバイザ自体によって提供されるものよりも高度な機能を提供するのに使用されることが多い。例えば、或る１つのＬＰＡＲが、データ処理システムの１つ以上の他のＬＰＡＲに入出力サービスを提供する仮想入出力サーバ（ＶＩＯＳ：ｖｉｒｔｕａｌ  ｉｎｐｕｔ／ｏｕｔｐｕｔ  ｓｅｒｖｅｒ）に指定されることがある。こうして高度な機能をオフロードすると、ハイパーバイザでは複雑なコードが回避され、ひいては、データ処理システムにおいてハイパーバイザを小さく安全に保つことに役立つ。一方、論理パーティションを使用して上述のようなサービスを他の論理パーティションに提供することは、そうしたサービスを提供するように当該論理パーティション、ひいては完全なオペレーティング・システムをインスタンス化し実行するのに、比較的大きなオーバーヘッドを必要とする。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
本明細書に開示するのは、サービスを提供するのに別の完全な論理パーティションを必要とせずに、さらに起動元論理パーティションまたはハイパーバイザに当該サービスを組み込むことを必要とせずに、論理パーティションへのサービス提供を可能にするソリューションである。本明細書にて記載され請求されるようなパーティション・アジャンクトは、こうした中立的な領域を提供する新しい実行環境である。
【課題を解決するための手段】
【０００４】
本明細書では、一態様において、複数の論理パーティション用に、データ処理システムの自己仮想化入出力デバイスへのアクセスを構築する方法が提示される。本方法は、以下を含む：複数の論理パーティションの各論理パーティションを、少なくとも１つの関連パーティション・アジャンクト・インスタンスにインターフェース接続するステップであって、各パーティション・アジャンクト・インスタンスは、複数の論理パーティションのうちの自身の関連論理パーティションを、自己仮想化入出力デバイスの仮想機能またはキュー・ペアのうちの１つに連結し、各パーティション・アジャンクト・インスタンスは、別個のディスパッチ可能状態を含み、さらに関連論理パーティションまたはデータ処理システムのハイパーバイザから供与された仮想アドレス空間を使用して作成され、さらに各パーティション・アジャンクト・インスタンスは、自己仮想化入出力デバイスの仮想機能またはキュー・ペア用のデバイス・ドライバを含む、インターフェース接続するステップ；および、複数の論理パーティションの各論理パーティションに、その論理パーティションの少なくとも１つの関連パーティション・アジャンクト・インスタンスを介して自己仮想化入出力デバイスの仮想機能またはキュー・ペアにインターフェース接続された少なくとも１つの仮想入出力を提供するステップ。
【０００５】
別の態様では、以下を含むデータ処理システムが提供される：複数の論理パーティションおよび複数のパーティション・アジャンクト・インスタンスを含む少なくとも１つのプロセッサであって、複数の論理パーティションの入出力アクセスを容易にする、プロセッサ；および複数のパーティション・アジャンクトに連結されている自己仮想化入出力デバイス。複数の論理パーティションの各論理パーティションは、少なくとも１つの関連パーティション・アジャンクト・インスタンスにインターフェース接続される。各パーティション・アジャンクト・インスタンスは、複数の論理パーティションのうちの関連論理パーティションを、データ処理システムの自己仮想化入出力デバイスの仮想機能またはキュー・ペアのうちの１つに連結する。さらに各パーティション・アジャンクト・インスタンスは、別個のディスパッチ可能状態を含み、それぞれの論理パーティションまたはデータ処理システムのハイパーバイザから供与された仮想アドレス空間を使用する。加えて、各パーティション・アジャンクト・インスタンスは、自己仮想化入出力アダプタのそれぞれの仮想機能またはキュー・ペア用のデバイス・ドライバを含む。複数の論理パーティションの各論理パーティションは、その論理パーティションの少なくとも１つの関連パーティション・アジャンクト・インスタンスを介して自己仮想化入出力デバイスの少なくとも１つの仮想機能または少なくとも１つのキュー・ペアにインターフェース接続された少なくとも１つの仮想入出力を含む。
【０００６】
さらなる態様では、本発明は、複数の論理パーティション用に、データ処理システムの自己仮想化入出力デバイスへのアクセスを構築する方法を定義するコンピュータ可読プログラム・コード論理を有している少なくとも１つのコンピュータ可読媒体を備えた製造品を含む。上記コンピュータ可読プログラム・コード論理は、プロセッサ上で実行されると、以下のことを実施する：複数の論理パーティションの各論理パーティションを、少なくとも１つの関連パーティション・アジャンクト・インスタンスにインターフェース接続することであって、各パーティション・アジャンクト・インスタンスは、複数の論理パーティションのうちの自身の関連論理パーティションを、自己仮想化入出力デバイスの仮想機能またはキュー・ペアのうちの１つに連結し、各パーティション・アジャンクト・インスタンスは、個別のディスパッチ可能状態を含み、さらに関連論理パーティションまたはデータ処理システムのハイパーバイザから供与された仮想アドレス空間を使用して作成され、さらに各パーティション・アジャンクト・インスタンスは、自己仮想化入出力デバイスの仮想機能またはキュー・ペア用のデバイス・ドライバを含む、インターフェース接続すること；および、複数の論理パーティションの各論理パーティションに、その論理パーティションの少なくとも１つの関連パーティション・アジャンクト・インスタンスを介して自己仮想化入出力デバイスの仮想機能またはキュー・ペアにインターフェース接続された少なくとも１つの仮想入出力を備えること。
【０００７】
さらにその他の特徴および利点が、本発明の技術によって実現される。本発明の他の実施形態および態様は、本明細書に詳細に記載されており、請求される発明の一部とみなされる。
【０００８】
本発明とみなされる内容については、本明細書の末尾にある請求項にて個々に挙げ、明確に権利を主張するものである。本発明の上述およびその他の特徴および利点は、添付の図面と一緒に読まれる以下の詳細な説明から、明らかになる。
【図面の簡単な説明】
【０００９】
【図１】本発明の１つ以上の態様を実現するデータ処理システムの一実施形態のブロック図である。
【図２】本発明の１つ以上の態様を実現するのに使用され得るデータ処理システムのより詳細な説明図である。
【図３】本発明の一態様による、クライアント論理パーティションとパーティション・アジャンクトとを含むデータ処理システムの一実施形態を示す図である。
【図４】図４Ａは、本発明の一態様による、複数の論理パーティションおよび複数のパーティション・アジャンクトを含むデータ処理システムを示す図である。図４Ｂは、本発明の一態様による、複数の論理パーティションが汎用パーティション・アジャンクトをアタッチするデータ処理システムを示す図である。図４Ｃは、本発明の一態様による、ハイパーバイザがパーティション・アジャンクトを使用するデータ処理システムを示す図である。
【図５】本発明の一態様による、複数のクライアント・パーティションが、従来の仮想入出力サーバを使用する代わりに、デバイス・ドライバ・サービスを含んだ汎用パーティション・アジャンクトをアタッチするデータ処理システムを示す図である。
【図６】本発明の一態様による、パーティション・アジャンクトを作成するプロセスの一実施形態のフローチャートである。
【図７】本発明の一態様による、デバイス・ドライバを含んだパーティション・アジャンクトを作成するプロセスのさらに詳細な一実施形態のフローチャートである。
【図８】本発明の一態様による、データ処理システムの複数の論理パーティションによって使用可能な汎用パーティション・アジャンクトを作成するプロセスの一実施形態のフローチャートである。
【図９】本発明の一態様による、クライアント論理パーティションから汎用パーティション・アジャンクトにアタッチするプロセスの一実施形態のフローチャートである。
【図１０】本発明の一態様による、パーティション・アジャンクトによってサービス要求を処理するプロセスの一実施形態のフローチャートである。
【図１１】本発明の一態様による、サービス要求完了に非同期に対処するプロセスの一実施形態のフローチャートである。
【図１２】データ処理システムの、２つの従来型論理パーティションを示す図である。
【図１３】データ処理システムの、従来型のプロセッサ・レジスタ・マシン状態ならびにメモリ管理およびアドレス変換ハードウェアを示す図である。
【図１４】ＬＰＡＲ１が従来の方法でアクティブ状態にディスパッチされた、図１３のプロセッサ・レジスタ・マシン状態ならびにメモリ管理ユニット・ハードウェアを示す図である。
【図１５】ＬＰＡＲ１がアクティブ状態から外れるように切り換わりＬＰＡＲ２がアクティブ状態にディスパッチされた、図１３のプロセッサ・レジスタ・マシンの状態ならびにメモリ管理ユニット・ハードウェアを示す図である。
【図１６】本発明の一態様による、論理パーティション（ＬＰＡＲ１）およびパーティション・アジャンクトを含んだデータ処理システムを示す図である。
【図１７】本発明の一態様による、ＬＰＡＲ１がアクティブ状態にディスパッチされた図１６のデータ処理システムのプロセッサ・レジスタ・マシン状態ならびにメモリ管理およびアドレス変換ハードウェアを示し、さらにＬＰＡＲ１とパーティション・アジャンクトとの共用仮想アドレス空間を示す図である。
【図１８】本発明の一態様による、現行状態マシンをＬＰＡＲ１からコンテキスト・スイッチしてパーティション・アジャンクトをディスパッチした後の、図１７のプロセッサ・レジスタ・マシン状態ならびにメモリ管理およびアドレス変換ハードウェアを示す図である。
【図１９】データ処理システムのマルチスレッド型プロセッサ・コアの、プロセッサ・レジスタ・マシン状態ならびにメモリ管理およびアドレス変換ハードウェアを示す図である。
【図２０】第１論理パーティション（ＬＰＡＲ１）がアクティブ状態である、図１９のプロセッサ・レジスタ・マシン状態ならびにメモリ管理およびアドレス変換ハードウェアを示す図である。
【図２１】現行状態マシンをＬＰＡＲ１から第２論理パーティション（ＬＰＡＲ２）の状態データへコンテキスト・スイッチした後の、図１９および２０のプロセッサ・レジスタ・マシン状態ならびにメモリ管理およびアドレス変換ハードウェアを示す図である。
【図２２】本発明の一態様による、１つのハードウェア・スレッドの現行状態マシンを第１論理パーティション（ＬＰＡＲ１）からパーティション・アジャンクトへ部分的にコンテキスト・スイッチした、図１９のプロセッサ・レジスタ・マシン状態ならびにメモリ管理およびアドレス変換ハードウェアを示す図である。
【図２３】図２３Ａおよび２３Ｂは、論理パーティションに所有されている専用デバイスが、この専用デバイスへのアクセスまたはその使用のためには当該論理パーティションのオペレーティング・システムのネイティブ・デバイス・ドライバを必要とする、従来技術のデータ処理システム構成の一例を示す図である。
【図２４】図２４Ａおよび２４Ｂは、本発明の一態様による、物理入出力デバイスへのアクセスまたはその使用のために、非ネイティブ・オペレーティング・システムのデバイス・ドライバが使用されているパーティション・アジャンクト構成の一例を示す図である。
【図２５】仮想入出力サーバを介して非自己仮想化入出力デバイスにインターフェース接続される複数の論理パーティションを含んだ従来型データ処理システムの一例を示す図である。
【図２６】複数の論理パーティションが、その複数の論理パーティション内のネイティブ・デバイス・ドライバを介して自己仮想化入出力デバイスの複数の仮想機能インスタンスにインターフェース接続される、データ処理システムの一実施形態を示す図である。
【図２７】複数の論理パーティションが、その複数の論理パーティション内のネイティブ・デバイス・ドライバを介して、自己仮想化入出力デバイスの複数のキュー・ペア・インスタンスにインターフェース接続される、データ処理システムの別の実施形態を示す図である。
【図２８】本発明の一態様による、複数の論理パーティションを自己仮想化入出力デバイスのそれぞの仮想機能インスタンスにインターフェース接続する複数のパーティション・アジャンクト・インスタンスを含んだデータ処理システムの一実施形態を示す図である。
【図２９】本発明の一態様による、複数のパーティション・アジャンクト・インスタンスが複数の論理パーティションを自己仮想化入出力デバイスのそれぞれのキュー・ペア・インスタンスにインターフェース接続する、データ処理システムの別の実施形態を示す図である。
【図３０】図３０Ａは、複数の論理パーティションが、論理パーティション内のネイティブ・デバイス・ドライバを使用して自己仮想化入出力デバイスのそれぞれの物理機能インスタンスまたは仮想機能インスタンスにインターフェース接続される、図２６に示すようなデータ処理システムの別の実施形態を示す図である。図３０Ｂは、図３０Ａに示すようなデータ処理システムにおける、物理メモリ構造と、複数の論理パーティションのデバイス・ドライバ・ページ・テーブル・エントリのそれぞれの物理メモリ位置へのマッピングとを示す図である。
【図３１】図３１Ａは、本発明の一態様による、パーティション・アジャンクト・インスタンスが複数の論理パーティションを自己仮想化入出力デバイスにインターフェース接続する、図２８に示すようなデータ処理システムの一実施形態を示す図である。図３１Ｂは、本発明の一態様による、物理メモリ構造と、複数のパーティション・アジャンクトのページ・テーブル・エントリのそれぞれの物理メモリ位置へのマッピングとを示し、さらに物理メモリ構造における、共通のコードおよび読み取り専用データのマッピングを示す図である。
【図３２】本発明の１つ以上の態様を組み込んだコンピュータ・プログラム製品の一実施形態を示す図である。
【発明を実施するための形態】
【００１０】
図１は、一例では対称型マルチプロセッシング（ＳＭＰ：ｓｙｍｍｅｔｒｉｃ  ｍｕｌｔｉｐｒｏｃｅｓｓｉｎｇ）サーバ・コンピュータ・システムである、データ処理システム１００のブロック図である。ＳＭＰサーバ・コンピュータ・システム１００には、ユーザ・アプリケーションに対しマッピングされて、言い換えればユーザ・アプリケーションによって一時的に所有されて、そのアプリケーションを実行することのできる、物理ハードウェア・デバイスが含まれる。
【００１１】
ＳＭＰサーバ・コンピュータ・システム１００は、物理ＳＭＰサーバ１０２を含む。物理ＳＭＰサーバ１０２は、プロセッサ１０４、メモリ１０６、およびＩ／Ｏアダプタ１０８などの物理ハードウェア・デバイスを含む。これらの物理デバイスは、ハイパーバイザ１１０によって管理される。プロセッサ１０４は共用プロセッサであり、その各々が、複数の異なるスレッドをプロセッサ上で並行して実行することの可能な同時マルチスレッディング（ＳＭＴ：ｓｉｍｕｌｔａｎｅｏｕｓ  ｍｕｌｔｉｔｈｒｅａｄｉｎｇ）対応のプロセッサであるとよい。
【００１２】
仮想サーバは、物理サーバのプロキシであって、同様の機能、インターフェース、および状態を備えている。仮想サーバは、物理ＳＭＰサーバ・コンピュータ・システム１００にあるハイパーバイザによって作成され管理される。仮想サーバは、そのユーザ、すなわちその上で動作しているオペレーテイング・システム、ミドルウェア、およびアプリケーション・ソフトウェアからは、物理ＳＭＰサーバのように見える。ＳＭＰサーバ・コンピュータ・システム１００は、仮想サーバ１１２および仮想サーバ１１２ａなどの１つ以上の仮想サーバを含む。
【００１３】
各仮想サーバは、各自のソフトウェアからは、当該仮想サーバの独占的な使用に利用可能な自身のプロセッサ（単数または複数）、メモリ、およびＩ／Ｏアダプタ（単数または複数）を備えているように見える。例えば、仮想サーバ１１２は、仮想プロセッサ１２０、仮想メモリ１２２、および仮想Ｉ／Ｏアダプタ１２４を含む。仮想サーバ１１２ａは、仮想プロセッサ１２０ａ、仮想メモリ１２２ａ、および仮想Ｉ／Ｏアダプタ１２４ａを含む。
【００１４】
各仮想サーバは、オペレーティング・システム、ミドルウェア、およびアプリケーションなどの自身のソフトウェア環境をサポートする。各仮想サーバのソフトウェア環境は、他の仮想サーバのソフトウェア環境と異なるものにすることができる。例えば、各仮想サーバによって実行されるオペレーティング・システムは、互いに異なっていてもよい。
【００１５】
例えば、仮想サーバ１１２は、オペレーティング・システム１１４、ミドルウェア１１６、およびアプリケーション１１８をサポートしている。仮想サーバ１１２ａは、オペレーティング・システム１１４ａ、ミドルウェア１１６ａ、およびアプリケーション１１８ａをサポートしている。オペレーティング・システム１１４と１１４ａとは、同じオペレーティング・システムであっても異なるオペレーティング・システムであってもよい。
【００１６】
仮想サーバとは、サーバ環境を定義するサーバの論理記述であって、ユーザに対しては、あたかも物理サーバであるかのように作動し、物理サーバと同様のやり方でアクセスを受け情報を提供する。各仮想サーバ用に定義される仮想プロセッサ、仮想メモリ、および仮想Ｉ／Ｏアダプタは、物理プロセッサ、物理メモリ、および物理Ｉ／Ｏアダプタの論理的な代替物である。
【００１７】
ハイパーバイザ１１０は、仮想プロセッサ、仮想メモリ、および仮想Ｉ／Ｏアダプタを備えた仮想サーバと、これらの仮想デバイスを実現するべく選択される物理ハードウェア・デバイスとの間のマッピングを管理する。例えば、或る仮想プロセッサがディスパッチされると、ハイパーバイザ１１０によって例えば物理プロセッサ１０４のうちの１つなどの物理プロセッサが選択されて、その仮想プロセッサの実行および実現に用いられる。ハイパーバイザ１１０は、物理デバイスの選択と、仮想デバイスに対する物理デバイスの一時的な割り当てとを管理する。
【００１８】
ハイパーバイザ１１０は、ディスパッチ・タイム・スライスの間に、全ての論理パーティションにサービスを提供する。ディスパッチ・タイム・スライスは、特定の長さの時間である。各ディスパッチ・タイム・スライスの間、ハイパーバイザ１１０は、各論理パーティションに対し物理プロセッサを配分あるいは割り当てすることになる。論理パーティションが物理プロセッサ上の時間を配分されているときに、その論理パーティションに定義される仮想プロセッサが、物理プロセッサによって実行されることになる。
【００１９】
ハイパーバイザ１１０は、仮想ＳＭＰサーバを動的に作成、管理および消去することをつかさどる。仮想プロセッサ、仮想Ｉ／Ｏアダプタ、および仮想メモリ・ブロックの全てを、ハイパーバイザ１１０によって削除あるいは追加することができる。ハイパーバイザ１１０はさらに、リソースの動的な配分、物理リソースのタイムシェアリングの管理、ならびにプロセッサにマッピングされた物理リソースの変更を、オペレーティング・システムを介さずにつかさどる。ハイパーバイザ１１０はさらに、シェアリングが望まれないような状況では、物理リソースを仮想リソースの専用にすることもできる。ハイパーバイザ１１０は、物理リソースの追加または削除の管理をつかさどる。ハイパーバイザ１１０は、こうした追加および削除を、上位のアプリケーションに対して透過的なものにする。
【００２０】
図２は、本明細書に記載される概念を実現するのに使用され得るコンピュータ・システムの、より詳細な説明図である。データ処理システム２００は、システム・バス２０６に接続されたプロセッサ２０２および２０４などの複数の共有プロセッサまたはＳＭＴ対応プロセッサを含む、対称型マルチプロセッサ（ＳＭＰ）システムであるとよい。あるいは、単一プロセッサ・システムが使用されてもよい。図に示す例では、プロセッサ２０４は、サービス・プロセッサである。各ＳＭＴ対応プロセッサは、１つのプロセッサ上で複数のハードウェア・スレッドを並行して実行することができる。
【００２１】
さらに、システム・バス２０６に接続されているのは、ローカル・メモリ２０９に対しインターフェースを提供するメモリ・コントローラ／キャッシュ２０８である。Ｉ／Ｏバス・ブリッジ２１０が、システム・バス２０６に接続されて、Ｉ／Ｏバス２１２に対するインターフェースを提供する。図に示すように、メモリ・コントローラ／キャッシュ２０８およびＩ／Ｏバス・ブリッジ２１０は、一体化されてもよい。
【００２２】
Ｉ／Ｏバス２１２に接続されている周辺コンポーネント相互接続（ＰＣＩ：ｐｅｒｉｐｈｅｒａｌ  ｃｏｍｐｏｎｅｎｔ  ｉｎｔｅｒｃｏｎｎｅｃｔ）バス・ブリッジ２１４は、ＰＣＩローカル・バス２１６に対するインターフェースを提供する。ＰＣＩバス２１６には、多数のモデムが接続され得る。標準的なＰＣＩバスの実装は、４個のＰＣＩ拡張スロットまたはアドイン・コネクタをサポートすることになる。図１のネットワーク・コンピュータ１０８乃至１１２への通信リンクは、アドイン・ボードによってＰＣＩローカル・バス２１６に接続されるモデム２１８およびネットワーク・アダプタ２２０を介して設けられればよい。
【００２３】
ネットワーク・アダプタ２２０は、例えばＲ４５コネクタに対するＥｔｈｅｒｎｅｔ（Ｒ）ネットワークなど、ネットワークへ送出されるアナログ信号を調整する物理層２８２を含む。媒体アクセス・コントローラ（ＭＡＣ：ｍｅｄｉａ  ａｃｃｅｓｓ  ｃｏｎｔｒｏｌｌｅｒ）２８０が、ネットワーク・アダプタ２２０内に備えられている。媒体アクセス・コントローラ（ＭＡＣ）２８０は、バス２１６に連結され、デジタル・ネットワーク信号を処理する。ＭＡＣ２８０は、バス２１６と物理層２８２との間のインターフェースとして機能する。ＭＡＣ２８０は、データ・パケットの送受信にかかわる多数の機能を果たす。例えばＭＡＣ２８０は、データの送信中、伝送対象のデータを、アドレスおよび誤り検出フィールドを備えたパケットにアセンブルする。反対に、パケットの受信中には、ＭＡＣ２８０はパケットを逆アセンブルして、アドレス・チェックと誤り検出とを実施する。加えて、ＭＡＣ２８０は、通常、伝送されるデジタル信号の符号化／復号化を実施し、さらにプリアンブル生成／削除に加え、ビット送信／受信を実施する。
【００２４】
追加的なＰＣＩバス・ブリッジ２２２および２２４によって追加的なＰＣＩバス２２６よび２２８に対するインターフェースが提供され、それにより追加的なモデムまたはネットワーク・アダプタがサポートされてもよい。このように、データ処理システム２００は、複数のネットワーク・コンピュータとの接続を可能にする。図に示すように、さらにメモリマップ方式のグラフィックス・アダプタ２３０およびハード・ディスク２３２が、直接的あるいは間接的にＩ／Ｏバス２１２に接続されてもよい。
【００２５】
サービス・プロセッサ２０４は、システム・プロセッサ、メモリ・コントローラ、およびＩ／Ｏブリッジに問い合わせを行い、データ処理システム２００のインベントリの生成、トポロジの把握を行う。サービス・プロセッサ２０４はさらに、システム・プロセッサ、メモリ・コントローラ、およびＩ／Ｏブリッジへの問い合わせにより見つかった全ての要素について、ビルトインセルフテスト（ＢＩＳＴ：Ｂｕｉｌｔ−Ｉｎ−Ｓｅｌｆ−Ｔｅｓｔ）、基本保証テスト（ＢＡＴ：Ｂａｓｉｃ  Ａｓｓｕｒａｎｃｅ  Ｔｅｓｔ）、およびメモリ・テストを実行する。ＢＩＳＴ、ＢＡＴ、およびメモリ・テストの間に検出された不具合に関するあらゆる誤り情報は、サービス・プロセッサ２０４によって集められ報告される。
【００２６】
当業者には当然のことながら、図２に示すハードウェアは多様であり得る。例えば、光ディスク・ドライブなどの別の周辺デバイスを、図示されたハードウェアに加えてもよいし、その代わりに用いてもよい。図に示す例は、本発明に関するアーキテクチャ上の限定を示そうとするものではない。
【００２７】
本発明は、図１または２に示されたコンピュータまたはデータ処理システムのうちの１つにおいて実行され得る。具体的な、市販されている例を挙げると、本明細書にて後述するようなパーティション・アジャンクトを実装するデータ処理システムは、例えばＰｏｗｅｒ．ｏｒｇ（ｈｔｔｐ：／／ｗｗｗ．ｐｏｗｅｒ．ｏｒｇ／ｍｅｍｂｅｒｓ／ｄｅｖｅｌｏｐｅｒｓ／ｓｐｅｃｓ／ＰＡＰＲ＿Ｖｅｒｓｉｏｎ＿２．２＿０９Ｏｃｔ０７．ｐｄｆ）にある文献「Ｐｏｗｅｒ  Ａｒｃｈｉｔｅｃｔｕｒｅ（ＩＢＭ社の登録商標）  Ｐｌａｔｆｏｒｍ  Ｒｅｆｅｒｅｎｃｅ（ＰＡＰＲ）」に記載されているような、ＩＢＭ（ＩＢＭ社の登録商標）のｐ／ｉ  Ｓｅｒｉｅｓ（ＩＢＭ社の登録商標）製品ラインのファームウェアおよびシステムウェアに見られる技術に基づいて構築することができる。
【００２８】
本明細書にて以下に開示されるのは、完全な論理パーティションに比べて制限されたパーティションである、パーティション・アジャンクトの概念である。以下に記載するように、パーティション・アジャンクトは、フラットで静的な実効アドレス空間および問題状態において動作する。こうした制約により、ハイパーバイザが、ハイパーバイザおよびプロセッサの様々な最適化を行うことが可能になり、結果として、論理パーティションからパーティション・アジャンクトの状態データへの、状態マシンのコンテキスト・スイッチに関連するシステム・オーバーヘッドは、論理パーティション相互間の状態マシンのコンテキスト・スイッチに比べて、大幅に軽減されたものになる。他の点では、パーティション・アジャンクトは、完全な論理パーティションに類似している。例えばパーティション・アジャンクトには、完全な論理パーティションと同じように、物理あるいは仮想リソースを割り当てることができる。さらにパーティション・アジャンクトは、完全な論理パーティションと同じように、例えば仮想入出力サーバ（ＶＩＯＳ）などといった、仮想入出力（ＶＩＯ：ｖｉｒｔｕａｌ  ｉｎｐｕｔ  ｏｕｔｐｕｔ）通信メカニズムのエンド・ポイントにすることができる。
【００２９】
図３は、本発明の一態様による、クライアント論理パーティション（または簡単に、クライアント・パーティション）３１０とパーティション・アジャンクト３２０とを含んだデータ処理システム３００の一例を示す。クライアント・パーティション３１０は、１つ以上の顧客アプリケーション３１２、オペレーティング・システム・インスタンス３１４および仮想Ｉ／Ｏ機構３１６を含む論理パーティションである。クライアント・パーティション３１０は、ハイパーバイザ３３０の上で動作し、ハイパーバイザ自体によって提供される機能よりも高度な機能を提供する。ハイパーバイザ３３０は、基盤をなすシステム・ハードウェア３４０の上で実行され、このシステム・ハードウェアは、１つ以上のＩ／Ｏデバイス３５０を含むように示されている。
【００３０】
パーティション・アジャンクト３２０は、概念上、クライアント・パーティション３１０にとっての子パーティションである。パーティション・アジャンクトは、完全な論理パーティションより小さいとはいえ、ハイパーバイザによって、パーティション・アジャンクトと、パーティション・アジャンクトが動作する範囲内でのクライアント・パーティションとの間のセキュリティおよび隔離が強化されるような形で実行される。パーティション・アジャンクトは、完全な論理パーティションに比べると縮小された機能を備えており、例えば、メモリ管理ユニット（ＭＭＵ：ｍｅｍｏｒｙ  ｍａｎａｇｅｍｅｎｔ  ｕｎｉｔ）構成または浮動小数点機構へのアクセスはなく、所望のサービス（例えば、Ｉ／Ｏドライバ）を実行するのに必要な機能のみが備わっている環境である。図に示す例では、パーティション・アジャンクト３２０には、仮想Ｉ／Ｏインターフェース３２２と、Ｉ／Ｏデバイス３５０へのアクセスを可能にするハードウェア・デバイス・ドライバ・サービス３２４とが含まれる。図に示すように、動作中、クライアント・パーティション３１０は、パーティション・アジャンクト３２０を介してＩ／Ｏデバイス３５０にアクセスする。パーティション・アジャンクト環境における機能を縮小することによって、パーティション・アジャンクトをディスパッチし維持する実行時オーバーヘッドは（もう１つの完全な論理パーティションの場合と比較して）軽減され、その結果、別個の論理パーティションを仮想入出力サーバ（ＶＩＯＳ）として用いることによる性能上の不利点の多くが回避される。
【００３１】
本明細書では、具体的な例として、パーティション・アジャンクトが、デバイス・ドライバ・サービスのために縮小型のオペレーティング・システム環境を実行するものとして記載されている。このサービスは、ほんの一例として提示されるものに過ぎない。パーティション・アジャンクトは、（一例では）デバイス・ドライバに必要とされる構造のみを含む、最小の、最適化されたインフラである。例えば、Ｌｉｎｕｘ（Ｒ）デバイス・ドライバをパーティション・アジャンクトの中で実行する場合、最小の実行環境には、Ｌｉｎｕｘデバイス・ドライバが必要とするＬｉｎｕｘカーネル・サービスあるいは同等のサービスのみが含まれる。ＡＩＸ（ＩＢＭ社の登録商標）デバイス・ドライバをパーティション・アジャンクトの中で実行する場合、最小の実行環境には、ＡＩＸデバイス・ドライバが必要とするＡＩＸカーネル・サービスあるいは同等のサービスのみが含まれる。パーティション・アジャンクトは、有利に、ハイパーバイザ状態／問題状態において、ハイパーバイザ・インターフェースに対して直接動作する。以下に詳細に説明するように、パーティション・アジャンクトのディスパッチには、パーティションの完全なコンテキスト・スイッチは必要なく、そのためアジャンクトのカーネルの要件は簡略化される。このことは、クライアント・パーティションの仮想アドレス・ページ・テーブルへパーティション・アジャンクトをマッピングすることによって、一部実現される。クライアント・パーティションとパーティション・アジャンクトとの隔離は、例えば、ハイパーバイザ管理下のメモリ・キーなどによってもたらすことができる。有利なことに、パーティション・アジャンクトは、顧客には見えない。その上、以下にて説明するように、複数のクライアント・パーティションにおいて、同一のパーティション・アジャンクト・サービス（本明細書では汎用パーティション・アジャンクト・サービスと称される）をインスタンス化することもできる。
【００３２】
図４Ａ乃至４Ｃは、本明細書に開示される概念に従って実装しオペレーティング・システムおよびプラットフォームのいくつかの問題に対処することのできる、パーティション・アジャンクトの多様な使用法モデルを示す。図４Ａは、パーティション・アジャンクト４２０（本例では、ローカル・パーティション・アジャンクトとも称される）の一例を示し、このパーティション・アジャンクトは、概念上、起動元クライアント・パーティション４１０に半ば属し、ハイパーバイザ４３０を介して専用リソース４４０にアクセスする。例えば、パーティション・アジャンクト４２０によって、それぞれの専用アダプタ（すなわち、リソース）用に共通のアダプタ／ドライバ・サービスが提供されてもよい。
【００３３】
図４Ｂは、汎用パーティション・アジャンクトの一例を示し、（例として）仮想入出力サーバ・パーティションなどのサービス論理パーティションが、パーティション・アジャンクトのインスタンス化のためにメモリおよび物理リソースを供与する。そのような汎用パーティション・アジャンクト４２１は、複数のクライアント・パーティション４１０によってアクセス可能またはアタッチ可能であり、ハイパーバイザ４３０を介して例えばリソース４４０に対する入出力サービスなどを提供する。具体的な例を挙げると、汎用パーティション・アジャンクトには、共通のアダプタ・ドライバ・サービスが含まれるとよく、リソースには、共用アダプタが含まれるとよい。
【００３４】
図４Ｃは、汎用パーティション・アジャンクト４２２の別の実施形態であり、ハイパーバイザ４３０がアジャンクトにリソースを提供する。この実装では、ハイパーバイザは、独自の使用目的、例えば他の場合であればハイパーバイザの実行領域にあるであろう保護サービスまたは隔離サービスのために、パーティション・アジャンクトを使用する。
【００３５】
特に指定されない限り、本明細書にて後述するパーティション・アジャンクトの実施形態は、クライアント・パーティションの一部でありながら、ハイパーバイザの隔離およびセキュリティ・メカニズムによってクライアント・パーティションから分離されている実行環境であると想定されている。
【００３６】
図５は、複数のクライアント・パーティションによって使用されている汎用パーティション・アジャンクト、すなわち図４Ｂの実施形態の、詳細な一例を示す。本例では、論理パーティション（ＬＰＡＲ  Ａ、ＬＰＡＲ  Ｂ）５１０Ａ、５１０Ｂがクライアント・パーティションであり、パーティション５１０Ｃは、クライアント・パーティション５１０Ａ、５１０Ｂによって例えば入出力サービスを備えるのに使用される仮想入出力サーバ・パーティションである。本発明によれば、入出力サービス（本例では、アジャンクト・デバイス・ドライバ５２０と称される）とは、１つ以上の入出力パス５２１を介しハイパーバイザ５３０を通じて入出力ハードウェア５４０にアクセスするための、パーティション・アジャンクトによって提供されるデバイス・ドライバ・サービス５２０Ａ、５２０Ｂのことである。本例では、各クライアント・パーティションから入出力ハードウェアへの、より直接的なアタッチメントまたはより直接的なパスが、パーティション・アジャンクトによって促進される。以下にさらに述べるように、パーティション・アジャンクトは、当該パーティション・アジャンクト・インスタンスを使用しているクライアント・パーティションによってそれぞれ供与される仮想アドレス空間に組み込まれている。
【００３７】
パーティション・アジャンクトを実行可能プログラムにするために、ハイパーバイザは、そのパーティション・アジャンクト・サービスを使用することになるクライアント・パーティションとともに、パーティション・アジャンクト環境を構築するべくネゴシエートする。このネゴシエーションが完了すれば、クライアント・パーティションは、自身の仮想アドレス空間の一部をパーティション・アジャンクトによる使用に向けてハイパーバイザへ供与したことになる。ハイパーバイザは、ハードウェア機構およびハイパーバイザ機構を用いて、上記の供与されたリソース（例えば、供与された仮想アドレス空間など）に対しては、クライアント・パーティションがもはやアクセスすることあるいは変更を施せることがないように徹底する。ハイパーバイザは、供与された仮想アドレス・リソースを用いて、パーティション・アジャンクトを実行するのに必要な実効アドレスのマッピングをインスタンス化する。その後ハイパーバイザは、供与された仮想アドレス空間の制御を再プログラミングすることによって、クライアント・パーティションをディスパッチするかあるいはパーティション・アジャンクトをディスパッチするかの切り換えを行えばよい。クライアント・パーティションが動作するときには、クライアント・パーティションは、上記の供与された仮想アドレス範囲を除いて、自身に割り当てられた全ての仮想アドレス空間にアクセスすることができる。パーティション・アジャンクトが動作するときには、ハイパーバイザによって、クライアント・パーティションの全仮想アドレスに対するアクセスが不可能にされるが、上記の供与された仮想アドレス範囲、すなわちそれに対してはパーティション・アジャンクトのアクセスが可能になっている仮想アドレス空間は別である。こうしてアクティブ／インアクティブな仮想アドレス範囲を切り換えることは、例えば仮想入出力サーバ・パーティションへの切り換えに必要とされるような、２つの完全な論理パーティション間に現行状態マシンの全面的なコンテキスト・スイッチをもたらすようメモリ管理およびアドレス変換ハードウェア全体を再プログラミングすることに比べると、非常に高速である。このようにして、パーティション・アジャンクトのアドレス空間は、クライアント・パーティションのメモリ管理およびアドレス変換ハードウェア・リソースから切り離され独立している。従ってパーティション・アジャンクトは、プロセッサから見ればクライアント・パーティションの一部であるが、クライアント・パーティションおよびハイパーバイザから見れば、異なるエンティティである。
【００３８】
本明細書に提示されるパーティション・アジャンクトの概念は、クライアント・パーティションにサービスを提供するのに、完全な論理パーティションを使用する必要性を有利に減らす。このことはひいては、リソースを解放し、顧客ワークロードに対する性能を向上する。加えて、本明細書に開示されるパーティション・アジャンクトは、仮想化されたサービスに関連する性能上の不利点を減らすことによって、オペレーティング・システム固有のサービスの開発の代わりに、仮想プラットフォーム・サービスの開発および導入を後押しする。この結果、各サービスを複数のオペレーティング・システムの中でネイティブに実装するのではなく、１回のみ（すなわち、パーティション・アジャンクトにて）実装すればよくなるため、節約およびコスト開発が可能になる。
【００３９】
パーティション・アジャンクトをインスタンス化し使用するためのプロトコルの多様な例を、図６乃至１１に関連して以下に記載する。
【００４０】
図６は、例えば図４Ａに示すような使用に向けたローカル・パーティション・アジャンクトを作成する、プロセスの一実施形態のフローチャートである。パーティション・アジャンクトのインスタンス化またはセットアップのプロトコル６００は、クライアント・パーティションがパーティション・アジャンクト・サービスを必要としているかどうかについての問い合わせ６０５から始まる。「いいえ」であれば、プロトコルは終了する６１０。その他の場合、クライアント・パーティションは、自身の仮想アドレス空間およびメモリ空間の一部をパーティション・アジャンクト用に確保し６１５、これらの供与されたリソースを用いてパーティション・アジャンクトをインスタンス化するよう、ハイパーバイザを呼び出す６２０。ハイパーバイザは、新しいパーティション・アジャンクト（管理者からは見えないようになっている）を作成し、供与されたリソースをそのパーティション・アジャンクトに割り当てる６２５。新しいパーティション・アジャンクトを作成することは、ハイパーバイザが、ディスパッチ可能なプログラム・コンテキストを作成することを意味する。ハイパーバイザは、供与された仮想アドレス空間および供与されたメモリのハードウェア保護および強化をセットアップし、それにより当該空間にはクライアント・パーティションがもはやアクセスできないようにする６３０。さらに、ハイパーバイザは、当該パーティション・アジャンクト用に新しいディスパッチ可能状態を作成する６３５。この新しいディスパッチ可能状態というのは、そのプロセッサ・コアの他のＳＭＴスレッドが、パーティション・アジャンクトを呼び出しているクライアント・パーティションを実行し続けている間に、マルチスレッド型ハードウェア・コアの単独のハードウェア（ＳＭＴ）スレッドに当該パーティション・アジャンクトをディスパッチすることが可能であることを意味する。本発明のこの態様については、図１９乃至２２に関連して以下にてさらに記載する。
【００４１】
次に、ハイパーバイザは、供与されたアジャンクト・メモリへパーティション・アジャンクトのプログラム・イメージをロードし６４０、アジャンクト実行環境６４５を初期化する。パーティション・アジャンクト実行環境を初期化することには、ハイパーバイザが、実効アドレス空間と仮想アドレスの変換テーブル、アジャンクト保護キー、ならびに特別なハイパーバイザ問題状態特権を初期化することを含めることができる。ハイパーバイザは次に、パーティション・アジャンクト・プログラムのエントリ・ポイントにて実行開始するようにパーティション・アジャンクトをディスパッチし６５０、さらにハイパーバイザは、クライアント・パーティション用にパーティション・アジャンクト・サービスのインターフェース・コールをセットアップする６５５。ハイパーバイザは、パーティション・アジャンクトによって提供されるプロトコルあるいは機能ごとに、クライアント・パーティションのコールあるいは呼び出しを行う。次いでハイパーバイザは、パーティション・アジャンクトがインスタンス化した状態を持ってクライアント・パーティションへ戻る６６０。
【００４２】
図７は、本発明の一態様による、ローカル・パーティション・アジャンクトを作成するプロセッサの詳細な一例を示す。本例では、パーティション・アジャンクトは、デバイス・ドライバ・サービスを含む。入出力のインスタンス化またはセットアップ７００は、クライアント・パーティションが入出力デバイスの発見を行うこと７０５で始まる。クライアント・パーティションが、発見された入出力デバイス用に独自のデバイス・ドライバを有しているかどうかを問い合わせる処理が行われる７１０。「はい」であれば、次にクライアント・パーティションは、通常のデバイス・ドライバのロードおよび構成を進め７１５、それにより処理が終了する７２０。クライアント・パーティションが、発見されたＩ／Ｏデバイス用に独自のデバイス・ドライバを有していない場合には、そのＩ／Ｏデバイス用にパーティション・アジャンクト・イメージが利用可能であるかどうかを判断する処理が行われる７２５。「いいえ」であれば、デバイスを構成することはできず７３０、処理は終了する７２０。
【００４３】
パーティション・アジャンクト・イメージが利用可能であるとすれば、次にクライアント・パーティションは、自身の仮想アドレス空間およびメモリ空間の一部をそのパーティション・アジャンクト・イメージ用に確保あるいは供与し７３５、さらに、この供与された仮想アドレス空間およびメモリ空間のほかＩ／Ｏデバイスを用いてパーティション・アジャンクトをインスタンス化するよう、ハイパーバイザを呼び出す７４０。ハイパーバイザは、新しいパーティション・アジャンクトを作成し、供与されたリソースをそのパーティション・アジャンクトに割り当てる７４５。ハイパーバイザは次に、供与された仮想アドレス空間およびメモリ空間の適切なハードウェア保護および強化をセットアップし、それによりこの供与された空間にはクライアント・パーティションがもはやアクセスできないようにする７５０。パーティション・アジャンクトの新しいディスパッチ可能状態が、ハイパーバイザによって作成される７５５。上述したように、この新しいディスパッチ可能状態は、有利に、他のハードウェア・スレッドが呼び出し元（または要求元）クライアント・パーティションを実行し続けている間に、ＳＭＴデータ処理システムの１つのハードウェア・スレッドにディスパッチすることができる。ハイパーバイザは、供与されたアジャンクト・メモリへパーティション・アジャンクト・イメージをロードし７６０、パーティション・アジャンクト実行環境を初期化する７６５。パーティション・アジャンクトはその後、パーティション・アジャンクト・イメージのエントリ・ポイントにて初期化実行を開始するようにディスパッチされる７７０。ハイパーバイザは、当該クライアント・パーティション用にパーティション・アジャンクト・サービスのインターフェース・コールをセットアップするが、これには例えば、対象の仮想化されたデバイス・クラス用の仮想入出力要求キューイング・インターフェースなどが含まれる７７５。ハイパーバイザは、パーティション・アジャンクトのインスタンス化された状態と、クライアント・パーティションに割り当てられた新しい仮想デバイスとを持ってクライアント・パーティションへ戻り７８０、クライアント・パーティションは、通常の仮想デバイス・ドライバのロードおよび構成を進める７８５。
【００４４】
図８は、図４Ｂに示すような、汎用パーティション・アジャンクトをインスタンス化するプロセスの一実施形態のフローチャートである。本例では、パーティション・アジャンクトのインスタンス化が、仮想入出力サーバ（ＶＩＯＳ）として機能する論理パーティションから始まる。アジャンクトのインスタンス化とセットアップのプロトコル８００は、ＶＩＯＳが自身のメモリ空間および仮想アドレス空間の一部を汎用パーティション・アジャンクト用に確保または供与すること８０５で始まる。ＶＩＯＳは、この供与されたメモリおよび仮想アドレス空間のほか、促進的な仮想化されたアクセスが設けられる対象のＩ／Ｏデバイスを用いて汎用パーティション・アジャンクトをインスタンス化するよう、ハイパーバイザを呼び出す８１０。ハイパーバイザは、この場合もやはり管理者からは見えないようになっている新しい汎用パーティション・アジャンクトを作成し、供与されたメモリ空間およびＩ／Ｏデバイスをそのパーティション・アジャンクトに割り当てる８１５。ハイパーバイザは、供与された仮想アドレス空間およびメモリ空間のハードウェア保護および強化をセットアップし、それによりこの供与されたスペースにはＶＩＯＳがもはやアクセスできないようにする８２０。ハイパーバイザは、パーティション・アジャンクトの新しいディスパッチ可能状態を作成し８２５、この新しいディスパッチ可能状態は、マルチスレッド型ハードウェア・プロセッサ・コアの１つ以上の他のＳＭＴスレッドがパーティション・アジャンクトの呼び出し元のＶＩＯＳパーティションを実行し続けている間に、単独のＳＭＴスレッドにディスパッチすることが可能である８２５。ハイパーバイザは、供与されたアジャンクト・メモリへ汎用パーティション・アジャンクトのプログラム・イメージをロードし８３０、アジャンクト実行環境を初期化する８３５。ハイパーバイザはその後、アジャンクト・イメージのエントリ・ポイントにて初期化実行を開始するように汎用パーティション・アジャンクトをディスパッチし８４０、クライアント・パーティションによる割り当てまたはアタッチメントに利用可能な汎用パーティション・アジャンクト・サービスのインターフェース・コール（単数または複数）ならびに仮想デバイス・インスタンス（単数または複数）をセットアップし８４５、それにより処理プロトコルが完了する８５０。
【００４５】
図９は、図８に関連して上述したように作成されるＶＩＯＳパーティション・アジャンクトなどの汎用パーティション・アジャンクトにアタッチするプロセスの一例を表す。このクライアント・パーティションのアタッチメント９００は、クライアント・パーティションが、仮想Ｉ／Ｏデバイスの発見を行うこと９０５で始まる。検討中の仮想Ｉ／Ｏデバイスは汎用パーティション・アジャンクトによる促進に対応するかどうか、言い換えれば、アジャンクト・サービスが汎用的に存在しているかどうかを判断する処理が行われる９１０。「いいえ」であれば、次にクライアント・パーティションは、例えばＶＩＯＳを使って、通常の仮想デバイス構成を進め９１５、それにより処理は終了する９２０。仮想Ｉ／Ｏデバイス・アジャンクト・イメージが利用可能である場合には、クライアント・パーティションは、そのアジャンクト用に仮想アドレス空間を確保または供与し９２５、供与された仮想アドレス空間を用いて汎用パーティション・アジャンクト・イメージをアタッチするよう、ハイパーバイザを呼び出す９３０。ハイパーバイザは、クライアント・パーティションに対し、供与された仮想アドレス空間のハードウェア保護および強化をセットアップし９３５、汎用パーティション・アジャンクトは、供与された仮想アドレス空間を利用してクライアント・パーティションのページ・テーブルへマッピングされる。ハイパーバイザは、このクライアント・パーティションに関し、汎用パーティション・アジャンクトに対する仮想Ｉ／Ｏマッピングを作成する。その後処理は、通常の仮想デバイス構成を続けるようにクライアント・パーティションへ戻り９４０、それにより処理が完了９２０する。
【００４６】
図１０は、クライアント・パーティションから出されたサービス要求をパーティション・アジャンクトによって処理するプロトコルの一実施形態を示す。パーティション・アジャンクトのサービス１０００は、クライアント・パーティションがパーティション・アジャンクト・サービスの呼び出しを必要としているかどうかを問い合わせること１００５で始まる。「いいえ」であれば、処理は終了する１０１０。その他の場合には、クライアント・パーティションは、所望のアジャンクト・サービス・コールのパーティション・アジャンクト・サービス・インターフェースに向けたハイパーバイザ・コールを呼び出す１０１５。パーティション・アジャンクト・サービスが利用可能かどうかを判断する処理が行われる１０２０。「いいえ」であれば、そのサービス要求は無効にされ１０２５、処理は終了する１０１０。
【００４７】
パーティション・アジャンクト・サービスが利用可能であるとすれば、次にハイパーバイザは、パーティション・アジャンクト・サービス要求を受信し１０３０、そのサービス要求をキューに入れるかあるいはサービス要求を直ちに呼び出すかを判断する１０３５。サービス要求がキューに入れられることになれば、ハイパーバイザは、パーティション・アジャンクトに対するサービス要求をキューに入れ１０４０、クライアント・パーティションがパーティション・アジャンクト・サービスの呼び出しを必要としているかどうかという問い合わせ１００５に戻る。サービス要求が直ちに呼び出されることになれば、ハイパーバイザは、現行状態マシンの「軽量」コンテキスト・スイッチを実施し、プロセッサの制御をパーティション・アジャンクトに与える１０５０。
【００４８】
上記の軽量コンテキスト・スイッチについては、図１２乃至２２に関連して以下に詳細に説明する。パーティション・アジャンクトは、要求されたサービスを実施または起動してから、ハイパーバイザに戻る１０５５。ハイパーバイザは、同じような軽量コンテキスト・スイッチを実施して、パーティション・アジャンクト・サービスの起動元のクライアント・パーティションへプロセッサの制御を返し１０６０、それにより処理が完了する１０１０。
【００４９】
図１１は、パーティション・アジャンクトによるサービス要求完了に非同期に対処するプロトコルの一実施形態のフローチャートを示す。パーティション・アジャンクト要求完了の処理１１００は、パーティション・アジャンクト・サービス要求の完了を確認する問い合わせ１１０５で始まる。要求処理が完了していない場合には、パーティション・アジャンクト・サービス要求が完了するまで待機する処理が行われ、完了すると、サービス要求完了が、ハイパーバイザに対するキューに入れられる１１１０。次いで、上記のサービス要求完了について、クライアント・パーティションがポーリングをしているかあるいは割込を求めているかを判断する処理が行われる１１１５。ポーリングが使用される場合には、クライアント・パーティションが、サービス要求の完了についてハイパーバイザにポーリングし１１２０、その他の場合には、ハイパーバイザが、クライアント・パーティションのための割込をかける１１２５。ハイパーバイザはその後、軽量コンテキスト・スイッチ（以下に記載する）を実施し、クライアント・パーティション割込完了ハンドラを呼び出す１１３０。クライアント・パーティションは、サービス要求の完了を処理し１１３５、それによりこの処理プロトコルが完了する１１４０。
【００５０】
図１２〜１５は、データ処理システムにおける論理パーティションから論理パーティションへの完全なコンテキスト・スイッチの一例を示す。２つの別個の完全なパーティション間でコンテキストが切り換わるとき、各論理パーティションは、割り当てられた各自の独特な仮想アドレス空間を有している。ハイパーバイザが個々のプロセッサ上で完全なパーティション・スイッチを実施する場合、ハイパーバイザは、プロセッサ・コンテキストのマシン状態（汎用レジスタ、浮動小数点レジスタ、専用レジスタ、命令アドレス・レジスタなど）をセーブしリストアしなければならないほか、メモリ管理ユニット（ＭＭＵ）ハードウェアを無効化して再初期化しなければならない。論理パーティションの完全なコンテキスト・スイッチとは、異なる仮想アドレス空間への切り換えをも意味するため、上述のことには、あらゆるアドレス変換キャッシュ（例えば、変換ルックアサイド・バッファ）を無効化することが含まれ、さらに、プロセッサのハードウェア・ページ・テーブル・ポインタを変更して新しい論理パーティションのインメモリ・ページ・テーブルの方を指すようにすることも含まれる。新しい論理パーティションは、ディスパッチされるたびに、参照する自身のアドレス変換の全てを再構築する必要もあるため、論理パーティションの完全なコンテキスト・スイッチがＭＭＵに与える影響は、論理パーティションのコンテキスト・スイッチを実施する上で最も大きいコストとなる。このことは、本明細書に開示されているアジャンクト・パーティションの概念とは対照的である（なぜならば、アジャンクトとそのクライアント・パーティションとは仮想アドレス空間を共用する）。アジャンクト・パーティションの概念では、ＭＭＵハードウェアが無効化あるいは変更される必要はなく、パーティション・アジャンクトへの状態マシンのコンテキスト・スイッチの一環として、当該パーティション・アジャンクトが使用することのできるプロセッサ・コンテキスト／レジスタのサブセットのみをセーブしリストアすればよい。
【００５１】
図１２に示すように、第１論理パーティション（ＬＰＡＲ１）１２００が、仮想アドレスと実アドレスのページ・テーブル１２０５を有し、本ページ・テーブルは、ＬＰＡＲ１に割り当てられている仮想アドレスの範囲を含む。同様に、第２論理パーティション（ＬＰＡＲ２）１２１０は、仮想アドレスと実アドレスのページ・テーブル１２１５を有し、本ページ・テーブルは、ＬＰＡＲ２に割り当てられている仮想アドレスの範囲を含む。ＬＰＡＲ１によって使用される仮想アドレス空間の範囲は、ＬＰＡＲ２によって使用される仮想アドレス空間とは別個のものであり、一方の論理パーティションが他方の論理パーティションの仮想アドレス空間にアクセスすることはできない。
【００５２】
図１３は、プロセッサ・コア・マシン１３００の、メモリ管理およびアドレス変換ハードウェアを含めたプロセッサのマシン状態の一例を示す。図に示すハードウェアは、汎用レジスタ１３１０、浮動小数点レジスタ１３２０、ベクトル・レジスタ１３３０、専用レジスタ１３４０、変換ルックアサイド・バッファ１３５０、およびセグメント・ルックアサイド・バッファ１３６０を含む。変換ルックアサイド・バッファは、仮想アドレスから実アドレスへの変換の入ったキャッシュであり、一方、セグメント・ルックアサイド・バッファは、実効アドレスから仮想アドレスへの変換を含んでいる。
【００５３】
図１４では、ＬＰＡＲ１がディスパッチされた状態、すなわち、プロセッサの状態マシンにおいてアクティブ状態または実行状態であることが想定されている。図に示すように、ＬＰＡＲ１が実行中のこのマシン状態は、汎用レジスタ１３１０、浮動小数点レジスタ１３２０、ベクトル・レジスタ１３３０、専用レジスタ１３４０、変換ルックアサイド・バッファ１３５０、およびセグメント・ルックアサイド・バッファ１３６０の中に状態データを含む。専用レジスタＳＤＲ１  １４００は、実行状態にある論理パーティション、すなわち本例ではＬＰＡＲ１  １２００の、仮想アドレスと実アドレスのページ・テーブルを指し示し、すなわちこれに権利を与えている。ＬＰＡＲ２  １２１０は、インアクティブ状態である。
【００５４】
図１５は、ＬＰＡＲ１がアクティブ状態から外れるように切り換わり、ＬＰＡＲ２がアクティブ状態に入るように切り換わった後のプロセッサ・コアのマシン状態の状況を示す。図に示すように、ＬＰＡＲ２  １２１０のマシン状態データが、汎用レジスタ１３１０、浮動小数点レジスタ１３２０、ベクトル・レジスタ１３３０、および専用レジスタ１３４０内にリストアされている。この場合、専用レジスタＳＤＲ１  １４００は、ＬＰＡＲ２  １２１０の仮想アドレスと実アドレスのテーブルを指し示すように切り換えられており、ＬＰＡＲ１  １２００はインアクティブになっている。そのため、セグメント・ルックアサイド・バッファ１３６０はＬＰＡＲ２の状態データによってリストアされ、変換ルックアサイド・バッファ１３５０は無効になっている。このバッファは、ＬＰＡＲ２がメモリ・アドレスへアクセスするにつれて埋められていくことになる。
【００５５】
一方、図１６〜１８は、本発明の一態様による、論理パーティションからパーティション・アジャンクトへの現行状態マシンのコンテキスト・スイッチを示す。図１６は、論理パーティション１６００（ＬＰＡＲ１）を含んだデータ処理システムの一実施形態を示し、この論理パーティションには、仮想アドレスと実アドレスのページ・テーブル１６２０が含まれる。データ処理システムはさらに、パーティション・アジャンクト１６１０を含む。本例では、パーティション・アジャンクトを論理パーティションの仮想アドレス空間へマッピングするために、３つのページ・テーブル・エントリ１６２１が取り置かれている。本例は、論理パーティション１６００がパーティション・アジャンクト１６１０を起動するクライアント・パーティションであることを想定している。従って、図１６に示すように、起動元論理パーティションがパーティション・アジャンクトに仮想アドレス空間を供与しており、パーティション・アジャンクトの仮想アドレス空間は、起動元論理パーティションと同じ仮想アドレス範囲に存在する。このことが、ＬＰＡＲ１の仮想アドレスと実アドレスのページ・テーブル１６２０の中にありながらパーティション・アジャンクトのために取り置かれている、ページ・テーブル・エントリによって表されている。上述したように、ハイパーバイザから見れば、スケジューリングおよび隔離の面で、パーティション・アジャンクトは起動元論理パーティション（ＬＰＡＲ１）とは完全に別個のパーティションである。それにもかかわらず、提示されているように、パーティション・アジャンクトと論理パーティションとは仮想アドレス空間範囲を共用する。
【００５６】
図１７は、ＬＰＡＲ１がアクティブな実行状態にディスパッチされているプロセッサ・コアのマシン状態の一例を示す。図に示すように、ＬＰＡＲ１のマシン状態データが、汎用レジスタ１７１０、浮動小数点レジスタ１７２０、ベクトル・レジスタ１７３０、および専用レジスタ１７４０を得ている。加えて、このパーティションのマシン状態は、変換ルックアサイド・バッファ１７５０を概ね占めており、さらにセグメント・ルックアサイド・バッファ１７６０を占めている。専用レジスタＳＤＲ１  １７００は、ＬＰＡＲ１  １６００の仮想アドレスと実アドレスへのページ・テーブル１６２０を指し示している。本例では、パーティション・アジャンクト１６１０は、インアクティブ状態にある。図に示すように、変換ルックアサイド・バッファ１７５０には、アジャンクトが実行されていた前の期間から引き続いて、パーティション・アジャンクト用の１つ以上のエントリ１７５１が含まれる場合がある。１つの論理パーティションのアドレス空間の下位部分を隔離するように用いられるハードウェア保護キーによって、論理パーティション１６００がそれらの仮想アドレスにアクセスすることは防止されているため、上記のエントリ１７５１を無効にする必要はない。例えば、アクセス・マスク・レジスタ（ＡＭＲ：ａｃｃｅｓｓ  ｍａｓｋ  ｒｅｇｉｓｔｅｒ）１７７０と表記されている専用レジスタによって制御される保護キーなどを用いたページ保護メカニズムが、使用されるとよい。ＡＭＲレジスタ１７７０は、任意の所与の瞬間に自発的にオンになるキーを保持しているとよい。参照されるべきページ・テーブル・エントリに関しては、関連キーが、ＡＭＲレジスタにて有効になっていなければならない。ハイパーバイザがＬＰＡＲ１を実行しているとき、ハイパーバイザは、ＬＰＡＲ１がページ・テーブル・エントリ１６２１、あるいは変換ルックアサイド・バッファ１７５０のエントリ１７５１にアクセスすることができないように、保護キーを設定する。
【００５７】
図１８は、パーティション・アジャンクト１６１０がアクティブにディスパッチされている、プロセッサ・コアのマシン状態を示す。本例では、パーティション・アジャンクト１６１０によって提供されるアジャンクト・サービスは、汎用レジスタ１７１０を使用するが、現在インアクティブ状態にあるＬＰＡＲ１  １６００の状態情報を持ち続けている浮動小数点レジスタ１７２０およびベクトル・レジスタ１７３０は使用しない。さらに、パーティション・アジャンクトによって使用されるのは、選択された専用レジスタ１７４０だけであり、残りの専用レジスタは無効にされているかあるいはＬＰＡＲ１  １６００の状態情報を含んでいる。専用レジスタＳＤＲ１  １７００（本例において）は引き続きＬＰＡＲ１の仮想アドレスと実アドレスのページ・テーブル１６２０を指し示している。なぜならば、パーティション・アジャンクト１６１０は、上記ページ・テーブルの中の供与された仮想アドレス空間１６２１へマッピングされているからである。変換ルックアサイド・バッファ１７５０内のいくつかのエントリ１７５１が、ディスパッチされているパーティション・アジャンクトによって使用されており、残りのエントリは、ＬＰＡＲ１の状態情報を持ち続けている。セグメント・ルックアサイド・バッファ１７６０のたった１つのエントリ１７６１が、アドレス空間にある当該アジャンクトの割り当て分を受け持つべく組み入れられており、残りのエントリがＬＰＡＲ１の状態情報を持ち続けている状態にあって、ＬＰＡＲ１によるアクセスから保護されている。例えば専用レジスタＡＭＲ１７７０などによって保護キーが使用されているために、パーティション・アジャンクトは、指定されたレジスタおよびテーブル・エントリにのみアクセスする。ハイパーバイザから見れば、パーティション・アジャンクトをディスパッチすることは、ＬＰＡＲ１をディスパッチすることとは別なものであるが、その一方で、パーティション・アジャンクトに使用されていない様々なレジスタおよびテーブルでは、ＬＰＡＲ１のためにプロセッサ・コアのマシン状態情報が保持されている。それ故に、ＬＰＡＲ１からパーティション・アジャンクトへのコンテキスト・スイッチは、状態マシンの「軽量」コンテキスト・スイッチであり、選択されたレジスタおよびテーブル情報のみが、パーティション・アジャンクトの状態情報によって更新される。同様に、パーティション・アジャンクトからＬＰＡＲ１へ再び切り換える場合には、パーティション・アジャンクトに使用されていたレジスタ情報のみを、ＬＰＡＲ１アクティブ状態への再変換に向けて更新すればよい。
【００５８】
図１９乃至２２は、同時ハードウェア・マルチスレッディングを使用しているデータ処理システムの、本明細書に記載するような論理パーティションとパーティション・アジャンクトとの間における現行状態マシンのコンテキスト・スイッチの一例を示す。示される例は、２ハードウェアスレッド型コアである。一方、当業者には分かるように、記載される概念は、複数の２ハードウェアスレッド型コアにも容易に適用することができる。例を挙げると、ニューヨーク、アーモンクのインターナショナル・ビジネス・マシーンズ・コーポレーションが提供するＰＯＷＥＲ５（ＩＢＭ Corporationの商標）およびＰＯＷＥＲ６（ＩＢＭ Corporationの商標）のＰｏｗｅｒ命令セット・アーキテクチャ・プロセッサは、ハードウェアスレッド型コアを２つ使用している。
【００５９】
図１９に示すように、このマルチスレッド型コアには、変換ルックアサイド・バッファ１９２０を共用する第１ハードウェア・スレッド１９００と第２ハードウェア・スレッド１９１０とが含まれる。各ハードウェア・スレッドには、例えば、汎用レジスタ、浮動小数点レジスタ、および専用レジスタのほか、図１３乃至１８に関連して上述したセグメント・ルックアサイド・バッファが含まれる。図１９では、アクティブになっている論理パーティションがない状態でマルチスレッド型ハードウェア・コアが示されている。図２０では、第１論理パーティション（ＬＰＡＲ１）がアクティブであることが想定されており、ＬＰＡＲ１の状態情報が、ハードウェア・スレッド型コア１９００、１９１０のほか変換ルックアサイド・バッファ１９２０を占めている。
【００６０】
図２１では、第１論理パーティション（ＬＰＡＲ１）と第２論理パーティション（ＬＰＡＲ２）との間で状態マシンのコンテキスト・スイッチが起きている。図に示すように、これは完全なコンテキスト・スイッチであり、２ハードウェアスレッド型コアの本例の第１ハードウェア・スレッド型コア１９００、第２ハードウェア・スレッド型コア１９１０および変換ルックアサイド・バッファ１９２０を、ＬＰＡＲ２のマシン状態が占めている。
【００６１】
図２２は、ＬＰＡＲ１から、ＬＰＡＲ１によって起動されるパーティション・アジャンクトへの、コンテキスト・スイッチの一例を示す。図に示すように、１つのスレッド１９１０だけがパーティション・アジャンクトの状態情報によって更新されており、言い換えれば、軽量コンテキスト・スイッチが行われている。具体的には、本例では、汎用レジスタおよびいくつかの専用レジスタがパーティション・アジャンクト・サービスによって使用されており、残りのレジスタとセグメント・ルックアサイド・バッファとは論理パーティション（ＬＰＡＲ１）のマシン状態情報を持ち続けている。さらに、もう１つのスレッド、すなわちハードウェア・スレッド１９００は、起動元論理パーティション（すなわち、ＬＰＡＲ１）の状態を維持し実行し続けている。本例では、変換ルックアサイド・バッファもＬＰＡＲ１のマシン状態を持ち続けており、選択されたエントリ１９２１のみが、パーティション・アジャンクトによって使用されている。各ハードウェア・スレッドは、一連のキーを含んだ独自のアクセス・マスク・レジスタを有しており、この一連のキーによって、パーティション・アジャンクトが（当該スレッド上でアクティブであるときに）どのハードウェアへアクセスするかが制御される。このように、マルチスレッド型データ処理システムの別のスレッドではパーティション・アジャンクトがアクティブとなっている間にも、１つのスレッドではＬＰＡＲ１がアクティブなままになる。
【００６２】
一態様では、上述のパーティション・アジャンクトが、当該論理パーティションには構成不可能な物理入出力（Ｉ／Ｏ）デバイスへのアクセスをその論理パーティションに提供する、専用アジャンクトとして利用される。現在のところ、論理パーティションのオペレーティング・システムが、割り当てられた物理Ｉ／Ｏアダプタ用のデバイス・ドライバへアクセスできない場合には、そのオペレーティング・システムがそのＩ／Ｏアダプタを直接使うことはできない。こうした場合に入出力アダプタから機能を得るには、当該デバイスを例えば仮想入出力サーバ（ＶＩＯＳ）パーティションへ再割り当てするユーザ介入が必要となり、これには、ＶＩＯＳパーティションが既存でなければこれを作成すること、ならびに論理パーティションとＶＩＯＳとの間に仮想入出力チャネルを作成することが含まれる。
【００６３】
図２３Ａおよび２３Ｂは、論理パーティションによって所有されている専用Ｉ／Ｏデバイスの２つの従来型の事例を示す。上記の論理パーティションは、当該Ｉ／Ｏデバイスにアクセスしこれを使用するネイティブ・デバイス・ドライバを、利用している。図２３Ａでは、データ処理システム２３００は、１つ以上の顧客アプリケーション２３１２を含むＡＩＸパーティション２３１０と、ＡＩＸオペレーティング・システム・インスタンス２３１４と、ＡＩＸハードウェア・デバイス・ドライバ２３２４とを含む。ＡＩＸパーティション２３１０は、ハイパーバイザ２３３０の上で動作し、ハイパーバイザによって提供される機能よりも高度な機能を提供する。ハイパーバイザ２３３０は、基盤をなすシステム・ハードウェア２３４０の上で実行され、このシステム・ハードウェアは、１つ以上の物理Ｉ／Ｏデバイス（単数または複数）２３５０を含むように示されている。Ｉ／Ｏデバイス（単数または複数）２３５０は、特定のＡＩＸパーティション・イメージ２３１０に割り当てられた１つ以上の専用デバイスを含む。本例では、ネイティブＡＩＸハードウェア・デバイス・ドライバ２３２４が、割り当てられたＩ／Ｏデバイス（単数または複数）２３５０へのアクセスを可能にすることが想定されている。
【００６４】
図２３Ｂは、データ処理システム２３００’の別の実施形態を示す。このデータ処理システムは、１つ以上の顧客アプリケーション２３１２’を含んだＬｉｎｕｘ（Ｒ）パーティション２３１０’と、Ｌｉｎｕｘオペレーティング・システム２３１４’と、Ｌｉｎｕｘハードウェア・デバイス・ドライバ２３２４’とを含む。Ｌｉｎｕｘパーティション２３１０’は、ハイパーバイザ２３３０’の上で動作し、ハイパーバイザ自体によって提供される機能よりも高度な機能を提供する。ハイパーバイザ２３３０’は、基盤をなすシステム・ハードウェア２３４０’の上で実行され、このシステム・ハードウェアは、（１つ以上の）Ｉ／Ｏデバイス２３５０’を含むように示されている。Ｉ／Ｏデバイス２３５０’へのアクセスは、ネイティブＬｉｎｕｘハードウェア・デバイス・ドライバ２３２４’を介する。
【００６５】
図２３Ａおよび２３Ｂの例では、検討中の論理パーティションが、割り当てられたＩ／Ｏデバイス（単数または複数）に適切なネイティブ・デバイス・ドライバを有していることが想定されている。このことは常に当てはまるとは限らない。当てはまらない場合には、従来、仮想Ｉ／Ｏサーバ（ＶＩＯＳ）パーティションと称される第２の論理パーティションが使用される。
【００６６】
デバイス・ドライバをオペレーティング・システム間で共用することができれば、デバイス・ドライバの開発コストを削減することができるであろう。このことは、後述の、本発明の一態様に従ってデバイス・ドライバをパーティション・アジャンクト・サービスとして導入することにより、達成される。上述したように、パーティション・アジャンクトは、従来型の、ユーザ・アプリケーションおよびカーネル・サービスそれぞれによる問題状態および特権状態とは異なった実行状態にて動作する、軽量の実行環境である。この新しい実行状態は、本明細書においてハイパーバイザ／問題状態と称され、図２４Ａおよび２４Ｂ（ここでは、ほんの一例としてＡＩＸおよびＬｉｎｕｘを図示する）に示されている。以下に説明するように、オペレーティング・システムは、当該論理パーティションに割り当てられた特定の構成不可能なＩ／Ｏデバイスをサポートするのに、完全なＶＩＯＳパーティションを導入する代わりにパーティション・アジャンクトを使用すればよい。そのような場合に、割り当てられた物理Ｉ／Ｏデバイスへのインターフェースとして非ネイティブ・オペレーティング・システムのデバイス・ドライバを使用するパーティション・アジャンクトが作成される。なお、ネイティブおよび非ネイティブのオペレーティング・システムとは、２つの異なった任意のオペレーティング・システムであればよいことに留意されたい。
【００６７】
図２４Ａは、本発明の上記態様の一例を示す。この図では、データ処理システム２４００が、ＡＩＸパーティション２４１０とＬｉｎｕｘパーソナリティのパーティション・アジャンクト（またはＬｉｎｕｘパーソナリティ・アジャンクト）２４２０とを含むように示されている。ＡＩＸパーティション２４１０は、１つ以上の顧客アプリケーション２４１２と、ＡＩＸオペレーティング・システム・インスタンス２４１４と、仮想Ｉ／Ｏ機構２４１６とを含む論理パーティションである。ＡＩＸパーティション２４１０は、ハイパーバイザ２４３０の上で動作し、ハイパーバイザによって提供される機能よりも高度な機能を提供する。ハイパーバイザ２４３０は、基盤をなすシステム・ハードウェア２４４０の上で実行され、このシステム・ハードウェアは、ＡＩＸパーティション２４１０に割り当てられた（１つ以上の）Ｉ／Ｏデバイス２４５０を含むように示されている。
【００６８】
Ｌｉｎｕｘパーソナリティ・アジャンクト２４２０は、概念上、ＡＩＸパーティション２４１０にとって専用の子パーティションである。上述したように、パーティション・アジャンクトは完全な論理パーティションより小さいとはいえ、ハイパーバイザによって、パーティション・アジャンクトと、そのパーティション・アジャンクトが一緒に動作するＡＩＸパーティションとの間のセキュリティおよび隔離が強化されるような形で動作している。パーティション・アジャンクトは、完全な論理パーティションに比べると縮小された機能を備えている。例えばパーティション・アジャンクトは、メモリ管理ユニット（ＭＭＵ）構成または浮動小数点機構へアクセスすることはできず、所望のサービス（例えば、Ｉ／Ｏドライバ）を実行するのに必要な機能のみが備わっている環境である。
【００６９】
図に示す例では、Ｌｉｎｕｘパーソナリティ・アジャンクト２４２０は、仮想Ｉ／Ｏインターフェース２４２２と、Ｉ／Ｏデバイス２４５０へのアクセスを可能にするハードウェア・デバイス・ドライバ・サービス２４２４とを含む。本例では、ハードウェア・デバイス・ドライバ・サービス２４２４は、Ｌｉｎｕｘパーソナリティ・アジャンクト２４２０内で動作するＬｉｎｕｘハードウェア・デバイス・ドライバである。Ｌｉｎｕｘパーソナリティ・アジャンクトは、ＡＩＸパーティションには構成不可能なＩ／Ｏデバイス２４５０が自身に割り当てられていることをＡＩＸパーティションが確認したことを受けて、ＡＩＸパーティション２４１０によって生成されるものである。Ｌｉｎｕｘパーソナリティ・アジャンクト２４２０は、物理Ｉ／Ｏデバイス用のＬｉｎｕｘハードウェア・デバイス・ドライバを実行するために十分な非ネイティブ・カーネル・サービスを含む。こうした非ネイティブ・カーネル・サービスは、対応する完全なオペレーティング・システムよりは小さく、すなわち本例では完全なＬｉｎｕｘオペレーティング・システムより小さい。
【００７０】
動作中、ＡＩＸパーティション２４１０は、ＡＩＸオペレーティング・システム２４１４と、Ｌｉｎｕｘハードウェア・デバイス・ドライバ２４２４を含んだＬｉｎｕｘパーソナリティ・アジャンクト２４２０との間にある、仮想Ｉ／Ｏインターフェース２４１６、２４２２を介して、Ｉ／Ｏデバイス２４５０にアクセスする。非ネイティブであるＬｉｎｕｘパーソナリティをパーティション・アジャンクトに与えることによって、Ｌｉｎｕｘハードウェア・デバイス・ドライバがそのパーティション・アジャンクト内で動作できるようになり、その結果、元来、当該Ｉ／ＯデバイスがＡＩＸパーティションによって構成不可能であるにもかかわらずＡＩＸパーティション２４１０に割り当てられた、Ｉ／Ｏデバイス２４５０へのアクセスが設けられる。デバイスは、Ｌｉｎｕｘパーソナリティ・アジャンクト２４２０を介して、ＡＩＸパーティションにとってアクセス可能なものになる。
【００７１】
図２４Ｂは、論理パーティションに割り当てられた構成不可能なＩ／Ｏデバイスへのアクセスを設けるパーティション・アジャンクトの使用に関する別の例を示しており、この場合における論理パーティションは、データ処理システム２４００’のＬｉｎｕｘパーティション２４１０’である。本実装のパーティション・アジャンクトは、ＡＩＸパーソナリティ・アジャンクト２４２０’であって、このパーティション・アジャンクトは内部に、非ネイティブ・オペレーティング・システムのデバイス・ドライバすなわち本例ではＡＩＸハードウェア・デバイス・ドライバ２４２４’を実行するのに十分な、非ネイティブのＡＩＸカーネル・サービスを含む。こうした非ネイティブ・カーネル・サービスは、対応する完全なオペレーティング・システムよりは小さく、すなわち、ＡＩＸハードウェア・デバイス・ドライバを実行するのに従来必要とされている完全なＡＩＸオペレーティング・システムより小さい。Ｌｉｎｕｘパーティション２４１０’は、１つ以上の顧客アプリケーション２４１２’と、Ｌｉｎｕｘオペレーティング・システム２４１４’と、仮想Ｉ／Ｏ機構２４１６’とを含む論理パーティションである。Ｌｉｎｕｘパーティション２４１０’は、ハイパーバイザ２４３０’の上で動作し、ハイパーバイザによって提供される機能よりも高度な機能を提供する。ハイパーバイザ２４３０’は、基盤をなすシステム・ハードウェア２４４０’の上で実行され、このシステム・ハードウェアは、（１つ以上の）Ｉ／Ｏデバイス２４５０’を含むように示されている。
【００７２】
ＡＩＸパーソナリティ・アジャンクト２４２０’は、この場合もやはり概念上は、クライアント・パーティション２４１０’にとっての子パーティションである。パーティション・アジャンクトは、完全な論理パーティションより小さいとはいえ、上述のように、ハイパーバイザによって、パーティション・アジャンクトと、その範囲内でパーティション・アジャンクトが動作するクライアント・パーティションとの間のセキュリティおよび隔離が強化されるような形で実行される。パーティション・アジャンクトは、所望のサービス（例えば、Ｉ／Ｏドライバ）を実行するのに必要な機能のみが備わっている環境である。本例では、アジャンクトは、生成元の論理パーティションすなわちＬｉｎｕｘパーティション２４１０’の専用であることが想定されている。
【００７３】
図に示す例では、ＡＩＸパーソナリティ・アジャンクト２４２０’は、仮想Ｉ／Ｏインターフェース２４２２’と、Ｉ／Ｏデバイス２４５０’へのアクセスを可能にするＡＩＸハードウェア・デバイス・ドライバ２４２４’とを含む。図に示すように、動作中、Ｌｉｎｕｘパーティション２４１０’は、パーティション・アジャンクト２４２０’を介してＩ／Ｏデバイス２４５０’にアクセスする。
【００７４】
本明細書で使用されているパーソナリティ・アジャンクトとは、特定のオペレーティング・システムのパーソナリティを有しているパーティション・アジャンクトであるが、完全なオペレーティング・システムより小さい。本明細書に記載される実装では、パーソナリティ・アジャンクトは、そのパーティション・アジャンクトを生成している論理パーティションのネイティブ・オペレーティング・システムにとって非ネイティブなパーソナリティである。例えば、図２４ＡのＡＩＸパーティション２４１０が、Ｌｉｎｕｘパーソナリティ・アジャンクトの作成を起動する一方で、図２４ＢのＬｉｎｕｘパーティション２４１０’が、ＡＩＸパーソナリティ・アジャンクトの作成を起動する。これらは、ほんの一例として提示されているに過ぎない。別の実装では、パーソナリティ・アジャンクトは、そのパーティション・アジャンクトを生成している論理パーティションのネイティブ・オペレーティング・システムにとってネイティブなパーソナリティであってもよい。さらに、非ネイティブの実装において、パーティション・アジャンクト内に実現されるパーソナリティは、論理パーティションの任意のネイティブ・オペレーティング・システムにとっての任意の非ネイティブ・オペレーティング・システムであればよい。パーソナリティ・アジャンクトは、特定のデバイス・ドライバがそのアジャンクト内で動作するのに必要なオペレーティング・システムのデバイス・ドライバ・ランタイム環境の、最小限のサービス・セットを含む。デバイス・ドライバは、自身のホスト・オペレーティング・システム環境によって定義されるプログラミング環境に準拠する。このプログラミング環境には、一般に、メモリ配分、タイマ・サービス、割込ハンドラの登録ならびに割込を受けての呼び出し、ＤＭＡ（ｄｉｒｅｃｔ  ｍｅｍｏｒｙ  ａｃｃｅｓｓ：直接メモリ・アクセス）用のＩ／Ｏバッファのマッピングなどといったもののための、多様なカーネル・サービスが含まれる。パーソナリティ・アジャンクトは、上記のサービスおよび機能を、本当のホスト・オペレーティング・システムのカーネルが行うのと同様のやり方で提供し、そのためアジャンクト内で動作しているデバイス・ドライバには、自身のネイティブ・ホスト・オペレーティング環境と本明細書に記載のパーソナリティ・アジャンクトとの違いが分からない。これにより、完全な論理パーティションの代わりにもっと軽量のパーティション・アジャンクトにおいて、未修正のデバイス・ドライバを実行することができるようになる。
【００７５】
具体的な例を挙げると、図２４ＡのＬｉｎｕｘパーソナリティ・アジャンクト２４２０は、Ｌｉｎｕｘデバイス・ドライバのプログラミング・インターフェースおよび実行環境を模倣したランタイム環境およびカーネル・サービスを提供し、それに対し図２４ＢのＡＩＸパーソナリティ・アジャンクト２４２０’は、完全なＡＩＸオペレーティング・システムのＡＩＸデバイス・ドライバのプログラミング・インターフェースおよび実行環境を模倣したランタイム環境およびカーネル・サービスを提供する。
【００７６】
パーティション・アジャンクトを作成するプロトコルについて、図７の例示的なフローチャートに関連して以下により詳細に述べる。パーティション・アジャンクトを構築するこのプロトコルは、その論理パーティションには構成不可能な物理入出力（Ｉ／Ｏ）デバイスを所有している論理パーティション、言い換えれば、割り当てられた物理入出力デバイスにアクセスするデバイス・ドライバ・インスタンスのない論理パーティションによって起動されるとよい。
【００７７】
図７を参照すると、入出力のインスタンス化（またはセットアップ）７００は、論理パーティションが入出力デバイスの発見を行うこと７０５で始まる。オペレーティング・システムは、アタッチされたＩ／Ｏバス、またはファームウェアが提供するハードウェア構成情報、あるいはその両方を調べて、デバイス・ドライバが必要とされているＩ／Ｏデバイスを探す。例えば、オペレーティング・システムは、ＰＣＩ構成空間から読み取ることのできる一意のベンダおよびデバイスＩＤによって特定される、ＰＣＩスロットに差し込まれたＰＣＩアダプタ・カードを見つけ出す場合がある。オペレーティング・システムは次に、発見された各デバイス用のネイティブ・デバイス・ドライバを自身が持っているかどうかを判断する。これは実質的に、オペレーティング・システムが、登録されているロード可能なデバイス・ドライバの検索を行うこと７１０である。「はい」であれば、次に論理パーティションは通常のデバイス・ドライバのロード構成を進め７１５、それにより処理が終了する７２０。一方、クライアント・パーティションが、そのパーティションに割り当てられた、発見されたＩ／Ｏデバイス用の独自のデバイス・ドライバを有していなければ、次に、そのＩ／Ｏデバイス用にパーティション・アジャンクト・イメージが利用可能であるかどうかを判断する処理が行われる７２５。「いいえ」である場合、デバイスを構成することはできず７３０、処理は終了する。
【００７８】
パーティション・アジャンクトのデバイス・ドライバ・イメージが特定のＩ／Ｏデバイス用に利用可能であるかどうかの判断は、オペレーティング・システムに登録されているパーティション・アジャンクト・イメージを検索することを介して、あるいはプラットフォーム・ファームウェアまたは他の何らかのパーティション・アジャンクト・イメージ・サーバに問い合わせを行うことによって、パーティション・アジャンクトのデバイス・ドライバ・イメージが存在するかどうか、ならびにそれは割り当てられた物理Ｉ／Ｏデバイスを動作させることができるかどうかを判断することで、達成することができると考えられる。
【００７９】
パーティション・アジャンクト・イメージが当該Ｉ／Ｏデバイス用に利用可能であるとすれば、次にクライアント・パーティションは、自身の仮想アドレス空間およびメモリ空間の一部をパーティション・アジャンクト・イメージ用に確保または供与し７３５、この供与された仮想アドレス空間およびメモリ空間のほかＩ／Ｏデバイスを用いてパーティション・アジャンクトをインスタンス化するよう、ハイパーバイザを呼び出す７４０。実質的にオペレーティング・システムは、自身がそのためのデバイス・ドライバを持たなかった物理Ｉ／Ｏデバイスの所有権を、ハイパーバイザに所有権を譲渡することによって、動的に手放す。ハイパーバイザは、新しいパーティション・アジャンクトを作成し、供与されたリソースをそのパーティション・アジャンクトに割り当てる７４５。ハイパーバイザはその後、供与された仮想アドレス空間およびメモリ空間の適切なハードウェア保護および強化をセットアップし、それによりこの供与された空間にはクライアント・パーティションがもはやアクセスできないようにする７５０。ハイパーバイザによって、パーティション・アジャンクトの新しいディスパッチ可能状態が作成される７５５。
【００８０】
上述したように、この新しいディスパッチ可能状態は、有利に、他のハードウェア・スレッドが呼び出し元（あるいは要求元）クライアント・パーティションを実行し続けている間に、ＳＭＴデータ処理システムの１つのハードウェア・スレッドにディスパッチすることができる。ハイパーバイザは、供与されたアジャンクト・メモリへパーティション・アジャンクト・イメージをロードし７６０、パーティション・アジャンクト実行環境を初期化する７６５。パーティション・アジャンクトは、その後、パーティション・アジャンクト・イメージのエントリ・ポイントにて初期化実行を開始するようにディスパッチされる７７０。ハイパーバイザは、例えば対象の仮想化デバイス・クラス用の仮想入出力要求キューイング・インターフェースなどを含め、当該クライアント・パーティション用のパーティション・アジャンクト・サービスのインターフェース・コールをセットアップする７７５。ハイパーバイザは、パーティション・アジャンクトがインスタンス化した状態と、クライアント・パーティションに割り当てられた新しい仮想Ｉ／Ｏデバイスとを持って、クライアント・パーティションへ戻る７８０。本ステップにて、ハイパーバイザは、クライアント・パーティションに対し仮想Ｉ／Ｏデバイスを動的に加えるのであるが、この仮想Ｉ／Ｏに関しては、クライアント・パーティションのネイティブ・オペレーティング・システムがデバイス・ドライバを有している。クライアント・パーティションはその後、その仮想Ｉ／Ｏデバイスに関し、通常の仮想デバイス・ドライバ・ロードおよび構成を進め７８５、これにより最終的に、クライアント・パーティションによって構成不可能であった物理Ｉ／Ｏデバイスへのアクセスが得られる。
【００８１】
要約すると上記の記載は、論理パーティションによる、その論理パーティションに所有されている物理入出力（Ｉ／Ｏ）デバイスへのアクセスを構築する方法である。本方法は以下を含む：データ処理システム内にパーティション・アジャンクトを作成するステップであって、パーティション・アジャンクトは、物理Ｉ／Ｏデバイスと、論理パーティションからパーティション・アジャンクトへ供与された仮想アドレス空間とを使用して作成され、論理パーティションは、ネイティブ・オペレーティング・システムを含み、パーティション・アジャンクトは、物理Ｉ／Ｏデバイス用の非ネイティブ・オペレーティング・システムのデバイス・ドライバを含み、物理Ｉ／Ｏデバイスは、論理パーティションによって構成不可能となっている、作成するステップ；および、割り当てられた物理Ｉ／Ｏデバイスにパーティション・アジャンクトの非ネイティブ・オペレーティング・システムのデバイス・ドライバを介してインターフェース接続された仮想Ｉ／Ｏデバイスを、論理パーティションに備えるステップ。上記の作成するステップは、一実施形態では、論理パーティションが、自身に割り当てられた物理Ｉ／Ｏデバイスを構成することのできるネイティブ・デバイス・ドライバを自身のオペレーティング・システムが持っていないと判断することと、論理パーティションが、当該物理Ｉ／Ｏデバイスをサポートする非ネイティブ・ハードウェア・デバイス・ドライバを実行することのできるパーティション・アジャンクト・インスタンスが利用可能であると確認することと、に呼応している。こうした場合において、ハイパーバイザは、上述したように、動的な再構成機構を用いて論理パーティションから物理入出力デバイスをデタッチし、作成されているパーティション・アジャンクトに対してそのデバイスを再割り当てする。引き換えに、ハイパーバイザは仮想デバイスを作成し、それを論理パーティションに割り当てる。このようにして、最初に、構成不可能な物理入出力デバイスを所有していた論理パーティションが、最終的には、構成可能な仮想Ｉ／Ｏデバイスを備え、この仮想Ｉ／Ｏデバイスによって、パーティション・アジャンクトを介し物理Ｉ／Ｏデバイスにアクセスすることができるようになる。検討中のオペレーティング・システムは、上述のような仮想Ｉ／Ｏデバイスをサポートすることが想定されている。というのは、上述のような機構は、論理パーティションに対し物理アダプタが全く割り当てられていないこともあり得るマルチ論理パーティション・システムにおいてオペレーティング・システムが機能するために必要とされるからである。
【００８２】
別の態様では、例えば、自己仮想化入出力アダプタなどの自己仮想化入出力デバイスへのアクセスを複数の論理パーティションに提供するように、複数のパーティション・アジャンクトが使用される。仮想化されたシステムでは、単一の入出力アダプタが存在しそのアダプタがデータ処理システムの複数の論理パーティションにサービスを提供する場合、単一の論理パーティションがデバイスを多重化できるようにする（図２５に示す仮想入出力サーバのアプローチなど）か、あるいは、入出力デバイスの入出力仮想化（ＩＯＶ：ｉｎｐｕｔ／ｏｕｔｐｕｔ  ｖｉｒｔｕａｌｉｚａｔｉｏｎ）機能があればこれを使用して、その各々がそれぞれのクライアント論理パーティションにとっての入出力アダプタのように見える複数の仮想機能（ＶＦ：ｖｉｒｔｕａｌ  ｆｕｎｃｔｉｏｎ）をインスタンス化する（図２６に示すアプローチなど）かの、いずれかである。
【００８３】
まず図２５を参照すると、複数の論理パーティション２５１０Ａ、２５１０Ｂ・・・２５１０ｎと、複数の論理パーティションに対し入出力サービスを提供する仮想入出力サーバ（ＶＩＯＳ）２５２０とを含むデータ処理システム２５００が示されている。従来型の、非自己仮想化入出力デバイス２５４０へは、ハイパーバイザ２５３０を通じて１つ以上の入出力パスを介してアクセスする。本例では、論理パーティションは各々がクライアント仮想アダプタ・デバイス・ドライバ（すなわち、クライアント仮想入出力）２５１５Ａ、２５１５Ｂ・・・２５１５ｎを備えており、これらが、ＶＩＯＳ  ２５２０内のサーバ仮想アダプタ・デバイス・ドライバ（すなわち、サーバ仮想入出力）２５２２とインターフェース接続している。一実施形態では、クライアント仮想入出力とサーバ仮想入出力とのインターフェース接続が、ハイパーバイザ２５３０を介して行われる。ＶＩＯＳ  ２５２０はさらに、非自己仮想化入出力デバイス２５４０に対する入出力通信を容易にする物理アダプタ・デバイス・ドライバ・スタック２５２５を含む。本例では、非自己仮想化入出力デバイスは、一度に１つの論理パーティションと通信するように設計されており、図２６に示す自己仮想化入出力デバイスの場合のように自身を複数の機能に仮想化して複数の論理パーティションと通信することはできない。
【００８４】
図２６を参照すると、入出力仮想化と、自己仮想化入出力デバイスまたはアダプタ２６４０とを使用しているデータ処理システム２６００の一実施形態が示されている。データ処理システム２６００は、複数の論理パーティション２６１０Ａ、２６１０Ｂ・・・２６１０ｎのほか、仮想入出力サーバ（ＶＩＯＳ）２６２０として指定されている論理パーティションを含む。各論理パーティション２６１０Ａ、２６１０Ｂ・・・２６１０ｎは、ハイパーバイザ２６３０をはさんで、自己仮想化入出力デバイス２６４０内のそれぞれの仮想機能２６５１、２６５２、２６５３と通信する。この通信は、各論理パーティションにあるそれぞれのネイティブ仮想機能（ＶＦ）デバイス・ドライバ２６１５Ａ、２６１５Ｂ・・・２６１５ｎを介して行われる。図に示すように、ＶＩＯＳ  ２６２０は、自己仮想化入出力デバイス２６４０内の物理機能２６５０とインターフェース接続するネイティブ物理機能（ＰＦ：ｐｈｙｓｉｃａｌ  ｆｕｎｃｔｉｏｎ）デバイス・ドライバ２６２５を含む。
【００８５】
別の選択可能な方法として、ＶＩＯＳ  ２６２０が削除されて、その物理機能機構がハイパーバイザ２６３０へ移されてもよい。自己仮想化入出力デバイス２６４０内の物理機能２６５０は、仮想機能２６５１、２６５２、２６５３を構成するのに必要な基本的機能を提供する。この物理機能は、機能のコア・セットを提供し、必要な仮想機能の有効ビットを定義する。それぞれの論理パーティション内の各ネイティブ仮想機能デバイス・ドライバは、それぞれの論理パーティションのオペレーティング・システムにとってネイティブである。例えば、ＬＰＡＲ  Ａ  ２６１０Ａが、ネイティブＬｉｎｕｘ仮想機能デバイス・ドライバを必要とするＬｉｎｕｘオペレーティング・システムを含む場合があり、ＬＰＡＲ  Ｂ  ２６１０Ｂが、ネイティブＡＩＸ仮想機能デバイス・ドライバ２６１５Ｂを使用するＡＩＸオペレーティング・システムを含む場合がある。
【００８６】
図２５および２６のデータ処理システム実装を比較すると、図２５の実施形態ではＶＩＯＳ  ２５２０が入出力多重化機能を担うのに対し、図２６のデータ処理システムの実施形態では、自己仮想化入出力デバイス２６４０が入出力多重化機能を担うことが分かる。この後者のアプローチでは、自己仮想化入出力デバイスが仮想機能を使用し、これらを同一の通信媒体上で駆動しており、この場合、Ｉ／Ｏデバイスにて複数の入力が受信されて、Ｉ／Ｏデバイスによって駆動される通信媒体上で多重化される。図２６のデータ処理システムのアプローチでは、図２５のＶＩＯＳアプローチ（同時発生するＩ／Ｏ要求および応答をソフトウェアにて、すなわちＶＩＯＳオペレーティング・システムのＩ／Ｏスタックにて、処理しなければならない）に伴うロックおよびその他の同期化形式が、有利に回避される。一方、図２６に示すアプローチは、提示される各々の仮想機能デバイス用のデバイス・ドライバ・サポートを備えた論理パーティションを必要とするという事実が弱点になる。言い換えれば、各々の論理パーティションにおいて、適切なネイティブ仮想機能デバイス・ドライバが必要となり、つまりはその仮想機能デバイス・ドライバは当該論理パーティションのオペレーティング・システムにとってネイティブということになるので、ひいては、論理パーティション内で使用されているオペレーティング・システムに応じて、データ処理システム全体を通じて複数の異なるネイティブ仮想機能デバイス・ドライバが必要になり得る。
【００８７】
図２６に示すデータ処理システムにて使用されているような自己仮想化入出力デバイスの一例として、例えば「Ｓｉｎｇｌｅ  Ｒｏｏｔ  Ｉ／Ｏ  Ｖｉｒｔｕａｌｉｚａｔｉｏｎ  ａｎｄ  Ｓｈａｒｉｎｇ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ」、Ｒｅｖｉｓｉｏｎ  １．０、ＰＣＩ−ＳＩＧ（２００７年９月１１日）に記載されている、単一ルート入出力仮想化ハードウェアがあり、上記文献はその内容全体を参照により本明細書に引用したものとする。
【００８８】
図２７は、さらなる仮想化アプローチを示しており、データ処理システム２７００には、複数の論理パーティション２７１０Ａ、２７１０Ｂ・・・２７１０ｎのほか、ＶＩＯＳ  ２７２０が含まれる。論理パーティションおよびＶＩＯＳは、ハイパーバイザ２７３０をはさんで自己仮想化入出力デバイス・ハードウェア２７４０と通信する。本例では、自己仮想化入出力デバイスは、標準的な周辺コンポーネント相互接続（ＰＣＩ：ｐｅｒｉｐｈｅｒａｌ  ｃｏｍｐｏｎｅｎｔ  ｉｎｔｅｒｃｏｎｎｅｃｔ）機能などの機能２７５０を含み、この機能は、ページ境界に合うようにセグメント化された共用可能なハードウェア・キューを有しており、そのため個々のキュー・ペア（ＱＰ：ｑｕｅｕｅ  ｐａｉｒ）が別々の論理パーティションに割り当てられるようになっている。キュー・ペアとは、大雑把な言い方をすれば、自己仮想化ハードウェアを共用する複数の論理パーティションのうち１つの論理パーティションに割り当てることのできる、自己仮想化入出力ハードウェアの一部に相当する。各論理パーティションは、ネイティブ・キュー・ペア・デバイス・ドライバ２７１５Ａ、２７１５Ｂ・・・２７１５ｎを介して、自己仮想化入出力デバイス２７４０のそれぞれのハードウェア・キュー・ペア２７５１、２７５２、２７５３と直接通信するように示されている。Ｉ／Ｏデバイス機能２７５０は、例えばＶＩＯＳ２７２０に配置される、ネイティブ機能デバイス・ドライバ２７２５と通信する。図２６のデータ処理システムの実施形態と同様に、論理パーティション内のネイティブ・デバイス・ドライバは、それぞれの論理パーティションのオペレーティング・システムにとってのネイティブ・デバイス・ドライバであり、使用されているオペレーティング・システムに応じて、様々な論理パーティションが様々なネイティブ・デバイス・ドライバを必要とし得る。
【００８９】
上述の図２５乃至２７のデータ処理システムの選択可能な各方法を拡張したものとして以下に記載するのは、マルチパーティション型データ処理システムにおいて自己仮想化入出力デバイス（またはアダプタ）のより効率的な仮想化を促進するパーティション・アジャンクトを使用することである。
【００９０】
上記の拡張によれば、各パーティション・アジャンクト・インスタンスが特定の論理パーティションと仮想機能（またはキュー・ペア）の組み合わせをサポートするように作成されるという形で、パーティション・アジャンクト・インスタンスが導入される。このアプローチを用いることで、各論理パーティションが、例えば図２５のＶＩＯＳ実装にて使用されているＶＩＯメカニズムなどの抽象的な仮想入出力メカニズムを用いて、対応する仮想機能またはキュー・ペアにアクセスする。クライアント・パーティションから見れば、この機能は、図２５に示されたデータ処理システムの機能と類似する（または同等の）ものである。しかしながら、論理パーティションと仮想機能（またはキュー・ペア）との連携の各々が、相互間の通信を容易にする固有のパーティション・アジャンクト・インスタンスを持っているため、図２５に記載されたデータ処理システムの不利点はなくなっている。各パーティション・アジャンクト・インスタンスは１つの論理パーティションおよび１つの仮想機能（またはキュー・ペア）のみに対処するので、その他の場合であればＩ／Ｏアダプタの多重化をサポートするのに必要とされるロックあるいは同期化のメカニズムを備える必要がない。というのも、本システムが、自己仮想化入出力に対応したデバイス自体における多重化機能に依拠しているためである。
【００９１】
このパーティション・アジャンクト実装の別の利点は、全てのパーティション・アジャンクト・インスタンスは、それらが同じデバイスに向けて検討されているために、コードおよび読み取り専用データを共用することができることである（この特徴については、図３０Ａ乃至３１Ｂに関連して以下に詳細に記載される）。これにより、本実装をサポートするのに必要なメモリ・フットプリントは大幅に削減され、パーティション・アジャンクト・インスタンスを追加するメモリ・フットプリントのコストは、単純に、その新しいパーティション・アジャンクト・インスタンス用の論理パーティションと仮想機能（またはキュー・ペア）の組み合わせについて動的状態情報を維持するのに付随するコストということになる。
【００９２】
さらに、パーティション・アジャンクト・インスタンスは、論理パーティションと仮想機能（またはキュー・ペア）の組み合わせを一度に１つだけサポートするように構成されているために、上述のネイティブ・デバイス・ドライバおよびＶＩＯＳの各選択肢いずれにおいても、従来型のＩ／Ｏスタックおよびドライバによって必要とされる同期化およびロックのメカニズムのうち多くを避けるようなやり方で容易に書くことができる。例えば、パーティション・アジャンクトは、ポーリング状態マシンとして書かれてもよく、そのランタイム環境の専用的な性質により、アクティブなプリエンプションをサポートする必要性を排除し、ひいてはロックを簡略化するかあるいはロックの必要性をなくす。
【００９３】
要約すると以下に記載される概念は、論理パーティションの各オペレーティング・システム向けに必要なデバイス・ドライバ開発を最小限に抑えるやり方で、入出力仮想化対応の入出力デバイスまたはアダプタから論理パーティションがＩ／Ｏサービスを得ることを可能にする。なぜならば、オペレーティング・システムは、仮想入出力（ＶＩＯ）サービス（例えば、デバイス・ドライバ・サービス）のみを見ていて、個別の物理入出力アダプタ・デバイスは見ないからである。これにより、基盤をなすＩ／Ｏハードウェアを多重化するように論理パーティションをインスタンス化する必要はなくなり、さらに、Ｉ／Ｏハードウェアの多重化は、ＶＩＯＳにおけるソフトウェアのロックではなく効率的なＶＩＯハードウェア機能を介して達成できるようになる。この最後の側面は、パーティション・アジャンクトの特有のプログラミング・モデルから生じる特性であり、個々のＩ／Ｏデバイスをサポートするのに用いられる個々のパーティション・アジャンクト実装がこうした特性を利用して効率的な実装をもたらすことを想定している。
【００９４】
図２８は、本発明の一態様による、全体として２８００と表示されたデータ処理システムの一実施形態を示す。データ処理システム２８００において、複数の論理パーティション２８１０Ａ、２８１０Ｂ・・・２８１０ｎおよびＶＩＯＳ２８２０がハイパーバイザ２８３０の上で動作し、ハイパーバイザによって提供される機能よりも高度な機能を提供する。ハイパーバイザ２８３０は、自己仮想化入出力デバイス（またはアダプタ）２８４０などの、基盤をなすシステム・ハードウェアの上で実行される。ＶＩＯＳ２８２０は、図示されるデータ処理システムの実施形態においては任意的なものである。一実施形態では、自己仮想化入出力デバイス２８４０は、入出力仮想化に対応したＩ／Ｏアダプタである。このアダプタは、第１物理機能２８５０から複数の仮想機能インスタンス２８５１、２８５２、２８５３をもたらすことができ、そのそれぞれが、通常のＩ／Ｏアダプタに関連する機能をもたらす。さらに本実施形態では、例として第２物理機能２８８０が図示されており、この第２物理物理機能からは第２仮想機能２８８１が提供される。
【００９５】
各仮想機能は、データ処理システムにおいて特定の論理パーティションにＩ／Ｏサービスを提供するように割り当てられる。検討している論理パーティションは、各々の論理パーティションと仮想機能の組み合わせ用にインスタンス化されたパーティション・アジャンクト・インスタンスを使用することで、各自の仮想機能と直接的にやり取りすることを避け、それによりハードウェアの抽象化を維持する。こうしたパーティション・アジャンクト２８７０Ａ、２８７１Ａ、２７８０Ｂ、２８７０ｎは、特定の論理パーティションと仮想機能の組み合わせに専用的であるというパーティション・アジャンクトの性質のために、仮想機能（ＶＦ）パーティション・アジャンクトと称される。基盤をなす同一のハードウェア・デバイス、すなわち物理機能２８５０あるいは物理機能２８８０に関連する全ての仮想機能に関して、インスタンス化されるパーティション・アジャンクト・インスタンスは同じものになる。言い換えれば、各パーティション・アジャンクト・インスタンス２８７０Ａ、２８７０Ｂ・・・２８７０ｎは、同じものであり、それに対しパーティション・アジャンクト・インスタンス２８７１Ａは、別の物理機能２８８０に関連する別の仮想機能２８８１とインターフェース接続するので、違うものであると考えられる。論理パーティションと仮想機能との間にパーティション・アジャンクトを差し挟むことによって、有利に、各論理パーティションにおける入出力をクライアント仮想入出力（ＶＩＯ）２８１５Ａ、２８１５Ａ’、２８１５Ｂ・・・２８１５ｎとして仮想化することが可能である。
【００９６】
具体的な例を挙げると、基盤をなす物理機能が、先に参照した「Ｓｉｎｇｌｅ  Ｒｏｏｔ  Ｉ／Ｏ  Ｖｉｒｔｕａｌｉｚａｔｉｏｎ  ａｎｄ  Ｓｈａｒｉｎｇ  Ｓｐｅｃｉｆｉｃａｉｔｏｎ」にて定義される単一ルートＩ／Ｏ仮想化機能（ＳＲ−ＩＯＶ：ｓｉｎｇｌｅ  ｒｏｏｔ  Ｉ／Ｏ  ｖｉｒｔｕａｌｉｚａｔｉｏｎ  ｃａｐａｂｉｌｉｔｙ）をサポートする周辺コンポーネント相互接続（ＰＣＩ）機能を含む場合もある。物理機能は、故に、ＳＲ−ＩＯＶの機能構造を含むと考えられる。仮想機能は物理機能に関連し、その物理機能、ならびに同じ物理機能に関連する他の仮想機能と、例えばリンクなどといった１つ以上の物理リソースを共用する。一実施形態では、「機能」とは、１つの機能番号に関連する構成空間のアドレス可能なエンティティを意味する。機能は、多機能デバイスの一機能を指す場合もあり、あるいは単一機能デバイスの唯一の機能を指す場合もある。
【００９７】
物理機能パーティション・アジャンクト２８６０は、仮想機能パーティション・アジャンクトのセットアップを容易にするように、データ処理システムの初期構成の間に用いられる。なお、図２８に示すデータ処理システムの実施形態では、複数の物理機能ならびに複数の異なる仮想機能インスタンスが示されており、そのうちの２つは、１つの論理パーティションによって別々の仮想機能パーティション・アジャンクト２８７０Ａ、２８７１Ａを介してアクセスされていることに留意されたい。自己仮想化入出力デバイス内では、１つ、２つ、あるいは２つより多い物理機能が使用されている場合があり、各論理パーティションは、これらの物理機能のうちの１つ以上に、デバイスの中の関連仮想機能を介してアクセスすることができる。さらに、ＬＰＡＲ  Ａ  ２８１０Ａ内のクライアント仮想化インターフェースまたはドライバ（クライアントＶＩＯ  ２８１５Ａ、クライアントＶＩＯ  ２８１５Ａ’）は、特定の論理パーティションと仮想機能の組み合わせ用に実装されるパーティション・アジャンクト・インスタンスに応じて、同じタイプあるいは別々のタイプの仮想インターフェースまたはドライバとすることができることに留意されたい。
【００９８】
一実施形態では、仮想機能パーティション・アジャンクト２８７０Ａ、２８７１Ａ、２８７０Ｂ、２８７０ｎは、関連する論理パーティション内のそれぞれのクライアントＶＩＯとインターフェース接続するサーバ仮想アダプタ・デバイス・ドライバを実現するほか、自己仮想化入出力デバイス・アダプタ上の仮想機能用のデバイス・ドライバを実現する。各パーティション・アジャンクトは、例えば図２５に関連して上述したようなＶＩＯＳ実装におけるサーバ仮想アダプタ・デバイス・ドライバと同じように、アダプタ上のそれぞれの仮想機能を駆動する。パーティション・アジャンクトの作成は、上述のように、それぞれの論理パーティションによって起動されてもよいし、あるいはデータ処理システム内のハイパーバイザによって起動されてもよい。さらに、それぞれのパーティション・アジャンクトの利点および特質は、上述したものと同様であると考えられる。例を挙げると、各パーティション・アジャンクトは、関連する論理パーティションのネイティブ・オペレーティング・システムから、非ネイティブ・オペレーティング・システムのデバイス・ドライバを実行することもできる。
【００９９】
当業者には上記の考察から分かるように、本明細書に記載のプログラミング・モデルは、パーティション・アジャンクトのコード開発者が、標準的なオペレーティング・システムカーネルコードのロックおよび同期プリミティブを簡略化あるいは回避することができるようなやり方でコードを書くことを可能にする。パーティション・アジャンクトは、単一スレッドのポーリング状態マシンとして効率的に書かれてもよい。さらに、個々のパーティション・アジャンクト・インスタンスに見える同時並行性の程度を制御することによって、パーティション・アジャンクト・コードが、ノンプリエンプティブな単一スレッド型のランタイム環境を確実に前提にし得るようにすることができる。入出力処理作業に関しては、特定の論理パーティションと仮想機能の組み合わせに対してサービスを提供するのに、複数スレッドを同時に実行する必要性はほとんどない。こうした特性が実現可能であるのは、各パーティション・アジャンクト・インスタンスが、隔離／保護された環境（つまり、上述のように保護されている別個のディスパッチ可能状態）で単一の論理パーティションと仮想機能の組み合わせにサービスを提供するからであり、さらに、ＶＩＯＳ実装とは違って、パーティション・アジャンクト・インスタンスの導入が、論理パーティションと仮想機能の組み合わせごとに１つのアジャンクト・インスタンスが認められるほど低いオーバーヘッドで可能であるためである。
【０１００】
図２９は、基盤をなすシステム・ハードウェアの上で実行されるハイパーバイザ２９３０の上で動作している、複数の論理パーティション２９１０Ａ、２９１０Ｂ・・・２９１０ｎに加え、任意にＶＩＯＳ２９２０を備えた、データ処理システム２９００の別の実装を示す。基盤をなすシステム・ハードウェアは、自己仮想化入出力デバイス２９４０を含むように示されている。自己仮想化入出力デバイス２９４０は、基本的機能２９５０と、複数のキュー・ペア２９５１、２９５２、２９５３に仮想化可能なキュー構造とを含むように示されている。各キュー・ペアは、機能に関連しており、その機能、ならびに同じ機能に関連する他のキュー・ペアと、例えばリンクなどといった１つ以上の物理リソースを共用する。複数のパーティション・アジャンクト２９７０Ａ、２９７０Ｂ、２９７０ｎが、例えば複数の論理パーティション２９１０Ａ、２９１０Ｂ・・・２９１０ｎと、自己仮想化入出力デバイス２９４０内のそれぞれのキュー・ペア２９５１、２９５２、２９５３とをインターフェース接続するように用いられる。機能パーティション・アジャンクト２９６０は、パーティション・アジャンクトの初期セットアップを容易にするように、データ処理システムの初期構成の間に用いられる。
【０１０１】
パーティション・アジャンクト２９７０Ａ、２９７０Ｂ・・・２９７０ｎを、各論理パーティションとキュー・ペアの組み合わせの間にインターフェースとして設けることによって、仮想入出力インターフェースまたはドライバ（クライアントＶＩＯ  ２９１５Ａ、２９１５Ｂ・・・２９１５ｎ）をそれぞれの論理パーティション内で使用できる。この場合、論理パーティションは、使用されているハードウェアの実際のタイプについては意識しない。パーティション・アジャンクトには、例えば、関連する論理パーティションのそれぞれのクライアントＶＩＯにインターフェース接続されるサーバ仮想デバイス・ドライバに加え、自己仮想化入出力デバイス２９４０内のそれぞれのキュー・ペア２９５１、２９５２、２９５３とインターフェース接続する適切な物理アダプタ・デバイス・ドライバが含まれるとよい。
【０１０２】
図３０Ａは、図２６に関連して上述したようなデータ処理システム３０００の別の実施形態を示す。本実施形態では、データ処理システムの複数の論理パーティション３０１０がハイパーバイザ３０２０の上で動作し、ハイパーバイザは、自己仮想化入出力デバイス３０３０などの、基盤をなすハードウェアの上で動作する。自己仮想化入出力デバイス３０３０は、複数の仮想機能インスタンス３０３２、３０３３に仮想化される物理機能３０３１を含むように示されている。各論理パーティションは、自己仮想化入出力デバイス３０３０内の物理機能３０３１または仮想機能３０３２、３０３３のうちの１つと通信するネイティブ仮想機能デバイス・ドライバ３０１５をそれぞれ含む。
【０１０３】
図３０Ｂに示すように、データ処理システムの論理パーティションのネイティブ仮想機能デバイス・ドライバは、各自のコード、読み取り専用データ、および読み書き状態データ用に別個の物理メモリ・ページを必要とする。本例では、各論理パーティションのハードウェア・ページ・テーブルのこうしたエントリ３０５０、３０５１、３０５２が、データ処理システムの物理メモリ・ページ３０４０内にある、割り当てられた論理パーティション・メモリ・ページ３０６０、３０６１、３０６２へマッピングされる。従って、この３論理パーティションの例では、各々のネイティブ仮想機能デバイス・ドライバが３つずつ物理メモリ・ページを必要とし、３つの論理パーティション用として合計９ページが必要とされる。各々の論理パーティションは別々のネイティブ・オペレーティング・システムを使用していると考えられるので、必然的に、コード、読み取り専用データ、および読み書きデータは、別々に維持されている。例えば、ＬＰＡＲ１がＡＩＸオペレーティング・システムを使用し、ＬＰＡＲ２がＬｉｎｕｘオペレーティング・システムを使用している可能性があり、その場合には、読み書き状態データに加え、ネイティブ・デバイス・ドライバ・コードおよび読み取り専用データも相違すると考えられる。
【０１０４】
これに対し、図３１Ａおよび３１Ｂは、ハイパーバイザ３１３０および自己仮想化入出力デバイス３１４０の上で動作している複数の論理パーティション３１１０を含むデータ処理システム３１００の一実施形態を示し、複数の論理パーティションの各々は、関連する仮想機能パーティション・アジャンクト３１２０を介してそれぞれの仮想機能インスタンス３１４１、３１４２、３１４３にインターフェース接続されている。各仮想機能パーティション・アジャンクト３１２０は、自身の関連する論理パーティション３１１０内にあるそれぞれの仮想化されたインターフェース、すなわちクライアントＶＩＯ  ３１１５と通信する。
【０１０５】
本実装では、複数のパーティション・アジャンクト・インスタンス３１２０は、それらが自己仮想化入出力デバイス内の同じタイプの仮想機能インスタンスとインターフェース接続することから、同一コードを実行していることが想定される。従って、３つのパーティション・アジャンクトのメモリを合体することが可能であり、その結果として、図３１Ｂに示すように、物理メモリ・ページ３１５０において５つの物理メモリ・ページのみが使用されることになる。具体的には、３つのパーティション・アジャンクト・インスタンスに関する論理パーティションのページ・テーブル・エントリ３１６０、３１６１、３１６２は、共通アジャンクト・コードおよび共通読み取り専用データを含み、これらは図に示すように、物理メモリ・ページ３１５０内にある２つの共通位置にマッピングされる。
【０１０６】
本例では、上記のコードおよび読み取り専用データは、データ処理システムのＬＰＡＲ１に割り当てられた物理メモリ・ページ３１７０の中に存在する。共通コードおよび共通読み取り専用データは、代わりに、ＬＰＡＲ２に割り当てられたメモリ・ページ、あるいはＬＰＡＲ３に割り当てられたページの中に置かれてもよい。さらなる変形例として、パーティション・アジャンクトがハイパーバイザによって所有される（言い換えれば、起動される）場合には、コードおよび読み取り専用データ（に加え、当該パーティション・アジャンクト用の読み書きデータ）は、物理メモリ・ページ３１５０の、割り当てられたハイパーバイザ・ページの中に存在することになると考えられる。各論理パーティション・ハードウェア・ページ・テーブルは、パーティション・アジャンクトのコードおよび読み取り専用データに関しては、物理メモリの中の同じページを指し示すように表示されている。図３１Ｂに示されるように、個々のパーティション・アジャンクト・インスタンスに固有の読み書き状態データに必要とされるページ・テーブル・エントリだけが、別々になっている。図に示す例では、ＬＰＡＲ１が、コード、読み取り専用データ、および読み書き状態データ用に３ページを必要とするのに対し、ＬＰＡＲ２およびＬＰＡＲ３は、各自の読み書き状態データ用としてそれぞれ１つずつ物理メモリ・ページを必要とするのみであり、コードおよび読み取り専用データのページについては、有利に、ＬＰＡＲ１の仮想パーティション・アジャンクトと共用している。
【０１０７】
本例では、各パーティション・アジャンクト・インスタンスは、各自の特定の論理パーティションと仮想機能のペアにサービスを提供するべく維持されるアクティブ状態においてのみ相違すると想定されている。従って、ハイパーバイザが、共通のコードおよび読み取り専用データのメモリ領域を複製しないことによって、メモリの節約がもたらされる。ハイパーバイザはこのことをいくつかのやり方で達成することができ、例えば、２つのパーティション・アジャンクト・インスタンスが同じであることを明確に認識し、故に最大限の共用が確実になるようにそれらのメモリ・マッピングをセット・アップすることによって、あるいは、上記の共用を含めるように透過的なメモリの合体を用いることなどによって、達成されるとよい。
【０１０８】
本発明の１つ以上の態様は、例えばコンピュータ使用可能媒体などを有している製造品（例えば、１つ以上のコンピュータ・プログラム製品など）に含めることができる。媒体は内部に、例えば、コンピュータ可読プログラム・コード手段または論理（例えば、命令、コード、コマンドなど）を有して、本発明の諸機能を提供し促進する。上記の製造品は、コンピュータ・システムの一部に含めることもできるし、あるいは別途販売することもできる。
【０１０９】
本発明の１つ以上の態様を組み込んだ製造品またはコンピュータ・プログラム製品の一例について、図３２に関連して記載する。コンピュータ・プログラム製品３２００は、例えば、コンピュータ可読プログラム・コード手段または論理３２２０を記憶して本発明の１つ以上の態様を提供し促進する、１つ以上のコンピュータ使用可能媒体３２１０を含む。本媒体は、電子、磁気、光、電磁気、赤外線または半導体システム（または装置もしくはデバイス）あるいは伝搬媒体とすることができる。コンピュータ可読媒体の例としては、半導体すなわちソリッド・ステートのメモリ、磁気テープ、着脱可能なコンピュータ・ディスケット、ランダム・アクセス・メモリ（ＲＡＭ：ｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙ）、読み取り専用メモリ（ＲＯＭ：ｒｅａｄ−ｏｎｌｙ  ｍｅｍｏｒｙ）、固定型磁気ディスクおよび光ディスクが挙げられる。光ディスクの例としては、コンパクト・ディスク−読み取り専用メモリ（ＣＤ−ＲＯＭ：ｃｏｍｐａｃｔ  ｄｉｓｋ−ｒｅａｄ  ｏｎｌｙ  ｍｅｍｏｒｙ）、コンパクト・ディスク−読み書き（ＣＤ−Ｒ／Ｗ：ｃｏｍｐａｃｔ  ｄｉｓｋ−ｒｅａｄ／ｗｒｉｔｅ）およびＤＶＤが挙げられる。
【０１１０】
１つ以上のコンピュータ可読プログラム・コード手段または論理によって定義される、１つ以上の相関モジュールの一連のプログラム命令または論理アセンブリは、本発明の１つ以上の態様の動作を方向付ける。
【０１１１】
多様な実施形態を上述したが、これらは単なる例に過ぎない。
【０１１２】
さらに、環境には、エミュレータ（例えば、ソフトウェアまたは他のエミュレーション・メカニズム）が含まれてもよく、その場合、特定のアーキテクチャあるいはそのサブセットがエミュレートされる。そのような環境においては、たとえ、エミュレータを実行しているコンピュータが、エミュレートされている諸機能とは異なるアーキテクチャを備えることがあっても、エミュレータの１つ以上のエミュレーション機能が本発明の１つ以上の態様を実現することができる。一例として、エミュレーション・モードでは、エミュレートされている特定の命令または演算がデコードされると、その単独の命令あるいは演算を実施するように、適切なエミュレーション機能が構築される。
【０１１３】
エミュレーション環境では、ホスト・コンピュータには例えば以下が含まれる：命令およびデータを記憶するメモリ；メモリから命令をフェッチし、さらに任意に、フェッチされた命令のローカル・バッファリングを提供する命令フェッチ・ユニット；命令フェッチ・ユニットを受信し、フェッチされている命令のタイプを判断する命令デコード・ユニット；および、命令を実行する命令実行ユニット。実行には、メモリのレジスタへデータをロードすること；レジスタからメモリへデータを再記憶すること；あるいは、デコード・ユニットによって決められる何らかのタイプの算術的または論理的演算を実施すること、が含まれるとよい。一例では、各ユニットはソフトウェアにより実現される。例えば、ユニットによって実施される演算が、エミュレータ・ソフトウェア内の１つ以上のサブルーチンとして実現される。
【０１１４】
さらに、プログラム・コードの記憶または実行あるいはその両方に適したデータ処理システムが使用可能であり、このデータ処理システムには、システム・バスを通じて直接または間接にメモリ要素に連結された少なくとも１つのプロセッサが含まれる。メモリ要素は、例えば、プログラム・コードの実際の実行中に使用されるローカル・メモリ、大容量ストレージ、ならびに、実行中にコードを大容量ストレージから取り出さねばならない回数を減らすために少なくとも一部のプログラム・コードの一時的なストレージを提供するキャッシュ・メモリを含む。
【０１１５】
入出力すなわちＩ／Ｏデバイス（キーボード、ディスプレイ、ポインティング・デバイス、ＤＡＳＤ、テープ、ＣＤ、ＤＶＤ、サム・ドライブおよびその他のメモリ媒体などを含むが、これらに限定されない）は、直接に、あるいは介在するＩ／Ｏコントローラを通じて、システムに連結可能である。ネットワーク・アダプタも、同様にシステムに連結されて、このデータ処理システムが、介在するプライベート・ネットワークまたはパブリック・ネットワークを通じて他のデータ処理システムまたはリモートのプリンタもしくはストレージ・デバイスに連結できるようにする。モデム、ケーブル・モデム、Ｅｔｈｅｒｎｅｔカードは、利用可能なタイプのネットワーク・アダプタのほんの一部である。
【０１１６】
本発明の１つ以上の態様の機能は、ソフトウェア、ファームウェア、ハードウェア、あるいはこれらの何らかの組み合わせにより実現することができる。本発明の機能を実行するように、そのマシンによって実行可能な少なくとも１つの命令のプログラムを具現化しているマシンによって可読の、少なくとも１つのプログラム・ストレージ・デバイスを、提供することができる。
【０１１７】
本明細書にて図示されているフローチャートは単なる例に過ぎない。これらの図面に記載された図またはステップ（あるいは動作）には、本発明の精神から逸脱することなく、多数の変形例があり得る。例えば、ステップは、異なる順序で実施されてもよいし、あるいはステップが追加、削除、または変更されてもよい。こうした変形例の全てが、請求される本発明の一部であるとみなされる。
【０１１８】
本明細書にて実施形態を詳しく図に示し記載してきたが、当業者には当然のことながら、本発明の精神から逸脱することなく多様な変更、追加、置換などを施すことができ、故にこれらは以下の請求項にて定義される本発明の範囲内にあるものとみなされる。
【図１】
2011519089.tif 000003
【図２】
2011519089.tif 000004
【図３】
2011519089.tif 000005
【図４】
2011519089.tif 000006
【図５】
2011519089.tif 000007
【図６】
2011519089.tif 000008
【図７】
2011519089.tif 000009
【図８】
2011519089.tif 000010
【図９】
2011519089.tif 000011
【図１０】
2011519089.tif 000012
【図１１】
2011519089.tif 000013
【図１２】
2011519089.tif 000014
【図１３】
2011519089.tif 000015
【図１４】
2011519089.tif 000016
【図１５】
2011519089.tif 000017
【図１６】
2011519089.tif 000018
【図１７】
2011519089.tif 000019
【図１８】
2011519089.tif 000020
【図１９】
2011519089.tif 000021
【図２０】
2011519089.tif 000022
【図２１】
2011519089.tif 000023
【図２２】
2011519089.tif 000024
【図２３】
2011519089.tif 000025
【図２４】
2011519089.tif 000026
【図２５】
2011519089.tif 000027
【図２６】
2011519089.tif 000028
【図２７】
2011519089.tif 000029
【図２８】
2011519089.tif 000030
【図２９】
2011519089.tif 000031
【図３０】
2011519089.tif 000032
【図３１】
2011519089.tif 000033
【図３２】
2011519089.tif 000034
【国際調査報告】
2011519089.tif 000035
2011519089.tif 000036
2011519089.tif 000037