JPH11514113A - 複数プロセッサ・システム内のプロセッサ間でメッセージを送信する方法および装置 - Google Patents

複数プロセッサ・システム内のプロセッサ間でメッセージを送信する方法および装置

Info

Publication number
JPH11514113A
JPH11514113A JP9503399A JP50339997A JPH11514113A JP H11514113 A JPH11514113 A JP H11514113A JP 9503399 A JP9503399 A JP 9503399A JP 50339997 A JP50339997 A JP 50339997A JP H11514113 A JPH11514113 A JP H11514113A
Authority
JP
Japan
Prior art keywords
queue
outbound
inbound
free
message
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP9503399A
Other languages
English (en)
Other versions
JP3884073B2 (ja
Inventor
デイビス,バリー
フュトラル,ウイリアム・ティ
ガーバス,エリオット
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of JPH11514113A publication Critical patent/JPH11514113A/ja
Application granted granted Critical
Publication of JP3884073B2 publication Critical patent/JP3884073B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/10Program control for peripheral devices
    • G06F13/12Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor
    • G06F13/124Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor where hardware is a sequential transfer control unit, e.g. microprocessor, peripheral processor or state-machine
    • G06F13/126Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor where hardware is a sequential transfer control unit, e.g. microprocessor, peripheral processor or state-machine and has means for transferring I/O instructions and statuses between control unit and main processor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4004Coupling between buses
    • G06F13/4027Coupling between buses using bus bridges
    • G06F13/405Coupling between buses using bus bridges where the bridge performs a synchronising function
    • G06F13/4059Coupling between buses using bus bridges where the bridge performs a synchronising function where the synchronisation uses buffers, e.g. for speed matching between buses

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Multi Processors (AREA)
  • Bus Control (AREA)

Abstract

(57)【要約】 入出力プラットフォーム内の入出力動作を処理するホスト・プロセッサとローカル・プロセッサとの間のハードウェア待ち行列インタフェースを提供するメッセージユニット(210)。回路(214)は、インバウンド・フリー待ち行列、インバウンド・ポスト待ち行列、アウトバウンド・フリー待ち行列、およびアウトバウンド・ポスト待ち行列の頭部ポインタおよび尾部ポインタを管理する。また、ホスト・プロセッサまたはバス・エージェントがインバウンドポートレジスタまたはアウトバウンドポートレジスタの読取りまたは書込みを行うことによって単一のバストランザクションにおいてこれらの待ち行列にアクセスすることを可能にする回路が備えられている。待ち行列要素は、メッセージ・バッファのハンドルを含んでいる。本発明は、待ち行列内の次の要素の発見、その要素の変更、および次の待ち行列アクセスのための次の要素を示す待ち行列記述子(すなわち、頭部ポインタまたは尾部ポインタ)の修正などの特定のタスクを自動的に実行する。待ち行列がホスト・プロセッサ、バス・エージェント、またはローカル・プロセッサによって書き込まれたときにホスト・プロセッサまたはローカル・プロセッサを選択的に妨害するために複数のレジスタが使用される。

Description

【発明の詳細な説明】 複数プロセッサ・システム内のプロセッサ間で メッセージを送信する方法および装置 発明の背景 1.発明の分野 本発明は、複数プロセッサ・システムの分野に関する。さらに詳細には、本発 明は、複数プロセッサ・システム内のプロセッサ間でメッセージを送信する方法 および装置に関する。 2.従来技術の説明 メッセージは、単にオペレーショナル・パラメータおよびデータを伝達するデ ータ構造である。メッセージは、1つまたは複数のプラットフォーム上で実行さ れている1つまたは複数のプロセス(すなわち、アプリケーション)によって生 成される。プラットフォームは、メモリに関連するプロセッサまたはプロセッサ のクラスタ、ローカル・メモリ・バス、およびメモリ入出力バスを含んでいる。 プラットフォーム内のこれらの要素は、動作環境を構成する。 さらに、プラットフォームは、オペレーティング・システムの単一のインスタ ンスを実行する。言い換えれば、コンピュータ・システムは、単一のオペレーテ ィング・システムが複数のプロセッサをサポートする分配処理システムである。 メッセージは、ある特定のプラットフォーム上のプロセスの1つによって生成さ れた後、処理のために他のプロセッサ・プラットフォームに送られる。 メッセージは、メモリ内に常駐し、命令および追加の情報のデータ・ブロック に対する他のポインタを含んでいる制御ブロックにポインタによって示される。 例えば、制御ブロックは、特定の周辺装置(例えば、ハード・ディスク・ドライ ブ)を指定し、装置の指定されたセクタからデータを読み取るよう要求する。 メッセージ送信は、プロセッサが「密に」結合された(すなわち、プロセッサ が単一のキャッシュを共用する)対称複数プロセッサ・システム(SMP)内、 およびプロセッサが共通のバス構造によって「粗に」結合された非対称複数プロ セッサ・システム内のプロセッサ間で使用される。 メッセージを第1のプラットフォーム内のあるプロセッサから第2のプラット フォーム内の第2のプロセッサに送るとき、そのメッセージを向けられたプロセ ッサが自身の資源が自由なときにメッセージを処理することができるようにメッ セージを待ち行列化しなければならない。 メッセージを待ち行列化する従来技術の方法は、主としてソフトウェア技法を 使用して実施される。これらの方法は、共用された待ち行列構造への複数のアト ミック・プロセッサ・アクセスを必要とする。例えば、単一のプロセッサ上で動 作している複数のプロセスは、プロセッサによって共用されたメモリ内に配置さ れたメッセージの1つの待ち行列を共用する。プロセスの1つに対してアトミッ ク・アクセスを行うために、オペレーティング・システムは、待ち行列へのアク セスを要求しているプロセスに、待ち行列に対するそのプロセス独占権(例えば 、アトミック・アクセス)を与えるセマフォを付与する。セマフォは、単に共用 されたデータ構造(すなわち、オペレーティング・システム・コンテキストの一 部)に対するプロセス独占アクセス権を与えるオペレーティング・システム変数 である。その場合、プロセスは、待ち行列に対してメッセージを追加したり、削 除することができる。特定のプロセスは、セマフォを制御するとき、その待ち行 列に対してアクセスを要求している他のプロセスをロックアウトする。他のプロ セスは、共用された構造が使用できるようになるまで、第1のプロセスがセマフ ォを解放するのを待たなければならない。 複数プロセッサ・システムでは、複数のプロセッサがセマフォへのアクセス権 を同時に得ようと試みることができる。したがって、同期のためにバス・ロック (すなわち、アトミック・アクセス)が必要となる。1つのプロセッサがバスを ロックしている間、他のプロセッサは、第1のプロセッサがそのバスをロック解 除するまでメモリ内の同じ共用された構造(すなわち、メモリ・ブロック)にア クセスすることはできない。セマフォはシステム・メモリ内にあるので、他のプ ロセッサは、セマフォを求めて争っていなくてもロックアウトされる。したがっ て、サスペンドすることができるソフトウェア・モジュール(すなわち、マルチ タスク・オペレーティング・システム)内では、バス・ロックは使用できない。 代わりに、これらのアプリケーション内でセマフォを獲得し、解放するとき、オ ペレーティング・システム・カーネルへのコールが必要となる。 上述の動作は、セマフォを待っている間またはバス・アクセスを待っている間 、各プロセスがアイドルである時間のために非常に非効率的である。さらに、オ ペレーティング・システム・カーネルへの上述のコールは、高価なコンテキスト 切換えを行う。 コンテキストは、単にアプリケーション(すなわち、アプリケーション・コー ドおよびデータ)に充てられるメモリ領域である。アプリケーション・コンテキ ストは、フラグ、変数、現在プロセスの状態を含んでいる。セマフォはアプリケ ーション・コンテキストと異なるコンテキスト(すなわち、オペレーティング・ システム・コンテキスト)内のオペレーティング・システム変数であるので、シ ステム資源はアプリケーション・コンテキストを切り換える必要がある。例えば 、コンテキスト切換え中に、データ・ポインタを変更し、ポインタをスタック上 に押し上げ、プロセス制御パラメータも変更する。 バス・ロック能力を有しない従来技術のコンピュータ・システムは、高度に複 雑なアルゴリズムを使用して、プロセッサ間の同期を実施する。これらのシステ ムでは、性能がさらに低下する。 したがって、セマフォを使用せずに待ち行列への直接アクセスを効率的に可能 にする方法および装置が必要である。 発明の概要 複数プロセッサ・システム内のプロセッサ間でメッセージを送信する方法およ び装置。本発明の方法および装置は、非対称複数プロセッサ・システム内のプロ セッサ間でメッセージの通信を可能にする。非対称複数プロセッサ・システムは 、単にプロセッサが様々なオペレーティング・システムを同時に実行しているシ ステムである。例えば、アプリケーション・プラットフォーム上のアプリケーシ ョン・プロセッサは、WindowsNTTMなど標準のアプリケーション・オペ レーティング・システム・ソフトウェア上で動作している。しかしながら、入出 力 プラットフォーム上のプロセッサは、入出力動作(例えば、実時間オペレーティ ング・システム:RTOS)に適した特定のオペレーティング・システムを動作 させている。特に、本発明は、1つまたは複数のプロセッサ・プラットフォーム 上で実行されている1つまたは複数のプロセスからローカル・プロセッサを含ん でいるプラットフォームへのメッセージを待ち行列化する迅速かつ直接的な機構 を提供する。 本発明は、他のプラットフォームにメッセージ・バッファを割り当てるインバ ウンド・フリー待ち行列、および入出力プラットフォームの外部のプロセッサお よびバス・エージェントからメッセージをポストするインバウンド・ワーク待ち 行列を提供する。さらに、本発明は、ローカル・プロセッサ(すなわち、入出力 プラットフォーム用のプロセッサ)からのメッセージを、他のプラットフォーム 上のプロセッサがこれらのメッセージを検索することができるように他のプロセ ッサ・プラットフォーム(すなわち、ホスト・プロセッサ)にポストするアウト バウンド・ワーク待ち行列を提供する。本発明はまた、ホスト・プロセッサがそ れに対してメッセージ・バッファを解放するアウトバウンド・フリー待ち行列を 提供する。この待ち行列は、ホスト・プロセッサがメッセージを処理した後、メ ッセージ・バッファをローカル・プロセッサに解放する。 本発明はホスト・プラットフォームと入出力プラットフォームとの間の非常に 速くかつ効率的なハードウェア待ち行列インタフェースを提供するメッセージ・ ユニットを使用してこれらの待ち行列を管理する。本発明は、単一のPCIバス ・トランザクション・サイクル中に自由なメッセージ・バッファ、すなわち「エ ンプティ」インジケータを準備(すなわち、メッセージ・ユニット内のレジスタ の読取り)することができる。さらに、本発明は、単一のPCIバス・トランザ クション中にメッセージまたは「フル」インジケータのポストまたは検索(すな わち、メッセージ・ユニット内のレジスタの書込み)を可能にする。 本発明は、待ち行列をハードウェア・インタフェースを使用して管理するので 、従来技術のソフトウェア待ち行列管理に勝るいくつかの利点を提供する。第1 に、本発明はプロセスがフル待ち行列またはエンプティ待ち行列に対して待ち行 列操作を実施しようとしたときデッドロックまたはロックアップを回避する。本 発明 のメッセージ・ユニットは、エンプティ・リストまたは待ち行列からフェッチし ようとする試みが検出されたときエンプティ指示を迅速に戻す。同様に、本発明 は、フル待ち行列にポストしようとする試みが検出されたとき特定の待ち行列が フルであるという指示を迅速に戻す。本発明は、最小のハードウェア資源を使用 して効率的に実施することができる。 さらに、本発明は単一のバス・トランザクション内で待ち行列アクセスを実行 するので、同期(すなわち、セマフォの獲得および解放)の必要がなく、またシ ステムの性能が大幅に改善される。待ち行列アクセスは、単に要素を待ち行列に 追加すること、または要素を待ち行列から削除することである。待ち行列アクセ スは、次の要素を見つけ出し、その要素を変更し、次の待ち行列アクセスのため に次の要素を示す待ち行列記述子を修正する特定のタスクを含んでいる。これら のタスクは、本発明によって自動的に実施される。これらのタスクが完了する時 間中、待ち行列は、他のプロセスが同じメッセージ・バッファを獲得したり、ま たは他のメッセージを上書きしないようにロックされる。本発明は、単一のPC Iバス・トランザクションが本来アトミックであることを利用するために1つの バス・トランザクション内で待ち行列アクセス(すなわち、トランザクションを 実行しているバス・エージェントによる独占アクセス)を提供する。さらに、本 発明は、読取り信号および再試行信号を介して自動的に同期を処理する。 さらに、本発明ではセマフォが不要であるので、システム資源をタイアップす るコンテキスト切換えが不要である。メッセージ・ユニット内のレジストに対す る単一の読取りまたは書込みだけで、特定の待ち行列にアクセスすることができ 、また1つのバス・トランザクション内で読取りまたは書込みを行うことができ るので、セマフォは不要である。 本発明について、添付の図面において例を挙げて非限定的に説明する。図面中 、同じ参照番号は同じ要素を示す。 図面の簡単な説明 第1図は、本発明を実施する非対称複数プロセッサ・コンピュータ・システム のブロック図である。 第2図は、本発明を含む入出力プラットフォームを示す図である。 第3図は、本発明の一実施形態を示す図である。 第4図は、本発明の円形待ち行列を示す図である。 第5図は、本発明の円形待ち行列動作をさらに示す図である。 第6A図は、本発明のインバウンド・フリー状態機械を示す図である。第6B 図は、インバウンド・フリー状態機械の状態図である。 第7A図は、本発明のインバウンド・ポスト状態機械を示す図である。第7B 図は、インバウンド・ポスト状態機械の状態図である。 第8A図は、本発明のアウトバウンド検索状態機械を示す図である。第8B図 は、アウトバウンド検索状態機械の状態図である。 第9A図は、本発明のアウトバウンド解放状態機械を示す図である。第9B図 は、アウトバウンド解放状態機械の状態図である。 好ましい実施形態の詳細な説明 第1図は、本発明を実施する複数プロセッサ・コンピュータ・システムのブロ ック図である。マルチプロセッサ・システム100は、ホスト・プロセッサ10 2を含んでいる。ホスト・プロセッサ102は、複数のプロセッサ(すなわち、 密に結合されたプロセッサのクラスタ)を含んでいる。ホスト・プロセッサ10 2は、ホスト・バス103を介してホスト・メモリ104に結合される。メモリ ・バス103はまた、ホスト・プロセッサ102およびメモリ104をホスト・ チップ・セット105に結合する。ホスト・チップ・セット105は、メモリ・ コントローラ、キャッシュ・コントローラ、およびメモリ・バス103と入出力 (I/O)バス106(例えばPCIバス)とのインタフェースを提供するブリ ッジを含んでいる。 ホスト・チップ・セット105は、当技術分野において周知である。例えば、 ホスト・プロセッサ102はIntel社製のPentiumTMプロセッサであ る場合、適切なホスト・チップ・セット105は、これもIntel社製のTr identTMである。同様に、P6TMプロセッサが使用される場合、適切なホス ト・チップ・セット105は、これもIntel社製のOrionTMチップ・セ ットである。ホスト・プロセッサ102、メモリ・バス103、ホスト・メモリ 104、ホスト・チップ・セット105は、このマルチプロセッサ・システム1 00内ではホスト・プラットフォームと呼ばれる。 複数プロセッサ・システム100はさらに、第1のPCIバス106に結合さ れた入出力プラットフォーム108を含んでいる。さらに、入出力プラットフォ ーム108は、第1のPCIバス106のアドレス空間と、入出力プラットフォ ーム108内に含まれているプロセッサのアドレス空間とのインタフェースを提 供する。入出力プラットフォーム108はさらに、第1のPCIバス106を第 2のPCIバス(図示せず)に結合するブリッジを含んでいる。 入出力プラットフォーム108は、ホスト・プロセッサ用の入出力サポート、 および第1のPCIバス106および第2のPCIバスに結合されたデバイス( 図示せず)を提供する。入出力プラットフォーム108の一例については、In tel社に譲渡された 日出願の米国特許出願第 号を参照された い。第2図は、本発明を含んでいる(前に第1図において要素108と呼んでい た)入出力プラットフォーム200を詳細に示す。入出力プラットフォーム20 0は、メモリ・コントローラ205からローカル・バス204を介してローカル ・メモリ206に結合されたローカル・プロセッサ202を含んでいる。ローカ ル・プロセッサ202は、Intel80960JFプロセッサである。 アドレス・トランザクション・ユニット(ATU)218は、ローカル・バス 204と(前に第1図において要素106と呼んでいた)第1のPCIバス20 8とに結合される。アドレス・トランザクション・ユニット(ATU)218は 、PCIバス208のアドレス空間内のアドレスをプロセッサ202アドレス空 間内のアドレスに変換し、その逆も行う。したがって、PCIアドレス空間内の アドレスを有するPCIバス208に対するトランザクションは、メモリ・コン トローラ205がローカル・メモリ206内の正確な位置またはMU210内の 正確なレジスタ212にアクセスすることができるようにローカル・バス204 アドレス空間に変換されなければならない。 ATU218は、ローカル・バス・トランザクションをPCIバス・トランザ クションに変換するアウトバウンド・モジュール、PCIバス・トランザクショ ンをローカル・バス・トランザクションに変換するインバウンド・モジュール、 およびこのアドレス・トランザクションを管理する制御状態機械を含んでいる。 本発明では、ATU218は、特定のPCIバス・トランザクションがMU21 0内のレジスタ212の1つにアクセスすることを検出するアドレス・デコーダ と考えられる。ATU218は、トランザクションがMU210内のレジスタ2 12の1つへのアクセスであることを検出した後、以下で説明するMU210内 の制御状態機械214を開始するためにデータ・パス221を介して信号を送る 。制御状態機械214は、MU210がトランザクションを受け取る準備ができ ていないことをATU218に通知するため、または要求側プロセスに再試行を 通知するようATU218に指示するために、複数の信号をデータ・パス221 を介してATU218に送る。 ローカル・バス・アービタ240は、ローカル・バス・マスタ(すなわち、M U210、ATU218のインバウンド・モジュール、およびローカル・プロセ ッサ202)のいずれかにローカル・バス204の制御権を付与する。アービト レーション回路240は、当技術分野において周知である。 メモリ・コントローラ205は、データ・パス224および225を介してロ ーカル・メモリ206にアクセスするために備えられる。ローカル・バス204 は、単一のデータ・パスとして示されているが、ローカル・バス204は、アド レス部分およびデータ部分から構成される。 バス・エージェント201は、ホスト・プロセッサまたは他の入出力プラット フォームである。さらに、バス・エージェント201は、第1図のホスト・メモ リ104、ホスト・プロセッサ102、ホスト・チップ・セット105、メモリ ・バス103を含んでいる。言い換えれば、バス・エージェント201は、それ 自体サブシステムまたは任意のインテリジェント・バス・エージェントである。 メッセージ・ユニット(MU)210は、ローカル・バス204とATU21 8とに結合される。MU210は、本発明の教示を実施し、複数のレジスタ21 2および複数の状態機械214を含んでいる。これらのレジスタ212および状 態機械214について、第3図に関して詳細に説明する。 第3図は、MU210内で実施された本発明を示す。MU210は、制御パス 350を介してATU218に結合された複数の状態機械214を含んでいる。 MU210はまた、複数のプリフェッチおよび一時レジスタ332を含んでいる 。これらのレジスタ332は、データ・パス336を介してATU218に結合 される。プリフェッチおよび一時レジスタ332はまた、データ・パス352を 介して制御状態機械214によって制御される。レジスタ332はまた、ローカ ル・メモリ206にアクセスするためにデータ・パス334を介してローカル・ バス204に結合される。 この実施形態では、MU210は、4つの円形待ち行列を使用したメッセージ 送信方式を含んでいる。この実施形態では、4つのプリフェッチおよび一時レジ スタ332がある。ホスト・プロセッサが円形待ち行列にデータを書き込むこと を可能にする2つのレジスタが備えられる。ホスト・プロセッサが円形待ち行列 の1つからデータを読み取ることを可能にする2つのレジスタが備えられる。 MU210はまた、データ・パス342を介して制御状態機械214に結合さ れた複数の待ち行列ポインタ・レジスタ340を含んでいる。これらのレジスタ 340は、待ち行列207の頭部ポインタおよび尾部ポインタを記憶する。これ らの待ち行列について、第4図および第5図に関して詳細に説明する。円形待ち行列 MU210は、4つの円形待ち行列207へのアクセスをバス・エージェント 201に提供する。2つのインバウンド待ち行列および2つのアウトバウンド待 ち行列がある。「インバウンド」および「アウトバウンド」は、活動メッセージ の流れの方向を示す。「インバウンド」メッセージは、ローカル・プロセッサ2 02が処理すべきバス・エージェント201によってポストされた新しいメッセ ージであるか、またはバス・エージェント201が使用するために使用できるエ ンプティまたはフリーのメッセージ・バッファである。「アウトバウンド」メッ セージは、ホスト・プロセッサ201が処理すべきローカル・プロセッサ202 によってポストされた新しいメッセージであるか、またはローカル・プロセッサ 202が使用するために使用できるフリーのメッセージ・バッファである。 一実施形態では、ホスト・プロセッサ/バス・エージェント201とローカル ・プロセッサ202との間でメッセージを送るために使用される4つの円形待ち 行列がある。インバウンド・メッセージを処理するために使用される2つのイン バウンド待ち行列があり、アウトバウンド・メッセージを処理するために使用さ れる2つのアウトバウンド待ち行列がある。インバウンド待ち行列の1つは、フ リー待ち行列に指定され、インバウンド・フリー・メッセージ・ハンドルを含ん でいる。メッセージ・ハンドルは、メッセージ・バッファの論理アドレスまたは 物理アドレスである。他のインバウンド待ち行列は、ポスト待ち行列または作業 待ち行列に指定され、インバウンド・ポスト・メッセージ・ハンドルを含んでい る。同様に、アウトバウンド待ち行列の1つはフリー待ち行列に指定され、他の アウトバウンド待ち行列はポスト待ち行列に指定される。 2つのアウトバウンド待ち行列は、ローカル・プロセッサ202がアウトバウ ンド・メッセージをポスト待ち行列内にポストし、外部ホスト・プロセッサ20 1からアウトバウンド・フリー待ち行列内に戻ったフリー・メッセージを受信す ることを可能にする。2つのインバウンド待ち行列は、バス・エージェント20 1がインバウンド・フリー待ち行列からフリー・メッセージ・バッファを獲得し 、その後ローカル・プロセッサ202によって処理するためにそのバッファをイ ンバウンド・フリー待ち行列にポストすることを可能にする。 円形待ち行列207のデータ記憶は、ローカル・メモリ206によって実施さ れる。この特定の実施形態では、待ち行列内の各エントリは、メッセージ・ハン ドルである32ビット・データ値である。さらに、待ち行列の読取りまたは書込 みは、1つの待ち行列エントリに正確にアクセスすることができる。 各円形待ち行列は、頭部ポインタおよび尾部ポインタを有する。待ち行列への 書込みは、待ち行列の頭部から行われ、読取りは、尾部から行われる。頭部ポイ ンタおよび尾部ポインタは、ローカル・プロセッサ202上で動作しているソフ トウェアまたはメッセージ・ユニット210によって増分される。頭部ポインタ および尾部ポインタがどのようにしてローカル・プロセッサ202およびMU2 10によって増分されるかに関する詳細について、以下で説明する。 頭部ポインタおよび尾部ポインタは、それぞれの円形待ち行列内にオフセット され、0から円形待ち行列サイズ−1に及ぶ(すなわち、ポインタを0からラベ ル付けし始める)。ポインタは、各待ち行列アクセスの後で増分される。頭部ポ インタならびに尾部ポインタは、円形待ち行列サイズ(すなわち、待ち行列の終 り)に達したときに0に丸められる。 メッセージ・ユニット210は、ある条件のもとで、ローカル・プロセッサ2 02に対して割込みを発生するか、またはPCIバス割込み(すなわち、外部プ ロセッサに対する割込み)を発生する。一般に、ポスト待ち行列が書き込まれた とき、メッセージがポストされたターゲット・プロセッサを通知する割込みが発 生する。 一実施形態では、各円形待ち行列のサイズは16Kバイト(4096ハンドル )から256Kバイト(65536ハンドル)までである。さらに、この実施形 態では、4つのすべての待ち行列は、同じサイズであり、隣接している。したが って、円形待ち行列によって必要とされるローカル・メモリの総量は、64Kバ イトから1Mバイトまでである。これらの待ち行列は、ローカル・メモリ206 内に常駐し、待ち行列の頭部ポインタおよび尾部ポインタは、MU210内のレ ジスタ内に常駐する。待ち行列サイズは、メッセージ・ユニット構成レジスタ( MUCR)内の待ち行列サイズ・フィールドによって決定される。MUCRの可 能な1つのフォーマットを表1に示す。また、この実施形態では、4つのすべて の待ち行列に対して1つのベース・アドレスがある。各待ち行列の開始アドレス は、待ち行列ベース・アドレスおよび待ち行列サイズ・フィールドに基づいてい る。ベース・アドレスは、これもMU210内に常駐する待ち行列ベース・アド レス・レジスタ(QBAR)内に記憶される。QBARの可能な1つのフォーマ ットを表2に示す。第6図から第9図に示す実施形態は、各待ち行列ごとに別個 のベース・アドレスを含んでいる。 第4図は、本発明の4つの円形待ち行列を示す。ローカル・メモリ206内に 常駐する2つのアウトバウンド待ち行列410および420と、2つのインバウ ンド待ち行列430および440がある。 ローカル・プロセッサ202は、アウトバウンド・ポスト待ち行列420の頭 部に書込みを行うことによってアウトバウンド・メッセージ422をポストする 。ホスト・プロセッサ201は、アウトバウンド・ポスト待ち行列420の尾部 の読取りを行うことによってアウトバウンド・ポスト待ち行列420からポスト ・メッセージを取り出す。 ホスト・プロセッサ201は、アウトバウンド・フリー待ち行列410の頭部 に書込みを行うことによってアウトバウンド・メッセージ・バッファ412を解 放する。ローカル・プロセッサ202は、アウトバウンド・フリー待ち行列41 0の尾部からフリー・メッセージ・バッファ414を読み取る。 ホスト・プロセッサまたはバス・エージエント201は、インバウンド・ポス ト待ち行列430の頭部に書込みを行うことによってインバウンド・ポスト待ち 行列430にインバウンド・メッセージ432をポストする。ローカル・プロセ ッサ202は、インバウンド・ポスト待ち行列430の尾部からこれらのポスト ・メッセージを読み取る。ホスト・プロセッサがインバウンド・ポスト待ち行列 430に書込みを行ったとき、ローカル・プロセッサ202に対して割込み43 6が発生する。 ローカル・プロセッサ202によってアウトバウンド・ポスト待ち行列420 に対してメッセージがポストされたとき、ホスト・プロセッサ201に対して割 込み426が発生する。ここでは、PCIバス仕様改訂2.0によって指定され ている割込みを使用する。 ローカル・プロセッサ202は、インバウンド・フリー待ち行列440の頭部 に書込みを行うことによってこの待ち行列440にフリー・メッセージ・バッフ ァ442を戻す。ホスト・プロセッサ/バス・エージェント201は、データ・ パス444を介してインバウンド・フリー待ち行列440の尾部から読取りを行 うことによってフリー・メッセージ・バッファを獲得する。 第5図は、アウトバウンド・フリー待ち行列510、アウトバウンド・ポスト 待ち行列520、インバウンド・ポスト待ち行列530、インバウンド・フリー 待ち行列540を示す。アウトバウンド・フリー待ち行列 アウトバウンド・フリー待ち行列(OFQ)510は、ローカル・プロセッサ 202が使用すべきバス・エージェント201によってそこに配置された(すな わち、解放された)エンプティ・メッセージ用のハンドルを保持する。ホスト・ プロセッサ201は、アウトバウンド・ポート516内のレジスタに書込みを行 うことによってOFQ510に対してメッセージ・バッファを解放する。OFQ 510は、ローカル・プロセッサ202によって待ち行列尾部から読み取られ、 ホスト・プロセッサ201によって待ち行列頭部に書き込まれる。頭部ポインタ (OFHP)512は、メッセージ・ユニット210によって維持される。アウ トバウンド・フリー待ち行列尾部ポインタ(OFTP)514は、ローカル・プ ロセッサ202上で動作しているソフトウェアによって維持される。 アウトバウンド待ち行列ポート516にアクセスするPCI書込みトランザク ションの場合、MU210は、メッセージ・ハンドル(すなわち、フリー・メッ セージ・バッファに対するアドレス)を、アウトバウンド・フリー頭部ポインタ ・レジスタ(OFHPR)926内に記憶された頭部ポインタ(OFHP)51 2によって示されたローカル・メモリ206内の位置に書き込む。ローカル・メ モリ・アドレスは、待ち行列ベース・アドレス・レジスタ+3*待ち行列サイズ +アウトバウンド・フリー頭部ポインタ・レジスタ(OFHPR)926である 。OFHPRの可能な1つのフォーマットを表3に示す。 アウトバウンド待ち行列ポート516に書き込まれたデータがローカル・メモ リ206に書き込まれたとき、MU210はOFHP512を増分する。 データがローカル・メモリ206に書き込まれるまでPCI書込みトランザク ションがMU210によって受け取られ、かつOFHP512が増分されたとき から、インバウンド待ち行列ポート516にアクセスしようと試みるPCIトラ ンザクションは、待ち状態を挿入することによって遅延される。待ち状態を挿入 している間にPCI待ち時間違反が発生した場合、外部PCIエージェント20 1に再試行が通知される。 ローカル・プロセッサ202は、アウトバウンド・フリー待ち行列尾部ポイン タ(OFTP)514によって示されたローカル・メモリ位置を読み取ることに よってOFQ510からメッセージ・バッファ・ハンドルを取り出す。ローカル ・メモリ・アドレスは、待ち行列ベース・アドレス・レジスタ+3*待ち行列サ イズ+アウトバウンド・フリー尾部ポインタ・レジスタ(OFTPR)938で ある。OFTPRの可能な1つのフォーマットを表4に示す。次いで、ローカル ・プロセッサ202は、(第9A図に示される)アウトバウンド・フリー尾部ポ インタ・レジスタ(OFTPR)938内のOFTP514を増分する。 アウトバウンド・ポスト待ち行列 アウトバウンド・ポスト待ち行列(OPQ)520は、ホスト・プロセッサ2 01が取り出し、処理するために、ローカル・プロセッサ202によってそこに 配置されたポスト・メッセージのハンドルを格納している。ホスト・プロセッサ 201は、アウトバウンド待ち行列ポート516内のレジスタの読取りを行うこ とによってOPQ520からメッセージを取り出す。ローカル・プロセッサ20 2は、待ち行列頭部に書込みを行うことによってOPQ520にメッセージを追 加する。頭部ポインタ(OPHP)522は、ローカル・プロセッサ202によ って維持される。尾部ポインタ(OPTP)524は、メッセージ・ユニット2 10によって維持される。 アウトバウンド待ち行列ポート516にアクセスするPCI読取りトランザク ションの場合、MU210は、OPTP524によって示されたローカル・メモ リ位置においてデータをプリフェッチする。ローカル・メモリ・アドレスは、待 ち行列ベース・アドレス・レジスタ+2*待ち行列サイズ+アウトバウンド・ポ スト尾部ポインタ・レジスタ(OPTPR)826(第8A図に示す)である。 OPQ520がエンプティでない(すなわち、頭部ポインタ522と尾部ポイン タ524が等しくない)場合、メッセージ・ハンドルが要求側プロセッサ201 に供給される。OPQ520がエンプティである(すなわち、頭部ポインタ52 2と尾部ポインタ524が等しい)場合、−1の値(FFFF.FFFFH)が 要求側プロセッサ201に供給される。OPQ520待ち行列がエンプティでな く、かつMU210が尾部におけるデータのプリフェッチに成功した場合、MU 210は、OPTPR826内の尾部ポインタ(OPTR)524を増分する。 上述のように、プリフェッチ機構は、頭部ポインタ522と尾部ポインタ52 4が等しい(すなわち、OPQ520がエンプティである)場合、−1の値(F FFF.FFFFH)を(以下で第8A図に関して説明する)プリフェッチ・レ ジスタ806内にロードする。メッセージがOPQ520に追加され、それがエ ンプティでなくなったときにORR806を更新するために、MU210内のプ リフェッチ機構は、ORR806が(FFFF.FFFFH)を含んでいる場合 、自動的にプリフェッチを開始し、アウトバウンド・ポスト頭部ポインタ・レジ スタ(OPHPR)422がローカル・プロセッサ202によって書き込まれる 。OPHPRの可能な1つのフォーマットを表5に示す。ローカル・プロセッサ 202は、ローカル・プロセッサ202がOPQ520にメッセージを追加した ときOPHPR422を更新する。 プリフェッチは、外部バス・エージェント201から見てアトミックに見えな ければならない。プリフェッチが開始されたとき、アウトバウンド待ち行列ポー ト516内の(以下で第8A図に関して説明する)アウトバウンド検索レジスタ 806にアクセスしようと試みるPCIトランザクションは、プリフェッチが完 了するまで待ち状態を挿入することによって遅延される。待ち状態を挿入してい る間にバス待ち時間違反が発生した場合、外部バス・エージェント201に再試 行信号が通知される。 OPHP522がOPTP524に等しくない場合、ホスト・プロセッサ20 1に対してPCI割込みが発生する。OPHP522がOPTP524に等しい 場合、割込みは発生しない。アウトバウンド・ドーベル・レジスタ内のアウトバ ウンド・ポスト待ち行列割込みビットは、OPHPR838の値とOPTPR8 28の値との比較の状態を示す。頭部ポインタ522と尾部ポインタ524が等 しい場合、割込みはクリアされる。これは、ホスト・プロセッサ201がOPQ 520をエンプティにするために十分な待ち行列エントリを読み取る場合に起こ る。割込みは、ソフトウェアによって制御されるアウトバウンド・ドーベル・マ スク・レジスタによってマスクされる。 ローカル・プロセッサ202は、頭部ポインタ(OPHP)522によって示 されたローカル・メモリ位置にデータを書き込むことによってメッセージをOP Q520内に入れる。ローカル・メモリ・アドレスは、待ち行列ベース・アドレ ス・レジスタ+アウトバウンド・ポスト頭部ポインタ・レジスタ838である。 OPTPRの可能な1つのフォーマットを表6に示す。次いで、ローカル・プロ セッサ202は、アウトバウンド・ポスト頭部ポインタ・レジスタ838内のO PHP522を増分する。 インバウンド・ポスト待ち行列 インバウンド・ポスト待ち行列(IPQ)530は、ローカル・プロセッサ2 02が処理するために、バス・エージェント201によってそこに配置されたポ スト・メッセージのハンドルを保持する。ホスト・プロセッサ201またはバス ・エージェントは、インバウンド待ち行列ポート536内のレジスタに書込みを 行うことによってIPQ530にメッセージをポストする。IPQ530は、ロ ーカル・プロセッサ202によって待ち行列尾部から読み取られ、外部バス・エ ージェント201によって待ち行列頭部に書き込まれる。尾部ポインタ(IPT P)534は、ローカル・プロセッサ202上で動作しているソフトウェアによ って維持される。頭部ポインタ(IPHP)532は、MU210によって維持 される。 インバウンド待ち行列ポート(IQP)536にアクセスするPCI書込みト ランザクションの場合、MU210は、(第7A図に示される)インバウンド・ ポスト頭部ポインタ・レジスタ(IPHPR)724内に記憶されたIPHP5 32によって示されたローカル・メモリ位置にデータを書き込む。ローカル・メ モリ・アドレスは、待ち行列ベース・アドレス・レジスタ+待ち行列サイズ+イ ンバウンド・ポスト頭部ポインタ・レジスタ(IPHPR)724である。IP HPRの可能な1つのフォーマットを表7に示す。IPTPRの可能な1つのフ ォーマットを表8に示す。 インバウンド待ち行列ポート536に書き込まれたデータがローカル・メモリ 206に書き込まれたとき、MU210はIPHPR724を増分する。データ がローカル・メモリ206に書き込まれ、IPHPR724が増分されたとき、 MU210は、ローカル・プロセッサ202に対して割込みを発生する。この割 込みは、インバウンド・ドーベル・レジスタのインバウンド・ポスト待ち行列割 込みビットを設定することによって記録される。割込みは、ソフトウェアによっ て制御されるインバウンド・ドーベル・マスク・レジスタによってマスクされる 。 インバウンド・フリー待ち行列 インバウンド・フリー待ち行列540は、バス・エージェント201が使用す るために、ローカル・プロセッサ202によってそこに配置されたエンプティ・ メッセージ・バッファのハンドルを保持する。ホスト・プロセッサ201は、イ ンバウンド待ち行列ポート536内のレジスタの読取りを行うことによってIF Q540からメッセージ・バッファを割り振られる。IFQ540は、外部バス ・エージェント201によって待ち行列尾部から読み取られ、ローカル・プロセ ッサ202によって待ち行列頭部に書き込まれる。頭部ポインタ(IPHP)5 42は、ローカル・プロセッサ202上で動作しているソフトウェアによって維 持される。尾部ポインタ(IFTP)544は、MU210によって維持される 。 インバウンド待ち行列ポート(IQP)536にアクセスするPCI読取りト ランザクションの場合、MU210は、IFTP544によって示されたローカ ル・メモリ位置においてデータをプリフェッチする。ローカル・メモリ・アドレ スは、尾部ポインタを記憶する待ち行列ベース・アドレス・レジスタ+インバウ ンド・フリー尾部ポインタ・レジスタ(IFTPR)626である。IFTPR の可能な1つのフォーマットを表10に示す。IFQ540がエンプティでない (すなわち、頭部ポインタと尾部ポインタが等しくない)場合、ホスト・プロセ ッサまたはバス・エージェントによる次のアクセスのためにIFTP544によ って示されたデータが供給される。IFQ540がエンプティである(すなわち 、頭部ポインタと尾部ポインタが等しい)場合、−1の値(FFFF.FFFF H)が要求側ホスト・プロセッサまたはバス・エージェントに供給される。IF Q540がエンプティでなく、かつMU210がIFTP544によって示され たデータをプリフェッチした場合、MU210は、インバウンド・フリー尾部ポ インタ・レジスタ(IFTPR)626内のポインタの値を増分する(第6A図 に示す)。 PCI読取りアクセスに対する待ち時間を短縮するために、MU210は、I FQ540へのアクセスを予測するプリフェッチ機構を実施する。MU210は 、IFQ540の尾部からデータをプリフェッチし、それを内部プリフェッチ・ レジスタ内にロードする。PCI読取りアクセスが行われたとき、データは、プ リフェッチ・レジスタから直接読み取られる。 プリフェッチ機構は、頭部ポインタと尾部ポインタが等しい(すなわち、IF Q540がエンプティである)場合、−1の値(FFFF.FFFFH)をプリ フェッチ・レジスタ806内にロードする。メッセージがIFQ540に追加さ れ、それがエンプティでなくなったときにプリフェッチ・レジスタを更新するた めに、プリフェッチ機構は、プリフェッチ・レジスタがFFFF.FFFFHを 含んでいる場合、自動的にプリフェッチを開始し、インバウンド・フリー頭部ポ インタ・レジスタ(IFHPR)638が書き込まれる。IFHPRの可能な1 つのフォーマットを表9に示す。ローカル・プロセッサ202上で動作している ソフトウェアは、IFHP542がIFQ540にメッセージを追加したときに IFHP542を更新する。 プリフェッチは、外部バス・エージェント201から見てアトミックに見えな ければならない。プリフェッチが開始されたとき、インバウンド待ち行列ポート 536内のインバウンド・フリー・レジスタにアクセスしようと試みるPCIト ランザクションは、プリフェッチが完了するまで待ち状態を挿入することによっ て遅延される。待ち状態を挿入している間にPCI待ち時間違反が発生した場合 、MU210によって外部バス・エージェント201に再試行が通知される。 ローカル・プロセッサ202は、頭部ポインタ(IFHP)542によって示 されたローカル・メモリ位置にデータを書き込むことによってメッセージをIF Q540内に入れる。ローカル・メモリ・アドレスは、待ち行列ベース・アドレ ス・レジスタ+インバウンド・フリー頭部ポインタ・レジスタ(IFHPR)6 38である。次いで、ローカル・プロセッサ202上で動作しているソフトウェ アは、IFHPR638を増分する。 インバウンド・フリー表 第6A図は、本発明がどのようにしてPCIバス上のバス・エージェントにフ リー・メッセージ・バッファを割り振るのかを示す。MU210内で実現される 。データは、ローカル・メモリ206内に配置されたインバウンド・フリー待ち 行列(IFQ)540からローカル・データ・バスを介してインバウンド・フリ ー・レジスタ(IFR)606まで移動する。このコンテキストでは、データは 、特にメッセージ・バッファのアドレス(すなわち、メッセージ・ハンドル)を 示す。その後、データは、インバウンド・フリー・レジスタ606からデータパ ス608を介してATU218まで移動し、その後データパス610を介してP CIバス208上のバス・エージェントまで移動する。 MU210は、いくつかの制御信号を発生し、受信するフリー・メッセージ・ バッファを割り振るインバウンド・フリー状態機械612を含んでいる。インバ ウンド・フリー状態機械612の状態図について、第6B図に関して詳細に説明 する。 IFQ602にメッセージ・バッファを要求するために、バス・エージェント は、PCIバス208およびデータパス610を介して読取りトランザクション をATU218に送る。インバウンド・フリー・レジスタ606のアドレスを指 定する読取りトランザクションは、ATU218によって検出される。ATU2 18が、バス・エージェントがインバウンド・フリー・レジスタ606を読み取 ることを望んでいることを検出した後、ATUは、IFR_Ready信号61 4の状態をテストする。IFR_Ready信号614がアサートされた場合、 ATUは、パス608を介してIFR606内のデータをATU218に供給す るPCIトランザクションを完了し、状態機械612に対してRead_Inb oound_Free信号616を発生する。 IFR_Ready信号614がアサート解除された場合(すなわち、状態機 械612が準備できていない場合)、ATU218は、待ち状態を挿入し、IF R_Ready信号614がアサートされるまでRead_IFR信号616を 送らない。IFR_Ready信号614は、IFR606内に状態データがあ る(すなわち、状態機械612がまだIFR606へのデータのプリフェッチを 完了していない)場合、アサート解除される。 状態機械612は、Read_IFR信号616を受信した後、ローカル・バ ス・アービタ240にMemory_Read_Request信号618を送 り、IFR_Ready信号614をアサート解除する。許可信号632に基づ いて、MU210は、単にIFQ602の適切な尾部アドレスをローカル・アド レス・バス630にアサートする。次いで、データがローカル・データ・バス6 04を介してローカル・メモリ206からIFR606に転送される(すなわち 、IFQ602の尾部において値を読み取る)。MU210は、IFQ602の 適切な尾部アドレスを計算する加算器624を含んでいる。加算器624は、イ ンバウンド・フリー尾部ポインタ・レジスタ(IFTPR)626およびインバ ウンド・フリーベースレジスタ(IFBR)628の内容の合計を発生する。 IFQ540の尾部ポインタによって示されたデータがローカル・データ・バ ス604上にきた後、状態機械612は、ローカル・データ・バス604上のデ ータをIFQ606内にラッチするためにラッチ信号634を送り、増分信号6 44をIFTPR626に送る。したがって、次の使用できるメッセージ・バッ ファのプリフェッチが行われた。 MU210はまた、インバウンド・フリー頭部ポインタ・レジスタ(IFHP R)638内の値とインバウンド・フリー尾部ポインタ・レジスタ(IFTPR )626内の値とを比較するコンパレータ636を含んでいる。これら2つの値 が等しい場合、コンパレータ636は、エンプティ信号640を発生する(すな わち、待ち行列内にフリー・メッセージ・バッファがない)。このエンプティ信 号 640は、状態機械612に送られ、状態機械612にプリセット信号をアサー トさせる。プリセット信号642により、IFR606の内容がエンプティ指示 に対して予約された(すなわち、有効なバッファアドレスでない)所定の値に設 定される。バス・エージェントは、IFR606を読み取る場合、IFR606 内に記憶されたプリフェッチされたデータか、またはIFQ602がエンプティ であることを示すプリセット値に直ちにアクセスする 第6B図は、インバウンド・フリー状態機械612の状態図を示す。状態機械 612は、エンプティ状態650、プリフェッチ状態652、プライム状態65 6の3つの状態を有する。状態機械612は、エンプティ信号654がアサート 解除されるまでエンプティ状態650にある。not_Empty信号は、状態 機械612をエンプティ状態650からプリフェッチ状態652に遷移させ、状 態機械612は、Memory_Read_Request信号618を発生し 、IFR_Ready信号614をアサート解除する。 状態機械612は、許可信号632に基づいてプリフェッチ状態652からプ ライム状態656に遷移する。許可信号632を受信すると、状態機械612は 、Latch_IFR信号634、Increment_IFTPR信号644 を出力し、IFR_Ready信号614をアサートする。状態機械612は、 Read_IFR信号616が受信されたとき、プライム状態656からプリフ ェッチ状態652に遷移し、エンプティ信号654はアサートされない。この遷 移はまた、Memory_Read_Request信号618を発生し、IF R_Ready信号614をアサートする。 状態機械612は、Read_IFR信号616が受信されたとき、プライム 状態656からエンプティ状態650に遷移し、エンプティ信号640はアサー トされる。この遷移は、プリセット信号642を発生させる。 第7A図は、本発明がどのようにしてバス・エージェントによって生成された メッセージを、ローカル・メモリ206内に配置されたインバウンド・ポスト待 ち行列(IPQ)530内にポストするかを示す。 バス・エージェントがインバウンド・ポスト・レジスタ(IPR)706に書 込みを行いたい場合、データは、PCIバス208からデータパス702を介し てATU218まで進み、次いでデータパス704を介してIPR706に進む 。データは、IPR706内にラッチされた後、ローカル・データ・バス604 を介してローカル・メモリ206内のIPQ530内に転送される。 ATU218は、IPR_Ready信号716の状態をテストする。IPR _Ready信号716がアサートされた場合、ATU218は、データをIP R706に供給し、状態機械712に対してWrite_IPR信号718を発 生することによってPCIトランザクションを完了する。 IPR_Ready信号716がアサートされない場合、ATU218は、待 ち状態を挿入し、IPR_Ready信号716がアサートされたときPCIト ランザクションを完了する。要求側プロセスは、バスの制御権を保持し、PCI 待ち時間ルールが違反されなければPCIトランザクションは完了する。 ATU218はまた、IPR_Retry信号714の状態をテストする。I PR_Retry信号714がアサートされた場合、PCIトランザクションは 完了せず、要求側プロセスは、再試行を通知され、バスを解放し後で再度試行す る。 MU210のインバウンド・ポスト状態機械712について、第7B図に示さ れる状態図によって詳細に説明する。状態機械712は、アイドル状態750、 ポスト状態752、フル状態754の3つの状態を有する。状態機械712は、 Write_Inbound_Post信号718がATU218によってアサ ートされたときアイドル状態750からポスト状態752に遷移する。Writ e_Inbound_Post信号が状態機械712によって受け取られたとき 、状態機械712は、Memory_Write_Request信号720を 発生し、IPR_Ready信号716をアサート解除する。状態機械712は 、状態機械712がローカル・バス・アービタ240から許可信号728を受信 したときポスト状態752からアイドル状態750に戻る。許可信号728を受 信し、IPRデータ604をメモリに書き込んだとき、状態機械712は、イン バウンド・ポスト頭部ポインタ・レジスタ(IPHPR)724に対して増分信 号740を発生し、またIPR_Ready信号716をアサートする。 状態機械712は、コンパレータ734からフル信号738を受信したときア イドル状態750からフル状態754に遷移する。フル信号738は、インバウ ンド・ポスト尾部ポインタ・レジスタ(IPTPR)730およびインバウンド ・ポスト頭部ポインタ・レジスタ(IPHPR)724の内容がインバウンド・ ポスト待ち行列(IPQ)530がフルであることを示す場合、コンパレータ7 34によって生成される。フル信号738を受信したとき、状態機械712は、 IPR_Retry信号714をATU218にアサートする。 状態機械712は、フル信号756がフル信号756(すなわち、not_F ull)にアサート解除されたときフル状態754からアイドル状態750に遷 移する。not_Full信号を受信したとき、状態機械712は、IPR_R etry信号714をアサート解除する。 コンパレータ734はまた、入出力プロセッサに対してローカル割込みを発生 する割込み発生論理(図示せず)に対してnot_Empty信号736を発生 する。not_Empty信号736を受信したときにローカル割込みを発生す る論理は、当技術分野において周知である。この論理はまた、割込みレジスタを 含んでおり、またソフトウェアによって制御され、割込みを選択的にマスクする マスクレジスタを含んでいる。 増分信号740は、IPHPR724に送られ、インバウンド・ポスト頭部ポ インタを増分する。加算器722は、IPHPR724の値725およびIPB R726の値727を使用して、新しいインバウンド・ポスト頭部ポインタ72 3を計算する。このアドレス723は、ローカル・バス(すなわち、ローカル・ アドレス・バス630)を介してローカル・メモリにアクセスするためにメモリ ・コントローラ205に送られる。 前に説明したように、MU210は、ローカル・アドレス・バス630上のア ドレス723をアサートし、IPR706内でIPQ530の頭部にラッチされ たデータ(すなわち、メッセージ・バッファのアドレス)の転送を可能にする。 第8A図は、アウトバウンド検索状態機械812、および本発明がどのように してホスト・プロセッサまたはバス・エージェントがアウトバウンド・ポスト待 ち行列520(OPQ)からポスト・メッセージを取り出すことを可能にするか を示す。ホスト・プロセッサまたはバス・エージェントがポスト・メッセージ・ ハンドルを取り出したとき、データ(すなわち、メッセージ・バッファのアドレ ス)は、ローカル・データ・バス604を介してローカル・メモリ206内のO PQ520からアウトバウンド検索レジスタ(ORR)806に進む。次いで、 データは、ORR806からデータパス808を介してATU218のアウトバ ウンド部分に送られる。次いで、データは、データパス810およびPCIバス 208を介してそれぞれホスト・プロセッサまたはバス・エージェントに送られ る。状態機械812は、ORR806内の状態データを示すためにORR_Re ady814をアサート解除する。ORR_Ready信号814がアサート解 除されたとき、ATU218は、ORR_Ready信号814がアサートされ るまで待ち状態を挿入する。これは、ORR806が有効なデータであることを 示す。 MU210のアウトバウンド検索状態機械812について、第8B図に示され る状態図によって詳細に説明する。アウトバウンド検索状態機械812は、エン プティ状態850、プリフェッチ状態852、プライム状態856の3つの状態 を有する。アウトバウンド検索状態機械812は、エンプティ信号840がアサ ート解除されたときエンプティ状態850からプリフェッチ状態852に遷移す る。それに応答して、アウトバウンド検索状態機械812は、Memory_R ead_Request818をローカル・バスアービトレーションユニット2 40に対してアサートし、許可信号832を待っている間、ORR_Ready 信号814をアサート解除する。許可信号832を待っている間、加算器824 は、次のメッセージのアドレス(すなわち、尾部ポインタ)を計算し、このアド レスをローカル・アドレス・バス630上に配置する。 状態機械812は、許可信号832に基づいてプリフェッチ状態852からプ ライム状態856に遷移する。メモリ・コントローラ205は、アドレス825 を使用し、OPQ520から適切なメッセージ・ハンドルを読み取る。このメッ セージ・ハンドル(すなわち、ポインタ)は、ローカル・アドレス・バス604 上に配置され、ORR806に転送される。次いで、状態機械812は、OPQ 520からデータをORR806内にラッチするラッチ_ORR834を発生し 、またOPTPR826内に記憶されたOPQ520の尾部ポインタを増分する I ncrement_OFTPR信号844を発生する。このプリフェッチが完了 し、新しいデータがORR806内にラッチされた後、状態機械812は、PC Iバス208からの他のトランザクションを完了する準備ができていることをA TU218に通知する前にORR_Ready信号814をアサートする。 状態機械812は、Read_ORP信号816が発生したとき、プライム状 態856からプリフェッチ状態852に遷移し、エンプティ信号840はアサー トされない。それに応答して、状態機械812は、Memory_Read_R equest信号818をローカル・バス・アービタ240に対してアサートし 、ATU218に対してORR_Ready信号814をアサート解除する。そ の結果、後のトランザクションは、プリフェッチが完了するまでORR806の 内容を読み取らない。 状態機械812は、エンプティ信号840がアサートされたときにアサートさ れたRead_ORP信号を検知したときにプライム状態856からエンプティ 状態850に遷移する。それに応答して、状態機械812は、プリセット信号8 42をアサートする。プリセット信号842により、OPQ520に読取りを要 求しているトランザクションにOPQ520がエンプティであることが通知され るようにORR806の内容がエンプティ指示に対して予約された値に設定され る。 コンパレータ836がOPHPR838とOPTPR826の内容を比較し、 各値が等しい場合、エンプティ信号840はアサートされる。not_Empt y OPQ520(すなわち、not_Empty)は、ホスト・プロセッサ2 01が処理するために保留されているメッセージがあることを示す。本発明は、 PCIバス仕様リリース2.0に指定されている割込み線を介してホスト・プロ セッサ201に対して割込みを発生する論理(図示せず)を含んでいる。 第9A図および第9B図は、アウトバウンド解放状態機械912を示す。ホス ト・プロセッサ201は、メッセージを処理した後、データ・バス904を通っ てPCIバス208を介してフリー・メッセージ・バッファポインタをATU2 18に戻し、アウトバウンド解放レジスタ(ORLSR)906内にラッチされ る。次いで、フリー・メッセージ・バッファ・ハンドルは、アウトバウンド解放 レジスタORLSR906からローカル・データ・バス604を介してアウトバ ウンド・フリー待ち行列(OFQ)510に送られる。フリー・メッセージ・バ ッファを解放するために、ホスト・プロセッサ201は、単に1つのバストラン ザクションサイクル中にそのフリー・メッセージ・バッファのアドレスをORL SR906に書き込む。 ATU218は、ORLSR_Retry信号916およびORLSR_Re try信号914の状態をテストする。ORLSR_Retry信号914がア サート解除された場合、PCIトランザクション(すなわち、ORLSR906 への書込み)は完了しない。要求側プロセスは再試行を通知され、要求側プロセ スは、バスの制御権を解放し、後で再度試行する。ORLSR_Retry信号 916がアサート解除された場合、ATU218は、ORLSR_Retry信 号916がアサートされるまで待ち状態を挿入する。ORLSR_Retry信 号916がアサートされたとき、ATU218は、状態機械912に対してWr ite_ORLSR信号918を発生し、データをORLSR906内にラッチ する。 第9B図は、アウトバウンド解放状態機械912の状態図を示す。状態機械9 12は、フル状態954、アイドル状態950、ポスト状態952の3つの状態 を有する。状態機械912は、フル信号940がコンパレータ936によってア サートされたときアイドル状態950からフル状態954に遷移する。このフル 信号940に応答して、状態機械912は、ATU218に対してORLSR_ Retry信号914をアサートする。ORLSR_Retry信号914が発 生したとき、ORLSR906に対する書込みトランザクションを示すプロセス は、後で再度試行するよう通知される。 状態機械912は、フル信号940がアサート解除されたときフル状態954 からアイドル状態950に遷移する。アウトバウンド・フリー待ち行列OFQ5 10がフルでない場合、状態機械912は、ORLSR_Retry信号914 をアサート解除する(すなわち、OFQ510内に追加のフリー・メッセージ・ ハンドル用の空きがある)。 状態機械912は、ATU218からWrite_ORLSR信号918を受 信したときアイドル状態950からポスト状態952に遷移する。Write_ ORLSR信号918はまた、フリー・メッセージ・ハンドルをORLSR90 6内にラッチする役目をする。Write_ORLSR信号918がアサートさ れたことに応答して、状態機械912は、ローカル・バス・アービタ240に対 してMemory_Write_Request信号918をアサートする。ア ービタからの許可信号932を待つ。次のフリー・メッセージ・ハンドルを書き 込むべきOFQ510内の次の位置を計算する。状態機械912はまた、後のト ランザクションがORLSR906内にラッチされているデータを上書きするの を防ぐためにORLSR_Retry信号916をアサート解除する。 状態機械912は、ローカル・バス・アービタ240から許可信号932を受 信したときポスト状態952からアイドル状態950に遷移する。それに応答し て、アウトバウンド解放状態機械912は、Increment_OFHPR信 号944を介してOFHPR926内の頭部ポインタを増分する。状態機械91 2はまた、すでにORLSR906の内容を記憶していること、および次のフリ ー・メッセージ・ハンドルを記憶すべきOFQアドレスを計算したことをATU 218に示すORLSR_作業可能信号916をアサートし、ORLSR906 への次の書込みの準備ができる。 要約すると、ホスト・プロセッサは、そのハンドルをORLSR906に書き 込むことによってOFQ510に対してフリー・メッセージ・バッファを解放す る。OFQ510がフルである場合、要求側プロセスは、後で再試行するよう通 知される。OFQ510がフルでない場合、フリー・メッセージ・バッファのハ ンドルはORLSR906内にラッチされる。次いで、状態機械912は、ロー カル・バスへのアクセス権を得るためにローカル・バス・アービタ240からの 許可信号932を待つ。ローカル・バスの制御権が付与された後、状態機械91 2は、前に計算した頭部ポインタ/アドレスによって示された位置においてOR LSR906内にラッチされたデータをOFQ510に転送する。 以上、遠隔プロセスがセマフォの使用またはバスのロックなしにメッセージ・ バッファを割り振り、次いでメッセージ・バッファを作業待ち行列にポストする ことを可能にする方法および装置について説明した。 さらに、作業待ち行列からメッセージを取り出し、メッセージがホスト・プロ セッサによって処理された後でメッセージをフリー待ち行列に解放する方法およ び装置について説明した。 本発明はまた、スケーラビリティ、フレキシビリティ、および他のプラットフ ォームとの互換性を提供する。例えば、上述のように、インバウンドメッセージ 待ち行列を含むすべてのプラットフォームは、プロセッサ間メッセージを容易に 送ることができる。インバウンドメッセージ待ち行列を実施しない他のプラット フォームとの互換性については、プラットフォームのハードウェアを修正するこ となくアウトバウンド・メッセージ待ち行列がそのプラットフォームに同等の機 能を供給する。さらに、本発明は、他のプロセッサがコンピュータシステム内に 存在することを明確に知ることなく、他のプラットフォームが1つのプラットフ ォームのインバウンド待ち行列を同時に使用できるという抽象を可能にする。 したがって、本発明は、非対称マルチプロセッサ・システム内のプロセッサに 対するハードウェア修正を必要とすることなくプロセッサ間で非常に効率的な形 でメッセージを直接送る方法および装置を提供する。 以上、本発明について、その特定の例示的な実施形態に関して説明した。しか しながら、下記の請求の範囲に記載されている本発明のより広い精神および範囲 から逸脱することなく本発明に様々な修正および変更を加えることができること が明らかであろう。したがって、明細書および図面は、限定的なものではなく、 例示的なものと考えられたい。
【手続補正書】特許法第184条の8第1項 【提出日】1997年10月20日 【補正内容】 補正請求の範囲 1.ローカル・バスを介してローカル・プロセッサとメモリとに結合され、かつ 第2のバスを介してホスト・プロセッサとメモリとに結合されたメッセージ通信 装置において、 a)前記ホスト・プロセッサによって内部に配置された、前記メッセージ通信 装置外部のバス・エージェントによって使用される空のメッセージ・バッファの ハンドルを記憶するインバウンド・フリー記憶手段と、 b)インバウンド・フリー記憶手段内のデータを操作するためにインバウンド ・フリー記憶手段に結合されたインバウンド・フリー回路手段と、 c)前記通信装置外部のバス・エージェントによって内部に配置された、前記 ホスト・プロセッサによる処理のためにポストされたメッセージのハンドルを記 憶するインバウンド・ポスト記憶手段と、 d)アウトバウンド・フリー記憶手段内のデータを操作するためにインバウン ド・ポスト記憶手段に結合されたインバウンド・ポスト回路手段と を備えている装置。 2.a)前記ローカル・プロセッサによって内部に配置された、前記ホスト・プ ロセッサによる処理のためにポストされたメッセージのハンドルを記憶するアウ トバウンド検索記憶手段と、 b)アウトバウンド・ポスト記憶手段内のデータを操作するためにアウトバウ ンド検索記憶手段に結合されたアウトバウンド検索回路手段と、 c)前記メッセージ通信手段外部のバス・エージェントによって内部に配置さ れた、前記ホスト・プロセッサによって使用される空のメッセージのハンドルを 記憶するアウトバウンド解放記憶手段と、 d)アウトバウンド・フリー記憶手段内のデータを操作するためにアウトバウ ンド解放記憶手段に結合されたアウトバウンド解放回路手段と をさらに備えている請求項1に記載のメッセージ通信装置。 3.インバウンド・フリー回路手段によるデータに対する操作が、インバウンド ・フリー記憶手段が空でない場合に、メモリに記憶されているインバウンド・フ リー記憶手段から情報をプリフェッチし、インバウンド記憶手段が空の場合に、 インバウンド・フリー記憶手段に所定の値をロードし、かつプリフェッチ操作が 完了した場合に、ホスト・プロセッサがインバウンド・フリー記憶手段を読み取 ることを可能とすることをさらに含んでおり、 インバウンド・フリー回路手段によるデータに対する操作が、インバウンド・ ポスト記憶手段がいっぱいであるかどうかを検出し、インバウンド・ポスト記憶 手段がいっぱいである場合に、再試行信号をホスト・プロセッサに返し、インバ ウンド・ポスト記憶手段がいっぱいではなく、かつインバウンド・ポスト記憶手 段に記憶されている現在値がインバウンド・ポスト記憶手段に記憶されている場 合に、ホスト・プロセッサがインバウンド・ポスト記憶手段に書込みを行うこと を可能とすることをさらに含んでいる 請求項1に記載のメッセージ通信装置。 4.アウトバウンド解放回路手段によるデータに対する操作が、アウトバウンド ・ポスト記憶手段が空でない場合に、アウトバウンド・ポスト記憶手段からデー タをプリフェッチし、アウトバウンド・ポスト記憶手段が空の場合に、アウトバ ウンド解放記憶手段に所定の値をロードし、かつプリフェッチが完了した場合に 、ホスト・プロセッサがアウトバウンド解放記憶手段を読み取ることを可能とす ることをさらに含んでおり、 アウトバウンド解放回路手段によるデータに対する操作が、アウトバウンド・ フリー記憶手段がいっぱいであるかどうかを検出し、アウトバウンド・フリー記 憶手段がいっぱいである場合に、再試行信号をホスト・プロセッサに返し、アウ トバウンド・フリー記憶手段がいっぱいではなく、かつアウトバウンド解放記憶 手段に記憶されている現在値がアウトバウンド・フリー記憶手段に記憶されてい る場合に、ホスト・プロセッサがアウトバウンド解放記憶手段に書込みを行うこ とを可能とすることをさらに含んでいる 請求項2に記載のメッセージ通信装置。 5.第2のバスがPCIバスである請求項2に記載のメッセージ通信装置。 6.記憶手段がレジスタである請求項2に記載のメッセージ通信装置。 7.1回のバス・トランザクション時に、尾部ポインタと頭部ポインタとによっ て定義されている、アウトバウンド検索レジスタに記憶されたアウトバウンド・ ポスト待ち行列からメッセージ・ハンドルをホスト・プロセッサが検索すること を可能とする方法において、 a)メッセージ・ハンドルがアウトバウンド検索レジスタに記憶されている場 合に、メッセージ・ハンドルをホスト・プロセッサに返すステップと、 a1)待ち行列が空であるかどうかをチェックするステップと、 a2)待ち行列が空の場合に、アウトバウンド検索レジスタに現在値を記憶し て、待ち行列が空であることを示すステップと、 a3)待ち行列が空でない場合に、待ち行列から次のメッセージ・ハンドルを プリフェッチして、次のメッセージ・ハンドルをアウトバウンド検索レジスタに ロードするステップと、 b)そうでない場合には、アウトバウンド検索レジスタに記憶されている現在 値をホスト・プロセッサに返して、待ち行列が空であることを示すステップと を備えている方法。 8.次のメッセージ・ハンドルをプリフェッチするステップが 待ち行列の尾部ポインタを増分させ、 待ち行列からデータを読み取り、 データをプリフェッチ・レジスタにラッチする ことを含んでいる請求項7に記載の方法。 9.1回のバス・トランザクション時に、尾部ポインタと頭部ポインタとによっ て定義されている待ち行列に対してホスト・プロセッサがフリー・メッセージ・ ハンドルを解放することを可能とする方法において、 a)待ち行列がいっぱいであるかどうかを検出するステップと、 b)待ち行列がいっぱいでない場合に、 b1)フリー・メッセージをアウトバウンド解放レジスタに記憶するステップ と、 b2)ローカル・バスにアクセスするようローカル・バス・アービタに通知を 行い、頭部ポインタを事前計算するステップと、 b3)ローカル・バスにアクセスした際に、レジスタ内のフリー・メッセージ を事前計算された頭部ポインタによってポイントされたロケーションにある待ち 行列に対して解放するステップと、 c)待ち行列がいっぱいの場合に、ホスト・プロセッサに後で再試行するよう 通知するステップと を備えている方法。 10.1回のバス・トランザクション時に、尾部ポインタと頭部ポインタとに よって定義されている、インバウンド・フリー・レジスタに記憶されたインバウ ンド・フリー待ち行列にホスト・プロセッサがメッセージ・ハンドルを割り振る ことを可能とする方法において、 a)メッセージ・ハンドルがインバウンド・フリー・レジスタに記憶されてい る場合に、メッセージ・ハンドルをホスト・プロセッサに返すステップと、 a1)待ち行列が空であるかどうかをチェックするステップと、 a2)待ち行列が空の場合に、インバウンド・フリー・レジスタにプリセット 値を記憶して、待ち行列が空であることを示すステップと、 a3)待ち行列が空でない場合に、待ち行列から次のメッセージ・ハンドルを プリフェッチして、次のメッセージ・ハンドルをインバウンド・フリー・レジス タにロードするステップと、 b)そうでない場合には、インバウンド・フリー・レジスタに記憶されている プリセット値をホスト・プロセッサに返して、待ち行列が空であることを示すス テップと を備えている方法。 11.次のメッセージ・ハンドルをプリフェッチするステップが 待ち行列の尾部ポインタを増分させ、 メモリからデータを読み取り、 データをプリフェッチ・レジスタにラッチする ことを含んでいる請求項10に記載の方法。 12.1回のバス・トランザクション時に、尾部ポインタ頭部ポインタとによっ て定義されている待ち行列に対してホスト・プロセッサがフリー・メッセージ・ ハンドルを解放することを可能とする方法において、 a)待ち行列がいっぱいであるかどうかを検出するステップと、 b)待ち行列がいっぱいでない場合に、 b1)フリー・メッセージをアウトバウンド解放レジスタに記憶するステップ と、 b2)ローカル・バスにアクセスするようローカル・バス・アービタに通知を 行い、頭部ポインタを事前計算するステップと、 b3)ローカル・バスにアクセスした際に、レジスタ内のフリー・メッセージ を事前計算された頭部ポインタによってポイントされたロケーションにある待ち 行列に対して解放するステップと、 c)待ち行列がいっぱいの場合に、ホスト・プロセッサに後で再試行するよう 通知するステップと を備えている方法。
───────────────────────────────────────────────────── フロントページの続き (81)指定国 EP(AT,BE,CH,DE, DK,ES,FI,FR,GB,GR,IE,IT,L U,MC,NL,PT,SE),OA(BF,BJ,CF ,CG,CI,CM,GA,GN,ML,MR,NE, SN,TD,TG),AP(KE,LS,MW,SD,S Z,UG),UA(AM,AZ,BY,KG,KZ,MD ,RU,TJ,TM),AL,AM,AT,AT,AU ,AZ,BB,BG,BR,BY,CA,CH,CN, CZ,CZ,DE,DE,DK,DK,EE,EE,E S,FI,FI,GB,GE,HU,IL,IS,JP ,KE,KG,KP,KR,KZ,LK,LR,LS, LT,LU,LV,MD,MG,MK,MN,MW,M X,NO,NZ,PL,PT,RO,RU,SD,SE ,SG,SI,SK,SK,TJ,TM,TR,TT, UA,UG,US,UZ,VN (72)発明者 ガーバス,エリオット アメリカ合衆国・85257・アリゾナ州・ス コッツデイル・ノース ヘイデン ロー ド・2700・3106番 【要約の続き】 によって書き込まれたときにホスト・プロセッサまたは ローカル・プロセッサを選択的に妨害するために複数の レジスタが使用される。

