JP3701814B2 - マルチプロセッサ・システム及びそのシステム・シリアル化方法 - Google Patents
マルチプロセッサ・システム及びそのシステム・シリアル化方法 Download PDFInfo
- Publication number
- JP3701814B2 JP3701814B2 JP11473199A JP11473199A JP3701814B2 JP 3701814 B2 JP3701814 B2 JP 3701814B2 JP 11473199 A JP11473199 A JP 11473199A JP 11473199 A JP11473199 A JP 11473199A JP 3701814 B2 JP3701814 B2 JP 3701814B2
- Authority
- JP
- Japan
- Prior art keywords
- cpu
- processor
- request
- ipte
- controller
- 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.)
- Expired - Fee Related
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30076—Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
- G06F9/30087—Synchronisation or serialisation instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30047—Prefetch instructions; cache control instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/3017—Runtime instruction translation, e.g. macros
Description
【発明の属する技術分野】
本発明は、コンピュータ・マルチプロセッサに関するものであり、詳しく云えば、ミリモード・オペレーションを有するマルチプロセッサ・システム、及びページ・テーブル・エントリ無効化(Invalidate Page Table Entry−IPTE)及び記憶キー拡張設定(Set Storage Key Extended−SSKE)のためのオペレーションのような命令を実行する時に個々のプロセッサを早期にリリースすることによるそれらのシステム・シリアル化に関するものである。
【0002】
【従来の技術】
広く使用されているESA/390マルチプロセッサ・システムのCMOS実装版の開発を続けていると、互換性のある設計でもってパフォーマンスを改善する必要性に直面する。ESA/390アーキテクチャは、マルチプロセッサ・システムにおけるすべてのCPUにより見られるように、単一の時点で生じるように見えなければならない複数のオペレーションを含んでいる。これらのオペレーションは、主として、記憶アクセス制御情報を更新するために使用される。記憶アクセス制御情報は、一般に、この情報への高パフォーマンス・アクセスを行うためにCPUにおいてバッファ可能である。そのバッファされた情報は、多くの場合、1つのCPUにおける単一のESA/390命令の実行において何回も参照され得るし、ESA/390アーキテクチャは、その情報に対する変更がESA/390命令において生じるようには見えないことが必要である。
【0003】
システム・パフォーマンスに影響を与えるに十分なほど頻繁に使用される2つのオペレーションは、ページ・テーブル・エントリ無効化(IPTE)及び記憶キー拡張設定(SSKE)オペレーションである。パフォーマンスを改善するために、これらのオペレーションをもっと効率的に処理する方法が開発され、従って、これらの命令を使用するプログラムのシステム稼働時間を減少させることができるようになった。単一のCPU上でこれらの命令の1つを実行する過程において、4Kブロックの仮想記憶装置への動的アドレス変換(DAT)が無効にされるか(IPTE)、又は4Kブロックの実記憶装置へのアクセスを制御するために使用される記憶キーが変更される(SSKE)。これらの変更は、起点となるCPUにおける命令の実行の一部として、そのシステムにおけるすべてのCPUに送られなければならない。
【0004】
これらの命令に対するESA/390アーキテクチャの直接的なインプリメンテーションは、IPTE又はSSKE命令を実行するCPUが、ESA/390命令相互間の1つのポイントで、即ち、S/370ベースのシステムにおいて使用される通常の静止方法における静止ポイントで一時停止するように、システムにおける他のCPUに信号することである。すべてのCPUがそのようなポイントに達してしまうと、システムは「静止させられる」と云われ、第1のCPUは、必要な時に変換テーブル・エントリ又は記憶キーを自由に更新できる。システムが静止している間、第1のCPUは、変更が行われたことを他のCPUにも表示しなければならず、従って、第1のCPUだけでなく他のCPUも、その変更された情報のバッファされたすべてのコピーを更新又は廃棄することができる。これらのアクションがすべて完了すると、第1のCPUは他のCPUに、それらが処理を再開してもよいことを信号する。この方法は、数多くのS/370、370/ESA、及びESA/390インプリメンテーションにおいて使用されており、従って、「静止方法(quiesce method)」を呼ばれることもある。
【0005】
これとは別に、1996年8月13日に出願された米国特許出願番号08/689762号の未決出願において開示された最近のESA/390インプリメンテーションは注目すべきものであろう。その開示された発明は、1996年末に商業的に発売されたESA/390において使用された。その時、アドレス変換を遂行するためにすべてのプロセッサによって共通に使用されるメモリ内のテーブルを修正するIPTE(ページ・テーブル・エントリ無効化)及びSSKE(記憶キー拡張設定)のような命令を遂行するが開示された。そこでは、逐次に処理されなければならなかったIPTE及びSSKEのような命令をシリアル化するためにトークンが使用された。リクエストの後、或いは、プロセッサの1つからのリクエストに応答して、そのトークンがリクエスティング・プロセスに割り当てられ、従って、それは、前記命令の1つを実行する権利を持つ。その命令が複数のタスクより成る場合、その命令の最後のタスクが実行されるまで、トークンはロックされる。しかる後、トークンはロック解除され、他の命令に割り当て可能になる。
【0006】
プロセッサは、それがトークンを保持する場合、逐次に処理されなければならない命令の1つしか実行することできない。このトークン装置を持ったマルチプロセッサ・システムにおいて逐次に処理されなければならない命令をシリアル化する必要がある時、開始プロセッサにおける第1のタスクだけが開始可能である。開始プロセッサは、それがトークンを保持する場合、その第1のタスクしか実行することができず、或るプロセッサが使用可能である場合、トークンがそのプロセッサに割り当てられるようにするために、開始プロセッサによるそのトークンに対するリクエストが存在しなければならず、しかも、それが使用可能である場合、命令は逐次に実行可能である。その後は、トークンが必ずしも他のプロセッサにとって使用可能にはならないということによって、逐次に処理されるべき命令の第1タスクを完了した後、トークンを戻す必要がある。シリアル・タスクの完了後、逐次に処理されてしまった命令が完了した後にトークンの使用可能度の再確立がなければならない。
【0007】
それらの必要なステップに対する1つの欠点は、開始プロセッサによるプロセスの制御及び複雑なトークン受渡しによって、ESA/390システムにおけるプロセッサであって最近リリースされたCMOSプロセッサ・バージョンにおける個々のプロセッサの早期リリースを伴うシステム・シリアル化があり得ないということである。アドレス変換テーブルのエントリの内容を別々のレジスタに記憶し、しかる後、IPTE命令及びSSKE命令に対するそれまでのエントリを無効にすることは可能であるけれども、そのトークン・プロセスに対する商業的にインプリメントされ認識された代替方法は、すべてのプロセッサが実行を完了してしまうまで又はすべてのプロセッサがそれらの現在の命令を完了してしまうまで待つようにアドレス変換テーブルを修正する時、ESA/390システムの初期バージョンを含む前述のシステム370ベースのシステムにおいて通常使用される静止方法である。
【0008】
すべてのCPUが静止するのを待つこと(静止方法)の主たる欠点は、ESA/390命令相互間にある1つのポイントにCPUが達するに必要な時間がESA/390命令セットにおける複雑な且つ長時間実行の命令の存在のために非常に変わりやすいということである。
【0009】
多数のCPUを持ったシステムでは、そのシステムにおけるすべてのCPUがそのようなポイントに達するまでの平均時間が大きくなり得るし、最後のCPUがそのようなポイントに達するまですべてのCPUが待機している(如何なる有用な作業も行わない)という事実によって、システム・パフォーマンスに関する正味の影響が倍加される。このこと及びCPU相互間で必要とされる大量のハンドシェーキングは、そのような方法のパフォーマンスを魅力のないものにしている。
【0010】
既に使用されている(例えば、ES/9000 9021における)もう1つの方法は、先ず、IPTE又はSSKE命令を実行するCPUに変換テーブル又は記憶キーを変更させ、しかる後、他のすべてのCPUがESA/390命令相互間のポイントに達すると直ちに、それらのバッファされたコピーを更新又は廃棄するように他のすべてのCPUに信号することである。これは、CPU設計が、ESA/390命令が命令完了前の任意のポイントにおいて完全にヌル化されるようなものである場合にのみ可能である。この要件は、他のCPUが現在実行しようとしているESA/390命令の終わりにそれが達してしまう前に、変換テーブル又は記憶キーに対する変更が記憶アクセス例外条件を他のCPUにとって明らかなものにし得るという事実から生じる。この場合、他の何かが、そのCPUのバッファされた変更情報のコピーをその命令の間に廃棄(例えば、セット・アソシアティブ・ルックアサイド・バッファにおける置換)させる場合、CPUは、アクセス可能であることが予めわかっていたオペランドに関するアクセス例外を知ることがあり得る。
【0011】
ESA/390命令がこの時点でも依然としてヌル化可能である場合、すべて良好であるが、それがヌル化され得ない場合、CPUオペレーションはESA/390アーキテクチャを満たすことができない。この方法は直接的な方法よりもかなり良好なパフォーマンスを持つが、ESA/390命令の実行を通してヌル化の必要性を持つことになる。いずれにしても(例えば、実際的でない或いは順不同のシーケンスをサポートするために)このフィーチャを有するCPU設計では、これはIPTE及びSSKEにとって合理的な設計である。しかし、これらの命令に対するパフォーマンス上の利点だけでは、この程度の複雑さをCPU設計に加えることを正当化することができなかった。
【0012】
後者の方法の形式は、関連情報のバッファされたコピーがESA/390命令の過程で喪失されないことをCPU設計が保証できる場合にも可能である。これを希な事象にすることは難しくはないけれども、それを不可能にすることはCPU設計において大きな拘束を課するものであり、このことは、或る場合には再帰DATを必要とし、しかも中間の変換が変換ルックアサイド・バッファ(TLB)に保持されることを可能にするESA/390解釈実行アーキテクチャの場合には特に著しい。
【0013】
【発明が解決しようとする課題】
従って、後者の2つのインプリメンテーションのどちらに関する面倒なCPU設計要件も持たず、第1のインプリメンテーションのパフォーマンス・オーバヘッドを受けないESA/390 IPTE及びSSKEオペレーションのインプリメンテーションが望ましい。
【0014】
【課題を解決するための手段】
本発明は、他のすべてのプロセッサが割込みポイントに達するのを待つことなく、ESA/390システムにおけるCPUがIPTE及びSSKEオペレーションのローカル・バッファ更新部分を処理することを可能にし、しかも、IPTE又はSSKEオペレーションがグローバルに完了するまで、オペレーションに関するわずかな一時的制限でもってプログラム実行を継続することを可能にするコントローラを開示するものである。更に、これらのIPTE及びSSKEオペレーションが通常のシステム静止(即ち、すべてのプロセッサが共に一時停止しなければならない)を必要とする他のオペレーションと共存することを可能にし、しかもそのシステムにおけるいずれのCPUにおいてもオペレーションにおける任意のポイントでのCPU再試行アクションを可能にするライセンス内部コード(LIC)シーケンスが定義される。
【0015】
この解決方法は、他の高パフォーマンス設計が必要とするようなCPU設計全体に関する要件を課することなく、既知の最善のインプリメンテーションに近いパフォーマンス、及び、多くの場合、それに等しいパフォーマンスを達成する。
【0016】
【発明の実施の形態】
本発明の望ましい実施例を詳細に考察する前に、例証として前述のような説明を行うことも有効であろう。
【0017】
本発明の更に詳細な説明に転ずると、本発明の望ましい実施例においては、図1に示されたハードウエアが使用されることがわかるであろう。それは、IBM社のエンタープライズ・システム・アーキテクチャ/390(Enterprise Systems Architecture/390)、又は、ESA/390 S/390システム・アーキテクチャ(いずれも、米国ニューヨーク州アーモンクのインターナショナル・ビジネス・マシーンズ・コーポレーションの商標)に一般的に適合するシステムのコンテキスト全体に適用可能である。そのようなS/390システム・プロセッサの通常のエレメントに関する初期の詳細な説明は、例えば、本発明と同じ譲受人に譲渡された米国特許第4,901,233号において見ることができる。また、ミリモード・オペレーションのための現在の静止方法が米国特許第5 , 694 , 617号に開示されている。
【0018】
望ましいインプリメンテーションでは、通常の静止シーケンスは、そのシーケンス内で生じるCPU再試行のためのサポートを含むものであり、それは1992年12月2日発行の「ミリモード・オペレーションを持ったマルチプロセシング・システムにおいて静止リクエストを優先順位付け、静止状態から回復させるためのシステム(System for Prioritizing Quiesce Requests and Recovering from a Quiescent State in a Multiprocessing System with a Milli-mode Operation)」と題した C.F. Webb 他による米国特許第5,694,617号に開示されているようなシーケンスであり、再試行トラップ機構は、1997年9月30日発行の「ミリコード化されたプロセッサのためのハードウエア再試行トラップ(Hardware Retry Trap for Millicoded Processor)」と題した C.F. Webb 他による米国特許第5,673,391号に開示されている。上記の米国特許及びそれら関連のESA/390アプリケーションは、本願では、ミリコード化されたプロセッサのためのミリモードの使用を説明するものとして示される。マルチプロセシング・システムは、すべてのプロセッサが共に一時停止する静止ポイントに他のすべてのプロセッサが達するのを待つことなく、ページ・テーブル・エントリ無効化(IPTE)オペレーション及び記憶キー拡張設定(SSKE)オペレーションを行っている間、本発明の望ましい実施例に適用可能である。
【0019】
次に、図1を参照すると、この好適なシステムにおいて使用される静止オペレーションに関連するシステムのエレメントは、後述のような変更を伴うけれども、米国特許第5,694,617号における前述の基本エレメントを依然として含んでいる。従って、図1に示されるような総合的なシステムは、システム記憶装置11及び或る種のキャッシュ・メモリ・ユニット12を含む階層メモリを提供する。システム記憶装置11は、プロセッサが実行しようとする命令及びそれらの命令が操作しようとするデータを含んでいる。キャッシュ・メモリ・ユニット12は、プロセッサが現在実行しつつあるデータ及び命令のコピーを含み、この望ましい実施例では、インターリーブド・ダブルワード・アドレシングを行うスプリット・キャッシュである。キャッシュ・メモリ・ユニット12は、論理的には、連続的にアドレス可能な読取専用記憶装置(ROS)13を含み、そこには、或る頻繁に呼び出されたミリモード・ルーチンを実行するためのコードが記憶される。
【0020】
命令ユニット・サブシステム16は、命令バッファ(図1には示されてない)、命令レジスタ18、及び命令デコーダ20を含む。その命令ユニット・サブシステムはキャッシュ・メモリ・ユニット12からマクロ命令、ミリコード命令、及びデータを受け取る。命令は解析され、命令レジスタ18に入れられる。命令デコーダ20は命令レジスタ18の内容を読み取り、その命令をデコードし(又は、オペレーション例外を生じさせ)、ハードウエア実行ユニット24による逐次実行のためにその命令を命令キューに送る。各ハードウエア実行ユニット24は、正規のマクロ・コード命令実行のための一組の汎用レジスタ(GR)及びアクセス・レジスタ(AR)21、並びに、ミリコード命令実行のための一組の汎用レジスタ(GR)及びアクセス・レジスタ(AR)23へのアクセスを有する。制御ロジックは、ミリコード・ルーチンを開始又は完了する時にそれら二組のレジスタ相互間のデータ交換を制御する。ミリモード検出ロジック26は命令レジスタに結合され、デコードされつつあるマクロ命令がミリモード・オペレーションにおいて解釈されるべきタイプのものである時を検出する。これが生じる時、ミリモード検出ロジック26はエントリ・ポイント・アドレスを発生し、このアドレスを命令フェッチ制御ロジック35に送り、しかも命令デコーダ20をミリモード動作状態にする。この状態において、命令デコーダ20はミリモード命令をデコードすることを可能にされる。
【0021】
ミリモード命令は、正規のマイクロコード命令と特別のミリモードのみの命令とを混合したものより成る垂直マイクロコードである。それらの命令はすべて実行ユニット24において実行可能である。それらの特別の命令は、ミリコード・ルーチンが必要とする制御機能を与える。ミリコード・ルーチンのセットはプログラム・アドレス可能な記憶装置の外にある。実行された命令のシステム効果は体系的には完了ロジック30において可視的である。完了ロジック30及び命令デコーダ20の間の信号線は、命令デコーダ20が命令完了を追跡することを可能にする。レジスタ31におけるプログラム・ステータス・ワード(PSW)はマクロ・プログラムの実行を制御する。同様に、そのシステムは、ミリコード・ルーチンの実行を制御するミリPSWレジスタ33も含む。実行ユニット24及び完了ロジック30の両方とも、PSWレジスタ31及びミリPSWレジスタ33から読み取るように及びそれらのレジスタに書き込むように接続される。従って、任意の所与の時点で、実行ユニット又は完了ロジックは、PSWレジスタ及び(又は)ミリPSWレジスタのうちの適切な方を読み取ること又は更新することができる。
【0022】
プロセッサ状態ユニット40は、正規モード・オペレーション及びミリモード・オペレーションの両方におけるその設計されたシステムの更新されたステータス全体を保持する。エラーが検出された場合、プロセッサ状態ユニット40は、エラーの原因となるオペレーションの再試行を可能にするために、システムのステータスをチェック・ポイント状態から再作成するための資源を提供する。ミリモードは、デコードされつつあるマクロ命令がミリコードと共にインプリメントされるべきであることをミリモード検出ロジック26が認識する時にイネーブルされる。この認識に応答して、ミリモード検出ロジック26は、命令デコーダ20、命令フェッチ制御ロジック35、及び実行ユニット24におけるレジスタ・コントローラに信号を送る。ミリモード検出ロジック26からのミリモード認識信号に応答して、命令デコーダ20はマクロモード・デコーディングを中断し、実行ユニット24のレジスタ・コントローラはGPR21の内容をミリ・レジスタ23にコピーして、システムにその後はミリ・レジスタ23を使用させる。ミリモード検出ロジック26はミリコード・エントリ・ポイント・アドレスを発生する。そのエントリ・ポイント・アドレス(ミリモード検出ロジック26によって発生された)は、キャッシュ・ユニット12をアドレスするために命令フェッチ制御ロジック35によって使用される。キャッシュ・ユニット12からのミリ命令は命令レジスタ18に送られ、そこで、命令デコーダ20はそれらをデコードし、そして実行のためにそれらをスケジュールする。
【0023】
プロセッサがミリモードに入る時、それは、概念的には、そのミリモードへ入らせた命令の前のそのパイプラインにおけるマクロ命令を既に実行し、そして完了している。プロセッサがマクロ命令を完了する時、それは適切なGPRを更新する。同時に、プロセッサは、ミリモードに入らせたマクロ命令をインプリメントするミリ命令をデコードし、そして実行する。或る時点で、ミリモードに入らせた命令の直前のマクロ命令は、完了ロジック30において完了したことを表示されるであろう。その後しか、プロセッサはミリ命令を完了し始めることをしない。そこで、プロセッサはミリ命令のデコード、実行、及び完了を継続する。最終的に、検出ロジック26はミリコード終了(MEND)ミリ命令を認識する。ミリモード検出ロジック26がMENDミリ命令を検出する時、それはプロセッサにミリ命令のフェッチをやめさせる。更に、MENDが検出される時、ミリモード検出ロジックは命令デコーダ20をマクロモードにし、プロセッサにマクロ命令のフェッチを始めさせる。ミリコードはすべてのレジスタを明示的に更新し、従って、ミリモード・オペレーションから正規のオペレーションに進む時にはレジスタ内容の転送はない。MENDミリ命令の完了はプロセッサの完了ロジックにマクロ命令の完了を始めさせる。
【0024】
プロセッサは割込みに応答してミリモードに入ることもできる。完了ロジック30が割込みを検出する時、割込み優先順位ロジック45は割込みがサービスされるべきであることを決定し、命令フェッチ・ユニット35に信号を送って、デコーダにミリモードを開始させる。割込み状態の認識は次の割込みポイントでプロセッサにマクロモード実行を停止させる。この割込み優先順位ロジック45は、キャッシュをアドレスするためのエントリ・ポイント・アドレスを発生するために、ミリモード検出ロジック26によって使用される制御入力も発生する。これらのミリ命令は命令レジスタに送られる。そこで、デコーダはそれらをデコードし、適正なハードウエア実行エレメントにおいて実行するようにそれらをスケジュールする。プロセッサは、割込みのためのミリルーチンにおけるミリ命令をデコードし、実行し、及び完了するように進行する。最終的には、デコーダはMENDミリ命令を認識する。これは、デコーダにミリモードにおけるデコードを停止させる。サービスを必要とする更なる割込みがあるかどうかに従って、デコーダのハードウエアは割込みプロセスを再実行するか或いはキャッシュ・ユニットからのマクロ命令のデコードに戻るであろう。
【0025】
今や、静止オペレーションに関するプロセッサ相互間のコミュニケーションのためのコマンド、即ち、「静止セット」及び「静止リセット」が与えられることを、本願において前述の米国特許第5,694,617号よりももっと詳細に再び記述する必要はないであろう。「静止セット」は、他のすべてのプロセッサが「静止」状態に入ることを表すために、プロセッサによって発生される。「静止リセット」は、前に静止セットを発生し、今では静止状態が必要とされたオペレーションを完了したプロセッサによって発生される。これらのコマンドは、そのコマンドを送ろうとしているプロセッサの識別情報(プロセッサ番号)を含まなければならない。これらは、前述のように、そのシステムにおけるすべてのプロセッサによって受け取られ、処理される。ミリコード・ルーチンは静止割込みを処理し、そのシステムにおけるすべてのプロセッサを静止状態に入らせる。ミリコード制御レジスタの1つのビットは静止状態を表し、プロセッサの出力を駆動して、そのプロセッサが静止状態にあることを表示させる。プロセッサは、そのシステムにおけるすべてのプロセッサが静止状態にあることを表す信号を受け取り、この値をラッチする。このラッチの出力はミリコード・ブランチ状態として使用するためにプロセッサの命令ユニットに送られる。従って、ハードウエア制御の実行ユニットにおいて単純な命令セットを実行するパイプライン・マルチプロセッサは、ミリモード設計された状態における複雑な命令セットを、単純な命令のミリコード・シーケンスでもってハードウエア制御の実行ユニットにおいて実行する。
【0026】
複数のプロセッサの各々が静止リクエストを発生することができるマルチプロセシング・システムにおいて静止リクエストに応答するために、プロセスは、1つ又は複数のプロセッサから静止リクエストを受け取ったことを表すべく、複数のプロセッサの各々における静止リクエスト・レジスタをセットする。そのシステムにおける各プロセッサがこのリクエストに応答する時、それは、それが静止済み状態にあることを表すミリコード制御レジスタ・ビットをセットし、プロセッサが再試行オペレーションを完了したかどうかを表すラッチをリセットする。しかる後、それは、静止リクエスト・レジスタがクリアされて、すべてのリクエスティング・プロセッサが静止オペレーションを完了したことを表すのを待つ。再試行オペレーションを表すラッチがその時点でセットされない場合、プロセッサはそのレジスタ・ビットをリセットして、それが静止状態にあることを表示させ、正規のオペレーションを再開する。再試行オペレーションを表すラッチがセットされる場合、プロセッサはシステム静止表示がリセットされるのを待ち、少なくとも1つ他のプロセッサが静止オペレーションを表すそれのレジスタ・ビットをリセットしたことを表示させ、しかる後、それ自身の静止オペレーション・レジスタ・ビットをリセットし、正規のオペレーションを再開する。これは、現在のミリモード・オペレーションの正規の静止方法である。
【0027】
本発明に従って、ESA/390システムにおけるCPUが、他のすべてのプロセッサが割込みポイントに達するのを待つことなく、IPTE及びSSKEオペレーションのローカル・バッファ更新部分を処理することを可能にし、しかる後、IPTE又はSSKEオペレーションがグローバルに完了するまで、オペレーションに関するわずかな一時的制限でもってプログラム実行を継続することを可能にするコントローラを紹介することにする。各CPUが記憶制御ユニット(SC)に対するインターフェースを持つことによって、そのSCにおける集中制御が使用される。他の制御構成も可能であるが、本発明に対しては、幾つかの論理的に集中した制御ポイントが必要とされる。この説明では、IPTE又はSSKE命令を実行しようとしているCPUはCPUX として表され、そのシステムにおける他のCPUはCPUY として表される。これらの指定方法は任意である。そのシステムにおけるいずれのCPUもIPTE又はSSKE命令を実行することができ、そのシステムには任意の数のCPUが存在し得る。
【0028】
本発明では、CPUにおける新たな制御状態が加えられる。その状態では、システム・シリアル化機能によって更新される可能性を持った如何なる情報をアクセスするオペレーションも許されない。IPTEに関して、これは記憶装置におけるページ・テーブル・エントリをアクセスすることになるDATを行わないことを意味する。SSKEに関しては、これは、アクセス例外に関してテストするために、又は記憶キーを明示的にアクセスするESA/390命令を実行するために、記憶キーがアクセスされることはないことを意味する。この状態にある間、IPTE又はSSKE命令によって影響されるエントリが既にバッファから無効にされているものと仮定すると、CPUは、この情報に関するそれのローカル的にバッファされたコピーしかアクセスすることを許されない。望ましいインプリメンテーションでは、記憶キーはTLBにおいてバッファされ、IPTE命令が進行中であることによる制限と、SSKE命令が進行中であることによる制限との間の区別は行われない。
【0029】
別のインプリメンテーションでは、これらは区別され得るものであり、この制御状態にある間のCPUオペレーションにおけるインパクトを減少させるようにアドレス又は他の修飾子によって制限を更に緩和することができるであろう。この説明では、このCPU制御状態は「IPTE/SSKE制限モード」として表される。ESA/390アーキテクチャは、ページ・テーブル・エントリに対する直接的なオペランド参照(DATの過程で行われる参照とは対照的な参照)を、IPTE命令が暗示するシステム・シリアル化に関係なく許容するということ、システムシリアル化は影響を受けるTLBエントリのすべてのCPUによる使用のみに関するものであること、及びIPTE命令を実行するCPU以外のCPUは必ずしもCPUシリアル化オペレーションを遂行しないことをESA/390は明瞭に述べているということに注意してほしい。
【0030】
次に、図2を参照して、本発明に関するハードウエア制御機構を説明することにする。図2は、CPU、即ち、CPUX 210及びCPUY 211、並びに、記憶装置コントローラSC212を示す。記憶装置コントローラにおける一組のシリアル化コントローラ220は一時に1つのIPTE又はSSKEオペレーションしか進行しないことを保証し、そのオペレーションに関するシーケンスをモニタする。各CPUにおけるLICはインターフェース231を有し、そのインターフェースによって、それは、取られるべきアクションを指定する「制御」コマンドをSC212に送ることができ、SC212から応答バス232を介して情報を戻す「センス」コマンドを送ることもできる。この応答バス232は、「制御」コマンドに関するコマンド・ステータスをコミュニケートするためにも使用され、システム・シリアル化コントローラ220によってセットされるだけでなく、SC212における複数のソースからもセット可能である。特に、CPUは、SC212におけるシステム・シリアル化コントローラ220の状態をセンスするためにこのインターフェースを使用することができる。IPTE又はSSKEシーケンスでは、これらのシステム・シリアル化コントローラ220の進行は次のような状態シーケンスに従う。
・ アイドル
・ ブロードキャスト送信済み
・ 全CPU開始済み
・ アイドル
このシーケンスに関しては後で更に詳しく説明することにする。
【0031】
SCが各CPUにコマンド送ることができるインターフェース233も存在する。これは、システム・シリアル化コントローラ220を含むSC212における複数のソースからも制御可能である。このバスを介して送られたコマンドは、ローカル的にバッファされた情報がIPTE又はSSKEオペレーションによって無効にされなければならないことを指定するコマンドを含む。そのようなコマンドは、一般に、仮想ページ・アドレス又は実ページ・アドレスのどちらがIPTE又はSSKEオペレーションによって影響されるかを表すアドレス情報によって修正される。そのような無効化コマンドをCPUが受け取る時、それは、CPUがESA/390命令相互間の或るポイントに達するまで未処理のまま保持されなければならない。
【0032】
望ましいインプリメンテーションでは、これらのコマンドは各CPUにおける割込みコントローラ241及びキャッシュ・コントローラ242の両方によって認識される。そのようなコマンドが未処理である時、割込みコントローラ241は、それが次の割込み可能なポイント(即ち、ESA/390命令相互間のポイントであり、しかも未処理の更に高い優先順位の割込みがない場合)においてプログラム命令処理を実行コントローラ243に中断させる時に取られる内部割込みをCPUにおいてに未処理にさせる。この割込みに応答して、実行コントローラ243はLICルーチンを呼び出す。そのLICルーチンは、キャッシュ・コントローラ242がその未処理のコマンドを処理してIPTE又はSSKEオペレーションのためのローカル的にバッファされた情報を無効化することが許可可能であることを表す「ブロードキャスト・オペレーション許可済み」ラッチ244をセットする。望ましいインプリメンテーションでは、その無効化は、指定されたIPTE又はSSKEオペレーションによって影響されるいずれのエントリもTLBから除去するという形式を取る。
【0033】
CPUX 210がIPTE又はSSKE命令を実行する時、それはIPTE静止(IPTEQ)コマンド又はSSKE静止(SSKEQ)コマンドをインターフェース231を介してSC、即ち、適正なアドレス情報によって修正された修正SC212に送る。システム・シリアル化コントローラ220が既にビジーである場合、そのコマンドはSC応答バス232上の信号を介して拒否され、実行コントローラ243にIPTE又はSSKE命令を無効化させ、それを再始動させる。(これは進行中のIPTE又はSSKEに対する割込みがこのCPUにおいて取られることを可能にする)。そうでない場合、SC212はインターフェース233を介してIPTE又はSSKE命令をすべてのCPU(CPUX を含む)にブロードキャストし、システム・シリアル化コントローラ220は「アイドル」状態から「ブロードキャスト送信済み」状態に移行する。
【0034】
各CPUは、LICが(実行コントローラ243を介して)「ブロードキャスト・オペレーション許可済み」ラッチ244をオンにするまで、それのキャッシュ・コントローラ242においてIPTEQ又はSSKEQリクエストを未処理に保持する。(CPUX では、割込みはESA/390命令の間許可されないので、これはIPTE又はSSKE命令に対するLICによってオンにされる)。そこで、キャッシュ・コントローラ242は、IPTE又はSSKEオペレーションによって影響される可能性のあるすべてのエントリをTLBから除去するための適正なシーケンスを開始する。又、この時点で、CPUハードウエアは、それがIPTEQコマンド又はSSKEQコマンドの処理を開始したことを表すコマンド(「ブローキャスト・オペレーション開始済み」コマンド)をSC212に送る。SC212におけるシステム・シリアル化コントローラ220は各CPUから「ブロードキャスト・オペレーション開始済み」応答を収集し、そして、すべてのCPUが応答してしまった時、システム・シリアル化コントローラ220は「ブロードキャスト送信済み」状態から「全CPU開始済み」状態に移行する。
【0035】
一旦所与のCPUY 211が「ブロードキャスト・オペレーション開始済み」を信号してしまうと、そのCPUは「IPTE/SSKE制限モード」のオペレーションに入る。望ましいインプリメンテーションでは、これはSC212から、以下のような場合にアクティブである各CPU211に1つの信号234を供給することによって達成される。即ち、
・ システム・シリアル化コントローラ220が「ブロードキャスト送信済み」状態又は「全CPU開始済み」状態にある場合、
・ そのCPU211が「ブロードキャスト・オペレーション開始済み」を信号された場合。
【0036】
CPUX 210は「IPTE/SSKE制限モード」に入らないことに注意してほしい。これは、CPUX 210に対するSC212からの信号234をブロックすることによって、又はIPTE命令又はSSKE命令が実行されようとしているという事実に基づいてCPUX 210にこの信号234を無視させることによって達成可能である。
【0037】
CPUY 211がIPTEQ又はSSKEQコマンドの処理を完了した後、それは割込みポイントで、しかし、「IPTE/SSKE制限モード」のオペレーションで正規の命令処理を再開する。このモードにある間、キャッシュ・コントローラ242は、依然として進行中のIPTE又はSSKE命令によって影響される(又は、影響されることがある)情報を必要とするいずれの記憶装置アクセスもブロックする。望ましいインプリメンテーションでは、変換テーブルへの如何なるアクセスも、或いはTLBにおいて見つからない記憶キー情報はブロックされる。別のインプリメンテーションでは、この制限は、進行中のシリアル化オペレーションのタイプに基づいて変換テーブル(IPTE)と記憶キー(SSKE)との間を区別することにより更に緩和可能である。それは、記憶装置アクセスと進行中のIPTE又はSSKE命令に関連した他の修飾子とによっても制限されることがある。CPUにプログラム割込みを取らせるのではなく、障害を生じた命令を再実行させる特別のタイプのアクセス例外のレポーティングを含む、このアクセスをブロックするための種々の方法が可能である。「IPTE/SSKE制限モード」にある間にそのような記憶装置アクセスが遭遇すると、このモードを表すSC212からの信号234がインアクティブになるまで、CPUはプログラムを進行することができないであろう。
【0038】
CPUX 210では、IPTE又はSSKE命令に対するLICは、システム・シリアル化コントローラ220が「全CPU開始済み」モードに達するのを待って、センス・コマンドを介してこれらのコントローラをポーリングし、その状態を決定する。一旦この状態に達してしまうと、変更されるべき情報を使用しようとするCPUはあり得ないことが知られている。そこで、CPUX 210におけるLICはその情報を更新し、記憶装置におけるページ・テーブル・エントリ又は適正なハードウエア構造における記憶キーを変更する。この更新の完了後、CPUX 210におけるLICは、コマンド(ブロードキャスト・オペレーション完了)をSC212に送る。このコマンドに応答して、システム・シリアル化コントローラ220は「全CPU開始済み」状態から「アイドル」状態に移行する。これは、すべてのCPU211への信号234をオフにして「IPTE/SSKE制限モード」を解除し、すべてのCPU211が制限のないオペレーションを再開することを可能にする。(別の方法としては、SC212が「ブローキャスト・オペレーション完了」コマンドをすべてのCPU211に送って、各CPUにそれの「IPTE/SSKE制限モード」表示をオフにさせる。前者のインプリメンテーションは、CPUエラーからの回復と関係があるという理由で望ましい)。
【0039】
(A)CPU再試行サポート
本発明の更なる特徴は、システム・シリアル化オペレーションにおけるCPU再試行アクションを許容することである。このために、CPU設計は、SC又は他のCPUによる介入なしに、ハードウエア・エラーを検出する機能、既知の良好なCPUハードウエア状態に戻る機能、及びLIC又はESA/390命令の処理を再開する機能を含むものと仮定する。(これらのアクションのセットは、集合的には、CPU再試行として知られている)。TLBにおいてバッファされたすべての情報が、CPU再試行を生じさせたハードウエア障害によって破壊される可能性のあるものなので、CPU再試行の一部として廃棄される。これは、CPU再試行機能とシステム・シリアル化機能との共通点にとってきわめて重要である。更に、ここでは、CPU再試行が何らかの信号発生手段によってSCに表示されるものと仮定する。いずれにしても、これは、再試行オペレーションの間そのCPUをSCから「隔絶する」ために一般に必要である。
【0040】
一般に、CPU再試行は、その時実行されているプログラム又はLICにとって透明である。しかし、CPU再試行中にそれに送られたコマンドをCPUが喪失するということが起こり得る。これはIPTEQコマンド及びSSKEQコマンドを含む。これを許容するためには、システム・シリアル化コントローラ220は、如何なるCPUY 211からの「CPU再試行」表示も、あたかもそのCPUY 211が「ブロードキャスト・オペレーション開始済み」を信号したかのごとく処理しなければならない。これは、CPU再試行アクションが、IPTE又はSSKEコマンドのために必要とされる部分的TLBのスーパセットであるので、許容可能である。システム・シリアル化機能が完了する前にCPUY 211がCPU再試行オペレーションを完了する場合(これは、一般的にはありそうもないことであるが)、CPUY 211は、システム・シリアル化機能が完了するまで、CPU再試行に続いて「IPTE/SSKE制限モード」にあるであろう。
【0041】
CPUX 210におけるLICは、CPU再試行に続いてIPTEオペレーション又はSSKEオペレーションを単に継続するだけであると思われるので、再試行を行うCPUがCPUX 210である場合、更なるSCアクションは必要ない。この場合、他のすべてのCPUはこの時間全体の間「IPTE/SSKE制限モード」にあるであろう。
【0042】
CPUが、回復することのできないハードウエア・エラーに遭遇する場合、そのCPUはチェック・ストップ状態に入り、これがSC212に表示される。SC212におけるシステム・シリアル化コントローラ220は、いずれのチェック・ストップしたCPUも、いつもすべてのIPTEコマンド又はSSKEコマンドに直ちに応答していたものと見なすであろう。CPUX 210がシステム・シリアル化シーケンス中にチェック・ストップ状態に入る場合、システム・シリアル化コントローラ220は、CPUX 210からの「ブロードキャスト・オペレーション完了」信号を待つことなく、それらのコントローラが「全CPU開始済み」状態に達した直後に「アイドル」状態に移行する。
【0043】
IPTE又はSSKE命令に関するCPUX におけるLICでは、そのIPTE又はSSKE命令がSCに送られつつある時間にCPU再試行がそのCPUにおいて生じる可能性に関する対策がとられなければならない。この場合、システム・シリアル化コントローラ220が既にビジーであるようにLICには見えることにより、CPU再試行の結果として、IPTEQ又はSSKEQコマンドが2回送られることがあり得る。これが「ビジー」表示の原因であることを考慮して、1つのコマンドが与えられる。そのコマンドによって、LICは、システム・シリアル化コントローラ220の状態及び現在処理されつつあるIPTEQ又はSSKEQコマンドを送ったCPUに対するCPU識別子をセンスすることができる。そこで、これはこのCPUに対するCPU識別子に比較され、これがCPU再試行によるその「擬似のビジー」であるかどうかを決定することができる。これが「擬似のビジー」である場合、LICはIPTEシーケンス又はSSKEシーケンスを継続することができる。IPTEコマンド又はSSKEコマンドに対する「ビジー」応答のすべてのケースに関するこのチェックのオーバヘッドを回避するために、CPUX 210におけるLICは、CPU再試行がこのCPUにおいて所与のタイム・ウインドウ内に実際に生じたかどうかを表す機構を利用してもよい。(「ミリコード化されたプロセッサのためのハードウエア再試行トラップ(Hardware Retry Trap for Millicoded Processor)」と題した米国特許第5,673,391号参照)。
【0044】
(B)通常の静止機構との共通点
IPTE及びSSKEオペレーションの他に、ESA/390システムにおける他のオペレーションは、プロセッサにおいてバッファされた情報に関係なく、すべてのプロセッサに対して1つのアクションが単一の時点で生じたように見えるということを時々必要とする。これらはIPTE及びSSKEオペレーションよりもずっと少ない頻度のものであるので、通常の「直接的な」インプリメンテーション(すべてのCPUが一時停止するのを待ち、その機能を遂行し、すべてのCPUを解放する)と関連したパフォーマンスは受容し得るものであり、IPTEコマンド及びSSKEコマンドと関連した複雑さは正当化されない。更に、1つのCPUがシステム・シリアル化コントローラ220からの「ビジー」表示により常にIPTE又はSSKEオペレーションの実行が阻止されるようにすることは、少なくとも原理的には可能である。なお、その「ビジー」表示は、IPTE命令及びSSKE命令の密な集合がそのシステムにおける他のCPU上で実行されることによるものである。この場合、通常の静止シーケンスに戻ってCPUがそれのプログラムを前進させることを保証するように、そのCPUにおけるLICを書くことも可能である。
【0045】
本発明の望ましい実施例では、通常の形式のシステム・シリアル化及び現在望ましい形式のシステム・シリアル化の両方がシステムに同時に存在することが可能にされる。LICは、CPUが「ブロードキャスト・オペレーション許可済み」ラッチ244をセットする時にいつも、そのCPUが「静止」状態にあることを表すラッチ245をセットし、その逆も同様である。IPTE又はSSKEに対するLICは、システム・シリアル化コントローラ220が「全CPU開始済み」状態にあることを決定した後にすべての未処理の一般的な静止リクエストが処理されるのを待ち、しかる後、変換テーブル又は記憶装置キーを更新する前に「静止」ラッチ245をオフにする。静止割込み及び通常の静止オペレーションを処理するLICは、「静止」ラッチ245をオフにした後に「ブロードキャスト・オペレーション許可済み」ラッチ244をオフにする。更に、通常の静止シーケンスを遂行すると思われるLICは、CPUが「IPTE/SSKE制限モード」にある間、このシーケンスを開始してはならない。これらの変更は、そのシステムでは一時に1つのIPTEオペレーション又はSSKEオペレーションしか進行状態にあることを許されないという事実と共に、両タイプのシステム・シリアル化オペレーションが如何なる矛盾もなく完了することができることを保証する。
【0046】
(C)システム・シリアル化制御シーケンス
図3における流れ図は、システム・シリアル化コントローラ220によって実施される状態シーケンスを示す。これらのコントローラはアイドル状態310にあり、新たなシステム・シリアル化リクエストに関してそのシステムにおけるすべてのCPUからのコマンド・インターフェース231をモニタする(判断ステップ311)。そのようなコマンドが認識される時、システム・シリアル化コントローラ220はコマンド・インターフェース233を介してすべてのCPUにこのコマンドをブロードキャストし(ステップ312)、しかる後「ブロードキャスト送信済み」状態320に入る。それが「ブロードキャスト送信済み」状態にある間、如何なる新たなシステム・シリアル化リクエスト(判断ステップ321)も、その新たなリクエストを送ったCPUへのSC応答バス232を介して拒否されるであろう(ステップ322)。それは、如何なる時点でも1つのそのようなリクエストしか進行状態になり得ないためである。更に、それが「ブロードキャスト送信済み」状態にある間、システム・シリアル化コントローラ220は「ブロードキャスト・オペレーション開始済み」コマンドに関してすべてのCPUからのコマンド・インターフェース231をモニタする。そのような各コマンドが認識される時(判断ステップ323)、そのCPUに対するシステム・シリアル化状態がこれを反映するように更新される(ステップ324)。更に、そのCPUが、システム・シリアル化オペレーションを処理することを最初にリクエストしたCPUでない場合(判断ステップ325)、そのCPUに対して「IPTE/SSKE制限モード」状態がセットされる(ステップ326)。この状態は制御信号234を介して各CPUに反映される。
【0047】
一旦そのシステムにおける各CPUからの「ブロードキャスト・オペレーション開始済み」コマンドが受け取られると(判断ステップ327)、システム・シリアル化コントローラ220は「全CPU開始済み」状態330に入る。それが「全CPU開始済み」状態にある間、如何なる新たなシステム・シリアル化リクエスト(判断ステップ331)も、その新たなリクエストを送ったCPUへのSC応答バス232を介して拒否されるであろう(ステップ332)。それは、如何なる時点でも1つのそのようなリクエストしか進行状態になり得ないためである。更に、それが「全CPU開始済み」状態にある間、システム・シリアル化コントローラ220は、「ブロードキャスト・オペレーション完了」コマンドに関するシステム・シリアル化オペレーションを最初にリクエストしたCPUからのコマンド・インターフェース231をモニタする。そのような各コマンドが認識される時(判断ステップ333)、システム・シリアル化コントローラ220はすべてのCPUに対する「IPTE/SSKE制限モード」状態をリセットする(ステップ334)。この状態は制御信号234を介してCPUに反映される。そこで、システム・シリアル化コントローラ220は「アイドル」状態310に戻る。
【0048】
(D)内部コード・シーケンス
図4における流れ図は、システム・シリアル化オペレーションのためのライセンス内部コード(LIC)によって行われるシーケンスを示す。望ましいインプリメンテーションでは、このLICはミリコードの形式のものである。
【0049】
IPTE命令又はSSKE命令を実行するために、LICはステップ400において開始する。LICは、このCPUにおける前のオペレーションすべてが完了するまで待機し(判断ステップ401)、しかる後、ステップ410においてシステム・シリアル化コマンドをSCに送る。このコマンドに対する応答は判断ステップ411において分析される。システム・シリアル化コントローラ220が既にビジーであるためにそのコマンドが拒否される場合、LICはステップ412においてIPTE命令又はSSKE命令をヌル化し、ステップ413においてオペレーションを完了する。これは、既に進行中であるシステム・シリアル化機能のために、このCPUにおいて割込みが取られることを可能にする。CPUが再試行オペレーションを完了していることをその応答が表す場合、LICはSCにおけるシステム・シリアル化コントローラの状態を読み取り(ステップ414)、このCPUがそれらのコントローラをビジーにしているCPUであるかどうか知るためのチェックを行う(判断ステップ415)。これは、CPU再試行事象が、コマンドを送出した後であるがSCから応答を受け取る前に生じた場合のことである。事実はそうではない場合(即ち、システム・シリアル化コントローラがビジーでないか又は別のCPUにとってはビジーである場合)、LICはステップ410に戻り、システム・シリアル化コマンドをSCに再発生する。ステップ411において分析されたSC応答が、そのコマンドを受け付けるということである場合、又はシステム・シリアル化コントローラがこのCPUからのコマンドを実際に処理しようとしていることがステップ415において決定される場合、LICはそのシーケンスの次の部分に進む。
【0050】
ステップ420において、LICはこのCPUに対して「ブロードキャスト・オペレーション許可済み」ラッチ及び「CPU静止」ラッチの両方をセットする。しかる後、LICは、CPUハードウエアがIPTEオペレーション又はSSKEオペレーションに関してローカルTLBを処理するのを待つ(判断ステップ421)。それは、このCPUにおいて最早そのような未処理のオペレーションが存在しないことによって表される。しかる後,LICは「ブロードキャスト・オペレーション許可済み」ラッチをリセットし(ステップ422)、そのSCにおけるシステム・シリアル化コントローラのポーリングを開始し、これらのコントローラのステータスを反復的に読み取り(ステップ423)、それらのコントローラが「全CPU開始済み」状態に入っているかどうかを決定するためにその応答をチェックする(判断ステップ424)。一旦システム・シリアル化コントローラがその状態に達してしまうと、LICは、IPTEオペレーション又はSSKEオペレーションによって必要とされるグローバル資源更新を行う(ステップ425)。即ち、ページ・テーブル・エントリが記憶装置において無効にされるか(IPTE)、又は記憶キーが更新される(SSKE)。
【0051】
次に,LICは「ブロードキャスト・オペレーション完了」コマンドをSCに発生する(ステップ430)。CPU再試行事象が生じたことをこのコマンドからの応答が表す場合(判断ステップ431)、LICはSCにおけるシステム・シリアル化コントローラのステータスを読み取り(ステップ432)、「ブロードキャスト・オペレーション完了」コマンドが実際にそれらのコントローラに到着したかどうかを決定する。これらのコントローラが依然としてこのCPUに対するコマンドでもってビジーであることをシステム・シリアル化制御ステータスが表す場合(判断ステップ433)、LICはステップ430に戻り、「ブロードキャスト・オペレーション完了」コマンドを再発生する。一旦「ブロードキャスト・オペレーション完了」コマンドが受け付けられたことがわかると(ステップ431又は433のいずれかによって決定されるように)、LICはステップ450に進む。
【0052】
そのシーケンスの次の部分は、IPTEコマンド又はSSKEコマンドを処理している間に他のCPUからの通常の静止リクエストが受け取られていた可能性、或いはこのCPUがそれのブロードキャスト・オペレーションを完了した時以後に他のCPUからIPTE又はSSKEコマンドが受け取られていた可能性を許容する。ステップ450において、LICはCPUにおける「ブロードキャスト・オペレーション許可済み」ラッチをセットし、しかる後、他のCPUからの未処理の通常の静止リクエストがそのハードウエアに存在しなくなるまでステップ451において待機する。一旦その状態が遭遇すると、LICはステップ452においてこのCPUに対する「CPU静止」ラッチをリセットする。ステップ453において、LICは、未処理のIPTE又はSSKEシリアル化リクエストがそのハードウエアに存在しなくなるまで待機する。一旦この状態が遭遇すると、LICは、ステップ454においてこのCPUに対する「ブロードキャスト・オペレーション許可済み」ラッチをリセットする。
【0053】
ステップ460において、LICは、CPU再試行事象がそのシーケンスのこの部分中に生じたかどうか知るためのチェックを行う。それが肯定される場合、LICはこのCPUに対する「CPU静止」ラッチをセットし(ステップ461)、しかる後、ステップ457において、システム全体が最早静止されてないことによって表されるように、そのシステムにおける他のいずれかのCPUが静止状態から出るのを待つ。しかる後、LICは「CPU静止」ラッチをリセットし(ステップ463)、ステップ470に続く。これは、静止状態を出るべき第1CPUがCPU再試行のために静止リクエストを喪失することのなかったCPUであることを保証する。ステップ460においてCPU再試行が検出されない場合、LICはステップ470へ直接に進む。ステップ470において、LICは、他のCPUから受け取られたものでもよい任意の通常の静止リクエストに関してもう一度テストを行う。いずれかの静止リクエストが存在する場合、LICはステップ442に戻ってその静止レシーバ・シーケンスを繰り返す。それが存在しない場合、LICは、ステップ480においてIPTE又はSSKEオペレーションを完了する。
【0054】
IPTE又はSSKEシステム・シリアル化による割込み或いは通常の静止リクエストによる割込みを処理するために、LICがステップ440において開始する。ステップ441において、LICはこのCPUにおけるすべての前のオペレーションが完了するのを待ち、しかる後、ステップ442において「CPU静止」ラッチをセットし、ステップ450において「ブロードキャスト・オペレーション許可済み」ラッチをセットする。この時点から、シーケンスは、ステップ450において開始する上記のシーケンスと同じである。
【0055】
本発明のマルチプロセッサ・システム・シリアル化コントローラは、すべてのプロセッサがブロードキャストされたグローバル資源更新リクエストにいつ応答したかを、グローバル資源更新リクエストを行ったプロセッサに信号するということに注意してほしい。一旦その受取り先のプロセッサがブロードキャスト・オペレーションの1つに関する作業を開始すると、それが完了するまでそれが如何なる命令も実行しないということが設計によって保証されている。従って、応答はそれがオペレーションを「開始」させたということであるので実時間であるけれども、論理的意味では、それはオペレーションを「実行」したことと等価である。勿論、別の方法として、すべてのプロセッサがブロードキャストされたグローバル資源更新リクエストの処理を完了した時、グローバル資源更新リクエストを行ったプロセッサに信号するシステム・シリアル化コントローラのコンテキスト内で信号が送られる。本発明の望ましい実施例におけるこの信号は、タスクの完了を包含するリクエストの受領に関する信号である。
【0056】
本発明の望ましい実施例を開示したけれども、現在及び将来においても、特許請求の範囲の項の技術的範囲内で、当業者が種々の改良及び機能強化を行い得ることは勿論である。これらの特許請求の範囲は、最初に開示された発明に対する適正な保護を維持するように解釈されるべきである。
【0057】
まとめとして、本発明の構成に関して以下の事項を開示する。
【0058】
(1)複数のプロセッサを含み、
前記プロセッサの各々はシステム静止リクエスト及びグローバル資源の更新を行うためのリクエストを発生し及び該リクエストに応答し、前記システム静止リクエスト及び前記更新を行うためのリクエストは前記複数のプロセッサのうちの1つ又は複数個においてバッファされること、及び
記憶装置コントローラ及びシステム・シリアル化コントローラを含むシステム・オペレーション・コントローラが、前記グローバル資源の更新を指示すること、
を特徴とするマルチプロセッサ・システム。
(2)前記グローバル資源はアドレス変換テーブル・エントリ及び記憶保護キーを含む、上記(1)に記載のマルチプロセッサ・システム。
(3)前記システム・シリアル化コントローラは、グローバル資源の更新を行うために各プロセッサからリクエストを受け取り、そのようなリクエストの各々に応答して前記システム・シリアル化コントローラがビジーであることを表すか又はグローバル資源更新リクエストを前記システムにおけるすべてのプロセッサにブロードキャストする、上記(2)に記載のマルチプロセッサ・システム。
(4)ブロードキャストされたグローバル資源更新リクエストを受け取る各プロセッサは、割込み可能なポイントにおいて命令処理を中断して、前記リクエストが受け付けられたことを前記システム・シリアル化コントローラに応答し、更新される資源のすべてのローカル・コピーを修正又は無効化することによって前記リクエストされたグローバル資源更新を処理し、割込みの前記ポイントにおいて命令処理を再開する、上記(3)に記載のマルチプロセッサ・システム。
(5)前記システム・シリアル化コントローラは、前記グローバル資源更新リクエストを行ったプロセッサを除くブロードキャストされたグローバル資源更新リクエストに応答した各プロセッサを、更新されるグローバル資源へのアクセスが禁止されるという制限された制御状態に入らせる、上記(4)に記載のマルチプロセッサ・システム。
(6)前記システム・シリアル化コントローラは、すべてのプロセッサが前記ブロードキャストされたグローバル資源更新リクエストにいつ応答したかを、前記グローバル資源更新リクエストを行ったプロセッサに信号する、上記(5)に記載のマルチプロセッサ・システム。
(7)前記リクエストを行ったプロセッサは、グローバル資源を修正し、しかる後、前記グローバル資源更新オペレーションが完了したことを前記システム・シリアル化コントローラに信号する、上記(6)に記載のマルチプロセッサ・システム。
(8)前記システム・シリアル化コントローラは、すべてのプロセッサを前記制限された制御状態のままにさせ、必要な時に、すべてのプロセッサが前記更新されたグローバル資源をアクセスすることを可能にする、上記(7)に記載のマルチプロセッサ・システム。
(9)前記システム・オペレーション・コントローラは、すべてのプロセッサが共に一時停止するシステム静止を必要とする他のプロセッサと前記グローバル資源更新オペレーションが共存することを可能にし、前記オペレーションにおける任意の時点で前記システムにおけるいずれのCPUにおいてもCPU再試行アクションを可能にするライセンス内部コード(LIC)シーケンスのための記憶装置を含む、上記(1)又は(8)に記載のマルチプロセッサ・システム。
(10)前記システム・オペレーション・コントローラは、記憶装置コントローラと、各プロセッサに対するページ・テーブル・エントリ無効化(IPTE)オペレーション及び記憶保護キー設定(SSKE)オペレーションのためのローカル・バッファとを含む、上記(9)に記載のマルチプロセッサ・システム。
(11)すべてのプロセッサにブロードキャストされたグローバル資源更新リクエストは、前記プロセッサをIPTE及びSSKEオペレーションのためのIPTE/SSKE制限モードに設定し、ブロードキャスト送信済み状態に入ることは新しいシステム・シリアル化リクエスト・コマンドが完全に処理されるまでその後のリクエスト・コマンドを処理しないようにする、上記(10)に記載のマルチプロセッサ・システム。
【図面の簡単な説明】
【図1】本発明の望ましい実施例の概要を概略的に示し、特に、新しいコントローラを含む本発明の望ましい特定の実施例に従って、ミリコード・システムのコンポーネントを表すブロック図を示す。
【図2】本発明の望ましい実施例と関連した特定のコントローラを表すブロック図を示す。
【図3】ページ・テーブル・エントリ無効化(IPTE)及び記憶キー拡張設定(SSKE)のための静止オペレーションに特有の記憶装置コントローラの制御におけるハードウエア・シーケンスの流れ図である。
【図4】他のすべてのプロセッサが静止するのを待つことなくローカル・バッファ部分が処理されるページ・テーブル・エントリ無効化(IPTE)及び記憶キー拡張設定(SSKE)のための静止オペレーション処理するためのミリコード・ルーチンの流れ図の一部である。
【図5】他のすべてのプロセッサが静止するのを待つことなくローカル・バッファ部分が処理されるページ・テーブル・エントリ無効化(IPTE)及び記憶キー拡張設定(SSKE)のための静止オペレーション処理するためのミリコード・ルーチンの流れ図の一部である。
Claims (6)
- 複数のプロセッサと、
前記プロセッサによって使用されるグローバル資源と、
シリアル化を制御するコントローラと、
前記グローバル資源の更新を行うためのリクエストを前記プロセッサから前記コントローラに送るための手段と、
前記リクエストを前記コントローラから前記プロセッサにブロードキャストし、前記リクエストを送ったプロセッサ以外の他のプロセッサによる前記グローバル資源のアクセスを禁止するための手段とを含み、
前記プロセッサは、前記グローバル資源のコピーを保持するローカル・バッファを含み、
前記リクエストを送ったプロセッサは、前記リクエストを送った後に前記ローカル・バッファの更新処理を実行し、前記他のプロセッサが前記グローバル資源へのアクセスを禁止された後で前記グローバル資源を更新する、マルチプロセッサ・システム。 - 前記グローバル資源はページ・テーブル・エントリ及び記憶キーを含む、請求項1に記載のマルチプロセッサ・システム。
- 前記リクエストを送ったプロセッサは、前記グローバル資源を更新した後、前記グローバル資源の更新が完了したことを前記コントローラに知らせる、請求項1又は2に記載のマルチプロセッサ・システム。
- 複数のプロセッサ、前記プロセッサによって使用されるグローバル資源、及びシリアル化を制御するコントローラを含むマルチプロセッサ・システムのシステム・シリアル化のための方法であって、
前記グローバル資源の更新を行うためのリクエストを前記プロセッサから前記コントローラに送るステップと、
前記リクエストを送った後で、前記リクエストを送ったプロセッサにおいて、前記グローバル資源のコピーを保持するローカル・バッファの更新処理を実行するステップと、
前記リクエストを前記コントローラから前記プロセッサにブロードキャストし、前記リクエストを送ったプロセッサ以外の他のプロセッサによる前記グローバル資源のアクセスを禁止するステップと、
前記他のプロセッサによる前記グローバル資源のアクセスが禁止された後で、前記リクエストを送ったプロセッサが前記グローバル資源を更新するステップと、
を含む方法。 - 前記グローバル資源はページ・テーブル・エントリ及び記憶キーを含む、請求項4に記載の方法。
- 前記リクエストを送ったプロセッサは、前記グローバル資源を更新した後、前記グローバル資源の更新が完了したことを前記コントローラに知らせる、請求項4又は5に記載の方法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/070429 | 1998-04-30 | ||
US09/070,429 US6079013A (en) | 1998-04-30 | 1998-04-30 | Multiprocessor serialization with early release of processors |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2000010942A JP2000010942A (ja) | 2000-01-14 |
JP3701814B2 true JP3701814B2 (ja) | 2005-10-05 |
Family
ID=22095239
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP11473199A Expired - Fee Related JP3701814B2 (ja) | 1998-04-30 | 1999-04-22 | マルチプロセッサ・システム及びそのシステム・シリアル化方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US6079013A (ja) |
JP (1) | JP3701814B2 (ja) |
Families Citing this family (40)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6460100B1 (en) * | 1999-11-09 | 2002-10-01 | International Business Machines Corporation | Bus snooper for SMP execution of global operations utilizing a single token with implied release |
US6516368B1 (en) | 1999-11-09 | 2003-02-04 | International Business Machines Corporation | Bus master and bus snooper for execution of global operations utilizing a single token for multiple operations with explicit release |
US6480915B1 (en) * | 1999-11-09 | 2002-11-12 | International Business Machines Corporation | Bus protocol and token manager for SMP execution of global operations utilizing a single token with implied release |
US6553442B1 (en) | 1999-11-09 | 2003-04-22 | International Business Machines Corporation | Bus master for SMP execution of global operations utilizing a single token with implied release |
US6460101B1 (en) * | 1999-11-09 | 2002-10-01 | International Business Machines Corporation | Token manager for execution of global operations utilizing multiple tokens |
US6507880B1 (en) | 1999-11-09 | 2003-01-14 | International Business Machines Corporation | Bus protocol, bus master and bus snooper for execution of global operations utilizing multiple tokens |
US7249247B2 (en) * | 2000-04-11 | 2007-07-24 | Microsoft Corporation | Common feature mode for microprocessors in a multiple microprocessor system |
US6792529B1 (en) * | 2000-04-11 | 2004-09-14 | Microsoft Corporation | Common feature mode for microprocessors in a multiple microprocessor system |
US6739053B2 (en) | 2000-12-14 | 2004-05-25 | Wahl Clipper Corporation | Hair clipping device with internal vacuum |
US6684511B2 (en) | 2000-12-14 | 2004-02-03 | Wahl Clipper Corporation | Hair clipping device with rotating bladeset having multiple cutting edges |
US7089555B2 (en) | 2001-06-27 | 2006-08-08 | International Business Machines Corporation | Ordered semaphore management subsystem |
US7454753B2 (en) * | 2001-06-27 | 2008-11-18 | International Business Machines Corporation | Semaphore management subsystem for use with multi-thread processor systems |
US7406690B2 (en) * | 2001-09-26 | 2008-07-29 | International Business Machines Corporation | Flow lookahead in an ordered semaphore management subsystem |
US7143414B2 (en) | 2001-09-26 | 2006-11-28 | International Business Machines Corporation | Method and apparatus for locking multiple semaphores |
US7197585B2 (en) * | 2002-09-30 | 2007-03-27 | International Business Machines Corporation | Method and apparatus for managing the execution of a broadcast instruction on a guest processor |
US7284100B2 (en) * | 2003-05-12 | 2007-10-16 | International Business Machines Corporation | Invalidating storage, clearing buffer entries, and an instruction therefor |
US7020761B2 (en) * | 2003-05-12 | 2006-03-28 | International Business Machines Corporation | Blocking processing restrictions based on page indices |
US7530067B2 (en) | 2003-05-12 | 2009-05-05 | International Business Machines Corporation | Filtering processor requests based on identifiers |
US6996698B2 (en) * | 2003-05-12 | 2006-02-07 | International Business Machines Corporation | Blocking processing restrictions based on addresses |
US9454490B2 (en) | 2003-05-12 | 2016-09-27 | International Business Machines Corporation | Invalidating a range of two or more translation table entries and instruction therefore |
US7509646B1 (en) | 2003-09-23 | 2009-03-24 | Unisys Corporation | Method of managing workloads in a distributed processing system |
US7747573B2 (en) * | 2004-11-18 | 2010-06-29 | International Business Machines Corporation | Updating elements in a data storage facility using a predefined state machine, with serial activation |
US7827544B2 (en) * | 2004-11-18 | 2010-11-02 | International Business Machines Corporation | Updating elements in a data storage facility using a predefined state machine, with parallel activation |
TWI322354B (en) * | 2005-10-18 | 2010-03-21 | Via Tech Inc | Method and system for deferred command issuing in a computer system |
US8433855B2 (en) * | 2008-02-15 | 2013-04-30 | International Business Machines Corporation | Serializing translation lookaside buffer access around address translation parameter modification |
US8806179B2 (en) | 2009-12-15 | 2014-08-12 | International Business Machines Corporation | Non-quiescing key setting facility |
US8938588B2 (en) | 2010-12-16 | 2015-01-20 | International Business Machines Corporation | Ensuring forward progress of token-required cache operations in a shared cache |
US9182984B2 (en) | 2012-06-15 | 2015-11-10 | International Business Machines Corporation | Local clearing control |
US10169243B2 (en) | 2016-07-18 | 2019-01-01 | International Business Machines Corporation | Reducing over-purging of structures associated with address translation |
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 |
US10248573B2 (en) | 2016-07-18 | 2019-04-02 | International Business Machines Corporation | Managing memory used to back address translation structures |
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 |
US10223281B2 (en) | 2016-07-18 | 2019-03-05 | International Business Machines Corporation | Increasing the scope of local purges of structures associated with address translation |
US10176006B2 (en) * | 2016-07-18 | 2019-01-08 | International Business Machines Corporation | Delaying purging of structures associated with address translation |
US10176111B2 (en) | 2016-07-18 | 2019-01-08 | International Business Machines Corporation | Host page management using active 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 |
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 |
US10176110B2 (en) | 2016-07-18 | 2019-01-08 | International Business Machines Corporation | Marking storage keys to indicate memory used to back address translation structures |
US10180909B2 (en) | 2016-07-18 | 2019-01-15 | International Business Machines Corporation | Host-based resetting of active use of guest page table indicators |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4646236A (en) * | 1981-04-17 | 1987-02-24 | International Business Machines Corp. | Pipelined control apparatus with multi-process address storage |
US4809168A (en) * | 1986-10-17 | 1989-02-28 | International Business Machines Corporation | Passive serialization in a multitasking environment |
US4901233A (en) * | 1987-07-20 | 1990-02-13 | International Business Machines Corporation | Computer system with logic for writing instruction identifying data into array control lists for precise post-branch recoveries |
US5345567A (en) * | 1991-06-10 | 1994-09-06 | International Business Machines Corporation | System and method for modifying program status word system mask, system access key, and address space code with overlap enabled |
US5276878A (en) * | 1992-10-07 | 1994-01-04 | International Business Machines Corporation | Method and system for task memory management in a multi-tasking data processing system |
US5694617A (en) * | 1995-03-31 | 1997-12-02 | International Business Machines Corporation | System for prioritizing quiesce requests and recovering from a quiescent state in a multiprocessing system with a milli-mode operation |
US5673391A (en) * | 1995-03-31 | 1997-09-30 | International Business Machines Corporation | Hardware retry trap for millicoded processor |
US5611062A (en) * | 1995-03-31 | 1997-03-11 | International Business Machines Corporation | Specialized millicode instruction for string operations |
US5713035A (en) * | 1995-03-31 | 1998-01-27 | International Business Machines Corporation | Linking program access register number with millicode operand access |
US5680598A (en) * | 1995-03-31 | 1997-10-21 | International Business Machines Corporation | Millicode extended memory addressing using operand access control register to control extended address concatenation |
US5621909A (en) * | 1996-03-12 | 1997-04-15 | International Business Machines Corporation | Specialized millicode instruction for range checking |
US5761734A (en) * | 1996-08-13 | 1998-06-02 | International Business Machines Corporation | Token-based serialisation of instructions in a multiprocessor system |
-
1998
- 1998-04-30 US US09/070,429 patent/US6079013A/en not_active Expired - Lifetime
-
1999
- 1999-04-22 JP JP11473199A patent/JP3701814B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
US6079013A (en) | 2000-06-20 |
JP2000010942A (ja) | 2000-01-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3701814B2 (ja) | マルチプロセッサ・システム及びそのシステム・シリアル化方法 | |
US6119219A (en) | System serialization with early release of individual processor | |
JP5404574B2 (ja) | マルチプロセッサ環境におけるトランザクションベースの共有データオペレーション | |
US7178062B1 (en) | Methods and apparatus for executing code while avoiding interference | |
US9785462B2 (en) | Registering a user-handler in hardware for transactional memory event handling | |
EP0495165B1 (en) | Overlapped serialization | |
JPH0677233B2 (ja) | データ処理システム | |
US10936314B2 (en) | Suppressing branch prediction on a repeated execution of an aborted transaction | |
JPH02502764A (ja) | 多重処理を行なう方法および構成 | |
WO2010077850A2 (en) | Read and write monitoring attributes in transactional memory (tm) systems | |
JP2006500639A (ja) | 指定されたメモリアクセスが発生するまでスレッドの実行をサスペンドする方法及び装置 | |
JPH0239254A (ja) | データ処理システム及びそのキヤツシユ記憶システム | |
US5751986A (en) | Computer system with self-consistent ordering mechanism | |
US20040123078A1 (en) | Method and apparatus for processing a load-lock instruction using a scoreboard mechanism | |
KR102599689B1 (ko) | 예외 마스크 갱신 명령 후 트랜잭션의 비중지 처리의 허가 | |
JPH02166539A (ja) | フェッチ方法 | |
US7080209B2 (en) | Method and apparatus for processing a load-lock instruction using a relaxed lock protocol | |
EP3588280B1 (en) | Handling load-exclusive instructions in apparatus having support for transactional memory | |
KR100333580B1 (ko) | 개별 프로세서의 초기 해제에 의한 시스템 직렬화 및 그 멀티프로세서 시스템 | |
JPH0574101B2 (ja) | ||
US6751708B2 (en) | Method for ensuring that a line is present in an instruction cache | |
JPH0769825B2 (ja) | 並列処理装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20031201 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20031204 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20040301 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20040330 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20040623 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20040702 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20040928 |
|
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: 20050629 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20050714 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20080722 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090722 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100722 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110722 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110722 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120722 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130722 Year of fee payment: 8 |
|
LAPS | Cancellation because of no payment of annual fees |