JP2013533545A - 処理を逐次化するための診断命令を実行する方法、システム及びプログラム - Google Patents

処理を逐次化するための診断命令を実行する方法、システム及びプログラム Download PDF

Info

Publication number
JP2013533545A
JP2013533545A JP2013515730A JP2013515730A JP2013533545A JP 2013533545 A JP2013533545 A JP 2013533545A JP 2013515730 A JP2013515730 A JP 2013515730A JP 2013515730 A JP2013515730 A JP 2013515730A JP 2013533545 A JP2013533545 A JP 2013533545A
Authority
JP
Japan
Prior art keywords
instruction
lock
guest
processor
host
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.)
Granted
Application number
JP2013515730A
Other languages
English (en)
Other versions
JP5764206B2 (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 JP2013533545A publication Critical patent/JP2013533545A/ja
Application granted granted Critical
Publication of JP5764206B2 publication Critical patent/JP5764206B2/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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/30087Synchronisation or serialisation 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/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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/30079Pipeline control instructions, e.g. multicycle NOP
    • 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/30181Instruction operation extension or modification
    • G06F9/30185Instruction operation extension or modification according to one or more bits in the instruction, e.g. prefix, sub-opcode
    • 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/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • 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/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores

Abstract

【課題】複数のプロセッサに同じリソースを更新させる環境において処理を容易化するシステム逐次化機能を提供する。
【解決手段】本システム逐次化機能は、多重処理環境における処理の容易化のために用いられ、ゲストおよびホストがロックを使って逐次化を提供する。本システム逐次化機能は、ホストがロックを取得した後発行される診断命令を含み、ゲストがロックを取得する必要性を排除する。
【選択図】図3

Description

本発明は、一般にコンピューティング環境内での処理に関し、具体的には多重処理コンピューティング環境における処理の逐次化(serializing)に関する。
ニューヨーク州、アーモンクのインターナショナル・ビジネス・マシーンズ・コーポレーションが提供しているz/Architecture(IBM社の登録商標)に基づくマシンにおいては、通常、プログラム(本文脈ではゲストという)がLPAR(logical partition:論理区画モード)またはz/VM(IBM社の登録商標)の下で実行されているとき、ゲストの命令はハードウェアまたはファームウェアによって実行される。この命令の実行は、多くの場合、オペランド・アドレスの変換およびそれらアドレスとのデータ・フェッチおよび格納のやり取りを含む。各命令が実行されている間、ハードウェアは、別のプロセッサから入来し、その命令に関連付けられた変換を無効にしかねない、一切のページ・テーブル・エントリ無効化(IPTE:invalidate page table entry)、動的アドレス変換(DAT:dynamic address translation)テーブル・エントリ無効化(IDTE:invalidate DAT table entry)、または比較/スワップ/パージ(CSP/G:compare and swap and purge)要求が、該命令が完了するまで待つことを保証する。同様に、未処理のIPTE、IDTEまたはGSP/Gに適用され得るいかなる変換アクセスも格納アクセスも、これらIPTE、IDTEまたはGSP/Gのオペレーションが完了するまでは実施されない。
LPARまたはz/VM(IBM社の登録商標)のハイパーバイザが、ゲストのために、ある命令をエミュレートする必要がある場合がある。これを行うために、ハイパーバイザは、その命令に関連付けられたオペランド・アドレスをマニュアルで変換し(すなわち、ハードウェアが不知の多段階の変換を実施し)、引き続き、それらの変換に基づいて、ストレージ・アクセスを行う必要がある。ゲスト多重処理(MP:multi−processing)構成中の一つのプロセッサにより発行されたIPTE、IDTE、CSP/Gと、その同一構成中の別のプロセッサのためハイパーバイザが遂行中の命令エミュレーションとの間に衝突が生じないことを保証するために、シングル・インターロックが使われる。このロックはIPTEインターロックといわれ、特定の仮想構成に対する全てのMPゲストの間で共用される制御ブロックである、システム制御領域(SCA:System Control Area)に配置されている。命令エミュレーションの期間は、ハイパーバイザがロックを保持し、IPTE、IDTE、またはCSP/Gが実行されているときはファームウェアがロックを保持することになる。
パフォーマンスを向上するために、このシングル・ロックは、2部分の共用ロックに分割されている。IPTEインターロックの一つの部分は、ハイパーバイザまたはホストによって維持される共用ロックであり、命令のエミュレーションの期間はハイパーバイザによって保持されている。他方の部分は、ゲストのためにファームウェアが維持しており、IPTE、IDTE、またはCSP/Gが実行されている間はファームウェアに保持される。各ロックは、現在ロックを保持しているホストまたはゲスト・プロセッサのカウントである。ロックの整合性を確実にするため、ハイパーバイザまたはファームウェアは、他方の(それぞれ、ゲストまたはホスト)ロックが保持されていない場合にだけ、比較/スワップ(例えば、Compare and Swap(CSG)命令)を使って、妥当な(それぞれ、ゲストまたはホスト)ロック・カウントをインクリメントする。ホストが、IPTEインターロックがゲストによって保持されていると判定した場合、ホストは、ロックが利用可能になるまで、命令エミュレーションが進むのを待つ。ゲストが、ホスト・ロックが保持されていることを検知した場合、ゲストは、(命令インターセプトを使い)インターセプトし、ホストへ戻す。
1998年9月15日発行の特許文献1、Blandyの「Pending Page Release」は、コンピュータ・システムのゲスト・プログラムによってページの解放が要求された後、システムによる実際のページ解放を遅延させ、ページ解放の保留を生じさせることによって、コンピュータ・システム中の仮想ストレージのページを管理するための方法、装置、および製造品を記載している。ページ解放の保留が確定されると、保留されたページ解放がログ・エントリされ、それらページ(群)はゲストに割り当てたままとなる。システムはログ中のページをいつでも発行することができる。ゲストは、保留されたページ解放のキャンセルを要求することができ、その場合、要求されたページがシステムによって解放済みでなければ、それらページはゲストによる再使用のためにログから除去される。鍵設定、ページ消去または初期化、およびページ検証または移動は、随意的サービスであり、これらをキャンセル要求に含めることができる。確定およびキャンセルは、望ましくは、ゲストによって、インターセプト命令DIAGNOSE(診断)を用いて要求され、ホスト・オペレーティング・システムのストレージ・マネージャ・コンポーネントによって実施される。保留されたページ解放のキャンセルは、DIAGNOSE命令を用いて要求されるが、専用のマシン命令で置き換えることもできる。システムは、保留されたページ解放要求のログを処理して、保留ページを定型法で解放する。
2004年4月1日に発行された特許文献2、Farrellらの「Method and Apparatus for Controlling the Execution of a Broadcast Instruction on a Guest Processor of a Guest Multiprocessing Configuration」は、ゲスト・マシンの他のプロセッサによる対応オペレーションを要求する一斉通信命令の、ゲスト・プロセッサでの実行を管理するための方法および装置を記載している。情報処理システムの複数のプロセッサの各々は、ホスト・マシン上で実行されるホスト・プログラムの制御下にあるホスト・プロセッサ、または、ゲスト・マシン上で実行されるゲスト・プログラムの制御下にあるゲスト・プロセッサのいずれとしても動作可能である。ゲスト・マシンは、ホスト・マシン上で実行されるホスト・プログラムによって定義され、ゲストの多重処理構成を形成するかかる複数のゲスト・プロセッサを包含する。ゲスト・マシンに対するロックが定義され、これは、ロックがホスト・プログラムのホストのロック・ホルダによって保持されているかどうかの表示、およびゲストのロック・ホルダとしてロックを保持しているプロセッサの数のカウントを包含する。ゲスト・プロセッサとして動作しているプロセッサ上で実行される一斉通信命令が復号され次第、ロックが検査され、それがホストのロック・ホルダによって保持されているかどうかが判定される。ロックが、ホストのロック・ホルダによって保持されている場合、命令インターセプトが認識され、その命令の実行は打ち切られる。ロックがホストのロック・ホルダによって保持されていない場合、ロックは更新され、それが共用ロック・ホルダであるゲスト・プロセッサによって保持されていることを表示し、上記命令は実行され、次いで、ロックが再度更新され、それがもはや共用ロック・ホルダとして該ゲスト・プロセッサに保持されていないことを表示する。
米国特許第5,809,551号 米国特許出願公開第2004/0064618号(A1)
大型の単一イメージ・システムでは、比較/スワップを遂行するためのオーバーヘッドが相当なものになり得る。あるプロセッサがIPTE、IDTE、またはCSP/Gを実行しているとき、該プロセッサは、一斉通信高速静止(fast−quiesce)オペレーションを行って、システム中の全プロセッサに無効化を通知する。システム中のどの一つの区画に対しても、一つだけの高速静止化オペレーションが可能である。あるプロセッサが高速静止化オペレーションを発行し、静止化ハードウェアが既に別の要求を処理している場合、その要求は却下される。この大型の単一イメージでは、静止要求の多いワークロードで実行がなされる場合、却下の頻度は高い。適切な実行を確実にするために、高速静止要求を発行する前にIPTEインターロックが取得され、要求が却下された場合でも、オペレーションの後で解除される。各比較/スワップによって、関連するキャッシュ・ラインが排他的にフェッチされることになり、大きなマルチノードのシングル・イメージ・マシンでは、このためのシステム全体の負担は大きなものになり得る。
診断(diagnose)命令を実行し、処理を逐次化するためのコンピュータ・プログラム製品の提供を介して、従来技術の欠点を克服し利点を提供する。本コンピュータ・プログラム製品は、方法を遂行するため処理回路が実行する命令を格納する、処理回路による読み取りが可能なコンピュータ可読のストレージ媒体を含む。上記方法は、例えば、実行のためマシン命令を取得するステップであって、マシン命令はコンピュータ・アーキテクチャに従ったコンピュータ実行のために定義されており、該マシン命令は、例えば、診断命令を識別するオペコード・フィールド、診断命令の実行に使われるサブコードを内容に含む第一位置を識別するサブコード・フィールド、および第二位置の内容を変位フィールドの内容に加算して、処理を逐次化するために診断命令が用いられることを識別するのに使われるオペレーション・コード拡張を得るための、第二位置を識別するベース・フィールドを含む、該取得するステップと、オペレーション・コード拡張によって示されたマシン命令を実行するステップであって、該実行するステップは、サブコードが所定の値であるのに応じて:コンピューティング環境のプロセッサの静止化を開始するステップ、それらのプロセッサが静止されていることを判定するステップ、およびプロセッサが静止されるのに応じて、診断命令の実行を完了するステップを含む、該実行するステップと、を含む。
本発明の一つ以上の態様に関する方法およびシステムも、本明細書に記載され、特許請求される。
本発明の技法を介して、さらなる特質および利点が実現される。本発明の上記以外の実施形態および態様も本明細書に詳細に記載され、これらは請求された発明の一部と見なされる。
本発明の一つ以上の態様が具体的に指摘され、例として、本明細書に添付の請求項において明確に請求される。本発明の前述および他の目的、特質、および利点は、以下の詳細な説明を添付の図面と併せ読めば明らかとなろう。
本発明の一つ以上の態様を組み込み用いるためのコンピューティング環境の一つの実施形態を示す。 本発明の一つ以上の態様を組み込み用いるためのコンピューティング環境の別の実施形態を示す。 本発明の一つ以上の態様を組み込み用いるための疑似的な(emulated)コンピューティング環境の一つの実施形態を示す。 本発明のある態様による、ゲスト変換テーブルの使用を逐次化し、ゲストとホストとの間で更新するために用いられるIPTEインターロックの一つの実施形態を示す。 ハイパーバイザの従来式のIPTEインターロック処理に関するロジックの一つの実施形態を示す。 ハイパーバイザの従来式のIPTEインターロック処理に関するロジックの一つの実施形態を示す。 ゲストの従来式のIPTEインターロック処理に関するロジックの一つの実施形態を示す。 ゲストの従来式のIPTEインターロック処理に関するロジックの一つの実施形態を示す。 本発明のある態様による、ハイパーバイザの別のIPTEインターロック処理に関するロジックの一つの実施形態を示す。 本発明のある態様による、ハイパーバイザの別のIPTEインターロック処理に関するロジックの一つの実施形態を示す。 本発明のある態様による、ゲストの別のIPTEインターロック処理に関するロジックの一つの実施形態を示す。 本発明のある態様による、ゲストの別のIPTEインターロック処理に関するロジックの一つの実施形態を示す。 本発明のある態様によって用いられる診断(DIAG)命令の一つの実施形態を示す。 本発明のある態様による、別のIPTEインターロックの一部として使われるDIAG命令に関するロジックの一つの実施形態を示す。 本発明のある態様による、別のIPTEインターロックの一部として使われるDIAG命令に関するロジックの一つの実施形態を示す。 本発明のある態様による、DIAG命令によって発行された静止化の取扱いに関するロジックの一つの実施形態を示す。 図17Aは、本発明のある態様によって用いられる高速静止コマンドの一例を示し、図17Bは、本発明のある態様によって用いられる全定型(または全体システム)静止化コマンドの一例を示す。 本発明のある態様による、静止要求処理を用いるコンピュータ・システムのプロセッサおよびシステム・コントローラのより詳細な実施形態を示す。 本発明の一つ以上の態様を組み込んだコンピュータ・プログラム製品の一つの実施形態を示す。 本発明の一つ以上の態様を組み込み使用するためのホスト・コンピュータ・システムの一つの実施形態を示す。 本発明の一つ以上の態様を組み込み使用するためのコンピュータ・システムのさらなる例を示す。 本発明の一つ以上の態様を組み込み使用するための、コンピュータ・ネットワークを含む、コンピュータ・システムの別の例を示す。 本発明の一つ以上の態様を組み込み使用するためのコンピュータ・システムのさまざまなエレメントの一つの実施形態を示す。 本発明の一つ以上の態様を組み込み使用するための、図23のコンピュータ・システムの実行ユニットの一つの実施形態を示す。 本発明の一つ以上の態様を組み込み使用するための、図23のコンピュータ・システムの分岐ユニットの一つの実施形態を示す。 本発明の一つ以上の態様を組み込み使用するための、図23のコンピュータ・システムのロード/格納ユニットの一つの実施形態を示す。
本発明のある態様によって、複数のプロセッサに同じリソース(例えば、アドレス変換テーブル)を更新させる環境において処理を容易化するための、システム逐次化機能が提供される。具体的には、一つの事例において、システム逐次化機能が、ゲストおよびホストがロックを使って逐次化を行う、多重処理環境における処理を容易化するために用いられる。一例として、ホストがロック(例えば、IPTEインターロック)を取得した後、システム逐次化機能が用いられ、ゲストがロックを取得する必要性は全く排除される。このことは、ロックの取得に関連してホストから見てオーバーヘッドを増やす可能性があるが、それは比較的まれで、ゲストがIPTEインターロックを取得するよくあるケースの該ロック取得を完全に排除する。これは、IPTEインターロックに対する競合を、完全でないにせよほぼ全て排除する。
本発明の一つ以上の態様を組み込み使用するコンピューティング環境100の一つの実施形態を、図1を参照しながら説明する。コンピューティング環境100は、例えば、ニューヨーク州、アーモンクのインターナショナル・ビジネス・マシーンズ・コーポレーションが提供しているz/Architecture(IBM社の登録商標)に基づいている。このz/Architecture(IBM社の登録商標)は、IBM(IBM社の登録商標)発行のIBM発行番号第SA22−7832−07号、2009年2月第8版の題名「z/Architecture(IBM社の登録商標) Principles of Operation」に説明されている。一つの事例において、z/Architecture(IBM社の登録商標)に基づくコンピューティング環境は、ニューヨーク州、アーモンクのインターナショナル・ビジネス・マシーンズ・コーポレーションが提供しているSystem z(IBM社の登録商標)サーバを含む。IBM(IBM社の登録商標)、z/Architecture(IBM社の登録商標)、Z/VM(IBM社の登録商標)、およびSystem z(IBM社の登録商標)は、ニューヨーク州、アーモンクのインターナショナル・ビジネス・マシーンズ・コーポレーションの登録商標である。本明細書で使用する他の名称が、インターナショナル・ビジネス・マシーンズ・コーポレーションあるいは他の企業の登録商標または商標のことがある。
一つの事例として、コンピューティング環境100は、システム・コントローラ112に連結された中央プロセッサ複合体(CPC:central processor complex)102を含む。中央プロセッサ複合体102は、例えば、一つ以上の区画104(例、論理区画LP1〜LPn)、一つ以上の中央プロセッサ106(例、CP1〜CPm)、およびハイパーバイザ108(例、論理区画マネージャ)を含んでおり、これらの各々について以下に説明する。
各論理区画104は、別々のシステムとして機能する能力を有する。すなわち、各論理区画104は独立して、リセットされ、所望の場合最初にオペレーティング・システム110を搭載し、相異なるプログラムで作動することができる。ある論理区画104で実行されているオペレーティング・システム110またはアプリケーション・プログラムは、完全な全システムへのアクセスを有するように見えるが、実際は利用可能であるのは、その一部だけである。ハードウェアとライセンス内部コード(一般にマイクロコードまたはファームウェアといわれる)との組み合わせによって、プログラムを、異なる論理区画104のプログラムとの干渉が生じないように、一つの論理区画104中に保持する。これにより、いくつかの相異なる論理区画104が、単一のまたは複数の物理プロセッサ上で、タイム・スライス方式で動作することが可能になる。この特定の例において、各論理区画104は、常駐オペレーティング・システム(OS:operating system)110を有し、これは一つ以上の論理区画104に対して相異なるものとすることができる。一つの実施形態において、オペレーティング・システム110は、ニューヨーク州、アーモンクのインターナショナル・ビジネス・マシーンズ・コーポレーションが提供しているz/OS(IBM社の登録商標)オペレーティング・システムである。z/OS(IBM社の登録商標)は、ニューヨーク州、アーモンクのインターナショナル・ビジネス・マシーンズ・コーポレーションの登録商標である。
中央プロセッサ106は、論理区画104に割り当てられた物理プロセッサ・リソースである。例えば、論理区画104は、一つ以上の論理プロセッサを含み、該装置の各々は、該区画に割り当てられた物理プロセッサ・リソース106の全体または割り当て分を表す。ある特定の区画104の論理プロセッサは、ベースになるプロセッサ・リソースをその区画のために保留して該区画の専用とすることもでき、あるいは、別の区画と共用し、別の区画によるベースのプロセッサ・リソースの利用を見込んでおくこともできる。
論理区画104は、プロセッサ106上で実行されるファームウェアによって実装されたハイパーバイザ108によって管理される。論理区画104およびハイパーバイザ108は、各々、中央プロセッサ106に関連付けられた中央ストレージのそれぞれの部分に常駐する一つ以上のプログラムを含む。ハイパーバイザ108の一つの例に、ニューヨーク州、アーモンクのインターナショナル・ビジネス・マシーンズ・コーポレーションが提供しているProcessor Resource/Systems Manager(PR/SM)(IBM社の商標)がある。
本明細書での使用において、ファームウェアは、例えば、プロセッサのマイクロコード、ファームウェア、もしくはマクロコードまたはこれらの組み合わせを含む。例えば、これは、より高いレベルのマシン・コードの実装に使われるハードウェア・レベルの命令もしくはデータ構造体またはその両方を含む。一つの実施形態において、これは、例えば、ベースのハードウェアに固有の信頼性あるソフトウェアまたはマイクロコードを包含するマイクロコードとして通常配布される、専用コードを含み、オペレーティング・システムのシステム・ハードウェアへのアクセスを制御する。
システム・コントローラ112は、中央プロセッサ複合体に連結されており、要求を発行する異なるプロセッサの間を調停する役割を持つ中央ロジックを含む。例えば、システム・コントローラ112が静止要求を受信したとき、該コントローラは、要求元が当該要求の開始プロセッサであること、および他のプロセッサが受信プロセッサであることを確定してメッセージを一斉通信し、別途にも要求を処理する。これは後記でさらに詳細に説明する。
本発明の一つ以上の態様を組み込み使用するためのコンピューティング環境の別の例を、図2を参照しながら説明する。この例において、コンピューティング環境200は、システム・コントローラ240に連結された中央プロセッサ複合体(CPC)202を含む。中央プロセッサ複合体202は、例えば、前述のように、一つ以上の区画204(例、論理区画LP1〜LPn)、一つ以上の中央プロセッサ230(例、CP1〜CPm)、および第一レベル・ハイパーバイザ1 208(例、論理区画マネージャ)を含む。
この特定の事例において、論理区画1(LP1)220は、常駐オペレーティング・システム222を有し、論理区画2(LP2)224は、第二レベル・ハイパーバイザ2 210を実行し、これが次に仮想マシン(例、VM1〜VMx)212を生成し、その各々はそれ自体の常駐オペレーティング・システム214を実行する。任意の数の論理区画が第二レベル・ハイパーバイザを実行することができる。一つの実施形態において、ハイパーバイザ2 210は、ニューヨーク州、アーモンクのインターナショナル・ビジネス・マシーンズ・コーポレーションが提供している、z/VM(IBM社の登録商標)のハイパーバイザである。z/VMはニューヨーク州、アーモンクのインターナショナル・ビジネス・マシーンズ・コーポレーションの登録商標である。
さらに、さまざまな論理区画で実行されている常駐オペレーティング・システムは相異なるものとすることができ、第二レベル・ハイパーバイザの下で実行される場合、単一の区画内の常駐オペレーティング・システム群も相異ならせることができる。一つの実施形態において、オペレーティング・システム222は、ニューヨーク州、アーモンクのインターナショナル・ビジネス・マシーンズ・コーポレーションが提供しているz/OS(IBM社の登録商標)オペレーティング・システムであり、オペレーティング・システム214はLinux(R)である。
中央プロセッサ106と同様に、中央プロセッサ230は、論理区画に割り当てられた物理プロセッサ・リソースである。例えば、論理区画1(LP1)220は一つ以上の論理プロセッサを含み、その各々は、該区画に割り当てられた物理プロセッサ・リソース230の全体または割り当て分を表す。ある特定の区画の論理プロセッサは、ベースのプロセッサ・リソースをその区画のため保留して該区画の専用とすることもでき、あるいは、別の区画と共用し、別の区画によるベースのプロセッサ・リソースの利用を見込んでおくこともできる。第二レベル・ハイパーバイザ2 210が、ある論理区画(例、LP2 224)中で実行されている場合、これは、ハイパーバイザ1 208によって論理区画204に提供されているのと同じリソースの仮想化を、当該区画内の仮想マシン中で実行されるオペレーティング・システム214に提供することができる。第一レベルにおいて、各仮想マシンには、複数の仮想プロセッサを含めることができる。本明細書で使われる用語「仮想CPU」とは、論理プロセッサまたは仮想プロセッサをいう。
論理区画204は、ハイパーバイザ208と210とによって管理される。論理区画204およびハイパーバイザ208(ファームウェアによって実装される)は、各々、中央プロセッサに関連付けられた中央ストレージのそれぞれの部分に常駐する一つ以上のプログラムを含む。ハイパーバイザ208の一つの例に、ニューヨーク州、アーモンクのインターナショナル・ビジネス・マシーンズ・コーポレーションが提供しているProcessor Resource/Systems Manager(IBM社の商標)(PR/SM)がある。
システム・コントローラ240は、中央プロセッサ複合体に連結されており、要求を発行する異なるプロセッサの間を調停する役割を持つ中央ロジックを含む。例えば、システム・コントローラ240が静止要求を受信したとき、該コントローラは、要求元が当該要求の開始プロセッサであること、および他のプロセッサが受信プロセッサであることを確定してメッセージを一斉通信し、別途にも要求を処理する。
本発明の一つ以上の態様を組み込むためのコンピューティング環境の別の実施形態を、図3を参照しながら説明する。この例において、ホスト・アーキテクチャのホスト・コンピュータ・システム302をエミュレートする、疑似ホスト・コンピュータ・システム300が提供される。疑似ホスト・コンピュータ・システム300において、ホスト・プロセッサ(CPU)304は疑似ホスト・プロセッサ(または仮想ホスト・プロセッサ)であり、ホスト・コンピュータ・システム302のプロセッサによって使用されるものとは異なるネイティブ命令セットのアーキテクチャを有するエミュレーションプロセッサ306を含む。疑似ホスト・コンピュータ・システム300は、エミュレーションプロセッサ306がアクセスできるメモリ308を有する。この例示的な実施形態において、メモリ308は、ホスト・コンピュータ・メモリ310部分と、エミュレーション・ルーチン・メモリ312部分とに区画されている。疑似ホスト・コンピュータ・システム300のプログラムは、ホスト・コンピュータ・アーキテクチャに従って、ホスト・コンピュータのメモリ310を利用することができ、該メモリには、ホストまたはハイパーバイザ314と、論理区画群(LP群)316で実行される一つ以上のハイパーバイザとの双方を含めることができる。各論理区画は、オペレーティング・システム318を実行することができる。
エミュレーションプロセッサ306は、疑似プロセッサ304のものとは異なるアーキテクチャで設計された命令セットのネイティブ命令を実行する。ネイティブ命令は、エミュレーション・ルーチン・メモリ312から得ることができ、これは、順次アクセス/復号ルーチンで取得した一つ以上の命令(群)を用いて、ホスト・コンピュータ・メモリ310中のプログラムの実行のためのホスト命令にアクセスすることができ、該ルーチンは、アクセスされたホスト命令(群)を復号し、アクセスされたホスト命令の機能をエミュレートするためのネイティブ命令の実行ルーチンを決定する。かかるホスト命令の一つを、例えば、解釈実行開始(SIE:Start Interpretive Execution)命令とすることができ、これにより、ホストは、仮想マシンでプログラムを実行しようとする。エミュレーション・ルーチン・メモリ312には、この命令に対するサポート、およびこのSIE命令の定義に従ってゲスト命令のシーケンスを実行するためのサポートを含めることができる。
ホスト・コンピュータ・システム302のアーキテクチャのために定義された他の機能は、例えば、汎用レジスタ、制御レジスタ、動的アドレス変換、およびI/Oサブシステム・サポートおよびプロセッサ・キャッシュなどの機能を含めて、設計された機能ルーチンによってエミュレートすることができる。また、エミュレーション・ルーチンは、エミュレーションプロセッサ304で利用可能な(汎用レジスタおよび仮想アドレスの動的変換などの)機能をうまく活用して、エミュレーション・ルーチンのパフォーマンスを向上することができる。さらに、ホスト・コンピュータ・システム302の機能のエミュレートにおいてプロセッサ306を助力するために、特別なハードウェアおよびオフロード・エンジンを設けることもできる。
コンピューティング環境において処理を逐次化するため、一つの実施形態では、共用IPTEインターロック(本明細書では、共用ロック、共用IPTEロック、またはロックともいう)が使われる。このロックは、例えば、ハイパーバイザが、ゲストの動的アドレス変換(DAT:Dynamic Address Translation)およびアクセス・レジスタ変換(ART:Access Register Translation)テーブルの使用を逐次化するために、さらにファームウェアがゲストのためこれらのテーブルを更新するために用いられる。共用IPTEインターロックの一例が図4に示されている。共用IPTEインターロック410は、ホスト・ハイパーバイザが、ゲストDATまたはARTテーブルを使って一つ以上のオペランドを変換している間は、該ハイパーバイザによって保持され、または、ファームウェアがゲストのIPTE、IDTE、CSP/G要求のために変換テーブルを更新しているときは、該ファームウェアによって、保持される。ハイパーバイザは、それがロックを取得するのに応じ、ホストIPTEロック・カウント414をインクリメントする。本発明の一態様の以前は、同様に、ファームウェアがロックを取得するのに応じ、ゲストIPTEロック・カウント412もインクリメントする。しかしながら、本発明のある態様によれば、ゲストIPTEロックはもはや使われない。
マニュアルのゲストDATまたはART変換の間のハイパーバイザによる共用IPTEロックの維持のための従来技法の一つの実施形態を、図5〜図6を参照しながら説明する。ハイパーバイザは、通常、一つ以上のストレージ・オペランドにアクセスするべくゲストのために命令をエミュレートしているときに、この変換を遂行する。この変換を本明細書ではマニュアルという。というのは、これはハードウェアが不知の多段階の処理だからである。従って、ハードウェアは、ハイパーバイザのために処理を逐次化することはない。
図5に示されるように、実際の変換を始める前に、ハイパーバイザは、アドレス変換が適用されるゲストが多重処理(MP)ゲスト、すなわち、構成の中の複数の仮想プロセッサであるかどうかを確認する(インクワイアリ510)。ゲストが単一プロセッサ・ゲスト、すなわち、構成中の一つだけの仮想プロセッサである場合、ハイパーバイザは、IPTEインターロックをセットせずに、マニュアル変換を遂行することができる(図6のステップ522)。これは、一つのゲスト・プロセッサが、ハイパーバイザにエミュレートされた命令を実行しており、他のプロセッサが変換テーブルを更新するためのIPTE、IDTE、またはCSP/Gを発行した場合を管理するためにIPTEインターロックが使われることによる。単一プロセッサ・ゲストにおいては、ある命令がエミュレートされている場合に、変換テーブルを更新する命令を発行する他のプロセッサは存在しない。
その後、これが多重処理ゲストであるかどうか、再度判定が行われる(インクワイアリ524)。この場合は、多重でないので処理は完了する。
図5に戻ると、適用対象ゲストが、多重処理環境で実行されている場合(インクワイアリ510)、ハイパーバイザは、まず、IPTEインターロックが既に保持されているかどうかを判定する(インクワイアリ512)。保持されていなければ、ハイパーバイザは該インターロックを取得することができる(ステップ514)。これは、例えば、比較/スワップ・オペレーション(例、z/Architecture(IBM社の登録商標)におけるCompare and Swap (CSG))などのインターロック更新を使って遂行することができる。この比較/スワップは、当初フェッチされたものからのデータを現在のデータと比較して、データが変化していない場合にだけ更新を行う。ハードウェアは、このチェックおよび更新がアトミックであること、すなわち、この間、他のどのプロセッサもロックを変更していないことを保証する。ハイパーバイザは、IPTEインターロックをセットし、ホストIPTEロック・カウントを、例えば、ゼロから1にインクリメントする。このインターロック更新に失敗した場合(インクワイアリ520)、ハイパーバイザはインクワイアリ512に戻り、再度インターロックをチェックする。
IPTEインターロックが既に保持されている場合(インクワイアリ512)、このときハイパーバイザは、それがゲストによって保持されているかどうか、すなわち、ゲスト・カウントが非ゼロかどうかをチェックする(インクワイアリ516)。それがゲストによって保持されている場合、ハイパーバイザは戻ってインターロックを再フェッチし、それを再度チェックする(インクワイアリ512)。ゲストがインターロックを保持していない場合(インクワイアリ516)、これは、ホスト・ハイパーバイザが既にロックを保有していることを意味する。ハイパーバイザは、ホスト・ロック・カウントをインクリメントしようと試み(ステップ518)、この試みが失敗した場合(インクワイアリ520)、ハイパーバイザは、インクワイアリ512に戻って再度インターロックをチェックする。ホストIPTEインターロックの更新が成功したのに応じ(インクワイアリ520)、ハイパーバイザは、このオペレーションの期間どの変換テーブルも修正されることがないのを知った上で、マニュアル変換を進めることができる(図6のステップ522)。
ハイパーバイザが変換および関連するストレージの更新を完了する(ステップ522)のに引き続いて、ゲストがMPゲストの場合(インクワイアリ524)、ハイパーバイザは、インターロック更新によってそのIPTEインターロックの割り当てを解除する(ステップ526)。一つの事例において、これは、ホストIPTEカウントをデクリメントし、新規のカウントがゼロの場合にIPTEインターロックをリセットすることによって達成される(ステップ526)。この更新は成功するまで繰り返される(インクワイアリ528)。更新が成功すれば、ハイパーバイザは終了する。
ホストがIPTEインターロックを使用するのに加えて、ゲストもこれを使用する。ゲストがこれを使用する一つのシナリオは、静止化オペレーションを遂行する命令の実行におけるものである。用語「静止化(“quiesce”)」とは、多重プロセッサ・システム(すなわち、更新されるデータ構造体(例、テーブル)へのアクセスを有するプロセッサ群)中の全てのプロセッサにその動作を、一つのプロセッサがシステム状態に或る変更を加えている間、停止することを強制するために使われるメカニズムをいう。静止化オペレーションに対する一つの一般的遂行には、以下のステップが含まれる:1)全プロセッサが静止状態にされる(すなわち、最も通常的な処理オペレーションが一時停止される);2)それらプロセッサ上の、更新されているリソースに依存するバッファリングされた一切のエントリが無効にされる;3)静止化イニシエータによって共通リソースが更新される;および4)最後に、静止化が解除され、これらプロセッサはその通常の動作を継続する。この静止化オペレーションは、とりわけて、ゲストが多重処理環境で実行されているときに、IPTE、IDTE、およびほとんどのCSP命令を実行するために使われる。IPTEインターロックがセットされるのは、こういった場合においてである。
図7〜図8は、ゲスト多重処理環境における、静止化IPTE、IDTE、およびCSP/G命令に関連するIPTEインターロック更新の従来式ゲスト実行の一つの実施形態を示す。図7を参照すると、ファームウェアが、まず、IPTEインターロックが既に保持されているかどうかを判定する(インクワイアリ610)。保持されていなければ、ファームウェアはそのインターロックを取得する(ステップ612)。これは、例えば、比較/スワップ・オペレーション(例、Compare and Swap(CSG))を使用するインターロック更新を使って遂行される。この比較/スワップは、当初フェッチされたものからのデータを現在のデータと比較して、データが変化していない場合にだけ更新を行う。ハードウェアは、このチェックおよび更新がアトミックであること、すなわち、この間、他のどのプロセッサもロックを変更していないことを保証する。ファームウェアは、IPTEインターロックをセットし、ゲストIPTEロック・カウントを、例えば、ゼロから1にインクリメントする(ステップ618)。このインターロック更新に失敗した場合(インクワイアリ620)、ハイパーバイザは、インクワイアリ610に戻って再度インターロックをチェックする。
IPTEインターロックが既に保持されている場合(インクワイアリ610)、このときファームウェアは、それがホストによって保持されているかどうか、すなわち、ホスト・カウントが非ゼロかどうかをチェックする(インクワイアリ614)。該インターロックがホストによって保持されている場合、ファームウェアは、インターセプトして、インターセプトの種類および必要な命令の何らかの表示と共に、ハイパーバイザに戻す(ステップ616)。通常、この場合、ハイパーバイザは、ゲストを再指名して、ゲスト・コードに、IPTE型(または静止型)命令における実行を再度開始させる。
ホストがインターロックを保持していない場合(インクワイアリ614)、これは、ゲスト(ファームウェア)が既にロックを保有していることを意味する。このとき、ファームウェアはゲスト・ロック・カウントをインクリメントしようと試み(ステップ618)、この試みが失敗した場合(インクワイアリ620)、ファームウェアは、インクワイアリ610に戻って再度インターロックをチェックする。ゲストIPTEインターロックの更新が成功したのに応じ(インクワイアリ620)、ファームウェアは、テーブルに依存する変換が、ハイパーバイザによって、関与する命令により更新されていないのを知った上で、高速静止化オペレーションを進める(図8のステップ622)。
中央プロセッサ(例えば、図1および図2のそれぞれ106または230)によって発行される一切の高速静止化オペレーションは、システム・コントローラ(図1および図2のそれぞれ112または240)によって逐次化されることになる。この逐次化は、全ての異なるプロセッサ上の静止化オペレーションの追跡を含み、そのため、システム中での適切な逐次化を保証するためには、どの一時点でも、区画またはゲスト構成あたり一つの高速静止が許される。高速静止要求が出され、システム・コントローラ中の関連ハードウェアが既に別の要求を処理している場合、その高速静止要求は拒否される。
高速静止要求が拒否された場合(インクワイアリ624)、ファームウェアは、そのゲストIPTEインターロックの割り当てをリセットする(ステップ626)。これは、インターロック更新を使い、ゲストIPTEカウントをデクリメントし、その新しいカウントがゼロの場合に、IPTEインターロックをリセットすることによって遂行される(ステップ626)。この更新は、成功するまで繰り返される(インクワイアリ628)。
このインターロック更新が成功裏に完了したのに応じ、ファームウェアは、IPTE型の命令を取消し、該命令が再度実行され得るようにする(ステップ630)。例えば、ファームウェアは、命令ポインタをバック・アップして、IPTE、IDTE、CSP/Gなどにポイントを戻し、それが再度実行されるようにする。(注記:一つの事例において、特定回数の拒否の後、ファームウェアは異なった(従来式)静止化メカニズムを用い、これは高速静止要求が完了されることを保証する。)
インクワイアリ624に戻る。高速静止要求が拒否されなかった場合、このとき、ファームウェアは高速静止化オペレーションを完了し(ステップ632)、これには、プロセッサ中の関連するバッファ値の妥当性確認、およびストレージ中の適切な変換テーブルのエントリの更新が含まれる。また、ファームウェアは次いでそのIPTEインターロックの割り当てをリセットして(ステップ634)、必要に応じ再試行し(インクワイアリ636)、成功した場合、命令(例、IPTE、IDTE、CSP/G)を完了する(ステップ638)。
大型システムでは、多くの静止要求が発行され、多数の高速静止拒否が生じ得る。当然のことながら、どの所与の高速静止化オペレーションも、それを完了するのに要する全体的時間はそれが受けた拒否の数が増えるほど増加する。ハイパーバイザとの適切な調整を確実にするために、高速静止要求を発行する前にIPTEインターロックがセットされることになる。各々の拒否に対して、IPTEインターロックのセットおよびリセットが必要となり、しかして、IPTEインターロックに対する競合が増大する。大規模な単一イメージ・システムでは、システム中の全てのプロセッサが同じインターロックを共用する。システム中のプロセッサの数が増加するにつれ、静止化オペレーションを処理するための相対的時間は、CPU時間との対比で増加し、IPTEインターロックへのインターロック・アクセスの数が増えるのに応じ拒否の数も増加する。結果として、インターロックを取得しようとして消費される時間量が過度になる。
本発明のある態様によれば、ホストの共用ロック維持の実装において、ゲストIPTEロックのセッティングが排除される。これを、図9〜図10を参照して説明する。本実装は、特にリカバリに関し、ハイパーバイザの変更を最小化する。
最初に図9を参照すると、ゲスト変換が単一プロセッサ(すなわち、多重プロセッサでない)環境に適用された場合(インクワイアリ710)、IPTEインターロックと同様に、マニュアルのゲストDATまたはART変換(群)および関連するストレージの更新が実施され(図10のステップ722)、続いて終了する(ステップ730)。
図9のインクワイアリ710に戻る。一方、ゲストが多重処理環境で実行されている場合、もはやゲストIPTEロックを検査する必要はない。ただし、それでもハイパーバイザは、ホスト・ロックをインクリメントする。例えば、IPTEインターロックが既にセットされているかどうかの判定が行われる(インクワイアリ712)。されていない場合、インターロック更新を使って、該インターロックおよびホストIPTEロックがセットされる(ステップ714)。IPTEインターロックがセットされている場合(インクワイアリ712)、インターロック更新を使って、ホストIPTEロックがインクリメントされる。いずれの場合においても、更新に失敗した場合は(インクワイアリ720)再試行される。
さらなる実施形態において、別型IPTEインターロックの解除が、ハイパーバイザに分かるようにするために、ハイパーバイザは、図5を参照して説明したように、ゲストIPTEロックの検査を続けることができる。IPTEロックのホスト・セッティングは比較的に稀なので、これのパフォーマンスへの影響は最少である。
ホストIPTEロックのセッティングに応じて、ハイパーバイザは診断(DIAG)命令を発行し、これは、ハードウェア中の静止逐次化をもたらす(図10のステップ721)。この静止逐次化は2つのことを行う。第一に、これは、ホストIPTEロック更新がシステムの全域に見えることを保証し、第二に、一切の未処理のゲスト静止化オペレーションが完了されることを確実にする。ホストIPTEロックがセットされたので、新規のゲスト静止化オペレーションは開始することができない。この命令については後記でさらに詳しく説明する。
前述したように、DIAGの完了の後、ハイパーバイザは、続いて、マニュアルのゲストARTまたはDAT変換(群)および関連するストレージの更新を遂行する(ステップ722)。次いで、これが多重処理ゲスト環境かどうかの判定が行われる(インクワイアリ724)。そうである場合、ホストIPTEロックはデクリメントされ、ホスト・ロックがゼロである場合、インターロックはリセットされる(ステップ726)。これはインターロック更新によって遂行される。更新に失敗した場合(インクワイアリ728)、処理はステップ726を続ける。成功した場合、またはこれが多重処理環境でない場合、処理は完了する(ステップ730)。
静止IPTE、IDTE、およびCSP/G命令の別型IPTEインターロックのゲスト実装に関するロジックの一つの実施形態を、図11〜図12を参照しながら説明する。この実施形態において、ファームウェアは、ここでもIPTEロックのホスト部分を検査するが、もはやゲストIPTEロックを更新することはない。
図11を参照すると、IPTEインターロックがセットされて(インクワイアリ810)ホストIPTEロックがセットされていることが暗示されている場合(インクワイアリ814)、ファームウェアは、静止化命令の命令インターセプトをハイパーバイザに提示する(ステップ816)。これは、ハイパーバイザがマニュアル変換を行っている期間、静止化オペレーションが行われるのを阻止する。ハイパーバイザ(ホスト)は、DIAG命令を発行することによって、マニュアル変換の間、静止化が行われないことを既に保証している。これにより、ゲスト・ロックのセットは必要がない。
ホストIPTEロックがセットされていない場合(インクワイアリ814)、ファームウェアは、高速静止一斉通信要求を発行し(図12のステップ822)、高速静止要求が拒否された場合は(インクワイアリ824)その命令を取り消す(ステップ830)。要求が受け入れられた場合(インクワイアリ824)、ファームウェアは高速静止化オペレーションを完了し(ステップ832)、命令を完了する(ステップ838)。これら2つの場合のいずれにおいても、ロックがセットされないので、ゲストIPTEロックの更新は不必要である。
図13〜図15を参照しながら、DIAG命令についてのさらなる詳細を説明する。DIAG命令は、新しく定義されたシステム逐次化を提供する。ハイパーバイザがこの命令を発行し、システム制御領域中でのIPTEインターロックのセット後、だが、命令インターセプトに関連する一切の変換が開始される前に、ファームウェアによって実行される。
DIAG(診断)命令の一つの実施形態が図13に示されている。図示のように、診断(本明細書ではDIAGともいう)命令900は、例えば、DIAG命令を表すオペコード902と、システム制御領域アドレスが所在する場所を指定する第一フィールド904(別称、制御領域フィールド)と、DIAGの実行に使われるサブコードが備えられている場所を指定する第二フィールド906(別称、サブコード・フィールド)と、例えば別型IPTEインターロックに対するDIAGを識別するオペレーション・コード拡張として使われる第四フィールド910(別称、変位フィールド)の内容に加算されることになるデータを含む場所を指定する第三フィールド908(別称、ベース・フィールド)と、を含む。
サブコードの例には、以下が含まれる。
例えば、サブコード・ゼロが規定されている場合、システム制御領域アドレスは無視され、オペレーションは遂行されない。
例えば、サブコード2が規定されている場合、システム制御領域アドレスは、変換が行われている対象のゲストを識別し、診断命令の実行は、構成の中のCPUの全てが、指定されたゲスト群のインプロセスのDAT同期(DS:DAT Synchronizing)命令(例、IPTE、IDTE、CSP/G)の解釈を完了するまでは、該命令を実行しているCPU上で完了しない。また、この診断の完了により、ホストがIPTEインターロックを保持している間は、一切の後続のゲストDS命令も、命令インターセプトを認識することが確実になる。
DIAG命令に関するロジックの一つの実施形態を、図14〜図15を参照しながら説明する。
図14を参照すると、ファームウェアに実装されているDIAG命令が、ハイパーバイザによって発行される(ステップ920)。この命令は、システム中の全プロセッサ(すなわち、更新されるリソースにアクセスを有するプロセッサ群)が、一切のローカルな未処理ストアがシステムに可視となるまで待機することによって、ハイパーバイザによって前にセットされたIPTEインターロックを順守することを保証する(ステップ922)。すなわち、プロセッサは、ローカルな未処理ストア(IPTEインターロックのホスト部分を含む)が、全プロセッサに可視となるストレージのレベルに書き込まれるまで、待機する。また、プロセッサは、全定型(full conventional)静止メカニズムを発行することによって、システム中で未処理の一切のIPTE、IDTE、CSP/G命令の完了を待つ(ステップ924)。DIAGを発行した中央プロセッサ(例えば、図1の106)で実行されるファームウェアは、一斉通信Set Full Conventional Quiesce(全定型静止を設定する)コマンドをシステム・コントローラ(例えば、図1の112)に発行することによって、これを達成する。次いで、システム・コントローラは、このコマンドをシステム中の全プロセッサに一斉通信する。この処理については、図16を参照しながら後記でさらに説明する。
また、静止させられたのに応じ、DIAGのイニシエータは、自分も静止状態に入ったことを表す自己静止宣言(I−am−quiesced)インジケータの設定も行い(ステップ926)、全プロセッサが静止するのを待つ(ステップ928)。システム・コントローラは、システム中の全プロセッサが自己静止宣言インジケータを設定したならば、システムが静止していることをあらゆるプロセッサに対し表示する。これは、システム中で未処理になっていた可能性のある全てのIPTE、IDTE、およびCSP/G命令が完了されたことを保証する。あらゆるプロセッサが自分のローカル・ストアをシステム全体に可視にしているので、これにより、ゲストによって今後実行される一切のIPTE、IDTE、およびCSP/Gが、ホストにインターセプトされることも保証する。なぜなら、IPTEインターロック・ビットがセットされているからである。これは、ゲストの比較/スワップのオーバーヘッドなく、IPTEインターロックによって従来保証されていたのと同じである。
システムが静止されたのに応じ(ステップ928)、DIAGのイニシエータは定型の静止優先順位を待つ(ステップ930)。一時点において、システム中に未処理の複数の定型静止要求がある場合、ハードウェアおよびファームウェアは、各プロセッサが定型の静止優先順位を受けて交代することを確実にする。この一つのプロセッサは、定型静止化(conventional quiese)を介し、既にそのオペレーションを完了しているので、優先度を有し、Reset Conventional Quiesce(定型静止リセット)コマンドを発行する(図15のステップ940)。このリセット・コマンドは、上記と同様にシステム中の全プロセッサに一斉通信され、全ての定型静止イニシエータがそれらの要求をリセットしたならば、未処理の静止要求はなくなることになる。
定型静止要求がリセットされるのに応じ(ステップ942)、DIAGイニシエータおよびレシーバの両方は、静止状態を出ること、すなわち、自己静止宣言をリセットすることができる(それぞれのステップ944)。これで処理は終了する。
静止要求に関するさらなる詳細を、図16を参照しながら説明する。Set Full Conventional Quiesce(全定型静止化の設定)要求の発行に応じ、システム中の各プロセッサは、それが割り込み可能ポイントに達すると、静止割り込みファームウェア・ハンドラに入ることによって、通常の処理を一時停止する(ステップ1000)。次いで、プロセッサは全てのローカルな未処理ストアがシステムに可視になるのを待つ(ステップ1002)。これが行われるのに応じ、プロセッサは自己静止宣言インジケータをセットし、これはシステム・コントローラに対し、該プロセッサが静止状態に入ったことを表示し(ステップ1004)、プロセッサは、システム中の全プロセッサが静止状態に達するのを待つ(ステップ1006)。ファームウェアは、未処理の定型静止要求がなくなるのを待ち(ステップ1008)、静止状態を出る(例えば、自己静止宣言をリセットする)(ステップ1010)。
以下に、高速静止および全定型(全体システム)静止要求に関するさらなる詳細を説明する。
図17Aを参照すると、高速静止(FQui)要求の一つの実施形態1100が示されている。一つの事例において、高速静止要求は、
高速静止コマンド(FQui−高速静止)とプロセッサによって要求される無効化を規定する高速静止要求の種類(例、IPTE、IDTEなど)とを規定するコマンド・フィールド1102と、
イニシエータの区画ゾーン番号1104を示すゾーン・フィールド1104と、
要求される無効化(例えば、IPTEに対するページ・インデックスなど)をさらに条件付けするアドレス・フィールド1106と、
を含む。
図17Bは、全定型静止要求1150の一つの実施形態を示す。一つの事例において、全定型静止要求は、
全静止化コマンドを示すコマンド・フィールド1152と、
イニシエータのプロセッサID(PUID)の表示1154と、
コマンドが、全定型要求のSETあるいはRESETのいずれであるかの表示1156と、
を含む。
図18は、複数の中央プロセッサ(CPU)1210に連結されたシステム・コントローラ1200の例を示し、中央プロセッサは一つだけを図示している。当業者は、複数のプロセッサ1210をシステム・コントローラ1200に連結できることを理解していよう。
図18を参照すると、システム・コントローラ1200は、例えば、システム逐次化コントローラ1202などを含め、さまざまなコントローラを含む。とりわけ、システム逐次化コントローラ1202は、ページ・テーブル・エントリ無効化(IPTE)、DATテーブル・エントリ無効化(IDTE)、または比較/スワップ/パージ(CSP/CSPG)命令によって使用されるものなど逐次化対象のオペレーションが、コンピューティング環境中で、どの一時点においても、どの一つの区画においても、ただ一つのかかる命令が進行するようにして、逐次化されることを確実にするために用いられる。また、該コントローラは、それらオペレーションに対するイベントのシーケンスもモニタする。
システム・コントローラ1200は、さまざまなインタフェースを介して各中央プロセッサ1210に連結される。例えば、コントローラ1200へのインタフェース1214は、システム・オペレーション・コントローラ1212からの「制御」コマンドを送信するために、中央プロセッサ中のファームウェアによって使用され、該コマンドは、システム・コントローラ1200が取るべき処置を、場合によってはシステム逐次化コントローラ1202が取るべき処置を、規定する。別のインタフェースとして応答バス1216があり、これは、これらのコマンドに関してコントローラ1200からのステータス情報を返信するために使われる。このステータス情報は、中央プロセッサ1210内のシステム・オペレーション・コントローラ1212によって、システム・オペレーション要求のステータスを表示するのに使われる状態コード1218を設定するために使用される。応答情報は、システム逐次化コントローラ1202を含め、コントローラ1200内の複数のソースから設定することができる。また、中央プロセッサ1210は、システム・コントローラ1200内のシステム逐次化コントローラ1202の状態を検知するためにも、このインタフェースを使用することができる。
さらなるインタフェースには、このローカル中央プロセッサ1210の定型静止状態(自己静止宣言)1220をシステム・コントローラ1200に提示するインタフェース1222が含まれる。システム・コントローラ1200は、システム中のすべての対象プロセッサからの自己静止宣言状態1220のAND1204を取り、システム静止宣言状態(system−is−quiesced state)1206を表示する。このシステム静止宣言状態1206は、インタフェース1234を介して各中央プロセッサ1210に提示され、各プロセッサではローカル・コピー1224が維持され、ファームウェアの問い合わせに対するQUSYS1226を設定するのに使われる。
IPTE、IDTE、およびCSP/Gなど静止化オペレーションに対し、要求または所望がある場合に、システム・オペレーション・インタフェース1214を介して高速静止化オペレーションが送信される。システム逐次化コントローラ1202が、別の高速静止要求を処理作業中の場合、該コントローラは、状態コード1218を使い、開始中央プロセッサ1210中のシステム・オペレーション・コントローラ1212に、これの「拒否」を表示することになる。開始中央プロセッサ中のファームウェアは、所与の一切の高速静止要求1230に対する拒否の数のカウントを維持する。このカウントが高速静止拒否限度1232に達したとき、当該高速静止が最終的に完了することを保証するために、定型静止シーケンスが使われる。
システム逐次化コントローラ1202が別の高速静止化オペレーションの処理作業中でない場合、すなわち、コマンドが拒否されなかった場合、該コントローラは、システムの各中央プロセッサ1210内の静止化コントローラ1236に対し、インタフェース1238を介して高速静止「制御」コマンドを一斉通信することになる。静止化コントローラ1236が高速静止(FQui)要求を受信したとき、該コントローラは、その静止要求を処理するために、当該中央プロセッサ1210に割り込みを行うかどうかを判定し、行う場合、この1243を静止割り込みコントローラ1240に示し、高速静止要求1242および割り込み1244を待機状態となるようにする。加えて、適切な場合、静止化コントローラ1236は、高速静止コマンドを、中央プロセッサ1210中の、高速静止コマンドを変換ルックアサイド・バッファ(またはTLB:Translation Look−aside Buffer)1246に転送し、該バッファが該要求により要求された任意のTLBエントリを無効化できるようにする。
高速静止拒否が何度もあったために、あるいは高速静止メカニズムが静止を要求する機能に対応していないために、定型静止シーケンスが使われる場合、ファームウェアは、システム・オペレーション・コントローラ1212を使い、インタフェース1214を介して、全定型静止「制御」コマンドを送信する。いずれの要求に対しても、システム逐次化コントローラ1202は、各プロセッサ内の静止化コントローラ1236に、定型静止が要求されていることを示すSYSOP(静止化)コマンドを送る。静止化コントローラは、SYSOPコマンド中のイニシエータのプロセッサID1154(図17)を使い、PU定型静止優先ベクトル1250(図18)中に対応するビットをセットする。定型静止優先ベクトル1250は、とりわけ、当該ローカル・プロセッサが、ローカル・プロセッサのプロセッサID1252に基づいた定型静止優先性を有しているかどうかを判定するのに使われる。ローカルPUID1252に対応するビットは優先ベクトル1250中の最も左のビットでこれがオンであれば、そのプロセッサは定型静止優先性1254を与えられる。
静止優先ベクトル1250中のビットの論理OR1256を使って、何らかの未処理の定型静止(CQui)要求1258があるかどうかが表示される。これは、分岐条件としてファームウェアに提示される。さらに、未処理定型静止要求インジケータ1258が、静止割り込みコントローラ1240に送信される。未処理定型静止要求インジケータ1258は、次いで、静止割り込みコントローラに送信され、定型静止割り込みが未処理となっていることを表示する1262ために使われる。
静止化についてのさらなる詳細は、以下の特許/特許出願に記載されている:2009年8月27日公開の、米国特許出願公開第2009/0216928A1号公報、Hellerらの発明の名称「System, Method and Computer Program Product for Providing a New Quiesce State,」;2009年8月27日公開の、米国特許出願公開第2009/0216929A1号公報、Hellerらの発明の名称「System, Method and Computer Program Product for Providing a Programmable Quiesce Filtering Register」;2009年8月27日公開の、米国特許出願公開第2009/0217264A1号公報、Hellerらの発明の名称「Method,System and Computer Program Product for Providing Filtering of Guest2 Quiesce Requests」;2009年8月27日公開の、米国特許出願公開第2009/0217269A1号公報、Hellerらの発明の名称「System, Method and Computer Program Product for Providing Multiple Quiesce State Machines」;2006年2月7日発行の米国特許第6,996,698B2号、Slegelらの発明の名称「Blocked Processing Restrictions Based On Addresses,」;2006年3月28日発行の米国特許第7,020,761B2号、Slegelらの発明の名称「Blocking Processing Restrictions Based On Page Indices」;および2009年5月5日発行の米国特許第7,530,067B2号、Slegelらの発明の名称「Filtering Processor Requests Based On Identifiers」。
上記で詳細に説明したのは、多重処理環境における処理を容易化する逐次化メカニズムである。本逐次化メカニズムは、逐次化処理に使われるIPTEインターロックのゲスト部分を除去することを可能にする。一つの事例において、この逐次化メカニズムは、システム中の全プロセッサが、ハイパーバイザによって前にセットされたIPTEインターロックを順守することを保証するDIAG命令を含む。また、この命令は、一切の未処理のIPTE、IDTE、CSP/G命令が完了するのを待つ。これは、1)ゲストによって実行される今後の一切のIPTE、IDTE、CSP/Gは、IPTEインターロック・ビットがセットされているので、ホストにインターセプトされること、および、2)ハイパーバイザが自分の命令エミュレーションを開始する前に、それ以前の一切のIPTE、IDTE、またはCSP/Gが完了されていることを保証する。
ハードウェアの変更は必要がなく、ハイパーバイザによる非常に小さな変更、すなわち、システム逐次化機能をサポートするために、ホストIPTEインターロックをセットした後でこの機能を発行すること、が必要なだけである。さらに、IPTEインターロックに関し、ハイパーバイザによって使われるリカバリ・アルゴリズムに対する変更も必要がない。ハイパーバイザが、旧来のゲスト・ロックのチェックを継続する場合にあっては、これはさらに、ハイパーバイザに見えるようにしてファームウェアが機能を無効化することが可能となり、これによって検査におけるより大きなフレキシビリティ、および新技法によって認識されるパフォーマンス・ゲインを測定する能力が可能となる。
当業者であればよく理解するであろうが、本発明の態様は、システム、方法、またはコンピュータ・プログラム製品として具現することができる。従って、本発明の態様は、全体がハードウェアの実施形態、全体がソフトウェアの実施形態(ファームウェア、常駐ソフトウェア、マイクロコードなどを含む)、あるいはソフトウェアおよびハードウェア態様を組み合わせた実施形態の形を取ることがでる。これらは、どれも本明細書では一般的に全て「回路」、「モジュール」、または「システム」と呼ばれる。さらに、本発明の態様は、内部に具体化されたコンピュータ可読プログラム・コードを有する一つ以上のコンピュータ可読媒体(群)中に具現されたコンピュータ・プログラム製品の形を取ることもできる。
一つ以上のコンピュータ可読媒体(群)の任意の組み合わせを用いることができる。コンピュータ可読媒体はコンピュータ可読記憶媒体とすることができる。コンピュータ可読記憶媒体は、例えば、以下に限らないが、電子的、磁気的、光学的、電磁気的、赤外的、または半導体の、システム、装置、もしくはデバイス、あるいはこれらの任意の適切な組み合わせとすることができる。コンピュータ可読記憶媒体のさらに具体的な例(非包括的リスト)には、一つ以上の配線を有する電気接続、携帯型コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ(RAM:random access memory)、読み取り専用メモリ(ROM:read−only memory)、消去可能プログラム可能読み取り専用メモリ(EPROM(erasable programmable read−only memory)またはフラッシュ・メモリ)、光ファイバ、携帯型コンパクト・ディスク読み取り専用メモリ(CD−ROM:compact disc read−only memory)、光記憶デバイス、磁気記憶デバイス、またはこれらの任意の適切な組み合わせが含まれよう。本文書の文脈において、コンピュータ可読記憶媒体は、命令実行システム、装置、またはデバイスによってまたはこれらに関連させて使用するためのプログラムを、包含または格納できる任意の有形媒体とすることができる。
図19を参照すると、一つの例において、コンピュータ・プログラム製品1300は、例えば、本発明の一つ以上の態様を提供し支援するためのコンピュータ可読プログラム・コード手段またはロジック1304を格納する、一つ以上のコンピュータ可読記憶媒体1302を含む。
コンピュータ可読媒体中に具現されたプログラム・コードは、以下に限らないが、無線、有線、光ファイバ・ケーブル、RFなど、またはこれらの任意の適した組み合わせを含め、適切な媒体を用いて送信することができる。
本発明の態様のオペレーションを実行するためのコンピュータ・プログラム・コードは、Java(R)、Smalltalk(R)、C++などのオブジェクト指向プログラミング言語、および、“C”プログラミング言語または類似のプログラミング言語などの従来式手続き型プログラミング言語を含め、一つ以上のプログラミング言語の任意の組み合わせで記述することができる。このプログラム・コードは、スタンドアロン・ソフトウェア・パッケージとしてユーザのコンピュータで全体的に実行することも、ユーザのコンピュータで部分的に実行することもでき、一部をユーザのコンピュータで一部を遠隔コンピュータで実行することもでき、あるいは遠隔のコンピュータまたはサーバで全体的に実行することもできる。後者のシナリオでは、ローカル・エリア・ネットワーク(LAN:local area network)または広域ネットワーク(WAN:wide area network)を含む任意の種類のネットワークを介して、遠隔コンピュータをユーザのコンピュータに接続することもでき、あるいは(例えばインターネット・サービス・プロバイダを使いインターネットを介し)外部のコンピュータへの接続を行うこともできる。
本明細書では、本発明の実施形態による方法、装置(システム)およびコンピュータ・プログラム製品のフローチャート図もしくはブロック図またはその両方を参照しながら、本発明の態様を説明している。フローチャート図もしくはブロック図またはその両方の各ブロック、および、フローチャート図もしくはブロック図またはその両方中のブロックの組み合わせは、コンピュータ・プログラム命令によって実行可能であることが理解されよう。コンピュータまたは他のプログラム可能データ処理装置のプロセッサを介して実行されるこれらのコンピュータ・プログラム命令が、フローチャートもしくはブロック図またはその両方のブロックまたはブロック群中に規定された機能群/処理群を実施するための手段を生成するように、これらのコンピュータ・プログラム命令を、汎用コンピュータ、特殊用途コンピュータ、またはマシンを形成する他のプログラム可能データ処理装置のプロセッサに供給することができる。
また、これらのコンピュータ・プログラム命令を、コンピュータ、他のプログラム可能データ処理装置、または他のデバイスに対し特定の仕方で機能するよう命令できるコンピュータ可読媒体に格納し、そのコンピュータ可読媒体に格納された命令が、フローチャートもしくはブロック図またはその両方のブロックまたはブロック群中に規定された機能/処理を実施する命令群を包含する製造品を形成するようにすることができる。
同様に、コンピュータ・プログラム命令を、コンピュータ、他のプログラム可能データ処理装置、または他のデバイスにロードして、これらコンピュータ上、他のプログラム可能装置上、またはコンピュータ実行のプロセスを生成する他のデバイス上で一連のオペレーション・ステップを実行させて、これらコンピュータ上または他のプログラム可能装置上で実行されるこれらの命令が、フローチャートもしくはブロック図またはその両方のブロックまたはブロック群中に規定された機能群/処理群を実施するためのプロセスを提供するようにすることもできる。
図中のフローチャートおよびブロック図は、本発明のさまざまな実施形態による、システム、方法、およびコンピュータ・プログラム製品の可能な実装のアーキテクチャ、機能、およびオペレーションを例示している。この点に関し、フローチャートまたはブロック図中の各ブロックは、規定の論理機能(群)を実装するための一つ以上の実行可能命令を含む、モジュール、セグメント、またはコードの部分を表し得る。また、一部の別の実装においては、ブロック中に記載された機能が、図に記載された順序を外れて行われることがあり得ることに留意すべきである。例えば、連続して示された2つのブロックが、実際にはほぼ同時に実行されることがあり、関与する機能によって、時にはこれらのブロックが逆の順序で実行されることもあり得る。さらに、ブロック図もしくはフローチャート図またはその両方の各ブロック、およびブロック図もしくはフローチャート図またはその両方中のブロック群の組み合わせは、特定の機能または処理を実施する、専用ハードウェア・ベースのシステム、または専用ハードウェアとコンピュータ命令との組み合わせによって実装可能なことにも留意すべきである。
上記に加え、顧客環境の管理を提供するサービス・プロバイダによって、本発明の一つ以上の態様を提供し、提案し、展開し、管理し、保守などすることができる。例えば、サービス・プロバイダは、一人以上の顧客に対し、本発明の一つ以上の態様を遂行するコンピュータ・コードもしくはコンピュータ・インフラストラクチャまたはその両方を生成し、維持し、サポートすることなどができる。サービス・プロバイダは、見返りとして、例えば予約申し込みもしくは自由契約またはその両方の下で顧客から支払いを受けることができる。これに加えて、またはこれに換えて、サービス・プロバイダは、一人以上の第三者に対して広告コンテンツを販売することによって支払いを受けることもできる。
本発明の一つの態様において、本発明の一つ以上の態様を実施するためのアプリケーションを展開することができる。一つの事例として、アプリケーションの展開には、本発明の一つ以上の態様を遂行するため動作可能なコンピュータ・インフラストラクチャを提供することが含まれる。
本発明のさらなる態様として、コンピューティング・システム中にコンピュータ可読コードを組み込むことを含めて、コンピューティング・インフラストラクチャを展開することができ、上記コードは、上記コンピューティング・システムと相まって、本発明の一つ以上の態様を遂行する能力を有する。
本発明のまださらなる態様として、コンピュータ可読コードをコンピュータ・システム中に組み込むことを含む、コンピューティング・インフラストラクチャを統合するためのプロセスを提供することができる。上記コンピュータ・システムは、コンピュータ可読媒体を含み、このコンピュータ可読媒体は、本発明の一つ以上の態様を含む。上記コードは、上記コンピュータ・システムと相まって、本発明の一つ以上の態様を遂行する能力を有する。
上記でさまざまな実施形態を説明してきたが、これらは単なる事例である。例えば、他のアーキテクチャのコンピューティング環境も、本発明の一つ以上の態様を組み込み使用することができる。例として、Power Systems(IBM社の商標)サーバもしくはインターナショナル・ビジネス・マシーンズ・コーポレーションが提供している他のサーバなど、System z(IBM社の登録商標)サーバ以外のサーバ、または他の会社のサーバも、本発明の一つ以上の態様を包含し、使用し、もしくはこれから便益を得、またはこれらの組み合わせを実施することができる。さらに、複数のプロセッサを使った単一イメージ・システムは、本発明の一つ以上の態様を組み込み使用することができる。さらに、本逐次化メカニズムは、本明細書に記載した命令以外の命令によって、またはそれらの命令と共に用いることができる。さらに、DIAG命令は、本明細書に記載したものと違えて実装することができ、または、これより多い、少ない、もしくは異なるフィールドを持たせることもでき、あるいはその両方ができる。さらに、逐次化は、DIAG命令以外のメカニズムを使って遂行することもできる。さらに、DATおよびART以外の変換スキームを用いることができ、アクセス対象のデータ構造体を変換テーブル以外のものとすることもできる。また、本発明の一つ以上の態様は、ホストおよびゲストを含む環境以外の環境にも適用可能である。例えば、本逐次化メカニズムを使って、共通のロックを共用する2つのエンティティの処理を逐次化することができる。一つのエンティティは、更新される(例、セット、リセット、またはインクリメントされる)エンティティ・ロックを有し、他方のエンティティは、本逐次化メカニズムによればエンティティ・ロックを必要としない。エンティティ・ロックを有するエンティティは、例えば、エンティティ・ロックの更新回数が少なくなるエンティティである。多くの発展性が存在する。
さらに、他の種類のコンピューティング環境も本発明の一つ以上の態様から便益を得ることができる。一例として、プログラム・コードを格納もしくは実行またはその両方を行うのに適したデータ処理システムが使用可能である。このデータ処理システムは、直接的に、またはシステム・バスを介して間接的にメモリ・エレメントに連結された少なくとも2つのプロセッサを含む。メモリ・エレメントには、例えば、プログラム・コードを実際に実行する過程で用いられるローカル・メモリと、大容量記憶装置と、実行の過程で大容量記憶装置からコードを読み出さなければならない回数を低減するため、少なくとも一部のプログラム・コードを一時的に記憶するキャッシュ・メモリとが含まれる。
入力/出力すなわちI/Oデバイス(以下に限らないが、キーボード、ディスプレイ、ポインティング・デバイス、DASD、テープ、CD、DVD、サム・ドライブ、および他の記憶媒体などを含む)は、直接に、もしくは介在I/Oコントローラを介してのいずれかによってシステムに連結することができる。また、ネットワーク・アダプタをシステムに連結して、データ処理システムが、介在する私的ネットワークまたは公衆ネットワークを介して、他のデータ処理システムあるいは遠隔のプリンタまたは記憶デバイスに連結することを可能にすることもできる。モデム、ケーブル・モデム、およびイーサネット(R)カードは、利用可能なネットワーク・アダプタのほんの一例である。
図20を参照すると、本発明の一つ以上の態様を実装するためのホスト・コンピュータ・システム5000の典型的なコンポーネントが描かれている。典型的なホスト・コンピュータ5000は、メモリ(すなわち、中央ストレージ)5002と通信している一つ以上のCPU5001を含むほか、ストレージ媒体デバイス5011と、他のコンピュータまたはSANなどと通信するためのネットワーク5010とへのI/Oインタフェースを含む。CPU5001は、設計された命令セットおよび設計された機能を有するアーキテクチャに準拠している。CPU5001は、プログラム・アドレス(仮想アドレス)をメモリの実際のアドレスに変換するための動的アドレス変換(DAT)5003を持つことができる。通常、DATは、コンピュータ・メモリ5002のブロックへの後々のアクセスがアドレス変換の遅れを要さないように、変換をキャッシングするための変換ルックアサイド・バッファ(TLB)5007を含む。通常、キャッシュ5009は、コンピュータ・メモリ5002とプロセッサ(CPU)5001との間で用いられる。キャッシュ5009は、複数のCPUが利用可能な大型のキャッシュ、および大型キャッシュと各CPUとの間のより小型でより高速の(低位レベルの)キャッシュに階層化することができる。一部の実装において、低位レベルのキャッシュを分割して、命令フェッチ用およびデータ・アクセス用に別個の低位レベル・キャッシュを備えることができる。一つの実施形態において、命令は、命令フェッチ・ユニット5004によって、メモリ5002からキャッシュ5009を経由してフェッチされる。命令は、命令復号ユニット5006によって復号され、(一部の実施形態では他の命令と共に)命令実行ユニットまたはユニット群5008に送られる。通常、例えば、算術実行ユニット、浮動小数点実行ユニット、および分岐命令実行ユニットなど、いくつかの実行ユニット5008が用いられる。命令は、実行ユニットによって実行され、必要に応じ、命令が指定するレジスタまたはメモリのオペランドにアクセスして実行される。メモリ5002のオペランドがアクセス(ロードまたは格納)される場合は、通常、実行されている命令の制御の下にロード/ストア・ユニット5005がそのアクセスを処理する。命令は、ハードウェア回路において、もしくは内部マイクロコード(ファームウェア)において、またはその両方の組み合わせによって実行することができる。
前述のように、コンピュータ・システムは、ローカル(または主)ストレージ内の情報、並びにアドレッシング、保護、参照、および変更の記録を含む。アドレッシングのいくつかの態様は、アドレスのフォーマット、アドレス空間の概念、種々のタイプのアドレス、および一つのタイプのアドレスを別のタイプのアドレスに変換する方法を含む。一部の主ストレージは、永続的に割り当てられたストレージ位置を含む。主ストレージは、直接アドレス指定可能なデータの高速アクセス・ストレージをシステムに提供する。データおよびプログラムの双方は、(入力デバイスから)主ストレージ中にロードされることになり、その後で処理が可能になる。
主ストレージには、時としてキャッシュとも呼ばれる、より小さくより高速アクセスのバッファ・ストレージを含めることができる。通常、キャッシュは、CPUまたはI/Oプロセッサに物理的に関連付けられる。物理的構造および個別的なストレージ媒体の使用の影響は、性能に対するものを除き、一般にプログラムにより観察することはできない。
命令およびデータ・オペランドに対し、別個のキャッシュを保持することができる。キャッシュ内の情報は、キャッシュ・ブロックまたはキャッシュ・ライン(または短縮してライン)と呼ばれる整数境界(integral boundary)上の連続したバイト中に維持される。あるモデルでは、キャッシュ・ラインのサイズをバイト数で返す、EXTRACT CACHE ATTRIBUTE命令を提供することができる。また、あるモデルでは、データまたは命令キャッシュへのストレージのプリフェッチ、あるいは、キャッシュからのデータのリリースに影響を与える、PREFETCH DATAおよびPREFETCH DATA RELATIVE LONG命令を提供することができる。
ストレージは、長い水平方向のビットのストリングと考えられる。ほとんどのオペレーションにおいて、ストレージへのアクセスは、左から右への順序で進む。ビットのストリングは8ビット単位に分割される。8ビットの単位は1バイトと呼ばれ、全ての情報のフォーマットの基本的な構成ブロック(building block)である。ストレージ内の各バイトの位置は、負でない一意の整数により識別され、この整数がそのバイト位置のアドレスであり、簡単に言えば、バイト・アドレスである。隣接するバイト位置は、連続するアドレスを有し、左の0で始まり、左から右への順序で進む。アドレスは、符号なしの2進整数であり、24ビット、31ビット、又は64ビットである。
情報は、ストレージとCPU又はチャネル・サブシステムとの間で、一度に1バイトずつ、又は1バイト・グループずつ伝送される。別段の指定がなければ、例えばz/Architecture(IBM社の登録商標)では、ストレージ中の1バイト・グループは、そのグループの左端のバイトによってアドレス指定される。グループ内のバイト数は、遂行対象のオペレーションによって暗黙裡に定められるか、又は明示的に指定される。CPUオペレーションに使用される場合、バイト・グループはフィールドと呼ばれる。各バイト・グループ内において、例えばz/Architecture(IBM社の登録商標)では、ビットは、左から右の順序で番号が付される。z/Architecture(IBM社の登録商標)では、左端のビットは「上位(high−order)」ビットと呼ばれることがあり、右端ビットは「下位(low−order)」ビットと呼ばれることがある。しかしながら、ビット番号は、ストレージ・アドレスではない。バイトだけが、アドレス指定をすることができる。ストレージ中のあるバイトの個別ビットに対して操作を行うためには、そのバイト全体にアクセスする必要がある。1バイトの中のビットには、(例えば、z/Architecture(IBM社の登録商標)では)左から右に0から7までの番号が付される。1つのアドレスの中のビットには、24ビット・アドレスに対しては8〜31または40〜63の番号を付すことができ、あるいは、31ビット・アドレスに対しては1〜31または33〜63の番号を付すこともできる。64ビット・アドレスに対しては0〜63の番号が付される。複数バイトから成る他の一切の固定長フォーマット内では、そのフォーマットを構成するビットには0から始まる連続番号が付される。エラー検出のため、および望ましくは訂正のために、各バイトまたはバイト・グループと共に、一つ以上の検査ビットが伝送され得る。かかる検査ビットは、マシンにより自動的に生成されるものであり、プログラムが直接制御することはできない。ストレージ容量はバイト数で表わされる。ストレージ・オペランド・フィールドの長さが命令のオペレーション・コードで暗黙的に指定される場合、そのフィールドは固定長を有すると言われ、その固定長は、1バイト、2バイト、4バイト、8バイト、または16バイトとすることができる。一部の命令では、より長いフィールドが暗黙的に指定されることもある。ストレージ・オペランド・フィールドの長さが暗黙的に指定されず、明示的に記述される場合は、そのフィールドは可変長を有するといわれる。可変長オペランドは、1バイト(あるいは、一部の命令については、2バイトの倍数または他の倍数)のインクリメントにより長さが変化し得る。情報がストレージ内に置かれるとき、ストレージへの物理パスの幅が格納されるフィールドの長さを上回ることがあっても、指定されたフィールド内に含まれるバイト位置の内容のみが置き換えられる。
特定の情報単位は、ストレージ中の整数境界上にあることになる。そのストレージ・アドレスがバイトでの単位の長さの倍数であるとき、境界は、情報単位に対して整数であるといわれる。整数境界上にある2バイト、4バイト、8バイト、および16バイトのフィールドには、特別な名称が付与される。ハーフワード(halfword)は、2バイト境界上にある2個の連続したバイトのグループであり、これは、命令の基本的な構成ブロックである。ワード(word)は、4バイト境界上にある4個の連続したバイトのグループである。ダブルワード(doubleword)は、8バイト境界上にある8個の連続したバイトのグループである。クワドワード(quadword)は、16バイト境界上にある16個の連続したバイトのグループである。ストレージ・アドレスが、ハーフワード、ワード、ダブルワード、およびクワドワードを指定する場合、そのアドレスのバイナリ表現は、それぞれ、右端の1個、2個、3個、又は4個のビットが0になる。命令は、2バイトの整数境界上にあることになる。ほとんどの命令のストレージ・オペランドは、境界合わせ(boundary alignment)要件を持たない。
命令オペランドとデータ・オペランドとに対して別個のキャッシュを実装するデバイスにおいては、ストアが、後にフェッチされる命令を変更するかどうかに関係なく、後にそこから命令がフェッチされるキャッシュ・ライン中にプログラムが格納される場合に、著しい遅延が生じることがある。
一つの実施形態において、本発明はソフトウェア(ライセンス内部コード、ファームウェア、マイクロコード、ミリコード、ピココードなどといわれることもあり、これらのいずれも本発明と整合できよう)によって実践することができる。図20を参照すると、本発明を具現するソフトウェア・プログラム・コードは、通常、ホスト・システム5000のプロセッサ(CPU)5001によって、CD−ROMドライブ、テープ・ドライブ、またはハード・ドライブなど、長期ストレージ媒体5011からアクセスされる。該ソフトウェア・プログラム・コードは、ディスケット、ハード・ドライブ、またはCD−ROMなど、データ処理システムと共に使われるさまざまな周知の媒体のいずれの中にも具現することができる。該コードはかかる媒体で配布することができ、または、他のコンピュータ・システムのユーザが使用するために、一つのコンピュータ・システムのコンピュータ・メモリ5002またはストレージから、ネットワーク5010を介して、該コードをかかる他のシステムのユーザに配送することもできる。
このソフトウェア・プログラム・コードは、さまざまなコンピュータ・コンポーネントおよび一つ以上のアプリケーション・プログラムの機能および相互作用を制御するオペレーティング・システムを含む。プログラム・コードは、通常、ストレージ媒体デバイス5011から、プロセッサ(CPU)5001が処理のため利用可能な、比較的により高速のコンピュータ・ストレージ5002にページングされる。ソフトウェア・プログラム・コードを、メモリ中、物理媒体上に具現するための、もしくはネットワークを介してソフトウェア・コードを配送するための、またはその両方の技法および方法は周知であり、本明細書ではこれ以上説明しない。プログラム・コードが生成されて、それが有形の媒体(以下に限らないが、電子メモリ・モジュール(RAM)、フラッシュ・メモリ、コンパクト・ディスク(CD:Compact Disc)、DVD、磁気テープなどを含む)に格納されたものは、しばしば「コンピュータ・プログラム製品」と呼ばれる。このコンピュータ・プログラム製品の媒体は、望ましくはコンピュータ・システム中の処理回路によって実行されるために、通常、該処理回路による読み取りが可能となっている。
図21は、本発明が実践可能な、典型的ワークステーションまたはサーバ・ハードウェア・システムを示す。図21のシステム5020は、随意の周辺デバイスを含む、パーソナル・コンピュータ、ワークステーション、またはサーバなどの典型的な基本的コンピュータ・システム5021を含む。この基本的コンピュータ・システム5021は、一つ以上のプロセッサ5026、およびプロセッサ(群)5026とシステム5021の既知の技法による他のコンポーネントとの間の通信を可能にするため用いられるバスを含む。このバスは、プロセッサ5026をメモリ5025および長期ストレージ5027に接続しており、この長期ストレージには、例えば、ハード・ドライブ(例として、磁気媒体、CD、DVD、およびフラッシュ・メモリを含む)またはテープ・ドライブを含めることができる。また、システム5021には、マイクロプロセッサ5026を、バスを介してキーボード5024、マウス5023、プリンタ/スキャナ5030もしくは他のインタフェース・デバイスまたはこれらの組み合わせなどの一つ以上のインタフェース・デバイスに接続する、ユーザ・インタフェース・アダプタを含めることも可能である。上記他のインタフェース・デバイスは、例えば、タッチ感知スクリーン、デジタル化入力パッドなど任意のユーザ・インタフェース・デバイスとすることができる。また、バスは、LCDスクリーンまたはモニタなどのディスプレイ・デバイス5022を、ディスプレイ・アダプタを介してマイクロプロセッサ5026に接続する。
システム5021は、ネットワーク5029との通信が可能なネットワーク・アダプタ5028を経由して、他のコンピュータまたはコンピュータのネットワークと通信することができる。ネットワーク・アダプタの例には、通信チャネル、トークン・リング、イーサネット(R)、またはモデムがある。上記に換えて、システム5021は、CDPD(cellular digital packet data(セルラー・デジタル・パケット・データ))カードなどの無線インタフェースを使って通信することもできる。システム5021は、ローカル・エリア・ネットワーク(LAN:Local Area Network)または広域ネットワーク(WAN:Wide Area Network)内で、そのネットワークの他のコンピュータと交信することができ、あるいは、システム5021は、別のコンピュータとのクライアント/サーバ・アレンジメントにおけるクライアントにすることなどもできる。こういった構成の全て、並びに適切な通信ハードウェアおよびソフトウェアは、当該技術分野では周知である。
図22は、本発明を実践できるデータ処理ネットワーク5040を示す。データ処理ネットワーク5040には、そのそれぞれが複数の個別ワークステーション5041、5042、5043、5044を包含可能な、無線ネットワークおよび有線ネットワークなど、複数の個別ネットワークを含めることができる。さらに、当業者ならよく理解しているように、一つ以上のLANを含めることができ、LANには、ホスト・プロセッサに連結された複数のインテリジェント・ワークステーションを含めることができる。
さらに図22を参照すると、このネットワークには、ゲートウェイ・コンピュータ(クライアント・サーバ5046)またはアプリケーション・サーバ(データ・リポジトリにアクセス可能で、またワークステーション5045から直接にアクセスを受けることが可能な遠隔サーバ5048)などのメインフレーム・コンピュータまたはサーバも含めることができる。ゲートウェイ・コンピュータ5046は、各個別ネットワークへのエントリ点としての役目をする。一つのネットワーク・プロトコルを別のプロトコルに接続するとき、ゲートウェイが必要となる。ゲートウェイ5046は、望ましくは、通信リンクを使って別のネットワーク(例えば、インターネット5047)に連結が可能である。また、ゲートウェイ5046は、通信リンクを使って、一つ以上のワークステーション5041、5042、5043、5044に直接連結することができる。ゲートウェイ・コンピュータは、インターナショナル・ビジネス・マシーンズ・コーポレーションから入手可能なIBM eServer(IBM社の商標)、System z(IBM社の登録商標)サーバを用いて実装することができる。
図21および図22を同時に参照すると、本発明を具現可能なソフトウェア・プログラミング・コードには、システム5020のプロセッサ5026によって、CD−ROMドライブまたはハード・ドライブなどの長期ストレージ媒体5027からアクセスすることができる。ソフトウェア・プログラミング・コードは、ディスケット、ハード・ドライブ、またはCD−ROMなどデータ処理システムと共に使われるさまざまな周知の媒体のいずれにも具現することができる。該コードはかかる媒体で配布することができ、または、他のコンピュータ・システムのユーザが使用するために、一つのコンピュータ・システムのメモリまたはストレージから、ネットワークを介して、該コードをこういった他のシステムのユーザ5050、5051に配送することもできる。
上記に換えて、プログラミング・コードをメモリ5025中に具現し、プロセッサ・バスを使ってプロセッサ5026にアクセスさせることもできる。かかるプログラミング・コードは、さまざまなコンピュータ・コンポーネントおよび一つ以上のアプリケーション・プログラム5032の機能および相互作用を制御するオペレーティング・システムを含む。プログラム・コードは、通常、ストレージ媒体デバイス5027から、プロセッサ5026が処理のために利用可能な高速のメモリ5025にページングされる。ソフトウェア・プログラミング・コードをメモリ中、物理媒体上に具現するための、もしくはネットワークを介してソフトウェア・コードを配送するための、またはその両方の技法および方法は周知であり、本明細書ではこれ以上説明しない。プログラム・コードが生成されて、それが有形の媒体(以下に限らないが、電子メモリ・モジュール(RAM)、フラッシュ・メモリ、コンパクト・ディスク(CD)、DVD、磁気テープなどを含む)に格納されたものは、しばしば「コンピュータ・プログラム製品」と呼ばれる。このコンピュータ・プログラム製品の媒体は、望ましくはコンピュータ・システム中の処理回路によって実行されるために、通常、該処理回路による読み取りが可能となっている。
プロセッサにとって最も容易に利用可能なキャッシュ(通常、プロセッサの他のキャッシュよりも高速で小型)は、最低位(L1またはレベル1)キャッシュであり、主ストア(主メモリ)は最高位レベル・キャッシュ(レベルが3つある場合はL3)である。最低位キャッシュは、多くの場合、実行されるマシン命令を保持する命令キャッシュ(I−キャッシュ)と、データ・オペランドを保持するデータ・キャッシュ(D−キャッシュ)とに分割されている。
図23を参照すると、プロセッサ5026のための例示的なプロセッサの実施形態が示されている。通常、プロセッサのパフォーマンスを向上するために、一つ以上のレベルのキャッシュ5053が、メモリ・ブロックをバッファするのに用いられる。キャッシュ5053は、使用の可能性が高いメモリ・データのキャッシュ・ラインを保持する高速バッファである。典型的なキャッシュ・ラインは、64バイト、128バイト、または256バイトのメモリ・データである。多くの場合、データをキャッシングするためというより、命令をキャッシュングするために別個のキャッシュが用いられる。キャッシュ・コヒーレンス(メモリおよびキャッシュ群中のラインのコピーの同期化)は、多くの場合、当該技術分野で周知のさまざまな「スヌープ」アルゴリズムによって提供される。プロセッサ・システムの主メモリ・ストレージ5025は、しばしばキャッシュといわれる。4段階レベルのキャッシュ5053を有するプロセッサ・システムにおいて、主ストレージ5025は、レベル5(L5)キャッシュと呼ばれることもある。これは、主ストレージ5025が、通常、より高速であり、コンピュータ・システムに利用可能な不揮発性ストレージ(DASD、テープなど)の一部を保持するだけだからである。主ストレージ5025は、オペレーティング・システムによって主ストレージ5025にページ・インおよびページ・アウトされるデータのページを「キャッシュする」。
プログラム・カウンタ(命令カウンタ)5061は、現在の実行対象の命令のアドレスを記録する。z/Architecture(IBM社の登録商標)のプロセッサ中のプログラム・カウンタは64ビットであり、従前のアドレッシング限度をサポートするため31または24ビットに切りつめることができる。プログラム・カウンタは、通常、コンテキスト切り替えの期間それが持続するように、コンピュータのPSW(program status word(プログラム状態ワード))中に具現される。しかして、プログラム・カウンタ値を有する、進行中のプログラムに対し、例えばオペレーティング・システムが割り込むことが可能である(プログラム環境からオペレーティング・システム環境へのコンテキスト切り替え)。プログラムのPSWは、該プログラムがアクティブでない間はプログラム・カウンタ値を維持し、オペレーティング・システムの実行中は、オペレーティング・システムの(PSW中の)プログラム・カウンタが使われる。通常、プログラム・カウンタは、現行の命令のバイトの数に等しい量だけインクリメントされる。RISC(Reduced Instruction Set Computing(縮小命令セット・コンピューティング))命令は、通常、固定長であり、一方、CISC(Complex Instruction Set Computing(複合命令セット・コンピューティング))命令は、通常、可変長である。IBMのz/Architecture(IBM社の登録商標)の命令は、2バイト、4バイト、および6バイトの長さを有するCISC命令である。プログラム・カウンタ5061は、例えば、コンテキスト切り替えオペレーション、もしくは分岐命令の分岐成立オペレーションのいずれかによって変更される。コンテキスト切り替えオペレーションでは、現在のプログラム・カウンタ値は、実行されているプログラムについての他の(状態コードなどの)状態情報とともに、プログラム状態ワード中に保存され、実行されることになる新規のプログラム・モジュールの命令をポイントする新しいプログラム・カウンタがロードされる。プログラムが、判断を下すことまたはプログラム内でループすることを可能にするために、分岐命令の結果をプログラム・カウンタ5061の中にロードすることによって分岐成立オペレーションが遂行される。
一般には、プロセッサ5026に代わって命令をフェッチするために、命令フェッチ・ユニット5055が用いられる。フェッチ・ユニットは、分岐成立命令のターゲット命令である「次順命令」または、コンテキスト切り替えに続くプログラムの最初の命令のいずれかをフェッチする。近年の命令フェッチ・ユニットの多くは、事前フェッチした命令が使われる可能性の尤度に基づいて、推測的に命令を事前フェッチする事前フェッチ技法を用いている。例えば、フェッチ・ユニットは、次順命令およびさらなる逐次命令の追加バイトを含む16バイトの命令をフェッチすることができる。
次いで、フェッチされた命令は、プロセッサ5026によって実行される。ある実施形態において、フェッチされた命令(群)はフェッチ・ユニットのタスク指名(dispatch)ユニット5056に渡される。タスク指名ユニットは命令(群)を復号し、復号された命令(群)についての情報を適切なユニット5057、5058、5060に転送する。実行ユニット5057は、通常、命令フェッチ・ユニット5055から、復号された算術命令についての情報を受信し、該命令のオペコードに従ってオペランド上で算術演算を遂行することになる。オペランドは、望ましくは、メモリ5025、設計されたレジスタ5059、または実行されている命令の即値フィールドのいずれかから、実行ユニット5057に提供される。実行の結果を格納する場合、メモリ5025中、レジスタ5059中、または(制御レジスタ、PSWレジスタ、などの)他のマシン・ハードウェア中のいずれかに格納される。
プロセッサ5026は、通常、命令の機能を実行するための一つ以上のユニット5057、5058、5060を有する。図24を参照すると、実行ユニット5057は、インタフェース接続ロジック5071を経由して、設計された汎用レジスタ5059、復号/タスク指名ユニット5056、ロード・ストア・ユニット5060、および他のプロセッサ・ユニット5065と通信することができる。実行ユニット5057は、算術論理ユニット(ALU:arithmetic logic unit)5066の演算対象となる情報を保持するため、いくつかのレジスタ回路5067、5068、5069を用いる。ALUは、加算、減算、乗算、および除算などの算術演算、並びにand(論理積)、or(論理和)、および排他的or(XOR:exclusive−or(排他的論理和))、shift(シフト)およびrotate(ローテート)、などの論理関数を遂行する。望ましくは、ALUは、設計により決まる特別な演算にも対応する。他の回路は、例えば、条件コードおよびリカバリ支援ロジックを含め、他の設計された機能5072を提供してもよい。通常、ALU演算の結果は、出力レジスタ回路5070中に保持され、該レジスタ回路は、該結果をさまざまな他の処理機能に転送することができる。多くのプロセッサ・ユニットのアレンジメントがあり、本説明は、一つの実施形態の代表的な理解を提供することだけを意図している。
例えばADD命令は、算術および論理機能を有する実行ユニット5057で実行されることになり、一方、例えば浮動小数点命令は、特殊な浮動小数点機能を有する浮動小数点実行ユニットで実行されることになろう。望ましくは、実行ユニットは、命令により識別されたオペランドを、該オペランド上のオペコードが定義する機能を遂行することによって演算する。例えば、ADD命令は、実行ユニット5057によって、命令のレジスタ・フィールドにより識別される2つのレジスタ5059中にあるオペランドに対して実行することができる。
実行ユニット5057は、2つのオペランドに対する算術加算を遂行し、その結果を第三オペランド中に保存し、この第三オペランドは、第三のレジスタとすることも、または2つのソース・レジスタの一つとすることもできる。実行ユニットは、望ましくは、Shift、Rotate、And、Or、およびXORなどのさまざまな論理関数、並びに、加算、減算、乗算、除算のいずれをも含む、さまざまな代数関数を遂行する能力を有する、算術論理ユニット(ALU)5066を用いる。一部のALU5066は、スカラー演算用に設計され、一部は浮動小数点用に設計される。データは、アーキテクチャに応じ、(最小有効バイトが最上位バイト・アドレスに置かれる)ビッグ・エンディアン、または(最小有効バイトが最下位バイト・アドレスに置かれる)リトル・エンディアンとすることができる。IBMのz/Architecture(IBM社の登録商標)はビッグ・エンディアンである。符号付きフィールドは、アーキテクチャに応じ、符号および絶対値、1の補数、または2の補数とすることができる。2の補数による数は、2の補数では、負の値または正の値いずれもALU内で加算だけが必要なので、ALUに減算能力を設計する必要がないという点で有利である。数は、通常、簡略表記で表され、例えば、12ビットのフィールドは4,096バイト・ブロックのアドレスを定義し、通常、4Kバイト(キロバイト)ブロックとして表される。
図25を参照すると、分岐命令を実行するための分岐命令情報は、通常、分岐ユニット5058に送信され、分岐ユニットの多くは、他の条件付き演算が完了する前に、分岐の結果を予測するため、分岐履歴テーブル5082などの分岐予測アルゴリズムを用いる。現在の分岐命令のターゲットが、フェッチされ、条件付き演算が完了する前に、予測で実行されることになる。条件付き演算が完了したとき、予測で実行された分岐命令は、該条件付き演算の条件および予測した結果に基づいて、完了されるかもしくは放棄される。典型的分岐命令は、条件コードを検査し、条件コードが分岐命令の分岐要件に合致する場合、ターゲット・アドレスに分岐することができ、ターゲット・アドレスは、例えば、レジスタ・フィールドまたは命令の即値フィールドにある数を含めいくつかの数に基づいて計算することができる。分岐ユニット5058は、複数の入力レジスタ回路5075、5076、5077、および一つの出力レジスタ回路5080を有するALU5074を用いることができる。分岐ユニット5058は、例えば、汎用レジスタ5059、復号/タスク指名ユニット5056または他の回路5073と通信することが可能である。
命令のグループの実行は、例えば、オペレーティング・システムによって開始されるコンテキスト切り替え、コンテキスト切り替えを引き起こすプログラム例外またはエラー、コンテキスト切り替えを引き起こすI/O割り込み信号、または(マルチスレッド環境における)複数プログラムのマルチスレッド・アクティビティを含め、さまざまな理由によって中断され得る。望ましくは、コンテキスト切り替え処置では、現在実行されているプログラムについての状態情報を保存し、然る後、起動される別のプログラムについての状態情報をロードする。状態情報は、例えば、ハードウェア・レジスタ中またはメモリ中に保存することができる。状態情報は、望ましくは、次に実行する命令をポイントするプログラム・カウンタ値、条件コード、メモリ変換情報、および設計されたレジスタ内容を含む。コンテキスト切り替えアクティビティは、ハードウェア回路、アプリケーション・プログラム、オペレーティング・システム・プログラム、またはファームウェア・コード(マイクロコード、ピココード、ライセンス内部コード(LIC:licensed internal code))単独で、あるいはこれらの組み合わせによって行うことができる。
プロセッサは、命令に規定された方法に従ってオペランドにアクセスする。命令は、命令の一部の値を使った即値オペランドを提示することもでき、汎用レジスタあるいは(例えば浮動小数点レジスタなど)特別用途レジスタのいずれかを明示でポイントする一つ以上のレジスタ・フィールドを提示することもできる。命令は、オペランドとして、オペコード・フィールドによって識別されるインプライド・レジスタを用いることができる。命令は、オペランドに対するメモリ位置を用いることもできる。オペランドのメモリ位置は、レジスタ、即値フィールド、またはz/Architecture(IBM社の登録商標)の長変位機能(long displacement facility)に例示されるように、レジスタと即値フィールドとの組み合わせによって提供することができ、例えば、命令が、ベース・レジスタ、インデックス・レジスタ、および即値フィールド(変位フィールド)を規定し、これらがともに加算されて、メモリ中のオペランドのアドレスを提供する。上記の位置は、別段の指定がなければ、通常は主メモリ(主ストレージ)の中の位置を意味する。
図26を参照すると、プロセッサは、ロード/ストア・ユニット5060を使ってストレージにアクセスする。ロード/ストア・ユニット5060は、メモリ5053中のターゲット・オペランドのアドレスを取得し、そのオペランドをレジスタ5059または他のメモリ5053位置中にロードすることによって、ロード・オペレーションを遂行することができ、あるいは、メモリ5053中のターゲット・オペランドのアドレスを取得し、レジスタ5059または別のメモリ5053位置から取得したデータを、メモリ5053中のターゲット・オペランド位置に格納することによってストア・オペレーションを遂行することができる。ロード/ストア・ユニット5060は、推測処置を行うことができ、命令シーケンスに対して順序外れのシーケンスでメモリにアクセスすることができるが、ただし、ロード/ストア・ユニット5060は、プログラムに対しては、命令が順序通りに実行されたような見掛けを維持する。ロード/ストア・ユニット5060は、汎用レジスタ5059、復号/タスク指名ユニット5056、キャッシュ/メモリ・インタフェース5053、または他のエレメント5083と通信することができ、ストレージ・アドレスを計算し、オペレーションの順序を保つためのパイプライン・シーケンシングを備えるため、さまざまなレジスタ回路、ALU5085、およびの制御ロジック5090を含む。一部のオペレーションは順序外れとなり得るが、当該技術分野で周知のように、ロード/ストア・ユニットは、その順序外れオペレーションが、プログラムに対し順序通り遂行されたように見せるための機能を備えている。
望ましくは、アプリケーション・プログラムが「見る」アドレスは、多くの場合仮想アドレスといわれる。仮想アドレスは、「論理アドレス」および「実効アドレス」と呼ばれることもある。これらの仮想アドレスは、それらが、以下に限らないが、単にオフセット値を仮想アドレスの前に付ける仕方、一つ以上の変換テーブルを介して仮想アドレスを変換する仕方などを含め、さまざまな動的アドレス変換(DAT)技術の一つによって物理メモリ位置にリダイレクトされるという点で仮想的であって、これら変換テーブルは、望ましくは、少なくともセグメント・テーブルおよびページ・テーブルを単独または組み合わせで含み、セグメント・テーブルは、望ましくは、ページ・テーブルをポイントするエントリを有する。z/Architecture(IBM社の登録商標)では、領域第一テーブル、領域第二テーブル、領域第三テーブル、セグメント・テーブル、および随意のページ・テーブルを含む、変換の階層が設けられている。アドレス変換のパフォーマンスは、多くの場合、仮想アドレスを、関連付けられた物理メモリ・アドレス位置にマッピングするエントリを含む変換ルックアサイド・バッファ(TLB)を利用することによって向上する。これらエントリは、DATが変換テーブルを使って仮想アドレスを変換するときに生成される。その後の仮想アドレス使用においては、低速な逐次変換テーブルへのアクセスよりはむしろ高速なTLBのエントリを利用することができる。TLBの内容は、LRU(Least Recently used(最低使用頻度法))を含め各種の置き換えアルゴリズムによって管理することが可能である。
プロセッサが、多重プロセッサ・システムのプロセッサである場合、各プロセッサは、コヒーレンシのため、I/O、キャッシュ、TLB、およびメモリなどの共用リソースのインターロック状態を保つ責任を有する。通常、キャッシュのコヒーレンシを維持するのに「スヌープ」技術が利用されることになる。スヌープ環境において、各キャッシュ・ラインには、共用を容易化するために、共用状態、専用状態、変更状態、無効状態などのいずれか一つにあることを標識することができる。
I/Oユニット5054(図23)は、プロセッサに、例えば、テープ、ディスク、プリンタ、ディスプレイ、およびネットワークを含む周辺デバイスに連結するための手段を提供する。I/Oユニットの多くは、ソフトウェア・ドライバによってコンピュータ・プログラムに提供される。IBM(IBM社の登録商標)社製のSystem z(IBM社の登録商標)などのメインフレームでは、チャネル・アダプタおよびオープン・システム・アダプタが、オペレーティング・システムと周辺デバイスとの間の通信を提供する、メインフレームのI/Oユニットである。
さらに、他の種類のコンピューティング環境も、本発明の一つ以上の態様から便益を得ることができる。一例として、前述のように、環境にはエミュレータ(例、ソフトウェアまたは他のエミュレーション・メカニズム)を含めることができ、これによって、(例えば、アドレス変換および設計されたレジスタなど、命令実行、設計された機能を含む)特定のアーキテクチャ、またはそのサブセットが(例えば、プロセッサおよびメモリを有するネイティブ・コンピュータ・システム上で)エミュレートされる。かかる環境において、エミュレータの一つ以上のエミュレーション機能は、たとえ、エミュレータを実行しているコンピュータがエミュレートされている機能と異なるアーキテクチャを有していたとしても、本発明の一つ以上の態様を実装することができる。一例として、エミュレーション・モードにおいて、エミュレートされる特定の命令またはオペレーションは復号され、その個別の命令またはオペレーションを実装するための適切なエミュレーション機能が構築される。
あるエミュレーション環境において、ホスト・コンピュータは、例えば、命令およびデータを格納するメモリと、メモリから命令をフェッチし、随意的にそのフェッチされた命令に対しローカル・バッファリングを提供する命令フェッチ・ユニットと、フェッチされた命令を受信し、フェッチされてきた命令の種類を判定する命令復号ユニットと、命令を実行する命令実行ユニットと、を含む。実行には、メモリからレジスタ中にデータをロードするステップ、レジスタからメモリにデータを戻して格納するステップ、あるいは、復号ユニットの判定により、ある種の算術または論理演算を遂行するステップを含めることができる。一つの事例において、各ユニットはソフトウェア中に実装される。例えば、これらユニットによって遂行されるオペレーションは、エミュレータ・ソフトウェア内に一つ以上のサブルーチンとして実装される。
さらに具体的には、あるメインフレームでは、設計されたマシン命令が、プログラマ(普通、近年では「C」プログラマ)によって、多くの場合、コンパイラ・アプリケーションを介して使用される。ストレージ媒体中に格納されたこれらの命令は、z/Architecture(IBM社の登録商標)IBM(IBM社の登録商標)サーバで、あるいは他のアーキテクチャを実行するマシンで、ネイティブに実行することができる。これらの命令は、既存のおよび将来のIBM(IBM社の登録商標)メインフレーム・サーバ中で、並びにIBM(IBM社の登録商標)の他のマシン(例、Power Systems(IBM社の商標)サーバ、およびSystem x(IBM社の登録商標)サーバ)上でエミュレートすることができる。これらの命令は、IBM(IBM社の登録商標)、Intel(R)、AMD(R)および他社によって製造されたハードウェアを使った、多種多様なマシン上でLinux(R)を走らせるマシンにおいて実行できる。z/Architecture(IBM社の登録商標)の下のハードウェア上での実行に加え、Linux(R)、並びに、TurboHercules(R)(www.turbohercules.com/)、Hercules(R)(www.hercules−390.org/)またはFSI(Fundamental Software,Inc)(R)(www.funsoft.com/)によるエミュレーションを用いるマシンを使うことができ、一般に、実行はエミュレーション・モードにおいて行われる。エミュレーション・モードでは、エミュレーション・ソフトウェアは、ネイティブ・プロセッサによって実行され、疑似プロセッサのアーキテクチャがエミュレートされる。
ネイティブ・プロセッサは、通常、疑似プロセッサのエミュレーションを遂行するため、ファームウェアもしくはネイティブ・オペレーティング・システムを含む、エミュレーション・ソフトウェアを実行する。エミュレーション・ソフトウェアは、疑似プロセッサのアーキテクチャの命令をフェッチし実行する役割を有する。エミュレーション・ソフトウェアは、命令境界の経過を追うため疑似プログラムのカウンタを維持する。エミュレーション・ソフトウェアは、一度に一つ以上の疑似マシン命令をフェッチし、該一つ以上の疑似マシン命令を、ネイティブ・プロセッサによる実行のため、それらに対応するネイティブ・マシン命令のグループに変換することができる。
これらの変換された命令は、より速い変換が達成可能なようにキャッシュできる。しかしながら、エミュレーション・ソフトウェアは、疑似プロセッサに対して書かれたオペレーティング・システムおよびアプリケーションが正確に作動することを確実にするため、疑似プロセッサのアーキテクチャのアーキテクチャ・ルールを維持することになる。さらに、エミュレーション・ソフトウェアは、以下に限らないが、制御レジスタ、汎用レジスタ、浮動小数点レジスタ、例えばセグメント・テーブルおよびページ・テーブルを包含する動的アドレス変換機能、割り込みメカニズム、コンテキスト切り替えメカニズム、時刻(TOD:Time of Day)機構、およびI/Oサブシステムに対し設計されたインタフェースを含め、疑似プロセッサのアーキテクチャによって識別されるリソースを提供し、疑似プロセッサ上で実行するよう設計されたオペレーティング・システムまたはアプリケーション・プログラムが、エミュレーション・ソフトウェアを有するネイティブ・プロセッサ上で実行できるようにする。
エミュレートされる特定の命令は復号され、個々の命令の機能を遂行するためにサブルーチンが呼び出される。本好適な実施形態の説明を理解すれば当業者には自明なように、疑似プロセッサの機能をエミュレートするエミュレーション・ソフトウェアの機能が、例えば、「C」サブルーチンまたはドライバに、あるいは特定のハードウェアに対しドライバを提供する他の方法の中に実装される。以下に限らないが、米国特許証第5,551,013号、Beausoleilらの発明の名称「Multiprocessor for Hardware Emulation」;米国特許証第6,009,261号、Scalziらの発明の名称「Preprocessing of Stored Target Routines for Emulating Incompatible Instructions on a Target Processor」;、米国特許証第5,574,873号、Davidianらの発明の名称「Decoding Guest Instruction to Directly Access Emulation Routines that Emulate the Guest Instructions」;米国特許証第6,308,255号、Gorishekらの発明の名称「Symmetrical Multiprocessing Bus and Chipset Used for Coprocessor Support Allowing Non−Native Code to Run in a System」;米国特許証第6,463,582号、Lethinらの発明の名称「Dynamic Optimizing Object Code Translator for Architecture Emulation and Dynamic Optimizing Object Code Translation Method」;米国特許証第5,790,825号、Eric Trautの発明の名称「Method for Emulating Guest Instructions on a Host Computer Through Dynamic Recompilation of Host Instructions」、および他の多くのものを含め、さまざまなソフトウェアおよびハードウェア・エミュレーションの特許が、当業者が利用可能なターゲット・マシンに対する異なるマシンのために設計された命令フォーマットのエミュレーションを実現するための各種の既知の方法を解説している。
本明細書で使用した用語は、特定の実施形態を説明する目的のためだけのものであり、本発明を限定することは意図されていない。本明細書で用いられる、単数形「ある(a、an)」、および「該(the)」は、文脈上明確に別途に示されていなければ、複数形も同じように含むことが意図されている。さらに、本明細書で用いられる「含む(comprise)」もしくは「含んでいる(comprising)」またはその両方は、述べられた機能、完全体、ステップ、オペレーション、エレメント、またはコンポーネント、あるいはこれらの複数の存在を特定するが、一つ以上の他の機能、完全体、ステップ、オペレーション、エレメント、コンポーネント、もしくはこれらの群、または上記の組み合わせの存在あるいは追加を排除するものでないことがさらに理解されよう。
添付の請求項中のミーンズ・プラス・ファンクションまたはステップ・プラス・ファンクションの要素全ての、対応する構造、材料、動作および均等物は、存在する場合、具体的に請求された他の請求要素と組み合わせて機能を遂行するための、一切の構造、材料または動作を包含することが意図されている。本発明の記述は、例示および説明の目的で提示されたもので、網羅的であることも、または本発明を開示した形態に限定することも意図されていない。当業者には、本発明の範囲および精神から逸脱することのない多くの修改および変形が明白であろう。本実施形態は、本発明の原理および実際的な応用を最善に説明し、他の当業者が、意図する特定の用途に適したさまざまな修改を加えたさまざまな実施形態に関して、本発明を理解できるようにするため、選択し説明されたものである。

