JP2011039897A - データ通信装置、データ通信制御方法、データ通信制御プログラム及び記録媒体 - Google Patents

データ通信装置、データ通信制御方法、データ通信制御プログラム及び記録媒体 Download PDF

Info

Publication number
JP2011039897A
JP2011039897A JP2009188165A JP2009188165A JP2011039897A JP 2011039897 A JP2011039897 A JP 2011039897A JP 2009188165 A JP2009188165 A JP 2009188165A JP 2009188165 A JP2009188165 A JP 2009188165A JP 2011039897 A JP2011039897 A JP 2011039897A
Authority
JP
Japan
Prior art keywords
packet
retransmission
timer
reception
time
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2009188165A
Other languages
English (en)
Inventor
Shinya Nagasaki
伸哉 長崎
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Ricoh Co Ltd
Original Assignee
Ricoh Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Ricoh Co Ltd filed Critical Ricoh Co Ltd
Priority to JP2009188165A priority Critical patent/JP2011039897A/ja
Publication of JP2011039897A publication Critical patent/JP2011039897A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

  • Computer And Data Communications (AREA)

Abstract

【課題】本発明は、データ通信を適切かつ効率的に行うデータ通信装置、データ通信制御方法、データ通信制御プログラム及び記録媒体に関する。
【解決手段】デバイス1は、送信部20のパケット送信部22からリクエストまたはデータのパケットを送信すると、該パケットをReplay Buffer制御部23のReplay Bufferに保存し、送信したパケットに対して送信先の対向デバイスから送られてくるAck/Nakパケット等のDLLPを、予め設定されているタイマ設定値(Replay時間)内に受信部10が受信するか否かに基づいてReplay Bufferに保持されているパケットを再送信するか否かを制御するとともに、前記パケットを送信してから該パケットに対するDLLPを受信するまでの経過時間を第1カウンタ31cでカウントして該カウンタ値に基づいてタイマ設定値(Replay時間)を補正する。
【選択図】 図1

Description

