(57)【特許請求の範囲】
【請求項１】
双方向の非同期通信チャネルにより相互接続された複数のコンピュータ・ノードを有し、前記コンピュータ・ノードのそれぞれにおいて非同期に実行されるユーザ処理プログラム間でメッセージを伝送するためのコンピュータ・システムにおいて、送信元コンピュータ・ノードから受信コンピュータ・ノードへ伝送されるメッセージを処理する方法であって、前記メッセージはメッセージ・ヘッダ及びメッセージ・データを含み、前記受信コンピュータ・ノードはパケット受信装置を含む通信アダプタを含み、
前記方法は、
（ａ）前記受信コンピュータ・ノードからの前記メッセージに対する要求を待たずに、前記送信元コンピュータ・ノードからの前記メッセージを前記受信コンピュータ・ノードへ伝送するステップと、
（ｂ）前記メッセージ用の受信バッファが前記受信コンピュータ・ノードによって前記通信アダプタに通知されているか否かを、前記パケット受信装置が判定するステップと、
（ｃ）前記メッセージ用の前記受信バッファが通知されていない場合は、
（イ）前記パケット受信装置が早期到達キュー内に前記メッセージのメッセージ・ヘッダを保管しそして前記メッセージのメッセージ・データを廃棄することにより、前記メッセージを切り詰めるステップと、
（ロ）前記受信コンピュータ・ノードが前記メッセージ用の受信バッファを前記通信アダプタに通知できる状態になったときに、前記メッセージ・ヘッダ用の前記早期到達キューをチェックするステップと、
（ハ）前記メッセージ・ヘッダが前記早期到着キュー内に存在する場合に、「プル」要求を前記受信コンピュータ・ノードから前記送信元コンピュータ・ノードへ送るステップであって、前記「プル」要求は前記送信元コンピュータ・ノードに指示して前記メッセージを前記受信コンピュータ・ノードへ再送する、前記送るステップと、
を含む、メッセージを処理する方法。
【請求項２】
前記判定するステップ（ｂ）が、前記メッセージ用の前記受信バッファが前記受信コンピュータ・ノードによって前記通信アダプタに通知されていることを前記パケット受信装置が判定した場合に、前記メッセージを前記受信バッファに保管するステップを更に含む、請求項１に記載のメッセージを処理する方法。
【請求項３】
前記チェックするステップ（ｃ）（ロ）において、前記メッセージ・ヘッダが前記早期到達キュー内に存在しないと判定した場合に、
前記方法は、
前記受信コンピュータ・ノードが前記受信バッファを前記通信アダプタに通知するステップと、
前記メッセージに対する要求を伝送せずに、前記送信元コンピュータ・ノードからの前記メッセージの前記受信コンピュータ・ノードへの伝送を待つステップと
を更に含む、請求項１に記載のメッセージを処理する方法。
【請求項４】
前記切り詰めるステップ（ｃ）（イ）の前に更に、
（ｄ）前記メッセージ用の前記受信バッファが前記受信コンピュータ・ノードによって前記通信アダプタに通知されていない場合に、前記メッセージ用に一時受信バッファ領域が利用可能か否かを判定するステップと、
（ｅ）前記一時受信バッファ領域が利用可能な場合に、受信コンピュータ・ノードが前記メッセージ用に一時受信バッファを割り当て、前記パケット受信装置が前記一時受信バッファ内に前記メッセージ・データを移動し、そして前記パケット受信装置が前記早期到達キュー内に前記メッセージ・ヘッダ及び一時バッファ情報を保管するステップと、
（ｆ）前記メッセージ用に前記一時受信バッファ領域が利用できない場合にのみ、前記切り詰めるステップ（ｃ）（イ）を実行するステップと、
を更に含む、請求項１に記載のメッセージを処理する方法。
【請求項５】
１つまたは複数の送信元コンピュータ・ノードから前記受信コンピュータ・ノードへ送られる複数のメッセージを処理する方法を含み、前記複数のメッセージのそれぞれがメッセージ・ヘッダ及びメッセージ・データを含み、前記方法が、
前記受信コンピュータ・ノードからの前記メッセージに対する要求を待たずに、前記１つまたは複数の送信元コンピュータ・ノードからの前記メッセージを前記受信コンピュータ・ノードへ伝送するステップと、
前記受信コンピュータ・ノードにおいて受信されるそれぞれのメッセージに対し、
前記メッセージ用の受信バッファが前記受信コンピュータ・ノードによって前記通信アダプタに通知されているか否かを、前記パケット受信装置が判定し、前記メッセージ用の前記受信バッファが通知されていない場合に、前記パケット受信装置が前記早期到達キュー内に前記メッセージのメッセージ・ヘッダを保管しそして前記メッセージのメッセージ・データを廃棄することにより、前記メッセージを切り詰めるステップと、
前記受信コンピュータ・ノードが所要のメッセージ用の受信バッファを前記通信アダプタに通知できる状態になったときに、前記所要のメッセージに一致するメッセージ・ヘッダが存在するか否か前記早期到達キューをチェックするステップと、
前記一致するメッセージ・ヘッダが前記早期到達キュー内に存在する場合に、「プル」要求を前記受信コンピュータ・ノードから前記送信元コンピュータ・ノードへ送るステップであって、前記「プル」要求は前記送信元コンピュータ・ノードに指示して前記所要のメッセージを受信コンピュータ・ノードへ再送する、前記送るステップと、
を含む、請求項１に記載のメッセージを処理する方法。
【請求項６】
前記チェックするステップ（ｃ）（ロ）において、前記メッセージ・ヘッダが前記早期到達キュー内に存在しない場合に、メッセージに対する要求を伝送せずに、前記送信元コンピュータ・ノードがメッセージを伝送するのを待つ、請求項１に記載のメッセージを処理する方法。
【請求項７】
双方向の非同期通信チャネルにより相互接続された複数のコンピュータ・ノードを有し、前記コンピュータ・ノードのそれぞれにおいて非同期に実行されるユーザ処理プログラム間でメッセージを伝送するためのコンピュータ・システムにおいて、送信元コンピュータ・ノードから受信コンピュータ・ノードへメッセージを伝送する方法であって、前記メッセージはメッセージ・ヘッダ及びメッセージ・データを含み、前記受信コンピュータ・ノードはパケット受信装置を含む通信アダプタを含み、
前記方法は、
（ａ）前記受信コンピュータ・ノードからの前記メッセージに対する要求を待たずに、前記送信元コンピュータ・ノードからの前記メッセージを前記受信コンピュータ・ノードへ伝送するステップと、
（ｂ）前記メッセージ用の受信バッファが前記受信コンピュータ・ノードによって前記通信アダプタに通知されているか否かを、前記パケット受信装置が判定し、前記メッセージ用の前記受信バッファが通知されている場合に、前記メッセージを前記受信バッファに保管するステップと、
（ｃ）前記メッセージ用の前記受信バッファが通知されていない場合に、前記パケット受信装置が早期到達キュー内に前記メッセージのメッセージ・ヘッダを保管しそして前記メッセージのメッセージ・データを廃棄することにより、前記メッセージを切り詰めるステップと、
を含むメッセージを伝送する方法。
【請求項８】
双方向の非同期通信チャネルにより相互接続された複数のコンピュータ・ノードを有し、前記コンピュータ・ノードのそれぞれにおいて非同期に実行されるユーザ処理プログラム間でメッセージを伝送するためのコンピュータ・システムにおいて、送信元コンピュータ・ノードから受信コンピュータ・ノードへ伝送されるメッセージを処理する方法であって、前記メッセージはメッセージ・ヘッダ及びメッセージ・データを含み、前記受信コンピュータ・ノードはパケット受信装置を含む通信アダプタを含み、
前記方法は、
（ａ）前記受信コンピュータ・ノードが前記メッセージ用の受信バッファを前記通信アダプタに通知できる状態になったときに、前記受信コンピュータ・ノードが、対応するメッセージ・ヘッダが存在するか否かについて、早期到達メッセージのメッセージ・ヘッダを記憶する早期到達キューをチェックするステップと、
（ｂ）前記メッセージ・ヘッダが前記早期到達キュー内に存在する場合に、「プル」要求を前記受信コンピュータ・ノードから前記送信元コンピュータ・ノードへ送るステップであって、前記「プル」要求は前記送信元コンピュータ・ノードに指示して前記メッセージを前記受信コンピュータ・ノードへ再送する、前記送るステップと、
（ｃ）前記受信コンピュータ・ノードが前記受信バッファを前記通信アダプタに通知し、前記メッセージが前記受信コンピュータ・ノードに再送されるのを待つステップと、
を含むメッセージを処理する方法。
【請求項９】
双方向の非同期通信チャネルにより相互接続された複数のコンピュータ・ノードを有し、前記コンピュータ・ノードのそれぞれにおいて非同期に実行されるユーザの処理プログラム間でメッセージを伝送するためのコンピュータ・システムにおいて、送信元コンピュータ・ノードから受信コンピュータ・ノードへメッセージを伝送する方法であって、前記メッセージはメッセージ・ヘッダ及びメッセージ・データを含み、前記受信コンピュータ・ノードはパケット受信装置を含む通信アダプタを含み、
前記方法は、
（ａ）前記受信コンピュータ・ノードからの前記メッセージに対する要求を待たずに、前記送信元コンピュータ・ノードからの前記メッセージを前記受信コンピュータ・ノードへ伝送するステップと、
（ｂ）前記メッセージが前記受信コンピュータ・ノードにおいて受信されたときに、前記メッセージ用の受信バッファが前記受信コンピュータ・ノードによって前記通信アダプタに通知されているか否かを前記パケット受信装置が判定し、前記メッセージ用の前記受信バッファが通知されている場合に、前記メッセージを前記受信バッファに保管するステップと、
（ｃ）前記メッセージ用の前記受信バッファが通知されていない場合に、前記メッセージ・データを保持するために、前記受信コンピュータ・ノードに一時受信バッファを割り当て、前記受信コンピュータ・ノードに存在する早期到達キューに前記メッセージ・ヘッダを保管するステップと、
を含む、メッセージを伝送する方法。
【請求項１０】
前記受信コンピュータ・ノードが前記メッセージ用の前記受信バッファを前記通信アダプタに通知できる状態になったときに、前記メッセージ・ヘッダが存在するか否か前記早期到達キューをチェックするステップと、
前記メッセージ・ヘッダが前記早期到達キュー内に存在する場合に、前記メッセージ・データを前記一時受信バッファから前記受信バッファに移動するステップと、
を更に含む、請求項９に記載のメッセージを伝送する方法。
【請求項１１】
前記保管するステップ（ｃ）が、前記一時受信バッファに関する位置情報を前記メッセージ・ヘッダと一緒に前記早期到達キュー内に保管するステップを更に含む、請求項１０に記載のメッセージを伝送する方法。
【請求項１２】
前記保管するステップ（ｃ）の前に、前記メッセージ用に一時受信バッファ領域が利用可能か否かを判定し、一時受信バッファが利用可能な場合には、前記前期一時受信バッファを割り当て、利用可能でない場合には、前記受信コンピュータ・ノードが前記早期到達キュー内に前記メッセージ・ヘッダを保管しそして前記メッセージ・データを廃棄することにより、前記メッセージを切り詰めるステップを更に含む、請求項１０に記載のメッセージを伝送する方法。
【請求項１３】
前記メッセージ・ヘッダが前記早期到達キュー内に存在するが、前記メッセージ・データが廃棄されている場合には、前記早期到達キューをチェックするステップに続いて、「プル」要求を前記受信コンピュータ・ノードから前記送信元コンピュータ・ノードへ送るステップであって、前記「プル」要求は前記送信元コンピュータ・ノードに指示して前記メッセージを前記受信コンピュータ・ノードへ再送する、前記送るステップと
を更に含む、請求項１２に記載のメッセージを伝送する方法。
【請求項１４】
前記メッセージ・ヘッダが前記早期到達キュー内に存在することが判明した場合に、前記移動するステップの前に、前記メッセージ・データが前記一時受信バッファに存在するか否か判定し、存在する場合には、前記メッセージ・データを前記一時受信バッファから前記受信バッファに移動し、存在しない場合には、前記メッセージの再送を求めるために前記「プル」要求を前記受信コンピュータ・ノードから前記送信元コンピュータ・ノードへ送る、請求項１３に記載のメッセージを伝送する方法。
【請求項１５】
前記メッセージ・データが前記一時受信バッファに存在しない場合に、前記早期到達キューをチェックするステップに続いて前記受信バッファを通知するステップを更に含む、請求項１３に記載のメッセージを伝送する方法。
【請求項１６】
１つまたは複数の送信元コンピュータ・ノードからの複数のメッセージを前記受信コンピュータ・ノードに伝送する方法を含み、当該方法が、前記受信コンピュータ・ノードからのメッセージに対する要求を待たずに、前記１つまたは複数の送信元コンピュータ・ノードからの複数のメッセージを前記受信コンピュータ・ノードへ伝送するステップと、前記受信コンピュータ・ノードにおいて受信されるそれぞれのメッセージに対して前記ステップ（ｂ）及び（ｃ）を実施し、前記受信コンピュータ・ノードが所要のメッセージ用の受信バッファを前記通信アダプタに通知できる状態になったときに、前記所要のメッセージに一致するメッセージ・ヘッダが存在するか否か前記早期到達キューをチェックし、前記一致するメッセージ・ヘッダが前記早期到達キュー内に存在する場合に、対応するメッセージ・データを前記一時受信バッファから前記所要のメッセージ用の前記受信バッファに移動するステップと
を含む、請求項９に記載のメッセージを伝送する方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、双方向非同期通信チャネルによって相互接続された複数の非同期コンピュータ・ノードをもつコンピュータ・システムの中のメッセージ伝送に関し、詳細には、送信元コンピュータ・ノードと宛先コンピュータ・ノードとの間のメッセージ伝送時間を減少させるために、このようなコンピュータ・システム内で早期到達メッセージ（ｅａｒｌｙ  ａｒｒｉｖａｌ  ｍｅｓｓａｇｅｓ）を処理するための方法、およびシステムに関する。
【０００２】
【従来の技術】
プロセッサ間の対話にメッセージ伝送を用いる並列のコンピュータにおいて、送信元プロセッサ上のユーザ・プログラムは送られるメッセージを指定し、宛先プロセッサ上のユーザ・プログラムはメッセージが受信される位置を示す。受信されたメッセージが保管される位置を示す操作は、「バッファの通知（ｐｏｓｔ）」と呼ばれる。バッファが通知されてない場合は、ハードウェアとソフトウェアの結合体として動作している通信システムは、メッセージ・データの保管場所の情報がないので、メッセージを受信できない。
【０００３】
送信元プロセッサ及び宛先プロセッサは、非同期で動作すると想定されているので、メッセージを送る送信元プロセッサのユーザ・コマンドは、宛先プロセッサのユーザ・コマンドが対応するバッファを通知するために実行されるよりも前に実行されるかもしれない。通常の動作では、メッセージは上記のように、メッセージ用のバッファが通知される前に、通信システムの宛先プロセッサのハードウェア・アダプタに到着するかもしれない。
【０００４】
以前のプロトコルは、送信元プロセッサにこのメッセージを手元に保管させて伝送させないことによって、この問題を処理していた。宛先プロセッサのユーザ・プログラムがバッファを通知したとき、通信システムは、送信元プロセッサに「プル（ｐｕｌｌ）」メッセージを送り、受信可能である宛先プロセッサにメッセージを送るように通知した。しかしこの解決法は、時間効率を悪くする難点があり、それは、すべてのメッセージ伝送が二度の伝送時間を必要とするからである。即ち、「プル」メッセージのための宛先プロセッサから送信元プロセッサへの伝送、及びメッセージのための送信元プロセッサから宛先プロセッサへの伝送である。このプロトコルは三度の伝送時間を必要とすることもあり、それは、送信元プロセッサがメッセージ・ヘッダを送り、宛先プロセッサに「プル」メッセージを送れることを通知することもあるからである。
【０００５】
【発明が解決しようとする課題】
上記のように、双方向非同期通信チャネルによって相互接続された複数の非同期コンピュータ・ノードをもつコンピュータ・システム内で、送信元コンピュータ・ノードと受信コンピュータ・ノードとの間の伝送時間を減少させるための、改善されたメッセージ処理プロトコルの必要性が当分野で認識されている。本発明はこの必要性に対処し、特に早期到達メッセージ、即ち、該メッセージ用の受信バッファが通知される前に受信コンピュータ・ノードに到達するメッセージを処理するための、改善されたプロトコルを提供する。
【０００６】
【課題を解決するための手段】
簡潔に説明すると、本発明は１つの特徴として、双方向非同期通信チャネルにより相互接続された複数のコンピュータ・ノードをもつコンピュータ・システムにおいて、送信元コンピュータ・ノード（送信装置）、及び受信コンピュータ・ノード（受信装置）のそれぞれにおいて非同期に実行されるユーザ処理プログラム間でメッセージを伝送するために、送信装置から受信装置に伝送されるメッセージを処理するための方法を含む。メッセージは、メッセージ・ヘッダ及びメッセージ・データを含む。この方法は、（ａ）受信装置からのメッセージ要求を待たない送信装置から受信装置へのメッセージの伝送、（ｂ）受信装置におけるメッセージ用の受信バッファが通知されているか否かの判定、（ｃ）メッセージ用の受信バッファが通知されてない場合、受信装置の早期到達キュー（ｅａｒｌｙ  ａｒｒｉｖａｌ  ｑｕｅｕｅ）にメッセージ・ヘッダを保管し、メッセージ・データを廃棄することによるメッセージの切り詰め、のそれぞれを含む。この方法は更に、受信装置がメッセージ用の受信バッファを通知できる状態になったときには、（ｄ）メッセージ・ヘッダが存在するか否かを調べる早期到達キューのチェック、及び（ｅ）早期到達キューにメッセージ・ヘッダが存在する場合の、受信装置から送信装置への「プル」要求の伝送を含む。この「プル」要求は、受信装置にメッセージを再送するように送信装置に指示する。
【０００７】
もう１つの特徴として、本発明は、双方向非同期通信チャネルによって相互接続された複数のコンピュータ・ノードをもつコンピュータ・システム内で、送信コンピュータ・ノード（送信装置）、及び受信コンピュータ・ノード（受信装置）のそれぞれにおいて非同期に実行されるユーザ・プログラム間でメッセージを伝送するために、送信装置から受信装置へメッセージを伝送するための代替の方法を含む。ここでもメッセージは、メッセージ・ヘッダ及びメッセージ・データを含む。この方法は、（ａ）受信装置からのメッセージ要求を待たない、送信装置から受信装置へのメッセージの伝送、（ｂ）受信装置のメッセージ受信時の、メッセージ用に受信バッファが通知されているか否かの判定、及びメッセージ用に受信バッファが通知されている場合の、受信バッファへのメッセージの保管、（ｃ）メッセージ用の受信バッファが通知されていない場合の、メッセージ・データを保持するための受信装置での一時受信バッファ割り当て、ならびにメッセージ・ヘッダ及び一時バッファ情報の受信装置における早期到達キューへの保管、のそれぞれを含む。この方法は更に、受信装置がメッセージ用の受信バッファを通知できる状態になったときには、（ｄ）対応するメッセージ・ヘッダの存在を確認する早期到達キューのチェック、及び（ｅ）早期到達キューにメッセージ・ヘッダが存在する場合の、受信バッファの通知を要求することのない、一時受信バッファから受信バッファへのメッセージ・データの移動を含む。
【０００８】
更にもう１つの特徴として、本発明は、双方向非同期通信チャネルによって相互接続された複数のコンピュータ・ノードをもつ、これらのコンピュータ・ノードのそれぞれにおいて非同期に実行されるユーザ・プログラム間でメッセージを伝送するための、コンピュータ・システムを含む。このコンピュータ・システムは、送信コンピュータ・ノード（送信装置）から受信コンピュータ・ノード（受信装置）へメッセージ（メッセージ・ヘッダ及びメッセージ・データを含む）の伝送を行う。このコンピュータ・システムは、受信装置からのメッセージ要求を待たずに、送信装置から受信装置へメッセージを伝送する手段を含む。受信装置は早期到達キュー及びパケット受信装置を含む。パケット受信装置は、メッセージの受信時にメッセージ用に受信バッファが通知されているか否かを判定し、メッセージ用に受信バッファが通知されてない場合は、パケット受信装置は、メッセージのメッセージ・ヘッダを早期到達キューに保管し、メッセージ・データを廃棄することにより、メッセージを切り詰める手段も含む。システムは更に、この受信装置が、メッセージ用に受信バッファを通知できる状態になったときには、一致するメッセージ・ヘッダの存在を調べるために早期到達キューをチェックする手段、及び早期到達キューに一致するメッセージ・ヘッダが存在する場合には、受信装置から送信装置に「プル」要求を送り、受信装置へメッセージを再送するように送信装置に指示する手段も含む。
【０００９】
更にもう１つの特徴として、本発明は、双方向非同期通信チャネルにより相互接続された複数のコンピュータ・ノードをもつ、これらのコンピュータ・ノードのそれぞれにおいて非同期に実行されるユーザ・プログラム間でメッセージを伝送するための、コンピュータ・システムを含む。このコンピュータ・システムは、送信コンピュータ・ノード（送信装置）から受信コンピュータ・ノード（受信装置）へメッセージ（メッセージ・ヘッダ及びメッセージ・データを含む）の伝送を行う。このコンピュータ・システムは、受信装置からのメッセージ要求を待たずに送信装置から受信装置へメッセージを伝送する手段を含む。受信装置中の通信アダプタは、メッセージの受信時にメッセージ用の受信バッファが通知されているか否かを判定し、メッセージ用に受信バッファが通知されている場合には、このメッセージを受信バッファにコピーするためのパケット受信装置を含む。通信アダプタは更に、メッセージ用に受信バッファが通知されておらず、そして一時受信バッファ領域が使用可能な場合は、メッセージ・データを保持する目的で受信装置に一時受信バッファを割り当てるため、及び受信装置中の早期到達キューにメッセージ・ヘッダ及び一時バッファ情報を保管するための手段を含む。このコンピュータ・システムは更に、受信装置がメッセージ用に受信バッファを通知できる状態になったときには、一致するメッセージ・ヘッダの存在を調べるために早期到達キューをチェックする手段、及び存在する場合に通信アダプタにおいて受信バッファの通知を要求せずに、メッセージ・データを一時受信バッファから受信バッファに移動する手段を含む。
【００１０】
本発明のその他の具体例及び特徴も、本明細書に詳しく説明され、本発明の請求の一部をなすと見なされる。例えば、前記に要約した方法を包含するコンピュータが読み取り可能なプログラム・コード手段は、本明細書に記述され、特許請求されている。更に本発明の各特徴に対して、数多くの拡張が記述されている。
【００１１】
本明細書に記述されているものは、複数の非同期コンピュータ・ノードを含むコンピュータ・システム内で、送信元コンピュータ・ノードと宛先コンピュータ・ノードとの間のメッセージ伝送時間を減少させるために、早期到達メッセージを処理する方法である。この方法は、受信装置からのメッセージ要求を待たずに、メッセージを伝送する。したがって受信バッファが通知されている場合には、メッセージは即時に受信され、単一の伝送時間のみが発生する。ここに記述されている方法及びシステムは、メッセージが早期到達メッセージである場合は、効率を最高にする柔軟性をもち、予期してないメッセージのデータを廃棄するか、または通信アダプタのレベルにこのデータを保持し、受信装置のプロセッサに状況を通知する。上記の双方の選択肢は、ハードウェアのレベルで同じ基礎的な仕組みを用いており、通信システムは、最高の効率を得るためには現在の環境でどちらかの選択肢を採用すべきかを、ソフトウェア・レベルで決定できる。いずれの選択肢も、受信バッファが事前に通知されているときには、良好なメッセージ伝送効率を維持できる。
【００１２】
【発明の実施の形態】
図１は、本発明に従ったメッセージ伝送をするコンピュータ・システムの一実施例を表示しており、全体を参照番号１０で示している。システム１０は複数のコンピュータ・ノード、即ちプロセッサ１２を含み、それらの中の１つが、メッセージ送信元コンピュータ・ノード（送信装置）１４として示され、それらの中の第２のものが、メッセージ受信コンピュータ・ノード（受信装置）１６となっている。複数のノード１２は、それぞれ独立したコンピュータを含み、各コンピュータ上では、それぞれのオペレーティング・システム（ＯＳ）が、非同期でユーザ・プログラムを実行している。各ノードは、スイッチ・ネットワーク１８を介して相互に接続され、スイッチ・ネットワークは、多数のスイッチ素子をもつことができる。スイッチ素子は、当分野で周知のように、相互接続されたクロス・バー、パケット・スイッチ素子などであり、多階層の相互接続ネットワークを構築している。
【００１３】
受信装置１６のようなコンピュータ・ノード内には、通信アダプタ２０、高速システム・バス２２、１つまたは複数のマイクロプロセッサ２４、１つまたは複数の主記憶装置２６が含まれる。本発明に従ったメッセージ処理プロトコルは、送信装置及び受信装置の通信アダプタ２０内、ならびにこれらのアダプタ間で実行される。
【００１４】
各コンピュータ・ノード１２のそれぞれ独立したＯＳは非同期で動作するので、送信装置１４から受信装置１６へのメッセージ伝送には、ハンドシェーク手段が従来より使われてきた。例えば、送信装置から受信装置へメッセージを伝送する前に、送信装置は、従来より受信装置がメッセージ受信できる状態か否かを問い合わせていた。このような実施形態では、送信装置から受信装置へのメッセージ伝送を実現するために、三度のネットワーク上の通信が必然的に用いられていた。
【００１５】
本発明に従うと、送信装置と受信装置との間の事前のハンドシェークなしに、システム内でメッセージを伝送させることを可能にして、受信バッファがメッセージ用に割り当てられているかを確認することにより、効率が改善される。これは、受信コンピュータ・ノードに「早期到達サポート（ｅａｒｌｙ  ａｒｒｉｖａｌ  ｓｕｐｐｏｒｔ）」を設けることにより可能になる。「早期到達サポート」とは、「早期到達メッセージ」（即ち、システム内でそのメッセージに対応するバッファが割り当てられる前に受信されたメッセージ）を効率よく処理するための機能が受信装置に存在することを意味する。更に後記で説明するように、本発明は、早期到達メッセージの一部を廃棄するか、または通信アダプタ２０のレベルでメッセージを保持し、その状況をプロセッサに通知するかのいずれかによって、効率を最適化する柔軟性を提供する。本発明に従うと、上記の双方の選択肢は、ハードウェアのレベルで同じ基礎的な仕組みを用いており、通信システムは、最高の効率を得るには現在の環境でいずれかの選択肢を採用すべきかを、ソフトウェア・レベルで決定できる。
【００１６】
図２を参照すると、アプリケーション・プログラムの制御の下で、受信コンピュータ・ノードが、システム中の他の通信ノードから受信する特定のメッセージ用に、システム・メモリの一区域を割り当てる。このシステム・メモリの一区域（受信バッファ）は、受信された後のメッセージの保管場所を通信アダプタに示すために、アダプタにコマンドが送られるときに、「通知（ｐｏｓｔ）される」。通信アダプタ２０内のバッファ・ポスタ４２が、割り当てられた受信バッファに関する記述子の情報を、メモリ・コントローラ４４を介して制御記憶装置４６に保管する。この記述子の情報は、対応するメッセージが到着するまで記憶装置４６に保管される。これらの記述子は、本質的には、主記憶装置２６（図１）に割り当てられた実際の受信バッファへのポインタを含む。
【００１７】
通信アダプタ２０は、更にスイッチ構成インタフェース３０を含み、このインタフェースは、コンピュータ・ノードをスイッチ・ネットワークに結合するスイッチ・リンク１〜スイッチ・リンクＮに物理的に接続される複数のポートを含む。パケット受信装置３２及びパケット送信装置３４が、パケット・スイッチ・ネットワーク１８（図１）へのそれぞれの物理的接続用に設けられている。
【００１８】
通信アダプタ２０は、システム・バス２２を介してコンピュータ・ノードのプロセッサと通信する。バス・インタフェース３６は、通信アダプタ２０をシステム・バス２２に結合する。チップのバス・インタフェース部分は、バス・プロトコルを実行し、プロセッサのロード及びストアのコマンドを受信する。この部分は、プロセッサが起動する機能を監視し、それに従って反応するコマンド・デコード論理回路３８、及びバス操作を起動する直接メモリ・アクセス（ＤＭＡ）エンジン４０も含む。例えばＤＭＡエンジン４０は、ホスト・プロセッサを必要とせずに、主記憶装置にデータを書き込み、アダプタからデータを読み出すことができる。バス・インタフェース３６とスイッチ構成インタフェース３０との間の通信動作を追跡し、管理するための記録が、制御記憶装置４６に保持され、制御記憶装置は、１つの実施例では、複数のＳＲＡＭモジュールを含む。
【００１９】
図３は、本発明に従った受信装置１６における更に詳細なフロー制御を表示する。スイッチ・ネットワーク１８を通じて送信装置１４から受信されたメッセージは、当初は、スイッチ構成インタフェース３０内のスイッチ・インタフェース・バッファ３１に一時的に入れられる。インタフェース３０は、メッセージのヘッダ部分及びデータ部分を区別して、パケット受信装置３２に送る。パケット受信装置３２は、制御記憶装置４６内のデータ構造をチェックし、メッセージ用の受信バッファ２５が主記憶装置内に割り当てられているか否かを判定する。受信バッファ２５が割り当てられている場合には、メッセージは、ＤＭＡエンジン４０を介しシステム・バス２２を通じて主記憶装置２６にコピーされる。
【００２０】
メッセージに対応する受信バッファがまだ割り当てられてない場合は、本発明に従って、受信されたネットワーク・メッセージからデータが取り除かれ、「短縮形」が作成される。通常ネットワーク・メッセージすなわちパケットは３つの部分を含み、それらは、（ａ）アダプタ・ハードウェアによって解釈されるハードウェア・ヘッダ、マイクロプロセッサ上で実行されるソフトウェアが解釈するソフトウェア・ヘッダ、及び実際のメッセージ・データを含むパケット（メッセージ）データである。２つのヘッダはデータを説明する情報を含む。例えば、このデータがどこから来たか、メッセージ中に何バイトのデータがあるか、このメッセージはどのメッセージの後にくるか、メッセージにはどんなタイプのデータが含まれているか、などである。
【００２１】
「短縮形」はアダプタに保管されるデータ構造であり、ハードウェア・ヘッダ及びソフトウェア・ヘッダを含んでおり、本明細書では両者を合わせて「メッセージ・ヘッダ」と呼ぶ。メッセージ・ヘッダは、どんな条件によってこのメッセージが作成されたのかを記述する情報を含むが、メッセージ・データは含まない。本発明に従って、「短縮形」のデータ構造は、パケット受信装置３２によって作成され、制御記憶装置４６内の早期到達キュー５０に保管される。更に「短縮形」は、アダプタからマイクロプロセッサ上で実行されるソフトウェアに送られ、受信できなかったメッセージが到着していることをマイクロプロセッサ・ソフトウェアに知らせる。ハードウェア・アダプタは、プロセッサ・メモリ中の特定の位置に書き込みを行うか、またはプロセッサ割り込みを発生させて、「短縮形」が保管されていることをプロセッサに知らせる。
【００２２】
前記で簡単に説明したように、本発明に従って、通信アダプタは異なったプロトコルを実行できる。例えば、アダプタはメッセージ・データを廃棄し、引き続くメッセージの受信を行うこともできるし、あるいはアダプタは、主記憶装置内の一時受信バッファ２７にメッセージ・データを保持し、プロセッサがこのメッセージ用の受信バッファを通知するのを待つこともできる。前者の場合には、プロセッサは「短縮形」、即ちメッセージ・ヘッダ情報を追跡し、ユーザ処理プログラムが一致する受信バッファを通知したときに、メッセージに対する「プル」要求を出す。これによってメッセージが送信装置から受信装置に再送され、通知された受信バッファにコピーされる。後者の場合には、通信システムのソフトウェアが、メッセージを受信すべきバッファを通知する。この場合、ユーザ・プログラムがメッセージ用の受信バッファを通知してないので、通信システム・ソフトウェアが通知したバッファは、一時バッファ２７であり、データは、対応する受信バッファを通知するユーザ・プログラムが実行されるまで、一時的に保管される。
【００２３】
ある種の状況では、前者の選択肢（データの廃棄）が最適であり、これは、アダプタに一時バッファが通知されるのを待たせることなく、アダプタに別のメッセージの受信を行わせるからである。しかし他の状況では、この方法はメッセージが再送される必要があるので、効率を悪くする。そのためある状況では、メッセージ・データを一時バッファに保持することが最適となる。それは、バッファが通知された後にメッセージを再送する必要がないからである。しかしこれを行うと受信装置をブロックするので、受信できたかもしれない他のメッセージの処理をできなくする。
【００２４】
ハードウェア・アダプタは、いずれの選択肢を採用するかプログラム可能である。これは、宛先プロセッサの通信システム・レベルで動作するソフトウェア層に、どんな状況のときにはどちらの操作を採用すべきかを指定させ、それに従ってアダプタをプログラムさせることである。ハードウェア・アダプタは、プログラム可能なタイマももち、これによってハードウェア・アダプタは、一時バッファ・プロトコルの使用を開始できるが、通信システム・ソフトウェアが、一致する受信バッファを通知するために長過ぎる時間をとる場合には、データ廃棄プロトコルに切り換える。
【００２５】
本発明に従ったメッセージ伝送のいくつかの実施例を図４〜図９に示し、以下に説明する。
【００２６】
図４及び図５は、本発明に従った「短縮化」、及びメッセージ・データ廃棄を採用する１つのメッセージ処理プロトコルを示す。このプロトコルは、送信元コンピュータ・ノードが、メッセージを宛先コンピュータ・ノードに伝送する（参照番号１００）か、または宛先コンピュータ・ノードが、メッセージ用の受信バッファを非同期に通知する（参照番号１０２）か、のいずれかによって開始される。送信装置がメッセージを受信装置に伝送することにより開始されると（１００）、メッセージは、受信コンピュータ・ノードの通信アダプタで受信される（１０４）。そこでアダプタのパケット受信装置が、制御記憶装置内のデータ構造を読み出し（１０６）、このメッセージ用に受信バッファが既に通知されている（割り当てられている）か否かを判定する（１０８）。受信バッファが既に通知されている場合には、プロトコルはパケット受信装置に指示を出し、この指示によりパケット受信装置は、通知された受信バッファにメッセージを移動するようにバス・インタフェース中のＤＭＡエンジンに指示する（１１０）。その後パケット受信装置は、メッセージが受信されたことを知らせる受信報告を生成し、これを送信元コンピュータ・ノードに送る（１１２）。メッセージが通知された受信バッファに保管された後は、受信コンピュータ・ノードのユーザ・プログラムが、以降の処理のためにこのメッセージを受け取る（１１４）。
【００２７】
参照番号１０８のチェックに戻ると、宛先コンピュータ・ノードにおいて予期しないメッセージを受信した、即ちこのメッセージに対して受信バッファが通知されてない場合は、パケット受信装置は、通信アダプタの制御記憶装置内の早期到達キュー構造にメッセージ・ヘッダを保管する（１１６）ことによって、このメッセージの「短縮形」を作成する。パケット受信装置は、その後でメッセージ・データを廃棄し（１１８）、受信される次のメッセージの処理に進むか、または受信コンピュータ・ノード・ソフトウェアが受信バッファを通知できる状態になるのを待つ（図５に向かう破線）。
【００２８】
暫くしてユーザ処理プログラムが、早期到達メッセージになっている可能性のあるメッセージに対する受信バッファを通知できる状態になる（１０２）。受信コンピュータ・ノード・ソフトウェアは、最初に早期到達キューをチェックし（１２０）、対応するメッセージ・ヘッダが存在するか否かを判定する（１２２）。メッセージ・ヘッダが早期到達キューに存在しない場合は、受信装置は、メッセージに対する受信バッファを通知する（１３０）。反対に、メッセージが早期到達メッセージであり、メッセージ・ヘッダが早期到達キューに存在する場合は、受信装置は、受信バッファを通知し（１２４）、送信元コンピュータ・ノードにメッセージの再送を求める「プル」要求を送る（１２６）。そこで送信装置は、当初のメッセージを再送し（１２８）、受信装置は、メッセージが宛先のアダプタに到着する時点から始まるメッセージ処理プロトコルに戻る（１０４）。
【００２９】
図６及び図７は、本発明に従った代替のメッセージ処理プロトコルの実施例であり、ここでは早期到達メッセージを処理するために、アダプタが一時バッファを割り当て、受信装置は、ユーザ処理プログラムがメッセージ用の受信バッファを指定するのを待つ。図６及び図７の流れは、送信元コンピュータ・ノードがメッセージを送信する（２００）か、または受信装置が非同期に受信バッファを通知できる状態になる（２０２）ときに始まる。送信元コンピュータ・ノードがメッセージを伝送すると、このメッセージは、宛先コンピュータ・ノードの通信アダプタにおいて受信される（２０４）。宛先の通信アダプタのパケット受信装置は、最初に対応する通知済み受信バッファをチェックし（２０６）、それがあるか否かを判定する（２０８）。受信バッファが既に通知されている場合には、パケット受信装置は、データを受信バッファに移動するようにＤＭＡエンジンに指示する（２１０）。その後パケット受信装置は、受信報告を生成し、この報告を送信元コンピュータ・ノードに送り、メッセージが受信されたことを伝える（２１２）。その後受信コンピュータ・ノードのソフトウェアは、受信バッファに保管されたメッセージ・データを利用できる（２１４）。
【００３０】
受信バッファがまだ通知されてない場合は、この実施例では、受信装置のアダプタのソフトウェアが、主記憶装置内に一時受信バッファを割り当てる（２１５）。パケット受信装置は、メッセージ・データをこの一時受信バッファに移動するように、ＤＭＡエンジンに指示し（２１７）、アダプタの制御記憶装置内の早期到達キューに、メッセージ・ヘッダ及び一時受信バッファに関する情報を付加する。その後プロセスは、ユーザ・プログラムがメッセージ用の受信バッファを通知できる状態になるまで待つ（２０２）。
【００３１】
ユーザ処理プログラムが、メッセージ用の受信バッファを通知できる状態になったときに、ソフトウェアは、最初に早期到達キューをチェックし（２２０）、対応する（一致する）メッセージ・ヘッダが存在するか否か判定する（２２２）。一致するメッセージ・ヘッダが、早期到達キューに存在しない場合は、受信装置は、メッセージ用の受信バッファを通知する（２３０）。前記のように、「受信バッファの通知」は、受信されるメッセージ用の受信バッファが配置されている場所を通信アダプタに知らせるためのデータ構造をアダプタ内で作成することを含む。
【００３２】
一致するメッセージ・ヘッダが、早期到達キューに存在する場合は、受信コンピュータ・ノード・ソフトウェアが一時受信バッファの位置を識別し、メッセージ・データを一時受信バッファから受信バッファに移動する（２２５）。その後一時受信バッファは解放され（２２７）、例えば次の早期到達メッセージの受信に備える。メッセージが受信バッファに入れられた後は、受信コンピュータ・ノード・ソフトウェアがこのデータを使用できる（２１４）。
【００３３】
図８及び図９は、本発明に従った更に別のメッセージ処理プロトコルを示す。このプロセスの流れでは、図４、図５、及び図６、図７の方法が結合されている。プロセスは、ここでも送信元コンピュータ・ノードがメッセージを送信する（３００）か、または受信コンピュータ・ノード・ソフトウェアがメッセージ用の受信バッファを非同期に通知できる状態になる（３０２）か、のいずれかによって開始される。
【００３４】
宛先コンピュータ・ノードにおいてメッセージが受信されたとき（３０４）、宛先のアダプタのパケット受信装置は、メッセージに対応する通知済み受信バッファをチェックし（３０６）、それが存在するか否か判定する（３０８）。受信バッファが既に通知されている場合は、パケット受信装置は、メッセージ・データを受信バッファに移動するようにＤＭＡエンジンに指示し（３１０）、受信報告を作成し、送信元コンピュータ・ノードに返送する（３１２）。メッセージ・データが受信バッファに移動された後は、受信コンピュータ・ノードのソフトウェアは、このメッセージ・データを利用できる（３１４）。
【００３５】
メッセージ用に受信バッファが通知されてない場合は、プロセスは、主記憶装置内で一時受信バッファ領域が利用できるか否かを判定する（３１３）。これが利用可能な場合は、受信コンピュータ・ノード・ソフトウェアは一時受信バッファを割り当て（３１５）、パケット受信装置は、メッセージ・データを一時受信バッファに移動するようにＤＭＡエンジンに通知する（３１７）。パケット受信装置はまた、メッセージ・ヘッダ及び一時受信バッファの位置情報を早期到達キューに付加する（３１９）。プロセスは、メッセージの保管後、受信コンピュータ・ノード・ソフトウェアがこのメッセージ用に受信バッファを通知できる状態になる（３０２）まで待つ。
【００３６】
一時バッファ領域が利用できない場合（３１３）は、パケット受信装置は、アダプタの制御記憶装置内の早期到達キューにメッセージ・ヘッダを付加し（３１６）、メッセージ・データを廃棄する（３１８）。その後プロセスは、受信コンピュータ・ノード・ソフトウェアが、早期到達メッセージ用に受信バッファを通知できる状態になるまで待つ（３０２）。
【００３７】
受信コンピュータ・ノード・ソフトウェアが、メッセージ用に受信バッファを通知できる状態になったとき、このソフトウェアは、早期到達キュー中のメッセージ・ヘッダをチェックし（３２０）、一致するメッセージ・ヘッダが存在するか否か判定する（３２２）。一致するメッセージ・ヘッダが早期到達キュー中に存在しない場合は、受信装置はメッセージ用の受信バッファを通知し（３３０）、送信元コンピュータ・ノードがメッセージを伝送してくるのを待つ。
【００３８】
一致するメッセージ・ヘッダが早期到達キューに存在する場合は、プロセスは、早期到達メッセージが一時受信バッファに保持されているか否かを判定する（３２３）。これが保持されている場合には、受信コンピュータ・ノード・ソフトウェアは、メッセージ・データを一時受信バッファから受信バッファに移し（３２５）、このときメッセージは既に受信されているので、受信バッファの通知を必要としない。その後受信コンピュータ・ノード・ソフトウェアは、一時受信バッファを解放し（３２７）、更に受信コンピュータ・ノード・ソフトウェアは、受信バッファに配置されたメッセージ・データを利用できるようになる（３１４）。これとは反対に、受信された早期到達メッセージが一時受信バッファに保持されてなかった場合は、受信装置は、メッセージ用の受信バッファを通知し（３２４）、受信コンピュータ・ノード・ソフトウェアは、「プル」要求を送信ノードに送る（３２６）。そこで送信元コンピュータ・ノードは当初のメッセージを再送し（３２８）、このメッセージは、宛先コンピュータ・ノードのアダプタに到着し（３０４）、上記のように処理される。
【００３９】
当分野に知識をもつ当業者は、上記の説明から、複数の非同期コンピュータ・ノードを含むシステム内で、送信元コンピュータ・ノードと宛先コンピュータ・ノードとの間のメッセージ伝送時間を減少させるために早期到達メッセージを処理するいくつかの方法が、本明細書に提示されていることを理解するであろう。このプロトコルは、受信装置がメッセージを要求するのを待つことなく、メッセージを伝送する。メッセージ用に受信バッファが通知されている場合には、メッセージは即時に受信され、単一の伝送のみの伝送時間が発生する。一方で、メッセージが早期到達メッセージである場合には、本明細書に提示された方法は、効率を最高にする柔軟性を通信システムに提供する。その方法は、予期されてないメッセージのデータを廃棄するか、またはデータを通信アダプタのレベルに保持し、その状況を受信装置のプロセッサに通知するか、いずれかである。上記の双方の選択肢は、ハードウェア・レベルでの同じ基礎的な仕組み、即ち「短縮化」を採用し、通信システムは、最高の効率を得るためには現在の環境ではどちらの選択肢を採用すべきかを、ソフトウェアのレベルで決定できる。受信バッファが事前に通知されている場合には、双方の選択肢は、良好なメッセージ伝送効率を維持できる。
【００４０】
本発明は、例えばコンピュータが利用可能な手段をもつ製品（例えば１つ、または複数のコンピュータ・プログラム製品）に含めることができる。この手段は、例えば、本発明の機能を提供し、可能にするためのコンピュータが読み取り可能なプログラム・コード手段を実現する。上記の製品は、コンピュータ・システムの一部に含むことができるし、単独で販売することもできる。
【００４１】
本明細書に示した流れ図は、例として提示したものである。本発明の意図から逸脱することなく、本明細書に説明されたこれらの図、処置、操作に対する変更が可能である。例えばある場合には、これらの処置を別の順に実行することもでき、あるいはいくつかの処置を追加、削除、もしくは変更できる。これらの変更のすべては、本発明の部分を成すものと考えられ、文頭の特許請求の範囲に列挙されている。
【００４２】
好ましい実施例を本明細書に詳細に示し、説明したが、本発明の意図から逸脱することなく、多種の変更、追加、代案、及び同様のものを実施可能であり、したがってこれらのものは、文頭の特許請求の範囲に定義された本発明の範囲内にあると見なすべきであることは、関連分野に知識をもつ当業者には明白であろう。
【００４３】
まとめとして、本発明の構成に関して以下の事項を開示する。
【００４４】
（１）  双方向の非同期通信チャネルにより相互接続された複数のコンピュータ・ノードを有し、前記コンピュータ・ノードのそれぞれにおいて非同期に実行されるユーザ処理プログラム間でメッセージを伝送するためのコンピュータ・システムにおいて、送信元コンピュータ・ノードから受信コンピュータ・ノードへ伝送されるメッセージを処理する方法であって、前記メッセージはメッセージ・ヘッダ及びメッセージ・データを含み、前記受信コンピュータ・ノードはパケット受信装置を含む通信アダプタを含み、
前記方法は、
（ａ）前記受信コンピュータ・ノードからの前記メッセージに対する要求を待たずに、前記送信元コンピュータ・ノードからの前記メッセージを前記受信コンピュータ・ノードへ伝送するステップと、
（ｂ）前記メッセージ用の受信バッファが前記受信コンピュータ・ノードによって前記通信アダプタに通知されているか否かを、前記パケット受信装置が判定するステップと、
（ｃ）前記メッセージ用の前記受信バッファが通知されていない場合は、
（イ）前記パケット受信装置が早期到達キュー内に前記メッセージのメッセージ・ヘッダを保管しそして前記メッセージのメッセージ・データを廃棄することにより、前記メッセージを切り詰めるステップと、
（ロ）前記受信コンピュータ・ノードが前記メッセージ用の受信バッファを前記通信アダプタに通知できる状態になったときに、前記メッセージ・ヘッダ用の前記早期到達キューをチェックするステップと、
（ハ）前記メッセージ・ヘッダが前記早期到着キュー内に存在する場合に、「プル」要求を前記受信コンピュータ・ノードから前記送信元コンピュータ・ノードへ送るステップであって、前記「プル」要求は前記送信元コンピュータ・ノードに指示して前記メッセージを前記受信コンピュータ・ノードへ再送する、前記送るステップと、
を含む、メッセージを処理する方法。
（２）  前記判定するステップ（ｂ）が、前記メッセージ用の前記受信バッファが前記受信コンピュータ・ノードによって前記通信アダプタに通知されていることを前記パケット受信装置が判定した場合に、前記メッセージを前記受信バッファに保管するステップを更に含む、（１）に記載のメッセージを処理する方法。
（３）  前記チェックするステップ（ｃ）（ロ）において、前記メッセージ・ヘッダが前記早期到達キュー内に存在しないと判定した場合に、
前記方法は、
前記受信コンピュータ・ノードが前記受信バッファを前記通信アダプタに通知するステップと、
前記メッセージに対する要求を伝送せずに、前記送信元コンピュータ・ノードからの前記メッセージの前記受信コンピュータ・ノードへの伝送を待つステップと
を更に含む、（１）に記載のメッセージを処理する方法。
（４）  前記切り詰めるステップ（ｃ）（イ）の前に更に、
（ｄ）前記メッセージ用の前記受信バッファが前記受信コンピュータ・ノードによって前記通信アダプタに通知されていない場合に、前記メッセージ用に一時受信バッファ領域が利用可能か否かを判定するステップと、
（ｅ）前記一時受信バッファ領域が利用可能な場合に、受信コンピュータ・ノードが前記メッセージ用に一時受信バッファを割り当て、前記パケット受信装置が前記一時受信バッファ内に前記メッセージ・データを移動し、そして前記パケット受信装置が前記早期到達キュー内に前記メッセージ・ヘッダ及び一時バッファ情報を保管するステップと、
（ｆ）前記メッセージ用に前記一時受信バッファ領域が利用できない場合にのみ、前記切り詰めるステップ（ｃ）（イ）を実行するステップと、
を更に含む、（１）に記載のメッセージを処理する方法。
（５）  １つまたは複数の送信元コンピュータ・ノードから前記受信コンピュータ・ノードへ送られる複数のメッセージを処理する方法を含み、前記複数のメッセージのそれぞれがメッセージ・ヘッダ及びメッセージ・データを含み、前記方法が、
前記受信コンピュータ・ノードからの前記メッセージに対する要求を待たずに、前記１つまたは複数の送信元コンピュータ・ノードからの前記メッセージを前記受信コンピュータ・ノードへ伝送するステップと、
前記受信コンピュータ・ノードにおいて受信されるそれぞれのメッセージに対し、
前記メッセージ用の受信バッファが前記受信コンピュータ・ノードによって前記通信アダプタに通知されているか否かを、前記パケット受信装置が判定し、前記メッセージ用の前記受信バッファが通知されていない場合に、前記パケット受信装置が前記早期到達キュー内に前記メッセージのメッセージ・ヘッダを保管しそして前記メッセージのメッセージ・データを廃棄することにより、前記メッセージを切り詰めるステップと、
前記受信コンピュータ・ノードが所要のメッセージ用の受信バッファを前記通信アダプタに通知できる状態になったときに、前記所要のメッセージに一致するメッセージ・ヘッダが存在するか否か前記早期到達キューをチェックするステップと、
前記一致するメッセージ・ヘッダが前記早期到達キュー内に存在する場合に、「プル」要求を前記受信コンピュータ・ノードから前記送信元コンピュータ・ノードへ送るステップであって、前記「プル」要求は前記送信元コンピュータ・ノードに指示して前記所要のメッセージを受信コンピュータ・ノードへ再送する、前記送るステップと、
を含む、（１）に記載のメッセージを処理する方法。
（６）  前記チェックするステップ（ｃ）（ロ）において、前記メッセージ・ヘッダが前記早期到達キュー内に存在しない場合に、メッセージに対する要求を伝送せずに、前記送信元コンピュータ・ノードがメッセージを伝送するのを待つ、（１）に記載のメッセージを処理する方法。
（７）  双方向の非同期通信チャネルにより相互接続された複数のコンピュータ・ノードを有し、前記コンピュータ・ノードのそれぞれにおいて非同期に実行されるユーザ処理プログラム間でメッセージを伝送するためのコンピュータ・システムにおいて、送信元コンピュータ・ノードから受信コンピュータ・ノードへメッセージを伝送する方法であって、前記メッセージはメッセージ・ヘッダ及びメッセージ・データを含み、前記受信コンピュータ・ノードはパケット受信装置を含む通信アダプタを含み、
前記方法は、
（ａ）前記受信コンピュータ・ノードからの前記メッセージに対する要求を待たずに、前記送信元コンピュータ・ノードからの前記メッセージを前記受信コンピュータ・ノードへ伝送するステップと、
（ｂ）前記メッセージ用の受信バッファが前記受信コンピュータ・ノードによって前記通信アダプタに通知されているか否かを、前記パケット受信装置が判定し、前記メッセージ用の前記受信バッファが通知されている場合に、前記メッセージを前記受信バッファに保管するステップと、
（ｃ）前記メッセージ用の前記受信バッファが通知されていない場合に、前記パケット受信装置が早期到達キュー内に前記メッセージのメッセージ・ヘッダを保管しそして前記メッセージのメッセージ・データを廃棄することにより、前記メッセージを切り詰めるステップと、
を含むメッセージを伝送する方法。
（８）  双方向の非同期通信チャネルにより相互接続された複数のコンピュータ・ノードを有し、前記コンピュータ・ノードのそれぞれにおいて非同期に実行されるユーザ処理プログラム間でメッセージを伝送するためのコンピュータ・システムにおいて、送信元コンピュータ・ノードから受信コンピュータ・ノードへ伝送されるメッセージを処理する方法であって、前記メッセージはメッセージ・ヘッダ及びメッセージ・データを含み、前記受信コンピュータ・ノードはパケット受信装置を含む通信アダプタを含み、
前記方法は、
（ａ）前記受信コンピュータ・ノードが前記メッセージ用の受信バッファを前記通信アダプタに通知できる状態になったときに、前記受信コンピュータ・ノードが、対応するメッセージ・ヘッダが存在するか否かについて、早期到達メッセージのメッセージ・ヘッダを記憶する早期到達キューをチェックするステップと、
（ｂ）前記メッセージ・ヘッダが前記早期到達キュー内に存在する場合に、「プル」要求を前記受信コンピュータ・ノードから前記送信元コンピュータ・ノードへ送るステップであって、前記「プル」要求は前記送信元コンピュータ・ノードに指示して前記メッセージを前記受信コンピュータ・ノードへ再送する、前記送るステップと、
（ｃ）前記受信コンピュータ・ノードが前記受信バッファを前記通信アダプタに通知し、前記メッセージが前記受信コンピュータ・ノードに再送されるのを待つステップと、
を含むメッセージを処理する方法。
（９）  双方向の非同期通信チャネルにより相互接続された複数のコンピュータ・ノードを有し、前記コンピュータ・ノードのそれぞれにおいて非同期に実行されるユーザの処理プログラム間でメッセージを伝送するためのコンピュータ・システムにおいて、送信元コンピュータ・ノードから受信コンピュータ・ノードへメッセージを伝送する方法であって、前記メッセージはメッセージ・ヘッダ及びメッセージ・データを含み、前記受信コンピュータ・ノードはパケット受信装置を含む通信アダプタを含み、
前記方法は、
（ａ）前記受信コンピュータ・ノードからの前記メッセージに対する要求を待たずに、前記送信元コンピュータ・ノードからの前記メッセージを前記受信コンピュータ・ノードへ伝送するステップと、
（ｂ）前記メッセージが前記受信コンピュータ・ノードにおいて受信されたときに、前記メッセージ用の受信バッファが前記受信コンピュータ・ノードによって前記通信アダプタに通知されているか否かを前記パケット受信装置が判定し、前記メッセージ用の前記受信バッファが通知されている場合に、前記メッセージを前記受信バッファに保管するステップと、
（ｃ）前記メッセージ用の前記受信バッファが通知されていない場合に、前記メッセージ・データを保持するために、前記受信コンピュータ・ノードに一時受信バッファを割り当て、前記受信コンピュータ・ノードに存在する早期到達キューに前記メッセージ・ヘッダを保管するステップと、
を含む、メッセージを伝送する方法。
（１０）  前記受信コンピュータ・ノードが前記メッセージ用の前記受信バッファを前記通信アダプタに通知できる状態になったときに、前記メッセージ・ヘッダが存在するか否か前記早期到達キューをチェックするステップと、
前記メッセージ・ヘッダが前記早期到達キュー内に存在する場合に、前記メッセージ・データを前記一時受信バッファから前記受信バッファに移動するステップと、
を更に含む、（９）に記載のメッセージを伝送する方法。
（１１）  前記保管するステップ（ｃ）が、前記一時受信バッファに関する位置情報を前記メッセージ・ヘッダと一緒に前記早期到達キュー内に保管するステップを更に含む、（１０）に記載のメッセージを伝送する方法。
（１２）  前記保管するステップ（ｃ）の前に、前記メッセージ用に一時受信バッファ領域が利用可能か否かを判定し、一時受信バッファが利用可能な場合には、前記前期一時受信バッファを割り当て、利用可能でない場合には、前記受信コンピュータ・ノードが前記早期到達キュー内に前記メッセージ・ヘッダを保管しそして前記メッセージ・データを廃棄することにより、前記メッセージを切り詰めるステップを更に含む、（１０）に記載のメッセージを伝送する方法。
（１３）  前記メッセージ・ヘッダが前記早期到達キュー内に存在するが、前記メッセージ・データが廃棄されている場合には、前記早期到達キューをチェックするステップに続いて、「プル」要求を前記受信コンピュータ・ノードから前記送信元コンピュータ・ノードへ送るステップであって、前記「プル」要求は前記送信元コンピュータ・ノードに指示して前記メッセージを前記受信コンピュータ・ノードへ再送する、前記送るステップと
を更に含む、（１２）に記載のメッセージを伝送する方法。
（１４）  前記メッセージ・ヘッダが前記早期到達キュー内に存在することが判明した場合に、前記移動するステップの前に、前記メッセージ・データが前記一時受信バッファに存在するか否か判定し、存在する場合には、前記メッセージ・データを前記一時受信バッファから前記受信バッファに移動し、存在しない場合には、前記メッセージの再送を求めるために前記「プル」要求を前記受信コンピュータ・ノードから前記送信元コンピュータ・ノードへ送る、（１３）に記載のメッセージを伝送する方法。
（１５）  前記メッセージ・データが前記一時受信バッファに存在しない場合に、前記早期到達キューをチェックするステップに続いて前記受信バッファを通知するステップを更に含む、（１３）に記載のメッセージを伝送する方法。
（１６）  １つまたは複数の送信元コンピュータ・ノードからの複数のメッセージを前記受信コンピュータ・ノードに伝送する方法を含み、当該方法が、前記受信コンピュータ・ノードからのメッセージに対する要求を待たずに、前記１つまたは複数の送信元コンピュータ・ノードからの複数のメッセージを前記受信コンピュータ・ノードへ伝送するステップと、前記受信コンピュータ・ノードにおいて受信されるそれぞれのメッセージに対して前記ステップ（ｂ）及び（ｃ）を実施し、前記受信コンピュータ・ノードが所要のメッセージ用の受信バッファを前記通信アダプタに通知できる状態になったときに、前記所要のメッセージに一致するメッセージ・ヘッダが存在するか否か前記早期到達キューをチェックし、前記一致するメッセージ・ヘッダが前記早期到達キュー内に存在する場合に、対応するメッセージ・データを前記一時受信バッファから前記所要のメッセージ用の前記受信バッファに移動するステップと
を含む、（９）に記載のメッセージを伝送する方法。
【図面の簡単な説明】
【図１】本発明を採用したコンピュータ・システムの１実施例を示す図である。
【図２】図１の通信アダプタの１実施例を示す図である。
【図３】本発明に従った図１の受信コンピュータ・ノードの実施例をより詳細に示す図である。
【図４】本発明に従ったメッセージ伝送プロトコルの１実施例を示す流れ図である。
【図５】本発明に従ったメッセージ伝送プロトコルの１実施例を示す流れ図である。
【図６】本発明に従ったメッセージ伝送プロトコルのもう１つの実施例を示す流れ図である。
【図７】本発明に従ったメッセージ伝送プロトコルのもう１つの実施例を示す流れ図である。
【図８】本発明に従ったメッセージ伝送プロトコルの更にもう１つの実施例を示す流れ図である。
【図９】本発明に従ったメッセージ伝送プロトコルの更にもう１つの実施例を示す流れ図である。
【符号の説明】
１０          コンピュータ・システム
１２          コンピュータ・ノード
２２          システム・バス
【図１】
0003606541.tif 000002
【図２】
0003606541.tif 000003
【図３】
0003606541.tif 000004
【図４】
0003606541.tif 000005
【図５】
0003606541.tif 000006
【図６】
0003606541.tif 000007
【図７】
0003606541.tif 000008
【図８】
0003606541.tif 000009
【図９】
0003606541.tif 000010