Claims (22)

  1. コンピューティング環境の処理を逐次化するための診断命令を実行する方法であって、前記方法は、
    実行のためマシン命令を取得するステップであって、前記マシン命令はコンピュータ・アーキテクチャに従ったコンピュータ実行のために定義されており、前記マシン命令は、
    診断命令を識別するオペコード・フィールド、
    前記診断命令の実行に使われるサブコードを内容に含む第一位置を識別するサブコード・フィールド、および
    第二位置の内容を変位フィールドの内容に加算して、処理を逐次化するために前記診断命令が用いられることを識別するのに使われるオペレーション・コード拡張を得るための、前記第二位置を識別するベース・フィールド、
    を含む、前記取得するステップと、
    前記オペレーション・コード拡張によって示された前記マシン命令を実行するステップであって、
    前記サブコードが所定の値であるのに応じて、
    前記コンピューティング環境のプロセッサの静止化を開始するステップ、
    前記プロセッサが静止されていることを判定するステップ、および
    前記プロセッサが静止されるのに応じて、前記診断命令の実行を完了するステップ、
    を含む、前記実行するステップと、
    を含む前記方法。
  2. 前記マシン命令は、システム・コール領域のアドレスが提供される第三位置を識別する制御領域フィールドをさらに含む、請求項1に記載の方法。
  3. 前記サブコードが前記所定の値であるのに応じて、前記システム・コール領域の前記アドレスは、変換を実施する対象のゲストを識別し、前記方法は、前記ゲストに対する変換が実施されるのに応じて、前記マシン命令を発行するステップをさらに含む、請求項2に記載の方法。
  4. 前記方法は、
    前記ゲストが多重処理ゲストかどうかを判定するステップと、
    前記ゲストが多重処理ゲストであるのに応じて、インターロックがセットされているかどうかを判定するステップと、
    前記インターロックがセットされていないのに応じて、前記インターロックおよびホスト・ロックをセットするステップと、
    前記インターロックがセットされているのに応じて、前記ホスト・ロックを更新するステップと、
    前記ホスト・ロックが成功裏にセットまたは更新されるのに応じて、前記マシン命令を発行するステップと、
    をさらに含む、請求項3に記載の方法。
  5. 前記ホスト・ロックは、ゲスト・ロックにかかわりなくセットされる、請求項4に記載の方法。
  6. 前記方法は、ホスト・ロックをセットするステップと、それに応じて前記マシン命令を発行するステップとをさらに含む、請求項1に記載の方法。
  7. 前記マシン命令の前記実行は、前記ホスト・ロックを、前記コンピューティング環境のプロセッサ群に可視にするステップを含む、請求項6に記載の方法。
  8. 前記診断命令の実行を完了するステップは、前記静止状態を出るステップを含む、請求項1に記載の方法。
  9. 前記方法は、
    ゲストによって、ロックを用いる静止型の命令を発行するステップであって、前記静止型命令は、このゲストに対するホストによって遂行される変換処理を使って逐次化されることになる、前記発行するステップと、
    ホスト・ロックがセットされているかどうかを判定するステップと、
    前記ホスト・ロックがセットされていないのに応じて、ゲスト・ロックの使用なしに、静止型命令を発行するステップと、
    をさらに含む、請求項1に記載の方法。
  10. 前記ホスト・ロックがセットされていて、前記マシン命令の実行が完了されていないのが示されているのに応じて、前記ホストにインターセプトする、請求項9に記載の方法。
  11. 前記方法は、
    第一エンティティと第二エンティティとによって共用されるインターロックをセットするステップと、
    前記インターロックのセットに応じて、第一エンティティ・ロックを更新するステップと、
    前記第一エンティティ・ロックを成功裏に更新するのに応じて、前記マシン命令を発行するステップであって、前記マシン命令は、第二エンティティ・ロックのセッティングなしで、前記第一エンティティの処理と前記第二エンティティの処理との間で逐次化を遂行する、前記発行するステップと、
    をさらに含む、請求項1に記載の方法。
  12. コンピューティング環境の処理を逐次化する診断命令を実行するためのコンピュータ・システムであって、前記コンピュータ・システムは
    メモリと、
    前記メモリと通信するプロセッサと、
    実行のためのマシン命令を取得するオブテイナであって、前記マシン命令はコンピュータ・アーキテクチャに従ったコンピュータ実行のために定義されており、前記マシン命令が、
    ・ 診断命令を識別するオペコード・フィールド、
    ・ 前記診断命令の実行に使われるサブコードを内容に含む第一位置を識別するサブコード・フィールド、および
    ・ 第二位置の内容を変位フィールドの内容に加算して、処理を逐次化するために前記診断命令が用いられることを識別するのに使われる、オペレーション・コード拡張を得るための前記第二位置を識別するベース・フィールド、
    を含む、前記オブテイナと、
    前記オペレーション・コード拡張によって示された前記マシン命令を実行するためのエグゼキュタであって、前記サブコードが所定の値であるのに応じて、
    ・ 前記コンピューティング環境のプロセッサの静止化を開始するためのイニシエータ、
    ・ 前記プロセッサが静止されているのを判定するためのデターミナ、および
    ・ 前記プロセッサが静止されているのに応じて、前記診断命令の実行を完了するための実行コンプリータ、
    を含む手段を包含する、前記エグゼキュタと、
    を含む、前記コンピュータ・システム。
  13. コンピュータ・システムにロードされ、その上で実行されるとき、前記コンピュータ・システムに請求項1〜11のいずれかに記載の方法の全ステップを遂行させる、コンピュータ可読媒体に格納されたコンピュータ・プログラム・コードを含む、コンピュータ・プログラム。
  14. コンピューティング環境の処理を逐次化する診断命令を実行するためのコンピュータ・システムであって、前記コンピュータ・システムは、
    メモリと、
    前記メモリと通信するプロセッサと、
    を含み、
    前記コンピュータ・システムは方法を遂行するよう構成され、前記方法は、
    実行のためマシン命令を取得するステップであって、前記マシン命令はコンピュータ・アーキテクチャに従ったコンピュータ実行のために定義されており、前記マシン命令が、
    診断命令を識別するオペコード・フィールド、
    前記診断命令の実行に使われるサブコードを内容に含む第一位置を識別するサブコード・フィールド、および
    第二位置の内容を変位フィールドの内容に加算して、処理を逐次化するために前記診断命令が用いられることを識別するのに使われる、オペレーション・コード拡張を得るための前記第二位置を識別するベース・フィールド、
    を含む、前記取得するステップと、
    前記オペレーション・コード拡張によって示された前記マシン命令を実行するステップであって、
    前記サブコードが所定の値であるのに応じて、
    前記コンピューティング環境のプロセッサの静止化を開始するステップ、
    前記プロセッサが静止されていることを判定するステップ、および
    前記プロセッサが静止されているのに応じて、前記診断命令の実行を完了するステップ、
    を含む、前記実行するステップと、
    を含む、前記コンピュータ・システム。
  15. 前記マシン命令は、システム・コール領域のアドレスが提供される第三位置を識別する制御領域フィールドをさらに含む、請求項14に記載のコンピュータ・システム。
  16. 前記サブコードが前記所定の値であるのに応じて、前記システム・コール領域の前記アドレスは、変換を実施する対象のゲストを識別し、前記方法は、前記ゲストに対する変換が実施されるのに応じて、前記マシン命令を発行するステップをさらに含む、請求項15に記載のコンピュータ・システム。
  17. 前記方法は、
    前記ゲストが多重処理ゲストかどうかを判定するステップと、
    前記ゲストが多重処理ゲストであるのに応じて、インターロックがセットされているかどうかを判定するステップと、
    前記インターロックがセットされていないのに応じて、前記インターロックおよびホスト・ロックをセットするステップと、
    前記インターロックがセットされているのに応じて、前記ホスト・ロックを更新するステップと、
    前記ホスト・ロックが成功裏にセットまたは更新されるのに応じて、前記マシン命令を発行するステップであって、前記ホスト・ロックはゲスト・ロックにかかわりなくセットされる、前記発行するステップと、
    をさらに含む、請求項14に記載のコンピュータ・システム。
  18. 前記方法は、ホスト・ロックをセットするステップと、それに応じて前記マシン命令を発行するステップとをさらに含み、前記マシン命令の前記実行は、前記ホスト・ロックを、前記コンピューティング環境のプロセッサ群に可視にするステップを含む、請求項14に記載のコンピュータ・システム。
  19. 前記方法は、
    ゲストによって、ロックを用いる静止型の命令を発行するステップであって、前記静止型命令は、このゲストに対するホストによって遂行される変換処理を使って逐次化されることになる、前記発行するステップと、
    ホスト・ロックがセットされているかどうかを判定するステップと、
    前記ホスト・ロックがセットされていないのに応じて、ゲスト・ロックの使用なしに、静止型命令を発行するステップと、
    をさらに含む、請求項14に記載のコンピュータ・システム。
  20. 前記ホスト・ロックがセットされていて、前記マシン命令の実行が完了されていないのが示されているのに応じて、前記ホストにインターセプトする、請求項19に記載のコンピュータ・システム。
  21. 前記方法は、
    第一エンティティと第二エンティティとによって共用されるインターロックをセットするステップと、
    前記インターロックのセットに応じて、第一エンティティ・ロックを更新するステップと、
    前記第一エンティティ・ロックを成功裏に更新するのに応じて、前記マシン命令を発行するステップであって、前記マシン命令は、第二エンティティ・ロックをセットしないで、前記第一エンティティの処理と前記第二エンティティの処理との間で逐次化を遂行する、前記発行するステップと、
    をさらに含む、請求項14に記載のコンピュータ・システム。
  22. コンピューティング環境の処理を逐次化する診断命令を実行するためのコンピュータ・プログラム製品であって、前記コンピュータ・プログラム製品は、
    処理回路に可読で、請求項1〜11のいずれかに記載の方法を遂行するため前記処理回路が実行する命令を格納する、コンピュータ可読ストレージ媒体を含む、
    前記コンピュータ・プログラム製品。