Claims (1)

  1. 【特許請求の範囲】 1.ローカル・バスを介してローカル・プロセッサとメモリとに結合され、かつ 第2のバスを介してホスト・プロセッサに結合されたメッセージ通信装置におい て、 a)ホスト・プロセッサによる読取りのためにデータを記憶するインバウンド ・フリー記憶手段と、 b)インバウンド・フリー待ち行列内のデータを操作するためにインバウンド ・フリー記憶手段に結合されたインバウンド・フリー回路手段と、 c)ホスト・プロセッサが書き込んだデータを記憶するインバウンド・ポスト 記憶手段と、 d)アウトバウンド・フリー待ち行列内のデータを操作するためにインバウン ド・ポスト記憶手段に結合されたインバウンド・ポスト回路手段と を備えている装置。 2.a)ホスト・プロセッサによる読取りのためにデータを記憶するアウトバウ ンド検索記憶手段と、 b)アウトバウンド・ポスト待ち行列内のデータを操作するためにアウトバウ ンド検索記憶手段に結合されたアウトバウンド検索回路手段と、 c)ホスト・プロセッサによる書込みのためにデータを記憶するアウトバウン ド解放記憶手段と、 d)アウトバウンド・フリー待ち行列内のデータを操作するためにアウトバウ ンド解放記憶手段に結合されたアウトバウンド解放回路手段と をさらに備えている請求項1に記載のメッセージ通信装置。 3.インバウンド・フリー回路手段によるデータに対する操作が、インバウンド ・フリー待ち行列が空でない場合に、メモリに記憶されているインバウンド・フ リー待ち行列から情報をプリフェッチし、インバウンド待ち行列が空の場合に、 インバウンド・フリー記憶手段に所定の値をロードし、かつプリフェッチ操作が 完了した場合に、ホスト・プロセッサがインバウンド・フリー記憶手段を読み取 ることを可能とすることをさらに含んでおり、 インバウンド・フリー回路手段によるデータに対する操作が、インバウンド・ ポスト待ち行列がいっぱいであるかどうかを検出し、インバウンド・ポスト待ち 行列がいっぱいである場合に、再試行信号をホスト・プロセッサに返し、インバ ウンド・ポスト待ち行列がいっぱいではなく、かつインバウンド・ポスト記憶手 段に記憶されている現在値がインバウンド・ポスト待ち行列に記憶されている場 合に、ホスト・プロセッサがインバウンド・ポスト記憶手段に書込みを行うこと を可能とすることをさらに含んでいる 請求項1に記載のメッセージ通信装置。 4.アウトバウンド解放回路手段によるデータに対する操作が、アウトバウンド ・ポスト待ち行列が空でない場合に、アウトバウンド・ポスト待ち行列からデー タをプリフェッチし、アウトバウンド・ポスト待ち行列が空の場合に、アウトバ ウンド解放記憶手段に所定の値をロードし、かつプリフェッチが完了した場合に 、ホスト・プロセッサがアウトバウンド解放記憶手段を読み取ることを可能とす ることをさらに含んでおり、 アウトバウンド解放回路手段によるデータに対する操作が、アウトバウンド・ フリー待ち行列がいっぱいであるかどうかを検出し、アウトバウンド・フリー待 ち行列がいっぱいである場合に、再試行信号をホスト・プロセッサに返し、アウ トバウンド・フリー待ち行列がいっぱいではなく、かつアウトバウンド解放記憶 手段に記憶されている現在値がアウトバウンド・フリー待ち行列に記憶されてい る場合に、ホスト・プロセッサがアウトバウンド解放記憶手段に書込みを行うこ とを可能とすることをさらに含んでいる 請求項2に記載のメッセージ通信装置。 5.第2のバスがPCIバスである、請求項2に記載のメッセージ通信装置。 6.記憶手段がレジスタである、請求項2に記載のメッセージ通信装置。 7.1回のバス・トランザクション時に、尾部ポインタと頭部ポインタとによっ て定義されているアウトバウンド・ポスト待ち行列からメッセージ・ハンドルを ホスト・プロセッサが検索することを可能とする方法において、 a)待ち行列が空であるかどうかを検出するステップと、 b)待ち行列が空である場合に、ホスト・プロセッサに空待ち行列を示す信号 を返すステップと、 c)待ち行列が空でない場合に、待ち行列の尾部によってポイントされたメッ セージ・ハンドルを返すステップと、 d)次のメッセージ・ハンドルをプリフェッチするステップと を備えている方法。 8.次のメッセージ・ハンドルをプリフェッチするステップが 待ち行列の尾部ポインタを増分させ、 待ち行列からデータを読み取り、 データをプリフェッチ・レジスタにラッチする ことを含んでいる請求項7に記載の方法。 9.1回のバス・トランザクション時に、尾部ポインタと頭部ポインタとによっ て定義されている待ち行列に対してホスト・プロセッサがフリー・メッセージ・ ハンドルを解放することを可能とする方法において、 a)待ち行列がいっぱいであるかどうかを検出するステップと、 b)待ち行列がいっぱいでない場合に、フリー・メッセージのハンドルを待ち 行列に書き込むステップと、 c)待ち行列がいっぱいの場合に、ホスト・プロセッサに後で再試行するよう 通知するステップと を備えている方法。 10.フリー・メッセージ・ハンドルを待ち行列に書き込むステップが フリー・メッセージ・ハンドルをラッチし、 待ち行列の頭部ポインタを増分させ、 ラッチされたハンドルをメモリに記憶する ことをさらに含んでいる請求項9に記載の方法。 11.1回のバス・トランザクション時に、尾部ポインタと頭部ポインタとによ って定義されているインバウンド・フリー待ち行列にホスト・プロセッサがメッ セージ・ハンドルを割り振ることを可能とする方法において、 a)待ち行列が空であるかどうかを検出するステップと、 b)待ち行列が空である場合に、ホスト・プロセッサに空待ち行列を示す信号 を返すステップと、 c)待ち行列が空でない場合に、待ち行列の尾部によってポイントされたメッ セージ・ハンドルを返すステップと、 d)次のメッセージ・ハンドルをプリフェッチするステップと を備えている方法。 12.次のメッセージ・ハンドルをプリフェッチするステップが 待ち行列の尾部ポインタを増分させ、 メモリからデータを読み取り、 データをプリフェッチ・レジスタにラッチする ことを含んでいる請求項11に記載の方法。 13.1回のバス・トランザクション時に、尾部ポインタと頭部ポインタとによ って定義されている待ち行列に対してホスト・プロセッサがフリー・メッセージ ・ハンドルをポストすることを可能とする方法において、 a)待ち行列がいっぱいであるかどうかを検出するステップと、 b)待ち行列がいっぱいでない場合に、フリー・メッセージのハンドルを待ち 行列に書き込むステップと、 c)待ち行列がいっぱいの場合に、ホスト・プロセッサに後で再試行するよう 通知するステップと を備えている方法。 14.メッセージ・ハンドルを待ち行列に書き込むステップが メッセージ・ハンドルをラッチし、 待ち行列の頭部ポインタを増分させ、 ラッチされたハンドルをメモリに記憶する ことをさらに含んでいる請求項13に記載の方法。
