JP2014230072A - データ通信デバイス、データ通信装置及びデータ通信方法 - Google Patents
データ通信デバイス、データ通信装置及びデータ通信方法 Download PDFInfo
- Publication number
- JP2014230072A JP2014230072A JP2013108010A JP2013108010A JP2014230072A JP 2014230072 A JP2014230072 A JP 2014230072A JP 2013108010 A JP2013108010 A JP 2013108010A JP 2013108010 A JP2013108010 A JP 2013108010A JP 2014230072 A JP2014230072 A JP 2014230072A
- Authority
- JP
- Japan
- Prior art keywords
- value
- credit
- flow control
- communication
- initial credit
- 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
Links
Images
Landscapes
- Information Transfer Systems (AREA)
- Communication Control (AREA)
Abstract
【課題】ケーブル長が長くなった場合のデータ転送効率の低下を、バッファサイズにかかわりなく低減することができるを通信デバイスを提供する。
【解決手段】通信デバイスは、受信データを格納する受信バッファ部と、フロー制御の初期化時に通信先に送信可能なデータ容量として通知される初期クレジットの値であり、前記受信バッファの容量を示すクレジットの値よりも大きな値である仮想初期クレジットの値を通知するフロー制御部と、を有する。
【選択図】図3
【解決手段】通信デバイスは、受信データを格納する受信バッファ部と、フロー制御の初期化時に通信先に送信可能なデータ容量として通知される初期クレジットの値であり、前記受信バッファの容量を示すクレジットの値よりも大きな値である仮想初期クレジットの値を通知するフロー制御部と、を有する。
【選択図】図3
Description
本発明は、データ通信デバイス、データ通信装置及びデータ通信方法に関する。
近年、高速に機器間やボード間を通信するために、高速シリアルインタフェースが利用されている。このような、高速シリアルインタフェースの標準規格の一つに、PCI Express(以下、PCIeと称す)がある。
PCIeの標準規格は、通常のPCIeスロットとカードエッジを直結した接続形態に対応するPCIeの基本仕様である PCI Express Base が制定された後、拡張規格としてケーブル仕様である PCI Express Cabling が制定された。この規格によって、PCIeケーブルによる延長接続形態が可能になった。
PCIeでは、受信側のバッファのオーバーフローを防ぐためにフロー制御が行われる。しかし、受信側のバッファの空きを確認してからパケットの送信を行うため、ケーブル長が長くなるとフロー制御用のパケットの待ち時間により、データ転送効率が低下してしまうという問題がある。また、これを回避するためには、ケーブルが長くなると、大きなサイズの受信バッファを実装しなければならないという問題がある。
PCIeの標準規格は、通常のPCIeスロットとカードエッジを直結した接続形態に対応するPCIeの基本仕様である PCI Express Base が制定された後、拡張規格としてケーブル仕様である PCI Express Cabling が制定された。この規格によって、PCIeケーブルによる延長接続形態が可能になった。
PCIeでは、受信側のバッファのオーバーフローを防ぐためにフロー制御が行われる。しかし、受信側のバッファの空きを確認してからパケットの送信を行うため、ケーブル長が長くなるとフロー制御用のパケットの待ち時間により、データ転送効率が低下してしまうという問題がある。また、これを回避するためには、ケーブルが長くなると、大きなサイズの受信バッファを実装しなければならないという問題がある。
なお、通信速度の高速化のために、受信バッファからパケットデータの取り出しが完了したことを意味するフロー制御パケット「UpdateFC」を、実際に受信バッファに空き容量が存在するよりも前の時刻で返信する技術が知られている(例えば、特許文献1参照)。
従来の技術では、ケーブル長が長くなった場合のデータ転送効率の低下を、バッファサイズを大きくすることなく防止することには困難を伴っていた。
本発明の実施の形態は、上記問題点を鑑みてなされたものであって、ケーブル長が長くなった場合のデータ転送効率の低下を、バッファサイズにかかわりなく低減することができる通信デバイスを提供することを目的とする。
本発明の実施の形態は、上記問題点を鑑みてなされたものであって、ケーブル長が長くなった場合のデータ転送効率の低下を、バッファサイズにかかわりなく低減することができる通信デバイスを提供することを目的とする。
上記課題を解決するため、一実施の形態に係る通信デバイスは、受信データを格納する受信バッファ部と、フロー制御の初期化時に通信先に送信可能なデータ容量として通知される初期クレジットの値であり、前記受信バッファの容量を示すクレジットの値よりも大きな値である仮想初期クレジットの値を通知するフロー制御部と、を有する。
本実施の形態によれば、ケーブル長が長くなった場合のデータ転送効率の低下を、バッファサイズにかかわりなく低減することができる通信デバイスを提供することができる。
以下に、本発明の実施の形態について、添付の図面を参照して説明する。
<システムの構成>
図1は、一実施形態に係る通信システム100の構成例である。通信システム100は、通信装置101と、通信装置101に高速シリアルケーブル107を介して接続された通信装置102を有する。
図1は、一実施形態に係る通信システム100の構成例である。通信システム100は、通信装置101と、通信装置101に高速シリアルケーブル107を介して接続された通信装置102を有する。
通信装置101、102は、PCI(Peripheral Component Interconnect) Express(以下、PCIeと称す)による高速シリアル通信が可能な装置である。
通信装置101、102は、それぞれ、データ処理等を行うアプリケーション部103、106とPCIe部104、105を有している。アプリケーション部103、106は、例えば、CPU(Central Processing Unit)、メモリ、及びCPUで動作するプログラム等を有し、通信装置101、102の所定の機能を実現する。PCIe部104、105は、PCIeによる通信を行う通信デバイスである。
上記構成により、通信装置101は、高速シリアルケーブル107を介して、通信装置102とPCIeによるパケット通信が可能である。
尚、PCIeでは、事前に受信側のバッファの空き容量を確認し、十分な空き容量が確保されている場合に、パケット送信を行うフロー制御を行う。
図2に、一実施形態に係るフロー制御の流れの概要を示す。ここでは、通信装置102から通信装置101へTLP(Transaction Layer Packet)を送信する場合の例について説明する。通信装置101は、通信開始前に初期化用のフロー制御パケットであるInitFCを使って、通信装置102へ仮想初期クレジットの値を通知する(ステップS201)。仮想初期クレジットの値は、通信装置101の受信バッファの容量を示すクレジットの値に追加クレジットの値を加えたものである。尚、仮想初期クレジットについては、後で詳しく説明する。
InitFCで通知した仮想初期クレジットは、通信装置102にクレジットとして記憶される。ここで、クレジットとは、通信装置102が通信装置101に送信可能なデータの容量を示しており、通信装置102は、送信するTLPのサイズより大きいクレジットがある場合にパケットの送信が可能である。通信装置102は、送信するTLP1よりもクレジットの値が大きい場合、TLP1を通信装置101へ送信する(ステップS202)。このとき、通信装置102のクレジットの値は、TLP1送信前のクレジットからTLP1のサイズを引いた値となる。
通信装置101は、TLP1を受信すると、受信したTLP1を受信バッファに格納する(ステップS203)。通信装置102は、次に送信するTLP2よりもクレジットの値が大きい場合、TLP2を通信装置101へ送信し(ステップS204)、クレジットの値からTLP2のサイズを減算する。同様にして、通信装置101は、送信するTLPの値よりのクレジットの値が小さくなるまで、続けてTLPを送信することができる。また、送信するTLPよりもクレジットの値が小さい場合には、クレジットの値が大きくなるまでTLPを送信せずに待機する。
一方、通信装置101は、TLP1を受信バッファから読み出して、受信バッファに空きができると(ステップS206)、フロー制御用のパケットであるUpdateFCを使ってクレジット値の更新を行う(ステップS207)。ここでは、TLP1のサイズだけバッファの空きが増えるので、更新クレジット量としてTLP1のサイズが通知される。UpdateFCを受信した通信装置102では、通知された更新クレジット量をクレジットに加算する。同様にして、装置102は、TLP2を読み出すと(ステップS208)、UpdateFCでTLP2の更新クレジット量を通信装置102に通知する(ステップS209)。UpdateFCを受信した通信装置102では、通知された更新クレジット量をクレジットに加算する。
このようにして、送信側の通信装置102は、受信側から通知された仮想初期クレジット及び更新クレジットに基づいて、受信側の通信装置101へTLPを送信可能か否かを判断する。
[第1の実施の形態]
図3は、第1の実施の形態に係る通信装置101の構成図である。尚、通信装置102は、PCIeの規格に準拠した通信装置であれば、必ずしも通信装置101と同じ構成である必要はない。
図3は、第1の実施の形態に係る通信装置101の構成図である。尚、通信装置102は、PCIeの規格に準拠した通信装置であれば、必ずしも通信装置101と同じ構成である必要はない。
通信装置101は、アプリケーション部103及びPCIe部104を有する。
アプリケーション部103は、PCIeで定義されているソフトウェア層に相当し、例えば、BIOS(Basic Input/Output System)、OS(Operating System)、ファームウェア、ドライバ、アプリケーション等を含む。アプリケーション部103は、PCIe部104に対して、例えば、メモリリードやメモリライト等のコマンドとデータを送信することによって、通信先へのデータ送信等を要求する。また、通信先から送られてきたデータを、PCIe部104からコマンドやデータの形で受信する。
PCIe部104は、トランザクション層303、データリンク層302及び物理層301からなる3層のレイヤ構造を有している。
トランザクション層303は、パケット生成部304、送信バッファ305、受信バッファ部312、データ生成部313、及び仮想初期クレジット演算部314を有している。パケット生成部304は、アプリケーション部103からコマンドとデータを受信して、ヘッダとペイロードを有するトランザクション層パケットであるTLPを生成する。送信バッファ305は、パケット生成部304で生成されたTLPを一時的に記憶する。
受信バッファ部312は、データリンク層302から送られてきたTLPを一時的に記憶する。データ生成部313は、受信バッファ部312からTLPを読出し、コマンド、データに変換し、アプリケーション部103へ出力する。
仮想初期クレジット演算部314は、受信バッファ部312の記憶容量と、アプリケーション部103から通知された通信ケーブルで発生する遅延時間の大きさ又は通信ケーブルの長さ等に基づいて、仮想初期クレジットの値を算出する。尚、仮想初期クレジットについては後述する。
データリンク層302は、フロー制御部306、再送バッファ307、アービタ308、ルータ311を有する。
フロー制御部306は、フロー制御用のパケットであるDLLP(Data Link Layer Packet)を使ってPCIeのフロー制御を行う。また、フロー制御部306は、送信バッファ305から取得したTLPの先頭にシーケンス番号、末尾にCRC(Cyclic Redundancy Check)を付加して、LLTP(Link Layer Transaction Packet)を生成する。さらに、フロー制御部306は、通信先から受信したLLTPのシーケンス番号とCRCのチェックを行い、正常に受信できたTLPを受信バッファ部312に格納する。尚、フロー制御部306ついては、後でさらに詳しく説明する。
再送バッファ307は、通信先から、送信したLLTPの受信が正常に行われたことを示すAck(Acknowledgement)DLLPを受信するまで、送信したLLTPを一時的に記憶する。通信先から送信したLLTPの受信が正常に行われたことを示すAck DLLPを受信した場合には、受信したAck DLLPに対応するLLTPを破棄する。一方、通信先から送信したLLTPの受信が正常に行われなかったことを示すNak(Negative Acknowledgement)DLLPを受信した場合には、一時的に記憶したLLTPを再送する。
アービタ308は、フロー制御部306から送られてくるLLTPとDLLPのパケットの優先度を調停し、物理層301に送信する。優先度の設定は、例えば、DLLP送信の優先度を高く設定しても良いし、所定の間隔でDLLPが送信されるような設定であっても良い。
ルータ311は、物理層301から受信したパケットの種別に応じて、フロー制御部306、再送バッファ307等に受信したパケットを転送する。
物理層301は、トランスミッタ309、レシーバ310を有する。トランスミッタ309は、データリンク層302から受け取ったパケットデータをシリアル化して、高速シリアルケーブル107等へアナログ信号を出力する。レシーバ310は、高速シリアルケーブル107等から受信したアナログ信号を、シリアルデータ化して、さらにパケットデータに復元して、ルータ311へ転送する。
続いて、フロー制御部306について、さらに詳しく説明する。図4は、フロー制御部306の機能構成を示す図である。フロー制御部306は、送信フロー制御部401、送信LLTP処理部402、受信フロー制御部403、受信LLTP処理部404を有する。
送信フロー制御部401は、受信フロー制御部403から送られてくる、通信先の初期クレジットの値及び更新クレジットの値に基づいて送信データのフロー制御を行う。
図5は、送信フロー制御部401の動作の一例を示す図である。ここでは、通信先の初期クレジットの値(初期値)を4とする。また、TLPを1パケット送信する毎に、クレジットの値を1ずつ減算し、クレジットの値が0よりも大きい場合に、次のパケットを送信できるものとする。さらに、通信先から、送信済みのパケットに対する応答であるUpdateFCを受信するたびに、送信フロー制御部401は、クレジットの値を1ずつ加算するものとする。
図5の時刻T1において、送信フロー制御部401は、TLP(1)を送信し、初期クレジットの値4から1を減算する。ここでは、クレジットの値が3なので、次のパケットを続けて送信可能である。同様にして、時刻T2にTLP(2)を、時刻T3にTLP(3)を、時刻T4にTLP(4)を連続して送信することができる。しかし、時刻T4において、クレジットの値が0になるので、送信フロー制御部401は、次のパケットであるTLP(5)を連続して送信することができない。
一方、時刻T5において、最初に送信したTLP(1)に対応する応答であるUpdateFC(1)を受信すると、クレジットの値が1となり、再びパケットの送信が可能となる。時刻T6において、送信フロー制御部401がTLP(5)を送信すると、再びクレジットの値が0となるが、時刻T7には、TLP(2)に対応する応答であるUpdateFC(2)を受信するため、時刻T8において、TLP(6)を送信可能である。このような制御により、送信フロー制御部401は、クレジットの値に基づいてTLPの送信を行う。
尚、ここで、TLP(1)を送信してから、UpdateFC(1)を受信するまでの遅延時間は、主に、通信ケーブルによる遅延時間と、通信先がTLP(1)を受信してからUpdateFC(1)を送信するまでの処理時間であると考えられる。
ここで、図4に戻って、フロー制御部306の説明を続ける。送信LLTP処理部402は、送信フロー制御部401から入力されたTLPの先頭にシーケンス番号、末尾にCRCを付加して、LLTPを生成する。シーケンス番号はTLPの送信毎にインクリメントされ、送達確認及びリトライの制御に使用される。CRCは、誤り検出符号であり、通信先でTLPが正しく受信できたか否かを確認するために使用される。また、生成されたLLTPは、アービタ308及び再送バッファ307に送られる。
受信LLTP処理部404は、ルータ311から受信したLLTPのシーケンス番号の確認と、CRCの検証を行う。受信LLTP処理部404は、例えば、受信データからCRCを計算し、末尾に付加されたCRCと一致した場合に、TLPを正常に受信したと判断する。CRCの検証結果がOKだった場合には、LLTPからシーケンス番号とCRCを削除したTLPを受信フロー制御部403へ転送する。また、シーケンス番号及びCRCの検証結果(OK/NG)を受信フロー制御部403へ通知する。
受信フロー制御部403は、フロー制御の初期化処理、受信フロー制御、及び通信先から送られてきたフロー制御用のDLLPに応じて通信先の初期クレジット及び更新クレジットを送信フロー制御部401へ通知する処理を行う。
尚、PCIeでは、通信前にフロー制御の初期化を行う。この初期化処理の中で、初期クレジット値をInitFC DLLPを使って通信先に通知する。そして、この初期クレジット値と、UpdateFC DLLPによって通知された更新クレジット値に基づいて、フロー制御を行う。
図6は、本実施の形態に係るフロー制御の初期化処理のフローチャートである。仮想初期クレジット演算部314は、初期化時に受信バッファ部312からバッファの容量を取得する(ステップS601)。次に、アプリケーション部103から、通信ケーブルの遅延時間に関する情報を取得する(ステップS602)。遅延時間に関する情報は、通信ケーブルで発生する遅延時間そのものであっても良いし、通信ケーブルの長さであっても良い。
次に、仮想初期クレジット演算部314は、取得したバッファの容量と、通信ケーブルで発生する遅延時間の大きさ又は前記通信ケーブルの長さ等の遅延時間に関する情報とに基づいて、仮想初期クレジットの値を算出する(ステップS603)。算出された仮想初期クレジットの値は、受信フロー制御部403に通知され、受信フロー制御部403は、仮想初期クレジットの値をInitFC DLLPの初期クレジットとして、通信先に通知する(ステップS604)。
ここで、仮想初期クレジットについて説明する。仮想初期クレジット演算部314は、例えば、図7に示すグラフのような関係に基づいて、仮想初期クレジットの値を算出する。ここで、「仮想初期クレジットの値」=「受信バッファサイズに応じたクレジットの値」+「追加クレジットの値」である。追加クレジットの値は、パケットを転送するために要する時間と、ケーブルを伝播するために要する時間に基づいて、ケーブルの長さが長くなった場合のデータ転送効率の低下を防止するために適した値を計算する。計算例を以下に示す。
まず、条件として、パケット伝播には、通信ケーブル1mあたり5nsを要するものとする。尚、この値は光や電子が媒体を1m進むのに要する時間の概算値より示した値で、信号レート等に依らず一定となる。
また、1つのTLPを伝送するために、152ns要するものとする。例えば、PCIe Generation1の2.5Gbpsのレーンを4本使ったx4リンクでは、1シンボル(=1バイトに相当)を送るのに1nsを要する。ここで、TLPが128バイトのペイロードを持つと想定すると、パケットサイズは128バイトのペイロードと24バイトのヘッダ情報で、合せて152バイトとなる。このため、TLP1個を伝送するために152nsを要する。
ここで、通信ケーブルの長さが100mとすると、TLPを送信してから、当該TLPに対応する更新クレジット値を通知するUpdateFCが戻るまでの時間は、100m×5ns+100m×5ns=1000nsとなる。
1000ns連続でTLPを送るためには、1000ns/152ns=6.57なので、7個以上の初期クレジットがあれば、UpdateFC待ちが発生することなく、パケットを連続的に送信することができる。
また、1パケットの伝送に要する時間152nsを、通信ケーブル1m当たりの往復遅延時間5ns×2=10nsで割ると、152ns/10ns=15.2となり、通信ケーブル15.2m毎に、仮想初期クレジットの値が1必要であることが判る。従って、仮想初期クレジットの値は、通信ケーブルの長さに基づいて算出することもできる。例えば、通信ケーブルの長さが100mの場合には、100m/15.2m=6.57となり、仮想初期クレジットの値を7とすれば良い。
尚、上記の計算例は、PCIe Generation1(2.5Gbps)の例であり、1パケットの伝送にかかる時間はシステムによって異なる。例えば、さらに高速なPCIe Generation3(8Gbps)では、1パケットの伝送に要する時間が約1/8になるので、(152ns/8)/10ns=1.9となる。このため、通信ケーブルが1.9m毎に、仮想初期クレジットが1必要となる。さらに、使用するレーンの数によっても、1パケットの伝送にかかる時間が変わってくる。
従って、より好適な例として、仮想初期クレジット演算部314は、通信ケーブルで発生する遅延時間の情報又は長さ等の情報に加えて、パケットの伝送速度の情報に応じて仮想初期クレジットの値を算出可能であると良い。
図8に、仮想初期クレジットによるフロー制御のタイミングチャートを示す。ここで、受信バッファのクレジットの値を4とし、通信先には、本実施の形態に係る仮想初期クレジット7を通知するものとする。通信先は、時刻T1にTLP(1)、時刻T2にTLP(2)、時刻T3にTLP(3)、時刻T4にTLP(4)と、TLPを連続送信することができる。時刻T4において、初期クレジットが4の場合には、クレジットが0となり、UpdateFC(1)を受信する時刻T7までパケットを送信することができなくなる。しかし、本実施の形態では、通信先に仮想初期クレジット7を通知しているため、通信先は、時刻T5にTLP(5)、時刻T6にTLP(6)とパケットを連続して送信することができる。
尚、図8において、通信装置101は、時刻T1に受信したTLP(1)を、遅くとも時刻T4までに処理して受信バッファ部312の空きを確保する必要があるが、通信装置101の処理速度は、PCIeの転送速度よりも速いので十分に処理が可能である。
以上、フロー制御の初期化時に、通信先に通知する初期クレジットとして、上記算出方法による仮想初期クレジットの値を使用することにより、ケーブルの長さが長くなった場合のデータ転送効率の低下を、バッファサイズにかかわりなく低減することができる。
尚、上記仮想初期クレジットの計算方法は一例であって、本発明の範囲を限定するためのものではない、例えば、仮想初期クレジット追加クレジットの値を、通信ケーブルで発生する遅延時間に基づいて計算するものとしたが、さらに、TLPを受信してから対応するUpdateFC DLLPを送信するまでのパケットの処理時間等を加味して追加クレジットを算出しても良い。また、算出した仮想初期クレジットの値が、受信バッファのクレジットの値よりも小さい場合には、受信バッファのクレジット値を初期クレジットとして、通信先に通知しても良いことは言うまでもない。
次に、受信フロー制御部403のTLP受信に係る動作について説明する。図9は、本実施の形態に係るTLP受信処理のフローチャートである。LLTP(TLP)を受信すると(ステップS801)、受信LLTP処理部404から、受信したLLTP(TLP)のシーケンス番号及びCRCの検証結果が通知される。受信フロー制御部403は、CRCの検証結果を確認し(ステップS802)、検証結果がOKの場合には、受信バッファ部312に空きがあるかどうかを確認する(ステップS803)。受信バッファ部312に空きが有る場合には、TLPを受信バッファ部312に書込む(ステップS805)。その後、受信フロー制御部403は、TLPを正常に受信したことを示すAck DLLPを送信先へ送信する(ステップS807)。尚、Ack DLLPは、必ずしもTLPを受信する度に送信する必要は無く、他のAck DLLPとまとめて送信しても良い。
一方、ステップS902において、CRCの検証結果がOK以外の場合には、受信フロー制御部403は、Nak DLLPを送信して、通信先にTLPの再送を要求する。また、ステップS903において、受信バッファの空きが無い場合には、受信フロー制御部403は、受信したTLPを破棄し、Nak DLLPを送信する。
尚、上記説明では、受信フロー制御部403が、受信バッファ部312のバッファの空きの有無の確認と、バッファの空きが無い場合のTLPの破棄を行うものとしたが、これらの処理は、例えば、受信バッファ部312が行っても良い。この場合、受信バッファ部312のオーバーフローが発生すると、受信バッファ部312は、受信フロー制御部403にオーバーフロー通知を使ってオーバーフローが発生したことを通知する。
上記、Ack/Nack DLLPの制御により、例えば、アプリケーション部103の突発的な遅延により受信バッファ部312のオーバーフローが発生した場合でも、TLPの喪失を防ぐことができる。
続いて、受信フロー制御部403の、UpdateFC DLLP送信処理に係る動作について説明する。データ生成部313が受信バッファ部312からデータを取得すると、受信バッファ部312に空き容量が生じる。受信バッファ部312は、データ生成部313によって読み出されたデータ出力量と、データリンク層302から書き込まれたデータ入力量を受信フロー制御部403に通知する。受信フロー制御部403は、受信バッファ部312から通知された、データ入力量とデータ出力量の差分から、受信バッファ部312に新たな空き容量が発生したことを検出できる。受信フロー制御部403は、受信バッファ部312に新たな空き容量が発生した場合には、新たな空き容量をUpdateFC DLLPで通信先に通知する。
以上、上記、本実施の形態によれば、通信装置101は、フロー制御の初期化時に通信先に送信可能なデータ容量として通知される初期クレジットの値であり、受信データを格納する受信バッファ容量よりも大きな値である仮想初期クレジットの値を通知する。これにより、ケーブル長が長くなった場合のデータ転送効率の低下を、バッファサイズにかかわりなく低減することができる。
また、通信先との通信に使用する通信ケーブルで発生する遅延時間又は通信ケーブルの長さに基づいて、上記仮想初期クレジットの値を算出する仮想初期クレジット演算部314を有する。これにより、仮想初期クレジットの値をより適した値に設定することができる。
また、本実施の形態に係る通信装置101では、実装する受信バッファのサイズを小さくしても、データ転送効率の低下が発生し難いので、通信デバイスの回路実装規模やコストを低減することもできる。
[第2の実施の形態]
第1の実施の形態では、PCIe部104が仮想初期クレジット演算部314を有していた。一方、本実施の形態に係るPCIe部104は、仮想初期クレジットの値および受信バッファ部312の容量に応じたクレジットの値の差分である追加クレジットの値を所定の値に設定可能に構成されている。
[第2の実施の形態]
第1の実施の形態では、PCIe部104が仮想初期クレジット演算部314を有していた。一方、本実施の形態に係るPCIe部104は、仮想初期クレジットの値および受信バッファ部312の容量に応じたクレジットの値の差分である追加クレジットの値を所定の値に設定可能に構成されている。
図10は、本実施の形態に係る通信装置101の構成図である。基本的な構成は、第1の実施の形態と同じなので、ここでは、差分を中心に説明を行う。
本実施の形態に係るPCIe部104は、例えば、追加クレジットの値を記憶する設定レジスタ1001を有する。設定レジスタ1001は、例えば、アプリケーション部103から値を設定することができる。PCIe部104は、通信先に通知する初期クレジットとして、受信バッファ部312の容量に応じたクレジットの値に、設定レジスタ1001に設定された追加クレジットの値を加えた仮想初期クレジットの値を通知する。
また、アプリケーション部103は、データ入力手段1002、追加クレジット設定手段1003を有する。データ入力手段1002は、例えば、ユーザ等から、通信ケーブルで発生する遅延時間の情報、通信ケーブルの長さの情報、又は追加クレジット値等を取得する手段である。また、追加クレジット設定手段1003は、データ入力手段1002が取得した情報に基づいて、設定レジスタ1001に追加クレジットの値を設定する手段である。
追加クレジット設定手段1003は、例えば、仮想初期クレジット演算部314のように、受信バッファ部312から取得したバッファ容量と、通信ケーブルの遅延時間又は長さの情報に基づいて、追加クレジットの値を算出するものであっても良い。また、追加クレジット設定手段1003は、データ入力手段1002が取得した追加クレジットの値を設定レジスタ1001に設定するものであっても良い。また、予め定められた値を設定レジスタ1001に設定するものであっても良い。
上記構成により、PCIe部104は、設定レジスタ1001に適切な値を設定することにより、第1の実施の形態と同様の効果を得ることができる。
尚、上記構成は一例であって、本発明の範囲を限定するものではない。例えば、追加クレジットの設定を記憶する設定レジスタ1001は、フロー制御部306が参照できれば良く、フロー制御部306以外の場所に設けられていても良い。また、設定レジスタ1001は、初期値として適当な値を有していているものであっても良い。例えば、図7の例において、受信バッファの容量に応じたクレジットの量が4であり、通信装置101で利用できる通信ケーブルの最大長が100mで有る場合には、設定レジスタ1001の初期値を3に設定しておけば、設定を省略することができる。
100 通信システム
101 通信装置
103 アプリケーション部
104 PCIe部(通信デバイス)
312 受信バッファ部
314 仮想初期クレジット演算部
306 フロー制御部
101 通信装置
103 アプリケーション部
104 PCIe部(通信デバイス)
312 受信バッファ部
314 仮想初期クレジット演算部
306 フロー制御部
Claims (10)
- 受信データを格納する受信バッファ部と、
フロー制御の初期化時に通信先に送信可能なデータ容量として通知される初期クレジットの値であり、前記受信バッファ部の容量を示すクレジットの値よりも大きな値である仮想初期クレジットの値を通知するフロー制御部と、
を有する通信デバイス。 - 通信ケーブルで発生する遅延時間の大きさの情報又は前記通信ケーブルの長さの情報に基づいて、前記仮想初期クレジットの値を算出する仮想初期クレジット演算部を有する請求項1に記載の通信デバイス。
- 前記仮想初期クレジット演算部は、パケットの伝送速度に応じて前記仮想初期クレジットの値を算出する請求項2に記載の通信デバイス。
- 前記仮想初期クレジット演算部は、受信したパケットの処理に係る時間を加味して前記仮想初期クレジットの値を算出する請求項2又は3に記載の通信デバイス。
- 前記仮想初期クレジットの値および前記受信バッファ部の容量を示すクレジットの値の差分である追加クレジットの値は、所定の値に設定可能である請求項1に記載の通信デバイス。
- 前記フロー制御部は、前記受信バッファ部がオーバーフローした場合に、前記通信先にNakを送信する請求項1乃至5のいずれか一項に記載の通信デバイス。
- 前記フロー制御部は、PCI Express規格のフロー制御用パケットであるInitFCを用いて、前記仮想初期クレジットの値を前記通信先に通知する請求項1乃至6のいずれか一項に記載の通信デバイス。
- 受信データを格納する受信バッファ部と、
フロー制御の初期化時に、通信先に送信可能なデータ容量として通知される初期クレジットの値であり、前記受信バッファ部の容量を示すクレジットの値よりも大きな値である仮想初期クレジットの値を通知するフロー制御部と、
を有する通信装置。 - 通信ケーブルで発生する遅延時間の大きさ、前記通信ケーブルの長さのうちの少なくとも1つに基づいて、前記仮想初期クレジットの値を設定する手段を有する請求項8に記載の通信装置。
- 受信データを格納する受信バッファ部の容量を取得するステップと、
前記受信バッファ部の容量に応じたクレジットの値よりも大きな値である仮想初期クレジットの値を算出するステップと、
フロー制御の初期化時に通信先に前記仮想初期クレジットの値を通知するステップと、
を有する通信装置の制御方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2013108010A JP2014230072A (ja) | 2013-05-22 | 2013-05-22 | データ通信デバイス、データ通信装置及びデータ通信方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2013108010A JP2014230072A (ja) | 2013-05-22 | 2013-05-22 | データ通信デバイス、データ通信装置及びデータ通信方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2014230072A true JP2014230072A (ja) | 2014-12-08 |
Family
ID=52129552
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2013108010A Pending JP2014230072A (ja) | 2013-05-22 | 2013-05-22 | データ通信デバイス、データ通信装置及びデータ通信方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2014230072A (ja) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2019533244A (ja) * | 2016-09-30 | 2019-11-14 | 華為技術有限公司Huawei Technologies Co.,Ltd. | 不揮発性メモリの持続方法およびコンピューティングデバイス |
KR20210089325A (ko) * | 2020-01-08 | 2021-07-16 | 주식회사 커넥트랩 | 고속 데이터 송수신용 usb 케이블 및 이를 이용한 고속 데이터 송수신 방법 |
CN114221905A (zh) * | 2020-09-03 | 2022-03-22 | 阿里巴巴集团控股有限公司 | 处理单元及流控制单元、以及相关方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH09191321A (ja) * | 1996-01-08 | 1997-07-22 | Nec Corp | 適応クレジット制御型転送方法 |
JPH09233082A (ja) * | 1996-02-23 | 1997-09-05 | Nippon Telegr & Teleph Corp <Ntt> | フロー制御方法 |
JP2004080226A (ja) * | 2002-08-14 | 2004-03-11 | Nec Corp | 代理fcポート、fcネットワーク及びそれらに用いるfc透過転送方法 |
JP2007115138A (ja) * | 2005-10-21 | 2007-05-10 | Hitachi Ltd | データ転送方法及びリモートコピーシステム |
JP2012514384A (ja) * | 2008-12-29 | 2012-06-21 | アップル インコーポレイテッド | リソースの粒度がクレジットの粒度よりも大きいときのクレジット管理 |
-
2013
- 2013-05-22 JP JP2013108010A patent/JP2014230072A/ja active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH09191321A (ja) * | 1996-01-08 | 1997-07-22 | Nec Corp | 適応クレジット制御型転送方法 |
JPH09233082A (ja) * | 1996-02-23 | 1997-09-05 | Nippon Telegr & Teleph Corp <Ntt> | フロー制御方法 |
JP2004080226A (ja) * | 2002-08-14 | 2004-03-11 | Nec Corp | 代理fcポート、fcネットワーク及びそれらに用いるfc透過転送方法 |
JP2007115138A (ja) * | 2005-10-21 | 2007-05-10 | Hitachi Ltd | データ転送方法及びリモートコピーシステム |
JP2012514384A (ja) * | 2008-12-29 | 2012-06-21 | アップル インコーポレイテッド | リソースの粒度がクレジットの粒度よりも大きいときのクレジット管理 |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2019533244A (ja) * | 2016-09-30 | 2019-11-14 | 華為技術有限公司Huawei Technologies Co.,Ltd. | 不揮発性メモリの持続方法およびコンピューティングデバイス |
US10976956B2 (en) | 2016-09-30 | 2021-04-13 | Huawei Technologies Co., Ltd. | Non-volatile memory persistence method and computing device |
KR20210089325A (ko) * | 2020-01-08 | 2021-07-16 | 주식회사 커넥트랩 | 고속 데이터 송수신용 usb 케이블 및 이를 이용한 고속 데이터 송수신 방법 |
KR102346807B1 (ko) * | 2020-01-08 | 2022-01-04 | 주식회사 커넥트랩 | 고속 데이터 송수신용 usb 케이블 및 이를 이용한 고속 데이터 송수신 방법 |
KR20220002210A (ko) * | 2020-01-08 | 2022-01-06 | 주식회사 커넥트랩 | 신호 보정 기능을 갖는 고속 데이터 송수신용 케이블 |
KR102446290B1 (ko) | 2020-01-08 | 2022-09-22 | 주식회사 커넥트랩 | 신호 보정 기능을 갖는 고속 데이터 송수신용 케이블 |
CN114221905A (zh) * | 2020-09-03 | 2022-03-22 | 阿里巴巴集团控股有限公司 | 处理单元及流控制单元、以及相关方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11934340B2 (en) | Multi-path RDMA transmission | |
JP4985565B2 (ja) | 送受信回路、受信回路及び送受信回路の制御方法 | |
US9875206B2 (en) | Methods and devices for extending USB 3.0-compliant communication | |
US7827325B2 (en) | Device, system, and method of speculative packet transmission | |
US9256564B2 (en) | Techniques for improving throughput and performance of a distributed interconnect peripheral bus | |
US8700866B2 (en) | Data transfer apparatus, data transfer device, and data transfer method in a data transfer device | |
AU2004201674A1 (en) | Data Processing Apparatus and Data Processing Method | |
US9075926B2 (en) | Distributed interconnect bus apparatus | |
JP2007180611A (ja) | 通信システム及び通信方法 | |
US7788437B2 (en) | Computer system with network interface retransmit | |
CN110784289A (zh) | 一种数据重传方法以及数据重传装置 | |
JP2014230072A (ja) | データ通信デバイス、データ通信装置及びデータ通信方法 | |
US20180081838A1 (en) | Multi-source data insertion using an elastic fifo | |
US7676621B2 (en) | Communications bus transceiver | |
KR20090067110A (ko) | 직렬 인터페이스 대용량 저장 디바이스들에 대한 데이터 전송 레이트 조절 | |
JP5880551B2 (ja) | 再送制御システム及び再送制御方法 | |
JP2006087124A (ja) | ブロードバンド・エンジンのためのエンベロープ・パケット・アーキテクチュア | |
US10958595B2 (en) | Cut-through bridge error isolation | |
CN111857546A (zh) | 用于处理数据的方法、网络适配器和计算机程序产品 | |
US10275388B2 (en) | Simultaneous inbound multi-packet processing | |
JP5532775B2 (ja) | 通信システム及び再送バッファ容量の測定装置 | |
JP2009188508A (ja) | データ送受信装置 | |
EP3977705B1 (en) | Streaming communication between devices | |
US10176135B2 (en) | Multi-packet processing with ordering rule enforcement | |
JP2012064090A (ja) | 情報処理装置、情報処理システムおよび情報処理システムの通信方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20160419 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20170221 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20170307 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20170905 |