JPH11143844A - ネットワークノード間を移動するメッセージに対する遠隔割り当て及び管理用システム及び方法 - Google Patents

ネットワークノード間を移動するメッセージに対する遠隔割り当て及び管理用システム及び方法

Info

Publication number
JPH11143844A
JPH11143844A JP10220984A JP22098498A JPH11143844A JP H11143844 A JPH11143844 A JP H11143844A JP 10220984 A JP10220984 A JP 10220984A JP 22098498 A JP22098498 A JP 22098498A JP H11143844 A JPH11143844 A JP H11143844A
Authority
JP
Japan
Prior art keywords
message
segment
computer
memory
imported
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.)
Abandoned
Application number
JP10220984A
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 JPH11143844A publication Critical patent/JPH11143844A/ja
Abandoned 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
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/9047Buffering arrangements including multiple buffers, e.g. buffer pools
    • H04L49/9052Buffering arrangements including multiple buffers, e.g. buffer pools with buffers of different sizes

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer And Data Communications (AREA)
  • Multi Processors (AREA)
  • Information Transfer Systems (AREA)

Abstract

(57)【要約】 (修正有) 【課題】ヘビーメッセージトラフィックにおけるより効
率的な受信バッファ割り当て方法を提供する。 【解決手段】送信ノードは、受信ノードに送信ノードに
複数の受信バッファーを保持するのに十分な大きさの1
つ以上のメモリー「セグメント」を割り当てエクスポー
トさせる。送信ノードは、受信ノードとは無関係にセグ
メント内に受信バッファーを割り当てて、書き込み、ポ
インターを使用して制御メッセージを対応する受信バッ
ファーに書き込み、受信ノードのキューを伝える。受信
ノードは、個々の制御メッセージにより特定される割り
当てられたセグメントの部分内メッセージを処理し、個
々のセグメントの使用と未使用部分を追跡しない。送信
ノードのみが、個々の割り当てられたセグメントの未使
用部分を追跡する。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、一般に、第1のコ
ンピュータに第2のコンピュータにおいてバッファを割
り当てさせかつメッセージを第2のコンピュータに送る
ときに該割り当てられたバッファの使用を管理するため
のシステム及び方法に関する。
【0002】
【従来の技術】多くの多重プロセッサコンピュータシス
テムでは、別のコンピュータ(しばしばレシーバ又は受
信コンピュータと呼ばれる)にメッセージ又はデータを
送信することができることは、一つのコンピュータノー
ド(しばしばセンダ又は送信コンピュータと呼ばれる)
で実行されているプロセス又はタスクにとって重要であ
る。そのようなメッセージ受渡しの必要な形態は、送信
コンピュータに受信コンピュータのメモリの中にメッセ
ージの内容を遠隔的に書き込ませるためのメモリ管理と
メッセージ移送機構の確立及び受信コンピュータのメモ
リにおけるバッファの割り当てである。ある従来技術の
システムは、(メッセージが受取られたように)、空間
がオンザフライで受取ったメッセージを記憶するために
割り当てられるような「ストリーミング方式メッセージ
ング環境」を用いるが、本発明は、メッセージを記憶す
るためのメモリが予め割り当てられ、グローバルアドレ
スを割り当てられかつ他のコンピュータにエクスポート
されるような「共有メモリメッセージング環境」を用い
ている分散型コンピュータシステムに関係する。
【0003】一般的に、ほとんどの従来技術のシステム
は、メッセージ受信バッファをセットアップするために
二つのモデルの一つを用いる。第1のモデルでは、受信
コンピュータは、それぞれが関連した固定サイズを有し
ている、予め多数のメッセージ受信バッファをセットア
ップし、次いで、送信ノードにそれらのバッファのそれ
ぞれの位置及びサイズを伝える。各メッセージ受信バッ
ファは、送信コンピュータによって一度だけ用いられ
る。送信コンピュータが追加のバッファを必要とする場
合、それは、受信コンピュータからそれらを要求する
か、又は受信コンピュータは、先に割り当てられたバッ
ファの使用に基づき送信コンピュータに対して新しいバ
ッファを自動的に割り当てる。第2のモデルでは、送信
コンピュータがメッセージを送ることを望む度に、それ
は、バッファ割り当て要求を受信コンピュータに送り、
次いで、要求されたサイズのバッファを割り当て、そし
て割り当てられたバッファの位置及び関連「グローバル
アドレス」範囲をそれに知らせるためにメモリエクスポ
ートメッセージを送信コンピュータに送る。
【0004】一般的に、送信ノードは、いつ受信ノード
がそれらのデータをプロセスすることを終了したのかを
知らないので、受信バッファを送信ノードによって再使
用することができない。典型的に、送信ノードは、各メ
ッセージの成功した受取りの肯定応答を受取るだけであ
り、それゆえに送信ノードは、先に用いられた受信バッ
ファが再使用に利用可能である場合を決定する根拠がな
い。その結果、各受信バッファは、受信ノードがバッフ
ァでデータをプロセスすることを終了した後で受信ノー
ドによって一般的に割り当てが解除されかつ新しいバッ
ファは、送信ノードがそれを必要とする場合に割り当て
られる。新しいバッファは、先のバッファと全く同じメ
モリ位置でありうるか、又はそうでないかもしれない
が、受信及び送信ノードの両方においてバッファを割り
当てること及びメモリ管理ユニット表エントリをセット
アップすることの全てのオーバヘッドを、各バッファ割
り当てに対して負わされる。
【0005】また、前もった受信バッファの割り当て
は、メッセージが実質的に無制限のサイズ範囲でやって
くるので、制限されたユティリティのものである。その
結果、前もってある受信バッファをセットアップするシ
ステムでさえも、非標準バッファサイズを要求している
メッセージは、必要なサイズの受信バッファを割り当て
るために上述した第2のモデルを用いる。上述した従来
技術の利点は、特に第2のモデルでは、殆ど又は決して
用いられないであろう受信バッファにおいてほとんどの
メモリがタイアップされないという点でそれが受信ノー
ドにおいてメモリの効率的な使用を行うということであ
る。また、ライト(light)メッセージトラフィックのシ
ステムでは、CPU及び受信バッファをセットアップし
かつ分解する通信オーバヘッドは、比較的軽い。しかし
ながら、メッセージの送信前に要求されかつ割り当てら
れる受信バッファを待たなけらばならないことによって
もたらされるシステム呼出し時間は、相当であり、かつ
それらのシステム呼出し時間は、特に、タスクが多重プ
ロセッサにわたり分散されかつプロセッサ間のメッセー
ジトラフィックがヘビーでありかつ実行されるデータ処
理の不可欠な部分を形成するようなマルチプロセッサシ
ステムにおいて、システム性能の劣化を結果として間接
的に生じうる。
【0006】纏めると、特にヘビーメッセージトラフィ
ックの多重プロセッサシステムにおいて、より効率的な
受信バッファ割り当て方法に対する必要性が存在する。
図1を参照すると、ここでNode(ノード)A50、
及びNode(ノード)B52と呼ばれる、二つのコン
ピュータノードの非常に簡略化された図が示されてい
る。各ノードのコンピュータは、あらゆる型のコンピュ
ータでありうる。換言すると、特定のブランド、アーキ
テクチャ及びオペレーティングシステムは、各コンピュ
ータノードがネットワーク環境で動作するように構成さ
れている限り、本議論に対しては重要なことではない。
各コンピュータノード50,52は、中央処理装置(C
PU)54、ランダムアクセスメモリ56、内部メモリ
バス58及び、ネットワークインタフェースカード(N
IC)としばしば呼ばれる、通信インタフェース60を
一般的に含む。コンピュータノードは、一つ以上の型の
通信媒体、切替え機構、等を含みうる、ネットワーク相
互接続62を介してメッセージ又はパケットを互いに送
信することによって互いに通信する。
【0007】また、各コンピュータノード50,52
は、一般に高速磁気ディスクのような、不揮発性の、非
ランダムアクセスメモリ装置64、及び対応ディスクコ
ントローラ66を有する。図2は、特に注目すべきコン
ポーネントだけを示している、図1のコンピュータノー
ドで用いられるような、従来の通信インタフェース(又
はNIC)60の簡略化された図を示す。NIC60
は、二つのアドレスマッピング機構;即ち、入力メモリ
管理ユニット(IMMU)70及び出力メモリ管理ユニ
ット(OMMU)72を一般的に含む。二つのメモリ管
理ユニットの目的は、各コンピュータノードの局所物理
アドレス(PA' s)をグローバルアドレス(GA'
s)にマップしかつ戻すことである。NIC60の移送
ロジック74は、IMMU70及びOMMU72を用い
てアドレスを探索しかつ変換することを含んでいる、メ
ッセージパケットを送信しかつ受信する機構を取り扱
う。
【0008】メモリバス60とIMMU70及びOMM
U72との間の破線は、一般的にNICドライバプログ
ラムの制御下で、二つのMMU' sにおいてアドレス変
換エントリを記憶しかつ削除するためのCPU導出制御
信号を表す。メモリバス60と移送ロジック74との間
の破線は、移送ロジック74を構成しかつ制御するため
のCPU導出制御信号を表す。
【0009】仮想、局所物理空間とグローバルアドレス
空間の間のメモリマッピング図3及び図4を参照する
と、(図1に示したような)分散型コンピュータシステ
ムのノードは、共有グローバルアドレス空間GAを利用
する。各ノードは、その局所アドレス空間の一部をグロ
ーバルアドレス空間の「ウィンドウズ」にマップする。
更に、ノードのそれぞれにおけるプロセスは、それらの
専用(私用)仮想アドレス空間VAの一部を局所物理ア
ドレス空間PAにマップし、かつ局所物理アドレス空間
PAの一部をグローバルアドレス空間GAのウィンドウ
に更にエクスポートすることができる。局所物理アドレ
ス空間の一部を「エクスポートする」プロセスは、ま
た、割当てられたグローバルアドレス空間範囲を介して
局所物理アドレス空間のエクスポートされた部分への読
取り及び/書込みアクセスが別のコンピュータノードに
与えられるので、「局所物理アドレス空間の一部を別の
ノードにエクスポートすること」ともしばしば呼ばれ
る。
【0010】図3及び図4に示された局所物理アドレス
空間(例えば、PA1及びPA2)は、物理バスアドレ
スでありかつメモリ位置アドレスである必要はないとい
うことに注目すべきである。事実、多くの物理アドレス
は、ネットワークインタフェースのような、メモリ以外
の装置に実際にマップされる。例えば、第1のコンピュ
ータの物理メモリが第2のコンピュータにエクスポート
される場合、エクスポートされたメモリに書込むために
第2のコンピュータにおいて用いられる物理アドレス
は、どの局所メモリにもマップされない;それよりも、
それらは、第2のコンピュータのネットワークインタフ
ェースにマップされる。データが、ノードB52の位置
に対応している仮想アドレスにノードA50のプロセス
によって書込まれる場合、一連のアドレス変換(アドレ
スマッピング変換とも呼ばれる)が実行される。ノード
Aのプロセスからの仮想アドレスVA1は、まず、局所
(物理)I/OアドレスPA1にアドレス空間にノード
A' sCPU54−AのTLB(変換索引バッファ)8
0−Aによって変換される。局所(物理)I/Oアドレ
スPA1は、次いで、グローバルアドレスGAxにノー
ドA' sネットワークインタフェース60−Aの出力M
MU(OMMU)72−Aによって変換される。そのグ
ローバルアドレスを伴うデータがノードBによって受取
られる(通常メッセージパケットの形で)場合、グロー
バルアドレスGAxは、ノードBと関連する局所物理ア
ドレスPA2に、ノードB' sネットワークインタフェ
ース60−Bの入力MMU(IMMU)70−Bによっ
て変換される。局所物理アドレスPA2は、受信プロセ
スと関連する仮想アドレスVA2に対応する。ノード
B' sCPU54−BのTLB80−Bは、受信したデ
ータが記憶される局所アドレスPA2に空間仮想アドレ
スVA2をマップする。
【0011】用語「メッセージ送信」は、受信ノードが
送信されたメッセージを自動的にプロセスするようなメ
ッセージ送信プロトコルの使用を示すか又は意味するた
めにしばしば用いられるが、用語「データ送信」は、一
つのシステムから別のシステムにデータを書込むこと又
はコピーすることを単に示すだけである。しかしなが
ら、この明細書では、用語メッセージ送信及びデータ送
信は、互いに交換可能に用いられる。TLBsは、仮想
アドレスを局所物理アドレス空間に一般に変換するだけ
であり、その逆を行わない、それゆえに、図4の矢印の
あるものは、実際のアドレス変換ではなく、マッピング
を表すということにここで注目すべきである。ノードB
の受信プロセスがアドレスVA2で受信したメッセージ
を読取る場合、TLB80−Bは、受信したメッセージに
対する宛先アドレスとしてネットワークインタフェー
ス' sIMMU70−Bによって決定された同じ局所ア
ドレスLA2にその仮想アドレスを変換する。
【0012】メッセージを受取るためのアドレス空間範
囲は、受信したアドレス空間、メールボックス、又はこ
の目的のためにセットアップされるパケットをベースに
した通信を一般に用いる高レベルプロトコルを用いて送
信ノードと受信ノードとの間で予め取り決められる。グ
ローバルアドレス空間のウィンドウズが割当てられる方
法及び受信装置側アドレスがメッセージを受取るために
セットアップされる方法の詳細は、この明細書の範疇を
越えるものである。更に、本発明は、そのような通信セ
ットアップ機構におけるいかなる変更も必要としない。
受信バッファは、対応MMUエントリを用いて都合よい
大きさのチャンクに割当てられる。より大きな受信バッ
ファ、又は不規則な大きさの受信バッファは、ユーザレ
ベルプロトコルによって複数のMMUエントリを用いて
構築されうる。一度受信バッファが割当てられかつ対応
MMUマッピングが確立されたならば、ユーザレベルプ
ログラムは、カーネル介入なしに受信バッファを読取り
かつそれに書込むことができる。多くの異なる種類のユ
ーザ−レベルメッセージ受渡し「API' s」(アプリ
ケーションプログラムインタフェース)は、基礎受信バ
ッファ機構のトップ(最上部)に構築することができ
る。これは、送信及び受信Unixプリミティブ、ソケ
ット、ORB(オブジェクトリソースブローカ)移送、
遠隔手続きコール、等を含む。基礎メッセージ受渡し機
構は、可能な限り「軽量」及び効率的であるように設計
され、それゆえに出来るだけ少ないプロセッササイクル
を取る。
【0013】本発明は、上述したグローバルアドレスマ
ッピング機構に対して局所物理アドレス空間を利用す
る。
【0014】通常のバッファ割当て及びメッセージ受渡
し方法図5は、ノードBの受信バッファにメッセージを
書込む込むためのノードAのプロセッサに対する通常の
手続きを示す。第1のステップは、ノードAに対して、
ノードAがそれにメッセージを書込むことができるよう
に特定サイズの受信バッファをセットアップするために
要求をノードBに送ることである(ステップ100)。
次いで、ノードBは、一つ以上の受信バッファをセット
アップしかつ受信バッファに割当てられたメモリをノー
ドAに「エクスポート」する(ステップ101)。ある
実施では、ノードAが多くのメッセージをノードBに送
っているということが前もって分かっているので、この
段階は、予め実行されうる。メモリエクスポーティング
ステップ101は、ノードB' sメモリの受信バッファ
の物理アドレス範囲をグローバルアドレスの対応範囲に
マップするノードBにIMMUエントリを生成すること
によって、そしてまた、物理アドレスマッピングに対し
て対応仮想アドレスをセットアップすることによって実
行される。上記したように、ノードBは、他のノードに
対してメモリをエクスポートするためにそれに予め割当
てられたグローバルアドレスの範囲を一般に有する。し
かしながら、グローバルアドレスを割当てるための他の
機構は、同様に適用可能である。
【0015】次に、ステップ102では、メモリエクス
ポートメッセージは、ノードBによって、 ・ メッセージが送信される宛先ノード; ・ メッセージがそれから送られるソースノード; ・ ノードAにエクスポートされる受信バッファに対応
しているグローバルアドレス範囲;及び ・ ここでは関連がない、プロトコルパラメータのよう
な、他のパラメータを特定するノードAに送信される。
【0016】ノードAでは、メモリエクスポートメッセ
ージが受信された場合、ノードA'sNICドライバ
は、ノードBによってエクスポートされるメモリをイン
ポートするためにOMMUエントリをセットアップし、
(ステップ104)、かつまた、ノードAのプロセスが
受信バッファにデータを書込むことができるように物理
アドレスマッピングに対して対応仮想アドレスをセット
アップする。ステップ104におけるOMMUエントリ
セットアップは、受信したメッセージで特定されたグロ
ーバルアドレス範囲をサーバノードの物理メモリの対応
範囲にマップする。必要ならば(例えば、不十分な連続
メモリが利用可能であり及び/又はマップされたアドレ
ス範囲のサイズが2n ページに等しくないならば)、サ
ーバノードは、特定されたグローバルアドレス空間を二
つ以上の局所物理アドレス範囲にマップするように二つ
以上の局所物理アドレス範囲を生成する。第1のコンピ
ュータのマップされた局所物理アドレスは、そのコンピ
ュータのメモリの位置ではなくそれよりもそれらは、O
MMUエントリによってコンピュータのネットワークイ
ンタフェースにマップされるさもなければ不使用なアド
レスである。
【0017】一度ノードBのIMMU及びノードAのO
MMUがセットアップされたならば、ノードAは、メッ
セージをノードBに送信することができる。ステップ1
04と106の間の破線は、ステップ104と106の
間のタイミング関係に特定の仮定がなされていないとい
うことを示している(即ち、一つが他方を密接にファロ
ーするか、それらは、時間及びロジック的の両方におい
て別個にされうる)。一度ノードAがノードBにメッセ
ージを送る準備ができたならば、メッセージ送信手続き
は、メッセージをフォーマットしかつ受信ノードにメッ
セージを送る(ステップ106)。通称「長いメッセー
ジ」の場合には、これは、データを受信コンピュータの
受信バッファに直接書込むために第1の遠隔書込み動作
を用いること及び受信コンピュータの受信したメッセー
ジキューに制御メッセージを書込むために第2の遠隔書
込み動作を用いることを一般に含む。制御メッセージ
は、関連メッセージの位置をポイントする、即ち、それ
はメッセージのデータ部分が記憶されている受信バッフ
ァをポイントする、「クッキー」を一般に含む。
【0018】コンピュータノードと関連イッシュ(即
ち、本発明によってアドレスされたバッファ割当て及び
使用イッシュ以外)との間でメッセージを送るための遠
隔書込みの使用についての更なる情報は、ここで従来技
術の情報として採り入れられた1997年6月30日に
出願された、米国特許出願第08/885,153号に
見出すことができる。メッセージが受信ノードの受信バ
ッファに書込まれた後、トリガメッセージがノードBの
ネットワークインタフェースに一般に送られ(ステップ
116)、(例えば、どのような新しいメッセージが受
信されたか、等を決定するために受信したメッセージの
キューを点検することによって)、受信したメッセージ
をプロセスするためにノードBの手続きの実行をトリガ
する。
【0019】メッセージが送られかつプロセスされた後
のある地点で、ノードAのメッセージ送信スレッドは、
OMMUエントリ及び先にインポートされたメモリをマ
ッピングするための物理アドレスに対する仮想を分解又
は変更することによってそれが用いた受信バッファをア
ンインポートするか又は解放する(ステップ118)。
ノードBは、もしあれば、受信した短いメッセージ次い
で受信した長いメッセージの主データ部分をプロセスす
ることによって短いメッセージ及び/又はトリガメッセ
ージのいずれかの受信に応答する(ステップ120)。
更に、又はステップ120の一部として、また、ノード
Bは、受信バッファをエクスポートしないようにIMM
Uエントリ及び受信バッファをマッピングするための物
理アドレスに対する仮想を変更するか又は分解する(ス
テップ122)。
【0020】もちろん、従来技術は、遠隔書込み動作を
実行するために図5を参照して上述された動作のシーケ
ンス上で多くの変化を含む。しかしながら、上述したス
テップは、Solaris(ソラリス:サンマイクロシ
ステムの登録商標)のような、UNIX(SCOの登録
商標)型オペレーティングシステムを用いている分散型
コンピュータシステムについて一般的である。
【0021】
【発明が解決しようとする課題】しかしながら、上述し
たように、メッセージの送信前に要求されかつ割り当て
られる受信バッファを待たなけらばならないことによっ
てもたらされるシステム呼出し時間は、相当であり、か
つそれらのシステム呼出し時間は、特に、タスクが多重
プロセッサにわたり分散されかつプロセッサ間のメッセ
ージトラフィックがヘビーでありかつ実行されるデータ
処理の不可欠な部分を形成するようなマルチプロセッサ
システムにおいて、システム性能の劣化を結果として間
接的に生じうる。纏めると、特にヘビーメッセージトラ
フィックの多重プロセッサシステムにおいて、より効率
的な受信バッファ割り当て方法に対する必要性が存在す
る。
【0022】
【課題を解決するための手段】本発明の上記課題は、バ
ッファーメモリーを割り当て第1コンピューターから第
2コンピューターへメッセージを送る方法において、第
1コンピューターにおいて、第2コンピューターに、1
組のメモリーセグメントを割り当て第1ノードにエクス
ポートするように要求し、該メモリーセグメントはそれ
ぞれ所定のサイズ範囲内に複数のメッセージバッファー
を保持するのに十分な特定のサイズを有し、
【0023】第2コンピューターによりエクスポートさ
れたメモリーセグメントをインポートし、第2コンピュ
ーターと独立に、インポートされたメモリーセグメント
内にメッセージバッファーを割り当て、少なくとも1つ
の割り当てられたメッセージバッファー内に遠隔的にメ
ッセージのデータ部分を書き込み、メッセージのデータ
部分が書き込まれた少なくとも1つのメッセージバッフ
ァーの位置を示す対応する制御メッセージを第2コンピ
ューターに送るステップを実行することにより、個々の
メッセージ(長いメッセージ)のために所定の最小長さ
より大きいデータ部分を有することを含んで、メッセー
ジを第2コンピューターに送る、ステップを備える方法
によって達成される。
【0024】本発明の方法では、第2コンピューターに
おいて、第2コンピューターのメモリーセグメント内
に、それぞれ所定のサイズ範囲内に複数のメッセージバ
ッファーを保持するのに十分な特定のサイズを有する割
り当てられたメモリーセグメントの少なくともサブセッ
トを割り当て、割り当てられたメモリーセグメントを第
1コンピューターにエクスポートし、長いメッセージの
データ部分が書き込まれる少なくとも1つのメッセージ
バッファーの位置を求めるため、第1コンピューターに
より送られる個々の長いメッセージに対応する制御メッ
セージを処理し、少なくとも1つのメッセージバッファ
ーのデータを処理する事を含んで、第1コンピューター
により送られるメッセージを処理し、それにより、第1
コンピューターは、第2コンピューターと独立に第2コ
ンピューターのメモリーセグメント内のメッセージバッ
ファーを遠隔的に割り当て、遠隔的に割り当てられたメ
ッセージバッファーを使用して第2コンピューターに長
いメッセージを送るようにしてもよい。
【0025】本発明の方法では、第1コンピューターに
おいて、個々のインポートされたセグメントのもしあれ
ばそれぞれの未使用の部分についての位置情報を記憶す
ることを含んで、第1コンピューターにより第2コンピ
ューターからインポートされた個々のセグメントを追跡
するためインポートされたセグメントデータ構造を保持
し、メッセージを送るステップは、メッセージバッファ
ー割り当てステップを含み、メッセージバッファー割り
当てステップは、個々の長いメッセージのためにインポ
ートされたセグメントの少なくとも1つの未使用部分か
ら少なくとも1つのメッセージバッファーを割り当て、
インポートされたセグメントデータ構造に記憶された対
応する位置情報を更新し、メッセージバッファーをが割
り当てた個々のインポートされたセグメントの残りの部
分の新しい位置を示すようにしてもよい。
【0026】本発明の方法では、第1コンピューターに
おいて、インポートされたメモリーセグメントのどれか
がいつ使い尽くされるか求め、個々の使い尽くされたメ
モリーセグメントのために、使用できない使い尽くした
メモリーセグメントを示すためインポートされたセグメ
ントデータ構造内の記号を記憶し、使い尽くしたメモリ
ーセグメントのリサイクルを要求するため、セグメント
リサイクル要求メッセージを第2コンピューターに送
り、第2コンピュータからのセグメントリサイクルメッ
セージを待ち、使い尽くしたメモリーセグメントの再使
用を可能にするため、インポートされたセグメントデー
タ構造内に情報を記憶するステップを実行し、第2コン
ピューターにおいて、特定のセグメントのセグメントリ
サイクル要求メッセージを受取ると、特定のメモリーセ
グメント内のバッファーを使用する第1コンピューター
から送られた全てのメッセージが処理されるまで待ち、
次に特定のメモリーセグメントのためのセグメントリサ
イクルメッセージを第1コンピューターに送るようにし
てもよい。
【0027】本発明の方法では、第1コンピューターに
おいて、インポートされたメモリーセグメントのどれか
がいつ使い尽くされるか求め、個々の使い尽くされたメ
モリーセグメントのために、使用できない使い尽くした
メモリーセグメントを示すためインポートされたセグメ
ントデータ構造内の記号を記憶し、使い尽くしたメモリ
ーセグメントのリリースを要求するため、セグメントリ
リース要求メッセージを第2コンピューターに送り、使
い尽くしたメモリーセグメントをアンインポートするス
テップを実行し、第2コンピューターにおいて、特定の
セグメントのセグメントリリース要求メッセージを受取
ると、特定のメモリーセグメント内のバッファーを使用
する第1コンピューターから送られた全てのメッセージ
が処理されるまで待ち、次に特定のメモリーセグメント
をアンエクスポートし、割り当て解除するようにしても
よい。
【0028】また、本発明の上記課題は、分散したコン
ピューターシステムにおいて、第1コンピューターから
のメッセージを第2コンピューターに遠隔的に書き込む
装置であって、
【0029】第1コンピューターに、CPU、メッセー
ジを送信し受信するネットワークインターフェース、第
2コンピュータによりエクスポートされたメモリーセグ
メントをインポートするための、第1コンピューターの
CPUで実行されるメモリーセグメントインポート手
順、所定の最小長さより大きいデータ部分を有する長い
メッセージを送る指示を含んで、メッセージを第2コン
ピューターに送るための、第1コンピューターのCPU
で実行されるメッセージ送り手順、を備え、個々の長い
メッセージを送るための長いメッセージ送信指示は、第
2コンピューターと独立にインポートされたメモリーセ
グメント内の少なくとも1つのメッセージバッファーを
割り当て、メッセージデータ部分を少なくとも1つの割
り当てられたメッセージバッファー内に書き込み、メッ
セージデータ部分が書き込まれた少なくとも1つのメッ
セージバッファーの位置を示す対応する制御メッセージ
を第2コンピューターに送るための指示を含む装置によ
って達成される。
【0030】本発明の装置では、第1コンピューターに
おいて、メッセージセグメントインポート手順とメッセ
ージ送信手順は、第1コンピューターにより第2コンピ
ューターからインポートされた個々のセグメントを追跡
するために、個々のインポートされたセグメントのもし
あればそれぞれの未使用の部分についての位置情報を記
憶することを含んで、インポートされたセグメントデー
タを保持する指示を含み、メッセージ送信手順は、少な
くとも1つのインポートされたセグメントの未使用の部
分から個々の長いメッセージのための少なくとも1つの
メッセージバッファーを割り当て、インポートされたセ
グメントデータ構造に記憶される対応する位置情報を更
新する指示を含み、メッセージバッファーを割り当てた
個々のインポートされたセグメントの残りの部分の新し
い位置を示すように構成してもよい。
【0031】本発明の装置では、第2コンピューター
に、CPU、メッセージを送信し受信するネットワーク
インターフェース、第2コンピュータのメモリーセグメ
ントを割り当てるための、第2コンピューターのCPU
で実行されるメモリーセグメント生成手順で、割り当て
られたメモリーセグメントの少なくともサブセットは、
それぞれ所定のサイズ範囲内に複数のメッセージバッフ
ァーを保持するのに十分な特定のサイズを有し、また割
り当てられたメモリーセグメントを第1コンピューター
にエクスポートするメモリーセグメント生成手順、及
び、第1コンピューターから受取った個々のメッセージ
を処理し、ネットワークインターフェースを介して、第
1コンピューターの対応するメモリー位置に受領メッセ
ージを遠隔的に書き込むための第2コンピューターのC
PUで実行される受領メッセージ手順を備えるように構
成してもよい。
【0032】本発明の装置では、第1コンピューターに
おいて、メッセージセグメントインポート手順とメッセ
ージ送信手順は、第1コンピューターにより第2コンピ
ューターからインポートされた個々のセグメントを追跡
するため、個々のインポートされたセグメントのもしあ
ればそれぞれの未使用の部分についての位置情報を記憶
することを含んで、インポートされたデータを維持する
指示を含み、メッセージ送信手順は、少なくとも1つの
インポートされたセグメントの未使用の部分からの個々
の長いメッセージに少なくとも1つのメッセージバッフ
ァーを割り当て、インポートされたセグメントデータ構
造に記憶された対応する位置情報を更新して、メッセー
ジバッファーを割り当てた個々のインポートされたセグ
メントの残りの部分の新しい位置を示し、メッセージ送
信手順は、いつインポートされたメモリーセグメントの
どれかがいつ使い尽くされたか求める指示を含み、個々
の使い尽くしたメモリーセグメントのため、使い尽くし
たメモリーセグメントは使用できないことを示すため、
インポートされたセグメントデータ構造に記号を記憶
し、使い尽くしたメモリーセグメントのリサイクルを要
求するため、第2コンピューターにセグメントリサイク
ル要求メッセージを送り、第2コンピューターからのセ
グメントリサイクルメッセージを待ち、次にインポート
されたセグメントデータ構造に情報を記憶して、使い尽
くしたメモリーセグメントの再使用を可能にするステッ
プを実行し、第2コンピューターにおいて、特定のメモ
リーセグメントにセグメントリサイクル要求メッセージ
を受取り、特定のメモリーセグメントのバッファーを使
用する第1コンピューターにより送られる全てのメッセ
ージが処理されるまで待ち、次に特定のメモリーセグメ
ントのためのセグメントリサイクルメッセージを第1コ
ンピューターに送るための、第2コンピューターのCP
Uにより実行されるセグメントリサイクル手順を備える
ように構成してもよい。
【0033】本発明の装置では、第1コンピューターに
おいて、メッセージセグメントインポート手順とメッセ
ージ送信手順は、第1コンピューターにより第2コンピ
ューターからインポートされた個々のセグメントを追跡
するため、個々のインポートされたセグメントのもしあ
ればそれぞれの未使用の部分についての位置情報を記憶
することを含んで、インポートされたデータを維持する
指示を含み、メッセージ送信手順は、少なくとも1つの
インポートされたセグメントの未使用の部分からの個々
の長いメッセージに少なくとも1つのメッセージバッフ
ァーを割り当て、インポートされたセグメントデータ構
造に記憶された対応する位置情報を更新して、メッセー
ジバッファーを割り当てた個々のインポートされたセグ
メントの残りの部分の新しい位置を示し、メッセージ送
信手順は、いつインポートされたメモリーセグメントの
どれかがいつ使い尽くされたか求める指示を含み、個々
の使い尽くしたメモリーセグメントのため、使い尽くし
たメモリーセグメントは使用できないことを示すため、
インポートされたセグメントデータ構造に記号を記憶
し、使い尽くしたメモリーセグメントのリサイクルを要
求するため、第2コンピューターにセグメントリサイク
ル要求メッセージを送り、使い尽くしたメモリーセグメ
ントをアンインポートするステップを実行し、第2コン
ピューターにおいて、特定のメモリーセグメントのセグ
メントリサイクル要求メッセージを受取り、特定のメモ
リーセグメントのバッファーを使用する第1コンピュー
ターにより送られる全てのメッセージが処理されるまで
待ち、次に特定のメモリーセグメントをアンエクスポー
トし、割り当て解除するための、第2コンピューターの
CPUにより実行されるセグメントリリース手順を備え
るように構成してもよい。
【0034】
【発明の実施の形態】本発明は、メッセージ受渡し効率
に対して受信バッファを割当てるプロセスを行うため
に、第1のコンピュータに、第2のコンピュータにおけ
るバッファ空間を遠隔的に割当てさせるシステム及び方
法である。概念的に、第1のコンピュータ(送信ノード
とも呼ばれる)は、一つ以上のメモリ「セグメント」を
第1のコンピュータに割当てかつエキスポートする第2
のコンピュータ(受信ノードとも呼ばれる)をプロンプ
トする。各割当てられたセグメントは、そのサイズが受
信バッファサイズの所定の範囲内に入るような複数の受
信バッファを保持するのに充分大きい。一度セグメント
が割当てられかつエクスポートされたならば、送信ノー
ドは、受信ノードとインタラクションなしで、逐次的受
信バッファに対してシーケンス的に連続な部分を用い
て、セグメント内の受信バッファを割当てる。メッセー
ジは、割当てられた受信バッファに各メッセージのデー
タ部分を遠隔的に書込みかつ受信ノードのメッセージキ
ューに対応受信バッファへのポインタを伴う制御メッセ
ージを書込むことによって受信ノードに送信される。受
信ノードは、各制御メッセージによって特定される割当
てられたセグメントの部分内のメッセージをプロセスし
かつ各セグメントの使用済及び/又は未使用部分を追跡
しない。送信ノードだけが各割当てられたセグメントの
未使用部分を追跡する。その結果、受信バッファを割当
てることと関連する計算及び通信リソースオーバーへッ
ドは、実質的に低減される。
【0035】一度送信ノードがセグメントを使い果たし
たならば(一般的に、少なくともセグメントの所定の部
分を用いることによって)、それは、セグメント解放メ
ッセージ又はセグメントリサイクルメッセージのいずれ
かを受信ノードに送る。セグメント解放メッセージは、
一度受信ノードがセグメントの全てのメッセージをプロ
セスしたならばセグメントをアンエクスポートさせかつ
割当て解除させ、セグメントリサイクルメッセージは、
一度受信ノードがセグメントの全てのメッセージをプロ
セスしたならばセグメントを用いるべく受信ノードに送
信ノードをリイネーブルさせる。本発明の更なる目的及
び特徴は、添付した図面に関して、以下の詳細な説明及
び特許請求の範囲から容易に理解できるであろう。
【0036】
【実施例】本発明は、特に図6に示すサーバクラスタ環
境のような環境において、メッセージ送信動作をより効
率的にする方法に関する。サーバクラスタ 図6を参照すると、多重CPUサーバ202及び一つ以
上の通信ネットワーク206を介してサーバに結合され
る多数のクライアントコンピュータ204を含む分散型
コンピュータシステムが示されている。サーバ202
は、単一のサーバコンピュータによって供給されるより
も多くの計算サービスをクライアント204に供給する
ようにコンピュータ210の一つ以上のクラスタ208
を含む。サーバ202は、「サーバクラスタ」としばし
ば呼ばれる。本明細書の目的に対して、情報を共有する
ことが必要である二つのサーバコンピュータ210が同
じクラスタ210又は異なるクラスタであるということ
は、無関係である。
【0037】計算及びファイルタスクは、サーバのコン
ピュータ210にわたり分散される。その結果、一つの
サーバコンピュータで実行されているプロセスによって
必要なデータは、別のサーバコンピュータに配置されう
る。サーバクラスタ202内のノード間のメッセージ通
信は、高速でかつ信頼性が高く、エラー又は故障の率
は、一般に、数百万メッセージに一つよりも少ない割合
である。本発明を説明する目的に対して、用語「せんだ
本発明を説明する目的に対して、用語「センダ」(又
は送信ノード)及び「レシーバ」(又は受信ノード)
は、両方ともサーバ202内のコンピュータ210を参
照するために用いられる。しかしながら、本発明は、ま
た、二つのコンピュータ間のデータの遠隔書込みが信頼
性が高いということが分かっている限り、あらゆる
「真」のクライアントコンピュータ204とサーバクラ
スタ202のサーバコンピュータ210との間の遠隔書
込みを実行するためにも用いることができる。
【0038】コンピュータノード構成 図7は、サーバクラスタ200(図6参照)内のコンピ
ュータ210のブロック図を示している。コンピュータ
210は、特定遠隔メッセージング動作に関する送信又
は受信ノードのいずれかでありうる。コンピュータ21
0は、CPU320、内部通信又はメモリバス322、
ランダムアクセスメモリ324、通信又はネットワーク
インタフェース(NIC)326、高速磁気ディスクの
ような、不揮発性、非ランダムアクセスメモリ装置32
8、及び対応ディスクコントローラ330を含む。この
明細書の目的に対して、「長いメッセージ」は、受信バ
ッファに書込まれたデータ部分プラス、長いメッセージ
のデータ部分が記憶されている位置をポイントする一つ
以上の「クッキー」を一般に含む、短い制御メッセージ
から構成されるべく定義される。しかしながら、都合
上、長いメッセージのデータ部分は、「長いメッセー
ジ」としばしば呼ばれる。
【0039】好ましい実施例では、NIC326及びデ
ィスクコントローラ330は、PCIバス334に結合
され、PCIバス334は、次いで、バスブリッジ33
6によって主メモリバス322に結合される。コンピュ
ータのメモリ324は、ディスク記憶装置328に関し
て、通常、以下のものを記憶する: ・オペレーティングシステム340(例えば、サンマイ
クロシステムズのソラリスオペレーティングシステ
ム); ・手続きコール及びリターンの間にパラメータを渡すた
め、並びに当業者によく知られた他の目的に用いる、各
スレッドに対するプログラムパラメータスタック34
2; ・別のノードへのデータの送信を起動すること、遠隔的
に配置されたディスク記憶装置からデータを要求するこ
と、等ができるアプリケーションプログラムを含んでい
るアプリケーションプログラム344; ・ネットワークインタフェース326を制御しかつそこ
におけるIMMU及びOMMUの使用を管理するための
NICドライバ346(図7には示されていない); ・受信したメッセージをプロセスし(即ち、プロセスす
るために適当なアプリケーションにそれらを受渡す)、
かつ受信したメッセージキューを管理するための、メッ
セージ受信手続き348(オペレーティングシステムの
カーネルの一部として実施されるのが好ましい); ・メッセージセグメントを別のコンピュータノードにエ
クスポートするためのセグメントエクスポーティング手
続き350; ・セグメントエクスポーティング手続き350によって
エクスポートされたセグメントである、一組の受信バッ
ファセグメント352; ・別のコンピュータノードに割当てられかつエクスポー
トされたセグメントを追尾するための、エクスポートセ
グメント表354; ・それらがデータを一つ以上のセグメント342内の一
つ以上の受信バッファに送信した後に別のノードから制
御メッセージ等を受信し、かつ別のノードから短いメッ
セージを受信するための、受信メッセージキュー35
6; ・セグメントが予めエクスポートされた送信ノードの要
求でセグメントをそれぞれ解放しかつリサイクリングす
るための手続き358、360; ・遠隔ノードに長いメッセージを送るための(オペレー
ティングシステム340の一部として実施されるのが好
ましい)メッセージ送信手続き362; ・別のコンピュータノードからメッセージセグメントを
インポートするためのセグメントインポーティング手続
き364; ・受信コンピュータノードに送信されるべきメッセージ
のデータ部分を記憶するための一組の送信バッファ36
6; ・別のコンピュータノードからインポートされたセグメ
ントを追尾するための、インポートセグメント表36
8; ・別のノードに送信されたメッセージの情況を示してい
るデータを記憶するためのackメッセージキュー37
0; ・受信バッファを形成すべくセグメントの部分を割当て
るためのセグメントアロケータ372; ・セグメントの解放及びリサイクリングをそれぞれ要求
するための手続き374、376; ・送信及び受信メッセージの両方に対して受信メッセー
ジ及びackメッセージキューの使用を管理するための
メッセージ及びackキューポインタ及び局所変数37
8.
【0040】メモリセグメントデータ構成 図8を参照すると、受信ノード(図8のノードB)によ
って割当てられた各メモリセグメント352は、その大
きさが受信バッファサイズの所定の範囲内にある複数の
(例えば、4〜100)受信バッファ392を保持する
のに十分であるように大きさに作られるのが好ましい。
例えば、送信ノード(図8のノードA)は、第1の所定
のサイズ範囲を有している「短いメッセージ」に対して
二つのセグメント、第2の所定のサイズ範囲を有してい
る「中間長さのメッセージ」に対する二つのセグメン
ト、及び第3の所定のサイズ範囲を有している「長いメ
ッセージ」に対して二つのセグメントの割当てを要求し
うる。特定の受信ノードから送信ノードによってインポ
ートされたセグメントを追尾するために、各送信ノード
は、各インポートセグメント352に対して一つのエン
トリ390を含むインポートセグメント表368を維持
する。本発明のある実施例では、各コンピュータノード
は、それがそれからメモリセグメントをインポートした
各受信ノードに対して別個のインポートセグメント表を
維持し、他の実施例では、各コンピュータノードは、単
一のインポートセグメント表を維持する。各エントリ
は、分散型コンピュータシステム全体に関して対応セグ
メントを独自に識別するので、単一インポートセグメン
ト表の使用を想定する。
【0041】インポートセグメント表の各エントリは、
一つの特定のインポートセグメントについての情報を含
みかつ以下のフィールドを含む: ・NodeID401と一緒に分散型コンピュータシス
テム全体を通してセグメントを独自に識別する、Seg
ID400;SegID400は、対応インポートセグ
メントを割当てた受信ノードによって生成される; ・対応セグメントが物理的に配置されるコンピュータノ
ードを識別する、NodeID401; ・セグメントの局所仮想アドレスである、Addres
s402; ・関連インポートセグメントの状態を示す、Statu
s403;本明細書に関連するインポートセグメントの
主Status値は、インポートセグメントが使用可能
であることを示す、Imported、及びそれが解放
又はリサイクルされるプロセスにあるのでセグメントが
使用可能でないことを示す、Freeである; ・インポートセグメント内の送信ノードによって割当て
られた受信バッファ392の数を示す、#BufsCr
eated404; ・送信ノードによって現在使われている(インポートセ
グメントの)受信バッファ392の数を示す、RefC
nt405; ・セグメントの未使用部分をポイントする、NextP
tr406;及び ・セグメントの大きさ(例えば、バイト又はワードの単
位或いは他の都合のよい単位で測定されたもの)を示
す、Size407。
【0042】特定の送信ノードに受信ノードからエクス
ポートされたセグメントを追尾するために、各受信ノー
ドは、各エクスポートセグメント352に対して一つの
エントリ390を含むエクスポートセグメント表354
を維持する。エクスポートセグメント表の各エントリ
は、一つの特定のエクスポートセグメントについての情
報を含みかつ以下のフィールドを含む: ・受信ノードの(即ち、エクスポートセグメント表がハ
ードウェア位置されるノードの)NodeIDと一緒に
分散型コンピュータシステム全体を通してセグメントを
独自に識別する、SegID410; ・セグメントの局所仮想アドレスである、Addres
s411; ・関連エクスポートセグメントの状態を示す、Stat
us412;本明細書に関連するインポートセグメント
の主Status値は: −− セグメントげ送信ノードにエクスポートされたこ
とを示す、Exported; −− 送信ノードがセグメントをインポートしかつセグ
メントの受信を肯定応答をしたことを示す、Activ
e; −− セグメントが解放又はリサイクルされるプロセス
にあることを示す、Released;及び −− セグメントが割当て解除されるプロセスにあるこ
とを示す、Free. ・送信ノードがそれがセグメントに割当てられたという
バッファの数を示す、Expected413; ・受信ノードがプロセスしたセグメントにおけるバッフ
ァの数を示す、Received414; ・受信ノードによって現在プロセスされている(エクス
ポートセグメントの)受信バッファ392の数を示す、
RefCnt415;及び ・セグメントの大きさ(例えば、バイト又はワードの単
位或いは他の都合のよい単位で測定されたもの)を示
す、Size416。
【0043】受信メッセージキュー及びAckメッセー
ジキューデータ構成 図9を参照すると、Ackメッセージキュー370は、
それぞれが別のノードに送信された一つのメッセージの
状態を追尾するために用いられる、一組のN(例えば、
16又は32)ackエントリ430で構成されてい
る。各ackエントリ430は、以下の情報フィールド
を含む: ・二つの値:メッセージは、送られたが、受信ノードに
よってまだ肯定応答されていないということを示す、M
sg_Sent、及び受信ノードによって対応メッセー
ジが肯定応答されかつプロセスされたということを示
す、Msg_Emptyの一つを有することができる、
Status432. ・1又は0に等しい、Gen434.Genフィールド
値の目的は、対応受信メッセージキューエントリのSt
atus値が、(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状態値が成功裏に受信されなかっ
たことを意味する。 ・対応メッセージが宛先ノードに送信された時間を表
す、TimeSent436。メッセージの送信がその
送信のある一定の時間量内で肯定応答されない場合、特
別な測定が問題を解決するために(以下に説明するよう
に)行われる。
【0044】各ノードで維持されるポインタ及び生成値
は、以下の通りである: ・ CurrentAckポインタ451は、現在用い
られているackキューエントリをポイントする。 ・ CurrentMsg452ポインタは、現行ac
kキューエントリ430に対応する受信ノードのメッセ
ージキューエントリ440をポイントする。 ・ CurrentGen値453は、現行ackキュ
ーエントリに対するgen値である。 ・ RecAck457、RecMsg458及びRe
cGen459値は、受信メッセージをプロセスしかつ
各そのようなメッセージを送ったノードに肯定応答を送
るために受信メッセージ手続きによって用いられるポイ
ント及び生成値である。
【0045】メッセージが送信される度に、(A)送信
ノードは、ackキューエントリ430の対応値を記憶
し、かつ(B)CurrentAck451及びCur
rentMsg452ポインタを次のack及び受信メ
ッセージキューエントリに対する点に進めるbump()
手続きがコールされる。現行ackエントリがackメ
ッセージキューのトップエントリであれば、bump()
手続きは、(受信ノードの)ベースackメッセージキ
ューエントリ及びベース受信メッセージキューエントリ
をそれぞれポイントすべくCurrentAck451
及びCurrentMsg452ポインタをリセット
し、かつその前の値から次の(異なる)値にCurre
ntGen453を更新する。受信メッセージキュー3
56は、それぞれが別のノードから受信した一つのメッ
セージを記憶するために用いられる、一組のN(例え
ば、16又は32)ackエントリ440で構成されて
いる。各受信メッセージエントリ440は、以下の情報
フィールドを含む: ・三つの値:メッセージは受信されたが、受信ノードに
よってまだプロセス又は肯定応答されていないというこ
とを示す、Msg_Sent、メッセージがプロセスさ
れているが、まだ肯定応答されていないということを示
す、Msg_Rcvd,及びメッセージのプロセシング
が起動されかつ肯定応答が送信ノードに送信されたとい
うことを示す、Msg_Emptyの一つを有すること
ができる、Status442. ・1又は0に等しく、かつ送信ノードによってキューエ
ントリに書込まれた生成値である、Gen444. ・メッセージの型及びそれをプロセスするために必要な
手続きを示す、Opcode446.例えば、あるop
codesは、メッセージがプロトコルメッセージであ
るということを示し、別のopcodesはメッセージ
がアプリケーションプログラムによってプロセスされる
ことが必要であるということを示す。 ・ 短いメッセージの本体、又はメッセージが配置され
るような受信バッファの位置を示すために用いられる一
つ以上の「クッキー」データ構成のいずれかを表す、D
ata448. 各受信メッセージキューエントリの好ましい実施例では
Status及びGenフィールド442、444は、
単一バイト又はワードに記憶されかつ、両方のアイテム
の記憶が一緒に成功するか失敗しなければならないの
で、単一書込み動作を用いて一緒に書込まれるのが好ま
しい。即ち、メッセージキューエントリに成功裏に書込
まれることは、Status値に対してまったく受け入
れることができないが、Gen値の書込みに対して失敗
することは、受け入れる、又はその逆である。
【0046】より広い観点から、Genフィールド値
は、単一のバイナリデジット(即ち、単一ビット)シー
ケンス番号である。代替え実施例では、Genフィール
ド値は、複数のビットシーケンス番号によって置換える
ことができ、各Genフィールドシーケンス番号は、そ
のエントリに対するメッセージが受信ノードに送られる
度にackキューエントリに対して増分される。対応受
信メッセージキューエントリに記憶されたGenフィー
ルドシーケンス番号は、それが送信ノードからStat
us及びGenフィールド値を受け取った最後のメッセ
ージを示す。各ノードがメッセージを送りかつ受取るの
で、各ノードは、それがメッセージを送る各他のノード
に対する送信ノードデータ構成の一つの完全な組を有
し、かつそれがそれからメッセージを受取る各ノードに
対する受信ノードデータ構成の一つの完全な組も有す
る。
【0047】メッセージ送信及びメッセージ受信手続き
によるack及び受信メッセージキューの使用は、先に
参照した米国特許出願により詳細に記載されている。
【0048】クッキーデータ構成 図10を参照すると、受信メッセージキュー356に記
憶される各制御メッセージは、対応メッセージが一つ以
上の受信バッファに記憶された一つ以上のデータ部分を
有している長いメッセージであるならば、少なくとも一
つの「クッキー」データ構成(通常、クッキーと呼ばれ
る)470を含む。各クッキー470は、三つの値の一
つを有することができるCookieTypeフィール
ド471を有する: −−受信バッファをポイントするクッキーを示す、レギ
ュラクッキー; −−それぞれが受信バッファをポイントする、多重クッ
キーを記憶しているバッファをポイントするクッキーを
示す、多重クッキー; −−クッキーの残りの部分が短いメッセージのデータ部
分を含むことを示す短いメッセージクッキー。 次いで、クッキーの型により、クッキーは、短いメッセ
ージのデータ部分を表す、InLineDataフィー
ルド475、又は以下の三つのフィールドを有する: ・クッキーによってポイントされた受信バッファを含ん
でいるセグメントのSegIDを示す、SegID47
2. ・セグメントの開始から受信バッファの開始までのオフ
セットを示す、Offset473. ・受信バッファのサイズ(大きさ)を示す、BufSi
ze474。 ・
【0049】セグメントをインポートしかつエクスポー
トする手続きの好ましい実施例 図11Aを参照すると、好ましい実施例では、送信ノー
ドが新しい又は追加のセグメントを要求するときにはい
つでも、ImportSegment(インポートセグ
メント)手続き364がコールされる。この手続きは、
受信ノードに「要求セグメント」メッセージを送り、そ
れが特定されたサイズのメモリセグメントを割当てかつ
エクスポートするということを要求し(ステップ48
0)、次いで、メモリエクスポートメッセージを受信す
るのを待つ(ステップ482)。メモリエクスポートメ
ッセージは、受信したときに、送信ノードにエクスポー
トされているメモリセグメントと関連するグローバルア
ドレス範囲、及び受信ノードによってメモリセグメント
に割当てられたSegIDを特定する。
【0050】一度送信ノードが受信ノードから対応エク
スポートメッセージを受信すると、送信ノードは、メモ
リセグメントに対するグローバルアドレス範囲を局所物
理アドレスの対応範囲にマップすべくOMMUエントリ
をセットアップすることによって、かつまた送信ノード
におけるプロセスがセグメントの受信バッファにデータ
を書込むことができるように物理アドレスマッピングに
対する対応仮想アドレスをセットアップすることによっ
て(ステップ484)、メモリセグメントをインポート
する。更に、送信ノードは、新しいセグメントに対する
インポートセグメント表におけるエントリを初期化する
(486)。インポートセグメント表のエントリは、イ
ンポートセグメントのSegID,NodeID,局所
仮想Address(アドレス)、及びサイズを示す。
Statusは、Importedに初期化され、#B
ufsCreated及びRefCntフィールドは、
ゼロ値に初期化され、かつNextPtrは、セグメン
トのAddressに等しく設定される。そして、「セ
グメントインポーテッド」メッセージは、セグメントが
成功裏にインポートされたということを受信ノードに知
らせるために受信ノードに送られる(ステップ48
8)。
【0051】図11Bを参照すると、受信ノードによっ
て実行されかつ送信ノードによって実行されるインポー
トセグメント手続き364に関連して作動する、エクス
ポートセグメント手続き350は、以下のように送信ノ
ードによるセグメント割当て要求に応答する。まず、受
信ノードによって実行されるように、要求されたサイズ
のメモリセグメントを割当て(ステップ490)、かつ
メモリセグメントを要求している送信ノードにエクスポ
ートする(ステップ492)。エクスポーティング段階
は、メモリセグメントの物理アドレス範囲をグローバル
アドレスの割当てられた対応範囲にマップすべくIMM
Uエントリをセットアップすること、及び物理アドレス
マッピングに対して対応仮想アドレスをセットアップす
ることも含む。更に、エクスポーティング段階は、メモ
リエクスポートメッセージを要求している送信ノードに
送ることを含む。
【0052】手続きは、次いで、新しいセグメントに対
するエクスポートセグメント表のエントリを初期化する
(494)。エクスポートセグメント表のエントリは、
インポートセグメントのSegID、局所仮想Addr
ess、及びサイズを示す。Statusは、Expo
rted(エクスポーテッド)に初期化され、かつEx
pected,Received及びRefCntフィ
ールドは、ゼロ値に初期化される。次に、手続きは、送
信ノードからの「セグメントインポーテッド」メッセー
ジを受信すべく待機する(ステップ496)。セグメン
トインポーテッドメッセージが受信された場合、対応エ
クスポートセグメント表エントリによって表されるよう
な、セグメントのStatusは、セグメントが送信ノ
ードによって成功裏にインポートされたということを示
すべく、Activeに設定される(ステップ49
8)。
【0053】セグメント解放手続き 図12Aを参照すると、送信ノードがセグメントの少な
くとも所定の部分を用いたときはいつでも、セグメント
は、使い果たされたと言われる。代替的に、残りの未使
用部分があまりのも小さいのでセグメントが使い果たさ
れたと言われるので、最初に送信ノードは、セグメント
からの受信バッファを割当てることができない。セグメ
ントが送信ノードによって使い果たされた場合、送信ノ
ードは、割当て解除及びセグメントの解放を起動するた
めに要求セグメント解放(RequestSegmen
tRelease)手続き374を実行することができ
る。しかしながら、本発明は、使い果たされたセグメン
トを解放することそして新しいセグメントの割当てを要
求することに対する代替を提供する。特に、送信ノード
によって要求される新しいセグメントが使い果たされた
古いセグメントと同じサイズであるならば、本発明は、
セグメントを「リサイクリング」するための機構を提供
し、それにより古い及び新しいセグメントに対するMM
U、仮想メモリマッピング、エクスポート及びインポー
トセグメント表エントリを分解しかつ再構築する必要性
を回避する。
【0054】要求セグメント解放手続き374は、セグ
メントに対するRefCntが、送信ノードがセグメン
トから割当てられた全ての受信バッファと作動すること
を終了したということを示す、ゼロに等しくなるまで待
つことによって開始する(ステップ500)。次いで、
それは、セグメント解放要求メッセージを受信ノードに
送る(ステップ502)。セグメント解放要求メッセー
ジを送った後手続きは、セグメントに対するOMMUエ
ントリを分解し、セグメントに対する局所仮想アドレス
範囲をアンマッピングし、かつセグメントに対するイン
ポートセグメント表エントリを削除することによってセ
グメントをアンインポートする。セグメント解放要求メ
ッセージの構成は、図12Bに示されており、かつメッ
セージがセグメント解放要求メッセージであることを示
しているOpcode505、及び解放されるべこセグ
メントのSegID及び、送信ノードがセグメント内で
割当てたバッファの数を示している、#BufsCre
ated値を含むデータフィールド506を含む。
【0055】図12Cを参照すると、セグメント解放要
求をプロセスするための受信ノード手続き358は、セ
グメント解放要求メッセージの受取りに応じて実行され
る。手続きは、特定されたセグメントに対するエクスポ
ートセグメント表エントリのExpectedフィール
ドを受信メッセージの#BufsCreated値に設
定し、かつエクスポートセグメント表エントリのSta
tusフィールドをRelesed(解放)の値に設定
することによって開始する(ステップ510)。次い
で、手続きは、(A)エクスポートセグメント表エント
リの受信カウントフィールドがExpectedフィー
ルドに等しく、かつ(B)RefCntがゼロに等しく
なるまで待機する(ステップ512)。受信ノードが解
放されるべきセグメントにおける受信バッファの全ての
メッセージをプロセスすることを終了したか、又は継続
プロセシングのためにそれらを他の位置に少なくとも移
動したときにこれら二つの条件は、合致する。次いで、
手続きは、(A)セグメントに対するメッセージを割当
て解除し、(B)エクスポートセグメント表の対応エン
トリを削除し、(C)対応IMMUエントリを分解し、
かつ(D)セグメントに対する局所仮想アドレス範囲を
アンマッピングすること、によってセグメントを解放す
る(ステップ514)。
【0056】長いメッセージを送るための送信ノード手
続き 図13を参照すると、長いメッセージ送信手続き362
は、データが受信ノードのアプリケーション手続きによ
るプロセッシングに最適な所定の方法で送信バッファに
フォーマットされかつ記憶されることを基本的に意味す
る、局所送信バッファに長いメッセージのデータ部分を
集めること(520)によって開始する。次に、手続き
は、受信バッファがそれから割当てられるセグメントに
ロックを得る(ステップ522)。各インポートメモリ
セグメントをカバーする送信ノード「ロック」がある。
実施により、一つのロックを全てのインポートセグメン
トに用いることができるか、又は個別のロックを各個々
のインポートセグメントに用いることができる。インポ
ートセグメントをカバーするロックの使用は、そのセグ
メントを用いている全ての送信ノード手続きによって共
有され、かつ同時にセグメントに二つの手続きが動作す
ることからセグメントを保護する。ロックは、一般的に
オペレーティングシステムプリミティブであり、オペレ
ーティングシステムに依存する特定の実施は、本発明が
実施されるようなコンピュータによって用いられる。
【0057】セグメントロックを取得した後、手続き
は、セグメントから一つ以上の受信バッファを割当て
る。#BufsCreatedフィールドは、割当てら
れた各受信バッファに対して1だけ増分され、かつRe
fCntフィールドは、割当てられたバッファの数に係
わりなく1だけ増分される。更に、NextPtrは、
(もしあれば)セグメントの残りの未使用部分をポイン
トするために更新される(ステップ524)。次いで、
セグメントのロックは、解放される(ステップ52
6)。セグメントのロックは、メッセージ送信手続きだ
けによって維持され、バッファは、割当てられかつ関連
ブックキーピングエントリは、インポートセグメント表
になされる。次に、割当てられた受信バッファのそれぞ
れをポイントするためのクッキーを含んでいる、短い制
御メッセージが構築される(ステップ528)。
【0058】長いメッセージのデータ部分は、次いで、
送信バッファから割当てられたバッファに遠隔的に書込
まれる(ステップ530)。次に、先に構築された短い
制御メッセージは、CurrentMsgポインタによ
ってポイントされる、次の利用可能な受信メッセージキ
ューエントリに遠隔的に書込まれる(ステップ53
2)。次に、トリガが受信ノードのネットワークインタ
フェースに送られ(ステップ534)、(例えば、どの
ような新しいメッセージが受信されたか、等を決定すべ
く受信メッセージキューを検査することによって)受信
メッセージをプロセスするために受信ノードにおける手
続きの実行をトリガする。ここでは関係がない機構を用
いて、送信ノードが、受信ノードがメッセージをプロセ
スしたということを決定した場合、それは、局所送信バ
ッファを解放しかつセグメントに対するRefCntを
減少する(ステップ536)。RefCntを減少する
ことは、セグメント上のロックの一時的占有を必要とす
る(図13のフローチャートには示されていない)。
【0059】図13及び14は、メッセージ送信及びプ
ロセッシングの全ての詳細を含まないが、受信バッファ
及びメモリセグメントデータ構成の割当て及び使用をフ
ォーカスしているということに注目すべきである。メッ
セージ送信及びプロセッシングに関する更なる従来技術
の情報は、先に参照した米国特許出願に見出すことがで
きる。
【0060】入力メッセージをプロセスするための受信
ノード手続き 図14を参照すると、入力(即ち、受信)メッセージを
プロセスするための受信ノード手続きは、タイムアウト
スレッド(図示省略)により周期的に再開始される。こ
の手続きは、また、トリガが送信ノードから受信される
ときにはいつでも再開始される。手続きは、受信メッセ
ージキューにおける制御メッセージを読取り(ステップ
540)、制御メッセージの局所コピーを行い(ステッ
プ542)、かつ肯定応答メッセージを送信システムの
ackメッセージキューに送ることを含む、メッセージ
キューエントリを解放する(ステップ544)ことによ
って開始する(ステップ540)。次いで、手続きは、
対応受信バッファを位置決めすべく各クッキーにおける
SegID,Offset及びBufSizeパラメー
タを用いて、制御メッセージにおけるクッキーをプロセ
スする(ステップ546)。
【0061】次に、手続きは、プロセスされる受信バッ
ファが位置決めされるようなセグメントにロックを取得
し、受信メッセージで用いた受信バッファの数だけセグ
メントのReceivedカウント値を増分し、かつま
た1だけセグメントに対するRefCntを増分する
(ステップ548)。次いで、セグメントのロックは、
解放されかつ受信バッファにおけるメッセージのデータ
部分がプロセスされる(ステップ550)。一度受信バ
ッファにおけるメッセージのデータ部分がプロセスされ
たならば、セグメントのロックは、再取得され、Ref
Cntは、一つのメッセージのプロセッシングが完了し
たということを示すべく1だけ減少され、かつロック
は、解放される(ステップ552)。
【0062】纏めると、送信ノードは、それがセグメン
ト内で割当てるバッファの数を追尾するために#Buf
sCreatedフィールドを用い、かつ送信及び/又
は待機の最中に受信システムによってプロセスされるべ
きメッセージの数を追尾するためにRefCntフィー
ルドを用いる。また、(セグメントが位置決めされる)
受信ノードは、セグメントのどの部分が使用されかつど
の部分が未使用のままであるかについてのブックキーピ
ング情報を維持しないが、送信ノードは、セグメントの
未使用部分を追尾するためにNextPtrも用いる。
受信ノードは、それが受信したメッセージクッキーによ
って参照されたセグメントにおけるバッファの数を追尾
するためにReceivedフィールドを用い、かつプ
ロセッシング最中における受信メッセージの数を追尾す
るためにRefCntフィールドを用いる。
【0063】それゆえに、メッセージセグメントそれら
自体を割当てること以外には、本発明は、個々の受信バ
ッファを割当てるために通常必要とされる送信及び受信
ノード間のメッセージトラフィックを実質的に削除し、
それによりメッセージ送信プロセスをより効率的にす
る。
【0064】リサイクリングセグメントに対する手続き 本発明の特徴は、使い果たされたセグメントを解放する
ことそして新しいセグメントの割当てを要求することに
対する代替を提供するということである。特に使い果た
されたセグメントと同じサイズの新しいセグメントが必
要とされるということが予測されるならば、本発明は、
セグメントを「リサイクル」するための機構を提供し、
それにより古い及び新しいセグメントに対するMMU、
仮想メモリマッピング、エクスポート及びインポートセ
グメント表エントリを分解しかつ再構築する必要性を回
避する。図15Aを参照すると、セグメントが送信ノー
ドによって使い果たされた場合、送信ノードは、セグメ
ントの再使用を可能にするプロセスを起動する、要求セ
グメントリサイクル(RequestSegment
Recycle)手続き376を実行することができ
る。手続きは、送信ノードがセグメントから割当てられ
た全ての受信バッファと作動することを終了したことを
示す、セグメントに対するRefContがゼロに等し
くなるまで待機する(ステップ560)ことによって開
始する。次いで、それは、セグメントリサイクル要求メ
ッセージを受信ノードに送る(ステップ562)。セグ
メントリサイクル要求メッセージのデータ部分は、セグ
メント解放要求メッセージに対して図12Bに示したも
のと同じである;セグメントリサイクル要求メッセージ
に対するopcodeだけがセグメント解放要求メッセ
ージのものと異なる。
【0065】セグメントリサイクル要求メッセージを送
った後、手続きは、受信システムがセグメントにおける
全てのメッセージデータをプロセスすることを終了しか
つリサイクルメッセージをリターンするまで送信ノード
による使用に対してセグメントが利用不可能であるとい
うことを示す、セグメントのStatusをFreeに
設定(ステップ564)する。手続きは、次いで、受信
システムからセグメントリサイクルメッセージ(Seg
mentRecycleMessage)を受信するま
で待ち(ステップ566)、そしてそのメッセージの受
信により、それは、セグメントの#BufsCreat
edを(セグメントに対するインポートセグメント表エ
ントリにおいて)ゼロに、NextPtrをセグメント
の開始にポイントするように、そしてStatusをA
ctiveに、設定することによってセグメントを再起
動する(ステップ568)。一度Statusがa ct
iveに設定されたならば、セグメントは、送信ノード
のメッセージ送信手続きによる使用に対して利用可能に
なる。
【0066】図15Bを参照すると、セグメントリサイ
クル要求をプロセスするための受信ノード手続き358
は、セグメントリサイクル要求メッセージの受信に応じ
て実行される。手続きは、特定されたセグメントに対す
るエクスポートセグメント表エントリのExpecte
dフィールドを受信メッセージの#BufsCreat
ed値に設定し、かつエクスポートセグメント表エント
リのStatusフィールドをReleasedの値に
設定することによって開始する(ステップ570)。次
いで、手続きは、(A)エクスポートセグメント表エン
トリのReceivedカウントフィールドがExpe
ctedフィールドに等しく、かつ(B)RefCnt
がゼロに等しくなるまで待機する(ステップ572)。
これら二つの条件は、受信ノードが解放されるセグメン
トにおける受信バッファの全てのメッセージをプロセス
することを終了したか、又は継続プロセッシングのため
に他の位置にそれらを少なくとも移動したときに合致す
る。次いで、手続きは、セグメントリサイクルメッセー
ジを送信システムに送り、かつセグメントのStatu
sをActiveに(セグメントに対するエクスポート
セグメント表エントリにおいて)設定しかつRecei
vedカウントをゼロに設定することによってセグメン
トを再起動する(ステップ574)。
【0067】代替実施例 本発明は、数個の特定な実施例を参照して説明された
が、記載は、本発明の説明のためであり本発明を制限す
ることを企図していない。種々の変更が特許請求の範囲
により定義される本発明の真の精神及び範疇から逸脱す
ることなく当業者により生起されうる。
【図面の簡単な説明】
【図1】図1は、コンピュータネットワークにおける二
つのコンピュータノードのブロック図である。
【図2】図2は、コンピュータネットワークの各コンピ
ュータに見出される通信インタフェースのコンポーネン
トを示しているブロック図である。
【図3】図3は、仮想、ローカル及びグローバルアドレ
ス空間及びそれらのアドレス空間の間のマッピングを示
す図である。
【図4】図4は、分散型コンピュータシステムの第1の
ノードから第2のノードにデータを送信することと関連
したアドレス変換を実行するために用いられるコンピュ
ータモジュールのブロック図である。
【図5】受信メッセージバッファを割当てかつ割当てら
れたバッファを用いてメッセージを送るための通常の手
続きのフローチャートである。
【図6】単一サーバノードとしてコンピュータオペレー
ティングのクラスタを有しているコンピュータシステム
を示す。
【図7】本発明の所定の実施例を組込んでいるコンピュ
ータのブロック図である。
【図8】本発明の好ましい実施例で用いられるセグメン
ト、インポートしたセグメント表及びエクスポートした
セグメント表データ構成を示す図である。
【図9】本発明の好ましい実施例で用いられるメッセー
ジキューデータ構成を示す図である。
【図10】本発明の好ましい実施例で用いられるクッキ
ーデータ構成を示す図である。
【図11A】本発明の好ましい実施例における受信コン
ピュータからの新しいメッセージバッファセグメントを
要求しかつインポートするために送信コンピュータによ
って用いられる、「インポートセグメント」手続きのフ
ローチャートを示す図である。
【図11B】本発明の好ましい実施例における送信コン
ピュータにメッセージバッファセグメントを割当てかつ
エクスポートするために受信コンピュータによって用い
られる、「エクスポートセグメント」手続きのフローチ
ャートを示す図である。
【図12A】本発明の好ましい実施例における送信コン
ピュータによって用いられる「要求セグメント解放」手
続きのフローチャートである。
【図12B】解放セグメントメッセージのデータ構成を
示す図である。
【図12C】本発明の好ましい実施例における受信コン
ピュータによって用いられる「プロセスセグメント解放
要求」手続きのフローチャートである。
【図13】本発明の好ましい実施例における送信コンピ
ュータによる遠隔バッファ割当てを用いることによっ
て、受信コンピュータに長いメッセージを送るための手
続きのフローチャートである。
【図14】本発明の好ましい実施例における受信メッセ
ージをプロセスするための手続きのフローチャートであ
る。
【図15A】本発明の好ましい実施例における送信コン
ピュータによって用いられる「リサイクルセグメント要
求」手続きのフローチャートである。
【図15B】本発明の好ましい実施例における受信コン
ピュータによって用いられる「プロセスリサイクルセグ
メント要求」手続きのフローチャートである。
───────────────────────────────────────────────────── フロントページの続き (71)出願人 591064003 901 SAN ANTONIO ROAD PALO ALTO,CA 94303,U. S.A. (72)発明者 マーシャル シー ピーズ アメリカ合衆国 カリフォルニア州 94043 マウンテン ヴィュー ローラ レーン 2368

Claims (10)

    【特許請求の範囲】
  1. 【請求項1】 バッファーメモリーを割り当て第1コン
    ピューターから第2コンピューターへメッセージを送る
    方法において、 第1コンピューターにおいて、 第2コンピューターに、1組のメモリーセグメントを割
    り当て第1ノードにエクスポートするように要求し、該
    メモリーセグメントはそれぞれ所定のサイズ範囲内に複
    数のメッセージバッファーを保持するのに十分な特定の
    サイズを有し、 第2コンピューターによりエクスポートされたメモリー
    セグメントをインポートし、 第2コンピューターと独立に、インポートされたメモリ
    ーセグメント内にメッセージバッファーを割り当て、 少なくとも1つの割り当てられたメッセージバッファー
    内に遠隔的にメッセージのデータ部分を書き込み、メッ
    セージのデータ部分が書き込まれた少なくとも1つのメ
    ッセージバッファーの位置を示す対応する制御メッセー
    ジを第2コンピューターに送るステップを実行すること
    により、個々のメッセージ(長いメッセージ)のために
    所定の最小長さより大きいデータ部分を有することを含
    んで、メッセージを第2コンピューターに送る、ステッ
    プを備える方法。
  2. 【請求項2】 請求項1記載の方法において、 第2コンピューターにおいて、 第2コンピューターのメモリーセグメント内に、それぞ
    れ所定のサイズ範囲内に複数のメッセージバッファーを
    保持するのに十分な特定のサイズを有する割り当てられ
    たメモリーセグメントの少なくともサブセットを割り当
    て、割り当てられたメモリーセグメントを第1コンピュ
    ーターにエクスポートし、 長いメッセージのデータ部分が書き込まれる少なくとも
    1つのメッセージバッファーの位置を求めるため、第1
    コンピューターにより送られる個々の長いメッセージに
    対応する制御メッセージを処理し、少なくとも1つのメ
    ッセージバッファーのデータを処理する事を含んで、第
    1コンピューターにより送られるメッセージを処理し、 それにより、第1コンピューターは、第2コンピュータ
    ーと独立に第2コンピューターのメモリーセグメント内
    のメッセージバッファーを遠隔的に割り当て、遠隔的に
    割り当てられたメッセージバッファーを使用して第2コ
    ンピューターに長いメッセージを送る方法。
  3. 【請求項3】 請求項1又は2記載の方法において、 第1コンピューターにおいて、 個々のインポートされたセグメントのもしあればそれぞ
    れの未使用の部分についての位置情報を記憶することを
    含んで、第1コンピューターにより第2コンピューター
    からインポートされた個々のセグメントを追跡するため
    インポートされたセグメントデータ構造を保持し、 メッセージを送るステップは、メッセージバッファー割
    り当てステップを含み、メッセージバッファー割り当て
    ステップは、個々の長いメッセージのためにインポート
    されたセグメントの少なくとも1つの未使用部分から少
    なくとも1つのメッセージバッファーを割り当て、イン
    ポートされたセグメントデータ構造に記憶された対応す
    る位置情報を更新し、メッセージバッファーをが割り当
    てた個々のインポートされたセグメントの残りの部分の
    新しい位置を示すことを含む方法。
  4. 【請求項4】 請求項3記載の方法において、 第1コンピューターにおいて、 インポートされたメモリーセグメントのどれかがいつ使
    い尽くされるか求め、個々の使い尽くされたメモリーセ
    グメントのために、使用できない使い尽くしたメモリー
    セグメントを示すためインポートされたセグメントデー
    タ構造内の記号を記憶し、使い尽くしたメモリーセグメ
    ントのリサイクルを要求するため、セグメントリサイク
    ル要求メッセージを第2コンピューターに送り、第2コ
    ンピュータからのセグメントリサイクルメッセージを待
    ち、使い尽くしたメモリーセグメントの再使用を可能に
    するため、インポートされたセグメントデータ構造内に
    情報を記憶するステップを実行し、 第2コンピューターにおいて、 特定のセグメントのセグメントリサイクル要求メッセー
    ジを受取ると、特定のメモリーセグメント内のバッファ
    ーを使用する第1コンピューターから送られた全てのメ
    ッセージが処理されるまで待ち、次に特定のメモリーセ
    グメントのためのセグメントリサイクルメッセージを第
    1コンピューターに送る方法。
  5. 【請求項5】 請求項3記載の方法において、 第1コンピューターにおいて、 インポートされたメモリーセグメントのどれかがいつ使
    い尽くされるか求め、個々の使い尽くされたメモリーセ
    グメントのために、使用できない使い尽くしたメモリー
    セグメントを示すためインポートされたセグメントデー
    タ構造内の記号を記憶し、使い尽くしたメモリーセグメ
    ントのリリースを要求するため、セグメントリリース要
    求メッセージを第2コンピューターに送り、使い尽くし
    たメモリーセグメントをアンインポートするステップを
    実行し、 第2コンピューターにおいて、 特定のセグメントのセグメントリリース要求メッセージ
    を受取ると、特定のメモリーセグメント内のバッファー
    を使用する第1コンピューターから送られた全てのメッ
    セージが処理されるまで待ち、次に特定のメモリーセグ
    メントをアンエクスポートし、割り当て解除する方法。
  6. 【請求項6】 分散したコンピューターシステムにおい
    て、第1コンピューターからのメッセージを第2コンピ
    ューターに遠隔的に書き込む装置であって、 第1コンピューターに、 CPU、 メッセージを送信し受信するネットワークインターフェ
    ース、 第2コンピュータによりエクスポートされたメモリーセ
    グメントをインポートするための、第1コンピューター
    のCPUで実行されるメモリーセグメントインポート手
    順、 所定の最小長さより大きいデータ部分を有する長いメッ
    セージを送る指示を含んで、メッセージを第2コンピュ
    ーターに送るための、第1コンピューターのCPUで実
    行されるメッセージ送り手順、を備え、 個々の長いメッセージを送るための長いメッセージ送信
    指示は、 第2コンピューターと独立にインポートされたメモリー
    セグメント内の少なくとも1つのメッセージバッファー
    を割り当て、 メッセージデータ部分を少なくとも1つの割り当てられ
    たメッセージバッファー内に書き込み、メッセージデー
    タ部分が書き込まれた少なくとも1つのメッセージバッ
    ファーの位置を示す対応する制御メッセージを第2コン
    ピューターに送るための指示を含む装置。
  7. 【請求項7】 請求項6記載の装置において、 第1コンピューターにおいて、 メッセージセグメントインポート手順とメッセージ送信
    手順は、第1コンピューターにより第2コンピューター
    からインポートされた個々のセグメントを追跡するため
    に、個々のインポートされたセグメントのもしあればそ
    れぞれの未使用の部分についての位置情報を記憶するこ
    とを含んで、インポートされたセグメントデータを保持
    する指示を含み、 メッセージ送信手順は、少なくとも1つのインポートさ
    れたセグメントの未使用の部分から個々の長いメッセー
    ジのための少なくとも1つのメッセージバッファーを割
    り当て、インポートされたセグメントデータ構造に記憶
    される対応する位置情報を更新する指示を含み、メッセ
    ージバッファーを割り当てた個々のインポートされたセ
    グメントの残りの部分の新しい位置を示す装置。
  8. 【請求項8】請求項6に記載した装置において、 第2コンピューターに、 CPU、 メッセージを送信し受信するネットワークインターフェ
    ース、 第2コンピュータのメモリーセグメントを割り当てるた
    めの、第2コンピューターのCPUで実行されるメモリ
    ーセグメント生成手順で、割り当てられたメモリーセグ
    メントの少なくともサブセットは、それぞれ所定のサイ
    ズ範囲内に複数のメッセージバッファーを保持するのに
    十分な特定のサイズを有し、また割り当てられたメモリ
    ーセグメントを第1コンピューターにエクスポートする
    メモリーセグメント生成手順、及び、 第1コンピューターから受取った個々のメッセージを処
    理し、ネットワークインターフェースを介して、第1コ
    ンピューターの対応するメモリー位置に受領メッセージ
    を遠隔的に書き込むための第2コンピューターのCPU
    で実行される受領メッセージ手順を備える装置。
  9. 【請求項9】 請求項8に記載した装置において、 第1コンピューターにおいて、 メッセージセグメントインポート手順とメッセージ送信
    手順は、第1コンピューターにより第2コンピューター
    からインポートされた個々のセグメントを追跡するた
    め、個々のインポートされたセグメントのもしあればそ
    れぞれの未使用の部分についての位置情報を記憶するこ
    とを含んで、インポートされたデータを維持する指示を
    含み、 メッセージ送信手順は、少なくとも1つのインポートさ
    れたセグメントの未使用の部分からの個々の長いメッセ
    ージに少なくとも1つのメッセージバッファーを割り当
    て、インポートされたセグメントデータ構造に記憶され
    た対応する位置情報を更新して、メッセージバッファー
    を割り当てた個々のインポートされたセグメントの残り
    の部分の新しい位置を示し、 メッセージ送信手順は、いつインポートされたメモリー
    セグメントのどれかがいつ使い尽くされたか求める指示
    を含み、個々の使い尽くしたメモリーセグメントのた
    め、使い尽くしたメモリーセグメントは使用できないこ
    とを示すため、インポートされたセグメントデータ構造
    に記号を記憶し、使い尽くしたメモリーセグメントのリ
    サイクルを要求するため、第2コンピューターにセグメ
    ントリサイクル要求メッセージを送り、第2コンピュー
    ターからのセグメントリサイクルメッセージを待ち、次
    にインポートされたセグメントデータ構造に情報を記憶
    して、使い尽くしたメモリーセグメントの再使用を可能
    にするステップを実行し、 第2コンピューターにおいて、 特定のメモリーセグメントにセグメントリサイクル要求
    メッセージを受取り、特定のメモリーセグメントのバッ
    ファーを使用する第1コンピューターにより送られる全
    てのメッセージが処理されるまで待ち、次に特定のメモ
    リーセグメントのためのセグメントリサイクルメッセー
    ジを第1コンピューターに送るための、第2コンピュー
    ターのCPUにより実行されるセグメントリサイクル手
    順を備える装置。
  10. 【請求項10】 請求項8に記載した装置において、 第1コンピューターにおいて、 メッセージセグメントインポート手順とメッセージ送信
    手順は、第1コンピューターにより第2コンピューター
    からインポートされた個々のセグメントを追跡するた
    め、個々のインポートされたセグメントのもしあればそ
    れぞれの未使用の部分についての位置情報を記憶するこ
    とを含んで、インポートされたデータを維持する指示を
    含み、 メッセージ送信手順は、少なくとも1つのインポートさ
    れたセグメントの未使用の部分からの個々の長いメッセ
    ージに少なくとも1つのメッセージバッファーを割り当
    て、インポートされたセグメントデータ構造に記憶され
    た対応する位置情報を更新して、メッセージバッファー
    を割り当てた個々のインポートされたセグメントの残り
    の部分の新しい位置を示し、 メッセージ送信手順は、いつインポートされたメモリー
    セグメントのどれかがいつ使い尽くされたか求める指示
    を含み、個々の使い尽くしたメモリーセグメントのた
    め、使い尽くしたメモリーセグメントは使用できないこ
    とを示すため、インポートされたセグメントデータ構造
    に記号を記憶し、使い尽くしたメモリーセグメントのリ
    サイクルを要求するため、第2コンピューターにセグメ
    ントリサイクル要求メッセージを送り、使い尽くしたメ
    モリーセグメントをアンインポートするステップを実行
    し、 第2コンピューターにおいて、 特定のメモリーセグメントのセグメントリサイクル要求
    メッセージを受取り、特定のメモリーセグメントのバッ
    ファーを使用する第1コンピューターにより送られる全
    てのメッセージが処理されるまで待ち、次に特定のメモ
    リーセグメントをアンエクスポートし、割り当て解除す
    るための、第2コンピューターのCPUにより実行され
    るセグメントリリース手順を備える装置。
JP10220984A 1997-06-30 1998-06-30 ネットワークノード間を移動するメッセージに対する遠隔割り当て及び管理用システム及び方法 Abandoned JPH11143844A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/885056 1997-06-30
US08/885,056 US5961606A (en) 1997-06-30 1997-06-30 System and method for remote buffer allocation in exported memory segments and message passing between network nodes

Publications (1)

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

Family

ID=25386030

Family Applications (1)

Application Number Title Priority Date Filing Date
JP10220984A Abandoned JPH11143844A (ja) 1997-06-30 1998-06-30 ネットワークノード間を移動するメッセージに対する遠隔割り当て及び管理用システム及び方法

Country Status (5)

Country Link
US (1) US5961606A (ja)
EP (1) EP0889622B1 (ja)
JP (1) JPH11143844A (ja)
CA (1) CA2242074A1 (ja)
DE (1) DE69836778T2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009087335A (ja) * 2007-09-14 2009-04-23 Ricoh Co Ltd マルチプロセッサシステム

Families Citing this family (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6044438A (en) * 1997-07-10 2000-03-28 International Business Machiness Corporation Memory controller for controlling memory accesses across networks in distributed shared memory processing systems
US6615383B1 (en) * 1998-05-29 2003-09-02 Sun Microsystems, Inc. System and method for message transmission between network nodes connected by parallel links
US6601146B2 (en) * 1998-06-16 2003-07-29 International Business Machines Corporation Technique for efficiently transferring moderate amounts of data across address space boundary
US6330566B1 (en) * 1998-06-22 2001-12-11 Microsoft Corporation Apparatus and method for optimizing client-state data storage
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
US7287084B1 (en) 1999-07-15 2007-10-23 F5 Networks, Inc. Enabling encryption of application level persistence between a server and a client
US6766358B1 (en) * 1999-10-25 2004-07-20 Silicon Graphics, Inc. Exchanging messages between computer systems communicatively coupled in a computer system network
US6738773B1 (en) * 2000-05-01 2004-05-18 Microsoft Corporation Method and system for transforming data between disparate capacity database systems
US7124228B2 (en) * 2001-07-10 2006-10-17 Sun Microsystems, Inc. Bus communication architecture, in particular for multicomputing systems
US7055152B1 (en) * 2001-08-15 2006-05-30 Microsoft Corporation Method and system for maintaining buffer registrations in a system area network
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
US7430755B1 (en) 2002-09-03 2008-09-30 Fs Networks, Inc. Method and system for providing persistence in a secure network access
US7551636B2 (en) 2003-07-10 2009-06-23 Computer Associates Think, Inc. System and method for buffering variable-length data
US7526617B2 (en) * 2005-12-29 2009-04-28 Sap Ag System and method for memory management using memory windows
JP5278677B2 (ja) * 2006-07-06 2013-09-04 日本電気株式会社 クラスタシステム、サーバクラスタ、クラスタメンバ、クラスタメンバの冗長化方法、負荷分散方法
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
US8261286B1 (en) * 2008-06-18 2012-09-04 Amazon Technologies, Inc. Fast sequential message store
US10362131B1 (en) 2008-06-18 2019-07-23 Amazon Technologies, Inc. Fault tolerant message delivery
US8789065B2 (en) 2012-06-08 2014-07-22 Throughputer, Inc. System and method for input data load adaptive parallel processing
US20130117168A1 (en) 2011-11-04 2013-05-09 Mark Henrik Sandstrom Maximizing Throughput of Multi-user Parallel Data Processing Systems
GB2490036B (en) * 2011-04-16 2013-05-22 Mark Henrik Sandstrom Efficient network and memory architecture for multi-core data processing system
US9448847B2 (en) 2011-07-15 2016-09-20 Throughputer, Inc. Concurrent program execution optimization
CN103885892A (zh) * 2012-12-20 2014-06-25 株式会社东芝 存储器控制器
US10831670B2 (en) 2017-11-22 2020-11-10 Blackberry Limited Method and system for low latency data management
US11209997B2 (en) 2017-11-22 2021-12-28 Blackberry Limited Method and system for low latency data management
US10824369B2 (en) * 2018-07-31 2020-11-03 Nutanix, Inc. Elastic method of remote direct memory access memory advertisement
CN111338834B (zh) * 2020-02-21 2023-06-30 北京百度网讯科技有限公司 数据存储方法和装置

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4467411A (en) * 1981-03-06 1984-08-21 International Business Machines Corporation Scheduling device operations in a buffered peripheral subsystem
US4603382A (en) * 1984-02-27 1986-07-29 International Business Machines Corporation Dynamic buffer reallocation
US4956771A (en) * 1988-05-24 1990-09-11 Prime Computer, Inc. Method for inter-processor data transfer
US4888727A (en) * 1989-01-10 1989-12-19 Bull Hn Information Systems Inc. Peripheral controller with paged data buffer management
JP2836283B2 (ja) * 1991-04-11 1998-12-14 日本電気株式会社 バッファ管理方式
US5313582A (en) * 1991-04-30 1994-05-17 Standard Microsystems Corporation Method and apparatus for buffering data within stations of a communication network
US5412803A (en) * 1992-02-20 1995-05-02 International Business Machines Corporation Communications system having plurality of originator and corresponding recipient buffers with each buffer having three different logical areas for transmitting messages in single transfer
US5289470A (en) * 1992-12-14 1994-02-22 International Business Machines Corp. Flexible scheme for buffer space allocation in networking devices
US5819083A (en) * 1993-09-02 1998-10-06 International Business Machines Corporation Minimal sufficient buffer space for data redistribution in a parallel database system
US5682553A (en) * 1995-04-14 1997-10-28 Mitsubishi Electric Information Technology Center America, Inc. Host computer and network interface using a two-dimensional per-application list of application level free buffers
JP3078204B2 (ja) * 1995-06-01 2000-08-21 株式会社東芝 磁気ディスク装置及び磁気ディスク装置におけるバッファ管理方法
FR2735640B1 (fr) * 1995-06-15 1997-08-14 Guibert Jacky Procede et dispositif d'admission de donnees a un reseau numerique de telecommunications, a regulation d'acces
US5845153A (en) * 1995-07-07 1998-12-01 Integrated Device Technology, Inc. Memory interface for asynchronous transfer mode segmentation and reassembly circuit
US5781801A (en) * 1995-12-20 1998-07-14 Emc Corporation Method and apparatus for receive buffer management in multi-sender communication systems
US5838994A (en) * 1996-01-11 1998-11-17 Cisco Technology, Inc. Method and apparatus for the dynamic allocation of buffers in a digital communications network
US5815677A (en) * 1996-12-31 1998-09-29 Compaq Computer Corporation Buffer reservation method for a bus bridge system

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009087335A (ja) * 2007-09-14 2009-04-23 Ricoh Co Ltd マルチプロセッサシステム

Also Published As

Publication number Publication date
EP0889622B1 (en) 2007-01-03
DE69836778D1 (de) 2007-02-15
CA2242074A1 (en) 1998-12-30
EP0889622A3 (en) 2004-06-30
DE69836778T2 (de) 2007-11-08
EP0889622A2 (en) 1999-01-07
US5961606A (en) 1999-10-05

Similar Documents

Publication Publication Date Title
US5961606A (en) System and method for remote buffer allocation in exported memory segments and message passing between network nodes
US5752078A (en) System for minimizing latency data reception and handling data packet error if detected while transferring data packet from adapter memory to host memory
EP0889623B1 (en) System and method for efficient remote disk I/O
US7200695B2 (en) Method, system, and program for processing packets utilizing descriptors
US6735647B2 (en) Data reordering mechanism for high performance networks
US7206915B2 (en) Virtual space manager for computer having a physical address extension feature
US6286092B1 (en) Paged based memory address translation table update method and apparatus
KR100326864B1 (ko) 네트워크통신방법및네트워크시스템
US5826041A (en) Method and system for buffering network packets that are transferred between a V86 mode network driver and a protected mode computer program
US5781741A (en) Message communications system in a parallel computer
US7849214B2 (en) Packet receiving hardware apparatus for TCP offload engine and receiving system and method using the same
JPH11143845A (ja) ネットワークノード間のメッセージ送信用システム及び方法
JPH06309252A (ja) 相互接続インタフェース
US20040015979A1 (en) System and method for efficiently exchanging data among processes
JPH0926929A (ja) 効率のよいデータ転送メカニズムに関する方法及び装置
US7373408B2 (en) Network communication apparatus and method
JP3376956B2 (ja) プロセッサ間通信装置
JP2694109B2 (ja) 動的バッファ管理装置および方法
JPH1063525A (ja) 情報処理装置、情報処理システム及びその制御方法
US8392579B2 (en) Apparatus and method for transmitting data through a network
US6914607B2 (en) Apparatus and method for buffering data
CN113127183B (zh) 一种用户态协议栈中的内存分配方法和装置
JP2664827B2 (ja) 実時間情報転送制御方法
JP3933134B2 (ja) 通信システム
JPH1145220A (ja) Tcp/ipソケット・アプリケーションを使用したシステム資源削減装置および方法

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: 20070615

A762 Written abandonment of application

Free format text: JAPANESE INTERMEDIATE CODE: A762

Effective date: 20070725

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20070725