JPH11143845A - ネットワークノード間のメッセージ送信用システム及び方法 - Google Patents

ネットワークノード間のメッセージ送信用システム及び方法

Info

Publication number
JPH11143845A
JPH11143845A JP10220988A JP22098898A JPH11143845A JP H11143845 A JPH11143845 A JP H11143845A JP 10220988 A JP10220988 A JP 10220988A JP 22098898 A JP22098898 A JP 22098898A JP H11143845 A JPH11143845 A JP H11143845A
Authority
JP
Japan
Prior art keywords
message
computer
queue
received
entry
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.)
Pending
Application number
JP10220988A
Other languages
English (en)
Inventor
Madhusudhan Talluri
タルーリ マダスダン
Marshall C Pease
シー ピーズ マーシャル
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.)
Sun Microsystems Inc
Original Assignee
Sun Microsystems Inc
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 Sun Microsystems Inc filed Critical Sun Microsystems Inc
Publication of JPH11143845A publication Critical patent/JPH11143845A/ja
Pending legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/901Buffering arrangements using storage descriptor, e.g. read or write pointers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/9031Wraparound memory, e.g. overrun or underrun detection
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/9063Intermediate storage in different physical parts of a node or terminal
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/40Network security protocols

Abstract

(57)【要約】 (修正有) 【課題】 ネットワークノード間の確実なメッセージ送
信システム及び方法を提供する。 【解決手段】 第1のコンピュータは、第2のコンピュ
ータの各メッセージの記憶を確認するのに遠隔読取り動
作をすることなく、対応メモリ位置に遠隔書込みでメッ
セージを送る。データの送信中に、もし送信エラーを検
出した場合には、メッセージを再送付する。また、第2
に記憶されたメッセージの処理を促すためにトリガメッ
セージを送る。第2のコンピュータは、各受信メッセー
ジを処理しかつ第1のコンピュータの対応メモリ位置に
肯定応答メッセージを記憶させる。第1のコンピュータ
は、先に送ったメッセージのいずれかの受信の失敗を検
出して、第2のコンピュータが肯定応答していない先に
送られたメッセージを処理したかどうかを決めるための
矯正動作を行う。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、一般に、第1のコ
ンピュータに第2のコンピュータに対してメッセージ及
びデータを送信させるをシステム及び方法に関し、より
特定的には、高レベルのメッセージ送信信頼性を保持す
ると同時にメッセージ送信検証に対して通常用いられる
遠隔読取り動作を回避することによってより効率的にそ
のような遠隔書込み動作を行うシステム及び方法に関す
る。
【0002】
【従来の技術】多くの多重プロセッサコンピュータシス
テムでは、別のコンピュータ(しばしばレシーバと呼ば
れる)にメッセージ又はデータを送信することができる
ことは、一つのコンピュータノード(しばしばセンダと
呼ばれる)で実行されているプロセス又はタスクにとっ
て重要である。一般に、コンピュータノード間でメッセ
ージを送信することは、各メッセージの成功裏の送信
が、各そのような遠隔メッセージ書込み動作の後に遠隔
読取り動作を実行することによって検証されるならば、
待ち時間及び用いられるリソースの点で高価である。代
替的に、各メッセージの成功裏の送信を検証するために
遠隔読取りを用いる代わりに、ある従来技術ではメッセ
ージは、局所バッファに局所的に書込まれ、そして、
「クッキー」(主に、メッセージが記憶されるメモリ位
置をポイントしているデータ構成である)又は他の通知
メッセージが受信システムに送られる。受信システム
は、次いで、通知メッセージに示された遠隔メモリ位置
からメッセージを読取るために遠隔読取り動作を実行す
る。この同じ基本的従来技術の技法の別の実施では、メ
ッセージ及びクッキーの両方が送信システムに局所的に
記憶されかつトリガメッセージだけが受信システムに送
信される。受信システムは、クッキーを読取るための第
1の遠隔読取り動作及びクッキーによって示された位置
におけるメッセージを読取るための第2の遠隔読取り動
作を実行することによってトリガメッセージに応答す
る。全てのメッセージ送信の不可欠な部分として遠隔読
取り動作を用いている従来技術のリファレンス点は、遠
隔読取りが同期されており、それゆえに遠隔読取りを実
行しているシステムは、メッセージ送信が失敗したなら
ば直ぐに通知されるということである。メッセージを送
信するために遠隔読取り動作を用いることの別の利点
は、遠隔読取り動作が各メッセージがたった一度だけ受
信システムによって受信されかつプロセスされることを
保障するのを比較的容易にするということである。ほと
んどのネットワークコンピュータシステムでは、受信シ
ステムに同じメッセージを二度送らないことが重要であ
る。同じメッセージを二度送ることは、受信システムに
一度だけ実行されるべき動作を二度実行させる。各メッ
セージは、適格なシステム動作を保障するために正確に
一度だけ受信システムによって確実に受信されかつプロ
セスされなければならない。遠隔書込み動作は、遠隔書
込みが「実行されかつ忘れられる」ことができるので、
システム待ち時間及び用いられるシステムリソースの点
で、遠隔読取り動作と比較して、相対的に「安価」であ
る。図1を参照すると、ここでNode(ノード)A5
0、及びNode(ノード)B52と呼ばれる、二つの
コンピュータノードの非常に簡略化された図が示されて
いる。各ノードのコンピュータは、あらゆる型のコンピ
ュータでありうる。換言すると、特定のブランド、アー
キテクチャ及びオペレーティングシステムは、各コンピ
ュータノードがネットワーク環境で動作するように構成
されている限り、本議論に対しては重要なことではな
い。各コンピュータノード50,52は、中央処理装置
(CPU)54、ランダムアクセスメモリ56、内部メ
モリバス58及び、ネットワークインタフェースカード
(NIC)としばしば呼ばれる、通信インタフェース6
0を一般的に含む。コンピュータノードは、一つ以上の
型の通信媒体、切替え機構、等を含みうる、ネットワー
ク相互接続62を介してメッセージ又はパケットを互い
に送信することによって互いに通信する。また、各コン
ピュータノード50,52は、一般に高速磁気ディスク
のような、不揮発性の、非ランダムアクセスメモリ装置
64、及び対応ディスクコントローラ66を有する。図
2は、特に注目すべきコンポーネントだけを示してい
る、図1のコンピュータノードで用いられるような、従
来の通信インタフェース(又はNIC)60の簡略化さ
れた図を示す。NIC60は、二つのアドレスマッピン
グ機構;即ち、入力メモリ管理ユニット(IMMU)7
0及び出力メモリ管理ユニット(OMMU)72を一般
的に含む。二つのメモリ管理ユニットの目的は、各コン
ピュータノードの局所物理アドレス(PA’s)をグロ
ーバルアドレス(GA’s)にマップしかつ戻すことで
ある。NIC60の移送ロジック74は、IMMU70
及びOMMU72を用いてアドレスを探索しかつ変換す
ることを含んでいる、メッセージパケットを送信しかつ
受信する機構を取り扱う。メモリバス60とIMMU7
0及びOMMU72との間の破線は、一般的にNICド
ライバプログラムの制御下で、二つのMMU’sにおい
てアドレス変換エントリを記憶しかつ削除するためのC
PU導出制御信号を表す。メモリバス60と移送ロジッ
ク74との間の破線は、移送ロジック74を構成しかつ
制御するためのCPU導出制御信号を表す。仮想、局所
物理空間とグローバルアドレス空間の間のメモリマッピ
ング図3及び図4を参照すると、(図1に示したよう
な)分散型コンピュータシステムのノードは、共有グロ
ーバルアドレス空間GAを利用する。各ノードは、その
局所アドレス空間の一部をグローバルアドレス空間の
「ウィンドウズ」にマップする。更に、ノードのそれぞ
れにおけるプロセスは、それらの専用(私用)仮想アド
レス空間VAの一部を局所物理アドレス空間PAにマッ
プし、かつ局所物理アドレス空間PAの一部をグローバ
ルアドレス空間GAのウィンドウに更にエクスポートす
ることができる。局所物理アドレス空間の一部を「エク
スポートする」プロセスは、また、割当てられたグロー
バルアドレス空間範囲を介して局所物理アドレス空間の
エクスポートされた部分への読取り及び/書込みアクセ
スが別のコンピュータノードに与えられるので、「局所
物理アドレス空間の一部を別のノードにエクスポートす
ること」ともしばしば呼ばれる。図3及び図4に示され
た局所物理アドレス空間(例えば、PA1及びPA2)
は、物理バスアドレスでありかつメモリ位置アドレスで
ある必要はないということに注目すべきである。事実、
多くの物理アドレスは、ネットワークインタフェースの
ような、メモリ以外の装置に実際にマップされる。例え
ば、第1のコンピュータの物理メモリが第2のコンピュ
ータにエクスポートされる場合、エクスポートされたメ
モリに書込むために第2のコンピュータにおいて用いら
れる物理アドレスは、どの局所メモリにもマップされな
い;それよりも、それらは、第2のコンピュータのネッ
トワークインタフェースにマップされる。データが、ノ
ードB52の位置に対応している仮想アドレスにノード
A50のプロセスによって書込まれる場合、一連のアド
レス変換(アドレスマッピング変換とも呼ばれる)が実
行される。ノードAのプロセスからの仮想アドレスVA
1は、まず、局所(物理)I/OアドレスPA1にアド
レス空間にノードA’sCPU54−AのTLB(変換
索引バッファ)80−Aによって変換される。局所(物
理)I/OアドレスPA1は、次いで、グローバルアド
レスGAxにノードA’sネットワークインタフェース
60−Aの出力MMU(OMMU)72−Aによって変
換される。そのグローバルアドレスを伴うデータがノー
ドBによって受取られる(通常メッセージパケットの形
で)場合、グローバルアドレスGAxは、ノードBと関
連する局所物理アドレスPA2に、ノードB’sネット
ワークインタフェース60−Bの入力MMU(IMM
U)70−Bによって変換される。局所物理アドレスP
A2は、受信プロセスと関連する仮想アドレスVA2に
対応する。ノードB’sCPU54−BのTLB80−
Bは、受信したデータが記憶される局所アドレスPA2
に空間仮想アドレスVA2をマップする。用語「メッセ
ージ送信」は、受信ノードが送信されたメッセージを自
動的にプロセスするようなメッセージ送信プロトコルの
使用を示すか又は意味するためにしばしば用いられる
が、用語「データ送信」は、一つのシステムから別のシ
ステムにデータを書込むこと又はコピーすることを単に
示すだけである。しかしながら、この明細書では、用語
メッセージ送信及びデータ送信は、互いに交換可能に用
いられる。TLBsは、仮想アドレスを局所物理アドレ
ス空間に一般に変換するだけであり、その逆を行わな
い、それゆえに、図4の矢印のあるものは、実際のアド
レス変換ではなく、マッピングを表すということにここ
で注目すべきである。ノードBの受信プロセスがアドレ
スVA2で受信したメッセージを読取る場合、TLB8
0−Bは、受信したメッセージに対する宛先アドレスと
してネットワークインタフェース’sIMMU70−B
によって決定された同じ局所アドレスLA2にその仮想
アドレスを変換する。メッセージを受取るためのアドレ
ス空間範囲は、受信したアドレス空間、メールボック
ス、又はこの目的のためにセットアップされるパケット
をベースにした通信を一般に用いる高レベルプロトコル
を用いて送信ノードと受信ノードとの間で予め取り決め
られる。グローバルアドレス空間のウィンドウズが割当
てられる方法及び受信装置側アドレスがメッセージを受
取るためにセットアップされる方法の詳細は、この明細
書の範疇を越えるものである。更に、本発明は、そのよ
うな通信セットアップ機構におけるいかなる変更も必要
としない。受信バッファは、対応MMUエントリを用い
て都合よい大きさのチャンクに割当てられる。より大き
な受信バッファ、又は不規則な大きさの受信バッファ
は、ユーザレベルプロトコルによって複数のMMUエン
トリを用いて構築されうる。一度受信バッファが割当て
られかつ対応MMUマッピングが確立されたならば、ユ
ーザレベルプログラムは、カーネル介入なしに受信バッ
ファを読取りかつそれに書込むことができる。多くの異
なる種類のユーザーレベルメッセージ受渡し「API’
s」(アプリケーションプログラムインタフェース)
は、基礎受信バッファ機構のトップ(最上部)に構築す
ることができる。これは、送信及び受信Unixプリミ
ティブ、ソケット、ORB(オブジェクトリソースブロ
ーカ)移送、遠隔手続きコール、等を含む。基礎メッセ
ージ受渡し機構は、可能な限り「軽量」及び効率的であ
るように設計され、それゆえに出来るだけ少ないプロセ
ッササイクルを取る。本発明は、上述したグローバルア
ドレスマッピング機構に対して局所物理アドレス空間を
利用する。 通常の遠隔書込み方法 図5は、ノードBの受信バッファにメッセージを書込む
込むためのノードAのプロセッサに対する通常の手続き
を示す。第1のステップは、ノードAに対して、ノード
Aがそれにメッセージを書込むことができるように受信
バッファ(エクスポーティングバッファとも呼ばれる)
をセットアップするために要求をノードBに送ることで
ある(ステップ100)。次いで、ノードBは、一つ以
上の受信バッファをセットアップしかつ受信バッファに
割当てられたメモリをノードAに「エクスポート」する
(ステップ101)。ある実施では、ノードAが多くの
メッセージをノードBに送っているということが前もっ
て分かっているので、この段階は、予め実行されうる。
他の実施では、メモリエクスポーティング段階は、ノー
ドAに方法呼出しメッセージ等を送る前に、方法呼出し
の結果を受信するために受信バッファをセットアップす
る、ノードBの手続きによって実行される。メモリエク
スポーティングステップ101は、ノードB’sメモリ
の受信バッファの物理アドレス範囲をグローバルアドレ
スの対応範囲にマップするノードBにIMMUエントリ
を生成することによって、そしてまた、物理アドレスマ
ッピングに対して対応仮想アドレスをセットアップする
ことによって実行される。上記したように、ノードB
は、他のノードに対してメモリをエクスポートするため
にそれに予め割当てられたグローバルアドレスの範囲を
一般に有する。しかしながら、グローバルアドレスを割
当てるための他の機構は、同様に適用可能である。次
に、ステップ102では、メモリエクスポートメッセー
ジは、ノードBによって、 ・ メッセージが送信される宛先ノード; ・ メッセージがそれから送られるソースノード; ・ ノードAにエクスポートされる受信バッファに対応
しているグローバルアドレス範囲;及び ・ ここでは関連がない、プロトコルパラメータのよう
な、他のパラメータを特定するノードAに送信される。 ノードAでは、メモリエクスポートメッセージが受信さ
れた場合、ノードA’sNICドライバは、ノードBに
よってエクスポートされるメモリをインポートするため
にOMMUエントリをセットアップし、(ステップ10
4)、かつまた、ノードAのプロセスが受信バッファに
データを書込むことができるように物理アドレスマッピ
ングに対して対応仮想アドレスをセットアップする。ス
テップ104におけるOMMUエントリセットアップ
は、受信したメッセージで特定されたグローバルアドレ
ス範囲をサーバノードの物理メモリの対応範囲にマップ
する。必要ならば(例えば、不十分な連続メモリが利用
可能であり及び/又はマップされたアドレス範囲のサイ
ズが2ページに等しくないならば)、サーバノード
は、特定されたグローバルアドレス空間を二つ以上の局
所物理アドレス範囲にマップするように二つ以上の局所
物理アドレス範囲を生成する。第1のコンピュータのマ
ップされた局所物理アドレスは、そのコンピュータのメ
モリの位置ではなくそれよりもそれらは、OMMUエン
トリによってコンピュータのネットワークインタフェー
スにマップされるさもなければ不使用なアドレスであ
る。一度ノードBのIMMU及びノードAのOMMUが
セットアップされたならば、ノードAは、メッセージを
ノードBに送信することができる。ステップ104と1
06の間の破線は、ステップ104と106の間のタイ
ミング関係に特定の仮定がなされていないということを
示している(即ち、一つが他方を密接にファローする
か、それらは、時間及びロジック的の両方において別個
にされうる)。一度ノードAがノードBにメッセージを
送る準備ができたならば、ノードAのメッセージ送信手
続きは、データがノードBのアプリケーション手続きに
よってプロセスされるために最適な所定の方法でフォー
マットされかつ送信バッファに記憶されるということを
基本的に意味する、ノードBに送るべきデータを集める
(ステップ106)。次いで、遠隔書込みは、送信バッ
ファの内容を割当てられたグローバルアドレスにコピー
するために実行される(ステップ108)。グローバル
アドレスへデータを書込むことは、それらのグローバル
アドレスに対する送信ノードのOMMUエントリに示さ
れているように、送信ノードの通信インタフェースに、
書込まれているデータをそれらのグローバルアドレスと
関連するノードに送信させる。このデータ送信動作(ス
テップ108)は、「プログラムI/O」命令により直
接CPU制御下で実行されうるか、又は通信インタフェ
ース(NIC)DMA動作によって実行されうる(例え
ば、通信インタフェースのDMAロジックは、局所物理
メモリから通信ネットワークへのデータの転送を取り扱
う)。ある通信ネットワーク及びインタフェースは、R
MO(Relaxed Memory Order)メ
モリモデルとして知られているものを利用し、かつ利用
可能なリソースの使用を最適化するようにメッセージを
再注文することができる。また、多くの通信システム
は、それらにハンドオフされた全てのメッセージの配送
を保障しない。それゆえに、一度メッセージが送られた
ならば、それが特定された宛先ノードに実際に送信され
る、或いはメッセージにおいて特定されたグローバルア
ドレスに対応している受信バッファに書込まれる、とい
う保障がない。その結果、従来技術のコンピュータシス
テムは、後続のタスクを実行させる前に各メッセージの
送信を検証すべくしばしば設計される。そのような検証
は、メッセージが実際に受信バッファに書込まれたかど
うかを決定するために、ノードBの受信バッファの内容
の一部を少なくとも読取るように遠隔読取り(ステップ
110参照)を実行することによって一般的に達成され
る。遠隔読取り動作は、遠隔読取りを実行している送信
システムのスレッドが、スレッドが更なるプロセシング
を再開できる前に他のノードに送られる要求及び送り戻
される応答を待たなけらばならないので、システム待ち
時間、及び通信システム使用の点で非常に高価である。
結果として得られた遅延は、受信システムから及びそれ
への送信時間、読取り要求をプロセスするために必要な
手続きをアクセスしかつ呼出すための遠隔システムのア
クセス時間を含む。それゆえに、遠隔読取りは、遠隔読
取りを実行するシステム及び通信システムの両方の性能
をかなり劣化する傾向がある。他方、遠隔書込み動作
は、速隔書込みを実行している送信システムのスレッド
が遠隔的に書込まれるデータをその通信インタフェース
に単に配送し、そしてその命令ストリームにおける次の
命令に進むので相対的に安価である。上記したように、
ステップ108で遠隔書込みを実行した後、一般的なメ
ッセージ送信手続きは、ノードBの受信バッファへのメ
ッセージの送信を検証するために遠隔読取りを実行す
る。遠隔読取り動作がメッセージが受信バッファに成功
裏に記憶されなかったと決定したならば、遠隔書込み段
階(108)は、繰返される。一度遠隔書込みステップ
108が成功裏に完了したならば、ノードBの「受信メ
ッセージキュー」に短いメッセージを記憶するために別
の遠隔書込み動作が実行される(ステップ112)。短
いメッセージは、「クッキー」又はステッププロセス1
08で送信された主メッセージの位置を示す他のデータ
構成を一般的に含む。代替的に、送られたメッセージ全
体が非常に短いならば(例えば、60バイト末満)、ス
テップ108及び110は、省略されうるし、かつ送信
されたメッセージ全体は、ステップ112によって受信
キューに記憶されうる。短いメッセージの成功裏の書込
みを確認するためにもう一度遠隔読取りが実行され(ス
テップ114)、かつ短いメッセージが成功裏にノード
Bの受信キューに記憶されるまで、必要ならば、遠隔書
込みが繰返される、そして、トリガメッセージは、ノー
ドBのネットワークインタフェースに送られ(ステップ
116)、受信メッセージをプロセスするためにノード
Bの手続きの実行をトリガする(例えば、何の新しいメ
ッセージが受信されたか、等を決定するために受信メッ
セージキューを検査することによって)。メッセージが
送られかつプロセスされた後のある地点で、ノードAの
メッセージ送信スレッドは、OMMUエントリ及び先に
インポートされたメモリをマッピングするための物理ア
ドレスに対する仮想を分解又は変更することによってそ
れが用いた受信バッファをアンエクスポートする(ステ
ップ118)。ノードBは、もしあれば、受信した短い
メッセージ次いで受信した長いメッセージの主データ部
分をプロセスすることによって短いメッセージ及び/又
はトリガメッセージのいずれかの受信に応答する(ステ
ップ120)。更に、又はステップ120の一部とし
て、また、ノードBは、受信バッファをエクスポートし
ないようにかつメッセージプロセシングアプリケーショ
ンプログラムによる受信バッファへの書込みアクセスを
可能にするように受信バッファに対するIMMUエント
リを変更するか又は分解する(ステップ122)。上記
したように、局所バッファにメッセージが局所的に書込
まれ、「クッキー」又は他の通知メッセージが受信シス
テムに送られ、そして受信システムが通信メッセージに
示された遠隔メモリ位置からのメモリを読取るために遠
隔読取り動作を実行するような代替えメッセージ送信技
術が存在する。このメッセージ送信技術は、図5に関し
て説明した、メッセージ送信技術と同じ、遠隔読取り動
作の使用による、基本問題を、有する。もちろん、従来
技術は、遠隔書込み動作を実行するために図5を参照し
て上述された動作のシーケンス上で多くの変化を含む。
しかしながら、上述したステップは、Solaris
(ソラリス:サンマイクロシステムの登録商標)のよう
な、UNIX(SCOの登録商標)型オペレーティング
システムを用いている分散型コンピュータシステムにつ
いて一般的である。
【0003】
【発明が解決しようとする課題】本発明は、(A)同期
遠隔書込み動作を行う場合、及び(B)明らかな又は実
際のメッセージ送信故障から復元すること、を除いて、
遠隔読取り動作を実行することの必要性を回避する機構
を提供することをその課題とする。
【0004】
【課題を解決するための手段】本発明の上記課題は、第
1のコンピュータから第2のコンピュータへメッセージ
を送信する方法において、第2のコンピュータのメモリ
における各メッセージの記憶を確認するために遠隔読み
出しオペレーションを実行することなしに、第2のコン
ピュータの対応メモリロケーションに各メッセージを直
接的に記憶するため、遠隔書込みオペレーションを用い
て第1のコンピュータから第2のコンピュータへメッセ
ージを送信する段階と、第2のコンピュータのメモリに
記憶されたメッセージを第2のコンピュータに処理させ
るため、第1のコンピュータから第2のコンピュータへ
トリガメッセージを送信する段階と、第2のコンピュー
タにて、各受信メッセージを処理し、アックメッセージ
を第1のコンピュータの対応メモリロケーションに記憶
する段階と、第1のコンピュータにて、以前に送信され
たメッセージのいずれかに対応するアックメッセージを
受信することに失敗したことを検出したときは、以前に
送信されたアンアックメッセージを第2のコンピュータ
が処理したかどうかを判断し、以前に送信されたが未だ
処理されていないメッセージを第2のコンピュータに処
理させるため、矯正動作を実行する段階と、を備える方
法によって達成される。本発明の方法では、更に、第2
のコンピュータへの各メッセージの送信中に、何らかの
メッセージ送信エラーがある場合には、そのようなメッ
セージ送信エラーを検出し、メッセージ送信エラーが検
出された場合には、第2のコンピュータへメッセージを
再送信する、ように構成してもよい。本発明の方法で
は、更に、メッセージを送信する前記段階は、各送信メ
ッセージについて、メッセージ状態値とシーケンス番号
を、第2のコンピュータの対応する受信メッセージキュ
ーエントリへ遠隔的に書き込むことを含んでおり、各受
信メッセージを処理する前記段階は、受信メッセージが
処理されたことを表示するために、対応受信メッセージ
キューエントリにおけるメッセージ状態値を更新するこ
とを含んでおり、矯正動作を実行する前記段階は、アッ
クメッセージが受信されなかった、以前に送信されたメ
ッセージに対応する、第2のコンピュータにおける受信
メッセージキューエントリの部分を、遠隔的に読み出す
ことを含んでおり、この遠隔的に読み出された部分はメ
ッセージ状態値とシーケンス番号とを含んでおり、矯正
動作を実行する前記段階は、更に、遠隔的に読み出した
メッセージ状態値とシーケンス番号とから、どの付加的
な矯正動作を実行するかを判断することを含んでいる、
ように構成してもよい。本発明の方法では、第2のコン
ピュータにおいて、第1のコンピュータからメッセージ
を受信するための受信バッファのセットを割り当て、第
1のコンピュータにおける各メッセージの受信を表示す
るためのエントリの循環受信メッセージキューを確立
し、第1のコンピュータにおいて、第2のコンピュータ
へ送信されたメッセージを示すためのエントリの循環ア
ックメッセージキューを確立し、且つ、キューにおける
現在エントリに対するポインタと、第2のコンピュータ
の受信メッセージキューにおける対応現在エントリに対
するポインタとを確立し、第2のコンピュータの受信バ
ッファにおける各メッセージの記憶を確認するために遠
隔読み出しオペレーションを実行することなしに、メッ
セージのシーケンスを第2のコンピュータの受信バッフ
ァの各々へ遠隔的に書き込み、各受信バッファに書き込
まれた各メッセージについて、受信メッセージキューの
各エントリにおけるメッセージ状態値とシーケンス番号
の記憶を確認するために遠隔読み出しオペレーションを
実行することなしに、第2のコンピュータの受信メッセ
ージキューの各エントリへ、各メッセージの送信とシー
ケンス番号とを表示するメッセージ状態値を遠隔的に書
き込み、アックメッセージキューの各エントリに各メッ
セージの送信を表示するメッセージ状態値を記憶し、各
メッセージとメッセージ状態値の遠隔書込み中に、何ら
かの送信エラーがある場合には、それらの送信エラーを
検出し、送信エラーが検出されたときは、各遠隔書込み
段階を反復し、第2のコンピュータにおいて、該第2の
コンピュータは、各受信メッセージを処理することによ
って各々のメッセージに応答するものであって、前記処
理には、第1のコンピュータの対応アックメッセージキ
ューエントリにアックメッセージを記憶し、メッセージ
が受信され処理されたことを表示するために各受信メッ
セージキューエントリに記憶されたメッセージ状態値を
変更する、ことが含まれており、第1のコンピュータに
おいて、以前に送信されたメッセージのいずれかに対応
するアックメッセージを受信することに失敗したことを
検出したときは、以前に送信されたアンアックメッセー
ジを第2のコンピュータが処理したかどうかを判断する
ために矯正動作を実行し、以前に送信されたアンアック
メッセージを第2のコンピュータが処理していないこと
を矯正動作が判断したときは、以前に送信されたアンア
ックメッセージを第2のコンピュータに処理させる、よ
うに構成してもよい。本発明の方法では、更に、矯正動
作を実行する段階は、更に、以前に送信された対応メッ
セージを第2のコンピュータシステムが受信し且つ処理
したことを、遠隔的に読み出されたメッセージ状態値と
シーケンス番号が表示したときは、第1のコンピュータ
の対応メモリロケーションにアックメッセージを記憶
し、メッセージ状態値とシーケンス番号を第2のコンピ
ュータの対応受信メッセージキューへ書き込むことに成
功しなかったことを、遠隔的に読み出されたメッセージ
状態値とシーケンス番号が表示したときは、メッセージ
状態値とシーケンス番号を第2のコンピュータの対応受
信メッセージキューエントリへ書き込む前記段階を反復
する、ことを含むように構成してもよい。また、本発明
の上記課題は、分散型コンピュータシステムにあって、
第1のコンピュータから第2のコンピュータへメッセー
ジを遠隔的に書き込むための装置において、第1のコン
ピュータは、CPUと、メッセージを送信し受信するた
めのネットワークインタフェースと、第2のコンピュー
タのメモリにおける各メッセージの記憶を確認するため
に遠隔読み出しオペレーションを実行することなしに、
各メッセージを第2のコンピュータの対応メモリロケー
ションに直接的に記憶させるため、第1のコンピュータ
から第2のコンピュータへネットワークインタフェース
を介して遠隔書込みオペレーションを用いてメッセージ
を送信するために、第1のコンピュータのCPUによっ
て実行するメッセージ送信手続と、を備えており、前記
メッセージ送信手続は、第2のコンピュータへの各メッ
セージの送信中に、何らかのメッセージ送信エラーがあ
る場合には、これらのメッセージ送信エラーを検出する
ための命令を含んでおり、前記メッセージ送信手続は、
メッセージ送信エラーが検出されたときは第2のコンピ
ュータへメッセージを再送信するための命令を含んでお
り、前記メッセージ送信手続は、第2のコンピュータの
メモリに記憶されたメッセージを第2のコンピュータに
処理させるために第1のコンピュータから第2のコンピ
ュータへトリガメッセージを送信するための命令を含ん
でおり、第2のコンピュータは、CPUと、メッセージ
を送信し受信するためのネットワークインタフェース
と、第1のコンピュータから受信された各メッセージを
処理するために、および、ネットワークインタフェース
を介してアックメッセージを第1のコンピュータの対応
メモリロケーションに遠隔的に書き込むために、第2の
コンピュータのCPUによって実行する受信メッセージ
手続と、を備えており、第1のコンピュータにおいて、
前記メッセージ送信手続は、以前に送信されたメッセー
ジのいずれかに対応するアックメッセージを受け取るこ
とに失敗したことを検出して、以前に送信された各アン
アックメッセージについて以前に送信されたアンアック
メッセージを第2のコンピュータが処理したかどうかを
判断するための矯正動作を実行し、且つ、以前に送信さ
れたが未だ処理されていないアンアックメッセージを第
2のコンピュータに処理させるための命令を含んでいる
装置によって達成される。本発明の装置では、更に、第
2のコンピュータは、第1のコンピュータからメッセー
ジを受信するための受信バッファのセットと、第1のコ
ンピュータにおける各メッセージの受信を表示するため
のエントリの循環受信メッセージキューと、を有し、第
1のコンピュータは、第2のコンピュータへ送信された
メッセージを示すためのエントリの循環アックメッセー
ジキューと、キューにおける現在エントリへのポイン
タ、および、第2のコンピュータの受信メッセージキュ
ーにおける対応現在エントリへのポインタと、を有して
おり、矯正動作を実行する前記命令は、以前に送信され
たアンアックメッセージを第2のコンピュータシステム
が既に処理したことを矯正動作が判断したときは、アッ
クメッセージを第1のコンピュータの対応アックメッセ
ージキューエントリに記憶するための命令を含んでい
る、ように構成してもよい。本発明の装置では、更に、
第2のコンピュータは、第1のコンピュータからメッセ
ージを受信するための受信バッファのセットと、第1の
コンピュータにおける各メッセージの受信を表示するた
めのエントリの受信メッセージキューと、を有してお
り、第1のコンピュータは、第2のコンピュータへ送信
されたメッセージを示すためのエントリのアックメッセ
ージキューと、キューにおける現在エントリへのポイン
タ、および、第2のコンピュータの受信メッセージキュ
ーにおける対応現在エントリへのポインタと、を有して
おり、前記メッセージ送信手続は、各メッセージの送信
を表示するメッセージ状態値とシーケンス番号とを、第
2のコンピュータの受信メッセージキューの各エントリ
へ遠隔的に書き込むための命令を有しており、前記受信
メッセージ手続は、受信メッセージが処理されたことを
表示するために、受信メッセージに対応する受信メッセ
ージキューエントリのメッセージ状態値を更新するため
の命令を含んでおり、矯正動作を実行する前記命令は、
アックメッセージが受信されていない以前に送信された
メッセージに対応する第2のコンピュータにおける受信
メッセージキューエントリの部分を、遠隔的に読み出す
ための命令を含んでおり、この遠隔的に読み出した部分
はメッセージ状態値とシーケンス番号とを含んでおり、
矯正動作を実行する前記命令は、更に、遠隔的に読み出
したメッセージ状態値とシーケンス番号から、どの付加
的な矯正動作を実行するかを判断することを含んでい
る、ように構成してもよい。本発明の装置では、矯正動
作を実行する前記命令は、更に、以前に送信された対応
メッセージを第2のコンピュータシステムが受信し処理
したことを、遠隔読み出し状態値と以前に送信された対
応メッセージが表示したときは、アックメッセージを第
1のコンピュータの対応メモリロケーションに記憶する
ための命令と、メッセージ状態値とシーケンス番号を第
2のコンピュータの対応受信メッセージキューへ書き込
むことに成功しなかったことを、遠隔的に読み出された
メッセージ状態値とシーケンス番号が表示したときは、
メッセージ状態値とシーケンス番号の第2のコンピュー
タの対応受信メッセージキューエントリに対する書き込
みを反復するための命令と、を有するように構成しても
よい。
【0005】
【発明の実施の形態】本発明は、遠隔書込み動作を実行
し、かつ分散型コンピュータシステムにおける一つのノ
ードから別のノードにメッセージを送るためのシステム
及び方法である。分散型コンピュータシステムは、その
あるものがサーバクラスタの外側のコンピュータ視点か
ら単一サーバノードとして動作するコンピュータノード
のクラスタの一部でありうる、多重コンピュータ又はコ
ンピュータノードを一般的に有する。第2のコンピュー
タは、読取りバッファを割当てられたグローバルアドレ
ス範囲にマップする一つ以上のMMU(IMMU)エン
トリを生成しかつ記憶することによって一組の受信バッ
ファと関連するメモリを第1のコンピュータにエクスポ
ートする。割当てられたグローバルアドレス範囲は、メ
モリエクスポートメッセージの第1のノードに通信され
る。第1のコンピュータでは、メモリエクスポートメッ
セージは、メモリエクスポートメッセージにおいて特定
されたグローバルアドレス範囲を局所物理アドレスの対
応する範囲にマップするために一つ以上の出力MMU
(OMMU)エントリが生成されかつ記憶されるよう
な、メモリインポート動作を実行することによってサー
ビスされる。第1のコンピュータのマップされた局所物
理アドレスは、そのコンピュータのメモリの位置ではな
い。第1のコンピュータは、第2のコンピュータのメモ
リにおける各メッセージの記憶を確認するために遠隔読
取り動作を実行することなく、第2のコンピュータの対
応メモリ位置(即ち、受信バッファ)に各メッセージを
直接的に記憶するために遠隔書込み動作を用いて第2の
コンピュータに一連のメッセージを送る。第1のコンピ
ュータは、第2のコンピュータへのデータの送信中に、
もしあらば、送信エラーを検出し、そして送信エラーが
検出された場合には、第2のコンピュータにメッセージ
を再送付する。第1のコンピュータは、また、第2のコ
ンピュータに第2のコンピュータのメモリに記憶された
メッセージをプロセスすることを促すために第2のコン
ピュータにトリガメッセージを送る。第2のコンピュー
タは、各受信メッセージをプロセスしかつ第1のコンピ
ュータの(ackメッセージキューエントリの)対応メ
モリ位置に肯定応答メッセージを記憶するために遠隔書
込み動作を用いる。第1のコンピュータは、先に送られ
たメッセージのいずれかに対応している肯定応答メッセ
ージを受信することの失敗を検出することにより、第2
のコンピュータが肯定応答されていない先に送られたメ
ッセージのそれぞれをプロセスしたかどうかを決定する
ための矯正動作を実行する。矯正動作が第2のコンピュ
ータが肯定応答されていない先に送られたメッセージを
プロセスしていないということを決定した場合、第1の
コンピュータは、肯定応答されていない先に送られたメ
ッセージをプロセスすべく第2のコンピュータを促す。
矯正動作が第2のコンピュータが肯定応答されていない
先に送られたメッセージを既にプロセスしたということ
を決定した場合、第1のコンピュータは、対応ackメ
ッセージキューエントリに肯定応答メッセージを記憶す
る。本発明の特徴は、メッセージ送信故障がメッセージ
データを受信システムに送信している間、または受信シ
ステムが送信システムに肯定応答メッセージを送信して
いる間、の故障によってもたらされたかを決定すること
が確実にできるということである。この決定を確実に行
うということは、重要でありかつ、メッセージ送信エラ
ーの発生を検出ためではなく、メッセージ送信エラーを
解析するためにだけ隔読取り動作を用いるシステムにお
いて容易に達成されない。二度同じメッセージを受信シ
ステムに送らないことが重要であるので、そのような決
定を正確に行うことは、重要である。二度同じメッセー
ジを送ることは、受信システムに一度だけ実行されるべ
き動作を二度実行させる。各メッセージは、適格なシス
テム動作を確保するために正確に一度だけ受信システム
によって確実に受信されかつプロセスされなければなら
ない。
【0006】
【実施例】本発明は、特に遠隔書込み動作が非常に(し
かし完全ではなく)信頼できるということが分かってい
るような環境において、より効率的に完全に信頼できる
メッセージ送信を行う方法に関する。そのような環境
は、図6に示すサーバクラスタ環境である。 サーバクラスタ 図6を参照すると、多重CPUサーバ202及び一つ以
上の通信ネットワーク206を介してサーバに結合され
る多数のクライアントコンピュータ204を含む分散型
コンピュータシステムが示されている。サーバ202
は、単一のサーバコンピュータによって供給されるより
も多くの計算サービスをクライアント204に供給する
ようにコンピュータ210の一つ以上のクラスタ208
を含む。サーバ202は、「サーバクラスタ」としばし
ば呼ばれる。本明細書の目的に対して、情報を共有する
ことが必要である二つのサーバコンピュータ210が同
じクラスタ210又は異なるクラスタであるということ
は、無関係である。計算及びファイルタスクは、サーバ
のコンピュータ210にわたり分散される。その結果、
一つのサーバコンピュータで実行されているプロセスに
よって必要なデータは、別のサーバコンピュータに配置
されうる。サーバクラスタ202内のノード間のメッセ
ージ通信は、高速でかつ信頼性が高く、エラー又は故障
の率は、一般に、数百万メッセージに一つよりも少ない
割合である。本発明を説明する目的に対して、用語「せ
んだ 本発明を説明する目的に対して、用語「センダ」
(又は送信ノード)及び「レシーバ」(又は受信ノー
ド)は、両方ともサーバ202内のコンピュータ210
を参照するために用いられる。しかしながら、本発明
は、また、二つのコンピュータ間のデータの遠隔書込み
が信頼性が高いということが分かっている限り、あらゆ
る「真」のクライアントコンピュータ204とサーバク
ラスタ202のサーバコンピュータ210との間の遠隔
書込みを実行するためにも用いることができる。メッセ
ージ送信故障が、(4096バイトよりも少ない平均長
さを有している)数百万メッセージに一度よりも少ない
ような、非常に低い割合で発生する場合、各メッセージ
の成功裏の送信を検証するための遠隔読取り動作の使用
は、高価である。しかしながら、信頼性があるノード間
メッセージ通信を供給するために、全てのかなりところ
どころにあるメッセージ送信エラー又は故障は、自動的
に検出されかつ修正されなければならない。本発明は、
(A)同期遠隔書込み動作を行う場合、及び(B)明ら
かな又は実際のメッセージ送信故障から復元すること、
を除いて、遠隔読取り動作を実行することの必要性を回
避する機構を提供する。 信頼性があるメッセージ送信手続きの概要 図7は、本発明の改良型メッセージ送信手続きのかなり
簡素化した図である。受信ノードによって実行されるス
テップは、図5に示したものと同じなので、送信ノード
によって実行されるステップのみを示す。この手続きの
ステップのあるものは、図5に関して上述したものと同
じであり、従って、図5と同じ参照番号が割当てられて
いる。新しい又は変更されたステップは、新しい参照番
号が割当てられている。第1のステップは、送信ノード
に対し、メモリエクスポートメッセージが受信された場
合、受信ノードによってエクスポートされているメモリ
をインポートするためにOMMUエントリをセットアッ
プすることである(ステップ104)。ステップ104
でセットアップされたOMMUエントリは、受信メモリ
エクスポートメッセージで特定されたグローバルアドレ
スの範囲をサーバノードの物理メモリの対応範囲にマッ
プする。必要ならば(例えば、ネットワークインタフェ
ースに割当てられた物理アドレスの十分に大きな連続範
囲が利用可能でなく及び/又はマップアドレス範囲のサ
イズが2ページに等しくないならば)、サーバノード
は、特定されたグローバルアドレス空間を二つ以上の局
所物理アドレス範囲にマップするように二つ以上のOM
MUエントリを生成する。一度ノードAがノードBにメ
ッセージを送る準備ができたならば、ノードAのメッセ
ージ送信手続きは、ノードBのアプリケーション手続き
によってプロセスするのに最適な所定の方法でデータが
局所送信バッファにフォーマットされかつ記憶されると
いうことを基本的に意味する、ノードBに送られるデー
タを集める(ステップ106)。代替え実施例では、送
信されるべきデータは、遠隔受信バッファに直接集めら
れ、そのような場合にはステップ302のOpenBa
rrier手続きコールは、長いメッセージのデータ部
分の遠隔書込み中に送信エラーを検出するようにデータ
マーシャリングステップの前に実行されることが必要で
ある。送信されるべきデータが局所バッファに集められ
た後、OpenBarrier(BarrierVal
ue)手続きコールが行われる(ステップ302)。O
penBarrier()手続きは、ネットワーク通信
エラー事象カウント(CEEcount)を局所変数
(BarrierValue)に記憶する。対応Clo
seBarrier(BarrierValue)手続
きが後でコールされた場合、現行ネットワーク通信エラ
ー事象カウントCEEcountは、局所的に記憶され
た値BarrierValueと比較される。、二つが
等しいならば、0のリターンコードがリターンされ、二
つが等しくなければ、非ゼロリターンコード(例えば、
rc=1)がリターンされる。OpenBarrier
及びCloseBarrier手続きは、遠隔読取り動
作とはかなり異なる。OpenBarrier手続き
は、なんであれ実行スレッドの連続した動作をブロック
しない;そして、CloseBarrier手続きは、
送信システムのネットワークインタフェース(NICカ
ード)による全てのペンディング遠隔書込み動作が完了
するまで、実行スレッドの動作をブロックするだけであ
る。CloseBarrier手続きによってもたらさ
れたブロッキングの持続時間は、CloseBarri
er手続きが、受信システムが受信システムのネットワ
ークインタフェースによって実行されたもの(即ち、グ
ローバルアドレスを局所物理アドレスに変換しかつそれ
らの局所物理アドレスを用いて受信システムの内部バス
に書込まれたデータを送信すること)以外の動作を実行
することを待つ必要がないので、遠隔読取り動作によっ
てもたらされたブロッキングの持続時間と比べて非常に
短い。バリア命令は、コンピュータノード間の通信チャ
ネルにわたりパケットを送信する機構を取り扱うパケッ
トレベル移送ハードウェア及びソフトウェアによって維
持されるエラーカウント値を監視する。パケットレベル
移送ハードウェア及びソフトウェアは、パケット送信中
の送信エラー、チャネル利用可能性問題、及びNICカ
ードエラーを検出し、かつパケットがその意図した宛先
(例えば、受信バッファ)への通信チャネルにわたり成
功裏に送信されなかったことを示しうるあらゆる型のエ
ラーが発生する度にエラーカウンタを増分する。バリア
命令は、遠隔的に位置されたコンピュータの特定された
メモリ位置に対する純粋な「遠隔書込み」を実行する基
礎を成しているタイミング又は機構を変更しないので、
バリア命令は、遠隔読取り動作によって課せられるより
もさらに少ない待ち時間及びリソース使用負担を課す。
OpenBarrier手続きがコールされた後、長い
メッセージのデータ部分が送られる受信バッファに割当
てられたグローバルアドレスに送信バッファの内容を書
込むために遠隔書込みが実行される(ステップ30
4)。グローバルアドレスへのデータの書込みは、それ
らグローバルアドレスに対する送信ノードのOMMUエ
ントリに示されているように、送信ノードの通信インタ
フェースに、それらのグローバルアドレスと関連するノ
ードに書込まれるデータを送信させる。このデータ送信
動作(ステップ108)は、「プログラムI/O」命令
による直接CPU制御下で実行されうるか、又はそれ
は、通信インタフェース(NIC)DMA動作によって
実行されうる(即ち、その場合にはネットワークインタ
フェースのDMAロジックは、局所物理メモリから通信
ネットワークへのデータの転送を取り扱う)。一度遠隔
書込みステップ304が成功裏に完了したならば、ノー
ドBの「受信メッセージキュー」に短いメッセージを記
憶するために別の遠隔書込み動作が実行される(ステッ
プ306)。短いメッセージは、「クッキー」又はステ
ップ108で送信された主メッセージの位置を示す他の
データ構成を一般的に含む。代替的に、送られるメッセ
ージ全体が非常に短いならば(例えば、60バイト未
満)、ステップ302及び304は、省略され、かつ送
信されたメッセージ全体は、ステップ306により受信
キューに記憶される。短い又は制御メッセージが受信ノ
ードの受信メッセージキューに書込まれた後、Clos
eBarrier(BarrierValue)手続き
がコールされる(ステップ308)。0のリターンコー
ドがリターンされたならば(バリアがオープンの間通信
システムエラーが発生しなかったことを示している)、
トリガメッセージ(Wakeupメッセージ又は割込み
メッセージとして種々に知られる)は、ノードBのネッ
トワークインタフェースに送られ(ステップ116)、
受信メッセージをプロセスするためのノードBにおける
手続きの実行をトリガする(例えば、何の新しいメッセ
ージが受信されたか、等を決定するために受信メッセー
ジキューを検査することによって)。CloseBar
rierコールがバリアがオープンである間に通信エラ
ーが発生したことを示している、非ゼロリターンコード
値をリターンしたならば、手続きは、メッセージの送信
を繰返すべくステップ302にリターンする。所定の数
の繰返しの後でデータ送信が不成功であり続けるなら
ば、メッセージ送信故障を示すべくエラーメッセージが
送信及び受信コンピュータのオペレータに送られる(ス
テップ310)。ある地点で、通常、メッセージを送っ
た直後に、ノードAのメッセージ送信スレッドは、先に
インポートされたメモリに対するOMMUエントリを分
解し又は変更することにそれが用いた受信バッファをア
ンエクスポートする(ステップ118)。 コンピュータノード構成 図8は、サーバクラスタ200(図6参照)内のコンピ
ュータ210のブロック図を示している。コンピュータ
210は、特定遠隔メッセージング動作に関する送信又
は受信ノードのいずれかでありうる。コンピュータ21
0は、CPU320、内部通信又はメモリバス322、
ランダムアクセスメモリ324、通信又はネットワーク
インタフェース(NIC)326、高速磁気ディスクの
ような、不揮発性、非ランダムアクセスメモリ装置32
8、及び対応ディスクコントローラ330を含む。好ま
しい実施例では、NIC326及びディスクコントロー
ラ330は、PCIバス334に結合され、PCIバス
334は、次いで、バスブリッジ336によって主メモ
リバス322に結合される。コンピュータのメモリ32
4は、ディスク記憶装置328に関して、通常、以下の
ものを記憶する: ・ オペレーティングシステム340(例えば、サンマ
イクロシステムズのソラリスオペレーティングシステ
ム); ・ 手続きコール及びリターンの間にパラメータを渡す
ため、並びに当業者によく知られた他の目的に用いる、
各スレッドに対するプログラムパラメータスタック34
2; ・ 送信及び受信バッファの割当てを起動すること、別
のノードへのデータの送信を起動すること、遠隔的に配
置されたディスク記憶装置からデータを要求すること、
等ができるアプリケーションプログラムを含んでいるア
プリケーションプログラム344; ・ ネットワークインタフェース326を制御しかつそ
こにおけるIMMU及びOMMUの使用を管理するため
のNICドライバ346(図8には示されていない); ・ 遠隔ノードに短い及び長いメッセージを送るための
(オペレーティングシステム340の一部として実施さ
れるのが好ましい)信頼性があるメッセージ送信手続き
348; ・ 受信メッセージをプロセスし(即ち、プロセスする
ために適当なアプリケーションにそれらを受渡す)、か
つ受信したメッセージキューを管理するための、(オペ
レーティングシステム340のカーネルの一部として実
施されるのが好ましい)メッセージ受信手続き350; ・ 別のノードに送られるデータ及びメッセージを集め
るための送信バッファ352; ・ 他のノードからデータを受信する受信バッファ35
4; ・ それらがデータを受信バッファ2354に送信した
後に他のノードから「完了した」メッセージ等を受信
し、かつ他のノードから短いメッセージを受信するため
の受信メッセージキュー356; ・ 他のノードに送信されたメッセージの状態を示して
いるデータを記憶するためのackメッセージキュー3
58;及び ・ 送信及び受信メッセージの両方に対する受信メッセ
ージ及びaskメッセージキューの使用を管理するため
のメッセージ及びackキューポインタ及び局所変数3
60. 受信メッセージキュー及びAckメッセージキューデー
タ構成図9を参照すると、Ackメッセージキュー37
0は、それぞれが別のノードに送信された一つのメッセ
ージの状態を追尾するために用いられる、一組のN(例
えば、16又は32)ackエントリ380で構成され
ている。各ackエントリ380は、以下の情報フィー
ルドを含む: ・ 二つの値:メッセージは、送られたが、受信ノード
によってまだ肯定応答されていないということを示す、
Msg_Sent、及び 受信ノードによって対応メッ
セージが肯定応答されかつプロセスされたということを
示す、Msg_Emptyの一つを有することができ
る、Status382. ・ 1又は0に等しい、Gen384.Genフィール
ド値の目的は、対応受信メッセージキューエントリのs
tatus値が、(A)このackキューエントリに対
する最新メッセージ、又は(B)このackキューエン
トリに対する前のメッセージ、に対応するかどうかを決
定することである。ackメッセージキューエントリの
それぞれに記憶されるべきGen値は、ackメッセー
ジキューの全てのスロットが用いられる度にトグルされ
る。それゆえに、Gen=0値は、Nメッセージの送信
に用いられ、その地点で次のackキューエントリが再
びベースでありかつGen値が次のNメッセージに対し
てGen=1に変更される。Genフィールド384
は、メッセージが送られたノードが、受信ノードによる
メッセージのプロセシングを可能にする、Msg_Se
nt状態値を実際に受信したかどうかを決定することを
支援するために用いられる。特に、ackキューエント
リに対応している受信メッセージキューエントリ390
がackメッセージキューエントリ380とは異なるG
en値394を有するならば、それは、メッセージに対
するMsg_Sent状態値が成功裏に受信されなかっ
たことを意味する。 ・ 対応メッセージが宛先ノードに送信された時間を表
す、TimeSent386。メッセージの送信がその
送信のある一定の時間量内で肯定応答されない場合、特
別な測定が問題を解決するために(以下に説明するよう
に)行われる。各ノードで維持されるポインタ及び生成
値は、以下の通りである: ・ CurrentAckポインタ361は、現在用い
られているackキューエントリをポイントする。 ・ CurrentMsgポインタ362は、現行ac
kキューエントリ380に対応する受信ノードのメッセ
ージキューエントリ390をポイントする。 ・ CurrentGen値363は、現行ackキュ
ーエントリに対するgen値である。 ・ MyAck364、MyMsg365及びMyGe
n366値は、送信された最後のメッセージに対するポ
インタ及び生成値を追尾するために用いるCurren
tAck361、CurrentMsg362及びCu
rrntGen363値の局所コピーである。 ・ RecAck367、RecMsg368及びRe
cGen369値は、受信メッセージをプロセスしかつ
各そのようなメッセージを送ったノードに肯定応答を送
るために受信メッセージ手続きによって用いられるポイ
ント及び生成値である。 メッセージが送信される度に、(A)送信ノードは、a
ckキューエントリ380の対応値を記憶し、(B)C
urrentAck361、CurrentMsg36
2及びCurrentGen363値は、MyAck3
64、MyMsg365及びMyGen366にコピー
され、かつ(C)CurrentAck361及びCu
rrentMsg362ポインタを次のack及び受信
メッセージキューエントリに対する点に進めるbump
()手続きがコールされる。現行ackエントリがac
kメッセージキューのトップエントリであれば、bum
p()手続きは、(受信ノードの)ベースackメッセ
ージキューエントリ及びベース受信メッセージキューエ
ントリをそれぞれポイントすべくCurrentAck
361及びCurrentMsg362ポインタをリセ
ットし、かつその前の値から次の(異なる)値にCur
rentGen453を更新する。受信メッセージキュ
ー356は、それぞれが別のノードから受信した一つの
メッセージを記憶するために用いられる、一組のN(例
えば、16又は32)エントリ390で構成されてい
る。各受信メッセージエントリ390は、以下の情報フ
ィールドを含む: ・ 三つの値:メッセージは受信されたが、受信ノード
によってまだプロセス又は肯定応答されていないという
ことを示す、Msg_Sent、メッセージがプロセス
されているが、まだ肯定応答されていないということを
示す、Msg_Rcvd,及びメッセージのプロセシン
グが起動されかつ肯定応答が送信ノードに送信されたと
いうことを示す、Msg_Emptyの一つを有するこ
とができる、Status392. ・ 1又は0に等しく、かつ送信ノードによってキュー
エントリに書込まれた生成値である、Gen394. ・ メッセージの型及びそれをプロセスするために必要
な手続きを示す、Opcode396.例えば、あるo
pcodesは、メッセージがプロトコルメッセージで
あるということを示し、別のopcodesはメッセー
ジがアプリケーションプログラムによってプロセスされ
ることが必要であるということを示す。 ・ 短いメッセージの本体、又はメッセージが配置され
るような受信バッファの位置を示すために用いられる一
つ以上の「クッキー」データ構成のいずれかを表す、D
ata398. 好ましい実施例では各受信メッセージキューエントリの
status及びGenフィールド392、394は、
単一バイト又はワードに記憶され、かつ、両方のアイテ
ムの記憶が一緒に成功するか失敗しなければならないの
で、単一書込み動作を用いて一緒に書込まれるのが好ま
しい。即ち、メッセージキューエントリに成功裏に書込
まれることは、status値に対してまったく受け入
れることができないが、Gen値の書込みに対して失敗
することは、受け入れる、又はその逆である。より広い
観点から、Genフィールド値は、単一のバイナリデジ
ット(即ち、単一ビット)シーケンス番号である。代替
え実施例では、Genフィールド値は、複数のビットシ
ーケンス番号によって置換えることができ、各Genフ
ィールドシーケンス番号は、そのエントリに対するメッ
セージが受信ノードに送られる度にackキューエント
リに対して増分される。対応受信メッセージキューエン
トリに記憶されたGenフィールドシーケンス番号は、
それが送信ノードからStatus及びGenフィール
ド値を受け取った最後のメッセージを示す。各ノードが
メッセージを送りかつ受取るので、各ノードは、それが
メッセージを送る各他のノードに対する送信ノードデー
タ構成の一つの完全な組を有し、かつそれがそれからメ
ッセージを受取る各ノードに対する受信ノードデータ構
成の一つの完全な組も有する。
【0007】短いメッセージの遠隔書き込みプロシージ
ャの好ましい実施例 このドキュメントの目的のため、「長いメッセージ」
が、バッファに書き込まれたデータ部分と、普通、1又
はそれ以上の「クッキー(長いメッセージのデータ部分
が格納される場所(ロケーション)を指している)」を
含む短いメッセージとから成るように形成されている。
しかしながら、便宜上、長いメッセージのデータ部分
が、「長いメッセージ」として参照される。
【0008】図10を参照すると、好ましい実施例にお
いて、長いメッセージのデータ部分の送信の後に、いず
れかの短いメッセージ(コントロールメッセージ又は完
了メッセージとと呼ばれることもある)を送信すると
き、Send Short Procedureが送信
ノードによってコールされる。このプロシージャ、及び
それによってコールされたプロシージャは、長いメッセ
ージのデータ部分が短いメッセージの送信の前に送信さ
れたかどうかに関して、仮定をしない。
【0009】ステップ400において、Send Sh
ort Message プロシージャは、通信チャン
ネルがメッセージを、他の部分すなわち送信されるべき
短いメッセージに関連する宛て先ノードに、送信するの
に必要とされる通信チャンネルが利用可能であるかどう
かを判定する。通信チャンネルが利用できない場合、プ
ロシージャは、ECanceled(ステップ402)
のリターンコード用いて終了し、通信チャンネルが利用
可能でなかったというコーリングルーチンの信号を発す
る。通常、コーリングルーチンは、外部モニター処理が
通信チャンネルが適正に稼働していないと判定するま
で、所定の時間間隔で分離された多数の回数、短いメッ
セージの送信を再試行するであろう。
【0010】もし、チャンネルが利用可能である場合、
Send Controlプロシージャが、図11に関
して以下に記述されるように、コールされる(ステップ
404)。このプロシージャコールのパラメータは以下
の通りである。 ・msg:受信コンピュータノードの受信メッセージキ
ューに送信されるべきメッセージ又はデータを表す。 ・CalledWithOpenBarrier:Op
enBarrier(OpenValue)プロシージ
ャコールが、コーリングプロシージャ(例えば、Sen
d Short Messageをコールするプロシー
ジャ)によって作られた場合にTrueに等しいブーリ
アンパラメータである。基本的には、長いメッセージが
送信中ならば、CalledWithOpenBarr
ierはTrueであり、それ以外は、Falseであ
る。 ・BarrierValue:OpenBarrier
()プロシージャコールが実際にコーリングプロシージ
ャによってコールされた場合に、そのOpenBarr
ier()プロシージャコールによって先にリターンし
た値である。Send Controlプロシージャ
(ステップ404)は3つのリターンコード(rc)の
1つをリターンさせる。 ・rc=0,短いメッセージが、何らの通信システムエ
ラーなしに、遠隔ノードに書き込まれたことを意味す
る。これは、短いメッセージが、遠隔ノードの受信メッ
セージキューに正確に格納されたことを意味する。 ・rc=EBusy,遠隔ノードの受信メッセージキュ
ーが一杯であり、新メッセージの受信の用意が未だでき
ていないことを示す。 ・rc=EAgain,通信システムエラー(バリア故
障と呼ばれる)が、短いメッセージの送信中に検出され
たことを示す。
【0011】Send Controlが、0のリター
ンコード(rc)をリターンすると、Send Sho
rt Messageプロシージャは、単純に0のリタ
ーンコードで終了して、短いメッセージが、遠隔ノード
に書き込まれたことをコーリングプロシージャに告げ
る。Send Controlが、EBusyのリター
ンコード(rc)をリターンすると、Send Sho
rt Messageプロシージャは、EBusyのリ
ターンコードで終了して、遠隔受信ノードの受信メッセ
ージキューが一杯であり、新メッセージの受信の用意が
未だできていないことをコーリングプロシージャに告げ
る。
【0012】最後に、Send Controlが、E
Againのリターンコード(rc)をリターンし、且
つコーリングプロシージャが先にOpenBarrie
r()(ステップ406−N)をコールしていない場
合、Send Short Messageプロシージ
ャは、ステップ400を繰り返すことによって、短いメ
ッセージを送信しようと一旦再試行する。もし、コーリ
ングプロシージャが先にOpenBarrier()
(ステップ406−Y)をコールした場合、それは、バ
リア故障が長いメッセージのデータ部分の送信中の故障
を示すことがあることを意味する。その結果、Send
Short Messageは、EAgainのリタ
ーンコードで終了して、もし長いメッセージが送信され
つつある場合には長いメッセージのデータ部分の再送信
も含めて、全メッセージの送信のプロシージャを再スタ
ートさせるべきであることをコーリングプロシージャに
告げる。図11(図11A及び図11Bを含む)を参照
すると、Send Control手続きは次のとおり
に働く。各メッセージについて単一のメッセージ伝送ロ
ックがあり、そのackメッセージキューはそのack
メッセージキューを使用する手続きの全てにより分担さ
れ、また、ackメッセージキューを、そのackメッ
セージキューに2つの手続きが同時に作用することから
保護する。ロックは一般的にオペレーティングシステム
プリミティブであって、その特定の実施は、本発明を実
施するコンピュータにより使用されるべきオペレーティ
ングシステムに依存する。図11ないし図14のフロー
チャートにおいて、及び、以下の説明において、記号
「!=」は、「等しくない」という意味である。そこ
で、条件ステートメントは: If CurrentAck.Status!=Msg
Empty {do X}は、CurrentAck.Status
がMsg Emptyに等しくない場合には、オペレー
ションXが実行されることを示している。Send C
ontrol手続きは、ackメッセージキューについ
て、ロックを獲得することにより始まり(ステップ41
0)、これは、手続きが、必要である限り、ロックを獲
得するまで、ステップ410において待機することを意
味する。ステップ412ないし418は、Curren
tAckポインタ(図9参照)により指示された現在の
ackキューエントリが、前に送信されたメッセージに
ついて有効な値を依然として含むかどうかをチェックす
る。特に、CurrentAck,StatusがMs
g Emptyに等しい場合(412−N)には、(前
に送信されたメッセージについて)現在のackキュー
エントリにおける状態情報は、もはや必要ではなく、処
理がステップ420において続行される。他の場合(4
12−Y)には、送信システムは、その状態情報が現在
のackキューエントリに依然として記憶されたままで
ある、前に送信されたメッツセージについて、受信シス
テムから確認をまだ受け取っていない。結果として、C
heck for Error手続きがコールされ(4
14)、これについては、図13に関して後述する。C
heck for Error手続きがノンゼロリター
ンコードに戻る場合(416−Y)には、ロックが解除
され、Send Control手続きを終了して、C
heck for Error手続きのリターンコード
をそれ自身のリターンコードとして通過させ、従って、
それは、コール手続き(すなわち、Send Shor
t Message手続き)に通される。Checkf
orError手続きがゼロリターンコードに戻る場合
(416−N)には、それは、前に送信されたメッセー
ジが、今、受信システムにより受信され確認されたこと
が決定されたことを意味し、従って、現在のメッセージ
の処理がステップ420において続行され得る。Sen
d Control手続きが、コール手続き(ステップ
420)により既に作成されているOpen Barr
ier手続きでコールされていなかった場合には、Op
enBarrie(BarrierValue)手続き
コールは、今、短いメッセージの伝送を「保護」するよ
うに作成される(ステップ422)。次に、現在の短い
メッセージを受信システムの受信されたメッセージキュ
ーに送信するように、遠隔書き込みが実行される。成功
ならば、短いメッセージが、受信されたメッセージキュ
ーのCurrentMsgエントリに記憶されるであろ
う。その後、CloseBarrier(Barrie
rValue)手続きのコールが作成されて(ステップ
426)、短いメッセージの伝送中に通信システムのエ
ラーが起きたかどうかを決定する。通信システムが検出
された場合には、ロックが解除されてSendCont
rol手続きがEagainのリターンコードで終了し
て(ステップ428)、メッセージ伝送が失敗したこと
を指示する。通信システムエラーが検出された場合に
は、現在のackエントリの状態値が、MsgSent
にセットされて(ステップ430)、メッセージが送信
されたことを記録する。その後、遠隔書き込みオペレー
ションが実行されて「MsgSent」の値を受信シス
テムの受信されたメッセージキューの現在のエントリの
状態フィールドに書き込むと共に、現在のジェネレーシ
ョン値(CurrentGen)を受信されたキューエ
ントリのジェネレーションフィールドに書き込む(ステ
ップ432)。好ましい実施例では、各受信されたメッ
セージキューエントリの状態及びジェネレーションフィ
ールドが単一のバイト又はワードに記憶され、単一のオ
ペレーションを使用して書き込まれる。64バイトのよ
うに、遠隔書き込みのアトミックユニットが大きい他の
実施例では、状態及びジェネレーションフィールド値を
含む制御メッセージの全体が、単一の遠隔書き込みオペ
レーションとしてすべて書き込まれる(例えば、ステッ
プ424において、バリア内部)。
【0013】受信されたメッセージキューエントリーに
記憶されたとき、Hsg Sent値は受信システムに
書き込まれた後に、受信システムによって処理するよう
に用意されたあるということを通知する。しかし、もし
受信側がすでに送信されたメッセージを処理をすでに完
了していた場合には、新しいメッセージに対する受信メ
ッセージキューで起動されて関しするスレッドを有しな
い可能性がある。したがって、Msg Sent値が受
信メッセージキューエントリー、WakeupRmot
eプロシージャが呼び出され、これは、受信システムに
トリガ(インタラプト)メッセージを送信し、次に、受
信システムを促して、受信メッセージキューでメッセー
ジを処理するプロシージャを実行する。
【0014】ショートメッセージが送付され、かつWa
keupコールが既知のエラーなしで受信ノードに送信
されると、Send ControlプロシージャがC
urrentMsg、CurrentAck及びCur
rentGenポインタとMyMsg、MyAck及び
MyGenローカル変数内の発生変数のコピーをする。
さらに、バンプ()プロシージャが呼び出され、Cur
rentMsg、CurrentAckポインタを進め
る(ステップ436)。その結果、HyHsg、MyA
ck及びMyGenローカル変数は、最後の送信メッセ
ージに関する情報を保持する。ステップ438で、ロッ
クが解除され、送信コンピュータ(ノード)の他のスレ
ッドの実行により、追加のメッセージの送信を開始する
ことが可能になる。図11に示されていないが、さら
に、別の最適化は、ステップ434のWakeup R
moteプロシージャは好ましくは、(A)最後の送信
メッセージがackメッセージキューのベースエントリ
ーによって表示されるか、あるいは、(B)そのメッセ
ージが最後のメッセージの前に送信されたメッセージが
受信ノードで承認された場合にのみ、好ましくは、実行
され、受信メッセージを処理する受信ノードプロシージ
ャが処理すべきメッセージがないために終了するかある
いは休眠状態となることを示す。まれに、この最適化に
よっては、送信されるべきであったときに、Wakeu
pメッセージが送信されるようにならないことがある。
しかし、この結果は比較的細かいことである。というの
は、受信メッセージを処理するための受信ノードのプロ
シージャが受信ノードでのタイムアウトスレッドの実行
によって周期的に再スタートされるからである。同期的
メッセージがこのドキュメントの目的のために、送信側
コンピュータの同じスレッドの実行によって送信されて
いる他のメッセージに関するオーダーを変更することが
できないとうメッセージとして定義されている。そして
さらに、そのメッセージが受信されたことが通知されな
ければならず、受信ノードによって処理が始まる場合に
は、送信側ノードが、送信スレッドが任意の後のタスク
を実行することを許可される前に、メッセージの有効な
送信に頼ることができるというメッセージとして定義さ
れる。もし、送信されているメッセージが同期メッセー
ジでない場合には(ステップ440−N)、Curre
ntTime()プロシージャによって発生する現在の
時間が、最後の送信メッセージ(例えば、MyAckで
は、TimeSent、C language syn
tax、Myack−〉では、TimeSent)のた
めのackエントリーのTimeSentフィールドに
記憶される(ステップ442)。もし、送信メッセージ
が同期メッセージ(ステップ440−Y)である場合に
は、遠隔読取が実行され、最後の送信メッセージに対応
する受信メッセージキューエントリーのStatus及
びGenフィールドを読みとる(cステップ444)。
上記のように、遠隔読取はシステムの待ち時間、資源の
使用量に関し、比較的高価なものとなり、したがって、
必要な場合を除きほん発明では使用しない。もし受信メ
ッセージキューエントリーのGenフィールドが期待さ
れた(可変MyGenに記憶された)発生値に等しい場
合には、受信ノードは送信制御メッセージを受信せず、
Wakeup Rmote()プロシージャが再び呼び
出され(ステップ448)、受信ノードに対する他の受
信メッセージキューインタラプトに送信する。このWa
keupメッセージはその都度、送信直後のメッセージ
を受信ノードが確実に処理するを促進するように送信さ
れる。Wakeupメッセージを送信した後、Curr
entTime()プロシージャによって発生された現
在時間が、最終送信メッセージのためのackエントリ
ーのTimeSent フィールドに記憶される(ステ
ップ442)。受信メッセージキューエントリーのGe
nフィールドが記載された発生値に等しくないときは
(ステップ446−N)、受信ノードはステップ432
で送信されたStatus及びGen値を受信しない、
と決定する。このことが生じると、プロシージャは通信
チャンネルが有効かどうか(すなわち、通信チャンネル
の故障があったかどうか)(ステップ450)みるため
にチェックする。このチャンネルが故障している場合に
は、Send Control PプロシージャはEA
gainのエラーリターンコードとともに終了する(ス
テップ452)、そして、呼出ルーチンに送信エラーが
発生したことを通知する。もし通信チャンネルが有効
(ステップ450−Y)である場合には、Status
及びGen値は再送信され(ステップ454)、つぎ
に、ステップ444が繰り返される。
【0015】入来メッセージを処理するための受信ノー
ドプロシージャ 図12を参照するに、入来(すなわち、受信された)メ
ッセージを処理するための受信ノードプロシージャは、
タイムアウトスレッドによって周期的に再スタートされ
る(ステップ460)。このプロシージャは、また、W
akeupインタラプトメッセージが送信ノードから受
信されるときはいつでも、再スタートされる。
【0016】再スート時に、このプロシージャは、受信
されたメッセージキューに対応するロック(ここでは、
RecLok)を得る試みをする(ステップ461)。
もし、このロックが現在別のスレッドによって保持され
ている場合には、このプロシージャは、単にエクシット
する(ステップ462)。もし、そのロックが得られる
場合には、それがMsg Empty以外の値を有する
かを知るために、受信されたメッセージキューにおける
現在のエントリのStatusフィールドがチェックさ
れる(ステップ464)。もし、現在の受信されたメッ
セージキューエントリのStatusがMsg Emp
tyに等しい場合には、それは、そのキューに処理を必
要とする新しいメッセージがないことを示しており、し
たがって、このプロシージャは、そのロックを解放し
(ステップ474)、エクシットする(ステップ47
6)。
【0017】もし、現在の受信されたメッセージキュー
エントリのStatus(RecMsgポインタによっ
て指示された)がMsg Emptyに等しくない場合
には、それは、そのキューに処理を必要とする少なくと
も1つの新しいメッセージがあることを示しており、現
在の受信されたメッセージキューエントリのStatu
sをMsg Rcvdに等しくセットし(ステップ46
5)、その受信ノードがそのメッセージの受信を検出し
たことを示す。
【0018】それから、現在のメッセージキューエント
リに対応するメッセージの処理が開始される(ステップ
466)。好ましい実施例においては、そのメッセージ
の処理は、それをスタックへコピーし、そのメッセージ
キューエントリにおけるOpcode値に対応するプロ
シージャをコーリングすることによって開始される。し
かしながら、このような処理を開始する特定の機構は、
受信システムの特性に依存して決定されるもので、本発
明の重要な部分ではない。
【0019】もし、現在のメッセージの処理がなんらか
の理由(例えば、必要とされる資源が利用できない)の
ために開始され得ない場合には、このプロシージャは、
その受信されたメッセージキューロック(RecLoc
k)を解放し(ステップ474)、エクシットする(ス
テップ476)。
【0020】さもなければ、もし、現在のメッセージの
処理が首尾よく開始される場合には、現在の受信された
メッセージキューエントリのStatusフィールドが
Msg Emptyへセットされ(ステップ468)、
そのメッセージの処理が開始されたことを指示する。さ
らに、遠隔書込みが、受信システムによって行われ、対
応するackキューエントリにおけるStatusフィ
ールドをMsg Emptyへセットし(ステップ47
0)、そのメッセージの受信を確認する。さらにまた、
RecMsgおよびRecAckポインタを進めるよう
にbumpRec()プロシージャがコールされ(ステ
ップ472)、その受信されたメッセージキューに次の
メッセージがあるならばそのためのキューエントリを指
示するようにする。それから、このプロシージャは、ス
テップ464にて、次の受信メッセージがある場合に
は、その処理を開始する。
【0021】エラープロシージャのためのチェック 本発明の一つの特徴は、受信システムへメッセージデー
タを送信している間または受信システムが送信システム
へ確認メッセージを送信している間に、ある故障により
メッセージ送信失敗が引き起こされたかを確実に判定す
ることができるということである。好ましい実施例にお
いてこのような機能を果たす2つのプロシージャは、C
heck for ErrorおよびCheck fo
r Timeoutプロシージャである。
【0022】このような判定を正確に行なうことは重要
である。何故ならば、受信システムに同じメッセージを
2回送信しないことが重要であるからである。同じメッ
セージを2回送信すると、受信システムが1回だけ行わ
れるべきオペレーションを2回行ってしまう。各メッセ
ージは、適切なシステムオペレーションを保証するため
には、厳密に1回だけ受信システムによって受信され、
処理されねばならない。
【0023】メッセージ送信失敗が起きたことを判定す
るための基本的なスキームは、テーブル1に要約されて
おり、それについて以下に説明する。Msg Sent
のStatusフィールド値を記憶し続けるメッセージ
のためのackキューエントリによって指示されるよう
に、送信システムが確認メッセージを受信するのに失敗
するとき、その送信システムは、受信システムにおける
対応する受信されたメッセージキューエントリのSta
tusおよびGenフィールドを読み取る。もし、受信
メッセージキューエントリにおけるStatusフィー
ルドががMsgSentまたはMsg Rcvdに等し
い場合には、それは、その受信システムがそのメッセー
ジを受信したがまだそれを処理していないことを意味し
ている。したがって、これらの2つの場合において、通
信失敗はなかったが、その受信システムは、問題に直面
しているかもしれない。
【0024】もし、受信されたメッセージキューにおけ
るStatusフィールドがMsgEmptyに等し
く、Genフィールドが予想されたGen値に一致する
場合には、それは、その受信システムがそのメッセージ
を受信し処理し、確認メッセージを送信したが、その確
認メッセージがなんらかの理由のために送信システムに
達しなかったことを意味している。この場合において、
送信システムは、単にそのackキューエントリのため
のStatusフィールド値をMsg Emptyへ変
え、そのackキューエントリを使用して送信された最
後のメッセージが首尾よく送信され処理されたことを示
す。
【0025】最後に、もし、受信されたメッセージキュ
ーエントリにおけるStatusフィールドがMsg
Emptyに等しく、Genフィールドが予想されたG
en値に一致する場合には、それは、そのStatus
およびGen値を受信メッセージキューへ書き込むため
の遠隔書込みオペレーションが失敗し、したがって、そ
のメッセージが受信システムによって処理されなかった
ことを意味している。これは、もう一度、そのStat
usおよびGen値を受信メッセージキューへ書き込む
ための遠隔書込みオペレーションを行なうことを試みる
ことにより、修復される。
【0026】メッセージ処理の失敗がある場合にはその
ことを正確に判定することにより、適切な修復動作が決
定され、行われる。 テーブル1 メッセージエラーのソースの決定
【0027】図13を参照するに、状態情報は依然とし
て現在のackキューエントリに記憶されている以前に
送信されたメッセージのための確認を受信システムから
送信システムがまだ受け取っていないときに、Chec
k for Errorプロシージャが、ステップ41
4(図11参照)にてSend Controlプロシ
ージャによってコールされる。このCheck for
Errorプロシージャは、先ず、前に送信されたメ
ッセージの送信後経過した時間量が少なくとも所定のT
imeout Intervalであるかを知るための
チェックを行い且つそのackキューエントリのメッセ
ージ状態が依然としてMsg Empty に等しくな
いことをチェックする(ステップ480)。もし、その
Timeout Intervalが経過していない場
合には、送信システムは、それがそのTimeout
Intervalの経過前にそのackメッセージキュ
ーのスロットの全てを使用するように素早くメッセージ
のシーケンスを送信している。もし、テストされた条件
が共に真である場合には、その送信スレッドは、Tim
eout Intervalの満了までスリープ状態に
置かれる。
【0028】次に、遠隔読み取りを実行して現在のac
k キュー・エントリーに対応する受信メッセージキュ
ー・エントリーのStatusフイールドとGenフイ
ールドとを読む(ステップ482)。もしもStatu
sフイールド値がMsg−Sentに等しければ、その
ことは、受信システムはメッセージを受けたがそれを処
理しなかったことを意味している。このことは受信シス
テムにおける故障もしくは遅れを示し、かくしてエラー
メッセージを生ぜしめ(ステップ484)、そして手続
きがEBusyのリターンコードで出て、コーリング手
続きが規定時間の経過を待って現在のメッセージを送り
直すことを指示する。
【0029】もしもStatusフイールドがMsg−
Rcvdに等しければ、そのことは、受信システムは既
に送ったメッセージの処理を開始したが、それの処理を
完了していないということを意味している。この場合エ
ラー手続きのチェックがEBusyのリターンコードで
出て、コーリング手続きが規定時間の経過を待って現在
のメッセージを送り直すことを指示する。
【0030】もしもStatusフイールドがMsg−
Emptyに等しければ、手続きは、受信したメッセー
ジキューエントリーのGenフイールドが予期したGe
n値を有するか、否かを決定する(ステップ486)。
この予期したGen値は対応するackメッセージキュ
ーエントリに蓄えられた発生値である。もしそうであれ
ば(486Y)、そのことは受信システムがメッセージ
を処理したが、ackメッセージキューエントリにアク
ノレッジメント・メッセージが何故か蓄積され損なって
おり、それで現在のackメッセージキューエントリー
のStatusフイールドはMsg−Emptyへセッ
トされ(ステップ488)、そして手続きはゼロ(ノー
エラー)リターンコード値で戻る。
【0031】もしも受信メッセージキューエントリのG
enフイールドが予期したGen値を有しないと(48
6−N)、そのことはStatus値とGenフイール
ド値とが受信メッセージエントリーに蓄積されていない
ことを意味する。この問題を解消するには遠隔書き込み
を実行して、Status値とGenフイールド値受信
メッセージキューを再送し(ステップ490)、それか
らWakeup−Remote手続きを呼んで受信シス
テムへトリガーメッセージを送る(ステップ492)。
更に、現在のackキューエントリに対応するメッセー
ジに続いて送られたすべてのメッセージの処理は、受信
メッセージキューに適正なStatusフイールド値を
蓄積し損なったため受信システムにより処理されなかっ
たので、すべてのペンディングのメッセージに対するa
ckキューにおけるTimeSent値が現在の時間に
リセットされ(ステップ494)、これらのメッセージ
を処理するに充分な時間を受信システムに与える。その
ときエラー手続きのチェックはEBusyのリターンコ
ードで出て、コーリング手続きが規定時間の経過を待っ
て現在のメッセージを再送することを指示する。
【0032】タイムアウト手続きのチェック 図14を参照する。タイムアウト手続きのチェックが定
期的に送信側のタイムアウト・スレッドにより呼び出さ
れる。この手続きは先ず、現在時間から規定のタイムア
ウト・インターバルを差し引いた時間であるTimeo
utTimeを求める(ステップ502)。それの状態
はMsg−Emptyではないackキューにエントリ
ーする毎に(それぞれがアクノレッジされていない以前
に送られたメッセージに対応する)、一組の治癒動作を
遂行し(集約してステップ502として参照)、これは
以下のようになる。もしも以前に送られたメッセージの
TimeSentがTimeoutTimeよりも早く
なければ(ステップ504)、そのメッセージをそれ以
上処理することは不要である。いまだタイム・アウトし
てないからである。もしも以前に送られたメッセージの
TimeSentがTimeoutTimeよりも早け
れば(ステップ504−Y)、Timeout手続きの
チェックはロックとなり(ステップ505)、そして遠
隔読み取りを実行して、処理されているackキューエ
ントリーに対応する受信されたメッセージキューエント
リーのStatusフイールドとGenフイールドとを
読む(ステップ506)。もしもStatusフイール
ド値がMsg−Emptyに等しくないと(508−
N)、そのことは受信システムはメッセージの処理を終
わっていないことを意味し、それ以上の動作をTime
out手続きのチェックにより要求されることはなく、
Timeout手続きのチェックは解除する(ステップ
510)。
【0033】もしもStatusフイールド値がMsg
−Emptyに等しいと(508−N)、Genフイー
ルド値は予期されたGen値と比較される(ステップ5
12)。もしもGenフイールド値が予期された値に等
しいと(512−Y)、そのことは受信システムは以前
に送ったメッセージの処理を完了したことを意味し、そ
してそれ故、対応するackキューエントリーにおける
StatusフイールドはMsg−Emptyににセッ
トされ(ステップ514)、そしてロックは解除される
(ステップ510)。もしもGenフイールド値が予期
された値に等しくないと(512−N)、そのことは受
信されたメッセージキューへ送られたStatus値と
Gen値とを受信システムが受けていないことを意味
し、そしてそれ故、遠隔書き込みを実行して受信された
メッセージキューにそれらの値を書き入れ(ステップ5
16)、それから受信システムへトリガーメッセージを
送って(ステップ518)、未処理の受信メッセージの
処理を促す。そのときロックは解除されている(ステッ
プ510)。
【0034】別の実施例 二三の実施例について本発明を説明したが、それらの実
施例は本発明の例示であって、本発明をそれらの実施例
に限定するものではない。特許請求の範囲に記載の本発
明の思想と本発明の技術的範囲内で当業者であれば様々
に変更して実施できよう。
【0035】
【発明の効果】本発明の特徴は、メッセージ送信故障が
メッセージデータを受信システムに送信している間、ま
たは受信システムが送信システムに肯定応答メッセージ
を送信している間、の故障によってもたらされたかを決
定することが確実にできるということである。この決定
を確実に行うということは、重要でありかつ、メッセー
ジ送信エラーの発生を検出ためではなく、メッセージ送
信エラーを解析するためにだけ隔読取り動作を用いるシ
ステムにおいて容易に達成されない。二度同じメッセー
ジを受信システムに送らないことが重要であるので、そ
のような決定を正確に行うことは、重要である。二度同
じメッセージを送ることは、受信システムに一度だけ実
行されるべき動作を二度実行させる。各メッセージは、
適格なシステム動作を確保するために正確に一度だけ受
信システムによって確実に受信されかつプロセスされな
ければならない。
【図面の簡単な説明】
【図1】図1は、コンピュータネットワークにおける二
つのコンピュータノードのブロック図である。
【図2】図2は、コンピュータネットワークの各コンピ
ュータに見出される通信インタフェースのコンポーネン
トを示しているブロック図である。
【図3】図3は、仮想、ローカル及びグローバルアドレ
ス空間及びそれらのアドレス空間の間のマッピングを示
す図である。
【図4】図4は、分散型コンピュータシステムの第1の
ノードから第2のノードにデータを送信することと関連
したアドレス変換を実行するために用いられるコンピュ
ータモジュールのブロック図である。
【図5】通常の遠隔書込み手続きのフローチャートであ
る。
【図6】単一サーバノードとしてコンピュータオペレー
ティングのクラスタを有しているコンピュータシステム
を示す。
【図7】本発明の一実施例による信頼メッセージ送信手
続きのフローチャートである。
【図8】本発明の好ましい実施例を組込んだコンピュー
タのブロック図である。
【図9】本発明の好ましい実施例で用いられるある主デ
ータ構成を示す図である。
【図10】本発明の好ましい実施例における遠隔的に配
置されたノードの受信キューへの「短いメッセージ」の
遠隔書込みを起動するための手続きのフローチャートで
ある。
【図11】本発明の好ましい実施例における遠隔的に配
置されたノードの受信キューへの「短いメッセージ」を
遠隔的に書込む機構を扱うための低レベルオペレーティ
ングシステム手続きのフローチャートである。
【図12】本発明の好ましい実施例における受信メッセ
ージをプロセスするための「受信メッセージ」手続きの
フローチャートである。
【図13】本発明の好ましい実施例におけるメッセージ
送信エラーを検出しかつ修正するための手続きのフロー
チャートである。
【図14】本発明の好ましい実施例におけるメッセージ
送信タイムアウト条件を検出しかつ修正するためのオペ
レーティングシステム手続きのフローチャートである。
───────────────────────────────────────────────────── フロントページの続き (71)出願人 591064003 901 SAN ANTONIO ROAD PALO ALTO,CA 94303,U. S.A. (72)発明者 マーシャル シー ピーズ アメリカ合衆国 カリフォルニア州 94043 マウンテン ヴィュー ローラ レーン 2368