本発明は、データ通信装置、データ通信制御方法、データ通信制御プログラム及び記録媒体に関し、詳細には、高速シリアルバス等を利用したデータ通信を適切かつ効率的に行うデータ通信装置、データ通信制御方法、データ通信制御プログラム及び記録媒体に関する。
近年、複合装置、プリンタ等の画像処理装置においては、ASIC(Application Specific Integrated Circuit)等の画像処理用チップ(デバイス)とメモリ(デバイス)との間のデータ通信等において、高速データ通信を実現するために、要求と応答が分離され、応答を待たずに次の要求を発行できる高速な転送を行うスプリットトランザクションのバスであるPCI(Peripheral Component Interconnect) Express(以下、PCIeという。)が用いられるようになってきている。PCIeのような高速シリアルバスにおいては、特定の確率でビット化けによるパケット転送エラーが発生する。そして、PCIeの場合、PCIeの規格によると、ビット化けによるパケット転送エラーが発生した場合、再送信(リトライ)を行い、データを保証することとなっている。
そこで、PCIeにおいては、図9に示すように、相対向する2つのデバイス100とデバイス101のうち、一方のデバイス100から送信パケット(以下、適宜、TLPという。TLP:Transaction Layer Packet)を他方のデバイス101にPCIeバスを通して送信すると、他方のデバイス101が、予め設定されているAck/Nak Latency Timerで設定されているAck/Nak Latency時間の間に、TLPの送達確認など補助的役割を担うDLLP(Data Link Layer Packet)によって、TLPを正常に受信できたか否かを示すAck(acknowledgement)パケット、または、TLPを正常受信できなかったことを示すNak(negative acknowledgements)パケットを一方側のデバイス100にPCIeバスを通して送信する。そして、送信側のデバイス100は、予め設定されているReplay Timerに設定されているタイマ設定値(Replay時間)をReplay Timerが計時するまでの間に受信すると、受信したAckパケットまたはNakパケットに応じて、次の送信パケットの送信処理あるいはReplay時間経過後に先に送信した送信パケットを再送信する再送信処理等の処理を行い、また、Replay時間内にAckパケットまたはNakパケットの受信を確認できないときにも、該Replay時間経過後に送信パケットを再送信する。
このようにReplay時間内にAck/Nakパケットが受信されないのは、受信側のデバイス101におけるPHY(物理メディアインタフェース)の遅延及び内部遅延等の要因で、Ack/Nakの送信遅延が大きくなってしまったためである。
そして、上記受信側のデバイス101でのDLLPのAck/Nak Latency Timerで設定されるAck/Nak Latency時間は、PCIeの規格上、Pay Load SizeとLink Widthによって定められており、また、送信側のデバイス100のReplay Timerで設定されるReplay時間も、同様に、Pay Load SizeとLink Widthによって定められていが、これらのAck/Nak Latency時間及びReplay時間は、PCIeの規格上推奨値であるため、適宜変更することができる。
そこで、従来、PCIeを用いた通信においては、デバイス100のReplay Timerが計時するタイマ設定値(Replay時間)をプログラムで再設定(デフォルト値よりも大きなタイマ設定値(Replay時間)に設定)することで対応している。
ところが、送信側のデバイス100のReplay Timer値をプログラムによって再設定すると、以下のような問題が発生する。
a)タイマ設定値(Replay時間)をあまり大きくしてしまうと、従来では、デフォルト値よりも大きなタイマ設定値(Replay時間)を設定するだけであるため、受信側のデバイス101からのAck/Nakにエラーがあった場合等に送信パケットの再送信までの処理に、タイマ設定値(Replay時間)を大きくした分だけ余計に時間がかかる。
b)受信側のデバイス101のAck/Nak Latency Timerで設定されるAck/Nak Latency時間(Ack/Nak Latency Timer値)を小さくしてもよいが、この場合、Ack/Nak Latency時間を小さすぎると、Ackパケットが多発することで、バスの転送効率が低下するという問題がある。
c)対向デバイス100、101のAck/Nak Latencyを検知する手段がないため、データ転送時にパフォーマンス等の問題が発生した際にしか気づくことができない。すなわち、パケット再送信(Retry)が発生した時に、Ack/NakのLatencyによるタイムアウト(Timeout)であるのか、Ack/NakのエラーによるTimeoutであるのかを判別することができない。例えば、プリンタ装置、複写装置、複合装置等の画像処理装置においては、オプションボード等の対向デバイスにどのようなデバイスが接続させるかが不明な場合に、最適なパラメータ値が不明なため、不要な送信パケットの再送信処理(Retry)が発生するおそれがある。
そして、従来、パケットの再送信におけるデータ転送性能を向上させるために、あるパケットに対して、Nakパケットの受信にエラーが発生した場合にReplay時間経過後に送信パケットの再送信が開始されることを防止するために、再送信のパケットに対応したダミーパケットを送信し、受信側に再度Nak応答を行わせて、データ転送性能の向上を図った技術が提案されている(特許文献1参照)。
しかしながら、上記公報記載の従来技術にあっては、Nakパケットの受信にエラーが発生した場合に、ダミーパケットを送信しているため、受信側のデバイスは、Replay時間が経過する毎に、ダミーパケットを送信することとなり、対向デバイスとしてどのようなデバイスが配設されるかが不明な場合に、上述のような対応を行うと、ダミーパケットの送信が頻繁に発生するおそれがあるとともに、ダミーパケットと送信パケットを送信する処理が頻繁に発生して、全体の処理時間を向上させる上で、改良の必要があった。
そこで、本発明は、パケットが正常転送できなかった場合に所定の時間経過後にパケットを再送信するデータ通信を、安定してかつ速やかに行うデータ通信装置、データ通信制御方法、データ通信制御プログラム及び記録媒体を提供することを目的としている。
本発明は、上記目的を達成するために、リクエストまたはデータのパケットを送信すると、該パケットをパケット保持手段に保持し、送信したパケットに対して送信先から送られてくる受信結果応答パケットを、予め設定されている再送信待ち時間内に受信するか否かに基づいて前記パケット保持手段に保持されているパケットを再送信するか否かを制御するとともに、前記パケットを送信してから該パケットに対する該受信結果応答パケットを受信するまでの応答パケット受信経過時間に基づいて前記再送信待ち時間を補正することを特徴としている。
また、本発明は、前記受信結果応答パケットを受信することなく前記再送信待ち時間が経過して前記パケット保持手段のパケットを再送信したときからの前記再送信待ち時間を計時し、前記応答パケット受信経過時間に基づいて前記再送信待ち時間を補正するとともに、再送信に対する前記再送信待ち時間が経過する前に前記パケットまたは再送信した前記パケットに対する前記受信結果応答パケットを受信するか否かに基づいて、前記パケット保持手段のパケットを再送信するか否か制御することを特徴としてもよい。
さらに、本発明は、同じパケットについて最初に送信したパケットに対する前記受信結果応答パケットを受信するまでの前記応答パケット受信経過時間にのみ基づいて前記再送信待ち時間を補正することを特徴としてもよい。
また、本発明は、受信したパケットが正常な前記受信結果応答パケットであるか否かを判断し、受信したパケットが正常な前記受信結果応答パケットであると判断したときにのみ、該受信結果応答パケットを受信するまでの前記応答パケット受信経過時間に基づいて前記再送信信待ち時間を補正することを特徴としてもよい。
本発明によれば、パケットが正常転送できなかった場合にパケットを所定の時間経過後に再送信するデータ通信を、安定してかつ速やかに行うことができる。
本発明の一実施例を適用したデバイスの要部ブロック構成図。 DLLPの構成例を示す図。 状態Aにおけるタイマ設定値補正処理を伴うTLP再送信制御処理の説明図。 状態Bにおけるタイマ設定値補正処理を伴うTLP再送信制御処理の説明図。 状態Cにおけるタイマ設定値補正処理を伴うTLP再送信制御処理の説明図。 状態Dにおけるタイマ設定値補正処理を伴うTLP再送信制御処理の説明図。 タイマ設定値補正処理を伴うTLP再送信制御処理を示すフローチャート。 図7の続きの処理を示すフローチャート。 従来のPCIe通信の一例を示す図。
以下、本発明の好適な実施例を添付図面に基づいて詳細に説明する。なお、以下に述べる実施例は、本発明の好適な実施例であるので、技術的に好ましい種々の限定が付されているが、本発明の範囲は、以下の説明によって不当に限定されるものではなく、また、本実施の形態で説明される構成の全てが本発明の必須の構成要件ではない。
図1〜図8は、本発明のデータ通信装置、データ通信制御方法、データ通信制御プログラム及び記録媒体の一実施例を示す図であり、図1は、本発明のデータ通信装置、データ通信制御方法、データ通信制御プログラム及び記録媒体の一実施例を適用したデバイス1のブロック構成図である。
図1において、デバイス1は、複合装置、プリンタ装置、複写装置、ファクシミリ装置、コンピュータ等の装置内でデータの高速通信を行う情報処理装置に搭載され、このデータ通信は、要求と応答が分離されていて、応答を待たずに次の要求を発行できる高速な転送を行うスプリットトランザクションのバスであるPCIeが用いられている。
デバイス1は、例えば、情報処理装置に搭載された画像処理用チップであり、メモリ等を対向デバイスTD(図3〜図6参照)として、該対向デバイスTDとの間でPCIeを用いてパケットデータの送受信を行うデータ通信装置として機能する。
デバイス1は、受信部10、送信部20及びTLP制御部30を備えており、メモリ等を対向デバイスTDとしてPCIeを用いてパケットデータの送受信を行う。
そして、デバイス1は、ROM、EEPROM(Electrically Erasable and Programmable Read Only Memory )、EPROM、フラッシュメモリ、フレキシブルディスク、CD−ROM(Compact Disc Read Only Memory )、CD−RW(Compact Disc Rewritable )、DVD(Digital Versatile Disk)、SD(Secure Digital)カード、MO(Magneto-Optical Disc)等のコンピュータが読み取り可能な記録媒体に記録されている本発明のデータ通信制御方法を実行するデータ通信制御プログラムを読み込んで図示しないROM等のメモリに導入することで、後述するデータを効率的にかつ高速に転送するデータ通信制御方法を実行するデータ通信装置として構築されている。このデータ通信制御プログラムは、アセンブラ、C、C++、C#、Java(登録商標)等のレガシープログラミング言語やオブジェクト指向ブログラミング言語等で記述されたコンピュータ実行可能なプログラムであり、上記記録媒体に格納して頒布することができる。
受信部10は、パケット判定部11、パケット受信部12、CRC(Cyclic Redundancy Check)エラー判定部13、Ack/Nak受信部14及びCRCエラー判定部15等を備えており、PCIeを介して対向デバイスTDからの送信されてくるパケットを受信する。
送信部20は、送信制御部21、パケット送信部22及びReplay Buffer制御部23等を備えており、再送制御部21は、第1タイマ31、第2タイマ32、カウンタ値保持部33及びタイマ値設定部34等を備えている。第1タイマ31は、第1カウンタ31cを内蔵しており、第2タイマ32は、第2カウンタ32cを内蔵している。
まず、受信部10について説明する。受信部10は、PCIeを介して対向デバイスTDから送信されてきたパケット(受信パケット)をパケット判定部11で受信し、パケット判定部11が、送られてきた受信パケットが、通信すべきデータ自体を運ぶTLP(Transaction Layer Packet)であるか、TLPに対して送達確認等の補助的役割を担うAck/Nak等のDLLP(Data Link Layer Packet)であるか、また、パケットが壊れていないか等を判別する。パケット判定部11は、受信パケットがTLPであると、パケット受信部12に送り、受信パケットがDLLPであると、Ack/Nak受信部14に送る。
パケット受信部(パケット受信手段)12は、パケット判定部11からTLPを受け取って必要なパケット受信処理を行って、CRCエラー判定部13に送る。
CRCエラー判定部13は、TLPデータが壊れていないかどうか判定し、TLPデータが壊れていないと判定すると、TLP制御部40にリクエスト情報とデータを渡す。一方、CRCエラー判定部13は、TLPデータが壊れていると判定すると、その判定結果をTLP制御部40に渡すとともに、そのTLPパケットを破棄する。
TLP制御部40は、CRCエラー判定部13からのTLPデータ及びエラー判定に応じてパケット通信、特に、PCIe通信に必要な制御、例えば、フロー制御等を行い、送信部20のパケット送信部22に、TLPのエラー通知や正常受信通知及びバッファサイズ通知等を行って、パケット送信部22に、正常受信時のAckパケットの送信、エラー受信時のNakパケットの送信等を行わせる。
Ack/Nak受信部14は、パケット判定部11からDLLPを受け取って必要な処理を行った後、CRCエラー判定部15に渡す。
CRCエラー判定部15は、DLLPのパケット全てを対象としてCRC値を算出し、算出した16bCRC値とパケットに付加されている16bCRC値を比較して、エラー判定を行う。なお、DLLPは、図2に示すように構成されており、DLLPの種類を識別する「TYPE」(1Byte)、DLLP固有の情報である「DATA」(3Byte)及び「16bCRC」(2Byte)で形成される。
CRCエラー判定部15は、エラー判定結果を送信部20の再送制御部21に伝達する機能を有し、また、受信フラグ及びシーケンスNo.等のAck/Nak情報を送信部20の再送制御部21に送信する。上記パケット判定部11及びCRCエラー判定部15は、全体として受信したパケットが正常なDLLP(特に、Ack/Nakパケット)であるか否かを判定する判定手段として機能している。
次に、送信部20について説明する。送信部20のパケット送信部(パケット送信手段)22は、TLP制御部40から渡されるリクエスト情報やデータに対して、パケット番号とCRC計算結果を付加してTLPを生成し、生成したTLPを対向デバイスTDにPCIeを介して送信する。また、パケット送信部22は、送信したTLPをReplay Buffer制御部23のReplay Bufferに保管して、対向デバイスTDから送られてきたTLPが正常であるか不適切であるかの受信部10での判定結果に基づいた再送制御部21の制御に応じて、該Replay Buffer制御部23に保管されているTLPの再送信を行うか否か制御する。さらに、パケット送信部22は、受信部10が対向デバイスTDから受信したTLPに対するCRCエラー判定部13の判定結果に応じて、Ack/Nakパケット等のDLLPを該対向デバイスTDに送信する。
再送制御部(再送信制御手段)21は、受信部10のCRCエラー判定部15からの受信フラグ及びAck/Nak情報に基づいてTLPの再送信制御を行う。すなわち、再送制御部21は、CRCエラー判定部15からCRCの判定結果とAck/Nak情報を受け取り、CRCの判定結果がエラーを示しているか、Ack/Nak情報がNakであると、タイマ値設定部34に保管されている再送信待ち時間であるタイマ設定値(Replay時間)が経過すると、タイムアウトを発生して、Replay Buffer制御部23に再送/クリアを通知し、Replay Buffer制御部23がReplay Buffer内のTLPを再送TLPとしてパケット送信部22に出力する。パケット送信部22は、Replay Buffer制御部23から受け取った再送TLPを対向デバイスTDに再送信する。
タイマ値設定部34は、後述するカウンタ値保持部33から入力されるタイマ設定値(Replay時間)を第1タイマ31及び第2タイマ32に設定する。
そして、再送制御部21の第1タイマ(待ち時間計時手段)31は、パケット送信部22がTLPの送信を開始した時点から、タイマ値設定部34によって設定されるタイマ設定値(Replay時間)の計時を開始し、第1カウンタ(応答時間カウンタ)31cは、この第1タイマ31の計時する時間をカウントしてそのカウンタ値を保持する。また、第1タイマ31は、タイマ値設定部34によって設定されるタイマ設定値(Replay時間)を計時して計時時間がタイマ設定値(Replay時間)になると、タイムアウトを発生し、Replay Buffer制御部23に再送/クリアを通知する。さらに、第1タイマ31は、受信部10のCRCエラー判定部15から受信フラグ及びAck/Nak情報を受け取ったときに、タイマ設定値(Replay時間)が補正可能であると、カウンタ値保持部33に対してそのときの第1カウンタ31cの保持するカウンタ値及びラッチトリガ信号を出力する。
第2タイマ32は、TLPの再送信が、発生したときに、該TLPのパケット送信b22による再送信開始からタイマ値設定部34によって設定されるタイマ設定値の計時を開始し、第2カウンタ32cは、この第2タイマ32の計時する時間をカウントしてそのカウンタ値であるタイマ時間を保持する。
カウンタ値保持部33は、第1タイマ31からカウンタ値及びラッチトリガ信号が入力されると、該カウンタ値を保持し、カウンタ値が更新されると、タイマ値設定部34に補正値として更新された値を出力する。
タイマ値設定部34は、このカウンタ値保持部33によって設定されたタイマ設定値を第1タイマ31及び第2タイマ32に出力する。
すなわち、再送制御部21は、対向デバイスTDに送信したTLP(送信TLP)に対して対向デバイスTDから送られてくるAck/NakパケットをCRCエラー判定部15で判定した判定結果である受信フラグ、Ack/Nak情報及び第1タイマ31と第2タイマ32でタイマ設定値(Replay時間)を計時して、これらの受信フラグ、Ack/Nak情報及びタイマ設定値(Replay時間)の計時結果に基づいて該対向デバイスTDに対する第1タイマ31及び第2タイマ32のタイマ設定値(Replay時間)を補正し、送信TLPに対して対向デバイスTDから該タイマ設定値の間に送られてくるAck/Nak情報に基づいてTLPの再送信の要否を判定する。
次に、本実施例の作用を説明する。本実施例のデバイス1は、送信TLPに対するDLLPのパケット受信経過時間である第1カウンタ31cのカウンタ値に基づいて第1タイマ31及び第2タイマ32のタイマ設定値を補正するとともに、送信TLPに対するDLLPが該合間設定値が経過するまでの間に対向デバイスTDから送られてくるか否か及び送られてきたDLLPの内容(Ack/Nak情報)に基づいてTLPの再送信の要否を判定するTLP再送信制御処理を行う。
デバイス1は、PCIeのプロトコルにおいてデバイス1で発生する可能性のある状態を、以下の4種類の状態に分類して、該状態毎に第1タイマ31及び第2タイマ32のタイマ設定値(Replay時間)を補正する。なお、第1タイマ31のタイマ設定値の時間を、以下、適宜、Replay時間という。
状態A:Ack/Nakをタイマ設定値(Replay時間)内に正常受信
状態B:Ack/Nakは正常受信したがタイマ設定値(Replay時間)が経過した後に受信
状態C:Ack/NakがCRCエラー
状態D:Ack/Nakの判断がつかないブロークンなパケットを受信
まず、状態Aの場合におけるタイマ設定値補正を伴うTLP再送信制御処理ついて、図3に基づいて説明する。デバイス1は、送信部20のパケット送信部22からTLP(第1TLP)を発行して、PCIeを介して対向デバイスTDに送信する。デバイス1は、TLPを送信すると、第1タイマ31がタイマ値設定部34から設定されるタイマ設定値(Replay時間)の計時を開始し、この第1タイマ31によるタイマ設定値の計時の開始と同時に、第1タイマ31の計時する経過時間の第1カウンタ31cによるカウントを開始する。
対向デバイスTDは、デバイス1からのTLPを受信してから予め設定されているAck/Nak Latency時間が経過した後、第1TLPに対するAck/Nakを通知する第1のAck/Nakパケット等のDLLPをデバイス1にPCIeを介して送信する。
デバイス1は、Ack/Nakパケット等のDLLPがPCIeを介して対向デバイスTDから送られてくると、DLLPをパケット判定部11及びAck/Nak受信部14を介して受信してCRCエラー判定部15に送って、CRCエラー判定部15が、DLLPがAckパケットであるか、Nakパケットであるかを判定するとともに、DLLPのパケット全てを対象としてCRC値を算出し、算出した16bCRC値とパケットに付加されている16bCRC値を比較して、エラー判定を行う。CRCエラー判定部15は、エラー判定結果を送信部20の再送制御部21に伝達し、また、受信フラグ及びシーケンスNo.等のAck/Nak情報を送信部20の再送制御部21に送信する。
送信部20の再送制御部21は、受信部10のCRCエラー判定部15から受信フラグ及びAck/Nak情報が送られてくると、図3の状態Aの場合、第1タイマ31がタイムアウトする前であるので、Ack/Nak情報がAckであると、TLPのデータ転送が成立し正常にTLPの転送が完了したと判断し、また、Ack/Nak情報がNakであると、TLPのデータ転送に失敗したので、再送/クリアをReplay Buffer制御部23に出力して、Replay Buffer制御部23がReplay Bufferに保持する第1TLPをパケット送信部22から再送信させる通常のTLP再送信処理を開始する。
そして、再送制御部21は、対向デバイスTDからDLLPを第1タイマ31がタイムアウトする前、すなわち、タイマ値設定部34によって第1タイマ31及び第2タイマ32に設定されたタイマ設定値(Replay時間)の計時が完了する前に、受信しているので、DLLPを受信したときの第1カウンタ31cのカウンタ値Aに基づいて、第1タイマ31及び第2タイマ32のタイマ設定値(Replay時間)をタイマ設定値Aに補正する。すなわち、第1カウンタ31cは、第1タイマ31が計時を開始すると、該計時時間のカウントを開始し、DLLPを受信したタイミングでカウントを停止して、そのカウンタ値A(応答パケット受信経過時間)を保持する。第1カウンタ31cは、保持したカウンタ値Aをタイマ値設定部34に出力し、タイマ値設定部34は、このカウンタ値Aに基づいて第1タイマ31及び第2タイマにReplay時間としてのタイマ設定値を変更設定するタイマ設定値補正を行う。タイマ値設定部34は、この変更後のタイマ設定値として、第1カウンタ31cがカウントしたカウンタ値Aを設定してもよいが、多少の余裕を持たせた時間(A+α)を設定することが望ましい。
デバイス1は、上記タイマ設定値補正処理を行うと、所定の時間後に、次のTLP(第2TLP)を対向デバイスTDに送信し、第1タイマ31及び第2タイマ32によるこの変更後のタイマ設定値(Replay時間)の計時を開始する。
以降、上記同様に処理して、タイマ設定値(Replay時間)内にDLLPを受信すると、再度、タイマ設定値を補正する処理を行うが、このとき、タイマ設定値(Replay時間)とDLLPの受信時間との間の差が予め設定されている許容時間の範囲内であると、タイマ設定値の補正を行わないようにしてもよい。
このようにすると、TLP送信後のDLLPを受信するまでの待ち時間であるタイマ設定値(Replay時間)を、対向デバイスTDの種類やPCIeのトラフィック等の通信状況に最適な長さに補正することができ、TLPの再送信が発生することを抑制しつつ適切かつ速やかにTLPを送信することができる。
次に、状態Bの場合におけるタイマ設定値補正を伴うTLP再送制御処理ついて、図4に基づいて説明する。デバイス1は、送信部20のパケット送信部22からTLP(第1TLP)を発行して、PCIeを介して対向デバイスTDに送信する。デバイス1は、TLPを送信すると、第1タイマ31がタイマ値設定部34から設定されるタイマ設定値(Replay時間)の計時を開始し、この第1タイマ31によるタイマ設定値の計時の開始と同時に、第1タイマの計時する経過時間の第1カウンタ31cによるカウントを開始する。
対向デバイスTDは、デバイス1からのTLPを受信してから予め設定されているAck/Nak Latency時間が経過した後、第1TLPに対するAck/Nakを通知する第1のAck/Nakパケット等のDLLPをデバイス1にPCIeを介して送信する。
デバイス1は、Ack/Nakパケット等のDLLPがPCIeを介して対向デバイスTDから送られてくる前に、第1タイマ31がタイマ設定値をカウントアウトすると、TLPのデータ転送に失敗したので、再送/クリアをReplay Buffer制御部23に出力して、Replay Buffer制御部23がReplay Bufferに保持する第1TLPを再送第1TLPとしてパケット送信部22から再送信させる通常のTLP再送信処理を開始するとともに、第2タイマ32によるタイマ設定値(Replay時間)の計時を開始する。
その後、デバイス1は、Ack/Nakパケット等の第1TLPのDLLP(第1のDLLP)がPCIeを介して対向デバイスTDから送られてくると、CRCエラー判定部15が、上記同様にAck/Nak判定及びCRCエラーの判定を行って、エラー判定結果を送信部20の再送制御部21に伝達し、また、受信フラグ及びシーケンスNo.等のAck/Nak情報を送信部20の再送制御部21に送信する。
送信部20の再送制御部21は、受信部10のCRCエラー判定部15から受信フラグ及びAck/Nak情報が送られてくると、図4の状態Bの場合、第1タイマ31がタイムアウトして再送第1TLPを既に再送信しているので、Ack/Nak情報がAckであっても、Nakであっても、破棄し、DLLP(Ack/Nak情報)を受信したときの第1カウンタ31cのカウンタ値をカウンタ値保持部33に保持させて、第1タイマ31をリセットする。再送制御部21は、第1カウンタ31cのカウンタ値Bをカウンタ値保持部33に保持させると、図4に破線矢印で示す補正前のタイマ設定値の位置から該カウンタ値Bの位置まで、速やかに、タイマ値設定部34を介して第2タイマ32のタイマ設定値として反映させて補正する。
その後、デバイス1は、対向デバイスTDからDLLPを第2タイマ32がタイムアウトする前、すなわち、カウンタ値Bで補正変更したタイマ設定値(Replay時間)の計時が完了する前に、受信しているので、DLLPを受信したときの第2カウンタ32cに基づいて、タイマ設定値(Replay時間)を補正する。すなわち、第2カウンタ32cは、第2タイマ32が計時を開始すると、該第2タイマ32の計時する経過時間のカウントを開始し、DLLPを受信したタイミングでカウントを停止して、そのカウンタ値Bを保持する。第2カウンタ32cは、保持したカウンタ値Bをタイマ値設定部34に出力し、タイマ値設定部34は、このカウンタ値Bに基づいて第1タイマ31及び第2タイマにReplay時間としてのタイマ設定値を変更設定するタイマ値補正を行う。タイマ値設定部34は、この変更後のタイマ設定値として、第2カウンタ32cがカウントしたカウンタ値Bを設定してもよいが、多少の余裕を持たせた時間(B+α)を設定することが望ましい。上記補正処理を完了すると、再送制御部21は、第2タイマ32及び第2カウンタ32cをリセットする。
デバイス1は、上記タイマ設定値補正処理を行うと、所定の時間後に、次のTLP(第2TLP)を対向デバイスTDに送信し、第1タイマ31及び第2タイマ32によるこの変更後のタイマ設定値(Replay時間)の計時を開始する。
以降、上記同様に処理して、タイマ設定値(Replay時間)内にDLLPを受信すると、再度、タイマ設定値を補正するタイマ設定値補正処理を行うが、このとき、タイマ設定値(Replay時間)とDLLPの受信時間との間の差が予め設定されている許容時間の範囲内であると、タイマ設定値の補正を行わないようにしてもよい。
このようにすると、TLP送信後のDLLPを受信するまでの再送信待ち時間であるタイマ設定値(Replay時間)を、対向デバイスTDの種類やPCIeのトラフィック等の通信状況に最適な長さに補正することができ、TLPの再送信が発生することを抑制しつつ適切かつ速やかにTLPを送信することができる。
次に、状態Cの場合におけるタイマ設定値補正を伴うTLP再送制御処理ついて、図5に基づいて説明する。デバイス1は、送信部20のパケット送信部22からTLP(第1TLP)を発行して、PCIeを介して対向デバイスTDに送信する。デバイス1は、TLPを送信すると、第1タイマ31がタイマ値設定部34から設定されるタイマ設定値(Replay時間)の計時を開始し、この第1タイマ31によるタイマ設定値の計時の開始と同時に、第1タイマ31の計時する径時時間の第1カウンタ31cによるカウントを開始する。
対向デバイスTDは、デバイス1からのTLPを受信してから予め設定されているAck/Nak Latency時間が経過した後、第1TLPに対するAck/Nakを通知する第1のAck/Nakパケット等のDLLPをデバイス1にPCIeを介して送信する。
デバイス1は、Ack/Nakパケット等のDLLPがPCIeを介して対向デバイスTDから送られてくると、該DLLPをパケット判定部11及びAck/Nak受信部14を介して受信してCRCエラー判定部15に送る。CRCエラー判定部15は、DLLPがAckパケットであるか、Nakパケットであるかを判定するとともに、DLLPのパケット全てを対象としてCRC値を算出し、算出した16bCRC値とパケットに付加されている16bCRC値を比較して、エラー判定を行う。再送制御部21は、CRCエラー判定部15が、CRCエラーであると判定すると、DLLPを受信していないことになるため、第1タイマ31による計時を継続して、Ack/Nakパケット等のDLLPがPCIeを介して対向デバイスTDから送られてくる前に、第1タイマ31がタイマ設定値をカウントアウトすると、通常のTLP再送信処理を開始する。すなわち、デバイス1は、再送/クリアをReplay Buffer制御部23に出力して、Replay Buffer制御部23がReplay Bufferに保持する第1TLPを再送第1TLPとしてパケット送信部22から再送信させる。
この場合、Ack/Nak情報であるDLLPの信頼性がないため、デバイス1は、タイマ設定値補正処理を行わず、第1TLPの送信時と同様に、第1タイマ31のみを用いてタイマ設定値の計時を行う。その後、デバイス1は、Ack/Nakパケット等の第1TLPのDLLP(第1のDLLP)がPCIeを介して対向デバイスTDから送られてくると、CRCエラー判定部15が、上記同様にAck/Nak判定及びCRCのエラー判定を行い、エラー判定結果を送信部20の再送制御部21に伝達し、また、受信フラグ及びシーケンスNo.等のAck/Nak情報を送信部20の再送制御部21に送信する。
送信部20の再送制御部21は、受信部10のCRCエラー判定部15から受信フラグ及びAck/Nak情報が送られてくると、図5の状態Cの場合、第1タイマ31がタイムアウトする前であるので、Ack/Nak情報がAckであると、TLPのデータ転送が成立し正常にTLPの転送が完了したと判断し、また、Ack/Nak情報がNakであると、TLPのデータ転送に失敗したので、再送/クリアをReplay Buffer制御部23に出力して、Replay Buffer制御部23がReplay Bufferに保持する第1TLPをパケット送信部22から再送信する通常のTLP再送信処理を開始する。
そして、再送制御部21は、対向デバイスTDから再送第1のDLLPを第1タイマ31がタイムアウトする前、すなわち、タイマ値設定部34によって第1タイマ31及び第2タイマ32に設定されたタイマ設定値(Replay時間)の計時が完了する前に、受信すると、再送TLPに対するDLLPであるため、正確性に劣ると判断して、タイマ設定値の補正を行わない。
なお、この場合、再送制御部21は、再送TLPに対して第1タイマ31がタイマ設定値をタイムアウトする前に受信したDLLPであるが、該DLLPを受信したときの第1カウンタ31cのカウンタ値Aに基づいて、タイマ設定値(Replay時間)を上記同様にタイマ設定値Aに補正してもよい。
このようにすると、CRCエラー発生時の不確かな時間を用いてタイマ設定値を補正することなく、TLP送信後のDLLPを受信するまでの待ち時間であるタイマ設定値(Replay時間)を、CRCエラーの発生していないときのカウンタ値Aを用いて、対向デバイスTDの種類やPCIeのトラフィック等の通信状況に最適な長さに補正することができ、TLPの再送信が発生することを抑制しつつ適切かつ速やかにTLPを送信することができる。
次に、状態Dにおけるタイマ設定値補正を伴うTLP再送制御処理ついて、図6に基づいて説明する。デバイス1は、送信部20のパケット送信部22からTLP(第1TLP)を発行して、PCIeを介して対向デバイスTDに送信する。デバイス1は、TLPを送信すると、第1タイマ31がタイマ値設定部34から設定されるタイマ設定値(Replay時間)の計時を開始し、この第1タイマ31によるタイマ設定値の計時の開始と同時に、第1タイマ31の計時する径時時間の第1カウンタ31cによるカウントを開始する。
対向デバイスTDは、デバイス1からのTLPを受信してから予め設定されているAck/Nak Latency時間が経過した後、第1TLPに対するAck/Nakを通知する第1のAck/Nakパケット等のDLLPをデバイス1にPCIeを介して送信する。
デバイス1は、Ack/Nakパケット等のDLLPがPCIeを介して対向デバイスTDから送られてくると、パケット判定部11でTLPであるか、DLLPであるか判定するが、TLPと認識されないときには、そのパケットを破棄して、次のパケットの受信を待つ。
送信部20の再送制御部21は、Ack/Nakパケット等の正常なDLLPがPCIeを介して対向デバイスTDから送られてくる前に、第1タイマ31がタイマ設定値をカウントアウトすると、通常のTLP再送信処理を開始する。すなわち、デバイス1は、再送/クリアをReplay Buffer制御部23に出力して、Replay Buffer制御部23がReplay Bufferに保持する第1TLPを再送第1TLPとしてパケット送信部22から再送信させるとともに、第2タイマ32によるタイマ設定値(Replay時間)の計時を開始する。
その後、デバイス1は、Ack/Nakパケット等の第1TLPのDLLP(第1のDLLP)がPCIeを介して対向デバイスTDから送られてくると、CRCエラー判定部15が、上記同様にAck/Nak判定及びCRCのエラー判定を行い、エラー判定結果を送信部20の再送制御部21に伝達し、また、受信フラグ及びシーケンスNo.等のAck/Nak情報を送信部20の再送制御部21に送信する。
送信部20の再送制御部21は、受信部10のCRCエラー判定部15から受信フラグ及びAck/Nak情報が送られてくると、このAck/Nak情報は、第1TLPに対する適切な第1のAck/Nak情報(第1のDLLP)を受信する前に、第1タイマ31がタイムアウトして再送信した再送第1TLPに対するAck/Nak情報(再送第1のDLLP)であるため、タイマ設定値の補正を実施しない。
なお、再送制御部21は、Ack/Nak情報における順番の判断を、受信部10のCRCエラー判定部15からのAck/Nak情報のシーケンスNo.によって判断することができる。
このようにすると、不確かなパケットを受信した時間を用いてタイマ設定値を補正することなく、TLP送信後のDLLPを受信するまでの待ち時間であるタイマ設定値(Replay時間)を、適正なDLLPを受信したときの第1カウンタ31cのカウンタ値を用いて、対向デバイスTDの種類やPCIeのトラフィック等の通信状況に最適な長さに補正することができ、TLPの再送信が発生することを抑制しつつ適切かつ速やかにTLPを送信することができる。
デバイス1における上記タイマ設定値補正を伴うTLP再送制御処理は、図7及び図8のフローチャートのように示すことができる。すなわち、デバイス1は、第1TLPを送信すると(ステップS101)、第1タイマ31によるタイマ設定値の計時をスタートさせ(ステップS102)、第1TLPのAck/Nak等のDLLPを、第1タイマ31がタイマ設定値を計時してタイムアウトするまでに受信したかチェックする(ステップS103、S104))。
ステップS103で、第1タイマ31がタイマ設定値をタイムアウトする前に、DLLPを受信すると、デバイス1は、CRCエラー判定部15によって該DLLPにCRCエラー有りと判定されたかチェックし(ステップS105)、CRCエラーがないときには、Ack/NakパケットであるDLLPを受信したときの第1カウンタ31cのカウンタ値をタイマ設定値Aとしてカウンタ値保持部3に保持して(ステップS106)、第1タイマ31をリセットする(ステップS107)。
デバイス1は、第1タイマ31をリセットすると、第1タイマ31及び第2タイマ32をカウンタ値保持部33に保持したカウンタ値であるタイマ設定値Aをタイマ値設定部34を介して第1タイマ31及び第2タイマ32に設定することで、タイマ設定値を補正するタイマ設定値補正処理を行い(ステップS108)、受信したDLLPが第1TLPのAckパケットであるかチェックする(ステップS109)。
ステップS109で、Ackパケットを受信したときには、デバイス1は、図8に示すように、第1TLPの送信が正常に完了したとして、第1TLPの送信におけるTLP再送信制御処理を終了する。
ステップS109で、Ackパケットではなく、Nakパケットを受信したときには、デバイス1は、上述のように、図8に示す通常のTLP再送信処理を行って、TLP再送信制御処理を終了する(ステップS110)。
図7のステップS105で、受信したDLLPにCRCエラーがあるときには、デバイス1は、図8に示す通常のTLP再送信処理を行って、TLP再送信制御処理を終了する(ステップS110)。
図7のステップS104で、第1TLPに対するDLLPを受信することなく、第1タイマ31のタイマ設定値のタイムアウトが発生すると、デバイス1は、再送第1TLPの再送信を行い(ステップS111)、第2タイマ32のタイマ設定値の計時を開始させる(ステップS112)。
デバイス1は、第2タイマ32をスタートさせると、第1TLPのAck/Nak等のDLLPまたは再送第1TLPのAck/Nak等のDLLPを、第2タイマ32がタイマ設定値(再送第1タイマ設定値)を計時してタイムアウトするまでに受信したかチェックし(ステップS113、S114、S115)、ステップS113で、第1のDLLPを受信すると、第1のDLLP(Ack/Nak等)を受信したときの第1カウンタ31cのカウンタ値をタイマ設定値Bとしてカウンタ値保持部33に保管して(ステップS116)、第1タイマ31をリセットする(ステップS117)。
デバイス1は、第1タイマ31をリセットすると、CRCエラー判定部15によって該DLLPにCRCエラー有りと判定されたかチェックし(ステップS118)、CRCエラーがないときには、第1TLPのAck/Nakパケットである第1のDLLPを受信したときの第1カウンタ31cのカウンタ値をタイマ設定値Bとしてカウンタ値保持部3に保持する。デバイス1は、タイマ設定値Bをカウンタ値保持部33に保持すると、速やかに、該タイマ設定値Bをタイマ値設定部34を介して第1タイマ31及び第2タイマ32にセットしてタイマ設定値を補正するタイマ設定値補正処理を行い(ステップS119)、図8に示すように、再送第1TLPのAck/Nakパケットである再送第1のDLLPを、補正後のタイマ設定値Bを、第1タイマ31が計時してタイムアウト(補正第1タイムアウト)が発生する前に、受信したかチェックする(ステップS120、S121)。
ステップS120で、補正第1タイムアウトが発生する前に、再送第1のDLLPを受信すると、デバイス1は、第2タイマ32をリセットし(ステップS122)、再送第1受信した再送第1のDLLPにCRCエラーがあるかチェックする(ステップS123)。
ステップS123で、CRCエラーがあるときには、デバイス1は、第1TLPの通常のTLP再送信処理(再々送信)を行って、TLP再送信制御処理を終了し(ステップS110)、ステップS123で、CRCエラーがないときには、受信した再送第1のDLLPがAckパケットであるかチェックする(ステップS124)。
ステップS124で、Ackパケットを受信したときには、デバイス1は、再送第1TLPの再送信が正常に完了したとして、第1TLPの送信におけるTLP再送信制御処理を終了する。
ステップS124で、Nakパケットを受信したときには、デバイス1は、再送第1TLPの再送信に失敗したとして、第1TLPの通常のTLP再送信処理(再々送信)を行って、TLP再送信制御処理を終了する(ステップS110)。
上記ステップS121で、再送第1のAck/NakのDLLPを受信することなく、補正第1タイムアウトが発生すると、デバイス1は、第1TLPの再送信に失敗したと判断して、第2タイマ32をリセットして(ステップS125)、第1TLPの通常のTLP再送信処理(再々送信)を行って、TLP再送制御処理を終了する(ステップS110)。
上記図7のステップS114で、第1のAck/Nakである第1のDLLPを受信することなく、再送第1のAck/Nakである再送第1のDLLPを受信すると、再送信によるものであり信頼性が低いと判断して、タイマ設定値の補正を行うことなく、第1タイマ31及び第2タイマ32をリセットし(ステップS126)、該再送第1のDLLPにCRCエラーがあるかチェックする(ステップS127)。
ステップS127で、再送第1のDLLPにCRCエラーがあるときには、デバイス1は、図8に示すように、第1TLPの通常のTLP再送信処理(再々送信)を行って、TLP再送信制御処理を終了し(ステップS110)、ステップS127で、CRCエラーがないときには、受信した再送第1のDLLPがAckパケットであるかチェックする(ステップS128)。
ステップS128で、Ackパケットを受信したときには、デバイス1は、図8に示すように、第1TLPの送信が正常に完了したとして、第1TLPの送信におけるTLP再送信制御処理を終了する。
ステップS128で、Ackパケットではなく、Nakパケットを受信したときには、デバイス1は、再送第1TLPの送信に失敗したと判断して、上述のように、図8に示す通常のTLP再送信処理(再々送信)を行って、TLP再送信制御処理を終了する(ステップS110)。
上記ステップS115で、第1TLPのAck/Nak等のDLLPと再送第1TLPのAck/Nak等のDLLPのいずれをも受信することなく、第2タイマ32がタイマ設定値(再送第1タイマ設定値)を計時してタイムアウトすると、再送第1TLPの送信に失敗したと判断して、第1タイマ31及び第2タイマ32をリセットした後(ステップS129)、上述のように、図8に示す通常のTLP再送信処理(再々送信)を行って、TLP再送信制御処理を終了する(ステップS110)。
なお、PCIeにおいては、同じTLPの再送信については、4回までとなっており、4回目の再送信を行った後、エラーレポート(Replay_Num_Rollover)を発行する。したがって、このエラーレポートによって、伝送路上に問題があることが認識され、リトレーニングを実施して、リンクを再形成することから実行する。
このように、本実施例のデバイス1は、送信部20のパケット送信部22からリクエストまたはデータのパケットを送信すると、該パケットをReplay Buffer制御部23のReplay Bufferに保存し、送信したパケットに対して送信先の対向デバイスTDから送られてくる受信結果応答パケットであるAck/Nakパケット等のDLLPを、予め設定されている再送信待ち時間であるタイマ設定値(Replay時間)内に受信部10が受信するか否かに基づいてReplay Bufferに保持されているパケットを再送信するか否かを制御するとともに、前記パケットを送信してから該パケットに対するDLLPを受信するまでの応答パケット受信経過時間である第1タイマ31の内蔵する第1カウンタ31cのカウンタ値Aに基づいてタイマ設定値(Replay時間)を補正している。
したがって、パケットを送信してから対向デバイスTDからのDLLPを受信しない場合に再送信を開始するまでのタイマ設定値(Replay時間)を、対向デバイスTD及び通信路であるPCIeの状態等によって実際にDLLPを受信するまでの応答パケット受信経過時間である第1カウンタ31cのカウンタ値に基づいて補正することができ、パケットが正常転送できなかった場合にパケットを所定の時間経過後に再送信するデータ通信を、安定してかつ速やかに行うことができる。
また、本実施例のデバイス1は、再送制御部21の第1タイマ31によって、パケット送信部22がパケットを送信したときからタイマ設定値(Replay時間)を計時し、パケット送信部22がパケットを送信したときから該送信パケットに対するDLLPを受信部10が受信するまでに第1タイマ31が計時する経過時間をカウンタ値(応答パケット受信経過時間)として第1カウンタ31cによってカウントして、該第1カウンタ31cがカウントしたカウンタ値に基づいてタイマ設定値(Replay時間)を、カウンタ値保持部33及びタイマ値設定部34によって補正して、再送制御部21が、第1タイマ31がタイマ設定値(Replay時間)の計時を完了する前に受信部10がDLLPを受信するか否かに基づいて、Replay Bufferのパケットをパケット送信部22に送信させる再送信を行うか否の再送信制御処理を行っている。
したがって、パケットを送信してから対向デバイスTDからのDLLPを受信しない場合に再送信を開始するまでのタイマ設定値(Replay時間)を、対向デバイスTD及び通信路であるPCIeの状態等によって実際にDLLPを受信するまでの応答パケット受信経過時間である第1カウンタ31cのカウンタ値に基づいて簡単かつ適切に補正することができ、パケットが正常転送できなかった場合にパケットを所定の時間経過後に再送信するデータ通信を、安定してかつ速やかに行うことができる。
さらに、本実施例のデバイス1は、DLLPを受信することなくタイマ設定値(Replay時間)が経過してReplay Bufferのパケットを再送信したときからのタイマ設定値(Replay時間)を第2タイマ32で計時し、第1カウンタ31cがカウントしたカウンタ値に基づいてタイマ設定値(Replay時間)を補正するとともに、再送信に対する第2タイマ32が計時するタイマ設定値(再送信待ち時間)が経過する前に最初のパケットまたは再送信したパケットに対するDLLPを受信するか否かに基づいて、Replay Bufferのパケットを再送信するか否か制御している。
したがって、パケットの再送信を行った場合にも、パケットを送信してから対向デバイスTDからのDLLPを受信しない場合に再送信を開始するまでのタイマ設定値(Replay時間)を、対向デバイスTD及び通信路であるPCIeの状態等によって実際にDLLPを受信するまでの応答パケット受信経過時間である第1カウンタ31cのカウンタ値に基づいて簡単かつ適切に補正することができ、パケットが正常転送できなかった場合にパケットを所定の時間経過後に再送信するデータ通信を、安定してかつ速やかに行うことができる。
また、本実施例のデバイス1は、同じパケットについて最初に送信したパケットに対するDLLPを受信するまでの第1カウンタ31cのカウンタ値にのみ基づいてタイマ設定値(Replay時間)を補正している。
したがって、同じパケットについて再送信したパケットに対する不確かなDLLPでタイマ設定値(Replay時間)を補正することなく、最初のパケットに対するDLLPに基づいてのみ、タイマ設定値(Replay時間)を補正して、タイマ設定値(Replay時間)をより一層適切な時間に補正することができ、データ通信を、より一層安定してかつより一層速やかに行うことができる。
さらに、本実施例のデバイス1は、受信したパケットが正常なAck/Nakパケット等のDLLPであるか否かを、受信部10のパケット判定部11及びCRCエラー判定部15で判断し、受信したパケットが正常なDLLPであると判断したときにのみ、該DLLPを受信するまでの第1タイマ31の第1カウンタ31cのカウンタ値Aに基づいてタイマ設定値(Replay時間)を補正している。
したがって、不確かなパケットの受信に基づいてタイマ設定値(Replay時間)を補正することなく、最初のパケットに対するDLLPに基づいてのみ、タイマ設定値(Replay時間)を補正して、タイマ設定値(Replay時間)をより一層適切な時間に補正することができ、データ通信をより一層安定してかつより一層速やかに行うことができる。
なお、上記実施例において、デバイス1の再送制御部21は、第1タイマ31と第2タイマ32に現在設定されているタイマ設定値(Replay時間)が第1カウンタ31cのカウンタ値との時間差が予め設定された許容時間幅よりも大きいときにのみカウンタ値で第1タイマ31と第2タイマ32のタイマ設定値を補正するようにしてもよい。
このようにすると、頻繁にタイマ設定値(Replay時間)を補正することなく適切なタイマ設定値(Replay時間)を設定して、データ通信をより一層安定してかつより一層速やかに行うことができる。
以上、本発明者によってなされた発明を好適な実施例に基づき具体的に説明したが、本発明は上記実施例で説明したものに限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。
本発明は、パケットが正常転送できなかった場合にパケットを所定の時間経過後に再送信するデータ通信を行うデータ通信装置、データ通信制御方法、データ通信制御プログラム及び記録媒体に利用することができる。
1 デバイス
TD 対向デバイス
10 受信部
11 パケット判定部
12 パケット受信部
13 CRCエラー判定部
14 Ack/Nak受信部
15 CRCエラー判定部
20 送信部
21 送信制御部
22 パケット送信部
23 Replay Buffer制御部
30 TLP制御部
31 第1タイマ
31c 第1カウンタ
32 第2タイマ
32c 第2カウンタ
33 カウンタ値保持部
34 タイマ値設定部
40 TLP制御部
特開2008−204245号公報

