(57)【要約】【課題】  休止状態のコンピュータ・ハードウェア・リソースのサブセットを有効にするための方法、システム、及びコンピュータ・プログラム製品を提供する。【解決手段】  ゲスト構成の複数のゲスト・プロセッサ (ゲストＣＰＵ)にパーティション化されたホスト・プロセッサ(ホストＣＰＵ)を含む論理パーティション化されたホスト・コンピュータ・システムにおいて、ｐｅｒｆｏｒｍ  ｔｏｐｏｌｏｇｙ  ｆｕｎｃｔｉｏｎ命令が、ゲスト構成のトポロジ変化を特定するゲスト・プロセッサによって実行される。トポロジ変化は、好ましくはゲストＣＰＵの極性を変化させ、ホストＣＰＵリソースの量に関連する極性がゲストＣＰＵに与えられる。【選択図】  図１３
2011509478.tif 000002
【特許請求の範囲】
【請求項１】
ホスト・プロセッサ（ホストＣＰＵ）を含む論理パーティション化されたホスト・コンピュータ・システムにおいて、ゲスト構成の複数のゲスト・プロセッサ(ゲストＣＰＵ)のトポロジの構成変化のための方法であって、
ゲスト構成のゲスト・プロセッサが、コンピュータ・アーキテクチャのために定められたｐｅｒｆｏｒｍ  ｔｏｐｏｌｏｇｙ  ｆｕｎｃｔｉｏｎ命令をフェッチするステップであって、前記ｐｅｒｆｏｒｍ  ｔｏｐｏｌｏｇｙ  ｆｕｎｃｔｉｏｎ命令は、実施される機能を特定するオペコード・フィールドを含む、当該ステップと、
前記ｐｅｒｆｏｒｍ  ｔｏｐｏｌｏｇｙ  ｆｕｎｃｔｉｏｎ命令の実施される機能を実行するステップであって、
前記ゲスト構成における前記ゲスト・プロセッサの前記トポロジの前記構成の特定の変化を要求することと、
前記要求された特定の変化に応答して、前記特定の変化に従って前記ゲスト構成の前記ゲスト・プロセッサの前記トポロジを変化させることと、
を含む当該ステップと、
を含む方法。
【請求項２】
前記ｐｅｒｆｏｒｍ  ｔｏｐｏｌｏｇｙ  ｆｕｎｃｔｉｏｎ命令は、レジスタ・フィールドをさらに含み、
前記ｐｅｒｆｏｒｍ  ｔｏｐｏｌｏｇｙ  ｆｕｎｃｔｉｏｎ命令を実行する前記ステップは、
前記レジスタ・フィールドによって特定されるレジスタの機能コード・フィールドから、水平極性指示子、垂直極性指示子又はトポロジ変化チェック指示子のうちのいずれか１つから成る機能コード・フィールド値を取得することと、
水平極性を特定する命令に応答して、コンピュータ構成の前記ゲスト・プロセッサの水平極性を開始し、それにより結果としての更新されたトポロジを作ることと、
垂直極性を特定する命令に応答して、コンピュータ構成の前記ゲスト・プロセッサの垂直極性を開始し、それにより結果としての更新されたトポロジを作ることと、
結果コード値を前記レジスタの結果フィールドに設定することと、
をさらに含む、請求項１に記載の方法。
【請求項３】
開始された極性要求が実行の完了とは非同期であり、トポロジ変化のチェックを特定する前記機能コード・フィールド値に応答して、前記トポロジ変化の完了状態をチェックするステップをさらに含む、請求項２に記載の方法。
【請求項４】
前記実行は、
トポロジ変化報告が保留中ではないことに応答して、トポロジ変化報告が保留中ではないことを示す条件コードを設定するステップと、
トポロジ変化報告が保留中であることに応答して、トポロジ変化報告が保留中であることを示す条件コードを設定するステップと、
をさらに含む、請求項３に記載の方法。
【請求項５】
前記水平極性は、実質的に均等なホスト・プロセッサ・リソースを各々のゲスト・プロセッサ・リソースに与えることを含み、前記垂直極性は、前記ゲスト・プロセッサの少なくとも１つのゲスト・プロセッサに、前記ゲスト・プロセッサの少なくとも別のゲスト・プロセッサより実質的に多くのホスト・プロセッサ・リソースを与えることを含む、請求項２に記載の方法。
【請求項６】
前記結果コード値は、
前記構成が実行前に前記機能コードによって特定される極性を有していることに応答して、前記構成が前記機能コードに従ってすでに極性を有することを示す結果コード値と、
前記構成が実行前に未完成の極性を処理していることに応答して、トポロジ変化がすでに処理中であることを示す結果コード値と、
から成る理由コードを特定する、請求項２に記載の方法。
【請求項７】
前記実行は、
トポロジ変化が進行中であることに応答して、トポロジ変化が開始されたことを示す条件コードを設定するステップと、
前記要求が拒絶されたことに応答して、前記要求が拒絶されたことを示す条件コードを設定するステップと、
を含む、請求項２に記載の方法。
【請求項８】
コンピュータ・アーキテクチャのために定められた前記ｐｅｒｆｏｒｍ  ｔｏｐｏｌｏｇｙ  ｆｕｎｃｔｉｏｎ命令は、代替コンピュータ・アーキテクチャの中央処理ユニットによってフェッチ及び実行され、
前記ｐｅｒｆｏｒｍ  ｔｏｐｏｌｏｇｙ  ｆｕｎｃｔｉｏｎ命令の動作をエミュレートする所定のソフトウエア・ルーチンを識別するために、前記ｐｅｒｆｏｒｍ  ｔｏｐｏｌｏｇｙ  ｆｕｎｃｔｉｏｎ命令を翻訳するステップをさらに含み、
前記ｐｅｒｆｏｒｍ  ｔｏｐｏｌｏｇｙ  ｆｕｎｃｔｉｏｎ命令を実行する前記ステップは、前記ｐｅｒｆｏｒｍ  ｔｏｐｏｌｏｇｙ  ｆｕｎｃｔｉｏｎ命令を実行するための方法のステップを実施する前記所定のソフトウエア・ルーチンを実行するステップを含む、
請求項２に記載の方法。
【請求項９】
ホスト・プロセッサ(ホストＣＰＵ)を含む論理パーティション化されたホスト・コンピュータ・システムにおいて、ゲスト構成の複数のゲスト・プロセッサ(ゲストＣＰＵ)のトポロジの構成変化のためのコンピュータ・プログラム製品であって、処理回路によって読み取り可能な、方法を実施するために前記処理回路によって実行される命令を格納する有形のストレージ媒体を含み、前記方法は、
ゲスト構成のゲスト・プロセッサが、コンピュータ・アーキテクチャのために定められたｐｅｒｆｏｒｍ  ｔｏｐｏｌｏｇｙ  ｆｕｎｃｔｉｏｎ命令をフェッチするステップであって、前記ｐｅｒｆｏｒｍ  ｔｏｐｏｌｏｇｙ  ｆｕｎｃｔｉｏｎ命令は、実施される機能を特定するオペコード・フィールドを含む、当該ステップと、
前記ｐｅｒｆｏｒｍ  ｔｏｐｏｌｏｇｙ  ｆｕｎｃｔｉｏｎ命令の実施される機能を実行するステップであって、
前記ゲスト構成における前記ゲスト・プロセッサの前記トポロジの前記構成の特定の変化を要求することと、
前記要求された特定の変化に応答して、前記特定の変化に従って前記ゲスト構成の前記ゲスト・プロセッサの前記トポロジの前記構成を変化させることと、
を含む当該ステップと、
を含む、コンピュータ・プログラム製品。
【請求項１０】
前記ｐｅｒｆｏｒｍ  ｔｏｐｏｌｏｇｙ  ｆｕｎｃｔｉｏｎ命令は、レジスタ・フィールドをさらに含み、
前記ｐｅｒｆｏｒｍ  ｔｏｐｏｌｏｇｙ  ｆｕｎｃｔｉｏｎ命令を実行する前記ステップは、
前記レジスタ・フィールドによって特定されるレジスタの機能コード・フィールドから、水平極性命令指示子、垂直極性命令指示子又はトポロジ変化チェック指示子のうちのいずれか１つから成る機能コード・フィールド値を取得することと、
水平極性を特定する命令に応答して、コンピュータ構成の前記ゲスト・プロセッサの水平極性を開始することと、
垂直極性を特定する命令に応答して、コンピュータ構成の前記ゲスト・プロセッサの垂直極性を開始することと、
結果コード値を前記レジスタの結果フィールドに設定することと、
をさらに含む、請求項９に記載のコンピュータ・プログラム製品。
【請求項１１】
開始された極性が実行の完了とは非同期であり、トポロジ変化のチェックを特定する前記機能コード・フィールド値に応答して、前記トポロジ変化の完了状態をチェックするステップをさらに含む、請求項１０に記載のコンピュータ・プログラム製品。
【請求項１２】
前記実行は、
トポロジ変化報告が保留中ではないことに応答して、トポロジ変化報告が保留中ではないことを示す条件コードを設定するステップと、
トポロジ変化報告が保留中であることに応答して、トポロジ変化報告が保留中であることを示す条件コードを設定するステップと、
をさらに含む、請求項１１に記載のコンピュータ・プログラム製品。
【請求項１３】
前記水平極性は、実質的に均等なホスト・プロセッサ・リソースを各々のゲスト・プロセッサ・リソースに与えることを含み、前記垂直極性は、前記ゲスト・プロセッサの少なくとも１つのゲスト・プロセッサに、前記ゲスト・プロセッサの少なくとも別のゲスト・プロセッサより実質的に多くのホスト・プロセッサ・リソースを与えることを含む、
請求項１０に記載のコンピュータ・プログラム製品。
【請求項１４】
前記結果コード値は、
前記構成が実行前に前記機能コードによって特定される極性を有していることに応答して、前記構成が前記機能コードに従ってすでに極性を有することを示す結果コード値と、
前記構成が実行前に未完成の極性を処理していることに応答して、トポロジ変化がすでに処理中であることを示す結果コード値と、
から成る理由コードを特定する、請求項１０に記載のコンピュータ・プログラム製品。
【請求項１５】
前記実行は、
トポロジ変化が進行中であることに応答して、トポロジ変化が開始されたことを示す条件コードを設定するステップと、
前記要求が拒絶されたことに応答して、前記要求が拒絶されたことを示す条件コードを設定するステップと、
を含む、請求項１０に記載のコンピュータ・プログラム製品。
【請求項１６】
コンピュータ・アーキテクチャのために定められた前記ｐｅｒｆｏｒｍ  ｔｏｐｏｌｏｇｙ  ｆｕｎｃｔｉｏｎ命令は、代替コンピュータ・アーキテクチャの中央処理ユニットによってフェッチ及び実行され、
前記方法は、前記ｐｅｒｆｏｒｍ  ｔｏｐｏｌｏｇｙ  ｆｕｎｃｔｉｏｎ命令の動作をエミュレートする所定のソフトウエア・ルーチンを識別するために、前記ｐｅｒｆｏｒｍ  ｔｏｐｏｌｏｇｙ  ｆｕｎｃｔｉｏｎ命令を翻訳するステップをさらに含み、
前記ｐｅｒｆｏｒｍ  ｔｏｐｏｌｏｇｙ  ｆｕｎｃｔｉｏｎ命令を実行する前記ステップは、前記ｐｅｒｆｏｒｍ  ｔｏｐｏｌｏｇｙ  ｆｕｎｃｔｉｏｎ命令を実行するための方法のステップを実施する前記所定のソフトウエア・ルーチンを実行するステップを含む、
請求項１０に記載のコンピュータ・プログラム製品。
【請求項１７】
メモリと、
前記メモリと通信するホスト・プロセッサ（ホストＣＰＵ）を含む論理パーティション化されたホスト・コンピュータ・システムと、
を含み、
前記コンピュータ・システムは、ゲスト構成の複数のゲスト・プロセッサ(ゲストＣＰＵ)のトポロジの構成変化のための方法を実施するように構成されており、
前記方法は、
ゲスト構成のゲスト・プロセッサが、コンピュータ・アーキテクチャのために定められたｐｅｒｆｏｒｍ  ｔｏｐｏｌｏｇｙ  ｆｕｎｃｔｉｏｎ命令をフェッチするステップであって、前記ｐｅｒｆｏｒｍ  ｔｏｐｏｌｏｇｙ  ｆｕｎｃｔｉｏｎ命令は、実施される機能を特定するオペコード・フィールドを含む、当該ステップと、
前記ｐｅｒｆｏｒｍ  ｔｏｐｏｌｏｇｙ  ｆｕｎｃｔｉｏｎ命令の実施される機能を実行するステップであって、
前記ゲスト構成における前記ゲスト・プロセッサの前記トポロジの前記構成の特定の変化を要求することと、
前記要求された特定の変化に応答して、前記特定の変化に従って前記ゲスト構成の前記ゲスト・プロセッサの前記トポロジの前記構成を変化させることと、
を含む当該ステップと、
を含む、コンピュータ・システム。
【請求項１８】
前記ｐｅｒｆｏｒｍ  ｔｏｐｏｌｏｇｙ  ｆｕｎｃｔｉｏｎ命令は、レジスタ・フィールドをさらに含み、
前記ｐｅｒｆｏｒｍ  ｔｏｐｏｌｏｇｙ  ｆｕｎｃｔｉｏｎ命令を実行する前記ステップは、
前記レジスタ・フィールドによって特定されるレジスタの機能コード・フィールドから、水平極性命令指示子、垂直極性命令指示子又はトポロジ変化チェック指示子のうちのいずれか１つから成る機能コード・フィールド値を取得することと、
水平極性を特定する命令に応答して、コンピュータ構成の前記ゲスト・プロセッサの水平極性を開始することと、
垂直極性を特定する命令に応答して、コンピュータ構成の前記ゲスト・プロセッサの垂直極性を開始することと、
結果コード値を前記レジスタの結果フィールドに設定することと、
をさらに含む、請求項１７に記載のコンピュータ・システム。
【請求項１９】
開始された極性が実行の完了とは非同期であり、トポロジ変化のチェックを特定する前記機能コード・フィールド値に応答して、前記トポロジ変化の完了状態をチェックするステップをさらに含む、請求項１８に記載のコンピュータ・システム。
【請求項２０】
前記実行は、
トポロジ変化報告が保留中ではないことに応答して、トポロジ変化報告が保留中ではないことを示す条件コードを設定するステップと、
トポロジ変化報告が保留中であることに応答して、トポロジ変化報告が保留中であることを示す条件コードを設定するステップと、
をさらに含む、請求項１９に記載のコンピュータ・システム。
【請求項２１】
前記水平極性は、実質的に均等なホスト・プロセッサ・リソースを各々のゲスト・プロセッサ・リソースに与えることを含み、前記垂直極性は、前記ゲスト・プロセッサの少なくとも１つのゲスト・プロセッサに、前記ゲスト・プロセッサの少なくとも別のゲスト・プロセッサより実質的に多くのホスト・プロセッサ・リソースを与えることを含む、請求項１８に記載のコンピュータ・システム。
【請求項２２】
前記結果コード値は、
前記構成が実行前に前記機能コードによって特定される極性を有していることに応答して、前記構成が前記機能コードに従ってすでに極性を有することを示す結果コード値と、
前記構成が実行前に未完成の極性を処理していることに応答して、トポロジ変化がすでに処理中であることを示す結果コード値と、
から成る理由コードを特定する、請求項１８に記載のコンピュータ・システム。.
【請求項２３】
前記実行は、
トポロジ変化が進行中であることに応答して、トポロジ変化が開始されたことを示す条件コードを設定するステップと、
前記要求が拒絶されたことに応答して、前記要求が拒絶されたことを示す条件コードを設定するステップと、
を含む、請求項１８に記載のコンピュータ・システム。
【請求項２４】
コンピュータ・アーキテクチャのために定められた前記ｐｅｒｆｏｒｍ  ｔｏｐｏｌｏｇｙ  ｆｕｎｃｔｉｏｎ命令は、代替コンピュータ・アーキテクチャの中央処理ユニットによってフェッチ及び実行され、
前記方法は、前記ｐｅｒｆｏｒｍ  ｔｏｐｏｌｏｇｙ  ｆｕｎｃｔｉｏｎ命令の動作をエミュレートする所定のソフトウエア・ルーチンを識別するために、前記ｐｅｒｆｏｒｍ  ｔｏｐｏｌｏｇｙ  ｆｕｎｃｔｉｏｎ命令を翻訳するステップをさらに含み、
前記ｐｅｒｆｏｒｍ  ｔｏｐｏｌｏｇｙ  ｆｕｎｃｔｉｏｎ命令を実行する前記ステップは、前記ｐｅｒｆｏｒｍ  ｔｏｐｏｌｏｇｙ  ｆｕｎｃｔｉｏｎ命令を実行するための方法のステップを実施する前記所定のソフトウエア・ルーチンを実行するステップを含む、
請求項１８に記載のコンピュータ・システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般に、マルチプロセッサ・システムの仮想化に関する。特に、本発明は、プログラムが自らの仮想環境のトポロジの要素を変化させることができるようにすることに関する。
【背景技術】
【０００２】
システムの制御機能には、システムをいくつかの論理パーティション（ＬＰＡＲ）に分割する能力がある。ＬＰＡＲは、オペレーティング・システムをサポートするように定められたシステム・ハードウェアのサブセットである。ＬＰＡＲは、リソース（プロセッサ、メモリ、及び入力／出力装置）を含み、独立したシステムとして作動する。メインフレーム・ハードウェア・システム内に多数の論理パーティションを存在させることができる。
【０００３】
Ｓ／３９０（登録商標）を含むＩＢＭのメインフレーム・コンピュータ・システムにおいては、長年、１５個のＬＰＡＲという制限が存在した。最近のマシンは、３０個（潜在的にはそれより多く）のＬＰＡＲを有する。そのようなマシンとして、ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ（登録商標）によるマシンが例示される。ＩＢＭ（登録商標）ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ（登録商標）は、非特許文献１に記載される。
【０００４】
メモリ・サイズ、Ｉ／Ｏの可用性、及び利用可能な処理能力の実際的な制限により、通常、ＬＰＡＲの数は、それらの最大数より少ない数に制限される。
【０００５】
パーティション化を提供するハードウェア及びファームウェアは、ＰＲ／ＳＭ（商標）（プロセッサ・リソース／システム・マネージャ）として知られている。ＬＰＡＲを作成し、稼働させるのに用いられるのは、ＰＲ／ＳＭ機能である。ＰＲ／ＳＭ（内蔵ファシリティ）とＬＰＡＲ（ＰＲ／ＳＭを用いた結果）との間のこの違いは無視されることが多く、ＬＰＡＲという用語は、ファシリティ及びその結果について併せて用いられる。
【０００６】
システム管理者は、メモリの一部を各々のＬＰＡＲに割り当て、メモリは、ＬＰＡＲ間で共有することができない。管理者は、プロセッサ（中央プロセッサ（ＣＰ）又は中央プロセッシング・ユニット（ＣＰＵ）としても知られる）を特定のＬＰＡＲに割り当てることが可能であり、又は、管理者は、システム・コントローラが内部負荷分散アルゴリズムを用いていずれかのプロセッサ又は全てのプロセッサを全てのＬＰＡＲにディスパッチできるようにすることが可能である。チャネル（ＣＨＰＩＤ）を、各々のチャネル上の装置の性質に応じて、特定のＬＰＡＲに割り当てるか、又は、多数のＬＰＡＲによって共有することができる。
【０００７】
シングル・プロセッサ（ＣＰプロセッサ）を持つシステムが、多数のＬＰＡＲを有することができる。ＰＲ／ＳＭは、オペレーティング・システム・ディスパッチャがプロセッサ時間の一部を各々のプロセス、スレッド、又はタスクに割り当てるのと同じように、プロセッサの一部を各々のＬＰＡＲに割り当てることができる内部ディスパッチャを有する。
【０００８】
パーティション化制御の仕様は、一部がＩＯＣＤＳ内に含まれ、一部がシステム・プロファイル内に含まれる。ＩＯＣＤＳ及びプロファイルはいずれも、例えばシステム内部の単なるノートブック型コンピュータであるサポート・エレメント（ＳＥ）内に存在する。ＳＥは、例えばメインフレーム・マイクロプロセッサのようなハードウェアを監視及び制御するために用られるデスクトップ型パーソナル・コンピュータである、１つ又は複数のハードウェア・マネジメント・コンソール（ＨＭＣ）に接続することができる。ＨＭＣは、ＳＥと比べて用いるのがより簡便であり、いくつかの異なるメインフレームを制御することができる。
【０００９】
ＨＭＣから（又は、異常時にはＳＥから）の作業によって、オペレータは、プロファイル及びＩＯＣＤＳを選択してロードすることにより用いるように、メインフレームを準備する。プロファイル及びＩＯＣＤＳによって、ＬＰＡＲが作成され、デバイス番号、ＬＰＡＲ割り当て、多数のパス情報などを持つチャネルが構成される。これはパワー・オン・リセット（ＰＯＲ）として知られる。異なるプロファイル及びＩＯＣＤＳをロードすることによって、オペレータは、ＬＰＡＲの数及び性質、並びにＩ／Ｏ構成の状態を完全に変えることができる。しかしながら、これを行うことは、通常、稼働中のオペレーティング・システム及びアプリケーションのいずれにも悪影響を及ぼし、したがって、事前の計画なしに行われることはほとんどない。
論理パーティション（ＬＰＡＲ）は、実際には、別個のメインフレームと等しい。
【００１０】
各々のＬＰＡＲは、自らのオペレーティング・システムを稼働させる。これは、いずれかのメインフレーム・オペレーティング・システムとすることができ、各々のＬＰＡＲにおいて、例えばｚ／ＯＳ（登録商標）を稼働させる必要はない。インストールの計画者は、いくつかのＬＰＡＲにわたってＩ／Ｏデバイスを共有するように選択することができるが、これは、ローカルな判断（local decision）である。
【００１１】
システム管理者は、ＬＰＡＲを排他的に使用するように１つ又は複数のシステム・プロセッサを割り当てることができる。代替的に、管理者は、全てのプロセッサがいくつか又は全てのＬＰＡＲ上で用いられるようにすることができる。ここで、システム制御機能（多くの場合、マイクロ・コード又はファームウェアとして知られる）は、選択されたＬＰＡＲの間でプロセッサを共有するためのディスパッチャを提供する。管理者は、各々のＬＰＡＲに存在する並列プロセッサの最大数を定めることができる。管理者は、異なるＬＰＡＲについて重みを与えることができ、例えば、ＬＰＡＲ１がＬＰＡＲ２の２倍のプロセッサ時間を受け取るように定めることができる。
【００１２】
各々のＬＰＡＲにおけるオペレーティング・システムは、別々に初期化され（例えば、ＩＰＬされ）、そのオペレーティング・システム自身のコピーや（必要な場合には）それ自身のオペレータ・コンソールなどを持つ。１つのＬＰＡＲにおけるシステムがクラッシュした場合でも、他のＬＰＡＲには影響は全くない。
【００１３】
３つのＬＰＡＲを持つメインフレーム・システムにおいては、例えば、ＬＰＡＲ１に製品ｚ／ＯＳを有し、ＬＰＡＲ２にｚ／ＯＳのテストバージョンを有し、ＬＰＡＲ３にＳ／３９０（登録商標）のためのＬｉｎｕｘ（登録商標）を有するようにすることができる。このシステム全体が８ＧＢのメモリを有する場合には、ＬＰＡＲ１に４ＧＢを割り当て、ＬＰＡＲ２に１ＧＢを割り当て、ＬＰＡＲ３に１ＧＢを割り当て、更に予備として２ＧＢを保持することができる。２つのｚ／ＯＳ  ＬＰＡＲのためのオペレーティング・システム・コンソールは、全く異なる場所に存在することができる。
【００１４】
最も実際的な目的のためには、例えば、ｚ／ＯＳを稼働（及び、自らのＩ／Ｏ構成の大部分を共有）する３つの別個のメインフレームと、それと同じことを実行する同じメインフレーム上の３つのＬＰＡＲとの間に違いはない。少数の例外を除いて、ｚ／ＯＳ、オペレータ、及びアプリケーションは、その違いを検出することができない。
【００１５】
わずかな違いとして、完全なメインフレーム・システム全体にわたる性能情報及び利用情報を取得し、性能を改善するためにリソース（プロセッサ及びチャネル）をＬＰＡＲ間で動的に移す、ｚ／ＯＳの能力（ＬＰＡＲが定められたとき、又は実行の際のいつでも）が挙げられる。
【００１６】
今日のＩＢＭ（登録商標）メインフレームは、中央プロセッサ複合体（ＣＰＣ）又は中央電子複合体（ＣＥＣ）とも呼ばれ、わずかに異なる目的に用いることができる幾つかの異なるタイプのｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ（登録商標）プロセッサを含むことができる。
【００１７】
これらの目的のうちのいくつかは、ソフトウェアのコスト管理に関するものであるが、その他の目的は、より基礎的なものである。ＣＰＣの全てのプロセッサは、用途が特徴付けられていない等価なプロセッサ・ユニット（ＰＵ）又はエンジンとして開始する。各々のプロセッサは、インストールの際に又はその後に、ＩＢＭによって特徴付けられる。潜在的な特徴を以下に示す。
【００１８】
−  プロセッサ（ＣＰ）
このプロセッサのタイプは、通常のオペレーティング・システム及びアプリケーション・ソフトウェアで利用可能である。
【００１９】
−  Ｓｙｓｔｅｍ  Ａｓｓｉｓｔａｎｃｅ  Ｐｒｏｃｅｓｓｏｒ（ＳＡＰ）
最新のメインフレームはいずれも、少なくとも一つのＳＡＰを有し、より大きなシステムは、いくつかのＳＡＰを有する場合がある。ＳＡＰは、内部コードを実行してＩ／Ｏサブシステムを提供する。ＳＡＰは、例えば、チャネル・パス識別子（ＣＨＰＩＤ）のデバイス番号及び実アドレス、制御ユニット・アドレス、並びにデバイス番号を変換する。ＳＡＰは、制御ユニットへの多数のパスを管理し、一時的エラーのためのエラー回復を行う。オペレーティング・システム及びアプリケーションは、ＳＡＰを検出することができず、ＳＡＰは、「通常の」メモリのいずれも使用しない。
【００２０】
−  Ｉｎｔｅｇｒａｔｅｄ  Ｆａｃｉｌｉｔｙ  ｆｏｒ  Ｌｉｎｕｘ（ＩＦＬ）
これは、ｚ／ＯＳ（登録商標）によってのみ用いられる、使用不可能な１つ又は２つの命令を伴う通常のプロセッサである。Ｌｉｎｕｘは、これらの命令を用いることはなく、従って、ＩＦＬ上で動作することができる。Ｌｉｎｕｘは、ＣＰによって実行することもできる。両者の違いは、システムのモデル数を特定するときにＩＦＬはカウントされないことである。これによって、ソフトウェアのコストに実質的に違いが生じる可能性がある。
【００２１】
−  ｚＡＡＰ
これは、オペレーティング・システム全体がプロセッサ上で動作することができないように、使用不可能な多くの機能（割り込み処理、幾つかの命令）を伴うプロセッサである。しかしながら、ｚ／ＯＳは、ｚＡＡＰプロセッサの存在を検出することができ、Ｊａｖａ（商標）コードを実行するためにこれらのプロセッサを用いる。同じＪａｖａコードは、標準のＣＰ上で実行することができる。同様に、ｚＡＡＰエンジンは、システムのモデル数を特定するときにカウントされない。ＩＦＬのように、ｚＡＡＰエンジンは、ソフトウェアのコストを抑制するためだけに存在する。
【００２２】
−  ｚＩＩＰ
Ｓｙｓｔｅｍ  ｚ９（商標）Ｉｎｔｅｇｒａｔｅｄ  Ｉｎｆｏｒｍａｔｉｏｎ  Ｐｒｏｃｅｓｓｏｒ（ｚＩＩＰ）は、適用可能なデータベース作業負荷を処理することに特化したエンジンである。ｚＩＩＰは、ビジネス・インテリジェンス（ＢＩ）、エンタープライズ・リソース・プラニング（ＥＲＰ）及びカスタマー・リレーションシップ・マネージメント（ＣＲＭ）といった、メインフレーム上の選択された作業負荷について、ソフトウェア費用を低減するのを支援するように設計されている。ｚＩＩＰは、よりコスト効率よくＤＢ２（登録商標）に直接アクセスすることを支援し、データを多数コピーする必要性を減らすことによって、企業のデータ・ハブとしてのメインフレームの役割を強化する。
【００２３】
Ｉｎｔｅｇｒａｔｅｄ  Ｃｏｕｐｌｉｎｇ  Ｆａｃｉｌｉｔｙ（ＩＣＦ）
これらのプロセッサは、ライセンスされた内部コードのみを実行する。これらは、通常のオペレーティング・システム又はアプリケーションには認識されない。例えば、結合ファシリティは、実際には、作業を協働する多数のシステムによって用いられる大きなメモリ・スクラッチ・パッドである。ＩＣＦは、後に結合ファシリティになるＬＰＡＲに割り当てなければならない。
【００２４】
Ｓｐａｒｅ
特徴付けられていないＰＵは、「スペア」として機能する。システム・コントローラが、機能しないＣＰ又はＳＡＰを検出した場合には、それをスペアＰＵと置き換えることができる。多くの場合、これは、いずれのシステムも、機能しないプロセッサ上で稼働しているアプリケーションであっても、中断することなく行うことができる。
【００２５】
プロセッサのこれらの特徴に加えて、いくつかのメインフレームは、それらのＣＰの潜在的なスピードより遅く動作するように構成されたモデル又はバージョンを有する。これは、「ニーキャッピング（knee−capping）」として広く知られているが、ＩＢＭは、キャパシティ・セッティング（capacity setting）という用語又は同様の用語を好んでいる。これは、例えば、プロセッサの命令ストリームにヌルサイクルを挿入するマイクロ・コードを用いることによって行われる。目的は、この場合もやはり、アプリケーションの要件を満たす最小のメインフレーム・モデル又はバージョンを有することにより、ソフトウェア費用を抑えることである。ＩＦＬ、ＳＡＰ、ｚＡＡＰ、ｚＩＩＰ、及びＩＣＦは、ソフトウェアの価格計算において「カウントされない」ため、常に、プロセッサの最高速度で機能する。
【００２６】
プロセッサ及びＣＰＵというときには、完全なシステム・ボックスか、又は、システム・ボックス内部のプロセッサ（ＣＰＵ）の一つのいずれかのことをいう場合がある。その意味は、説明の文脈から明らかにすることができるが、メインフレームの専門家でさえ、説明の際に彼らが用いているのはどのプロセッサ又はＣＰＵを意味しているのかを明確にしなければならない。ＩＢＭは、主ストレージ、１つ又は複数の中央プロセッサ、タイマ、及びチャネルを含むハードウェアの物理的集合体のことを言うために、中央プロセッサ複合体（ＣＰＣ）という用語を用いる。（システム・プログラマには、メインフレーム「ボックス」のことを言うのに中央電子複合体（ＣＥＣ）を用いる者もいるが、好ましい用語はＣＰＣである。）
【００２７】
簡単に言えば、ＣＰＣ内部の全てのＳ／３９０又はｚ／アーキテクチャ・プロセッサは、処理ユニット（ＰＵ）である。ＩＢＭがＣＰＣを引き渡すときに、ＰＵは、（通常の作業のための）ＣＰ、Ｉｎｔｅｇｒａｔｅｄ  Ｆａｃｉｌｉｔｙ  ｆｏｒ  Ｌｉｎｕｘ（ＩＦＬ）、並列シスプレックス構成のためのＩｎｔｅｇｒａｔｅｄ  Ｃｏｕｐｌｉｎｇ  Ｆａｃｉｌｉｔｙ（ＩＣＦ）などとして特徴付けられる。
【００２８】
メインフレームの専門家は、典型的には、状況に応じて、ハードウェア・ボックス、（Ｉ／Ｏデバイスを伴う）完全なハードウェア環境、又は（ソフトウェアを伴う）オペレーティング環境を示すために、システムを用いる。メインフレームの専門家は、典型的には、ＣＰＣの内部のシングル・プロセッサ（ＣＰ）を意味するために、プロセッサを用いる。
【００２９】
ｚ／ＶＭ（登録商標）  ＨＹＰＥＲＶＩＳＯＲ（商標）は、アプリケーション及びデータを統合すると同時に、並外れた水準の可用性、安全性、及び運用容易性を提供することによって、顧客が企業全体にわたってメインフレーム技術のビジネス価値を増大させるのを支援するように設計されている。ｚ／ＶＭ仮想化技術は、クライアントの能力が、ｚ／ＯＳ（登録商標）のような他のシステムｚオペレーティング・システムと共に稼働する単一のメインフレーム上で又はＬｉｎｕｘ専用の大規模エンタープライズ・サーバ・ソリューションとして、数百から数千のＬｉｎｕｘサーバを稼働させることを可能にするように設計されている。ｚ／ＶＭ  Ｖ５．３は、ｚ／ＯＳ、ｚ／ＶＳＥ、及びｚ／ＴＰのような非Ｌｉｎｕｘ作業負荷をホストすることにより、生産性を改善するのを支援することもできる。
【００３０】
ｚ／ＶＭは、仮想マシンとして知られる個別の作業環境を各々のユーザに提供する。仮想マシンは、プロセッサ機能、メモリ、ネットワーキング、及び入力／出力（Ｉ／Ｏ）リソースを含む、専用の実マシンの存在をエミュレートする。オペレーティング・システム及びアプリケーション・プログラムは、ゲストとして仮想マシン内で稼働することができる。例えば、種々のアプリケーション及びエンドユーザもサポートする同じｚ／ＶＭシステム上で、多数のＬｉｎｕｘ及びｚ／ＯＳイメージを稼働させることができる。結果として、開発、試験、及び生産環境を単一の物理コンピュータで共有することができる。
【００３１】
図１５-図１８を参照すると、パーティション化及び仮想化は、システム・リソースを別個の物理エンティティではなく論理プールとして扱うことによって、物理的なものから論理的なものに思考をシフトすることを含む。これは、システム・リソースを統合し、プールすることと、同種及び異種のサーバ、ストレージ、分散システム、及びネットワークについて「単一のシステムであるという錯覚（single system illusion）」を起こさせることとを含む。
【００３２】
ハードウェアのパーティション化には、各々がその特定のアプリケーションを稼働させる、別個のオペレーティング・システムのための別個のＣＰＵを必要とする。ソフトウェアのパーティション化は、個々のオペレーティング・システムがＣＰＵのいずれか又は全てで稼働できるようにするためのソフトウェアベースの「ハイパーバイザ」を使用する。
【００３３】
ハイパーバイザは、多数のオペレーティング・システムがホスト・コンピュータ上で同時に稼働することを可能にする。今日、我々は、ｚ／ＶＭの前身であるＩＢＭ  ＶＭ／３７０に始まるハイパーバイザ技術を有する。論理パーティション化（ＬＰＡＲ）には、オペレーティング・システムをＣＰＵから分離させるためのパーティション化ファームウェア（ハードウェアベースのハイパーバイザ、例えば、ＰＲ／ＳＭ）を必要とする。
【００３４】
仮想化は、四つの基礎的な能力、すなわち、リソース共有、リソース集約、機能のエミュレーション、及び分離を可能にするか、又はこれらを利用する。これらの項目については、以下の章でより詳細に検討する。
【００３５】
ｚ／ＶＭは、極めて柔軟性のある試験環境及び生産環境を提供するＩＢＭシステムｚプラットフォームのためのオペレーティング・システムである。ＩＢＭ仮想化技術のｚ／ＶＭ実装は、Ｌｉｎｕｘ  ｏｎ  Ｓｙｓｔｅｍ  ｚ、ｚ／ＯＳなどといった全機能型オペレーティング・システムをｚ／ＶＭの「ゲスト」として稼働させる能力を提供する。ｚ／ＶＭは、６４ビットのＩＢＭ  ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅゲスト及び３１ビットのＩＢＭエンタープライズ・システム  アーキテクチャ／３９０ゲストをサポートする。
【００３６】
ｚ／ＶＭは、仮想マシンとして知られる個別の作業環境を各々のユーザに提供する。仮想マシンは、プロセッサ機能、メモリ、ネットワーク、及び入力／出力（Ｉ／Ｏ）リソースを含む専用の実マシンの存在をシミュレートする。オペレーティング・システム及びアプリケーション・プログラムは、ゲストとして仮想マシン内で稼働することができる。例えば、種々のアプリケーション及びエンドユーザもサポートする同じｚ／ＶＭシステム上で、多数のＬｉｎｕｘ及びｚ／ＯＳ（登録商標）イメージを稼働させることができる。結果として、開発、試験、及び生産環境を単一の物理コンピュータで共有することができる。
【００３７】
仮想マシンは実ハードウェア・リソースを用いるが、たとえ専用デバイス（テープ・ドライブのような）であっても、テープ・ドライブの仮想アドレスは、テープ・ドライブの実アドレスと同じであっても同じでなくても良い。したがって、仮想マシンは、実世界に存在してもしなくてもよい「仮想ハードウェア」のみを識別する。
【００３８】
例えば、ベーシック・モードのシステムにおいては、第１レベルのｚ／ＶＭは、図１９の実ハードウェア上にインストールされるベースとなるオペレーティング・システムである。第２レベルのオペレーティング・システムは、ベースとなるｚ／ＶＭオペレーティング・システム上で生成されるシステムである。したがって、ベースとなるオペレーティング・システムとしてのｚ／ＶＭはハードウェア上で稼働し、ゲスト・オペレーティング・システムは、仮想化技術上で稼働する。図１８において、第１レベルのゲスト（ゲスト−１）パーティションにロードされた第２レベルのゲストｚ／ＶＭ  ＯＳが示される。
【００３９】
換言すれば、ハードウェア上に直接乗る第１レベルのｚ／ＶＭオペレーティング・システムが存在するが、この第１レベルのｚ／ＶＭシステムのゲストは、仮想化される。ゲストからハードウェアを仮想化することにより、少数のハードウェアで必要な数のゲストを生成し、使用することができる。
【００４０】
前述のように、仮想マシン内で稼働するオペレーティング・システムは、多くの場合、「ゲスト」と呼ばれる。本明細書に記載される場合がある他の語句は、
【００４１】
-  「第１レベルを稼働する」又は「ネイティブに稼働する」とは、ハードウェア上で直接稼働することを意味する（これは、ｚ／ＶＭが行うことである）。
-  「第２のレベルを稼働する」「ＶＭ下で稼働する」、又は「ＶＭ上で（の上で）稼働する」、或いは「ゲスト―１として稼働する」とは、ゲストとして稼働することを意味する。ｚ／ＶＭオペレーティング・システムを用いて、ｚ／ＶＭ自体がＰＲ／ＳＭハイパーバイザ上でゲスト―１として稼働するときに「ゲスト―２として稼働する」ことも可能である。
【００４２】
ｚ／ＶＭの機能の一例は、第１レベルのｚ／ＶＭシステム及び第２のレベルのｚ／ＶＭシステムを有する場合には、第２レベルのシステム上でさらに多くのオペレーティング・システムを生成し続けられることである。このタイプの環境は、展開前にオペレーティング・システムのインストールを試験するために、又は、オペレーティング・システムを試験若しくはデバッグするために、特に有用である。
【００４３】
仮想リソースは、下層の物理リソースにおいては利用できない機能又は特徴を有することができる。図１５−図１８は、リソース・エミュレーションによる仮想化を示す。このような機能又は特徴は、それがホスト・プログラムの支援によって実際に提供されるときに、ゲストがこのような機能又は特徴がシステムによって提供されることを認識するように、ホスト・プログラムによってエミュレートされると考えられている。
【００４４】
例として、別のアーキテクチャを用いて一つのプロセッサのアーキテクチャを実装するアーキテクチャ・エミュレーション・ソフトウェア、ＩＰネットワーク上の仮想ＳＣＳＩバスを実装するｉＳＣＳＩ、及び、物理ディスク・ストレージ上に実装される仮想テープ・ストレージが挙げられる。
【００４５】
さらに、現代の技術における中央処理ユニット（ＣＰＵ）のパッキングは、階層的であることが多い。多数のコアを単一のチップ上に配置することができる。多数のチップを単一のモジュール内に配置することができる。多数のモジュールをブックと言われることが多いボード上にパッケージすることができ、多数のブックを多数のフレーム全体にわたって分散させることができる。
【先行技術文献】
【特許文献】
【００４６】
【特許文献１】米国特許第５５５１０１３号
【特許文献２】米国特許第６００９２６１号
【特許文献３】米国特許５５７４８７３号
【特許文献４】米国特許６３０８２５５号
【特許文献５】米国特許６４６３５８２号
【特許文献６】米国特許５７９０８２５号
【非特許文献】
【００４７】
【非特許文献１】z/Architecture Principles ofOperation, IBM Pub. No. SA22-7832-05, 6th Edition, (April 2007).
【発明の概要】
【発明が解決しようとする課題】
【００４８】
ＣＰＵは、いくつかのレベルのキャッシュを有することが多く、例えば、各々のプロセッサは、１つのキャッシュ（又は、分割された命令キャッシュ及びデータ・キャッシュということもあり得る）を有することができ、各々のプロセッサと主メモリ・インターフェイスとの間により大きい付加的なキャッシュが存在する場合もある。階層のレベルに応じて、キャッシュは、全体の性能を改善するように配置することもでき、あるレベルにおいては、キャッシュは、単一のＣＰＵより多いＣＰＵ間で共有することもできる。そのような配置に関するエンジニアリング判断は、スペース、電力／熱、配線距離、ＣＰＵ周波数、メモリ速度、システム性能その他の側面を扱う。ＣＰＵの要素のこの配置によって、パーティションの各々のＣＰＵがどこに配置されているかに応じて、特定の論理パーティションにとって概ね好ましいものとすることができる内部構造が生成される。論理パーティションは、実際にオペレーティング・システムが他のパーティションにおける他のオペレーティング・システムとリソースを共有している場合には、プロセッサの利用を含む特定のリソースの所有権（ownership）をそのオペレーティング・システムから見えるようにする。通常、ソフトウェアは、配置を認識することはなく、対称型マルチ・プロセッシング（ＳＭＰ）構成においては、各々のＣＰＵが同じレベルの性能をもたらす１組のＣＰＵを認識する。問題は、内部のパッケージング及びいずれか２つのＣＰＵ間の「距離」を無視することによって、どのようにＣＰＵに作業を割り当てることができるかについて最適とはいえない選択をソフトウェアが行う可能性があることである。したがって、ＳＭＰ構成の潜在能力の全てが発揮されているとはいえない。
【００４９】
提示される仮想化のメインフレームの例は、マシンを仮想化する際に可能となる種々のトポロジを教示することを意図している。上述のように、１つのパーティションにおいて稼働する（オペレーティング・システムを含む）プログラムには、これらのプログラムが利用可能な、プロセッサ、メモリ及びＩ／Ｏを含むリソースが、そのパーティション専用のものであるように見えていると思われる。実際には、プログラムは、１つのパーティションで稼働しているという概念を持つことはない。そのようなプログラムもまた、それらのパーティションのトポロジを認識せず、したがって、そのようなトポロジに基づく選択を行うことができない。必要とされることは、プログラムが稼働している構成トポロジをそのプログラムが最適化する方法である。
【００５０】
未利用のコンピュータ・ハードウェア・リソースの組を有するアップグレード可能なコンピュータ・システムにおいて、未利用のコンピュータ・ハードウェア・リソースのサブセットを有効にするための方法、システム、及びコンピュータ・プログラム製品を提供することによって、従来技術の欠点が克服され、更なる利点がもたらされる。
【課題を解決するための手段】
【００５１】
ホストＣＰＵを含むホスト・コンピュータをパーティション化して、ゲストＣＰＵを有する論理／仮想パーティションにすることができる。パーティション化は、ＩＢＭのｚ／ＶＭのようなオペレーティング・システムにより提供することができるファームウェア又はソフトウェアによって実現されることが好ましい。各々のゲストＣＰＵは、ゲスト・プログラムにはゲストＣＰＵが実際のＣＰＵプロセッサに見えるが、実際には下層のホストが各々のゲストＣＰＵをホストＣＰＵリソースにマッピングしているという点で、仮想ＣＰＵである。一実施形態においては、ゲストＣＰＵは、ホストＣＰＵを利用するゲストＣＰＵのためにＣＰＵ時間の一部を指定するホストによって、ホストＣＰＵの一部を用いて実装される。単一のホストＣＰＵによって複数のゲストＣＰＵをサポートすることができるが、逆もまた適用できることが想定される。
【００５２】
別の実施形態においては、ゲストＣＰＵはソフトウェアによってエミュレートされ、それにより、エミュレーション・ルーチンが、（命令のデコード及び実行を含む）ゲストＣＰＵの機能をホストＣＰＵ上で稼働するルーチンに変換する。ホストＣＰＵは、ゲストＣＰＵをサポートするようにプロビジョニングされる（provisioned）。
【００５３】
別の実施形態においては、第１のゲスト・イメージは、第２のゲスト・イメージのホストとすることができる。この場合には、第２のゲストＣＰＵは、自らがホストＣＰＵによってプロビジョニングされる第１のゲストＣＰＵにより、プロビジョニングされる。構成のトポロジは、ゲストＣＰＵのレベルと１つ又は複数のホストＣＰＵのレベルとのネスティングである。
【００５４】
新たなＰＥＲＦＯＲＭ  ＴＯＰＯＲＯＧＹ  ＦＡＣＩＬＩＴＹ（ＰＴＦ）命令が提供され、従来のＳＴＯＲＥ  ＳＹＳＴＥＭ  ＩＮＦＯＲＭＡＴＩＯＮ  （ＳＴＳＩ）命令が、コンポーネント・アフィニティ（component affinity）及び論理パッケージング情報をソフトウェアに与える新たなＳＹＳＩＢ  （ＳＹＳＩＢ識別子１５．１．２）を提供するように強化される。このことにより、マルチプロセッサの処理ユニットのような個々のコンポーネントがどのように種々のアプリケーション及び作業負荷に割り当てられるかについて、ソフトウェアが情報に基づくインテリジェントな選択を適用することが可能になる。例えば共有キャッシュのヒット率を上げることにより性能を改善するために、情報がプログラム（ＯＳ）に与えられる。
【００５５】
新たなＰＥＲＦＯＲＭ  ＴＯＰＯＲＯＧＹ  ＦＵＮＣＴＩＯＮ（ＰＴＦ）命令は、内部でプログラムが稼働しているＣＰＵ構成トポロジを変更させることを要求するために、スーパーバイザ、ＯＳ、カーネルなどのような特権的プログラムによって用いられる。一実施形態においては、ゲストＣＰＵトポロジは、水平極性と垂直極性との間で切り替えられる。
【００５６】
ＣＰＵトポロジ情報を学習する能力を有することにより、プログラムは、対称型マルチ・プロセッシング構成におけるいずれか任意の２つ又はそれ以上のＣＰＵ間の「距離」を理解する。
【００５７】
構成における全てのＣＰＵの集約距離（aggregate distance）を最小化するために提供される機能と、特定のアプリケーション・プログラムのタスクが個々のＣＰＵ上にディスパッチされる方法とによって、スーパーバイザ・プログラムに性能を改善する能力が与えられる。性能の改善は、より良いトポロジ知識によって改善される以下の属性のうちの１つ又は複数によってもたらされる可能性がある。
【００５８】
ＣＰＵ間の信号伝達パスの短縮
多数のＣＰＵによってアクセスされる共有ストレージは、ＣＰＵの組により近いキャッシュ内にあることが多い。したがって、キャッシュ間ストレージの使用は、より速いキャッシュ間転送を可能にする、マシン及び構成全体のうちのより小さな一部に限定される。ＣＰＵ（Ｌ１）の最も近いキャッシュにストレージ場所が存在することが極めて発生しやすい。
【００５９】
性能が改善されることによって、構成における実際のＣＰＵの数をより少なくすることができる一方で、依然として同じ稼働時間又はより少ない稼働時間で同じ仕事を行うことができる。ＣＰＵのこのような減少は、各々のＣＰＵが構成の中の他のＣＰＵと通信するために用いなければならない通信パスの数を減らし、それにより、全体の性能改善にさらに寄与する。
【００６０】
例えば、１０個のＣＰＵが特定のプログラムを実行する必要がある場合には、キャッシュ間のトラフィックは重要であるが、同じプログラムを１つのＣＰＵ上で実行することができる場合には、キャッシュ間のトラフィックは存在しない。このことは、ストレージがいずれのキャッシュ内にある場合でも、望ましいストレージ場所のキャッシュの存在が単一のＣＰＵのキャッシュ内であることが保証されることを示す。
【００６１】
ストレージ及び関連するキャッシュの階層が、多数の物理フレーム（即ち、ボックスなど）にわたって分散されているのとは対照的にローカルであるときには、信号伝達パスはより短い。トポロジ知識は、ＳＭＰ構成におけるＣＰＵの大きなサブセット内であってもそのサブセットがＣＰＵ間の最小距離を最適化するように、アプリケーション・プログラムに割り当てるＣＰＵの適切なサブセットを選択する際の相対距離を示す。これは、アフィニティ・グループと呼ばれることがある。
【００６２】
ＣＰＵカウントの減少及びＣＰＵ間の距離の概念は、プログラムがアフィニティ・グループへのＣＰＵの割り当てを最適化できるようにするトポロジ情報によって与えられる。
【００６３】
本発明の対象（図２３及び２４）は、複数のゲスト構成のゲスト・プロセッサ（ゲストＣＰＵ）のトポロジの構成変化のための、ホスト・プロセッサ（ホストＣＰＵ）、方法、システム、及びプログラム製品を含む、論理パーティション化されたホスト・コンピュータ・システムにおいて与えられる。好ましくは、ゲスト構成のゲスト・プロセッサは、コンピュータ・アーキテクチャのために定められたｐｅｒｆｏｒｍ  ｔｏｐｏｌｏｇｙ  ｆｕｎｃｔｉｏｎ命令、実施される機能を特定するオペコード・フィールドを含むｐｅｒｆｏｒｍ  ｔｏｐｏｌｏｇｙ  ｆｕｎｃｔｉｏｎ命令をフェッチする。前記機能は、
ゲスト構成のゲスト・プロセッサの極性の構成の特定された変化の要求、及び、
要求され特定された極性変化に応じて特定された極性変化に係るゲスト構成のゲスト・プロセッサのトポロジの構成の変化
を含むｐｅｒｆｏｒｍ  ｔｏｐｏｌｏｇｙ  ｆｕｎｃｔｉｏｎ命令の実行により行われる。
【００６４】
本発明の一側面において、前記ＰＥＲＦＯＲＭ  ＴＯＰＯＬＯＧＹ  ＦＵＮＣＴＩＯＮ命令は、レジスタ・フィールドをさらに含み、
前記ＰＥＲＦＯＲＭ  ＴＯＰＯＬＯＧＹ  ＦＵＮＣＴＩＯＮ命令を実行する前記ステップは、
前記レジスタ・フィールドによって特定されるレジスタの機能コード・フィールドから、水平極性指示子、垂直極性指示子又はトポロジ変化チェック指示子のうちのいずれか１つから成る機能コード・フィールド値を取得することと、
水平極性を特定する命令に応答して、コンピュータ構成の前記ゲスト・プロセッサの水平極性を開始し、それにより結果としての更新されたトポロジを作ることと、
垂直極性を特定する命令に応答して、コンピュータ構成の前記ゲスト・プロセッサの垂直極性を開始し、それにより結果としての更新されたトポロジを作ることと、
結果コード値を前記レジスタの結果フィールドに設定することと、
をさらに含む。
【００６５】
本発明のその他の側面において、開始された極性要求は、実行の完了とは非同期であり、トポロジ変化のチェックを特定する前記機能コード・フィールド値に応答して、前記トポロジ変化の完了状態をチェックするステップをさらに含む。
【００６６】
一実施形態において、前記水平極性は、実質的に均等なホスト・プロセッサ・リソースを各々のゲスト・プロセッサ・リソースに与えることを含み、前記垂直極性は、前記ゲスト・プロセッサの少なくとも１つのゲスト・プロセッサに、前記ゲスト・プロセッサの少なくとも別のゲスト・プロセッサより実質的に多くのホスト・プロセッサ・リソースを与えることを含む。
【００６７】
その他の実施形態において、前記結果コード値は、前記構成が実行前に前記機能コードによって特定される極性を有していることに応答して、前記構成が前記機能コードに従ってすでに極性を有することを示す結果コード値と、
前記構成が実行前に未完成の極性を処理していることに応答して、トポロジ変化がすでに処理中であることを示す結果コード値と、
から成る理由コードを特定する。
【００６８】
一実施形態において、前記実行は、トポロジ変化が進行中であることに応答して、トポロジ変化が開始されたことを示す条件コードを設定するステップと、
前記要求が拒絶されたことに応答して、前記要求が拒絶されたことを示す条件コードを設定するステップと、を含む。
【００６９】
一実施形態において、前記実行は、トポロジ変化報告が保留中ではないことに応答して、トポロジ変化報告が保留中ではないことを示す条件コードを設定するステップと、
トポロジ変化報告が保留中であることに応答して、トポロジ変化報告が保留中であることを示す条件コードを設定するステップと、をさらに含む。
【００７０】
一実施形態において、  コンピュータ・アーキテクチャのために定められた前記ｐｅｒｆｏｒｍ  ｔｏｐｏｌｏｇｙ  ｆｕｎｃｔｉｏｎ命令は、代替コンピュータ・アーキテクチャの中央処理ユニットによってフェッチ及び実行され、
前記ｐｅｒｆｏｒｍ  ｔｏｐｏｌｏｇｙ  ｆｕｎｃｔｉｏｎ命令の動作をエミュレートする所定のソフトウエア・ルーチンを識別するために、前記ｐｅｒｆｏｒｍ  ｔｏｐｏｌｏｇｙ  ｆｕｎｃｔｉｏｎ命令を翻訳するステップをさらに含み、
前記ｐｅｒｆｏｒｍ  ｔｏｐｏｌｏｇｙ  ｆｕｎｃｔｉｏｎ命令を実行する前記ステップは、前記機械命令を実行するための方法のステップを実施する前記所定のソフトウエア・ルーチンを実行するステップを含む。
【図面の簡単な説明】
【００７１】
【図１】従来技術によるホスト・コンピュータ・システムを示す。
【図２】従来技術によるエミュレートされたホスト・コンピュータ・システムを示す。
【図３】従来技術によるＳＴＳＩマシン命令の命令フォーマットを示す。
【図４】従来技術によるＳＴＳＩ  命令のｉｍｐｌｉｅｄ  レジスタを示す。
【図５】機能コードテーブルを示す。
【図６】従来技術によるＳＹＳＩＢ  １．１．１  テーブルを示す。
【図７】従来技術によるＳＹＳＩＢ  １．２．１  テーブルを示す。
【図８】従来技術によるフォーマット-０  ＳＹＳＩＢ  １．２．２  テーブルを示す。
【図９】従来技術によるフォーマット-１  ＳＹＳＩＢ  １．２．２  テーブルを示す。
【図１０】本発明によるＳＹＳＩＢ  １５．１．２  テーブルを示す。
【図１１】コンテナ・タイプＴＬＥを示す。
【図１２】ＣＰＵタイプＴＬＥを示す。
【図１３】本発明によるＰＴＦマシン命令の命令フォーマットを示す。
【図１４】ＰＴＦ命令のレジスタ・フォーマットを示す。
【図１５】従来技術によるパーティション化されたコンピュータ・システムの要素を示す。
【図１６】従来技術によるパーティション化されたコンピュータ・システムの要素を示す。
【図１７】従来技術によるパーティション化されたコンピュータ・システムの要素を示す。
【図１８】従来技術によるパーティション化されたコンピュータ・システムの要素を示す。
【図１９】コンピュータ・システムの例を示す。
【図２０】例となるコンピュータ・システムのコンテナを示す。
【図２１】例となるコンピュータ・システムのコンテナを示す。
【図２２】例となるコンピュータ・システムのコンテナを示す。
【図２３】本発明の実施形態のフローを示す。
【図２４】本発明の実施形態のフローを示す。
【発明を実施するための形態】
【００７２】
本発明とみなされる主題が、特許請求の範囲において具体的に指摘され、明確に記載される。しかしながら、本発明は、構成及び実施方法の両方について、本発明の更なる目的及び利点と共に、添付図面と組み合わせて説明される以下の記載を参照することによって最も良く理解される。
【００７３】
メインフレームにおいて、アーキテクチャ化された（architected）マシン命令は、多くの場合にはコンパイラ・アプリケーションのために、（典型的には「Ｃ」言語でアプリケーションを書くが、Ｊａｖａ（登録商標）、ＣＯＢＯＬ、ＰＬ／Ｉ、ＰＬ／Ｘ、Ｆｏｒｔｒａｎ及び他の高レベル言語でもアプリケーションを書く）プログラマによって用いられる。ストレージ媒体に格納されたこれらの命令は、本来はｚ／アーキテクチャＩＢＭサーバにおいて、又は、代わりに他のアーキテクチャを実行するマシンにおいて、実行することができる。これらの命令は、既存の及び将来のＩＢＭメインフレーム・サーバにおいて、並びに、ＩＢＭの他のマシン（例えば、ｐＳｅｒｉｅｓ（登録商標）サーバ及びｘＳｅｒｉｅｓ（登録商標）サーバ）上で、エミュレートすることができる。これらの命令は、ＩＢＭ（登録商標）、Ｉｎｔｅｌ（登録商標）、ＡＭＤ（商標）、Ｓｕｎ  Ｍｉｃｒｏｓｙｓｔｅｍｓなどにより製造されたハードウェアを用いる幅広い種類のマシン上でＬｉｎｕｘを稼働するマシンにおいて、実行することができる。ｚ／アーキテクチャ（登録商標）下におけるそうしたハードウェア上での実行に加えて、Ｌｉｎｕｘは、Ｈｅｒｃｕｌｅｓ、ＵＭＸ、ＦＳＩ（Ｆｕｎｄａｍｅｎｔａｌ  Ｓｏｆｔｗａｒｅ，Ｉｎｃ）又はＰｌａｔｆｏｒｍ  Ｓｏｌｕｔｉｏｎｓ，Ｉｎｃ．（ＰＳＩ）によるエミュレーションを用いるマシンでも用いることができ、これらにおいては、実行は一般にエミュレーション・モードである。エミュレーション・モードにおいては、エミュレーション・ソフトウェアがネイティブ・プロセッサによって実行され、エミュレートされたプロセッサのアーキテクチャをエミュレートする。
【００７４】
ネイティブ・プロセッサは、典型的には、ファームウェア又はネイティブ・オペレーティング・システムのいずれかを含むエミュレーション・ソフトウェアを実行して、エミュレートされたプロセッサのエミュレーションを行う。エミュレーション・ソフトウェアは、エミュレートされたプロセッサ・アーキテクチャの命令をフェッチして実行することを担当する。エミュレーション・ソフトウェアは、命令の境界（instruction boundaries）を追跡するために、エミュレートされたプログラム・カウンタを維持する。エミュレーション・ソフトウェアは、１つ又は複数のエミュレートされたマシン命令を同時にフェッチし、１つ又は複数のエミュレートされたマシン命令を、ネイティブ・プロセッサにより実行するためのネイティブ・マシン命令の対応するグループに変換することができる。これらの変換された命令は、より早い変換が実現できるように、キャッシュすることができる。それにもかかわらず、エミュレーション・ソフトウェアは、エミュレートされたプロセッサのために書かれたオペレーティング・システム及びアプリケーションが正しく動作することを保証するように、エミュレートされたプロセッサ・アーキテクチャのアーキテクチャ規則を維持しなければならない。さらに、エミュレーション・ソフトウェアは、エミュレートされたプロセッサを稼働するように設計されたオペレーティング・システム又はアプリケーション・プログラムを、エミュレーション・ソフトウェアを有するネイティブ・プロセッサ上で稼働することができるように、制御レジスタ、汎用レジスタ（多くの場合、浮動小数点レジスタを含む）、例えばセグメント・テーブル及びページ・テーブルを含む動的アドレス変換機能、割り込み機構、コンテキスト切り替え機構、時刻機構及びＩ／Ｏサブシステムへのアーキテクチャ化されたインターフェースを含むがこれらに限定されない、エミュレート・プロセッサ・アーキテクチャにより識別されるリソースを、提供しなければならない。
【００７５】
エミュレートされている特定の命令はデコードされ、個々の命令の機能を実行するためにサブルーチンが呼び出される。エミュレートされたプロセッサの機能をエミュレートするエミュレーション・ソフトウェア機能は、例えば、「Ｃ」言語のサブルーチン若しくはドライバで、又は、好ましい実施形態の記載を理解した後であれば当業者の知識の範囲内である特定のハードウェアのためのドライバを与える他のいくつかの方法で、実装される  。発明の名称が「Multiprocessor for hardware emulation」であるＢｅａｕｓｏｌｅｉｌらの特許文献１（米国特許第５５５１０１３号）、発明の名称が「Preprocessingof stored target routines for emulating incompatible instructions on a targetprocessor」であるＳｃａｌｚｉらの特許文献２（米国特許第６００９２６１号）、及び発明の名称が「Decoding guest instructionto directly access emulation routines that emulate the guest instructions」であるＤａｖｉｄｉａｎらの特許文献３（米国特許５５７４８７３号）、発明の名称が「Symmetricalmultiprocessing bus and chipset used for coprocessor support allowingnon-native code to run in a system」であるＧｏｒｉｓｈｅｋらの特許文献４（米国特許６３０８２５５号）、発明の名称が「Dynamicoptimizing object code translator for architecture emulation and dynamicoptimizing object code translation method」であるＬｅｔｈｉｎらの特許文献５（米国特許６４６３５８２号）、発明の名称が「Methodfor emulating guest instructions on a host computer through dynamicrecompilation of host instructions」であるＥｒｉｃ  Ｔｒａｕｔの特許文献６（米国特許５７９０８２５号）、及び他の多くの特許を含むがこれらに限定されない、種々のソフトウェア及びハードウェア・エミュレーション特許は、当業者が利用可能なターゲット・マシンについて異なるマシンのためのアーキテクチャ化された命令フォーマットのエミュレーションを実現する種々の公知の方法、並びに、上述の文献によって用いられる市販のソフトウェアの技術を示す。
【００７６】
図１を参照すると、ホスト・コンピュータ・システム１００の代表的なコンポーネントが示される。当該技術分野において公知のコンピュータ・システムにおいて、コンポーネントの他の構成が用いられることもある。
【００７７】
ホスト・コンピュータ環境は、好ましくは、ニューヨーク州アーモンクのＩｎｔｅｒｎａｔｉｏｎａｌ  Ｂｕｓｉｎｅｓｓ  Ｍａｃｈｉｎｅｓ  Ｃｏｒｐｏｒａｔｉｏｎ（ＩＢＭ（登録商標））によって提供されるｚ／Ａｒｃｈｉｔｅｃｔｕｒｅに基づく。ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅは、非特許文献１により完全に記載される。ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅに基づくコンピュータ環境は、例えば、いずれもＩＢＭ（登録商標）によるｅＳｅｒｖｅｒ（商標）及びｚＳｅｒｉｅｓ（登録商標）を含む。
【００７８】
代表的なホスト・コンピュータ１００は、主記憶（コンピュータ・メモリ１０２）と通信する１つ又は複数のＣＰＵ１０１と、他のコンピュータ又はＳＡＮなどと通信するためのネットワーク１１０及びストレージ・デバイス１１１へのＩ／Ｏインターフェースと、を含む。ＣＰＵは、プログラム・アドレス（仮想アドレス）をメモリの実アドレスへ変換するための動的アドレス変換（ＤＡＴ）１０３を有することができる。ＤＡＴは、典型的には、コンピュータ・メモリ１０２のブロックへの後のアクセスがアドレス変換の遅延を要しないように変換をキャッシュするためのトランスレーション・ルックアサイド・バッファ（ＴＬＢ）１０７を含む。典型的には、キャッシュ１０９は、コンピュータ・メモリ１０２とプロセッサ１０１との間に用いられる。キャッシュ１０９は、２つ以上のＣＰＵが利用可能な大きなキャッシュと、その大きなキャッシュと各々のＣＰＵとの間のより小さくより早い（より低いレベルの）キャッシュとを有する階層とすることができる。いくつかの実装形態においては、命令のフェッチ及びデータのアクセスのための別個の低レベル・キャッシュを提供するために、より低レベルのキャッシュが分割される。一実施形態においては、命令は、命令フェッチ・ユニット１０４によってメモリ１０２からキャッシュ１０９を介してフェッチされる。命令は、命令デコード・ユニット１０６においてデコードされ、（いくつかの実施形態においては他の命令と共に）命令実行ユニット１０８にディスパッチされる。典型的には、例えば、演算実行ユニット、浮動小数点実行ユニット及び分岐命令実行ユニットといったいくつかの実行ユニット１０８が用いられる。命令は、実行ユニットによって実行され、必要に応じて、命令が特定したレジスタ又はメモリからオペランドにアクセスする。オペランドがメモリ１０２からアクセス（読み込み又は格納）される場合には、ロード・ストア・ユニット１０５が、典型的には、実行されている命令の制御下でそのアクセスを処理する。
【００７９】
一実施形態においては、本発明は、（ライセンス内部コード（ＬＩＣ）、ファームウェア、マイクロ・コード、ミリコード、ピココードなどと呼ばれることがあり、そのいずれも本発明と整合性がある）ソフトウェアによって実施することができる。本発明を具体化するソフトウェア・プログラム・コードは、典型的には、ＣＤ-ＲＯＭドライブ、テープ・ドライブ又はハード・ドライブのような長期ストレージ媒体１１１から、コンピュータ・システム１００のＣＰＵ（中央処理ユニット）１０１としても知られるプロセッサによってアクセスされる。ソフトウェア・プログラム・コードは、ディスケット、ハード・ドライブ、又はＣＤ-ＲＯＭといった、データ処理システムと共に用いられる様々な公知の媒体のいずれかの上に具体化することができる。コードは、そのような媒体上に分散させてもよく、ネットワーク１１０上の１つのコンピュータ・システムのコンピュータ・メモリ１０２又はストレージから他のシステムのユーザによって用いられる他のコンピュータ・システムに分散させてもよい。
【００８０】
代替的に、プログラム・コードは、メモリ１０２内に具体化し、プロセッサ１０１がプロセッサ・バスを用いてアクセスすることができる。そのようなプログラム・コードは、種々のコンピュータ・コンポーネント及び１つ又は複数のアプリケーション・プログラムの機能及び対話を制御するオペレーティング・システムを含む。プログラム・コードは、通常、高密度ストレージ媒体１１１から高速メモリ１０２にページングされ、そこで、プロセッサ１０１による処理のために利用可能となる。ソフトウェア・プログラム・コードをメモリ内に具体化するための技術及び方法、ソフトウェア・プログラム・コードを物理媒体上に具体化するための技術及び方法、及び／又は、ネットワークを介してソフトウェア・コードを分散させるための技術及び方法はよく知られており、本明細書中ではこれ以上は説明しない。プログラム・コードは、電子メモリ・モジュール（ＲＡＭ）、フラッシュ・メモリ、コンパクト・ディスク（ＣＤ）、ＤＶＤ、磁気テープなどを含むがこれらに限定されない有形の媒体上に生成され、格納されるときには、「コンピュータ・プログラム製品」と呼ばれることが多い。コンピュータ・プログラム製品媒体は、典型的には、好ましくはコンピュータ・システム内の処理回路によって、その処理回路が実行するために、読み取り可能である。
【００８１】
図２においては、ホスト・アーキテクチャのホスト・コンピュータ・システム１００をエミュレートする、エミュレートされたホスト・コンピュータ・システム２０１の例が提供される。エミュレートされたホスト・コンピュータ・システム２０１において、ホスト・プロセッサ（ＣＰＵ）２０８は、エミュレートされたホスト・プロセッサ（又は仮想ホスト・プロセッサ）であり、ホスト・コンピュータ１００のプロセッサ１０１により用いられるものとは異なるネイティブ命令セット・アーキテクチャを有するエミュレーション・プロセッサ２０７を含む。エミュレートされたホスト・コンピュータ・システム２０１は、エミュレーション・プロセッサ２０７がアクセス可能なメモリ２０２を有する。実施形態の例においては、メモリ２０２は、ホスト・コンピュータ・メモリ１０２の部分と、エミュレーション・ルーチン２０３の部分とにパーティション化される。ホスト・コンピュータ・メモリ１０２は、ホスト・コンピュータ・アーキテクチャに従って、エミュレートされたホスト・コンピュータ２０１のプログラムが利用可能である。エミュレーション・プロセッサ２０７は、エミュレートされたプロセッサ２０８の命令ではなく、エミュレーション・ルーチン・メモリ２０３から取得された、アーキテクチャのアーキテクチャ化された命令セットのネイティブ命令を実行し、アクセスされるホスト命令をデコードしてアクセスされるホスト命令の機能をエミュレートするためのネイティブ命令実行ルーチンを決定することができるＳｅｑｕｅｎｃｅ＆Ａｃｃｅｓｓ／Ｄｅｃｏｄｅルーチンにおいて取得される１つ又は複数の命令を使用することによって、ホスト・コンピュータ・メモリ１０２内のプログラムから実行するためのホスト命令にアクセスすることができる（要再考）。
【００８２】
例えば、汎用レジスタ、制御レジスタ、動的アドレス変換、及びＩ／Ｏサブシステム・サポート及びプロセッサ・キャッシュといったファシリティを含む、ホスト・コンピュータ・システム１００アーキテクチャのために定められた他のファシリティは、アーキテクチャ化されたファシリティ・ルーチンによってエミュレートすることができる。エミュレーション・ルーチンは、エミュレーション・ルーチンの性能を改善するために、エミュレーション・プロセッサ２０７において利用可能な（汎用レジスタ、及び、仮想アドレスの動的変換のような）機能を利用することもできる。ホスト・コンピュータ１００の機能をエミュレートする際にプロセッサ２０７を補助するために、特別なハードウェア及びオフロード・エンジンを提供することもできる。
【００８３】
トポロジ情報をプログラムに提供するために、二つの命令が用意される。第一は、従来技術の命令であるＳＴＳＩ（ＳＴＯＲＥ  ＳＹＳＴＥＭ  ＩＮＦＯＲＭＡＴＩＯＮ）に対する機能強化であり、第二は、新たな命令であるＰＴＦ（ＰＥＲＦＯＲＭ  ＴＯＰＯＬＯＧＹ  ＦＵＮＣＴＩＯＮ）である。
【００８４】
ＣＰＵトポロジの概要
新たなＩＢＭ  ｅＳｅｒｉｅｓメインフレームの出現とともに、及びそれ以前でも、マシン編成をノード構造にすることによって、不均一なメモリアクセス（ＮＵＭＡ）挙動（「ランピネス（lumpiness）」と呼ばれることもある）が生じていた。従来技術であるＳＴＳＩ（ＳＴＯＲＥ  ＳＹＳＴＥＭ  ＩＮＦＯＲＭＡＴＩＯＮ）命令の新たなＳＹＳＩＢ  １５．１．２機能及び新たなＰＥＲＦＯＲＭ  ＴＯＰＯＬＯＧＹ  ＦＵＮＣＴＩＯＮ（ＰＴＦ）命令の目的は、（キャッシュ-ヒット率の向上を含む）一定の最適化を行い、それにより全体の性能を改善することができるように、付加的なマシン・トポロジをプログラムに認識させることである。マルチ・プロセッシング（ＭＰ）ゲスト構成に割り当てられるホストＣＰＵリソースの量は、一般に、構成されたゲストＣＰＵの数に対して均等に配分されてきた。（ゲストＣＰＵは、プログラムに提供される論理ＣＰＵであり、全てのゲストＣＰＵは、実際のホストＣＰＵ上にパーティション化されたソフトウェア／ハードウェアによってサポートされる。）  こうした均等な配分は、特定のゲストＣＰＵ（又は、複数のＣＰＵ）のいずれも、他の任意に決定されたどのゲストＣＰＵよりもいずれかの予備のホストＣＰＵプロビジョニングに対する権利があるわけではないことを意味する。ゲスト構成のこの条件は、この構成における全てのＣＰＵに影響を及ぼすものであり、「水平極性（horizontal polarization）」と呼ばれる。水平極性の下においては、ゲストＣＰＵに対するホストＣＰＵの割り当ては、ゲストＣＰＵごとに概ね同量のプロビジョニングである。プロビジョニングが専用ではないときには、ゲストＣＰＵをプロビジョニングする同じホストＣＰＵを用いて、別のゲストのゲストＣＰＵをプロビジョニングすることもできるし、同じゲスト構成の他のゲストＣＰＵをプロビジョニングすることさえできる。
【００８５】
他のゲスト構成が異なる論理パーティションである場合には、ホストＣＰＵは、各々のパーティションでアクティブなときには、多数の再配置ゾーン（relocation zones）にわたってキャッシュを共有しなければならないことによってキャッシュ・ヒット率が低下するため、典型的には、より多く主ストレージにアクセスしなければならない。いくつかのホストＣＰＵが主として、さらには排他的に、所与のゲスト構成に割り当てられる（及び、正常な挙動になる）ように、ホストＣＰＵプロビジョニングのバランスを変えることができる場合には、キャッシュ・ヒット率が向上し、性能も改善される。こうした不均等な配分は、１つ又は複数のゲストＣＰＵが、より少ないホストＣＰＵプロビジョニングに対する権利を有する他の任意に決定されたゲストＣＰＵに対して、予備のホストＣＰＵプロビジョニングに対する権利を有することを意味する。ゲスト構成のこの条件は、この構成における全てのＣＰＵに影響を及ぼすものであり、「垂直極性（vertical polarization）」と呼ばれる。本明細書において提示されるアーキテクチャは、垂直極性を、プロビジョニングの権利の三つのレベル、すなわち、高、中、低に分類する。
【００８６】
高権利（high entitlement）は、ホストＣＰＵの約１００％が論理／仮想ＣＰＵに割り当てられていることを保証するものであり、アフィニティは、両者の間で強い一致として維持される。論理パーティションのプロビジョニングに関して、垂直極性が有効であるときには、専用ＣＰＵの権利は高であると定義される。
【００８７】
中権利（medium entitlement）は、特定されない量のホストＣＰＵリソース（１つ又は複数のホストＣＰＵ）が論理／仮想ＣＰＵに割り当てられていることを保証するものであり、ホストＣＰＵの残りのキャパシティは、どこにでも割り当てることができるスラックであるとみなされる。利用可能なスラックについての最良のケースは、可能であればスラックをローカル・スラックとして割り当てることである。その利用可能なスラックがリモート・スラックとして割り当てられる場合には、有益性がより低い結果が生じる。中権利の論理ＣＰＵに割り当てられるリソースの割合は、高権利設定の１００％に近いことと比較して、より融通性のある概算値のケースもある。
【００８８】
低権利（low entitlement）は、ホストＣＰＵの約０％が論理／仮想ＣＰＵに割り当てられていることを保証する。しかしながら、スラックが利用可能な場合には、こうした論理／仮想ＣＰＵは、依然として多少のＣＰＵリソースを受け取ることができる。極性を用いるネストされたコンテナのモデルは、要求する構成に適用するときにマシンのノード構造に関してあるレベルの知識を与えるように意図されており、その結果、一般に、ホストＣＰＵのクラスタをゲストＣＰＵのクラスタに割り当てることができ、それにより、ストレージの共有と、同一のホストＣＰＵ上で実質的に衝突する異なる構成を最小限にすることとを可能な限り改善する。極性及び権利は、ゲスト構成における論理ＣＰＵと物理ＣＰＵとの関係又は仮想ＣＰＵと論理ＣＰＵとの関係を示し、ゲスト構成に割り当てられるキャパシティがその構成を含むＣＰＵ全体にわたってどのように分配されるかを示す。
【００８９】
歴史的に、ゲスト構成は水平極性とされてきた。どれだけ多くのゲストＣＰＵが構成に定められたとしても、割り当てられるホストＣＰＵリソースは、何らかの権利を与えられることもなく公平に、ゲストＣＰＵの全てにわたって均等に配分されていた。水平極性が有効であるときには、論理パーティションにおける単一の論理ＣＰＵの重みは、構成全体の重みをＣＰＵの数で割ったものに概ね等しいということができる。しかしながら、２０９７とそのファミリー・モデルの導入とともに、ホストＣＰＵリソースを異なる方法で、すなわち、構成の垂直極性と呼ばれる方法で配分できることが不可欠となり、ホストＣＰＵを用いたゲストＣＰＵのプロビジョニングの程度は、高権利、中権利、又は低権利として示される。垂直極性構成の論理／仮想ＣＰＵが同じホストＣＰＵによって完全に支援される（backed）ときには、高権利が有効である。垂直極性構成の論理／仮想ＣＰＵがホストＣＰＵによって部分的に支援されるときには、中権利が有効である。垂直極性構成の論理／仮想ＣＰＵが、利用可能となるスラック・リソースによって利用可能となる可能性があるもの以外にいずれのホストＣＰＵリソースによっても保証されないときには、低権利が有効である。
【００９０】
ＣＰＵスラック
ＣＰＵリソースについて、２種類のスラックＣＰＵリソースが存在する。
ローカル・スラックは、構成の論理／仮想ＣＰＵが権利を有する全てのリソースを使用していないときに利用可能となり、こうしたスラックは、そのＣＰＵの構成内で用いられる。ローカル・スラックは、スラックが構成内で用いられるときにキャッシュにおけるより良好なヒット率が期待されるため、リモート・スラックより好ましい。
リモート・スラックは、構成の論理／仮想ＣＰＵが権利を有する全てのリソースを使用していないときに利用可能となり、こうしたスラックは、そのＣＰＵの構成外で用いられる。リモート・スラックは、キャッシュにおけるヒット率が低いことが予想されるが、論理／仮想ＣＰＵを全く稼働させないよりはましである。
【００９１】
目的は、ＣＰＵキャッシュ・ヒット率を最大にすることである。論理パーティションについて、物理ＣＰＵリソースの量は、各々の論理パーティションに割り当てられるＣＰＵリソースを決定するシステム全体の重みによって決定される。例えば、単一のＣＰＵに相当する物理ＣＰＵリソースを割り当てられ、水平極性を有する、論理３−ｗａｙＭＰにおいては、各々の論理ＣＰＵは、独立にディスパッチされ、従って約３３％の物理ＣＰＵリソースを受け取る。同一の構成が垂直極性を有するものとすると、単一の論理ＣＰＵのみが稼働し、割り当てられた物理ＣＰＵリソースの約１００％を受け取る（高権利）が、残りの２つの論理ＣＰＵは、通常はディスパッチされない（低権利）。そのようなリソース割り当ては、通常は、概算である。低権利ＣＰＵであっても、プログラムがそのようなＣＰＵ上でスタックしないことを保証するためだけに、若干のリソースを受け取る。制御プログラムが、極性を認識することを示し、ＣＰＵの極性と、垂直極性の場合にはその権利の程度とについて各々のＣＰＵについての指示を受け取るための手段を提供することによって、制御プログラムは、構成の全てのＣＰＵが利用可能であるのに対して一般にＣＰＵに局在すると考えられるデータ構造を、よりインテリジェントに使用することができる。また、そのような制御プログラムは、いずれかの低権利ＣＰＵに作業を指示することを避けることができる。割り当てられた実際の物理ＣＰＵリソースは、整数のＣＰＵを構成しないこともあり、そのため、ＭＰ垂直極性構成における１つ又は複数のＣＰＵが、権利を与えられてはいるがその程度が高くない可能性も存在し、それにより、こうしたＣＰＵは垂直極性における中権利か低権利のいずれかを有することになる。残りのいずれかの低権利ＣＰＵは、若干のホストＣＰＵリソースを受け取ることができる。例えば、このことは、こうしたＣＰＵがＳＩＧＰ命令などを介してターゲットとされ、スラック・ホストＣＰＵリソースが使用可能であるときに、発生することがある。そうでなければ、こうした論理／仮想ＣＰＵは、ディスパッチされる能力がある場合でも、ディスパッチされない状態にとどまることがある。
【００９２】
好ましくは、本発明によれば、ＳＴＯＲＥ  ＳＹＳＴＥＭ  ＩＮＦＯＲＭＡＴＩＯＮ（ＳＴＳＩ）命令の新たなＣＰＵタイプ「トポロジ・リスト・エントリ」（ＴＬＥ）のために、２ビットの極性フィールドが定められる。ＣＰＵごとの垂直極性における権利の程度は、高、中、又は低として示される。割り当ては、正確な割合ではなく、多少ファジーであり、ヒューリスティックなものである。
【００９３】
ゲストＣＰＵに重みを再割り当てする手段としての垂直極性に加えて、別の概念が存在し、それは、スラック・キャパシティ（「ホワイト・スペース」とも呼ばれる）の生成及び管理である。スラック・キャパシティは、以下の環境の下で生成される。
・高−垂直ＣＰＵは、その平均稼働率（ＡＵ）が１００パーセント（１００−ＡＵ）を下回るとき、スラックに寄与する。
・ホストＣＰＵのＭパーセントの割り当てプロビジョニングを有する中−垂直ＣＰＵは、その平均稼働率（ＡＵ）がＭパーセント（Ｍ−ＡＵ＞０）を下回るとき、スラックに寄与する。
・低−垂直ＣＰＵは、スラックに寄与しない。
・高−垂直ＣＰＵは、スラックを消費しない。
【００９４】
ＳＴＯＲＥ  ＳＹＳＴＥＭ  ＩＮＦＯＲＭＡＴＩＯＮ命令
ＳＴＯＲＥ  ＳＹＳＴＥＭ  ＩＮＦＯＲＭＡＴＩＯＮ命令のフォーマットの例示的な実施形態である図３は、オペコード・フィールド「Ｂ２７Ｄ」と、ベース・レジスタ・フィールドＢ２と、符号付き置換フィールドＤ２とを含む。命令オペコードは、命令と関連付けられた暗黙汎用レジスタ「０」及び「１」が存在することを、その命令を実行するマシンに知らせる。アドレスは、ベース・フィールドによって特定される汎用レジスタの内容に符号付き置換フィールド値を追加することによって、第２オペランドから得られる。一実施形態においては、ベース・レジスタ・フィールドが「０」であるときには、置換フィールドの符号拡張値は、第２オペランドを特定するために直接用いられる。汎用レジスタ０における機能コードに応じて、ＳＴＯＲＥ  ＳＹＳＴＥＭ  ＩＮＦＯＲＭＡＴＩＯＮ命令がフェッチされ実行されるときに、プログラムを実行する構成のレベルの識別情報が汎用レジスタ０に置かれるか、又は、構成の１つ又は複数のコンポーネントに関する情報がシステム情報ブロック（ＳＹＳＩＢ）に格納される。１つ又は複数のコンポーネントに関する情報が要求されたときには、その情報は、汎用レジスタ０の更なる内容と、汎用レジスタ１の内容とによって、特定される。
【００９５】
ＳＹＳＩＢがある場合には、ＳＹＳＩＢは第２オペランド・アドレスによって指定される。マシンは、１つ、２つ、又は３つのレベルの構成を提供すると考えられる。レベルは以下の通りである。
１．ベーシック・モード又は非翻訳命令実行モード（non-interpretiveinstruction-execution）で作動しているかのようなマシンであるベーシック・マシン。
２．マシンがＬＰＡＲ（論理パーティション、翻訳命令実行（interpretive instruction-execution））モードにおいて作動している場合に提供される論理パーティション。論理パーティションは、マシンの一部であるＬＰＡＲハイパーバイザによって提供される。ベーシック・マシンは、マシンがＬＰＡＲモードにおいて作動しているときにも存在する。
３．ベーシック・マシンによって実行されるか又は論理パーティションにおいて実行される仮想マシン（ＶＭ）制御プログラムによって提供される仮想マシン。仮想マシン自体は、レベル３構成とも見なされるより高レベルの（ベーシック・マシンからより離れた）仮想マシンを提供するＶＭ制御プログラムを実行することができる。ベーシック・モード、ＬＰＡＲモード、論理パーティション、ハイパーバイザ、及び仮想マシンという用語、並びにそれらの用語に特に関連する他のいずれかの用語は、本公開において定義されず、それらの用語は、マシン・マニュアルにおいて定義される。レベル１構成（ベーシック・マシン）によって実行されているプログラムは、その構成に関する情報を要求することができる。レベル２構成（論理パーティションにおける）によって実行されているプログラムは、論理パーティション及び下層のベーシック・マシンに関する情報を要求することができる。レベル３構成（仮想マシン）によって実行されているプログラムは、仮想マシン及び１つ又は２つの下層レベルに関する情報を要求することができる。すなわち、ベーシック・マシンは常に下層にあり、論理パーティションは、ベーシック・マシンと仮想マシンとの間に存在することもあるし、存在しないこともある。仮想マシンに関する情報が要求されたときには、プログラムを実行する構成に関する情報、及び、仮想マシンの下層にあるいずれか１つ又は複数のレベルに関する情報が提供される。これらの場合のいずれにおいても、レベルが命令を実施する場合に限り、そのレベルに関する情報が提供される。
【００９６】
動作を決定する機能コードは、汎用レジスタ０のビット位置３２−３５における符号なし２進整数であり、以下のとおりである。
機能コード      要求される情報
０          現在の構成のレベルの数
１          レベル１に関する情報（ベーシック・マシン）
２          レベル２に関する情報（論理パーティション）
３          レベル３に関する情報（仮想マシン）
４−１４    なし；コードは未使用である
１５        現在の構成のレベルの情報
【００９７】
無効な機能コード
プログラムを実行する構成のレベルは、現在レベル（current level）と呼ばれる。ゼロ以外の機能コードによって特定される構成のレベルは、特定レベル（specifiedlevel）と呼ばれる。特定レベルの番号が現在レベルより大きいときには、機能コードは無効と呼ばれ、条件コードは３に設定され、（チェックを含む）他のアクションは行われない。
【００９８】
有効な機能コード
機能コードは、現在レベルの数字と等しいか又はそれより小さいときには、有効と呼ばれる。この場合には、汎用レジスタ０のビット３６−５５及び汎用レジスタ１のビット３２−４７は、ゼロ又は１５でなければならず、さもなければ、指定例外（specification exception）が認識される。汎用レジスタ０及び１のビット０−３１は、常に無視される。機能コードが０のときには、現在の構成のレベルを特定する符号なし２進整数（ベーシック・マシンの１、論理パーティションの２、又は仮想マシンの３）は、汎用レジスタ０のビット位置３２−３５に置かれ、条件コードは０に設定され、さらなるアクションは行われない。機能コードが有効で、ゼロ以外のときには、汎用レジスタ０及び１は、以下のように、要求される情報に関する追加の指定を含む。
・汎用レジスタ０のビット位置５６−６３は、特定構成の１つ又は複数のコンポーネントを特定する、セレクタ１と呼ばれる符号なし２進整数を含む。
・汎用レジスタ１のビット位置４８−６３は、要求される情報のタイプを特定する、セレクタ２と呼ばれる符号なし２進整数を含む。
汎用レジスタ０及び１の内容は、図４に示される。
【００９９】
機能コードが有効で、ゼロ以外のときには、第２オペランドの場所で開始するシステム情報ブロック（ＳＹＳＩＢ）に情報を格納することができる。ＳＹＳＩＢは、４Ｋバイトであり、４Ｋバイト境界で開始しなければならず、さもなければ、セレクタ１及びセレクタ２、並びに、ＳＹＳＩＢへの参照に起因するアクセス例外（access exceptions）が認識されるかどうかに応じて、指定例外が認識されることがある。
【０１００】
セレクタ１は以下のような値を持つことができる。
セレクタ１                  要求される情報
０            なし；セレクタは未使用である
１            機能コードによって特定される構成レベルに関する情報
２            特定される構成レベルにおける１つ又は複数のＣＰＵに関する情報
３−２５５    なし；セレクタは未使用である
【０１０１】
セレクタ１が１のときには、セレクタ２は以下のような値を持つことができる。
セレクタ１が１の
ときのセレクタ２            要求される情報
０                なし；セレクタは未使用である
１                特定される構成レベルに関する情報
２                特定される構成レベルに関するトポロジ情報
３−６５，５３５  なし；セレクタは未使用である
【０１０２】
セレクタ１が２のときには、セレクタ２は以下のような値を持つことができる。
セレクタ１が２の
ときのセレクタ２            要求される情報
０                なし；セレクタは未使用である
１                特定される構成レベルにおいてプログラムを実行するＣＰＵに関                        する情報
２                特定される構成レベルにおける全てのＣＰＵに関する情報
３−６５，５３５  なし；セレクタは未使用である
図５に示されるように、機能コード、セレクタ１、及びセレクタ２の特定の組み合わせのみが有効である。
【０１０３】
機能コード、セレクタ１、及びセレクタ２の特定の組み合わせが無効である（図５において示されるもの以外である）とき、或いは、特定されるレベルが命令を実行しないか若しくは完全には実行しないため又はレベルの必要な部分がアンインストールされたか若しくは初期化されていないために、組み合わせは有効ではあるが要求される情報が利用不可能である場合には、例外が認識されない条件で、条件コードが３に設定される。機能コードがゼロ以外のときには、組み合わせは有効であり、要求される情報は使用可能であり、要求される情報は、例外なく第２オペランド・アドレスにおいてシステム情報ブロック（ＳＹＳＩＢ）に格納される。
【０１０４】
ＳＹＳＩＢのいくつか又は全ては、格納される前にフェッチすることができる。
ＳＹＳＩＢは、「ｆｃ」、「ｓ１」、及び「ｓ２」をそれぞれ機能コード、セレクタ１、及びセレクタ２の値とすると、「ＳＹＳＩＢ  ｆｃ．ｓ１．ｓ２」を用いて参照において識別することができる。
【０１０５】
以下の項に、図及び関連するテキストを用いて、定められたＳＹＳＩＢを記載する。図において、左に示されるオフセットはワード値である（１ワードは４バイトからなる）。「構成」は、機能コードによって特定される構成レベル（情報が要求される構成レベル）をいう。
【０１０６】
ＳＹＳＩＢ  １．１．１（ベーシック・マシン構成）
ＳＹＳＩＢ  １．１．１は、図６に示されるフォーマットを有し、フィールドは以下の意味を有する。
未使用（reserved）：ワード０−７、１３−１５、及び２９−６３の内容は、未使用であり、ゼロとして格納される。ワード６４−１０２３の内容は未使用であり、ゼロとして格納するか又は不変とすることができる。
製造者（Manufacturer）：ワード８−１１は、構成の製造者の１６文字（０−９又は大文字Ａ−Ｚ）ＥＢＣＤＩＣ名を含む。この名前は、必要に応じて末尾の空白を用いて左詰めされる。
タイプ：ワード１２は、構成の４文字（０−９）ＥＢＣＤＩＣタイプ番号を含む。（これは、ＳＴＯＲＥ  ＣＰＵ  ＩＤの定義においてマシンタイプ番号と呼ばれる。）
モデル・キャパシティ識別子（Model-Capacity Identifier）：ワード１６−１９は、構成の１６文字（０−９又は大文字Ａ−Ｚ）ＥＢＣＤＩＣモデル・キャパシティ識別子を含む。モデル・キャパシティ識別子は、必要に応じて末尾の空白を用いて左詰めされる。
連続コード（Sequence Code）：ワード２０−２３は、構成の１６文字（０−９又は大文字Ａ−Ｚ）ＥＢＣＤＩＣ連続コードを含む。連続コードは、必要に応じて先頭のＥＢＣＤＩＣゼロを用いて右詰めされる。
製造プラント（Plant of Manufacture）：ワード２４は、構成の製造プラントを識別する４文字（０−９又は大文字Ａ−Ｚ）ＥＢＣＤＩＣコードを含む。コードは、必要に応じて末尾の空白を用いて左詰めされる。
モデル（Model）：ワード２５が２進数のゼロではないときに、ワード２５−２８は、構成の１６文字（０−９又は大文字Ａ-Ｚ）ＥＢＣＤＩＣモデル識別情報を含む。モデル識別情報は、必要に応じて末尾の空白を用いて左詰めされる。（これは、ＳＴＯＲＥ  ＣＰＵ  ＩＤのページ１０−１１１のプログラミング・ノート４においてモデル番号と呼ばれる。）  ワード２５が２進数のゼロのときには、ワード１６−１９の内容は、モデル・キャパシティ識別子及びモデルの両方を表す。
【０１０７】
プログラミング・ノート
１．ＳＹＳＩＢ  １．１．１のフィールドは、刊行物  Common I/O-Device Commands and Self Descriptionに記載されるノード記述子のフィールドと類似している。しかしながら、ＳＹＳＩＢフィールドの内容は、ＳＹＳＩＢフィールドが、
・より多くの文字を許容する
・許容される文字のタイプに関して、より融通性がある
・フィールド内部で異なって揃えられる情報を提供する
・連続コード・フィールドのようなフィールドの内容を決定するために同一の方法を用いることができない
という理由により、対応するノード記述子フィールドの内容と同一ではない場合がある。
【０１０８】
２．ノード記述子におけるモデル・フィールドは、ＳＴＳＩモデル・フィールドの内容に対応し、ＳＴＳＩモデル・キャパシティ識別子フィールドには対応しない。
【０１０９】
３．モデル・フィールドは、マシンのモデル（即ち、物理モデル）を特定し、モデル・キャパシティ識別子フィールドは、モデルについてのシステム・ライブラリのパブリケーションにキャパシティ又は性能の命令文を配置するのに用いることができるトークンを特定する。
【０１１０】
ＳＹＳＩＢ  １．２．１（ベーシック・マシンＣＰＵ）
ＳＹＳＩＢ  １．２．１は、図７に示されるフォーマットを有し、フィールドは以下の意味を有する。
未使用：ワード０−１９、ワード２５のバイト０及び１、並びに２６−６３の内容は、未使用であり、ゼロとして格納される。ワード６４−１０２３の内容は、未使用であり、ゼロとして格納するか又は不変することができる。
連続コード：ワード２０−２３は、構成の１６文字（０-９又は大文字Ａ-Ｚ）ＥＢＣＤＩＣ連続コードを含む。コードは、必要に応じて先頭のＥＢＣＤＩＣゼロを用いて右詰めされる。
製造プラント：ワード２４は、構成の製造プラントを識別する４文字（０-９又は大文字Ａ-Ｚ）ＥＢＣＤＩＣコードを含む。コードは、必要に応じて末尾の空白を用いて左詰めされる。
ＣＰＵアドレス：ワード２５のバイト２及び３はＣＰＵアドレスを含み、そのアドレスによって、このＣＰＵがマルチ・プロセッシング構成において識別される。ＣＰＵアドレスは、１６ビット符号なし２進整数である。ＣＰＵアドレスは、プログラムがベーシック・モードで動作しているマシンによって実行されるときにＳＴＯＲＥ  ＣＰＵ  ＡＤＤＲＥＳＳによって格納されるものと同一である。
【０１１１】
プログラミング・ノート
同一の構成における多数のＣＰＵは、同一の連続コードを有しており、固有のＣＰＵ識別を確立するために、ＣＰＵアドレスのような他の情報を用いることが必要である。ベーシック・マシンＣＰＵ及び論理パーティションＣＰＵについて戻される連続コードは、同一であり、ベーシック・マシン構成について戻される連続コードと同一の値を有する。
【０１１２】
ＳＹＳＩＢ  １．２．２（ベーシック・マシンＣＰＵ）
ワード０のバイト０におけるフォーマット・フィールドは、ＳＹＳＩＢのフォーマットを決定する。フォーマット・フィールドがゼロの値を持つときには、ＳＹＳＩＢ  １．２．２は、図８に示されるようなフォーマット−０レイアウトを有する。フォーマット・フィールドが１の値を持つときには、ＳＹＳＩＢ  １．２．２は、図９に示されるようなフォーマット−１レイアウトを有する。
【０１１３】
未使用：
フォーマット・フィールドがゼロの値を含むとき、ワード０及びワード１−６のバイト１−３の内容は、未使用であり、ゼロとして格納される。フォーマット・フィールドが１の値を含むとき、ワード０及びワード１−６のバイト１の内容は、未使用であり、ゼロとして格納される。全てのＣＰＵについての情報を含むために６４ワードより少ないワードで十分であるときには、フォーマット−０  ＳＹＳＩＢにおける調整因子リストに続くワード６３までのＳＹＳＩＢの部分、又は、フォーマット−１  ＳＹＳＩＢにおける代替調整因子リストに続くワード６３までのＳＹＳＩＢの部分は、未使用であり、ゼロとして格納される。ワード６４−１０２３の内容は、未使用であり、ゼロとして格納するか又は不変とすることができる。全てのＣＰＵについての情報を含むために６４ワード又はそれ以上のワードが必要なときには、フォーマット−０  ＳＹＳＩＢにおける調整因子リストに続くワード１０２３までのＳＹＳＩＢの部分、又は、フォーマット−１  ＳＹＳＩＢにおける代替調整因子リストに続くワード１０２３までのＳＹＳＩＢの部分は、未使用であり、ゼロとして格納するか又は不変とすることができる。
【０１１４】
フォーマット：
ワード０のバイト０は、ＳＹＳＩＢ  １．２．２のフォーマットを特定する８ビット符号なし２進整数を含む。
【０１１５】
代替ＣＰＵ能力オフセット：
フォーマット・フィールドが１の値を持つとき、ワード０のバイト２−３は、ＳＹＳＩＢにおける代替ＣＰＵ能力フィールドのバイトのオフセットを特定する１６ビット符号なし２進整数を含む。
【０１１６】
第２のＣＰＵ能力：
ワード７は、ゼロではないときに構成における特定のタイプのＣＰＵに適用することができる第２の能力を特定する、３２ビット符号なし２進整数を含む。この整数を生成するのに用いられるアルゴリズムの公式的な記述は、ＣＰＵ能力を生成するのに用いられるアルゴリズムと同一ものを除いて存在しない。この整数は、他のＣＰＵモデルの能力及びモデル内の他のＣＰＵタイプの能力と比較した、ＣＰＵの能力の指標として用いられる。能力の値は、構成における１つ又は複数の適用可能なＣＰＵタイプのＣＰＵの各々に適用する。すなわち、適用可能な１つ又は複数のタイプの構成における全てのＣＰＵは、同一の能力を有する。値がゼロのときには、構成におけるいずれかのＣＰＵタイプの全てのＣＰＵは、ＣＰＵ能力によって特定される能力と同一の能力を有する。第２のＣＰＵ能力は、ＣＰＵ能力の値と同一の値の場合もあるし、そうでない場合もある。マルチ・プロセッシングＣＰＵ能力調整因子は、能力が第２のＣＰＵ能力によって特定されるＣＰＵにも適用される。
【０１１７】
ＣＰＵ能力：
ワード８のビット０-８がゼロの場合には、ワードは、構成におけるＣＰＵの１つの能力を特定する範囲０＜Ｉ＜２２３の３２ビット符号なし２進整数（Ｉ）を含む。ワード８のビット０−８がゼロ以外の場合には、ワードは、３２ビット符号なし２進整数の代わりに、３２ビット２進浮動小数点ショート・フォーマット数を含む。符号化に関わらず、より低い値は、比例的により高いＣＰＵ能力を示す。その上、この値を生成するのに用いられるアルゴリズムの公式的な記述は存在しない。値は、他のＣＰＵモデルの能力と比較したＣＰＵの能力の指標として用いられる。能力の値は、構成における第２のＣＰＵ以外の各々に適用される。すなわち、構成における第２のＣＰＵ以外の全ては、同一の能力を有する。
【０１１８】
全ＣＰＵカウント：
ワード９のバイト０及び１は、構成におけるＣＰＵの全数を特定する１６ビット符号なし２進整数を含む。この数は、構成状態（configured state）、待機状態（standby state）、又は未使用状態（reserved state）にある全てのＣＰＵを含む。
【０１１９】
構成ＣＰＵカウント：
ワード９のバイト２及び３は、構成状態にあるＣＰＵの数を特定する１６ビット符号なし２進整数を含む。ＣＰＵは、構成内に存在し、プログラムを実行するのに用いることが可能であるとき、構成状態にある。
【０１２０】
待機ＣＰＵカウント：
ワード１０のバイト０及び１は、待機状態にあるＣＰＵの数を限定する１６ビット符号なし２進整数を含む。ＣＰＵは、構成内にあり、プログラムを実行するのに用いられることができず、構成状態にする命令を発行することによって利用可能にすることができるときには、待機状態にある。
【０１２１】
未使用ＣＰＵカウント：
ワード１０のバイト２及び３は、未使用状態にあるＣＰＵの数を特定する１６ビット符号なし２進整数を含む。ＣＰＵは、構成内にあり、プログラムを実行するのに用いられることができず、構成状態にする命令を発行することによって利用可能にすることができないときには、未使用状態にある。（マニュアル動作によって未使用ＣＰＵを待機状態又は構成状態にすることが可能である）
【０１２２】
マルチ・プロセッシングＣＰＵ能力調整因子：
ＳＹＳＩＢは、ワード１１のバイト０及び１で始まり、一連の連続する２バイト・フィールドを含み、各々のフィールドは、ＣＰＵ能力フィールドに含まれる値についての調整因子（分数）を形成するのに用いられる１６ビット符号なし２進整数を含む。そのような分数は、以下の方法の一つに従って、最初の２バイト・フィールドの値（Ｖ）を用いることによって作られる。
・Ｖが０＜Ｖ≦１００の範囲にある場合には、分母１００が示され、分数Ｖ／１００を生成する。
・Ｖが１０１≦Ｖ＜２５５の範囲にある場合には、分母２５５が示され、分数Ｖ／２５５を生成する。
・Ｖが２５５≦Ｖ≦６５，５３６の範囲にある場合には、分母６５，５３６が示され、分数Ｖ／６５，５３６を生成する。
【０１２３】
このように、示された分母で２バイト・フィールドの内容を割ることによって、各々の２バイト・フィールドにより表現される分数が作られる。調整因子フィールドの数は、全ＣＰＵカウント・フィールドにおいて特定されるＣＰＵの数より１つ少ない。調整因子フィールドは、構成状態にあるＣＰＵの数を増加させた構成に対応する。第１の調整因子フィールドは、構成状態にある２つのＣＰＵを持つ構成に対応する。連続する調整因子フィールドの各々は、前のフィールドの数より１つ多い、構成状態にあるＣＰＵの数を持つ構成に対応する。
【０１２４】
代替ＣＰＵ能力：
フォーマット・フィールドが値１を有するとき、ワードＮのビット０-８がゼロの場合には、ワードは、構成におけるＣＰＵの一つの公表された能力を特定する０≦Ｉ＜２２３の範囲の３２ビット符号なし２進整数（Ｉ）を含む。ワードＮのビット０-８がゼロ以外の場合には、ワードは、３２ビット符号なし２進整数の代わりに、３２ビット２進浮動小数点ショート・フォーマット数を含む。符号化に関わらず、より低い値は、比例的により高いＣＰＵ能力を示す。その上、この値を生成するのに用いられるアルゴリズムの公式的な記述は存在しない。値は、他のＣＰＵモデルの公表された能力と比較した、ＣＰＵの公表された能力の指標として用いられる。代替能力の値は、構成におけるＣＰＵの各々に適用する。すなわち、構成における全てのＣＰＵは、同一の代替能力を有する。
【０１２５】
代替マルチ・プロセッシングＣＰＵ能力調整因子：
ＳＹＳＩＢは、ワードＮ＋１のバイト０及び１で始まり、一連の連続する２バイト・フィールドを含み、各々のフィールドは、代替ＣＰＵ能力フィールドに含まれる値についての調整因子（分数）を形成するのに用いられる１６ビット符号なし２進整数を含む。そのような分数は、以下の方法の一つに従って、最初の２バイト・フィールドの値（Ｖ）を用いることによって作られる。
・Ｖが０＜Ｖ≦１００の範囲にある場合には、分母１００が示され、分数Ｖ／１００を生成する。
・Ｖが１０１≦Ｖ＜２５５の範囲にある場合には、分母２５５が示され、分数Ｖ／２５５を生成する。
Ｖが２５５≦Ｖ≦６５，５３６の範囲にある場合には、分母６５，５３６が示され、分数Ｖ／６５，５３６が生成される。
【０１２６】
このように、示された分母で２バイト・フィールドの内容を割ることによって、各々の２バイト・フィールドにより表現される分数が作られる。代替調整因子フィールドの数は、全ＣＰＵカウント・フィールドにおいて特定されるＣＰＵの数より１つ少ない。代替調整因子要素フィールドは、構成状態にあるＣＰＵの数を増加させた構成に対応する。第１の代替調整因子フィールドは、構成状態にある２つのＣＰＵを持つ構成に対応する。連続する代替調整因子フィールドの各々は、前のフィールドの数より１つ多い、構成状態にあるＣＰＵの数を持つ構成に対応する。
【０１２７】
ＳＹＳＩＢ  １５．１．２  （構成トポロジ）
ＳＹＳＩＢ  １５．１．２は、図１０に示されるフォーマットを有する。フィールドは、以下の意味を有する。
未使用：ワード０のバイト０-１、ワード２のバイト２、及びワード３の内容は、未使用であり、ゼロとして格納される。ワードＮ-１０２３の内容は未使用であり、ゼロとして格納するか又は不変とすることができる。
長さ：ワード０のバイト２-３は、１６ビット符号なし２進整数を含み、その値は、ＳＹＳＩＢ  １５．１．２全体のバイトのカウントである。トポロジ・リストのみの長さは、ワード０のバイト２−３における長さの値から１６を引くことによって求められる。図１０におけるＮは、式Ｎ＝長さ／４の値を求めることによって決定される。
Ｍａｇ１-６：  ワード及びワードのバイト０-１は、６つの１バイト・フィールドを構成し、各々のバイトの内容は、対応するネスティング・レベルにおけるコンテナ・タイプ・トポロジ・リスト・エントリ（ＴＬＥ）又はＣＰＵタイプＴＬＥの最大数を示す。ＣＰＵタイプＴＬＥは、常に、Ｍａｇ１レベルのみにおいてみられる。さらに、Ｍａｇ１の値は、Ｍａｇ２レベルのコンテナ・タイプＴＬＥによって表すことができるＣＰＵの最大数も特定する。ネスティング・レベルの値が１より大きいときには、Ｍａｇ１レベルより上の含んでいるネスティング・レベルは、コンテナ・タイプＴＬＥのみによって占有される。トポロジの動的変更によって、Ｍａｇ１レベルにおけるＴＬＥの数とＣＰＵの数とが変わることがあるが、Ｍａｇ１-６フィールドの値によって表される上限は、マシンのモデル・ファミリー内で変化しない。
【０１２８】
トポロジは、エントリの構造化リストであり、エントリは、１つ又は複数のＣＰＵを定めるか、そうでなければネスティング構造に関するものである。以下に、マグニチュード・フィールドの意味を示す。
【０１２９】
マシンの全てのＣＰＵが同等であり、全体としての中央処理複合体自体以外に収容構造が存在しないときには、ネスティング・レベルの値は１であり、Ｍａｇ１は唯一のゼロ以外のマグニチュード・フィールドであり、格納されたＣＰＵタイプＴＬＥの数はＭａｇ１の値を超えない。
【０１３０】
マシンの全てのＣＰＵが、１つのレベルの収容状態が存在するように同等のグループに分割されるときには、ネスティング・レベルの値は２であり、Ｍａｇ１及びＭａｇ２のみがゼロ以外のマグニチュード・フィールドであり、格納されるコンテナ・タイプＴＬＥの数はＭａｇ２の値を越えず、各々のコンテナ内の格納されるＣＰＵタイプＴＬＥの数はＭａｇ１の値を超えない。
【０１３１】
ネスティング・レベルの値が３-６の範囲にあるときには、Ｍａｇ３-６バイトが同様に用いられるようになる（右から左の向きに進む）。
【０１３２】
ＭＮｅｓｔ：ワード２のバイト３は、ゲスト・プログラムが残存できるようにし続けながら構成を拡張することができるトポロジのネスティング・レベルを特定する。最大のＭＮｅｓｔ値は６であり、最小は１である。ＭＮｅｓｔが１の場合には、実際のＴＬＥネスティング構造は存在せず、Ｍａｇ１はＭａｇ１-６の範囲で唯一のゼロ以外のフィールドであり、ＣＰＵタイプＴＬＥのみがトポロジ・リストに表される。ＭＮｅｓｔの値は、ワード２のバイトにおけるマグニチュード・フィールドから始まり、Ｍｎｅｓｔが１より大きいときには左に進む、ゼロ以外のマグニチュード値の数を示しており、残りのマグニチュード・フィールドはゼロとして格納される、
ＭＮｅｓｔの値は、可能な最大のネスティングである。いかなる動的構成変更も、この上限を越えない。
【０１３３】
トポロジ・リスト：図１０におけるワード４からＮ−１の範囲は、１つ又は複数のトポロジ・リスト・エントリ（ＴＬＥ）のリストを特定する。各々のＴＬＥは、８バイト・フィールド又は１６バイト・フィールドであるため、Ｎは偶数のワードであり、当然のことながら、ＴＬＥは、常にダブルワード境界で始まる。
【０１３４】
トポロジ・リスト・エントリ：トポロジ・リストにおける第１のＴＬＥは、ＭＮｅｓｔ−１に相当するネスティング・レベルで開始する。トポロジ・リスト全体は、ＳＹＳＩＢ  １５．１．２を特定するＳＴＳＩ命令の発行元の構成を表しており、最も外側のコンテナＴＬＥエントリは、リスト全体及び構成全体と重複するため、使用されない。したがって、最も高いネスティング・レベルは、単一のピア・コンテナより多いコンテナを有する。
【０１３５】
図１１及び図１２は、ＴＥＬのタイプを示しており、フィールドは以下の定義を有する。
ネスティング・レベル（ＮＬ）：ワード０のバイト０は、ＴＬＥのネスティング・レベルを特定する。
ＮＬ                      意味  
────────────────────────────────────────
０          ＴＬＥはＣＰＵタイプＴＬＥである。
１−５      ＴＬＥはコンテナ・タイプＴＬＥである。トポロジ・リスト又は親コンテナ（parentcontainer）に格納された第１のコンテナ・タイプＴＬＥは、１−２５５の範囲においてコンテナＩＤを有する。同じ親コンテナの中に兄弟コンテナ（siblingcontainer）が存在する場合には、それらのコンテナは、連続する場合もしない場合もあるコンテナＩＤの昇順に最大値２５５まで進む。
０６−ＦＦ  未使用
【０１３６】
兄弟ＴＬＥは、直近の親がＴＬＥではなくトポロジ・リストであるため、直近の親ＴＬＥのネスティング・レベルから１を引いた値又はＭＮｅｓｔから１を引いた値のいずれかと等しい、同じネスティング・レベルの値を有する。
【０１３７】
未使用，０：コンテナ・タイプＴＬＥの場合は、ワード０のバイト１-３及びワード１のバイト０-２は、未使用であり、ゼロとして格納される。ＣＰＵタイプＴＬＥの場合は、ワード０のバイト１−３及びワード１のビット０−４は、未使用であり、ゼロとして格納される。
【０１３８】
コンテナＩＤ：
コンテナ・タイプＴＬＥのワード１のバイトは、ゼロ以外の８ビット符号なし２進整数を特定し、その値は、コンテナの識別子である。ＴＬＥについてのコンテナＩＤは、同一の親コンテナ内部で一意である。
【０１３９】
専用状態（Ｄ）：
ＣＰＵタイプＴＬＥのワード１のビット５は、１のとき、ＴＬＥによって表される１つ又は複数のＣＰＵが専用であることを示す。Ｄがゼロのときには、ＴＬＥの１つ又は複数のＣＰＵは専用ではない。
【０１４０】
極性（ＰＰ）：
ＣＰＵタイプＴＬＥのワード１のビット６−７は、極性の値を特定し、極性が垂直のときには、ＴＬＥによって表される対応する１つ又は複数のＣＰＵの権利（高、中、低）とも呼ばれる垂直極性の程度を特定する。以下の値が用いられる。
ＰＰ  意味
０    ＴＬＥにより表される１つ又は複数のＣＰＵは水平極性である。
１    ＴＬＥにより表される１つ又は複数のＣＰＵは垂直極性である。権利は低である。
２    ＴＬＥにより表される１つ又は複数のＣＰＵは垂直極性である。権利は中である。
３    ＴＬＥにより表される１つ又は複数のＣＰＵは垂直極性である。権利は高である。
【０１４１】
極性は、共有ホスト・プロセッサを用いる論理及び仮想マルチ・プロセッシング構成おいて唯一重要なものであり、構成に割り当てられるリソースが構成のＣＰＵ全体にわたってどのように適用されるかに対応する。水平極性が有効であるときには、構成の各々のＣＰＵは、ほぼ同量のリソースを保証される。垂直極性が有効であるときには、構成のＣＰＵは、３つのレベルのリソース権利、すなわち、高、中、及び低に分類される。
【０１４２】
サブシステムのリセット及びＥＳＡ／３９０モードを特定するＳＩＧＰセット・アーキテクチャ・オーダの実行成功のいずれによっても、構成及びそのＣＰＵの全ては水平極性になる。直接に影響を受けるＣＰＵは、構成状態のＣＰＵである。待機状態のＣＰＵが構成されたときには、ＣＰＵは、構成の現在の極性を獲得し、その構成のトポロジ変更を認識させる。
【０１４３】
専用ＣＰＵは、水平極性又は垂直極性のいずれかである。専用ＣＰＵが垂直極性のときには、権利は常に高である。したがって、Ｄが１のときには、ＰＰは、２進数００又は２進数１１のいずれかである。
【０１４４】
ＣＰＵタイプ：
ＣＰＵタイプＴＬＥのワード１のバイト１は、８ビット符号なし２進整数を特定し、その値は、ＴＬＥによって表される１つ又は複数のＣＰＵのＣＰＵタイプである。ＣＰＵタイプの値は、一次ＣＰＵタイプ、又は、可能な二次ＣＰＵタイプのうちのいずれか１つのどちらか一方を特定する。
【０１４５】
ＣＰＵアドレス起点（CPU-Address Origin）：
ＣＰＵタイプＴＬＥのワード１のバイト２−３は、１６ビット符号なし２進整数を特定し、その値は、ＣＰＵマスクによって表されるＣＰＵの範囲における最初のＣＰＵのＣＰＵアドレスであり、その存在は、ＣＰＵマスクにおけるビット位置０の値によって表される。ＣＰＵアドレス起点は、６４で均等に分けられる。ＣＰＵアドレス起点の値は、ＣＰＵマスクにおけるビット位置０によって表されるＣＰＵ上で実行されたときにＳＴＯＲＥ  ＣＰＵ  ＡＤＤＲＥＳＳ（ＳＴＡＰ）命令によって格納される値と同一である。  
【０１４６】
ＣＰＵマスク：
ＣＰＵタイプＴＬＥのワード２-３は、各々のビット位置がＣＰＵを表す６４ビット・マスクを特定する。ＣＰＵアドレス起点フィールドの値と、ＣＰＵマスクにおけるビット位置とを加えたものは、対応するＣＰＵについてのＣＰＵアドレスと等しい。ＣＰＵマスク・ビットがゼロのときには、対応するＣＰＵはＴＬＥによって表されない。
【０１４７】
ＣＰＵは、構成に存在しないか、又は、別のＣＰＵタイプＴＬＥによって表されなければならない。ＣＰＵマスク・ビットが１のときには、対応するＣＰＵは、ＴＬＥによって特定される修飾子属性値を有し、構成のトポロジに存在しており、トポロジの他のいずれのＴＬＥにも存在しない。
【０１４８】
したがって、例えば、ＣＰＵアドレス起点の値が６４であり、ＣＰＵマスクのビット位置１５が１の場合には、ＣＰＵ７９は、構成に存在し、ＴＬＥによって特定されるＣＰＵタイプ、極性、権利、及び専用状態を有する。
【０１４９】
ＴＬＥ順序付け：  
ＣＰＵタイプＴＬＥに適用される修飾子の属性は、ＣＰＵタイプ、極性、権利、及び専用状態である。極性及び（垂直極性の場合の）権利は、４つの可能な値（水平、垂直−高、垂直−中、及び垂直−低）を持つが、単一の属性と見なされる。
【０１５０】
単一のＣＰＵ  ＴＬＥは、全てが同一の修飾子属性値を有する６４ものＣＰＵを表すのに十分である。
【０１５１】
６４より多いＣＰＵが存在するか又はＣＰＵアドレスの全範囲が単一のＣＰＵアドレス起点によってカバーされず、修飾子の属性が一定であるときには、別個の兄弟ＣＰＵ  ＴＬＥが、必要に応じて、ＣＰＵアドレス起点の昇順でＣＰＵアドレス起点ごとに格納される。これらの格納されたＴＬＥの各々は、代表される少なくとも１つのＣＰＵを有する。１つ又は複数のこうしたＣＰＵ  ＴＬＥの集合は、ＣＰＵ−ＴＬＥセットと呼ばれる。
【０１５２】
多数のＣＰＵタイプが存在するときには、別個のＣＰＵ-ＴＬＥセットが、ＣＰＵタイプの昇順でＣＰＵタイプごとに格納される。
【０１５３】
多数の極性及び権利の値が存在するときには、別個のＣＰＵ−ＴＬＥセットが、極性値及び程度の降順（垂直高、中、低、続いて水平）で極性値及び程度ごとに格納される。存在するときには、所与のＣＰＵタイプの全ての極性ＣＰＵ−ＴＬＥセットは、次のＣＰＵタイプの次のＣＰＵ−ＴＬＥセットの前に格納される。
【０１５４】
専用ＣＰＵと非専用ＣＰＵの両方が存在するときには、別個のＣＰＵ-ＴＬＥセットが、ＣＰＵごとに、専用ＣＰＵについてのＣＰＵ−ＴＬＥセットが非専用ＣＰＵについてのＣＰＵ−ＴＬＥセットの前に現れるように格納される。全てのＴＬＥは、深さ優先トラバーサル（depth-firsttraversal）を仮定して順序付けられ、大から小のソート順は以下のとおりである。
１．ＣＰＵタイプ  
ａ．最も低いＣＰＵタイプ値
ｂ．最も高いＣＰＵタイプ値
２．極性−権利
ａ．垂直高
ｂ．垂直中
ｃ．垂直低
ｄ．水平
３．専用（適用可能の場合）  
ａ．専用
ｂ．非専用
【０１５５】
ＣＰＵアドレス起点と、親コンテナ内の兄弟ＣＰＵ  ＴＬＥの修飾子属性とによる順序付けは、最高から最低に向かって並ぶ以下のリストに従って行われる。
１．最低ＣＰＵタイプ値のＣＰＵ-ＴＬＥセット，垂直高，専用
２．最低ＣＰＵタイプ値のＣＰＵ-ＴＬＥセット，垂直高，非専用
３．最低ＣＰＵタイプ値のＣＰＵ-ＴＬＥセット，垂直中，非専用
４．最低ＣＰＵタイプ値のＣＰＵ-ＴＬＥセット，垂直低，非専用
５．最低ＣＰＵタイプ値のＣＰＵ-ＴＬＥセット，水平，専用
６．最低ＣＰＵタイプ値のＣＰＵ-ＴＬＥセット，水平，非専用
７．最高ＣＰＵタイプ値のＣＰＵ-ＴＬＥセット，垂直高，専用
８．最高ＣＰＵタイプ値のＣＰＵ-ＴＬＥセット，垂直高，非専用
９．最高ＣＰＵタイプ値のＣＰＵ-ＴＬＥセット，垂直中，非専用
１０．最高ＣＰＵタイプ値のＣＰＵ-ＴＬＥセット，垂直低，非専用
１１．最高ＣＰＵタイプ値のＣＰＵ-ＴＬＥセット，水平，専用
１２．最高ＣＰＵタイプ値のＣＰＵ-ＴＬＥセット，水平，非専用
【０１５６】
他のＴＬＥルール：  
コンテナ・タイプＴＬＥは、１-５の範囲のネスティング・レベルに位置する。
ＣＰＵタイプＴＬＥは、ネスティング・レベル０に位置する。
トポロジ・リスト又は所与の親コンテナにおける兄弟コンテナ・タイプＴＬＥの数は、兄弟に対応するネスティング・レベルのマグニチュード・バイト（Ｍａｇ２-６）の値を越えない。
親コンテナの１つ又は複数のＣＰＵタイプＴＬＥによって表されるＣＰＵの数は、Ｍａｇ１マグニチュード・バイトの値を超えない。
ＴＬＥの内容は以下のとおりである。
ＴＬＥがコンテナ・タイプＴＬＥである場合には、その内容は、１つ又は複数の子ＴＬＥを含む親ＴＬＥに直接続くリストであり、各々の子ＴＥＬは、親ＴＬＥ又はトポロジ・リストの最後のネスティング・レベルより１少ないネスティング・レベルを有する。ＴＬＥがＣＰＵタイプＴＬＥの場合には、その内容は、ＣＰＵ  ＴＬＥの他のフィールドによって識別される１つ又は複数のＣＰＵである。
【０１５７】
ネスティング・レベルにおける最初のＴＬＥがＣＰＵエントリのときには、最大ネスティング・レベル０となる。
【０１５８】
プログラミング・ノート：
トポロジ・リストの可能な検査プロセスを説明する。トポロジ・リストの検査が開始される前に、現行ＴＬＥ（currnet TLE）ポインタが、トポロジ・リストの最初すなわち一番上のＴＬＥを参照するように初期化され、先行ＴＬＥ（priorTLE）ポインタがヌルに初期化され、上から下の順序にＴＬＥが検査される。
【０１５９】
トポロジ・リストの検査が進行するにつれて、現行ＴＬＥポインタは、それが示す現行ＴＬＥのサイズだけ現行ＴＬＥポインタの値を増加させることによって進む。コンテナ・タイプＴＬＥは、現行ＴＬＥポインタに８を加えることによって進む。ＣＰＵタイプＴＬＥは、現行ＴＬＥポインタに１６を加えることによって進む。現行ＴＬＥポインタを進めるプロセスは、現行ＴＬＥポインタの値が増加する前に、その値を先行ＴＬＥポインタとして保存することを含む。ＴＬＥの検査は、トポロジ・リストがＴＬＥを持たない場合には行われない。
【０１６０】
検査プロセスは、以下のステップで概説される。
１．現行ＴＬＥのネスティング・レベルがゼロであり、先行ＴＬＥのネスティング・レベルがヌル又は１である場合には、現行ＴＬＥは、１つ又は複数のＣＰＵタイプＴＬＥのグループのうち第１のＣＰＵタイプＴＬＥを表す。プログラムは、１つ又は複数のＣＰＵの新しいグループが最初に見つかったときに適したいかなるアクションも行うべきである。ステップ５に進む。
２．現行ＴＬＥのネスティング・レベルがゼロであり、先行ＴＬＥのネスティング・レベルがゼロである場合には、現行ＴＬＥは、ステップ１又は２において以前に見つかったＣＰＵの兄弟を表すＣＰＵタイプＴＬＥのグループの次のＣＰＵタイプＴＬＥを表す。プログラムは、１つ又は複数のＣＰＵの既存の兄弟グループのサイズが増加したときに適したいかなるアクションも行うべきである。ステップ５に進む。
３．現行ＴＬＥのネスティング・レベルがゼロではなく、先行ＴＬＥのネスティング・レベルがゼロの場合には、先行ＴＬＥは、１つ又は複数のＣＰＵタイプＴＬＥのグループのうち最後又は唯一のＣＰＵタイプＴＬＥを表す。プログラムは、１つ又は複数のＣＰＵの既存のグループが完了したときに適したいかなるアクションも行うべきである。ステップ５に進む。
４．ステップ５に進む。
除外することによって、これは、現行ＴＬＥのネスティング・レベルがゼロではなく、先行ＴＬＥのネスティング・レベルがゼロでない場合である。現行ＴＬＥのネスティング・レベルが先行ＴＬＥのネスティング・レベルより小さい場合には、トポロジ・リスト・トラバーサルの方向は、ＣＰＵタイプＴＬＥに向かう方向である。現行ＴＬＥのネスティング・レベルが先行ＴＬＥのネスティング・レベルより大きい場合には、トポロジ・リスト・トラバーサルの方向は、ＣＰＵタイプＴＬＥから離れる方向である。コンテナ・タイプＴＬＥは、トラバースされ、以下のいずれか、すなわち、（１）トポロジ全体における別個のグループであるＣＰＵタイプの別のグループ、又は、（２）トポロジ・リストの最後、に至る。いずれの場合においても、次のＴＬＥに進む以外には、特定の処理は必要とされない。
５．現行ＴＬＥのタイプに基づいて、次のＴＬＥ位置に進む。進められた現行ＴＬＥポインタが、トポロジ・リストの最後に相当する場合には、
ａ．いずれのタイプのＴＬＥもそれ以上存在しない。
ｂ．先行ＴＬＥのネスティング・レベルがゼロの場合には、プログラムは、１つ又は複数のＣＰＵの既存のグループが完了したときに適したいかなるアクションも行うべきである。
ｃ．検査は完了する。
そうでなければ、ステップ１に進む。
【０１６１】
例示的な実装形態である図１９において、コンピュータ・システムは、２つの物理フレーム（フレーム１及びフレーム２）を含む。各々のフレームは、２つのロジック・ボード（ボード１及びボード２）と、主ストレージ（メモリ）と、周辺装置及びネットワークと通信するためのＩ／Ｏアダプタ（Ｉ／Ｏチャネル１及びＩ／Ｏチャネル２）とを含む。各々のボードは、２つのマルチチップ・モジュール（Ｍｏｄ１、Ｍｏｄ２、Ｍｏｄ３及びＭｏｄ４）を含む。各々のマルチチップ・モジュールは、２つのプロセッサ  （ＣＰＵ１、ＣＰＵ２、ＣＰＵ３、ＣＰＵ４、ＣＰＵ５、ＣＰＵ６  ＣＰＵ７及びＣＰＵ８）を含む。各々のモジュールは、２次キャッシュ（キャッシュ１、キャッシュ２、キャッシュ３及びキャッシュ４）も含む。各々のプロセッサ（中央処理ユニット又はＣＰＵ）は、１次キャッシュ及びトランスレーション・ルックアサイド・バッファ（ＴＬＢ）を含む。ＴＬＢは、動的アドレス変換の際にアドレス変換情報を格納する。
【０１６２】
本発明によれば、図２０、２１及び２２において、コンピュータ・システムのコンポーネントは、近接性に応じて「コンテナ」に割り当てられる。各々のモジュールは、各々のモジュールのＣＰＵが互いに最も近接性が高いため、最も内側のコンテナ６、７、８及び９に割り当てられる。モジュールはボード上にパッケージされるため、それぞれのボードのモジュールは、次のレベルのコンテナ４及び５に割り当てられる。次に近接性が高いグループは、フレームである。フレームのボードは、フレームを表すコンテナに割り当てられる（コンテナ２及び３）。全体のシステムは、コンテナ１によって表される。
【０１６３】
ＣＰＵ１及びＣＰＵ２のような同一のモジュール上の２つのＣＰＵは、互いに最も近いトポロジ関係又は距離であり、いずれも１つのコンテナ（コンテナ６）に属し、それらのＣＰＵのみが関与するときにはコンテナ境界は交差しないことが理解できる。しかしながら、ＣＰＵ１及びＣＰＵ８が関与する場合には、交差する４つのコンテナ境界が存在する。コンテナ６のＣＰＵ１は、コンテナ４、５及び９によってＣＰＵ８から隔てられる。従って、コンテナ構造を知ることで、ユーザは、システムのトポロジの考え方を得ることができる。
【０１６４】
当然のことながら、論理パーティション化されたシステムにおいては、ＣＰＵは、前述のようにオペレーティング・システム間で共有されることがある。したがって、論理パーティションが３つの論理ＣＰＵを割り当てられ、各々の論理ＣＰＵが３つの実ＣＰＵの各々の２０％に割り当てられた場合には、ＣＰＵとＣＰＵリソース（例えば、キャッシュ及びメモリ）との間の通信が最高の性能を発揮するように３つの実ＣＰＵが互いに最も接近している場合に、パーティションが最高の能力を発揮する。この例においては、パーティションにおけるＣＰＵ１及びＣＰＵ２は、２つのＣＰＵがＣＰＵ１及びＣＰＵ８である場合と比べて、キャッシュ１におけるキャッシュ・ラインのスラッシングがより少なくなる。
【０１６５】
この例においては、ＣＰＵ１、ＣＰＵ２及びＣＰＵ３を含むパーティションが生成される。パーティションにおいて動作するプログラムはＳＴＳＩ命令を発行し、ＳＹＳＩＢ  １５．１．２（図１０）テーブルがプログラムに戻される。この場合において、パーティションは、コンテナ６及びコンテナ７を含み、従って、２つのレベルのネスティングが存在する。ＳＹＳＩＢテーブルの値は、以下のとおりである。
【０１６６】
ＭＮｅｓｔフィールドは、トポロジがこのモデルについての絶対最大ネスティングである４レベルのネスティングを含むことを示す４に設定され、ＳＴＳＩを発行するゲスト構成へのリソース割り当てと、システムの他のゲスト構成へのリソースの割り当てられ方とに応じて、いずれかの任意のトポロジ・リスト上で完全に利用される場合もあるし、利用されない場合もある。
【０１６７】
Ｍａｇ１フィールドは、２つのＣＰＵが最も基本的な第１レベルで利用可能であることを示す２に設定される。
Ｍａｇ２フィールドは、２つの第２レベル（モジュール）のコンテナが利用可能であることを示す２に設定される。
Ｍａｇ３フィールドは、２つの第３レベル（ボード）が利用可能であることを示す２に設定される。
Ｍａｇ４フィールドは、２つの第４レベル（フレーム）が利用可能であることを示す２に設定される。
【０１６８】
この例においては、同一のボード上の２つのモジュールに３つのＣＰＵが収容されており、従って、以下の４つのＴＬＥエントリが与えられる。
１．ＮＬ＝１；ＣｔｎｒＩＤ＝１（コンテナ６）
２．ＮＬ＝０；ＣＰＵタイプ＝１（ＣＰＵのタイプ）；ＣＰＵ  Ａｄｄｒ  Ｏｒｉｇｉｎ  ＝０；ＣＰＵ  Ｍａｓｋ  ０１１０.......００（アドレス指定されたＣＰＵのうちのＣＰＵ１及びＣＰＵ２）
３．ＮＬ＝１；ＣｔｎｒＩＤ＝２（コンテナ７）
４．ＮＬ＝０；ＣＰＵタイプ＝１（ＣＰＵのタイプ）；ＣＰＵ  Ａｄｄｒ  Ｏｒｉｇｉｎ  ＝４；ＣＰＵ  Ｍａｓｋ  ０００１０.......００（アドレス指定されたＣＰＵのうちのＣＰＵ３）
このように、プログラムは、コンテナ及び戻されたＣＰＵ  ＴＬＥに基づくトポロジの表現を有する
【０１６９】
ＰＥＲＦＯＲＭ  ＴＯＰＯＬＯＧＹ  ＦＵＮＣＴＩＯＮ（ＰＴＦ）
図１３を参照すると、ＰＥＲＦＯＲＭ  ＴＯＰＯＬＯＧＹ  ＦＵＮＣＴＩＯＮ（ＰＴＦ）命令は、好ましくは、オペコードと、第１オペランドを識別するレジスタ・フィールド  Ｒ１とを含む。Ｒ１によって識別される汎用レジスタの内容は、図１４に示されるように、ビット位置５６-６３における機能コードを特定する。
【０１７０】
定義される機能コードは以下のとおりである。
ＦＣ      意味
０        水平極性を要求する
１        垂直極性を要求する
２        トポロジ変更の状態をチェックする
０-２５５の範囲において定義されていない機能コードは、将来の拡張のために未使用とされる。
【０１７１】
終了時に、条件コードが２に設定された場合には、汎用レジスタＲ１のビット位置４８−５５に理由コードが格納される。命令のビット１６−２３及び２８−３１は無視される。
【０１７２】
機能コード０の働き：
実行は、以下の理由及び（理由コード）のいずれかについての条件コードを伴って終了する。
特定される理由なし（０）
要求している構成はすでに水平極性である（１）
トポロジ変更がすでに進行中である（２）
それ以外の場合には、構成における全てのＣＰＵが水平極性に置かれるようにプロセスが開始される。
プロセスの終了は、命令の実行とは非同期であり、命令の実行が終了したときに終了する場合もあるし、終了しない場合もある。
【０１７３】
結果として得られる条件コード：
０    トポロジ変更の開始
１      −
２    要求拒否
３      −
【０１７４】
機能コード１の働き：
実行は、以下の理由及び（理由コード）のいずれかについての条件コード２を伴って終了する。
特定される理由なし（０）  
要求している構成はすでに垂直極性である（１）
トポロジ変更がすでに進行中である（２）
それ以外の場合には、構成における全てのＣＰＵが垂直極性に置かれるようにプロセスが開始される。プロセスの終了は、命令の実行とは非同期であり、命令の実行が終了したときに終了する場合もあるし、終了しない場合もある。
【０１７５】
結果として得られる条件コード：
０ トポロジ変更の開始
１      −
２    要求拒否
３      −
【０１７６】
機能コード２の働き：
トポロジ変更報告保留条件（topology-change-report-pendingcondition）がチェックされ、命令は、条件コードの組を伴って終了する。
【０１７７】
結果として得られる条件コード：  
０  トポロジ変更報告非保留トポロジ
１  変更報告保留
２    -  
３    -  
【０１７８】
トポロジ変更は、ＳＹＳＩＢ  １５．１．２の内容がトポロジ変更前のＳＹＳＩＢ  １５．１．２の内容とは異なるようないずれかの変更である。
【０１７９】
トポロジ変更報告保留条件は、トポロジ変更のプロセスが終了したときに生成される。トポロジ変更報告保留条件は、以下のいずれかが行われたときに、その構成についてクリアされる。
ＰＥＲＦＯＲＭ  ＴＯＰＯＬＯＧＹ  ＦＵＮＣＴＩＯＮの実行が、条件コード１を伴って終了する機能コード２を特定する。
ＳＹＳＩＢ  １５．１．２についてのＳＴＯＲＥ  ＳＹＳＴＥＭ  ＩＮＦＯＲＭＡＴＩＯＮの実行が、構成におけるいずれかのＣＰＵによって成功する。
サブシステムのリセットが行われる。
【０１８０】
特別条件：
汎用レジスタＲ１のビット位置０−５５がゼロの場合には、指定例外が認識される。定義されていない機能コードが特定された場合には、指定例外が認識される。
【０１８１】
プログラム例外：    
動作（構成トポロジ・ファシリティがインストールされていない）
特権的動作
仕様
【０１８２】
メインフレーム例の環境：
ハイエンド・サーバ・アーキテクチャが物理プロセッサの数を増やし、プロセッサ速度が上がり続けるにつれて、大きなマシンを構築するのに必要なプロセッサの「ネスト」は、本来はよりノード的である、より小さな構成単位から作られ続ける。例えば、ｚ９９０又はｚ９マシンのＬ２キャッシュは、完全なキャッシュ・コヒーレントである一方、完全実装モデル（fully populated model）は、実際には、単一のＬ２キャッシュに見えるようにファブリックによって接続された４つの（４）別個のＬ２を有する。キャッシュ・ミスを解決するためにノードの使用を停止する不利益は増大し続ける。例えば、リモートＬ２におけるＬ１ミスを解決することは、ローカルＬ２におけるＬ１ミスを解決することに比べて、より費用がかかる。通常はチップ上のＣＰのプライベートにおいてミスが発生すると、Ｌ１キャッシュで開始するのは費用がかかり、わざわざメモリまで行かなけらばならないことは、永遠にも思えることがある。メモリの速度及びメモリへの接続の増加は、プロセッサ速度の増加に対応しない。全てを近づけて「チップ上」などに一緒にパックしよう試みることが求められているが、電力消費及び冷却の問題がこれに逆行する。
【０１８３】
ｚ９９０の導入によって、ＬＰＡＲは、マシン・トポロジを認識し、物理リソースに対する論理パーティションＣＰ及びストレージ・リソースの割り当てを最適化し始めた。論理パーティション・リソースの割り当てを動的に再最適化するための能力の強化は、同時ブック・リペアのサポートにおいて、ｚ９  ＧＡ-１で最初に導入された。
【０１８４】
本明細書中で説明される新たなサポートは、ＣＥＣブック構造におけるＣＰＵ配置に関するアフィニティ・ディスパッチングを提供するために、論理パーティション・トポロジとして示されるマシンのトポロジをｚＳｅｒｉｅｓ  ＯＳ  ソフトウェアに認識させる真の始まりに対応する。
【０１８５】
現在は水平極性である共有論理パーティションをｚＳｅｒｉｅｓのＬＰＡＲが管理する方法を考えることができる。すなわち、論理パーティションについての処理の重みは、論理パーティションにおける全てのオンライン論理ＣＰ間で等しく分けられる。このサポートは、論理パーティションの共有論理ＣＰを管理するための、垂直極性と呼ばれる新たな任意の極性の形態を導入する。
【０１８６】
論理パーティションが垂直モードで稼働することを選択したときには、ソフトウェアは、このことをｚＳｅｒｉｅｓのハイパーバイザに知らせる新たな命令を発行し、ハイパーバイザは、論理パーティションをディスパッチする方法を変えることになる。
【０１８７】
垂直論理パーティションの構成に応じて、論理プロセッサは、高極性、中極性又は低極性を有する。極性は、垂直論理プロセッサが権利を有する物理プロセッサ・シェアの量を記述する。顧客は、マシンにおける各々の論理パーティションが権利を有する物理プロセッサ・サイクルの量を効率的に定める、論理パーティションについての重みを決める。
【０１８８】
極性は、論理パーティションに構成される論理プロセッサの数に対するその論理パーティションの現在の重みの比によって評価される。高極性プロセッサは、１００％に近いＣＰＵシェアを有する。中極性プロセッサは０より大きいシェアから９９％までのシェアを有し、低極性プロセッサは０％（又はそれに非常に近い）シェアを有する。高極性の論理ＣＰは、専用ＣＰに極めて類似した状態で稼働するように物理プロセッサを割り当てられることになるが、共有される高極性ＣＰは、依然として物理リソースを放棄し、他の共有ＣＰがその余剰サイクルを用いることができるようにする。ソフトウェアが、論理トポロジを理解し、作業キューのために高極性の論理ＣＰを利用しようとすることが、ここでの鍵になる。
【０１８９】
例えば、顧客が、各々が２つの論理プロセッサを有し、各々が重み５０を有する２つの論理パーティションを持つ３ウェイ・プロセッサを構成する。第１の論理パーティションは、自らを垂直であると定めた場合には、１つの高極性論理ＣＰと１つの中極性論理ＣＰとを有するものとすることができる。
【０１９０】
論理パーティションが垂直モードで稼働することを選択したときには、論理パーティション全体が垂直モードで稼働することに留意されたい。これは、ｚＡＡＰ（ＩＦＡ）及び／又はｚＩＩＰのような、その２次プロセッサの全てを含む。各々のプロセッサ・タイプについて所望のレベルの垂直処理を達成するこれらの理論パーティションのために、全てのプロセッサ・タイプに対して重みを定めることは、顧客が負担することである。
【０１９１】
論理パーティション・トポロジ・サポート
・論理パーティション・ノード・トポロジについての基盤を確立する
・有効なトポロジを提供するのに必要な既存の水平パーティションについて、ＬＰＡＲのノード割り当てアルゴリズムに必要ないずれかの変更を行う
・論理パーティション・ノード・トポロジを論理パーティションに与えるＳＴＯＲＥ  ＳＹＳＴＥＭ  ＩＮＦＯＲＭＡＴＩＯＮ（ＳＴＳＩ）命令のための新たな構成トポロジ情報ブロックについて命令シミュレーションを行う
・トポロジ変更が必要かどうかを判断するために、物理又は論理構成の変更を検査する。これらは以下のときに行われる。
・物理ＣＰが構成に加えらるか又は構成から除かれる
・論理ＣＰが構成に加えらるか又は構成から除かれる
・論理パーティションがアクティブにされる
・論理パーティションが非アクティブにされる
・論理パーティションの重みがＨＭＣ／ＳＥから変更される
・論理パーティションの重みを変更するソフトウェアが起動する
・論理パーティションがリセットされる（水平に切り替わる）
・論理パーティションがＥＳＡ／３９０モードに切り替わる（水平に切り替わる）
【０１９２】
環境のアルゴリズム：
トポロジは、論理パーティションが最初にアクティブにされたときに論理パーティションに割り当てられなければならず、論理パーティションに割り当てられたノード・トポロジのいずれかの変更は、論理パーティションに通知されなければならない。ノード・トポロジの結果は、構成の変更が行われたときに新たなＳＴＳＩ処理並びに制限処理によるより簡単なクエリをできるだけ可能にするように、適当な新しいデータ構造に保持されなければならない。この新たな構造は、トポロジの矛盾するビューを論理パーティションにもたらすことなく、ステップごとに必要なシリアライゼーションを伴う多数のステップにおいて終了するトポロジ変更処理も可能にする。
【０１９３】
トポロジ割り当て
どのように論理トポロジが選択されるかということは、本開示にとって重要ではない。各々のタイプの論理プロセッサがいくつ必要とされるか、及び、それらがどのノード又はブックに割り当てられる必要があるかという判断が行われなければならないと言うにとどめておく。垂直モード・パーティションの場合には、これは、プロセッサ・タイプごとの垂直高プロセッサ、垂直中プロセッサ、及び垂直低プロセッサのカウントを意味する。
【０１９４】
論理ＣＰへの極性値の割り当て
上述のカウントが求められると、ＣＰタイプのうち最も低いオンライン論理ＣＰアドレスから最も高いものに向かって、（１）全て垂直高、（２）全て垂直中、及び（３）全て垂直低の順序で、垂直割り当てが行われる。これが行われる順序は任意であり、他の選択順序も可能である。
【０１９５】
ＳＴＯＲＥ  ＳＹＳＴＥＭ  ＩＮＦＯＲＭＡＴＩＯＮ命令マッピング
１５．１．２応答をマッピングするために３つの構造を追加する。
１．ＳＴＳＩ  １５．１．２についてのマッピング、トポロジをマッピングする応答ブロック
Dcl  1    syibk1512                    char(4096)            based(*),
3      *                            char(2),
3      syibk1512_length             fixed(16),            length
3      syibk1512_mag6               fixed(8),          6th level nest
3      syibk1512_mag5               fixed(8),          5th
3      syibk1512_mag4               fixed(8),          4th
3      syibk1512_mag3               fixed(8),          3rd
3      syibk1512_mag2               fixed(8),          2nd,nodes
3      syibk1512_mag1               fixed(8),          1st,cpus
3      *                            char(1),
3      syibk1512_mnest              fixed(8),          nestinglevel
3      *                            char(4),
3      syibk1512_topology_list      char(0);           topology list
【０１９６】
２．ＳＴＳＩ  １５．１．２のためのコンテナ・タイプＴＬＥについてのマッピング
Dcl  1    syibk_vcm_container                  char(8)            based(*),
3      syibknl                          fixed(8),      nestinglevel
3      *                                char(3),
3      *                                char(1),
3      *                                char(2),
3      syibk_container_id              fixed(8);       node id
【０１９７】
３．ＳＴＳＩ  １５．１．２のためのＣＰＵタイプＴＬＥについてのマッピング
Dcl  1    syibk_vcm_cpu                      char(16)            based(*),
3      syibknl2                    fixed(8),          nestinglevel
3      *                           char(3),
3      syibk_ded_polarization      bit(8),            vcmbyte
5      *                           bit(5),
5      syibk_dedicated             bit(1),            dedicatedbit
5      syibk_polarization          bit(2),            polarization bits
3      syibk_cputype               fixed(8),          cputype 
3      syibk_cpuaddrorg            fixed(16),         address origin
3      syibk_cpumask               bit(64);           cpu mask entry
【０１９８】
ＴＯＰＢＫ−パーティション・トポロジ
論理パーティションのトポロジのサマリは、ノード割り当てルーチンによってこのブロックにおいて新しい状態に保たれる。このブロック内のデータは、ＳＴＳＩ処理が、プログラムへの論理パーティション・トポロジ応答を生成するために構造全体の１つのパスを作り、アーキテクチャによって要求されるとおりにＣＰＵエントリの順序及び分離を保存するように、順序付けられる。
【０１９９】
このブロックは、エントリあたり６４ビットのＣＰＵマスクを持つ３次元アレイ（ノード、ＣＰタイプ、極性分類）からなる。
【０２００】
トポロジを更新する際に用いるために、第２の作業領域であるＴＯＰ＿ＷＯＲＫＩＮＧが含まれる。
DECLARE 
1 TOPBK BASED BDY(DWORD), 
3 TOP_CURRENT , 
5TOPCPUMASK(1:MAXNODE, /* １−４ノードの各々
*/
0:CPUTMAX, /* ＣＰタイプのインデックス
*/
0:3) /* 論理パーティションが垂直のときの４つの可能なトポロジ分類。パーティションが水平のときには２つの分類のみである。
*/
BIT(64), /* この分類に入る論理ＣＰＵのマスク
*/
3 TOP_WORKING CHAR(LENGTH(TOP_CURRENT)); /* 新たなトポロジを構築するための作業領域
*/
【０２０１】
ＴＯ３ＰＯ  −  パーティション・トポロジ変換
これらの「一定の」変換テーブルは、（ＴＯＰＢＫによってマッピングされた）トポロジを構築するノード割り当てルーチンと、トポロジを読み出すＳＴＳＩ処理とによって、用いられる。
/****************************/
/* ＳＴＳＩ変換アレイ: */
/****************************/
DECLARE
1 TOPVERT(0:3) BIT(8) /* 垂直パーティションの場合には、分類インデックスを、ＳＴＳＩデータにおけるＣＰのこのグループについて戻されるアーキテクチャ化されたＤ（専用状態）及びＰＰ（極性）に変換する
*/
STATICINIT('00000'b||'1'b||PPVH, /* 分類０:専用、垂直高*/
'00000'b||'0'b||PPVH, /*分類１:共有、垂直高*/
'00000'b||'0'b||PPVM, /*分類２:共有、垂直中*/
'00000'b||'0'b||PPVL), /*分類２:共有、垂直低 */
3 * BIT(5), /* 不使用、ビット・アレイのためのバイト整列を要する*/
3 TOPDPP BIT(3),/* 用いる実際のＤ、ＰＰ値*/
1 TOPHOR(0:1) BIT(8) /* 水平パーティションの場合には、分類インデックスを、ＳＴＳＩデータにおけるＣＰのこのグループについて戻されるアーキテクチャ化されたＤ（専用状態）及びＰＰ（極性）に変換する。水平極性の場合は最初の２つの分類のみを用いることができることに留意。
*/
STATICINIT('00000'b||'1'b||PPH, /*分類０:専用、水平  */
'00000'b||'0'b||PPH), /*分類１:共有、水平 */
3 * BIT(5), /*不使用、ビット・アレイのためのバイト整列を要する*/
3 TOPDPP BIT(3), /*用いる実際のＤ、ＰＰ値*/
【０２０２】
/*************************/
/* NDI変換アレイ */
/*************************/
1 TOPDPP2CLASS(0:7) FIXED /* トポロジ情報を生成するためにノード割り当てルーチンによって用いられる。ＬＰＤＰＰは、論理ＣＰがどの分類インデックスを用いるべきか判断するために、このアレイ内のインデックスとして用いられる。この１つのアレイは、水平パーティション及び垂直パーティションの両方に用いられる。*/
STATIC INIT(1, /* 共有、水平*/
3, /* 共有、垂直低*/
2, /* 共有、垂直中*/
1, /* 共有、垂直高*/
0, /* 専用、水平*/
0, /* 不適用*/
0, /* 不適用*/
0), /* 専用、垂直高*/
3 * CHAR(4); /* 強制的に非単純項目になる */
【０２０３】
論理プロセッサ・ブロック：
各々の論理プロセッサについてパーティション極性の２ビット符号化を追跡して、その極性を反映することができる。専用の１ビット表示を用いてこれをグループ分けすることによって、論理プロセッサについて３ビットの完全な極性図が可能になる。
・・・・・
3 LPDPP BIT(3), /*極性,専用状態を含む */
4 LPDED BIT(1), /* ＝１、論理ＣＰは専用である*/ 
4 LPPP BIT(2), /* プロセッサ極性 */
・・・・・
/* プロセッサ極性のための符号化 */
PPH BIT(2) CONSTANT(‘00’B), /* 水平極性 */
PPVLBIT(2) CONSTANT(‘01’B), /* 垂直極性−低 */
PPVMBIT(2) CONSTANT(‘10’B), /* 垂直極性−中 */
PPVHBIT(2) CONSTANT(‘11’B), /* 垂直極性−高 */
【０２０４】
トポロジ・ブロックを更新
ＣＰＵトポロジ・マスクのローカル・コピーをクリア
ＤＯ  ターゲット論理パーティションにおける全ての論理ＣＰについて
ＩＦ  論理ＣＰがオンライン  ＴＨＥＮ
ＤＯ
極性インデックス  ＝  極性インデックス・アレイへの極性値の変換に応じて論理ＣＰ極性値に適した極性インデックス
ＣＰＵトポロジ・マスク（ＣＰＵアドレス、ノード、ＣＰタイプ、極性インデックス）のローカル・コピー  ＝  ＯＮ
ＥＮＤ
ＥＮＤ
ＩＦ  新たなトポロジ・ブロック  ＮＯＴ＝  パーティションについてのカレント・トポロジ・ブロック  ＴＨＥＮ
トポロジ変更報告を設定し、新たなトポロジをカレントにコピー
【０２０５】
ＳＴＳＩ  １５．１．２についての命令シミュレーション
ＳＴＳＩ  １５．１．２応答ブロックのためのｓｙｉｂｋマッピング内に、コンテナ・タイプＴＬＥ及びＣＰＵタイプＴＬＥが加えられた。原則的として、データは、最も低いレベルにおけるエントリがＣＰＵタイプＴＬＥである１つ又は複数のコンテナで戻されなければならない。これは、論理パーティションのリソースがどのように小分割又は割り当てされたかに基づいて、アレイのうちの１つのアレイとして考えることができる。好ましい実施形態の場合には、各々のコンテナは、原則的にネスティング・レベル１を有するノードであり、各々がネスティング・レベル０を有する１つ又は複数のＣＰＵタイプＴＬＥを含む。ＣＰＵ  ＴＬＥは、ＣＰＵタイプによって順序付けられ、次にそれらの分類によって順序付けられる。垂直パーティションは４つの分類（垂直専用、垂直高共有、垂直中共有、及び、垂直小共有）を有し、水平パーティションは２つの分類（専用及び共有）を有する。
【０２０６】
以下のステップは、全ての事前チェックが命令入力の妥当性を検証した後でＳＴＳＩ  １５．１．２がどのように処理されるかについて使用事例を示す。
現在の実施形態の場合には、最大４つのノード及び６４のプロセッサが仮定される。
【０２０７】
ｔｏｐｂｋの走査を開始し、カレント・ノード値（current node value）と呼ばれるローカル変数に、現時点のノード・インデックスの値を保持する。これが必要とされる理由は、ノード内の６４ビット・マスクの全てがゼロの場合には、そのノードについてコンテナ・タイプＴＬＥを生成する必要がないからである。
【０２０８】
ノード内で最初のゼロ以外のエントリが見つかると、最初にそのノードについてのコンテナ・タイプＴＬＥエントリを生成する。コンテナＴＬＥエントリ内では、ネスティング値は１であり、４８の未使用ビットがそれに続く。最後のビットは、処理中のカレント・ノードのｔｏｐｂｋにおけるインデックスであるノードＩＤである。コンテナ・タイプＴＬＥを生成した後、ゼロ以外のビット・マスクを持つエントリについてのＣＰＵタイプＴＬＥを生成する。このエントリ内では、ネスティング・レベルは０であり、２４の未使用ビットがそれに続く。次の８ビットは、専用ビット及び極性ビットを含む。パーティションが現時点で垂直の場合には、極性値及び専用ビットに以下のように入れられる。
ｔｏｐｂｋにおける分類０は垂直専用であり、ＰＰに１１を格納し、Ｄに１を格納する
ｔｏｐｂｋにおける分類１は垂直高共有であり、ＰＰに１１を格納し、Ｄに０を格納する
ｔｏｐｂｋにおける分類２は垂直中共有であり、ＰＰに１０を格納し、Ｄに０を格納する
ｔｏｐｂｋにおける分類３は垂直低共有であり、ＰＰに０１を格納し、Ｄに０を格納する
【０２０９】
水平パーティションの場合には、現時点で分類０及び１のみが有効である。専用ビット及び極性値に以下のように入れられる。
ｔｏｐｂｋにおける分類０は水平専用であり、ＰＰに００を格納し、Ｄに１を格納する
ｔｏｐｂｋにおける分類１は水平共有であり、ＰＰに００を格納し、Ｄに０を格納する
【０２１０】
ＣＰＵ  ＴＬＥに入れられる次の値であるＣＰＵタイプは、ｔｏｐｂｋにおけるＴＯＰＣＰＵＭＡＳＫ内の第２のアレイのインデックスである。（０−ＧＰ、２−ＩＦＡ、３−ＩＦＬ、４−ＩＧＦ、１は現時点で未使用である。）
１．次の値はＣＰＵアドレス起点である。この値は、６４が現在の実施形態において利用可能なＣＰＵの最大数であるので、明示的に０として格納される。
２．ｓｙｉｂｋ＿ｖｃｍ＿ｃｐｕにおける最後の値は、ＴＯＰＣＰＵＭＡＳＫアレイのネストされたアレイに格納されるゼロではない６４ビット・マスクである、ＣＰＵマスクである。
３．ノード内の最初のゼロではないビット・マスクに続く各々のゼロ以外のマスクについて、別個のＣＰＵタイプＴＬＥエントリを生成し、このプロセスを４つのノード全てについて繰り返す。
【０２１１】
一実施形態においては、ＰＴＦ命令は、極性の変化以外のトポロジの特定の変化を要求することができ、そのような変化としては、より多くのゲスト・プロセッサをゲスト構成に加える要求、ゲスト構成におけるゲスト・プロセッサを減らす要求、１つ又は複数の専用プロセッサをゲスト構成に加える又はゲスト構成から除く要求、特定のゲスト・プロセッサの特定の極性の要求、コプロセッサをゲスト構成に加える又はゲスト構成から除く要求、トポロジの一時的な変化の要求、予定された時間の間のトポロジの変化の要求などが挙げられる（しかし、これらに限定されない）。
【０２１２】
さらに、本発明は、プロセッサのトポロジに限定されるものではない。本発明の基礎的なコンポーネントが、例えば、コプロセッサ、キャッシュ、ＴＬＢ、内部データ・パス、データ・パス・バッファ、分散メモリ、及びＩ／Ｏ通信アダプタを含むがこれらに限定されないＣＰＵ以外のコンポーネントに適用できる利点があることが認識できる。
【図１】
2011509478.tif 000003
【図２】
2011509478.tif 000004
【図３】
2011509478.tif 000005
【図４】
2011509478.tif 000006
【図５】
2011509478.tif 000007
【図６】
2011509478.tif 000008
【図７】
2011509478.tif 000009
【図８】
2011509478.tif 000010
【図９】
2011509478.tif 000011
【図１０】
2011509478.tif 000012
【図１１】
2011509478.tif 000013
【図１２】
2011509478.tif 000014
【図１３】
2011509478.tif 000015
【図１４】
2011509478.tif 000016
【図１５】
2011509478.tif 000017
【図１６】
2011509478.tif 000018
【図１７】
2011509478.tif 000019
【図１８】
2011509478.tif 000020
【図１９】
2011509478.tif 000021
【図２０】
2011509478.tif 000022
【図２１】
2011509478.tif 000023
【図２２】
2011509478.tif 000024
【図２３】
2011509478.tif 000025
【図２４】
2011509478.tif 000026
【手続補正書】
【提出日】平成22年9月13日(2010.9.13)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
ホスト・プロセッサ（ホストＣＰＵ）を含む論理パーティション化されたホスト・コンピュータ・システムにおいて、ゲスト構成の複数のゲスト・プロセッサ(ゲストＣＰＵ)のトポロジの構成変化のための方法であって、
ゲスト構成のゲスト・プロセッサが、コンピュータ・アーキテクチャのために定められたｐｅｒｆｏｒｍ  ｔｏｐｏｌｏｇｙ  ｆｕｎｃｔｉｏｎ命令をフェッチするステップであって、前記ｐｅｒｆｏｒｍ  ｔｏｐｏｌｏｇｙ  ｆｕｎｃｔｉｏｎ命令は、実施される機能を特定するオペコード・フィールドを含む、当該ステップと、
前記ｐｅｒｆｏｒｍ  ｔｏｐｏｌｏｇｙ  ｆｕｎｃｔｉｏｎ命令の実施される機能を実行するステップであって、
前記ゲスト構成における前記ゲスト・プロセッサの前記トポロジの前記構成の特定の変化を要求することと、
前記要求された特定の変化に応答して、前記特定の変化に従って前記ゲスト構成の前記ゲスト・プロセッサの前記トポロジを変化させることと、
前記要求されたトポロジ変化が進行中であることに応答して、トポロジ変化が開始されたことを示す条件コードを設定することと、
前記要求が拒絶されたことに応答して、前記要求されたトポロジ変化が拒絶されたことを示す条件コードを設定することと、
を含む当該ステップと、
を含む方法。
【請求項２】
前記ｐｅｒｆｏｒｍ  ｔｏｐｏｌｏｇｙ  ｆｕｎｃｔｉｏｎ命令は、レジスタ・フィールドをさらに含み、
前記ｐｅｒｆｏｒｍ  ｔｏｐｏｌｏｇｙ  ｆｕｎｃｔｉｏｎ命令を実行する前記ステップは、
前記レジスタ・フィールドによって特定されるレジスタの機能コード・フィールドから、水平極性指示子、垂直極性指示子又はトポロジ変化チェック指示子のうちのいずれか１つから成る機能コード・フィールド値を取得することと、
水平極性を特定する命令に応答して、コンピュータ構成の前記ゲスト・プロセッサの水平極性を開始し、それにより結果としての更新されたトポロジを作ることと、
垂直極性を特定する命令に応答して、コンピュータ構成の前記ゲスト・プロセッサの垂直極性を開始し、それにより結果としての更新されたトポロジを作ることと、
結果コード値を前記レジスタの結果フィールドに設定することと、
をさらに含む、請求項１に記載の方法。
【請求項３】
開始された極性要求が実行の完了とは非同期であり、トポロジ変化のチェックを特定する前記機能コード・フィールド値に応答して、前記トポロジ変化の完了状態をチェックするステップをさらに含む、請求項２に記載の方法。
【請求項４】
前記実行は、
トポロジ変化報告が保留中ではないことに応答して、トポロジ変化報告が保留中ではないことを示す条件コードを設定するステップと、
トポロジ変化報告が保留中であることに応答して、トポロジ変化報告が保留中であることを示す条件コードを設定するステップと、
をさらに含む、請求項３に記載の方法。
【請求項５】
前記水平極性は、実質的に均等なホスト・プロセッサ・リソースを各々のゲスト・プロセッサ・リソースに与えることを含み、前記垂直極性は、前記ゲスト・プロセッサの少なくとも１つのゲスト・プロセッサに、前記ゲスト・プロセッサの少なくとも別のゲスト・プロセッサより実質的に多くのホスト・プロセッサ・リソースを与えることを含む、請求項２に記載の方法。
【請求項６】
前記結果コード値は、
前記構成が実行前に前記機能コードによって特定される極性を有していることに応答して、前記構成が前記機能コードに従ってすでに極性を有することを示す結果コード値と、
前記構成が実行前に未完成の極性を処理していることに応答して、トポロジ変化がすでに処理中であることを示す結果コード値と、
から成る理由コードを特定する、請求項２に記載の方法。
【請求項７】
コンピュータ・アーキテクチャのために定められた前記ｐｅｒｆｏｒｍ  ｔｏｐｏｌｏｇｙ  ｆｕｎｃｔｉｏｎ命令は、代替コンピュータ・アーキテクチャの中央処理ユニットによってフェッチ及び実行され、
前記ｐｅｒｆｏｒｍ  ｔｏｐｏｌｏｇｙ  ｆｕｎｃｔｉｏｎ命令の動作をエミュレートする所定のソフトウエア・ルーチンを識別するために、前記ｐｅｒｆｏｒｍ  ｔｏｐｏｌｏｇｙ  ｆｕｎｃｔｉｏｎ命令を翻訳するステップをさらに含み、
前記ｐｅｒｆｏｒｍ  ｔｏｐｏｌｏｇｙ  ｆｕｎｃｔｉｏｎ命令を実行する前記ステップは、前記ｐｅｒｆｏｒｍ  ｔｏｐｏｌｏｇｙ  ｆｕｎｃｔｉｏｎ命令を実行するための方法のステップを実施する前記所定のソフトウエア・ルーチンを実行するステップを含む、
請求項２に記載の方法。
【請求項８】
ホスト・プロセッサ(ホストＣＰＵ)を含む論理パーティション化されたホスト・コンピュータ・システムにおいてゲスト構成の複数のゲスト・プロセッサ(ゲストＣＰＵ)のトポロジの構成変化のためのコンピュータ・プログラム製品であって、処理回路によって読み取り可能な、方法を実施するために前記処理回路によって実行される命令を格納する有形のストレージ媒体を含み、前記方法は、
ゲスト構成のゲスト・プロセッサが、コンピュータ・アーキテクチャのために定められたｐｅｒｆｏｒｍ  ｔｏｐｏｌｏｇｙ  ｆｕｎｃｔｉｏｎ命令をフェッチするステップであって、前記ｐｅｒｆｏｒｍ  ｔｏｐｏｌｏｇｙ  ｆｕｎｃｔｉｏｎ命令は、実施される機能を特定するオペコード・フィールドを含む、当該ステップと、
前記ｐｅｒｆｏｒｍ  ｔｏｐｏｌｏｇｙ  ｆｕｎｃｔｉｏｎ命令の実施される機能を実行するステップであって、
前記ゲスト構成における前記ゲスト・プロセッサの前記トポロジの前記構成の特定の変化を要求することと、
前記要求された特定の変化に応答して、前記特定の変化に従って前記ゲスト構成の前記ゲスト・プロセッサの前記トポロジの前記構成を変化させることと、
前記要求されたトポロジ変化が進行中であることに応答して、トポロジ変化が開始されたことを示す条件コードを設定することと、
前記要求が拒絶されたことに応答して、前記要求されたトポロジ変化が拒絶されたことを示す条件コードを設定することと、
を含む当該ステップと、
を含む、コンピュータ・プログラム製品。
【請求項９】
前記ｐｅｒｆｏｒｍ  ｔｏｐｏｌｏｇｙ  ｆｕｎｃｔｉｏｎ命令は、レジスタ・フィールドをさらに含み、
前記ｐｅｒｆｏｒｍ  ｔｏｐｏｌｏｇｙ  ｆｕｎｃｔｉｏｎ命令を実行する前記ステップは、
前記レジスタ・フィールドによって特定されるレジスタの機能コード・フィールドから、水平極性命令指示子、垂直極性命令指示子又はトポロジ変化チェック指示子のうちのいずれか１つから成る機能コード・フィールド値を取得することと、
水平極性を特定する命令に応答して、コンピュータ構成の前記ゲスト・プロセッサの水平極性を開始することと、
垂直極性を特定する命令に応答して、コンピュータ構成の前記ゲスト・プロセッサの垂直極性を開始することと、
結果コード値を前記レジスタの結果フィールドに設定することと、
をさらに含む、請求項８に記載のコンピュータ・プログラム製品。
【請求項１０】
開始された極性が実行の完了とは非同期であり、トポロジ変化のチェックを特定する前記機能コード・フィールド値に応答して、前記トポロジ変化の完了状態をチェックするステップをさらに含む、請求項９に記載のコンピュータ・プログラム製品。
【請求項１１】
前記実行は、
トポロジ変化報告が保留中ではないことに応答して、トポロジ変化報告が保留中ではないことを示す条件コードを設定するステップと、
トポロジ変化報告が保留中であることに応答して、トポロジ変化報告が保留中であることを示す条件コードを設定するステップと、
をさらに含む、請求項１０に記載のコンピュータ・プログラム製品。
【請求項１２】
前記水平極性は、実質的に均等なホスト・プロセッサ・リソースを各々のゲスト・プロセッサ・リソースに与えることを含み、前記垂直極性は、前記ゲスト・プロセッサの少なくとも１つのゲスト・プロセッサに、前記ゲスト・プロセッサの少なくとも別のゲスト・プロセッサより実質的に多くのホスト・プロセッサ・リソースを与えることを含む、
請求項９に記載のコンピュータ・プログラム製品。
【請求項１３】
前記結果コード値は、
前記構成が実行前に前記機能コードによって特定される極性を有していることに応答して、前記構成が前記機能コードに従ってすでに極性を有することを示す結果コード値と、
前記構成が実行前に未完成の極性を処理していることに応答して、トポロジ変化がすでに処理中であることを示す結果コード値と、
から成る理由コードを特定する、請求項９に記載のコンピュータ・プログラム製品。
【請求項１４】
コンピュータ・アーキテクチャのために定められた前記ｐｅｒｆｏｒｍ  ｔｏｐｏｌｏｇｙ  ｆｕｎｃｔｉｏｎ命令は、代替コンピュータ・アーキテクチャの中央処理ユニットによってフェッチ及び実行され、
前記方法は、前記ｐｅｒｆｏｒｍ  ｔｏｐｏｌｏｇｙ  ｆｕｎｃｔｉｏｎ命令の動作をエミュレートする所定のソフトウエア・ルーチンを識別するために、前記ｐｅｒｆｏｒｍ  ｔｏｐｏｌｏｇｙ  ｆｕｎｃｔｉｏｎ命令を翻訳するステップをさらに含み、
前記ｐｅｒｆｏｒｍ  ｔｏｐｏｌｏｇｙ  ｆｕｎｃｔｉｏｎ命令を実行する前記ステップは、前記ｐｅｒｆｏｒｍ  ｔｏｐｏｌｏｇｙ  ｆｕｎｃｔｉｏｎ命令を実行するための方法のステップを実施する前記所定のソフトウエア・ルーチンを実行するステップを含む、
請求項９に記載のコンピュータ・プログラム製品。
【請求項１５】
メモリと、
前記メモリと通信するホスト・プロセッサ（ホストＣＰＵ）を含む論理パーティション化されたホスト・コンピュータ・システムと、
を含み、
前記コンピュータ・システムは、ゲスト構成の複数のゲスト・プロセッサ(ゲストＣＰＵ)のトポロジの構成変化のための方法を実施するように構成されており、
前記方法は、
ゲスト構成のゲスト・プロセッサが、コンピュータ・アーキテクチャのために定められたｐｅｒｆｏｒｍ  ｔｏｐｏｌｏｇｙ  ｆｕｎｃｔｉｏｎ命令をフェッチするステップであって、前記ｐｅｒｆｏｒｍ  ｔｏｐｏｌｏｇｙ  ｆｕｎｃｔｉｏｎ命令は、実施される機能を特定するオペコード・フィールドを含む、当該ステップと、
前記ｐｅｒｆｏｒｍ  ｔｏｐｏｌｏｇｙ  ｆｕｎｃｔｉｏｎ命令の実施される機能を実行するステップであって、
前記ゲスト構成における前記ゲスト・プロセッサの前記トポロジの前記構成の特定の変化を要求することと、
前記要求された特定の変化に応答して、前記特定の変化に従って前記ゲスト構成の前記ゲスト・プロセッサの前記トポロジの前記構成を変化させることと、
トポロジ変化が進行中であることに応答して、トポロジ変化が開始されたことを示す条件コードを設定することと、
前記要求が拒絶されたことに応答して、前記要求が拒絶されたことを示す条件コードを設定することと、
を含む当該ステップと、
を含む、コンピュータ・システム。
【請求項１６】
前記ｐｅｒｆｏｒｍ  ｔｏｐｏｌｏｇｙ  ｆｕｎｃｔｉｏｎ命令は、レジスタ・フィールドをさらに含み、
前記ｐｅｒｆｏｒｍ  ｔｏｐｏｌｏｇｙ  ｆｕｎｃｔｉｏｎ命令を実行する前記ステップは、
前記レジスタ・フィールドによって特定されるレジスタの機能コード・フィールドから、水平極性命令指示子、垂直極性命令指示子又はトポロジ変化チェック指示子のうちのいずれか１つから成る機能コード・フィールド値を取得することと、
水平極性を特定する命令に応答して、コンピュータ構成の前記ゲスト・プロセッサの水平極性を開始することと、
垂直極性を特定する命令に応答して、コンピュータ構成の前記ゲスト・プロセッサの垂直極性を開始することと、
結果コード値を前記レジスタの結果フィールドに設定することと、
をさらに含む、請求項１５に記載のコンピュータ・システム。
【請求項１７】
開始された極性が実行の完了とは非同期であり、トポロジ変化のチェックを特定する前記機能コード・フィールド値に応答して、前記トポロジ変化の完了状態をチェックするステップをさらに含む、請求項１６に記載のコンピュータ・システム。
【請求項１８】
前記実行は、
トポロジ変化報告が保留中ではないことに応答して、トポロジ変化報告が保留中ではないことを示す条件コードを設定するステップと、
トポロジ変化報告が保留中であることに応答して、トポロジ変化報告が保留中であることを示す条件コードを設定するステップと、
をさらに含む、請求項１７に記載のコンピュータ・システム。
【請求項１９】
前記水平極性は、実質的に均等なホスト・プロセッサ・リソースを各々のゲスト・プロセッサ・リソースに与えることを含み、前記垂直極性は、前記ゲスト・プロセッサの少なくとも１つのゲスト・プロセッサに、前記ゲスト・プロセッサの少なくとも別のゲスト・プロセッサより実質的に多くのホスト・プロセッサ・リソースを与えることを含む、請求項１６に記載のコンピュータ・システム。
【請求項２０】
前記結果コード値は、
前記構成が実行前に前記機能コードによって特定される極性を有していることに応答して、前記構成が前記機能コードに従ってすでに極性を有することを示す結果コード値と、
前記構成が実行前に未完成の極性を処理していることに応答して、トポロジ変化がすでに処理中であることを示す結果コード値と、
から成る理由コードを特定する、請求項１６に記載のコンピュータ・システム。
【請求項２１】
コンピュータ・アーキテクチャのために定められた前記ｐｅｒｆｏｒｍ  ｔｏｐｏｌｏｇｙ  ｆｕｎｃｔｉｏｎ命令は、代替コンピュータ・アーキテクチャの中央処理ユニットによってフェッチ及び実行され、
前記方法は、前記ｐｅｒｆｏｒｍ  ｔｏｐｏｌｏｇｙ  ｆｕｎｃｔｉｏｎ命令の動作をエミュレートする所定のソフトウエア・ルーチンを識別するために、前記ｐｅｒｆｏｒｍ  ｔｏｐｏｌｏｇｙ  ｆｕｎｃｔｉｏｎ命令を翻訳するステップをさらに含み、
前記ｐｅｒｆｏｒｍ  ｔｏｐｏｌｏｇｙ  ｆｕｎｃｔｉｏｎ命令を実行する前記ステップは、前記ｐｅｒｆｏｒｍ  ｔｏｐｏｌｏｇｙ  ｆｕｎｃｔｉｏｎ命令を実行するための方法のステップを実施する前記所定のソフトウエア・ルーチンを実行するステップを含む、
請求項１６に記載のコンピュータ・システム。
【国際調査報告】
2011509478.tif 000027
2011509478.tif 000028