JP50339997A 1995-06-15 1996-06-17 複数プロセッサ・システム内のプロセッサ間でメッセージを送信する装置 Expired - Fee Related JP3884073B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US08/490,651 US5925099A (en) 1995-06-15 1995-06-15 Method and apparatus for transporting messages between processors in a multiple processor system
US08/490,651 1995-06-15
PCT/US1996/010466 WO1997000533A1 (en) 1995-06-15 1996-06-17 A method and apparatus for transporting messages between processors in a multiple processor system

Publications (2)

Publication Number Publication Date
JPH11514113A true JPH11514113A (ja) 1999-11-30
JP3884073B2 JP3884073B2 (ja) 2007-02-21

Family

ID=23948942

Family Applications (1)

Application Number Title Priority Date Filing Date
JP50339997A Expired - Fee Related JP3884073B2 (ja) 1995-06-15 1996-06-17 複数プロセッサ・システム内のプロセッサ間でメッセージを送信する装置

Country Status (9)

Country Link
US (2) US5925099A (ja)
EP (1) EP0840935B1 (ja)
JP (1) JP3884073B2 (ja)
KR (1) KR19990022951A (ja)
CN (1) CN1099078C (ja)
AU (1) AU6180196A (ja)
DE (1) DE69636781D1 (ja)
HK (1) HK1010940A1 (ja)
WO (1) WO1997000533A1 (ja)

