(57)【要約】【課題】  高スループットのノード間通信を維持しつつ、システム構築にかかるコストを削減するとともにノード間通信のための専用ソフトウェアをそのまま使用しつつ低コストでマルチノードコンピュータシステムを構築又は変更できる。【解決手段】  本発明によるマルチノードコンピュータシステムは、ノード間通信に汎用Ｉ／Ｏインターフェースを使用し、各ノード１０に存在する通信制御装置１０５がデータ転送のための専用ソフトウェアで作成された転送コマンドＴＣを解釈して汎用Ｉ／Ｏインターフェースの制御を行い、ノード間のデータの転送を行う。【選択図】  図１
2006058956.tif 000002
【特許請求の範囲】
【請求項１】
データを保持するコンピュータ装置である複数のノードと、
前記複数のノードに接続され、前記ノード間の前記データの転送における交換処理を行なうスイッチと、
前記スイッチに接続され、前記ノード間の通信調停を行うノード間通信制御装置とを備え、
前記ノードは、他ノードと前記データの転送を行なうための通信制御を実行する通信制御部と、前記通信制御部に接続され、前記他ノードとの間の通信パスを形成する複数の汎用Ｉ／Ｏインタフェースとを備え、
前記通信制御部は、前記他ノードに前記データを転送するための転送コマンドを前記汎用Ｉ／Ｏインタフェースに対応したコマンドに変更して前記他ノードとの間で前記データの転送を行なう
マルチノードコンピュータシステム。
【請求項２】
請求項１に記載のマルチノードコンピュータシステムにおいて、
前記ノード間通信制御装置は、
前記スイッチと接続され、前記ノードとの通信パスを形成する調停用汎用Ｉ／Ｏインタフェースと、
前記調停用汎用Ｉ／Ｏインタフェースに接続され、ノード間の通信調停を実行するノード間通信調停部を備え、
前記ノードとの通信を実行する際、前記ノード間通信調停部は、前記調停用汎用Ｉ／Ｏインタフェースに対応する通信形式に変更して前記ノードとの通信を行なう
マルチノードコンピュータシステム。
【請求項３】
請求項１又は２に記載のマルチノードシステムにおいて、
前記通信制御部は、前記転送コマンドに基づき、前記汎用Ｉ／Ｏインタフェースに対応する制御コマンドを作成し、前記Ｉ／Ｏインタフェースを介して前記制御コマンドを前記ノード間通信制御装置に送信して転送路を確保するための調停を要求し、前記ノード間通信制御装置から前記転送路の使用許可を受信すると前記ノード内の前記データに前記汎用Ｉ／Ｏインタフェースに対応する制御情報を付加し、前記Ｉ／Ｏ汎用インタフェースを介して前記他ノードに前記データを転送する
マルチノードコンピュータシステム。
【請求項４】
請求項１から３いずれか１項に記載のマルチノードコンピュータシステムにおいて、
前記通信制御部は、第１の前記汎用Ｉ／Ｏインタフェースを用いて、前記ノード間通信制御装置に転送路の調停を要求し、第２の前記汎用Ｉ／Ｏインタフェースを使用して、前記データの転送を行なう
マルチノードコンピュータシステム。
【請求項５】
請求項１から４いずれか１項に記載のマルチノードコンピュータシステムにおいて、
前記ノード間通信制御装置は、転送元の前記ノードから前記制御コマンドを受信すると、前記転送元ノードと転送先の前記ノードとの間の前記転送経路の使用状況を確認し、使用していない場合、前記転送元ノードに対し、通信許可を通知する
マルチノードコンピュータシステム。
【請求項６】
請求項１から５いずれか１項に記載のマルチノードコンピュータシステムにおいて、
前記転送元ノードの前記通信制御部は、前記転送先ノードとの間のデータの転送が終了すると転送終了通知を前記ノード間通信制御装置に送信し、
前記ノード間通信制御装置は、前記転送終了通知に基づき前記転送路を開放する
マルチノードコンピュータシステム。
【請求項７】
請求項１から６いずれか１項に記載のマルチノードコンピュータシステムにおいて、
前記ノード間通信制御装置は、前記調停要求に対し、使用していない転送路の使用許可を前記転送元ノードに通知すると同時に前記転送路を確保し、前記転送終了通知を受信するまで、前記転送路とコンフリクトを起こす可能性のある他の前記ノードからの調停要求に対して許可を保留する
マルチノードコンピュータシステム。
【請求項８】
請求項１から７いずれか１項に記載のマルチノードコンピュータシステムにおいて、
前記転送コマンドには、前記転送元ノードが保有する前記データを前記転送先ノードに記憶させるためのライトリクエストを含み、
前記ライトリクエスト含むコマンドを受信する前記転送先ノードは、転送されるデータを自ノードの主メモリに記録する
マルチノードコンピュータシステム。
【請求項９】
請求項１から８いずれか１項に記載のマルチノードコンピュータシステムにおいて、
前記転送コマンドには、前記転送先ノードにある前記データを転送元ノードに記憶させるためのリードリクエストを含み、
前記リードリクエストを受信する前記転送先ノードは要求されるデータを自ノードのメモリから読み出して前記転送元ノードに向けて送信し、前記転送元ノードは、受信される前記データを自ノードの主メモリに記録する
マルチノードコンピュータシステム。
【請求項１０】
データを保持するコンピュータ装置である複数のノードと、
前記複数のノードに接続され、前記ノード間の前記データの転送における交換処理を行なうスイッチとを備え、
前記ノードは、他ノードと前記データの転送を行なうための通信制御を実行する通信制御部と、前記ノードの接続される外部装置との間の通信を制御する入出力制御部を備え、
前記複数のノードのいずれか１つのノードの前記入出力制御部は、前記ノードとの通信パスを形成する前記調停用汎用Ｉ／Ｏインタフェースと、
前記ノード間通信調停部とを備え、
前記ノードとの通信を実行する際、前記ノード間通信調停部は、前記調停用汎用Ｉ／Ｏインタフェースに対応する通信形式に変更して前記ノードとの通信を行ない、前記ノード間の前記データの転送を行なう際、転送経路の通信調停を実行する
マルチノードコンピュータシステム。  
【請求項１１】
請求項１に記載のマルチノードコンピュータシステムにおいて、
前記ノードが、前記データを他ノードに転送するための転送コマンドを発行するステップと、
前記通信制御装置が、前記転送コマンドを参照し、前記汎用Ｉ／Ｏインタフェースに対応するデータの転送経路を確保するための制御コマンドを作成して送信するステップと、
前記ノード間通信制御装置が、受信する前記制御コマンドを参照し、前記転送経路の使用の有無を確認するステップと、
使用可能の場合、前記転送経路を確保し、通信許可を前記ノードに送信するステップと、
前記ノードが、前記通信許可を受信し、前記他ノードに前記データを転送するステップとを備える
マルチノード間におけるデータ転送方法。
【請求項１２】
請求項１０に記載のマルチノード間におけるデータの転送方法であって、
前記ノード間通信制御装置が、受信する前記制御コマンドを参照し、前記転送経路の使用の有無を確認するステップにおいて、
前記調停用汎用Ｉ／Ｏインタフェースが受信した前記制御コマンドを前記ノード間通信調停部に転送するステップと、
前記ノード間通信調停部が前記制御コマンドに基づき前記転送経路の使用状況を確認するステップと、
前記転送経路が使用されていない場合、前記通信許可を前記調停用汎用Ｉ／Ｏインタフェースに対応した形式に変更して前記ノードに送信するステップとを更に備える
マルチノード間におけるデータの転送方法。
【請求項１３】
他のノードにデータを転送するための転送コマンドを発行するＣＰＵと、
前記データを保持する主メモリと、前記転送コマンドに基づき前記他ノードとの通信制御を行なう前記通信制御部とを備え、
前記通信制御部は、複数の汎用Ｉ／Ｏインタフェースに接続され、前記転送コマンドに基づき、前記汎用Ｉ／Ｏインタフェースに対応する制御コマンドを作成し、第１の前記汎用Ｉ／Ｏインタフェースを介して、前記ノード間通信制御装置に対し、前記転送路を確保するための調停を要求し、前記データを前記主メモリから抽出し、前記汎用Ｉ／Ｏインタフェースに対応するコマンドを付加して第２の前記汎用Ｉ／Ｏインタフェースを介して、前記データの転送を行なう
コンピュータ装置。
【請求項１４】
他のノードにデータを転送するための転送コマンドを汎用Ｉ／Ｏインタフェースに対応する制御コマンドに変更するステップと、
前記制御コマンドを使用し、第１の汎用Ｉ／Ｏインタフェースを介してノード間のデータ転送に使用する転送経路を確保するための調停要求を行なうステップと、
前記データに前記汎用Ｉ／Ｏインタフェースに対応するコマンドを付加するステップと、
第２の汎用Ｉ／Ｏインタフェースから前記調停要求により確保された転送経路を経由して前記データを他のノードに送信するステップとを備える
マルチノード間におけるデータの転送方法。
【請求項１５】
請求項１４に記載のマルチノード間におけるデータの転送方法をコンピュータに実行させるための
マルチノード間におけるデータの転送プログラム。
【請求項１６】
請求項２に記載のマルチノードコンピュータシステムにおいて、
ノード間のデータの転送経路の使用の有無を示すテーブルと、
前記転送経路の通信調停を行なうノード間通信調停部とを備え、
前記ノード間通信調停部は、前記転送経路の確保を要求する制御コマンドを受け取ると、前記テーブルを確認し、転送先ノードにビジーフラグがセットされている場合、前記転送経路は使用中であると認識し、前記データの転送を保留し、前記ビジーフラグがセットされていない場合、前記テーブルの前記転送先ノードと前記転送元ノードに前記ビジーフラグをセットして前記転送経路を確保し、前記転送元ノードに使用許可の通知をする
ノード間通信制御装置。
【請求項１７】
請求項１６に記載のノード間通信制御装置において、
前記ノード間通信調停部は、前記転送元ノードから転送終了を告げる前記制御コマンドを受信すると、前記テーブルの前記転送元ノードと前記転送先ノードのビジーフラグをリセットし、前記転送経路を開放する
ノード間通信制御装置。
【請求項１８】
請求項２に記載のマルチノードコンピュータシステムにおいて
前記調停用汎用Ｉ／Ｏインタフェースが受信した前記制御コマンドを前記ノード間通信調停部に転送するステップと、
前記ノード間通信調停部が前記制御コマンドに基づき前記転送経路の使用状況を確認するステップと、
前記転送経路が使用されていない場合、前記通信許可を前記調停用汎用Ｉ／Ｏインタフェースに対応した形式に変更して前記ノードに送信するステップとを更に備える
マルチノード間におけるデータの転送方法。
【請求項１９】
請求項１８に記載のマルチノード間におけるデータの転送方法をコンピュータに実行させるための
マルチノード間におけるデータの転送プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ノードとノード間通信制御装置を、汎用インタフェースを使用して接続するマルチノードコンピュータシステムに関する。
【背景技術】
【０００２】
近年、演算速度及び記憶容量が増加したスーパーコンピュータは、取扱うデータ量が膨大であるため、複数のスーパーコンピュータをノード間接続装置で接続し、クラスタ化したマルチノードコンピュータシステムを構築することで、より大容量のデータを使用した大規模計算を実現している。
【０００３】
そのため、コンピュータ間において、大容量のファイルデータを高速に転送する必要性が高まってきている。
【０００４】
従来のマルチノードコンピュータシステムは、ノード間通信接続装置として超高速の専用クロスバスイッチを用い、ノード間のデータや信号の転送を制御するための通信制御装置やＩ／Ｏインタフェースは、専用に設計される。又、マルチノードシステム全体での実効的な演算性能を確保するためには、ノード間のデータ転送経路であるスイッチ部に対しては短ＴＡＴかつ高スループットでなければならないという要求があり、実装が非常に高コストとなり、システムの構築や変更のたびに莫大な費用と労力を要している（非特許文献１参照）。
【０００５】
このため、専用に設計されたノード間の転送機構を使用するマルチノードコンピュータシステムよりも、実効性能を犠牲にして比較的安価にマルチノード間転送を実現するものとしてｍｙｒｉｎｅｔがある。しかし、これを利用すると、低コストのシステムに変更しようとする場合、マルチノード転送制御のソフトウェアやそれらを使用するアプリケーションを書き換える必要がでてくるため、従来のソフトウェア資産をそのまま使用することができなくなってしまう。
【非特許文献１】鈴木勝巳他５名、「ＳＸ−６のノード間ネットワーク・出力系ハードウェア」、ＮＥＣ技報、日本電気株式会社、２００２年９月２５日、第５５巻、第９号、ｐ１６−１９
【発明の開示】
【発明が解決しようとする課題】
【０００６】
本発明の目的は、システム構築のコストを低減した、高スループットのマルチノードコンピュータシステムを提供することにある。
【０００７】
本発明の他の目的は、ノード間の接続に汎用インタフェースを使用しても、ノード間通信のための専用ソフトウェアとの互換性を保つことができるマルチノードコンピュータシステムを提供することにある。
【課題を解決するための手段】
【０００８】
以下に、［発明を実施するための最良の形態］で使用される番号・符号を括弧付きで用いて、［課題を解決するための手段］を説明する。この番号・符号は、［特許請求の範囲］の記載と［発明を実施するための最良の形態］の記載との対応関係を明らかにするために付加されたものであるが、［特許請求の範囲］に記載されている発明の技術的範囲の解釈に用いてはならない。
【０００９】
本発明によるマルチノードコンピュータシステムは、データを保持するコンピュータ装置である複数のノード（１０）と、複数のノード（１０）に接続され、ノード間のデータの転送における交換処理を行なうスイッチ（２０）と、スイッチ（２０）に接続され、ノード間の通信調停を行うノード間通信制御装置（３０）とを備え、ノード（１０）は、他ノード（１０）とデータの転送を行なうための通信制御を実行する通信制御部（１０５）と、通信制御部（１０５）に接続され、他ノードとの間の通信パスを形成する複数の汎用Ｉ／Ｏインタフェース（１０６）とを備え、通信制御部（１０５）は、他ノードにデータを転送するための転送コマンド（ＴＣ）を汎用Ｉ／Ｏインタフェース（１０５）に対応したコマンドに変更して他ノード（１０）との間でデータの転送を行なう。
【００１０】
ノード間通信制御装置（３０）は、スイッチ（２０）と接続され、ノード（１０）との通信パスを形成する汎用Ｉ／Ｏインタフェース（３０４）と、汎用Ｉ／Ｏインタフェース（３０４）に接続され、ノード間の通信調停を実行するノード間通信調停部（３０３）を備え、ノード（１０）との通信を実行する際、ノード間通信調停部（３０３）は、汎用Ｉ／Ｏインタフェース（３０４）に対応する通信形式に変更してノード（１０）との通信を行なう。
【００１１】
通信制御部（１０５）は、転送コマンド（ＴＣ）に基づき、汎用Ｉ／Ｏインタフェース（１０６）に対応する制御コマンド（ＣＣ）を作成し、Ｉ／Ｏインタフェース（１０６）を介して制御コマンド（ＣＣ）をノード間通信制御装置（３０）に送信して転送路を確保するための調停を要求し、ノード間通信制御装置（３０）から転送路の使用許可を受信するとノード内のデータに汎用Ｉ／Ｏインタフェース（１０６）に対応する制御情報を付加し、Ｉ／Ｏ汎用インタフェース（１０６）を介して他ノード（１０）にデータを転送する。
【００１２】
通信制御部（１０５）は、配下の汎用Ｉ／Ｏインタフェース（１０６）の中の１つの汎用Ｉ／Ｏインタフェース（１０６）を用いて、ノード間通信制御装置（３０）との間の制御用の通信パスを形成し、他の汎用Ｉ／Ｏインタフェース（１０６）を使用して、データの転送を行なう。
【発明の効果】
【００１３】
本発明のマルチコンピュータシステムによれば、高スループットのノード間通信を維持しつつ、システム構築にかかるコストを削減できる。
【００１４】
又、ノード間通信のための専用ソフトウェアをそのまま使用しつつ低コストでマルチノードコンピュータシステムを構築又は変更できる。
【発明を実施するための最良の形態】
【００１５】
以下、添付図面を参照して、本発明によるマルチノードコンピュータシステムの実施の形態を説明する。
【００１６】
図１から図３を参照して本発明によるマルチノードコンピュータシステムの第１の実施の形態を説明する。
【００１７】
図１に、本発明によるマルチノードコンピュータシステムの構成を示す。
【００１８】
本発明によるマルチノードコンピュータシステムは、複数のノード１０と、複数のノード１０に接続され、ノード間通信の交換処理を行なうファイバチャネルスイッチ２０と、ファイバチャネルスイッチ２０に接続され、ノード間通信の通信制御を行なうノード間通信制御装置３０とを備える。又、汎用Ｉ／Ｏインタフェースを使用して、ノード１０とファイバチャネルスイッチ２０との間の物理的接続を行ない、ノード間のデータ転送を実行する。
【００１９】
尚、複数のノード１０は、それぞれ、ノード１０−１、ノード１０−２・・ノード１０−ｎと表記するが、区別して使用しない場合は、ノード１０と表記する。又、各ノード１０を構成する装置も同様に、ノード１０に付記した追番に対応する追番を付記し、区別しない場合は、前記追番は付けない（例：ノード１０−１のノードＣＰＵ１０１−１）。
【００２０】
ノード１０は、大容量のデータを取扱うサーバや、スーパーコンピュータ等のコンピュータ装置であり、ノード内の各装置を制御するノードＣＰＵ１０１、ノード主メモリ１０２、入出力制御部１０３、通信制御部１０５を備え、入出力制御部１０３の配下にはチャネルカード１０４が、通信制御部１０５の配下にはノードファイバチャネルカード１０６が、ＰＣＩなどの汎用ＩＯバスを介して、複数接続されている。
【００２１】
ノード間におけるデータ転送の際、ノードＣＰＵ１０１は、通信制御部１０５に対し転送のための転送コマンドＴＣを発行する。又、転送要求に基づき、ノード主メモリ１０２から所要のデータを抽出し、あるいは、受信するデータをノード主メモリ１０２に記憶させる。
【００２２】
データ転送の際にノードＣＰＵ１０１から発行される転送コマンドＴＣの一例を図２に示す。図２（ａ）はライト動作である場合の転送コマンドＴＣである。転送元であるノード１０のノードＣＰＵ１０１が発行するライトリクエストの転送コマンドＴＣは、転送先ノード１０へのライトであることを示すコマンドヘッダ、転送先のノード番号、転送先のノード主メモリ１０２上のアドレス、転送データ長、ライトデータが格納されているノード１０のノード主メモリ１０２上のアドレスを含む。
【００２３】
図２（ｂ）はリクエスト動作である場合の転送コマンドＴＣである。転送要求を受けたノード１０のノードＣＰＵ１０１が発行するリードリクエストの転送コマンドＴＣは、他ノード１０からのリードであることを示すコマンドヘッダ、転送先ノード番号、転送先のノード主メモリ１０２上のアドレス、転送データ長、リードデータが格納されているノード１０のノード主メモリ１０２上のアドレスを含む。
【００２４】
ノード主メモリ１０２は、大容量のデータを保持する他、ノードＣＰＵ１０１で使用する各種プログラムが記録されている記憶装置である。
【００２５】
入出力制御部１０３は、ノードＣＰＵ１０１からの指令により、チャネルカード１０４を介して接続する各種装置（サーバやストレージ装置等）とのデータや信号の入出力を制御する。
【００２６】
チャネルカード１０４は、入出力制御部１０３から制御を受け外部装置との間に通信パスを形成し、外部装置との通信に使用するインタフェースカードである。
【００２７】
通信制御部１０５は、ノード間の通信専用に用いられる通信制御装置であり、ノード間にけるデータ転送の際、ノードＣＰＵ１０１から受け取る転送コマンドＴＣに基づき、ノード間通信制御装置３０と制御用の通信を確保する為のノードファイバチャネルカード１０６Ａを指定し、転送経路の調停を行なう為の制御コマンドＣＣをノード間通信制御装置３０に送信して、転送経路の調停を行う。制御コマンドＣＣは図３に示すように、調停要求を示すコマンドヘッダと、転送先ノードの番号と、転送元ノードの番号である。
【００２８】
又、制御用に使用するノードファイバチャネルカード１０６Ａ以外のノードファイバチャネルカード１０６Ｂを用いてノード間のデータの転送を実施する。
【００２９】
通信制御部１０５は、ノードＣＰＵ１０１が専用プロオグラムを用いて発行する命令に基づき、Ｉ／Ｏインタフェースカードの規格に応じた制御を行うため、ノードの転送プログラムに応じた専用のインタフェースを作成する必要がなく、様々な規格のインタフェースに応じて通信制御部１０５に変更することで、安価にマルチノードコンピュータシステムのインタフェースを変更することができる。
【００３０】
ノードファイバチャネルカード１０６は、ノード間の高速のデータ転送に適したデータ転送方式であるファイバチャネルに使用される汎用Ｉ／Ｏインタフェースカードであり、通信制御部１０５の制御を受け、他ノード１０との間、又はノード間通信制御装置との間の通信パスを形成する。
【００３１】
このように、ノードに接続される他装置との通信に利用する入出力制御部１０３とノード間の通信を制御する通信制御部１０５とを分離することで、ノード間におけるデータ転送の通信方式を変更する際、入出力制御部１０３に影響を与えることがないため、柔軟且つ安価にデータ転送における通信方式を変更することができる。
【００３２】
ファイバチャネルスイッチ２０は、ファイバチャネルを利用した通信回線における汎用スイッチであり、ノード間のデータ転送の際、転送データＴＤに含まれる転送先ノード番号に基づきデータの交換処理を行なう。
【００３３】
マルチノードシステムにおけるノード間通信を制御するノード間通信制御装置３０は、ＣＰＵ３０１、メモリ３０２、ノード間調停部３０３、ファイバチャネルカード３０４を備え、それぞれ汎用ＩＯバスで接続される。
【００３４】
ＣＰＵ３０１は、ノード間通信制御装置３０全体を制御する。各ノードからの転送経路の調停要求に対してノード間通信調停部３０３を制御して転送経路の確保や開放を実行させる。
【００３５】
メモリ３０２は、マルチノードコンピュータシステムにおけるノード間の転送経路の使用状況を確認する為のテーブルを保持しており、テーブルには、転送元のノード番号と転送先のノード番号と、転送先の使用を示すビジーフラグの入力欄がある。転送経路を確保する場合、転送元のノード番号と転送先のノード番号にそれぞれビジーフラグをセットする。
【００３６】
ノード間通信調停部３０３は、各ノード１０からファイバチャネルカード３０４を介して受信される調停要求に応じて、ＣＰＵ３０１からの指令に基づき転送元のノード１０に対し通信許可を通知するともに、メモリ３０２内のテーブルの転送先ノード１０にビジーフラグをつけて、転送経路の確保を行う。又、データ転送の終了の際、転送経路の開放を行う。転送経路が使用中の場合は、転送元のノード１０に転送を保留させる。
【００３７】
ファイバチャネルカード３０４は、ファイバチャネルに使用される汎用Ｉ／Ｏインタフェースカードであり、ノード間通信調停部３０３の制御を受けてファイバチャネルスイッチ２０を介して各ノード１０との通信を行なう。
【００３８】
尚、本実施の形態では、通信方式にファイバチャネルを利用したマルチノードコンピュータシステムを一例として示すが、通信制御部１０５や、ノード間通信調停部３０３が他のＩ／Ｏインタフェースに対応した制御方式を採用すれば、イーサネット（登録商標）等、ファイバチャネル以外の通信方式を利用したシステムとしても構わない。通信方式としてイーサネット（登録商標）を採用する場合、使用する汎用Ｉ／Ｏインタフェースカードはイーサネットカード（イーサネットは登録商標）を、汎用スイッチは、イーサネットスイッチ（イーサネットは登録商標）を使用する。これにより、データの転送量やネットワークの使用頻度、あるいはシステム構築のための費用対効果に応じてマルチノードコンピュータシステムを簡易に変更することが出来る。
【００３９】
図５及び図６に本発明によるマルチノードコンピュータシステムの動作の流れを示す。
【００４０】
図５にノード１０−１からノード１０−２にデータを転送する（ライト動作）場合の本発明によるマルチノードコンピュータシステムの動作を示す。
【００４１】
ノード１０−１のノードＣＰＵ１０１−１から他ノード１０−２のノード主メモリ１０２−２へデータライトを行う場合、図２（ａ）に示す転送コマンドＴＣを通信制御部１０５−１に発行する。（ステップＳＡ２）
【００４２】
ノードＣＰＵ１０１−１が発行するライトリクエストの転送コマンドＴＣは、転送先ノード１０−２へのライトであることを示すコマンドヘッダ、転送先ノード１０−２の番号、転送先であるノード１０−２のノード主メモリ１０２−２上のアドレス、転送データ長、ライトデータが格納されている転送元ノード１０−１のノード主メモリ１０２−１上のアドレスを含む。
【００４３】
通信制御部１０５−１は、ノードＣＰＵ１０１−１から受け取った転送コマンドＴＣを解釈し、ノード１０−１からノード１０−２へのデータ転送経路を占有するための調停要求である制御コマンドＣＣを作成する（ステップＳＡ４）。制御コマンドＣＣは図３に示されるような、調停要求（この場合、転送経路確保）であることを示すヘッダ、転送元ノード番号、すなわち自ノード番号（ここでは１）、転送先ノード番号（ここでは２）を含む。
【００４４】
次に、通信制御部１０５−１は、配下のノードファイバチャネルカード１０６−１の中からノードファイバチャネルカード１０６−１Ａを一つ指定し、ノード間通信制御装置３０との制御用の通信パスを確保させ、制御コマンドＣＣをノード間通信制御装置３０に送出して調停要求を行う（ステップＳＡ６）。
【００４５】
ノード間通信制御装置３０のファイバチャネルカード３０４は、調停要求である制御コマンドＣＣを受信すると、ノード間通信調停部３０３に転送する（ステップＳＡ８）。ノード間通信調停部３０３は転送された調停要求の転送先ノード番号（この場合、ノード番号２）を参照し、メモリ３０２にあるテーブル内のノード番号２にビジーフラグが有るか無いかを確認することで、転送先のノード１０−２が、別のノード間通信を実行中であるか否かを確認する（ステップＳＡ１０）。
【００４６】
ノード１０−２がノード間通信を実行中でなければ通信許可を要求元であるノード１０−１に返却する（ステップＳＡ１２）。転送先ノード１０−２がノード間通信を実行中である場合には、その転送の終了通知を受信するまでノ−ド１０−１への通信許可を保留する（ステップＳＡ１３）。ノード間通信調停部３０３はノード１０−１への通信許可を返却する際、転送元であるノード１０−１と転送先であるノード１０−２について、ノード１０−１から通信終了が通知されるまで、他のノード１０からのノード１０−１あるいはノード１０−２に対する通信の調停要求は保留しなければならないので、メモリ３０２にあるテーブルのノード１０−１及びノード１０−２のノード番号にビジーフラグをセットし、転送路を確保する（ステップＳＡ１４）。
【００４７】
ノード１０−１の通信制御部１０５−１は、ノードファイバチャネルカード１０６−１Ａを経由して通信許可を受信すると（ステップＳＡ１６）、ノードＣＰＵ１０１から発行された転送コマンドＴＣで示される主メモリ１０２−１上のアドレスから転送データ長のライトデータを読み出し（ステップＳＡ１８）、転送先ノード１０−２に対する制御情報を付加して、転送データＴＤを作成する（ステップＳＡ２０）。
【００４８】
制御情報を付加された転送データＴＤを図４（ａ）に示す。転送データＴＤは、ライトリクエストであることを示すコマンドヘッダ、転送先ノード１０−２の番号、転送元ノード１０−１の番号、転送先のノード主メモリ１０２−２上のアドレス、転送データ長、ライトデータを含む。
【００４９】
通信制御部１０５−１は、データ転送用のノードファイバチャネルカード１０６−１としてノードファイバチャネルカード１０６−１Ｂを指定し、ノードファイバチャネルカード１０６−１Ｂを通信パスとしてノード１０−２への転送データＴＤを送出する（ステップＳＡ２２）。
【００５０】
ノード１０−１からの転送データＴＤを受け取ったファイバチャネルスイッチ２０は、転送データＴＤに含まれる転送先ノード番号２に基づき、転送データＴＤをノード１０−２に送出する（ステップＳＡ２４）。転送データＴＤの転送開始前にノード１０−１とノード１０−２間の転送経路はロックしているので、ファイバチャネルスイッチ２０上で他の転送データＴＤと衝突を起こすことない。従って、固定時間でデータ転送が行われることが期待できる。
【００５１】
ノード１０−２のノードファイバチャネルカード１０６−２はファイバチャネルスイッチ２０からの転送データＴＤを受信すると通信制御部１０５−２に転送する（ステップＳＡ２６）。通信制御部１０５−２はこの転送データＴＤのライトを示すコマンドヘッダを参照して、ライトデータをノード主メモリ１０２−２の指定されたアドレスに記録する（ステップＳＡ２８）。
【００５２】
ノード１０−１の通信制御部１０５−１は、転送データＴＤの送信を終了すると、ノードファイバチャネルカード１０６−１Ａを介してノード間通信制御装置３０に対し転送終了を示す制御コマンドＣＣを送信する（ステップＳＡ３０）。転送終了を示す制御コマンドＣＣは、調停要求（転送終了）であることをしめすヘッダ、転送元のノード番号、すなわち自ノード１０−１の番号（ここでは１）、転送先のノード１０−２の番号（ここでは２）を含む。
【００５３】
ノード間通信制御装置３０のファイバチャネルカード３０４は転送終了を告げる制御コマンドＣＣを受信すると、ノード間通信調停部３０４に転送する。ノード間通信調停部は制御コマンドＣＣの転送元ノード１０−１及び転送先ノード１０−２のビジーフラグをリセットし転送経路を開放する。
【００５４】
次にノード１０−１がノード１０−２のノード主メモリ１０２−２内のデータをリードする動作（リードリクエストに対する動作）について図６を参照して説明する。
【００５５】
図６にノード１０−１からノード１０−２にデータを転送する（リードリクエスト動作）場合の本発明によるマルチノードコンピュータシステムの動作を示す。
【００５６】
ノード１０−１のノードＣＰＵ１０１は、他のノード１０−２のノード主メモリ１０２−２からデータのリード（読み出し）を行う場合、図２（ｂ）に示されるような転送コマンドＴＣをノード１０−１の通信制御部１０５−１に発行する（ステップＳＢ２）。
【００５７】
リードリクエストの場合の転送コマンドＴＣは、他ノード１０−２からのリードであることを示すコマンドヘッダ、転送先であるノード１０−２の番号、転送元であるノード１０−１の番号、リードデータのあるノード主メモリ１０２−２上のアドレス、転送データ長、リードデータを格納するノード１０−１のノード主メモリ１０２−１上のアドレスを含む。
【００５８】
通信制御部１０５−１は、ノードＣＰＵ１０１−１から受け取った転送コマンドＴＣを解釈し、ノード１０−１からノード１０−２へのデータ転送経路を占有するための調停要求である制御コマンドＣＣを作成する（ステップＳＢ４）。制御コマンドＣＣは、図３に示されるような、調停要求（この場合、転送経路確保）であることを示すヘッダ、転送元ノード番号、すなわち自ノード番号（ここでは１）、転送先ノード番号（ここでは２）を含む。
【００５９】
次に、通信制御部１０５−１は、配下のノードファイバチャネルカード１０６−１の中からノードファイバチャネルカード１０６−１Ａを一つ指定し、ノード間通信制御装置３０との制御用の通信パスを確保させ、制御コマンドＣＣをノード間通信制御装置３０に送出して調停要求を行う（ステップＳＢ６）。
【００６０】
ノード間通信制御装置３０のファイバチャネルカード３０４は、調停要求である制御コマンドＣＣを受信すると、ノード間通信調停部３０３に転送する（ステップＳＢ８）。ノード間通信調停部３０３は転送された調停要求の転送先ノード番号（この場合、ノード番号２）を参照し、メモリ３０２にあるテーブル内のノード番号２にビジーフラグが有るか無いかを確認することで、転送先のノード１０−２が、別のノード間通信を実行中であるか否かを確認する（ステップＳＢ１０）。
【００６１】
ノード１０−２がノード間通信を実行中でなければ通信許可を要求元であるノード１０−１に返却する（ステップＳＢ１２）。転送先ノード１０−２がノード間通信を実行中である場合には、その転送の終了通知を受信するまでノ−ド１０−１への通信許可を保留する（ステップＳＢ１３）。ノード間通信調停部３０３はノード１０−１への通信許可を返却する際、転送元であるノード１０−１と転送先であるノード１０−２について、ノード１０−１から通信終了が通知されるまで、他のノード１０からのノード１０−１あるいはノード１０−２に対する通信の調停要求を保留するため、メモリ３０２にあるテーブルのノード１０−１及びノード１０−２のノード番号にビジーフラグをセットし、転送路を確保する（ステップＳＢ１４）。
【００６２】
ノード１０−１の通信制御部１０５−１は、ノードファイバチャネルカード１０６−１Ａを経由して通信許可を受信すると（ステップＳＢ１６）、リードリクエストである転送コマンドＴＣに転送先ノード１０−２に対する制御情報を付加し、リードリクエストＲＲを作成する（ステップＳＢ１８）。
【００６３】
制御情報を付加された転送データＴＤを図４（ｂ）に示す。転送データＴＤは、リードリクエストであることを示すコマンドヘッダ、転送先ノード１０−２の番号、転送元ノード１０−１の番号、リードデータのある転送先のノード主メモリ１０２−２上のアドレス、転送データ長を含む。
【００６４】
通信制御部１０５−１は、データ転送用のノードファイバチャネルカード１０６−１としてノードファイバチャネルカード１０６−１Ｂを指定し、ノードファイバチャネルカード１０６−１Ｂを通信パスとしてノード２へのリードリクエストＲＲを送出する（ステップＳＢ２０）。
【００６５】
ノード１０−１からのリードリクエストＲＲを受け取ったファイバチャネルスイッチ２０は、リードリクエストＲＲに含まれる転送先ノード番号２に基づき、リードリクエストＲＲをノード１０−２に送出する（ステップＳＢ２２）。リードリクエストＲＲの転送開始前にノード１０−１とノード１０−２間の転送経路はロックしているので、ファイバチャネルスイッチ２０上で他の転送データＴＤと衝突を起こすことない。従って、固定時間でデータ転送が行われることが期待できる。
【００６６】
ノード１０−２のノードファイバチャネルカード１０６−２はファイバチャネルスイッチ２０からのリードリクエストＲＲを受信すると通信制御部１０５−２に転送する（ステップＳＢ２４）。通信制御部１０５−２はこのリードリクエストＲＲのリードを示すコマンドヘッダを参照して、転送データ長分のリードデータをノード１０−２のノード主メモリ１０２−２の指定されたアドレスから抽出し（ステップＳＢ２６）、転送先ノード１０−１に対する制御情報を付加して、転送データＴＤを作成する（ステップＳＢ２８）。
【００６７】
制御情報を付加された転送データＴＤは、ライト動作の場合と同じく図４（ａ）に示す構成であり、ライトリクエストであることを示すコマンドヘッダ、転送先ノード１０−１の番号、転送元ノード１０−２の番号、転送先のノード主メモリ１０２−１上のアドレス、転送データ長、ライトデータ（ステップＳＢ２６で抽出されたリードデータ）を含む。
【００６８】
通信制御部１０５−２は、データ転送用のノードファイバチャネルカード１０６−２としてノードファイバチャネルカード１０６−２Ｂを指定し、ノードファイバチャネルカード１０６−２Ｂを通信パスとしてノード１０−２への転送データＴＤを送出する（ステップＳＢ３０）。
【００６９】
ノード１０−２からの転送データＴＤを受け取ったファイバチャネルスイッチ２０は、転送データＴＤに含まれる転送先ノード番号１に基づき、転送データＴＤをノード１０−２に送出する（ステップＳＢ３２）。
【００７０】
ノード１０−１のノードファイバチャネルカード１０６−１Ｂはファイバチャネルスイッチ２０からの転送データＴＤを受信すると通信制御部１０５−１に転送する（ステップＳＢ３４）。通信制御部１０５−１はこの転送データＴＤのライトを示すコマンドヘッダを参照して、ライトデータをノード１０−１のノード主メモリ１０２−１の指定されたアドレスに記録する（ステップＳＢ３６）。
【００７１】
リードリクエストＲＲの転送元であるノード１０−１の通信制御部１０５−１は、転送データＴＤの受信を終了すると、ノードファイバチャネルカード１０６−１Ａを介してノード間通信制御装置３０に対し転送終了を示す制御コマンドＣＣを送信する（ステップＳＢ３８）。転送終了を示す制御コマンドＣＣは、調停要求（転送終了）であることをしめすヘッダ、転送元のノード番号、すなわち自ノード１０−１の番号（ここでは１）、転送先のノード１０−２の番号（ここでは２）を含む。
【００７２】
ノード間通信制御装置３０のファイバチャネルカード３０４は転送終了を告げる制御コマンドＣＣを受信すると、ノード間通信調停部３０４に転送する。ノード間通信調停部は制御コマンドＣＣの転送元ノード１０−１及び転送先ノード１０−２のビジーフラグをリセットし、転送経路を開放する（ステップＳＢ４０）。
【００７３】
以上のように、本発明によるマルチノードコンピュータシステムは、ノード間のデータ転送のためにノードＣＰＵ１０１が発行する転送コマンドＴＣをハードウェアである通信制御部１０５が解釈して汎用ＩＯ機器で構成されたノードファイバチャネルカード１０６を制御し、又、ノード間通信装置３０が受信する転送経路の調停要求をノード間調停部で解釈し、汎用ＩＯ機器で構成されたファイバチャネルスイッチを制御して転送経路の確保や開放を行なう。このため、ノードＣＰＵ１０１がデータ転送に用いる専用プログラムを変更する事なく、汎用インタフェースを用いてノード間通信ができるため、専用に製作されたソフトウェア資産を生かしつつマルチノードコンピュータシステムを低コストで構成、あるいは、変更することができる。
【００７４】
又、ノード１０に接続されるストレージやサーバ等の外部装置との通信を制御する機構と、ノード間におけるデータ転送に使用する通信を制御する機構、すなわち入出力制御部１０３と通信制御部１０５を分けることにより、従来のシステムに比べ、システム構築の柔軟性を向上することができる。
【００７５】
以下、図７及び図８を参照して、本発明によるマルチノードコンピュータシステムの第２に実施の形態の説明をする。
【００７６】
図７に、第２の実施の形態における本発明によるマルチノードコンピュータシステムの構成を示す。
【００７７】
第２の実施の形態における本発明によるマルチノードコンピュータシステムは、複数のノード１０と、複数のノード１０に接続され、ノード間通信の交換処理を行なうファイバチャネルスイッチ２０とを備え、ノード間通信の通信制御を行なうノード間通信調停部３０３及びファイバチャネルカード３０４を、いずれかのノード１０、例えばノード１０−ｎの入出力制御部１０３−ｎの配下に配置する。
【００７８】
ファイバーチャネルのネットワーク上に配置されたノード間通信制御装置３０ではなく、ノード間通信調停部が配置されたノード１０−ｎが、ノード間通信制御装置３０の役割を兼ねているということで、データ転送の動作は、第１の実施例と同じである。この際、ＣＰＵ３０１、メモリ３０２の動作を、それぞれノードＣＰＵ１０１−ｎ、ノード主メモリ１０２−ｎが実行する。
【００７９】
このように、本実施例では、ノード間通信制御装置３０の機能を既存のノードに持たせているので、第１の実施の形態と比べてさらにコストを削減できるという効果が得られる。
【００８０】
又、ノード１０−ｎにおいて、ノード間通信調停部３０３及びファイバチャネルカード３０４が、入出力制御部１０３に接続されているので、ノード間通信専門に使用される通信制御部１０５に影響を与えずノード間通信の調停を行なうことが可能となる。
【００８１】
ノード間通信調停部３０３は、その調停機能を具現できれば、装置でも、プログラムでもあるいは、装置とプログラムの組合せでも構わない。図８に示すように、ノード間通信調停部３０３をプログラムとして、チャネルカード１０４のうち一つを通信調停用のインタフェースとして使用することにより、更に安価にマルチノードコンピュータシステムを構成することができる。ただし、ノード間通信の調停処理がソフトウェア化されたために、ノード間通信のオーバーヘッドが若干増大し、実効的な性能は低下する可能性がある。
【００８２】
以上のように、ノード間通信そのものは汎用のインターフェースを使用し、各ノード１０に存在する通信制御装置１０５が、データの転送のための専用ソフトウェアで作成された転送コマンドＴＣを解釈して汎用ＩＯ制御を行う。これにより、ノードＣＰＵ１０１が発行する転送コマンドＴＣはハードウェアで解釈するためにソフトウェア見えの変更はなくなり、従来のソフトウェア資産を生かしつつ、もっともコストの高いノード間接続機構を汎用インターフェース機器に置き換えて低コストでマルチノードコンピュータシステムを構築可能となる。
【図面の簡単な説明】
【００８３】
【図１】図１は、本発明によるマルチノードコンピュータシステムの第１の実施の形態における構成の一例である。
【図２】図２（ａ）は、ライト動作における転送コマンドの構成図である。  図２（ｂ）は、リード動作における転送コマンドの構成図である。
【図３】図３は、制御コマンドの構成図である。
【図４】図４（ａ）は、ライト動作における転送データの構成図である。  図４（ｂ）は、リード動作におけるリードリクエストの構成図である。
【図５】図５は、ライト動作における本発明によるマルチノードコンピュータシステムの動作の一例である。
【図６】図６は、リード動作における本発明によるマルチノードコンピュータシステムの動作の一例である。
【図７】図７は、本発明によるマルチノードコンピュータシステムの第２の実施の形態における構成の一例である。
【図８】図８は、ノード間通信調停部がプログラムである場合の本発明によるマルチノードコンピュータシステムの第２の実施の形態における構成の一例である。
【符号の説明】
【００８４】
１０：ノード
１０１：ノードＣＰＵ
１０２：ノード主メモリ
１０３：入出力制御部
１０４：チャネルカード
１０５：通信制御部
１０６：ノードファイバチャネルカード
２０：ファイバチャネルスイッチ
３０：ノード間通信制御装置
３０１：ＣＰＵ
３０２：メモリ
３０３：ノード間通信調停部
３０４：ファイバチャネルカード
ＴＣ：転送コマンド
ＣＣ：制御コマンド
ＴＤ：転送データ
ＲＲ：リードリクエスト
【図１】
2006058956.tif 000003
【図２】
2006058956.tif 000004
【図３】
2006058956.tif 000005
【図４】
2006058956.tif 000006
【図５】
2006058956.tif 000007
【図６】
2006058956.tif 000008
【図７】
2006058956.tif 000009
【図８】
2006058956.tif 000010