(57)【要約】【課題】データ転送効率に影響を及ぼす応答遅延を防ぐことができるデータ転送装置を提供する。【解決手段】パケットデータを送受信する複数の通信ポートを備えるデータ中継装置１０であって、パケットデータを格納するメモリ３１０と、複数の通信ポートがパケットデータを送信してから当該パケットデータに対する応答を受信するまでに要する遅延時間に基づいて、遅延時間が大きい通信ポートほど大きいサイズのバッファ領域を確保するメモリ制御部３００を備えた。【選択図】図１
2011081769.tif 000002
【特許請求の範囲】
【請求項１】
データを送受信する第１のポートおよび第２のポートと、
前記データを記憶する記憶部と、
前記第１のポートにてデータ送信から当該送信されたデータに対する応答を受信するまでに要する第１の時間が前記第２のポートにおいてデータ送信から当該送信されたデータに対する応答を受信するまでに要する第２の時間よりも大きい場合に、前記記憶部にて前記第１のポートにおけるデータ転送に用いられる第１の記憶領域のサイズを前記第２のポートにおけるデータ転送に用いられる第２の記憶領域のサイズよりも大きく確保する確保手段と、
を具備することを特徴とするデータ転送装置。
【請求項２】
前記確保手段は、前記第１の時間および前記第２の時間夫々の大きさの比率に基づいて、前記第１の記憶領域および前記第２の記憶領域のサイズを確保する手段であることを特徴とする請求項１記載のデータ転送装置。
【請求項３】
前記第１の時間を計測する第１の計測部と、
前記第２の時間を計測する第２の計測部とをさらに備え、
前記確保手段は、前記第１の計測部にて計測された前記第１の時間および前記第２の計測部にて計測された前記第２の時間に基づいて、前記第１の記憶領域のサイズおよび前記第２の記憶領域のサイズを確保することを特徴とする請求項１記載のデータ転送装置。
【請求項４】
前記第２のポートに接続されるケーブルの長さに基づいて前記第２の時間を算出する算出部をさらに備え、
前記確保手段は、前記第１の時間が前記算出部によって算出された前記第２の時間よりも大きい場合に、前記第１の記憶領域のサイズを前記第２の記憶領域のサイズよりも大きく確保することを特徴とする請求項１記載のデータ転送装置。
【請求項５】
前記第１の記憶領域および前記第２の記憶領域の夫々を、受信バッファ領域、送信バッファ領域および再送バッファ領域に分割する分割手段をさらに具備することを特徴とする請求項１記載のデータ転送装置。
【請求項６】
前記第１のポートおよび前記第２のポートは、ＰＣＩ（Ｐｅｒｉｐｈｅｒａｌ Ｃｏｍｐｏｎｅｎｔ Ｉｎｔｅｒｃｏｎｎｅｃｔ） Ｅｘｐｒｅｓｓ規格に準じたポートであり、
前記確保手段は、前記第１のポートおよび前記第２のポートにてＴＬＰ（Ｔｒａｎｓａｃｔｉｏｎ Ｌａｙｅｒ ＰＡＣＫｅｔ）の送信から当該送信されたＴＬＰに対するＡＣＫ（ＡＣＫｎｏｗｌｅｄｇｅｍｅｎｔ）またはＮａｋ（Ｎｅｇａｔｉｖｅ ＡＣＫｎｏｗｌｅｄｇｅｍｅｎｔ）を受信するまでに要する前記第１の時間および前記第２の時間に基づいて、前記第１の記憶領域のサイズおよび前記第２の記憶領域のサイズを確保することを特徴とする請求項１記載のデータ転送装置。
【請求項７】
データを送受信する第１のポートおよび第２のポートと、
前記データを記憶する記憶部と、
前記第１のポートにてデータ送信から当該送信されたデータに対する応答を受信するまでに要する第１の時間が前記第２のポートにおいてデータ送信から当該送信されたデータに対する応答を受信するまでに要する第２の時間よりも大きい場合に、前記記憶部にて前記第１のポートにおけるデータ転送に用いられる第１の記憶領域のサイズを前記第２のポートにおけるデータ転送に用いられる第２の記憶領域のサイズよりも大きく確保する確保手段と、
を具備することを特徴とするデータ転送デバイス。
【請求項８】
前記確保手段は、前記第１の時間および前記第２の時間夫々の大きさの比率に基づいて、前記第１の記憶領域および前記第２の記憶領域のサイズを確保する手段であることを特徴とする請求項７記載のデータ転送デバイス。
【請求項９】
第１のポートはデータを送信し、
第２のポートはデータを送信し、
確保手段は前記第１のポートにてデータ送信から当該送信されたデータに対する応答を受信するまでに要する第１の時間が前記第２のポートにおいてデータ送信から当該送信されたデータに対する応答を受信するまでに要する第２の時間よりも大きい場合に、記憶部にて前記第１のポートにおけるデータ転送に用いられる第１の記憶領域のサイズを前記第２のポートにおけるデータ転送に用いられる第２の記憶領域のサイズよりも大きく確保することを特徴とするデータ転送方法。
【請求項１０】
前記第１の時間および前記第２の時間夫々の大きさの比率に基づいて、前記第１の記憶領域および前記第２の記憶領域のサイズを確保することを特徴とする請求項９記載のデータ転送方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、パケットデータを送受信する通信ポートを備えるデータ転送装置、データ転送デバイスおよびデータ転送方法に関する。
【背景技術】
【０００２】
ＰＣＩ（Ｐｅｒｉｐｈｅｒａｌ Ｃｏｍｐｏｎｅｎｔ Ｉｎｔｅｒｃｏｎｎｅｃｔ）Ｅｘｐｒｅｓｓ（以下、ＰＣＩｅと称す）等の高速シリアル伝送方式を採用したデバイスが普及し、複合機などの画像バスなどにも採用されている。近年、ＰＣＩｅの普及に伴い、高速シリアル伝送を、機器内部だけでなく、ケーブルを用いた機器間の通信に拡張する利用形態の要求も高まっている。複合機への適用形態としても、たとえば印刷業種向けの大型プリンタでは、コントローラと印刷装置の距離が離れている場合には、ケーブルで画像データバスを接続する利用方法が考えられる。
【０００３】
高速シリアル伝送の特徴として、データをパケット単位に分割して転送することが挙げられる。シリアル方式のデータ転送は、従来のパラレル方式のデータ転送に比べてデータ転送帯域が広い反面、転送に要する遅延時間が増加する。このため、ケーブルを用いた、長い距離の伝送に、ケーブル接続が考慮されていないデバイスをそのまま接続すると、ケーブルによって増加した遅延時間の影響で、相手先デバイスからのＡＣＫ（ＡＣＫｎｏｗｌｅｄｇｅｍｅｎｔ）パケットの応答が遅れて、タイムアウトが発生するなどデータ転送レートが低下する問題がある。
【０００４】
ここで、ＰＣＩｅの基本的な動作概念を説明する。図１８は、ＰＣＩｅにおける、一般的なマスターデバイスとターゲットデバイスの内部構成例を示す図である。ＰＣＩｅ回路５０がマスターデバイスとして動作する場合、ユーザー回路５２からのリクエスト（メモリライトやメモリリード，Ｒｅｑ）は、送信ポート（ＴＸ）５０１を経由しＴＬＰ変換部５０２において、ＴＬＰ（Ｔｒａｎｓａｃｔｉｏｎ Ｌａｙｅｒ ＰＡＣＫｅｔ）と呼ばれる、パケット形式に変換されて、送信バッファ５０３に格納される。
【０００５】
次に送信フロー制御部５０４において、相手先デバイスの受信バッファに空きがあるか否かが判定される。送信バッファ５０３のＴＬＰは、相手先のデバイスの受信バッファに空きがある場合、送信ポート（ＴＸ）５０５から送出される。
【０００６】
相手先デバイスの受信バッファの空き容量は、相手先デバイスよりＦＣ（Ｆｌｏｗ Ｃｏｎｔｒｏｌ）パケットにより通知されるクレジット情報に基づいて、管理されている。受信ポート（ＲＸ）５１１は、相手先デバイスからＦＣパケットを受信する。さらに、クレジット検出部５１３は、ＦＣパケットからクレジット値を検出し、これを送信フロー制御部５０４に通知する。
【０００７】
送信フロー制御部５０４を経て転送されるＴＬＰの内容は、送信したＴＬＰがエラーで壊れた場合に、再送信をするために、いったん再送バッファ５０７にコピーが格納される。その後、相手先デバイスからは正常にＴＬＰを受信できたか否かが、ＡＣＫパケット、またはＮａｋ（Ｎｅｇａｔｉｖｅ ＡＣＫｎｏｗｌｅｄｇｅｍｅｎｔ）パケットによって通達される。ここで、ＡＣＫパケットは、相手先デバイスに正常にＴＬＰが送達されたことを示している。一方、Ｎａｋパケットは、相手先デバイスに正常にＴＬＰが送達されなかったことを示している。ＡＣＫ／Ｎａｋ検出部５１４は、通達されてきたパケットが、ＡＣＫパケットであるかＮａｋパケットであるかを検出する。そして、ＡＣＫ／Ｎａｋ検出部５１４は、ＡＣＫまたはＮａｋの情報を再送バッファ制御部５０６に通知する。
【０００８】
再送バッファ制御部５０６は、ＡＣＫが通知された場合は、相手先デバイスに正常にＴＬＰが届いているので再送バッファ５０７に格納されているＴＬＰの内容を破棄する。一方、再送バッファ制御部５０６は、Ｎａｋが通知された場合は、相手先デバイスに正常にＴＬＰが届いていないので再送バッファ５０７に格納されているＴＬＰを再度送信する。
【０００９】
ターゲットデバイスとして動作する場合、受信ポート（ＲＸ）５１１に送信元デバイスからのＴＬＰが到着すると、エラー検出部５１２は、ＣＲＣ（Ｃｙｃｌｉｃ Ｒｅｄｕｎｄａｎｃｙ Ｃｈｅｃｋ）の値を元に、ＴＬＰのエラーを検出する。エラー検出部５１２は、エラーが検出されない場合には、送信ポート５０５へＡＣＫパケットを転送する。一方、エラーが検出された場合は、エラー検出部５１２は、Ｎａｋパケットを送信ポート５０５へ転送するとともに、受信したＴＬＰを破棄する。エラーが検出されなかった場合は、ＴＬＰは、受信バッファ５１５に格納される。さらに、ＴＬＰは、ＴＬＰ変換部５１６によりユーザー回路５２に対するリクエスト（Ｒｅｑ）に変換され、受信ポート（ＲＸ）５１７を介してユーザー回路５２に転送される。
【００１０】
ユーザー回路５２への転送が完了すると、受信バッファ５１５に空きが生じる。受信フロー制御部５１８は、受信バッファ５１５の空きのサイズをクレジット情報として有するＦＣパケットを送信ポート５０５に送出する。
【００１１】
なお、一般にリクエストやデータを保持するパケットがＴＬＰと呼ばれるのに対して、ＡＣＫ，Ｎａｋ，ＦＣなど制御目的に使われるパケットはＤＬＬＰ（Ｄａｔａ ＬｉｎｋＬａｙｅｒ ＰＡＣＫｅｔ）と呼ばれている。
【００１２】
このように、ＰＣＩｅデバイスのパケット転送による高速シリアル方式では、送信用のバッファ、受信用のバッファ、再送用のバッファを備えることで、効率の良いデータ転送と、エラー発生時の再送によるデータ保障を行う機能を有している。各バッファのサイズは、相手先デバイスとのパケット転送に要する遅延時間や、各デバイスの処理能力の高さに最適化して設計される。ケーブル接続が考慮されていないデバイスでは、遅延時間が短いため、一般に実装コストを下げるため、大きなサイズのバッファを持つ構成はとられていない。なお、図１８に示す例においては、各バッファに４個のパケットを格納する構成を示している。
【００１３】
図１９−１は、マスターデバイス６０とターゲットデバイス７０とが直接、接続されている例を示す図である。図１９−２は、マスターデバイス６０およびターゲットデバイス７０のバッファ構成を示す図である。マスターデバイス６０の送信バッファ６１および再送バッファ６２と、ターゲットデバイス７０の受信バッファ７１はそれぞれ４段である。この場合、ＡＣＫやＦＣパケットが戻ってくる前に先行して発行できるＴＬＰの数は最大４個である。図１９−１に示すように、マスターデバイス６０とターゲットデバイス７０とが直接、接続されている場合には、図１９−３中に示される矢印のように応答遅延は短く、ＴＬＰを４個送信する前に、初めのＡＣＫ／ＦＣが戻り始める。このため、バッファに空きが生じるのを待つことなく、効率よくＴＬＰを送信し続けることができる。
【００１４】
これに対し、図２０−１および図２０−２に示すように、マスターデバイス６０とターゲットデバイス７０との間をケーブルで接続した場合には、ケーブル長に起因した経路遅延が大きくなる。図２０−３に示す例においては、ＴＬＰを４個送信完了した時点においても、初めのＡＣＫ／ＦＣ応答が戻って来ない。このため、次の４個のＴＬＰが送信可能になるまでの間、転送休止期間が発生してしまう。このように、マスターデバイス６０とターゲットデバイス７０との間をケーブル接続した場合には、マスターデバイス６０とターゲットデバイス７０とを直接、接続した場合に比べてデータ転送効率が低下してしまう。図２０−３に示す例においては、応答遅延を吸収するためには、およそ６〜８段以上のバッファが必要になることが予想できる。
【００１５】
図２１は、ＰＣＩｅデバイスをＰＣＩｅケーブルで延長した場合のマスターデバイスおよびターゲットデバイスの送信バッファサイズとデータ転送レートの関係の一例を示す図である。また、図２２は、ＰＣＩｅデバイスをＰＣＩｅケーブルで延長した場合のケーブル長とデータ転送レートの関係の一例を示す図である。図２１および図２２とも、縦軸はＰＣＩｅのｘ４レーン接続により、１リクエストあたり１２８Ｂｙｔｅのメモリリードリクエストを連続発行した際のデータ転送レートである。
【００１６】
図２１に示すグラフから、マスターデバイスの送信バッファサイズが１０以下になると、データ転送レートが低下しはじめることがわかる。これは、マスターデバイスがリードリクエストを送信バッファサイズ分の個数だけ発行した時点で、ターゲットデバイスからのＡＣＫパケットやＦＣパケットが応答されてくるまで、次のリードリクエストの発行を停止する応答待ち時間が発生するためである。また、図２２に示すグラフは、送信バッファサイズを図２１のグラフでデータ転送レートの低下が発生した８に固定して、ケーブルの長さを変えた場合のデータ転送レートを示している。図２２のグラフからケーブル長が長くなるほど、データ転送レートが低下していくことがわかる。送信バッファサイズが足りないことでデータ転送レートの低下が発生している状態では、ケーブル長が長くなることで増加したパケットがケーブルを伝播するために要する時間が、そのまま応答待ち時間に追加される。このため、ケーブル長が長いほど応答待ち時間が増えて、さらにデータ転送効率が低下していく。なお、送信バッファのサイズがケーブル長で発生する応答遅延に対して十分大きい条件では、ケーブル伝播に要する時間の増加が応答待ち時間に追加されないので、図２２のグラフのようなケーブル長に対するデータ転送レートの低下は発生しないことになる。
【００１７】
ケーブル接続状態において高いデータ転送レートを得るために、送信元のマスターデバイスと受信先のターゲットデバイスを、大きなバッファを有するものに作り変えて経路遅延を吸収する技術が知られている。また、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ ＳｅｒｉａｌＢｕｓ）方式では、ケーブル延長によって発生するＡＣＫ待ちのタイムアウトを防ぐために、一時バッファをケーブルを経由する前段の経路上に挿入する接続アダプタが知られている（例えば特許文献１参照）。また、ＰＣＩｅでは、内部に大きなサイズのバッファを有するＰＣＩｅスイッチデバイスを挿入して遅延時間の影響を解消する技術が知られている。
【００１８】
図２３は、マスターデバイス６０とターゲットデバイス７０の経路上にＰＣＩｅスイッチ８０を挿入した従来技術の例を示す図である。図２４は、従来技術における一般的なＰＣＩｅスイッチ８０の内部構成例を示す図である。ＰＣＩスイッチ８０は、第１ポート８１０、第２ポート８２０および第３ポート８３０の３つのポートのうち２つのポート（第１ポート８１０，第２ポート８２０）をマスターデバイスとターゲットデバイスの間のケーブル中継に用いている。
【００１９】
マスター側の第１ポート８１０とターゲット側の第２ポート８２０には、それぞれ図１８を参照しつつ説明したＰＣＩｅ回路が組み込まれている。第１ポート８１０と第２ポート８２０は、ポートアービトレーション回路８４０を介して接続している。第１ポート８１０および第２ポート８２０はそれぞれ受信バッファ８１１，８２１、送信バッファ８１２，８２２、再送バッファ８１３，８２３を有している。また、これらのバッファサイズは、８段である。このように、バッファサイズの大きいスイッチデバイスを経路上に挿入することにより、ケーブルで生じる応答遅延の増加を吸収できる場合がある。
【発明の概要】
【発明が解決しようとする課題】
【００２０】
しかしながら、従来のケーブルを用いた高速シリアル転送を行う装置では、大きなサイズの一時バッファをデバイスに持たせたり、転送経路上に挿入するにすぎなかった。バッファサイズを変更したデバイスの作成は、コストがかかる上に、接続する相手先デバイスのバッファが小さい場合にはバッファサイズを増やした効果が得られない。さらに、接続するケーブルの長さが変わる度に、バッファサイズの変更が必要となり、手間がかかる。
【００２１】
ＰＣＩｅのようにＡＣＫの応答を待たずに、先行して複数のパケットを送信することが許されたシリアル転送方式においては、一時バッファを経路に挿入する接続アダプタを適用してＡＣＫの応答時間を短縮しただけでは、データ転送効率を上げることはできない。内部に大きなサイズのバッファを有するＰＣＩｅスイッチデバイスを挿入する方式においては、データ送信元デバイスで発生する遅延時間と、データ送信先デバイスの経路で発生する遅延時間と、スイッチデバイスの送信側と受信側の有するバッファのサイズのバランスがとれていないと、データ転送効率が低下するという問題があった。また、ケーブル長が長くなった際に、内部バッファに空き容量が残っているにもかかわらず、データ転送効率が低下するという問題もある。
【００２２】
本発明は、上記に鑑みてなされたものであって、データ転送効率に影響を及ぼす応答遅延を防ぐことができるデータ転送装置、データ転送デバイスおよびデータ転送方法を提供することを目的とする。
【課題を解決するための手段】
【００２３】
上述した課題を解決し、目的を達成するために、本発明は、データ転送装置であって、データを送受信する第１のポートおよび第２のポートと、前記データを記憶する記憶部と、前記第１のポートにてデータ送信から当該送信されたデータに対する応答を受信するまでに要する第１の時間が前記第２のポートにおいてデータ送信から当該送信されたデータに対する応答を受信するまでに要する第２の時間よりも大きい場合に、前記記憶部にて前記第１のポートにおけるデータ転送に用いられる第１の記憶領域のサイズを前記第２のポートにおけるデータ転送に用いられる第２の記憶領域のサイズよりも大きく確保する確保手段と、を具備することを特徴とする。
【００２４】
また、本発明の他の形態は、データ転送デバイスであって、データを送受信する第１のポートおよび第２のポートと、前記データを記憶する記憶部と、前記第１のポートにてデータ送信から当該送信されたデータに対する応答を受信するまでに要する第１の時間が前記第２のポートにおいてデータ送信から当該送信されたデータに対する応答を受信するまでに要する第２の時間よりも大きい場合に、前記記憶部にて前記第１のポートにおけるデータ転送に用いられる第１の記憶領域のサイズを前記第２のポートにおけるデータ転送に用いられる第２の記憶領域のサイズよりも大きく確保する確保手段と、を具備することを特徴とする。
【００２５】
また、本発明の他の形態は、データ転送方法であって、第１のポートはデータを送信し、第２のポートはデータを送信し、確保手段は前記第１のポートにてデータ送信から当該送信されたデータに対する応答を受信するまでに要する第１の時間が前記第２のポートにおいてデータ送信から当該送信されたデータに対する応答を受信するまでに要する第２の時間よりも大きい場合に、記憶部にて前記第１のポートにおけるデータ転送に用いられる第１の記憶領域のサイズを前記第２のポートにおけるデータ転送に用いられる第２の記憶領域のサイズよりも大きく確保することを特徴とする。
【発明の効果】
【００２６】
本発明によれば、データ転送効率に影響を及ぼす応答遅延を防ぐことができるという効果を奏する。
【図面の簡単な説明】
【００２７】
【図１】図１は、本発明の第１の実施の形態にかかるデータ中継装置１０の構成の一例を示すブロック図である。
【図２】図２は、メモリマップレジスタ３２０のデータ構成の一例を模式的に示す図である。
【図３】図３は、メモリ制御部３００の構成の一例を示す図である。
【図４】図４は、メモリマップ演算回路３０１の処理の一例を説明するための図である。
【図５】図５は、第１受信バッファ１０５がパケットを受信した場合の処理の一例を示すフローチャートである。
【図６】図６は、送信部１０５２がパケットを送信する場合の処理の一例を示すフローチャートである。
【図７】図７は、メモリマップの更新にかかる処理の一例を示すフローチャートである。
【図８】図８は、マスターデバイスの送信デバイスのバッファサイズとデータ転送レートの関係の一例を示す図である。
【図９】図９は、マスターデバイスとターゲットデバイスの間のケーブル長とデータ転送レートの関係の一例を示す図である。
【図１０】図１０は、データ中継装置１０の実装例を示す図である。
【図１１−１】図１１−１は、マスターデバイス２０とデータ中継装置１０Ａの間のパケット転送のタイミングチャートの一例を示す図である。
【図１１−２】図１１−２は、データ中継装置１０Ａとデータ中継装置１０Ｂの間のパケット転送のタイミングチャートの一例を示す図である。
【図１１−３】図１１−３は、データ中継装置１０Ｂとターゲットデバイス３０の間のパケット転送のタイミングチャートを示す図である。
【図１２】図１２は、データ中継装置１０の実装例を示す図である。
【図１３−１】図１３−１は、マスターデバイス２０とデータ中継装置１０Ｃの間のパケット転送のタイミングチャートの一例を示す図である。
【図１３−２】図１３−２は、データ中継装置１０とターゲットデバイス３０の間のパケット転送のタイミングチャートの一例を示す図である。
【図１４】図１４は、データ中継装置１０の実装例を示す図である。
【図１５−１】図１５−１は、マスターデバイス２０とデータ中継装置１０の間のパケット転送のタイミングチャートの一例を示す図である。
【図１５−２】図１５−２は、データ中継装置１０とターゲットデバイス３０の間のパケット転送のタイミングチャートの一例を示す図である。
【図１６】図１６は、第２の実施の形態にかかるデータ中継装置としてのＰＣＩｅスイッチ１２の構成の一例を示すブロック図である。
【図１７】図１７は、第２の実施の形態にかかるＰＣＩｅスイッチ１２の適用例を示す図である。
【図１８】図１８は、ＰＣＩｅにおける、一般的なマスターデバイスとターゲットデバイスの内部構成例を示す図である。
【図１９−１】図１９−１は、マスターデバイス６０とターゲットデバイス７０が直接接続されている例を示す図である。
【図１９−２】図１９−２は、マスターデバイス６０とターゲットデバイス７０のバッファ構成の一例を示す図である。
【図１９−３】図１９−３は、応答遅延の一例を説明するための図である。
【図２０−１】図２０−１は、マスターデバイス６０とターゲットデバイス７０の間をケーブルで接続した例を示す図である。
【図２０−２】図２０−２は、マスターデバイス６０とターゲットデバイス７０のバッファ構成の一例を示す図である。
【図２０−３】図２０−３は、応答遅延の一例を説明するための図である。
【図２１】図２１は、マスターデバイスおよびターゲットデバイスのバッファサイズとデータ転送レートの関係の一例を示す図である。
【図２２】図２２は、ケーブル長とデータ転送レートの関係の一例を示す図である。
【図２３】図２３は、ＰＣＩｅスイッチ８０を経路上に挿入した従来技術の例を示す図である。
【図２４】図２４は、従来技術における一般的なＰＣＩｅスイッチ８０の内部構成例を示す図である。
【図２５】図２５は、第１の実施の形態の変更例にかかるデータ中継装置１０−２の構成の一例を示すブロック図である。
【図２６】図２６は、データ中継装置１０−２の構成の一例を示すブロック図である。
【図２７】図２７は、ＱＳＦＰ＋で規定されているレジスタマップを示す図である。
【図２８】図２８は、Ｂａｓｅ  ＩＤフィールドのデータ構造の一例を示す図である。
【発明を実施するための形態】
【００２８】
以下に添付図面を参照して、この発明にかかるデータ転送装置、データ転送デバイスおよびデータ転送方法の最良な実施の形態を詳細に説明する。
【００２９】
（第１の実施の形態）
図１は、本発明の第１の実施の形態にかかるデータ中継装置１０の構成の一例を示すブロック図である。データ中継装置１０は、パケットデータを転送するデータ転送装置である。パケットデータの転送には、例えば、ＰＣＩ（Ｐｅｒｉｐｈｅｒａｌ Ｃｏｍｐｏｎｅｎｔ Ｉｎｔｅｒｃｏｎｎｅｃｔ） Ｅｘｐｒｅｓｓ（ＰＣＩｅ）規格を利用し、ＰＣＩ Ｅｘｐｒｅｓｓ規格のＴＬＰ（Ｔｒａｎｓａｃｔｉｏｎ Ｌａｙｅｒ ＰＡＣＫｅｔ）、ＡＣＫ（ＡＣＫｎｏｗｌｅｄｇｅｍｅｎｔ）、Ｎａｋ（Ｎｅｇａｔｉｖｅ ＡＣＫｎｏｗｌｅｄｇｅｍｅｎｔ）、ＦＣ（Ｆｌｏｗ Ｃｏｎｔｒｏｌ）などのＤＬＬＰ（Ｄａｔａ Ｌｉｎｋ Ｌａｙｅｒ ＰＡＣＫｅｔ）などのパケットデータを転送する。ＴＬＰは、リクエストやデータを保持するパケットである。また、ＤＬＬＰは、制御目的で転送されるパケットである。
【００３０】
データ中継装置１０は、第１ポート１００と、第２ポート２００と、メモリ制御部３００と、メモリ３１０と、メモリマップレジスタ３２０とを備えている。第１ポート１００、第２ポート２００およびメモリ制御部３００は、内部バス３３０に接続されている。第１ポート１００および第２ポート２００は、いずれもＰＣＩｅ回路である。すなわち、データ中継装置１０は、２つのＰＣＩｅ回路を備えている。
【００３１】
内部バス３３０は、第１ポート１００とメモリ制御部３００との間のパケットデータの送受信を行う。同様に、第２ポート２００とメモリ制御部３００との間のパケットデータの送受信を行う。メモリ制御部３００は、メモリ３１０を管理する。具体的には、メモリ制御部３００は、メモリ３１０からパケットデータを読み出し、内部バス３３０に送る。メモリ制御部３００は内部バス３３０を介して第１ポート１００または第２ポート２００から受信したパケットデータをメモリ３１０に格納する。メモリ３１０は、第１ポート１００および第２ポート２００の受信バッファ、送信バッファおよび再送バッファとしてパケットデータを格納する。各バッファは、ＰＣＩｅ規格のバッファである。メモリマップレジスタ３２０は、メモリ３１０のメモリマップを格納する。
【００３２】
第１ポート１００は、第１受信ポート（ＲＸ）１０１と、第１エラー検出部１０２と、第１クレジット検出部１０３と、第１ＡＣＫ／Ｎａｋ検出部１０４と、第１受信バッファ１０５と、第１受信フロー制御部１０８と、第１送信バッファ１２３と、第１送信フロー制御部１２４と、第１送信ポート（ＴＸ）１２５と、第１再送バッファ制御部１２６と、第１再送バッファ１２７と、第１遅延検出部１２８とを有している。第２ポート２００は、第２受信（ＲＸ）ポート２０１と、第２エラー検出部２０２と、第２クレジット検出部２０３と、第２ＡＣＫ／Ｎａｋ検出部２０４と、第２受信バッファ２０５と、第２受信フロー制御部２０８と、第２送信バッファ２２３と、第２送信フロー制御部２２４と、第２送信ポート（ＴＸ）２２５と、第２再送バッファ制御部２２６と、第２再送バッファ２２７とを有している。
【００３３】
第１受信バッファ１０５は、受信部１０５１と、送信部１０５２とを有している。第１受信バッファ１０５は、第１受信バッファ１０５を識別するバッファＩＤを格納している。受信部１０５１は、パケットデータを受信すると、内部バス３３０にメモリ書込信号を送信する。メモリ書込信号とは、メモリ３１０にパケットを書き込むことを指示する情報である。メモリ書込信号には、受信したパケットおよび第１受信バッファ１０５のパケットＩＤが含まれている。
【００３４】
送信部１０５２は、パケットを次の送信経路に送信する場合に、内部バス３３０にメモリ読出信号を送信する。メモリ読出信号には、第１受信バッファ１０５のパケットＩＤが含まれている。送信部１０５２は、メモリ読出信号に対する応答として内部バス３３０からＴＬＰを第１受信バッファ１０５のパケットＩＤとともに受信する。そして、受信したＴＬＰを第２ポート２００に送信する。
【００３５】
このように、本実施の形態にかかる第１受信バッファ１０５は、ＦＩＦＯなどのメモリは実装せず、内部バス３３０を介して接続されているメモリ３１０をバッファとして利用する。すなわち、第１バッファ１０５が転送するパケットデータをメモリ３１０に一時的に格納する。
【００３６】
なお、第１送信バッファ１２３、第１再送バッファ制御部１２６、第２受信バッファ２０５、第２送信バッファ２２３および第２再送バッファ制御部２２６は、第１受信バッファ１０５と同様に、送信部と受信部とを有している。また、第１送信バッファ１２３、第１再送バッファ制御部１２６、第２受信バッファ２０５、第２送信バッファ２２３および第２再送バッファ制御部２２６は、それぞれ自身を識別するバッファＩＤを格納している。各部の送信部および受信部の構成および動作は、受信部１０５１および送信部１０５２の構成および動作と同様である。
【００３７】
第１ポート１００の第１遅延検出部１２８は、第１受信ポート１０１からＴＬＰが送出されてから、第１送信バッファ１２３がこのＴＬＰに対する応答であるＤＬＬＰ、すなわちＡＣＫ、ＮａｋまたはＦＣを受信するまでに要する時間である第１遅延時間を計測する。そして、第１遅延時間をメモリ制御部３００に送信する。同様に、第２ポート２００の第２遅延検出部２２８は、第２受信ポート２０１からＴＬＰが送信されてから、第２送信バッファ２２３がこのＴＬＰに対するＤＬＬＰを受信するまでに要する時間である第２遅延時間を計測する。そして、計測した第２遅延時間をメモリ制御部３００に送信する。
【００３８】
なお、上述にて説明した構成以外の各部の構成についての説明は次のとおりである。すなわち、第１受信ポート１０１は、ＴＬＰまたはＤＬＬＰを受信する。第１エラー検出部１０２は、ＣＲＣ（Ｃｙｃｌｉｃ Ｒｅｄｕｎｄａｎｃｙ Ｃｈｅｃｋ）の値を元に、ＴＬＰのエラーを検出する。第１エラー検出部１０２は、エラーが検出されない場合には、第１送信ポート１２５へＡＣＫパケットを転送する。一方、エラーが検出された場合は、第１エラー検出部１０２は、Ｎａｋパケットを第１送信ポート１２５へ転送するとともに、受信したＴＬＰを破棄する。エラーが検出されなかった場合は、ＴＬＰは、第１受信バッファ１０５に送られる。
【００３９】
一方、第１送信フロー制御部１２４は、第１ポート１００側に接続されているデバイスの受信バッファに空きがあるか否かを判定される。ＴＬＰは、第１ポート１００側に接続されているデバイスの受信バッファに空きがある場合のみ、第１送信ポート（ＴＸ）１２５から送出される。
【００４０】
第１ポート１００側のデバイスの受信バッファの空き容量は、第１ポート側のデバイスよりＦＣパケットにより通知されるクレジット情報に基づいて、管理されている。第１受信ポート（ＲＸ）１０１は、ＦＣパケットを受信する。さらに、第１クレジット検出部１０３は、ＦＣパケットからクレジット値を検出し、これを第１送信フロー制御部１２４に通知する。
【００４１】
第１ＡＣＫ／Ｎａｋ検出部１０４は、通達されてきたパケットが、ＡＣＫパケットであるかＮａｋパケットであるかを検出する。そして、第１ＡＣＫ／Ｎａｋ検出部１０４は、ＡＣＫまたはＮａｋの情報を第１再送バッファ制御部１２６に通知する。
【００４２】
第１再送バッファ制御部１２６は、ＡＣＫが通知された場合は、相手先デバイスに正常にＴＬＰが届いているので第１再送バッファ１２７に格納されているＴＬＰの内容を破棄する。一方、第１再送バッファ制御部１２６は、Ｎａｋが通知された場合は、相手先デバイスに正常にＴＬＰが届いていないので第１再送バッファ１２７に格納されているＴＬＰを再度送信する。
【００４３】
また、第１受信バッファ１０５からのパケットデータの送出が完了すると、第１受信バッファ１０５に空きが生じる。第１受信フロー制御部１０８は、第１受信バッファ１０５の空きのサイズをクレジット情報として有するＦＣパケットを第１送信ポート１２５より送出する。
【００４４】
図２は、メモリマップレジスタ３２０のデータ構成の一例を模式的に示す図である。メモリマップレジスタ３２０は、各バッファのバッファＩＤと、各バッファとして利用されるメモリ３１０の開始アドレスおよび終了アドレスを対応付けて格納している。これらの値がメモリマップに反映され、後述のメモリ制御部３００によるメモリ３１０へのアクセスの際に参照される。なお、メモリマップレジスタ３２０に格納されているメモリマップの値はデフォルト値である。
【００４５】
図２に示すメモリマップデータは、データ中継装置１０の第１ポート１００側にケーブルを接続し、第２ポート２００側にはデバイスを直接接続させる場合のデータである。この場合、転送の遅延時間は、第２ポート２００に比べて第１ポート１００のほうが大きくなる。そこで、図２に示すように、第１ポート１００の各バッファに対し、第２ポート２００の各バッファに比べて大きいバッファ領域を割り当てておく。これにより、第１ポート１００の遅延時間を吸収することができる。さらに、第１再送バッファ制御部１２６のバッファサイズは第１送信ポート１２５のバッファサイズと依存関係にある。そこで、第１再送バッファ制御部１２６に対し、第１送信ポート１２５のバッファ領域と同じまたはそれ以上のバッファサイズのバッファ領域を割り当てる。第２再送バッファ制御部２２６についても同様である。
【００４６】
図３は、メモリ制御部３００の構成の一例を示す図である。メモリ制御部３００は、メモリマップ演算回路３０１と、選択部３０２と、メモリマップ格納部３０４と、アドレス特定部３０５とを有している。
【００４７】
メモリマップ演算回路３０１は、第１遅延検出部１２８から第１遅延時間を受信する。また、第２遅延検出部２２８から第２遅延時間を受信する。メモリマップ演算回路３０１は、第１遅延時間および第２遅延時間に基づいて、メモリ３１０のメモリマップを演算する。すなわち、メモリマップ演算回路３０１は、第１遅延時間および第２遅延時間に基づいて各ポートに対するバッファ領域を確保する。具体的には、遅延時間が大きいほど、対応するポートに対し大きいサイズのバッファ領域を確保し、遅延時間が小さいほど、対応するポートに対し小さいサイズのバッファ領域を確保する。図４は、メモリマップ演算回路３０１の処理を説明するための図である。
【００４８】
メモリマップ演算回路３０１は、第１遅延時間と第２遅延時間の比率と対応するバッファのバッファサイズの比率とが等しくなるようなメモリマップを作成する。図４に示すように、第１遅延時間をＡ、第２遅延時間をＢ、第１ポート１００の第１受信バッファ１０５、第１送信バッファ１２３、第１再送バッファ１２７のバッファサイズをそれぞれＸ１，Ｘ２，Ｘ３、第２ポート２００の第２受信バッファ２０５、第２送信バッファ２２３、第２再送バッファ２２７のバッファサイズをそれぞれＹ１，Ｙ２，Ｙ３とした場合に、（式１）が成立するような領域配分となるメモリマップを算出する。
Ａ：Ｂ＝Ｘ１：Ｙ１＝Ｘ２：Ｙ２＝Ｘ３：Ｙ３・・・（式１）
【００４９】
具体的な計算例を以下に示す。前提として、メモリの合計サイズは８ＫＢｙｔｅ（８１９２Ｂｙｔｅ）とする。また第１ポート１００はＰＣＩｅスロットでＰＣＩｅデバイスに直結されており、第２ポート２００はケーブルを経由してケーブルの先のＰＣＩｅデバイスに接続されているものとする。ケーブルは長さに依存してパケット伝播に時間を要し、ここでは１ｍあたり５ｎｓの遅延が発生することとする。
【００５０】
また、計算では、第１ポート１００、第２ポート２００ともに、ＰＣＩｅのｘ４レーン接続されていることとする。ここで、たとえば双方向に１２８Ｂｙｔｅのパケットが転送されていると、ＰＣＩｅのｘ４レーン接続では１パケットの伝送を完了するために、最低でも１５２ｎｓ（ヘッダサイズ２４Ｂｙｔｅの伝送に要する時間＋１２８Ｂｙｔｅのデータ（ペイロード）の伝送に要する時間の合計）の時間を要する。通信先デバイスでは、パケットの受信が完了した時点でエラーが発生していなければＡＣＫパケットが応答される。パケット受信完了からＡＣＫの送信までは、ＰＣＩｅデバイス内部の遅延時間が発生する。計算例では、ＰＣＩｅデバイス内部の遅延発生時間を３００ｎｓと仮定する。また、第２ポート２００に接続されるケーブル長を１００ｍと仮定する。
【００５１】
第１ポート１００で発生する第１遅延時間Ａは、パケット伝送に要する１５２ｎｓ＋ＰＣＩｅ内部遅延３００ｎｓで、最低でも４５２ｎｓとなる。これに対して第２ポート２００で発生する遅延時間Ｂは、１５２ｎｓ＋ケーブル遅延５００ｎｓ（５ｎｓ×１００ｍ）＋ＰＣＩｅ内部遅延３００ｎｓ＋ケーブル遅延５００ｎｓ（５ｎｓ×１００ｍ）となり、合計１４５２ｎｓとなる。両者の比率から、第１ポート１００用のメモリサイズは、８１９２Ｂｙｔｅ×４５２ｎｓ／（１４５２ｎｓ＋４５２ｎｓ）＝１９４５Ｂｙｔｅとなる。また、第２ポート２００用のメモリサイズは、８１９２Ｂｙｔｅ×１４５２ｎｓ／（１４５２ｎｓ＋４５２ｎｓ）＝６２４７Ｂｙｔｅとなる。
【００５２】
したがって、第１遅延時間をＡ、第２遅延時間をＢ、第１ポート１００の第１受信バッファ１０５、第１送信バッファ１２３、第１再送バッファ１２７のバッファサイズをそれぞれＸ１、Ｘ２、Ｘ３とし、第２ポート２００の第２受信バッファ２０５、第２送信バッファ２２３、第２再送バッファ２２７のバッファサイズをそれぞれＹ１，Ｙ２，Ｙ３とした場合に、Ａ：Ｂ＝Ｘ１：Ｙ１＝Ｘ２：Ｙ２＝Ｘ３：Ｙ３が成立するような領域配分となるメモリマップとするために、メモリマップ演算回路３０１は以下のようにＸ１およびＹ１を決定する。
Ｘ１＝Ｘ２＝Ｘ３＝１９４５Ｂｙｔｅ／３＝６８４Ｂｙｔｅ
Ｙ１＝Ｙ２＝Ｙ３＝６２４７Ｂｙｔｅ／３＝２０８２Ｂｙｔｅ  
【００５３】
このとき、第１ポート１００の第１受信バッファ１０５、第１送信バッファ１２３、第１再送バッファ１２７のバッファには、それぞれ１２８Ｂｙｔｅのパケットが６８４Ｂｙｔｅ／１２８Ｂｙｔｅ＝５個蓄積されるようになり、ＰＣＩｅスロット直結で発生するＡＣＫやＦＣパケットの待ち時間を小さなサイズのバッファで無くすことができる。これに対して、第２ポート２００の第２受信バッファ２０５、第２送信バッファ２２３、第２再送バッファ２２７には、それぞれ１２８Ｂｙｔｅのパケットが２０８２Ｂｙｔｅ／１２８Ｂｙｔｅ＝１６個蓄積可能となり、ケーブルで発生するＡＣＫやＦＣパケットの待ち時間を大きなサイズのバッファで無くすことができるようになる。
【００５４】
このように、各ポートの遅延時間に応じたバッファ領域を各ポートのバッファとして割り当てることができる。したがって、遅延時間の比較的小さいポートのバッファサイズを小さくし、遅延時間の比較的大きいポートのバッファサイズを大きくすることにより、各バッファに適切なサイズのバッファを割り当てることができる。これにより、バッファ量の不足に起因した遅延時間を短縮することができる。
【００５５】
選択部３０２は、メモリマップレジスタ３２０に格納されているメモリマップと、メモリマップ演算回路３０１により作成されたメモリマップのうちいずれか一方のメモリマップを選択し、メモリマップ格納部３０４に格納する。具体的には、メモリマップ演算回路３０１によりメモリマップが作成されていない場合には、メモリマップレジスタ３２０に格納されているメモリマップを選択する。また、メモリマップ演算回路３０１によりメモリマップが作成された後は、メモリマップ演算回路３０１により作成されたメモリマップを選択する。
【００５６】
アドレス特定部３０５は、内部バス３３０を介して第１バッファ１０５の受信部１０５１からメモリ書込信号を受信する。アドレス特定部３０５は、メモリ書込信号を受信すると、メモリマップ格納部３０４に格納されているメモリマップを参照し、受信したメモリ書込信号に含まれるバッファＩＤを用いて、第１受信バッファ１０５に割り当てられているアドレスにＴＬＰを格納する。アドレス特定部３０５は、また内部バス３３０を介して第１受信バッファ１０５の送信部１０５２からメモリ読出信号を受信する。アドレス特定部３０５は、メモリ読出信号を受信した場合もメモリ書込信号を受信した場合と同様に、第１受信バッファ１０５に割り当てられているアドレスを特定する。そして、アドレス特定部３０５は、特定したアドレスからＴＬＰを読み出す。以上のように、アドレス特定部３０５は、第１受信バッファ１０５とメモリ３１０の間のＴＬＰの送受信を管理する。
【００５７】
なお、アドレス特定部３０５は、同様に、第１送信バッファ１２３、第１再送バッファ１２７、第２受信バッファ２０５、第２送信バッファ２２３および第２再送バッファ２２７とメモリ３１０の間のＴＬＰの送受信の管理も行う。
【００５８】
図５は、第１受信バッファ１０５がパケットを受信した場合の処理の一例を示すフローチャートである。第１受信バッファ１０５の受信部１０５１は、パケットデータ（ＴＬＰ）を受信すると、受信部１０５１は、メモリ書込信号を内部バス３３０を介してメモリ制御部３００に送信する（ステップＳ１００）。メモリ書込信号には、受信部１０５１が受信したＴＬＰおよび第１受信バッファ１０５のバッファＩＤが含まれている。
【００５９】
メモリ制御部３００のアドレス特定部３０５は、メモリマップ格納部３０４を参照し、メモリ書込信号に含まれているバッファＩＤを用いて、第１受信バッファ１０５に割り当てられている、メモリ３１０のアドレスを特定する（ステップＳ１０２）。次に、アドレス特定部３０５は、このアドレスに対するメモリライトを実行する（ステップＳ１０４）。以上で、第１受信バッファ１０５によるパケットデータ受信にかかる処理が完了する。
【００６０】
以上の処理により、メモリ書込信号に含まれているＴＬＰをメモリ３１０のうち第１受信バッファ１０５のバッファ領域に書き込むことができる。このように、第１受信バッファ１０５は、メモリ３１０をバッファとして利用することができる。
【００６１】
図６は、送信部１０５２がパケットを送信する場合の処理の一例を示すフローチャートである。送信部１０５２は、パケットデータ（ＴＬＰ）を送信する際には、メモリ読出信号を内部バス３３０を介してメモリ制御部３００に送信する（ステップＳ２００）。メモリ読出信号には、バッファＩＤが含まれている。メモリ制御部３００のアドレス特定部３０５は、メモリマップ格納部３０４を参照し、メモリ読出信号に含まれている第１受信バッファ１０５のバッファＩＤを用いて、第１受信バッファ１０５に割り当てられている、メモリ３１０のアドレスを特定する（ステップＳ２０２）。次に、アドレス特定部３０５は、このアドレスに対するメモリリードアクセスを実行し、メモリ３１０の第１受信バッファ１０５のバッファ領域に書き込まれているＴＬＰを読み出す（ステップＳ２０４、ステップＳ２０６）。
【００６２】
次に、メモリ制御部３００のアドレス特定部３０５は、メモリ３１０から読み出したＴＬＰを第１受信バッファ１０５のバッファＩＤとともに、内部バス３３０に送信する（ステップＳ２０８）。内部バス３３０は、受信したバッファＩＤに基づいて、第１受信バッファ１０５を特定する。内部バス３３０はさらに、特定した第１受信バッファ１０５の送信部１０５２にメモリ制御部３００から受信したＴＬＰを送信する（ステップＳ２１０）。送信部１０５２は、内部バス３３０からＴＬＰを受信すると、これを転送先に送信する（ステップＳ２１２）。以上で、第１受信バッファ１０５によるパケットデータ送信にかかる処理が完了する。
【００６３】
以上のように、第１受信バッファ１０５は、内部にメモリを有さないが、メモリ３１０をバッファとして利用することにより、従来の受信バッファと同様に、パケットデータを一時的に保持し、適切なタイミングで転送先に送出することができる。
【００６４】
図７は、メモリマップの更新にかかる処理の一例を示すフローチャートである。パケット通信の開始前において、選択部３０２は、メモリマップレジスタ３２０に格納されているメモリマップを選択し、これをメモリマップ格納部３０４に格納する（ステップＳ３００）。パケット通信が開始されると、第１ポート１００または第２ポート２００はパケットデータ（ＴＬＰ）を受信する。第１ポート１００がパケットデータ（ＴＬＰ）を受信した場合（ステップＳ３０２，第１ポート）、このパケットデータ（ＴＬＰ）は、第１ポート１００から第２ポート２００に転送され、第２ポート２００から相手先のデバイスに送出される（ステップＳ３０４）。そして、第２ポート２００は、このパケットデータ（ＴＬＰ）に対する応答としてのパケットデータ（ＡＣＫ、Ｎａｋ、ＦＣ）を受信する。応答としてのパケットデータを受信すると、第２遅延検出部２２８は、パケットデータ（ＴＬＰ）を送信してから、このパケットデータに対する応答としてのパケットデータ（ＡＣＫ、Ｎａｋ、ＦＣ）を受信するまでの第２遅延時間を計測する（ステップＳ３０６）。
【００６５】
一方、選択部３０２において、第２ポート２００がパケットデータを送信した場合（ステップＳ３０２，第２ポート）、このパケットデータ（ＴＬＰ）が第１ポート１００から送出される（ステップＳ３１４）。そして、第１ポート１００は、このパケットデータ（ＴＬＰ）に対する応答としてのパケットデータ（ＡＣＫ、Ｎａｋ、ＦＣ）を受信する。応答としてのパケットデータを受信すると、第１遅延検出部１２８は、パケットデータ（ＴＬＰ）を送信してから、このパケットデータに対する応答としてのパケットデータ（ＡＣＫ、Ｎａｋ、ＦＣ）を受信するまでの第１遅延時間を計測する（ステップＳ３１６）。
【００６６】
そして、第１遅延時間および第２遅延時間がともに計測または更新されると（ステップＳ３２０，Ｙｅｓ）、メモリマップ演算回路３０１は、更新後の第１遅延時間および第２遅延時間に基づいて、メモリ３１０のメモリマップを作成する（ステップＳ３２２）。そして、選択部３０２は、作成したメモリマップをメモリマップ格納部３０４に格納する。すなわち、メモリマップ格納部３０４に既に格納されているメモリマップを新たに作成したメモリマップで上書きすることにより、メモリマップ格納部３０４のメモリマップを更新する（ステップＳ３２４）。そして、ステップＳ３０２へ進む。一方、ステップＳ３２０において、更新が完了していない場合には（ステップＳ３２０，Ｎｏ）、再びステップＳ３０２に戻る。以上で、メモリマップの更新にかかる処理が完了する。
【００６７】
このように、メモリマップは適宜更新されるので、メモリ３１０のバッファ領域を第１遅延時間および第２遅延時間に基づいて決定された適切なバッファサイズ配分に保つことができる。
【００６８】
図８は、マスターデバイスの送信デバイスのバッファサイズとデータ転送レートの関係の一例を示す図である。実線は、実施の形態にかかるデータ中継装置１０を用いた場合のデータ転送レートを示している。図２１と同様に、縦軸はＰＣＩｅのｘ４レーン接続により、１リクエストあたり１２８Ｂｙｔｅのメモリリードリクエストを連続発行した際のデータ転送レートである。点線は、データ中継装置１０を用いない場合のデータ転送レートを示している。図８のグラフに示すように、データ中継装置１０を用いた場合には、マスターデバイスの送信バッファのバッファサイズが小さい場合であっても、データ転送レートの低下は見られない。これは、データ中継装置１０を挿入することによって、ＰＣＩｅスロット直結側のポートで発生するＡＣＫやＦＣパケットの待ち時間を小さなサイズのバッファで解消され、ケーブル側のポートで発生するＡＣＫやＦＣパケットの待ち時間を大きなサイズのバッファで解消されているためである。このように、データ中継装置１０を用いることにより、マスターデバイスのバッファサイズが小さい場合であっても、高いデータ転送レートを維持することができる。
【００６９】
図９は、マスターデバイスとターゲットデバイスの間のケーブル長とデータ転送レートの関係の一例を示す図である。図２２と同様に、縦軸はＰＣＩｅのｘ４レーン接続により、１リクエストあたり１２８Ｂｙｔｅのメモリリードリクエストを連続発行した際のデータ転送レートである。実線は、データ中継装置１０を用いた場合のデータ転送レートを示している。点線は、データ中継装置１０を用いない場合のデータ転送レートを示している。図９のグラフに示すように、データ中継装置１０を用いた場合には、ケーブル長に関わらず一定したデータ転送レートを維持することができる。このように、データ中継装置１０を用いることにより、ケーブル長に関わらず高いデータ転送レートを維持することができる。
【００７０】
以下、実施の形態にかかるデータ中継装置１０の適用例を説明する。図１０に示すシステムにおいては、マスターデバイス２０とターゲットデバイス３０はケーブル４０により接続されている。また、マスターデバイス２０およびターゲットデバイス３０のバッファサイズは小さくケーブル４０による遅延を吸収できないとする。この場合には、図１０に示すように本実施の形態にかかるデータ中継装置１０Ａをケーブル４０とマスターデバイス２０の間に挿入する。さらに、データ中継装置１０Ｂをケーブル４０とターゲットデバイス３０の間に挿入する。
【００７１】
パケット通信が開始すると、データ中継装置１０Ａは、パケット転送に長い遅延時間を生じるケーブル側のポートに対し、より大きなバッファサイズを割り当てる。図１０に示す例においては、ケーブル４０とデータ中継装置１０Ａの間の遅延時間がマスターデバイス２０とデータ中継装置１０Ａの間の遅延時間の２倍であるとする。この場合、マスターデバイス２０側の第１受信バッファ１０５Ａに４段のバッファ、ケーブル４０側の第２送信バッファ２２３Ａおよび第２再送バッファ２２７Ａにマスターデバイス２０側の第１受信バッファ１０５Ａの２倍の８段のバッファが割り当てられる。データ中継装置１０Ｂについても同様である。すなわち、第１受信バッファ１０５Ｂに８段、第２送信バッファ２２３Ｂおよび第２再送バッファ２２７Ｂにそれぞれ４段のバッファが割り当てられる。
【００７２】
図１１−１から図１１−３は、図１０に示すシステムにおけるパケット転送のタイミングチャートの一例を示す図である。図１１−１は、マスターデバイス２０とデータ中継装置１０Ａの間のパケット転送のタイミングチャートの一例を示す図である。図１１−２は、データ中継装置１０Ａとデータ中継装置１０Ｂの間のパケット転送のタイミングチャートの一例を示す図である。図１１−３は、データ中継装置１０Ｂとターゲットデバイス３０の間のパケット転送のタイミングチャートの一例を示す図である。
【００７３】
マスターデバイス２０とデータ中継装置１０Ａの間およびターゲットデバイス３０とデータ中継装置１０Ｂの間は、ケーブルを介さず直接接続している。このため、図１１−１および図１１−３に示すように遅延は少ない。このため、４段のバッファでもデータ転送効率を低下させることなく、データ転送が行われる。データ中継装置１０Ａとデータ中継装置１０は、ケーブル４０を介して接続している。このため、図１１−２に示すように、遅延時間はデータ中継装置１０Ａとマスターデバイス２０の間およびデータ中継装置１０Ｂとターゲットデバイス３０の間に比べて大きくなる。これに対し、実施の形態にかかるデータ中継装置１０Ａおよびデータ中継装置１０Ｂのケーブル４０側にはそれぞれ８段のバッファが割り当てられている。このため、データ転送が休止することなく、効率良くデータ転送を継続することができる。
【００７４】
図１２に示すシステムにおいては、マスターデバイス２０は、８段のバッファを有している。一方、ターゲットデバイス３０は、４段のバッファを有している。マスターデバイス２０とターゲットデバイス３０との間はケーブル４０を介して接続している。この場合には、図１２に示すように本実施の形態にかかるデータ中継装置１０をケーブル４０とターゲットデバイス３０の間に挿入する。
【００７５】
パケット通信が開始すると、データ中継装置１０は、ケーブル４０側に８段、ターゲットデバイス３０側に４段のバッファを割り当てる。すなわち、第１受信バッファ１０５には８段、第２送信バッファ２２３および第２再送バッファ２２７に４段のバッファを割り当てる。図１３−１は、マスターデバイス２０とデータ中継装置１０の間のパケット転送のタイミングチャートの一例を示す図である。図１３−２は、データ中継装置１０とターゲットデバイス３０の間のパケット転送のタイミングチャートの一例を示す図である。マスターデバイス２０とデータ中継装置１０の間のパケット転送の遅延時間は、データ中継装置１０とターゲットデバイス３０の間のパケット転送の遅延時間に比べて長くなる。しかしながら、実施の形態にかかるデータ中継装置１０のケーブル４０側には８段のバッファが割り当てられている。このため、データ転送が休止することなく、効率良くデータ転送を継続することができる。
【００７６】
図１４に示すシステムにおいては、図１３に示すシステムとは逆に、マスターデバイス２０は、４段のバッファを有し、ターゲットデバイス３０は８段のバッファを有している。マスターデバイス２０とターゲットデバイス３０はケーブル４０を介して接続している。この場合には、図１４に示すように、本実施の形態にかかるデータ中継装置１０をケーブル４０とマスターデバイス２０の間に挿入する。
【００７７】
パケット通信が開始すると、データ中継装置１０は、マスターデバイス２０側に４段、ケーブル４０側に８段のバッファを割り当てる。図１５−１は、マスターデバイス２０とデータ中継装置１０の間のパケット転送のタイミングチャートの一例を示す図である。図１５−２は、データ中継装置１０とターゲットデバイス３０の間のパケット転送のタイミングチャートの一例を示す図である。データ中継装置１０とターゲットデバイス３０の間のパケット転送の遅延時間は、データ中継装置１０とマスターデバイス２０の間のパケット転送の遅延時間に比べて長くなる。しかしながら、実施の形態にかかるデータ中継装置１０のケーブル４０側には８段のバッファが割り当てられているので、効率良くデータ転送を継続することができる。
【００７８】
以上のように、本実施の形態にかかるデータ中継装置１０を用いることにより、ケーブル接続が考慮されていない、バッファサイズの小さいマスターデバイスとのケーブルを介したパケット転送においても、データ転送効率を低下させることなくデータ転送を継続することができる。さらに、マスターデバイスとターゲットデバイスのバッファサイズが異なる場合であっても、同様の効果を得ることができる。
【００７９】
第１の実施の形態にかかるデータ中継装置１０の変更例としては、データ中継装置１０が直接またはケーブルを介して接続するデバイスからの応答時間から第１遅延時間および第２遅延時間を予め算出可能な場合には、予め第１遅延時間および第２遅延時間を算出し、これらの値に基づいて作成したメモリマップをメモリマップ格納部３０４に格納しておくこととしてもよい。これにより、第１ポート１００の第１遅延検出部１２８および第２ポート２００の第２遅延検出部２２８の動作を停止させておくことができる。また、第１遅延検出部１２８および第２遅延検出部２２８を備えないこととしてもよい。
【００８０】
第１遅延検出部１２８および第２遅延検出部２２８を備えない別のデータ中継装置１０−２を含むシステムの構成例を図２５に示す。この例では、ケーブル接続にＱＳＦＰ＋規格に準拠したケーブル４０−２を用いている。ＱＳＦＰ＋コネクタ３４０は、Ｉ２Ｃ（Inter-Integrated Circuit）シリアルバス経由で、内部のレジスタ情報にアクセスできることが規定されている。図２７は、ＱＳＦＰ＋で規定されているレジスタマップを示す図である。図２７に示すように、レジスタマップ中にＢａｓｅ  ＩＤフィールド２７０１が設けられている。図２８は、Ｂａｓｅ  ＩＤフィールドのデータ構造の一例を示す図である。図２８に示すように、Ｂａｓｅ  ＩＤフィールドの中には、ケーブル長が１ｍ単位で記録されており、Ｉ２Ｃバスからこのアドレスを読み出すことで、何ｍのケーブルが接続されているかを検知することができる。このケーブル長の情報を読み出すために、データ中継装置１０−２は、ＱＳＦＰ＋コネクタ３４０と高速の差動信号線に加え、低速のレジスタ制御用Ｉ２Ｃ信号線にも接続された構成をとる。
【００８１】
図２６は、データ中継装置１０−２の構成の一例を示すブロック図である。図１の構成との違いは、第１遅延検出部１２８と第２遅延検出部２２８を持たない点、Ｉ２Ｃシリアルバス経由で、ＱＳＦＰ＋コネクタ３４０からケーブル長情報を読み出すＩ２Ｃ制御回路３５０を設けた点、および、読み出したケーブル長情報から、発生する遅延時間に変換するケーブル長遅延時間変換回路３６０を設けた点である。なお、Ｉ２Ｃ制御回路３５０がＱＳＦＰ＋コネクタ３４０のレジスタ制御用Ｉ２Ｃ信号線に接続され、第２受信ポート２０１および第２送信ポート２２５が、ＱＳＦＰ＋コネクタ３４０の高速差動信号線に接続される。ケーブル長遅延時間変換回路３６０は、１ｍあたりの遅延時間と読み出したケーブル長の情報から、第２ポート２００−２の遅延情報が通信中にパケットの応答遅延（第２遅延時間）を計測せずに推定することで算出できる。
【００８２】
たとえば、レジスタから読み出した値が１００ｍであった場合、ケーブル長遅延時間変換回路３６０は、パケット送信からＡＣＫやＦＣの応答に要する時間を、１ｍあたりの遅延時間×ケーブル長×２（リクエストが出て応答が戻るため往復分を加味）＝５ｎｓ×１００ｍ×２ｎｓ＝１０００ｎｓのように算出できる。これにより、遅延時間検出回路（第１遅延検出部１２８および第２遅延検出部２２８）を設けた第１の実施形態で動的に計測した結果に近い概算値を、静的に予測することができるようになる。
【００８３】
第１ポート１００−２の遅延時間は、ケーブルを使用しないため、固定値としてあらかじめ予測可能であるが、第２ポート２００−２の遅延時間は接続されるケーブル長によって変化するため、このようにＱＳＦＰ＋コネクタ３４０からケーブル長情報を読み出すことにより、遅延時間を予測してバッファの配分を調節することが可能になる。
【００８４】
（第２の実施の形態）
図１６は、第２の実施の形態にかかるデータ転送デバイスであるデータ中継デバイスとしてのＰＣＩｅスイッチ１２の構成の一例を示すブロック図である。ＰＣＩｅスイッチ１２は、第１ポート１００と第２ポート２００の他、第３ポート（ＰＣＩｅ回路）４００をさらに備えている。第３ポート４００の構成は、第１ポート１００および第２ポート２００と同様である。すなわち、第３ポート４００は、第３受信バッファ４０１と、第３送信バッファ４０２と、第３再送バッファ４０３とを備えている。各バッファ４０１〜４０３は、それぞれ内部バス３３０を介してメモリ３１０とパケットデータ（ＴＬＰ）の転送を行う。このように、ＰＣＩｅスイッチ１２は、複数のポートを有しているので、複数のデバイス間における相互の通信を行うことができる。
【００８５】
また、メモリ制御部３００においては、第１ポート１００、第２ポート２００および第３ポート４００に対するバッファ領域が割り当てられたメモリマップを参照することにより、各ポートからのメモリ３１０へのパケットデータの書き込みと各ポートへのメモリ３１０からのパケットデータの読み出しを制御する。
【００８６】
ＰＣＩｅスイッチ１２はさらに、ポートアービトレーション回路４１０を備えている。ポートアービトレーション回路４１０は、各ポート間のパケットデータの転送先のポートを選択する。ポートアービトレーション回路４１０は、さらに同時に複数の転送元のポートから同一の転送先のポートへのパケットデータの転送の競合が発生した場合に、転送処理を優先する転送元ポートを選択する。
【００８７】
なお、これ以外のＰＣＩｅスイッチ１２の構成および動作は、第１の実施の形態にかかるデータ中継装置１０の構成と同様である。
【００８８】
図１７は、第２の実施の形態にかかるＰＣＩｅスイッチ１２の適用例を示す図である。図１７に示すシステムにおいては、ＰＣＩｅスイッチ１２Ａは、マスターデバイス２０とターゲットデバイス３０Ａと直接接続し、さらにケーブル４０Ａと接続している。また、ＰＣＩｅスイッチ１２Ｂは、ケーブル４０Ａ，４０Ｂおよびターゲットデバイス３０Ｂと接続している。また、ターゲットデバイス３０Ｃとケーブル４０Ｂの間には、第１の実施の形態にかかるデータ中継装置１０が挿入されている。
【００８９】
図１７に示すシステムにおいては、ＰＣＩｅスイッチ１２Ａのうち、マスターデバイス２０およびターゲットデバイス３０Ａが接続されているポートは、各デバイスとケーブルを介さず直接接続している。したがって、ケーブル４０Ａと接続しているポートに比べて応答時間が短い。したがって、マスターデバイス２０およびターゲットデバイス３０Ａが接続されているポートに対してケーブル４０Ａが接続されているポートに比べて小さなバッファ領域が割り当てられる。
【００９０】
一方、ケーブル４０Ａと接続しているポートにおいては、ケーブル４０ＡおよびＰＣＩｅスイッチ１２Ｂを介して接続しているターゲットデバイス３０Ｂやケーブル４０Ａ、ＰＣＩｅスイッチ１２Ｂ、ケーブル４０Ｂを介して接続しているターゲットデバイス３０Ｃからの応答時間は比較的長くなり、大きなサイズのバッファ領域を要する。この場合の各ポートにおけるパケットデータ転送のタイミングチャートは、図１１−１〜図１１−３、図１３−１、図１３−２、図１５−１、図１５−２に示すタイミングチャートと同様である。
【００９１】
図１７に示すシステムにおいても、実施の形態にかかるＰＣＩｅスイッチ１２は、遅延時間（応答時間）に応じたバッファが割り当てられるので、ケーブルやコネクタによる接続形態に制限されることなく、効率よくデータ転送を行うことができる。
【００９２】
なお、これ以外のＰＣＩｅスイッチ１２の構成および動作は、第１の実施の形態にかかるデータ中継装置１０の構成および動作と同様である。また、第２の実施の形態にかかるデータ中継装置の変更例としても、データ中継装置が直接またはケーブルを介して接続するデバイスからの応答時間から第１遅延時間および第２遅延時間を予め算出可能な場合には、予め第１遅延時間および第２遅延時間を算出し、これらの値に基づいて作成したメモリマップをメモリマップ格納部３０４に格納しておくこととしてもよい。これにより、各ポートの遅延検出部の動作を停止させておくことができる。また、各遅延検出部を備えないこととしてもよい。また、ＱＳＦＰ＋ケーブルを接続するシステムでは、第１の実施の形態の変更例として図２６に示したような、ＱＳＦＰ＋コネクタ３４０からＩ２Ｃシリアルバス経由でケーブル長情報を取得する回路を設けることで、ケーブル接続ポートで発生する遅延時間を静的に検出することも可能となる。
【符号の説明】
【００９３】
１０  データ中継装置
１２  ＰＣＩｅスイッチ
２０  マスターデバイス
３０  ターゲットデバイス
４０  ケーブル
１００  第１ポート
１０１  第１受信ポート
１０２  第１エラー検出部
１０３  第１クレジット検出部
１０４  第１ＡＣＫ／Ｎａｋ検出部
１０５  第１受信バッファ
１２３  第１送信バッファ
１２５  第１送信ポート
１２７  第１再送バッファ
１２８  第１遅延検出部
２００  第２ポート
３００  メモリ制御部
３０１  メモリマップ演算回路
３０２  選択部
３０４  メモリマップ格納部
３０５  アドレス特定部
３１０  メモリ
３２０  メモリマップレジスタ
３３０  内部バス
【先行技術文献】
【特許文献】
【００９４】
【特許文献１】特開２０００−３３２７９１号公報
【図１】
2011081769.tif 000003
【図２】
2011081769.tif 000004
【図３】
2011081769.tif 000005
【図４】
2011081769.tif 000006
【図５】
2011081769.tif 000007
【図６】
2011081769.tif 000008
【図７】
2011081769.tif 000009
【図８】
2011081769.tif 000010
【図９】
2011081769.tif 000011
【図１０】
2011081769.tif 000012
【図１１−１】
2011081769.tif 000013
【図１１−２】
2011081769.tif 000014
【図１１−３】
2011081769.tif 000015
【図１２】
2011081769.tif 000016
【図１３−１】
2011081769.tif 000017
【図１３−２】
2011081769.tif 000018
【図１４】
2011081769.tif 000019
【図１５−１】
2011081769.tif 000020
【図１５−２】
2011081769.tif 000021
【図１６】
2011081769.tif 000022
【図１７】
2011081769.tif 000023
【図１８】
2011081769.tif 000024
【図１９−１】
2011081769.tif 000025
【図１９−２】
2011081769.tif 000026
【図１９−３】
2011081769.tif 000027
【図２０−１】
2011081769.tif 000028
【図２０−２】
2011081769.tif 000029
【図２０−３】
2011081769.tif 000030
【図２１】
2011081769.tif 000031
【図２２】
2011081769.tif 000032
【図２３】
2011081769.tif 000033
【図２４】
2011081769.tif 000034
【図２５】
2011081769.tif 000035
【図２６】
2011081769.tif 000036
【図２７】
2011081769.tif 000037
【図２８】
2011081769.tif 000038