Families Citing this family (86)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5925099A (en) * 1995-06-15 1999-07-20 Intel Corporation Method and apparatus for transporting messages between processors in a multiple processor system
US5987590A (en) * 1996-04-02 1999-11-16 Texas Instruments Incorporated PC circuits, systems and methods
US6179489B1 (en) 1997-04-04 2001-01-30 Texas Instruments Incorporated Devices, methods, systems and software products for coordination of computer main microprocessor and second microprocessor coupled thereto
US5966547A (en) * 1997-01-10 1999-10-12 Lsi Logic Corporation System for fast posting to shared queues in multi-processor environments utilizing interrupt state checking
JP2001514778A (ja) * 1997-03-13 2001-09-11 マーク・エム・ホイットニー メッセージ・キューイング・ファシリティを含むネットワーク・トランザクションをメインフレームからインテリジェントな入出力装置にオフロードするシステム及び方法
US6477584B1 (en) * 1997-03-21 2002-11-05 Lsi Logic Corporation Message FIFO empty early warning method
US5909559A (en) * 1997-04-04 1999-06-01 Texas Instruments Incorporated Bus bridge device including data bus of first width for a first processor, memory controller, arbiter circuit and second processor having a different second data width
US6105119A (en) * 1997-04-04 2000-08-15 Texas Instruments Incorporated Data transfer circuitry, DSP wrapper circuitry and improved processor devices, methods and systems
JPH10307751A (ja) * 1997-05-09 1998-11-17 Hitachi Ltd 並列計算機におけるポインタ制御によるデータ転送装置
JPH11127148A (ja) * 1997-10-20 1999-05-11 Fujitsu Ltd 蓄積交換型電子会議システムにおける登録情報のリカバリ処理装置及び方法並びにリカバリ処理プログラムを記録した媒体
US6145007A (en) * 1997-11-14 2000-11-07 Cirrus Logic, Inc. Interprocessor communication circuitry and methods
US6145061A (en) * 1998-01-07 2000-11-07 Tandem Computers Incorporated Method of management of a circular queue for asynchronous access
US7007126B2 (en) * 1998-02-13 2006-02-28 Intel Corporation Accessing a primary bus messaging unit from a secondary bus through a PCI bridge
US5990910A (en) * 1998-03-24 1999-11-23 Ati Technologies, Inc. Method and apparatus for co-processing multi-formatted data
US6124868A (en) * 1998-03-24 2000-09-26 Ati Technologies, Inc. Method and apparatus for multiple co-processor utilization of a ring buffer
JP4236729B2 (ja) * 1998-05-07 2009-03-11 株式会社リコー データ処理装置
US6314501B1 (en) * 1998-07-23 2001-11-06 Unisys Corporation Computer system and method for operating multiple operating systems in different partitions of the computer system and for allowing the different partitions to communicate with one another through shared memory
US6173307B1 (en) * 1998-08-20 2001-01-09 Intel Corporation Multiple-reader multiple-writer queue for a computer system
US7020712B1 (en) * 1998-09-30 2006-03-28 Cisco Technology, Inc. Reducing CPU overhead in the forwarding process in an inbound/outbound controller for a router
US6182182B1 (en) * 1998-10-28 2001-01-30 Adaptec, Inc. Intelligent input/output target device communication and exception handling
US6212543B1 (en) 1998-12-10 2001-04-03 Intel Corporation Asymmetric write-only message queuing architecture
US6209054B1 (en) 1998-12-15 2001-03-27 Cisco Technology, Inc. Reliable interrupt reception over buffered bus
US6256699B1 (en) * 1998-12-15 2001-07-03 Cisco Technology, Inc. Reliable interrupt reception over buffered bus
US6381663B1 (en) * 1999-03-26 2002-04-30 Hewlett-Packard Company Mechanism for implementing bus locking with a mixed architecture
NO312926B1 (no) * 1999-07-20 2002-07-15 Ericsson Telefon Ab L M Kommunikasjon over multimaster buss
US6976260B1 (en) * 1999-09-24 2005-12-13 International Business Machines Corporation Method and apparatus for serializing a message queue in a multiprocessing environment
US6772097B1 (en) * 1999-09-30 2004-08-03 Intel Corporation Retrieving I/O processor performance monitor data
US6918044B1 (en) 1999-10-15 2005-07-12 Cisco Technology, Inc. Password protection for high reliability computer systems
US6467049B1 (en) 1999-10-15 2002-10-15 Cisco Technology, Inc. Method and apparatus for configuration in multi processing engine computer systems
US6484224B1 (en) 1999-11-29 2002-11-19 Cisco Technology Inc. Multi-interface symmetric multiprocessor
US6609171B1 (en) * 1999-12-29 2003-08-19 Intel Corporation Quad pumped bus architecture and protocol
US6611882B1 (en) * 1999-12-31 2003-08-26 Intel Corporation Inbound and outbound message passing between a host processor and I/O processor local memory
GB2368247A (en) * 2000-10-18 2002-04-24 Power X Ltd Method and apparatus for regulating process state control messages
US6988160B2 (en) * 2001-02-12 2006-01-17 P-Cube Ltd. Method and apparatus for efficient messaging between memories across a PCI bus
US6836480B2 (en) * 2001-04-20 2004-12-28 International Business Machines Corporation Data structures for efficient processing of multicast transmissions
US6799217B2 (en) * 2001-06-04 2004-09-28 Fujitsu Limited Shared memory multiprocessor expansion port for multi-node systems
US6760817B2 (en) * 2001-06-21 2004-07-06 International Business Machines Corporation Method and system for prefetching utilizing memory initiated prefetch write operations
US7454753B2 (en) * 2001-06-27 2008-11-18 International Business Machines Corporation Semaphore management subsystem for use with multi-thread processor systems
US7089555B2 (en) 2001-06-27 2006-08-08 International Business Machines Corporation Ordered semaphore management subsystem
US6801976B2 (en) * 2001-08-27 2004-10-05 Intel Corporation Mechanism for preserving producer-consumer ordering across an unordered interface
US7143414B2 (en) 2001-09-26 2006-11-28 International Business Machines Corporation Method and apparatus for locking multiple semaphores
US7406690B2 (en) * 2001-09-26 2008-07-29 International Business Machines Corporation Flow lookahead in an ordered semaphore management subsystem
US7054925B2 (en) * 2001-11-21 2006-05-30 International Business Machines Corporation Efficient method for determining record based I/O on top of streaming protocols
US20030110232A1 (en) * 2001-12-11 2003-06-12 International Business Machines Corporation Distributing messages between local queues representative of a common shared queue
US7290127B2 (en) * 2001-12-26 2007-10-30 Intel Corporation System and method of remotely initializing a local processor
US6813658B2 (en) * 2002-03-27 2004-11-02 Intel Corporation Dynamic data queuing mechanism for packet networks
US7899924B2 (en) * 2002-04-19 2011-03-01 Oesterreicher Richard T Flexible streaming hardware
US20040006636A1 (en) * 2002-04-19 2004-01-08 Oesterreicher Richard T. Optimized digital media delivery engine
US20040006635A1 (en) * 2002-04-19 2004-01-08 Oesterreicher Richard T. Hybrid streaming platform
US20040107240A1 (en) * 2002-12-02 2004-06-03 Globespan Virata Incorporated Method and system for intertask messaging between multiple processors
US7013355B2 (en) * 2003-01-09 2006-03-14 Micrel, Incorporated Device and method for improved serial bus transaction using incremental address decode
DE102004012516A1 (de) * 2004-03-15 2005-10-13 Infineon Technologies Ag Computersystem zur elektronischen Datenverarbeitung
EP1772016A2 (en) * 2004-07-23 2007-04-11 Beach Unlimited LLC Trickmodes and speed transitions
US20070276973A1 (en) * 2004-09-30 2007-11-29 Intel Corporation Managing queues
US8117620B2 (en) * 2005-03-21 2012-02-14 Intel Corporation Techniques for implementing a communication channel with local and global resources
EP1715405A1 (en) * 2005-04-19 2006-10-25 STMicroelectronics S.r.l. Processing method, system and computer program product for dynamic allocation of processing tasks in a multiprocessor cluster platforms with power adjustment
TWI386846B (zh) * 2006-03-30 2013-02-21 Silicon Image Inc 利用共享式非揮發性記憶體初始化多個處理元件之方法、系統及快閃記憶體元件
CN100538690C (zh) * 2006-04-10 2009-09-09 中国科学院研究生院 一种多cpu系统及cpu之间消息传递的方法
US9274859B2 (en) * 2006-05-25 2016-03-01 Nvidia Corporation Multi processor and multi thread safe message queue with hardware assistance
WO2008055272A2 (en) * 2006-11-04 2008-05-08 Virident Systems, Inc. Integrating data from symmetric and asymmetric memory
US20090248919A1 (en) * 2008-03-25 2009-10-01 Jerzy Szwagrzyk Method for external fifo acceleration
US8566930B2 (en) * 2009-02-27 2013-10-22 Science Applications International Corporation Monitoring module
US20100262979A1 (en) * 2009-04-08 2010-10-14 Google Inc. Circular command queues for communication between a host and a data storage device
US8745291B2 (en) 2011-10-04 2014-06-03 Qualcomm Incorporated Inter-processor communication apparatus and method
WO2013100783A1 (en) 2011-12-29 2013-07-04 Intel Corporation Method and system for control signalling in a data path module
US10331583B2 (en) 2013-09-26 2019-06-25 Intel Corporation Executing distributed memory operations using processing elements connected by distributed channels
CN104022963B (zh) * 2014-01-02 2017-06-13 烽火通信科技股份有限公司 多种通信方式并存的通信方法及装置
CN107153580B (zh) * 2016-03-04 2020-08-18 北京忆恒创源科技有限公司 获取队列精确状态的装置及其方法
TWI588657B (zh) * 2016-03-25 2017-06-21 晨星半導體股份有限公司 雙處理器系統及其控制方法
US10496577B2 (en) * 2017-02-09 2019-12-03 Hewlett Packard Enterprise Development Lp Distribution of master device tasks among bus queues
CN111625376B (zh) * 2017-04-01 2023-08-04 北京忆芯科技有限公司 通过代理进行队列通信的方法与消息系统
US11086816B2 (en) 2017-09-28 2021-08-10 Intel Corporation Processors, methods, and systems for debugging a configurable spatial accelerator
US10528077B2 (en) * 2017-11-21 2020-01-07 The Boeing Company Instruction processing alignment system
US11307873B2 (en) 2018-04-03 2022-04-19 Intel Corporation Apparatus, methods, and systems for unstructured data flow in a configurable spatial accelerator with predicate propagation and merging
US10891240B2 (en) 2018-06-30 2021-01-12 Intel Corporation Apparatus, methods, and systems for low latency communication in a configurable spatial accelerator
US11200186B2 (en) * 2018-06-30 2021-12-14 Intel Corporation Apparatuses, methods, and systems for operations in a configurable spatial accelerator
US10853073B2 (en) 2018-06-30 2020-12-01 Intel Corporation Apparatuses, methods, and systems for conditional operations in a configurable spatial accelerator
CN109491948B (zh) * 2018-11-19 2021-10-29 郑州云海信息技术有限公司 一种针对固态硬盘双端口的数据处理方法和装置
US11030144B2 (en) * 2018-12-14 2021-06-08 Texas Instruments Incorporated Peripheral component interconnect (PCI) backplane connectivity system on chip (SoC)
US11016684B1 (en) * 2018-12-28 2021-05-25 Virtuozzo International Gmbh System and method for managing data and metadata where respective backing block devices are accessed based on whether request indicator indicates the data or the metadata and accessing the backing block devices without file system when the request indicator is not included in request
CN109918024B (zh) * 2019-02-28 2022-07-05 深圳和而泰数据资源与云技术有限公司 存储管理方法、装置、单片机设备和可读存储介质
US10817291B2 (en) 2019-03-30 2020-10-27 Intel Corporation Apparatuses, methods, and systems for swizzle operations in a configurable spatial accelerator
US10915471B2 (en) 2019-03-30 2021-02-09 Intel Corporation Apparatuses, methods, and systems for memory interface circuit allocation in a configurable spatial accelerator
US11037050B2 (en) 2019-06-29 2021-06-15 Intel Corporation Apparatuses, methods, and systems for memory interface circuit arbitration in a configurable spatial accelerator
CN111314244B (zh) * 2020-02-13 2022-09-13 北京天拓智领科技有限公司 一种基于消息队列的数据收发方法
US12086080B2 (en) 2020-09-26 2024-09-10 Intel Corporation Apparatuses, methods, and systems for a configurable accelerator having dataflow execution circuits

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4445176A (en) * 1979-12-28 1984-04-24 International Business Machines Corporation Block transfers of information in data processing networks
US4682284A (en) * 1984-12-06 1987-07-21 American Telephone & Telegraph Co., At&T Bell Lab. Queue administration method and apparatus
US4914653A (en) * 1986-12-22 1990-04-03 American Telephone And Telegraph Company Inter-processor communication protocol
US4956771A (en) * 1988-05-24 1990-09-11 Prime Computer, Inc. Method for inter-processor data transfer
EP0365731B1 (en) * 1988-10-28 1994-07-27 International Business Machines Corporation Method and apparatus for transferring messages between source and destination users through a shared memory
US5161156A (en) * 1990-02-02 1992-11-03 International Business Machines Corporation Multiprocessing packet switching connection system having provision for error correction and recovery
US5459839A (en) * 1991-09-05 1995-10-17 International Business Machines Corporation System and method for managing queue read and write pointers
US5428766A (en) * 1992-12-01 1995-06-27 Digital Equipment Corporation Error detection scheme in a multiprocessor environment
US5581705A (en) * 1993-12-13 1996-12-03 Cray Research, Inc. Messaging facility with hardware tail pointer and software implemented head pointer message queue for distributed memory massively parallel processing system
US5619687A (en) * 1994-02-22 1997-04-08 Motorola Inc. Queue system having a time-out feature and method therefor
US5530933A (en) * 1994-02-24 1996-06-25 Hewlett-Packard Company Multiprocessor system for maintaining cache coherency by checking the coherency in the order of the transactions being issued on the bus
US5546546A (en) * 1994-05-20 1996-08-13 Intel Corporation Method and apparatus for maintaining transaction ordering and arbitrating in a bus bridge
US5925099A (en) * 1995-06-15 1999-07-20 Intel Corporation Method and apparatus for transporting messages between processors in a multiple processor system

