(57)【要約】【課題】短い周期で一定量のデータを必ず伝送し終わらなければならない、というような同期転送の制約が強い用途においても、低コスト、かつ、少ない再送オーバーヘッドでエラー発生時の処理を効率良く処理することができるデータ通信装置、画像処理システムおよびデータ通信方法を提供する。【解決手段】リクエスト／データパケットの送信が開始されてから次のリクエスト／データパケットの送信が開始されるまでの間、ダミーリクエスト生成手段１２で生成したデータ応答を期待しないダミーリクエストパケットを連続して送信する。これにより、同期転送時の再送オーバーヘッドを軽減することができるので、短い周期で一定量のデータを必ず伝送し終わらなければならない、というような同期転送の制約が強い用途においても、低コスト、かつ、少ない再送オーバーヘッドでエラー発生時の処理を効率良く処理することができる。【選択図】        図１６
2008204245.tif 000002
【特許請求の範囲】
【請求項１】
送信したリクエスト／データパケットが送信先の装置で正常に受信できた場合には、その旨を示すＡＣＫ（ACKnowledgement）パケットを送信先の装置から受信し、送信したリクエスト／データパケットが送信先の装置で正常に受信できなかった場合には、その旨を示すＮＡＫ（Negative AcKnowledgement）パケットを送信先の装置から受信するデータ通信装置において、
送信した前記リクエスト／データパケットに対するＡＣＫ応答があるまで当該リクエスト／データパケットを記憶するパケット記憶手段と、
データ応答を期待しないダミーリクエストパケットを生成するダミーリクエスト生成手段と、
ＡＣＫ応答がなく前記パケット記憶手段に前記リクエスト／データパケットが記憶されている状態でタイムアウトが発生していない場合、または、受信したＡＣＫ／ＮＡＫパケットにエラーが発生していた場合には、前記ダミーリクエスト生成手段に対して前記ダミーリクエストパケットの発行を指示するダミーリクエスト発行指示手段と、
ＮＡＫ応答を受信した場合、または、ＡＣＫ応答がなく前記パケット記憶手段に前記リクエスト／データパケットが記憶されている状態でタイムアウトが発生した場合には、前記パケット記憶手段に記憶されている前記リクエスト／データパケットを再送するパケット再送手段と、
を備えることを特徴とするデータ通信装置。
【請求項２】
通信プロトコルとしてPCI Express規格が採用されており、前記ダミーリクエスト生成手段は、前記ダミーリクエストパケットとして、PCI Express規格におけるPostedのメッセージパケット、またはPCI Express規格におけるPostedのメモリライトリクエストを発行する、
ことを特徴とする請求項１記載のデータ通信装置。
【請求項３】
前記リクエスト／データパケットは、メモリリードリクエスト、メモリリードに対するデータ転送応答（コンプリーション）、メモリライトリクエストのいずれか、またはそれぞれの組み合わせにより構成されたものである、
ことを特徴とする請求項２記載のデータ通信装置。
【請求項４】
リクエスト／データパケットを正常に受信できた場合には、その旨を示すＡＣＫ（ACKnowledgement）パケットを前記リクエスト／データパケットを送信してきた装置に対して送信し、前記リクエスト／データパケットが正常に受信できなかった場合には、その旨を示すＮＡＫ（Negative AcKnowledgement）パケットを前記リクエスト／データパケットを送信してきた装置に対して送信するデータ通信装置において、
ＮＡＫパケットを送信したパケット番号の前記リクエスト／データパケットが正常に受信される迄、前記リクエスト／データパケットのパケット番号と同じ番号の前記ＮＡＫパケットを繰り返し送信し続けるＮＡＫ連続送信手段を備える、
ことを特徴とするデータ通信装置。
【請求項５】
ＡＣＫパケットを送信したパケット番号の前記リクエスト／データパケットが受信される迄、前記リクエスト／データパケットのパケット番号と同じ番号の前記ＡＣＫパケットを繰り返し送信し続けるＡＣＫ連続送信手段を更に備える、
ことを特徴とする請求項４記載のデータ通信装置。
【請求項６】
リクエスト／データパケットを正常に受信できた場合には、その旨を示すＡＣＫ（ACKnowledgement）パケットを前記リクエスト／データパケットを送信してきた装置に対して送信し、前記リクエスト／データパケットが正常に受信できなかった場合には、その旨を示すＮＡＫ（Negative AcKnowledgement）パケットを前記リクエスト／データパケットを送信してきた装置に対して送信するデータ通信装置において、
ＡＣＫパケットを送信したパケット番号の前記リクエスト／データパケットが受信される迄、前記リクエスト／データパケットのパケット番号と同じ番号の前記ＡＣＫパケットを繰り返し送信し続けるＡＣＫ連続送信手段を備える、
ことを特徴とするデータ通信装置。
【請求項７】
通信プロトコルとしてPCI Express規格が採用されており、前記リクエスト／データパケットは、メモリリードリクエスト、メモリリードに対するデータ転送応答（コンプリーション）、メモリライトリクエストのいずれか、またはそれぞれの組み合わせにより構成されたものである、
ことを特徴とする請求項４ないし６のいずれか一記載のデータ通信装置。
【請求項８】
複数のパケット群からなるトランザクションであるリクエスト／データパケットを送信するユーザーロジックと、
前記ユーザーロジックから受信したリクエスト／データパケットを他の装置へ送信し、送信したリクエスト／データパケットが送信先の装置で正常に受信できた場合には、その旨を示すＡＣＫ（ACKnowledgement）パケットを送信先の装置から受信し、送信したリクエスト／データパケットが送信先の装置で正常に受信できなかった場合には、その旨を示すＮＡＫ（Negative AcKnowledgement）パケットを送信先の装置から受信するデータ通信装置と、を備える画像処理システムにおいて、
前記ユーザーロジックは、データ応答を期待しないダミーリクエストパケットを生成するダミーリクエスト生成手段を備え、
前記データ通信装置は、送信した前記リクエスト／データパケットに対するＡＣＫ応答があるまで当該リクエスト／データパケットを記憶するパケット記憶手段と、ＡＣＫ応答がなく前記パケット記憶手段に前記リクエスト／データパケットが記憶されている状態でタイムアウトが発生していない場合、または、受信したＡＣＫ／ＮＡＫパケットにエラーが発生していた場合には、前記ダミーリクエスト生成手段に対して前記ダミーリクエストパケットの発行を指示するダミーリクエスト発行指示手段と、ＮＡＫ応答を受信した場合、または、ＡＣＫ応答がなく前記パケット記憶手段に前記リクエスト／データパケットが記憶されている状態でタイムアウトが発生した場合には、前記パケット記憶手段に記憶されている前記リクエスト／データパケットを再送するパケット再送手段と、
を備えることを特徴とする画像処理システム。
【請求項９】
送信したリクエスト／データパケットが送信先の装置で正常に受信できた場合には、その旨を示すＡＣＫ（ACKnowledgement）パケットを送信先の装置から受信し、送信したリクエスト／データパケットが送信先の装置で正常に受信できなかった場合には、その旨を示すＮＡＫ（Negative AcKnowledgement）パケットを送信先の装置から受信するデータ通信方法において、
送信した前記リクエスト／データパケットに対するＡＣＫ応答があるまで当該リクエスト／データパケットを記憶するパケット記憶工程と、
データ応答を期待しないダミーリクエストパケットを生成するダミーリクエスト生成工程と、
ＡＣＫ応答がなく前記パケット記憶工程に前記リクエスト／データパケットが記憶されている状態でタイムアウトが発生していない場合、または、受信したＡＣＫ／ＮＡＫパケットにエラーが発生していた場合には、前記ダミーリクエストパケットの発行を指示するダミーリクエスト発行指示工程と、
ＮＡＫ応答を受信した場合、または、ＡＣＫ応答がなく前記リクエスト／データパケットが記憶されている状態でタイムアウトが発生した場合には、記憶されている前記リクエスト／データパケットを再送するパケット再送工程と、
を含むことを特徴とするデータ通信方法。
【請求項１０】
リクエスト／データパケットを正常に受信できた場合には、その旨を示すＡＣＫ（ACKnowledgement）パケットを前記リクエスト／データパケットを送信してきた装置に対して送信し、前記リクエスト／データパケットが正常に受信できなかった場合には、その旨を示すＮＡＫ（Negative AcKnowledgement）パケットを前記リクエスト／データパケットを送信してきた装置に対して送信するデータ通信方法において、
ＮＡＫパケットを送信したパケット番号の前記リクエスト／データパケットが正常に受信される迄、前記リクエスト／データパケットのパケット番号と同じ番号の前記ＮＡＫパケットを繰り返し送信し続ける、
ことを特徴とするデータ通信方法。
【請求項１１】
リクエスト／データパケットを正常に受信できた場合には、その旨を示すＡＣＫ（ACKnowledgement）パケットを前記リクエスト／データパケットを送信してきた装置に対して送信し、前記リクエスト／データパケットが正常に受信できなかった場合には、その旨を示すＮＡＫ（Negative AcKnowledgement）パケットを前記リクエスト／データパケットを送信してきた装置に対して送信するデータ通信方法において、
ＡＣＫパケットを送信したパケット番号の前記リクエスト／データパケットが受信される迄、前記リクエスト／データパケットのパケット番号と同じ番号の前記ＡＣＫパケットを繰り返し送信し続ける、
ことを特徴とするデータ通信方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ通信装置、画像処理システムおよびデータ通信方法に関する。
【背景技術】
【０００２】
データ通信装置は、図１７に示すように、互いの送信ポートＴＸ、受信ポートＲＸがシリアル伝送路で接続され、この間をリクエストパケット／データパケットならびに、リクエストパケットやデータパケットが受信されたことを送信元に応答するＡＣＫ（ACKnowledgement）パケット、あるいは受信したリクエストやデータパケットにエラーが混入していて正常に受信できなかったことを伝えるＮＡＫ（Negative AcKnowledgement）パケットが相互に転送される。このようにパケットデータ転送時にエラーが発生したか否かを送信側に伝えることで、再送効率を向上させることができる。
【０００３】
ここで、連続したデータによって構成されるトランザクションのデータ転送例を図３８に示す。図３８は、パケットにエラーが発生した場合の転送例を示す模式図である。図３８に示すように、送信したパケットにエラーが混入すると、相手先の装置はＮＡＫパケットを応答してくる。ＮＡＫ１（１はエラーとなったパケット番号）を受信した送信側の装置は、パケット１からデータの送信をやりなおす再送処理を実行する。図３８に示す例では、パケット１を再送するのに要した時間が、エラー処理のオーバーヘッドとなる。
【０００４】
図３９は、図３８に示す再送動作の例を示すシーケンス図である。図３８は、図３９における装置Ａの送信ポートＴＸと受信ポートＲＸのパケットのタイミングチャートに相当する。図３９に示すように、パケット転送にエラーが発生した場合にＮＡＫパケットが応答されてくることにより、ただちに再送動作が開始される。これにより、少ない時間のオーバーヘッドが発生するだけでエラーの無いデータ転送が成立するようになっている。
【０００５】
図４０は、ＮＡＫ応答パケットにもエラーが発生した場合の転送例を示す模式図である。図４０に示す例では、ＮＡＫ２応答パケットがエラーとなって受信できておらず、送信側の装置は次のパケット３を転送している。しかし、相手先の装置では、ＮＡＫ応答したパケット２と異なるパケット番号のパケットを受信したため、再度ＮＡＫ２を応答してくる。送信側の装置では、ＮＡＫ２を受信することによりパケット２からの再送を開始するため、パケット２、パケット３の再送に要する時間だけのオーバーヘッドしか発生させずに、再送処理を実行することができている。図４１は、図４０に示す再送動作の例を示すシーケンス図である。
【０００６】
また、従来のデータ通信装置では、前述したように送信したパケットに対するＡＣＫ／ＮＡＫパケットのいずれの応答も無い時間をタイマーで計測し、一定の時間が経っても応答が戻らないときには、自動的にパケットの再送を開始する機能も有しており、ＡＣＫ／ＮＡＫパケットが何らかの原因で消失してしまった場合でも、通信がエラーによって遮断されないようになっている。
【０００７】
以上のように、従来のデータ通信装置では、受信したリクエストパケットやデータパケットに対して、正常に受信されたかどうかをＡＣＫ／ＮＡＫパケット応答により送信元の装置に通達することによって、少ない時間のオーバーヘッドで再送の制御を実現している。
【０００８】
また、近年、ローカルＩ／Ｏの標準インタフェースとして登場したPCI Express等の高速シリアル通信規格においても、同様の方式が採用されている。
【０００９】
一方、PCI Express規格で規定された再送の仕組みに加えて、さらに高い信頼性を実現する技術が、特許文献１に開示されている。特許文献１に開示されている技術によれば、図４２に示すように、PCI Expressによるデータ通信路を２重に設けることで、一方のリンクで発生したエラーをキャンセルすることにより、エラーの無い通信を確保するものである。
【００１０】
ところで、データ転送装置におけるエラー発生の悪影響を受けやすい装置の代表的なものとしては、画像出力装置や音声出力装置などが挙げられる。例えば、データ転送装置におけるエラー発生の影響は、紙に画像データを印刷する画像出力装置では印刷画像のノイズとして現れたり、動画を再生する画像出力装置では画像のチラツキやコマ落ちという形で現れたりする。また、音声出力装置でも同様に、エラーの影響は、音声のとぎれやノイズという形で現れることになる。この他にも、光ディスク書き込み用途のデータ転送装置などにおいても、同様の問題が発生することがある。
【００１１】
そこで、上述したような装置では、図４３に示すように、たとえデータ転送装置でエラー発生が起きても出力装置側への影響が出ないように、あらかじめ大きなサイズの画像データバッファメモリや音声データバッファメモリを出力装置側に備える方式が多く用いられている。この場合、出力装置の必要とするデータ転送能力に対して十分大きなサイズのバッファメモリと、十分高速なデータ転送装置とを搭載することによって、ノイズなどの要因で生じたエラー再送によるデータ転送速度の乱れを吸収し、出力装置から安定した出力が得られるようにしている。
【００１２】
【特許文献１】特開２００４−３２６１５１号公報
【発明の開示】
【発明が解決しようとする課題】
【００１３】
上述したように、従来のデータ通信装置では、トランザクションが長く連続した大量のデータ通信によって構成される場合には、少ない時間のオーバーヘッドで再送の制御を実現している。しかしながら、短い周期で一定量のデータを必ず伝送し終わらなければならない、というような同期転送の制約が強い用途においては、再送のオーバーヘッドが大きすぎて同期転送違反が生じる場合がある。この点について具体的に説明する。図４４および図４５は、短い周期で一定量のデータを必ず伝送し終わらなければならない、という同期制約が強いデータ転送の例である。図４４および図４５に示す例では、１つのトランザクションが２つのパケットで構成され、各トランザクションはかならず許容時間内に完了しなければならない、という同期転送制約があるものとする。図４４および図４５に示す例は、エラー発生が無い通常のデータ転送の例であり、同期違反は発生していない状態を示している。また、図４６および図４７に示す例は、トランザクション１の転送途中でパケット転送にエラーが発生した例である。すなわち、図４６および図４７に示す例は、パケット２にエラーが発生して、ＮＡＫ２が応答され、パケット２の再送が許容時間内に完了した例である。ところが、従来のデータ通信装置では、図２５および図２６に示すように、エラーを通知するＮＡＫ２パケットにもエラーが発生した場合、相手先の装置は次のトランザクション２の先頭パケットが届くまでは、ＮＡＫ２のパケットを再送してこない。このため、送信側の装置では、ＡＣＫ／ＮＡＫ待ちのタイムアウトが発生するまでパケット２の再送が開始されない。この待ち時間のオーバーヘッドが通常のＮＡＫを受信した場合の再送よりも長く、トランザクション１は許容時間内にパケット２の転送を完了できず、同期転送違反が発生する。
【００１４】
このような同期転送違反は、最新の高速シリアルインターフェース規格のPCI Expressにおいても、発生する可能性がある。ここで、PCI Expressの動作を説明するために、図４８にMemory Writeリクエストの再送動作例、図４９にPCI ExpressのMemory Readリクエストの再送動作例、図５０にPCI ExpressのMemory Readリクエストに対するCompletion Dataの再送動作例を示す。図４８〜図５０に例示するように、PCI Expressにおける同期転送において最も再送のオーバーヘッドが大きくなる再送動作は、図４９に示したMemory Readリクエストに対するエラーが発生した場合であり、このときはMemory Readリクエストに対するCompletion Dataの応答も併せて遅れるため、Memory Writeなどと比較して、大きな遅延が発生する。図２２は、PCI Expressで同期転送違反となるワーストケースとして、Memory Read クエストのエラーに対するＮＡＫパケットにエラーが発生した場合に、トランザクション１の終了時間がオーバーとなって同期転送違反が発生する例を示したものである。
【００１５】
短い周期で一定量のデータを必ず伝送し終わらなければならない、という同期転送の制約が強い用途の代表例としては、主走査および副走査方向の２次元配列によって構成される画像データについて、主走査方向の画素データを決められた時間周期に転送する処理を副走査方向に繰り返す同期転送を実行することが挙げられる。このような用途では、特にＡＣＫ／ＮＡＫやパケットにおけるエラー混入によって、同期転送違反が発生する確率が高いという問題が生じている。
【００１６】
一方、図４３に示したように、あらかじめ大きなサイズの画像データバッファメモリを出力装置側に備えた従来の画像データ転送装置においては、ノイズなどの要因で生じたエラー再送によるデータ転送速度の乱れがバッファメモリにおいて吸収されるため、出力装置から安定した出力が得られる。しかし、これを実現するために、通常は出力装置との同期が必要なデータサイズの数倍以上のバッファメモリを搭載する必要があり、回路実装規模を圧迫するとともにコストアップが避けられないという問題がある。また、バッファメモリによる非同期吸収を実現するためには、データ転送速度が出力装置の性能よりも高速なものを搭載しなければ、エラーが発生するたびにバッファメモリの空き容量が減っていくことになる。すなわち、高速なデータ転送装置を搭載することも、バッファメモリと同様にコストアップになる問題がある。また、画像や音声データの要求品質が高くなるに従って必要なバッファメモリとデータ転送性能も高くなり、コストアップの問題は、さらに大きくなる。
【００１７】
一方、特許文献１に開示されている技術によれば、PCI Expressによるデータ通信路を２重に設けることで、エラー発生に対する再送オーバーヘッドが生じにくく、同期転送違反も発生頻度も軽減されていると考えられるが、通信路を２重化することによりデータ通信装置を２つ以上組み込む必要があり、非常にコスト高となる。
【００１８】
本発明は、上記に鑑みてなされたものであって、短い周期で一定量のデータを必ず伝送し終わらなければならない、というような同期転送の制約が強い用途においても、低コスト、かつ、少ない再送オーバーヘッドでエラー発生時の処理を効率良く処理することができるデータ通信装置、画像処理システムおよびデータ通信方法を提供することを目的とする。
【課題を解決するための手段】
【００１９】
上述した課題を解決し、目的を達成するために、請求項１にかかる発明は、送信したリクエスト／データパケットが送信先の装置で正常に受信できた場合には、その旨を示すＡＣＫ（ACKnowledgement）パケットを送信先の装置から受信し、送信したリクエスト／データパケットが送信先の装置で正常に受信できなかった場合には、その旨を示すＮＡＫ（Negative AcKnowledgement）パケットを送信先の装置から受信するデータ通信装置において、送信した前記リクエスト／データパケットに対するＡＣＫ応答があるまで当該リクエスト／データパケットを記憶するパケット記憶手段と、データ応答を期待しないダミーリクエストパケットを生成するダミーリクエスト生成手段と、ＡＣＫ応答がなく前記パケット記憶手段に前記リクエスト／データパケットが記憶されている状態でタイムアウトが発生していない場合、または、受信したＡＣＫ／ＮＡＫパケットにエラーが発生していた場合には、前記ダミーリクエスト生成手段に対して前記ダミーリクエストパケットの発行を指示するダミーリクエスト発行指示手段と、ＮＡＫ応答を受信した場合、または、ＡＣＫ応答がなく前記パケット記憶手段に前記リクエスト／データパケットが記憶されている状態でタイムアウトが発生した場合には、前記パケット記憶手段に記憶されている前記リクエスト／データパケットを再送するパケット再送手段と、を備える。
【００２０】
また、請求項２にかかる発明は、請求項１記載のデータ通信装置において、通信プロトコルとしてPCI Express規格が採用されており、前記ダミーリクエスト生成手段は、前記ダミーリクエストパケットとして、PCI Express規格におけるPostedのメッセージパケット、またはPCI Express規格におけるPostedのメモリライトリクエストを発行する。
【００２１】
また、請求項３にかかる発明は、請求項２記載のデータ通信装置において、前記リクエスト／データパケットは、メモリリードリクエスト、メモリリードに対するデータ転送応答（コンプリーション）、メモリライトリクエストのいずれか、またはそれぞれの組み合わせにより構成されたものである。
【００２２】
また、請求項４にかかる発明は、リクエスト／データパケットを正常に受信できた場合には、その旨を示すＡＣＫ（ACKnowledgement）パケットを前記リクエスト／データパケットを送信してきた装置に対して送信し、前記リクエスト／データパケットが正常に受信できなかった場合には、その旨を示すＮＡＫ（Negative AcKnowledgement）パケットを前記リクエスト／データパケットを送信してきた装置に対して送信するデータ通信装置において、ＮＡＫパケットを送信したパケット番号の前記リクエスト／データパケットが正常に受信される迄、前記リクエスト／データパケットのパケット番号と同じ番号の前記ＮＡＫパケットを繰り返し送信し続けるＮＡＫ連続送信手段を備える。
【００２３】
また、請求項５にかかる発明は、請求項４記載のデータ通信装置において、ＡＣＫパケットを送信したパケット番号の前記リクエスト／データパケットが受信される迄、前記リクエスト／データパケットのパケット番号と同じ番号の前記ＡＣＫパケットを繰り返し送信し続けるＡＣＫ連続送信手段を更に備える。
【００２４】
また、請求項６にかかる発明は、リクエスト／データパケットを正常に受信できた場合には、その旨を示すＡＣＫ（ACKnowledgement）パケットを前記リクエスト／データパケットを送信してきた装置に対して送信し、前記リクエスト／データパケットが正常に受信できなかった場合には、その旨を示すＮＡＫ（Negative AcKnowledgement）パケットを前記リクエスト／データパケットを送信してきた装置に対して送信するデータ通信装置において、ＡＣＫパケットを送信したパケット番号の前記リクエスト／データパケットが受信される迄、前記リクエスト／データパケットのパケット番号と同じ番号の前記ＡＣＫパケットを繰り返し送信し続けるＡＣＫ連続送信手段を備える。
【００２５】
また、請求項７にかかる発明は、請求項４ないし６のいずれか一記載のデータ通信装置において、通信プロトコルとしてPCI Express規格が採用されており、前記リクエスト／データパケットは、メモリリードリクエスト、メモリリードに対するデータ転送応答（コンプリーション）、メモリライトリクエストのいずれか、またはそれぞれの組み合わせにより構成されたものである。
【００２６】
また、請求項８にかかる発明は、複数のパケット群からなるトランザクションであるリクエスト／データパケットを送信するユーザーロジックと、前記ユーザーロジックから受信したリクエスト／データパケットを他の装置へ送信し、送信したリクエスト／データパケットが送信先の装置で正常に受信できた場合には、その旨を示すＡＣＫ（ACKnowledgement）パケットを送信先の装置から受信し、送信したリクエスト／データパケットが送信先の装置で正常に受信できなかった場合には、その旨を示すＮＡＫ（Negative AcKnowledgement）パケットを送信先の装置から受信するデータ通信装置と、を備える画像処理システムにおいて、前記ユーザーロジックは、データ応答を期待しないダミーリクエストパケットを生成するダミーリクエスト生成手段を備え、前記データ通信装置は、送信した前記リクエスト／データパケットに対するＡＣＫ応答があるまで当該リクエスト／データパケットを記憶するパケット記憶手段と、ＡＣＫ応答がなく前記パケット記憶手段に前記リクエスト／データパケットが記憶されている状態でタイムアウトが発生していない場合、または、受信したＡＣＫ／ＮＡＫパケットにエラーが発生していた場合には、前記ダミーリクエスト生成手段に対して前記ダミーリクエストパケットの発行を指示するダミーリクエスト発行指示手段と、ＮＡＫ応答を受信した場合、または、ＡＣＫ応答がなく前記パケット記憶手段に前記リクエスト／データパケットが記憶されている状態でタイムアウトが発生した場合には、前記パケット記憶手段に記憶されている前記リクエスト／データパケットを再送するパケット再送手段と、を備える。
【００２７】
また、請求項９にかかる発明は、送信したリクエスト／データパケットが送信先の装置で正常に受信できた場合には、その旨を示すＡＣＫ（ACKnowledgement）パケットを送信先の装置から受信し、送信したリクエスト／データパケットが送信先の装置で正常に受信できなかった場合には、その旨を示すＮＡＫ（Negative AcKnowledgement）パケットを送信先の装置から受信するデータ通信方法において、送信した前記リクエスト／データパケットに対するＡＣＫ応答があるまで当該リクエスト／データパケットを記憶するパケット記憶工程と、データ応答を期待しないダミーリクエストパケットを生成するダミーリクエスト生成工程と、ＡＣＫ応答がなく前記パケット記憶工程に前記リクエスト／データパケットが記憶されている状態でタイムアウトが発生していない場合、または、受信したＡＣＫ／ＮＡＫパケットにエラーが発生していた場合には、前記ダミーリクエストパケットの発行を指示するダミーリクエスト発行指示工程と、ＮＡＫ応答を受信した場合、または、ＡＣＫ応答がなく前記リクエスト／データパケットが記憶されている状態でタイムアウトが発生した場合には、記憶されている前記リクエスト／データパケットを再送するパケット再送工程と、を含む。
【００２８】
また、請求項１０にかかる発明は、リクエスト／データパケットを正常に受信できた場合には、その旨を示すＡＣＫ（ACKnowledgement）パケットを前記リクエスト／データパケットを送信してきた装置に対して送信し、前記リクエスト／データパケットが正常に受信できなかった場合には、その旨を示すＮＡＫ（Negative AcKnowledgement）パケットを前記リクエスト／データパケットを送信してきた装置に対して送信するデータ通信方法において、ＮＡＫパケットを送信したパケット番号の前記リクエスト／データパケットが正常に受信される迄、前記リクエスト／データパケットのパケット番号と同じ番号の前記ＮＡＫパケットを繰り返し送信し続ける。
【００２９】
また、請求項１１にかかる発明は、リクエスト／データパケットを正常に受信できた場合には、その旨を示すＡＣＫ（ACKnowledgement）パケットを前記リクエスト／データパケットを送信してきた装置に対して送信し、前記リクエスト／データパケットが正常に受信できなかった場合には、その旨を示すＮＡＫ（Negative AcKnowledgement）パケットを前記リクエスト／データパケットを送信してきた装置に対して送信するデータ通信方法において、ＡＣＫパケットを送信したパケット番号の前記リクエスト／データパケットが受信される迄、前記リクエスト／データパケットのパケット番号と同じ番号の前記ＡＣＫパケットを繰り返し送信し続ける。
【発明の効果】
【００３０】
本発明によれば、短い周期で一定量のデータを必ず伝送し終わらなければならない、というような同期転送の制約が強い用途においても、低コスト、かつ、少ない再送オーバーヘッドでエラー発生時の処理を効率良く処理することができる、という効果を奏する。
【発明を実施するための最良の形態】
【００３１】
以下に添付図面を参照して、この発明にかかるデータ通信装置、画像処理システムおよびデータ通信方法の最良な実施の形態を詳細に説明する。
【００３２】
［第１の実施の形態］
本発明の第１の実施の形態を図１ないし図２６に基づいて説明する。以下では、PCI Expressの詳細について、［PCI Express規格の概要］〜［PCI Express規格におけるPosted］の欄で説明し、その後、本実施の形態の画像処理システムについて、［画像処理システム］の欄で説明する。
【００３３】
［PCI Express規格の概要］
まず、本実施の形態は高速シリアルバスの一つであるPCI Express（登録商標）を利用するものであり、本実施の形態の前提として当該PCI Express規格の概要について、「“PCI Express 規格の概要”Interface誌、July’2003 里見尚志」の一部抜粋により説明する。ここに、高速シリアルバスとは、１本の伝送路を用いてシリアル（直列）伝送により高速（１００Ｍｂｐｓ程度以上）にデータをやり取りすることができるインタフェースを意味する。
【００３４】
PCI Expressは、PCIの後継規格としてコンピュータ全般に通用する標準拡張バスとして規格化されたバスであり、概略的には、低電圧差動信号伝送、ポイントツーポイントで送受信独立の通信チャネル、パケット化されたスプリットトランザクション、リンク構成の違いによる高いスケーラビリティなどの特徴を持つ。
【００３５】
図１に既存のPCIシステム、図２にPCI Expressシステムの各々の構成例を示す。既存のPCIシステムにあっては、ＣＰＵ１００やＡＧＰグラフィックス１０１やメモリ１０２が接続されたホストブリッジ１０３に対して、PCI-X（PCIの上位互換規格）デバイス１０４ａ，１０４ｂがPCI-Xブリッジ１０５ａを介して接続されたり、PCIデバイス１０４ｃ，１０４ｄが接続されたPCIブリッジ１０５ｂやPCIバススロット１０６が接続されたPCIブリッジ１０７がPCIブリッジ１０５ｃを介して接続されたりしたツリー構造（木構造）とされている。
【００３６】
これに対して、PCI Expressシステムにあっては、ＣＰＵ１１０やメモリ１１１が接続されたルートコンプレックス１１２に対して、PCI Expressグラフィックス１１３がPCI Express１１４ａにより接続され、また、エンドポイント１１５ａやレガシーエンドポイント１１６ａがPCI Express１１４ｂにより接続されたスイッチ１１７ａがPCI Express１１４ｃにより接続され、さらには、エンドポイント１１５ｂやレガシーエンドポイント１１６ｂがPCI Express１１４ｄにより接続されたスイッチ１１７ｂやPCIバススロット１１８が接続されたPCIブリッジ１１９がPCI Express１１４ｅにより接続されたスイッチ１１７ｃがPCI Express１１４ｆにより接続されたツリー構造（木構造）とされている。
【００３７】
実際に想定されるPCI Expressプラットホーム例を図３に示す。図示例は、デスクトップ／モバイルへの適用例を示し、ＣＰＵ１２１がＣＰＵホストバス１２２により接続され、メモリ１２３が接続されたメモリハブ１２４（ルートコンプレックスに相当する）に対して、例えば、グラフィックス１２５がｘ１６のPCI Express１２６ａにより接続され、また、変換機能を有するＩ／Ｏハブ１２７がPCI Express１２６ｂにより接続されている。このＩ／Ｏハブ１２７には、例えば、Serial ATA１２８によりストレージ１２９が接続され、LPC１３０によりローカルＩ／Ｏ１３１が接続され、USB 2.0１３２やPCIバススロット１３３が接続されている。さらには、Ｉ／Ｏハブ１２７には、PCI Express１２６ｃによりスイッチ１３４が接続され、このスイッチ１３４には、各々、PCI Express１２６ｄ，１２６ｅ，１２６ｆによりモバイルドック１３５、ギガビットイーサネット１３６（イーサネットは登録商標）、アドインカード１３７が接続されている。
【００３８】
即ち、PCI Expressシステムでは、従来のPCI，PCI-X，AGPといったバスがPCI Expressで置き換わり、既存のPCI／PCI-Xデバイスを接続するためにブリッジが使用される。チップセット間の接続もPCI Express接続となり、IEEE1394，Serial ATA，USB 2.0などの既存のバスはＩ／ＯハブによりPCI Expressに接続される。
【００３９】
［PCI Expressの構成要素］
Ａ．ポート（Port）／レーン（Lane）／リンク（Link）
図４に物理層の構造を示す。ポートは、物理的には同一半導体内にあり、リンクを形成するトランスミッタ／レシーバの集合で、論理的にはコンポーネント・リンク間を１対１で接続（ポイント・ツー・ポイント）するインタフェースを意味する。転送レートは、例えば片方向２．５Ｇｂｐｓとされている。レーンは、例えば０．８Ｖの差動信号ペアのセットで、送信側の信号ペア（２本）、受信側の信号ペア（２本）からなる。リンクは、２つのポートとその間を結ぶレーンの集まりであり、コンポーネント間のデュアルシンプレックス通信バスである。「ｘＮリンク」はＮ本のレーンから構成され、現在の規格では、Ｎ＝１，２，４，８，１６，３２が定義されている。図示例は、ｘ４リンク例である。例えば、図５に示すように、デバイスＡ，Ｂ間を結ぶこのレーン幅Ｎを可変することにより、スケーラブルなバンド幅を構成することが可能となる。
【００４０】
Ｂ．ルートコンプレックス（Root Complex）
ルートコンプレックス１１２は、Ｉ／Ｏ構造の最上位に位置し、ＣＰＵやメモリサブシステムをＩ／Ｏに接続する。ブロック図などでは、図３に示すように、「メモリハブ」と記述されることが多い。ルートコンプレックス１１２（又は、１２４）は、１つ以上のPCI Expressポート（ルートポート）（図２中では、ルートコンプレックス１１２中の四角で示す）を持ち、各々のポートは独立したＩ／Ｏ階層ドメインを形成する。Ｉ／Ｏ階層ドメインは、単純なエンドポイントである場合（例えば、図２中のエンドポイント１１５ａ側の例）や、多数のスイッチやエンドポイントから形成される場合（例えば、図２中のエンドポイント１１５ｂやスイッチ１１７ｂ，１１５ｃ側の例）がある。
【００４１】
Ｃ．エンドポイント（End Point）
エンドポイント１１５は、タイプ００ｈのコンフィグレーション空間ヘッダを持つデバイス（具体的には、ブリッジ以外のデバイス）で、レガシーエンドポイントとPCI Expressエンドポイントとに分けられる。両者の大きな違いは、PCI ExpressエンドポイントはＢＡＲ（ベースアドレスレジスタ）でＩ／Ｏリソースを要求せず、このためＩ／Ｏリクエストを要求しない。また、PCI Expressエンドポイントは、ロックリクエストもサポートしていない。
【００４２】
Ｄ．スイッチ（Switch）
スイッチ１１７（又は、１３４）は、２つ以上のポートを結合し、ポート間でのパケットルーティングを行う。コンフィグレーションソフトウェアからは、当該スイッチは、図６に示すように、仮想PCI-PCIブリッジ１４１の集合体として認識される。図中、両矢印はPCI Expressリンク１１４（又は、１２６）を示し、１４２ａ〜１４２ｄはポートを示す。このうち、ポート１４２ａはルートコンプレックスに近い方のアップストリームポートであり、ポート１４２ｂ〜１４２ｄはルートコンプレックスから遠い方のダウンストリームポートである。
【００４３】
Ｅ．PCI Express１１４ｅ−PCIブリッジ１１９
PCI ExpressからPCI／PCI-Xへの接続を提供する。これにより、既存のPCI／PCI-XデバイスをPCI Expressシステム上で使用することができる。
【００４４】
［階層アーキテクチャ］
従来のＰＣＩのアーキテクチャは、図７−１に示すように、プロトコルとシグナリングが密接に関連する構造であり階層という考え方はなかったが、PCI Expressでは、図７−２に示すように、一般的な通信プロトコルやInfiniBandのように、独立した階層構造とされ、各層に分けて仕様が定義されている。即ち、最上位のソフトウェア１５１、最下位の機構（メカニカル）部１５２間に、トランザクション層１５３、データリンク層１５４、物理層１５５を持つ構造とされている。これにより、各層のモジュール性が確保され、スケーラビリティを持たせることやモジュールの再利用が可能となる。例えば、新たな信号コーディング方式や伝送媒体を採用する場合、物理層を変更するだけでデータリンク層やトランザクション層は変更せずに対応できる。
【００４５】
PCI Expressのアーキテクチャの中心となるのは、トランザクション層１５３、データリンク層１５４、物理層１５５であり、各々図８を参照して説明する以下のような役割を持つ。
【００４６】
Ａ．トランザクション層１５３
トランザクション層１５３は、最上位に位置し、トランザクションレイヤパケット（ＴＬＰ）の組み立て、分解機能を持つ。トランザクションレイヤパケット（ＴＬＰ）は、リード／ライト、各種イベントといったトランザクションの伝達に用いられる。また、トランザクション層１５３は、トランザクションレイヤパケット（ＴＬＰ）のためのクレジットを用いたフロー制御を行う。各層１５３〜１５５におけるトランザクションレイヤパケット（ＴＬＰ）の概要を図９に示す（詳細は、後述する）。
【００４７】
Ｂ．データリンク層１５４
データリンク層１５４の主な役割は、エラー検出／訂正（再送）によりトランザクションレイヤパケット（ＴＬＰ）のデータ完全性を保証することと、リンク管理である。データリンク層１５４間では、リンク管理やフロー制御のためのパケットのやり取りを行う。このパケットは、トランザクションレイヤパケット（ＴＬＰ）と区別するために、データリンクレイヤパケット（ＤＬＬＰ）と呼ばれる。
【００４８】
Ｃ．物理層１５５
物理層１５５は、ドライバ、入力バッファ、パラレル−シリアル／シリアル−パラレル変換器、ＰＬＬ、インピーダンス整合回路といったインタフェース動作に必要な回路を含んでいる。また、論理的な機能としてインタフェースの初期化・保守の機能を持つ。物理層１５５は、データリンク層１５４／トランザクション層１５３を実際のリンクで使用される信号技術から独立させる役目も持っている。
【００４９】
なお、PCI Expressのハードウェア構成上、エンベデッド・クロックという技術を採用しており、クロック信号はなく、クロックのタイミングはデータ信号中に埋め込まれており、受信側でデータ信号のクロス・ポイントを基にクロックを抽出する方式とされている。
【００５０】
［コンフィグレーション空間］
PCI Expressは、従来のPCIと同様にコンフィグレーション空間を持つが、その大きさは従来のPCIが２５６バイトであるのに対して、図１０に示すように、４０９６バイトへと拡張されている。これにより、多数のデバイス固有レジスタセットを必要とするデバイス（ホストブリッジなど）に対しても、将来的に十分な空間が確保されている。PCI Expressでは、コンフィグレーション空間へのアクセスは、フラットなメモリ空間へのアクセス（コンフィグレーションリード／ライト）で行われ、バス／デバイス／機能／レジスタ番号はメモリアドレスにマップされている。
【００５１】
当該空間の先頭２５６バイトは、PCIコンフィグレーション空間として、ＢＩＯＳや従来のＯＳからＩ／Ｏポートを使用した方法でもアクセスできる。従来のアクセスをPCI Expressでのアクセスに変換する機能は、ホストブリッジ上に実装される。００ｈから３ＦｈまではPCI2.3互換のコンフィグレーションヘッダとなっている。これにより、PCI Expressで拡張された機能以外であれば、従来のＯＳやソフトウェアをそのまま使用することができる。即ち、PCI Expressにおけるソフトウェア層は、既存のPCIと互換性を保ったロード・ストア・アーキテクチャ（プロセッサが直接Ｉ／Ｏレジスタをアクセスする方式）を継承している。しかし、PCI Expressで拡張された機能（例えば、同期転送やＲＡＳ（Reliability,Availability and Serviceability）などの機能）を使用するには、４ＫバイトのPCI Express拡張空間にアクセスできるようにする必要がある。
【００５２】
なお、PCI Expressとしては様々なフォームファクタ（形状）が考えられるが、具体化している例としては、アドインカード、プラグインカード（Express Card）、Mini PCI Expressなどがある。
【００５３】
［PCI Express のアーキテクチャの詳細］
PCI Express のアーキテクチャの中心となっているトランザクション層１５３、データリンク層１５４、物理層１５５について、各々詳細に説明する。
【００５４】
Ａ．トランザクション層１５３
トランザクション層１５３の主な役割は、前述したように、上位のソフトウェア層１５１と下位のデータリンク層１５４との間でトランザクションレイヤパケット（ＴＬＰ）の組み立てと分解を行うことである。
【００５５】
ａ．アドレス空間とトランザクションタイプ
PCI Expressでは、従来のPCIでサポートされていたメモリ空間（メモリ空間とのデータ転送用）、Ｉ／Ｏ空間（Ｉ／Ｏ空間とのデータ転送用）、コンフィグレーション空間（デバイスのコンフィグレーションとセットアップ用）に加えて、メッセージ空間（PCI Expressデバイス間のインバンドでのイベント通知や一般的なメッセージ送信（交換）用…割り込み要求や確認は、メッセージを「仮想ワイヤ」として使用することにより伝達される）が追加され、４つのアドレス空間が定義されている。各々の空間に対してトランザクションタイプが定義されている（メモリ空間、Ｉ／Ｏ空間、コンフィグレーション空間は、リード／ライト、メッセージ空間は基本（ベンダ定義含む））。
【００５６】
ｂ．トランザクションレイヤパケット（ＴＬＰ）
PCI Expressは、パケット単位で通信を行う。図９に示したトランザクションレイヤパケット（ＴＬＰ）のフォーマットにおいて、ヘッダのヘッダ長は３ＤＷ（ＤＷはダブルワードの略；合計１２バイト）又は４ＤＷ（１６バイト）で、トランザクションレイヤパケット（ＴＬＰ）のフォーマット（ヘッダ長とペイロードの有無）、トランザクションタイプ、トラフィッククラス（ＴＣ）、アトリビュートやペイロード長などの情報が含まれる。パケット内の最大ペイロード長は１０２４ＤＷ（４０９６バイト）である。
【００５７】
ＥＣＲＣは、エンドツーエンドのデータ完全性を保証するためのもので、トランザクションレイヤパケット（ＴＬＰ）部分の３２ビットＣＲＣである。これは、スイッチ内部などでトランザクションレイヤパケット（ＴＬＰ）にエラーが発生した場合、ＬＣＲＣ（リンクＣＲＣ）ではエラーを検出できないためである（エラーとなったＴＬＰでＬＣＲＣが再計算されるため）。
【００５８】
リクエストは、完了パケットが不要なものと必要なものとがある。
【００５９】
ｃ．トラフィッククラス（ＴＣ）と仮想チャネル（ＶＣ）
上位のソフトウェアは、トラフィッククラス（ＴＣ）を使用することによりトラフィックの差別化（優先度をつける）を行うことができる。例えば、映像データをネットワークのデータよりも優先して転送する、といったことが可能となる。トラフィッククラス（ＴＣ）はＴＣ０からＴＣ７まで８つある。
【００６０】
仮想チャネル（ＶＣ：Vertual Channel）は、各々独立した仮想通信バス（同一のリンクを共用する複数の独立したデータ・フロー・バッファを使用するメカニズム）で、各々がリソース（バッファやキュー）を持ち、図１１に示すように、独立したフロー制御を行う。これにより、１つの仮想チャネルのバッファが満杯の状態（full）になっても、他の仮想チャネルの転送を行うことができる。つまり、物理的には１つのリンクを仮想的な複数のチャネルに分けることで、有効に使用することができる。例えば、図１１中に示すように、スイッチを経由してルートのリンクが複数のデバイスに分かれる場合、各デバイスのトラフィックの優先度を制御することができる。ＶＣ０は必須で、コストパフォーマンスのトレードオフに応じてその他の仮想チャネル（ＶＣ１〜ＶＣ７）が実装される。図１１中の実線矢印は、デフォルト仮想チャネル（ＶＣ０）を示し、破線矢印はその他の仮想チャネル（ＶＣ１〜ＶＣ７）を示している。
【００６１】
トランザクション層内では、トラフィッククラス（ＴＣ）が仮想チャネル（ＶＣ）にマッピングされる。１つの仮想チャネル（ＶＣ）に対して１つ又は複数のトラフィッククラス（ＴＣ）をマッピングできる（仮想チャネル（ＶＣ）の数が少ない場合）。単純な例では、各トラフィッククラス（ＴＣ）から各仮想チャネル（ＶＣ）に１対１、全てのトラフィッククラス（ＴＣ）を仮想チャネルＶＣ０にマッピングする、といったことが考えられる。ＴＣ０−ＶＣ０のマッピングは、必須／固定で、それ以外のマッピングは上位のソフトウェアから制御される。ソフトウェアはトラフィッククラス（ＴＣ）を利用することで、トランザクションの優先度を制御することが可能となる。
【００６２】
ｄ．フロー制御
受信バッファのオーバーフローを避け、伝送順序を確立するためにフロー制御（ＦＣ：Flow Control）が行われる。フロー制御は、リンク間のポイントツーポイントで行われ、エンドツーエンドではない。従って、フロー制御により最終的な相手（コンプリータ）にパケットが届いたことを確認することはできない。
【００６３】
PCI Expressのフロー制御は、クレジット・ベースで行われる（データ転送を始める前に、受け取り側のバッファの空き状況を確認し、オーバーフロー、アンダフローが発生しないメカニズム）。即ち、受信側はリンク初期化時にバッファ容量（クレジット値）を送信側に通知し、送信側はクレジット値と送信するパケットの長さとを比較し、一定の残りがある場合のみパケットを送信する。このクレジットには６種類ある。
【００６４】
フロー制御の情報交換はデータリンク層のデータリンクレイヤパケット（ＤＬＬＰ）を使用して行われる。フロー制御はトランザクションレイヤパケット（ＴＬＰ）のみに適用され、データリンクレイヤパケット（ＤＬＬＰ）には適用されない（ＤＬＬＰは常時送受信可能）。
【００６５】
Ｂ．データリンク層１５４
データリンク層１５４の主な役割は、前述したように、リンク上の２つのコンポーネント間での信頼性の高いトランザクションレイヤパケット（ＴＬＰ）交換機能を提供することである。
【００６６】
ａ．トランザクションレイヤパケット（ＴＬＰ）の扱い
トランザクション層１５３から受け取ったトランザクションレイヤパケット（ＴＬＰ）に対しては、先頭に２バイトのシーケンス番号、末尾に４バイトのリンクＣＲＣ（ＬＣＲＣ）を付加して、物理層１５５に渡す（図９参照）。トランザクションレイヤパケット（ＴＬＰ）は、リトライバッファに保管され、相手から受信確認（ＡＣＫ）が届くまで再送される。トランザクションレイヤパケット（ＴＬＰ）の送信に失敗が続いた場合は、リンク異常であると判断して物理層１５５に対してリンクの再トレーニングを要求する。リンクのトレーニングが失敗した場合、データリンク層１５４の状態はインアクティブに遷移する。
【００６７】
物理層１５５から受け取ったトランザクションレイヤパケット（ＴＬＰ）は、シーケンス番号とリンクＣＲＣ（ＬＣＲＣ）が検査され、正常であればトランザクション層１５３に渡され、エラーがあった場合は再送を要求する。
【００６８】
ｂ．データリンクレイヤパケット（ＤＬＬＰ）
トランザクションレイヤパケット（ＴＬＰ）は、物理層から送信されるときに自動的に図１２に示すようなデータリンクレイヤパケット（ＤＬＬＰ）に分割されて各レーンに送信される。データリンク層１５４が生成するパケットは、データリンクレイヤパケット（ＤＬＬＰ）と呼ばれ、データリンク層１５４間でやり取りされる。データリンクレイヤパケット（ＤＬＬＰ）には、
・Ack／Nak：ＴＬＰの受信確認、リトライ（再送）
・InitFC1／InitFC2／UpdateFC：フロー制御の初期化とアップデート
・電源管理のためのＤＬＬＰ
なる種類がある。
【００６９】
図１２に示すように、データリンクレイヤパケット（ＤＬＬＰ）の長さは６バイトで、種類を示すＤＬＬＰタイプ（１バイト）、ＤＬＬＰの種類で固有の情報（３バイト）、ＣＲＣ（２バイト）から構成される。
【００７０】
Ｃ．物理層−論理サブブロック１５６
図８中に示す物理層１５５の論理サブブロック１５６での主な役割は、データリンク層１５４から受け取ったパケットを電気サブブロック１５７で送信できる形式に変換することである。また、物理層１５５を制御／管理する機能も有する。
【００７１】
ａ．データ符号化とパラレル−シリアル変換
PCI Expressは、連続した“０”や“１”が続かないように（長い期間、クロス・ポイントが存在しない状態が続かないようにするため）、データ符号化に８Ｂ／１０Ｂ変換を用いる。変換されたデータは、図１３中に示すように、シリアル変換され、ＬＳＢからレーン上に送信される。ここに、レーンが複数ある場合は（図１３はｘ４リンクの場合を例示している）、符号化の前にデータがバイト単位で各レーンに割り振られる。この場合、一見パラレルバスのようにみえるが、レーン毎に独立した転送を行うので、パラレルバスで問題となるスキューが大幅に緩和される。
【００７２】
ｂ．電源管理とリンクステート
リンクの消費電力を低く抑えるために、図１４に示すように、Ｌ０／Ｌ０ｓ／Ｌ１／Ｌ２というリンクステートが定義されている。
【００７３】
Ｌ０が通常モードで、Ｌ０ｓからＬ２へと低消費電力となるが、Ｌ０への復帰にも時間がかかるようになる。図１５に示すように、ソフトウェアによる電源管理に加えて、アクティブステート電源管理を積極的に行うことにより、消費電力を極力小さくすることが可能となる。
【００７４】
Ｄ．物理層−電気サブブロック１５７
物理層１５５の電気サブブロック１５７での主な役割は、論理サブブロック１５６でシリアル化されたデータをレーン上に送信することと、レーン上のデータを受信して論理サブブロック１５６に渡すことである。
【００７５】
ａ．ＡＣカップリング
リンクの送信側では、ＡＣカップリング用のコンデンサが実装される。これにより、送信側と受信側のＤＣコモンモード電圧が同一である必要がなくなる。このため、送信側と受信側で異なる設計、半導体プロセス、電源電圧を使用することが可能となる。
【００７６】
ｂ．デエンファシス
PCI Expressでは、前述したように、８Ｂ／１０Ｂエンコーディングによってできるだけ連続した“０”や“１”が続かないように処理されるが、連続した“０”や“１”が続くこともある（最大５回）。この場合、送信側はデエンファシス転送を行わなければならないことが規定されている。同一極性のビットが連続する場合は、２つ目のビットからは差動電圧レベル（振幅）を３．５±０．５ｄＢ落とすことで、受信側で受け取る信号のノイズ・マージンを稼ぐ必要がある。これを、デエンファシスという。伝送路の周波数依存性減衰のため、変化するビットの場合は高周波成分が多く、減衰により受信側の波形が小さくなるが、変化しないビットの場合は高周波成分が少なく、相対的に受信側の波形が大きくなる。このため、受信側での波形を一定とするためにデエンファシスを行う。
【００７７】
［PCI Express規格におけるPostedリクエストとNon-Postedリクエスト］
PCI Expressにおけるリクエストは、PostedリクエストとNon-Postedリクエストの２種類に分けられる。Postedリクエストとは、リクエストの要求先からの応答が必要なリクエストである。例えば、メモリリードリクエストやコンフィグリードリクエストなどのように、リクエストに対してデータの応答が発生するリクエストが該当する。一方、Non-Postedリクエストは、リクエストの要求先からの応答が不要なリクエストである。例えば、メモリライトリクエストやメッセージリクエストのように、リクエストとともにデータを送信して要求先からの応答が発生しないリクエストが該当する。
【００７８】
［データ通信装置］
本実施の形態のデータ通信装置は、前述したようなPCI Express規格の高速シリアルバスに接続されるデバイスである。このようなデータ通信装置は、例えば、コピー機能、ファクシミリ（ＦＡＸ）機能、プリント機能、スキャナ機能および入力画像（スキャナ機能による読み取り原稿画像やプリンタあるいはＦＡＸ機能により入力された画像）を配信する機能等を複合したいわゆるＭＦＰ（Multi Function Peripheral）と称されるデジタル複合機（画像処理システム）に備えられる。
【００７９】
ここで、図１６は本発明の第１の実施の形態にかかるデジタル複合機に備えられるデータ通信装置１の概要を示すブロック図、図１７はデータ通信装置１の接続構成を概略的に示す模式図である。
【００８０】
図１７に示すように、データ通信装置１は、互いの送信ポートＴＸ、受信ポートＲＸがシリアル伝送路で接続され、この間をリクエストパケット／データパケットならびに、リクエストパケットやデータパケットが受信されたことを送信元に応答するＡＣＫ（ACKnowledgement）パケット、あるいは受信したリクエストやデータパケットにエラーが混入していて正常に受信できなかったことを伝えるＮＡＫ（Negative AcKnowledgement）パケットが相互に転送される。このようにパケットデータ転送時にエラーが発生したか否かを送信側に伝えることで、再送効率を向上させることができる。
【００８１】
図１６に示すように、PCI Express接続されるデバイスであるデータ通信装置１は、接続相手先とのデータ通信処理を実行することによって特定の機能を実現するユーザーロジック２に接続されている。ユーザーロジック２は、トランザクション送信部３とトランザクション受信部４とによって構成されている。トランザクション送信部３は、データ通信装置１に対して、複数のパケット群からなるトランザクションであるリクエスト／データパケット（リクエスト情報およびデータ）を送信する。ここで、トランザクションとは、ある特定の機能を処理するために必要な量のデータの送信、または受信する単位を示すものとする。また、リクエスト情報とは、相手先にデータを送りたいのか（メモリライト等）、相手先のデータを受け取りたいのか（メモリリード等）、といったデータ転送の種類に関する情報を含む。データは、リクエストの種類に応じて送りたいデータを含む。本実施の形態のデータ通信装置１はPCI Express規格にしたがった通信プロトコルを用いたものであることから、リクエスト／データパケットは、メモリリードリクエスト、メモリリードに対するデータ転送応答（コンプリーション）、メモリライトリクエストのいずれか、またはそれぞれの組み合わせにより構成されたものである。
【００８２】
一方、データ通信装置１は、図１６に示すように、送信部１１と受信部２１とにより構成されている。
【００８３】
送信部１１は、図１６に示すように、ダミーリクエスト生成手段として機能するダミーリクエスト生成部１２と、パケット生成部１３と、パケット番号生成部１４と、調停部１５と、パケット記憶手段として機能する再送パケットバッファ１６と、パケット再送手段として機能する再送制御部１７と、ＡＣＫ／ＮＡＫ生成部１８とを備えている。
【００８４】
送信部１１は、ユーザーロジック２から渡されたリクエスト情報やデータに対して、パケット生成部１３において、パケット番号生成部１４で生成されたパケット番号とＣＲＣ計算結果とを付加して、リクエスト／データパケットを生成する。
【００８５】
ここで、図１８はリクエスト／データパケットの構成例を示す模式図である。図１８に示すように、リクエスト／データパケットは、パケットを識別するためのパケット番号と、ユーザーロジック２から渡されたリクエスト情報を示すヘッダ情報、データの各フィールドと、ＣＲＣ（Cyclic Redundancy Check）フィールドによって構成される。ＣＲＣフィールドの値は、ＣＲＣ生成多項式と呼ばれるシフトや加算などを組み合わせた方式でパケットデータをもとに計算された値であり、このパケットに含まれるデータが正しく伝送されたか否かを判定するために用いられる。詳細は後述するが、データ通信装置１は、リクエスト／データパケットを受信した際に、このＣＲＣフィールドの値が受け取ったパケットデータの内容に整合する場合は、ＡＣＫパケットを応答し、不整合がある場合にはＮＡＫパケットを応答して、送信元にエラーの発生を伝える。図１９は、ＡＣＫ／ＮＡＫパケットの構成例を示す模式図である。図１９に示すように、ＡＣＫ／ＮＡＫパケットは、ＡＣＫかＮＡＫかを示すＡＣＫ／ＮＡＫ情報、どのパケットに対する応答であるかを示すパケット番号、そしてＡＣＫ／ＮＡＫパケット自体のエラー検出に利用するためのＣＲＣフィールドによって構成される。
【００８６】
パケット生成部１３で生成されたリクエスト／データパケットは、調停部１５へ転送されてＴＸポートから相手先の装置へと送信される。このとき、パケット生成部１３で生成されたリクエスト／データパケットは、再送パケットバッファ１６にも転送される。すなわち、ＴＸポートから送信されるリクエスト／データパケットと同じデータが再送パケットバッファ１６に記憶されることになる。このようにして再送パケットバッファ１６に記憶されるリクエスト／データパケットは、相手先からＮＡＫ応答が戻った際に再送するためのものである。
【００８７】
ダミーリクエスト生成部１２は、ダミーリクエストパケットを生成する。このダミーリクエストパケットは、トランザクションを構成する連続したパケット群の送出に続けて送出するためのものである。ダミーリクエスト生成部１２は、ダミーリクエストパケットとして、PCI Express規格におけるPostedのメッセージパケット、またはPostedのメモリライトリクエストを発行する。ここで、Postedリクエストとは、相手先の装置からのデータ応答を期待しない種類のパケットであり、メモリリードリクエストのように、Completion応答を期待するNon-Postedリクエストよりも、短時間でダミーリクエスト転送を完了することが可能となる。さらに、ダミーリクエストパケットに含むデータサイズを小さくすることで、転送オーバーヘッドをさらに軽減することができる。
【００８８】
上述したような再送パケットバッファ１６に記憶されるリクエスト／データパケットの再送の制御は、再送制御部１７によって実行される。再送制御部１７はタイマー１７ａを備えており、パケット生成部１３で生成されたリクエスト／データパケットが送信された際に時間がリセットされ、相手先からＡＣＫ応答かＮＡＫ応答が戻るまでの間の時間を計測する。タイマー１７ａは、パケット生成部１３からリクエスト／データパケットを送信した際に出力されるリセット情報によって時間０にリセットされる。
【００８９】
再送制御部１７は、再送パケットバッファ１６に、リクエスト／データパケットが記憶されている間、タイマー１７ａによるタイムアウトが発生していなくても、ダミーリクエスト生成部１２に対してダミーリクエストパケットの発行の指示情報を伝達する。ここに、ダミーリクエスト発行指示手段が実現されている。また、再送制御部１７は、受信したＡＣＫ／ＮＡＫパケットにエラーが発生していた場合でも、ダミーリクエスト生成部１２に対してダミーリクエストパケットの発行の指示情報を伝達する処理を行うものとする。
【００９０】
次に、データ通信装置１の受信部２１について説明する。受信部２１は、図１６に示すように、パケット判別部２２と、パケット受信部２３と、ＣＲＣエラー判定部２４と、ＡＣＫ／ＮＡＫ受信部２５と、ＣＲＣエラー判定部２６とを備えている。
【００９１】
受信部２１は、ＲＸポートより相手先の装置からパケットデータを受信する。受信したパケットは、パケット判別部２２において、まずリクエスト／データパケットであるか、ＡＣＫ／ＮＡＫパケットであるか判別される。
【００９２】
パケット判別部２２においてリクエスト／データパケットであると判別された場合には、リクエスト／データパケットはパケット受信部２３に転送され、さらにＣＲＣエラー判定部２４によりデータが壊れていないかどうかが判定される。
【００９３】
ＣＲＣエラー判定部２４によりデータが壊れていないと判定された場合、すなわち「エラー無し」と判定された場合には、リクエスト／データパケットは、ユーザーロジック２のトランザクション受信部４にリクエスト情報とデータとして伝達される。一方、ＣＲＣエラー判定部２４によりデータが壊れていると判定された場合、すなわち「エラー有り」と判定された場合には、そのリクエスト／データパケットは破棄される。
【００９４】
また、ＣＲＣエラー判定部２４によるエラーの検出結果は、送信部１１のＡＣＫ／ＮＡＫ生成部１８に伝達される。ここで伝達される情報は、エラー発生の有無を示すエラー情報と、受信したパケット番号である。さらに、ＣＲＣエラー判定部２４は、何番のパケットまで正常に受信できているかを記憶しており、次に受信することを期待しているパケット番号と異なる番号のパケットを受信した場合は、たとえＣＲＣエラーが発生していなくとも、受信を期待しているパケット番号とともにエラー発生有りの情報を、送信部１１のＡＣＫ／ＮＡＫ生成部１８に伝達する。
【００９５】
送信部１１のＡＣＫ／ＮＡＫ生成部１８は、受け取った情報をもとに、「エラー無し」の場合はＡＣＫパケットを、「エラー有り」の場合はＮＡＫパケットを生成して、調停部１５に転送する。ＡＣＫ／ＮＡＫのパケットは、図１９に示したように、パケット番号を含み、この番号は受信部２１が次に受信することを期待しているパケット番号となる。送信部１１の調停部１５は、ＴＸポートに対してＡＣＫ／ＮＡＫのパケットを送信する。
【００９６】
次に、受信部２１で受け取ったパケットがパケット判別部２２においてＡＣＫ／ＮＡＫパケットであると判別された場合について説明する。
【００９７】
パケット判別部２２で受け取ったパケットがＡＣＫ／ＮＡＫパケットであった場合、パケットデータはＡＣＫ／ＮＡＫ受信部２５に送られ、さらにＣＲＣエラー判定部２６へと転送される。
【００９８】
ＣＲＣエラー判定部２６によりデータが壊れていると判定された場合、すなわち「エラー有り」と判定された場合には、そのＡＣＫ／ＮＡＫパケットは破棄される。一方、ＣＲＣエラー判定部２６によりデータが壊れていないと判定された場合、すなわち「エラー無し」と判定され、正常にＡＣＫ／ＮＡＫ情報が受け取れた場合は、ＣＲＣエラー判定部２６は、送信部１１の再送制御部１７に対して、ＡＣＫ／ＮＡＫ情報（ＡＣＫを受信したか、ＮＡＫを受信したかを表す情報）と、ＡＣＫ／ＮＡＫに含まれていたパケット番号を伝達する。
【００９９】
送信部１１の再送制御部１７は、受け取ったＡＣＫ／ＮＡＫ情報とパケット番号をもとに、再送パケットバッファ１６に再送、またはクリアの制御情報を伝達して再送動作を制御する。このとき、ＡＣＫ情報を受け取った場合は、そのパケット番号のパケットは相手先に正常に届いたことがわかるので、再送パケットバッファ１６に記憶されていたリクエスト／データパケットをクリアする。一方、ＮＡＫ情報を受け取った場合は、そのパケット番号のパケットは相手先でエラーとなったことがわかるので、再送パケットバッファ１６に記憶されていたリクエスト／データパケットの再送処理を実行する。
【０１００】
以上のような構成によるデータ通信装置１における処理のうち、本実施の形態の特徴である送信側の送信処理について詳述する。
【０１０１】
図２０は、データ通信装置１の送信処理の流れを示すフローチャートである。図２０に示すように、データ通信装置１は、パケット生成部１３で生成したリクエスト／データパケット（パケット番号ｘ）を調停部１５を介して送信し（ステップＳ１）、再送制御部１７のタイマー１７ａをリセットした後（ステップＳ２）、相手先からＡＣＫ応答またはＮＡＫ応答を受信したか否かを判断する（ステップＳ３）。
【０１０２】
相手先からＡＣＫ応答（パケット番号＝ｙ）を受信した場合には（ステップＳ３のＹｅｓ、ステップＳ４のＮｏ、ステップＳ５のＹｅｓ）、ＡＣＫ応答のパケット番号ｙまで正常に届いたので、次に送信するパケット番号を“パケット番号ｘ＝ｙ＋１”とし（ステップＳ６）、ステップＳ１に戻る。
【０１０３】
また、相手先からＮＡＫ応答（パケット番号＝ｙ）を受信した場合には（ステップＳ３のＹｅｓ、ステップＳ４のＮｏ、ステップＳ５のＮｏ）、エラーで届かなかったので、次に送信するパケット番号を“パケット番号ｘ＝ｙ”として、再送パケットバッファ１６に記憶されていたパケット番号ｘのリクエスト／データパケットの再送処理を実行し（ステップＳ７）、ステップＳ１に戻る。
【０１０４】
一方、相手先からＡＣＫ応答またはＮＡＫ応答を受信しない状態、すなわち再送パケットバッファ１６にリクエスト／データパケットが記憶されている状態で（ステップＳ３のＮｏ）、タイマー１７ａによるタイムアウトが発生していない場合（ステップＳ８のＮｏ）、または受信したＡＣＫ／ＮＡＫパケットにエラーが発生していた場合には（ステップＳ４のＹｅｓ）、パケット番号を“パケット番号ｘ＝ｘ＋１”として、ダミーリクエストパケットの発行をダミーリクエスト生成部１２に指示して（ステップＳ９）、ステップＳ１に戻る。
【０１０５】
また、相手先からＡＣＫ応答またはＮＡＫ応答を受信しないまま（ステップＳ３のＮｏ）、タイマー１７ａによるタイムアウトが発生した場合には（ステップＳ８のＹｅｓ）、再送制御部１７により“パケット番号ｘ＝タイムアウトが発生したパケット番号“にして、再送パケットバッファ１６に記憶されていたパケット番号ｘのリクエスト／データパケットの再送処理を実行して（ステップＳ１０）、ステップＳ１に戻る。
【０１０６】
図２１は、Memory Read リクエストにエラーが発生して、応答されたＮＡＫパケットにエラーが発生した場合の再送動作の例を示すシーケンス図である。
【０１０７】
従来のPCI Express規格を用いたデータ通信装置では、ダミーリクエストパケットが発行されないため、図２２に示すような同期転送違反が発生していたが、本実施の形態のデータ通信装置１によれば、Memory Read リクエスト（Memory Read２）に続けてダミーリクエストパケットとしてPostedリクエストパケット（パケット３）が送信されるため、相手先のデータ通信装置は受信を期待しているMemory Read リクエスト（Memory Read２）以外のパケットが届いたことによって、ＮＡＫ２をただちに再送してくる。ＡＣＫ／ＮＡＫ待ちタイマーのタイムアウト前にＮＡＫ２を受信してMemory Read リクエスト（Memory Read２）がエラーとなったことが検出できるため、送信側のMemory Read リクエスト（Memory Read２）からの再送動作の開始時間が早くなり、同期転送違反が発生しなくなる。PCI Express規格の通信プロトコルにも準拠しており、他のデータ通信装置との接続性も確保した上で、高速伝送性能と併せ、強い同期制約を必要とする高速データ転送に用いることが可能となる。
【０１０８】
このように本実施の形態によれば、リクエスト／データパケットの送信が開始されてから次のリクエスト／データパケットの送信が開始されるまでの間、データ応答を期待しないダミーリクエストパケットを連続して送信することにより、同期転送時の再送オーバーヘッドを軽減することができるので、短い周期で一定量のデータを必ず伝送し終わらなければならない、というような同期転送の制約が強い用途においても、低コスト、かつ、少ない再送オーバーヘッドでエラー発生時の処理を効率良く処理することができる。
【０１０９】
なお、本実施の形態においては、ダミーリクエスト生成部１２をデータ通信装置１の送信部１１に備えるようにしたが、これに限るものではなく、データ通信装置１の外に位置するユーザーロジック２のトランザクション送信部３に実装して、同様の処理を実現することも可能である。
【０１１０】
また、本実施の形態のデータ通信装置は、PCI Express規格の高速シリアルバスに接続されるデバイスとしたが、これに限るものではなく、一般的なシリアル伝送路に接続されるデバイスに対しても適用可能である。このような構成のデータ通信装置１による同期転送の例を図２３および図２４に示す。この例では、パケット２にエラーが混入して応答されてきたＮＡＫ２のパケットにエラーが混入したケースである。従来のデータ通信装置では、図２５および図２６に示すように、エラーを通知するＮＡＫ２パケットにもエラーが発生した場合、相手先の装置は次のトランザクション２の先頭パケットが届くまでは、ＮＡＫ２のパケットを再送してこない。このため、送信側の装置では、ＡＣＫ／ＮＡＫ待ちのタイムアウトが発生するまでパケット２の再送が開始されない。この待ち時間のオーバーヘッドが通常のＮＡＫを受信した場合の再送よりも長く、トランザクション１は許容時間内にパケット２の転送を完了できず、同期転送違反が発生したものである。図２３および図２４の例に示すとおり、本実施の形態のデータ通信装置では、パケット２に続けて、ダミーパケット３を続けて送信するため、相手先のデータ通信装置は受信を期待しているパケット２以外のパケットが届いたことによって、ＮＡＫ２をただちに再送してくる。ＡＣＫ／ＮＡＫ待ちタイマーのタイムアウト前にＮＡＫ２を受信してパケット２がエラーとなったことが検出できるため、送信側のパケット２からの再送動作の開始時間が早くなり、同期転送違反が発生しなくなる。もし、図２３および図２４におけるパケット２にエラーが発生せず、受信側からＡＣＫ２が応答され、このＡＣＫ２にエラーが混入したとしても、ダミーパケット３に対するＡＣＫ３がただちに応答されてくるため、送信側でＡＣＫ／ＮＡＫ待ちタイマーのタイムアウトが発生せず、同期転送違反は発生しなくなる。
【０１１１】
なお、本実施の形態においては、ＭＦＰと称されるデジタル複合機の内部データ通信におけるチップ間、ボード間のデータ通信装置に適用した例について説明したが、ＰＣ内部モジュール間、オプションボード間の通信、有線ＬＡＮや無線ＬＡＮなどの機器間通信、システム間通信におけるデータ通信装置などにも適用可能である。
【０１１２】
［第２の実施の形態］
次に、本発明の第２の実施の形態を図２７ないし図３１に基づいて説明する。なお、前述した第１の実施の形態と同じ部分は同じ符号で示し説明も省略する。本発明の第２の実施の形態は、リクエストを送信する側のデータ通信装置ではなく、リクエストを受信する側のデータ通信装置に関するものである。
【０１１３】
図２７は、本発明の第２の実施の形態にかかるデジタル複合機に備えられるデータ通信装置１の概要を示すブロック図である。図２７に示すように、本実施の形態のデータ通信装置１は、第１の実施の形態において送信部１１に備えていたダミーリクエスト生成部１２に代えて、ＮＡＫ連続送信手段およびＡＣＫ連続送信手段として機能するＡＣＫ／ＮＡＫ連続生成部１９を備えている。
【０１１４】
ＡＣＫ／ＮＡＫ連続生成部１９は、受信部２１がＡＣＫ／ＮＡＫ生成部１８に伝達するエラー情報とパケット番号を受け取り、ＮＡＫパケットを送信したパケット番号のパケットが正常に受信できるまでの間、連続して同じ番号のＮＡＫパケットを調停部１５に送り、相手先の装置へと応答し続ける処理を行う。さらに、ＡＣＫ／ＮＡＫ連続生成部１９は、ＡＣＫパケットを送信したパケット番号のパケットが受信されるまでの間、連続して同じ番号のＡＣＫパケットを調停部１５に送り、相手先の装置へと応答し続ける処理も行う。
【０１１５】
以上のような構成によるデータ通信装置１における処理のうち、本実施の形態の特徴である受信側の受信処理について詳述する。
【０１１６】
図２８は、データ通信装置１の受信処理の流れを示すフローチャートである。図２８に示すように、データ通信装置１は、パケット判別部２２においてリクエスト／データパケットであると判別されたパケット番号ｘをパケット受信部２３で受信すると（ステップＳ２１のＹｅｓ）、パケットｘ（パケット番号＝ｘ）を確認した後（ステップＳ２２）、ＣＲＣエラー判定部２４に転送してデータが壊れていないかどうかを判定する（ステップＳ２３）。
【０１１７】
データが壊れていないと判定された場合、すなわち「エラー無し」と判定された場合（ステップＳ２３のＮｏ）、ＡＣＫ／ＮＡＫ生成部１８は、ＡＣＫパケット（ＡＣＫｘ）を応答して（ステップＳ２４）、ステップＳ２１に戻る。
【０１１８】
加えて、ＡＣＫパケットを送信したパケット番号のパケットが受信されるまでの間は（ステップＳ２１のＮｏ）、ＡＣＫ／ＮＡＫ連続生成部１９は、ＡＣＫパケット（ＡＣＫｘ）を応答し続ける（ステップＳ２４）。
【０１１９】
一方、データが壊れていると判定された場合、すなわち「エラー有り」と判定された場合には（ステップＳ２３のＹｅｓ）、ＡＣＫ／ＮＡＫ生成部１８およびＡＣＫ／ＮＡＫ連続生成部１９はＮＡＫパケット（ＮＡＫｘ）を応答する（ステップＳ２５）。
【０１２０】
ＡＣＫ／ＮＡＫ連続生成部１９は、パケット判別部２２においてリクエスト／データパケットをパケット受信部２３で受信し（ステップＳ２６のＹｅｓ）、「エラー無し」と判定され（ステップＳ２７のＮｏ）、パケットｘ（パケット番号＝ｘ）であると判定されるまで（ステップＳ２８のＹｅｓ）、ＮＡＫパケット（ＮＡＫｘ）を応答し続ける（ステップＳ２９）。
【０１２１】
一方、パケットｘ（パケット番号＝ｘ）であると判定された場合には（ステップＳ２８のＹｅｓ）、ＡＣＫ／ＮＡＫ生成部１８は、ＡＣＫパケット（ＡＣＫｘ）を応答して（ステップＳ３０）、ステップＳ２１に戻る。
【０１２２】
図２９は、Memory Read リクエストにエラーが発生して、応答されたＮＡＫパケットにエラーが発生した場合の再送動作の例を示すシーケンス図である。
【０１２３】
従来のPCI Express規格を用いたデータ通信装置では、図２２に示すような同期転送違反が発生していたが、本実施の形態のデータ通信装置１によれば、ＮＡＫ２を応答したパケット番号と同じパケット番号のMemory Read リクエスト（Memory Read２）を正常に受信するまで、連続してＮＡＫ２を応答し続ける。送信側では、ＡＣＫ／ＮＡＫ待ちタイマーのタイムアウト前にＮＡＫ２を受信してMemory Read リクエスト（Memory Read２）がエラーとなったことが検出できるため、送信側のMemory Read リクエスト（Memory Read２）からの再送動作の開始時間が早くなり、同期転送違反が発生しなくなる。
【０１２４】
また、図２９の例において、もしPCI Expressのリードリクエストにエラーが発生せず、ＡＣＫパケットが応答され、ＡＣＫパケットがエラーとなったとしても、本実施の形態のデータ通信装置１では、ＡＣＫリクエストパケットが連続して応答されるので、送信側では同期転送違反が発生しなくなる。PCI Express規格では、重複したパケット番号のＡＣＫ／ＮＡＫパケットやすでに再送動作を開始したパケット番号のＡＣＫ／ＮＡＫパケットを受信しても、受信部２１において破棄されるので、他のデータ通信装置との接続性も確保した上で、高速伝送性能と併せ、強い同期制約を必要とする高速データ転送に用いることが可能となる。
【０１２５】
このように本実施の形態によれば、ＮＡＫパケットを送信したパケット番号のリクエスト／データパケットが正常に受信される迄、リクエスト／データパケットのパケット番号と同じ番号のＮＡＫパケットを繰り返し送信し続けることにより、同期転送時の再送オーバーヘッドを軽減することができるので、短い周期で一定量のデータを必ず伝送し終わらなければならない、というような同期転送の制約が強い用途においても、低コスト、かつ、少ない再送オーバーヘッドでエラー発生時の処理を効率良く処理することができる。
【０１２６】
また、ＡＣＫパケットを送信したパケット番号のリクエスト／データパケットが受信される迄、リクエスト／データパケットのパケット番号と同じ番号のＡＣＫパケットを繰り返し送信し続けることにより、同期転送時の再送オーバーヘッドを軽減することができるので、短い周期で一定量のデータを必ず伝送し終わらなければならない、というような同期転送の制約が強い用途においても、低コスト、かつ、少ない再送オーバーヘッドでエラー発生時の処理を効率良く処理することができる。
【０１２７】
また、本実施の形態のデータ通信装置は、PCI Express規格の高速シリアルバスに接続されるデバイスとしたが、これに限るものではなく、一般的なシリアル伝送路に接続されるデバイスに対しても適用可能である。このような構成のデータ通信装置１による同期転送の例を図３０および図３１に示す。この例では、パケット２にエラーが混入して、応答されてきたＮＡＫ２のパケットにエラーが混入したケースである。従来のデータ通信装置では、図２５および図２６に示すように、エラーを通知するＮＡＫ２パケットにもエラーが発生した場合、相手先の装置は次のトランザクション２の先頭パケットが届くまでは、ＮＡＫ２のパケットを再送してこない。このため、送信側の装置では、ＡＣＫ／ＮＡＫ待ちのタイムアウトが発生するまでパケット２の再送が開始されない。この待ち時間のオーバーヘッドが通常のＮＡＫを受信した場合の再送よりも長く、トランザクション１は許容時間内にパケット２の転送を完了できず、同期転送違反が発生したものである。図３０および図３１の例に示すとおり、本実施の形態のデータ通信装置では、ＮＡＫを応答したパケット番号と同じパケット番号（この例では２）のパケットを正常に受信するまで、連続してＮＡＫ２を応答し続ける。送信側では、ＡＣＫ／ＮＡＫ待ちタイマーのタイムアウト前にＮＡＫ２を受信してパケット２がエラーとなったことが検出できるため、送信側のパケット２からの再送動作の開始時間が早くなり、同期転送違反が発生しなくなる。なお、図３０および図３１の例は、パケット２にエラーが混入して、再送が必要なケースであったが、もしパケット２にエラーが混入せずに受信側に届き、応答されたＡＣＫ２にエラーが発生したとしても、受信側は連続してトランザクション３のパケット３を受信するまでＡＣＫ２を送信しつづけるため、送信側ではタイムアウトが発生しなくなり、再送のオーバーヘッドも発生しない。
【０１２８】
［実施例］
ここで、上述した第１の実施の形態または第２の実施の形態で示したデータ通信装置１を用いたデータ転送例について説明する。
【０１２９】
本実施例においては、図３２に示すような主走査および副走査方向の２次元配列によって構成される画像データについて、主走査方向の画素データを決められた時間周期に転送する処理を副走査方向に繰り返す同期転送を実行するものである。
【０１３０】
図３２に示すような画像データのデータ転送は、図３３に示すように、複数の画素データを１つのパケットデータとして主走査方向の１ラインについて複数パケット群から構成されるトランザクションを、副走査方向に画像が走査される速度に同期させて転送させることになる。
【０１３１】
図３２に示すような画像データのデータ転送を行う例についてＭＦＰと称されるデジタル複合機について検討してみると、図３４に示すように、データ通信装置１およびラインバッファメモリ５１を備えた画像読み取り装置、画像印刷装置、画像表示装置などの画像入出力装置５０と、デジタル複合機の制御主体となるものであってデータ通信装置１を備えるコントローラ６０とにおける、PCI Express等の高速通信路を介したデータ転送が予想される。画像データを保持するメモリ６１は、コントローラ６０のみに設けられている。このような構成により、画像入出力装置５０とコントローラ６０との間では、１ラインごとのデータ通信を画像の入出力速度に同期して転送する処理が実行される。
【０１３２】
図３５に示すように、従来のデータ通信装置では、１ラインの最後に転送されるパケットにエラーが発生して応答されるＮＡＫパケット（またはエラー発生が無かった際に応答されるＡＣＫパケット）がエラーとなったケースでは、ライン同期転送違反のエラーが発生していた。
【０１３３】
これに対して、第１の実施の形態で示したデータ通信装置１においては、図３６に示すように、１ラインの最後のデータパケットの転送が終了した後も、ダミーリクエストパケットが送信されるため、１ラインの最後のデータパケットのパケット番号のついたＮＡＫパケット（または最後に送ったパケットのパケット番号のついたＡＣＫパケット）をただちに受信することができるため、再送開始時間が早まり、同期転送違反が発生しなくなる。
【０１３４】
また、第２の実施の形態で示したデータ通信装置１においては、図３７に示すように、１ラインの最後のデータパケットのパケット番号のついたＡＣＫまたはＮＡＫパケットが連続して応答されてくるので、再送開始時間が早まり、同期転送違反が発生しなくなる。
【０１３５】
すなわち、本実施の形態によれば、特に大量のデータを短い周期で同期転送しなければならない高速画像データ転送用途においても、少ない容量のラインメモリのみを設けることで、エラー発生による同期違反を防ぐことができる。大きな容量のバッファメモリと、より高速なデータ転送装置の搭載が必要だった、従来の画像データ転送装置に対して、大幅に少ないコストで、高い性能を実現することができる。
【図面の簡単な説明】
【０１３６】
【図１】既存PCIシステムの構成例を示すブロック図である。
【図２】PCI Expressシステムの構成例を示すブロック図である。
【図３】デスクトップ／モバイルでのPCI Expressプラットホームの構成例を示すブロック図である。
【図４】ｘ４の場合の物理層の構造例を示す模式図である。
【図５】デバイス間のレーン接続例を示す模式図である。
【図６】スイッチの論理的構造例を示すブロック図である。
【図７−１】既存のPCIのアーキテクチャを示すブロック図である。
【図７−２】PCI Expressのアーキテクチャを示すブロック図である。
【図８】PCI Expressの階層構造を示すブロック図である。
【図９】トランザクションレイヤパケットのフォーマット例を示す説明図である。
【図１０】PCI Expressのコンフィグレーション空間を示す説明図である。
【図１１】仮想チャネルの概念を説明するための模式図である。
【図１２】データリンクレイヤパケットのフォーマット例を示す説明図である。
【図１３】ｘ４リンクでのバイトストライピング例を示す模式図である。
【図１４】Ｌ０／Ｌ０ｓ／Ｌ１／Ｌ２というリンクステートの定義について説明する説明図である。
【図１５】アクティブステート電源管理の制御例を示すタイムチャートである。
【図１６】本発明の第１の実施の形態にかかるデジタル複合機に備えられるデータ通信装置の概要を示すブロック図である。
【図１７】データ通信装置の接続構成を概略的に示す模式図である。
【図１８】リクエスト／データパケットの構成例を示す模式図である。
【図１９】ＡＣＫ／ＮＡＫパケットの構成例を示す模式図である。
【図２０】データ通信装置における送信処理の流れを示すフローチャートである。
【図２１】再送動作の例を示すシーケンス図である。
【図２２】従来の再送動作の例を示すシーケンス図である。
【図２３】データ通信装置による同期転送の例を示す模式図である。
【図２４】再送動作の例を示すシーケンス図である。
【図２５】従来のデータ通信装置による同期転送の例を示す模式図である。
【図２６】従来の再送動作の例を示すシーケンス図である。
【図２７】本発明の第２の実施の形態にかかるデジタル複合機に備えられるデータ通信装置の概要を示すブロック図である。
【図２８】データ通信装置の受信処理の流れを示すフローチャートである。
【図２９】再送動作の例を示すシーケンス図である。
【図３０】データ通信装置による同期転送の例を示す模式図である。
【図３１】再送動作の例を示すシーケンス図である。
【図３２】主走査および副走査方向の２次元配列によって構成される画像データを示す模式図である。
【図３３】画像データ転送におけるトランザクションを示す模式図である。
【図３４】画像データのデータ転送を行う例を示すブロック図である。
【図３５】従来のデータ通信装置による同期転送の例を示す模式図である。
【図３６】データ通信装置による同期転送の例を示す模式図である。
【図３７】データ通信装置による同期転送の例を示す模式図である。
【図３８】パケットにエラーが発生した場合の転送例を示す模式図である。
【図３９】図３８に示す再送動作の例を示すシーケンス図である。
【図４０】ＮＡＫ応答パケットにもエラーが発生した場合の転送例を示す模式図である。
【図４１】図４０に示す再送動作の例を示すシーケンス図である。
【図４２】PCI Expressによるデータ通信路を２重に設けた従来のデータ通信装置を示すブロック図である。
【図４３】大きなサイズのバッファメモリを出力装置側に備える従来のデータ通信装置を示すブロック図である。
【図４４】同期転送の例を示す模式図である。
【図４５】図４４に示す転送動作の例を示すシーケンス図である。
【図４６】パケットにエラーが発生した場合の転送例を示す模式図である。
【図４７】図４６に示す再送動作の例を示すシーケンス図である。
【図４８】PCI ExpressにおけるMemory Writeリクエストの再送動作例を示すシーケンス図である。
【図４９】PCI ExpressにおけるMemory Readリクエストの再送動作例を示すシーケンス図である。
【図５０】PCI ExpressのMemory Readリクエストに対するCompletion Dataの再送動作例を示すシーケンス図である。
【符号の説明】
【０１３７】
１      データ通信装置
２      ユーザーロジック
１２      ダミーリクエスト生成手段
１６      パケット記憶手段
１７      パケット再送手段、ダミーリクエスト発行指示手段
１９      ＮＡＫ連続送信手段、ＡＣＫ連続送信手段
【図１】
2008204245.tif 000003
【図２】
2008204245.tif 000004
【図３】
2008204245.tif 000005
【図４】
2008204245.tif 000006
【図５】
2008204245.tif 000007
【図６】
2008204245.tif 000008
【図７−１】
2008204245.tif 000009
【図７−２】
2008204245.tif 000010
【図８】
2008204245.tif 000011
【図９】
2008204245.tif 000012
【図１０】
2008204245.tif 000013
【図１１】
2008204245.tif 000014
【図１２】
2008204245.tif 000015
【図１３】
2008204245.tif 000016
【図１４】
2008204245.tif 000017
【図１５】
2008204245.tif 000018
【図１６】
2008204245.tif 000019
【図１７】
2008204245.tif 000020
【図１８】
2008204245.tif 000021
【図１９】
2008204245.tif 000022
【図２０】
2008204245.tif 000023
【図２１】
2008204245.tif 000024
【図２２】
2008204245.tif 000025
【図２３】
2008204245.tif 000026
【図２４】
2008204245.tif 000027
【図２５】
2008204245.tif 000028
【図２６】
2008204245.tif 000029
【図２７】
2008204245.tif 000030
【図２８】
2008204245.tif 000031
【図２９】
2008204245.tif 000032
【図３０】
2008204245.tif 000033
【図３１】
2008204245.tif 000034
【図３２】
2008204245.tif 000035
【図３３】
2008204245.tif 000036
【図３４】
2008204245.tif 000037
【図３５】
2008204245.tif 000038
【図３６】
2008204245.tif 000039
【図３７】
2008204245.tif 000040
【図３８】
2008204245.tif 000041
【図３９】
2008204245.tif 000042
【図４０】
2008204245.tif 000043
【図４１】
2008204245.tif 000044
【図４２】
2008204245.tif 000045
【図４３】
2008204245.tif 000046
【図４４】
2008204245.tif 000047
【図４５】
2008204245.tif 000048
【図４６】
2008204245.tif 000049
【図４７】
2008204245.tif 000050
【図４８】
2008204245.tif 000051
【図４９】
2008204245.tif 000052
【図５０】
2008204245.tif 000053