JP2013515730A 2010-06-24 2010-11-08 処理を逐次化するための診断命令を実行する方法、システム及びプログラム Active JP5764206B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/822,886 US8595469B2 (en) 2010-06-24 2010-06-24 Diagnose instruction for serializing processing
US12/822,886 2010-06-24
PCT/EP2010/067038 WO2011160718A1 (en) 2010-06-24 2010-11-08 Diagnose instruction for serializing processing

Publications (2)

Publication Number Publication Date
JP2013533545A true JP2013533545A (ja) 2013-08-22
JP5764206B2 JP5764206B2 (ja) 2015-08-12

Family

ID=43530546

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013515730A Active JP5764206B2 (ja) 2010-06-24 2010-11-08 処理を逐次化するための診断命令を実行する方法、システム及びプログラム

Country Status (5)

Country Link
US (3) US8595469B2 (ja)
EP (1) EP2430533B1 (ja)
JP (1) JP5764206B2 (ja)
CN (1) CN102906699B (ja)
WO (1) WO2011160718A1 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2017515203A (ja) * 2014-03-27 2017-06-08 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation コンピュータにおいて複数のスレッドをディスパッチするための方法、システム、およびコンピュータ・プログラム
JP2017534994A (ja) * 2014-11-18 2017-11-24 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation 複数の同時実行中スレッド間における共有可能リソースの排他的制御を管理するための方法、システム、およびコンピュータ・プログラム

