(57)【要約】【課題】データ転送を行う際のデータサイズをパケット化のオーバヘッドだけではなくクレジットによるフロー制御を考慮して決定でき、転送速度の低下を抑止することが可能な情報処理装置、情報処理システム、情報処理方法、およびプログラムを提供する。【解決手段】シリアル転送インタフェース２６のデータ転送制御を行う転送制御部２７と、設定された送信パケットの最大データサイズに応じて転送制御部により制御されるシリアル転送インタフェースのデータ転送実行中のデータサイズを含むデータ転送状態を監視し、監視状態に応じて次に送信すべき送信パケットの最大データサイズを判定して変更可能で、判定した最大データサイズを転送制御部に供給する転送状態監視部３０と、を有し、転送制御部２７は、転送状態監視部３０により供給される送信パケットの最大データサイズに応じて、シリアル転送インタフェースのデータ転送制御を行う。【選択図】図１
2012133643.tif 000002
【特許請求の範囲】
【請求項１】
対向機器との間で、パケット単位でデータをシリアル転送するシリアル転送インタフェースと、
上記シリアル転送インタフェースのデータ転送制御を行う転送制御部と、
設定された送信パケットの最大データサイズに応じて上記転送制御部により制御される上記シリアル転送インタフェースのデータ転送実行中のデータサイズを含むデータ転送状態を監視し、監視状態に応じて次に送信すべき送信パケットの最大データサイズを判定して変更可能で、判定した最大データサイズを上記転送制御部に供給する転送状態監視部と、を有し、
上記転送制御部は、
上記転送状態監視部により供給される送信パケットの最大データサイズに応じて、上記シリアル転送インタフェースのデータ転送制御を行う
情報処理装置。
【請求項２】
上記転送状態監視部は、少なくとも、
上記シリアル転送インタフェースのデータ転送実行中のデータサイズを含むデータ転送状態情報から転送速度を取得する転送速度取得部と、
上記転送速度取得部により取得された転送速度情報と上記設定された最大データサイズとの関係に基づいて、送信すべき送信パケットの最大データサイズを判定して、当該送信パケットの最大データサイズを変更可能な最大データサイズ判定部と、を含む
請求項１記載の情報処理装置。
【請求項３】
上記転送状態監視部の最大データサイズ判定部は、
上記送信パケットの最大データサイズを変更後に上記転送速度取得部で取得された転送速度が向上したか否かを判定し、
転送速度が向上している場合には、上記送信パケットの最大データサイズをさらに変更して転送速度が向上したか否かを判定し、
転送速度が向上してない場合には、変更前の最大データサイズに戻す
請求項２記載の情報処理装置。
【請求項４】
設定される上記送信パケットの最大データサイズは、設定範囲の最小な値である最小値があらかじめ規定され、
上記最大データサイズ判定部は、
上記最大データサイズの初期値として規定される最大ペイロードサイズに設定し、上記転送速度取得部により取得された転送速度情報と上記最大データサイズの最小値との関係に基づいて、送信パケットの現最大データサイズが上記最小値に達したか否かを判定し、
現最大データサイズが上記最小値に達していない場合には、上記送信パケットの最大データサイズを所定サイズ減少させ、当該最大データサイズを減少後に上記転送速度取得部で取得された転送速度が向上したか否かを判定し、
転送速度が向上している場合には、現最大データサイズが上記最小値に達していないことを条件し、上記送信パケットの最大データサイズをさらに減少させ、当該最大データサイズを減少後に上記転送速度取得部で取得された転送速度が向上したか否かを判定し、
転送速度が向上してない場合には、変更前の最大データサイズに戻す
請求項３記載の情報処理装置。
【請求項５】
設定される上記送信パケットの最大データサイズは、設定範囲の最小な値である最小値および最大の値である最大値があらかじめ規定され、
上記最大データサイズ判定部は、
上記最大データサイズの初期値として規定される最大データサイズの上記最小値に設定し、上記転送速度取得部により取得された転送速度情報と上記最大データサイズの最大値との関係に基づいて、送信パケットの現最大データサイズが上記最大値に達したか否かを判定し、
現最大データサイズが上記最大値に達していない場合には、上記送信パケットの最大データサイズを所定サイズ増加させ、当該最大データサイズを増加後に上記転送速度取得部で取得された転送速度が向上したか否かを判定し、
転送速度が向上している場合には、現最大データサイズが上記最大値に達していないことを条件し、上記送信パケットの最大データサイズをさらに増加させ、当該最大データサイズを増加後に上記転送速度取得部で取得された転送速度が向上したか否かを判定し、
転送速度が向上してない場合には、変更前の最大データサイズに戻す
請求項３または４記載の情報処理装置。
【請求項６】
設定される上記送信パケットの最大データサイズは、設定範囲の最小な値である最小値および最大の値である最大値があらかじめ規定され、
上記最大データサイズ判定部は、
上記最大データサイズをあらかじめ設定された初期値に設定し、上記転送速度取得部により取得された転送速度情報と上記最大データサイズの最大値との関係に基づいて、送信パケットの現最大データサイズが上記最大値に達したか否かを判定し、
現最大データサイズが上記最大値に達していない場合には、上記送信パケットの最大データサイズを所定サイズ増加させ、当該最大データサイズを増加後に上記転送速度取得部で取得された転送速度が向上したか否かを判定し、
転送速度が向上している場合には、第１処理を行い、
現最大データサイズが上記最大値に達している場合、または、転送速度が向上してない場合には、変更前の最大データサイズに戻して第２処理を行い、
上記第１処理として、
送信パケットの現最大データサイズが上記最大値に達したか否かを判定し、
現最大データサイズが上記最大値に達していない場合には、上記送信パケットの最大データサイズを所定サイズ増加させ、当該最大データサイズを増加後に上記転送速度取得部で取得された転送速度が向上したか否かを判定し、
転送速度が向上している場合には、現最大データサイズが上記最大値に達していないことを条件し、上記送信パケットの最大データサイズをさらに増加させ、当該最大データサイズを増加後に上記転送速度取得部で取得された転送速度が向上したか否かを判定し、
転送速度が向上してない場合には、変更前の最大データサイズに戻し、
上記第２処理として、
送信パケットの現最大データサイズが上記最小値に達したか否かを判定し、
現最大データサイズが上記最小値に達していない場合には、上記送信パケットの最大データサイズを所定サイズ減少させ、当該最大データサイズを減少後に上記転送速度取得部で取得された転送速度が向上したか否かを判定し、
転送速度が向上している場合には、現最大データサイズが上記最小値に達していないことを条件し、上記送信パケットの最大データサイズをさらに減少させ、当該最大データサイズを減少後に上記転送速度取得部で取得された転送速度が向上したか否かを判定し、
転送速度が向上してない場合には、変更前の最大データサイズに戻す
請求項３から５のいずれか一に記載の情報処理装置。
【請求項７】
上記転送状態監視部は、
上記シリアル転送インタフェースのデータ転送実行中にデータ送信にストールの発生を測定するストール測定部を、さらに含み、
上記最大データサイズ判定部は、
上記ストール測定部の測定結果、並びに、上記転送速度取得部により取得された転送速度情報と上記設定された最大データサイズとの関係に基づいて、送信すべき送信パケットの最大データサイズを判定して、当該送信パケットの最大データサイズを変更可能である
請求項２から６のいずれか一に記載の情報処理装置。
【請求項８】
設定される上記送信パケットの最大データサイズは、設定範囲の最小な値である最小値があらかじめ規定され、
上記最大データサイズ判定部は、
上記最大データサイズの初期値として規定される最大ペイロードサイズに設定し、
上記ストール測定部の測定結果によりストールが発生しているか否かを判定し、
ストールが発生している場合、上記転送速度取得部により取得された転送速度情報と上記最大データサイズの最小値との関係に基づいて、送信パケットの現最大データサイズが上記最小値に達したか否かを判定し、
現最大データサイズが上記最小値に達していない場合には、上記送信パケットの最大データサイズを所定サイズ減少させ、当該最大データサイズを減少後に上記転送速度取得部で取得された転送速度が向上したか否かを判定し、
転送速度が向上している場合には、ストールが発生しているか否かを判定し、
ストールが発生している場合には、現最大データサイズが上記最小値に達していないことを条件し、上記送信パケットの最大データサイズをさらに減少させ、上記転送速度取得部で取得された転送速度が向上したか否かを判定し、
転送速度が向上してない場合には、変更前の最大データサイズに戻す
請求項７記載の情報処理装置。            
【請求項９】
設定される上記送信パケットの最大データサイズは、設定範囲の最小な値である最小値および最大の値である最大値があらかじめ規定され、
上記最大データサイズ判定部は、
上記最大データサイズの初期値として規定される上記最大データサイズの最小値に設定し、
上記ストール測定部の測定結果によりストールが発生しているか否かを判定し、
ストールが発生していない場合、上記転送速度取得部により取得された転送速度情報と上記最大データサイズの最大値との関係に基づいて、送信パケットの現最大データサイズが上記最大値に達したか否かを判定し、
現最大データサイズが上記最大値に達していない場合には、上記送信パケットの最大データサイズを所定サイズ増加させ、上記転送速度取得部で取得された転送速度が向上したか否かを判定し、
転送速度が向上している場合には、ストールが発生しているか否かを判定し、
ストールが発生していない場合には、現最大データサイズが上記最大値に達していないことを条件し、上記送信パケットの最大データサイズをさらに増加させ、当該最大データサイズを増加後に上記転送速度取得部で取得された転送速度が向上したか否かを判定し、
転送速度が向上してない場合には、変更前の最大データサイズに戻す
請求項７または８記載の情報処理装置。
【請求項１０】
設定される上記送信パケットの最大データサイズは、設定範囲の最小な値である最小値および最大の値である最大値があらかじめ規定され、
上記最大データサイズ判定部は、
上記最大データサイズをあらかじめ設定された初期値に設定し、
上記ストール測定部の測定結果によりストールが発生しているか否かを判定し、
ストールが発生していない場合には第３処理を行い、ストールが発生している場合には第４処理を行い、
上記第３処理として、
送信パケットの現最大データサイズが上記最大値に達したか否かを判定し、
現最大データサイズが上記最大値に達していない場合には、上記送信パケットの最大データサイズを所定サイズ増加させ、当該最大データサイズを増加後に上記転送速度取得部で取得された転送速度が向上したか否かを判定し、
転送速度が向上している場合には、現最大データサイズが上記最大値に達していないことを条件し、上記送信パケットの最大データサイズをさらに増加させ、当該最大データサイズを増加後に上記転送速度取得部で取得された転送速度が向上したか否かを判定し、
転送速度が向上してない場合には、変更前の最大データサイズに戻し、
上記第４処理として、
上記転送速度取得部により取得された転送速度情報と上記最大データサイズの最小値との関係に基づいて、送信パケットの現最大データサイズが上記最小値に達したか否かを判定し、
現最大データサイズが上記最小値に達していない場合には、上記送信パケットの最大データサイズを所定サイズ減少させ、当該最大データサイズを減少後に上記転送速度取得部で取得された転送速度が向上したか否かを判定し、
転送速度が向上している場合には、ストールが発生しているか否かを判定し、
ストールが発生している場合には、現最大データサイズが上記最小値に達していないことを条件し、上記送信パケットの最大データサイズをさらに減少させ、当該最大データサイズを減少後に上記転送速度取得部で取得された転送速度が向上したか否かを判定し、
転送速度が向上してない場合には、変更前の最大データサイズに戻す
請求項７から９のいずれか一に記載の情報処理装置。    
【請求項１１】
上記シリアル転送インタフェースは、所定のアドレス境界をまたいだアクセスを行うパケットの生成は禁止されており、
転送データの残りのデータサイズを取得する転送残りデータサイズ取得部と、
上記アドレス境界までのデータサイズを取得するアドレス境界データサイズ取得部と、を有し、
上記転送制御部は、
上記転送残りデータサイズ取得部で得られる第１データサイズまたは上記アドレス境界データサイズ取得部で得られる第２データサイズが、上記設定される最大データサイズより小さい場合は、上記第１データサイズおよび上記第２データサイズのうち小さいものを送信パケットのデータサイズとし、
上記第１データサイズまたは上記第２データサイズが上記設定される最大データサイズより小さくない場合は、上記転送状態監視部により供給される最大データサイズを送信パケットのデータサイズとする
請求項１から１０のいずれか一に記載の情報処理装置。
【請求項１２】
シリアル転送によりデータを送信する送信側装置と、
上記送信側装置から送信されたデータを受信し、受信データを受信バッファに格納し、上記送信側装置に対して当該受信バッファの開放通知を行う受信側装置と、を有し、
上記送信側装置は、
上記受信側装置との間で、パケット単位でデータをシリアル転送するシリアル転送インタフェースと、
上記シリアル転送インタフェースのデータ転送制御を行う転送制御部と、
設定された送信パケットの最大データサイズに応じて上記転送制御部により制御される上記シリアル転送インタフェースのデータ転送実行中のデータサイズを含むデータ転送状態を監視し、監視状態に応じて次に送信すべき送信パケットの最大データサイズを判定して変更可能で、判定した最大データサイズを上記転送制御部に供給する転送状態監視部と、を含み、
上記転送制御部は、
上記転送状態監視部により供給される送信パケットの最大データサイズに応じて、上記シリアル転送インタフェースのデータ転送制御を行う
情報処理システム。
【請求項１３】
対向機器との間で、パケット単位でデータをシリアル転送インタフェースによりシリアル転送するシリアル転送ステップと、
上記シリアル転送インタフェースのデータ転送制御を行う転送制御ステップと、
設定された送信パケットの最大データサイズに応じて上記転送制御ステップにより制御される上記シリアル転送インタフェースのデータ転送実行中のデータサイズを含むデータ転送状態を監視し、監視状態に応じて次に送信すべき送信パケットの最大データサイズを判定して変更可能で、判定した最大データサイズを上記転送制御ステップに供給する転送状態監視ステップと、を有し、
上記転送制御ステップでは、
上記転送状態監視ステップにより供給される送信パケットの最大データサイズに応じて、上記シリアル転送インタフェースのデータ転送制御を行う
情報処理方法。
【請求項１４】
対向機器との間で、パケット単位でデータをシリアル転送インタフェースによりシリアル転送するシリアル転送処理と、
上記シリアル転送インタフェースのデータ転送制御を行う転送制御処理と、
設定された送信パケットの最大データサイズに応じて上記転送制御処理により制御される上記シリアル転送インタフェースのデータ転送実行中のデータサイズを含むデータ転送状態を監視し、監視状態に応じて次に送信すべき送信パケットの最大データサイズを判定して変更可能で、判定した最大データサイズを上記転送制御ステップに供給する転送状態監視処理と、を有し、
上記転送制御処理では、
上記転送状態監視処理により供給される送信パケットの最大データサイズに応じて、上記シリアル転送インタフェースのデータ転送制御を行う
情報処理をコンピュータに実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＰＣＩ（Peripheral Component Interconnect） Ｅｘｐｒｅｓｓ インタフェース等のシリアル転送インタフェース（Ｉ／Ｆ）を備えた情報処理装置、情報処理システム、情報処理方法、およびプログラムに関するものである。
【背景技術】
【０００２】
パーソナルコンピュータなどのホスト機器と、不揮発性メモリを搭載した可搬型情報処理装置等との間のデータ転送インタフェース（Ｉ／Ｆ）として、パラレル転送方式ではなくシリアル転送方式を採用したＰＣＩ Ｅｘｐｒｅｓｓ Ｉ／Ｆが実用化されている。
【０００３】
ＰＣＩ Ｅｘｐｒｅｓｓ Ｉ／Ｆでは、パケット単位でデータを送受信する。各パケットにはデータ以外にヘッダなどの情報が付加されるため、パケット化に伴うヘッダ等のオーバヘッドが存在する。
各パケットに含まれるデータサイズ（Ｌｅｎｇｔｈ）を大きくすると、パケット化に伴うオーバヘッドを減らすことができ、転送速度の向上が期待できる。
【０００４】
一方、ＰＣＩ Ｅｘｐｒｅｓｓ Ｉ／Ｆでは、クレジットによるフロー制御を行っており、送信側は対向機器の受信バッファの残量を管理しながらデータを送信する。
受信側は、受信データの処理を終えると送信側に受信バッファの開放を通知し、送信側は受信バッファの残量が増加したことを知ることができる。
対向機器の受信バッファに空きがない場合は、送信側はデータを送信することができない。
【０００５】
特許文献１には、データサイズ（Ｌｅｎｇｔｈ）の最大値をＰＣＩ Ｅｘｐｒｅｓｓの規格上許される最大のＬｅｎｇｔｈである最大ペイロードサイズ［ＭａｘＰａｙｌｏａｄＳｉｚｅ］に設定してデータ転送を行うことが提案されている。
上述したように、各パケットに含まれるデータサイズ（Ｌｅｎｇｔｈ）を大きくすると、パケット化に伴うオーバヘッドを減らすことができ、転送速度の向上が期待できる。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００８−２６９２８２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、特許文献１においては、クレジットによるフロー制御を考慮していないことから、以下のような不利益がある。
上記のように、データサイズ（Ｌｅｎｇｔｈ）を大きくすると受信側から送信側への受信バッファ開放通知が遅れる。このため、送信側が対向機器の受信バッファに空きがないと認識し、転送がストールし、転送速度の低下を引き起こすことがあるという不利益がある。
【０００８】
本発明は、データ転送を行う際のデータサイズをパケット化のオーバヘッドだけではなくクレジットによるフロー制御を考慮して決定でき、転送速度の低下を抑止することが可能な情報処理装置、情報処理システム、情報処理方法、およびプログラムを提供することにある。
【課題を解決するための手段】
【０００９】
本発明の第１の観点の情報処理装置は、対向機器との間で、パケット単位でデータをシリアル転送するシリアル転送インタフェースと、上記シリアル転送インタフェースのデータ転送制御を行う転送制御部と、設定された送信パケットの最大データサイズに応じて上記転送制御部により制御される上記シリアル転送インタフェースのデータ転送実行中のデータサイズを含むデータ転送状態を監視し、監視状態に応じて次に送信すべき送信パケットの最大データサイズを判定して変更可能で、判定した最大データサイズを上記転送制御部に供給する転送状態監視部と、を有し、上記転送制御部は、上記転送状態監視部により供給される送信パケットの最大データサイズに応じて、上記シリアル転送インタフェースのデータ転送制御を行う。
【００１０】
本発明の第２の観点の情報処理システムは、シリアル転送によりデータを送信する送信側装置と、上記送信側装置から送信されたデータを受信し、受信データを受信バッファに格納し、上記送信側装置に対して当該受信バッファの開放通知を行う受信側装置と、を有し、上記送信側装置は、上記受信側装置との間で、パケット単位でデータをシリアル転送するシリアル転送インタフェースと、上記シリアル転送インタフェースのデータ転送制御を行う転送制御部と、設定された送信パケットの最大データサイズに応じて上記転送制御部により制御される上記シリアル転送インタフェースのデータ転送実行中のデータサイズを含むデータ転送状態を監視し、監視状態に応じて次に送信すべき送信パケットの最大データサイズを判定して変更可能で、判定した最大データサイズを上記転送制御部に供給する転送状態監視部と、を含み、上記転送制御部は、上記転送状態監視部により供給される送信パケットの最大データサイズに応じて、上記シリアル転送インタフェースのデータ転送制御を行う。
【００１１】
本発明の第３の観点の情報処理方法は、対向機器との間で、パケット単位でデータをシリアル転送インタフェースによりシリアル転送するシリアル転送ステップと、上記シリアル転送インタフェースのデータ転送制御を行う転送制御ステップと、設定された送信パケットの最大データサイズに応じて上記転送制御ステップにより制御される上記シリアル転送インタフェースのデータ転送実行中のデータサイズを含むデータ転送状態を監視し、監視状態に応じて次に送信すべき送信パケットの最大データサイズを判定して変更可能で、判定した最大データサイズを上記転送制御ステップに供給する転送状態監視ステップと、を有し、上記転送制御ステップでは、上記転送状態監視ステップにより供給される送信パケットの最大データサイズに応じて、上記シリアル転送インタフェースのデータ転送制御を行う。
【００１２】
本発明の第４の観点は、対向機器との間で、パケット単位でデータをシリアル転送インタフェースによりシリアル転送するシリアル転送処理と、上記シリアル転送インタフェースのデータ転送制御を行う転送制御処理と、設定された送信パケットの最大データサイズに応じて上記転送制御処理により制御される上記シリアル転送インタフェースのデータ転送実行中のデータサイズを含むデータ転送状態を監視し、監視状態に応じて次に送信すべき送信パケットの最大データサイズを判定して変更可能で、判定した最大データサイズを上記転送制御ステップに供給する転送状態監視処理と、を有し、上記転送制御処理では、上記転送状態監視処理により供給される送信パケットの最大データサイズに応じて、上記シリアル転送インタフェースのデータ転送制御を行う情報処理をコンピュータに実行させるプログラムである。
【発明の効果】
【００１３】
本発明によれば、データ転送を行う際のデータサイズをパケット化のオーバヘッドだけではなくクレジットによるフロー制御を考慮して決定でき、転送速度の低下を抑止することができる。
【図面の簡単な説明】
【００１４】
【図１】本発明の第１の実施形態に適用される情報処理システムの概略構成例を示す図である。
【図２】ＰＣＩ Ｅｘｐｒｅｓｓのパケット構成を示す図である。
【図３】本実施形態に係る転送速度測定回路の構成例を示す図である。
【図４】本実施形態に係る転送速度測定回路における転送速度測定処理を説明するための図である。
【図５】本実施形態に係るＤＭＡコントローラのＤＭＡ転送処理について説明するためのフローチャートである。
【図６】本第１の実施形態に係る最大データサイズ判定部の第１の判定処理における最大データサイズの設定処理について説明するためのフローチャートである。
【図７】本第１の実施形態に係る最大データサイズ判定部の第２の判定処理における最大データサイズの設定処理について説明するためのフローチャートである。
【図８】本第１の実施形態に係る最大データサイズ判定部の第３の判定処理における最大データサイズの設定処理について説明するためのフローチャートである。
【図９】本発明の第２の実施形態に適用される情報処理システムの概略構成例を示す図である。
【図１０】本第２の実施形態に係るストール時間測定回路の構成例を示す図である。
【図１１】本第２の実施形態に係るストール時間定回路におけるストール時間測定処理を説明するための図である。
【図１２】本第２の実施形態に係る最大データサイズ判定部の第４の判定処理における最大データサイズの設定処理について説明するためのフローチャートである。
【図１３】本第２の実施形態に係る最大データサイズ判定部の第５の判定処理における最大データサイズの設定処理について説明するためのフローチャートである。
【図１４】本第２の実施形態に係る最大データサイズ判定部の第６の判定処理における最大データサイズの設定処理について説明するためのフローチャートである。
【発明を実施するための形態】
【００１５】
以下、本発明の実施形態を添付図面に関連付けて説明する。
なお、説明は以下の順序で行う。
１．第１の実施形態（情報処理システムの第１の構成例）
２．第２の実施形態（情報処理システムの第２の構成例）
【００１６】
＜１．第１の実施形態＞
図１は、本発明の第１の実施形態に適用される情報処理システムの概略構成例を示す図である。
【００１７】
この情報処理システム１は、ホスト機器１０と情報処理装置２０が高速のシリアル転送インタフェース（Ｉ／Ｆ）バス３０により接続されて構成されている。
シリアル転送Ｉ／Ｆとしては、たとえばＰＣＩ（Peripheral Component Interconnect） Ｅｘｐｒｅｓｓの高速バスが適用される。
本実施形態において、情報処理装置２０は、フラッシュメモリ等の不揮発性メモリを搭載したストレージシステムとして形成され、たとえばホスト機器１０に着脱自在に装着可能なストレージ機器として形成される。
【００１８】
ホスト機器１０は、パーソナルコンピュータ、デジタルスチルカメラ、デジタルビデオカメラ、オーディオレコーダ等の機器により形成される。
ホスト機器１０は、ＣＰＵ１１、メモリ１２、データバッファ１３、および外部シリアル転送Ｉ／Ｆ１４、たとえばＰＣＩ Ｅｘｐｒｅｓｓ Ｉ／Ｆ１４を有する。
ＣＰＵ１１は、メモリ１２、データバッファ１３、および外部シリアル転送Ｉ／Ｆ１４と、バス１５を介し相互に接続されている。
メモリ１２は、プログラム格納用のＲＯＭ、作業用メモリであるＲＡＭ等を有する。
データバッファ１３は、ホスト機器１０がシステム上において受信側装置として機能する場合には、受信バッファとして機能する。
受信側装置として機能する場合のホスト機器１０は、送信側装置である情報処理装置２０から送信されたデータを受信し、受信データをデータバッファ１３に格納し、処理が終了すると情報処理装置２０に対してデータバッファ１３の開放通知を行う。
外部シリアル転送Ｉ／Ｆ１４は、ＣＰＵ１１の制御命令に従って情報処理装置２０との間で、パケット単位でデータをシリアル転送する。
【００１９】
情報処理装置２０は、ＣＰＵ２１、メモリ２２、コントロールレジスタ２３、フラッシュメモリ等の不揮発性メモリ２４、不揮発性メモリコントローラ２５、および外部シリアル転送Ｉ／Ｆ２６、たとえばＰＣＩ Ｅｘｐｒｅｓｓ Ｉ／Ｆ２６を有する。
情報処理装置２０は、ＤＭＡ（Direct Memory Access）コントローラ２７、転送残りデータサイズ取得部としての転送残りバイト数カウンタ２８、アドレス境界データサイズ取得部としての４ｋ境界バイト数計算回路２９、および転送状態監視部３０を有する。
ＤＭＡコントローラ２７は、転送制御部として機能する。
【００２０】
ＣＰＵ２１は、メモリ２２、コントロールレジスタ２３、不揮発性メモリコントローラ２５、外部シリアル転送Ｉ／Ｆ（たとえばＰＣＩ Ｅｘｐｒｅｓｓ Ｉ／Ｆ）２６、およびＤＭＡコントローラ２７と、バス３１を介し相互に接続されている。
メモリ２２は、プログラム格納用のＲＯＭ、作業用メモリであるＲＡＭ等を有する。
コントロールレジスタ２３は、外部シリアル転送Ｉ／Ｆ（たとえばＰＣＩ Ｅｘｐｒｅｓｓ Ｉ／Ｆ）２６を通してホスト機器１０からコマンドを受信する。ホスト機器１０かからのコマンドには不揮発性メモリ２４へのライトコマンドやリードコマンドが含まれる。
コントロールレジスタ２３への設定の内容に応じてＣＰＵ２１は、ＤＭＡコントローラ２７、不揮発性メモリコントローラ２５の設定を行い、処理を開始する。
不揮発性メモリ２４は、たとえば、ＮＯＲ型またはＮＡＮＤ型のフラッシュメモリ（不揮発性メモリ）により形成される。
【００２１】
外部シリアル転送Ｉ／Ｆ（たとえばＰＣＩ Ｅｘｐｒｅｓｓ Ｉ／Ｆ）２６は、ＣＰＵ２１の制御命令に従ったＤＭＡコントローラ２７の制御の下、ホスト機器１０との間で、パケット単位でデータをシリアル転送により送受する。
外部シリアル転送Ｉ／Ｆとして、たとえばＰＣＩ Ｅｘｐｒｅｓｓ Ｉ／Ｆを適用した場合には、以下のような制限を考慮してデータの授受を行う必要がある。
【００２２】
一の制限として、情報処理装置２０されるホスト機器１０の転送能力、たとえば書き込みのときのペイロードの最大の大きさを示す最大ペイロードサイズ（Max Payload Size）等を考慮し、これらのサイズを超えないようにデータの授受を行う必要がある。
また、他の制限として、バスの規定により、所定のアドレス境界をまたいだアクセスを行うパケットの生成は禁止されている。
たとえば、ＰＣＩ Ｅｘｐｒｅｓｓの仕様では、４ｋアドレス境界（パーソナルコンピュータにおけるページ境界）をまたいだアクセスを行うパケットの生成は禁止されている。したがって、この４ｋアドレス境界をまたいだ転送を行わないようにする必要がある。
【００２３】
転送制御部としてのＤＭＡコントローラ２７は、転送残りバイト数カウンタ２８、４ｋ境界バイト数計算回路２９、および転送状態監視部３０により供給される送信パケットの最大データサイズ情報に応じて、シリアル転送Ｉ／Ｆ２６のデータ転送制御を行う。
ＤＭＡコントローラ２７は、転送残りバイト数カウンタ２８、４ｋ境界バイト数計算回路２９、および転送状態監視部３０から得られる情報をもとに、送信パケットのデータサイズを決定し、シリアル転送Ｉ／Ｆ２６にパケット送信要求を行う。
ＤＭＡコントローラ２７は、転送残りバイト数カウンタ２８で得られる第１データサイズまたは４ｋ境界バイト数計算回路２９で得られる第２データサイズが、設定される最大データサイズより小さいか否かで送信パケットのデータサイズを次のように決定する。
小さい場合、ＤＭＡコントローラ２７は、第１データサイズおよび第２データサイズのうち小さいものを送信パケットのデータサイズとする。
小さくない場合、ＤＭＡコントローラ２７は、転送状態監視部３０により供給される最大データサイズを送信パケットのデータサイズとする。
第１データサイズは、転送残りバイト数カウンタ２８によるＤＭＡ転送残りバイト数ｒｅｍａｉｎ＿ｓｉｚｅが適用され、第２データサイズは４ｋ境界バイト数計算回路２９による４ｋＢｙｔｅ境界までのバイト数ｂｏｕｎｄ４ｋ＿ｄｉｆｆが適用される。
ダイレクトメモリアクセス（Direct Memory Access）とは、機械語の命令群によらず、メモリとメモリまたはメモリとI/Oデバイスの間で直接データを転送することである。ＤＭＡコントローラとは、ＤＭＡ機能を制御するためのコントローラである。
ＤＭＡの機能を用いたデータ転送には、データ転送アドレスおよびデータ転送サイズなどのデータ転送制御情報が記載された記述子が用いられてデータ転送が行われる。
【００２４】
図２は、ＰＣＩ Ｅｘｐｒｅｓｓのパケット構成を示す図である。
【００２５】
図２において、ＳＴＰ１００、ＥＮＤ１０６はそれぞれパケットの先頭、末尾を示す。
Ｓｅｑ Ｎｕｍ１０１はシーケンス番号を、Ｈｅａｄｅｒ１０２はヘッダを、Ｄａｔａ１０３は転送されるデータ本体を、それぞれ示している。
ＥＣＲＣ１０４、ＬＣＲＣ１０５は誤り検出用のＣＲＣを示し、ＥＣＲＣの付加はオプションである。
図２に示されるように、パケットにはデータ本体１０３のほかヘッダ１０２などの付加情報が含まれる。Ｄａｔａ１０３のサイズを大きくすると、パケット化に伴うオーバヘッドの影響を軽減することができる。
【００２６】
転送残りデータサイズ取得部としての転送残りバイト数カウンタ２８は、転送データの残りのバイト数をカウントし、その結果をＤＭＡコントローラ２７に供給する。
【００２７】
アドレス境界データサイズ取得部としての４ｋ境界バイト数計算回路２９は、４ｋバイト境界までのバイト数を計算し、その結果をＤＭＡコントローラ２７に供給する。
【００２８】
転送状態監視部３０は、設定された送信パケットの最大データサイズに応じてＤＭＡコントローラ２７により制御される外部シリアル転送Ｉ／Ｆ２６のデータ転送実行中のデータサイズ（データ量）を含むデータ転送状態を監視する。
転送状態監視部３０は、監視状態に応じて次に送信すべき送信パケットの最大データサイズを判定して変更可能で、判定した最大データサイズをＤＭＡコントローラ２７に供給する。
【００２９】
本実施形態の転送状態監視部３０は、転送速度取得部としての転送速度測定回路３１０および最大データサイズ判定部３２０を含んで構成される。
転送速度測定回路３１０は、シリアル転送Ｉ／Ｆ２６のデータ転送実行中のデータサイズを含むデータ転送状態情報から転送速度を測定する（取得する）。
このデータ転送状態情報には、シリアル転送Ｉ／Ｆ２６がＤＭＡ転送中であることを示すＤＭＡ転送中信号ＳＤＴ、転送中のパケットのデータサイズ（量）信号ＳＴＬ、およびパケット転送が正常終了したか否かを示すパケット転送正常終了信号ＳＰＴＮＥを含む。
【００３０】
図３は、本実施形態に係る転送速度測定回路の構成例を示す図である。
図４は、本実施形態に係る転送速度測定回路における転送速度測定処理を説明するための図である。
【００３１】
図３の転送速度測定回路３１０は、転送済みバイト数カウンタ３１１および転送時間カウンタ３１２を有する。
ここで、シリアル転送Ｉ／Ｆ２６としては、上述したようにたとえばＰＣＩ Ｅｘｐｒｅｓｓ Ｉ／Ｆが適用される。
以下に、本実施形態に係る転送速度測定処理を図３および図４に関連付けて説明する。
【００３２】
シリアル転送Ｉ／Ｆ２６は、転送速度測定回路３１０に対しＤＭＡ転送中か否かを示すＤＭＡ転送中信号ＳＤＴ、転送中パケットデータサイズ（Ｌｅｎｇｔｈ）信号ＳＴＬ、パケット転送が正常終了したか否かを示すパケット転送正常終了信号ＳＰＴＮＥを通知する。
シリアル転送Ｉ／Ｆ２６は、ＤＭＡコントローラ２７からデータ転送要求信号Ｓ２７を受けデータを転送中、ＤＭＡ転送中信号ＳＤＴをアクティブのハイレベル（Ｈレベル）に設定する。シリアル転送Ｉ／Ｆ２６は、ＤＭＡ転送中信号ＳＤＴはデータ転送を終了すると非アクティブのローレベル（Ｌレベル）とする。
シリアル転送Ｉ／Ｆ２６は、パケットの転送が正常に終了するたびにパケット転送正常終了信号ＳＰＴＮＥをハイレベル（Ｈ）に設定する。
【００３３】
転送済みバイト数カウンタ３１１は、ＤＭＡ転送中信号ＳＤＴがＬレベルからＨレベルの切り替わるときにカウント値をリセット（０にクリア）する。
転送済みバイト数カウンタ３１１は、パケット転送正常終了信号ＳＰＴＮＥがＨレベルになるたびに、転送中パケットデータサイズ（Ｌｅｎｇｔｈ）分カウンタを、たとえばインクリメントする。
転送時間カウンタ３１２は、ＤＭＡ転送中信号ＳＤＴがＬレベルからＨレベルに切り替わるときにカウント値をリセット（０にクリア）する。転送時間カウンタ３１２は、ＤＭＡ転送中カウンタをインクリメントする。
転送時間カウンタ３１２は、ＤＭＡ転送中信号ＳＤＴがＨレベルからＬレベルに切り替わったときにカウント動作を停止する。
そして、転送速度測定回路３１０は、ＤＭＡ転送中信号ＳＤＴがＨレベルからＬレベルに切り替わると、転送済みバイト数カウンタ３１１のカウント値を転送時間カウンタ３１２のカウント値で割ることで転送速度を得ることができる。
転送速度測定回路３１０は、取得した転送速度を最大データサイズ判定部３２０に供給する。
【００３４】
最大データサイズ判定部３２０は、転送速度測定回路３１０により取得された転送速度情報と設定された最大データサイズｍａｘ＿ｔｒａｎｓｓｉｚｅとの関係に基づいて、送信すべき送信パケットの最大データサイズを判定する機能を有する。
そして、最大データサイズ判定部３２０は、送信パケットの最大データサイズを変更可能な機能を有し、変更した最大データサイズｍａｘ＿ｔｒａｎｓｓｉｚｅをＤＭＡコントローラ２７に供給する。
ＤＭＡコントローラ２７は、所定の条件に基づいて最大データサイズ判定部３２０により供給される最大データサイズｍａｘ＿ｔｒａｎｓｓｉｚｅに基づいてシリアル転送Ｉ／Ｆ２６の転送制御を行う。
【００３５】
最大データサイズ判定部３２０は、送信パケットの最大データサイズを変更後に転送速度測定回路３１０で取得された転送速度が向上したか否かを判定する機能を有する。
最大データサイズ判定部３２０は、転送速度が向上している場合には、送信パケットの最大データサイズをさらに変更して（減少または増加させて）、再度、転送速度が向上したか否かを判定する。
最大データサイズ判定部３２０は、最大データサイズを減少後転送速度が向上している場合には、クレジット不足による転送速度低下が緩和されたとして、送信パケットの最大データサイズをさらに減少させて同様の処理を行う。最大データサイズを増加後転送速度が向上している場合には、パケット化に伴うオーバヘッドの影響が緩和されたと判断し、送信パケットの最大データサイズをさらに増加させて同様の処理を行う。
最大データサイズ判定部３２０は、最大データサイズを減少後転送速度が向上してない場合には、パケット化に伴うオーバヘッドの影響が主体となったと判断する。最大データサイズ判定部３２０は、最大データサイズを増加後転送速度が向上してない場合には、クレジット不足による転送速度低下が発生したと判断し、変更前（たとえば前回）の最大データサイズに戻す機能を有する。
【００３６】
本第１の実施形態において、転送状態監視部３０の最大データサイズ判定部３２０は、たとえば以下に示す第１から第３の判定処理を行う。
第１から第３の判定処理の概要を説明した後、具体的な処理をフローチャートに関連付けて説明する。
なお、本実施形態においては、設定される送信パケットの最大データサイズｍａｘ＿ｔｒａｎｓｓｉｚｅは、設定範囲の最小な値である最小値ｍｉｎ＿ｔｒａｎｓｓｉｚｅおよび最大の値である最大値ｌｉｍｉｔ＿ｔｒａｎｓｓｉｚｅがあらかじめ規定されている。
【００３７】
［第１の判定処理の概要］
第１の判定処理において、最大データサイズ判定部３２０は、最大データサイズｍａｘ＿ｔｒａｎｓｓｉｚｅの初期値として規定される最大ペイロードサイズＭａｘＰａｙｌｏａｄＳｉｚｅに設定する。
最大データサイズ判定部３２０は、転送速度測定回路３１０により取得された転送速度情報と最大データサイズの最小値ｍｉｎ＿ｔｒａｎｓｓｉｚｅとの関係に基づいて、送信パケットの現最大データサイズが最小値に達したか否かを判定する。
最大データサイズ判定部３２０は、現最大データサイズが最小値に達していない場合には、送信パケットの最大データサイズを所定サイズ減少させ、最大データサイズを減少後に転送速度測定回路３１０で取得された転送速度が向上したか否かを判定する。
最大データサイズ判定部３２０は、転送速度が向上している場合には、現最大データサイズが最小値に達していないことを条件とし、送信パケットの最大データサイズをさらに減少させる。
そして、最大データサイズ判定部３２０は、この最大データサイズを減少後に転送速度測定回路３１０で取得された転送速度が向上したか否かを判定し、転送速度が向上してない場合には、変更前の最大データサイズに戻す。
【００３８】
［第２の判定処理の概要］
第２の判定処理において、最大データサイズ判定部３２０は、最大データサイズｍａｘ＿ｔｒａｎｓｓｉｚｅの初期値として規定される最大データサイズの最小値ｍｉｎ＿ｔｒａｎｓｓｉｚｅに設定する。
最大データサイズ判定部３２０は、転送速度測定回路３１０により取得された転送速度情報と最大データサイズの最大値ｌｉｍｉｔ＿ｔｒａｎｓｓｉｚｅとの関係に基づいて、送信パケットの現最大データサイズが最大値に達したか否かを判定する。
最大データサイズ判定部３２０は、現最大データサイズが最大値に達していない場合には、送信パケットの最大データサイズを所定サイズ増加させ、最大データサイズを増加後に転送速度測定回路３１０で取得された転送速度が向上したか否かを判定する。
最大データサイズ判定部３２０は、転送速度が向上している場合には、現最大データサイズが最大値に達していないことを条件とし、送信パケットの最大データサイズをさらに増加させる。
そして、最大データサイズ判定部３２０は、この最大データサイズを増加後に転送速度取得部で取得された転送速度が向上したか否かを判定し、転送速度が向上してない場合には、変更前の最大データサイズに戻す。
【００３９】
［第３の判定処理の概要］
第３の判定処理において、最大データサイズ判定部３２０は、最大データサイズｍａｘ＿ｔｒａｎｓｓｉｚｅをあらかじめ設定された初期値ｉｎｉｔ＿ｔｒａｎｓｓｉｚｅに設定する。
最大データサイズ判定部３２０は、転送速度測定回路３１０により取得された転送速度情報と最大データサイズの最大値ｌｉｍｉｔ＿ｔｒａｎｓｓｉｚｅとの関係に基づいて、送信パケットの現最大データサイズが最大値に達したか否かを判定する。
最大データサイズ判定部３２０は、現最大データサイズが最大値に達していない場合には、送信パケットの最大データサイズを所定サイズ増加させ、最大データサイズを増加後に転送速度測定回路３１０で取得された転送速度が向上したか否かを判定する。
最大データサイズ判定部３２０は、転送速度が向上している場合には、第１処理を行い、現最大データサイズが上記最大値に達している場合、または、転送速度が向上してない場合には、変更前の最大データサイズに戻して第２処理を行う。
【００４０】
［第３の判定処理における第１処理］
第１処理として、最大データサイズ判定部３２０は、送信パケットの現最大データサイズが最大値ｌｉｍｉｔ＿ｔｒａｎｓｓｉｚｅに達したか否かを判定する。
最大データサイズ判定部３２０は、現最大データサイズが最大値に達していない場合には、送信パケットの最大データサイズを所定サイズ増加させ、最大データサイズを増加後に転送速度測定回路３１０で取得された転送速度が向上したか否かを判定する。
最大データサイズ判定部３２０は、転送速度が向上している場合には、現最大データサイズが最大値に達していないことを条件とし、送信パケットの最大データサイズをさらに増加させる。
そして、最大データサイズ判定部３２０は、この最大データサイズを増加後に転送速度測定回路３１０で取得された転送速度が向上したか否かを判定し、転送速度が向上してない場合には、変更前の最大データサイズに戻す。
【００４１】
［第３の判定処理における第２処理］
第２処理として、最大データサイズ判定部３２０は、送信パケットの現最大データサイズが最小値ｍｉｎ＿ｔｒａｎｓｓｉｚｅに達したか否かを判定する。
最大データサイズ判定部３２０は、現最大データサイズが最小値に達していない場合には、送信パケットの最大データサイズを所定サイズ減少させ、最大データサイズを減少後に転送速度測定回路３１０で取得された転送速度が向上したか否かを判定する。
最大データサイズ判定部３２０は、転送速度が向上している場合には、現最大データサイズが最小値に達していないことを条件とし、上記送信パケットの最大データサイズをさらに減少させる。
そして、最大データサイズ判定部３２０は、最大データサイズを減少後に転送速度測定回路３１０で取得された転送速度が向上したか否かを判定し、転送速度が向上してない場合には、変更前の最大データサイズに戻す。
【００４２】
なお、第１の判定処理機能、第２の判定処理機能、第３の判定処理機能は、個別、あるいは複数またはすべてを持つことも可能であり、また、適宜組み合わせて適用することも可能である。
【００４３】
次に、第１の判定処理、第２の判定処理、第３の判定処理の具体例をフローチャートに関連付けて説明する。
ここでは、第１から第３の判定処理を説明する前の、まず、ＤＭＡコントローラ２７におけるＤＭＡ転送処理について説明する。
【００４４】
図５は、本実施形態に係るＤＭＡコントローラのＤＭＡ転送処理について説明するためのフローチャートである。
【００４５】
ＤＭＡコントローラ２７は、転送残りバイト数カウンタ２８、４ｋ境界バイト数計算回路２９、および最大データサイズ判定部３２０から得られる情報をもとに、送信パケットのデータサイズを決定し、シリアル転送Ｉ／Ｆ２６にパケット送信要求を行う。
【００４６】
ＤＭＡコントローラ２７は、転送残りバイト数カウンタ２８によるＤＭＡ転送残りバイト数ｒｅｍａｉｎ＿ｓｉｚｅ、または４ｋ境界バイト数計算回路２９による４ｋＢｙｔｅ境界までのバイト数ｂｏｕｎｄ４ｋ＿ｄｉｆｆが、所定条件を満足するか否か判別する。
すなわち、ＤＭＡコントローラ２７は、ＤＭＡ転送残りバイト数ｒｅｍａｉｎ＿ｓｉｚｅ、または４ｋＢｙｔｅ境界までのバイト数ｂｏｕｎｄ４ｋ＿ｄｉｆｆが、最大データサイズｍａｘ＿ｔｒａｎｓｓｉｚｅ未満であるか否かを判別する（ＳＴ１）。
ＤＭＡコントローラ２７は、ステップＳＴ１で未満であると判別すると、以下の処理を行う。
ＤＭＡコントローラ２７は、ＤＭＡ転送残りバイト数ｒｅｍａｉｎ＿ｓｉｚｅおよび４ｋＢｙｔｅ境界までのバイト数ｂｏｕｎｄ４ｋ＿ｄｉｆｆのうち小さい方をデータサイズとしてＭｅｍｏｒｙ Ｗｒｉｔｅ Ｒｅｑｕｅｓｔを送信する（ＳＴ２）。
なお、Ｍｅｍｏｒｙ Ｗｒｉｔｅ Ｒｅｑｕｅｓｔはデータ送信に用いられるパケットである。
ＤＭＡコントローラ２７は、ステップＳＴ１で未満でないと判別すると、以下の処理を行う。
ＤＭＡコントローラ２７は、最大データサイズ判定部３２０により供給される最大データサイズｍａｘ＿ｔｒａｎｓｓｉｚｅをデータサイズ（Ｌｅｎｇｔｈ）としてＭｅｍｏｒｙ Ｗｒｉｔｅ Ｒｅｑｕｅｓｔを送信する（ＳＴ３）。
ＤＭＡコントローラ２７は、ステップＳＴ１からＳＴ３の処理を転送が終了するまで繰り返す（ＳＴ４）。
【００４７】
［第１の判定処理における最大データサイズの具体的な設定例］
次に、本第１の実施形態に係る最大データサイズ判定部３２０の第１の判定処理における最大データサイズｍａｘ＿ｔｒａｎｓｓｉｚｅの設定処理について説明する。
図６は、本第１の実施形態に係る最大データサイズ判定部の第１の判定処理における最大データサイズｍａｘ＿ｔｒａｎｓｓｉｚｅの設定処理について説明するためのフローチャートである。
【００４８】
最大データサイズ判定部３２０は、最大データサイズｍａｘ＿ｔｒａｎｓｓｉｚｅの初期値として規定される最大ペイロードサイズＭａｘＰａｙｌｏａｄＳｉｚｅに設定する（ＳＴ１０）。
この設定された最大データサイズに基づいてＤＭＡコントローラ２７の制御の下、シリアル転送Ｉ／Ｆ２６を通してＤＭＡ転送が実行され（ＳＴ１１）、そのときの転送速度が転送速度測定回路３１０で測定される（ＳＴ１２）。
最大データサイズ判定部３２０は、転送速度測定回路３１０により取得された転送速度情報と最大データサイズの最小値ｍｉｎ＿ｔｒａｎｓｓｉｚｅとの関係に基づいて、送信パケットの現最大データサイズが最小値に達したか否かを判定する（ＳＴ１３）。
最大データサイズ判定部３２０は、現最大データサイズが最小値に達していない場合には、送信パケットの最大データサイズを所定サイズ減少させる（ＳＴ１４）。
この減少させて設定された最大データサイズに基づいてＤＭＡコントローラ２７の制御の下、シリアル転送Ｉ／Ｆ２６を通してＤＭＡ転送が実行され（ＳＴ１５）、そのときの転送速度が転送速度測定回路３１０で再度測定される（ＳＴ１６）。
そして、最大データサイズ判定部３２０は、最大データサイズを減少後に転送速度測定回路３１０で取得された転送速度が前回測定した転送速度に対して向上したか否かを判定する（ＳＴ１７）。
最大データサイズ判定部３２０は、転送速度が向上している場合には、クレジット不足による転送速度低下が緩和されたと判断し、ステップＳＴ１３の処理に戻り、現最大データサイズが最小値に達するまで、ステップＳＴ１４からＳＴ１７の処理を繰り返す。
そして、最大データサイズ判定部３２０は、ステップＳＴ１７で転送速度が向上してない場合には、パケット化に伴うオーバヘッドの影響が主体となったと判断し、変更前（たとえば前回）の最大データサイズに戻す（ＳＴ１８）。
【００４９】
［第２の判定処理における最大データサイズの具体的な設定例］
次に、本第１の実施形態に係る最大データサイズ判定部３２０の第２の判定処理における最大データサイズｍａｘ＿ｔｒａｎｓｓｉｚｅの設定処理について説明する。
図７は、本第１の実施形態に係る最大データサイズ判定部の第２の判定処理における最大データサイズｍａｘ＿ｔｒａｎｓｓｉｚｅの設定処理について説明するためのフローチャートである。
【００５０】
最大データサイズ判定部３２０は、最大データサイズｍａｘ＿ｔｒａｎｓｓｉｚｅの初期値として規定される最大データサイズの最小値ｍｉｎ＿ｔｒａｎｓｓｉｚｅに設定する
（ＳＴ２０）。
この設定された最大データサイズに基づいてＤＭＡコントローラ２７の制御の下、シリアル転送Ｉ／Ｆ２６を通してＤＭＡ転送が実行され（ＳＴ２１）、そのときの転送速度が転送速度測定回路３１０で測定される（ＳＴ２２）。
最大データサイズ判定部３２０は、転送速度測定回路３２０により取得された転送速度情報と最大データサイズの最大値ｌｉｍｉｔ＿ｔｒａｎｓｓｉｚｅとの関係に基づいて、送信パケットの現最大データサイズが最大値に達したか否かを判定する（ＳＴ２３）。
最大データサイズ判定部３２０は、現最大データサイズが最大値に達していない場合には、送信パケットの最大データサイズを所定サイズ増加させる（ＳＴ２４）。
この増加させて設定された最大データサイズに基づいてＤＭＡコントローラ２７の制御の下、シリアル転送Ｉ／Ｆ２６を通してＤＭＡ転送が実行され（ＳＴ２５）、そのときの転送速度が転送速度測定回路３１０で再度測定される（ＳＴ２６）。
そして、最大データサイズ判定部３２０は、最大データサイズを増加後に転送速度測定回路３１０で取得された転送速度が前回測定した転送速度に対して向上したか否かを判定する（ＳＴ２７）。
最大データサイズ判定部３２０は、転送速度が向上している場合には、パケット化に伴うオーバヘッドの影響が緩和されたと判断し、ステップＳＴ２３の処理に戻り、現最大データサイズが最大値に達するまで、ステップＳＴ２４からＳＴ２７の処理を繰り返す。
そして、最大データサイズ判定部３２０は、ステップＳＴ２７で転送速度が向上してない場合には、クレジット不足による転送速度低下が発生したと判断し、変更前（たとえば前回）の最大データサイズに戻す（ＳＴ２８）。
【００５１】
［第３の判定処理における最大データサイズの具体的な設定例］
次に、本第１の実施形態に係る最大データサイズ判定部３２０の第３の判定処理における最大データサイズｍａｘ＿ｔｒａｎｓｓｉｚｅの設定処理について説明する。
図８は、本第１の実施形態に係る最大データサイズ判定部の第３の判定処理における最大データサイズｍａｘ＿ｔｒａｎｓｓｉｚｅの設定処理について説明するためのフローチャートである。
【００５２】
最大データサイズ判定部３２０は、最大データサイズｍａｘ＿ｔｒａｎｓｓｉｚｅをあらかじめ設定された初期値ｉｎｉｔ＿ｔｒａｎｓｓｉｚｅに設定する（ＳＴ３０）。
この設定された最大データサイズに基づいてＤＭＡコントローラ２７の制御の下、シリアル転送Ｉ／Ｆ２６を通してＤＭＡ転送が実行され（ＳＴ３１）、そのときの転送速度が転送速度測定回路３１０で測定される（ＳＴ３２）。
最大データサイズ判定部３２０は、転送速度測定回路３１０により取得された転送速度情報と最大データサイズの最大値ｌｉｍｉｔ＿ｔｒａｎｓｓｉｚｅとの関係に基づいて、送信パケットの現最大データサイズが最大値に達したか否かを判定する（ＳＴ３３）。
最大データサイズ判定部３２０は、現最大データサイズが最大値に達していない場合には、送信パケットの最大データサイズを所定サイズ増加させる（ＳＴ３４）。
この増加させて設定された最大データサイズに基づいてＤＭＡコントローラ２７の制御の下、シリアル転送Ｉ／Ｆ２６を通してＤＭＡ転送が実行され（ＳＴ３５）、そのときの転送速度が転送速度測定回路３１０で再度測定される（ＳＴ３６）。
そして、最大データサイズ判定部３２０は、最大データサイズを増加後に転送速度測定回路３１０で取得された転送速度が前回測定した転送速度に対して向上したか否かを判定する（ＳＴ３７）。
最大データサイズ判定部３２０は、転送速度が向上している場合には、第１処理を行い、現最大データサイズが上記最大値に達している場合（ＳＴ３３）または転送速度が向上してない場合には、変更前の最大データサイズに戻して（ＳＴ３８）、第２処理を行う。
【００５３】
［第３の判定処理における第１処理の具体例］
第１処理として、最大データサイズ判定部３２０は、送信パケットの現最大データサイズが最大値ｌｉｍｉｔ＿ｔｒａｎｓｓｉｚｅに達したか否かを判定する（ＳＴ３９）。
最大データサイズ判定部３２０は、現最大データサイズが最大値に達していない場合には、送信パケットの最大データサイズを所定サイズ増加させる（ＳＴ４０）。
この増加させて設定された最大データサイズに基づいてＤＭＡコントローラ２７の制御の下、シリアル転送Ｉ／Ｆ２６を通してＤＭＡ転送が実行され（ＳＴ４１）、そのときの転送速度が転送速度測定回路３１０で再度測定される（ＳＴ４２）。
そして、最大データサイズ判定部３２０は、最大データサイズを増加後に転送速度測定回路３１０で取得された転送速度が前回測定した転送速度に対して向上したか否かを判定する（ＳＴ４３）。
最大データサイズ判定部３２０は、転送速度が向上している場合には、パケット化に伴うオーバヘッドの影響が緩和されたと判断し、ステップＳＴ３９の処理に戻り、現最大データサイズが最大値に達するまで、ステップＳＴ３９からＳＴ４３の処理を繰り返す。
そして、最大データサイズ判定部３２０は、ステップＳＴ４３で転送速度が向上してない場合には、クレジット不足により転送速度低下が発生したと判断し、変更前（たとえば前回）の最大データサイズに戻す（ＳＴ４４）。
【００５４】
［第３の判定処理における第２処理の具体例］
第２処理として、最大データサイズ判定部３２０は、送信パケットの現最大データサイズが最小値ｍｉｎ＿ｔｒａｎｓｓｉｚｅに達したか否かを判定する（ＳＴ４５）。
最大データサイズ判定部３２０は、現最大データサイズが最小値に達していない場合には、送信パケットの最大データサイズを所定サイズ減少させる（ＳＴ４６）。
この減少させて設定された最大データサイズに基づいてＤＭＡコントローラ２７の制御の下、シリアル転送Ｉ／Ｆ２６を通してＤＭＡ転送が実行され（ＳＴ４７）、そのときの転送速度が転送速度測定回路３１０で再度測定される（ＳＴ４８）。
そして、最大データサイズ判定部３２０は、最大データサイズを減少後に転送速度測定回路３１０で取得された転送速度が前回測定した転送速度に対して向上したか否かを判定する（ＳＴ４９）。
最大データサイズ判定部３２０は、転送速度が向上している場合には、クレジット不足による転送速度低下が緩和されたと判断し、ステップＳＴ４５の処理に戻り、現最大データサイズが最小値に達するまで、ステップＳＴ４５からＳＴ４９の処理を繰り返す。
そして、最大データサイズ判定部３２０は、ステップＳＴ４９で転送速度が向上してない場合には、パケット化に伴うオーバヘッドの影響が主体となったと判断し、変更前（たとえば前回）の最大データサイズに戻す（ＳＴ５０）。
【００５５】
＜２．第２の実施形態＞
図９は、本発明の第２の実施形態に適用される情報処理システムの概略構成例を示す図である。
【００５６】
本第２の実施形態に係る情報処理システム１Ａが第１の実施形態に係る情報処理システム１と異なる点は、次の通りである。
本情報処理システム１Ａは、情報処理装置１０Ａの転送状態監視部３０Ａに、クレジット不足でデータ送信がストールした時間を測定するストール時間（Ｔｓｔａｌｌ）測定回路３３０を追加したことにある。
これに伴い、最大データサイズ判定部３２０は、転送速度測定回路３１０で取得された転送速度に加えストール時間測定回路３３０で取得されるストール発生の有無情報を用いて最大データサイズの判定処理を行う。
【００５７】
図１０は、本実施形態に係るストール時間測定回路の構成例を示す図である。
図１１は、本実施形態に係るストール時間定回路におけるストール時間測定処理を説明するための図である。
【００５８】
図１０のストール時間測定回路３３０は、ストール時間（Ｔｓｔａｌｌ）カウンタ３３１を有する。
ＤＭＡ転送中、対向機器であるホスト機器１０の受信バッファ不足によりパケットを送信できない場合、シリアル転送Ｉ／Ｆ（ＰＣＩ Ｅｘｐｒｅｓｓ Ｉ／Ｆ）２６は対向機器の受信バッファ不足信号ＳＢＦＬをＨレベルに設定する。シリアル転送Ｉ／Ｆ２６は、受信バッファ不足が解消したら受信バッファ不足信号ＳＢＦＬをＬにする。
ストール時間測定回路３３０は、ＤＭＡ転送中信号ＳＤＴがＬレベルからＨレベルに切り替わるときに、ストール時間（Ｔｓｔａｌｌ）カウンタ３３１のカント値をリセット（０にクリア）する。
ＤＭＡ転送中、対向機器の受信バッファ不足信号ＳＢＦＬがＨレベルになっている期間、ストール時間（Ｔｓｔａｌｌ）測定回路３３０はストール時間（Ｔｓｔａｌｌ）カウンタ３３１をインクリメントする。
ＤＭＡ転送中信号がＨレベルからＬレベルに切り替わるとき、ストール時間（Ｔｓｔａｌｌ）測定回路３３０は、ストール時間（Ｔｓｔａｌｌ）カウンタ３３１のカウント値をストール時間（Ｔｓｔａｌｌ）測定値とする。
【００５９】
本第２の実施形態に係る最大データサイズ判定部３２０Ａは、ストール時間測定回路３３０の測定結果、並びに、転送速度取得部により取得された転送速度情報と上記設定された最大データサイズとの関係に基づいて、送信すべき送信パケットの最大データサイズを判定して、送信パケットの最大データサイズを変更可能である。
【００６０】
本第２の実施形態において、転送状態監視部３０Ａの最大データサイズ判定部３２０Ａは、たとえば以下に示す第４から第６の判定処理を行う。
第４から第６の判定処理の概要を説明した後、具体的な処理をフローチャートに関連付けて説明する。
なお、本実施形態においても、設定される送信パケットの最大データサイズｍａｘ＿ｔｒａｎｓｓｉｚｅは、設定範囲の最小な値である最小値ｍｉｎ＿ｔｒａｎｓｓｉｚｅおよび最大の値である最大値ｌｉｍｉｔ＿ｔｒａｎｓｓｉｚｅがあらかじめ規定されている。
【００６１】
［第４の判定処理の概要］
第４の判定処理において、最大データサイズ判定部３２０Ａは、最大データサイズｍａｘ＿ｔｒａｎｓｓｉｚｅの初期値として規定される最大ペイロードサイズＭａｘＰａｙｌｏａｄＳｉｚｅに設定する。
最大データサイズ判定部３２０Ａは、ストール時間測定回路３３０の測定結果によりストールが発生しているか否かを判定し、ストールが発生している場合、次の処理を行う。
最大データサイズ判定部３２０Ａは、転送速度測定回路３１０により取得された転送速度情報と最大データサイズの最小値ｍｉｎ＿ｔｒａｎｓｓｉｚｅとの関係に基づいて、送信パケットの現最大データサイズが最小値に達したか否かを判定する。
最大データサイズ判定部３２０Ａは、現最大データサイズが最小値に達していない場合には、送信パケットの最大データサイズを所定サイズ減少させる。
最大データサイズ判定部３２０Ａは、最大データサイズを減少後に、転送速度測定回路３１０で測定した転送速度が向上したか否かを判定する。
最大データサイズ判定部３２０Ａは、転送速度が向上している場合には、ストールが発生しているか否かを判定する。最大データサイズ判定部３２０Ａは、ストールが発生している場合には、現最大データサイズが最小値に達していないことを条件とし、送信パケットの最大データサイズをさらに減少させる。
そして、最大データサイズ判定部３２０Ａは、この最大データサイズを減少後に転送速度測定回路３１０で取得された転送速度が向上したか否かを判定する。
最大データサイズ判定部３２０Ａは、転送速度が向上してない場合には、変更前（たとえば前回）の最大データサイズに戻す。
最大データサイズ判定部３２０Ａは、ストールが発生してない場合には、フロー制御による転送速度低下が解消されたと判断し、処理を終了する。
【００６２】
［第５の判定処理の概要］
第５の判定処理において、最大データサイズ判定部３２０Ａは、最大データサイズｍａｘ＿ｔｒａｎｓｓｉｚｅの初期値として規定される最大データサイズの最小値ｍｉｎ＿ｔｒａｎｓｓｉｚｅに設定する。
最大データサイズ判定部３２０Ａは、ストール時間測定回路３３０の測定結果によりストールが発生しているか否かを判定し、ストールが発生していない場合、次の処理を行う。
最大データサイズ判定部３２０Ａは、転送速度測定回路３１０により取得された転送速度情報と最大データサイズの最大値Ｌｉｍｉｔ＿ｔｒａｎｓｓｉｚｅとの関係に基づいて、送信パケットの現最大データサイズが最大値に達したか否かを判定する。
最大データサイズ判定部３２０Ａは、現最大データサイズが最大値に達していない場合には、送信パケットの最大データサイズを所定サイズ増加させる。
最大データサイズ判定部３２０Ａは、最大データサイズを増加後に、転送速度測定回路３１０で測定した転送速度が向上したか否かを判定する。
最大データサイズ判定部３２０Ａは、転送速度が向上している場合には、ストールが発生しているか否かを判定する。最大データサイズ判定部３２０Ａは、ストールが発生していない場合には、現最大データサイズが最大値に達していないことを条件とし、送信パケットの最大データサイズをさらに増加させる。
そして、最大データサイズ判定部３２０Ａは、この最大データサイズを増加後に転送速度測定回路３１０で取得された転送速度が向上したか否かを判定する。
最大データサイズ判定部３２０Ａは、転送速度が向上してない場合には、変更前（たとえば前回）の最大データサイズに戻す。
最大データサイズ判定部３２０Ａは、ストールが発生している場合には、最大データサイズを増加させても転送速度向上が期待できないと判断し、処理を終了する。
【００６３】
［第６の判定処理の概要］
第６の判定処理において、最大データサイズ判定部３２０Ａは、最大データサイズｍａｘ＿ｔｒａｎｓｓｉｚｅをあらかじめ設定された初期値ｉｎｉｔ＿ｔｒａｎｓｓｉｚｅに設定する。
最大データサイズ判定部３２０Ａは、ストール時間測定回路３３０の測定結果によりストールが発生しているか否かを判定し、ストールが発生していな場合には第３処理を行い、ストールが発生している場合には第４処理を行う。
【００６４】
［第６の判定処理における第３処理］
第３処理として、最大データサイズ判定部３２０Ａは、送信パケットの現最大データサイズが最大値ｌｉｍｉｔ＿ｔｒａｎｓｓｉｚｅに達したか否かを判定する。
最大データサイズ判定部３２０Ａは、現最大データサイズが最大値に達していない場合には、送信パケットの最大データサイズを所定サイズ増加させ、最大データサイズを増加後に転送速度測定回路３１０で取得された転送速度が向上したか否かを判定する。
最大データサイズ判定部３２０Ａは、転送速度が向上している場合には、現最大データサイズが最大値に達していないことを条件とし、送信パケットの最大データサイズをさらに増加させる。
そして、最大データサイズ判定部３２０Ａは、この最大データサイズを増加後に転送速度測定回路３１０で取得された転送速度が向上したか否かを判定し、転送速度が向上してない場合には、変更前（たとえば前回）の最大データサイズに戻す。
【００６５】
［第６の判定処理における第４処理］
第４処理として、最大データサイズ判定部３２０Ａは、ストールが発生している場合には、次の処理を行う。
最大データサイズ判定部３２０Ａは、転送速度測定回路３１０により取得された転送速度情報と最大データサイズの最小値ｍｉｎ＿ｔｒａｎｓｓｉｚｅとの関係に基づいて、送信パケットの現最大データサイズが最小値に達したか否かを判定する。
最大データサイズ判定部３２０Ａは、現最大データサイズが最小値に達していない場合には、送信パケットの最大データサイズを所定サイズ減少させる。
最大データサイズ判定部３２０Ａは、最大データサイズを減少後に、転送速度測定回路３１０で測定した転送速度が向上したか否かを判定する。
最大データサイズ判定部３２０Ａは、転送速度が向上している場合には、ストールが発生しているか否かを判定する。最大データサイズ判定部３２０Ａは、ストールが発生している場合には、現最大データサイズが最小値に達していないことを条件とし、送信パケットの最大データサイズをさらに減少させる。
そして、最大データサイズ判定部３２０Ａは、この最大データサイズを減少後に転送速度測定回路３１０で取得された転送速度が向上したか否かを判定する。
最大データサイズ判定部３２０Ａは、転送速度が向上してない場合には、変更前（たとえば前回）の最大データサイズに戻す。
最大データサイズ判定部３２０Ａは、ストールが発生してない場合には、フロー制御による転送速度低下が解消されたと判断し、処理を終了する。
【００６６】
なお、第４の判定処理機能、第５の判定処理機能、第６の判定処理機能は、個別、あるいは複数またはすべてを持つことも可能であり、また、適宜組み合わせて適用することも可能である。
【００６７】
次に、第４の判定処理、第５の判定処理、第６の判定処理の具体例をフローチャートに関連付けて説明する。
【００６８】
［第４の判定処理における最大データサイズの具体的な設定例］
次に、本第２の実施形態に係る最大データサイズ判定部３２０の第４の判定処理における最大データサイズｍａｘ＿ｔｒａｎｓｓｉｚｅの設定処理について説明する。
図１２は、本実施形態に係る最大データサイズ判定部の第４の判定処理における最大データサイズｍａｘ＿ｔｒａｎｓｓｉｚｅの設定処理について説明するためのフローチャートである。
【００６９】
最大データサイズ判定部３２０Ａは、最大データサイズｍａｘ＿ｔｒａｎｓｓｉｚｅの初期値として規定される最大ペイロードサイズＭａｘＰａｙｌｏａｄＳｉｚｅに設定する（ＳＴ５０）。
この設定された最大データサイズに基づいてＤＭＡコントローラ２７の制御の下、シリアル転送Ｉ／Ｆ２６を通してＤＭＡ転送が実行され（ＳＴ５１）。これと並行して、そのときの転送速度が転送速度測定回路３１０で測定され、ストール時間（ストールの有無）がストール時間測定回路３３０で測定される（ＳＴ５２）。
最大データサイズ判定部３２０Ａは、ストール時間測定回路３３０の測定結果によりストールが発生しているか否かを判定し（ＳＴ５３）、ストールが発生している場合、次の処理を行う。
最大データサイズ判定部３２０Ａは、転送速度測定回路３１０により取得された転送速度情報と最大データサイズの最小値ｍｉｎ＿ｔｒａｎｓｓｉｚｅとの関係に基づいて、送信パケットの現最大データサイズが最小値に達したか否かを判定する（ＳＴ５４）。
最大データサイズ判定部３２０Ａは、現最大データサイズが最小値に達していない場合には、送信パケットの最大データサイズを所定サイズ減少させる（ＳＴ５５）。
この減少させて設定された最大データサイズに基づいてＤＭＡコントローラ２７の制御の下、シリアル転送Ｉ／Ｆ２６を通してＤＭＡ転送が実行される（ＳＴ５６）。これと並行して、そのときの転送速度が転送速度測定回路３１０で再度測定され、ストール時間（ストールの有無）がストール時間測定回路３３０で再度測定される（ＳＴ５７）。
そして、最大データサイズ判定部３２０Ａは、最大データサイズを減少後に転送速度測定回路３１０で取得された転送速度が前回測定した転送速度に対して向上したか否かを判定する（ＳＴ５８）。
最大データサイズ判定部３２０Ａは、転送速度が向上している場合には、ストールが発生しているか否かを判定する（ＳＴ５９）。
最大データサイズ判定部３２０Ａは、ストールが発生している場合には、現最大データサイズが最小値に達していないことを条件とし、送信パケットの最大データサイズをさらに減少させる。
そして、最大データサイズ判定部３２０Ａは、この最大データサイズを減少後に転送速度測定回路３１０で取得された転送速度が向上したか否かを判定する。
最大データサイズ判定部３２０Ａは、転送速度が向上してない場合には、変更前（たとえば前回）の最大データサイズに戻す（ＳＴ６０）。
最大データサイズ判定部３２０Ａは、ステップＳＴ５９でストールが発生していない場合には、フロー制御による転送速度低下が解消されたと判断し、処理を終了する。
また、最大データサイズ判定部３２０Ａは、ステップＳＴ５３でストールが発生してない場合には、フロー制御による転送速度低下がないと判断し、処理を終了する。
【００７０】
［第５の判定処理における最大データサイズの具体的な設定例］
次に、本第２の実施形態に係る最大データサイズ判定部３２０Ａの第５の判定処理における最大データサイズｍａｘ＿ｔｒａｎｓｓｉｚｅの設定処理について説明する。
図１３は、本第２の実施形態に係る最大データサイズ判定部の第５の判定処理における最大データサイズｍａｘ＿ｔｒａｎｓｓｉｚｅの設定処理について説明するためのフローチャートである。
【００７１】
最大データサイズ判定部３２０は、最大データサイズｍａｘ＿ｔｒａｎｓｓｉｚｅの初期値として規定される最大データサイズの最小値ｍｉｎ＿ｔｒａｎｓｓｉｚｅに設定する
（ＳＴ６０）。
この設定された最大データサイズに基づいてＤＭＡコントローラ２７の制御の下、シリアル転送Ｉ／Ｆ２６を通してＤＭＡ転送が実行され（ＳＴ６１）。これと並行して、そのときの転送速度が転送速度測定回路３１０で測定され、ストール時間（ストールの有無）がストール時間測定回路３３０で測定される（ＳＴ６２）。
最大データサイズ判定部３２０Ａは、ストール時間測定回路３３０の測定結果によりストールが発生しているか否かを判定し（ＳＴ６３）、ストールが発生していない場合、次の処理を行う。
最大データサイズ判定部３２０Ａは、転送速度測定回路３１０により取得された転送速度情報と最大データサイズの最大値ｌｉｍｉｔ＿ｔｒａｎｓｓｉｚｅとの関係に基づいて、送信パケットの現最大データサイズが最大値に達したか否かを判定する（ＳＴ６４）。
最大データサイズ判定部３２０Ａは、現最大データサイズが最大値に達していない場合には、送信パケットの最大データサイズを所定サイズ増加させる（ＳＴ６５）。
この増加させて設定された最大データサイズに基づいてＤＭＡコントローラ２７の制御の下、シリアル転送Ｉ／Ｆ２６を通してＤＭＡ転送が実行される（ＳＴ６６）。これと並行して、そのときの転送速度が転送速度測定回路３１０で再度測定され、ストール時間（ストールの有無）がストール時間測定回路３３０で再度測定される（ＳＴ６７）。
そして、最大データサイズ判定部３２０Ａは、最大データサイズを増加後に転送速度測定回路３１０で取得された転送速度が前回測定した転送速度に対して向上したか否かを判定する（ＳＴ６８）。
最大データサイズ判定部３２０Ａは、転送速度が向上している場合には、ストールが発生しているか否かを判定する（ＳＴ６９）。
最大データサイズ判定部３２０Ａは、ストールが発生していない場合には、現最大データサイズが最大値に達していないことを条件とし、送信パケットの最大データサイズをさらに減少させる。
そして、最大データサイズ判定部３２０Ａは、この最大データサイズを減少後に転送速度測定回路３１０で取得された転送速度が向上したか否かを判定する。
最大データサイズ判定部３２０Ａは、転送速度が向上してない場合には、変更前（たとえば前回）の最大データサイズに戻す（ＳＴ７０）。
最大データサイズ判定部３２０Ａは、ステップＳＴ６９でストールが発生している場合には、クレジット不足が発生したと判断し、処理を終了する。
また、最大データサイズ判定部３２０Ａは、ステップＳＴ６３でストールが発生している場合には、最大データサイズを増加させても転送速度向上が期待できないと判断し、処理を終了する。
【００７２】
［第６の判定処理における最大データサイズの具体的な設定例］
次に、本第２の実施形態に係る最大データサイズ判定部３２０Ａの第６の判定処理における最大データサイズｍａｘ＿ｔｒａｎｓｓｉｚｅの設定処理について説明する。
図１４は、本第２の実施形態に係る最大データサイズ判定部の第６の判定処理における最大データサイズｍａｘ＿ｔｒａｎｓｓｉｚｅの設定処理について説明するためのフローチャートである。
【００７３】
最大データサイズ判定部３２０Ａは、最大データサイズｍａｘ＿ｔｒａｎｓｓｉｚｅをあらかじめ設定された初期値ｉｎｉｔ＿ｔｒａｎｓｓｉｚｅに設定する（ＳＴ７０）。
この設定された最大データサイズに基づいてＤＭＡコントローラ２７の制御の下、シリアル転送Ｉ／Ｆ２６を通してＤＭＡ転送が実行され（ＳＴ７１）。これと並行して、そのときの転送速度が転送速度測定回路３１０で測定され、ストール時間（ストールの有無）がストール時間測定回路３３０で測定される（ＳＴ７２）。
最大データサイズ判定部３２０Ａは、ストール時間測定回路３３０の測定結果によりストールが発生しているか否かを判定し（ＳＴ７３）、ストールが発生していない場合第３処理を行い、ストールが発生している場合第４処理を行う。
【００７４】
［第６の判定処理における第３処理の具体例］
第１処理として、最大データサイズ判定部３２０Ａは、送信パケットの現最大データサイズが最大値ｌｉｍｉｔ＿ｔｒａｎｓｓｉｚｅに達したか否かを判定する（ＳＴ６４）。
最大データサイズ判定部３２０Ａは、現最大データサイズが最大値に達していない場合には、送信パケットの最大データサイズを所定サイズ増加させる（ＳＴ８５）。
この増加させて設定された最大データサイズに基づいてＤＭＡコントローラ２７の制御の下、シリアル転送Ｉ／Ｆ２６を通してＤＭＡ転送が実行され（ＳＴ８６）、そのときの転送速度が転送速度測定回路３１０で再度測定される（ＳＴ８７）。
そして、最大データサイズ判定部３２０Ａは、最大データサイズを増加後に転送速度測定回路３１０で取得された転送速度が前回測定した転送速度に対して向上したか否かを判定する（ＳＴ８８）。
最大データサイズ判定部３２０Ａは、転送速度が向上している場合には、パケット化に伴うオーバヘッドの影響が緩和されたと判断し、ステップＳＴ８４の処理に戻り、現最大データサイズが最大値に達するまで、ステップＳＴ８４からＳＴ８８の処理を繰り返す。
そして、最大データサイズ判定部３２０Ａは、ステップＳＴ８８で転送速度が向上してない場合には、クレジット不足による転送速度低下が発生したと判断し、変更前（たとえば前回）の最大データサイズに戻す（ＳＴ８９）。
【００７５】
［第６の判定処理における第４処理の具体例］
第４処理として、最大データサイズ判定部３２０Ａは、送信パケットの現最大データサイズが最小値ｍｉｎ＿ｔｒａｎｓｓｉｚｅに達したか否かを判定する（ＳＴ９０）。
最大データサイズ判定部３２０Ａは、現最大データサイズが最小値に達していない場合には、送信パケットの最大データサイズを所定サイズ減少させる（ＳＴ９１）。
この減少させて設定された最大データサイズに基づいてＤＭＡコントローラ２７の制御の下、シリアル転送Ｉ／Ｆ２６を通してＤＭＡ転送が実行される（ＳＴ９２）。これと並行して、そのときの転送速度が転送速度測定回路３１０で再度測定され、ストール時間（ストールの有無）がストール時間測定回路３３０で再度測定される（ＳＴ９３）。
そして、最大データサイズ判定部３２０Ａは、最大データサイズを減少後に転送速度測定回路３１０で取得された転送速度が前回測定した転送速度に対して向上したか否かを判定する（ＳＴ９４）。
最大データサイズ判定部３２０Ａは、転送速度が向上している場合には、ストールが発生しているか否かを判定する（ＳＴ９５）。
最大データサイズ判定部３２０Ａは、ストールが発生している場合には、現最大データサイズが最小値に達していないことを条件とし、送信パケットの最大データサイズをさらに減少させる。
そして、最大データサイズ判定部３２０Ａは、この最大データサイズを減少後に転送速度測定回路３１０で取得された転送速度が向上したか否かを判定する。
最大データサイズ判定部３２０Ａは、転送速度が向上してない場合には、変更前（たとえば前回）の最大データサイズに戻す（ＳＴ９４）。
最大データサイズ判定部３２０Ａは、ステップＳＴ９５ストールが発生してない場合には、フロー制御による転送速度低下が解消されたと判断し、処理を終了する。
【００７６】
ＰＣＩ Ｅｘｐｒｅｓｓ等のシリアル転送Ｉ／Ｆを用いてデータ転送を行う場合、機器によって受信バッファの量は異なる。また、機器の組み合わせによって受信バッファ開放通知を送信側が受信するまでのレイテンシも異なり、最大転送速度を実現するパケットのデータサイズが変化する。
本実施形態によれば、各機器の組み合わせに応じて最適なデータサイズを自動的に計算し、転送速度を最大化することができる。
すなわち、本実施形態によれば、データ転送を行う際のデータサイズをパケット化のオーバヘッドだけではなくクレジットによるフロー制御を考慮して決定でき、転送速度の低下を抑止することができる。
【００７７】
また、以上詳細に説明した方法は、上記手順に応じたプログラムとして形成し、ＣＰＵ等のコンピュータで実行するように構成することも可能である。
また、このようなプログラムは、半導体メモリ、磁気ディスク、光ディスク、フロッピー（登録商標）ディスク等の記録媒体、この記録媒体をセットしたコンピュータによりアクセスし上記プログラムを実行するように構成可能である。
【符号の説明】
【００７８】
１０・・・ホスト機器、１１・・・ＣＰＵ、１２・・・メモリ、１３・・・データバッファ、１４・・・外部シリアル転送Ｉ／Ｆ（ＰＣＩ Ｅｘｐｒｅｓｓ Ｉ／Ｆ）、２０，２０Ａ・・・情報処理装置、２１・・・ＣＰＵ、２２・・・メモリ、２３・・・コントロールレジスタ、２４・・・不揮発性メモリ、２５・・・不揮発性メモリコントローラ、２６・・・外部シリアル転送Ｉ／Ｆ（ＰＣＩ Ｅｘｐｒｅｓｓ Ｉ／Ｆ）、２７・・・ＤＭＡコントローラ、２８・・・転送残りバイト数カウンタ、２９・・・４ｋ境界バイト数計算回路、３０，３０Ａ・・・転送状態監視部、３１０・・・転送速度測定回路、３２０，３２０Ａ・・・最大データサイズ判定部、３３０・・・ストール時間（Ｔｓｔａｌｌ）測定回路。
【図１】
2012133643.tif 000003
【図２】
2012133643.tif 000004
【図３】
2012133643.tif 000005
【図４】
2012133643.tif 000006
【図５】
2012133643.tif 000007
【図６】
2012133643.tif 000008
【図７】
2012133643.tif 000009
【図８】
2012133643.tif 000010
【図９】
2012133643.tif 000011
【図１０】
2012133643.tif 000012
【図１１】
2012133643.tif 000013
【図１２】
2012133643.tif 000014
【図１３】
2012133643.tif 000015
【図１４】
2012133643.tif 000016