(57)【要約】【課題】規模の拡大が可能で柔軟な構成の並列処理システムを提供する。【解決手段】サーバ装置３０は、ネットワークに接続されたクライアントの各々にクロック信号を送信するためのクロック発生器２１０と、クライアントからのメッセージを受取り、クロック発生器２１０にクロック信号の送信を一時的に停止させるメッセージ受信ユニットとを含む。メッセージ受信ユニットが、第１のメッセージを送信したクライアントから第２のメッセージを受信すると、これはクロック発生器２１０にクロック信号の送信を再開させる。【選択図】        図４
2005107727.tif 000002
【特許請求の範囲】
【請求項１】
ネットワーク上に分散する複数のクライアント装置を含むネットワークシステムにおいて用いられるサーバ装置であって、サーバ装置は前記複数のクライアント装置を統御して予め規定されたタスクを行なわせるものであり、
前記ネットワークに接続された前記クライアント装置の各々に所定の時間間隔でクロック信号を送信するためのクロック送信手段と、
クライアントからのメッセージを受取るための手段と、
前記受取るための手段が受取った第１のメッセージに応答して、前記クロック送信手段にクロック信号の送信を一時的に停止させるための手段と、
前記第１のメッセージを送信したクライアントから前記受取るための手段が受取った第２のメッセージに応答して、前記クロック送信手段にクロック信号の送信を再開させる手段とを含む、サーバ装置。
【請求項２】
前記クライアント装置間のデータの論理チャネルを決定するための判定手段と、
クライアント装置に対し、前記判定手段によって判定された論理チャネルに従ったそれらの入出力チャネル情報を通知して、クライアント装置がそれらのネットワーク入力及び出力を設定することを可能とするための通知手段とをさらに含む、請求項１に記載のサーバ装置。
【請求項３】
前記判定手段が、
判定された論理チャネルに従った前記クライアント装置の入出力間の接続の記述を記憶するための手段と、
ネットワークに接続されたクライアント装置からネットワークアドレス情報を受取るための手段と、
前記ネットワークに接続されたクライアント装置からのネットワークアドレス情報を分析して、入出力チャネル情報を生成し前記クライアント装置の各々に送信するための分析手段とを含み、前記入出力チャネル情報は前記各装置に特定のものである、請求項２に記載のサーバ装置。
【請求項４】
前記分析手段が前記入出力チャネル情報の送信を完了した後で、前記クロック送信手段に前記クライアント装置の各々へのクロック信号の送信を開始させるための手段をさらに含む、請求項３に記載のサーバ装置。
【請求項５】
前記受取るための手段によって受取られる第１のメッセージの頻度を測定し、前記クロック信号の時間間隔を最適化して、システムの性能を高く維持しながら、受取られる第１のメッセージの頻度が小さくなるようにするための手段をさらに含む、請求項１から請求項４のいずれかに記載のサーバ装置。
【請求項６】
サーバ装置と複数のクライアント装置とを含むネットワークシステムで用いられるクライアント装置であって、
前記サーバ装置からの入出力チャネル情報を受取るための手段を含み、前記入出力チャネル情報は前記クライアント装置の入出力の、他のクライアント装置の入出力への論理的接続を特定するものであり、さらに
前記クライアント装置に割当てられた機能を実現するためのプロセッサ手段を含み、前記プロセッサの入力は入力データを受取るように接続され、
前記サーバ装置から受取られたクロック信号に応答して、入力データが、前記クライアント装置の入力に論理的に接続された、隣接するクライアント装置から受取られたものか否かを判定するための第１の判定手段と、
第１の判定手段に応答して前記サーバ装置に前記クロック信号の送信を一時的に停止させるよう要求する第１のメッセージを送信するか、または第１の判定手段の判定に基づき前記プロセッサ手段に入力データを処理させるための手段と、
前記クロック手段に応答して、ネットワーク上で前記クライアント装置の出力に論理的に接続された隣接するクライアント装置へと前記プロセッサ手段の出力を送信するための手段と、
前記第１のメッセージを送信後、前記クライアント装置の入力に論理的に接続された隣接するクライアント装置から入力データが受取られたか否かを判定し、入力データが受取られたと判定すると、前記サーバ装置に前記クロック信号の送信を再開するよう要求する第２のメッセージを送信するための第２の判定手段とを含む、クライアント装置。
【請求項７】
前記クライアント装置に割当られた機能と、前記機能に関連する入出力とに関するクライアント情報を記憶するための記憶手段と、
前記クライアント装置がネットワークに接続されたときに、前記記憶手段に記憶された前記クライアント情報と、前記クライアントのネットワークアドレス情報とを前記サーバ装置に送信するための手段とをさらに含む、請求項６に記載のクライアント装置。
【請求項８】
コンピュータで実行可能なサーバプログラムであって、コンピュータ上で実行されると、前記コンピュータを、ネットワーク上に分散する複数のクライアント装置を含むネットワークシステムにおいて用いられるサーバ装置として動作させるものであり、前記サーバ装置は、前記複数のクライアント装置を統御して予め規定されたタスクを行なわせるものであって、
前記ネットワークに接続された前記クライアント装置の各々に所定の時間間隔でクロック信号を送るためのクロック送信手段と、
クライアントからのメッセージを受取るための手段と、
前記受取るための手段が受取った第１のメッセージに応答して、前記クロック送信手段にクロック信号の送信を一時的に停止させるための手段と、
前記第１のメッセージを送信したクライアントから、前記受取るための手段が受取った第２のメッセージに応答して、前記クロック送信手段にクロック信号の送信を再開させる手段とを含む、サーバプログラム。
【請求項９】
前記サーバ装置が、
前記クライアント装置間のデータの論理チャネルを判定するための判定手段と、
前記クライアント装置に対し、前記判定手段によって判定された論理チャネルに従ったそれらの入出力チャネル情報を通知して、前記クライアント装置がそれらのネットワーク入力及び出力を設定することを可能とするための手段とをさらに含む、請求項８に記載のサーバプログラム。
【請求項１０】
前記判定手段が、
判定された論理チャネルに従った前記クライアント装置の入出力間の接続の記述を記憶するための手段と、
前記ネットワークに接続されたクライアント装置からネットワークアドレス情報を受取るための手段と、
前記ネットワークに接続されたクライアント装置からのネットワークアドレス情報を分析して、入出力チャネル情報を生成し前記クライアント装置の各々に送信するための分析手段とを含み、前記入出力チャネル情報は前記各装置に特定のものである、請求項９に記載のサーバプログラム。
【請求項１１】
前記サーバ装置はさらに、前記分析手段が前記入出力チャネル情報の送信を完了した後で、前記クロック送信手段に前記クライアント装置の各々へのクロック信号の送信を開始させるための手段を含む、請求項１０に記載のサーバプログラム。
【請求項１２】
前記サーバ装置が、前記受取るための手段によって受取られる第１のメッセージの頻度を測定し、前記クロック信号の時間間隔を最適化して、システムの性能を高く維持しながら、受取られる第１のメッセージの頻度が小さくなるようにするための手段をさらに含む、請求項８から請求項１１のいずれかに記載のサーバプログラム。
【請求項１３】
コンピュータで実行可能なクライアントプログラムであって、コンピュータ上で実行されると、前記コンピュータを、サーバ装置と複数のクライアント装置とを含むネットワークシステムで用いられるクライアント装置として動作させるプログラムであって、
前記クライアント装置は、
前記サーバ装置からの入出力チャネル情報を受取るための手段を含み、前記入出力チャネル情報は前記クライアント装置の入出力の、他のクライアント装置の入出力への論理的接続を特定するものであり、さらに
前記クライアント装置に割当てられた機能を実現するためのプロセッサ手段を含み、前記プロセッサの入力は入力データを受取るように接続され、前記サーバ装置から受取られたクロック信号に応答して、前記入力データが、前記クライアント装置の入力に論理的に接続された隣接するクライアント装置から受取られたものか否かを判定するための第１の判定手段と、
前記第１の判定手段に応答して、前記サーバ装置に前記クロック信号の送信を一時的に停止させるよう要求する第１のメッセージを送信するか、または第１の判定手段の判定に基づき前記プロセッサ手段に入力データを処理させるための手段と、
前記クロック手段に応答して、前記プロセッサ手段の出力を、ネットワーク上で前記クライアント装置の出力に論理的に接続された隣接するクライアント装置へと送信するための手段と、
前記第１のメッセージを送信後、前記クライアント装置の入力に論理的に接続された隣接するクライアント装置から入力データが受取られたか否かを判定し、入力データが受取られたと判定すると、前記サーバ装置に前記クロック信号の送信を再開するよう要求する第２のメッセージを送信するための第２の判定手段とを含む、クライアントプログラム。
【請求項１４】
前記クライアント装置は、
前記クライアント装置に割当られた機能と、前記機能に関連する入出力とに関するクライアント情報とを記憶するための記憶手段と、
前記クライアント装置がネットワークに接続されたときに、前記記憶手段に記憶された前記クライアント情報と、前記クライアントのネットワークアドレス情報とを前記サーバ装置に送信するための手段とをさらに含む、請求項１３に記載のクライアントプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は大量のデータを並列に処理するためのネットワークシステムに関する。特に、この発明は大量のデータの並列同期処理を必要とする最新の人工知能（ａｒｔｉｆｉｃｉａｌ  ｉｎｔｅｌｌｉｇｅｎｃｅ：ＡＩ）のためのプラットフォームに適したネットワークシステムに関する。
【背景技術】
【０００２】
セルラーオートマトンの分野では、複数のセルコンピュータが、隣接するセルから受取るそれぞれのデータを処理してそれらの状態を決定する必要がある。それらは並列に、同期して動作する必要がある。したがって、このようなシステムでは並列計算処理が前提条件となっている。
【０００３】
後掲の特許文献１では、クラスタ型の並列コンピュータシステムが開示されている。システムはいくつかのノードプロセッサを含み、その各々はいくつかのプロセッサを含む。ノードは全てノード間ネットワークにより互いに接続されている。このシステムはさらに、ノードの各々に接続されノードの同期を制御する同期装置を含む。
【０００４】
各ノードは処理の重要な部分を終了すると同期装置に信号を送る。同期装置はノードからの信号を計数し、カウントがシステム中のノードの数に達すると、ノードに対し次のステップに進んでもよいことを示す信号を送信する。
【０００５】
【特許文献１】特開２０００−２１５１８２
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかし、先行技術のシステムは、規模の拡大ができないという欠点を有する。システムにノードが接続されるたびに、タスク全体を再び分割してノード間に配分しなければならない。従って、そのシステムは構成が柔軟でない。これは、目標とするタスクが常に変わるＡＩ等の分野の研究には適していない。
【０００７】
さらに、先行技術のシステムは、各ノードがその処理を終了するたびに同期装置に信号を送ることとなっているために、ネットワークのトラフィックが大きくなるという欠点を有する。
【０００８】
従って、この発明の目的は、規模の拡大が可能で構成が柔軟な並列処理システムを提供することである。
【０００９】
この発明の別の目的は、規模の拡大が可能で構成が柔軟であり、大きなネットワークトラフィックなしに動作する並列処理システムを提供することである。
【課題を解決するための手段】
【００１０】
この発明の第１の局面に従ったサーバ装置は、ネットワーク上に分散する複数のクライアント装置を含むネットワークシステムで用いられる。サーバ装置は、複数のクライアント装置を統御して予め規定されたタスクを行なわせる。サーバ装置は、ネットワークに接続されたクライアント装置の各々に所定の時間間隔でクロック信号を送るためのクロック送信手段と、クライアントからのメッセージを受取るための手段と、受取るための手段が受取った第１のメッセージに応答して、クロック送信手段にクロック信号の送信を一時的に停止させるための手段と、第１のメッセージを送信したクライアントから、受取るための手段が受取った第２のメッセージに応答して、クロック送信手段にクロック信号の送信を再開させるための手段とを含む。
【００１１】
好ましくは、サーバ装置はさらに、クライアント装置間のデータの論理的チャネルを判定するための判定手段と、クライアント装置に対し、判定手段によって判定された論理的チャネルに従ったそれらの入出力チャネル情報を通知して、クライアント装置がそれらのネットワーク入力及び出力を設定することを可能とするための手段とを含む。
【００１２】
さらに好ましくは、判定手段は、判定された論理チャネルに従ったクライアント装置の入出力間の接続の記述を記憶するための手段と、ネットワークに接続されたクライアント装置からネットワークアドレス情報を受取るための手段と、ネットワークに接続されたクライアント装置からのネットワークアドレス情報を分析して、入出力チャネル情報を生成しクライアント装置の各々に送信するための分析手段とを含む。入出力チャネル情報は各装置に特定のものである。
【００１３】
サーバ装置はさらに、分析手段が入出力チャネル情報の送信を完了した後で、クロック送信手段にクライアント装置の各々へのクロック信号の送信を開始させる手段を含んでもよい。
【００１４】
サーバ装置はさらに、受取るための手段によって受取られる第１のメッセージの頻度を測定し、クロック信号の時間間隔を最適化して、システムの性能を高く維持しながら、受取られる第１のメッセージの頻度が小さくなるようにするための手段を含んでもよい。
【００１５】
この発明の第２の局面はサーバ装置と複数のクライアント装置とを含むネットワークシステムで用いられるクライアント装置に関する。クライアント装置は、サーバ装置からの入出力チャネル情報を受取るための手段を含む。入出力チャネル情報は前記クライアント装置の入出力の、他のクライアント装置の入出力への論理的接続を特定するものである。クライアント装置はさらに、クライアント装置に割当てられた機能を実現するプロセッサ手段を含み、プロセッサの入力は入力データを受取るように接続され、サーバ装置から受取られたクロック信号に応答して、入力データが前記クライアント装置の入力に論理的に接続された隣接するクライアント装置から受取られたものか否かを判定するための第１の判定手段と、第１の判定手段に応答して、サーバ装置にクロック信号の送信を一時的に停止させるよう要求する第１のメッセージを送信するか、または第１の判定手段の判定に基づきプロセッサ手段に入力データを処理させるための手段と、クロック手段に応答して、プロセッサ手段の出力を、ネットワーク上でクライアント装置の出力に論理的に接続された隣接するクライアント装置へと送信するための手段と、第１のメッセージを送信後、クライアント装置の入力に論理的に接続された隣接するクライアント装置から入力データが受取られたか否かを判定し、入力データが受取られたと判定すると、サーバ装置にクロック信号の送信を再開するよう要求する第２のメッセージを送信するための第２の判定手段とを含む。
【００１６】
クライアント装置はさらに、クライアント装置に割当てられた機能と、この機能に関連する入出力に関するクライアント情報とを記憶するための記憶手段と、クライアント装置がネットワークに接続されたときに、記憶手段に記憶されたクライアント情報と、クライアントのネットワークアドレス情報とをサーバ装置に送信するための手段とを含んでもよい。
【００１７】
この発明の第３の局面は、コンピュータで実行可能なサーバプログラムであって、コンピュータ上で実行されると、コンピュータを上述のサーバ装置のいずれかとして動作させるプログラムに関し、この発明の第４の局面は、コンピュータで実行可能なクライアントプログラムであって、コンピュータ上で実行されると、コンピュータを上述のクライアント装置のいずれかとして動作させるプログラムに関する。
【発明を実施するための最良の形態】
【００１８】
図１はこの発明の一実施例に従ったネットワークの全体構成を示す。図１を参照して、システム２０は、サーバ３０と、実際上無制限の数のクライアント３２、３４、３６、３８及び４０を含む特別な分散アーキテクチャネットワークシステムである。サーバ３０とクライアント３２、３４、３６、３８及び４０とは全て、ＴＣＰ／ＩＰ（転送制御プロトコル／インターネットプロトコル）によってネットワークに接続されている。
【００１９】
クライアント３２、３４、３６、３８及び４０は、多数のワークステーションに置かれた独立したプログラムであるか、または、スパイク列として表されるデータを交換する、リアルタイム方式で動作する専用ハードウェアである。以下、「クライアント」はクライアントプログラム及びクライアントプログラムがそこで実行されるハードウェアの双方を指すものとする。
【００２０】
データ表現が限られており、通信プロトコルが非常に簡単なので、システム２０は最新の並列ＡＩにとって良好なプラットフォームである。
【００２１】
サーバ３０は最新のＡＩ用プラットフォームの基本的要素となることができる。このサーバ３０に基づくシステムは全て、並列に開発することができ、さらに高度に並列に実行させることができる。所与のＡＩアーキテクチャのクライアント３２、３４、３６、３８及び４０等の機能ブロックはいずれも、別々の研究者によって、または別々のワークステーションによって開発でき、他の協力関係にある研究者がすでに開発したブロックと合わせて即座に試験することができる。後述するように、いずれのブロックにも必要とされるのは、何らかのＡＩ関連の概念を表す２値のスパイク列を受入れること及び／または生成することだけである。
【００２２】
スパイク列は、クロックと呼ばれる離散的な時間の瞬間にサンプリングされた一連の２値のデータである。各サンプル値は、１か０のいずれかである。この実施例のシステムでは、スパイク列は規定された長さのチャンク形式に組織化される。可能な最も短いチャンクの長さは１であり、これは２値サンプル１個だけを意味する。効率をあげるため、この実施例では通常、より大きなチャンク（例えば、長さ＝９６）が用いられる。
【００２３】
システム２０は２値のスパイク列を処理し、所与のクロック速度で出力を互いに交換する一組のモジュール（ソフトウェア／ハードウェア）を含む。交換の媒体はＴＣＰ／ＩＰプロトコルであり、これは異なるモジュール間で、それらモジュールがどのワークステーションに位置しているか、さらにデータがどのような物理的媒体を介して送信されるか、にかかわらずデータを交換可能であることを意味する。
【００２４】
サーバ３０は所望のクロック速度を提供すること、及びシステムのトポロジに関する情報を維持することについて責任を負う。しかしながら、サーバ３０はシステム全体にわたるリアルタイムのデータの流れには関与しない。
【００２５】
例えばクライアント３２は、システム入力（例えばセンサ信号）５０を受け、クロックに応答して入力データを処理し、接続関係を示す線５２で見られるとおり、結果をクライアント３４に送信する。クライアント３４は次のクロックでこのデータを受けて処理し、出力を接続線６０により示される接続関係にあるクライアント４０に送信する。クライアント４０は次のクロックでこのデータを受けて処理し、出力を、それぞれ接続線５８及び６４で示される接続関係にあるクライアント３６及び３８に送信するとともに、接続線６２により示される接続関係にあるクライアント３４にも送信する。クライアント３６は次のクロックでこのデータを受けて処理し、結果をそれぞれ接続線５４及び５６で示される接続関係にあるクライアント３４及び４０に送信する。クライアント３８は次のクロックでデータをクライアント４０から受けて処理し、システム出力６８を出力する。クライアント３８はまた、接続線６６により示される接続関係にあるクライアント３２にも結果を送信する。
【００２６】
このようにして、クライアント３２、３４、３６、３８及び４０はシステム入力５０を処理し、システム出力６８を出力する。
【００２７】
クライアント３２、３４、３６、３８及び４０の各々は一意の名前で特徴づけられる。これは、予め規定された組の入出力チャネルを備えた「ブラックボックス」と考えることができる。入出力チャネルもまた、それらの一意の名前で特徴づけられる。
【００２８】
クライアントのタスクは以下の通りである。
【００２９】
１）接続の際、サーバ３０に対しクライアント自身の情報（名前及びチャネルリスト）を提供する。
【００３０】
２）サーバ３０から、出力を送信する宛先に関する情報と、データを受取る送信元に関する情報とを受取る。
【００３１】
３）サーバ３０からクロックを受取るたびに、その入力バッファの現在の状態に基づいてその出力バッファの状態を更新する。
【００３２】
クライアント自身はシステム２０の構造を承知しておらず、隣接するものの入出力構成さえも承知していない。クライアント自身が知っているのは、ＩＰアドレスと、それが出力を送付すべきポート及び他のクライアントからのデータを受けるためにそれが開くべきポートのポート番号との対だけである。
【００３３】
図１を参照して、クライアント３２、３４、３６、３８及び４０の間の、接続線５２、５４、５６、５８、６０、６２、６４及び６６により示される接続関係は、四個の名前からなる名前の組８０、８２、８４、８６、８８、９０、９２及び９４を用いてサーバ３０によって規定される。この名前の組は、送信元の名前、送信元からの出力、宛先の名前、及び宛先の入力からなる。
【００３４】
サーバ３０はシステム２０のタスクを統括し、性能を測定し、その動作速度を調整する責任を負う。システムの実行前に、クライアント３２、３４、３６、３８及び４０は、サーバ３０に接続し、それらの名前と共にそれらの入出力に関する情報をサーバに提供するよう求められる。システム中のデータの流れの経路を定義すること、例えば、どのクライアントのどの出力をどのクライアントのどの入力に接続するかということは、ユーザにまかされている。
【００３５】
全てのクライアントがネットワークに接続されネットワークのトポロジが設定されると、クライアントの情報が、各クライアントの観点から個別に、サーバ３０上で分析される。その後、論理データチャネル（図１に接続線５２，５４、５６、５８、６０、６２、６４及び６６で示す）がＩＰアドレスとポート番号との対に変換されるので、クライアントごとの接続テーブルを生成してこれをサーバ３０から各クライアントに送信することができる。
【００３６】
サーバ３０及びクライアント３２、３４、３６、３８並びに４０は汎用コンピュータで実現できる。図２はこのような汎用コンピュータ１２０の外観を示す。図３はコンピュータ１２０の機能ブロック図である。
【００３７】
図２を参照して、コンピュータシステム１２０は、ＦＤ（フレキシブルディスク）ドライブ１５２及びＣＤ−ＲＯＭ（コンパクトディスク読出専用メモリ）ドライブ１５０を有するコンピュータ１４０と、キーボード１４６と、マウス１４８と、モニタ１４２とを含む。
【００３８】
図３を参照して、コンピュータ１４０はＦＤドライブ１５２及びＣＤ−ＲＯＭドライブ１５０に加えて、ＣＰＵ（中央処理ユニット）１６０と、ＣＰＵ１６０、ＦＤドライブ１５２及びＣＤ−ＲＯＭドライブ１５０に接続されたバス１６８と、ブートアッププログラム、及びサーバまたはクライアントプログラムを記憶する読出専用メモリ（ＲＯＭ）１６２と、バス１６８に接続されアプリケーションプログラム命令、システムプログラムを記憶するランダムアクセスメモリ（ＲＡＭ）１６４と、ハードディスクドライブ１６６とを含む。ＲＡＭ１６４はまた、プログラムのワーキングメモリとしても動作する。
【００３９】
コンピュータ１４０はさらに、ローカルエリアネットワーク（ＬＡＮ）１８４への接続を提供するネットワークボード１７４を含む。
【００４０】
コンピュータシステム１２０をサーバ３０またはクライアント３２、３４、３６、３８及び４０のいずれかとして動作させるプログラムは、ＣＤ−ＲＯＭ１８０またはＦＤ１８２に記憶され、これをＣＤ−ＲＯＭドライブ１５０またはＦＤドライブ１５２に挿入してさらにハードディスクドライブ１６６に転送できる。又は、これに代えて、ＬＡＮ１８４を介してコンピュータ１４０にプログラムを送信し、ハードディスクドライブ１６６に記憶させても良い。プログラムは実行の際にＲＡＭ１６４にロードされる。
【００４１】
サーバプログラムは、コンピュータシステム１２０をサーバ３０として作用させるための複数の命令を含む。クライアントプログラムは、コンピュータシステム１２０をクライアント３２、３４、３６、３８及び４０のいずれかとして作用させるための複数の命令を含む。クライアントプログラムは、それらの機能により、互いに異なるものとなる。
【００４２】
基本的機能のいくつかはコンピュータ１４０で実行されるオペレーティングシステム（ＯＳ）またはサードパーティのプログラム、もしくはコンピュータ１４０にインストールされるモジュールにより提供されるので、このサーバプログラムまたはクライアントプログラムはこの実施例を実現するのに必要な基本的機能全てを必ずしも含まなくてよい。プログラムが含む必要があるのは、命令のうち、所望の結果が得られるように制御された方法で適切な機能または「ツール」を呼出すことによって、サーバ３０またはクライアントのいずれかの機能を実現する部分のみである。コンピュータシステム１２０がどのように動作するかは周知であるので、その詳細はここでは省略する。
【００４３】
図４はサーバ３０の機能的構造をブロック図で示す。これらのブロックはコンピュータハードウェアとその上で実行されるソフトウェアによって実現される。
【００４４】
図４を参照して、サーバ３０は、ユーザがシステム中のデータの流れの経路を規定する際にユーザによって用いられる設定入力ユニット２００と、設定入力ユニット２００によって提供されたシステムの設定情報の記述を記憶するための設定記憶装置２０２と、クライアントがネットワークに接続される際にクライアントからの登録要求を受け、受取った情報に従って設定記憶装置２０２に記憶された情報を更新するための登録ユニット２０４と、各クライアントの視点から別個に、設定記憶装置２０２に記憶された情報を分析する接続通知部２０６とを含む。論理データチャネルを、ＩＰアドレスとポート番号の対を含む接続情報に変換した後、接続通知部２０６は接続情報をクライアントの各々に送信するとともに、準備完了信号も送信する。
【００４５】
サーバ３０はさらに、接続通知部２０６からの準備完了信号を受取った後、モニタ１４２、キーボード１４６及びマウス１４８でのユーザによる命令入力に応答して、クライアントの動作を開始させるためのシステム制御ユニット２０８を含む。
【００４６】
サーバ３０はさらに、クロック信号パケットを組立て、これをクライアント３２、３４、３６、３８及び４０に送信するクロック発生器２１０と、所定の時間間隔でクロック発生器２１０のトリガを繰返すタイマ２１２と、クロック発生器２１０にクロック信号の発生を停止するかまたは再開することを要求するクライアントからのメッセージを受け、要求に従ってクロック発生器２１０を制御するメッセージ受信ユニット２１６と、受取られた「停止」要求メッセージの頻度を調査して、クロック速度が最適化されるよう所定の基準に従ってタイマ２１２の間隔を書換える性能チェックユニット２１４とを含む。
【００４７】
図５は典型例としてのクライアント３４の機能的構造を示す。図５を参照して、クライアント３４は、サーバ３０からのクロック信号を受けるクロック受信ユニット２３０と、システム設定に従って開かれる入力ポート２３２と、それぞれの入力ポート２３２で受取られた情報を記憶するための入力バッファ２３４と、入力バッファ２３４の特定のものに記憶されたデータを処理するためのプロセッサ２３６と、クロック信号を受取ると入力バッファ２３４の特定のものをチェックしてサーバ３０に停止要求メッセージを出力するかまたはプロセッサ２３６に処理トリガ信号を送信するバッファチェックユニット２４２とを含む。バッファチェックユニット２４２は、入力バッファ２３４の特定のもののデータの準備が完了すると処理トリガ信号を送信する。さもなければバッファチェックユニット２４２はサーバ３０に停止要求メッセージを送信する。
【００４８】
クライアント３４はさらに、プロセッサ２３６の出力を記憶するための出力バッファ２３８と、出力バッファ２３８の特定のものに記憶されたデータとサーバ３０によって通知されたＩＰアドレス及びポート番号を含むヘッダーとを含むパケットを組立て、組立てられたパケットを出力するためのパケットアセンブリユニット２４０とを含む。出力バッファ２３８の各々は、サーバ３０によって示される宛先ポート番号それぞれについてデータを記憶する。
【００４９】
クライアント３４はさらに、その名前、チャネルリスト等のクライアント設定情報を記憶するためのクライアント設定記憶装置２４６と、クライアント３４がネットワークに接続されるときに、ネットワーク設定情報及びクライアント設定情報をサーバ３０に送信し、図４に示される接続通知部２０６から接続通知を受けるネットワーク接続ユニット２４４とを含む。ネットワーク接続ユニット２４４はサーバ３０によって示されたポートを開く。ネットワーク接続ユニット２４４はさらに、宛先クライアントのＩＰアドレスとポート番号とを、パケットアセンブリユニット２４０に送信する。
【００５０】
図１から図５に示されるシステムは以下のように動作する。ユーザはシステム内のデータの流れの経路を定義し、この情報を、設定入力ユニット２００を用いて設定記憶装置２０２に格納する。サーバ３０はクライアントがネットワークに接続されるのを待つ。各クライアントは、サーバ３０に接続される際、それらのクライアント設定情報とともに、そのＩＰアドレス等のネットワーク設定をサーバ３０に送信する。これに応答して、サーバ３０の登録ユニット２０４は設定記憶装置２０２に記憶された情報を更新する。
【００５１】
システムを実現するように求められたクライアントが全て接続され、それらの情報が設定記憶装置２０２に記憶されると、接続通知部２０６は記憶された情報に基づいてネットワークトポロジを設定し、各クライアントの視点から情報を分析するので、クライアント間の論理データチャネルがＩＰアドレスとポート番号の対に変換される。この結果、接続通知部２０６はクライアントの各々に対しクライアントごとの接続テーブルを生成し、このテーブルを、接続通知として、クライアントの各々に送信する。
【００５２】
図５を参照して、接続通知に応答して、ネットワーク接続ユニット２４４は指示されたポートを開く。ネットワーク接続ユニット２４４はさらに、発行されるパケットに含まれるべきＩＰアドレスとポート番号とをパケットアセンブリユニット２４０に送信する。こうしてクライアント３４は動作の準備が完了し、サーバ３０からのクロック信号を待つ。
【００５３】
図４を参照して、クライアントに全ての接続通知を送信し終わると、接続通知部２０６はシステム制御ユニット２０８に準備完了信号を出力する。これに応答して、システム制御ユニット２０８は、システムの準備が完了した旨のメッセージと、「ＯＫ］及び「取消」ボタンとをモニタ１４２上に表示する。ユーザがキーボード１４６及びマウス１４８で「ＯＫ」ボタンを押すと、システム制御ユニット２０８はクロック発生器２１０とタイマ２１２を動作可能にする。
【００５４】
所定の間隔で、タイマ２１２はクロック発生器２１０を活性化し、クロック発生器２１０はクロック信号パケットを発生させてこのパケットを全てのクライアントに送信する。
【００５５】
図５を参照して、クロック信号を受取ると、クロック受信ユニット２３０はバッファチェックユニット２４２と出力バッファ２３８とに信号を送る。バッファチェックユニット２４２は入力バッファ２３４のうち、特定のものにおいてデータの準備が完了しているかどうかをチェックして確認する。もしデータの準備が完了していれば、バッファチェックユニット２４２はプロセッサ２３６にデータの処理を開始するよう信号を送る。これに応答して、プロセッサ２３６は入力バッファ２３４のうちで特定のものからデータを読出し、結果を出力バッファの特定のものに出力する。出力バッファ２３８の特定のものはプロセッサ２３６の出力を記憶する。
【００５６】
出力バッファ２３８のうちで特定のものに格納されているデータはさらにパケットアセンブリユニット２４０に送信される。パケットアセンブリユニット２４０はこのデータと、ネットワーク接続ユニット２４４によって通知されたＩＰアドレス及びポート番号とでデータパケットを組立て、このパケットをネットワークに出力する。
【００５７】
入力バッファ内でデータの準備が完了していなければ、このデータを準備する責任を負うクライアントがまだそのタスクを終了していない、ということである。バッファチェックユニット２４２は「停止」要求メッセージを出力し、これをサーバ３０に送信する。バッファチェックユニット２４２はまた、プロセッサ２３６及び出力バッファ２３８の動作を停止させる。
【００５８】
図４を参照して、クライアントのいずれかから「停止」信号を受取ると、メッセージ受信ユニット２１６はクロック発生器２１０の動作を停止させる。従って、いずれのクライアントにもクロック信号は送信されず、システムは、依然としてそのタスクを行なっているクライアントを除き、一時的に停止する。この特定のクライアントがそのタスクを終了すると、そのクライアントはその結果を次のクライアントに出力する。
【００５９】
このデータは入力ポート２３２のうちの対応するものによって受取られ、図５に示される入力バッファ２３４の対応するものに記憶される。バッファチェックユニット２４２はデータの準備が完了したことを知る。バッファチェックユニット２４２はプロセッサ２３６と出力バッファ２３８を動作可能にする。プロセッサ２３６は入力バッファ２３４から読出されたデータに対して演算し、結果は出力バッファ２３８とパケットアセンブリユニット２４０とを介してネットワークに出力される。さらに、バッファチェックユニット２４２は「再開」要求メッセージをサーバ３０に送信する。
【００６０】
図４を参照して、メッセージ受信ユニット２１６はクライアント３４からの「再開」要求メッセージを受取るとクロック発生器２１０を動作可能にする。クロック発生器２１０は、タイマ２１２が次にクロック発生器２１０に信号を送ると、クロック信号を発生しクライアントに送信する。こうして全システムの動作が再開する。
【００６１】
複数のクライアントがいくつかの「停止」要求メッセージをサーバ３０に送信する場合もありうる。この場合、メッセージ受信ユニット２１６は「停止」要求メッセージの数と「再開」要求メッセージの数とを計数し、これらを比較して数が同じかどうか確認する。もし、数が同じであれば動作が再開され、さもなければ再開されない。
【００６２】
上述の動作を繰返すことにより、全システムがＡＩとして動作し、有用な結果を出力する。
【００６３】
性能チェックユニット２１４は、予め規定された時間期間中に受取られた「停止」要求メッセージの移動平均を維持する。もしこの平均が所定の第１のしきい値を超えれば、それはクロック信号の時間間隔が短すぎるということである。性能チェックユニット２１４はタイマ２１２の間隔を特定の量だけ増加させて、クロック信号が出力される頻度を下げる。もし平均が第１のしきい値より低い所定の第２のしきい値よりも低ければ、性能チェックユニット２１４は特定の量だけ間隔を減少させる。性能チェックユニットのこの機能により、システムは最適のクロック速度で動作することが可能となる。
【００６４】
上述のとおり、サーバ３０とクライアントとは、汎用コンピュータハードウェアとその上で実行されるそれぞれのプログラムで実現される。図６から図９はサーバプログラムの構造の例を示す。
【００６５】
図６は、サーバ３０がクライアントからネットワーク設定信号を受取ったときにサーバで起動されるプログラムの制御構造を示す。図６を参照して、プログラムはステップ２６０で始まり、ここでサーバ３０は受取った情報に基づき、設定記憶装置２０２に記憶された情報を更新する。
【００６６】
ステップ２６２で、全てのクライアントがネットワークに接続されたかが判定される。もし全てのクライアントが接続されていれば、制御はステップ２６４に進み、さもなければプログラムは終了する。
【００６７】
ステップ２６４で、プログラムは設定記憶装置２０２に記憶された情報に基づいてネットワークのトポロジを分析する。サーバ３０は、分析の結果として、各クライアントに、クライアントごとのテーブルを生成する。
【００６８】
ステップ２６６で、プログラムはクライアントごとのテーブルをそれぞれのクライアントに対する通知として送信する。全てのクライアントが通知を受取ると、プログラムはステップ２６８で、サーバ３０上で実行中の別のプログラムであるシステム制御ユニット２０８に、準備完了信号を送る。ステップ２６８の後、制御はこのプログラムを抜ける。
【００６９】
図７は図４に示されたクロック発生器２１０を実現するプログラムの制御構造を示す。このプログラムは、タイマ２１２がトリガ信号を出力するたびに起動される。このプログラムはステップ２９０で始まり、ここで、システム待機フラグがオン（「１」）であるかが判定される。このシステム待機フラグは、「停止」要求メッセージを送信してから「再開」要求メッセージをまだ送信していないクライアントがあるか否かを確認するために用いられる。もしシステム待機フラグが「１」でなければ、制御はステップ２９２に進み、さもなければプログラムは終了する。
【００７０】
ステップ２９２では、クロック発生器２１０はクロック信号パケットを発生してこれをクライアントに送信する。ステップ２９２の後、制御はこのプログラムを抜ける。
【００７１】
図８はメッセージ受信ユニット２１６の機能を実現するプログラムの制御構造を示す。このプログラムは、サーバ３０が「停止」要求メッセージまたは「再開」要求メッセージを受取ると起動される。図８を参照して、プログラムはステップ３１０で始まり、ここでプログラムは図示しない待機テーブルを更新する。この待機テーブルは、クライアントごとに、クライアントが「停止」要求を送信したことを示すフラグを記憶するものである。もしサーバ３０があるクライアントから「停止」要求を受取ると、このクライアントの待機フラグが「１」に設定される。もし受取られたメッセージが「再開」要求であれば、このクライアントのための待機フラグは「０」に設定される。
【００７２】
ステップ３１２で、待機テーブルの全ての待機フラグが「０」であるか否かが判定される。もしそうであれば、制御はステップ３１４に進み、ここでシステム待機フラグが「０」に設定される。もし待機フラグのいずれかが「１」であれば、システム待機フラグは「１」に設定される。ステップ３１４及び３１６の後、制御はこのプログラムを抜ける。
【００７３】
このプログラムの機能により、もしクライアントのいずれかが「停止」要求を送信し、まだ「再開」要求を送信していない場合、システムは待機する。もし、「停止」要求を送信した全てのクライアントが「再開」要求を送信していれば、システムはその動作を再開する。
【００７４】
図９は図４に示された性能チェックユニット２１４の機能を実現するプログラムの構造を示す。このプログラムは、サーバ３０が「停止」要求メッセージを受取るたびに起動される。
【００７５】
このプログラムはステップ３３０で始まり、ここで、所定の時間期間内に受取られた「停止」要求の数の移動平均ＮＡＶＥが計算される。ステップ３３２で、この平均ＮＡＶＥが予め規定された第１のしきい値ＴＨ１を超えているか否かが判定される。もし結果が「ＹＥＳ」であれば、制御はステップ３３４に進み、ここで図４に示すタイマ２１２の時間間隔が特定の量だけ増加される。もし結果が「ＮＯ」であれば、制御はステップ３３６に進む。
【００７６】
ステップ３３６で、平均ＮＡＶＥが第２のしきい値ＴＨ２より小さいか否かが判定される。もし結果が「ＹＥＳ」であれば、制御はステップ３３８に進み、ここでタイマ２１２の時間間隔が特定の量だけ減じられ、そうでなければプログラムは終了する。なお、第２のしきい値ＴＨ２の値は第１のしきい値ＴＨ１よりも小さい。
【００７７】
図９に示されたプログラムの機能により、もしタスクを終えるのに時間が十分でないクライアントの数が増加する場合は、クロック信号の発生間隔がより長くなる。もしほとんどのクライアントが、次のクロックより前にタスクを終了しているのであれば、クロック速度が上げられ、システムの性能が改善される。こうして、システム全体のクロック速度が最適化される。
【００７８】
図１０はクライアント３２、３４、３６、３８及び４０等のクライアントの処理機能を実現するために、コンピュータ上で実行されるクライアントプログラムのフローチャートである。図１０を参照して、プログラムはステップ３５０で始まり、ここでクライアントはクロック信号を待つ。クライアントがクロック信号を受取ると、制御はステップ３５２に進み、入力バッファ２３４内におけるデータの準備が完了しているかが判定される。もし準備ができていれば、制御はステップ３５４に進み、ここで入力バッファ２３４の入力がプロセッサ２３６で処理され、出力が出力バッファ２３８に送信される。
【００７９】
他方で、もし入力バッファ２３４内のデータの準備が完了していなければ、制御はステップ３６０に進み、ここでサーバ３０に「停止」要求メッセージが送信される。その結果、全システムはこのクライアントがそのタスクを終了するまで待機する。ステップ３６２で、このクライアントは入力バッファ２３４内のデータの準備が完了するまで待機する。データの準備が完了すると、制御はステップ３６４に進み、ここでプロセッサ２３６が入力バッファ２３４内のデータを処理し、出力が出力バッファ２３８に送信される。最後に、ステップ３６６で、クライアントはサーバに「再開」要求メッセージを送信する。これに応答して、サーバはクロック信号の送信を再開し、全システムが再び動作を始める。
【００８０】
上述の通り、この発明の実施例に従ったシステムは、クライアントがネットワーク上に分散した状態で、大量のデータを並列に処理することができる。システムが一旦動作を始めると、クライアントは、「停止」要求メッセージ及び「再開」要求メッセージを除き、サーバに対し何のデータもメッセージも送信する必要がない。さらに、クロック速度はシステムの性能に従って最適化される。
【００８１】
上述の実施の形態は単なる例示であって制限的なものと解してはならない。本発明の範囲は、発明の詳細な説明の記載を参酌した上で、特許請求の範囲の各請求項によって示され、そこに記載された文言と均等の意味及び範囲内でのすべての変更を含む。
【図面の簡単な説明】
【００８２】
【図１】この発明の一実施例に従ったシステムの全体構成を示す概略図である。
【図２】汎用コンピュータの外観を示す図である。
【図３】図２に示すコンピュータの機能的ブロック図である。
【図４】この発明の実施例に従ったシステムで用いられるサーバを例示する機能的ブロック図である。
【図５】この発明の実施例に従ったクライアントを例示する機能的ブロック図である。
【図６】この発明の実施例に従ったサーバの登録ユニットを実現するプログラムのフローチャートである。
【図７】この発明の実施例に従ったサーバ内のクロック発生器の機能を実現するプログラムのフローチャートである。
【図８】この発明の実施例に従ったサーバ内のメッセージ受信ユニットの機能を実現するプログラムのフローチャートである。
【図９】この発明の実施例に従ったサーバ内の性能チェックユニットの機能を実現するプログラムのフローチャートである。
【図１０】この発明の実施例に従ったクライアントプログラムのフローチャートである。
【符号の説明】
【００８３】
２０  システム；３０  サーバ；３２、３４、３６、３８、４０  クライアント；１２０  コンピュータシステム；１４０  コンピュータ
【図１】
2005107727.tif 000003
【図２】
2005107727.tif 000004
【図３】
2005107727.tif 000005
【図４】
2005107727.tif 000006
【図５】
2005107727.tif 000007
【図６】
2005107727.tif 000008
【図７】
2005107727.tif 000009
【図８】
2005107727.tif 000010
【図９】
2005107727.tif 000011
【図１０】
2005107727.tif 000012
【外国語明細書】
2005107727000001.pdf
2005107727000002.pdf
2005107727000003.pdf
2005107727000004.pdf