(57)【要約】【課題】大規模メッセージと小規模メッセージとが混在して転送される場合でも、実時間性を損なうことなく転送できる分散共有メモリを用いたメッセージ間通信方法を提供する。【解決手段】本発明では、ＯＳ又はＡＰ層にローカルバッファを設ける。プロセスは、生成したメッセージの規模を制御手段に通知する。制御手段は、プロセスで生成されたメッセージが所定の規模を超えるか否かを判定し、所定の規模以下の場合当該メッセージを分散共有メモリに直接書込み、所定の規模を超える場合一旦ローカルバッファに書込んだ後分散共有メモリに書込む。これにより、大規模メッセージをローカルバッファに書込む時間期間内に実時間の高いメッセージを転送することができる。この結果、従来の分散共有メモリ方式に簡単な変更を加えるだけで実時間性を確保できる。【選択図】        図２
2004362476.tif 000002
【特許請求の範囲】
【請求項１】
複数のノードがネットワークを介して相互接続され、各ノードは、データないしメッセージを生成する１個又は複数個のプロセスと、他のノードとデータを共有するために用いられる分散共有メモリを有するメモリと、分散共有メモリへのデータの書込み及び呼出しを制御する制御手段と、分散共有メモリに格納されたデータのネットワークへの送信及びネットワークから送られてきたデータの受信を行うデータ転送装置とを具え、各ノードが自己の分散共有メモリにデータを書込むと、当該データが自動的に転送先のノードの分散共有メモリにそれぞれ転送される分散共有メモリを用いたプロセス間通信方法において、
各ノードは、プロセスが生成したデータを一時的に格納するローカルバッファを有し、前記制御手段は、プロセスにより生成されたデータのデータサイズが所定のデータ長以下の場合当該データを分散共有メモリに直接書込み、生成されたデータのデータサイズが前記所定のデータ長を超える場合当該データを前記ローカルバッファに一時的に書込んだ後分散共有メモリに書込むことを特徴とする分散共有メモリを用いたプロセス間通信方法。
【請求項２】
請求項１に記載の分散共有メモリを用いたプロセス間通信方法において、前記プロセスは生成したデータのデータサイズを前記制御手段に通知し、当該制御手段は、通知されたデータサイズが所定のデータ長を超えるか否か判定し、この判定結果に基づいてローカルバッファ又は分散共有メモリにデータを書込むように制御することを特徴とする分散共有メモリを用いたプロセス間通信方法。
【請求項３】
請求項２に記載の分散共有メモリを用いたプロセス間通信方法において、前記制御手段は、前記プロセスにより生成されたデータがローカルバッファに書込まれている期間中に別のプロセスにより生成された所定のデータ長以下のデータサイズの小規模データを優先的に分散共有メモリに直接書込むように制御することを特徴とする分散共有メモリを用いたプロセス間通信方法。
【請求項４】
請求項１から３でのいずれか１項に記載の分散共有メモリを用いたプロセス間通信方法において、前記プロセスが生成したデータが前記所定のデータ長を超える場合、制御手段は、前記ローカルバッファに書込まれたデータが所定の大きさのバッファ容量に達した際、当該書込まれた所定のバッファ容量のデータを一括して分散共有メモリに書込むように書込み制御することを特徴とする分散共有メモリを用いたプロセス間通信方法。
【請求項５】
請求項４に記載の分散共有メモリを用いたプロセス間通信方法において、前記制御手段は、プロセスから通知されたデータサイズに応じて前記一括転送される所定のバッファ容量の大きさを決定することを特徴とする分散共有メモリを用いたプロセス間通信方法。
【請求項６】
請求項１から５までのいずれか１項に記載の分散共有メモリを用いたプロセス間通信方法において、前記制御手段は、プロセスから受け取った転送すべきデータのデータサイズに基づいて、書込み用いられるローカルバッファの容量を決定し、ローカルバッファへの書込み領域を確保することを特徴とする分散共有メモリを用いたプロセス間通信方法。
【請求項７】
請求項１から６までのいずれか１項に記載の分散共有メモリを用いたプロセス間通信方法において、前記制御手段は、プロセスからデータの書込み要求を受け取った際、当該データのデータサイズが前記所定のデータ長以下の場合分散共有メモリへの書込み領域を指定する情報を付与し、データサイズが所定のデータ長を超える場合ローカルバッファへの書込み領域を指定する情報を付与することを特徴とする分散共有メモリを用いたプロセス間通信方法。
【請求項８】
請求項１から７までのいずれか１項に記載の分散共有メモリを用いたプロセス間通信方法において、前記プロセスは、分散共有メモリに優先的に書込むべきことを示すコマンドを生成する機能を有し、前記制御手段は、当該優先的に書込むべきコマンドにより指示されたデータについてはデータサイズにかかわらず分散共有メモリに直接当該データを書込むように制御することを特徴とする分散共有メモリを用いたプロセス間通信方法。
【請求項９】
請求項１から８までのいずれか１項に記載の分散共有メモリを用いたプロセス間通信方法において、前記ローカルバッファを、ＯＳ又はＡＰ層に設けたことを特徴とする分散共有メモリを用いたプロセス間通信方法。
【請求項１０】
請求項１から９までのいずれか１項に記載の分散共有メモリを用いたプロセス間通信方法において、前記制御手段はＯＳ又はＡＰ層に設けられていることを特徴とする分散共有メモリを用いたプロセス間通信方法。
【請求項１１】
請求項１から１０までのいずれか１項に記載の分散共有メモリを用いたプロセス間通信方法において、前記データ転送装置により受信されたデータを前記ローカルバッファに格納し、その後プロセスに転送することを特徴とする分散共有メモリ用いを用いたプロセス間通信方法。
【請求項１２】
分散共有メモリを用いたノード間通信システムに用いられ、通信機能を有するデータ処理装置において、
データを生成する１個又は複数個のプロセスと、他のノードとデータを共有するために用いられる分散共有メモリを有するメモリと、分散共有メモリへのデータの書込み及び呼出しを制御する制御手段と、分散共有メモリに格納されたデータのネットワークへの送信及びネットワークから送られてきたデータの受信を行うデータ転送装置と、前記プロセスが生成したデータを一時的に蓄積するローカルバッファとを具え、
前記制御手段は、前記プロセスにより生成されたデータのデータサイズが所定のデータ長以下の場合当該データを分散共有メモリに直接書込み、生成されたデータのデータサイズが所定のデータ長を超える場合前記ローカルバッファに一時的に書込んだ後分散共有メモリに書込まれるように制御することを特徴とするデータ処理装置。
【請求項１３】
請求項１２に記載のデータ処理装置において、前記プロセスは生成したデータのデータサイズを前記制御手段に通知し、当該制御手段は、通知されたデータサイズが所定のデータ長を超えるか否か判定し、この判定結果に基づいてローカルバッファ又は分散共有メモリにデータを書込むように制御することを特徴とするデータ処理装置。
【請求項１４】
請求項１３に記載のデータ処理装置において、前記制御手段は、前記プロセスにより生成されたデータがローカルバッファに書込まれている期間中に別のプロセスにより生成された所定のデータ長以下のデータサイズの小規模データを優先的に分散共有メモリに直接書込むように制御することを特徴とするデータ処理装置。
【請求項１５】
請求項１２から１４までのいずれか１項に記載のデータ処理装置において、前記プロセスが生成したデータが前記所定のデータ長を超える場合、前記制御手段は、制御手段は、前記ローカルバッファに書込まれたデータが所定の大きさのバッファ容量に達した際、当該書込まれた所定のバッファ容量のデータを一括して分散共有メモリに書込むように制御することを特徴とするデータ処理装置。
【請求項１６】
請求項１５に記載のデータ処理装置において、前記制御手段は、プロセスから通知されたデータサイズに応じて前記一括転送される所定のバッファ容量の大きさを決定することを特徴とするデータ処理装置。
【請求項１７】
請求項１２から１６までのいずれか１項に記載の分散共有メモリを用いたプロセス間通信方法において、前記制御手段は、プロセスから受け取った転送すべきデータのデータサイズに基づいて、書込みに用いられるローカルバッファの容量を決定し、ローカルバッファへの書込み領域を確保することを特徴とするデータ処理装置。
【請求項１８】
請求項１２から１５までのいずれか１項に記載のデータ処理装置において、前記制御手段は、プロセスからデータの書込み要求を受け取った際、当該データのデータサイズが前記所定のデータ長以下の場合分散共有メモリへの書込み領域を指定する情報を付与し、データ長が所定のデータ容量を超える場合ローカルバッファへの書込み領域を指定する情報を付与することを特徴とするデータ処理装置。
【請求項１９】
請求項１２から１８までのいずれか１項に記載のデータ処理装置において、前記プロセスは、分散共有メモリに優先的に書込むべきことを示すコマンドを生成する機能を有し、前記制御手段は、当該優先的に書込むべきコマンドにより指示されたデータについてはデータサイズにかかわらず分散共有メモリに直接当該データを書込むように制御することを特徴とするデータ処理装置。
【請求項２０】
請求項１から８までのいずれか１項に記載の分散共有メモリを用いたプロセス間通信方法において、前記ローカルバッファを、ＯＳ又はＡＰ層に設けたことを特徴とする分散共有メモリを用いたプロセス間通信方法。
【請求項２１】
請求項１２から２０までのいずれか１項に記載のデータ処理装置において、前記制御手段はＯＳ又はＡＰ層に設けられていることを特徴とするデータ処理装置。
【請求項２２】
請求項１２から２１までのいずれか１項に記載のデータ処理装置において、前記データ転送装置により受信されたデータを前記ローカルバッファに格納し、その後プロセスに転送することを特徴とするデータ処理装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、分散共有メモリを用いたプロセス間通信システムに関するものである。特に、本発明は、ＯＳ或いはＡＰ（Ａｐｐｌｉｃａｔｉｏｎ）層に設けたローカルバッファでプロセス或いは転送メッセージに応じた規模のメッセージ送信を一時的に保留して送信優先度レベルの高いプロセスの送信をレベルの低いプロセスの送信に割込ませるスケジューリングにより、ノード間のメッセージ転送において実時間性の高いメッセージを実時間性の低いメッセージに妨げられることなく送信する優先度制御を行う分散共有メモリを用いたプロセス間通信システムに関するものである。
さらに、本発明は、分散共有メモリを用いたプロセス間通信に用いられる通信機能を有するデータ処理装置に関するものである。
【０００２】
【従来の技術】
ノード間ネットワークではソフトウェア負荷の少ないハードウェア組込みの通信手段が注目され、分散共有メモリを用いた通信方式もそのレイテンシの小ささから有効である。ところで、プロセッサ間を接続する高速通信方式は、プロセス（或いはＡＰ）の特性にあわせて設計される場合が多く、特性が異なるプロセス（或いはＡＰ）には、別の高速通信システムを用いることになる。即ち、各々の通信方式はその適用領域が比較的制限されている。例えば、分散共有メモリを用いた高速通信方式では、実時間性の高いメッセージを送信している際に大規模メッセージ送信との混在が生じるとネットワークが隘路となることで大規模メッセージ送信が完了するまでの間、実時間性の高いメッセージの送信が待たされ、実時間性の高いメッセージの送信が妨げられる場合がある。また、大規模メッセージを転送するためのメッセージ転送専用の通信方式の場合は、一般に実時間メッセージ送信を目的にしていないこと並びに通常送信装置に引渡すメッセージ全体を一旦バッファに格納するためバッファリングの時間を要すること等から、大規模メッセージ転送用のシステムを高頻度な実時間メッセージ通信にも利用することは困難であった。
【０００３】
従って、プロセスから高速のデータ転送を行う装置又はシステムに至る経路はプロセス（或いはＡＰ）の特性毎に異なり、プロセス（或いはＡＰ）毎に異なった高速通信方式を実装或いは切替えて使用する等で対処せざるを得ず、切替えのためのプログラム或いは装置の導入による費用の増加、ホストプロセッサ資源利用の増加等の負担がかかる。
【０００４】
【発明が解決しようとする課題】
このように、従来のノード間データ転送技術においては、高速通信装置を用いて一括して送信される大規模なメッセージと実時間性が高いメッセージの送信が混在すると、ネットワークが隘路になることで大規模メッセージ送信が継続する間は実時間性の高いメッセージの送信が妨げられる不都合が生じていた。特に、ファイル転送のような大規模転送専用の装置を用いると実時間性の高いメッセージの送信は困難であり、同一の通信装置を用いて実時間性の高いメッセージ送信と大規模メッセージの送信を共に行いにくい、という問題がある。分散共有メモリを用いた高速通信方式では、元来対象としていた制御情報のような小規模メッセージのみならず、大規模メッセージでも高速性が要求される。
【０００５】
本発明の目的は、一般に実時間性の高いメッセージ送信と比較的実時間性の低い大規模メッセージの送信を共に行いにくいという問題を、分散共有メモリを用いた高速通信方式のみを用いて比較的小規模の改造のみにより解決し、多様な実時間性や多様なデータ規模のメッセージを発生するプロセスの送信を行う際、複数の高速通信装置を実装し切替えて用いたり或いは他の通信方式に入れ替えることなく、プロセスの特性、特に転送メッセージの実時間性を損なわずに送信できる分散共有メモリを用いた高速通信方式を提供することにある。
さらに、本発明の目的は、複数のプロセスを有し分散共有メモリを用いたプロセス間通信方式に用いられるデータ処理装置において、実時間性を必要とするデータないしメッセージを優先的に転送することができるデータ処理装置を実現することにある。
さらに、本発明の別の目的は、分散共有メモリを用いた高速通信方式をより広範囲な分散実時間通信機能として提供することにある。
【０００６】
【課題を解決するための手段】
上記目的を達成するため、本発明による分散共有メモリを用いた通信システムは、複数のノードがネットワークを介して相互接続され、各ノードは、データないしメッセージを生成する１個又は複数個のプロセスと、他のノードとデータを共有するために用いられる分散共有メモリを有するメモリと、分散共有メモリへのデータの書込み及び呼出しを制御する制御手段と、分散共有メモリに格納されたデータのネットワークへの送信及びネットワークから送られてきたデータの受信を行うデータ転送装置とを具え、各ノードが自己の分散共有メモリにデータを書込むと、当該データが自動的に転送先のノードの分散共有メモリにそれぞれ転送される分散共有メモリを用いたプロセス間通信方法において、
各ノードは、プロセスが生成したデータを一時的に格納するローカルバッファを有し、前記制御手段は、前記プロセスにより生成されたデータのデータサイズが所定のデータ長以下の場合当該データを分散共有メモリに直接書込み、生成されたデータのデータサイズが所定のデータ長を超える場合当該データを前記ローカルバッファに一時的に書込んだ後分散共有メモリに書込むことを特徴とする。
【０００７】
本発明では、書込み制御手段は、プロセスから受け取った処理メッセージについて所定のメッセージ長又はデータ長と比較し、所定のデータ長ないしメッセージ長以下のデータないしメッセージについては直接分散共有メモリに書込み、所定のメッセージ長を超える場合当該処理メッセージについてはＯＳ又はＡＰ層に設けたローカルバッファに書込み、その後分散共有メモリに書込まれるように制御する。この制御により、実時間性レベルの高いメッセージは優先的に分散共有メモリに書込まれることになる。この結果、メッセージ長の異なる種々のメッセージが混在した場合であっても、複雑な優先制御機構を設けることなく、実時間性の高いメッセージを優先的に送信することができる。尚、本明細書において、「ノード」は、通信機能を有するデータ処理装置を意味し、アプリケーションとしてのプロセスを含む場合だけでなくＰＭ（プロセッサモジュール）及びプロセッサを含むものと理解される。
【０００８】
また、ローカルバッファに仮想番地を与え、実分散共有メモリとの番地変換機能を設けることでＯＳ或いはＡＰ層からはあたかも実分散共有メモリにアクセスするのと同じ過程で高速通信方式を利用することができる。また、ローカルバッファを割り当てる際、プロセス或いはメッセージの実時間性或いはメッセージ規模に応じてＯＳが規模を定めた一括転送単位毎に割り当て、プロセス或いはメッセージに求められるメッセージの保留規模即ち保留時間を設定し、優先度の高いプロセス或いはメッセージの送信が先行して行われやすくすることができる。この結果、実装形態の簡単な変更又は修正を行うだけで、分散共有メモリを用いたプロセス間通信におけるノード間のメッセージ転送の優先制御を実現することができる。ここで、一括転送単位とは、ローカルバッファにメッセージを一時的に蓄積する場合に、予め定めた一定のデータサイズ毎に区切って蓄積し、当該データサイズ単位でローカルバッファから分散共有メモリにメッセージを書込むが、その一定のデータサイズを持つデータの単位を意味するものとする。
【０００９】
また、一括転送単位内の全領域単位（ＭＢ）がアクセスされたことを契機に送信を行う場合、一括転送単位で実共有メモリの内容を上書き（受信の場合は実共有メモリにローカルバッファ内容を上書き）することによりプロセスが意識することなく転送が行われる。尚、ＭＢ（Ｍｅｓｓａｇｅ  Ｂｕｆｆｅｒ）は、データを書込み分散共有メモリ内の領域単位を意味する。
【００１０】
また、プロセス側から強制的に前記上書きを起動することにより、ローカルバッファと実共有メモリとの間の同期をとることにより、最新のメッセージを随時読み書きできる、即ち、転送先のノードと通信することができる。
【００１１】
また、ＯＳが与える優先度を一括転送単位の規模を用いて示すことで、１個のパラメータでメッセージがネットワークに送出されるまでの保留時間とＯＳの優先度の両方を制御し、さらに、プロセスが間接的ながらこのパラメータの値を決定することによりプロセス自身がこれら優先度を制御できることを特徴とする。
【００１２】
【発明の実施の形態】
本発明においては、分散共有メモリを用いた高速通信方式を、プロセスの特性（特に、送受信するメッセージ規模とメッセージに求められる実時間性）に応じて如何に効率的に提供するかに関して、下記の事項を解決するものである（プロセスは、ＡＰ或いはＯＳ内の何れのものでも良い）。
即ち、ネットワークで接続されるプロセス間通信においては、高速通信方式をより汎用的な通信手段として用いる際、送信元であるプロセスが常に特性の類似したメッセージを送信要求するとは限らず、また、受信するメッセージが常に類似した特性を持つとは限らない。つまり、メッセージの特性に応じて高速通信方式の提供形態や方式の種類を変更する必要が有る。しかし、複数の通信方式を備えてメッセージ特性に応じて通信方式を切替える方式では、装置規模の肥大化等が生じる不都合がある。そこで、本発明ではノード内のＯＳ或いはＡＰ層にローカルバッファを設け、大規模な或いは実時間性の低いメッセージの一時的な保留とＯＳによる分散共有メモリヘの書込み優先度付けを組み合わせ、これを、ＯＳ主体のローカルバッファ制御とプロセスからの強制的な動作、プロセス或いはメッセージの特性に応じたローカルバッファ内に割り当てる領域即ち一括転送単位の規模の設定、仮想的な番地によるローカルバッファと分散共有メモリの同一視、ＯＳへのメッセージ規模の通知によりローカルバッファ規模を適切に確保する。これにより、しばしば高速通信システムにおいて生じるメッセージ特性による性能の差異を吸収し、常に同一の高速通信システムで多様なメッセージを通信できる。さらに、ＯＳ或いはＡＰ層に当該機能を設けることで、従来の分散共有メモリを用いる通信装置が有する特徴、例えばアプリケーションやＯＳに負荷をかけることなく、メッセージを小さな遅延で通信する性能を併せて達成することができる。
【００１３】
尚、本発明はネットワークで接続されるノード各々の中にあるプロセス同士の通信にも適用することができる。従って、ノードは１つのＰＭから構成される場合だけでなく、複数のＰＭから構成される場合も適用され、各ＰＭ内に１つ或いは複数のプロセスが動作する場合もある。即ち、本発明の対象とするプロセス間通信は、異なるノード内のプロセス同士の通信のみならず、１つのノード内の異なるＰＭ内のプロセス同士の通信や１つのノード内の１つのＰＭ内のプロセス同士の通信も含み、動作は同様のものである。請求項１においてＰＭとノードをノードで総称するとしたが、このように対象とするプロセスは幾つかの形態を持つものの、これら形態全てを対象とし同様の動作を行うものである。
【００１４】
【実施例】
以下、本発明の実施例を、図面により詳細に説明する。図１は、本発明が適用される一般的な高速通信方式を用いたネットワークモデルの構成の配置と関係例を示す図である。図１では、高速通信装置である分散共有メモリ（ＤＳＭ）を用いる通信装置が１１Ａ、ホストプロセッサに含まれるＯＳ類が１２Ａ、及び、主として小規模メッセージを通信するプロセス類が１３Ａ、大規模メッセージ転送装置が１１Ｂ、ホストプロセッサに含まれるＯＳ類が１２Ｂ、及び、大規模メッセージを通信するプロセス類が１３Ｂである。高速通信装置はＡＰに依存して適用される場合が多く、ＡＰ内のプロセスのメッセージの特性にあわせて通信装置が設計或いは実装されるため、一般に比較的短いメッセージを通信するＡＰ類からの通信装置アクセスは１４Ａ、大規模ファイルを通信するＡＰ類からの通信装置アクセスは１４Ｂの形態であるが、ローカルバッファ（１６Ｃ内）の導入により、主として小規模メッセージを通信するプロセス及び大規模メッセージ転送共にＤＳＭ通信装置１１Ｃにアクセスする形態で通信を行う。図１では小規模メッセージを通信するＡＰ類と大規模メッセージを通信するＡＰ類の２種類のＡＰ類が示されているが、その種類が３つ以上の場合でも全く同じである。即ち、ＡＰに依存せず短いメッセージ送信から大規模ファイル送信まで広範なＡＰに対して同一の通信装置で効率の良い通信が提供される。尚、本明細書において「ノード」は、通信機能を有し、１個又は複数のプロセスによりデータが生成されるデータ処理装置を意味するものとし、１つ又は複数個のプロセッサモジュール（ＰＭ：Ｐｒｏｃｅｓｓｏｒ  Ｍｏｄｕｌｅ）で構成することができる。すなわち、本発明は、複数のノード間での分散共有メモリへのデータないしメッセージの書込みが競合した場合及び同一ノード内において複数のプロセスにより生成されたデータの分散共有メモリへの書込みが競合した場合の両方について適用される。
【００１５】
図２は本発明が適用される分散共有メモリを用いる通信装置を有するノード及びネットワーク構成図である。図２では２個のノードの２６Ａと２６Ｂが例示されているが、この数が３個以上であっても全く同じである。各ノードの主体はホストプロセッサ２５Ａ，２５Ｂ、及び、ローカルメモリ２３Ａ，２３Ｂ、及び、分散共有メモリ２１Ａ，２１Ｂ、及び、例えば分散メモリカプラのような分散共有メモリ間のメッセージを転送する装置（分散メモリカプラと呼称）２２Ａ、２２Ｂである。ホストプロセッサは、複数個のプロセスを有するものとする。ローカルメモリ２３Ａ，２３Ｂには、ローカルバッファ２４Ａ，２４Ｂが置かれる。符号２７Ａ及び２７Ｂは、このローカルバッファの効果により優先度制御がなされる対象である分散共有メモリを用いる通信システムのプロセス−分散共有メモリ間の共通路である。
【００１６】
図２の２１〜２２１Ｄは、本発明の分散共有メモリを用いる通信装置をソフトウェアの観点から送信動作を中心に説明する図である。２１Ｄはノード、２２Ｄはノードを構成するソフトウェア部分、２３Ｄはノードを構成する装置を示し、各々ＡＰ（このＡＰの部分として複数個のプロセスがある）２４Ｄ、ＯＳは２５Ｄ、ローカルメモリ２６Ｄ内のローカルバッファ２７Ｄと、プロセス或いはメッセージに応じて規模を可変に割り当てられる一括転送単位２２１Ｄ、ローカルバッファを管理するＯＳの機能２２２Ｄ、分散共有メモリ２８Ｄとメッセージ送信毎に割り当てられる一定規模で区分された要素領域ＭＢ２１０Ｄ、分散メモリカプラ２９Ｄ、ノードを接続するネットワーク２１１Ｄを示している。
【００１７】
従来、プロセス２４Ｄで発生したメッセージ２１３Ｄは分散共有メモリ２８Ｄに書込まれると（２１５Ｄ）、同時に分散メモリカプラ２９Ｄが検出して自動的に取込み（２１６Ｄ）（その際、ＭＢ：２１０Ｄ単位で使用される）、ネットワーク２１１Ｄに送出する。例えば、ＩＰ通信に用いようとした場合は、ＩＰｏｖｅｒＡＴＭのＡＲＰサーバを用いる等の方法によりＩＰ毎に宛先ノードを決定でき、そのＶＣを割り当てればよいので、高速なＩＰ通信への適用可能性も想定される。
【００１８】
本発明のローカルバッファを導入した場合、プロセス２４Ｄで発生したメッセージ２１４Ｄは、実時間性が小さい場合等プロセス或いはメッセージ特性に応じてはローカルバッファ２７Ｄ内に割り当てられた一括転送単位２２１Ｄに書込まれ（２１７Ｄ）、一括転送単位２２１Ｄ内の全ての領域がアクセスされた時点（一括転送単位は分散共有メモリ２１０ＤのＭＢと対応している）で分散共有メモリ２８Ｄに書込まれ、同時に分散メモリカプラ２９Ｄが検出して自動的に取込み（２１９Ｄ）（その際、ＭＢ：２１０Ｄ単位で使用される）、ネットワーク２１１Ｄに送出する。
【００１９】
図３に本発明によるメモリの一例の構成２１Ｅ〜２８Ｅを示す。このメモリ構成を有するノードをノードＡとする。符号２１Ｅはローカルメモリ上で本発明に用いられる範囲を示し、２２Ｅはローカルバッファを示し、２３Ｅは分散共有メモリを示す。分散共有メモリ２３Ｅは、符号２６Ｅで示すＭＢ毎に区切られており、ＭＢは各々自ノードから全てのネットワーク内の全ての（或いは、通信対象となる）ノード宛に分類され、例えばノードＡ＞ノードＢのＭＢ（複数あってもよい）にメッセージが書込まれると分散共有メモリカップラによりこのノードからノードＢにメッセージが送られる。ノードＢにおいても同様なメモリ構造がとられているので、ノードＢではノードＡ＞ノードＢに当該メッセージが書込まれる。２７Ｅは発信用のＭＢを示し、２６Ｅは受信用のＭＢを示す。このＭＢの構造は分散共有メモリを用いた通信の一例であり、本発明に必須の技術的事項ではないが、参考として記載したものである。符号２２Ｅで示すローカルバッファは一括転送単位に区切られ、ローカルバッファを介する各送信処理において一括転送単位は１個以上用いられ、複数個用いられる場合はその領域を更新しながら、例えば図中の矢印線のように順次更新しながら用いられる。ＡＰからの送信要求の際にＡＰから制御手段に通知されるメッセージサイズに基づいて、制御手段（ローカルバッファ管理機能）は当該送信で用いられるローカルバッファの容量を例えば図中二重線の範囲（２５Ｅ）のように予め決定できるので、ローカルバッファ全体２８Ｅの容量を無駄に確保することなく抑制することができる。
【００２０】
図４は、本発明の分散共有メモリを用いる通信装置の送信側におけるメッセージ通信方式を時間経過に従い説明する図である。符号３１Ａ、３１Ｅはノードを示し、３２Ａ，３２ＥはＡＰ層を示し、３３Ａ，３３Ｅは分散共有メモリ及び分散メモリカプラ層を示す。さらに、符号３４Ａ，３４Ｅはネットワークを示し、３１Ｂはローカルバッファを示し、３２Ｂはローカルバッファを用いる場合の分散メモリカプラを示し、３３Ｂはローカルバッファを用いる場合のネットワークを示す。まず、従来の送信を説明する。プロセスはメッセージ送信に先立ち分散共有メモリの書込み領域であるＭＢを確保する（ＯＳに通知し確保され、番地が返される）。プロセスで発生するメッセージは分散共有メモリ内の概番地で示されるＭＢに書込まれ、並行して分散メモリカプラがこれを取込みネットワークに送出する。受信側でメッセージの受信完了後、受信完了通知をＭＢ毎に送信側に返信し、送受ともに当該ＭＢを解放する。
【００２１】
ところで、プロセスで発生する実時間性の高いメッセージ３６Ｅは、大規模メッセージの送信３５Ｅが混在する場合、メッセージ３６Ｅが分散共有メモリに書込まれる間（３７Ｅ）は分散共有メモリーに書き込めず、メッセージ３７Ｅが書き込まれた後に書き込まれる（３８Ｅ）。その結果、時刻３１１Ｅでネットワーク上に送信される（３１０Ｅ）。ＯＳによる割込みを導入した場合、３５Ｅより優先度の高い３６Ｅが分散共有メモリに書き込む際は割込みにより３５Ｅを中断し、優先的に３６Ｅを書込む。この場合を示したのが３１Ｄと３２Ｄに分かれた大規模メッセージであり、実時間性の高いメッセージ（３１Ｃ）は、３２Ｃとして即時に分散共有メモリに書き込まれる。
【００２２】
この状況でいかにローカルバッファが用いられるかを以下に示す。プロセスは起動の際、転送メッセージの規模をローカルバッファ管理機能（図２ではローカルバッファを管理するＯＳの機能２２２Ｄ、これは分散共有メモリの管理機能を拡張したもの）に通知する。これは、プロセス起動の際でなく随時でも良い。プロセスからの送信のための分散共有メモリへの書込みに先立ち、ＭＢ確保をＯＳに通知するが、ＯＳは従来の分散共有メモリ上のＭＢ確保に代わりローカルバッファに一括転送単位を確保する（ＯＳ内の従来の該機能は、ローカルバッファ管理機能である）。一括転送単位の規模はローカルバッファ管理機能が先に通知されたメッセージ規模に応じて決定し、番地を返す。実時間性の高い場合は、実際には小規模メッセージの場合であるが、一括転送単位規模を０として、従来の経路と同様にメッセージ緩衝域は使用されず直接分散共有メモリに書込まれる（ローカルバッファ管理機能或いはＯＳが返す番地は従来通り分散共有メモリ上のＭＢ番地となる）。プロセスで発生する実時間性の高いメッセージ３１Ｃが発生と並行して３３Ａ及び３３Ｅの分散共有メモリ及び分散メモリカプラ層で処理されてネットワーク３４Ａに送出される。大規模メッセージの送信である一連のメッセージ３１Ｄと３２Ｄと混在すると、３３Ａ及び３３Ｅの分散共有メモリ及び分散メモリカプラ層で処理され並行してネットワーク３４Ａに送出されるが、ネットワーク上に送出されるメッセージ３６Ａは隘路となるネットワークにより、３１Ｃから発生してネットワーク上に送出されるメッセージの送信を妨げ、３１Ｃからのメッセージは本来時刻３８Ａからネットワーク上に送出されるところが、時刻３９Ａから送出される（メッセージ３７Ａ）。この遅延が、ローカルバッファの次の動作で解消されるので、その手法を説明する。尚、時間３１０Ａは一連のメッセージ３１Ｄと３２Ｄ用に割り当てられたローカルバッファに割り当てられた一括転送単位が満たされるまでの時間である。
【００２３】
実時間性の高いメッセージ３１Ｃと大規模メッセージの送信３１Ｄと３２Ｄとが混在すると、大規模メッセージの送信３１Ｄと３２Ｄは３１０Ａの時間はローカルバッファ３１Ｂに保留され時刻３９Ａからネットワーク上に送出されるため、実時間性の高いメッセージ３１Ｃは大規模メッセージの送信３１Ｄと３２Ｄのネットワーク送出に妨げられることなく、本来の送信時刻３８Ａにネットワーク上の送出が可能になる（３５Ａ）。これは、大規模メッセージはＭＢ確保の際、ローカルバッファ内の一括転送単位の番地をプロセスが得るので該番地に書込み、一括転送単位が一杯になるとこれをＯＳが検出し（例えば、分散メモリカプラのＭＢ書込み長計数機能を拡張しローカルバッファ書込み長を計数させ、一括転送単位が一杯になると割込みによりＯＳがそれを検出する）、分散共有メモリ書込み待ちになっている小規模メッセージ即ち一括転送単位規模が０のメッセージがあるかを判定し、あれば、大規模メッセージのローカルバッファ書込みを中断し、小規模メッセージの分散共有メモリ書込みを先に行い、終了後大規模メッセージのローカルバッファ書込みを再開する（既に大規模メッセージを全て書込み終わっていたら、他のメッセージの書込みを始める）、といった動作である。一括転送単位規模を大きく設定しておけば、大規模メッセージが分散共有メモリに書き込まれるまでの時間が長くなり、即ち、大規模メッセージの送信が保留されている問により多くの実時間メッセージを先行して送信することができる。
【００２４】
バッファ管理や分散共有メモリカプラの動作も含めた例の概要を３１Ｆ〜３１９Ｆに示す。符号３１Ｆはプロセッサモジュールを示し、３２Ｆはアプリケーション層（メッセージ送信を行うプロセス）、３３Ｆはローカルバッファ管理ノード、３４Ｆローカルバッファ、３５Ｆは分散共有メモリ、３６Ｆは分散メモリカプラ、３７Ｆはネットワークを示す。大規模メッセージ（３１８Ｆ）が先に送信要求し、その処理中に実時間メッセージ（３１９Ｆ）が送信要求した場合を示す。大規模メッセージについて送信要求された後、ローカルバッファの番地が示され、ローカルバッファに書込まれる（３８Ｆ）。この際一括転送単位で規定された領域が満杯となると、分散メモリカプラがそれを検出し（３１２Ｆ）、ローカルバッファ管理機能に通知し（３１３Ｆ）、実時間メッセージの送信要求があれば分散メモリカプラへの書込みを指示して送信要求しているプロセスから実時間メッセージの分散共有メモリへの書込みが開始される（３９Ｆ）。この書込みが終了すると、分散メモリカプラが終了を検出し（３１４Ｆ）しローカルバッファ管理機能に通知する。ローカルバッファ管理機能はローカルバッファに保留していた大規模メッセージ（３８Ｆによるもの）を分散共有メモリに書込み起動する（３１５Ｆ）。当該書込みが開始され（３１０Ｆ）、その書込みの完了を分散メモリカプラが検出すると（３１６Ｆ）、書込み完了をローカルバッファ管理機能に通知する。ローカルバッファ管理機能は、大規模メッセージの続きがある場合又は無い場合であっても新たなメッセージが大規模であれば、ローカルバッファへの管理を指示し（３１７Ｆ）、当該メッセージがローカルバッファに書込まれる（３１１Ｆ）。一方、小規模メッセージであれば、直接分散共有メモリへの書込みを指示する。これにより、実時間メッセージは送信処理開始から大規模メッセージの送信処理に妨げられることなく即時にネットワークに送信される。
【００２５】
図５は、本発明を適用した場合の分散共有メモリを用いる通信装置の受信側におけるメッセージ通信方式を説明する図である。本図においては矢印線で情報の流れと向きを示し、実線が通信されるメッセージを示し、破線が信号を示している。上段の符号４１Ｂ〜４６Ｂで示す部分は、本発明を用いない従来の分散共有メモリを用いる通信装置の受信側におけるメッセージ通信方式を説明する図である。４３Ｂは分散メモリカプラを示し、４４Ｂはプロセスを示し、４１Ｂはネットワークからのメッセージの到着を示している。大規模メッセージがネットワークに送出される場合、ネットワーク側への転送単位は分散メモリカプラの送出単位に細分されて送出されるので、４１Ｂの様に大規模メッセージが細分されて到着することになる。細分メッセージが到着すると直ちにプロセスが読み出せる状態でノード内のメモリの分散共有メモリとして割り当てられている領域に書き込まれ、プロセスは到着を認識し（４５Ｂ）、順にプロセスが読込み或いはプロセスが管理するメモリ領域に転写する等といった読出しを行う（４６Ｂ）。この際のプロセスの読出し処理は時間間隔４２Ｂで行われるが、ネットワーク側の転送単位或いは分散メモリカプラの送出単位に応じた、即ち、プロセス側とは無関係な単位に細分された単位を扱うためのプロセスの処理が、４２Ｂの間隔で必要になる。
【００２６】
図５の下段の符号４１Ａ〜４７Ａで示す図は、本発明を用いた場合の分散共有メモリを用いる通信装置の受信側におけるメッセージ通信方式を説明する図である。符号４３Ａは分散メモリカプラを示し、４４はローカルバッファ（その中の一括転送単位）を示し、４５Ａはプロセスを示し、４１Ａはネットワークからのメッセージの到着を示している。大規模メッセージがネットワークに送出される場合、ネットワーク側の転送単位或いは、分散メモリカプラの送出単位に細分されて送出されるので、４１Ａの様に大規模メッセージが細分されて到着することになる。細分メッセージが到着すると直ちにノード内のメモリの分散共有メモリとして割り当てられている領域に書き込まれるが（４８Ａ）、プロセスでは無くローカルバッファ（その中の一括転送単位）に一旦読み込まれる。一括転送単位が一杯になる（分散共有メモリにおいて対応するＭＢに相当する領域全てに書き込まれる）とプロセスにメッセージ到着が初めて通知され（４６Ａ）、プロセスが読出しを行う（４７Ａ）。一括転送単位の規模はプロセス〈或いはメッセージ特性〉に応じて決められており、ネットワークや分散メモリカプラ依存の細分単位でなく、プロセス側の特性による細分単位（大規模メッセージ規模を幾つかに区切った規模を想定）で（４２Ａ）プロセスが読み出す。従って、従来方式のようにネットワークや分散メモリカプラ依存の細分単位間隔（４２Ｂ）で、ネットワークや分散メモリカプラ依存の細分単位に応じた間隔でプロセスの処理起動の必要性が生じるのではなく、プロセスの処理の起動は、プロセス内のメッセージ処理時間等のプロセス側の特性によって決められる細分（大規模メッセージ規模を幾つかに区切った規模を想定）間隔（４２Ａ）で（即ち、４２Ｂより広い間隔で）、即ちプロセスに依存した細分単位に応じて行うことができる。これは、通信に先立ちプロセスがセＡ確保のためにＯＳに通知するメッセージ規模に応じて一括転送単位の規模がＯＳにより割当てられるので、この規模（時間の観点からは読出し間隔）を間接的にプロセスが決定することになるからである。
【００２７】
ローカルバッファ（１６Ｃ内、２４Ａ、２４Ｂ、３１Ｂ、４４Ｂ）は分散共有メモリ（２３Ａ、２３Ｂ）と対応した仮想番地が与えられており、ローカルバッファ管理機能２２２Ｄには仮想−実番地変換機能と、ローカルバッファに関するメッセージ直接アクセスコマンドが用意される。仮想番地によりメッセージ緩衝領はアプリケーションプログラム／ＯＳからあたかも分散共有メモリとしてアクセスされる。プロセスがある分散共有メモリ領域即ちＭＢに書込みを行うと、ローカルバッファ内に割り当てられた一括転送単位に書き込まれ、一括転送単位の全てのＭＢに書込みがなされると、分散メモリカプラ（２２Ｂ、２９Ｄ）やＯＳ（２５Ｄ）内で関連する分散共有メモリアクセス機能（例えば［１］等の機能）により分散共有メモリの当該範囲へ従来システムでプロセスがＤＳＭに対し書込みを行うのとほぼ同じ動作で書き込み更新することになるが、アプリケーションプログラム／ＯＳ或いはそのプロセスが直接書込みコマンドを発行すると、一括転送単位の全てのＭＢに書込みがなされなくても、一括転送単位により分散共有メモリの当該領域が上書きされる。
【００２８】
ここで、「仮想番地」とは、プロセスから見てローカルバッファを介する場合と介さない場合の何れの場合も同一のインタフェースとなるように設けるものであり、仮想番地を用いなくてもローカルバッファを導入することによる実時間メッセージの先行送信に関する処理は変わりなく行われるが、仮想番地を用いるとバッファ管理機能或いはＯＳからプロセスにより指定されるメモリ書込み番地は実番地ではなく仮想的な番地として指定される。一方、プロセスが書込む際は、書込み先として指定する番地を、バッファ管理機能或いはＯＳがバッファを介する場合はローカルバッファの番地に変換し、バッファを介さない場合には分散共有メモリの番地に変換して当該番地にメッセージを書込む。さらに、分散共有メモリを指定する場合は、仮想番地が実番地と同一となる適用方法もあり、この場合ローカルバッファの番地指定のみが仮想番地にて行われることになる。尚、分散共有メモリが全ノードで同一の番地を共有する仕組みである場合は、各ノードで実番地の代わりに仮想番地を用いて、実際の番地が各ノードで異なってもプロセス側からあたかも同一番地を共有しているように見えるようにすることも可能である。この仮想番地の付与手段は、ローカルバッファと分散共有メモリとが同一のローカルメモリ上にとられるなら、容易に本発明の仮想番地付与手段に用いることができるので、プロセスから見たインタフェースをローカルバッファを介するか否かにかかわらず容易に統一することができる。
【００２９】
読出しの場合も同様に、プロセスが分散共有メモリ領域即ちＭＢの読出しを行うとローカルバッファ内に割り当てられた一括転送単位の内容が読み出されるが、アプリケーションプログラム／ＯＳ惑いはそのプロセスが直接読出しコマンドを発行すると分散共有メモリの当該領域により一括転送単位が上書きされる。このメッセージ直接アクセスコマンドにより書込み／読出し各々において強制的に一括転送単位の内容と実分散共有メモリとの同期をとることができ、随時ローカルバッファ或いは実分散共有メモリは最新の状態に保つことが可能である。尚、分散共有メモリと同期をとり相手側にメッセージが到着し受信処理がなされる前に一括転送単位が後続のメッセージ内容により上書きされるのを防ぐため、ローカルバッファ内で一括転送単位はインクリメント即ち番地を更新しながら利用される。従って、一括転送単位のためには最大で、分散共有メモリ上に１ノード向けに取られる領域、即ち、１ノード向けのＭＢ領域程度を、確保することになる。例えば、大規模メッセージを送るプロセスが１種類なら、例えば２５６由のバッファを２５６面有している、等でも６４ＫＢで良い。しかし、大規模メッセージを送るプロセスにのみ割り当て、同時に送信がなされる場合にそのプロセスの数だけ割り当てれば良いので、分散共有メモリに比べても十分小さくて良い。従って、ローカルバッファの容量はメモリに比較して小さく、アプリケーションプログラムやＯＳに影響しない。
【００３０】
プロセスからの１回のメッセージ送信要求により１個のＭＢが利用されるので、ＭＢ規模を想定されるメッセージ規模に比べ必要以上に大きくするとＭＢ内で無駄に確保される部分が生じ分散共有メモリの使用率が低下する。そのため分散共有メモリのＭＢサイズは通常想定されるメッセージ規模にあわせて比較的小さく細分されており、またＭＢ管理の複雑化を避けるためＭＢ規模は何れも同一である。従って、例えば、大規模メッセージと小規模メッセージが混在する場合のために、ＭＢ規模に大小を設け、大規模メッセージの場合は大きなＭＢを用い、小規模メッセージの場合は小さなＭ８を用いるようにし、大きなＭＢを選択した場合は一時的に分散共有メモリヘの書込みを待たせる、といった方法で送信に優先度をつける方法は、ＭＢ管理の複雑化を招くことから望ましく無い。大規模メッセージ転送は一般に大きな実時間性を要求されないことが多く、ノード間制御メッセージのように小規模ではあるが実時間性の要求される高速転送と大規模メッセージ転送が混在すると、大規模メッセージ転送中において生じるネットワークでの送信待ちが実時間性の要求される高速転送を妨げることになる。図３では、大規模メッセージ３１Ｄがネットワークでの遅延により送信に時間３６Ｄを要するため、実時間性の高い小規模メッセージ３１Ｃの送信が３７Ａにまで延びている。一括転送単位の規模を送信するメッセージ規模を基にして設定しておくと、時間３１０Ａで一括転送単位が満たされるまで３１Ｄの送信は待つことになり、その間に３１Ｃが送信可能となり３５Ａで待つことなく送信される。受信側ではメッセージのある部分の到着により一括転送単位が満たされることになるため、メッセージのある部分の到着にあわせてＯＳの検出を契機に読み出しが行われることになる。
【００３１】
図５においては、従来では４２Ｂ間隔でプロセス４４Ｂがメッセージを読み込む処理を走行させる必要があり、しかも読込むサイズが分散共有メモリを用いる通信装置が１回で通信するメッセージ規模単位であったが、本発明により４２Ａ間隔で、即ちプロセス４５Ａは複数でメッセージ到着の間に１回の読み込む処理を走行させるだけで良く、さらに１回に読み込む規模は分散共有メモリを用いる通信装置が複数回で通信するサイズをあわせた規模となる。
【００３２】
図６〜図８は、本発明の一実施例を示す分散共有メモリを用いたプロセス間通信における優先度制御方式の共有メモリ書込み動作、或いは相手ノードヘの送信動作フローチャートである。システム構成要素は、ソフトウェアであるアプリケーションプログラム及びＯＳ（オペレーションシステム）と、ハードウェアであるローカルメモリ及び送信装置とに分けて記述している。アプリケーションプログラムは大規模メッセージを送るプロセスと、小規模メッセージを送るプロセスがある場合を示しており、ＯＳはローカルバッファ管理機能（ＢＡＭと略記）であり、ローカルメモリはローカルバッファ（ＢＡと略記）と分散共有メモリ（ＤＳＭと略記）からなり、送信装置は例えば分散メモリカプラを想定する。
【００３３】
図６〜図８では、最初に送信ノードにおいてあるプロセスがメッセージの送信要求を行った場合を示している。小規模メッセージの送信要求が先に行われると、ローカルバッファを介することなく直ちに送信される。即ち、判定“メッセージ規模＞境界”後は※３となり、ローカルバッファ及びその管理機能等の本発明による機構が無い場合の送信形態とほぼ同じになるため、小規模メッセージの送信要求が先に行われる場合は図６で兼ねている。尚、図６では、プロセスからの送信要求及びＯＳ（ローカルバッファ管理機能）がその要求を取出すキューの構造は少なくともプロセス名とメッセージ規模の情報を含むこととし、判定“メッセージ規模＞境界”での“境界”は、実時間メッセージとして扱うメッセージ規模の上限値を意味しており、この上限値は送信処理開姶に先立ちＯＳ（ローカルバッファ管理機能）において設定されている値であり、※３と※４を同一にする手法をとる場合もあり得る。
【００３４】
アプリケーションプログラム内のあるプロセスが大規模メッセージの送信要求をローカルバッファ管理機能に通知すると（図６では該プロセスを大規模メッセージプロセスと記述）、この通知にはメッセージ規模（生成されたデータサイズないしメッセージサイズ）が含まれており、プロセスからの送信要求待ちの状態であったローカルバッファ管理機能は、メッセージ規模が境界値を超えるかを判定し、超える場合は大規模メッセージとして扱うためメッセージ規模に基づきローカルバッファ内に割り当てる一括転送単位の規模（予め定めたバッファ容量）及び一括転送単位の番地を決定し、大規模メッセージプロセスに通知する。境界を超えない場合は小規模メッセージ即ち実時間メッセージとして扱い、図６※３から分散共有メモリ内のＭＢの番地を決定し小規模メッセージを送信要求したプロセス（小規模メッセージプロセスと記述）に通知し、該プロセスはメッセージをＭＢに書き込み、メッセージは分散メモリカプラにより書込みと並行して相手ノードの宛先プロセスへ送信され、ローカルバッファ管理機能はプロセスからの送信要求待ちの状態に戻る。大規模メッセージプロセスは通知された一括転送単位の番地にメッセージを書き込み、ローカルバッファでは該書込みが一括転送単位を一杯にするまで該メッセージの蓄積を続ける。一括転送単位規模は、プロセスから通知されたデータサイズに基づいて決定し、ローカルバッファ管理機能が決定した値を用いるが、分散メモリカプラではＭＢ内のデータ長が所定の規模に達したかどうか（一般のメッセージ送信装置でも同様に送信バッファに相当するバッファ内のデータ長が所定の規模に達したかどうか）を監視し、規模に達したらＯＳに対し通知する機能があり、ローカルバッファ管理機能が決定した一括転送単位規模を分散メモリカプラが参照できるメモリ領域に設定する。分散メモリカプラは、この値に、分散共有メモリと同じくローカルメモリ上にあるローカルバッファ内に書き込まれたデータ規模が、達したかどうかを監視し、一括転送単位一杯を検出すると、ローカルバッファ管理機能に割込みにより通知しローカルバッファ管理機能に制御が移り大規模メッセージプロセスはローカルバッファへの書込みを中断する。
【００３５】
尚、プロセスからローカルバッファ管理機能に通知したメッセージ規模（メッセージサイズ）が所定のデータ長すなわち境界を超えるか否かに基づいてローカルバッファを介して転送するか否かを判定しているが、例えば、プロセスからローカルバッファ管理機能に転送要求したメッセージを優先メッセージとして取り扱うか否かを示すコマンドやビット列をプロセスからローカルバッファ管理機能に通知することもできる。さらに、生成された転送すべきメッセージサイズが所定のデータ長を超えるか否かを判定する手段は、ローカルバッファ管理機能すなわち制御手段が有する場合だけでなく、プロセス自身が有することもできる。従って、プロセス自身が生成したメッセージをローカルバッファに書込むか又は直接分散共有メモリに転送するかを判断することもできる。
【００３６】
ローカルバッファに書込まれたデータを分散共有メモリに転送する一括転送単位の規模、すなわち所定のバッファ容量は、ローカルバッファ管理機能（制御手段）が生成されたメッセージサイズに基づいて決定することができ、前記境界値（所定のデータ長）から独立した値をとるが、前記境界値（所定のデータ長）に依存して決定することもでき、例えばデータ境界値（所定のデータ長）に等しい値に設定することも可能である。
【００３７】
図６〜図８中の＊１のステップは、ＯＳの持つ機能等により手法が異なる。図５〜図７では動作の表示が容易な場合を記述しており、大規模メッセージプロセスが書込みを中断した後はローカルバッファ管理機能は一定時間プロセスの送信要求待ちとなる。この時間内に送信要求のあったプロセスの中でメッセージ規模が境界値以下のメッセージを選択し、即ち、該メッセージは実時間メッセージと扱い、分散共有メモリ内のＭＢを割当てる。該ＭＢの番地を該メッセージを送信するプロセス（図５では小規模メッセージプロセス）に通知し、該プロセスは分散共有メモリ内の指定ＭＢにメッセージを書き込み、メッセージは分散メモリカプラにより書込みと並行して相手ノードの宛先プロセスへ送信される。小規模メッセージプロセスからの分散共有メモリへのメッセージ書込みが終了すると、ローカルバッファ管理機能は、ローカルバッファの一括転送単位に蓄積していた先の大規模メッセージを分散共有メモリに書き込み、メッセージは並行して相手ノードの宛先プロセスへ送信される。続いて、中断していた大規模メッセージプロセスの残りのメッセージがある場合は、大規模メッセージプロセスに続きのローカルバッファ書込みを指示し、無ければプロセスの送信要求待ちに戻る。
【００３８】
大規模メッセージのローカルバッファ書込みがあれば一括転送単位が一杯になるまで書込みが続けられ、一杯になると分散メモリカプラがそれを検出しローカルバッファ管理機能に割込みにより通知しローカルバッファ管理機能に制御が移り大規模メッセージプロセスはローカルバッファへの書込みを中断する。即ち図６の※２に戻る。ところで、図６の＊１は、上述の場合よりも下記の場合がより想定される。あるプロセスが送信処理用のプログラムやＯＳ等に送信メッセージを送っている最中に、ＯＳにおいてタイマ等により他のプロセスからの送信要求を受け付けるスケジューリングは一般的にＯＳが備えていることが想定され得る。この場合、大規模メッセージからのローカルバッファへのメッセージを書込み処理の最中、即ち図６〜図８の＊２において、他のプロセスからの送信要求がローカルバッファ管理機能に受け付けられ、このプロセスの中でメッセージ規模が境界値以下のメッセージを選択し、即ち、該メッセージは実時間メッセージと扱い、分散共有メモリ内のＭＢを割当てる。この後、上述の“［♯］”で示した箇所からの動作となる。尚、送信対象となるプロセスは、アプリケーションプロセスのみでなく、ＯＳ内のプロセスであっても動作は同様に行なわれる。
【００３９】
図６〜図８に示す実施例からも本発明の利点として次の（ｉ）〜（ｉｉｉ）が示される。（ｉ）所定のデータ容量の一括転送単位毎に一旦蓄積されることで大規模メッセージの送信はローカルバッファ内で待つことになり、その間に発生した小規模メッセージは大規模メッセージに先行して送られる。（ｉｉ）一括転送単位の規模が大きいと一杯になるまでの時間が長くなり、それだけ小規模メッセージが先行する率が増す。（ｉｉｉ）一括転送単位の規模はその大きさのみならず０か否かで実時間性の有無を示すことになり、優先度を一つのパラメータで制御できる。しかも、このパラメータ値は一度に送信するメッセージ規模により定められるため、アプリケーション側において優先度を間接的に制御できることになる。
【００４０】
図９は、本発明の一実施例を示す分散共有メモリを用いたプロセス問通信における優先度制御方式の共有メモリ読込み動作、或いは相手ノードからの受信動作フローチャートである。このフローの中、ａの２ステップはプロセスの到着メッセージ読込みに関するものであり、ｂの９ステップはプロセスから独立したローカルバッファ管理機能が行うバッファ内への読込み等に関するものである。
【００４１】
予めプロセス起動時或いは送信開始時に、プロセスから受信するメッセージ規模をＯＳ内のローカルバッファ管理機能（２２２Ｄ）に通知し、その値に基づきローカルバッファ管理機能が一括転送単位規模を決定する。送信ノードからメッヤージが到着し始めると到着と並行して分散共有メモリにメッセージが書き込まれ、ローカルバッファ管理機能に到着が通知され、ローカルバッファ管理機能がローカルバッファに分散共有メモリからメッセージを読み込み、一括転送単位規模に逢すると、規模に達したことと分散共有メモリに対応するＭＢの番地がローカルバッファ管理機能からプロセスに通知され、プロセスはメッセージが蓄積されているＭＢを指定し、指定されたＭＢに対応するローカルバッファの内容即ち一括転送単位が一括してプロセスに送られる。一括して送られる部分の実態は図７のｃのように繰返し動作になっても良いが、プロセスは一回の転送動作としてみなされる。一括転送単位が送られるとローカルバッファ管理機能は分散共有メモリから続きのメッセージを読み込むため一括転送単位の番地を更新する。ＭＢ内のメッセージが全てローカルバッファに読み込まれるまではローカルバッファへの読込みとプロセスヘの送付を繰返すが、ＭＢ内のメッセージ全てが読み込まれるとローカルバッファ管理機能の受信動作は終了する。
【００４２】
一括転送単位規模に達したことがローカルバッファ管理機能からプロセスに通知される以外に、プロセスが直接呼出しコマンド即ち、ローカルバッファ管理横能からの通知と無関係に一連の動作を開始する場合もある。これは、プロセス側からメッセージ読出しを自律的に指示することを可能にする。プロセスから分散共有メモリへの書込み動作、或いは相手プロセスへの送信動作はこれのほほ逆の動作と言える。尚、送信側と受信側はローカルバッファに関しては独立であり、送信例のみ或いは受信側のみに本機能を設定しても動作は可能で、かつ、各々で効果がある。送信側では、ネットワークが隘路になることで大規模メッセージにより実時間メッセージの送信が妨げられることを回避できるが、受信側では、これと似た状況の、分散共有メモリ間のメッセージを転送する装置から分散共有メモリへの書込み速度に対するプロセス側の読出し速度が隘路になることで生じる、大規模メッセージが実時間メッセージの受信を妨げる現象を回避できる。
【００４３】
本発明は上述した実施例だけに限定されず種々の変更や変形が可能である。例えば、大規模メッセージについても一括転送単位規模を０とする判定を行う論理を適用してもよく或いは適用しないこともできる。この判定基準を変更する等により実時間メッセージか否かの判定を適宜変更することは可能であり、常に小規模メッセージが実時間メッセージとして取り扱われることに限定されるものではなく、或いは小規模メッセージのみが実時間メッセージとして扱われることに限定されるものではない。
【００４４】
【発明の効果】
以上説明したように、本発明によれば、ローカルバッファの使用領域規模を指定するのみでプロセスの発生するメッセージの特性に応じてノード間通信の実時間性を確保することができるので、従来システムに、（ａ）バッファ（及びバッファからのＤＳＭ書込み命令）の追加、（ｂ）一括転送単位規模を通知するＡＰイーンタフエースの追加、（ｃ）ＤＭＣの送信メッセージ長計数処理をローカルバッファへ拡張する、程度の簡易な修正で、プロセスに依存せず同一の分散共有メモリを用いる通信装置によるノード間通信の実時間性を確保できるという効果がある。
【図面の簡単な説明】
【図１】本発明が適用される一般的な高速通信方式を用いたネットワークモデルの構成の配置と関係例を示すもので、特にＡＰないしはプロセスの通信装置に対するアクセス形態を示す図である。
【図２】本発明による分散共有メモリを用いる通信装置を有するノード及びネットワーク構成を示す図である。
【図３】メモリ構造の一例を示す線図である。
【図４】本発明による分散共有メモリを用いる通信装置の送信側における、メッセージ通信方式を時間経過に従い説明する図である。
【図５】分散共有メモリを用いる通信装置の受信側における、メッセージ通信方式を示す図である。
【図６】本発明による分散共有メモリを用いる通信装置の送信側における、ローカルバッファを用いる共有メモリ書込み動作、或いは相手プロセスへの送信動作フローチャートの一部を示す図である。
【図７】本発明による分散共有メモリを用いる通信装置の送信側における、ローカルバッファを用いる共有メモリ書込み動作、或いは相手プロセスへの送信動作フローチャートの一部を示す図である。
【図８】本発明による分散共有メモリを用いる通信装置の送信側における、ローカルバッファを用いる共有メモリ書込み動作、或いは相手プロセスへの送信動作フローチャートの一部を示す図である。
【図９】本発明による分敢共有メモリを用いる通信装置の受信側における、ローカルバッファを用いる共有メモリ読込み動作、或いは相手プロセスからの受信動作フローチャートである。
【符号の説明】
１１Ａ，１１Ｂ，１１Ｃ    通信装置
１２Ａ，１２Ｂ，１２Ｃ    ＯＳ類
１３Ａ，１３Ｂ，１３Ｃ，１５Ｃ    ＡＰ類
１４Ａ，１４Ｂ  従来方式によるアクセス形態
１４Ｃ  本発明によるアクセス形態
１６Ｃ    ローカルバッファ
２１Ａ，２１Ｂ，２８Ｄ    分散共有メモリ
２１Ｃ，２１１Ｄ    ネットワーク
２２Ａ，２２Ｂ，２９Ｄ    分散共有メモリ間のメッセージを転送する装置（分散メモリカプラ）
２３Ａ，２３Ｂ    ローカルメモリ
２４Ａ，２４Ｂ，２７Ｄ    ローカルバッファ
２５Ａ，２５Ｂ    プロセッサ
２６Ａ，２６Ｂ，２１Ｄ    ノード（プロセッサモジュール）
２７Ａ，２７Ｂ    共通路
２２Ｄ    ソフトウェア層
２３Ｄ    装置
２４Ｄ    アプリケーションプログラム
２５Ｄ    ＯＳ
２６Ｄ    ローカルメモリ
２１０Ｄ    メッセージバッファ（ＭＢ）
２１２Ｄ，２２０Ｄ    ネットワークに送出されたメッセージ
２１３Ｄ，２１４Ｄ    ２４Ｄで発生したメッセージ
２１５Ｄ    ２８Ｄに書込まれたメッセージ
２１３Ｄ，２１６Ｄ    分散メモリカプラが検出して自動的に取り込まれたメッセージ
２１３Ｄ，２１７Ｄ    ２７Ｄに書込まれるメッセージ
２１４Ｄ，２１８Ｄ  ２８Ｄに書込まれたメッセージ
２１４Ｄ，２１９Ｄ    分散メモリカプラが検出して自動的に取り込まれたメッセージ
２１４Ｄ，２２１Ｄ    一括転送単位
２２２Ｄ    ローカルバッファを管理するＯＳの機能（ローカルバッファ管理機能）
３１Ａ，３１Ｅ    プロセッサモジュール
３２Ａ，３２Ｅ    アプリケーション層
３３Ａ，３３Ｅ    分散共有メモリ及び分散メモリカプラ層
３４Ａ，３４Ｅ    ネットワーク
３５Ａ    本来の送信時刻にネットワーク上の送出が可能になった実時間性の高いメッセージ
３６Ａ，３９Ｅ    ネットワーク上に送出される大規模メッセージ
３７Ａ    ネットワークが隘路となり待ちが生じた実時間性の高いメッセージ
３８Ａ    実時間性の高いメッセ⊥ジの本来の送信時刻
３９Ａ    ネットワークが隘路となり待ちが生じた実時間性の高いメッセージの送信時刻
３１０Ａ    大規模メッセージがローカルバッファに保留される時間
３１Ｂ    ローカルバッファ、３２Ｂ…ローカルバッファを用いる場合の分散メモリカプラ
３３Ｂ    ローカルバッファを用いる場合のネットワーク
３１Ｃ，３６Ｅ    アプリケーションにおける実時間性の高いメッセージの送信
３１Ｄ，３２Ｄ，３５Ｅ    アプリケーションにおける大規模メッセージの送信
３７Ｅ    分散共有メモリに書込まれた大規模メッセージ
３８Ｅ    分散共有メモリに書込まれた実時間メッセージ
３１０Ｅ    大規模メッセージが分散共有メモリに書込まれるため待ちが生じたネットワーク上に送出された実時間性の高いメッセージ
３１１Ｅ    大規模メッセージが分散共有メモリに書込まれるため待ちが生じた実時間性の高いメッセージの送信時刻
４１Ａ    送信元ノードからのメッセージ到着間隔
４１Ｂ    送信元ノードからのメッセージ到着間隔
４２Ａ    メッセージの最初の到着通知からプロセスに読込まれるまでの間隔
４２Ｂ    メッセージの到着通知からプロセスに読込まれるまでの間隔、
４３Ａ    分散共有メモリを用いる通信装置内の分散共有メモリ
４３Ｂ    分散共有メモリを用いる通信装置内の分散共有メモリ
４４Ａ    ローカルバッファ
４４Ｂ，４５Ａ    プロセス
４５Ｂ    メッセージが到着するとその度ごとに分散共有メモリを用いる通信装置からプロセスに送られる送信到着通知
４６Ａ    一連のメッセニジの先頭が到着すると分散共有メモリを用いる通信装置からプロセスに送られる送信到着通知
４６Ｂ    分散共有メモリを用いる通信装置内の分散共有メモリからプロセスに読込まれるメッセージ
４７Ａ    ローカルバッファからプロセスに読み込まれるメッセージ
【図１】
2004362476.tif 000003
【図２】
2004362476.tif 000004
【図３】
2004362476.tif 000005
【図４】
2004362476.tif 000006
【図５】
2004362476.tif 000007
【図６】
2004362476.tif 000008
【図７】
2004362476.tif 000009
【図８】
2004362476.tif 000010
【図９】
2004362476.tif 000011