(57)【要約】【課題】データ転送の通信区間のつなぎ目でデータサイズの変換のための遅延時間を抑制する。【解決手段】第１の装置と第２の装置が複数の通信区間で接続されてデータの転送を行うデータ転送システムであって、第１の装置は、第１の装置内の通信区間と、第１の装置と第２の装置を接続する通信区間のそれぞれについて通信可能な最大のデータサイズをそれぞれ設定し、第２の装置は、第２の装置内の通信区間に、通信可能な最大のデータサイズを設定し、第１の装置は、第２の装置内の通信区間に設定されたデータサイズを取得して、第１の装置内の通信区間のデータサイズと、第１の装置と第２の装置を接続する通信区間のデータサイズと比較して、最小のデータサイズを共通のデータサイズとして選択し、前記通信区間のそれぞれについて共通のデータサイズで再設定する。【選択図】図１Ａ
2015014951.tif 000002
【特許請求の範囲】
【請求項１】
第１の装置と第２の装置が複数の通信区間で接続されてデータの転送を行うデータ転送システムであって、
前記第１の装置は、
前記第１の装置内の通信区間と、前記第１の装置と第２の装置を接続する通信区間のそれぞれについて通信可能な最大のデータサイズをそれぞれ設定し、
前記第２の装置は、
前記第２の装置内の通信区間に、通信可能な最大のデータサイズを設定し、
前記第１の装置は、
前記第２の装置内の通信区間に設定されたデータサイズを取得して、前記第１の装置内の通信区間のデータサイズと、前記第１の装置と第２の装置を接続する通信区間のデータサイズと比較して、最小のデータサイズを共通のデータサイズとして選択し、前記通信区間のそれぞれについて前記共通のデータサイズで再設定することを特徴とするデータ転送システム。
【請求項２】
請求項１に記載のデータ転送システムであって、
前記第１の装置内の通信区間は、前記第１の装置内でシリアル通信を行う第１の通信区間を含み、
前記第２の装置内の通信区間は、前記第２の装置内でシリアル通信を行う第２の通信区間を含み、
前記第１の装置と第２の装置を接続する通信区間は、前記第１の装置と第２の装置でシリアル通信を行う第３の通信区間を含み、
前記第１の装置は、
前記第１の通信区間において１回の通信で送受信する第１のデータサイズを保持する第１のデータサイズ記憶部と、
前記第２の通信区間において１回の通信で送受信する第２のデータサイズを保持する第２のデータサイズ記憶部と、
前記第３の通信経路において１回の通信で送受信する第３のデータサイズを保持する第３のデータサイズ記憶部と、を有し、
前記第１の通信経路で設定可能な最大値を第１のデータサイズとして前記第１のデータサイズ記憶部に格納し、
前記第３の通信経路で設定可能な最大値を第３のデータサイズとして前記第３のデータサイズ記憶部に格納し、
前記第２の装置から前記第２のデータサイズを取得して前記第２のデータサイズ記憶部に格納し、
前記第２の装置は、
前記第２の通信経路で設定可能な最大値を第２のデータサイズとして設定し、
前記第１の装置は、
前記第１のデータサイズと、前記第２のデータサイズ及び前記第３のデータサイズを比較して、最も値の小さいデータサイズを前記共通のデータサイズとして前記第１のデータサイズ記憶部と第３のデータサイズ記憶部に格納し、前記共通のデータサイズを前記第２の装置に通知し、
前記第２の装置は、
前記第１の装置から受信した共通のデータのサイズを第２の通信経路で送受信するデータのサイズとして再設定することを特徴とするデータ転送システム。
【請求項３】
請求項２に記載のデータ転送システムであって、
前記第１の通信区間は、第１のデバイスと第２のデバイスを接続し、
前記第１のデバイスは、１回の通信で送受信するデータサイズの最大値が予め設定され、
前記第２のデバイスは、１回の通信で送受信するデータサイズの最大値が予め設定され、
前記第１の装置は、
前記第１のデバイスの前記データサイズの最大値と、前記第２のデバイスの前記データサイズの最大値のうち小さい方を、前記第１の通信区間のデータサイズとして設定することを特徴とするデータ転送システム。
【請求項４】
請求項２に記載のデータ転送システムであって、
前記第３の通信区間は、第１の装置の第２のデバイスと、第２の装置の第３のデバイスとを接続し、
前記第２のデバイスは、１回の通信で送受信するデータサイズの最大値が予め設定され、
前記第３のデバイスは、１回の通信で送受信するデータサイズの最大値が予め設定され、
前記第１の装置は、
前記第２のデバイスの前記データサイズの最大値と、前記第３のデバイスの前記データサイズの最大値のうち小さい方を、前記第３の通信区間のデータサイズとして設定することを特報とするデータ転送システム。
【請求項５】
第１の計算機と第２の計算機が複数の通信区間で接続されてデータの転送を行う計算機システムであって、
前記第１の計算機は、
前記第１の計算機内の通信区間と、前記第１の計算機と第２の計算機を接続する通信区間のそれぞれについて通信可能な最大のデータサイズをそれぞれ設定し、
前記第２の計算機は、
前記第２の計算機内の通信区間に、通信可能な最大のデータサイズを設定し、
前記第１の計算機は、
前記第２の計算機内の通信区間に設定されたデータサイズを取得して、前記第１の計算機内の通信区間のデータサイズと、前記第１の計算機と第２の計算機を接続する通信区間のデータサイズと比較して、最小のデータサイズを共通のデータサイズとして選択し、前記通信区間のそれぞれについて前記共通のデータサイズで再設定することを特徴とする計算機システム。
【請求項６】
請求項５に記載の計算機システムであって、
前記第１の計算機内の通信区間は、前記第１の計算機内でシリアル通信を行う第１の通信区間を含み、
前記第２の計算機内の通信区間は、前記第２の計算機内でシリアル通信を行う第２の通信区間を含み、
前記第１の計算機と第２の計算機を接続する通信区間は、前記第１の計算機と第２の計算機でシリアル通信を第３の通信区間を含み、
前記第１の計算機は、
前記第１の通信区間において１回の通信で送受信する第１のデータサイズを保持する第１のデータサイズ記憶部と、
前記第２の通信区間において１回の通信で送受信する第２のデータサイズを保持する第２のデータサイズ記憶部と、
前記第３の通信経路において１回の通信で送受信する第３のデータサイズを保持する第３のデータサイズ記憶部と、を有し、
前記第１の通信経路で設定可能な最大値を第１のデータサイズとして前記第１のデータサイズ記憶部に格納し、
前記第３の通信経路で設定可能な最大値を第３のデータサイズとして前記第３のデータサイズ記憶部に格納し、
前記第２の計算機から前記第２のデータサイズを取得して前記第２のデータサイズ記憶部に格納し、
前記第２の計算機は、
前記第２の通信経路で設定可能な最大値を第２のデータサイズとして設定し、
前記第１の計算機は、
前記第１のデータサイズと、前記第２のデータサイズ及び前記第３のデータサイズを比較して、最も値の小さいデータサイズを前記共通のデータサイズとして前記第１のデータサイズ記憶部と第３のデータサイズ記憶部に格納し、前記共通のデータサイズを前記第２の計算機に通知し、
前記第２の計算機は、
前記第１の計算機から受信した共通のデータのサイズを第２の通信経路で送受信するデータのサイズとして再設定することを特徴とする計算機システム。
【請求項７】
請求項６に記載の計算機システムであって、
前記第１の通信区間は、第１のデバイスと第２のデバイスを接続し、
前記第１のデバイスは、１回の通信で送受信するデータサイズの最大値が予め設定され、
前記第２のデバイスは、１回の通信で送受信するデータサイズの最大値が予め設定され、
前記第１の計算機は、
前記第１のデバイスの前記データサイズの最大値と、前記第２のデバイスの前記データサイズの最大値のうち小さい方を、前記第１の通信区間のデータサイズとして設定することを特徴とする計算機システム。
【請求項８】
請求項６に記載の計算機システムであって、
前記第３の通信区間は、第１の計算機の第２のデバイスと、第２の計算機の第３のデバイスとを接続し、
前記第２のデバイスは、１回の通信で送受信するデータサイズの最大値が予め設定され、
前記第３のデバイスは、１回の通信で送受信するデータサイズの最大値が予め設定され、
前記第１の計算機は、
前記第２のデバイスの前記データサイズの最大値と、前記第３のデバイスの前記データサイズの最大値のうち小さい方を、前記第３の通信区間のデータサイズとして設定することを特徴とする計算機システム。
【請求項９】
第１の計算機が第２の計算機と複数の通信区間を介して接続されてデータの転送を行うプログラムであって、
前記第１の計算機内の通信区間で、通信可能な最大のデータサイズを設定する第１のステップと、
前記第１の計算機と第２の計算機を接続する通信区間で、通信可能な最大のデータサイズを設定する第２のステップと、
前記第２の計算機から、前記第２の計算機内の通信区間に設定されたデータサイズを取得する第３のステップと、
前記第１の計算機内の通信区間のデータサイズと、前記第１の計算機と第２の計算機を接続する通信区間のデータサイズと比較して、最小のデータサイズを共通のデータサイズとして選択する第４のステップと、
前記通信区間のそれぞれについて前記共通のデータサイズを再設定する第５のステップと、
を前記第１の計算機に実行させることを特徴とするプログラム。
【請求項１０】
請求項９に記載のプログラムであって、
前記第１の計算機内の通信区間は、前記第１の計算機内でシリアル通信を行う第１の通信区間を含み、
前記第２の計算機内の通信区間は、前記第２の計算機内でシリアル通信を行う第２の通信区間を含み、
前記第１の計算機と第２の計算機を接続する通信区間は、前記第１の計算機と第２の計算機でシリアル通信を第３の通信区間を含み、
前記第１のステップは、
前記第１の通信経路で設定可能な最大値を第１のデータサイズとして設定し、
前記第２のステップは、
前記第３の通信経路で設定可能な最大値を第３のデータサイズとして設定し、
前記第３のステップは、
前記第２の計算機から、前記第２の装置内でシリアル通信を行う第２の通信区間に設定された第２のデータサイズを取得し、
前記第４のステップは、
前記第１のデータサイズと、前記第２のデータサイズ及び前記第３のデータサイズを比較して、最も値の小さいデータサイズを前記共通のデータサイズとして選択し、
前記第５のステップは、
前記第１の通信区間に前記共通のデータサイズを再設定し、前記第３の通信区間に前記共通のデータサイズを再設定し、前記共通のデータサイズを前記第２の計算機に通知することを特徴とするプログラム。
【請求項１１】
請求項１０に記載のプログラムであって、
前記第１の通信区間は、第１のデバイスと第２のデバイスを接続し、
前記第１のデバイスは、１回の通信で送受信するデータサイズの最大値が予め設定され、
前記第２のデバイスは、１回の通信で送受信するデータサイズの最大値が予め設定され、
前記第１のステップは、
前記第１のデバイスの前記データサイズの最大値と、前記第２のデバイスの前記データサイズの最大値のうち小さい方を、前記第１の通信区間のデータサイズとして設定することを特徴とするプログラム。
【請求項１２】
請求項１０に記載のプログラムであって、
前記第３の通信区間は、第１の計算機の第２のデバイスと、第２の計算機の第３のデバイスとを接続し、
前記第２のデバイスは、１回の通信で送受信するデータサイズの最大値が予め設定され、
前記第３のデバイスは、１回の通信で送受信するデータサイズの最大値が予め設定され、
前記第２のステップは、
前記第２のデバイスの前記データサイズの最大値と、前記第３のデバイスの前記データサイズの最大値のうち小さい方を、前記第３の通信区間のデータサイズとして設定することを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、計算機のデータ転送制御に関する。
【背景技術】
【０００２】
コンピュータで使用されるデータ転送システムは、ＰＣＩ  Ｅｘｐｒｅｓｓや、Ｆｉｂｒｅ  Ｃｈａｎｎｅｌ及びＩｎｆｉｎｉｂａｎｄに代表されるように、広帯域及び低遅延のものが要求されている。近年のデータ転送システムの転送速度は各世代毎に約２倍に高速化されているものの、遅延時間については大きな改善はない。それは、データ転送時には複数のデータ転送区間が存在し、区間をまたがるつなぎ目の部分の処理が大きいためである。このつなぎ目とは、プロトコル変換やデータサイズ変換等が含まれる。
【０００３】
現在のコンピュータで使用されている内部バス（またはインターコネクト）はＰＣＩ  Ｅｘｐｒｅｓｓ（非特許文献１）に代表されるシリアル通信が多い。従来のパラレル通信で採用されていたバーストモードのようなデータが延々と続くデータ転送は、シリアル通信では無くなり、必ず、ある固定長のデータサイズでデータ転送することになる。このデータ転送は、１つのパケットに所定のデータサイズでデータを格納し、このパケット単位でシリアル通信を行う。１回（１パケット）あたりに送受信可能なデータサイズをペイロードサイズ（Ｐａｙｌｏａｄ  Ｓｉｚｅ）と呼んでいる。ＰＣＩ  Ｅｘｐｒｅｓｓでは、仕様上、ペイロードサイズは１２８、２５６、５１２、１，０２４、２，０４８、４，０９６バイトの６種が存在するが、Ｉ／Ｏコントローラの実装上、１２８バイトや２５６バイトを採用する例が多い。一方、外部バスであるＦｉｂｒｅ  Ｃｈａｎｎｅｌでは、ペイロードサイズは２，０４８バイトである。
【０００４】
また、シリアル通信では１Ｇｂｐｓを超えるビットレートで通信することを前提に検討されているために、このペイロードサイズのデータに対してＣＲＣ（Ｃｙｃｌｉｃ  Ｒｅｄｕｎｄａｎｃｙ  Ｃｈｅｃｋ）が付加されていたり、全体のパケットに対してもＣＲＣが付加されている。
【０００５】
さらに、シリアル通信ではクロック信号を内包するために、符号化／復号化（Ｅｎｃｏｄｅ／Ｄｅｃｏｄｅ）という作業が必要になる。ＰＣＩ  ＥｘｐｒｅｓｓのＧｅｎｅｒａｔｉｏｎ−１（２．５Ｇｂｐｓ）／−２（５．０Ｇｂｐｓ）  では  ８ｂ／１０ｂ符号、Ｇｅｎｅｒａｔｉｏｎ−３（８．０Ｇｂｐｓ）では、１２８ｂ／１３０ｂ符号が採用されている。
【０００６】
シリアル通信では受信したデータを解釈するまでに、復号化（Ｄｅｃｏｄｅ）、Ｌｉｎｋ  ＣＲＣのチェック、パケットのアンカプセル（Ｕｎ−Ｃａｐｓｕｌｅ）、データの取り出し、Ｄａｔａ  ＣＲＣのチェックの処理が行われる。送信の際には、Ｄａｔａ  ＣＲＣの生成・付加、パケットのカプセル、Ｌｉｎｋ  ＣＲＣの生成・付加、暗号化（Ｅｎｃｏｄｅ）の処理が行われる。
【０００７】
例えば、ペイロードサイズが２５６バイトのコンピュータＡからペイロードサイズが１２８バイトのコンピュータＢに対して、２，０４８バイトのペイロードサイズの通信経路（Ｃｈａｎｎｅｌ）Ｃ経由で、４，０９６バイトのデータを転送する場合には、次のような手順になる。
【０００８】
コンピュータＡのＩ／ＯコントローラはＣＰＵからの４，０９６バイトのデータを２５６バイト×１６個のデータに分割して、ネットワークコントローラへ送信する。コンピュータＡのネットワークコントローラでは通信経路Ｃのペイロードサイズに応じて、コンピュータＡのＩ／Ｏコントローラから受信した２５６バイト×１６個の分割データを、２，０４８バイト×２個のデータにまとめ、コンピュータＢのネットワークコントローラへ送信する。
【０００９】
コンピュータＢのネットワークコントローラではコンピュータＢのＩ／Ｏコントローラのペイロードサイズに応じて、受信した２，０４８バイト×２個のデータを１２８バイト×３２個のデータに分割して送信する。
【先行技術文献】
【非特許文献】
【００１０】
【非特許文献１】ＰＣＩ Ｅｘpress Base Specification Revision 3.0, Nov.10,2010, page608-609,613-618.
【発明の概要】
【発明が解決しようとする課題】
【００１１】
上記従来の技術では、１回の送信で送付可能なデータサイズ（ペイロードサイズ）が通信の区間ごとに異なるために、通信区間のつなぎ目でデータサイズを毎回変換しなければならず、コンピュータＡのネットワークコントローラでは、細切れになったデータを集約するための処理時間が必要となり、コンピュータＢのネットワークコントローラでは、大きなデータを細分化するための処理時間が必要となり、これらの処理時間が積算されることによって通信の遅延時間が増大する、という問題があった。
【００１２】
そこで本発明は、上記問題点に鑑みてなされたもので、データ転送の通信区間のつなぎ目でデータサイズの変換のための遅延時間を抑制することを目的とする。
【課題を解決するための手段】
【００１３】
本発明は、第１の装置と第２の装置が複数の通信区間で接続されてデータの転送を行うデータ転送システムであって、前記第１の装置は、前記第１の装置内の通信区間と、前記第１の装置と第２の装置を接続する通信区間のそれぞれについて通信可能な最大のデータサイズをそれぞれ設定し、前記第２の装置は、前記第２の装置内の通信区間に、通信可能な最大のデータサイズを設定し、前記第１の装置は、前記第２の装置内の通信区間に設定されたデータサイズを取得して、前記第１の装置内の通信区間のデータサイズと、前記第１の装置と第２の装置を接続する通信区間のデータサイズと比較して、最小のデータサイズを共通のデータサイズとして選択し、前記通信区間のそれぞれについて前記共通のデータサイズで再設定する。
【発明の効果】
【００１４】
したがって、本発明によれば、通信区間のつなぎ目となるデバイスで生じるデータサイズ変換のための遅延時間を最小限に抑えることが可能になる。
【図面の簡単な説明】
【００１５】
【図１Ａ】本発明の第１の実施例を示し、計算機システムの一例を示すブロック図である。
【図１Ｂ】本発明の第１の実施例を示し、コンピュータＢの一例を示すブロック図である。
【図２】本発明の第１の実施例を示し、パケットの構成を示すブロック図である。
【図３】本発明の第１の実施例を示し、計算機システムの初期化処理の一例を示すフローチャートの前半部である。
【図４】本発明の第１の実施例を示し、計算機システムの初期化処理の一例を示すフローチャートの後半部である。
【図５】本発明の第１の実施例を示し、パケットの転送処理の一例を示すフローチャートである。
【図６】本発明の第１の実施例を示し、データ転送の一例を示すシーケンス図である。
【図７】従来例を示し、データ転送の一例を示すシーケンス図である。
【図８】本発明の第１の実施例を示し、各性能レジスタのＭＡＸペイロードサイズの値の一例を示すテーブルである。
【図９】本発明の第１の実施例を示し、各コントロールレジスタのペイロードサイズの値の一例を示すテーブルである。
【図１０】本発明の第１の実施例を示し、各コントロールレジスタのＶａｌｉｄビットの値の一例を示すテーブルである。
【図１１】本発明の第２の実施例を示し、計算機システムの一例を示すブロック図である。
【図１２】本発明の第２の実施例を示し、コンピュータＡで行われる初期化処理の一例を示すフローチャートである。
【図１３】本発明の第２の実施例を示し、コンピュータＢで行われる初期化処理の一例を示すフローチャートである。
【発明を実施するための形態】
【００１６】
以下、本発明の一実施形態を添付図面に基づいて説明する。
【実施例１】
【００１７】
図１Ａは、本発明の第１の実施例を示し、計算機システムの一例を示すブロック図である。
【００１８】
図１Ａにおいて、コンピュータＡ１００１は、ＣＰＵ１００２、メモリ１００３、Ｉ／Ｏコントローラ（第１のデバイス）１０１１、ネットワークコントローラ（第２のデバイス）１０２１、Ｉ／Ｏコントローラ１０１１とネットワークコントローラ１０２１を接続するチャネル（Ｃｈａｎｎｅｌ）Ａ１００５と、を含む。
【００１９】
コンピュータＢ２００１はコンピュータＡ１００１と同様に構成され、ＣＰＵ２００２、メモリ２００３、Ｉ／Ｏコントローラ２０１１、ネットワークコントローラ（第３のデバイス）２０２１、Ｉ／Ｏコントローラ２０１１とネットワークコントローラ２０２１を接続するチャネルＢ２００５と、を含む。コンピュータＡ１００１とコンピュータＢ２００１はチャネルＣ１００６で接続される。各チャネルＡ１００５〜Ｃ１００６は、シリアル通信でデータの転送を行い、データはパケットに格納されて送受信される。
【００２０】
ここで、コンピュータＡ１００１、Ｂ２００１内のチャネルＡ１００５と、チャネルＢ２００５は、シリアル通信の通信経路で構成され、例えば、ＰＣＩ  Ｅｘｐｒｅｓｓが採用され、コンピュータＡ１００１とコンピュータＢ２００１間のチャネルＣもシリアル通信の通信経路で構成され、例えば、Ｆｉｂｒｅ  Ｃｈａｎｎｅｌ（ＦＣ）が採用された例を示す。
【００２１】
コンピュータＡのＩ／ＯコントローラはチャネルＡ１００５でのデータ転送時に使用するペイロードサイズ１０１３を格納するコントロールレジスタ（Ｃｏｎｔｒｏｌ  Ｒｅｇｉｓｔｅｒ）１０１２と、チャネルＡ１００５のハードウェアで転送可能なペイロードサイズの最大値（Ｍａｘペイロードサイズ）１０１６を格納する性能レジスタ（Ｃａｐａｂｉｌｉｔｉｅｓ  Ｒｅｇｉｓｔｅｒ）１０１５を具備する。なお、ペイロードサイズは、１回のパケット通信で送受信可能なデータのサイズを示す。
【００２２】
ネットワークコントローラ１０２１は、チャネルＡ１００５でのデータ転送に使用するペイロードサイズ１０２３を格納する上り（ＩｎＢｏｕｎｄ）コントロールレジスタ１０２２と、チャネルＡのハードウェアで転送可能なペイロードサイズの最大値（Ｍａｘ  ペイロードサイズ）１０２６を格納する上り性能レジスタ（ＩｎＢｏｕｎｄ  Ｃａｐａｂｉｌｉｔｉｅｓ  Ｒｅｇｉｓｔｅｒ）１０２５を具備する。
【００２３】
さらに、ネットワークコントローラ１０２１は、チャネルＣ１００６でデータ転送に使用するペイロードサイズ１０２８を格納する下り（ＯｕｔＢｏｕｎｄ）コントロールレジスタ１０２７と、チャネルＣ１００６のハードウェアが転送可能なペイロードサイズの最大値（Ｍａｘペイロードサイズ）１０３１を格納する下り性能レジスタ（ＯｕｔＢｏｕｎｄ  Ｃａｐａｂｉｌｉｔｉｅｓ  Ｒｅｇｉｓｔｅｒ）１０３０を具備する。なお、ネットワークコントローラ１０２１では、チャネルＣ１００６からチャネルＡ１００５へ向かう通信（パケット）を上り（ＩｎＢｏｕｎｄ）とし、チャネルＡ１００５からチャネルＣ１００６へ向かう通信（パケット）を下り（ＯｕｔＢｏｕｎｄ）とする。
【００２４】
さらに、ネットワークコントローラ１０２１は、データ転送先のコンピュータＢ２００１の内部通信経路（チャネルＢ２００５）でのデータ転送に使用するペイロードサイズ１０３３を格納するリモート（Ｒｅｍｏｔｅ）コントロールレジスタ１０３２を具備する。
【００２５】
各コントロールレジスタ１０１２、１０２２、１０２７、１０３２には初期化の完了または未完を示すＶａｌｉｄビット１０１４、１０２４、１０２９、１０３４が含まれる。Ｖａｌｉｄビット１０１４〜１０３４は複数のビットで構成することができる。本実施例では、Ｖａｌｉｄビット１０１４〜１０３４は、ペイロードサイズの算出処理が完了しているか否かを示す値であり、ペイロードサイズの算出をソフトウェアで実現している場合、これらのＶａｌｉｄビットがコントロールレジスタ内にある必要はない。
【００２６】
なお、メモリ１００３には、ＯＳ１００がロードされＣＰＵ１００２によって実行される。後述するパケットの送信は、ＯＳ１００が実行する例を示す。
【００２７】
図１Ｂは、コンピュータＢ２００１の詳細を示すブロック図である。コンピュータＢ２００１のＩ／Ｏコントローラ２０１１とネットワークコントローラ２０２１は、上記図１ＡのコンピュータＡ１００１と同様であり、各レジスタの符号は異なるが、機能は同一である。
【００２８】
図１０は、Ｖａｌｉｄビットの一例を示すテーブルである。Ｖａｌｉｄビット１０１４〜１０３４は、１６進で“０ｂ００”のときには初期化が未完であることを示す。Ｖａｌｉｄビット１０１４〜１０３４は、“０ｂ０１”のときにはコンピュータ内部の初期化が完了したことを示し、“０ｂ１１”のときには当該コンピュータに接続された他のコンピュータの初期化が完了したことを示す。
【００２９】
図８は、ＭＡＸペイロードサイズの一例を示すテーブルである。各性能レジスタ１０１５、１０２５、１０３０のＭａｘペイロードサイズ１０１６、１０２６、１０３１の値は、図８のテーブルで定義されたビットで表現される。Ｍａｘペイロードサイズ１０１６、１０２６、１０３１の値が“０ｂ０００”のときにＭＡＸペイロードサイズは６４バイトを示し、“０ｂ１１１”のときにＭＡＸペイロードサイズは８１９２バイトになることを示す。
【００３０】
なお、各性能レジスタ１０１５、１０２５、１０３０のＭａｘペイロードサイズ１０１６、１０２６、１０３１は、ハードウェアが転送可能な値を当該性能レジスタのハードウェアで保持しており、外部からは上書きできない。
【００３１】
また、各コントロールレジスタ１０１２、１０２２、１０２７、１０３２のペイロードサイズは各チャネルＡの両側（上流及び下流）のデバイスのＭａｘペイロードサイズから算出され、一般的には２つのＭａｘペイロードサイズのうちのどちらか小さいほうの値がペイロードサイズとして設定される。
【００３２】
図９は、ペイロードサイズの一例を示すテーブルである。各コントロールレジスタ１０１２、１０２２、１０２７、１０３２のペイロードサイズ１０１３、１０２３、１０２８、１０３３は、値が“０ｂ０００”のときにペイロードサイズは６４バイトに設定されたことを示し、“０ｂ１１１”のときにペイロードサイズが８１９２バイトに設定されたことを示す。
【００３３】
なお、上記図８〜１０の各テーブルは、メモリ１００３や図示しないストレージ装置に格納することができる。
【００３４】
また、以下の説明では、コンピュータＡ１００１では、Ｉ／Ｏコントローラ１０１１の性能レジスタ１０１５のＭＡＸペイロードサイズ１０１６と、ネットワークコントローラ１０２１の上り性能レジスタ１０２５のＭＡＸペイロードサイズ１０２６が２５６バイトで、下り性能レジスタ１０３０のＭＡＸペイロードサイズ１０３１が２０４８バイトの例を示す。また、コンピュータＢ２００１では、Ｉ／Ｏコントローラ２０１１の性能レジスタ２０１５のＭＡＸペイロードサイズ２０１６と、ネットワークコントローラ２０２１の上り性能レジスタ２０２５のＭＡＸペイロードサイズ２０２６が１２８バイトで、下り性能レジスタ２０３０のＭＡＸペイロードサイズ２０３１が２０４８バイトの例を示す。
【００３５】
図２にシリアル通信のパケット構造の一例を示す。図２は、ＰＣＩ  Ｅｘｐｒｅｓｓ等のシリアル通信で使用するパケットを物理層で見た例を示す。ひとつのパケットは、スタートフレーム２０１と、シーケンス番号２０２と、ヘッダ２０３と、データ（ペイロード）２０４と、データＣＲＣ２０５と、リンクＣＲＣ２０６及びエンドフレーム２０７から構成される。スタートフレーム２０１からエンドフレーム２０７までが物理層を構成する。シーケンス番号２０２からリンクＣＲＣ２０６までがデータリンク層を構成する。ヘッダ２０３からデータＣＲＣ２０５トランザクション層を構成する。
【００３６】
図３は、計算機システムの初期化処理の一例を示すフローチャートの前半部である。図４は同じく初期化処理の一例を示すフローチャートの後半部である。この処理は、コンピュータＡ１００１、コンピュータＢ２００１の起動時にそれぞれ実行される。以下では、コンピュータＡ１００１で行う処理について説明するが、コンピュータＢ２００１についても同様の処理が行われる。また、以下ではＣＰＵ１００２がメモリ１００３にロードした初期化プログラムで本発明の処理を実行する例を示す。
【００３７】
まず、ＣＰＵ１００２は、Ｉ／Ｏコントローラ１０１１とネットワークコントローラ１０２１間のチャネルＡ１００５について初期化を開始する。ＣＰＵ１００２は、Ｉ／Ｏコントローラ１０１１の性能レジスタ１０１５のＭＡＸペイロードサイズ１０１６と、ネットワークコントローラ１０２１の上り性能レジスタ１０２５のＭＡＸペイロードサイズ１０２６を取得する。そして、ＭＡＸペイロードサイズ１０１６と１０２６のうち設定可能な最大値を算出する（Ｓ１２）。この処理は、例えば、Ｉ／ＯコントローラのＭＡＸペイロードサイズ１０１６と、ネットワークコントローラ１０２１のＭＡＸペイロードサイズ１０２６のうち、ＣＰＵ１００２は、値の小さいデータサイズを選択する。
【００３８】
ＣＰＵ１００２は、ステップＳ１２で算出した値を、Ｉ／Ｏコントローラ１０１１のコントロールレジスタ１０１２のペイロードサイズ１０１３と、ネットワークコントローラ１０２１の上りコントロールレジスタ１０２２のペイロードサイズ１０２３にそれぞれ設定する（Ｓ１３）。
【００３９】
ＣＰＵ１００２は、コンピュータＡ１００１のＩ／Ｏコントローラ１０１１のＶａｌｉｄビット１０１４と、ネットワークコントローラ１０２１の上りコントロールレジスタ１０２２のＶａｌｉｄビット１０２４にローカル（計算機内）な初期化が完了したことを示す“０ｂ０１”を設定する（Ｓ１４）。
【００４０】
次に、ＣＰＵ１００２は、コンピュータＡ１００１とコンピュータＢ２００１の間を接続するチャネルＣ１００６の初期化を実行する（Ｓ１５）。
【００４１】
ＣＰＵ１００２は、コンピュータＡ１００１のネットワークコントローラ１０２１の下り性能レジスタ１０３０のＭＡＸペイロードサイズ１０３１と、コンピュータＢ２００１のネットワークコントローラ２０２１の下り性能レジスタ２０３０のＭＡＸペイロードサイズ２０３１を取得する。
【００４２】
そして、ＣＰＵ１００２は、コンピュータＡ１００１のＭＡＸペイロードサイズ１０３１と、コンピュータＢ２００１のＭＡＸペイロードサイズ２０３１のうち設定可能な最大値を算出する。つまり、コンピュータＡ１００１のＭＡＸペイロードサイズ１０３１と、ネットワークコントローラ２０２１のＭＡＸペイロードサイズ２０３１のうち、ＣＰＵ１００２は、値の小さい方を選択する。
【００４３】
ＣＰＵ１００２は、選択した値を、ネットワークコントローラ１０２１の下りコントロールレジスタ１０２７のペイロードサイズ１０２８に設定する（Ｓ１６）。
【００４４】
下りコントロールレジスタ１０２７のペイロードサイズ１０２８に値を設定したので、ＣＰＵ１００２は、下りコントロールレジスタ１０２７のＶａｌｉｄビット１０２９に、ローカル（計算機内）な初期化が完了したことを示す“０ｂ０１”を設定する（Ｓ１７）。
【００４５】
次に、コンピュータＡ１００１のネットワークコントローラ１０２１は、上りコントロールレジスタ１０２２の値を、コンピュータＢ２００１のネットワークコントローラ２０２１のリモートコントロールレジスタ２０３２へコピーする（Ｓ１８）。
【００４６】
コンピュータＢ２００１のネットワークコントローラ２０２１は、上りコントロールレジスタ２０２２の値を、コンピュータＡ１００１のネットワークコントローラ１０２１のリモートコントロールレジスタ１０３２へコピーする（Ｓ１９）。
【００４７】
ステップＳ１８、Ｓ１９の処理により、コンピュータＡ１００１のチャネルＡ１００５のペイロードの設定を格納した上りコントロールレジスタ１０２２の値が、コンピュータＢ２００１のネットワークコントローラ２０２１のリモートコントロールレジスタ２０３２のペイロードサイズ２０３３にコピーされ、コンピュータＢ２００１のチャネルＢ２００５のペイロードの設定を格納した上りコントロールレジスタ２０２２のペイロードサイズ２０２３が、コンピュータＡ１００１のネットワークコントローラ１０２１のリモートコントロールレジスタ１０３２のペイロードサイズ１０３３にコピーされる。
【００４８】
これにより、コンピュータＡ１００１は、接続先のコンピュータＢ２００１の内部の通信経路（チャネルＢ２００５）のペイロードサイズを取得し、コンピュータＢ１００１は、接続先のコンピュータＡ１００１の内部の通信経路（チャネルＡ１００５）のペイロードサイズを取得することができる。
【００４９】
コンピュータＡ１００１のＣＰＵ１００２は、通信先のコンピュータＢ２００１とのペイロードサイズの交換が終了したので、ネットワークコントローラ１０２１のリモートコントロールレジスタ１０３２のＶａｌｉｄビット１０３４にリモート（接続先）の初期化が完了したことを示す“０ｂ１１”を設定する（図４のＳ２０）。
【００５０】
ＣＰＵ１００２は、リモートコントロールレジスタ１０３２のペイロードサイズ１０３３を参照して、Ｉ／Ｏコントローラ１０１１とネットワークコントローラ１０２１間のチャネルＡ１００５の再設定を行う（Ｓ２１）。すなわち、ＣＰＵ１００２は、リモートコントロールレジスタ１０３２のペイロードサイズ１０３３と、上りコントロールレジスタ１０２２のペイロードサイズ１０２３とを比較して、小さい方を上りコントロールレジスタ１０２２のペイロードサイズ１０２３と、コントロールレジスタ１０１２のペイロードサイズ１０２３に設定する。
【００５１】
本実施例の場合、コンピュータＢ２００１のＩ／Ｏコントローラ２０１１の性能レジスタ（２０１５）とネットワークコントローラ２０２１の上り性能レジスタ（２０２５）のＭＡＸペイロードサイズ２０１６、２０２６が１２８バイトであるので、チャネルＢ２００５のペイロードサイズは１２８バイトに設定される。
【００５２】
これに対して、コンピュータＡ１００１のネットワークコントローラ１０２１では、性能レジスタ１０１５と上り性能レジスタ１０２５のＭＡＸペイロードサイズ１０２６は２５６バイトであり、チャネルＡ１００５のペイロードサイズは２５６バイトに設定されている。したがって、ＣＰＵ１００２は、リモートコントロールレジスタ１０３２のペイロードサイズ１０３３の方が、上りコントロールレジスタ１０２２のペイロードサイズ１０２３よりも小さいので、ペイロードサイズ１０３３の値を、Ｉ／Ｏコントローラ１０１１のコントロールレジスタ１０１２のペイロードサイズ１０１３と、ネットワークコントローラ１０２１の上りコントロールレジスタ１０２２のペイロードサイズ１０２３に設定する。
【００５３】
次に、ＣＰＵ１００２は、リモートコントロールレジスタ１０３２のペイロードサイズ１０３３を参照して、コンピュータＡ１００１とコンピュータＢ２００１間のチャネルＣ１００６の再設定を行う（Ｓ２２）。すなわち、ＣＰＵ１００２は、リモートコントロールレジスタ１０３２のペイロードサイズ１０３３と、下りコントロールレジスタ１０２７のペイロードサイズ１０２８とを比較して、小さい方を下りコントロールレジスタ１０２７のペイロードサイズ１０２８と、接続先であるコンピュータＢ２００１のネットワークコントローラ１０２１の下りコントロールレジスタ２０２７のペイロードサイズ２０２８に設定する（Ｓ２３）。
【００５４】
次に、ＣＰＵ１００２は、Ｉ／Ｏコントローラ１０１１のコントロールレジスタ１０１２のＶａｌｉｄビット１０１４と、ネットワークコントローラ１０２１の上りコントロールレジスタ１０２２のＶａｌｉｄビット１０２４と、下りコントロールレジスタ１０２７のＶａｌｉｄビット１０２９に、リモート（接続先）の初期化が完了したことを示す“０ｂ１１”を設定する（Ｓ２４）。
【００５５】
上記ステップＳ１１〜Ｓ２４の処理はコンピュータＢ２００１でも実行され、Ｉ／Ｏコントローラ２０１１とネットワークコントローラ２０２１間のチャネルＢ２００５のペイロードサイズ２０１３、２０２３が決定される。
【００５６】
以上の処理により、コンピュータＡ１００１からコンピュータＢ２００１に至る複数の通信経路のペイロードサイズは、チャネルＡ１００５、チャネルＢ２００５、チャネルＣ１００６のそれぞれについて最大のペイロードサイズを設定する。そして、コンピュータＡ１００１で、複数の通信経路のペイロードサイズのうち最も小さいペイロードサイズを共通のペイロードサイズ（データサイズ）として選択する。実施例１の場合では、最もペイロードサイズが小さいチャネルＢの値（＝１２８バイト）が共通のデータサイズとして各チャネルＡ〜Ｃに再設定されることになる。
【００５７】
これにより、通信区間（チャネルＡ〜Ｃ）の接続箇所（つなぎ目）となるデバイスとしての、ネットワークコントローラ１０２１、２０２１では、ペイロードサイズの変換が不要となって、変換に要する処理時間を短縮することができる。これにより、前記従来例の遅延時間を低減することができるのである。
【００５８】
上記実施例では初期化プログラムをＣＰＵ１００２が実行することで処理を実現する例を示したが、各装置で処理の一部（または全て）を実施してもよい。
【００５９】
例えば、Ｉ／Ｏコントローラ１０１１のコントロールレジスタ１０１２のペイロードサイズ１０１３と、ネットワークコントローラ１０２１の上りコントロールレジスタ１０２２のペイロードサイズ１０２３が確定すると、Ｉ／Ｏコントローラ１０１１とネットワークコントローラ１０２１はＶａｌｉｄビット１０１４、１０２４をそれぞれ設定する。
【００６０】
ネットワークコントローラ１０２１は、上りコントロールレジスタ１０２２のＶａｌｉｄビット１０２４が設定されたのを検知して、上りコントロールレジスタ１０２２のペイロードサイズ１０２３を他方のネットワークコントローラ２０２１のリモートコントロールレジスタ内のペイロードサイズへコピーする。コピーした後に、リモートコントロールレジスタ１０３２のＶａｌｉｄビット１０３４を設定する。
【００６１】
一方で、ネットワークコントローラ１０２１、２０２１はコンピュータＡ、Ｂ同士でペイロードサイズを算出し、下りコントロールレジスタ１０２７のペイロードサイズ１０２８を確定する。
【００６２】
ネットワークコントローラ１０２１は、リモートコントロールレジスタ１０３２のＶａｌｉｄビット１０３４が設定されたのを検知して、上りコントロールレジスタ１０２２のペイロードサイズ、下りコントロールレジスタ１０２７のペイロードサイズ１０２８、及びリモートコントロールレジスタ１０３２内のペイロードサイズ１０３３の３つを比較して、取りうる最大値、つまり、それらのペイロードサイズのうちの最小の値、を３つのコントロールレジスタに書き込む。
【００６３】
Ｉ／Ｏコントローラ１０１１は、ネットワークコントローラ１０２１の上りコントロールレジスタ１０２２のペイロードサイズ１０２３を自身のコントロールレジスタ１０１２のペイロードサイズ１０１３へコピーする。
【００６４】
本実施例では、説明のために、ネットワークコントローラ１０２１、２０２１内にすべての通信経路のペイロードサイズを格納するレジスタを具備しているが、レジスタを格納する場所は問わず、他の場所、もしくはメモリ１００３上でも構わない。
【００６５】
また、チャネルＡ〜Ｃの３つのペイロードサイズから、全チャネルＡ〜Ｃに共用可能なペイロードサイズの算出、及び算出した結果をチャネルＡ〜Ｃにコピーする手段はハードウェアでもソフトウェアでもどちらでもよい。
【００６６】
図５は、シリアルデータ通信のパケットの転送処理の一例を示すフローチャートを示す。この処理は、パケットの送受信を行うコントローラで実行され、例えば、コンピュータＡ１００１では、Ｉ／Ｏコントローラ１０１１またはネットワークコントローラ１０２１が実行する。以下の説明では、Ｉ／Ｏコントローラ１０１１及びネットワークコントローラ１０２１の総称として、単にコントローラとする。
【００６７】
まず、コントローラがパケットを受信し（Ｓ３１）、所定の復号処理（１２８ｂ／１３０ｂ符号等）によってパケットを復号する（Ｓ３２）。次に、コントローラは復号したパケットのリンクＣＲＣ２０６を検証する（Ｓ３３）。そしてコントローラは、パケットからヘッダ２０３とデータ２０４を抽出するアンカプセルを実行する（Ｓ３４）。
【００６８】
コントローラは、抽出したヘッダ２０３を読み込んで、送信先との送信先のデバイスに応じたプロトコルを解析する（Ｓ３５）。次に、コントローラは、送信先に応じてヘッダ２０３のプロトコルを変換する（Ｓ３６）。このプロトコルの変換は、例えば、ＰＣＩ  ＥｘｐｒｅｓｓとＦｉｂｒｅ  Ｃｈａｎｎｅｌのプロトコル変換となる。
【００６９】
また、コントローラは、抽出したデータを読み込んで、データＣＲＣを検証する（Ｓ４１）。そして、コントローラは、ステップＳ５のヘッダ解析に基づく送信先からペイロードを取得して、データサイズの変換が必要であるか否かを判定する（Ｓ４２）。
【００７０】
データサイズの変換が必要な場合には、コントローラはペイロードに格納するデータのサイズの変換し（Ｓ４３）、変換後のデータＣＲＣ２０５を作成する（Ｓ４４）。コントローラは、プロトコルを変換したヘッダ２０３と、データ及びデータＣＲＣ２０５をカプセル化して転送先のパケットに格納する（Ｓ３７）。そして、コントローラは格納したヘッダ２０３〜データＣＲＣ２０５に対してリンクＣＲＣ２０６を作成してパケットに付加する（Ｓ３８）。コントローラは、生成されたパケットを、送信先の所定の符号により符号化し（Ｓ３９）、送信する（Ｓ４０）。
【００７１】
以上の処理のように、コントローラでは、転送先のペイロードに応じて、データサイズの変換が不要な場合には、そのままのデータサイズでカプセル化を実施することで、処理時間を短縮することができる。
【００７２】
一方、データサイズの変換が必要な場合には、前記従来例で述べたとおり、データサイズの変換とデータＣＲＣ２０５の生成を実施する。
【００７３】
したがって、本実施例では、各通信経路（チャネルＡ〜Ｃ）のペイロードサイズは最も小さい値に統一されるので、ステップＳ４３、Ｓ４４の処理が不要となって、データサイズの変換に起因する処理時間の遅延を最小限に抑えることが可能になる。
【００７４】
なお、初期化プログラムは、図示しないストレージサブシステムや不揮発性半導体メモリ、ハードディスクドライブ、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）等の記憶デバイス、または、ＩＣカード、ＳＤカード、ＤＶＤ等の計算機読み取り可能な非一時的データ記憶媒体に格納することができる。
【００７５】
図７は従来例を示し、データ転送の一例を示すシーケンス図である。従来例では、通信区間の接続箇所となるデバイスで、データサイズの変換を上記図５のステップＳ４３、Ｓ４４で行うものでとなる。
【００７６】
図７では、ペイロードサイズが２５６バイトのコンピュータＡ１００１から、ペイロードサイズが１２８バイトのコンピュータＢ２００１に対して、２、０４８バイトのペイロードサイズの通信経路（チャネルＣ）経由で、４、０９６バイトのデータを転送する場合を示し、次のような手順になる。
【００７７】
コンピュータＡ１００１のＩ／Ｏコントローラ１０１１はＣＰＵ１００２からの４、０９６バイトのデータを、２５６バイト×１６個のデータに分割して、ネットワークコントローラ１０２１へ送信する。
【００７８】
コンピュータＡ１００１のネットワークコントローラ１０２１では、通信経路となるチャネルＣのペイロードサイズに応じて、コンピュータＡ１００１のＩ／Ｏコントローラ１０１１から受信した２５６バイト×１６個の分割データを、２、０４８バイト×２個のデータにまとめて、コンピュータＢ２００１のネットワークコントローラ２０２１へ送信する。
【００７９】
コンピュータＢ２００１のネットワークコントローラ２０２１ではコンピュータＢ２００１のＩ／Ｏコントローラ２０１１のペイロードサイズに応じて、受信した２、０４８バイト×２個のデータを１２８バイト×３２個のデータに分割してから送信する。
【００８０】
上記従来例では、コンピュータＡのネットワークコントローラ１０２１が、１６のパケットを２つのパケットにまとめ、コンピュータＢのネットワークコントローラ２０２１では、２つのパケットを３２に分割するデータサイズの変換を繰り返す。
【００８１】
１つのパケットで送信可能なデータサイズ（ペイロードサイズ）が通信区間ごとに異なるために、通信区間のつなぎ目でデータサイズを毎回変換しなければならず、コンピュータＡのネットワークコントローラで１０２１は細切れになったデータの集約を行うための処理時間を要し、コンピュータＢのネットワークコントローラ２０２１では大きなデータの細分化のための処理時間が必要となり、遅延時間が増大している。
【００８２】
図６は本発明の実施例１を示し、データ転送の一例を示すシーケンス図である。本発明では、複数の通信区間のペイロードサイズを、複数の通信区間のうち最も小さい値に統一することで、上記図５のステップＳ４３、Ｓ４４を実施することなくパケットの転送を実現することができるのである。
【００８３】
実施例１では、複数の通信区間（チャネルＡ〜Ｃ）のそれぞれについて設定可能な最大のペイロードサイズ（データサイズ）を設定してから、各通信区間のペイロードサイズを比較して最小のペイロードサイズを、共通のペイロードサイズとして選択する。コンピュータＡ１００１では、チャネルＡ、Ｂに共通のペイロードサイズを設定してから、コンピュータＢ２００１へ共通のペイロードサイズを通知する。
【００８４】
コンピュータＢ２００１はチャネルＢ２００５のペイロードサイズを、コンピュータＡ１００１から受信した共通のペイロードサイズに更新する。これにより、複数の通信区間のペイロードサイズは共通のペイロードサイズに統一されるので、データサイズの変換は不要となる。
【００８５】
実施例１の場合は、３つの通信区間（チャネルＡ〜Ｃ）のうち、コンピュータＢ２００１のチャネルＢ２００５のデータサイズが１２８バイトに設定されて最小である。そこで、他の通信区間も最小のデータサイズ＝１２８バイトで統一することで、通信区間を接続するデバイスはデータサイズを変換する処理が不要となって、演算処理に要していた遅延時間（レイテンシ）を短縮することが可能になる。
【００８６】
なお、上記実施例１では、ＣＰＵ１００２とＩ／Ｏコントローラ１０１１が独立した構成の例を示したが、Ｉ／Ｏコントローラ１０１１がＣＰＵ１００２に含まれて入れも良い。
【実施例２】
【００８７】
図１１〜図１３は、実施例２を示す。図１１は、第２の実施例の計算機システムの一例を示すブロック図である。図１２は、コンピュータＡで行われる初期化処理の一例を示すフローチャートである。図１３は、コンピュータＢで行われる初期化処理の一例を示すフローチャートである。
【００８８】
実施例２では、前記実施例１のコンピュータＡ１００１のネットワークコントローラ１０２１からリモートコントロールレジスタ１０３２を削除し、コンピュータＢ２００１のネットワークコントローラ２０２１を削除して、コンピュータＡ１００１のネットワークコントローラ１０２１とコンピュータＢ２００１のＩ／Ｏコントローラ１０１１をチャネルＢで接続する。その他の構成は前記実施例１と同様である。
【００８９】
図１１において、コンピュータＡ１００１’は、ＣＰＵ１００２、メモリ１００３、Ｉ／Ｏコントローラ１０１１、ネットワークコントローラ１０２１Ａと、Ｉ／Ｏコントローラ１０１１とネットワークコントローラ１０２１Ａを接続するチャネルＡ１００５から構成される。コンピュータＢ２００１’は、コンピュータＡ１００１’と同様に、ＣＰＵ２００２とメモリ２００３とＩ／Ｏコントローラ２０１１Ｂから構成される。
【００９０】
そして、コンピュータＡ１００１’とコンピュータＢ２００１’はチャネルＢ２００５で接続される。
【００９１】
コンピュータＡ１００１’のＩ／Ｏコントローラ１０１１は前記実施例１の図１と同様である。
【００９２】
ネットワークコントローラ１０２１Ａには、チャネルＡ１００５でのデータ転送に必要なペイロードサイズ１０２３を格納する上りコントロールレジスタ１０２２と、チャネルＡ１００５で転送可能なペイロードサイズの最大値（Ｍａｘペイロードサイズ）１０２６を格納する上り性能レジスタ１０２５と、チャネルＢ２００５でのデータ転送に必要なペイロードサイズ１０２８を格納する下りコントロールレジスタ１０２７と、チャネルＢ２００５で転送可能なペイロードサイズの最大値（Ｍａｘペイロードサイズ）１０３１を格納する下り性能レジスタ１０３０とを具備する。なお、各レジスタの値の定義は前記実施例１の図８〜図１０と同一である。
【００９３】
本実施例２では、チャネルＡ１００５は前記実施例１と同様にＰＣＩ  ｅｘｐｒｅｓｓであるが、チャネルＢ２００５は、前記実施例１のＦＣに代わってＰＣＩ  ｅｘｐｒｅｓｓが採用される。
【００９４】
このため、ネットワークコントローラ１０２１Ａは、コンピュータＡ１００１’のＰＣＩ  ｅｘｐｒｅｓｓのエンドポイントと、コンピュータＢ２００１’のＰＣＩ  ｅｘｐｒｅｓｓのエンドポイントの２つのエンドポイントの機能を有する。ネットワークコントローラ１０２１Ａが、外部のコンピュータＢ２００１’と接続可能なエンドポイントを提供することで、外部のコンピュータＢ２００１’はＩ／Ｏコントローラ２０１１ＢをチャネルＢ２００５を介してネットワークコントローラ１０２１Ａへ接続できるのである。
【００９５】
図１２の初期化処理のフローチャートは、コンピュータＡ１００１’で実行される。以下では、コンピュータＡ１００１’のＣＰＵ１００２で実行する例を示す。
【００９６】
ステップＳ１１〜Ｓ１５は、前記実施例１のステップＳ１１〜Ｓ１５と同一であり、ＣＰＵ１００２は、Ｉ／Ｏコントローラ１０１１とネットワークコントローラ１０２１ＡのＭＡＸペイロードサイズ１０１６、１０２６のうち値の小さい方をチャネルＡ１００５のペイロードサイズ１０１３、１０２３として設定し、チャネルＡ１００５を初期化する。
【００９７】
次に、ＣＰＵ１００２は、Ｉ／Ｏコントローラ１０１１のコントロールレジスタ１０１２のペイロードサイズ１０１３と、ネットワークコントローラ１０２１Ａの下りコントロールレジスタ１０２７のペイロードサイズ１０２８とを取得する。ただし、下りコントロールレジスタ１０２７の読み込みは、Ｖａｌｉｄビット１０２９がローカルの初期化が完了するまで待機する。後述するように、下りコントロールレジスタ１０２７のペイロードサイズ１０２８は、コンピュータＢ２００１’のＩ／Ｏコントローラ２０１１Ｂによって設定されるためである。
【００９８】
次に、ＣＰＵ１００２は、下りコントロールレジスタ１０２７のペイロードサイズ１０２８とＩ／Ｏコントローラ２０１１のペイロードサイズ１０１３のうち小さい値（設定可能な最大値）を選択し、当該選択した値で、下りコントロールレジスタ１０２７のペイロードサイズ１０２８とＩ／Ｏコントローラ２０１１のペイロードサイズ１０１３を更新する（Ｓ４０）。
【００９９】
ＣＰＵ１００２は、Ｉ／Ｏコントローラ２０１１のコントロールレジスタ１０１２と、ネットワークコントローラ１０２１Ａの上りコントロールレジスタ１０２２のＶａｌｉｄビット１０１４、１０２４にリモート（接続先）の初期化が完了したことを示す“０ｂ１１”を設定して（Ｓ４１）初期化を完了する。
【０１００】
図１３は、コンピュータＢで行われる初期化処理の一例を示すフローチャートである。コンピュータＢ２００１’のＣＰＵ２００２は、Ｉ／Ｏコントローラ２０１１とコンピュータＡ１００１’のネットワークコントローラ１０２１Ａを接続するチャネルＢ２００５の初期化を行う（Ｓ５１）。
【０１０１】
次に、ＣＰＵ２００２は、Ｉ／Ｏコントローラ２０１１の性能レジスタ２０１５のＭＡＸペイロードサイズ２０１６と、コンピュータＡ１００１’のネットワークコントローラ１０２１Ａの下り性能レジスタ１０３０のＭＡＸペイロードサイズ１０３１とを比較して、値の小さい方（設定可能な最大値）を選択する（Ｓ５２）。
【０１０２】
そして、ＣＰＵ２００２は、選択した値をＩ／Ｏコントローラ２０１１のコントロールレジスタ２０１２のペイロードサイズ２０１３と、コンピュータＡ１００１’のネットワークコントローラ１０２１Ａの下りコントロールレジスタ１０２７のペイロードサイズ１０２８に設定する（Ｓ５３）。
【０１０３】
ＣＰＵ２００２は、Ｉ／Ｏコントローラ２０１１のコントロールレジスタ２０１２のＶａｌｉｄビット２０１４と、コンピュータＡ１００１’のネットワークコントローラ１０２１Ａの下りコントロールレジスタ１０２７のＶａｌｉｄビット１０２９に、ローカルな初期化が完了したことを示す“０ｂ０１”を設定する（Ｓ５４）
ＣＰＵ２００２は、コンピュータＡ１００１’のネットワークコントローラ１０２１Ａと、コンピュータＢ２００１’のＩ／Ｏコントローラ２０１１を接続するチャネルＢ２００５の設定を開始する（Ｓ５５）。
【０１０４】
ＣＰＵ２００２は、コンピュータＢ２００１’のＩ／Ｏコントローラ２０１１のコントロールレジスタ２０１２のペイロードサイズ２０１３と、コンピュータＡ１００１’のネットワークコントローラ１０２１Ａの上りコントロールレジスタ１０２２のペイロードサイズ１０２３を比較して値の小さい方（設定可能な最大値）を選択する。そして、ＣＰＵ２００２は、選択した値をＩ／Ｏコントローラ２０１１のコントロールレジスタ２０１２のペイロードサイズ２０１３と、コンピュータＡ１００１’のネットワークコントローラ１０２１Ａの上りコントロールレジスタ１０２２のペイロードサイズ１０２３にそれぞれ書き込む（Ｓ５６）。
【０１０５】
最後に、ＣＰＵ２００２は、Ｉ／Ｏコントローラ２０１１のコントロールレジスタ２０１２のＶａｌｉｄビット２０１４と、コンピュータＡ１００１’のネットワークコントローラ１０２１Ａの下りコントロールレジスタ１０２７のＶａｌｉｄビット１０２９に、リモートの初期化が完了したことを示す値“０ｂ１１”を設定する（Ｓ５４）
以上の処理によって、コンピュータＡ１００１’のＩ／Ｏコントローラ１０１１とネットワークコントローラ１０２１Ａ間のチャネルＡ１００５と、コンピュータＡ１００１’とコンピュータＢ２００１’を接続するチャネルＢ２００５のペイロードサイズを、複数の通信区間のうち最小の値に設定することで、通信区間のつなぎ目となるデバイスで、データサイズの変換を行うことなくパケットの転送を行うことが可能となって、実施例１と同様に、遅延時間を抑制することが可能となる。
【０１０６】
本実施例２では、説明のために、ネットワークコントローラ内にすべて経路のペイロードサイズを格納するレジスタを具備しているが、レジスタを格納する場所は問わず、他の場所、もしくはメモリ上でも構わない。
【０１０７】
また、チャネルＡ１００５と、チャネルＢ２００５の２つのペイロードサイズから、全チャネルに設定可能なペイロードサイズの算出と、算出した結果をチャネルＡ１００５とチャネルＢ２００５に設定する手段はハードウェアでもソフトウェアでもどちらでもよい。
【０１０８】
なお、本発明において説明した計算機等の構成、処理部及び処理手段等は、それらの一部又は全部を、専用のハードウェアによって実現してもよい。
【０１０９】
また、本実施例で例示した種々のソフトウェアは、電磁的、電子的及び光学式等の種々の記録媒体（例えば、非一時的な記憶媒体）に格納可能であり、インターネット等の通信網を通じて、コンピュータにダウンロード可能である。
【０１１０】
また、本発明は上記した実施例に限定されるものではなく、様々な変形例が含まれる。例えば、上記した実施例は本発明をわかりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。
【符号の説明】
【０１１１】
１００２、２００２  ＣＰＵ
１００５  チャネルＡ
１００６  チャネルＣ
１０１１、２０１１  Ｉ／Ｏコントローラ
１０１２、２０１２  コントロールレジスタ
１０１５、２０１５  性能レジスタ
１０２１、２０２１  ネットワークコントローラ
１０２２、２０２２  上りコントロールレジスタ
１０２５、２０２５  上り性能レジスタ
１０２７、２０２７  下りコントロールレジスタ
１０３０、２０３０  下り性能レジスタ
１０３２、２０３２  リモートコントロールレジスタ
２００５  チャネルＢ
【図１Ａ】
2015014951.tif 000003
【図１Ｂ】
2015014951.tif 000004
【図２】
2015014951.tif 000005
【図３】
2015014951.tif 000006
【図４】
2015014951.tif 000007
【図５】
2015014951.tif 000008
【図６】
2015014951.tif 000009
【図７】
2015014951.tif 000010
【図８】
2015014951.tif 000011
【図９】
2015014951.tif 000012
【図１０】
2015014951.tif 000013
【図１１】
2015014951.tif 000014
【図１２】
2015014951.tif 000015
【図１３】
2015014951.tif 000016