(57)【特許請求の範囲】
【請求項１】
第１の装置から送られるデータを第２の装置に転送するデータ転送装置において、
前記第２の装置が前記第１の装置に要求した複数のリクエストの各々が複数に分割されて前記第１の装置に複数の分割リクエストとなって送信された後に、前記複数の分割リクエストの各々に応答して前記第１の装置から送られる複数の第１のデータを記憶する第１の記憶手段と、
前記第１の記憶手段に記憶される前記複数の第１のデータについて前記第２の装置への送信が完了したかを前記複数のリクエスト毎に管理する管理情報を記憶する第２の記憶手段と、
前記管理情報に応じて前記複数のリクエスト毎に、前記第２の装置が要求したリクエストに対するデータの一部または全部として前記第２の装置に転送する第２のデータのサイズを動的に決定する決定手段と、
決定された前記サイズに基づき、前記複数のリクエスト毎に１または２以上の前記第１のデータを含む前記サイズの前記第２のデータを生成して前記第２の装置に送信する送信手段と、
を備えるデータ転送装置。
【請求項２】
前記管理情報は、前記第１の記憶手段に記憶された前記複数の第１のデータであって前記第２の装置へ未送信の該第１のデータのサイズを示す情報を含み、
前記決定手段は、前記管理情報が示すサイズに基づいて、前記第２のデータのサイズを決定する、
ことを特徴とする請求項１に記載のデータ転送装置。
【請求項３】
前記送信手段のビジー状態を検出する検出手段をさらに備え、
前記検出手段が、前記送信手段のビジー状態を検出している間も、前記第１の装置から送られる前記複数の第１のデータを、前記第１の記憶手段に記憶する、
ことを特徴とする請求項１に記載のデータ転送装置。
【請求項４】
第１の装置から送られるデータを第２の装置に転送するデータ転送装置において、
前記第２の装置から第１のリクエストを受信すると、前記第１のリクエストが要求するデータを所定のサイズに分割して要求するために、前記第１のリクエストを１または２以上の第２のリクエストに分割して前記第１の装置に送信する送信手段と、
前記第１の装置から送られる第１のデータを記憶する第１の記憶手段と、
前記第１の記憶手段に記憶される前記第１のデータについて前記第２の装置への送信が完了したかを管理する管理情報を記憶する第２の記憶手段と、
前記管理情報に応じて、前記第２の装置に転送する第２のデータのサイズを動的に決定する決定手段と、
１または２以上の前記第１のデータを含む前記サイズの前記第２のデータを生成して前記第２の装置に送信する送信手段、
を備えるデータ転送装置。
【請求項５】
前記決定手段は、前記管理情報が示すサイズが、前記第２の装置との間で一度に送受信可能な最大データサイズより小さい且つ所定の閾値以上である場合、前記第２の装置に転送する第２のデータのサイズを前記閾値に対応する値に決定する
ことを特徴とする請求項２に記載のデータ転送装置。
【請求項６】
第１の装置から送られるデータを第２の装置に転送するデータ転送装置において、
前記第１の装置から送られる第１のデータを記憶する第１の記憶手段と、
前記第１の記憶手段に記憶される前記第１のデータについて前記第２の装置への送信が完了したかを管理する管理情報を記憶する第２の記憶手段と、
前記管理情報に応じて、前記第２の装置に転送する第２のデータのサイズを動的に決定する決定手段と、
１または２以上の前記第１のデータを含む前記サイズの前記第２のデータを生成して前記第２の装置に送信する送信手段と、
を備え、
前記第１の記憶手段は、前記第２の装置から受信した第１のリクエストを分割した複数の第２のリクエストに対する、前記第１の装置から送られる複数の第１のデータを記憶し、
前記第２の記憶手段は、前記第１の記憶手段に記憶された前記第１のデータであって前記第２の装置へ未送信の該第１のデータのサイズを示す管理情報を、前記第１のリクエストの識別情報と対応付けて記憶し、
前記決定手段は、前記第１のリクエストに対応する前記管理情報が示すサイズが、前記第２の装置との間で一度に送受信可能な最大データサイズより小さい且つ所定の閾値以上である場合、前記第２の装置に転送する第２のデータのサイズを前記閾値に対応する値に決定し、
前記送信手段は、複数の前記第１のデータを含む、前記決定手段により決定された前記サイズの前記第２のデータを生成して、前記第２の装置に送信する
ことを特徴とするデータ転送装置。
【請求項７】
第１の装置から送られるデータを第２の装置に転送するデータ転送方法において、
データ転送装置が、
前記第２の装置が前記第１の装置に要求した複数のリクエストの各々が複数に分割されて前記第１の装置に複数の分割リクエストとなって送信された後に、前記複数の分割リクエストの各々に応答して前記第１の装置から送られる複数の第１のデータを記憶する第１の記憶手段に記憶される前記複数の第１のデータについて前記第２の装置への送信が完了したかを前記複数のリクエスト毎に管理する管理情報を記憶する第２の記憶手段から、前記管理情報を取得し、
前記管理情報に応じて前記複数のリクエスト毎に、前記第２の装置が要求したリクエストに対するデータの一部または全部として前記第２の装置に転送する第２のデータのサイズを動的に決定し、
決定された前記サイズに基づき、前記複数のリクエスト毎に１または２以上の前記第１のデータを含む前記サイズの前記第２のデータを生成して前記第２の装置に送信する、
処理を実行するデータ転送方法。
【請求項８】
第１の装置から送られるデータを第２の装置に転送するデータ転送装置を含む情報処理装置において、
前記データ転送装置は、
前記第２の装置が前記第１の装置に要求した複数のリクエストの各々が複数に分割されて前記第１の装置に複数の分割リクエストとなって送信された後に、前記複数の分割リクエストの各々に応答して前記第１の装置から送られる複数の第１のデータを記憶する第１の記憶手段と、
前記第１の記憶手段に記憶される前記複数の第１のデータについて前記第２の装置への送信が完了したかを前記複数のリクエスト毎に管理する管理情報を記憶する第２の記憶手段と、
前記管理情報に応じて前記複数のリクエスト毎に、前記第２の装置が要求したリクエストに対するデータの一部または全部として前記第２の装置に転送する第２のデータのサイズを動的に決定する決定手段と、
決定された前記サイズに基づき、前記複数のリクエスト毎に１または２以上の前記第１のデータを含む前記サイズの前記第２のデータを生成して前記第２の装置に送信する送信手段と、
を備える情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データの転送を行なうデータ転送装置、データ転送方法および情報処理装置に関する。
【背景技術】
【０００２】
従来、情報処理装置などでは、装置間のデータ転送を行なうためにデータ転送装置を備える。
図１は、データ転送装置の一例として、ブリッジ装置１００を示す図である。装置Ａ−ブリッジ装置１００間、および、ブリッジ装置１００−装置Ｂ間は、それぞれパケット形式でデータを送受信する。
【０００３】
例えば、受信部１１０は、装置Ａからリクエストを受信する。以下では、他の装置、例えば、装置Ａから受信したリクエストを「受信リクエスト」という。すると、パケット分割部１２０は、受信リクエストを１または２以上のリクエストに分割する。具体的には、パケット分割部１２０は、受信リクエストが要求するデータを、マックスペイロードサイズ、すなわち、装置Ａ−ブリッジ１００間で一度に送受信可能な最大データサイズ、以下となるように分割して、分割したデータ毎に新たなリクエストを生成する。以下、このとき分割されたリクエストを「第１リクエスト」という。
【０００４】
さらに、必要に応じて、パケット分割部１２０は、第１リクエストを１または２以上のリクエストに分割する。具体的には、パケット分割部１２０は、具体的には、パケット分割部１２０は、第１リクエストが要求するデータを、ブリッジ１００−装置Ｂ間で送受信可能なデータサイズに分割して、分割したデータ毎に新たなリクエストを生成する。以下、このとき分割されたリクエストを「第２リクエスト」という。
【０００５】
パケット分割部１２０は、分割した第２リクエストを、リクエストＦＩＦＯ（Ｆｉｒｓｔ−Ｉｎ−Ｆｉｒｓｔ−Ｏｕｔ）１３０に格納する。送信部１４０は、リクエストＦＩＦＯ１３０に格納された第２リクエストを、順次、装置Ｂに送信する。
【０００６】
また、パケット分割部１２０は、受信リクエストのパケット情報をスコアボード１５０に格納する。パケット情報には、受信リクエストに含まれるコマンドやタグ、分割数などが含まれる。コマンドには、例えば、リード命令やライト命令などが含まれる。タグとは、受信リクエストを識別する識別情報である。また、分割数とは、受信リクエストから、最終的に分割された第２リクエストの数である。
【０００７】
一方、受信部１６０は、部装置Ｂが送信する、第２リクエストに対するレスポンスを受信する。このレスポンスは、第２リクエストに対するレスポンスなので、以下では、「第２レスポンス」という。受信部１６０は、第２レスポンスに含まれるヘッダ部を、レスポンスキュー１７０に格納する。また、受信部１６０は、第２レスポンスに含まれるデータ部を、レスポンスデータバッファ１８０に格納する。このとき、受信部１６０は、第２レスポンスのレスポンスキュー１７０およびレスポンスデータバッファ１８０への格納が完了する毎に、スコアボード１５０に含まれる分割数を初期値とするカウント値を１だけデクリメントする。受信部１６０は、カウント値が０になると、カウント値が０となった受信リクエストのパケット情報を、スコアボード１５０からクリアする。
【０００８】
送信部１９０は、装置Ｂからのレスポンス、すなわち、受信リクエストから最終的に分割された第２リクエストに対する第２レスポンスの合計が、例えば、マックスペイロードサイズになるまで待つ。受信した第２レスポンスの合計がマックスペイロードサイズになると、送信部１９０は、レスポンスキュー１７０およびレスポンスデータバッファ１８０に格納された第２レスポンスを取り出してレスポンスを生成する。そして、送信部１９０は、生成したレスポンスを装置Ａに送信する。
【０００９】
上記技術に関連して、同一集約単位に属する一定長以下のパケットを収容するスーパーフレームのフレーム長を、受信したユーザーパケットのあらかじめ定めた優先度および光波ネットワーク内の負荷情報から決定するエッジノードについて知られている。
【先行技術文献】
【特許文献】
【００１０】
【特許文献１】特開２００１−００７８５４号公報
【発明の概要】
【発明が解決しようとする課題】
【００１１】
ブリッジ装置１００からの第２リクエストに対して、装置Ｂは、それぞれ異なるレイテンシで第２レスポンスをブリッジ装置に返す。そのため、従来、上述したように、ブリッジ装置１００は、第１リクエストに対するレスポンス、すなわち、第１リクエストを分割した第２リクエストに対する第２レスポンスを全て受信するまで待つ必要があった。
【００１２】
例えば、マックスペイロードサイズが大きいと、第１リクエストから第２リクエストに分割する数が多くなるので、第２リクエストに対する第２レスポンスの数も多くなる。そのため、第２レスポンスを全て受信するまでの待ち時間も大きくなる。その結果、ブリッジ装置１００における、装置Ａからの受信リクエストに対するレスポンスのレイテンシが増大する。
【００１３】
図２は、ブリッジ装置１００における、装置Ａからの受信リクエストに対するレスポンスのレイテンシを説明する図である。
装置Ａからリクエストを受信すると、ブリッジ装置１００は、受信したリクエストを、最終的に１または２以上の第２リクエストに分割する。図２では、簡単のために、受信リクエストを１つの第１リクエストに分割し、さらに、４つの第２リクエスト０、１、２および３に分割した場合を示している。
【００１４】
ブリッジ装置１００は、第２リクエスト０、１、２および３を、順に装置Ｂに送信する。すると、装置Ｂは、第２リクエスト０、１、２および３に対する第２レスポンス０、１、２および３を、ブリッジ装置１００に送信する。
【００１５】
このとき、ブリッジ装置１００は、第１リクエストに対するレスポンス、すなわち、第２レスポンス０、１、２および３、を全て受信するまで待つ必要がある。第２レスポンス０、１、２および３を全て受信してから装置Ａにレスポンスを送信するため、第２レスポンス０、１、２および３を全て受信するまでの待ち時間だけ、ブリッジ装置１００から装置Ａへのレスポンスが遅れることになる。
【００１６】
本データ転送装置は、１つの側面では、データ転送時のレイテンシを改善する、ことを目的とする。
【課題を解決するための手段】
【００１７】
本データ転送装置の１つの観点によれば、本データ転送装置は、第１の装置から送られるデータを第２の装置に転送する。そして、本データ転送装置は、以下の構成要素を備える。
【００１８】
第１の記憶手段は、前記第２の装置が前記第１の装置に要求した複数のリクエストの各々が複数に分割されて前記第１の装置に複数の分割リクエストとなって送信された後に、前記複数の分割リクエストの各々に応答して前記第１の装置から送られる複数の第１のデータを記憶する記憶手段である。
第２の記憶手段は、前記第１の記憶手段に記憶される前記複数の第１のデータについて前記第２の装置への送信が完了したかを前記複数のリクエスト毎に管理する管理情報を記憶する記憶手段である。
【００１９】
決定手段は、前記管理情報に応じて前記複数のリクエスト毎に、前記第２の装置が要求したリクエストに対するデータの一部または全部として前記第２の装置に転送する第２のデータのサイズを動的に決定する。
送信手段は、決定された前記サイズに基づき、前記複数のリクエスト毎に１または２以上の前記第１のデータを含む前記サイズの前記第２のデータを生成して前記第２の装置に送信する。
【発明の効果】
【００２０】
本データ転送装置は、１つの態様では、データ転送時のレイテンシを改善する、ことができる。
【図面の簡単な説明】
【００２１】
【図１】データ転送装置の一例として、ブリッジ装置１００を示す図である。
【図２】ブリッジ装置１００における、装置Ａからの受信リクエストに対するレスポンスのレイテンシを説明する図である。
【図３】本実施例に係る情報処理装置３００の構成例を示す図である。
【図４】図３に示したルート・コンプレックス３１０の概要を説明する図である。
【図５】図４に示したスコアボード４２０の具体例を示す図である。
【図６】イーグレス処理部４３０の具体的な構成例を示す図である。
【図７】発行制御ステートマシンを説明する図である。
【図８】ステートマシンテーブル８００の構成例を示す図である。
【図９】図６に示したイーグレス処理部４３０におけるパケット生成処理の概要を示すフローチャートである。
【図１０】ペイロードサイズを決定する処理（ステップＳ９０３）の具体例を示す図である。
【図１１】本実施例に係るデータ転送処理による効果の一例を説明する図である。
【図１２】本実施例に係るデータ転送処理による効果の一例を説明する図である。
【発明を実施するための形態】
【００２２】
以下、本実施形態の一例について、図３〜図１２に基づいて説明する。なお、以下に説明する実施形態はあくまでも例示であり、以下に明示しない種々の変形や技術の適用を排除する意図ではない。すなわち、本実施形態は、その趣旨を逸脱しない範囲で、各実施例を組み合わせるなど種々変形して実施することができる。また、図９および図１０にフローチャートの形式で示した処理手順は、処理の順番を限定する趣旨ではない。したがって、可能な場合には、処理の順番を入れ替えても良いのは当然である。
【実施例】
【００２３】
図３は、本実施例に係る情報処理装置３００の構成例を示す図である。
情報処理装置３００は、ルート・コンプレックス３１０と、エンド・ポイント３２０と、ホストブリッジ３３０と、メモリコントローラ３４０と、メモリ３５０と、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）３６０と、を備える。
【００２４】
ルート・コンプレックス３１０とエンド・ポイント３２０とは、ＰＣＩ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ）  Ｅｘｐｒｅｓｓバスで接続している。また、ルート・コンプレックス３１０とホストブリッジ３３０、ホストブリッジ３３０とメモリコントローラ３４０とメモリ３５０は、それぞれＰＣＩバスで接続している。
【００２５】
ルート・コンプレックス３１０は、ホストブリッジ３３０を、エンド・ポイント３２０またはエンド・ポイント３２０に接続するＩ／Ｏ装置と接続する。そして、ルート・コンプレックス３１０は、プロトコル変換を行って、エンド・ポイント３２０から送信されるＰＣＩ  Ｅｘｐｒｅｓｓのパケットと、ホストブリッジ３３０のプロトコルにしたがったパケットと、を相互に転送する。
【００２６】
エンド・ポイント３２０はＰＣＩ  ＥｘｐｒｅｓｓのＩ／Ｏ構造で末端に位置する装置である。エンド・ポイント３２０は、ＰＣＩ  Ｅｘｐｒｅｓｓを利用したＩ／Ｏ装置であってもよい。また、エンド・ポイント３２０は、ＰＣＩ  Ｅｘｐｒｅｓｓ以外のデバイスを接続するためのインタフェースであってもよい。
【００２７】
ホストブリッジ３３０は、ＣＰＵ３６０とＰＣＩバスを接続し、データの通信制御を行なう。
メモリコントローラ３４０は、ＣＰＵ３６０やエンド・ポイント３２０などからのリクエストに応じて、メモリ３５０へのデータの書込み、読み出し等を行なう。
【００２８】
メモリ３５０は、ＣＰＵ３６０が実行するプログラムやデータなどを記憶する揮発性メモリである。メモリ３５０には、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）などの揮発性メモリを使用することができる。
【００２９】
ＣＰＵ３６０は、メモリ３５０に格納されたプログラムを実行する演算装置である。
以上の構成において、エンド・ポイント３２０がＤＭＡ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）リクエストを発行する場合を考える。
【００３０】
例えば、エンド・ポイント３２０配下のＩ／Ｏ装置からＤＭＡ要求を受けると、エンド・ポイント３２０は、ＤＭＡリクエストをルート・コンプレックス３１０に送信する。エンド・ポイント３２０からＤＭＡリクエストを受信すると、ルート・コンプレックス３１０は、エンド・ポイント３２０から受信したＤＭＡリクエストをホストブリッジ３３０に転送する。
【００３１】
このとき、ルート・コンプレックス３１０は、受信したＤＭＡリクエストを１または２以上のＤＭＡリクエストに分割する。具体的には、ルート・コンプレックス３１０は、受信したＤＭＡリクエストが要求するデータを、最終的に、メモリコントローラ３４０との間で送受信可能なサイズ以下となるように分割し、分割したデータ毎に新たなＤＭＡリクエストを生成する。そして、ルート・コンプレックス３１０は、分割したＤＭＡリクエストをホストブリッジ３３０送信する。
【００３２】
メモリコントローラ３４０は、ホストブリッジ３３０を経由してＤＭＡリクエストを受信すると、ＤＭＡリクエストで要求されるデータをメモリ３５０から読み出す。そして、メモリコントローラ３４０は、読み出したデータを、ＤＭＡリクエストのレスポンスとして、ホストブリッジ３３０に送信する。
【００３３】
ルート・コンプレックス３１０は、ホストブリッジ３３０を経由して、ＤＭＡリクエストに対するレスポンスを受信する。そして、ルート・コンプレックス３１０は、受信した１または２以上のレスポンスが、所定のペイロードサイズになると、所定のペイロードのレスポンスを生成してエンド・ポイント３２０に転送する。エンド・ポイント３２０は、ルート・コンプレックス３１０からレスポンスを受信すると、ＤＭＡ要求のあったＩ／Ｏ装置にデータを送信する。
【００３４】
なお、上記ＤＭＡ転送の処理では、ルート・コンプレックス３１０−エンド・ポイント３２０間、ルート・コンプレックス３１０−ホストブリッジ３３０−メモリコントローラ３４０間は、それぞれパケット形式でデータの送受信が行なわれる。
【００３５】
図４は、図３に示したルート・コンプレックス３１０の概要を説明する図である。
ルート・コンプレックス３１０は、イングレス処理部４１０と、スコアボード４２０と、イーグレス処理部４３０と、を備える。
【００３６】
イングレス処理部４１０は、受信部４１１と、パケット分割部４１２と、リクエストＦＩＦＯ４１３と、送信部４１４と、を備える。
受信部４１１は、エンド・ポイント３２０からリクエストを受信する。そして、受信部４１１は、受信リクエストをパケット分割部４１２に出力する。
【００３７】
パケット分割部４１２は、受信リクエストを１または２以上の第１リクエストに分割する。具体的には、パケット分割部４１２は、受信リクエストが要求するデータを、マックスペイロードサイズ以下となるように分割して、分割したデータ毎に第１リクエストを生成する。本実施例に係るマックスペイロードは、エンド・ポイント３２０−ルート・コンプレックス３１０間で一度に送受信可能な最大データサイズである。
【００３８】
さらに、パケット分割部４１２は、第１リクエストを１または２以上の第２リクエストに分割する。具体的には、パケット分割部４１２は、第１リクエストが要求するデータを、ホストブリッジ３３０との間で受信可能なデータサイズに分割して、分割したデータ毎に第２リクエストを生成する。
【００３９】
パケット分割が完了すると、パケット分割部４１２は、第２リクエストを、リクエストＦＩＦＯ４１３に格納する。
また、受信リクエストを最終的に１または２以上の第２リクエストに分割すると、パケット分割部４１２は、図５に示すスコアボード４２０に、受信パケットについてのパケット情報を記憶する。本実施例に係るパケット情報には、受信リクエストに含まれるコマンドやタグ、分割数などを含むことができる。コマンドには、受信リクエストが要求する、例えば、リード命令やライト命令などが含まれる。タグは、受信リクエストを識別する識別情報である。また、分割数とは、受信リクエストから最終的に分割された第２リクエストの数である。
【００４０】
リクエストＦＩＦＯ４１３は、パケット分割部４１２が出力する第２リクエストなどのパケットを記憶する記憶装置である。リクエストＦＩＦＯ４１３は、ＦＩＦＯ形式でデータを記憶する。リクエストＦＩＦＯ４１３には、ＲＡＭなどの揮発性メモリを使用することができる。
【００４１】
送信部４１４は、リクエストＦＩＦＯ４１３に格納された第２リクエストを、順次、ルート・コンプレックス３１０に送信する処理を行なう。
ここで、例えば、エンド・ポイント３２０から受信した受信リクエストが、メモリ３５０に対するＤＭＡリード要求である場合、第２リクエストも、メモリ３５０に対するＤＭＡリード要求となる。この場合、ホストブリッジ３３０は、ルート・コンプレックス３１０から受信した第２リクエストをメモリコントローラ３４０に送信する。メモリコントローラ３４０は、第２リクエストが要求するデータをメモリ３５０から読み出し、読み出したデータを含むレスポンス、すなわち、第２レスポンスをホストブリッジ３３０に送信する。第２レスポンスを受信すると、ホストブリッジ３３０は、受信した第２レスポンスをルート・コンプレックス３１０に送信する。
【００４２】
イーグレス処理部４３０は、受信部４３１と、レスポンスキュー４３２と、レスポンスデータバッファ４３３と、制御部４３４と、送信部４３５と、を備える。
受信部４３１は、ホストブリッジ３３０から第２レスポンスを受信する。そして、受信部４３１は、第２レスポンスに含まれるヘッダ部を、レスポンスキュー４３２に格納する。また、受信部４３１は、第２レスポンスに含まれるデータ部を、レスポンスデータバッファ４３３に格納する。レスポンスデータバッファ４３３に格納されるデータ部と、レスポンスキュー４３２に格納されるヘッダ部と、１対１に対応づけて格納される。
【００４３】
レスポンスキュー４３２は、ＦＩＦＯ形式でデータを記憶してキュー制御を実現する。以下では、第２レスポンスに含まれるヘッダ部を、レスポンスキュー４３２に格納し、その第２レスポンスに含まれるデータ部を、レスポンスデータバッファ４３３に格納することを、第２レスポンスをレスポンスキュー４３２に「エンキュー」するという。また、エンキューされた第２レスポンスを、レスポンスキュー４３２およびレスポンスデータバッファ４３３から取り出すことを、第２レスポンスをレスポンスキュー４３２から「デキュー」するという。
【００４４】
レスポンスキュー４３２およびレスポンスデータバッファ４３３は、ＲＡＭなどの揮発性メモリを使用することができる。
制御部４３４は、マックスペイロードサイズ（ＭＰＳ）と、第２レスポンスの受信状態などに応じて、エンド・ポイント３２０に送信するレスポンスのペイロードサイズを決定する。この処理については、図１０に具体例を示して後述する。
【００４５】
また、制御部４３４は、第２レスポンスの受信状態などに基づいて、パケットが発行可能であることを検出する。この場合、制御部４３４は、送信部４３５にパケットの発行を指示する。
【００４６】
また、制御部４３４は、送信部４３５による、エンド・ポイント３２０へのレスポンスの送信が完了する毎に、スコアボード４２０を参照し、送信が完了した第２レスポンスの分割元の受信リクエストのカウント値を１だけデクリメントする。なお、カウント値の初期値には、分割数を使用することができる。カウント値が０になると、制御部４３４は、カウント値が０となった受信リクエストに対するレスポンスの送信が完了したと判断する。制御部４３４は、レスポンスの送信が完了した受信リクエストのパケット情報を、スコアボード４２０からクリアする。
【００４７】
送信部４３５は、制御部４３４から指示を受けると、受信が完了した第２レスポンスをレスポンスキュー４３２からデキューする。そして、送信部４３５は、制御部４３４が指定するペイロードサイズのレスポンスを生成する。送信部４３５は、生成したレスポンスをエンド・ポイント３２０に送信する。
【００４８】
以上に説明したイングレス処理部４１０は、受信部４１１における受信処理、パケット分割部４１２におけるパケット分割処理および送信部４１４における送信処理などの処理要素を直列に連結してパイプライン処理を行なうことができる。この場合、受信処理、パケット分割処理および送信処理を、さらに複数の処理要素に分割してパイプライン処理を行なうこともできる。
【００４９】
同様に、イーグレス処理部４３０においても、受信部４３１における受信処理、送信部４３５における送信処理などの処理要素を直列に連結してパイプライン処理を行なうことができる。この場合、受信処理および送信処理を、さらに複数の処理要素に分割してパイプライン処理を行なうこともできる。
【００５０】
また、図４では、リクエストＦＩＦＯ４１３、スコアボード４２０、レスポンスキュー４３２およびレスポンスデータバッファ４３３など、を別々に記載しているが、１つのメモリで実現してもよいし、必要に応じて、２以上のメモリで実現してもよい。図６に記載の出力バッファ６２３についても同様である。
【００５１】
図５は、図４に示したスコアボード４２０の具体例を示す図である。
スコアボード４２０は、受信リクエスト番号「Ｎｏ．」毎に、タグと、コマンドと、分割数と、カウント値と、を含む情報を記憶する記憶装置である。スコアボード４２０には、ＲＡＭなどの揮発性メモリを使用することができる。
【００５２】
受信リクエスト番号「Ｎｏ．」は、受信順に受信リクエストに割り当てる識別情報である。コマンドは、受信リクエストに含まれるコマンドである。タグは、受信リクエストをルート・コンプレックス３１０が識別するための識別情報である。分割数は、受信リクエストから最終的に分割された第２リクエストの数である。カウント値は、レスポンスとして未送信である第２リクエストの数を示す値である。
【００５３】
図６は、イーグレス処理部４３０の具体的な構成例を示す図である。
イーグレス処理部４３０は、受信部４３１と、レスポンスキュー４３２と、レスポンスデータバッファ４３３と、制御部４３４と、送信部４３５と、を備える。さらに、イーグレス処理部４３０は、監視部４３６を備える。
【００５４】
制御部４３４は、レジスタ６１１と、ステートマシン記憶部６１２と、を備える。
レジスタ６１１は、マックスペイロードサイズの初期値を記憶する記憶装置である。レジスタ６１１は、例えば、ホストブリッジ３３０を介して、または、直接、ＣＰＵ３６０と接続している。ＣＰＵ３６０で実行するＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）は、レジスタ６１１にマックスペイロードサイズの初期値を書き込むことができる。
【００５５】
ステートマシン記憶部６１２は、エンド・ポイント３２０へのレスポンスのパケット発行を制御するための発行制御ステートマシンを含むステートマシンテーブル８００を記憶する記憶装置である。レスポンスキュー４３２にエントリーされる第２レスポンス毎に、１つの発行制御ステートマシンが用意される。
【００５６】
図７に示すように、発行制御ステートマシンは、「有効（ｖａｌｉｄ）」、「無効（ｉｎｖａｌｉｄ）」、「発行済（ｉｓｓｕｅｄ）」の３状態を持つ。発行制御ステートマシンの初期値には、「無効」状態が与えられる。
【００５７】
そして、制御部４３４は、第２レスポンスがレスポンスキュー４３２にエンキューされると、エンキューされた第２レスポンスについての発行制御ステートマシンを、「無効」状態から「有効」状態に設定する。
【００５８】
また、第２レスポンスがレスポンスキュー４３２からデキューされてエンド・ポイント３２０へのレスポンスとして送信されると、制御部４３４は、デキューされた第２レスポンスについての発行制御ステートマシンを、「有効」状態から「発行済」状態に設定する。
【００５９】
同一受信リクエストから分割された第２リクエストに対する第２レスポンスが全て「発行済」の状態になると、制御部４３４は、それら「発行済」状態となった第２レスポンスについての発行制御ステートマシンを、「発行済」状態から「無効」状態に初期化する。
【００６０】
制御部４３４は、第２レスポンスの受信状態、すなわち、ステートマシンテーブル８００に記憶される発行制御ステートマシンの状態に基づいて、エンド・ポイント３２０へのレスポンス、すなわち、パケットの発行が可能か否かを判断する。また、制御部４３４は、ステートマシンテーブル８００に記憶される発行制御ステートマシンの状態に基づいて、ペイロードサイズを決定する。この処理については、図１０に示して後述する。
【００６１】
パケットの発行が可能と判断すると、制御部４３４は、第２レスポンスをレスポンスキュー４３２からデキューして送信部４３５に送る。このとき、制御部４３４は、送信部４３５にペイロードサイズを通知する。
【００６２】
送信部４３５は、ペイロード生成部６２１と、パケット生成部６２２と、出力バッファ６２３と、を備える。
ペイロード生成部６２１は、レスポンスキュー４３２からデキューされた第２レスポンスを受信すると、制御部４３４から通知されたペイロードサイズのペイロードを生成する。そして、ペイロード生成部６２１は、生成したペイロードをパケット生成部６２２に出力する。
【００６３】
パケット生成部６２２は、ペイロード生成部６２１からペイロードを受信すると、ヘッダ情報を生成して、ペイロード生成部６２１から受信したペイロードを含む、エンド・ポイント３２０へのレスポンスを生成する。パケット生成部６２２は、生成したレスポンスを出力バッファ６２３に格納する。
【００６４】
送信部４３５は、出力バッファ６２３にレスポンスが格納されると、出力バッファ６２３に格納されたレスポンスを、エンド・ポイント３２０に出力する。
監視部４３６は、出力バッファ６２３を監視して、送信部４３５のビジー（ｂｕｓｙ）状態を検出する。ビジー状態を検出すると、監視部４３６は、ビジー情報を生成して制御部４３４に通知する。このビジー情報には、送信部４３５がビジーか否かを示す情報が含まれる。
【００６５】
なお、監視部４３６は、出力バッファ６２３の空き状況に基づいて、例えば、出力バッファ６２３の、新たなパケットを格納するための空き容量が一定以下の場合に、送信部４３５がビジー状態であると判断することができる。また、監視部４３６は、出力バッファ６２３からエンド・ポイント３２０へパケットを送出する通信回線の通信状況に基づいて、例えば、通信回線がビジー状態の場合に、送信部４３５がビジー状態であると判断してもよい。
【００６６】
図８は、ステートマシンテーブル８００の構成例を示す図である。
ステートマシンテーブル８００は、図５に示した受信リクエスト番号「Ｎｏ．」毎に、受信リクエストに対するレスポンス、すなわち、第２レスポンス０、１、２、・・・それぞれのステートマシン０、１、２、・・・を含む情報である。
【００６７】
図８では、「有効」状態のステートマシンを○印で示している。また、空欄は、「無効」状態のステートマシンを示している。また、「−」は、「発行済」状態のステートマシンを示している。
【００６８】
図８のステートマシンテーブル８００では、例えば、受信リクエスト番号「０」における、連続する４つのステートマシン０、１、２および３が、「有効」状態となっている。これは、受信リクエスト番号「０」における、第２レスポンス０、１、２、・・・をホストブリッジ３３０から既に受信していることを示している。
【００６９】
ここで、第２レスポンス０、１、２、・・・は、それぞれ第２リクエスト０、１、２、・・・に対するレスポンスである。第２リクエスト０、１、２、・・・が、第１リクエストで要求するデータを昇順に分割して要求するリクエストの場合、第２レスポンス０、１、２、・・・のデータ部に含まれるデータから、連続した１つのデータを得ることができる。
【００７０】
また、第２レスポンスのデータ部に含まれるデータのサイズが１２８Ｂｙｔｅの場合、連続する第２レスポンス０、１、２および３のデータ部に含まれるデータのサイズの合計は、５１２Ｂｙｔｅとなる。この場合、制御部４３４は、パケットが発行可能と判断することができる。
【００７１】
このように、第２レスポンスのステートマシンを、受信リクエスト番号「Ｎｏ．」に対して昇順に検索し、最初が「有効」状態、あるいは、最初から途中まで「発行済」で続けて「有効」状態であって、かつ、それら第２レスポンスのデータ部のデータのサイズの合計が特定のペイロードサイズに達した場合、制御部４３４は、パケットが発行可能と判断することができる。
【００７２】
また、連続する第２レスポンスのステートマシンが「有効」状態、かつ、それら第２レスポンスのデータ部のデータのサイズの合計が特定のペイロードサイズに達した場合以外は、制御部４３４は、パケットが発行可能でないと判断することができる。
【００７３】
図９は、図６に示したイーグレス処理部４３０におけるパケット生成処理の概要を示すフローチャートである。
制御部４３４は、ステートマシン記憶部６１２に記憶されたステートマシンテーブル８００を参照し、パケットが発行可能と判断すると、以下の処理を開始する（ステップＳ９００）。
【００７４】
ステップＳ９０１において、制御部４３４は、レスポンスキュー４３２から、パケットが発行可能な第２レスポンスのデキューを行なう。制御部４３４は、デキューした第２レスポンスを送信部４３５に出力する。
【００７５】
ステップＳ９０２において、制御部４３４は、監視部４３６から、ビジー情報を取得する。制御部４３４は、例えば、出力バッファ６２３に新たなパケットを記憶する空き容量がない場合、送信部４３５がビジー状態であると判別することができる。この場合、制御部４３４は、ビジー状態の解除待ちとなる。送信部４３５がビジー状態でない、またはビジー状態が解除された場合、制御部４３４は、処理をステップＳ９０３に移行する。
【００７６】
ステップＳ９０３において、制御部４３４は、ステートマシンの状態に基づいて、ペイロードサイズを決定する。そして、制御部４３４は、決定したペイロードサイズを、ペイロード生成部６２１に通知する。
【００７７】
ステップＳ９０４において、制御部４３４からペイロードサイズの通知を受けると、ペイロード生成部６２１は、制御部４３４から通知されたペイロードサイズのペイロードを、デキューした１または２以上の第２レスポンスのデータ部に含まれるデータから生成する。そして、ペイロード生成部６２１は、生成したペイロードをパケット生成部６２２に出力する。
【００７８】
ステップＳ９０５において、パケット生成部６２２は、ヘッダ情報を生成して、ペイロード生成部６２１から受信したペイロードを含む、エンド・ポイント３２０へのレスポンスを生成する。なお、レスポンスのヘッダ情報は、例えば、ペイロードに使用した第２レスポンスのヘッダ部に含まれる情報、例えば、送信先アドレスなど、に基づいて生成することができる。パケット生成部６２２は、生成したレスポンスを出力バッファ６２３に出力する。
【００７９】
ステップＳ９０６において、出力バッファ６２３にレスポンスが格納されると、送信部４３５は、出力バッファ６２３に格納されたレスポンスを順次、所定のエンド・ポイント３２０に送信する。
【００８０】
図１０は、ペイロードサイズを決定する処理（ステップＳ９０３）の具体例を示す図である。
ステップＳ１００１において、制御部４３４は、ステップＳ９０２で取得したビジー情報から、送信部４３５がビジー状態か否かを判別する。
【００８１】
送信部４３５がビジー状態であると判別すると（ステップＳ１００１  ＹＥＳ）、制御部４３４は、処理をステップＳ１０００に移行する。この場合、例えば、一定期間経過後に、制御部４３４は、再度ステップＳ１００１の処理を行なう。制御部４３４は、送信部４３５のビジー状態が解除されるまで、ステップＳ１０００とＳ１００１の処理を繰り返す。なお、送信部４３５がビジー状態の間も、受信部４３１は、ホストブリッジ３３０から第２レスポンスを受信し、第２レスポンスに含まれるヘッダ部およびデータ部を、それぞれ、レスポンスキュー４３２およびレスポンスデータバッファ４３３に格納することができる。ただし、レスポンスキュー４３２およびレスポンスデータバッファ４３３に空き領域がある場合に限る。  送信部４３５がビジー状態でないと判別すると（ステップＳ１００１  ＮＯ）、制御部４３４は、処理をステップＳ１００２に移行する。この場合、制御部４３４は、レジスタ６１１を参照して、マックスペイロードサイズを取得する。
【００８２】
マックスペイロードサイズが５１２Ｂｙｔｅ以上の場合（ステップＳ１００２  ＹＥＳ）、制御部４３４は、処理をステップＳ１００３に移行する。この場合、制御部４３４は、ペイロードサイズが５１２Ｂｙｔｅのレスポンスを生成可能か判別する（ステップＳ１００３）。例えば、第２レスポンスのペイロードサイズが１２８Ｂｙｔｅの場合、制御部４３４は、ステートマシンテーブル８００に、４つ（４×１２８Ｂｙｔｅ＝５１２Ｂｙｔｅ）以上連続する、最初が「有効」状態、あるいは、最初から途中まで「発行済」状態で続けて「有効」状態のステートマシンがあれば、ペイロードサイズが５１２Ｂｙｔｅのレスポンスを生成可能と判別できる。
【００８３】
ペイロードサイズが５１２Ｂｙｔｅのレスポンスを生成可能と判別した場合（ステップＳ１００３  ＹＥＳ）、制御部４３４は、ペイロードサイズを５１２Ｂｙｔｅに決定する（ステップＳ１００４）。
【００８４】
マックスペイロードサイズが５１２Ｂｙｔｅより小さい（ステップＳ１００２  ＮＯ）、または、ペイロードサイズが５１２Ｂｙｔｅのレスポンスを生成できないと判別した場合（ステップＳ１００３  ＮＯ）、制御部４３４は、処理をステップＳ１００５に移行する。そして、マックスペイロードサイズが２５６Ｂｙｔｅ以上場合（ステップＳ１００５  ＹＥＳ）、制御部４３４は、ペイロードサイズが２５６Ｂｙｔｅのレスポンスを生成可能か判別する（ステップＳ１００６）。例えば、第２レスポンスのペイロードサイズが１２８Ｂｙｔｅの場合、制御部４３４は、ステートマシンテーブル８００に、２つ（２×１２８Ｂｙｔｅ＝２５６Ｂｙｔｅ）以上連続する、最初が「有効」状態、あるいは、最初から途中まで「発行済」状態で続けて「有効」状態のステートマシンがあれば、ペイロードサイズが２５６Ｂｙｔｅのレスポンスを生成可能と判別できる。
【００８５】
ペイロードサイズが２５６Ｂｙｔｅのレスポンスを生成可能と判断した場合（ステップＳ１００６  ＹＥＳ）、制御部４３４は、ペイロードサイズを２５６Ｂｙｔｅに決定する（ステップＳ１００７）。
【００８６】
マックスペイロードサイズが２５６Ｂｙｔｅより小さい（ステップＳ１００５  ＮＯ）、または、ペイロードサイズが２５６Ｂｙｔｅのレスポンスを生成できないと判別した場合（ステップＳ１００６  ＮＯ）、制御部４３４は、処理をステップＳ１００８に移行する。この場合、制御部４３４は、ペイロードサイズが１２８Ｂｙｔｅのレスポンスを生成可能か判別する（ステップＳ１００８）。例えば、第２レスポンスのペイロードサイズが１２８Ｂｙｔｅの場合、制御部４３４は、ステートマシンテーブル８００に、少なくとも１つ（１×１２８Ｂｙｔｅ＝１２８Ｂｙｔｅ）、最初が「有効」状態、あるいは、最初から途中まで「発行済」状態で続けて「有効」状態のステートマシンがあれば、ペイロードサイズが１２８Ｂｙｔｅのレスポンスを生成可能と判別できる。
【００８７】
ペイロードサイズが１２８Ｂｙｔｅのレスポンスを生成可能と判別した場合（ステップＳ１００８  ＹＥＳ）、制御部４３４は、ペイロードサイズを１２８Ｂｙｔｅに決定する（ステップＳ１００９）。
【００８８】
また、ペイロードサイズが１２８Ｂｙｔｅのレスポンスを生成できないと判別した場合（ステップＳ１００８  ＮＯ）、制御部４３４は、処理をステップＳ１０００に移行する。この場合、新たな第２レスポンスがレスポンスキュー４３２にエンキューされると、制御部４３４は、ステップＳ１０００から処理を開始する。
【００８９】
ペイロードサイズを決定すると（ステップＳ１００４、Ｓ１００７およびＳ１００８）、制御部４３４は、処理をステップＳ１０１０に移行する。そして、制御部４３４は、ペイロードサイズをペイロード生成部６２１に通知する。
【００９０】
以上の処理が終了すると、制御部４３４は、ペイロードサイズを決定する処理を終了する（ステップＳ１０１１）。
【００９１】
図１１および図１２は、本実施例に係るデータ転送処理による効果の一例を説明する図である。
図１１に示すｈ０、ｈ１、ｈ２、・・・は、ホストブリッジ３３０から送られた第２レスポンス０、１、２、・・・のヘッダ部に含まれるデータを示している。また、図１１に示すｄ０、ｄ１、ｄ２、・・・は、ホストブリッジ３３０から送られた第２レスポンス０、１、２、・・・のデータ部に含まれるデータを示している。
【００９２】
ホストブリッジ３３０−ルート・コンプレックス３１０間のバスがパラレルバスの場合、ホストブリッジ３３０から送られる第２レスポンスは、図１１に示すように、ヘッダ部のデータと、データ部のデータと、が専用に割り当てられたバスを介して並列に送られる。
【００９３】
一方、ルート・コンプレックス３１０−エンド・ポイント３２０間のバスがシリアルバスの場合、ルート・コンプレックス３１０は、ホストブリッジ３３０から受信した第２レスポンスを受信順にエンド・ポイント３２０に転送する。
【００９４】
以下では、ホストブリッジ３３０から受信した第２レスポンス０、１、２、・・・が、ペイロードサイズが１２８Ｂｙｔｅである場合について説明する。ただし、これは例示であり、ペイロードサイズを１２８Ｂｙｔｅに限定する趣旨ではない。
【００９５】
例えば、第２レスポンス０のヘッダ部の受信が完了すると、第２レスポンス０についてのステートマシンの状態は、「有効」状態となる。この場合、ルート・コンプレックス３１０は、マックスペイロードサイズが５１２Ｂｙｔｅや２５６Ｂｙｔｅなどに設定されていても、エンド・ポイント３２０へのレスポンスのペイロードサイズを１２８Ｂｙｔｅに変更する（ステップＳ１００８  ＹＥＳ、Ｓ１００９）。そして、ルート・コンプレックス３１０は、受信した第２レスポンスを、エンド・ポイント３２０へのレスポンスとして送信開始する。
【００９６】
同様に、ルート・コンプレックス３１０は、ホストブリッジ３３０から第２レスポンス１、２および３のヘッダ部の受信が完了すると、第２レスポンス１、２および３０についてのステートマシンの状態が、「有効」状態となる。この場合、図１２に示すように、ルート・コンプレックス３１０は、ホストブリッジ３３０から第２レスポンス１、２および３を受信すると、順次、受信した第２レスポンスをエンド・ポイント３２０へのレスポンスとして送信する。
【００９７】
このように、ルート・コンプレックス３１０は、エンド・ポイント３２０へのレスポンスのペイロードサイズを最大ペイロードサイズに固定せず、第２レスポンスの受信状態に応じて小さくする。そのため、ホストブリッジ３３０から受信する第２レスポンスのデータの合計が最大ペイロードサイズになるまで待つ必要がなくなる。その結果、ルート・コンプレックス３１０は、ホストブリッジ３３０から受信する第２レスポンスをエンド・ポイント３２０に転送する際のレイテンシを短縮することができる。
【００９８】
以上のように、ルート・コンプレックス３１０は、データ転送時のレイテンシを改善することができる。
また、ホストブリッジ３３０から受信した第２レスポンス４を、エンド・ポイント３２０に送信する際、ルート・コンプレックス３１０は、ホストブリッジ３３０から第２レスポンス４および５のヘッダ部の受信が完了している。この場合、連続する第２レスポンス４および５についてのステートマシンの状態は、「有効」状態となる。この場合、制御部４３４は、レスポンスのペイロードサイズを２５６Ｂと決定する（ステップＳ１００６  ＹＥＳ、Ｓ１００７）。
【００９９】
この場合、ルート・コンプレックス３１０は、ホストブリッジ３３０から受信した第２レスポンス４のデータ部のデータｄ４と、第２レスポンス５のデータ部のデータｄ５と、を含む２５６Ｂｙｔｅのペイロードを生成して、エンド・ポイント３２０に送信する。
【０１００】
このように、ルート・コンプレックス３１０は、第２レスポンスの受信状態に応じて、ペイロードサイズを大きくする。すると、バスに占めるデータの割合が大きくなる。その結果、ルート・コンプレックス３１０−エンド・ポイント３２０間のバスを効率的に使用してスループットを向上させることができる。
【０１０１】
以上の説明において、ホストブリッジ３３０は、第１の装置の一例として上げられる。また、エンド・ポイント３２０は、第２の装置の一例として挙げられる。また、レスポンスキュー４３２およびレスポンスデータバッファ４３３は、第１の装置から送られる第１のデータを記憶する第１の記憶手段の一例として挙げられる。また、ステートマシンテーブル８００は、第１の記憶手段に記憶される第１のデータについての第２の装置への送信状態を管理する管理情報の一例として挙げられる。また、ステートマシン記憶部６１２は、管理情報を記憶する第２の記憶手段の一例として挙げられる。また、ペイロードサイズは、第１のデータについての第２の装置への送信状態に応じて、第２の装置に転送する第２のデータのサイズの一例として挙げられる。また、制御部４３４は、第１のデータについての第２の装置への送信状態に応じて、第２の装置に転送する第２のデータのサイズを動的に決定する決定手段の一例として挙げられる。また、送信部４３５は、１または２以上の第１のデータを含むサイズの第２のデータを生成して第２の装置に送信する送信手段の一例として挙げられる。
【０１０２】
以上の実施例を含む実施形態に関し、さらに以下の付記を開示する。
（付記１）
第１の装置から送られるデータを第２の装置に転送するデータ転送装置において、
前記第１の装置から送られる第１のデータを記憶する第１の記憶手段と、
前記第１の記憶手段に記憶される前記第１のデータについての第２の装置への送信状態を管理する管理情報を記憶する第２の記憶手段と、
前記送信状態に応じて、前記第２の装置に転送する第２のデータのサイズを動的に決定する決定手段と、
１または２以上の前記第１のデータを含む前記サイズの前記第２のデータを生成して前記第２の装置に送信する送信手段と、
を備えるデータ転送装置。
（付記２）
前記決定手段は、前記第１の記憶手段に記憶された前記第１のデータについての前記第２の装置への送信状態およびデータサイズに基づいて、前記第２のデータのサイズを決定する、
ことを特徴とする付記１に記載のデータ転送装置。
（付記３）
前記送信手段のビジー状態を検出する検出手段をさらに備え、
前記検出手段が、前記送信手段のビジー状態を検出している間も、前記第１の装置から送られる第１のデータを、前記第１の記憶手段に記憶する、
ことを特徴とする付記１に記載のデータ転送装置。
（付記４）
前記第２の装置から第１のリクエストを受信すると、前記第１のリクエストが要求するデータを所定のサイズに分割して要求するために、前記第１のリクエストを１または２以上の第２のリクエストに分割して前記第１の装置に送信する送信手段、
をさらに備える付記１に記載のデータ転送装置。
（付記５）
前記第１のデータは、前記第１の装置が送信する、前記第２のリクエストに対するレスポンスである、
ことを特徴とする付記４に記載のデータ転送装置。
（付記６）
第１の装置から送られるデータを第２の装置に転送するデータ転送方法において、
データ転送装置が、
前記第１の装置から送られる第１のデータを記憶する第１の記憶手段に記憶される前記第１のデータについての第２の装置への送信状態を管理する管理情報を記憶する第２の記憶手段から、前記送信状態を取得し、
前記送信状態に応じて、前記第２の装置に転送する第２のデータのサイズを動的に決定し、
１または２以上の前記第１のデータを含む前記サイズの前記第２のデータを生成して前記第２の装置に送信する、
処理を実行するデータ転送方法。
（付記７）
第１の装置から送られるデータを第２の装置に転送するデータ転送装置を含む情報処理装置において、
前記データ転送装置は、
前記第１の装置から送られる第１のデータを記憶する第１の記憶手段と、
前記第１の記憶手段に記憶される前記第１のデータについての第２の装置への送信状態を管理する管理情報を記憶する第２の記憶手段と、
前記送信状態に応じて、前記第２の装置に転送する第２のデータのサイズを動的に決定する決定手段と、
１または２以上の前記第１のデータを含む前記サイズの前記第２のデータを生成して前記第２の装置に送信する送信手段と、
を備える情報処理装置。
【符号の説明】
【０１０３】
４２０      スコアボード
４３０      イーグレス処理部
４３１      受信部
４３２      レスポンスキュー
４３３      レスポンスデータバッファ
４３４      制御部
４３５      送信部
４３６      監視部
６１１      レジスタ
６１２      ステートマシン記憶部
６２１      ペイロード生成部
６２２      パケット生成部
６２３      出力バッファ
【図１】
0005772132.tif 000002
【図２】
0005772132.tif 000003
【図３】
0005772132.tif 000004
【図４】
0005772132.tif 000005
【図５】
0005772132.tif 000006
【図６】
0005772132.tif 000007
【図７】
0005772132.tif 000008
【図８】
0005772132.tif 000009
【図９】
0005772132.tif 000010
【図１０】
0005772132.tif 000011
【図１１】
0005772132.tif 000012
【図１２】
0005772132.tif 000013