(57)【特許請求の範囲】
【請求項１】
入出力バスに接続されるデータ転送装置であって、
前記入出力バスに接続される入出力制御デバイスからデータ取得要求を受信すると、前記入出力制御デバイスが処理可能な第１のデータサイズ情報のコピーを格納する格納部から読み出した前記入出力制御デバイスに関する前記第１のデータサイズ情報のコピーと、当該データ転送装置が処理可能な第２のデータサイズ情報とを比較し、小さい方のデータサイズ情報に基づいて前記データ取得要求に対する応答データサイズを決定する決定部と、
前記決定部によって決定された前記応答データサイズに基づいて応答データを作成する作成部と、
前記作成部によって作成された前記応答データを送信する送信部と
を備えることを特徴とする、データ転送装置。
【請求項２】
前記決定部が、前記小さい方のデータサイズ情報に基づき、前記応答データを生成可能であるか否かを判断し、前記応答データを生成不可であると判断した場合に、前記応答データサイズを減少させることを特徴する、請求項１記載のデータ転送装置。
【請求項３】
前記格納部において、前記入出力制御デバイスの前記第１のデータサイズ情報のコピーが、前記入出力制御デバイスの識別情報に関連付けて格納され、
前記決定部が、リード要求元からのリード要求に含まれる要求元識別情報に基づいて、前記格納部から、前記データ取得要求を発行した入出力制御デバイスの前記第１のデータサイズ情報のコピーを読み出すことを特徴とする、請求項１又は２記載のデータ転送装置。
【請求項４】
前記格納部を備えることを特徴とする、請求項１〜３のいずれか１項に記載のデータ転送装置。
【請求項５】
前記格納部が当該データ転送装置の外部の主記憶装置に備えられ、
前記データ転送装置が、
前記主記憶装置の前記格納部から前記第１のデータサイズ情報のコピーを取得する取得部と、
前記格納部から読み出された前記第１のデータサイズ情報のコピーを格納する第２格納部とを備え、
前記決定部が、前記第２格納部から前記第１のデータサイズ情報のコピーを取得することを特徴とする、請求項１〜３のいずれか１項に記載のデータ転送装置。
【請求項６】
前記主記憶装置から読み出された前記第１のデータサイズ情報のコピーを格納するキャッシュメモリを備え、
前記取得部が、前記主記憶装置の前記格納部に代えて前記キャッシュメモリから前記第１のデータサイズ情報のコピーを取得することを特徴とする、請求項５記載のデータ転送装置。
【請求項７】
前記格納部へのアクセス情報を格納する第３格納部を備え、
前記取得部が、前記第３格納部から読み出した前記アクセス情報を用いて、前記主記憶装置の前記格納部から前記第１のデータサイズ情報のコピーを取得することを特徴とする、請求項５又は６記載のデータ転送装置。
【請求項８】
入出力バスに接続されるデータ転送装置におけるデータ転送方法であって、
前記入出力バスに接続される入出力制御デバイスからデータ取得要求を受信する処理と、
前記入出力制御デバイスが処理可能な第１のデータサイズ情報のコピーを格納する格納部から読み出した前記入出力制御デバイスに関する前記第１のデータサイズ情報のコピーと、前記データ転送装置が処理可能な第２のデータサイズ情報とを比較して、小さい方のデータサイズ情報に基づいて前記データ取得要求に対する応答データサイズを決定する処理と、
決定された前記応答データサイズに基づいて応答データを作成する処理と、
作成された前記応答データを送信する処理と
を備えることを特徴とする、データ転送方法。
【請求項９】
前記小さい方のデータサイズ情報に基づき、前記応答データを生成可能であるか否かを判断し、前記応答データを生成不可であると判断した場合に、前記応答データサイズを減少させる処理を備えることを特徴する、請求項８記載のデータ転送方法。
【請求項１０】
前記格納部において、前記入出力制御デバイスの前記第１のデータサイズ情報のコピーが、前記入出力制御デバイスの識別情報に関連付けて格納され、
リード要求元からのリード要求に含まれる要求元識別情報に基づいて、前記格納部から、前記データ取得要求を発行した入出力制御デバイスの前記第１のデータサイズ情報のコピーを読み出す処理を備えることを特徴とする、請求項８又は９記載のデータ転送方法。
【請求項１１】
前記データ転送装置が、前記格納部を備えることを特徴とする、請求項８〜１０のいずれか１項に記載のデータ転送方法。
【請求項１２】
前記格納部が前記データ転送装置の外部の主記憶装置に備えられ、
前記主記憶装置の前記格納部から前記第１のデータサイズ情報のコピーを取得する処理と、
前記格納部から取得された前記第１のデータサイズ情報のコピーを第２格納部に格納する処理と、
前記第２格納部から前記第１のデータサイズ情報のコピーを取得して、前記データ取得要求に対する応答データサイズを決定する処理と
を備えることを特徴とする、請求項８〜１１のいずれか１項に記載のデータ転送方法。
【請求項１３】
前記主記憶装置の前記格納部から読み出された前記第１のデータサイズ情報のコピーをキャッシュメモリに格納する処理と、
前記主記憶装置の前記格納部に代えて前記キャッシュメモリから前記第１のデータサイ
ズ情報のコピーを取得する処理と
を備えることを特徴とする、請求項１２記載のデータ転送方法。
【請求項１４】
第３格納部に前記データ転送装置が、前記格納部へのアクセス情報を格納する処理と、
前記第３格納部から読み出した前記アクセス情報を用いて、前記主記憶装置の前記格納部から前記第１のデータサイズ情報のコピーを取得する処理と
を備えることを特徴とする、請求項１２又は１３記載のデータ転送方法。
【請求項１５】
プロセッサと、
主記憶装置と、
データ転送装置及び入出力制御デバイスに接続される入出力バスと、
前記入出力制御デバイスが処理可能な第１のデータサイズ情報のコピーを格納する格納部と、
前記入出力制御デバイスからデータ取得要求を受信すると、前記格納部から読み出した前記入出力制御デバイスに関する前記第１のデータサイズ情報のコピーと、前記データ転送装置が処理可能な第２のデータサイズ情報とを比較し、小さい方のデータサイズ情報に基づいて前記データ取得要求に対する応答データサイズを決定する決定部と、
前記決定部によって決定された前記応答データサイズに基づいて応答データを作成する作成部と、
前記作成部によって作成された前記応答データを送信する送信部と
を備えることを特徴とする、情報処理装置。 
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ転送装置、データ転送方法及び情報処理装置に関する。
【背景技術】
【０００２】
図１３は従来のＩ／Ｏ（Input/Output：入出力）サブシステムを備える情報処理装置５００の構成を示す図である。
この情報処理装置５００は、プロセッサ５０４，メモリ５０３，システムコントローラ５０２，Ｉ／Ｏサブシステム５１０及びＩ／Ｏデバイス５０７，５０８を備える。
Ｉ／Ｏデバイス５０７，５０８は入出力装置であり、例えば、Ｉ／Ｏデバイス５０７はディスク装置であり、Ｉ／Ｏデバイス５０８はネットワークインタフェースである。【０００３】
メモリ５０３は、ＲＯＭ及びＲＡＭを含む記憶装置である。プロセッサ５０４は、処理装置であり、メモリ５０３等に格納されたＯＳやプログラムを実行することにより、種々の機能を実現する。システムコントローラ５０２は、プロセッサ５０４やメモリ５０３とＩ／Ｏサブシステム５１０とを接続し、データの通信制御を行なう。又、システムコントローラ５０２は、プロセッサ５０４や後述するエンドポイント５０６等からのリクエストに応じて、メモリ５０３へのデータの書込み、読み出し等も行なう。  【０００４】
Ｉ／Ｏサブシステム５１０は、情報処理装置５００の内部でプロセッサ５０４やメモリ５０３とＩ／Ｏデバイス５０７，５０８とを接続するバスシステムであり、その規格として、例えば、Peripheral Component Interconnect Express（PCIe）が知られている。
Ｉ／Ｏサブシステム５１０は、ルートコンプレックス（Root Complex）５０１，スイッチ５０５及び１つ以上のエンドポイント５０６を備える。【０００５】
ルートコンプレックス５０１は、Ｉ／Ｏホストブリッジであり、プロセッサ５０４，メモリ５０３及びルートコンプレックス５０１の間のデータ転送プロトコルとＩ／Ｏサブシステム５１０内のデータ転送プロトコルとの間の変換を行なう。ルートコンプレックス５０１は、システムコントローラ５０２を介してプロセッサ５０４やメモリ５０３と接続される。【０００６】
なお、ルートコンプレックス５０１とシステムコントローラ５０２との間を接続するインタフェースをシステムインタフェース５０１ａといい、ルートコンプレックス５０１とスイッチ５０５との間を接続するインタフェースをＩ／Ｏインタフェース５０１ｂという。
スイッチ５０５は、経路集約用のデバイスであり、Ｉ／Ｏバスに対しファンアウト機能を提供する。【０００７】
エンドポイント５０６は、Ｉ／Ｏバス構造の末端に位置する装置である。このエンドポイント５０６は、Ｉ／Ｏデバイス５０７，５０８が接続されるインタフェースである。
Ｉ／Ｏサブシステム５１０においては、データ転送はパケットを用いて行なわれる。エンドポイント５０６は、メモリ５０３とＩ／Ｏデバイス５０７，５０８との間で高スループットのデータ転送を実現するため、一般にＤＭＡ（Direct Memory Access）方式を採用している。【０００８】
図１４は従来の情報処理装置においてエンドポイント５０６によりＤＭＡリード要求が行なわれた際のルートコンプレックス５０１の処理を示す図である。
エンドポイント５０６が発行したＤＭＡ リード要求パケットは、スイッチ５０５を経由して、ルートコンプレックス５０１のＩ／Ｏインタフェース５０１ｂの入力で受信される。ＤＭＡリード要求パケットはペイロード部がないヘッダ部のみで構成される。【０００９】
ルートコンプレックス５０１は、ＤＭＡリード要求パケットの受信後、システムインタフェース５０１ａを介してメモリ５０３にリード要求を発行し、メモリ５０３から応答データを受信する。データ受信後、ルートコンプレックス５０１は、ＤＭＡリード応答パケットを生成し、Ｉ／Ｏインタフェース５０１ｂに送出する。ここで、ＤＭＡリード応答パケットは、リード応答コマンド，応答先のＩＤを指定したヘッダ部及びペイロードを備える。【００１０】
ＤＭＡリード応答パケットは、スイッチ５０５を経由して、リード要求を行なったエンドポイント５０６に到達し、ＤＭＡリード処理が完了する。
ここで、１つのパケットに付加されるペイロードのサイズ（ペイロードサイズ）は、例えば、以下のようにその上限を設定することができる。すなわち、ペイロードサイズの上限は、ルートコンプレックス５０１，スイッチ５０５，及びエンドポイント５０６の各デバイスが１パケット当りに処理できる最大のペイロードサイズ（ＭＰＳＳ；Max Payload Size Supported）を考慮して設定することが出来る。ＭＰＳＳは、デバイス固有の値である。設定されたペイロードサイズの上限値をＭＰＳ（Max Payload Size）設定値もしくは単にＭＰＳという。【００１１】
Ｉ／Ｏサブシステム５１０内の各デバイスは、ＭＰＳ設定値を、ＭＰＳＳを超えない範囲で128バイト，256バイト，512バイト，・・・などと任意に設定できる。また、ＭＰＳＳはＩ／Ｏサブシステム５１０内の各デバイスで異なる場合があるので、ＭＰＳ設定値をデバイス毎に個別に設定することができる。図１３に示す例においては、ルートコンプレックス５０１及びスイッチ５０５のＭＰＳ設定値がそれぞれ512バイトであり、又、３つのエンドポイント５０６のＭＰＳがそれぞれ512バイト，256バイト，128バイトである。【００１２】
ＭＰＳ設定値は、主に以下に示す用途（１），（２）に用いられる。
（１）受信パケットのペイロードサイズチェック
ペイロード付きパケットを受信したデバイス（受信デバイス）は、受信したパケットのペイロードサイズと当該受信デバイス自身のＭＰＳ設定値とを比較する。そして、ＭＰＳ設定値以下のペイロードサイズのパケットのみを処理し、パケットのペイロードサイズが大きい場合は、エラーとして、受信したデバイスがパケットを破棄する。この結果、データ転送が失敗することになる。【００１３】
（２）送信パケットに付加するペイロードサイズの上限
ペイロード付きパケットを送信するデバイスは、送信先のデバイスが処理できるように、送信デバイスのＭＰＳ設定値に基づきパケットのペイロードサイズを決定する。ＭＰＳ設定値より大きなサイズのデータを転送したい場合には、ＭＰＳ設定値を上限としたペイロードサイズを有する複数のパケットを複数回に分けて送信する。【００１４】
また、Ｉ／Ｏサブシステム５１０内の各デバイスは、リード要求のデータサイズを制限するための図示しない設定レジスタを備えている。リード要求のデータサイズの最大値（Max-Read-Request-Size：ＭＲＲＳ設定値）は、128バイト，256バイト，512バイト，・・・などと任意の大きさに設定でき、各デバイスで個別の設定値を指定できる。
パケットは、ヘッダ部が固定長に対してペイロードは可変長であるので、１パケット当りのペイロードサイズが大きい程、効率良くデータを転送できる。従来の情報処理装置５００においては、ルートコンプレックス５０１がエンドポイント５０６のＤＭＡリード要求に応答する際に、ルートコンプレックス５０１のＭＰＳ設定値を基にＤＭＡリード応答パケットのペイロードサイズを可能な範囲で最大にすることで、データ転送の効率を上げている。【００１５】
図１５は従来の情報処理装置において、エンドポイントからリード要求を受けた場合のデータ転送処理を示す図である。この図１５においては、ルートコンプレックス５０１のＭＰＳ設定が512バイトであり、エンドポイント５０６から2Kバイトのリード要求パケットを受けた場合のデータ転送例を示す。
ルートコンプレックス５０１は、Ｉ／Ｏインタフェース５０１ｂを介してエンドポイント５０６から2Kバイトの１つのＤＭＡリード要求パケットを受信する。ルートコンプレックス５０１は、128バイト単位で分割されたメモリリード要求を、システムコントローラ５０２に対してシステムインタフェース５０１ａの出力から合計で１６回発行する。【００１６】
システムインタフェース５０１ａに入力されたメモリ５０３からのデータ応答を契機に、ルートコンプレックス５０１は、最大512バイト のペイロードサイズを持つＤＭＡリード応答パケットを生成する。そして、ルートコンプレックス５０１においては、作成した応答パケットをＩ／Ｏインタフェース５０１ｂに送出する。応答パケットの送出回数は最小で４回となる。【００１７】
ルートコンプレックス５０１においては、スループットを向上させるために効率よくデータ転送を行ないたい。そのためにＭＰＳ設定値を大きくすることが有効である。
しかし、情報処理装置においては、デバイス毎にＭＰＳＳが異なる場合があり、且つＭＰＳ設定値をデバイス毎に設定できるため、自由にＭＰＳ設定値を設定するとデータ転送に失敗する場合がある。すなわち、上述した用途（１）に示したように、データ受信側のＭＰＳ設定値を超えるペイロードサイズでパケット送信するとデータ転送に失敗する。【００１８】
例えば、ルートコンプレックス５０１のＭＰＳ設定値が512バイトで設定されているＩ／Ｏ サブシステム５１０で、エンドポイント５０６のＭＰＳＳが128バイトでＭＰＳ設定値も128バイトと設定されるシステムを想定する。
エンドポイント５０６が例えば2Kバイト のＤＭＡリード要求した場合に、ルートコンプレックス５０１がペイロードサイズ512バイトのＤＭＡリード応答パケットを発行すると、このペイロードサイズは、エンドポイント５０６のＭＰＳ設定値（128バイト）よりも大きい。従って、エンドポイント５０６においては、この受信したＤＭＡリード応答パケットをエラーとして扱い、データ転送が失敗する。【００１９】
このデータ転送失敗はＩ／Ｏサブシステム５１０内のＭＰＳ設定値を独立して設定できることに起因するので、従来の情報処理装置５００においては、以下の（ａ１），（ａ２）のいずれかに示すような手法を用いてシステム運用でデータ転送の失敗を回避している。
（ａ１）Ｉ／Ｏサブシステム５１０内で最小のＭＰＳＳに合わせてＭＰＳ設定値を統一
Ｉ／Ｏサブシステム５１０内において最小のＭＰＳＳを全デバイスのＭＰＳ設定値とする。これにより、どのエンドポイント５０６が任意のサイズのＤＭＡリードを行なっても、ルートコンプレックス５０１はエンドポイント５０６が受信可能なＤＭＡリード応答パケットを発行する。【００２０】
図１６は従来の情報処理装置において、エンドポイントからリード要求を受けた場合のデータ転送処理を示す図である。この図１６においては、エンドポイント５０６から2Kバイトのリード要求を受けた場合のデータ転送例であって、ＭＰＳ設定値が128バイトで統一された場合のデータ転送の具体例を示す。
ルートコンプレックス５０１は、Ｉ／Ｏインタフェース５０１ｂを介してエンドポイント５０６から2Kバイトの１つのＤＭＡリード要求パケットを受信する。ルートコンプレックス５０１は、128バイト単位で分割されたメモリリード要求を、システムコントローラ５０２に対してシステムインタフェース５０１ａの出力から合計で１６回発行する。【００２１】
システムインタフェース５０１ａに入力されたメモリ５０３からのデータ応答を契機に、ルートコンプレックス５０１は、128バイト のペイロードサイズを持つＤＭＡリード応答パケットを生成する。そして、ルートコンプレックス５０１においては、作成した応答パケットをＩ／Ｏインタフェース５０１ｂに送出する。応答パケットの送出回数は最小でも１６回となる。【００２２】
（ａ２）エンドポイント５０６のＤＭＡリード要求のデータサイズの上限を設ける
各エンドポイント５０６のＭＰＳ設定値は自身のＭＰＳＳを超えない範囲で設定するとともに、エンドポイント５０６のＭＲＲＳ設定値をＭＰＳ設定値と同じ大きさにする。この場合、ＤＭＡリードのデータサイズがエンドポイント５０６のＭＰＳ設定値を超えることはなく、ルートコンプレックス５０１のＤＭＡリード応答パケットのペイロードサイズも要求元エンドポイント５０６のＭＰＳ設定値を超えない。従って、ＤＭＡリードは成功する。【００２３】
図１７は従来の情報処理装置において、エンドポイントからリード要求を受けた場合のデータ転送処理を示す図である。この図１７においては、エンドポイント５０６から2Kバイトのリード要求を受けた場合のデータ転送例であって、エンドポイント５０６のＭＰＳ設定値及びＭＲＲＳ設定値が512バイトで統一された場合のデータ転送の具体例を示す。
この図１７に示すように、エンドポイント５０６は、2Kバイト分のDMA リードをしたい場合であっても、512バイト のＤＭＡリード要求を最低4回発行する。【００２４】
その後、ルートコンプレックス５０１は、128バイト単位で分割されたメモリリード要求を、システムコントローラ５０２に対してシステムインタフェース５０１ａの出力から合計で１６回発行する。
システムインタフェース５０１ａに入力されたメモリ５０３からのデータ応答を契機に、ルートコンプレックス５０１は、512バイト のペイロードサイズを持つＤＭＡリード応答パケットを生成する。そして、ルートコンプレックス５０１においては、作成した応答パケットをＩ／Ｏインタフェース５０１ｂに送出する。応答パケットの送出回数は最小で４回となる。
【先行技術文献】
【特許文献】
【００２５】
【特許文献１】特開２０１２−２０５１４２号公報
【発明の開示】
【発明が解決しようとする課題】
【００２６】
従来の情報処理装置においては、ルートコンプレックス５０１のＩ／Ｏインタフェース５０１ｂの出力もしくは入力に余分なパケットのヘッダ部が発生してしまうため、データ転送効率を低下させるという課題がある。
すなわち、図１６に示したように、Ｉ／Ｏサブシステム５１０内で最小のＭＰＳＳに合わせてＭＰＳ設定値を統一する手法（ａ１）を用いるには、リード要求に対する応答パケットのペイロードサイズが小さくなるため、ルートコンプレックス５０１のＩ／Ｏインタフェース５０１ｂの出力バスにおけるデータスループットが減少する。又、増加した応答パケットのヘッダ部が、ルートコンプレックス５０１のＩ／Ｏインタフェース５０１ｂの出力バスのデータ転送を圧迫する。【００２７】
また、図１７に示したように、エンドポイント５０６のＤＭＡ リード要求のデータサイズの上限を設ける手法（ａ２）を用いる場合には、ＤＭＡリードのデータサイズを任意サイズに指定できる場合（図１５に示す例では１回）に比べて、ＤＭＡリード要求の発行回数が増加する（図１７に示す例では４回）。従って、増加したＤＭＡリード要求パケットのヘッダ部が、ルートコンプレックス５０１のＩ／Ｏインタフェース５０１ｂの入力バスのデータ転送を圧迫する。【００２８】
１つの側面では、本発明は、データ転送効率を向上できるようにすることを目的とする。
なお、前記目的に限らず、後述する発明を実施するための形態に示す各構成により導かれる作用効果であって、従来の技術によっては得られない作用効果を奏することも本発明の他の目的の１つとして位置付けることができる。
【課題を解決するための手段】
【００２９】
このため、このデータ転送装置は、入出力バスに接続されるデータ転送装置であって、前記入出力バスに接続される入出力制御デバイスからデータ取得要求を受信すると、前記入出力制御デバイスが処理可入出力制御デバイスからデータ取得要求を受信すると、前記入出力制御デバイスが処理可能な第１のデータサイズ情報のコピーを格納する格納部から読み出した前記入出力制御デバイスに関する前記第１のデータサイズ情報のコピーと、当該データ転送装置が処理可能な第２のデータサイズ情報とを比較し、小さい方のデータサイズ情報に基づいて前記データ取得要求に対する応答データサイズを決定する決定部と、前記決定部によって決定された前記応答データサイズに基づいて応答データを作成する作成部と、前記作成部によって作成された前記応答データを送信する送信部とを備える。
【発明の効果】
【００３０】
開示の技術によれば、データ転送効率を向上できる利点がある。
【図面の簡単な説明】
【００３１】
【図１】第１実施形態の一例としての情報処理装置の機能構成を例示する図である。
【図２】第１実施形態の一例としての情報処理装置におけるスコアボードの例を示す図である。
【図３】ＤＭＡリード要求パケットの構成例を示す図である。
【図４】第１実施形態の一例としての情報処理装置におけるＭＰＳ設定テーブルの構成を説明するための図である。
【図５】第１実施形態の一例としての情報処理装置におけるイーグレス処理部によるＤＭＡリード応答パケットの送信処理を示すフローチャートである。
【図６】第１実施形態の一例としての情報処理装置におけるＤＭＡリード応答パケットのペイロードサイズの決定手法の概要を示すフローチャートである。
【図７】第１実施形態の一例としての情報処理装置の制御部によるペイロードサイズの決定方法を示すフローチャートである。
【図８】第２実施形態の一例としての情報処理装置の構成を示す図である。
【図９】第２実施形態の一例としての情報処理装置におけるスコアボードの例を示す図である。
【図１０】第２実施形態の一例としての情報処理装置におけるデータ転送を示すシーケンス図である。
【図１１】第３実施形態の一例としての情報処理装置の構成を示す図である。
【図１２】第４実施形態の一例としての情報処理装置の構成を示す図である。
【図１３】従来のＩ／Ｏサブシステムを備える情報処理装置の構成を示す図である。
【図１４】従来の情報処理装置においてエンドポイントによりＤＭＡリード要求が行なわれた際のルートコンプレックスの処理を示す図である。
【図１５】従来の情報処理装置において、エンドポイントからリード要求を受けた場合のデータ転送処理を示す図である。
【図１６】従来の情報処理装置において、エンドポイントからリード要求を受けた場合のデータ転送処理を示す図である。
【図１７】従来の情報処理装置において、エンドポイントからリード要求を受けた場合のデータ転送処理を示す図である。
【発明を実施するための最良の形態】
【００３２】
以下、図面を参照して本データ転送装置、データ転送方法及び情報処理装置に係る実施の形態を説明する。ただし、以下に示す実施形態はあくまでも例示に過ぎず、実施形態で明示しない種々の変形例や技術の適用を排除する意図はない。すなわち、本実施形態を、その趣旨を逸脱しない範囲で種々変形（実施形態を組み合わせる等）して実施することができる。又、各図は、図中に示す構成要素のみを備えるという趣旨ではなく、他の機能等を含むことができる。【００３３】
（Ａ）第１実施形態
図１は第１実施形態の一例としての情報処理装置１の機能構成を例示する図である。本情報処理装置１は、Ｉ／Ｏバスシステムとして、例えばPCIeバスを備える。
第１実施形態の情報処理装置１は、図１に示すように、プロセッサ３２，メモリ３１，システムコントローラ３０，ルートコンプレックス５０，スイッチ３３及び１つ以上のエンドポイント３４を備える。又、情報処理装置１において、ルートコンプレックス５０，スイッチ３３及びエンドポイント３４をＩ／Ｏサブシステム２という。【００３４】
メモリ３１は、ＲＯＭ及びＲＡＭを含む記憶装置である。メモリ３１のＲＯＭには、種々のソフトウェアプログラムやこのプログラム用のデータ類が書き込まれている。メモリ３１上のソフトウェアプログラムは、プロセッサ３２に適宜読み込まれて実行される。又、メモリ３１のＲＡＭ（主記憶装置）は、一次記憶メモリあるいはワーキングメモリとして利用される。【００３５】
プロセッサ３２は、種々の制御や演算を行なう処理装置であり、例えば、ＣＰＵ（Central Processing Unit）である。プロセッサ３２は、メモリ３１や図示しない記憶装置等に格納されたＯＳやプログラムを実行することにより、種々の機能を実現する。
システムコントローラ３０は、プロセッサ３２やメモリ３１とルートコンプレックス５０とを接続し、データの通信制御を行なう。システムコントローラ３０は、プロセッサ３２やエンドポイント３４等からのリクエストに応じて、メモリ３１へのデータの書込み、読み出し等も行なう。システムコントローラ３０は、例えば、ホストブリッジやメモリコントローラとしての機能を備える。【００３６】
スイッチ３３は、経路集約用のデバイスであり、Ｉ／Ｏバスに対しファンアウト機能を提供する。すなわち、スイッチ３３は、エンドポイント３４とルートコンプレックス５０とを接続し、データの通信制御を行なう。
エンドポイント３４は、Ｉ／Ｏバス（入出力バス）構造の末端に位置する入出力デバイスであり、ストレージ装置やネットワークインタフェース装置等の図示しないＩ／Ｏ装置が接続される。【００３７】
エンドポイント３４は、PCIeを利用したＩ／Ｏ装置であってもよく、又、PCIe以外のデバイスを接続するためのインタフェースであってもよい。
エンドポイント３４は、例えば、配下のＩ／Ｏ装置からＤＭＡ（Direct Memory Access）要求を受けると、要求をルートコンプレックス５０に送信する。
以下、Ｉ／Ｏ装置からのＤＭＡ要求として、特に、メモリ３１のデータをリードするＤＭＡリード要求が行なわれる場合について説明する。ＤＭＡリード要求は、エンドポイント３４からＤＭＡリード要求パケットを送信することにより行なわれる。【００３８】
ルートコンプレックス５０は、スイッチ３３を介してエンドポイント３４と接続されている。又、ルートコンプレックス５０は、システムコントローラ３０を介してメモリ３１及びプロセッサ３２とも接続されている。
ルートコンプレックス５０は、Ｉ／Ｏバス構造のルートデバイスであり、プロトコル変換を行なって、エンドポイント３４から送信されるPCIeのパケットと、メモリ３１やプロセッサ３２のプロトコルにしたがったパケットとを相互に転送する。【００３９】
ルートコンプレックス５０は、システムコントローラ３０との間を接続するシステムインタフェース２６と、スイッチ３３との間を接続するＩ／Ｏインタフェース２５とを備える。
エンドポイント３４は、エンドポイント３４配下のＩ／Ｏ装置からＤＭＡ要求を受けると、ＤＭＡ要求をルートコンプレックス５０に送信する。【００４０】
ルートコンプレックス５０は、エンドポイント３４からＤＭＡ要求を受信すると、このエンドポイント３４から受信したＤＭＡ要求をシステムコントローラ３０に転送する。
この際、ルートコンプレックス５０は、エンドポイント３４から受信したＤＭＡ要求を１または２以上のＤＭＡ要求（分割リクエスト）に分割する。具体的には、ルートコンプレックス５０は、エンドポイント３４から受信したリード要求が要求するデータを、最終的に、システムコントローラ３０との間で送受信可能なサイズ以下となるように分割し、分割したデータ毎に新たなリード要求（分割リクエスト）を生成する。そして、ルートコンプレックス５０は、分割して生成したリード要求をシステムコントローラ３０に送信する。【００４１】
システムコントローラ３０は、ルートコンプレックス５０からリード要求を受信すると、そのリード要求で要求されるデータをメモリ３１から読み出す。そして、システムコントローラ３０は、メモリ３１から読み出したデータを、リードデータ（レスポンス）として、ルートコンプレックス５０に送信する。
ルートコンプレックス５０は、システムコントローラ３０からリード要求に対するリードデータを受信する。そして、ルートコンプレックス５０は、受信した１または２以上のリードデータが、後述する所定のペイロードサイズになると、所定のペイロードサイズを有するＤＭＡリード応答パケットを生成してエンドポイント３４に転送する。エンドポイント３４は、ルートコンプレックス５０からＤＭＡリード応答パケットを受信すると、ＤＭＡ要求のあったＩ／Ｏ装置にデータを送信する。【００４２】
なお、上記ＤＭＡ転送の処理では、ルートコンプレックス５０とエンドポイント３４との間、及び、ルートコンプレックス５０とシステムコントローラ３０との間は、それぞれパケット形式でデータの送受信が行なわれる。
ルートコンプレックス５０は、図１に示すように、イングレス処理部１０，スコアボード１４及びイーグレス処理部１５を備える。【００４３】
イングレス処理部１０は、受信部１１，パケット分割部１２及びシステムインタフェース送信部１３を備える。
受信部１１は、エンドポイント３４からＤＭＡリード要求（ＤＭＡリード要求パケット）を受信する。そして、受信部１１は、受信したＤＭＡリード要求をパケット分割部１２に出力する。【００４４】
パケット分割部１２は、ＤＭＡリード要求を１または２以上のＤＭＡリード要求（分割リクエスト）に分割する。例えば、ＤＭＡ要求がＤＭＡリード要求である場合には、このＤＭＡリード要求を１または２以上のリード要求（分割リクエスト）に分割する。具体的には、パケット分割部１２は、エンドポイント３４からのＤＭＡリード要求をシステムコントローラ３０が処理可能なデータサイズに分割して、１または２以上のリード要求に分割する。パケット分割部１２は、ＤＭＡリード要求を、システムコントローラ３０が処理可能なサイズ（例えば、128kバイト）の１または２以上のリード要求に分割する。【００４５】
パケット分割が完了すると、パケット分割部１２は、図２を用いて後述するスコアボード１４にリード要求（分割リクエスト）についての情報を記憶する。
システムインタフェース送信部１３は、パケット分割部１２が作成したリード要求を、順次、システムインタフェース２６を介してシステムコントローラ３０に送信する処理を行なう。【００４６】
エンドポイント３４から受信したＤＭＡ要求がメモリ３１に対するＤＭＡリード要求である場合、分割して作成されたリード要求もメモリ３１に対するＤＭＡリード要求となる。この場合、システムコントローラ３０は、ルートコンプレックス５０から受信したリード要求に基づき、リード要求が要求するデータをメモリ３１から読み出し、読み出したデータ（リードデータ）を含むレスポンスデータをルートコンプレックス５０に送信する。【００４７】
スコアボード１４は、パケット分割部１２によって作成されたリード要求についての情報を格納する。
図２は第１実施形態の一例としての情報処理装置１におけるスコアボード１４の例を示す図である。
スコアボード１４は、図２に例示するように、受信リクエスト番号「Ｎｏ．」，コマンド，Requester-ID，分割数及びカウント数の各フィールドを対応付けて構成されている。受信リクエスト番号「Ｎｏ．」は、受信リクエスト（リード要求）を特定するための識別情報である。スコアボード１４は、受信リクエスト番号「Ｎｏ．」毎に、コマンド，Requester-ID，分割数及びカウント数を含む情報を対応させて記憶する。スコアボード１４には、ＲＡＭなどの揮発性メモリを使用することができる。【００４８】
受信リクエスト番号「Ｎｏ．」は、受信順に受信リクエストに割り当てる識別情報である。コマンドは、受信リクエストに含まれるコマンドである。受信リクエストがリード要求である場合には、リード命令が格納される。分割数は、パケット分割部１２により受信リクエストから最終的に分割された分割リクエストの数である。カウント値は、レスポンスとして未送信である分割リクエストの数を示す値である。【００４９】
Requester-IDは、ＤＭＡリード要求パケットに含まれ、ＤＭＡリード要求の要求元を示す識別情報（要求元識別情報，ＩＤ）の役割をする。すなわち、Requester-IDはリード要求の要求元ＩＤとして機能する。
図３はＤＭＡリード要求パケットの構成例を示す。この図３に示すＤＭＡリード要求パケット（Memory Read）は96ビットのパケットとして構成されている。PCIeでは、ＤＭＡリード要求パケット内に16ビットのRequester-IDが含まれており、このRequester-IDがパケット発行元デバイスの識別情報として機能する。このRequester-IDには、8ビットのBus-ID，5ビットのDevice-ID及び3ビットのFunction-IDが含まれている。【００５０】
スコアボード１４のRequester-IDには、このＤＭＡリード要求パケットから抽出されたRequester-IDが格納される。
なお、スコアボード１４に格納する情報は、これらに限定されるものではなく、例えば、受信リクエストを識別するためのタグ等を格納してもよい。
イーグレス処理部１５は、システムインタフェース受信部１６，レスポンスキュー１７，データバッファ１８，制御部１９，送信部２０，監視部２４及びＭＰＳ設定テーブル５１を備える。【００５１】
システムインタフェース受信部１６は、システムコントローラ３０からレスポンスデータを受信する。システムインタフェース受信部１６は、レスポンスデータに含まれるヘッダ部を、レスポンスキュー１７に格納する。又、システムインタフェース受信部１６は、レスポンスデータに含まれるデータ部を、データバッファ１８に格納する。データバッファ１８に格納されるデータ部と、レスポンスキュー１７に格納されるヘッダ部とは、１対１に対応づけて格納される。【００５２】
ＭＰＳ設定テーブル（格納部）５１は、Ｉ／Ｏサブシステム２内の全デバイスのＭＰＳ設定値（第１のデータサイズ情報）のコピーを記録する。すなわち、ＭＰＳ設定テーブル５１は、／Ｏサブシステム２内の全デバイスのＭＰＳ設定値のコピーを一元管理する。このＭＰＳ設定テーブル５１は、イーグレス処理部１５に備えられたレジスタに格納される。【００５３】
図４は第１実施形態の一例としての情報処理装置１におけるＭＰＳ設定テーブル５１の構成を説明するための図である。
ＭＰＳ設定テーブル５１は、この図４に示すように、Bus-IDに対してＭＰＳ設定を対応付けて構成されている。Bus-IDは、Ｉ／Ｏサブシステム２内のデバイスを一意に特定する識別情報であり、ＤＭＡリード要求パケットのRequester-IDに含まれている。【００５４】
図４に示す例においては、Bus-IDとして0〜255の整数を用いた２５６のエントリが示されている。なお、このBus-IDのエントリは、PCIeで規定されているＭＰＳレジスタと同様の値を用いることが望ましい。
ＭＰＳ設定は、ＭＰＳを示す情報であり、例えば、3ビットの情報である。図４に示す例においては、ＭＰＳ設定を、尾部に“b”を付した２進数で表している。この図４に示す例においては、例えば、ＭＰＳ設定“000b”がＭＰＳ＝128バイトを示し、ＭＰＳ設定“001b”がＭＰＳ＝256バイトを示す。ＭＰＳの値をＭＰＳ設定値という。【００５５】
後述する制御部１９は、スコアボード１４内のRequester-IDを用いて、Requester-IDに含まれる8ビットのBus-IDに基づいてＭＰＳ設定テーブル５１を参照する。そして、制御部１９は、ＭＰＳ設定テーブル５１からRequester-IDに含まれるBus-IDと一致するエントリを選択し、その対応するＭＰＳ設定値を抽出する。
このＭＰＳ設定テーブル５１には、例えば、プロセッサ３２が制御プログラムを実行することにより、各エンドポイント３４のＭＰＳ設定値の設定を行なう過程で、各ＭＰＳ設定値のコピーを設定する。【００５６】
なお、図４に示すＭＰＳ設定テーブル５１は、Bus-IDとＭＰＳ設定値とを備えているが、これに限定されるものではなく、他の情報を格納してもよい。例えば、ＭＰＳ設定テーブル５１に、Requester-IDに含まれるDevice-IDやFunction-IDを格納してもよい。
制御部１９は、エンドポイント３４に送信するレスポンスのペイロードサイズを決定する。制御部１９は、ＭＰＳレジスタ１９１を備える。ＭＰＳレジスタ１９１はルートコンプレックス５０のＭＰＳ設定値（第２のデータサイズ情報）を格納する。ＭＰＳレジスタ１９１は、例えば、システムコントローラ３０を介して、又は、直接、プロセッサ３２と接続されている。プロセッサ３２がＯＳを実行することにより、その機能によってＭＰＳレジスタ１９１にＭＰＳ設定値を書き込むことができる。【００５７】
制御部（決定部）１９は、リード要求元からのリード要求のRequester-IDに含まれるBus-IDに基づいてＭＰＳ設定テーブル５１を参照して、リード要求元のＭＰＳ設定値のコピーを取得し、この取得したＭＰＳ設定値のコピーと、ＭＰＳレジスタ１９１に格納されたＭＰＳ設定値とを比較する。
そして、制御部１９は、この比較の結果、小さい方のＭＰＳ設定値に基づいて、ペイロードサイズを決定する。なお、この制御部１９によるペイロードサイズの決定方法の詳細は、図７を用いて後述する。【００５８】
なお、以下、制御部１９がＭＰＳ設定テーブル５１からリード要求元のＭＰＳ設定値のコピーを抽出することを、単に、リード要求元のＭＰＳ設定値を抽出するという。
制御部１９は、決定したペイロードサイズを送信部２０に通知する。
また、制御部１９は、レスポンスデータの受信状態等に基づいて、パケットが発行可能であることを検出する。この場合、制御部１９は、送信部２０にパケットの発行を指示する。【００５９】
また、制御部１９は、送信部２０による、エンドポイント３４へのＤＭＡリード応答パケット（レスポンス）の送信が完了する毎に、後述するスコアボード１４を参照し、送信が完了したレスポンスの分割元の受信リクエストのカウント値をデクリメントする。
なお、カウント値の初期値には、分割数を使用することができる。カウント値が０になると、制御部１９は、カウント値が０となった受信リクエストに対するレスポンスの送信が完了したと判断する。制御部１９は、レスポンスの送信が完了した受信リクエストのパケット情報を、スコアボード１４からクリアする。【００６０】
送信部（作成部）２０は、制御部１９から通知されたペイロードサイズに基づき、ＤＭＡリード応答パケットを生成し、Ｉ／Ｏインタフェース２５を介してスイッチ３３に送出する。
送信部２０は、図１に示すように、ペイロード生成部２１，パケット生成部２２及び出力バッファ２３を備える。【００６１】
ペイロード生成部２１は、データバッファ１８から取り出したレスポンスデータを受信すると、制御部１９から通知されたペイロードサイズのペイロードを生成する。なお、所定のペイロードサイズのペイロードを作成する手法は既知であり、その詳細な説明は省略する。そして、ペイロード生成部２１は、生成したペイロードをパケット生成部２２に出力する。【００６２】
パケット生成部２２は、ペイロード生成部２１からペイロードを受信すると、ヘッダ情報を生成して、ペイロード生成部２１から受信したペイロードを含む、エンドポイント３４へのレスポンスデータ（ＤＭＡリード応答パケット）を生成する。パケット生成部２２は、生成したレスポンスデータを出力バッファ２３に格納する。出力バッファ２３は、レスポンスデータを格納する記憶装置である。【００６３】
送信部２０は、出力バッファ２３にレスポンスが格納されると、出力バッファ２３に格納されたレスポンスデータを、エンドポイント３４に出力する。
監視部２４は、出力バッファ２３を監視して、送信部２０のビジー（busy）状態を検出する。ビジー状態を検出すると、監視部２４は、ビジー情報を生成して制御部１９に通知（ビジー通知）する。このビジー情報には、例えば送信部２０がビジー状態であることを示す情報が含まれる。【００６４】
なお、監視部２４は、出力バッファ２３の空き状況に基づいて、例えば、出力バッファ２３の、新たなパケットを格納するための空き容量が一定以下の場合に、送信部２０がビジー状態であると判断する。また、監視部２４は、出力バッファ２３からエンドポイント３４へパケットを送出する通信回線の通信状況に基づいて、例えば、通信回線がビジー状態の場合に、送信部２０がビジー状態であると判断してもよい。【００６５】
上述の如く構成された第１実施形態の一例としての情報処理装置１におけるイーグレス処理部１５によるＤＭＡリード応答パケットの送信処理を、図５に示すフローチャート（ステップＡ１〜Ａ５）に従って説明する。
制御部１９は監視部２４のビジー状態を監視している（ステップＡ１）。監視部２４からビジー通知が行なわれていない場合に、制御部１９がペイロードサイズを決定し、決定したペイロードサイズを送信部２０に通知する（ステップＡ２）。【００６６】
送信部２０において、ペイロード生成部２１が、制御部１９から通知されたペイロードサイズに従って、データバッファ１８に格納されているデータ部を用いてペイロードを生成する（ステップＡ３）。ペイロード生成部２１は、通知されたペイロードサイズに従い、データバッファ１８から１又は２以上のレスポンスデータを取りだして、ペイロードを生成する。【００６７】
パケット生成部２２が、レスポンスキュー１７に格納されたヘッダ部を用いてヘッダ情報を生成し、ペイロード生成部２１によって作成されたペイロードを用いて、ＤＭＡリード応答パケットを生成する（ステップＡ４）。ヘッダ情報は、例えば、ペイロードに使用したレスポンスデータのヘッダ部に含まれる情報、例えば、送信先アドレス等に基づいて生成される。【００６８】
パケット生成部２２は、生成したＤＭＡリード応答パケットを出力バッファ２３に格納し、送信部２０は、このＤＭＡリード応答パケットをスイッチ３３を介して要求元のエンドポイント３４に送信する（ステップＡ５）。
次に、第１実施形態の一例としての情報処理装置１におけるＤＭＡリード応答パケットのペイロードサイズの決定手法の概要を、図６に示すフローチャート（ステップＢ１〜Ｂ７）に従って説明する。【００６９】
まず、ステップＢ１において、制御部１９は、ＤＭＡリード要求パケットのRequester-IDのBus-IDを用いて、ＭＰＳ設定テーブル５１から要求元のＭＰＳ設定値を抽出する。
ステップＢ２において、制御部１９は、ＭＰＳレジスタ１９１からルートコンプレックス５０のＭＰＳ設定値を読み出し、ステップＢ１において抽出した要求元のＭＰＳ設定値と比較する。そして、制御部１９は、要求元のＭＰＳ設定値とルートコンプレックス５０のＭＰＳ設定値とのうち、小さい方のＭＰＳ設定値をチェック用ＭＰＳとする。チェック用ＭＰＳはペイロードサイズを決定するために暫定的に用いられる値である。【００７０】
ステップＢ３において、制御部１９は、チェック用ＭＰＳでリード応答パケットを生成可能かを確認し、生成可能であれば（ステップＢ３のＹＥＳルート参照）、その時点でのチェック用ＭＰＳをペイロードサイズとして決定する（ステップＢ４）。制御部１９は、決定したペイロードサイズを送信部２０に通知する。送信部２０は、通知されたチェック用ＭＰＳをペイロードサイズとするＤＭＡリード応答パケットを生成する。【００７１】
一方、チェック用ＭＰＳでパケット生成可能でない場合には（ステップＢ３のＮＯルート参照）、制御部１９は、チェック用ＭＰＳを、その最小値となるまでの間で段階的に減少させながら、リード応答パケットが生成可能かをチェックしていく。
すなわち、制御部１９は、チェック用ＭＰＳが最小値であるか否かを確認する（ステップＢ５）。チェック用ＭＰＳが最小値ではない場合には（ステップＢ５のＮＯルート参照）、ステップＢ７において、チェック用ＭＰＳを所定量減少させ、ステップＢ３に戻る。なお、減少量と最小値は任意の大きさを想定しており、例えば両者を128バイトとする。【００７２】
また、チェック用ＭＰＳが最小値である場合（ステップＢ５のＹＥＳルート参照）、すなわち、最小となるチェック用ＭＰＳでもリード応答パケットを生成可能ではない場合は、ペイロードサイズの決定は行なわない（ステップＢ６）。すなわち、ＤＭＡリード応答パケットの生成は行なわずに処理を終了し、ペイロードサイズの決定やＤＭＡリード応答パケットの生成は次のタイミングに任せる。【００７３】
次に、第１実施形態の一例としての情報処理装置１の制御部１９によるペイロードサイズの決定方法を、図７に示すフローチャート（ステップＣ１〜Ｃ１２）に従って説明する。
ステップＣ１において、制御部１９は、監視部２４から通知されるビジー情報に基づき、イーグレス処理部１５（送信部２０）がビジー状態か否かを判別する。【００７４】
送信部２０がビジー状態であると判別すると（ステップＣ１のＹＥＳルート参照）、ステップＣ１に戻る。この場合、例えば、一定期間経過後に、制御部１９は、再度ステップＣ１の処理を行なう。制御部１９は、送信部２０のビジー状態が解除されるまで、ステップＣ１の処理を繰り返す。なお、送信部２０がビジー状態の間も、受信部１１は、システムコントローラ３０からレスポンスデータを受信し、レスポンスデータに含まれるヘッダ部およびデータ部を、それぞれ、レスポンスキュー１７及びデータバッファ１８に格納することができる。ただし、レスポンスキュー１７及びデータバッファ１８に空き領域がある場合に限る。【００７５】
一方、送信部２０がビジー状態でないと判別すると（ステップＣ１のＮＯルート参照）、ステップＣ２において、制御部１９は、ＤＭＡリード要求パケット（ＤＭＡリード要求）のRequester-ID（識別情報）を用いて、ＭＰＳ設定テーブル５１から該当する要求元のＭＰＳ設定値を抽出する。
ステップＣ３において、制御部１９は、要求元のＭＰＳ設定値と、ＭＰＳレジスタ１９１に格納されたＭＰＳ設定値とを比較し、小さい方のＭＰＳ設定値をチェック用ＭＰＳとして設定する。チェック用ＭＰＳはペイロードサイズを決定するために暫定的に用いられる値である。【００７６】
ステップＣ４において、チェック用ＭＰＳが第１の閾値である512バイト以上であるか否かを確認する。チェック用ＭＰＳが512バイト以上の場合（ステップＣ４のＹＥＳルート参照）、制御部１９は、処理をステップＣ５に移行する。ステップＣ５において、制御部１９は、ペイロードサイズが512バイトのレスポンスを生成可能か判別する。例えば、レスポンスデータのペイロードサイズが128バイトの場合、制御部１９は、システムコントローラ３０から４つ（4×128バイト＝512バイト）以上レスポンスデータを受信している場合に、ペイロードサイズが512バイトのレスポンスを生成可能と判別できる。なお、このようなペイロードサイズが所定のレスポンスデータを作成可能であるか否かの判断は、既知の種々の手法を用いて行なうことができる。【００７７】
ペイロードサイズが512バイトのレスポンスを生成可能と判別した場合（ステップＣ５のＹＥＳルート参照）には、ステップＣ６において、制御部１９は、ペイロードサイズを512バイトに決定する。
チェック用ＭＰＳが512バイトより小さい場合には（ステップＣ４のＮＯルート参照）、ステップＣ８において、チェック用ＭＰＳが第２の閾値である256バイト以上であるか否かを確認する。チェック用ＭＰＳが256バイト以上の場合（ステップＣ８のＹＥＳルート参照）、制御部１９は、処理をステップＣ９に移行する。ステップＣ９において、制御部１９は、ペイロードサイズが256バイトのレスポンスを生成可能か判別する。又、ペイロードサイズが512バイトのレスポンスを生成できないと判別した場合にも（ステップＣ５のＮＯルート参照）、ステップＣ９に移行する。【００７８】
例えば、レスポンスデータのペイロードサイズが128バイトの場合、制御部１９は、システムコントローラ３０から２つ（2×128バイト＝256バイト）以上レスポンスデータを受信している場合に、ペイロードサイズが256バイトのレスポンスを生成可能と判別できる。
ペイロードサイズが256バイトのレスポンスを生成可能と判別した場合（ステップＣ９のＹＥＳルート参照）には、ステップＣ１０において、制御部１９は、ペイロードサイズを256バイトに決定する。【００７９】
チェック用ＭＰＳが256バイトより小さい場合には（ステップＣ８のＮＯルート参照）、又は、ペイロードサイズが256バイトのレスポンスを生成できないと判別した場合（ステップＣ９のＮＯルート参照）、制御部１９は、処理をステップＣ１１に移行する。ステップＣ１１において、制御部１９は、ペイロードサイズが128バイトのレスポンスを生成可能か判別する。【００８０】
例えば、レスポンスデータのペイロードサイズが128バイトの場合、制御部１９は、システムコントローラ３０から少なくとも１つ（1×128バイト＝128バイト）以上レスポンスデータを受信している場合に、ペイロードサイズが128バイトのレスポンスを生成可能と判別できる。
ペイロードサイズが128バイトのレスポンスを生成可能と判別した場合（ステップＣ１１のＹＥＳルート参照）、ステップＣ１２において、制御部１９は、ペイロードサイズを128バイトに決定する。【００８１】
また、ペイロードサイズが128バイトのレスポンスを生成できないと判別した場合（ステップＣ１１のＮＯルート参照）、制御部４３４は、処理をステップＣ１に戻る。この場合、新たなレスポンスデータがレスポンスキュー１７に格納されると、制御部１９は、ステップＣ１から処理を開始する。
ペイロードサイズを決定すると（ステップＣ６，Ｃ１０及びＣ１２）、ステップＣ７において、制御部１９は、決定したペイロードサイズをペイロード生成部２１に通知する。以上の処理が終了すると、制御部１９は、ペイロードサイズを決定する処理を終了する。【００８２】
以上に説明したイングレス処理部１０は、受信部１１における受信処理、パケット分割部１２におけるパケット分割処理およびシステムインタフェース送信部１３における送信処理などの処理要素を直列に連結してパイプライン処理を行なうことができる。この場合、受信処理、パケット分割処理および送信処理を、さらに複数の処理要素に分割してパイプライン処理を行なうこともできる。【００８３】
同様に、イーグレス処理部１５においても、システムインタフェース受信部１６における受信処理、送信部２０における送信処理などの処理要素を直列に連結してパイプライン処理を行なうことができる。この場合、受信処理および送信処理を、さらに複数の処理要素に分割してパイプライン処理を行なうこともできる。
また、図１に示す例においては、スコアボード１４、レスポンスキュー１７およびデータバッファ１８等を別々に記載しているが、１つのメモリで実現してもよいし、必要に応じて、２以上のメモリで実現してもよい。【００８４】
このように、実施形態の一例としての情報処理装置１によれば、ＭＰＳ設定テーブル５１にＩ／Ｏサブシステム２内の全デバイスのＭＰＳ設定値のコピーを記録しておき、制御部１９が、このＭＰＳ設定テーブル５１を参照して、ＤＭＡリード要求パケットの発行元デバイスのＭＰＳ設定値を取得する。そして、制御部１９が、リード要求元のＭＰＳ設定値を取得して、この取得したＭＰＳ設定値と、ＭＰＳレジスタ１９１に格納されたＭＰＳ設定値とを比較し、小さい方のＭＰＳ設定値に基づいて、ペイロードサイズを決定する。【００８５】
これにより、Ｉ／Ｏサブシステム２内の各デバイスが異なるＭＰＳＳを有する場合でも、各デバイスに応じた最適なペイロードサイズのレスポンスデータを作成することができ、データ転送効率を向上させることができる。その結果、ルートコンプレックス５０−エンドポイント３４間のバスを効率的に使用してスループットを向上させることができる。
（Ｂ）第２実施形態
図８は第２実施形態の一例としての情報処理装置１の構成を示す図である。この図８に示す情報処理装置１は、図１に示した第１実施形態の情報処理装置１のイーグレス処理部１５にＭＰＳ設定テーブル５１を備える代わりに、メモリ３１にＭＰＳ設定テーブル５１を備える。又、ＭＰＳ設定テーブルベースアドレスレジスタ５２を備えるとともに、イングレス処理部１０にＭＰＳ設定読出部５３を備える。更に、スコアボード１４に代えてスコアボード１４ａを備える。【００８６】
なお、図中、既述の符号と同一の符号は同様の部分を示しているので、その説明は省略する。
ＭＰＳ設定テーブルベースアドレスレジスタ（第３格納部）５２には、メモリ３１上のＭＰＳ設定テーブル３１の格納場所を示すアドレス情報（ＭＰＳ設定テーブルアドレス情報，ベースアドレス，アクセス情報）が格納される。ＭＰＳ設定テーブルアドレス情報は、メモリ３１上においてＭＰＳ設定テーブル５１が格納されている位置を示すアドレス情報であり、例えば、ＭＰＳ設定テーブル５１の先頭位置（ベースアドレス）を示す。【００８７】
ＭＰＳ設定読出部５３は、このＭＰＳ設定テーブルアドレス情報を参照することにより、メモリ３１におけるＭＰＳ設定テーブル５１にアクセスすることができる。
ＭＰＳ設定読出部（取得部）５３は、受信部１１からＤＭＡリード要求が転送されると、ＭＰＳテーブルベースアドレス情報を参照して、メモリ３１上のＭＰＳ設定テーブル５１にアクセスする。そして、ＭＰＳ設定読出部５３は、ＤＭＡリード要求パケットのRequester-IDに基づいてＭＰＳ設定テーブル５１を参照して、Requester-IDに対応するＭＰＳ設定値のコピーを読み出す。【００８８】
なお、ＭＰＳ設定テーブル５１における各ＭＰＳ設定値の格納位置は、ＭＰＳ設定テーブルアドレス情報によって示されるベースアドレス（ＭＰＳ設定テーブル５１の先頭アドレス）に所定のオフセット値を加算した値で示される。そして、本第２実施形態において、その所定のオフセット値は、Requester-ID（Bus-ID）に相当する。すなわち、ベースアドレスに要求元デバイスのRequester-IDを加算した値が、ＭＰＳ設定テーブル５１において当該要求元デバイスのＭＰＳ設定値の格納位置を示す。以下、要求元デバイスのRequester-IDを要求元ＩＤオフセットという場合がある。【００８９】
このメモリ３１からのＭＰＳ設定値の読み出しは、例えば、イングレス処理部１０からシステムコントローラ３０を介してベースアドレスと要求元ＩＤオフセットとを通知することにより行なわれる。メモリ３１から読み出されたＭＰＳ設定値は、システムコントローラ３０及びシステムインタフェース受信部１６を介してＭＰＳ設定読出部５３に送達される。【００９０】
なお、メモリ３１からのＭＰＳ設定値の読み出しには、既知の種々のメモリ読み出し手法を用いることができる。
また、メモリ３１のＭＰＳ設定テーブル５１から読み出されたＭＰＳ設定値はパケット分割部１２に受け渡され、パケット分割部１２は、このＭＰＳ設定値を、スコアボード１４ａに、要求元のRequester-IDに対応付けて格納する。【００９１】
図９は第２実施形態の一例としての情報処理装置１におけるスコアボード１４ａの例を示す図である。
スコアボード（第２格納部）１４ａは、この図９に示すように、図２に示した第１実施形態のスコアボード１４にＭＰＳ設定値（ＭＰＳ）のフィールドを備える。ＭＰＳ設定値は、例えば3ビットのデータサイズを有する。【００９２】
ＭＰＳ設定読出部５３によるメモリ３１からＭＰＳ設定値の読み出しが完了すると、パケット分割部１２が該当するＭＰＳ設定値をリード要求情報（Requester-ID等）とともにスコアボード１４ａに登録する。
本第２実施形態においては、イーグレス処理部１５の制御部１９は、ＭＰＳ設定テーブル５１を参照する変わりに、Requester-IDに基づいてスコアボード１４ａを参照し、このスコアボード１４ａのＭＰＳ設定値フィールドの値を抽出してＭＰＳ設定値として使用する。【００９３】
ルートコンプレックス５０による該当ＭＰＳ設定値の取得は、ＤＭＡリード応答パケットを生成する前に行なう必要がある。そのため、イングレス処理部１０からメモリ３１へリード要求を行なう前にＭＰＳ設定テーブル５１を読み出し、スコアボード１４ａへ格納する。
図１０は第２実施形態の一例としての情報処理装置におけるデータ転送を示すシーケンス図である。【００９４】
ルートコンプレックス５０は、Ｉ／Ｏインタフェース２５を介してＤＭＡリード要求パケットを受信した後（Ｐ１参照）、ＭＰＳ設定読出部５３が、メモリ３１上のＭＰＳ設定テーブル５１から該当するＭＰＳ設定値のリード要求を発行する（Ｐ２参照）。システムコントローラ３０はメモリ３１のＭＰＳ設定テーブル５１からＭＰＳ設定値を読み出し、ＭＰＳ設定読出部５３に応答する（Ｐ３参照）。パケット分割部１２は、スコアボード１４ａにＭＰＳ設定値を格納する。【００９５】
メモリ３１から該当ＭＰＳ設定値の読み出しが完了した後、ルートコンプレックス５０はＤＭＡリード要求のデータ読み出しを開始し（Ｐ４参照）、システムインタフェース受信部１６がリード応答を受信する（Ｐ５参照）。制御部１９は、ＤＭＡリード要求パケット（ＤＭＡリード要求）のRequester-IDを用いて、スコアボード１４ａから該当する要求元のＭＰＳ設定値を抽出する。【００９６】
制御部１９は、第１実施形態と同様に、要求元のＭＰＳ設定値と、ＭＰＳレジスタ１９１に格納されたＭＰＳ設定値とを比較し、小さい方のＭＰＳ設定値をチェック用ＭＰＳとして設定する。
そして、制御部１９は、チェック用ＭＰＳとして設定したペイロードサイズのレスポンスを生成可能と判別した場合に、チェック用ＭＰＳをペイロードサイズとして決定し、送信部２０に通知する。【００９７】
送信部２０が、通知されたペイロードサイズの応答パケットを作成して、Ｉ／Ｏインタフェース２５にＤＭＡリード応答パケットを送信する（Ｐ６参照）。
このように、第２実施形態の情報処理装置１によれば、ＭＰＳ設定テーブル５１を、イーグレス処理部１５のレジスタよりもメモリ資源が大きいメモリ（主記憶装置）３１に格納する。これにより、テーブルエントリ数を増やすことが容易である。これにより、抽出するＭＰＳ設定値をRequester-ID毎の細かい粒度で設定できる利点がある。【００９８】
またＭＰＳ設定読出部５３が、メモリ３１のＭＰＳ設定テーブル５１からＭＰＳ設定値を読み出し、パケット分割部１２がこのＭＰＳ設定値をスコアボード１４ａに格納する。これにより、ルートコンプレックス５０において制御部１９がスコアボード１４ａを参照して、ＤＭＡリード要求の要求元のＭＰＳ設定値を抽出することができる。すなわち、制御部１９がメモリ３１のＭＰＳ設定テーブル５１からＭＰＳ設定値を読み出す必要がなく、処理速度を向上させることができる。【００９９】
（Ｃ）第３実施形態
図１１は第３実施形態の一例としての情報処理装置１の構成を示す図である。この図１１に示す情報処理装置１は、図８に示した第２実施形態の情報処理装置１のルートコンプレックス５０にＭＰＳ設定テーブルキャッシュ５４を備える。
ＭＰＳ設定テーブルキャッシュ５４は、メモリ３１から読み出したＭＰＳ設定値を格納するキャッシュメモリである。このＭＰＳ設定テーブルキャッシュ５４には、メモリ３１から読み出したＭＰＳ設定値を、対応するRequester-IDに関連付けて格納する。すなわち、ＭＰＳ設定読出部５３が、このＭＰＳ設定テーブルキャッシュ５４からRequester-IDをタグとしてＭＰＳ設定値を読み出すことができるよう構成されている。【０１００】
イングレス処理部１０の受信部１１からＤＭＡリード要求がＭＰＳ設定読出部５３に転送されると、ＭＰＳ設定読出部５３は、ＤＭＡリード要求パケットのRequester-IDに基づき、ＭＰＳ設定テーブルキャッシュ５４を参照する。
このＭＰＳ設定テーブルキャッシュ５４内に該当するＭＰＳ設定値が存在する場合には、このＭＰＳ設定値をＭＰＳ設定テーブルキャッシュ５４から読み出す。これにより、メモリ３１へのＭＰＳ設定値の読み出し処理を省略することができる。一方、ＭＰＳ設定テーブルキャッシュ５４に対応するＭＰＳ設定値が存在しない場合には、ＭＰＳ設定読出部５３は、メモリ３１のＭＰＳ設定テーブル５１からＭＰＳ設定値の読み出しを行なう。その後、第２実施形態と同様にＤＭＡリード応答パケットを生成する。【０１０１】
上述した第２実施形態の一例としての情報処理装置１においては、ＤＭＡリード要求が起きるたびにメモリ３１上のＭＰＳ設定テーブル５１からＤＭＡ設定値の読み出しを実行している。これにより、メモリ３１とルートコンプレックス５０との間でのデータ転送手順が増加する。
本第３実施形態の一例としての情報処理装置１においては、ルートコンプレックス５０にＭＰＳ設定テーブルキャッシュ５４を備え、ＭＰＳ設定読出部５３が読み出したＭＰＳ設定値をこのＭＰＳ設定テーブルキャッシュ５４にキャッシュする。これにより、ＭＰＳ設定読出部５３がＭＰＳ設定テーブルキャッシュ５４からＭＰＳ設定値を読み出すことで、メモリ３１からのＭＰＳ設定値の読み出し処理を省略することが可能となる。【０１０２】
（Ｄ）第１〜第３実施形態での運用について
上述した第１〜第３実施形態において、データ転送の効率を向上させるには、以下の（１），（２）に示す運用指針を適用することが望ましい。
（１）Ｉ／Ｏ サブシステム内のＭＰＳ設定値はＭＰＳＳを超えない範囲で最大にする。ただし、システムのＩ／ＯリードにあたるＤＭＡライト転送を成功させるためにエンドポイント３４のＭＰＳ設定値はルートコンプレックス５０のＭＰＳ設定値以下とする。【０１０３】
（２）各デバイスのＭＲＲＳ設定値は可能な限り大きくする。なお、PCIeインタフェースでは4Kバイト が最大のＭＲＲＳ設定値となる。
ＭＰＳ設定テーブル５１の初期化及びエントリの登録は、プロセッサ３２が設定用プログラム（ソフトウェア）を実行することで実現する。具体的には、Ｉ／Ｏサブシステムの初期設定時に、かかる設定用ソフトウェアを併せて実行する。【０１０４】
プロセッサ３２は、各デバイスのＭＰＳ設定値をセットする際に、ＭＰＳ設定テーブル５１内の該当デバイスに対応したRequester-IDまたはBus-IDのエントリに、各デバイスにセットしたＭＰＳ設定内容と同じ設定値を格納する。
エンドポイント３４がＭＰＳ設定値を有していない場合には、プロセッサ３２は、出来る限り最小の値（例えば、PCIeインタフェースでは128バイト）をＭＰＳ設定テーブル５１の該当エントリにセットする。【０１０５】
また、Ｉ／Ｏサブシステム内のデバイス構成によりＭＰＳ設定テーブル５１の同一エントリに複数回設定する場合は、最小の設定値をセットする。
上述した第２実施形態及び第３実施形態の情報処理装置１においては、メモリ３１上にＭＰＳ設定テーブル５１を設けるために、例えば、ＭＰＳ設定テーブルアドレス情報によって示されるアドレスを先頭に連続するアドレス領域内にＭＰＳ設定テーブル５１を用意する。プロセッサ３２は、このＭＰＳ設定テーブル５１において、Ｉ／Ｏサブシステム内の各デバイスのRequester-IDに対応するメモリアドレス上に、当該デバイスにセットされた内容と同じＭＰＳ設定値をセットする。【０１０６】
また、情報処理装置によっては、システムが稼働中にエンドポイント３４が追加・削除される場合がある。そのようなシステムにおいてエンドポイント３４を追加する場合には、例えば、追加したエンドポイント３４を組み込むための設定をプロセッサ３２が行なう際に、ＭＰＳ設定テーブル５１の該当エントリも設定することが望ましい。
一方、エンドポイント３４を削除する場合は、ＭＰＳ設定テーブル５１の該当エントリをゼロクリアするか、もしくは操作しないでおくことが望ましい。【０１０７】
（Ｅ）第４実施形態
図１２は第４実施形態の一例としての情報処理装置１ａの構成を示す図である。この図１２に示す情報処理装置１ａは、プロセッサ３２，メモリ３１，システムコントローラ３０及びルートコンプレックス５０を備える複数（図１２に示す例では３つ以上）の処理ユニット１００−１〜１００−３を備えている。これらの複数の処理ユニット１００−１〜１００−３は、スイッチ３３を介して接続されている。【０１０８】
図中、既述の符号と同一の符号は同様の部分を示しているので、その説明は省略する。すなわち、処理ユニット１００−１は、上述した第３実施形態の一例としての情報処理装置１と同様の構成を有する。そして、複数の処理ユニット１００−１〜１００−３は、互いに同様の構成を有する。
なお、図１２中においては、便宜上、処理ユニット１００−１におけるイーグレス処理部１５の構成の図示を省略している。又、この図１２中においては、処理ユニット１００−１についてのみ、ルートコンプレックス５０やメモリ３１の構成を示し、他の処理ユニット１００−２，１００−３におけるこれらの構成の図示を省略している。【０１０９】
以下、処理ユニットを示す符号としては、複数の処理ユニットのうち１つを特定する必要があるときには符号１００−１〜１００−３を用いるが、任意の処理ユニットを指すときには符号１００を用いる。
この図１２に示す情報処理装置１ａにおいて、各処理ユニット１００のメモリ３１のＭＰＳ設定テーブルに、全ルートコンプレックス５０デバイスのＭＰＳ設定値が登録されている。【０１１０】
各処理ユニットのメモリ３１上のＭＰＳ設定テーブル５１には、情報処理装置１ａの各ルートコンプレックス５０の各デバイスのＭＰＳ設定値がそれぞれ格納されている。これにより、あるルートコンプレックス５０からスイッチ３３を介して他のルートコンプレックス５０上のメモリ３１に対してリード要求をする場合に、前記第３実施形態と同様に、リード応答するルートコンプレックス５０は、リード要求元のルートコンプレックス５０のＭＰＳ設定値に応じたペイロードサイズを決定することが出来る。【０１１１】
このように、本第４実施形態の一例としての情報処理装置１ａによれば、複数のルートコンプレックス５０が異なるＭＰＳ設定値をもつ場合でも、ルートコンプレックス５０間でリードのデータ転送を効率よく行なうことができる。
（Ｆ）その他
そして、開示の技術は上述した実施形態に限定されるものではなく、本実施形態の趣旨を逸脱しない範囲で種々変形して実施することができる。本実施形態の各構成及び各処理は、必要に応じて取捨選択することができ、あるいは適宜組み合わせてもよい。【０１１２】
また、上述した開示により本実施形態を当業者によって実施・製造することが可能である。
（付記１）
入出力バスに備えられる入出力制御デバイスからデータ取得要求を受信すると、前記入出力制御デバイスが処理可能な第１のデータサイズ情報のコピーを格納する格納部から読み出した前記入出力制御デバイスに関する前記第１のデータサイズ情報のコピーと、当該データ転送装置が処理可能な第２のデータサイズ情報とを比較し、小さい方のデータサイズ情報に基づいて前記データ取得要求に対する応答データサイズを決定する決定部と、
前記決定部によって決定された前記応答データサイズに基づいて応答データを作成する作成部と、
前記作成部によって作成された前記応答データを送信する送信部と
を備えることを特徴とする、データ転送装置。
（付記２）
前記決定部が、前記小さい方のデータサイズ情報に基づき、前記応答データを生成可能であるか否かを判断し、前記応答データを生成不可であると判断した場合に、前記データサイズを減少させることを特徴する、付記１記載のデータ転送装置。
（付記３）
前記格納部において、前記入出力制御デバイスの前記第１のデータサイズ情報のコピーが、前記入出力制御デバイスの識別情報に関連付けて格納され、
前記決定部が、前記リード要求に含まれる要求元識別情報に基づいて、前記格納部から、前記データ取得要求を発行した入出力制御デバイスの前記第１のデータサイズ情報のコピーを読み出すことを特徴とする、付記１又は２記載のデータ転送装置。
（付記４）
前記格納部を備えることを特徴とする、付記１〜３のいずれか１項に記載のデータ転送装置。
（付記５）
前記格納部が当該データ転送装置の外部の主記憶装置に備えられ、
前記データ転送装置が、
前記主記憶装置の前記格納部から前記第１のデータサイズ情報のコピーを取得する取得部と、
前記格納部から読み出された前記第１のデータサイズ情報のコピーを格納する第２格納部とを備え、
前記決定部が、前記第２格納部から前記第１のデータサイズ情報のコピーを取得することを特徴とする、付記１〜３のいずれか１項に記載のデータ転送装置。
（付記６）
前記主記憶装置から読み出された前記第１のデータサイズ情報のコピーを格納するキャッシュメモリを備え、
前記取得部が、前記主記憶装置の前記格納部に代えて前記キャッシュメモリから前記第１のデータサイズ情報のコピーを取得することを特徴とする、付記５記載のデータ転送装置。
（付記７）
前記格納部へのアクセス情報を格納する第３格納部を備え、
前記取得部が、前記第３格納部から読み出した前記アクセス情報を用いて、前記主記憶装置の前記格納部から前記第１のデータサイズ情報のコピーを取得することを特徴とする、付記５又は６記載のデータ転送装置。
（付記８）
入出力バスに備えられるデータ転送装置におけるデータ転送方法であって、
前記入出力バスに備えられる入出力制御デバイスからデータ取得要求を受信する処理と、
前記入出力制御デバイスが処理可能な第１のデータサイズ情報のコピーを格納する格納部から読み出した前記入出力制御デバイスに関する前記第１のデータサイズ情報のコピーと、前記データ転送装置が処理可能な第２のデータサイズ情報とを比較して、小さい方のデータサイズ情報に基づいて前記データ取得要求に対する応答データサイズを決定する処理と、
決定された前記応答データサイズに基づいて応答データを作成する処理と、
作成された前記応答データを送信する処理と
を備えることを特徴とする、データ転送方法。
（付記９）
前記小さい方のデータサイズ情報に基づき、前記応答データを生成可能であるか否かを判断し、前記応答データを生成不可であると判断した場合に、前記データサイズを減少させる処理を備えることを特徴する、付記８記載のデータ転送方法。
（付記１０）
前記格納部において、前記入出力制御デバイスの前記第１のデータサイズ情報のコピーが、前記入出力制御デバイスの識別情報に関連付けて格納され、
前記リード要求に含まれる要求元識別情報に基づいて、前記格納部から、前記データ取得要求を発行した入出力制御デバイスの前記第１のデータサイズ情報のコピーを読み出す処理を備えることを特徴とする、付記８又は９記載のデータ転送方法。
（付記１１）
前記データ転送装置が、前記格納部を備えることを特徴とする、付記８〜１０のいずれか１項に記載のデータ転送方法。
（付記１２）
前記格納部が前記データ転送装置の外部の主記憶装置に備えられ、
前記主記憶装置の前記格納部から前記第１のデータサイズ情報のコピーを取得する処理と、
前記格納部から取得された前記第１のデータサイズ情報のコピーを第２格納部に格納する処理と、
前記第２格納部から前記第１のデータサイズ情報のコピーを取得して、前記データ取得要求に対する応答データサイズを決定する処理と
を備えることを特徴とする、付記８〜１１のいずれか１項に記載のデータ転送方法。
（付記１３）
前記主記憶装置の前記格納部から読み出された前記第１のデータサイズ情報のコピーをキャッシュメモリに格納する処理と、
前記主記憶装置の前記格納部に代えて前記キャッシュメモリから前記第１のデータサイズ情報のコピーを取得する処理と
を備えることを特徴とする、付記１２記載のデータ転送方法。
（付記１４）
第３格納部に前記データ転送装置が、前記格納部へのアクセス情報を格納する処理と、
前記第３格納部から読み出した前記アクセス情報を用いて、前記主記憶装置の前記格納部から前記第１のデータサイズ情報のコピーを取得する処理と
を備えることを特徴とする、付記１２又は１３記載のデータ転送方法。
（付記１５）
プロセッサと、
主記憶装置と、
データ転送装置及び入出力制御デバイスを備える入出力バスと、
前記入出力制御デバイスが処理可能な第１のデータサイズ情報のコピーを格納する格納部と、
前記入出力制御デバイスからデータ取得要求を受信すると、前記格納部から読み出した前記入出力制御デバイスに関する前記第１のデータサイズ情報のコピーと、前記データ転送装置が処理可能な第２のデータサイズ情報とを比較し、小さい方のデータサイズ情報に基づいて前記データ取得要求に対する応答データサイズを決定する決定部と、
前記決定部によって決定された前記応答データサイズに基づいて応答データを作成する作成部と、
前記作成部によって作成された前記応答データを送信する送信部と
を備えることを特徴とする、情報処理装置。
（付記１６）
前記決定部が、前記小さい方のデータサイズ情報に基づき、前記応答データを生成可能であるか否かを判断し、前記応答データを生成不可であると判断した場合に、前記データサイズを減少させることを特徴する、付記１５記載の情報処理装置。
（付記１７）
前記格納部において、前記入出力制御デバイスの前記第１のデータサイズ情報のコピーが、前記入出力制御デバイスの識別情報に関連付けて格納され、
前記決定部が、前記リード要求に含まれる要求元識別情報に基づいて、前記データ取得要求を発行した入出力制御デバイスの前記第１のデータサイズ情報を読み出すことを特徴とする、付記１５又は１６記載の情報処理装置。
（付記１８）
前記データ転送装置が、前記格納部を備えることを特徴とする、付記１５〜１７のいずれか１項に記載の情報処理装置。
（付記１９）
前記格納部が前記主記憶装置に備えられ、
前記データ転送装置が、
前記格納部から読み出した前記第１のデータサイズ情報を格納する第２格納部と、
前記主記憶装置から前記第１のデータサイズ情報を取得し、前記第２格納部に格納する取得部とを備え、
前記決定部が、前記第２格納部から前記第１のデータサイズ情報を取得することを特徴とする、付記１５〜１７のいずれか１項に記載の情報処理装置。
（付記２０）
前記主記憶装置から読み出された前記第１のデータサイズ情報のコピーを格納するキャッシュメモリを備え、
前記取得部が、前記主記憶装置の前記格納部に代えて前記キャッシュメモリから前記第１のデータサイズ情報のコピーを取得することを特徴とする、付記１９記載の情報処理装置。
（付記２１）
前記データ転送装置が、前記格納部へのアクセス情報を格納する第３格納部を備え、
前記取得部が、前記第３格納部から読み出した前記アクセス情報を用いて、前記主記憶装置の前記格納部から前記第１のデータサイズ情報のコピーを取得することを特徴とする、付記１９又は２０記載の情報処理装置。
【符号の説明】
【０１１３】
１，１ａ    情報処理装置
２    Ｉ／Ｏサブシステム
１０    イングレス処理部
１１    受信部
１２    パケット分割部
１３    システムインタフェース送信部
１４，１４ａ    スコアボード（第２格納部）
１５    イーグレス処理部
１６    システムインタフェース受信部
１７    レスポンスキュー
１８    データバッファ
１９    制御部（決定部）
２０    送信部（作成部）
２１    ペイロード生成部
２２    パケット生成部
２３    出力バッファ
２４    監視部
２５    Ｉ／Ｏインタフェース
２６    システムインタフェース
３０    システムコントローラ
３１    メモリ（主記憶装置）
３２    プロセッサ
３３    スイッチ
３４    エンドポイント（入出力制御デバイス）
５０    ルートコンプレックス（データ転送装置）
５１    ＭＰＳ設定テーブル（格納部）
５２    ＭＰＳ設定テーブルベースアドレスレジスタ（第３格納部）
５３    ＭＰＳ設定読出部（取得部）
５４    ＭＰＳ設定テーブルキャッシュ（キャッシュメモリ）
１００−１〜１００−３，１００    処理ユニット
【図１】
0006011727.tif 000002
【図２】
0006011727.tif 000003
【図３】
0006011727.tif 000004
【図４】
0006011727.tif 000005
【図５】
0006011727.tif 000006
【図６】
0006011727.tif 000007
【図７】
0006011727.tif 000008
【図８】
0006011727.tif 000009
【図９】
0006011727.tif 000010
【図１０】
0006011727.tif 000011
【図１１】
0006011727.tif 000012
【図１２】
0006011727.tif 000013
【図１３】
0006011727.tif 000014
【図１４】
0006011727.tif 000015
【図１５】
0006011727.tif 000016
【図１６】
0006011727.tif 000017
【図１７】
0006011727.tif 000018