Claims (8)

  1. 少なくともリクエストまたはデータのパケットを送信するパケット送信手段と、
    前記パケット送信手段の送信したパケットを保持するパケット保持手段と、
    送信したパケットに対して送信先から送られてくるパケット受信が正常であるか異常であるかを示す受信結果応答パケットを受信するパケット受信手段と、
    予め設定されている再送信待ち時間内に前記パケット受信手段が前記受信結果応答パケットを受信するか否かに基づいて前記パケット保持手段のパケットを前記パケット送信手段に送信させる再送信を行うか否かを制御する再送信制御処理を行うとともに、前記パケットを送信してから該パケットに対する該受信結果応答パケットを該パケット受信手段が受信するまでの応答パケット受信経過時間に基づいて前記再送信待ち時間を補正する再送信待ち時間補正処理を行う再送信制御手段と、
    を備えていることを特徴とするデータ通信装置。
  2. 前記再送信制御手段は、
    前記パケット送信手段が前記パケットを送信したときから前記再送信待ち時間を計時する待ち時間計時手段と、
    前記パケット送信手段が前記パケットを送信したときから該送信パケットに対する前記受信結果応答パケットを前記パケット受信手段が受信するまでに前記待ち時間計時手段が計時する経過時間を前記応答パケット受信経過時間としてカウントする応答時間カウンタと、
    前記応答時間カウンタがカウントした前記応答パケット受信経過時間に基づいて前記再送信待ち時間を補正する再送信待ち時間補正手段と、
    を備え、前記待ち時間計時手段が前記再送信待ち時間の計時を完了する前に前記パケット受信手段が前記受信結果応答パケットを受信するか否かに基づいて、前記パケット保持手段のパケットを前記パケット送信手段に送信させる再送信を行うか否の前記再送信制御処理を行うことを特徴とする請求項1記載のデータ通信装置。
  3. 前記再送信制御手段は、
    前記パケット送信手段が前記パケットを送信したときから前記再送信待ち時間を計時する待ち時間計時手段と、
    前記パケット送信手段が前記パケットを送信したときから該送信パケットに対する前記受信結果応答パケットを前記パケット受信手段が受信するまでに前記待ち時間計時手段が計時する経過時間を前期応答パケット受信経過時間としてカウントする応答時間カウンタと、
    前記パケット送信手段が前記パケット保持手段のパケットを再送信したときから前記再送信待ち時間を計時する再送信後再送信待ち時間計時手段と、
    前記応答時間カウンタがカウントした前記応答パケット受信経過時間に基づいて前記再送信待ち時間を補正する再送信待ち時間補正手段と、
    を備え、前記再送信後再送信待ち時間計時手段が前記再送信待ち時間の計時を完了する前に前記パケット受信手段が前記受信結果応答パケットを受信するか否かに基づいて、前記パケット保持手段のパケットを前記パケット送信手段に送信させる再送信を行うか否の前記再送信制御処理を行うことを特徴とする請求項1記載のデータ通信装置。
  4. 前記再送信制御手段は、前記パケット送信手段が同じパケットについて最初に送信したパケットに対する前記受信結果応答パケットを前記パケット受信手段が受信するまでの前記応答パケット受信経過時間にのみ基づいて前記再送信待ち時間を補正することを特徴とする請求項1から請求項3のいずれかに記載のデータ通信装置。
  5. 前記パケット受信手段は、受信したパケットが正常な前記受信結果応答パケットであるか否かを判断する判断手段を有し、
    前記再送信制御手段は、前記判断手段が前記パケット受信手段の受信したパケットが正常な前記受信結果応答パケットであると判断したときにのみ、該受信結果応答パケットを受信するまでの前記応答パケット受信経過時間に基づく前記再送信待ち時間補正処理を行うことを特徴とする請求項1から請求項4のいずれかに記載のデータ通信装置。
  6. 少なくともリクエストまたはデータのパケットを送信するパケット送信処理ステップと、
    前記パケット送信処理ステップで送信されたパケットをパケット保持手段に保持するパケット保持制御処理ステップと、
    送信したパケットに対して送信先から所定の待ち時間経過後に送られてくるパケット受信が正常であるか異常であるかを示す受信結果応答パケットを受信するパケット受信処理ステップと、
    予め設定されている再送信待ち時間内に前記パケット受信処理ステップで前記受信結果応答パケットを受信するか否かに基づいて前記パケット保持手段に保持されているパケットを前記パケット送信処理ステップで送信させる再送信を行うか否かを制御するとともに、前記パケットを送信してから該パケットに対する該受信結果応答パケットを該パケット受信処理ステップで受信するまでの応答パケット受信経過時間に基づいて前記再送信待ち時間を補正する再送信制御処理ステップと、
    を有していることを特徴とするデータ通信制御方法。
  7. コンピュータに、
    少なくともリクエストまたはデータのパケットを送信するパケット送信処理と、
    前記パケット送信処理で送信されたパケットをパケット保持手段に保持するパケット保持制御処理と、
    送信したパケットに対して送信先から所定の待ち時間経過後に送られてくるパケット受信が正常であるか異常であるかを示す受信結果応答パケットを受信するパケット受信処理と、
    予め設定されている再送信待ち時間内に前記パケット受信処理で前記受信結果応答パケットを受信するか否かに基づいて前記パケット保持手段に保持されているパケットを前記パケット送信処理で送信させる再送信を行うか否かを制御するとともに、前記パケットを送信してから該パケットに対する該受信結果応答パケットを該パケット受信処理で受信するまでの応答パケット受信経過時間に基づいて前記再送信待ち時間を補正する再送信制御処理と、
    を実行させることを特徴とするデータ通信制御プログラム。
  8. 請求項7記載のデータ通信制御プログラムを記録したことを特徴とするコンピュータが読み取り可能な記録媒体。
