(57)【特許請求の範囲】
【請求項１】
複数のプロセッサと、
前記プロセッサによって使用されるグローバル資源と、
シリアル化を制御するコントローラと、
前記グローバル資源の更新を行うためのリクエストを前記プロセッサから前記コントローラに送るための手段と、
前記リクエストを前記コントローラから前記プロセッサにブロードキャストし、前記リクエストを送ったプロセッサ以外の他のプロセッサによる前記グローバル資源のアクセスを禁止するための手段とを含み、
前記プロセッサは、前記グローバル資源のコピーを保持するローカル・バッファを含み、
前記リクエストを送ったプロセッサは、前記リクエストを送った後に前記ローカル・バッファの更新処理を実行し、前記他のプロセッサが前記グローバル資源へのアクセスを禁止された後で前記グローバル資源を更新する、マルチプロセッサ・システム。
【請求項２】
前記グローバル資源はページ・テーブル・エントリ及び記憶キーを含む、請求項１に記載のマルチプロセッサ・システム。
【請求項３】
前記リクエストを送ったプロセッサは、前記グローバル資源を更新した後、前記グローバル資源の更新が完了したことを前記コントローラに知らせる、請求項１又は２に記載のマルチプロセッサ・システム。
【請求項４】
複数のプロセッサ、前記プロセッサによって使用されるグローバル資源、及びシリアル化を制御するコントローラを含むマルチプロセッサ・システムのシステム・シリアル化のための方法であって、
前記グローバル資源の更新を行うためのリクエストを前記プロセッサから前記コントローラに送るステップと、
前記リクエストを送った後で、前記リクエストを送ったプロセッサにおいて、前記グローバル資源のコピーを保持するローカル・バッファの更新処理を実行するステップと、
前記リクエストを前記コントローラから前記プロセッサにブロードキャストし、前記リクエストを送ったプロセッサ以外の他のプロセッサによる前記グローバル資源のアクセスを禁止するステップと、
前記他のプロセッサによる前記グローバル資源のアクセスが禁止された後で、前記リクエストを送ったプロセッサが前記グローバル資源を更新するステップと、
を含む方法。
【請求項５】
前記グローバル資源はページ・テーブル・エントリ及び記憶キーを含む、請求項４に記載の方法。
【請求項６】
前記リクエストを送ったプロセッサは、前記グローバル資源を更新した後、前記グローバル資源の更新が完了したことを前記コントローラに知らせる、請求項４又は５に記載の方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、コンピュータ・マルチプロセッサに関するものであり、詳しく云えば、ミリモード・オペレーションを有するマルチプロセッサ・システム、及びページ・テーブル・エントリ無効化（Invalidate Page Table Entry−ＩＰＴＥ）及び記憶キー拡張設定（Set Storage Key Extended−ＳＳＫＥ）のためのオペレーションのような命令を実行する時に個々のプロセッサを早期にリリースすることによるそれらのシステム・シリアル化に関するものである。
【０００２】
【従来の技術】
広く使用されているＥＳＡ／３９０マルチプロセッサ・システムのＣＭＯＳ実装版の開発を続けていると、互換性のある設計でもってパフォーマンスを改善する必要性に直面する。ＥＳＡ／３９０アーキテクチャは、マルチプロセッサ・システムにおけるすべてのＣＰＵにより見られるように、単一の時点で生じるように見えなければならない複数のオペレーションを含んでいる。これらのオペレーションは、主として、記憶アクセス制御情報を更新するために使用される。記憶アクセス制御情報は、一般に、この情報への高パフォーマンス・アクセスを行うためにＣＰＵにおいてバッファ可能である。そのバッファされた情報は、多くの場合、１つのＣＰＵにおける単一のＥＳＡ／３９０命令の実行において何回も参照され得るし、ＥＳＡ／３９０アーキテクチャは、その情報に対する変更がＥＳＡ／３９０命令において生じるようには見えないことが必要である。
【０００３】
システム・パフォーマンスに影響を与えるに十分なほど頻繁に使用される２つのオペレーションは、ページ・テーブル・エントリ無効化（ＩＰＴＥ）及び記憶キー拡張設定（ＳＳＫＥ）オペレーションである。パフォーマンスを改善するために、これらのオペレーションをもっと効率的に処理する方法が開発され、従って、これらの命令を使用するプログラムのシステム稼働時間を減少させることができるようになった。単一のＣＰＵ上でこれらの命令の１つを実行する過程において、４Ｋブロックの仮想記憶装置への動的アドレス変換（ＤＡＴ）が無効にされるか（ＩＰＴＥ）、又は４Ｋブロックの実記憶装置へのアクセスを制御するために使用される記憶キーが変更される（ＳＳＫＥ）。これらの変更は、起点となるＣＰＵにおける命令の実行の一部として、そのシステムにおけるすべてのＣＰＵに送られなければならない。
【０００４】
これらの命令に対するＥＳＡ／３９０アーキテクチャの直接的なインプリメンテーションは、ＩＰＴＥ又はＳＳＫＥ命令を実行するＣＰＵが、ＥＳＡ／３９０命令相互間の１つのポイントで、即ち、Ｓ／３７０ベースのシステムにおいて使用される通常の静止方法における静止ポイントで一時停止するように、システムにおける他のＣＰＵに信号することである。すべてのＣＰＵがそのようなポイントに達してしまうと、システムは「静止させられる」と云われ、第１のＣＰＵは、必要な時に変換テーブル・エントリ又は記憶キーを自由に更新できる。システムが静止している間、第１のＣＰＵは、変更が行われたことを他のＣＰＵにも表示しなければならず、従って、第１のＣＰＵだけでなく他のＣＰＵも、その変更された情報のバッファされたすべてのコピーを更新又は廃棄することができる。これらのアクションがすべて完了すると、第１のＣＰＵは他のＣＰＵに、それらが処理を再開してもよいことを信号する。この方法は、数多くのＳ／３７０、３７０／ＥＳＡ、及びＥＳＡ／３９０インプリメンテーションにおいて使用されており、従って、「静止方法（ｑｕｉｅｓｃｅ  ｍｅｔｈｏｄ）」を呼ばれることもある。
【０００５】
これとは別に、１９９６年８月１３日に出願された米国特許出願番号０８／６８９７６２号の未決出願において開示された最近のＥＳＡ／３９０インプリメンテーションは注目すべきものであろう。その開示された発明は、１９９６年末に商業的に発売されたＥＳＡ／３９０において使用された。その時、アドレス変換を遂行するためにすべてのプロセッサによって共通に使用されるメモリ内のテーブルを修正するＩＰＴＥ（ページ・テーブル・エントリ無効化）及びＳＳＫＥ（記憶キー拡張設定）のような命令を遂行するが開示された。そこでは、逐次に処理されなければならなかったＩＰＴＥ及びＳＳＫＥのような命令をシリアル化するためにトークンが使用された。リクエストの後、或いは、プロセッサの１つからのリクエストに応答して、そのトークンがリクエスティング・プロセスに割り当てられ、従って、それは、前記命令の１つを実行する権利を持つ。その命令が複数のタスクより成る場合、その命令の最後のタスクが実行されるまで、トークンはロックされる。しかる後、トークンはロック解除され、他の命令に割り当て可能になる。
【０００６】
プロセッサは、それがトークンを保持する場合、逐次に処理されなければならない命令の１つしか実行することできない。このトークン装置を持ったマルチプロセッサ・システムにおいて逐次に処理されなければならない命令をシリアル化する必要がある時、開始プロセッサにおける第１のタスクだけが開始可能である。開始プロセッサは、それがトークンを保持する場合、その第１のタスクしか実行することができず、或るプロセッサが使用可能である場合、トークンがそのプロセッサに割り当てられるようにするために、開始プロセッサによるそのトークンに対するリクエストが存在しなければならず、しかも、それが使用可能である場合、命令は逐次に実行可能である。その後は、トークンが必ずしも他のプロセッサにとって使用可能にはならないということによって、逐次に処理されるべき命令の第１タスクを完了した後、トークンを戻す必要がある。シリアル・タスクの完了後、逐次に処理されてしまった命令が完了した後にトークンの使用可能度の再確立がなければならない。
【０００７】
それらの必要なステップに対する１つの欠点は、開始プロセッサによるプロセスの制御及び複雑なトークン受渡しによって、ＥＳＡ／３９０システムにおけるプロセッサであって最近リリースされたＣＭＯＳプロセッサ・バージョンにおける個々のプロセッサの早期リリースを伴うシステム・シリアル化があり得ないということである。アドレス変換テーブルのエントリの内容を別々のレジスタに記憶し、しかる後、ＩＰＴＥ命令及びＳＳＫＥ命令に対するそれまでのエントリを無効にすることは可能であるけれども、そのトークン・プロセスに対する商業的にインプリメントされ認識された代替方法は、すべてのプロセッサが実行を完了してしまうまで又はすべてのプロセッサがそれらの現在の命令を完了してしまうまで待つようにアドレス変換テーブルを修正する時、ＥＳＡ／３９０システムの初期バージョンを含む前述のシステム３７０ベースのシステムにおいて通常使用される静止方法である。
【０００８】
すべてのＣＰＵが静止するのを待つこと（静止方法）の主たる欠点は、ＥＳＡ／３９０命令相互間にある１つのポイントにＣＰＵが達するに必要な時間がＥＳＡ／３９０命令セットにおける複雑な且つ長時間実行の命令の存在のために非常に変わりやすいということである。
【０００９】
多数のＣＰＵを持ったシステムでは、そのシステムにおけるすべてのＣＰＵがそのようなポイントに達するまでの平均時間が大きくなり得るし、最後のＣＰＵがそのようなポイントに達するまですべてのＣＰＵが待機している（如何なる有用な作業も行わない）という事実によって、システム・パフォーマンスに関する正味の影響が倍加される。このこと及びＣＰＵ相互間で必要とされる大量のハンドシェーキングは、そのような方法のパフォーマンスを魅力のないものにしている。
【００１０】
既に使用されている（例えば、ＥＳ／９０００  ９０２１における）もう１つの方法は、先ず、ＩＰＴＥ又はＳＳＫＥ命令を実行するＣＰＵに変換テーブル又は記憶キーを変更させ、しかる後、他のすべてのＣＰＵがＥＳＡ／３９０命令相互間のポイントに達すると直ちに、それらのバッファされたコピーを更新又は廃棄するように他のすべてのＣＰＵに信号することである。これは、ＣＰＵ設計が、ＥＳＡ／３９０命令が命令完了前の任意のポイントにおいて完全にヌル化されるようなものである場合にのみ可能である。この要件は、他のＣＰＵが現在実行しようとしているＥＳＡ／３９０命令の終わりにそれが達してしまう前に、変換テーブル又は記憶キーに対する変更が記憶アクセス例外条件を他のＣＰＵにとって明らかなものにし得るという事実から生じる。この場合、他の何かが、そのＣＰＵのバッファされた変更情報のコピーをその命令の間に廃棄（例えば、セット・アソシアティブ・ルックアサイド・バッファにおける置換）させる場合、ＣＰＵは、アクセス可能であることが予めわかっていたオペランドに関するアクセス例外を知ることがあり得る。
【００１１】
ＥＳＡ／３９０命令がこの時点でも依然としてヌル化可能である場合、すべて良好であるが、それがヌル化され得ない場合、ＣＰＵオペレーションはＥＳＡ／３９０アーキテクチャを満たすことができない。この方法は直接的な方法よりもかなり良好なパフォーマンスを持つが、ＥＳＡ／３９０命令の実行を通してヌル化の必要性を持つことになる。いずれにしても（例えば、実際的でない或いは順不同のシーケンスをサポートするために）このフィーチャを有するＣＰＵ設計では、これはＩＰＴＥ及びＳＳＫＥにとって合理的な設計である。しかし、これらの命令に対するパフォーマンス上の利点だけでは、この程度の複雑さをＣＰＵ設計に加えることを正当化することができなかった。
【００１２】
後者の方法の形式は、関連情報のバッファされたコピーがＥＳＡ／３９０命令の過程で喪失されないことをＣＰＵ設計が保証できる場合にも可能である。これを希な事象にすることは難しくはないけれども、それを不可能にすることはＣＰＵ設計において大きな拘束を課するものであり、このことは、或る場合には再帰ＤＡＴを必要とし、しかも中間の変換が変換ルックアサイド・バッファ（ＴＬＢ）に保持されることを可能にするＥＳＡ／３９０解釈実行アーキテクチャの場合には特に著しい。
【００１３】
【発明が解決しようとする課題】
従って、後者の２つのインプリメンテーションのどちらに関する面倒なＣＰＵ設計要件も持たず、第１のインプリメンテーションのパフォーマンス・オーバヘッドを受けないＥＳＡ／３９０  ＩＰＴＥ及びＳＳＫＥオペレーションのインプリメンテーションが望ましい。
【００１４】
【課題を解決するための手段】
本発明は、他のすべてのプロセッサが割込みポイントに達するのを待つことなく、ＥＳＡ／３９０システムにおけるＣＰＵがＩＰＴＥ及びＳＳＫＥオペレーションのローカル・バッファ更新部分を処理することを可能にし、しかも、ＩＰＴＥ又はＳＳＫＥオペレーションがグローバルに完了するまで、オペレーションに関するわずかな一時的制限でもってプログラム実行を継続することを可能にするコントローラを開示するものである。更に、これらのＩＰＴＥ及びＳＳＫＥオペレーションが通常のシステム静止（即ち、すべてのプロセッサが共に一時停止しなければならない）を必要とする他のオペレーションと共存することを可能にし、しかもそのシステムにおけるいずれのＣＰＵにおいてもオペレーションにおける任意のポイントでのＣＰＵ再試行アクションを可能にするライセンス内部コード（ＬＩＣ）シーケンスが定義される。
【００１５】
この解決方法は、他の高パフォーマンス設計が必要とするようなＣＰＵ設計全体に関する要件を課することなく、既知の最善のインプリメンテーションに近いパフォーマンス、及び、多くの場合、それに等しいパフォーマンスを達成する。
【００１６】
【発明の実施の形態】
本発明の望ましい実施例を詳細に考察する前に、例証として前述のような説明を行うことも有効であろう。
【００１７】
本発明の更に詳細な説明に転ずると、本発明の望ましい実施例においては、図１に示されたハードウエアが使用されることがわかるであろう。それは、ＩＢＭ社のエンタープライズ・システム・アーキテクチャ／３９０（Enterprise Systems Architecture/390）、又は、ＥＳＡ／３９０  Ｓ／３９０システム・アーキテクチャ（いずれも、米国ニューヨーク州アーモンクのインターナショナル・ビジネス・マシーンズ・コーポレーションの商標）に一般的に適合するシステムのコンテキスト全体に適用可能である。そのようなＳ／３９０システム・プロセッサの通常のエレメントに関する初期の詳細な説明は、例えば、本発明と同じ譲受人に譲渡された米国特許第４,９０１,２３３号において見ることができる。また、ミリモード・オペレーションのための現在の静止方法が米国特許第５,６９４,６１７号に開示されている。
【００１８】
望ましいインプリメンテーションでは、通常の静止シーケンスは、そのシーケンス内で生じるＣＰＵ再試行のためのサポートを含むものであり、それは１９９２年１２月２日発行の「ミリモード・オペレーションを持ったマルチプロセシング・システムにおいて静止リクエストを優先順位付け、静止状態から回復させるためのシステム（System for Prioritizing Quiesce Requests and Recovering from a Quiescent State in a Multiprocessing System with a Milli-mode Operation）」と題した C.F. Webb 他による米国特許第５,６９４,６１７号に開示されているようなシーケンスであり、再試行トラップ機構は、１９９７年９月３０日発行の「ミリコード化されたプロセッサのためのハードウエア再試行トラップ（Hardware Retry Trap for Millicoded Processor）」と題した C.F. Webb 他による米国特許第５,６７３,３９１号に開示されている。上記の米国特許及びそれら関連のＥＳＡ／３９０アプリケーションは、本願では、ミリコード化されたプロセッサのためのミリモードの使用を説明するものとして示される。マルチプロセシング・システムは、すべてのプロセッサが共に一時停止する静止ポイントに他のすべてのプロセッサが達するのを待つことなく、ページ・テーブル・エントリ無効化（ＩＰＴＥ）オペレーション及び記憶キー拡張設定（ＳＳＫＥ）オペレーションを行っている間、本発明の望ましい実施例に適用可能である。
【００１９】
次に、図１を参照すると、この好適なシステムにおいて使用される静止オペレーションに関連するシステムのエレメントは、後述のような変更を伴うけれども、米国特許第５,６９４,６１７号における前述の基本エレメントを依然として含んでいる。従って、図１に示されるような総合的なシステムは、システム記憶装置１１及び或る種のキャッシュ・メモリ・ユニット１２を含む階層メモリを提供する。システム記憶装置１１は、プロセッサが実行しようとする命令及びそれらの命令が操作しようとするデータを含んでいる。キャッシュ・メモリ・ユニット１２は、プロセッサが現在実行しつつあるデータ及び命令のコピーを含み、この望ましい実施例では、インターリーブド・ダブルワード・アドレシングを行うスプリット・キャッシュである。キャッシュ・メモリ・ユニット１２は、論理的には、連続的にアドレス可能な読取専用記憶装置（ＲＯＳ）１３を含み、そこには、或る頻繁に呼び出されたミリモード・ルーチンを実行するためのコードが記憶される。
【００２０】
命令ユニット・サブシステム１６は、命令バッファ（図１には示されてない）、命令レジスタ１８、及び命令デコーダ２０を含む。その命令ユニット・サブシステムはキャッシュ・メモリ・ユニット１２からマクロ命令、ミリコード命令、及びデータを受け取る。命令は解析され、命令レジスタ１８に入れられる。命令デコーダ２０は命令レジスタ１８の内容を読み取り、その命令をデコードし（又は、オペレーション例外を生じさせ）、ハードウエア実行ユニット２４による逐次実行のためにその命令を命令キューに送る。各ハードウエア実行ユニット２４は、正規のマクロ・コード命令実行のための一組の汎用レジスタ（ＧＲ）及びアクセス・レジスタ（ＡＲ）２１、並びに、ミリコード命令実行のための一組の汎用レジスタ（ＧＲ）及びアクセス・レジスタ（ＡＲ）２３へのアクセスを有する。制御ロジックは、ミリコード・ルーチンを開始又は完了する時にそれら二組のレジスタ相互間のデータ交換を制御する。ミリモード検出ロジック２６は命令レジスタに結合され、デコードされつつあるマクロ命令がミリモード・オペレーションにおいて解釈されるべきタイプのものである時を検出する。これが生じる時、ミリモード検出ロジック２６はエントリ・ポイント・アドレスを発生し、このアドレスを命令フェッチ制御ロジック３５に送り、しかも命令デコーダ２０をミリモード動作状態にする。この状態において、命令デコーダ２０はミリモード命令をデコードすることを可能にされる。
【００２１】
ミリモード命令は、正規のマイクロコード命令と特別のミリモードのみの命令とを混合したものより成る垂直マイクロコードである。それらの命令はすべて実行ユニット２４において実行可能である。それらの特別の命令は、ミリコード・ルーチンが必要とする制御機能を与える。ミリコード・ルーチンのセットはプログラム・アドレス可能な記憶装置の外にある。実行された命令のシステム効果は体系的には完了ロジック３０において可視的である。完了ロジック３０及び命令デコーダ２０の間の信号線は、命令デコーダ２０が命令完了を追跡することを可能にする。レジスタ３１におけるプログラム・ステータス・ワード（ＰＳＷ）はマクロ・プログラムの実行を制御する。同様に、そのシステムは、ミリコード・ルーチンの実行を制御するミリＰＳＷレジスタ３３も含む。実行ユニット２４及び完了ロジック３０の両方とも、ＰＳＷレジスタ３１及びミリＰＳＷレジスタ３３から読み取るように及びそれらのレジスタに書き込むように接続される。従って、任意の所与の時点で、実行ユニット又は完了ロジックは、ＰＳＷレジスタ及び（又は）ミリＰＳＷレジスタのうちの適切な方を読み取ること又は更新することができる。
【００２２】
プロセッサ状態ユニット４０は、正規モード・オペレーション及びミリモード・オペレーションの両方におけるその設計されたシステムの更新されたステータス全体を保持する。エラーが検出された場合、プロセッサ状態ユニット４０は、エラーの原因となるオペレーションの再試行を可能にするために、システムのステータスをチェック・ポイント状態から再作成するための資源を提供する。ミリモードは、デコードされつつあるマクロ命令がミリコードと共にインプリメントされるべきであることをミリモード検出ロジック２６が認識する時にイネーブルされる。この認識に応答して、ミリモード検出ロジック２６は、命令デコーダ２０、命令フェッチ制御ロジック３５、及び実行ユニット２４におけるレジスタ・コントローラに信号を送る。ミリモード検出ロジック２６からのミリモード認識信号に応答して、命令デコーダ２０はマクロモード・デコーディングを中断し、実行ユニット２４のレジスタ・コントローラはＧＰＲ２１の内容をミリ・レジスタ２３にコピーして、システムにその後はミリ・レジスタ２３を使用させる。ミリモード検出ロジック２６はミリコード・エントリ・ポイント・アドレスを発生する。そのエントリ・ポイント・アドレス（ミリモード検出ロジック２６によって発生された）は、キャッシュ・ユニット１２をアドレスするために命令フェッチ制御ロジック３５によって使用される。キャッシュ・ユニット１２からのミリ命令は命令レジスタ１８に送られ、そこで、命令デコーダ２０はそれらをデコードし、そして実行のためにそれらをスケジュールする。
【００２３】
プロセッサがミリモードに入る時、それは、概念的には、そのミリモードへ入らせた命令の前のそのパイプラインにおけるマクロ命令を既に実行し、そして完了している。プロセッサがマクロ命令を完了する時、それは適切なＧＰＲを更新する。同時に、プロセッサは、ミリモードに入らせたマクロ命令をインプリメントするミリ命令をデコードし、そして実行する。或る時点で、ミリモードに入らせた命令の直前のマクロ命令は、完了ロジック３０において完了したことを表示されるであろう。その後しか、プロセッサはミリ命令を完了し始めることをしない。そこで、プロセッサはミリ命令のデコード、実行、及び完了を継続する。最終的に、検出ロジック２６はミリコード終了（ＭＥＮＤ）ミリ命令を認識する。ミリモード検出ロジック２６がＭＥＮＤミリ命令を検出する時、それはプロセッサにミリ命令のフェッチをやめさせる。更に、ＭＥＮＤが検出される時、ミリモード検出ロジックは命令デコーダ２０をマクロモードにし、プロセッサにマクロ命令のフェッチを始めさせる。ミリコードはすべてのレジスタを明示的に更新し、従って、ミリモード・オペレーションから正規のオペレーションに進む時にはレジスタ内容の転送はない。ＭＥＮＤミリ命令の完了はプロセッサの完了ロジックにマクロ命令の完了を始めさせる。
【００２４】
プロセッサは割込みに応答してミリモードに入ることもできる。完了ロジック３０が割込みを検出する時、割込み優先順位ロジック４５は割込みがサービスされるべきであることを決定し、命令フェッチ・ユニット３５に信号を送って、デコーダにミリモードを開始させる。割込み状態の認識は次の割込みポイントでプロセッサにマクロモード実行を停止させる。この割込み優先順位ロジック４５は、キャッシュをアドレスするためのエントリ・ポイント・アドレスを発生するために、ミリモード検出ロジック２６によって使用される制御入力も発生する。これらのミリ命令は命令レジスタに送られる。そこで、デコーダはそれらをデコードし、適正なハードウエア実行エレメントにおいて実行するようにそれらをスケジュールする。プロセッサは、割込みのためのミリルーチンにおけるミリ命令をデコードし、実行し、及び完了するように進行する。最終的には、デコーダはＭＥＮＤミリ命令を認識する。これは、デコーダにミリモードにおけるデコードを停止させる。サービスを必要とする更なる割込みがあるかどうかに従って、デコーダのハードウエアは割込みプロセスを再実行するか或いはキャッシュ・ユニットからのマクロ命令のデコードに戻るであろう。
【００２５】
今や、静止オペレーションに関するプロセッサ相互間のコミュニケーションのためのコマンド、即ち、「静止セット」及び「静止リセット」が与えられることを、本願において前述の米国特許第５,６９４,６１７号よりももっと詳細に再び記述する必要はないであろう。「静止セット」は、他のすべてのプロセッサが「静止」状態に入ることを表すために、プロセッサによって発生される。「静止リセット」は、前に静止セットを発生し、今では静止状態が必要とされたオペレーションを完了したプロセッサによって発生される。これらのコマンドは、そのコマンドを送ろうとしているプロセッサの識別情報（プロセッサ番号）を含まなければならない。これらは、前述のように、そのシステムにおけるすべてのプロセッサによって受け取られ、処理される。ミリコード・ルーチンは静止割込みを処理し、そのシステムにおけるすべてのプロセッサを静止状態に入らせる。ミリコード制御レジスタの１つのビットは静止状態を表し、プロセッサの出力を駆動して、そのプロセッサが静止状態にあることを表示させる。プロセッサは、そのシステムにおけるすべてのプロセッサが静止状態にあることを表す信号を受け取り、この値をラッチする。このラッチの出力はミリコード・ブランチ状態として使用するためにプロセッサの命令ユニットに送られる。従って、ハードウエア制御の実行ユニットにおいて単純な命令セットを実行するパイプライン・マルチプロセッサは、ミリモード設計された状態における複雑な命令セットを、単純な命令のミリコード・シーケンスでもってハードウエア制御の実行ユニットにおいて実行する。
【００２６】
複数のプロセッサの各々が静止リクエストを発生することができるマルチプロセシング・システムにおいて静止リクエストに応答するために、プロセスは、１つ又は複数のプロセッサから静止リクエストを受け取ったことを表すべく、複数のプロセッサの各々における静止リクエスト・レジスタをセットする。そのシステムにおける各プロセッサがこのリクエストに応答する時、それは、それが静止済み状態にあることを表すミリコード制御レジスタ・ビットをセットし、プロセッサが再試行オペレーションを完了したかどうかを表すラッチをリセットする。しかる後、それは、静止リクエスト・レジスタがクリアされて、すべてのリクエスティング・プロセッサが静止オペレーションを完了したことを表すのを待つ。再試行オペレーションを表すラッチがその時点でセットされない場合、プロセッサはそのレジスタ・ビットをリセットして、それが静止状態にあることを表示させ、正規のオペレーションを再開する。再試行オペレーションを表すラッチがセットされる場合、プロセッサはシステム静止表示がリセットされるのを待ち、少なくとも１つ他のプロセッサが静止オペレーションを表すそれのレジスタ・ビットをリセットしたことを表示させ、しかる後、それ自身の静止オペレーション・レジスタ・ビットをリセットし、正規のオペレーションを再開する。これは、現在のミリモード・オペレーションの正規の静止方法である。
【００２７】
本発明に従って、ＥＳＡ／３９０システムにおけるＣＰＵが、他のすべてのプロセッサが割込みポイントに達するのを待つことなく、ＩＰＴＥ及びＳＳＫＥオペレーションのローカル・バッファ更新部分を処理することを可能にし、しかる後、ＩＰＴＥ又はＳＳＫＥオペレーションがグローバルに完了するまで、オペレーションに関するわずかな一時的制限でもってプログラム実行を継続することを可能にするコントローラを紹介することにする。各ＣＰＵが記憶制御ユニット（ＳＣ）に対するインターフェースを持つことによって、そのＳＣにおける集中制御が使用される。他の制御構成も可能であるが、本発明に対しては、幾つかの論理的に集中した制御ポイントが必要とされる。この説明では、ＩＰＴＥ又はＳＳＫＥ命令を実行しようとしているＣＰＵはＣＰＵX として表され、そのシステムにおける他のＣＰＵはＣＰＵY として表される。これらの指定方法は任意である。そのシステムにおけるいずれのＣＰＵもＩＰＴＥ又はＳＳＫＥ命令を実行することができ、そのシステムには任意の数のＣＰＵが存在し得る。
【００２８】
本発明では、ＣＰＵにおける新たな制御状態が加えられる。その状態では、システム・シリアル化機能によって更新される可能性を持った如何なる情報をアクセスするオペレーションも許されない。ＩＰＴＥに関して、これは記憶装置におけるページ・テーブル・エントリをアクセスすることになるＤＡＴを行わないことを意味する。ＳＳＫＥに関しては、これは、アクセス例外に関してテストするために、又は記憶キーを明示的にアクセスするＥＳＡ／３９０命令を実行するために、記憶キーがアクセスされることはないことを意味する。この状態にある間、ＩＰＴＥ又はＳＳＫＥ命令によって影響されるエントリが既にバッファから無効にされているものと仮定すると、ＣＰＵは、この情報に関するそれのローカル的にバッファされたコピーしかアクセスすることを許されない。望ましいインプリメンテーションでは、記憶キーはＴＬＢにおいてバッファされ、ＩＰＴＥ命令が進行中であることによる制限と、ＳＳＫＥ命令が進行中であることによる制限との間の区別は行われない。
【００２９】
別のインプリメンテーションでは、これらは区別され得るものであり、この制御状態にある間のＣＰＵオペレーションにおけるインパクトを減少させるようにアドレス又は他の修飾子によって制限を更に緩和することができるであろう。この説明では、このＣＰＵ制御状態は「ＩＰＴＥ／ＳＳＫＥ制限モード」として表される。ＥＳＡ／３９０アーキテクチャは、ページ・テーブル・エントリに対する直接的なオペランド参照（ＤＡＴの過程で行われる参照とは対照的な参照）を、ＩＰＴＥ命令が暗示するシステム・シリアル化に関係なく許容するということ、システムシリアル化は影響を受けるＴＬＢエントリのすべてのＣＰＵによる使用のみに関するものであること、及びＩＰＴＥ命令を実行するＣＰＵ以外のＣＰＵは必ずしもＣＰＵシリアル化オペレーションを遂行しないことをＥＳＡ／３９０は明瞭に述べているということに注意してほしい。
【００３０】
次に、図２を参照して、本発明に関するハードウエア制御機構を説明することにする。図２は、ＣＰＵ、即ち、ＣＰＵX ２１０及びＣＰＵY ２１１、並びに、記憶装置コントローラＳＣ２１２を示す。記憶装置コントローラにおける一組のシリアル化コントローラ２２０は一時に１つのＩＰＴＥ又はＳＳＫＥオペレーションしか進行しないことを保証し、そのオペレーションに関するシーケンスをモニタする。各ＣＰＵにおけるＬＩＣはインターフェース２３１を有し、そのインターフェースによって、それは、取られるべきアクションを指定する「制御」コマンドをＳＣ２１２に送ることができ、ＳＣ２１２から応答バス２３２を介して情報を戻す「センス」コマンドを送ることもできる。この応答バス２３２は、「制御」コマンドに関するコマンド・ステータスをコミュニケートするためにも使用され、システム・シリアル化コントローラ２２０によってセットされるだけでなく、ＳＣ２１２における複数のソースからもセット可能である。特に、ＣＰＵは、ＳＣ２１２におけるシステム・シリアル化コントローラ２２０の状態をセンスするためにこのインターフェースを使用することができる。ＩＰＴＥ又はＳＳＫＥシーケンスでは、これらのシステム・シリアル化コントローラ２２０の進行は次のような状態シーケンスに従う。
・  アイドル
・  ブロードキャスト送信済み
・  全ＣＰＵ開始済み
・  アイドル
このシーケンスに関しては後で更に詳しく説明することにする。
【００３１】
ＳＣが各ＣＰＵにコマンド送ることができるインターフェース２３３も存在する。これは、システム・シリアル化コントローラ２２０を含むＳＣ２１２における複数のソースからも制御可能である。このバスを介して送られたコマンドは、ローカル的にバッファされた情報がＩＰＴＥ又はＳＳＫＥオペレーションによって無効にされなければならないことを指定するコマンドを含む。そのようなコマンドは、一般に、仮想ページ・アドレス又は実ページ・アドレスのどちらがＩＰＴＥ又はＳＳＫＥオペレーションによって影響されるかを表すアドレス情報によって修正される。そのような無効化コマンドをＣＰＵが受け取る時、それは、ＣＰＵがＥＳＡ／３９０命令相互間の或るポイントに達するまで未処理のまま保持されなければならない。
【００３２】
望ましいインプリメンテーションでは、これらのコマンドは各ＣＰＵにおける割込みコントローラ２４１及びキャッシュ・コントローラ２４２の両方によって認識される。そのようなコマンドが未処理である時、割込みコントローラ２４１は、それが次の割込み可能なポイント（即ち、ＥＳＡ／３９０命令相互間のポイントであり、しかも未処理の更に高い優先順位の割込みがない場合）においてプログラム命令処理を実行コントローラ２４３に中断させる時に取られる内部割込みをＣＰＵにおいてに未処理にさせる。この割込みに応答して、実行コントローラ２４３はＬＩＣルーチンを呼び出す。そのＬＩＣルーチンは、キャッシュ・コントローラ２４２がその未処理のコマンドを処理してＩＰＴＥ又はＳＳＫＥオペレーションのためのローカル的にバッファされた情報を無効化することが許可可能であることを表す「ブロードキャスト・オペレーション許可済み」ラッチ２４４をセットする。望ましいインプリメンテーションでは、その無効化は、指定されたＩＰＴＥ又はＳＳＫＥオペレーションによって影響されるいずれのエントリもＴＬＢから除去するという形式を取る。
【００３３】
ＣＰＵX ２１０がＩＰＴＥ又はＳＳＫＥ命令を実行する時、それはＩＰＴＥ静止（ＩＰＴＥＱ）コマンド又はＳＳＫＥ静止（ＳＳＫＥＱ）コマンドをインターフェース２３１を介してＳＣ、即ち、適正なアドレス情報によって修正された修正ＳＣ２１２に送る。システム・シリアル化コントローラ２２０が既にビジーである場合、そのコマンドはＳＣ応答バス２３２上の信号を介して拒否され、実行コントローラ２４３にＩＰＴＥ又はＳＳＫＥ命令を無効化させ、それを再始動させる。（これは進行中のＩＰＴＥ又はＳＳＫＥに対する割込みがこのＣＰＵにおいて取られることを可能にする）。そうでない場合、ＳＣ２１２はインターフェース２３３を介してＩＰＴＥ又はＳＳＫＥ命令をすべてのＣＰＵ（ＣＰＵX を含む）にブロードキャストし、システム・シリアル化コントローラ２２０は「アイドル」状態から「ブロードキャスト送信済み」状態に移行する。
【００３４】
各ＣＰＵは、ＬＩＣが（実行コントローラ２４３を介して）「ブロードキャスト・オペレーション許可済み」ラッチ２４４をオンにするまで、それのキャッシュ・コントローラ２４２においてＩＰＴＥＱ又はＳＳＫＥＱリクエストを未処理に保持する。（ＣＰＵX では、割込みはＥＳＡ／３９０命令の間許可されないので、これはＩＰＴＥ又はＳＳＫＥ命令に対するＬＩＣによってオンにされる）。そこで、キャッシュ・コントローラ２４２は、ＩＰＴＥ又はＳＳＫＥオペレーションによって影響される可能性のあるすべてのエントリをＴＬＢから除去するための適正なシーケンスを開始する。又、この時点で、ＣＰＵハードウエアは、それがＩＰＴＥＱコマンド又はＳＳＫＥＱコマンドの処理を開始したことを表すコマンド（「ブローキャスト・オペレーション開始済み」コマンド）をＳＣ２１２に送る。ＳＣ２１２におけるシステム・シリアル化コントローラ２２０は各ＣＰＵから「ブロードキャスト・オペレーション開始済み」応答を収集し、そして、すべてのＣＰＵが応答してしまった時、システム・シリアル化コントローラ２２０は「ブロードキャスト送信済み」状態から「全ＣＰＵ開始済み」状態に移行する。
【００３５】
一旦所与のＣＰＵY ２１１が「ブロードキャスト・オペレーション開始済み」を信号してしまうと、そのＣＰＵは「ＩＰＴＥ／ＳＳＫＥ制限モード」のオペレーションに入る。望ましいインプリメンテーションでは、これはＳＣ２１２から、以下のような場合にアクティブである各ＣＰＵ２１１に１つの信号２３４を供給することによって達成される。即ち、
・  システム・シリアル化コントローラ２２０が「ブロードキャスト送信済み」状態又は「全ＣＰＵ開始済み」状態にある場合、
・  そのＣＰＵ２１１が「ブロードキャスト・オペレーション開始済み」を信号された場合。
【００３６】
ＣＰＵX ２１０は「ＩＰＴＥ／ＳＳＫＥ制限モード」に入らないことに注意してほしい。これは、ＣＰＵX ２１０に対するＳＣ２１２からの信号２３４をブロックすることによって、又はＩＰＴＥ命令又はＳＳＫＥ命令が実行されようとしているという事実に基づいてＣＰＵX ２１０にこの信号２３４を無視させることによって達成可能である。
【００３７】
ＣＰＵY ２１１がＩＰＴＥＱ又はＳＳＫＥＱコマンドの処理を完了した後、それは割込みポイントで、しかし、「ＩＰＴＥ／ＳＳＫＥ制限モード」のオペレーションで正規の命令処理を再開する。このモードにある間、キャッシュ・コントローラ２４２は、依然として進行中のＩＰＴＥ又はＳＳＫＥ命令によって影響される（又は、影響されることがある）情報を必要とするいずれの記憶装置アクセスもブロックする。望ましいインプリメンテーションでは、変換テーブルへの如何なるアクセスも、或いはＴＬＢにおいて見つからない記憶キー情報はブロックされる。別のインプリメンテーションでは、この制限は、進行中のシリアル化オペレーションのタイプに基づいて変換テーブル（ＩＰＴＥ）と記憶キー（ＳＳＫＥ）との間を区別することにより更に緩和可能である。それは、記憶装置アクセスと進行中のＩＰＴＥ又はＳＳＫＥ命令に関連した他の修飾子とによっても制限されることがある。ＣＰＵにプログラム割込みを取らせるのではなく、障害を生じた命令を再実行させる特別のタイプのアクセス例外のレポーティングを含む、このアクセスをブロックするための種々の方法が可能である。「ＩＰＴＥ／ＳＳＫＥ制限モード」にある間にそのような記憶装置アクセスが遭遇すると、このモードを表すＳＣ２１２からの信号２３４がインアクティブになるまで、ＣＰＵはプログラムを進行することができないであろう。
【００３８】
ＣＰＵX ２１０では、ＩＰＴＥ又はＳＳＫＥ命令に対するＬＩＣは、システム・シリアル化コントローラ２２０が「全ＣＰＵ開始済み」モードに達するのを待って、センス・コマンドを介してこれらのコントローラをポーリングし、その状態を決定する。一旦この状態に達してしまうと、変更されるべき情報を使用しようとするＣＰＵはあり得ないことが知られている。そこで、ＣＰＵX ２１０におけるＬＩＣはその情報を更新し、記憶装置におけるページ・テーブル・エントリ又は適正なハードウエア構造における記憶キーを変更する。この更新の完了後、ＣＰＵX ２１０におけるＬＩＣは、コマンド（ブロードキャスト・オペレーション完了）をＳＣ２１２に送る。このコマンドに応答して、システム・シリアル化コントローラ２２０は「全ＣＰＵ開始済み」状態から「アイドル」状態に移行する。これは、すべてのＣＰＵ２１１への信号２３４をオフにして「ＩＰＴＥ／ＳＳＫＥ制限モード」を解除し、すべてのＣＰＵ２１１が制限のないオペレーションを再開することを可能にする。（別の方法としては、ＳＣ２１２が「ブローキャスト・オペレーション完了」コマンドをすべてのＣＰＵ２１１に送って、各ＣＰＵにそれの「ＩＰＴＥ／ＳＳＫＥ制限モード」表示をオフにさせる。前者のインプリメンテーションは、ＣＰＵエラーからの回復と関係があるという理由で望ましい）。
【００３９】
（Ａ）ＣＰＵ再試行サポート
本発明の更なる特徴は、システム・シリアル化オペレーションにおけるＣＰＵ再試行アクションを許容することである。このために、ＣＰＵ設計は、ＳＣ又は他のＣＰＵによる介入なしに、ハードウエア・エラーを検出する機能、既知の良好なＣＰＵハードウエア状態に戻る機能、及びＬＩＣ又はＥＳＡ／３９０命令の処理を再開する機能を含むものと仮定する。（これらのアクションのセットは、集合的には、ＣＰＵ再試行として知られている）。ＴＬＢにおいてバッファされたすべての情報が、ＣＰＵ再試行を生じさせたハードウエア障害によって破壊される可能性のあるものなので、ＣＰＵ再試行の一部として廃棄される。これは、ＣＰＵ再試行機能とシステム・シリアル化機能との共通点にとってきわめて重要である。更に、ここでは、ＣＰＵ再試行が何らかの信号発生手段によってＳＣに表示されるものと仮定する。いずれにしても、これは、再試行オペレーションの間そのＣＰＵをＳＣから「隔絶する」ために一般に必要である。
【００４０】
一般に、ＣＰＵ再試行は、その時実行されているプログラム又はＬＩＣにとって透明である。しかし、ＣＰＵ再試行中にそれに送られたコマンドをＣＰＵが喪失するということが起こり得る。これはＩＰＴＥＱコマンド及びＳＳＫＥＱコマンドを含む。これを許容するためには、システム・シリアル化コントローラ２２０は、如何なるＣＰＵY ２１１からの「ＣＰＵ再試行」表示も、あたかもそのＣＰＵY ２１１が「ブロードキャスト・オペレーション開始済み」を信号したかのごとく処理しなければならない。これは、ＣＰＵ再試行アクションが、ＩＰＴＥ又はＳＳＫＥコマンドのために必要とされる部分的ＴＬＢのスーパセットであるので、許容可能である。システム・シリアル化機能が完了する前にＣＰＵY ２１１がＣＰＵ再試行オペレーションを完了する場合（これは、一般的にはありそうもないことであるが）、ＣＰＵY ２１１は、システム・シリアル化機能が完了するまで、ＣＰＵ再試行に続いて「ＩＰＴＥ／ＳＳＫＥ制限モード」にあるであろう。
【００４１】
ＣＰＵX ２１０におけるＬＩＣは、ＣＰＵ再試行に続いてＩＰＴＥオペレーション又はＳＳＫＥオペレーションを単に継続するだけであると思われるので、再試行を行うＣＰＵがＣＰＵX ２１０である場合、更なるＳＣアクションは必要ない。この場合、他のすべてのＣＰＵはこの時間全体の間「ＩＰＴＥ／ＳＳＫＥ制限モード」にあるであろう。
【００４２】
ＣＰＵが、回復することのできないハードウエア・エラーに遭遇する場合、そのＣＰＵはチェック・ストップ状態に入り、これがＳＣ２１２に表示される。ＳＣ２１２におけるシステム・シリアル化コントローラ２２０は、いずれのチェック・ストップしたＣＰＵも、いつもすべてのＩＰＴＥコマンド又はＳＳＫＥコマンドに直ちに応答していたものと見なすであろう。ＣＰＵX ２１０がシステム・シリアル化シーケンス中にチェック・ストップ状態に入る場合、システム・シリアル化コントローラ２２０は、ＣＰＵX ２１０からの「ブロードキャスト・オペレーション完了」信号を待つことなく、それらのコントローラが「全ＣＰＵ開始済み」状態に達した直後に「アイドル」状態に移行する。
【００４３】
ＩＰＴＥ又はＳＳＫＥ命令に関するＣＰＵX におけるＬＩＣでは、そのＩＰＴＥ又はＳＳＫＥ命令がＳＣに送られつつある時間にＣＰＵ再試行がそのＣＰＵにおいて生じる可能性に関する対策がとられなければならない。この場合、システム・シリアル化コントローラ２２０が既にビジーであるようにＬＩＣには見えることにより、ＣＰＵ再試行の結果として、ＩＰＴＥＱ又はＳＳＫＥＱコマンドが２回送られることがあり得る。これが「ビジー」表示の原因であることを考慮して、１つのコマンドが与えられる。そのコマンドによって、ＬＩＣは、システム・シリアル化コントローラ２２０の状態及び現在処理されつつあるＩＰＴＥＱ又はＳＳＫＥＱコマンドを送ったＣＰＵに対するＣＰＵ識別子をセンスすることができる。そこで、これはこのＣＰＵに対するＣＰＵ識別子に比較され、これがＣＰＵ再試行によるその「擬似のビジー」であるかどうかを決定することができる。これが「擬似のビジー」である場合、ＬＩＣはＩＰＴＥシーケンス又はＳＳＫＥシーケンスを継続することができる。ＩＰＴＥコマンド又はＳＳＫＥコマンドに対する「ビジー」応答のすべてのケースに関するこのチェックのオーバヘッドを回避するために、ＣＰＵX ２１０におけるＬＩＣは、ＣＰＵ再試行がこのＣＰＵにおいて所与のタイム・ウインドウ内に実際に生じたかどうかを表す機構を利用してもよい。（「ミリコード化されたプロセッサのためのハードウエア再試行トラップ（Hardware Retry Trap for Millicoded Processor）」と題した米国特許第５,６７３,３９１号参照）。
【００４４】
（Ｂ）通常の静止機構との共通点
ＩＰＴＥ及びＳＳＫＥオペレーションの他に、ＥＳＡ／３９０システムにおける他のオペレーションは、プロセッサにおいてバッファされた情報に関係なく、すべてのプロセッサに対して１つのアクションが単一の時点で生じたように見えるということを時々必要とする。これらはＩＰＴＥ及びＳＳＫＥオペレーションよりもずっと少ない頻度のものであるので、通常の「直接的な」インプリメンテーション（すべてのＣＰＵが一時停止するのを待ち、その機能を遂行し、すべてのＣＰＵを解放する）と関連したパフォーマンスは受容し得るものであり、ＩＰＴＥコマンド及びＳＳＫＥコマンドと関連した複雑さは正当化されない。更に、１つのＣＰＵがシステム・シリアル化コントローラ２２０からの「ビジー」表示により常にＩＰＴＥ又はＳＳＫＥオペレーションの実行が阻止されるようにすることは、少なくとも原理的には可能である。なお、その「ビジー」表示は、ＩＰＴＥ命令及びＳＳＫＥ命令の密な集合がそのシステムにおける他のＣＰＵ上で実行されることによるものである。この場合、通常の静止シーケンスに戻ってＣＰＵがそれのプログラムを前進させることを保証するように、そのＣＰＵにおけるＬＩＣを書くことも可能である。
【００４５】
本発明の望ましい実施例では、通常の形式のシステム・シリアル化及び現在望ましい形式のシステム・シリアル化の両方がシステムに同時に存在することが可能にされる。ＬＩＣは、ＣＰＵが「ブロードキャスト・オペレーション許可済み」ラッチ２４４をセットする時にいつも、そのＣＰＵが「静止」状態にあることを表すラッチ２４５をセットし、その逆も同様である。ＩＰＴＥ又はＳＳＫＥに対するＬＩＣは、システム・シリアル化コントローラ２２０が「全ＣＰＵ開始済み」状態にあることを決定した後にすべての未処理の一般的な静止リクエストが処理されるのを待ち、しかる後、変換テーブル又は記憶装置キーを更新する前に「静止」ラッチ２４５をオフにする。静止割込み及び通常の静止オペレーションを処理するＬＩＣは、「静止」ラッチ２４５をオフにした後に「ブロードキャスト・オペレーション許可済み」ラッチ２４４をオフにする。更に、通常の静止シーケンスを遂行すると思われるＬＩＣは、ＣＰＵが「ＩＰＴＥ／ＳＳＫＥ制限モード」にある間、このシーケンスを開始してはならない。これらの変更は、そのシステムでは一時に１つのＩＰＴＥオペレーション又はＳＳＫＥオペレーションしか進行状態にあることを許されないという事実と共に、両タイプのシステム・シリアル化オペレーションが如何なる矛盾もなく完了することができることを保証する。
【００４６】
（Ｃ）システム・シリアル化制御シーケンス
図３における流れ図は、システム・シリアル化コントローラ２２０によって実施される状態シーケンスを示す。これらのコントローラはアイドル状態３１０にあり、新たなシステム・シリアル化リクエストに関してそのシステムにおけるすべてのＣＰＵからのコマンド・インターフェース２３１をモニタする（判断ステップ３１１）。そのようなコマンドが認識される時、システム・シリアル化コントローラ２２０はコマンド・インターフェース２３３を介してすべてのＣＰＵにこのコマンドをブロードキャストし（ステップ３１２）、しかる後「ブロードキャスト送信済み」状態３２０に入る。それが「ブロードキャスト送信済み」状態にある間、如何なる新たなシステム・シリアル化リクエスト（判断ステップ３２１）も、その新たなリクエストを送ったＣＰＵへのＳＣ応答バス２３２を介して拒否されるであろう（ステップ３２２）。それは、如何なる時点でも１つのそのようなリクエストしか進行状態になり得ないためである。更に、それが「ブロードキャスト送信済み」状態にある間、システム・シリアル化コントローラ２２０は「ブロードキャスト・オペレーション開始済み」コマンドに関してすべてのＣＰＵからのコマンド・インターフェース２３１をモニタする。そのような各コマンドが認識される時（判断ステップ３２３）、そのＣＰＵに対するシステム・シリアル化状態がこれを反映するように更新される（ステップ３２４）。更に、そのＣＰＵが、システム・シリアル化オペレーションを処理することを最初にリクエストしたＣＰＵでない場合（判断ステップ３２５）、そのＣＰＵに対して「ＩＰＴＥ／ＳＳＫＥ制限モード」状態がセットされる（ステップ３２６）。この状態は制御信号２３４を介して各ＣＰＵに反映される。
【００４７】
一旦そのシステムにおける各ＣＰＵからの「ブロードキャスト・オペレーション開始済み」コマンドが受け取られると（判断ステップ３２７）、システム・シリアル化コントローラ２２０は「全ＣＰＵ開始済み」状態３３０に入る。それが「全ＣＰＵ開始済み」状態にある間、如何なる新たなシステム・シリアル化リクエスト（判断ステップ３３１）も、その新たなリクエストを送ったＣＰＵへのＳＣ応答バス２３２を介して拒否されるであろう（ステップ３３２）。それは、如何なる時点でも１つのそのようなリクエストしか進行状態になり得ないためである。更に、それが「全ＣＰＵ開始済み」状態にある間、システム・シリアル化コントローラ２２０は、「ブロードキャスト・オペレーション完了」コマンドに関するシステム・シリアル化オペレーションを最初にリクエストしたＣＰＵからのコマンド・インターフェース２３１をモニタする。そのような各コマンドが認識される時（判断ステップ３３３）、システム・シリアル化コントローラ２２０はすべてのＣＰＵに対する「ＩＰＴＥ／ＳＳＫＥ制限モード」状態をリセットする（ステップ３３４）。この状態は制御信号２３４を介してＣＰＵに反映される。そこで、システム・シリアル化コントローラ２２０は「アイドル」状態３１０に戻る。
【００４８】
（Ｄ）内部コード・シーケンス
図４における流れ図は、システム・シリアル化オペレーションのためのライセンス内部コード（ＬＩＣ）によって行われるシーケンスを示す。望ましいインプリメンテーションでは、このＬＩＣはミリコードの形式のものである。
【００４９】
ＩＰＴＥ命令又はＳＳＫＥ命令を実行するために、ＬＩＣはステップ４００において開始する。ＬＩＣは、このＣＰＵにおける前のオペレーションすべてが完了するまで待機し（判断ステップ４０１）、しかる後、ステップ４１０においてシステム・シリアル化コマンドをＳＣに送る。このコマンドに対する応答は判断ステップ４１１において分析される。システム・シリアル化コントローラ２２０が既にビジーであるためにそのコマンドが拒否される場合、ＬＩＣはステップ４１２においてＩＰＴＥ命令又はＳＳＫＥ命令をヌル化し、ステップ４１３においてオペレーションを完了する。これは、既に進行中であるシステム・シリアル化機能のために、このＣＰＵにおいて割込みが取られることを可能にする。ＣＰＵが再試行オペレーションを完了していることをその応答が表す場合、ＬＩＣはＳＣにおけるシステム・シリアル化コントローラの状態を読み取り（ステップ４１４）、このＣＰＵがそれらのコントローラをビジーにしているＣＰＵであるかどうか知るためのチェックを行う（判断ステップ４１５）。これは、ＣＰＵ再試行事象が、コマンドを送出した後であるがＳＣから応答を受け取る前に生じた場合のことである。事実はそうではない場合（即ち、システム・シリアル化コントローラがビジーでないか又は別のＣＰＵにとってはビジーである場合）、ＬＩＣはステップ４１０に戻り、システム・シリアル化コマンドをＳＣに再発生する。ステップ４１１において分析されたＳＣ応答が、そのコマンドを受け付けるということである場合、又はシステム・シリアル化コントローラがこのＣＰＵからのコマンドを実際に処理しようとしていることがステップ４１５において決定される場合、ＬＩＣはそのシーケンスの次の部分に進む。
【００５０】
ステップ４２０において、ＬＩＣはこのＣＰＵに対して「ブロードキャスト・オペレーション許可済み」ラッチ及び「ＣＰＵ静止」ラッチの両方をセットする。しかる後、ＬＩＣは、ＣＰＵハードウエアがＩＰＴＥオペレーション又はＳＳＫＥオペレーションに関してローカルＴＬＢを処理するのを待つ（判断ステップ４２１）。それは、このＣＰＵにおいて最早そのような未処理のオペレーションが存在しないことによって表される。しかる後，ＬＩＣは「ブロードキャスト・オペレーション許可済み」ラッチをリセットし（ステップ４２２）、そのＳＣにおけるシステム・シリアル化コントローラのポーリングを開始し、これらのコントローラのステータスを反復的に読み取り（ステップ４２３）、それらのコントローラが「全ＣＰＵ開始済み」状態に入っているかどうかを決定するためにその応答をチェックする（判断ステップ４２４）。一旦システム・シリアル化コントローラがその状態に達してしまうと、ＬＩＣは、ＩＰＴＥオペレーション又はＳＳＫＥオペレーションによって必要とされるグローバル資源更新を行う（ステップ４２５）。即ち、ページ・テーブル・エントリが記憶装置において無効にされるか（ＩＰＴＥ）、又は記憶キーが更新される（ＳＳＫＥ）。
【００５１】
次に，ＬＩＣは「ブロードキャスト・オペレーション完了」コマンドをＳＣに発生する（ステップ４３０）。ＣＰＵ再試行事象が生じたことをこのコマンドからの応答が表す場合（判断ステップ４３１）、ＬＩＣはＳＣにおけるシステム・シリアル化コントローラのステータスを読み取り（ステップ４３２）、「ブロードキャスト・オペレーション完了」コマンドが実際にそれらのコントローラに到着したかどうかを決定する。これらのコントローラが依然としてこのＣＰＵに対するコマンドでもってビジーであることをシステム・シリアル化制御ステータスが表す場合（判断ステップ４３３）、ＬＩＣはステップ４３０に戻り、「ブロードキャスト・オペレーション完了」コマンドを再発生する。一旦「ブロードキャスト・オペレーション完了」コマンドが受け付けられたことがわかると（ステップ４３１又は４３３のいずれかによって決定されるように）、ＬＩＣはステップ４５０に進む。
【００５２】
そのシーケンスの次の部分は、ＩＰＴＥコマンド又はＳＳＫＥコマンドを処理している間に他のＣＰＵからの通常の静止リクエストが受け取られていた可能性、或いはこのＣＰＵがそれのブロードキャスト・オペレーションを完了した時以後に他のＣＰＵからＩＰＴＥ又はＳＳＫＥコマンドが受け取られていた可能性を許容する。ステップ４５０において、ＬＩＣはＣＰＵにおける「ブロードキャスト・オペレーション許可済み」ラッチをセットし、しかる後、他のＣＰＵからの未処理の通常の静止リクエストがそのハードウエアに存在しなくなるまでステップ４５１において待機する。一旦その状態が遭遇すると、ＬＩＣはステップ４５２においてこのＣＰＵに対する「ＣＰＵ静止」ラッチをリセットする。ステップ４５３において、ＬＩＣは、未処理のＩＰＴＥ又はＳＳＫＥシリアル化リクエストがそのハードウエアに存在しなくなるまで待機する。一旦この状態が遭遇すると、ＬＩＣは、ステップ４５４においてこのＣＰＵに対する「ブロードキャスト・オペレーション許可済み」ラッチをリセットする。
【００５３】
ステップ４６０において、ＬＩＣは、ＣＰＵ再試行事象がそのシーケンスのこの部分中に生じたかどうか知るためのチェックを行う。それが肯定される場合、ＬＩＣはこのＣＰＵに対する「ＣＰＵ静止」ラッチをセットし（ステップ４６１）、しかる後、ステップ４５７において、システム全体が最早静止されてないことによって表されるように、そのシステムにおける他のいずれかのＣＰＵが静止状態から出るのを待つ。しかる後、ＬＩＣは「ＣＰＵ静止」ラッチをリセットし（ステップ４６３）、ステップ４７０に続く。これは、静止状態を出るべき第１ＣＰＵがＣＰＵ再試行のために静止リクエストを喪失することのなかったＣＰＵであることを保証する。ステップ４６０においてＣＰＵ再試行が検出されない場合、ＬＩＣはステップ４７０へ直接に進む。ステップ４７０において、ＬＩＣは、他のＣＰＵから受け取られたものでもよい任意の通常の静止リクエストに関してもう一度テストを行う。いずれかの静止リクエストが存在する場合、ＬＩＣはステップ４４２に戻ってその静止レシーバ・シーケンスを繰り返す。それが存在しない場合、ＬＩＣは、ステップ４８０においてＩＰＴＥ又はＳＳＫＥオペレーションを完了する。
【００５４】
ＩＰＴＥ又はＳＳＫＥシステム・シリアル化による割込み或いは通常の静止リクエストによる割込みを処理するために、ＬＩＣがステップ４４０において開始する。ステップ４４１において、ＬＩＣはこのＣＰＵにおけるすべての前のオペレーションが完了するのを待ち、しかる後、ステップ４４２において「ＣＰＵ静止」ラッチをセットし、ステップ４５０において「ブロードキャスト・オペレーション許可済み」ラッチをセットする。この時点から、シーケンスは、ステップ４５０において開始する上記のシーケンスと同じである。
【００５５】
本発明のマルチプロセッサ・システム・シリアル化コントローラは、すべてのプロセッサがブロードキャストされたグローバル資源更新リクエストにいつ応答したかを、グローバル資源更新リクエストを行ったプロセッサに信号するということに注意してほしい。一旦その受取り先のプロセッサがブロードキャスト・オペレーションの１つに関する作業を開始すると、それが完了するまでそれが如何なる命令も実行しないということが設計によって保証されている。従って、応答はそれがオペレーションを「開始」させたということであるので実時間であるけれども、論理的意味では、それはオペレーションを「実行」したことと等価である。勿論、別の方法として、すべてのプロセッサがブロードキャストされたグローバル資源更新リクエストの処理を完了した時、グローバル資源更新リクエストを行ったプロセッサに信号するシステム・シリアル化コントローラのコンテキスト内で信号が送られる。本発明の望ましい実施例におけるこの信号は、タスクの完了を包含するリクエストの受領に関する信号である。
【００５６】
本発明の望ましい実施例を開示したけれども、現在及び将来においても、特許請求の範囲の項の技術的範囲内で、当業者が種々の改良及び機能強化を行い得ることは勿論である。これらの特許請求の範囲は、最初に開示された発明に対する適正な保護を維持するように解釈されるべきである。
【００５７】
まとめとして、本発明の構成に関して以下の事項を開示する。
【００５８】
（１）複数のプロセッサを含み、
前記プロセッサの各々はシステム静止リクエスト及びグローバル資源の更新を行うためのリクエストを発生し及び該リクエストに応答し、前記システム静止リクエスト及び前記更新を行うためのリクエストは前記複数のプロセッサのうちの１つ又は複数個においてバッファされること、及び
記憶装置コントローラ及びシステム・シリアル化コントローラを含むシステム・オペレーション・コントローラが、前記グローバル資源の更新を指示すること、
を特徴とするマルチプロセッサ・システム。
（２）前記グローバル資源はアドレス変換テーブル・エントリ及び記憶保護キーを含む、上記（１）に記載のマルチプロセッサ・システム。
（３）前記システム・シリアル化コントローラは、グローバル資源の更新を行うために各プロセッサからリクエストを受け取り、そのようなリクエストの各々に応答して前記システム・シリアル化コントローラがビジーであることを表すか又はグローバル資源更新リクエストを前記システムにおけるすべてのプロセッサにブロードキャストする、上記（２）に記載のマルチプロセッサ・システム。
（４）ブロードキャストされたグローバル資源更新リクエストを受け取る各プロセッサは、割込み可能なポイントにおいて命令処理を中断して、前記リクエストが受け付けられたことを前記システム・シリアル化コントローラに応答し、更新される資源のすべてのローカル・コピーを修正又は無効化することによって前記リクエストされたグローバル資源更新を処理し、割込みの前記ポイントにおいて命令処理を再開する、上記（３）に記載のマルチプロセッサ・システム。
（５）前記システム・シリアル化コントローラは、前記グローバル資源更新リクエストを行ったプロセッサを除くブロードキャストされたグローバル資源更新リクエストに応答した各プロセッサを、更新されるグローバル資源へのアクセスが禁止されるという制限された制御状態に入らせる、上記（４）に記載のマルチプロセッサ・システム。
（６）前記システム・シリアル化コントローラは、すべてのプロセッサが前記ブロードキャストされたグローバル資源更新リクエストにいつ応答したかを、前記グローバル資源更新リクエストを行ったプロセッサに信号する、上記（５）に記載のマルチプロセッサ・システム。
（７）前記リクエストを行ったプロセッサは、グローバル資源を修正し、しかる後、前記グローバル資源更新オペレーションが完了したことを前記システム・シリアル化コントローラに信号する、上記（６）に記載のマルチプロセッサ・システム。
（８）前記システム・シリアル化コントローラは、すべてのプロセッサを前記制限された制御状態のままにさせ、必要な時に、すべてのプロセッサが前記更新されたグローバル資源をアクセスすることを可能にする、上記（７）に記載のマルチプロセッサ・システム。
（９）前記システム・オペレーション・コントローラは、すべてのプロセッサが共に一時停止するシステム静止を必要とする他のプロセッサと前記グローバル資源更新オペレーションが共存することを可能にし、前記オペレーションにおける任意の時点で前記システムにおけるいずれのＣＰＵにおいてもＣＰＵ再試行アクションを可能にするライセンス内部コード（ＬＩＣ）シーケンスのための記憶装置を含む、上記（１）又は（８）に記載のマルチプロセッサ・システム。
（１０）前記システム・オペレーション・コントローラは、記憶装置コントローラと、各プロセッサに対するページ・テーブル・エントリ無効化（ＩＰＴＥ）オペレーション及び記憶保護キー設定（ＳＳＫＥ）オペレーションのためのローカル・バッファとを含む、上記（９）に記載のマルチプロセッサ・システム。
（１１）すべてのプロセッサにブロードキャストされたグローバル資源更新リクエストは、前記プロセッサをＩＰＴＥ及びＳＳＫＥオペレーションのためのＩＰＴＥ／ＳＳＫＥ制限モードに設定し、ブロードキャスト送信済み状態に入ることは新しいシステム・シリアル化リクエスト・コマンドが完全に処理されるまでその後のリクエスト・コマンドを処理しないようにする、上記（１０）に記載のマルチプロセッサ・システム。
【図面の簡単な説明】
【図１】本発明の望ましい実施例の概要を概略的に示し、特に、新しいコントローラを含む本発明の望ましい特定の実施例に従って、ミリコード・システムのコンポーネントを表すブロック図を示す。
【図２】本発明の望ましい実施例と関連した特定のコントローラを表すブロック図を示す。
【図３】ページ・テーブル・エントリ無効化（ＩＰＴＥ）及び記憶キー拡張設定（ＳＳＫＥ）のための静止オペレーションに特有の記憶装置コントローラの制御におけるハードウエア・シーケンスの流れ図である。
【図４】他のすべてのプロセッサが静止するのを待つことなくローカル・バッファ部分が処理されるページ・テーブル・エントリ無効化（ＩＰＴＥ）及び記憶キー拡張設定（ＳＳＫＥ）のための静止オペレーション処理するためのミリコード・ルーチンの流れ図の一部である。
【図５】他のすべてのプロセッサが静止するのを待つことなくローカル・バッファ部分が処理されるページ・テーブル・エントリ無効化（ＩＰＴＥ）及び記憶キー拡張設定（ＳＳＫＥ）のための静止オペレーション処理するためのミリコード・ルーチンの流れ図の一部である。
【図１】
0003701814.tif 000002
【図２】
0003701814.tif 000003
【図３】
0003701814.tif 000004
【図４】
0003701814.tif 000005
【図５】
0003701814.tif 000006