Also Published As

Publication number Publication date
EP0840935A1 (en) 1998-05-13
EP0840935B1 (en) 2006-12-20
US6134619A (en) 2000-10-17
KR19990022951A (ko) 1999-03-25
JP3884073B2 (ja) 2007-02-21
US5925099A (en) 1999-07-20
EP0840935A4 (en) 1998-12-23
WO1997000533A1 (en) 1997-01-03
AU6180196A (en) 1997-01-15
CN1193410A (zh) 1998-09-16
CN1099078C (zh) 2003-01-15
DE69636781D1 (de) 2007-02-01
HK1010940A1 (en) 1999-07-02

Similar Documents

Publication Publication Date Title
JPH11514113A (ja) 複数プロセッサ・システム内のプロセッサ間でメッセージを送信する方法および装置
US6499090B1 (en) Prioritized bus request scheduling mechanism for processing devices
JP4104746B2 (ja) 自動直接メモリ・アクセス機能を備えたコンピュータ・システム
US6138192A (en) Delivering a request to write or read data before delivering an earlier write request
US6292860B1 (en) Method for preventing deadlock by suspending operation of processors, bridges, and devices
EP0834816A2 (en) Microprocessor architecture capable of supporting multiple heterogenous processors
EP0908826A2 (en) Packet protocol and distributed burst engine
JP2000512406A (ja) システム管理モード情報を他の情報と共にキャッシュに入れる方法および装置
US7069394B2 (en) Dynamic data routing mechanism for a high speed memory cloner
US6996693B2 (en) High speed memory cloning facility via a source/destination switching mechanism
US6892283B2 (en) High speed memory cloner with extended cache coherency protocols and responses
US6195722B1 (en) Method and apparatus for deferring transactions on a host bus having a third party agent
US7502917B2 (en) High speed memory cloning facility via a lockless multiprocessor mechanism
US6807586B2 (en) Increased computer peripheral throughput by using data available withholding
US6986013B2 (en) Imprecise cache line protection mechanism during a memory clone operation
US6502150B1 (en) Method and apparatus for resource sharing in a multi-processor system
US6915390B2 (en) High speed memory cloning facility via a coherently done mechanism
US6986011B2 (en) High speed memory cloner within a data processing system
US6308147B1 (en) Data structure synthesis in hardware using memory transaction translation techniques
US6928524B2 (en) Data processing system with naked cache line write operations
US7421545B1 (en) Method and apparatus for multiple sequence access to single entry queue
US6631428B1 (en) Apparatus and method for completing transactions in all flow control classes

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20060110

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20060328

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20060523

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20060823

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

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20061017

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20061116

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20091124

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20101124

Year of fee payment: 4

LAPS Cancellation because of no payment of annual fees