JP2009188165A 2009-08-16 2009-08-16 データ通信装置、データ通信制御方法、データ通信制御プログラム及び記録媒体 Pending JP2011039897A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2009188165A JP2011039897A (ja) 2009-08-16 2009-08-16 データ通信装置、データ通信制御方法、データ通信制御プログラム及び記録媒体

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2009188165A JP2011039897A (ja) 2009-08-16 2009-08-16 データ通信装置、データ通信制御方法、データ通信制御プログラム及び記録媒体

Publications (1)

Publication Number Publication Date
JP2011039897A true JP2011039897A (ja) 2011-02-24

Family

ID=43767581

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009188165A Pending JP2011039897A (ja) 2009-08-16 2009-08-16 データ通信装置、データ通信制御方法、データ通信制御プログラム及び記録媒体

Country Status (1)

Country Link
JP (1) JP2011039897A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113726753A (zh) * 2021-08-20 2021-11-30 浪潮电子信息产业股份有限公司 一种PCIe IP核数据传输方法、装置、设备及介质
EP4167098A1 (en) * 2021-10-14 2023-04-19 Samsung Electronics Co., Ltd. Autonomous detection of status of link between initiator device and target device in ufs system

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113726753A (zh) * 2021-08-20 2021-11-30 浪潮电子信息产业股份有限公司 一种PCIe IP核数据传输方法、装置、设备及介质
CN113726753B (zh) * 2021-08-20 2023-07-14 浪潮电子信息产业股份有限公司 一种PCIe IP核数据传输方法、装置、设备及介质
EP4167098A1 (en) * 2021-10-14 2023-04-19 Samsung Electronics Co., Ltd. Autonomous detection of status of link between initiator device and target device in ufs system
US20230117858A1 (en) * 2021-10-14 2023-04-20 Samsung Electronics Co., Ltd. Autonomous detection of status of link between initiator device and target device in ufs system