Families Citing this family (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8595469B2 (en) 2010-06-24 2013-11-26 International Business Machines Corporation Diagnose instruction for serializing processing
US10318426B1 (en) * 2011-09-27 2019-06-11 EMC IP Holding Company LLC Cloud capable storage platform with computation operating environment for storage and generic applications
US20140053272A1 (en) * 2012-08-20 2014-02-20 Sandor Lukacs Multilevel Introspection of Nested Virtual Machines
US9104513B1 (en) 2014-03-14 2015-08-11 International Business Machines Corporation Managing quiesce requests in a multi-processor environment
US10095606B2 (en) 2014-06-20 2018-10-09 Red Hat Israel, Ltd. Guest-independent testing of guest firmware in virtualized systems
US9898289B2 (en) 2014-10-20 2018-02-20 International Business Machines Corporation Coordinated start interpretive execution exit for a multithreaded processor
US10025608B2 (en) * 2014-11-17 2018-07-17 International Business Machines Corporation Quiesce handling in multithreaded environments
US9678830B2 (en) 2014-11-17 2017-06-13 International Business Machines Corporation Recovery improvement for quiesced systems
EP3281105B1 (en) * 2015-04-10 2023-10-25 Google LLC Binary translation into native client
JP6559793B2 (ja) * 2015-04-10 2019-08-14 グーグル エルエルシー 共有オブジェクト・レベルにおけるバイナリ変換
US10180909B2 (en) 2016-07-18 2019-01-15 International Business Machines Corporation Host-based resetting of active use of guest page table indicators
US10241924B2 (en) 2016-07-18 2019-03-26 International Business Machines Corporation Reducing over-purging of structures associated with address translation using an array of tags
US10176006B2 (en) 2016-07-18 2019-01-08 International Business Machines Corporation Delaying purging of structures associated with address translation
US10223281B2 (en) 2016-07-18 2019-03-05 International Business Machines Corporation Increasing the scope of local purges of structures associated with address translation
US10176110B2 (en) 2016-07-18 2019-01-08 International Business Machines Corporation Marking storage keys to indicate memory used to back address translation structures
US10162764B2 (en) 2016-07-18 2018-12-25 International Business Machines Corporation Marking page table/page status table entries to indicate memory used to back address translation structures
US10169243B2 (en) 2016-07-18 2019-01-01 International Business Machines Corporation Reducing over-purging of structures associated with address translation
US10282305B2 (en) 2016-07-18 2019-05-07 International Business Machines Corporation Selective purging of entries of structures associated with address translation in a virtualized environment
US10176111B2 (en) 2016-07-18 2019-01-08 International Business Machines Corporation Host page management using active guest page table indicators
US10802986B2 (en) 2016-07-18 2020-10-13 International Business Machines Corporation Marking to indicate memory used to back address translation structures
US10168902B2 (en) 2016-07-18 2019-01-01 International Business Machines Corporation Reducing purging of structures associated with address translation
US10248573B2 (en) 2016-07-18 2019-04-02 International Business Machines Corporation Managing memory used to back address translation structures
EP3336692B1 (en) 2016-12-13 2020-04-29 Arm Ltd Replicate partition instruction
EP3336691B1 (en) * 2016-12-13 2022-04-06 ARM Limited Replicate elements instruction
CN113189909B (zh) * 2021-04-29 2022-12-27 华人运通(上海)云计算科技有限公司 车控指令块的控制方法、装置、设备及存储介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH01263763A (ja) * 1988-04-14 1989-10-20 Fujitsu Ltd 多重処理計算機
JPH0340169A (ja) * 1989-06-30 1991-02-20 Apple Computer Inc 多重プロセツサシステムおよび複数の処理装置を制御する方法
JPH0926914A (ja) * 1995-07-07 1997-01-28 Nec Corp マルチプロセッサシステムのページ記述子更新制御方式
US6493741B1 (en) * 1999-10-01 2002-12-10 Compaq Information Technologies Group, L.P. Method and apparatus to quiesce a portion of a simultaneous multithreaded central processing unit
US20040064618A1 (en) * 2002-09-30 2004-04-01 International Business Machines Corporation Method and apparatus for controlling the execution of a broadcast instruction on a guest processor of a guest multiprocessing configuration

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5809551A (en) 1991-08-23 1998-09-15 International Business Machines Corporation Pending page release
WO1994027215A1 (en) 1993-05-07 1994-11-24 Apple Computer, Inc. Method for decoding guest instructions for a host computer
US5551013A (en) 1994-06-03 1996-08-27 International Business Machines Corporation Multiprocessor for hardware emulation
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
US5944841A (en) 1997-04-15 1999-08-31 Advanced Micro Devices, Inc. Microprocessor with built-in instruction tracing capability
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
US20020147969A1 (en) 1998-10-21 2002-10-10 Richard A. Lethin Dynamic optimizing object code translator for architecture emulation and dynamic optimizing object code translation method
US7143407B2 (en) 2001-07-26 2006-11-28 Kyocera Wireless Corp. System and method for executing wireless communications device dynamic instruction sets
US7530067B2 (en) 2003-05-12 2009-05-05 International Business Machines Corporation Filtering processor requests based on identifiers
US7020761B2 (en) 2003-05-12 2006-03-28 International Business Machines Corporation Blocking processing restrictions based on page indices
US7284100B2 (en) * 2003-05-12 2007-10-16 International Business Machines Corporation Invalidating storage, clearing buffer entries, and an instruction therefor
US6996698B2 (en) 2003-05-12 2006-02-07 International Business Machines Corporation Blocking processing restrictions based on addresses
JP2007066246A (ja) 2005-09-02 2007-03-15 Hitachi Ltd コントローラの自己診断システム及び方法
US8078843B2 (en) * 2008-01-31 2011-12-13 International Business Machines Corporation Facilitating processing in a computing environment using an extended drain instruction
US8032716B2 (en) 2008-02-26 2011-10-04 International Business Machines Corporation System, method and computer program product for providing a new quiesce state
US8140834B2 (en) 2008-02-26 2012-03-20 International Business Machines Corporation System, method and computer program product for providing a programmable quiesce filtering register
US8380907B2 (en) 2008-02-26 2013-02-19 International Business Machines Corporation Method, system and computer program product for providing filtering of GUEST2 quiesce requests
US8572624B2 (en) * 2008-02-26 2013-10-29 International Business Machines Corporation Providing multiple quiesce state machines in a computing environment
US8595469B2 (en) 2010-06-24 2013-11-26 International Business Machines Corporation Diagnose instruction for serializing processing

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH01263763A (ja) * 1988-04-14 1989-10-20 Fujitsu Ltd 多重処理計算機
JPH0340169A (ja) * 1989-06-30 1991-02-20 Apple Computer Inc 多重プロセツサシステムおよび複数の処理装置を制御する方法
JPH0926914A (ja) * 1995-07-07 1997-01-28 Nec Corp マルチプロセッサシステムのページ記述子更新制御方式
US6493741B1 (en) * 1999-10-01 2002-12-10 Compaq Information Technologies Group, L.P. Method and apparatus to quiesce a portion of a simultaneous multithreaded central processing unit
US20040064618A1 (en) * 2002-09-30 2004-04-01 International Business Machines Corporation Method and apparatus for controlling the execution of a broadcast instruction on a guest processor of a guest multiprocessing configuration

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
CSNA200401644001; 仮想計算機/エンタープライズ・システム体系 CPプログラミング・サービス リリース2.2 SC88-6085-03 第1刷, 199501, Pages:3〜7, 46〜47, 64〜65, 124〜125,, 日本・アイ・ビー・エム株式会社 *
JPN6014043508; 仮想計算機/エンタープライズ・システム体系 CPプログラミング・サービス リリース2.2 SC88-6085-03 第1刷, 199501, Pages:3〜7, 46〜47, 64〜65, 124〜125,, 日本・アイ・ビー・エム株式会社 *
JPN6014043510; Philip M. Wells, Gurinder S. Sohi: 'Serializing Instructions in System-Intensive Workloads : Amdahl's Law Strikes Again' Proceedings of 14th International Symposium on High Performance Computer Architecture (HPCA 2008) , 20080216, Pages:264-275, IEEE *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2017515203A (ja) * 2014-03-27 2017-06-08 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation コンピュータにおいて複数のスレッドをディスパッチするための方法、システム、およびコンピュータ・プログラム
JP2017534994A (ja) * 2014-11-18 2017-11-24 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation 複数の同時実行中スレッド間における共有可能リソースの排他的制御を管理するための方法、システム、およびコンピュータ・プログラム

Also Published As

Publication number Publication date
US8607032B2 (en) 2013-12-10
EP2430533B1 (en) 2019-12-25
CN102906699A (zh) 2013-01-30
US20110320661A1 (en) 2011-12-29
US8595469B2 (en) 2013-11-26
WO2011160718A1 (en) 2011-12-29
CN102906699B (zh) 2015-12-09
US20120216195A1 (en) 2012-08-23
JP5764206B2 (ja) 2015-08-12
US20140095840A1 (en) 2014-04-03
US9632780B2 (en) 2017-04-25
EP2430533A1 (en) 2012-03-21

Similar Documents

Publication Publication Date Title
JP5764206B2 (ja) 処理を逐次化するための診断命令を実行する方法、システム及びプログラム
JP5629373B2 (ja) コンピューティング環境においてアダプタへのアクセスを制御する方法、プログラム、および、コンピュータ・システム
JP5736044B2 (ja) アダプタに関する操作パラメータの選択的設定の制御
US9304916B2 (en) Page invalidation processing with setting of storage key to predefined value
JP5607825B2 (ja) コンピューティング環境のシステム・メモリの管理を容易にする方法、システム、コンピュータ・プログラム
TWI727607B (zh) 用於具有中斷表之經引導中斷虛擬化之方法、電腦系統及電腦程式產品
US8521964B2 (en) Reducing interprocessor communications pursuant to updating of a storage key
JP7335339B2 (ja) 有向割り込みの仮想化方法、システム、プログラム
JP5669938B2 (ja) コンピューティング環境のアダプタを使用可能にするための方法、システム、およびコンピュータ・プログラム
JP7450627B2 (ja) 実行中インジケータを使用した有向割り込みの仮想化方法、システム、プログラム
JP5680194B2 (ja) アダプタとの通信のためのロード命令
CN108334400B (zh) 为安全飞地管理存储器
JP5739524B2 (ja) アダプタと通信するための保存/保存ブロック命令
JP7448550B2 (ja) ブロッキング・インジケータを使用した有向割り込みの仮想化方法、システム、プログラム
US8918601B2 (en) Deferred page clearing in a multiprocessor computer system
KR20210107856A (ko) 지시된 인터럽트 가상화를 위한 인터럽트 시그널링
JP5934350B2 (ja) 結合ファシリティのオペレータ・メッセージ・バッファの管理
US8407701B2 (en) Facilitating quiesce operations within a logically partitioned computer system
JP2013536485A (ja) アダプタ割り込みのソース・タイプの識別
JP5995962B2 (ja) オペレータ・メッセージ開始コマンドの実行
JP6005149B2 (ja) 結合ファシリティを試験するためのオペレータ・メッセージ・コマンド
JP5911568B2 (ja) オペレータ・メッセージ・コマンドの結合ファシリティへの伝送
JP5995961B2 (ja) オペレータ・メッセージ・コマンドの処理

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20130806

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20140926

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20141014

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150114

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20150217

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150507

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: 20150526

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20150612

R150 Certificate of patent or registration of utility model

Ref document number: 5764206

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150