(57)【特許請求の範囲】
【請求項１】
自装置と送信先装置との間の通信に関するコネクション番号、及び、送信先装置の送信先識別子を含むデータを記憶するコネクション管理表と、
送信先装置の送信先識別子、送信先装置の内部バス速度、及び、次回送信可能時刻を含むデータを記憶する送信先管理表と、
コネクション確立時に、送信先装置の内部バス速度を含むコネクション確立応答を送信先装置から受信するコネクション管理手段と、
前記コネクション管理手段からコネクション確立の通知を受信し、前記コネクション管理表にデータを作成し、さらに、前記送信先管理表に送信先識別子に対応するデータがない場合、前記コネクション管理手段により受信された送信先装置の内部バス速度を含むデータを作成する表管理手段と、
前記表管理手段により作成された前記コネクション管理表から、次のコネクションについてのコネクション番号及び送信先識別子を選択し、前記表管理手段により作成された前記送信先管理表から、選択された送信先識別子についての次回送信可能時刻を取得し、取得された次回送信可能時刻と現在時間との比較結果に応じて送信キューを選択する送信キュー選択手段と
を備えた通信制御装置。
【請求項２】
前記送信先管理表は、内部バス速度の代わりに、最小送信間隔に関するデータ、単位長データの伝送に要する時間に関するデータ、又は、送信先プロセッサ処理速度等の転送速度に関連するデータのいずれかを記憶することを特徴とする請求項１に記載の通信制御装置。
【請求項３】
前記表管理手段は、前記コネクション管理表及び前記送信先管理表によって、送信先識別子毎に選択されるコネクションの順番を示すリストをさらに作成し、前記送信キュー選択手段は、作成されたリストに従い、ひとつの送信先識別子についての複数のコネクションを順次選択するようにしたことを特徴とする請求項１又は２に記載の通信制御装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、通信制御装置に係り、特に、Ｉ／Ｏバス等の内部バスの転送速度が異なる複数の計算機・通信制御装置等の装置間において、データ損失のない効率的なデータ転送を行う通信制御装置に関する。
【０００２】
【従来の技術】
一般に、計算機間の通信では、送信側計算機から送出されるデータパケットが、ネットワークを経由して受信側計算機に受け取られる。この際、送信側計算機では、例えば送信データに対してプロトコル処理を行い、データに制御情報を付加してパケットを生成する。生成されたパケットは、計算機内部バス（ホストバス、Ｉ／Ｏバス等）を経由してネットワークアダプタに送られ、ネットワークに送出される。一方、受信側計算機では、ネットワークアダプタで受信されたパケットは、Ｉ／Ｏバス、ホストバス等の内部バスを経由してメモリに格納される。さらに受信側計算機では、例えば、メモリに格納されたパケットの内容に対してプロトコル処理を行い、データを取り出す等の処理を行う。
【０００３】
ここで、計算機間の通信を効率よく行うために、データパケットを１つずつ間隔をおいて送信するのではなく、複数のデータパケットを連続して送信することが行われる。この場合、受信側計算機での受信処理能力を越えた速度でパケットを送信すると、受信側計算機において受信失敗によるデータ損失が発生する。このようなデータ損失をなくすためには、送信側においてデータの送信量を制御する必要がある。ここで、受信処理能力としては、計算機の内部バスの転送速度、プロセッサの処理速度、メモリ等からの読出し・書込み速度等が影響する。
【０００４】
データ損失をなくすためには、例えば、インターネットで標準的に使用されている通信プロトコルＴＣＰ（Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ）では、受信側計算機の受信データ用バッファの空き容量から送信側計算機が送信できるデータ量を決定している（文献「Ｉｎｔｅｒｎｅｔｗｏｒｋｉｎｇ  Ｗｉｔｈ  ＴＣＰ／ＩＰ，  Ｖｏｌｕｍｅ  ＩＩ：  Ｄｅｓｉｇｎ，  Ｉｍｐｌｅｍｅｎｔａｔｉｏｎ，  ａｎｄ  Ｉｎｔｅｒｎａｌｓ」（Ｄｏｕｇｌａｓ  Ｅ．  Ｃｏｍｅｒ  ａｎｄ  Ｄａｖｉｄ  Ｌ．  Ｓｔｅｖｅｎｓ，  Ｐｒｅｎｔｉｃｅ−Ｈａｌｌ  Ｉｎｔｅｒｎａｔｉｏｎａｌ，  Ｉｎｃ．，  １９９１，  ＩＳＢＮ：０−１３−４６５３７８−５）の第１４章５節（ｐｐ．  ２６５−２６９）等参照。）。この技術により、受信側のバッファの空き容量不足のために受信に失敗し発生するデータ損失を防ぐことができる。
【０００５】
【発明が解決しようとする課題】
従来、Ｉ／Ｏバスやホストバス等の計算機の内部バスの転送速度はネットワークのデータ伝送速度（ネットワーク速度）よりも高速であったため、内部バスの転送速度が通信の性能に影響することはなかった（又は少なかった）。しかし、近年、ネットワーク速度が高速になり、ネットワーク速度が内部バスの転送速度よりも高速である計算機システムが存在するようになった。こうしたシステムでは、受信側計算機の内部バスの転送速度が送信側計算機の内部バスの転送速度よりも遅い場合、受信側のネットワークアダプタが受け取ったデータを内部バスを介してメモリに格納する処理の性能が、システムのデータ転送速度の隘路となる。
【０００６】
このように、ネットワーク速度が送信側計算機及び受信側計算機の内部バスの転送速度よりも高速で、かつ受信側計算機の内部バスの転送速度が送信側計算機の内部バスの転送速度よりも遅い場合、ＴＣＰ等で用いられている従来の方法では、次のような問題がある。
【０００７】
すなわち、受信側計算機の受信バッファの空き容量から送信できるデータ量を決定する方法では、送信側でデータを連続して送信すると、ネットワークアダプタが内部バスを介して受信データをメモリに格納する処理が終了する前に、次に送信されたデータが到着する場合がある。このため、受信側計算機では、受信失敗によるデータ損失が発生する。その結果、送信側計算機と受信側計算機との間では、失われたデータの再送が必要となり、よって、このような計算機システムでは効率の良い通信を行うことはできない。
【０００８】
本発明は、以上の点に鑑み、内部バスの転送速度・プロセッサ処理速度等が異なる計算機・通信制御装置等の装置間の通信において、受信側での受信失敗によるデータ損失を防ぎ、効率的な通信を可能とする通信制御装置を提供することを目的とする。
【０００９】
【課題を解決するための手段】
本発明の解決手段によると、
自装置と送信先装置との間の通信に関するコネクション番号、及び、送信先装置の送信先識別子を含むデータを記憶するコネクション管理表と、
送信先装置の送信先識別子、送信先装置の内部バス速度、及び、次回送信可能時刻を含むデータを記憶する送信先管理表と、
コネクション確立時に、送信先装置の内部バス速度を含むコネクション確立応答を送信先装置から受信するコネクション管理手段と、
前記コネクション管理手段からコネクション確立の通知を受信し、前記コネクション管理表にデータを作成し、さらに、前記送信先管理表に送信先識別子に対応するデータがない場合、前記コネクション管理手段により受信された送信先装置の内部バス速度を含むデータを作成する表管理手段と、
前記表管理手段により作成された前記コネクション管理表から、次のコネクションについてのコネクション番号及び送信先識別子を選択し、前記表管理手段により作成された前記送信先管理表から、選択された送信先識別子についての次回送信可能時刻を取得し、取得された次回送信可能時刻と現在時間との比較結果に応じて送信キューを選択する送信キュー選択手段と
を備えた通信制御装置を提供する。
【００１０】
また、本発明の他の解決手段によると、計算機システム内において、プロセッサとメモリがホストバスに接続されており、通信制御装置がＩ／Ｏバスに接続されており、ホストバスとＩ／Ｏバスを中継するバスブリッジが存在し、該バスブリッジを介してＩ／Ｏバス及びホストバス上でデータを転送することで、通信制御装置とメモリとの間のデータ転送を行う計算機システムであって、送信データを格納する送信キューと受信データを格納する受信キューを複数持ち、送信キューに格納したデータは任意の受信側計算機の受信キューに送達し、送信キューと受信キューの組合せを一意に特定する手段を持つ計算機システムにおいて、通信制御装置が接続されているＩ／Ｏバスの転送速度の値を保持する手段と、複数の送信キューの中からデータを送信する送信キューを選択する手段と、送信キューと受信キューの組合せと、相手通信制御装置との対応を示すコネクション管理表を格納するためのメモリと、相手通信制御装置ごとに、接続されているＩ／Ｏバスの転送速度の値とデータを送信可能な時刻を格納する送信先管理表を格納するためのメモリを有することを特徴とする通信制御装置を提供する。
【００１１】
また、本発明は、前記コネクション管理表及び前記送信先管理表を更新するための手段と、送信キューと受信キューの組合せの作成及び削除を行うための手段を有することを特徴とする。
また、本発明は、相手通信制御装置が接続されているＩ／Ｏバスの転送速度をもとにデータを送信する送信キューを選択することで、送信先通信制御装置に対するデータの送信を一定時間だけ遅らせてデータパケット送信の時間間隔を空けるための手段を有することを特徴とする。
【００１２】
さらに、本発明は、相手通信制御装置が接続されているＩ／Ｏバスの転送速度をもとにデータを送信する送信キューを選択することで、送信先通信制御装置に対するデータの送信をデータパケットの長さによって決定する可変長の時間だけ遅らせてデータパケット送信の時間間隔を空けるための手段を有することを特徴とする。
【００１３】
【発明の実施の形態】
（１）通信制御装置についての構成及び動作概要
図１は、本発明に係る通信システム全体の構成図である。図１において、複数の計算機１００及び１１０及び１１１が、ネットワーク１６２を介して接続されている。ここでは、計算機の具体的構成を、送信側計算機１００を例に説明する。
【００１４】
計算機１００内では、プロセッサ１２０とメモリ１３０が、ホストバス１６０に接続されている。通信制御装置１５０は、計算機１００内でＩ／Ｏバス１６１に接続されるとともに、外部のネットワーク１６２に接続されている。ホストバス１６０とＩ／Ｏバス１６１との間には、バスブリッジ１４０が存在し、バスブリッジ１４０がホストバス１６０とＩ／Ｏバス１６１との間のデータを中継して転送を行う。通信制御装置１５０とメモリ１３０との間のデータ転送は、バスブリッジ１４０を介して、Ｉ／Ｏバス１６１及びホストバス１６０上でデータを転送することにより行われる。受信側計算機１１０、１１１も同様の構成である。
【００１５】
メモリ１３０内には、通信を行う複数のアプリケーション１３１、１３２等の命令列及びデータが格納されている。アプリケーション１３１、１３２は、送信データを格納する送信キュー１３３、１３５、１３７等と、受信データを格納する受信キュー１３４、１３６、１３８等を保持する。２台の計算機間で通信を行うとき、これらの計算機はデータ転送の前に計算機間のコネクションを作成する。ここで、コネクションとは、通信を行う２つの計算機内の送信キューと受信キューの組合せであって、一方の計算機内の送信キューに格納したデータが、他方の計算機内の受信キューに送達（送信及び格納）されるようにした接続のことである。計算機内において、１つのコネクションには、１組の送信キューと受信キューが含まれる。この例では、送信キュー１３３及び受信キュー１３４、送信キュー１３５及び受信キュー１３６、送信キュー１３７及び受信キュー１３８がそれぞれ１つのコネクションに対応する。１つのアプリケーションは、１つまたは複数のコネクションをもつ。送信キューに格納したデータを、対応する別の計算機の受信キューに送達することで、計算機間の通信が行われる。
【００１６】
通信制御装置１５０内のメモリ５１０は、コネクション管理表６００及び送信先管理表７００を備える。コネクション管理表６００は、例えば、コネクションと相手通信制御装置（又は、相手計算機）との対応を示す表である。ある１つの相手通信制御装置（又は、相手計算機）には、１つまたは複数のコネクションが対応する。送信先管理表７００は、例えば、相手通信制御装置（又は、相手計算機）ごとに、接続されているＩ／Ｏバスの転送速度の値と、データを送信可能な時刻とを格納する表である。なお、この実施の形態では、特に転送速度の隘路がＩ／Ｏバスである場合を対象として説明するが、転送速度の隘路がＩ／Ｏバス以外による場合は、適宜のバスを対象としてその転送速度を記憶するようにしても良い。また、コネクション管理表６００及び表管理手段７００は、通信制御装置１５０内のメモリ５１０に格納されるが、計算機１００のメモリ１３０やその他の適宜のメモリに格納することも可能である。
【００１７】
コネクション管理手段２００は、例えば、コネクション管理表６００のコネクションの作成と削除を行う。表管理手段３００は、例えば、コネクション管理表６００と送信先管理表７００の更新を行う。送信キュー選択手段４００は、例えば、メモリ１３０の複数の送信キューからデータを送信する送信キューを選択する。自Ｉ／Ｏバス速度保持手段５００は、例えば、通信制御装置１５０が接続されているＩ／Ｏバス１６１の転送速度の値を保持する。コネクション管理手段２００、表管理手段３００、送信キュー選択手段４００、自Ｉ／Ｏバス速度保持手段５００は、通信制御装置１５０内に格納されるが、計算機１００のメモリ１３０等の適宜の構成内に命令列及びデータとして格納することも可能である。
【００１８】
ＤＭＡ制御部５３０は、例えば、メモリ１３０と送受信バッファ５４０との間のデータ転送を行う。ＤＭＡ制御部５３０によるデータの転送は、直接Ｉ／Ｏバス１６１と行うこと、又は、制御装置５２０を介して行うこと等適宜実施することができる。送受信バッファ５４０は、例えば、送信データと受信データを一時的に格納する。送受信部５５０は、例えば、送受信バッファ５４０からデータを取り出し、パケットを作成してネットワーク１６２に送信し、また、ネットワーク１６２からパケットを受信し、データを取り出して送受信バッファ５４０に格納する。送受信部５５０によるデータの送受は、直接ネットワーク１６２と行うこと、又は、制御装置５２０を介して行うこと等適宜実施することができる。制御装置５２０は、通信制御装置内の機器からのデータの取り出し、記録及びこれらの機器の動作等を司り、内部に格納されたプログラムにしたがって上記の各機器の動作を制御する。
【００１９】
つぎに、本発明に関連する一般的なパケット送受信について説明する。
図２は、送信側計算機と受信側計算機との間におけるパケットの送受信を示す説明図である。送信側８２１と受信側８２２との計算機間の通信は、コネクションの確立、データの転送、コネクションの切断の３つの段階からなる。ここで、コネクションの確立とは、２台の計算機間でコネクションを作成することをいい、コネクション確立パケットとは、コネクションを確立するために２台の計算機間で交換するパケットをいう。また、コネクションの切断とは、２台の計算機間で確立されているコネクションを削除することをいい、コネクション切断パケットとは、コネクションを切断するために２台の計算機間で交換するパケットをいう。
【００２０】
まず、コネクション確立段階において、送信側計算機８２１は、受信側計算機８２２に対して、コネクションの確立を要求するパケット（コネクション確立要求パケット）８２３を送信する。受信側計算機８２２は、コネクション確立要求パケット８２３を受信すると、送信側計算機８２１に対してコネクションの確立を承認するパケット（コネクション確立応答パケット）８２４を送信する。送信側計算機８２１は、このコネクション確立応答パケット８２４を受信する。こうして、送信側計算機８２１と受信側計算機８２２との間でコネクションが確立され、送信側計算機８２１及び受信側計算機８２２内に、送信キューと受信キューの組が１つずつ作成される。
【００２１】
つぎに、データ転送段階において、送信側計算機８２１は、受信側計算機８２２に対して、データパケット８２５、８２６、８２７等を送信する。なお、受信側計算機８２２は、データパケットを受信したとき、データパケットを受信したことを通知するパケットを送信側計算機８２１に対して送信してもよい。
【００２２】
コネクション切断段階において、送信側計算機８２１は、受信側計算機８２２に対して、コネクションの切断を要求するパケット（コネクション切断要求パケット）８２８を送信する。受信側計算機８２２は、コネクション切断要求パケット８２８を受信すると、送信側計算機８２１に対してコネクションの切断を承認するパケット（コネクション切断応答パケット）８２９を送信する。送信側計算機８２１は、コネクション切断応答パケット８２９を受信する。こうして、送信側計算機８２１と受信側計算機８２２との間でコネクションが切断され、送信側計算機８２１及び受信側計算機８２２内の送信キューと受信キューが削除される。
【００２３】
上述のコネクション確立段階、データ転送段階、コネクション切断段階において、送信側計算機８２１と受信側計算機８２２の役割は対称的なものであり、パケットはどちらの計算機からでも送信することが可能である。すなわち、コネクション確立要求パケット、データパケット、コネクション切断要求パケットは、受信側計算機８２２から送信することもできる。
【００２４】
つぎに、本発明に係る通信制御装置について、再び図１を参照して、動作概要を説明する。以下、Ｉ／Ｏバスの転送速度に基づくデータ送信の例について説明するが、本発明はこれに限定されるものではない。
まず、コネクション確立段階においては、各々の計算機１００、１１０、１１１は、通信制御装置１５０等が接続されているＩ／Ｏバス１６１等の転送速度を保持する。そして、受信側計算機１１０、１１１は、データ転送を開始する前に、送信キューと受信キューの組合せを作成し、通信制御装置が接続されているＩ／Ｏバスの転送速度を、通信を行う相手通信制御装置に対して通知する。このようにして、送信側計算機１００の通信制御装置１５０は、受信側計算機１１０、１１１の相手通信制御装置が接続されているＩ／Ｏバスの転送速度を取得する。また、通信制御装置１５０は、送信キューと受信キューの組合せと、相手通信制御装置との対応を示すコネクション管理表６００を保持する。ここで、ある１つの相手通信制御装置には、１つまたは複数の送信キューと受信キューの組合せが対応する。また、通信制御装置１５０は、相手通信制御装置ごとに、接続されているＩ／Ｏバスの転送速度の値とデータを送信可能な時刻を格納する送信先管理表７００を保持する。
【００２５】
つぎに、データ転送段階においては、通信制御装置１５０は、データ送信時、複数の送信キューからデータを送信する送信キューを決定する。この決定処理は、例えば、以下に述べる方法により行う。まず、通信制御装置１５０は、複数の送信キューの中から送信キューを１つ選択する。つぎに、コネクション管理表６００が参照されて、選択した送信キューに対応する送信先の通信制御装置が選択される。次に、送信先管理表７００が参照されて、選択した送信先通信制御装置が、最後に送信を行った時刻から一定の時間間隔が経過しているかが検査される。この検査は、送信先管理表７００から、データを送信可能な時刻を取得し、現在時刻と比較することで行われる。データを送信可能な時刻が現在時刻よりも小さい場合、最後にデータを送信してから一定の時間間隔が経過しているので、選択した送信キューがデータ送信する送信キューとして決定される。データ送信後、現在時刻に一定時間間隔を加えた時刻が、次にデータを送信可能な時刻として、送信先管理表７００に格納される。データを送信可能な時刻が現在時刻よりも大きい場合、最後にデータを送信してから一定の時間間隔が経過していないので、別の送信キューが選択されて、上述のような検査が行われる。送信可能な送信キューが選択されるまで、上述の送信キューの選択と時刻の検査が繰り返し行われる。上述のデータ送信の一定の時間間隔は、相手通信制御装置が接続されているＩ／Ｏバスの転送速度から決定される。
【００２６】
図３は、従来技術と本発明との比較を示す動作説明図である。図３（Ａ）に示すように、従来技術では、送信側計算機８０１がデータパケット８０３、８０４を連続して送信する。受信側計算機８０２では、データパケット８０３に対する受信処理８０８の実行中に、続いて送信されたデータパケット８０４が到着する場合が生じるため、このデータパケット８０４を受信することができない。このため、誤りのないデータ転送を行うためには、喪失したデータをデータパケット８０５として再送し、受信処理８０９を行う必要がある。これに対して、図３（Ｂ）に示すように、本発明では、送信側計算機８１１において、送信間隔８１６、８１７を空けてデータパケット８１３、８１４、８１５を送信するため、受信側計算機８１２では、各データパケット８１３に対する受信処理８１８を終了したあとで、次のデータパケット８１４を受信し、受信処理８１９を行うことができる。
【００２７】
以上のように、送信側計算機が相手通信制御装置に対してデータを送信する時間間隔を空けることにより、受信側計算機では、通信制御装置がＩ／Ｏバスを介して受信データをメモリに格納する受信処理等を終了した後に、次に送信されたデータを受信することができる。これにより、受信失敗によるデータ損失が発生しないようになる。
【００２８】
（２）通信制御装置についての詳細動作
以下に、本発明に係る通信制御装置についての動作を詳細に説明する。
【００２９】
まず、コネクション管理表６００、送信先管理表７００、及び、コネクション確立パケットについて説明する。
【００３０】
図４は、コネクション管理表の内容の一例を示す説明図である。コネクション管理表６００において、コネクション番号６０１は、１つの計算機内で、他の通信装置や他の計算機等との間に確立された一意なコネクションの番号を保持する。送信先識別子６０２は、通信システム全体において、データの送信先を一意に識別するための値（他の通信装置や他の計算機等の装置についての値）を保持する。送信先識別子は、例えば、通信制御装置ごとに割り当てられたネットワークアドレス、または、計算機ごとに割り当てられた計算機番号、または、計算機番号とＩ／Ｏバス番号、又は、処理のボトルネックとなる内部バス番号等の組合せ等である。キュー長６０３は、各コネクションに対応する送信キューに置かれている送信データの数を保持する。データの送信時、オペレーティングシステムまたはアプリケーション等が送信キューのキュー長６０３の値を記入及び更新する。
【００３１】
図５は、送信先管理表の内容の一例を示す説明図である。送信先管理表７００において、送信先識別子７０１は、通信システム全体において、データの送信先を一意に識別するための値（他の通信装置や他の計算機等の装置についての値）を保持する（図４のそれと同様である。）。相手Ｉ／Ｏバス速度７０２は、通信相手の通信制御装置が接続されているＩ／Ｏバスの転送速度の値を保持する。Ｉ／Ｏバスの転送速度は、例えば、Ｉ／Ｏバスのビット幅に動作周波数を乗じたものである。ここでは、一例として、２１１２（＝３２ビット×６６ＭＨｚ、又は、６４ビット×３３ＭＨｚ）、１０５６（＝３２ビット×３３ＭＨｚ）、４２２４（＝６４ビット×６６ＭＨｚ）等の各値を用いている。次回送信可能時刻７０３は、相手通信制御装置に対してデータを送信することのできる時刻を保持する。ここでは、一例として、基準時間からの時間等で表している。
【００３２】
図６は、コネクション確立パケットの一例の説明図である。コネクション確立パケットにおいて、送信先ネットワークアドレス２４１は、コネクション確立パケット送信先の通信制御装置（又は、計算機）等に割り当てられたネットワークアドレスである。送信元ネットワークアドレス２４２は、コネクション確立パケット送信元の通信制御装置（又は、計算機）等に割り当てられたネットワークアドレスである。送信元識別子２４３は、通信システム全体において、コネクション確立パケットの送信元（通信制御装置又は計算機等の装置）を一意に識別するための識別子である。これにより、例えば、ひとつのネットワークアドレスに対し、そのＩ／Ｏバス等の内部バスに送信元となる複数の通信制御装置・計算機等が備えられている場合に、それを特定することができる。送信元Ｉ／Ｏバス速度２４４は、コネクション確立パケット送信元の通信制御装置が接続されているＩ／Ｏバスの転送速度である。その他の情報２４５には、コネクション確立に必要なその他の情報を適宜含めることができる。ここで、その他の情報としては、例えば、送信データの番号等がある。コネクション確立時、２台の計算機間でこのようなコネクション確立パケットを交換することにより、相手のＩ／Ｏバス速度を取得することができる。
【００３３】
つぎに、各手段の詳細動作をフローチャートを参照して説明する。
【００３４】
図７は、送信キュー選択手段の処理手順を示すフローチャートである。通信制御装置１５０の電源投入後、送信キュー選択手段４００は、送信キューの選択処理を開始する（ステップ４０１）。送信キュー選択手段４００は、コネクション管理表６００を参照して、コネクションを１つ選択する（ステップ４０２）。この選択は、例えば、以下のように行う。すなわち、現在選択しているコネクションが存在する場合、コネクション管理表６００で次のコネクションを選択する。例えば、図４において、コネクション「１」を現在選択している場合はコネクション「２」を選択し、コネクション「５」を現在選択している場合はコネクション「１」を選択する。現在選択しているコネクションが存在しない場合は、コネクション管理表６００の最初のコネクションを選択する。
【００３５】
コネクション選択後、選択したコネクションに対応する送信キューに送信データが存在するか否かを検査する（ステップ４０３）。これは、例えば、キュー長６０３を参照して、その値が０かどうかにより判断することができる。送信データが存在しない場合、ステップ４０２に戻り、次のコネクションを選択する。一方、送信データが存在する場合、送信先識別子６０２に基づいて、送信先管理表７００を参照し、選択しているコネクションに対応する送信先を選択する（ステップ４０４）。
【００３６】
つぎに、送信先管理表７００において、選択した送信先の行の次回送信可能時刻７０３を取得し、この値が現在時刻以下であるか否かを検査する（ステップ４０５）。次回送信可能時刻が現在時刻よりも大きい場合、選択している送信先に対して送信を行うことは不可能と判断し、ステップ４０２に戻り、次の送信キューを選択する。一方、次回送信可能時刻が現在時刻以下である場合、選択しているコネクションの送信キューからデータを転送するよう、ＤＭＡ制御部５３０に指示を行う（ステップ４０６）。選択したコネクションを表管理手段３００に通知し（ステップ４０７）、ステップ４０２に戻り、次のコネクションを選択する。なお、表管理手段３００は、後述のように、コネクション管理表６００及び通信先管理表７００の更新等を行う。
【００３７】
図８、図９、図１０、図１１は、コネクション管理手段２００の処理手順を示すフローチャートである。
【００３８】
図８は、コネクション管理手段がアプリケーションまたはオペレーティングシステムからコネクション確立要求を受信した場合の処理手順を示すフローチャートである。コネクション管理手段２００は、アプリケーションまたはオペレーティングシステムからコネクション確立要求を受信すると（ステップ２０１）、コネクション確立パケットを通信相手となる計算機に対して送信する（ステップ２０２）。つぎに、コネクション管理手段２００は、相手計算機からのコネクション確立パケットの応答を受信すると（ステップ２０３）、表管理手段３００に対してコネクションを確立したことを通知する（ステップ２０４）。さらに、コネクション管理手段２００は、アプリケーションまたはオペレーティングシステムに対してコネクションを確立したことを通知して（ステップ２０５）、処理を終了する。
【００３９】
図９は、コネクション管理手段が他の計算機からコネクション確立要求を受信した場合の処理手順を示すフローチャートである。コネクション管理手段２００は、他の計算機からコネクション確立要求パケットを受信すると（ステップ２１１）、コネクション確立応答パケットをその計算機に対して送信する（ステップ２１２）。つぎに、コネクション管理手段２００は、表管理手段３００に対してコネクションを確立したことを通知する（ステップ２１３）。さらに、コネクション管理手段２００は、アプリケーションまたはオペレーティングシステムに対してコネクションを確立したことを通知して（ステップ２１４）、処理を終了する。
【００４０】
図１０は、コネクション管理手段がアプリケーションまたはオペレーティングシステムからコネクション切断要求を受信した場合の処理手順を示すフローチャートである。コネクション管理手段２００は、アプリケーションまたはオペレーティングシステムからコネクション切断要求を受信すると（ステップ２２１）、コネクション切断パケットを、コネクションを確立している通信相手の計算機に対して送信する（ステップ２２２）。つぎに、コネクション管理手段２００は、表管理手段３００に対してコネクションを切断したことを通知し（ステップ２２３）、アプリケーションまたはオペレーティングシステムに対してコネクションを切断したことを通知して（ステップ２２４）、処理を終了する。
【００４１】
図１１は、コネクション管理手段が通信相手の計算機からコネクション切断要求を受信した場合の処理手順を示すフローチャートである。コネクション管理手段２００は、コネクションを確立している通信相手の計算機からコネクション切断要求パケットを受信すると（ステップ２３１）、表管理手段３００に対してコネクションを切断したことを通知する（ステップ２３２）。つぎに、コネクション管理手段２００は、アプリケーションまたはオペレーティングシステムに対してコネクションを切断したことを通知して（ステップ２３３）、処理を終了する。
【００４２】
図１２、１３、１４は、表管理手段３００の処理手順を示すフローチャートである。
図１２は、表管理手段がコネクション管理手段からコネクション確立の通知を受信した場合の処理手順を示すフローチャートである。表管理手段３００は、コネクション管理手段２００からコネクション確立の通知を受信すると（ステップ３０１）、コネクション管理表６００の中に新しいコネクション用の行を作成する（ステップ３０２）。つぎに、表管理手段３００は、通知されたコネクションに対応する送信先識別子の値を、作成した行の送信先識別子６０２の欄に書き込み（ステップ３０３）、値０をキュー長６０３の欄に書き込む（ステップ３０４）。
【００４３】
つぎに、表管理手段３００は、送信先管理表７００の送信先識別子７０１の欄を参照して、送信先管理表７００中に通知されたコネクションの送信先に対応する行が存在するか否かを検査する（ステップ３０５）。ここで、送信先管理表７００の中に通知されたコネクションの送信先に対応する行が存在する場合、処理を終了する。一方、送信先管理表７００の中に通知されたコネクションの送信先に対応する行が存在しない場合、表管理手段３００は、送信先管理表７００の中に新しい送信先用の行を作成する（ステップ３０６）。表管理手段３００は、通知されたコネクションに対応する送信先識別子の値を、作成した行の送信先識別子７０１の欄に書き込み（ステップ３０７）、通信相手のＩ／Ｏバスの転送速度を作成した行の相手Ｉ／Ｏバス速度７０２の欄に書き込む（ステップ３０８）。さらに、表管理手段３００は、現在時刻を作成した行の次回送信可能時刻７０３の欄に書き込み（ステップ３０９）、処理を終了する。
【００４４】
図１３は、表管理手段がコネクション管理手段からコネクション切断の通知を受信した場合の処理手順を示すフローチャートである。表管理手段３００は、コネクション管理手段２００からコネクション切断の通知を受信すると（ステップ３１１）、コネクション管理表６００の送信先識別子６０２を参照して、送信先の同じコネクションが他に存在するか否かの検査を行う（ステップ３１２）。送信先の同じコネクションが他に存在する場合、表管理手段３００は、通知されたコネクションに対応する行をコネクション管理表６００から削除して（ステップ３１４）、処理を終了する。一方、送信先の同じコネクションが他に存在しない場合、表管理手段３００は、送信先管理表７００からこの送信先に対応する行を削除し（ステップ３１３）、さらに、通知されたコネクションに対応する行をコネクション管理表６００から削除して（ステップ３１４）、処理を終了する。
【００４５】
図１４は、表管理手段が送信キュー選択手段からコネクション選択の通知を受信した場合の処理手順を示すフローチャートである。表管理手段３００は、送信キュー選択手段４００からコネクション選択の通知を受信すると（ステップ３２１）、ＤＭＡ制御部５３０が選択したコネクションのデータをメモリ１３０内の送信キューから送受信バッファ５４０に転送し終ったか否かを検査する（ステップ３２２）。転送が終了していない場合、表管理手段３００は、転送が終了するまでステップ３２２の検査を繰り返す。この転送が終了すると、表管理手段３００は、次回送信可能時刻を計算し、送信先管理表７００の通知されたコネクションの行において、次回送信可能時刻７０３の欄に書き込み（ステップ３２３）、コネクション管理表６００のキュー長６０３の欄の値を１だけ減らし（ステップ３２４）、処理を終了する。
【００４６】
（３）送信可能時刻の計算
つぎに、表管理手段３００による送信先管理表７００中の送信可能時刻の計算方法について説明する。
図１５は、表管理手段における次回送信可能時刻の計算方法の一例を示す説明図である。まず、表管理手段３００は、最大データ長、通信制御装置が接続されているＩ／Ｏバスの転送速度、相手通信制御装置が接続されているＩ／Ｏバスの転送速度から、最小送信間隔を計算する（式３３０）。ここで、最大データ長とは、例えば、通信を行う計算機間を接続するネットワークで定められている最大のデータ長である。つぎに、現在時刻と最小送信間隔の和を計算し、これを次回送信可能時刻とする（式３３１）。
【００４７】
図１５で示したように、最小送信間隔は、最大データ長、通信制御装置が接続されているＩ／Ｏバスの転送速度、相手通信制御装置が接続されているＩ／Ｏバスの転送速度から決まり、コネクション確立中は一定の値である。したがって、コネクション確立時に最小送信間隔を計算しておくことで、データ送信時の次回送信可能時刻の計算を簡単にし、表管理手段における処理を高速化することも可能である。
【００４８】
次回送信可能時刻の計算を高速に行うための、本発明の他の実施の形態を、以下に説明する。
図１６は、表管理手段における次回送信可能時刻の計算を高速化する場合の送信先管理表の内容の一例を示す説明図である。ここでは、送信先管理表７００において、相手Ｉ／Ｏバス速度の欄の代わりに、最小送信間隔７１２の欄を備える。最小送信時間間隔７１２としては、例えば、時間、タイムスロット数、動作クロック数等の適宜の時間を表す値を用いることができる。表管理手段３００は、コネクション確立時に最小送信間隔７１２の欄を作成して、データを書き込む。表管理手段３００において次回送信可能時刻を計算する処理（図１４のステップ３２３）では、現在時刻と最小送信間隔の和を計算する。
【００４９】
図１５に示す次回送信可能時刻の計算方法においては、最大データ長よりも短いデータを送信する場合、受信側において受信処理を行っていない期間が存在し、通信の効率が低下する。そこで、データ送信の時間間隔を決定する別の方法として、相手通信制御装置が接続されているＩ／Ｏバスの転送速度と、送信するデータの長さから時間間隔を決定することもできる。受信側計算機１１０、１１１において、通信制御装置１５０からＩ／Ｏバス１６１を介してデータをメモリに転送する処理に要する時間は、転送するデータの長さによって変化する。以下の方法によると、送信データの長さに応じて、受信側計算機１１０、１１１がデータをメモリに転送する時間だけ、送信側計算機１００でのデータ送信の時間間隔を空けることができ、一層効率の良い通信を行うことができる。以下に、この方法について説明する。
【００５０】
図１７は、送信データが短い場合の動作説明図である。上述の方法では、最大データ長、通信制御装置が接続されているＩ／Ｏバスの転送速度、及び、相手通信制御装置が接続されているＩ／Ｏバスの転送速度に基づいて、最小送信間隔を計算する。そのため、次のデータ送信までに空ける最小送信間隔は、最大データ長のデータを送信した場合に受信側において受信処理を連続して行うだけの時間になる。図１７において、送信側８３１では送信処理８３６の後にデータパケット８３３を送信し、送信処理８３７の後にデータパケット８３４を送信し、また、送信処理８３８の後にデータパケット８３５を送信する。受信側８３２ではデータパケット８３３の受信後に受信処理８３９を行い、データパケット８３４の受信後に受信処理８４０を行い、また、データパケット８３５の受信後に受信処理８４１を行う。しかし、送信データパケットが短い場合、受信処理８３９と８４０との間、及び受信処理８４０と８４１との間に無駄な時間が存在する。
【００５１】
そこで、以下に説明するように、本発明の他の実施の形態は、送信データの長さが変化する場合に効率のよい通信を行うためのものである。
図１８は、送信データの長さが変化する場合に効率のよい通信を行うための表管理手段における次回送信可能時刻の計算方法を示す説明図である。まず、表管理手段３００は、通信制御装置が接続されているＩ／Ｏバスの転送速度、相手通信制御装置が接続されているＩ／Ｏバスの転送速度から、乗数を計算する（式３４０）。次に、送信データのデータ長に乗数を乗じた値と、現在時刻との和を計算し、これを次回送信可能時刻とする（式３４１）。このようにして、送信するデータの長さに基づいてデータ送信時の時間間隔を空けるため、短いデータを送信する場合でも受信側において連続して受信処理を行え、効率のよい通信を行うことができる。
【００５２】
（４）コネクションを平等に選択するための他の実施の形態
図７に示す送信キュー選択手段の処理方法では、送信先の同じコネクションが複数存在する場合、選択されにくいコネクションが存在する可能性がある。例えば、図４のコネクション管理表６００において、コネクション「２」、「４」、「５」の送信先識別子６０２はいずれも「２」である。そして、まず、コネクション「４」からデータを送信した際、送信先管理表７００の次回送信可能時刻７０３に時刻を書き込む。つぎに、コネクション「５」を選択するが、コネクション「５」の送信先識別子はコネクション「４」の送信先識別子と同じであるため、図７のステップ４０５の検査「次回送信可能時刻≦現在時刻」が否となり、コネクション「５」からデータを送信できない場合がある。その後、次のコネクション「３」からデータを送信し、コネクション「４」を選択したとき、図７のステップ４０５の検査「次回送信可能時刻≦現在時刻」が成功し、コネクション「４」から再びデータを送信する。その後、さらに次のコネクション「５」を選択するが、再び図７のステップ４０５の検査「次回送信可能時刻≦現在時刻」が否となり、コネクション「５」からデータを送信できない場合が生じる。このように、送信先が同じ別のコネクションが複数存在すると、その特定のコネクションからは送信できないことがある。
【００５３】
そこで、コネクションを平等に選択するための、本発明の他の実施の形態を以下に説明する。
図１９は、コネクションを平等に選択するためのコネクション管理表の他の実施の形態を示す説明図である。このコネクション管理表６２０では、一例として、図４のコネクション管理表６００に、次コネクション６２４の欄を追加するようにした。
【００５４】
図２０は、コネクションを平等に選択するための送信先管理表の他の実施の形態を示す説明図である。この送信先管理表７２０では、一例として、図４の送信先管理表７００に、次コネクション７２４の欄を追加するようにした。
【００５５】
この実施の形態では、図１９のコネクション管理表６２０と図２０の送信先管理表７２０を用いて、送信先識別子ごとにコネクションのリストを作る。例えば、コネクション管理表６２０では、コネクション「２」、「４」、「５」の送信先識別子は同じく「２」であるので、コネクション「２」、「４」、「５」でリストを１つ作成する。このリストは、送信の順番を表したもので、例えば次のように構成する。すなわち、送信先管理表７２０の送信先識別子「２」の行において、次コネクション７２４の欄は「２」である。コネクション管理表６２０のコネクション「２」の行において、次コネクション６２４の欄は「５」である。また、コネクション「５」の行において、次コネクション６２４の欄は「４」である。コネクション「４」の行の次コネクション６２４の欄は「終」マークである。このようにして、送信先識別子「２」に対して、コネクション「２」、コネクション「５」、コネクション「４」という順を表したリストを作成する。
【００５６】
図２１は、コネクションを平等に選択するための、送信キュー選択手段の処理手順の他の実施の形態を示すフローチャートである。
通信制御装置の電源投入後、送信キュー選択手段４００は、送信キューの選択処理を開始する（ステップ４１１）。送信先管理表７２０の送信先識別子７０１の欄を参照して、送信先を１つ選択する。この選択は、例えば、以下のように行う。すなわち、現在選択している送信先（送信先識別子の番号）が存在する場合、送信先管理表７２０で次の送信先を選択する。例えば、図２０において、送信先識別子「１」を現在選択している場合は送信先識別子「２」を選択し、送信先識別子「３」を現在選択している場合は送信先識別子「１」を選択する。現在選択している送信先が存在しない場合は、送信先管理表７２０の最初の送信先を選択する（ステップ４１２）。
【００５７】
送信キュー選択手段４００は、送信先選択後、送信先管理表７２０において、選択した送信先の行の次回送信可能時刻７０３を取得し、この値が現在時刻以下であるか否かを検査する（ステップ４１３）。次回送信可能時刻が現在時刻よりも大きい場合、選択している送信先に対して送信を行うことは不可能と判断し、ステップ４１２に戻り、次の送信先を選択する。一方、次回送信可能時刻が現在時刻以下である場合、選択している送信先の行の次コネクション７２４を取得し、次コネクションに対応するコネクションをコネクション管理表６２０から選択する（ステップ４１４）。
【００５８】
コネクション選択後、選択したコネクションに対応する送信キューに送信データが存在するか否かを検査する（ステップ４１６）。例えば、キュー長６０３を参照することで、このような検査をすることができる。送信データが存在しない場合、選択しているコネクションの行の次コネクション６２４を取得し、この値が「終」マークであるか否かを検査する（ステップ４１９）。次コネクションの値が「終」マークである場合、選択しているコネクションは選択している送信先に対応する最後のコネクションなので、ステップ４１２に戻り、次の送信先を選択する。次コネクションの値が「終」マークでない場合、選択しているコネクションの行の次コネクション６２４を取得し、次コネクションに対応するコネクションを選択する（ステップ４１５）。送信データのあるコネクションを選択するか、次コネクション欄が「終」マークのコネクションを選択するまで、ステップ４１６、４１９、４１５を繰り返す。
【００５９】
一方、送信データが存在する場合、選択しているコネクションの送信キューからデータを転送するよう、ＤＭＡ制御部５３０に指示を行う（ステップ４１７）。送信キュー選択手段４００は、選択したコネクションを表管理手段３００に通知し（ステップ４１８）、ステップ４１２に戻り、次の送信先を選択する。
【００６０】
図２２、図２３及び図２４は、コネクションを平等に偏りなく選択するための、表管理手段３００の処理手順の他の実施の形態を示すフローチャートである。図２２は、コネクションを平等に選択するための、表管理手段がコネクション管理手段からコネクション確立の通知を受信した場合の処理手順を示すフローチャートである。表管理手段３００は、コネクション管理手段２００からコネクション確立の通知を受信すると（ステップ３５１）、コネクション管理表６２０の中に新しいコネクション用に行を作成する（ステップ３５２）。つぎに、表管理手段３００は、通知されたコネクションに対応する送信先識別子の値を、作成した行の送信先識別子６０２の欄に書き込む（ステップ３５３）。つぎに、表管理手段３００は、送信先管理表７２０の中に、通知されたコネクションの送信先に対応する行が存在するか否かを検査する（ステップ３５４）。送信先管理表７２０の中に通知されたコネクションの送信先に対応する行が存在する場合、その送信先に対応するコネクションのリストに通知されたコネクションを挿入するように、コネクション管理表６２０及び送信先管理表７２０の次コネクション６２４及び７２４の欄を更新し（ステップ３５５）、処理を終了する。
【００６１】
一方、送信先管理表７２０の中に通知されたコネクションの送信先に対応する行が存在しない場合、表管理手段３００は、送信先管理表７２０の中に新しい送信先用に行を作成する（ステップ３５６）。通知されたコネクションに対応する送信先識別子の値を、作成した行の送信先識別子７０１の欄に書き込み（ステップ３５７）、通信相手のＩ／Ｏバスの転送速度を作成した行の相手Ｉ／Ｏバス速度７０２の欄に書き込み（ステップ３５８）、現在時刻を作成した行の次回送信可能時刻７０３の欄に書き込む（ステップ３５９）。送信先管理表７２０の次コネクション７２４の欄に通知されたコネクション番号を書き込み、コネクション管理表６２０に作成した行の次コネクション６２４の欄に「終」マークを書き込むことで、送信先に対応するコネクションのリストを作成し（ステップ３６０）、処理を終了する。
【００６２】
ステップ３５５において、通知されたコネクションをリストに挿入する処理は、例えば、次のように行う。例えば、図１９のコネクション管理表６２０及び図２０の送信先管理表７２０では、送信先識別子「２」に対して、コネクション「２」、コネクション「５」、コネクション「４」の順のリストを作成している。ここで、一例として、通知されたコネクション番号が「６」で、対応する送信先識別子が「２」である場合を説明する。この場合、送信先管理表７２０の送信先識別子「２」の行において、次コネクション７２４の欄を「２」から「６」に変更する。さらに、コネクション管理表６２０に作成したコネクション「６」の行において、次コネクション６２４の欄に「２」を記入する。このようにして、送信先識別子「２」に対して、コネクション「６」、コネクション「２」、コネクション「４」、コネクション「５」の順にリストを変更する。
【００６３】
図２３は、コネクションを平等に選択するための、表管理手段がコネクション管理手段からコネクション切断の通知を受信した場合の処理手順を示すフローチャートである。表管理手段３００は、コネクション管理手段２００からコネクション切断の通知を受信すると（ステップ３７１）、コネクション管理表６２０を参照して、送信先が同じコネクションが他に存在するか否かの検査を行う（ステップ３７２）。送信先の同じコネクションが他に存在する場合、表管理手段３００は、送信先に対応するコネクションのリストから通知されたコネクションを削除するように、コネクション管理表６２０及び送信先管理表７２０の次コネクションの欄を更新し（ステップ３７５）、通知されたコネクションに対応する行をコネクション管理表６２０から削除して（ステップ３７４）、処理を終了する。
【００６４】
一方、送信先の同じコネクションが他に存在しない場合、送信先管理表７２０からこの送信先に対応する行を削除し（ステップ３７３）、通知されたコネクションに対応する行をコネクション管理表６２０から削除して（ステップ３７４）、処理を終了する。
【００６５】
ステップ３７５において、通知されたコネクションをリストから削除する処理は、例えば、次のように行う。図１９のコネクション管理表６２０及び図２０の送信先管理表７２０では、送信先識別子「２」に対して、コネクション「２」、コネクション「５」、コネクション「４」の順のリストを作成している。例えば、通知されたコネクション番号が「５」の場合、コネクション管理表６２０のコネクション「２」の行において、次コネクション６２４の欄を「５」から「４」に変更することで、送信先識別子「２」に対して、コネクション「２」、コネクション「４」の順にリストを変更する。また、例えば、通知されたコネクション番号が「２」の場合、送信先管理表７２の送信先識別子「２」の行において、次コネクション７２４の欄を「２」から「５」に変更することで、送信先識別子「２」に対して、コネクション「５」、コネクション「４」の順にリストを変更する。
【００６６】
図２４は、コネクションを平等に選択するための、表管理手段が送信キュー選択手段からコネクション選択の通知を受信した場合の処理手順を示すフローチャートである。表管理手段３００は、送信キュー選択手段４００からコネクション選択の通知を受信すると（ステップ３８１）、ＤＭＡ制御部５３０が選択したコネクションのデータをメモリ１３０内の送信キューから送受信バッファ５４０に転送し終ったか否かを検査する（ステップ３８２）。転送が終了していない場合、表管理手段３００は、転送が終了するまでステップ３８２の検査を繰り返す。この転送が終了すると、表管理手段３００は、次回送信可能時刻を計算し、送信先管理表７２０の通知されたコネクションの行において、次回送信可能時刻７０３の欄に書き込み（ステップ３８３）、コネクション管理表６２０のキュー長６０３の欄の値を１だけ減らす（ステップ３８４）。つぎに、表管理手段３００は、通知されたコネクションを送信先に対応するコネクションのリストの最後に移動するように、コネクション管理表６２０及び送信先管理表７２０の次コネクションの欄を更新し（ステップ３８５）、処理を終了する。
【００６７】
ステップ３８５において、通知されたコネクションをリストの最後に移動する処理は、例えば、次のように行う。図１９のコネクション管理表６２０及び図２０の送信先管理表７２０では、送信先識別子「２」に対して、コネクション「２」、コネクション「５」、コネクション「４」の順のリストを作成している。ここで、例えば、通知されたコネクション番号が「５」の場合、コネクション管理表６２０のコネクション「２」の行において、次コネクション６２４の欄を「５」から「４」に変更し、コネクション「４」の行の次コネクション６２４の欄を「終」から「５」に変更し、コネクション「５」の行の次コネクション６２４の欄を「４」から「終」に変更する。このようにして、送信先識別子「２」に対して、コネクション「２」、コネクション「４」、コネクション「５」の順にリストを変更する。
【００６８】
また、例えば、通知されたコネクション番号が「２」の場合、送信先管理表７２０の送信先識別子「２」の行の次コネクション７２４の欄を「２」から「５」に変更する。さらに、コネクション管理表６２０のコネクション「４」の行において、次コネクション６２４の欄を「終」から２に変更し、コネクション「２」の行の次コネクション６２４の欄を「５」から「終」に変更する。このようにして、送信先識別子「２」に対して、コネクション「５」、コネクション「４」、コネクション「２」の順にリストを変更する。
【００６９】
なお、上述のリストは、コネクション管理表６２０及び送信先管理表７２０とは別個に適宜記憶されても良いし、リストの次のアドレス・コネクション番号等を示すデータを各行のデータに加えることで各行のデータ間でチェーン構造を構成するようにしても良い。
【００７０】
（５）応用
また、上述の説明では、主に、計算機内のＩ／Ｏバスが転送速度のボトルネックである場合を説明したが、この他適宜の内部バスがボトルネックとなる場合にも、本発明を適用することができる。さらに、チェックサム等のエラー有無等の制御データをプロセッサ等が計算する処理速度や、メモリとのデータの読出し速度及び書込み速度等がボトルネックとなる場合にも、本発明を適用することができる。その際、内部バス速度の代わりに、例えば、最小送信間隔に関するデータ、単位長データの伝送に要する時間に関するデータ、又は、送信先プロセッサ処理速度等の転送速度に関連するデータ等を適宜記憶するように構成すればよい。また、コネクションを平等に選択する場合にも、相手Ｉ／Ｏバス速度に限らず、上述のような適宜のデータを使用することもできる。さらに、直接ボトルネックとなるデータ以外の転送速度等に関連する適宜のデータを用いて、送信タイミングを図るようにしても良い。
【００７１】
さらに、以上の説明では、特に計算機内の内部バスに接続された通信制御装置について説明したが、通信制御装置は、計算機内に限らず、計算機の外部の通信制御装置、計算機以外の装置に内蔵又は外部接続される通信制御装置等の適宜の装置にも、本発明を適用することができる。また、あるネットワークアドレスの装置内に設けられたＩ／Ｏバス等の内部バスに複数の通信制御装置・計算機等の装置が備えられている場合にも、その装置の送信先識別子を特定することにより、本発明を適用することができる。
【００７２】
【発明の効果】
以上述べたように、本発明によれば、送信側装置（計算機等）において相手装置（計算機等）に対してデータを送信する時間間隔を空けるようにしたので、受信側装置では、通信制御装置が内部バスを介して受信データをメモリに格納する受信処理を終了した後に、次に送信されたデータを受信することができる。このため、受信失敗によるデータ損失を防ぎ、効率的な通信を達成することができる。
【図面の簡単な説明】
【図１】本発明に係る通信システム全体の構成図。
【図２】送信側計算機と受信側計算機との間におけるパケットの送受信を示す説明図。
【図３】従来技術と本発明との比較を示す動作説明図。
【図４】コネクション管理表の内容の一例を示す説明図。
【図５】送信先管理表の内容の一例を示す説明図。
【図６】コネクション確立パケットの一例の説明図。
【図７】送信キュー選択手段の処理手順を示すフローチャート。
【図８】コネクション管理手段がアプリケーションまたはオペレーティングシステムからコネクション確立要求を受信した場合の処理手順を示すフローチャート。
【図９】コネクション管理手段が他の計算機からコネクション確立要求を受信した場合の処理手順を示すフローチャート。
【図１０】コネクション管理手段がアプリケーションまたはオペレーティングシステムからコネクション切断要求を受信した場合の処理手順を示すフローチャート。
【図１１】コネクション管理手段が通信相手の計算機からコネクション切断要求を受信した場合の処理手順を示すフローチャート。
【図１２】表管理手段がコネクション管理手段からコネクション確立の通知を受信した場合の処理手順を示すフローチャート。
【図１３】表管理手段がコネクション管理手段からコネクション切断の通知を受信した場合の処理手順を示すフローチャート。
【図１４】表管理手段が送信キュー選択手段からコネクション選択の通知を受信した場合の処理手順を示すフローチャート。
【図１５】表管理手段における次回送信可能時刻の計算方法の一例を示す説明図。
【図１６】表管理手段における次回送信可能時刻の計算を高速化する場合の送信先管理表の内容の一例を示す説明図。
【図１７】送信データが短い場合の動作説明図。
【図１８】送信データの長さが変化する場合に効率のよい通信を行うための表管理手段における次回送信可能時刻の計算方法を示す説明図。
【図１９】コネクションを平等に選択するためのコネクション管理表の他の実施の形態を示す説明図。
【図２０】コネクションを平等に選択するための送信先管理表の他の実施の形態を示す説明図。
【図２１】コネクションを平等に選択するための、送信キュー選択手段の処理手順の他の実施の形態を示すフローチャート。
【図２２】コネクションを平等に選択するための、表管理手段がコネクション管理手段からコネクション確立の通知を受信した場合の処理手順を示すフローチャート。
【図２３】コネクションを平等に選択するための、表管理手段がコネクション管理手段からコネクション切断の通知を受信した場合の処理手順を示すフローチャート。
【図２４】コネクションを平等に選択するための、表管理手段が送信キュー選択手段からコネクション選択の通知を受信した場合の処理手順を示すフローチャート。
【符号の説明】
１００・・・送信側計算機
１１０・・・受信側計算機１
１１１・・・受信側計算機１
１２０・・・プロセッサ
１３０・・・メモリ
１３１・・・アプリケーション１
１３２・・・アプリケーション２
１３３・・・送信キュー１
１３４・・・受信キュー１
１３５・・・送信キュー２
１３６・・・受信キュー２
１３７・・・送信キューＮ
１３８・・・受信キューＮ
１４０・・・Ｉ／Ｏブリッジ
１５０・・・通信制御装置
１６０・・・ホストバス
１６１・・・Ｉ／Ｏバス
１６２・・・ネットワーク
２００・・・コネクション管理手段
３００・・・表管理手段
４００・・・送信キュー選択手段
５００・・・自Ｉ／Ｏバス速度保持手段
６００・・・コネクション管理表
７００・・・送信先管理表
５１０・・・メモリ
５２０・・・制御装置
５３０・・・ＤＭＡ制御部
５４０・・・送受信バッファ
５５０・・・送受信部
【図１】
0003569149.tif 000002
【図２】
0003569149.tif 000003
【図３】
0003569149.tif 000004
【図４】
0003569149.tif 000005
【図５】
0003569149.tif 000006
【図６】
0003569149.tif 000007
【図７】
0003569149.tif 000008
【図８】
0003569149.tif 000009
【図９】
0003569149.tif 000010
【図１０】
0003569149.tif 000011
【図１１】
0003569149.tif 000012
【図１２】
0003569149.tif 000013
【図１３】
0003569149.tif 000014
【図１４】
0003569149.tif 000015
【図１５】
0003569149.tif 000016
【図１６】
0003569149.tif 000017
【図１７】
0003569149.tif 000018
【図１８】
0003569149.tif 000019
【図１９】
0003569149.tif 000020
【図２０】
0003569149.tif 000021
【図２１】
0003569149.tif 000022
【図２２】
0003569149.tif 000023
【図２３】
0003569149.tif 000024
【図２４】
0003569149.tif 000025