Similar Documents

Publication Publication Date Title
US7746786B2 (en) Retransmission control method and device
ES2748228T3 (es) Método de desconexión de enlace entre un equipo PCIe y un concentrador y dispositivo que utiliza este último
US20110161777A1 (en) Reliable Packet Cut-Through
JP2010093862A (ja) 通信装置及び通信方法
US7653060B2 (en) System and method for implementing ASI over long distances
US8335958B2 (en) Method of communication, in particular with capability of frame abortion or retransmission indication, between a transmitter and a receiver based on frames and corresponding communication node
KR20100104149A (ko) 전송계층 성능 향상을 위한 전송계층 제어장치 및 전송속도와 신뢰성을 동시에 보장할 수 있는 패킷 송신 방법
WO2022206116A1 (zh) 一种物理层重传控制方法
WO2019128964A1 (zh) 一种实现丢包检测的方法、装置和系统
US10516789B2 (en) Information processing apparatus and image processing apparatus that perform transmission and reception of data, and method of controlling information processing apparatus
JP2005167353A (ja) 送信装置およびプログラム
US20120328038A1 (en) Transmission system, transmission device and method for controlling transmission device
WO2015032048A1 (zh) 一种移动终端内部通信方法
US20090003228A1 (en) Bad data packet capture device
JP4807828B2 (ja) ブロードバンド・エンジンのためのエンベロープ・パケット・アーキテクチュア
US20100162066A1 (en) Acceleration of header and data error checking via simultaneous execution of multi-level protocol algorithms
JP2016174211A (ja) 通信システム
JP2011039897A (ja) データ通信装置、データ通信制御方法、データ通信制御プログラム及び記録媒体
US10789115B2 (en) Transmitter that does not resend a packet despite receipt of a message to resend the packet
JP2012085244A (ja) シリアル伝送装置、情報処理装置、及びシリアル伝送方法
TWI423037B (zh) 一種提升於通用串列匯流排協定中傳輸同時型傳輸類型的封包之效率之方法與裝置
US8522104B2 (en) Smart aging retry buffer
WO2022266964A1 (zh) 基于低功耗蓝牙的数据传输方法、装置、设备及存储介质
US8806291B2 (en) Data transfer device and control method of data transfer device
JP2014082578A (ja) 通信パケットを用い送信装置と受信装置を有する全二重通信装置及びその通信方法