JP5179597B2 - 構成の仮想トポロジの変化 - Google Patents

構成の仮想トポロジの変化 Download PDF

Info

Publication number
JP5179597B2
JP5179597B2 JP2010541797A JP2010541797A JP5179597B2 JP 5179597 B2 JP5179597 B2 JP 5179597B2 JP 2010541797 A JP2010541797 A JP 2010541797A JP 2010541797 A JP2010541797 A JP 2010541797A JP 5179597 B2 JP5179597 B2 JP 5179597B2
Authority
JP
Japan
Prior art keywords
guest
cpu
processor
topology
configuration
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2010541797A
Other languages
English (en)
Other versions
JP2011509478A (ja
JP2011509478A5 (ja
Inventor
ゲイニー、チャールズ
ファレル、マーク
クバラ、ジェフリー
シュミット、ドナルド
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2011509478A publication Critical patent/JP2011509478A/ja
Publication of JP2011509478A5 publication Critical patent/JP2011509478A5/ja
Application granted granted Critical
Publication of JP5179597B2 publication Critical patent/JP5179597B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5077Logical partitioning of resources; Management or configuration of virtualized resources
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44505Configuring for program initiating, e.g. using registry, configuration files

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Executing Machine-Instructions (AREA)
  • Multi Processors (AREA)
  • Oscillators With Electromechanical Resonators (AREA)
  • Variable-Direction Aerials And Aerial Arrays (AREA)
  • Hardware Redundancy (AREA)
  • Filters And Equalizers (AREA)

Description

本発明は、一般に、マルチプロセッサ・システムの仮想化に関する。特に、本発明は、プログラムが自らの仮想環境のトポロジの要素を変化させることができるようにすることに関する。
システムの制御機能には、システムをいくつかの論理パーティション(LPAR)に分割する能力がある。LPARは、オペレーティング・システムをサポートするように定められたシステム・ハードウェアのサブセットである。LPARは、リソース(プロセッサ、メモリ、及び入力/出力装置)を含み、独立したシステムとして作動する。メインフレーム・ハードウェア・システム内に多数の論理パーティションを存在させることができる。
S/390(登録商標)を含むIBMのメインフレーム・コンピュータ・システムにおいては、長年、15個のLPARという制限が存在した。最近のマシンは、30個(潜在的にはそれより多く)のLPARを有する。そのようなマシンとして、z/Architecture(登録商標)によるマシンが例示される。IBM(登録商標)z/Architecture(登録商標)は、非特許文献1に記載される。
メモリ・サイズ、I/Oの可用性、及び利用可能な処理能力の実際的な制限により、通常、LPARの数は、それらの最大数より少ない数に制限される。
パーティション化を提供するハードウェア及びファームウェアは、PR/SM(商標)(プロセッサ・リソース/システム・マネージャ)として知られている。LPARを作成し、稼働させるのに用いられるのは、PR/SM機能である。PR/SM(内蔵ファシリティ)とLPAR(PR/SMを用いた結果)との間のこの違いは無視されることが多く、LPARという用語は、ファシリティ及びその結果について併せて用いられる。
システム管理者は、メモリの一部を各々のLPARに割り当て、メモリは、LPAR間で共有することができない。管理者は、プロセッサ(中央プロセッサ(CP)又は中央プロセッシング・ユニット(CPU)としても知られる)を特定のLPARに割り当てることが可能であり、又は、管理者は、システム・コントローラが内部負荷分散アルゴリズムを用いていずれかのプロセッサ又は全てのプロセッサを全てのLPARにディスパッチできるようにすることが可能である。チャネル(CHPID)を、各々のチャネル上の装置の性質に応じて、特定のLPARに割り当てるか、又は、多数のLPARによって共有することができる。
シングル・プロセッサ(CPプロセッサ)を持つシステムが、多数のLPARを有することができる。PR/SMは、オペレーティング・システム・ディスパッチャがプロセッサ時間の一部を各々のプロセス、スレッド、又はタスクに割り当てるのと同じように、プロセッサの一部を各々のLPARに割り当てることができる内部ディスパッチャを有する。
パーティション化制御の仕様は、一部がIOCDS内に含まれ、一部がシステム・プロファイル内に含まれる。IOCDS及びプロファイルはいずれも、例えばシステム内部の単なるノートブック型コンピュータであるサポート・エレメント(SE)内に存在する。SEは、例えばメインフレーム・マイクロプロセッサのようなハードウェアを監視及び制御するために用られるデスクトップ型パーソナル・コンピュータである、1つ又は複数のハードウェア・マネジメント・コンソール(HMC)に接続することができる。HMCは、SEと比べて用いるのがより簡便であり、いくつかの異なるメインフレームを制御することができる。
HMCから(又は、異常時にはSEから)の作業によって、オペレータは、プロファイル及びIOCDSを選択してロードすることにより用いるように、メインフレームを準備する。プロファイル及びIOCDSによって、LPARが作成され、デバイス番号、LPAR割り当て、多数のパス情報などを持つチャネルが構成される。これはパワー・オン・リセット(POR)として知られる。異なるプロファイル及びIOCDSをロードすることによって、オペレータは、LPARの数及び性質、並びにI/O構成の状態を完全に変えることができる。しかしながら、これを行うことは、通常、稼働中のオペレーティング・システム及びアプリケーションのいずれにも悪影響を及ぼし、したがって、事前の計画なしに行われることはほとんどない。
論理パーティション(LPAR)は、実際には、別個のメインフレームと等しい。
各々のLPARは、自らのオペレーティング・システムを稼働させる。これは、いずれかのメインフレーム・オペレーティング・システムとすることができ、各々のLPARにおいて、例えばz/OS(登録商標)を稼働させる必要はない。インストールの計画者は、いくつかのLPARにわたってI/Oデバイスを共有するように選択することができるが、これは、ローカルな判断(local decision)である。
システム管理者は、LPARを排他的に使用するように1つ又は複数のシステム・プロセッサを割り当てることができる。代替的に、管理者は、全てのプロセッサがいくつか又は全てのLPAR上で用いられるようにすることができる。ここで、システム制御機能(多くの場合、マイクロ・コード又はファームウェアとして知られる)は、選択されたLPARの間でプロセッサを共有するためのディスパッチャを提供する。管理者は、各々のLPARに存在する並列プロセッサの最大数を定めることができる。管理者は、異なるLPARについて重みを与えることができ、例えば、LPAR1がLPAR2の2倍のプロセッサ時間を受け取るように定めることができる。
各々のLPARにおけるオペレーティング・システムは、別々に初期化され(例えば、IPLされ)、そのオペレーティング・システム自身のコピーや(必要な場合には)それ自身のオペレータ・コンソールなどを持つ。1つのLPARにおけるシステムがクラッシュした場合でも、他のLPARには影響は全くない。
3つのLPARを持つメインフレーム・システムにおいては、例えば、LPAR1に製品z/OSを有し、LPAR2にz/OSのテストバージョンを有し、LPAR3にS/390(登録商標)のためのLinux(登録商標)を有するようにすることができる。このシステム全体が8GBのメモリを有する場合には、LPAR1に4GBを割り当て、LPAR2に1GBを割り当て、LPAR3に1GBを割り当て、更に予備として2GBを保持することができる。2つのz/OS LPARのためのオペレーティング・システム・コンソールは、全く異なる場所に存在することができる。
最も実際的な目的のためには、例えば、z/OSを稼働(及び、自らのI/O構成の大部分を共有)する3つの別個のメインフレームと、それと同じことを実行する同じメインフレーム上の3つのLPARとの間に違いはない。少数の例外を除いて、z/OS、オペレータ、及びアプリケーションは、その違いを検出することができない。
わずかな違いとして、完全なメインフレーム・システム全体にわたる性能情報及び利用情報を取得し、性能を改善するためにリソース(プロセッサ及びチャネル)をLPAR間で動的に移す、z/OSの能力(LPARが定められたとき、又は実行の際のいつでも)が挙げられる。
今日のIBM(登録商標)メインフレームは、中央プロセッサ複合体(CPC)又は中央電子複合体(CEC)とも呼ばれ、わずかに異なる目的に用いることができる幾つかの異なるタイプのz/Architecture(登録商標)プロセッサを含むことができる。
これらの目的のうちのいくつかは、ソフトウェアのコスト管理に関するものであるが、その他の目的は、より基礎的なものである。CPCの全てのプロセッサは、用途が特徴付けられていない等価なプロセッサ・ユニット(PU)又はエンジンとして開始する。各々のプロセッサは、インストールの際に又はその後に、IBMによって特徴付けられる。潜在的な特徴を以下に示す。
− プロセッサ(CP)
このプロセッサのタイプは、通常のオペレーティング・システム及びアプリケーション・ソフトウェアで利用可能である。
− System Assistance Processor(SAP)
最新のメインフレームはいずれも、少なくとも一つのSAPを有し、より大きなシステムは、いくつかのSAPを有する場合がある。SAPは、内部コードを実行してI/Oサブシステムを提供する。SAPは、例えば、チャネル・パス識別子(CHPID)のデバイス番号及び実アドレス、制御ユニット・アドレス、並びにデバイス番号を変換する。SAPは、制御ユニットへの多数のパスを管理し、一時的エラーのためのエラー回復を行う。オペレーティング・システム及びアプリケーションは、SAPを検出することができず、SAPは、「通常の」メモリのいずれも使用しない。
− Integrated Facility for Linux(IFL)
これは、z/OS(登録商標)によってのみ用いられる、使用不可能な1つ又は2つの命令を伴う通常のプロセッサである。Linuxは、これらの命令を用いることはなく、従って、IFL上で動作することができる。Linuxは、CPによって実行することもできる。両者の違いは、システムのモデル数を特定するときにIFLはカウントされないことである。これによって、ソフトウェアのコストに実質的に違いが生じる可能性がある。
− zAAP
これは、オペレーティング・システム全体がプロセッサ上で動作することができないように、使用不可能な多くの機能(割り込み処理、幾つかの命令)を伴うプロセッサである。しかしながら、z/OSは、zAAPプロセッサの存在を検出することができ、Java(商標)コードを実行するためにこれらのプロセッサを用いる。同じJavaコードは、標準のCP上で実行することができる。同様に、zAAPエンジンは、システムのモデル数を特定するときにカウントされない。IFLのように、zAAPエンジンは、ソフトウェアのコストを抑制するためだけに存在する。
− zIIP
System z9(商標)Integrated Information Processor(zIIP)は、適用可能なデータベース作業負荷を処理することに特化したエンジンである。zIIPは、ビジネス・インテリジェンス(BI)、エンタープライズ・リソース・プラニング(ERP)及びカスタマー・リレーションシップ・マネージメント(CRM)といった、メインフレーム上の選択された作業負荷について、ソフトウェア費用を低減するのを支援するように設計されている。zIIPは、よりコスト効率よくDB2(登録商標)に直接アクセスすることを支援し、データを多数コピーする必要性を減らすことによって、企業のデータ・ハブとしてのメインフレームの役割を強化する。
Integrated Coupling Facility(ICF)
これらのプロセッサは、ライセンスされた内部コードのみを実行する。これらは、通常のオペレーティング・システム又はアプリケーションには認識されない。例えば、結合ファシリティは、実際には、作業を協働する多数のシステムによって用いられる大きなメモリ・スクラッチ・パッドである。ICFは、後に結合ファシリティになるLPARに割り当てなければならない。
Spare
特徴付けられていないPUは、「スペア」として機能する。システム・コントローラが、機能しないCP又はSAPを検出した場合には、それをスペアPUと置き換えることができる。多くの場合、これは、いずれのシステムも、機能しないプロセッサ上で稼働しているアプリケーションであっても、中断することなく行うことができる。
プロセッサのこれらの特徴に加えて、いくつかのメインフレームは、それらのCPの潜在的なスピードより遅く動作するように構成されたモデル又はバージョンを有する。これは、「ニーキャッピング(knee−capping)」として広く知られているが、IBMは、キャパシティ・セッティング(capacity setting)という用語又は同様の用語を好んでいる。これは、例えば、プロセッサの命令ストリームにヌルサイクルを挿入するマイクロ・コードを用いることによって行われる。目的は、この場合もやはり、アプリケーションの要件を満たす最小のメインフレーム・モデル又はバージョンを有することにより、ソフトウェア費用を抑えることである。IFL、SAP、zAAP、zIIP、及びICFは、ソフトウェアの価格計算において「カウントされない」ため、常に、プロセッサの最高速度で機能する。
プロセッサ及びCPUというときには、完全なシステム・ボックスか、又は、システム・ボックス内部のプロセッサ(CPU)の一つのいずれかのことをいう場合がある。その意味は、説明の文脈から明らかにすることができるが、メインフレームの専門家でさえ、説明の際に彼らが用いているのはどのプロセッサ又はCPUを意味しているのかを明確にしなければならない。IBMは、主ストレージ、1つ又は複数の中央プロセッサ、タイマ、及びチャネルを含むハードウェアの物理的集合体のことを言うために、中央プロセッサ複合体(CPC)という用語を用いる。(システム・プログラマには、メインフレーム「ボックス」のことを言うのに中央電子複合体(CEC)を用いる者もいるが、好ましい用語はCPCである。)
簡単に言えば、CPC内部の全てのS/390又はz/アーキテクチャ・プロセッサは、処理ユニット(PU)である。IBMがCPCを引き渡すときに、PUは、(通常の作業のための)CP、Integrated Facility for Linux(IFL)、並列シスプレックス構成のためのIntegrated Coupling Facility(ICF)などとして特徴付けられる。
メインフレームの専門家は、典型的には、状況に応じて、ハードウェア・ボックス、(I/Oデバイスを伴う)完全なハードウェア環境、又は(ソフトウェアを伴う)オペレーティング環境を示すために、システムを用いる。メインフレームの専門家は、典型的には、CPCの内部のシングル・プロセッサ(CP)を意味するために、プロセッサを用いる。
z/VM(登録商標) HYPERVISOR(商標)は、アプリケーション及びデータを統合すると同時に、並外れた水準の可用性、安全性、及び運用容易性を提供することによって、顧客が企業全体にわたってメインフレーム技術のビジネス価値を増大させるのを支援するように設計されている。z/VM仮想化技術は、クライアントの能力が、z/OS(登録商標)のような他のシステムzオペレーティング・システムと共に稼働する単一のメインフレーム上で又はLinux専用の大規模エンタープライズ・サーバ・ソリューションとして、数百から数千のLinuxサーバを稼働させることを可能にするように設計されている。z/VM V5.3は、z/OS、z/VSE、及びz/TPのような非Linux作業負荷をホストすることにより、生産性を改善するのを支援することもできる。
z/VMは、仮想マシンとして知られる個別の作業環境を各々のユーザに提供する。仮想マシンは、プロセッサ機能、メモリ、ネットワーキング、及び入力/出力(I/O)リソースを含む、専用の実マシンの存在をエミュレートする。オペレーティング・システム及びアプリケーション・プログラムは、ゲストとして仮想マシン内で稼働することができる。例えば、種々のアプリケーション及びエンドユーザもサポートする同じz/VMシステム上で、多数のLinux及びz/OSイメージを稼働させることができる。結果として、開発、試験、及び生産環境を単一の物理コンピュータで共有することができる。
図15-図18を参照すると、パーティション化及び仮想化は、システム・リソースを別個の物理エンティティではなく論理プールとして扱うことによって、物理的なものから論理的なものに思考をシフトすることを含む。これは、システム・リソースを統合し、プールすることと、同種及び異種のサーバ、ストレージ、分散システム、及びネットワークについて「単一のシステムであるという錯覚(single system illusion)」を起こさせることとを含む。
ハードウェアのパーティション化には、各々がその特定のアプリケーションを稼働させる、別個のオペレーティング・システムのための別個のCPUを必要とする。ソフトウェアのパーティション化は、個々のオペレーティング・システムがCPUのいずれか又は全てで稼働できるようにするためのソフトウェアベースの「ハイパーバイザ」を使用する。
ハイパーバイザは、多数のオペレーティング・システムがホスト・コンピュータ上で同時に稼働することを可能にする。今日、我々は、z/VMの前身であるIBM VM/370に始まるハイパーバイザ技術を有する。論理パーティション化(LPAR)には、オペレーティング・システムをCPUから分離させるためのパーティション化ファームウェア(ハードウェアベースのハイパーバイザ、例えば、PR/SM)を必要とする。
仮想化は、四つの基礎的な能力、すなわち、リソース共有、リソース集約、機能のエミュレーション、及び分離を可能にするか、又はこれらを利用する。これらの項目については、以下の章でより詳細に検討する。
z/VMは、極めて柔軟性のある試験環境及び生産環境を提供するIBMシステムzプラットフォームのためのオペレーティング・システムである。IBM仮想化技術のz/VM実装は、Linux on System z、z/OSなどといった全機能型オペレーティング・システムをz/VMの「ゲスト」として稼働させる能力を提供する。z/VMは、64ビットのIBM z/Architectureゲスト及び31ビットのIBMエンタープライズ・システム アーキテクチャ/390ゲストをサポートする。
z/VMは、仮想マシンとして知られる個別の作業環境を各々のユーザに提供する。仮想マシンは、プロセッサ機能、メモリ、ネットワーク、及び入力/出力(I/O)リソースを含む専用の実マシンの存在をシミュレートする。オペレーティング・システム及びアプリケーション・プログラムは、ゲストとして仮想マシン内で稼働することができる。例えば、種々のアプリケーション及びエンドユーザもサポートする同じz/VMシステム上で、多数のLinux及びz/OS(登録商標)イメージを稼働させることができる。結果として、開発、試験、及び生産環境を単一の物理コンピュータで共有することができる。
仮想マシンは実ハードウェア・リソースを用いるが、たとえ専用デバイス(テープ・ドライブのような)であっても、テープ・ドライブの仮想アドレスは、テープ・ドライブの実アドレスと同じであっても同じでなくても良い。したがって、仮想マシンは、実世界に存在してもしなくてもよい「仮想ハードウェア」のみを識別する。
例えば、ベーシック・モードのシステムにおいては、第1レベルのz/VMは、図19の実ハードウェア上にインストールされるベースとなるオペレーティング・システムである。第2レベルのオペレーティング・システムは、ベースとなるz/VMオペレーティング・システム上で生成されるシステムである。したがって、ベースとなるオペレーティング・システムとしてのz/VMはハードウェア上で稼働し、ゲスト・オペレーティング・システムは、仮想化技術上で稼働する。図18において、第1レベルのゲスト(ゲスト−1)パーティションにロードされた第2レベルのゲストz/VM OSが示される。
換言すれば、ハードウェア上に直接乗る第1レベルのz/VMオペレーティング・システムが存在するが、この第1レベルのz/VMシステムのゲストは、仮想化される。ゲストからハードウェアを仮想化することにより、少数のハードウェアで必要な数のゲストを生成し、使用することができる。
前述のように、仮想マシン内で稼働するオペレーティング・システムは、多くの場合、「ゲスト」と呼ばれる。本明細書に記載される場合がある他の語句は、
- 「第1レベルを稼働する」又は「ネイティブに稼働する」とは、ハードウェア上で直接稼働することを意味する(これは、z/VMが行うことである)。
- 「第2のレベルを稼働する」「VM下で稼働する」、又は「VM上で(の上で)稼働する」、或いは「ゲスト―1として稼働する」とは、ゲストとして稼働することを意味する。z/VMオペレーティング・システムを用いて、z/VM自体がPR/SMハイパーバイザ上でゲスト―1として稼働するときに「ゲスト―2として稼働する」ことも可能である。
z/VMの機能の一例は、第1レベルのz/VMシステム及び第2のレベルのz/VMシステムを有する場合には、第2レベルのシステム上でさらに多くのオペレーティング・システムを生成し続けられることである。このタイプの環境は、展開前にオペレーティング・システムのインストールを試験するために、又は、オペレーティング・システムを試験若しくはデバッグするために、特に有用である。
仮想リソースは、下層の物理リソースにおいては利用できない機能又は特徴を有することができる。図15−図18は、リソース・エミュレーションによる仮想化を示す。このような機能又は特徴は、それがホスト・プログラムの支援によって実際に提供されるときに、ゲストがこのような機能又は特徴がシステムによって提供されることを認識するように、ホスト・プログラムによってエミュレートされると考えられている。
例として、別のアーキテクチャを用いて一つのプロセッサのアーキテクチャを実装するアーキテクチャ・エミュレーション・ソフトウェア、IPネットワーク上の仮想SCSIバスを実装するiSCSI、及び、物理ディスク・ストレージ上に実装される仮想テープ・ストレージが挙げられる。
さらに、現代の技術における中央処理ユニット(CPU)のパッキングは、階層的であることが多い。多数のコアを単一のチップ上に配置することができる。多数のチップを単一のモジュール内に配置することができる。多数のモジュールをブックと言われることが多いボード上にパッケージすることができ、多数のブックを多数のフレーム全体にわたって分散させることができる。
米国特許第5551013号 米国特許第6009261号 米国特許5574873号 米国特許6308255号 米国特許6463582号 米国特許5790825号
z/Architecture Principles ofOperation, IBM Pub. No. SA22-7832-05, 6th Edition, (April 2007).
CPUは、いくつかのレベルのキャッシュを有することが多く、例えば、各々のプロセッサは、1つのキャッシュ(又は、分割された命令キャッシュ及びデータ・キャッシュということもあり得る)を有することができ、各々のプロセッサと主メモリ・インターフェイスとの間により大きい付加的なキャッシュが存在する場合もある。階層のレベルに応じて、キャッシュは、全体の性能を改善するように配置することもでき、あるレベルにおいては、キャッシュは、単一のCPUより多いCPU間で共有することもできる。そのような配置に関するエンジニアリング判断は、スペース、電力/熱、配線距離、CPU周波数、メモリ速度、システム性能その他の側面を扱う。CPUの要素のこの配置によって、パーティションの各々のCPUがどこに配置されているかに応じて、特定の論理パーティションにとって概ね好ましいものとすることができる内部構造が生成される。論理パーティションは、実際にオペレーティング・システムが他のパーティションにおける他のオペレーティング・システムとリソースを共有している場合には、プロセッサの利用を含む特定のリソースの所有権(ownership)をそのオペレーティング・システムから見えるようにする。通常、ソフトウェアは、配置を認識することはなく、対称型マルチ・プロセッシング(SMP)構成においては、各々のCPUが同じレベルの性能をもたらす1組のCPUを認識する。問題は、内部のパッケージング及びいずれか2つのCPU間の「距離」を無視することによって、どのようにCPUに作業を割り当てることができるかについて最適とはいえない選択をソフトウェアが行う可能性があることである。したがって、SMP構成の潜在能力の全てが発揮されているとはいえない。
提示される仮想化のメインフレームの例は、マシンを仮想化する際に可能となる種々のトポロジを教示することを意図している。上述のように、1つのパーティションにおいて稼働する(オペレーティング・システムを含む)プログラムには、これらのプログラムが利用可能な、プロセッサ、メモリ及びI/Oを含むリソースが、そのパーティション専用のものであるように見えていると思われる。実際には、プログラムは、1つのパーティションで稼働しているという概念を持つことはない。そのようなプログラムもまた、それらのパーティションのトポロジを認識せず、したがって、そのようなトポロジに基づく選択を行うことができない。必要とされることは、プログラムが稼働している構成トポロジをそのプログラムが最適化する方法である。
未利用のコンピュータ・ハードウェア・リソースの組を有するアップグレード可能なコンピュータ・システムにおいて、未利用のコンピュータ・ハードウェア・リソースのサブセットを有効にするための方法、システム、及びコンピュータ・プログラム製品を提供することによって、従来技術の欠点が克服され、更なる利点がもたらされる。
ホストCPUを含むホスト・コンピュータをパーティション化して、ゲストCPUを有する論理/仮想パーティションにすることができる。パーティション化は、IBMのz/VMのようなオペレーティング・システムにより提供することができるファームウェア又はソフトウェアによって実現されることが好ましい。各々のゲストCPUは、ゲスト・プログラムにはゲストCPUが実際のCPUプロセッサに見えるが、実際には下層のホストが各々のゲストCPUをホストCPUリソースにマッピングしているという点で、仮想CPUである。一実施形態においては、ゲストCPUは、ホストCPUを利用するゲストCPUのためにCPU時間の一部を指定するホストによって、ホストCPUの一部を用いて実装される。単一のホストCPUによって複数のゲストCPUをサポートすることができるが、逆もまた適用できることが想定される。
別の実施形態においては、ゲストCPUはソフトウェアによってエミュレートされ、それにより、エミュレーション・ルーチンが、(命令のデコード及び実行を含む)ゲストCPUの機能をホストCPU上で稼働するルーチンに変換する。ホストCPUは、ゲストCPUをサポートするようにプロビジョニングされる(provisioned)。
別の実施形態においては、第1のゲスト・イメージは、第2のゲスト・イメージのホストとすることができる。この場合には、第2のゲストCPUは、自らがホストCPUによってプロビジョニングされる第1のゲストCPUにより、プロビジョニングされる。構成のトポロジは、ゲストCPUのレベルと1つ又は複数のホストCPUのレベルとのネスティングである。
新たなPERFORM TOPOROGY FACILITY(PTF)命令が提供され、従来のSTORE SYSTEM INFORMATION (STSI)命令が、コンポーネント・アフィニティ(component affinity)及び論理パッケージング情報をソフトウェアに与える新たなSYSIB (SYSIB識別子15.1.2)を提供するように強化される。このことにより、マルチプロセッサの処理ユニットのような個々のコンポーネントがどのように種々のアプリケーション及び作業負荷に割り当てられるかについて、ソフトウェアが情報に基づくインテリジェントな選択を適用することが可能になる。例えば共有キャッシュのヒット率を上げることにより性能を改善するために、情報がプログラム(OS)に与えられる。
新たなPERFORM TOPOROGY FUNCTION(PTF)命令は、内部でプログラムが稼働しているCPU構成トポロジを変更させることを要求するために、スーパーバイザ、OS、カーネルなどのような特権的プログラムによって用いられる。一実施形態においては、ゲストCPUトポロジは、水平極性と垂直極性との間で切り替えられる。
CPUトポロジ情報を学習する能力を有することにより、プログラムは、対称型マルチ・プロセッシング構成におけるいずれか任意の2つ又はそれ以上のCPU間の「距離」を理解する。
構成における全てのCPUの集約距離(aggregate distance)を最小化するために提供される機能と、特定のアプリケーション・プログラムのタスクが個々のCPU上にディスパッチされる方法とによって、スーパーバイザ・プログラムに性能を改善する能力が与えられる。性能の改善は、より良いトポロジ知識によって改善される以下の属性のうちの1つ又は複数によってもたらされる可能性がある。
CPU間の信号伝達パスの短縮
多数のCPUによってアクセスされる共有ストレージは、CPUの組により近いキャッシュ内にあることが多い。したがって、キャッシュ間ストレージの使用は、より速いキャッシュ間転送を可能にする、マシン及び構成全体のうちのより小さな一部に限定される。CPU(L1)の最も近いキャッシュにストレージ場所が存在することが極めて発生しやすい。
性能が改善されることによって、構成における実際のCPUの数をより少なくすることができる一方で、依然として同じ稼働時間又はより少ない稼働時間で同じ仕事を行うことができる。CPUのこのような減少は、各々のCPUが構成の中の他のCPUと通信するために用いなければならない通信パスの数を減らし、それにより、全体の性能改善にさらに寄与する。
例えば、10個のCPUが特定のプログラムを実行する必要がある場合には、キャッシュ間のトラフィックは重要であるが、同じプログラムを1つのCPU上で実行することができる場合には、キャッシュ間のトラフィックは存在しない。このことは、ストレージがいずれのキャッシュ内にある場合でも、望ましいストレージ場所のキャッシュの存在が単一のCPUのキャッシュ内であることが保証されることを示す。
ストレージ及び関連するキャッシュの階層が、多数の物理フレーム(即ち、ボックスなど)にわたって分散されているのとは対照的にローカルであるときには、信号伝達パスはより短い。トポロジ知識は、SMP構成におけるCPUの大きなサブセット内であってもそのサブセットがCPU間の最小距離を最適化するように、アプリケーション・プログラムに割り当てるCPUの適切なサブセットを選択する際の相対距離を示す。これは、アフィニティ・グループと呼ばれることがある。
CPUカウントの減少及びCPU間の距離の概念は、プログラムがアフィニティ・グループへのCPUの割り当てを最適化できるようにするトポロジ情報によって与えられる。
本発明の対象(図23及び24)は、複数のゲスト構成のゲスト・プロセッサ(ゲストCPU)のトポロジの構成変化のための、ホスト・プロセッサ(ホストCPU)、方法、システム、及びプログラム製品を含む、論理パーティション化されたホスト・コンピュータ・システムにおいて与えられる。好ましくは、ゲスト構成のゲスト・プロセッサは、コンピュータ・アーキテクチャのために定められたperform topology function命令、実施される機能を特定するオペコード・フィールドを含むperform topology function命令をフェッチする。前記機能は、
ゲスト構成のゲスト・プロセッサの極性の構成の特定された変化の要求、及び、
要求され特定された極性変化に応じて特定された極性変化に係るゲスト構成のゲスト・プロセッサのトポロジの構成の変化
を含むperform topology function命令の実行により行われる。
本発明の一側面において、前記PERFORM TOPOLOGY FUNCTION命令は、レジスタ・フィールドをさらに含み、
前記PERFORM TOPOLOGY FUNCTION命令を実行する前記ステップは、
前記レジスタ・フィールドによって特定されるレジスタの機能コード・フィールドから、水平極性指示子、垂直極性指示子又はトポロジ変化チェック指示子のうちのいずれか1つから成る機能コード・フィールド値を取得することと、
水平極性を特定する命令に応答して、コンピュータ構成の前記ゲスト・プロセッサの水平極性を開始し、それにより結果としての更新されたトポロジを作ることと、
垂直極性を特定する命令に応答して、コンピュータ構成の前記ゲスト・プロセッサの垂直極性を開始し、それにより結果としての更新されたトポロジを作ることと、
結果コード値を前記レジスタの結果フィールドに設定することと、
をさらに含む。
本発明のその他の側面において、開始された極性要求は、実行の完了とは非同期であり、トポロジ変化のチェックを特定する前記機能コード・フィールド値に応答して、前記トポロジ変化の完了状態をチェックするステップをさらに含む。
一実施形態において、前記水平極性は、実質的に均等なホスト・プロセッサ・リソースを各々のゲスト・プロセッサ・リソースに与えることを含み、前記垂直極性は、前記ゲスト・プロセッサの少なくとも1つのゲスト・プロセッサに、前記ゲスト・プロセッサの少なくとも別のゲスト・プロセッサより実質的に多くのホスト・プロセッサ・リソースを与えることを含む。
その他の実施形態において、前記結果コード値は、前記構成が実行前に前記機能コードによって特定される極性を有していることに応答して、前記構成が前記機能コードに従ってすでに極性を有することを示す結果コード値と、
前記構成が実行前に未完成の極性を処理していることに応答して、トポロジ変化がすでに処理中であることを示す結果コード値と、
から成る理由コードを特定する。
一実施形態において、前記実行は、トポロジ変化が進行中であることに応答して、トポロジ変化が開始されたことを示す条件コードを設定するステップと、
前記要求が拒絶されたことに応答して、前記要求が拒絶されたことを示す条件コードを設定するステップと、を含む。
一実施形態において、前記実行は、トポロジ変化報告が保留中ではないことに応答して、トポロジ変化報告が保留中ではないことを示す条件コードを設定するステップと、
トポロジ変化報告が保留中であることに応答して、トポロジ変化報告が保留中であることを示す条件コードを設定するステップと、をさらに含む。
一実施形態において、 コンピュータ・アーキテクチャのために定められた前記perform topology function命令は、代替コンピュータ・アーキテクチャの中央処理ユニットによってフェッチ及び実行され、
前記perform topology function命令の動作をエミュレートする所定のソフトウエア・ルーチンを識別するために、前記perform topology function命令を翻訳するステップをさらに含み、
前記perform topology function命令を実行する前記ステップは、前記機械命令を実行するための方法のステップを実施する前記所定のソフトウエア・ルーチンを実行するステップを含む。
従来技術によるホスト・コンピュータ・システムを示す。 従来技術によるエミュレートされたホスト・コンピュータ・システムを示す。 従来技術によるSTSIマシン命令の命令フォーマットを示す。 従来技術によるSTSI 命令のimplied レジスタを示す。 機能コードテーブルを示す。 従来技術によるSYSIB 1.1.1 テーブルを示す。 従来技術によるSYSIB 1.2.1 テーブルを示す。 従来技術によるフォーマット-0 SYSIB 1.2.2 テーブルを示す。 従来技術によるフォーマット-1 SYSIB 1.2.2 テーブルを示す。 本発明によるSYSIB 15.1.2 テーブルを示す。 コンテナ・タイプTLEを示す。 CPUタイプTLEを示す。 本発明によるPTFマシン命令の命令フォーマットを示す。 PTF命令のレジスタ・フォーマットを示す。 従来技術によるパーティション化されたコンピュータ・システムの要素を示す。 従来技術によるパーティション化されたコンピュータ・システムの要素を示す。 従来技術によるパーティション化されたコンピュータ・システムの要素を示す。 従来技術によるパーティション化されたコンピュータ・システムの要素を示す。 コンピュータ・システムの例を示す。 例となるコンピュータ・システムのコンテナを示す。 例となるコンピュータ・システムのコンテナを示す。 例となるコンピュータ・システムのコンテナを示す。 本発明の実施形態のフローを示す。 本発明の実施形態のフローを示す。
本発明とみなされる主題が、特許請求の範囲において具体的に指摘され、明確に記載される。しかしながら、本発明は、構成及び実施方法の両方について、本発明の更なる目的及び利点と共に、添付図面と組み合わせて説明される以下の記載を参照することによって最も良く理解される。
メインフレームにおいて、アーキテクチャ化された(architected)マシン命令は、多くの場合にはコンパイラ・アプリケーションのために、(典型的には「C」言語でアプリケーションを書くが、Java(登録商標)、COBOL、PL/I、PL/X、Fortran及び他の高レベル言語でもアプリケーションを書く)プログラマによって用いられる。ストレージ媒体に格納されたこれらの命令は、本来はz/アーキテクチャIBMサーバにおいて、又は、代わりに他のアーキテクチャを実行するマシンにおいて、実行することができる。これらの命令は、既存の及び将来のIBMメインフレーム・サーバにおいて、並びに、IBMの他のマシン(例えば、pSeries(登録商標)サーバ及びxSeries(登録商標)サーバ)上で、エミュレートすることができる。これらの命令は、IBM(登録商標)、Intel(登録商標)、AMD(商標)、Sun Microsystemsなどにより製造されたハードウェアを用いる幅広い種類のマシン上でLinuxを稼働するマシンにおいて、実行することができる。z/アーキテクチャ(登録商標)下におけるそうしたハードウェア上での実行に加えて、Linuxは、Hercules、UMX、FSI(Fundamental Software,Inc)又はPlatform Solutions,Inc.(PSI)によるエミュレーションを用いるマシンでも用いることができ、これらにおいては、実行は一般にエミュレーション・モードである。エミュレーション・モードにおいては、エミュレーション・ソフトウェアがネイティブ・プロセッサによって実行され、エミュレートされたプロセッサのアーキテクチャをエミュレートする。
ネイティブ・プロセッサは、典型的には、ファームウェア又はネイティブ・オペレーティング・システムのいずれかを含むエミュレーション・ソフトウェアを実行して、エミュレートされたプロセッサのエミュレーションを行う。エミュレーション・ソフトウェアは、エミュレートされたプロセッサ・アーキテクチャの命令をフェッチして実行することを担当する。エミュレーション・ソフトウェアは、命令の境界(instruction boundaries)を追跡するために、エミュレートされたプログラム・カウンタを維持する。エミュレーション・ソフトウェアは、1つ又は複数のエミュレートされたマシン命令を同時にフェッチし、1つ又は複数のエミュレートされたマシン命令を、ネイティブ・プロセッサにより実行するためのネイティブ・マシン命令の対応するグループに変換することができる。これらの変換された命令は、より早い変換が実現できるように、キャッシュすることができる。それにもかかわらず、エミュレーション・ソフトウェアは、エミュレートされたプロセッサのために書かれたオペレーティング・システム及びアプリケーションが正しく動作することを保証するように、エミュレートされたプロセッサ・アーキテクチャのアーキテクチャ規則を維持しなければならない。さらに、エミュレーション・ソフトウェアは、エミュレートされたプロセッサを稼働するように設計されたオペレーティング・システム又はアプリケーション・プログラムを、エミュレーション・ソフトウェアを有するネイティブ・プロセッサ上で稼働することができるように、制御レジスタ、汎用レジスタ(多くの場合、浮動小数点レジスタを含む)、例えばセグメント・テーブル及びページ・テーブルを含む動的アドレス変換機能、割り込み機構、コンテキスト切り替え機構、時刻機構及びI/Oサブシステムへのアーキテクチャ化されたインターフェースを含むがこれらに限定されない、エミュレート・プロセッサ・アーキテクチャにより識別されるリソースを、提供しなければならない。
エミュレートされている特定の命令はデコードされ、個々の命令の機能を実行するためにサブルーチンが呼び出される。エミュレートされたプロセッサの機能をエミュレートするエミュレーション・ソフトウェア機能は、例えば、「C」言語のサブルーチン若しくはドライバで、又は、好ましい実施形態の記載を理解した後であれば当業者の知識の範囲内である特定のハードウェアのためのドライバを与える他のいくつかの方法で、実装される 。発明の名称が「Multiprocessor for hardware emulation」であるBeausoleilらの特許文献1(米国特許第5551013号)、発明の名称が「Preprocessingof stored target routines for emulating incompatible instructions on a targetprocessor」であるScalziらの特許文献2(米国特許第6009261号)、及び発明の名称が「Decoding guest instructionto directly access emulation routines that emulate the guest instructions」であるDavidianらの特許文献3(米国特許5574873号)、発明の名称が「Symmetricalmultiprocessing bus and chipset used for coprocessor support allowingnon-native code to run in a system」であるGorishekらの特許文献4(米国特許6308255号)、発明の名称が「Dynamicoptimizing object code translator for architecture emulation and dynamicoptimizing object code translation method」であるLethinらの特許文献5(米国特許6463582号)、発明の名称が「Methodfor emulating guest instructions on a host computer through dynamicrecompilation of host instructions」であるEric Trautの特許文献6(米国特許5790825号)、及び他の多くの特許を含むがこれらに限定されない、種々のソフトウェア及びハードウェア・エミュレーション特許は、当業者が利用可能なターゲット・マシンについて異なるマシンのためのアーキテクチャ化された命令フォーマットのエミュレーションを実現する種々の公知の方法、並びに、上述の文献によって用いられる市販のソフトウェアの技術を示す。
図1を参照すると、ホスト・コンピュータ・システム100の代表的なコンポーネントが示される。当該技術分野において公知のコンピュータ・システムにおいて、コンポーネントの他の構成が用いられることもある。
ホスト・コンピュータ環境は、好ましくは、ニューヨーク州アーモンクのInternational Business Machines Corporation(IBM(登録商標))によって提供されるz/Architectureに基づく。z/Architectureは、非特許文献1により完全に記載される。z/Architectureに基づくコンピュータ環境は、例えば、いずれもIBM(登録商標)によるeServer(商標)及びzSeries(登録商標)を含む。
代表的なホスト・コンピュータ100は、主記憶(コンピュータ・メモリ102)と通信する1つ又は複数のCPU101と、他のコンピュータ又はSANなどと通信するためのネットワーク110及びストレージ・デバイス111へのI/Oインターフェースと、を含む。CPUは、プログラム・アドレス(仮想アドレス)をメモリの実アドレスへ変換するための動的アドレス変換(DAT)103を有することができる。DATは、典型的には、コンピュータ・メモリ102のブロックへの後のアクセスがアドレス変換の遅延を要しないように変換をキャッシュするためのトランスレーション・ルックアサイド・バッファ(TLB)107を含む。典型的には、キャッシュ109は、コンピュータ・メモリ102とプロセッサ101との間に用いられる。キャッシュ109は、2つ以上のCPUが利用可能な大きなキャッシュと、その大きなキャッシュと各々のCPUとの間のより小さくより早い(より低いレベルの)キャッシュとを有する階層とすることができる。いくつかの実装形態においては、命令のフェッチ及びデータのアクセスのための別個の低レベル・キャッシュを提供するために、より低レベルのキャッシュが分割される。一実施形態においては、命令は、命令フェッチ・ユニット104によってメモリ102からキャッシュ109を介してフェッチされる。命令は、命令デコード・ユニット106においてデコードされ、(いくつかの実施形態においては他の命令と共に)命令実行ユニット108にディスパッチされる。典型的には、例えば、演算実行ユニット、浮動小数点実行ユニット及び分岐命令実行ユニットといったいくつかの実行ユニット108が用いられる。命令は、実行ユニットによって実行され、必要に応じて、命令が特定したレジスタ又はメモリからオペランドにアクセスする。オペランドがメモリ102からアクセス(読み込み又は格納)される場合には、ロード・ストア・ユニット105が、典型的には、実行されている命令の制御下でそのアクセスを処理する。
一実施形態においては、本発明は、(ライセンス内部コード(LIC)、ファームウェア、マイクロ・コード、ミリコード、ピココードなどと呼ばれることがあり、そのいずれも本発明と整合性がある)ソフトウェアによって実施することができる。本発明を具体化するソフトウェア・プログラム・コードは、典型的には、CD-ROMドライブ、テープ・ドライブ又はハード・ドライブのような長期ストレージ媒体111から、コンピュータ・システム100のCPU(中央処理ユニット)101としても知られるプロセッサによってアクセスされる。ソフトウェア・プログラム・コードは、ディスケット、ハード・ドライブ、又はCD-ROMといった、データ処理システムと共に用いられる様々な公知の媒体のいずれかの上に具体化することができる。コードは、そのような媒体上に分散させてもよく、ネットワーク110上の1つのコンピュータ・システムのコンピュータ・メモリ102又はストレージから他のシステムのユーザによって用いられる他のコンピュータ・システムに分散させてもよい。
代替的に、プログラム・コードは、メモリ102内に具体化し、プロセッサ101がプロセッサ・バスを用いてアクセスすることができる。そのようなプログラム・コードは、種々のコンピュータ・コンポーネント及び1つ又は複数のアプリケーション・プログラムの機能及び対話を制御するオペレーティング・システムを含む。プログラム・コードは、通常、高密度ストレージ媒体111から高速メモリ102にページングされ、そこで、プロセッサ101による処理のために利用可能となる。ソフトウェア・プログラム・コードをメモリ内に具体化するための技術及び方法、ソフトウェア・プログラム・コードを物理媒体上に具体化するための技術及び方法、及び/又は、ネットワークを介してソフトウェア・コードを分散させるための技術及び方法はよく知られており、本明細書中ではこれ以上は説明しない。プログラム・コードは、電子メモリ・モジュール(RAM)、フラッシュ・メモリ、コンパクト・ディスク(CD)、DVD、磁気テープなどを含むがこれらに限定されない有形の媒体上に生成され、格納されるときには、「コンピュータ・プログラム製品」と呼ばれることが多い。コンピュータ・プログラム製品媒体は、典型的には、好ましくはコンピュータ・システム内の処理回路によって、その処理回路が実行するために、読み取り可能である。
図2においては、ホスト・アーキテクチャのホスト・コンピュータ・システム100をエミュレートする、エミュレートされたホスト・コンピュータ・システム201の例が提供される。エミュレートされたホスト・コンピュータ・システム201において、ホスト・プロセッサ(CPU)208は、エミュレートされたホスト・プロセッサ(又は仮想ホスト・プロセッサ)であり、ホスト・コンピュータ100のプロセッサ101により用いられるものとは異なるネイティブ命令セット・アーキテクチャを有するエミュレーション・プロセッサ207を含む。エミュレートされたホスト・コンピュータ・システム201は、エミュレーション・プロセッサ207がアクセス可能なメモリ202を有する。実施形態の例においては、メモリ202は、ホスト・コンピュータ・メモリ102の部分と、エミュレーション・ルーチン203の部分とにパーティション化される。ホスト・コンピュータ・メモリ102は、ホスト・コンピュータ・アーキテクチャに従って、エミュレートされたホスト・コンピュータ201のプログラムが利用可能である。エミュレーション・プロセッサ207は、エミュレートされたプロセッサ208の命令ではなく、エミュレーション・ルーチン・メモリ203から取得された、アーキテクチャのアーキテクチャ化された命令セットのネイティブ命令を実行し、アクセスされるホスト命令をデコードしてアクセスされるホスト命令の機能をエミュレートするためのネイティブ命令実行ルーチンを決定することができるSequence&Access/Decodeルーチンにおいて取得される1つ又は複数の命令を使用することによって、ホスト・コンピュータ・メモリ102内のプログラムから実行するためのホスト命令にアクセスすることができる(要再考)。
例えば、汎用レジスタ、制御レジスタ、動的アドレス変換、及びI/Oサブシステム・サポート及びプロセッサ・キャッシュといったファシリティを含む、ホスト・コンピュータ・システム100アーキテクチャのために定められた他のファシリティは、アーキテクチャ化されたファシリティ・ルーチンによってエミュレートすることができる。エミュレーション・ルーチンは、エミュレーション・ルーチンの性能を改善するために、エミュレーション・プロセッサ207において利用可能な(汎用レジスタ、及び、仮想アドレスの動的変換のような)機能を利用することもできる。ホスト・コンピュータ100の機能をエミュレートする際にプロセッサ207を補助するために、特別なハードウェア及びオフロード・エンジンを提供することもできる。
トポロジ情報をプログラムに提供するために、二つの命令が用意される。第一は、従来技術の命令であるSTSI(STORE SYSTEM INFORMATION)に対する機能強化であり、第二は、新たな命令であるPTF(PERFORM TOPOLOGY FUNCTION)である。
CPUトポロジの概要
新たなIBM eSeriesメインフレームの出現とともに、及びそれ以前でも、マシン編成をノード構造にすることによって、不均一なメモリアクセス(NUMA)挙動(「ランピネス(lumpiness)」と呼ばれることもある)が生じていた。従来技術であるSTSI(STORE SYSTEM INFORMATION)命令の新たなSYSIB 15.1.2機能及び新たなPERFORM TOPOLOGY FUNCTION(PTF)命令の目的は、(キャッシュ-ヒット率の向上を含む)一定の最適化を行い、それにより全体の性能を改善することができるように、付加的なマシン・トポロジをプログラムに認識させることである。マルチ・プロセッシング(MP)ゲスト構成に割り当てられるホストCPUリソースの量は、一般に、構成されたゲストCPUの数に対して均等に配分されてきた。(ゲストCPUは、プログラムに提供される論理CPUであり、全てのゲストCPUは、実際のホストCPU上にパーティション化されたソフトウェア/ハードウェアによってサポートされる。) こうした均等な配分は、特定のゲストCPU(又は、複数のCPU)のいずれも、他の任意に決定されたどのゲストCPUよりもいずれかの予備のホストCPUプロビジョニングに対する権利があるわけではないことを意味する。ゲスト構成のこの条件は、この構成における全てのCPUに影響を及ぼすものであり、「水平極性(horizontal polarization)」と呼ばれる。水平極性の下においては、ゲストCPUに対するホストCPUの割り当ては、ゲストCPUごとに概ね同量のプロビジョニングである。プロビジョニングが専用ではないときには、ゲストCPUをプロビジョニングする同じホストCPUを用いて、別のゲストのゲストCPUをプロビジョニングすることもできるし、同じゲスト構成の他のゲストCPUをプロビジョニングすることさえできる。
他のゲスト構成が異なる論理パーティションである場合には、ホストCPUは、各々のパーティションでアクティブなときには、多数の再配置ゾーン(relocation zones)にわたってキャッシュを共有しなければならないことによってキャッシュ・ヒット率が低下するため、典型的には、より多く主ストレージにアクセスしなければならない。いくつかのホストCPUが主として、さらには排他的に、所与のゲスト構成に割り当てられる(及び、正常な挙動になる)ように、ホストCPUプロビジョニングのバランスを変えることができる場合には、キャッシュ・ヒット率が向上し、性能も改善される。こうした不均等な配分は、1つ又は複数のゲストCPUが、より少ないホストCPUプロビジョニングに対する権利を有する他の任意に決定されたゲストCPUに対して、予備のホストCPUプロビジョニングに対する権利を有することを意味する。ゲスト構成のこの条件は、この構成における全てのCPUに影響を及ぼすものであり、「垂直極性(vertical polarization)」と呼ばれる。本明細書において提示されるアーキテクチャは、垂直極性を、プロビジョニングの権利の三つのレベル、すなわち、高、中、低に分類する。
高権利(high entitlement)は、ホストCPUの約100%が論理/仮想CPUに割り当てられていることを保証するものであり、アフィニティは、両者の間で強い一致として維持される。論理パーティションのプロビジョニングに関して、垂直極性が有効であるときには、専用CPUの権利は高であると定義される。
中権利(medium entitlement)は、特定されない量のホストCPUリソース(1つ又は複数のホストCPU)が論理/仮想CPUに割り当てられていることを保証するものであり、ホストCPUの残りのキャパシティは、どこにでも割り当てることができるスラックであるとみなされる。利用可能なスラックについての最良のケースは、可能であればスラックをローカル・スラックとして割り当てることである。その利用可能なスラックがリモート・スラックとして割り当てられる場合には、有益性がより低い結果が生じる。中権利の論理CPUに割り当てられるリソースの割合は、高権利設定の100%に近いことと比較して、より融通性のある概算値のケースもある。
低権利(low entitlement)は、ホストCPUの約0%が論理/仮想CPUに割り当てられていることを保証する。しかしながら、スラックが利用可能な場合には、こうした論理/仮想CPUは、依然として多少のCPUリソースを受け取ることができる。極性を用いるネストされたコンテナのモデルは、要求する構成に適用するときにマシンのノード構造に関してあるレベルの知識を与えるように意図されており、その結果、一般に、ホストCPUのクラスタをゲストCPUのクラスタに割り当てることができ、それにより、ストレージの共有と、同一のホストCPU上で実質的に衝突する異なる構成を最小限にすることとを可能な限り改善する。極性及び権利は、ゲスト構成における論理CPUと物理CPUとの関係又は仮想CPUと論理CPUとの関係を示し、ゲスト構成に割り当てられるキャパシティがその構成を含むCPU全体にわたってどのように分配されるかを示す。
歴史的に、ゲスト構成は水平極性とされてきた。どれだけ多くのゲストCPUが構成に定められたとしても、割り当てられるホストCPUリソースは、何らかの権利を与えられることもなく公平に、ゲストCPUの全てにわたって均等に配分されていた。水平極性が有効であるときには、論理パーティションにおける単一の論理CPUの重みは、構成全体の重みをCPUの数で割ったものに概ね等しいということができる。しかしながら、2097とそのファミリー・モデルの導入とともに、ホストCPUリソースを異なる方法で、すなわち、構成の垂直極性と呼ばれる方法で配分できることが不可欠となり、ホストCPUを用いたゲストCPUのプロビジョニングの程度は、高権利、中権利、又は低権利として示される。垂直極性構成の論理/仮想CPUが同じホストCPUによって完全に支援される(backed)ときには、高権利が有効である。垂直極性構成の論理/仮想CPUがホストCPUによって部分的に支援されるときには、中権利が有効である。垂直極性構成の論理/仮想CPUが、利用可能となるスラック・リソースによって利用可能となる可能性があるもの以外にいずれのホストCPUリソースによっても保証されないときには、低権利が有効である。
CPUスラック
CPUリソースについて、2種類のスラックCPUリソースが存在する。
ローカル・スラックは、構成の論理/仮想CPUが権利を有する全てのリソースを使用していないときに利用可能となり、こうしたスラックは、そのCPUの構成内で用いられる。ローカル・スラックは、スラックが構成内で用いられるときにキャッシュにおけるより良好なヒット率が期待されるため、リモート・スラックより好ましい。
リモート・スラックは、構成の論理/仮想CPUが権利を有する全てのリソースを使用していないときに利用可能となり、こうしたスラックは、そのCPUの構成外で用いられる。リモート・スラックは、キャッシュにおけるヒット率が低いことが予想されるが、論理/仮想CPUを全く稼働させないよりはましである。
目的は、CPUキャッシュ・ヒット率を最大にすることである。論理パーティションについて、物理CPUリソースの量は、各々の論理パーティションに割り当てられるCPUリソースを決定するシステム全体の重みによって決定される。例えば、単一のCPUに相当する物理CPUリソースを割り当てられ、水平極性を有する、論理3−wayMPにおいては、各々の論理CPUは、独立にディスパッチされ、従って約33%の物理CPUリソースを受け取る。同一の構成が垂直極性を有するものとすると、単一の論理CPUのみが稼働し、割り当てられた物理CPUリソースの約100%を受け取る(高権利)が、残りの2つの論理CPUは、通常はディスパッチされない(低権利)。そのようなリソース割り当ては、通常は、概算である。低権利CPUであっても、プログラムがそのようなCPU上でスタックしないことを保証するためだけに、若干のリソースを受け取る。制御プログラムが、極性を認識することを示し、CPUの極性と、垂直極性の場合にはその権利の程度とについて各々のCPUについての指示を受け取るための手段を提供することによって、制御プログラムは、構成の全てのCPUが利用可能であるのに対して一般にCPUに局在すると考えられるデータ構造を、よりインテリジェントに使用することができる。また、そのような制御プログラムは、いずれかの低権利CPUに作業を指示することを避けることができる。割り当てられた実際の物理CPUリソースは、整数のCPUを構成しないこともあり、そのため、MP垂直極性構成における1つ又は複数のCPUが、権利を与えられてはいるがその程度が高くない可能性も存在し、それにより、こうしたCPUは垂直極性における中権利か低権利のいずれかを有することになる。残りのいずれかの低権利CPUは、若干のホストCPUリソースを受け取ることができる。例えば、このことは、こうしたCPUがSIGP命令などを介してターゲットとされ、スラック・ホストCPUリソースが使用可能であるときに、発生することがある。そうでなければ、こうした論理/仮想CPUは、ディスパッチされる能力がある場合でも、ディスパッチされない状態にとどまることがある。
好ましくは、本発明によれば、STORE SYSTEM INFORMATION(STSI)命令の新たなCPUタイプ「トポロジ・リスト・エントリ」(TLE)のために、2ビットの極性フィールドが定められる。CPUごとの垂直極性における権利の程度は、高、中、又は低として示される。割り当ては、正確な割合ではなく、多少ファジーであり、ヒューリスティックなものである。
ゲストCPUに重みを再割り当てする手段としての垂直極性に加えて、別の概念が存在し、それは、スラック・キャパシティ(「ホワイト・スペース」とも呼ばれる)の生成及び管理である。スラック・キャパシティは、以下の環境の下で生成される。
・高−垂直CPUは、その平均稼働率(AU)が100パーセント(100−AU)を下回るとき、スラックに寄与する。
・ホストCPUのMパーセントの割り当てプロビジョニングを有する中−垂直CPUは、その平均稼働率(AU)がMパーセント(M−AU>0)を下回るとき、スラックに寄与する。
・低−垂直CPUは、スラックに寄与しない。
・高−垂直CPUは、スラックを消費しない。
STORE SYSTEM INFORMATION命令
STORE SYSTEM INFORMATION命令のフォーマットの例示的な実施形態である図3は、オペコード・フィールド「B27D」と、ベース・レジスタ・フィールドB2と、符号付き置換フィールドD2とを含む。命令オペコードは、命令と関連付けられた暗黙汎用レジスタ「0」及び「1」が存在することを、その命令を実行するマシンに知らせる。アドレスは、ベース・フィールドによって特定される汎用レジスタの内容に符号付き置換フィールド値を追加することによって、第2オペランドから得られる。一実施形態においては、ベース・レジスタ・フィールドが「0」であるときには、置換フィールドの符号拡張値は、第2オペランドを特定するために直接用いられる。汎用レジスタ0における機能コードに応じて、STORE SYSTEM INFORMATION命令がフェッチされ実行されるときに、プログラムを実行する構成のレベルの識別情報が汎用レジスタ0に置かれるか、又は、構成の1つ又は複数のコンポーネントに関する情報がシステム情報ブロック(SYSIB)に格納される。1つ又は複数のコンポーネントに関する情報が要求されたときには、その情報は、汎用レジスタ0の更なる内容と、汎用レジスタ1の内容とによって、特定される。
SYSIBがある場合には、SYSIBは第2オペランド・アドレスによって指定される。マシンは、1つ、2つ、又は3つのレベルの構成を提供すると考えられる。レベルは以下の通りである。
1.ベーシック・モード又は非翻訳命令実行モード(non-interpretiveinstruction-execution)で作動しているかのようなマシンであるベーシック・マシン。
2.マシンがLPAR(論理パーティション、翻訳命令実行(interpretive instruction-execution))モードにおいて作動している場合に提供される論理パーティション。論理パーティションは、マシンの一部であるLPARハイパーバイザによって提供される。ベーシック・マシンは、マシンがLPARモードにおいて作動しているときにも存在する。
3.ベーシック・マシンによって実行されるか又は論理パーティションにおいて実行される仮想マシン(VM)制御プログラムによって提供される仮想マシン。仮想マシン自体は、レベル3構成とも見なされるより高レベルの(ベーシック・マシンからより離れた)仮想マシンを提供するVM制御プログラムを実行することができる。ベーシック・モード、LPARモード、論理パーティション、ハイパーバイザ、及び仮想マシンという用語、並びにそれらの用語に特に関連する他のいずれかの用語は、本公開において定義されず、それらの用語は、マシン・マニュアルにおいて定義される。レベル1構成(ベーシック・マシン)によって実行されているプログラムは、その構成に関する情報を要求することができる。レベル2構成(論理パーティションにおける)によって実行されているプログラムは、論理パーティション及び下層のベーシック・マシンに関する情報を要求することができる。レベル3構成(仮想マシン)によって実行されているプログラムは、仮想マシン及び1つ又は2つの下層レベルに関する情報を要求することができる。すなわち、ベーシック・マシンは常に下層にあり、論理パーティションは、ベーシック・マシンと仮想マシンとの間に存在することもあるし、存在しないこともある。仮想マシンに関する情報が要求されたときには、プログラムを実行する構成に関する情報、及び、仮想マシンの下層にあるいずれか1つ又は複数のレベルに関する情報が提供される。これらの場合のいずれにおいても、レベルが命令を実施する場合に限り、そのレベルに関する情報が提供される。
動作を決定する機能コードは、汎用レジスタ0のビット位置32−35における符号なし2進整数であり、以下のとおりである。
機能コード 要求される情報
0 現在の構成のレベルの数
1 レベル1に関する情報(ベーシック・マシン)
2 レベル2に関する情報(論理パーティション)
3 レベル3に関する情報(仮想マシン)
4−14 なし;コードは未使用である
15 現在の構成のレベルの情報
無効な機能コード
プログラムを実行する構成のレベルは、現在レベル(current level)と呼ばれる。ゼロ以外の機能コードによって特定される構成のレベルは、特定レベル(specifiedlevel)と呼ばれる。特定レベルの番号が現在レベルより大きいときには、機能コードは無効と呼ばれ、条件コードは3に設定され、(チェックを含む)他のアクションは行われない。
有効な機能コード
機能コードは、現在レベルの数字と等しいか又はそれより小さいときには、有効と呼ばれる。この場合には、汎用レジスタ0のビット36−55及び汎用レジスタ1のビット32−47は、ゼロ又は15でなければならず、さもなければ、指定例外(specification exception)が認識される。汎用レジスタ0及び1のビット0−31は、常に無視される。機能コードが0のときには、現在の構成のレベルを特定する符号なし2進整数(ベーシック・マシンの1、論理パーティションの2、又は仮想マシンの3)は、汎用レジスタ0のビット位置32−35に置かれ、条件コードは0に設定され、さらなるアクションは行われない。機能コードが有効で、ゼロ以外のときには、汎用レジスタ0及び1は、以下のように、要求される情報に関する追加の指定を含む。
・汎用レジスタ0のビット位置56−63は、特定構成の1つ又は複数のコンポーネントを特定する、セレクタ1と呼ばれる符号なし2進整数を含む。
・汎用レジスタ1のビット位置48−63は、要求される情報のタイプを特定する、セレクタ2と呼ばれる符号なし2進整数を含む。
汎用レジスタ0及び1の内容は、図4に示される。
機能コードが有効で、ゼロ以外のときには、第2オペランドの場所で開始するシステム情報ブロック(SYSIB)に情報を格納することができる。SYSIBは、4Kバイトであり、4Kバイト境界で開始しなければならず、さもなければ、セレクタ1及びセレクタ2、並びに、SYSIBへの参照に起因するアクセス例外(access exceptions)が認識されるかどうかに応じて、指定例外が認識されることがある。
セレクタ1は以下のような値を持つことができる。
セレクタ1 要求される情報
0 なし;セレクタは未使用である
1 機能コードによって特定される構成レベルに関する情報
2 特定される構成レベルにおける1つ又は複数のCPUに関する情報
3−255 なし;セレクタは未使用である
セレクタ1が1のときには、セレクタ2は以下のような値を持つことができる。
セレクタ1が1の
ときのセレクタ2 要求される情報
0 なし;セレクタは未使用である
1 特定される構成レベルに関する情報
2 特定される構成レベルに関するトポロジ情報
3−65,535 なし;セレクタは未使用である
セレクタ1が2のときには、セレクタ2は以下のような値を持つことができる。
セレクタ1が2の
ときのセレクタ2 要求される情報
0 なし;セレクタは未使用である
1 特定される構成レベルにおいてプログラムを実行するCPUに関 する情報
2 特定される構成レベルにおける全てのCPUに関する情報
3−65,535 なし;セレクタは未使用である
図5に示されるように、機能コード、セレクタ1、及びセレクタ2の特定の組み合わせのみが有効である。
機能コード、セレクタ1、及びセレクタ2の特定の組み合わせが無効である(図5において示されるもの以外である)とき、或いは、特定されるレベルが命令を実行しないか若しくは完全には実行しないため又はレベルの必要な部分がアンインストールされたか若しくは初期化されていないために、組み合わせは有効ではあるが要求される情報が利用不可能である場合には、例外が認識されない条件で、条件コードが3に設定される。機能コードがゼロ以外のときには、組み合わせは有効であり、要求される情報は使用可能であり、要求される情報は、例外なく第2オペランド・アドレスにおいてシステム情報ブロック(SYSIB)に格納される。
SYSIBのいくつか又は全ては、格納される前にフェッチすることができる。
SYSIBは、「fc」、「s1」、及び「s2」をそれぞれ機能コード、セレクタ1、及びセレクタ2の値とすると、「SYSIB fc.s1.s2」を用いて参照において識別することができる。
以下の項に、図及び関連するテキストを用いて、定められたSYSIBを記載する。図において、左に示されるオフセットはワード値である(1ワードは4バイトからなる)。「構成」は、機能コードによって特定される構成レベル(情報が要求される構成レベル)をいう。
SYSIB 1.1.1(ベーシック・マシン構成)
SYSIB 1.1.1は、図6に示されるフォーマットを有し、フィールドは以下の意味を有する。
未使用(reserved):ワード0−7、13−15、及び29−63の内容は、未使用であり、ゼロとして格納される。ワード64−1023の内容は未使用であり、ゼロとして格納するか又は不変とすることができる。
製造者(Manufacturer):ワード8−11は、構成の製造者の16文字(0−9又は大文字A−Z)EBCDIC名を含む。この名前は、必要に応じて末尾の空白を用いて左詰めされる。
タイプ:ワード12は、構成の4文字(0−9)EBCDICタイプ番号を含む。(これは、STORE CPU IDの定義においてマシンタイプ番号と呼ばれる。)
モデル・キャパシティ識別子(Model-Capacity Identifier):ワード16−19は、構成の16文字(0−9又は大文字A−Z)EBCDICモデル・キャパシティ識別子を含む。モデル・キャパシティ識別子は、必要に応じて末尾の空白を用いて左詰めされる。
連続コード(Sequence Code):ワード20−23は、構成の16文字(0−9又は大文字A−Z)EBCDIC連続コードを含む。連続コードは、必要に応じて先頭のEBCDICゼロを用いて右詰めされる。
製造プラント(Plant of Manufacture):ワード24は、構成の製造プラントを識別する4文字(0−9又は大文字A−Z)EBCDICコードを含む。コードは、必要に応じて末尾の空白を用いて左詰めされる。
モデル(Model):ワード25が2進数のゼロではないときに、ワード25−28は、構成の16文字(0−9又は大文字A-Z)EBCDICモデル識別情報を含む。モデル識別情報は、必要に応じて末尾の空白を用いて左詰めされる。(これは、STORE CPU IDのページ10−111のプログラミング・ノート4においてモデル番号と呼ばれる。) ワード25が2進数のゼロのときには、ワード16−19の内容は、モデル・キャパシティ識別子及びモデルの両方を表す。
プログラミング・ノート
1.SYSIB 1.1.1のフィールドは、刊行物 Common I/O-Device Commands and Self Descriptionに記載されるノード記述子のフィールドと類似している。しかしながら、SYSIBフィールドの内容は、SYSIBフィールドが、
・より多くの文字を許容する
・許容される文字のタイプに関して、より融通性がある
・フィールド内部で異なって揃えられる情報を提供する
・連続コード・フィールドのようなフィールドの内容を決定するために同一の方法を用いることができない
という理由により、対応するノード記述子フィールドの内容と同一ではない場合がある。
2.ノード記述子におけるモデル・フィールドは、STSIモデル・フィールドの内容に対応し、STSIモデル・キャパシティ識別子フィールドには対応しない。
3.モデル・フィールドは、マシンのモデル(即ち、物理モデル)を特定し、モデル・キャパシティ識別子フィールドは、モデルについてのシステム・ライブラリのパブリケーションにキャパシティ又は性能の命令文を配置するのに用いることができるトークンを特定する。
SYSIB 1.2.1(ベーシック・マシンCPU)
SYSIB 1.2.1は、図7に示されるフォーマットを有し、フィールドは以下の意味を有する。

未使用:ワード0−19、ワード25のバイト0及び1、並びに26−63の内容は、未使用であり、ゼロとして格納される。ワード64−1023の内容は、未使用であり、ゼロとして格納するか又は不変することができる。
連続コード:ワード20−23は、構成の16文字(0-9又は大文字A-Z)EBCDIC連続コードを含む。コードは、必要に応じて先頭のEBCDICゼロを用いて右詰めされる。
製造プラント:ワード24は、構成の製造プラントを識別する4文字(0-9又は大文字A-Z)EBCDICコードを含む。コードは、必要に応じて末尾の空白を用いて左詰めされる。
CPUアドレス:ワード25のバイト2及び3はCPUアドレスを含み、そのアドレスによって、このCPUがマルチ・プロセッシング構成において識別される。CPUアドレスは、16ビット符号なし2進整数である。CPUアドレスは、プログラムがベーシック・モードで動作しているマシンによって実行されるときにSTORE CPU ADDRESSによって格納されるものと同一である。
プログラミング・ノート
同一の構成における多数のCPUは、同一の連続コードを有しており、固有のCPU識別を確立するために、CPUアドレスのような他の情報を用いることが必要である。ベーシック・マシンCPU及び論理パーティションCPUについて戻される連続コードは、同一であり、ベーシック・マシン構成について戻される連続コードと同一の値を有する。
SYSIB 1.2.2(ベーシック・マシンCPU)
ワード0のバイト0におけるフォーマット・フィールドは、SYSIBのフォーマットを決定する。フォーマット・フィールドがゼロの値を持つときには、SYSIB 1.2.2は、図8に示されるようなフォーマット−0レイアウトを有する。フォーマット・フィールドが1の値を持つときには、SYSIB 1.2.2は、図9に示されるようなフォーマット−1レイアウトを有する。
未使用:
フォーマット・フィールドがゼロの値を含むとき、ワード0及びワード1−6のバイト1−3の内容は、未使用であり、ゼロとして格納される。フォーマット・フィールドが1の値を含むとき、ワード0及びワード1−6のバイト1の内容は、未使用であり、ゼロとして格納される。全てのCPUについての情報を含むために64ワードより少ないワードで十分であるときには、フォーマット−0 SYSIBにおける調整因子リストに続くワード63までのSYSIBの部分、又は、フォーマット−1 SYSIBにおける代替調整因子リストに続くワード63までのSYSIBの部分は、未使用であり、ゼロとして格納される。ワード64−1023の内容は、未使用であり、ゼロとして格納するか又は不変とすることができる。全てのCPUについての情報を含むために64ワード又はそれ以上のワードが必要なときには、フォーマット−0 SYSIBにおける調整因子リストに続くワード1023までのSYSIBの部分、又は、フォーマット−1 SYSIBにおける代替調整因子リストに続くワード1023までのSYSIBの部分は、未使用であり、ゼロとして格納するか又は不変とすることができる。
フォーマット:
ワード0のバイト0は、SYSIB 1.2.2のフォーマットを特定する8ビット符号なし2進整数を含む。
代替CPU能力オフセット:
フォーマット・フィールドが1の値を持つとき、ワード0のバイト2−3は、SYSIBにおける代替CPU能力フィールドのバイトのオフセットを特定する16ビット符号なし2進整数を含む。
第2のCPU能力:
ワード7は、ゼロではないときに構成における特定のタイプのCPUに適用することができる第2の能力を特定する、32ビット符号なし2進整数を含む。この整数を生成するのに用いられるアルゴリズムの公式的な記述は、CPU能力を生成するのに用いられるアルゴリズムと同一ものを除いて存在しない。この整数は、他のCPUモデルの能力及びモデル内の他のCPUタイプの能力と比較した、CPUの能力の指標として用いられる。能力の値は、構成における1つ又は複数の適用可能なCPUタイプのCPUの各々に適用する。すなわち、適用可能な1つ又は複数のタイプの構成における全てのCPUは、同一の能力を有する。値がゼロのときには、構成におけるいずれかのCPUタイプの全てのCPUは、CPU能力によって特定される能力と同一の能力を有する。第2のCPU能力は、CPU能力の値と同一の値の場合もあるし、そうでない場合もある。マルチ・プロセッシングCPU能力調整因子は、能力が第2のCPU能力によって特定されるCPUにも適用される。
CPU能力:
ワード8のビット0-8がゼロの場合には、ワードは、構成におけるCPUの1つの能力を特定する範囲0<I<223の32ビット符号なし2進整数(I)を含む。ワード8のビット0−8がゼロ以外の場合には、ワードは、32ビット符号なし2進整数の代わりに、32ビット2進浮動小数点ショート・フォーマット数を含む。符号化に関わらず、より低い値は、比例的により高いCPU能力を示す。その上、この値を生成するのに用いられるアルゴリズムの公式的な記述は存在しない。値は、他のCPUモデルの能力と比較したCPUの能力の指標として用いられる。能力の値は、構成における第2のCPU以外の各々に適用される。すなわち、構成における第2のCPU以外の全ては、同一の能力を有する。
全CPUカウント:
ワード9のバイト0及び1は、構成におけるCPUの全数を特定する16ビット符号なし2進整数を含む。この数は、構成状態(configured state)、待機状態(standby state)、又は未使用状態(reserved state)にある全てのCPUを含む。
構成CPUカウント:
ワード9のバイト2及び3は、構成状態にあるCPUの数を特定する16ビット符号なし2進整数を含む。CPUは、構成内に存在し、プログラムを実行するのに用いることが可能であるとき、構成状態にある。
待機CPUカウント:
ワード10のバイト0及び1は、待機状態にあるCPUの数を限定する16ビット符号なし2進整数を含む。CPUは、構成内にあり、プログラムを実行するのに用いられることができず、構成状態にする命令を発行することによって利用可能にすることができるときには、待機状態にある。
未使用CPUカウント:
ワード10のバイト2及び3は、未使用状態にあるCPUの数を特定する16ビット符号なし2進整数を含む。CPUは、構成内にあり、プログラムを実行するのに用いられることができず、構成状態にする命令を発行することによって利用可能にすることができないときには、未使用状態にある。(マニュアル動作によって未使用CPUを待機状態又は構成状態にすることが可能である)
マルチ・プロセッシングCPU能力調整因子:
SYSIBは、ワード11のバイト0及び1で始まり、一連の連続する2バイト・フィールドを含み、各々のフィールドは、CPU能力フィールドに含まれる値についての調整因子(分数)を形成するのに用いられる16ビット符号なし2進整数を含む。そのような分数は、以下の方法の一つに従って、最初の2バイト・フィールドの値(V)を用いることによって作られる。
・Vが0<V≦100の範囲にある場合には、分母100が示され、分数V/100を生成する。
・Vが101≦V<255の範囲にある場合には、分母255が示され、分数V/255を生成する。
・Vが255≦V≦65,536の範囲にある場合には、分母65,536が示され、分数V/65,536を生成する。
このように、示された分母で2バイト・フィールドの内容を割ることによって、各々の2バイト・フィールドにより表現される分数が作られる。調整因子フィールドの数は、全CPUカウント・フィールドにおいて特定されるCPUの数より1つ少ない。調整因子フィールドは、構成状態にあるCPUの数を増加させた構成に対応する。第1の調整因子フィールドは、構成状態にある2つのCPUを持つ構成に対応する。連続する調整因子フィールドの各々は、前のフィールドの数より1つ多い、構成状態にあるCPUの数を持つ構成に対応する。
代替CPU能力:
フォーマット・フィールドが値1を有するとき、ワードNのビット0-8がゼロの場合には、ワードは、構成におけるCPUの一つの公表された能力を特定する0≦I<223の範囲の32ビット符号なし2進整数(I)を含む。ワードNのビット0-8がゼロ以外の場合には、ワードは、32ビット符号なし2進整数の代わりに、32ビット2進浮動小数点ショート・フォーマット数を含む。符号化に関わらず、より低い値は、比例的により高いCPU能力を示す。その上、この値を生成するのに用いられるアルゴリズムの公式的な記述は存在しない。値は、他のCPUモデルの公表された能力と比較した、CPUの公表された能力の指標として用いられる。代替能力の値は、構成におけるCPUの各々に適用する。すなわち、構成における全てのCPUは、同一の代替能力を有する。
代替マルチ・プロセッシングCPU能力調整因子:
SYSIBは、ワードN+1のバイト0及び1で始まり、一連の連続する2バイト・フィールドを含み、各々のフィールドは、代替CPU能力フィールドに含まれる値についての調整因子(分数)を形成するのに用いられる16ビット符号なし2進整数を含む。そのような分数は、以下の方法の一つに従って、最初の2バイト・フィールドの値(V)を用いることによって作られる。
・Vが0<V≦100の範囲にある場合には、分母100が示され、分数V/100を生成する。
・Vが101≦V<255の範囲にある場合には、分母255が示され、分数V/255を生成する。
Vが255≦V≦65,536の範囲にある場合には、分母65,536が示され、分数V/65,536が生成される。
このように、示された分母で2バイト・フィールドの内容を割ることによって、各々の2バイト・フィールドにより表現される分数が作られる。代替調整因子フィールドの数は、全CPUカウント・フィールドにおいて特定されるCPUの数より1つ少ない。代替調整因子要素フィールドは、構成状態にあるCPUの数を増加させた構成に対応する。第1の代替調整因子フィールドは、構成状態にある2つのCPUを持つ構成に対応する。連続する代替調整因子フィールドの各々は、前のフィールドの数より1つ多い、構成状態にあるCPUの数を持つ構成に対応する。
SYSIB 15.1.2 (構成トポロジ)
SYSIB 15.1.2は、図10に示されるフォーマットを有する。フィールドは、以下の意味を有する。
未使用:ワード0のバイト0-1、ワード2のバイト2、及びワード3の内容は、未使用であり、ゼロとして格納される。ワードN-1023の内容は未使用であり、ゼロとして格納するか又は不変とすることができる。
長さ:ワード0のバイト2-3は、16ビット符号なし2進整数を含み、その値は、SYSIB 15.1.2全体のバイトのカウントである。トポロジ・リストのみの長さは、ワード0のバイト2−3における長さの値から16を引くことによって求められる。図10におけるNは、式N=長さ/4の値を求めることによって決定される。
Mag1-6: ワード及びワードのバイト0-1は、6つの1バイト・フィールドを構成し、各々のバイトの内容は、対応するネスティング・レベルにおけるコンテナ・タイプ・トポロジ・リスト・エントリ(TLE)又はCPUタイプTLEの最大数を示す。CPUタイプTLEは、常に、Mag1レベルのみにおいてみられる。さらに、Mag1の値は、Mag2レベルのコンテナ・タイプTLEによって表すことができるCPUの最大数も特定する。ネスティング・レベルの値が1より大きいときには、Mag1レベルより上の含んでいるネスティング・レベルは、コンテナ・タイプTLEのみによって占有される。トポロジの動的変更によって、Mag1レベルにおけるTLEの数とCPUの数とが変わることがあるが、Mag1-6フィールドの値によって表される上限は、マシンのモデル・ファミリー内で変化しない。
トポロジは、エントリの構造化リストであり、エントリは、1つ又は複数のCPUを定めるか、そうでなければネスティング構造に関するものである。以下に、マグニチュード・フィールドの意味を示す。
マシンの全てのCPUが同等であり、全体としての中央処理複合体自体以外に収容構造が存在しないときには、ネスティング・レベルの値は1であり、Mag1は唯一のゼロ以外のマグニチュード・フィールドであり、格納されたCPUタイプTLEの数はMag1の値を超えない。
マシンの全てのCPUが、1つのレベルの収容状態が存在するように同等のグループに分割されるときには、ネスティング・レベルの値は2であり、Mag1及びMag2のみがゼロ以外のマグニチュード・フィールドであり、格納されるコンテナ・タイプTLEの数はMag2の値を越えず、各々のコンテナ内の格納されるCPUタイプTLEの数はMag1の値を超えない。
ネスティング・レベルの値が3-6の範囲にあるときには、Mag3-6バイトが同様に用いられるようになる(右から左の向きに進む)。
MNest:ワード2のバイト3は、ゲスト・プログラムが残存できるようにし続けながら構成を拡張することができるトポロジのネスティング・レベルを特定する。最大のMNest値は6であり、最小は1である。MNestが1の場合には、実際のTLEネスティング構造は存在せず、Mag1はMag1-6の範囲で唯一のゼロ以外のフィールドであり、CPUタイプTLEのみがトポロジ・リストに表される。MNestの値は、ワード2のバイトにおけるマグニチュード・フィールドから始まり、Mnestが1より大きいときには左に進む、ゼロ以外のマグニチュード値の数を示しており、残りのマグニチュード・フィールドはゼロとして格納される、
MNestの値は、可能な最大のネスティングである。いかなる動的構成変更も、この上限を越えない。
トポロジ・リスト:図10におけるワード4からN−1の範囲は、1つ又は複数のトポロジ・リスト・エントリ(TLE)のリストを特定する。各々のTLEは、8バイト・フィールド又は16バイト・フィールドであるため、Nは偶数のワードであり、当然のことながら、TLEは、常にダブルワード境界で始まる。
トポロジ・リスト・エントリ:トポロジ・リストにおける第1のTLEは、MNest−1に相当するネスティング・レベルで開始する。トポロジ・リスト全体は、SYSIB 15.1.2を特定するSTSI命令の発行元の構成を表しており、最も外側のコンテナTLEエントリは、リスト全体及び構成全体と重複するため、使用されない。したがって、最も高いネスティング・レベルは、単一のピア・コンテナより多いコンテナを有する。
図11及び図12は、TELのタイプを示しており、フィールドは以下の定義を有する。
ネスティング・レベル(NL):ワード0のバイト0は、TLEのネスティング・レベルを特定する。
NL 意味
────────────────────────────────────────
0 TLEはCPUタイプTLEである。
1−5 TLEはコンテナ・タイプTLEである。トポロジ・リスト又は親コンテナ(parentcontainer)に格納された第1のコンテナ・タイプTLEは、1−255の範囲においてコンテナIDを有する。同じ親コンテナの中に兄弟コンテナ(siblingcontainer)が存在する場合には、それらのコンテナは、連続する場合もしない場合もあるコンテナIDの昇順に最大値255まで進む。
06−FF 未使用
兄弟TLEは、直近の親がTLEではなくトポロジ・リストであるため、直近の親TLEのネスティング・レベルから1を引いた値又はMNestから1を引いた値のいずれかと等しい、同じネスティング・レベルの値を有する。
未使用,0:コンテナ・タイプTLEの場合は、ワード0のバイト1-3及びワード1のバイト0-2は、未使用であり、ゼロとして格納される。CPUタイプTLEの場合は、ワード0のバイト1−3及びワード1のビット0−4は、未使用であり、ゼロとして格納される。
コンテナID:
コンテナ・タイプTLEのワード1のバイトは、ゼロ以外の8ビット符号なし2進整数を特定し、その値は、コンテナの識別子である。TLEについてのコンテナIDは、同一の親コンテナ内部で一意である。
専用状態(D):
CPUタイプTLEのワード1のビット5は、1のとき、TLEによって表される1つ又は複数のCPUが専用であることを示す。Dがゼロのときには、TLEの1つ又は複数のCPUは専用ではない。
極性(PP):
CPUタイプTLEのワード1のビット6−7は、極性の値を特定し、極性が垂直のときには、TLEによって表される対応する1つ又は複数のCPUの権利(高、中、低)とも呼ばれる垂直極性の程度を特定する。以下の値が用いられる。
PP 意味
0 TLEにより表される1つ又は複数のCPUは水平極性である。
1 TLEにより表される1つ又は複数のCPUは垂直極性である。権利は低である。
2 TLEにより表される1つ又は複数のCPUは垂直極性である。権利は中である。
3 TLEにより表される1つ又は複数のCPUは垂直極性である。権利は高である。
極性は、共有ホスト・プロセッサを用いる論理及び仮想マルチ・プロセッシング構成おいて唯一重要なものであり、構成に割り当てられるリソースが構成のCPU全体にわたってどのように適用されるかに対応する。水平極性が有効であるときには、構成の各々のCPUは、ほぼ同量のリソースを保証される。垂直極性が有効であるときには、構成のCPUは、3つのレベルのリソース権利、すなわち、高、中、及び低に分類される。
サブシステムのリセット及びESA/390モードを特定するSIGPセット・アーキテクチャ・オーダの実行成功のいずれによっても、構成及びそのCPUの全ては水平極性になる。直接に影響を受けるCPUは、構成状態のCPUである。待機状態のCPUが構成されたときには、CPUは、構成の現在の極性を獲得し、その構成のトポロジ変更を認識させる。
専用CPUは、水平極性又は垂直極性のいずれかである。専用CPUが垂直極性のときには、権利は常に高である。したがって、Dが1のときには、PPは、2進数00又は2進数11のいずれかである。
CPUタイプ:
CPUタイプTLEのワード1のバイト1は、8ビット符号なし2進整数を特定し、その値は、TLEによって表される1つ又は複数のCPUのCPUタイプである。CPUタイプの値は、一次CPUタイプ、又は、可能な二次CPUタイプのうちのいずれか1つのどちらか一方を特定する。
CPUアドレス起点(CPU-Address Origin):
CPUタイプTLEのワード1のバイト2−3は、16ビット符号なし2進整数を特定し、その値は、CPUマスクによって表されるCPUの範囲における最初のCPUのCPUアドレスであり、その存在は、CPUマスクにおけるビット位置0の値によって表される。CPUアドレス起点は、64で均等に分けられる。CPUアドレス起点の値は、CPUマスクにおけるビット位置0によって表されるCPU上で実行されたときにSTORE CPU ADDRESS(STAP)命令によって格納される値と同一である。
CPUマスク:
CPUタイプTLEのワード2-3は、各々のビット位置がCPUを表す64ビット・マスクを特定する。CPUアドレス起点フィールドの値と、CPUマスクにおけるビット位置とを加えたものは、対応するCPUについてのCPUアドレスと等しい。CPUマスク・ビットがゼロのときには、対応するCPUはTLEによって表されない。
CPUは、構成に存在しないか、又は、別のCPUタイプTLEによって表されなければならない。CPUマスク・ビットが1のときには、対応するCPUは、TLEによって特定される修飾子属性値を有し、構成のトポロジに存在しており、トポロジの他のいずれのTLEにも存在しない。
したがって、例えば、CPUアドレス起点の値が64であり、CPUマスクのビット位置15が1の場合には、CPU79は、構成に存在し、TLEによって特定されるCPUタイプ、極性、権利、及び専用状態を有する。
TLE順序付け:
CPUタイプTLEに適用される修飾子の属性は、CPUタイプ、極性、権利、及び専用状態である。極性及び(垂直極性の場合の)権利は、4つの可能な値(水平、垂直−高、垂直−中、及び垂直−低)を持つが、単一の属性と見なされる。
単一のCPU TLEは、全てが同一の修飾子属性値を有する64ものCPUを表すのに十分である。
64より多いCPUが存在するか又はCPUアドレスの全範囲が単一のCPUアドレス起点によってカバーされず、修飾子の属性が一定であるときには、別個の兄弟CPU TLEが、必要に応じて、CPUアドレス起点の昇順でCPUアドレス起点ごとに格納される。これらの格納されたTLEの各々は、代表される少なくとも1つのCPUを有する。1つ又は複数のこうしたCPU TLEの集合は、CPU−TLEセットと呼ばれる。
多数のCPUタイプが存在するときには、別個のCPU-TLEセットが、CPUタイプの昇順でCPUタイプごとに格納される。
多数の極性及び権利の値が存在するときには、別個のCPU−TLEセットが、極性値及び程度の降順(垂直高、中、低、続いて水平)で極性値及び程度ごとに格納される。存在するときには、所与のCPUタイプの全ての極性CPU−TLEセットは、次のCPUタイプの次のCPU−TLEセットの前に格納される。
専用CPUと非専用CPUの両方が存在するときには、別個のCPU-TLEセットが、CPUごとに、専用CPUについてのCPU−TLEセットが非専用CPUについてのCPU−TLEセットの前に現れるように格納される。全てのTLEは、深さ優先トラバーサル(depth-firsttraversal)を仮定して順序付けられ、大から小のソート順は以下のとおりである。
1.CPUタイプ
a.最も低いCPUタイプ値
b.最も高いCPUタイプ値
2.極性−権利
a.垂直高
b.垂直中
c.垂直低
d.水平
3.専用(適用可能の場合)
a.専用
b.非専用
CPUアドレス起点と、親コンテナ内の兄弟CPU TLEの修飾子属性とによる順序付けは、最高から最低に向かって並ぶ以下のリストに従って行われる。
1.最低CPUタイプ値のCPU-TLEセット,垂直高,専用
2.最低CPUタイプ値のCPU-TLEセット,垂直高,非専用
3.最低CPUタイプ値のCPU-TLEセット,垂直中,非専用
4.最低CPUタイプ値のCPU-TLEセット,垂直低,非専用
5.最低CPUタイプ値のCPU-TLEセット,水平,専用
6.最低CPUタイプ値のCPU-TLEセット,水平,非専用
7.最高CPUタイプ値のCPU-TLEセット,垂直高,専用
8.最高CPUタイプ値のCPU-TLEセット,垂直高,非専用
9.最高CPUタイプ値のCPU-TLEセット,垂直中,非専用
10.最高CPUタイプ値のCPU-TLEセット,垂直低,非専用
11.最高CPUタイプ値のCPU-TLEセット,水平,専用
12.最高CPUタイプ値のCPU-TLEセット,水平,非専用
他のTLEルール:
コンテナ・タイプTLEは、1-5の範囲のネスティング・レベルに位置する。
CPUタイプTLEは、ネスティング・レベル0に位置する。
トポロジ・リスト又は所与の親コンテナにおける兄弟コンテナ・タイプTLEの数は、兄弟に対応するネスティング・レベルのマグニチュード・バイト(Mag2-6)の値を越えない。
親コンテナの1つ又は複数のCPUタイプTLEによって表されるCPUの数は、Mag1マグニチュード・バイトの値を超えない。
TLEの内容は以下のとおりである。
TLEがコンテナ・タイプTLEである場合には、その内容は、1つ又は複数の子TLEを含む親TLEに直接続くリストであり、各々の子TELは、親TLE又はトポロジ・リストの最後のネスティング・レベルより1少ないネスティング・レベルを有する。TLEがCPUタイプTLEの場合には、その内容は、CPU TLEの他のフィールドによって識別される1つ又は複数のCPUである。
ネスティング・レベルにおける最初のTLEがCPUエントリのときには、最大ネスティング・レベル0となる。
プログラミング・ノート:
トポロジ・リストの可能な検査プロセスを説明する。トポロジ・リストの検査が開始される前に、現行TLE(currnet TLE)ポインタが、トポロジ・リストの最初すなわち一番上のTLEを参照するように初期化され、先行TLE(priorTLE)ポインタがヌルに初期化され、上から下の順序にTLEが検査される。
トポロジ・リストの検査が進行するにつれて、現行TLEポインタは、それが示す現行TLEのサイズだけ現行TLEポインタの値を増加させることによって進む。コンテナ・タイプTLEは、現行TLEポインタに8を加えることによって進む。CPUタイプTLEは、現行TLEポインタに16を加えることによって進む。現行TLEポインタを進めるプロセスは、現行TLEポインタの値が増加する前に、その値を先行TLEポインタとして保存することを含む。TLEの検査は、トポロジ・リストがTLEを持たない場合には行われない。
検査プロセスは、以下のステップで概説される。
1.現行TLEのネスティング・レベルがゼロであり、先行TLEのネスティング・レベルがヌル又は1である場合には、現行TLEは、1つ又は複数のCPUタイプTLEのグループのうち第1のCPUタイプTLEを表す。プログラムは、1つ又は複数のCPUの新しいグループが最初に見つかったときに適したいかなるアクションも行うべきである。ステップ5に進む。
2.現行TLEのネスティング・レベルがゼロであり、先行TLEのネスティング・レベルがゼロである場合には、現行TLEは、ステップ1又は2において以前に見つかったCPUの兄弟を表すCPUタイプTLEのグループの次のCPUタイプTLEを表す。プログラムは、1つ又は複数のCPUの既存の兄弟グループのサイズが増加したときに適したいかなるアクションも行うべきである。ステップ5に進む。
3.現行TLEのネスティング・レベルがゼロではなく、先行TLEのネスティング・レベルがゼロの場合には、先行TLEは、1つ又は複数のCPUタイプTLEのグループのうち最後又は唯一のCPUタイプTLEを表す。プログラムは、1つ又は複数のCPUの既存のグループが完了したときに適したいかなるアクションも行うべきである。ステップ5に進む。
4.ステップ5に進む。
除外することによって、これは、現行TLEのネスティング・レベルがゼロではなく、先行TLEのネスティング・レベルがゼロでない場合である。現行TLEのネスティング・レベルが先行TLEのネスティング・レベルより小さい場合には、トポロジ・リスト・トラバーサルの方向は、CPUタイプTLEに向かう方向である。現行TLEのネスティング・レベルが先行TLEのネスティング・レベルより大きい場合には、トポロジ・リスト・トラバーサルの方向は、CPUタイプTLEから離れる方向である。コンテナ・タイプTLEは、トラバースされ、以下のいずれか、すなわち、(1)トポロジ全体における別個のグループであるCPUタイプの別のグループ、又は、(2)トポロジ・リストの最後、に至る。いずれの場合においても、次のTLEに進む以外には、特定の処理は必要とされない。
5.現行TLEのタイプに基づいて、次のTLE位置に進む。進められた現行TLEポインタが、トポロジ・リストの最後に相当する場合には、
a.いずれのタイプのTLEもそれ以上存在しない。
b.先行TLEのネスティング・レベルがゼロの場合には、プログラムは、1つ又は複数のCPUの既存のグループが完了したときに適したいかなるアクションも行うべきである。
c.検査は完了する。
そうでなければ、ステップ1に進む。
例示的な実装形態である図19において、コンピュータ・システムは、2つの物理フレーム(フレーム1及びフレーム2)を含む。各々のフレームは、2つのロジック・ボード(ボード1及びボード2)と、主ストレージ(メモリ)と、周辺装置及びネットワークと通信するためのI/Oアダプタ(I/Oチャネル1及びI/Oチャネル2)とを含む。各々のボードは、2つのマルチチップ・モジュール(Mod1、Mod2、Mod3及びMod4)を含む。各々のマルチチップ・モジュールは、2つのプロセッサ (CPU1、CPU2、CPU3、CPU4、CPU5、CPU6 CPU7及びCPU8)を含む。各々のモジュールは、2次キャッシュ(キャッシュ1、キャッシュ2、キャッシュ3及びキャッシュ4)も含む。各々のプロセッサ(中央処理ユニット又はCPU)は、1次キャッシュ及びトランスレーション・ルックアサイド・バッファ(TLB)を含む。TLBは、動的アドレス変換の際にアドレス変換情報を格納する。
本発明によれば、図20、21及び22において、コンピュータ・システムのコンポーネントは、近接性に応じて「コンテナ」に割り当てられる。各々のモジュールは、各々のモジュールのCPUが互いに最も近接性が高いため、最も内側のコンテナ6、7、8及び9に割り当てられる。モジュールはボード上にパッケージされるため、それぞれのボードのモジュールは、次のレベルのコンテナ4及び5に割り当てられる。次に近接性が高いグループは、フレームである。フレームのボードは、フレームを表すコンテナに割り当てられる(コンテナ2及び3)。全体のシステムは、コンテナ1によって表される。
CPU1及びCPU2のような同一のモジュール上の2つのCPUは、互いに最も近いトポロジ関係又は距離であり、いずれも1つのコンテナ(コンテナ6)に属し、それらのCPUのみが関与するときにはコンテナ境界は交差しないことが理解できる。しかしながら、CPU1及びCPU8が関与する場合には、交差する4つのコンテナ境界が存在する。コンテナ6のCPU1は、コンテナ4、5及び9によってCPU8から隔てられる。従って、コンテナ構造を知ることで、ユーザは、システムのトポロジの考え方を得ることができる。
当然のことながら、論理パーティション化されたシステムにおいては、CPUは、前述のようにオペレーティング・システム間で共有されることがある。したがって、論理パーティションが3つの論理CPUを割り当てられ、各々の論理CPUが3つの実CPUの各々の20%に割り当てられた場合には、CPUとCPUリソース(例えば、キャッシュ及びメモリ)との間の通信が最高の性能を発揮するように3つの実CPUが互いに最も接近している場合に、パーティションが最高の能力を発揮する。この例においては、パーティションにおけるCPU1及びCPU2は、2つのCPUがCPU1及びCPU8である場合と比べて、キャッシュ1におけるキャッシュ・ラインのスラッシングがより少なくなる。
この例においては、CPU1、CPU2及びCPU3を含むパーティションが生成される。パーティションにおいて動作するプログラムはSTSI命令を発行し、SYSIB 15.1.2(図10)テーブルがプログラムに戻される。この場合において、パーティションは、コンテナ6及びコンテナ7を含み、従って、2つのレベルのネスティングが存在する。SYSIBテーブルの値は、以下のとおりである。
MNestフィールドは、トポロジがこのモデルについての絶対最大ネスティングである4レベルのネスティングを含むことを示す4に設定され、STSIを発行するゲスト構成へのリソース割り当てと、システムの他のゲスト構成へのリソースの割り当てられ方とに応じて、いずれかの任意のトポロジ・リスト上で完全に利用される場合もあるし、利用されない場合もある。
Mag1フィールドは、2つのCPUが最も基本的な第1レベルで利用可能であることを示す2に設定される。
Mag2フィールドは、2つの第2レベル(モジュール)のコンテナが利用可能であることを示す2に設定される。
Mag3フィールドは、2つの第3レベル(ボード)が利用可能であることを示す2に設定される。
Mag4フィールドは、2つの第4レベル(フレーム)が利用可能であることを示す2に設定される。
この例においては、同一のボード上の2つのモジュールに3つのCPUが収容されており、従って、以下の4つのTLEエントリが与えられる。
1.NL=1;CtnrID=1(コンテナ6)
2.NL=0;CPUタイプ=1(CPUのタイプ);CPU Addr Origin =0;CPU Mask 0110.......00(アドレス指定されたCPUのうちのCPU1及びCPU2)
3.NL=1;CtnrID=2(コンテナ7)
4.NL=0;CPUタイプ=1(CPUのタイプ);CPU Addr Origin =4;CPU Mask 00010.......00(アドレス指定されたCPUのうちのCPU3)
このように、プログラムは、コンテナ及び戻されたCPU TLEに基づくトポロジの表現を有する
PERFORM TOPOLOGY FUNCTION(PTF)
図13を参照すると、PERFORM TOPOLOGY FUNCTION(PTF)命令は、好ましくは、オペコードと、第1オペランドを識別するレジスタ・フィールド R1とを含む。R1によって識別される汎用レジスタの内容は、図14に示されるように、ビット位置56-63における機能コードを特定する。
定義される機能コードは以下のとおりである。
FC 意味
0 水平極性を要求する
1 垂直極性を要求する
2 トポロジ変更の状態をチェックする
0-255の範囲において定義されていない機能コードは、将来の拡張のために未使用とされる。
終了時に、条件コードが2に設定された場合には、汎用レジスタR1のビット位置48−55に理由コードが格納される。命令のビット16−23及び28−31は無視される。
機能コード0の働き:
実行は、以下の理由及び(理由コード)のいずれかについての条件コードを伴って終了する。
特定される理由なし(0)
要求している構成はすでに水平極性である(1)
トポロジ変更がすでに進行中である(2)
それ以外の場合には、構成における全てのCPUが水平極性に置かれるようにプロセスが開始される。
プロセスの終了は、命令の実行とは非同期であり、命令の実行が終了したときに終了する場合もあるし、終了しない場合もある。
結果として得られる条件コード:
0 トポロジ変更の開始
1 −
2 要求拒否
3 −
機能コード1の働き:
実行は、以下の理由及び(理由コード)のいずれかについての条件コード2を伴って終了する。
特定される理由なし(0)
要求している構成はすでに垂直極性である(1)
トポロジ変更がすでに進行中である(2)
それ以外の場合には、構成における全てのCPUが垂直極性に置かれるようにプロセスが開始される。プロセスの終了は、命令の実行とは非同期であり、命令の実行が終了したときに終了する場合もあるし、終了しない場合もある。
結果として得られる条件コード:
0 トポロジ変更の開始
1 −
2 要求拒否
3 −
機能コード2の働き:
トポロジ変更報告保留条件(topology-change-report-pendingcondition)がチェックされ、命令は、条件コードの組を伴って終了する。
結果として得られる条件コード:
0 トポロジ変更報告非保留トポロジ
1 変更報告保留
2 -
3 -
トポロジ変更は、SYSIB 15.1.2の内容がトポロジ変更前のSYSIB 15.1.2の内容とは異なるようないずれかの変更である。
トポロジ変更報告保留条件は、トポロジ変更のプロセスが終了したときに生成される。トポロジ変更報告保留条件は、以下のいずれかが行われたときに、その構成についてクリアされる。
PERFORM TOPOLOGY FUNCTIONの実行が、条件コード1を伴って終了する機能コード2を特定する。
SYSIB 15.1.2についてのSTORE SYSTEM INFORMATIONの実行が、構成におけるいずれかのCPUによって成功する。
サブシステムのリセットが行われる。
特別条件:
汎用レジスタR1のビット位置0−55がゼロの場合には、指定例外が認識される。定義されていない機能コードが特定された場合には、指定例外が認識される。
プログラム例外:
動作(構成トポロジ・ファシリティがインストールされていない)
特権的動作
仕様
メインフレーム例の環境:
ハイエンド・サーバ・アーキテクチャが物理プロセッサの数を増やし、プロセッサ速度が上がり続けるにつれて、大きなマシンを構築するのに必要なプロセッサの「ネスト」は、本来はよりノード的である、より小さな構成単位から作られ続ける。例えば、z990又はz9マシンのL2キャッシュは、完全なキャッシュ・コヒーレントである一方、完全実装モデル(fully populated model)は、実際には、単一のL2キャッシュに見えるようにファブリックによって接続された4つの(4)別個のL2を有する。キャッシュ・ミスを解決するためにノードの使用を停止する不利益は増大し続ける。例えば、リモートL2におけるL1ミスを解決することは、ローカルL2におけるL1ミスを解決することに比べて、より費用がかかる。通常はチップ上のCPのプライベートにおいてミスが発生すると、L1キャッシュで開始するのは費用がかかり、わざわざメモリまで行かなけらばならないことは、永遠にも思えることがある。メモリの速度及びメモリへの接続の増加は、プロセッサ速度の増加に対応しない。全てを近づけて「チップ上」などに一緒にパックしよう試みることが求められているが、電力消費及び冷却の問題がこれに逆行する。
z990の導入によって、LPARは、マシン・トポロジを認識し、物理リソースに対する論理パーティションCP及びストレージ・リソースの割り当てを最適化し始めた。論理パーティション・リソースの割り当てを動的に再最適化するための能力の強化は、同時ブック・リペアのサポートにおいて、z9 GA-1で最初に導入された。
本明細書中で説明される新たなサポートは、CECブック構造におけるCPU配置に関するアフィニティ・ディスパッチングを提供するために、論理パーティション・トポロジとして示されるマシンのトポロジをzSeries OS ソフトウェアに認識させる真の始まりに対応する。
現在は水平極性である共有論理パーティションをzSeriesのLPARが管理する方法を考えることができる。すなわち、論理パーティションについての処理の重みは、論理パーティションにおける全てのオンライン論理CP間で等しく分けられる。このサポートは、論理パーティションの共有論理CPを管理するための、垂直極性と呼ばれる新たな任意の極性の形態を導入する。
論理パーティションが垂直モードで稼働することを選択したときには、ソフトウェアは、このことをzSeriesのハイパーバイザに知らせる新たな命令を発行し、ハイパーバイザは、論理パーティションをディスパッチする方法を変えることになる。
垂直論理パーティションの構成に応じて、論理プロセッサは、高極性、中極性又は低極性を有する。極性は、垂直論理プロセッサが権利を有する物理プロセッサ・シェアの量を記述する。顧客は、マシンにおける各々の論理パーティションが権利を有する物理プロセッサ・サイクルの量を効率的に定める、論理パーティションについての重みを決める。
極性は、論理パーティションに構成される論理プロセッサの数に対するその論理パーティションの現在の重みの比によって評価される。高極性プロセッサは、100%に近いCPUシェアを有する。中極性プロセッサは0より大きいシェアから99%までのシェアを有し、低極性プロセッサは0%(又はそれに非常に近い)シェアを有する。高極性の論理CPは、専用CPに極めて類似した状態で稼働するように物理プロセッサを割り当てられることになるが、共有される高極性CPは、依然として物理リソースを放棄し、他の共有CPがその余剰サイクルを用いることができるようにする。ソフトウェアが、論理トポロジを理解し、作業キューのために高極性の論理CPを利用しようとすることが、ここでの鍵になる。
例えば、顧客が、各々が2つの論理プロセッサを有し、各々が重み50を有する2つの論理パーティションを持つ3ウェイ・プロセッサを構成する。第1の論理パーティションは、自らを垂直であると定めた場合には、1つの高極性論理CPと1つの中極性論理CPとを有するものとすることができる。
論理パーティションが垂直モードで稼働することを選択したときには、論理パーティション全体が垂直モードで稼働することに留意されたい。これは、zAAP(IFA)及び/又はzIIPのような、その2次プロセッサの全てを含む。各々のプロセッサ・タイプについて所望のレベルの垂直処理を達成するこれらの理論パーティションのために、全てのプロセッサ・タイプに対して重みを定めることは、顧客が負担することである。
論理パーティション・トポロジ・サポート
・論理パーティション・ノード・トポロジについての基盤を確立する
・有効なトポロジを提供するのに必要な既存の水平パーティションについて、LPARのノード割り当てアルゴリズムに必要ないずれかの変更を行う
・論理パーティション・ノード・トポロジを論理パーティションに与えるSTORE SYSTEM INFORMATION(STSI)命令のための新たな構成トポロジ情報ブロックについて命令シミュレーションを行う
・トポロジ変更が必要かどうかを判断するために、物理又は論理構成の変更を検査する。これらは以下のときに行われる。
・物理CPが構成に加えらるか又は構成から除かれる
・論理CPが構成に加えらるか又は構成から除かれる
・論理パーティションがアクティブにされる
・論理パーティションが非アクティブにされる
・論理パーティションの重みがHMC/SEから変更される
・論理パーティションの重みを変更するソフトウェアが起動する
・論理パーティションがリセットされる(水平に切り替わる)
・論理パーティションがESA/390モードに切り替わる(水平に切り替わる)
環境のアルゴリズム:
トポロジは、論理パーティションが最初にアクティブにされたときに論理パーティションに割り当てられなければならず、論理パーティションに割り当てられたノード・トポロジのいずれかの変更は、論理パーティションに通知されなければならない。ノード・トポロジの結果は、構成の変更が行われたときに新たなSTSI処理並びに制限処理によるより簡単なクエリをできるだけ可能にするように、適当な新しいデータ構造に保持されなければならない。この新たな構造は、トポロジの矛盾するビューを論理パーティションにもたらすことなく、ステップごとに必要なシリアライゼーションを伴う多数のステップにおいて終了するトポロジ変更処理も可能にする。
トポロジ割り当て
どのように論理トポロジが選択されるかということは、本開示にとって重要ではない。各々のタイプの論理プロセッサがいくつ必要とされるか、及び、それらがどのノード又はブックに割り当てられる必要があるかという判断が行われなければならないと言うにとどめておく。垂直モード・パーティションの場合には、これは、プロセッサ・タイプごとの垂直高プロセッサ、垂直中プロセッサ、及び垂直低プロセッサのカウントを意味する。
論理CPへの極性値の割り当て
上述のカウントが求められると、CPタイプのうち最も低いオンライン論理CPアドレスから最も高いものに向かって、(1)全て垂直高、(2)全て垂直中、及び(3)全て垂直低の順序で、垂直割り当てが行われる。これが行われる順序は任意であり、他の選択順序も可能である。
STORE SYSTEM INFORMATION命令マッピング
15.1.2応答をマッピングするために3つの構造を追加する。
1.STSI 15.1.2についてのマッピング、トポロジをマッピングする応答ブロック
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
2.STSI 15.1.2のためのコンテナ・タイプTLEについてのマッピング
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
3.STSI 15.1.2のためのCPUタイプTLEについてのマッピング
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
TOPBK−パーティション・トポロジ
論理パーティションのトポロジのサマリは、ノード割り当てルーチンによってこのブロックにおいて新しい状態に保たれる。このブロック内のデータは、STSI処理が、プログラムへの論理パーティション・トポロジ応答を生成するために構造全体の1つのパスを作り、アーキテクチャによって要求されるとおりにCPUエントリの順序及び分離を保存するように、順序付けられる。
このブロックは、エントリあたり64ビットのCPUマスクを持つ3次元アレイ(ノード、CPタイプ、極性分類)からなる。
トポロジを更新する際に用いるために、第2の作業領域であるTOP_WORKINGが含まれる。
DECLARE
1 TOPBK BASED BDY(DWORD),
3 TOP_CURRENT ,
5TOPCPUMASK(1:MAXNODE, /* 1−4ノードの各々
*/
0:CPUTMAX, /* CPタイプのインデックス
*/
0:3) /* 論理パーティションが垂直のときの4つの可能なトポロジ分類。パーティションが水平のときには2つの分類のみである。
*/
BIT(64), /* この分類に入る論理CPUのマスク
*/
3 TOP_WORKING CHAR(LENGTH(TOP_CURRENT)); /* 新たなトポロジを構築するための作業領域
*/
TO3PO − パーティション・トポロジ変換
これらの「一定の」変換テーブルは、(TOPBKによってマッピングされた)トポロジを構築するノード割り当てルーチンと、トポロジを読み出すSTSI処理とによって、用いられる。
/****************************/
/* STSI変換アレイ: */
/****************************/
DECLARE
1 TOPVERT(0:3) BIT(8) /* 垂直パーティションの場合には、分類インデックスを、STSIデータにおけるCPのこのグループについて戻されるアーキテクチャ化されたD(専用状態)及びPP(極性)に変換する
*/
STATICINIT('00000'b||'1'b||PPVH, /* 分類0:専用、垂直高*/
'00000'b||'0'b||PPVH, /*分類1:共有、垂直高*/
'00000'b||'0'b||PPVM, /*分類2:共有、垂直中*/
'00000'b||'0'b||PPVL), /*分類2:共有、垂直低 */
3 * BIT(5), /* 不使用、ビット・アレイのためのバイト整列を要する*/
3 TOPDPP BIT(3),/* 用いる実際のD、PP値*/
1 TOPHOR(0:1) BIT(8) /* 水平パーティションの場合には、分類インデックスを、STSIデータにおけるCPのこのグループについて戻されるアーキテクチャ化されたD(専用状態)及びPP(極性)に変換する。水平極性の場合は最初の2つの分類のみを用いることができることに留意。
*/
STATICINIT('00000'b||'1'b||PPH, /*分類0:専用、水平 */
'00000'b||'0'b||PPH), /*分類1:共有、水平 */
3 * BIT(5), /*不使用、ビット・アレイのためのバイト整列を要する*/
3 TOPDPP BIT(3), /*用いる実際のD、PP値*/
/*************************/
/* NDI変換アレイ */
/*************************/
1 TOPDPP2CLASS(0:7) FIXED /* トポロジ情報を生成するためにノード割り当てルーチンによって用いられる。LPDPPは、論理CPがどの分類インデックスを用いるべきか判断するために、このアレイ内のインデックスとして用いられる。この1つのアレイは、水平パーティション及び垂直パーティションの両方に用いられる。*/
STATIC INIT(1, /* 共有、水平*/
3, /* 共有、垂直低*/
2, /* 共有、垂直中*/
1, /* 共有、垂直高*/
0, /* 専用、水平*/
0, /* 不適用*/
0, /* 不適用*/
0), /* 専用、垂直高*/
3 * CHAR(4); /* 強制的に非単純項目になる */
論理プロセッサ・ブロック:
各々の論理プロセッサについてパーティション極性の2ビット符号化を追跡して、その極性を反映することができる。専用の1ビット表示を用いてこれをグループ分けすることによって、論理プロセッサについて3ビットの完全な極性図が可能になる。
・・・・・
3 LPDPP BIT(3), /*極性,専用状態を含む */
4 LPDED BIT(1), /* =1、論理CPは専用である*/
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), /* 垂直極性−高 */
トポロジ・ブロックを更新
CPUトポロジ・マスクのローカル・コピーをクリア
DO ターゲット論理パーティションにおける全ての論理CPについて
IF 論理CPがオンライン THEN
DO
極性インデックス = 極性インデックス・アレイへの極性値の変換に応じて論理CP極性値に適した極性インデックス
CPUトポロジ・マスク(CPUアドレス、ノード、CPタイプ、極性インデックス)のローカル・コピー = ON
END
END
IF 新たなトポロジ・ブロック NOT= パーティションについてのカレント・トポロジ・ブロック THEN
トポロジ変更報告を設定し、新たなトポロジをカレントにコピー
STSI 15.1.2についての命令シミュレーション
STSI 15.1.2応答ブロックのためのsyibkマッピング内に、コンテナ・タイプTLE及びCPUタイプTLEが加えられた。原則的として、データは、最も低いレベルにおけるエントリがCPUタイプTLEである1つ又は複数のコンテナで戻されなければならない。これは、論理パーティションのリソースがどのように小分割又は割り当てされたかに基づいて、アレイのうちの1つのアレイとして考えることができる。好ましい実施形態の場合には、各々のコンテナは、原則的にネスティング・レベル1を有するノードであり、各々がネスティング・レベル0を有する1つ又は複数のCPUタイプTLEを含む。CPU TLEは、CPUタイプによって順序付けられ、次にそれらの分類によって順序付けられる。垂直パーティションは4つの分類(垂直専用、垂直高共有、垂直中共有、及び、垂直小共有)を有し、水平パーティションは2つの分類(専用及び共有)を有する。
以下のステップは、全ての事前チェックが命令入力の妥当性を検証した後でSTSI 15.1.2がどのように処理されるかについて使用事例を示す。
現在の実施形態の場合には、最大4つのノード及び64のプロセッサが仮定される。
topbkの走査を開始し、カレント・ノード値(current node value)と呼ばれるローカル変数に、現時点のノード・インデックスの値を保持する。これが必要とされる理由は、ノード内の64ビット・マスクの全てがゼロの場合には、そのノードについてコンテナ・タイプTLEを生成する必要がないからである。
ノード内で最初のゼロ以外のエントリが見つかると、最初にそのノードについてのコンテナ・タイプTLEエントリを生成する。コンテナTLEエントリ内では、ネスティング値は1であり、48の未使用ビットがそれに続く。最後のビットは、処理中のカレント・ノードのtopbkにおけるインデックスであるノードIDである。コンテナ・タイプTLEを生成した後、ゼロ以外のビット・マスクを持つエントリについてのCPUタイプTLEを生成する。このエントリ内では、ネスティング・レベルは0であり、24の未使用ビットがそれに続く。次の8ビットは、専用ビット及び極性ビットを含む。パーティションが現時点で垂直の場合には、極性値及び専用ビットに以下のように入れられる。
topbkにおける分類0は垂直専用であり、PPに11を格納し、Dに1を格納する
topbkにおける分類1は垂直高共有であり、PPに11を格納し、Dに0を格納する
topbkにおける分類2は垂直中共有であり、PPに10を格納し、Dに0を格納する
topbkにおける分類3は垂直低共有であり、PPに01を格納し、Dに0を格納する
水平パーティションの場合には、現時点で分類0及び1のみが有効である。専用ビット及び極性値に以下のように入れられる。
topbkにおける分類0は水平専用であり、PPに00を格納し、Dに1を格納する
topbkにおける分類1は水平共有であり、PPに00を格納し、Dに0を格納する
CPU TLEに入れられる次の値であるCPUタイプは、topbkにおけるTOPCPUMASK内の第2のアレイのインデックスである。(0−GP、2−IFA、3−IFL、4−IGF、1は現時点で未使用である。)
1.次の値はCPUアドレス起点である。この値は、64が現在の実施形態において利用可能なCPUの最大数であるので、明示的に0として格納される。
2.syibk_vcm_cpuにおける最後の値は、TOPCPUMASKアレイのネストされたアレイに格納されるゼロではない64ビット・マスクである、CPUマスクである。
3.ノード内の最初のゼロではないビット・マスクに続く各々のゼロ以外のマスクについて、別個のCPUタイプTLEエントリを生成し、このプロセスを4つのノード全てについて繰り返す。
一実施形態においては、PTF命令は、極性の変化以外のトポロジの特定の変化を要求することができ、そのような変化としては、より多くのゲスト・プロセッサをゲスト構成に加える要求、ゲスト構成におけるゲスト・プロセッサを減らす要求、1つ又は複数の専用プロセッサをゲスト構成に加える又はゲスト構成から除く要求、特定のゲスト・プロセッサの特定の極性の要求、コプロセッサをゲスト構成に加える又はゲスト構成から除く要求、トポロジの一時的な変化の要求、予定された時間の間のトポロジの変化の要求などが挙げられる(しかし、これらに限定されない)。
さらに、本発明は、プロセッサのトポロジに限定されるものではない。本発明の基礎的なコンポーネントが、例えば、コプロセッサ、キャッシュ、TLB、内部データ・パス、データ・パス・バッファ、分散メモリ、及びI/O通信アダプタを含むがこれらに限定されないCPU以外のコンポーネントに適用できる利点があることが認識できる。

Claims (5)

  1. ホスト・プロセッサ(ホストCPU)を含む論理パーティション化されたホスト・コンピュータ・システムにおいて、ゲスト構成の複数のゲスト・プロセッサ(ゲストCPU)のトポロジの構成変更のための方法であって、
    ゲスト構成のゲスト・プロセッサが、コンピュータ・アーキテクチャのために定められたperform topology function命令をフェッチするステップであって、前記perform topology function命令は、実施される機能を特定するオペコード・フィールドと汎用レジスタを特定するレジスタ・フィールドを含む、当該ステップによって特徴づけられ、
    前記ゲスト・プロセッサが、前記perform topology function命令の実施される機能を実行するステップであって、
    前記実行するステップが、
    前記汎用レジスタから機能コントロールFCフィールドを取得することと、
    前記FCフィールドが極性変更の要求、すなわち、前記ゲスト・プロセッサに物理処理リソースを均等に割り当てることと不均等に割り当てることとの間で変更させる要求を特定する第1または第2の値をもつという条件に応答して、前記ゲスト・プロセッサが、前記ホスト・プロセッサに、前記ゲスト構成の前記ゲスト・プロセッサのトポロジの構成の極性変更を要求することと、
    前記汎用レジスタの機能コードに基づく、前記要求された特定された極性変更が受理されたという条件に応答して、前記ゲスト・プロセッサが、前記特定された極性変更に応じて前記ゲスト構成の前記ゲスト・プロセッサのトポロジの構成を変更させることと、
    前記汎用レジスタの機能コードに基づく、前記要求されたトポロジの変更が進行中であるという条件に応答して、前記ゲスト・プロセッサが、トポロジ変更が開始されたことを示す第1の条件コードを前記汎用レジスタに設定することと、
    前記汎用レジスタの機能コードに基づく、前記要求されたトポロジの変更が拒絶されたという条件に応答して、前記ゲスト・プロセッサが、前記要求されたトポロジ変更が拒絶されたことを示す第2の条件コードを前記汎用レジスタに設定することと、
    前記汎用レジスタの機能コードに基づく、前記要求されたトポロジの変更が拒絶されたという条件に応答して、前記ゲスト・プロセッサが、前記汎用レジスタに理由コードRCを設定することと、
    前記FCフィールドが、トポロジ変更の状態のチェックの要求を特定する第3の値をもつという条件に応答して、前記ゲスト・プロセッサが、トポロジ変更報告が保留中であるかどうかを示す条件コードを前記汎用レジスタに設定することと、
    前記ゲスト・プロセッサが、前記命令を完了することと、
    を含む当該ステップと、
    を含む方法。
  2. 前記ゲスト・プロセッサが、前記perform topology function命令の実施される機能を実行するステップが、
    水平極性を特定する前記FCの第1の値に応答して、コンピュータ構成の前記ゲスト・プロセッサの水平極性への変更を開始し、それにより結果としての更新されたトポロジを作ることと、
    垂直極性を特定する前記FCの第2の値に応答して、コンピュータ構成の前記ゲスト・プロセッサの垂直極性への変更を開始し、それにより結果としての更新されたトポロジを作ることと、
    をさらに含む、請求項1に記載の方法。
  3. 前記実行するステップは、
    トポロジ変更報告が保留中ではないという条件に応答して、トポロジ変更報告が保留中ではないことを示す条件コードを設定するステップと、
    トポロジ変更報告が保留中であるという条件に応答して、トポロジ変更報告が保留中であることを示す条件コードを設定するステップと、
    をさらに含む、請求項2に記載の方法。
  4. 前記水平極性は、均等なホスト・プロセッサ・リソースを各々のゲスト・プロセッサ・リソースに与えることを含み、前記垂直極性は、前記ゲスト・プロセッサの少なくとも1つのゲスト・プロセッサに、前記ゲスト・プロセッサの少なくとも別のゲスト・プロセッサより多くのホスト・プロセッサ・リソースを与えることを含む、請求項2に記載の方法。
  5. 前記垂直極性は、前記コンピュータ構成の前記ゲスト・プロセッサを権利の1つのレベルにプロビジョニングすることを含み、前記権利のレベルは、高、中、低のどれかであり、
    前記高レベルの権利は、ホスト・プロセッサの全てを前記ゲスト構成の対応するゲスト・プロセッサに割り当てることを含み、
    前記中レベルの権利は、ホスト・プロセッサの全てよりも少なく前記ゲスト構成の対応するゲスト・プロセッサに割り当てることを含み、その際、1つまたは複数のホスト・プロセッサが前記ゲスト構成の対応するゲスト・プロセッサに割り当てられ、
    前記低レベルの権利は、ホスト・プロセッサを前記ゲスト構成の対応するゲスト・プロセッサに割り当てないことを含む、
    請求項2に記載の方法。
JP2010541797A 2008-01-11 2009-01-12 構成の仮想トポロジの変化 Active JP5179597B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/972,766 2008-01-11
US11/972,766 US7739434B2 (en) 2008-01-11 2008-01-11 Performing a configuration virtual topology change and instruction therefore
PCT/EP2009/050251 WO2009087233A1 (en) 2008-01-11 2009-01-12 Performing a configuration virtual topology change

Publications (3)

Publication Number Publication Date
JP2011509478A JP2011509478A (ja) 2011-03-24
JP2011509478A5 JP2011509478A5 (ja) 2012-08-02
JP5179597B2 true JP5179597B2 (ja) 2013-04-10

Family

ID=40419037

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010541797A Active JP5179597B2 (ja) 2008-01-11 2009-01-12 構成の仮想トポロジの変化

Country Status (13)

Country Link
US (8) US7739434B2 (ja)
EP (1) EP2223203B1 (ja)
JP (1) JP5179597B2 (ja)
KR (1) KR101221252B1 (ja)
CN (1) CN101911012B (ja)
AT (1) ATE546774T1 (ja)
CY (1) CY1112504T1 (ja)
DK (1) DK2223203T3 (ja)
ES (1) ES2379575T3 (ja)
PL (1) PL2223203T3 (ja)
PT (1) PT2223203E (ja)
SI (1) SI2223203T1 (ja)
WO (1) WO2009087233A1 (ja)

Families Citing this family (54)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7734895B1 (en) * 2005-04-28 2010-06-08 Massachusetts Institute Of Technology Configuring sets of processor cores for processing instructions
US7739434B2 (en) 2008-01-11 2010-06-15 International Business Machines Corporation Performing a configuration virtual topology change and instruction therefore
US8527988B1 (en) * 2009-07-31 2013-09-03 Hewlett-Packard Development Company, L.P. Proximity mapping of virtual-machine threads to processors
US8464030B2 (en) * 2010-04-09 2013-06-11 International Business Machines Corporation Instruction cracking and issue shortening based on instruction base fields, index fields, operand fields, and various other instruction text bits
US8271710B2 (en) * 2010-06-24 2012-09-18 International Business Machines Corporation Moving ownership of a device between compute elements
US8949499B2 (en) 2010-06-24 2015-02-03 International Business Machines Corporation Using a PCI standard hot plug controller to modify the hierarchy of a distributed switch
EP2609511B1 (en) * 2010-08-26 2016-10-19 Freescale Semiconductor, Inc. Memory management unit for a microprocessor system, microprocessor system and method for managing memory
WO2012029149A1 (ja) * 2010-09-01 2012-03-08 富士通株式会社 情報処理プログラム、情報処理装置及び情報処理方法
US9639815B2 (en) 2011-07-14 2017-05-02 International Business Machines Corporation Managing processes in an enterprise intelligence (‘EI’) assembly of an EI framework
US8566345B2 (en) 2011-07-14 2013-10-22 International Business Machines Corporation Enterprise intelligence (‘EI’) reporting in an EI framework
US9659266B2 (en) 2011-07-14 2017-05-23 International Business Machines Corporation Enterprise intelligence (‘EI’) management in an EI framework
US9646278B2 (en) 2011-07-14 2017-05-09 International Business Machines Corporation Decomposing a process model in an enterprise intelligence (‘EI’) framework
US8881100B2 (en) * 2011-09-07 2014-11-04 International Business Machines Corporation Automated generation of bridging code to augment a legacy application using an object-oriented language
US9069598B2 (en) 2012-01-06 2015-06-30 International Business Machines Corporation Providing logical partions with hardware-thread specific information reflective of exclusive use of a processor core
US8918885B2 (en) * 2012-02-09 2014-12-23 International Business Machines Corporation Automatic discovery of system integrity exposures in system code
US9710266B2 (en) 2012-03-15 2017-07-18 International Business Machines Corporation Instruction to compute the distance to a specified memory boundary
US9588762B2 (en) 2012-03-15 2017-03-07 International Business Machines Corporation Vector find element not equal instruction
US9715383B2 (en) 2012-03-15 2017-07-25 International Business Machines Corporation Vector find element equal instruction
US9454366B2 (en) 2012-03-15 2016-09-27 International Business Machines Corporation Copying character data having a termination character from one memory location to another
US9459867B2 (en) 2012-03-15 2016-10-04 International Business Machines Corporation Instruction to load data up to a specified memory boundary indicated by the instruction
US9459864B2 (en) 2012-03-15 2016-10-04 International Business Machines Corporation Vector string range compare
US9268566B2 (en) 2012-03-15 2016-02-23 International Business Machines Corporation Character data match determination by loading registers at most up to memory block boundary and comparing
US9454367B2 (en) 2012-03-15 2016-09-27 International Business Machines Corporation Finding the length of a set of character data having a termination character
US9280347B2 (en) 2012-03-15 2016-03-08 International Business Machines Corporation Transforming non-contiguous instruction specifiers to contiguous instruction specifiers
US9459868B2 (en) 2012-03-15 2016-10-04 International Business Machines Corporation Instruction to load data up to a dynamically determined memory boundary
US9208193B1 (en) 2013-03-15 2015-12-08 Ca, Inc. Problem management software
US9116597B1 (en) 2013-03-15 2015-08-25 Ca, Inc. Information management software
US9256344B1 (en) 2013-03-15 2016-02-09 Ca, Inc. Software management software
CN103530191B (zh) * 2013-10-18 2017-09-12 杭州华为数字技术有限公司 热点识别处理方法及装置
EP2899652B1 (de) * 2014-01-22 2024-03-13 dSPACE GmbH Verfahren zur Einsatzoptimierung programmierbarer Logikbausteine in Steuerungsgeräten für Fahrzeuge
US9916185B2 (en) 2014-03-18 2018-03-13 International Business Machines Corporation Managing processing associated with selected architectural facilities
US9582295B2 (en) 2014-03-18 2017-02-28 International Business Machines Corporation Architectural mode configuration
US9588774B2 (en) 2014-03-18 2017-03-07 International Business Machines Corporation Common boot sequence for control utility able to be initialized in multiple architectures
US9218185B2 (en) * 2014-03-27 2015-12-22 International Business Machines Corporation Multithreading capability information retrieval
US9223574B2 (en) 2014-03-27 2015-12-29 International Business Machines Corporation Start virtual execution instruction for dispatching multiple threads in a computer
US9213569B2 (en) 2014-03-27 2015-12-15 International Business Machines Corporation Exiting multiple threads in a computer
US9195493B2 (en) 2014-03-27 2015-11-24 International Business Machines Corporation Dispatching multiple threads in a computer
US9772867B2 (en) 2014-03-27 2017-09-26 International Business Machines Corporation Control area for managing multiple threads in a computer
US20160055078A1 (en) * 2014-08-22 2016-02-25 Vmware, Inc. Decreasing user management of an appliance
CN104539684B (zh) * 2014-12-23 2018-07-06 广州亦云信息技术有限公司 一种用户机器资源抽取整合方法及系统
US10853104B2 (en) * 2015-02-27 2020-12-01 Plasma Business Intelligence, Inc. Virtual environment for simulating a real-world environment with a large number of virtual and real connected devices
US9465664B1 (en) * 2015-09-09 2016-10-11 Honeywell International Inc. Systems and methods for allocation of environmentally regulated slack
FR3041788B1 (fr) 2015-09-30 2018-02-02 Zcost Management Procede de controle de la capacite d'utilisation d'un systeme partitionne de traitement de donnees.
US10680852B2 (en) * 2016-07-14 2020-06-09 Hewlett Packard Enterprise Development Lp Configuration of a managed device
US10693732B2 (en) 2016-08-03 2020-06-23 Oracle International Corporation Transforming data based on a virtual topology
US10389628B2 (en) 2016-09-02 2019-08-20 Oracle International Corporation Exposing a subset of hosts on an overlay network to components external to the overlay network without exposing another subset of hosts on the overlay network
US10558478B2 (en) 2016-12-15 2020-02-11 Nutanix, Inc. Specification-based computing system configuration
US10291507B2 (en) 2017-02-13 2019-05-14 Oracle International Corporation Implementing a virtual tap in a virtual topology
US10462013B2 (en) * 2017-02-13 2019-10-29 Oracle International Corporation Implementing a single-addressable virtual topology element in a virtual topology
CN107301034A (zh) * 2017-08-09 2017-10-27 葛松芬 一种并行处理器阵列结构
DE102018131613A1 (de) * 2018-04-10 2019-10-10 Infineon Technologies Ag Fehlererkennung mittels Gruppenfehler
US11256531B2 (en) * 2019-06-20 2022-02-22 International Business Machines Corporation Isolating physical processors during optimization of VM placement
CN113867791B (zh) * 2020-06-30 2023-09-26 上海寒武纪信息科技有限公司 一种计算装置、芯片、板卡、电子设备和计算方法
US11782872B2 (en) 2022-03-07 2023-10-10 International Business Machines Corporation Distribution of over-configured logical processors

Family Cites Families (40)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US585994A (en) * 1897-07-06 Administrator of alexander
US3825895A (en) 1973-05-14 1974-07-23 Amdahl Corp Operand comparator
US3982229A (en) 1975-01-08 1976-09-21 Bell Telephone Laboratories, Incorporated Combinational logic arrangement
US4713750A (en) 1983-03-31 1987-12-15 Fairchild Camera & Instrument Corporation Microprocessor with compact mapped programmable logic array
US4569016A (en) 1983-06-30 1986-02-04 International Business Machines Corporation Mechanism for implementing one machine cycle executable mask and rotate instructions in a primitive instruction set computing system
US4578750A (en) 1983-08-24 1986-03-25 Amdahl Corporation Code determination using half-adder based operand comparator
US5113523A (en) 1985-05-06 1992-05-12 Ncube Corporation High performance computer system
JPS6382513A (ja) 1986-09-26 1988-04-13 Toshiba Corp バレルシフタ
US5859994A (en) 1992-08-10 1999-01-12 Intel Corporation Apparatus and method for modifying instruction length decoding in a computer processor
WO1994027215A1 (en) * 1993-05-07 1994-11-24 Apple Computer, Inc. Method for decoding guest instructions for a host computer
US6067613A (en) 1993-11-30 2000-05-23 Texas Instruments Incorporated Rotation register for orthogonal data transformation
US5551013A (en) * 1994-06-03 1996-08-27 International Business Machines Corporation Multiprocessor for hardware emulation
US5748950A (en) 1994-09-20 1998-05-05 Intel Corporation Method and apparatus for providing an optimized compare-and-branch instruction
US5632028A (en) 1995-03-03 1997-05-20 Hal Computer Systems, Inc. Hardware support for fast software emulation of unimplemented instructions
EP0730220A3 (en) 1995-03-03 1997-01-08 Hal Computer Systems Inc Method and device for quickly executing branch instructions
US5732242A (en) 1995-03-24 1998-03-24 Silicon Graphics, Inc. Consistently specifying way destinations through prefetching hints
US5790825A (en) * 1995-11-08 1998-08-04 Apple Computer, Inc. Method for emulating guest instructions on a host computer through dynamic recompilation of host instructions
JP3790607B2 (ja) 1997-06-16 2006-06-28 松下電器産業株式会社 Vliwプロセッサ
US6223256B1 (en) 1997-07-22 2001-04-24 Hewlett-Packard Company Computer cache memory with classes and dynamic selection of replacement algorithms
US6112293A (en) 1997-11-17 2000-08-29 Advanced Micro Devices, Inc. Processor configured to generate lookahead results from operand collapse unit and for inhibiting receipt/execution of the first instruction based on the lookahead result
US6009261A (en) * 1997-12-16 1999-12-28 International Business Machines Corporation Preprocessing of stored target routines for emulating incompatible instructions on a target processor
US6308255B1 (en) * 1998-05-26 2001-10-23 Advanced Micro Devices, Inc. Symmetrical multiprocessing bus and chipset used for coprocessor support allowing non-native code to run in a system
US6463582B1 (en) * 1998-10-21 2002-10-08 Fujitsu Limited Dynamic optimizing object code translator for architecture emulation and dynamic optimizing object code translation method
IL147348A0 (en) 1999-06-30 2002-08-14 Mochida Pharm Co Ltd Tricyclic compounds having spiro union
ATE283512T1 (de) * 1999-09-28 2004-12-15 Ibm Arbeitsbelastungsverwaltung in einer rechnerumgebung
US6446197B1 (en) 1999-10-01 2002-09-03 Hitachi, Ltd. Two modes for executing branch instructions of different lengths and use of branch control instruction and register set loaded with target instructions
US6763327B1 (en) 2000-02-17 2004-07-13 Tensilica, Inc. Abstraction of configurable processor functionality for operating systems portability
US6738895B1 (en) 2000-08-31 2004-05-18 Micron Technology, Inc. Method and system for substantially registerless processing
US7165101B2 (en) 2001-12-03 2007-01-16 Sun Microsystems, Inc. Transparent optimization of network traffic in distributed systems
US7493480B2 (en) 2002-07-18 2009-02-17 International Business Machines Corporation Method and apparatus for prefetching branch history information
US7140021B2 (en) * 2002-09-13 2006-11-21 Microsoft Corporation Dynamic TCP partitioning
US7337442B2 (en) 2002-12-03 2008-02-26 Microsoft Corporation Methods and systems for cooperative scheduling of hardware resource elements
WO2005022385A1 (en) * 2003-08-28 2005-03-10 Mips Technologies, Inc. Mechanisms for dynamic configuration of virtual processor resources
US8621458B2 (en) * 2004-12-21 2013-12-31 Microsoft Corporation Systems and methods for exposing processor topology for virtual machines
US8335810B2 (en) 2006-01-31 2012-12-18 Qualcomm Incorporated Register-based shifts for a unidirectional rotator
US7693811B2 (en) 2006-02-28 2010-04-06 International Business Machines Corporation Generating unique identifiers for logical partitions
US8352950B2 (en) * 2008-01-11 2013-01-08 International Business Machines Corporation Algorithm to share physical processors to maximize processor cache usage and topologies
US7739434B2 (en) * 2008-01-11 2010-06-15 International Business Machines Corporation Performing a configuration virtual topology change and instruction therefore
US7734900B2 (en) 2008-01-11 2010-06-08 International Business Machines Corporation Computer configuration virtual topology discovery and instruction therefore
WO2010023974A1 (ja) * 2008-08-27 2010-03-04 独立行政法人農業生物資源研究所 広範な病害抵抗性を付与するイネ遺伝子

Also Published As

Publication number Publication date
WO2009087233A1 (en) 2009-07-16
ATE546774T1 (de) 2012-03-15
US10055261B2 (en) 2018-08-21
US20180107495A9 (en) 2018-04-19
CY1112504T1 (el) 2015-12-09
DK2223203T3 (da) 2012-04-02
US20130024659A1 (en) 2013-01-24
US8819320B2 (en) 2014-08-26
US20170308392A1 (en) 2017-10-26
US20190317828A1 (en) 2019-10-17
US10061623B2 (en) 2018-08-28
JP2011509478A (ja) 2011-03-24
US20090182915A1 (en) 2009-07-16
US20140337602A1 (en) 2014-11-13
CN101911012A (zh) 2010-12-08
CN101911012B (zh) 2013-07-24
PL2223203T3 (pl) 2012-07-31
SI2223203T1 (sl) 2012-05-31
US10621007B2 (en) 2020-04-14
US20100095033A1 (en) 2010-04-15
US7739434B2 (en) 2010-06-15
WO2009087233A9 (en) 2009-09-24
ES2379575T3 (es) 2012-04-27
US10372505B2 (en) 2019-08-06
KR20100106449A (ko) 2010-10-01
US8301815B2 (en) 2012-10-30
PT2223203E (pt) 2012-03-29
US20190004867A1 (en) 2019-01-03
US20110283280A1 (en) 2011-11-17
EP2223203B1 (en) 2012-02-22
EP2223203A1 (en) 2010-09-01
US8015335B2 (en) 2011-09-06
KR101221252B1 (ko) 2013-01-14

Similar Documents

Publication Publication Date Title
JP5179597B2 (ja) 構成の仮想トポロジの変化
JP4768083B2 (ja) ゲスト構成の1つ又は複数のゲスト・プロセッサのトポロジを発見するための方法
EP2430532B1 (en) Function virtualization facility for blocking instruction function of a multi-function instruction of a virtual processor
CN102906692A (zh) 用于执行有选择地修改适配器功能参数的指令的方法、用于相同操作的计算机系统和计算机程序产品
CN102906693A (zh) 用于与适配器进行通信的存储/存储块指令

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20111122

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120615

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20120615

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20120628

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120703

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120820

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20121106

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20121126

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20121218

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130109

R150 Certificate of patent or registration of utility model

Ref document number: 5179597

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150