(57)【要約】【課題】同報通信における高速性の低下を防止しつつ、複雑な手順を軽減する。【解決手段】アプリケーションプログラム１ａ−１ａ〜１ａ−１ｎは、演算装置１ａ−２により実行されている際にデータを送信する場合、内部バス１ａ−４を介して、ノード内メモリ１ａ−３の中にある分散共有メモリ領域１ａ−３−１の所定のメモリ番地で示される領域に送信データを書き込む。ノード番地対応部１ａ−６は、バス１ａ−４上を流れるメモリ番地を読み込み、シフト／マスク等、演算、あるいはテーブルを参照することにより、メモリ番地に対応するノード番地に変換して出力する。転送制御装置１ａ−５は、バス１ａ−４上を流れる送信データ、メモリ番地、メモリ番地に対応するノード番地を、ノード番地宛のペイロードに書き込み、宛先ノード１ｂに送出する。【選択図】図１
2010147585.tif 000002
【特許請求の範囲】
【請求項１】
ネットワークなどの伝送手段に接続されたノード内に設けられたノード間データ転送制御装置により、他プロセスとの間のデータ転送を制御するデータ転送制御方法であって、
分散共有メモリ上の全て、あるいは所定の範囲内の各メモリ番地を、それぞれ、ネットワーク内のノードに一意に対応付けて分散共有メモリに記憶している状態で、
前記分散共有メモリのメモリ番地とノードとの対応付けの一意性を解除することを、自ノードを含む前記伝送手段で接続された１つ以上のプロセス、あるいはノードに対して、通知、あるいは設定する、
ことを特徴とするデータ転送制御方法。
【請求項２】
ネットワークなどの伝送手段に接続されたノード内に設けられたノード間データ転送制御装置により、他プロセスとの間のデータ転送を制御するデータ転送制御方法であって、
プロセスによって書き込み、及び読み出しが行われ、ネットワークに接続された複数のノード間データ転送制御装置でメモリ番地が仮想的、あるいは物理的に同一である分散共有メモリと、
メモリ番地が入力されると、該メモリ番地が含まれる前記分散共有メモリの領域と対応付けられたプロセスの存在するノード番地を出力するノード番地対応手段と、
前記分散共有メモリに書き込まれるデータを取得し、前記ノード番地を有するプロセス、あるいはノード宛てに前記取得したデータを送信する送信手段と、
前記ネットワークからデータを受信し、送信元プロセス、あるいはノードにおいて該データが書き込まれた前記分散共有メモリのメモリ番地に仮想的、あるいは物理的に同一のメモリ番地に該受信データを書き込む受信手段と
を備え、
前記分散共有メモリ上の全て、あるいは所定の範囲内の各メモリ番地を、それぞれ、ネットワーク内のノードに一意に対応付けている状態で、
前記分散共有メモリのメモリ番地とノードとの対応付けの一意性を解除することを、自ノードを含むネットワークなどの伝送手段で接続された１つ以上のプロセス、あるいはノードに対して、通知、あるいは設定する、
ことを特徴とするデータ転送制御方法。
【請求項３】
ネットワークなどの伝送手段に接続されたノード内に設けられたデータ転送制御装置により、他ノード、あるいは他プロセスとの間のデータ転送を制御するデータ転送制御方法であって、
各ノード、あるいは各ノードの各プロセスを、ノード内の分散共有メモリのある領域のメモリ番地と、物理的、あるいは仮想的に対応付け、
何れかのノード、あるいはプロセスが、あるノード、あるいはあるプロセスに対応付けられた、前記分散共有メモリのメモリ番地のメモリ領域にデータを書き込むと、
前記ネットワーク、あるいは内部バス等のデータ転送媒体を介して、前記あるノードの分散共有メモリ、あるいは、前記あるプロセスを含むノードの分散共有メモリの、前記メモリ番地に該データを書き込み、
全てのノード、あるいは全てのプロセスを１つ、あるいは複数のグループに区分し、各グループに対して、互いにグループを区別する識別子、あるいは識別手段を対応付け、
各グループに、グループに含まれるか含まれないかの何れかである、１つ以上の代表ノード、あるいは代表プロセスを、恒常的、あるいは一時的に定め、
何れかのグループに含まれる、１つ以上のノード宛、あるいはプロセス宛にデータを送信する場合に、該グループの前記代表ノード、あるいは前記代表プロセスに対応付けられた、前記分散共有メモリのメモリ番地のメモリ領域にデータを書き込む、
を含むことを特徴とするデータ転送制御方法。
【請求項４】
前記代表ノード、あるいは前記代表プロセスは、
受信したデータ、または、当該代表ノード、あるいは当該代表プロセスに対応付けられた、前記分散共有メモリのメモリ番地のメモリ領域に書き込まれたデータを、
該グループ内に存在する、指定されたノード、あるいは指定されたプロセスに対応付けられた、前記分散共有メモリのメモリ番地のメモリ領域に書き込む、
ことを特徴とする請求項３記載のデータ転送制御方法。
【請求項５】
前記代表ノード、あるいは前記代表プロセスは、
受信したデータ、または、当該代表ノード、あるいは当該代表プロセスに対応付けられた、前記分散共有メモリのメモリ番地のメモリ領域に書き込まれたデータを、
該グループ内に存在する、全てのノード、あるいは全てのプロセスに対応付けられた、前記分散共有メモリのメモリ番地のメモリ領域に書き込む、あるいは、
該グループ内に存在する、全てのノード、あるは全てのプロセスに、間接的に対応付けられた、前記分散共有メモリのメモリ番地のメモリ領域に書き込む、
ことを特徴とする請求項３記載のデータ転送制御方法。
【請求項６】
ネットワークなどの伝送手段に接続された複数のノード間、あるいは、複数のプロセス間のデータ転送を制御する際に、前記複数のノード、あるいは前記複数のプロセスがグループに区分され、各グループに代表ノード、あるいは代表プロセスを定めた、分散共有メモリを用いた通信システムであって、
各ノード、あるいは各プロセスは、
何れかのグループに含まれる１つ以上のノード、あるいはプロセス宛にデータを送信する場合に、該グループの前記代表ノード、あるいは前記代表プロセスに対応付けられた、前記分散共有メモリのメモリ番地のメモリ領域にデータを書き込み、
前記代表ノード、あるいは前記代表プロセスは、
受信したデータ、あるいは、当該代表ノード、あるいは当該代表プロセスに対応付けられた、前記分散共有メモリのメモリ番地のメモリ領域に書き込まれたデータを、当該グループ内に存在する、指定されたノード、あるいは指定されたプロセスに対応付けられた、前記分散共有メモリのメモリ番地のメモリ領域に書き込む、
ことを特徴とする通信システム。
【請求項７】
ネットワークなどの伝送手段に接続されたノード内に設けられ、他ノード、あるいは他プロセスとの間のデータ転送を制御するデータ転送制御装置であって、
各ノード、あるいは各ノードの各プロセスと記憶領域のメモリ番地とを、物理的、あるいは仮想的に対応付けて記憶する分散共有メモリと、
何れかのノード、あるいは何れかのプロセスが、あるノード、あるいはあるプロセスに対応付けられた、前記分散共有メモリのメモリ番地のメモリ領域にデータを書き込むと、前記ネットワーク、あるいは内部バス等のデータ転送媒体を介して、前記あるノードの分散共有メモリ、あるいは、前記あるプロセスを含むノードの分散共有メモリの、前記メモリ番地に該データを書き込む手段と、
全てのノード、あるいは全てのプロセスを１つ、あるいは複数のグループに区分し、各グループに対して、互いにグループを区別する識別子、あるいは識別手段を対応付ける手段と
各グループに、グループに含まれるか含まれないかの何れかである、１つ以上の代表ノード、あるいは代表プロセスを、恒常的、あるいは一時的に定める手段と、
何れかのグループに含まれる、１つ以上のノード宛、あるいはプロセス宛にデータを送信する場合に、該グループの前記代表ノード、あるいは前記代表プロセスに対応付けられた、前記分散共有メモリのメモリ番地のメモリ領域にデータを書き込む手段を
備えることを特徴とするデータ転送制御装置。
【請求項８】
前記代表ノード、あるいは前記代表プロセスは、
受信したデータ、または、当該代表ノード、あるいは当該代表プロセスに対応付けられた、前記分散共有メモリのメモリ番地のメモリ領域に書き込まれたデータを、
該グループ内に存在する、指定されたノード、あるいは指定されたプロセスに対応付けられた、前記分散共有メモリのメモリ番地のメモリ領域に書き込む、
ことを特徴とする請求項７記載のデータ転送制御装置。
【請求項９】
前記代表ノード、あるいは前記代表プロセスは、
受信したデータ、または、当該代表ノード、あるいは当該代表プロセスに対応付けられた、前記分散共有メモリのメモリ番地のメモリ領域に書き込まれたデータを、
該グループ内に存在する、全てのノード、あるいは全てのプロセスに対応付けられた、前記分散共有メモリのメモリ番地のメモリ領域に書き込む、あるいは、
該グループ内に存在する、全てのノード、あるは全てのプロセスに、間接的に対応付けられた、前記分散共有メモリのメモリ番地のメモリ領域に書き込む、
ことを特徴とする請求項７記載のデータ転送制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ノード内、あるいはノード間で分散共有メモリを用いてデータ転送を行うデータ転送制御方法、通信システム、及びデータ転送制御装置に関する。
【背景技術】
【０００２】
分散共有メモリを用いたノード間データ転送制御装置は、通常、ＬＡＮ（Local Area Network）、ＡＴＭ（Asynchronous Transfer Mode）、ＴＣＰ／ＩＰ（Transmission Control Protocol/Internet Protocol）、公衆ネットワーク、あるいは、バスや、配線等の既存の伝送方式、または媒体を利用して、これら伝送方式のネットワーク内のノード識別子を分散共有メモリ番地に対応付けることでデータ転送を行う。
【０００３】
このような分散共有メモリを用いたノード間データ転送制御装置を用いた通信では、ローカルメモリにデータを書き込むだけで宛先ノードに送信されるという簡易性を有し、さらに、メモリ解放通知を利用した送達確認が行われるので、少ない手順で一貫性を保った同報通信を行うことができ、通信処理機能や、ネットワークヘの負荷も小さくて済むという特徴がある（例えば、特許文献１参照）。
【０００４】
また、同報通信を行う場合、同報元のノードにおいて、同報先のノードの数だけのメモリ番地にデータを書き込んだり、同報元のノードから同報先のノードの数のデータを送出したりする必要がないので、より少ない数のデータ書込み、あるいは、より少ない数のデータ送出で済むという方式も知られている（例えば、特許文献２参照）。また、多くのノード間データ転送制御装置において、汎用的なマルチキャストを用いる技術も知られている（例えば、特許文献３参照）。
【０００５】
このような技術、すなわち、分散共有メモリを用いたノード間データ転送制御装置では、高速にデータを送信するため、伝送ネットワーク内に多量のデータが送出されて輻輳等を生じる可能性がある。
【非特許文献１】特開平１０−１３３９４１号公報
【非特許文献２】特開２００８−１５６１７号公報
【非特許文献３】特許第３５６２１２１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
上述したように、分散共有メモリを用いたノード間データ転送制御装置では、通常、ＬＡＮ、ＡＴＭ、ＴＣＰ／ＩＰ等の既存の伝送方式を利用して、これら伝送方式のネットワーク内のノード番地（ＩＰアドレス等を指すが、ＩＰアドレスでなくてもネットワーク内でノードを識別する識別子であれば良い）を分散共有メモリ番地に対応付けることで、データ転送を行う。
【０００７】
ところで、分散共有メモリ通信においては、メモリを用いていることから、メモリ領域の一貫性を維持した上で（排他制御のように、不要な上書きを避ける必要性がある）、分散共有メモリを用いて同報通信を行おうとすると、ネットワーク、あるいは、分散共有メモリ機構に複雑な手順が必要になり、ノードの通信処理機能や、ネットワークなどに大きな負荷が生じる。そこで、同報通信において、複雑な手順を軽減する必要性が生じ、前述したように、データ送出量を抑制する技術が存在する（特許文献２、３）。
【０００８】
しかしながら、分散共有メモリを用いたノード間データ転送制御装置に汎用的な伝送ネットワークを適用すると、多くの場合、汎用的なネットワークが階層構造を有しているため、分散共有メモリを用いたノード間データ転送制御装置の特徴である高速性が、必ずしも十分活用されない場合がある。
【０００９】
これは、処理を複雑化することによるデータ送出から受信までの時間であるレイテンシの増大、あるいは、他の処理による圧迫等を抑制する必要があることを意味する。例えば、国内の全携帯電話を対象に、現在の電子メールの使用状況で５年間メールを上書きすることなく保存することは、３２ビットメモリ空間でも十分であるが、より使用状況の規模が大きな状況に適用するには、３２ビットメモリ空間では不足することが考えられる。
【００１０】
このように、従来技術では、同報通信における高速性を損なうことなく、複雑な手順を軽減することができないという問題があった。
【００１１】
本発明は、このような事情を考慮してなされたものであり、その目的は、同報通信における高速性の低下を防止しつつ、複雑な手順を軽減することができるデータ転送制御方法、通信システム、及びデータ転送制御装置を提供することにある。
【課題を解決するための手段】
【００１２】
上述した課題を解決するために、本発明は、ネットワークなどの伝送手段に接続されたノード内に設けられたノード間データ転送制御装置により、他プロセスとの間のデータ転送を制御するデータ転送制御方法であって、分散共有メモリ上の全て、あるいは所定の範囲内の各メモリ番地を、それぞれ、ネットワーク内のノードに一意に対応付けて分散共有メモリに記憶している状態で、前記分散共有メモリのメモリ番地とノードとの対応付けの一意性を解除することを、自ノードを含む前記伝送手段で接続された１つ以上のプロセス、あるいはノードに対して、通知、あるいは設定する、ことを特徴とするデータ転送制御方法である。したがって、メモリ番地と宛先プロセスの番地とが対応付けられて、メモリ番地に対応したノード番地を有する相手プロセスに転送されるため、簡易な転送手順やシステム構造を利用して、少ない手順でデータ送信を可能にすることにより、同報通信における高速性の低下を防止しつつ、複雑な手順を軽減することができる。
【００１３】
上述した課題を解決するために、本発明は、ネットワークなどの伝送手段に接続されたノード内に設けられたノード間データ転送制御装置により、他プロセスとの間のデータ転送を制御するデータ転送制御方法であって、プロセスによって書き込み、及び読み出しが行われ、ネットワークに接続された複数のノード間データ転送制御装置でメモリ番地が仮想的、あるいは物理的に同一である分散共有メモリと、メモリ番地が入力されると、該メモリ番地が含まれる前記分散共有メモリの領域と対応付けられたプロセスの存在するノード番地を出力するノード番地対応手段と、前記分散共有メモリに書き込まれるデータを取得し、前記ノード番地を有するプロセス、あるいはノード宛てに前記取得したデータを送信する送信手段と、前記ネットワークからデータを受信し、送信元プロセス、あるいはノードにおいて該データが書き込まれた前記分散共有メモリのメモリ番地に仮想的、あるいは物理的に同一のメモリ番地に該受信データを書き込む受信手段とを備え、前記分散共有メモリ上の全て、あるいは所定の範囲内の各メモリ番地を、それぞれ、ネットワーク内のノードに一意に対応付けている状態で、前記分散共有メモリのメモリ番地とノードとの対応付けの一意性を解除することを、自ノードを含むネットワークなどの伝送手段で接続された１つ以上のプロセス、あるいはノードに対して、通知、あるいは設定する、ことを特徴とするデータ転送制御方法である。したがって、メモリ番地と宛先プロセスの番地とが対応付けられて、メモリ番地に対応したノード番地を有する相手プロセスに転送されるため、簡易な転送手順やシステム構造を利用して、少ない手順でデータ送信を可能にすることにより、同報通信における高速性の低下を防止しつつ、複雑な手順を軽減することができる。
【００１４】
上述した課題を解決するために、本発明は、ネットワークなどの伝送手段に接続されたノード内に設けられたデータ転送制御装置により、他ノード、あるいは他プロセスとの間のデータ転送を制御するデータ転送制御方法であって、各ノード、あるいは各ノードの各プロセスが、ノード内の分散共有メモリのある領域のメモリ番地と、物理的、あるいは仮想的に対応付けられ、何れかのノード、あるいはプロセスが、あるノード、あるいはあるプロセスに対応付けられた、前記分散共有メモリのメモリ番地のメモリ領域にデータを書き込むと、前記ネットワーク、あるいは内部バス等のデータ転送媒体を介して、前記あるノードの分散共有メモリ、あるいは、前記あるプロセスを含むノードの分散共有メモリの、前記メモリ番地に該データを書き込み、全てのノード、あるいは全てのプロセスを１つ、あるいは複数のグループに区分し、各グループに対して、互いにグループを区別する識別子、あるいは識別手段を対応付け、各グループに、グループに含まれるか含まれないかの何れかである、１つ以上の代表ノード、あるいは代表プロセスを、恒常的、あるいは一時的に定め、何れかのグループに含まれる、１つ以上のノード宛、あるいはプロセス宛にデータを送信する場合に、該グループの前記代表ノード、あるいは前記代表プロセスに対応付けられた、前記分散共有メモリのメモリ番地のメモリ領域にデータを書き込む、ことを特徴とするデータ転送制御方法である。したがって、大規模な分散共有メモリ全体を対象とせず、限定された領域のみを対象として、通信処理を行うことができ、同報通信における高速性の低下を防止しつつ、複雑な手順を軽減することができる。
【００１５】
本発明は、上記の発明において、前記代表ノード、あるいは前記代表プロセスは、受信したデータ、または、当該代表ノード、あるいは当該代表プロセスに対応付けられた、前記分散共有メモリのメモリ番地のメモリ領域に書き込まれたデータを、該グループ内に存在する、指定されたノード、あるいは指定されたプロセスに対応付けられた、前記分散共有メモリのメモリ番地のメモリ領域に書き込む、ことを特徴とする。
【００１６】
本発明は、上記の発明において、前記代表ノード、あるいは前記代表プロセスは、受信したデータ、または、当該代表ノード、あるいは当該代表プロセスに対応付けられた、前記分散共有メモリのメモリ番地のメモリ領域に書き込まれたデータを、該グループ内に存在する、全てのノード、あるいは全てのプロセスに対応付けられた、前記分散共有メモリのメモリ番地のメモリ領域に書き込む、あるいは、該グループ内に存在する、全てのノード、あるは全てのプロセスに、間接的に対応付けられた、前記分散共有メモリのメモリ番地のメモリ領域に書き込む、ことを特徴とする。
【００１７】
また、上述した課題を解決するために、本発明は、ネットワークなどの伝送手段に接続された複数のノード間、あるいは、複数のプロセス間のデータ転送を制御する際に、前記複数のノード、あるいは前記複数のプロセスがグループに区分され、各グループに代表ノード、あるいは代表プロセスを定めた、分散共有メモリを用いた通信システムであって、各ノード、あるいは各プロセスは、何れかのグループに含まれる１つ以上のノード、あるいはプロセス宛にデータを送信する場合に、該グループの前記代表ノード、あるいは前記代表プロセスに対応付けられた、前記分散共有メモリのメモリ番地のメモリ領域にデータを書き込み、前記代表ノード、あるいは前記代表プロセスは、受信したデータ、あるいは、当該代表ノード、あるいは当該代表プロセスに対応付けられた、前記分散共有メモリのメモリ番地のメモリ領域に書き込まれたデータを、当該グループ内に存在する、指定されたノード、あるいは指定されたプロセスに対応付けられた、前記分散共有メモリのメモリ番地のメモリ領域に書き込む、ことを特徴とする通信システムである。したがって、大規模な分散共有メモリ全体を対象とせず、限定された領域のみを対象として、通信処理を行うことができ、同報通信における高速性の低下を防止しつつ、複雑な手順を軽減することができる。
【００１８】
また、上述した課題を解決するために、本発明は、ネットワークなどの伝送手段に接続されたノード内に設けられ、他ノード、あるいは他プロセスとの間のデータ転送を制御するデータ転送制御装置であって、各ノード、あるいは各ノードの各プロセスと記憶領域のメモリ番地とを、物理的、あるいは仮想的に対応付けて記憶する分散共有メモリと、何れかのノード、あるいは何れかのプロセスが、あるノード、あるいはあるプロセスに対応付けられた、前記分散共有メモリのメモリ番地のメモリ領域にデータを書き込むと、前記ネットワーク、あるいは内部バス等のデータ転送媒体を介して、前記あるノードの分散共有メモリ、あるいは、前記あるプロセスを含むノードの分散共有メモリの、前記メモリ番地に該データを書き込む手段と、全てのノード、あるいは全てのプロセスを１つ、あるいは複数のグループに区分し、各グループに対して、互いにグループを区別する識別子、あるいは識別手段を対応付ける手段と、各グループに、グループに含まれるか含まれないかの何れかである、１つ以上の代表ノード、あるいは代表プロセスを、恒常的、あるいは一時的に定める手段と、何れかのグループに含まれる、１つ以上のノード宛、あるいはプロセス宛にデータを送信する場合に、該グループの前記代表ノード、あるいは前記代表プロセスに対応付けられた、前記分散共有メモリのメモリ番地のメモリ領域にデータを書き込む手段を備えることを特徴とするデータ転送制御装置である。したがって、大規模な分散共有メモリ全体を対象とせず、限定された領域のみを対象として、通信処理を行うことができ、同報通信における高速性の低下を防止しつつ、複雑な手順を軽減することができる。
【００１９】
本発明は、上記の発明において、前記代表ノード、あるいは前記代表プロセスは、受信したデータ、または、当該代表ノード、あるいは当該代表プロセスに対応付けられた、前記分散共有メモリのメモリ番地のメモリ領域に書き込まれたデータを、該グループ内に存在する、指定されたノード、あるいは指定されたプロセスに対応付けられた、前記分散共有メモリのメモリ番地のメモリ領域に書き込む、ことを特徴とする。
【００２０】
本発明は、上記の発明において、前記代表ノード、あるいは前記代表プロセスは、受信したデータ、または、当該代表ノード、あるいは当該代表プロセスに対応付けられた、前記分散共有メモリのメモリ番地のメモリ領域に書き込まれたデータを、該グループ内に存在する、全てのノード、あるいは全てのプロセスに対応付けられた、前記分散共有メモリのメモリ番地のメモリ領域に書き込む、あるいは、該グループ内に存在する、全てのノード、あるは全てのプロセスに、間接的に対応付けられた、前記分散共有メモリのメモリ番地のメモリ領域に書き込む、ことを特徴とする。
【発明の効果】
【００２１】
この発明によれば、同報通信における高速性の低下を防止しつつ、複雑な手順を軽減することができるという利点が得られる。
【発明を実施するための最良の形態】
【００２２】
本発明は、全てのノード（あるいは、プロセス）がグループに区分され、各グループに代表ノード（あるいは、プロセス）が定められた、分散共有メモリを用いた通信システムにおいて、各ノード（あるいは、プロセス）は、何れかのグループに含まれる１個以上のノード（あるいは、プロセス）宛にデータを送信する場合に、該グループの代表ノード（あるいは、プロセス）と対応付けられた番地のメモリ領域にデータを書き込む。
【００２３】
また、代表ノード（あるいは、プロセス）は、受信したデータ或いは、該代表ノード（あるいは、プロセス）に対応付けられた番地のメモリに書き込まれたデータを、当該グループ内に存在する、指定されたノード（あるいは、プロセス）に対応付けられた番地のメモリ領域に書き込む。
【００２４】
上述した手順により、本発明によれば、大規模なネットワークであっても、分散共有メモリの限定された領域のみを対象として通信処理を行うことができ、レイテンシの小さな通信が可能となる。また、階層構造を持つネットワークであっても、メモリとノードの対応付けを容易に行うことができる。
【００２５】
以下、本発明の一実施形態を、図面を参照して詳細に説明する。
【００２６】
図１は、本発明の実施形態によるデータ転送制御装置の構成を示すブロック図である。図において、複数のアプリケーションプログラム（ＡＰＰ）１ａ−１ａ〜１ａ−１ｎは、後述する演算装置１ａ−２によって実行される。なお、複数のアプリケーションプログラム（ＡＰＰ）１ａ−１ａ〜１ａ−１ｎは、プログラムに限定されることなく、プログラムにより実行されるプロセスを示す。また、アプリケーションプログラムで代表しているが、ＯＳ（Operating System）、あるいはミドルウェア、ライブラリなどであってもよい。
【００２７】
演算装置１ａ−２は、上記複数のアプリケーションプログラム（ＡＰＰ）１ａ−１ａ〜１ａ−１ｎの少なくとも１つを実行する。ノード内メモリ１ａ−３は、分散共有メモリ領域（データバッファ）１ａ−３−１を有し、実行されているアプリケーションプログラム１ａ−１ａ〜１ａ−１ｎが外部へ送信する送信データを、該分散共有メモリ領域１ａ−３−１の所定のメモリ番地で示される領域に格納する。分散共有メモリ領域１ａ−３−１は、メモリ番地１ａ−３−１ａ〜１ａ−３−１ｎを有し、図示はしていないが、送信データ領域、送信要求データ領域、識別データ領域に分割されている。
【００２８】
ノード番地対応部１ａ−６は、ノード番地とメモリ番地の関係を対応づける手段であり、対応が記録されたテーブルを用いることにより、あるいはビットのシフトやマスク、あるいは演算により、メモリ番地とノード番地を対応付ける機能を有し、入力されたメモリ番地をノード番地に変換する。通常、メモリ番地が決まれば、ノード番地は一意に決まるが、これに限定されるものではなく、複数のノード番地を出力するか、あるいは、ノード番地に対応付け可能な何らかの識別子を出力するものであってもよい。なお、図１において、ノード番地対応部１ａ−６は、バス１ａ−４、あるいは転送制御装置１ａ−５のいずれか一方、あるいは双方に接続されていても構わない。
【００２９】
分散共有メモリ管理部１ａ−９は、メモリ番地１ａ−３−１ａ〜１ａ−３−１ｎや、送信データ長を含む識別データと該識別データの番地を含む送信要求データとを生成し、各々、ノード内メモリ１ａ−３の分散共有メモリ内の送信要求データ領域と識別データ領域に書き込む。なお、分散共有メモリ管理部１ａ−９は、演算装置１ａ−２内に設けられているように示しているが、通常は、ＯＳ内部の機能、あるいは、ノード１ａの主演算装置でなくても分散共有メモリ管理を実行するノード内の他演算装置と該演算装置１ａ−２に付随する記憶領域に置かれて実行される機能であり、他の位置に置かれてもよい。
【００３０】
転送制御装置１ａ−５は、バス１ａ−４上を流れる送信対象データ、メモリ番地、及びノード番地対応部１ａ−６から出力されるノード番地を取得し、該ノード番地宛の送信用ペイロードに送信データとメモリ番地とを書き込み、宛先ノードに送出する。
【００３１】
ここで、上記ノード番地対応部１ａ−６の機能についてより詳細に説明する。
分散共有メモリ領域１ａ−３とノード番地対応部１ａ−６とは、仮想的には全ノードの対が存在する。すなわち、ノード数が３台（Ａ、Ｂ、Ｃとする）の場合、分散共有メモリ領域１ａ−３には、Ａ発Ａ宛領域、Ａ発Ｂ宛領域、Ａ発Ｃ宛領域、Ｂ発Ｂ宛領域、Ｂ発Ｃ宛領域、Ｂ発Ａ宛領域、Ｃ発Ａ宛領域、Ｃ発Ａ宛領域、Ｃ発Ｂ宛領域が存在する。
【００３２】
ノード番地対応部１ａ−６は、これら全てに対応し、Ａ発Ａ宛領域のメモリ番地を、ノードＡのネットワーク番地（例えば、ＩＰネットワークを用いる場合には、ノードＡのＩＰアドレス）に変換し、Ａ発Ｂ宛領域のメモリ番地を、ノードＢのネットワーク番地（例えば、ＩＰネットワークを用いる場合には、ノードＢのＩＰアドレス）に変換し、Ａ発Ｃ宛領域のメモリ番地を、ノードＣのネットワーク番地（例えば、ＩＰネットワークを用いる場合には、ノードＣのＩＰアドレス）に変換し、以下同様に、例えば、Ｃ発Ｂ宛領域のメモリ番地を、ノードＢのネットワーク番地（例えば、ＩＰネットワークを用いる場合には、ノードＢのＩＰアドレス）に変換する。なお、例えば、特に用途が無ければ、Ｃ発Ｂ宛領域等は実装しなくて良い。しかし、実際の動作上で不要な部分は、仮想番地を用いて省略されて実装される。
【００３３】
図２は、本実施形態によるノードが通信を行う際の動作を説明するためのブロック図である。上述した構成によれば、アプリケーションプログラム１ａ−１ａ〜１ａ−１ｎは、演算装置１ａ−２により実行されている際にデータを送信する場合、内部バス１ａ−４を介して、ノード内メモリ１ａ−３の中にある分散共有メモリ領域（データバッファ）１ａ−３−１の所定のメモリ番地で示される領域に送信データを書き込む。例えば、メモリ番地１ａ−３−１ａで示される領域にデータを書き込むとすると、ノード番地対応部１ａ−６がバス１ａ−４上を流れる上記メモリ番地１ａ−３−１ａを読み込み（ステップＳ１）、シフト／マスク等、演算、あるいはテーブルを参照することにより、メモリ番地１ａ−３−１ａに対応するノード番地に変換し（ステップＳ２）、該ノード番地を出力する（ステップＳ３）。
【００３４】
転送制御装置１ａ−５は、バス１ａ−４上を流れる送信データ、メモリ番地、及びノード番地対応部１ａ−６から出力される上記メモリ番地に対応するノード番地を取得し、該ノード番地宛の送信用ペイロードに送信データとメモリ番地とを書き込む。
【００３５】
分散共有メモリ管理１ａ−９は、メモリ番地や、送信データ長を含む識別データと識別データの番地を含む送信要求データとを生成し、それぞれ分散共有メモリ領域１ａ−３−１内の送信要求データ領域と識別データ領域に書き込む。転送制御装置１ａ−５は、送信要求データと識別データとの双方を、取得済みのノード番地宛のペイロードに書き込み、宛先ノードであるノード（図示の例では、ノード１ｂ）に送出する。
【００３６】
一方、受信側のノード１ｂでは、受信転送制御装置１ｂ−５が、ノード１ａの転送制御装置１ａ−５からのペイロードを受信し、受信した送信要求データを自ノードの分散共有メモリ領域１ｂ−３−１のキューを構成する送信要求データ受信領域に書き込み、識別データと送信データとを、ペイロードに書き込まれているメモリ番地に書き込む。こうして、識別データと送信データは、送信元のノード１ａのメモリ１ａ−３上の同一データと同じメモリ番地に書かれることになる。
【００３７】
そして、ＯＳ（あるいは、アプリケーションプログラムや、ミドルウェアなど、受信ノード１ｂの演算装置１ｂ−２で実行されるプロセス）が、受信した送信要求データのキューから送信要求を読み、書き込まれた識別データのメモリ番地を読み、識別データに書かれた送信データのメモリ番地から始まるメモリ領域を、識別データに書かれた送信データ長をだけ読み取る。この結果、ノード１ａからノード１ｂへの通信が行われる。送信順序は、送信要求データが最後になるようにする。
【００３８】
受信側のノード１ｂで受信対象のアプリケーションプログラムが送信データを読めば、ＯＳが該メモリ領域を解放する通知を、データを送信したノード１ａに応答として送信する（受信側のノード１ｂ内の分散共有メモリ領域１ｂ−３−１上の、送信元のノード１ａに対応したデータバッファ領域に書き込む）。
【００３９】
送信元のノード１ａにおいてデータが書き込まれたメモリ番地は、データと共にペイロードに格納されて受信先のノード１ｂに送られる。
【００４０】
次に、図３及び図４は、本実施形態におけるネットワークの構成例を示すブロック図である。図３に示すネットワークは、２階層の例で示していて、階層間の接続のために、分散共有メモリによるデータ転送機能を有するノードを用いておらず、ノード１ａ、１ｂ、…、１ｍ、ならびに、ノードｓａ、ｓｂ、…、ｓｎの上位層に分散共有メモリによるデータ転送機能を有するノードが存在しない例である。
【００４１】
また、図４に示すネットワークは、階層間の接続のために、分散共有メモリによるデータ転送機能を有するノード１ａ、１ｓを用いている。上位層に分散共有メモリによるデータ転送機能を有するノードが存在しても、手段は同様であるので、本図を用いて説明することとする。なお、本実施形態の説明において、特に断らない限り、ノードとは、分散共有メモリによるデータ転送機能を有するノードであることを意味する。
【００４２】
また、送信データの送出元は、通常、ノードの構成要素であるプロセッサモジュール内のプロセス（アプリケーションプログラムや、ＯＳの処理の単位、プログラム自体など）であり、１プロセッサモジュール内に１個または複数のプロセスが同時に存在し、１ノード内には、１個または複数のプロセッサモジュールが存在するが、説明を簡単にするため、１ノードには１個のプロセスが存在しているとする。
【００４３】
したがって、あるプロセス宛に送信するとは、そのプロセスが存在するノード宛に送信することと同義であり、あるプロセス向けに領域を割り当てるとは、そのプロセスが存在するノード宛に領域を割り当てると同義である。特に断らない限り、この用途の表記にはノードを用いる。あるプロセスが、そのプロセスの存在するノード内の別のプロセス（あるいは、自プロセス）宛にデータ送ることもあるので、自ノード宛にデータを送る、といったこともあり得る。
【００４４】
また、あるノードに対応付けられたメモリ領域は、便宜上、１つの領域のように図示するが、実際には、１つ以上、あるいは複数の領域が割り当てられており、一度の送受信に複数の領域を用いることもある。
【００４５】
次に、図５（ａ）〜（ｆ）は、各ノードに対応する分散共有メモリの構造を示す概念図である。図５（ａ）には、ネットワークが図３に示す構成の場合における、従来技術による、ノード１ａにおけるローカルメモリの中の、分散共有メモリ用に割り当てられた領域のうち、送信用に用いられる領域が示されている。受信用の領域は、図５（ａ）の逆向きの割り当てのものが存在する。図５（ａ）において、斜体字は、その領域の対応するノードを示す（その領域に書かれているデータを意味するのではない）。
【００４６】
例えば、プロセスによって１ａ→１ｂと書かれた領域に書き込まれたデータは、ノード１ｂに対応付けられたネットワーク番地に向けて送信されることを意味する。また、ノード１ｂから１ａに向けて送信されたデータは、ノード１ａにおいて、１ｂ→１ａの領域に書き込まれ、プロセスがその領域を読み取る（受信用の領域は、図５（ａ）では省略してある）。このような従来技術では、上位層、下位層の全てに属するノード宛に対応するメモリ領域を必要とし、その規模の増大のみならず、検索処理の時間の増大等も生じ得る。
【００４７】
これに対して、本実施形態では、各下位層のノード集合を代表するノードを、下位層毎に１台設定しておく。代表ノードは、ネットワークの初期化時点で設け、恒常的な設定とする場合もあるが、初期化以降に設ける方法もあり得る。例えば、分散共有メモリの一意性解除のための処理（後述する）の時点で、解除通知と併せて、特定のノードに代表ノードと設定することを通知するように、一時的な設定の場合もあり得る。
【００４８】
図３に示すネットワーク構成において、ノード１ａ〜１ｍを代表するノードをノード１ａと設定し、ノードｓａ〜ｓｎを代表するノードをノードｓａと設定した場合について説明する（下位層のノード集合は、他にも多数存在し得るが、同様である）。ノードｓａにおけるローカルメモリの中の、分散共有メモリ用に割り当てられた領域のうち、送信用に用いられる領域は、通常、図５（ａ）に示すように構成される。プロセスがノード１ｂに送信する場合には、メモリ番地ｒｐにデータを書き込み、メモリ番地ｒｐがバス上を流れるため、図５（ｃ）に示すテーブルを有するノード番地対応部１ａ−６により「ｒ２」がノード１ｂのネットワーク番地（ＩＰネットワークの場合には、ノード１ｂのＩＰアドレス）に変換され、ネットワークに送出される。
【００４９】
本実施形態においては、ノード番地対応部１ａ−６が図５（ｄ）に示すように構成されたテーブルを有し、メモリ番地ｒｐに書かれたデータは、ノード１ａのネットワーク番地に変換されるため、ノード１ａに向けて送出される。
【００５０】
図５（ｂ）には、本実施形態において、分散共有メモリ用に割り当てられた領域のうち、送信用に用いられる領域が示されているが、鎖線で示した部分は、斜体で示したノードヘは実際には送信されず、代表ノードヘ送信されることを示す。
【００５１】
図５（ｅ）は、代表ノードのみに追加的に設定されるノード番地対応部１ａ−６の例であり、ノード１ａの場合を示している。なお、このように、従来技術（図５（ａ）、（ｃ）、（ｅ））では、分散共有メモリのメモリ番地とノードとの対応が一意であったが、本実施形態（図５（ｂ）、（ｄ）、（ｆ））では、その一意性を解除する、あるいは、解除しておく必要がある。
【００５２】
したがって、本実施形態を適用する範囲の分散共有メモリの領域について（分散共有メモリの全域の場合もあり得る）、送信元ノード、あるいは、ネットワークのオペレータ（あるいはネットワーク管理システム）から、対象となるノードに、一意性解除通知を送る、あるいは、ネットワークのオペレータ（あるいはネットワーク管理システム）が対象となるノードの分散共有メモリの一意的な構成を解除する設定を行う。
【００５３】
ここで、図６は、本実施形態によるノードの受信処理を説明するためのフローチャートである。受信側のノード１ｂでは、受信転送制御装置１ｂ−５が、ノード１ａの転送制御装置１ａ−５からのペイロードを受信し（ステップＳ１０）、ペイロード内に格納されたメモリ番地が自ノード宛のメモリ番地か否かを判定する（ステップＳ１１）。そして、自ノード宛のメモリ番地である場合には、メモリ番地をペイロードから取得し、自ノードメモリの該当番地に書き込む（ステップＳ１２）。次に、プロセスが送信要求をキューから読み出し、識別データを用いて、受信データが書き込まれたメモリ番地からデータを読み出す（ステップＳ１３）。
【００５４】
例えば、ノード１ａでは、ノード１ｂ宛のデータを受信するが、ペイロードには送信元で書き込まれた分散共有メモリの番地（ｒｐ）も共に書かれているため、転送制御装置が自ノード宛ではなくノード１ｂ宛と判断し、図５（ｅ）に示すような構造のテーブルを有するノード番地対応部１ａ−６により、メモリ番地（ｒｐ）から、宛先であるノード１ｂのネットワーク番地を取得し、ノード１ｂに転送する。ノード１ｂでは、受信したデータは、ｓａ→１ｂの領域に書き込まれ、プロセスが該データを読み取る。
【００５５】
この処理手順の内、ノード１ａで受信されたデータをノード１ｂ宛てあることを識別する手順を省略し、ノード１ａが代表する全てのノードに転送するよう本発明を構成しても良い。受信するノード１ｂでは、受信したデータは、ｓａ→１ｂの領域に書き込まれる。他のノードでは、通常、ｓａ→１ｂの領域は存在しないので、受信データは破棄される（ｓａ→１ｂの領域が存在しても、特に用途が無ければ破棄される）。
【００５６】
一方、ペイロード内に格納されたメモリ番地が自ノード宛のメモリ番地でない場合には、追加的に設定されるノード番地対応部１ａ−６により、ノード集合内の宛先ノードのネットワークアドレス（あるいは、ノード集合内の全ノード向けマルチキャストアドレス、あるいは、ブロードキャストアドレス）を取得し、当該アドレスに向けて送信する（ステップＳ１４）。
【００５７】
すなわち、この場合、図５（ｅ）に相当する追加的に設定されるノード番地対応部１ａ−６は、図５（ｆ）のように、ノード１ａが代表するノード集合１ａ〜ｌｍの全ノードに向けたマルチキャストアドレス（あるいは、ブロードキャストアドレス）を用いて構成し、ｒｐ、ｒｏ、…の何れのメモリ番地をも、ある１つのマルチキャストアドレス（ブロードキャストアドレス）に変換した上で、ネットワークによって該ノード集合の全てに送信するようにしても良い。
【００５８】
このようなマルチキャストアドレスは、本実施形態の分散共有メモリシステムで設定するものであっても、例えば、ＩＰマルチキャストアドレスのように、ネットワーク（図１のノード間通信路２に相当）で定義されたものであっても構わない。ネットワークで定義したものであれば、ネットワーク側のマルチキャストアドレスと個々のアドレスとを対応付ける機能によって、実際の個々のノードのアドレスに変換される。
【００５９】
本実施形態による分散共有メモリシステムで、マルチキャストアドレスを個々のノードのネットワーク番地に変換する方法でも構わないが、その場合には、別途、マルチキャストアドレスと個々のノードのネットワーク番地とを対応付ける機能を、本実施形態による分散共有メモリシステムが有することになる。このように、メモリ番地とノードのネットワーク番地とは、マルチキャストアドレスを介した間接的な対応付けになる。マルチキャストアドレスではなく、直接、全てのノードのネットワーク番地を対応付ける方法でも構わないが、その場合のノード番地対応部１ａ−６の該当する個所は、図５（ｅ）に示すように従来の構造と同様となる。
【００６０】
なお、ノードと記述した装置は、コンピュータ、サーバ、ルータ、センサ（ノード）、駆動装置、制御装置などで通信機能を有する装置であれば限定されない。また、宛先や送り元をノードと記載しているが、通常、送受信対象のデータをリードライトするのは、ノード内のプロセスであり、即ち、本発明では、メモリ番地にノード番地を対応付けると説明しているが、メモリ番地にプロセスの番地を対応付けても良い。
【００６１】
その場合、あるメモリ番地にデータが書き込まれたら、メモリ番地に対応するプロセスが存在するノードのノード識別子がノード番地対応部１ａ−６から出力され、データが該ノードヘ送信され、同一番地（仮想的でも構わない）に書き込まれる、というような処理であっても良い。このように、送信元、受信先をノードと記載していても、ノードをプロセスに置き換えて処理を行う場合も、本発明の適用範囲とする。
【００６２】
また、ノード番地とノード識別子は、Ｅｔｈｅｒｎｅｔ（登録商標）アドレス、ＡＴＭアドレス、ＩＰアドレス等、ノードを識別する識別子を示していて、呼称はどちらであっても区別しなくて良い。また、送信データを生成したり、送信指示したりするのは、アプリケーションプログラムで指示するように説明しているが、ＯＳ内の機能が送信データを生成したり送信を指示しても構わない。
【００６３】
また、メモリ配置は、物理的でなくてもよく、仮想メモリを用いても構わない。本実施形態によるメモリ構成は、ネットワーク接続前に通信機能を初期化する段階で予め行ってもよく、すでに通信を行っている状況でメモリを再構成しても構わない。
【００６４】
また、ノードの関係は、便宜上一列のように表記しているが、リング状や、スター状など、実際の物理的な接続状態は、どのような形態であっても構わない。
【００６５】
上述した実施形態によれば、分散共有メモリを用いる転送制御装置において、ネットワークが階層構造を持つ場合、ある階層の下位階層に属するノードの集合を代表するノードを設け、該下位層内のノードにデータを送信する場合には、分散共有メモリのメモリ領域であって、その代表ノードと対応付けられた領域にデータを書き込む。そして、該集合に対応する分散共有メモリの領域の中で、宛先ノードに対応付けられた分散共有メモリの領域にデータを書き込む。
【００６６】
従来技術であれば、ネットワークが大規模であると必要となるメモリ領域の区分も多くなり、宛先に対応する領域の検索等の時間が多くなるところを、本実施形態では、上述したような手順によって、全ての下位層に属するノード全てに対応付けられている分散共有メモリ領域の区分を実装することなく、大規模な分散共有メモリ全体を対象とせず、限定された領域のみを対象として、通信処理を行うことができる。
【００６７】
すなわち、通常、ネットワークが極めて大規模になると、通信対象となる全ノードと分散共有メモリの区分とを対応付けることで、分散共有メモリを用いたデータ転送装置内の通信処理が増加し、レイテンシを十分小さく抑えることが妨げられる可能性があった。これに対して、本実施形態によれば、レイテンシの小さな通信を維持することが可能となる。
【００６８】
さらに、ＩＰ通信など、既存の普及した大規模ネットワーク構造では、階層構造を持つ場合が多く、本実施形態によれば、これらネットワークの構成に適合して、メモリとノードとの対応付けが行えるため、既存ネットワークとの連携動作を実装する場合も、容易に行うことができるようになる。
【００６９】
なお、上述した実施形態において、上述した演算装置１ａ−２、転送制御装置１ａ−５、ノード番地対応部１ａ−６、分散共有メモリ管理部１ａ−９などにおける機能を実現するためのプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行することにより、符号化処理、及び復号化処理を行ってもよい。なお、ここでいう「コンピュータシステム」とは、ＯＳや周辺機器等のハードウェアを含むものであってもよい。また、「コンピュータシステム」は、ＷＷＷシステムを利用している場合であれば、ホームページ提供環境（あるいは表示環境）も含むものとする。また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ＲＯＭ、フラッシュメモリ等の書き込み可能な不揮発性メモリ、ＣＤ−ＲＯＭ等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。
【００７０】
さらに「コンピュータ読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムが送信された場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリ（例えばＤＲＡＭ（Dynamic Random Access Memory））のように、一定時間プログラムを保持しているものも含むものとする。また、上記プログラムは、このプログラムを記憶装置等に格納したコンピュータシステムから、伝送媒体を介して、あるいは、伝送媒体中の伝送波により他のコンピュータシステムに伝送されてもよい。ここで、プログラムを伝送する「伝送媒体」は、インターネット等のネットワーク（通信網）や電話回線等の通信回線（通信線）のように情報を伝送する機能を有する媒体のことをいう。また、上記プログラムは、前述した機能の一部を実現するためのものであっても良い。さらに、前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるもの、いわゆる差分ファイル（差分プログラム）であっても良い。
【図面の簡単な説明】
【００７１】
【図１】本発明の一実施形態によるネットワークとノードの構成を示すブロック図である。
【図２】本実施形態によるノードが通信を行う際の動作を説明するためのブロック図である。
【図３】本実施形態によるネットワーク構成の一例を示すブロック図である。
【図４】本実施形態によるネットワーク構成の他の例を示すブロック図である。
【図５】本実施形態によるノードのメモリ構成の一部を示す概念図である。
【図６】本実施形態によるノードの受信処理を説明するためのフローチャートである。
【符号の説明】
【００７２】
１ａ、１ｂ、…、１ｍ  ノード
ｓａ、ｓｂ、…、ｓｎ  ノード
１ａａ、１ａｂ、…、１ａｍ  ノード
１ｓａ、１ｓｂ、…、１ｓｍ  ノード
１ａ−１ａ〜１ａ−ｌｎ、１ｂ−１ａ〜１ｂ−ｌｎ  アプリケーションプログラム
１ａ−２、１ｂ−２  演算装置
１ａ−３、１ｂ−３  ローカルメモリ
１ａ−３−１  分散共有メモリ領域
１ａ−３−１ａ〜１ａ−３−１ｎ  データバッファ
１ａ−４、１ｂ−４  ノード内バス
１ａ一５、１ｂ−５  転送制御装置
１ａ−６、１ｂ−６  ノード番地対応手段
１ａ−６−１  分散共有メモリのメモリ番地の領域
１ａ−６−２  分散共有メモリのノード番地の領域
１ａ−９、１ｂ−９  分散共有メモリ管理機能（ＯＳ）
２  ノード間通信路（ネットワーク）
ｒｌ、ｒ２〜ｒｎ、ｒｏ、ｒｐ、…  メモリ番地
ｓａ→ｓａ  ノードｓａ発でノードｓａ宛に対応するメモリ領域
ｓａ→ｓｂ  ノードｓａ発でノードｓｂ宛に対応するメモリ領域
Ｎｗ  Ａｄｄ（１ａ）  ノード１ａのネットワークアドレス
Ｎｗ  Ａｄｄ（１ｂ）  ノード１ｂのネットワークアドレス
Ｎｗ  Ａｄｄ（Ｍ１ａ）  マルチキャスト（ブロードキャスト）アドレス
【図１】
2010147585.tif 000003
【図２】
2010147585.tif 000004
【図３】
2010147585.tif 000005
【図４】
2010147585.tif 000006
【図５】
2010147585.tif 000007
【図６】
2010147585.tif 000008