Claims (9)

    【特許請求の範囲】
  1. 【請求項1】 第1のコンピュータから第2のコンピュ
    ータへメッセージを送信する方法において、 第2のコンピュータのメモリにおける各メッセージの記
    憶を確認するために遠隔読み出しオペレーションを実行
    することなしに、第2のコンピュータの対応メモリロケ
    ーションに各メッセージを直接的に記憶するため、遠隔
    書込みオペレーションを用いて第1のコンピュータから
    第2のコンピュータへメッセージを送信する段階と、 第2のコンピュータのメモリに記憶されたメッセージを
    第2のコンピュータに処理させるため、第1のコンピュ
    ータから第2のコンピュータへトリガメッセージを送信
    する段階と、 第2のコンピュータにて、各受信メッセージを処理し、
    アックメッセージを第1のコンピュータの対応メモリロ
    ケーションに記憶する段階と、 第1のコンピュータにて、以前に送信されたメッセージ
    のいずれかに対応するアックメッセージを受信すること
    に失敗したことを検出したときは、以前に送信されたア
    ンアックメッセージを第2のコンピュータが処理したか
    どうかを判断し、以前に送信されたが未だ処理されてい
    ないメッセージを第2のコンピュータに処理させるた
    め、矯正動作を実行する段階と、を備えることを特徴と
    する方法。
  2. 【請求項2】 請求項1記載の方法において、更に、 第2のコンピュータへの各メッセージの送信中に、何ら
    かのメッセージ送信エラーがある場合には、そのような
    メッセージ送信エラーを検出し、メッセージ送信エラー
    が検出された場合には、第2のコンピュータへメッセー
    ジを再送信する、前記方法。
  3. 【請求項3】 請求項1若しくは2記載の方法におい
    て、更に、 メッセージを送信する前記段階は、各送信メッセージに
    ついて、メッセージ状態値とシーケンス番号を、第2の
    コンピュータの対応する受信メッセージキューエントリ
    へ遠隔的に書き込むことを含んでおり、 各受信メッセージを処理する前記段階は、受信メッセー
    ジが処理されたことを表示するために、対応受信メッセ
    ージキューエントリにおけるメッセージ状態値を更新す
    ることを含んでおり、 矯正動作を実行する前記段階は、アックメッセージが受
    信されなかった、以前に送信されたメッセージに対応す
    る、第2のコンピュータにおける受信メッセージキュー
    エントリの部分を、遠隔的に読み出すことを含んでお
    り、この遠隔的に読み出された部分はメッセージ状態値
    とシーケンス番号とを含んでおり、矯正動作を実行する
    前記段階は、更に、遠隔的に読み出したメッセージ状態
    値とシーケンス番号とから、どの付加的な矯正動作を実
    行するかを判断することを含んでいる、前記方法。
  4. 【請求項4】 請求項1、2、若しくは3のいずれか1
    項に記載の方法において、 第2のコンピュータにおいて、 第1のコンピュータからメッセージを受信するための受
    信バッファのセットを割り当て、 第1のコンピュータにおける各メッセージの受信を表示
    するためのエントリの循環受信メッセージキューを確立
    し、 第1のコンピュータにおいて、 第2のコンピュータへ送信されたメッセージを示すため
    のエントリの循環アックメッセージキューを確立し、且
    つ、キューにおける現在エントリに対するポインタと、
    第2のコンピュータの受信メッセージキューにおける対
    応現在エントリに対するポインタとを確立し、 第2のコンピュータの受信バッファにおける各メッセー
    ジの記憶を確認するために遠隔読み出しオペレーション
    を実行することなしに、メッセージのシーケンスを第2
    のコンピュータの受信バッファの各々へ遠隔的に書き込
    み、 各受信バッファに書き込まれた各メッセージについて、 受信メッセージキューの各エントリにおけるメッセージ
    状態値とシーケンス番号の記憶を確認するために遠隔読
    み出しオペレーションを実行することなしに、第2のコ
    ンピュータの受信メッセージキューの各エントリへ、各
    メッセージの送信とシーケンス番号とを表示するメッセ
    ージ状態値を遠隔的に書き込み、 アックメッセージキューの各エントリに各メッセージの
    送信を表示するメッセージ状態値を記憶し、 各メッセージとメッセージ状態値の遠隔書込み中に、何
    らかの送信エラーがある場合には、それらの送信エラー
    を検出し、送信エラーが検出されたときは、各遠隔書込
    み段階を反復し、 第2のコンピュータにおいて、該第2のコンピュータ
    は、各受信メッセージを処理することによって各々のメ
    ッセージに応答するものであって、前記処理には、 第1のコンピュータの対応アックメッセージキューエン
    トリにアックメッセージを記憶し、 メッセージが受信され処理されたことを表示するために
    各受信メッセージキューエントリに記憶されたメッセー
    ジ状態値を変更する、ことが含まれており、 第1のコンピュータにおいて、以前に送信されたメッセ
    ージのいずれかに対応するアックメッセージを受信する
    ことに失敗したことを検出したときは、以前に送信され
    たアンアックメッセージを第2のコンピュータが処理し
    たかどうかを判断するために矯正動作を実行し、以前に
    送信されたアンアックメッセージを第2のコンピュータ
    が処理していないことを矯正動作が判断したときは、以
    前に送信されたアンアックメッセージを第2のコンピュ
    ータに処理させる、前記方法。
  5. 【請求項5】 請求項3若しくは4のいずれか1項に記
    載の方法において、更に、 矯正動作を実行する段階は、更に、 以前に送信された対応メッセージを第2のコンピュータ
    システムが受信し且つ処理したことを、遠隔的に読み出
    されたメッセージ状態値とシーケンス番号が表示したと
    きは、第1のコンピュータの対応メモリロケーションに
    アックメッセージを記憶し、 メッセージ状態値とシーケンス番号を第2のコンピュー
    タの対応受信メッセージキューへ書き込むことに成功し
    なかったことを、遠隔的に読み出されたメッセージ状態
    値とシーケンス番号が表示したときは、メッセージ状態
    値とシーケンス番号を第2のコンピュータの対応受信メ
    ッセージキューエントリへ書き込む前記段階を反復す
    る、ことを含む前記方法。
  6. 【請求項6】 分散型コンピュータシステムにあって、
    第1のコンピュータから第2のコンピュータへメッセー
    ジを遠隔的に書き込むための装置において、 第1のコンピュータは、 CPUと、 メッセージを送信し受信するためのネットワークインタ
    フェースと、 第2のコンピュータのメモリにおける各メッセージの記
    憶を確認するために遠隔読み出しオペレーションを実行
    することなしに、各メッセージを第2のコンピュータの
    対応メモリロケーションに直接的に記憶させるため、第
    1のコンピュータから第2のコンピュータへネットワー
    クインタフェースを介して遠隔書込みオペレーションを
    用いてメッセージを送信するために、第1のコンピュー
    タのCPUによって実行するメッセージ送信手続と、を
    備えており、 前記メッセージ送信手続は、第2のコンピュータへの各
    メッセージの送信中に、何らかのメッセージ送信エラー
    がある場合には、これらのメッセージ送信エラーを検出
    するための命令を含んでおり、 前記メッセージ送信手続は、メッセージ送信エラーが検
    出されたときは第2のコンピュータへメッセージを再送
    信するための命令を含んでおり、 前記メッセージ送信手続は、第2のコンピュータのメモ
    リに記憶されたメッセージを第2のコンピュータに処理
    させるために第1のコンピュータから第2のコンピュー
    タへトリガメッセージを送信するための命令を含んでお
    り、 第2のコンピュータは、 CPUと、 メッセージを送信し受信するためのネットワークインタ
    フェースと、 第1のコンピュータから受信された各メッセージを処理
    するために、および、ネットワークインタフェースを介
    してアックメッセージを第1のコンピュータの対応メモ
    リロケーションに遠隔的に書き込むために、第2のコン
    ピュータのCPUによって実行する受信メッセージ手続
    と、を備えており、 第1のコンピュータにおいて、 前記メッセージ送信手続は、以前に送信されたメッセー
    ジのいずれかに対応するアックメッセージを受け取るこ
    とに失敗したことを検出して、以前に送信された各アン
    アックメッセージについて以前に送信されたアンアック
    メッセージを第2のコンピュータが処理したかどうかを
    判断するための矯正動作を実行し、且つ、以前に送信さ
    れたが末だ処理されていないアンアックメッセージを第
    2のコンピュータに処理させるための命令を含んでい
    る、前記装置。
  7. 【請求項7】 請求項6記載の装置において、更に、 第2のコンピュータは、 第1のコンピュータからメッセージを受信するための受
    信バッファのセットと、 第1のコンピュータにおける各メッセージの受信を表示
    するためのエントリの循環受信メッセージキューと、を
    有し、 第1のコンピュータは、 第2のコンピュータへ送信されたメッセージを示すため
    のエントリの循環アックメッセージキューと、キューに
    おける現在エントリへのポインタ、および、第2のコン
    ピュータの受信メッセージキューにおける対応現在エン
    トリへのポインタと、を有しており、 矯正動作を実行する前記命令は、以前に送信されたアン
    アックメッセージを第2のコンピュータシステムが既に
    処理したことを矯正動作が判断したときは、アックメッ
    セージを第1のコンピュータの対応アックメッセージキ
    ューエントリに記憶するための命令を含んでいる、前記
    装置。
  8. 【請求項8】 請求項6記載の装置において、更に、 第2のコンピュータは、 第1のコンピュータからメッセージを受信するための受
    信バッファのセットと、 第1のコンピュータにおける各メッセージの受信を表示
    するためのエントリの受信メッセージキューと、を有し
    ており、 第1のコンピュータは、 第2のコンピュータへ送信されたメッセージを示すため
    のエントリのアックメッセージキューと、キューにおけ
    る現在エントリへのポインタ、および、第2のコンピュ
    ータの受信メッセージキューにおける対応現在エントリ
    へのポインタと、を有しており、 前記メッセージ送信手続は、各メッセージの送信を表示
    するメッセージ状態値とシーケンス番号とを、第2のコ
    ンピュータの受信メッセージキューの各エントリへ遠隔
    的に書き込むための命令を有しており、 前記受信メッセージ手続は、受信メッセージが処理され
    たことを表示するために、受信メッセージに対応する受
    信メッセージキューエントリのメッセージ状態値を更新
    するための命令を含んでおり、 矯正動作を実行する前記命令は、アックメッセージが受
    信されていない以前に送信されたメッセージに対応する
    第2のコンピュータにおける受信メッセージキューエン
    トリの部分を、遠隔的に読み出すための命令を含んでお
    り、この遠隔的に読み出した部分はメッセージ状態値と
    シーケンス番号とを含んでおり、矯正動作を実行する前
    記命令は、更に、遠隔的に読み出したメッセージ状態値
    とシーケンス番号から、どの付加的な矯正動作を実行す
    るかを判断することを含んでいる、前記装置。
  9. 【請求項9】 請求項8記載の装置において、 矯正動作を実行する前記命令は、更に、 以前に送信された対応メッセージを第2のコンピュータ
    システムが受信し処理したことを、遠隔読み出し状態値
    と以前に送信された対応メッセージが表示したときは、
    アックメッセージを第1のコンピュータの対応メモリロ
    ケーションに記憶するための命令と、 メッセージ状態値とシーケンス番号を第2のコンピュー
    タの対応受信メッセージキューへ書き込むことに成功し
    なかったことを、遠隔的に読み出されたメッセージ状態
    値とシーケンス番号が表示したときは、メッセージ状態
    値とシーケンス番号の第2のコンピュータの対応受信メ
    ッセージキューエントリに対する書き込みを反復するた
    めの命令と、を有する前記装置。
