(57)【要約】【課題】パケット転送に要するレイテンシの発生を抑制し、効率の良いデータ転送を実現すること。【解決手段】本発明に係るデータ転送システムは、マスターデバイスと当該マスターデバイスにデータを転送可能なターゲットデバイスとから構成されるデータ転送システムであって、マスターデバイスは、ターゲットデバイスに、当該マスターデバイスが受信可能なデータ量を示す情報を送信後、データ転送リクエストを送信する送信手段とを具備し、ターゲットデバイスは、マスターデバイスの送信手段から送信された前記データ転送リクエストに基づいて、データ転送レートを計測する計測手段と、計測手段によって計測されたデータ転送レートの値が所定値以上である場合、データ転送リクエストの量を制限する制限リクエストをマスターデバイスに送信する送信手段とを具備する。【選択図】図６
2010218351.tif 000002
【特許請求の範囲】
【請求項１】
マスターデバイスと当該マスターデバイスにデータを転送可能なターゲットデバイスとから構成されるデータ転送システムであって、
前記マスターデバイスは、
前記ターゲットデバイスに、当該マスターデバイスが受信可能なデータ量を示す情報を送信後、データ転送リクエストを送信する送信手段とを具備し、
前記ターゲットデバイスは、
前記マスターデバイスの送信手段から送信された前記データ転送リクエストに基づいて、データ転送レートを計測する計測手段と、
前記計測手段によって計測された前記データ転送レートの値が所定値以上である場合、前記データ転送リクエストの量を制限する制限リクエストを前記マスターデバイスに送信する送信手段と、
を具備することを特徴とするデータ転送システム。
【請求項２】
前記マスターデバイスは、
前記ターゲットデバイスの有する前記送信手段から送信された前記制限リクエストを受信した場合、前記データ転送リクエストの量を制限する制御手段を具備することを特徴とする請求項１に記載のデータ転送システム。
【請求項３】
前記ターゲットデバイスの有する前記送信手段は、前記計測手段によって計測された前記データ転送レートが所定値以上であると判定された後に、前記計測手段によって計測された前記データ転送レートが所定値以下となった場合、前記データ転送リクエストの量の制限を解除する解除リクエストを前記マスターデバイスに送信する送信手段であり、
前記マスターデバイスの有する前記制御手段は、前記ターゲットデバイスの有する前記送信手段から送信された前記解除リクエストを受信した場合、前記データ転送リクエストの量の制限を解除する制御手段であることを特徴とする請求項２に記載のデータ転送システム。
【請求項４】
前記ターゲットデバイスの有する前記送信手段は、前記データ転送レートが所定値以上である場合、前記データ転送リクエストの量を制限する制限リクエストを、当該データ転送システムに含まれる全てのマスターデバイスに送信する送信手段であり、
前記全てのマスターデバイスは、前記制限リクエストに従うか否か示す情報を有し、前記送信手段から送信された前記制限リクエストを受信した場合、前記制御手段は、前記情報に従って、前記ターゲットデバイスに対するデータ転送リクエストの量を制限する制御手段であることを特徴とする請求項２に記載のデータ転送システム。
【請求項５】
前記ターゲットデバイスの有する前記送信手段は、前記計測手段によって計測された前記データ転送レートが所定値以上であると判定された後に、前記計測手段によって計測された前記データ転送レートが所定値以下となった場合、前記データ転送リクエストの量の制限を解除する解除リクエストを、当該データ転送システムに含まれる全てのマスターデバイスに送信する送信手段であり、
前記全てのマスターデバイスが前記解除リクエストを受信した場合、前記制御手段は、前記情報に従って、前記ターゲットデバイスに対するデータ転送リクエストの量の制限を解除する制御手段であることを特徴とする請求項４に記載のデータ転送システム。
【請求項６】
前記ターゲットデバイスは、前記マスターデバイスに前記制限リクエスト又は前記解除リクエストを送信するか否か示す情報を有し、前記制限リクエスト又は前記解除リクエストの送信先となるマスターデバイスを、前記情報に従って決定することを特徴とする請求項３に記載のデータ転送システム。
【請求項７】
前記伝送路はＰＣＩ  Ｅｘｐｒｅｓｓによるシリアルデータ伝送路であること、
を特徴とする請求項１ないし６何れか一項に記載のデータ転送システム。
【請求項８】
マスターデバイスと当該マスターデバイスにデータを転送可能なターゲットデバイスとから構成されるデータ転送システムにおけるテータ転送方法であって、
前記マスターデバイスは、
前記ターゲットデバイスに、当該マスターデバイスが受信可能なデータ量を示す情報を送信後、データ転送リクエストを送信し、
前記ターゲットデバイスは、
前記マスターデバイスから送信された前記データ転送リクエストに基づいて、データ転送レートを計測し、
前記計測された前記データ転送レートの値が所定値以上である場合、前記データ転送リクエストの量を制限する制限リクエストを前記マスターデバイスに送信することを特徴とするデータ転送方法。
【請求項９】
前記マスターデバイスは、
前記ターゲットデバイスの有する前記送信手段から送信された前記制限リクエストを受信した場合、前記データ転送リクエストの量を制限することを特徴とする請求項８記載のデータ転送方法。
【請求項１０】
前記ターゲットデバイスは、前記計測された前記データ転送レートが所定値以上であると判定された後に、前記計測された前記データ転送レートが所定値以下となった場合、前記データ転送リクエストの量の制限を解除する解除リクエストを前記マスターデバイスに送信し、
前記マスターデバイスは、前記ターゲットデバイスから送信された前記解除リクエストを受信した場合、前記データ転送リクエストの量の制限を解除することを特徴とする請求項９に記載のデータ転送方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ転送システム及びデータ転送方法の分野に関する。
【背景技術】
【０００２】
複数のデバイス（データ通信装置）が共通の通信経路を経由して接続され互いにデータ通信を行うデータ通信システムにおいては、異なる種類のトラフィックが同一の通信経路を使用してデータ転送を行うと競合が発生し、トラフィックごとに要求される通信品質(データ転送レートや連続性)が得られなくなるという問題がある。
【０００３】
このような問題を改善するために、Ethernet（登録商標）等のコンピュータネットワークによって複数のサーバが接続されたサーバシステムでは、コンピュータネットワークの通信負荷を測定する通信負荷測定手段を設け、通信負荷の大きさに応じて転送する情報の情報量を増減する方式が提案されている（例えば、特許文献１参照）。
【０００４】
また、通信デバイス(ノード)にトラフィック観測部を備え、観測により得られた各ノードのトラフィック情報を、データ転送の経路選択に用いる方式が提案されている（例えば、特許文献２参照）。
【０００５】
また、データを処理するサーバを複数設け、処理やデータ通信経路を分散させる方式なども提案されている（例えば、特許文献３参照）。
【０００６】
ところで近年、伝送速度が数Gbpsを超え、Ethernet（登録商標）よりも格段に高速なデータ転送が可能な高速シリアル伝送路が実用化されてきており、従来のコンピュータネットワークに近い通信方式をとったローカルI/O（In/Out）の標準規格が普及しつつある。このため、コンピュータネットワークと同様の、シリアル伝送路とスイッチを用いたパケットデータ通信によって、LSIチップ内、チップ間、ボード間のデータ通信網が、組み込み用途の電子機器にも利用されるようになった。
【０００７】
代表的には、高速シリアル通信の標準規格でPC向けのローカルIOとして普及しているPCI Express(以下PCIeと称す)が知られている。PCIeによるデータ転送方式では、データパケットの競合を軽減するため、PCIeリンク間(自デバイスと直接ポイントツーポイントで接続されたデバイスとの間／以下単にリンクと称す)では、クレジット（Credit）ベースのフロー制御が行われる。送信側はデータ転送を始める前に、受け取り側のバッファの空き状況を確認するようにして、オーバーフロー、アンダフローが発生しないメカニズムである。
【０００８】
具体的に、リンク初期化時においてリクエストを受信するターゲットデバイス(受信側)は、Memory WriteやMemory Read等のリクエスト種類毎にリクエストを発行するマスターデバイス（送信側）に対し、どの程度の量のリクエストが受信可能かを示すクレジット情報（クレジット値含む）を通知する。通知は、データリンクレイヤパケット/ DLLP（Init FC）と呼ばれる制御パケットにより通知される。なお、PCIe規格に準拠したデバイスでは受信ポートに受信バッファが実装されおり、前述のクレジット値は一般に、ターゲットデバイス(又はスイッチ)のその受信バッファの空き容量に相当する。マスターデバイスは、通知されたクレジット情報に基づきターゲットデバイスのバッファ容量に一定の残りがある場合のみ、パケットを送信する。そしてマスターデバイスは、自身が送信したパケットのサイズを、通知されたクレジット値から減算する。マスターデバイスはターゲットデバイスのクレジット値を使いきった場合、リクエストを一時停止させる動作を行う。一方、ターゲットデバイスは、受信したパケットの転送処理が完了する毎にマスターデバイスに対して、新たに受信可能となったリクエストの量(追加クレジット値)を、DLLP （Update FC）により通知する。マスターデバイスは、再びターゲットデバイスで受信可能になったクレジット値分だけ新しくリクエストを発行できるようになる。このようなクレジットベースのフロー制御により、送信側は受信側のバッファ容量を超えてデータ送信を行なうことはないのでパケット転送の再送動作は発生せず、通信路のデータ伝送効率が向上させることができるようになっている。
【０００９】
その一方、マスターデバイスでデータ送信速度を上昇させていくとやがて、ターゲットデバイスから追加クレジット値を受信する前に、マスターデバイス（送信側）では通知されたクレジット値が０になってしまう。この場合、マスターデバイスはターゲットデバイスに対してデータを送信することができない。ターゲットデバイス（受信側）からDLLP （Update FC）を受信して、バッファ容量確保したとの通知を受けてから、マスターデバイスはターゲットデバイスに対してデータを送信することができるようになるのである。なお、ターゲットデバイスにおけるパケット転送処理が滞ったこと等により、ターゲットデバイスの受信バッファ容量の空きがなくなった状態、即ちマスターデバイスに追加クレジット値が通知されず、マスターデバイスが通知されたクレジット値を全て使い切った状態を「クレジットの枯渇」と以下表現する。
【００１０】
ところで、PCIeを用いたデータ転送システムにおいてもパケット競合の影響によりあるトラフィックのデータ転送が止まった影響が他のトラフィックの転送を止めてしまう場合がある。図１は、PCI Expresにより構成されたデータ通信システムを示す図の一例である。図中、PCIe規格を用いて、４つのマスターデバイス(Ｍ１―Ｍ４)が2つのターゲットデバイス(Ｔ１、Ｔ２)に対して、３つのスイッチ(ＳＷ１―ＳＷ３)を介して接続されたデータ通信システムが示されている。図中、マスターデバイスであるＭ１及びＭ３は、通信が短時間でも途切れることが許されないような優先度の高いトラフィックを発生させ、Ｍ２及びＭ４は、優先度の低いトラフィックを発生させる。また、Ｍ２、Ｍ４はＴ１へリクエストを発行し、Ｍ１、 Ｍ３はＴ２へリクエストを発行する。
【００１１】
PCIeのフロー制御は、リンク間（ポイントツーポイント）での制御であるため、Ｔ１においてデータ受信処理に遅延が起きた場合には、まずＴ１―ＳＷ２間のリンク１でクレジットの枯渇が発生し、Ｔ１に接続されたＳＷ２において、Ｔ１と接続されたポートＡ宛てのパケット転送が停止する。ＳＷ２のＴ１宛てのパケット転送が停止すると、ＳＷ１―ＳＷ２間のリンク２においてもクレジットの枯渇が発生して、ＳＷ２宛てのパケットの転送が停止する。ＳＷ２に対してはデータ転送が行なわれているにもかかわらず、Ｔ１と接続されたポートＡ宛てのパケット転送が停止しているため、やがてＳＷ２のバッファ容量も飽和し、ＳＷ１―ＳＷ２間のリンク２においてもクレジットの枯渇が発生するのである。このとき、Ｍ１からＴ２に対するトラフィックも、ＳＷ１―ＳＷ２間のリンク２を経由しているので、ＳＷ１とＭ１の間のリンク３でもクレジットの枯渇が発生し、Ｍ１のトラフィックも停止することになる。同様に、Ｔ１―ＳＷ２間のリンク１のクレジット枯渇は、ＳＷ３を経由したトラフィックをも停止させ、Ｍ３からＴ２宛てのトラフィックも停止する。このように、スイッチの出力ポートを共有していると、あるトラフィックのデータ転送が止まった影響が他のトラフィックの転送を止めてしまう場合がある。つまり、優先度の低いトラフィックの転送停止により、優先度の高いトラフィックの転送にまでその影響が及ぶことになる。
【００１２】
このため、PCIeより派生したASI（Advanced Switching Interconnect）規格では、PCIe規格よりも更に高度なフロー制御方式として、SBFC（Status Based Flow Control）が規定されている。SBFCによれば、スイッチデバイスは出力先のポートにおけるクレジット不足が生じると、スイッチデバイスの入力ポートに接続されたマスターデバイスに対して、クレジット不足の情報を通知する。通知によりマスターデバイスは１Ｈｏｐ先のポートのクレジット不足を検知できるので、そのポート宛てのリクエストを一時停止させる動作を行い他のトラフィック転送への影響を防止できる。
【発明の概要】
【発明が解決しようとする課題】
【００１３】
上述したように、高速なデータ転送が可能な高速シリアル伝送路が実用化されてきており、シリアル伝送路とスイッチを用いたパケットデータ通信によって、LSIチップ内、チップ間、ボード間のデータ通信網が、組み込み用途の電子機器にも利用されるようになった。組み込み用途の電子機器に高速シリアル伝送路を用いる場合、従来のコンピュータネットワークのデータ転送品質と比較して、特に短期間のデータ通信レートや、パケット転送に要するレイテンシに対する制約条件が厳しく、またデータの欠落も許されない場合がある。
【００１４】
そのような一例として、複写機の画像データ転送を想定した画像データ転送制約の例を説明する。図２は、画像データ構成を模式的に示す図の一例である。図に示めされるように、画像データは、主走査方向及び副走査方向の２次元配列によって構成される。プロッタ、或いはスキャナの画像データ転送は、主走査方向の画素データを決められた時間周期に転送する処理を、副走査方向に繰り返し処理する同期転送することによって実行される。これは、データ転送の同期制約がメカ駆動条件によって決まるためであり、特に電子写真プロセスを用いたプロッタでは、重量の大きい感光体ドラムや紙搬送メカを高速で駆動するため、データ転送途中で駆動速度を変更することができない。このためメカの駆動速度に同期したタイミングでデータ転送量を制御する必要がある。
【００１５】
図３は、画像データ転送におけるトランザクションを模式的に示す図の一例である。図に示されるように、データ転送は、主走査方向の１ライン毎に複数の画素データを１つのパケットデータとして、１ラインずつ複数(ｎ個)のパケット群から構成されるトランザクションとして、副走査方向に画像が走査される速度に同期させて転送される必要がある。１トランザクションあたりの許容時間を「１ライン周期」と呼ぶとすると、プロッタの１ライン周期は紙送り速度と印刷画像解像度によって決定され、スキャナの１ライン周期はスキャナユニットの移動速度と読み取り解像度によって決定される。ライン周期の計算式を示す。
プロッタ１ライン周期(s) = 1 / { [紙送り速度 (mm/s)] × [1mmあたりの画素数] }
スキャナ１ライン周期(s) = 1 / { [ヘッド移動速度 (mm/s)] × [1mmあたりの画素数] }
具体的に、プロッタライン周期の計算例を示す。計算を単純にするため、プロッタの印刷解像度を主走査/副走査ともに50dot/mmとし、CMYKカラー印刷を想定して各画素のビット数は2bitであるものとする。また、横向きA4の原稿サイズを想定して主走査方向297mm×副走査方向210mmであることとする。また、印刷速度は60枚分を想定する。このとき、１枚あたりの印刷時間は１秒となるので、副走査方向の紙送り速度は210mm/sである。プロッタ１ライン周期を計算すると、
1/ (210 × 50) = 0.000095 s = 95μs（マイクロ秒）
となる。主走査方向の一色あたりの画素数は、
297mm×50dot/mm = 14850 dot
となり、データ量は、14850dot×2bit / 8 = 3713Byteとなる。更に４色分のデータ量を計算すると、
3713Byte×4色＝14850Byte
即ち画像データの転送は、14850 Byte を95μsで完了する必要がある。なお、このときのデータ転送レートは14850Byte / 0.000095s=約156MB/sとなる。
1ラインのデータを送る場合、128Byteのパケットに区切って転送する場合を想定すると、
14850Byte / 128Byte = 117 個
となり、117個の128Byteデータパケットを1ライン周期内95μsに転送しなければならないという、非常に厳しいデータ転送制約を満たさなくてはならない。また、複写機における画像データ通信は、ライン周期に同期する必要のない処理、例えば画像処理のデータ転送においても、最終的に画像が紙に印刷されたり画像ファイルに保存されるため、コンピュータネットワーク通信における動画や音声のストリーミングのようにデータの欠落や圧縮による品質劣化は一切許されないという非常に厳しい制約がある。
【００１６】
特許文献１記載の発明においては、コンピュータネットワーク上に負荷測定手段、負荷情報算出手段、通信負荷の決定手段を設けており、高負荷状態が検出されてから実際のトラフィック調整に反映されるまで早くともsecからmmsec単位の時間を要する。従って前述の複写機のライン周期に同期した転送のように、μsecからnsec単位の短いレイテンシが要求される組み込み機器用途の通信システムにおいては通信負荷を調整することができない。また、通信負荷の大きさに応じて転送する情報の情報量を増減することも、印刷画像のように情報量が固定されている場合には、適用することができない。
【００１７】
また特許文献２記載及び特許文献３の発明においては、トラフィック管理手段が一箇所で集中管理されており、ネットワーク各所のトラフィック情報がトラフィック調整に反映されるまでのレイテンシが、組み込み機器用途には長くなりすぎるという問題がある。さらに、特許文献２記載の発明では、トラフィック監視手段をネットワークの全ての接続ノードに設ける必要があり、ネットワークを構成する回路全体の規模が増大しコスト高となってしまう問題もある。
【００１８】
また従来のPCI eによるデータ転送システムでは、フロー制御方式によって短いレイテンシでリンク間のトラフィック調停が処理されるが、上述したように、データ通信網の一箇所のリンクでデータ処理の遅延などによるクレジット枯渇が発生すると、そのリンクを経由するトラフィックと経路を共有する他のトラフィックにまでデータ転送の停止が波及してしまい、優先度の高いトラフィックで十分なデータ転送レートが得られなくなるという問題がある。
【００１９】
またASI規格のスイッチデバイスを用いた場合は、１Ｈｏｐ先のデバイスまでクレジット不足の情報が通知されるのでこのような問題は軽減はされるが、スイッチを経由する段数が増えてくると、宛先ポートのクレジット不足の情報がマスターデバイスまで到達する時間は長くなってきてしまう。また、一般的なASI（PCIeも同様）のスイッチデバイスでは数KB―10KB程度の内部バッファが実装されているため、その内部バッファに格納される先行リクエストを待たせることによるレイテンシ悪化現象は、より顕著に現れることになる。前述の複写機の画像データ転送のように、１ラインのデータ転送に許容される時間が数十μs単位である場合、このレイテンシ悪化現象は著しく印刷やスキャンの性能を低下させる。このように、ASI規格のSBFCではクレジット枯渇の情報が各デバイスを順々に伝わるため、マスターデバイスからのリクエスト発行が停止されるまでにレイテンシが発生し、通信経路上のバッファの影響によって更に他のデバイスからのリクエストのレイテンシを悪化させるという問題がある。また、ASI規格に対応したスイッチデバイスや、各マスターデバイス、ターゲットデバイスの通信コアの回路実装規模は、PCIeに比較して非常に大きくコスト高となってしまう問題もある。
【００２０】
そこで本発明では上記のような問題に鑑み、パケット転送に要するレイテンシの発生を抑制し、効率の良いデータ転送を実現するデータ転送システム及びデータ転送方法を提供することを目的とする。
【課題を解決するための手段】
【００２１】
そこで上記課題を解決するため、本発明に係るデータ転送システムは、マスターデバイスと当該マスターデバイスにデータを転送可能なターゲットデバイスとから構成されるデータ転送システムであって、前記マスターデバイスは、前記ターゲットデバイスに、当該マスターデバイスが受信可能なデータ量を示す情報を送信後、データ転送リクエストを送信する送信手段とを具備し、前記ターゲットデバイスは、前記マスターデバイスの送信手段から送信された前記データ転送リクエストに基づいて、データ転送レートを計測する計測手段と、前記計測手段によって計測された前記データ転送レートの値が所定値以上である場合、前記データ転送リクエストの量を制限する制限リクエストを前記マスターデバイスに送信する送信手段とを具備する。
【００２２】
なお、本発明の構成要素、表現または構成要素の任意の組合せを、方法、装置、システム、コンピュータプログラム、記録媒体、などに適用したものも本発明の態様として有効である。
【発明の効果】
【００２３】
本発明によれば、パケット転送に要するレイテンシの発生を抑制し、効率の良いデータ転送を実現するデータ転送システム及びデータ転送方法を提供することができる。
【図面の簡単な説明】
【００２４】
【図１】PCI Expressにより構成されたデータ通信システムの一例を示す図である。
【図２】画像データ構成の一例を模式的に示す図である。
【図３】画像データ転送におけるトランザクションの一例を模式的に示す図である。
【図４】PCI Expressシステムの一般構成の一例を示す図である。
【図５】本実施形態におけるPCI Expressシステムの構成の一例を示す図である。
【図６】本実施形態に係るターゲットデバイス構成の一例を示す図である。
【図７】本実施形態に係るマスターデバイス構成の一例を示す図である。
【図８】マスターデバイス及びターゲットデバイスの動作を説明するPCI Expressシステムの構成の一例を示す図である。
【図９】ターゲットデバイスの動作の一例を説明するフローチャートである。
【図１０】マスターデバイスの動作の一例を説明するフローチャートである。
【図１１】本変形例によるマスターデバイス及びターゲットデバイスの動作を説明するPCI Expressシステムの構成の一例を示す図である。
【図１２】本実施形態に係るターゲットデバイス構成の一例を示す図である。
【図１３】ＭＦＰに本発明に係るPCI Expressシステムを適用した構成の一例を示す図である。
【図１４】ASIにより構成されたデータ通信システムの一例を示す図である。
【図１５】ＳＷ１の一例を模式的に示す図である。
【発明を実施するための形態】
【００２５】
本発明を実施するための形態を各実施形態において図面を用いて説明する。以下、PCIe によるデータ転送システムを例として本発明の説明を行う。
【００２６】
[実施形態１]
（システムの構成）
図４は、PCI Expressシステムの一般構成を示す図の一例である。ＣＰＵ１１０やメモリ１１１が接続されたルートコンプレックス１１２に対して、PCIeグラフィックス１１３がPCIe１１４ａにより接続され、また、エンドポイント１１５ａやレガシーエンドポイント１１６ａがPCIe１１４ｂにより接続されたスイッチ１１７ａがPCIe１１４ｃにより接続され、さらには、エンドポイント１１５ｂやレガシーエンドポイント１１６ｂがPCIe１１４ｄにより接続されたスイッチ１１７ｂやPCIバススロット１１８が接続されたPCIブリッジ１１９がPCIe１１４ｅにより接続されたスイッチ１１７ｃがPCIe１１４ｆにより接続されたツリー構造（木構造）とされている。
【００２７】
図５は、本実施形態におけるPCI Expressシステムの構成を示す図の一例である。PCIe規格を用いて、４つのマスターデバイス(Ｍ１―Ｍ４)が２つのターゲットデバイス(Ｔ１、Ｔ２)に対して、３つのスイッチ(ＳＷ１―ＳＷ３)を介して接続されたデータ通信システムが示されている。図４のPCI Expressシステムの一般構成と各デバイスを対応させるならば、例えば、ＳＷ２はルートコンプレックス１１２、ＳＷ１はスイッチ１１７ｃ、ＳＷ３はスイッチ１１７ａ、Ｔ１（又はＴ２）はメモリ１１１、Ｍ１−Ｍ４はエンドポイント１１５ｂ（又はレガシーエンドポイント１１６ｂ）にそれぞれ対応する。
【００２８】
（フロー制御）
次に、PCIeで規定されるフロー制御（フローコントロール）について、確認的に説明する。一般的なフロー制御として、送信側はまずデータを送信し、受信側で問題が発生したら再度送信する方法がある。これに対してPCIeでは、送信側は、事前に受信側バッファの空き容量を確認し十分な空き容量が確保できている場合に、パケットを送信する。
【００２９】
PCIeのフロー制御は、前述のデータリンクレイヤが生成するDLLP(Data Link Layer Packet)によって実現される。詳細は規格書等に譲るが概略的に、DLLPタイプとして、「InitFC」、「UpdateFC」に大別できる。またこれらフロー制御用のDLLPには「Hdr FC」、「DataFC」の値を格納するフォーマットを有しており、これらの値から、例えば送信側は受信側のバッファがどれくらい余っているかを知ることができるようになっている。
【００３０】
PCIeのフロー制御は、クレジットベースで行われる。まず受信側は、リンク初期化時に自身が受信可能なバッファ容量（クレジット値）を送信側に通知しておく。送信側は、受信側のバッファ容量と送信するパケットの長さとを比較し、受信側のバッファ容量に一定の残りがある場合、パケットを送信する。そして送信側は、自身が送信したパケットのサイズを通知された受信側のバッファ容量から減算する。また、受信側からバッファ容量の空き情報が伝えられるとその分を加算する。以下、少し詳細に説明する。
【００３１】
始めに、受信側はInit FC（DLLP）を発行して送信側にクレジット値（自身が受信可能なバッファ容量を示す値）を通知する。なお、受信側のクレジット値の情報（内部のクレジットカウンタ）は初期化されているものとする。送信側はInit FCを受信すると、内部のクレジットカウンタ（クレジット空き容量情報レジスタ）の初期値をInit FCで指定されたクレジット値に設定する。ここまでが初期化手順である。
【００３２】
そして送信側はデータを送信する。このとき送信側はデータ送信毎に、クレジットカウンタの値を送信したデータ量だけ減少させる。
【００３３】
受信側はデータを受信する毎に、Update FC（DLLP）を発行して送信側に所定のクレジット値（例えば受信したデータ分のバッファ容量値）を通知する。送信側はUpdate FCを受信する毎に、クレジットカウンタ値をUpdate FCで設定された値だけ増加させる。クレジットカウンタの値の回復を図るのである。
【００３４】
このように送信側は、受信側から通知された受信可能なバッファ容量分のデータ送信を行なうことができる。なお、送信データ及びUpdate FCは基本的に１セットで扱われ、１のInit FCに対し１のUpdate FCが発行されるものとする。複数の送信データに対し１のUpdate FCを発行する場合はクレジットカウンタの値の回復が遅くなり、高速でデータ送信を行うためには即座にUpdate FCが発行される方が望ましいからである。
【００３５】
以上、PCI Expressで規定されるフロー制御であるが、本発明に係るデータ送信システム上の各デバイスも上記の規定に従ったフロー制御の動作を行なう。
【００３６】
（ターゲットデバイス）
図６は、本実施形態に係るターゲットデバイス構成を示す図の一例である。ターゲットデバイス（Ｔ１、Ｔ２に相当）は、PCIe通信コア６０１、トラフィックモニタ６０２、フロー制御部６０３、レジスタ６０４、ユーザ回路６０５、及びメモリ６０６を含む構成である。
【００３７】
PCIe通信コア６０１は、転送されたデータを受信する受信手段に相当し、Transaction Layer（トランザクション層）、Datalink Layer（データリンク層）、Physical Layer（物理層）の３層構造を有し、Application I/F（InterFace）を介して、ユーザ回路６０５と通信を行う。つまり、ターゲットデバイスとして動作する場合、PCIeリンクの先のスイッチを経由して接続されたマスターデバイスから届いたMemory ReadやMemory Writeリクエストが、Application I/Fよりユーザ回路６０５に転送される。
【００３８】
トラフィックモニタ６０２は、ユーザ回路６０５に転送されるデータ転送リクエスト（Memory ReadやMemory Writeリクエスト）に基づいて、単位時間あたりのデータ転送レートを計測する機能を有している。なお単位時間値（情報）は、レジスタ６０５に予め設定（記憶）されており、トラフィックモニタ６０２は、これを取得し、データ転送レートを計測する。計測したデータ転送レートは、フロー制御部６０３に通知される。
【００３９】
フロー制御部６０３は、トラフィックモニタ６０２により計測されたデータ転送レートがレジスタ６０４に設定された所定の上限閾値以上か否かを判定する（判定手段）。またデータ転送レートが所定の閾値以上と判定したとき、データ転送リクエストの発行帯域制限を指示する制限リクエスト（フロー制御リクエスト）をマスターデバイスに発行する機能を有している。ここで、データ転送リクエストの発行帯域制限とは、単位時間あたりにおけるデータ転送リクエストの量の制限を意味する。さらに、計測されたデータ転送レートが所定の閾値以上と判定したあと、再び計測されたデータ転送レートが所定の下限閾値以下か否かを判定し、再び計測されたデータ転送レートが所定の下限閾値以下と判定したとき、データ転送リクエストの発行帯域制限の解除を指示する解除リクエスト（フロー制御リクエスト）をマスターデバイスに発行する。なお、本実施形態においては、PCIe通信システム上に接続されるマスターデバイス全てに、フロー制御リクエストである制限リクエスト／解除リクエスト（Broadcastパケットによる）を発行するものとする。また、データ転送リクエストの発行帯域とは、マスターデバイスが、単位時間当たりに要求するデータ転送リクエストの量を指すものとする。
【００４０】
ユーザ回路６０５は、当該ターゲットデバイスに係る機能を提供する回路である。ユーザ回路６０５は、Memory Writeリクエストを受け取ると、Memory Writeデータをメモリ６０６に格納し、またMemory Readリクエストを受け取ると、Memory Readデータをメモリ６０６から読み込み、Application I/Fに転送する。Memory ReadデータはPCIe通信コアにおいて、Compleitonデータパケットに格納されて、PCIeリンクの先のマスターデバイスへと転送される。
【００４１】
レジスタ６０４には、単位時間値、転送レート上限閾値、転送レート下限閾値の情報が予め設定（記憶）されている。上述したように、単位時間値は、トラフィックモニタ６０２によるデータ転送レート計測に、転送レート上限閾値及び転送レート下限閾値は、フロー制御部６０３による閾値判定に利用される。
【００４２】
（マスターデバイス）
次にターゲットデバイスに対するマスターデバイスについて説明する。図７は、本実施形態に係るマスターデバイス構成を示す図の一例である。マスターデバイス（Ｍ１―Ｍ４に相当）は、PCIe通信コア７０１、フロー制御リクエスト受信部７０２、フロー制御部７０３、レジスタ７０４、ユーザ回路７０５、及びメモリ７０６を含む構成である。ターゲットデバイスと異なる点を説明し重複する点の説明は省略する。
【００４３】
フロー制御リクエスト受信部７０２は、ターゲットデバイスから発行されたフロー制御リクエストである制限リクエスト／解除リクエストを受信する機能を有している。制限リクエスト／解除リクエストは、PCIe規格によるリクエストを採用しているため、PCIe通信コア７０１を経由してからフロー制御リクエスト受信部７０２でこれらを受信するようになっている。
【００４４】
フロー制御部７０３は、フロー制御リクエスト受信部７０２で受信された制限リクエスト／解除リクエストを受けて、その内容を解析する。解析内容としては、発行元のターゲットデバイス、リクエストの種類（Message Broadcast/Memory Write）、当該リクエストが、データ転送リクエストの発行帯域制限をリクエストするものなのか／発行帯域制限の解除リクエストするものなのか、等である。リクエストの種類（特にMemory Write）については後述の変形例において再度触れる。そして、フロー制御部７０３は、レジスタ７０４に予め設定される優先度情報に基づいて、自身がターゲットデバイスに対するデータ転送リクエストの発行帯域を制限する／又は制限を解除する対象であるか否かを判定する。優先度情報はそのターゲットデバイスが発行するトラフィックの優先度が高いか低いかを示すものである。よって、例えば優先度が低い場合、制限リクエスト／解除リクエストを受諾する（との判定を行う）。優先度が高い場合、制限リクエスト／解除リクエストを受諾する必要はなく当該リクエストを無視する（との判定を行う）。なお、優先度情報は高い／低いとの情報のみならず、数値情報として保持され、その数値に応じて段階的に優先度を設定できる。そして、フロー制御部７０３は、制限リクエスト／解除リクエストを受諾するとの判定を行った場合、ユーザ回路７０５に対してデータ転送リクエストの発行帯域制限／制限の解除を指示する。
【００４５】
以上、本発明に係るデータ転送システム及び構成要素について説明を行った。続いて、これら動作について説明を行う。
【００４６】
（動作）
図８は、マスターデバイス及びターゲットデバイスの動作を説明するPCI Expressシステムの構成を示す図の一例である。PCIe規格を用いて、４つのマスターデバイス(Ｍ１―Ｍ４)が２つのターゲットデバイス(Ｔ１、Ｔ２)に対して、３つのスイッチ(ＳＷ１―ＳＷ３)を介して接続された、データ通信システムが示されている。図中、マスターデバイスであるＭ１及びＭ３は、通信が短時間でも途切れることが許されないような優先度の高いトラフィックを発生させ、Ｍ２及びＭ４は、優先度の低いトラフィックを発生させる。また、Ｍ２、Ｍ４はＴ１へリクエストを発行し、Ｍ１、 Ｍ３はＴ２へリクエストを発行する。
【００４７】
動作の概要としては、ターゲットデバイスＴ１の転送レートがＴ１に設定された上限閾値を超えると、Ｔ１は直ちにPCIeのMessage Broadcastリクエストを発行する。これにより全てのマスターデバイスＭ１−Ｍ４に対して、帯域制限の指示がなされる（通知される）。Ｍ２、Ｍ４は、予め低い優先度に設定がなされているので、Ｔ１に対するデータ転送を一時停止させる（もしくはデータ転送レートを低下させる）。このため、PCIeのリンク１においてクレジットが枯渇することはなくなり、さらにリンク２、リンク３においても、クレジットが枯渇することはなくなる。よって優先度の高いＭ１、Ｍ３からのトラフィックが妨げられることはなく連続したテータ転送が可能となる。以下、詳細に説明する。
【００４８】
図９は、ターゲットデバイスの動作を説明するフローチャートである。ターゲットデバイス（例えばＴ１）は、データ転送リクエストパケット（Memory ReadやMemory Writeリクエスト）を受信するたびに、当該リクエストパケットを、PCIeコア６０１を介してApplication I/Fよりユーザ回路６０５に転送する動作を繰り返している。これと並行して、トラフィックモニタ６０２は、単位時間が経過したか否か判定し(Ｓ９０１)、経過した場合はユーザ回路６０５に転送されたデータ転送リクエストに基づいて、単位時間あたりのデータ転送レートを計測する（Ｓ９０２）。なお単位時間値（情報）は、レジスタ６０５に予め設定（記憶）されているものを参照する。
【００４９】
フロー制御部６０３は、計測されたデータ転送レートがレジスタ６０４に設定された上限閾値以上か否かを判定する（Ｓ９０３）。データ転送レートが所定の閾値以上と判定したとき、データ転送リクエストの発行帯域制限を指示する制限リクエスト（フロー制御リクエスト）をマスターデバイス全てに発行する（Ｓ９０４）。また、計測されたデータ転送レートがレジスタ６０４に設定された上限閾値に達していない場合は、再び単位時間が経過するまで待機する（Ｓ９０１に戻る）。
【００５０】
再びトラフィックモニタ６０２は、単位時間が経過したか否か判定し(Ｓ９０５)、経過した場合はユーザ回路６０５に転送されるデータ転送リクエストに基づいて、単位時間あたりのデータ転送レートを計測する（Ｓ９０６）。
【００５１】
フロー制御部６０３は、計測されたデータ転送レートが所定の下限閾値以下か否かを判定する（Ｓ９０７）。計測されたデータ転送レートが所定の下限閾値以下と判定したとき、データ転送リクエストの発行帯域制限の解除を指示する解除リクエスト（フロー制御リクエスト）をマスターデバイス全てに発行する（Ｓ９０８）。また、計測されたデータ転送レートがレジスタ６０４に設定された下限閾値以下に低下していない場合は、再び単位時間が経過するまで待機する（Ｓ９０５に戻る）。
【００５２】
以上のように、ターゲットデバイスは、データ転送リクエストパケットを受信するたびに、ユーザ回路６０５に転送する動作と並行してデータ転送動作が終了するまで、Ｓ９０１〜Ｓ９０８までの動作をリクエストパケット転送処理とは非同期に繰り返し処理し続ける。続いて、このようなターゲットデバイス動作を受けたマスターデバイスの動作を説明する。
【００５３】
図１０は、マスターデバイスの動作を説明するフローチャートである。まずマスターデバイス（例えばＭ１−４）は、ターゲットデバイスから制限／解除リクエストパケットを受信する（Ｓ１００１）。これは図９のＳ９０４又はＳ９０７に対応する。より具体的には、制限／解除リクエストパケットは、PCIeコア７０１を介してApplication I/Fよりフロー制御リクエスト受信部７０２に転送される。
【００５４】
フロー制御部７０３は、フロー制御リクエスト受信部７０２で受信された制限リクエスト／解除リクエストを受けて、その内容を解析する（Ｓ１００２）。解析内容としては、上述したように、発行元のターゲットデバイス、リクエストの種類（Message Broadcast/Memory Write）、当該リクエストが、データ転送リクエストの発行帯域制限をリクエストするものなのか／発行帯域制限の解除リクエストするものなのか、等である。そしてリクエストの種類がMessage Broadcastであるかの判定を行い（Ｓ１００３）、
続いて優先度の判定を行う（Ｓ１００４）。優先度情報により優先度が低い場合は、当該要求に従う。優先度が高い場合は、処理を終了する。つまり、優先度が低い場合は、制限リクエスト／解除リクエストの指示に従う（Ｓ１００５）。制限リクエストである場合、ユーザ回路７０５に対してデータ転送リクエストの発行帯域制限を指示する。一方、解除リクエストである場合、ユーザ回路７０５に対してデータ転送リクエストの発行帯域制限の解除を指示する。
【００５５】
ここでＳ１００３について詳しく説明する。ターゲットデバイスは、Message Broadcastリクエストにより帯域制限又は帯域制限解除の指示を行なう場合、全てのマスターデバイスにこのリクエストパケットが送信されたことになる。これを受信するマスターデバイス側では、各自身に設定された優先情報に従って、指示を受託するか無視するかの判定動作を行なう。これは各マスターデバイスの発行するトラフィックの優先度によって決定される。例えば、そのトラフィックの優先度が低いマスターデバイスは、帯域制限を受託するようにしたいので、優先度が低くなるように設定され、一方、そのトラフィックの優先度が高いマスターデバイスは、帯域制限を受託しないようにしたいので、優先度が高くなるように設定される。つまり、とりあえずターゲットデバイスは、全てのマスターデバイスにMessage Broadcastリクエストをいっておき、そのリクエスト採否の判定（受託又は無視）は、マスターデバイス側で判定させるようにしているのである。
【００５６】
これに対しＳ１００３で、Message Broadcastリクエストでない場合とは、即ち、Memory Writeリクエストである場合に該当する。PCIeに準拠するものであり宛先を直接指定可能なタイプのリクエストパケットである。従って、受信されたパケットタイプがMemory Writeリクエストである場合は、ターゲットデバイスが、当該マスターデバイスに直接宛先を指定してMemory Writeリクエストを送っていることになる。つまり、ターゲットデバイス側で優先度判定が行われて、優先度が低いマスターデバイスに対して直接送信したものであるから、再度マスターデバイス側で優先度の判定を省略できるようにするため、Ｓ１００３の判定が行われる。よって、Message Broadcastリクエストでない場合（Memory Writeリクエストである場合）、優先度判定なしに帯域制限又は帯域制限解除の指示に従えばよい。なお、この点については変形例で再度後述する。
【００５７】
ここで、レジスタ６０４に設定される単位時間値、上限閾値、及び下限閾値について補足説明を行っておく。上述したように、単位時間はトラフィックモニタ６０２が単位時間あたりのリクエスト量(転送レート)を計測する際に利用される。この単位時間値は、経路上を流れるトラフィックのうち時間周期の制約があるものがある場合、そのデータ転送に要求される時間周期よりも短い時間を指定する。例えば、前述の複写機のデータ転送の例に従うと、95μsec周期で転送時間制約があるデバイスが存在したので、ターゲットデバイスのレジスタで転送レートを演算する際の時間周期は95μsecよりも十分に小さい値にする必要がある。さらに、レジスタに設定する単位時間値は、時間周期あたりに転送しなければならないパケット数が117 個であったので、精度の高い転送レートを演算するために、少なくとも数個から数十個以上のリクエストパケットが転送可能な時間よりも長い時間に設定することが望ましい。複写機のデータ転送のようにPCIe x1レーンを用いて、Memory Writeリクエストパケット1つで128Byteのデータ転送を行う場合は、×1レーンの1Symbol Time(1Byte転送にかかる時間)が4nsなので1パケットの転送に少なくとも128×4 = 512nsの時間を要する。10個のパケットが連続して転送されるのに要する時間は、5.12μsecとなる。
【００５８】
次に上限閾値は、通常は、転送レート限界に達する前に帯域制限を指示するために、単位時間あたりに転送可能なデータ量の8割程度の値を設定しておくことが望ましいが、PCIe通信路のパケット伝送に要するレイテンシに応じて調整することが望ましい。ターゲットデバイスからBroadcast転送が通知されて、マスターデバイスに到達するまでに要するレイテンシは、PCIeリンク幅(レーン数)や、何段のPCIeスイッチを経由するか等に依存する。レイテンシが小さい場合、上限閾値を(例えば、単位時間あたりに転送可能なデータ量の９割)大きい値に設定することができるが、レイテンシが大きい場合は、上限閾値を小さめ(例えば、単位時間あたりに転送可能なデータ量の７割)に設定することで、効率のよいトラフィック調整が可能となる。
【００５９】
また下限閾値は、トラフィックの混雑が解消された場合に帯域制限をいち早く解除するために、単位時間あたりに転送可能なデータ量の５割程度の値を設定しておくことが望ましいが、やはりPCIe通信路のパケット伝送に要するレイテンシに応じて調整することが望ましい。レイテンシが小さい場合は、下限閾値を(例えば、単位時間あたりに転送可能なデータ量の７割)大きい値に設定することができるが、レイテンシが大きい場合は、下限閾値を小さめ(例えば、単位時間あたりに転送可能なデータ量の３割)に設定することで、効率のよいトラフィック調整が可能となる。
【００６０】
例えば、上述したように10個の128Byteパケットが連続して転送されるのに要する時間、5.12μsecを単位時間値としてレジスタに設定したとすると、上限閾値としてレジスタには単位時間あたりに転送可能なデータ量の８割を想定すると、128Byte×10 × 0.8 = 1024Byteを設定する。下限閾値としてレジスタには単位時間あたりに転送可能なデータ量の５割を想定すると、128Byte×10 × 0.5 = 640Byteを設定することになる。
【００６１】
以上、実施形態１によれば、PCIe規格に対応したスイッチデバイスや、通信コアの回路を用いて、マスターデバイスとターゲットデバイスを接続し、ターゲットデバイスが、PCIe規格におけるクレジットベースのフロー制御によって、データ転送が停止する前に、ターゲットデバイスがマスターデバイスに対して、データ転送リクエストの制限を指示するので、データ転送の競合が生じた場合にデータ転送レートの低下と、パケット転送に要するレイテンシの発生を最小限に抑制することができる。また、マスターデバイスに、直接データ転送リクエストの制限を指示するので、レイテンシをより小さくできる。また、Message Broadcastリクエストによるブロードキャスト転送を用いるため、マスターデバイスの数が増えたり減ったりした場合でも、ターゲットデバイスの構成やレジスタ設定を変更する手間も削減される。
【００６２】
[変形例]
図１１は、本変形例によるマスターデバイス及びターゲットデバイスの動作を説明するPCI Expressシステムの構成を示す図の一例である。本変形例によるターゲットデバイスＴ１の転送レートがＴ１に設定された上限閾値を超えると、Ｔ１は直ちにPCIeの「Memory Writeリクエスト」を発行する。ターゲットデバイスにおいて、優先度の判定を行い、優先度の低いとされるマスターデバイスをMemory Writeリクエスト（パケット）により直接宛先を指定して、制限／解除リクエストを送信するのである。これにより予めＴ１のレジスタに設定された優先度の低いとされるマスターデバイスＭ２、Ｍ４にのみ、帯域制限の指示がなされる。そして、当該制限／解除リクエストに従い、Ｍ２、Ｍ４はＴ１に対するデータ転送を一時停止させる（もしくはデータ転送レートを低下させる）。このため、PCIeのリンク1おいてクレジットが枯渇することはなくなり、さらにリンク２、リンク３においても、クレジットが枯渇することはなくなる。よって優先度の高いＭ１、Ｍ３からのトラフィックが妨げられることはなく連続したデータ転送が可能となる。つまり、優先度の低いとされるマスターデバイスＭ２、Ｍ４に、帯域制限の指示がなされるので、マスターデバイス側では優先度を判定せず当該指示に従えばよい。マスターデバイス側で優先度を判定する回路は不要になり、より簡易な構成で本発明を実現できるようになる。
【００６３】
図１２は、本実施形態に係るターゲットデバイス構成を示す図の一例である。ターゲットデバイス（Ｔ１、Ｔ２に相当）は、PCIe通信コア６０１、トラフィックモニタ６０２、フロー制御部６０３−２、レジスタ６０４−２、ユーザ回路６０５、及びメモリ６０６を含む構成である。本変形例によるフロー制御部６０３−２、レジスタ６０４−２の説明を行い、他は上述したとおりであるので説明を省略する。
【００６４】
レジスタ６０４−２には、マスターデバイス毎のマスター優先度情報がさらに設定（記憶）されている。例えば、Ｍ１、Ｍ３は優先度が高い、Ｍ２，Ｍ４は優先度が低いといった情報が記載されている。
【００６５】
フロー制御部６０３−２は、上述したように、単位時間毎に、計測されたデータ転送レートがレジスタ６０４に設定された上限閾値以上か否かを判定する（Ｓ９０３）。データ転送レートが所定の閾値以上と判定したとき、データ転送リクエストの発行帯域制限を指示する制限リクエスト（フロー制御リクエスト）をマスターデバイスに発行する（Ｓ９０４）のであるが、レジスタ６０４−２からマスター優先度情報を取得して、優先度に基づいて、制限リクエストを発行するマスターデバイスを決定する。例えば、マスター優先度情報を取得して、制限リクエストを発行するマスターデバイスを、優先度の低いＭ２、Ｍ４と決定する。そしてその決定に従って、該当するマスターデバイスを宛先として、Memory Writeリクエストパケットを発行する。
【００６６】
これを受信したマスターデバイス（Ｍ２、Ｍ４）は、図１０の（Ｓ１００３）で説明されたように、優先度判定を省略して、そのまま当該リクエストによる指示に従う動作を行なう。なお、本変形例によるマスターデバイスにおいては、レジスタ７０４（図７）は省略してもよい。マスターデバイス側で優先度の判定は不要だからである。
【００６７】
以上、本変形例のターゲットデバイスによれば、優先度の低いとされるマスターデバイスＭ２、Ｍ４にのみ、帯域制限の指示がなされるので、マスターデバイス側では優先度を判定せず当該指示に従えばよい。つまり、マスターデバイス側で優先度を判定する回路は不要になり、より簡易な構成で本発明を実現できるようになる。また、特定の優先度の低いマスターデバイスのみにMemory Writeリクエストを発行（転送）するため、優先度の高いマスターデバイスに対する通信経路に不要なパケットが転送されず、データ伝送路の利用効率の向上が期待できる。
【００６８】
[実施形態２]
実施形態２として、本発明に係るデータ通信システムを、スキャンユニット２機(表面ユニット、裏面ユニット)を備える複合機（ＭＦＰ）に適用する。図１３は、ＭＦＰに本発明に係るPCI Expressシステムを適用した構成を示す図の一例である。
【００６９】
本実施形態においては、優先度の高いトラフィックを発生するマスターデバイスは、２つのスキャナユニット（スキャン１、 スキャン２）であるものとする。本データ転送システムでは、スキャナユニット２台によって、原稿の両面を同時に読み取ることを想定する。また、優先度の低いトラフィックを発生するマスターデバイスは、２つの画像処理ユニット（画像処理１、画像処理２）であるものとする。
【００７０】
スキャン１、スキャン２は、スキャナヘッドのメカ駆動に同期してラインデータの転送を処理しなければならないので、上述したような、ライン周期に同期した転送制約を有する。一方、画像処理ユニット（画像処理１、画像処理２）は、ライン周期に同期した転送制約がないため、データ転送が一時的に止まったり再開したりする動作が許容される特徴を有する。また、各マスターデバイスに対するターゲットデバイスは、画像データを格納するメモリである。具体的にターゲットデバイスは、処理画像データを格納するためのメモリユニット１(メモリ1)と、スキャン画像データを格納するためのメモリユニット２(メモリ２)が独立して構成される。
【００７１】
以上のように、スキャン１、スキャン２のマスターデバイスは、PCIeリンクとPCIeスイッチ（ＳＷ１−３）を経由して、メモリ２にデータ転送リクエストを発行し、画像処理１、画像処理２のマスターデバイスは、PCIeリンクとPCIeスイッチを経由して、メモリ１にデータ転送のリクエストを発行する構成とされる。
【００７２】
上述したプロッタの例と同様に、スキャン１、スキャン２におけるデータ転送制約の計算例を示す。
スキャナ1ライン周期(s) = 1 / { [ヘッド移動速度 (mm/s)] × [1mmあたりの画素数] }
計算を単純にするために、スキャナの読み取り解像度を、主走査/副走査ともに50dot/mmとし、RGBカラー読み取りを想定して、各画素のビット数は8bitであるとする。また、A4縦の原稿サイズを想定して、主走査方向210mm×副走査方向297mmであるとする。また、読み取り速度は60枚分を想定する。このとき、1枚あたりの読み取り時間は１秒となるので、副走査方向の紙送り速度は297mm/sである。スキャナ1ライン周期を計算すると、
1/ (297 × 50) = 0.000067 s = 67μs
になる。主走査方向の一色あたりの画素数は、
210mm×50dot/mm = 10500 dot
となり、データ量は、10500dot×8bit / 8 = 10500Byteとなる。さらに、RGB3色分のデータ量を計算すると、
10500Byte×3色＝31500Byte
である。即ちスキャン画像データの転送は、31500 Byte を67μsで完了する必要がある。このときのデータ転送レートは、31500Byte / 0.000067s=約470MB/sとなる。PCIeは1レーンあたり、250MB/s以下の転送性能限界があるため、プロトコル損失も考慮して、本実施形態では、図１３に示されるように、マスターデバイス側のPCIeリンク幅はx4レーン(1GB/s以下の転送性能限界)を用い、ターゲットデバイス側のPCIeリンク幅はPCIe x4リンク経由のトラフィックが２本通過するため、x8を用いるものとする。
【００７３】
１ラインのデータを送る場合、128Byteのパケットに区切って転送する場合を想定すると、
31500Byte / 128Byte = 247 個
であり、247個の128Byteデータパケットを1ライン周期内67μsに転送しなければならないデータ転送制約を満たす必要がある。
【００７４】
ターゲットデバイスとなるメモリ１、メモリ２は、実施形態１で示したターゲットデバイスを用いる。67μsec周期で転送時間制約があるマスターデバイス(スキャン１、スキャン２)が存在するので、ターゲットデバイスのレジスタで転送レートを演算する際の単位時間値は、67μsecよりも十分に小さい値にする必要がある。さらに、レジスタに設定する単位時間値は、時間周期あたりに転送しなければならないパケット数が247 個に対して、精度の高い転送レートを演算するために、数個から数十個以上のリクエストパケットが転送可能な時間よりも長い時間に設定する。パケット転送時間は、PCIe x4レーンを用いて、Memory Writeリクエストパケット１つで128Byteのデータ転送を行う場合は、×4レーンの１Symbol Time(1Byte転送にかかる時間)が1nsなので１パケットの転送に少なくとも128nsの時間を要する。転送レートの計測に20個のパケットが連続して転送されるのに要する時間を用いる場合、128ns×20 = 2560ns = 2.56μsecとなる。ターゲットデバイスのレジスタの単位時間値に2.56μsを設定する。
【００７５】
転送レート上限閾値としてレジスタには、単位時間あたりに転送可能なデータ量の８割を想定し、128Byte×20 × 0.8 = 2048Byteを設定する。転送レート下限閾値としてレジスタには単位時間あたりに転送可能なデータ量の５割を想定し、128Byte×20 × 0.5 = 1280Byteを設定する。
【００７６】
なお、図１２に示したターゲットデバイスとして、メモリ１、メモリ２に用いる場合は、メモリ１のレジスタのマスター優先度情報には、優先度の低いマスターデバイスとして、画像処理１、画像処理２のマスターデバイスを設定しておく。
【００７７】
マスターデバイスとなるスキャン１、スキャン２、画像処理１、画処理２は、図７に示したマスターデバイスを用いる。つまり、マスターデバイスのレジスタには、トラフィック優先度情報を設定する。具体的には、スキャン１、スキャン２のレジスタには、優先度は高い、画像処理１、画像処理２のレジスタには、優先度は低い、を示す情報を設定する。
【００７８】
再び図１３を参照して、ターゲットデバイスであるメモリ１の転送レート(単位時間2.56μsecあたりのリクエスト量)が、メモリ１のレジスタに設定された転送レート上限閾値(2048Byte)を超えると、直ちにPCIeのMessage Broadcastリクエスト(又はMemory Writeリクエスト)によって、マスターデバイスであるスキャン１、スキャン２、画像処理１、画像処理２(Memory Writeリクエストの場合は、画像処理１、画像処理２のみ)に、帯域制限を指示するリクエストパケットが通知される。このとき、通知パケットの転送に要する時間は、PCIe×8リンク―ＳＷ２-PCIe×4リンク―ＳＷ１(又はＳＷ３)―PCIe×4リンクの経路をパケットが通過する時間であり、ＳＷ一つあたりのパケット通過レイテンシをx8ポートで100ns、x4ポートで200nsとしても、合計で300ns程度となり、スキャン１、スキャン２のデータ転送周期である67μsに対して、十分に早い時間でマスターデバイスに通知が届く。
【００７９】
そして画像処理１、画像処理２は、自ノードのトラフィックに係る優先度が低いので、メモリ１に対するデータ転送を一時停止する。このため、PCIeのリンク１おいてクレジットが枯渇することがなくなり、さらにリンク２、リンク３においても、クレジットが枯渇することがなくなる。よって、優先度の高いスキャン１、スキャン２からのトラフィックは妨げられることはなく連続したデータ転送が可能となる。
【００８０】
さらに、画像処理１、画像処理２のデータ転送が停止し、メモリ１におけるデータ転送レートが、転送レート下限閾値(1280Byte)以下に低下すると、同様に、メモリ１はMessage Broadcastリクエスト(又はMemory Writeリクエスト)によって、マスターデバイスであるスキャン１、スキャン２、画像処理１、画像処理２(Memory Writeリクエストの場合は、画像処理１、画像処理２)に、帯域制限の解除を指示するリクエストパケットが通知される。通知パケットを受信した画像処理１、画像処理２は、再びデータ転送を開始する。
【００８１】
以上の動作を繰り返すことで、優先度の低い画像処理１、画像処理２も、メモリ１が単位時間あたりに転送可能なデータ量(転送レート)の５割―８割利用されている状態を維持しながら画像処理を進めることができ、尚且つ、優先度の高いスキャン１、スキャン２は、247個の128Byteデータパケットを１ライン周期内67μsに転送する動作を継続、即ち非常に厳格なデータ転送制約条件下において動作を行なうことが可能である。
【００８２】
[補足]
補足的に、先に登場したASI（Advanced Switching Interconnect）規格によるフロー制御について言及しておく。上述したように、PCIeより派生したASI規格は、PCIe規格よりも更に高度なフロー制御方式として、SBFC（Status Based Flow Control）が規定されている。SBFCによれば、スイッチデバイスは出力先のポートにおけるクレジット不足（枯渇）が生じると、スイッチデバイスの入力ポートに接続されたマスターデバイスに対して、クレジット不足の情報を通知する。通知によりマスターデバイスは１Ｈｏｐ先のポートのクレジット不足を検知できるので、そのポート宛てのリクエストを一時停止させる動作を行い他のトラフィック転送への影響を防止できる。以下詳しく説明する。
【００８３】
図１４は、ASIにより構成されたデータ通信システムを示す図の一例である。ASIでは、クレジット枯渇が発生したリンク１の１Ｈｏｐ先のデバイスまで、出力ポートAにおけるクレジット枯渇の情報が伝わる。このため、ＳＷ１において、ＳＷ１−ＳＷ２間のリンク２において、クレジットが枯渇する前にＭ２―ＳＷ１間のリンク４においてクレジットが枯渇する。このとき、Ｍ１―ＳＷ１―ＳＷ２―Ｍ２の経路における全てのリンクでは、いずれもクレジットの枯渇は発生しない。同様に、Ｍ３―ＳＷ３−ＳＷ２−Ｔ２の経路における全てのリンクでもクレジットの枯渇は発生しない。このため、優先度の高いＭ１、Ｍ３のトラフィックが停止することがなくなる。このように、スイッチの出力ポートを共有していても、優先度の低いトラフィックの転送が止まっているときは、優先度の高いトラフィックの転送に波及する前に１Ｈｏｐ手前で優先度の低いトラフィックを止めることができる。
【００８４】
しかしながら、スイッチを経由する段数が増えてくると、宛先ポートのクレジット不足がマスターデバイスまで到達するまでの遅延時間が長くなる。再度図１４を参照すると、Ｍ２やＭ４のマスターデバイスがデータ処理能力が低下しているＴ１宛てのリクエストを停止させる前に、ＳＷ１、ＳＷ２、ＳＷ３の経路上に多くのパケットを発行してしまうため、優先度の高くしたいマスターデバイスであるＭ１、Ｍ３のリクエストがＴ２に届くまでのレイテンシを悪化させる可能性がある。
【００８５】
図１５は、ＳＷ１の模式的な拡大図の一例である。勿論、ＳＷ２、ＳＷ３も同様な構成と考えてよい。ＳＷ１の内部には、各ポートからの入力パケットを調停するアービタと、複数のデータパケットが格納できる内部バッファとが実装されている。Ｍ２は、クレジットが枯渇するまでの間は、ＳＷ１に対してリクエストパケットを依然転送し続けているので、内部バッファに多くのＭ２からのパケットが格納される。図中、Ｍ１からのリクエストパケットをバッファする前に、Ｍ２からのリクエストパケットが既に６個格納されている。このため、Ｍ１からのリクエストは、６個の先行するＭ２からのパケットがすべて転送され終わらないと、ＳＷ２に対して転送されず、レイテンシが増加する。
【００８６】
具体的に、PCIeリンクのレーン数をx1(250MB/s)、リクエストパケットサイズを128Byteとすると、１パケットの転送時間は約512nsとなる。このため、６個のパケット転送が完了するのに要する時間は、512ns×6=3072nsとなり、Ｍ１のパケット転送のレイテンシが3μsec程度、増加してしまうことになる。一般的なPCIeスイッチデバイスでは、数KB―10KB程度の内部バッファが実装されているため、内部バッファに格納される先行リクエストを待たさせることによるレイテンシ悪化現象は、より顕著に現れることになる。実施形態２等において説明したように、複写機の画像データ転送のように１ラインのデータ転送に許容される時間が数十μsである場合は、著しく印刷やスキャンの性能を低下させる原因となる。このように、ASI規格のSBFCではクレジット枯渇の情報が各デバイスを順々に伝わるため、マスターデバイスからのリクエスト発行が停止されるまでにレイテンシが発生し、通信経路上のバッファの影響によって更に他のデバイスからのリクエストのレイテンシを悪化させるという問題がある。
【００８７】
従って、上述の複合機（ＭＦＰ）のようなデータ転送制約条件が非常に厳格である情報処理装置に対して、ASI規格によるデータ転送システムを適用することは難しいのである。本発明に係るデータ転送システムは、マスターデバイスに、直接データ転送リクエストの制限を指示する。つまり、クレジット不足を通知する範囲がＨｏｐ数等で限定されないので、経路中のスイッチのバッファにデータが溜まりにくくレイテンシをより小さくできる。
【００８８】
[総括]
以上、本発明に係るデータ通信システムにおいては、PCIe規格に対応したスイッチデバイスや、通信コアの回路を用いており、各ターゲットデバイスと各マスターデバイスが直接トラフィック調停の制御を処理するので、各PCIeリンク間でデータ転送能力を超えたリクエストの集中が発生せず、クレジットベースのフロー制御によるデータ転送の停止が発生しない。このため、組み込み用途の電子機器のような単位時間あたりのデータ転送量の制約が非常に厳しい用途のデータ通信に用いても、データ転送の競合が生じた場合にデータ転送レートの低下や、経路途中のスイッチ内部バッファの影響によるパケット転送レイテンシの発生を最小限に抑制することができる。特に例えば、複写機（ＭＦＰ）のスキャナやプロッタのような、主走査、副走査方向の２次元画像データを、主走査方向に１ラインずつ、スキャナヘッドやプロッタ感光体の機械駆動速度に合わせて転送する、ライン同期転送のトラフィックと画像処理などのライン同期制約のないトラフィックが、共通のデータ伝送路を共有する構成のデータ転送システムにおいて顕著な効果が期待できる。
【００８９】
従って本発明によれば、パケット転送に要するレイテンシの発生を抑制し、効率の良いデータ転送を実現するデータ転送システム及びデータ転送方法を提供することができる。
【００９０】
なお、本発明は係る特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
【符号の説明】
【００９１】
６０１        PCIe通信コア
６０２        トラフィックモニタ
６０３        フロー制御部
６０３−２        フロー制御部
６０４        レジスタ
６０４−２        レジスタ
６０５        ユーザ回路
７０１        PCIe通信コア
７０２        フロー制御リクエスト受信部
７０３        フロー制御部
７０４        レジスタ
７０５        ユーザ回路
【先行技術文献】
【特許文献】
【００９２】
【特許文献１】特開平１０―９１５４９号公報
【特許文献２】特開２００３−２０９５６８号公報
【特許文献３】特許２９１２２２５号公報
【図１】
2010218351.tif 000003
【図２】
2010218351.tif 000004
【図３】
2010218351.tif 000005
【図４】
2010218351.tif 000006
【図５】
2010218351.tif 000007
【図６】
2010218351.tif 000008
【図７】
2010218351.tif 000009
【図８】
2010218351.tif 000010
【図９】
2010218351.tif 000011
【図１０】
2010218351.tif 000012
【図１１】
2010218351.tif 000013
【図１２】
2010218351.tif 000014
【図１３】
2010218351.tif 000015
【図１４】
2010218351.tif 000016
【図１５】
2010218351.tif 000017