(57)【特許請求の範囲】
【請求項１】
データ処理システム内で、プロセッサ内のイベントに関連する命令およびデータを伝達するための方法であって、
イベント・データを伝達するために前記プロセッサのイベント機能を有する１つまたは複数のチャネルを確立するステップであって、チャネル・マップ・リスト中のチャネルＩＤにより前記１つまたは複数のチャネルを指定することを含む、ステップと、
前記１つまたは複数のチャネルを介してデータを受信するステップと、
前記１つまたは複数のチャネルに関連する１つまたは複数のレジスタに前記データを保管するステップと、
前記１つまたは複数のレジスタに保管された前記データに基づいて１つまたは複数のイベントを処理するステップと、を含み、
前記イベント機能が保留イベント・レジスタを含み、エッジ起動型イベントが前記エッジ起動型イベントに対応する前記保留イベント・レジスタ内のビットを設定し、
書き込みイベント確認応答チャネル・ハードウェア内の対応ビットに値を書き込むことにより、前記保留イベント・レジスタ内のビットによってイベントが確認され、
読み取りイベント状況チャネル・ハードウェアに対して読み取りチャネル命令を発行することにより、書き込みイベント・マスク・チャネル・ハードウェア内の値と論理積が取られた前記保留イベント・レジスタ内の値が返され、それにより、前記書き込みイベント・マスク・チャネル・ハードウェア内で識別された使用可能イベントのみに関するイベント状況情報を提供し、
新しい値が前記書き込みイベント・マスク・チャネル・ハードウェアに書き込まれたときまたは新しいイベントが前記保留イベント・レジスタに記録されたときに、前記読み取りイベント状況チャネル・ハードウェアの内容が変更され、
前記読み取りイベント状況チャネル・ハードウェア内のビットを変更することにより、前記読み取りイベント状況チャネル・ハードウェア内に保管された読み取りイベント状況チャネル・カウント値が１だけ増分され、
書き込みチャネル命令が書き込みイベント確認応答チャネル・ハードウェアに送信された後、前記読み取りイベント状況チャネル・ハードウェア内にイベントが設定されたときに、前記読み取りイベント状況チャネル・カウント値が１だけ増分され、
チャネル読み取り命令を使用して前記読み取りイベント状況チャネル・ハードウェア内のデータが読み取られたときに、前記読み取りイベント状況チャネル・カウント値が１だけ減分され、
前記読み取りイベント状況チャネル・カウント値がゼロ以外であるときに、前記プロセッサに割り込みが送信される、方法。
【請求項２】
前記１つまたは複数のチャネルがプロセッサ読み取りイベント状況チャネル・ハードウェアを含み、前記プロセッサ読み取りイベント状況チャネル・ハードウェアが、プロセッサ書き込みイベント・マスク・チャネル・ハードウェア中に保管された値によって使用可能になったすべてのイベントの現行状況を特定するビットを含む、請求項１に記載の方法。
【請求項３】
前記プロセッサ読み取りイベント状況チャネル・ハードウェアに関連するチャネル・カウント値がゼロである場合、前記プロセッサ読み取りイベント状況チャネル・ハードウェアに対して読み取りチャネル命令を発行することにより、前記プロセッサが停止する、請求項２に記載の方法。
【請求項４】
イベントが発生し、プロセッサ書き込みイベント・マスク・チャネル・ハードウェア内の前記イベントに関する対応ビットが１である場合、プロセッサ保留イベント・レジスタ内の１に対応するビット位置の１がプロセッサ書き込みイベント・マスク・チャネル・ハードウェアに書き込まれた場合、プロセッサ書き込みイベント確認応答チャネル・ハードウェアに書き込みチャネル命令が送信された後、使用可能イベントが保留中である場合、またはプロセッサ・チャネル・アクセス機能を使用して、特権ソフトウェアが前記チャネル・カウントを１に設定した場合、前記プロセッサ読み取りイベント状況チャネル・ハードウェアに関連するチャネル・カウントが１に設定される、請求項２に記載の方法。
【請求項５】
１つまたは複数のイベントを処理する前記ステップが、
発生したイベントを識別するために、前記プロセッサ読み取りイベント状況チャネル・ハードウェアに対して読み取りチャネル命令を発行するステップと、
処理すべきすべてのイベントについてプロセッサ書き込みイベント確認応答チャネル・ハードウェア内の対応ビットを書き込むために書き込みチャネル命令を発行するステップと、
前記イベントを処理するステップと、を含む、請求項２に記載の方法。
【請求項６】
前記１つまたは複数のチャネルがプロセッサ書き込みイベント・マスク・チャネル・ハードウェアを含み、
プロセッサ書き込みイベント・マスク・チャネル・ハードウェアが、プロセッサ読み取りイベント状況チャネルの状態に影響するイベントを識別するプロセッサ・イベント・マスクを含み、
前記プロセッサ書き込みイベント・マスク・チャネル・ハードウェアに対して発行された書き込みチャネル命令により、前記プロセッサ・イベント・マスク内の対応イベントが使用可能になり、プロセッサ読み取りイベント状況チャネル・ハードウェアの状況が更新される、請求項１に記載の方法。
【請求項７】
前記１つまたは複数のチャネルが、イベント状況マスクの現行値を読み取るために使用されるプロセッサ読み取りイベント・マスク・チャネル・ハードウェアを含み、
前記プロセッサ読み取りイベント・マスク・チャネル・ハードウェアに対して発行された読み取りチャネル命令により、プロセッサ書き込みイベント・マスク・チャネル・ハードウェアに最後に書き込まれたデータが返される、請求項１に記載の方法。
【請求項８】
前記１つまたは複数のチャネルが、発生したイベントを確認するために使用されるプロセッサ書き込みイベント確認応答チャネル・ハードウェアを含み、
特定のイベント・ビットが設定された前記プロセッサ書き込みイベント確認応答チャネル・ハードウェアに対して書き込みチャネル命令を発行することにより、ソフトウェアによって処理中のものとして前記対応イベントが確認される、請求項１に記載の方法。
【請求項９】
前記１つまたは複数のレジスタに保管された前記データに基づいて１つまたは複数のイベントを処理する前記ステップが、
前記１つまたは複数のチャネルに関連するチャネル・カウントの検出、前記プロセッサのデクリメンタに関連するデクリメンタ・カウント、またはプロセッサ・チャネル・アクセス動作のうちの少なくとも１つによりイベントを識別するステップを含む、請求項１に記載の方法。
【請求項１０】
メモリ・フロー・コントローラ（ＭＦＣ）読み取りタグ・グループ状況チャネル・ハードウェアに関するチャネル・カウントが０からゼロ以外の値に変化したときにＭＦＣタグ・グループ状況更新イベントが設定され、タグ・グループが処理を完了したことと、前記プロセッサを停止せずにＭＦＣ読み取りタグ・グループ状況チャネル・ハードウェアを読み取れるように前記ＭＦＣ読み取りタグ・グループ状況チャネル・ハードウェアが更新されたことを前記ＭＦＣタグ・グループ状況更新イベントが前記プロセッサ上で実行中のプログラムに通知する、請求項９に記載の方法。
【請求項１１】
メモリ・フロー・コントローラ（ＭＦＣ）読み取りリスト停止通知タグ状況チャネル・ハードウェアに関するチャネル・カウントが０からゼロ以外の値に変化したときに、ＭＦＣ直接メモリ・アクセス（ＤＭＡ）リスト・コマンド停止通知イベントが設定され、ＭＦＣ  ＤＭＡリスト・コマンド内のリスト・エレメントが完了したことと、前記プロセッサを停止せずにＭＦＣ読み取りリスト停止通知タグ状況チャネル・ハードウェアを読み取れるように前記ＭＦＣ読み取りリスト停止通知タグ状況チャネル・ハードウェアが更新されたことを前記ＭＦＣ  ＤＭＡリスト・コマンド停止通知イベントが前記プロセッサ上で実行中のプログラムに通知する、請求項９に記載の方法。
【請求項１２】
待機メモリ・フロー制御（ＭＦＣ）コマンド命令コード・レジスタに関するチャネル・カウントが０からゼロ以外の値に変化したときに、ＭＦＣプロセッサ・コマンド・キュー使用可能イベントが設定され、ＭＦＣプロセッサ・コマンド・キュー内の項目が使用可能であることと、前記ＭＦＣコマンド命令コード・チャネル・ハードウェアに送信された書き込みチャネル命令によって前記プロセッサが停止しないことを前記ＭＦＣプロセッサ・コマンド・キュー使用可能イベントが前記プロセッサ上で実行中のプログラムに通知する、請求項９に記載の方法。
【請求項１３】
プロセッサ読み取りインバウンド・メールボックス・チャネル・ハードウェアに関するチャネル・カウントが０からゼロ以外の値に変化したときに、プロセッサ・インバウンド・メールボックス使用可能イベントが設定され、
外部装置が空のプロセッサ・メールボックス・レジスタに書き込んだことと、プロセッサ読み取りインバウンド・メールボックス・チャネル・ハードウェアに対して発行された読み取りチャネル命令によって前記プロセッサが停止しないことを前記プロセッサ・インバウンド・メールボックス使用可能イベントが前記プロセッサ上で実行中のプログラムに通知し、
プロセッサ書き込みアウトバウンド割り込みメールボックス・チャネル・カウントが０からゼロ以外の値に変化したときにプロセッサ・アウトバウンド割り込みメールボックス使用可能イベントが設定され、
外部装置が満杯のプロセッサ・アウトバウンド割り込みメールボックス・レジスタから読み取ったことと、プロセッサ書き込みアウトバウンド割り込みメールボックス・チャネル・ハードウェアに送信された書き込みチャネル命令によって前記プロセッサが停止しないことを前記プロセッサ・アウトバウンド割り込みメールボックス・イベントが前記プロセッサ上で実行中のプログラムに通知する、請求項９に記載の方法。
【請求項１４】
対応するプロセッサ信号通知チャネル・ハードウェアに関するチャネル・カウントが０からゼロ以外の値に変化したときにプロセッサ信号通知使用可能イベントが設定され、外部装置が空のプロセッサ信号通知レジスタに書き込んだことと、プロセッサ信号通知チャネル・ハードウェアに対して発行された読み取りチャネル命令によって前記プロセッサが停止しないことを前記プロセッサ信号通知使用可能イベントが前記プロセッサ上で実行中のプログラムに通知する、請求項９に記載の方法。
【請求項１５】
アトミック予約が消失したときにロック・ライン予約イベントが設定され、バス・アクションの結果としてキャッシュ・ライン上の予約が消失したことを前記ロック・ライン予約イベントが前記プロセッサ上で実行中のプログラムに通知する、請求項９に記載の方法。
【請求項１６】
プロセッサ書き込みアウトバウンド・メールボックス・チャネル・カウントが０からゼロ以外の値に変化したときに、プロセッサ・アウトバウンド・メールボックス使用可能イベントが設定され、
外部装置が満杯のプロセッサ・アウトバウンド・メールボックス・レジスタから読み取ったことと、プロセッサ書き込みアウトバウンド・メールボックス・チャネル・ハードウェアに送信された書き込みチャネル命令によって前記プロセッサが停止しないことを前記プロセッサ・アウトバウンド・メールボックス・イベントが前記プロセッサ上で実行中のプログラムに通知する、請求項９に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般に、改良されたデータ処理システムおよび方法に関する。より具体的には、本発明は、プロセッサと外部装置との間で命令およびデータを伝達するためのシステムおよび方法を対象とする。
【背景技術】
【０００２】
通常、従来技術では、ＣＰＵまたはその他の処理装置（ＰＵ：processing unit）がプログラムの外部の何らかのイベントを待っているときに、オペレーティング・システムまたはアクティブ・プログラムはポーリング・ループを実行し、そこで、それが待っているイベントが発生するまで、プログラムに関してＰＵによって使用されるイベント・レジスタを読み取り続けることになる。プログラムが動作している間、ＰＵはイベント・レジスタをポーリングしており、有用な作業を実行していない。
【０００３】
典型的な最新プロセッサは、この通信のために仮想メモリおよび外部装置のメモリ・マッピングを使用する場合が多い。これに反して、いくつかのプロセッサは、特にマルチプロセッサ環境では、仮想メモリではなく、ローカル・メモリにのみアクセスできる。ローカル・メモリは有限であり、典型的なマルチプロセッサ構成では、このローカル・メモリの外部のいかなるメモリも、ロード動作および保管動作によってアクセスすることができない。したがって、外部装置からの応答を待っている間、その他のＰＵ機能のためにローカル・メモリを使用することは限定される。ＰＵが同時にいくつかの装置からの通信応答を待っている場合、その他の機能のために使用可能なメモリはさらに限定される。
【０００４】
メモリは、着信または発信レジスタ内に有効データが存在するかどうかを追跡するために使用することもできる。有効データとは、受信装置による使用のためにレジスタ内に置かれたが、受信装置によってまだアクセスされていないデータである。したがって、上記により、最新のコンピューティング・デバイス内のメモリ・リソース上に多くのドレインが存在することは明白である。
【特許文献１】米国特許出願公開第２００４／０２６４４４５号
【発明の開示】
【発明が解決しようとする課題】
【０００５】
上記を考慮すると、このような通信がプロセッサのローカル・メモリまたは仮想メモリに負担をかけないような、プロセッサとプロセッサの外部のその他の装置、たとえば、その他のプロセッサ、入出力（Ｉ／Ｏ）装置などとの間で通信するためのシステムおよび方法を有することは有益なことになるであろう。その上、データまたはイベントを待っている間にプロセッサが低電力状態になることを可能にするシステムおよび方法を有することは有益なことになるであろう。
【課題を解決するための手段】
【０００６】
本発明は、プロセッサと外部装置との間で命令およびデータを伝達するためのシステムおよび方法あるいはプロセッサ・イベント機能と通信するためのシステムおよび方法もしくはその両方を提供する。本発明のシステムおよび方法は、プロセッサとメモリ・フロー・コントローラとの間で通信するための１次メカニズムとしてチャネル・インターフェースを利用する。チャネル・インターフェースは、たとえば、プロセッサ機能、メモリ・フロー制御機能、マシン状態レジスタ、および外部プロセッサ割り込み機能と通信するためのチャネルを提供する。これらのチャネルは、プロセッサのローカル・ストアにかかる負担を低減するとともにバス・トラフィックを最小限にする働きをする。
【０００７】
これらのチャネルは、ブロッキングまたは非ブロッキングとして指定することができる。ブロッキング・チャネルの場合、いかなるデータも対応するレジスタから読み取るために使用可能ではないか、またはいかなる空間も対応するレジスタに書き込むために使用可能ではないときに、プロセッサは低電力「停止（stall）」状態になる。データが使用可能になるかまたは空間が解放されると、プロセッサは、ブロッキング・チャネルによる通信を介して、自動的に起動される。したがって、本発明のチャネルは、従来技術のシステムのように、イベント・レジスタ上で連続的にポーリングまたはスピンするのではなく、プロセッサが低電力状態にとどまることを可能にする。
【０００８】
本発明の上記その他の特徴および利点は、本発明の模範的な諸実施形態について以下に示す詳細な説明に記載されるかまたはその詳細な説明を考慮すると当業者には明らかになるであろう。
【０００９】
本発明に特有と思われる新規な特徴は特許請求の範囲に明記されている。しかし、本発明そのものならびに本発明の好ましい使用態様、その他の目的および利点は、添付図面に関連して読んだときに、例示的な一実施形態について以下に示す詳細な説明を参照することにより、最も良く理解されるであろう。
【発明を実施するための最良の形態】
【００１０】
図１は、本発明の諸態様を実装可能なデータ処理システムの模範的なブロック図である。図１に示されている模範的なデータ処理システムは、インターナショナル・ビジネス・マシーンズ社から入手可能なＣＥＬＬブロードバンド・エンジン・プロセッサなどの異機種ブロードバンド・プロセッサ・アーキテクチャの実装の一例である。ブロードバンド・プロセッサ・アーキテクチャ（ＢＰＡ：Broadband Processor Architecture）は本発明の好ましい諸実施形態の説明で使用されるが、以下の説明を読むと当業者には容易に明らかになるように、本発明はこのようなものに限定されない。
【００１１】
図１に示されている通り、ＢＰＡ１００は、パワー・プロセッサ・ユニット（ＰＰＵ）１１６ならびにそのＬ１およびＬ２キャッシュ１１２および１１４を有するパワー・プロセッサ・エレメント（ＰＰＥ）１１０と、そのそれぞれが専用の処理装置（ＳＰＵ）１４０〜１５４、メモリ・フロー制御（ＭＦＣ）１５５〜１６２、ローカル・メモリまたはストア（ＬＳ）１６３〜１７０、およびバス・インターフェース・ユニット（ＢＩＵユニット）１８０〜１９４を有する複数の協同プロセッサ・エレメント（ＳＰＥ）１２０〜１３４との異機種配置を含み、そのバス・インターフェース・ユニットはたとえば、直接メモリ・アクセス（ＤＭＡ）、メモリ管理ユニット（ＭＭＵ）、およびバス・インターフェース・ユニットの組み合わせにすることができる。高帯域幅内部エレメント相互接続バス（ＥＩＢ）１９６、バス・インターフェース・ユニット（ＢＩＣ）１９７、およびメモリ・インターフェース・コントローラ（ＭＩＣ）１９８も提供される。ブロードバンド・エンジン１００は、図１に描写されているエレメントのそれぞれを単一マイクロプロセッサ・チップ上に設けることができるような１チップ上のシステム（system-on-a-chip）にすることができる。
【００１２】
ＢＰＡ１００は、図１に描写されているエレメントのそれぞれを単一マイクロプロセッサ・チップ上に設けることができるような１チップ上のシステムにすることができる。その上、ＢＰＡ１００は、ＳＰＵのそれぞれがシステム内の他のＳＰＵのそれぞれから種々の命令を受信できる異機種処理環境である。その上、ＳＰＵに関する命令セットはＰＰＵのものとは異なり、たとえば、ＰＰＵは縮小命令セット・コンピュータ（ＲＩＳＣ）ベースの命令を実行することができ、ＳＰＵはベクトル化命令を実行する。
【００１３】
ＳＰＥ１２０〜１３４は、相互に結合され、ＥＩＢ１９６を介してＬ２キャッシュ１１４に結合される。加えて、ＳＰＥ１２０〜１３４は、ＥＩＢ１９６を介してＭＩＣ１９８およびＢＩＣ１９７に結合される。ＭＩＣ１９８は、共用メモリ１９９への通信インターフェースを提供する。ＢＩＣ１９７は、ＢＰＡ１００とその他の外部バスおよび装置との通信インターフェースを提供する。
【００１４】
ＰＰＥ１１０はデュアル・スレッドＰＰＥ１１０である。このデュアル・スレッドＰＰＥ１１０と８個のＳＰＥ１２０〜１３４とを組み合わせることにより、１０個の同時スレッドと１２８個以上の未解決メモリ要求を処理可能なＢＰＡ１００になる。ＰＰＥ１１０は、計算作業負荷のほとんどを処理する他の８個のＳＰＥ１２０〜１３４のためのコントローラとして動作する。ＰＰＥ１１０は従来のオペレーティング・システムを実行するために使用することができ、ＳＰＥ１２０〜１３４はたとえばベクトル化浮動小数点コード実行を実行する。
【００１５】
ＳＰＥ１２０〜１３４は、協同処理装置（ＳＰＵ）１４０〜１５４と、メモリ・フロー制御ユニット１５５〜１６２と、ローカル・メモリまたはストア１６３〜１７４と、インターフェース・ユニット１８０〜１９４とを含む。ローカル・メモリまたはストア１６３〜１７４は、模範的な一実施形態では、ＰＰＥ１１０にとって可視のものであり、ソフトウェアによって直接アドレス指定可能な２５６ＫＢの命令およびデータ・メモリを含む。
【００１６】
ＰＰＥ１１０は、ＳＰＥ１２０〜１３４に小さいプログラムまたはスレッドをロードし、複雑な動作内の各ステップを処理するためにＳＰＥをまとめてチェーニングすることができる。たとえば、ＢＰＡ１００を取り入れたセット・トップ・ボックスは、ＤＶＤを読み取るため、ビデオおよびオーディオ・デコードのため、ならびにディスプレイのためのプログラムをロードすることができ、データは最終的に出力ディスプレイ上に到達するまで、ＳＰＥからＳＰＥへと渡されるであろう。
【００１７】
メモリ・フロー制御ユニット（ＭＦＣ）１５５〜１６２は、システムの残りの部分およびその他のエレメントへのＳＰＵのためのインターフェースとして働く。ＭＦＣ１５５〜１６２は、主記憶装置とローカル・ストア１６３〜１７４との間のデータ転送、保護、および同期のための１次メカニズムを提供する。論理的には、１つのプロセッサ内の各ＳＰＵごとに１つのＭＦＣが存在する。いくつかの実装例は、複数のＳＰＵ間で単一ＭＦＣのリソースを共用することができる。このような場合、ＭＦＣに関して定義されたすべての機能およびコマンドは、各ＳＰＵ用のソフトウェアにとって独立しているように見えなければならない。ＭＦＣを共用することの効果は、実装依存の機能およびコマンドに限定される。
【００１８】
メモリ・フロー制御（ＭＦＣ）ユニット
図２は、本発明の模範的な一実施形態による典型的なメモリ・フロー制御（ＭＦＣ）ユニット２００の模範的なブロック図である。この模範的な実施形態では、ＭＦＣ２００は、ＳＰＵへの２つのインターフェース２１０および２１２と、バス・インターフェース・ユニット（ＢＩＵ）２２０への２つのインターフェース２１４および２１６と、任意選択のＳＬ１キャッシュ２３０への２つのインターフェース２２２および２２４とを有する。ＳＰＵインターフェース２１０および２１２は、ＳＰＵチャネル・インターフェース２１０と、ＳＰＵローカル記憶インターフェース２１２である。ＳＰＵチャネル・インターフェース２１０により、ＳＰＵは、ＭＦＣ機能にアクセスし、ＭＦＣコマンドを発行することができる。ＳＰＵローカル記憶インターフェース２１２は、ＳＰＵ内のローカル・ストアにアクセスするためにＭＦＣ２００によって使用される。ＢＩＵ２２０への一方のインターフェース２１４により、ＭＦＣ機能へのメモリ・マップ入出力（ＭＭＩＯ：Memory Mapped I/O）アクセスが可能になる。また、このインターフェース２１４により、他のプロセッサがＭＦＣコマンドを発行することもできる。ＭＭＩＯを使用して発行されたコマンドは、ＭＦＣプロキシ・コマンドと呼ばれる。
【００１９】
ＳＬ１キャッシュへのインターフェース２２２および２２４は主にデータ転送用である。一方のインターフェース２２２は主記憶装置内のアドレス変換テーブルにアクセスするためにＭＦＣ２００によって使用され、もう一方のインターフェース２２４は主記憶装置とローカル記憶装置との間のデータの転送に使用される。
【００２０】
図２に示されている通り、典型的なＭＦＣ内の主要ユニットとしては、メモリ・マップ入出力（ＭＭＩＯ）インターフェース２４０と、ＭＦＣレジスタ２５０と、ＤＭＡコントローラ２６０とを含む。ＭＭＩＯインターフェース２４０は、ＳＰＵのＭＦＣ機能をシステムの実アドレス空間にマッピングする。これにより、システム内の任意のプロセッサまたは任意の装置からＭＦＣ機能へのアクセスが可能になる。加えて、ＭＭＩＯインターフェース２４０は、ＳＰＵのローカル・ストアを実アドレス空間にマッピングするよう構成することができる。これにより、システム内の任意のプロセッサまたは任意の装置からローカル・ストアへの直接アクセスが可能になり、ローカル・ストア間転送ならびに入出力装置がＳＰＵのローカル・ストア・ドメインに直接アクセスする能力が使用可能になる。
【００２１】
ＭＦＣレジスタ・ユニット２５０は、ＭＦＣ機能のほとんどを収容する。いくつかの機能は直接メモリ・アクセス・コントローラ（ＤＭＡＣ）２６０に収容される。ＭＦＣ２００内の機能のリストは以下の通りである。ユーザ・モード環境機能、すなわち、非特権アプリケーションからアクセス可能な環境機能としては、（１）メールボックス機能、（２）ＳＰＵ信号通知機能、（３）プロキシ・タグ・グループ完了機能、（４）ＭＦＣマルチソース同期機能、（５）ＳＰＵ制御および状況機能、ならびに（６）ＳＰＵ分離機能を含む。特権モード環境機能、すなわち、オペレーティング・システムなどの特権ソフトウェアのみによってアクセス可能な機能としては、（１）ＭＦＣ状態レジスタ１、（２）ＭＦＣ論理区画ＩＤレジスタ、（３）ＭＦＣ記憶記述レジスタ、（４）ＭＦＣデータ・アドレス・レジスタ、（５）ＭＦＣデータ記憶割り込み状況レジスタ、（６）ＭＦＣアドレス比較制御レジスタ、（７）ＭＦＣローカル記憶アドレス比較機能、（８）ＭＦＣコマンド・エラー・レジスタ、（９）ＭＦＣデータ記憶割り込みポインタ・レジスタ、（１０）ＭＦＣ制御レジスタ、（１１）ＭＦＣアトミック・フラッシュ・レジスタ、（１２）ＳＰＵアウトバウンド割り込みメールボックス・レジスタ、（１３）ＳＰＵ特権機能、（１４）ＳＰＵ特権制御レジスタ、（１５）ＳＰＵローカル記憶制限レジスタ、（１６）ＳＰＵ構成レジスタ、および（１７）ＳＰＥコンテキスト保存復元を含む。
【００２２】
本発明のメカニズムにとって特に重要な機能、すなわち、メールボックス機能、ＳＰＵ信号通知機能、プロキシ・タグ・グループ完了機能、ＭＦＣマルチソース同期機能、ＳＰＵチャネル・アクセス機能、ＳＰＵイベント機能、および割り込み機能について、以下により詳細に説明する。
【００２３】
データの同期および転送は、一般に、ＭＦＣ２００内のＤＭＡＣ２６０の役割である。ＤＭＡＣ２６０は、ＳＰＵのローカル記憶装置と主記憶域との間でデータを移動することができる。任意選択で、データをＳＬ１キャッシュに入れることができる。
【００２４】
ＳＰＥおよびＰＰＥは、コマンド・キュー２７０および２８０のうちの一方によりＭＦＣへのＤＭＡコマンド要求をキューイングすることにより、これらのＤＭＡ動作を実行するようＭＦＣ２００に命令する。ＳＰＥによって発行されたコマンドは、ＭＦＣ  ＳＰＵコマンド・キュー２８０にキューイングされる。ＰＰＥによって発行されたコマンドは、ＭＦＣプロキシ・コマンド・キュー２７０にキューイングされる。ＭＦＣは、ＤＭＡ転送に必要なすべてのＭＦＣアドレス変換およびＭＦＣアクセス保護チェックを実行するためにメモリ・マッピング・ユニット（ＭＭＵ）２９０を使用する。
【００２５】
ＭＦＣコマンドは、ＳＰＵ内で実行されるコードが主記憶装置にアクセスし、システム内の他のプロセッサおよび装置との同期を維持できるようにする主要な方法を提供する。また、任意選択のキャッシュを管理するためのコマンドも提供される。ＭＦＣコマンドは、ＳＰＵ上で実行されるコードによるかまたはＰＰＥなどの他のプロセッサまたは装置上で実行されるコードによって発行することができる。関連ＳＰＵ上で実行されるコードは、ＭＦＣコマンドを発行するための一連のチャネル命令を実行する。他のプロセッサまたは装置上で実行されるコードは、ＳＰＥに対してＭＦＣコマンドを発行するための一連のメモリ・マップ入出力（ＭＭＩＯ）転送を実行する。発行されたコマンドは、コマンド・キュー２７０および２８０のうちの一方にキューイングされる。
【００２６】
一般に、コマンドは、ＭＭＩＯレジスタを使用して、または関連ＳＰＵによって実行されたチャネル命令により、キューイングすることができる。ＭＭＩＯ方法は、ＳＰＥに代わって主記憶装置と関連ローカル記憶装置との間のデータの転送を制御するためにＰＰＥが使用するためのものである。データを転送するＭＦＣコマンドは、ＭＦＣ  ＤＭＡコマンドと呼ばれる。ＭＦＣ  ＤＭＡコマンドに関するデータ転送方向は必ずＳＰＥの観点から参照される。したがって、ＳＰＥに（主記憶装置からローカル記憶装置に）データを転送するコマンドは取得（ｇｅｔ）コマンドと見なされ、ＳＰＥから（ローカル記憶装置から主記憶装置に）データを転送するコマンドはプット（ｐｕｔ）コマンドと見なされる。
【００２７】
ＭＦＣコマンドは、そのコマンドの動作に影響する複数のパラメータを利用する。図３は、本発明の模範的な一実施形態によるＭＦＣコマンドに関するパラメータ・ニーモニックを例示する模範的な図である。すべてのパラメータがすべてのコマンドによって使用されるわけではない。たとえば、ＥＡＨパラメータは任意選択である。任意選択のパラメータがコマンドに指定されない場合、その任意選択のパラメータはハードウェアによって「０」に設定される。
【００２８】
ＭＦＣコマンドは、定義済みコマンド、違法コマンド、および予約済みコマンドという３つのクラスにカテゴリ化することができる。あるコマンドのクラスは、命令コードと、存在する場合は拡張命令コードとを検査することによって決定される。コマンド命令コードまたは命令コードと拡張命令コードとの組み合わせが定義済みコマンドまたは予約済みコマンドのものではない場合、そのコマンドは違法である。
【００２９】
定義済みコマンドは、データ転送コマンド、ＳＬ１キャッシュ管理コマンド、および同期コマンドという３つのカテゴリの１つに分類される。データ転送コマンドは、データ移動の方向（すなわち、ローカル記憶装置へまたはローカル記憶装置から）を定義するサブカテゴリにさらに分割される。プット・コマンドは、ローカル・ストアから主記憶装置にデータを移動するデータ転送コマンドである。取得コマンドは、主記憶装置からローカル・ストアにデータを移動するデータ転送コマンドである。アプリケーションは、データ転送コマンドをＭＦＣプロキシ・コマンド・キュー２７０に入れることができる。特に留意されない限り、これらのコマンドは任意の順序で（非同期で）実行することができる。
【００３０】
「違法」クラスのコマンドは、定義済みクラスまたは予約済みクラスに入らないコマンドを対象とする。「予約済み」クラスのコマンドは実装依存の使用のためのものである。
【００３１】
ＳＬ１記憶制御コマンドは、ＳＬ１キャッシュに関する動作を制御するためのコマンドである。これらの記憶制御コマンドとしては、たとえば、取得またはプット・コマンド、アドレス範囲操作コマンド、およびフラッシュ・コマンドなど、特定のタイプのデータ転送コマンドがおそらく発行されることをＳＬ１キャッシュに通知するための「ヒント（hint）」コマンドを含む。
【００３２】
ＭＦＣ同期コマンドは、他のＭＦＣ、プロセッサ、および他の装置に対して記憶アクセスが実行される順序を制御するために使用される。ＭＦＣ同期コマンドとしては、適正順序実行（in-order execution）を施行するためのコマンド、ＤＭＡコマンド・キュー内のバリア・コマンド以前のすべてのコマンドに対するすべての後続コマンドを順序付けるためのバリア・コマンド、ターゲットにされた信号通知レジスタ内の信号ビットを論理的に設定するための送信信号コマンドなどを含む。
【００３３】
ＭＦＣコマンドは、個別のＤＭＡコマンドである場合もあれば、ＤＭＡリスト・コマンドである場合もある。本発明の模範的な一実施形態によるＤＭＡリスト・コマンドの詳細は図４に示されている。ＤＭＡリスト・コマンドは、ＤＭＡ転送用のパラメータとして、ローカル記憶装置に保管された有効アドレスおよび転送サイズ対またはリスト・エレメントのリストを使用する。これらのパラメータは、ＭＦＣプロキシ・コマンド・キュー上でサポートされない、ＳＰＵ開始ＤＭＡリスト・コマンドに使用される。各リスト・エレメントの第１のワードは転送サイズと停止通知（stall-and-notify）フラグを含む。第２のワードは有効アドレスの下位３２ビットを含む。開始有効アドレスはリスト内の各転送エレメントごとに指定され、転送に関わるローカル記憶アドレスは１次リスト・コマンドのみに指定される（「１次」という用語は図３に示されているパラメータによって指定されたリスト・コマンドを指す）。
【００３４】
ローカル記憶アドレスは、リスト内の各エレメントによって転送されたデータの量に基づいて内部で増分される。しかし、位置合わせの制約により、ローカル記憶アドレスがリスト・エレメント転送用の１６バイト境界から始まらない場合、ハードウェアは次の１６バイト境界までローカル記憶アドレスを自動的に増分する。これは、１６バイト未満の転送サイズが使用される場合にのみ行われる。１６バイト未満の転送サイズを有するリスト・エレメントは、有効アドレスの最下位４ビットによって定義された現行４倍長ワード（１６バイト）内のローカル記憶オフセットを使用する。
【００３５】
リスト・エレメントに指定された有効アドレスは、ベースＤＭＡリスト・コマンドに指定された有効アドレスの上位３２ビットによって定義された４ＧＢの領域に対して相対的なものである。ＤＭＡリスト開始アドレスは単一４ＧＢ領域に対して相対的なものであり、１つのリスト・エレメント内の転送は４ＧＢ境界を横切る可能性がある。
【００３６】
「Ｓ」（停止通知）ビットを設定すると、ＤＭＡ動作により、現行リスト・エレメントが処理されたあとにこのリストの実行が中断され、そのＳＰＵに関して停止通知イベント状況が設定される。停止されたリストの実行は、ＭＦＣがＳＰＵプログラムから停止通知確認応答を受信するまで再開しない。停止通知イベントは、関連コマンド・タグ・グループＩＤを使用してＳＰＵプログラムに通知される。停止通知エレメントを有する同じタグ・グループ内に複数のＤＭＡリスト・コマンドが存在する場合、ソフトウェアは、曖昧さを回避するようＤＭＡリスト・コマンドの順序付き実行を強制するために、タグ固有のバリアまたはグローバル・バリアが使用されることを保証する。
【００３７】
ＤＭＡリスト・コマンド内のすべてのＤＭＡリスト・エレメントは、順に開始され発行されることが保証される。ＤＭＡリスト・コマンド内のすべてのエレメントは固有のローカル順序付けを有する。単一のＤＭＡリスト・コマンドは、最高２０４８個のエレメントを含み、ローカル記憶装置のうちの１６ＫＢを占有する可能性がある。
【００３８】
チャネル・インターフェース
ＢＰＡでは、チャネルは、協同処理装置（ＳＰＵ）とメモリ・フロー制御（ＭＦＣ）ユニットとの間の１次インターフェースとして使用される。ＳＰＵチャネル・アクセス機能は、ＳＰＵチャネルを構成し、保存し、復元するために使用される。ＳＰＵ命令セット・アーキテクチャ（ＩＳＡ：Instruction Set Architecture）は、チャネル・インターフェース（またはＳＰＵチャネル）により外部装置と通信するための１組のチャネル命令を提供する。表１は、これらの命令をリストで示したものである。
【表１】
0005558713.tif 000002
【００３９】
アーキテクチャ上、ＳＰＵチャネルは、読み取り専用または書き込み専用というアクセス・タイプを有するように構成することができる。チャネルは、読み取りおよび書き込みとして構成することはできない。アクセス・タイプに加えて、各チャネルは、非ブロッキングまたはブロッキングとして構成することができる。ブロッキングとして構成されたチャネルにより、「０」というチャネル・カウントを有するチャネルを読み取るときまたはフルチャネル（すなわち、「０」というチャネル・カウントを有するチャネル）に書き込むときに、ＳＰＵを停止させる。「読み取り」チャネルとは、このチャネルに対して読み取りチャネル命令（ｒｄｃｈ）のみを発行することができ、データは必ず返されることを意味する。「書き込み」チャネルとは、このチャネルに対して書き込みチャネル命令（ｗｒｃｈ）のみを発行することができ、データは必ずそのチャネルによって受諾されることを意味する。
【００４０】
「読み取りブロッキング」チャネルとは、このチャネルに対して読み取りチャネル命令（ｒｄｃｈ）のみを発行することができることを意味する。読み取りブロッキング・チャネルに送信された読み取りチャネル命令（ｒｄｃｈ）は、チャネル・カウントがゼロではない場合にのみ完了する。「０」というチャネル・カウントは、そのチャネルが空であることを示す。「０」というカウントを有する読み取りブロッキング・チャネルに対してチャネル読み取り（ｒｄｃｈ）を実行すると、データがそのチャネル内で使用可能になるまで、ＳＰＵが停止される。
【００４１】
「書き込みブロッキング」チャネルとは、このチャネルに対して書き込みチャネル命令（ｗｒｃｈ）のみを発行することができることを意味する。書き込みブロッキング・チャネルに送信された書き込みチャネル命令（ｗｒｃｈ）は、チャネル・カウントがゼロではない場合にのみ完了する。「０」というチャネル・カウントは、そのチャネルが満杯であることを示す。「０」というカウントを有する書き込みブロッキング・チャネルに対して書き込みチャネル（ｗｒｃｈ）を実行すると、アドレス指定されたチャネル内の項目が使用可能になるまで、ＳＰＵが停止される。
【００４２】
チャネルの構成に対して不適切なチャネル命令を発行すると、無効チャネル命令割り込みが発生することに留意されたい。たとえば、書き込みチャネルまたは書き込みブロッキング・チャネルとして構成されたチャネルに対して読み取りチャネル命令（ｒｄｃｈ）を発行すると、無効チャネル命令割り込みが発生する。
【００４３】
各チャネルは対応するカウント（すなわち、項目数（depth））を有し、そのカウントはそのチャネルについて発行可能な未解決動作の数を示す。チャネル項目数（channeldepth）（すなわち、未解決転送の最大数）は実装依存である。ソフトウェアは、ＳＰＵ内に新しいコンテキストを確立するときまたはそれが既存のコンテキストを再開するときに、チャネル・カウントを初期設定しなければならない。
【００４４】
チャネルおよびチャネル・インターフェースの動作は、２００３年６月２６日に出願され、「Ｅｘｔｅｒｎａｌ  Ｍｅｓｓａｇｅ  Ｐａｓｓｉｎｇ  Ｍｅｔｈｏｄ  ａｎｄ  Ａｐｐａｒａｔｕｓ」という名称で、同時係属で本出願人に譲渡された米国特許出願公開第２００４／０２６４４４５号に記載されており、同特許出願は参照により本明細書に組み込まれる。図５は、米国特許出願公開第２００４／０２６４４４５号に記載されているメカニズムによる１対のチャネルのためのチャネル回路に関するＳＰＵ発行制御ロジックおよびデータ・フローの配置を例示する模範的な図である。次に、チャネル・インターフェースの動作について、図５に描写されている様々なブロックに関連して説明する。
【００４５】
図５に示されている通り、ブロック４３０は、ＳＰＵの外部装置命令発行制御ブロックを表している。ブロック４３２は、ＳＰＵとの間のデータ・フローを表している。既知の通り、プロセッサは、同時に多くの異なる外部装置と通信状態にある可能性がある。このプロセッサでは、通信はチャネル・レジスタを介して実施される。各チャネルは、１方向にのみ動作し、ＳＰＵによってそのチャネル上で実行可能な動作に応じて、読み取りチャネルまたは書き込みチャネルと呼ばれる。ブロック４３４は、ブロック４３５によって表された単一外部装置のための１組のチャネル用のチャネル・ロジックを表している。以下により詳細に論ずる通り、この外部装置４３５は、ＭＦＣ２００などのＭＦＣ、マシン状況レジスタ、またな任意のその他のタイプの外部装置にすることができる。特に、ＭＦＣ、マシン状況レジスタ、イベント機能、メールボックス機能、および信号通知機能と通信するためのチャネル・インターフェースの使用については、チャネル・インターフェースに関するこの一般的な説明に続いて、以下に説明する。
【００４６】
ブロック４３４内には、読み取りチャネル・カウンタ４３６、読み取りレジスタ４３８、書き込みチャネル・カウンタ４４０、書き込みレジスタ４４２、ＭＵＸ（マルチプレクサ）４４４、およびＭＵＸ４４６が示されている。チャネル命令は、バス４４８上のＳＰＵ発行制御ロジック４３０から読み取りおよび書き込みカウンタ４３６および４４０ならびにＭＵＸ４４４および４４６のゲート入力に送達される。これらの命令は、チャネルＯＵＴリード４５０上で４３５などの適切な外部装置にも供給される。データＩＮリード４５２は、外部装置４３５から読み取りレジスタ４３８にデータを提供する。チャネル・カウントＩＮ信号は、チャネルＩＮリード４５４上で外部装置４３５からカウンタ４３６に供給され、データがレジスタに入力されたことを示し、カウンタ４３６内のカウントを１つの値または数字だけ変更するよう動作する。
【００４７】
書き込みレジスタ４４２から外部装置４３５に出力中のデータはデータＯＵＴリード４５６上で供給される。外部装置４３５がそのデータの満足のいく受信を完了し、カウンタ４４０内のカウントを１つの値単位または数字だけ変更するよう動作すると、チャネルＡＣＫリード４５８上で外部装置４３５から書き込みチャネル・カウンタ４４０にチャネル確認応答信号が返される。本発明の好ましい一実施形態では、バス４４８上の信号により適切な読み取りまたは書き込みカウンタが減分され、いずれか一方のリード４５４または４５８上の信号により適切な読み取りまたは書き込みカウンタが増分される。
【００４８】
図示の通り、両方のカウンタ４３６および４４０のカウントは、ＭＵＸ４４４を通ってチャネル停止リード４６０上でＳＰＵ発行制御ロジック４３０に供給される。チャネル書き込みデータは、ＳＰＵデータ・フロー・ブロック４３２からチャネル書き込みデータ・リード４６２上で書き込みレジスタ４４２に供給される。ブロック４３６、４３８、および４４０からの出力はバス４６４上でデータ・フロー・ブロック４３２に返される。非チャネル命令は、バス４６６を介してブロック４３０と４３２との間で伝達される。
【００４９】
図６は、本発明の模範的な一実施形態によるチャネル・インターフェースの模範的な動作の概要を示す流れ図を示している。図６の流れ図ならびに以下に記載する後続図の流れ図の各ブロックおよび複数ブロックの組み合わせはコンピュータ・プログラム命令によって実装できることが理解されるであろう。これらのコンピュータ・プログラム命令は、プロセッサまたはその他のプログラマブル・データ処理装置上で実行される命令が流れ図の１つまたは複数のブロック内に指定された機能を実装するための手段を作成するようなマシンを生産するためにプロセッサまたはその他のプログラマブル・データ処理装置に提供することができる。また、これらのコンピュータ・プログラム命令は、コンピュータ可読メモリまたは記憶媒体に保管された命令が流れ図の１つまたは複数のブロック内に指定された機能を実装する命令手段を含む装置（article of manufacture）を生産するような特定の方法で機能するようプロセッサまたはその他のプログラマブル・データ処理装置に指示できるコンピュータ可読メモリまたは記憶媒体に保管することもできる。
【００５０】
したがって、流れ図のブロックは、指定の機能を実行するための手段の組み合わせ、指定の機能を実行するためのステップの組み合わせ、および指定の機能を実行するためのプログラム命令手段をサポートする。また、流れ図の各ブロックおよび流れ図の複数ブロックの組み合わせは、指定の機能またはステップを実行する特殊目的ハードウェアベースのコンピュータ・システムによるかまたは特殊目的ハードウェアおよびコンピュータ命令の組み合わせにより実装できることも理解されるであろう。
【００５１】
図６に示されている通り、チャネル読み取りまたは書き込み命令が発行されると、指定されたチャネルが、上記の制御メカニズムが実装されたものであるかどうかについて判別が行われる（ステップ５７６）。実装されたものではない場合、チャネル・エラー・ロジックが使用可能であるかどうかについて判別が行われる（ステップ５７８）。使用可能である場合、プロセッサが停止される（ステップ５８０）。使用可能ではない場合、コマンドが読み取りであるか書き込みであるかについて判別が行われる（ステップ５８２）。
【００５２】
非実装コマンドが書き込みである場合、そのコマンドについてはそれ以上何も行われない（ステップ５８４）。これに反して、非実装コマンドが読み取りである場合、データ・プロセッサ・データ・フローにゼロが返される（ステップ５８６）。いずれの場合でも、プロセスは、次の読み取りまたは書き込み命令を待つという状況に戻る。図示の好ましい実施形態では、すべての有効な読み取り命令は値を返さなければならない。本明細書で定義した通り、非実装チャネルへのチャネル読み取り命令はすべてゼロという値を返す。
【００５３】
特定の実装例の場合、すべてのチャネルを定義しなければならないわけではないことに留意できるであろう。各チャネルは、固有の数値ＩＤを有することになる。好ましい一実施形態では、このチャネルＩＤは０〜１２７の範囲である。しかし、すべてのチャネルを定義する必要があるわけではないので、すべてのＩＤを使用できるわけではない。したがって、未定義チャネルへの命令が存在する場合、プロセスは、上記で参照した非実装パスに沿って進む。いくつかの実装例では、非実装チャネルへのチャネル読み取りまたは書き込みコマンドが違法動作と見なされることが望ましい可能性もある。その後のアクションは、おそらく、前述のステップ５８０に示されている通り、プロセッサを強制的に停止することになる可能性がある。
【００５４】
図６に戻ると、ステップ５７６で、指定されたチャネルが実装されていると判別された場合、指定のチャネルがブロッキング・チャネルであるかどうかを確認するためのチェックが行われる（ステップ５８８）。ブロッキング・チャネルではない場合、そのチャネルに関するカウントは減分されるが、ゼロ未満になる可能性はない（ステップ５９０）。チャネルがブロッキングであると判別された場合、そのチャネルに関するカウントがゼロより大きいかどうかを判別するためのチェックが行われる（ステップ５９２）。ゼロより大きい場合、プロセスはステップ５９０に戻る。
【００５５】
ステップ５９２で判別された通り、カウントがすでにゼロである場合、外部装置がこのチャネルに関連する入力を提供し、その結果、カウントをゼロから変更するまで、ＳＰＵは停止する（ステップ５９４および５９５）。したがって、このチャネルに関するカウントに変化が生じるまで、ステップ５９４および５９５のループが定期的に処理される。カウントが変更されると、プロセスはステップ５９５からステップ５９０に進む。
【００５６】
その後、そのチャネルがアクティブであるかパッシブであるかが判別される（ステップ５９６）。そのチャネルがパッシブである場合、コマンドが書き込み命令であるか読み取り命令であるかを確認するためのチェックが行われる（ステップ５９８）。コマンドが書き込み命令である場合、データは外部読み取りのためにローカルに保管される（ステップ６００）。コマンドが読み取り命令である場合、データは図５のＳＰＵデータ・フロー４３２を介してＳＰＵに返される（ステップ６０２）。
【００５７】
パッシブ・チャネルの状況では、ＳＰＵは、動作を完了するために外部プロセスに依存することに留意されたい。一例として、読み取りチャネルは、データをロードするために外部装置に依存する可能性がある。これに反して、アクティブ・チャネルでは、ＳＰＵは、読み取りまたは書き込み動作を実行する動作を積極的に完了する。このタイプの動作の一例は、接続されたハードウェアがアクティブ読み取りチャネルからデータを求める外部要求を行う場合である。
【００５８】
ステップ５９６で、そのチャネルがアクティブ・チャネルであると判別されると、コマンドが読み取りコマンドであるか書き込みコマンドであるかを確認するためのチェックが行われる（ステップ６０４）。コマンドが書き込みである場合、書き込みデータはＳＰＵの外部にまたは内部レジスタに出力される（ステップ６０６）。コマンドが読み取りである場合、読み取り要求が適切な外部装置に送信される（ステップ６０８）。
【００５９】
要求されたデータの入力を待つ（ステップ６１０）。定期的に、読み取りデータが受信されたかどうかについて判別が行われる（ステップ６１２）。受信されていない場合、次のチェックのための時間が発生するまで、プロセスはステップ６１０に戻る。データが受信されると、プロセスは完了する（ステップ６０２）。
【００６０】
上記により、命令にチャネル番号が指定された特定のチャネル読み取りまたは書き込み命令を使用して、各チャネルがアクセスされることが明らかになるであろう。各チャネルは、それによって指定されたカウントを有する。このカウントは、命令に関心のあるチャネルが指定された読み取りチャネル・カウント命令を使用して読み取られる。チャネル・コマンドは、推論的なものではなく、外部インターフェースで順不同に処理することはできない。このチャネル・アーキテクチャでは、ＳＰＵの外部の装置が適正順序でチャネル・コマンドを処理することを要求していないが、プロセッサおよび外部装置の実装次第でそのようにすることができる。このカウント・レジスタ内の値は、このレジスタに対して行われた外部確認応答の数に対するこのレジスタへのアクセス数を追跡するものである。
【００６１】
動作時に、外部インターフェース（複数も可）によるアクセスを介してチャネル・カウントを変更する方法は実装例に基づくものである。好ましい一実施形態では、レジスタとの間の正常データ転送ごとに１ずつ、カウントが増分される。各チャネルごとに、ＳＰＵアクセスを読み取りまたは書き込みチャネルとして定義することができる。さらに、この好ましい実施形態では、チャネルが「ブロッキング」チャネルとして定義または実装されたときにその後の動作を停止するために「０」カウントが使用される。チャネル・レジスタが「１」というキュー項目数（queue depth）を有するものとして定義されると、そのチャネル内のデータが有効ではないことを示すために「０」カウントを使用することができる。また、カウントが「０」である場合、カウントがもはや「０」ではなくなるときまで読み取りまたは書き込みチャネル・コマンドに対するＳＰＵ動作を停止するよう、そのコマンド上でチャネルを定義することもできる。
【００６２】
好ましい一実施形態では、カウンタ値は、すべてのＳＰＵ開始読み取りまたは書き込みチャネル・コマンドについて減分され、各外部開始読み取りまたは書き込みアクセス（データの有無を問わない）ごとに増分される。換言すれば、カウンタは、入力対出力の表示を維持する。したがって、「０」という値またはカウントは、書き込みの場合、それ以上外部書き込みスロットが使用可能ではないことを示す。これに反して、読み取りの場合の「０」というカウント値は、有効データがまったく存在しないことを示す。カウントがゼロであるときに、追加のＳＰＵ読み取りまたは書き込みチャネル・コマンドが発行され、チャネルが非ブロッキングとして定義された場合、カウントは「０」のまま存続し、レジスタ内のデータは消失する。好ましい実施形態で実装される通り、そのレジスタ内の前の最新データは消失する。カウントがそのチャネル・レジスタ実装例のビット数の最大値であり、カウントを範囲外に増分させるような追加のトランザクションが行われた場合、カウントはその最大値にとどまることになる。
【００６３】
カウント値を初期設定する方法は実装依存であり、１つの方法は外部インターフェースによる初期設定である。このカウントは、書き込みキューのためのフロー制御に使用することができる。このカウントは、外部キューの項目数に事前設定することができる。カウント・レジスタ内のゼロという値は、この外部キュー内にそれ以上空間が存在しないことを意味する。「１」という外部キュー項目数の場合、カウントは「１」に事前設定しなければならない。ＳＰＵがこのチャネルに書き込みと、カウントは「０」になる。外部装置がこのチャネルから読み取ると、カウントは「１」に増分され、それにより、そのチャネルが他の書き込み動作のための準備ができていることを示す。
【００６４】
上述の通り、チャネル・レジスタの読み取りの場合、これによりカウントは有効データを示すことができる。カウント・レジスタが「０」に事前設定された場合、これは、データが有効ではないことを示す。外部装置がこのチャネルに書き込むと、カウントは「１」に増分し、データがＳＰＵ読み取りのために有効であることを示す。ＳＰＵがこのチャネルから読み取ると、カウントは減分して「０」に戻り、他の外部書き込みを行えることを示す。
【００６５】
本発明の好ましい一実施形態では、読み取りチャネルと書き込みチャネルの両方についてカウントを確認するために、コンピュータ・コード・チャネル・カウント読み取り命令がカウンタに送信される。外部装置がマルチプロセッサ環境内の他のＳＰＵまたはコンピューティング・デバイスなどのインテリジェント装置である場合、カウントを確認するために、外部装置がチャネル・カウント読み取り命令をカウンタに送信することもできる。このように、外部装置は、そのチャネルが読み取りチャネルまたは書き込みチャネルのいずれかに未読データを含む時期または読み取りチャネルを含むプロセッサに追加のデータを送信することが適切である時期あるいはその両方を判別することができる。
【００６６】
本発明による使用では、読み取りチャネルおよび書き込みチャネルは非累積または累積のいずれかにすることができる。累積チャネルは、複数の書き込みを累積するチャネルである。すなわち、着信データは、そのチャネルが読み取られるまで、レジスタまたは他の記憶手段にすでに収容されているデータに論理的に追加される。そのチャネルを読み取ると、累積レジスタは、典型的には「０」にリセットされ、チャネルは再び累積を始める。このアクションは、読み取りチャネルと書き込みチャネルの両方について行うことができる。
【００６７】
さらに、累積チャネルはブロッキングまたは非ブロッキングにすることができる。典型的には、非累積チャネルがそのチャネルへの各書き込みをカウントするように動作できることとは対照的に、累積チャネルは「１」というカウント項目数（count depth）のみを有することになる。
【００６８】
要約すると、チャネル・インターフェースは、メモリを解放するために定義済みチャネルを使用するが、レジスタ内のデータが有効である時期、換言すれば、レジスタ内のデータが前に読み取られていない時期について依然として容易にアクセス可能な情報を提供する。この情報は、カウンティング・メカニズムにチャネル・カウント読み取り命令を送信することによって入手される。インテリジェント外部装置が所与のチャネルに接続されると、所与のチャネルとの間でデータを送信または受信する際に外部装置が同様の命令を使用することができる。チャネル・インターフェースは、チャネル・カウント読み取り命令を使用することにより、指定のチャネルが非ブロッキング・チャネルとして定義されたときにレジスタ内のデータを偶発的に上書きするのをさらに防止する。
【００６９】
本発明は、種々のタイプの外部装置およびこのような外部装置によって提供される機能との間で命令およびデータを伝達するためにチャネル・インターフェースおよび定義済みチャネルを利用する。たとえば、本発明は、ＭＦＣ、マシン状況レジスタ、および割り込み機能と命令およびデータを伝達するためにＳＰＵのチャネル・インターフェースを使用するためのメカニズムを提供する。その上、チャネル・インターフェースは、ＢＰＡのイベント機能、メールボックス機能、マルチソース同期機能、プロキシ・タグ・グループ完了機能、信号通知機能などと命令およびデータを伝達するために使用される。
【００７０】
図７は、本発明の一実施形態によってチャネルが使用される方法を例示する模範的な図である。図７に示されている通り、チャネル・インターフェース６２０は、それを介してＳＰＵ６２２がＭＦＣ６２４、マシン状況レジスタ６３４、および割り込み機能６３６と通信できる複数のチャネルを提供する。各チャネルは、図５に関して上述したものと同様のエレメントから構成することができ、その動作は図６に記載されているものと同様のものである。本発明の模範的な一実施形態では、チャネル・インターフェース６２０は、図５のブロック４３４によって表されたすべてのチャネル対の集合体に対応することができる。ＳＰＵ６２２は、図５のブロック４３０および４３２の組み合わせに対応することができ、たとえば、図６の他のすべてのブロックは図５のブロック４３５に対応する。
【００７１】
図７に示されている通り、チャネル６３１、６３３、および６３５は、ＳＰＵ６２２に関連する通信パスを提供し、それによりＳＰＵイベント機能６３０およびデクリメンタ６３２はＭＦＣ６２４と通信することができる。ＳＰＵイベント機能６３０は、ＢＰＡ内で生成されたイベントを処理するためのメカニズムを提供する。チャネル６３３は、以下により詳細に論ずるように、関心のあるイベントを識別し、関心のあるこれらのイベントに関する情報を入手するためのメカニズムを提供する。デクリメンタ６３２は、それによりＳＰＵ上で実行されるソフトウェアが時間の進行を測定できるかまたは所与の尺度の時間の経過をそのソフトウェアに通知できるメカニズムを提供する。デクリメンタ６３２は、チャネル６３１を介してその値が設定され、状況が読み取られる可能性がある。
【００７２】
ＳＰＵ（発行制御ロジック、プロセッサ・データ・フロー）６２２は、外部装置と通信するための命令、データ、および機能を提供する。たとえば、ＳＰＵ６２２は、ＳＰＵチャネルを初期設定し、保存し、復元する特権機能であるＳＰＵチャネル・アクセス機能を提供する。この機能は、ＳＰＵチャネル・インデックス・レジスタ、ＳＰＵチャネル・カウント・レジスタ、およびＳＰＵチャネル・データ・レジスタという３つのＭＭＩＯレジスタから構成される。ＳＰＵチャネル・インデックス・レジスタは、そのカウントおよびデータがそれぞれＳＰＵチャネル・カウント・レジスタおよびＳＰＵチャネル・データ・レジスタによってアクセスされるチャネルを指すポインタである。ＳＰＵチャネル・インデックス・レジスタは、どのＳＰＵチャネルがＳＰＵチャネル・カウント・レジスタまたはＳＰＵチャネル・データ・レジスタを使用してアクセスされるかを選択する。ＳＰＵチャネル・データ・レジスタは、ＳＰＵチャネル・インデックス・レジスタによって選択されたＳＰＵチャネル・データを読み取るためまたは初期設定するために使用される。
【００７３】
ＳＰＵ６２２の機能と通信するためのチャネル６３１、６３３、および６３５に加えて、チャネル６３７は、マシン状況レジスタ６３４に関連する通信パスを提供する。マシン状況レジスタ６３４は、現行マシンの分離状況および割り込み状況を収容する。分離状況は、ＳＰＵが分離されているかどうかを示す。ＢＰＡの分離機能により、特権ソフトウェアおよびアプリケーションは、コード・イメージを分離し、それを１つまたは複数のＳＰＵにロードすることができる。ＳＰＵ分離機能は、ＳＰＵの関連ローカル記憶装置にロードされたコード・イメージがまったく変更されていないことを保証する。割り込み状況関連マシン状況レジスタは、ネストされた割り込みがサポートされるときに割り込み状態情報を保存し復元するために使用される。
【００７４】
さらに、チャネル６３９は、割り込み機能６３６に関連する通信パスを提供する。割り込み機能６３６は、割り込みおよ９び割り込み状況情報をＰＰＥまたは外部装置に経路指定し、ＰＰＥに提示された割り込みに優先順位を付け、プロセッサ間割り込みを生成するために使用される。
【００７５】
さらに、チャネル６４１は、メールボックス機能６３８に関連する通信パスを提供する。メールボックス機能６３８は、他のＳＰＵなどの外部装置、ＰＰＥなどに情報を送信し、そこから情報を受信するために使用される。
【００７６】
チャネル６４３は、ＳＰＵ信号通知機能６４０に関連する通信パスを提供する。ＳＰＵ信号通知機能６４０は、システム内の他のプロセッサおよび装置からＳＰＵにバッファ完了フラグなどの信号を送信するために使用される。
【００７７】
チャネル６４５は、プロキシ・タグ・グループ完了機能６４２に関連する通信パスを提供する。プロキシ・タグ・グループ完了機能６４２は、同様にタグが付いた命令のグループの処理が完了した時期を判別するための機能である。
【００７８】
チャネル６４７は、ＭＦＣマルチソース同期機能６４４に関連する通信パスを提供する。ＭＦＣマルチソース同期機能６４４は、ローカル記憶装置および主記憶装置のアドレス・ドメイン間の累積順序付けを達成する。他のプロセッサまたはユニットに対して複数のソース（すなわち、２つまたはそれ以上のプロセッサまたはユニット）によって実行された記憶アクセスの順序付けは累積順序付けと呼ばれる。
【００７９】
図８および図９は、本発明の模範的な一実施形態によるＳＰＵチャネル・マップをリストする模範的な図である。図６に示されている通り、ＳＰＵチャネル・インターフェースは、命令およびデータを伝達するために様々なタイプのチャネルをサポートする。これらのチャネルとしては、ＳＰＵイベント・チャネル６５０、ＳＰＵ信号通知チャネル６５２、ＳＰＵデクリメンタ・チャネル６５４、ＭＦＣマルチソース同期チャネル６５６、ＳＰＵ予約済みチャネル６５８、マスク読み取りチャネル６６０、ＳＰＵ状態管理チャネル６６２、ＭＦＣコマンド・パラメータ・チャネル６６４、ＭＦＣタグ状況チャネル６６６、およびＳＰＵメールボックス・チャネル６６８を含む。これらの「チャネル」は本質的に、メモリ・マップ・レジスタと、これらのレジスタに書き込むための対応する回路である。したがって、「チャネル」という用語は、指定の「チャネル」に対応するデータ値を保管するための１つまたは複数のレジスタを指すために本明細書で使用することもできる。それぞれのチャネルの動作について、以下に説明する。ＰＰＥ、ＳＰＵ、およびＭＦＣには、これらのチャネルを使用するための様々な機能が提供される。これらのタイプのチャネルのそれぞれについては、ＭＦＣと通信するために使用されるチャネルから始めて、以下に詳細に説明する。
【００８０】
ＭＦＣコマンド・パラメータ・チャネル
ＭＦＣコマンド・パラメータ・チャネル６６４は、ＭＦＣ  ＳＰＵコマンド・キューのＭＦＣコマンド・パラメータ・レジスタにデータを書き込むために使用されるチャネルである（図２および上記の表１を参照）。ＭＦＣコマンド・パラメータ・チャネル６６４は、非ブロッキングであり、それに関連するチャネル・カウントを備えていない。したがって、これらのチャネルのいずれかに送信された読み取りチャネル・カウント（ｒｃｈｃｎｔ）命令を実行すると、「１」というカウントが返される。
【００８１】
ＭＦＣコマンド・パラメータ・チャネル６６４は、ＭＦＣローカル記憶アドレス・チャネル、ＭＦＣ有効アドレス・ハイ・チャネル、ＭＦＣ有効アドレス・ローまたはリスト・アドレス・チャネル、ＭＦＣ転送サイズまたはリスト・サイズ・チャネル、ＭＦＣコマンド・タグ識別チャネル、ＭＦＣコマンド命令コード・チャネル、およびＭＦＣクラスＩＤチャネルを含む。これらのチャネルのそれぞれについて、以下に詳細に説明する。
【００８２】
ＭＦＣコマンド命令コード・チャネル
ＭＦＣコマンド命令コード・チャネルの詳細は、本発明の模範的な一実施形態により図１０に示されている。ＭＦＣコマンド命令コード・チャネルは、命令コードに基づいて実行すべき動作を識別する。この命令コードの妥当性は、命令ストリームに対して非同期的にチェックされる。ＭＦＣコマンドまたはコマンド・パラメータのいずれかが無効である場合、ＭＦＣコマンド・キュー処理は中断され、無効なＭＦＣコマンド割り込みが生成される。
【００８３】
ＭＦＣコマンドおよびクラスＩＤパラメータは単一チャネル命令を使用してＭＦＣ  ＳＰＵコマンド・キューに書き込まれる。図１０に示されている通り、好ましい一実施形態では、ＭＦＣコマンド命令コード・パラメータは３２ビット・ワードの下位１６ビットである。このフィールドの上位８ビットは予約済みであり、下位８ビットはＭＦＣコマンド命令コードを識別する。
【００８４】
ＭＦＣクラスＩＤチャネル
ＭＦＣクラスＩＤチャネルは、図１１に示されている通り、各ＭＦＣコマンドごとに置換クラスＩＤおよび転送クラスＩＤを指定するために使用される。これらのＩＤは、システムの全体的なパフォーマンスを改善するためにＳＰＵおよびソフトウェアによって使用される。特に、置換クラスＩＤ（ＲｃｌａｓｓＩＤ）は、キャッシュ置換を制御するために置換管理テーブル（ＲＭＴ：replacement management table）とともに使用される。置換クラスＩＤは、たとえば、ＰＰＥ動作のためのロード保管（load-and-store）アドレスから生成することができる（ＰＰＥは、ＰＰＥロードおよび保管ならびに命令取り出しに関する有効アドレスまたは実アドレスをキャッシュ置換管理機能のためのクラスＩＤにマッピングするための方法を提供するアドレス範囲機能を含む）。
【００８５】
ＲｃｌａｓｓＩＤは、特権ソフトウェア管理テーブル、すなわち、置換ポリシーを制御するために使用される置換管理テーブル（ＲＭＴ）に対するインデックスを生成するために使用される。ＲＭＴのフォーマットは実装依存である。ＲＭＴは実装依存数の項目から構成され、その項目は、設定使用可能（set-enable）ビット、有効ビット、およびその他の制御情報を含まなければならない。任意選択で、実装例により、キャッシュ・バイパス・ビットとアルゴリズム・ビットを提供することもできる。ＲＭＴテーブル内の項目数および各項目のサイズは実装依存である。
【００８６】
図１２は、８Ｗａｙセット連想キャッシュに関する典型的なＲＭＴ項目を描写している。ＲＭＴテーブルは、システムの実アドレス空間内に位置する。特権ソフトウェアは、これらのＲＭＴテーブルを特権ページとしてマッピングしなければならない。１つの実装例では、各主要キャッシュ構造について１つのＲＭＴを提供しなければならない。
【００８７】
図１１に戻ると、転送クラスＩＤ（ＴｃｌａｓｓＩＤ）は、種々の特性を有する記憶域へのアクセスを識別するために使用される。ＴｃｌａｓｓＩＤは、ある実装例が記憶位置の特性に基づいてＭＦＣコマンドに対応する転送を最適化できるようにするために使用するものである。ＴｃｌａｓｓＩＤのセットアップおよび使用は実装依存である。
【００８８】
ＲｃｌａｓｓＩＤおよびＴｃｌａｓｓＩＤの内容は、本明細書で以下、「クラスＩＤパラメータ」と呼ばれるが、永続的なものではなく、各ＭＦＣコマンド・エンキュー・シーケンスごとに書き込まなければならない。クラスＩＤパラメータは、ＳＰＵコマンド・キューのＰＰＥ側またはＳＰＵ側のいずれから発行されたコマンドとともに使用される場合でも、同じ機能を実行する。クラスＩＤパラメータは、ＳＰＥに関連するリソースを制御するために使用され、他のＳＰＥまたはＰＰＥに関連するリソースに対する効果がまったくない。クラスＩＤパラメータの妥当性は検証されない。サポートされるクラスＩＤパラメータの数は実装依存である。
【００８９】
ＭＦＣコマンド・タグ識別チャネル
ＭＦＣコマンド・タグ識別チャネルは、各コマンドまたはコマンド・グループごとに１つのＩＤを指定するために使用される。ＭＦＣコマンド・タグ識別チャネルの詳細は図１３に描写されている。この識別タグは、たとえば、ｘ‘０’とｘ‘１Ｆ’の間の任意の値である。識別タグは、ハードウェア内で純粋にローカルの範囲を有する。したがって、同じタグを異なるＳＰＥまたはＰＰＥで使用することができる。
【００９０】
任意の数のＭＦＣコマンドは、同じ識別コードでタグを付けることができる。同じ識別コードでタグを付けたＭＦＣコマンドはタグ・グループと呼ばれる。タグは、特定のキューに書き込まれたコマンドに関連付けられる。ＭＦＣ  ＳＰＵコマンド・キューに供給されるタグは、ＭＦＣプロキシ・コマンド・キューに供給されるタグとは無関係である。ＭＦＣコマンド・タグ識別パラメータの内容は、永続的なものではなく、各ＭＦＣコマンド・エンキュー・シーケンスごとに書き込まなければならない。このパラメータの妥当性は、命令ストリームに対して非同期的にチェックされる。上位ビット（たとえば、ビット０〜１０）が０に設定されない場合、ＭＦＣコマンド・キュー処理は中断され、割り込みが生成される。
【００９１】
ＭＦＣ転送サイズまたはリスト・サイズ・チャネル
ＭＦＣ転送サイズまたはリスト・サイズ・チャネルは、ＭＦＣ転送のサイズ、またはＭＦＣ  ＤＭＡ転送リストのサイズ、すなわち、一連のＤＭＡ転送コマンドのリストを指定するために使用される。ＭＦＣ転送サイズまたはリスト・サイズ・チャネルの詳細は図１４に示されている。一般的な一実施形態では、転送サイズは１、２、４、８、１６、または１６バイトの倍数から最大１６ＫＢの値を有することができる。ＭＦＣ  ＤＭＡ転送リスト・サイズは８または８の倍数から最大１６ＫＢの値を有することができる。ＭＦＣ転送サイズまたはリスト・サイズ・チャネルの内容は、永続的なものではなく、各ＭＦＣコマンド・エンキュー・シーケンスごとに書き込まなければならない。このパラメータの妥当性は、命令ストリームに対して非同期的にチェックされる。サイズが無効である場合、ＭＦＣコマンド・キュー処理は中断され、ＭＦＣ  ＤＭＡ位置合わせ割り込みが生成される。
【００９２】
ＭＦＣローカル記憶アドレス・チャネル
ＭＦＣローカル記憶アドレス・チャネルは、キューイングすべきＭＦＣコマンドに関連するＳＰＵローカル記憶アドレスを供給するために使用される。ＭＦＣローカル記憶アドレスは、ＭＦＣコマンドに定義されるＭＦＣ転送のソースまたは宛先として使用される。ＭＦＣローカル記憶アドレス・チャネルの詳細は図１５に示されている。
【００９３】
ＭＦＣローカル記憶アドレス・チャネルの内容は、永続的なものではなく、各ＭＦＣコマンド・エンキュー・シーケンスごとに書き込まなければならない。ＭＦＣローカル記憶アドレス・パラメータの妥当性は、命令ストリームに対して非同期的にチェックされる。アドレスが位置合わせされていない場合、ＭＦＣコマンド・キュー処理は中断され、ＭＦＣ  ＤＭＡ位置合わせ例外が生成される。位置合わせ済みと見なすためには、たとえば、ローカル記憶アドレスの最下位４ビットが有効アドレスの最下位４ビットと一致しなければならない。
【００９４】
ＭＦＣ有効アドレス・ローまたはリスト・アドレス・チャネル
ＭＦＣ有効アドレス・ローまたはリスト・アドレス・チャネルは、ＭＦＣコマンド用の下位有効アドレスまたはＭＦＣ  ＤＭＡリスト・コマンド用のリスト・エレメントを指すローカル記憶ポインタを指定するために使用される。ＭＦＣ状態レジスタ内で変換が使用可能である場合、有効アドレスは、ＰＰＥのアドレス変換機能によって実アドレスに変換される。図１６は、ＭＦＣ有効アドレス・ローまたはリスト・アドレス・チャネルの詳細を示している。
【００９５】
ＭＦＣ有効アドレス・ローまたはリスト・アドレス・チャネルの内容は、永続的なものではなく、各ＭＦＣコマンド・エンキュー・シーケンスごとに書き込まなければならない。１６バイト未満の転送サイズの場合、このパラメータのビット２８〜３１は転送サイズに基づいて自然位置合わせを提供しなければならない。１６バイト以上の転送サイズの場合、ビット２８〜３１は「０」でなければならない。変換が使用不可である場合、このパラメータは、主記憶装置ドメインの実アドレス空間の限度内でなければならない。ＭＦＣリスト・コマンドの場合、リスト・アドレスのビット２９〜３１は「０」でなければならない。これらの条件のいずれかが満足されない場合、パラメータは無効であり、位置合わせされていないと見なされる。
【００９６】
ＭＦＣ有効アドレス・ローまたはリスト・アドレス・パラメータの妥当性は、命令ストリームに対して非同期的にチェックされる。たとえば、セグメント障害、マッピング障害、保護違反によるか、アドレスが位置合わせされていないので、アドレスが無効である場合、ＭＦＣコマンド・キュー処理は中断され、割り込みが生成される。生成される可能性のある割り込みのタイプは、ＭＦＣデータセグメント割り込み、ＭＦＣデータ記憶割り込み、およびＤＭＡ位置合わせ割り込みである。
【００９７】
ＭＦＣ有効アドレス・ハイ・チャネル
ＭＦＣ有効アドレス・ハイ・チャネルは、ＭＦＣコマンド用の有効アドレスを指定するために使用される。ＭＦＣ状態レジスタ内で変換が使用可能である場合、有効アドレスは、アドレス変換機能によって実アドレスに変換される。ＭＦＣ有効アドレス・ハイ・チャネルの詳細は図１７に示されている。
【００９８】
ＭＦＣ有効アドレス・ハイ・チャネルの内容は、永続的なものではなく、各ＭＦＣコマンド・エンキュー・シーケンスごとに書き込まなければならない。上位３２ビットが書き込まれない場合、ハードウェアはＥＡＨを設定し、上位アドレス・ビットは０に設定され、すなわち、アドレスは０〜４ＧＢの間になる。このパラメータの妥当性は、命令ストリームに対して非同期的にチェックされる。たとえば、セグメント障害、マッピング障害、または保護違反により、アドレスが無効である場合、ＭＦＣコマンド・キュー処理は中断され、割り込みが生成される。生成される可能性のある割り込みのタイプとしては、ＭＦＣデータセグメント割り込みおよびＭＦＣデータ記憶割り込みを含む。有効アドレスの妥当性は転送中にチェックされることに留意されたい。無効アドレスが検出され、例外が生成される前に、部分転送を実行することができる。
【００９９】
上述のＭＦＣコマンド・パラメータ・チャネルを使用すると、ＳＰＵからＭＦＣコマンドをキューイングするために、ＭＦＣコマンド・パラメータはまず、ＭＦＣコマンド・パラメータ・チャネルに書き込まなければならない。これは、ＭＦＣコマンド命令コードおよびクラスＩＤパラメータを最後に書き込まなければならないことを除き、任意の順序で実行することができる。したがって、ＭＦＣコマンド・パラメータを書き込むために、図１８に概要を示した動作に従う。
【０１００】
図１８に示されている通り、動作は、ローカル記憶アドレス・パラメータをＭＦＣローカル記憶アドレス・チャネルに書き込むことを含む（ステップ８１０）。有効アドレス・ハイ・パラメータはＭＦＣ有効アドレス・ハイ・チャネルに書き込まれる（ステップ８２０）。有効アドレス・ローまたはリスト・アドレス・パラメータは、ＭＦＣ有効ローまたはリスト・アドレス・チャネルに書き込まれる（ステップ８３０）。ＭＦＣ転送またはリスト・サイズ・パラメータはＭＦＣ転送サイズまたはリスト・サイズ・チャネルに書き込まれる（ステップ８４０）。ＭＦＣコマンド・タグ・パラメータはＭＦＣコマンド・タグＩＤチャネルに書き込まれる（ステップ８５０）。上記のパラメータのすべてがそれぞれのチャネルに書き込まれた後、ＭＦＣコマンド命令コードおよびクラスＩＤパラメータがＭＦＣ命令コードおよびＭＦＣクラスＩＤチャネルに書き込まれ（ステップ８６０）、動作が終了する。ステップ８１０〜８５０は任意の順序で実行することができ、ステップ８６０はそれぞれのチャネルへの他のパラメータの書き込みに続いて行われることを理解されたい。
【０１０１】
ＭＦＣコマンド・パラメータは、ＭＦＣコマンド命令コードおよびクラスＩＤパラメータの書き込みがＭＦＣによって処理されるまで、ＭＦＣコマンド・パラメータ・チャネル内に保持される。ＭＦＣコマンド命令コード・チャネルおよびＭＦＣクラスＩＤチャネルへの書き込みチャネル（ｗｒｃｈ）命令により、ＭＦＣコマンド・パラメータ・チャネル内に保持されているパラメータがＭＦＣコマンド・キューに送信される。ＭＦＣコマンド・パラメータは、ＭＦＣコマンド・キューに対するＭＦＣコマンド自体の発行前に、任意の順序で書き込むことができる。ＭＦＣコマンド・パラメータ・チャネルに書き込まれた最後のパラメータの値は、エンキュー動作で使用される。
【０１０２】
ＭＦＣコマンドがキューイングされた後、ＭＦＣパラメータの値は無効になり、次のＭＦＣコマンド・キューイング要求のために再指定しなければならない。必要なＭＦＣパラメータのすべて（すなわち、任意選択のＥＡＨを除く、すべてのパラメータ）を指定しないと、ＭＦＣコマンド・キューの動作が不適切なものになる可能性がある。
【０１０３】
ＭＦＣコマンド命令コード・チャネルおよびＭＦＣクラスＩＤチャネルは、ハードウェアによってサポートされるＭＦＣキュー・コマンドの数に応じてハードウェアによって構成された最大カウントを有する。ソフトウェアは、ＭＦＣコマンド命令コード・チャネルのチャネル・カウントを、電源投入後およびＭＦＣプロキシ・コマンド・キューのパージ後に実装例によってサポートされる空のＭＦＣプロキシ・コマンド・キュー・スロットの数に初期設定しなければならない。また、ＭＦＣコマンド命令コード・チャネルのチャネル・カウントは、ＳＰＥプリエンプティブ・コンテキスト・スイッチ上で保存および復元しなければならない。
【０１０４】
ＭＦＣタグ・グループ状況チャネル
前述の通り、各コマンドは、ＭＦＣコマンド・タグと呼ばれるＩＤ、たとえば、５ビットのＩＤでタグを付けることができる。同じＩＤを複数のＭＦＣコマンドに使用することができる。同じＩＤを有する１組のコマンドはタグ・グループとして定義される。ソフトウェアは、ＭＦＣコマンド・タグを使用して、各タグ・グループに関するすべての待機コマンドの完了をチェックするかまたは待つことができる。加えて、ＭＦＣコマンド・タグは、ＭＦＣ  ＤＭＡリスト・コマンドをチェックするかまたは待つため、停止通知フラグが設定されたエレメントに到達するため、ならびにＭＦＣ  ＤＭＡリスト・コマンドを再開するためにリスト・エレメントを確認するために、ソフトウェアによって使用される。
【０１０５】
まず、ＭＦＣタグ・グループ状況チャネルについて説明し、次に、タグ・グループの状況を判別し、ＭＦＣ  ＤＭＡリスト・コマンド完了を判別するための手順の説明を示す。
【０１０６】
ＭＦＣタグ・グループ状況チャネルとしては、ＭＦＣ書き込みタグ・グループ照会マスク・チャネル、ＭＦＣ読み取りタグ・グループ照会マスク・チャネル、ＭＦＣ書き込みタグ状況更新要求チャネル、ＭＦＣ読み取りタグ・グループ状況チャネル、ＭＦＣ読み取りリスト停止通知タグ状況チャネル、ＭＦＣ書き込みリスト停止通知タグ確認応答チャネル、およびＭＦＣ読み取りアトミック・コマンド状況チャネルを含む。これらのチャネルのそれぞれについて、以下に詳細に説明する。
【０１０７】
ＭＦＣ書き込みタグ・グループ照会マスク・チャネル
ＭＦＣ書き込みタグ・グループ照会マスク・チャネルは、照会または待機動作に含めるべきタグ・グループを選択するために使用される。ＭＦＣ書き込みタグ・グループ照会マスク・チャネルの詳細は図１９に示されている。
【０１０８】
このチャネルによって提供されるデータは、このチャネルに対して発行された後続書き込みチャネル（ｗｒｃｈ）命令によって変更されるまで、ＭＦＣによって保持される。したがって、データは、各状況照会または待機ごとに再指定する必要はない。ＭＦＣタグ状況更新要求が保留中であるときにこのマスクがソフトウェアによって変更された場合、結果の意味は曖昧になる。保留ＭＦＣタグ状況更新要求は、このマスクの変更前に必ず取り消さなければならない。ＭＦＣタグ状況更新要求は、ＭＦＣ書き込みタグ状況更新要求チャネルに「０」という値（すなわち、即時更新）を書き込むことにより、取り消すことができる。このチャネルの現行内容は、ＭＦＣ読み取りタグ・グループ照会マスク・チャネルを読み取ること（ｒｄｃｈ）によりアクセスすることができる。このチャネルは非ブロッキングであり、関連カウントを備えていない。読み取りチャネル・カウント（ｒｃｈｃｎｔ）命令がこのチャネルに送信された場合、カウントは必ず「１」として返される。
【０１０９】
ＭＦＣ読み取りタグ・グループ照会マスク・チャネル
ＭＦＣ読み取りタグ・グループ照会マスク・チャネルは、プロキシ・タグ・グループ照会マスク・レジスタの現行値を読み取るために使用される。ＭＦＣ読み取りタグ・グループ照会マスク・チャネルの詳細は図２０に示されている。このチャネルを読み取ると、必ず、ＭＦＣ書き込みタグ・グループ照会マスク・チャネルに最後に書き込まれたデータが返される。このチャネルは、プロキシ・タグ・グループ照会マスクのソフトウェア・シャドー・コピーを回避するため、ならびにＳＰＥコンテキスト保存および復元動作のために使用することができる。このチャネルは非ブロッキングであり、関連カウントを備えていない。したがって、読み取りチャネル・カウント（ｒｃｈｃｎｔ）命令がこのチャネルに送信された場合、カウントは必ず「１」として返される。
【０１１０】
ＭＦＣ書き込みタグ状況更新要求チャネル
ＭＦＣ書き込みタグ状況更新要求チャネルは、ＭＦＣタグ・グループ状況がＭＦＣ読み取りタグ・グループ状況チャネルで更新される時期を制御する。ＭＦＣ書き込みタグ状況更新要求チャネルの詳細は図２１に示されている。
【０１１１】
ＭＦＣ書き込みタグ状況更新要求チャネルは、状況が即時または条件の発生時に更新されること、たとえば、任意の使用可能なＭＦＣタグ・グループ完了が「未解決動作なし（no operation outstanding）」状況を有するときに更新されるかまたはすべての使用可能なＭＦＣタグ・グループが「未解決動作なし」状況を有するときにのみ更新されることを指定することができる。このチャネルに対する書き込みチャネル（ｗｒｃｈ）命令は、ＭＦＣ読み取りタグ・グループ状況チャネルからの読み取りチャネル（ｒｄｃｈ）が発生する前に発生しなければならない。
【０１１２】
ＭＦＣ書き込みタグ状況更新要求は、タグ・グループ・マスクを設定した後および関心のあるタグ・グループに関するコマンドを発行した後に実行しなければならない。ＭＦＣ書き込みタグ状況更新要求を発行する前に、あるタグ・グループに関するコマンドが完了し、それにより更新状況条件を満足した場合、待たずにその状況が返される。ＭＦＣ書き込みタグ状況更新要求チャネルに書き込むことにより、まず状況更新を要求せずにＭＦＣ読み取りタグ・グループ状況チャネルから読み取ると、ソフトウェアにより誘導されたデッドロックが発生する。
【０１１３】
前のＭＦＣタグ状況更新要求は、ＭＦＣ書き込みタグ状況更新要求チャネルに対して即時更新状況要求を発行し、「１」という値が返されるまでＭＦＣ書き込みタグ状況更新要求チャネルに関連するカウントを読み取り、次にＭＦＣ読み取りタグ・グループ状況チャネルから読み取って不要な結果を判別し廃棄することにより、取り消すことができる。
【０１１４】
介入状況読み取り要求なしに条件付き更新要求を２回行うと、予測不能タグ状況が返される。予測不能結果を回避するために、即時更新要求を介して要求取り消しが実行されない限り、ソフトウェアは、タグ状況への読み取りとタグ状況更新の要求を対にする。
【０１１５】
特権ソフトウェアは、このチャネルに関するカウントを「１」に初期設定する。書き込みチャネル（ｗｒｃｈ）命令がこのチャネルに対して発行されると、このチャネルに関するカウントが「０」に設定される。ＭＦＣがタグ状況更新要求を受信すると、このカウントが「１」に設定される。このチャネルは書き込みブロッキング使用可能であり、最大カウントは「１」である。
【０１１６】
ＭＦＣ読み取りタグ・グループ状況チャネル
ＭＦＣ読み取りタグ・グループ状況チャネルは、最後のタグ・グループ状況更新要求からのタグ・グループの状況を含む。ＭＦＣ読み取りタグ・グループ状況チャネルの詳細は図２２に示されている。
【０１１７】
タグ・グループ状況更新の時点で使用可能なタグ・グループの状況のみが有効である。タグ・グループ状況更新の時点で使用不可であるタグ・グループに対応するビット位置は「０」に設定される。
【０１１８】
このチャネルから読み取る前に、ＭＦＣ書き込みタグ状況更新要求チャネルを要求しなければならない。これを実行し損なうと、ソフトウェアにより誘導されたデッドロック条件が発生する。これはプログラミング・エラーと見なされ、デッドロック条件を除去するために特権ソフトウェアが必要になる。
【０１１９】
ＭＦＣ読み取りタグ・グループ状況チャネルに送信された読み取りチャネル・カウント（ｒｃｈｃｎｔ）命令は、その状況がまだ使用可能ではない場合に「０」を返し、その状況が使用可能である場合に「１」を返す。この命令は、ＭＦＣ読み取りタグ・グループ状況チャネルが読み取られたときにＳＰＵの停止を回避するために使用することができる。ソフトウェアは、このチャネルに関するカウントを「０」という値に初期設定する。このチャネルは、読み取りブロッキング使用可能であり、最大カウントは「１」である。
【０１２０】
ＭＦＣ読み取りリスト停止通知タグ状況チャネル
ＭＦＣ読み取りリスト停止通知タグ状況チャネルの詳細は図２３に示されている。前述の通り、ＭＦＣリスト・コマンドに関するリスト・エレメントは停止通知フラグを含む。フラグがリスト・エレメント上で設定されている場合、ＭＦＣは、ＭＦＣリスト・コマンド、すなわち、ＤＭＡリスト・コマンドの実行を停止し、このチャネル内のＭＦＣリスト・コマンドのタグ・グループに対応するビットを設定する。このチャネルに関連するカウントも「１」に設定される。ＭＦＣ書き込みリスト停止通知タグ確認応答チャネルにタグ値を書き込むことによって確認されるまで、ＭＦＣリスト・コマンドは停止したままになる。
【０１２１】
ＭＦＣリスト停止通知機能は、ＤＭＡリスト実行が特定のポイントに到達した時期をプログラムに通知する必要があるときに有用である。また、これは、停止されたリスト・エレメントに従うリスト・エレメント（転送サイズまたは有効アドレス）をアプリケーションが動的に変更する必要があるときにも有用である。また、その転送サイズを「０」に設定することにより、リスト・エレメントをスキップすることもできる。ハードウェアは、停止通知エレメントを越えてリスト・エレメントを事前取り出しすることはできない。
【０１２２】
特権ソフトウェアは、ＭＦＣ読み取りリスト停止通知タグ状況チャネルのカウントを０に初期設定しなければならない。ソフトウェアは、このチャネルの内容をもう一度読み取ることにより、このチャネルの最後の読み取り以来停止しているコマンドをどのタグ・グループが備えているかを判別することができる。このチャネルに対して読み取りチャネル（ｒｄｃｈ）命令を発行すると、すべてのビットが０にリセットされ、このチャネルに対応するカウントが「０」に設定される。したがって、「１」に設定された停止通知フラグを含む未解決リスト・エレメントならびに停止されたコマンドをまったく含まない読み取りチャネル（ｒｄｃｈ）命令を発行すると、ソフトウェアにより誘導されたデッドロックが発生する。
【０１２３】
どのタグ・グループも停止されていないときにこのチャネル上で読み取りチャネル（ｒｄｃｈ）命令を発行すると、停止通知フラグが設定されたリスト・エレメントが検出されるまでＳＰＵ実行停止が発生する。また、ソフトウェアは、停止通知フラグが設定されたＭＦＣリスト・エレメントが検出される時期を判別するためにＳＰＵイベント機能とともに使用するためにこのチャネルに関連するカウントを読み取る（ｒｃｈｃｎｔ）こともできる。ＭＦＣ読み取りリスト停止通知タグ状況チャネルに送信された読み取りチャネル・カウント（ｒｃｈｃｎｔ）命令は、このチャネルの最後の読み取り以来、新しい停止ＭＦＣリスト・コマンドがまったく存在しない場合に「０」を返す。このチャネルは、読み取りブロッキングであり、「１」という最大カウントを有する。
【０１２４】
ＭＦＣ書き込みリスト停止通知タグ確認応答チャネル
ＭＦＣ書き込みリスト停止通知タグ確認応答チャネルの詳細は図２４に示されている。ＭＦＣ書き込みリスト停止通知タグ確認応答チャネルは、停止通知フラグが設定されたリスト・エレメント上で停止したＭＦＣリスト・コマンドを含むタグ・グループを確認するために使用される。タグ・グループは、このチャネルにＭＦＣタグ・グループを書き込むことによって確認される。書き込み後、このチャネルに書き込まれた値に一致するタグ・グループのすべての停止ＭＦＣリスト・コマンドが再始動される。
【０１２５】
ＭＦＣリスト停止通知機能は、ＤＭＡリスト実行が特定のポイントに到達した時期をプログラムに通知する必要があるときに有用である。また、これは、停止されたリスト・エレメントに従うリスト・エレメント（転送サイズまたは有効アドレス）をアプリケーションが動的に変更する必要があるときにも有用である。また、その転送サイズを０に設定することにより、リスト・エレメントをスキップすることもできる。ハードウェアは、停止通知エレメントを越えてリスト・エレメントを事前取り出しすることはできない。
【０１２６】
停止通知条件により現在停止されていないタグ・グループを確認することは定義されていない。このように実行すると、ＭＦＣ読み取りリスト停止通知タグ状況チャネルに無効状況が発生する。一貫性のため、この条件はノーオペレーション（no-op）として処理される。
【０１２７】
このチャネルは、非ブロッキング・チャネルであり、関連カウントを備えていない。読み取りチャネル・カウント（ｒｃｈｃｎｔ）命令がこのチャネルに送信された場合、カウントは必ず「１」として返される。
【０１２８】
ＭＦＣ読み取りアトミック・コマンド状況チャネル
ＭＦＣ読み取りアトミック・コマンド状況チャネルの詳細は図２５に示されている。ＭＦＣ読み取りアトミック・コマンド状況チャネルは、最後に完了した即時ＭＦＣアトミック更新コマンドの状況を含む。アトミック・コマンドとは、ＭＦＣ  ＳＰＵキュー内の他のコマンドを待たずに実行され、ＭＦＣ  ＳＰＵキュー内の他のコマンドとは無関係に実行されるコマンドである。ＭＦＣによってサポートされるアトミック・コマンドとしては、ｇｅｔｌｌａｒ（ロック・ライン予約取得）、ｐｕｔｌｌｃ（ロック・ライン条件付きプット）、ｐｕｔｌｌｕｃ（ロック・ライン無条件プット）、およびｐｕｔｑｌｌｕｃ（待機ロック・ライン無条件プット）の４通りがある。これらのコマンドは、従来、「ロック」を解除するためにソフトウェアによって使用されるキャッシュ可能な保管命令と同様の機能を実行する。ｐｕｔｌｌｕｃコマンドとｐｕｔｑｌｌｕｃコマンドとの違いは、ｐｕｔｑｌｌｕｃコマンドはタグが付けられ、ＭＦＣ  ＳＰＵコマンド・キュー内の他のＭＦＣコマンドの裏側でキューイングされ、ｐｕｔｌｌｕｃコマンドは即時実行されることである。
【０１２９】
ｐｕｔｑｌｌｕｃコマンドはタグが付けられ、暗黙のタグ固有のフェンスを有するので、すでにＭＦＣ  ＳＰＵコマンド・キュー内にある同じタグ・グループ内の他のすべてのコマンドに対して順序付けされる。ｇｅｔｌｌａｒコマンド、ｐｕｔｌｌｃコマンド、およびｐｕｔｌｌｕｃコマンドはタグが付けられず、したがって、即時実行される。ｇｅｔｌｌａｒコマンド、ｐｕｔｌｌｃコマンド、およびｐｕｔｌｌｕｃコマンドが即時実行されても、これらのコマンドは依然として、ＭＦＣ  ＳＰＵコマンド・キュー内の使用可能なスロットを必要とする。ＭＦＣ  ＳＰＵコマンド・キュー内の他のコマンドによる順序付けはまったく想定する必要はない。各ｇｅｔｌｌａｒコマンド、ｐｕｔｌｌｃコマンド、またはｐｕｔｌｌｕｃコマンドを発行した後、ソフトウェアは、そのコマンドの完了を検証するためにＭＦＣ読み取りアトミック・コマンド状況チャネルからの読み取りを発行しなければならない。即時アトミック・コマンドを発行する前にこのチャネルに対してチャネル読み取り（ｒｄｃｈ）命令を発行すると、ソフトウェアにより誘導されたデッドロックが発生する。
【０１３０】
ソフトウェアは、即時アトミックＭＦＣコマンドが完了したかどうかを判別するために、このチャネルに関連するチャネル・カウント（ｒｃｈｃｎｔ）を読み取ることができる。「０」という値が返される場合、即時アトミックＭＦＣコマンドは完了していない。「１」という値が返される場合、即時アトミックＭＦＣコマンドは完了しており、このチャネルを読み取る（ｒｄｃｈ）ことにより、その状況が使用可能になる。
【０１３１】
ＭＦＣ読み取りアトミック・コマンド状況チャネルからの読み取り（ｒｄｃｈ）は、必ず即時アトミックＭＦＣコマンドに従わなければならない。ＭＦＣ読み取りアトミック・コマンド状況チャネルからの介入読み取りなしに複数のアトミックＭＦＣコマンドを実行すると、誤った状況が発生する。
【０１３２】
特権ソフトウェアはこのチャネルのカウントを「０」に初期設定する。このチャネルは読み取りブロッキングであり、最大カウントは「１」である。このチャネルの内容は、読み取られたときにクリアされる。後続の即時ＭＦＣアトミック更新コマンドが完了すると、それ以前のＭＦＣコマンドの状況が上書きされる。
【０１３３】
上述のＭＦＣタグ・グループ状況チャネルは、タグ・グループの状況の判別を容易にするため、ならびにＭＦＣ  ＤＭＡリスト・コマンドの完了を判別するために使用される。タグ・グループの状況を判別するために、ＭＦＣ読み取りタグ・グループ状況チャネルのポーリング、タグ・グループ更新の待機またはイベントの待機、およびタグ・グループ状況更新イベントの割り込みという３通りの基本的手順がサポートされている。ＭＦＣコマンドの完了またはＭＦＣコマンド・グループの完了についてポーリングするための基本的手順は図２６に示されている通りである。
【０１３４】
図２６に示されている通り、任意の保留タグ状況更新要求はクリアされる（ステップ１０１０）。これは、たとえば、ＭＦＣ書き込みタグ状況更新要求チャネルに「０」を書き込み、「１」という値が返されるまでＭＦＣ書き込みタグ状況更新要求チャネルに関連するチャネル・カウントを読み取り、ＭＦＣ読み取りタグ・グループ状況チャネルを読み取り、タグ状況データを廃棄することにより、実施することができる。
【０１３５】
次に、適切なマスク・データを有するＭＦＣ書き込みタグ・グループ照会マスク・チャネルに書き込むことにより、関心のあるタグ・グループが使用可能になる（ステップ１０２０）。次に、たとえば、「０」という値でＭＦＣ書き込みタグ状況更新要求チャネルに書き込むことにより、即時タグ状況更新が要求される（ステップ１０３０）。
【０１３６】
次に、ＭＦＣ読み取りタグ・グループ状況チャネルの読み取りが実行される（ステップ１０４０）。返されるデータは、タグ・グループ・マスクが適用された各タグ・グループの現行状況である。関心のある追加のタグ・グループが存在するかどうかについて判別が行われる（ステップ１０５０）。存在する場合、動作はステップ１０３０に戻る。存在しない場合、動作は終了する。
【０１３７】
タグ・グループ更新を待つかまたはイベント（１つまたは複数のタグ・グループ完了）を待つための基本的手順は図２７に示されている通りである。図示の通り、動作は、任意の保留タグ状況更新要求をクリアすることから始まる（ステップ１１１０）。これは、たとえば、ＭＦＣ書き込みタグ状況更新要求チャネルに「０」を書き込み、「１」という値が返されるまでＭＦＣ書き込みタグ状況更新要求チャネルに関連するチャネル・カウントを読み取り、ＭＦＣ読み取りタグ・グループ状況チャネルを読み取り、タグ状況データを廃棄することにより、実施することができる。
【０１３８】
「０１」または「１０」という値でＭＦＣ書き込みタグ状況更新要求チャネルに書き込むことにより、条件付きタグ状況更新が要求される（ステップ１１２０）。「０１」という値は、任意の使用可能なタグ・グループが完了するとタグ・グループ更新が行われることを指定する。「１０」という値は、結果的にＳＰＵタグ・グループ状況更新が行われるようにすべての使用可能なタグ・グループが完了しなければならないことを指定する。
【０１３９】
その後、ステップ１１２０で指定された特定のタグ・イベントを待つためにＭＦＣ読み取りタグ・グループ状況チャネルが読み取られる（ステップ１１３０）。この読み取りにより、ステップ１１２０で指定された条件が満たされるまで、ＳＰＵの実行が停止される。代わって、特定のタグ・イベントをポーリングするかまたは待つためにＭＦＣ読み取りタグ・グループ状況チャネルに関連するカウントの読み取りを実行することもできる（ステップ１１３２）。
【０１４０】
返されるカウントが「１」という値を有するかどうかについて判別が行われる（ステップ１１４０）。有していない場合、動作はステップ１１３２に戻る。カウントが「１」である場合、１つまたは複数のどのタグ・グループが完了したかを判別するためにＭＦＣ読み取りタグ・グループ状況チャネルが読み取られる（ステップ１１５０）。次に動作は終了する。
【０１４１】
条件付きタグ・イベントを待つかまたは条件付きタグ・イベントについてポーリングすることに対する代替策は、ＳＰＵイベント機能を使用することである。この手順は、典型的には、複数のイベントの１つが発生するのをアプリケーションが待っているとき、またはコマンド完了を待ちながらアプリケーションが他の作業を実行できるときに使用される。この手順は図２８に示されている通りである。
【０１４２】
図２８に示されている通り、任意の保留タグ状況更新要求はクリアされる（ステップ１２１０）。前述の通り、これは、たとえば、ＭＦＣ書き込みタグ状況更新要求チャネルに「０」を書き込み、「１」という値が返されるまでＭＦＣ書き込みタグ状況更新要求チャネルに関連するチャネル・カウントを読み取り、ＭＦＣ読み取りタグ・グループ状況チャネルを読み取り、タグ状況データを廃棄することにより、実施することができる。
【０１４３】
１つまたは複数のタグ・グループが選択される（ステップ１２２０）。「１」という値でＳＰＵ書き込みイベント確認応答チャネルに書き込む（ｗｒｃｈ）ことにより、任意の保留タグ状況更新イベントがクリアされる（ステップ１２３０）。ＳＰＵ書き込みイベント・マスク・チャネルに「１」を書き込むことにより、ＭＦＣタグ・グループ状況更新イベントがアンマスクされる（ステップ１２４０）。次に、使用可能なイベントが発生するのを待つためにＳＰＵ読み取りイベント状況チャネルが読み取られる（ステップ１２５０）。この読み取りにより、使用可能なイベントが発生するまで、ＳＰＵの実行が停止される。代わって、カウントが「１」として返されるまで特定のタグ・イベントをポーリングするかまたは待つために、ＳＰＵ読み取りイベント状況チャネルに関連するカウントを読み取ることもできる。
【０１４４】
ＳＰＵ読み取りイベント状況チャネルが読み取られ、使用可能なイベントが発生したかどうかについて判別が行われる（ステップ１２６０）。発生していない場合、動作はステップ１２５０に戻る。使用可能なイベントが発生した場合、どのタグまたはタグ・グループがそのイベントを引き起こしたかを判別するためにＭＦＣ読み取りタグ・グループ状況チャネルが読み取られる（ステップ１２７０）。次に動作は終了する。
【０１４５】
ＭＦＣ  ＤＭＡリスト・コマンドが停止通知フラグが設定されたリスト・エレメントに到達したかどうかを判別するために、ＭＦＣ読み取りリスト停止通知タグ状況チャネルのポーリング、ＭＦＣ  ＤＭＡリスト・コマンド停止通知イベントの待機、およびＭＦＣ  ＤＭＡリスト・コマンド停止通知イベントの割り込みという３通りの基本的手順がサポートされている。ＭＦＣ  ＤＭＡリスト・コマンドが停止通知フラグが設定されたリスト・エレメントに到達したかどうかを判別するためにポーリングするための基本的手順は図２９に示されている通りである。
【０１４６】
図２９に示されている通り、動作は、停止通知フラグが設定されたリスト・エレメントを有するＭＦＣ  ＤＭＡリスト・コマンドが発行されることから始まる（ステップ１３１０）。「１」という値が返されるまで、ＭＦＣ読み取りリスト停止通知タグ状況チャネルに関連するカウントが読み取られる（ｒｃｈｃｎｔ）（ステップ１３２０）。「１」という値が返された場合（ステップ１３３０）、ＭＦＣ読み取りリスト停止通知タグ状況チャネルが読み取られる（ｒｄｃｈ）（ステップ１３４０）。返されるデータは各タグ・グループの現行状況であり、それは、このチャネルの最後の読み取り以来、停止通知フラグが設定されたリスト・エレメントに到達している。
【０１４７】
関心のある１つまたは複数のタグ・グループが停止通知フラグが設定されたリスト・エレメントに到達しているかどうかについて判別が行われる（ステップ１３５０）。到達していない場合、関心のある１つまたは複数のタグ・グループが停止通知フラグが設定されたリスト・エレメントに到達するまで、動作はステップ１３４０に戻る。
【０１４８】
関心のある１つまたは複数のタグ・グループが停止通知フラグが設定されたリスト・エレメントに到達している場合、ＭＦＣ  ＤＭＡリスト・コマンドを再開するために、停止されたタグ・グループに対応するタグ・グループ番号でＭＦＣ書き込みリスト停止通知タグ確認応答チャネルに書き込まれる（ｗｒｃｈ）（ステップ１３６０）。次に動作は終了する。
【０１４９】
停止通知フラグが設定されたリスト・エレメントに到達するためのＭＦＣ  ＤＭＡリスト・コマンドを待つための基本的手順は図３０に示されている通りである。図示の通り、動作は、停止通知フラグが設定されたリスト・エレメントを有するＭＦＣ  ＤＭＡリスト・コマンドが発行されることから始まる（ステップ１４１０）。ＭＦＣ読み取りリスト停止通知タグ状況チャネルの読み取り（ｒｄｃｈ）が実行される（ステップ１４２０）。返されるデータは、このチャネルの最後の読み取り以来、停止通知フラグが設定されたリスト・エレメントに到達している各タグ・グループの現行状況である。この読み取りにより、ＭＦＣ  ＤＭＡリスト・コマンドが停止通知フラグが設定されたリスト・エレメントに到達するまで、ＳＰＵが停止される。
【０１５０】
関心のある１つまたは複数のタグ・グループが停止通知フラグが設定されたリスト・エレメントに到達したかどうかについて判別が行われる（ステップ１４３０）。対応するビットは戻りデータに設定される。読み取りごとにビットがリセットされるので、ソフトウェアは、複数のタグ・グループが停止するのを待つ間、タグ・グループの累積を実行しなければならない。
【０１５１】
到達していない場合、関心のある１つまたは複数のタグ・グループが停止通知フラグが設定されたリスト・エレメントに到達するまで、動作はステップ１４２０に戻る。到達した場合、ＭＦＣ  ＤＭＡリスト・コマンドを再始動するために、停止されたタグ・グループに対応するタグ・グループ番号で、ＭＦＣ書き込みリスト停止通知タグ確認応答チャネルに対して書き込み（ｗｒｃｈ）が実行される（ステップ１４４０）。
【０１５２】
リスト停止通知タグ・グループ状況を待つかまたはリスト停止通知タグ・グループ状況についてポーリングすることに対する代替策は、ＳＰＵイベント機能を使用することである。この手順は、典型的には、ＭＦＣ  ＤＭＡリスト・コマンドが実行されている間にＳＰＵプログラムによって他の作業を実行できるときに使用される。この手順は、たとえば、図３１に概要が示されている通りである。
【０１５３】
図３１に示されている通り、この手順は、任意の保留ＭＦＣ  ＤＭＡリスト・コマンド停止通知イベントをクリアすることから始まる（ステップ１５１０）。これは、たとえば、「１」という値でＳＰＵ書き込みイベント確認応答チャネルに書き込む（ｗｒｃｈ）ことにより、実施できることである。ＭＦＣ  ＤＭＡリスト・コマンド停止通知イベントは、ＳＰＵ書き込みイベント・マスク・チャネルのＳｎビットに「１」を書き込むことにより使用可能になる（ステップ１５２０）。停止通知フラグが設定されたリスト・エレメントを有するＭＦＣ  ＤＭＡリスト・コマンドが発行される（ステップ１５３０）。
【０１５４】
使用可能なイベントが発生するのを待つために、ＳＰＵ読み取りイベント状況チャネルからの読み取り（ｒｄｃｈ）を実行することができる（ステップ１５４０）。この読み取りにより、使用可能なイベントが発生するまで、ＳＰＵの実行が停止される。代わって、カウントが「１」として返されるまで特定のタグ・イベントについてポーリングするために、ＳＰＵ読み取りイベント状況チャネルに関連するカウントの読み取り（ｒｃｈｃｈｔ）のカウントが除去される。
【０１５５】
使用可能なイベントが発生したかどうかについて判別が行われる（ステップ１５５０）。発生していない場合、動作はステップ１５４０に戻る。使用可能なイベントが発生した場合、ＤＭＡリスト停止通知イベントが発生したかどうかについて判別が行われる（ステップ１５６０）。ＤＭＡリスト停止通知イベントが発生していない場合、動作はステップ１５４０に戻る。
【０１５６】
ＤＭＡリスト停止通知イベントが発生した場合、１つまたは複数のどのタグ・グループがそのイベントを引き起こしたかを判別するためにＭＦＣ読み取りリスト停止通知タグ状況チャネルからの読み取り（ｒｄｃｈ）が実行される（ステップ１５７０）。次に、ＭＦＣ  ＤＭＡリスト・コマンドを再開するために、停止されたタグ・グループに対応するタグ・グループ番号でＭＦＣ書き込みリスト停止通知タグ確認応答チャネルへの書き込み（ｗｒｃｈ）が行われる（ステップ１５８０）。
【０１５７】
ＭＦＣ書き込みマルチソース同期要求チャネル
ＭＦＣ書き込みマルチソース同期要求チャネルの詳細は図３２に示されている。ＭＦＣ書き込みマルチソース同期要求チャネルは、ＭＦＣマルチソース同期機能の一部であり、関連ＭＦＣに送信された未解決転送の追跡をＭＦＣに開始させる。ＭＦＣマルチソース同期機能は、プロセッサまたは装置が主記憶装置アドレス・ドメインからの同期を制御できるようにするＭＦＣマルチソース同期レジスタと、ＳＰＵがローカル記憶アドレス・ドメインからの同期を制御できるようにするＭＦＣ書き込みマルチソース同期要求チャネル（ＭＦＣ＿ＷｒＭＳＳｙｎｃＲｅｑ）とを含む。
【０１５８】
ＭＦＣ書き込みマルチソース同期要求チャネルへの書き込みによって、同期を要求することができる。要求された同期が完了すると、チャネル・カウントは元の「１」に設定され、このチャネルに書き込まれたデータは無視される。このチャネルに対して２回目の書き込みを行うと、１回目の書き込みによって追跡されている未解決転送が完了するまで、ＳＰＵは停止される。
【０１５９】
ＭＦＣ書き込みマルチソース同期要求チャネルを使用するために、プログラムはＭＦＣ書き込みマルチソース同期要求チャネルに書き込み、次にＭＦＣ書き込みマルチソース同期要求チャネルが使用可能になるのを待つ、すなわち、チャネル・カウントが元の「１」に設定される時期を待つ。ソフトウェアは、このチャネルに関するカウントを「１」という値に初期設定する。このチャネルは、書き込みブロッキング使用可能であり、最大カウントは「１」である。
【０１６０】
メールボックス機能
ＭＦＣと通信するためのチャネルに加えて、本発明のチャネル・インターフェースは、ＳＰＵ内に設けられたメールボックス機能と通信するためのチャネルをさらに提供する。ＭＦＣは、ＳＰＵとその他のプロセッサおよび装置との間に１組のメールボックス・キューを提供する。各メールボックス・キューには、ＳＰＵチャネルならびに対応するＭＭＩＯレジスタが割り当てられている。ＳＰＵソフトウェアは、ＳＰＵチャネル命令を使用することにより、メールボックス・キューにアクセスする。その他のプロセッサおよび装置は、ＭＭＩＯレジスタの１つを使用することにより、メールボックス・キューにアクセスする。キューに加えて、ＭＦＣは、メールボックスに関するキュー状況、メールボックス割り込み、およびＳＰＵイベント通知を提供する。ＭＭＩＯレジスタ、チャネル、状況、割り込み、メールボックス・キュー、およびイベントは、ひとまとめにして「メールボックス機能」と呼ばれる。前述の通り、メールボックス機能は、図２のＭＦＣレジスタ・ユニット２５０内に設けられる。
【０１６１】
ＳＰＵから他のプロセッサまたは他の装置に情報を送信するために、ＳＰＵアウトバウンド・メールボックス・キューおよびＳＰＵアウトバウンド割り込みメールボックス・キューという２つのメールボックス・キューがＭＦＣによって提供される。これらのメールボックス・キューは、ＰＰＥにショート・メッセージ（たとえば、戻りコードまたは状況）を送信するためのものである。書き込みチャネル（ｗｒｃｈ）命令を使用してＳＰＵによってこれらのキューの１つに書き込まれたデータは、対応するＭＭＩＯレジスタを読み取ることにより、どのプロセッサまたは装置にとっても使用可能である。
【０１６２】
ＳＰＵ書き込みアウトバウンド割り込みメールボックス・チャネルに送信された書き込みチャネル（ｗｒｃｈ）命令により、システム内のプロセッサまたは他の装置に割り込みを送信することもできる。これらのキューのいずれか一方（ＳＰＵアウトバウンド・メールボックスまたはＳＰＵアウトバウンド割り込みメールボックス・レジスタ）から読み取られたＭＭＩＯはＳＰＵイベントを設定することができ、次にこれがＳＰＵ割り込みを引き起こす。
【０１６３】
外部プロセッサまたはその他の装置のいずれか一方がＳＰＵに情報を送信するために、１つのメールボックス・キュー、すなわち、ＳＰＵインバウンド・メールボックス・キューが提供される。このメールボックス・キューは、ＰＰＥによって書き込まれるためのものである。しかし、他のプロセッサ、ＳＰＵ、または他の装置もこのメールボックス・キューを使用することができる。ＭＭＩＯ書き込みを使用してプロセッサまたは他の装置によってこのキューに書き込まれたデータは、ＳＰＵ読み取りインバウンド・メールボックス・チャネルを使用することにより、ＳＰＵにとって使用可能である。ＳＰＵインバウンド・メールボックス・レジスタへのＭＭＩＯ書き込みはＳＰＵイベントを設定することができ、次にこれがＳＰＵ割り込みを引き起こすことができる。
【０１６４】
ＳＰＵアウトバウンド・メールボックス・レジスタは、対応するＳＰＵアウトバウンド・メールボックス・キューから３２ビットのデータを読み取るために使用される。ＳＰＵアウトバウンド・メールボックス・レジスタは、ＳＰＵアウトバウンド・メールボックス・キューにデータを書き込むために対応するＳＰＵ書き込みアウトバウンド・メールボックス・チャネルを有する。ＳＰＵアウトバウンド・メールボックス・キューに送信された書き込みチャネル（ｗｒｃｈ）命令は、他のプロセッサまたは他の装置が読み取るために、その命令内に指定された３２ビットの命令をＳＰＵアウトバウンド・メールボックス・キューにロードする。ＳＰＵアウトバウンド・メールボックス・キューが満杯である場合、このメールボックス・レジスタから読み取られたＭＭＩＯが発生するまで、このキューに送信された書き込みチャネル（ｗｒｃｈ）命令上でＳＰＵが停止する。
【０１６５】
このレジスタのＭＭＩＯ読み取りは必ず、それがＳＰＵによって書き込まれた順序で情報を返す。空のＳＰＵアウトバウンド・メールボックス・キューからの読み取り時に返される情報は未定義である。ＳＰＵアウトバウンド・メールボックス・キュー内の項目の数（またはキュー項目数）は実装依存である。
【０１６６】
ＳＰＵメールボックス状況レジスタのＭＭＩＯ読み取りは、メールボックス・キューの状況を返す。ＳＰＵアウトバウンド・メールボックス・キュー内の有効キュー項目の数は、ＳＰＵメールボックス状況レジスタのＳＰＵ＿Ｏｕｔ＿Ｍｂｏｘ＿Ｃｏｕｎｔフィールドに示される。ＳＰＵアウトバウンド・メールボックス・レジスタのＭＭＩＯ読み取りは、保留ＳＰＵアウトバウンド・メールボックス使用可能イベントを設定する。メールボックス・キュー内に残っているデータの量が実装依存しきい値未満であり、この条件が使用可能である（すなわち、ＳＰＵ＿ＷｒＥｖｅｎｔＭａｓｋ［Ｌｅ］が「１」に設定される）場合、ＳＰＵ読み取りイベント状況チャネルが更新され（すなわち、ＳＰＵ＿ＲｄＥｖｅｎｔＳｔａｔ［Ｌｅ］が「１」に設定される）、そのチャネル・カウントが「１」に設定される。これにより、ＳＰＵアウトバウンド割り込みメールボックス使用可能イベントが引き起こされる。
【０１６７】
ＳＰＵインバウンド・メールボックス・レジスタは、対応するＳＰＵインバウンド・メールボックス・キューに３２ビットのデータを書き込むために使用される。ＳＰＵインバウンド・メールボックス・キューは、このキューからデータを読み取るために対応するＳＰＵ読み取りインバウンド・メールボックス・チャネルを有する。ＳＰＵ読み取りインバウンド・メールボックス・チャネルの読み取りチャネル（ｒｄｃｈ）命令は、ＳＰＵインバウンド・メールボックス・キューから読み取りチャネル（ｒｄｃｈ）命令によって指定されたＳＰＵレジスタに３２ビットのデータをロードする。ＳＰＵは空のメールボックスから読み取ることはできない。ＳＰＵインバウンド・メールボックス・キューが空である場合、データがこのメールボックスに書き込まれるまで、このチャネルに対する読み取りチャネル（ｒｄｃｈ）命令上でＳＰＵが停止する。このチャネルに対する読み取りチャネル（ｒｄｃｈ）命令は必ず、それがＰＰＥまたは他のプロセッサおよび装置によって書き込まれた順序で情報を返す。
【０１６８】
このキュー内の項目の数（またはキュー項目数）は実装依存である。ＳＰＵメールボックス状況レジスタのＭＭＩＯ読み取りは、メールボックス・キューの状態を返す。ＳＰＵメールボックス・キュー内の使用可能キュー位置の数は、ＳＰＵメールボックス状況レジスタのＳＰＵ＿Ｉｎ＿Ｍｂｏｘ＿Ｃｏｕｎｔフィールド（すなわち、ＳＰＵ＿Ｍｂｏｘ＿Ｓｔａｔ［ＳＰＵ＿Ｉｎ＿Ｍｂｏｘ＿Ｃｏｕｎｔ］）に示される。
【０１６９】
ソフトウェアは、ＳＰＵメールボックスのオーバーランを回避するために、ＳＰＵ＿Ｉｎ＿Ｍｂｏｘに書き込む前に、ＳＰＵメールボックス状況レジスタをチェックする。ＳＰＵインバウンド・メールボックス・レジスタのＭＭＩＯ書き込みは、保留ＳＰＵメールボックス・イベントを設定する。使用可能（すなわち、ＳＰＵ＿ＷｒＥｖｅｎｔＭａｓｋ［Ｍｂｏｘ］＝「１」）である場合、ＳＰＵ読み取りイベント状況チャネルが更新され、そのチャネル・カウントが「１」に設定され、これはＳＰＵインバウンド・メールボックス使用可能イベントを引き起こす。
【０１７０】
ＳＰＵメールボックス状況レジスタは、ＳＰＵと対応するＳＰＥ内のＰＰＥとの間のメールボックス・キューの現行状態を含む。このレジスタの読み取りは、メールボックス・キューの状態に対する効果がまったくない。
【０１７１】
ＳＰＵメールボックス・チャネル
上述の通り、ＭＦＣによって提供されるメールボックス機能は、ＳＰＵ書き込みアウトバウンド・メールボックス・チャネル、ＳＰＵ書き込みアウトバウンド割り込みメールボックス・チャネル、およびＳＰＵ読み取りインバウンド・メールボックス・チャネルを含む、複数のＳＰＵメールボックス・チャネルを含む。これらのＳＰＵメールボックス・チャネルはブロッキングとして定義され、すなわち、チャネルが満杯であるとき（書き込みブロッキング）またはデータが使用不能であるとき（読み取りブロッキング）にＳＰＵを停止する。チャネルのブロッキング方法は、アプリケーションが実行すべき他の作業をまったく持たないときに省力化のために非常に有益である。本質的に、空間が解放されるかまたはデータが使用可能になるまで、プロセッサを低電力状態に置くことができる。
【０１７２】
これらのチャネルはブロッキングであり、したがって、電力を節約するという恩恵を得るが、これらのチャネルにアクセスすると、不明確な期間の間、ＳＰＵを停止させる可能性がある。ソフトウェアは、以下に論ずるようにＳＰＵイベント機能を使用することによるかまたはメールボックス・チャネルに関連するチャネル・カウントを読み取ることにより、ＳＰＵの停止を回避することができる。
【０１７３】
ＳＰＵ書き込みアウトバウンド・メールボックス・チャネル
図３３は、本発明の模範的な一実施形態によるＳＰＵ書き込みアウトバウンド・メールボックス・チャネルの詳細を示している。このチャネルに送信された書き込みチャネル命令（ｗｒｃｈ）は、ＳＰＵ書き込みアウトバウンド・メールボックス・キューにデータを書き込む。ＳＰＵによりこのチャネルに書き込まれたデータは、ＳＰＵアウトバウンド・メールボックス・レジスタのＭＭＩＯ読み取りのために使用可能である。また、このチャネルへの書き込みチャネル（ｗｒｃｈ）により、関連チャネル・カウントが「１」だけ減分される。満杯のＳＰＵ書き込みアウトバウンド・メールボックス・キューに書き込むと、ＳＰＵアウトバウンド・メールボックス・レジスタが読み取られ、ＳＰＵ書き込みアウトバウンド・メールボックス・キュー内の位置が解放されるまで、ＳＰＵ実行が停止される。
【０１７４】
停止条件を回避するために、チャネル書き込みを発行する前に、ＳＰＵ書き込みアウトバウンド・メールボックス・キュー内にスロットが存在することを保証するためにこのチャネルに関連するチャネル・カウントを読み取ることができる。代わって、満杯であると判別された場合、ＳＰＵ書き込みアウトバウンド・メールボックス・キュー内のスロットの可用性を通知するためにＳＰＵアウトバウンド・メールボックス使用可能イベントを使用することができる。
【０１７５】
ＳＰＵ書き込みアウトバウンド・メールボックス・キューが満杯であるときに、このチャネルに関連するチャネル・カウントを読み取ると、「０」という値が返される。ゼロ以外の値は、ＳＰＵ書き込みアウトバウンド・メールボックス・キュー内で自由な３２ビット・ワードの数を示す。
【０１７６】
特権ソフトウェアは、ＳＰＵ書き込みアウトバウンド・メールボックス・チャネルのカウントをＳＰＵ書き込みアウトバウンド・メールボックス・キューの項目数に初期設定する。このチャネルは書き込みブロッキングである。このチャネルに関する最大カウントは実装依存であり、ＳＰＵ書き込みアウトバウンド・メールボックス・キューの項目数（すなわち、使用可能なスロットの数）でなければならない。
【０１７７】
ＳＰＵ書き込みアウトバウンド割り込みメールボックス・チャネル
図３４は、本発明の模範的な一実施形態によるＳＰＵ書き込みアウトバウンド割り込みメールボックス・チャネルの詳細を示している。このチャネルへの書き込みチャネル（ｗｒｃｈ）命令は、ＳＰＵ書き込みアウトバウンド割り込みメールボックス・キューにデータを書き込む。ＳＰＵによってこのチャネルに書き込まれたデータは、ＳＰＵアウトバウンド割り込みメールボックス・レジスタのＭＭＩＯ読み取りにとって使用可能なものになる。
【０１７８】
また、このＳＰＵ書き込みアウトバウンド・メールボックス・チャネルへの書き込みチャネル（ｗｒｃｈ）命令により、関連カウントが「１」だけ減分される。満杯のＳＰＵ書き込みアウトバウンド割り込みメールボックス・キューに書き込むと、ＳＰＵアウトバウンド割り込みメールボックス・レジスタが読み取られ、ＳＰＵ書き込みアウトバウンド割り込みメールボックス・キュー内の位置が解放されるまで、ＳＰＵ実行が停止される。
【０１７９】
停止条件を回避するために、チャネル書き込みを発行する前に、ＳＰＵ書き込みアウトバウンド割り込みメールボックス・キュー内にスロットが存在することを保証するためにこのチャネルに関連するチャネル・カウントを読み取ることができる。代わって、前に満杯であった場合、ＳＰＵ書き込みアウトバウンド割り込みメールボックス・キュー内のスロットの可用性を通知するためにＳＰＵアウトバウンド割り込みメールボックス使用可能イベントを使用することができる。また、ＳＰＵ書き込みアウトバウンド割り込みメールボックス・チャネルへの書き込みチャネル（ｗｒｃｈ）命令により、プロセッサまたはその他の装置に割り込みが送信される。割り込みおよび前に発行されたＭＦＣコマンドの順序付けはまったく行われない。
【０１８０】
ＳＰＵ書き込みアウトバウンド割り込みメールボックス・キューが満杯であるときに、このチャネルに関連するチャネル・カウントを読み取ると、「０」という値が返される。ゼロ以外のカウント値は、このキュー内で自由な３２ビット・ワードの数を有する。
【０１８１】
特権ソフトウェアは、このチャネルのカウントをＳＰＵ書き込みアウトバウンド割り込みメールボックス・キューの項目数に初期設定する。このチャネルは書き込みブロッキングである。このチャネルに関する最大カウントは実装依存であり、ＳＰＵ書き込みアウトバウンド割り込みメールボックス・キューの項目数（すなわち、使用可能なスロットの数）でなければならない。
【０１８２】
ＳＰＵ読み取りインバウンド・メールボックス・チャネル
図３５は、本発明の模範的な一実施形態によるＳＰＵ読み取りインバウンド・メールボックス・チャネルの詳細を示している。このチャネルから読み取ると、ＳＰＵ読み取りインバウンド・メールボックス・キュー内の次のデータが返される。データは、ＳＰＵインバウンド・メールボックス・レジスタへの書き込みを発行するプロセッサまたは装置によってＳＰＵ読み取りインバウンド・メールボックス・キュー内に置かれる。
【０１８３】
このＳＰＵ読み取りインバウンド・メールボックス・チャネルから読み取ると、関連カウントが「１」だけ減分される。空のメールボックスから読み取ると、ＳＰＵインバウンド・メールボックス・レジスタが書き込まれ、ＳＰＵ読み取りインバウンド・メールボックス・キュー内にデータ項目が配置されるまで、ＳＰＵ実行が停止される。停止条件を回避するために、チャネル読み取りを発行する前に、ＳＰＵ読み取りインバウンド・メールボックス・キュー内にデータが存在することを保証するためにこのチャネルに関連するチャネル・カウントを読み取ることができる。代わって、ＳＰＵ読み取りインバウンド・メールボックス・キュー内のデータの可用性を通知するためにＳＰＵインバウンド・メールボックス使用可能イベントを使用することができる。
【０１８４】
メールボックスが空である場合、チャネル・カウントを読み取ると（ｒｃｈｃｎｔ）、「０」という値が返される。ｒｃｈｃｎｔの結果がゼロ以外である場合、メールボックスは、ＰＰＥによって書き込まれたが、ＳＰＵによって読み取られていない情報を含む。
【０１８５】
ＳＰＵ読み取りインバウンド・メールボックス・チャネルのチャネル・カウントは特権ソフトウェアによって「０」に初期設定される。最大カウントは実装依存である。このチャネルは読み取りブロッキングである。
【０１８６】
ＳＰＵ信号通知機能
ＭＦＣは、システム内の他のプロセッサおよび装置からＳＰＵにバッファ完了フラグなどの信号を送信するために使用されるＳＰＵ信号通知機能を提供する。この信号通知機能は、たとえば、図２のＭＦＣレジスタ・ユニット２５０内に設けることができる。
【０１８７】
ＢＰＡは、ＳＰＵ信号通知１およびＳＰＵ信号通知２という２つの独立信号通知機能を提供する。各機能は、ＳＰＵ信号通知１レジスタとＳＰＵ信号通知１チャネル、ＳＰＵ信号通知２レジスタとＳＰＵ信号通知２チャネルという１つのレジスタと１つのチャネルから構成される。
【０１８８】
信号が送信されるＳＰＵに関連する信号通知レジスタの有効アドレスを有する１組の送信信号コマンドを使用して、ＳＰＵによって信号が発行される。送信信号コマンドをサポートしないＰＰＥおよびその他の装置は、信号が送信される予定のＳＰＵに関連するＳＰＵ信号通知レジスタへのＭＭＩＯ書き込みを実行することにより、信号コマンドの送信をシミュレートする。
【０１８９】
信号通知機能のそれぞれは、１対１シグナリング環境で有用な上書きモードまたは多対１シグナリング環境で有用な論理和モードのいずれか一方に応じてプログラミングすることができる。各チャネルごとのモードはＳＰＵ構成レジスタに設定される。
【０１９０】
上書きモードに応じてプログラミングされたシグナリング・レジスタをターゲットとする送信信号コマンドまたはＭＭＩＯのいずれか一方を実行すると、関連チャネルの内容をシグナリング動作のデータに設定する。また、これは、対応するチャネル・カウントを「１」に設定する。論理和モードでは、シグナリング動作のデータはチャネルの現行内容との論理和が取られ、対応するカウントは「１」という値に設定される。
【０１９１】
加えて、信号通知レジスタは、分離ロードを実行するときに、イメージの有効アドレスとして使用される。これらの場合、ＳＰＵ信号通知１レジスタは６４ビットの有効アドレスの上位３２ビットを含み、ＳＰＵ信号通知２レジスタは最下位３２ビットを含む。ソフトウェアは、分離ロード要求の適切な動作のために有効アドレスを設定する前に上書きモードのＳＰＵ信号通知機能を備えていなければならない。
【０１９２】
ＳＰＵシグナリング・チャネル
ＳＰＵシグナリング・チャネルは、ＳＰＵ信号通知機能のＰＰＥ部分である。このチャネルは、システム内の他のプロセッサおよび他の装置からの信号を読み取るために使用される。シグナリング・チャネルは、読み取りブロッキングとして構成され、最大カウントは「１」である。読み取りチャネル（ｒｄｃｈ）命令がこれらのチャネルの１つに送信され、関連チャネル・カウントが「１」であるとき、そのチャネルおよび関連カウントの現行内容は「０」にリセットされる。読み取りチャネル（ｒｄｃｈ）命令がこれらのチャネルの１つに送信され、チャネル・カウントが「０」であるとき、プロセッサまたは装置が関連レジスタへのＭＭＩＯ書き込みを実行するまでＳＰＵは停止する。
【０１９３】
ＳＰＵ信号通知チャネル
図３６は、本発明の模範的な一実施形態によるＳＰＵ信号通知チャネルの詳細を示している。信号通知チャネルは、ＳＰＵ信号通知１または２チャネルにすることができる。ＳＰＵ信号通知チャネルに送信された読み取りチャネル（ｒｄｃｈ）命令は、信号制御ワード１の３２ビット値を返し、読み取られたときに設定された任意のビットをアトミック式にリセットする。いかなる信号も保留中ではない場合、信号が発行されるまで、このチャネルからの読み取りによってＳＰＵが停止する。いかなる信号も保留中ではない場合、このチャネルに送信された読み取りチャネル・カウント（ｒｃｈｃｎｔ）命令は「０」を返す。未読信号が保留中である場合、それは「１」を返す。
【０１９４】
特権ソフトウェアは、このチャネルに関するカウントを「０」という値に初期設定する。このチャネルは読み取りブロッキング使用可能であり、最大カウントは「１」である。
【０１９５】
ＳＰＵデクリメンタ
各ＳＰＵは、３２ビットのデクリメンタを含む。ＭＦＣ制御レジスタ内で使用可能である場合、ＭＦＣ＿ＣＮＴＬ［Ｄｈ］が「０」に設定されて書き込まれる。書き込みチャネル（ｗｒｃｈ）命令がＳＰＵ書き込みデクリメンタ・チャネルに対して発行されると、ＳＰＵデクリメンタが始動する。以下に記載するプログラム・シーケンスに従うか、またはＭＦＣ＿ＣＮＴＬ［Ｄｈ］が「１」に設定されてＭＦＣ制御レジスタが書き込まれると、デクリメンタが停止する。デクリメンタの現行実行状況は、ＭＦＣ制御レジスタ（すなわち、ＭＦＣ＿ＣＮＴＬ［Ｄｓ］）で入手可能である。デクリメンタを停止するために、デクリメンタ・イベントが保留中である必要はない。
【０１９６】
デクリメンタを管理するために２つのチャネルが割り当てられ、１つはデクリメンタ値を設定するためのものであり、１つはデクリメンタの現行内容を読み取るためのものである。最上位ビット（ビット０）が「０」から「１」に変化すると、デクリメンタ・イベントが発生する。
【０１９７】
ＳＰＵ書き込みデクリメンタ・チャネル
図３７は、本発明の模範的な一実施形態によるＳＰＵ書き込みデクリメンタ・チャネルの詳細を示している。ＳＰＵ書き込みデクリメンタ・チャネルは、３２ビット値をデクリメンタにロードするために使用される。デクリメンタにロードされた値は、書き込みチャネル（ｗｒｃｈ）命令とデクリメンタ・イベントとの間の経過時間を決定する。デクリメンタの最上位ビット（ｍｓｂ）が「０」から「１」に変化すると、イベントが発生する。デクリメンタにロードされた値によってｍｓｂにおいて「０」から「１」への変化が起こった場合、イベントが直ちに通知される。デクリメンタを「０」という値に設定すると、単一デクリメンタ間隔後にイベントが発生する。
【０１９８】
デクリメンタの状態を適切に保存し復元するために、デクリメンタは、デクリメンタ値を変更する前に停止しなければならない。以下のシーケンスは、新しいデクリメンタ値を設定するための手順の概要を示している。
１．デクリメンタ・イベントを使用不可にするために、ＳＰＵ書き込みイベント・マスク・チャネルに書き込む。
２．任意の保留イベントを確認し、デクリメンタを停止するために、ＳＰＵ書き込みイベント確認応答チャネルに書き込む。ステップ１でデクリメンタ・イベントが使用不可になっているので、デクリメンタは停止する。
３．新しいデクリメンタ・カウント値を設定するために、ＳＰＵ書き込みデクリメンタ・チャネルに書き込む。（注：ステップ２でデクリメンタを停止したので、デクリメンタは始動される。）
４．デクリメンタ・イベントを使用可能にするために、ＳＰＵ書き込みイベント・マスク・チャネルに書き込む。
５．タイマが期限切れになるのを待つ。
【０１９９】
このチャネルは非ブロッキングであり、関連カウントを備えていない。読み取りチャネル・カウント（ｒｃｈｃｎｔ）命令がこのチャネルに送信されると、カウントは必ず「１」として返される。
【０２００】
ＳＰＵ読み取りデクリメンタ・チャネル
図３８は、本発明の模範的な一実施形態によるＳＰＵ読み取りデクリメンタ・チャネルの詳細を示している。ＳＰＵ読み取りデクリメンタ・チャネルは、３２ビット・デクリメンタの現行値を読み取るために使用される。デクリメンタ・カウントの読み取りは、デクリメンタの正確さに対する効果がまったくない。デクリメンタを連続読み取りすると、同じ値が返される。
【０２０１】
このチャネルは非ブロッキングであり、関連カウントを備えていない。読み取りチャネル・カウント（ｒｃｈｃｎｔ）命令がこのチャネルに送信されると、カウントは必ず「１」として返される。
【０２０２】
ＳＰＵ状態管理チャネル
上記に加えて、ＳＰＵ状態管理チャネルが提供される。これらのＳＰＵ状態管理チャネルとしては、１つのＳＰＵ読み取りマシン状況チャネルと、２つの割り込み関連状態チャネルとを含む。割り込み関連状態チャネルとしては、ＳＰＵ書き込み状態保存復元チャネルと、ＳＰＵ読み取り状態保存復元チャネルとを含む。
【０２０３】
ＳＰＵ読み取りマシン状況チャネル
図３９は、本発明の模範的な一実施形態によるＳＰＵ読み取りマシン状況チャネルの詳細を示している。ＳＰＵ読み取りマシン状況チャネルは現行ＳＰＵマシン状況情報を含む。このチャネルは、分離状況とＳＰＵ割り込み状況という２つの状況ビットを含む。この分離状況は、分離または非分離というＳＰＵの現行動作状態を反映する。
【０２０４】
ＳＰＵ割り込み使用可能状況は、ＳＰＵ割り込み使用可能の現行状態を反映する。使用可能である場合、任意の使用可能なＳＰＵイベントが存在する場合にＳＰＵ割り込みが生成される。
【０２０５】
このチャネルは非ブロッキングであり、関連カウントを備えていない。読み取りチャネル・カウント（ｒｃｈｃｎｔ）命令がこのチャネルに送信されると、カウントは必ず「１」として返される。
【０２０６】
ＳＰＵ書き込み状態保存復元チャネル
図４０は、本発明の模範的な一実施形態によるＳＰＵ書き込み状態保存復元チャネルの詳細を示している。このチャネルへの書き込みにより、ＳＰＵ内の状態保存復元レジスタ０（ＳＲＲ０）の内容が更新される。このチャネルへの書き込みは、典型的には、ネストされた割り込みがサポートされるときに割り込み状態情報を復元するために使用される。
【０２０７】
ＳＰＵ割り込みが使用可能であるときに、このチャネルには書き込みを行ってはならない。このように実行すると、ＳＲＲ０の内容が不確定なものになる。同期命令のチャネル・フォームは、このチャネルの書き込み後、ＳＲＲ０の内容に依存する命令の実行前に、発行しなければならない。
【０２０８】
このチャネルは非ブロッキングであり、関連カウントを備えていない。読み取りチャネル・カウント（ｒｃｈｃｎｔ）命令がこのチャネルに送信されると、カウントは必ず「１」として返される。
【０２０９】
ＳＰＵ読み取り状態保存復元チャネル
図４１は、ＳＰＵ読み取り状態保存復元チャネルの詳細を示している。このチャネルを読み取ると、ＳＰＵ内の状態保存復元レジスタ０（ＳＲＲ０）の内容が返される。このチャネルの読み取りは、典型的には、ネストされた割り込みがサポートされるときに割り込み状態情報を保存するために使用される。
【０２１０】
このチャネルは非ブロッキングであり、関連カウントを備えていない。読み取りチャネル・カウント（ｒｃｈｃｎｔ）命令がこのチャネルに送信されると、カウントは必ず「１」として返される。
【０２１１】
ＳＰＵイベント機能
図４２は、ＳＰＵイベント機能の論理表現を例示する模範的なブロック図である。図４２に示されている通り、エッジ起動型（edge-triggered）イベントは、ＳＰＵ保留イベント・レジスタ２１１０内の対応するビットを「１」に設定する。チャネル命令を使用してＳＰＵ書き込みイベント確認応答チャネル２１２０内の対応するビットに「１」を書き込むことにより、ＳＰＵ保留イベント・レジスタ２１１０内のイベントが確認される。
【０２１２】
ＳＰＵ保留イベント・レジスタ（Ｐｅｎｄ＿Ｅｖｅｎｔ）２１１０は内部レジスタである。ＳＰＵ保留イベント・レジスタ２１１０は、ＳＰＵチャネル・アクセス機能を使用して読み取ることができる。
【０２１３】
チャネル読み取り（ｒｄｃｈ）命令によりＳＰＵ読み取りイベント状況チャネル２１３０を読み取ると、ＳＰＵ書き込みイベント・マスク・チャネル２１４０内の値とローカルで論理積が取られたＳＰＵ保留イベント・レジスタの値が返される。この機能は、使用可能イベントの状況のみをＳＰＵプログラムに提供し、ＳＰＵ保留イベント・レジスタ２１１０により特権ソフトウェアは、発生したときにすべてのイベントを確認することができる。ＳＰＵコンテキスト保存復元動作のためには、すべてのイベントへのアクセスが必要である。
【０２１４】
ＳＰＵ書き込みイベント・マスク・チャネル２１４０に新しい値が書き込まれるかまたはＳＰＵ保留イベント・レジスタ２１１０に新しいイベントが記録されたときに、ＳＰＵ読み取りイベント状況チャネル２１３０の内容が変化する。ＳＰＵ読み取りイベント状況チャネル２１３０内のビットが「０」から「１」に変化すると、ＳＰＵ読み取りイベント状況チャネル・カウントが「１」だけ増分される。また、このカウントは、ＳＰＵ書き込みイベント確認応答チャネル２１２０に書き込みが送信された後、ＳＰＵ読み取りイベント状況チャネル２１３０内に依然としてイベントが設定されている場合にも増分される。チャネル読み取り（ｒｄｃｈ）命令を使用してＳＰＵ読み取りイベント状況チャネル２１３０が読み取られると、このカウントは「１」だけ減分される。このカウントは、「１」という値で飽和し、「０」という値未満に減分されない。ＳＰＵ読み取りイベント状況チャネル・カウントがゼロ以外である場合、使用可能であれば、割り込み条件がＳＰＵに送信される。
【０２１５】
ＳＰＵイベント・チャネル
ＳＰＵプログラムは、いくつかのＳＰＵイベント・チャネルを使用してイベントをモニターすることができる。これらのＳＰＵイベント・チャネルとしては、ＳＰＵ読み取りイベント状況チャネル、ＳＰＵ書き込みイベント・マスク・チャネル、ＳＰＵ読み取りイベント・マスク・チャネル、およびＳＰＵ書き込みイベント確認応答チャネルを含む。ＳＰＵ読み取りイベント状況チャネルは、ＳＰＵ書き込みイベント・マスク・チャネルで使用可能なすべてのイベントの状況を含む。ＳＰＵ書き込みイベント確認応答チャネルは、イベントの状況をリセットするために使用され、これは、通常、そのイベントがＳＰＵプログラムによって処理または記録されたという表示である。使用可能なイベントがまったく存在しない場合、ＳＰＵ読み取りイベント状況チャネルから読み取ると、ＳＰＵプログラムが停止する。
【０２１６】
個々のイベントがＳＰＵプログラムを停止するために同様の方法を備えているときに、イベントが発生しなかった場合、ＳＰＵイベント機能は、複数のイベントを探し、ＳＰＵプログラムの割り込みを発生させるための方法をソフトウェアに提供する。
【０２１７】
ＳＰＵ読み取りイベント状況チャネル
図４３は、本発明の模範的な一実施形態によるＳＰＵ読み取りイベント状況チャネルの詳細を示している。ＳＰＵ読み取りイベント状況チャネルは、このチャネルが読み取られた時点でＳＰＵ書き込みイベント・マスク・チャネルによって使用可能なすべてのイベントの現行状況を含む。あるイベントが照会の一部ではないとＳＰＵ書き込みイベント・マスク・チャネルが指定する場合、それに対応する位置は、報告された状況で「０」になる。
【０２１８】
「０」というチャネル・カウントを有するＳＰＵ読み取りイベント状況チャネルから読み取ると、ＳＰＵ停止が発生し、それにより、「イベント待機」機能が提供される。チャネル・カウントが「１」であるこのチャネルから読み取ると、任意の使用可能で保留中のイベントの状況が返され、チャネル・カウントが「０」に設定される。以下の条件の場合にチャネル・カウントは「１」に設定される。
●イベントが発生し、対応するマスクがＳＰＵ書き込みイベント・マスク・チャネル内で「１」である。
●ＳＰＵ保留イベント・レジスタ内の「１」に対応するビット位置の「１」がＳＰＵ書き込みイベント・マスク・チャネルに書き込まれる。
●ＳＰＵ書き込みイベント確認応答チャネルの書き込み後、使用可能なイベントが保留中である。
●ＳＰＵチャネル・アクセス機能を使用して、特権ソフトウェアがチャネル・カウントを「１」に設定する。
【０２１９】
使用可能なイベントがまったく発生しなかった場合、ＳＰＵ読み取りイベント状況チャネルの読み取りチャネル・カウント（ｒｃｈｃｎｔ）命令がゼロを返す。ＳＰＵ読み取りイベント状況チャネルからイベント状況を読み取るときにＳＰＵの停止を回避するために、読み取りチャネル・カウント（ｒｃｈｃｎｔ）命令を使用することができる。
【０２２０】
特権ソフトウェアは、ＳＰＵ読み取りイベント状況チャネルのカウント値を「０」に初期設定しなければならない。チャネル・カウントは、ＳＰＵチャネル・アクセス機能内のＳＰＵチャネル・カウント・レジスタを使用して初期設定される。ＳＰＵ割り込みが使用可能である（ＳＰＵ＿ＲｄＭａｃｈＳｔａｔ［ＩＥ］が「１」に設定されている）場合、ＳＰＵ読み取りイベント状況チャネル・カウントがゼロ以外であると、ＳＰＵに対して割り込みが発行される。
【０２２１】
以下の２通りの事例ではソフトウェアがファントム・イベントを引き起こす可能性があることに留意されたい。
１．ＳＰＵ読み取りイベント状況チャネルからイベント状況を読み取る前に、イベントがＳＰＵ読み取りイベント状況チャネル・カウントを増分した後でソフトウェアがイベントを確認またはマスクする場合。この場合、ＳＰＵ読み取りイベント状況チャネルを読み取ると、そのイベントがもはや存在しないかまたは使用不可であることを示すデータが返される。
２．ＳＰＵ読み取りイベント状況チャネルを読み取る前であって、イベントを確認する前に、使用可能なイベント（メールボックスからの読み取りなど）の割り込み条件をソフトウェアがリセットした場合。この場合、イベント状況レジスタを読み取ると、イベントを生成した条件がもはや存在しない場合でも、イベントが依然として保留中であることを示すデータが返される。この場合、イベントは依然として確認しなければならない。
【０２２２】
ファントム・イベントの生成を回避するために、イベントは以下のように処理しなければならない。
●ＳＰＵ読み取りイベント状況チャネルを読み取る。
●処理すべきすべてのイベントについて、対応するビットをＳＰＵ書き込みイベント確認応答チャネルに書き込むことにより、イベントを確認する。
●イベントを処理する（たとえば、メールボックスを読み取るか、タイマをリセットまたは停止するか、あるいは信号通知レジスタを読み取る）。
【０２２３】
ＳＰＵ書き込みイベント・マスク・チャネル
図４４は、本発明の模範的な一実施形態によるＳＰＵ書き込みイベント・マスク・チャネルの詳細を示している。ＳＰＵ書き込みイベント・マスク・チャネルは、どの保留イベントがＳＰＵ読み取りイベント状況チャネルの状態に影響するかを選択する。このチャネルの内容は、後続のチャネル書き込みまたはＳＰＵチャネル・アクセスが発生するまで保存される。このチャネルの現行内容は、ＳＰＵ読み取りイベント・マスク・チャネルを読み取ることによってアクセスすることができる。
【０２２４】
ＳＰＵイベント・マスク設定にかかわらず、すべてのイベントはＳＰＵ保留イベント・レジストに記録される。ＳＰＵ書き込みイベント確認応答チャネルに対する書き込みチャネル（ｗｒｃｈ）命令によってクリアされるまでイベントは保留中のままになるか、または特権ソフトウェアはＳＰＵチャネル・アクセス機能を使用して新しい値をＳＰＵ保留イベント・レジスタにロードする。保留イベントは、それが使用不可である場合でもクリアされる。
【０２２５】
使用不可であり、その後、クリアされる保留イベントは、ＳＰＵ読み取りイベント状況チャネル内に反映されない。保留イベントを使用可能にすると、ＳＰＵ読み取りイベント状況チャネルが更新され、使用可能である場合には、ＳＰＵ割り込みが発生する。
【０２２６】
このチャネルは非ブロッキングであり、関連カウントを備えていない。このチャネルの読み取りチャネル・カウント（ｒｃｈｃｎｔ）命令は、必ず「１」を返す。
【０２２７】
ＳＰＵ読み取りイベント・マスク・チャネル
図４５は、本発明の模範的な一実施形態によるＳＰＵ読み取りイベント・マスク・チャネルの詳細を示している。ＳＰＵ読み取りイベント・マスク・チャネルは、イベント状況マスクの現行値を読み取るために使用される。このチャネルを読み取ると、必ず、ＳＰＵ書き込みイベント・マスク・チャネルによって書き込まれた最後のデータが返される。このチャネルは、イベント状況マスクのソフトウェア・シャドー・コピーを回避するため、ならびにＳＰＵコンテキスト保存復元動作のために使用することができる。このチャネルは非ブロッキングであり、関連カウントを備えていない。読み取りチャネル・カウント（ｒｃｈｃｎｔ）命令がこのチャネルに送信されると、カウントは必ず「１」として返される。
【０２２８】
ＳＰＵ書き込みイベント確認応答チャネル
図４６は、本発明の模範的な一実施形態によるＳＰＵ書き込みイベント確認応答チャネルの詳細を示している。特定のイベント・ビットが設定されたＳＰＵ書き込みイベント確認応答チャネルへの書き込みにより、対応するイベントがソフトウェアによって処理されていることが確認される。確認されたイベントはリセットされ、再抽出される。報告されたが確認されていないイベントは、確認されるまで、またはＳＰＵチャネル・アクセス機能を使用して特権ソフトウェアによってクリアされるまで、引き続き報告される。
【０２２９】
使用不可イベントは、ＳＰＵ読み取りイベント状況チャネルで報告されないが、ＳＰＵ書き込みイベント確認応答チャネル内の対応するビットに「１」を書き込むことによってクリアされるまで、保留中として保持される。使用不可イベントを確認すると、報告されていない場合でも、イベントがクリアされる。発生する前にイベントをクリアすると、ソフトウェアにより誘導されたデッドロックが発生する。
【０２３０】
このチャネルは非ブロッキングであり、関連カウントを備えていない。読み取りチャネル・カウント（ｒｃｈｃｎｔ）命令がこのチャネルに送信されると、カウントは必ず「１」として返される。
【０２３１】
ＳＰＵイベント
ハードウェアは、適切なチャネル・カウント、デクリメンタ・カウント、またはＳＰＵチャネル・アクセス動作を検出することにより、イベントを判別する。いくつかの異なるタイプのイベントが上述のＢＰＡによってサポートされる。たとえば、ＭＦＣタグ・グループ状況更新イベントは、ＭＦＣ読み取りタグ・グループ状況チャネルに関するカウントが０からゼロ以外の値に変化したときに設定される。ＭＦＣ  ＤＭＡリスト・コマンド停止通知イベントは、ＭＦＣ読み取りリスト停止通知タグ状況チャネルに関するカウントが０からゼロ以外の値に変化したときに設定される。ＭＦＣ  ＳＰＵコマンド・キュー使用可能イベントは、待機ＭＦＣコマンド命令コード・レジスタに関するカウントが０（満杯）からゼロ以外の値（満杯ではない）に変化したときに設定される。ＳＰＵインバウンド・メールボックス使用可能イベントは、ＳＰＵ読み取りインバウンド・メールボックス・チャネルに関するカウントが０からゼロ以外の値に変化したときに設定される。
【０２３２】
同様に、ＳＰＵデクリメンタ・イベントは、デクリメンタ・カウントの最上位ビットが０から１に変化したときに設定される。デクリメンタにロードされた値により最上位ビットが０から１に変化した場合、イベントが直ちに通知される。デクリメンタ値を０に設定すると、単一デクリメンタ間隔後にイベントが発生する。
【０２３３】
さらに、ＳＰＵアウトバウンド・メールボックス使用可能イベントは、ＳＰＵ書き込みアウトバウンド割り込みメールボックス・チャネル・カウントが０からゼロ以外の値に変化したときに設定される。ＳＰＵ信号通知１または２使用可能イベントは、対応するＳＰＵ信号通知チャネルに関するカウントが０からゼロ以外の値に変化したときに設定される。ロック・ライン予約イベントは、アトミック予約が消失したときに設定される（以下の「ロック・ライン予約消失イベント」のセクションを参照）。特権アテンション・イベントは、アテンション・イベント要求ビットが１に設定されてＳＰＵ特権制御レジスタに書き込まれたときに設定される（以下の「特権アテンション・イベント」のセクションを参照）。マルチソース同期イベントは、ＭＦＣ書き込みマルチソース同期要求チャネル・カウントが０という値から１という値に変化したときに設定される。次に、これらのイベントについて、より詳細に説明する。
【０２３４】
ＭＦＣタグ・グループ状況更新イベント
ＭＦＣタグ・グループ状況更新イベントは、１つまたは複数のタグ・グループが完了しており、ＭＦＣ読み取りタグ・グループ状況チャネルが更新されており、ＳＰＵを停止せずに読み取ることができることをＳＰＵプログラムに通知するために使用される（上記の「ＭＦＣタグ・グループ状況チャネル」というセクションを参照）。このイベントは、ＭＦＣ読み取りタグ・グループ状況チャネルに関するチャネル・カウントが「０」から「１」に変化したときに発生する。このイベントが発生すると、Ｐｅｎｄ＿Ｅｖｅｎｔ［Ｔｇ］が「１」に設定される。このイベントが使用可能である（すなわち、ＳＰＵ＿ＲｄＥｖｅｎｔＳｔａｔ［Ｔｇ］が「１」に設定されている）場合、ＳＰＵイベント状況チャネルに関するカウントが「１」に設定される。
【０２３５】
Ｐｅｎｄ＿Ｅｖｅｎｔ［Ｔｇ］ビットは、チャネル書き込み（ｗｒｃｈ）がＳＰＵ保留イベント・レジスタに対して発行されたとき、または対応するビットが「０」に設定されたＳＰＵチャネル・アクセス機能を使用して、特権ソフトウェアがＳＰＵ保留イベント・レジスタを更新したときに、「０」に設定される。このイベントは、１つまたは複数のタグ・グループに関する任意のコマンドを発行する前にクリアしなければならない。
【０２３６】
ＭＦＣ  ＤＭＡリスト・コマンド停止通知イベント
ＭＦＣ  ＤＭＡリスト・コマンド停止通知イベントは、ＭＦＣ  ＤＭＡリスト・コマンド内のリスト・エレメントが完了しており、ＭＦＣ読み取りリスト停止通知タグ状況チャネルが更新されており、ＳＰＵを停止せずに読み取ることができることをＳＰＵプログラムに通知するために使用される。このイベントは、ＭＦＣ読み取りリスト停止通知タグ状況チャネルに関するチャネル・カウントが「０」から「１」に変化したときに発生する。
【０２３７】
このカウントは、停止通知フラグが設定されたリスト・エレメントのすべての転送ならびにＭＦＣ  ＤＭＡリスト・コマンド内のすべての前のリスト・エレメントに関する転送が関連ＳＰＵに関して完了しているときに「１」に設定される。このイベントが発生すると、Ｐｅｎｄ＿Ｅｖｅｎｔ［Ｓｎ］が「１」に設定される。このイベントが使用可能である（すなわち、ＳＰＵ＿ＲｄＥｖｅｎｔＳｔａｔ［Ｓｎ］が「１」に設定されている）場合、ＳＰＵ読み取りイベント状況チャネルに関するカウントが「１」に設定される。Ｐｅｎｄ＿Ｅｖｅｎｔ［Ｓｎ］ビットは、タグ・ビットが「１」に設定された（ＳＰＵ＿ＷｒＥｖｅｎｔＡｃｋ［Ｓｎ］）ＳＰＵ書き込みイベント確認応答チャネルに対してチャネル書き込み（ｗｒｃｈ）が発行されたとき、または対応するビットが「０」に設定されたＳＰＵチャネル・アクセス機能を使用して、特権ソフトウェアがＳＰＵ保留イベント・レジスタを更新したときに、「０」に設定される。
【０２３８】
ＭＦＣ  ＤＭＡリスト・コマンド停止通知イベントを処理するための手順の概要は図４７に示されている。図４７に示されている通り、この手順は、ＳＰＵ読み取りイベント・マスク・チャネルに対する読み取りチャネル（ｒｄｃｈ）命令を実行し、データを「マスク」に保存することから始まる（ステップ２３１０）。ＳＰＵ＿ＷｒＥｖｅｎｔ  Ｍａｓｋ［Ｓｎ］が「０」に設定されたＳＰＵ書き込みイベント・マスク・チャネルに対して書き込みチャネル命令を発行することにより、イベントがマスクされる（ステップ２３２０）。ＳＰＵ＿ＷｒＥｖｅｎｔＡｃｋ［Ｓｎ］が１に設定されたＳＰＵ書き込みイベント確認応答チャネルへの書き込みチャネル（ｗｒｃｈ）命令を実行することにより、イベントが確認される（ステップ２３３０）。
【０２３９】
次に、ＭＦＣ読み取りリスト停止通知タグ状況チャネルＭＦＣ＿ＳｔａｌｌＳｔａｔ［ｇｎ］に読み取りチャネル（ｒｄｃｈ）命令が送信される（ステップ２３４０）。返される情報は、１つまたは複数のどのタグ・グループが停止通知状態のＤＭＡリスト・エレメントを有するかを判別するために使用される（ステップ２３５０）。次に、停止ＤＭＡリスト・エレメントを有する各タグ・グループに関して、アプリケーション固有のアクションが実行される（ステップ２３６０）。
【０２４０】
供給されたＭＦＣタグが再開すべきタグ・グループのコード化タグＩＤであるリスト停止通知タグ確認応答チャネルＭＦＣ＿ＳｔａｌｌＡｃｋ［ＭＦＣ  Ｔａｇ］に対して書き込みチャネル（ｗｒｃｈ）命令を発行することにより、各停止ＤＭＡリスト・コマンドが確認され再開される（ステップ２３７０）。次に、ＤＭＡリスト停止通知ハンドラが終了する（ステップ２３８０）。アプリケーション・ソフトウェアがＭＦＣ＿ＳｔａｌｌＳｔａｔ［ｇｎ］チャネル内に示されたすべての停止タグ・グループを確認するわけではない場合、未確認タグ・グループについて第２の停止通知イベントが発生しないことに留意されたい。
【０２４１】
ＳＰＵ＿ＷｒＥｖｅｎｔＭａｓｋ［ｍａｓｋ］によりＳＰＵ書き込みイベント・マスク・チャネルに対して書き込みチャネル（ｗｒｃｈ）命令を発行することにより、「マスク」が復元される（ステップ２３９０）。次に、一般イベント・ハンドラが終了する（ステップ２３９５）。
【０２４２】
停止通知フラグが設定された複数のリスト・エレメントをＤＭＡリストが含む場合または停止通知フラグが設定されたエレメントとともにキューイングされた複数のＤＭＡリスト・コマンドを１つのタグ・グループが有する場合あるいはその両方の場合、ＤＭＡリスト・コマンドがそのタグ・グループについてキューイングされる前に、アプリケーション・ソフトウェアがタグ・グループ固有停止カウンタを０に初期設定することに留意されたい。加えて、停止通知エレメントを有するタグ・グループについて複数のＤＭＡリスト・コマンドがキューイングされる場合、タグ固有のフェンス、バリア、またはコマンド・バリアにより順序付けが実施される。タグ・グループについて停止通知状況が示されるたびに、対応するカウンタを増分しなければならない。次に、アプリケーション・ソフトウェアは、このカウンタを使用して、リスト内のどのポイントで停止が発生したかを判別することができる。
【０２４３】
アプリケーション・ソフトウェアは、動的に変化する条件のために停止したリスト・エレメントに従うリスト・エレメント・アドレスおよび転送サイズを更新するために停止通知を使用する。停止リスト・エレメント後のリスト・エレメントは、その転送サイズを０に設定することによってスキップすることができる。しかし、待機ＤＭＡリスト・コマンド内のリスト・エレメントの数は変更することができない。
【０２４４】
ＭＦＣ  ＳＰＵコマンド・キュー使用可能イベント
ＭＦＣ  ＳＰＵコマンド・キュー使用可能イベントは、ＭＦＣ  ＳＰＵコマンド・キュー内の項目が使用可能であり、ＳＰＵを停止せずにＭＦＣコマンド命令コード・チャネルに書き込むことができることをＳＰＵプログラムに通知するために使用される。このイベントは、ＭＦＣコマンド命令コード・チャネルに関するチャネル・カウントが「０」（満杯）からゼロ以外の（満杯ではない）値に変化したときに発生する。
【０２４５】
このカウントは、ＭＦＣ  ＳＰＵコマンド・キュー内の１つまたは複数のＭＦＣ  ＤＭＡコマンドが完了したときに「１」に設定される。このイベントが発生すると、Ｐｅｎｄ＿Ｅｖｅｎｔ［Ｑｖ］が「１」に設定される。このイベントが使用可能である（すなわち、ＳＰＵ＿ＲｄＥｖｅｎｔＭａｓｋ［Ｑｖ］が「１」に設定されている）場合、ＳＰＵ＿ＲｄＥｖｅｎｔＳｔａｔ［Ｑｖ］が「１」に設定され、ＳＰＵ読み取りイベント状況チャネルに関するカウントが「１」に設定される。Ｐｅｎｄ＿Ｅｖｅｎｔ［Ｑｖ］ビットは、チャネル書き込み（ｗｒｃｈ）がＳＰＵ書き込みイベント確認応答チャネルに対して発行されたとき（すなわち、ＳＰＵ＿ＷｒＥｖｅｎｔＡｃｋ［Ｑｖ］が「１」に設定される）、または対応するビットが「０」に設定されたＳＰＵチャネル・アクセス機能を使用して、特権ソフトウェアがＳＰＵ保留イベント・レジスタを更新したときに、「０」に設定される。
【０２４６】
ＭＦＣ  ＳＰＵコマンド・キュー使用可能イベントを処理するための手順の概要は図４８に示されている。図４８に示されている通り、この手順は、ＳＰＵ読み取りイベント・マスク・チャネルに読み取りチャネル（ｒｄｃｈ）命令を送信することから始まり、「マスク」内のデータが保存される（ステップ２４１０）。ＳＰＵ＿ＷｒＥｖｅｎｔＭａｓｋ［Ｑｖ］が「０」に設定されたＳＰＵ書き込みイベント・マスク・チャネルに対して書き込みチャネル命令を発行することにより、イベントがマスクされる（ステップ２４２０）。ＳＰＵ＿ＷｒＥｖｅｎｔＡｃｋ［Ｑｖ］が１に設定されたＳＰＵ書き込みイベント確認応答チャネルへの書き込みチャネル（ｗｒｃｈ）命令を実行することにより、イベントが確認される（ステップ２４３０）。
【０２４７】
ＭＦＣコマンド命令コード・チャネル（ＭＦＣ＿ＣＭＤ）に対して読み取りチャネル・カウント（ｒｃｈｃｎｔ）命令を発行することにより、チャネル・カウントが入手される（ステップ２４４０）。チャネル・カウントが「０」であるかどうかについて判別が行われる（ステップ２４５０）。「０」ではない場合、ＤＭＡコマンドはＭＦＣコマンド・キューにエンキューされる（ステップ２４６０）。次に、追加のコマンドがキュー内に残っているかどうかについて判別が行われる（ステップ２４７０）。残っている場合、手順はステップ２４３０に戻る。追加のコマンドがまったく残っていない場合またはチャネル・カウントが「０」である場合、ＳＰＵコマンド・キュー・ハンドラが終了する（ステップ２４８０）。次に、ＳＰＵ書き込みイベント・マスク・チャネルに対して書き込みチャネル（ｗｒｃｈ）命令を発行することにより、マスクが復元される（ステップ２４９０）。次に、一般イベント・ハンドラが終了する（ステップ２４９５）。
【０２４８】
ＳＰＵインバウンド・メールボックス使用可能イベント
ＳＰＵインバウンド・メールボックス使用可能イベントは、ＰＰＥまたはその他の装置が空のＳＰＵメールボックスに書き込み、ＳＰＵを停止せずにＳＰＵ読み取りインバウンド・メールボックス・チャネル（１２４ページを参照）を読み取れることをＳＰＵプログラムに通知するために使用される。このイベントが使用可能である（すなわち、ＳＰＵ＿ＲｄＥｖｅｎｔＳｔａｔ［Ｍｂ］が「１」である）場合、ＳＰＵ読み取りイベント状況チャネルに関するカウントが「１」に設定される。
【０２４９】
このイベントは、ＳＰＵ読み取りインバウンド・メールボックス・チャネルに関するチャネル・カウントが「０」（空）からゼロ以外の（空ではない）値に変化したときに発生する。このイベントが発生すると、Ｐｅｎｄ＿Ｅｖｅｎｔ［Ｍｂ］が「１」に設定される。Ｐｅｎｄ＿Ｅｖｅｎｔ［Ｍｂ］ビットは、ＳＰＵ書き込みイベント確認応答チャネルに対してチャネル書き込み（ｗｒｃｈ）が発行された（すなわち、ＳＰＵ＿ＷｒＥｖｅｎｔＡｃｋ［Ｍｂ］が「１」に設定されている）とき、または対応するビットが「０」に設定されたＳＰＵチャネル・アクセス機能を使用して、特権ソフトウェアがＳＰＵ保留イベント・レジスタを更新したときに、「０」に設定される。
【０２５０】
ＳＰＵインバウンド・メールボックス使用可能イベントを処理するための手順の概要は図４９に示されている。図４９に示されている通り、この手順は、ＳＰＵ読み取りイベント・マスク・チャネルに読み取りチャネル（ｒｄｃｈ）命令を送信し、データを「マスク」に保存することから始まる（ステップ２５１０）。次に、ＳＰＵ＿ＷｒＥｖｅｎｔ［Ｍａｓｋｉｎｇ］が「０」に設定されたＳＰＵ書き込みイベント・マスク・チャネルに対して書き込みチャネル命令を発行することにより、イベントがマスクされる（ステップ２５２０）。ＳＰＵ＿ＷｒＥｖｅｎｔＡｃｋ［Ｓｎ］が１に設定されたＳＰＵ書き込みイベント確認応答チャネルへの書き込みチャネル（ｗｒｃｈ）命令を実行することにより、イベントが確認される（ステップ２５３０）。
【０２５１】
ＳＰＵ読み取りインバウンド・メールボックス・チャネルに対して読み取りチャネル・カウント（ｒｃｈｃｎｔ）命令を発行することにより、チャネル・カウントが入手される（ステップ２５４０）。チャネル・カウントが「０」であるかどうかについて判別が行われる（ステップ２５５０）。「０」ではない場合、ＳＰＵ読み取りインバウンド・メールボックス・チャネル（ＳＰＵ＿ＲｄＩｎＭｂｏｘ）に対して読み取りチャネル（ｒｄｃｈ）命令を発行することにより、次のメールボックス・データ項目が読み取られる（ステップ２５６０）。次に、手順はステップ２５３０に戻る。
【０２５２】
チャネル・カウントが「０」である場合、ＳＰＵインバウンド・メールボックス・ハンドラが終了する（ステップ２５７０）。ＳＰＵ＿ＷｒＥｖｅｎｔＭａｓｋ［ｍａｓｋ］によりＳＰＵ書き込みイベント・マスク・チャネルに対して書き込みチャネル（ｗｒｃｈ）命令を発行することにより、「マスク」が復元される（ステップ２５８０）。次に、一般イベント・ハンドラが終了する（ステップ２５９０）。
【０２５３】
ＳＰＵデクリメンタ・イベント
ＳＰＵデクリメンタ・イベントは、デクリメンタが「０」に到達したことをＳＰＵプログラムに通知するために使用される。このイベントが使用可能であり（すなわち、ＳＰＵ＿ＲｄＥｖｅｎｔＳｔａｔ［Ｔｍ］が「１」に設定され）、ＳＰＵ読み取りイベント状況チャネルに関するカウントが「１」に設定されている場合、デクリメンタの最上位ビットが「０」から「１」（否定）値に変化すると、このイベントが発生する。このイベントが発生すると、Ｐｅｎｄ＿Ｅｖｅｎｔ［Ｔｍ］が「１」に設定される。Ｐｅｎｄ＿Ｅｖｅｎｔ［Ｔｍ］ビットは、チャネル書き込み（ｗｒｃｈ）がＳＰＵ書き込みイベント確認応答チャネルに対して発行されたとき（ＳＰＵ＿ＷｒＥｖｅｎｔＡｃｋ［Ｔｍ］が「１」に設定される）、または対応するビットが「０」に設定されたＳＰＵチャネル・アクセス機能を使用して、特権ソフトウェアがＳＰＵ保留イベント・レジスタを更新したときに、「０」に設定される。
【０２５４】
ＳＰＵデクリメンタ・イベントを処理するための手順の概要は図５０に示されている。図５０に示されている通り、この手順は、ＳＰＵ読み取りイベント・マスク・チャネルに対する読み取りチャネル（ｒｄｃｈ）命令を実行し、データを「マスク」に保存することから始まる（ステップ２６１０）。ＳＰＵ＿ＷｒＥｖｅｎｔＭａｓｋ［Ｔｍ］が「０」に設定されたＳＰＵ書き込みイベント・マスク・チャネルに対して書き込みチャネル（ｗｒｃｈ）命令を発行することにより、イベントがマスクされる（ステップ２６２０）。ＳＰＵ書き込みイベント確認応答チャネルに対して書き込みチャネル（ｗｒｃｈ）命令を発行する（ＳＰＵ＿ＷｒＥｖｅｎｔＡｃｋ［Ｔｍ］が１に設定される）ことにより、イベントが確認される（ステップ２６３０）。
【０２５５】
ＳＰＵ読み取りデクリメンタ・チャネルに対して読み取りチャネル（ｒｄｃｈ）命令を発行することにより、デクリメンタ値が読み取られる（ステップ２６４０）。この値が否定である場合、これは、所望の間隔からどのくらいの長さの追加時間が経過したかを判別するために使用することができる。新しいタイマ・イベントが所望であるかどうかについて判別が行われる（ステップ２６５０）。新しいタイマ・イベントが所望である場合、ＳＰＵ書き込みデクリメンタ・チャネルに新しいデクリメンタ値が書き込まれる（ｗｒｃｈ）（ステップ２６６０）。その後、または新しいタイマ・イベントが所望ではない場合、ＳＰＵデクリメンタ・イベント・ハンドラが終了する（ステップ２６７０）。ＳＰＵ＿ＷｒＥｖｅｎｔＭａｓｋ［ｍａｓｋ］によりＳＰＵ書き込みイベント・マスク・チャネルに対して書き込みチャネル（ｗｒｃｈ）命令を発行することにより、「マスク」が復元される（ステップ２６８０）。次に、一般イベント・ハンドラが終了する（ステップ２６９０）。
【０２５６】
ＳＰＵアウトバウンド割り込みメールボックス使用可能イベント
ＳＰＵアウトバウンド割り込みメールボックス使用可能イベントは、ＰＰＥまたは他の装置が満杯のＳＰＵアウトバウンド割り込みメールボックス・レジスタから読み取り、ＳＰＵを停止せずにＳＰＵ書き込みアウトバウンド割り込みメールボックス・チャネルに書き込めることをＳＰＵプログラムに通知するために使用される。このイベントが使用可能であり（すなわち、ＳＰＵ＿ＲｄＥｖｅｎｔＳｔａｔ［Ｍｅ］が「１」に設定され）、ＳＰＵ読み取りイベント状況チャネルに関するカウントが「１」に設定されている場合、ＳＰＵ書き込みアウトバウンド割り込みメールボックス・チャネルに関するチャネル・カウントが「０」（満杯）からゼロ以外の（満杯ではない）値に変化すると、このイベントが発生する。このイベントにより、Ｐｅｎｄ＿Ｅｖｅｎｔ［Ｍｅ］が「１」に設定される。Ｐｅｎｄ＿Ｅｖｅｎｔ［Ｍｅ］ビットは、Ｍｅビットが「１」に設定されたＳＰＵ書き込みイベント確認応答チャネルに対してチャネル書き込み（ｗｒｃｈ）が発行されたとき（すなわち、ＳＰＵ＿ＷｒＥｖｅｎｔＡｃｋ［Ｍｅ］が「１」に設定される）、または対応するビットが「０」に設定されたＳＰＵチャネル・アクセス機能を使用して、特権ソフトウェアがＳＰＵ保留イベント・レジスタを更新したときに、「０」に設定される。
【０２５７】
ＳＰＵアウトバウンド割り込みメールボックス使用可能イベントを処理するための手順の概要は図５１に示されている。図５１に示されている通り、この手順は、ＳＰＵ読み取りイベント・マスク・チャネルに読み取りチャネル（ｒｄｃｈ）命令を送信し、データを「マスク」に保存することから始まる（ステップ２７１０）。ＳＰＵ＿ＷｒＥｖｅｎｔＭａｓｋ［Ｍｅ］が「０」に設定されたＳＰＵ書き込みイベント・マスク・チャネルに対して書き込みチャネル（ｗｒｃｈ）命令を発行することにより、イベントがマスクされる（ステップ２７２０）。ＳＰＵ＿ＷｒＥｖｅｎｔＡｃｋ［Ｍｅ］が１に設定されたＳＰＵ書き込みイベント確認応答チャネルに対する書き込みチャネル（ｗｒｃｈ）命令を実行することにより、イベントが確認される（ステップ２７３０）。
【０２５８】
ＳＰＵ書き込みアウトバウンド割り込みメールボックス・チャネルに対して読み取りチャネル（ｒｃｈｃｎｔ）命令を発行することにより、チャネル・カウントが入手される（ステップ２７４０）。チャネル・カウントが「０」であるかどうかについて判別が行われる（ステップ２７５０）。チャネル・カウントが「０」ではない場合、ＳＰＵ書き込みアウトバウンド割り込みメールボックス・チャネルに対して書き込みチャネル（ｗｒｃｈ）命令を発行することにより、新しいメールボックス・データ項目が書き込まれる（ステップ２７６０）。チャネル・カウントが「０」である場合、チャネル・カウントがもう一度読み取られる（ステップ２７４０）。その後、ＳＰＵアウトバウンド割り込みメールボックス使用可能ハンドラが終了する（ステップ２７７０）。ＳＰＵ＿ＷｒＥｖｅｎｔＭａｓｋ［ｍａｓｋ］によりＳＰＵ書き込みイベント・マスク・チャネルに対して書き込みチャネル（ｗｒｃｈ）命令を発行することにより、「マスク」が復元される（ステップ２７８０）。次に、一般イベント・ハンドラが終了する（ステップ２７９０）。
【０２５９】
ＳＰＵアウトバウンド・メールボックス使用可能イベント
ＳＰＵアウトバウンド・メールボックス使用可能イベントは、プロセッサまたは他の装置のいずれか一方が満杯のＳＰＵアウトバウンド・メールボックス・レジスタから読み取り、ＳＰＵを停止せずにＳＰＵ書き込みアウトバウンド・メールボックス・チャネルに書き込めることをＳＰＵプログラムに通知するために使用される。ＳＰＵ書き込みアウトバウンド・メールボックス・チャネルに関するチャネル・カウントが「０」（満杯）からゼロ以外の（満杯ではない）値に変化すると、このイベントが発生する。このイベントが発生すると、Ｐｅｎｄ＿Ｅｖｅｎｔ［Ｌｅ］が「１」に設定される。このイベントが使用可能である（すなわち、ＳＰＵ＿ＲｄＥｖｅｎｔＳｔａｔ［Ｌｅ］が「１」に設定されている）場合、ＳＰＵ読み取りイベント状況チャネルに関するカウントが「１」に設定される。Ｐｅｎｄ＿Ｅｖｅｎｔ［Ｌｅ］ビットは、Ｌｅビットが「１」に設定されたＳＰＵ書き込みイベント確認応答チャネル（１４４ページを参照）に対してチャネル書き込み（ｗｒｃｈ）が発行されたとき（すなわち、ＳＰＵ＿ＷｒＥｖｅｎｔＡｃｋ［Ｌｅ］が「１」に設定される）、または対応するビットが「０」に設定されたＳＰＵチャネル・アクセス機能を使用して、特権ソフトウェアがＳＰＵ保留イベント・レジスタを更新したときに、「０」に設定される。
【０２６０】
ＳＰＵアウトバウンド・メールボックス使用可能イベントを処理するための手順の概要は図５２に示されている。図５２に示されている通り、この手順は、ＳＰＵ読み取りイベント・マスク・チャネルに読み取りチャネル（ｒｄｃｈ）命令を送信し、データを「マスク」に保存することから始まる（ステップ２８１０）。ＳＰＵ＿ＷｒＥｖｅｎｔＭａｓｋ［Ｌｅ］が「０」に設定されたＳＰＵ書き込みイベント・マスク・チャネルに対して書き込みチャネル命令を発行することにより、イベントがマスクされる。ＳＰＵ＿ＷｒＥｖｅｎｔＡｃｋ［Ｌｅ］が１に設定されたＳＰＵ書き込みイベント確認応答チャネルに対する書き込みチャネル（ｗｒｃｈ）命令を実行することにより、イベントが確認される（ステップ２８３０）。
【０２６１】
ＳＰＵ書き込みアウトバウンド・メールボックス・チャネルに対して読み取りチャネル・カウント（ｒｃｈｃｎｔ）命令を発行することにより、チャネル・カウントが入手される（ステップ２８４０）。次にチャネル・カウントが「０」であるかどうかについて判別が行われる（ステップ２８５０）。チャネル・カウントが「０」ではない場合、ＳＰＵ書き込みアウトバウンド・メールボックス・チャネルに対して書き込みチャネル（ｗｒｃｈ）命令を発行することにより、新しいメールボックス・データ項目が書き込まれる（ステップ２８６０）。チャネル・カウントが「０」である場合、チャネル・カウントがもう一度読み取られる（ステップ２８４０）。その後、ＳＰＵアウトバウンド・メールボックス・ハンドラが終了する（ステップ２８７０）。ＳＰＵ＿ＷｒＥｖｅｎｔＭａｓｋ［ｍａｓｋ］によりＳＰＵ書き込みイベント・マスク・チャネルに対して書き込みチャネル（ｗｒｃｈ）命令を発行することにより、「マスク」が復元される（ステップ２８８０）。次に、一般イベント・ハンドラが終了する（ステップ２８９０）。
【０２６２】
ＳＰＵ信号通知２使用可能イベント
ＳＰＵ信号通知２使用可能イベントは、他のプロセッサまたは装置が空のＳＰＵ信号通知２レジスタに書き込み、ＳＰＵを停止せずにＳＰＵ信号通知２チャネルを読み取れることをＳＰＵプログラムに通知するために使用される。ＳＰＵ信号通知２チャネルに関するチャネル・カウントが「０」（空）から「１」（有効）値に変化すると、このイベントが発生する。このイベントが使用可能であり（すなわち、ＳＰＵ＿ＲｄＥｖｅｎｔＳｔａｔ［Ｓ２］が「１」である）、ＳＰＵ読み取りイベント状況チャネルに関するカウントが「１」に設定されている場合、このイベントによりＰｅｎｄ＿Ｅｖｅｎｔ［Ｓ２］が「１」に設定される。Ｐｅｎｄ＿Ｅｖｅｎｔ［Ｓ２］ビットは、Ｓ２ビットが「１」に設定されたＳＰＵ書き込みイベント確認応答チャネルに対してチャネル書き込み（ｗｒｃｈ）が発行されたとき（ＳＰＵ＿ＷｒＥｖｅｎｔＡｃｋ［Ｓ２］）、または対応するビットが「０」に設定されたＳＰＵチャネル・アクセス機能を使用して、特権ソフトウェアがＳＰＵ保留イベント・レジスタを更新したときに、「０」に設定される。
【０２６３】
ＳＰＵ信号通知２使用可能イベントを処理するための手順の概要は図５３に示されている。図５３に示されている通り、この手順は、ＳＰＵ読み取りイベント・マスク・チャネルに読み取りチャネル（ｒｄｃｈ）命令を送信し、データを「マスク」に保存することから始まる（ステップ２９１０）。ＳＰＵ＿ＷｒＥｖｅｎｔＭａｓｋ［Ｓ２］が「０」に設定されたＳＰＵ書き込みイベント・マスク・チャネルに対して書き込みチャネル命令を発行することにより、イベントがマスクされる（ステップ２９２０）。ＳＰＵ＿ＷｒＥｖｅｎｔＡｃｋ［Ｓ２］が１に設定されたＳＰＵ書き込みイベント確認応答チャネルに対する書き込みチャネル（ｗｒｃｈ）命令を実行することにより、イベントが確認される（ステップ２９３０）。
【０２６４】
ＳＰＵ信号通知２チャネルに対して読み取りチャネル・カウント（ｒｃｈｃｎｔ）命令を発行することにより、チャネル・カウントが入手される（ステップ２９４０）。チャネル・カウントが「０」であるかどうかについて判別が行われる（ステップ２９５０）。チャネル・カウントが「０」ではない場合、ＳＰＵ信号通知２チャネルに対して読み取りチャネル命令を発行することにより、信号データが読み取られる（ステップ２９６０）。その後、またはチャネル・カウントが「０」である場合、信号通知２ハンドラが終了する（ステップ２９７０）。ＳＰＵ＿ＷｒＥｖｅｎｔＭａｓｋ［ｍａｓｋ］によりＳＰＵ書き込みイベント・マスク・チャネルに対して書き込みチャネル（ｗｒｃｈ）命令を発行することにより、「マスク」が復元される（ステップ２９８０）。次に、一般イベント・ハンドラが終了する（ステップ２９９０）。
【０２６５】
ＳＰＵ信号通知１使用可能イベント
ＳＰＵ信号通知１使用可能イベントは、他のプロセッサまたは装置が空のＳＰＵ信号通知１レジスタに書き込み、ＳＰＵを停止せずにＳＰＵ信号通知１チャネルを読み取れることをＳＰＵプログラムに通知するために使用される。ＳＰＵ信号通知１チャネルに関するチャネル・カウントが「０」（空）から「１」（有効）値に変化すると、このイベントが発生する。このイベントが使用可能であり（すなわち、ＳＰＵ＿ＲｄＥｖｅｎｔＳｔａｔ［Ｓ１］が「１」である）、ＳＰＵ読み取りイベント状況チャネルに関するカウントが「１」に設定されている場合、このイベントによりＰｅｎｄ＿Ｅｖｅｎｔ［Ｓ１］が「１」に設定される。Ｐｅｎｄ＿Ｅｖｅｎｔ［Ｓ１］ビットは、Ｓ１ビットが「１」に設定されたＳＰＵ書き込みイベント確認応答チャネルに対してチャネル書き込み（ｗｒｃｈ）が発行されたとき（ＳＰＵ＿ＷｒＥｖｅｎｔＡｃｋ［Ｓ１］）、または対応するビットが「０」に設定されたＳＰＵチャネル・アクセス機能を使用して、特権ソフトウェアがＳＰＵ保留イベント・レジスタを更新したときに、「０」に設定される。
【０２６６】
ＳＰＵ信号通知１使用可能イベントを処理するための手順の概要は図５４に示されている。図５４に示されている通り、この手順は、ＳＰＵ読み取りイベント・マスク・チャネルに読み取りチャネル（ｒｄｃｈ）命令を送信し、データを「マスク」に保存することから始まる（ステップ３０１０）。ＳＰＵ＿ＷｒＥｖｅｎｔＭａｓｋ［Ｓ１］が「０」に設定されたＳＰＵ書き込みイベント・マスク・チャネルに対して書き込みチャネル命令を発行することにより、イベントがマスクされる（ステップ３０２０）。ＳＰＵ＿ＷｒＥｖｅｎｔＡｃｋ［Ｓ１］が１に設定されたＳＰＵ書き込みイベント確認応答チャネルに対する書き込みチャネル（ｗｒｃｈ）命令を実行することにより、イベントが確認される（ステップ３０３０）。
【０２６７】
ＳＰＵ信号通知１チャネルに対して読み取りチャネル・カウント（ｒｃｈｃｎｔ）命令を発行することにより、チャネル・カウントが入手される（ステップ３０４０）。チャネル・カウントが「０」であるかどうかについて判別が行われる（ステップ３０５０）。
【０２６８】
チャネル・カウントが「０」ではない場合、ＳＰＵ信号通知１チャネルに対して読み取りチャネル命令を発行することにより、信号データが読み取られる（ステップ３０６０）。その後、またはチャネル・カウントが「０」である場合、信号通知１ハンドラが終了する（ステップ３０７０）。ＳＰＵ＿ＷｒＥｖｅｎｔＭａｓｋ［ｍａｓｋ］によりＳＰＵ書き込みイベント・マスク・チャネルに対して書き込みチャネル（ｗｒｃｈ）命令を発行することにより、「マスク」が復元される（ステップ３０８０）。次に、一般イベント・ハンドラが終了する（ステップ３０９０）。
【０２６９】
ロック・ライン予約消失イベント
ロック・ライン予約消失イベントは、結果的にキャッシュ・ライン上の予約の消失になるバス・アクションについてＳＰＵプログラムに通知するために使用される。ロック・ライン予約取得（ｇｅｔｌｌａｒ）コマンドを発行することにより、ＳＰＵプログラムによって予約が取得される。他のプロセッサまたは装置が予約付きのキャッシュ・ラインを変更すると、予約が消失する。
【０２７０】
また、特権ソフトウェアがＭＦＣアトミック・フラッシュ・レジスタ内にフラッシュ・ビットを書き込んだ（ＭＦＣ＿Ａｔｏｍｉｃ＿Ｆｌｕｓｈ［Ｆ］が「１」に設定される）場合も予約を消失することができる。予約が消失すると、このイベントが発生する。このイベントが発生すると、Ｐｅｎｄ＿Ｅｖｅｎｔ［Ｌｒ］が「１」に設定される。このイベントが使用可能である（すなわち、ＳＰＵ＿ＲｄＥｖｅｎｔＳｔａｔ［Ｌｒ］が「１」に設定されている）場合、ＳＰＵ読み取りイベント状況チャネルに関するカウントが「１」に設定される。Ｐｅｎｄ＿Ｅｖｅｎｔ［Ｌｒ］ビットは、Ｌｒビットが「１」に設定されたＳＰＵ書き込みイベント確認応答チャネルに対してチャネル書き込み（ｗｒｃｈ）が発行されたとき（ＳＰＵ＿ＷｒＥｖｅｎｔＡｃｋ［Ｌｒ］）、または対応するビットが「０」に設定されたＳＰＵチャネル・アクセス機能を使用して、特権ソフトウェアがＳＰＵ保留イベント・レジスタを更新したときに、「０」に設定される。
【０２７１】
ロック・ライン予約消失イベントを処理するための手順の概要は図５５に示されている。図５５に示されている通り、この動作は、ＳＰＵ読み取りイベント・マスク・チャネルに対して読み取りチャネル（ｒｄｃｈ）命令を発行し、データを「マスク」に保存することから始まる（ステップ３１１０）。ＳＰＵ＿ＷｒＥｖｅｎｔＭａｓｋ［Ｌｒ］が「０」に設定されたＳＰＵ書き込みイベント・マスク・チャネルに対して書き込みチャネル（ｗｒｃｈ）命令を発行することにより、イベントがマスクされる（ステップ３１２０）。ＳＰＵ＿ＷｒＥｖｅｎｔＡｃｋ［Ｌｒ］が１に設定されたＳＰＵ書き込みイベント確認応答チャネルに対する書き込みチャネル（ｗｒｃｈ）命令を実行することにより、イベントが確認される（ステップ３１３０）。
【０２７２】
ロック・ライン・エリア内のデータをシステム変更したことに応答して、アプリケーション固有の機能が実行される（ステップ３１４０）。これは、通常、ロック・ラインが依然としてモニターされているかどうかを判別するためにメモリ内のソフトウェア構造をチェックすることによって開始される。依然として、それを「待っている」場合、次のステップは、通常、新しいデータを入手し、次にそのデータに作用するために変更された同じロック・ライン・エリアに対してｇｅｔｌｌａｒコマンドを発行することから構成されるであろう。
【０２７３】
次に、ロック・ライン予約消失イベント・ハンドラが終了する（ステップ３１５０）。ＳＰＵ＿ＷｒＥｖｅｎｔＭａｓｋ［ｍａｓｋ］によりＳＰＵ書き込みイベント・マスク・チャネルに対して書き込みチャネル（ｗｒｃｈ）命令を発行することにより、「マスク」が復元される（ステップ３１６０）。次に、一般イベント・ハンドラが終了し（ステップ３１７０）、手順が終了する。
【０２７４】
特権アテンション・イベント
特権アテンション・イベントは、特権ソフトウェアがＳＰＵプログラムからアテンションを要求していることをＳＰＵプログラムに通知するために使用される。特権ソフトウェアは、ＳＰＵ特権制御レジスタ内のアテンション・イベント要求ビットに「１」を書き込む（すなわち、ＳＰＵ＿ＰｒｉｖＣｎｔｌ［Ａ］が「１」に設定される）ことにより、アテンションを要求する。このイベントが使用可能であり（すなわち、ＳＰＵ＿ＲｄＥｖｅｎｔＳｔａｔ［Ａ］が「１」である）、ＳＰＵ読み取りイベント状況チャネルに関するカウントが「１」に設定されている場合、このイベントによりＰｅｎｄ＿Ｅｖｅｎｔ［Ａ］が「１」に設定される。Ｐｅｎｄ＿Ｅｖｅｎｔ［Ａ］ビットは、Ａビットが設定されたＳＰＵ書き込みイベント確認応答チャネルに対してチャネル書き込み（ｗｒｃｈ）が発行されたとき（すなわち、ＳＰＵ＿ＷｒＥｖｅｎｔＡｃｋ［Ａ］が「１」である）、または対応するビットが「０」に設定されたＳＰＵチャネル・アクセス機能を使用して、特権ソフトウェアがＳＰＵ保留イベント・レジスタを更新したときに、「０」に設定される。
【０２７５】
特権アテンション・イベントを処理するための手順の概要は図５６に示されている。図５６に示されている通り、この手順は、ＳＰＵ読み取りイベント・マスク・チャネルに読み取りチャネル（ｒｄｃｈ）命令を発行し、データを「マスク」に保存することから始まる（ステップ３２１０）。ＳＰＵ＿ＷｒＥｖｅｎｔＭａｓｋ［Ａ］が「０」に設定されたＳＰＵ書き込みイベント・マスク・チャネルに対して書き込みチャネル命令を発行することにより、イベントがマスクされる（ステップ３２２０）。ＳＰＵ＿ＷｒＥｖｅｎｔＡｃｋ［Ａ］が１に設定されたＳＰＵ書き込みイベント確認応答チャネルに対する書き込みチャネル（ｗｒｃｈ）命令を実行することにより、イベントが確認される（ステップ３２３０）。
【０２７６】
特権アテンション・イベントに応答して、アプリケーション固有の機能が実行される（ステップ３２４０）。これは、たとえば、ＳＰＵの歩留まりが要求されていることを通知するため、またはその他の何らかのアクションのために使用することができる。特権アテンション・イベントに対するアプリケーションまたはオペレーティング・システム固有の応答は、停止通知（stop and signal）、ＳＰＵインバウンド・メールボックス書き込み、ＳＰＵアウトバウンド割り込みメールボックス書き込み、あるいはシステムまたは入出力メモリ空間内の状況の更新などとして発行しなければならない。
【０２７７】
特権アテンション・イベント・ハンドラが終了する（ステップ３２５０）。ＳＰＵ＿ＷｒＥｖｅｎｔＭａｓｋ［ｍａｓｋ］によりＳＰＵ書き込みイベント・マスク・チャネルに対して書き込みチャネル（ｗｒｃｈ）命令を発行することにより、「マスク」が復元される（ステップ３２６０）。次に、一般イベント・ハンドラが終了する（ステップ３２７０）。
【０２７８】
マルチソース同期イベント
マルチソース同期イベントは、マルチソース同期要求が完了したことをＳＰＵプログラムに通知するために使用される。マルチソース同期は、ＭＦＣ書き込みマルチソース同期要求チャネル（ＭＦＣ＿ＷｒＭＳＳｙｎｃＲｅｑ）に書き込む（ｗｒｃｈ）ことにより要求される。このイベントは、ＭＦＣ書き込みマルチソース同期要求チャネル（ＭＦＣ＿ＷｒＭＳＳｙｎｃＲｅｑ）に関するチャネル・カウントが「０」から「１」に変化すると発生する。このイベントが使用可能であり（すなわち、ＳＰＵ＿ＲｄＥｖｅｎｔＳｔａｔ［Ｍｓ］が「１」である）、ＳＰＵ読み取りイベント状況チャネルに関するカウントが「１」に設定されている場合、このイベントによりＰｅｎｄ＿Ｅｖｅｎｔ［Ｍｓ］が「１」に設定される。Ｐｅｎｄ＿Ｅｖｅｎｔ［Ｍｓ］ビットは、Ｍｓビットが設定されたＳＰＵ書き込みイベント確認応答チャネルに対してチャネル書き込み（ｗｒｃｈ）が発行されたとき（すなわち、ＳＰＵ＿ＷｒＥｖｅｎｔＡｃｋ［Ｍｓ］が「１」に設定されている）、または対応するビットが「０」に設定されたＳＰＵチャネル・アクセス機能を使用して、特権ソフトウェアがＳＰＵ保留イベント・レジスタを更新したときに、「０」に設定される。マルチソース同期イベントは、マルチソース同期要求を発行する前にクリアしなければならない。
【０２７９】
マルチソース同期イベントを処理するための手順の概要は図５７に示されている。図５７に示されている通り、この手順は、ＳＰＵ読み取りイベント・マスク・チャネルに読み取りチャネル（ｒｄｃｈ）命令を送信し、データを「マスク」に保存することから始まる（ステップ３３１０）。ＳＰＵ＿ＷｒＥｖｅｎｔＭａｓｋ［Ｔｍ］が「０」に設定されたＳＰＵ書き込みイベント・マスク・チャネルに対して書き込みチャネル命令を発行することにより、イベントがマスクされる（ステップ３３２０）。ＳＰＵ＿ＷｒＥｖｅｎｔＡｃｋ［Ｍｓ］が１に設定されたＳＰＵ書き込みイベント確認応答チャネルに対する書き込みチャネル（ｗｒｃｈ）命令を実行することにより、イベントが確認される（ステップ３３３０）。
【０２８０】
保留中のマルチソース同期動作の完了に応答して、アプリケーション固有の機能が実行される（ステップ３３４０）。これは、典型的には、たとえば、特定のバッファ内のデータが完全に更新されたか、またはバッファ・エリアがもはや使用されていないという表示になるであろう。マルチソース同期イベント・ハンドラが終了する（ステップ３３５０）。ＳＰＵ＿ＷｒＥｖｅｎｔＭａｓｋ［ｍａｓｋ］によりＳＰＵ書き込みイベント・マスク・チャネルに対して書き込みチャネル（ｗｒｃｈ）命令を発行することにより、「マスク」が復元される（ステップ３３６０）。次に、一般イベント・ハンドラが終了する（ステップ３３７０）。
【０２８１】
要約すると、本発明は、ローカル記憶装置にかかる負担を低減し、データ、自由空間、またはイベントが発生するのを待っているときにプロセッサが低電力状態のままでいることができるようにする、プロセッサと外部装置との間の通信を容易にするためのメカニズムを提供する。本発明のメカニズムは、プロセッサ、メモリ・フロー・コントローラ、マシン状態レジスタ、および外部プロセッサ割り込み機能の様々な機能と通信するための複数のチャネルを提供する。これらのチャネルは、命令、命令パラメータ、プロセッサ間情報、信号通知、マシン分離情報、マシン割り込み状態情報、生成されたイベントを提供し、イベント処理を実行するために使用することができる。
【０２８２】
本発明は完全に機能するデータ処理システムに関連して説明されているが、当業者であれば、本発明のプロセスが複数命令からなるコンピュータ可読媒体の形式および様々な形式で配布可能であり、その配布を実行するために実際に使用される信号伝送媒体の特定のタイプにかかわらず、本発明が等しく適用されることは留意すべき重要なことである。コンピュータ可読媒体の例としては、フレキシブル・ディスク、ハード・ディスク、ＲＡＭ、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭなどの記録可能タイプの媒体と、たとえば、電波および光波伝送などの伝送形式を使用する、デジタルおよびアナログ通信リンク、有線または無線通信リンクなどの伝送タイプの媒体とを含む。コンピュータ可読媒体は、特定のデータ処理システムで実際に使用するためにデコードされたコード化フォーマットの形を取ることができる。
【０２８３】
本発明の説明は、例示および解説のために提示されたものであり、網羅するためまたは開示された形式の本発明に限定するためのものではない。多くの変更および変形は当業者には明白なものになるであろう。本発明の原理、実用的な応用例を最も良く説明するため、ならびに企図された特定の使用に適した様々な変更を含む様々な実施形態に関して本発明を他の当業者が理解できるようにするために、実施形態は選択され記載されている。
【図面の簡単な説明】
【０２８４】
【図１】本発明の模範的な一実施形態によるブロードバンド・プロセッサ・アーキテクチャ（ＢＰＡ）の模範的なブロック図である。
【図２】本発明の模範的な一実施形態による典型的なＭＦＣ２００の模範的なブロック図である。
【図３】本発明の模範的な一実施形態によるＭＦＣコマンドに関するパラメータ・ニーモニックを例示する模範的な図である。
【図４】本発明の模範的な一実施形態によるＤＭＡリスト・コマンドの詳細を例示する模範的な図である。
【図５】米国特許出願公開第２００４／０２６４４４５号に記載されているメカニズムによる１対のチャネルのためのチャネル回路に関するＳＰＵ発行制御ロジックおよびデータ・フローの配置を例示する模範的な図である。
【図６】本発明の模範的な一実施形態によるチャネル・インターフェースの模範的な動作の概要を示す流れ図である。
【図７】本発明の一実施形態によってチャネルが使用される方法を例示する模範的な図である。
【図８】本発明の模範的な一実施形態によるＳＰＵチャネル・マップをリストする模範的な図である。
【図９】本発明の模範的な一実施形態によるＳＰＵチャネル・マップをリストする模範的な図である。
【図１０】本発明の模範的な一実施形態によるＭＦＣコマンド命令コード・チャネルの詳細を例示する模範的な図である。
【図１１】本発明の模範的な一実施形態によるＭＦＣクラスＩＤチャネルの詳細を例示する模範的な図である。
【図１２】本発明の模範的な一実施形態による８Ｗａｙセット連想キャッシュのための典型的なＲＭＴ項目を描写する図である。
【図１３】本発明の模範的な一実施形態によるＭＦＣコマンド・タグ識別チャネルの詳細を例示する模範的な図である。
【図１４】本発明の模範的な一実施形態によるＭＦＣ転送サイズまたはリスト・サイズ・チャネルの詳細を例示する模範的な図である。
【図１５】本発明の模範的な一実施形態によるＭＦＣローカル記憶アドレス・チャネルの詳細を例示する模範的な図である。
【図１６】本発明の模範的な一実施形態によるＭＦＣ有効アドレス・ローまたはリスト・アドレス・チャネルの詳細を例示する模範的な図である。
【図１７】本発明の模範的な一実施形態によるＭＦＣ有効アドレス・ハイ・チャネルの詳細を例示する模範的な図である。
【図１８】本発明の模範的な一実施形態によるＭＦＣコマンド・パラメータを書き込むための模範的な動作の概要を示す流れ図である。
【図１９】本発明の模範的な一実施形態によるＭＦＣ書き込みタグ・グループ照会マスク・チャネルの詳細を例示する模範的な図である。
【図２０】本発明の模範的な一実施形態によるＭＦＣ読み取りタグ・グループ照会マスク・チャネルの詳細を例示する模範的な図である。
【図２１】本発明の模範的な一実施形態によるＭＦＣ書き込みタグ状況更新要求チャネルの詳細を例示する模範的な図である。
【図２２】本発明の模範的な一実施形態によるＭＦＣ読み取りタグ・グループ状況チャネルの詳細を例示する模範的な図である。
【図２３】本発明の模範的な一実施形態によるＭＦＣ読み取りリスト停止通知タグ状況チャネルの詳細を例示する模範的な図である。
【図２４】本発明の模範的な一実施形態によるＭＦＣ書き込みリスト停止通知タグ確認応答チャネルの詳細を例示する模範的な図である。
【図２５】本発明の模範的な一実施形態によるＭＦＣ読み取りアトミック・コマンド状況チャネルの詳細を例示する模範的な図である。
【図２６】本発明の模範的な一実施形態によるＭＦＣコマンドの完了またはＭＦＣコマンド・グループの完了についてポーリングするための模範的な動作の概要を示す流れ図である。
【図２７】本発明の模範的な一実施形態によりタグ・グループ更新を待つかまたはイベント（１つまたは複数のタグ・グループ完了）を待つための模範的な動作の概要を示す流れ図である。
【図２８】本発明の模範的な一実施形態により条件付きタグ・イベントを待つかまたは条件付きタグ・イベントについてポーリングすることに対する代替策としてＳＰＵイベント機能を使用するための模範的な動作の概要を示す流れ図である。
【図２９】本発明の模範的な一実施形態によりＭＦＣ  ＤＭＡリスト・コマンドが停止通知フラグが設定されたリスト・エレメントに到達したかどうかを判別するためにポーリングするための模範的な動作の概要を示す流れ図である。
【図３０】本発明の模範的な一実施形態により停止通知フラグが設定されたリスト・エレメントに到達するためのＭＦＣ  ＤＭＡリスト・コマンドを待つための模範的な動作の概要を示す流れ図である。
【図３１】本発明の模範的な一実施形態によりリスト停止通知タグ・グループ状況を待つかまたはリスト停止通知タグ・グループ状況についてポーリングすることに対する代替策としてＳＰＵイベント機能を使用するための模範的な動作の概要を示す流れ図である。
【図３２】本発明の模範的な一実施形態によるＭＦＣ書き込みマルチソース同期要求チャネルの詳細を例示する模範的な図である。
【図３３】本発明の模範的な一実施形態によるＳＰＵ書き込みアウトバウンド・メールボックス・チャネルの詳細を例示する模範的な図である。
【図３４】本発明の模範的な一実施形態によるＳＰＵ書き込みアウトバウンド割り込みメールボックス・チャネルの詳細を例示する模範的な図である。
【図３５】本発明の模範的な一実施形態によるＳＰＵ読み取りインバウンド・メールボックス・チャネルの詳細を例示する模範的な図である。
【図３６】本発明の模範的な一実施形態によるＳＰＵ信号通知チャネルの詳細を例示する模範的な図である。
【図３７】本発明の模範的な一実施形態によるＳＰＵ書き込みデクリメンタ・チャネルの詳細を例示する模範的な図である。
【図３８】本発明の模範的な一実施形態によるＳＰＵ読み取りデクリメンタ・チャネルの詳細を例示する模範的な図である。
【図３９】本発明の模範的な一実施形態によるＳＰＵ読み取りマシン状況チャネルの詳細を例示する模範的な図である。
【図４０】本発明の模範的な一実施形態によるＳＰＵ書き込み状態保存復元チャネルの詳細を例示する模範的な図である。
【図４１】本発明の模範的な一実施形態によるＳＰＵ読み取り状態保存復元チャネルの詳細を例示する模範的な図である。
【図４２】本発明の模範的な一実施形態によるＳＰＵイベント機能の論理表現を例示する模範的なブロック図である。
【図４３】本発明の模範的な一実施形態によるＳＰＵ読み取りイベント状況チャネルの詳細を例示する模範的な図である。
【図４４】本発明の模範的な一実施形態によるＳＰＵ書き込みイベント・マスク・チャネルの詳細を例示する模範的な図である。
【図４５】本発明の模範的な一実施形態によるＳＰＵ読み取りイベント・マスク・チャネルの詳細を例示する模範的な図である。
【図４６】本発明の模範的な一実施形態によるＳＰＵ書き込みイベント確認応答チャネルの詳細を例示する模範的な図である。
【図４７】本発明の一実施形態によるＭＦＣ  ＤＭＡリスト・コマンド停止通知イベントを処理するための模範的な動作の概要を示す流れ図である。
【図４８】本発明の一実施形態によるＭＦＣ  ＳＰＵコマンド・キュー使用可能イベントを処理するための模範的な動作の概要を示す流れ図である。
【図４９】本発明の一実施形態によるＳＰＵインバウンド・メールボックス使用可能イベントを処理するための模範的な動作の概要を示す流れ図である。
【図５０】本発明の一実施形態によるＳＰＵデクリメンタ・イベントを処理するための模範的な動作の概要を示す流れ図である。
【図５１】本発明の一実施形態によるＳＰＵアウトバウンド割り込みメールボックス使用可能イベントを処理するための模範的な動作の概要を示す流れ図である。
【図５２】本発明の一実施形態によるＳＰＵアウトバウンド・メールボックス使用可能イベントを処理するための模範的な動作の概要を示す流れ図である。
【図５３】本発明の一実施形態によるＳＰＵ信号通知２使用可能イベントを処理するための模範的な動作の概要を示す流れ図である。
【図５４】本発明の一実施形態によるＳＰＵ信号通知１使用可能イベントを処理するための模範的な動作の概要を示す流れ図である。
【図５５】本発明の模範的な一実施形態によるロック・ライン予約消失イベントを処理するための模範的な動作の概要を示す流れ図である。
【図５６】本発明の模範的な一実施形態による特権アテンション・イベントを処理するための模範的な動作の概要を示す流れ図である。
【図５７】本発明の一実施形態によるマルチソース同期イベントを処理するための模範的な動作の概要を示す流れ図である。
【図１】
0005558713.tif 000003
【図２】
0005558713.tif 000004
【図３】
0005558713.tif 000005
【図４】
0005558713.tif 000006
【図５】
0005558713.tif 000007
【図６】
0005558713.tif 000008
【図７】
0005558713.tif 000009
【図８】
0005558713.tif 000010
【図９】
0005558713.tif 000011
【図１０】
0005558713.tif 000012
【図１１】
0005558713.tif 000013
【図１２】
0005558713.tif 000014
【図１３】
0005558713.tif 000015
【図１４】
0005558713.tif 000016
【図１５】
0005558713.tif 000017
【図１６】
0005558713.tif 000018
【図１７】
0005558713.tif 000019
【図１８】
0005558713.tif 000020
【図１９】
0005558713.tif 000021
【図２０】
0005558713.tif 000022
【図２１】
0005558713.tif 000023
【図２２】
0005558713.tif 000024
【図２３】
0005558713.tif 000025
【図２４】
0005558713.tif 000026
【図２５】
0005558713.tif 000027
【図２６】
0005558713.tif 000028
【図２７】
0005558713.tif 000029
【図２８】
0005558713.tif 000030
【図２９】
0005558713.tif 000031
【図３０】
0005558713.tif 000032
【図３１】
0005558713.tif 000033
【図３２】
0005558713.tif 000034
【図３３】
0005558713.tif 000035
【図３４】
0005558713.tif 000036
【図３５】
0005558713.tif 000037
【図３６】
0005558713.tif 000038
【図３７】
0005558713.tif 000039
【図３８】
0005558713.tif 000040
【図３９】
0005558713.tif 000041
【図４０】
0005558713.tif 000042
【図４１】
0005558713.tif 000043
【図４２】
0005558713.tif 000044
【図４３】
0005558713.tif 000045
【図４４】
0005558713.tif 000046
【図４５】
0005558713.tif 000047
【図４６】
0005558713.tif 000048
【図４７】
0005558713.tif 000049
【図４８】
0005558713.tif 000050
【図４９】
0005558713.tif 000051
【図５０】
0005558713.tif 000052
【図５１】
0005558713.tif 000053
【図５２】
0005558713.tif 000054
【図５３】
0005558713.tif 000055
【図５４】
0005558713.tif 000056
【図５５】
0005558713.tif 000057
【図５６】
0005558713.tif 000058
【図５７】
0005558713.tif 000059