JP10220988A 1997-06-30 1998-06-30 ネットワークノード間のメッセージ送信用システム及び方法 Pending JPH11143845A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/885153 1997-06-30
US08/885,153 US6014710A (en) 1997-06-30 1997-06-30 System and method for message transmission between network nodes using remote wires

Publications (1)

Publication Number Publication Date
JPH11143845A true JPH11143845A (ja) 1999-05-28

Family

ID=25386272

Family Applications (1)

Application Number Title Priority Date Filing Date
JP10220988A Pending JPH11143845A (ja) 1997-06-30 1998-06-30 ネットワークノード間のメッセージ送信用システム及び方法

Country Status (4)

Country Link
US (1) US6014710A (ja)
EP (1) EP0889621A3 (ja)
JP (1) JPH11143845A (ja)
CA (1) CA2241521A1 (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4734348B2 (ja) * 2006-01-31 2011-07-27 富士通株式会社 共有メモリ型マルチプロセッサにおける非同期遠隔手続き呼び出し方法、非同期遠隔手続き呼び出しプログラムおよび記録媒体
KR20110089136A (ko) * 2008-11-10 2011-08-04 프리스케일 세미컨덕터, 인크. 통합 회로들을 상호 연결하기 위한 기술
JP2012515960A (ja) * 2009-01-21 2012-07-12 エーティーアイ・テクノロジーズ・ユーエルシー デバイスの複数のコンポーネント間でメモリ資源を共有するための通信プロトコル

Families Citing this family (39)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6108704A (en) * 1995-09-25 2000-08-22 Netspeak Corporation Point-to-point internet protocol
US6728784B1 (en) * 1996-08-21 2004-04-27 Netspeak Corporation Collaborative multimedia architecture for packet-switched data networks
CA2241909A1 (en) * 1997-07-10 1999-01-10 Howard Thomas Olnowich Cache coherent network, network adapter and message protocol for scalable shared memory processing systems
JP3006555B2 (ja) * 1997-08-05 2000-02-07 日本電気株式会社 遠隔地モジュール制御方式
WO1999012102A1 (en) * 1997-09-05 1999-03-11 Sun Microsystems, Inc. A multiprocessing system including cluster optimization mechanisms
US6728771B2 (en) * 1998-03-20 2004-04-27 Siemens Information And Communication Networks, Inc. Generic transport option for transporting messages in relay or broadcast mode via combinations of ISDN B-channels or D-channels
US6615383B1 (en) * 1998-05-29 2003-09-02 Sun Microsystems, Inc. System and method for message transmission between network nodes connected by parallel links
US6381734B1 (en) * 1998-06-03 2002-04-30 Microsoft Corporation Method, software and apparatus for referencing a method in object-based programming
US6349394B1 (en) * 1999-03-31 2002-02-19 International Business Machines Corporation Performance monitoring in a NUMA computer
US7287084B1 (en) 1999-07-15 2007-10-23 F5 Networks, Inc. Enabling encryption of application level persistence between a server and a client
US6970933B1 (en) 1999-07-15 2005-11-29 F5 Networks, Inc. Enabling application level persistence between a server and another resource over a network
US7346695B1 (en) 2002-10-28 2008-03-18 F5 Networks, Inc. System and method for performing application level persistence
US6543005B1 (en) * 1999-10-27 2003-04-01 Oracle Corporation Transmitting data reliably and efficiently
FR2819668B1 (fr) * 2001-01-18 2003-03-28 Canon Kk Procede et dispositif de communication entre un noeud local connecte a un premier bus serie ieee 1394 et un noeud distant connecte a un second bus serie ieee 1394 au travers d'un pont d'interconnexion de bus
US8473396B2 (en) * 2001-08-14 2013-06-25 Bloomberg L.P. Distribution and mapping of financial records from data stream
US7249193B1 (en) * 2001-08-28 2007-07-24 Emc Corporation SRDF assist
US7330885B2 (en) * 2001-10-25 2008-02-12 Sun Microsystems, Inc. Method and apparatus for managing data time-outs
US7216349B2 (en) * 2002-06-05 2007-05-08 International Business Machines Corporation System and method for triggering message queue applications
US20040019661A1 (en) * 2002-07-26 2004-01-29 Eleftheriou Andreas E. Method and apparatus for retrying and redirecting network requests
US7430755B1 (en) 2002-09-03 2008-09-30 Fs Networks, Inc. Method and system for providing persistence in a secure network access
ATE373913T1 (de) * 2003-06-24 2007-10-15 Research In Motion Ltd Serialisierung von eine verteiltenapplikation einer router
US20070067488A1 (en) * 2005-09-16 2007-03-22 Ebay Inc. System and method for transferring data
US7526617B2 (en) * 2005-12-29 2009-04-28 Sap Ag System and method for memory management using memory windows
US20080127220A1 (en) * 2006-06-30 2008-05-29 Robert Paul Morris Methods, systems, and computer program products for creating an input-value-specific loadable instance of an application
US20080005728A1 (en) * 2006-06-30 2008-01-03 Robert Paul Morris Methods, systems, and computer program products for enabling cross language access to an addressable entity in an execution environment
US20080005719A1 (en) * 2006-06-30 2008-01-03 Morris Robert P Methods, systems, and computer program products for providing a program execution environment
US20080005529A1 (en) * 2006-06-30 2008-01-03 Morris Robert P Methods, Systems, and Computer Program Products for Providing Access to Addressable Entities Using a Non-Sequential Virtual Address Space
US20080005727A1 (en) * 2006-06-30 2008-01-03 Robert Paul Morris Methods, systems, and computer program products for enabling cross language access to an addressable entity
US20080005752A1 (en) * 2006-06-30 2008-01-03 Robert Paul Morris Methods, systems, and computer program products for generating application processes by linking applications
US20080005528A1 (en) * 2006-06-30 2008-01-03 Morris Robert P Methods, Systems, and Computer Program Products for Using a Structured Data Storage System to Provide Access to Addressable Entities in Virtual Address Space
US8566452B1 (en) 2006-08-03 2013-10-22 F5 Networks, Inc. Intelligent HTTP based load-balancing, persistence, and application traffic management of SSL VPN tunnels
US7734890B2 (en) * 2006-10-06 2010-06-08 Okralabs Llc Method and system for using a distributable virtual address space
US8621093B2 (en) * 2007-05-21 2013-12-31 Google Inc. Non-blocking of head end initiated revocation and delivery of entitlements non-addressable digital media network
US20080320459A1 (en) * 2007-06-22 2008-12-25 Morris Robert P Method And Systems For Providing Concurrency Control For Addressable Entities
US20080320282A1 (en) * 2007-06-22 2008-12-25 Morris Robert P Method And Systems For Providing Transaction Support For Executable Program Components
US9102962B2 (en) * 2007-10-16 2015-08-11 Shiu Nan Chen Production method for solid cultured active mushroom mycelium and fruit-body metabolites (AMFM) products thereof
US8787843B2 (en) * 2009-06-26 2014-07-22 Nokia Siemens Networks Oy Wake up procedure for a base station in a communications network
DE102010012623B4 (de) * 2010-03-24 2011-12-08 Siemens Medical Instruments Pte. Ltd. Verfahren zur Übertragung von Daten zwischen einem Hörgerät und einer externen Einheit sowie zugehörige Anordnung
CN112162875A (zh) * 2020-10-12 2021-01-01 上交所技术有限责任公司 一种交易系统内部高可靠消息传输方法

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5995752A (ja) * 1982-11-25 1984-06-01 Pioneer Electronic Corp デ−タ伝送方式
US4905234A (en) * 1987-06-03 1990-02-27 General Electric Company Apparatus and method for transmitting digital data over a radio communications channel
US4860292A (en) * 1987-08-13 1989-08-22 Digital Equipment Corporation Communication protocol
US5163137A (en) * 1987-10-29 1992-11-10 Mita Industrial Co., Ltd. Copying system with a dual trunk serial communication system using an acknowledge line
JPH0687569B2 (ja) * 1989-09-28 1994-11-02 アメリカン テレフォン アンド テレグラフ カムパニー 端末アダプタおよびデータ伝送方法
US5048771A (en) * 1989-11-15 1991-09-17 Hughes Aircraft Company Method and apparatus for a reprogrammable program missile memory
US5544347A (en) * 1990-09-24 1996-08-06 Emc Corporation Data storage system controlled remote data mirroring with respectively maintained data indices
JPH05207023A (ja) * 1992-01-24 1993-08-13 Hitachi Ltd 大量データ伝送方法
US5613068A (en) * 1994-06-17 1997-03-18 International Business Machines Corporation Method for transferring data between processors on a network by establishing an address space for each processor in each other processor's
JP3544390B2 (ja) * 1994-06-29 2004-07-21 富士通株式会社 並列計算機で用いられるメッセージ通信方法
US5742843A (en) * 1994-07-20 1998-04-21 Fujitsu Limited Control system for access between processing elements in a parallel computer
US5553083B1 (en) * 1995-01-19 2000-05-16 Starburst Comm Corp Method for quickly and reliably transmitting frames of data over communications links
GB2301264A (en) * 1995-05-26 1996-11-27 Mitsubishi Electric Corp Computer network interface and interface protocol
US5613071A (en) * 1995-07-14 1997-03-18 Intel Corporation Method and apparatus for providing remote memory access in a distributed memory multiprocessor system
FR2737031B1 (fr) * 1995-07-21 1997-08-14 Bull Sa Procede de transfert de donnees dans un systeme informatique multinodal
US5751719A (en) * 1995-11-30 1998-05-12 Lucent Technologies Inc. Method and system for data transfer in the presence of disconnects
US5745685A (en) * 1995-12-29 1998-04-28 Mci Communications Corporation Protocol extension in NSPP using an acknowledgment bit

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4734348B2 (ja) * 2006-01-31 2011-07-27 富士通株式会社 共有メモリ型マルチプロセッサにおける非同期遠隔手続き呼び出し方法、非同期遠隔手続き呼び出しプログラムおよび記録媒体
KR20110089136A (ko) * 2008-11-10 2011-08-04 프리스케일 세미컨덕터, 인크. 통합 회로들을 상호 연결하기 위한 기술
JP2012508418A (ja) * 2008-11-10 2012-04-05 フリースケール セミコンダクター インコーポレイテッド 集積回路を相互接続するための技術
JP2012515960A (ja) * 2009-01-21 2012-07-12 エーティーアイ・テクノロジーズ・ユーエルシー デバイスの複数のコンポーネント間でメモリ資源を共有するための通信プロトコル

Also Published As

Publication number Publication date
CA2241521A1 (en) 1998-12-30
EP0889621A3 (en) 2004-07-07
US6014710A (en) 2000-01-11
EP0889621A2 (en) 1999-01-07

Similar Documents

Publication Publication Date Title
JPH11143845A (ja) ネットワークノード間のメッセージ送信用システム及び方法
US6615383B1 (en) System and method for message transmission between network nodes connected by parallel links
US7089289B1 (en) Mechanisms for efficient message passing with copy avoidance in a distributed system using advanced network devices
EP0762705B1 (en) Method for transmitting data via a network
US6799200B1 (en) Mechanisms for efficient message passing with copy avoidance in a distributed system
US6470391B2 (en) Method for transmitting data via a network in a form of divided sub-packets
EP0753817B1 (en) Method and apparatus for data communication
EP0889622B1 (en) Apparatus and method for remote buffer allocation and management for message passing between network nodes
US7114096B2 (en) State recovery and failover of intelligent network adapters
US5887134A (en) System and method for preserving message order while employing both programmed I/O and DMA operations
US7171484B1 (en) Reliable datagram transport service
US5884313A (en) System and method for efficient remote disk I/O
US8675472B2 (en) Method and apparatus for network management system
US7185114B1 (en) Virtual memory systems and methods
US20080181224A1 (en) Apparatus and system for distributing block data on a private network without using tcp/ip
US20040174814A1 (en) Register based remote data flow control
JP2006236391A (ja) パケットベースの通信ネットワークにおけるメッセージ受信の肯定応答システム及び方法
JP4464969B2 (ja) Rdma完了および再送信システムおよび方法
US6735620B1 (en) Efficient protocol for retransmit logic in reliable zero copy message transport
US20070061439A1 (en) Signalling data reception
EP1225741B1 (en) High speed interconnection for embedded systems within a computer network
US20020138790A1 (en) Apparatus and method for managing errors on a point-to-point interconnect
JP2776274B2 (ja) 中継計算機における仮想バッファ制御システム
JPH09326782A (ja) シリアル通信方法
CN116073962A (zh) 用于硬件可靠传送的早期重传

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20050610

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20070629

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20070910

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20071210

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20071213

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20080526